[
  {
    "path": ".coveragerc",
    "content": "[run]\ncover_pylib = True\nsource = viztracer\npatch = subprocess\nomit =\n    */viztracer/attach_process/*\n"
  },
  {
    "path": ".gitattributes",
    "content": "src/viztracer/html/** linguist-vendored\nexample/json/* linguist-generated\nsrc/viztracer/web_dist/** linguist-vendored\nsrc/viztracer/attach_process/** linguist-vendored\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "\nFirst of all, many thanks to everyone who wants to contribute to VizTracer!\n\n## Before Writing Code\n\nIf you have any thoughts that involve more than a couple of lines of code, I highly recommend you to\nsubmit an issue first talking about the stuff you want to implement. We should have a discussion about\nwhether we want to do it, before you put too much effort into it.\n\n## Coding\n\n### Implementation\n\nVizTracer requires type annotation for functions. Please do a lint check described below before you\nsubmit the code.\n\nThere's no exact coding standards VizTracer follows, just try to make the code readable.\n\n### Tests\n\nIf you are implementing something new, you need to write tests for it. VizTracer is a 100% coverage\nproject. There might be lines that can't be covered, give yourself(and me) a good reason why, and\nadd ``pragma: no cover`` after the line to skip the line.\n\nEvery new line of your code should be covered by the existing tests or your own tests.\n\n### Docs\n\nIf you implement a new feature, you also need to write docs for it for others to understand.\nIt should definitely lives in ``docs/``, and could possibly lives in ``README.md`` as well\nif it's important.\n\nIf you don't know where the docs belong to, ask me in the issue/PR.\n\n## Build and Test\n\n### Build\n\nTo contribute, first fork this project under your account, then create a feature branch:\n\n```\ngit clone https://github.com/<your_user_name>/viztracer.git\ncd viztracer\ngit checkout -b <your_feature_branch>\n```\n\n``virtualenv``(or other package manager) is highly recommended for development.\n\n```\npython3 -m venv venv\nsource venv/bin/activate\n# On Windows\n# .\\venv\\Scripts\\activate\n```\n\nInstall the requirements for development\n\n```\npip install -r requirements-dev.txt\n```\n\nTo build the project on Linux/MacOS, you can simply do ``make``.\n\nHowever, if you are on Windows or prefer more explicit build process, you can do the following:\n\n```\n# uninstall viztracer first\npip uninstall -y viztracer\n# build and install\npython setup.py build install\n```\n\n### Lint\n\nCheck lint with ruff and mypy\n\n```\n# On Unix\nmake lint\n\n# explicit or windows\nruff check --fix\nruff format\nmypy src/ --exclude src/viztracer/attach_process/\n```\n\n### Test\n\nVizTracer uses built-in library ``unittest`` for testing.\n\nYou can do ``make test`` on Linux/MacOS, or do ``python -m unittest``. To run a specific\ntest, refer to unittest [docs](https://docs.python.org/3/library/unittest.html)\n\nThere might be a few tests that are not 100% stable on github actions. They should be listed in issues.\nYou should, however, make sure local tests pass before doing a pull request.\n\n## Pull Request\n\nDo a pull request to the ``master`` branch of ``gaogaotiantian/viztracer``, and I will review the code\nand give feedbacks as soon as possible.\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "github: gaogaotiantian\n"
  },
  {
    "path": ".github/workflows/docs.yml",
    "content": "name: docs\n\non:\n  push:\n    branches: [ master ]\n    paths:\n      - \"docs/**\"\n      - \".github/workflows/docs.yml\"\n  pull_request:\n    paths:\n      - \"docs/**\"\n      - \".github/workflows/docs.yml\"\n\njobs:\n  docs:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: \"3.11\"\n      - name: Install dependency\n        run: pip install -r docs/requirements.txt\n      - name: Build documentation\n        run: sphinx-build -b html docs/source/ docs/build/\n"
  },
  {
    "path": ".github/workflows/lint.yml",
    "content": "name: lint\n\non:\n  push:\n    branches: [ master ]\n  pull_request:\n\njobs:\n  lint:\n    strategy:\n      matrix:\n        python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: ${{ matrix.python-version }}\n      - name: Install dependency\n        run: pip install ruff mypy\n      - name: Run ruff check\n        run: ruff check\n      - name: Run ruff format check\n        run: ruff format --check\n      - name: Run mypy \n        run: mypy src/ --exclude src/viztracer/attach_process/\n"
  },
  {
    "path": ".github/workflows/python-package.yml",
    "content": "# This workflow will install Python dependencies, run tests and lint with a variety of Python versions\n# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions\n\nname: build\n\non:\n  push:\n    branches: [ master ]\n    paths:\n      - \"src/viztracer/**\"\n      - \"tests/**\"\n      - \"setup.py\"\n      - \".github/workflows/python-package.yml\"\n  pull_request:\n    paths:\n      - \"src/viztracer/**\"\n      - \"tests/**\"\n      - \"setup.py\"\n      - \".github/workflows/python-package.yml\"\n  schedule:\n    - cron: '0 10 * * *'\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    strategy:\n      matrix:\n        python-version: ['3.10', '3.11', '3.12', '3.13', '3.13t', '3.14', '3.14t']\n        os: [ubuntu-latest, macos-latest, macos-15-intel, windows-latest, windows-11-arm]\n        exclude:\n          - python-version: '3.10'\n            os: 'windows-11-arm'\n          - python-version: '3.11'\n            os: 'windows-11-arm'\n    runs-on: ${{ matrix.os }}\n    timeout-minutes: 30\n    env:\n      COREDUMPY_DUMP_DIR: ${{ github.workspace }}/coredumpy_data\n    steps:\n    - uses: actions/checkout@v4\n      with:\n        # This is necessary to get the PR head instead of base\n        ref: ${{ github.event.pull_request.head.sha }}\n    - name: Set up Python ${{ matrix.python-version }}\n      uses: actions/setup-python@v5\n      with:\n        python-version: ${{ matrix.python-version }}\n    - name: Install gdb\n      if: matrix.os == 'ubuntu-latest'\n      run: |\n        sudo apt-get update\n        sudo apt-get install gdb\n        echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope\n    - name: Setup lldb\n      if: contains(matrix.os, 'macos')\n      uses: maxim-lobanov/setup-xcode@v1\n      with:\n        xcode-version: latest-stable\n    - name: Install dependencies\n      run: |\n        python -m pip install --upgrade pip\n        pip install -r requirements-dev.txt\n    - name: Build dist and test with pytest\n      if: \"!contains(matrix.os, 'windows')\"\n      run: |\n        python -m build\n        pip install dist/*.whl\n        python -m pytest --junit-xml=./test-results.xml -o junit_family=legacy\n    - name: Build dist and test with pytest on Windows\n      if: contains(matrix.os, 'windows')\n      run: |\n        python -m build\n        pip install (Get-ChildItem dist/*.whl)\n        python -m pytest --junit-xml=./test-results.xml -o junit_family=legacy\n    - name: Upload the test time artifacts\n      uses: actions/upload-artifact@v4\n      with:\n        name: test_time_trace_${{ matrix.os }}_${{ matrix.python-version }}\n        path: test_time_trace.json\n        retention-days: 7\n    - name: Upload test results\n      if: (!cancelled()) && github.ref == 'refs/heads/master'\n      uses: codecov/codecov-action@v5\n      with:\n        report_type: 'test_results'\n        files: test-results.xml\n        flags: ${{ matrix.os }}-${{ matrix.python-version }}\n        name: VizTracer Tests\n        token: ${{ secrets.codecov_token }}\n    - name: Generate coverage report\n      run: |\n        coverage run --source viztracer --parallel-mode -m pytest\n        coverage combine\n        coverage xml -i\n      env:\n        COVERAGE_RUN: True\n    - name: Upload coverage reports to Codecov\n      uses: codecov/codecov-action@v5\n      with:\n        token: ${{ secrets.CODECOV_TOKEN }}\n        files: coverage.xml\n    - name: Upload coredumpy data if applicable\n      uses: gaogaotiantian/upload-coredumpy@v0.2\n      if: failure()\n      with:\n        name: coredumpy_data_${{ matrix.os }}_${{ matrix.python-version }}\n        path: ${{ env.COREDUMPY_DUMP_DIR }}\n        retention-days: 7\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Python package build and publish\n\non:\n  release:\n    types: [created]\n\njobs:\n  build-wheels:\n    uses: ./.github/workflows/wheels.yml\n    with:\n      upload_artifacts: true\n\n  deploy-wheels:\n    needs: build-wheels\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.13\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install build twine flake8 setuptools wheel\n      - name: Build source tar\n        run: |\n          python -m build\n      - name: Download wheels\n        uses: actions/download-artifact@v4\n        with:\n          path: wheelhouse\n          merge-multiple: true\n      - name: Publish wheels to PyPI\n        continue-on-error: true\n        env:\n          TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}\n          TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}\n        run: |\n          twine upload --skip-existing dist/*tar* wheelhouse/*.whl\n"
  },
  {
    "path": ".github/workflows/wheels.yml",
    "content": "name: wheels\n\non:\n  push:\n    branches: [ master ]\n    paths:\n      - \"src/viztracer/**\"\n      - \"setup.py\"\n      - \".github/workflows/wheels.yml\"\n  pull_request:\n    paths:\n      - \"src/viztracer/**\"\n      - \"setup.py\"\n      - \".github/workflows/wheels.yml\"\n  workflow_call:\n    inputs:\n      upload_artifacts:\n        required: false\n        type: boolean\n        default: false\n\njobs:\n  build-wheels-linux:\n    name: Build wheels on Linux for ${{ matrix.arch }}\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest]\n        manylinux-image: [manylinux2014]\n        arch: [auto, aarch64]\n\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up QEMU\n        if: ${{ matrix.arch == 'aarch64' }}\n        uses: docker/setup-qemu-action@v3\n        with:\n          image: tonistiigi/binfmt:master\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.11\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install build twine setuptools wheel\n\n      - name: Install cibuildwheel\n        run: python -m pip install cibuildwheel -U\n\n      - name: Build wheels\n        run: python -m cibuildwheel --output-dir wheelhouse\n        env:\n          CIBW_BUILD: cp310-* cp311-* cp312-* cp313-* cp313t-* cp314-* cp314t-*\n          CIBW_SKIP: '*musllinux*'\n          CIBW_ARCHS: ${{ matrix.arch }}\n          CIBW_MANYLINUX_*_IMAGE: ${{ matrix.manylinux-image }}\n          CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux-image }}\n          CIBW_ENABLE: 'cpython-freethreading'\n\n      - name: Upload wheels\n        if: ${{ inputs.upload_artifacts || false }}\n        uses: actions/upload-artifact@v4\n        with:\n          name: wheels-${{ matrix.os }}-${{ matrix.arch }}\n          path: wheelhouse/*.whl\n          retention-days: 1\n\n  build-wheels-macos-windows:\n    name: Build wheels on ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [macos-latest, macos-15-intel, windows-latest, windows-11-arm]\n\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: '3.11'\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install build twine setuptools wheel\n\n      - name: Install cibuildwheel\n        run: python -m pip install cibuildwheel -U\n\n      - name: Build wheels\n        if: contains(matrix.os, 'macos')\n        run: python -m cibuildwheel --output-dir wheelhouse\n        env:\n          CIBW_BUILD: cp310-* cp311-* cp312-* cp313-* cp313t-* cp314-* cp314t-*\n          CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=14\n          CIBW_ENABLE: 'cpython-freethreading'\n\n      - name: Build wheels\n        if: matrix.os == 'windows-11-arm'\n        run: python -m cibuildwheel --output-dir wheelhouse\n        env:\n          CIBW_BUILD: cp312-* cp313-* cp313t-* cp314-* cp314t-*\n          CIBW_ENABLE: 'cpython-freethreading'\n\n      - name: Build wheels\n        if: \"!contains(matrix.os, 'macos') && matrix.os != 'windows-11-arm'\"\n        run: python -m cibuildwheel --output-dir wheelhouse\n        env:\n          CIBW_BUILD: cp310-* cp311-* cp312-* cp313-* cp313t-* cp314-* cp314t-*\n          CIBW_ENABLE: 'cpython-freethreading'\n\n      - name: Upload wheels\n        if: ${{ inputs.upload_artifacts || false }}\n        uses: actions/upload-artifact@v4\n        with:\n          # Upload all wheels built in wheelhouse/*\n          name: wheels-${{ matrix.os }}\n          path: wheelhouse/*.whl\n          retention-days: 1\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\npip-wheel-metadata/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# Generated data\ntests/data/*.json\n"
  },
  {
    "path": ".readthedocs.yml",
    "content": "# .readthedocs.yml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\n# Required\nversion: 2\n\n# Set the version of Python and other tools you might need\nbuild:\n  os: ubuntu-22.04\n  tools:\n    python: \"3.11\"\n\n# Build documentation in the docs/ directory with Sphinx\nsphinx:\n  configuration: docs/source/conf.py\n\n# Build documentation with MkDocs\n#mkdocs:\n#  configuration: mkdocs.yml\n\n# Enable pdf download on readthedocs\nformats:\n  - pdf\n\n# Optionally set the version of Python and requirements required to build your docs\npython:\n  install:\n    - requirements: docs/requirements.txt\n"
  },
  {
    "path": "CITATION.cff",
    "content": "cff-version: 1.2.0\ntitle: >-\n  VizTracer - A debugging and profiling tool that can trace\n  and visualize python code execution\nmessage: >-\n  If you use this software, please cite it using the\n  metadata from this file.\ntype: software\nauthors:\n  - given-names: Tian\n    family-names: Gao\n    email: gaogaotiantian@hotmail.com\n    orcid: 'https://orcid.org/0009-0006-9702-7067'\nrepository-code: 'https://github.com/gaogaotiantian/viztracer'\nlicense: Apache-2.0\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n\n========================================================================\n\nVizTracer Subcomponents:\n\nVizTracer contains subcomponents with separate copyright notices and\nlicense terms. Your use of the source code for these subcomponents is\nalso subject to the terms and conditions of the following licenses.\n\nBSD-3-Clause (src/viztracer/html/LICENSE):\n\n  src/viztracer/html/trace_viewer_*.html\n\nApache License V2 (src/viztracer/web_dist/LICENSE):\n\n  src/viztracer/web_dist/*\n\nEclipse Public License v1.0 (src/viztracer/attach_process/LICENSE)\n\n  src/viztracer/attach_process/*\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include LICENSE\ninclude NOTICE.txt\ninclude README.md\ninclude setup.py\n\nrecursive-include src/viztracer/html *.css *.js\nrecursive-include src/viztracer/modules *.c *.h\nrecursive-include src/viztracer/web_dist *\nrecursive-include src/viztracer/attach_process *.py\n"
  },
  {
    "path": "Makefile",
    "content": ".PHONY: refresh build install build_dist json release lint test clean\n\nrefresh: clean build install lint\n\nbuild:\n\tpython -m build\n\ninstall:\n\tpip install .\n\nbuild_dist:\n\tmake clean\n\tpython -m build\n\tpip install dist/*.whl\n\tmake test\n\njson:\n\tpython example/generate_examples.py\n\nrelease:\n\tpython -m twine upload dist/*\n\nlint:\n\truff check --fix\n\truff format\n\tmypy src/ --exclude 'src/viztracer/attach_process/.*'\n\ntest:\n\tpython -m pytest\n\nclean:\n\trm -rf __pycache__\n\trm -rf tests/__pycache__\n\trm -rf src/viztracer/__pycache__\n\trm -rf build\n\trm -rf dist\n\trm -rf viztracer.egg-info\n\trm -rf src/viztracer.egg-info\n\tpip uninstall -y viztracer\n"
  },
  {
    "path": "NOTICE.txt",
    "content": "VizTracer\nCopyright 2020-2025 Tian Gao\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nThis project contains code from the following projects:\n\n    Catapult (https://github.com/catapult-project/catapult)\n    Copyright (c) 2012 The Chromium Authors. All rights reserved.\n    - src/viztracer/html/trace_viewer_*.html\n\n    Perfetto (https://github.com/google/perfetto)\n    Copyright (c) 2017, The Android Open Source Project\n    - src/viztracer/web_dist/*\n\n    PyDev.Debugger (https://github.com/fabioz/PyDev.Debugger)\n    - src/viztracer/attach_process/*\n"
  },
  {
    "path": "README.md",
    "content": "# VizTracer\n\n[![build](https://github.com/gaogaotiantian/viztracer/workflows/build/badge.svg)](https://github.com/gaogaotiantian/viztracer/actions?query=workflow%3Abuild)  [![ruff](https://github.com/gaogaotiantian/viztracer/workflows/lint/badge.svg)](https://github.com/gaogaotiantian/viztracer/actions?query=workflow%3ALint)  [![readthedocs](https://img.shields.io/readthedocs/viztracer)](https://viztracer.readthedocs.io/en/stable/)  [![coverage](https://img.shields.io/codecov/c/github/gaogaotiantian/viztracer)](https://codecov.io/gh/gaogaotiantian/viztracer)  [![pypi](https://img.shields.io/pypi/v/viztracer.svg)](https://pypi.org/project/viztracer/)  [![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/gaogaotiantian.viztracer-vscode?logo=visual-studio)](https://marketplace.visualstudio.com/items?itemName=gaogaotiantian.viztracer-vscode)  [![support-version](https://img.shields.io/pypi/pyversions/viztracer)](https://img.shields.io/pypi/pyversions/viztracer)  [![license](https://img.shields.io/github/license/gaogaotiantian/viztracer)](https://github.com/gaogaotiantian/viztracer/blob/master/LICENSE)  [![commit](https://img.shields.io/github/last-commit/gaogaotiantian/viztracer)](https://github.com/gaogaotiantian/viztracer/commits/master)  [![sponsor](https://img.shields.io/badge/%E2%9D%A4-Sponsor%20me-%23c96198?style=flat&logo=GitHub)](https://github.com/sponsors/gaogaotiantian)\n\nVizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution.\n\nThe front-end UI is powered by [Perfetto](https://perfetto.dev/). **Use \"AWSD\" to zoom/navigate**.\nMore help can be found in \"Support - Controls\".\n\n[![example_img](https://github.com/gaogaotiantian/viztracer/blob/master/img/example.png)](https://github.com/gaogaotiantian/viztracer/blob/master/img/example.png)\n\n\n## Highlights\n\n* Detailed function entry/exit information on timeline with source code\n* Super easy to use, no source code change for most features, no package dependency\n* Low overhead, probably the fastest tracer in the market\n* Supports threading, multiprocessing, subprocess, async and PyTorch\n* Powerful front-end, able to render GB-level trace smoothly\n* Works on Linux/MacOS/Windows\n\n## Install\n\nThe preferred way to install VizTracer is via pip\n\n```sh\npip install viztracer\n```\n\n## Basic Usage\n\n### Command Line\n\n```sh\n# Instead of \"python3 my_script.py arg1 arg2\"\nviztracer my_script.py arg1 arg2\n```\n\n<details>\n\n<summary>\nA <code>result.json</code> file will be generated, which you can open with <code>vizviewer</code>\n</summary>\n\n```sh\n# You can display all the files in a directory and open them in browser too\nvizviewer ./\n# For very large trace files, try external trace processor\nvizviewer --use_external_processor result.json\n```\n\nvizviewer will host an HTTP server on ``http://localhost:9001``. You can also open your browser and use that address.\n\nIf you do not want vizviewer to open the webbrowser automatically, you can use\n\n```sh\nvizviewer --server_only result.json\n```\n\nIf you just need to bring up the trace report once, and do not want the persistent server, use\n\n```sh\nvizviewer --once result.json\n```\n\n</details>\n\n```sh\nvizviewer result.json\n```\n\nA [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=gaogaotiantian.viztracer-vscode)\nis available to make your life even easier.\n\n<p align=\"center\">\n    <img src=\"https://github.com/gaogaotiantian/viztracer-vscode/raw/master/assets/demo.gif\" />\n</p>\n\n<details>\n\n<summary>\nAdd <code>--open</code> to open the reports right after tracing\n</summary>\n\n```sh\nviztracer --open my_script.py arg1 arg2\nviztracer -o result.html --open my_script.py arg1 arg2\n```\n\n</details>\n\n<details>\n\n<summary>\nmodules and console scripts(like <code>flask</code>) are supported as well\n</summary>\n\n```sh\nviztracer -m your_module\n```\n\n```sh\nviztracer flask run\n```\n\n</details>\n\n### Inline\n\nYou can also manually start/stop VizTracer in your script as well.\n\n```python\nfrom viztracer import VizTracer\n\ntracer = VizTracer()\ntracer.start()\n# Something happens here\ntracer.stop()\ntracer.save() # also takes output_file as an optional argument\n```\n\nOr, you can do it with ```with``` statement\n\n```python\nwith VizTracer(output_file=\"optional.json\") as tracer:\n    # Something happens here\n```\n\n### Jupyter\n\nIf you are using Jupyter, you can use viztracer cell magics.\n\n```python\n# You need to load the extension first\n%load_ext viztracer\n```\n\n```python\n%%viztracer\n# Your code after\n```\n\nA ``VizTracer Report`` button will appear after the cell and you can click it to view the results\n\n### PyTorch\n\nVizTracer can log native calls and GPU events of PyTorch (based on `torch.profiler`) with\n``--log_torch``.\n\n```python\nwith VizTracer(log_torch=True) as tracer:\n    # Your torch code\n```\n\n```sh\nviztracer --log_torch your_model.py\n```\n\n## Advanced Usage\n\n### Trace Filter\n\nVizTracer can filter out the data you don't want to reduce overhead and keep info of a longer time period before you dump the log.\n\n* [Min Duration](https://viztracer.readthedocs.io/en/stable/filter.html#min-duration)\n* [Max Stack Depth](https://viztracer.readthedocs.io/en/stable/filter.html#max-stack-depth)\n* [Include Files](https://viztracer.readthedocs.io/en/stable/filter.html#include-files)\n* [Exclude Files](https://viztracer.readthedocs.io/en/stable/filter.html#exclude-files)\n* [Ignore C Function](https://viztracer.readthedocs.io/en/stable/filter.html#ignore-c-function)\n* [Sparse Log](https://viztracer.readthedocs.io/en/stable/filter.html#log-sparse)\n\n### Extra Logs without Code Change\n\nVizTracer can log extra information without changing your source code\n\n* [Any Variable/Attribute with RegEx](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-variable)\n* [Function Entry](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-function-entry)\n* [Variables in Specified Function](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-function-execution)\n* [Garbage Collector Operation](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-garbage-collector)\n* [Function Input Arguments](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-function-arguments)\n* [Function Return Value](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-function-return-value)\n* [Audit Events](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-audit)\n* [Raised Exceptions](https://viztracer.readthedocs.io/en/stable/extra_log.html#log-exception)\n\n### Add Custom Event\n\nVizTracer supports inserting custom events while the program is running. This works like a print debug, but you can know when this print happens while looking at trace data.\n\n* [Instant Event](https://viztracer.readthedocs.io/en/stable/custom_event_intro.html#instant-event)\n* [Variable Event](https://viztracer.readthedocs.io/en/stable/custom_event_intro.html#variable-event)\n* [Duration Event](https://viztracer.readthedocs.io/en/stable/custom_event_intro.html#duration-event)\n\n## Misc\n\n### Multi Thread Support\n\nFor Python3.12+, VizTracer supports Python-level multi-thread tracing without the need to do any modification to your code.\n\nFor versions before 3.12, VizTracer supports python native ```threading``` module. Just start ```VizTracer``` before you create threads and it will just work.\n\nFor other multi-thread scenarios, you can use ``enable_thread_tracing()`` to notice VizTracer about the thread to trace it.\n\n[![example_img](https://github.com/gaogaotiantian/viztracer/blob/master/img/multithread_example.png)](https://github.com/gaogaotiantian/viztracer/blob/master/img/multithread_example.png)\n\nRefer to [multi thread docs](https://viztracer.readthedocs.io/en/stable/concurrency.html) for details\n\n\n### Multi Process Support\n\nVizTracer supports ```subprocess```, ```multiprocessing```, ```os.fork()```, ```concurrent.futures```, and ```loky``` out of the box.\n\nFor more general multi-process cases, VizTracer can support with some extra steps.\n\n[![example_img](https://github.com/gaogaotiantian/viztracer/blob/master/img/multiprocess_example.png)](https://github.com/gaogaotiantian/viztracer/blob/master/img/multiprocess_example.png)\n\nRefer to [multi process docs](https://viztracer.readthedocs.io/en/stable/concurrency.html) for details\n\n### Async Support\n\nVizTracer supports ```asyncio``` natively, but could enhance the report by using ```--log_async```.\n\n[![example_img](https://github.com/gaogaotiantian/viztracer/blob/master/img/async_example.png)](https://github.com/gaogaotiantian/viztracer/blob/master/img/async_example.png)\n\nRefer to [async docs](https://viztracer.readthedocs.io/en/stable/concurrency.html) for details\n\n### Flamegraph\n\nPerfetto supports native flamegraph, just select slices on the UI and choose \"Slice Flamegraph\".\n\n[![example_img](https://github.com/gaogaotiantian/viztracer/blob/master/img/flamegraph.png)](https://github.com/gaogaotiantian/viztracer/blob/master/img/flamegraph.png)\n\n### Remote attach\n\nVizTracer supports remote attach to an arbitrary Python process to trace it, as long as viztracer is importable\n\nRefer to [remote attach docs](https://viztracer.readthedocs.io/en/stable/remote_attach.html)\n\n### JSON alternative\n\nVizTracer needs to dump the internal data to json format. It is recommended for the users to install ```orjson```, which is much faster than the builtin ```json``` library. VizTracer will try to import ```orjson``` and fall back to the builtin ```json``` library if ```orjson``` does not exist.\n\n## Performance\n\nVizTracer puts in a lot of effort to achieve low overhead. The actual performance impact largely depends on your application.\nFor typical codebases, the overhead is expected to be below 1x. If your code has infrequent function calls,\nthe overhead could be minimal.\n\n<details>\n\n<summary>\nDetailed explanation\n</summary>\n\nThe overhead introduced by VizTracer is basically a fixed amount of time during function entry and exit, so the more time spent on\nfunction entries and exits, the more overhead will be observed. A pure recursive ```fib``` function could suffer 3x-4x overhead\non Python3.11+ (when the Python call is optimized, before that Python call was slower so the overhead ratio would be less).\n\nIn the real life scenario, your code should not spend too much time on function calls (they don't really do anything useful), so\nthe overhead would be much smaller.\n\nMany techniques are applied to minimize the overall overhead during code execution to reduce the inevitable skew introduced by\nVizTracer (the report saving part is not as critical). For example, VizTracer tries to use the CPU timestamp counter instead of\na syscall to get the time when available. On Python 3.12+, VizTracer uses ```sys.monitoring``` which has less overhead than\n```sys.setprofile```. All of the efforts made it observably faster than ```cProfile```, the Python stdlib profiler.\n\nHowever, VizTracer is a tracer, which means it has to record every single function entry and exit, so it can't be as fast as\nthe sampling profilers - they are not the same thing. With the extra overhead, VizTracer provides a lot more information than\nnormal sampling profilers.\n\n</details>\n\n## Sponsors\n\nWe thank our sponsors to support VizTracer. If you want your logo here,\ncheck our [sponsor page](https://github.com/sponsors/gaogaotiantian) or contact\nthe [author](https://github.com/gaogaotiantian) directly.\n\n<a href=\"https://www.testmuai.com/?utm_medium=sponsor&utm_source=viztracer\" target=\"_blank\">\n    <img src=\"https://assets.testmu.ai/resources/images/logos/black-logo.png\" style=\"vertical-align: middle;\" width=\"200\" />\n</a>\n\n## Documentation\n\nFor full documentation, please see [https://viztracer.readthedocs.io/en/stable](https://viztracer.readthedocs.io/en/stable)\n\n## Bugs/Requests\n\nPlease send bug reports and feature requests through [github issue tracker](https://github.com/gaogaotiantian/viztracer/issues). VizTracer is currently under development now and it's open to any constructive suggestions.\n\n## License\n\nCopyright 2020-2025 Tian Gao.\n\nDistributed under the terms of the  [Apache 2.0 license](https://github.com/gaogaotiantian/viztracer/blob/master/LICENSE).\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the environment for the first two.\nSPHINXOPTS    ?=\nSPHINXBUILD   ?= sphinx-build\nSOURCEDIR     = source\nBUILDDIR      = build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset SOURCEDIR=source\r\nset BUILDDIR=build\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\n%SPHINXBUILD% >NUL 2>NUL\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.http://sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\ngoto end\r\n\r\n:help\r\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%\r\n\r\n:end\r\npopd\r\n"
  },
  {
    "path": "docs/requirements.txt",
    "content": "Sphinx==7.2.6\nsphinx-rtd-theme==1.3.0"
  },
  {
    "path": "docs/source/basic_usage.rst",
    "content": "Basic Usage\n===========\n\nCommand Line\n------------\n\nThe easiest way to use VizTracer is through command line. Assume you have a python script to profile and the normal way to run it is:\n\n.. code-block::\n\n    python3 my_script.py\n\n\nYou can simply use VizTracer by\n\n.. code-block::\n    \n    # These two commands are equivalent. \n    # In this docs, they might both be used, but you can choose either one that you prefer.\n    viztracer my_script.py\n    # OR\n    python3 -m viztracer my_script.py\n\nwhich will generate a ``result.json`` file in the directory you run this command. You can open it with ``vizviewer``\n\n.. code-block::\n\n    vizviewer result.json\n\nIf your script needs arguments like \n\n.. code-block::\n    \n    python3 my_script.py arg1 arg2\n\nJust feed it as it is to ``viztracer``\n\n.. code-block::\n    \n    viztracer my_script.py arg1 arg2\n\nIt's possible that there's a conflict or an ambiguity. ``viztracer`` takes ``--`` as a separator between arguments to ``viztracer`` and\npositional arguments to your script.\n\n.. code-block::\n    \n    viztracer -o result.json -- my_script.py -o output_for_my_script.json\n\nYou can also run a module with VizTracer\n\n.. code-block::\n\n    viztracer -m your_module\n\nYou can specify the output file using ``-o`` or ``--output_file`` argument. The default output file is ``result.json``. \nThree types of files are supported, html, json and gz(gzip of json file).\n\n.. code-block::\n\n    viztracer -o other_name.html my_script.py\n    viztracer -o other_name.json my_script.py\n    viztracer -o other_name.json.gz my_script.py\n\nYou can make viztracer to generate a unique name for the output file by using ``-u`` or ``--unique_output_file``\n\n.. code-block::\n\n    viztracer -u my_script.py\n    viztracer --output_dir ./my_reports -u my_script.py\n\nInline\n------\n\nSometimes the command line may not work as you expected, or you do not want to profile the whole script. You can manually start/stop the profiling in your script as well.\n\nFirst of all, you need to import ``VizTracer`` class from the package\n\n.. code-block:: python\n\n    from viztracer import VizTracer\n\nYou can trace code with the ``with`` statement\n\n.. code-block:: python\n    \n    with VizTracer(output_file=\"optional.json\") as tracer:\n        # Something happens here\n\nOr you can create a ``VizTracer`` object and manually enable/disable the profile using ``start()`` and ``stop()`` function.\n\n.. code-block:: python\n\n    tracer = VizTracer()\n    tracer.start()\n    # Something happens here\n    tracer.stop()\n    tracer.save() # also takes output_file as an optional argument\n\nJupyter\n-------\n\nIf you are using Jupyter, you can use viztracer cell magics.\n\n.. code-block:: python\n\n    # You need to load the extension first\n    %load_ext viztracer\n\n.. code-block:: python\n\n    %%viztracer\n    # Your code after\n\n.. code-block:: python\n\n    # you can define arguments of VizTracer in magic\n    %%viztracer -p 8888\n    # Your code after\n\nA ``Show VizTracer Report`` button will appear after the cell and you can click it to view the results.\n\nCell magic ``%%viztracer`` supports some of the command line arguments:\n\n* ``--port``\n* ``--output_file``\n* ``--max_stack_depth``\n* ``--ignore_c_function``\n* ``--ignore_frozen``\n* ``--log_func_args``\n* ``--log_print``\n* ``--log_sparse``\n\n\nPyTorch\n-------\n\nVizTracer can log native calls and GPU events of PyTorch (based on ``torch.profiler``) with\n``--log_torch``.\n\n.. code-block:: python\n\n    with VizTracer(log_torch=True) as tracer:\n        # Your torch code\n\n.. code-block::\n\n    viztracer --log_torch your_model.py\n\n\nDisplay Report\n--------------\n\nVizTracer will generate a ``result.json`` by default, which could be opened with ``vizviewer``\n\n.. code-block::\n\n    vizviewer result.json\n\nYou can also display all the files in a directory and open the reports in browser too. This is helpful\nwhen you have many files in one directory and want to check some or all of them.\n\nThis could also be used when you have a report directory where reports are frequently added. You can\nleave ``vizviewer`` in the background and browse your reports with pure browser.\n\n.. code-block::\n\n    vizviewer your_directory/\n\n``vizviewer`` will bring up webbrowser and open the report by default. You can disable this feature and\nonly host an HTTP server on ``localhost:9001``, which you can access through your browser\n\n.. code-block::\n\n    vizviewer --server_only result.json\n\nIf you do not want to host the HTTP server forever, you can use ``--once`` so the server will shut down\nafter serving the trace file\n\n.. code-block::\n\n    vizviewer --once result.json\n\nYou can serve your HTTP server on a different port with ``--port`` or its equivalent ``-p``\n\n.. code-block::\n\n    vizviewer --port 10000 result.json\n\nYou can use the external trace processor with ``--use_external_processor``, which does not have the\nRAM limits as the browser. This is helpful when you try to open a large trace file.\n\n.. code-block::\n\n    vizviewer --use_external_processor result.json\n\n``vizviewer`` can also show standalone html report - it just host a simple HTTP server for the file\n\n.. code-block::\n\n    vizviewer result.html\n\nOr, you can use ``--open`` for ``viztracer``, it will then open the report after it generates it\n\n.. code-block::\n\n    viztracer --open my_script.py\n    viztracer -o result.html --open my_script.py\n\nCircular Buffer Size\n--------------------\n\nVizTracer uses a circular buffer to store the entries. When there are too many entries, it will only store the latest ones so you know what happened\nrecently. The default buffer size is 1,000,000(number of entries), which takes about 150MiB disk space.\nYou can specify this when you instantiate a ``VizTracer`` object or through CLI.\n\n.. code-block:: python\n\n    viztracer --tracer_entries 500000 my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(tracer_entries=500000)\n\nNotice it also takes a significant amount of RAM when VizTracer is tracing the program.\n\nVizTracer will preallocate about ``tracer_entries * 100B`` RAM for circular buffer. It also requires about ``1-2MB`` per 10k entries to\ndump the json file.\n\nConfiguration file\n------------------\n\nYou can use a configuration file to set the default options for ``viztracer``, which could help you avoid typing the same arguments for multiple runs.\n\nThe default filename for ``viztracer`` configuration file is ``.viztracerrc``. `viztracer` will try to find ``.viztracerrc`` in current working directory.\nYou can also specify your own configuration file with\n``viztracer --rcfile <your_config_file>``. The format of the configuration file is very similar to ``ini`` file, which could be parsed by\nbuilt in ``configparser``.\n\n.. code-block::\n\n    [default]\n    log_var = a.* latest\n    ignore_c_function = True\n    output_file = vizreport.json\n    max_stack_depth = 10\n\n``[default]`` can't be omitted and all the arguments should be in a key-value pair format, where the key is the argument name(without ``--``) and the val is the\nvalue you need to pass in. Please notice that there are some arguments in ``viztracer`` that do not take parameters(like `--ignore_c_function``), you\nneed to pass ``True`` in the config file to make the config parser happy. If you need to pass multiple parameters to an argument(like ``log_var``), just\nuse space to separate the parameters like you do in cmdline interface.\n\nCombine Reports\n---------------\n\nVizTracer can put multiple json reports together and generate a new trace file. This is especially helpful when you have multiple\ntrace generators, for example, running multiple processes with VizTracer. As VizTracer uses Monotonic Clock, you can save reports\nwith different VizTracer instances without worrying about timestamp alignment issue. You can even generate your own data and\ncombine with VizTracer reports, like VizPlugins does.\n\n.. code-block::\n\n    viztracer --combine process1.json process2.json -o full_report.json\n\nAnother usage of combining reports would be to compare between different runs of the same program. Unlike combining from multiple\nsources, this requires a pre-alignment of all the trace data. VizTracer also provides a way to align the start of all reports for\nthis usage.\n\n.. code-block::\n\n    viztracer --align_combine run1.json run2.json -o compare_report.json\n\nYou can also set a sync-marker from your source code, and VizTracer will align both reports to this particular timestamp.\n\n.. code-block::\n\n    from viztracer import get_tracer\n    get_tracer().set_sync_marker()\n\n\nCompress Your Report\n--------------------\n\nVizTracer supports compressing your json report. The general compression ratio is about 50:1 to 100:1 for a large report.\n\nYou can compress your report with ``--compress``.\n\n.. code-block:: \n\n    viztracer --compress result.json -o result.cvf \n\nYou can also decompress your report with ``--decompress``\n\n.. code-block:: \n\n    viztracer --decompress result.cvf -o result.json \n"
  },
  {
    "path": "docs/source/concurrency.rst",
    "content": "Concurrency\n===========\n\nVizTracer supports concurrency tracing, including asyncio, multi-thread and multi-process. \n\nasyncio\n-------\n\nVizTracer supports ``asyncio`` module natively. However, you can use ``--log_async`` to make the report clearer.\n\nUnder the rug, asyncio is a single-thread program that's scheduled by Python built-ins. With ``--log_async``, you can visualize\ndifferent tasks as \"threads\", which could separate the real work from the underlying structure, and give you a more intuitive\nunderstanding of how different tasks consume the runtime.\n\n.. code-block::\n\n    viztracer --log_async my_script.py\n\nMulti Thread\n------------\n\nFor python3.12+, VizTracer supports all Python level multi-thread. You don't need to do anything.\n\nFor versions before 3.12, VizTracer supports python native ``threading`` module without the need to do any modification to your code. \nJust start ``VizTracer`` before you create threads and it will just work.\n\nIf you are using multi-thread via other mechanism, for example, PyQt thread, VizTracer can't support it out of the box.\nHowever, you can inform VizTracer that you are in a separate thread and enable tracing in that thread with ``enable_thread_tracing``\n\n.. code-block:: python\n\n    from viztracer import get_tracer\n\n    class YourThread:\n        def run(self):\n            # This will tell VizTracer to trace the thread\n            get_tracer().enable_thread_tracing()\n\nsubprocess\n----------\n\nVizTracer supports ``subprocess``. You need to make sure the main process exits after subprocesses finish.\n\n.. code-block::\n\n    viztracer my_script_using_subprocess.py\n\nThis will generate a report for all processes. There are a couple of things you need to be aware though. \n\nVizTracer patches subprocess module(to be more specific, ``subprocess.Popen``) to make this work like a magic. However, it will only patch\nwhen the args passed to ``subprocess.Popen`` is a list(``subprocess.Popen([\"python\", \"subscript.py\"])``) and the first argument starts with\n``python``. This covers most of the cases, but if you do have a situation that can't be solved, you can raise an issue and we can talk\nabout solutions.\n\nmultiprocessing and concurrent.futures\n--------------------------------------\n\nVizTracer supports ``multiprocessing`` and ``concurrent.futures``, and it will make the main process wait for all the other processes to finish\nso the report can include all processes. You can skip the waiting using Ctrl+C.\n\n.. code-block::\n\n    viztracer my_script_using_multiprocess.py\n\nThis feature is available on all platforms and for both ``fork`` and ``spawn`` type ``Process``.\n\nHowever, on Windows, ``multiprocessing.Pool`` won't work with VizTracer because there's no way to gracefully catch the exit of the process\n\nos.fork()\n---------\n\nVizTracer supports ``os.fork``. The main process will wait for forked processes to finish.\nYou can even use ``os.exec()`` and its other forms after you fork the process. Of course\nVizTracer only records what happens before ``os.exec()``, you need :ref:`generic multi process support <generic_multi_process>`\nto record what happens after.\n\nloky\n----\n\nVizTracer supports ``loky>=3.0.0`` as ``loky`` implemented the ``viztracer`` initializer. You can log ``loky`` processes\njust as easy as builtin ``multiprocessing``\n\n.. _generic_multi_process:\n\ngeneric multi process support\n-----------------------------\n\nVizTracer has a simple instrumentation for all the third party libraries to integrate VizTracer to their multi process code.\n\nFirst, your main process has to be executed by ``viztracer``. Inline VizTracer won't work. In your program, you need\n``get_tracer().init_kwargs``, which is a ``Dict`` that can be easily serializable with ``pickle`` or other libraries.\n\nThen, pass this argument to your sub-process, and instantiate a VizTracer object with it\n\n.. code-block:: python\n\n    # init_kwargs is the argument from main process\n    tracer = VizTracer(**init_kwargs)\n    tracer.register_exit()\n    tracer.start()\n\nAnd you are good to go. The main process should collect the data from sub-processes automatically and put together a report.\n\ncombine reports\n---------------\n\nYou can generate json reports from different processes and combine them manually as well. It is recommended to use\n``--pid_suffix`` so the report will be saved as a json file ending with the pid of the process. You can specify your own file name using ``-o`` too.\n\n.. code-block::\n    \n    viztracer --pid_suffix single_process.py\n    # or\n    viztracer -o process1.json single_process.py\n\nYou can specify the output directory if you want to\n\n.. code-block::\n\n    viztracer --pid_suffix --output_dir ./temp_dir single_process.py\n\nAfter generating ``json`` files, you need to combine them\n\n.. code-block::\n    \n    viztracer --combine ./temp_dir/*.json\n\nThis will generate the report with all the process info. You can specify ``--output_file`` when using ``--combine``.\n"
  },
  {
    "path": "docs/source/conf.py",
    "content": "# Configuration file for the Sphinx documentation builder.\n#\n# This file only contains a selection of the most common options. For a full\n# list see the documentation:\n# https://www.sphinx-doc.org/en/master/usage/configuration.html\n# -- Path setup --------------------------------------------------------------\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#\nimport os\n\nimport sphinx_rtd_theme  # noqa: F401\n\n# import sys\n# sys.path.insert(0, os.path.abspath('.'))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = \"VizTracer\"\ncopyright = \"2020-2024, Tian Gao\"\nauthor = \"Tian Gao\"\n\n# The full version, including alpha/beta/rc tags\nrelease = \"unknown\"\ninit_path = os.path.join(\n    os.path.dirname(__file__), \"..\", \"..\", \"src\", \"viztracer\", \"__init__.py\"\n)\nwith open(init_path) as f:\n    for line in f.readlines():\n        if line.startswith(\"__version__\"):\n            # __version__ = \"0.9\"\n            delim = '\"' if '\"' in line else \"'\"\n            release = line.split(delim)[1]\n            break\n\n\n# -- General configuration ---------------------------------------------------\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\"sphinx_rtd_theme\"]\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = []\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = \"sphinx_rtd_theme\"\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = []\n"
  },
  {
    "path": "docs/source/contact.rst",
    "content": "Contact Us\n==========\n\nIf you have any questions, bug reports or feature requests, please go to `github issue <https://github.com/gaogaotiantian/viztracer/issues>`_"
  },
  {
    "path": "docs/source/custom_event.rst",
    "content": "Custom Event\n============\n\n``_EventBase`` is the base class of ``VizCounter`` and ``VizObject``. It should never be used directly.\n\n.. py:class:: _EventBase(tracer,\\\n            name=None,\\\n            trigger_on_change=True\\\n            include_attributes=[]\\\n            exclude_attributes=[])\n    \n    .. py:attribute:: tracer\n        :type: VizTracer\n\n        an object of ``VizTracer``\n        \n        ``tracer`` can be set to ``None`` so the logging operation will be ``NOP``. Your program will\n        run normally with the instrumented code even when you are not using viztracer. \n    \n    .. py:attribute:: name\n        :type: string\n        :value: None\n\n        name of the event which will show on trace viewer. If not specified, class name will be used\n\n    .. py:attribute:: trigger_on_change\n        :type: boolean\n        :value: True\n\n        whether to trigger log every time a public attribute is changed\n    \n    .. py:attribute:: include_attributes\n        :type: list of string\n        :value: []\n\n        a list of attributes that will trigger the log and be included in the report. If not empty, ``_EventBase`` will behave like whitelist\n\n    .. py:attribute:: exclude_attributes\n        :type: list of string\n        :value: []\n\n        a list of attributes that will not trigger the log and not be included in the report. If not empty, ``_EventBase`` will behave like blacklist\n\n    .. py:method:: log()\n    .. py:method:: _viztracer_log()\n\n        manually log the current attributes\n\n    .. py:method:: config()\n    .. py:method:: _viztracer_set_config(key, value)\n\n        :param str key: ``\"trigger_on_change\"``, ``\"include_attributes\"`` or ``\"exclude_attribtues\"``\n        :param value: the value you want to set on corresponding config\n    \n    .. py:decoratormethod:: triggerlog(when=\"after\")\n\n        :param str when: ``\"after\"``, ``\"before\"`` or ``\"both\"`` to specify when the ``log()`` function is called\n\n        ``triggerlog`` is a decorator for class methods to do auto-log when the method is called. \n\n\n.. py:class:: VizCounter(_EventBase)\n\n    ``VizCounter`` should be used to track a numeric variable through time. You can track CPU usage, memory usage, or any numeric variable you are interested in using ``VizCounter``\n\n    .. code-block:: python\n\n        from viztracer import VizTracer\n        from viztracer.vizcounter import VizCounter\n        tracer = VizTracer()\n        tracer.start()\n        counter = VizCounter(tracer, \"counter name\")\n    \n    Because ``VizCounter`` has ``trigger_on_change`` on by default, any writes to its public attributes(does not start with ``_``) will be automatically logged\n\n    .. code-block:: python\n\n        counter.a = 2\n        counter.b = 1.2\n\n    You can turn ``trigger_on_change`` off and manually decide when to log\n\n    .. code-block:: python\n\n        counter = VizCounter(tracer, \"counter name\", trigger_on_change=False)\n        # OR\n        counter = VizCounter(tracer, \"counter name\")\n        counter.config(\"trigger_on_change\", False)\n\n    .. code-block:: python\n\n        counter.a = 1\n        counter.b = 1\n        # Until here, nothing happens\n        counter.log() # trigger the log\n\n.. py:class:: VizObject(_EventBase)\n\n    ``VizObject`` is almost exactly the same as ``VizCounter``, with the exception that ``VizObject`` can log jsonifiable objects(``dict``, ``list``, ``string``, ``int``, ``float``)\n\n\nInheritance\n-----------\n\nIn practice, you can inherit from ``VizCounter`` or ``VizObject`` class and build your own class so it will be much easier to track the data in your class. Remember you need to do ``__init__`` function of the base class! If your class has a lot of attributes and they are frequently being written to, it is wise to turn off ``trigger_on_change``\n\n.. code-block:: python\n\n    class MyClass(VizObject):\n        def __init__(self, tracer):\n            super().__init__(tracer, \"my name\", trigger_on_change=False)\n\nYou can manually do log by\n\n.. code-block:: python\n\n    obj = MyClass(tracer)\n    obj.log()\n\nor you can decorate your class method with ``triggerlog`` to trigger log on function call\n\n.. code-block:: python\n\n    class MyClass(VizObject):\n        @VizObject.triggerlog\n        def log_on_this_function():\n            #function"
  },
  {
    "path": "docs/source/custom_event_intro.rst",
    "content": "Custom Events\n=============\n\nYou may want to insert custom events to the report while you are tracing the program. \n\nVizTracer supports three kinds of custom events:\n\n* Instant Event\n* Variable Event\n* Duration Event\n\nInstant Event\n-------------\n\nInstant Event is a log at a specific timestamp, showing as an arrow. It's useful\nto log a transient event. You need to give it a ``name`` which is a string, and an\nargument ``args``. They will be displayed in the report\n\n``args`` has to be a jsonifiable object, normally a string, or a combination\nof dict, list, string and number.\n\n``scope`` can be set to ``t`` (default), ``p`` or ``g``, for thread, process and\nglobal.\n\n.. code-block:: python\n\n    tracer.log_instant(f\"Event1\", args=args, scope=\"p\")\n\nVariable Event\n--------------\n\nVariable Event is a way to log a specific variable in your program and display it in the report.\n\nIf the variable you log is a number, VizTracer will use a counter event to display it, otherwise\ninstant event will be used.\n\nA ``name`` should be given for the variable, then the variable itself\n\n.. code-block:: python\n\n    trace.log_var(\"name for the var\", var)\n\n\nMagic Comment\n-------------\n\nYou can use magic comment to log instant events and variable events.\n\nIn this way, you'll have 0 overhead and side effect when you run your program normally, and log the events when you use\nviztracer to trace it\n\n.. code-block:: python\n\n    # !viztracer: log_instant(\"start logging\")\n    a = 3\n    # !viztracer: log_var(\"a\", a)\n\nOr you can use inline magic comment ``# !viztracer: log``, which will log the assigned value if the statement is an assign\nor it will log an instant event indicating this line is executed\n\n.. code-block:: python\n\n    # This will log an instant event with name \"f()\"\n    f()  # !viztracer: log\n\n    # This will log the variable a\n    a = 3  # !viztracer: log\n\nYou can also do conditional log with ``if``\n\n.. code-block:: python\n\n    # This will log the variable a\n    a = 3  # !viztracer: log if a == 3\n    # This has the same effect\n    # !viztracer: log_var(\"a\", a)\n\nYou need ``--magic_comment`` option for ``viztracer`` to trigger the magic comment\n\n.. code-block::\n\n    viztracer --magic_comment your_program.py\n\n.. _duration_event_label:\n\nDuration Event\n--------------\n\nDuration Event is almost the same as function call event that normally being logged automatically,\nwith the only exception that it does not have to be a function.\n\nYou can log any piece of code using duration event and it will look like a function call event\nin your final report.\n\n.. code-block:: python\n    \n    from viztracer import get_tracer\n\n    with get_tracer().log_event(\"my event name\"):\n        # some code running here\n\nYou should use ``log_event`` method of your tracer, which is accessible through ``get_tracer()``\nfunction when you are using CLI, or just pass the tracer if you are using inline.\n\nThis feature is especially helpful when you are using :ref:`log_sparse_label`."
  },
  {
    "path": "docs/source/decorator.rst",
    "content": "Decorator\n=========\n\n.. py:decorator:: ignore_function\n\n    ``@ignore_function`` can tell VizTracer to skip on functions you specified.\n\n    .. code-block:: python\n\n        # This only works when there's a globally registered tracer\n        @ignore_function\n        def function_you_want_to_ignore():\n            # function body\n\n        # You can specify tracer if no global tracer is registered\n        @ignore_function(tracer=tracer)\n        def function_you_want_to_ignore():\n            # function body\n\n.. py:decorator:: trace_and_save(method=None, output_dir=\"./\", **viztracer_kwargs)\n\n    :param function method: trick to make both ``@trace_and_save`` and ``@trace_and_save(**kwargs)`` work\n    :param str output_dir: output directory you want to put your logs in\n    :param dict viztracer_kwargs: kwargs for VizTracer\n\n    ``@trace_and_save`` can be used to trace a certain function and save the result as the program goes.\n    This can be very helpful when you are running a very long program and just want to keep recording\n    something periodically. You won't drain your memory and the parsing/dumping will be done in a new process,\n    which can minimize the performance impact to your main process.\n\n    This decorator will use ``fork`` if the start method is ``\"fork\"``. Otherwise it will use the same process\n    to dump the report.\n\n    You can pass any argument you want to ``VizTracer`` by giving it to the decorator\n\n    .. code-block:: python\n\n        @trace_and_save(output_dir=\"./mylogs\", ignore_c_function=True)\n        def function_you_want_to_trace():\n            # function body\n\n        # this works as well\n        @trace_and_save\n        def function_you_want_to_trace():\n            # function body\n\n.. py:decorator:: log_sparse(func=None, stack_depth=0, dynamic_tracer_check=False)\n\n    You can make VizTracer log only certain functions using ``--log_sparse`` mode.\n\n    :param function func: callable to decorate\n    :param int stack_depth: log the function and its descendants with a limit stack depth\n    :param bool dynamic_tracer_check: run time check of tracer\n\n    .. code-block:: python\n\n        from viztracer import log_sparse\n\n        # @log_sparse will only log this function\n        @log_sparse\n        def function_you_want_to_log():\n            # function body\n\n        # @log_sparse(stack_depth=5) will log this function and its descendants\n        # with a limit stack depth of 5\n        # Nested @log_sparse with stack_depth won't work\n        # (only the outermost function and its stack will be logged)\n        @log_sparse(stack_depth=5)\n        def function_you_want_to_log():\n            # function body\n\n        # Use dynamic_tracer_check=True if you use tracer as a context manager (or with %%viztracer).\n        @log_sparse(dynamic_tracer_check=True)\n        def function_you_want_to_log():\n            # function body\n\n        with VizTracer(log_sparse=True):\n            function_you_want_to_log()\n"
  },
  {
    "path": "docs/source/extra_log.rst",
    "content": "Extra Log\n=========\n\nVizTracer features with many extra log possibilities **without even changing your source code**. \nYou can start VizTracer from command line and use command line arguments to control what\nyou need to log.\n\nMost of the features analyzes the AST generated from the source code and add nodes into it, so\nthe overhead is minimal. However, some features like ``log_func_args`` will introduce a large overhead.\n\nLog Variable\n------------\n\nYou can log any variable using regex matching to the variable name.\nThis is like adding ``print`` after assigning the variable without actually writing the code.\nThe log will appear in the report as an Instant Event, and the variables ``repr`` will be showed\n\n.. code-block:: \n\n    viztracer --log_var <var_name> -- my_script.py\n\n``--`` is added to resolve the ambiguity. Every time a variable matches regex ``<var_name>`` is assigned a value, it will be logged.\nIf you don't know what regex is, simply using the full name of the variable as ``<var_name>`` will allow you to log the variable\n\nLog Number\n----------\n\nSimilar to `Log Variable`_, you can log any variable as a number, which will be logged as Counter Event. \nThe report will visualize the number through time as a separate signal like ``VizCounter`` did. \n\n.. code-block:: \n\n    viztracer --log_number <var_name> -- my_script.py\n\n``--`` is added to resolve the ambiguity. Every time a variable matches regex ``<var_name>`` is assigned a value, it will be logged.\nIf you don't know what regex is, simply using the full name of the variable as ``<var_name>`` will allow you to log the variable\n\nUsing ``--log_number`` on non-numeric variables will raise an exception.\n\nLog Attribute\n-------------\n\nYou can log writes to attributes based on the name of the attribute. This is useful when you want to track an attribute of\nan object, but there are just too many entries to it. It could be ``self.attr_name``, ``obj.attr_name`` or even \n``obj_list[0].attr_name``. With ``log_attr`` you can log the attributes matching the regex as an Instant Event.\n\n.. code-block:: \n\n    viztracer --log_attr <attr_name> -- my_script.py\n\n``--`` is added to resolve the ambiguity. Every time an attribute matches regex ``<attr_name>`` is assigned a value, it will be logged.\nIf you don't know what regex is, simply using the full name of the attribute as ``<attr_name>`` will allow you to log the attribute\n\nLog Function Entry\n------------------\n\nYou can log when a function is called. This is helpful to label the timeline for some crucial function.\nThe log will be displayed as an Instant Event.\n\n.. code-block:: \n\n    viztracer --log_func_entry <func_name> -- my_script.py\n\n``--`` is added to resolve the ambiguity. Every time an function matches regex ``<func_name>`` is called, it will be logged.\nIf you don't know what regex is, simply using the full name of the function as ``<func_name>`` will allow you to log the function \n\nLog Function Execution\n----------------------\n\nYou can log function execution details. VizTracer will record all the assignments in specified functions and display\nthem in the detailed information of the generated report. The log will be showed in function entry's ``args`` list.\n\n.. code-block:: \n\n    viztracer --log_func_exec <func_name> -- my_script.py\n\n``--`` is added to resolve the ambiguity. Every time an function matches regex ``<func_name>`` is called, its execution will be logged.\nIf you don't know what regex is, simply using the full name of the function as ``<func_name>`` will allow you to log the function \n\nLog Audit\n---------\n\nYou can log audit events introduced since python 3.8. The audit events will be logged as instant events.\n\n.. code-block::\n\n    # -- is added to resolve ambiguity\n    viztracer --log_audit import builtins.input -- my_script.py\n\n    # regex is supported\n    viztracer --log_audit os.* -- my_script.py\n\n    # If no argument is given, log every audit\n    viztracer --log_audit -- my_script.py\n\n    # You sometimes need to quote the regex to avoid command line ambiguity\n    # (Linux terminal would think that you are passing files starts with '.')\n    viztracer --log_audit \".*\" -- my_script.py\n\nLog Exception\n-------------\n\nYou can log raised exceptions. All raised exceptions, whether caught or not, will be displayed as an Instant Event\nin the report.\n\n.. code-block:: \n\n    viztracer --log_exception my_script.py\n\nLog Function Arguments \n----------------------\n\nYou can log every function's arguments as ``string``, aka their ``__repr__``. The arguments will be stored in each python function entry \nunder ``args[\"func_args\"]``. You can overwrite the object's ``__repr__`` function to log the object as you need.\n\nYou can enable this feature in command line or using inline. \n\n.. code-block:: \n    \n    viztracer --log_func_args my_script.py\n\n.. code-block:: python\n    \n    tracer = VizTracer(log_func_args=True)\n\n**This feature will introduce a very large overhead(depends on your argument list), so be aware of it**\n\nYou can log additional arbitrary (key, value) pairs for your function entry using ``add_func_args()``. Refer to :doc:`viztracer` for it's usage\n\nLog Function Return Value\n-------------------------\n\nVizTracer can log every function's return value as ``string``, aka it's ``__repr__``. The return value will be stored in each python function entry \nunder ``args[\"return_value\"]``. You can overwrite the object's ``__repr__`` function to log the object as you need.\n\nYou can enable this feature in command line or using inline. \n\n.. code-block:: \n    \n    viztracer --log_func_retval my_script.py\n\n.. code-block:: python\n    \n    tracer = VizTracer(log_func_retval=True)\n\nLog Function Argument And Return Value With Custom Function\n-----------------------------------------------------------\n\nYou can log every function's arguments and return value with a custom function. You can feed your own function to ``VizTracer``\n\n.. code-block:: python\n\n    def myrepr(obj):\n        if isinstance(obj, MyClass):\n            return f\"MyClass({obj.value})\"\n        return repr(obj)\n\n    tracer = VizTracer(log_func_args=True, log_func_repr=myrepr)\n\nFrom the CLI, you can use the ``--log_func_with_objprint`` option to log with objprint\n\n.. code-block::\n\n    viztracer --log_func_args --log_func_with_objprint my_script.py\n\nLog Print\n---------\n\nYou can intercept ``print()`` function and record the data it prints to the report as an Instant Event. This is like doing print debug on timeline.\n\nYou can do this simply by:\n\n.. code-block:: \n\n    viztracer --log_print my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(log_print=True)\n\nLog Garbage Collector\n---------------------\n\nYou can log the optional garbage collector module in Python. Notice that in CPython, most garbage collection is done using \nreference count. The garbage collector module is only responsible for the cycle reference. So this feature is mainly used\nto detect cycle reference collection status, and the time consumed by running the optional garbage collector.\n\nYou can do this simply by:\n\n.. code-block:: \n\n    viztracer --log_gc my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(log_gc=True)\n\nLog Exit data\n-------------\n\nNormally VizTracer only logs the executed code in \"execution phase\", or \"within exec() function\". You can, however, log functions\nin ``atexit`` or other on-exit hooks.\n\n.. code-block::\n\n    viztracer --log_exit my_script.py\n\nWork with ``logging`` module\n----------------------------\n\nVizTracer can work with python builtin ``logging`` module by adding a handler to it. The report will show logging\ndata as Instant Events.\n\n.. code-block:: python\n\n    from viztracer import VizTracer\n    from viztracer.vizlogging import VizLoggingHandler\n\n    tracer = VizTracer()\n    handler = VizLoggingHandler()\n    handler.setTracer(tracer)\n    # A handler is added to logging so logging will dump data to VizTracer\n    logging.basicConfig(handlers = [handler])\n"
  },
  {
    "path": "docs/source/filter.rst",
    "content": "Filter\n======\n\nSometimes, you may have too many data entries and you want to filter some of them out to either improve the performance or make the report clearer.\nVizTracer provides multiple filters for your needs.\n\nMin Duration\n------------\n\nYou can ask VizTracer to only record entries that last longer than a period of time\n\n.. code-block::\n\n    viztracer --min_duration 0.2ms my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(min_duration=200)\n\nNotice that with command line interface, ``viztracer`` expects a string representing a period of time,\nwhich should be in format of ``<val><unit>``. ex. ``0.2ms``, ``300ns``, ``5.5us``. You can also omit\nthe unit and it would be parsed as ``us``, ex. ``0.5`` is the same as ``0.5us``.\n\nBut as an argument to ``VizTracer``, it should be a number of ``us``.\n\nThe default value of ``min_duration`` is ``0``, meaning every function entry is recorded.\n\nMax Stack depth\n---------------\n\nYou can limit maximum stack depth to trace by\n\n.. code-block::\n\n    viztracer --max_stack_depth 10 my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(max_stack_depth=10)\n\nInclude and Exclude Files\n-------------------------\n\nYou can include only certain files/folders to trace by\n\n.. code-block::\n\n    # -- is used to resolve ambiguity\n    viztracer --include_files ./src -- my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(include_files=[\"./src\"])\n\nSimilarly, you can exclude certain files/folders to trace by\n\n.. code-block::\n\n    # -- is used to resolve ambiguity\n    viztracer --exclude_files ./not_interested.py -- my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(exclude_files=[\"./not_interested.py\"])\n\nNotice this will have a significant negative impact on performance,\nas VizTracer needs to check every function entry to see if it's in the list.\n\nIgnore C Function\n-----------------\n\nBy default, VizTracer will trace both python and C functions. You can turn off tracing C functions by\n\n.. code-block::\n\n    viztracer --ignore_c_function my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(ignore_c_function=True)\n\nSince most of the builtin functions(like ``append`` or ``len``) are C functions which are frequently called,\nignoring C functions often improves the overhead and file size significantly.\n\n\nIgnore Non File\n---------------\n\nYou can ask VizTracer not to trace any functions that are not in a valid file(mostly import stuff) using ``ignore_frozen``\n\n.. code-block::\n\n    viztracer --ignore_frozen my_script.py\n\nOR\n\n.. code-block:: python\n\n    tracer = VizTracer(ignore_frozen=True)\n\n\nIgnore Function\n---------------\n\nIt's possible that you want to ignore some arbitrary functions and their descendants. You can do it using ``@ignore_function`` decorator\n\n.. code-block:: python\n\n    from viztracer import ignore_function\n    # This only works when there's a globally registered tracer\n    @ignore_function\n    def some_function():\n        # nothing inside will be traced\n\n.. _log_sparse_label:\n\nLog Sparse\n----------\n\nYou can make VizTracer log only certain functions using ``--log_sparse``. This is helpful when you are only interested in the time spent on\nspecific functions for a big picture on larger projects.\n\nFirst, you need to add decorator ``@log_sparse`` on the function you want to log\n\n.. code-block:: python\n\n    from viztracer import log_sparse\n\n    # @log_sparse will only log this function\n    @log_sparse\n    def function_you_want_to_log():\n        # function body\n\n    # @log_sparse(stack_depth=5) will log this function and its descendants\n    # with a limit stack depth of 5\n    # Nested @log_sparse with stack_depth won't work\n    # (only the outermost function and its stack will be logged)\n    @log_sparse(stack_depth=5)\n    def function_you_want_to_log():\n        # function body\n\n    # Use dynamic_tracer_check=True if you use tracer as a context manager (or with %%viztracer).\n    @log_sparse(dynamic_tracer_check=True)\n    def function_you_want_to_log():\n        # function body\n\n    with VizTracer(log_sparse=True):\n        function_you_want_to_log()\n\nThen just call viztracer with ``--log_sparse``\n\n.. code-block::\n\n    viztracer --log_sparse your_script.py\n\nWhen you are using ``--log_sparse``, due to the nature of the recording, some advanced features may not work with it.\n\nYou can leave ``@log_sparse`` as it is when you are not running the script with VizTracer. It will be like a no-op\n\nIf you want to log a piece of code, rather than a full function, please check :ref:`duration_event_label`. Duration Event\nis compatible with ``log_sparse``\n\nTo use ``@log_sparse`` in conjunction with a context manager, you must define decorating functions within the created\ncontext, or set the `dynamic_tracer_check=True`` argument of decorator. The second option leads to runtime checks,\nso it increases the overhead.\n"
  },
  {
    "path": "docs/source/global_tracer.rst",
    "content": "Global Tracer Object\n====================\n\nSome features in VizTracer require a ``VizTracer`` object so it's helpful to make the tracer object accessible globally.\n\nWhen you are using command line entry ``viztracer your_script.py``, you don't need to worry about it. The tracer will be\nautomatically registered and you can access it from any file. \n\nWhen you instantiate the ``VizTracer`` object like ``tracer = VizTracer()`` in your script, it will be automatically\nregistered globally. It is *not* recommended to have multiple tracer objects in a single script. However, you can turn off\nthe global register by ``tracer = VizTracer(register_global=False)``\n\nTo access the tracer, do\n\n.. code-block:: python\n\n    from viztracer import get_tracer\n    # get_tracer() will return None if no tracer is registered\n    tracer = get_tracer()\n\nWhen you use ``VizLoggingHandler`` or ``VizCounter`` or ``VizObject``, setting their tracer to ``None`` will make \nthe logging a ``NOP``. This will enable you to leave the instrumentation code as it is and run your program both\nregularly and with ``viztracer``\n\nYou can do things like:\n\n.. code-block:: python\n\n    from viztracer import get_tracer\n    from viztracer.vizlogging import VizLoggingHandler\n\n    handler = VizLoggingHandler()\n\n    handler.setTracer(get_tracer())\n\n.. code-block:: python\n\n    from viztracer import get_tracer\n    from viztracer.vizobject import VizObject\n\n    obj = VizObject(get_tracer(), \"my variable\")\n"
  },
  {
    "path": "docs/source/index.rst",
    "content": ".. VizTracer documentation master file, created by\n   sphinx-quickstart on Sun Aug 23 11:51:08 2020.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\n\nWelcome to VizTracer's documentation!\n=====================================\n\nVizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code to help you intuitively understand your code and figure out the time consuming part of your code.\n\nVizTracer can display every function executed and the corresponding entry/exit time from the beginning of the program to the end, which is helpful for programmers to catch sporadic performance issues.\n\n.. toctree::\n   :maxdepth: 1\n   :caption: Getting Started\n   \n   installation\n   basic_usage\n   global_tracer\n   limitations\n\n.. toctree::\n   :maxdepth: 1\n   :caption: Advanced Features\n   \n   filter\n   custom_event_intro\n   extra_log\n   concurrency\n   remote_attach\n   plugins\n\n.. toctree::\n   :maxdepth: 1\n   :caption: API Reference\n   \n   viztracer\n   custom_event\n   decorator\n   viz_plugin\n\n.. toctree::\n   :maxdepth: 1\n   :caption: About\n   \n   sponsor\n   contact\n   license\n\n"
  },
  {
    "path": "docs/source/installation.rst",
    "content": "Installation\n============\n\nVizTracer works with python 3.9+ on Linux/MacOs/Windows. No other dependency. For now, VizTracer only supports CPython.\n\nThe preferred way to install VizTracer is via pip\n\n.. code-block::\n\n    pip install viztracer\n\nYou can also install with conda\n\n.. code-block::\n\n    conda install conda-forge::viztracer\n\n    // Or if you already have conda forge set up\n    conda install viztracer\n\n\nYou can also download the source code and build it yourself.\n\nEven though VizTracer functions without any other packages,\n``orjson`` could improve the performance of json dump/load.\n\n.. code-block::\n\n    pip install orjson\n\nOr you can install *full* version of viztracer:\n\n.. code-block::\n\n    pip install viztracer[full]\n"
  },
  {
    "path": "docs/source/license.rst",
    "content": "License\n=======\n\nCopyright 2020-2024 Tian Gao\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "docs/source/limitations.rst",
    "content": "Limitations\n===========\n\nVizTracer uses ``sys.setprofile()`` (before Python3.12) and ``sys.monitoring`` (after Python3.12) for its profiler capabilities,\nso it will conflict with other profiling tools which also use these mechanisms. Be aware of it when using VizTracer\n\nThe clock resolution and latency on WSL1 are very `bad <https://github.com/microsoft/WSL/issues/77>`_, so if you are using WSL1, you may experience extra overhead.\nThere's no solution for it, except for upgrading to WSL2.\n\nVizTracer, like other python tools that need to execute arbitrary code inside the module,\nmay conflict with code that check for top module or have other structural requirements.\nFor example, ``unittest.main()`` won't work if you use VizTracer from command line. \nThere are ways to avoid it. You can use inline VizTracer, which will always work.\nOr you can specify modules to ``unittest.main()``, which is not a general solution but could work without too much code changes.\n\nIf your code uses ``os._exit`` then VizTracer cannot save data before exiting. Consider using ``sys.exit`` instead.\nSee `this issue <https://github.com/gaogaotiantian/viztracer/issues/340>`_ for details.\n"
  },
  {
    "path": "docs/source/plugins.rst",
    "content": "Plugins\n=======\n\nVizTracer supports third party plugins that comply to the specification of VizTracer.\n\nTo use a plugin, you need to install the plugin first. For example, if you want to use\na plugin named ``vizplugins``\n\n.. code-block::\n\n    pip install vizplugins\n\nThen you need to pass the plugin to ``viztracer`` using ``--plugins``\n\n.. code-block::\n\n    viztracer --plugins vizplugins -- my_script.py\n\nThere could be multiple plugins to use in a package, which are differentiate by modules.\nYou can specify the module where plugin lives(you should refer to the plugin's doc for\ndetailed usage)\n\n.. code-block::\n\n    viztracer --plugins vizplugins.cpu_time -- my_script.py\n\nYou can even pass arguments to the plugin, but you need double quotes to pack them\ntogether.\n\n.. code-block::\n\n    viztracer --plugins \"vizplugins.cpu_time -f 100\" -- my_script.py\n\nYou can also do it inline, just pass the string or the plugin object itself in a list to VizTracer\n\n.. code-block:: python\n\n    tracer = VizTracer(plugins=[\"vizplugins.cpu_time\"])\n    # Or\n    tracer = VizTracer(plugins=[vizplugins.CpuTimePlugin()])\n\n    # To gracefully terminate all plugins, you need to do terminate\n    tracer.terminate()\n\n.. code-block:: python\n\n    # You can use with statement to avoid explicitly terminate\n    with VizTracer(plugins=[\"vizplugins.cpu_time\"]):\n        # Do your stuff here\n\nIf you want to develop your own plugin for VizTracer, take a look at :doc:`viz_plugin`\n"
  },
  {
    "path": "docs/source/remote_attach.rst",
    "content": "Remote Attach\n=============\n\nAttach\n------\n\nVizTracer supports remote attach so you don't need to start the process with VizTracer.\nThis is helpful when you don't want to restart the process to trace it. You can run\nthe process once and forever, and only attach VizTracer when you want to trace it.\nThe process will run normally without performance hit when you are not attaching VizTracer.\n\n**This feature does not support Windows**\n\nTo attach to the process and trace it, you have two ways:\n\n1. You can attach to an arbitrary Python process, as long as ``viztracer`` is importable in that process\n2. You can attach to a Python process that already installed VizTracer\n\nThe **first** way is more flexible - it will inject code into the process to load ``viztracer``. You can even pass\narguments from ``viztracer`` command line.\n\n.. code-block::\n\n    viztracer --attach <pid> -o result.json\n\n**viztracer has to be importable in the attached process otherwise it will raise an exception**\n\nThis means, you need to install ``viztracer`` in the environment(venv, pyenv etc.) of the attached process. You don't have\nto use the ``viztracer`` from the same environment to attach though.\n\n**gdb is required on Linux, and lldb is required on MacOS**\n\nNotice that, if there is already a globally registered ``VizTracer`` object in the attached process,\nthat object will be used for tracing. If it's already running, then attaching won't do anything.\nOtherwise all the arguments will be sent to the attached process to instantiate a ``VizTracer`` object.\n\nBy default, you need to Ctrl+C out of viztracer to save the report. Be aware that it is\nthe attached process rather than attaching process(viztracer) that is saving the report,\nso it's the attached process's resource that is being spent.\n\nYou can also trace for a period of time using ``-t``\n\n.. code-block::\n\n    viztracer --attach <pid> -t <seconds>\n\nEven though this looks decent, there are some dark magic going under the rug and you may want to do\nsomething cleaner, which brings up the **second** way - pre-install viztracer in the process you want to profile.\nAnother good thing about this way is that it's thread-aware. Even if you attach after spawning threads,\nyou can still get profile data from the other threads.\n\n.. code-block:: python\n\n    from viztracer import VizTracer\n    tracer = VizTracer()\n    tracer.install()\n\n``tracer.install()`` will basically add handlers for ``SIGUSR1`` and ``SIGUSR2`` which\nare only available on Unix. This also requires the program not to use these two signals.\n\nThen when you are running this process, you can attach to it with VizTracer, using it's pid\n\n.. code-block::\n\n    viztracer --attach_installed <pid>\n    \nIf you need other options, you should specify them in ``VizTracer`` instance in attached process.\n\nUninstall\n---------\n\nThere could be time when you want to \"uninstall\" VizTracer from a process. For example, for some\nreason, the attach process failed and VizTracer is left on in the process. You can do that\nwith:\n\n.. code-block::\n\n    viztracer --uninstall <pid>\n"
  },
  {
    "path": "docs/source/sponsor.rst",
    "content": "Sponsor\n=======\n\nIf you find VizTracer useful and would like to support its development, please consider\n`sponsoring <https://github.com/sponsors/gaogaotiantian>`_ the project.\nYour support will help ensure that VizTracer continues to improve and evolve.\n\nThank you to our current sponsors:\n\n.. raw:: html\n\n    <a href=\"https://www.testmuai.com/?utm_medium=sponsor&utm_source=viztracer\" target=\"_blank\">\n        <img src=\"https://assets.testmu.ai/resources/images/logos/black-logo.png\" style=\"vertical-align: middle;\" width=\"200\" />\n    </a>\n"
  },
  {
    "path": "docs/source/viz_plugin.rst",
    "content": "VizPlugin\n=========\n\nIn this doc, we will show how to build your own plugin for VizTracer.\n\nEvery plugin should inherit ``VizPluginBase`` from ``viztracer.vizplugin``\n\n.. py:class:: VizPluginBase(self)\n\n    .. py:method:: support_version(self)\n\n        :return: the string for the latest version of viztracer supported to have API compatibility\n        :rtype: dict\n\n        You must have this method overloaded and return the version, otherwise viztracer\n        will raise an exception\n\n        .. code-block:: python\n\n            def support_version(self):\n                return \"0.11.0\"\n\n    .. py:method:: message(self, m_type, payload)\n\n        :param str m_type: type of message\n        :param dict payload: a very flexible payload with the message\n        :return: the corresponding return value. Could be an action, or a respond.\n        :rtype: dict\n\n        As of now, ``message()`` only supports two kinds of ``m_type`` - ``\"event\"`` and ``\"command\"``.\n\n        ``\"event\"`` has a ``payload`` that has key ``\"when\"``, to indicate when the event happens. \n\n        ``\"when\"`` could be ``initialize``, ``pre-start``, ``post-stop`` or ``pre-save``.\n\n        When ``\"event\"`` type message is received, the plugin can return an action, with key ``\"action\"`` set to the\n        action it needs. For now the only one supported is ``\"handle_data\"``, with which you also\n        needs to provide a data handler ``\"handler\"``\n\n        return ``{}`` if you don't want to do anything\n\n        ``\"command\"`` has a payload that has key ``\"cmd_type\"``, to indicate what VizTracer expects the plugin to do.\n\n        ``\"cmd_type\"`` could only be ``\"terminate\"`` for now. ``\"terminate\"`` command is guaranteed before viztracer exits\n        when commandline interface is used. However, if you are using viztracer inline, you will have to explicitly run\n        ``tracer.terminate()`` unless you are using ``with VizTracer()``.\n\n        When ``\"command\"`` type message is received, the plugin has to return a dict like ``{\"success\": True}`` to \n        inform VizTracer that the plugin received the command and did what it asked.\n\n        .. code-block::python\n\n            def message(self, m_type, payload):\n                if m_type == \"event\":\n                    if payload[\"when\"] == \"pre-start\":\n                        self.do_something()\n                    elif payload[\"when\"] == \"pre-save\":\n                        return({\"action\":\"handle_data\", \"handler\", self.handler})\n                elif m_type == \"command\":\n                    if payload[\"cmd_type\"] == \"terminate\":\n                        # release all the resources here\n                        return({\"success\": True})\n                \n                return {}\n\nPossible Actions\n----------------\n\nThis sections lists all the possible actions you can take after you received an event. You should\nreturn ``{\"action\": \"the action name\" ...}`` with specific payload for each action\n\n``\"handle_data\"``\n\nWhen you want to modify the data, which is a common way to change the result viztracer has, you need\nto use ``\"handle_data\"`` action.\n\nYou should return ``{\"action\": \"handle_data\", \"handler\": my_handler}`` where ``my_handler`` should be\na function with a prototype ``def my_handler(data)``. VizTracer will call this handler to modify the\noriginal data before it saves the report\n\nMake Your Plugin Accessible\n---------------------------\n\nYou will also need a magic function defined to enable VizTracer to load your plugins from command line.\nThe function has to be named ```get_vizplugin(arg)```, which will return an instance of your plugin object\nbased on the arg given when it's called. You also need to put this function in the module that you want \nyour use to use on command line.\n\nFor example, if I want my user to use my plugin as ``viztracer --plugins vizplugins -- my_script.py``, I\nshould put ``get_vizplugin()`` function in ``vizplugins/__init__.py``. Or if I want them to use as \n``viztracer --plugins vizplugins.cpu_usage -- my_script.py``, I should put the function in\n``vizplugins/cpu_usage.py``\n\nBe aware that **arg is an unparsed string** like \"vizplugins.cpu_time f 100\". You can split it yourself\nand parse it the way you like. Or you can specify something special for your own plugin\n"
  },
  {
    "path": "docs/source/viztracer.rst",
    "content": "VizTracer\n=========\n\n.. py:class:: VizTracer(self,\\\n                 tracer_entries=1000000,\\\n                 verbose=1,\\\n                 max_stack_depth=-1,\\\n                 include_files=None,\\\n                 exclude_files=None,\\\n                 ignore_c_function=False,\\\n                 ignore_frozen=False,\\\n                 log_func_retval=False,\\\n                 log_func_args=False,\\\n                 log_func_repr=None,\\\n                 log_func_with_objprint=None,\\\n                 log_print=False,\\\n                 log_gc=False,\\\n                 log_sparse=False,\\\n                 log_async=False,\\\n                 log_torch=False,\\\n                 log_audit=False,\\\n                 pid_suffix=False,\\\n                 file_info=True,\\\n                 register_global=True,\\\n                 trace_self=False,\\\n                 min_duration=0,\\\n                 minimize_memory=False,\\\n                 dump_raw=False,\\\n                 sanitize_function_name=False,\\\n                 process_name=None,\\\n                 output_file=\"result.json\",\\\n                 plugins=None)\n\n    .. py:attribute:: tracer_entries\n        :type: int\n        :value: 1000000\n\n        Size of circular buffer. The user can only specify this value when instantiate ``VizTracer`` object or if they use command line\n\n        Please be aware that a larger number of entries also means more disk space, RAM usage and loading time. Be familiar with your computer's limit.\n\n        ``tracer_entries`` means how many entries ``VizTracer`` can store. It's not a byte number.\n\n        .. code-block::\n\n            viztracer --tracer_entries 500000\n\n    .. py:attribute:: verbose\n        :type: int\n        :value: 1\n\n        Verbose level of VizTracer. Can be set to ``0`` so it won't print anything while tracing \n\n        Setting it to ``0`` is equivalent to \n\n        .. code-block::\n\n            viztracer --quiet\n\n    .. py:attribute:: max_stack_depth\n        :type: int\n        :value: -1\n\n        Specify the maximum stack depth VizTracer will trace. ``-1`` means infinite.\n\n        Equivalent to \n\n        .. code-block::\n\n            viztracer --max_stack_depth <val>\n    \n    .. py:attribute:: include_files\n        :type: Optional[list[str]]\n        :value: None\n\n        Specify the files or folders that VizTracer will trace. If it's not empty, VizTracer will function in whitelist mode, any files/folders not included will be ignored.\n        \n        Because converting code filename in tracer is too expensive, we will only compare the input and its absolute path against code filename, which could be a relative path. That means, if you run your program using relative path, but gives the ``include_files`` an absolute path, it will not be able to detect.\n\n        Can't be set with ``exclude_files``\n\n        Equivalent to \n\n        .. code-block::\n\n            viztracer --include_files file1[ file2 [file3 ...]]\n\n        **NOTICE**\n\n        In command line, ``--include_files`` takes multiple arguments, which will be ambiguous about the command that actually needs to run, so you need to explicitly specify command using ``--``\n\n        .. code-block::\n\n            viztracer --include_files file1 file2 -- my_scrpit.py\n\n    .. py:attribute:: exclude_files\n        :type: Optional[list[str]]\n        :value: None\n\n        Specify the files or folders that VizTracer will not trace. If it's not empty, VizTracer will function in blacklist mode, any files/folders not included will be ignored.\n\n        Because converting code filename in tracer is too expensive, we will only compare the input and its absolute path against code filename, which could be a relative path. That means, if you run your program using relative path, but gives the ``exclude_files`` an absolute path, it will not be able to detect.\n\n        Can't be set with ``include_files``\n\n        Equivalent to \n\n        .. code-block::\n\n            viztracer --exclude_files file1[ file2 [file3 ...]]\n        \n        **NOTICE**\n\n        In command line, ``--exclude_files`` takes multiple arguments, which will be ambiguous about the command that actually needs to run, so you need to explicitly specify command using ``--``\n\n        .. code-block::\n\n            viztracer --exclude_files file1 file2 -- my_scrpit.py\n\n    .. py:attribute:: ignore_c_function\n        :type: bool\n        :value: False\n\n        Whether trace c function\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --ignore_c_function\n\n    .. py:attribute:: ignore_frozen\n        :type: bool\n        :value: False\n\n        Whether trace functions from frozen functions(mostly import stuff)\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --ignore_frozen\n\n    .. py:attribute:: log_func_retval \n        :type: bool\n        :value: False\n\n        Whether log the return value of the function as string in report entry\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_func_retval\n    \n    .. py:attribute:: log_func_args \n        :type: bool\n        :value: False\n\n        Whether log the arguments of the function as string in report entry\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_func_args\n\n    .. py:attribute:: log_func_repr\n        :type: Optional[Callable[..., str]]\n        :value: None\n\n        A custom repr function to log the function arguments and return value. The function should take\n        a single argument and return a string.\n\n    .. py:attribute:: log_func_with_objprint\n        :type: bool\n        :value: False\n\n        Whether log the arguments and return value of the function with ``objprint``.\n        This attribute can't be ``True`` if ``log_func_repr`` is given.\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_func_with_objprint\n    \n    .. py:attribute:: log_print \n        :type: bool\n        :value: False\n\n        Whether replace the ``print`` function to log in VizTracer report\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_print\n\n    .. py:attribute:: log_gc \n        :type: bool\n        :value: False\n\n        Whether log garbage collector\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_gc\n\n    .. py:attribute:: log_sparse\n        :type: bool\n        :value: False\n\n        Whether initialize the tracer in ``log_sparse`` mode. In this mode, the tracer\n        will start as a context.\n\n        This option should be used when you are using inline tracing with ``@log_sparse``\n\n    .. py:attribute:: log_async\n        :type: bool\n        :value: False\n\n        Whether log async tasks as separate \"thread\" in vizviewer\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_async\n\n    .. py:attribute:: log_torch\n        :type: bool\n        :value: False\n\n        Whether log native torch events\n\n        Setting it to ``True`` is equivalent to \n\n        .. code-block::\n\n            viztracer --log_torch\n\n    .. py:attribute:: log_audit\n        :type: Optional[Sequence[str]]\n        :value: None\n\n        The audit events to log.\n\n        Equivalent to\n\n        .. code-block::\n\n            viztracer --log_audit event1[ event2 [event3 ...]]\n\n    .. py:attribute:: pid_suffix\n        :type: bool\n        :value: False\n\n        Whether append pid to the output file name.\n\n        Equivalent to\n\n        .. code-block::\n\n            viztracer --pid_suffix\n\n    .. py:attribute:: file_info\n        :type: bool\n        :value: False\n\n        Whether save the file_info in the report.\n    \n    .. py:attribute:: register_global\n        :type: bool\n        :value: True\n        \n        whether register the tracer globally, so every file can use ``get_tracer()`` to get this tracer. When command line\n        entry is used, the tracer will be automatically registered. When ``VizTracer()`` is manually instantiated, it will\n        be registered as well by default. \n        \n        Some functions may require a globally registered tracer to work.\n\n        This attribute will only be effective when the object is initialized:\n\n        .. code-block:: python\n\n            tracer = VizTracer(register_global=False)\n\n    .. py:attribute:: trace_self\n        :type: bool\n        :value: False\n        \n        whether trace the function calls of the tracer itself.\n\n    .. py:attribute:: min_duration\n        :type: float\n        :value: 0\n\n        Minimum duration of a function to be logged. The value is in unit of ``us``.\n\n    .. py:attribute:: minimize_memory\n        :type: bool\n        :value: False\n\n        Whether make effort to minimize the RAM usage when dumping the data.\n\n    .. py:attribute:: dump_raw\n        :type: bool\n        :value: False\n\n        Whether use the raw dump for json report. This is usually faster because it\n        dumps directly in C.\n\n    .. py:attribute:: sanitize_function_name\n        :type: bool\n        :value: False\n\n        Whether check the function name before dump. This is useful for dymanically\n        generated PyMethodDef.\n\n    .. py:attribute:: process_name\n        :type: Optional[str]\n        :value: None\n\n        The process name to display in the report.\n\n    .. py:attribute:: output_file\n        :type: string\n        :value: \"result.json\"\n\n        Default file path to write report\n\n        Equivalent to \n\n        .. code-block::\n\n            viztracer -o <filepath>\n\n    .. py:attribute:: plugins\n        :type: Optional[Sequence[Union[VizPluginBase, str]]]\n        :value: None\n\n        List of plugins to use.\n    \n    .. py:method:: run(command, output_file=None)\n\n        run ``command`` and save report to ``output_file``\n    \n    .. py:method:: save(output_file=None, file_info=None, verbose=None)\n\n        parse data and save report to ``output_file``. If ``output_file`` is ``None``, save to default path.\n    \n    .. py:method:: start()\n\n        start tracing\n\n    .. py:method:: stop(stop_option=None)\n\n        stop tracing. The only valid value for ``stop_option`` is ``\"flush_as_finish\"``. When\n        defined, VizTracer will log all the unfinished functions.\n\n    .. py:method:: clear()\n\n        clear all the collected data\n\n    .. py:method:: parse()\n\n        parse the data collected, return number of total entries\n\n    .. py:method:: enable_thread_tracing()\n\n        Not needed on Python3.12+.\n\n        enable tracing in the current thread, useful when you use multi-thread without builtin threading module\n\n    .. py:method:: add_variable(name, var, event=\"instant\")\n\n        :param str name: name of this variable\n        :param object var: variable to be added\n        :param str event: one of ``instant`` or ``counter``\n\n        Add variable to the report. ``event`` determines the logging type.\n\n    .. py:method:: add_instant(name, args, scope=\"g\")\n        \n        :param str name: name of this instant event\n        :param object args: the arguments of this instant event\n        :param str scope: one of ``\"g\"``, ``\"p\"`` or ``\"t\"`` for global, process or thread level event\n\n        Add instant event to the report.\n\n    .. py:method:: add_counter(name, args)\n        \n        :param str name: name of this counter event\n        :param object args: the arguments of this counter event\n\n        Add counter event to the report.\n\n    .. py:method:: add_raw(raw)\n        \n        :param object raw: the raw chrome trace event to add to the report\n\n        Add a raw event to the report.\n\n    .. py:method:: add_func_args(name, key, value)\n        \n        :param str key: key to display in the report\n        :param object value: a jsonifiable object\n\n        This method allows you to attach args to the current function, which will show in the report when you click on the function \n\n    .. py:method:: log_event(event_name)\n\n        :param str event_name: name of this event that will appear in the result\n        :return: VizEvent object that should only be used with ``with`` statement\n        :rtype: VizEvent\n\n        .. code-block:: python\n\n            with get_tracer().log_event(\"event name\"):\n                # some code here\n\n    .. py:method:: set_afterfork(callback, *args, **kwargs)\n\n        :param callable callback: the callback function after fork, should take a ``VizTracer`` object as the first argument\n        :param list args: positional arguments to ``callback``\n        :param dict kwargs: keyword arguments to ``callback``\n\n        This method will register a callback function after the process is forked. If you want different behavior on child\n        processes with ``multiprocessing``, you can utilize this method\n\n        Notice that the ``callback`` argument should be a ``callable`` that takes a ``VizTracer`` object as the first argument\n\n        .. code-block:: python\n\n            from viztracer import get_tracer\n\n            def afterfork_callback(tracer):\n                tracer.max_stack_depth = 10\n            \n            get_tracer().set_afterfork(afterfork_callback)\n\n    .. py:method:: getts()\n\n        :return: current timestamp in us\n        :rtype: int\n\n        Get current timestamp in us\n\n    .. py:method:: get_base_time()\n\n        :return: the base time of the tracer in ns\n        :rtype: int\n\n        Get the base time of the tracer\n"
  },
  {
    "path": "example/generate_examples.py",
    "content": "import os\nimport subprocess\n\n\ndef generate_by_script(script):\n    file_path = os.path.join(os.path.dirname(__file__), \"src\", script)\n    subprocess.run([\"python\", file_path])\n\n\ndef generate_by_vt(script, options):\n    file_path = os.path.join(os.path.dirname(__file__), \"src\", script)\n    output_file = os.path.join(\n        os.path.dirname(__file__), \"json\", script.replace(\"py\", \"json\")\n    )\n    subprocess.run(\n        [\"viztracer\"] + options + [\"-o\", output_file, \"--file_info\", file_path]\n    )\n\n\nif __name__ == \"__main__\":\n    vt_options = {\n        \"mcts_game\": [\"--log_gc\"],\n        \"logging_integration\": [\"--include_files\", os.path.dirname(__file__)],\n        \"multi_process_pool\": [\"--log_multiprocess\"],\n        \"async_simple\": [\"--log_async\"],\n    }\n    for script in os.listdir(os.path.join(os.path.dirname(__file__), \"src\")):\n        if script.split(\".\")[0] in vt_options:\n            options = vt_options[script.split(\".\")[0]]\n            generate_by_vt(script, options)\n        elif script.endswith(\".py\"):\n            generate_by_script(script)\n"
  },
  {
    "path": "example/json/async_simple.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222311, \"tid\": 222311, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 222311, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533209.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.839, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533212.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.741, \"name\": \"Runner.__init__ (/usr/lib/python3.12/asyncio/runners.py:48)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533221.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"str.rpartition\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533220.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533223.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533223.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533223.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.053, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533226.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.322, \"name\": \"BaseDefaultEventLoopPolicy.__init__ (/usr/lib/python3.12/asyncio/events.py:671)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533225.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.744, \"name\": \"_UnixDefaultEventLoopPolicy.__init__ (/usr/lib/python3.12/asyncio/unix_events.py:1446)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533230.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533218.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.68, \"name\": \"_init_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:775)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533218.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.426, \"name\": \"get_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:783)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533238.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.55, \"name\": \"time.get_clock_info\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533250.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533250.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"str.encode\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533250.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.986, \"name\": \"_createenviron.<locals>.encode (<frozen os>:762)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533249.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.316, \"name\": \"_Environ.__getitem__ (<frozen os>:680)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533246.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.298, \"name\": \"Mapping.get (<frozen _collections_abc>:804)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533244.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.972, \"name\": \"_is_debug_mode (/usr/lib/python3.12/asyncio/coroutines.py:10)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533254.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533253.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.211, \"name\": \"BaseEventLoop.set_debug (/usr/lib/python3.12/asyncio/base_events.py:2008)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533257.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.281, \"name\": \"WeakSet.__init__ (/usr/lib/python3.12/_weakrefset.py:37)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533234.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.042, \"name\": \"BaseEventLoop.__init__ (/usr/lib/python3.12/asyncio/base_events.py:411)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533264.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533263.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.465, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533262.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.259, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533275.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"_thread.RLock.acquire\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533274.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.17, \"name\": \"_acquireLock (/usr/lib/python3.12/logging/__init__.py:234)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533276.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"Manager.disable (/usr/lib/python3.12/logging/__init__.py:1369)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533278.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.04, \"name\": \"Logger.getEffectiveLevel (/usr/lib/python3.12/logging/__init__.py:1776)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533280.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_thread.RLock.release\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533279.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"_releaseLock (/usr/lib/python3.12/logging/__init__.py:243)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533272.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.349, \"name\": \"Logger.isEnabledFor (/usr/lib/python3.12/logging/__init__.py:1790)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533271.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.658, \"name\": \"Logger.debug (/usr/lib/python3.12/logging/__init__.py:1517)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533283.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.351, \"name\": \"_socket.socketpair\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533291.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_socket.socket.detach\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533292.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.416, \"name\": \"socket.__init__ (/usr/lib/python3.12/socket.py:221)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533296.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_socket.socket.detach\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533296.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"socket.__init__ (/usr/lib/python3.12/socket.py:221)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533282.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.803, \"name\": \"socketpair (/usr/lib/python3.12/socket.py:596)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533298.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"socket.setblocking\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533299.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"socket.setblocking\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533300.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"socket.fileno\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533302.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533304.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.056, \"name\": \"_contextvars.copy_context\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533307.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533303.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.598, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533310.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_BaseSelectorImpl.get_map (/usr/lib/python3.12/selectors.py:272)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533312.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533312.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533311.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.849, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533314.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"str.format\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533310.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.319, \"name\": \"_SelectorMapping.__getitem__ (/usr/lib/python3.12/selectors.py:69)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533315.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"str.format\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533309.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.446, \"name\": \"BaseSelector.get_key (/usr/lib/python3.12/selectors.py:180)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533318.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533318.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533318.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533320.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"type.__new__\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533320.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533318.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.529, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533322.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.102, \"name\": \"select.epoll.register\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533317.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.869, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533301.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.775, \"name\": \"BaseSelectorEventLoop._add_reader (/usr/lib/python3.12/asyncio/selector_events.py:278)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533281.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.063, \"name\": \"BaseSelectorEventLoop._make_self_pipe (/usr/lib/python3.12/asyncio/selector_events.py:118)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533330.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533331.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"dict.items\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533331.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533329.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.702, \"name\": \"WeakValueDictionary.update (/usr/lib/python3.12/weakref.py:289)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533328.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.892, \"name\": \"WeakValueDictionary.__init__ (/usr/lib/python3.12/weakref.py:104)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533233.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.07, \"name\": \"BaseSelectorEventLoop.__init__ (/usr/lib/python3.12/asyncio/selector_events.py:59)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533231.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 100.696, \"name\": \"_UnixSelectorEventLoop.__init__ (/usr/lib/python3.12/asyncio/unix_events.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533230.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.789, \"name\": \"BaseDefaultEventLoopPolicy.new_event_loop (/usr/lib/python3.12/asyncio/events.py:714)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533217.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 115.402, \"name\": \"new_event_loop (/usr/lib/python3.12/asyncio/events.py:821)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533333.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"get_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:783)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533335.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533335.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.041, \"name\": \"BaseDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/events.py:707)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533334.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.893, \"name\": \"_UnixDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/unix_events.py:1458)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533333.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.775, \"name\": \"set_event_loop (/usr/lib/python3.12/asyncio/events.py:816)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533336.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_contextvars.copy_context\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533216.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 120.799, \"name\": \"Runner._lazy_init (/usr/lib/python3.12/asyncio/runners.py:131)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533215.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 121.937, \"name\": \"Runner.__enter__ (/usr/lib/python3.12/asyncio/runners.py:57)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533340.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533340.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533341.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533339.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.644, \"name\": \"iscoroutine (/usr/lib/python3.12/asyncio/coroutines.py:32)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533341.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533342.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"Runner._lazy_init (/usr/lib/python3.12/asyncio/runners.py:131)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533344.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533347.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533348.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533350.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533350.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533352.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533349.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.956, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533348.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.005, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533354.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533353.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533343.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.534, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533356.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_thread.get_ident\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533355.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533356.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"main_thread (/usr/lib/python3.12/threading.py:1629)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533359.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_signal.getsignal\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533360.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533360.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_int_to_enum (/usr/lib/python3.12/signal.py:24)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533358.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.155, \"name\": \"getsignal (/usr/lib/python3.12/signal.py:62)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533362.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"_enum_to_int (/usr/lib/python3.12/signal.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533363.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.385, \"name\": \"_enum_to_int (/usr/lib/python3.12/signal.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533365.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.636, \"name\": \"_signal.signal\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533367.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533367.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_int_to_enum (/usr/lib/python3.12/signal.py:24)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533362.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.583, \"name\": \"signal (/usr/lib/python3.12/signal.py:56)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533370.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533371.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533371.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533371.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533373.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533372.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.283, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533375.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533375.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533377.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533376.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.947, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533375.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.461, \"name\": \"ensure_future (/usr/lib/python3.12/asyncio/tasks.py:670)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533378.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_asyncio.Task.add_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533379.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533379.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533380.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533379.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533381.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533381.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"sys.get_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533382.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_thread.get_ident\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533383.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.204, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533385.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533388.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533390.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533390.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533391.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.288, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533390.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.708, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533393.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533394.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533394.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.618, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533396.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533397.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533404.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533404.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533405.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533406.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533406.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533406.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533407.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533406.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.344, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533405.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.903, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533408.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533408.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533404.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.332, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533409.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_set_task_name (/usr/lib/python3.12/asyncio/tasks.py:70)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533403.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.111, \"name\": \"create_task (/usr/lib/python3.12/asyncio/tasks.py:412)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533410.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533410.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533412.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533411.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.11, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533412.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533412.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533410.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.338, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533413.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_set_task_name (/usr/lib/python3.12/asyncio/tasks.py:70)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533410.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.968, \"name\": \"create_task (/usr/lib/python3.12/asyncio/tasks.py:412)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533413.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533413.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533416.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533415.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.844, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533416.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533416.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533413.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.978, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533416.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_set_task_name (/usr/lib/python3.12/asyncio/tasks.py:70)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533413.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.418, \"name\": \"create_task (/usr/lib/python3.12/asyncio/tasks.py:412)\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995533402.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.984, \"name\": \"main (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:8)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533400.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.516, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533398.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.003, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533388.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.119, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533420.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533420.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533420.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533421.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533420.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.262, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533422.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533422.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533422.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533423.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533423.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533426.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533428.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533427.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.078, \"name\": \"BaseEventLoop.create_future (/usr/lib/python3.12/asyncio/base_events.py:447)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533429.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533429.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533431.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533433.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_contextvars.copy_context\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533434.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533433.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.192, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533432.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.163, \"name\": \"TimerHandle.__init__ (/usr/lib/python3.12/asyncio/events.py:111)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533435.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_heapq.heappush\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533431.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.464, \"name\": \"BaseEventLoop.call_at (/usr/lib/python3.12/asyncio/base_events.py:767)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533429.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.62, \"name\": \"BaseEventLoop.call_later (/usr/lib/python3.12/asyncio/base_events.py:743)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533426.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.087, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995533424.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.566, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533424.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.422, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533423.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.872, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533437.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533439.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533439.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533439.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"BaseEventLoop.create_future (/usr/lib/python3.12/asyncio/base_events.py:447)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533440.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533440.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533441.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533442.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_contextvars.copy_context\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533442.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533442.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.625, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533441.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.206, \"name\": \"TimerHandle.__init__ (/usr/lib/python3.12/asyncio/events.py:111)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533444.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533443.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"TimerHandle.__lt__ (/usr/lib/python3.12/asyncio/events.py:127)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533443.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.216, \"name\": \"_heapq.heappush\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533441.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.423, \"name\": \"BaseEventLoop.call_at (/usr/lib/python3.12/asyncio/base_events.py:767)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533440.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.43, \"name\": \"BaseEventLoop.call_later (/usr/lib/python3.12/asyncio/base_events.py:743)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533439.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.907, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995533438.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.3, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533438.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.618, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533438.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.891, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533446.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533447.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_asyncio.get_running_loop\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533447.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533447.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"BaseEventLoop.create_future (/usr/lib/python3.12/asyncio/base_events.py:447)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533448.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533448.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533448.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533449.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_contextvars.copy_context\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533449.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533449.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533449.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.788, \"name\": \"TimerHandle.__init__ (/usr/lib/python3.12/asyncio/events.py:111)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533451.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533451.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"TimerHandle.__lt__ (/usr/lib/python3.12/asyncio/events.py:127)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533451.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.634, \"name\": \"_heapq.heappush\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533448.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.148, \"name\": \"BaseEventLoop.call_at (/usr/lib/python3.12/asyncio/base_events.py:767)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533448.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.974, \"name\": \"BaseEventLoop.call_later (/usr/lib/python3.12/asyncio/base_events.py:743)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533447.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.993, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995533446.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.284, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533446.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.513, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533446.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.691, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533419.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.674, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533452.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533453.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533453.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533454.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533454.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"builtins.min\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533455.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.021, \"name\": \"math.ceil\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533458.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533458.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533458.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10256.366, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533455.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10266.535, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543731.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543737.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.045, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543735.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.52, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543762.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.19, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543761.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.02, \"name\": \"TimerHandle.__lt__ (/usr/lib/python3.12/asyncio/events.py:127)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543755.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.497, \"name\": \"_heapq.heappop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543771.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.555, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543778.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_heapq.heappop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543781.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543783.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"_heapq.heappop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543784.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543786.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.167, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543791.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543855.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.388, \"name\": \"_asyncio.Future.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543867.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543877.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543875.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.631, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543883.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.23, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543871.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.648, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543866.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.578, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543859.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.424, \"name\": \"_asyncio.Future.set_result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543853.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.936, \"name\": \"_set_result_unless_cancelled (/usr/lib/python3.12/asyncio/futures.py:311)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543845.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.595, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543835.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.889, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543893.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543901.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_asyncio.Future.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543904.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543908.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543907.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.996, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543910.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543906.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.655, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543904.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.296, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543902.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.924, \"name\": \"_asyncio.Future.set_result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543899.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.53, \"name\": \"_set_result_unless_cancelled (/usr/lib/python3.12/asyncio/futures.py:311)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543899.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.496, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543896.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.447, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543914.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543919.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"_asyncio.Future.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543922.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543925.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543924.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.531, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543927.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543923.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.975, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543921.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.069, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543920.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.766, \"name\": \"_asyncio.Future.set_result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543918.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.231, \"name\": \"_set_result_unless_cancelled (/usr/lib/python3.12/asyncio/futures.py:311)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543917.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.159, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543916.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.144, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533452.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10478.542, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543936.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543943.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.301, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543945.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.954, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543953.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.31, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543940.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.987, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543968.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.86, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543972.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.137, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543971.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.297, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543975.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543978.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544149.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.937, \"name\": \"BaseEventLoop._timer_handle_cancelled (/usr/lib/python3.12/asyncio/base_events.py:1905)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544169.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.617, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544165.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.28, \"name\": \"Handle.cancel (/usr/lib/python3.12/asyncio/events.py:72)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544141.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.401, \"name\": \"TimerHandle.cancel (/usr/lib/python3.12/asyncio/events.py:155)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544007.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 167.013, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8358400, \"ts\": 81995544005.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 173.389, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544183.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544190.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544188.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.262, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544194.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.188, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544186.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.759, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544182.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.523, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543995.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 204.177, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543992.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 209.109, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544202.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.876, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544223.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.846, \"name\": \"BaseEventLoop._timer_handle_cancelled (/usr/lib/python3.12/asyncio/base_events.py:1905)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544230.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544227.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.94, \"name\": \"Handle.cancel (/usr/lib/python3.12/asyncio/events.py:72)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544220.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.977, \"name\": \"TimerHandle.cancel (/usr/lib/python3.12/asyncio/events.py:155)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544216.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.66, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8358976, \"ts\": 81995544215.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.108, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544210.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.939, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544207.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.8, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544238.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544246.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"BaseEventLoop._timer_handle_cancelled (/usr/lib/python3.12/asyncio/base_events.py:1905)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544249.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544248.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.153, \"name\": \"Handle.cancel (/usr/lib/python3.12/asyncio/events.py:72)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544245.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.546, \"name\": \"TimerHandle.cancel (/usr/lib/python3.12/asyncio/events.py:155)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544243.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.721, \"name\": \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\"}, {\"pid\": 222311, \"tid\": 8359936, \"ts\": 81995544243.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.148, \"name\": \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544241.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.586, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544239.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.113, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995543934.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 319.719, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544258.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544262.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544263.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.449, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544267.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.731, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544261.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.109, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544275.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544278.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544278.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.936, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544281.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544284.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8357440, \"ts\": 81995544290.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.936, \"name\": \"main (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:8)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544297.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544301.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544299.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.039, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544312.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544298.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.358, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544296.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.182, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544288.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.508, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544286.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.415, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544257.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.312, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544319.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544321.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544321.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.267, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544323.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.698, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544320.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.132, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544326.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544328.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544328.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.06, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544329.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544331.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544340.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.607, \"name\": \"_asyncio.Task.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544343.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_asyncio.Task.exception\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544347.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.744, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544357.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544356.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.864, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544362.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.794, \"name\": \"BaseEventLoop.stop (/usr/lib/python3.12/asyncio/base_events.py:689)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544339.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.189, \"name\": \"_run_until_complete_cb (/usr/lib/python3.12/asyncio/base_events.py:182)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544334.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.808, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544333.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.317, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544318.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.714, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544370.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.433, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544376.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.057, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544385.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.156, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533379.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11040.279, \"name\": \"BaseEventLoop.run_forever (/usr/lib/python3.12/asyncio/base_events.py:627)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544424.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.708, \"name\": \"_asyncio.Task.remove_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544427.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544430.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.635, \"name\": \"_asyncio.Task.result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533370.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11061.203, \"name\": \"BaseEventLoop.run_until_complete (/usr/lib/python3.12/asyncio/base_events.py:651)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544438.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_signal.getsignal\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544442.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.377, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544441.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.674, \"name\": \"_int_to_enum (/usr/lib/python3.12/signal.py:24)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544435.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.302, \"name\": \"getsignal (/usr/lib/python3.12/signal.py:62)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544449.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.415, \"name\": \"_enum_to_int (/usr/lib/python3.12/signal.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544452.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.596, \"name\": \"_enum_to_int (/usr/lib/python3.12/signal.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544469.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.593, \"name\": \"_signal.signal\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544476.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544476.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.716, \"name\": \"_int_to_enum (/usr/lib/python3.12/signal.py:24)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544448.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.029, \"name\": \"signal (/usr/lib/python3.12/signal.py:56)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533339.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11140.032, \"name\": \"Runner.run (/usr/lib/python3.12/asyncio/runners.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544523.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544532.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.056, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544521.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.386, \"name\": \"WeakSet.__len__ (/usr/lib/python3.12/_weakrefset.py:72)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544545.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.688, \"name\": \"_IterationGuard.__init__ (/usr/lib/python3.12/_weakrefset.py:17)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544556.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544553.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.391, \"name\": \"_IterationGuard.__enter__ (/usr/lib/python3.12/_weakrefset.py:21)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544539.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.289, \"name\": \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544561.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.673, \"name\": \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544563.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.844, \"name\": \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544564.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544572.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.559, \"name\": \"set.remove\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544582.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.487, \"name\": \"list.pop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544579.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.304, \"name\": \"WeakSet._commit_removals (/usr/lib/python3.12/_weakrefset.py:53)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544569.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.12, \"name\": \"_IterationGuard.__exit__ (/usr/lib/python3.12/_weakrefset.py:27)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544565.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.075, \"name\": \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544604.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544602.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.185, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544606.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544610.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544609.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544611.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544613.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544612.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.2, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544614.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544616.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544615.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544617.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544509.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 110.25, \"name\": \"all_tasks (/usr/lib/python3.12/asyncio/tasks.py:43)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544501.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 119.8, \"name\": \"_cancel_all_tasks (/usr/lib/python3.12/asyncio/runners.py:197)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544627.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544629.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544631.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.023, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544629.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.66, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544636.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.921, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544634.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.546, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544644.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544643.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.516, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544646.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.49, \"name\": \"iscoroutine (/usr/lib/python3.12/asyncio/coroutines.py:32)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544653.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544658.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544663.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544668.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544667.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.264, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544671.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544664.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.794, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544662.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.631, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544677.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.646, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544674.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.929, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544652.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.163, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544642.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.195, \"name\": \"ensure_future (/usr/lib/python3.12/asyncio/tasks.py:670)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544697.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.328, \"name\": \"_asyncio.Task.add_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544701.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544702.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544703.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544702.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.86, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544705.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.359, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544710.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.604, \"name\": \"sys.get_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544773.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.167, \"name\": \"_thread.get_ident\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544780.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.855, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544808.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.852, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544813.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544819.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544820.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.13, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544824.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.758, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544817.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.96, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544833.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544836.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544835.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.885, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544838.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544842.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.887, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8356864, \"ts\": 81995544866.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 8356864, \"ts\": 81995544868.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 8356864, \"ts\": 81995544865.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.599, \"name\": \"WeakSet.__len__ (/usr/lib/python3.12/_weakrefset.py:72)\"}, {\"pid\": 222311, \"tid\": 8356864, \"ts\": 81995544863.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.454, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 8356864, \"ts\": 81995544861.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.002, \"name\": \"BaseEventLoop.shutdown_asyncgens (/usr/lib/python3.12/asyncio/base_events.py:561)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544875.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544881.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544879.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544885.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544877.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.927, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544874.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.61, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544848.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.39, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544845.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.622, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544813.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 79.433, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544894.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544896.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544897.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.114, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544899.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.947, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544896.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.526, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544903.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544904.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544904.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544906.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544908.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544924.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"_asyncio.Task.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544927.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"_asyncio.Task.exception\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544930.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.899, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544935.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544934.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.097, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544938.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"BaseEventLoop.stop (/usr/lib/python3.12/asyncio/base_events.py:689)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544923.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.181, \"name\": \"_run_until_complete_cb (/usr/lib/python3.12/asyncio/base_events.py:182)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544922.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.712, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544920.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.841, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544894.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.257, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544945.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.976, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544947.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.049, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544951.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.887, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544700.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 261.829, \"name\": \"BaseEventLoop.run_forever (/usr/lib/python3.12/asyncio/base_events.py:627)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544964.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.06, \"name\": \"_asyncio.Task.remove_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544967.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544969.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_asyncio.Task.result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544626.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 344.231, \"name\": \"BaseEventLoop.run_until_complete (/usr/lib/python3.12/asyncio/base_events.py:651)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544977.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544979.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544980.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544979.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.536, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544983.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544982.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.111, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544987.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.hasattr\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544987.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.008, \"name\": \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544989.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.268, \"name\": \"iscoroutine (/usr/lib/python3.12/asyncio/coroutines.py:32)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544993.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544996.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545000.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545004.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545002.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.026, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545006.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545001.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.655, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544999.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.953, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545011.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.305, \"name\": \"set.add\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545009.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.012, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544992.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.025, \"name\": \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544986.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.017, \"name\": \"ensure_future (/usr/lib/python3.12/asyncio/tasks.py:670)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545018.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_asyncio.Task.add_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545021.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545022.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545023.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_asyncio._get_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545022.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.98, \"name\": \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545025.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.295, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545026.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"sys.get_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545028.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"_thread.get_ident\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545037.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.693, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545048.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545051.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545053.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545054.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.409, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545056.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.911, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545052.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.927, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545059.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545060.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545060.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.62, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545063.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545065.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 8360128, \"ts\": 81995545079.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.654, \"name\": \"BaseEventLoop.shutdown_default_executor (/usr/lib/python3.12/asyncio/base_events.py:586)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545084.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545087.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545086.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.722, \"name\": \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545089.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"collections.deque.append\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545085.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.084, \"name\": \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545083.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.318, \"name\": \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545068.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.795, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545067.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.801, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545050.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.396, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545094.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545095.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545096.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"builtins.max\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545097.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.648, \"name\": \"select.epoll.poll\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545095.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.22, \"name\": \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545100.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545101.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"time.monotonic\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545101.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.126, \"name\": \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545103.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"builtins.len\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545104.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545107.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_asyncio.Task.cancelled\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545109.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"_asyncio.Task.exception\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545110.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545113.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"_asyncio.Task.get_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545112.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.876, \"name\": \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545115.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"BaseEventLoop.stop (/usr/lib/python3.12/asyncio/base_events.py:689)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545107.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.764, \"name\": \"_run_until_complete_cb (/usr/lib/python3.12/asyncio/base_events.py:182)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545106.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.57, \"name\": \"_contextvars.Context.run\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545105.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.202, \"name\": \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545094.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.552, \"name\": \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545118.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"_asyncio._set_running_loop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545120.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.137, \"name\": \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545123.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.013, \"name\": \"sys.set_asyncgen_hooks\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545020.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 110.67, \"name\": \"BaseEventLoop.run_forever (/usr/lib/python3.12/asyncio/base_events.py:627)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545139.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"_asyncio.Task.remove_done_callback\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545141.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"_asyncio.Task.done\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545142.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_asyncio.Task.result\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544977.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 167.085, \"name\": \"BaseEventLoop.run_until_complete (/usr/lib/python3.12/asyncio/base_events.py:651)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545149.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"get_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:783)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545157.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.756, \"name\": \"BaseDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/events.py:707)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545152.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.926, \"name\": \"_UnixDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/unix_events.py:1458)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545147.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.29, \"name\": \"set_event_loop (/usr/lib/python3.12/asyncio/events.py:816)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545178.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545182.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.633, \"name\": \"BaseEventLoop.is_closed (/usr/lib/python3.12/asyncio/base_events.py:720)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545190.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.317, \"name\": \"socket.fileno\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545198.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"BaseEventLoop.is_closed (/usr/lib/python3.12/asyncio/base_events.py:720)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545202.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"_BaseSelectorImpl.get_map (/usr/lib/python3.12/selectors.py:272)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545209.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545208.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.493, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545207.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.274, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545205.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.902, \"name\": \"_SelectorMapping.__getitem__ (/usr/lib/python3.12/selectors.py:69)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545201.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.915, \"name\": \"BaseSelector.get_key (/usr/lib/python3.12/selectors.py:180)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545235.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.isinstance\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545234.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.992, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545234.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.683, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545258.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.713, \"name\": \"dict.pop\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545232.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.975, \"name\": \"_BaseSelectorImpl.unregister (/usr/lib/python3.12/selectors.py:247)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545269.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.519, \"name\": \"select.epoll.unregister\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545226.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.236, \"name\": \"_PollLikeSelector.unregister (/usr/lib/python3.12/selectors.py:365)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545295.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545291.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.752, \"name\": \"Handle.cancel (/usr/lib/python3.12/asyncio/events.py:72)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545198.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 100.386, \"name\": \"BaseSelectorEventLoop._remove_reader (/usr/lib/python3.12/asyncio/selector_events.py:294)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545319.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.773, \"name\": \"socket.close\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545316.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.011, \"name\": \"socket._real_close (/usr/lib/python3.12/socket.py:496)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545308.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.095, \"name\": \"socket.close (/usr/lib/python3.12/socket.py:500)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545360.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.899, \"name\": \"socket.close\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545358.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.878, \"name\": \"socket._real_close (/usr/lib/python3.12/socket.py:496)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545356.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.908, \"name\": \"socket.close (/usr/lib/python3.12/socket.py:500)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545187.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 190.192, \"name\": \"BaseSelectorEventLoop._close_self_pipe (/usr/lib/python3.12/asyncio/selector_events.py:110)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545389.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545393.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.237, \"name\": \"collections.deque.clear\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545396.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.341, \"name\": \"list.clear\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545388.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.518, \"name\": \"BaseEventLoop.close (/usr/lib/python3.12/asyncio/base_events.py:697)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545404.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.719, \"name\": \"select.epoll.close\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545417.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"dict.clear\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545415.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.374, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545403.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.193, \"name\": \"EpollSelector.close (/usr/lib/python3.12/selectors.py:483)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545177.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 245.885, \"name\": \"BaseSelectorEventLoop.close (/usr/lib/python3.12/asyncio/selector_events.py:99)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545426.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.557, \"name\": \"sys.is_finalizing\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995545172.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 262.48, \"name\": \"_UnixSelectorEventLoop.close (/usr/lib/python3.12/asyncio/unix_events.py:67)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544492.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 944.474, \"name\": \"Runner.close (/usr/lib/python3.12/asyncio/runners.py:64)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995544485.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 961.492, \"name\": \"Runner.__exit__ (/usr/lib/python3.12/asyncio/runners.py:61)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533207.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12241.404, \"name\": \"run (/usr/lib/python3.12/asyncio/runners.py:160)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533204.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12246.537, \"name\": \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:1)\"}, {\"pid\": 222311, \"tid\": 222311, \"ts\": 81995533202.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12251.098, \"name\": \"builtins.exec\"}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8357440, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-1\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8358400, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-2\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8358976, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-3\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8359936, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-4\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8356864, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-5\"}}, {\"ph\": \"M\", \"pid\": 222311, \"tid\": 8360128, \"name\": \"thread_name\", \"args\": {\"name\": \"Task-6\"}}], \"viztracer_metadata\": {\"overflow\": false, \"version\": \"1.1.1\"}, \"file_info\": {\"files\": {\"/usr/lib/python3.12/asyncio/runners.py\": [\"__all__ = ('Runner', 'run')\\n\\nimport contextvars\\nimport enum\\nimport functools\\nimport threading\\nimport signal\\nfrom . import coroutines\\nfrom . import events\\nfrom . import exceptions\\nfrom . import tasks\\nfrom . import constants\\n\\nclass _State(enum.Enum):\\n    CREATED = \\\"created\\\"\\n    INITIALIZED = \\\"initialized\\\"\\n    CLOSED = \\\"closed\\\"\\n\\n\\nclass Runner:\\n    \\\"\\\"\\\"A context manager that controls event loop life cycle.\\n\\n    The context manager always creates a new event loop,\\n    allows to run async functions inside it,\\n    and properly finalizes the loop at the context manager exit.\\n\\n    If debug is True, the event loop will be run in debug mode.\\n    If loop_factory is passed, it is used for new event loop creation.\\n\\n    asyncio.run(main(), debug=True)\\n\\n    is a shortcut for\\n\\n    with asyncio.Runner(debug=True) as runner:\\n        runner.run(main())\\n\\n    The run() method can be called multiple times within the runner's context.\\n\\n    This can be useful for interactive console (e.g. IPython),\\n    unittest runners, console tools, -- everywhere when async code\\n    is called from existing sync framework and where the preferred single\\n    asyncio.run() call doesn't work.\\n\\n    \\\"\\\"\\\"\\n\\n    # Note: the class is final, it is not intended for inheritance.\\n\\n    def __init__(self, *, debug=None, loop_factory=None):\\n        self._state = _State.CREATED\\n        self._debug = debug\\n        self._loop_factory = loop_factory\\n        self._loop = None\\n        self._context = None\\n        self._interrupt_count = 0\\n        self._set_event_loop = False\\n\\n    def __enter__(self):\\n        self._lazy_init()\\n        return self\\n\\n    def __exit__(self, exc_type, exc_val, exc_tb):\\n        self.close()\\n\\n    def close(self):\\n        \\\"\\\"\\\"Shutdown and close event loop.\\\"\\\"\\\"\\n        if self._state is not _State.INITIALIZED:\\n            return\\n        try:\\n            loop = self._loop\\n            _cancel_all_tasks(loop)\\n            loop.run_until_complete(loop.shutdown_asyncgens())\\n            loop.run_until_complete(\\n                loop.shutdown_default_executor(constants.THREAD_JOIN_TIMEOUT))\\n        finally:\\n            if self._set_event_loop:\\n                events.set_event_loop(None)\\n            loop.close()\\n            self._loop = None\\n            self._state = _State.CLOSED\\n\\n    def get_loop(self):\\n        \\\"\\\"\\\"Return embedded event loop.\\\"\\\"\\\"\\n        self._lazy_init()\\n        return self._loop\\n\\n    def run(self, coro, *, context=None):\\n        \\\"\\\"\\\"Run a coroutine inside the embedded event loop.\\\"\\\"\\\"\\n        if not coroutines.iscoroutine(coro):\\n            raise ValueError(\\\"a coroutine was expected, got {!r}\\\".format(coro))\\n\\n        if events._get_running_loop() is not None:\\n            # fail fast with short traceback\\n            raise RuntimeError(\\n                \\\"Runner.run() cannot be called from a running event loop\\\")\\n\\n        self._lazy_init()\\n\\n        if context is None:\\n            context = self._context\\n        task = self._loop.create_task(coro, context=context)\\n\\n        if (threading.current_thread() is threading.main_thread()\\n            and signal.getsignal(signal.SIGINT) is signal.default_int_handler\\n        ):\\n            sigint_handler = functools.partial(self._on_sigint, main_task=task)\\n            try:\\n                signal.signal(signal.SIGINT, sigint_handler)\\n            except ValueError:\\n                # `signal.signal` may throw if `threading.main_thread` does\\n                # not support signals (e.g. embedded interpreter with signals\\n                # not registered - see gh-91880)\\n                sigint_handler = None\\n        else:\\n            sigint_handler = None\\n\\n        self._interrupt_count = 0\\n        try:\\n            return self._loop.run_until_complete(task)\\n        except exceptions.CancelledError:\\n            if self._interrupt_count > 0:\\n                uncancel = getattr(task, \\\"uncancel\\\", None)\\n                if uncancel is not None and uncancel() == 0:\\n                    raise KeyboardInterrupt()\\n            raise  # CancelledError\\n        finally:\\n            if (sigint_handler is not None\\n                and signal.getsignal(signal.SIGINT) is sigint_handler\\n            ):\\n                signal.signal(signal.SIGINT, signal.default_int_handler)\\n\\n    def _lazy_init(self):\\n        if self._state is _State.CLOSED:\\n            raise RuntimeError(\\\"Runner is closed\\\")\\n        if self._state is _State.INITIALIZED:\\n            return\\n        if self._loop_factory is None:\\n            self._loop = events.new_event_loop()\\n            if not self._set_event_loop:\\n                # Call set_event_loop only once to avoid calling\\n                # attach_loop multiple times on child watchers\\n                events.set_event_loop(self._loop)\\n                self._set_event_loop = True\\n        else:\\n            self._loop = self._loop_factory()\\n        if self._debug is not None:\\n            self._loop.set_debug(self._debug)\\n        self._context = contextvars.copy_context()\\n        self._state = _State.INITIALIZED\\n\\n    def _on_sigint(self, signum, frame, main_task):\\n        self._interrupt_count += 1\\n        if self._interrupt_count == 1 and not main_task.done():\\n            main_task.cancel()\\n            # wakeup loop if it is blocked by select() with long timeout\\n            self._loop.call_soon_threadsafe(lambda: None)\\n            return\\n        raise KeyboardInterrupt()\\n\\n\\ndef run(main, *, debug=None, loop_factory=None):\\n    \\\"\\\"\\\"Execute the coroutine and return the result.\\n\\n    This function runs the passed coroutine, taking care of\\n    managing the asyncio event loop, finalizing asynchronous\\n    generators and closing the default executor.\\n\\n    This function cannot be called when another asyncio event loop is\\n    running in the same thread.\\n\\n    If debug is True, the event loop will be run in debug mode.\\n\\n    This function always creates a new event loop and closes it at the end.\\n    It should be used as a main entry point for asyncio programs, and should\\n    ideally only be called once.\\n\\n    The executor is given a timeout duration of 5 minutes to shutdown.\\n    If the executor hasn't finished within that duration, a warning is\\n    emitted and the executor is closed.\\n\\n    Example:\\n\\n        async def main():\\n            await asyncio.sleep(1)\\n            print('hello')\\n\\n        asyncio.run(main())\\n    \\\"\\\"\\\"\\n    if events._get_running_loop() is not None:\\n        # fail fast with short traceback\\n        raise RuntimeError(\\n            \\\"asyncio.run() cannot be called from a running event loop\\\")\\n\\n    with Runner(debug=debug, loop_factory=loop_factory) as runner:\\n        return runner.run(main)\\n\\n\\ndef _cancel_all_tasks(loop):\\n    to_cancel = tasks.all_tasks(loop)\\n    if not to_cancel:\\n        return\\n\\n    for task in to_cancel:\\n        task.cancel()\\n\\n    loop.run_until_complete(tasks.gather(*to_cancel, return_exceptions=True))\\n\\n    for task in to_cancel:\\n        if task.cancelled():\\n            continue\\n        if task.exception() is not None:\\n            loop.call_exception_handler({\\n                'message': 'unhandled exception during asyncio.run() shutdown',\\n                'exception': task.exception(),\\n                'task': task,\\n            })\\n\", 215], \"<frozen importlib._bootstrap>\": [\"\\\"\\\"\\\"Core implementation of import.\\n\\nThis module is NOT meant to be directly imported! It has been designed such\\nthat it can be bootstrapped into Python as the implementation of import. As\\nsuch it requires the injection of specific modules and attributes in order to\\nwork. One should use importlib as the public-facing version of this module.\\n\\n\\\"\\\"\\\"\\n#\\n# IMPORTANT: Whenever making changes to this module, be sure to run a top-level\\n# `make regen-importlib` followed by `make` in order to get the frozen version\\n# of the module updated. Not doing so will result in the Makefile to fail for\\n# all others who don't have a ./python around to freeze the module\\n# in the early stages of compilation.\\n#\\n\\n# See importlib._setup() for what is injected into the global namespace.\\n\\n# When editing this code be aware that code executed at import time CANNOT\\n# reference any injected objects! This includes not only global code but also\\n# anything specified at the class level.\\n\\ndef _object_name(obj):\\n    try:\\n        return obj.__qualname__\\n    except AttributeError:\\n        return type(obj).__qualname__\\n\\n# Bootstrap-related code ######################################################\\n\\n# Modules injected manually by _setup()\\n_thread = None\\n_warnings = None\\n_weakref = None\\n\\n# Import done by _install_external_importers()\\n_bootstrap_external = None\\n\\n\\ndef _wrap(new, old):\\n    \\\"\\\"\\\"Simple substitute for functools.update_wrapper.\\\"\\\"\\\"\\n    for replace in ['__module__', '__name__', '__qualname__', '__doc__']:\\n        if hasattr(old, replace):\\n            setattr(new, replace, getattr(old, replace))\\n    new.__dict__.update(old.__dict__)\\n\\n\\ndef _new_module(name):\\n    return type(sys)(name)\\n\\n\\n# Module-level locking ########################################################\\n\\n# For a list that can have a weakref to it.\\nclass _List(list):\\n    pass\\n\\n\\n# Copied from weakref.py with some simplifications and modifications unique to\\n# bootstrapping importlib. Many methods were simply deleting for simplicity, so if they\\n# are needed in the future they may work if simply copied back in.\\nclass _WeakValueDictionary:\\n\\n    def __init__(self):\\n        self_weakref = _weakref.ref(self)\\n\\n        # Inlined to avoid issues with inheriting from _weakref.ref before _weakref is\\n        # set by _setup(). Since there's only one instance of this class, this is\\n        # not expensive.\\n        class KeyedRef(_weakref.ref):\\n\\n            __slots__ = \\\"key\\\",\\n\\n            def __new__(type, ob, key):\\n                self = super().__new__(type, ob, type.remove)\\n                self.key = key\\n                return self\\n\\n            def __init__(self, ob, key):\\n                super().__init__(ob, self.remove)\\n\\n            @staticmethod\\n            def remove(wr):\\n                nonlocal self_weakref\\n\\n                self = self_weakref()\\n                if self is not None:\\n                    if self._iterating:\\n                        self._pending_removals.append(wr.key)\\n                    else:\\n                        _weakref._remove_dead_weakref(self.data, wr.key)\\n\\n        self._KeyedRef = KeyedRef\\n        self.clear()\\n\\n    def clear(self):\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self.data = {}\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n            _weakref._remove_dead_weakref(d, key)\\n\\n    def get(self, key, default=None):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            wr = self.data[key]\\n        except KeyError:\\n            return default\\n        else:\\n            if (o := wr()) is None:\\n                return default\\n            else:\\n                return o\\n\\n    def setdefault(self, key, default=None):\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if self._pending_removals:\\n                self._commit_removals()\\n            self.data[key] = self._KeyedRef(default, key)\\n            return default\\n        else:\\n            return o\\n\\n\\n# A dict mapping module names to weakrefs of _ModuleLock instances.\\n# Dictionary protected by the global import lock.\\n_module_locks = {}\\n\\n# A dict mapping thread IDs to weakref'ed lists of _ModuleLock instances.\\n# This maps a thread to the module locks it is blocking on acquiring.  The\\n# values are lists because a single thread could perform a re-entrant import\\n# and be \\\"in the process\\\" of blocking on locks for more than one module.  A\\n# thread can be \\\"in the process\\\" because a thread cannot actually block on\\n# acquiring more than one lock but it can have set up bookkeeping that reflects\\n# that it intends to block on acquiring more than one lock.\\n#\\n# The dictionary uses a WeakValueDictionary to avoid keeping unnecessary\\n# lists around, regardless of GC runs. This way there's no memory leak if\\n# the list is no longer needed (GH-106176).\\n_blocking_on = None\\n\\n\\nclass _BlockingOnManager:\\n    \\\"\\\"\\\"A context manager responsible to updating ``_blocking_on``.\\\"\\\"\\\"\\n    def __init__(self, thread_id, lock):\\n        self.thread_id = thread_id\\n        self.lock = lock\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Mark the running thread as waiting for self.lock. via _blocking_on.\\\"\\\"\\\"\\n        # Interactions with _blocking_on are *not* protected by the global\\n        # import lock here because each thread only touches the state that it\\n        # owns (state keyed on its thread id).  The global import lock is\\n        # re-entrant (i.e., a single thread may take it more than once) so it\\n        # wouldn't help us be correct in the face of re-entrancy either.\\n\\n        self.blocked_on = _blocking_on.setdefault(self.thread_id, _List())\\n        self.blocked_on.append(self.lock)\\n\\n    def __exit__(self, *args, **kwargs):\\n        \\\"\\\"\\\"Remove self.lock from this thread's _blocking_on list.\\\"\\\"\\\"\\n        self.blocked_on.remove(self.lock)\\n\\n\\nclass _DeadlockError(RuntimeError):\\n    pass\\n\\n\\n\\ndef _has_deadlocked(target_id, *, seen_ids, candidate_ids, blocking_on):\\n    \\\"\\\"\\\"Check if 'target_id' is holding the same lock as another thread(s).\\n\\n    The search within 'blocking_on' starts with the threads listed in\\n    'candidate_ids'.  'seen_ids' contains any threads that are considered\\n    already traversed in the search.\\n\\n    Keyword arguments:\\n    target_id     -- The thread id to try to reach.\\n    seen_ids      -- A set of threads that have already been visited.\\n    candidate_ids -- The thread ids from which to begin.\\n    blocking_on   -- A dict representing the thread/blocking-on graph.  This may\\n                     be the same object as the global '_blocking_on' but it is\\n                     a parameter to reduce the impact that global mutable\\n                     state has on the result of this function.\\n    \\\"\\\"\\\"\\n    if target_id in candidate_ids:\\n        # If we have already reached the target_id, we're done - signal that it\\n        # is reachable.\\n        return True\\n\\n    # Otherwise, try to reach the target_id from each of the given candidate_ids.\\n    for tid in candidate_ids:\\n        if not (candidate_blocking_on := blocking_on.get(tid)):\\n            # There are no edges out from this node, skip it.\\n            continue\\n        elif tid in seen_ids:\\n            # bpo 38091: the chain of tid's we encounter here eventually leads\\n            # to a fixed point or a cycle, but does not reach target_id.\\n            # This means we would not actually deadlock.  This can happen if\\n            # other threads are at the beginning of acquire() below.\\n            return False\\n        seen_ids.add(tid)\\n\\n        # Follow the edges out from this thread.\\n        edges = [lock.owner for lock in candidate_blocking_on]\\n        if _has_deadlocked(target_id, seen_ids=seen_ids, candidate_ids=edges,\\n                blocking_on=blocking_on):\\n            return True\\n\\n    return False\\n\\n\\nclass _ModuleLock:\\n    \\\"\\\"\\\"A recursive lock implementation which is able to detect deadlocks\\n    (e.g. thread 1 trying to take locks A then B, and thread 2 trying to\\n    take locks B then A).\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        # Create an RLock for protecting the import process for the\\n        # corresponding module.  Since it is an RLock, a single thread will be\\n        # able to take it more than once.  This is necessary to support\\n        # re-entrancy in the import system that arises from (at least) signal\\n        # handlers and the garbage collector.  Consider the case of:\\n        #\\n        #  import foo\\n        #  -> ...\\n        #     -> importlib._bootstrap._ModuleLock.acquire\\n        #        -> ...\\n        #           -> <garbage collector>\\n        #              -> __del__\\n        #                 -> import foo\\n        #                    -> ...\\n        #                       -> importlib._bootstrap._ModuleLock.acquire\\n        #                          -> _BlockingOnManager.__enter__\\n        #\\n        # If a different thread than the running one holds the lock then the\\n        # thread will have to block on taking the lock, which is what we want\\n        # for thread safety.\\n        self.lock = _thread.RLock()\\n        self.wakeup = _thread.allocate_lock()\\n\\n        # The name of the module for which this is a lock.\\n        self.name = name\\n\\n        # Can end up being set to None if this lock is not owned by any thread\\n        # or the thread identifier for the owning thread.\\n        self.owner = None\\n\\n        # Represent the number of times the owning thread has acquired this lock\\n        # via a list of True.  This supports RLock-like (\\\"re-entrant lock\\\")\\n        # behavior, necessary in case a single thread is following a circular\\n        # import dependency and needs to take the lock for a single module\\n        # more than once.\\n        #\\n        # Counts are represented as a list of True because list.append(True)\\n        # and list.pop() are both atomic and thread-safe in CPython and it's hard\\n        # to find another primitive with the same properties.\\n        self.count = []\\n\\n        # This is a count of the number of threads that are blocking on\\n        # self.wakeup.acquire() awaiting to get their turn holding this module\\n        # lock.  When the module lock is released, if this is greater than\\n        # zero, it is decremented and `self.wakeup` is released one time.  The\\n        # intent is that this will let one other thread make more progress on\\n        # acquiring this module lock.  This repeats until all the threads have\\n        # gotten a turn.\\n        #\\n        # This is incremented in self.acquire() when a thread notices it is\\n        # going to have to wait for another thread to finish.\\n        #\\n        # See the comment above count for explanation of the representation.\\n        self.waiters = []\\n\\n    def has_deadlock(self):\\n        # To avoid deadlocks for concurrent or re-entrant circular imports,\\n        # look at _blocking_on to see if any threads are blocking\\n        # on getting the import lock for any module for which the import lock\\n        # is held by this thread.\\n        return _has_deadlocked(\\n            # Try to find this thread.\\n            target_id=_thread.get_ident(),\\n            seen_ids=set(),\\n            # Start from the thread that holds the import lock for this\\n            # module.\\n            candidate_ids=[self.owner],\\n            # Use the global \\\"blocking on\\\" state.\\n            blocking_on=_blocking_on,\\n        )\\n\\n    def acquire(self):\\n        \\\"\\\"\\\"\\n        Acquire the module lock.  If a potential deadlock is detected,\\n        a _DeadlockError is raised.\\n        Otherwise, the lock is always acquired and True is returned.\\n        \\\"\\\"\\\"\\n        tid = _thread.get_ident()\\n        with _BlockingOnManager(tid, self):\\n            while True:\\n                # Protect interaction with state on self with a per-module\\n                # lock.  This makes it safe for more than one thread to try to\\n                # acquire the lock for a single module at the same time.\\n                with self.lock:\\n                    if self.count == [] or self.owner == tid:\\n                        # If the lock for this module is unowned then we can\\n                        # take the lock immediately and succeed.  If the lock\\n                        # for this module is owned by the running thread then\\n                        # we can also allow the acquire to succeed.  This\\n                        # supports circular imports (thread T imports module A\\n                        # which imports module B which imports module A).\\n                        self.owner = tid\\n                        self.count.append(True)\\n                        return True\\n\\n                    # At this point we know the lock is held (because count !=\\n                    # 0) by another thread (because owner != tid).  We'll have\\n                    # to get in line to take the module lock.\\n\\n                    # But first, check to see if this thread would create a\\n                    # deadlock by acquiring this module lock.  If it would\\n                    # then just stop with an error.\\n                    #\\n                    # It's not clear who is expected to handle this error.\\n                    # There is one handler in _lock_unlock_module but many\\n                    # times this method is called when entering the context\\n                    # manager _ModuleLockManager instead - so _DeadlockError\\n                    # will just propagate up to application code.\\n                    #\\n                    # This seems to be more than just a hypothetical -\\n                    # https://stackoverflow.com/questions/59509154\\n                    # https://github.com/encode/django-rest-framework/issues/7078\\n                    if self.has_deadlock():\\n                        raise _DeadlockError(f'deadlock detected by {self!r}')\\n\\n                    # Check to see if we're going to be able to acquire the\\n                    # lock.  If we are going to have to wait then increment\\n                    # the waiters so `self.release` will know to unblock us\\n                    # later on.  We do this part non-blockingly so we don't\\n                    # get stuck here before we increment waiters.  We have\\n                    # this extra acquire call (in addition to the one below,\\n                    # outside the self.lock context manager) to make sure\\n                    # self.wakeup is held when the next acquire is called (so\\n                    # we block).  This is probably needlessly complex and we\\n                    # should just take self.wakeup in the return codepath\\n                    # above.\\n                    if self.wakeup.acquire(False):\\n                        self.waiters.append(None)\\n\\n                # Now take the lock in a blocking fashion.  This won't\\n                # complete until the thread holding this lock\\n                # (self.owner) calls self.release.\\n                self.wakeup.acquire()\\n\\n                # Taking the lock has served its purpose (making us wait), so we can\\n                # give it up now.  We'll take it w/o blocking again on the\\n                # next iteration around this 'while' loop.\\n                self.wakeup.release()\\n\\n    def release(self):\\n        tid = _thread.get_ident()\\n        with self.lock:\\n            if self.owner != tid:\\n                raise RuntimeError('cannot release un-acquired lock')\\n            assert len(self.count) > 0\\n            self.count.pop()\\n            if not len(self.count):\\n                self.owner = None\\n                if len(self.waiters) > 0:\\n                    self.waiters.pop()\\n                    self.wakeup.release()\\n\\n    def __repr__(self):\\n        return f'_ModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _DummyModuleLock:\\n    \\\"\\\"\\\"A simple _ModuleLock equivalent for Python builds without\\n    multi-threading support.\\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        self.name = name\\n        self.count = 0\\n\\n    def acquire(self):\\n        self.count += 1\\n        return True\\n\\n    def release(self):\\n        if self.count == 0:\\n            raise RuntimeError('cannot release un-acquired lock')\\n        self.count -= 1\\n\\n    def __repr__(self):\\n        return f'_DummyModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _ModuleLockManager:\\n\\n    def __init__(self, name):\\n        self._name = name\\n        self._lock = None\\n\\n    def __enter__(self):\\n        self._lock = _get_module_lock(self._name)\\n        self._lock.acquire()\\n\\n    def __exit__(self, *args, **kwargs):\\n        self._lock.release()\\n\\n\\n# The following two functions are for consumption by Python/import.c.\\n\\ndef _get_module_lock(name):\\n    \\\"\\\"\\\"Get or create the module lock for a given module name.\\n\\n    Acquire/release internally the global import lock to protect\\n    _module_locks.\\\"\\\"\\\"\\n\\n    _imp.acquire_lock()\\n    try:\\n        try:\\n            lock = _module_locks[name]()\\n        except KeyError:\\n            lock = None\\n\\n        if lock is None:\\n            if _thread is None:\\n                lock = _DummyModuleLock(name)\\n            else:\\n                lock = _ModuleLock(name)\\n\\n            def cb(ref, name=name):\\n                _imp.acquire_lock()\\n                try:\\n                    # bpo-31070: Check if another thread created a new lock\\n                    # after the previous lock was destroyed\\n                    # but before the weakref callback was called.\\n                    if _module_locks.get(name) is ref:\\n                        del _module_locks[name]\\n                finally:\\n                    _imp.release_lock()\\n\\n            _module_locks[name] = _weakref.ref(lock, cb)\\n    finally:\\n        _imp.release_lock()\\n\\n    return lock\\n\\n\\ndef _lock_unlock_module(name):\\n    \\\"\\\"\\\"Acquires then releases the module lock for a given module name.\\n\\n    This is used to ensure a module is completely initialized, in the\\n    event it is being imported by another thread.\\n    \\\"\\\"\\\"\\n    lock = _get_module_lock(name)\\n    try:\\n        lock.acquire()\\n    except _DeadlockError:\\n        # Concurrent circular import, we'll accept a partially initialized\\n        # module object.\\n        pass\\n    else:\\n        lock.release()\\n\\n# Frame stripping magic ###############################################\\ndef _call_with_frames_removed(f, *args, **kwds):\\n    \\\"\\\"\\\"remove_importlib_frames in import.c will always remove sequences\\n    of importlib frames that end with a call to this function\\n\\n    Use it instead of a normal call in places where including the importlib\\n    frames introduces unwanted noise into the traceback (e.g. when executing\\n    module code)\\n    \\\"\\\"\\\"\\n    return f(*args, **kwds)\\n\\n\\ndef _verbose_message(message, *args, verbosity=1):\\n    \\\"\\\"\\\"Print the message to stderr if -v/PYTHONVERBOSE is turned on.\\\"\\\"\\\"\\n    if sys.flags.verbose >= verbosity:\\n        if not message.startswith(('#', 'import ')):\\n            message = '# ' + message\\n        print(message.format(*args), file=sys.stderr)\\n\\n\\ndef _requires_builtin(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is built-in.\\\"\\\"\\\"\\n    def _requires_builtin_wrapper(self, fullname):\\n        if fullname not in sys.builtin_module_names:\\n            raise ImportError(f'{fullname!r} is not a built-in module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_builtin_wrapper, fxn)\\n    return _requires_builtin_wrapper\\n\\n\\ndef _requires_frozen(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is frozen.\\\"\\\"\\\"\\n    def _requires_frozen_wrapper(self, fullname):\\n        if not _imp.is_frozen(fullname):\\n            raise ImportError(f'{fullname!r} is not a frozen module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_frozen_wrapper, fxn)\\n    return _requires_frozen_wrapper\\n\\n\\n# Typically used by loader classes as a method replacement.\\ndef _load_module_shim(self, fullname):\\n    \\\"\\\"\\\"Load the specified module into sys.modules and return it.\\n\\n    This method is deprecated.  Use loader.exec_module() instead.\\n\\n    \\\"\\\"\\\"\\n    msg = (\\\"the load_module() method is deprecated and slated for removal in \\\"\\n          \\\"Python 3.12; use exec_module() instead\\\")\\n    _warnings.warn(msg, DeprecationWarning)\\n    spec = spec_from_loader(fullname, self)\\n    if fullname in sys.modules:\\n        module = sys.modules[fullname]\\n        _exec(spec, module)\\n        return sys.modules[fullname]\\n    else:\\n        return _load(spec)\\n\\n# Module specifications #######################################################\\n\\ndef _module_repr(module):\\n    \\\"\\\"\\\"The implementation of ModuleType.__repr__().\\\"\\\"\\\"\\n    loader = getattr(module, '__loader__', None)\\n    if spec := getattr(module, \\\"__spec__\\\", None):\\n        return _module_repr_from_spec(spec)\\n    # Fall through to a catch-all which always succeeds.\\n    try:\\n        name = module.__name__\\n    except AttributeError:\\n        name = '?'\\n    try:\\n        filename = module.__file__\\n    except AttributeError:\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        return f'<module {name!r} from {filename!r}>'\\n\\n\\nclass ModuleSpec:\\n    \\\"\\\"\\\"The specification for a module, used for loading.\\n\\n    A module's spec is the source for information about the module.  For\\n    data associated with the module, including source, use the spec's\\n    loader.\\n\\n    `name` is the absolute name of the module.  `loader` is the loader\\n    to use when loading the module.  `parent` is the name of the\\n    package the module is in.  The parent is derived from the name.\\n\\n    `is_package` determines if the module is considered a package or\\n    not.  On modules this is reflected by the `__path__` attribute.\\n\\n    `origin` is the specific location used by the loader from which to\\n    load the module, if that information is available.  When filename is\\n    set, origin will match.\\n\\n    `has_location` indicates that a spec's \\\"origin\\\" reflects a location.\\n    When this is True, `__file__` attribute of the module is set.\\n\\n    `cached` is the location of the cached bytecode file, if any.  It\\n    corresponds to the `__cached__` attribute.\\n\\n    `submodule_search_locations` is the sequence of path entries to\\n    search when importing submodules.  If set, is_package should be\\n    True--and False otherwise.\\n\\n    Packages are simply modules that (may) have submodules.  If a spec\\n    has a non-None value in `submodule_search_locations`, the import\\n    system will consider modules loaded from the spec as packages.\\n\\n    Only finders (see importlib.abc.MetaPathFinder and\\n    importlib.abc.PathEntryFinder) should modify ModuleSpec instances.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name, loader, *, origin=None, loader_state=None,\\n                 is_package=None):\\n        self.name = name\\n        self.loader = loader\\n        self.origin = origin\\n        self.loader_state = loader_state\\n        self.submodule_search_locations = [] if is_package else None\\n        self._uninitialized_submodules = []\\n\\n        # file-location attributes\\n        self._set_fileattr = False\\n        self._cached = None\\n\\n    def __repr__(self):\\n        args = [f'name={self.name!r}', f'loader={self.loader!r}']\\n        if self.origin is not None:\\n            args.append(f'origin={self.origin!r}')\\n        if self.submodule_search_locations is not None:\\n            args.append(f'submodule_search_locations={self.submodule_search_locations}')\\n        return f'{self.__class__.__name__}({\\\", \\\".join(args)})'\\n\\n    def __eq__(self, other):\\n        smsl = self.submodule_search_locations\\n        try:\\n            return (self.name == other.name and\\n                    self.loader == other.loader and\\n                    self.origin == other.origin and\\n                    smsl == other.submodule_search_locations and\\n                    self.cached == other.cached and\\n                    self.has_location == other.has_location)\\n        except AttributeError:\\n            return NotImplemented\\n\\n    @property\\n    def cached(self):\\n        if self._cached is None:\\n            if self.origin is not None and self._set_fileattr:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                self._cached = _bootstrap_external._get_cached(self.origin)\\n        return self._cached\\n\\n    @cached.setter\\n    def cached(self, cached):\\n        self._cached = cached\\n\\n    @property\\n    def parent(self):\\n        \\\"\\\"\\\"The name of the module's parent.\\\"\\\"\\\"\\n        if self.submodule_search_locations is None:\\n            return self.name.rpartition('.')[0]\\n        else:\\n            return self.name\\n\\n    @property\\n    def has_location(self):\\n        return self._set_fileattr\\n\\n    @has_location.setter\\n    def has_location(self, value):\\n        self._set_fileattr = bool(value)\\n\\n\\ndef spec_from_loader(name, loader, *, origin=None, is_package=None):\\n    \\\"\\\"\\\"Return a module spec based on various loader methods.\\\"\\\"\\\"\\n    if origin is None:\\n        origin = getattr(loader, '_ORIGIN', None)\\n\\n    if not origin and hasattr(loader, 'get_filename'):\\n        if _bootstrap_external is None:\\n            raise NotImplementedError\\n        spec_from_file_location = _bootstrap_external.spec_from_file_location\\n\\n        if is_package is None:\\n            return spec_from_file_location(name, loader=loader)\\n        search = [] if is_package else None\\n        return spec_from_file_location(name, loader=loader,\\n                                       submodule_search_locations=search)\\n\\n    if is_package is None:\\n        if hasattr(loader, 'is_package'):\\n            try:\\n                is_package = loader.is_package(name)\\n            except ImportError:\\n                is_package = None  # aka, undefined\\n        else:\\n            # the default\\n            is_package = False\\n\\n    return ModuleSpec(name, loader, origin=origin, is_package=is_package)\\n\\n\\ndef _spec_from_module(module, loader=None, origin=None):\\n    # This function is meant for use in _setup().\\n    try:\\n        spec = module.__spec__\\n    except AttributeError:\\n        pass\\n    else:\\n        if spec is not None:\\n            return spec\\n\\n    name = module.__name__\\n    if loader is None:\\n        try:\\n            loader = module.__loader__\\n        except AttributeError:\\n            # loader will stay None.\\n            pass\\n    try:\\n        location = module.__file__\\n    except AttributeError:\\n        location = None\\n    if origin is None:\\n        if loader is not None:\\n            origin = getattr(loader, '_ORIGIN', None)\\n        if not origin and location is not None:\\n            origin = location\\n    try:\\n        cached = module.__cached__\\n    except AttributeError:\\n        cached = None\\n    try:\\n        submodule_search_locations = list(module.__path__)\\n    except AttributeError:\\n        submodule_search_locations = None\\n\\n    spec = ModuleSpec(name, loader, origin=origin)\\n    spec._set_fileattr = False if location is None else (origin == location)\\n    spec.cached = cached\\n    spec.submodule_search_locations = submodule_search_locations\\n    return spec\\n\\n\\ndef _init_module_attrs(spec, module, *, override=False):\\n    # The passed-in module may be not support attribute assignment,\\n    # in which case we simply don't set the attributes.\\n    # __name__\\n    if (override or getattr(module, '__name__', None) is None):\\n        try:\\n            module.__name__ = spec.name\\n        except AttributeError:\\n            pass\\n    # __loader__\\n    if override or getattr(module, '__loader__', None) is None:\\n        loader = spec.loader\\n        if loader is None:\\n            # A backward compatibility hack.\\n            if spec.submodule_search_locations is not None:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                NamespaceLoader = _bootstrap_external.NamespaceLoader\\n\\n                loader = NamespaceLoader.__new__(NamespaceLoader)\\n                loader._path = spec.submodule_search_locations\\n                spec.loader = loader\\n                # While the docs say that module.__file__ is not set for\\n                # built-in modules, and the code below will avoid setting it if\\n                # spec.has_location is false, this is incorrect for namespace\\n                # packages.  Namespace packages have no location, but their\\n                # __spec__.origin is None, and thus their module.__file__\\n                # should also be None for consistency.  While a bit of a hack,\\n                # this is the best place to ensure this consistency.\\n                #\\n                # See # https://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_module\\n                # and bpo-32305\\n                module.__file__ = None\\n        try:\\n            module.__loader__ = loader\\n        except AttributeError:\\n            pass\\n    # __package__\\n    if override or getattr(module, '__package__', None) is None:\\n        try:\\n            module.__package__ = spec.parent\\n        except AttributeError:\\n            pass\\n    # __spec__\\n    try:\\n        module.__spec__ = spec\\n    except AttributeError:\\n        pass\\n    # __path__\\n    if override or getattr(module, '__path__', None) is None:\\n        if spec.submodule_search_locations is not None:\\n            # XXX We should extend __path__ if it's already a list.\\n            try:\\n                module.__path__ = spec.submodule_search_locations\\n            except AttributeError:\\n                pass\\n    # __file__/__cached__\\n    if spec.has_location:\\n        if override or getattr(module, '__file__', None) is None:\\n            try:\\n                module.__file__ = spec.origin\\n            except AttributeError:\\n                pass\\n\\n        if override or getattr(module, '__cached__', None) is None:\\n            if spec.cached is not None:\\n                try:\\n                    module.__cached__ = spec.cached\\n                except AttributeError:\\n                    pass\\n    return module\\n\\n\\ndef module_from_spec(spec):\\n    \\\"\\\"\\\"Create a module based on the provided spec.\\\"\\\"\\\"\\n    # Typically loaders will not implement create_module().\\n    module = None\\n    if hasattr(spec.loader, 'create_module'):\\n        # If create_module() returns `None` then it means default\\n        # module creation should be used.\\n        module = spec.loader.create_module(spec)\\n    elif hasattr(spec.loader, 'exec_module'):\\n        raise ImportError('loaders that define exec_module() '\\n                          'must also define create_module()')\\n    if module is None:\\n        module = _new_module(spec.name)\\n    _init_module_attrs(spec, module)\\n    return module\\n\\n\\ndef _module_repr_from_spec(spec):\\n    \\\"\\\"\\\"Return the repr to use for the module.\\\"\\\"\\\"\\n    name = '?' if spec.name is None else spec.name\\n    if spec.origin is None:\\n        loader = spec.loader\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        elif (\\n            _bootstrap_external is not None\\n            and isinstance(loader, _bootstrap_external.NamespaceLoader)\\n        ):\\n            return f'<module {name!r} (namespace) from {list(loader._path)}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        if spec.has_location:\\n            return f'<module {name!r} from {spec.origin!r}>'\\n        else:\\n            return f'<module {spec.name!r} ({spec.origin})>'\\n\\n\\n# Used by importlib.reload() and _load_module_shim().\\ndef _exec(spec, module):\\n    \\\"\\\"\\\"Execute the spec's specified module in an existing module's namespace.\\\"\\\"\\\"\\n    name = spec.name\\n    with _ModuleLockManager(name):\\n        if sys.modules.get(name) is not module:\\n            msg = f'module {name!r} not in sys.modules'\\n            raise ImportError(msg, name=name)\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # Namespace package.\\n                _init_module_attrs(spec, module, override=True)\\n            else:\\n                _init_module_attrs(spec, module, override=True)\\n                if not hasattr(spec.loader, 'exec_module'):\\n                    msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                           \\\"falling back to load_module()\\\")\\n                    _warnings.warn(msg, ImportWarning)\\n                    spec.loader.load_module(name)\\n                else:\\n                    spec.loader.exec_module(module)\\n        finally:\\n            # Update the order of insertion into sys.modules for module\\n            # clean-up at shutdown.\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n    return module\\n\\n\\ndef _load_backward_compatible(spec):\\n    # It is assumed that all callers have been warned about using load_module()\\n    # appropriately before calling this function.\\n    try:\\n        spec.loader.load_module(spec.name)\\n    except:\\n        if spec.name in sys.modules:\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n        raise\\n    # The module must be in sys.modules at this point!\\n    # Move it to the end of sys.modules.\\n    module = sys.modules.pop(spec.name)\\n    sys.modules[spec.name] = module\\n    if getattr(module, '__loader__', None) is None:\\n        try:\\n            module.__loader__ = spec.loader\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__package__', None) is None:\\n        try:\\n            # Since module.__path__ may not line up with\\n            # spec.submodule_search_paths, we can't necessarily rely\\n            # on spec.parent here.\\n            module.__package__ = module.__name__\\n            if not hasattr(module, '__path__'):\\n                module.__package__ = spec.name.rpartition('.')[0]\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__spec__', None) is None:\\n        try:\\n            module.__spec__ = spec\\n        except AttributeError:\\n            pass\\n    return module\\n\\ndef _load_unlocked(spec):\\n    # A helper for direct use by the import system.\\n    if spec.loader is not None:\\n        # Not a namespace package.\\n        if not hasattr(spec.loader, 'exec_module'):\\n            msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                    \\\"falling back to load_module()\\\")\\n            _warnings.warn(msg, ImportWarning)\\n            return _load_backward_compatible(spec)\\n\\n    module = module_from_spec(spec)\\n\\n    # This must be done before putting the module in sys.modules\\n    # (otherwise an optimization shortcut in import.c becomes\\n    # wrong).\\n    spec._initializing = True\\n    try:\\n        sys.modules[spec.name] = module\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # A namespace package so do nothing.\\n            else:\\n                spec.loader.exec_module(module)\\n        except:\\n            try:\\n                del sys.modules[spec.name]\\n            except KeyError:\\n                pass\\n            raise\\n        # Move the module to the end of sys.modules.\\n        # We don't ensure that the import-related module attributes get\\n        # set in the sys.modules replacement case.  Such modules are on\\n        # their own.\\n        module = sys.modules.pop(spec.name)\\n        sys.modules[spec.name] = module\\n        _verbose_message('import {!r} # {!r}', spec.name, spec.loader)\\n    finally:\\n        spec._initializing = False\\n\\n    return module\\n\\n# A method used during testing of _load_unlocked() and by\\n# _load_module_shim().\\ndef _load(spec):\\n    \\\"\\\"\\\"Return a new module object, loaded by the spec's loader.\\n\\n    The module is not added to its parent.\\n\\n    If a module is already in sys.modules, that existing module gets\\n    clobbered.\\n\\n    \\\"\\\"\\\"\\n    with _ModuleLockManager(spec.name):\\n        return _load_unlocked(spec)\\n\\n\\n# Loaders #####################################################################\\n\\nclass BuiltinImporter:\\n\\n    \\\"\\\"\\\"Meta path import for built-in modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"built-in\\\"\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        if _imp.is_builtin(fullname):\\n            return spec_from_loader(fullname, cls, origin=cls._ORIGIN)\\n        else:\\n            return None\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Create a built-in module\\\"\\\"\\\"\\n        if spec.name not in sys.builtin_module_names:\\n            raise ImportError(f'{spec.name!r} is not a built-in module',\\n                              name=spec.name)\\n        return _call_with_frames_removed(_imp.create_builtin, spec)\\n\\n    @staticmethod\\n    def exec_module(module):\\n        \\\"\\\"\\\"Exec a built-in module\\\"\\\"\\\"\\n        _call_with_frames_removed(_imp.exec_builtin, module)\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have code objects.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return False as built-in modules are never packages.\\\"\\\"\\\"\\n        return False\\n\\n    load_module = classmethod(_load_module_shim)\\n\\n\\nclass FrozenImporter:\\n\\n    \\\"\\\"\\\"Meta path import for frozen modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"frozen\\\"\\n\\n    @classmethod\\n    def _fix_up_module(cls, module):\\n        spec = module.__spec__\\n        state = spec.loader_state\\n        if state is None:\\n            # The module is missing FrozenImporter-specific values.\\n\\n            # Fix up the spec attrs.\\n            origname = vars(module).pop('__origname__', None)\\n            assert origname, 'see PyImport_ImportFrozenModuleObject()'\\n            ispkg = hasattr(module, '__path__')\\n            assert _imp.is_frozen_package(module.__name__) == ispkg, ispkg\\n            filename, pkgdir = cls._resolve_filename(origname, spec.name, ispkg)\\n            spec.loader_state = type(sys.implementation)(\\n                filename=filename,\\n                origname=origname,\\n            )\\n            __path__ = spec.submodule_search_locations\\n            if ispkg:\\n                assert __path__ == [], __path__\\n                if pkgdir:\\n                    spec.submodule_search_locations.insert(0, pkgdir)\\n            else:\\n                assert __path__ is None, __path__\\n\\n            # Fix up the module attrs (the bare minimum).\\n            assert not hasattr(module, '__file__'), module.__file__\\n            if filename:\\n                try:\\n                    module.__file__ = filename\\n                except AttributeError:\\n                    pass\\n            if ispkg:\\n                if module.__path__ != __path__:\\n                    assert module.__path__ == [], module.__path__\\n                    module.__path__.extend(__path__)\\n        else:\\n            # These checks ensure that _fix_up_module() is only called\\n            # in the right places.\\n            __path__ = spec.submodule_search_locations\\n            ispkg = __path__ is not None\\n            # Check the loader state.\\n            assert sorted(vars(state)) == ['filename', 'origname'], state\\n            if state.origname:\\n                # The only frozen modules with \\\"origname\\\" set are stdlib modules.\\n                (__file__, pkgdir,\\n                 ) = cls._resolve_filename(state.origname, spec.name, ispkg)\\n                assert state.filename == __file__, (state.filename, __file__)\\n                if pkgdir:\\n                    assert __path__ == [pkgdir], (__path__, pkgdir)\\n                else:\\n                    assert __path__ == ([] if ispkg else None), __path__\\n            else:\\n                __file__ = None\\n                assert state.filename is None, state.filename\\n                assert __path__ == ([] if ispkg else None), __path__\\n            # Check the file attrs.\\n            if __file__:\\n                assert hasattr(module, '__file__')\\n                assert module.__file__ == __file__, (module.__file__, __file__)\\n            else:\\n                assert not hasattr(module, '__file__'), module.__file__\\n            if ispkg:\\n                assert hasattr(module, '__path__')\\n                assert module.__path__ == __path__, (module.__path__, __path__)\\n            else:\\n                assert not hasattr(module, '__path__'), module.__path__\\n        assert not spec.has_location\\n\\n    @classmethod\\n    def _resolve_filename(cls, fullname, alias=None, ispkg=False):\\n        if not fullname or not getattr(sys, '_stdlib_dir', None):\\n            return None, None\\n        try:\\n            sep = cls._SEP\\n        except AttributeError:\\n            sep = cls._SEP = '\\\\\\\\' if sys.platform == 'win32' else '/'\\n\\n        if fullname != alias:\\n            if fullname.startswith('<'):\\n                fullname = fullname[1:]\\n                if not ispkg:\\n                    fullname = f'{fullname}.__init__'\\n            else:\\n                ispkg = False\\n        relfile = fullname.replace('.', sep)\\n        if ispkg:\\n            pkgdir = f'{sys._stdlib_dir}{sep}{relfile}'\\n            filename = f'{pkgdir}{sep}__init__.py'\\n        else:\\n            pkgdir = None\\n            filename = f'{sys._stdlib_dir}{sep}{relfile}.py'\\n        return filename, pkgdir\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        info = _call_with_frames_removed(_imp.find_frozen, fullname)\\n        if info is None:\\n            return None\\n        # We get the marshaled data in exec_module() (the loader\\n        # part of the importer), instead of here (the finder part).\\n        # The loader is the usual place to get the data that will\\n        # be loaded into the module.  (For example, see _LoaderBasics\\n        # in _bootstra_external.py.)  Most importantly, this importer\\n        # is simpler if we wait to get the data.\\n        # However, getting as much data in the finder as possible\\n        # to later load the module is okay, and sometimes important.\\n        # (That's why ModuleSpec.loader_state exists.)  This is\\n        # especially true if it avoids throwing away expensive data\\n        # the loader would otherwise duplicate later and can be done\\n        # efficiently.  In this case it isn't worth it.\\n        _, ispkg, origname = info\\n        spec = spec_from_loader(fullname, cls,\\n                                origin=cls._ORIGIN,\\n                                is_package=ispkg)\\n        filename, pkgdir = cls._resolve_filename(origname, fullname, ispkg)\\n        spec.loader_state = type(sys.implementation)(\\n            filename=filename,\\n            origname=origname,\\n        )\\n        if pkgdir:\\n            spec.submodule_search_locations.insert(0, pkgdir)\\n        return spec\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Set __file__, if able.\\\"\\\"\\\"\\n        module = _new_module(spec.name)\\n        try:\\n            filename = spec.loader_state.filename\\n        except AttributeError:\\n            pass\\n        else:\\n            if filename:\\n                module.__file__ = filename\\n        return module\\n\\n    @staticmethod\\n    def exec_module(module):\\n        spec = module.__spec__\\n        name = spec.name\\n        code = _call_with_frames_removed(_imp.get_frozen_object, name)\\n        exec(code, module.__dict__)\\n\\n    @classmethod\\n    def load_module(cls, fullname):\\n        \\\"\\\"\\\"Load a frozen module.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # Warning about deprecation implemented in _load_module_shim().\\n        module = _load_module_shim(cls, fullname)\\n        info = _imp.find_frozen(fullname)\\n        assert info is not None\\n        _, ispkg, origname = info\\n        module.__origname__ = origname\\n        vars(module).pop('__file__', None)\\n        if ispkg:\\n            module.__path__ = []\\n        cls._fix_up_module(module)\\n        return module\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return the code object for the frozen module.\\\"\\\"\\\"\\n        return _imp.get_frozen_object(fullname)\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as frozen modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_frozen\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return True if the frozen module is a package.\\\"\\\"\\\"\\n        return _imp.is_frozen_package(fullname)\\n\\n\\n# Import itself ###############################################################\\n\\nclass _ImportLockContext:\\n\\n    \\\"\\\"\\\"Context manager for the import lock.\\\"\\\"\\\"\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Acquire the import lock.\\\"\\\"\\\"\\n        _imp.acquire_lock()\\n\\n    def __exit__(self, exc_type, exc_value, exc_traceback):\\n        \\\"\\\"\\\"Release the import lock regardless of any raised exceptions.\\\"\\\"\\\"\\n        _imp.release_lock()\\n\\n\\ndef _resolve_name(name, package, level):\\n    \\\"\\\"\\\"Resolve a relative module name to an absolute one.\\\"\\\"\\\"\\n    bits = package.rsplit('.', level - 1)\\n    if len(bits) < level:\\n        raise ImportError('attempted relative import beyond top-level package')\\n    base = bits[0]\\n    return f'{base}.{name}' if name else base\\n\\n\\ndef _find_spec(name, path, target=None):\\n    \\\"\\\"\\\"Find a module's spec.\\\"\\\"\\\"\\n    meta_path = sys.meta_path\\n    if meta_path is None:\\n        # PyImport_Cleanup() is running or has been called.\\n        raise ImportError(\\\"sys.meta_path is None, Python is likely \\\"\\n                          \\\"shutting down\\\")\\n\\n    if not meta_path:\\n        _warnings.warn('sys.meta_path is empty', ImportWarning)\\n\\n    # We check sys.modules here for the reload case.  While a passed-in\\n    # target will usually indicate a reload there is no guarantee, whereas\\n    # sys.modules provides one.\\n    is_reload = name in sys.modules\\n    for finder in meta_path:\\n        with _ImportLockContext():\\n            try:\\n                find_spec = finder.find_spec\\n            except AttributeError:\\n                continue\\n            else:\\n                spec = find_spec(name, path, target)\\n        if spec is not None:\\n            # The parent import may have already imported this module.\\n            if not is_reload and name in sys.modules:\\n                module = sys.modules[name]\\n                try:\\n                    __spec__ = module.__spec__\\n                except AttributeError:\\n                    # We use the found spec since that is the one that\\n                    # we would have used if the parent module hadn't\\n                    # beaten us to the punch.\\n                    return spec\\n                else:\\n                    if __spec__ is None:\\n                        return spec\\n                    else:\\n                        return __spec__\\n            else:\\n                return spec\\n    else:\\n        return None\\n\\n\\ndef _sanity_check(name, package, level):\\n    \\\"\\\"\\\"Verify arguments are \\\"sane\\\".\\\"\\\"\\\"\\n    if not isinstance(name, str):\\n        raise TypeError(f'module name must be str, not {type(name)}')\\n    if level < 0:\\n        raise ValueError('level must be >= 0')\\n    if level > 0:\\n        if not isinstance(package, str):\\n            raise TypeError('__package__ not set to a string')\\n        elif not package:\\n            raise ImportError('attempted relative import with no known parent '\\n                              'package')\\n    if not name and level == 0:\\n        raise ValueError('Empty module name')\\n\\n\\n_ERR_MSG_PREFIX = 'No module named '\\n_ERR_MSG = _ERR_MSG_PREFIX + '{!r}'\\n\\ndef _find_and_load_unlocked(name, import_):\\n    path = None\\n    parent = name.rpartition('.')[0]\\n    parent_spec = None\\n    if parent:\\n        if parent not in sys.modules:\\n            _call_with_frames_removed(import_, parent)\\n        # Crazy side-effects!\\n        if name in sys.modules:\\n            return sys.modules[name]\\n        parent_module = sys.modules[parent]\\n        try:\\n            path = parent_module.__path__\\n        except AttributeError:\\n            msg = f'{_ERR_MSG_PREFIX}{name!r}; {parent!r} is not a package'\\n            raise ModuleNotFoundError(msg, name=name) from None\\n        parent_spec = parent_module.__spec__\\n        child = name.rpartition('.')[2]\\n    spec = _find_spec(name, path)\\n    if spec is None:\\n        raise ModuleNotFoundError(f'{_ERR_MSG_PREFIX}{name!r}', name=name)\\n    else:\\n        if parent_spec:\\n            # Temporarily add child we are currently importing to parent's\\n            # _uninitialized_submodules for circular import tracking.\\n            parent_spec._uninitialized_submodules.append(child)\\n        try:\\n            module = _load_unlocked(spec)\\n        finally:\\n            if parent_spec:\\n                parent_spec._uninitialized_submodules.pop()\\n    if parent:\\n        # Set the module as an attribute on its parent.\\n        parent_module = sys.modules[parent]\\n        try:\\n            setattr(parent_module, child, module)\\n        except AttributeError:\\n            msg = f\\\"Cannot set an attribute on {parent!r} for child module {child!r}\\\"\\n            _warnings.warn(msg, ImportWarning)\\n    return module\\n\\n\\n_NEEDS_LOADING = object()\\n\\n\\ndef _find_and_load(name, import_):\\n    \\\"\\\"\\\"Find and load the module.\\\"\\\"\\\"\\n\\n    # Optimization: we avoid unneeded module locking if the module\\n    # already exists in sys.modules and is fully initialized.\\n    module = sys.modules.get(name, _NEEDS_LOADING)\\n    if (module is _NEEDS_LOADING or\\n        getattr(getattr(module, \\\"__spec__\\\", None), \\\"_initializing\\\", False)):\\n        with _ModuleLockManager(name):\\n            module = sys.modules.get(name, _NEEDS_LOADING)\\n            if module is _NEEDS_LOADING:\\n                return _find_and_load_unlocked(name, import_)\\n\\n        # Optimization: only call _bootstrap._lock_unlock_module() if\\n        # module.__spec__._initializing is True.\\n        # NOTE: because of this, initializing must be set *before*\\n        # putting the new module in sys.modules.\\n        _lock_unlock_module(name)\\n\\n    if module is None:\\n        message = f'import of {name} halted; None in sys.modules'\\n        raise ModuleNotFoundError(message, name=name)\\n\\n    return module\\n\\n\\ndef _gcd_import(name, package=None, level=0):\\n    \\\"\\\"\\\"Import and return the module based on its name, the package the call is\\n    being made from, and the level adjustment.\\n\\n    This function represents the greatest common denominator of functionality\\n    between import_module and __import__. This includes setting __package__ if\\n    the loader did not.\\n\\n    \\\"\\\"\\\"\\n    _sanity_check(name, package, level)\\n    if level > 0:\\n        name = _resolve_name(name, package, level)\\n    return _find_and_load(name, _gcd_import)\\n\\n\\ndef _handle_fromlist(module, fromlist, import_, *, recursive=False):\\n    \\\"\\\"\\\"Figure out what __import__ should return.\\n\\n    The import_ parameter is a callable which takes the name of module to\\n    import. It is required to decouple the function from assuming importlib's\\n    import implementation is desired.\\n\\n    \\\"\\\"\\\"\\n    # The hell that is fromlist ...\\n    # If a package was imported, try to import stuff from fromlist.\\n    for x in fromlist:\\n        if not isinstance(x, str):\\n            if recursive:\\n                where = module.__name__ + '.__all__'\\n            else:\\n                where = \\\"``from list''\\\"\\n            raise TypeError(f\\\"Item in {where} must be str, \\\"\\n                            f\\\"not {type(x).__name__}\\\")\\n        elif x == '*':\\n            if not recursive and hasattr(module, '__all__'):\\n                _handle_fromlist(module, module.__all__, import_,\\n                                 recursive=True)\\n        elif not hasattr(module, x):\\n            from_name = f'{module.__name__}.{x}'\\n            try:\\n                _call_with_frames_removed(import_, from_name)\\n            except ModuleNotFoundError as exc:\\n                # Backwards-compatibility dictates we ignore failed\\n                # imports triggered by fromlist for modules that don't\\n                # exist.\\n                if (exc.name == from_name and\\n                    sys.modules.get(from_name, _NEEDS_LOADING) is not None):\\n                    continue\\n                raise\\n    return module\\n\\n\\ndef _calc___package__(globals):\\n    \\\"\\\"\\\"Calculate what __package__ should be.\\n\\n    __package__ is not guaranteed to be defined or could be set to None\\n    to represent that its proper value is unknown.\\n\\n    \\\"\\\"\\\"\\n    package = globals.get('__package__')\\n    spec = globals.get('__spec__')\\n    if package is not None:\\n        if spec is not None and package != spec.parent:\\n            _warnings.warn(\\\"__package__ != __spec__.parent \\\"\\n                           f\\\"({package!r} != {spec.parent!r})\\\",\\n                           DeprecationWarning, stacklevel=3)\\n        return package\\n    elif spec is not None:\\n        return spec.parent\\n    else:\\n        _warnings.warn(\\\"can't resolve package from __spec__ or __package__, \\\"\\n                       \\\"falling back on __name__ and __path__\\\",\\n                       ImportWarning, stacklevel=3)\\n        package = globals['__name__']\\n        if '__path__' not in globals:\\n            package = package.rpartition('.')[0]\\n    return package\\n\\n\\ndef __import__(name, globals=None, locals=None, fromlist=(), level=0):\\n    \\\"\\\"\\\"Import a module.\\n\\n    The 'globals' argument is used to infer where the import is occurring from\\n    to handle relative imports. The 'locals' argument is ignored. The\\n    'fromlist' argument specifies what should exist as attributes on the module\\n    being imported (e.g. ``from module import <fromlist>``).  The 'level'\\n    argument represents the package location to import from in a relative\\n    import (e.g. ``from ..pkg import mod`` would have a 'level' of 2).\\n\\n    \\\"\\\"\\\"\\n    if level == 0:\\n        module = _gcd_import(name)\\n    else:\\n        globals_ = globals if globals is not None else {}\\n        package = _calc___package__(globals_)\\n        module = _gcd_import(name, package, level)\\n    if not fromlist:\\n        # Return up to the first dot in 'name'. This is complicated by the fact\\n        # that 'name' may be relative.\\n        if level == 0:\\n            return _gcd_import(name.partition('.')[0])\\n        elif not name:\\n            return module\\n        else:\\n            # Figure out where to slice the module's name up to the first dot\\n            # in 'name'.\\n            cut_off = len(name) - len(name.partition('.')[0])\\n            # Slice end needs to be positive to alleviate need to special-case\\n            # when ``'.' not in name``.\\n            return sys.modules[module.__name__[:len(module.__name__)-cut_off]]\\n    elif hasattr(module, '__path__'):\\n        return _handle_fromlist(module, fromlist, _gcd_import)\\n    else:\\n        return module\\n\\n\\ndef _builtin_from_name(name):\\n    spec = BuiltinImporter.find_spec(name)\\n    if spec is None:\\n        raise ImportError('no built-in module named ' + name)\\n    return _load_unlocked(spec)\\n\\n\\ndef _setup(sys_module, _imp_module):\\n    \\\"\\\"\\\"Setup importlib by importing needed built-in modules and injecting them\\n    into the global namespace.\\n\\n    As sys is needed for sys.modules access and _imp is needed to load built-in\\n    modules, those two modules must be explicitly passed in.\\n\\n    \\\"\\\"\\\"\\n    global _imp, sys, _blocking_on\\n    _imp = _imp_module\\n    sys = sys_module\\n\\n    # Set up the spec for existing builtin/frozen modules.\\n    module_type = type(sys)\\n    for name, module in sys.modules.items():\\n        if isinstance(module, module_type):\\n            if name in sys.builtin_module_names:\\n                loader = BuiltinImporter\\n            elif _imp.is_frozen(name):\\n                loader = FrozenImporter\\n            else:\\n                continue\\n            spec = _spec_from_module(module, loader)\\n            _init_module_attrs(spec, module)\\n            if loader is FrozenImporter:\\n                loader._fix_up_module(module)\\n\\n    # Directly load built-in modules needed during bootstrap.\\n    self_module = sys.modules[__name__]\\n    for builtin_name in ('_thread', '_warnings', '_weakref'):\\n        if builtin_name not in sys.modules:\\n            builtin_module = _builtin_from_name(builtin_name)\\n        else:\\n            builtin_module = sys.modules[builtin_name]\\n        setattr(self_module, builtin_name, builtin_module)\\n\\n    # Instantiation requires _weakref to have been set.\\n    _blocking_on = _WeakValueDictionary()\\n\\n\\ndef _install(sys_module, _imp_module):\\n    \\\"\\\"\\\"Install importers for builtin and frozen modules\\\"\\\"\\\"\\n    _setup(sys_module, _imp_module)\\n\\n    sys.meta_path.append(BuiltinImporter)\\n    sys.meta_path.append(FrozenImporter)\\n\\n\\ndef _install_external_importers():\\n    \\\"\\\"\\\"Install importers that require external filesystem access\\\"\\\"\\\"\\n    global _bootstrap_external\\n    import _frozen_importlib_external\\n    _bootstrap_external = _frozen_importlib_external\\n    _frozen_importlib_external._install(sys.modules[__name__])\\n\", 1551], \"/usr/lib/python3.12/asyncio/events.py\": [\"\\\"\\\"\\\"Event loop and event loop policy.\\\"\\\"\\\"\\n\\n# Contains code from https://github.com/MagicStack/uvloop/tree/v0.16.0\\n# SPDX-License-Identifier: PSF-2.0 AND (MIT OR Apache-2.0)\\n# SPDX-FileCopyrightText: Copyright (c) 2015-2021 MagicStack Inc.  http://magic.io\\n\\n__all__ = (\\n    'AbstractEventLoopPolicy',\\n    'AbstractEventLoop', 'AbstractServer',\\n    'Handle', 'TimerHandle',\\n    'get_event_loop_policy', 'set_event_loop_policy',\\n    'get_event_loop', 'set_event_loop', 'new_event_loop',\\n    'get_child_watcher', 'set_child_watcher',\\n    '_set_running_loop', 'get_running_loop',\\n    '_get_running_loop',\\n)\\n\\nimport contextvars\\nimport os\\nimport signal\\nimport socket\\nimport subprocess\\nimport sys\\nimport threading\\n\\nfrom . import format_helpers\\n\\n\\nclass Handle:\\n    \\\"\\\"\\\"Object returned by callback registration methods.\\\"\\\"\\\"\\n\\n    __slots__ = ('_callback', '_args', '_cancelled', '_loop',\\n                 '_source_traceback', '_repr', '__weakref__',\\n                 '_context')\\n\\n    def __init__(self, callback, args, loop, context=None):\\n        if context is None:\\n            context = contextvars.copy_context()\\n        self._context = context\\n        self._loop = loop\\n        self._callback = callback\\n        self._args = args\\n        self._cancelled = False\\n        self._repr = None\\n        if self._loop.get_debug():\\n            self._source_traceback = format_helpers.extract_stack(\\n                sys._getframe(1))\\n        else:\\n            self._source_traceback = None\\n\\n    def _repr_info(self):\\n        info = [self.__class__.__name__]\\n        if self._cancelled:\\n            info.append('cancelled')\\n        if self._callback is not None:\\n            info.append(format_helpers._format_callback_source(\\n                self._callback, self._args))\\n        if self._source_traceback:\\n            frame = self._source_traceback[-1]\\n            info.append(f'created at {frame[0]}:{frame[1]}')\\n        return info\\n\\n    def __repr__(self):\\n        if self._repr is not None:\\n            return self._repr\\n        info = self._repr_info()\\n        return '<{}>'.format(' '.join(info))\\n\\n    def get_context(self):\\n        return self._context\\n\\n    def cancel(self):\\n        if not self._cancelled:\\n            self._cancelled = True\\n            if self._loop.get_debug():\\n                # Keep a representation in debug mode to keep callback and\\n                # parameters. For example, to log the warning\\n                # \\\"Executing <Handle...> took 2.5 second\\\"\\n                self._repr = repr(self)\\n            self._callback = None\\n            self._args = None\\n\\n    def cancelled(self):\\n        return self._cancelled\\n\\n    def _run(self):\\n        try:\\n            self._context.run(self._callback, *self._args)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            cb = format_helpers._format_callback_source(\\n                self._callback, self._args)\\n            msg = f'Exception in callback {cb}'\\n            context = {\\n                'message': msg,\\n                'exception': exc,\\n                'handle': self,\\n            }\\n            if self._source_traceback:\\n                context['source_traceback'] = self._source_traceback\\n            self._loop.call_exception_handler(context)\\n        self = None  # Needed to break cycles when an exception occurs.\\n\\n\\nclass TimerHandle(Handle):\\n    \\\"\\\"\\\"Object returned by timed callback registration methods.\\\"\\\"\\\"\\n\\n    __slots__ = ['_scheduled', '_when']\\n\\n    def __init__(self, when, callback, args, loop, context=None):\\n        super().__init__(callback, args, loop, context)\\n        if self._source_traceback:\\n            del self._source_traceback[-1]\\n        self._when = when\\n        self._scheduled = False\\n\\n    def _repr_info(self):\\n        info = super()._repr_info()\\n        pos = 2 if self._cancelled else 1\\n        info.insert(pos, f'when={self._when}')\\n        return info\\n\\n    def __hash__(self):\\n        return hash(self._when)\\n\\n    def __lt__(self, other):\\n        if isinstance(other, TimerHandle):\\n            return self._when < other._when\\n        return NotImplemented\\n\\n    def __le__(self, other):\\n        if isinstance(other, TimerHandle):\\n            return self._when < other._when or self.__eq__(other)\\n        return NotImplemented\\n\\n    def __gt__(self, other):\\n        if isinstance(other, TimerHandle):\\n            return self._when > other._when\\n        return NotImplemented\\n\\n    def __ge__(self, other):\\n        if isinstance(other, TimerHandle):\\n            return self._when > other._when or self.__eq__(other)\\n        return NotImplemented\\n\\n    def __eq__(self, other):\\n        if isinstance(other, TimerHandle):\\n            return (self._when == other._when and\\n                    self._callback == other._callback and\\n                    self._args == other._args and\\n                    self._cancelled == other._cancelled)\\n        return NotImplemented\\n\\n    def cancel(self):\\n        if not self._cancelled:\\n            self._loop._timer_handle_cancelled(self)\\n        super().cancel()\\n\\n    def when(self):\\n        \\\"\\\"\\\"Return a scheduled callback time.\\n\\n        The time is an absolute timestamp, using the same time\\n        reference as loop.time().\\n        \\\"\\\"\\\"\\n        return self._when\\n\\n\\nclass AbstractServer:\\n    \\\"\\\"\\\"Abstract server returned by create_server().\\\"\\\"\\\"\\n\\n    def close(self):\\n        \\\"\\\"\\\"Stop serving.  This leaves existing connections open.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def get_loop(self):\\n        \\\"\\\"\\\"Get the event loop the Server object is attached to.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def is_serving(self):\\n        \\\"\\\"\\\"Return True if the server is accepting connections.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def start_serving(self):\\n        \\\"\\\"\\\"Start accepting connections.\\n\\n        This method is idempotent, so it can be called when\\n        the server is already being serving.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def serve_forever(self):\\n        \\\"\\\"\\\"Start accepting connections until the coroutine is cancelled.\\n\\n        The server is closed when the coroutine is cancelled.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def wait_closed(self):\\n        \\\"\\\"\\\"Coroutine to wait until service is closed.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def __aenter__(self):\\n        return self\\n\\n    async def __aexit__(self, *exc):\\n        self.close()\\n        await self.wait_closed()\\n\\n\\nclass AbstractEventLoop:\\n    \\\"\\\"\\\"Abstract event loop.\\\"\\\"\\\"\\n\\n    # Running and stopping the event loop.\\n\\n    def run_forever(self):\\n        \\\"\\\"\\\"Run the event loop until stop() is called.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def run_until_complete(self, future):\\n        \\\"\\\"\\\"Run the event loop until a Future is done.\\n\\n        Return the Future's result, or raise its exception.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def stop(self):\\n        \\\"\\\"\\\"Stop the event loop as soon as reasonable.\\n\\n        Exactly how soon that is may depend on the implementation, but\\n        no more I/O callbacks should be scheduled.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def is_running(self):\\n        \\\"\\\"\\\"Return whether the event loop is currently running.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def is_closed(self):\\n        \\\"\\\"\\\"Returns True if the event loop was closed.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the loop.\\n\\n        The loop should not be running.\\n\\n        This is idempotent and irreversible.\\n\\n        No other methods should be called after this one.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def shutdown_asyncgens(self):\\n        \\\"\\\"\\\"Shutdown all active asynchronous generators.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def shutdown_default_executor(self):\\n        \\\"\\\"\\\"Schedule the shutdown of the default executor.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    # Methods scheduling callbacks.  All these return Handles.\\n\\n    def _timer_handle_cancelled(self, handle):\\n        \\\"\\\"\\\"Notification that a TimerHandle has been cancelled.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def call_soon(self, callback, *args, context=None):\\n        return self.call_later(0, callback, *args, context=context)\\n\\n    def call_later(self, delay, callback, *args, context=None):\\n        raise NotImplementedError\\n\\n    def call_at(self, when, callback, *args, context=None):\\n        raise NotImplementedError\\n\\n    def time(self):\\n        raise NotImplementedError\\n\\n    def create_future(self):\\n        raise NotImplementedError\\n\\n    # Method scheduling a coroutine object: create a task.\\n\\n    def create_task(self, coro, *, name=None, context=None):\\n        raise NotImplementedError\\n\\n    # Methods for interacting with threads.\\n\\n    def call_soon_threadsafe(self, callback, *args, context=None):\\n        raise NotImplementedError\\n\\n    def run_in_executor(self, executor, func, *args):\\n        raise NotImplementedError\\n\\n    def set_default_executor(self, executor):\\n        raise NotImplementedError\\n\\n    # Network I/O methods returning Futures.\\n\\n    async def getaddrinfo(self, host, port, *,\\n                          family=0, type=0, proto=0, flags=0):\\n        raise NotImplementedError\\n\\n    async def getnameinfo(self, sockaddr, flags=0):\\n        raise NotImplementedError\\n\\n    async def create_connection(\\n            self, protocol_factory, host=None, port=None,\\n            *, ssl=None, family=0, proto=0,\\n            flags=0, sock=None, local_addr=None,\\n            server_hostname=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            happy_eyeballs_delay=None, interleave=None):\\n        raise NotImplementedError\\n\\n    async def create_server(\\n            self, protocol_factory, host=None, port=None,\\n            *, family=socket.AF_UNSPEC,\\n            flags=socket.AI_PASSIVE, sock=None, backlog=100,\\n            ssl=None, reuse_address=None, reuse_port=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            start_serving=True):\\n        \\\"\\\"\\\"A coroutine which creates a TCP server bound to host and port.\\n\\n        The return value is a Server object which can be used to stop\\n        the service.\\n\\n        If host is an empty string or None all interfaces are assumed\\n        and a list of multiple sockets will be returned (most likely\\n        one for IPv4 and another one for IPv6). The host parameter can also be\\n        a sequence (e.g. list) of hosts to bind to.\\n\\n        family can be set to either AF_INET or AF_INET6 to force the\\n        socket to use IPv4 or IPv6. If not set it will be determined\\n        from host (defaults to AF_UNSPEC).\\n\\n        flags is a bitmask for getaddrinfo().\\n\\n        sock can optionally be specified in order to use a preexisting\\n        socket object.\\n\\n        backlog is the maximum number of queued connections passed to\\n        listen() (defaults to 100).\\n\\n        ssl can be set to an SSLContext to enable SSL over the\\n        accepted connections.\\n\\n        reuse_address tells the kernel to reuse a local socket in\\n        TIME_WAIT state, without waiting for its natural timeout to\\n        expire. If not specified will automatically be set to True on\\n        UNIX.\\n\\n        reuse_port tells the kernel to allow this endpoint to be bound to\\n        the same port as other existing endpoints are bound to, so long as\\n        they all set this flag when being created. This option is not\\n        supported on Windows.\\n\\n        ssl_handshake_timeout is the time in seconds that an SSL server\\n        will wait for completion of the SSL handshake before aborting the\\n        connection. Default is 60s.\\n\\n        ssl_shutdown_timeout is the time in seconds that an SSL server\\n        will wait for completion of the SSL shutdown procedure\\n        before aborting the connection. Default is 30s.\\n\\n        start_serving set to True (default) causes the created server\\n        to start accepting connections immediately.  When set to False,\\n        the user should await Server.start_serving() or Server.serve_forever()\\n        to make the server to start accepting connections.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def sendfile(self, transport, file, offset=0, count=None,\\n                       *, fallback=True):\\n        \\\"\\\"\\\"Send a file through a transport.\\n\\n        Return an amount of sent bytes.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def start_tls(self, transport, protocol, sslcontext, *,\\n                        server_side=False,\\n                        server_hostname=None,\\n                        ssl_handshake_timeout=None,\\n                        ssl_shutdown_timeout=None):\\n        \\\"\\\"\\\"Upgrade a transport to TLS.\\n\\n        Return a new transport that *protocol* should start using\\n        immediately.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def create_unix_connection(\\n            self, protocol_factory, path=None, *,\\n            ssl=None, sock=None,\\n            server_hostname=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None):\\n        raise NotImplementedError\\n\\n    async def create_unix_server(\\n            self, protocol_factory, path=None, *,\\n            sock=None, backlog=100, ssl=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            start_serving=True):\\n        \\\"\\\"\\\"A coroutine which creates a UNIX Domain Socket server.\\n\\n        The return value is a Server object, which can be used to stop\\n        the service.\\n\\n        path is a str, representing a file system path to bind the\\n        server socket to.\\n\\n        sock can optionally be specified in order to use a preexisting\\n        socket object.\\n\\n        backlog is the maximum number of queued connections passed to\\n        listen() (defaults to 100).\\n\\n        ssl can be set to an SSLContext to enable SSL over the\\n        accepted connections.\\n\\n        ssl_handshake_timeout is the time in seconds that an SSL server\\n        will wait for the SSL handshake to complete (defaults to 60s).\\n\\n        ssl_shutdown_timeout is the time in seconds that an SSL server\\n        will wait for the SSL shutdown to finish (defaults to 30s).\\n\\n        start_serving set to True (default) causes the created server\\n        to start accepting connections immediately.  When set to False,\\n        the user should await Server.start_serving() or Server.serve_forever()\\n        to make the server to start accepting connections.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def connect_accepted_socket(\\n            self, protocol_factory, sock,\\n            *, ssl=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None):\\n        \\\"\\\"\\\"Handle an accepted connection.\\n\\n        This is used by servers that accept connections outside of\\n        asyncio, but use asyncio to handle connections.\\n\\n        This method is a coroutine.  When completed, the coroutine\\n        returns a (transport, protocol) pair.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def create_datagram_endpoint(self, protocol_factory,\\n                                       local_addr=None, remote_addr=None, *,\\n                                       family=0, proto=0, flags=0,\\n                                       reuse_address=None, reuse_port=None,\\n                                       allow_broadcast=None, sock=None):\\n        \\\"\\\"\\\"A coroutine which creates a datagram endpoint.\\n\\n        This method will try to establish the endpoint in the background.\\n        When successful, the coroutine returns a (transport, protocol) pair.\\n\\n        protocol_factory must be a callable returning a protocol instance.\\n\\n        socket family AF_INET, socket.AF_INET6 or socket.AF_UNIX depending on\\n        host (or family if specified), socket type SOCK_DGRAM.\\n\\n        reuse_address tells the kernel to reuse a local socket in\\n        TIME_WAIT state, without waiting for its natural timeout to\\n        expire. If not specified it will automatically be set to True on\\n        UNIX.\\n\\n        reuse_port tells the kernel to allow this endpoint to be bound to\\n        the same port as other existing endpoints are bound to, so long as\\n        they all set this flag when being created. This option is not\\n        supported on Windows and some UNIX's. If the\\n        :py:data:`~socket.SO_REUSEPORT` constant is not defined then this\\n        capability is unsupported.\\n\\n        allow_broadcast tells the kernel to allow this endpoint to send\\n        messages to the broadcast address.\\n\\n        sock can optionally be specified in order to use a preexisting\\n        socket object.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    # Pipes and subprocesses.\\n\\n    async def connect_read_pipe(self, protocol_factory, pipe):\\n        \\\"\\\"\\\"Register read pipe in event loop. Set the pipe to non-blocking mode.\\n\\n        protocol_factory should instantiate object with Protocol interface.\\n        pipe is a file-like object.\\n        Return pair (transport, protocol), where transport supports the\\n        ReadTransport interface.\\\"\\\"\\\"\\n        # The reason to accept file-like object instead of just file descriptor\\n        # is: we need to own pipe and close it at transport finishing\\n        # Can got complicated errors if pass f.fileno(),\\n        # close fd in pipe transport then close f and vice versa.\\n        raise NotImplementedError\\n\\n    async def connect_write_pipe(self, protocol_factory, pipe):\\n        \\\"\\\"\\\"Register write pipe in event loop.\\n\\n        protocol_factory should instantiate object with BaseProtocol interface.\\n        Pipe is file-like object already switched to nonblocking.\\n        Return pair (transport, protocol), where transport support\\n        WriteTransport interface.\\\"\\\"\\\"\\n        # The reason to accept file-like object instead of just file descriptor\\n        # is: we need to own pipe and close it at transport finishing\\n        # Can got complicated errors if pass f.fileno(),\\n        # close fd in pipe transport then close f and vice versa.\\n        raise NotImplementedError\\n\\n    async def subprocess_shell(self, protocol_factory, cmd, *,\\n                               stdin=subprocess.PIPE,\\n                               stdout=subprocess.PIPE,\\n                               stderr=subprocess.PIPE,\\n                               **kwargs):\\n        raise NotImplementedError\\n\\n    async def subprocess_exec(self, protocol_factory, *args,\\n                              stdin=subprocess.PIPE,\\n                              stdout=subprocess.PIPE,\\n                              stderr=subprocess.PIPE,\\n                              **kwargs):\\n        raise NotImplementedError\\n\\n    # Ready-based callback registration methods.\\n    # The add_*() methods return None.\\n    # The remove_*() methods return True if something was removed,\\n    # False if there was nothing to delete.\\n\\n    def add_reader(self, fd, callback, *args):\\n        raise NotImplementedError\\n\\n    def remove_reader(self, fd):\\n        raise NotImplementedError\\n\\n    def add_writer(self, fd, callback, *args):\\n        raise NotImplementedError\\n\\n    def remove_writer(self, fd):\\n        raise NotImplementedError\\n\\n    # Completion based I/O methods returning Futures.\\n\\n    async def sock_recv(self, sock, nbytes):\\n        raise NotImplementedError\\n\\n    async def sock_recv_into(self, sock, buf):\\n        raise NotImplementedError\\n\\n    async def sock_recvfrom(self, sock, bufsize):\\n        raise NotImplementedError\\n\\n    async def sock_recvfrom_into(self, sock, buf, nbytes=0):\\n        raise NotImplementedError\\n\\n    async def sock_sendall(self, sock, data):\\n        raise NotImplementedError\\n\\n    async def sock_sendto(self, sock, data, address):\\n        raise NotImplementedError\\n\\n    async def sock_connect(self, sock, address):\\n        raise NotImplementedError\\n\\n    async def sock_accept(self, sock):\\n        raise NotImplementedError\\n\\n    async def sock_sendfile(self, sock, file, offset=0, count=None,\\n                            *, fallback=None):\\n        raise NotImplementedError\\n\\n    # Signal handling.\\n\\n    def add_signal_handler(self, sig, callback, *args):\\n        raise NotImplementedError\\n\\n    def remove_signal_handler(self, sig):\\n        raise NotImplementedError\\n\\n    # Task factory.\\n\\n    def set_task_factory(self, factory):\\n        raise NotImplementedError\\n\\n    def get_task_factory(self):\\n        raise NotImplementedError\\n\\n    # Error handlers.\\n\\n    def get_exception_handler(self):\\n        raise NotImplementedError\\n\\n    def set_exception_handler(self, handler):\\n        raise NotImplementedError\\n\\n    def default_exception_handler(self, context):\\n        raise NotImplementedError\\n\\n    def call_exception_handler(self, context):\\n        raise NotImplementedError\\n\\n    # Debug flag management.\\n\\n    def get_debug(self):\\n        raise NotImplementedError\\n\\n    def set_debug(self, enabled):\\n        raise NotImplementedError\\n\\n\\nclass AbstractEventLoopPolicy:\\n    \\\"\\\"\\\"Abstract policy for accessing the event loop.\\\"\\\"\\\"\\n\\n    def get_event_loop(self):\\n        \\\"\\\"\\\"Get the event loop for the current context.\\n\\n        Returns an event loop object implementing the AbstractEventLoop interface,\\n        or raises an exception in case no event loop has been set for the\\n        current context and the current policy does not specify to create one.\\n\\n        It should never return None.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def set_event_loop(self, loop):\\n        \\\"\\\"\\\"Set the event loop for the current context to loop.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def new_event_loop(self):\\n        \\\"\\\"\\\"Create and return a new event loop object according to this\\n        policy's rules. If there's need to set this loop as the event loop for\\n        the current context, set_event_loop must be called explicitly.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    # Child processes handling (Unix only).\\n\\n    def get_child_watcher(self):\\n        \\\"Get the watcher for child processes.\\\"\\n        raise NotImplementedError\\n\\n    def set_child_watcher(self, watcher):\\n        \\\"\\\"\\\"Set the watcher for child processes.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n\\nclass BaseDefaultEventLoopPolicy(AbstractEventLoopPolicy):\\n    \\\"\\\"\\\"Default policy implementation for accessing the event loop.\\n\\n    In this policy, each thread has its own event loop.  However, we\\n    only automatically create an event loop by default for the main\\n    thread; other threads by default have no event loop.\\n\\n    Other policies may have different rules (e.g. a single global\\n    event loop, or automatically creating an event loop per thread, or\\n    using some other notion of context to which an event loop is\\n    associated).\\n    \\\"\\\"\\\"\\n\\n    _loop_factory = None\\n\\n    class _Local(threading.local):\\n        _loop = None\\n        _set_called = False\\n\\n    def __init__(self):\\n        self._local = self._Local()\\n\\n    def get_event_loop(self):\\n        \\\"\\\"\\\"Get the event loop for the current context.\\n\\n        Returns an instance of EventLoop or raises an exception.\\n        \\\"\\\"\\\"\\n        if (self._local._loop is None and\\n                not self._local._set_called and\\n                threading.current_thread() is threading.main_thread()):\\n            stacklevel = 2\\n            try:\\n                f = sys._getframe(1)\\n            except AttributeError:\\n                pass\\n            else:\\n                # Move up the call stack so that the warning is attached\\n                # to the line outside asyncio itself.\\n                while f:\\n                    module = f.f_globals.get('__name__')\\n                    if not (module == 'asyncio' or module.startswith('asyncio.')):\\n                        break\\n                    f = f.f_back\\n                    stacklevel += 1\\n            import warnings\\n            warnings.warn('There is no current event loop',\\n                          DeprecationWarning, stacklevel=stacklevel)\\n            self.set_event_loop(self.new_event_loop())\\n\\n        if self._local._loop is None:\\n            raise RuntimeError('There is no current event loop in thread %r.'\\n                               % threading.current_thread().name)\\n\\n        return self._local._loop\\n\\n    def set_event_loop(self, loop):\\n        \\\"\\\"\\\"Set the event loop.\\\"\\\"\\\"\\n        self._local._set_called = True\\n        if loop is not None and not isinstance(loop, AbstractEventLoop):\\n            raise TypeError(f\\\"loop must be an instance of AbstractEventLoop or None, not '{type(loop).__name__}'\\\")\\n        self._local._loop = loop\\n\\n    def new_event_loop(self):\\n        \\\"\\\"\\\"Create a new event loop.\\n\\n        You must call set_event_loop() to make this the current event\\n        loop.\\n        \\\"\\\"\\\"\\n        return self._loop_factory()\\n\\n\\n# Event loop policy.  The policy itself is always global, even if the\\n# policy's rules say that there is an event loop per thread (or other\\n# notion of context).  The default policy is installed by the first\\n# call to get_event_loop_policy().\\n_event_loop_policy = None\\n\\n# Lock for protecting the on-the-fly creation of the event loop policy.\\n_lock = threading.Lock()\\n\\n\\n# A TLS for the running event loop, used by _get_running_loop.\\nclass _RunningLoop(threading.local):\\n    loop_pid = (None, None)\\n\\n\\n_running_loop = _RunningLoop()\\n\\n\\ndef get_running_loop():\\n    \\\"\\\"\\\"Return the running event loop.  Raise a RuntimeError if there is none.\\n\\n    This function is thread-specific.\\n    \\\"\\\"\\\"\\n    # NOTE: this function is implemented in C (see _asynciomodule.c)\\n    loop = _get_running_loop()\\n    if loop is None:\\n        raise RuntimeError('no running event loop')\\n    return loop\\n\\n\\ndef _get_running_loop():\\n    \\\"\\\"\\\"Return the running event loop or None.\\n\\n    This is a low-level function intended to be used by event loops.\\n    This function is thread-specific.\\n    \\\"\\\"\\\"\\n    # NOTE: this function is implemented in C (see _asynciomodule.c)\\n    running_loop, pid = _running_loop.loop_pid\\n    if running_loop is not None and pid == os.getpid():\\n        return running_loop\\n\\n\\ndef _set_running_loop(loop):\\n    \\\"\\\"\\\"Set the running event loop.\\n\\n    This is a low-level function intended to be used by event loops.\\n    This function is thread-specific.\\n    \\\"\\\"\\\"\\n    # NOTE: this function is implemented in C (see _asynciomodule.c)\\n    _running_loop.loop_pid = (loop, os.getpid())\\n\\n\\ndef _init_event_loop_policy():\\n    global _event_loop_policy\\n    with _lock:\\n        if _event_loop_policy is None:  # pragma: no branch\\n            from . import DefaultEventLoopPolicy\\n            _event_loop_policy = DefaultEventLoopPolicy()\\n\\n\\ndef get_event_loop_policy():\\n    \\\"\\\"\\\"Get the current event loop policy.\\\"\\\"\\\"\\n    if _event_loop_policy is None:\\n        _init_event_loop_policy()\\n    return _event_loop_policy\\n\\n\\ndef set_event_loop_policy(policy):\\n    \\\"\\\"\\\"Set the current event loop policy.\\n\\n    If policy is None, the default policy is restored.\\\"\\\"\\\"\\n    global _event_loop_policy\\n    if policy is not None and not isinstance(policy, AbstractEventLoopPolicy):\\n        raise TypeError(f\\\"policy must be an instance of AbstractEventLoopPolicy or None, not '{type(policy).__name__}'\\\")\\n    _event_loop_policy = policy\\n\\n\\ndef get_event_loop():\\n    \\\"\\\"\\\"Return an asyncio event loop.\\n\\n    When called from a coroutine or a callback (e.g. scheduled with call_soon\\n    or similar API), this function will always return the running event loop.\\n\\n    If there is no running event loop set, the function will return\\n    the result of `get_event_loop_policy().get_event_loop()` call.\\n    \\\"\\\"\\\"\\n    # NOTE: this function is implemented in C (see _asynciomodule.c)\\n    current_loop = _get_running_loop()\\n    if current_loop is not None:\\n        return current_loop\\n    return get_event_loop_policy().get_event_loop()\\n\\n\\ndef set_event_loop(loop):\\n    \\\"\\\"\\\"Equivalent to calling get_event_loop_policy().set_event_loop(loop).\\\"\\\"\\\"\\n    get_event_loop_policy().set_event_loop(loop)\\n\\n\\ndef new_event_loop():\\n    \\\"\\\"\\\"Equivalent to calling get_event_loop_policy().new_event_loop().\\\"\\\"\\\"\\n    return get_event_loop_policy().new_event_loop()\\n\\n\\ndef get_child_watcher():\\n    \\\"\\\"\\\"Equivalent to calling get_event_loop_policy().get_child_watcher().\\\"\\\"\\\"\\n    return get_event_loop_policy().get_child_watcher()\\n\\n\\ndef set_child_watcher(watcher):\\n    \\\"\\\"\\\"Equivalent to calling\\n    get_event_loop_policy().set_child_watcher(watcher).\\\"\\\"\\\"\\n    return get_event_loop_policy().set_child_watcher(watcher)\\n\\n\\n# Alias pure-Python implementations for testing purposes.\\n_py__get_running_loop = _get_running_loop\\n_py__set_running_loop = _set_running_loop\\n_py_get_running_loop = get_running_loop\\n_py_get_event_loop = get_event_loop\\n\\n\\ntry:\\n    # get_event_loop() is one of the most frequently called\\n    # functions in asyncio.  Pure Python implementation is\\n    # about 4 times slower than C-accelerated.\\n    from _asyncio import (_get_running_loop, _set_running_loop,\\n                          get_running_loop, get_event_loop)\\nexcept ImportError:\\n    pass\\nelse:\\n    # Alias C implementations for testing purposes.\\n    _c__get_running_loop = _get_running_loop\\n    _c__set_running_loop = _set_running_loop\\n    _c_get_running_loop = get_running_loop\\n    _c_get_event_loop = get_event_loop\\n\\n\\nif hasattr(os, 'fork'):\\n    def on_fork():\\n        # Reset the loop and wakeupfd in the forked child process.\\n        if _event_loop_policy is not None:\\n            _event_loop_policy._local = BaseDefaultEventLoopPolicy._Local()\\n        _set_running_loop(None)\\n        signal.set_wakeup_fd(-1)\\n\\n    os.register_at_fork(after_in_child=on_fork)\\n\", 868], \"/usr/lib/python3.12/asyncio/unix_events.py\": [\"\\\"\\\"\\\"Selector event loop for Unix with signal handling.\\\"\\\"\\\"\\n\\nimport errno\\nimport io\\nimport itertools\\nimport os\\nimport selectors\\nimport signal\\nimport socket\\nimport stat\\nimport subprocess\\nimport sys\\nimport threading\\nimport warnings\\n\\nfrom . import base_events\\nfrom . import base_subprocess\\nfrom . import constants\\nfrom . import coroutines\\nfrom . import events\\nfrom . import exceptions\\nfrom . import futures\\nfrom . import selector_events\\nfrom . import tasks\\nfrom . import transports\\nfrom .log import logger\\n\\n\\n__all__ = (\\n    'SelectorEventLoop',\\n    'AbstractChildWatcher', 'SafeChildWatcher',\\n    'FastChildWatcher', 'PidfdChildWatcher',\\n    'MultiLoopChildWatcher', 'ThreadedChildWatcher',\\n    'DefaultEventLoopPolicy',\\n)\\n\\n\\nif sys.platform == 'win32':  # pragma: no cover\\n    raise ImportError('Signals are not really supported on Windows')\\n\\n\\ndef _sighandler_noop(signum, frame):\\n    \\\"\\\"\\\"Dummy signal handler.\\\"\\\"\\\"\\n    pass\\n\\n\\ndef waitstatus_to_exitcode(status):\\n    try:\\n        return os.waitstatus_to_exitcode(status)\\n    except ValueError:\\n        # The child exited, but we don't understand its status.\\n        # This shouldn't happen, but if it does, let's just\\n        # return that status; perhaps that helps debug it.\\n        return status\\n\\n\\nclass _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):\\n    \\\"\\\"\\\"Unix event loop.\\n\\n    Adds signal handling and UNIX Domain Socket support to SelectorEventLoop.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, selector=None):\\n        super().__init__(selector)\\n        self._signal_handlers = {}\\n\\n    def close(self):\\n        super().close()\\n        if not sys.is_finalizing():\\n            for sig in list(self._signal_handlers):\\n                self.remove_signal_handler(sig)\\n        else:\\n            if self._signal_handlers:\\n                warnings.warn(f\\\"Closing the loop {self!r} \\\"\\n                              f\\\"on interpreter shutdown \\\"\\n                              f\\\"stage, skipping signal handlers removal\\\",\\n                              ResourceWarning,\\n                              source=self)\\n                self._signal_handlers.clear()\\n\\n    def _process_self_data(self, data):\\n        for signum in data:\\n            if not signum:\\n                # ignore null bytes written by _write_to_self()\\n                continue\\n            self._handle_signal(signum)\\n\\n    def add_signal_handler(self, sig, callback, *args):\\n        \\\"\\\"\\\"Add a handler for a signal.  UNIX only.\\n\\n        Raise ValueError if the signal number is invalid or uncatchable.\\n        Raise RuntimeError if there is a problem setting up the handler.\\n        \\\"\\\"\\\"\\n        if (coroutines.iscoroutine(callback) or\\n                coroutines.iscoroutinefunction(callback)):\\n            raise TypeError(\\\"coroutines cannot be used \\\"\\n                            \\\"with add_signal_handler()\\\")\\n        self._check_signal(sig)\\n        self._check_closed()\\n        try:\\n            # set_wakeup_fd() raises ValueError if this is not the\\n            # main thread.  By calling it early we ensure that an\\n            # event loop running in another thread cannot add a signal\\n            # handler.\\n            signal.set_wakeup_fd(self._csock.fileno())\\n        except (ValueError, OSError) as exc:\\n            raise RuntimeError(str(exc))\\n\\n        handle = events.Handle(callback, args, self, None)\\n        self._signal_handlers[sig] = handle\\n\\n        try:\\n            # Register a dummy signal handler to ask Python to write the signal\\n            # number in the wakeup file descriptor. _process_self_data() will\\n            # read signal numbers from this file descriptor to handle signals.\\n            signal.signal(sig, _sighandler_noop)\\n\\n            # Set SA_RESTART to limit EINTR occurrences.\\n            signal.siginterrupt(sig, False)\\n        except OSError as exc:\\n            del self._signal_handlers[sig]\\n            if not self._signal_handlers:\\n                try:\\n                    signal.set_wakeup_fd(-1)\\n                except (ValueError, OSError) as nexc:\\n                    logger.info('set_wakeup_fd(-1) failed: %s', nexc)\\n\\n            if exc.errno == errno.EINVAL:\\n                raise RuntimeError(f'sig {sig} cannot be caught')\\n            else:\\n                raise\\n\\n    def _handle_signal(self, sig):\\n        \\\"\\\"\\\"Internal helper that is the actual signal handler.\\\"\\\"\\\"\\n        handle = self._signal_handlers.get(sig)\\n        if handle is None:\\n            return  # Assume it's some race condition.\\n        if handle._cancelled:\\n            self.remove_signal_handler(sig)  # Remove it properly.\\n        else:\\n            self._add_callback_signalsafe(handle)\\n\\n    def remove_signal_handler(self, sig):\\n        \\\"\\\"\\\"Remove a handler for a signal.  UNIX only.\\n\\n        Return True if a signal handler was removed, False if not.\\n        \\\"\\\"\\\"\\n        self._check_signal(sig)\\n        try:\\n            del self._signal_handlers[sig]\\n        except KeyError:\\n            return False\\n\\n        if sig == signal.SIGINT:\\n            handler = signal.default_int_handler\\n        else:\\n            handler = signal.SIG_DFL\\n\\n        try:\\n            signal.signal(sig, handler)\\n        except OSError as exc:\\n            if exc.errno == errno.EINVAL:\\n                raise RuntimeError(f'sig {sig} cannot be caught')\\n            else:\\n                raise\\n\\n        if not self._signal_handlers:\\n            try:\\n                signal.set_wakeup_fd(-1)\\n            except (ValueError, OSError) as exc:\\n                logger.info('set_wakeup_fd(-1) failed: %s', exc)\\n\\n        return True\\n\\n    def _check_signal(self, sig):\\n        \\\"\\\"\\\"Internal helper to validate a signal.\\n\\n        Raise ValueError if the signal number is invalid or uncatchable.\\n        Raise RuntimeError if there is a problem setting up the handler.\\n        \\\"\\\"\\\"\\n        if not isinstance(sig, int):\\n            raise TypeError(f'sig must be an int, not {sig!r}')\\n\\n        if sig not in signal.valid_signals():\\n            raise ValueError(f'invalid signal number {sig}')\\n\\n    def _make_read_pipe_transport(self, pipe, protocol, waiter=None,\\n                                  extra=None):\\n        return _UnixReadPipeTransport(self, pipe, protocol, waiter, extra)\\n\\n    def _make_write_pipe_transport(self, pipe, protocol, waiter=None,\\n                                   extra=None):\\n        return _UnixWritePipeTransport(self, pipe, protocol, waiter, extra)\\n\\n    async def _make_subprocess_transport(self, protocol, args, shell,\\n                                         stdin, stdout, stderr, bufsize,\\n                                         extra=None, **kwargs):\\n        with warnings.catch_warnings():\\n            warnings.simplefilter('ignore', DeprecationWarning)\\n            watcher = events.get_child_watcher()\\n\\n        with watcher:\\n            if not watcher.is_active():\\n                # Check early.\\n                # Raising exception before process creation\\n                # prevents subprocess execution if the watcher\\n                # is not ready to handle it.\\n                raise RuntimeError(\\\"asyncio.get_child_watcher() is not activated, \\\"\\n                                \\\"subprocess support is not installed.\\\")\\n            waiter = self.create_future()\\n            transp = _UnixSubprocessTransport(self, protocol, args, shell,\\n                                            stdin, stdout, stderr, bufsize,\\n                                            waiter=waiter, extra=extra,\\n                                            **kwargs)\\n            watcher.add_child_handler(transp.get_pid(),\\n                                    self._child_watcher_callback, transp)\\n            try:\\n                await waiter\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException:\\n                transp.close()\\n                await transp._wait()\\n                raise\\n\\n        return transp\\n\\n    def _child_watcher_callback(self, pid, returncode, transp):\\n        self.call_soon_threadsafe(transp._process_exited, returncode)\\n\\n    async def create_unix_connection(\\n            self, protocol_factory, path=None, *,\\n            ssl=None, sock=None,\\n            server_hostname=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None):\\n        assert server_hostname is None or isinstance(server_hostname, str)\\n        if ssl:\\n            if server_hostname is None:\\n                raise ValueError(\\n                    'you have to pass server_hostname when using ssl')\\n        else:\\n            if server_hostname is not None:\\n                raise ValueError('server_hostname is only meaningful with ssl')\\n            if ssl_handshake_timeout is not None:\\n                raise ValueError(\\n                    'ssl_handshake_timeout is only meaningful with ssl')\\n            if ssl_shutdown_timeout is not None:\\n                raise ValueError(\\n                    'ssl_shutdown_timeout is only meaningful with ssl')\\n\\n        if path is not None:\\n            if sock is not None:\\n                raise ValueError(\\n                    'path and sock can not be specified at the same time')\\n\\n            path = os.fspath(path)\\n            sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM, 0)\\n            try:\\n                sock.setblocking(False)\\n                await self.sock_connect(sock, path)\\n            except:\\n                sock.close()\\n                raise\\n\\n        else:\\n            if sock is None:\\n                raise ValueError('no path and sock were specified')\\n            if (sock.family != socket.AF_UNIX or\\n                    sock.type != socket.SOCK_STREAM):\\n                raise ValueError(\\n                    f'A UNIX Domain Stream Socket was expected, got {sock!r}')\\n            sock.setblocking(False)\\n\\n        transport, protocol = await self._create_connection_transport(\\n            sock, protocol_factory, ssl, server_hostname,\\n            ssl_handshake_timeout=ssl_handshake_timeout,\\n            ssl_shutdown_timeout=ssl_shutdown_timeout)\\n        return transport, protocol\\n\\n    async def create_unix_server(\\n            self, protocol_factory, path=None, *,\\n            sock=None, backlog=100, ssl=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            start_serving=True):\\n        if isinstance(ssl, bool):\\n            raise TypeError('ssl argument must be an SSLContext or None')\\n\\n        if ssl_handshake_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_handshake_timeout is only meaningful with ssl')\\n\\n        if ssl_shutdown_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_shutdown_timeout is only meaningful with ssl')\\n\\n        if path is not None:\\n            if sock is not None:\\n                raise ValueError(\\n                    'path and sock can not be specified at the same time')\\n\\n            path = os.fspath(path)\\n            sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)\\n\\n            # Check for abstract socket. `str` and `bytes` paths are supported.\\n            if path[0] not in (0, '\\\\x00'):\\n                try:\\n                    if stat.S_ISSOCK(os.stat(path).st_mode):\\n                        os.remove(path)\\n                except FileNotFoundError:\\n                    pass\\n                except OSError as err:\\n                    # Directory may have permissions only to create socket.\\n                    logger.error('Unable to check or remove stale UNIX socket '\\n                                 '%r: %r', path, err)\\n\\n            try:\\n                sock.bind(path)\\n            except OSError as exc:\\n                sock.close()\\n                if exc.errno == errno.EADDRINUSE:\\n                    # Let's improve the error message by adding\\n                    # with what exact address it occurs.\\n                    msg = f'Address {path!r} is already in use'\\n                    raise OSError(errno.EADDRINUSE, msg) from None\\n                else:\\n                    raise\\n            except:\\n                sock.close()\\n                raise\\n        else:\\n            if sock is None:\\n                raise ValueError(\\n                    'path was not specified, and no sock specified')\\n\\n            if (sock.family != socket.AF_UNIX or\\n                    sock.type != socket.SOCK_STREAM):\\n                raise ValueError(\\n                    f'A UNIX Domain Stream Socket was expected, got {sock!r}')\\n\\n        sock.setblocking(False)\\n        server = base_events.Server(self, [sock], protocol_factory,\\n                                    ssl, backlog, ssl_handshake_timeout,\\n                                    ssl_shutdown_timeout)\\n        if start_serving:\\n            server._start_serving()\\n            # Skip one loop iteration so that all 'loop.add_reader'\\n            # go through.\\n            await tasks.sleep(0)\\n\\n        return server\\n\\n    async def _sock_sendfile_native(self, sock, file, offset, count):\\n        try:\\n            os.sendfile\\n        except AttributeError:\\n            raise exceptions.SendfileNotAvailableError(\\n                \\\"os.sendfile() is not available\\\")\\n        try:\\n            fileno = file.fileno()\\n        except (AttributeError, io.UnsupportedOperation) as err:\\n            raise exceptions.SendfileNotAvailableError(\\\"not a regular file\\\")\\n        try:\\n            fsize = os.fstat(fileno).st_size\\n        except OSError:\\n            raise exceptions.SendfileNotAvailableError(\\\"not a regular file\\\")\\n        blocksize = count if count else fsize\\n        if not blocksize:\\n            return 0  # empty file\\n\\n        fut = self.create_future()\\n        self._sock_sendfile_native_impl(fut, None, sock, fileno,\\n                                        offset, count, blocksize, 0)\\n        return await fut\\n\\n    def _sock_sendfile_native_impl(self, fut, registered_fd, sock, fileno,\\n                                   offset, count, blocksize, total_sent):\\n        fd = sock.fileno()\\n        if registered_fd is not None:\\n            # Remove the callback early.  It should be rare that the\\n            # selector says the fd is ready but the call still returns\\n            # EAGAIN, and I am willing to take a hit in that case in\\n            # order to simplify the common case.\\n            self.remove_writer(registered_fd)\\n        if fut.cancelled():\\n            self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n            return\\n        if count:\\n            blocksize = count - total_sent\\n            if blocksize <= 0:\\n                self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n                fut.set_result(total_sent)\\n                return\\n\\n        try:\\n            sent = os.sendfile(fd, fileno, offset, blocksize)\\n        except (BlockingIOError, InterruptedError):\\n            if registered_fd is None:\\n                self._sock_add_cancellation_callback(fut, sock)\\n            self.add_writer(fd, self._sock_sendfile_native_impl, fut,\\n                            fd, sock, fileno,\\n                            offset, count, blocksize, total_sent)\\n        except OSError as exc:\\n            if (registered_fd is not None and\\n                    exc.errno == errno.ENOTCONN and\\n                    type(exc) is not ConnectionError):\\n                # If we have an ENOTCONN and this isn't a first call to\\n                # sendfile(), i.e. the connection was closed in the middle\\n                # of the operation, normalize the error to ConnectionError\\n                # to make it consistent across all Posix systems.\\n                new_exc = ConnectionError(\\n                    \\\"socket is not connected\\\", errno.ENOTCONN)\\n                new_exc.__cause__ = exc\\n                exc = new_exc\\n            if total_sent == 0:\\n                # We can get here for different reasons, the main\\n                # one being 'file' is not a regular mmap(2)-like\\n                # file, in which case we'll fall back on using\\n                # plain send().\\n                err = exceptions.SendfileNotAvailableError(\\n                    \\\"os.sendfile call failed\\\")\\n                self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n                fut.set_exception(err)\\n            else:\\n                self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n                fut.set_exception(exc)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n            fut.set_exception(exc)\\n        else:\\n            if sent == 0:\\n                # EOF\\n                self._sock_sendfile_update_filepos(fileno, offset, total_sent)\\n                fut.set_result(total_sent)\\n            else:\\n                offset += sent\\n                total_sent += sent\\n                if registered_fd is None:\\n                    self._sock_add_cancellation_callback(fut, sock)\\n                self.add_writer(fd, self._sock_sendfile_native_impl, fut,\\n                                fd, sock, fileno,\\n                                offset, count, blocksize, total_sent)\\n\\n    def _sock_sendfile_update_filepos(self, fileno, offset, total_sent):\\n        if total_sent > 0:\\n            os.lseek(fileno, offset, os.SEEK_SET)\\n\\n    def _sock_add_cancellation_callback(self, fut, sock):\\n        def cb(fut):\\n            if fut.cancelled():\\n                fd = sock.fileno()\\n                if fd != -1:\\n                    self.remove_writer(fd)\\n        fut.add_done_callback(cb)\\n\\n\\nclass _UnixReadPipeTransport(transports.ReadTransport):\\n\\n    max_size = 256 * 1024  # max bytes we read in one event loop iteration\\n\\n    def __init__(self, loop, pipe, protocol, waiter=None, extra=None):\\n        super().__init__(extra)\\n        self._extra['pipe'] = pipe\\n        self._loop = loop\\n        self._pipe = pipe\\n        self._fileno = pipe.fileno()\\n        self._protocol = protocol\\n        self._closing = False\\n        self._paused = False\\n\\n        mode = os.fstat(self._fileno).st_mode\\n        if not (stat.S_ISFIFO(mode) or\\n                stat.S_ISSOCK(mode) or\\n                stat.S_ISCHR(mode)):\\n            self._pipe = None\\n            self._fileno = None\\n            self._protocol = None\\n            raise ValueError(\\\"Pipe transport is for pipes/sockets only.\\\")\\n\\n        os.set_blocking(self._fileno, False)\\n\\n        self._loop.call_soon(self._protocol.connection_made, self)\\n        # only start reading when connection_made() has been called\\n        self._loop.call_soon(self._add_reader,\\n                             self._fileno, self._read_ready)\\n        if waiter is not None:\\n            # only wake up the waiter when connection_made() has been called\\n            self._loop.call_soon(futures._set_result_unless_cancelled,\\n                                 waiter, None)\\n\\n    def _add_reader(self, fd, callback):\\n        if not self.is_reading():\\n            return\\n        self._loop._add_reader(fd, callback)\\n\\n    def is_reading(self):\\n        return not self._paused and not self._closing\\n\\n    def __repr__(self):\\n        info = [self.__class__.__name__]\\n        if self._pipe is None:\\n            info.append('closed')\\n        elif self._closing:\\n            info.append('closing')\\n        info.append(f'fd={self._fileno}')\\n        selector = getattr(self._loop, '_selector', None)\\n        if self._pipe is not None and selector is not None:\\n            polling = selector_events._test_selector_event(\\n                selector, self._fileno, selectors.EVENT_READ)\\n            if polling:\\n                info.append('polling')\\n            else:\\n                info.append('idle')\\n        elif self._pipe is not None:\\n            info.append('open')\\n        else:\\n            info.append('closed')\\n        return '<{}>'.format(' '.join(info))\\n\\n    def _read_ready(self):\\n        try:\\n            data = os.read(self._fileno, self.max_size)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        except OSError as exc:\\n            self._fatal_error(exc, 'Fatal read error on pipe transport')\\n        else:\\n            if data:\\n                self._protocol.data_received(data)\\n            else:\\n                if self._loop.get_debug():\\n                    logger.info(\\\"%r was closed by peer\\\", self)\\n                self._closing = True\\n                self._loop._remove_reader(self._fileno)\\n                self._loop.call_soon(self._protocol.eof_received)\\n                self._loop.call_soon(self._call_connection_lost, None)\\n\\n    def pause_reading(self):\\n        if not self.is_reading():\\n            return\\n        self._paused = True\\n        self._loop._remove_reader(self._fileno)\\n        if self._loop.get_debug():\\n            logger.debug(\\\"%r pauses reading\\\", self)\\n\\n    def resume_reading(self):\\n        if self._closing or not self._paused:\\n            return\\n        self._paused = False\\n        self._loop._add_reader(self._fileno, self._read_ready)\\n        if self._loop.get_debug():\\n            logger.debug(\\\"%r resumes reading\\\", self)\\n\\n    def set_protocol(self, protocol):\\n        self._protocol = protocol\\n\\n    def get_protocol(self):\\n        return self._protocol\\n\\n    def is_closing(self):\\n        return self._closing\\n\\n    def close(self):\\n        if not self._closing:\\n            self._close(None)\\n\\n    def __del__(self, _warn=warnings.warn):\\n        if self._pipe is not None:\\n            _warn(f\\\"unclosed transport {self!r}\\\", ResourceWarning, source=self)\\n            self._pipe.close()\\n\\n    def _fatal_error(self, exc, message='Fatal error on pipe transport'):\\n        # should be called by exception handler only\\n        if (isinstance(exc, OSError) and exc.errno == errno.EIO):\\n            if self._loop.get_debug():\\n                logger.debug(\\\"%r: %s\\\", self, message, exc_info=True)\\n        else:\\n            self._loop.call_exception_handler({\\n                'message': message,\\n                'exception': exc,\\n                'transport': self,\\n                'protocol': self._protocol,\\n            })\\n        self._close(exc)\\n\\n    def _close(self, exc):\\n        self._closing = True\\n        self._loop._remove_reader(self._fileno)\\n        self._loop.call_soon(self._call_connection_lost, exc)\\n\\n    def _call_connection_lost(self, exc):\\n        try:\\n            self._protocol.connection_lost(exc)\\n        finally:\\n            self._pipe.close()\\n            self._pipe = None\\n            self._protocol = None\\n            self._loop = None\\n\\n\\nclass _UnixWritePipeTransport(transports._FlowControlMixin,\\n                              transports.WriteTransport):\\n\\n    def __init__(self, loop, pipe, protocol, waiter=None, extra=None):\\n        super().__init__(extra, loop)\\n        self._extra['pipe'] = pipe\\n        self._pipe = pipe\\n        self._fileno = pipe.fileno()\\n        self._protocol = protocol\\n        self._buffer = bytearray()\\n        self._conn_lost = 0\\n        self._closing = False  # Set when close() or write_eof() called.\\n\\n        mode = os.fstat(self._fileno).st_mode\\n        is_char = stat.S_ISCHR(mode)\\n        is_fifo = stat.S_ISFIFO(mode)\\n        is_socket = stat.S_ISSOCK(mode)\\n        if not (is_char or is_fifo or is_socket):\\n            self._pipe = None\\n            self._fileno = None\\n            self._protocol = None\\n            raise ValueError(\\\"Pipe transport is only for \\\"\\n                             \\\"pipes, sockets and character devices\\\")\\n\\n        os.set_blocking(self._fileno, False)\\n        self._loop.call_soon(self._protocol.connection_made, self)\\n\\n        # On AIX, the reader trick (to be notified when the read end of the\\n        # socket is closed) only works for sockets. On other platforms it\\n        # works for pipes and sockets. (Exception: OS X 10.4?  Issue #19294.)\\n        if is_socket or (is_fifo and not sys.platform.startswith(\\\"aix\\\")):\\n            # only start reading when connection_made() has been called\\n            self._loop.call_soon(self._loop._add_reader,\\n                                 self._fileno, self._read_ready)\\n\\n        if waiter is not None:\\n            # only wake up the waiter when connection_made() has been called\\n            self._loop.call_soon(futures._set_result_unless_cancelled,\\n                                 waiter, None)\\n\\n    def __repr__(self):\\n        info = [self.__class__.__name__]\\n        if self._pipe is None:\\n            info.append('closed')\\n        elif self._closing:\\n            info.append('closing')\\n        info.append(f'fd={self._fileno}')\\n        selector = getattr(self._loop, '_selector', None)\\n        if self._pipe is not None and selector is not None:\\n            polling = selector_events._test_selector_event(\\n                selector, self._fileno, selectors.EVENT_WRITE)\\n            if polling:\\n                info.append('polling')\\n            else:\\n                info.append('idle')\\n\\n            bufsize = self.get_write_buffer_size()\\n            info.append(f'bufsize={bufsize}')\\n        elif self._pipe is not None:\\n            info.append('open')\\n        else:\\n            info.append('closed')\\n        return '<{}>'.format(' '.join(info))\\n\\n    def get_write_buffer_size(self):\\n        return len(self._buffer)\\n\\n    def _read_ready(self):\\n        # Pipe was closed by peer.\\n        if self._loop.get_debug():\\n            logger.info(\\\"%r was closed by peer\\\", self)\\n        if self._buffer:\\n            self._close(BrokenPipeError())\\n        else:\\n            self._close()\\n\\n    def write(self, data):\\n        assert isinstance(data, (bytes, bytearray, memoryview)), repr(data)\\n        if isinstance(data, bytearray):\\n            data = memoryview(data)\\n        if not data:\\n            return\\n\\n        if self._conn_lost or self._closing:\\n            if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:\\n                logger.warning('pipe closed by peer or '\\n                               'os.write(pipe, data) raised exception.')\\n            self._conn_lost += 1\\n            return\\n\\n        if not self._buffer:\\n            # Attempt to send it right away first.\\n            try:\\n                n = os.write(self._fileno, data)\\n            except (BlockingIOError, InterruptedError):\\n                n = 0\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException as exc:\\n                self._conn_lost += 1\\n                self._fatal_error(exc, 'Fatal write error on pipe transport')\\n                return\\n            if n == len(data):\\n                return\\n            elif n > 0:\\n                data = memoryview(data)[n:]\\n            self._loop._add_writer(self._fileno, self._write_ready)\\n\\n        self._buffer += data\\n        self._maybe_pause_protocol()\\n\\n    def _write_ready(self):\\n        assert self._buffer, 'Data should not be empty'\\n\\n        try:\\n            n = os.write(self._fileno, self._buffer)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._buffer.clear()\\n            self._conn_lost += 1\\n            # Remove writer here, _fatal_error() doesn't it\\n            # because _buffer is empty.\\n            self._loop._remove_writer(self._fileno)\\n            self._fatal_error(exc, 'Fatal write error on pipe transport')\\n        else:\\n            if n == len(self._buffer):\\n                self._buffer.clear()\\n                self._loop._remove_writer(self._fileno)\\n                self._maybe_resume_protocol()  # May append to buffer.\\n                if self._closing:\\n                    self._loop._remove_reader(self._fileno)\\n                    self._call_connection_lost(None)\\n                return\\n            elif n > 0:\\n                del self._buffer[:n]\\n\\n    def can_write_eof(self):\\n        return True\\n\\n    def write_eof(self):\\n        if self._closing:\\n            return\\n        assert self._pipe\\n        self._closing = True\\n        if not self._buffer:\\n            self._loop._remove_reader(self._fileno)\\n            self._loop.call_soon(self._call_connection_lost, None)\\n\\n    def set_protocol(self, protocol):\\n        self._protocol = protocol\\n\\n    def get_protocol(self):\\n        return self._protocol\\n\\n    def is_closing(self):\\n        return self._closing\\n\\n    def close(self):\\n        if self._pipe is not None and not self._closing:\\n            # write_eof is all what we needed to close the write pipe\\n            self.write_eof()\\n\\n    def __del__(self, _warn=warnings.warn):\\n        if self._pipe is not None:\\n            _warn(f\\\"unclosed transport {self!r}\\\", ResourceWarning, source=self)\\n            self._pipe.close()\\n\\n    def abort(self):\\n        self._close(None)\\n\\n    def _fatal_error(self, exc, message='Fatal error on pipe transport'):\\n        # should be called by exception handler only\\n        if isinstance(exc, OSError):\\n            if self._loop.get_debug():\\n                logger.debug(\\\"%r: %s\\\", self, message, exc_info=True)\\n        else:\\n            self._loop.call_exception_handler({\\n                'message': message,\\n                'exception': exc,\\n                'transport': self,\\n                'protocol': self._protocol,\\n            })\\n        self._close(exc)\\n\\n    def _close(self, exc=None):\\n        self._closing = True\\n        if self._buffer:\\n            self._loop._remove_writer(self._fileno)\\n        self._buffer.clear()\\n        self._loop._remove_reader(self._fileno)\\n        self._loop.call_soon(self._call_connection_lost, exc)\\n\\n    def _call_connection_lost(self, exc):\\n        try:\\n            self._protocol.connection_lost(exc)\\n        finally:\\n            self._pipe.close()\\n            self._pipe = None\\n            self._protocol = None\\n            self._loop = None\\n\\n\\nclass _UnixSubprocessTransport(base_subprocess.BaseSubprocessTransport):\\n\\n    def _start(self, args, shell, stdin, stdout, stderr, bufsize, **kwargs):\\n        stdin_w = None\\n        if stdin == subprocess.PIPE and sys.platform.startswith('aix'):\\n            # Use a socket pair for stdin on AIX, since it does not\\n            # support selecting read events on the write end of a\\n            # socket (which we use in order to detect closing of the\\n            # other end).\\n            stdin, stdin_w = socket.socketpair()\\n        try:\\n            self._proc = subprocess.Popen(\\n                args, shell=shell, stdin=stdin, stdout=stdout, stderr=stderr,\\n                universal_newlines=False, bufsize=bufsize, **kwargs)\\n            if stdin_w is not None:\\n                stdin.close()\\n                self._proc.stdin = open(stdin_w.detach(), 'wb', buffering=bufsize)\\n                stdin_w = None\\n        finally:\\n            if stdin_w is not None:\\n                stdin.close()\\n                stdin_w.close()\\n\\n\\nclass AbstractChildWatcher:\\n    \\\"\\\"\\\"Abstract base class for monitoring child processes.\\n\\n    Objects derived from this class monitor a collection of subprocesses and\\n    report their termination or interruption by a signal.\\n\\n    New callbacks are registered with .add_child_handler(). Starting a new\\n    process must be done within a 'with' block to allow the watcher to suspend\\n    its activity until the new process if fully registered (this is needed to\\n    prevent a race condition in some implementations).\\n\\n    Example:\\n        with watcher:\\n            proc = subprocess.Popen(\\\"sleep 1\\\")\\n            watcher.add_child_handler(proc.pid, callback)\\n\\n    Notes:\\n        Implementations of this class must be thread-safe.\\n\\n        Since child watcher objects may catch the SIGCHLD signal and call\\n        waitpid(-1), there should be only one active object per process.\\n    \\\"\\\"\\\"\\n\\n    def __init_subclass__(cls) -> None:\\n        if cls.__module__ != __name__:\\n            warnings._deprecated(\\\"AbstractChildWatcher\\\",\\n                             \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                             \\\"removed in Python {remove}.\\\",\\n                              remove=(3, 14))\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        \\\"\\\"\\\"Register a new child handler.\\n\\n        Arrange for callback(pid, returncode, *args) to be called when\\n        process 'pid' terminates. Specifying another callback for the same\\n        process replaces the previous handler.\\n\\n        Note: callback() must be thread-safe.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n    def remove_child_handler(self, pid):\\n        \\\"\\\"\\\"Removes the handler for process 'pid'.\\n\\n        The function returns True if the handler was successfully removed,\\n        False if there was nothing to remove.\\\"\\\"\\\"\\n\\n        raise NotImplementedError()\\n\\n    def attach_loop(self, loop):\\n        \\\"\\\"\\\"Attach the watcher to an event loop.\\n\\n        If the watcher was previously attached to an event loop, then it is\\n        first detached before attaching to the new loop.\\n\\n        Note: loop may be None.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the watcher.\\n\\n        This must be called to make sure that any underlying resource is freed.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n    def is_active(self):\\n        \\\"\\\"\\\"Return ``True`` if the watcher is active and is used by the event loop.\\n\\n        Return True if the watcher is installed and ready to handle process exit\\n        notifications.\\n\\n        \\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Enter the watcher's context and allow starting new processes\\n\\n        This function must return self\\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n    def __exit__(self, a, b, c):\\n        \\\"\\\"\\\"Exit the watcher's context\\\"\\\"\\\"\\n        raise NotImplementedError()\\n\\n\\nclass PidfdChildWatcher(AbstractChildWatcher):\\n    \\\"\\\"\\\"Child watcher implementation using Linux's pid file descriptors.\\n\\n    This child watcher polls process file descriptors (pidfds) to await child\\n    process termination. In some respects, PidfdChildWatcher is a \\\"Goldilocks\\\"\\n    child watcher implementation. It doesn't require signals or threads, doesn't\\n    interfere with any processes launched outside the event loop, and scales\\n    linearly with the number of subprocesses launched by the event loop. The\\n    main disadvantage is that pidfds are specific to Linux, and only work on\\n    recent (5.3+) kernels.\\n    \\\"\\\"\\\"\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, exc_type, exc_value, exc_traceback):\\n        pass\\n\\n    def is_active(self):\\n        return True\\n\\n    def close(self):\\n        pass\\n\\n    def attach_loop(self, loop):\\n        pass\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        loop = events.get_running_loop()\\n        pidfd = os.pidfd_open(pid)\\n        loop._add_reader(pidfd, self._do_wait, pid, pidfd, callback, args)\\n\\n    def _do_wait(self, pid, pidfd, callback, args):\\n        loop = events.get_running_loop()\\n        loop._remove_reader(pidfd)\\n        try:\\n            _, status = os.waitpid(pid, 0)\\n        except ChildProcessError:\\n            # The child process is already reaped\\n            # (may happen if waitpid() is called elsewhere).\\n            returncode = 255\\n            logger.warning(\\n                \\\"child process pid %d exit status already read: \\\"\\n                \\\" will report returncode 255\\\",\\n                pid)\\n        else:\\n            returncode = waitstatus_to_exitcode(status)\\n\\n        os.close(pidfd)\\n        callback(pid, returncode, *args)\\n\\n    def remove_child_handler(self, pid):\\n        # asyncio never calls remove_child_handler() !!!\\n        # The method is no-op but is implemented because\\n        # abstract base classes require it.\\n        return True\\n\\n\\nclass BaseChildWatcher(AbstractChildWatcher):\\n\\n    def __init__(self):\\n        self._loop = None\\n        self._callbacks = {}\\n\\n    def close(self):\\n        self.attach_loop(None)\\n\\n    def is_active(self):\\n        return self._loop is not None and self._loop.is_running()\\n\\n    def _do_waitpid(self, expected_pid):\\n        raise NotImplementedError()\\n\\n    def _do_waitpid_all(self):\\n        raise NotImplementedError()\\n\\n    def attach_loop(self, loop):\\n        assert loop is None or isinstance(loop, events.AbstractEventLoop)\\n\\n        if self._loop is not None and loop is None and self._callbacks:\\n            warnings.warn(\\n                'A loop is being detached '\\n                'from a child watcher with pending handlers',\\n                RuntimeWarning)\\n\\n        if self._loop is not None:\\n            self._loop.remove_signal_handler(signal.SIGCHLD)\\n\\n        self._loop = loop\\n        if loop is not None:\\n            loop.add_signal_handler(signal.SIGCHLD, self._sig_chld)\\n\\n            # Prevent a race condition in case a child terminated\\n            # during the switch.\\n            self._do_waitpid_all()\\n\\n    def _sig_chld(self):\\n        try:\\n            self._do_waitpid_all()\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            # self._loop should always be available here\\n            # as '_sig_chld' is added as a signal handler\\n            # in 'attach_loop'\\n            self._loop.call_exception_handler({\\n                'message': 'Unknown exception in SIGCHLD handler',\\n                'exception': exc,\\n            })\\n\\n\\nclass SafeChildWatcher(BaseChildWatcher):\\n    \\\"\\\"\\\"'Safe' child watcher implementation.\\n\\n    This implementation avoids disrupting other code spawning processes by\\n    polling explicitly each process in the SIGCHLD handler instead of calling\\n    os.waitpid(-1).\\n\\n    This is a safe solution but it has a significant overhead when handling a\\n    big number of children (O(n) each time SIGCHLD is raised)\\n    \\\"\\\"\\\"\\n\\n    def __init__(self):\\n        super().__init__()\\n        warnings._deprecated(\\\"SafeChildWatcher\\\",\\n                             \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                             \\\"removed in Python {remove}.\\\",\\n                              remove=(3, 14))\\n\\n    def close(self):\\n        self._callbacks.clear()\\n        super().close()\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, a, b, c):\\n        pass\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        self._callbacks[pid] = (callback, args)\\n\\n        # Prevent a race condition in case the child is already terminated.\\n        self._do_waitpid(pid)\\n\\n    def remove_child_handler(self, pid):\\n        try:\\n            del self._callbacks[pid]\\n            return True\\n        except KeyError:\\n            return False\\n\\n    def _do_waitpid_all(self):\\n\\n        for pid in list(self._callbacks):\\n            self._do_waitpid(pid)\\n\\n    def _do_waitpid(self, expected_pid):\\n        assert expected_pid > 0\\n\\n        try:\\n            pid, status = os.waitpid(expected_pid, os.WNOHANG)\\n        except ChildProcessError:\\n            # The child process is already reaped\\n            # (may happen if waitpid() is called elsewhere).\\n            pid = expected_pid\\n            returncode = 255\\n            logger.warning(\\n                \\\"Unknown child process pid %d, will report returncode 255\\\",\\n                pid)\\n        else:\\n            if pid == 0:\\n                # The child process is still alive.\\n                return\\n\\n            returncode = waitstatus_to_exitcode(status)\\n            if self._loop.get_debug():\\n                logger.debug('process %s exited with returncode %s',\\n                             expected_pid, returncode)\\n\\n        try:\\n            callback, args = self._callbacks.pop(pid)\\n        except KeyError:  # pragma: no cover\\n            # May happen if .remove_child_handler() is called\\n            # after os.waitpid() returns.\\n            if self._loop.get_debug():\\n                logger.warning(\\\"Child watcher got an unexpected pid: %r\\\",\\n                               pid, exc_info=True)\\n        else:\\n            callback(pid, returncode, *args)\\n\\n\\nclass FastChildWatcher(BaseChildWatcher):\\n    \\\"\\\"\\\"'Fast' child watcher implementation.\\n\\n    This implementation reaps every terminated processes by calling\\n    os.waitpid(-1) directly, possibly breaking other code spawning processes\\n    and waiting for their termination.\\n\\n    There is no noticeable overhead when handling a big number of children\\n    (O(1) each time a child terminates).\\n    \\\"\\\"\\\"\\n    def __init__(self):\\n        super().__init__()\\n        self._lock = threading.Lock()\\n        self._zombies = {}\\n        self._forks = 0\\n        warnings._deprecated(\\\"FastChildWatcher\\\",\\n                             \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                             \\\"removed in Python {remove}.\\\",\\n                              remove=(3, 14))\\n\\n    def close(self):\\n        self._callbacks.clear()\\n        self._zombies.clear()\\n        super().close()\\n\\n    def __enter__(self):\\n        with self._lock:\\n            self._forks += 1\\n\\n            return self\\n\\n    def __exit__(self, a, b, c):\\n        with self._lock:\\n            self._forks -= 1\\n\\n            if self._forks or not self._zombies:\\n                return\\n\\n            collateral_victims = str(self._zombies)\\n            self._zombies.clear()\\n\\n        logger.warning(\\n            \\\"Caught subprocesses termination from unknown pids: %s\\\",\\n            collateral_victims)\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        assert self._forks, \\\"Must use the context manager\\\"\\n\\n        with self._lock:\\n            try:\\n                returncode = self._zombies.pop(pid)\\n            except KeyError:\\n                # The child is running.\\n                self._callbacks[pid] = callback, args\\n                return\\n\\n        # The child is dead already. We can fire the callback.\\n        callback(pid, returncode, *args)\\n\\n    def remove_child_handler(self, pid):\\n        try:\\n            del self._callbacks[pid]\\n            return True\\n        except KeyError:\\n            return False\\n\\n    def _do_waitpid_all(self):\\n        # Because of signal coalescing, we must keep calling waitpid() as\\n        # long as we're able to reap a child.\\n        while True:\\n            try:\\n                pid, status = os.waitpid(-1, os.WNOHANG)\\n            except ChildProcessError:\\n                # No more child processes exist.\\n                return\\n            else:\\n                if pid == 0:\\n                    # A child process is still alive.\\n                    return\\n\\n                returncode = waitstatus_to_exitcode(status)\\n\\n            with self._lock:\\n                try:\\n                    callback, args = self._callbacks.pop(pid)\\n                except KeyError:\\n                    # unknown child\\n                    if self._forks:\\n                        # It may not be registered yet.\\n                        self._zombies[pid] = returncode\\n                        if self._loop.get_debug():\\n                            logger.debug('unknown process %s exited '\\n                                         'with returncode %s',\\n                                         pid, returncode)\\n                        continue\\n                    callback = None\\n                else:\\n                    if self._loop.get_debug():\\n                        logger.debug('process %s exited with returncode %s',\\n                                     pid, returncode)\\n\\n            if callback is None:\\n                logger.warning(\\n                    \\\"Caught subprocess termination from unknown pid: \\\"\\n                    \\\"%d -> %d\\\", pid, returncode)\\n            else:\\n                callback(pid, returncode, *args)\\n\\n\\nclass MultiLoopChildWatcher(AbstractChildWatcher):\\n    \\\"\\\"\\\"A watcher that doesn't require running loop in the main thread.\\n\\n    This implementation registers a SIGCHLD signal handler on\\n    instantiation (which may conflict with other code that\\n    install own handler for this signal).\\n\\n    The solution is safe but it has a significant overhead when\\n    handling a big number of processes (*O(n)* each time a\\n    SIGCHLD is received).\\n    \\\"\\\"\\\"\\n\\n    # Implementation note:\\n    # The class keeps compatibility with AbstractChildWatcher ABC\\n    # To achieve this it has empty attach_loop() method\\n    # and doesn't accept explicit loop argument\\n    # for add_child_handler()/remove_child_handler()\\n    # but retrieves the current loop by get_running_loop()\\n\\n    def __init__(self):\\n        self._callbacks = {}\\n        self._saved_sighandler = None\\n        warnings._deprecated(\\\"MultiLoopChildWatcher\\\",\\n                             \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                             \\\"removed in Python {remove}.\\\",\\n                              remove=(3, 14))\\n\\n    def is_active(self):\\n        return self._saved_sighandler is not None\\n\\n    def close(self):\\n        self._callbacks.clear()\\n        if self._saved_sighandler is None:\\n            return\\n\\n        handler = signal.getsignal(signal.SIGCHLD)\\n        if handler != self._sig_chld:\\n            logger.warning(\\\"SIGCHLD handler was changed by outside code\\\")\\n        else:\\n            signal.signal(signal.SIGCHLD, self._saved_sighandler)\\n        self._saved_sighandler = None\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, exc_type, exc_val, exc_tb):\\n        pass\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        loop = events.get_running_loop()\\n        self._callbacks[pid] = (loop, callback, args)\\n\\n        # Prevent a race condition in case the child is already terminated.\\n        self._do_waitpid(pid)\\n\\n    def remove_child_handler(self, pid):\\n        try:\\n            del self._callbacks[pid]\\n            return True\\n        except KeyError:\\n            return False\\n\\n    def attach_loop(self, loop):\\n        # Don't save the loop but initialize itself if called first time\\n        # The reason to do it here is that attach_loop() is called from\\n        # unix policy only for the main thread.\\n        # Main thread is required for subscription on SIGCHLD signal\\n        if self._saved_sighandler is not None:\\n            return\\n\\n        self._saved_sighandler = signal.signal(signal.SIGCHLD, self._sig_chld)\\n        if self._saved_sighandler is None:\\n            logger.warning(\\\"Previous SIGCHLD handler was set by non-Python code, \\\"\\n                           \\\"restore to default handler on watcher close.\\\")\\n            self._saved_sighandler = signal.SIG_DFL\\n\\n        # Set SA_RESTART to limit EINTR occurrences.\\n        signal.siginterrupt(signal.SIGCHLD, False)\\n\\n    def _do_waitpid_all(self):\\n        for pid in list(self._callbacks):\\n            self._do_waitpid(pid)\\n\\n    def _do_waitpid(self, expected_pid):\\n        assert expected_pid > 0\\n\\n        try:\\n            pid, status = os.waitpid(expected_pid, os.WNOHANG)\\n        except ChildProcessError:\\n            # The child process is already reaped\\n            # (may happen if waitpid() is called elsewhere).\\n            pid = expected_pid\\n            returncode = 255\\n            logger.warning(\\n                \\\"Unknown child process pid %d, will report returncode 255\\\",\\n                pid)\\n            debug_log = False\\n        else:\\n            if pid == 0:\\n                # The child process is still alive.\\n                return\\n\\n            returncode = waitstatus_to_exitcode(status)\\n            debug_log = True\\n        try:\\n            loop, callback, args = self._callbacks.pop(pid)\\n        except KeyError:  # pragma: no cover\\n            # May happen if .remove_child_handler() is called\\n            # after os.waitpid() returns.\\n            logger.warning(\\\"Child watcher got an unexpected pid: %r\\\",\\n                           pid, exc_info=True)\\n        else:\\n            if loop.is_closed():\\n                logger.warning(\\\"Loop %r that handles pid %r is closed\\\", loop, pid)\\n            else:\\n                if debug_log and loop.get_debug():\\n                    logger.debug('process %s exited with returncode %s',\\n                                 expected_pid, returncode)\\n                loop.call_soon_threadsafe(callback, pid, returncode, *args)\\n\\n    def _sig_chld(self, signum, frame):\\n        try:\\n            self._do_waitpid_all()\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException:\\n            logger.warning('Unknown exception in SIGCHLD handler', exc_info=True)\\n\\n\\nclass ThreadedChildWatcher(AbstractChildWatcher):\\n    \\\"\\\"\\\"Threaded child watcher implementation.\\n\\n    The watcher uses a thread per process\\n    for waiting for the process finish.\\n\\n    It doesn't require subscription on POSIX signal\\n    but a thread creation is not free.\\n\\n    The watcher has O(1) complexity, its performance doesn't depend\\n    on amount of spawn processes.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self):\\n        self._pid_counter = itertools.count(0)\\n        self._threads = {}\\n\\n    def is_active(self):\\n        return True\\n\\n    def close(self):\\n        pass\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, exc_type, exc_val, exc_tb):\\n        pass\\n\\n    def __del__(self, _warn=warnings.warn):\\n        threads = [thread for thread in list(self._threads.values())\\n                   if thread.is_alive()]\\n        if threads:\\n            _warn(f\\\"{self.__class__} has registered but not finished child processes\\\",\\n                  ResourceWarning,\\n                  source=self)\\n\\n    def add_child_handler(self, pid, callback, *args):\\n        loop = events.get_running_loop()\\n        thread = threading.Thread(target=self._do_waitpid,\\n                                  name=f\\\"asyncio-waitpid-{next(self._pid_counter)}\\\",\\n                                  args=(loop, pid, callback, args),\\n                                  daemon=True)\\n        self._threads[pid] = thread\\n        thread.start()\\n\\n    def remove_child_handler(self, pid):\\n        # asyncio never calls remove_child_handler() !!!\\n        # The method is no-op but is implemented because\\n        # abstract base classes require it.\\n        return True\\n\\n    def attach_loop(self, loop):\\n        pass\\n\\n    def _do_waitpid(self, loop, expected_pid, callback, args):\\n        assert expected_pid > 0\\n\\n        try:\\n            pid, status = os.waitpid(expected_pid, 0)\\n        except ChildProcessError:\\n            # The child process is already reaped\\n            # (may happen if waitpid() is called elsewhere).\\n            pid = expected_pid\\n            returncode = 255\\n            logger.warning(\\n                \\\"Unknown child process pid %d, will report returncode 255\\\",\\n                pid)\\n        else:\\n            returncode = waitstatus_to_exitcode(status)\\n            if loop.get_debug():\\n                logger.debug('process %s exited with returncode %s',\\n                             expected_pid, returncode)\\n\\n        if loop.is_closed():\\n            logger.warning(\\\"Loop %r that handles pid %r is closed\\\", loop, pid)\\n        else:\\n            loop.call_soon_threadsafe(callback, pid, returncode, *args)\\n\\n        self._threads.pop(expected_pid)\\n\\ndef can_use_pidfd():\\n    if not hasattr(os, 'pidfd_open'):\\n        return False\\n    try:\\n        pid = os.getpid()\\n        os.close(os.pidfd_open(pid, 0))\\n    except OSError:\\n        # blocked by security policy like SECCOMP\\n        return False\\n    return True\\n\\n\\nclass _UnixDefaultEventLoopPolicy(events.BaseDefaultEventLoopPolicy):\\n    \\\"\\\"\\\"UNIX event loop policy with a watcher for child processes.\\\"\\\"\\\"\\n    _loop_factory = _UnixSelectorEventLoop\\n\\n    def __init__(self):\\n        super().__init__()\\n        self._watcher = None\\n\\n    def _init_watcher(self):\\n        with events._lock:\\n            if self._watcher is None:  # pragma: no branch\\n                if can_use_pidfd():\\n                    self._watcher = PidfdChildWatcher()\\n                else:\\n                    self._watcher = ThreadedChildWatcher()\\n\\n    def set_event_loop(self, loop):\\n        \\\"\\\"\\\"Set the event loop.\\n\\n        As a side effect, if a child watcher was set before, then calling\\n        .set_event_loop() from the main thread will call .attach_loop(loop) on\\n        the child watcher.\\n        \\\"\\\"\\\"\\n\\n        super().set_event_loop(loop)\\n\\n        if (self._watcher is not None and\\n                threading.current_thread() is threading.main_thread()):\\n            self._watcher.attach_loop(loop)\\n\\n    def get_child_watcher(self):\\n        \\\"\\\"\\\"Get the watcher for child processes.\\n\\n        If not yet set, a ThreadedChildWatcher object is automatically created.\\n        \\\"\\\"\\\"\\n        if self._watcher is None:\\n            self._init_watcher()\\n\\n        warnings._deprecated(\\\"get_child_watcher\\\",\\n                            \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                            \\\"removed in Python {remove}.\\\", remove=(3, 14))\\n        return self._watcher\\n\\n    def set_child_watcher(self, watcher):\\n        \\\"\\\"\\\"Set the watcher for child processes.\\\"\\\"\\\"\\n\\n        assert watcher is None or isinstance(watcher, AbstractChildWatcher)\\n\\n        if self._watcher is not None:\\n            self._watcher.close()\\n\\n        self._watcher = watcher\\n        warnings._deprecated(\\\"set_child_watcher\\\",\\n                            \\\"{name!r} is deprecated as of Python 3.12 and will be \\\"\\n                            \\\"removed in Python {remove}.\\\", remove=(3, 14))\\n\\n\\nSelectorEventLoop = _UnixSelectorEventLoop\\nDefaultEventLoopPolicy = _UnixDefaultEventLoopPolicy\\n\", 1500], \"<frozen os>\": [\"r\\\"\\\"\\\"OS routines for NT or Posix depending on what system we're on.\\n\\nThis exports:\\n  - all functions from posix or nt, e.g. unlink, stat, etc.\\n  - os.path is either posixpath or ntpath\\n  - os.name is either 'posix' or 'nt'\\n  - os.curdir is a string representing the current directory (always '.')\\n  - os.pardir is a string representing the parent directory (always '..')\\n  - os.sep is the (or a most common) pathname separator ('/' or '\\\\\\\\')\\n  - os.extsep is the extension separator (always '.')\\n  - os.altsep is the alternate pathname separator (None or '/')\\n  - os.pathsep is the component separator used in $PATH etc\\n  - os.linesep is the line separator in text files ('\\\\r' or '\\\\n' or '\\\\r\\\\n')\\n  - os.defpath is the default search path for executables\\n  - os.devnull is the file path of the null device ('/dev/null', etc.)\\n\\nPrograms that import and use 'os' stand a better chance of being\\nportable between different platforms.  Of course, they must then\\nonly use functions that are defined by all platforms (e.g., unlink\\nand opendir), and leave all pathname manipulation to os.path\\n(e.g., split and join).\\n\\\"\\\"\\\"\\n\\n#'\\nimport abc\\nimport sys\\nimport stat as st\\n\\nfrom _collections_abc import _check_methods\\n\\nGenericAlias = type(list[int])\\n\\n_names = sys.builtin_module_names\\n\\n# Note:  more names are added to __all__ later.\\n__all__ = [\\\"altsep\\\", \\\"curdir\\\", \\\"pardir\\\", \\\"sep\\\", \\\"pathsep\\\", \\\"linesep\\\",\\n           \\\"defpath\\\", \\\"name\\\", \\\"path\\\", \\\"devnull\\\", \\\"SEEK_SET\\\", \\\"SEEK_CUR\\\",\\n           \\\"SEEK_END\\\", \\\"fsencode\\\", \\\"fsdecode\\\", \\\"get_exec_path\\\", \\\"fdopen\\\",\\n           \\\"extsep\\\"]\\n\\ndef _exists(name):\\n    return name in globals()\\n\\ndef _get_exports_list(module):\\n    try:\\n        return list(module.__all__)\\n    except AttributeError:\\n        return [n for n in dir(module) if n[0] != '_']\\n\\n# Any new dependencies of the os module and/or changes in path separator\\n# requires updating importlib as well.\\nif 'posix' in _names:\\n    name = 'posix'\\n    linesep = '\\\\n'\\n    from posix import *\\n    try:\\n        from posix import _exit\\n        __all__.append('_exit')\\n    except ImportError:\\n        pass\\n    import posixpath as path\\n\\n    try:\\n        from posix import _have_functions\\n    except ImportError:\\n        pass\\n\\n    import posix\\n    __all__.extend(_get_exports_list(posix))\\n    del posix\\n\\nelif 'nt' in _names:\\n    name = 'nt'\\n    linesep = '\\\\r\\\\n'\\n    from nt import *\\n    try:\\n        from nt import _exit\\n        __all__.append('_exit')\\n    except ImportError:\\n        pass\\n    import ntpath as path\\n\\n    import nt\\n    __all__.extend(_get_exports_list(nt))\\n    del nt\\n\\n    try:\\n        from nt import _have_functions\\n    except ImportError:\\n        pass\\n\\nelse:\\n    raise ImportError('no os specific module found')\\n\\nsys.modules['os.path'] = path\\nfrom os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,\\n    devnull)\\n\\ndel _names\\n\\n\\nif _exists(\\\"_have_functions\\\"):\\n    _globals = globals()\\n    def _add(str, fn):\\n        if (fn in _globals) and (str in _have_functions):\\n            _set.add(_globals[fn])\\n\\n    _set = set()\\n    _add(\\\"HAVE_FACCESSAT\\\",  \\\"access\\\")\\n    _add(\\\"HAVE_FCHMODAT\\\",   \\\"chmod\\\")\\n    _add(\\\"HAVE_FCHOWNAT\\\",   \\\"chown\\\")\\n    _add(\\\"HAVE_FSTATAT\\\",    \\\"stat\\\")\\n    _add(\\\"HAVE_FUTIMESAT\\\",  \\\"utime\\\")\\n    _add(\\\"HAVE_LINKAT\\\",     \\\"link\\\")\\n    _add(\\\"HAVE_MKDIRAT\\\",    \\\"mkdir\\\")\\n    _add(\\\"HAVE_MKFIFOAT\\\",   \\\"mkfifo\\\")\\n    _add(\\\"HAVE_MKNODAT\\\",    \\\"mknod\\\")\\n    _add(\\\"HAVE_OPENAT\\\",     \\\"open\\\")\\n    _add(\\\"HAVE_READLINKAT\\\", \\\"readlink\\\")\\n    _add(\\\"HAVE_RENAMEAT\\\",   \\\"rename\\\")\\n    _add(\\\"HAVE_SYMLINKAT\\\",  \\\"symlink\\\")\\n    _add(\\\"HAVE_UNLINKAT\\\",   \\\"unlink\\\")\\n    _add(\\\"HAVE_UNLINKAT\\\",   \\\"rmdir\\\")\\n    _add(\\\"HAVE_UTIMENSAT\\\",  \\\"utime\\\")\\n    supports_dir_fd = _set\\n\\n    _set = set()\\n    _add(\\\"HAVE_FACCESSAT\\\",  \\\"access\\\")\\n    supports_effective_ids = _set\\n\\n    _set = set()\\n    _add(\\\"HAVE_FCHDIR\\\",     \\\"chdir\\\")\\n    _add(\\\"HAVE_FCHMOD\\\",     \\\"chmod\\\")\\n    _add(\\\"HAVE_FCHOWN\\\",     \\\"chown\\\")\\n    _add(\\\"HAVE_FDOPENDIR\\\",  \\\"listdir\\\")\\n    _add(\\\"HAVE_FDOPENDIR\\\",  \\\"scandir\\\")\\n    _add(\\\"HAVE_FEXECVE\\\",    \\\"execve\\\")\\n    _set.add(stat) # fstat always works\\n    _add(\\\"HAVE_FTRUNCATE\\\",  \\\"truncate\\\")\\n    _add(\\\"HAVE_FUTIMENS\\\",   \\\"utime\\\")\\n    _add(\\\"HAVE_FUTIMES\\\",    \\\"utime\\\")\\n    _add(\\\"HAVE_FPATHCONF\\\",  \\\"pathconf\\\")\\n    if _exists(\\\"statvfs\\\") and _exists(\\\"fstatvfs\\\"): # mac os x10.3\\n        _add(\\\"HAVE_FSTATVFS\\\", \\\"statvfs\\\")\\n    supports_fd = _set\\n\\n    _set = set()\\n    _add(\\\"HAVE_FACCESSAT\\\",  \\\"access\\\")\\n    # Some platforms don't support lchmod().  Often the function exists\\n    # anyway, as a stub that always returns ENOSUP or perhaps EOPNOTSUPP.\\n    # (No, I don't know why that's a good design.)  ./configure will detect\\n    # this and reject it--so HAVE_LCHMOD still won't be defined on such\\n    # platforms.  This is Very Helpful.\\n    #\\n    # However, sometimes platforms without a working lchmod() *do* have\\n    # fchmodat().  (Examples: Linux kernel 3.2 with glibc 2.15,\\n    # OpenIndiana 3.x.)  And fchmodat() has a flag that theoretically makes\\n    # it behave like lchmod().  So in theory it would be a suitable\\n    # replacement for lchmod().  But when lchmod() doesn't work, fchmodat()'s\\n    # flag doesn't work *either*.  Sadly ./configure isn't sophisticated\\n    # enough to detect this condition--it only determines whether or not\\n    # fchmodat() minimally works.\\n    #\\n    # Therefore we simply ignore fchmodat() when deciding whether or not\\n    # os.chmod supports follow_symlinks.  Just checking lchmod() is\\n    # sufficient.  After all--if you have a working fchmodat(), your\\n    # lchmod() almost certainly works too.\\n    #\\n    # _add(\\\"HAVE_FCHMODAT\\\",   \\\"chmod\\\")\\n    _add(\\\"HAVE_FCHOWNAT\\\",   \\\"chown\\\")\\n    _add(\\\"HAVE_FSTATAT\\\",    \\\"stat\\\")\\n    _add(\\\"HAVE_LCHFLAGS\\\",   \\\"chflags\\\")\\n    _add(\\\"HAVE_LCHMOD\\\",     \\\"chmod\\\")\\n    if _exists(\\\"lchown\\\"): # mac os x10.3\\n        _add(\\\"HAVE_LCHOWN\\\", \\\"chown\\\")\\n    _add(\\\"HAVE_LINKAT\\\",     \\\"link\\\")\\n    _add(\\\"HAVE_LUTIMES\\\",    \\\"utime\\\")\\n    _add(\\\"HAVE_LSTAT\\\",      \\\"stat\\\")\\n    _add(\\\"HAVE_FSTATAT\\\",    \\\"stat\\\")\\n    _add(\\\"HAVE_UTIMENSAT\\\",  \\\"utime\\\")\\n    _add(\\\"MS_WINDOWS\\\",      \\\"stat\\\")\\n    supports_follow_symlinks = _set\\n\\n    del _set\\n    del _have_functions\\n    del _globals\\n    del _add\\n\\n\\n# Python uses fixed values for the SEEK_ constants; they are mapped\\n# to native constants if necessary in posixmodule.c\\n# Other possible SEEK values are directly imported from posixmodule.c\\nSEEK_SET = 0\\nSEEK_CUR = 1\\nSEEK_END = 2\\n\\n# Super directory utilities.\\n# (Inspired by Eric Raymond; the doc strings are mostly his)\\n\\ndef makedirs(name, mode=0o777, exist_ok=False):\\n    \\\"\\\"\\\"makedirs(name [, mode=0o777][, exist_ok=False])\\n\\n    Super-mkdir; create a leaf directory and all intermediate ones.  Works like\\n    mkdir, except that any intermediate path segment (not just the rightmost)\\n    will be created if it does not exist. If the target directory already\\n    exists, raise an OSError if exist_ok is False. Otherwise no exception is\\n    raised.  This is recursive.\\n\\n    \\\"\\\"\\\"\\n    head, tail = path.split(name)\\n    if not tail:\\n        head, tail = path.split(head)\\n    if head and tail and not path.exists(head):\\n        try:\\n            makedirs(head, exist_ok=exist_ok)\\n        except FileExistsError:\\n            # Defeats race condition when another thread created the path\\n            pass\\n        cdir = curdir\\n        if isinstance(tail, bytes):\\n            cdir = bytes(curdir, 'ASCII')\\n        if tail == cdir:           # xxx/newdir/. exists if xxx/newdir exists\\n            return\\n    try:\\n        mkdir(name, mode)\\n    except OSError:\\n        # Cannot rely on checking for EEXIST, since the operating system\\n        # could give priority to other errors like EACCES or EROFS\\n        if not exist_ok or not path.isdir(name):\\n            raise\\n\\ndef removedirs(name):\\n    \\\"\\\"\\\"removedirs(name)\\n\\n    Super-rmdir; remove a leaf directory and all empty intermediate\\n    ones.  Works like rmdir except that, if the leaf directory is\\n    successfully removed, directories corresponding to rightmost path\\n    segments will be pruned away until either the whole path is\\n    consumed or an error occurs.  Errors during this latter phase are\\n    ignored -- they generally mean that a directory was not empty.\\n\\n    \\\"\\\"\\\"\\n    rmdir(name)\\n    head, tail = path.split(name)\\n    if not tail:\\n        head, tail = path.split(head)\\n    while head and tail:\\n        try:\\n            rmdir(head)\\n        except OSError:\\n            break\\n        head, tail = path.split(head)\\n\\ndef renames(old, new):\\n    \\\"\\\"\\\"renames(old, new)\\n\\n    Super-rename; create directories as necessary and delete any left\\n    empty.  Works like rename, except creation of any intermediate\\n    directories needed to make the new pathname good is attempted\\n    first.  After the rename, directories corresponding to rightmost\\n    path segments of the old name will be pruned until either the\\n    whole path is consumed or a nonempty directory is found.\\n\\n    Note: this function can fail with the new directory structure made\\n    if you lack permissions needed to unlink the leaf directory or\\n    file.\\n\\n    \\\"\\\"\\\"\\n    head, tail = path.split(new)\\n    if head and tail and not path.exists(head):\\n        makedirs(head)\\n    rename(old, new)\\n    head, tail = path.split(old)\\n    if head and tail:\\n        try:\\n            removedirs(head)\\n        except OSError:\\n            pass\\n\\n__all__.extend([\\\"makedirs\\\", \\\"removedirs\\\", \\\"renames\\\"])\\n\\ndef walk(top, topdown=True, onerror=None, followlinks=False):\\n    \\\"\\\"\\\"Directory tree generator.\\n\\n    For each directory in the directory tree rooted at top (including top\\n    itself, but excluding '.' and '..'), yields a 3-tuple\\n\\n        dirpath, dirnames, filenames\\n\\n    dirpath is a string, the path to the directory.  dirnames is a list of\\n    the names of the subdirectories in dirpath (including symlinks to directories,\\n    and excluding '.' and '..').\\n    filenames is a list of the names of the non-directory files in dirpath.\\n    Note that the names in the lists are just names, with no path components.\\n    To get a full path (which begins with top) to a file or directory in\\n    dirpath, do os.path.join(dirpath, name).\\n\\n    If optional arg 'topdown' is true or not specified, the triple for a\\n    directory is generated before the triples for any of its subdirectories\\n    (directories are generated top down).  If topdown is false, the triple\\n    for a directory is generated after the triples for all of its\\n    subdirectories (directories are generated bottom up).\\n\\n    When topdown is true, the caller can modify the dirnames list in-place\\n    (e.g., via del or slice assignment), and walk will only recurse into the\\n    subdirectories whose names remain in dirnames; this can be used to prune the\\n    search, or to impose a specific order of visiting.  Modifying dirnames when\\n    topdown is false has no effect on the behavior of os.walk(), since the\\n    directories in dirnames have already been generated by the time dirnames\\n    itself is generated. No matter the value of topdown, the list of\\n    subdirectories is retrieved before the tuples for the directory and its\\n    subdirectories are generated.\\n\\n    By default errors from the os.scandir() call are ignored.  If\\n    optional arg 'onerror' is specified, it should be a function; it\\n    will be called with one argument, an OSError instance.  It can\\n    report the error to continue with the walk, or raise the exception\\n    to abort the walk.  Note that the filename is available as the\\n    filename attribute of the exception object.\\n\\n    By default, os.walk does not follow symbolic links to subdirectories on\\n    systems that support them.  In order to get this functionality, set the\\n    optional argument 'followlinks' to true.\\n\\n    Caution:  if you pass a relative pathname for top, don't change the\\n    current working directory between resumptions of walk.  walk never\\n    changes the current directory, and assumes that the client doesn't\\n    either.\\n\\n    Example:\\n\\n    import os\\n    from os.path import join, getsize\\n    for root, dirs, files in os.walk('python/Lib/email'):\\n        print(root, \\\"consumes \\\")\\n        print(sum(getsize(join(root, name)) for name in files), end=\\\" \\\")\\n        print(\\\"bytes in\\\", len(files), \\\"non-directory files\\\")\\n        if 'CVS' in dirs:\\n            dirs.remove('CVS')  # don't visit CVS directories\\n\\n    \\\"\\\"\\\"\\n    sys.audit(\\\"os.walk\\\", top, topdown, onerror, followlinks)\\n\\n    stack = [fspath(top)]\\n    islink, join = path.islink, path.join\\n    while stack:\\n        top = stack.pop()\\n        if isinstance(top, tuple):\\n            yield top\\n            continue\\n\\n        dirs = []\\n        nondirs = []\\n        walk_dirs = []\\n\\n        # We may not have read permission for top, in which case we can't\\n        # get a list of the files the directory contains.\\n        # We suppress the exception here, rather than blow up for a\\n        # minor reason when (say) a thousand readable directories are still\\n        # left to visit.\\n        try:\\n            scandir_it = scandir(top)\\n        except OSError as error:\\n            if onerror is not None:\\n                onerror(error)\\n            continue\\n\\n        cont = False\\n        with scandir_it:\\n            while True:\\n                try:\\n                    try:\\n                        entry = next(scandir_it)\\n                    except StopIteration:\\n                        break\\n                except OSError as error:\\n                    if onerror is not None:\\n                        onerror(error)\\n                    cont = True\\n                    break\\n\\n                try:\\n                    is_dir = entry.is_dir()\\n                except OSError:\\n                    # If is_dir() raises an OSError, consider the entry not to\\n                    # be a directory, same behaviour as os.path.isdir().\\n                    is_dir = False\\n\\n                if is_dir:\\n                    dirs.append(entry.name)\\n                else:\\n                    nondirs.append(entry.name)\\n\\n                if not topdown and is_dir:\\n                    # Bottom-up: traverse into sub-directory, but exclude\\n                    # symlinks to directories if followlinks is False\\n                    if followlinks:\\n                        walk_into = True\\n                    else:\\n                        try:\\n                            is_symlink = entry.is_symlink()\\n                        except OSError:\\n                            # If is_symlink() raises an OSError, consider the\\n                            # entry not to be a symbolic link, same behaviour\\n                            # as os.path.islink().\\n                            is_symlink = False\\n                        walk_into = not is_symlink\\n\\n                    if walk_into:\\n                        walk_dirs.append(entry.path)\\n        if cont:\\n            continue\\n\\n        if topdown:\\n            # Yield before sub-directory traversal if going top down\\n            yield top, dirs, nondirs\\n            # Traverse into sub-directories\\n            for dirname in reversed(dirs):\\n                new_path = join(top, dirname)\\n                # bpo-23605: os.path.islink() is used instead of caching\\n                # entry.is_symlink() result during the loop on os.scandir() because\\n                # the caller can replace the directory entry during the \\\"yield\\\"\\n                # above.\\n                if followlinks or not islink(new_path):\\n                    stack.append(new_path)\\n        else:\\n            # Yield after sub-directory traversal if going bottom up\\n            stack.append((top, dirs, nondirs))\\n            # Traverse into sub-directories\\n            for new_path in reversed(walk_dirs):\\n                stack.append(new_path)\\n\\n__all__.append(\\\"walk\\\")\\n\\nif {open, stat} <= supports_dir_fd and {scandir, stat} <= supports_fd:\\n\\n    def fwalk(top=\\\".\\\", topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None):\\n        \\\"\\\"\\\"Directory tree generator.\\n\\n        This behaves exactly like walk(), except that it yields a 4-tuple\\n\\n            dirpath, dirnames, filenames, dirfd\\n\\n        `dirpath`, `dirnames` and `filenames` are identical to walk() output,\\n        and `dirfd` is a file descriptor referring to the directory `dirpath`.\\n\\n        The advantage of fwalk() over walk() is that it's safe against symlink\\n        races (when follow_symlinks is False).\\n\\n        If dir_fd is not None, it should be a file descriptor open to a directory,\\n          and top should be relative; top will then be relative to that directory.\\n          (dir_fd is always supported for fwalk.)\\n\\n        Caution:\\n        Since fwalk() yields file descriptors, those are only valid until the\\n        next iteration step, so you should dup() them if you want to keep them\\n        for a longer period.\\n\\n        Example:\\n\\n        import os\\n        for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):\\n            print(root, \\\"consumes\\\", end=\\\"\\\")\\n            print(sum(os.stat(name, dir_fd=rootfd).st_size for name in files),\\n                  end=\\\"\\\")\\n            print(\\\"bytes in\\\", len(files), \\\"non-directory files\\\")\\n            if 'CVS' in dirs:\\n                dirs.remove('CVS')  # don't visit CVS directories\\n        \\\"\\\"\\\"\\n        sys.audit(\\\"os.fwalk\\\", top, topdown, onerror, follow_symlinks, dir_fd)\\n        top = fspath(top)\\n        # Note: To guard against symlink races, we use the standard\\n        # lstat()/open()/fstat() trick.\\n        if not follow_symlinks:\\n            orig_st = stat(top, follow_symlinks=False, dir_fd=dir_fd)\\n        topfd = open(top, O_RDONLY | O_NONBLOCK, dir_fd=dir_fd)\\n        try:\\n            if (follow_symlinks or (st.S_ISDIR(orig_st.st_mode) and\\n                                    path.samestat(orig_st, stat(topfd)))):\\n                yield from _fwalk(topfd, top, isinstance(top, bytes),\\n                                  topdown, onerror, follow_symlinks)\\n        finally:\\n            close(topfd)\\n\\n    def _fwalk(topfd, toppath, isbytes, topdown, onerror, follow_symlinks):\\n        # Note: This uses O(depth of the directory tree) file descriptors: if\\n        # necessary, it can be adapted to only require O(1) FDs, see issue\\n        # #13734.\\n\\n        scandir_it = scandir(topfd)\\n        dirs = []\\n        nondirs = []\\n        entries = None if topdown or follow_symlinks else []\\n        for entry in scandir_it:\\n            name = entry.name\\n            if isbytes:\\n                name = fsencode(name)\\n            try:\\n                if entry.is_dir():\\n                    dirs.append(name)\\n                    if entries is not None:\\n                        entries.append(entry)\\n                else:\\n                    nondirs.append(name)\\n            except OSError:\\n                try:\\n                    # Add dangling symlinks, ignore disappeared files\\n                    if entry.is_symlink():\\n                        nondirs.append(name)\\n                except OSError:\\n                    pass\\n\\n        if topdown:\\n            yield toppath, dirs, nondirs, topfd\\n\\n        for name in dirs if entries is None else zip(dirs, entries):\\n            try:\\n                if not follow_symlinks:\\n                    if topdown:\\n                        orig_st = stat(name, dir_fd=topfd, follow_symlinks=False)\\n                    else:\\n                        assert entries is not None\\n                        name, entry = name\\n                        orig_st = entry.stat(follow_symlinks=False)\\n                dirfd = open(name, O_RDONLY | O_NONBLOCK, dir_fd=topfd)\\n            except OSError as err:\\n                if onerror is not None:\\n                    onerror(err)\\n                continue\\n            try:\\n                if follow_symlinks or path.samestat(orig_st, stat(dirfd)):\\n                    dirpath = path.join(toppath, name)\\n                    yield from _fwalk(dirfd, dirpath, isbytes,\\n                                      topdown, onerror, follow_symlinks)\\n            finally:\\n                close(dirfd)\\n\\n        if not topdown:\\n            yield toppath, dirs, nondirs, topfd\\n\\n    __all__.append(\\\"fwalk\\\")\\n\\ndef execl(file, *args):\\n    \\\"\\\"\\\"execl(file, *args)\\n\\n    Execute the executable file with argument list args, replacing the\\n    current process. \\\"\\\"\\\"\\n    execv(file, args)\\n\\ndef execle(file, *args):\\n    \\\"\\\"\\\"execle(file, *args, env)\\n\\n    Execute the executable file with argument list args and\\n    environment env, replacing the current process. \\\"\\\"\\\"\\n    env = args[-1]\\n    execve(file, args[:-1], env)\\n\\ndef execlp(file, *args):\\n    \\\"\\\"\\\"execlp(file, *args)\\n\\n    Execute the executable file (which is searched for along $PATH)\\n    with argument list args, replacing the current process. \\\"\\\"\\\"\\n    execvp(file, args)\\n\\ndef execlpe(file, *args):\\n    \\\"\\\"\\\"execlpe(file, *args, env)\\n\\n    Execute the executable file (which is searched for along $PATH)\\n    with argument list args and environment env, replacing the current\\n    process. \\\"\\\"\\\"\\n    env = args[-1]\\n    execvpe(file, args[:-1], env)\\n\\ndef execvp(file, args):\\n    \\\"\\\"\\\"execvp(file, args)\\n\\n    Execute the executable file (which is searched for along $PATH)\\n    with argument list args, replacing the current process.\\n    args may be a list or tuple of strings. \\\"\\\"\\\"\\n    _execvpe(file, args)\\n\\ndef execvpe(file, args, env):\\n    \\\"\\\"\\\"execvpe(file, args, env)\\n\\n    Execute the executable file (which is searched for along $PATH)\\n    with argument list args and environment env, replacing the\\n    current process.\\n    args may be a list or tuple of strings. \\\"\\\"\\\"\\n    _execvpe(file, args, env)\\n\\n__all__.extend([\\\"execl\\\",\\\"execle\\\",\\\"execlp\\\",\\\"execlpe\\\",\\\"execvp\\\",\\\"execvpe\\\"])\\n\\ndef _execvpe(file, args, env=None):\\n    if env is not None:\\n        exec_func = execve\\n        argrest = (args, env)\\n    else:\\n        exec_func = execv\\n        argrest = (args,)\\n        env = environ\\n\\n    if path.dirname(file):\\n        exec_func(file, *argrest)\\n        return\\n    saved_exc = None\\n    path_list = get_exec_path(env)\\n    if name != 'nt':\\n        file = fsencode(file)\\n        path_list = map(fsencode, path_list)\\n    for dir in path_list:\\n        fullname = path.join(dir, file)\\n        try:\\n            exec_func(fullname, *argrest)\\n        except (FileNotFoundError, NotADirectoryError) as e:\\n            last_exc = e\\n        except OSError as e:\\n            last_exc = e\\n            if saved_exc is None:\\n                saved_exc = e\\n    if saved_exc is not None:\\n        raise saved_exc\\n    raise last_exc\\n\\n\\ndef get_exec_path(env=None):\\n    \\\"\\\"\\\"Returns the sequence of directories that will be searched for the\\n    named executable (similar to a shell) when launching a process.\\n\\n    *env* must be an environment variable dict or None.  If *env* is None,\\n    os.environ will be used.\\n    \\\"\\\"\\\"\\n    # Use a local import instead of a global import to limit the number of\\n    # modules loaded at startup: the os module is always loaded at startup by\\n    # Python. It may also avoid a bootstrap issue.\\n    import warnings\\n\\n    if env is None:\\n        env = environ\\n\\n    # {b'PATH': ...}.get('PATH') and {'PATH': ...}.get(b'PATH') emit a\\n    # BytesWarning when using python -b or python -bb: ignore the warning\\n    with warnings.catch_warnings():\\n        warnings.simplefilter(\\\"ignore\\\", BytesWarning)\\n\\n        try:\\n            path_list = env.get('PATH')\\n        except TypeError:\\n            path_list = None\\n\\n        if supports_bytes_environ:\\n            try:\\n                path_listb = env[b'PATH']\\n            except (KeyError, TypeError):\\n                pass\\n            else:\\n                if path_list is not None:\\n                    raise ValueError(\\n                        \\\"env cannot contain 'PATH' and b'PATH' keys\\\")\\n                path_list = path_listb\\n\\n            if path_list is not None and isinstance(path_list, bytes):\\n                path_list = fsdecode(path_list)\\n\\n    if path_list is None:\\n        path_list = defpath\\n    return path_list.split(pathsep)\\n\\n\\n# Change environ to automatically call putenv() and unsetenv()\\nfrom _collections_abc import MutableMapping, Mapping\\n\\nclass _Environ(MutableMapping):\\n    def __init__(self, data, encodekey, decodekey, encodevalue, decodevalue):\\n        self.encodekey = encodekey\\n        self.decodekey = decodekey\\n        self.encodevalue = encodevalue\\n        self.decodevalue = decodevalue\\n        self._data = data\\n\\n    def __getitem__(self, key):\\n        try:\\n            value = self._data[self.encodekey(key)]\\n        except KeyError:\\n            # raise KeyError with the original key value\\n            raise KeyError(key) from None\\n        return self.decodevalue(value)\\n\\n    def __setitem__(self, key, value):\\n        key = self.encodekey(key)\\n        value = self.encodevalue(value)\\n        putenv(key, value)\\n        self._data[key] = value\\n\\n    def __delitem__(self, key):\\n        encodedkey = self.encodekey(key)\\n        unsetenv(encodedkey)\\n        try:\\n            del self._data[encodedkey]\\n        except KeyError:\\n            # raise KeyError with the original key value\\n            raise KeyError(key) from None\\n\\n    def __iter__(self):\\n        # list() from dict object is an atomic operation\\n        keys = list(self._data)\\n        for key in keys:\\n            yield self.decodekey(key)\\n\\n    def __len__(self):\\n        return len(self._data)\\n\\n    def __repr__(self):\\n        formatted_items = \\\", \\\".join(\\n            f\\\"{self.decodekey(key)!r}: {self.decodevalue(value)!r}\\\"\\n            for key, value in self._data.items()\\n        )\\n        return f\\\"environ({{{formatted_items}}})\\\"\\n\\n    def copy(self):\\n        return dict(self)\\n\\n    def setdefault(self, key, value):\\n        if key not in self:\\n            self[key] = value\\n        return self[key]\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if not isinstance(other, Mapping):\\n            return NotImplemented\\n        new = dict(self)\\n        new.update(other)\\n        return new\\n\\n    def __ror__(self, other):\\n        if not isinstance(other, Mapping):\\n            return NotImplemented\\n        new = dict(other)\\n        new.update(self)\\n        return new\\n\\ndef _createenviron():\\n    if name == 'nt':\\n        # Where Env Var Names Must Be UPPERCASE\\n        def check_str(value):\\n            if not isinstance(value, str):\\n                raise TypeError(\\\"str expected, not %s\\\" % type(value).__name__)\\n            return value\\n        encode = check_str\\n        decode = str\\n        def encodekey(key):\\n            return encode(key).upper()\\n        data = {}\\n        for key, value in environ.items():\\n            data[encodekey(key)] = value\\n    else:\\n        # Where Env Var Names Can Be Mixed Case\\n        encoding = sys.getfilesystemencoding()\\n        def encode(value):\\n            if not isinstance(value, str):\\n                raise TypeError(\\\"str expected, not %s\\\" % type(value).__name__)\\n            return value.encode(encoding, 'surrogateescape')\\n        def decode(value):\\n            return value.decode(encoding, 'surrogateescape')\\n        encodekey = encode\\n        data = environ\\n    return _Environ(data,\\n        encodekey, decode,\\n        encode, decode)\\n\\n# unicode environ\\nenviron = _createenviron()\\ndel _createenviron\\n\\n\\ndef getenv(key, default=None):\\n    \\\"\\\"\\\"Get an environment variable, return None if it doesn't exist.\\n    The optional second argument can specify an alternate default.\\n    key, default and the result are str.\\\"\\\"\\\"\\n    return environ.get(key, default)\\n\\nsupports_bytes_environ = (name != 'nt')\\n__all__.extend((\\\"getenv\\\", \\\"supports_bytes_environ\\\"))\\n\\nif supports_bytes_environ:\\n    def _check_bytes(value):\\n        if not isinstance(value, bytes):\\n            raise TypeError(\\\"bytes expected, not %s\\\" % type(value).__name__)\\n        return value\\n\\n    # bytes environ\\n    environb = _Environ(environ._data,\\n        _check_bytes, bytes,\\n        _check_bytes, bytes)\\n    del _check_bytes\\n\\n    def getenvb(key, default=None):\\n        \\\"\\\"\\\"Get an environment variable, return None if it doesn't exist.\\n        The optional second argument can specify an alternate default.\\n        key, default and the result are bytes.\\\"\\\"\\\"\\n        return environb.get(key, default)\\n\\n    __all__.extend((\\\"environb\\\", \\\"getenvb\\\"))\\n\\ndef _fscodec():\\n    encoding = sys.getfilesystemencoding()\\n    errors = sys.getfilesystemencodeerrors()\\n\\n    def fsencode(filename):\\n        \\\"\\\"\\\"Encode filename (an os.PathLike, bytes, or str) to the filesystem\\n        encoding with 'surrogateescape' error handler, return bytes unchanged.\\n        On Windows, use 'strict' error handler if the file system encoding is\\n        'mbcs' (which is the default encoding).\\n        \\\"\\\"\\\"\\n        filename = fspath(filename)  # Does type-checking of `filename`.\\n        if isinstance(filename, str):\\n            return filename.encode(encoding, errors)\\n        else:\\n            return filename\\n\\n    def fsdecode(filename):\\n        \\\"\\\"\\\"Decode filename (an os.PathLike, bytes, or str) from the filesystem\\n        encoding with 'surrogateescape' error handler, return str unchanged. On\\n        Windows, use 'strict' error handler if the file system encoding is\\n        'mbcs' (which is the default encoding).\\n        \\\"\\\"\\\"\\n        filename = fspath(filename)  # Does type-checking of `filename`.\\n        if isinstance(filename, bytes):\\n            return filename.decode(encoding, errors)\\n        else:\\n            return filename\\n\\n    return fsencode, fsdecode\\n\\nfsencode, fsdecode = _fscodec()\\ndel _fscodec\\n\\n# Supply spawn*() (probably only for Unix)\\nif _exists(\\\"fork\\\") and not _exists(\\\"spawnv\\\") and _exists(\\\"execv\\\"):\\n\\n    P_WAIT = 0\\n    P_NOWAIT = P_NOWAITO = 1\\n\\n    __all__.extend([\\\"P_WAIT\\\", \\\"P_NOWAIT\\\", \\\"P_NOWAITO\\\"])\\n\\n    # XXX Should we support P_DETACH?  I suppose it could fork()**2\\n    # and close the std I/O streams.  Also, P_OVERLAY is the same\\n    # as execv*()?\\n\\n    def _spawnvef(mode, file, args, env, func):\\n        # Internal helper; func is the exec*() function to use\\n        if not isinstance(args, (tuple, list)):\\n            raise TypeError('argv must be a tuple or a list')\\n        if not args or not args[0]:\\n            raise ValueError('argv first element cannot be empty')\\n        pid = fork()\\n        if not pid:\\n            # Child\\n            try:\\n                if env is None:\\n                    func(file, args)\\n                else:\\n                    func(file, args, env)\\n            except:\\n                _exit(127)\\n        else:\\n            # Parent\\n            if mode == P_NOWAIT:\\n                return pid # Caller is responsible for waiting!\\n            while 1:\\n                wpid, sts = waitpid(pid, 0)\\n                if WIFSTOPPED(sts):\\n                    continue\\n\\n                return waitstatus_to_exitcode(sts)\\n\\n    def spawnv(mode, file, args):\\n        \\\"\\\"\\\"spawnv(mode, file, args) -> integer\\n\\nExecute file with arguments from args in a subprocess.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return _spawnvef(mode, file, args, None, execv)\\n\\n    def spawnve(mode, file, args, env):\\n        \\\"\\\"\\\"spawnve(mode, file, args, env) -> integer\\n\\nExecute file with arguments from args in a subprocess with the\\nspecified environment.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return _spawnvef(mode, file, args, env, execve)\\n\\n    # Note: spawnvp[e] isn't currently supported on Windows\\n\\n    def spawnvp(mode, file, args):\\n        \\\"\\\"\\\"spawnvp(mode, file, args) -> integer\\n\\nExecute file (which is looked for along $PATH) with arguments from\\nargs in a subprocess.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return _spawnvef(mode, file, args, None, execvp)\\n\\n    def spawnvpe(mode, file, args, env):\\n        \\\"\\\"\\\"spawnvpe(mode, file, args, env) -> integer\\n\\nExecute file (which is looked for along $PATH) with arguments from\\nargs in a subprocess with the supplied environment.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return _spawnvef(mode, file, args, env, execvpe)\\n\\n\\n    __all__.extend([\\\"spawnv\\\", \\\"spawnve\\\", \\\"spawnvp\\\", \\\"spawnvpe\\\"])\\n\\n\\nif _exists(\\\"spawnv\\\"):\\n    # These aren't supplied by the basic Windows code\\n    # but can be easily implemented in Python\\n\\n    def spawnl(mode, file, *args):\\n        \\\"\\\"\\\"spawnl(mode, file, *args) -> integer\\n\\nExecute file with arguments from args in a subprocess.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return spawnv(mode, file, args)\\n\\n    def spawnle(mode, file, *args):\\n        \\\"\\\"\\\"spawnle(mode, file, *args, env) -> integer\\n\\nExecute file with arguments from args in a subprocess with the\\nsupplied environment.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        env = args[-1]\\n        return spawnve(mode, file, args[:-1], env)\\n\\n\\n    __all__.extend([\\\"spawnl\\\", \\\"spawnle\\\"])\\n\\n\\nif _exists(\\\"spawnvp\\\"):\\n    # At the moment, Windows doesn't implement spawnvp[e],\\n    # so it won't have spawnlp[e] either.\\n    def spawnlp(mode, file, *args):\\n        \\\"\\\"\\\"spawnlp(mode, file, *args) -> integer\\n\\nExecute file (which is looked for along $PATH) with arguments from\\nargs in a subprocess with the supplied environment.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        return spawnvp(mode, file, args)\\n\\n    def spawnlpe(mode, file, *args):\\n        \\\"\\\"\\\"spawnlpe(mode, file, *args, env) -> integer\\n\\nExecute file (which is looked for along $PATH) with arguments from\\nargs in a subprocess with the supplied environment.\\nIf mode == P_NOWAIT return the pid of the process.\\nIf mode == P_WAIT return the process's exit code if it exits normally;\\notherwise return -SIG, where SIG is the signal that killed it. \\\"\\\"\\\"\\n        env = args[-1]\\n        return spawnvpe(mode, file, args[:-1], env)\\n\\n\\n    __all__.extend([\\\"spawnlp\\\", \\\"spawnlpe\\\"])\\n\\n# VxWorks has no user space shell provided. As a result, running\\n# command in a shell can't be supported.\\nif sys.platform != 'vxworks':\\n    # Supply os.popen()\\n    def popen(cmd, mode=\\\"r\\\", buffering=-1):\\n        if not isinstance(cmd, str):\\n            raise TypeError(\\\"invalid cmd type (%s, expected string)\\\" % type(cmd))\\n        if mode not in (\\\"r\\\", \\\"w\\\"):\\n            raise ValueError(\\\"invalid mode %r\\\" % mode)\\n        if buffering == 0 or buffering is None:\\n            raise ValueError(\\\"popen() does not support unbuffered streams\\\")\\n        import subprocess\\n        if mode == \\\"r\\\":\\n            proc = subprocess.Popen(cmd,\\n                                    shell=True, text=True,\\n                                    stdout=subprocess.PIPE,\\n                                    bufsize=buffering)\\n            return _wrap_close(proc.stdout, proc)\\n        else:\\n            proc = subprocess.Popen(cmd,\\n                                    shell=True, text=True,\\n                                    stdin=subprocess.PIPE,\\n                                    bufsize=buffering)\\n            return _wrap_close(proc.stdin, proc)\\n\\n    # Helper for popen() -- a proxy for a file whose close waits for the process\\n    class _wrap_close:\\n        def __init__(self, stream, proc):\\n            self._stream = stream\\n            self._proc = proc\\n        def close(self):\\n            self._stream.close()\\n            returncode = self._proc.wait()\\n            if returncode == 0:\\n                return None\\n            if name == 'nt':\\n                return returncode\\n            else:\\n                return returncode << 8  # Shift left to match old behavior\\n        def __enter__(self):\\n            return self\\n        def __exit__(self, *args):\\n            self.close()\\n        def __getattr__(self, name):\\n            return getattr(self._stream, name)\\n        def __iter__(self):\\n            return iter(self._stream)\\n\\n    __all__.append(\\\"popen\\\")\\n\\n# Supply os.fdopen()\\ndef fdopen(fd, mode=\\\"r\\\", buffering=-1, encoding=None, *args, **kwargs):\\n    if not isinstance(fd, int):\\n        raise TypeError(\\\"invalid fd type (%s, expected integer)\\\" % type(fd))\\n    import io\\n    if \\\"b\\\" not in mode:\\n        encoding = io.text_encoding(encoding)\\n    return io.open(fd, mode, buffering, encoding, *args, **kwargs)\\n\\n\\n# For testing purposes, make sure the function is available when the C\\n# implementation exists.\\ndef _fspath(path):\\n    \\\"\\\"\\\"Return the path representation of a path-like object.\\n\\n    If str or bytes is passed in, it is returned unchanged. Otherwise the\\n    os.PathLike interface is used to get the path representation. If the\\n    path representation is not str or bytes, TypeError is raised. If the\\n    provided path is not str, bytes, or os.PathLike, TypeError is raised.\\n    \\\"\\\"\\\"\\n    if isinstance(path, (str, bytes)):\\n        return path\\n\\n    # Work from the object's type to match method resolution of other magic\\n    # methods.\\n    path_type = type(path)\\n    try:\\n        path_repr = path_type.__fspath__(path)\\n    except AttributeError:\\n        if hasattr(path_type, '__fspath__'):\\n            raise\\n        else:\\n            raise TypeError(\\\"expected str, bytes or os.PathLike object, \\\"\\n                            \\\"not \\\" + path_type.__name__)\\n    if isinstance(path_repr, (str, bytes)):\\n        return path_repr\\n    else:\\n        raise TypeError(\\\"expected {}.__fspath__() to return str or bytes, \\\"\\n                        \\\"not {}\\\".format(path_type.__name__,\\n                                        type(path_repr).__name__))\\n\\n# If there is no C implementation, make the pure Python version the\\n# implementation as transparently as possible.\\nif not _exists('fspath'):\\n    fspath = _fspath\\n    fspath.__name__ = \\\"fspath\\\"\\n\\n\\nclass PathLike(abc.ABC):\\n\\n    \\\"\\\"\\\"Abstract base class for implementing the file system path protocol.\\\"\\\"\\\"\\n\\n    @abc.abstractmethod\\n    def __fspath__(self):\\n        \\\"\\\"\\\"Return the file system path representation of the object.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    @classmethod\\n    def __subclasshook__(cls, subclass):\\n        if cls is PathLike:\\n            return _check_methods(subclass, '__fspath__')\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nif name == 'nt':\\n    class _AddedDllDirectory:\\n        def __init__(self, path, cookie, remove_dll_directory):\\n            self.path = path\\n            self._cookie = cookie\\n            self._remove_dll_directory = remove_dll_directory\\n        def close(self):\\n            self._remove_dll_directory(self._cookie)\\n            self.path = None\\n        def __enter__(self):\\n            return self\\n        def __exit__(self, *args):\\n            self.close()\\n        def __repr__(self):\\n            if self.path:\\n                return \\\"<AddedDllDirectory({!r})>\\\".format(self.path)\\n            return \\\"<AddedDllDirectory()>\\\"\\n\\n    def add_dll_directory(path):\\n        \\\"\\\"\\\"Add a path to the DLL search path.\\n\\n        This search path is used when resolving dependencies for imported\\n        extension modules (the module itself is resolved through sys.path),\\n        and also by ctypes.\\n\\n        Remove the directory by calling close() on the returned object or\\n        using it in a with statement.\\n        \\\"\\\"\\\"\\n        import nt\\n        cookie = nt._add_dll_directory(path)\\n        return _AddedDllDirectory(\\n            path,\\n            cookie,\\n            nt._remove_dll_directory\\n        )\\n\", 1130], \"<frozen _collections_abc>\": [\"# Copyright 2007 Google, Inc. All Rights Reserved.\\n# Licensed to PSF under a Contributor Agreement.\\n\\n\\\"\\\"\\\"Abstract Base Classes (ABCs) for collections, according to PEP 3119.\\n\\nUnit tests are in test_collections.\\n\\\"\\\"\\\"\\n\\n############ Maintenance notes #########################################\\n#\\n# ABCs are different from other standard library modules in that they\\n# specify compliance tests.  In general, once an ABC has been published,\\n# new methods (either abstract or concrete) cannot be added.\\n#\\n# Though classes that inherit from an ABC would automatically receive a\\n# new mixin method, registered classes would become non-compliant and\\n# violate the contract promised by ``isinstance(someobj, SomeABC)``.\\n#\\n# Though irritating, the correct procedure for adding new abstract or\\n# mixin methods is to create a new ABC as a subclass of the previous\\n# ABC.  For example, union(), intersection(), and difference() cannot\\n# be added to Set but could go into a new ABC that extends Set.\\n#\\n# Because they are so hard to change, new ABCs should have their APIs\\n# carefully thought through prior to publication.\\n#\\n# Since ABCMeta only checks for the presence of methods, it is possible\\n# to alter the signature of a method by adding optional arguments\\n# or changing parameters names.  This is still a bit dubious but at\\n# least it won't cause isinstance() to return an incorrect result.\\n#\\n#\\n#######################################################################\\n\\nfrom abc import ABCMeta, abstractmethod\\nimport sys\\n\\nGenericAlias = type(list[int])\\nEllipsisType = type(...)\\ndef _f(): pass\\nFunctionType = type(_f)\\ndel _f\\n\\n__all__ = [\\\"Awaitable\\\", \\\"Coroutine\\\",\\n           \\\"AsyncIterable\\\", \\\"AsyncIterator\\\", \\\"AsyncGenerator\\\",\\n           \\\"Hashable\\\", \\\"Iterable\\\", \\\"Iterator\\\", \\\"Generator\\\", \\\"Reversible\\\",\\n           \\\"Sized\\\", \\\"Container\\\", \\\"Callable\\\", \\\"Collection\\\",\\n           \\\"Set\\\", \\\"MutableSet\\\",\\n           \\\"Mapping\\\", \\\"MutableMapping\\\",\\n           \\\"MappingView\\\", \\\"KeysView\\\", \\\"ItemsView\\\", \\\"ValuesView\\\",\\n           \\\"Sequence\\\", \\\"MutableSequence\\\",\\n           \\\"ByteString\\\", \\\"Buffer\\\",\\n           ]\\n\\n# This module has been renamed from collections.abc to _collections_abc to\\n# speed up interpreter startup. Some of the types such as MutableMapping are\\n# required early but collections module imports a lot of other modules.\\n# See issue #19218\\n__name__ = \\\"collections.abc\\\"\\n\\n# Private list of types that we want to register with the various ABCs\\n# so that they will pass tests like:\\n#       it = iter(somebytearray)\\n#       assert isinstance(it, Iterable)\\n# Note:  in other implementations, these types might not be distinct\\n# and they may have their own implementation specific types that\\n# are not included on this list.\\nbytes_iterator = type(iter(b''))\\nbytearray_iterator = type(iter(bytearray()))\\n#callable_iterator = ???\\ndict_keyiterator = type(iter({}.keys()))\\ndict_valueiterator = type(iter({}.values()))\\ndict_itemiterator = type(iter({}.items()))\\nlist_iterator = type(iter([]))\\nlist_reverseiterator = type(iter(reversed([])))\\nrange_iterator = type(iter(range(0)))\\nlongrange_iterator = type(iter(range(1 << 1000)))\\nset_iterator = type(iter(set()))\\nstr_iterator = type(iter(\\\"\\\"))\\ntuple_iterator = type(iter(()))\\nzip_iterator = type(iter(zip()))\\n## views ##\\ndict_keys = type({}.keys())\\ndict_values = type({}.values())\\ndict_items = type({}.items())\\n## misc ##\\nmappingproxy = type(type.__dict__)\\ngenerator = type((lambda: (yield))())\\n## coroutine ##\\nasync def _coro(): pass\\n_coro = _coro()\\ncoroutine = type(_coro)\\n_coro.close()  # Prevent ResourceWarning\\ndel _coro\\n## asynchronous generator ##\\nasync def _ag(): yield\\n_ag = _ag()\\nasync_generator = type(_ag)\\ndel _ag\\n\\n\\n### ONE-TRICK PONIES ###\\n\\ndef _check_methods(C, *methods):\\n    mro = C.__mro__\\n    for method in methods:\\n        for B in mro:\\n            if method in B.__dict__:\\n                if B.__dict__[method] is None:\\n                    return NotImplemented\\n                break\\n        else:\\n            return NotImplemented\\n    return True\\n\\nclass Hashable(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __hash__(self):\\n        return 0\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Hashable:\\n            return _check_methods(C, \\\"__hash__\\\")\\n        return NotImplemented\\n\\n\\nclass Awaitable(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __await__(self):\\n        yield\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Awaitable:\\n            return _check_methods(C, \\\"__await__\\\")\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass Coroutine(Awaitable):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def send(self, value):\\n        \\\"\\\"\\\"Send a value into the coroutine.\\n        Return next yielded value or raise StopIteration.\\n        \\\"\\\"\\\"\\n        raise StopIteration\\n\\n    @abstractmethod\\n    def throw(self, typ, val=None, tb=None):\\n        \\\"\\\"\\\"Raise an exception in the coroutine.\\n        Return next yielded value or raise StopIteration.\\n        \\\"\\\"\\\"\\n        if val is None:\\n            if tb is None:\\n                raise typ\\n            val = typ()\\n        if tb is not None:\\n            val = val.with_traceback(tb)\\n        raise val\\n\\n    def close(self):\\n        \\\"\\\"\\\"Raise GeneratorExit inside coroutine.\\n        \\\"\\\"\\\"\\n        try:\\n            self.throw(GeneratorExit)\\n        except (GeneratorExit, StopIteration):\\n            pass\\n        else:\\n            raise RuntimeError(\\\"coroutine ignored GeneratorExit\\\")\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Coroutine:\\n            return _check_methods(C, '__await__', 'send', 'throw', 'close')\\n        return NotImplemented\\n\\n\\nCoroutine.register(coroutine)\\n\\n\\nclass AsyncIterable(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __aiter__(self):\\n        return AsyncIterator()\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is AsyncIterable:\\n            return _check_methods(C, \\\"__aiter__\\\")\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass AsyncIterator(AsyncIterable):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    async def __anext__(self):\\n        \\\"\\\"\\\"Return the next item or raise StopAsyncIteration when exhausted.\\\"\\\"\\\"\\n        raise StopAsyncIteration\\n\\n    def __aiter__(self):\\n        return self\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is AsyncIterator:\\n            return _check_methods(C, \\\"__anext__\\\", \\\"__aiter__\\\")\\n        return NotImplemented\\n\\n\\nclass AsyncGenerator(AsyncIterator):\\n\\n    __slots__ = ()\\n\\n    async def __anext__(self):\\n        \\\"\\\"\\\"Return the next item from the asynchronous generator.\\n        When exhausted, raise StopAsyncIteration.\\n        \\\"\\\"\\\"\\n        return await self.asend(None)\\n\\n    @abstractmethod\\n    async def asend(self, value):\\n        \\\"\\\"\\\"Send a value into the asynchronous generator.\\n        Return next yielded value or raise StopAsyncIteration.\\n        \\\"\\\"\\\"\\n        raise StopAsyncIteration\\n\\n    @abstractmethod\\n    async def athrow(self, typ, val=None, tb=None):\\n        \\\"\\\"\\\"Raise an exception in the asynchronous generator.\\n        Return next yielded value or raise StopAsyncIteration.\\n        \\\"\\\"\\\"\\n        if val is None:\\n            if tb is None:\\n                raise typ\\n            val = typ()\\n        if tb is not None:\\n            val = val.with_traceback(tb)\\n        raise val\\n\\n    async def aclose(self):\\n        \\\"\\\"\\\"Raise GeneratorExit inside coroutine.\\n        \\\"\\\"\\\"\\n        try:\\n            await self.athrow(GeneratorExit)\\n        except (GeneratorExit, StopAsyncIteration):\\n            pass\\n        else:\\n            raise RuntimeError(\\\"asynchronous generator ignored GeneratorExit\\\")\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is AsyncGenerator:\\n            return _check_methods(C, '__aiter__', '__anext__',\\n                                  'asend', 'athrow', 'aclose')\\n        return NotImplemented\\n\\n\\nAsyncGenerator.register(async_generator)\\n\\n\\nclass Iterable(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __iter__(self):\\n        while False:\\n            yield None\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Iterable:\\n            return _check_methods(C, \\\"__iter__\\\")\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass Iterator(Iterable):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __next__(self):\\n        'Return the next item from the iterator. When exhausted, raise StopIteration'\\n        raise StopIteration\\n\\n    def __iter__(self):\\n        return self\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Iterator:\\n            return _check_methods(C, '__iter__', '__next__')\\n        return NotImplemented\\n\\n\\nIterator.register(bytes_iterator)\\nIterator.register(bytearray_iterator)\\n#Iterator.register(callable_iterator)\\nIterator.register(dict_keyiterator)\\nIterator.register(dict_valueiterator)\\nIterator.register(dict_itemiterator)\\nIterator.register(list_iterator)\\nIterator.register(list_reverseiterator)\\nIterator.register(range_iterator)\\nIterator.register(longrange_iterator)\\nIterator.register(set_iterator)\\nIterator.register(str_iterator)\\nIterator.register(tuple_iterator)\\nIterator.register(zip_iterator)\\n\\n\\nclass Reversible(Iterable):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __reversed__(self):\\n        while False:\\n            yield None\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Reversible:\\n            return _check_methods(C, \\\"__reversed__\\\", \\\"__iter__\\\")\\n        return NotImplemented\\n\\n\\nclass Generator(Iterator):\\n\\n    __slots__ = ()\\n\\n    def __next__(self):\\n        \\\"\\\"\\\"Return the next item from the generator.\\n        When exhausted, raise StopIteration.\\n        \\\"\\\"\\\"\\n        return self.send(None)\\n\\n    @abstractmethod\\n    def send(self, value):\\n        \\\"\\\"\\\"Send a value into the generator.\\n        Return next yielded value or raise StopIteration.\\n        \\\"\\\"\\\"\\n        raise StopIteration\\n\\n    @abstractmethod\\n    def throw(self, typ, val=None, tb=None):\\n        \\\"\\\"\\\"Raise an exception in the generator.\\n        Return next yielded value or raise StopIteration.\\n        \\\"\\\"\\\"\\n        if val is None:\\n            if tb is None:\\n                raise typ\\n            val = typ()\\n        if tb is not None:\\n            val = val.with_traceback(tb)\\n        raise val\\n\\n    def close(self):\\n        \\\"\\\"\\\"Raise GeneratorExit inside generator.\\n        \\\"\\\"\\\"\\n        try:\\n            self.throw(GeneratorExit)\\n        except (GeneratorExit, StopIteration):\\n            pass\\n        else:\\n            raise RuntimeError(\\\"generator ignored GeneratorExit\\\")\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Generator:\\n            return _check_methods(C, '__iter__', '__next__',\\n                                  'send', 'throw', 'close')\\n        return NotImplemented\\n\\n\\nGenerator.register(generator)\\n\\n\\nclass Sized(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __len__(self):\\n        return 0\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Sized:\\n            return _check_methods(C, \\\"__len__\\\")\\n        return NotImplemented\\n\\n\\nclass Container(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __contains__(self, x):\\n        return False\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Container:\\n            return _check_methods(C, \\\"__contains__\\\")\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass Collection(Sized, Iterable, Container):\\n\\n    __slots__ = ()\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Collection:\\n            return _check_methods(C,  \\\"__len__\\\", \\\"__iter__\\\", \\\"__contains__\\\")\\n        return NotImplemented\\n\\n\\nclass Buffer(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __buffer__(self, flags: int, /) -> memoryview:\\n        raise NotImplementedError\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Buffer:\\n            return _check_methods(C, \\\"__buffer__\\\")\\n        return NotImplemented\\n\\n\\nclass _CallableGenericAlias(GenericAlias):\\n    \\\"\\\"\\\" Represent `Callable[argtypes, resulttype]`.\\n\\n    This sets ``__args__`` to a tuple containing the flattened ``argtypes``\\n    followed by ``resulttype``.\\n\\n    Example: ``Callable[[int, str], float]`` sets ``__args__`` to\\n    ``(int, str, float)``.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    def __new__(cls, origin, args):\\n        if not (isinstance(args, tuple) and len(args) == 2):\\n            raise TypeError(\\n                \\\"Callable must be used as Callable[[arg, ...], result].\\\")\\n        t_args, t_result = args\\n        if isinstance(t_args, (tuple, list)):\\n            args = (*t_args, t_result)\\n        elif not _is_param_expr(t_args):\\n            raise TypeError(f\\\"Expected a list of types, an ellipsis, \\\"\\n                            f\\\"ParamSpec, or Concatenate. Got {t_args}\\\")\\n        return super().__new__(cls, origin, args)\\n\\n    def __repr__(self):\\n        if len(self.__args__) == 2 and _is_param_expr(self.__args__[0]):\\n            return super().__repr__()\\n        return (f'collections.abc.Callable'\\n                f'[[{\\\", \\\".join([_type_repr(a) for a in self.__args__[:-1]])}], '\\n                f'{_type_repr(self.__args__[-1])}]')\\n\\n    def __reduce__(self):\\n        args = self.__args__\\n        if not (len(args) == 2 and _is_param_expr(args[0])):\\n            args = list(args[:-1]), args[-1]\\n        return _CallableGenericAlias, (Callable, args)\\n\\n    def __getitem__(self, item):\\n        # Called during TypeVar substitution, returns the custom subclass\\n        # rather than the default types.GenericAlias object.  Most of the\\n        # code is copied from typing's _GenericAlias and the builtin\\n        # types.GenericAlias.\\n        if not isinstance(item, tuple):\\n            item = (item,)\\n\\n        new_args = super().__getitem__(item).__args__\\n\\n        # args[0] occurs due to things like Z[[int, str, bool]] from PEP 612\\n        if not isinstance(new_args[0], (tuple, list)):\\n            t_result = new_args[-1]\\n            t_args = new_args[:-1]\\n            new_args = (t_args, t_result)\\n        return _CallableGenericAlias(Callable, tuple(new_args))\\n\\ndef _is_param_expr(obj):\\n    \\\"\\\"\\\"Checks if obj matches either a list of types, ``...``, ``ParamSpec`` or\\n    ``_ConcatenateGenericAlias`` from typing.py\\n    \\\"\\\"\\\"\\n    if obj is Ellipsis:\\n        return True\\n    if isinstance(obj, list):\\n        return True\\n    obj = type(obj)\\n    names = ('ParamSpec', '_ConcatenateGenericAlias')\\n    return obj.__module__ == 'typing' and any(obj.__name__ == name for name in names)\\n\\ndef _type_repr(obj):\\n    \\\"\\\"\\\"Return the repr() of an object, special-casing types (internal helper).\\n\\n    Copied from :mod:`typing` since collections.abc\\n    shouldn't depend on that module.\\n    (Keep this roughly in sync with the typing version.)\\n    \\\"\\\"\\\"\\n    if isinstance(obj, type):\\n        if obj.__module__ == 'builtins':\\n            return obj.__qualname__\\n        return f'{obj.__module__}.{obj.__qualname__}'\\n    if obj is Ellipsis:\\n        return '...'\\n    if isinstance(obj, FunctionType):\\n        return obj.__name__\\n    return repr(obj)\\n\\n\\nclass Callable(metaclass=ABCMeta):\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __call__(self, *args, **kwds):\\n        return False\\n\\n    @classmethod\\n    def __subclasshook__(cls, C):\\n        if cls is Callable:\\n            return _check_methods(C, \\\"__call__\\\")\\n        return NotImplemented\\n\\n    __class_getitem__ = classmethod(_CallableGenericAlias)\\n\\n\\n### SETS ###\\n\\n\\nclass Set(Collection):\\n    \\\"\\\"\\\"A set is a finite, iterable container.\\n\\n    This class provides concrete generic implementations of all\\n    methods except for __contains__, __iter__ and __len__.\\n\\n    To override the comparisons (presumably for speed, as the\\n    semantics are fixed), redefine __le__ and __ge__,\\n    then the other operations will automatically follow suit.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    def __le__(self, other):\\n        if not isinstance(other, Set):\\n            return NotImplemented\\n        if len(self) > len(other):\\n            return False\\n        for elem in self:\\n            if elem not in other:\\n                return False\\n        return True\\n\\n    def __lt__(self, other):\\n        if not isinstance(other, Set):\\n            return NotImplemented\\n        return len(self) < len(other) and self.__le__(other)\\n\\n    def __gt__(self, other):\\n        if not isinstance(other, Set):\\n            return NotImplemented\\n        return len(self) > len(other) and self.__ge__(other)\\n\\n    def __ge__(self, other):\\n        if not isinstance(other, Set):\\n            return NotImplemented\\n        if len(self) < len(other):\\n            return False\\n        for elem in other:\\n            if elem not in self:\\n                return False\\n        return True\\n\\n    def __eq__(self, other):\\n        if not isinstance(other, Set):\\n            return NotImplemented\\n        return len(self) == len(other) and self.__le__(other)\\n\\n    @classmethod\\n    def _from_iterable(cls, it):\\n        '''Construct an instance of the class from any iterable input.\\n\\n        Must override this method if the class constructor signature\\n        does not accept an iterable for an input.\\n        '''\\n        return cls(it)\\n\\n    def __and__(self, other):\\n        if not isinstance(other, Iterable):\\n            return NotImplemented\\n        return self._from_iterable(value for value in other if value in self)\\n\\n    __rand__ = __and__\\n\\n    def isdisjoint(self, other):\\n        'Return True if two sets have a null intersection.'\\n        for value in other:\\n            if value in self:\\n                return False\\n        return True\\n\\n    def __or__(self, other):\\n        if not isinstance(other, Iterable):\\n            return NotImplemented\\n        chain = (e for s in (self, other) for e in s)\\n        return self._from_iterable(chain)\\n\\n    __ror__ = __or__\\n\\n    def __sub__(self, other):\\n        if not isinstance(other, Set):\\n            if not isinstance(other, Iterable):\\n                return NotImplemented\\n            other = self._from_iterable(other)\\n        return self._from_iterable(value for value in self\\n                                   if value not in other)\\n\\n    def __rsub__(self, other):\\n        if not isinstance(other, Set):\\n            if not isinstance(other, Iterable):\\n                return NotImplemented\\n            other = self._from_iterable(other)\\n        return self._from_iterable(value for value in other\\n                                   if value not in self)\\n\\n    def __xor__(self, other):\\n        if not isinstance(other, Set):\\n            if not isinstance(other, Iterable):\\n                return NotImplemented\\n            other = self._from_iterable(other)\\n        return (self - other) | (other - self)\\n\\n    __rxor__ = __xor__\\n\\n    def _hash(self):\\n        \\\"\\\"\\\"Compute the hash value of a set.\\n\\n        Note that we don't define __hash__: not all sets are hashable.\\n        But if you define a hashable set type, its __hash__ should\\n        call this function.\\n\\n        This must be compatible __eq__.\\n\\n        All sets ought to compare equal if they contain the same\\n        elements, regardless of how they are implemented, and\\n        regardless of the order of the elements; so there's not much\\n        freedom for __eq__ or __hash__.  We match the algorithm used\\n        by the built-in frozenset type.\\n        \\\"\\\"\\\"\\n        MAX = sys.maxsize\\n        MASK = 2 * MAX + 1\\n        n = len(self)\\n        h = 1927868237 * (n + 1)\\n        h &= MASK\\n        for x in self:\\n            hx = hash(x)\\n            h ^= (hx ^ (hx << 16) ^ 89869747)  * 3644798167\\n            h &= MASK\\n        h ^= (h >> 11) ^ (h >> 25)\\n        h = h * 69069 + 907133923\\n        h &= MASK\\n        if h > MAX:\\n            h -= MASK + 1\\n        if h == -1:\\n            h = 590923713\\n        return h\\n\\n\\nSet.register(frozenset)\\n\\n\\nclass MutableSet(Set):\\n    \\\"\\\"\\\"A mutable set is a finite, iterable container.\\n\\n    This class provides concrete generic implementations of all\\n    methods except for __contains__, __iter__, __len__,\\n    add(), and discard().\\n\\n    To override the comparisons (presumably for speed, as the\\n    semantics are fixed), all you have to do is redefine __le__ and\\n    then the other operations will automatically follow suit.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def add(self, value):\\n        \\\"\\\"\\\"Add an element.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    @abstractmethod\\n    def discard(self, value):\\n        \\\"\\\"\\\"Remove an element.  Do not raise an exception if absent.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def remove(self, value):\\n        \\\"\\\"\\\"Remove an element. If not a member, raise a KeyError.\\\"\\\"\\\"\\n        if value not in self:\\n            raise KeyError(value)\\n        self.discard(value)\\n\\n    def pop(self):\\n        \\\"\\\"\\\"Return the popped value.  Raise KeyError if empty.\\\"\\\"\\\"\\n        it = iter(self)\\n        try:\\n            value = next(it)\\n        except StopIteration:\\n            raise KeyError from None\\n        self.discard(value)\\n        return value\\n\\n    def clear(self):\\n        \\\"\\\"\\\"This is slow (creates N new iterators!) but effective.\\\"\\\"\\\"\\n        try:\\n            while True:\\n                self.pop()\\n        except KeyError:\\n            pass\\n\\n    def __ior__(self, it):\\n        for value in it:\\n            self.add(value)\\n        return self\\n\\n    def __iand__(self, it):\\n        for value in (self - it):\\n            self.discard(value)\\n        return self\\n\\n    def __ixor__(self, it):\\n        if it is self:\\n            self.clear()\\n        else:\\n            if not isinstance(it, Set):\\n                it = self._from_iterable(it)\\n            for value in it:\\n                if value in self:\\n                    self.discard(value)\\n                else:\\n                    self.add(value)\\n        return self\\n\\n    def __isub__(self, it):\\n        if it is self:\\n            self.clear()\\n        else:\\n            for value in it:\\n                self.discard(value)\\n        return self\\n\\n\\nMutableSet.register(set)\\n\\n\\n### MAPPINGS ###\\n\\nclass Mapping(Collection):\\n    \\\"\\\"\\\"A Mapping is a generic container for associating key/value\\n    pairs.\\n\\n    This class provides concrete generic implementations of all\\n    methods except for __getitem__, __iter__, and __len__.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    # Tell ABCMeta.__new__ that this class should have TPFLAGS_MAPPING set.\\n    __abc_tpflags__ = 1 << 6 # Py_TPFLAGS_MAPPING\\n\\n    @abstractmethod\\n    def __getitem__(self, key):\\n        raise KeyError\\n\\n    def get(self, key, default=None):\\n        'D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.'\\n        try:\\n            return self[key]\\n        except KeyError:\\n            return default\\n\\n    def __contains__(self, key):\\n        try:\\n            self[key]\\n        except KeyError:\\n            return False\\n        else:\\n            return True\\n\\n    def keys(self):\\n        \\\"D.keys() -> a set-like object providing a view on D's keys\\\"\\n        return KeysView(self)\\n\\n    def items(self):\\n        \\\"D.items() -> a set-like object providing a view on D's items\\\"\\n        return ItemsView(self)\\n\\n    def values(self):\\n        \\\"D.values() -> an object providing a view on D's values\\\"\\n        return ValuesView(self)\\n\\n    def __eq__(self, other):\\n        if not isinstance(other, Mapping):\\n            return NotImplemented\\n        return dict(self.items()) == dict(other.items())\\n\\n    __reversed__ = None\\n\\nMapping.register(mappingproxy)\\n\\n\\nclass MappingView(Sized):\\n\\n    __slots__ = '_mapping',\\n\\n    def __init__(self, mapping):\\n        self._mapping = mapping\\n\\n    def __len__(self):\\n        return len(self._mapping)\\n\\n    def __repr__(self):\\n        return '{0.__class__.__name__}({0._mapping!r})'.format(self)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass KeysView(MappingView, Set):\\n\\n    __slots__ = ()\\n\\n    @classmethod\\n    def _from_iterable(cls, it):\\n        return set(it)\\n\\n    def __contains__(self, key):\\n        return key in self._mapping\\n\\n    def __iter__(self):\\n        yield from self._mapping\\n\\n\\nKeysView.register(dict_keys)\\n\\n\\nclass ItemsView(MappingView, Set):\\n\\n    __slots__ = ()\\n\\n    @classmethod\\n    def _from_iterable(cls, it):\\n        return set(it)\\n\\n    def __contains__(self, item):\\n        key, value = item\\n        try:\\n            v = self._mapping[key]\\n        except KeyError:\\n            return False\\n        else:\\n            return v is value or v == value\\n\\n    def __iter__(self):\\n        for key in self._mapping:\\n            yield (key, self._mapping[key])\\n\\n\\nItemsView.register(dict_items)\\n\\n\\nclass ValuesView(MappingView, Collection):\\n\\n    __slots__ = ()\\n\\n    def __contains__(self, value):\\n        for key in self._mapping:\\n            v = self._mapping[key]\\n            if v is value or v == value:\\n                return True\\n        return False\\n\\n    def __iter__(self):\\n        for key in self._mapping:\\n            yield self._mapping[key]\\n\\n\\nValuesView.register(dict_values)\\n\\n\\nclass MutableMapping(Mapping):\\n    \\\"\\\"\\\"A MutableMapping is a generic container for associating\\n    key/value pairs.\\n\\n    This class provides concrete generic implementations of all\\n    methods except for __getitem__, __setitem__, __delitem__,\\n    __iter__, and __len__.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __setitem__(self, key, value):\\n        raise KeyError\\n\\n    @abstractmethod\\n    def __delitem__(self, key):\\n        raise KeyError\\n\\n    __marker = object()\\n\\n    def pop(self, key, default=__marker):\\n        '''D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\\n          If key is not found, d is returned if given, otherwise KeyError is raised.\\n        '''\\n        try:\\n            value = self[key]\\n        except KeyError:\\n            if default is self.__marker:\\n                raise\\n            return default\\n        else:\\n            del self[key]\\n            return value\\n\\n    def popitem(self):\\n        '''D.popitem() -> (k, v), remove and return some (key, value) pair\\n           as a 2-tuple; but raise KeyError if D is empty.\\n        '''\\n        try:\\n            key = next(iter(self))\\n        except StopIteration:\\n            raise KeyError from None\\n        value = self[key]\\n        del self[key]\\n        return key, value\\n\\n    def clear(self):\\n        'D.clear() -> None.  Remove all items from D.'\\n        try:\\n            while True:\\n                self.popitem()\\n        except KeyError:\\n            pass\\n\\n    def update(self, other=(), /, **kwds):\\n        ''' D.update([E, ]**F) -> None.  Update D from mapping/iterable E and F.\\n            If E present and has a .keys() method, does:     for k in E: D[k] = E[k]\\n            If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v\\n            In either case, this is followed by: for k, v in F.items(): D[k] = v\\n        '''\\n        if isinstance(other, Mapping):\\n            for key in other:\\n                self[key] = other[key]\\n        elif hasattr(other, \\\"keys\\\"):\\n            for key in other.keys():\\n                self[key] = other[key]\\n        else:\\n            for key, value in other:\\n                self[key] = value\\n        for key, value in kwds.items():\\n            self[key] = value\\n\\n    def setdefault(self, key, default=None):\\n        'D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D'\\n        try:\\n            return self[key]\\n        except KeyError:\\n            self[key] = default\\n        return default\\n\\n\\nMutableMapping.register(dict)\\n\\n\\n### SEQUENCES ###\\n\\nclass Sequence(Reversible, Collection):\\n    \\\"\\\"\\\"All the operations on a read-only sequence.\\n\\n    Concrete subclasses must override __new__ or __init__,\\n    __getitem__, and __len__.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    # Tell ABCMeta.__new__ that this class should have TPFLAGS_SEQUENCE set.\\n    __abc_tpflags__ = 1 << 5 # Py_TPFLAGS_SEQUENCE\\n\\n    @abstractmethod\\n    def __getitem__(self, index):\\n        raise IndexError\\n\\n    def __iter__(self):\\n        i = 0\\n        try:\\n            while True:\\n                v = self[i]\\n                yield v\\n                i += 1\\n        except IndexError:\\n            return\\n\\n    def __contains__(self, value):\\n        for v in self:\\n            if v is value or v == value:\\n                return True\\n        return False\\n\\n    def __reversed__(self):\\n        for i in reversed(range(len(self))):\\n            yield self[i]\\n\\n    def index(self, value, start=0, stop=None):\\n        '''S.index(value, [start, [stop]]) -> integer -- return first index of value.\\n           Raises ValueError if the value is not present.\\n\\n           Supporting start and stop arguments is optional, but\\n           recommended.\\n        '''\\n        if start is not None and start < 0:\\n            start = max(len(self) + start, 0)\\n        if stop is not None and stop < 0:\\n            stop += len(self)\\n\\n        i = start\\n        while stop is None or i < stop:\\n            try:\\n                v = self[i]\\n            except IndexError:\\n                break\\n            if v is value or v == value:\\n                return i\\n            i += 1\\n        raise ValueError\\n\\n    def count(self, value):\\n        'S.count(value) -> integer -- return number of occurrences of value'\\n        return sum(1 for v in self if v is value or v == value)\\n\\nSequence.register(tuple)\\nSequence.register(str)\\nSequence.register(range)\\nSequence.register(memoryview)\\n\\nclass _DeprecateByteStringMeta(ABCMeta):\\n    def __new__(cls, name, bases, namespace, **kwargs):\\n        if name != \\\"ByteString\\\":\\n            import warnings\\n\\n            warnings._deprecated(\\n                \\\"collections.abc.ByteString\\\",\\n                remove=(3, 14),\\n            )\\n        return super().__new__(cls, name, bases, namespace, **kwargs)\\n\\n    def __instancecheck__(cls, instance):\\n        import warnings\\n\\n        warnings._deprecated(\\n            \\\"collections.abc.ByteString\\\",\\n            remove=(3, 14),\\n        )\\n        return super().__instancecheck__(instance)\\n\\nclass ByteString(Sequence, metaclass=_DeprecateByteStringMeta):\\n    \\\"\\\"\\\"This unifies bytes and bytearray.\\n\\n    XXX Should add all their methods.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\nByteString.register(bytes)\\nByteString.register(bytearray)\\n\\n\\nclass MutableSequence(Sequence):\\n    \\\"\\\"\\\"All the operations on a read-write sequence.\\n\\n    Concrete subclasses must provide __new__ or __init__,\\n    __getitem__, __setitem__, __delitem__, __len__, and insert().\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ()\\n\\n    @abstractmethod\\n    def __setitem__(self, index, value):\\n        raise IndexError\\n\\n    @abstractmethod\\n    def __delitem__(self, index):\\n        raise IndexError\\n\\n    @abstractmethod\\n    def insert(self, index, value):\\n        'S.insert(index, value) -- insert value before index'\\n        raise IndexError\\n\\n    def append(self, value):\\n        'S.append(value) -- append value to the end of the sequence'\\n        self.insert(len(self), value)\\n\\n    def clear(self):\\n        'S.clear() -> None -- remove all items from S'\\n        try:\\n            while True:\\n                self.pop()\\n        except IndexError:\\n            pass\\n\\n    def reverse(self):\\n        'S.reverse() -- reverse *IN PLACE*'\\n        n = len(self)\\n        for i in range(n//2):\\n            self[i], self[n-i-1] = self[n-i-1], self[i]\\n\\n    def extend(self, values):\\n        'S.extend(iterable) -- extend sequence by appending elements from the iterable'\\n        if values is self:\\n            values = list(values)\\n        for v in values:\\n            self.append(v)\\n\\n    def pop(self, index=-1):\\n        '''S.pop([index]) -> item -- remove and return item at index (default last).\\n           Raise IndexError if list is empty or index is out of range.\\n        '''\\n        v = self[index]\\n        del self[index]\\n        return v\\n\\n    def remove(self, value):\\n        '''S.remove(value) -- remove first occurrence of value.\\n           Raise ValueError if the value is not present.\\n        '''\\n        del self[self.index(value)]\\n\\n    def __iadd__(self, values):\\n        self.extend(values)\\n        return self\\n\\n\\nMutableSequence.register(list)\\nMutableSequence.register(bytearray)  # Multiply inheriting, see ByteString\\n\", 1173], \"/usr/lib/python3.12/asyncio/coroutines.py\": [\"__all__ = 'iscoroutinefunction', 'iscoroutine'\\n\\nimport collections.abc\\nimport inspect\\nimport os\\nimport sys\\nimport types\\n\\n\\ndef _is_debug_mode():\\n    # See: https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode.\\n    return sys.flags.dev_mode or (not sys.flags.ignore_environment and\\n                                  bool(os.environ.get('PYTHONASYNCIODEBUG')))\\n\\n\\n# A marker for iscoroutinefunction.\\n_is_coroutine = object()\\n\\n\\ndef iscoroutinefunction(func):\\n    \\\"\\\"\\\"Return True if func is a decorated coroutine function.\\\"\\\"\\\"\\n    return (inspect.iscoroutinefunction(func) or\\n            getattr(func, '_is_coroutine', None) is _is_coroutine)\\n\\n\\n# Prioritize native coroutine check to speed-up\\n# asyncio.iscoroutine.\\n_COROUTINE_TYPES = (types.CoroutineType, collections.abc.Coroutine)\\n_iscoroutine_typecache = set()\\n\\n\\ndef iscoroutine(obj):\\n    \\\"\\\"\\\"Return True if obj is a coroutine object.\\\"\\\"\\\"\\n    if type(obj) in _iscoroutine_typecache:\\n        return True\\n\\n    if isinstance(obj, _COROUTINE_TYPES):\\n        # Just in case we don't want to cache more than 100\\n        # positive types.  That shouldn't ever happen, unless\\n        # someone stressing the system on purpose.\\n        if len(_iscoroutine_typecache) < 100:\\n            _iscoroutine_typecache.add(type(obj))\\n        return True\\n    else:\\n        return False\\n\\n\\ndef _format_coroutine(coro):\\n    assert iscoroutine(coro)\\n\\n    def get_name(coro):\\n        # Coroutines compiled with Cython sometimes don't have\\n        # proper __qualname__ or __name__.  While that is a bug\\n        # in Cython, asyncio shouldn't crash with an AttributeError\\n        # in its __repr__ functions.\\n        if hasattr(coro, '__qualname__') and coro.__qualname__:\\n            coro_name = coro.__qualname__\\n        elif hasattr(coro, '__name__') and coro.__name__:\\n            coro_name = coro.__name__\\n        else:\\n            # Stop masking Cython bugs, expose them in a friendly way.\\n            coro_name = f'<{type(coro).__name__} without __name__>'\\n        return f'{coro_name}()'\\n\\n    def is_running(coro):\\n        try:\\n            return coro.cr_running\\n        except AttributeError:\\n            try:\\n                return coro.gi_running\\n            except AttributeError:\\n                return False\\n\\n    coro_code = None\\n    if hasattr(coro, 'cr_code') and coro.cr_code:\\n        coro_code = coro.cr_code\\n    elif hasattr(coro, 'gi_code') and coro.gi_code:\\n        coro_code = coro.gi_code\\n\\n    coro_name = get_name(coro)\\n\\n    if not coro_code:\\n        # Built-in types might not have __qualname__ or __name__.\\n        if is_running(coro):\\n            return f'{coro_name} running'\\n        else:\\n            return coro_name\\n\\n    coro_frame = None\\n    if hasattr(coro, 'gi_frame') and coro.gi_frame:\\n        coro_frame = coro.gi_frame\\n    elif hasattr(coro, 'cr_frame') and coro.cr_frame:\\n        coro_frame = coro.cr_frame\\n\\n    # If Cython's coroutine has a fake code object without proper\\n    # co_filename -- expose that.\\n    filename = coro_code.co_filename or '<empty co_filename>'\\n\\n    lineno = 0\\n\\n    if coro_frame is not None:\\n        lineno = coro_frame.f_lineno\\n        coro_repr = f'{coro_name} running at {filename}:{lineno}'\\n\\n    else:\\n        lineno = coro_code.co_firstlineno\\n        coro_repr = f'{coro_name} done, defined at {filename}:{lineno}'\\n\\n    return coro_repr\\n\", 109], \"/usr/lib/python3.12/asyncio/base_events.py\": [\"\\\"\\\"\\\"Base implementation of event loop.\\n\\nThe event loop can be broken up into a multiplexer (the part\\nresponsible for notifying us of I/O events) and the event loop proper,\\nwhich wraps a multiplexer with functionality for scheduling callbacks,\\nimmediately or at a given time in the future.\\n\\nWhenever a public API takes a callback, subsequent positional\\narguments will be passed to the callback if/when it is called.  This\\navoids the proliferation of trivial lambdas implementing closures.\\nKeyword arguments for the callback are not supported; this is a\\nconscious design decision, leaving the door open for keyword arguments\\nto modify the meaning of the API call itself.\\n\\\"\\\"\\\"\\n\\nimport collections\\nimport collections.abc\\nimport concurrent.futures\\nimport errno\\nimport functools\\nimport heapq\\nimport itertools\\nimport os\\nimport socket\\nimport stat\\nimport subprocess\\nimport threading\\nimport time\\nimport traceback\\nimport sys\\nimport warnings\\nimport weakref\\n\\ntry:\\n    import ssl\\nexcept ImportError:  # pragma: no cover\\n    ssl = None\\n\\nfrom . import constants\\nfrom . import coroutines\\nfrom . import events\\nfrom . import exceptions\\nfrom . import futures\\nfrom . import protocols\\nfrom . import sslproto\\nfrom . import staggered\\nfrom . import tasks\\nfrom . import timeouts\\nfrom . import transports\\nfrom . import trsock\\nfrom .log import logger\\n\\n\\n__all__ = 'BaseEventLoop','Server',\\n\\n\\n# Minimum number of _scheduled timer handles before cleanup of\\n# cancelled handles is performed.\\n_MIN_SCHEDULED_TIMER_HANDLES = 100\\n\\n# Minimum fraction of _scheduled timer handles that are cancelled\\n# before cleanup of cancelled handles is performed.\\n_MIN_CANCELLED_TIMER_HANDLES_FRACTION = 0.5\\n\\n\\n_HAS_IPv6 = hasattr(socket, 'AF_INET6')\\n\\n# Maximum timeout passed to select to avoid OS limitations\\nMAXIMUM_SELECT_TIMEOUT = 24 * 3600\\n\\n\\ndef _format_handle(handle):\\n    cb = handle._callback\\n    if isinstance(getattr(cb, '__self__', None), tasks.Task):\\n        # format the task\\n        return repr(cb.__self__)\\n    else:\\n        return str(handle)\\n\\n\\ndef _format_pipe(fd):\\n    if fd == subprocess.PIPE:\\n        return '<pipe>'\\n    elif fd == subprocess.STDOUT:\\n        return '<stdout>'\\n    else:\\n        return repr(fd)\\n\\n\\ndef _set_reuseport(sock):\\n    if not hasattr(socket, 'SO_REUSEPORT'):\\n        raise ValueError('reuse_port not supported by socket module')\\n    else:\\n        try:\\n            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)\\n        except OSError:\\n            raise ValueError('reuse_port not supported by socket module, '\\n                             'SO_REUSEPORT defined but not implemented.')\\n\\n\\ndef _ipaddr_info(host, port, family, type, proto, flowinfo=0, scopeid=0):\\n    # Try to skip getaddrinfo if \\\"host\\\" is already an IP. Users might have\\n    # handled name resolution in their own code and pass in resolved IPs.\\n    if not hasattr(socket, 'inet_pton'):\\n        return\\n\\n    if proto not in {0, socket.IPPROTO_TCP, socket.IPPROTO_UDP} or \\\\\\n            host is None:\\n        return None\\n\\n    if type == socket.SOCK_STREAM:\\n        proto = socket.IPPROTO_TCP\\n    elif type == socket.SOCK_DGRAM:\\n        proto = socket.IPPROTO_UDP\\n    else:\\n        return None\\n\\n    if port is None:\\n        port = 0\\n    elif isinstance(port, bytes) and port == b'':\\n        port = 0\\n    elif isinstance(port, str) and port == '':\\n        port = 0\\n    else:\\n        # If port's a service name like \\\"http\\\", don't skip getaddrinfo.\\n        try:\\n            port = int(port)\\n        except (TypeError, ValueError):\\n            return None\\n\\n    if family == socket.AF_UNSPEC:\\n        afs = [socket.AF_INET]\\n        if _HAS_IPv6:\\n            afs.append(socket.AF_INET6)\\n    else:\\n        afs = [family]\\n\\n    if isinstance(host, bytes):\\n        host = host.decode('idna')\\n    if '%' in host:\\n        # Linux's inet_pton doesn't accept an IPv6 zone index after host,\\n        # like '::1%lo0'.\\n        return None\\n\\n    for af in afs:\\n        try:\\n            socket.inet_pton(af, host)\\n            # The host has already been resolved.\\n            if _HAS_IPv6 and af == socket.AF_INET6:\\n                return af, type, proto, '', (host, port, flowinfo, scopeid)\\n            else:\\n                return af, type, proto, '', (host, port)\\n        except OSError:\\n            pass\\n\\n    # \\\"host\\\" is not an IP address.\\n    return None\\n\\n\\ndef _interleave_addrinfos(addrinfos, first_address_family_count=1):\\n    \\\"\\\"\\\"Interleave list of addrinfo tuples by family.\\\"\\\"\\\"\\n    # Group addresses by family\\n    addrinfos_by_family = collections.OrderedDict()\\n    for addr in addrinfos:\\n        family = addr[0]\\n        if family not in addrinfos_by_family:\\n            addrinfos_by_family[family] = []\\n        addrinfos_by_family[family].append(addr)\\n    addrinfos_lists = list(addrinfos_by_family.values())\\n\\n    reordered = []\\n    if first_address_family_count > 1:\\n        reordered.extend(addrinfos_lists[0][:first_address_family_count - 1])\\n        del addrinfos_lists[0][:first_address_family_count - 1]\\n    reordered.extend(\\n        a for a in itertools.chain.from_iterable(\\n            itertools.zip_longest(*addrinfos_lists)\\n        ) if a is not None)\\n    return reordered\\n\\n\\ndef _run_until_complete_cb(fut):\\n    if not fut.cancelled():\\n        exc = fut.exception()\\n        if isinstance(exc, (SystemExit, KeyboardInterrupt)):\\n            # Issue #22429: run_forever() already finished, no need to\\n            # stop it.\\n            return\\n    futures._get_loop(fut).stop()\\n\\n\\nif hasattr(socket, 'TCP_NODELAY'):\\n    def _set_nodelay(sock):\\n        if (sock.family in {socket.AF_INET, socket.AF_INET6} and\\n                sock.type == socket.SOCK_STREAM and\\n                sock.proto == socket.IPPROTO_TCP):\\n            sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)\\nelse:\\n    def _set_nodelay(sock):\\n        pass\\n\\n\\ndef _check_ssl_socket(sock):\\n    if ssl is not None and isinstance(sock, ssl.SSLSocket):\\n        raise TypeError(\\\"Socket cannot be of type SSLSocket\\\")\\n\\n\\nclass _SendfileFallbackProtocol(protocols.Protocol):\\n    def __init__(self, transp):\\n        if not isinstance(transp, transports._FlowControlMixin):\\n            raise TypeError(\\\"transport should be _FlowControlMixin instance\\\")\\n        self._transport = transp\\n        self._proto = transp.get_protocol()\\n        self._should_resume_reading = transp.is_reading()\\n        self._should_resume_writing = transp._protocol_paused\\n        transp.pause_reading()\\n        transp.set_protocol(self)\\n        if self._should_resume_writing:\\n            self._write_ready_fut = self._transport._loop.create_future()\\n        else:\\n            self._write_ready_fut = None\\n\\n    async def drain(self):\\n        if self._transport.is_closing():\\n            raise ConnectionError(\\\"Connection closed by peer\\\")\\n        fut = self._write_ready_fut\\n        if fut is None:\\n            return\\n        await fut\\n\\n    def connection_made(self, transport):\\n        raise RuntimeError(\\\"Invalid state: \\\"\\n                           \\\"connection should have been established already.\\\")\\n\\n    def connection_lost(self, exc):\\n        if self._write_ready_fut is not None:\\n            # Never happens if peer disconnects after sending the whole content\\n            # Thus disconnection is always an exception from user perspective\\n            if exc is None:\\n                self._write_ready_fut.set_exception(\\n                    ConnectionError(\\\"Connection is closed by peer\\\"))\\n            else:\\n                self._write_ready_fut.set_exception(exc)\\n        self._proto.connection_lost(exc)\\n\\n    def pause_writing(self):\\n        if self._write_ready_fut is not None:\\n            return\\n        self._write_ready_fut = self._transport._loop.create_future()\\n\\n    def resume_writing(self):\\n        if self._write_ready_fut is None:\\n            return\\n        self._write_ready_fut.set_result(False)\\n        self._write_ready_fut = None\\n\\n    def data_received(self, data):\\n        raise RuntimeError(\\\"Invalid state: reading should be paused\\\")\\n\\n    def eof_received(self):\\n        raise RuntimeError(\\\"Invalid state: reading should be paused\\\")\\n\\n    async def restore(self):\\n        self._transport.set_protocol(self._proto)\\n        if self._should_resume_reading:\\n            self._transport.resume_reading()\\n        if self._write_ready_fut is not None:\\n            # Cancel the future.\\n            # Basically it has no effect because protocol is switched back,\\n            # no code should wait for it anymore.\\n            self._write_ready_fut.cancel()\\n        if self._should_resume_writing:\\n            self._proto.resume_writing()\\n\\n\\nclass Server(events.AbstractServer):\\n\\n    def __init__(self, loop, sockets, protocol_factory, ssl_context, backlog,\\n                 ssl_handshake_timeout, ssl_shutdown_timeout=None):\\n        self._loop = loop\\n        self._sockets = sockets\\n        self._active_count = 0\\n        self._waiters = []\\n        self._protocol_factory = protocol_factory\\n        self._backlog = backlog\\n        self._ssl_context = ssl_context\\n        self._ssl_handshake_timeout = ssl_handshake_timeout\\n        self._ssl_shutdown_timeout = ssl_shutdown_timeout\\n        self._serving = False\\n        self._serving_forever_fut = None\\n\\n    def __repr__(self):\\n        return f'<{self.__class__.__name__} sockets={self.sockets!r}>'\\n\\n    def _attach(self):\\n        assert self._sockets is not None\\n        self._active_count += 1\\n\\n    def _detach(self):\\n        assert self._active_count > 0\\n        self._active_count -= 1\\n        if self._active_count == 0 and self._sockets is None:\\n            self._wakeup()\\n\\n    def _wakeup(self):\\n        waiters = self._waiters\\n        self._waiters = None\\n        for waiter in waiters:\\n            if not waiter.done():\\n                waiter.set_result(None)\\n\\n    def _start_serving(self):\\n        if self._serving:\\n            return\\n        self._serving = True\\n        for sock in self._sockets:\\n            sock.listen(self._backlog)\\n            self._loop._start_serving(\\n                self._protocol_factory, sock, self._ssl_context,\\n                self, self._backlog, self._ssl_handshake_timeout,\\n                self._ssl_shutdown_timeout)\\n\\n    def get_loop(self):\\n        return self._loop\\n\\n    def is_serving(self):\\n        return self._serving\\n\\n    @property\\n    def sockets(self):\\n        if self._sockets is None:\\n            return ()\\n        return tuple(trsock.TransportSocket(s) for s in self._sockets)\\n\\n    def close(self):\\n        sockets = self._sockets\\n        if sockets is None:\\n            return\\n        self._sockets = None\\n\\n        for sock in sockets:\\n            self._loop._stop_serving(sock)\\n\\n        self._serving = False\\n\\n        if (self._serving_forever_fut is not None and\\n                not self._serving_forever_fut.done()):\\n            self._serving_forever_fut.cancel()\\n            self._serving_forever_fut = None\\n\\n        if self._active_count == 0:\\n            self._wakeup()\\n\\n    async def start_serving(self):\\n        self._start_serving()\\n        # Skip one loop iteration so that all 'loop.add_reader'\\n        # go through.\\n        await tasks.sleep(0)\\n\\n    async def serve_forever(self):\\n        if self._serving_forever_fut is not None:\\n            raise RuntimeError(\\n                f'server {self!r} is already being awaited on serve_forever()')\\n        if self._sockets is None:\\n            raise RuntimeError(f'server {self!r} is closed')\\n\\n        self._start_serving()\\n        self._serving_forever_fut = self._loop.create_future()\\n\\n        try:\\n            await self._serving_forever_fut\\n        except exceptions.CancelledError:\\n            try:\\n                self.close()\\n                await self.wait_closed()\\n            finally:\\n                raise\\n        finally:\\n            self._serving_forever_fut = None\\n\\n    async def wait_closed(self):\\n        \\\"\\\"\\\"Wait until server is closed and all connections are dropped.\\n\\n        - If the server is not closed, wait.\\n        - If it is closed, but there are still active connections, wait.\\n\\n        Anyone waiting here will be unblocked once both conditions\\n        (server is closed and all connections have been dropped)\\n        have become true, in either order.\\n\\n        Historical note: In 3.11 and before, this was broken, returning\\n        immediately if the server was already closed, even if there\\n        were still active connections. An attempted fix in 3.12.0 was\\n        still broken, returning immediately if the server was still\\n        open and there were no active connections. Hopefully in 3.12.1\\n        we have it right.\\n        \\\"\\\"\\\"\\n        # Waiters are unblocked by self._wakeup(), which is called\\n        # from two places: self.close() and self._detach(), but only\\n        # when both conditions have become true. To signal that this\\n        # has happened, self._wakeup() sets self._waiters to None.\\n        if self._waiters is None:\\n            return\\n        waiter = self._loop.create_future()\\n        self._waiters.append(waiter)\\n        await waiter\\n\\n\\nclass BaseEventLoop(events.AbstractEventLoop):\\n\\n    def __init__(self):\\n        self._timer_cancelled_count = 0\\n        self._closed = False\\n        self._stopping = False\\n        self._ready = collections.deque()\\n        self._scheduled = []\\n        self._default_executor = None\\n        self._internal_fds = 0\\n        # Identifier of the thread running the event loop, or None if the\\n        # event loop is not running\\n        self._thread_id = None\\n        self._clock_resolution = time.get_clock_info('monotonic').resolution\\n        self._exception_handler = None\\n        self.set_debug(coroutines._is_debug_mode())\\n        # In debug mode, if the execution of a callback or a step of a task\\n        # exceed this duration in seconds, the slow callback/task is logged.\\n        self.slow_callback_duration = 0.1\\n        self._current_handle = None\\n        self._task_factory = None\\n        self._coroutine_origin_tracking_enabled = False\\n        self._coroutine_origin_tracking_saved_depth = None\\n\\n        # A weak set of all asynchronous generators that are\\n        # being iterated by the loop.\\n        self._asyncgens = weakref.WeakSet()\\n        # Set to True when `loop.shutdown_asyncgens` is called.\\n        self._asyncgens_shutdown_called = False\\n        # Set to True when `loop.shutdown_default_executor` is called.\\n        self._executor_shutdown_called = False\\n\\n    def __repr__(self):\\n        return (\\n            f'<{self.__class__.__name__} running={self.is_running()} '\\n            f'closed={self.is_closed()} debug={self.get_debug()}>'\\n        )\\n\\n    def create_future(self):\\n        \\\"\\\"\\\"Create a Future object attached to the loop.\\\"\\\"\\\"\\n        return futures.Future(loop=self)\\n\\n    def create_task(self, coro, *, name=None, context=None):\\n        \\\"\\\"\\\"Schedule a coroutine object.\\n\\n        Return a task object.\\n        \\\"\\\"\\\"\\n        self._check_closed()\\n        if self._task_factory is None:\\n            task = tasks.Task(coro, loop=self, name=name, context=context)\\n            if task._source_traceback:\\n                del task._source_traceback[-1]\\n        else:\\n            if context is None:\\n                # Use legacy API if context is not needed\\n                task = self._task_factory(self, coro)\\n            else:\\n                task = self._task_factory(self, coro, context=context)\\n\\n            tasks._set_task_name(task, name)\\n\\n        return task\\n\\n    def set_task_factory(self, factory):\\n        \\\"\\\"\\\"Set a task factory that will be used by loop.create_task().\\n\\n        If factory is None the default task factory will be set.\\n\\n        If factory is a callable, it should have a signature matching\\n        '(loop, coro)', where 'loop' will be a reference to the active\\n        event loop, 'coro' will be a coroutine object.  The callable\\n        must return a Future.\\n        \\\"\\\"\\\"\\n        if factory is not None and not callable(factory):\\n            raise TypeError('task factory must be a callable or None')\\n        self._task_factory = factory\\n\\n    def get_task_factory(self):\\n        \\\"\\\"\\\"Return a task factory, or None if the default one is in use.\\\"\\\"\\\"\\n        return self._task_factory\\n\\n    def _make_socket_transport(self, sock, protocol, waiter=None, *,\\n                               extra=None, server=None):\\n        \\\"\\\"\\\"Create socket transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _make_ssl_transport(\\n            self, rawsock, protocol, sslcontext, waiter=None,\\n            *, server_side=False, server_hostname=None,\\n            extra=None, server=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            call_connection_made=True):\\n        \\\"\\\"\\\"Create SSL transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _make_datagram_transport(self, sock, protocol,\\n                                 address=None, waiter=None, extra=None):\\n        \\\"\\\"\\\"Create datagram transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _make_read_pipe_transport(self, pipe, protocol, waiter=None,\\n                                  extra=None):\\n        \\\"\\\"\\\"Create read pipe transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _make_write_pipe_transport(self, pipe, protocol, waiter=None,\\n                                   extra=None):\\n        \\\"\\\"\\\"Create write pipe transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    async def _make_subprocess_transport(self, protocol, args, shell,\\n                                         stdin, stdout, stderr, bufsize,\\n                                         extra=None, **kwargs):\\n        \\\"\\\"\\\"Create subprocess transport.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _write_to_self(self):\\n        \\\"\\\"\\\"Write a byte to self-pipe, to wake up the event loop.\\n\\n        This may be called from a different thread.\\n\\n        The subclass is responsible for implementing the self-pipe.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _process_events(self, event_list):\\n        \\\"\\\"\\\"Process selector events.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def _check_closed(self):\\n        if self._closed:\\n            raise RuntimeError('Event loop is closed')\\n\\n    def _check_default_executor(self):\\n        if self._executor_shutdown_called:\\n            raise RuntimeError('Executor shutdown has been called')\\n\\n    def _asyncgen_finalizer_hook(self, agen):\\n        self._asyncgens.discard(agen)\\n        if not self.is_closed():\\n            self.call_soon_threadsafe(self.create_task, agen.aclose())\\n\\n    def _asyncgen_firstiter_hook(self, agen):\\n        if self._asyncgens_shutdown_called:\\n            warnings.warn(\\n                f\\\"asynchronous generator {agen!r} was scheduled after \\\"\\n                f\\\"loop.shutdown_asyncgens() call\\\",\\n                ResourceWarning, source=self)\\n\\n        self._asyncgens.add(agen)\\n\\n    async def shutdown_asyncgens(self):\\n        \\\"\\\"\\\"Shutdown all active asynchronous generators.\\\"\\\"\\\"\\n        self._asyncgens_shutdown_called = True\\n\\n        if not len(self._asyncgens):\\n            # If Python version is <3.6 or we don't have any asynchronous\\n            # generators alive.\\n            return\\n\\n        closing_agens = list(self._asyncgens)\\n        self._asyncgens.clear()\\n\\n        results = await tasks.gather(\\n            *[ag.aclose() for ag in closing_agens],\\n            return_exceptions=True)\\n\\n        for result, agen in zip(results, closing_agens):\\n            if isinstance(result, Exception):\\n                self.call_exception_handler({\\n                    'message': f'an error occurred during closing of '\\n                               f'asynchronous generator {agen!r}',\\n                    'exception': result,\\n                    'asyncgen': agen\\n                })\\n\\n    async def shutdown_default_executor(self, timeout=None):\\n        \\\"\\\"\\\"Schedule the shutdown of the default executor.\\n\\n        The timeout parameter specifies the amount of time the executor will\\n        be given to finish joining. The default value is None, which means\\n        that the executor will be given an unlimited amount of time.\\n        \\\"\\\"\\\"\\n        self._executor_shutdown_called = True\\n        if self._default_executor is None:\\n            return\\n        future = self.create_future()\\n        thread = threading.Thread(target=self._do_shutdown, args=(future,))\\n        thread.start()\\n        try:\\n            async with timeouts.timeout(timeout):\\n                await future\\n        except TimeoutError:\\n            warnings.warn(\\\"The executor did not finishing joining \\\"\\n                          f\\\"its threads within {timeout} seconds.\\\",\\n                          RuntimeWarning, stacklevel=2)\\n            self._default_executor.shutdown(wait=False)\\n        else:\\n            thread.join()\\n\\n    def _do_shutdown(self, future):\\n        try:\\n            self._default_executor.shutdown(wait=True)\\n            if not self.is_closed():\\n                self.call_soon_threadsafe(futures._set_result_unless_cancelled,\\n                                          future, None)\\n        except Exception as ex:\\n            if not self.is_closed() and not future.cancelled():\\n                self.call_soon_threadsafe(future.set_exception, ex)\\n\\n    def _check_running(self):\\n        if self.is_running():\\n            raise RuntimeError('This event loop is already running')\\n        if events._get_running_loop() is not None:\\n            raise RuntimeError(\\n                'Cannot run the event loop while another loop is running')\\n\\n    def run_forever(self):\\n        \\\"\\\"\\\"Run until stop() is called.\\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_running()\\n        self._set_coroutine_origin_tracking(self._debug)\\n\\n        old_agen_hooks = sys.get_asyncgen_hooks()\\n        try:\\n            self._thread_id = threading.get_ident()\\n            sys.set_asyncgen_hooks(firstiter=self._asyncgen_firstiter_hook,\\n                                   finalizer=self._asyncgen_finalizer_hook)\\n\\n            events._set_running_loop(self)\\n            while True:\\n                self._run_once()\\n                if self._stopping:\\n                    break\\n        finally:\\n            self._stopping = False\\n            self._thread_id = None\\n            events._set_running_loop(None)\\n            self._set_coroutine_origin_tracking(False)\\n            sys.set_asyncgen_hooks(*old_agen_hooks)\\n\\n    def run_until_complete(self, future):\\n        \\\"\\\"\\\"Run until the Future is done.\\n\\n        If the argument is a coroutine, it is wrapped in a Task.\\n\\n        WARNING: It would be disastrous to call run_until_complete()\\n        with the same coroutine twice -- it would wrap it in two\\n        different Tasks and that can't be good.\\n\\n        Return the Future's result, or raise its exception.\\n        \\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_running()\\n\\n        new_task = not futures.isfuture(future)\\n        future = tasks.ensure_future(future, loop=self)\\n        if new_task:\\n            # An exception is raised if the future didn't complete, so there\\n            # is no need to log the \\\"destroy pending task\\\" message\\n            future._log_destroy_pending = False\\n\\n        future.add_done_callback(_run_until_complete_cb)\\n        try:\\n            self.run_forever()\\n        except:\\n            if new_task and future.done() and not future.cancelled():\\n                # The coroutine raised a BaseException. Consume the exception\\n                # to not log a warning, the caller doesn't have access to the\\n                # local task.\\n                future.exception()\\n            raise\\n        finally:\\n            future.remove_done_callback(_run_until_complete_cb)\\n        if not future.done():\\n            raise RuntimeError('Event loop stopped before Future completed.')\\n\\n        return future.result()\\n\\n    def stop(self):\\n        \\\"\\\"\\\"Stop running the event loop.\\n\\n        Every callback already scheduled will still run.  This simply informs\\n        run_forever to stop looping after a complete iteration.\\n        \\\"\\\"\\\"\\n        self._stopping = True\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the event loop.\\n\\n        This clears the queues and shuts down the executor,\\n        but does not wait for the executor to finish.\\n\\n        The event loop must not be running.\\n        \\\"\\\"\\\"\\n        if self.is_running():\\n            raise RuntimeError(\\\"Cannot close a running event loop\\\")\\n        if self._closed:\\n            return\\n        if self._debug:\\n            logger.debug(\\\"Close %r\\\", self)\\n        self._closed = True\\n        self._ready.clear()\\n        self._scheduled.clear()\\n        self._executor_shutdown_called = True\\n        executor = self._default_executor\\n        if executor is not None:\\n            self._default_executor = None\\n            executor.shutdown(wait=False)\\n\\n    def is_closed(self):\\n        \\\"\\\"\\\"Returns True if the event loop was closed.\\\"\\\"\\\"\\n        return self._closed\\n\\n    def __del__(self, _warn=warnings.warn):\\n        if not self.is_closed():\\n            _warn(f\\\"unclosed event loop {self!r}\\\", ResourceWarning, source=self)\\n            if not self.is_running():\\n                self.close()\\n\\n    def is_running(self):\\n        \\\"\\\"\\\"Returns True if the event loop is running.\\\"\\\"\\\"\\n        return (self._thread_id is not None)\\n\\n    def time(self):\\n        \\\"\\\"\\\"Return the time according to the event loop's clock.\\n\\n        This is a float expressed in seconds since an epoch, but the\\n        epoch, precision, accuracy and drift are unspecified and may\\n        differ per event loop.\\n        \\\"\\\"\\\"\\n        return time.monotonic()\\n\\n    def call_later(self, delay, callback, *args, context=None):\\n        \\\"\\\"\\\"Arrange for a callback to be called at a given time.\\n\\n        Return a Handle: an opaque object with a cancel() method that\\n        can be used to cancel the call.\\n\\n        The delay can be an int or float, expressed in seconds.  It is\\n        always relative to the current time.\\n\\n        Each callback will be called exactly once.  If two callbacks\\n        are scheduled for exactly the same time, it is undefined which\\n        will be called first.\\n\\n        Any positional arguments after the callback will be passed to\\n        the callback when it is called.\\n        \\\"\\\"\\\"\\n        if delay is None:\\n            raise TypeError('delay must not be None')\\n        timer = self.call_at(self.time() + delay, callback, *args,\\n                             context=context)\\n        if timer._source_traceback:\\n            del timer._source_traceback[-1]\\n        return timer\\n\\n    def call_at(self, when, callback, *args, context=None):\\n        \\\"\\\"\\\"Like call_later(), but uses an absolute time.\\n\\n        Absolute time corresponds to the event loop's time() method.\\n        \\\"\\\"\\\"\\n        if when is None:\\n            raise TypeError(\\\"when cannot be None\\\")\\n        self._check_closed()\\n        if self._debug:\\n            self._check_thread()\\n            self._check_callback(callback, 'call_at')\\n        timer = events.TimerHandle(when, callback, args, self, context)\\n        if timer._source_traceback:\\n            del timer._source_traceback[-1]\\n        heapq.heappush(self._scheduled, timer)\\n        timer._scheduled = True\\n        return timer\\n\\n    def call_soon(self, callback, *args, context=None):\\n        \\\"\\\"\\\"Arrange for a callback to be called as soon as possible.\\n\\n        This operates as a FIFO queue: callbacks are called in the\\n        order in which they are registered.  Each callback will be\\n        called exactly once.\\n\\n        Any positional arguments after the callback will be passed to\\n        the callback when it is called.\\n        \\\"\\\"\\\"\\n        self._check_closed()\\n        if self._debug:\\n            self._check_thread()\\n            self._check_callback(callback, 'call_soon')\\n        handle = self._call_soon(callback, args, context)\\n        if handle._source_traceback:\\n            del handle._source_traceback[-1]\\n        return handle\\n\\n    def _check_callback(self, callback, method):\\n        if (coroutines.iscoroutine(callback) or\\n                coroutines.iscoroutinefunction(callback)):\\n            raise TypeError(\\n                f\\\"coroutines cannot be used with {method}()\\\")\\n        if not callable(callback):\\n            raise TypeError(\\n                f'a callable object was expected by {method}(), '\\n                f'got {callback!r}')\\n\\n    def _call_soon(self, callback, args, context):\\n        handle = events.Handle(callback, args, self, context)\\n        if handle._source_traceback:\\n            del handle._source_traceback[-1]\\n        self._ready.append(handle)\\n        return handle\\n\\n    def _check_thread(self):\\n        \\\"\\\"\\\"Check that the current thread is the thread running the event loop.\\n\\n        Non-thread-safe methods of this class make this assumption and will\\n        likely behave incorrectly when the assumption is violated.\\n\\n        Should only be called when (self._debug == True).  The caller is\\n        responsible for checking this condition for performance reasons.\\n        \\\"\\\"\\\"\\n        if self._thread_id is None:\\n            return\\n        thread_id = threading.get_ident()\\n        if thread_id != self._thread_id:\\n            raise RuntimeError(\\n                \\\"Non-thread-safe operation invoked on an event loop other \\\"\\n                \\\"than the current one\\\")\\n\\n    def call_soon_threadsafe(self, callback, *args, context=None):\\n        \\\"\\\"\\\"Like call_soon(), but thread-safe.\\\"\\\"\\\"\\n        self._check_closed()\\n        if self._debug:\\n            self._check_callback(callback, 'call_soon_threadsafe')\\n        handle = self._call_soon(callback, args, context)\\n        if handle._source_traceback:\\n            del handle._source_traceback[-1]\\n        self._write_to_self()\\n        return handle\\n\\n    def run_in_executor(self, executor, func, *args):\\n        self._check_closed()\\n        if self._debug:\\n            self._check_callback(func, 'run_in_executor')\\n        if executor is None:\\n            executor = self._default_executor\\n            # Only check when the default executor is being used\\n            self._check_default_executor()\\n            if executor is None:\\n                executor = concurrent.futures.ThreadPoolExecutor(\\n                    thread_name_prefix='asyncio'\\n                )\\n                self._default_executor = executor\\n        return futures.wrap_future(\\n            executor.submit(func, *args), loop=self)\\n\\n    def set_default_executor(self, executor):\\n        if not isinstance(executor, concurrent.futures.ThreadPoolExecutor):\\n            raise TypeError('executor must be ThreadPoolExecutor instance')\\n        self._default_executor = executor\\n\\n    def _getaddrinfo_debug(self, host, port, family, type, proto, flags):\\n        msg = [f\\\"{host}:{port!r}\\\"]\\n        if family:\\n            msg.append(f'family={family!r}')\\n        if type:\\n            msg.append(f'type={type!r}')\\n        if proto:\\n            msg.append(f'proto={proto!r}')\\n        if flags:\\n            msg.append(f'flags={flags!r}')\\n        msg = ', '.join(msg)\\n        logger.debug('Get address info %s', msg)\\n\\n        t0 = self.time()\\n        addrinfo = socket.getaddrinfo(host, port, family, type, proto, flags)\\n        dt = self.time() - t0\\n\\n        msg = f'Getting address info {msg} took {dt * 1e3:.3f}ms: {addrinfo!r}'\\n        if dt >= self.slow_callback_duration:\\n            logger.info(msg)\\n        else:\\n            logger.debug(msg)\\n        return addrinfo\\n\\n    async def getaddrinfo(self, host, port, *,\\n                          family=0, type=0, proto=0, flags=0):\\n        if self._debug:\\n            getaddr_func = self._getaddrinfo_debug\\n        else:\\n            getaddr_func = socket.getaddrinfo\\n\\n        return await self.run_in_executor(\\n            None, getaddr_func, host, port, family, type, proto, flags)\\n\\n    async def getnameinfo(self, sockaddr, flags=0):\\n        return await self.run_in_executor(\\n            None, socket.getnameinfo, sockaddr, flags)\\n\\n    async def sock_sendfile(self, sock, file, offset=0, count=None,\\n                            *, fallback=True):\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        _check_ssl_socket(sock)\\n        self._check_sendfile_params(sock, file, offset, count)\\n        try:\\n            return await self._sock_sendfile_native(sock, file,\\n                                                    offset, count)\\n        except exceptions.SendfileNotAvailableError as exc:\\n            if not fallback:\\n                raise\\n        return await self._sock_sendfile_fallback(sock, file,\\n                                                  offset, count)\\n\\n    async def _sock_sendfile_native(self, sock, file, offset, count):\\n        # NB: sendfile syscall is not supported for SSL sockets and\\n        # non-mmap files even if sendfile is supported by OS\\n        raise exceptions.SendfileNotAvailableError(\\n            f\\\"syscall sendfile is not available for socket {sock!r} \\\"\\n            f\\\"and file {file!r} combination\\\")\\n\\n    async def _sock_sendfile_fallback(self, sock, file, offset, count):\\n        if offset:\\n            file.seek(offset)\\n        blocksize = (\\n            min(count, constants.SENDFILE_FALLBACK_READBUFFER_SIZE)\\n            if count else constants.SENDFILE_FALLBACK_READBUFFER_SIZE\\n        )\\n        buf = bytearray(blocksize)\\n        total_sent = 0\\n        try:\\n            while True:\\n                if count:\\n                    blocksize = min(count - total_sent, blocksize)\\n                    if blocksize <= 0:\\n                        break\\n                view = memoryview(buf)[:blocksize]\\n                read = await self.run_in_executor(None, file.readinto, view)\\n                if not read:\\n                    break  # EOF\\n                await self.sock_sendall(sock, view[:read])\\n                total_sent += read\\n            return total_sent\\n        finally:\\n            if total_sent > 0 and hasattr(file, 'seek'):\\n                file.seek(offset + total_sent)\\n\\n    def _check_sendfile_params(self, sock, file, offset, count):\\n        if 'b' not in getattr(file, 'mode', 'b'):\\n            raise ValueError(\\\"file should be opened in binary mode\\\")\\n        if not sock.type == socket.SOCK_STREAM:\\n            raise ValueError(\\\"only SOCK_STREAM type sockets are supported\\\")\\n        if count is not None:\\n            if not isinstance(count, int):\\n                raise TypeError(\\n                    \\\"count must be a positive integer (got {!r})\\\".format(count))\\n            if count <= 0:\\n                raise ValueError(\\n                    \\\"count must be a positive integer (got {!r})\\\".format(count))\\n        if not isinstance(offset, int):\\n            raise TypeError(\\n                \\\"offset must be a non-negative integer (got {!r})\\\".format(\\n                    offset))\\n        if offset < 0:\\n            raise ValueError(\\n                \\\"offset must be a non-negative integer (got {!r})\\\".format(\\n                    offset))\\n\\n    async def _connect_sock(self, exceptions, addr_info, local_addr_infos=None):\\n        \\\"\\\"\\\"Create, bind and connect one socket.\\\"\\\"\\\"\\n        my_exceptions = []\\n        exceptions.append(my_exceptions)\\n        family, type_, proto, _, address = addr_info\\n        sock = None\\n        try:\\n            sock = socket.socket(family=family, type=type_, proto=proto)\\n            sock.setblocking(False)\\n            if local_addr_infos is not None:\\n                for lfamily, _, _, _, laddr in local_addr_infos:\\n                    # skip local addresses of different family\\n                    if lfamily != family:\\n                        continue\\n                    try:\\n                        sock.bind(laddr)\\n                        break\\n                    except OSError as exc:\\n                        msg = (\\n                            f'error while attempting to bind on '\\n                            f'address {laddr!r}: '\\n                            f'{exc.strerror.lower()}'\\n                        )\\n                        exc = OSError(exc.errno, msg)\\n                        my_exceptions.append(exc)\\n                else:  # all bind attempts failed\\n                    if my_exceptions:\\n                        raise my_exceptions.pop()\\n                    else:\\n                        raise OSError(f\\\"no matching local address with {family=} found\\\")\\n            await self.sock_connect(sock, address)\\n            return sock\\n        except OSError as exc:\\n            my_exceptions.append(exc)\\n            if sock is not None:\\n                sock.close()\\n            raise\\n        except:\\n            if sock is not None:\\n                sock.close()\\n            raise\\n        finally:\\n            exceptions = my_exceptions = None\\n\\n    async def create_connection(\\n            self, protocol_factory, host=None, port=None,\\n            *, ssl=None, family=0,\\n            proto=0, flags=0, sock=None,\\n            local_addr=None, server_hostname=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            happy_eyeballs_delay=None, interleave=None,\\n            all_errors=False):\\n        \\\"\\\"\\\"Connect to a TCP server.\\n\\n        Create a streaming transport connection to a given internet host and\\n        port: socket family AF_INET or socket.AF_INET6 depending on host (or\\n        family if specified), socket type SOCK_STREAM. protocol_factory must be\\n        a callable returning a protocol instance.\\n\\n        This method is a coroutine which will try to establish the connection\\n        in the background.  When successful, the coroutine returns a\\n        (transport, protocol) pair.\\n        \\\"\\\"\\\"\\n        if server_hostname is not None and not ssl:\\n            raise ValueError('server_hostname is only meaningful with ssl')\\n\\n        if server_hostname is None and ssl:\\n            # Use host as default for server_hostname.  It is an error\\n            # if host is empty or not set, e.g. when an\\n            # already-connected socket was passed or when only a port\\n            # is given.  To avoid this error, you can pass\\n            # server_hostname='' -- this will bypass the hostname\\n            # check.  (This also means that if host is a numeric\\n            # IP/IPv6 address, we will attempt to verify that exact\\n            # address; this will probably fail, but it is possible to\\n            # create a certificate for a specific IP address, so we\\n            # don't judge it here.)\\n            if not host:\\n                raise ValueError('You must set server_hostname '\\n                                 'when using ssl without a host')\\n            server_hostname = host\\n\\n        if ssl_handshake_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_handshake_timeout is only meaningful with ssl')\\n\\n        if ssl_shutdown_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_shutdown_timeout is only meaningful with ssl')\\n\\n        if sock is not None:\\n            _check_ssl_socket(sock)\\n\\n        if happy_eyeballs_delay is not None and interleave is None:\\n            # If using happy eyeballs, default to interleave addresses by family\\n            interleave = 1\\n\\n        if host is not None or port is not None:\\n            if sock is not None:\\n                raise ValueError(\\n                    'host/port and sock can not be specified at the same time')\\n\\n            infos = await self._ensure_resolved(\\n                (host, port), family=family,\\n                type=socket.SOCK_STREAM, proto=proto, flags=flags, loop=self)\\n            if not infos:\\n                raise OSError('getaddrinfo() returned empty list')\\n\\n            if local_addr is not None:\\n                laddr_infos = await self._ensure_resolved(\\n                    local_addr, family=family,\\n                    type=socket.SOCK_STREAM, proto=proto,\\n                    flags=flags, loop=self)\\n                if not laddr_infos:\\n                    raise OSError('getaddrinfo() returned empty list')\\n            else:\\n                laddr_infos = None\\n\\n            if interleave:\\n                infos = _interleave_addrinfos(infos, interleave)\\n\\n            exceptions = []\\n            if happy_eyeballs_delay is None:\\n                # not using happy eyeballs\\n                for addrinfo in infos:\\n                    try:\\n                        sock = await self._connect_sock(\\n                            exceptions, addrinfo, laddr_infos)\\n                        break\\n                    except OSError:\\n                        continue\\n            else:  # using happy eyeballs\\n                sock, _, _ = await staggered.staggered_race(\\n                    (functools.partial(self._connect_sock,\\n                                       exceptions, addrinfo, laddr_infos)\\n                     for addrinfo in infos),\\n                    happy_eyeballs_delay, loop=self)\\n\\n            if sock is None:\\n                exceptions = [exc for sub in exceptions for exc in sub]\\n                try:\\n                    if all_errors:\\n                        raise ExceptionGroup(\\\"create_connection failed\\\", exceptions)\\n                    if len(exceptions) == 1:\\n                        raise exceptions[0]\\n                    else:\\n                        # If they all have the same str(), raise one.\\n                        model = str(exceptions[0])\\n                        if all(str(exc) == model for exc in exceptions):\\n                            raise exceptions[0]\\n                        # Raise a combined exception so the user can see all\\n                        # the various error messages.\\n                        raise OSError('Multiple exceptions: {}'.format(\\n                            ', '.join(str(exc) for exc in exceptions)))\\n                finally:\\n                    exceptions = None\\n\\n        else:\\n            if sock is None:\\n                raise ValueError(\\n                    'host and port was not specified and no sock specified')\\n            if sock.type != socket.SOCK_STREAM:\\n                # We allow AF_INET, AF_INET6, AF_UNIX as long as they\\n                # are SOCK_STREAM.\\n                # We support passing AF_UNIX sockets even though we have\\n                # a dedicated API for that: create_unix_connection.\\n                # Disallowing AF_UNIX in this method, breaks backwards\\n                # compatibility.\\n                raise ValueError(\\n                    f'A Stream Socket was expected, got {sock!r}')\\n\\n        transport, protocol = await self._create_connection_transport(\\n            sock, protocol_factory, ssl, server_hostname,\\n            ssl_handshake_timeout=ssl_handshake_timeout,\\n            ssl_shutdown_timeout=ssl_shutdown_timeout)\\n        if self._debug:\\n            # Get the socket from the transport because SSL transport closes\\n            # the old socket and creates a new SSL socket\\n            sock = transport.get_extra_info('socket')\\n            logger.debug(\\\"%r connected to %s:%r: (%r, %r)\\\",\\n                         sock, host, port, transport, protocol)\\n        return transport, protocol\\n\\n    async def _create_connection_transport(\\n            self, sock, protocol_factory, ssl,\\n            server_hostname, server_side=False,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None):\\n\\n        sock.setblocking(False)\\n\\n        protocol = protocol_factory()\\n        waiter = self.create_future()\\n        if ssl:\\n            sslcontext = None if isinstance(ssl, bool) else ssl\\n            transport = self._make_ssl_transport(\\n                sock, protocol, sslcontext, waiter,\\n                server_side=server_side, server_hostname=server_hostname,\\n                ssl_handshake_timeout=ssl_handshake_timeout,\\n                ssl_shutdown_timeout=ssl_shutdown_timeout)\\n        else:\\n            transport = self._make_socket_transport(sock, protocol, waiter)\\n\\n        try:\\n            await waiter\\n        except:\\n            transport.close()\\n            raise\\n\\n        return transport, protocol\\n\\n    async def sendfile(self, transport, file, offset=0, count=None,\\n                       *, fallback=True):\\n        \\\"\\\"\\\"Send a file to transport.\\n\\n        Return the total number of bytes which were sent.\\n\\n        The method uses high-performance os.sendfile if available.\\n\\n        file must be a regular file object opened in binary mode.\\n\\n        offset tells from where to start reading the file. If specified,\\n        count is the total number of bytes to transmit as opposed to\\n        sending the file until EOF is reached. File position is updated on\\n        return or also in case of error in which case file.tell()\\n        can be used to figure out the number of bytes\\n        which were sent.\\n\\n        fallback set to True makes asyncio to manually read and send\\n        the file when the platform does not support the sendfile syscall\\n        (e.g. Windows or SSL socket on Unix).\\n\\n        Raise SendfileNotAvailableError if the system does not support\\n        sendfile syscall and fallback is False.\\n        \\\"\\\"\\\"\\n        if transport.is_closing():\\n            raise RuntimeError(\\\"Transport is closing\\\")\\n        mode = getattr(transport, '_sendfile_compatible',\\n                       constants._SendfileMode.UNSUPPORTED)\\n        if mode is constants._SendfileMode.UNSUPPORTED:\\n            raise RuntimeError(\\n                f\\\"sendfile is not supported for transport {transport!r}\\\")\\n        if mode is constants._SendfileMode.TRY_NATIVE:\\n            try:\\n                return await self._sendfile_native(transport, file,\\n                                                   offset, count)\\n            except exceptions.SendfileNotAvailableError as exc:\\n                if not fallback:\\n                    raise\\n\\n        if not fallback:\\n            raise RuntimeError(\\n                f\\\"fallback is disabled and native sendfile is not \\\"\\n                f\\\"supported for transport {transport!r}\\\")\\n\\n        return await self._sendfile_fallback(transport, file,\\n                                             offset, count)\\n\\n    async def _sendfile_native(self, transp, file, offset, count):\\n        raise exceptions.SendfileNotAvailableError(\\n            \\\"sendfile syscall is not supported\\\")\\n\\n    async def _sendfile_fallback(self, transp, file, offset, count):\\n        if offset:\\n            file.seek(offset)\\n        blocksize = min(count, 16384) if count else 16384\\n        buf = bytearray(blocksize)\\n        total_sent = 0\\n        proto = _SendfileFallbackProtocol(transp)\\n        try:\\n            while True:\\n                if count:\\n                    blocksize = min(count - total_sent, blocksize)\\n                    if blocksize <= 0:\\n                        return total_sent\\n                view = memoryview(buf)[:blocksize]\\n                read = await self.run_in_executor(None, file.readinto, view)\\n                if not read:\\n                    return total_sent  # EOF\\n                await proto.drain()\\n                transp.write(view[:read])\\n                total_sent += read\\n        finally:\\n            if total_sent > 0 and hasattr(file, 'seek'):\\n                file.seek(offset + total_sent)\\n            await proto.restore()\\n\\n    async def start_tls(self, transport, protocol, sslcontext, *,\\n                        server_side=False,\\n                        server_hostname=None,\\n                        ssl_handshake_timeout=None,\\n                        ssl_shutdown_timeout=None):\\n        \\\"\\\"\\\"Upgrade transport to TLS.\\n\\n        Return a new transport that *protocol* should start using\\n        immediately.\\n        \\\"\\\"\\\"\\n        if ssl is None:\\n            raise RuntimeError('Python ssl module is not available')\\n\\n        if not isinstance(sslcontext, ssl.SSLContext):\\n            raise TypeError(\\n                f'sslcontext is expected to be an instance of ssl.SSLContext, '\\n                f'got {sslcontext!r}')\\n\\n        if not getattr(transport, '_start_tls_compatible', False):\\n            raise TypeError(\\n                f'transport {transport!r} is not supported by start_tls()')\\n\\n        waiter = self.create_future()\\n        ssl_protocol = sslproto.SSLProtocol(\\n            self, protocol, sslcontext, waiter,\\n            server_side, server_hostname,\\n            ssl_handshake_timeout=ssl_handshake_timeout,\\n            ssl_shutdown_timeout=ssl_shutdown_timeout,\\n            call_connection_made=False)\\n\\n        # Pause early so that \\\"ssl_protocol.data_received()\\\" doesn't\\n        # have a chance to get called before \\\"ssl_protocol.connection_made()\\\".\\n        transport.pause_reading()\\n\\n        transport.set_protocol(ssl_protocol)\\n        conmade_cb = self.call_soon(ssl_protocol.connection_made, transport)\\n        resume_cb = self.call_soon(transport.resume_reading)\\n\\n        try:\\n            await waiter\\n        except BaseException:\\n            transport.close()\\n            conmade_cb.cancel()\\n            resume_cb.cancel()\\n            raise\\n\\n        return ssl_protocol._app_transport\\n\\n    async def create_datagram_endpoint(self, protocol_factory,\\n                                       local_addr=None, remote_addr=None, *,\\n                                       family=0, proto=0, flags=0,\\n                                       reuse_port=None,\\n                                       allow_broadcast=None, sock=None):\\n        \\\"\\\"\\\"Create datagram connection.\\\"\\\"\\\"\\n        if sock is not None:\\n            if sock.type == socket.SOCK_STREAM:\\n                raise ValueError(\\n                    f'A datagram socket was expected, got {sock!r}')\\n            if (local_addr or remote_addr or\\n                    family or proto or flags or\\n                    reuse_port or allow_broadcast):\\n                # show the problematic kwargs in exception msg\\n                opts = dict(local_addr=local_addr, remote_addr=remote_addr,\\n                            family=family, proto=proto, flags=flags,\\n                            reuse_port=reuse_port,\\n                            allow_broadcast=allow_broadcast)\\n                problems = ', '.join(f'{k}={v}' for k, v in opts.items() if v)\\n                raise ValueError(\\n                    f'socket modifier keyword arguments can not be used '\\n                    f'when sock is specified. ({problems})')\\n            sock.setblocking(False)\\n            r_addr = None\\n        else:\\n            if not (local_addr or remote_addr):\\n                if family == 0:\\n                    raise ValueError('unexpected address family')\\n                addr_pairs_info = (((family, proto), (None, None)),)\\n            elif hasattr(socket, 'AF_UNIX') and family == socket.AF_UNIX:\\n                for addr in (local_addr, remote_addr):\\n                    if addr is not None and not isinstance(addr, str):\\n                        raise TypeError('string is expected')\\n\\n                if local_addr and local_addr[0] not in (0, '\\\\x00'):\\n                    try:\\n                        if stat.S_ISSOCK(os.stat(local_addr).st_mode):\\n                            os.remove(local_addr)\\n                    except FileNotFoundError:\\n                        pass\\n                    except OSError as err:\\n                        # Directory may have permissions only to create socket.\\n                        logger.error('Unable to check or remove stale UNIX '\\n                                     'socket %r: %r',\\n                                     local_addr, err)\\n\\n                addr_pairs_info = (((family, proto),\\n                                    (local_addr, remote_addr)), )\\n            else:\\n                # join address by (family, protocol)\\n                addr_infos = {}  # Using order preserving dict\\n                for idx, addr in ((0, local_addr), (1, remote_addr)):\\n                    if addr is not None:\\n                        if not (isinstance(addr, tuple) and len(addr) == 2):\\n                            raise TypeError('2-tuple is expected')\\n\\n                        infos = await self._ensure_resolved(\\n                            addr, family=family, type=socket.SOCK_DGRAM,\\n                            proto=proto, flags=flags, loop=self)\\n                        if not infos:\\n                            raise OSError('getaddrinfo() returned empty list')\\n\\n                        for fam, _, pro, _, address in infos:\\n                            key = (fam, pro)\\n                            if key not in addr_infos:\\n                                addr_infos[key] = [None, None]\\n                            addr_infos[key][idx] = address\\n\\n                # each addr has to have info for each (family, proto) pair\\n                addr_pairs_info = [\\n                    (key, addr_pair) for key, addr_pair in addr_infos.items()\\n                    if not ((local_addr and addr_pair[0] is None) or\\n                            (remote_addr and addr_pair[1] is None))]\\n\\n                if not addr_pairs_info:\\n                    raise ValueError('can not get address information')\\n\\n            exceptions = []\\n\\n            for ((family, proto),\\n                 (local_address, remote_address)) in addr_pairs_info:\\n                sock = None\\n                r_addr = None\\n                try:\\n                    sock = socket.socket(\\n                        family=family, type=socket.SOCK_DGRAM, proto=proto)\\n                    if reuse_port:\\n                        _set_reuseport(sock)\\n                    if allow_broadcast:\\n                        sock.setsockopt(\\n                            socket.SOL_SOCKET, socket.SO_BROADCAST, 1)\\n                    sock.setblocking(False)\\n\\n                    if local_addr:\\n                        sock.bind(local_address)\\n                    if remote_addr:\\n                        if not allow_broadcast:\\n                            await self.sock_connect(sock, remote_address)\\n                        r_addr = remote_address\\n                except OSError as exc:\\n                    if sock is not None:\\n                        sock.close()\\n                    exceptions.append(exc)\\n                except:\\n                    if sock is not None:\\n                        sock.close()\\n                    raise\\n                else:\\n                    break\\n            else:\\n                raise exceptions[0]\\n\\n        protocol = protocol_factory()\\n        waiter = self.create_future()\\n        transport = self._make_datagram_transport(\\n            sock, protocol, r_addr, waiter)\\n        if self._debug:\\n            if local_addr:\\n                logger.info(\\\"Datagram endpoint local_addr=%r remote_addr=%r \\\"\\n                            \\\"created: (%r, %r)\\\",\\n                            local_addr, remote_addr, transport, protocol)\\n            else:\\n                logger.debug(\\\"Datagram endpoint remote_addr=%r created: \\\"\\n                             \\\"(%r, %r)\\\",\\n                             remote_addr, transport, protocol)\\n\\n        try:\\n            await waiter\\n        except:\\n            transport.close()\\n            raise\\n\\n        return transport, protocol\\n\\n    async def _ensure_resolved(self, address, *,\\n                               family=0, type=socket.SOCK_STREAM,\\n                               proto=0, flags=0, loop):\\n        host, port = address[:2]\\n        info = _ipaddr_info(host, port, family, type, proto, *address[2:])\\n        if info is not None:\\n            # \\\"host\\\" is already a resolved IP.\\n            return [info]\\n        else:\\n            return await loop.getaddrinfo(host, port, family=family, type=type,\\n                                          proto=proto, flags=flags)\\n\\n    async def _create_server_getaddrinfo(self, host, port, family, flags):\\n        infos = await self._ensure_resolved((host, port), family=family,\\n                                            type=socket.SOCK_STREAM,\\n                                            flags=flags, loop=self)\\n        if not infos:\\n            raise OSError(f'getaddrinfo({host!r}) returned empty list')\\n        return infos\\n\\n    async def create_server(\\n            self, protocol_factory, host=None, port=None,\\n            *,\\n            family=socket.AF_UNSPEC,\\n            flags=socket.AI_PASSIVE,\\n            sock=None,\\n            backlog=100,\\n            ssl=None,\\n            reuse_address=None,\\n            reuse_port=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None,\\n            start_serving=True):\\n        \\\"\\\"\\\"Create a TCP server.\\n\\n        The host parameter can be a string, in that case the TCP server is\\n        bound to host and port.\\n\\n        The host parameter can also be a sequence of strings and in that case\\n        the TCP server is bound to all hosts of the sequence. If a host\\n        appears multiple times (possibly indirectly e.g. when hostnames\\n        resolve to the same IP address), the server is only bound once to that\\n        host.\\n\\n        Return a Server object which can be used to stop the service.\\n\\n        This method is a coroutine.\\n        \\\"\\\"\\\"\\n        if isinstance(ssl, bool):\\n            raise TypeError('ssl argument must be an SSLContext or None')\\n\\n        if ssl_handshake_timeout is not None and ssl is None:\\n            raise ValueError(\\n                'ssl_handshake_timeout is only meaningful with ssl')\\n\\n        if ssl_shutdown_timeout is not None and ssl is None:\\n            raise ValueError(\\n                'ssl_shutdown_timeout is only meaningful with ssl')\\n\\n        if sock is not None:\\n            _check_ssl_socket(sock)\\n\\n        if host is not None or port is not None:\\n            if sock is not None:\\n                raise ValueError(\\n                    'host/port and sock can not be specified at the same time')\\n\\n            if reuse_address is None:\\n                reuse_address = os.name == \\\"posix\\\" and sys.platform != \\\"cygwin\\\"\\n            sockets = []\\n            if host == '':\\n                hosts = [None]\\n            elif (isinstance(host, str) or\\n                  not isinstance(host, collections.abc.Iterable)):\\n                hosts = [host]\\n            else:\\n                hosts = host\\n\\n            fs = [self._create_server_getaddrinfo(host, port, family=family,\\n                                                  flags=flags)\\n                  for host in hosts]\\n            infos = await tasks.gather(*fs)\\n            infos = set(itertools.chain.from_iterable(infos))\\n\\n            completed = False\\n            try:\\n                for res in infos:\\n                    af, socktype, proto, canonname, sa = res\\n                    try:\\n                        sock = socket.socket(af, socktype, proto)\\n                    except socket.error:\\n                        # Assume it's a bad family/type/protocol combination.\\n                        if self._debug:\\n                            logger.warning('create_server() failed to create '\\n                                           'socket.socket(%r, %r, %r)',\\n                                           af, socktype, proto, exc_info=True)\\n                        continue\\n                    sockets.append(sock)\\n                    if reuse_address:\\n                        sock.setsockopt(\\n                            socket.SOL_SOCKET, socket.SO_REUSEADDR, True)\\n                    if reuse_port:\\n                        _set_reuseport(sock)\\n                    # Disable IPv4/IPv6 dual stack support (enabled by\\n                    # default on Linux) which makes a single socket\\n                    # listen on both address families.\\n                    if (_HAS_IPv6 and\\n                            af == socket.AF_INET6 and\\n                            hasattr(socket, 'IPPROTO_IPV6')):\\n                        sock.setsockopt(socket.IPPROTO_IPV6,\\n                                        socket.IPV6_V6ONLY,\\n                                        True)\\n                    try:\\n                        sock.bind(sa)\\n                    except OSError as err:\\n                        msg = ('error while attempting '\\n                               'to bind on address %r: %s'\\n                               % (sa, err.strerror.lower()))\\n                        if err.errno == errno.EADDRNOTAVAIL:\\n                            # Assume the family is not enabled (bpo-30945)\\n                            sockets.pop()\\n                            sock.close()\\n                            if self._debug:\\n                                logger.warning(msg)\\n                            continue\\n                        raise OSError(err.errno, msg) from None\\n\\n                if not sockets:\\n                    raise OSError('could not bind on any address out of %r'\\n                                  % ([info[4] for info in infos],))\\n\\n                completed = True\\n            finally:\\n                if not completed:\\n                    for sock in sockets:\\n                        sock.close()\\n        else:\\n            if sock is None:\\n                raise ValueError('Neither host/port nor sock were specified')\\n            if sock.type != socket.SOCK_STREAM:\\n                raise ValueError(f'A Stream Socket was expected, got {sock!r}')\\n            sockets = [sock]\\n\\n        for sock in sockets:\\n            sock.setblocking(False)\\n\\n        server = Server(self, sockets, protocol_factory,\\n                        ssl, backlog, ssl_handshake_timeout,\\n                        ssl_shutdown_timeout)\\n        if start_serving:\\n            server._start_serving()\\n            # Skip one loop iteration so that all 'loop.add_reader'\\n            # go through.\\n            await tasks.sleep(0)\\n\\n        if self._debug:\\n            logger.info(\\\"%r is serving\\\", server)\\n        return server\\n\\n    async def connect_accepted_socket(\\n            self, protocol_factory, sock,\\n            *, ssl=None,\\n            ssl_handshake_timeout=None,\\n            ssl_shutdown_timeout=None):\\n        if sock.type != socket.SOCK_STREAM:\\n            raise ValueError(f'A Stream Socket was expected, got {sock!r}')\\n\\n        if ssl_handshake_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_handshake_timeout is only meaningful with ssl')\\n\\n        if ssl_shutdown_timeout is not None and not ssl:\\n            raise ValueError(\\n                'ssl_shutdown_timeout is only meaningful with ssl')\\n\\n        if sock is not None:\\n            _check_ssl_socket(sock)\\n\\n        transport, protocol = await self._create_connection_transport(\\n            sock, protocol_factory, ssl, '', server_side=True,\\n            ssl_handshake_timeout=ssl_handshake_timeout,\\n            ssl_shutdown_timeout=ssl_shutdown_timeout)\\n        if self._debug:\\n            # Get the socket from the transport because SSL transport closes\\n            # the old socket and creates a new SSL socket\\n            sock = transport.get_extra_info('socket')\\n            logger.debug(\\\"%r handled: (%r, %r)\\\", sock, transport, protocol)\\n        return transport, protocol\\n\\n    async def connect_read_pipe(self, protocol_factory, pipe):\\n        protocol = protocol_factory()\\n        waiter = self.create_future()\\n        transport = self._make_read_pipe_transport(pipe, protocol, waiter)\\n\\n        try:\\n            await waiter\\n        except:\\n            transport.close()\\n            raise\\n\\n        if self._debug:\\n            logger.debug('Read pipe %r connected: (%r, %r)',\\n                         pipe.fileno(), transport, protocol)\\n        return transport, protocol\\n\\n    async def connect_write_pipe(self, protocol_factory, pipe):\\n        protocol = protocol_factory()\\n        waiter = self.create_future()\\n        transport = self._make_write_pipe_transport(pipe, protocol, waiter)\\n\\n        try:\\n            await waiter\\n        except:\\n            transport.close()\\n            raise\\n\\n        if self._debug:\\n            logger.debug('Write pipe %r connected: (%r, %r)',\\n                         pipe.fileno(), transport, protocol)\\n        return transport, protocol\\n\\n    def _log_subprocess(self, msg, stdin, stdout, stderr):\\n        info = [msg]\\n        if stdin is not None:\\n            info.append(f'stdin={_format_pipe(stdin)}')\\n        if stdout is not None and stderr == subprocess.STDOUT:\\n            info.append(f'stdout=stderr={_format_pipe(stdout)}')\\n        else:\\n            if stdout is not None:\\n                info.append(f'stdout={_format_pipe(stdout)}')\\n            if stderr is not None:\\n                info.append(f'stderr={_format_pipe(stderr)}')\\n        logger.debug(' '.join(info))\\n\\n    async def subprocess_shell(self, protocol_factory, cmd, *,\\n                               stdin=subprocess.PIPE,\\n                               stdout=subprocess.PIPE,\\n                               stderr=subprocess.PIPE,\\n                               universal_newlines=False,\\n                               shell=True, bufsize=0,\\n                               encoding=None, errors=None, text=None,\\n                               **kwargs):\\n        if not isinstance(cmd, (bytes, str)):\\n            raise ValueError(\\\"cmd must be a string\\\")\\n        if universal_newlines:\\n            raise ValueError(\\\"universal_newlines must be False\\\")\\n        if not shell:\\n            raise ValueError(\\\"shell must be True\\\")\\n        if bufsize != 0:\\n            raise ValueError(\\\"bufsize must be 0\\\")\\n        if text:\\n            raise ValueError(\\\"text must be False\\\")\\n        if encoding is not None:\\n            raise ValueError(\\\"encoding must be None\\\")\\n        if errors is not None:\\n            raise ValueError(\\\"errors must be None\\\")\\n\\n        protocol = protocol_factory()\\n        debug_log = None\\n        if self._debug:\\n            # don't log parameters: they may contain sensitive information\\n            # (password) and may be too long\\n            debug_log = 'run shell command %r' % cmd\\n            self._log_subprocess(debug_log, stdin, stdout, stderr)\\n        transport = await self._make_subprocess_transport(\\n            protocol, cmd, True, stdin, stdout, stderr, bufsize, **kwargs)\\n        if self._debug and debug_log is not None:\\n            logger.info('%s: %r', debug_log, transport)\\n        return transport, protocol\\n\\n    async def subprocess_exec(self, protocol_factory, program, *args,\\n                              stdin=subprocess.PIPE, stdout=subprocess.PIPE,\\n                              stderr=subprocess.PIPE, universal_newlines=False,\\n                              shell=False, bufsize=0,\\n                              encoding=None, errors=None, text=None,\\n                              **kwargs):\\n        if universal_newlines:\\n            raise ValueError(\\\"universal_newlines must be False\\\")\\n        if shell:\\n            raise ValueError(\\\"shell must be False\\\")\\n        if bufsize != 0:\\n            raise ValueError(\\\"bufsize must be 0\\\")\\n        if text:\\n            raise ValueError(\\\"text must be False\\\")\\n        if encoding is not None:\\n            raise ValueError(\\\"encoding must be None\\\")\\n        if errors is not None:\\n            raise ValueError(\\\"errors must be None\\\")\\n\\n        popen_args = (program,) + args\\n        protocol = protocol_factory()\\n        debug_log = None\\n        if self._debug:\\n            # don't log parameters: they may contain sensitive information\\n            # (password) and may be too long\\n            debug_log = f'execute program {program!r}'\\n            self._log_subprocess(debug_log, stdin, stdout, stderr)\\n        transport = await self._make_subprocess_transport(\\n            protocol, popen_args, False, stdin, stdout, stderr,\\n            bufsize, **kwargs)\\n        if self._debug and debug_log is not None:\\n            logger.info('%s: %r', debug_log, transport)\\n        return transport, protocol\\n\\n    def get_exception_handler(self):\\n        \\\"\\\"\\\"Return an exception handler, or None if the default one is in use.\\n        \\\"\\\"\\\"\\n        return self._exception_handler\\n\\n    def set_exception_handler(self, handler):\\n        \\\"\\\"\\\"Set handler as the new event loop exception handler.\\n\\n        If handler is None, the default exception handler will\\n        be set.\\n\\n        If handler is a callable object, it should have a\\n        signature matching '(loop, context)', where 'loop'\\n        will be a reference to the active event loop, 'context'\\n        will be a dict object (see `call_exception_handler()`\\n        documentation for details about context).\\n        \\\"\\\"\\\"\\n        if handler is not None and not callable(handler):\\n            raise TypeError(f'A callable object or None is expected, '\\n                            f'got {handler!r}')\\n        self._exception_handler = handler\\n\\n    def default_exception_handler(self, context):\\n        \\\"\\\"\\\"Default exception handler.\\n\\n        This is called when an exception occurs and no exception\\n        handler is set, and can be called by a custom exception\\n        handler that wants to defer to the default behavior.\\n\\n        This default handler logs the error message and other\\n        context-dependent information.  In debug mode, a truncated\\n        stack trace is also appended showing where the given object\\n        (e.g. a handle or future or task) was created, if any.\\n\\n        The context parameter has the same meaning as in\\n        `call_exception_handler()`.\\n        \\\"\\\"\\\"\\n        message = context.get('message')\\n        if not message:\\n            message = 'Unhandled exception in event loop'\\n\\n        exception = context.get('exception')\\n        if exception is not None:\\n            exc_info = (type(exception), exception, exception.__traceback__)\\n        else:\\n            exc_info = False\\n\\n        if ('source_traceback' not in context and\\n                self._current_handle is not None and\\n                self._current_handle._source_traceback):\\n            context['handle_traceback'] = \\\\\\n                self._current_handle._source_traceback\\n\\n        log_lines = [message]\\n        for key in sorted(context):\\n            if key in {'message', 'exception'}:\\n                continue\\n            value = context[key]\\n            if key == 'source_traceback':\\n                tb = ''.join(traceback.format_list(value))\\n                value = 'Object created at (most recent call last):\\\\n'\\n                value += tb.rstrip()\\n            elif key == 'handle_traceback':\\n                tb = ''.join(traceback.format_list(value))\\n                value = 'Handle created at (most recent call last):\\\\n'\\n                value += tb.rstrip()\\n            else:\\n                value = repr(value)\\n            log_lines.append(f'{key}: {value}')\\n\\n        logger.error('\\\\n'.join(log_lines), exc_info=exc_info)\\n\\n    def call_exception_handler(self, context):\\n        \\\"\\\"\\\"Call the current event loop's exception handler.\\n\\n        The context argument is a dict containing the following keys:\\n\\n        - 'message': Error message;\\n        - 'exception' (optional): Exception object;\\n        - 'future' (optional): Future instance;\\n        - 'task' (optional): Task instance;\\n        - 'handle' (optional): Handle instance;\\n        - 'protocol' (optional): Protocol instance;\\n        - 'transport' (optional): Transport instance;\\n        - 'socket' (optional): Socket instance;\\n        - 'asyncgen' (optional): Asynchronous generator that caused\\n                                 the exception.\\n\\n        New keys maybe introduced in the future.\\n\\n        Note: do not overload this method in an event loop subclass.\\n        For custom exception handling, use the\\n        `set_exception_handler()` method.\\n        \\\"\\\"\\\"\\n        if self._exception_handler is None:\\n            try:\\n                self.default_exception_handler(context)\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException:\\n                # Second protection layer for unexpected errors\\n                # in the default implementation, as well as for subclassed\\n                # event loops with overloaded \\\"default_exception_handler\\\".\\n                logger.error('Exception in default exception handler',\\n                             exc_info=True)\\n        else:\\n            try:\\n                ctx = None\\n                thing = context.get(\\\"task\\\")\\n                if thing is None:\\n                    # Even though Futures don't have a context,\\n                    # Task is a subclass of Future,\\n                    # and sometimes the 'future' key holds a Task.\\n                    thing = context.get(\\\"future\\\")\\n                if thing is None:\\n                    # Handles also have a context.\\n                    thing = context.get(\\\"handle\\\")\\n                if thing is not None and hasattr(thing, \\\"get_context\\\"):\\n                    ctx = thing.get_context()\\n                if ctx is not None and hasattr(ctx, \\\"run\\\"):\\n                    ctx.run(self._exception_handler, self, context)\\n                else:\\n                    self._exception_handler(self, context)\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException as exc:\\n                # Exception in the user set custom exception handler.\\n                try:\\n                    # Let's try default handler.\\n                    self.default_exception_handler({\\n                        'message': 'Unhandled error in exception handler',\\n                        'exception': exc,\\n                        'context': context,\\n                    })\\n                except (SystemExit, KeyboardInterrupt):\\n                    raise\\n                except BaseException:\\n                    # Guard 'default_exception_handler' in case it is\\n                    # overloaded.\\n                    logger.error('Exception in default exception handler '\\n                                 'while handling an unexpected error '\\n                                 'in custom exception handler',\\n                                 exc_info=True)\\n\\n    def _add_callback(self, handle):\\n        \\\"\\\"\\\"Add a Handle to _ready.\\\"\\\"\\\"\\n        if not handle._cancelled:\\n            self._ready.append(handle)\\n\\n    def _add_callback_signalsafe(self, handle):\\n        \\\"\\\"\\\"Like _add_callback() but called from a signal handler.\\\"\\\"\\\"\\n        self._add_callback(handle)\\n        self._write_to_self()\\n\\n    def _timer_handle_cancelled(self, handle):\\n        \\\"\\\"\\\"Notification that a TimerHandle has been cancelled.\\\"\\\"\\\"\\n        if handle._scheduled:\\n            self._timer_cancelled_count += 1\\n\\n    def _run_once(self):\\n        \\\"\\\"\\\"Run one full iteration of the event loop.\\n\\n        This calls all currently ready callbacks, polls for I/O,\\n        schedules the resulting callbacks, and finally schedules\\n        'call_later' callbacks.\\n        \\\"\\\"\\\"\\n\\n        sched_count = len(self._scheduled)\\n        if (sched_count > _MIN_SCHEDULED_TIMER_HANDLES and\\n            self._timer_cancelled_count / sched_count >\\n                _MIN_CANCELLED_TIMER_HANDLES_FRACTION):\\n            # Remove delayed calls that were cancelled if their number\\n            # is too high\\n            new_scheduled = []\\n            for handle in self._scheduled:\\n                if handle._cancelled:\\n                    handle._scheduled = False\\n                else:\\n                    new_scheduled.append(handle)\\n\\n            heapq.heapify(new_scheduled)\\n            self._scheduled = new_scheduled\\n            self._timer_cancelled_count = 0\\n        else:\\n            # Remove delayed calls that were cancelled from head of queue.\\n            while self._scheduled and self._scheduled[0]._cancelled:\\n                self._timer_cancelled_count -= 1\\n                handle = heapq.heappop(self._scheduled)\\n                handle._scheduled = False\\n\\n        timeout = None\\n        if self._ready or self._stopping:\\n            timeout = 0\\n        elif self._scheduled:\\n            # Compute the desired timeout.\\n            when = self._scheduled[0]._when\\n            timeout = min(max(0, when - self.time()), MAXIMUM_SELECT_TIMEOUT)\\n\\n        event_list = self._selector.select(timeout)\\n        self._process_events(event_list)\\n        # Needed to break cycles when an exception occurs.\\n        event_list = None\\n\\n        # Handle 'later' callbacks that are ready.\\n        end_time = self.time() + self._clock_resolution\\n        while self._scheduled:\\n            handle = self._scheduled[0]\\n            if handle._when >= end_time:\\n                break\\n            handle = heapq.heappop(self._scheduled)\\n            handle._scheduled = False\\n            self._ready.append(handle)\\n\\n        # This is the only place where callbacks are actually *called*.\\n        # All other places just add them to ready.\\n        # Note: We run all currently scheduled callbacks, but not any\\n        # callbacks scheduled by callbacks run this time around --\\n        # they will be run the next time (after another I/O poll).\\n        # Use an idiom that is thread-safe without using locks.\\n        ntodo = len(self._ready)\\n        for i in range(ntodo):\\n            handle = self._ready.popleft()\\n            if handle._cancelled:\\n                continue\\n            if self._debug:\\n                try:\\n                    self._current_handle = handle\\n                    t0 = self.time()\\n                    handle._run()\\n                    dt = self.time() - t0\\n                    if dt >= self.slow_callback_duration:\\n                        logger.warning('Executing %s took %.3f seconds',\\n                                       _format_handle(handle), dt)\\n                finally:\\n                    self._current_handle = None\\n            else:\\n                handle._run()\\n        handle = None  # Needed to break cycles when an exception occurs.\\n\\n    def _set_coroutine_origin_tracking(self, enabled):\\n        if bool(enabled) == bool(self._coroutine_origin_tracking_enabled):\\n            return\\n\\n        if enabled:\\n            self._coroutine_origin_tracking_saved_depth = (\\n                sys.get_coroutine_origin_tracking_depth())\\n            sys.set_coroutine_origin_tracking_depth(\\n                constants.DEBUG_STACK_DEPTH)\\n        else:\\n            sys.set_coroutine_origin_tracking_depth(\\n                self._coroutine_origin_tracking_saved_depth)\\n\\n        self._coroutine_origin_tracking_enabled = enabled\\n\\n    def get_debug(self):\\n        return self._debug\\n\\n    def set_debug(self, enabled):\\n        self._debug = enabled\\n\\n        if self.is_running():\\n            self.call_soon_threadsafe(self._set_coroutine_origin_tracking, enabled)\\n\", 2012], \"/usr/lib/python3.12/_weakrefset.py\": [\"# Access WeakSet through the weakref module.\\n# This code is separated-out because it is needed\\n# by abc.py to load everything else at startup.\\n\\nfrom _weakref import ref\\nfrom types import GenericAlias\\n\\n__all__ = ['WeakSet']\\n\\n\\nclass _IterationGuard:\\n    # This context manager registers itself in the current iterators of the\\n    # weak container, such as to delay all removals until the context manager\\n    # exits.\\n    # This technique should be relatively thread-safe (since sets are).\\n\\n    def __init__(self, weakcontainer):\\n        # Don't create cycles\\n        self.weakcontainer = ref(weakcontainer)\\n\\n    def __enter__(self):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            w._iterating.add(self)\\n        return self\\n\\n    def __exit__(self, e, t, b):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            s = w._iterating\\n            s.remove(self)\\n            if not s:\\n                w._commit_removals()\\n\\n\\nclass WeakSet:\\n    def __init__(self, data=None):\\n        self.data = set()\\n        def _remove(item, selfref=ref(self)):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(item)\\n                else:\\n                    self.data.discard(item)\\n        self._remove = _remove\\n        # A list of keys to be removed\\n        self._pending_removals = []\\n        self._iterating = set()\\n        if data is not None:\\n            self.update(data)\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        discard = self.data.discard\\n        while True:\\n            try:\\n                item = pop()\\n            except IndexError:\\n                return\\n            discard(item)\\n\\n    def __iter__(self):\\n        with _IterationGuard(self):\\n            for itemref in self.data:\\n                item = itemref()\\n                if item is not None:\\n                    # Caveat: the iterator will keep a strong reference to\\n                    # `item` until it is resumed or closed.\\n                    yield item\\n\\n    def __len__(self):\\n        return len(self.data) - len(self._pending_removals)\\n\\n    def __contains__(self, item):\\n        try:\\n            wr = ref(item)\\n        except TypeError:\\n            return False\\n        return wr in self.data\\n\\n    def __reduce__(self):\\n        return self.__class__, (list(self),), self.__getstate__()\\n\\n    def add(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.add(ref(item, self._remove))\\n\\n    def clear(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.clear()\\n\\n    def copy(self):\\n        return self.__class__(self)\\n\\n    def pop(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        while True:\\n            try:\\n                itemref = self.data.pop()\\n            except KeyError:\\n                raise KeyError('pop from empty WeakSet') from None\\n            item = itemref()\\n            if item is not None:\\n                return item\\n\\n    def remove(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.remove(ref(item))\\n\\n    def discard(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.discard(ref(item))\\n\\n    def update(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        for element in other:\\n            self.add(element)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def difference(self, other):\\n        newset = self.copy()\\n        newset.difference_update(other)\\n        return newset\\n    __sub__ = difference\\n\\n    def difference_update(self, other):\\n        self.__isub__(other)\\n    def __isub__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.difference_update(ref(item) for item in other)\\n        return self\\n\\n    def intersection(self, other):\\n        return self.__class__(item for item in other if item in self)\\n    __and__ = intersection\\n\\n    def intersection_update(self, other):\\n        self.__iand__(other)\\n    def __iand__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.intersection_update(ref(item) for item in other)\\n        return self\\n\\n    def issubset(self, other):\\n        return self.data.issubset(ref(item) for item in other)\\n    __le__ = issubset\\n\\n    def __lt__(self, other):\\n        return self.data < set(map(ref, other))\\n\\n    def issuperset(self, other):\\n        return self.data.issuperset(ref(item) for item in other)\\n    __ge__ = issuperset\\n\\n    def __gt__(self, other):\\n        return self.data > set(map(ref, other))\\n\\n    def __eq__(self, other):\\n        if not isinstance(other, self.__class__):\\n            return NotImplemented\\n        return self.data == set(map(ref, other))\\n\\n    def symmetric_difference(self, other):\\n        newset = self.copy()\\n        newset.symmetric_difference_update(other)\\n        return newset\\n    __xor__ = symmetric_difference\\n\\n    def symmetric_difference_update(self, other):\\n        self.__ixor__(other)\\n    def __ixor__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.symmetric_difference_update(ref(item, self._remove) for item in other)\\n        return self\\n\\n    def union(self, other):\\n        return self.__class__(e for s in (self, other) for e in s)\\n    __or__ = union\\n\\n    def isdisjoint(self, other):\\n        return len(self.intersection(other)) == 0\\n\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\", 205], \"/usr/lib/python3.12/selectors.py\": [\"\\\"\\\"\\\"Selectors module.\\n\\nThis module allows high-level and efficient I/O multiplexing, built upon the\\n`select` module primitives.\\n\\\"\\\"\\\"\\n\\n\\nfrom abc import ABCMeta, abstractmethod\\nfrom collections import namedtuple\\nfrom collections.abc import Mapping\\nimport math\\nimport select\\nimport sys\\n\\n\\n# generic events, that must be mapped to implementation-specific ones\\nEVENT_READ = (1 << 0)\\nEVENT_WRITE = (1 << 1)\\n\\n\\ndef _fileobj_to_fd(fileobj):\\n    \\\"\\\"\\\"Return a file descriptor from a file object.\\n\\n    Parameters:\\n    fileobj -- file object or file descriptor\\n\\n    Returns:\\n    corresponding file descriptor\\n\\n    Raises:\\n    ValueError if the object is invalid\\n    \\\"\\\"\\\"\\n    if isinstance(fileobj, int):\\n        fd = fileobj\\n    else:\\n        try:\\n            fd = int(fileobj.fileno())\\n        except (AttributeError, TypeError, ValueError):\\n            raise ValueError(\\\"Invalid file object: \\\"\\n                             \\\"{!r}\\\".format(fileobj)) from None\\n    if fd < 0:\\n        raise ValueError(\\\"Invalid file descriptor: {}\\\".format(fd))\\n    return fd\\n\\n\\nSelectorKey = namedtuple('SelectorKey', ['fileobj', 'fd', 'events', 'data'])\\n\\nSelectorKey.__doc__ = \\\"\\\"\\\"SelectorKey(fileobj, fd, events, data)\\n\\n    Object used to associate a file object to its backing\\n    file descriptor, selected event mask, and attached data.\\n\\\"\\\"\\\"\\nSelectorKey.fileobj.__doc__ = 'File object registered.'\\nSelectorKey.fd.__doc__ = 'Underlying file descriptor.'\\nSelectorKey.events.__doc__ = 'Events that must be waited for on this file object.'\\nSelectorKey.data.__doc__ = ('''Optional opaque data associated to this file object.\\nFor example, this could be used to store a per-client session ID.''')\\n\\n\\nclass _SelectorMapping(Mapping):\\n    \\\"\\\"\\\"Mapping of file objects to selector keys.\\\"\\\"\\\"\\n\\n    def __init__(self, selector):\\n        self._selector = selector\\n\\n    def __len__(self):\\n        return len(self._selector._fd_to_key)\\n\\n    def __getitem__(self, fileobj):\\n        try:\\n            fd = self._selector._fileobj_lookup(fileobj)\\n            return self._selector._fd_to_key[fd]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n\\n    def __iter__(self):\\n        return iter(self._selector._fd_to_key)\\n\\n\\nclass BaseSelector(metaclass=ABCMeta):\\n    \\\"\\\"\\\"Selector abstract base class.\\n\\n    A selector supports registering file objects to be monitored for specific\\n    I/O events.\\n\\n    A file object is a file descriptor or any object with a `fileno()` method.\\n    An arbitrary object can be attached to the file object, which can be used\\n    for example to store context information, a callback, etc.\\n\\n    A selector can use various implementations (select(), poll(), epoll()...)\\n    depending on the platform. The default `Selector` class uses the most\\n    efficient implementation on the current platform.\\n    \\\"\\\"\\\"\\n\\n    @abstractmethod\\n    def register(self, fileobj, events, data=None):\\n        \\\"\\\"\\\"Register a file object.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n        events  -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE)\\n        data    -- attached data\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        ValueError if events is invalid\\n        KeyError if fileobj is already registered\\n        OSError if fileobj is closed or otherwise is unacceptable to\\n                the underlying system call (if a system call is made)\\n\\n        Note:\\n        OSError may or may not be raised\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    @abstractmethod\\n    def unregister(self, fileobj):\\n        \\\"\\\"\\\"Unregister a file object.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        KeyError if fileobj is not registered\\n\\n        Note:\\n        If fileobj is registered but has since been closed this does\\n        *not* raise OSError (even if the wrapped syscall does)\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def modify(self, fileobj, events, data=None):\\n        \\\"\\\"\\\"Change a registered file object monitored events or attached data.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n        events  -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE)\\n        data    -- attached data\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        Anything that unregister() or register() raises\\n        \\\"\\\"\\\"\\n        self.unregister(fileobj)\\n        return self.register(fileobj, events, data)\\n\\n    @abstractmethod\\n    def select(self, timeout=None):\\n        \\\"\\\"\\\"Perform the actual selection, until some monitored file objects are\\n        ready or a timeout expires.\\n\\n        Parameters:\\n        timeout -- if timeout > 0, this specifies the maximum wait time, in\\n                   seconds\\n                   if timeout <= 0, the select() call won't block, and will\\n                   report the currently ready file objects\\n                   if timeout is None, select() will block until a monitored\\n                   file object becomes ready\\n\\n        Returns:\\n        list of (key, events) for ready file objects\\n        `events` is a bitwise mask of EVENT_READ|EVENT_WRITE\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the selector.\\n\\n        This must be called to make sure that any underlying resource is freed.\\n        \\\"\\\"\\\"\\n        pass\\n\\n    def get_key(self, fileobj):\\n        \\\"\\\"\\\"Return the key associated to a registered file object.\\n\\n        Returns:\\n        SelectorKey for this file object\\n        \\\"\\\"\\\"\\n        mapping = self.get_map()\\n        if mapping is None:\\n            raise RuntimeError('Selector is closed')\\n        try:\\n            return mapping[fileobj]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n\\n    @abstractmethod\\n    def get_map(self):\\n        \\\"\\\"\\\"Return a mapping of file objects to selector keys.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, *args):\\n        self.close()\\n\\n\\nclass _BaseSelectorImpl(BaseSelector):\\n    \\\"\\\"\\\"Base selector implementation.\\\"\\\"\\\"\\n\\n    def __init__(self):\\n        # this maps file descriptors to keys\\n        self._fd_to_key = {}\\n        # read-only mapping returned by get_map()\\n        self._map = _SelectorMapping(self)\\n\\n    def _fileobj_lookup(self, fileobj):\\n        \\\"\\\"\\\"Return a file descriptor from a file object.\\n\\n        This wraps _fileobj_to_fd() to do an exhaustive search in case\\n        the object is invalid but we still have it in our map.  This\\n        is used by unregister() so we can unregister an object that\\n        was previously registered even if it is closed.  It is also\\n        used by _SelectorMapping.\\n        \\\"\\\"\\\"\\n        try:\\n            return _fileobj_to_fd(fileobj)\\n        except ValueError:\\n            # Do an exhaustive search.\\n            for key in self._fd_to_key.values():\\n                if key.fileobj is fileobj:\\n                    return key.fd\\n            # Raise ValueError after all.\\n            raise\\n\\n    def register(self, fileobj, events, data=None):\\n        if (not events) or (events & ~(EVENT_READ | EVENT_WRITE)):\\n            raise ValueError(\\\"Invalid events: {!r}\\\".format(events))\\n\\n        key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data)\\n\\n        if key.fd in self._fd_to_key:\\n            raise KeyError(\\\"{!r} (FD {}) is already registered\\\"\\n                           .format(fileobj, key.fd))\\n\\n        self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def unregister(self, fileobj):\\n        try:\\n            key = self._fd_to_key.pop(self._fileobj_lookup(fileobj))\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n        return key\\n\\n    def modify(self, fileobj, events, data=None):\\n        try:\\n            key = self._fd_to_key[self._fileobj_lookup(fileobj)]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n        if events != key.events:\\n            self.unregister(fileobj)\\n            key = self.register(fileobj, events, data)\\n        elif data != key.data:\\n            # Use a shortcut to update the data.\\n            key = key._replace(data=data)\\n            self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def close(self):\\n        self._fd_to_key.clear()\\n        self._map = None\\n\\n    def get_map(self):\\n        return self._map\\n\\n    def _key_from_fd(self, fd):\\n        \\\"\\\"\\\"Return the key associated to a given file descriptor.\\n\\n        Parameters:\\n        fd -- file descriptor\\n\\n        Returns:\\n        corresponding key, or None if not found\\n        \\\"\\\"\\\"\\n        try:\\n            return self._fd_to_key[fd]\\n        except KeyError:\\n            return None\\n\\n\\nclass SelectSelector(_BaseSelectorImpl):\\n    \\\"\\\"\\\"Select-based selector.\\\"\\\"\\\"\\n\\n    def __init__(self):\\n        super().__init__()\\n        self._readers = set()\\n        self._writers = set()\\n\\n    def register(self, fileobj, events, data=None):\\n        key = super().register(fileobj, events, data)\\n        if events & EVENT_READ:\\n            self._readers.add(key.fd)\\n        if events & EVENT_WRITE:\\n            self._writers.add(key.fd)\\n        return key\\n\\n    def unregister(self, fileobj):\\n        key = super().unregister(fileobj)\\n        self._readers.discard(key.fd)\\n        self._writers.discard(key.fd)\\n        return key\\n\\n    if sys.platform == 'win32':\\n        def _select(self, r, w, _, timeout=None):\\n            r, w, x = select.select(r, w, w, timeout)\\n            return r, w + x, []\\n    else:\\n        _select = select.select\\n\\n    def select(self, timeout=None):\\n        timeout = None if timeout is None else max(timeout, 0)\\n        ready = []\\n        try:\\n            r, w, _ = self._select(self._readers, self._writers, [], timeout)\\n        except InterruptedError:\\n            return ready\\n        r = set(r)\\n        w = set(w)\\n        for fd in r | w:\\n            events = 0\\n            if fd in r:\\n                events |= EVENT_READ\\n            if fd in w:\\n                events |= EVENT_WRITE\\n\\n            key = self._key_from_fd(fd)\\n            if key:\\n                ready.append((key, events & key.events))\\n        return ready\\n\\n\\nclass _PollLikeSelector(_BaseSelectorImpl):\\n    \\\"\\\"\\\"Base class shared between poll, epoll and devpoll selectors.\\\"\\\"\\\"\\n    _selector_cls = None\\n    _EVENT_READ = None\\n    _EVENT_WRITE = None\\n\\n    def __init__(self):\\n        super().__init__()\\n        self._selector = self._selector_cls()\\n\\n    def register(self, fileobj, events, data=None):\\n        key = super().register(fileobj, events, data)\\n        poller_events = 0\\n        if events & EVENT_READ:\\n            poller_events |= self._EVENT_READ\\n        if events & EVENT_WRITE:\\n            poller_events |= self._EVENT_WRITE\\n        try:\\n            self._selector.register(key.fd, poller_events)\\n        except:\\n            super().unregister(fileobj)\\n            raise\\n        return key\\n\\n    def unregister(self, fileobj):\\n        key = super().unregister(fileobj)\\n        try:\\n            self._selector.unregister(key.fd)\\n        except OSError:\\n            # This can happen if the FD was closed since it\\n            # was registered.\\n            pass\\n        return key\\n\\n    def modify(self, fileobj, events, data=None):\\n        try:\\n            key = self._fd_to_key[self._fileobj_lookup(fileobj)]\\n        except KeyError:\\n            raise KeyError(f\\\"{fileobj!r} is not registered\\\") from None\\n\\n        changed = False\\n        if events != key.events:\\n            selector_events = 0\\n            if events & EVENT_READ:\\n                selector_events |= self._EVENT_READ\\n            if events & EVENT_WRITE:\\n                selector_events |= self._EVENT_WRITE\\n            try:\\n                self._selector.modify(key.fd, selector_events)\\n            except:\\n                super().unregister(fileobj)\\n                raise\\n            changed = True\\n        if data != key.data:\\n            changed = True\\n\\n        if changed:\\n            key = key._replace(events=events, data=data)\\n            self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def select(self, timeout=None):\\n        # This is shared between poll() and epoll().\\n        # epoll() has a different signature and handling of timeout parameter.\\n        if timeout is None:\\n            timeout = None\\n        elif timeout <= 0:\\n            timeout = 0\\n        else:\\n            # poll() has a resolution of 1 millisecond, round away from\\n            # zero to wait *at least* timeout seconds.\\n            timeout = math.ceil(timeout * 1e3)\\n        ready = []\\n        try:\\n            fd_event_list = self._selector.poll(timeout)\\n        except InterruptedError:\\n            return ready\\n        for fd, event in fd_event_list:\\n            events = 0\\n            if event & ~self._EVENT_READ:\\n                events |= EVENT_WRITE\\n            if event & ~self._EVENT_WRITE:\\n                events |= EVENT_READ\\n\\n            key = self._key_from_fd(fd)\\n            if key:\\n                ready.append((key, events & key.events))\\n        return ready\\n\\n\\nif hasattr(select, 'poll'):\\n\\n    class PollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Poll-based selector.\\\"\\\"\\\"\\n        _selector_cls = select.poll\\n        _EVENT_READ = select.POLLIN\\n        _EVENT_WRITE = select.POLLOUT\\n\\n\\nif hasattr(select, 'epoll'):\\n\\n    class EpollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Epoll-based selector.\\\"\\\"\\\"\\n        _selector_cls = select.epoll\\n        _EVENT_READ = select.EPOLLIN\\n        _EVENT_WRITE = select.EPOLLOUT\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def select(self, timeout=None):\\n            if timeout is None:\\n                timeout = -1\\n            elif timeout <= 0:\\n                timeout = 0\\n            else:\\n                # epoll_wait() has a resolution of 1 millisecond, round away\\n                # from zero to wait *at least* timeout seconds.\\n                timeout = math.ceil(timeout * 1e3) * 1e-3\\n\\n            # epoll_wait() expects `maxevents` to be greater than zero;\\n            # we want to make sure that `select()` can be called when no\\n            # FD is registered.\\n            max_ev = max(len(self._fd_to_key), 1)\\n\\n            ready = []\\n            try:\\n                fd_event_list = self._selector.poll(timeout, max_ev)\\n            except InterruptedError:\\n                return ready\\n            for fd, event in fd_event_list:\\n                events = 0\\n                if event & ~select.EPOLLIN:\\n                    events |= EVENT_WRITE\\n                if event & ~select.EPOLLOUT:\\n                    events |= EVENT_READ\\n\\n                key = self._key_from_fd(fd)\\n                if key:\\n                    ready.append((key, events & key.events))\\n            return ready\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\nif hasattr(select, 'devpoll'):\\n\\n    class DevpollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Solaris /dev/poll selector.\\\"\\\"\\\"\\n        _selector_cls = select.devpoll\\n        _EVENT_READ = select.POLLIN\\n        _EVENT_WRITE = select.POLLOUT\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\nif hasattr(select, 'kqueue'):\\n\\n    class KqueueSelector(_BaseSelectorImpl):\\n        \\\"\\\"\\\"Kqueue-based selector.\\\"\\\"\\\"\\n\\n        def __init__(self):\\n            super().__init__()\\n            self._selector = select.kqueue()\\n            self._max_events = 0\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def register(self, fileobj, events, data=None):\\n            key = super().register(fileobj, events, data)\\n            try:\\n                if events & EVENT_READ:\\n                    kev = select.kevent(key.fd, select.KQ_FILTER_READ,\\n                                        select.KQ_EV_ADD)\\n                    self._selector.control([kev], 0, 0)\\n                    self._max_events += 1\\n                if events & EVENT_WRITE:\\n                    kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,\\n                                        select.KQ_EV_ADD)\\n                    self._selector.control([kev], 0, 0)\\n                    self._max_events += 1\\n            except:\\n                super().unregister(fileobj)\\n                raise\\n            return key\\n\\n        def unregister(self, fileobj):\\n            key = super().unregister(fileobj)\\n            if key.events & EVENT_READ:\\n                kev = select.kevent(key.fd, select.KQ_FILTER_READ,\\n                                    select.KQ_EV_DELETE)\\n                self._max_events -= 1\\n                try:\\n                    self._selector.control([kev], 0, 0)\\n                except OSError:\\n                    # This can happen if the FD was closed since it\\n                    # was registered.\\n                    pass\\n            if key.events & EVENT_WRITE:\\n                kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,\\n                                    select.KQ_EV_DELETE)\\n                self._max_events -= 1\\n                try:\\n                    self._selector.control([kev], 0, 0)\\n                except OSError:\\n                    # See comment above.\\n                    pass\\n            return key\\n\\n        def select(self, timeout=None):\\n            timeout = None if timeout is None else max(timeout, 0)\\n            # If max_ev is 0, kqueue will ignore the timeout. For consistent\\n            # behavior with the other selector classes, we prevent that here\\n            # (using max). See https://bugs.python.org/issue29255\\n            max_ev = self._max_events or 1\\n            ready = []\\n            try:\\n                kev_list = self._selector.control(None, max_ev, timeout)\\n            except InterruptedError:\\n                return ready\\n            for kev in kev_list:\\n                fd = kev.ident\\n                flag = kev.filter\\n                events = 0\\n                if flag == select.KQ_FILTER_READ:\\n                    events |= EVENT_READ\\n                if flag == select.KQ_FILTER_WRITE:\\n                    events |= EVENT_WRITE\\n\\n                key = self._key_from_fd(fd)\\n                if key:\\n                    ready.append((key, events & key.events))\\n            return ready\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\ndef _can_use(method):\\n    \\\"\\\"\\\"Check if we can use the selector depending upon the\\n    operating system. \\\"\\\"\\\"\\n    # Implementation based upon https://github.com/sethmlarson/selectors2/blob/master/selectors2.py\\n    selector = getattr(select, method, None)\\n    if selector is None:\\n        # select module does not implement method\\n        return False\\n    # check if the OS and Kernel actually support the method. Call may fail with\\n    # OSError: [Errno 38] Function not implemented\\n    try:\\n        selector_obj = selector()\\n        if method == 'poll':\\n            # check that poll actually works\\n            selector_obj.poll(0)\\n        else:\\n            # close epoll, kqueue, and devpoll fd\\n            selector_obj.close()\\n        return True\\n    except OSError:\\n        return False\\n\\n\\n# Choose the best implementation, roughly:\\n#    epoll|kqueue|devpoll > poll > select.\\n# select() also can't accept a FD > FD_SETSIZE (usually around 1024)\\nif _can_use('kqueue'):\\n    DefaultSelector = KqueueSelector\\nelif _can_use('epoll'):\\n    DefaultSelector = EpollSelector\\nelif _can_use('devpoll'):\\n    DefaultSelector = DevpollSelector\\nelif _can_use('poll'):\\n    DefaultSelector = PollSelector\\nelse:\\n    DefaultSelector = SelectSelector\\n\", 623], \"/usr/lib/python3.12/logging/__init__.py\": [\"# Copyright 2001-2022 by Vinay Sajip. All Rights Reserved.\\n#\\n# Permission to use, copy, modify, and distribute this software and its\\n# documentation for any purpose and without fee is hereby granted,\\n# provided that the above copyright notice appear in all copies and that\\n# both that copyright notice and this permission notice appear in\\n# supporting documentation, and that the name of Vinay Sajip\\n# not be used in advertising or publicity pertaining to distribution\\n# of the software without specific, written prior permission.\\n# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING\\n# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL\\n# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR\\n# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER\\n# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT\\n# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\\n\\n\\\"\\\"\\\"\\nLogging package for Python. Based on PEP 282 and comments thereto in\\ncomp.lang.python.\\n\\nCopyright (C) 2001-2022 Vinay Sajip. All Rights Reserved.\\n\\nTo use, simply 'import logging' and log away!\\n\\\"\\\"\\\"\\n\\nimport sys, os, time, io, re, traceback, warnings, weakref, collections.abc\\n\\nfrom types import GenericAlias\\nfrom string import Template\\nfrom string import Formatter as StrFormatter\\n\\n\\n__all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR',\\n           'FATAL', 'FileHandler', 'Filter', 'Formatter', 'Handler', 'INFO',\\n           'LogRecord', 'Logger', 'LoggerAdapter', 'NOTSET', 'NullHandler',\\n           'StreamHandler', 'WARN', 'WARNING', 'addLevelName', 'basicConfig',\\n           'captureWarnings', 'critical', 'debug', 'disable', 'error',\\n           'exception', 'fatal', 'getLevelName', 'getLogger', 'getLoggerClass',\\n           'info', 'log', 'makeLogRecord', 'setLoggerClass', 'shutdown',\\n           'warn', 'warning', 'getLogRecordFactory', 'setLogRecordFactory',\\n           'lastResort', 'raiseExceptions', 'getLevelNamesMapping',\\n           'getHandlerByName', 'getHandlerNames']\\n\\nimport threading\\n\\n__author__  = \\\"Vinay Sajip <vinay_sajip@red-dove.com>\\\"\\n__status__  = \\\"production\\\"\\n# The following module attributes are no longer updated.\\n__version__ = \\\"0.5.1.2\\\"\\n__date__    = \\\"07 February 2010\\\"\\n\\n#---------------------------------------------------------------------------\\n#   Miscellaneous module data\\n#---------------------------------------------------------------------------\\n\\n#\\n#_startTime is used as the base when calculating the relative time of events\\n#\\n_startTime = time.time()\\n\\n#\\n#raiseExceptions is used to see if exceptions during handling should be\\n#propagated\\n#\\nraiseExceptions = True\\n\\n#\\n# If you don't want threading information in the log, set this to False\\n#\\nlogThreads = True\\n\\n#\\n# If you don't want multiprocessing information in the log, set this to False\\n#\\nlogMultiprocessing = True\\n\\n#\\n# If you don't want process information in the log, set this to False\\n#\\nlogProcesses = True\\n\\n#\\n# If you don't want asyncio task information in the log, set this to False\\n#\\nlogAsyncioTasks = True\\n\\n#---------------------------------------------------------------------------\\n#   Level related stuff\\n#---------------------------------------------------------------------------\\n#\\n# Default levels and level names, these can be replaced with any positive set\\n# of values having corresponding names. There is a pseudo-level, NOTSET, which\\n# is only really there as a lower limit for user-defined levels. Handlers and\\n# loggers are initialized with NOTSET so that they will log all messages, even\\n# at user-defined levels.\\n#\\n\\nCRITICAL = 50\\nFATAL = CRITICAL\\nERROR = 40\\nWARNING = 30\\nWARN = WARNING\\nINFO = 20\\nDEBUG = 10\\nNOTSET = 0\\n\\n_levelToName = {\\n    CRITICAL: 'CRITICAL',\\n    ERROR: 'ERROR',\\n    WARNING: 'WARNING',\\n    INFO: 'INFO',\\n    DEBUG: 'DEBUG',\\n    NOTSET: 'NOTSET',\\n}\\n_nameToLevel = {\\n    'CRITICAL': CRITICAL,\\n    'FATAL': FATAL,\\n    'ERROR': ERROR,\\n    'WARN': WARNING,\\n    'WARNING': WARNING,\\n    'INFO': INFO,\\n    'DEBUG': DEBUG,\\n    'NOTSET': NOTSET,\\n}\\n\\ndef getLevelNamesMapping():\\n    return _nameToLevel.copy()\\n\\ndef getLevelName(level):\\n    \\\"\\\"\\\"\\n    Return the textual or numeric representation of logging level 'level'.\\n\\n    If the level is one of the predefined levels (CRITICAL, ERROR, WARNING,\\n    INFO, DEBUG) then you get the corresponding string. If you have\\n    associated levels with names using addLevelName then the name you have\\n    associated with 'level' is returned.\\n\\n    If a numeric value corresponding to one of the defined levels is passed\\n    in, the corresponding string representation is returned.\\n\\n    If a string representation of the level is passed in, the corresponding\\n    numeric value is returned.\\n\\n    If no matching numeric or string value is passed in, the string\\n    'Level %s' % level is returned.\\n    \\\"\\\"\\\"\\n    # See Issues #22386, #27937 and #29220 for why it's this way\\n    result = _levelToName.get(level)\\n    if result is not None:\\n        return result\\n    result = _nameToLevel.get(level)\\n    if result is not None:\\n        return result\\n    return \\\"Level %s\\\" % level\\n\\ndef addLevelName(level, levelName):\\n    \\\"\\\"\\\"\\n    Associate 'levelName' with 'level'.\\n\\n    This is used when converting levels to text during message formatting.\\n    \\\"\\\"\\\"\\n    _acquireLock()\\n    try:    #unlikely to cause an exception, but you never know...\\n        _levelToName[level] = levelName\\n        _nameToLevel[levelName] = level\\n    finally:\\n        _releaseLock()\\n\\nif hasattr(sys, \\\"_getframe\\\"):\\n    currentframe = lambda: sys._getframe(1)\\nelse: #pragma: no cover\\n    def currentframe():\\n        \\\"\\\"\\\"Return the frame object for the caller's stack frame.\\\"\\\"\\\"\\n        try:\\n            raise Exception\\n        except Exception as exc:\\n            return exc.__traceback__.tb_frame.f_back\\n\\n#\\n# _srcfile is used when walking the stack to check when we've got the first\\n# caller stack frame, by skipping frames whose filename is that of this\\n# module's source. It therefore should contain the filename of this module's\\n# source file.\\n#\\n# Ordinarily we would use __file__ for this, but frozen modules don't always\\n# have __file__ set, for some reason (see Issue #21736). Thus, we get the\\n# filename from a handy code object from a function defined in this module.\\n# (There's no particular reason for picking addLevelName.)\\n#\\n\\n_srcfile = os.path.normcase(addLevelName.__code__.co_filename)\\n\\n# _srcfile is only used in conjunction with sys._getframe().\\n# Setting _srcfile to None will prevent findCaller() from being called. This\\n# way, you can avoid the overhead of fetching caller information.\\n\\n# The following is based on warnings._is_internal_frame. It makes sure that\\n# frames of the import mechanism are skipped when logging at module level and\\n# using a stacklevel value greater than one.\\ndef _is_internal_frame(frame):\\n    \\\"\\\"\\\"Signal whether the frame is a CPython or logging module internal.\\\"\\\"\\\"\\n    filename = os.path.normcase(frame.f_code.co_filename)\\n    return filename == _srcfile or (\\n        \\\"importlib\\\" in filename and \\\"_bootstrap\\\" in filename\\n    )\\n\\n\\ndef _checkLevel(level):\\n    if isinstance(level, int):\\n        rv = level\\n    elif str(level) == level:\\n        if level not in _nameToLevel:\\n            raise ValueError(\\\"Unknown level: %r\\\" % level)\\n        rv = _nameToLevel[level]\\n    else:\\n        raise TypeError(\\\"Level not an integer or a valid string: %r\\\"\\n                        % (level,))\\n    return rv\\n\\n#---------------------------------------------------------------------------\\n#   Thread-related stuff\\n#---------------------------------------------------------------------------\\n\\n#\\n#_lock is used to serialize access to shared data structures in this module.\\n#This needs to be an RLock because fileConfig() creates and configures\\n#Handlers, and so might arbitrary user threads. Since Handler code updates the\\n#shared dictionary _handlers, it needs to acquire the lock. But if configuring,\\n#the lock would already have been acquired - so we need an RLock.\\n#The same argument applies to Loggers and Manager.loggerDict.\\n#\\n_lock = threading.RLock()\\n\\ndef _acquireLock():\\n    \\\"\\\"\\\"\\n    Acquire the module-level lock for serializing access to shared data.\\n\\n    This should be released with _releaseLock().\\n    \\\"\\\"\\\"\\n    if _lock:\\n        _lock.acquire()\\n\\ndef _releaseLock():\\n    \\\"\\\"\\\"\\n    Release the module-level lock acquired by calling _acquireLock().\\n    \\\"\\\"\\\"\\n    if _lock:\\n        _lock.release()\\n\\n\\n# Prevent a held logging lock from blocking a child from logging.\\n\\nif not hasattr(os, 'register_at_fork'):  # Windows and friends.\\n    def _register_at_fork_reinit_lock(instance):\\n        pass  # no-op when os.register_at_fork does not exist.\\nelse:\\n    # A collection of instances with a _at_fork_reinit method (logging.Handler)\\n    # to be called in the child after forking.  The weakref avoids us keeping\\n    # discarded Handler instances alive.\\n    _at_fork_reinit_lock_weakset = weakref.WeakSet()\\n\\n    def _register_at_fork_reinit_lock(instance):\\n        _acquireLock()\\n        try:\\n            _at_fork_reinit_lock_weakset.add(instance)\\n        finally:\\n            _releaseLock()\\n\\n    def _after_at_fork_child_reinit_locks():\\n        for handler in _at_fork_reinit_lock_weakset:\\n            handler._at_fork_reinit()\\n\\n        # _acquireLock() was called in the parent before forking.\\n        # The lock is reinitialized to unlocked state.\\n        _lock._at_fork_reinit()\\n\\n    os.register_at_fork(before=_acquireLock,\\n                        after_in_child=_after_at_fork_child_reinit_locks,\\n                        after_in_parent=_releaseLock)\\n\\n\\n#---------------------------------------------------------------------------\\n#   The logging record\\n#---------------------------------------------------------------------------\\n\\nclass LogRecord(object):\\n    \\\"\\\"\\\"\\n    A LogRecord instance represents an event being logged.\\n\\n    LogRecord instances are created every time something is logged. They\\n    contain all the information pertinent to the event being logged. The\\n    main information passed in is in msg and args, which are combined\\n    using str(msg) % args to create the message field of the record. The\\n    record also includes information such as when the record was created,\\n    the source line where the logging call was made, and any exception\\n    information to be logged.\\n    \\\"\\\"\\\"\\n    def __init__(self, name, level, pathname, lineno,\\n                 msg, args, exc_info, func=None, sinfo=None, **kwargs):\\n        \\\"\\\"\\\"\\n        Initialize a logging record with interesting information.\\n        \\\"\\\"\\\"\\n        ct = time.time()\\n        self.name = name\\n        self.msg = msg\\n        #\\n        # The following statement allows passing of a dictionary as a sole\\n        # argument, so that you can do something like\\n        #  logging.debug(\\\"a %(a)d b %(b)s\\\", {'a':1, 'b':2})\\n        # Suggested by Stefan Behnel.\\n        # Note that without the test for args[0], we get a problem because\\n        # during formatting, we test to see if the arg is present using\\n        # 'if self.args:'. If the event being logged is e.g. 'Value is %d'\\n        # and if the passed arg fails 'if self.args:' then no formatting\\n        # is done. For example, logger.warning('Value is %d', 0) would log\\n        # 'Value is %d' instead of 'Value is 0'.\\n        # For the use case of passing a dictionary, this should not be a\\n        # problem.\\n        # Issue #21172: a request was made to relax the isinstance check\\n        # to hasattr(args[0], '__getitem__'). However, the docs on string\\n        # formatting still seem to suggest a mapping object is required.\\n        # Thus, while not removing the isinstance check, it does now look\\n        # for collections.abc.Mapping rather than, as before, dict.\\n        if (args and len(args) == 1 and isinstance(args[0], collections.abc.Mapping)\\n            and args[0]):\\n            args = args[0]\\n        self.args = args\\n        self.levelname = getLevelName(level)\\n        self.levelno = level\\n        self.pathname = pathname\\n        try:\\n            self.filename = os.path.basename(pathname)\\n            self.module = os.path.splitext(self.filename)[0]\\n        except (TypeError, ValueError, AttributeError):\\n            self.filename = pathname\\n            self.module = \\\"Unknown module\\\"\\n        self.exc_info = exc_info\\n        self.exc_text = None      # used to cache the traceback text\\n        self.stack_info = sinfo\\n        self.lineno = lineno\\n        self.funcName = func\\n        self.created = ct\\n        self.msecs = int((ct - int(ct)) * 1000) + 0.0  # see gh-89047\\n        self.relativeCreated = (self.created - _startTime) * 1000\\n        if logThreads:\\n            self.thread = threading.get_ident()\\n            self.threadName = threading.current_thread().name\\n        else: # pragma: no cover\\n            self.thread = None\\n            self.threadName = None\\n        if not logMultiprocessing: # pragma: no cover\\n            self.processName = None\\n        else:\\n            self.processName = 'MainProcess'\\n            mp = sys.modules.get('multiprocessing')\\n            if mp is not None:\\n                # Errors may occur if multiprocessing has not finished loading\\n                # yet - e.g. if a custom import hook causes third-party code\\n                # to run when multiprocessing calls import. See issue 8200\\n                # for an example\\n                try:\\n                    self.processName = mp.current_process().name\\n                except Exception: #pragma: no cover\\n                    pass\\n        if logProcesses and hasattr(os, 'getpid'):\\n            self.process = os.getpid()\\n        else:\\n            self.process = None\\n\\n        self.taskName = None\\n        if logAsyncioTasks:\\n            asyncio = sys.modules.get('asyncio')\\n            if asyncio:\\n                try:\\n                    self.taskName = asyncio.current_task().get_name()\\n                except Exception:\\n                    pass\\n\\n    def __repr__(self):\\n        return '<LogRecord: %s, %s, %s, %s, \\\"%s\\\">'%(self.name, self.levelno,\\n            self.pathname, self.lineno, self.msg)\\n\\n    def getMessage(self):\\n        \\\"\\\"\\\"\\n        Return the message for this LogRecord.\\n\\n        Return the message for this LogRecord after merging any user-supplied\\n        arguments with the message.\\n        \\\"\\\"\\\"\\n        msg = str(self.msg)\\n        if self.args:\\n            msg = msg % self.args\\n        return msg\\n\\n#\\n#   Determine which class to use when instantiating log records.\\n#\\n_logRecordFactory = LogRecord\\n\\ndef setLogRecordFactory(factory):\\n    \\\"\\\"\\\"\\n    Set the factory to be used when instantiating a log record.\\n\\n    :param factory: A callable which will be called to instantiate\\n    a log record.\\n    \\\"\\\"\\\"\\n    global _logRecordFactory\\n    _logRecordFactory = factory\\n\\ndef getLogRecordFactory():\\n    \\\"\\\"\\\"\\n    Return the factory to be used when instantiating a log record.\\n    \\\"\\\"\\\"\\n\\n    return _logRecordFactory\\n\\ndef makeLogRecord(dict):\\n    \\\"\\\"\\\"\\n    Make a LogRecord whose attributes are defined by the specified dictionary,\\n    This function is useful for converting a logging event received over\\n    a socket connection (which is sent as a dictionary) into a LogRecord\\n    instance.\\n    \\\"\\\"\\\"\\n    rv = _logRecordFactory(None, None, \\\"\\\", 0, \\\"\\\", (), None, None)\\n    rv.__dict__.update(dict)\\n    return rv\\n\\n\\n#---------------------------------------------------------------------------\\n#   Formatter classes and functions\\n#---------------------------------------------------------------------------\\n_str_formatter = StrFormatter()\\ndel StrFormatter\\n\\n\\nclass PercentStyle(object):\\n\\n    default_format = '%(message)s'\\n    asctime_format = '%(asctime)s'\\n    asctime_search = '%(asctime)'\\n    validation_pattern = re.compile(r'%\\\\(\\\\w+\\\\)[#0+ -]*(\\\\*|\\\\d+)?(\\\\.(\\\\*|\\\\d+))?[diouxefgcrsa%]', re.I)\\n\\n    def __init__(self, fmt, *, defaults=None):\\n        self._fmt = fmt or self.default_format\\n        self._defaults = defaults\\n\\n    def usesTime(self):\\n        return self._fmt.find(self.asctime_search) >= 0\\n\\n    def validate(self):\\n        \\\"\\\"\\\"Validate the input format, ensure it matches the correct style\\\"\\\"\\\"\\n        if not self.validation_pattern.search(self._fmt):\\n            raise ValueError(\\\"Invalid format '%s' for '%s' style\\\" % (self._fmt, self.default_format[0]))\\n\\n    def _format(self, record):\\n        if defaults := self._defaults:\\n            values = defaults | record.__dict__\\n        else:\\n            values = record.__dict__\\n        return self._fmt % values\\n\\n    def format(self, record):\\n        try:\\n            return self._format(record)\\n        except KeyError as e:\\n            raise ValueError('Formatting field not found in record: %s' % e)\\n\\n\\nclass StrFormatStyle(PercentStyle):\\n    default_format = '{message}'\\n    asctime_format = '{asctime}'\\n    asctime_search = '{asctime'\\n\\n    fmt_spec = re.compile(r'^(.?[<>=^])?[+ -]?#?0?(\\\\d+|{\\\\w+})?[,_]?(\\\\.(\\\\d+|{\\\\w+}))?[bcdefgnosx%]?$', re.I)\\n    field_spec = re.compile(r'^(\\\\d+|\\\\w+)(\\\\.\\\\w+|\\\\[[^]]+\\\\])*$')\\n\\n    def _format(self, record):\\n        if defaults := self._defaults:\\n            values = defaults | record.__dict__\\n        else:\\n            values = record.__dict__\\n        return self._fmt.format(**values)\\n\\n    def validate(self):\\n        \\\"\\\"\\\"Validate the input format, ensure it is the correct string formatting style\\\"\\\"\\\"\\n        fields = set()\\n        try:\\n            for _, fieldname, spec, conversion in _str_formatter.parse(self._fmt):\\n                if fieldname:\\n                    if not self.field_spec.match(fieldname):\\n                        raise ValueError('invalid field name/expression: %r' % fieldname)\\n                    fields.add(fieldname)\\n                if conversion and conversion not in 'rsa':\\n                    raise ValueError('invalid conversion: %r' % conversion)\\n                if spec and not self.fmt_spec.match(spec):\\n                    raise ValueError('bad specifier: %r' % spec)\\n        except ValueError as e:\\n            raise ValueError('invalid format: %s' % e)\\n        if not fields:\\n            raise ValueError('invalid format: no fields')\\n\\n\\nclass StringTemplateStyle(PercentStyle):\\n    default_format = '${message}'\\n    asctime_format = '${asctime}'\\n    asctime_search = '${asctime}'\\n\\n    def __init__(self, *args, **kwargs):\\n        super().__init__(*args, **kwargs)\\n        self._tpl = Template(self._fmt)\\n\\n    def usesTime(self):\\n        fmt = self._fmt\\n        return fmt.find('$asctime') >= 0 or fmt.find(self.asctime_search) >= 0\\n\\n    def validate(self):\\n        pattern = Template.pattern\\n        fields = set()\\n        for m in pattern.finditer(self._fmt):\\n            d = m.groupdict()\\n            if d['named']:\\n                fields.add(d['named'])\\n            elif d['braced']:\\n                fields.add(d['braced'])\\n            elif m.group(0) == '$':\\n                raise ValueError('invalid format: bare \\\\'$\\\\' not allowed')\\n        if not fields:\\n            raise ValueError('invalid format: no fields')\\n\\n    def _format(self, record):\\n        if defaults := self._defaults:\\n            values = defaults | record.__dict__\\n        else:\\n            values = record.__dict__\\n        return self._tpl.substitute(**values)\\n\\n\\nBASIC_FORMAT = \\\"%(levelname)s:%(name)s:%(message)s\\\"\\n\\n_STYLES = {\\n    '%': (PercentStyle, BASIC_FORMAT),\\n    '{': (StrFormatStyle, '{levelname}:{name}:{message}'),\\n    '$': (StringTemplateStyle, '${levelname}:${name}:${message}'),\\n}\\n\\nclass Formatter(object):\\n    \\\"\\\"\\\"\\n    Formatter instances are used to convert a LogRecord to text.\\n\\n    Formatters need to know how a LogRecord is constructed. They are\\n    responsible for converting a LogRecord to (usually) a string which can\\n    be interpreted by either a human or an external system. The base Formatter\\n    allows a formatting string to be specified. If none is supplied, the\\n    style-dependent default value, \\\"%(message)s\\\", \\\"{message}\\\", or\\n    \\\"${message}\\\", is used.\\n\\n    The Formatter can be initialized with a format string which makes use of\\n    knowledge of the LogRecord attributes - e.g. the default value mentioned\\n    above makes use of the fact that the user's message and arguments are pre-\\n    formatted into a LogRecord's message attribute. Currently, the useful\\n    attributes in a LogRecord are described by:\\n\\n    %(name)s            Name of the logger (logging channel)\\n    %(levelno)s         Numeric logging level for the message (DEBUG, INFO,\\n                        WARNING, ERROR, CRITICAL)\\n    %(levelname)s       Text logging level for the message (\\\"DEBUG\\\", \\\"INFO\\\",\\n                        \\\"WARNING\\\", \\\"ERROR\\\", \\\"CRITICAL\\\")\\n    %(pathname)s        Full pathname of the source file where the logging\\n                        call was issued (if available)\\n    %(filename)s        Filename portion of pathname\\n    %(module)s          Module (name portion of filename)\\n    %(lineno)d          Source line number where the logging call was issued\\n                        (if available)\\n    %(funcName)s        Function name\\n    %(created)f         Time when the LogRecord was created (time.time()\\n                        return value)\\n    %(asctime)s         Textual time when the LogRecord was created\\n    %(msecs)d           Millisecond portion of the creation time\\n    %(relativeCreated)d Time in milliseconds when the LogRecord was created,\\n                        relative to the time the logging module was loaded\\n                        (typically at application startup time)\\n    %(thread)d          Thread ID (if available)\\n    %(threadName)s      Thread name (if available)\\n    %(taskName)s        Task name (if available)\\n    %(process)d         Process ID (if available)\\n    %(message)s         The result of record.getMessage(), computed just as\\n                        the record is emitted\\n    \\\"\\\"\\\"\\n\\n    converter = time.localtime\\n\\n    def __init__(self, fmt=None, datefmt=None, style='%', validate=True, *,\\n                 defaults=None):\\n        \\\"\\\"\\\"\\n        Initialize the formatter with specified format strings.\\n\\n        Initialize the formatter either with the specified format string, or a\\n        default as described above. Allow for specialized date formatting with\\n        the optional datefmt argument. If datefmt is omitted, you get an\\n        ISO8601-like (or RFC 3339-like) format.\\n\\n        Use a style parameter of '%', '{' or '$' to specify that you want to\\n        use one of %-formatting, :meth:`str.format` (``{}``) formatting or\\n        :class:`string.Template` formatting in your format string.\\n\\n        .. versionchanged:: 3.2\\n           Added the ``style`` parameter.\\n        \\\"\\\"\\\"\\n        if style not in _STYLES:\\n            raise ValueError('Style must be one of: %s' % ','.join(\\n                             _STYLES.keys()))\\n        self._style = _STYLES[style][0](fmt, defaults=defaults)\\n        if validate:\\n            self._style.validate()\\n\\n        self._fmt = self._style._fmt\\n        self.datefmt = datefmt\\n\\n    default_time_format = '%Y-%m-%d %H:%M:%S'\\n    default_msec_format = '%s,%03d'\\n\\n    def formatTime(self, record, datefmt=None):\\n        \\\"\\\"\\\"\\n        Return the creation time of the specified LogRecord as formatted text.\\n\\n        This method should be called from format() by a formatter which\\n        wants to make use of a formatted time. This method can be overridden\\n        in formatters to provide for any specific requirement, but the\\n        basic behaviour is as follows: if datefmt (a string) is specified,\\n        it is used with time.strftime() to format the creation time of the\\n        record. Otherwise, an ISO8601-like (or RFC 3339-like) format is used.\\n        The resulting string is returned. This function uses a user-configurable\\n        function to convert the creation time to a tuple. By default,\\n        time.localtime() is used; to change this for a particular formatter\\n        instance, set the 'converter' attribute to a function with the same\\n        signature as time.localtime() or time.gmtime(). To change it for all\\n        formatters, for example if you want all logging times to be shown in GMT,\\n        set the 'converter' attribute in the Formatter class.\\n        \\\"\\\"\\\"\\n        ct = self.converter(record.created)\\n        if datefmt:\\n            s = time.strftime(datefmt, ct)\\n        else:\\n            s = time.strftime(self.default_time_format, ct)\\n            if self.default_msec_format:\\n                s = self.default_msec_format % (s, record.msecs)\\n        return s\\n\\n    def formatException(self, ei):\\n        \\\"\\\"\\\"\\n        Format and return the specified exception information as a string.\\n\\n        This default implementation just uses\\n        traceback.print_exception()\\n        \\\"\\\"\\\"\\n        sio = io.StringIO()\\n        tb = ei[2]\\n        # See issues #9427, #1553375. Commented out for now.\\n        #if getattr(self, 'fullstack', False):\\n        #    traceback.print_stack(tb.tb_frame.f_back, file=sio)\\n        traceback.print_exception(ei[0], ei[1], tb, None, sio)\\n        s = sio.getvalue()\\n        sio.close()\\n        if s[-1:] == \\\"\\\\n\\\":\\n            s = s[:-1]\\n        return s\\n\\n    def usesTime(self):\\n        \\\"\\\"\\\"\\n        Check if the format uses the creation time of the record.\\n        \\\"\\\"\\\"\\n        return self._style.usesTime()\\n\\n    def formatMessage(self, record):\\n        return self._style.format(record)\\n\\n    def formatStack(self, stack_info):\\n        \\\"\\\"\\\"\\n        This method is provided as an extension point for specialized\\n        formatting of stack information.\\n\\n        The input data is a string as returned from a call to\\n        :func:`traceback.print_stack`, but with the last trailing newline\\n        removed.\\n\\n        The base implementation just returns the value passed in.\\n        \\\"\\\"\\\"\\n        return stack_info\\n\\n    def format(self, record):\\n        \\\"\\\"\\\"\\n        Format the specified record as text.\\n\\n        The record's attribute dictionary is used as the operand to a\\n        string formatting operation which yields the returned string.\\n        Before formatting the dictionary, a couple of preparatory steps\\n        are carried out. The message attribute of the record is computed\\n        using LogRecord.getMessage(). If the formatting string uses the\\n        time (as determined by a call to usesTime(), formatTime() is\\n        called to format the event time. If there is exception information,\\n        it is formatted using formatException() and appended to the message.\\n        \\\"\\\"\\\"\\n        record.message = record.getMessage()\\n        if self.usesTime():\\n            record.asctime = self.formatTime(record, self.datefmt)\\n        s = self.formatMessage(record)\\n        if record.exc_info:\\n            # Cache the traceback text to avoid converting it multiple times\\n            # (it's constant anyway)\\n            if not record.exc_text:\\n                record.exc_text = self.formatException(record.exc_info)\\n        if record.exc_text:\\n            if s[-1:] != \\\"\\\\n\\\":\\n                s = s + \\\"\\\\n\\\"\\n            s = s + record.exc_text\\n        if record.stack_info:\\n            if s[-1:] != \\\"\\\\n\\\":\\n                s = s + \\\"\\\\n\\\"\\n            s = s + self.formatStack(record.stack_info)\\n        return s\\n\\n#\\n#   The default formatter to use when no other is specified\\n#\\n_defaultFormatter = Formatter()\\n\\nclass BufferingFormatter(object):\\n    \\\"\\\"\\\"\\n    A formatter suitable for formatting a number of records.\\n    \\\"\\\"\\\"\\n    def __init__(self, linefmt=None):\\n        \\\"\\\"\\\"\\n        Optionally specify a formatter which will be used to format each\\n        individual record.\\n        \\\"\\\"\\\"\\n        if linefmt:\\n            self.linefmt = linefmt\\n        else:\\n            self.linefmt = _defaultFormatter\\n\\n    def formatHeader(self, records):\\n        \\\"\\\"\\\"\\n        Return the header string for the specified records.\\n        \\\"\\\"\\\"\\n        return \\\"\\\"\\n\\n    def formatFooter(self, records):\\n        \\\"\\\"\\\"\\n        Return the footer string for the specified records.\\n        \\\"\\\"\\\"\\n        return \\\"\\\"\\n\\n    def format(self, records):\\n        \\\"\\\"\\\"\\n        Format the specified records and return the result as a string.\\n        \\\"\\\"\\\"\\n        rv = \\\"\\\"\\n        if len(records) > 0:\\n            rv = rv + self.formatHeader(records)\\n            for record in records:\\n                rv = rv + self.linefmt.format(record)\\n            rv = rv + self.formatFooter(records)\\n        return rv\\n\\n#---------------------------------------------------------------------------\\n#   Filter classes and functions\\n#---------------------------------------------------------------------------\\n\\nclass Filter(object):\\n    \\\"\\\"\\\"\\n    Filter instances are used to perform arbitrary filtering of LogRecords.\\n\\n    Loggers and Handlers can optionally use Filter instances to filter\\n    records as desired. The base filter class only allows events which are\\n    below a certain point in the logger hierarchy. For example, a filter\\n    initialized with \\\"A.B\\\" will allow events logged by loggers \\\"A.B\\\",\\n    \\\"A.B.C\\\", \\\"A.B.C.D\\\", \\\"A.B.D\\\" etc. but not \\\"A.BB\\\", \\\"B.A.B\\\" etc. If\\n    initialized with the empty string, all events are passed.\\n    \\\"\\\"\\\"\\n    def __init__(self, name=''):\\n        \\\"\\\"\\\"\\n        Initialize a filter.\\n\\n        Initialize with the name of the logger which, together with its\\n        children, will have its events allowed through the filter. If no\\n        name is specified, allow every event.\\n        \\\"\\\"\\\"\\n        self.name = name\\n        self.nlen = len(name)\\n\\n    def filter(self, record):\\n        \\\"\\\"\\\"\\n        Determine if the specified record is to be logged.\\n\\n        Returns True if the record should be logged, or False otherwise.\\n        If deemed appropriate, the record may be modified in-place.\\n        \\\"\\\"\\\"\\n        if self.nlen == 0:\\n            return True\\n        elif self.name == record.name:\\n            return True\\n        elif record.name.find(self.name, 0, self.nlen) != 0:\\n            return False\\n        return (record.name[self.nlen] == \\\".\\\")\\n\\nclass Filterer(object):\\n    \\\"\\\"\\\"\\n    A base class for loggers and handlers which allows them to share\\n    common code.\\n    \\\"\\\"\\\"\\n    def __init__(self):\\n        \\\"\\\"\\\"\\n        Initialize the list of filters to be an empty list.\\n        \\\"\\\"\\\"\\n        self.filters = []\\n\\n    def addFilter(self, filter):\\n        \\\"\\\"\\\"\\n        Add the specified filter to this handler.\\n        \\\"\\\"\\\"\\n        if not (filter in self.filters):\\n            self.filters.append(filter)\\n\\n    def removeFilter(self, filter):\\n        \\\"\\\"\\\"\\n        Remove the specified filter from this handler.\\n        \\\"\\\"\\\"\\n        if filter in self.filters:\\n            self.filters.remove(filter)\\n\\n    def filter(self, record):\\n        \\\"\\\"\\\"\\n        Determine if a record is loggable by consulting all the filters.\\n\\n        The default is to allow the record to be logged; any filter can veto\\n        this by returning a false value.\\n        If a filter attached to a handler returns a log record instance,\\n        then that instance is used in place of the original log record in\\n        any further processing of the event by that handler.\\n        If a filter returns any other true value, the original log record\\n        is used in any further processing of the event by that handler.\\n\\n        If none of the filters return false values, this method returns\\n        a log record.\\n        If any of the filters return a false value, this method returns\\n        a false value.\\n\\n        .. versionchanged:: 3.2\\n\\n           Allow filters to be just callables.\\n\\n        .. versionchanged:: 3.12\\n           Allow filters to return a LogRecord instead of\\n           modifying it in place.\\n        \\\"\\\"\\\"\\n        for f in self.filters:\\n            if hasattr(f, 'filter'):\\n                result = f.filter(record)\\n            else:\\n                result = f(record) # assume callable - will raise if not\\n            if not result:\\n                return False\\n            if isinstance(result, LogRecord):\\n                record = result\\n        return record\\n\\n#---------------------------------------------------------------------------\\n#   Handler classes and functions\\n#---------------------------------------------------------------------------\\n\\n_handlers = weakref.WeakValueDictionary()  #map of handler names to handlers\\n_handlerList = [] # added to allow handlers to be removed in reverse of order initialized\\n\\ndef _removeHandlerRef(wr):\\n    \\\"\\\"\\\"\\n    Remove a handler reference from the internal cleanup list.\\n    \\\"\\\"\\\"\\n    # This function can be called during module teardown, when globals are\\n    # set to None. It can also be called from another thread. So we need to\\n    # pre-emptively grab the necessary globals and check if they're None,\\n    # to prevent race conditions and failures during interpreter shutdown.\\n    acquire, release, handlers = _acquireLock, _releaseLock, _handlerList\\n    if acquire and release and handlers:\\n        acquire()\\n        try:\\n            handlers.remove(wr)\\n        except ValueError:\\n            pass\\n        finally:\\n            release()\\n\\ndef _addHandlerRef(handler):\\n    \\\"\\\"\\\"\\n    Add a handler to the internal cleanup list using a weak reference.\\n    \\\"\\\"\\\"\\n    _acquireLock()\\n    try:\\n        _handlerList.append(weakref.ref(handler, _removeHandlerRef))\\n    finally:\\n        _releaseLock()\\n\\n\\ndef getHandlerByName(name):\\n    \\\"\\\"\\\"\\n    Get a handler with the specified *name*, or None if there isn't one with\\n    that name.\\n    \\\"\\\"\\\"\\n    return _handlers.get(name)\\n\\n\\ndef getHandlerNames():\\n    \\\"\\\"\\\"\\n    Return all known handler names as an immutable set.\\n    \\\"\\\"\\\"\\n    result = set(_handlers.keys())\\n    return frozenset(result)\\n\\n\\nclass Handler(Filterer):\\n    \\\"\\\"\\\"\\n    Handler instances dispatch logging events to specific destinations.\\n\\n    The base handler class. Acts as a placeholder which defines the Handler\\n    interface. Handlers can optionally use Formatter instances to format\\n    records as desired. By default, no formatter is specified; in this case,\\n    the 'raw' message as determined by record.message is logged.\\n    \\\"\\\"\\\"\\n    def __init__(self, level=NOTSET):\\n        \\\"\\\"\\\"\\n        Initializes the instance - basically setting the formatter to None\\n        and the filter list to empty.\\n        \\\"\\\"\\\"\\n        Filterer.__init__(self)\\n        self._name = None\\n        self.level = _checkLevel(level)\\n        self.formatter = None\\n        self._closed = False\\n        # Add the handler to the global _handlerList (for cleanup on shutdown)\\n        _addHandlerRef(self)\\n        self.createLock()\\n\\n    def get_name(self):\\n        return self._name\\n\\n    def set_name(self, name):\\n        _acquireLock()\\n        try:\\n            if self._name in _handlers:\\n                del _handlers[self._name]\\n            self._name = name\\n            if name:\\n                _handlers[name] = self\\n        finally:\\n            _releaseLock()\\n\\n    name = property(get_name, set_name)\\n\\n    def createLock(self):\\n        \\\"\\\"\\\"\\n        Acquire a thread lock for serializing access to the underlying I/O.\\n        \\\"\\\"\\\"\\n        self.lock = threading.RLock()\\n        _register_at_fork_reinit_lock(self)\\n\\n    def _at_fork_reinit(self):\\n        self.lock._at_fork_reinit()\\n\\n    def acquire(self):\\n        \\\"\\\"\\\"\\n        Acquire the I/O thread lock.\\n        \\\"\\\"\\\"\\n        if self.lock:\\n            self.lock.acquire()\\n\\n    def release(self):\\n        \\\"\\\"\\\"\\n        Release the I/O thread lock.\\n        \\\"\\\"\\\"\\n        if self.lock:\\n            self.lock.release()\\n\\n    def setLevel(self, level):\\n        \\\"\\\"\\\"\\n        Set the logging level of this handler.  level must be an int or a str.\\n        \\\"\\\"\\\"\\n        self.level = _checkLevel(level)\\n\\n    def format(self, record):\\n        \\\"\\\"\\\"\\n        Format the specified record.\\n\\n        If a formatter is set, use it. Otherwise, use the default formatter\\n        for the module.\\n        \\\"\\\"\\\"\\n        if self.formatter:\\n            fmt = self.formatter\\n        else:\\n            fmt = _defaultFormatter\\n        return fmt.format(record)\\n\\n    def emit(self, record):\\n        \\\"\\\"\\\"\\n        Do whatever it takes to actually log the specified logging record.\\n\\n        This version is intended to be implemented by subclasses and so\\n        raises a NotImplementedError.\\n        \\\"\\\"\\\"\\n        raise NotImplementedError('emit must be implemented '\\n                                  'by Handler subclasses')\\n\\n    def handle(self, record):\\n        \\\"\\\"\\\"\\n        Conditionally emit the specified logging record.\\n\\n        Emission depends on filters which may have been added to the handler.\\n        Wrap the actual emission of the record with acquisition/release of\\n        the I/O thread lock.\\n\\n        Returns an instance of the log record that was emitted\\n        if it passed all filters, otherwise a false value is returned.\\n        \\\"\\\"\\\"\\n        rv = self.filter(record)\\n        if isinstance(rv, LogRecord):\\n            record = rv\\n        if rv:\\n            self.acquire()\\n            try:\\n                self.emit(record)\\n            finally:\\n                self.release()\\n        return rv\\n\\n    def setFormatter(self, fmt):\\n        \\\"\\\"\\\"\\n        Set the formatter for this handler.\\n        \\\"\\\"\\\"\\n        self.formatter = fmt\\n\\n    def flush(self):\\n        \\\"\\\"\\\"\\n        Ensure all logging output has been flushed.\\n\\n        This version does nothing and is intended to be implemented by\\n        subclasses.\\n        \\\"\\\"\\\"\\n        pass\\n\\n    def close(self):\\n        \\\"\\\"\\\"\\n        Tidy up any resources used by the handler.\\n\\n        This version removes the handler from an internal map of handlers,\\n        _handlers, which is used for handler lookup by name. Subclasses\\n        should ensure that this gets called from overridden close()\\n        methods.\\n        \\\"\\\"\\\"\\n        #get the module data lock, as we're updating a shared structure.\\n        _acquireLock()\\n        try:    #unlikely to raise an exception, but you never know...\\n            self._closed = True\\n            if self._name and self._name in _handlers:\\n                del _handlers[self._name]\\n        finally:\\n            _releaseLock()\\n\\n    def handleError(self, record):\\n        \\\"\\\"\\\"\\n        Handle errors which occur during an emit() call.\\n\\n        This method should be called from handlers when an exception is\\n        encountered during an emit() call. If raiseExceptions is false,\\n        exceptions get silently ignored. This is what is mostly wanted\\n        for a logging system - most users will not care about errors in\\n        the logging system, they are more interested in application errors.\\n        You could, however, replace this with a custom handler if you wish.\\n        The record which was being processed is passed in to this method.\\n        \\\"\\\"\\\"\\n        if raiseExceptions and sys.stderr:  # see issue 13807\\n            t, v, tb = sys.exc_info()\\n            try:\\n                sys.stderr.write('--- Logging error ---\\\\n')\\n                traceback.print_exception(t, v, tb, None, sys.stderr)\\n                sys.stderr.write('Call stack:\\\\n')\\n                # Walk the stack frame up until we're out of logging,\\n                # so as to print the calling context.\\n                frame = tb.tb_frame\\n                while (frame and os.path.dirname(frame.f_code.co_filename) ==\\n                       __path__[0]):\\n                    frame = frame.f_back\\n                if frame:\\n                    traceback.print_stack(frame, file=sys.stderr)\\n                else:\\n                    # couldn't find the right stack frame, for some reason\\n                    sys.stderr.write('Logged from file %s, line %s\\\\n' % (\\n                                     record.filename, record.lineno))\\n                # Issue 18671: output logging message and arguments\\n                try:\\n                    sys.stderr.write('Message: %r\\\\n'\\n                                     'Arguments: %s\\\\n' % (record.msg,\\n                                                          record.args))\\n                except RecursionError:  # See issue 36272\\n                    raise\\n                except Exception:\\n                    sys.stderr.write('Unable to print the message and arguments'\\n                                     ' - possible formatting error.\\\\nUse the'\\n                                     ' traceback above to help find the error.\\\\n'\\n                                    )\\n            except OSError: #pragma: no cover\\n                pass    # see issue 5971\\n            finally:\\n                del t, v, tb\\n\\n    def __repr__(self):\\n        level = getLevelName(self.level)\\n        return '<%s (%s)>' % (self.__class__.__name__, level)\\n\\nclass StreamHandler(Handler):\\n    \\\"\\\"\\\"\\n    A handler class which writes logging records, appropriately formatted,\\n    to a stream. Note that this class does not close the stream, as\\n    sys.stdout or sys.stderr may be used.\\n    \\\"\\\"\\\"\\n\\n    terminator = '\\\\n'\\n\\n    def __init__(self, stream=None):\\n        \\\"\\\"\\\"\\n        Initialize the handler.\\n\\n        If stream is not specified, sys.stderr is used.\\n        \\\"\\\"\\\"\\n        Handler.__init__(self)\\n        if stream is None:\\n            stream = sys.stderr\\n        self.stream = stream\\n\\n    def flush(self):\\n        \\\"\\\"\\\"\\n        Flushes the stream.\\n        \\\"\\\"\\\"\\n        self.acquire()\\n        try:\\n            if self.stream and hasattr(self.stream, \\\"flush\\\"):\\n                self.stream.flush()\\n        finally:\\n            self.release()\\n\\n    def emit(self, record):\\n        \\\"\\\"\\\"\\n        Emit a record.\\n\\n        If a formatter is specified, it is used to format the record.\\n        The record is then written to the stream with a trailing newline.  If\\n        exception information is present, it is formatted using\\n        traceback.print_exception and appended to the stream.  If the stream\\n        has an 'encoding' attribute, it is used to determine how to do the\\n        output to the stream.\\n        \\\"\\\"\\\"\\n        try:\\n            msg = self.format(record)\\n            stream = self.stream\\n            # issue 35046: merged two stream.writes into one.\\n            stream.write(msg + self.terminator)\\n            self.flush()\\n        except RecursionError:  # See issue 36272\\n            raise\\n        except Exception:\\n            self.handleError(record)\\n\\n    def setStream(self, stream):\\n        \\\"\\\"\\\"\\n        Sets the StreamHandler's stream to the specified value,\\n        if it is different.\\n\\n        Returns the old stream, if the stream was changed, or None\\n        if it wasn't.\\n        \\\"\\\"\\\"\\n        if stream is self.stream:\\n            result = None\\n        else:\\n            result = self.stream\\n            self.acquire()\\n            try:\\n                self.flush()\\n                self.stream = stream\\n            finally:\\n                self.release()\\n        return result\\n\\n    def __repr__(self):\\n        level = getLevelName(self.level)\\n        name = getattr(self.stream, 'name', '')\\n        #  bpo-36015: name can be an int\\n        name = str(name)\\n        if name:\\n            name += ' '\\n        return '<%s %s(%s)>' % (self.__class__.__name__, name, level)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n\\nclass FileHandler(StreamHandler):\\n    \\\"\\\"\\\"\\n    A handler class which writes formatted logging records to disk files.\\n    \\\"\\\"\\\"\\n    def __init__(self, filename, mode='a', encoding=None, delay=False, errors=None):\\n        \\\"\\\"\\\"\\n        Open the specified file and use it as the stream for logging.\\n        \\\"\\\"\\\"\\n        # Issue #27493: add support for Path objects to be passed in\\n        filename = os.fspath(filename)\\n        #keep the absolute path, otherwise derived classes which use this\\n        #may come a cropper when the current directory changes\\n        self.baseFilename = os.path.abspath(filename)\\n        self.mode = mode\\n        self.encoding = encoding\\n        if \\\"b\\\" not in mode:\\n            self.encoding = io.text_encoding(encoding)\\n        self.errors = errors\\n        self.delay = delay\\n        # bpo-26789: FileHandler keeps a reference to the builtin open()\\n        # function to be able to open or reopen the file during Python\\n        # finalization.\\n        self._builtin_open = open\\n        if delay:\\n            #We don't open the stream, but we still need to call the\\n            #Handler constructor to set level, formatter, lock etc.\\n            Handler.__init__(self)\\n            self.stream = None\\n        else:\\n            StreamHandler.__init__(self, self._open())\\n\\n    def close(self):\\n        \\\"\\\"\\\"\\n        Closes the stream.\\n        \\\"\\\"\\\"\\n        self.acquire()\\n        try:\\n            try:\\n                if self.stream:\\n                    try:\\n                        self.flush()\\n                    finally:\\n                        stream = self.stream\\n                        self.stream = None\\n                        if hasattr(stream, \\\"close\\\"):\\n                            stream.close()\\n            finally:\\n                # Issue #19523: call unconditionally to\\n                # prevent a handler leak when delay is set\\n                # Also see Issue #42378: we also rely on\\n                # self._closed being set to True there\\n                StreamHandler.close(self)\\n        finally:\\n            self.release()\\n\\n    def _open(self):\\n        \\\"\\\"\\\"\\n        Open the current base file with the (original) mode and encoding.\\n        Return the resulting stream.\\n        \\\"\\\"\\\"\\n        open_func = self._builtin_open\\n        return open_func(self.baseFilename, self.mode,\\n                         encoding=self.encoding, errors=self.errors)\\n\\n    def emit(self, record):\\n        \\\"\\\"\\\"\\n        Emit a record.\\n\\n        If the stream was not opened because 'delay' was specified in the\\n        constructor, open it before calling the superclass's emit.\\n\\n        If stream is not open, current mode is 'w' and `_closed=True`, record\\n        will not be emitted (see Issue #42378).\\n        \\\"\\\"\\\"\\n        if self.stream is None:\\n            if self.mode != 'w' or not self._closed:\\n                self.stream = self._open()\\n        if self.stream:\\n            StreamHandler.emit(self, record)\\n\\n    def __repr__(self):\\n        level = getLevelName(self.level)\\n        return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level)\\n\\n\\nclass _StderrHandler(StreamHandler):\\n    \\\"\\\"\\\"\\n    This class is like a StreamHandler using sys.stderr, but always uses\\n    whatever sys.stderr is currently set to rather than the value of\\n    sys.stderr at handler construction time.\\n    \\\"\\\"\\\"\\n    def __init__(self, level=NOTSET):\\n        \\\"\\\"\\\"\\n        Initialize the handler.\\n        \\\"\\\"\\\"\\n        Handler.__init__(self, level)\\n\\n    @property\\n    def stream(self):\\n        return sys.stderr\\n\\n\\n_defaultLastResort = _StderrHandler(WARNING)\\nlastResort = _defaultLastResort\\n\\n#---------------------------------------------------------------------------\\n#   Manager classes and functions\\n#---------------------------------------------------------------------------\\n\\nclass PlaceHolder(object):\\n    \\\"\\\"\\\"\\n    PlaceHolder instances are used in the Manager logger hierarchy to take\\n    the place of nodes for which no loggers have been defined. This class is\\n    intended for internal use only and not as part of the public API.\\n    \\\"\\\"\\\"\\n    def __init__(self, alogger):\\n        \\\"\\\"\\\"\\n        Initialize with the specified logger being a child of this placeholder.\\n        \\\"\\\"\\\"\\n        self.loggerMap = { alogger : None }\\n\\n    def append(self, alogger):\\n        \\\"\\\"\\\"\\n        Add the specified logger as a child of this placeholder.\\n        \\\"\\\"\\\"\\n        if alogger not in self.loggerMap:\\n            self.loggerMap[alogger] = None\\n\\n#\\n#   Determine which class to use when instantiating loggers.\\n#\\n\\ndef setLoggerClass(klass):\\n    \\\"\\\"\\\"\\n    Set the class to be used when instantiating a logger. The class should\\n    define __init__() such that only a name argument is required, and the\\n    __init__() should call Logger.__init__()\\n    \\\"\\\"\\\"\\n    if klass != Logger:\\n        if not issubclass(klass, Logger):\\n            raise TypeError(\\\"logger not derived from logging.Logger: \\\"\\n                            + klass.__name__)\\n    global _loggerClass\\n    _loggerClass = klass\\n\\ndef getLoggerClass():\\n    \\\"\\\"\\\"\\n    Return the class to be used when instantiating a logger.\\n    \\\"\\\"\\\"\\n    return _loggerClass\\n\\nclass Manager(object):\\n    \\\"\\\"\\\"\\n    There is [under normal circumstances] just one Manager instance, which\\n    holds the hierarchy of loggers.\\n    \\\"\\\"\\\"\\n    def __init__(self, rootnode):\\n        \\\"\\\"\\\"\\n        Initialize the manager with the root node of the logger hierarchy.\\n        \\\"\\\"\\\"\\n        self.root = rootnode\\n        self.disable = 0\\n        self.emittedNoHandlerWarning = False\\n        self.loggerDict = {}\\n        self.loggerClass = None\\n        self.logRecordFactory = None\\n\\n    @property\\n    def disable(self):\\n        return self._disable\\n\\n    @disable.setter\\n    def disable(self, value):\\n        self._disable = _checkLevel(value)\\n\\n    def getLogger(self, name):\\n        \\\"\\\"\\\"\\n        Get a logger with the specified name (channel name), creating it\\n        if it doesn't yet exist. This name is a dot-separated hierarchical\\n        name, such as \\\"a\\\", \\\"a.b\\\", \\\"a.b.c\\\" or similar.\\n\\n        If a PlaceHolder existed for the specified name [i.e. the logger\\n        didn't exist but a child of it did], replace it with the created\\n        logger and fix up the parent/child references which pointed to the\\n        placeholder to now point to the logger.\\n        \\\"\\\"\\\"\\n        rv = None\\n        if not isinstance(name, str):\\n            raise TypeError('A logger name must be a string')\\n        _acquireLock()\\n        try:\\n            if name in self.loggerDict:\\n                rv = self.loggerDict[name]\\n                if isinstance(rv, PlaceHolder):\\n                    ph = rv\\n                    rv = (self.loggerClass or _loggerClass)(name)\\n                    rv.manager = self\\n                    self.loggerDict[name] = rv\\n                    self._fixupChildren(ph, rv)\\n                    self._fixupParents(rv)\\n            else:\\n                rv = (self.loggerClass or _loggerClass)(name)\\n                rv.manager = self\\n                self.loggerDict[name] = rv\\n                self._fixupParents(rv)\\n        finally:\\n            _releaseLock()\\n        return rv\\n\\n    def setLoggerClass(self, klass):\\n        \\\"\\\"\\\"\\n        Set the class to be used when instantiating a logger with this Manager.\\n        \\\"\\\"\\\"\\n        if klass != Logger:\\n            if not issubclass(klass, Logger):\\n                raise TypeError(\\\"logger not derived from logging.Logger: \\\"\\n                                + klass.__name__)\\n        self.loggerClass = klass\\n\\n    def setLogRecordFactory(self, factory):\\n        \\\"\\\"\\\"\\n        Set the factory to be used when instantiating a log record with this\\n        Manager.\\n        \\\"\\\"\\\"\\n        self.logRecordFactory = factory\\n\\n    def _fixupParents(self, alogger):\\n        \\\"\\\"\\\"\\n        Ensure that there are either loggers or placeholders all the way\\n        from the specified logger to the root of the logger hierarchy.\\n        \\\"\\\"\\\"\\n        name = alogger.name\\n        i = name.rfind(\\\".\\\")\\n        rv = None\\n        while (i > 0) and not rv:\\n            substr = name[:i]\\n            if substr not in self.loggerDict:\\n                self.loggerDict[substr] = PlaceHolder(alogger)\\n            else:\\n                obj = self.loggerDict[substr]\\n                if isinstance(obj, Logger):\\n                    rv = obj\\n                else:\\n                    assert isinstance(obj, PlaceHolder)\\n                    obj.append(alogger)\\n            i = name.rfind(\\\".\\\", 0, i - 1)\\n        if not rv:\\n            rv = self.root\\n        alogger.parent = rv\\n\\n    def _fixupChildren(self, ph, alogger):\\n        \\\"\\\"\\\"\\n        Ensure that children of the placeholder ph are connected to the\\n        specified logger.\\n        \\\"\\\"\\\"\\n        name = alogger.name\\n        namelen = len(name)\\n        for c in ph.loggerMap.keys():\\n            #The if means ... if not c.parent.name.startswith(nm)\\n            if c.parent.name[:namelen] != name:\\n                alogger.parent = c.parent\\n                c.parent = alogger\\n\\n    def _clear_cache(self):\\n        \\\"\\\"\\\"\\n        Clear the cache for all loggers in loggerDict\\n        Called when level changes are made\\n        \\\"\\\"\\\"\\n\\n        _acquireLock()\\n        for logger in self.loggerDict.values():\\n            if isinstance(logger, Logger):\\n                logger._cache.clear()\\n        self.root._cache.clear()\\n        _releaseLock()\\n\\n#---------------------------------------------------------------------------\\n#   Logger classes and functions\\n#---------------------------------------------------------------------------\\n\\nclass Logger(Filterer):\\n    \\\"\\\"\\\"\\n    Instances of the Logger class represent a single logging channel. A\\n    \\\"logging channel\\\" indicates an area of an application. Exactly how an\\n    \\\"area\\\" is defined is up to the application developer. Since an\\n    application can have any number of areas, logging channels are identified\\n    by a unique string. Application areas can be nested (e.g. an area\\n    of \\\"input processing\\\" might include sub-areas \\\"read CSV files\\\", \\\"read\\n    XLS files\\\" and \\\"read Gnumeric files\\\"). To cater for this natural nesting,\\n    channel names are organized into a namespace hierarchy where levels are\\n    separated by periods, much like the Java or Python package namespace. So\\n    in the instance given above, channel names might be \\\"input\\\" for the upper\\n    level, and \\\"input.csv\\\", \\\"input.xls\\\" and \\\"input.gnu\\\" for the sub-levels.\\n    There is no arbitrary limit to the depth of nesting.\\n    \\\"\\\"\\\"\\n    def __init__(self, name, level=NOTSET):\\n        \\\"\\\"\\\"\\n        Initialize the logger with a name and an optional level.\\n        \\\"\\\"\\\"\\n        Filterer.__init__(self)\\n        self.name = name\\n        self.level = _checkLevel(level)\\n        self.parent = None\\n        self.propagate = True\\n        self.handlers = []\\n        self.disabled = False\\n        self._cache = {}\\n\\n    def setLevel(self, level):\\n        \\\"\\\"\\\"\\n        Set the logging level of this logger.  level must be an int or a str.\\n        \\\"\\\"\\\"\\n        self.level = _checkLevel(level)\\n        self.manager._clear_cache()\\n\\n    def debug(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with severity 'DEBUG'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.debug(\\\"Houston, we have a %s\\\", \\\"thorny problem\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(DEBUG):\\n            self._log(DEBUG, msg, args, **kwargs)\\n\\n    def info(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with severity 'INFO'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.info(\\\"Houston, we have a %s\\\", \\\"notable problem\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(INFO):\\n            self._log(INFO, msg, args, **kwargs)\\n\\n    def warning(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with severity 'WARNING'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.warning(\\\"Houston, we have a %s\\\", \\\"bit of a problem\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(WARNING):\\n            self._log(WARNING, msg, args, **kwargs)\\n\\n    def warn(self, msg, *args, **kwargs):\\n        warnings.warn(\\\"The 'warn' method is deprecated, \\\"\\n            \\\"use 'warning' instead\\\", DeprecationWarning, 2)\\n        self.warning(msg, *args, **kwargs)\\n\\n    def error(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with severity 'ERROR'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.error(\\\"Houston, we have a %s\\\", \\\"major problem\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(ERROR):\\n            self._log(ERROR, msg, args, **kwargs)\\n\\n    def exception(self, msg, *args, exc_info=True, **kwargs):\\n        \\\"\\\"\\\"\\n        Convenience method for logging an ERROR with exception information.\\n        \\\"\\\"\\\"\\n        self.error(msg, *args, exc_info=exc_info, **kwargs)\\n\\n    def critical(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with severity 'CRITICAL'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.critical(\\\"Houston, we have a %s\\\", \\\"major disaster\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(CRITICAL):\\n            self._log(CRITICAL, msg, args, **kwargs)\\n\\n    def fatal(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Don't use this method, use critical() instead.\\n        \\\"\\\"\\\"\\n        self.critical(msg, *args, **kwargs)\\n\\n    def log(self, level, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Log 'msg % args' with the integer severity 'level'.\\n\\n        To pass exception information, use the keyword argument exc_info with\\n        a true value, e.g.\\n\\n        logger.log(level, \\\"We have a %s\\\", \\\"mysterious problem\\\", exc_info=True)\\n        \\\"\\\"\\\"\\n        if not isinstance(level, int):\\n            if raiseExceptions:\\n                raise TypeError(\\\"level must be an integer\\\")\\n            else:\\n                return\\n        if self.isEnabledFor(level):\\n            self._log(level, msg, args, **kwargs)\\n\\n    def findCaller(self, stack_info=False, stacklevel=1):\\n        \\\"\\\"\\\"\\n        Find the stack frame of the caller so that we can note the source\\n        file name, line number and function name.\\n        \\\"\\\"\\\"\\n        f = currentframe()\\n        #On some versions of IronPython, currentframe() returns None if\\n        #IronPython isn't run with -X:Frames.\\n        if f is None:\\n            return \\\"(unknown file)\\\", 0, \\\"(unknown function)\\\", None\\n        while stacklevel > 0:\\n            next_f = f.f_back\\n            if next_f is None:\\n                ## We've got options here.\\n                ## If we want to use the last (deepest) frame:\\n                break\\n                ## If we want to mimic the warnings module:\\n                #return (\\\"sys\\\", 1, \\\"(unknown function)\\\", None)\\n                ## If we want to be pedantic:\\n                #raise ValueError(\\\"call stack is not deep enough\\\")\\n            f = next_f\\n            if not _is_internal_frame(f):\\n                stacklevel -= 1\\n        co = f.f_code\\n        sinfo = None\\n        if stack_info:\\n            with io.StringIO() as sio:\\n                sio.write(\\\"Stack (most recent call last):\\\\n\\\")\\n                traceback.print_stack(f, file=sio)\\n                sinfo = sio.getvalue()\\n                if sinfo[-1] == '\\\\n':\\n                    sinfo = sinfo[:-1]\\n        return co.co_filename, f.f_lineno, co.co_name, sinfo\\n\\n    def makeRecord(self, name, level, fn, lno, msg, args, exc_info,\\n                   func=None, extra=None, sinfo=None):\\n        \\\"\\\"\\\"\\n        A factory method which can be overridden in subclasses to create\\n        specialized LogRecords.\\n        \\\"\\\"\\\"\\n        rv = _logRecordFactory(name, level, fn, lno, msg, args, exc_info, func,\\n                             sinfo)\\n        if extra is not None:\\n            for key in extra:\\n                if (key in [\\\"message\\\", \\\"asctime\\\"]) or (key in rv.__dict__):\\n                    raise KeyError(\\\"Attempt to overwrite %r in LogRecord\\\" % key)\\n                rv.__dict__[key] = extra[key]\\n        return rv\\n\\n    def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False,\\n             stacklevel=1):\\n        \\\"\\\"\\\"\\n        Low-level logging routine which creates a LogRecord and then calls\\n        all the handlers of this logger to handle the record.\\n        \\\"\\\"\\\"\\n        sinfo = None\\n        if _srcfile:\\n            #IronPython doesn't track Python frames, so findCaller raises an\\n            #exception on some versions of IronPython. We trap it here so that\\n            #IronPython can use logging.\\n            try:\\n                fn, lno, func, sinfo = self.findCaller(stack_info, stacklevel)\\n            except ValueError: # pragma: no cover\\n                fn, lno, func = \\\"(unknown file)\\\", 0, \\\"(unknown function)\\\"\\n        else: # pragma: no cover\\n            fn, lno, func = \\\"(unknown file)\\\", 0, \\\"(unknown function)\\\"\\n        if exc_info:\\n            if isinstance(exc_info, BaseException):\\n                exc_info = (type(exc_info), exc_info, exc_info.__traceback__)\\n            elif not isinstance(exc_info, tuple):\\n                exc_info = sys.exc_info()\\n        record = self.makeRecord(self.name, level, fn, lno, msg, args,\\n                                 exc_info, func, extra, sinfo)\\n        self.handle(record)\\n\\n    def handle(self, record):\\n        \\\"\\\"\\\"\\n        Call the handlers for the specified record.\\n\\n        This method is used for unpickled records received from a socket, as\\n        well as those created locally. Logger-level filtering is applied.\\n        \\\"\\\"\\\"\\n        if self.disabled:\\n            return\\n        maybe_record = self.filter(record)\\n        if not maybe_record:\\n            return\\n        if isinstance(maybe_record, LogRecord):\\n            record = maybe_record\\n        self.callHandlers(record)\\n\\n    def addHandler(self, hdlr):\\n        \\\"\\\"\\\"\\n        Add the specified handler to this logger.\\n        \\\"\\\"\\\"\\n        _acquireLock()\\n        try:\\n            if not (hdlr in self.handlers):\\n                self.handlers.append(hdlr)\\n        finally:\\n            _releaseLock()\\n\\n    def removeHandler(self, hdlr):\\n        \\\"\\\"\\\"\\n        Remove the specified handler from this logger.\\n        \\\"\\\"\\\"\\n        _acquireLock()\\n        try:\\n            if hdlr in self.handlers:\\n                self.handlers.remove(hdlr)\\n        finally:\\n            _releaseLock()\\n\\n    def hasHandlers(self):\\n        \\\"\\\"\\\"\\n        See if this logger has any handlers configured.\\n\\n        Loop through all handlers for this logger and its parents in the\\n        logger hierarchy. Return True if a handler was found, else False.\\n        Stop searching up the hierarchy whenever a logger with the \\\"propagate\\\"\\n        attribute set to zero is found - that will be the last logger which\\n        is checked for the existence of handlers.\\n        \\\"\\\"\\\"\\n        c = self\\n        rv = False\\n        while c:\\n            if c.handlers:\\n                rv = True\\n                break\\n            if not c.propagate:\\n                break\\n            else:\\n                c = c.parent\\n        return rv\\n\\n    def callHandlers(self, record):\\n        \\\"\\\"\\\"\\n        Pass a record to all relevant handlers.\\n\\n        Loop through all handlers for this logger and its parents in the\\n        logger hierarchy. If no handler was found, output a one-off error\\n        message to sys.stderr. Stop searching up the hierarchy whenever a\\n        logger with the \\\"propagate\\\" attribute set to zero is found - that\\n        will be the last logger whose handlers are called.\\n        \\\"\\\"\\\"\\n        c = self\\n        found = 0\\n        while c:\\n            for hdlr in c.handlers:\\n                found = found + 1\\n                if record.levelno >= hdlr.level:\\n                    hdlr.handle(record)\\n            if not c.propagate:\\n                c = None    #break out\\n            else:\\n                c = c.parent\\n        if (found == 0):\\n            if lastResort:\\n                if record.levelno >= lastResort.level:\\n                    lastResort.handle(record)\\n            elif raiseExceptions and not self.manager.emittedNoHandlerWarning:\\n                sys.stderr.write(\\\"No handlers could be found for logger\\\"\\n                                 \\\" \\\\\\\"%s\\\\\\\"\\\\n\\\" % self.name)\\n                self.manager.emittedNoHandlerWarning = True\\n\\n    def getEffectiveLevel(self):\\n        \\\"\\\"\\\"\\n        Get the effective level for this logger.\\n\\n        Loop through this logger and its parents in the logger hierarchy,\\n        looking for a non-zero logging level. Return the first one found.\\n        \\\"\\\"\\\"\\n        logger = self\\n        while logger:\\n            if logger.level:\\n                return logger.level\\n            logger = logger.parent\\n        return NOTSET\\n\\n    def isEnabledFor(self, level):\\n        \\\"\\\"\\\"\\n        Is this logger enabled for level 'level'?\\n        \\\"\\\"\\\"\\n        if self.disabled:\\n            return False\\n\\n        try:\\n            return self._cache[level]\\n        except KeyError:\\n            _acquireLock()\\n            try:\\n                if self.manager.disable >= level:\\n                    is_enabled = self._cache[level] = False\\n                else:\\n                    is_enabled = self._cache[level] = (\\n                        level >= self.getEffectiveLevel()\\n                    )\\n            finally:\\n                _releaseLock()\\n            return is_enabled\\n\\n    def getChild(self, suffix):\\n        \\\"\\\"\\\"\\n        Get a logger which is a descendant to this one.\\n\\n        This is a convenience method, such that\\n\\n        logging.getLogger('abc').getChild('def.ghi')\\n\\n        is the same as\\n\\n        logging.getLogger('abc.def.ghi')\\n\\n        It's useful, for example, when the parent logger is named using\\n        __name__ rather than a literal string.\\n        \\\"\\\"\\\"\\n        if self.root is not self:\\n            suffix = '.'.join((self.name, suffix))\\n        return self.manager.getLogger(suffix)\\n\\n    def getChildren(self):\\n\\n        def _hierlevel(logger):\\n            if logger is logger.manager.root:\\n                return 0\\n            return 1 + logger.name.count('.')\\n\\n        d = self.manager.loggerDict\\n        _acquireLock()\\n        try:\\n            # exclude PlaceHolders - the last check is to ensure that lower-level\\n            # descendants aren't returned - if there are placeholders, a logger's\\n            # parent field might point to a grandparent or ancestor thereof.\\n            return set(item for item in d.values()\\n                       if isinstance(item, Logger) and item.parent is self and\\n                       _hierlevel(item) == 1 + _hierlevel(item.parent))\\n        finally:\\n            _releaseLock()\\n\\n    def __repr__(self):\\n        level = getLevelName(self.getEffectiveLevel())\\n        return '<%s %s (%s)>' % (self.__class__.__name__, self.name, level)\\n\\n    def __reduce__(self):\\n        if getLogger(self.name) is not self:\\n            import pickle\\n            raise pickle.PicklingError('logger cannot be pickled')\\n        return getLogger, (self.name,)\\n\\n\\nclass RootLogger(Logger):\\n    \\\"\\\"\\\"\\n    A root logger is not that different to any other logger, except that\\n    it must have a logging level and there is only one instance of it in\\n    the hierarchy.\\n    \\\"\\\"\\\"\\n    def __init__(self, level):\\n        \\\"\\\"\\\"\\n        Initialize the logger with the name \\\"root\\\".\\n        \\\"\\\"\\\"\\n        Logger.__init__(self, \\\"root\\\", level)\\n\\n    def __reduce__(self):\\n        return getLogger, ()\\n\\n_loggerClass = Logger\\n\\nclass LoggerAdapter(object):\\n    \\\"\\\"\\\"\\n    An adapter for loggers which makes it easier to specify contextual\\n    information in logging output.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, logger, extra=None):\\n        \\\"\\\"\\\"\\n        Initialize the adapter with a logger and a dict-like object which\\n        provides contextual information. This constructor signature allows\\n        easy stacking of LoggerAdapters, if so desired.\\n\\n        You can effectively pass keyword arguments as shown in the\\n        following example:\\n\\n        adapter = LoggerAdapter(someLogger, dict(p1=v1, p2=\\\"v2\\\"))\\n        \\\"\\\"\\\"\\n        self.logger = logger\\n        self.extra = extra\\n\\n    def process(self, msg, kwargs):\\n        \\\"\\\"\\\"\\n        Process the logging message and keyword arguments passed in to\\n        a logging call to insert contextual information. You can either\\n        manipulate the message itself, the keyword args or both. Return\\n        the message and kwargs modified (or not) to suit your needs.\\n\\n        Normally, you'll only need to override this one method in a\\n        LoggerAdapter subclass for your specific needs.\\n        \\\"\\\"\\\"\\n        kwargs[\\\"extra\\\"] = self.extra\\n        return msg, kwargs\\n\\n    #\\n    # Boilerplate convenience methods\\n    #\\n    def debug(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate a debug call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(DEBUG, msg, *args, **kwargs)\\n\\n    def info(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate an info call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(INFO, msg, *args, **kwargs)\\n\\n    def warning(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate a warning call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(WARNING, msg, *args, **kwargs)\\n\\n    def warn(self, msg, *args, **kwargs):\\n        warnings.warn(\\\"The 'warn' method is deprecated, \\\"\\n            \\\"use 'warning' instead\\\", DeprecationWarning, 2)\\n        self.warning(msg, *args, **kwargs)\\n\\n    def error(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate an error call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(ERROR, msg, *args, **kwargs)\\n\\n    def exception(self, msg, *args, exc_info=True, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate an exception call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(ERROR, msg, *args, exc_info=exc_info, **kwargs)\\n\\n    def critical(self, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate a critical call to the underlying logger.\\n        \\\"\\\"\\\"\\n        self.log(CRITICAL, msg, *args, **kwargs)\\n\\n    def log(self, level, msg, *args, **kwargs):\\n        \\\"\\\"\\\"\\n        Delegate a log call to the underlying logger, after adding\\n        contextual information from this adapter instance.\\n        \\\"\\\"\\\"\\n        if self.isEnabledFor(level):\\n            msg, kwargs = self.process(msg, kwargs)\\n            self.logger.log(level, msg, *args, **kwargs)\\n\\n    def isEnabledFor(self, level):\\n        \\\"\\\"\\\"\\n        Is this logger enabled for level 'level'?\\n        \\\"\\\"\\\"\\n        return self.logger.isEnabledFor(level)\\n\\n    def setLevel(self, level):\\n        \\\"\\\"\\\"\\n        Set the specified level on the underlying logger.\\n        \\\"\\\"\\\"\\n        self.logger.setLevel(level)\\n\\n    def getEffectiveLevel(self):\\n        \\\"\\\"\\\"\\n        Get the effective level for the underlying logger.\\n        \\\"\\\"\\\"\\n        return self.logger.getEffectiveLevel()\\n\\n    def hasHandlers(self):\\n        \\\"\\\"\\\"\\n        See if the underlying logger has any handlers.\\n        \\\"\\\"\\\"\\n        return self.logger.hasHandlers()\\n\\n    def _log(self, level, msg, args, **kwargs):\\n        \\\"\\\"\\\"\\n        Low-level log implementation, proxied to allow nested logger adapters.\\n        \\\"\\\"\\\"\\n        return self.logger._log(level, msg, args, **kwargs)\\n\\n    @property\\n    def manager(self):\\n        return self.logger.manager\\n\\n    @manager.setter\\n    def manager(self, value):\\n        self.logger.manager = value\\n\\n    @property\\n    def name(self):\\n        return self.logger.name\\n\\n    def __repr__(self):\\n        logger = self.logger\\n        level = getLevelName(logger.getEffectiveLevel())\\n        return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\nroot = RootLogger(WARNING)\\nLogger.root = root\\nLogger.manager = Manager(Logger.root)\\n\\n#---------------------------------------------------------------------------\\n# Configuration classes and functions\\n#---------------------------------------------------------------------------\\n\\ndef basicConfig(**kwargs):\\n    \\\"\\\"\\\"\\n    Do basic configuration for the logging system.\\n\\n    This function does nothing if the root logger already has handlers\\n    configured, unless the keyword argument *force* is set to ``True``.\\n    It is a convenience method intended for use by simple scripts\\n    to do one-shot configuration of the logging package.\\n\\n    The default behaviour is to create a StreamHandler which writes to\\n    sys.stderr, set a formatter using the BASIC_FORMAT format string, and\\n    add the handler to the root logger.\\n\\n    A number of optional keyword arguments may be specified, which can alter\\n    the default behaviour.\\n\\n    filename  Specifies that a FileHandler be created, using the specified\\n              filename, rather than a StreamHandler.\\n    filemode  Specifies the mode to open the file, if filename is specified\\n              (if filemode is unspecified, it defaults to 'a').\\n    format    Use the specified format string for the handler.\\n    datefmt   Use the specified date/time format.\\n    style     If a format string is specified, use this to specify the\\n              type of format string (possible values '%', '{', '$', for\\n              %-formatting, :meth:`str.format` and :class:`string.Template`\\n              - defaults to '%').\\n    level     Set the root logger level to the specified level.\\n    stream    Use the specified stream to initialize the StreamHandler. Note\\n              that this argument is incompatible with 'filename' - if both\\n              are present, 'stream' is ignored.\\n    handlers  If specified, this should be an iterable of already created\\n              handlers, which will be added to the root logger. Any handler\\n              in the list which does not have a formatter assigned will be\\n              assigned the formatter created in this function.\\n    force     If this keyword  is specified as true, any existing handlers\\n              attached to the root logger are removed and closed, before\\n              carrying out the configuration as specified by the other\\n              arguments.\\n    encoding  If specified together with a filename, this encoding is passed to\\n              the created FileHandler, causing it to be used when the file is\\n              opened.\\n    errors    If specified together with a filename, this value is passed to the\\n              created FileHandler, causing it to be used when the file is\\n              opened in text mode. If not specified, the default value is\\n              `backslashreplace`.\\n\\n    Note that you could specify a stream created using open(filename, mode)\\n    rather than passing the filename and mode in. However, it should be\\n    remembered that StreamHandler does not close its stream (since it may be\\n    using sys.stdout or sys.stderr), whereas FileHandler closes its stream\\n    when the handler is closed.\\n\\n    .. versionchanged:: 3.2\\n       Added the ``style`` parameter.\\n\\n    .. versionchanged:: 3.3\\n       Added the ``handlers`` parameter. A ``ValueError`` is now thrown for\\n       incompatible arguments (e.g. ``handlers`` specified together with\\n       ``filename``/``filemode``, or ``filename``/``filemode`` specified\\n       together with ``stream``, or ``handlers`` specified together with\\n       ``stream``.\\n\\n    .. versionchanged:: 3.8\\n       Added the ``force`` parameter.\\n\\n    .. versionchanged:: 3.9\\n       Added the ``encoding`` and ``errors`` parameters.\\n    \\\"\\\"\\\"\\n    # Add thread safety in case someone mistakenly calls\\n    # basicConfig() from multiple threads\\n    _acquireLock()\\n    try:\\n        force = kwargs.pop('force', False)\\n        encoding = kwargs.pop('encoding', None)\\n        errors = kwargs.pop('errors', 'backslashreplace')\\n        if force:\\n            for h in root.handlers[:]:\\n                root.removeHandler(h)\\n                h.close()\\n        if len(root.handlers) == 0:\\n            handlers = kwargs.pop(\\\"handlers\\\", None)\\n            if handlers is None:\\n                if \\\"stream\\\" in kwargs and \\\"filename\\\" in kwargs:\\n                    raise ValueError(\\\"'stream' and 'filename' should not be \\\"\\n                                     \\\"specified together\\\")\\n            else:\\n                if \\\"stream\\\" in kwargs or \\\"filename\\\" in kwargs:\\n                    raise ValueError(\\\"'stream' or 'filename' should not be \\\"\\n                                     \\\"specified together with 'handlers'\\\")\\n            if handlers is None:\\n                filename = kwargs.pop(\\\"filename\\\", None)\\n                mode = kwargs.pop(\\\"filemode\\\", 'a')\\n                if filename:\\n                    if 'b' in mode:\\n                        errors = None\\n                    else:\\n                        encoding = io.text_encoding(encoding)\\n                    h = FileHandler(filename, mode,\\n                                    encoding=encoding, errors=errors)\\n                else:\\n                    stream = kwargs.pop(\\\"stream\\\", None)\\n                    h = StreamHandler(stream)\\n                handlers = [h]\\n            dfs = kwargs.pop(\\\"datefmt\\\", None)\\n            style = kwargs.pop(\\\"style\\\", '%')\\n            if style not in _STYLES:\\n                raise ValueError('Style must be one of: %s' % ','.join(\\n                                 _STYLES.keys()))\\n            fs = kwargs.pop(\\\"format\\\", _STYLES[style][1])\\n            fmt = Formatter(fs, dfs, style)\\n            for h in handlers:\\n                if h.formatter is None:\\n                    h.setFormatter(fmt)\\n                root.addHandler(h)\\n            level = kwargs.pop(\\\"level\\\", None)\\n            if level is not None:\\n                root.setLevel(level)\\n            if kwargs:\\n                keys = ', '.join(kwargs.keys())\\n                raise ValueError('Unrecognised argument(s): %s' % keys)\\n    finally:\\n        _releaseLock()\\n\\n#---------------------------------------------------------------------------\\n# Utility functions at module level.\\n# Basically delegate everything to the root logger.\\n#---------------------------------------------------------------------------\\n\\ndef getLogger(name=None):\\n    \\\"\\\"\\\"\\n    Return a logger with the specified name, creating it if necessary.\\n\\n    If no name is specified, return the root logger.\\n    \\\"\\\"\\\"\\n    if not name or isinstance(name, str) and name == root.name:\\n        return root\\n    return Logger.manager.getLogger(name)\\n\\ndef critical(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'CRITICAL' on the root logger. If the logger\\n    has no handlers, call basicConfig() to add a console handler with a\\n    pre-defined format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.critical(msg, *args, **kwargs)\\n\\ndef fatal(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Don't use this function, use critical() instead.\\n    \\\"\\\"\\\"\\n    critical(msg, *args, **kwargs)\\n\\ndef error(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'ERROR' on the root logger. If the logger has\\n    no handlers, call basicConfig() to add a console handler with a pre-defined\\n    format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.error(msg, *args, **kwargs)\\n\\ndef exception(msg, *args, exc_info=True, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'ERROR' on the root logger, with exception\\n    information. If the logger has no handlers, basicConfig() is called to add\\n    a console handler with a pre-defined format.\\n    \\\"\\\"\\\"\\n    error(msg, *args, exc_info=exc_info, **kwargs)\\n\\ndef warning(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'WARNING' on the root logger. If the logger has\\n    no handlers, call basicConfig() to add a console handler with a pre-defined\\n    format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.warning(msg, *args, **kwargs)\\n\\ndef warn(msg, *args, **kwargs):\\n    warnings.warn(\\\"The 'warn' function is deprecated, \\\"\\n        \\\"use 'warning' instead\\\", DeprecationWarning, 2)\\n    warning(msg, *args, **kwargs)\\n\\ndef info(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'INFO' on the root logger. If the logger has\\n    no handlers, call basicConfig() to add a console handler with a pre-defined\\n    format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.info(msg, *args, **kwargs)\\n\\ndef debug(msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log a message with severity 'DEBUG' on the root logger. If the logger has\\n    no handlers, call basicConfig() to add a console handler with a pre-defined\\n    format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.debug(msg, *args, **kwargs)\\n\\ndef log(level, msg, *args, **kwargs):\\n    \\\"\\\"\\\"\\n    Log 'msg % args' with the integer severity 'level' on the root logger. If\\n    the logger has no handlers, call basicConfig() to add a console handler\\n    with a pre-defined format.\\n    \\\"\\\"\\\"\\n    if len(root.handlers) == 0:\\n        basicConfig()\\n    root.log(level, msg, *args, **kwargs)\\n\\ndef disable(level=CRITICAL):\\n    \\\"\\\"\\\"\\n    Disable all logging calls of severity 'level' and below.\\n    \\\"\\\"\\\"\\n    root.manager.disable = level\\n    root.manager._clear_cache()\\n\\ndef shutdown(handlerList=_handlerList):\\n    \\\"\\\"\\\"\\n    Perform any cleanup actions in the logging system (e.g. flushing\\n    buffers).\\n\\n    Should be called at application exit.\\n    \\\"\\\"\\\"\\n    for wr in reversed(handlerList[:]):\\n        #errors might occur, for example, if files are locked\\n        #we just ignore them if raiseExceptions is not set\\n        try:\\n            h = wr()\\n            if h:\\n                try:\\n                    h.acquire()\\n                    # MemoryHandlers might not want to be flushed on close,\\n                    # but circular imports prevent us scoping this to just\\n                    # those handlers.  hence the default to True.\\n                    if getattr(h, 'flushOnClose', True):\\n                        h.flush()\\n                    h.close()\\n                except (OSError, ValueError):\\n                    # Ignore errors which might be caused\\n                    # because handlers have been closed but\\n                    # references to them are still around at\\n                    # application exit.\\n                    pass\\n                finally:\\n                    h.release()\\n        except: # ignore everything, as we're shutting down\\n            if raiseExceptions:\\n                raise\\n            #else, swallow\\n\\n#Let's try and shutdown automatically on application exit...\\nimport atexit\\natexit.register(shutdown)\\n\\n# Null handler\\n\\nclass NullHandler(Handler):\\n    \\\"\\\"\\\"\\n    This handler does nothing. It's intended to be used to avoid the\\n    \\\"No handlers could be found for logger XXX\\\" one-off warning. This is\\n    important for library code, which may contain code to log events. If a user\\n    of the library does not configure logging, the one-off warning might be\\n    produced; to avoid this, the library developer simply needs to instantiate\\n    a NullHandler and add it to the top-level logger of the library module or\\n    package.\\n    \\\"\\\"\\\"\\n    def handle(self, record):\\n        \\\"\\\"\\\"Stub.\\\"\\\"\\\"\\n\\n    def emit(self, record):\\n        \\\"\\\"\\\"Stub.\\\"\\\"\\\"\\n\\n    def createLock(self):\\n        self.lock = None\\n\\n    def _at_fork_reinit(self):\\n        pass\\n\\n# Warnings integration\\n\\n_warnings_showwarning = None\\n\\ndef _showwarning(message, category, filename, lineno, file=None, line=None):\\n    \\\"\\\"\\\"\\n    Implementation of showwarnings which redirects to logging, which will first\\n    check to see if the file parameter is None. If a file is specified, it will\\n    delegate to the original warnings implementation of showwarning. Otherwise,\\n    it will call warnings.formatwarning and will log the resulting string to a\\n    warnings logger named \\\"py.warnings\\\" with level logging.WARNING.\\n    \\\"\\\"\\\"\\n    if file is not None:\\n        if _warnings_showwarning is not None:\\n            _warnings_showwarning(message, category, filename, lineno, file, line)\\n    else:\\n        s = warnings.formatwarning(message, category, filename, lineno, line)\\n        logger = getLogger(\\\"py.warnings\\\")\\n        if not logger.handlers:\\n            logger.addHandler(NullHandler())\\n        # bpo-46557: Log str(s) as msg instead of logger.warning(\\\"%s\\\", s)\\n        # since some log aggregation tools group logs by the msg arg\\n        logger.warning(str(s))\\n\\ndef captureWarnings(capture):\\n    \\\"\\\"\\\"\\n    If capture is true, redirect all warnings to the logging package.\\n    If capture is False, ensure that warnings are not redirected to logging\\n    but to their original destinations.\\n    \\\"\\\"\\\"\\n    global _warnings_showwarning\\n    if capture:\\n        if _warnings_showwarning is None:\\n            _warnings_showwarning = warnings.showwarning\\n            warnings.showwarning = _showwarning\\n    else:\\n        if _warnings_showwarning is not None:\\n            warnings.showwarning = _warnings_showwarning\\n            _warnings_showwarning = None\\n\", 2345], \"/usr/lib/python3.12/socket.py\": [\"# Wrapper module for _socket, providing some additional facilities\\n# implemented in Python.\\n\\n\\\"\\\"\\\"\\\\\\nThis module provides socket operations and some related functions.\\nOn Unix, it supports IP (Internet Protocol) and Unix domain sockets.\\nOn other systems, it only supports IP. Functions specific for a\\nsocket are available as methods of the socket object.\\n\\nFunctions:\\n\\nsocket() -- create a new socket object\\nsocketpair() -- create a pair of new socket objects [*]\\nfromfd() -- create a socket object from an open file descriptor [*]\\nsend_fds() -- Send file descriptor to the socket.\\nrecv_fds() -- Receive file descriptors from the socket.\\nfromshare() -- create a socket object from data received from socket.share() [*]\\ngethostname() -- return the current hostname\\ngethostbyname() -- map a hostname to its IP number\\ngethostbyaddr() -- map an IP number or hostname to DNS info\\ngetservbyname() -- map a service name and a protocol name to a port number\\ngetprotobyname() -- map a protocol name (e.g. 'tcp') to a number\\nntohs(), ntohl() -- convert 16, 32 bit int from network to host byte order\\nhtons(), htonl() -- convert 16, 32 bit int from host to network byte order\\ninet_aton() -- convert IP addr string (123.45.67.89) to 32-bit packed format\\ninet_ntoa() -- convert 32-bit packed format IP to string (123.45.67.89)\\nsocket.getdefaulttimeout() -- get the default timeout value\\nsocket.setdefaulttimeout() -- set the default timeout value\\ncreate_connection() -- connects to an address, with an optional timeout and\\n                       optional source address.\\ncreate_server() -- create a TCP socket and bind it to a specified address.\\n\\n [*] not available on all platforms!\\n\\nSpecial objects:\\n\\nSocketType -- type object for socket objects\\nerror -- exception raised for I/O errors\\nhas_ipv6 -- boolean value indicating if IPv6 is supported\\n\\nIntEnum constants:\\n\\nAF_INET, AF_UNIX -- socket domains (first argument to socket() call)\\nSOCK_STREAM, SOCK_DGRAM, SOCK_RAW -- socket types (second argument)\\n\\nInteger constants:\\n\\nMany other constants may be defined; these may be used in calls to\\nthe setsockopt() and getsockopt() methods.\\n\\\"\\\"\\\"\\n\\nimport _socket\\nfrom _socket import *\\n\\nimport os, sys, io, selectors\\nfrom enum import IntEnum, IntFlag\\n\\ntry:\\n    import errno\\nexcept ImportError:\\n    errno = None\\nEBADF = getattr(errno, 'EBADF', 9)\\nEAGAIN = getattr(errno, 'EAGAIN', 11)\\nEWOULDBLOCK = getattr(errno, 'EWOULDBLOCK', 11)\\n\\n__all__ = [\\\"fromfd\\\", \\\"getfqdn\\\", \\\"create_connection\\\", \\\"create_server\\\",\\n           \\\"has_dualstack_ipv6\\\", \\\"AddressFamily\\\", \\\"SocketKind\\\"]\\n__all__.extend(os._get_exports_list(_socket))\\n\\n# Set up the socket.AF_* socket.SOCK_* constants as members of IntEnums for\\n# nicer string representations.\\n# Note that _socket only knows about the integer values. The public interface\\n# in this module understands the enums and translates them back from integers\\n# where needed (e.g. .family property of a socket object).\\n\\nIntEnum._convert_(\\n        'AddressFamily',\\n        __name__,\\n        lambda C: C.isupper() and C.startswith('AF_'))\\n\\nIntEnum._convert_(\\n        'SocketKind',\\n        __name__,\\n        lambda C: C.isupper() and C.startswith('SOCK_'))\\n\\nIntFlag._convert_(\\n        'MsgFlag',\\n        __name__,\\n        lambda C: C.isupper() and C.startswith('MSG_'))\\n\\nIntFlag._convert_(\\n        'AddressInfo',\\n        __name__,\\n        lambda C: C.isupper() and C.startswith('AI_'))\\n\\n_LOCALHOST    = '127.0.0.1'\\n_LOCALHOST_V6 = '::1'\\n\\n\\ndef _intenum_converter(value, enum_klass):\\n    \\\"\\\"\\\"Convert a numeric family value to an IntEnum member.\\n\\n    If it's not a known member, return the numeric value itself.\\n    \\\"\\\"\\\"\\n    try:\\n        return enum_klass(value)\\n    except ValueError:\\n        return value\\n\\n\\n# WSA error codes\\nif sys.platform.lower().startswith(\\\"win\\\"):\\n    errorTab = {}\\n    errorTab[6] = \\\"Specified event object handle is invalid.\\\"\\n    errorTab[8] = \\\"Insufficient memory available.\\\"\\n    errorTab[87] = \\\"One or more parameters are invalid.\\\"\\n    errorTab[995] = \\\"Overlapped operation aborted.\\\"\\n    errorTab[996] = \\\"Overlapped I/O event object not in signaled state.\\\"\\n    errorTab[997] = \\\"Overlapped operation will complete later.\\\"\\n    errorTab[10004] = \\\"The operation was interrupted.\\\"\\n    errorTab[10009] = \\\"A bad file handle was passed.\\\"\\n    errorTab[10013] = \\\"Permission denied.\\\"\\n    errorTab[10014] = \\\"A fault occurred on the network??\\\"  # WSAEFAULT\\n    errorTab[10022] = \\\"An invalid operation was attempted.\\\"\\n    errorTab[10024] = \\\"Too many open files.\\\"\\n    errorTab[10035] = \\\"The socket operation would block.\\\"\\n    errorTab[10036] = \\\"A blocking operation is already in progress.\\\"\\n    errorTab[10037] = \\\"Operation already in progress.\\\"\\n    errorTab[10038] = \\\"Socket operation on nonsocket.\\\"\\n    errorTab[10039] = \\\"Destination address required.\\\"\\n    errorTab[10040] = \\\"Message too long.\\\"\\n    errorTab[10041] = \\\"Protocol wrong type for socket.\\\"\\n    errorTab[10042] = \\\"Bad protocol option.\\\"\\n    errorTab[10043] = \\\"Protocol not supported.\\\"\\n    errorTab[10044] = \\\"Socket type not supported.\\\"\\n    errorTab[10045] = \\\"Operation not supported.\\\"\\n    errorTab[10046] = \\\"Protocol family not supported.\\\"\\n    errorTab[10047] = \\\"Address family not supported by protocol family.\\\"\\n    errorTab[10048] = \\\"The network address is in use.\\\"\\n    errorTab[10049] = \\\"Cannot assign requested address.\\\"\\n    errorTab[10050] = \\\"Network is down.\\\"\\n    errorTab[10051] = \\\"Network is unreachable.\\\"\\n    errorTab[10052] = \\\"Network dropped connection on reset.\\\"\\n    errorTab[10053] = \\\"Software caused connection abort.\\\"\\n    errorTab[10054] = \\\"The connection has been reset.\\\"\\n    errorTab[10055] = \\\"No buffer space available.\\\"\\n    errorTab[10056] = \\\"Socket is already connected.\\\"\\n    errorTab[10057] = \\\"Socket is not connected.\\\"\\n    errorTab[10058] = \\\"The network has been shut down.\\\"\\n    errorTab[10059] = \\\"Too many references.\\\"\\n    errorTab[10060] = \\\"The operation timed out.\\\"\\n    errorTab[10061] = \\\"Connection refused.\\\"\\n    errorTab[10062] = \\\"Cannot translate name.\\\"\\n    errorTab[10063] = \\\"The name is too long.\\\"\\n    errorTab[10064] = \\\"The host is down.\\\"\\n    errorTab[10065] = \\\"The host is unreachable.\\\"\\n    errorTab[10066] = \\\"Directory not empty.\\\"\\n    errorTab[10067] = \\\"Too many processes.\\\"\\n    errorTab[10068] = \\\"User quota exceeded.\\\"\\n    errorTab[10069] = \\\"Disk quota exceeded.\\\"\\n    errorTab[10070] = \\\"Stale file handle reference.\\\"\\n    errorTab[10071] = \\\"Item is remote.\\\"\\n    errorTab[10091] = \\\"Network subsystem is unavailable.\\\"\\n    errorTab[10092] = \\\"Winsock.dll version out of range.\\\"\\n    errorTab[10093] = \\\"Successful WSAStartup not yet performed.\\\"\\n    errorTab[10101] = \\\"Graceful shutdown in progress.\\\"\\n    errorTab[10102] = \\\"No more results from WSALookupServiceNext.\\\"\\n    errorTab[10103] = \\\"Call has been canceled.\\\"\\n    errorTab[10104] = \\\"Procedure call table is invalid.\\\"\\n    errorTab[10105] = \\\"Service provider is invalid.\\\"\\n    errorTab[10106] = \\\"Service provider failed to initialize.\\\"\\n    errorTab[10107] = \\\"System call failure.\\\"\\n    errorTab[10108] = \\\"Service not found.\\\"\\n    errorTab[10109] = \\\"Class type not found.\\\"\\n    errorTab[10110] = \\\"No more results from WSALookupServiceNext.\\\"\\n    errorTab[10111] = \\\"Call was canceled.\\\"\\n    errorTab[10112] = \\\"Database query was refused.\\\"\\n    errorTab[11001] = \\\"Host not found.\\\"\\n    errorTab[11002] = \\\"Nonauthoritative host not found.\\\"\\n    errorTab[11003] = \\\"This is a nonrecoverable error.\\\"\\n    errorTab[11004] = \\\"Valid name, no data record requested type.\\\"\\n    errorTab[11005] = \\\"QoS receivers.\\\"\\n    errorTab[11006] = \\\"QoS senders.\\\"\\n    errorTab[11007] = \\\"No QoS senders.\\\"\\n    errorTab[11008] = \\\"QoS no receivers.\\\"\\n    errorTab[11009] = \\\"QoS request confirmed.\\\"\\n    errorTab[11010] = \\\"QoS admission error.\\\"\\n    errorTab[11011] = \\\"QoS policy failure.\\\"\\n    errorTab[11012] = \\\"QoS bad style.\\\"\\n    errorTab[11013] = \\\"QoS bad object.\\\"\\n    errorTab[11014] = \\\"QoS traffic control error.\\\"\\n    errorTab[11015] = \\\"QoS generic error.\\\"\\n    errorTab[11016] = \\\"QoS service type error.\\\"\\n    errorTab[11017] = \\\"QoS flowspec error.\\\"\\n    errorTab[11018] = \\\"Invalid QoS provider buffer.\\\"\\n    errorTab[11019] = \\\"Invalid QoS filter style.\\\"\\n    errorTab[11020] = \\\"Invalid QoS filter style.\\\"\\n    errorTab[11021] = \\\"Incorrect QoS filter count.\\\"\\n    errorTab[11022] = \\\"Invalid QoS object length.\\\"\\n    errorTab[11023] = \\\"Incorrect QoS flow count.\\\"\\n    errorTab[11024] = \\\"Unrecognized QoS object.\\\"\\n    errorTab[11025] = \\\"Invalid QoS policy object.\\\"\\n    errorTab[11026] = \\\"Invalid QoS flow descriptor.\\\"\\n    errorTab[11027] = \\\"Invalid QoS provider-specific flowspec.\\\"\\n    errorTab[11028] = \\\"Invalid QoS provider-specific filterspec.\\\"\\n    errorTab[11029] = \\\"Invalid QoS shape discard mode object.\\\"\\n    errorTab[11030] = \\\"Invalid QoS shaping rate object.\\\"\\n    errorTab[11031] = \\\"Reserved policy QoS element type.\\\"\\n    __all__.append(\\\"errorTab\\\")\\n\\n\\nclass _GiveupOnSendfile(Exception): pass\\n\\n\\nclass socket(_socket.socket):\\n\\n    \\\"\\\"\\\"A subclass of _socket.socket adding the makefile() method.\\\"\\\"\\\"\\n\\n    __slots__ = [\\\"__weakref__\\\", \\\"_io_refs\\\", \\\"_closed\\\"]\\n\\n    def __init__(self, family=-1, type=-1, proto=-1, fileno=None):\\n        # For user code address family and type values are IntEnum members, but\\n        # for the underlying _socket.socket they're just integers. The\\n        # constructor of _socket.socket converts the given argument to an\\n        # integer automatically.\\n        if fileno is None:\\n            if family == -1:\\n                family = AF_INET\\n            if type == -1:\\n                type = SOCK_STREAM\\n            if proto == -1:\\n                proto = 0\\n        _socket.socket.__init__(self, family, type, proto, fileno)\\n        self._io_refs = 0\\n        self._closed = False\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, *args):\\n        if not self._closed:\\n            self.close()\\n\\n    def __repr__(self):\\n        \\\"\\\"\\\"Wrap __repr__() to reveal the real class name and socket\\n        address(es).\\n        \\\"\\\"\\\"\\n        closed = getattr(self, '_closed', False)\\n        s = \\\"<%s.%s%s fd=%i, family=%s, type=%s, proto=%i\\\" \\\\\\n            % (self.__class__.__module__,\\n               self.__class__.__qualname__,\\n               \\\" [closed]\\\" if closed else \\\"\\\",\\n               self.fileno(),\\n               self.family,\\n               self.type,\\n               self.proto)\\n        if not closed:\\n            # getsockname and getpeername may not be available on WASI.\\n            try:\\n                laddr = self.getsockname()\\n                if laddr:\\n                    s += \\\", laddr=%s\\\" % str(laddr)\\n            except (error, AttributeError):\\n                pass\\n            try:\\n                raddr = self.getpeername()\\n                if raddr:\\n                    s += \\\", raddr=%s\\\" % str(raddr)\\n            except (error, AttributeError):\\n                pass\\n        s += '>'\\n        return s\\n\\n    def __getstate__(self):\\n        raise TypeError(f\\\"cannot pickle {self.__class__.__name__!r} object\\\")\\n\\n    def dup(self):\\n        \\\"\\\"\\\"dup() -> socket object\\n\\n        Duplicate the socket. Return a new socket object connected to the same\\n        system resource. The new socket is non-inheritable.\\n        \\\"\\\"\\\"\\n        fd = dup(self.fileno())\\n        sock = self.__class__(self.family, self.type, self.proto, fileno=fd)\\n        sock.settimeout(self.gettimeout())\\n        return sock\\n\\n    def accept(self):\\n        \\\"\\\"\\\"accept() -> (socket object, address info)\\n\\n        Wait for an incoming connection.  Return a new socket\\n        representing the connection, and the address of the client.\\n        For IP sockets, the address info is a pair (hostaddr, port).\\n        \\\"\\\"\\\"\\n        fd, addr = self._accept()\\n        sock = socket(self.family, self.type, self.proto, fileno=fd)\\n        # Issue #7995: if no default timeout is set and the listening\\n        # socket had a (non-zero) timeout, force the new socket in blocking\\n        # mode to override platform-specific socket flags inheritance.\\n        if getdefaulttimeout() is None and self.gettimeout():\\n            sock.setblocking(True)\\n        return sock, addr\\n\\n    def makefile(self, mode=\\\"r\\\", buffering=None, *,\\n                 encoding=None, errors=None, newline=None):\\n        \\\"\\\"\\\"makefile(...) -> an I/O stream connected to the socket\\n\\n        The arguments are as for io.open() after the filename, except the only\\n        supported mode values are 'r' (default), 'w' and 'b'.\\n        \\\"\\\"\\\"\\n        # XXX refactor to share code?\\n        if not set(mode) <= {\\\"r\\\", \\\"w\\\", \\\"b\\\"}:\\n            raise ValueError(\\\"invalid mode %r (only r, w, b allowed)\\\" % (mode,))\\n        writing = \\\"w\\\" in mode\\n        reading = \\\"r\\\" in mode or not writing\\n        assert reading or writing\\n        binary = \\\"b\\\" in mode\\n        rawmode = \\\"\\\"\\n        if reading:\\n            rawmode += \\\"r\\\"\\n        if writing:\\n            rawmode += \\\"w\\\"\\n        raw = SocketIO(self, rawmode)\\n        self._io_refs += 1\\n        if buffering is None:\\n            buffering = -1\\n        if buffering < 0:\\n            buffering = io.DEFAULT_BUFFER_SIZE\\n        if buffering == 0:\\n            if not binary:\\n                raise ValueError(\\\"unbuffered streams must be binary\\\")\\n            return raw\\n        if reading and writing:\\n            buffer = io.BufferedRWPair(raw, raw, buffering)\\n        elif reading:\\n            buffer = io.BufferedReader(raw, buffering)\\n        else:\\n            assert writing\\n            buffer = io.BufferedWriter(raw, buffering)\\n        if binary:\\n            return buffer\\n        encoding = io.text_encoding(encoding)\\n        text = io.TextIOWrapper(buffer, encoding, errors, newline)\\n        text.mode = mode\\n        return text\\n\\n    if hasattr(os, 'sendfile'):\\n\\n        def _sendfile_use_sendfile(self, file, offset=0, count=None):\\n            self._check_sendfile_params(file, offset, count)\\n            sockno = self.fileno()\\n            try:\\n                fileno = file.fileno()\\n            except (AttributeError, io.UnsupportedOperation) as err:\\n                raise _GiveupOnSendfile(err)  # not a regular file\\n            try:\\n                fsize = os.fstat(fileno).st_size\\n            except OSError as err:\\n                raise _GiveupOnSendfile(err)  # not a regular file\\n            if not fsize:\\n                return 0  # empty file\\n            # Truncate to 1GiB to avoid OverflowError, see bpo-38319.\\n            blocksize = min(count or fsize, 2 ** 30)\\n            timeout = self.gettimeout()\\n            if timeout == 0:\\n                raise ValueError(\\\"non-blocking sockets are not supported\\\")\\n            # poll/select have the advantage of not requiring any\\n            # extra file descriptor, contrarily to epoll/kqueue\\n            # (also, they require a single syscall).\\n            if hasattr(selectors, 'PollSelector'):\\n                selector = selectors.PollSelector()\\n            else:\\n                selector = selectors.SelectSelector()\\n            selector.register(sockno, selectors.EVENT_WRITE)\\n\\n            total_sent = 0\\n            # localize variable access to minimize overhead\\n            selector_select = selector.select\\n            os_sendfile = os.sendfile\\n            try:\\n                while True:\\n                    if timeout and not selector_select(timeout):\\n                        raise TimeoutError('timed out')\\n                    if count:\\n                        blocksize = min(count - total_sent, blocksize)\\n                        if blocksize <= 0:\\n                            break\\n                    try:\\n                        sent = os_sendfile(sockno, fileno, offset, blocksize)\\n                    except BlockingIOError:\\n                        if not timeout:\\n                            # Block until the socket is ready to send some\\n                            # data; avoids hogging CPU resources.\\n                            selector_select()\\n                        continue\\n                    except OSError as err:\\n                        if total_sent == 0:\\n                            # We can get here for different reasons, the main\\n                            # one being 'file' is not a regular mmap(2)-like\\n                            # file, in which case we'll fall back on using\\n                            # plain send().\\n                            raise _GiveupOnSendfile(err)\\n                        raise err from None\\n                    else:\\n                        if sent == 0:\\n                            break  # EOF\\n                        offset += sent\\n                        total_sent += sent\\n                return total_sent\\n            finally:\\n                if total_sent > 0 and hasattr(file, 'seek'):\\n                    file.seek(offset)\\n    else:\\n        def _sendfile_use_sendfile(self, file, offset=0, count=None):\\n            raise _GiveupOnSendfile(\\n                \\\"os.sendfile() not available on this platform\\\")\\n\\n    def _sendfile_use_send(self, file, offset=0, count=None):\\n        self._check_sendfile_params(file, offset, count)\\n        if self.gettimeout() == 0:\\n            raise ValueError(\\\"non-blocking sockets are not supported\\\")\\n        if offset:\\n            file.seek(offset)\\n        blocksize = min(count, 8192) if count else 8192\\n        total_sent = 0\\n        # localize variable access to minimize overhead\\n        file_read = file.read\\n        sock_send = self.send\\n        try:\\n            while True:\\n                if count:\\n                    blocksize = min(count - total_sent, blocksize)\\n                    if blocksize <= 0:\\n                        break\\n                data = memoryview(file_read(blocksize))\\n                if not data:\\n                    break  # EOF\\n                while True:\\n                    try:\\n                        sent = sock_send(data)\\n                    except BlockingIOError:\\n                        continue\\n                    else:\\n                        total_sent += sent\\n                        if sent < len(data):\\n                            data = data[sent:]\\n                        else:\\n                            break\\n            return total_sent\\n        finally:\\n            if total_sent > 0 and hasattr(file, 'seek'):\\n                file.seek(offset + total_sent)\\n\\n    def _check_sendfile_params(self, file, offset, count):\\n        if 'b' not in getattr(file, 'mode', 'b'):\\n            raise ValueError(\\\"file should be opened in binary mode\\\")\\n        if not self.type & SOCK_STREAM:\\n            raise ValueError(\\\"only SOCK_STREAM type sockets are supported\\\")\\n        if count is not None:\\n            if not isinstance(count, int):\\n                raise TypeError(\\n                    \\\"count must be a positive integer (got {!r})\\\".format(count))\\n            if count <= 0:\\n                raise ValueError(\\n                    \\\"count must be a positive integer (got {!r})\\\".format(count))\\n\\n    def sendfile(self, file, offset=0, count=None):\\n        \\\"\\\"\\\"sendfile(file[, offset[, count]]) -> sent\\n\\n        Send a file until EOF is reached by using high-performance\\n        os.sendfile() and return the total number of bytes which\\n        were sent.\\n        *file* must be a regular file object opened in binary mode.\\n        If os.sendfile() is not available (e.g. Windows) or file is\\n        not a regular file socket.send() will be used instead.\\n        *offset* tells from where to start reading the file.\\n        If specified, *count* is the total number of bytes to transmit\\n        as opposed to sending the file until EOF is reached.\\n        File position is updated on return or also in case of error in\\n        which case file.tell() can be used to figure out the number of\\n        bytes which were sent.\\n        The socket must be of SOCK_STREAM type.\\n        Non-blocking sockets are not supported.\\n        \\\"\\\"\\\"\\n        try:\\n            return self._sendfile_use_sendfile(file, offset, count)\\n        except _GiveupOnSendfile:\\n            return self._sendfile_use_send(file, offset, count)\\n\\n    def _decref_socketios(self):\\n        if self._io_refs > 0:\\n            self._io_refs -= 1\\n        if self._closed:\\n            self.close()\\n\\n    def _real_close(self, _ss=_socket.socket):\\n        # This function should not reference any globals. See issue #808164.\\n        _ss.close(self)\\n\\n    def close(self):\\n        # This function should not reference any globals. See issue #808164.\\n        self._closed = True\\n        if self._io_refs <= 0:\\n            self._real_close()\\n\\n    def detach(self):\\n        \\\"\\\"\\\"detach() -> file descriptor\\n\\n        Close the socket object without closing the underlying file descriptor.\\n        The object cannot be used after this call, but the file descriptor\\n        can be reused for other purposes.  The file descriptor is returned.\\n        \\\"\\\"\\\"\\n        self._closed = True\\n        return super().detach()\\n\\n    @property\\n    def family(self):\\n        \\\"\\\"\\\"Read-only access to the address family for this socket.\\n        \\\"\\\"\\\"\\n        return _intenum_converter(super().family, AddressFamily)\\n\\n    @property\\n    def type(self):\\n        \\\"\\\"\\\"Read-only access to the socket type.\\n        \\\"\\\"\\\"\\n        return _intenum_converter(super().type, SocketKind)\\n\\n    if os.name == 'nt':\\n        def get_inheritable(self):\\n            return os.get_handle_inheritable(self.fileno())\\n        def set_inheritable(self, inheritable):\\n            os.set_handle_inheritable(self.fileno(), inheritable)\\n    else:\\n        def get_inheritable(self):\\n            return os.get_inheritable(self.fileno())\\n        def set_inheritable(self, inheritable):\\n            os.set_inheritable(self.fileno(), inheritable)\\n    get_inheritable.__doc__ = \\\"Get the inheritable flag of the socket\\\"\\n    set_inheritable.__doc__ = \\\"Set the inheritable flag of the socket\\\"\\n\\ndef fromfd(fd, family, type, proto=0):\\n    \\\"\\\"\\\" fromfd(fd, family, type[, proto]) -> socket object\\n\\n    Create a socket object from a duplicate of the given file\\n    descriptor.  The remaining arguments are the same as for socket().\\n    \\\"\\\"\\\"\\n    nfd = dup(fd)\\n    return socket(family, type, proto, nfd)\\n\\nif hasattr(_socket.socket, \\\"sendmsg\\\"):\\n    import array\\n\\n    def send_fds(sock, buffers, fds, flags=0, address=None):\\n        \\\"\\\"\\\" send_fds(sock, buffers, fds[, flags[, address]]) -> integer\\n\\n        Send the list of file descriptors fds over an AF_UNIX socket.\\n        \\\"\\\"\\\"\\n        return sock.sendmsg(buffers, [(_socket.SOL_SOCKET,\\n            _socket.SCM_RIGHTS, array.array(\\\"i\\\", fds))])\\n    __all__.append(\\\"send_fds\\\")\\n\\nif hasattr(_socket.socket, \\\"recvmsg\\\"):\\n    import array\\n\\n    def recv_fds(sock, bufsize, maxfds, flags=0):\\n        \\\"\\\"\\\" recv_fds(sock, bufsize, maxfds[, flags]) -> (data, list of file\\n        descriptors, msg_flags, address)\\n\\n        Receive up to maxfds file descriptors returning the message\\n        data and a list containing the descriptors.\\n        \\\"\\\"\\\"\\n        # Array of ints\\n        fds = array.array(\\\"i\\\")\\n        msg, ancdata, flags, addr = sock.recvmsg(bufsize,\\n            _socket.CMSG_LEN(maxfds * fds.itemsize))\\n        for cmsg_level, cmsg_type, cmsg_data in ancdata:\\n            if (cmsg_level == _socket.SOL_SOCKET and cmsg_type == _socket.SCM_RIGHTS):\\n                fds.frombytes(cmsg_data[:\\n                        len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])\\n\\n        return msg, list(fds), flags, addr\\n    __all__.append(\\\"recv_fds\\\")\\n\\nif hasattr(_socket.socket, \\\"share\\\"):\\n    def fromshare(info):\\n        \\\"\\\"\\\" fromshare(info) -> socket object\\n\\n        Create a socket object from the bytes object returned by\\n        socket.share(pid).\\n        \\\"\\\"\\\"\\n        return socket(0, 0, 0, info)\\n    __all__.append(\\\"fromshare\\\")\\n\\nif hasattr(_socket, \\\"socketpair\\\"):\\n\\n    def socketpair(family=None, type=SOCK_STREAM, proto=0):\\n        \\\"\\\"\\\"socketpair([family[, type[, proto]]]) -> (socket object, socket object)\\n\\n        Create a pair of socket objects from the sockets returned by the platform\\n        socketpair() function.\\n        The arguments are the same as for socket() except the default family is\\n        AF_UNIX if defined on the platform; otherwise, the default is AF_INET.\\n        \\\"\\\"\\\"\\n        if family is None:\\n            try:\\n                family = AF_UNIX\\n            except NameError:\\n                family = AF_INET\\n        a, b = _socket.socketpair(family, type, proto)\\n        a = socket(family, type, proto, a.detach())\\n        b = socket(family, type, proto, b.detach())\\n        return a, b\\n\\nelse:\\n\\n    # Origin: https://gist.github.com/4325783, by Geert Jansen.  Public domain.\\n    def socketpair(family=AF_INET, type=SOCK_STREAM, proto=0):\\n        if family == AF_INET:\\n            host = _LOCALHOST\\n        elif family == AF_INET6:\\n            host = _LOCALHOST_V6\\n        else:\\n            raise ValueError(\\\"Only AF_INET and AF_INET6 socket address families \\\"\\n                             \\\"are supported\\\")\\n        if type != SOCK_STREAM:\\n            raise ValueError(\\\"Only SOCK_STREAM socket type is supported\\\")\\n        if proto != 0:\\n            raise ValueError(\\\"Only protocol zero is supported\\\")\\n\\n        # We create a connected TCP socket. Note the trick with\\n        # setblocking(False) that prevents us from having to create a thread.\\n        lsock = socket(family, type, proto)\\n        try:\\n            lsock.bind((host, 0))\\n            lsock.listen()\\n            # On IPv6, ignore flow_info and scope_id\\n            addr, port = lsock.getsockname()[:2]\\n            csock = socket(family, type, proto)\\n            try:\\n                csock.setblocking(False)\\n                try:\\n                    csock.connect((addr, port))\\n                except (BlockingIOError, InterruptedError):\\n                    pass\\n                csock.setblocking(True)\\n                ssock, _ = lsock.accept()\\n            except:\\n                csock.close()\\n                raise\\n        finally:\\n            lsock.close()\\n        return (ssock, csock)\\n    __all__.append(\\\"socketpair\\\")\\n\\nsocketpair.__doc__ = \\\"\\\"\\\"socketpair([family[, type[, proto]]]) -> (socket object, socket object)\\nCreate a pair of socket objects from the sockets returned by the platform\\nsocketpair() function.\\nThe arguments are the same as for socket() except the default family is AF_UNIX\\nif defined on the platform; otherwise, the default is AF_INET.\\n\\\"\\\"\\\"\\n\\n_blocking_errnos = { EAGAIN, EWOULDBLOCK }\\n\\nclass SocketIO(io.RawIOBase):\\n\\n    \\\"\\\"\\\"Raw I/O implementation for stream sockets.\\n\\n    This class supports the makefile() method on sockets.  It provides\\n    the raw I/O interface on top of a socket object.\\n    \\\"\\\"\\\"\\n\\n    # One might wonder why not let FileIO do the job instead.  There are two\\n    # main reasons why FileIO is not adapted:\\n    # - it wouldn't work under Windows (where you can't used read() and\\n    #   write() on a socket handle)\\n    # - it wouldn't work with socket timeouts (FileIO would ignore the\\n    #   timeout and consider the socket non-blocking)\\n\\n    # XXX More docs\\n\\n    def __init__(self, sock, mode):\\n        if mode not in (\\\"r\\\", \\\"w\\\", \\\"rw\\\", \\\"rb\\\", \\\"wb\\\", \\\"rwb\\\"):\\n            raise ValueError(\\\"invalid mode: %r\\\" % mode)\\n        io.RawIOBase.__init__(self)\\n        self._sock = sock\\n        if \\\"b\\\" not in mode:\\n            mode += \\\"b\\\"\\n        self._mode = mode\\n        self._reading = \\\"r\\\" in mode\\n        self._writing = \\\"w\\\" in mode\\n        self._timeout_occurred = False\\n\\n    def readinto(self, b):\\n        \\\"\\\"\\\"Read up to len(b) bytes into the writable buffer *b* and return\\n        the number of bytes read.  If the socket is non-blocking and no bytes\\n        are available, None is returned.\\n\\n        If *b* is non-empty, a 0 return value indicates that the connection\\n        was shutdown at the other end.\\n        \\\"\\\"\\\"\\n        self._checkClosed()\\n        self._checkReadable()\\n        if self._timeout_occurred:\\n            raise OSError(\\\"cannot read from timed out object\\\")\\n        while True:\\n            try:\\n                return self._sock.recv_into(b)\\n            except timeout:\\n                self._timeout_occurred = True\\n                raise\\n            except error as e:\\n                if e.errno in _blocking_errnos:\\n                    return None\\n                raise\\n\\n    def write(self, b):\\n        \\\"\\\"\\\"Write the given bytes or bytearray object *b* to the socket\\n        and return the number of bytes written.  This can be less than\\n        len(b) if not all data could be written.  If the socket is\\n        non-blocking and no bytes could be written None is returned.\\n        \\\"\\\"\\\"\\n        self._checkClosed()\\n        self._checkWritable()\\n        try:\\n            return self._sock.send(b)\\n        except error as e:\\n            # XXX what about EINTR?\\n            if e.errno in _blocking_errnos:\\n                return None\\n            raise\\n\\n    def readable(self):\\n        \\\"\\\"\\\"True if the SocketIO is open for reading.\\n        \\\"\\\"\\\"\\n        if self.closed:\\n            raise ValueError(\\\"I/O operation on closed socket.\\\")\\n        return self._reading\\n\\n    def writable(self):\\n        \\\"\\\"\\\"True if the SocketIO is open for writing.\\n        \\\"\\\"\\\"\\n        if self.closed:\\n            raise ValueError(\\\"I/O operation on closed socket.\\\")\\n        return self._writing\\n\\n    def seekable(self):\\n        \\\"\\\"\\\"True if the SocketIO is open for seeking.\\n        \\\"\\\"\\\"\\n        if self.closed:\\n            raise ValueError(\\\"I/O operation on closed socket.\\\")\\n        return super().seekable()\\n\\n    def fileno(self):\\n        \\\"\\\"\\\"Return the file descriptor of the underlying socket.\\n        \\\"\\\"\\\"\\n        self._checkClosed()\\n        return self._sock.fileno()\\n\\n    @property\\n    def name(self):\\n        if not self.closed:\\n            return self.fileno()\\n        else:\\n            return -1\\n\\n    @property\\n    def mode(self):\\n        return self._mode\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the SocketIO object.  This doesn't close the underlying\\n        socket, except if all references to it have disappeared.\\n        \\\"\\\"\\\"\\n        if self.closed:\\n            return\\n        io.RawIOBase.close(self)\\n        self._sock._decref_socketios()\\n        self._sock = None\\n\\n\\ndef getfqdn(name=''):\\n    \\\"\\\"\\\"Get fully qualified domain name from name.\\n\\n    An empty argument is interpreted as meaning the local host.\\n\\n    First the hostname returned by gethostbyaddr() is checked, then\\n    possibly existing aliases. In case no FQDN is available and `name`\\n    was given, it is returned unchanged. If `name` was empty, '0.0.0.0' or '::',\\n    hostname from gethostname() is returned.\\n    \\\"\\\"\\\"\\n    name = name.strip()\\n    if not name or name in ('0.0.0.0', '::'):\\n        name = gethostname()\\n    try:\\n        hostname, aliases, ipaddrs = gethostbyaddr(name)\\n    except error:\\n        pass\\n    else:\\n        aliases.insert(0, hostname)\\n        for name in aliases:\\n            if '.' in name:\\n                break\\n        else:\\n            name = hostname\\n    return name\\n\\n\\n_GLOBAL_DEFAULT_TIMEOUT = object()\\n\\ndef create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,\\n                      source_address=None, *, all_errors=False):\\n    \\\"\\\"\\\"Connect to *address* and return the socket object.\\n\\n    Convenience function.  Connect to *address* (a 2-tuple ``(host,\\n    port)``) and return the socket object.  Passing the optional\\n    *timeout* parameter will set the timeout on the socket instance\\n    before attempting to connect.  If no *timeout* is supplied, the\\n    global default timeout setting returned by :func:`getdefaulttimeout`\\n    is used.  If *source_address* is set it must be a tuple of (host, port)\\n    for the socket to bind as a source address before making the connection.\\n    A host of '' or port 0 tells the OS to use the default. When a connection\\n    cannot be created, raises the last error if *all_errors* is False,\\n    and an ExceptionGroup of all errors if *all_errors* is True.\\n    \\\"\\\"\\\"\\n\\n    host, port = address\\n    exceptions = []\\n    for res in getaddrinfo(host, port, 0, SOCK_STREAM):\\n        af, socktype, proto, canonname, sa = res\\n        sock = None\\n        try:\\n            sock = socket(af, socktype, proto)\\n            if timeout is not _GLOBAL_DEFAULT_TIMEOUT:\\n                sock.settimeout(timeout)\\n            if source_address:\\n                sock.bind(source_address)\\n            sock.connect(sa)\\n            # Break explicitly a reference cycle\\n            exceptions.clear()\\n            return sock\\n\\n        except error as exc:\\n            if not all_errors:\\n                exceptions.clear()  # raise only the last error\\n            exceptions.append(exc)\\n            if sock is not None:\\n                sock.close()\\n\\n    if len(exceptions):\\n        try:\\n            if not all_errors:\\n                raise exceptions[0]\\n            raise ExceptionGroup(\\\"create_connection failed\\\", exceptions)\\n        finally:\\n            # Break explicitly a reference cycle\\n            exceptions.clear()\\n    else:\\n        raise error(\\\"getaddrinfo returns an empty list\\\")\\n\\n\\ndef has_dualstack_ipv6():\\n    \\\"\\\"\\\"Return True if the platform supports creating a SOCK_STREAM socket\\n    which can handle both AF_INET and AF_INET6 (IPv4 / IPv6) connections.\\n    \\\"\\\"\\\"\\n    if not has_ipv6 \\\\\\n            or not hasattr(_socket, 'IPPROTO_IPV6') \\\\\\n            or not hasattr(_socket, 'IPV6_V6ONLY'):\\n        return False\\n    try:\\n        with socket(AF_INET6, SOCK_STREAM) as sock:\\n            sock.setsockopt(IPPROTO_IPV6, IPV6_V6ONLY, 0)\\n            return True\\n    except error:\\n        return False\\n\\n\\ndef create_server(address, *, family=AF_INET, backlog=None, reuse_port=False,\\n                  dualstack_ipv6=False):\\n    \\\"\\\"\\\"Convenience function which creates a SOCK_STREAM type socket\\n    bound to *address* (a 2-tuple (host, port)) and return the socket\\n    object.\\n\\n    *family* should be either AF_INET or AF_INET6.\\n    *backlog* is the queue size passed to socket.listen().\\n    *reuse_port* dictates whether to use the SO_REUSEPORT socket option.\\n    *dualstack_ipv6*: if true and the platform supports it, it will\\n    create an AF_INET6 socket able to accept both IPv4 or IPv6\\n    connections. When false it will explicitly disable this option on\\n    platforms that enable it by default (e.g. Linux).\\n\\n    >>> with create_server(('', 8000)) as server:\\n    ...     while True:\\n    ...         conn, addr = server.accept()\\n    ...         # handle new connection\\n    \\\"\\\"\\\"\\n    if reuse_port and not hasattr(_socket, \\\"SO_REUSEPORT\\\"):\\n        raise ValueError(\\\"SO_REUSEPORT not supported on this platform\\\")\\n    if dualstack_ipv6:\\n        if not has_dualstack_ipv6():\\n            raise ValueError(\\\"dualstack_ipv6 not supported on this platform\\\")\\n        if family != AF_INET6:\\n            raise ValueError(\\\"dualstack_ipv6 requires AF_INET6 family\\\")\\n    sock = socket(family, SOCK_STREAM)\\n    try:\\n        # Note about Windows. We don't set SO_REUSEADDR because:\\n        # 1) It's unnecessary: bind() will succeed even in case of a\\n        # previous closed socket on the same address and still in\\n        # TIME_WAIT state.\\n        # 2) If set, another socket is free to bind() on the same\\n        # address, effectively preventing this one from accepting\\n        # connections. Also, it may set the process in a state where\\n        # it'll no longer respond to any signals or graceful kills.\\n        # See: https://learn.microsoft.com/windows/win32/winsock/using-so-reuseaddr-and-so-exclusiveaddruse\\n        if os.name not in ('nt', 'cygwin') and \\\\\\n                hasattr(_socket, 'SO_REUSEADDR'):\\n            try:\\n                sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)\\n            except error:\\n                # Fail later on bind(), for platforms which may not\\n                # support this option.\\n                pass\\n        if reuse_port:\\n            sock.setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)\\n        if has_ipv6 and family == AF_INET6:\\n            if dualstack_ipv6:\\n                sock.setsockopt(IPPROTO_IPV6, IPV6_V6ONLY, 0)\\n            elif hasattr(_socket, \\\"IPV6_V6ONLY\\\") and \\\\\\n                    hasattr(_socket, \\\"IPPROTO_IPV6\\\"):\\n                sock.setsockopt(IPPROTO_IPV6, IPV6_V6ONLY, 1)\\n        try:\\n            sock.bind(address)\\n        except error as err:\\n            msg = '%s (while attempting to bind on address %r)' % \\\\\\n                (err.strerror, address)\\n            raise error(err.errno, msg) from None\\n        if backlog is None:\\n            sock.listen()\\n        else:\\n            sock.listen(backlog)\\n        return sock\\n    except error:\\n        sock.close()\\n        raise\\n\\n\\ndef getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):\\n    \\\"\\\"\\\"Resolve host and port into list of address info entries.\\n\\n    Translate the host/port argument into a sequence of 5-tuples that contain\\n    all the necessary arguments for creating a socket connected to that service.\\n    host is a domain name, a string representation of an IPv4/v6 address or\\n    None. port is a string service name such as 'http', a numeric port number or\\n    None. By passing None as the value of host and port, you can pass NULL to\\n    the underlying C API.\\n\\n    The family, type and proto arguments can be optionally specified in order to\\n    narrow the list of addresses returned. Passing zero as a value for each of\\n    these arguments selects the full range of results.\\n    \\\"\\\"\\\"\\n    # We override this function since we want to translate the numeric family\\n    # and socket type values to enum constants.\\n    addrlist = []\\n    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):\\n        af, socktype, proto, canonname, sa = res\\n        addrlist.append((_intenum_converter(af, AddressFamily),\\n                         _intenum_converter(socktype, SocketKind),\\n                         proto, canonname, sa))\\n    return addrlist\\n\", 968], \"/usr/lib/python3.12/asyncio/selector_events.py\": [\"\\\"\\\"\\\"Event loop using a selector and related classes.\\n\\nA selector is a \\\"notify-when-ready\\\" multiplexer.  For a subclass which\\nalso includes support for signal handling, see the unix_events sub-module.\\n\\\"\\\"\\\"\\n\\n__all__ = 'BaseSelectorEventLoop',\\n\\nimport collections\\nimport errno\\nimport functools\\nimport itertools\\nimport os\\nimport selectors\\nimport socket\\nimport warnings\\nimport weakref\\ntry:\\n    import ssl\\nexcept ImportError:  # pragma: no cover\\n    ssl = None\\n\\nfrom . import base_events\\nfrom . import constants\\nfrom . import events\\nfrom . import futures\\nfrom . import protocols\\nfrom . import sslproto\\nfrom . import transports\\nfrom . import trsock\\nfrom .log import logger\\n\\n_HAS_SENDMSG = hasattr(socket.socket, 'sendmsg')\\n\\nif _HAS_SENDMSG:\\n    try:\\n        SC_IOV_MAX = os.sysconf('SC_IOV_MAX')\\n    except OSError:\\n        # Fallback to send\\n        _HAS_SENDMSG = False\\n\\ndef _test_selector_event(selector, fd, event):\\n    # Test if the selector is monitoring 'event' events\\n    # for the file descriptor 'fd'.\\n    try:\\n        key = selector.get_key(fd)\\n    except KeyError:\\n        return False\\n    else:\\n        return bool(key.events & event)\\n\\n\\nclass BaseSelectorEventLoop(base_events.BaseEventLoop):\\n    \\\"\\\"\\\"Selector event loop.\\n\\n    See events.EventLoop for API specification.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, selector=None):\\n        super().__init__()\\n\\n        if selector is None:\\n            selector = selectors.DefaultSelector()\\n        logger.debug('Using selector: %s', selector.__class__.__name__)\\n        self._selector = selector\\n        self._make_self_pipe()\\n        self._transports = weakref.WeakValueDictionary()\\n\\n    def _make_socket_transport(self, sock, protocol, waiter=None, *,\\n                               extra=None, server=None):\\n        self._ensure_fd_no_transport(sock)\\n        return _SelectorSocketTransport(self, sock, protocol, waiter,\\n                                        extra, server)\\n\\n    def _make_ssl_transport(\\n            self, rawsock, protocol, sslcontext, waiter=None,\\n            *, server_side=False, server_hostname=None,\\n            extra=None, server=None,\\n            ssl_handshake_timeout=constants.SSL_HANDSHAKE_TIMEOUT,\\n            ssl_shutdown_timeout=constants.SSL_SHUTDOWN_TIMEOUT,\\n    ):\\n        self._ensure_fd_no_transport(rawsock)\\n        ssl_protocol = sslproto.SSLProtocol(\\n            self, protocol, sslcontext, waiter,\\n            server_side, server_hostname,\\n            ssl_handshake_timeout=ssl_handshake_timeout,\\n            ssl_shutdown_timeout=ssl_shutdown_timeout\\n        )\\n        _SelectorSocketTransport(self, rawsock, ssl_protocol,\\n                                 extra=extra, server=server)\\n        return ssl_protocol._app_transport\\n\\n    def _make_datagram_transport(self, sock, protocol,\\n                                 address=None, waiter=None, extra=None):\\n        self._ensure_fd_no_transport(sock)\\n        return _SelectorDatagramTransport(self, sock, protocol,\\n                                          address, waiter, extra)\\n\\n    def close(self):\\n        if self.is_running():\\n            raise RuntimeError(\\\"Cannot close a running event loop\\\")\\n        if self.is_closed():\\n            return\\n        self._close_self_pipe()\\n        super().close()\\n        if self._selector is not None:\\n            self._selector.close()\\n            self._selector = None\\n\\n    def _close_self_pipe(self):\\n        self._remove_reader(self._ssock.fileno())\\n        self._ssock.close()\\n        self._ssock = None\\n        self._csock.close()\\n        self._csock = None\\n        self._internal_fds -= 1\\n\\n    def _make_self_pipe(self):\\n        # A self-socket, really. :-)\\n        self._ssock, self._csock = socket.socketpair()\\n        self._ssock.setblocking(False)\\n        self._csock.setblocking(False)\\n        self._internal_fds += 1\\n        self._add_reader(self._ssock.fileno(), self._read_from_self)\\n\\n    def _process_self_data(self, data):\\n        pass\\n\\n    def _read_from_self(self):\\n        while True:\\n            try:\\n                data = self._ssock.recv(4096)\\n                if not data:\\n                    break\\n                self._process_self_data(data)\\n            except InterruptedError:\\n                continue\\n            except BlockingIOError:\\n                break\\n\\n    def _write_to_self(self):\\n        # This may be called from a different thread, possibly after\\n        # _close_self_pipe() has been called or even while it is\\n        # running.  Guard for self._csock being None or closed.  When\\n        # a socket is closed, send() raises OSError (with errno set to\\n        # EBADF, but let's not rely on the exact error code).\\n        csock = self._csock\\n        if csock is None:\\n            return\\n\\n        try:\\n            csock.send(b'\\\\0')\\n        except OSError:\\n            if self._debug:\\n                logger.debug(\\\"Fail to write a null byte into the \\\"\\n                             \\\"self-pipe socket\\\",\\n                             exc_info=True)\\n\\n    def _start_serving(self, protocol_factory, sock,\\n                       sslcontext=None, server=None, backlog=100,\\n                       ssl_handshake_timeout=constants.SSL_HANDSHAKE_TIMEOUT,\\n                       ssl_shutdown_timeout=constants.SSL_SHUTDOWN_TIMEOUT):\\n        self._add_reader(sock.fileno(), self._accept_connection,\\n                         protocol_factory, sock, sslcontext, server, backlog,\\n                         ssl_handshake_timeout, ssl_shutdown_timeout)\\n\\n    def _accept_connection(\\n            self, protocol_factory, sock,\\n            sslcontext=None, server=None, backlog=100,\\n            ssl_handshake_timeout=constants.SSL_HANDSHAKE_TIMEOUT,\\n            ssl_shutdown_timeout=constants.SSL_SHUTDOWN_TIMEOUT):\\n        # This method is only called once for each event loop tick where the\\n        # listening socket has triggered an EVENT_READ. There may be multiple\\n        # connections waiting for an .accept() so it is called in a loop.\\n        # See https://bugs.python.org/issue27906 for more details.\\n        for _ in range(backlog):\\n            try:\\n                conn, addr = sock.accept()\\n                if self._debug:\\n                    logger.debug(\\\"%r got a new connection from %r: %r\\\",\\n                                 server, addr, conn)\\n                conn.setblocking(False)\\n            except (BlockingIOError, InterruptedError, ConnectionAbortedError):\\n                # Early exit because the socket accept buffer is empty.\\n                return None\\n            except OSError as exc:\\n                # There's nowhere to send the error, so just log it.\\n                if exc.errno in (errno.EMFILE, errno.ENFILE,\\n                                 errno.ENOBUFS, errno.ENOMEM):\\n                    # Some platforms (e.g. Linux keep reporting the FD as\\n                    # ready, so we remove the read handler temporarily.\\n                    # We'll try again in a while.\\n                    self.call_exception_handler({\\n                        'message': 'socket.accept() out of system resource',\\n                        'exception': exc,\\n                        'socket': trsock.TransportSocket(sock),\\n                    })\\n                    self._remove_reader(sock.fileno())\\n                    self.call_later(constants.ACCEPT_RETRY_DELAY,\\n                                    self._start_serving,\\n                                    protocol_factory, sock, sslcontext, server,\\n                                    backlog, ssl_handshake_timeout,\\n                                    ssl_shutdown_timeout)\\n                else:\\n                    raise  # The event loop will catch, log and ignore it.\\n            else:\\n                extra = {'peername': addr}\\n                accept = self._accept_connection2(\\n                    protocol_factory, conn, extra, sslcontext, server,\\n                    ssl_handshake_timeout, ssl_shutdown_timeout)\\n                self.create_task(accept)\\n\\n    async def _accept_connection2(\\n            self, protocol_factory, conn, extra,\\n            sslcontext=None, server=None,\\n            ssl_handshake_timeout=constants.SSL_HANDSHAKE_TIMEOUT,\\n            ssl_shutdown_timeout=constants.SSL_SHUTDOWN_TIMEOUT):\\n        protocol = None\\n        transport = None\\n        try:\\n            protocol = protocol_factory()\\n            waiter = self.create_future()\\n            if sslcontext:\\n                transport = self._make_ssl_transport(\\n                    conn, protocol, sslcontext, waiter=waiter,\\n                    server_side=True, extra=extra, server=server,\\n                    ssl_handshake_timeout=ssl_handshake_timeout,\\n                    ssl_shutdown_timeout=ssl_shutdown_timeout)\\n            else:\\n                transport = self._make_socket_transport(\\n                    conn, protocol, waiter=waiter, extra=extra,\\n                    server=server)\\n\\n            try:\\n                await waiter\\n            except BaseException:\\n                transport.close()\\n                # gh-109534: When an exception is raised by the SSLProtocol object the\\n                # exception set in this future can keep the protocol object alive and\\n                # cause a reference cycle.\\n                waiter = None\\n                raise\\n                # It's now up to the protocol to handle the connection.\\n\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            if self._debug:\\n                context = {\\n                    'message':\\n                        'Error on transport creation for incoming connection',\\n                    'exception': exc,\\n                }\\n                if protocol is not None:\\n                    context['protocol'] = protocol\\n                if transport is not None:\\n                    context['transport'] = transport\\n                self.call_exception_handler(context)\\n\\n    def _ensure_fd_no_transport(self, fd):\\n        fileno = fd\\n        if not isinstance(fileno, int):\\n            try:\\n                fileno = int(fileno.fileno())\\n            except (AttributeError, TypeError, ValueError):\\n                # This code matches selectors._fileobj_to_fd function.\\n                raise ValueError(f\\\"Invalid file object: {fd!r}\\\") from None\\n        try:\\n            transport = self._transports[fileno]\\n        except KeyError:\\n            pass\\n        else:\\n            if not transport.is_closing():\\n                raise RuntimeError(\\n                    f'File descriptor {fd!r} is used by transport '\\n                    f'{transport!r}')\\n\\n    def _add_reader(self, fd, callback, *args):\\n        self._check_closed()\\n        handle = events.Handle(callback, args, self, None)\\n        try:\\n            key = self._selector.get_key(fd)\\n        except KeyError:\\n            self._selector.register(fd, selectors.EVENT_READ,\\n                                    (handle, None))\\n        else:\\n            mask, (reader, writer) = key.events, key.data\\n            self._selector.modify(fd, mask | selectors.EVENT_READ,\\n                                  (handle, writer))\\n            if reader is not None:\\n                reader.cancel()\\n        return handle\\n\\n    def _remove_reader(self, fd):\\n        if self.is_closed():\\n            return False\\n        try:\\n            key = self._selector.get_key(fd)\\n        except KeyError:\\n            return False\\n        else:\\n            mask, (reader, writer) = key.events, key.data\\n            mask &= ~selectors.EVENT_READ\\n            if not mask:\\n                self._selector.unregister(fd)\\n            else:\\n                self._selector.modify(fd, mask, (None, writer))\\n\\n            if reader is not None:\\n                reader.cancel()\\n                return True\\n            else:\\n                return False\\n\\n    def _add_writer(self, fd, callback, *args):\\n        self._check_closed()\\n        handle = events.Handle(callback, args, self, None)\\n        try:\\n            key = self._selector.get_key(fd)\\n        except KeyError:\\n            self._selector.register(fd, selectors.EVENT_WRITE,\\n                                    (None, handle))\\n        else:\\n            mask, (reader, writer) = key.events, key.data\\n            self._selector.modify(fd, mask | selectors.EVENT_WRITE,\\n                                  (reader, handle))\\n            if writer is not None:\\n                writer.cancel()\\n        return handle\\n\\n    def _remove_writer(self, fd):\\n        \\\"\\\"\\\"Remove a writer callback.\\\"\\\"\\\"\\n        if self.is_closed():\\n            return False\\n        try:\\n            key = self._selector.get_key(fd)\\n        except KeyError:\\n            return False\\n        else:\\n            mask, (reader, writer) = key.events, key.data\\n            # Remove both writer and connector.\\n            mask &= ~selectors.EVENT_WRITE\\n            if not mask:\\n                self._selector.unregister(fd)\\n            else:\\n                self._selector.modify(fd, mask, (reader, None))\\n\\n            if writer is not None:\\n                writer.cancel()\\n                return True\\n            else:\\n                return False\\n\\n    def add_reader(self, fd, callback, *args):\\n        \\\"\\\"\\\"Add a reader callback.\\\"\\\"\\\"\\n        self._ensure_fd_no_transport(fd)\\n        self._add_reader(fd, callback, *args)\\n\\n    def remove_reader(self, fd):\\n        \\\"\\\"\\\"Remove a reader callback.\\\"\\\"\\\"\\n        self._ensure_fd_no_transport(fd)\\n        return self._remove_reader(fd)\\n\\n    def add_writer(self, fd, callback, *args):\\n        \\\"\\\"\\\"Add a writer callback..\\\"\\\"\\\"\\n        self._ensure_fd_no_transport(fd)\\n        self._add_writer(fd, callback, *args)\\n\\n    def remove_writer(self, fd):\\n        \\\"\\\"\\\"Remove a writer callback.\\\"\\\"\\\"\\n        self._ensure_fd_no_transport(fd)\\n        return self._remove_writer(fd)\\n\\n    async def sock_recv(self, sock, n):\\n        \\\"\\\"\\\"Receive data from the socket.\\n\\n        The return value is a bytes object representing the data received.\\n        The maximum amount of data to be received at once is specified by\\n        nbytes.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        try:\\n            return sock.recv(n)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        handle = self._add_reader(fd, self._sock_recv, fut, sock, n)\\n        fut.add_done_callback(\\n            functools.partial(self._sock_read_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_read_done(self, fd, fut, handle=None):\\n        if handle is None or not handle.cancelled():\\n            self.remove_reader(fd)\\n\\n    def _sock_recv(self, fut, sock, n):\\n        # _sock_recv() can add itself as an I/O callback if the operation can't\\n        # be done immediately. Don't use it directly, call sock_recv().\\n        if fut.done():\\n            return\\n        try:\\n            data = sock.recv(n)\\n        except (BlockingIOError, InterruptedError):\\n            return  # try again next time\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(data)\\n\\n    async def sock_recv_into(self, sock, buf):\\n        \\\"\\\"\\\"Receive data from the socket.\\n\\n        The received data is written into *buf* (a writable buffer).\\n        The return value is the number of bytes written.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        try:\\n            return sock.recv_into(buf)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        handle = self._add_reader(fd, self._sock_recv_into, fut, sock, buf)\\n        fut.add_done_callback(\\n            functools.partial(self._sock_read_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_recv_into(self, fut, sock, buf):\\n        # _sock_recv_into() can add itself as an I/O callback if the operation\\n        # can't be done immediately. Don't use it directly, call\\n        # sock_recv_into().\\n        if fut.done():\\n            return\\n        try:\\n            nbytes = sock.recv_into(buf)\\n        except (BlockingIOError, InterruptedError):\\n            return  # try again next time\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(nbytes)\\n\\n    async def sock_recvfrom(self, sock, bufsize):\\n        \\\"\\\"\\\"Receive a datagram from a datagram socket.\\n\\n        The return value is a tuple of (bytes, address) representing the\\n        datagram received and the address it came from.\\n        The maximum amount of data to be received at once is specified by\\n        nbytes.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        try:\\n            return sock.recvfrom(bufsize)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        handle = self._add_reader(fd, self._sock_recvfrom, fut, sock, bufsize)\\n        fut.add_done_callback(\\n            functools.partial(self._sock_read_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_recvfrom(self, fut, sock, bufsize):\\n        # _sock_recvfrom() can add itself as an I/O callback if the operation\\n        # can't be done immediately. Don't use it directly, call\\n        # sock_recvfrom().\\n        if fut.done():\\n            return\\n        try:\\n            result = sock.recvfrom(bufsize)\\n        except (BlockingIOError, InterruptedError):\\n            return  # try again next time\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(result)\\n\\n    async def sock_recvfrom_into(self, sock, buf, nbytes=0):\\n        \\\"\\\"\\\"Receive data from the socket.\\n\\n        The received data is written into *buf* (a writable buffer).\\n        The return value is a tuple of (number of bytes written, address).\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        if not nbytes:\\n            nbytes = len(buf)\\n\\n        try:\\n            return sock.recvfrom_into(buf, nbytes)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        handle = self._add_reader(fd, self._sock_recvfrom_into, fut, sock, buf,\\n                                  nbytes)\\n        fut.add_done_callback(\\n            functools.partial(self._sock_read_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_recvfrom_into(self, fut, sock, buf, bufsize):\\n        # _sock_recv_into() can add itself as an I/O callback if the operation\\n        # can't be done immediately. Don't use it directly, call\\n        # sock_recv_into().\\n        if fut.done():\\n            return\\n        try:\\n            result = sock.recvfrom_into(buf, bufsize)\\n        except (BlockingIOError, InterruptedError):\\n            return  # try again next time\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(result)\\n\\n    async def sock_sendall(self, sock, data):\\n        \\\"\\\"\\\"Send data to the socket.\\n\\n        The socket must be connected to a remote socket. This method continues\\n        to send data from data until either all data has been sent or an\\n        error occurs. None is returned on success. On error, an exception is\\n        raised, and there is no way to determine how much data, if any, was\\n        successfully processed by the receiving end of the connection.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        try:\\n            n = sock.send(data)\\n        except (BlockingIOError, InterruptedError):\\n            n = 0\\n\\n        if n == len(data):\\n            # all data sent\\n            return\\n\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        # use a trick with a list in closure to store a mutable state\\n        handle = self._add_writer(fd, self._sock_sendall, fut, sock,\\n                                  memoryview(data), [n])\\n        fut.add_done_callback(\\n            functools.partial(self._sock_write_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_sendall(self, fut, sock, view, pos):\\n        if fut.done():\\n            # Future cancellation can be scheduled on previous loop iteration\\n            return\\n        start = pos[0]\\n        try:\\n            n = sock.send(view[start:])\\n        except (BlockingIOError, InterruptedError):\\n            return\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n            return\\n\\n        start += n\\n\\n        if start == len(view):\\n            fut.set_result(None)\\n        else:\\n            pos[0] = start\\n\\n    async def sock_sendto(self, sock, data, address):\\n        \\\"\\\"\\\"Send data to the socket.\\n\\n        The socket must be connected to a remote socket. This method continues\\n        to send data from data until either all data has been sent or an\\n        error occurs. None is returned on success. On error, an exception is\\n        raised, and there is no way to determine how much data, if any, was\\n        successfully processed by the receiving end of the connection.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        try:\\n            return sock.sendto(data, address)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n\\n        fut = self.create_future()\\n        fd = sock.fileno()\\n        self._ensure_fd_no_transport(fd)\\n        # use a trick with a list in closure to store a mutable state\\n        handle = self._add_writer(fd, self._sock_sendto, fut, sock, data,\\n                                  address)\\n        fut.add_done_callback(\\n            functools.partial(self._sock_write_done, fd, handle=handle))\\n        return await fut\\n\\n    def _sock_sendto(self, fut, sock, data, address):\\n        if fut.done():\\n            # Future cancellation can be scheduled on previous loop iteration\\n            return\\n        try:\\n            n = sock.sendto(data, 0, address)\\n        except (BlockingIOError, InterruptedError):\\n            return\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(n)\\n\\n    async def sock_connect(self, sock, address):\\n        \\\"\\\"\\\"Connect to a remote socket at address.\\n\\n        This method is a coroutine.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n\\n        if sock.family == socket.AF_INET or (\\n                base_events._HAS_IPv6 and sock.family == socket.AF_INET6):\\n            resolved = await self._ensure_resolved(\\n                address, family=sock.family, type=sock.type, proto=sock.proto,\\n                loop=self,\\n            )\\n            _, _, _, _, address = resolved[0]\\n\\n        fut = self.create_future()\\n        self._sock_connect(fut, sock, address)\\n        try:\\n            return await fut\\n        finally:\\n            # Needed to break cycles when an exception occurs.\\n            fut = None\\n\\n    def _sock_connect(self, fut, sock, address):\\n        fd = sock.fileno()\\n        try:\\n            sock.connect(address)\\n        except (BlockingIOError, InterruptedError):\\n            # Issue #23618: When the C function connect() fails with EINTR, the\\n            # connection runs in background. We have to wait until the socket\\n            # becomes writable to be notified when the connection succeed or\\n            # fails.\\n            self._ensure_fd_no_transport(fd)\\n            handle = self._add_writer(\\n                fd, self._sock_connect_cb, fut, sock, address)\\n            fut.add_done_callback(\\n                functools.partial(self._sock_write_done, fd, handle=handle))\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(None)\\n        finally:\\n            fut = None\\n\\n    def _sock_write_done(self, fd, fut, handle=None):\\n        if handle is None or not handle.cancelled():\\n            self.remove_writer(fd)\\n\\n    def _sock_connect_cb(self, fut, sock, address):\\n        if fut.done():\\n            return\\n\\n        try:\\n            err = sock.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)\\n            if err != 0:\\n                # Jump to any except clause below.\\n                raise OSError(err, f'Connect call failed {address}')\\n        except (BlockingIOError, InterruptedError):\\n            # socket is still registered, the callback will be retried later\\n            pass\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result(None)\\n        finally:\\n            fut = None\\n\\n    async def sock_accept(self, sock):\\n        \\\"\\\"\\\"Accept a connection.\\n\\n        The socket must be bound to an address and listening for connections.\\n        The return value is a pair (conn, address) where conn is a new socket\\n        object usable to send and receive data on the connection, and address\\n        is the address bound to the socket on the other end of the connection.\\n        \\\"\\\"\\\"\\n        base_events._check_ssl_socket(sock)\\n        if self._debug and sock.gettimeout() != 0:\\n            raise ValueError(\\\"the socket must be non-blocking\\\")\\n        fut = self.create_future()\\n        self._sock_accept(fut, sock)\\n        return await fut\\n\\n    def _sock_accept(self, fut, sock):\\n        fd = sock.fileno()\\n        try:\\n            conn, address = sock.accept()\\n            conn.setblocking(False)\\n        except (BlockingIOError, InterruptedError):\\n            self._ensure_fd_no_transport(fd)\\n            handle = self._add_reader(fd, self._sock_accept, fut, sock)\\n            fut.add_done_callback(\\n                functools.partial(self._sock_read_done, fd, handle=handle))\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            fut.set_exception(exc)\\n        else:\\n            fut.set_result((conn, address))\\n\\n    async def _sendfile_native(self, transp, file, offset, count):\\n        del self._transports[transp._sock_fd]\\n        resume_reading = transp.is_reading()\\n        transp.pause_reading()\\n        await transp._make_empty_waiter()\\n        try:\\n            return await self.sock_sendfile(transp._sock, file, offset, count,\\n                                            fallback=False)\\n        finally:\\n            transp._reset_empty_waiter()\\n            if resume_reading:\\n                transp.resume_reading()\\n            self._transports[transp._sock_fd] = transp\\n\\n    def _process_events(self, event_list):\\n        for key, mask in event_list:\\n            fileobj, (reader, writer) = key.fileobj, key.data\\n            if mask & selectors.EVENT_READ and reader is not None:\\n                if reader._cancelled:\\n                    self._remove_reader(fileobj)\\n                else:\\n                    self._add_callback(reader)\\n            if mask & selectors.EVENT_WRITE and writer is not None:\\n                if writer._cancelled:\\n                    self._remove_writer(fileobj)\\n                else:\\n                    self._add_callback(writer)\\n\\n    def _stop_serving(self, sock):\\n        self._remove_reader(sock.fileno())\\n        sock.close()\\n\\n\\nclass _SelectorTransport(transports._FlowControlMixin,\\n                         transports.Transport):\\n\\n    max_size = 256 * 1024  # Buffer size passed to recv().\\n\\n    # Attribute used in the destructor: it must be set even if the constructor\\n    # is not called (see _SelectorSslTransport which may start by raising an\\n    # exception)\\n    _sock = None\\n\\n    def __init__(self, loop, sock, protocol, extra=None, server=None):\\n        super().__init__(extra, loop)\\n        self._extra['socket'] = trsock.TransportSocket(sock)\\n        try:\\n            self._extra['sockname'] = sock.getsockname()\\n        except OSError:\\n            self._extra['sockname'] = None\\n        if 'peername' not in self._extra:\\n            try:\\n                self._extra['peername'] = sock.getpeername()\\n            except socket.error:\\n                self._extra['peername'] = None\\n        self._sock = sock\\n        self._sock_fd = sock.fileno()\\n\\n        self._protocol_connected = False\\n        self.set_protocol(protocol)\\n\\n        self._server = server\\n        self._buffer = collections.deque()\\n        self._conn_lost = 0  # Set when call to connection_lost scheduled.\\n        self._closing = False  # Set when close() called.\\n        self._paused = False  # Set when pause_reading() called\\n\\n        if self._server is not None:\\n            self._server._attach()\\n        loop._transports[self._sock_fd] = self\\n\\n    def __repr__(self):\\n        info = [self.__class__.__name__]\\n        if self._sock is None:\\n            info.append('closed')\\n        elif self._closing:\\n            info.append('closing')\\n        info.append(f'fd={self._sock_fd}')\\n        # test if the transport was closed\\n        if self._loop is not None and not self._loop.is_closed():\\n            polling = _test_selector_event(self._loop._selector,\\n                                           self._sock_fd, selectors.EVENT_READ)\\n            if polling:\\n                info.append('read=polling')\\n            else:\\n                info.append('read=idle')\\n\\n            polling = _test_selector_event(self._loop._selector,\\n                                           self._sock_fd,\\n                                           selectors.EVENT_WRITE)\\n            if polling:\\n                state = 'polling'\\n            else:\\n                state = 'idle'\\n\\n            bufsize = self.get_write_buffer_size()\\n            info.append(f'write=<{state}, bufsize={bufsize}>')\\n        return '<{}>'.format(' '.join(info))\\n\\n    def abort(self):\\n        self._force_close(None)\\n\\n    def set_protocol(self, protocol):\\n        self._protocol = protocol\\n        self._protocol_connected = True\\n\\n    def get_protocol(self):\\n        return self._protocol\\n\\n    def is_closing(self):\\n        return self._closing\\n\\n    def is_reading(self):\\n        return not self.is_closing() and not self._paused\\n\\n    def pause_reading(self):\\n        if not self.is_reading():\\n            return\\n        self._paused = True\\n        self._loop._remove_reader(self._sock_fd)\\n        if self._loop.get_debug():\\n            logger.debug(\\\"%r pauses reading\\\", self)\\n\\n    def resume_reading(self):\\n        if self._closing or not self._paused:\\n            return\\n        self._paused = False\\n        self._add_reader(self._sock_fd, self._read_ready)\\n        if self._loop.get_debug():\\n            logger.debug(\\\"%r resumes reading\\\", self)\\n\\n    def close(self):\\n        if self._closing:\\n            return\\n        self._closing = True\\n        self._loop._remove_reader(self._sock_fd)\\n        if not self._buffer:\\n            self._conn_lost += 1\\n            self._loop._remove_writer(self._sock_fd)\\n            self._loop.call_soon(self._call_connection_lost, None)\\n\\n    def __del__(self, _warn=warnings.warn):\\n        if self._sock is not None:\\n            _warn(f\\\"unclosed transport {self!r}\\\", ResourceWarning, source=self)\\n            self._sock.close()\\n\\n    def _fatal_error(self, exc, message='Fatal error on transport'):\\n        # Should be called from exception handler only.\\n        if isinstance(exc, OSError):\\n            if self._loop.get_debug():\\n                logger.debug(\\\"%r: %s\\\", self, message, exc_info=True)\\n        else:\\n            self._loop.call_exception_handler({\\n                'message': message,\\n                'exception': exc,\\n                'transport': self,\\n                'protocol': self._protocol,\\n            })\\n        self._force_close(exc)\\n\\n    def _force_close(self, exc):\\n        if self._conn_lost:\\n            return\\n        if self._buffer:\\n            self._buffer.clear()\\n            self._loop._remove_writer(self._sock_fd)\\n        if not self._closing:\\n            self._closing = True\\n            self._loop._remove_reader(self._sock_fd)\\n        self._conn_lost += 1\\n        self._loop.call_soon(self._call_connection_lost, exc)\\n\\n    def _call_connection_lost(self, exc):\\n        try:\\n            if self._protocol_connected:\\n                self._protocol.connection_lost(exc)\\n        finally:\\n            self._sock.close()\\n            self._sock = None\\n            self._protocol = None\\n            self._loop = None\\n            server = self._server\\n            if server is not None:\\n                server._detach()\\n                self._server = None\\n\\n    def get_write_buffer_size(self):\\n        return sum(map(len, self._buffer))\\n\\n    def _add_reader(self, fd, callback, *args):\\n        if not self.is_reading():\\n            return\\n        self._loop._add_reader(fd, callback, *args)\\n\\n\\nclass _SelectorSocketTransport(_SelectorTransport):\\n\\n    _start_tls_compatible = True\\n    _sendfile_compatible = constants._SendfileMode.TRY_NATIVE\\n\\n    def __init__(self, loop, sock, protocol, waiter=None,\\n                 extra=None, server=None):\\n\\n        self._read_ready_cb = None\\n        super().__init__(loop, sock, protocol, extra, server)\\n        self._eof = False\\n        self._empty_waiter = None\\n        if _HAS_SENDMSG:\\n            self._write_ready = self._write_sendmsg\\n        else:\\n            self._write_ready = self._write_send\\n        # Disable the Nagle algorithm -- small writes will be\\n        # sent without waiting for the TCP ACK.  This generally\\n        # decreases the latency (in some cases significantly.)\\n        base_events._set_nodelay(self._sock)\\n\\n        self._loop.call_soon(self._protocol.connection_made, self)\\n        # only start reading when connection_made() has been called\\n        self._loop.call_soon(self._add_reader,\\n                             self._sock_fd, self._read_ready)\\n        if waiter is not None:\\n            # only wake up the waiter when connection_made() has been called\\n            self._loop.call_soon(futures._set_result_unless_cancelled,\\n                                 waiter, None)\\n\\n    def set_protocol(self, protocol):\\n        if isinstance(protocol, protocols.BufferedProtocol):\\n            self._read_ready_cb = self._read_ready__get_buffer\\n        else:\\n            self._read_ready_cb = self._read_ready__data_received\\n\\n        super().set_protocol(protocol)\\n\\n    def _read_ready(self):\\n        self._read_ready_cb()\\n\\n    def _read_ready__get_buffer(self):\\n        if self._conn_lost:\\n            return\\n\\n        try:\\n            buf = self._protocol.get_buffer(-1)\\n            if not len(buf):\\n                raise RuntimeError('get_buffer() returned an empty buffer')\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(\\n                exc, 'Fatal error: protocol.get_buffer() call failed.')\\n            return\\n\\n        try:\\n            nbytes = self._sock.recv_into(buf)\\n        except (BlockingIOError, InterruptedError):\\n            return\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(exc, 'Fatal read error on socket transport')\\n            return\\n\\n        if not nbytes:\\n            self._read_ready__on_eof()\\n            return\\n\\n        try:\\n            self._protocol.buffer_updated(nbytes)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(\\n                exc, 'Fatal error: protocol.buffer_updated() call failed.')\\n\\n    def _read_ready__data_received(self):\\n        if self._conn_lost:\\n            return\\n        try:\\n            data = self._sock.recv(self.max_size)\\n        except (BlockingIOError, InterruptedError):\\n            return\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(exc, 'Fatal read error on socket transport')\\n            return\\n\\n        if not data:\\n            self._read_ready__on_eof()\\n            return\\n\\n        try:\\n            self._protocol.data_received(data)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(\\n                exc, 'Fatal error: protocol.data_received() call failed.')\\n\\n    def _read_ready__on_eof(self):\\n        if self._loop.get_debug():\\n            logger.debug(\\\"%r received EOF\\\", self)\\n\\n        try:\\n            keep_open = self._protocol.eof_received()\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(\\n                exc, 'Fatal error: protocol.eof_received() call failed.')\\n            return\\n\\n        if keep_open:\\n            # We're keeping the connection open so the\\n            # protocol can write more, but we still can't\\n            # receive more, so remove the reader callback.\\n            self._loop._remove_reader(self._sock_fd)\\n        else:\\n            self.close()\\n\\n    def write(self, data):\\n        if not isinstance(data, (bytes, bytearray, memoryview)):\\n            raise TypeError(f'data argument must be a bytes-like object, '\\n                            f'not {type(data).__name__!r}')\\n        if self._eof:\\n            raise RuntimeError('Cannot call write() after write_eof()')\\n        if self._empty_waiter is not None:\\n            raise RuntimeError('unable to write; sendfile is in progress')\\n        if not data:\\n            return\\n\\n        if self._conn_lost:\\n            if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:\\n                logger.warning('socket.send() raised exception.')\\n            self._conn_lost += 1\\n            return\\n\\n        if not self._buffer:\\n            # Optimization: try to send now.\\n            try:\\n                n = self._sock.send(data)\\n            except (BlockingIOError, InterruptedError):\\n                pass\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException as exc:\\n                self._fatal_error(exc, 'Fatal write error on socket transport')\\n                return\\n            else:\\n                data = memoryview(data)[n:]\\n                if not data:\\n                    return\\n            # Not all was written; register write handler.\\n            self._loop._add_writer(self._sock_fd, self._write_ready)\\n\\n        # Add it to the buffer.\\n        self._buffer.append(data)\\n        self._maybe_pause_protocol()\\n\\n    def _get_sendmsg_buffer(self):\\n        return itertools.islice(self._buffer, SC_IOV_MAX)\\n\\n    def _write_sendmsg(self):\\n        assert self._buffer, 'Data should not be empty'\\n        if self._conn_lost:\\n            return\\n        try:\\n            nbytes = self._sock.sendmsg(self._get_sendmsg_buffer())\\n            self._adjust_leftover_buffer(nbytes)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._loop._remove_writer(self._sock_fd)\\n            self._buffer.clear()\\n            self._fatal_error(exc, 'Fatal write error on socket transport')\\n            if self._empty_waiter is not None:\\n                self._empty_waiter.set_exception(exc)\\n        else:\\n            self._maybe_resume_protocol()  # May append to buffer.\\n            if not self._buffer:\\n                self._loop._remove_writer(self._sock_fd)\\n                if self._empty_waiter is not None:\\n                    self._empty_waiter.set_result(None)\\n                if self._closing:\\n                    self._call_connection_lost(None)\\n                elif self._eof:\\n                    self._sock.shutdown(socket.SHUT_WR)\\n\\n    def _adjust_leftover_buffer(self, nbytes: int) -> None:\\n        buffer = self._buffer\\n        while nbytes:\\n            b = buffer.popleft()\\n            b_len = len(b)\\n            if b_len <= nbytes:\\n                nbytes -= b_len\\n            else:\\n                buffer.appendleft(b[nbytes:])\\n                break\\n\\n    def _write_send(self):\\n        assert self._buffer, 'Data should not be empty'\\n        if self._conn_lost:\\n            return\\n        try:\\n            buffer = self._buffer.popleft()\\n            n = self._sock.send(buffer)\\n            if n != len(buffer):\\n                # Not all data was written\\n                self._buffer.appendleft(buffer[n:])\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._loop._remove_writer(self._sock_fd)\\n            self._buffer.clear()\\n            self._fatal_error(exc, 'Fatal write error on socket transport')\\n            if self._empty_waiter is not None:\\n                self._empty_waiter.set_exception(exc)\\n        else:\\n            self._maybe_resume_protocol()  # May append to buffer.\\n            if not self._buffer:\\n                self._loop._remove_writer(self._sock_fd)\\n                if self._empty_waiter is not None:\\n                    self._empty_waiter.set_result(None)\\n                if self._closing:\\n                    self._call_connection_lost(None)\\n                elif self._eof:\\n                    self._sock.shutdown(socket.SHUT_WR)\\n\\n    def write_eof(self):\\n        if self._closing or self._eof:\\n            return\\n        self._eof = True\\n        if not self._buffer:\\n            self._sock.shutdown(socket.SHUT_WR)\\n\\n    def writelines(self, list_of_data):\\n        if self._eof:\\n            raise RuntimeError('Cannot call writelines() after write_eof()')\\n        if self._empty_waiter is not None:\\n            raise RuntimeError('unable to writelines; sendfile is in progress')\\n        if not list_of_data:\\n            return\\n        self._buffer.extend([memoryview(data) for data in list_of_data])\\n        self._write_ready()\\n        # If the entire buffer couldn't be written, register a write handler\\n        if self._buffer:\\n            self._loop._add_writer(self._sock_fd, self._write_ready)\\n            self._maybe_pause_protocol()\\n\\n    def can_write_eof(self):\\n        return True\\n\\n    def _call_connection_lost(self, exc):\\n        super()._call_connection_lost(exc)\\n        if self._empty_waiter is not None:\\n            self._empty_waiter.set_exception(\\n                ConnectionError(\\\"Connection is closed by peer\\\"))\\n\\n    def _make_empty_waiter(self):\\n        if self._empty_waiter is not None:\\n            raise RuntimeError(\\\"Empty waiter is already set\\\")\\n        self._empty_waiter = self._loop.create_future()\\n        if not self._buffer:\\n            self._empty_waiter.set_result(None)\\n        return self._empty_waiter\\n\\n    def _reset_empty_waiter(self):\\n        self._empty_waiter = None\\n\\n    def close(self):\\n        self._read_ready_cb = None\\n        self._write_ready = None\\n        super().close()\\n\\n\\nclass _SelectorDatagramTransport(_SelectorTransport, transports.DatagramTransport):\\n\\n    _buffer_factory = collections.deque\\n\\n    def __init__(self, loop, sock, protocol, address=None,\\n                 waiter=None, extra=None):\\n        super().__init__(loop, sock, protocol, extra)\\n        self._address = address\\n        self._buffer_size = 0\\n        self._loop.call_soon(self._protocol.connection_made, self)\\n        # only start reading when connection_made() has been called\\n        self._loop.call_soon(self._add_reader,\\n                             self._sock_fd, self._read_ready)\\n        if waiter is not None:\\n            # only wake up the waiter when connection_made() has been called\\n            self._loop.call_soon(futures._set_result_unless_cancelled,\\n                                 waiter, None)\\n\\n    def get_write_buffer_size(self):\\n        return self._buffer_size\\n\\n    def _read_ready(self):\\n        if self._conn_lost:\\n            return\\n        try:\\n            data, addr = self._sock.recvfrom(self.max_size)\\n        except (BlockingIOError, InterruptedError):\\n            pass\\n        except OSError as exc:\\n            self._protocol.error_received(exc)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            self._fatal_error(exc, 'Fatal read error on datagram transport')\\n        else:\\n            self._protocol.datagram_received(data, addr)\\n\\n    def sendto(self, data, addr=None):\\n        if not isinstance(data, (bytes, bytearray, memoryview)):\\n            raise TypeError(f'data argument must be a bytes-like object, '\\n                            f'not {type(data).__name__!r}')\\n        if not data:\\n            return\\n\\n        if self._address:\\n            if addr not in (None, self._address):\\n                raise ValueError(\\n                    f'Invalid address: must be None or {self._address}')\\n            addr = self._address\\n\\n        if self._conn_lost and self._address:\\n            if self._conn_lost >= constants.LOG_THRESHOLD_FOR_CONNLOST_WRITES:\\n                logger.warning('socket.send() raised exception.')\\n            self._conn_lost += 1\\n            return\\n\\n        if not self._buffer:\\n            # Attempt to send it right away first.\\n            try:\\n                if self._extra['peername']:\\n                    self._sock.send(data)\\n                else:\\n                    self._sock.sendto(data, addr)\\n                return\\n            except (BlockingIOError, InterruptedError):\\n                self._loop._add_writer(self._sock_fd, self._sendto_ready)\\n            except OSError as exc:\\n                self._protocol.error_received(exc)\\n                return\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException as exc:\\n                self._fatal_error(\\n                    exc, 'Fatal write error on datagram transport')\\n                return\\n\\n        # Ensure that what we buffer is immutable.\\n        self._buffer.append((bytes(data), addr))\\n        self._buffer_size += len(data)\\n        self._maybe_pause_protocol()\\n\\n    def _sendto_ready(self):\\n        while self._buffer:\\n            data, addr = self._buffer.popleft()\\n            self._buffer_size -= len(data)\\n            try:\\n                if self._extra['peername']:\\n                    self._sock.send(data)\\n                else:\\n                    self._sock.sendto(data, addr)\\n            except (BlockingIOError, InterruptedError):\\n                self._buffer.appendleft((data, addr))  # Try again later.\\n                self._buffer_size += len(data)\\n                break\\n            except OSError as exc:\\n                self._protocol.error_received(exc)\\n                return\\n            except (SystemExit, KeyboardInterrupt):\\n                raise\\n            except BaseException as exc:\\n                self._fatal_error(\\n                    exc, 'Fatal write error on datagram transport')\\n                return\\n\\n        self._maybe_resume_protocol()  # May append to buffer.\\n        if not self._buffer:\\n            self._loop._remove_writer(self._sock_fd)\\n            if self._closing:\\n                self._call_connection_lost(None)\\n\", 1322], \"/usr/lib/python3.12/weakref.py\": [\"\\\"\\\"\\\"Weak reference support for Python.\\n\\nThis module is an implementation of PEP 205:\\n\\nhttps://peps.python.org/pep-0205/\\n\\\"\\\"\\\"\\n\\n# Naming convention: Variables named \\\"wr\\\" are weak reference objects;\\n# they are called this instead of \\\"ref\\\" to avoid name collisions with\\n# the module-global ref() function imported from _weakref.\\n\\nfrom _weakref import (\\n     getweakrefcount,\\n     getweakrefs,\\n     ref,\\n     proxy,\\n     CallableProxyType,\\n     ProxyType,\\n     ReferenceType,\\n     _remove_dead_weakref)\\n\\nfrom _weakrefset import WeakSet, _IterationGuard\\n\\nimport _collections_abc  # Import after _weakref to avoid circular import.\\nimport sys\\nimport itertools\\n\\nProxyTypes = (ProxyType, CallableProxyType)\\n\\n__all__ = [\\\"ref\\\", \\\"proxy\\\", \\\"getweakrefcount\\\", \\\"getweakrefs\\\",\\n           \\\"WeakKeyDictionary\\\", \\\"ReferenceType\\\", \\\"ProxyType\\\",\\n           \\\"CallableProxyType\\\", \\\"ProxyTypes\\\", \\\"WeakValueDictionary\\\",\\n           \\\"WeakSet\\\", \\\"WeakMethod\\\", \\\"finalize\\\"]\\n\\n\\n_collections_abc.MutableSet.register(WeakSet)\\n\\nclass WeakMethod(ref):\\n    \\\"\\\"\\\"\\n    A custom `weakref.ref` subclass which simulates a weak reference to\\n    a bound method, working around the lifetime problem of bound methods.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = \\\"_func_ref\\\", \\\"_meth_type\\\", \\\"_alive\\\", \\\"__weakref__\\\"\\n\\n    def __new__(cls, meth, callback=None):\\n        try:\\n            obj = meth.__self__\\n            func = meth.__func__\\n        except AttributeError:\\n            raise TypeError(\\\"argument should be a bound method, not {}\\\"\\n                            .format(type(meth))) from None\\n        def _cb(arg):\\n            # The self-weakref trick is needed to avoid creating a reference\\n            # cycle.\\n            self = self_wr()\\n            if self._alive:\\n                self._alive = False\\n                if callback is not None:\\n                    callback(self)\\n        self = ref.__new__(cls, obj, _cb)\\n        self._func_ref = ref(func, _cb)\\n        self._meth_type = type(meth)\\n        self._alive = True\\n        self_wr = ref(self)\\n        return self\\n\\n    def __call__(self):\\n        obj = super().__call__()\\n        func = self._func_ref()\\n        if obj is None or func is None:\\n            return None\\n        return self._meth_type(func, obj)\\n\\n    def __eq__(self, other):\\n        if isinstance(other, WeakMethod):\\n            if not self._alive or not other._alive:\\n                return self is other\\n            return ref.__eq__(self, other) and self._func_ref == other._func_ref\\n        return NotImplemented\\n\\n    def __ne__(self, other):\\n        if isinstance(other, WeakMethod):\\n            if not self._alive or not other._alive:\\n                return self is not other\\n            return ref.__ne__(self, other) or self._func_ref != other._func_ref\\n        return NotImplemented\\n\\n    __hash__ = ref.__hash__\\n\\n\\nclass WeakValueDictionary(_collections_abc.MutableMapping):\\n    \\\"\\\"\\\"Mapping class that references values weakly.\\n\\n    Entries in the dictionary will be discarded when no strong\\n    reference to the value exists anymore\\n    \\\"\\\"\\\"\\n    # We inherit the constructor without worrying about the input\\n    # dictionary; since it uses our .update() method, we get the right\\n    # checks (if the other dictionary is a WeakValueDictionary,\\n    # objects are unwrapped on the way out, and we always wrap on the\\n    # way in).\\n\\n    def __init__(self, other=(), /, **kw):\\n        def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(wr.key)\\n                else:\\n                    # Atomic removal is necessary since this function\\n                    # can be called asynchronously by the GC\\n                    _atomic_removal(self.data, wr.key)\\n        self._remove = remove\\n        # A list of keys to be removed\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self.data = {}\\n        self.update(other, **kw)\\n\\n    def _commit_removals(self, _atomic_removal=_remove_dead_weakref):\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        # We shouldn't encounter any KeyError, because this method should\\n        # always be called *before* mutating the dict.\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n            _atomic_removal(d, key)\\n\\n    def __getitem__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        o = self.data[key]()\\n        if o is None:\\n            raise KeyError(key)\\n        else:\\n            return o\\n\\n    def __delitem__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        del self.data[key]\\n\\n    def __len__(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        return len(self.data)\\n\\n    def __contains__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            return False\\n        return o is not None\\n\\n    def __repr__(self):\\n        return \\\"<%s at %#x>\\\" % (self.__class__.__name__, id(self))\\n\\n    def __setitem__(self, key, value):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data[key] = KeyedRef(value, self._remove, key)\\n\\n    def copy(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        new = WeakValueDictionary()\\n        with _IterationGuard(self):\\n            for key, wr in self.data.items():\\n                o = wr()\\n                if o is not None:\\n                    new[key] = o\\n        return new\\n\\n    __copy__ = copy\\n\\n    def __deepcopy__(self, memo):\\n        from copy import deepcopy\\n        if self._pending_removals:\\n            self._commit_removals()\\n        new = self.__class__()\\n        with _IterationGuard(self):\\n            for key, wr in self.data.items():\\n                o = wr()\\n                if o is not None:\\n                    new[deepcopy(key, memo)] = o\\n        return new\\n\\n    def get(self, key, default=None):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            wr = self.data[key]\\n        except KeyError:\\n            return default\\n        else:\\n            o = wr()\\n            if o is None:\\n                # This should only happen\\n                return default\\n            else:\\n                return o\\n\\n    def items(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for k, wr in self.data.items():\\n                v = wr()\\n                if v is not None:\\n                    yield k, v\\n\\n    def keys(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for k, wr in self.data.items():\\n                if wr() is not None:\\n                    yield k\\n\\n    __iter__ = keys\\n\\n    def itervaluerefs(self):\\n        \\\"\\\"\\\"Return an iterator that yields the weak references to the values.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the values around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            yield from self.data.values()\\n\\n    def values(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for wr in self.data.values():\\n                obj = wr()\\n                if obj is not None:\\n                    yield obj\\n\\n    def popitem(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        while True:\\n            key, wr = self.data.popitem()\\n            o = wr()\\n            if o is not None:\\n                return key, o\\n\\n    def pop(self, key, *args):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            o = self.data.pop(key)()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if args:\\n                return args[0]\\n            else:\\n                raise KeyError(key)\\n        else:\\n            return o\\n\\n    def setdefault(self, key, default=None):\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if self._pending_removals:\\n                self._commit_removals()\\n            self.data[key] = KeyedRef(default, self._remove, key)\\n            return default\\n        else:\\n            return o\\n\\n    def update(self, other=None, /, **kwargs):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        d = self.data\\n        if other is not None:\\n            if not hasattr(other, \\\"items\\\"):\\n                other = dict(other)\\n            for key, o in other.items():\\n                d[key] = KeyedRef(o, self._remove, key)\\n        for key, o in kwargs.items():\\n            d[key] = KeyedRef(o, self._remove, key)\\n\\n    def valuerefs(self):\\n        \\\"\\\"\\\"Return a list of weak references to the values.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the values around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        if self._pending_removals:\\n            self._commit_removals()\\n        return list(self.data.values())\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.copy()\\n            c.update(other)\\n            return c\\n        return NotImplemented\\n\\n    def __ror__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.__class__()\\n            c.update(other)\\n            c.update(self)\\n            return c\\n        return NotImplemented\\n\\n\\nclass KeyedRef(ref):\\n    \\\"\\\"\\\"Specialized reference that includes a key corresponding to the value.\\n\\n    This is used in the WeakValueDictionary to avoid having to create\\n    a function object for each key stored in the mapping.  A shared\\n    callback object can use the 'key' attribute of a KeyedRef instead\\n    of getting a reference to the key from an enclosing scope.\\n\\n    \\\"\\\"\\\"\\n\\n    __slots__ = \\\"key\\\",\\n\\n    def __new__(type, ob, callback, key):\\n        self = ref.__new__(type, ob, callback)\\n        self.key = key\\n        return self\\n\\n    def __init__(self, ob, callback, key):\\n        super().__init__(ob, callback)\\n\\n\\nclass WeakKeyDictionary(_collections_abc.MutableMapping):\\n    \\\"\\\"\\\" Mapping class that references keys weakly.\\n\\n    Entries in the dictionary will be discarded when there is no\\n    longer a strong reference to the key. This can be used to\\n    associate additional data with an object owned by other parts of\\n    an application without adding attributes to those objects. This\\n    can be especially useful with objects that override attribute\\n    accesses.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, dict=None):\\n        self.data = {}\\n        def remove(k, selfref=ref(self)):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(k)\\n                else:\\n                    try:\\n                        del self.data[k]\\n                    except KeyError:\\n                        pass\\n        self._remove = remove\\n        # A list of dead weakrefs (keys to be removed)\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self._dirty_len = False\\n        if dict is not None:\\n            self.update(dict)\\n\\n    def _commit_removals(self):\\n        # NOTE: We don't need to call this method before mutating the dict,\\n        # because a dead weakref never compares equal to a live weakref,\\n        # even if they happened to refer to equal objects.\\n        # However, it means keys may already have been removed.\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n\\n            try:\\n                del d[key]\\n            except KeyError:\\n                pass\\n\\n    def _scrub_removals(self):\\n        d = self.data\\n        self._pending_removals = [k for k in self._pending_removals if k in d]\\n        self._dirty_len = False\\n\\n    def __delitem__(self, key):\\n        self._dirty_len = True\\n        del self.data[ref(key)]\\n\\n    def __getitem__(self, key):\\n        return self.data[ref(key)]\\n\\n    def __len__(self):\\n        if self._dirty_len and self._pending_removals:\\n            # self._pending_removals may still contain keys which were\\n            # explicitly removed, we have to scrub them (see issue #21173).\\n            self._scrub_removals()\\n        return len(self.data) - len(self._pending_removals)\\n\\n    def __repr__(self):\\n        return \\\"<%s at %#x>\\\" % (self.__class__.__name__, id(self))\\n\\n    def __setitem__(self, key, value):\\n        self.data[ref(key, self._remove)] = value\\n\\n    def copy(self):\\n        new = WeakKeyDictionary()\\n        with _IterationGuard(self):\\n            for key, value in self.data.items():\\n                o = key()\\n                if o is not None:\\n                    new[o] = value\\n        return new\\n\\n    __copy__ = copy\\n\\n    def __deepcopy__(self, memo):\\n        from copy import deepcopy\\n        new = self.__class__()\\n        with _IterationGuard(self):\\n            for key, value in self.data.items():\\n                o = key()\\n                if o is not None:\\n                    new[o] = deepcopy(value, memo)\\n        return new\\n\\n    def get(self, key, default=None):\\n        return self.data.get(ref(key),default)\\n\\n    def __contains__(self, key):\\n        try:\\n            wr = ref(key)\\n        except TypeError:\\n            return False\\n        return wr in self.data\\n\\n    def items(self):\\n        with _IterationGuard(self):\\n            for wr, value in self.data.items():\\n                key = wr()\\n                if key is not None:\\n                    yield key, value\\n\\n    def keys(self):\\n        with _IterationGuard(self):\\n            for wr in self.data:\\n                obj = wr()\\n                if obj is not None:\\n                    yield obj\\n\\n    __iter__ = keys\\n\\n    def values(self):\\n        with _IterationGuard(self):\\n            for wr, value in self.data.items():\\n                if wr() is not None:\\n                    yield value\\n\\n    def keyrefs(self):\\n        \\\"\\\"\\\"Return a list of weak references to the keys.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the keys around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        return list(self.data)\\n\\n    def popitem(self):\\n        self._dirty_len = True\\n        while True:\\n            key, value = self.data.popitem()\\n            o = key()\\n            if o is not None:\\n                return o, value\\n\\n    def pop(self, key, *args):\\n        self._dirty_len = True\\n        return self.data.pop(ref(key), *args)\\n\\n    def setdefault(self, key, default=None):\\n        return self.data.setdefault(ref(key, self._remove),default)\\n\\n    def update(self, dict=None, /, **kwargs):\\n        d = self.data\\n        if dict is not None:\\n            if not hasattr(dict, \\\"items\\\"):\\n                dict = type({})(dict)\\n            for key, value in dict.items():\\n                d[ref(key, self._remove)] = value\\n        if len(kwargs):\\n            self.update(kwargs)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.copy()\\n            c.update(other)\\n            return c\\n        return NotImplemented\\n\\n    def __ror__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.__class__()\\n            c.update(other)\\n            c.update(self)\\n            return c\\n        return NotImplemented\\n\\n\\nclass finalize:\\n    \\\"\\\"\\\"Class for finalization of weakrefable objects\\n\\n    finalize(obj, func, *args, **kwargs) returns a callable finalizer\\n    object which will be called when obj is garbage collected. The\\n    first time the finalizer is called it evaluates func(*arg, **kwargs)\\n    and returns the result. After this the finalizer is dead, and\\n    calling it just returns None.\\n\\n    When the program exits any remaining finalizers for which the\\n    atexit attribute is true will be run in reverse order of creation.\\n    By default atexit is true.\\n    \\\"\\\"\\\"\\n\\n    # Finalizer objects don't have any state of their own.  They are\\n    # just used as keys to lookup _Info objects in the registry.  This\\n    # ensures that they cannot be part of a ref-cycle.\\n\\n    __slots__ = ()\\n    _registry = {}\\n    _shutdown = False\\n    _index_iter = itertools.count()\\n    _dirty = False\\n    _registered_with_atexit = False\\n\\n    class _Info:\\n        __slots__ = (\\\"weakref\\\", \\\"func\\\", \\\"args\\\", \\\"kwargs\\\", \\\"atexit\\\", \\\"index\\\")\\n\\n    def __init__(self, obj, func, /, *args, **kwargs):\\n        if not self._registered_with_atexit:\\n            # We may register the exit function more than once because\\n            # of a thread race, but that is harmless\\n            import atexit\\n            atexit.register(self._exitfunc)\\n            finalize._registered_with_atexit = True\\n        info = self._Info()\\n        info.weakref = ref(obj, self)\\n        info.func = func\\n        info.args = args\\n        info.kwargs = kwargs or None\\n        info.atexit = True\\n        info.index = next(self._index_iter)\\n        self._registry[self] = info\\n        finalize._dirty = True\\n\\n    def __call__(self, _=None):\\n        \\\"\\\"\\\"If alive then mark as dead and return func(*args, **kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.pop(self, None)\\n        if info and not self._shutdown:\\n            return info.func(*info.args, **(info.kwargs or {}))\\n\\n    def detach(self):\\n        \\\"\\\"\\\"If alive then mark as dead and return (obj, func, args, kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is not None and self._registry.pop(self, None):\\n            return (obj, info.func, info.args, info.kwargs or {})\\n\\n    def peek(self):\\n        \\\"\\\"\\\"If alive then return (obj, func, args, kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is not None:\\n            return (obj, info.func, info.args, info.kwargs or {})\\n\\n    @property\\n    def alive(self):\\n        \\\"\\\"\\\"Whether finalizer is alive\\\"\\\"\\\"\\n        return self in self._registry\\n\\n    @property\\n    def atexit(self):\\n        \\\"\\\"\\\"Whether finalizer should be called at exit\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        return bool(info) and info.atexit\\n\\n    @atexit.setter\\n    def atexit(self, value):\\n        info = self._registry.get(self)\\n        if info:\\n            info.atexit = bool(value)\\n\\n    def __repr__(self):\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is None:\\n            return '<%s object at %#x; dead>' % (type(self).__name__, id(self))\\n        else:\\n            return '<%s object at %#x; for %r at %#x>' % \\\\\\n                (type(self).__name__, id(self), type(obj).__name__, id(obj))\\n\\n    @classmethod\\n    def _select_for_exit(cls):\\n        # Return live finalizers marked for exit, oldest first\\n        L = [(f,i) for (f,i) in cls._registry.items() if i.atexit]\\n        L.sort(key=lambda item:item[1].index)\\n        return [f for (f,i) in L]\\n\\n    @classmethod\\n    def _exitfunc(cls):\\n        # At shutdown invoke finalizers for which atexit is true.\\n        # This is called once all other non-daemonic threads have been\\n        # joined.\\n        reenable_gc = False\\n        try:\\n            if cls._registry:\\n                import gc\\n                if gc.isenabled():\\n                    reenable_gc = True\\n                    gc.disable()\\n                pending = None\\n                while True:\\n                    if pending is None or finalize._dirty:\\n                        pending = cls._select_for_exit()\\n                        finalize._dirty = False\\n                    if not pending:\\n                        break\\n                    f = pending.pop()\\n                    try:\\n                        # gc is disabled, so (assuming no daemonic\\n                        # threads) the following is the only line in\\n                        # this function which might trigger creation\\n                        # of a new finalizer\\n                        f()\\n                    except Exception:\\n                        sys.excepthook(*sys.exc_info())\\n                    assert f not in cls._registry\\n        finally:\\n            # prevent any more finalizers from executing during shutdown\\n            finalize._shutdown = True\\n            if reenable_gc:\\n                gc.enable()\\n\", 674], \"/usr/lib/python3.12/threading.py\": [\"\\\"\\\"\\\"Thread module emulating a subset of Java's threading model.\\\"\\\"\\\"\\n\\nimport os as _os\\nimport sys as _sys\\nimport _thread\\nimport functools\\n\\nfrom time import monotonic as _time\\nfrom _weakrefset import WeakSet\\nfrom itertools import count as _count\\ntry:\\n    from _collections import deque as _deque\\nexcept ImportError:\\n    from collections import deque as _deque\\n\\n# Note regarding PEP 8 compliant names\\n#  This threading model was originally inspired by Java, and inherited\\n# the convention of camelCase function and method names from that\\n# language. Those original names are not in any imminent danger of\\n# being deprecated (even for Py3k),so this module provides them as an\\n# alias for the PEP 8 compliant names\\n# Note that using the new PEP 8 compliant names facilitates substitution\\n# with the multiprocessing module, which doesn't provide the old\\n# Java inspired names.\\n\\n__all__ = ['get_ident', 'active_count', 'Condition', 'current_thread',\\n           'enumerate', 'main_thread', 'TIMEOUT_MAX',\\n           'Event', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Thread',\\n           'Barrier', 'BrokenBarrierError', 'Timer', 'ThreadError',\\n           'setprofile', 'settrace', 'local', 'stack_size',\\n           'excepthook', 'ExceptHookArgs', 'gettrace', 'getprofile',\\n           'setprofile_all_threads','settrace_all_threads']\\n\\n# Rename some stuff so \\\"from threading import *\\\" is safe\\n_start_new_thread = _thread.start_new_thread\\n_daemon_threads_allowed = _thread.daemon_threads_allowed\\n_allocate_lock = _thread.allocate_lock\\n_set_sentinel = _thread._set_sentinel\\nget_ident = _thread.get_ident\\ntry:\\n    _is_main_interpreter = _thread._is_main_interpreter\\nexcept AttributeError:\\n    # See https://github.com/python/cpython/issues/112826.\\n    # We can pretend a subinterpreter is the main interpreter for the\\n    # sake of _shutdown(), since that only means we do not wait for the\\n    # subinterpreter's threads to finish.  Instead, they will be stopped\\n    # later by the mechanism we use for daemon threads.  The likelihood\\n    # of this case is small because rarely will the _thread module be\\n    # replaced by a module without _is_main_interpreter().\\n    # Furthermore, this is all irrelevant in applications\\n    # that do not use subinterpreters.\\n    def _is_main_interpreter():\\n        return True\\ntry:\\n    get_native_id = _thread.get_native_id\\n    _HAVE_THREAD_NATIVE_ID = True\\n    __all__.append('get_native_id')\\nexcept AttributeError:\\n    _HAVE_THREAD_NATIVE_ID = False\\nThreadError = _thread.error\\ntry:\\n    _CRLock = _thread.RLock\\nexcept AttributeError:\\n    _CRLock = None\\nTIMEOUT_MAX = _thread.TIMEOUT_MAX\\ndel _thread\\n\\n\\n# Support for profile and trace hooks\\n\\n_profile_hook = None\\n_trace_hook = None\\n\\ndef setprofile(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    global _profile_hook\\n    _profile_hook = func\\n\\ndef setprofile_all_threads(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    setprofile(func)\\n    _sys._setprofileallthreads(func)\\n\\ndef getprofile():\\n    \\\"\\\"\\\"Get the profiler function as set by threading.setprofile().\\\"\\\"\\\"\\n    return _profile_hook\\n\\ndef settrace(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    global _trace_hook\\n    _trace_hook = func\\n\\ndef settrace_all_threads(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    settrace(func)\\n    _sys._settraceallthreads(func)\\n\\ndef gettrace():\\n    \\\"\\\"\\\"Get the trace function as set by threading.settrace().\\\"\\\"\\\"\\n    return _trace_hook\\n\\n# Synchronization classes\\n\\nLock = _allocate_lock\\n\\ndef RLock(*args, **kwargs):\\n    \\\"\\\"\\\"Factory function that returns a new reentrant lock.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it again\\n    without blocking; the thread must release it once for each time it has\\n    acquired it.\\n\\n    \\\"\\\"\\\"\\n    if _CRLock is None:\\n        return _PyRLock(*args, **kwargs)\\n    return _CRLock(*args, **kwargs)\\n\\nclass _RLock:\\n    \\\"\\\"\\\"This class implements reentrant lock objects.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it\\n    again without blocking; the thread must release it once for each time it\\n    has acquired it.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self):\\n        self._block = _allocate_lock()\\n        self._owner = None\\n        self._count = 0\\n\\n    def __repr__(self):\\n        owner = self._owner\\n        try:\\n            owner = _active[owner].name\\n        except KeyError:\\n            pass\\n        return \\\"<%s %s.%s object owner=%r count=%d at %s>\\\" % (\\n            \\\"locked\\\" if self._block.locked() else \\\"unlocked\\\",\\n            self.__class__.__module__,\\n            self.__class__.__qualname__,\\n            owner,\\n            self._count,\\n            hex(id(self))\\n        )\\n\\n    def _at_fork_reinit(self):\\n        self._block._at_fork_reinit()\\n        self._owner = None\\n        self._count = 0\\n\\n    def acquire(self, blocking=True, timeout=-1):\\n        \\\"\\\"\\\"Acquire a lock, blocking or non-blocking.\\n\\n        When invoked without arguments: if this thread already owns the lock,\\n        increment the recursion level by one, and return immediately. Otherwise,\\n        if another thread owns the lock, block until the lock is unlocked. Once\\n        the lock is unlocked (not owned by any thread), then grab ownership, set\\n        the recursion level to one, and return. If more than one thread is\\n        blocked waiting until the lock is unlocked, only one at a time will be\\n        able to grab ownership of the lock. There is no return value in this\\n        case.\\n\\n        When invoked with the blocking argument set to true, do the same thing\\n        as when called without arguments, and return true.\\n\\n        When invoked with the blocking argument set to false, do not block. If a\\n        call without an argument would block, return false immediately;\\n        otherwise, do the same thing as when called without arguments, and\\n        return true.\\n\\n        When invoked with the floating-point timeout argument set to a positive\\n        value, block for at most the number of seconds specified by timeout\\n        and as long as the lock cannot be acquired.  Return true if the lock has\\n        been acquired, false if the timeout has elapsed.\\n\\n        \\\"\\\"\\\"\\n        me = get_ident()\\n        if self._owner == me:\\n            self._count += 1\\n            return 1\\n        rc = self._block.acquire(blocking, timeout)\\n        if rc:\\n            self._owner = me\\n            self._count = 1\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self):\\n        \\\"\\\"\\\"Release a lock, decrementing the recursion level.\\n\\n        If after the decrement it is zero, reset the lock to unlocked (not owned\\n        by any thread), and if any other threads are blocked waiting for the\\n        lock to become unlocked, allow exactly one of them to proceed. If after\\n        the decrement the recursion level is still nonzero, the lock remains\\n        locked and owned by the calling thread.\\n\\n        Only call this method when the calling thread owns the lock. A\\n        RuntimeError is raised if this method is called when the lock is\\n        unlocked.\\n\\n        There is no return value.\\n\\n        \\\"\\\"\\\"\\n        if self._owner != get_ident():\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        self._count = count = self._count - 1\\n        if not count:\\n            self._owner = None\\n            self._block.release()\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n    # Internal methods used by condition variables\\n\\n    def _acquire_restore(self, state):\\n        self._block.acquire()\\n        self._count, self._owner = state\\n\\n    def _release_save(self):\\n        if self._count == 0:\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        count = self._count\\n        self._count = 0\\n        owner = self._owner\\n        self._owner = None\\n        self._block.release()\\n        return (count, owner)\\n\\n    def _is_owned(self):\\n        return self._owner == get_ident()\\n\\n    # Internal method used for reentrancy checks\\n\\n    def _recursion_count(self):\\n        if self._owner != get_ident():\\n            return 0\\n        return self._count\\n\\n_PyRLock = _RLock\\n\\n\\nclass Condition:\\n    \\\"\\\"\\\"Class that implements a condition variable.\\n\\n    A condition variable allows one or more threads to wait until they are\\n    notified by another thread.\\n\\n    If the lock argument is given and not None, it must be a Lock or RLock\\n    object, and it is used as the underlying lock. Otherwise, a new RLock object\\n    is created and used as the underlying lock.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, lock=None):\\n        if lock is None:\\n            lock = RLock()\\n        self._lock = lock\\n        # Export the lock's acquire() and release() methods\\n        self.acquire = lock.acquire\\n        self.release = lock.release\\n        # If the lock defines _release_save() and/or _acquire_restore(),\\n        # these override the default implementations (which just call\\n        # release() and acquire() on the lock).  Ditto for _is_owned().\\n        if hasattr(lock, '_release_save'):\\n            self._release_save = lock._release_save\\n        if hasattr(lock, '_acquire_restore'):\\n            self._acquire_restore = lock._acquire_restore\\n        if hasattr(lock, '_is_owned'):\\n            self._is_owned = lock._is_owned\\n        self._waiters = _deque()\\n\\n    def _at_fork_reinit(self):\\n        self._lock._at_fork_reinit()\\n        self._waiters.clear()\\n\\n    def __enter__(self):\\n        return self._lock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._lock.__exit__(*args)\\n\\n    def __repr__(self):\\n        return \\\"<Condition(%s, %d)>\\\" % (self._lock, len(self._waiters))\\n\\n    def _release_save(self):\\n        self._lock.release()           # No state to save\\n\\n    def _acquire_restore(self, x):\\n        self._lock.acquire()           # Ignore saved state\\n\\n    def _is_owned(self):\\n        # Return True if lock is owned by current_thread.\\n        # This method is called only if _lock doesn't have _is_owned().\\n        if self._lock.acquire(False):\\n            self._lock.release()\\n            return False\\n        else:\\n            return True\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait until notified or until a timeout occurs.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method releases the underlying lock, and then blocks until it is\\n        awakened by a notify() or notify_all() call for the same condition\\n        variable in another thread, or until the optional timeout occurs. Once\\n        awakened or timed out, it re-acquires the lock and returns.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        When the underlying lock is an RLock, it is not released using its\\n        release() method, since this may not actually unlock the lock when it\\n        was acquired multiple times recursively. Instead, an internal interface\\n        of the RLock class is used, which really unlocks it even when it has\\n        been recursively acquired several times. Another internal interface is\\n        then used to restore the recursion level when the lock is reacquired.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot wait on un-acquired lock\\\")\\n        waiter = _allocate_lock()\\n        waiter.acquire()\\n        self._waiters.append(waiter)\\n        saved_state = self._release_save()\\n        gotit = False\\n        try:    # restore state no matter what (e.g., KeyboardInterrupt)\\n            if timeout is None:\\n                waiter.acquire()\\n                gotit = True\\n            else:\\n                if timeout > 0:\\n                    gotit = waiter.acquire(True, timeout)\\n                else:\\n                    gotit = waiter.acquire(False)\\n            return gotit\\n        finally:\\n            self._acquire_restore(saved_state)\\n            if not gotit:\\n                try:\\n                    self._waiters.remove(waiter)\\n                except ValueError:\\n                    pass\\n\\n    def wait_for(self, predicate, timeout=None):\\n        \\\"\\\"\\\"Wait until a condition evaluates to True.\\n\\n        predicate should be a callable which result will be interpreted as a\\n        boolean value.  A timeout may be provided giving the maximum time to\\n        wait.\\n\\n        \\\"\\\"\\\"\\n        endtime = None\\n        waittime = timeout\\n        result = predicate()\\n        while not result:\\n            if waittime is not None:\\n                if endtime is None:\\n                    endtime = _time() + waittime\\n                else:\\n                    waittime = endtime - _time()\\n                    if waittime <= 0:\\n                        break\\n            self.wait(waittime)\\n            result = predicate()\\n        return result\\n\\n    def notify(self, n=1):\\n        \\\"\\\"\\\"Wake up one or more threads waiting on this condition, if any.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method wakes up at most n of the threads waiting for the condition\\n        variable; it is a no-op if no threads are waiting.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot notify on un-acquired lock\\\")\\n        waiters = self._waiters\\n        while waiters and n > 0:\\n            waiter = waiters[0]\\n            try:\\n                waiter.release()\\n            except RuntimeError:\\n                # gh-92530: The previous call of notify() released the lock,\\n                # but was interrupted before removing it from the queue.\\n                # It can happen if a signal handler raises an exception,\\n                # like CTRL+C which raises KeyboardInterrupt.\\n                pass\\n            else:\\n                n -= 1\\n            try:\\n                waiters.remove(waiter)\\n            except ValueError:\\n                pass\\n\\n    def notify_all(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        If the calling thread has not acquired the lock when this method\\n        is called, a RuntimeError is raised.\\n\\n        \\\"\\\"\\\"\\n        self.notify(len(self._waiters))\\n\\n    def notifyAll(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        This method is deprecated, use notify_all() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('notifyAll() is deprecated, use notify_all() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.notify_all()\\n\\n\\nclass Semaphore:\\n    \\\"\\\"\\\"This class implements semaphore objects.\\n\\n    Semaphores manage a counter representing the number of release() calls minus\\n    the number of acquire() calls, plus an initial value. The acquire() method\\n    blocks if necessary until it can return without making the counter\\n    negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' semaphore class, but not quite the same (no maximum)\\n\\n    def __init__(self, value=1):\\n        if value < 0:\\n            raise ValueError(\\\"semaphore initial value must be >= 0\\\")\\n        self._cond = Condition(Lock())\\n        self._value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}>\\\")\\n\\n    def acquire(self, blocking=True, timeout=None):\\n        \\\"\\\"\\\"Acquire a semaphore, decrementing the internal counter by one.\\n\\n        When invoked without arguments: if the internal counter is larger than\\n        zero on entry, decrement it by one and return immediately. If it is zero\\n        on entry, block, waiting until some other thread has called release() to\\n        make it larger than zero. This is done with proper interlocking so that\\n        if multiple acquire() calls are blocked, release() will wake exactly one\\n        of them up. The implementation may pick one at random, so the order in\\n        which blocked threads are awakened should not be relied on. There is no\\n        return value in this case.\\n\\n        When invoked with blocking set to true, do the same thing as when called\\n        without arguments, and return true.\\n\\n        When invoked with blocking set to false, do not block. If a call without\\n        an argument would block, return false immediately; otherwise, do the\\n        same thing as when called without arguments, and return true.\\n\\n        When invoked with a timeout other than None, it will block for at\\n        most timeout seconds.  If acquire does not complete successfully in\\n        that interval, return false.  Return true otherwise.\\n\\n        \\\"\\\"\\\"\\n        if not blocking and timeout is not None:\\n            raise ValueError(\\\"can't specify timeout for non-blocking acquire\\\")\\n        rc = False\\n        endtime = None\\n        with self._cond:\\n            while self._value == 0:\\n                if not blocking:\\n                    break\\n                if timeout is not None:\\n                    if endtime is None:\\n                        endtime = _time() + timeout\\n                    else:\\n                        timeout = endtime - _time()\\n                        if timeout <= 0:\\n                            break\\n                self._cond.wait(timeout)\\n            else:\\n                self._value -= 1\\n                rc = True\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            self._value += n\\n            self._cond.notify(n)\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n\\nclass BoundedSemaphore(Semaphore):\\n    \\\"\\\"\\\"Implements a bounded semaphore.\\n\\n    A bounded semaphore checks to make sure its current value doesn't exceed its\\n    initial value. If it does, ValueError is raised. In most situations\\n    semaphores are used to guard resources with limited capacity.\\n\\n    If the semaphore is released too many times it's a sign of a bug. If not\\n    given, value defaults to 1.\\n\\n    Like regular semaphores, bounded semaphores manage a counter representing\\n    the number of release() calls minus the number of acquire() calls, plus an\\n    initial value. The acquire() method blocks if necessary until it can return\\n    without making the counter negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, value=1):\\n        super().__init__(value)\\n        self._initial_value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}/{self._initial_value}>\\\")\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        If the number of releases exceeds the number of acquires,\\n        raise a ValueError.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            if self._value + n > self._initial_value:\\n                raise ValueError(\\\"Semaphore released too many times\\\")\\n            self._value += n\\n            self._cond.notify(n)\\n\\n\\nclass Event:\\n    \\\"\\\"\\\"Class implementing event objects.\\n\\n    Events manage a flag that can be set to true with the set() method and reset\\n    to false with the clear() method. The wait() method blocks until the flag is\\n    true.  The flag is initially false.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' event class (without is_posted())\\n\\n    def __init__(self):\\n        self._cond = Condition(Lock())\\n        self._flag = False\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        status = 'set' if self._flag else 'unset'\\n        return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: {status}>\\\"\\n\\n    def _at_fork_reinit(self):\\n        # Private method called by Thread._reset_internal_locks()\\n        self._cond._at_fork_reinit()\\n\\n    def is_set(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\\"\\\"\\\"\\n        return self._flag\\n\\n    def isSet(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\n\\n        This method is deprecated, use is_set() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isSet() is deprecated, use is_set() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.is_set()\\n\\n    def set(self):\\n        \\\"\\\"\\\"Set the internal flag to true.\\n\\n        All threads waiting for it to become true are awakened. Threads\\n        that call wait() once the flag is true will not block at all.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = True\\n            self._cond.notify_all()\\n\\n    def clear(self):\\n        \\\"\\\"\\\"Reset the internal flag to false.\\n\\n        Subsequently, threads calling wait() will block until set() is called to\\n        set the internal flag to true again.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = False\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Block until the internal flag is true.\\n\\n        If the internal flag is true on entry, return immediately. Otherwise,\\n        block until another thread calls set() to set the flag to true, or until\\n        the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        This method returns the internal flag on exit, so it will always return\\n        True except if a timeout is given and the operation times out.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            signaled = self._flag\\n            if not signaled:\\n                signaled = self._cond.wait(timeout)\\n            return signaled\\n\\n\\n# A barrier class.  Inspired in part by the pthread_barrier_* api and\\n# the CyclicBarrier class from Java.  See\\n# http://sourceware.org/pthreads-win32/manual/pthread_barrier_init.html and\\n# http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/\\n#        CyclicBarrier.html\\n# for information.\\n# We maintain two main states, 'filling' and 'draining' enabling the barrier\\n# to be cyclic.  Threads are not allowed into it until it has fully drained\\n# since the previous cycle.  In addition, a 'resetting' state exists which is\\n# similar to 'draining' except that threads leave with a BrokenBarrierError,\\n# and a 'broken' state in which all threads get the exception.\\nclass Barrier:\\n    \\\"\\\"\\\"Implements a Barrier.\\n\\n    Useful for synchronizing a fixed number of threads at known synchronization\\n    points.  Threads block on 'wait()' and are simultaneously awoken once they\\n    have all made that call.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, parties, action=None, timeout=None):\\n        \\\"\\\"\\\"Create a barrier, initialised to 'parties' threads.\\n\\n        'action' is a callable which, when supplied, will be called by one of\\n        the threads after they have all entered the barrier and just prior to\\n        releasing them all. If a 'timeout' is provided, it is used as the\\n        default for all subsequent 'wait()' calls.\\n\\n        \\\"\\\"\\\"\\n        self._cond = Condition(Lock())\\n        self._action = action\\n        self._timeout = timeout\\n        self._parties = parties\\n        self._state = 0  # 0 filling, 1 draining, -1 resetting, -2 broken\\n        self._count = 0\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        if self.broken:\\n            return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: broken>\\\"\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" waiters={self.n_waiting}/{self.parties}>\\\")\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait for the barrier.\\n\\n        When the specified number of threads have started waiting, they are all\\n        simultaneously awoken. If an 'action' was provided for the barrier, one\\n        of the threads will have executed that callback prior to returning.\\n        Returns an individual index number from 0 to 'parties-1'.\\n\\n        \\\"\\\"\\\"\\n        if timeout is None:\\n            timeout = self._timeout\\n        with self._cond:\\n            self._enter() # Block while the barrier drains.\\n            index = self._count\\n            self._count += 1\\n            try:\\n                if index + 1 == self._parties:\\n                    # We release the barrier\\n                    self._release()\\n                else:\\n                    # We wait until someone releases us\\n                    self._wait(timeout)\\n                return index\\n            finally:\\n                self._count -= 1\\n                # Wake up any threads waiting for barrier to drain.\\n                self._exit()\\n\\n    # Block until the barrier is ready for us, or raise an exception\\n    # if it is broken.\\n    def _enter(self):\\n        while self._state in (-1, 1):\\n            # It is draining or resetting, wait until done\\n            self._cond.wait()\\n        #see if the barrier is in a broken state\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 0\\n\\n    # Optionally run the 'action' and release the threads waiting\\n    # in the barrier.\\n    def _release(self):\\n        try:\\n            if self._action:\\n                self._action()\\n            # enter draining state\\n            self._state = 1\\n            self._cond.notify_all()\\n        except:\\n            #an exception during the _action handler.  Break and reraise\\n            self._break()\\n            raise\\n\\n    # Wait in the barrier until we are released.  Raise an exception\\n    # if the barrier is reset or broken.\\n    def _wait(self, timeout):\\n        if not self._cond.wait_for(lambda : self._state != 0, timeout):\\n            #timed out.  Break the barrier\\n            self._break()\\n            raise BrokenBarrierError\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 1\\n\\n    # If we are the last thread to exit the barrier, signal any threads\\n    # waiting for the barrier to drain.\\n    def _exit(self):\\n        if self._count == 0:\\n            if self._state in (-1, 1):\\n                #resetting or draining\\n                self._state = 0\\n                self._cond.notify_all()\\n\\n    def reset(self):\\n        \\\"\\\"\\\"Reset the barrier to the initial state.\\n\\n        Any threads currently waiting will get the BrokenBarrier exception\\n        raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            if self._count > 0:\\n                if self._state == 0:\\n                    #reset the barrier, waking up threads\\n                    self._state = -1\\n                elif self._state == -2:\\n                    #was broken, set it to reset state\\n                    #which clears when the last thread exits\\n                    self._state = -1\\n            else:\\n                self._state = 0\\n            self._cond.notify_all()\\n\\n    def abort(self):\\n        \\\"\\\"\\\"Place the barrier into a 'broken' state.\\n\\n        Useful in case of error.  Any currently waiting threads and threads\\n        attempting to 'wait()' will have BrokenBarrierError raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._break()\\n\\n    def _break(self):\\n        # An internal error was detected.  The barrier is set to\\n        # a broken state all parties awakened.\\n        self._state = -2\\n        self._cond.notify_all()\\n\\n    @property\\n    def parties(self):\\n        \\\"\\\"\\\"Return the number of threads required to trip the barrier.\\\"\\\"\\\"\\n        return self._parties\\n\\n    @property\\n    def n_waiting(self):\\n        \\\"\\\"\\\"Return the number of threads currently waiting at the barrier.\\\"\\\"\\\"\\n        # We don't need synchronization here since this is an ephemeral result\\n        # anyway.  It returns the correct value in the steady state.\\n        if self._state == 0:\\n            return self._count\\n        return 0\\n\\n    @property\\n    def broken(self):\\n        \\\"\\\"\\\"Return True if the barrier is in a broken state.\\\"\\\"\\\"\\n        return self._state == -2\\n\\n# exception raised by the Barrier class\\nclass BrokenBarrierError(RuntimeError):\\n    pass\\n\\n\\n# Helper to generate new thread names\\n_counter = _count(1).__next__\\ndef _newname(name_template):\\n    return name_template % _counter()\\n\\n# Active thread administration.\\n#\\n# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like\\n# threading.enumerate().\\n_active_limbo_lock = RLock()\\n_active = {}    # maps thread id to Thread object\\n_limbo = {}\\n_dangling = WeakSet()\\n\\n# Set of Thread._tstate_lock locks of non-daemon threads used by _shutdown()\\n# to wait until all Python thread states get deleted:\\n# see Thread._set_tstate_lock().\\n_shutdown_locks_lock = _allocate_lock()\\n_shutdown_locks = set()\\n\\ndef _maintain_shutdown_locks():\\n    \\\"\\\"\\\"\\n    Drop any shutdown locks that don't correspond to running threads anymore.\\n\\n    Calling this from time to time avoids an ever-growing _shutdown_locks\\n    set when Thread objects are not joined explicitly. See bpo-37788.\\n\\n    This must be called with _shutdown_locks_lock acquired.\\n    \\\"\\\"\\\"\\n    # If a lock was released, the corresponding thread has exited\\n    to_remove = [lock for lock in _shutdown_locks if not lock.locked()]\\n    _shutdown_locks.difference_update(to_remove)\\n\\n\\n# Main class for threads\\n\\nclass Thread:\\n    \\\"\\\"\\\"A class that represents a thread of control.\\n\\n    This class can be safely subclassed in a limited fashion. There are two ways\\n    to specify the activity: by passing a callable object to the constructor, or\\n    by overriding the run() method in a subclass.\\n\\n    \\\"\\\"\\\"\\n\\n    _initialized = False\\n\\n    def __init__(self, group=None, target=None, name=None,\\n                 args=(), kwargs=None, *, daemon=None):\\n        \\\"\\\"\\\"This constructor should always be called with keyword arguments. Arguments are:\\n\\n        *group* should be None; reserved for future extension when a ThreadGroup\\n        class is implemented.\\n\\n        *target* is the callable object to be invoked by the run()\\n        method. Defaults to None, meaning nothing is called.\\n\\n        *name* is the thread name. By default, a unique name is constructed of\\n        the form \\\"Thread-N\\\" where N is a small decimal number.\\n\\n        *args* is a list or tuple of arguments for the target invocation. Defaults to ().\\n\\n        *kwargs* is a dictionary of keyword arguments for the target\\n        invocation. Defaults to {}.\\n\\n        If a subclass overrides the constructor, it must make sure to invoke\\n        the base class constructor (Thread.__init__()) before doing anything\\n        else to the thread.\\n\\n        \\\"\\\"\\\"\\n        assert group is None, \\\"group argument must be None for now\\\"\\n        if kwargs is None:\\n            kwargs = {}\\n        if name:\\n            name = str(name)\\n        else:\\n            name = _newname(\\\"Thread-%d\\\")\\n            if target is not None:\\n                try:\\n                    target_name = target.__name__\\n                    name += f\\\" ({target_name})\\\"\\n                except AttributeError:\\n                    pass\\n\\n        self._target = target\\n        self._name = name\\n        self._args = args\\n        self._kwargs = kwargs\\n        if daemon is not None:\\n            if daemon and not _daemon_threads_allowed():\\n                raise RuntimeError('daemon threads are disabled in this (sub)interpreter')\\n            self._daemonic = daemon\\n        else:\\n            self._daemonic = current_thread().daemon\\n        self._ident = None\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._native_id = None\\n        self._tstate_lock = None\\n        self._started = Event()\\n        self._is_stopped = False\\n        self._initialized = True\\n        # Copy of sys.stderr used by self._invoke_excepthook()\\n        self._stderr = _sys.stderr\\n        self._invoke_excepthook = _make_invoke_excepthook()\\n        # For debugging and _after_fork()\\n        _dangling.add(self)\\n\\n    def _reset_internal_locks(self, is_alive):\\n        # private!  Called by _after_fork() to reset our internal locks as\\n        # they may be in an invalid state leading to a deadlock or crash.\\n        self._started._at_fork_reinit()\\n        if is_alive:\\n            # bpo-42350: If the fork happens when the thread is already stopped\\n            # (ex: after threading._shutdown() has been called), _tstate_lock\\n            # is None. Do nothing in this case.\\n            if self._tstate_lock is not None:\\n                self._tstate_lock._at_fork_reinit()\\n                self._tstate_lock.acquire()\\n        else:\\n            # The thread isn't alive after fork: it doesn't have a tstate\\n            # anymore.\\n            self._is_stopped = True\\n            self._tstate_lock = None\\n\\n    def __repr__(self):\\n        assert self._initialized, \\\"Thread.__init__() was not called\\\"\\n        status = \\\"initial\\\"\\n        if self._started.is_set():\\n            status = \\\"started\\\"\\n        self.is_alive() # easy way to get ._is_stopped set when appropriate\\n        if self._is_stopped:\\n            status = \\\"stopped\\\"\\n        if self._daemonic:\\n            status += \\\" daemon\\\"\\n        if self._ident is not None:\\n            status += \\\" %s\\\" % self._ident\\n        return \\\"<%s(%s, %s)>\\\" % (self.__class__.__name__, self._name, status)\\n\\n    def start(self):\\n        \\\"\\\"\\\"Start the thread's activity.\\n\\n        It must be called at most once per thread object. It arranges for the\\n        object's run() method to be invoked in a separate thread of control.\\n\\n        This method will raise a RuntimeError if called more than once on the\\n        same thread object.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"thread.__init__() not called\\\")\\n\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"threads can only be started once\\\")\\n\\n        with _active_limbo_lock:\\n            _limbo[self] = self\\n        try:\\n            _start_new_thread(self._bootstrap, ())\\n        except Exception:\\n            with _active_limbo_lock:\\n                del _limbo[self]\\n            raise\\n        self._started.wait()\\n\\n    def run(self):\\n        \\\"\\\"\\\"Method representing the thread's activity.\\n\\n        You may override this method in a subclass. The standard run() method\\n        invokes the callable object passed to the object's constructor as the\\n        target argument, if any, with sequential and keyword arguments taken\\n        from the args and kwargs arguments, respectively.\\n\\n        \\\"\\\"\\\"\\n        try:\\n            if self._target is not None:\\n                self._target(*self._args, **self._kwargs)\\n        finally:\\n            # Avoid a refcycle if the thread is running a function with\\n            # an argument that has a member that points to the thread.\\n            del self._target, self._args, self._kwargs\\n\\n    def _bootstrap(self):\\n        # Wrapper around the real bootstrap code that ignores\\n        # exceptions during interpreter cleanup.  Those typically\\n        # happen when a daemon thread wakes up at an unfortunate\\n        # moment, finds the world around it destroyed, and raises some\\n        # random exception *** while trying to report the exception in\\n        # _bootstrap_inner() below ***.  Those random exceptions\\n        # don't help anybody, and they confuse users, so we suppress\\n        # them.  We suppress them only when it appears that the world\\n        # indeed has already been destroyed, so that exceptions in\\n        # _bootstrap_inner() during normal business hours are properly\\n        # reported.  Also, we only suppress them for daemonic threads;\\n        # if a non-daemonic encounters this, something else is wrong.\\n        try:\\n            self._bootstrap_inner()\\n        except:\\n            if self._daemonic and _sys is None:\\n                return\\n            raise\\n\\n    def _set_ident(self):\\n        self._ident = get_ident()\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        def _set_native_id(self):\\n            self._native_id = get_native_id()\\n\\n    def _set_tstate_lock(self):\\n        \\\"\\\"\\\"\\n        Set a lock object which will be released by the interpreter when\\n        the underlying thread state (see pystate.h) gets deleted.\\n        \\\"\\\"\\\"\\n        self._tstate_lock = _set_sentinel()\\n        self._tstate_lock.acquire()\\n\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                _maintain_shutdown_locks()\\n                _shutdown_locks.add(self._tstate_lock)\\n\\n    def _bootstrap_inner(self):\\n        try:\\n            self._set_ident()\\n            self._set_tstate_lock()\\n            if _HAVE_THREAD_NATIVE_ID:\\n                self._set_native_id()\\n            self._started.set()\\n            with _active_limbo_lock:\\n                _active[self._ident] = self\\n                del _limbo[self]\\n\\n            if _trace_hook:\\n                _sys.settrace(_trace_hook)\\n            if _profile_hook:\\n                _sys.setprofile(_profile_hook)\\n\\n            try:\\n                self.run()\\n            except:\\n                self._invoke_excepthook(self)\\n        finally:\\n            self._delete()\\n\\n    def _stop(self):\\n        # After calling ._stop(), .is_alive() returns False and .join() returns\\n        # immediately.  ._tstate_lock must be released before calling ._stop().\\n        #\\n        # Normal case:  C code at the end of the thread's life\\n        # (release_sentinel in _threadmodule.c) releases ._tstate_lock, and\\n        # that's detected by our ._wait_for_tstate_lock(), called by .join()\\n        # and .is_alive().  Any number of threads _may_ call ._stop()\\n        # simultaneously (for example, if multiple threads are blocked in\\n        # .join() calls), and they're not serialized.  That's harmless -\\n        # they'll just make redundant rebindings of ._is_stopped and\\n        # ._tstate_lock.  Obscure:  we rebind ._tstate_lock last so that the\\n        # \\\"assert self._is_stopped\\\" in ._wait_for_tstate_lock() always works\\n        # (the assert is executed only if ._tstate_lock is None).\\n        #\\n        # Special case:  _main_thread releases ._tstate_lock via this\\n        # module's _shutdown() function.\\n        lock = self._tstate_lock\\n        if lock is not None:\\n            assert not lock.locked()\\n        self._is_stopped = True\\n        self._tstate_lock = None\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                # Remove our lock and other released locks from _shutdown_locks\\n                _maintain_shutdown_locks()\\n\\n    def _delete(self):\\n        \\\"Remove current thread from the dict of currently running threads.\\\"\\n        with _active_limbo_lock:\\n            del _active[get_ident()]\\n            # There must not be any python code between the previous line\\n            # and after the lock is released.  Otherwise a tracing function\\n            # could try to acquire the lock again in the same thread, (in\\n            # current_thread()), and would block.\\n\\n    def join(self, timeout=None):\\n        \\\"\\\"\\\"Wait until the thread terminates.\\n\\n        This blocks the calling thread until the thread whose join() method is\\n        called terminates -- either normally or through an unhandled exception\\n        or until the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof). As join() always returns None, you must call\\n        is_alive() after join() to decide whether a timeout happened -- if the\\n        thread is still alive, the join() call timed out.\\n\\n        When the timeout argument is not present or None, the operation will\\n        block until the thread terminates.\\n\\n        A thread can be join()ed many times.\\n\\n        join() raises a RuntimeError if an attempt is made to join the current\\n        thread as that would cause a deadlock. It is also an error to join() a\\n        thread before it has been started and attempts to do so raises the same\\n        exception.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if not self._started.is_set():\\n            raise RuntimeError(\\\"cannot join thread before it is started\\\")\\n        if self is current_thread():\\n            raise RuntimeError(\\\"cannot join current thread\\\")\\n\\n        if timeout is None:\\n            self._wait_for_tstate_lock()\\n        else:\\n            # the behavior of a negative timeout isn't documented, but\\n            # historically .join(timeout=x) for x<0 has acted as if timeout=0\\n            self._wait_for_tstate_lock(timeout=max(timeout, 0))\\n\\n    def _wait_for_tstate_lock(self, block=True, timeout=-1):\\n        # Issue #18808: wait for the thread state to be gone.\\n        # At the end of the thread's life, after all knowledge of the thread\\n        # is removed from C data structures, C code releases our _tstate_lock.\\n        # This method passes its arguments to _tstate_lock.acquire().\\n        # If the lock is acquired, the C code is done, and self._stop() is\\n        # called.  That sets ._is_stopped to True, and ._tstate_lock to None.\\n        lock = self._tstate_lock\\n        if lock is None:\\n            # already determined that the C code is done\\n            assert self._is_stopped\\n            return\\n\\n        try:\\n            if lock.acquire(block, timeout):\\n                lock.release()\\n                self._stop()\\n        except:\\n            if lock.locked():\\n                # bpo-45274: lock.acquire() acquired the lock, but the function\\n                # was interrupted with an exception before reaching the\\n                # lock.release(). It can happen if a signal handler raises an\\n                # exception, like CTRL+C which raises KeyboardInterrupt.\\n                lock.release()\\n                self._stop()\\n            raise\\n\\n    @property\\n    def name(self):\\n        \\\"\\\"\\\"A string used for identification purposes only.\\n\\n        It has no semantics. Multiple threads may be given the same name. The\\n        initial name is set by the constructor.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._name\\n\\n    @name.setter\\n    def name(self, name):\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        self._name = str(name)\\n\\n    @property\\n    def ident(self):\\n        \\\"\\\"\\\"Thread identifier of this thread or None if it has not been started.\\n\\n        This is a nonzero integer. See the get_ident() function. Thread\\n        identifiers may be recycled when a thread exits and another thread is\\n        created. The identifier is available even after the thread has exited.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._ident\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        @property\\n        def native_id(self):\\n            \\\"\\\"\\\"Native integral thread ID of this thread, or None if it has not been started.\\n\\n            This is a non-negative integer. See the get_native_id() function.\\n            This represents the Thread ID as reported by the kernel.\\n\\n            \\\"\\\"\\\"\\n            assert self._initialized, \\\"Thread.__init__() not called\\\"\\n            return self._native_id\\n\\n    def is_alive(self):\\n        \\\"\\\"\\\"Return whether the thread is alive.\\n\\n        This method returns True just before the run() method starts until just\\n        after the run() method terminates. See also the module function\\n        enumerate().\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        if self._is_stopped or not self._started.is_set():\\n            return False\\n        self._wait_for_tstate_lock(False)\\n        return not self._is_stopped\\n\\n    @property\\n    def daemon(self):\\n        \\\"\\\"\\\"A boolean value indicating whether this thread is a daemon thread.\\n\\n        This must be set before start() is called, otherwise RuntimeError is\\n        raised. Its initial value is inherited from the creating thread; the\\n        main thread is not a daemon thread and therefore all threads created in\\n        the main thread default to daemon = False.\\n\\n        The entire Python program exits when only daemon threads are left.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._daemonic\\n\\n    @daemon.setter\\n    def daemon(self, daemonic):\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if daemonic and not _daemon_threads_allowed():\\n            raise RuntimeError('daemon threads are disabled in this interpreter')\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"cannot set daemon status of active thread\\\")\\n        self._daemonic = daemonic\\n\\n    def isDaemon(self):\\n        \\\"\\\"\\\"Return whether this thread is a daemon.\\n\\n        This method is deprecated, use the daemon attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isDaemon() is deprecated, get the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.daemon\\n\\n    def setDaemon(self, daemonic):\\n        \\\"\\\"\\\"Set whether this thread is a daemon.\\n\\n        This method is deprecated, use the .daemon property instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setDaemon() is deprecated, set the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.daemon = daemonic\\n\\n    def getName(self):\\n        \\\"\\\"\\\"Return a string used for identification purposes only.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('getName() is deprecated, get the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.name\\n\\n    def setName(self, name):\\n        \\\"\\\"\\\"Set the name string for this thread.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setName() is deprecated, set the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.name = name\\n\\n\\ntry:\\n    from _thread import (_excepthook as excepthook,\\n                         _ExceptHookArgs as ExceptHookArgs)\\nexcept ImportError:\\n    # Simple Python implementation if _thread._excepthook() is not available\\n    from traceback import print_exception as _print_exception\\n    from collections import namedtuple\\n\\n    _ExceptHookArgs = namedtuple(\\n        'ExceptHookArgs',\\n        'exc_type exc_value exc_traceback thread')\\n\\n    def ExceptHookArgs(args):\\n        return _ExceptHookArgs(*args)\\n\\n    def excepthook(args, /):\\n        \\\"\\\"\\\"\\n        Handle uncaught Thread.run() exception.\\n        \\\"\\\"\\\"\\n        if args.exc_type == SystemExit:\\n            # silently ignore SystemExit\\n            return\\n\\n        if _sys is not None and _sys.stderr is not None:\\n            stderr = _sys.stderr\\n        elif args.thread is not None:\\n            stderr = args.thread._stderr\\n            if stderr is None:\\n                # do nothing if sys.stderr is None and sys.stderr was None\\n                # when the thread was created\\n                return\\n        else:\\n            # do nothing if sys.stderr is None and args.thread is None\\n            return\\n\\n        if args.thread is not None:\\n            name = args.thread.name\\n        else:\\n            name = get_ident()\\n        print(f\\\"Exception in thread {name}:\\\",\\n              file=stderr, flush=True)\\n        _print_exception(args.exc_type, args.exc_value, args.exc_traceback,\\n                         file=stderr)\\n        stderr.flush()\\n\\n\\n# Original value of threading.excepthook\\n__excepthook__ = excepthook\\n\\n\\ndef _make_invoke_excepthook():\\n    # Create a local namespace to ensure that variables remain alive\\n    # when _invoke_excepthook() is called, even if it is called late during\\n    # Python shutdown. It is mostly needed for daemon threads.\\n\\n    old_excepthook = excepthook\\n    old_sys_excepthook = _sys.excepthook\\n    if old_excepthook is None:\\n        raise RuntimeError(\\\"threading.excepthook is None\\\")\\n    if old_sys_excepthook is None:\\n        raise RuntimeError(\\\"sys.excepthook is None\\\")\\n\\n    sys_exc_info = _sys.exc_info\\n    local_print = print\\n    local_sys = _sys\\n\\n    def invoke_excepthook(thread):\\n        global excepthook\\n        try:\\n            hook = excepthook\\n            if hook is None:\\n                hook = old_excepthook\\n\\n            args = ExceptHookArgs([*sys_exc_info(), thread])\\n\\n            hook(args)\\n        except Exception as exc:\\n            exc.__suppress_context__ = True\\n            del exc\\n\\n            if local_sys is not None and local_sys.stderr is not None:\\n                stderr = local_sys.stderr\\n            else:\\n                stderr = thread._stderr\\n\\n            local_print(\\\"Exception in threading.excepthook:\\\",\\n                        file=stderr, flush=True)\\n\\n            if local_sys is not None and local_sys.excepthook is not None:\\n                sys_excepthook = local_sys.excepthook\\n            else:\\n                sys_excepthook = old_sys_excepthook\\n\\n            sys_excepthook(*sys_exc_info())\\n        finally:\\n            # Break reference cycle (exception stored in a variable)\\n            args = None\\n\\n    return invoke_excepthook\\n\\n\\n# The timer class was contributed by Itamar Shtull-Trauring\\n\\nclass Timer(Thread):\\n    \\\"\\\"\\\"Call a function after a specified number of seconds:\\n\\n            t = Timer(30.0, f, args=None, kwargs=None)\\n            t.start()\\n            t.cancel()     # stop the timer's action if it's still waiting\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, interval, function, args=None, kwargs=None):\\n        Thread.__init__(self)\\n        self.interval = interval\\n        self.function = function\\n        self.args = args if args is not None else []\\n        self.kwargs = kwargs if kwargs is not None else {}\\n        self.finished = Event()\\n\\n    def cancel(self):\\n        \\\"\\\"\\\"Stop the timer if it hasn't finished yet.\\\"\\\"\\\"\\n        self.finished.set()\\n\\n    def run(self):\\n        self.finished.wait(self.interval)\\n        if not self.finished.is_set():\\n            self.function(*self.args, **self.kwargs)\\n        self.finished.set()\\n\\n\\n# Special thread class to represent the main thread\\n\\nclass _MainThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=\\\"MainThread\\\", daemon=False)\\n        self._set_tstate_lock()\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n\\n# Dummy thread class to represent threads not started here.\\n# These aren't garbage collected when they die, nor can they be waited for.\\n# If they invoke anything in threading.py that calls current_thread(), they\\n# leave an entry in the _active dict forever after.\\n# Their purpose is to return *something* from current_thread().\\n# They are marked as daemon threads so we won't wait for them\\n# when we exit (conform previous semantics).\\n\\nclass _DummyThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=_newname(\\\"Dummy-%d\\\"),\\n                        daemon=_daemon_threads_allowed())\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n    def _stop(self):\\n        pass\\n\\n    def is_alive(self):\\n        assert not self._is_stopped and self._started.is_set()\\n        return True\\n\\n    def join(self, timeout=None):\\n        assert False, \\\"cannot join a dummy thread\\\"\\n\\n\\n# Global API functions\\n\\ndef current_thread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    If the caller's thread of control was not created through the threading\\n    module, a dummy thread object with limited functionality is returned.\\n\\n    \\\"\\\"\\\"\\n    try:\\n        return _active[get_ident()]\\n    except KeyError:\\n        return _DummyThread()\\n\\ndef currentThread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    This function is deprecated, use current_thread() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('currentThread() is deprecated, use current_thread() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return current_thread()\\n\\ndef active_count():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    The returned count is equal to the length of the list returned by\\n    enumerate().\\n\\n    \\\"\\\"\\\"\\n    # NOTE: if the logic in here ever changes, update Modules/posixmodule.c\\n    # warn_about_fork_with_threads() to match.\\n    with _active_limbo_lock:\\n        return len(_active) + len(_limbo)\\n\\ndef activeCount():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    This function is deprecated, use active_count() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('activeCount() is deprecated, use active_count() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return active_count()\\n\\ndef _enumerate():\\n    # Same as enumerate(), but without the lock. Internal use only.\\n    return list(_active.values()) + list(_limbo.values())\\n\\ndef enumerate():\\n    \\\"\\\"\\\"Return a list of all Thread objects currently alive.\\n\\n    The list includes daemonic threads, dummy thread objects created by\\n    current_thread(), and the main thread. It excludes terminated threads and\\n    threads that have not yet been started.\\n\\n    \\\"\\\"\\\"\\n    with _active_limbo_lock:\\n        return list(_active.values()) + list(_limbo.values())\\n\\n\\n_threading_atexits = []\\n_SHUTTING_DOWN = False\\n\\ndef _register_atexit(func, *arg, **kwargs):\\n    \\\"\\\"\\\"CPython internal: register *func* to be called before joining threads.\\n\\n    The registered *func* is called with its arguments just before all\\n    non-daemon threads are joined in `_shutdown()`. It provides a similar\\n    purpose to `atexit.register()`, but its functions are called prior to\\n    threading shutdown instead of interpreter shutdown.\\n\\n    For similarity to atexit, the registered functions are called in reverse.\\n    \\\"\\\"\\\"\\n    if _SHUTTING_DOWN:\\n        raise RuntimeError(\\\"can't register atexit after shutdown\\\")\\n\\n    call = functools.partial(func, *arg, **kwargs)\\n    _threading_atexits.append(call)\\n\\n\\nfrom _thread import stack_size\\n\\n# Create the main thread object,\\n# and make it available for the interpreter\\n# (Py_Main) as threading._shutdown.\\n\\n_main_thread = _MainThread()\\n\\ndef _shutdown():\\n    \\\"\\\"\\\"\\n    Wait until the Python thread state of all non-daemon threads get deleted.\\n    \\\"\\\"\\\"\\n    # Obscure:  other threads may be waiting to join _main_thread.  That's\\n    # dubious, but some code does it.  We can't wait for C code to release\\n    # the main thread's tstate_lock - that won't happen until the interpreter\\n    # is nearly dead.  So we release it here.  Note that just calling _stop()\\n    # isn't enough:  other threads may already be waiting on _tstate_lock.\\n    if _main_thread._is_stopped and _is_main_interpreter():\\n        # _shutdown() was already called\\n        return\\n\\n    global _SHUTTING_DOWN\\n    _SHUTTING_DOWN = True\\n\\n    # Call registered threading atexit functions before threads are joined.\\n    # Order is reversed, similar to atexit.\\n    for atexit_call in reversed(_threading_atexits):\\n        atexit_call()\\n\\n    # Main thread\\n    if _main_thread.ident == get_ident():\\n        tlock = _main_thread._tstate_lock\\n        # The main thread isn't finished yet, so its thread state lock can't\\n        # have been released.\\n        assert tlock is not None\\n        assert tlock.locked()\\n        tlock.release()\\n        _main_thread._stop()\\n    else:\\n        # bpo-1596321: _shutdown() must be called in the main thread.\\n        # If the threading module was not imported by the main thread,\\n        # _main_thread is the thread which imported the threading module.\\n        # In this case, ignore _main_thread, similar behavior than for threads\\n        # spawned by C libraries or using _thread.start_new_thread().\\n        pass\\n\\n    # Join all non-deamon threads\\n    while True:\\n        with _shutdown_locks_lock:\\n            locks = list(_shutdown_locks)\\n            _shutdown_locks.clear()\\n\\n        if not locks:\\n            break\\n\\n        for lock in locks:\\n            # mimic Thread.join()\\n            lock.acquire()\\n            lock.release()\\n\\n        # new threads can be spawned while we were waiting for the other\\n        # threads to complete\\n\\n\\ndef main_thread():\\n    \\\"\\\"\\\"Return the main thread object.\\n\\n    In normal conditions, the main thread is the thread from which the\\n    Python interpreter was started.\\n    \\\"\\\"\\\"\\n    # XXX Figure this out for subinterpreters.  (See gh-75698.)\\n    return _main_thread\\n\\n# get thread-local implementation, either from the thread\\n# module, or from the python fallback\\n\\ntry:\\n    from _thread import _local as local\\nexcept ImportError:\\n    from _threading_local import local\\n\\n\\ndef _after_fork():\\n    \\\"\\\"\\\"\\n    Cleanup threading module state that should not exist after a fork.\\n    \\\"\\\"\\\"\\n    # Reset _active_limbo_lock, in case we forked while the lock was held\\n    # by another (non-forked) thread.  http://bugs.python.org/issue874900\\n    global _active_limbo_lock, _main_thread\\n    global _shutdown_locks_lock, _shutdown_locks\\n    _active_limbo_lock = RLock()\\n\\n    # fork() only copied the current thread; clear references to others.\\n    new_active = {}\\n\\n    try:\\n        current = _active[get_ident()]\\n    except KeyError:\\n        # fork() was called in a thread which was not spawned\\n        # by threading.Thread. For example, a thread spawned\\n        # by thread.start_new_thread().\\n        current = _MainThread()\\n\\n    _main_thread = current\\n\\n    # reset _shutdown() locks: threads re-register their _tstate_lock below\\n    _shutdown_locks_lock = _allocate_lock()\\n    _shutdown_locks = set()\\n\\n    with _active_limbo_lock:\\n        # Dangling thread instances must still have their locks reset,\\n        # because someone may join() them.\\n        threads = set(_enumerate())\\n        threads.update(_dangling)\\n        for thread in threads:\\n            # Any lock/condition variable may be currently locked or in an\\n            # invalid state, so we reinitialize them.\\n            if thread is current:\\n                # There is only one active thread. We reset the ident to\\n                # its new value since it can have changed.\\n                thread._reset_internal_locks(True)\\n                ident = get_ident()\\n                if isinstance(thread, _DummyThread):\\n                    thread.__class__ = _MainThread\\n                    thread._name = 'MainThread'\\n                    thread._daemonic = False\\n                    thread._set_tstate_lock()\\n                thread._ident = ident\\n                new_active[ident] = thread\\n            else:\\n                # All the others are already stopped.\\n                thread._reset_internal_locks(False)\\n                thread._stop()\\n\\n        _limbo.clear()\\n        _active.clear()\\n        _active.update(new_active)\\n        assert len(_active) == 1\\n\\n\\nif hasattr(_os, \\\"register_at_fork\\\"):\\n    _os.register_at_fork(after_in_child=_after_fork)\\n\", 1706], \"/usr/lib/python3.12/signal.py\": [\"import _signal\\nfrom _signal import *\\nfrom enum import IntEnum as _IntEnum\\n\\n_globals = globals()\\n\\n_IntEnum._convert_(\\n        'Signals', __name__,\\n        lambda name:\\n            name.isupper()\\n            and (name.startswith('SIG') and not name.startswith('SIG_'))\\n            or name.startswith('CTRL_'))\\n\\n_IntEnum._convert_(\\n        'Handlers', __name__,\\n        lambda name: name in ('SIG_DFL', 'SIG_IGN'))\\n\\nif 'pthread_sigmask' in _globals:\\n    _IntEnum._convert_(\\n            'Sigmasks', __name__,\\n            lambda name: name in ('SIG_BLOCK', 'SIG_UNBLOCK', 'SIG_SETMASK'))\\n\\n\\ndef _int_to_enum(value, enum_klass):\\n    \\\"\\\"\\\"Convert a possible numeric value to an IntEnum member.\\n    If it's not a known member, return the value itself.\\n    \\\"\\\"\\\"\\n    if not isinstance(value, int):\\n        return value\\n    try:\\n        return enum_klass(value)\\n    except ValueError:\\n        return value\\n\\n\\ndef _enum_to_int(value):\\n    \\\"\\\"\\\"Convert an IntEnum member to a numeric value.\\n    If it's not an IntEnum member return the value itself.\\n    \\\"\\\"\\\"\\n    try:\\n        return int(value)\\n    except (ValueError, TypeError):\\n        return value\\n\\n\\n# Similar to functools.wraps(), but only assign __doc__.\\n# __module__ should be preserved,\\n# __name__ and __qualname__ are already fine,\\n# __annotations__ is not set.\\ndef _wraps(wrapped):\\n    def decorator(wrapper):\\n        wrapper.__doc__ = wrapped.__doc__\\n        return wrapper\\n    return decorator\\n\\n@_wraps(_signal.signal)\\ndef signal(signalnum, handler):\\n    handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))\\n    return _int_to_enum(handler, Handlers)\\n\\n\\n@_wraps(_signal.getsignal)\\ndef getsignal(signalnum):\\n    handler = _signal.getsignal(signalnum)\\n    return _int_to_enum(handler, Handlers)\\n\\n\\nif 'pthread_sigmask' in _globals:\\n    @_wraps(_signal.pthread_sigmask)\\n    def pthread_sigmask(how, mask):\\n        sigs_set = _signal.pthread_sigmask(how, mask)\\n        return set(_int_to_enum(x, Signals) for x in sigs_set)\\n\\n\\nif 'sigpending' in _globals:\\n    @_wraps(_signal.sigpending)\\n    def sigpending():\\n        return {_int_to_enum(x, Signals) for x in _signal.sigpending()}\\n\\n\\nif 'sigwait' in _globals:\\n    @_wraps(_signal.sigwait)\\n    def sigwait(sigset):\\n        retsig = _signal.sigwait(sigset)\\n        return _int_to_enum(retsig, Signals)\\n\\n\\nif 'valid_signals' in _globals:\\n    @_wraps(_signal.valid_signals)\\n    def valid_signals():\\n        return {_int_to_enum(x, Signals) for x in _signal.valid_signals()}\\n\\n\\ndel _globals, _wraps\\n\", 94], \"/usr/lib/python3.12/asyncio/base_futures.py\": [\"__all__ = ()\\n\\nimport reprlib\\n\\nfrom . import format_helpers\\n\\n# States for Future.\\n_PENDING = 'PENDING'\\n_CANCELLED = 'CANCELLED'\\n_FINISHED = 'FINISHED'\\n\\n\\ndef isfuture(obj):\\n    \\\"\\\"\\\"Check for a Future.\\n\\n    This returns True when obj is a Future instance or is advertising\\n    itself as duck-type compatible by setting _asyncio_future_blocking.\\n    See comment in Future for more details.\\n    \\\"\\\"\\\"\\n    return (hasattr(obj.__class__, '_asyncio_future_blocking') and\\n            obj._asyncio_future_blocking is not None)\\n\\n\\ndef _format_callbacks(cb):\\n    \\\"\\\"\\\"helper function for Future.__repr__\\\"\\\"\\\"\\n    size = len(cb)\\n    if not size:\\n        cb = ''\\n\\n    def format_cb(callback):\\n        return format_helpers._format_callback_source(callback, ())\\n\\n    if size == 1:\\n        cb = format_cb(cb[0][0])\\n    elif size == 2:\\n        cb = '{}, {}'.format(format_cb(cb[0][0]), format_cb(cb[1][0]))\\n    elif size > 2:\\n        cb = '{}, <{} more>, {}'.format(format_cb(cb[0][0]),\\n                                        size - 2,\\n                                        format_cb(cb[-1][0]))\\n    return f'cb=[{cb}]'\\n\\n\\ndef _future_repr_info(future):\\n    # (Future) -> str\\n    \\\"\\\"\\\"helper function for Future.__repr__\\\"\\\"\\\"\\n    info = [future._state.lower()]\\n    if future._state == _FINISHED:\\n        if future._exception is not None:\\n            info.append(f'exception={future._exception!r}')\\n        else:\\n            # use reprlib to limit the length of the output, especially\\n            # for very long strings\\n            result = reprlib.repr(future._result)\\n            info.append(f'result={result}')\\n    if future._callbacks:\\n        info.append(_format_callbacks(future._callbacks))\\n    if future._source_traceback:\\n        frame = future._source_traceback[-1]\\n        info.append(f'created at {frame[0]}:{frame[1]}')\\n    return info\\n\\n\\n@reprlib.recursive_repr()\\ndef _future_repr(future):\\n    info = ' '.join(_future_repr_info(future))\\n    return f'<{future.__class__.__name__} {info}>'\\n\", 67], \"/usr/lib/python3.12/asyncio/futures.py\": [\"\\\"\\\"\\\"A Future class similar to the one in PEP 3148.\\\"\\\"\\\"\\n\\n__all__ = (\\n    'Future', 'wrap_future', 'isfuture',\\n)\\n\\nimport concurrent.futures\\nimport contextvars\\nimport logging\\nimport sys\\nfrom types import GenericAlias\\n\\nfrom . import base_futures\\nfrom . import events\\nfrom . import exceptions\\nfrom . import format_helpers\\n\\n\\nisfuture = base_futures.isfuture\\n\\n\\n_PENDING = base_futures._PENDING\\n_CANCELLED = base_futures._CANCELLED\\n_FINISHED = base_futures._FINISHED\\n\\n\\nSTACK_DEBUG = logging.DEBUG - 1  # heavy-duty debugging\\n\\n\\nclass Future:\\n    \\\"\\\"\\\"This class is *almost* compatible with concurrent.futures.Future.\\n\\n    Differences:\\n\\n    - This class is not thread-safe.\\n\\n    - result() and exception() do not take a timeout argument and\\n      raise an exception when the future isn't done yet.\\n\\n    - Callbacks registered with add_done_callback() are always called\\n      via the event loop's call_soon().\\n\\n    - This class is not compatible with the wait() and as_completed()\\n      methods in the concurrent.futures package.\\n\\n    (In Python 3.4 or later we may be able to unify the implementations.)\\n    \\\"\\\"\\\"\\n\\n    # Class variables serving as defaults for instance variables.\\n    _state = _PENDING\\n    _result = None\\n    _exception = None\\n    _loop = None\\n    _source_traceback = None\\n    _cancel_message = None\\n    # A saved CancelledError for later chaining as an exception context.\\n    _cancelled_exc = None\\n\\n    # This field is used for a dual purpose:\\n    # - Its presence is a marker to declare that a class implements\\n    #   the Future protocol (i.e. is intended to be duck-type compatible).\\n    #   The value must also be not-None, to enable a subclass to declare\\n    #   that it is not compatible by setting this to None.\\n    # - It is set by __iter__() below so that Task._step() can tell\\n    #   the difference between\\n    #   `await Future()` or`yield from Future()` (correct) vs.\\n    #   `yield Future()` (incorrect).\\n    _asyncio_future_blocking = False\\n\\n    __log_traceback = False\\n\\n    def __init__(self, *, loop=None):\\n        \\\"\\\"\\\"Initialize the future.\\n\\n        The optional event_loop argument allows explicitly setting the event\\n        loop object used by the future. If it's not provided, the future uses\\n        the default event loop.\\n        \\\"\\\"\\\"\\n        if loop is None:\\n            self._loop = events.get_event_loop()\\n        else:\\n            self._loop = loop\\n        self._callbacks = []\\n        if self._loop.get_debug():\\n            self._source_traceback = format_helpers.extract_stack(\\n                sys._getframe(1))\\n\\n    def __repr__(self):\\n        return base_futures._future_repr(self)\\n\\n    def __del__(self):\\n        if not self.__log_traceback:\\n            # set_exception() was not called, or result() or exception()\\n            # has consumed the exception\\n            return\\n        exc = self._exception\\n        context = {\\n            'message':\\n                f'{self.__class__.__name__} exception was never retrieved',\\n            'exception': exc,\\n            'future': self,\\n        }\\n        if self._source_traceback:\\n            context['source_traceback'] = self._source_traceback\\n        self._loop.call_exception_handler(context)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n    @property\\n    def _log_traceback(self):\\n        return self.__log_traceback\\n\\n    @_log_traceback.setter\\n    def _log_traceback(self, val):\\n        if val:\\n            raise ValueError('_log_traceback can only be set to False')\\n        self.__log_traceback = False\\n\\n    def get_loop(self):\\n        \\\"\\\"\\\"Return the event loop the Future is bound to.\\\"\\\"\\\"\\n        loop = self._loop\\n        if loop is None:\\n            raise RuntimeError(\\\"Future object is not initialized.\\\")\\n        return loop\\n\\n    def _make_cancelled_error(self):\\n        \\\"\\\"\\\"Create the CancelledError to raise if the Future is cancelled.\\n\\n        This should only be called once when handling a cancellation since\\n        it erases the saved context exception value.\\n        \\\"\\\"\\\"\\n        if self._cancelled_exc is not None:\\n            exc = self._cancelled_exc\\n            self._cancelled_exc = None\\n            return exc\\n\\n        if self._cancel_message is None:\\n            exc = exceptions.CancelledError()\\n        else:\\n            exc = exceptions.CancelledError(self._cancel_message)\\n        exc.__context__ = self._cancelled_exc\\n        # Remove the reference since we don't need this anymore.\\n        self._cancelled_exc = None\\n        return exc\\n\\n    def cancel(self, msg=None):\\n        \\\"\\\"\\\"Cancel the future and schedule callbacks.\\n\\n        If the future is already done or cancelled, return False.  Otherwise,\\n        change the future's state to cancelled, schedule the callbacks and\\n        return True.\\n        \\\"\\\"\\\"\\n        self.__log_traceback = False\\n        if self._state != _PENDING:\\n            return False\\n        self._state = _CANCELLED\\n        self._cancel_message = msg\\n        self.__schedule_callbacks()\\n        return True\\n\\n    def __schedule_callbacks(self):\\n        \\\"\\\"\\\"Internal: Ask the event loop to call all callbacks.\\n\\n        The callbacks are scheduled to be called as soon as possible. Also\\n        clears the callback list.\\n        \\\"\\\"\\\"\\n        callbacks = self._callbacks[:]\\n        if not callbacks:\\n            return\\n\\n        self._callbacks[:] = []\\n        for callback, ctx in callbacks:\\n            self._loop.call_soon(callback, self, context=ctx)\\n\\n    def cancelled(self):\\n        \\\"\\\"\\\"Return True if the future was cancelled.\\\"\\\"\\\"\\n        return self._state == _CANCELLED\\n\\n    # Don't implement running(); see http://bugs.python.org/issue18699\\n\\n    def done(self):\\n        \\\"\\\"\\\"Return True if the future is done.\\n\\n        Done means either that a result / exception are available, or that the\\n        future was cancelled.\\n        \\\"\\\"\\\"\\n        return self._state != _PENDING\\n\\n    def result(self):\\n        \\\"\\\"\\\"Return the result this future represents.\\n\\n        If the future has been cancelled, raises CancelledError.  If the\\n        future's result isn't yet available, raises InvalidStateError.  If\\n        the future is done and has an exception set, this exception is raised.\\n        \\\"\\\"\\\"\\n        if self._state == _CANCELLED:\\n            exc = self._make_cancelled_error()\\n            raise exc\\n        if self._state != _FINISHED:\\n            raise exceptions.InvalidStateError('Result is not ready.')\\n        self.__log_traceback = False\\n        if self._exception is not None:\\n            raise self._exception.with_traceback(self._exception_tb)\\n        return self._result\\n\\n    def exception(self):\\n        \\\"\\\"\\\"Return the exception that was set on this future.\\n\\n        The exception (or None if no exception was set) is returned only if\\n        the future is done.  If the future has been cancelled, raises\\n        CancelledError.  If the future isn't done yet, raises\\n        InvalidStateError.\\n        \\\"\\\"\\\"\\n        if self._state == _CANCELLED:\\n            exc = self._make_cancelled_error()\\n            raise exc\\n        if self._state != _FINISHED:\\n            raise exceptions.InvalidStateError('Exception is not set.')\\n        self.__log_traceback = False\\n        return self._exception\\n\\n    def add_done_callback(self, fn, *, context=None):\\n        \\\"\\\"\\\"Add a callback to be run when the future becomes done.\\n\\n        The callback is called with a single argument - the future object. If\\n        the future is already done when this is called, the callback is\\n        scheduled with call_soon.\\n        \\\"\\\"\\\"\\n        if self._state != _PENDING:\\n            self._loop.call_soon(fn, self, context=context)\\n        else:\\n            if context is None:\\n                context = contextvars.copy_context()\\n            self._callbacks.append((fn, context))\\n\\n    # New method not in PEP 3148.\\n\\n    def remove_done_callback(self, fn):\\n        \\\"\\\"\\\"Remove all instances of a callback from the \\\"call when done\\\" list.\\n\\n        Returns the number of callbacks removed.\\n        \\\"\\\"\\\"\\n        filtered_callbacks = [(f, ctx)\\n                              for (f, ctx) in self._callbacks\\n                              if f != fn]\\n        removed_count = len(self._callbacks) - len(filtered_callbacks)\\n        if removed_count:\\n            self._callbacks[:] = filtered_callbacks\\n        return removed_count\\n\\n    # So-called internal methods (note: no set_running_or_notify_cancel()).\\n\\n    def set_result(self, result):\\n        \\\"\\\"\\\"Mark the future done and set its result.\\n\\n        If the future is already done when this method is called, raises\\n        InvalidStateError.\\n        \\\"\\\"\\\"\\n        if self._state != _PENDING:\\n            raise exceptions.InvalidStateError(f'{self._state}: {self!r}')\\n        self._result = result\\n        self._state = _FINISHED\\n        self.__schedule_callbacks()\\n\\n    def set_exception(self, exception):\\n        \\\"\\\"\\\"Mark the future done and set an exception.\\n\\n        If the future is already done when this method is called, raises\\n        InvalidStateError.\\n        \\\"\\\"\\\"\\n        if self._state != _PENDING:\\n            raise exceptions.InvalidStateError(f'{self._state}: {self!r}')\\n        if isinstance(exception, type):\\n            exception = exception()\\n        if type(exception) is StopIteration:\\n            raise TypeError(\\\"StopIteration interacts badly with generators \\\"\\n                            \\\"and cannot be raised into a Future\\\")\\n        self._exception = exception\\n        self._exception_tb = exception.__traceback__\\n        self._state = _FINISHED\\n        self.__schedule_callbacks()\\n        self.__log_traceback = True\\n\\n    def __await__(self):\\n        if not self.done():\\n            self._asyncio_future_blocking = True\\n            yield self  # This tells Task to wait for completion.\\n        if not self.done():\\n            raise RuntimeError(\\\"await wasn't used with future\\\")\\n        return self.result()  # May raise too.\\n\\n    __iter__ = __await__  # make compatible with 'yield from'.\\n\\n\\n# Needed for testing purposes.\\n_PyFuture = Future\\n\\n\\ndef _get_loop(fut):\\n    # Tries to call Future.get_loop() if it's available.\\n    # Otherwise fallbacks to using the old '_loop' property.\\n    try:\\n        get_loop = fut.get_loop\\n    except AttributeError:\\n        pass\\n    else:\\n        return get_loop()\\n    return fut._loop\\n\\n\\ndef _set_result_unless_cancelled(fut, result):\\n    \\\"\\\"\\\"Helper setting the result only if the future was not cancelled.\\\"\\\"\\\"\\n    if fut.cancelled():\\n        return\\n    fut.set_result(result)\\n\\n\\ndef _convert_future_exc(exc):\\n    exc_class = type(exc)\\n    if exc_class is concurrent.futures.CancelledError:\\n        return exceptions.CancelledError(*exc.args)\\n    elif exc_class is concurrent.futures.TimeoutError:\\n        return exceptions.TimeoutError(*exc.args)\\n    elif exc_class is concurrent.futures.InvalidStateError:\\n        return exceptions.InvalidStateError(*exc.args)\\n    else:\\n        return exc\\n\\n\\ndef _set_concurrent_future_state(concurrent, source):\\n    \\\"\\\"\\\"Copy state from a future to a concurrent.futures.Future.\\\"\\\"\\\"\\n    assert source.done()\\n    if source.cancelled():\\n        concurrent.cancel()\\n    if not concurrent.set_running_or_notify_cancel():\\n        return\\n    exception = source.exception()\\n    if exception is not None:\\n        concurrent.set_exception(_convert_future_exc(exception))\\n    else:\\n        result = source.result()\\n        concurrent.set_result(result)\\n\\n\\ndef _copy_future_state(source, dest):\\n    \\\"\\\"\\\"Internal helper to copy state from another Future.\\n\\n    The other Future may be a concurrent.futures.Future.\\n    \\\"\\\"\\\"\\n    assert source.done()\\n    if dest.cancelled():\\n        return\\n    assert not dest.done()\\n    if source.cancelled():\\n        dest.cancel()\\n    else:\\n        exception = source.exception()\\n        if exception is not None:\\n            dest.set_exception(_convert_future_exc(exception))\\n        else:\\n            result = source.result()\\n            dest.set_result(result)\\n\\n\\ndef _chain_future(source, destination):\\n    \\\"\\\"\\\"Chain two futures so that when one completes, so does the other.\\n\\n    The result (or exception) of source will be copied to destination.\\n    If destination is cancelled, source gets cancelled too.\\n    Compatible with both asyncio.Future and concurrent.futures.Future.\\n    \\\"\\\"\\\"\\n    if not isfuture(source) and not isinstance(source,\\n                                               concurrent.futures.Future):\\n        raise TypeError('A future is required for source argument')\\n    if not isfuture(destination) and not isinstance(destination,\\n                                                    concurrent.futures.Future):\\n        raise TypeError('A future is required for destination argument')\\n    source_loop = _get_loop(source) if isfuture(source) else None\\n    dest_loop = _get_loop(destination) if isfuture(destination) else None\\n\\n    def _set_state(future, other):\\n        if isfuture(future):\\n            _copy_future_state(other, future)\\n        else:\\n            _set_concurrent_future_state(future, other)\\n\\n    def _call_check_cancel(destination):\\n        if destination.cancelled():\\n            if source_loop is None or source_loop is dest_loop:\\n                source.cancel()\\n            else:\\n                source_loop.call_soon_threadsafe(source.cancel)\\n\\n    def _call_set_state(source):\\n        if (destination.cancelled() and\\n                dest_loop is not None and dest_loop.is_closed()):\\n            return\\n        if dest_loop is None or dest_loop is source_loop:\\n            _set_state(destination, source)\\n        else:\\n            if dest_loop.is_closed():\\n                return\\n            dest_loop.call_soon_threadsafe(_set_state, destination, source)\\n\\n    destination.add_done_callback(_call_check_cancel)\\n    source.add_done_callback(_call_set_state)\\n\\n\\ndef wrap_future(future, *, loop=None):\\n    \\\"\\\"\\\"Wrap concurrent.futures.Future object.\\\"\\\"\\\"\\n    if isfuture(future):\\n        return future\\n    assert isinstance(future, concurrent.futures.Future), \\\\\\n        f'concurrent.futures.Future is expected, got {future!r}'\\n    if loop is None:\\n        loop = events.get_event_loop()\\n    new_future = loop.create_future()\\n    _chain_future(future, new_future)\\n    return new_future\\n\\n\\ntry:\\n    import _asyncio\\nexcept ImportError:\\n    pass\\nelse:\\n    # _CFuture is needed for tests.\\n    Future = _CFuture = _asyncio.Future\\n\", 428], \"/usr/lib/python3.12/asyncio/tasks.py\": [\"\\\"\\\"\\\"Support for tasks, coroutines and the scheduler.\\\"\\\"\\\"\\n\\n__all__ = (\\n    'Task', 'create_task',\\n    'FIRST_COMPLETED', 'FIRST_EXCEPTION', 'ALL_COMPLETED',\\n    'wait', 'wait_for', 'as_completed', 'sleep',\\n    'gather', 'shield', 'ensure_future', 'run_coroutine_threadsafe',\\n    'current_task', 'all_tasks',\\n    'create_eager_task_factory', 'eager_task_factory',\\n    '_register_task', '_unregister_task', '_enter_task', '_leave_task',\\n)\\n\\nimport concurrent.futures\\nimport contextvars\\nimport functools\\nimport inspect\\nimport itertools\\nimport types\\nimport warnings\\nimport weakref\\nfrom types import GenericAlias\\n\\nfrom . import base_tasks\\nfrom . import coroutines\\nfrom . import events\\nfrom . import exceptions\\nfrom . import futures\\nfrom . import timeouts\\n\\n# Helper to generate new task names\\n# This uses itertools.count() instead of a \\\"+= 1\\\" operation because the latter\\n# is not thread safe. See bpo-11866 for a longer explanation.\\n_task_name_counter = itertools.count(1).__next__\\n\\n\\ndef current_task(loop=None):\\n    \\\"\\\"\\\"Return a currently executed task.\\\"\\\"\\\"\\n    if loop is None:\\n        loop = events.get_running_loop()\\n    return _current_tasks.get(loop)\\n\\n\\ndef all_tasks(loop=None):\\n    \\\"\\\"\\\"Return a set of all tasks for the loop.\\\"\\\"\\\"\\n    if loop is None:\\n        loop = events.get_running_loop()\\n    # capturing the set of eager tasks first, so if an eager task \\\"graduates\\\"\\n    # to a regular task in another thread, we don't risk missing it.\\n    eager_tasks = list(_eager_tasks)\\n    # Looping over the WeakSet isn't safe as it can be updated from another\\n    # thread, therefore we cast it to list prior to filtering. The list cast\\n    # itself requires iteration, so we repeat it several times ignoring\\n    # RuntimeErrors (which are not very likely to occur).\\n    # See issues 34970 and 36607 for details.\\n    scheduled_tasks = None\\n    i = 0\\n    while True:\\n        try:\\n            scheduled_tasks = list(_scheduled_tasks)\\n        except RuntimeError:\\n            i += 1\\n            if i >= 1000:\\n                raise\\n        else:\\n            break\\n    return {t for t in itertools.chain(scheduled_tasks, eager_tasks)\\n            if futures._get_loop(t) is loop and not t.done()}\\n\\n\\ndef _set_task_name(task, name):\\n    if name is not None:\\n        try:\\n            set_name = task.set_name\\n        except AttributeError:\\n            warnings.warn(\\\"Task.set_name() was added in Python 3.8, \\\"\\n                      \\\"the method support will be mandatory for third-party \\\"\\n                      \\\"task implementations since 3.13.\\\",\\n                      DeprecationWarning, stacklevel=3)\\n        else:\\n            set_name(name)\\n\\n\\nclass Task(futures._PyFuture):  # Inherit Python Task implementation\\n                                # from a Python Future implementation.\\n\\n    \\\"\\\"\\\"A coroutine wrapped in a Future.\\\"\\\"\\\"\\n\\n    # An important invariant maintained while a Task not done:\\n    # _fut_waiter is either None or a Future.  The Future\\n    # can be either done() or not done().\\n    # The task can be in any of 3 states:\\n    #\\n    # - 1: _fut_waiter is not None and not _fut_waiter.done():\\n    #      __step() is *not* scheduled and the Task is waiting for _fut_waiter.\\n    # - 2: (_fut_waiter is None or _fut_waiter.done()) and __step() is scheduled:\\n    #       the Task is waiting for __step() to be executed.\\n    # - 3:  _fut_waiter is None and __step() is *not* scheduled:\\n    #       the Task is currently executing (in __step()).\\n    #\\n    # * In state 1, one of the callbacks of __fut_waiter must be __wakeup().\\n    # * The transition from 1 to 2 happens when _fut_waiter becomes done(),\\n    #   as it schedules __wakeup() to be called (which calls __step() so\\n    #   we way that __step() is scheduled).\\n    # * It transitions from 2 to 3 when __step() is executed, and it clears\\n    #   _fut_waiter to None.\\n\\n    # If False, don't log a message if the task is destroyed while its\\n    # status is still pending\\n    _log_destroy_pending = True\\n\\n    def __init__(self, coro, *, loop=None, name=None, context=None,\\n                 eager_start=False):\\n        super().__init__(loop=loop)\\n        if self._source_traceback:\\n            del self._source_traceback[-1]\\n        if not coroutines.iscoroutine(coro):\\n            # raise after Future.__init__(), attrs are required for __del__\\n            # prevent logging for pending task in __del__\\n            self._log_destroy_pending = False\\n            raise TypeError(f\\\"a coroutine was expected, got {coro!r}\\\")\\n\\n        if name is None:\\n            self._name = f'Task-{_task_name_counter()}'\\n        else:\\n            self._name = str(name)\\n\\n        self._num_cancels_requested = 0\\n        self._must_cancel = False\\n        self._fut_waiter = None\\n        self._coro = coro\\n        if context is None:\\n            self._context = contextvars.copy_context()\\n        else:\\n            self._context = context\\n\\n        if eager_start and self._loop.is_running():\\n            self.__eager_start()\\n        else:\\n            self._loop.call_soon(self.__step, context=self._context)\\n            _register_task(self)\\n\\n    def __del__(self):\\n        if self._state == futures._PENDING and self._log_destroy_pending:\\n            context = {\\n                'task': self,\\n                'message': 'Task was destroyed but it is pending!',\\n            }\\n            if self._source_traceback:\\n                context['source_traceback'] = self._source_traceback\\n            self._loop.call_exception_handler(context)\\n        super().__del__()\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\\n    def __repr__(self):\\n        return base_tasks._task_repr(self)\\n\\n    def get_coro(self):\\n        return self._coro\\n\\n    def get_context(self):\\n        return self._context\\n\\n    def get_name(self):\\n        return self._name\\n\\n    def set_name(self, value):\\n        self._name = str(value)\\n\\n    def set_result(self, result):\\n        raise RuntimeError('Task does not support set_result operation')\\n\\n    def set_exception(self, exception):\\n        raise RuntimeError('Task does not support set_exception operation')\\n\\n    def get_stack(self, *, limit=None):\\n        \\\"\\\"\\\"Return the list of stack frames for this task's coroutine.\\n\\n        If the coroutine is not done, this returns the stack where it is\\n        suspended.  If the coroutine has completed successfully or was\\n        cancelled, this returns an empty list.  If the coroutine was\\n        terminated by an exception, this returns the list of traceback\\n        frames.\\n\\n        The frames are always ordered from oldest to newest.\\n\\n        The optional limit gives the maximum number of frames to\\n        return; by default all available frames are returned.  Its\\n        meaning differs depending on whether a stack or a traceback is\\n        returned: the newest frames of a stack are returned, but the\\n        oldest frames of a traceback are returned.  (This matches the\\n        behavior of the traceback module.)\\n\\n        For reasons beyond our control, only one stack frame is\\n        returned for a suspended coroutine.\\n        \\\"\\\"\\\"\\n        return base_tasks._task_get_stack(self, limit)\\n\\n    def print_stack(self, *, limit=None, file=None):\\n        \\\"\\\"\\\"Print the stack or traceback for this task's coroutine.\\n\\n        This produces output similar to that of the traceback module,\\n        for the frames retrieved by get_stack().  The limit argument\\n        is passed to get_stack().  The file argument is an I/O stream\\n        to which the output is written; by default output is written\\n        to sys.stderr.\\n        \\\"\\\"\\\"\\n        return base_tasks._task_print_stack(self, limit, file)\\n\\n    def cancel(self, msg=None):\\n        \\\"\\\"\\\"Request that this task cancel itself.\\n\\n        This arranges for a CancelledError to be thrown into the\\n        wrapped coroutine on the next cycle through the event loop.\\n        The coroutine then has a chance to clean up or even deny\\n        the request using try/except/finally.\\n\\n        Unlike Future.cancel, this does not guarantee that the\\n        task will be cancelled: the exception might be caught and\\n        acted upon, delaying cancellation of the task or preventing\\n        cancellation completely.  The task may also return a value or\\n        raise a different exception.\\n\\n        Immediately after this method is called, Task.cancelled() will\\n        not return True (unless the task was already cancelled).  A\\n        task will be marked as cancelled when the wrapped coroutine\\n        terminates with a CancelledError exception (even if cancel()\\n        was not called).\\n\\n        This also increases the task's count of cancellation requests.\\n        \\\"\\\"\\\"\\n        self._log_traceback = False\\n        if self.done():\\n            return False\\n        self._num_cancels_requested += 1\\n        # These two lines are controversial.  See discussion starting at\\n        # https://github.com/python/cpython/pull/31394#issuecomment-1053545331\\n        # Also remember that this is duplicated in _asynciomodule.c.\\n        # if self._num_cancels_requested > 1:\\n        #     return False\\n        if self._fut_waiter is not None:\\n            if self._fut_waiter.cancel(msg=msg):\\n                # Leave self._fut_waiter; it may be a Task that\\n                # catches and ignores the cancellation so we may have\\n                # to cancel it again later.\\n                return True\\n        # It must be the case that self.__step is already scheduled.\\n        self._must_cancel = True\\n        self._cancel_message = msg\\n        return True\\n\\n    def cancelling(self):\\n        \\\"\\\"\\\"Return the count of the task's cancellation requests.\\n\\n        This count is incremented when .cancel() is called\\n        and may be decremented using .uncancel().\\n        \\\"\\\"\\\"\\n        return self._num_cancels_requested\\n\\n    def uncancel(self):\\n        \\\"\\\"\\\"Decrement the task's count of cancellation requests.\\n\\n        This should be called by the party that called `cancel()` on the task\\n        beforehand.\\n\\n        Returns the remaining number of cancellation requests.\\n        \\\"\\\"\\\"\\n        if self._num_cancels_requested > 0:\\n            self._num_cancels_requested -= 1\\n        return self._num_cancels_requested\\n\\n    def __eager_start(self):\\n        prev_task = _swap_current_task(self._loop, self)\\n        try:\\n            _register_eager_task(self)\\n            try:\\n                self._context.run(self.__step_run_and_handle_result, None)\\n            finally:\\n                _unregister_eager_task(self)\\n        finally:\\n            try:\\n                curtask = _swap_current_task(self._loop, prev_task)\\n                assert curtask is self\\n            finally:\\n                if self.done():\\n                    self._coro = None\\n                    self = None  # Needed to break cycles when an exception occurs.\\n                else:\\n                    _register_task(self)\\n\\n    def __step(self, exc=None):\\n        if self.done():\\n            raise exceptions.InvalidStateError(\\n                f'_step(): already done: {self!r}, {exc!r}')\\n        if self._must_cancel:\\n            if not isinstance(exc, exceptions.CancelledError):\\n                exc = self._make_cancelled_error()\\n            self._must_cancel = False\\n        self._fut_waiter = None\\n\\n        _enter_task(self._loop, self)\\n        try:\\n            self.__step_run_and_handle_result(exc)\\n        finally:\\n            _leave_task(self._loop, self)\\n            self = None  # Needed to break cycles when an exception occurs.\\n\\n    def __step_run_and_handle_result(self, exc):\\n        coro = self._coro\\n        try:\\n            if exc is None:\\n                # We use the `send` method directly, because coroutines\\n                # don't have `__iter__` and `__next__` methods.\\n                result = coro.send(None)\\n            else:\\n                result = coro.throw(exc)\\n        except StopIteration as exc:\\n            if self._must_cancel:\\n                # Task is cancelled right before coro stops.\\n                self._must_cancel = False\\n                super().cancel(msg=self._cancel_message)\\n            else:\\n                super().set_result(exc.value)\\n        except exceptions.CancelledError as exc:\\n            # Save the original exception so we can chain it later.\\n            self._cancelled_exc = exc\\n            super().cancel()  # I.e., Future.cancel(self).\\n        except (KeyboardInterrupt, SystemExit) as exc:\\n            super().set_exception(exc)\\n            raise\\n        except BaseException as exc:\\n            super().set_exception(exc)\\n        else:\\n            blocking = getattr(result, '_asyncio_future_blocking', None)\\n            if blocking is not None:\\n                # Yielded Future must come from Future.__iter__().\\n                if futures._get_loop(result) is not self._loop:\\n                    new_exc = RuntimeError(\\n                        f'Task {self!r} got Future '\\n                        f'{result!r} attached to a different loop')\\n                    self._loop.call_soon(\\n                        self.__step, new_exc, context=self._context)\\n                elif blocking:\\n                    if result is self:\\n                        new_exc = RuntimeError(\\n                            f'Task cannot await on itself: {self!r}')\\n                        self._loop.call_soon(\\n                            self.__step, new_exc, context=self._context)\\n                    else:\\n                        result._asyncio_future_blocking = False\\n                        result.add_done_callback(\\n                            self.__wakeup, context=self._context)\\n                        self._fut_waiter = result\\n                        if self._must_cancel:\\n                            if self._fut_waiter.cancel(\\n                                    msg=self._cancel_message):\\n                                self._must_cancel = False\\n                else:\\n                    new_exc = RuntimeError(\\n                        f'yield was used instead of yield from '\\n                        f'in task {self!r} with {result!r}')\\n                    self._loop.call_soon(\\n                        self.__step, new_exc, context=self._context)\\n\\n            elif result is None:\\n                # Bare yield relinquishes control for one event loop iteration.\\n                self._loop.call_soon(self.__step, context=self._context)\\n            elif inspect.isgenerator(result):\\n                # Yielding a generator is just wrong.\\n                new_exc = RuntimeError(\\n                    f'yield was used instead of yield from for '\\n                    f'generator in task {self!r} with {result!r}')\\n                self._loop.call_soon(\\n                    self.__step, new_exc, context=self._context)\\n            else:\\n                # Yielding something else is an error.\\n                new_exc = RuntimeError(f'Task got bad yield: {result!r}')\\n                self._loop.call_soon(\\n                    self.__step, new_exc, context=self._context)\\n        finally:\\n            self = None  # Needed to break cycles when an exception occurs.\\n\\n    def __wakeup(self, future):\\n        try:\\n            future.result()\\n        except BaseException as exc:\\n            # This may also be a cancellation.\\n            self.__step(exc)\\n        else:\\n            # Don't pass the value of `future.result()` explicitly,\\n            # as `Future.__iter__` and `Future.__await__` don't need it.\\n            # If we call `_step(value, None)` instead of `_step()`,\\n            # Python eval loop would use `.send(value)` method call,\\n            # instead of `__next__()`, which is slower for futures\\n            # that return non-generator iterators from their `__iter__`.\\n            self.__step()\\n        self = None  # Needed to break cycles when an exception occurs.\\n\\n\\n_PyTask = Task\\n\\n\\ntry:\\n    import _asyncio\\nexcept ImportError:\\n    pass\\nelse:\\n    # _CTask is needed for tests.\\n    Task = _CTask = _asyncio.Task\\n\\n\\ndef create_task(coro, *, name=None, context=None):\\n    \\\"\\\"\\\"Schedule the execution of a coroutine object in a spawn task.\\n\\n    Return a Task object.\\n    \\\"\\\"\\\"\\n    loop = events.get_running_loop()\\n    if context is None:\\n        # Use legacy API if context is not needed\\n        task = loop.create_task(coro)\\n    else:\\n        task = loop.create_task(coro, context=context)\\n\\n    _set_task_name(task, name)\\n    return task\\n\\n\\n# wait() and as_completed() similar to those in PEP 3148.\\n\\nFIRST_COMPLETED = concurrent.futures.FIRST_COMPLETED\\nFIRST_EXCEPTION = concurrent.futures.FIRST_EXCEPTION\\nALL_COMPLETED = concurrent.futures.ALL_COMPLETED\\n\\n\\nasync def wait(fs, *, timeout=None, return_when=ALL_COMPLETED):\\n    \\\"\\\"\\\"Wait for the Futures or Tasks given by fs to complete.\\n\\n    The fs iterable must not be empty.\\n\\n    Coroutines will be wrapped in Tasks.\\n\\n    Returns two sets of Future: (done, pending).\\n\\n    Usage:\\n\\n        done, pending = await asyncio.wait(fs)\\n\\n    Note: This does not raise TimeoutError! Futures that aren't done\\n    when the timeout occurs are returned in the second set.\\n    \\\"\\\"\\\"\\n    if futures.isfuture(fs) or coroutines.iscoroutine(fs):\\n        raise TypeError(f\\\"expect a list of futures, not {type(fs).__name__}\\\")\\n    if not fs:\\n        raise ValueError('Set of Tasks/Futures is empty.')\\n    if return_when not in (FIRST_COMPLETED, FIRST_EXCEPTION, ALL_COMPLETED):\\n        raise ValueError(f'Invalid return_when value: {return_when}')\\n\\n    fs = set(fs)\\n\\n    if any(coroutines.iscoroutine(f) for f in fs):\\n        raise TypeError(\\\"Passing coroutines is forbidden, use tasks explicitly.\\\")\\n\\n    loop = events.get_running_loop()\\n    return await _wait(fs, timeout, return_when, loop)\\n\\n\\ndef _release_waiter(waiter, *args):\\n    if not waiter.done():\\n        waiter.set_result(None)\\n\\n\\nasync def wait_for(fut, timeout):\\n    \\\"\\\"\\\"Wait for the single Future or coroutine to complete, with timeout.\\n\\n    Coroutine will be wrapped in Task.\\n\\n    Returns result of the Future or coroutine.  When a timeout occurs,\\n    it cancels the task and raises TimeoutError.  To avoid the task\\n    cancellation, wrap it in shield().\\n\\n    If the wait is cancelled, the task is also cancelled.\\n\\n    If the task suppresses the cancellation and returns a value instead,\\n    that value is returned.\\n\\n    This function is a coroutine.\\n    \\\"\\\"\\\"\\n    # The special case for timeout <= 0 is for the following case:\\n    #\\n    # async def test_waitfor():\\n    #     func_started = False\\n    #\\n    #     async def func():\\n    #         nonlocal func_started\\n    #         func_started = True\\n    #\\n    #     try:\\n    #         await asyncio.wait_for(func(), 0)\\n    #     except asyncio.TimeoutError:\\n    #         assert not func_started\\n    #     else:\\n    #         assert False\\n    #\\n    # asyncio.run(test_waitfor())\\n\\n\\n    if timeout is not None and timeout <= 0:\\n        fut = ensure_future(fut)\\n\\n        if fut.done():\\n            return fut.result()\\n\\n        await _cancel_and_wait(fut)\\n        try:\\n            return fut.result()\\n        except exceptions.CancelledError as exc:\\n            raise TimeoutError from exc\\n\\n    async with timeouts.timeout(timeout):\\n        return await fut\\n\\nasync def _wait(fs, timeout, return_when, loop):\\n    \\\"\\\"\\\"Internal helper for wait().\\n\\n    The fs argument must be a collection of Futures.\\n    \\\"\\\"\\\"\\n    assert fs, 'Set of Futures is empty.'\\n    waiter = loop.create_future()\\n    timeout_handle = None\\n    if timeout is not None:\\n        timeout_handle = loop.call_later(timeout, _release_waiter, waiter)\\n    counter = len(fs)\\n\\n    def _on_completion(f):\\n        nonlocal counter\\n        counter -= 1\\n        if (counter <= 0 or\\n            return_when == FIRST_COMPLETED or\\n            return_when == FIRST_EXCEPTION and (not f.cancelled() and\\n                                                f.exception() is not None)):\\n            if timeout_handle is not None:\\n                timeout_handle.cancel()\\n            if not waiter.done():\\n                waiter.set_result(None)\\n\\n    for f in fs:\\n        f.add_done_callback(_on_completion)\\n\\n    try:\\n        await waiter\\n    finally:\\n        if timeout_handle is not None:\\n            timeout_handle.cancel()\\n        for f in fs:\\n            f.remove_done_callback(_on_completion)\\n\\n    done, pending = set(), set()\\n    for f in fs:\\n        if f.done():\\n            done.add(f)\\n        else:\\n            pending.add(f)\\n    return done, pending\\n\\n\\nasync def _cancel_and_wait(fut):\\n    \\\"\\\"\\\"Cancel the *fut* future or task and wait until it completes.\\\"\\\"\\\"\\n\\n    loop = events.get_running_loop()\\n    waiter = loop.create_future()\\n    cb = functools.partial(_release_waiter, waiter)\\n    fut.add_done_callback(cb)\\n\\n    try:\\n        fut.cancel()\\n        # We cannot wait on *fut* directly to make\\n        # sure _cancel_and_wait itself is reliably cancellable.\\n        await waiter\\n    finally:\\n        fut.remove_done_callback(cb)\\n\\n\\n# This is *not* a @coroutine!  It is just an iterator (yielding Futures).\\ndef as_completed(fs, *, timeout=None):\\n    \\\"\\\"\\\"Return an iterator whose values are coroutines.\\n\\n    When waiting for the yielded coroutines you'll get the results (or\\n    exceptions!) of the original Futures (or coroutines), in the order\\n    in which and as soon as they complete.\\n\\n    This differs from PEP 3148; the proper way to use this is:\\n\\n        for f in as_completed(fs):\\n            result = await f  # The 'await' may raise.\\n            # Use result.\\n\\n    If a timeout is specified, the 'await' will raise\\n    TimeoutError when the timeout occurs before all Futures are done.\\n\\n    Note: The futures 'f' are not necessarily members of fs.\\n    \\\"\\\"\\\"\\n    if futures.isfuture(fs) or coroutines.iscoroutine(fs):\\n        raise TypeError(f\\\"expect an iterable of futures, not {type(fs).__name__}\\\")\\n\\n    from .queues import Queue  # Import here to avoid circular import problem.\\n    done = Queue()\\n\\n    loop = events.get_event_loop()\\n    todo = {ensure_future(f, loop=loop) for f in set(fs)}\\n    timeout_handle = None\\n\\n    def _on_timeout():\\n        for f in todo:\\n            f.remove_done_callback(_on_completion)\\n            done.put_nowait(None)  # Queue a dummy value for _wait_for_one().\\n        todo.clear()  # Can't do todo.remove(f) in the loop.\\n\\n    def _on_completion(f):\\n        if not todo:\\n            return  # _on_timeout() was here first.\\n        todo.remove(f)\\n        done.put_nowait(f)\\n        if not todo and timeout_handle is not None:\\n            timeout_handle.cancel()\\n\\n    async def _wait_for_one():\\n        f = await done.get()\\n        if f is None:\\n            # Dummy value from _on_timeout().\\n            raise exceptions.TimeoutError\\n        return f.result()  # May raise f.exception().\\n\\n    for f in todo:\\n        f.add_done_callback(_on_completion)\\n    if todo and timeout is not None:\\n        timeout_handle = loop.call_later(timeout, _on_timeout)\\n    for _ in range(len(todo)):\\n        yield _wait_for_one()\\n\\n\\n@types.coroutine\\ndef __sleep0():\\n    \\\"\\\"\\\"Skip one event loop run cycle.\\n\\n    This is a private helper for 'asyncio.sleep()', used\\n    when the 'delay' is set to 0.  It uses a bare 'yield'\\n    expression (which Task.__step knows how to handle)\\n    instead of creating a Future object.\\n    \\\"\\\"\\\"\\n    yield\\n\\n\\nasync def sleep(delay, result=None):\\n    \\\"\\\"\\\"Coroutine that completes after a given time (in seconds).\\\"\\\"\\\"\\n    if delay <= 0:\\n        await __sleep0()\\n        return result\\n\\n    loop = events.get_running_loop()\\n    future = loop.create_future()\\n    h = loop.call_later(delay,\\n                        futures._set_result_unless_cancelled,\\n                        future, result)\\n    try:\\n        return await future\\n    finally:\\n        h.cancel()\\n\\n\\ndef ensure_future(coro_or_future, *, loop=None):\\n    \\\"\\\"\\\"Wrap a coroutine or an awaitable in a future.\\n\\n    If the argument is a Future, it is returned directly.\\n    \\\"\\\"\\\"\\n    if futures.isfuture(coro_or_future):\\n        if loop is not None and loop is not futures._get_loop(coro_or_future):\\n            raise ValueError('The future belongs to a different loop than '\\n                            'the one specified as the loop argument')\\n        return coro_or_future\\n    should_close = True\\n    if not coroutines.iscoroutine(coro_or_future):\\n        if inspect.isawaitable(coro_or_future):\\n            async def _wrap_awaitable(awaitable):\\n                return await awaitable\\n\\n            coro_or_future = _wrap_awaitable(coro_or_future)\\n            should_close = False\\n        else:\\n            raise TypeError('An asyncio.Future, a coroutine or an awaitable '\\n                            'is required')\\n\\n    if loop is None:\\n        loop = events.get_event_loop()\\n    try:\\n        return loop.create_task(coro_or_future)\\n    except RuntimeError:\\n        if should_close:\\n            coro_or_future.close()\\n        raise\\n\\n\\nclass _GatheringFuture(futures.Future):\\n    \\\"\\\"\\\"Helper for gather().\\n\\n    This overrides cancel() to cancel all the children and act more\\n    like Task.cancel(), which doesn't immediately mark itself as\\n    cancelled.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, children, *, loop):\\n        assert loop is not None\\n        super().__init__(loop=loop)\\n        self._children = children\\n        self._cancel_requested = False\\n\\n    def cancel(self, msg=None):\\n        if self.done():\\n            return False\\n        ret = False\\n        for child in self._children:\\n            if child.cancel(msg=msg):\\n                ret = True\\n        if ret:\\n            # If any child tasks were actually cancelled, we should\\n            # propagate the cancellation request regardless of\\n            # *return_exceptions* argument.  See issue 32684.\\n            self._cancel_requested = True\\n        return ret\\n\\n\\ndef gather(*coros_or_futures, return_exceptions=False):\\n    \\\"\\\"\\\"Return a future aggregating results from the given coroutines/futures.\\n\\n    Coroutines will be wrapped in a future and scheduled in the event\\n    loop. They will not necessarily be scheduled in the same order as\\n    passed in.\\n\\n    All futures must share the same event loop.  If all the tasks are\\n    done successfully, the returned future's result is the list of\\n    results (in the order of the original sequence, not necessarily\\n    the order of results arrival).  If *return_exceptions* is True,\\n    exceptions in the tasks are treated the same as successful\\n    results, and gathered in the result list; otherwise, the first\\n    raised exception will be immediately propagated to the returned\\n    future.\\n\\n    Cancellation: if the outer Future is cancelled, all children (that\\n    have not completed yet) are also cancelled.  If any child is\\n    cancelled, this is treated as if it raised CancelledError --\\n    the outer Future is *not* cancelled in this case.  (This is to\\n    prevent the cancellation of one child to cause other children to\\n    be cancelled.)\\n\\n    If *return_exceptions* is False, cancelling gather() after it\\n    has been marked done won't cancel any submitted awaitables.\\n    For instance, gather can be marked done after propagating an\\n    exception to the caller, therefore, calling ``gather.cancel()``\\n    after catching an exception (raised by one of the awaitables) from\\n    gather won't cancel any other awaitables.\\n    \\\"\\\"\\\"\\n    if not coros_or_futures:\\n        loop = events.get_event_loop()\\n        outer = loop.create_future()\\n        outer.set_result([])\\n        return outer\\n\\n    def _done_callback(fut):\\n        nonlocal nfinished\\n        nfinished += 1\\n\\n        if outer is None or outer.done():\\n            if not fut.cancelled():\\n                # Mark exception retrieved.\\n                fut.exception()\\n            return\\n\\n        if not return_exceptions:\\n            if fut.cancelled():\\n                # Check if 'fut' is cancelled first, as\\n                # 'fut.exception()' will *raise* a CancelledError\\n                # instead of returning it.\\n                exc = fut._make_cancelled_error()\\n                outer.set_exception(exc)\\n                return\\n            else:\\n                exc = fut.exception()\\n                if exc is not None:\\n                    outer.set_exception(exc)\\n                    return\\n\\n        if nfinished == nfuts:\\n            # All futures are done; create a list of results\\n            # and set it to the 'outer' future.\\n            results = []\\n\\n            for fut in children:\\n                if fut.cancelled():\\n                    # Check if 'fut' is cancelled first, as 'fut.exception()'\\n                    # will *raise* a CancelledError instead of returning it.\\n                    # Also, since we're adding the exception return value\\n                    # to 'results' instead of raising it, don't bother\\n                    # setting __context__.  This also lets us preserve\\n                    # calling '_make_cancelled_error()' at most once.\\n                    res = exceptions.CancelledError(\\n                        '' if fut._cancel_message is None else\\n                        fut._cancel_message)\\n                else:\\n                    res = fut.exception()\\n                    if res is None:\\n                        res = fut.result()\\n                results.append(res)\\n\\n            if outer._cancel_requested:\\n                # If gather is being cancelled we must propagate the\\n                # cancellation regardless of *return_exceptions* argument.\\n                # See issue 32684.\\n                exc = fut._make_cancelled_error()\\n                outer.set_exception(exc)\\n            else:\\n                outer.set_result(results)\\n\\n    arg_to_fut = {}\\n    children = []\\n    nfuts = 0\\n    nfinished = 0\\n    done_futs = []\\n    loop = None\\n    outer = None  # bpo-46672\\n    for arg in coros_or_futures:\\n        if arg not in arg_to_fut:\\n            fut = ensure_future(arg, loop=loop)\\n            if loop is None:\\n                loop = futures._get_loop(fut)\\n            if fut is not arg:\\n                # 'arg' was not a Future, therefore, 'fut' is a new\\n                # Future created specifically for 'arg'.  Since the caller\\n                # can't control it, disable the \\\"destroy pending task\\\"\\n                # warning.\\n                fut._log_destroy_pending = False\\n\\n            nfuts += 1\\n            arg_to_fut[arg] = fut\\n            if fut.done():\\n                done_futs.append(fut)\\n            else:\\n                fut.add_done_callback(_done_callback)\\n\\n        else:\\n            # There's a duplicate Future object in coros_or_futures.\\n            fut = arg_to_fut[arg]\\n\\n        children.append(fut)\\n\\n    outer = _GatheringFuture(children, loop=loop)\\n    # Run done callbacks after GatheringFuture created so any post-processing\\n    # can be performed at this point\\n    # optimization: in the special case that *all* futures finished eagerly,\\n    # this will effectively complete the gather eagerly, with the last\\n    # callback setting the result (or exception) on outer before returning it\\n    for fut in done_futs:\\n        _done_callback(fut)\\n    return outer\\n\\n\\ndef shield(arg):\\n    \\\"\\\"\\\"Wait for a future, shielding it from cancellation.\\n\\n    The statement\\n\\n        task = asyncio.create_task(something())\\n        res = await shield(task)\\n\\n    is exactly equivalent to the statement\\n\\n        res = await something()\\n\\n    *except* that if the coroutine containing it is cancelled, the\\n    task running in something() is not cancelled.  From the POV of\\n    something(), the cancellation did not happen.  But its caller is\\n    still cancelled, so the yield-from expression still raises\\n    CancelledError.  Note: If something() is cancelled by other means\\n    this will still cancel shield().\\n\\n    If you want to completely ignore cancellation (not recommended)\\n    you can combine shield() with a try/except clause, as follows:\\n\\n        task = asyncio.create_task(something())\\n        try:\\n            res = await shield(task)\\n        except CancelledError:\\n            res = None\\n\\n    Save a reference to tasks passed to this function, to avoid\\n    a task disappearing mid-execution. The event loop only keeps\\n    weak references to tasks. A task that isn't referenced elsewhere\\n    may get garbage collected at any time, even before it's done.\\n    \\\"\\\"\\\"\\n    inner = ensure_future(arg)\\n    if inner.done():\\n        # Shortcut.\\n        return inner\\n    loop = futures._get_loop(inner)\\n    outer = loop.create_future()\\n\\n    def _inner_done_callback(inner):\\n        if outer.cancelled():\\n            if not inner.cancelled():\\n                # Mark inner's result as retrieved.\\n                inner.exception()\\n            return\\n\\n        if inner.cancelled():\\n            outer.cancel()\\n        else:\\n            exc = inner.exception()\\n            if exc is not None:\\n                outer.set_exception(exc)\\n            else:\\n                outer.set_result(inner.result())\\n\\n\\n    def _outer_done_callback(outer):\\n        if not inner.done():\\n            inner.remove_done_callback(_inner_done_callback)\\n\\n    inner.add_done_callback(_inner_done_callback)\\n    outer.add_done_callback(_outer_done_callback)\\n    return outer\\n\\n\\ndef run_coroutine_threadsafe(coro, loop):\\n    \\\"\\\"\\\"Submit a coroutine object to a given event loop.\\n\\n    Return a concurrent.futures.Future to access the result.\\n    \\\"\\\"\\\"\\n    if not coroutines.iscoroutine(coro):\\n        raise TypeError('A coroutine object is required')\\n    future = concurrent.futures.Future()\\n\\n    def callback():\\n        try:\\n            futures._chain_future(ensure_future(coro, loop=loop), future)\\n        except (SystemExit, KeyboardInterrupt):\\n            raise\\n        except BaseException as exc:\\n            if future.set_running_or_notify_cancel():\\n                future.set_exception(exc)\\n            raise\\n\\n    loop.call_soon_threadsafe(callback)\\n    return future\\n\\n\\ndef create_eager_task_factory(custom_task_constructor):\\n    \\\"\\\"\\\"Create a function suitable for use as a task factory on an event-loop.\\n\\n        Example usage:\\n\\n            loop.set_task_factory(\\n                asyncio.create_eager_task_factory(my_task_constructor))\\n\\n        Now, tasks created will be started immediately (rather than being first\\n        scheduled to an event loop). The constructor argument can be any callable\\n        that returns a Task-compatible object and has a signature compatible\\n        with `Task.__init__`; it must have the `eager_start` keyword argument.\\n\\n        Most applications will use `Task` for `custom_task_constructor` and in\\n        this case there's no need to call `create_eager_task_factory()`\\n        directly. Instead the  global `eager_task_factory` instance can be\\n        used. E.g. `loop.set_task_factory(asyncio.eager_task_factory)`.\\n        \\\"\\\"\\\"\\n\\n    def factory(loop, coro, *, name=None, context=None):\\n        return custom_task_constructor(\\n            coro, loop=loop, name=name, context=context, eager_start=True)\\n\\n    return factory\\n\\n\\neager_task_factory = create_eager_task_factory(Task)\\n\\n\\n# Collectively these two sets hold references to the complete set of active\\n# tasks. Eagerly executed tasks use a faster regular set as an optimization\\n# but may graduate to a WeakSet if the task blocks on IO.\\n_scheduled_tasks = weakref.WeakSet()\\n_eager_tasks = set()\\n\\n# Dictionary containing tasks that are currently active in\\n# all running event loops.  {EventLoop: Task}\\n_current_tasks = {}\\n\\n\\ndef _register_task(task):\\n    \\\"\\\"\\\"Register an asyncio Task scheduled to run on an event loop.\\\"\\\"\\\"\\n    _scheduled_tasks.add(task)\\n\\n\\ndef _register_eager_task(task):\\n    \\\"\\\"\\\"Register an asyncio Task about to be eagerly executed.\\\"\\\"\\\"\\n    _eager_tasks.add(task)\\n\\n\\ndef _enter_task(loop, task):\\n    current_task = _current_tasks.get(loop)\\n    if current_task is not None:\\n        raise RuntimeError(f\\\"Cannot enter into task {task!r} while another \\\"\\n                           f\\\"task {current_task!r} is being executed.\\\")\\n    _current_tasks[loop] = task\\n\\n\\ndef _leave_task(loop, task):\\n    current_task = _current_tasks.get(loop)\\n    if current_task is not task:\\n        raise RuntimeError(f\\\"Leaving task {task!r} does not match \\\"\\n                           f\\\"the current task {current_task!r}.\\\")\\n    del _current_tasks[loop]\\n\\n\\ndef _swap_current_task(loop, task):\\n    prev_task = _current_tasks.get(loop)\\n    if task is None:\\n        del _current_tasks[loop]\\n    else:\\n        _current_tasks[loop] = task\\n    return prev_task\\n\\n\\ndef _unregister_task(task):\\n    \\\"\\\"\\\"Unregister a completed, scheduled Task.\\\"\\\"\\\"\\n    _scheduled_tasks.discard(task)\\n\\n\\ndef _unregister_eager_task(task):\\n    \\\"\\\"\\\"Unregister a task which finished its first eager step.\\\"\\\"\\\"\\n    _eager_tasks.discard(task)\\n\\n\\n_py_current_task = current_task\\n_py_register_task = _register_task\\n_py_register_eager_task = _register_eager_task\\n_py_unregister_task = _unregister_task\\n_py_unregister_eager_task = _unregister_eager_task\\n_py_enter_task = _enter_task\\n_py_leave_task = _leave_task\\n_py_swap_current_task = _swap_current_task\\n\\n\\ntry:\\n    from _asyncio import (_register_task, _register_eager_task,\\n                          _unregister_task, _unregister_eager_task,\\n                          _enter_task, _leave_task, _swap_current_task,\\n                          _scheduled_tasks, _eager_tasks, _current_tasks,\\n                          current_task)\\nexcept ImportError:\\n    pass\\nelse:\\n    _c_current_task = current_task\\n    _c_register_task = _register_task\\n    _c_register_eager_task = _register_eager_task\\n    _c_unregister_task = _unregister_task\\n    _c_unregister_eager_task = _unregister_eager_task\\n    _c_enter_task = _enter_task\\n    _c_leave_task = _leave_task\\n    _c_swap_current_task = _swap_current_task\\n\", 1065], \"/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py\": [\"import asyncio\\n\\n\\nasync def io_task():\\n    await asyncio.sleep(0.01)\\n\\n\\nasync def main():\\n    t1 = asyncio.create_task(io_task())\\n    t2 = asyncio.create_task(io_task())\\n    t3 = asyncio.create_task(io_task())\\n\\n    await t1\\n    await t2\\n    await t3\\n\\n\\nif __name__ == \\\"__main__\\\":\\n    asyncio.run(main())\\n\", 19]}, \"functions\": {\"Runner.__init__ (/usr/lib/python3.12/asyncio/runners.py:48)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 48], \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\": [\"<frozen importlib._bootstrap>\", 645], \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\": [\"<frozen importlib._bootstrap>\", 1390], \"BaseDefaultEventLoopPolicy.__init__ (/usr/lib/python3.12/asyncio/events.py:671)\": [\"/usr/lib/python3.12/asyncio/events.py\", 671], \"_UnixDefaultEventLoopPolicy.__init__ (/usr/lib/python3.12/asyncio/unix_events.py:1446)\": [\"/usr/lib/python3.12/asyncio/unix_events.py\", 1446], \"_init_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:775)\": [\"/usr/lib/python3.12/asyncio/events.py\", 775], \"get_event_loop_policy (/usr/lib/python3.12/asyncio/events.py:783)\": [\"/usr/lib/python3.12/asyncio/events.py\", 783], \"_createenviron.<locals>.encode (<frozen os>:762)\": [\"<frozen os>\", 762], \"_Environ.__getitem__ (<frozen os>:680)\": [\"<frozen os>\", 680], \"Mapping.get (<frozen _collections_abc>:804)\": [\"<frozen _collections_abc>\", 804], \"_is_debug_mode (/usr/lib/python3.12/asyncio/coroutines.py:10)\": [\"/usr/lib/python3.12/asyncio/coroutines.py\", 10], \"BaseEventLoop.is_running (/usr/lib/python3.12/asyncio/base_events.py:730)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 730], \"BaseEventLoop.set_debug (/usr/lib/python3.12/asyncio/base_events.py:2008)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 2008], \"WeakSet.__init__ (/usr/lib/python3.12/_weakrefset.py:37)\": [\"/usr/lib/python3.12/_weakrefset.py\", 37], \"BaseEventLoop.__init__ (/usr/lib/python3.12/asyncio/base_events.py:411)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 411], \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\": [\"/usr/lib/python3.12/selectors.py\", 63], \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\": [\"/usr/lib/python3.12/selectors.py\", 209], \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\": [\"/usr/lib/python3.12/selectors.py\", 347], \"_acquireLock (/usr/lib/python3.12/logging/__init__.py:234)\": [\"/usr/lib/python3.12/logging/__init__.py\", 234], \"Manager.disable (/usr/lib/python3.12/logging/__init__.py:1369)\": [\"/usr/lib/python3.12/logging/__init__.py\", 1369], \"Logger.getEffectiveLevel (/usr/lib/python3.12/logging/__init__.py:1776)\": [\"/usr/lib/python3.12/logging/__init__.py\", 1776], \"_releaseLock (/usr/lib/python3.12/logging/__init__.py:243)\": [\"/usr/lib/python3.12/logging/__init__.py\", 243], \"Logger.isEnabledFor (/usr/lib/python3.12/logging/__init__.py:1790)\": [\"/usr/lib/python3.12/logging/__init__.py\", 1790], \"Logger.debug (/usr/lib/python3.12/logging/__init__.py:1517)\": [\"/usr/lib/python3.12/logging/__init__.py\", 1517], \"socket.__init__ (/usr/lib/python3.12/socket.py:221)\": [\"/usr/lib/python3.12/socket.py\", 221], \"socketpair (/usr/lib/python3.12/socket.py:596)\": [\"/usr/lib/python3.12/socket.py\", 596], \"BaseEventLoop._check_closed (/usr/lib/python3.12/asyncio/base_events.py:539)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 539], \"BaseEventLoop.get_debug (/usr/lib/python3.12/asyncio/base_events.py:2005)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 2005], \"Handle.__init__ (/usr/lib/python3.12/asyncio/events.py:36)\": [\"/usr/lib/python3.12/asyncio/events.py\", 36], \"_BaseSelectorImpl.get_map (/usr/lib/python3.12/selectors.py:272)\": [\"/usr/lib/python3.12/selectors.py\", 272], \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\": [\"/usr/lib/python3.12/selectors.py\", 21], \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\": [\"/usr/lib/python3.12/selectors.py\", 215], \"_SelectorMapping.__getitem__ (/usr/lib/python3.12/selectors.py:69)\": [\"/usr/lib/python3.12/selectors.py\", 69], \"BaseSelector.get_key (/usr/lib/python3.12/selectors.py:180)\": [\"/usr/lib/python3.12/selectors.py\", 180], \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\": [\"/usr/lib/python3.12/selectors.py\", 234], \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\": [\"/usr/lib/python3.12/selectors.py\", 351], \"BaseSelectorEventLoop._add_reader (/usr/lib/python3.12/asyncio/selector_events.py:278)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 278], \"BaseSelectorEventLoop._make_self_pipe (/usr/lib/python3.12/asyncio/selector_events.py:118)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 118], \"WeakValueDictionary.update (/usr/lib/python3.12/weakref.py:289)\": [\"/usr/lib/python3.12/weakref.py\", 289], \"WeakValueDictionary.__init__ (/usr/lib/python3.12/weakref.py:104)\": [\"/usr/lib/python3.12/weakref.py\", 104], \"BaseSelectorEventLoop.__init__ (/usr/lib/python3.12/asyncio/selector_events.py:59)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 59], \"_UnixSelectorEventLoop.__init__ (/usr/lib/python3.12/asyncio/unix_events.py:63)\": [\"/usr/lib/python3.12/asyncio/unix_events.py\", 63], \"BaseDefaultEventLoopPolicy.new_event_loop (/usr/lib/python3.12/asyncio/events.py:714)\": [\"/usr/lib/python3.12/asyncio/events.py\", 714], \"new_event_loop (/usr/lib/python3.12/asyncio/events.py:821)\": [\"/usr/lib/python3.12/asyncio/events.py\", 821], \"BaseDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/events.py:707)\": [\"/usr/lib/python3.12/asyncio/events.py\", 707], \"_UnixDefaultEventLoopPolicy.set_event_loop (/usr/lib/python3.12/asyncio/unix_events.py:1458)\": [\"/usr/lib/python3.12/asyncio/unix_events.py\", 1458], \"set_event_loop (/usr/lib/python3.12/asyncio/events.py:816)\": [\"/usr/lib/python3.12/asyncio/events.py\", 816], \"Runner._lazy_init (/usr/lib/python3.12/asyncio/runners.py:131)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 131], \"Runner.__enter__ (/usr/lib/python3.12/asyncio/runners.py:57)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 57], \"iscoroutine (/usr/lib/python3.12/asyncio/coroutines.py:32)\": [\"/usr/lib/python3.12/asyncio/coroutines.py\", 32], \"BaseEventLoop._call_soon (/usr/lib/python3.12/asyncio/base_events.py:814)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 814], \"BaseEventLoop.call_soon (/usr/lib/python3.12/asyncio/base_events.py:785)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 785], \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\": [\"/usr/lib/python3.12/_weakrefset.py\", 85], \"BaseEventLoop.create_task (/usr/lib/python3.12/asyncio/base_events.py:451)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 451], \"current_thread (/usr/lib/python3.12/threading.py:1483)\": [\"/usr/lib/python3.12/threading.py\", 1483], \"main_thread (/usr/lib/python3.12/threading.py:1629)\": [\"/usr/lib/python3.12/threading.py\", 1629], \"_int_to_enum (/usr/lib/python3.12/signal.py:24)\": [\"/usr/lib/python3.12/signal.py\", 24], \"getsignal (/usr/lib/python3.12/signal.py:62)\": [\"/usr/lib/python3.12/signal.py\", 62], \"_enum_to_int (/usr/lib/python3.12/signal.py:36)\": [\"/usr/lib/python3.12/signal.py\", 36], \"signal (/usr/lib/python3.12/signal.py:56)\": [\"/usr/lib/python3.12/signal.py\", 56], \"BaseEventLoop._check_running (/usr/lib/python3.12/asyncio/base_events.py:620)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 620], \"isfuture (/usr/lib/python3.12/asyncio/base_futures.py:13)\": [\"/usr/lib/python3.12/asyncio/base_futures.py\", 13], \"_get_loop (/usr/lib/python3.12/asyncio/futures.py:299)\": [\"/usr/lib/python3.12/asyncio/futures.py\", 299], \"ensure_future (/usr/lib/python3.12/asyncio/tasks.py:670)\": [\"/usr/lib/python3.12/asyncio/tasks.py\", 670], \"BaseEventLoop._set_coroutine_origin_tracking (/usr/lib/python3.12/asyncio/base_events.py:1990)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 1990], \"EpollSelector.select (/usr/lib/python3.12/selectors.py:451)\": [\"/usr/lib/python3.12/selectors.py\", 451], \"BaseSelectorEventLoop._process_events (/usr/lib/python3.12/asyncio/selector_events.py:750)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 750], \"BaseEventLoop.time (/usr/lib/python3.12/asyncio/base_events.py:734)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 734], \"_set_task_name (/usr/lib/python3.12/asyncio/tasks.py:70)\": [\"/usr/lib/python3.12/asyncio/tasks.py\", 70], \"create_task (/usr/lib/python3.12/asyncio/tasks.py:412)\": [\"/usr/lib/python3.12/asyncio/tasks.py\", 412], \"main (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:8)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py\", 8], \"Handle._run (/usr/lib/python3.12/asyncio/events.py:86)\": [\"/usr/lib/python3.12/asyncio/events.py\", 86], \"BaseEventLoop._run_once (/usr/lib/python3.12/asyncio/base_events.py:1910)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 1910], \"BaseEventLoop.create_future (/usr/lib/python3.12/asyncio/base_events.py:447)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 447], \"TimerHandle.__init__ (/usr/lib/python3.12/asyncio/events.py:111)\": [\"/usr/lib/python3.12/asyncio/events.py\", 111], \"BaseEventLoop.call_at (/usr/lib/python3.12/asyncio/base_events.py:767)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 767], \"BaseEventLoop.call_later (/usr/lib/python3.12/asyncio/base_events.py:743)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 743], \"sleep (/usr/lib/python3.12/asyncio/tasks.py:653)\": [\"/usr/lib/python3.12/asyncio/tasks.py\", 653], \"io_task (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:4)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py\", 4], \"TimerHandle.__lt__ (/usr/lib/python3.12/asyncio/events.py:127)\": [\"/usr/lib/python3.12/asyncio/events.py\", 127], \"_set_result_unless_cancelled (/usr/lib/python3.12/asyncio/futures.py:311)\": [\"/usr/lib/python3.12/asyncio/futures.py\", 311], \"BaseEventLoop._timer_handle_cancelled (/usr/lib/python3.12/asyncio/base_events.py:1905)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 1905], \"Handle.cancel (/usr/lib/python3.12/asyncio/events.py:72)\": [\"/usr/lib/python3.12/asyncio/events.py\", 72], \"TimerHandle.cancel (/usr/lib/python3.12/asyncio/events.py:155)\": [\"/usr/lib/python3.12/asyncio/events.py\", 155], \"BaseEventLoop.stop (/usr/lib/python3.12/asyncio/base_events.py:689)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 689], \"_run_until_complete_cb (/usr/lib/python3.12/asyncio/base_events.py:182)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 182], \"BaseEventLoop.run_forever (/usr/lib/python3.12/asyncio/base_events.py:627)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 627], \"BaseEventLoop.run_until_complete (/usr/lib/python3.12/asyncio/base_events.py:651)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 651], \"Runner.run (/usr/lib/python3.12/asyncio/runners.py:86)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 86], \"WeakSet.__len__ (/usr/lib/python3.12/_weakrefset.py:72)\": [\"/usr/lib/python3.12/_weakrefset.py\", 72], \"_IterationGuard.__init__ (/usr/lib/python3.12/_weakrefset.py:17)\": [\"/usr/lib/python3.12/_weakrefset.py\", 17], \"_IterationGuard.__enter__ (/usr/lib/python3.12/_weakrefset.py:21)\": [\"/usr/lib/python3.12/_weakrefset.py\", 21], \"WeakSet.__iter__ (/usr/lib/python3.12/_weakrefset.py:63)\": [\"/usr/lib/python3.12/_weakrefset.py\", 63], \"WeakSet._commit_removals (/usr/lib/python3.12/_weakrefset.py:53)\": [\"/usr/lib/python3.12/_weakrefset.py\", 53], \"_IterationGuard.__exit__ (/usr/lib/python3.12/_weakrefset.py:27)\": [\"/usr/lib/python3.12/_weakrefset.py\", 27], \"all_tasks (/usr/lib/python3.12/asyncio/tasks.py:43)\": [\"/usr/lib/python3.12/asyncio/tasks.py\", 43], \"_cancel_all_tasks (/usr/lib/python3.12/asyncio/runners.py:197)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 197], \"BaseEventLoop.shutdown_asyncgens (/usr/lib/python3.12/asyncio/base_events.py:561)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 561], \"BaseEventLoop.shutdown_default_executor (/usr/lib/python3.12/asyncio/base_events.py:586)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 586], \"BaseEventLoop.is_closed (/usr/lib/python3.12/asyncio/base_events.py:720)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 720], \"_BaseSelectorImpl.unregister (/usr/lib/python3.12/selectors.py:247)\": [\"/usr/lib/python3.12/selectors.py\", 247], \"_PollLikeSelector.unregister (/usr/lib/python3.12/selectors.py:365)\": [\"/usr/lib/python3.12/selectors.py\", 365], \"BaseSelectorEventLoop._remove_reader (/usr/lib/python3.12/asyncio/selector_events.py:294)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 294], \"socket._real_close (/usr/lib/python3.12/socket.py:496)\": [\"/usr/lib/python3.12/socket.py\", 496], \"socket.close (/usr/lib/python3.12/socket.py:500)\": [\"/usr/lib/python3.12/socket.py\", 500], \"BaseSelectorEventLoop._close_self_pipe (/usr/lib/python3.12/asyncio/selector_events.py:110)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 110], \"BaseEventLoop.close (/usr/lib/python3.12/asyncio/base_events.py:697)\": [\"/usr/lib/python3.12/asyncio/base_events.py\", 697], \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\": [\"/usr/lib/python3.12/selectors.py\", 268], \"EpollSelector.close (/usr/lib/python3.12/selectors.py:483)\": [\"/usr/lib/python3.12/selectors.py\", 483], \"BaseSelectorEventLoop.close (/usr/lib/python3.12/asyncio/selector_events.py:99)\": [\"/usr/lib/python3.12/asyncio/selector_events.py\", 99], \"_UnixSelectorEventLoop.close (/usr/lib/python3.12/asyncio/unix_events.py:67)\": [\"/usr/lib/python3.12/asyncio/unix_events.py\", 67], \"Runner.close (/usr/lib/python3.12/asyncio/runners.py:64)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 64], \"Runner.__exit__ (/usr/lib/python3.12/asyncio/runners.py:61)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 61], \"run (/usr/lib/python3.12/asyncio/runners.py:160)\": [\"/usr/lib/python3.12/asyncio/runners.py\", 160], \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py:1)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/async_simple.py\", 1]}}}"
  },
  {
    "path": "example/json/different_sorts.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222321, \"tid\": 222321, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222321, \"tid\": 222321, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702647.507, \"ph\": \"X\", \"dur\": 0.7523346904124866, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702648.721, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702651.85, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702652.144, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702653.442, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702653.599, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702654.535, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702654.644, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702663.585, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702663.728, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702664.358, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702664.505, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702665.057, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702665.159, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702665.637, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702665.766, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702666.317, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702666.231, \"ph\": \"X\", \"dur\": 0.28012992617149285, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702667.342, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702667.482, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702667.92, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702667.838, \"ph\": \"X\", \"dur\": 0.2354787625163751, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702668.427, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702668.337, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702671.066, \"ph\": \"X\", \"dur\": 0.40684942972903365, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702671.804, \"ph\": \"X\", \"dur\": 0.18783422476147293, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702669.44, \"ph\": \"X\", \"dur\": 3.131817651899459, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702667.215, \"ph\": \"X\", \"dur\": 5.618563185295374, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702673.726, \"ph\": \"X\", \"dur\": 0.3143042804773651, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702674.176, \"ph\": \"X\", \"dur\": 0.11724048557489014, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702674.641, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702674.868, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702673.136, \"ph\": \"X\", \"dur\": 2.2704742546864893, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702665.523, \"ph\": \"X\", \"dur\": 10.119849487846208, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.243, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.488, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.849, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.985, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702677.258, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702677.187, \"ph\": \"X\", \"dur\": 0.18883201612806774, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702677.651, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702677.582, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702678.165, \"ph\": \"X\", \"dur\": 0.11449655931675441, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702678.441, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702677.879, \"ph\": \"X\", \"dur\": 0.9436611849570413, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.754, \"ph\": \"X\", \"dur\": 2.2839444381355194, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702679.403, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702682.192, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702682.564, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702682.481, \"ph\": \"X\", \"dur\": 0.17685851972893002, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702682.943, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702682.87, \"ph\": \"X\", \"dur\": 0.16787839742957672, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702683.472, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702683.683, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702683.184, \"ph\": \"X\", \"dur\": 0.8334052389483149, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702679.308, \"ph\": \"X\", \"dur\": 4.848517698125829, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702684.482, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702684.725, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702685.006, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702685.159, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702684.311, \"ph\": \"X\", \"dur\": 1.2195504978205063, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702676.079, \"ph\": \"X\", \"dur\": 9.61796043044902, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702686.042, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702686.229, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702686.479, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702686.618, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702686.863, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702687.007, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702687.227, \"ph\": \"X\", \"dur\": 0.13594907369854284, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702687.44, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702687.627, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702687.798, \"ph\": \"X\", \"dur\": 0.17760686325387612, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702688.171, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702688.336, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702685.884, \"ph\": \"X\", \"dur\": 2.8277407329296906, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702664.929, \"ph\": \"X\", \"dur\": 23.948988381008622, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.286, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.399, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.693, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.792, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.059, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.184, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.521, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.418, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.95, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702690.842, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702691.296, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702691.457, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702691.18, \"ph\": \"X\", \"dur\": 0.5876991149243429, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.982, \"ph\": \"X\", \"dur\": 1.8997947619965179, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702692.146, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702692.262, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702692.512, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702692.435, \"ph\": \"X\", \"dur\": 0.19856048195236714, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702694.241, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702694.165, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702694.635, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702694.811, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702694.502, \"ph\": \"X\", \"dur\": 0.6011692983733729, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702692.07, \"ph\": \"X\", \"dur\": 3.134312130315946, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702695.471, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702695.709, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702695.982, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702696.168, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702696.444, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702696.63, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702695.343, \"ph\": \"X\", \"dur\": 1.631388884382514, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.62, \"ph\": \"X\", \"dur\": 7.466971691912258, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.385, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.542, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.862, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.966, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.215, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.145, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.579, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.499, \"ph\": \"X\", \"dur\": 0.20205275173544895, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.926, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702699.143, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702698.795, \"ph\": \"X\", \"dur\": 0.595182550173804, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.77, \"ph\": \"X\", \"dur\": 1.7079693717686655, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702699.732, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702699.833, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.158, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.085, \"ph\": \"X\", \"dur\": 0.19382097296104178, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.541, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.471, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.88, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702701.053, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702700.77, \"ph\": \"X\", \"dur\": 0.5577653739264987, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702699.661, \"ph\": \"X\", \"dur\": 1.7306691253586977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702701.669, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702701.819, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702702.053, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702702.202, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702702.419, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702702.604, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702701.52, \"ph\": \"X\", \"dur\": 1.4181109797728735, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702697.29, \"ph\": \"X\", \"dur\": 5.747028823744456, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702703.253, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702703.403, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.092, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.274, \"ph\": \"X\", \"dur\": 0.083814474793964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.498, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.63, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.835, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702705.986, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702706.161, \"ph\": \"X\", \"dur\": 0.12896453413237915, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702706.359, \"ph\": \"X\", \"dur\": 0.16937508447946895, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702706.651, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702706.832, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702707.038, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702707.212, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702703.168, \"ph\": \"X\", \"dur\": 4.3493725669867755, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702689.205, \"ph\": \"X\", \"dur\": 18.464129238836954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.072, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.297, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.518, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.671, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.859, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702708.994, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702709.21, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702709.348, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702709.518, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702709.647, \"ph\": \"X\", \"dur\": 0.15615434887208773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702709.947, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.116, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.281, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.445, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.613, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.783, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702710.972, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702711.104, \"ph\": \"X\", \"dur\": 0.18084968519530925, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702711.424, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702711.589, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702711.778, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702711.945, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702712.111, \"ph\": \"X\", \"dur\": 0.1756112805206865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702712.353, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702712.524, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702712.672, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702707.905, \"ph\": \"X\", \"dur\": 5.364375834655346, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702664.18, \"ph\": \"X\", \"dur\": 49.28316062669249, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702713.921, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.078, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.415, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.541, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.922, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702716.401, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702716.78, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702716.881, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.147, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.071, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.543, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.471, \"ph\": \"X\", \"dur\": 0.19880992979401582, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.941, \"ph\": \"X\", \"dur\": 0.11848772478313366, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702718.176, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702717.784, \"ph\": \"X\", \"dur\": 0.6812420555426063, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702716.653, \"ph\": \"X\", \"dur\": 1.9127660497622503, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702718.814, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702718.921, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.218, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.117, \"ph\": \"X\", \"dur\": 0.22899311863350882, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.57, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.494, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.935, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702720.099, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702719.816, \"ph\": \"X\", \"dur\": 0.48293102143188793, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702718.74, \"ph\": \"X\", \"dur\": 1.631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702720.612, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702720.796, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702721.046, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702721.173, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702721.358, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702721.516, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702720.507, \"ph\": \"X\", \"dur\": 1.2711862010417876, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.852, \"ph\": \"X\", \"dur\": 7.0119788287450255, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.108, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.224, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.512, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.606, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.883, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.815, \"ph\": \"X\", \"dur\": 0.1840925071367424, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702723.214, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702723.145, \"ph\": \"X\", \"dur\": 0.1848408506616885, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702723.544, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702723.717, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702723.44, \"ph\": \"X\", \"dur\": 0.4771937210739678, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.414, \"ph\": \"X\", \"dur\": 1.5745147764866096, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.237, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.356, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.647, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.573, \"ph\": \"X\", \"dur\": 0.19431986864433917, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.989, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.918, \"ph\": \"X\", \"dur\": 1.784549859154817, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702726.975, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702727.157, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702726.844, \"ph\": \"X\", \"dur\": 0.5151097930045705, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702724.17, \"ph\": \"X\", \"dur\": 3.2967026752292514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702727.792, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702727.964, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702728.179, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702728.337, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702727.599, \"ph\": \"X\", \"dur\": 1.0668884187315002, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702722.033, \"ph\": \"X\", \"dur\": 6.776749514070299, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.024, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.173, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.361, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.51, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.691, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702729.898, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702730.088, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702730.232, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702730.421, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702730.591, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702730.842, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702731.012, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702728.934, \"ph\": \"X\", \"dur\": 2.385469709686541, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702714.341, \"ph\": \"X\", \"dur\": 17.109876906526146, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702731.778, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702731.942, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.286, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.408, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.712, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.847, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.17, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.099, \"ph\": \"X\", \"dur\": 0.18683643339487813, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.495, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.426, \"ph\": \"X\", \"dur\": 0.18783422476147293, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.859, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.022, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702733.741, \"ph\": \"X\", \"dur\": 0.4819332300652931, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.64, \"ph\": \"X\", \"dur\": 1.6887618879617154, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.54, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.67, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.964, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.897, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702735.321, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702735.208, \"ph\": \"X\", \"dur\": 0.22375471395888608, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702735.686, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702735.834, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702735.559, \"ph\": \"X\", \"dur\": 2.127540641421783, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702734.471, \"ph\": \"X\", \"dur\": 3.3550734701750473, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702738.071, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702738.233, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702738.468, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702738.675, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702738.869, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702739.063, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702737.979, \"ph\": \"X\", \"dur\": 1.325316382679556, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702732.179, \"ph\": \"X\", \"dur\": 7.249203726152941, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702739.693, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702739.797, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.07, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.17, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.419, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.344, \"ph\": \"X\", \"dur\": 0.1948187643276366, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.822, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702740.733, \"ph\": \"X\", \"dur\": 0.21078342619315357, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702741.195, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702741.409, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702741.06, \"ph\": \"X\", \"dur\": 0.5527764170935247, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702739.998, \"ph\": \"X\", \"dur\": 1.7092166109769091, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.048, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.148, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.434, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.324, \"ph\": \"X\", \"dur\": 0.23223594057494196, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.82, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702742.75, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702743.237, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702743.378, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702743.066, \"ph\": \"X\", \"dur\": 0.5827101580913688, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702741.93, \"ph\": \"X\", \"dur\": 1.7877926810962503, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702743.978, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702744.139, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702744.389, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702744.535, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702743.85, \"ph\": \"X\", \"dur\": 1.0277251075926541, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702739.622, \"ph\": \"X\", \"dur\": 5.39605571054473, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702745.268, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702745.446, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702745.666, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702745.819, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702746.007, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702746.139, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702746.331, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702746.514, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702748.215, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702748.389, \"ph\": \"X\", \"dur\": 0.12048330751632327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702745.125, \"ph\": \"X\", \"dur\": 3.6354528441881895, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702731.707, \"ph\": \"X\", \"dur\": 17.185459602545706, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702749.23, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702749.393, \"ph\": \"X\", \"dur\": 0.13046122118227138, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702749.702, \"ph\": \"X\", \"dur\": 0.083814474793964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702749.86, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.094, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.24, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.443, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.591, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.827, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702750.983, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702751.243, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702751.398, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702751.575, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702751.724, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702751.908, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702752.061, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702752.236, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702752.392, \"ph\": \"X\", \"dur\": 0.14418085247294998, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702752.668, \"ph\": \"X\", \"dur\": 0.12222944240786418, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702752.866, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702753.046, \"ph\": \"X\", \"dur\": 0.14867091362262663, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702753.267, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702753.446, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702753.609, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702749.083, \"ph\": \"X\", \"dur\": 4.97324161895018, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702713.823, \"ph\": \"X\", \"dur\": 40.35467403056048, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702754.468, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702754.672, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702754.89, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.051, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.256, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.413, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.594, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.727, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702755.899, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.029, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.316, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.472, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.655, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.813, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702756.994, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702757.13, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702757.302, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702758.859, \"ph\": \"X\", \"dur\": 0.14767312225603182, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.193, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.33, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.53, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.671, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.842, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702759.993, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702760.162, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702760.31, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702760.478, \"ph\": \"X\", \"dur\": 0.1464258830477883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702760.699, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702760.907, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702761.055, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702761.239, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702761.426, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702761.604, \"ph\": \"X\", \"dur\": 0.15914772297187216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702761.838, \"ph\": \"X\", \"dur\": 0.12422502514105381, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.088, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.23, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.415, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.566, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.739, \"ph\": \"X\", \"dur\": 0.12272833809116158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702762.943, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.144, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.311, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.487, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.643, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.813, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702763.993, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702764.169, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702764.317, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702764.488, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702764.682, \"ph\": \"X\", \"dur\": 0.15814993160527735, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702764.992, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702765.158, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702765.345, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702765.517, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702765.693, \"ph\": \"X\", \"dur\": 0.12572171219094602, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702765.892, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702766.067, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702766.256, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702766.439, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702766.6, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702754.364, \"ph\": \"X\", \"dur\": 12.937362859268303, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702655.231, \"ph\": \"X\", \"dur\": 112.22334113580979, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702767.798, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702771.371, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702771.698, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702771.826, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.193, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.292, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.563, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.66, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.967, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.868, \"ph\": \"X\", \"dur\": 0.22126023554239904, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.351, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.437, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.67, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.597, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.988, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.914, \"ph\": \"X\", \"dur\": 0.18982980749466255, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702774.393, \"ph\": \"X\", \"dur\": 0.17411459347079428, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702774.653, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702774.242, \"ph\": \"X\", \"dur\": 0.6687696634601712, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702773.271, \"ph\": \"X\", \"dur\": 1.720192316009452, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702775.274, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702775.441, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702775.708, \"ph\": \"X\", \"dur\": 0.12422502514105381, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702775.904, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702775.147, \"ph\": \"X\", \"dur\": 1.032714064425628, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.492, \"ph\": \"X\", \"dur\": 3.7898610581687358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702776.515, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702776.637, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702776.975, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702777.094, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702777.441, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702777.305, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702777.806, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702777.74, \"ph\": \"X\", \"dur\": 0.18783422476147293, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.126, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.272, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.04, \"ph\": \"X\", \"dur\": 0.44800832360106957, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702776.859, \"ph\": \"X\", \"dur\": 1.7009848322025019, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.867, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.989, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.276, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.206, \"ph\": \"X\", \"dur\": 0.19382097296104178, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.613, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.542, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.944, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702780.08, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702779.821, \"ph\": \"X\", \"dur\": 0.45673899805877416, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702778.797, \"ph\": \"X\", \"dur\": 1.5523139185798753, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702782.231, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702782.414, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702782.74, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702782.9, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702783.099, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702783.264, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702782.109, \"ph\": \"X\", \"dur\": 1.4672522045776677, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702776.441, \"ph\": \"X\", \"dur\": 7.238976364645345, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702783.925, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.066, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.283, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.415, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.586, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.746, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702784.926, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702785.095, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702785.284, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702785.461, \"ph\": \"X\", \"dur\": 0.12472392082435121, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702783.806, \"ph\": \"X\", \"dur\": 2.045222853677711, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702772.102, \"ph\": \"X\", \"dur\": 13.89698870609086, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.335, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.457, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.832, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.965, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702787.29, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702787.419, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702787.727, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702787.651, \"ph\": \"X\", \"dur\": 0.20205275173544895, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702788.122, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702788.006, \"ph\": \"X\", \"dur\": 0.24121606287429526, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702788.51, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702788.687, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702788.363, \"ph\": \"X\", \"dur\": 0.6183811994471333, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702787.169, \"ph\": \"X\", \"dur\": 1.903785927462897, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702789.386, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702789.51, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702789.791, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702789.722, \"ph\": \"X\", \"dur\": 0.19856048195236714, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702790.155, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702790.087, \"ph\": \"X\", \"dur\": 0.1661322625380358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702790.509, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702790.651, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702790.37, \"ph\": \"X\", \"dur\": 0.46671691172472224, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702789.294, \"ph\": \"X\", \"dur\": 1.6106847135256717, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702791.137, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702791.297, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702792.994, \"ph\": \"X\", \"dur\": 0.10352085428421151, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702793.17, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702793.362, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702793.548, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702791.034, \"ph\": \"X\", \"dur\": 2.8120255189058225, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.755, \"ph\": \"X\", \"dur\": 7.221016120046638, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.257, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.385, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.662, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.762, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.042, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.944, \"ph\": \"X\", \"dur\": 0.22001299633415553, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.411, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.341, \"ph\": \"X\", \"dur\": 0.1948187643276366, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.791, \"ph\": \"X\", \"dur\": 0.10601533270069853, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.968, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702795.649, \"ph\": \"X\", \"dur\": 0.5442951904774688, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.592, \"ph\": \"X\", \"dur\": 1.6847707224953363, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702796.597, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702796.711, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.003, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702796.936, \"ph\": \"X\", \"dur\": 0.19980772116061063, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.388, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.283, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.729, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.897, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702797.633, \"ph\": \"X\", \"dur\": 0.43803040993512143, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702796.476, \"ph\": \"X\", \"dur\": 1.666561030054981, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702798.385, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702798.542, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702798.744, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702798.922, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702798.271, \"ph\": \"X\", \"dur\": 0.9576302640893687, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702794.181, \"ph\": \"X\", \"dur\": 5.171802100902548, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702799.565, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702799.719, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702799.961, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.114, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.3, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.433, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.602, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.775, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702800.953, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702801.111, \"ph\": \"X\", \"dur\": 0.12247889024951289, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702801.353, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702801.521, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702801.7, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702803.474, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702799.472, \"ph\": \"X\", \"dur\": 4.37157342489351, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702786.201, \"ph\": \"X\", \"dur\": 17.76742141711213, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.281, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.465, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.664, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.818, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.999, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702805.149, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702805.35, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702805.507, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702805.708, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702805.867, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.107, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.235, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.425, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.626, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.79, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702806.917, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.09, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.253, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.49, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.66, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.841, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702807.999, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702808.187, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702808.368, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702808.549, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702808.73, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702808.912, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702809.105, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702804.111, \"ph\": \"X\", \"dur\": 5.3154840576922, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702771.621, \"ph\": \"X\", \"dur\": 37.92106088743574, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702809.909, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.054, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.35, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.478, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.748, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.848, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.156, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.254, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.509, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.44, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.826, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.758, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702812.157, \"ph\": \"X\", \"dur\": 0.11649214204994404, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702812.344, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702812.065, \"ph\": \"X\", \"dur\": 2.1484942601202737, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702811.086, \"ph\": \"X\", \"dur\": 3.2320956842422373, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702814.646, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702814.797, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702815.117, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702814.988, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702815.516, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702815.405, \"ph\": \"X\", \"dur\": 0.23198649273329325, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702815.892, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702816.066, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702815.754, \"ph\": \"X\", \"dur\": 0.5467896688939557, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702814.546, \"ph\": \"X\", \"dur\": 1.8561413897079946, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702816.787, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702816.955, \"ph\": \"X\", \"dur\": 0.1254722643492973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702817.209, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702817.386, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702816.523, \"ph\": \"X\", \"dur\": 1.1389788449679752, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.678, \"ph\": \"X\", \"dur\": 7.109762382671317, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.124, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.285, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.556, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.642, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.883, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.821, \"ph\": \"X\", \"dur\": 0.16713005390463062, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702819.165, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702819.107, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702819.473, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702819.605, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702819.364, \"ph\": \"X\", \"dur\": 0.4714564207160476, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.475, \"ph\": \"X\", \"dur\": 1.430832819696957, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.132, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.239, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.47, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.411, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.74, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.682, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.035, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.17, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.936, \"ph\": \"X\", \"dur\": 0.43204366173555264, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702820.043, \"ph\": \"X\", \"dur\": 1.3884266866166777, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.617, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.78, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.926, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702822.066, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702822.255, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702822.403, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702821.54, \"ph\": \"X\", \"dur\": 2.5184254092853, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702818.017, \"ph\": \"X\", \"dur\": 6.14988708800711, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702824.422, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702824.577, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702824.768, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702824.886, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.062, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.18, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.346, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.46, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.623, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.761, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702825.96, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702826.115, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702826.258, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702826.4, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702824.302, \"ph\": \"X\", \"dur\": 2.325851675532501, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702810.276, \"ph\": \"X\", \"dur\": 16.427138163933652, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.002, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.174, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.484, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.612, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.855, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.938, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.145, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.081, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.475, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.412, \"ph\": \"X\", \"dur\": 0.17236845857925337, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.769, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.928, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702828.688, \"ph\": \"X\", \"dur\": 0.43827985777677014, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.795, \"ph\": \"X\", \"dur\": 1.4051396920071408, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.404, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.488, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.697, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.635, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.992, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.93, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.261, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.384, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.188, \"ph\": \"X\", \"dur\": 0.4041055034708979, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702829.34, \"ph\": \"X\", \"dur\": 1.310349512180634, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.841, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.971, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702831.151, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702831.296, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702831.519, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702832.872, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702830.762, \"ph\": \"X\", \"dur\": 2.3333351107819627, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702827.406, \"ph\": \"X\", \"dur\": 5.822611519764012, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.445, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.558, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.833, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.951, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.188, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.129, \"ph\": \"X\", \"dur\": 0.17211901073760466, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.493, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.432, \"ph\": \"X\", \"dur\": 0.17112121937100985, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.813, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.953, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702834.704, \"ph\": \"X\", \"dur\": 0.48791997826486194, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.769, \"ph\": \"X\", \"dur\": 1.4799740445017515, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702835.485, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702835.599, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702835.823, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702835.764, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702836.104, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702836.046, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702836.378, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702836.545, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702836.286, \"ph\": \"X\", \"dur\": 0.6827387425924986, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702835.39, \"ph\": \"X\", \"dur\": 1.6433623807816515, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.233, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.376, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.546, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.682, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.894, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.032, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702837.153, \"ph\": \"X\", \"dur\": 1.089089276638235, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702833.376, \"ph\": \"X\", \"dur\": 4.927842111770117, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.488, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.63, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.832, \"ph\": \"X\", \"dur\": 0.055127973004363236, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.949, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.115, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.242, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.404, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.536, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.684, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.798, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702839.996, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702840.137, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702838.398, \"ph\": \"X\", \"dur\": 1.991841015564889, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702826.942, \"ph\": \"X\", \"dur\": 14.767062777761536, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702841.981, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702842.183, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702842.414, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702842.56, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702842.737, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702842.877, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.087, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.234, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.381, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.518, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.732, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702843.848, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.002, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.169, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.315, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.451, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.597, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.747, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702844.954, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702845.084, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702845.246, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702845.376, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702845.526, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702845.674, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702841.847, \"ph\": \"X\", \"dur\": 4.157547176758923, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702809.789, \"ph\": \"X\", \"dur\": 36.33581985375824, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.341, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.477, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.653, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.79, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.941, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.071, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.227, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.356, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.52, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.654, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.86, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702847.97, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.135, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.262, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.411, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.524, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.679, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702848.791, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702849.009, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702849.119, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702850.715, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702850.91, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.075, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.21, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.358, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.519, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.678, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.854, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702851.996, \"ph\": \"X\", \"dur\": 0.1307106690239201, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702852.183, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702852.332, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702852.472, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702852.633, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702852.787, \"ph\": \"X\", \"dur\": 0.12023385967467458, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.015, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.134, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.31, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.476, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.665, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.802, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702853.96, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.11, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.264, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.435, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.595, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.711, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702854.856, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.016, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.191, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.33, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.539, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.688, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702855.883, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.034, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.212, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.385, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.572, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.742, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702856.888, \"ph\": \"X\", \"dur\": 0.10651422838399595, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702857.051, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702846.25, \"ph\": \"X\", \"dur\": 11.168029318454057, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702767.723, \"ph\": \"X\", \"dur\": 89.82616777769775, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702857.82, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702857.955, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702858.134, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702858.293, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702859.633, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702859.793, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702859.964, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.108, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.256, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.39, \"ph\": \"X\", \"dur\": 0.11499545500005182, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.616, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.758, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702860.906, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.053, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.207, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.319, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.48, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.622, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.812, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702861.949, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.098, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.213, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.358, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.474, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.619, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.73, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702862.893, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.006, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.178, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.306, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.455, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.571, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.721, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702863.833, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.04, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.156, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.319, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.439, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.581, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.694, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.838, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702864.949, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.092, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.225, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.387, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.506, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.664, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.78, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702865.941, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702866.056, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702866.269, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702867.621, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702867.825, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702867.943, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.106, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.251, \"ph\": \"X\", \"dur\": 0.055127973004363236, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.404, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.599, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.746, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702868.867, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.013, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.138, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.298, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.414, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.559, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702869.675, \"ph\": \"X\", \"dur\": 0.4537456239589897, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.25, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.364, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.522, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.637, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.798, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702870.928, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.075, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.205, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.348, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.482, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.642, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.77, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702871.926, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702872.058, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702872.217, \"ph\": \"X\", \"dur\": 0.12197999456621549, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702872.396, \"ph\": \"X\", \"dur\": 0.49839678761410744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.053, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.186, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.336, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.46, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.62, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.748, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702873.946, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.076, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.232, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.344, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.501, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.651, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.794, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702874.917, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702875.077, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702876.743, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702876.913, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.061, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.22, \"ph\": \"X\", \"dur\": 0.08630895321045104, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.372, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.522, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.654, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.808, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702877.951, \"ph\": \"X\", \"dur\": 0.33650513838409957, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702878.438, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702878.612, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702878.762, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702878.956, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.104, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.251, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.394, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.545, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.699, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702879.876, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.023, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.157, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.305, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.453, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.599, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702880.726, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702857.711, \"ph\": \"X\", \"dur\": 23.38473736319926, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702654.395, \"ph\": \"X\", \"dur\": 226.8643307528788, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702881.642, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702881.753, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.067, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.149, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.38, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.462, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.78, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.859, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.138, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.223, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.465, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.38, \"ph\": \"X\", \"dur\": 0.19182539022785217, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.762, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.842, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.079, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.016, \"ph\": \"X\", \"dur\": 0.15864882728857474, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.348, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.287, \"ph\": \"X\", \"dur\": 0.15765103592197993, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.689, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.852, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702884.561, \"ph\": \"X\", \"dur\": 1.9392075209770128, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.701, \"ph\": \"X\", \"dur\": 2.8821203624091076, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702886.85, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.015, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702886.753, \"ph\": \"X\", \"dur\": 0.49091335236464634, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702883.077, \"ph\": \"X\", \"dur\": 4.2485956389607, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.598, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.683, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.978, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.07, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.302, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.235, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.583, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.525, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.933, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.068, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702888.791, \"ph\": \"X\", \"dur\": 0.47270365992429114, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.881, \"ph\": \"X\", \"dur\": 1.4433052117793923, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.567, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.652, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.855, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.797, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.141, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.08, \"ph\": \"X\", \"dur\": 0.14318306110635518, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.433, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.618, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.316, \"ph\": \"X\", \"dur\": 0.5056307750219198, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702889.474, \"ph\": \"X\", \"dur\": 1.4068858268986817, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.068, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.205, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.394, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.54, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.708, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702891.846, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702890.994, \"ph\": \"X\", \"dur\": 1.0638950446317157, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702887.51, \"ph\": \"X\", \"dur\": 4.643970467973894, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.335, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.469, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.664, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.794, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.964, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702893.088, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702893.246, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702893.387, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702893.538, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702893.668, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702895.11, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702895.227, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702892.242, \"ph\": \"X\", \"dur\": 3.2315967885589396, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.682, \"ph\": \"X\", \"dur\": 12.93586617221841, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702895.891, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702895.996, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.319, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.409, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.689, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.774, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.997, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.933, \"ph\": \"X\", \"dur\": 0.1960660035358801, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702897.332, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702897.272, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702897.672, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702897.798, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702897.537, \"ph\": \"X\", \"dur\": 0.45648955021712545, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.604, \"ph\": \"X\", \"dur\": 1.4799740445017515, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.326, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.412, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.66, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.594, \"ph\": \"X\", \"dur\": 0.17735741541222744, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.969, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.902, \"ph\": \"X\", \"dur\": 0.1756112805206865, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702899.312, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702899.463, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702899.175, \"ph\": \"X\", \"dur\": 0.4552423110088819, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702898.227, \"ph\": \"X\", \"dur\": 1.4647577261611806, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702899.917, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702900.027, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702900.194, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702900.331, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702899.801, \"ph\": \"X\", \"dur\": 0.7792750573105464, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702896.259, \"ph\": \"X\", \"dur\": 4.412732318765546, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702900.913, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.02, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.248, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.328, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.539, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.478, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.828, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.767, \"ph\": \"X\", \"dur\": 0.1748629369957404, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702902.138, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702902.308, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702902.038, \"ph\": \"X\", \"dur\": 0.4784409602822113, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702901.186, \"ph\": \"X\", \"dur\": 1.4026452135906537, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702902.796, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.15, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.444, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.347, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.737, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.675, \"ph\": \"X\", \"dur\": 0.14717422657273443, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.04, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.192, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702904.926, \"ph\": \"X\", \"dur\": 0.43653372288522924, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702902.735, \"ph\": \"X\", \"dur\": 2.6912927635478505, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.62, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.741, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.894, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702906.011, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702906.272, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702906.393, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702905.52, \"ph\": \"X\", \"dur\": 1.0796102586555842, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702900.853, \"ph\": \"X\", \"dur\": 5.829596059330176, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702906.944, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.103, \"ph\": \"X\", \"dur\": 0.08630895321045104, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.305, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.417, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.581, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.699, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702907.852, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.006, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.146, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.27, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.451, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.631, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.784, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702908.929, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702906.812, \"ph\": \"X\", \"dur\": 2.407670567593276, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702895.808, \"ph\": \"X\", \"dur\": 13.526808109084186, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702909.617, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702909.768, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702909.955, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.094, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.254, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.383, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.538, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.676, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.82, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702910.951, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702911.151, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702911.282, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702911.438, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702911.587, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702914.869, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702915.066, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702915.261, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702915.437, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702915.681, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702915.85, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702909.532, \"ph\": \"X\", \"dur\": 6.641798231738351, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.322, \"ph\": \"X\", \"dur\": 33.95359296601313, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702916.551, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702916.685, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702916.93, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.008, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.235, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.313, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.569, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.649, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.898, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.802, \"ph\": \"X\", \"dur\": 0.19332207727774436, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.181, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.117, \"ph\": \"X\", \"dur\": 0.1643861276464949, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.47, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.585, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.377, \"ph\": \"X\", \"dur\": 0.3781629279394329, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.505, \"ph\": \"X\", \"dur\": 1.3303053395125302, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.092, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.177, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.396, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.328, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.681, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.617, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.998, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702920.109, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702919.881, \"ph\": \"X\", \"dur\": 0.4240613308027941, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702918.992, \"ph\": \"X\", \"dur\": 1.3664752765515917, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702920.577, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702920.732, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702920.908, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.061, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.25, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.39, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702920.467, \"ph\": \"X\", \"dur\": 1.1297492748269733, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702917.17, \"ph\": \"X\", \"dur\": 4.484323849318724, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.847, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.952, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702922.215, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702922.293, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702923.997, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702923.916, \"ph\": \"X\", \"dur\": 0.19930882547731324, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702924.326, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702924.227, \"ph\": \"X\", \"dur\": 0.22974146215845492, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702924.688, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702924.81, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702924.555, \"ph\": \"X\", \"dur\": 0.435037035835337, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702922.153, \"ph\": \"X\", \"dur\": 2.905817907365735, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.345, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.459, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.73, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.618, \"ph\": \"X\", \"dur\": 0.20953618698491006, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.004, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.936, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.32, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.468, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.21, \"ph\": \"X\", \"dur\": 0.46571912035812746, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702925.237, \"ph\": \"X\", \"dur\": 1.5231285211069772, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.943, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702927.085, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702927.233, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702927.369, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702927.524, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702927.652, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702926.854, \"ph\": \"X\", \"dur\": 0.9803300176794005, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702921.787, \"ph\": \"X\", \"dur\": 6.112719359601453, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.098, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.246, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.403, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.532, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.692, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.836, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.979, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702929.124, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702929.282, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702929.396, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702929.602, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702929.733, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702928.017, \"ph\": \"X\", \"dur\": 1.9459426127015276, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702916.863, \"ph\": \"X\", \"dur\": 13.245680391546099, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.331, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.454, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.737, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.834, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702931.053, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702931.137, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702931.385, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702931.325, \"ph\": \"X\", \"dur\": 1.389175030141624, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702932.923, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702932.859, \"ph\": \"X\", \"dur\": 0.17261790642090208, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.22, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.348, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.112, \"ph\": \"X\", \"dur\": 0.4592334764752612, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.994, \"ph\": \"X\", \"dur\": 2.658116200608573, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.854, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.97, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.211, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.149, \"ph\": \"X\", \"dur\": 0.17935299814541705, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.546, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.454, \"ph\": \"X\", \"dur\": 0.19332207727774436, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.867, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.013, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702934.729, \"ph\": \"X\", \"dur\": 0.4824321257485905, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702933.789, \"ph\": \"X\", \"dur\": 1.5119033682327854, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.492, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.609, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.774, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.908, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.07, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.215, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702935.415, \"ph\": \"X\", \"dur\": 0.9763388522130213, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.636, \"ph\": \"X\", \"dur\": 5.817622562931039, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.657, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.76, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.979, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.062, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.284, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.226, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.571, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.512, \"ph\": \"X\", \"dur\": 0.15914772297187216, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.836, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.954, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702937.747, \"ph\": \"X\", \"dur\": 0.37167728405656664, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.921, \"ph\": \"X\", \"dur\": 1.2617071830591369, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.364, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.468, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.67, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.612, \"ph\": \"X\", \"dur\": 0.15615434887208773, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.95, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.894, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702939.239, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702939.357, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702939.13, \"ph\": \"X\", \"dur\": 0.37018059700667444, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702938.305, \"ph\": \"X\", \"dur\": 2.4460855352071764, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.022, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.138, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.356, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.474, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.646, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702941.792, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702940.886, \"ph\": \"X\", \"dur\": 1.1068000733952927, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702936.6, \"ph\": \"X\", \"dur\": 5.510053374178188, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.332, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.464, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.664, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.793, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.939, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.111, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.245, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.382, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.535, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.664, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702943.862, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702944.016, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702944.212, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702944.356, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702942.223, \"ph\": \"X\", \"dur\": 2.365513882354645, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702930.272, \"ph\": \"X\", \"dur\": 14.40486451168762, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702944.872, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.005, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.173, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.3, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.444, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.573, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.723, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.849, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702945.993, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.117, \"ph\": \"X\", \"dur\": 0.11599324636664662, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.346, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.475, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.621, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.749, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702946.909, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.039, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.194, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.324, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.57, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.711, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.857, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702947.968, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702949.573, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702949.747, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702949.905, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702950.093, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702950.244, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702950.396, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702950.558, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702950.702, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702944.787, \"ph\": \"X\", \"dur\": 6.174083528647034, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702916.48, \"ph\": \"X\", \"dur\": 34.602157354299756, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.3, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.441, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.619, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.769, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.951, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.092, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.239, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.377, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.535, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.668, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702952.879, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.01, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.149, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.279, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.436, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.586, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.731, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702953.857, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.049, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.177, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.321, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.433, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.584, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.695, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.842, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702954.969, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.127, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.243, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.389, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.551, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.695, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.808, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702955.956, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702956.117, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702956.325, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702956.457, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702957.904, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.081, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.268, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.388, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.551, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.702, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702958.87, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.027, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.192, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.308, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.461, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.605, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.756, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702959.898, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.12, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.271, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.418, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.577, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.741, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702960.917, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702961.065, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702961.251, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702961.394, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702961.544, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702951.206, \"ph\": \"X\", \"dur\": 10.685597192705465, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702882.007, \"ph\": \"X\", \"dur\": 80.01363803076273, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.357, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.467, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.767, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.881, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.122, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.235, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.473, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.561, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.775, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.856, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.097, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.038, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.395, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.332, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.697, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.861, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702964.583, \"ph\": \"X\", \"dur\": 0.4644718811498839, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.719, \"ph\": \"X\", \"dur\": 1.3951617783411927, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702965.337, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702965.422, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702965.636, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702965.569, \"ph\": \"X\", \"dur\": 3.5017488010644846, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702969.384, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702969.268, \"ph\": \"X\", \"dur\": 0.2486994981237563, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702969.726, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702969.854, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702969.619, \"ph\": \"X\", \"dur\": 0.4450149495012851, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702965.271, \"ph\": \"X\", \"dur\": 4.895663340197434, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.38, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.497, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.677, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.815, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.992, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702971.146, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702970.275, \"ph\": \"X\", \"dur\": 1.0506743090243347, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.413, \"ph\": \"X\", \"dur\": 8.02423817015546, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702971.656, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702971.79, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.051, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.141, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.436, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.341, \"ph\": \"X\", \"dur\": 0.20828894777666654, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.742, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.678, \"ph\": \"X\", \"dur\": 0.1753618326790378, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.095, \"ph\": \"X\", \"dur\": 0.05712355573755286, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.223, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702972.967, \"ph\": \"X\", \"dur\": 0.46522022467483004, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702971.965, \"ph\": \"X\", \"dur\": 1.531609747723033, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.703, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.792, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.041, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.977, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.349, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.29, \"ph\": \"X\", \"dur\": 0.1940704208026905, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.706, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.832, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702974.59, \"ph\": \"X\", \"dur\": 0.44875666712601564, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702973.641, \"ph\": \"X\", \"dur\": 1.490700301692646, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702975.325, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702975.502, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702975.703, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702975.877, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702976.071, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702976.218, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702975.227, \"ph\": \"X\", \"dur\": 1.1908639960309053, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702971.593, \"ph\": \"X\", \"dur\": 4.8881799049479735, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702976.688, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.073, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.302, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.441, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.591, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.745, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702978.919, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702979.066, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702976.591, \"ph\": \"X\", \"dur\": 2.7134936214545853, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702963.061, \"ph\": \"X\", \"dur\": 16.356294976905417, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702979.681, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702979.821, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.09, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.181, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.417, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.507, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.741, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.676, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.07, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.007, \"ph\": \"X\", \"dur\": 0.1643861276464949, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.332, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.48, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.256, \"ph\": \"X\", \"dur\": 0.42131740454465844, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.352, \"ph\": \"X\", \"dur\": 1.4068858268986817, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.994, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.081, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.301, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.234, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.601, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.539, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.855, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.003, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702982.78, \"ph\": \"X\", \"dur\": 0.38764194592208356, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702981.926, \"ph\": \"X\", \"dur\": 1.3273119654127457, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.448, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.596, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.763, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.914, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702983.345, \"ph\": \"X\", \"dur\": 0.8032220501088218, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702980.026, \"ph\": \"X\", \"dur\": 4.238118829611454, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.537, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.646, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.868, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.951, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702985.168, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702985.105, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702985.449, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702985.387, \"ph\": \"X\", \"dur\": 0.16812784527122543, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702986.987, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.109, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702986.892, \"ph\": \"X\", \"dur\": 0.3679355664318361, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.807, \"ph\": \"X\", \"dur\": 2.5538470027994156, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.589, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.677, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.94, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.835, \"ph\": \"X\", \"dur\": 0.2127790089263432, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702988.266, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702988.203, \"ph\": \"X\", \"dur\": 0.1748629369957404, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702988.619, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702988.748, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702988.511, \"ph\": \"X\", \"dur\": 0.42655580921928116, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702987.514, \"ph\": \"X\", \"dur\": 1.5024243502501347, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702989.271, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702989.415, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702989.652, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702989.812, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.004, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.142, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702989.124, \"ph\": \"X\", \"dur\": 1.227033933069967, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702984.477, \"ph\": \"X\", \"dur\": 5.957562802095961, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.644, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.787, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.971, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.116, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.257, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.373, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.518, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.653, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.795, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702991.951, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702992.173, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702992.302, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702990.542, \"ph\": \"X\", \"dur\": 1.9753774580160746, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702979.618, \"ph\": \"X\", \"dur\": 13.01094997255467, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702992.83, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702992.968, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.155, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.288, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.452, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.576, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.733, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702993.866, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702994.023, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702994.145, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702995.743, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702995.875, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.042, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.179, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.347, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.503, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.653, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702996.795, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.006, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.127, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.274, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.403, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.558, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.716, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702997.889, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702998.042, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702998.195, \"ph\": \"X\", \"dur\": 0.09853189745123746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702998.357, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702998.51, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702998.657, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702992.756, \"ph\": \"X\", \"dur\": 6.140657517866108, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.676, \"ph\": \"X\", \"dur\": 36.31611347426799, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.283, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.455, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.726, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.816, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.047, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.163, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.427, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.508, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.731, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.666, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703001.011, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.944, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703001.331, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703001.461, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703001.206, \"ph\": \"X\", \"dur\": 0.46896194229956056, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703000.365, \"ph\": \"X\", \"dur\": 1.4235988322891449, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.02, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.103, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.351, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.289, \"ph\": \"X\", \"dur\": 0.16812784527122543, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.645, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.583, \"ph\": \"X\", \"dur\": 0.16713005390463062, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.967, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703003.133, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703002.869, \"ph\": \"X\", \"dur\": 0.48767053042321323, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703001.954, \"ph\": \"X\", \"dur\": 2.8741380314763494, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703005.062, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703005.2, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703005.397, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703005.548, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703004.962, \"ph\": \"X\", \"dur\": 0.783765118460223, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.985, \"ph\": \"X\", \"dur\": 5.87873728413497, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.121, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.209, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.451, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.541, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.757, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.694, \"ph\": \"X\", \"dur\": 0.17336624994584818, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703007.057, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.997, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703007.36, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703007.479, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703007.261, \"ph\": \"X\", \"dur\": 0.4280524962691734, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.387, \"ph\": \"X\", \"dur\": 1.3826893862587577, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.029, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.116, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.408, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.306, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.712, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.647, \"ph\": \"X\", \"dur\": 0.1758607283623352, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.014, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.133, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703008.923, \"ph\": \"X\", \"dur\": 0.39986489016286997, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703007.923, \"ph\": \"X\", \"dur\": 1.4909497495342943, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.608, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.745, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.917, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.032, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.195, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.345, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703009.515, \"ph\": \"X\", \"dur\": 1.0189944331349494, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703006.04, \"ph\": \"X\", \"dur\": 4.555915379871901, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.802, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.926, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.092, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.216, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.357, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.481, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.629, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.762, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703011.932, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703012.049, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703013.68, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703013.834, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703013.999, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703014.157, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703010.707, \"ph\": \"X\", \"dur\": 3.7225101409235863, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.664, \"ph\": \"X\", \"dur\": 14.849630013347255, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703014.746, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703014.861, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.143, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.227, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.541, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.627, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.857, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.794, \"ph\": \"X\", \"dur\": 0.17611017620398392, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703016.189, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703016.125, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703016.502, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703016.654, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703016.401, \"ph\": \"X\", \"dur\": 0.42505912216938896, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.458, \"ph\": \"X\", \"dur\": 1.4480447207707174, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.141, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.279, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.536, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.474, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.867, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.776, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.162, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.319, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.055, \"ph\": \"X\", \"dur\": 0.4732025556075885, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703017.079, \"ph\": \"X\", \"dur\": 1.5311108520397356, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.804, \"ph\": \"X\", \"dur\": 0.07882551796098997, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.941, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703019.095, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703019.235, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703018.694, \"ph\": \"X\", \"dur\": 0.7480940771044586, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703015.062, \"ph\": \"X\", \"dur\": 4.468608635294855, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703019.745, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703019.86, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.113, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.199, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.405, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.346, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.693, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.632, \"ph\": \"X\", \"dur\": 0.16513447117144103, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.967, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703021.084, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.89, \"ph\": \"X\", \"dur\": 1.620413179349971, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703020.053, \"ph\": \"X\", \"dur\": 2.539129580142142, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703022.977, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.063, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.281, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.22, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.634, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.527, \"ph\": \"X\", \"dur\": 0.22101078770075033, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.961, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703024.158, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703023.848, \"ph\": \"X\", \"dur\": 0.49340783078113337, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703022.825, \"ph\": \"X\", \"dur\": 1.5992101128098313, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703024.676, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703024.817, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703024.982, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703025.13, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703024.539, \"ph\": \"X\", \"dur\": 0.7919968972346302, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703019.687, \"ph\": \"X\", \"dur\": 5.702876555772635, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703025.592, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703025.725, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703025.944, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.076, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.261, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.382, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.528, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.643, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.813, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703026.952, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703027.13, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703027.299, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703025.508, \"ph\": \"X\", \"dur\": 2.00705733390546, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703014.685, \"ph\": \"X\", \"dur\": 12.897451204604511, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703027.782, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703027.918, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.106, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.25, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.402, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.536, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.686, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.824, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703028.988, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703029.129, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703029.334, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703029.495, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703029.688, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703029.841, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703030.003, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703031.502, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703031.642, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703031.767, \"ph\": \"X\", \"dur\": 0.11599324636664662, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703031.996, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.131, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.298, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.448, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.614, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.733, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.882, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703032.993, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703033.146, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703033.303, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703033.453, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703033.581, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703027.703, \"ph\": \"X\", \"dur\": 6.186057025046171, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702999.225, \"ph\": \"X\", \"dur\": 34.7672918254712, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.22, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.349, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.519, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.652, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.8, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.945, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.096, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.229, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.377, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.54, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.765, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703035.899, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.06, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.189, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.339, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.469, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.615, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.737, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703036.962, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.077, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.224, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.35, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.498, \"ph\": \"X\", \"dur\": 0.15814993160527735, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.716, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.862, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703037.986, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703038.143, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703038.274, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703038.433, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703039.969, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.158, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.289, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.443, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.561, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.783, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703040.918, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.065, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.218, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.408, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.566, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.714, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.839, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703041.982, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.131, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.274, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.385, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.546, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.658, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.814, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703042.956, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.176, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.302, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.452, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.617, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.776, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703043.919, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703044.08, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703044.22, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703044.379, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703044.507, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703034.141, \"ph\": \"X\", \"dur\": 10.671877561414787, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702962.254, \"ph\": \"X\", \"dur\": 82.67449815762946, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.251, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.396, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.585, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.729, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.889, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.022, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.183, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.32, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.478, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.617, \"ph\": \"X\", \"dur\": 0.09853189745123746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.83, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703046.966, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703047.131, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703047.262, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703049.549, \"ph\": \"X\", \"dur\": 0.09728465824299394, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703049.735, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703049.881, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703049.999, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.225, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.359, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.522, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.658, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.827, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703050.945, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.092, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.204, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.37, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.496, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.652, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.769, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703051.911, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.027, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.17, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.289, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.48, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.596, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.757, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703052.881, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.025, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.141, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.299, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.417, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.581, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.71, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.851, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703053.981, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.135, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.252, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.393, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.511, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.708, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.829, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703054.988, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.104, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.257, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.371, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.523, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.641, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.799, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703055.924, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703057.399, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703057.55, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703057.723, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703057.869, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.018, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.183, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.425, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.579, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.737, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703058.868, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.01, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.139, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.3, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.426, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.583, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.706, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.852, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703059.969, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.119, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.23, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.377, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.515, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.758, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703060.89, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.055, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.19, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.339, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.484, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.642, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.76, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703061.905, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.023, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.165, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.301, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.447, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.573, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.732, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.855, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703062.998, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.142, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.291, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.399, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.546, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.71, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703063.866, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703064.015, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703064.272, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703065.85, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.007, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.159, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.298, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.433, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.592, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.741, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703066.888, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.018, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.178, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.316, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.472, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.67, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.83, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703067.996, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703068.153, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703068.297, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703045.089, \"ph\": \"X\", \"dur\": 23.584295636518217, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702881.555, \"ph\": \"X\", \"dur\": 187.2814483443794, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.189, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.387, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.559, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.722, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.886, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.034, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.18, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.319, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.468, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.604, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.831, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703070.966, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.144, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.278, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.427, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.555, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.713, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703071.837, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.053, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.176, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.325, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.458, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.61, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.728, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703072.876, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703073.026, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703073.187, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703074.648, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703074.858, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703074.981, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.126, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.248, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.396, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.52, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.728, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703075.849, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.01, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.141, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.287, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.405, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.561, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.683, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.841, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703076.978, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.132, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.25, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.408, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.53, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.689, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703077.811, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.027, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.15, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.298, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.418, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.574, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.694, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.852, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703078.985, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.132, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.25, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.399, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.519, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.806, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703079.926, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.086, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.217, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.462, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.584, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.754, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703080.893, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703081.054, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703081.175, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703081.332, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703081.452, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.163, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.301, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.448, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.565, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.73, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703083.863, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.012, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.126, \"ph\": \"X\", \"dur\": 0.15216318340570847, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.373, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.505, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.669, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.791, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703084.934, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.067, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.222, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.345, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.501, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.622, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.782, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703085.908, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.049, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.168, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.318, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.439, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.581, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.7, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.842, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703086.957, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.101, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.217, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.377, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.534, \"ph\": \"X\", \"dur\": 0.11449655931675441, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.755, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703087.881, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.052, \"ph\": \"X\", \"dur\": 0.083814474793964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.22, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.375, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.508, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.66, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.789, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703088.93, \"ph\": \"X\", \"dur\": 0.8097076939916881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703089.795, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703089.948, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703090.063, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703090.214, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703090.33, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703091.865, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.089, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.231, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.382, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.547, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.682, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.83, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703092.974, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703093.126, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703093.248, \"ph\": \"X\", \"dur\": 0.4288008397941195, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703093.819, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703093.939, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.089, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.201, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.35, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.465, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.611, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.726, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703094.878, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.005, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.158, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.297, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.46, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.593, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.743, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703095.858, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.018, \"ph\": \"X\", \"dur\": 0.22425360964218347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.333, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.497, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.623, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.77, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703096.891, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703097.05, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703097.169, \"ph\": \"X\", \"dur\": 1.0297206903258436, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703098.344, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703098.491, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703098.648, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703098.785, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703098.934, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.056, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.204, \"ph\": \"X\", \"dur\": 0.10352085428421151, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.381, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.552, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.672, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.833, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703099.947, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703100.112, \"ph\": \"X\", \"dur\": 0.14592698736449092, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703101.606, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703101.79, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703101.912, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.057, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.176, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.34, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.476, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.626, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.754, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703102.914, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.03, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.19, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.319, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.476, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.603, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.766, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703103.878, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.036, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.154, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.469, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.596, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.743, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703104.968, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.129, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.243, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.409, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.59, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.733, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.842, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703105.99, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.102, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.266, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.395, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.553, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.681, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.837, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703106.964, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.125, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.255, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.414, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.54, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.693, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.811, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703107.972, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703108.126, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703108.282, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703108.409, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703109.698, \"ph\": \"X\", \"dur\": 0.1327062517571097, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703109.89, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703110.035, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703110.213, \"ph\": \"X\", \"dur\": 0.31330648911077025, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703110.66, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703110.796, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703110.98, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.096, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.243, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.372, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.519, \"ph\": \"X\", \"dur\": 0.10401974996750891, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.71, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.86, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703111.986, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.137, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.287, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.422, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.569, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.722, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703112.899, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.04, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.165, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.325, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.458, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.607, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.738, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703113.909, \"ph\": \"X\", \"dur\": 0.14817201793932924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.116, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.299, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.429, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.58, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.741, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703114.886, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703115.019, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703069.056, \"ph\": \"X\", \"dur\": 47.14364648887157, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702653.261, \"ph\": \"X\", \"dur\": 463.1977015747423, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.249, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.364, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.694, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.801, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.089, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.174, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.412, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.497, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.747, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.832, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.308, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.394, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.626, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.562, \"ph\": \"X\", \"dur\": 0.1763596240456326, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.976, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.06, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.27, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.208, \"ph\": \"X\", \"dur\": 0.16862674095452282, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.548, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.491, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.869, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703122.024, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703121.789, \"ph\": \"X\", \"dur\": 0.43403924446874226, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.885, \"ph\": \"X\", \"dur\": 1.4248460714973883, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703122.533, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703122.678, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703122.859, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.004, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703122.427, \"ph\": \"X\", \"dur\": 0.8563544403799955, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703120.241, \"ph\": \"X\", \"dur\": 3.148530657289922, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.621, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.735, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.959, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.05, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.35, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.251, \"ph\": \"X\", \"dur\": 0.2037988866269899, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.696, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.619, \"ph\": \"X\", \"dur\": 0.21602183086777632, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.033, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.173, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703124.927, \"ph\": \"X\", \"dur\": 0.4415226797182033, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.898, \"ph\": \"X\", \"dur\": 1.545828274697009, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.703, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.79, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.994, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.936, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703126.343, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703126.254, \"ph\": \"X\", \"dur\": 0.19706379490247491, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703126.654, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703126.778, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703126.549, \"ph\": \"X\", \"dur\": 0.4225646437529019, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703125.643, \"ph\": \"X\", \"dur\": 1.3941639869745979, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.274, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.444, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.603, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.735, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.917, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703129.238, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703127.144, \"ph\": \"X\", \"dur\": 2.300657443525983, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703123.535, \"ph\": \"X\", \"dur\": 5.994481082659968, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703129.709, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703129.831, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.032, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.181, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.384, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.521, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.665, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703130.835, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703131.009, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703131.143, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703131.374, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703131.514, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703129.625, \"ph\": \"X\", \"dur\": 2.119807758330673, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.683, \"ph\": \"X\", \"dur\": 13.169349352001596, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.08, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.194, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.467, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.556, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.875, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.958, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.215, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.12, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.577, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.513, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.877, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.045, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703133.79, \"ph\": \"X\", \"dur\": 0.43403924446874226, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.756, \"ph\": \"X\", \"dur\": 1.5478238574301986, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.485, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.603, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.837, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.753, \"ph\": \"X\", \"dur\": 0.18883201612806774, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.147, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.09, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.444, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.595, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.35, \"ph\": \"X\", \"dur\": 0.4435182624513929, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703134.421, \"ph\": \"X\", \"dur\": 1.4355723286882824, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703136.039, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703136.175, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703136.338, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703136.474, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703136.649, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703138.051, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703135.95, \"ph\": \"X\", \"dur\": 2.3016552348925776, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.367, \"ph\": \"X\", \"dur\": 5.972779120436531, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703138.644, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703138.75, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.048, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.138, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.402, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.339, \"ph\": \"X\", \"dur\": 0.17760686325387612, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.717, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.65, \"ph\": \"X\", \"dur\": 0.17735741541222744, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.022, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.166, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703139.934, \"ph\": \"X\", \"dur\": 0.420818508861361, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703138.983, \"ph\": \"X\", \"dur\": 1.4373184635798233, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.692, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.799, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.049, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.986, \"ph\": \"X\", \"dur\": 0.1728673542625508, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.374, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.283, \"ph\": \"X\", \"dur\": 0.16862674095452282, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.658, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.78, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703141.552, \"ph\": \"X\", \"dur\": 0.41233728224530514, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703140.599, \"ph\": \"X\", \"dur\": 1.4295855804887136, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703142.233, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703142.367, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703142.514, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703142.644, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703142.137, \"ph\": \"X\", \"dur\": 0.7011978828745025, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703138.556, \"ph\": \"X\", \"dur\": 4.376063486043186, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.147, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.268, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.434, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.555, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.724, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.839, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.981, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.111, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.271, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.433, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.632, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.778, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703144.938, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703145.082, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703143.045, \"ph\": \"X\", \"dur\": 2.226571434556318, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703132.019, \"ph\": \"X\", \"dur\": 13.350199037196905, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703146.721, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703146.873, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.08, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.211, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.362, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.49, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.684, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.83, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703147.992, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.117, \"ph\": \"X\", \"dur\": 0.12622060787424344, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.35, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.467, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.611, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.754, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703148.914, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.051, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.195, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.313, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.518, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.677, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.82, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703149.958, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.102, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.212, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.363, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.519, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.673, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703150.815, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703146.641, \"ph\": \"X\", \"dur\": 4.415975140706979, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.346, \"ph\": \"X\", \"dur\": 32.8245920347111, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.419, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.535, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.82, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.905, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.157, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.244, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.505, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.589, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.828, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.751, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703153.134, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703153.056, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703153.44, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703153.603, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703153.332, \"ph\": \"X\", \"dur\": 0.43653372288522924, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.443, \"ph\": \"X\", \"dur\": 1.4071352747403305, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.364, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.452, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.728, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.649, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.054, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.975, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.366, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.489, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.267, \"ph\": \"X\", \"dur\": 0.4537456239589897, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703155.264, \"ph\": \"X\", \"dur\": 1.5363492567143582, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.994, \"ph\": \"X\", \"dur\": 0.09728465824299394, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703157.156, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703157.305, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703157.439, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703156.916, \"ph\": \"X\", \"dur\": 0.6989528522996642, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703152.095, \"ph\": \"X\", \"dur\": 5.584388830989501, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703157.907, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.017, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.245, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.363, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.592, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.532, \"ph\": \"X\", \"dur\": 0.1641366798048462, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.904, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.844, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.21, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.337, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.134, \"ph\": \"X\", \"dur\": 0.38564636318889395, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703158.184, \"ph\": \"X\", \"dur\": 1.3961595697077875, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.823, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.934, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.138, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.075, \"ph\": \"X\", \"dur\": 0.16887618879617153, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.422, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.361, \"ph\": \"X\", \"dur\": 0.1661322625380358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.7, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.84, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703160.621, \"ph\": \"X\", \"dur\": 0.4008626815294648, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703159.76, \"ph\": \"X\", \"dur\": 1.347267792744642, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703161.318, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703161.453, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703161.631, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703161.8, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703161.199, \"ph\": \"X\", \"dur\": 0.8014759152172809, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703157.847, \"ph\": \"X\", \"dur\": 4.232132081411885, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703162.358, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703162.514, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703162.71, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.091, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.229, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.354, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.523, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.666, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.835, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703164.993, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703165.203, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703165.375, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703162.252, \"ph\": \"X\", \"dur\": 3.3705392363572675, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.73, \"ph\": \"X\", \"dur\": 13.991778885917368, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703165.985, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.093, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.324, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.408, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.732, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.815, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.022, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.956, \"ph\": \"X\", \"dur\": 0.16837729311287414, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.313, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.254, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.61, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.776, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703167.515, \"ph\": \"X\", \"dur\": 0.42356243511949676, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.641, \"ph\": \"X\", \"dur\": 1.3796960121589732, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.25, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.365, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.619, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.558, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.96, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.879, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703169.284, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703169.405, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703169.171, \"ph\": \"X\", \"dur\": 0.41582955202838695, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703168.168, \"ph\": \"X\", \"dur\": 1.503921037300027, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703169.896, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.04, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.217, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.35, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703169.778, \"ph\": \"X\", \"dur\": 0.7760322353691133, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703166.266, \"ph\": \"X\", \"dur\": 4.346878088570288, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.818, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.949, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703171.201, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703171.284, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703171.493, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703171.432, \"ph\": \"X\", \"dur\": 1.380693803525568, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.015, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703172.953, \"ph\": \"X\", \"dur\": 0.17411459347079428, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.316, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.44, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.227, \"ph\": \"X\", \"dur\": 0.3861452588721913, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703171.141, \"ph\": \"X\", \"dur\": 2.5408757150336827, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.912, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.001, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.235, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.172, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.54, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.482, \"ph\": \"X\", \"dur\": 0.16513447117144103, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.839, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.021, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703174.744, \"ph\": \"X\", \"dur\": 0.4697102858245067, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703173.828, \"ph\": \"X\", \"dur\": 1.4455502423542306, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.495, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.613, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.769, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.927, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703176.092, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703176.209, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703175.389, \"ph\": \"X\", \"dur\": 1.0541665788074166, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703170.734, \"ph\": \"X\", \"dur\": 5.767234098918, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703176.705, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703176.849, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.021, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.203, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.343, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.485, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.645, \"ph\": \"X\", \"dur\": 0.0808211006941796, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703177.786, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703176.59, \"ph\": \"X\", \"dur\": 1.4248460714973883, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703165.926, \"ph\": \"X\", \"dur\": 12.205981787554308, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.321, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.458, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.644, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.785, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.942, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.07, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.229, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.359, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.498, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.632, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.845, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703179.991, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703182.276, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703182.421, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703182.568, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703182.707, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703182.863, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.05, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.308, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.448, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.608, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.755, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703183.902, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.03, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.178, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.303, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.458, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.616, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.761, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703184.911, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703178.24, \"ph\": \"X\", \"dur\": 6.934899445675576, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703151.338, \"ph\": \"X\", \"dur\": 33.92091529875715, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703185.499, \"ph\": \"X\", \"dur\": 0.08531116184385623, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703185.647, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703185.872, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.019, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.167, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.303, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.462, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.598, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.751, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703186.882, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.124, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.257, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.486, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.629, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.79, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703187.924, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.08, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.213, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.405, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.537, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.701, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.813, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703188.97, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703189.103, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703189.265, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703189.39, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703190.706, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703190.842, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.013, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.139, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.299, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.424, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.57, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.731, \"ph\": \"X\", \"dur\": 0.12671950355754083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703191.947, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.102, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.247, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.4, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.562, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.679, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.828, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703192.941, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.097, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.25, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.395, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.537, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.682, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.814, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703193.967, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.083, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.285, \"ph\": \"X\", \"dur\": 0.07832662227769256, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.423, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.566, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.717, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703194.868, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703195.009, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703195.164, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703195.308, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703195.463, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703195.615, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703185.409, \"ph\": \"X\", \"dur\": 10.482297201761774, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703118.024, \"ph\": \"X\", \"dur\": 77.97789419506768, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.286, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.417, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.688, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.799, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.045, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.125, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.391, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.469, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.69, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.631, \"ph\": \"X\", \"dur\": 0.16089385786341306, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703198.076, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703199.312, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703199.57, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703199.479, \"ph\": \"X\", \"dur\": 0.19382097296104178, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703199.85, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703199.784, \"ph\": \"X\", \"dur\": 0.1429336132647065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.123, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.292, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.027, \"ph\": \"X\", \"dur\": 0.48442770848178013, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.974, \"ph\": \"X\", \"dur\": 2.6057321538623457, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.749, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.882, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.048, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.195, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703200.671, \"ph\": \"X\", \"dur\": 0.7463479422129177, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703197.332, \"ph\": \"X\", \"dur\": 4.148317606617921, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.673, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.759, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.992, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.077, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.335, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.275, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.647, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.582, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.921, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.048, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703202.846, \"ph\": \"X\", \"dur\": 0.3636949531238082, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.93, \"ph\": \"X\", \"dur\": 1.3654774851849971, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.499, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.577, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.784, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.72, \"ph\": \"X\", \"dur\": 0.16513447117144103, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.075, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.011, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.363, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.48, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.287, \"ph\": \"X\", \"dur\": 0.3592048919741315, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703203.435, \"ph\": \"X\", \"dur\": 1.2779212927663024, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.877, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703205.027, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703205.168, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703205.342, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703205.525, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703205.672, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703204.8, \"ph\": \"X\", \"dur\": 1.0860959025384505, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703201.607, \"ph\": \"X\", \"dur\": 4.3598493763360215, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703206.154, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703206.3, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703207.671, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703207.823, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703208.018, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703208.152, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703206.056, \"ph\": \"X\", \"dur\": 2.3228583014327167, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.985, \"ph\": \"X\", \"dur\": 11.498797156480235, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703208.729, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703208.842, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.101, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.183, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.447, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.532, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.757, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.696, \"ph\": \"X\", \"dur\": 0.16812784527122543, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.072, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.011, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.405, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.528, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.273, \"ph\": \"X\", \"dur\": 0.4292997354774169, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.386, \"ph\": \"X\", \"dur\": 1.3836871776253525, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.014, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.099, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.35, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.289, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.695, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.619, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.016, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.151, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703211.912, \"ph\": \"X\", \"dur\": 0.43852930561841885, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703210.923, \"ph\": \"X\", \"dur\": 1.5116539203911368, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.629, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.81, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.962, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.117, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703212.529, \"ph\": \"X\", \"dur\": 0.7782772659439515, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703209.043, \"ph\": \"X\", \"dur\": 4.36009882417767, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.62, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.728, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.947, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.03, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.234, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.174, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.541, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.481, \"ph\": \"X\", \"dur\": 0.16114330570506177, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.828, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.949, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703214.739, \"ph\": \"X\", \"dur\": 1.6812784527122544, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.889, \"ph\": \"X\", \"dur\": 2.6004937491877227, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703216.716, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703216.83, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.06, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703216.993, \"ph\": \"X\", \"dur\": 0.1544082139805468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.342, \"ph\": \"X\", \"dur\": 0.07982330932758477, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.28, \"ph\": \"X\", \"dur\": 0.19856048195236714, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.668, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.812, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703217.587, \"ph\": \"X\", \"dur\": 0.3936286941216524, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703216.649, \"ph\": \"X\", \"dur\": 1.402395765749005, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703218.232, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703218.383, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703218.561, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703218.683, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703218.146, \"ph\": \"X\", \"dur\": 0.7341249979721313, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703213.56, \"ph\": \"X\", \"dur\": 5.4037885936358405, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.191, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.34, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.505, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.658, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.816, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.946, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.093, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.238, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.399, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.513, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.695, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.841, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703220.986, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703221.119, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703219.106, \"ph\": \"X\", \"dur\": 2.190401497517256, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703208.666, \"ph\": \"X\", \"dur\": 12.692155630927628, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703221.562, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703221.7, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703221.885, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.016, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.176, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.308, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.458, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.584, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.74, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703222.867, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703223.063, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703223.194, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703223.346, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703224.674, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703224.817, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703224.989, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.142, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.276, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.47, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.599, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.779, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703225.919, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703226.066, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703226.214, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703221.488, \"ph\": \"X\", \"dur\": 5.00591928620616, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.628, \"ph\": \"X\", \"dur\": 29.990864553581844, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703226.836, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703226.948, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.203, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.29, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.519, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.696, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.921, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.049, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.276, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.213, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.604, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.54, \"ph\": \"X\", \"dur\": 0.16513447117144103, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.903, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.075, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703228.801, \"ph\": \"X\", \"dur\": 0.43653372288522924, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.86, \"ph\": \"X\", \"dur\": 1.460267665011504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.577, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.673, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.913, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.814, \"ph\": \"X\", \"dur\": 0.20005716900225934, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.214, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.153, \"ph\": \"X\", \"dur\": 0.16014551433846697, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.509, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.657, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.407, \"ph\": \"X\", \"dur\": 0.4290502876357682, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703229.493, \"ph\": \"X\", \"dur\": 1.400899078699113, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.111, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.257, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.426, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.563, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.742, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703231.88, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703230.981, \"ph\": \"X\", \"dur\": 1.0865947982217479, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.457, \"ph\": \"X\", \"dur\": 5.966044028712016, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703233.687, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703233.802, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.066, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.151, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.4, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.336, \"ph\": \"X\", \"dur\": 0.17012342800441504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.698, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.635, \"ph\": \"X\", \"dur\": 0.16812784527122543, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.003, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.147, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703234.902, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703233.972, \"ph\": \"X\", \"dur\": 1.452784229762043, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.645, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.765, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.015, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.95, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.322, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.257, \"ph\": \"X\", \"dur\": 0.14243471758140908, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.58, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.704, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703236.501, \"ph\": \"X\", \"dur\": 0.3686839099567822, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703235.581, \"ph\": \"X\", \"dur\": 1.347018344902993, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703237.203, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703237.381, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703237.527, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703237.659, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703237.081, \"ph\": \"X\", \"dur\": 0.7655554260198678, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703233.619, \"ph\": \"X\", \"dur\": 4.287010606574601, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.096, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.241, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.43, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.555, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.722, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.866, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.029, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.185, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.334, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.463, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.645, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.79, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703239.951, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703240.08, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703238.023, \"ph\": \"X\", \"dur\": 2.241787752896889, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703227.141, \"ph\": \"X\", \"dur\": 13.18406677465887, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703240.571, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703240.699, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.203, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.287, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.549, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.639, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.922, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.804, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703243.253, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703243.157, \"ph\": \"X\", \"dur\": 0.21153176971809967, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703243.547, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703243.729, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703243.471, \"ph\": \"X\", \"dur\": 0.48367936495683406, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.49, \"ph\": \"X\", \"dur\": 1.5313602998813842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.289, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.402, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.675, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.559, \"ph\": \"X\", \"dur\": 0.21951410065085813, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.967, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.907, \"ph\": \"X\", \"dur\": 0.14418085247294998, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.264, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.42, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.163, \"ph\": \"X\", \"dur\": 0.4188229261281714, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703244.166, \"ph\": \"X\", \"dur\": 1.4777290139269132, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.809, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.946, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.113, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.25, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703245.733, \"ph\": \"X\", \"dur\": 0.702445122082746, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703242.137, \"ph\": \"X\", \"dur\": 4.361096615544264, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.686, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.769, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.006, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.088, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.303, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.242, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.594, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.537, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.873, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.989, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703247.8, \"ph\": \"X\", \"dur\": 0.42281409159455063, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.946, \"ph\": \"X\", \"dur\": 1.3357931920288015, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703248.491, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703248.584, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703248.793, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703248.736, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703249.083, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703249.027, \"ph\": \"X\", \"dur\": 0.15914772297187216, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703250.52, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703250.664, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703250.44, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703248.428, \"ph\": \"X\", \"dur\": 2.4640457798058826, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.087, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.223, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.376, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.492, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.008, \"ph\": \"X\", \"dur\": 0.67475641165974, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703246.626, \"ph\": \"X\", \"dur\": 5.158331917453517, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.032, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.17, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.337, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.464, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.623, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.77, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703252.907, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703253.022, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703253.182, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703253.341, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703253.527, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703253.674, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703251.894, \"ph\": \"X\", \"dur\": 1.9843575803154279, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703240.51, \"ph\": \"X\", \"dur\": 13.462949461622118, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.145, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.279, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.473, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.607, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.782, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.922, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.078, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.21, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.355, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.482, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.67, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.804, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703255.952, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.078, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.241, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.394, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.556, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.672, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703256.894, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703257.037, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703257.199, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703257.339, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703257.491, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703260.405, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703260.642, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703260.795, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703260.939, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703261.087, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703254.068, \"ph\": \"X\", \"dur\": 7.319548017497875, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703226.777, \"ph\": \"X\", \"dur\": 34.753572194180514, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703261.832, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703261.974, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.156, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.305, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.462, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.596, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.764, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703262.903, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.054, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.19, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.389, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.506, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.669, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.809, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703263.962, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.081, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.247, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.389, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.6, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.72, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703264.868, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.018, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.181, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.303, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.453, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.588, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.752, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703265.872, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.036, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.151, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.301, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.435, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.602, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.76, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703266.97, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703267.127, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703267.296, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703267.414, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703267.581, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.16, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.306, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.439, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.586, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.749, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703269.926, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.078, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.228, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.344, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.513, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.663, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703270.867, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703271.036, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703271.202, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703271.363, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703261.661, \"ph\": \"X\", \"dur\": 10.40022886185935, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703196.226, \"ph\": \"X\", \"dur\": 75.96036005181297, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703272.447, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703272.592, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703272.789, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703272.928, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.072, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.228, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.395, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.541, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.714, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703273.853, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.055, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.19, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.347, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.48, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.628, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.757, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703274.911, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.057, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.264, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.401, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.591, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.725, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.879, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703275.994, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.143, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.258, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.414, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.544, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.704, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703276.845, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703278.227, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703278.405, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703278.573, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703278.691, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703278.896, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.014, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.166, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.285, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.433, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.548, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.693, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.805, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703279.951, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.068, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.214, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.337, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.492, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.612, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.774, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703280.891, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.072, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.201, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.347, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.523, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.68, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.795, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703281.963, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.081, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.224, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.341, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.496, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.61, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.769, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703282.888, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.041, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.175, \"ph\": \"X\", \"dur\": 0.1237261294577564, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.398, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.506, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.663, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.785, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703283.93, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703284.044, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703284.19, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703284.342, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703284.492, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703284.62, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703285.938, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.069, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.241, \"ph\": \"X\", \"dur\": 0.10302195860091411, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.406, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.569, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.753, \"ph\": \"X\", \"dur\": 0.12148109888291808, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703286.994, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.126, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.283, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.397, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.557, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.675, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.817, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703287.934, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.083, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.195, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.339, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.482, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.636, \"ph\": \"X\", \"dur\": 0.09952968881783227, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.8, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703288.94, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.081, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.219, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.374, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.512, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.638, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.784, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703289.957, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.102, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.229, \"ph\": \"X\", \"dur\": 0.16513447117144103, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.484, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.593, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.754, \"ph\": \"X\", \"dur\": 0.10701312406729335, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703290.925, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.08, \"ph\": \"X\", \"dur\": 0.08231778774407181, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.22, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.393, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.562, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.721, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703291.86, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.006, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.138, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.285, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.428, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.57, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703292.722, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703272.338, \"ph\": \"X\", \"dur\": 20.752314290280502, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.605, \"ph\": \"X\", \"dur\": 176.82509371814908, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703294.848, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703294.96, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.232, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.383, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.655, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.745, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.013, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.101, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.37, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.452, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.673, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.608, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.97, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.048, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.269, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.206, \"ph\": \"X\", \"dur\": 0.1843419549783911, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.562, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.499, \"ph\": \"X\", \"dur\": 0.16089385786341306, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.893, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703298.045, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703297.755, \"ph\": \"X\", \"dur\": 0.4884188739481593, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.907, \"ph\": \"X\", \"dur\": 1.3996518394908695, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703298.555, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703298.7, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703298.88, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.028, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703298.448, \"ph\": \"X\", \"dur\": 0.7942419278094686, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703296.306, \"ph\": \"X\", \"dur\": 3.037027472072952, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.578, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.686, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.952, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.036, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.244, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.181, \"ph\": \"X\", \"dur\": 0.1661322625380358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.521, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.457, \"ph\": \"X\", \"dur\": 0.1661322625380358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.869, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.016, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703300.76, \"ph\": \"X\", \"dur\": 0.42131740454465844, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.889, \"ph\": \"X\", \"dur\": 1.3525061974192645, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.44, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.542, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.746, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.685, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703302.031, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.97, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703303.509, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703303.673, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703303.433, \"ph\": \"X\", \"dur\": 0.4410237840349059, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703301.378, \"ph\": \"X\", \"dur\": 2.5805379218558264, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.132, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.266, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.45, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.602, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.8, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.948, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703304.046, \"ph\": \"X\", \"dur\": 1.0923320985796678, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703299.513, \"ph\": \"X\", \"dur\": 5.686662446065469, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703305.412, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703305.544, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703305.727, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703305.856, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.035, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.204, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.343, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.487, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.635, \"ph\": \"X\", \"dur\": 0.07782772659439516, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703306.773, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703305.295, \"ph\": \"X\", \"dur\": 1.798020042603847, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.948, \"ph\": \"X\", \"dur\": 11.249349314831534, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.434, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.545, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.854, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.965, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.219, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.297, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.52, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.457, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.825, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.763, \"ph\": \"X\", \"dur\": 0.1641366798048462, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703309.228, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703309.386, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703309.024, \"ph\": \"X\", \"dur\": 0.7136702749569377, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703308.157, \"ph\": \"X\", \"dur\": 1.7002364886775558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.18, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.296, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.571, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.494, \"ph\": \"X\", \"dur\": 0.18010134167036315, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.899, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.842, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703311.204, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703311.373, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703311.1, \"ph\": \"X\", \"dur\": 2.6299285945022697, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703310.073, \"ph\": \"X\", \"dur\": 3.724505723656776, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703314.141, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703314.297, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703314.547, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703314.723, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703314.93, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703315.09, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703313.936, \"ph\": \"X\", \"dur\": 1.4809718358683464, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.791, \"ph\": \"X\", \"dur\": 7.7466027224004534, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703315.832, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703315.959, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.247, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.331, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.576, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.518, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.884, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.823, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703317.254, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703317.393, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703317.087, \"ph\": \"X\", \"dur\": 0.5111186275381913, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703316.185, \"ph\": \"X\", \"dur\": 1.492945332267484, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703317.908, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.013, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.27, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.186, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.559, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.498, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.81, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.954, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703318.733, \"ph\": \"X\", \"dur\": 0.42530857001103767, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703317.812, \"ph\": \"X\", \"dur\": 1.423349384447496, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703319.418, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703319.552, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703319.708, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703319.85, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.04, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.183, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703319.32, \"ph\": \"X\", \"dur\": 1.0549149223323624, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703315.755, \"ph\": \"X\", \"dur\": 4.677645926596468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.659, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.794, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.977, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703321.108, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703321.261, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703321.378, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703321.522, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703322.918, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.079, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.234, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.451, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.605, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.756, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703323.928, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703320.526, \"ph\": \"X\", \"dur\": 3.746207685880213, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703307.371, \"ph\": \"X\", \"dur\": 17.006605500083584, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703324.675, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703324.831, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.041, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.185, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.331, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.462, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.614, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.743, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703325.907, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.049, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.249, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.376, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.545, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.688, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.855, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703326.973, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.116, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.252, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.44, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.581, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.757, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703327.903, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703324.539, \"ph\": \"X\", \"dur\": 3.6853424125179295, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.588, \"ph\": \"X\", \"dur\": 32.76372676134882, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703328.665, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703328.78, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.052, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.161, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.404, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.495, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.746, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.826, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703330.057, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.992, \"ph\": \"X\", \"dur\": 0.17261790642090208, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703330.357, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703330.294, \"ph\": \"X\", \"dur\": 0.1636377841215488, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703330.638, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703332.093, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703330.555, \"ph\": \"X\", \"dur\": 1.8102429868446337, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.667, \"ph\": \"X\", \"dur\": 2.7828401214329244, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703332.666, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703332.761, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.044, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703332.951, \"ph\": \"X\", \"dur\": 0.20305054310204376, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.386, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.29, \"ph\": \"X\", \"dur\": 0.20704170856842302, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.719, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.854, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703333.598, \"ph\": \"X\", \"dur\": 0.4462621887095286, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703332.6, \"ph\": \"X\", \"dur\": 1.5104066811828931, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703334.308, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703334.443, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703334.593, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703334.739, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703334.203, \"ph\": \"X\", \"dur\": 0.7363700285469696, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703329.342, \"ph\": \"X\", \"dur\": 5.66146821405895, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.257, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.377, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.656, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.746, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.956, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.899, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703336.276, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703336.216, \"ph\": \"X\", \"dur\": 0.16912563663782024, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703336.602, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703336.722, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703336.48, \"ph\": \"X\", \"dur\": 0.430048079002363, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.595, \"ph\": \"X\", \"dur\": 1.3729609204344582, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.176, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.291, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.506, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.445, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.8, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.74, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.061, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.23, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.984, \"ph\": \"X\", \"dur\": 0.41533065634508953, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703337.111, \"ph\": \"X\", \"dur\": 1.3545017801524541, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.633, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.779, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.956, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703339.13, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703338.558, \"ph\": \"X\", \"dur\": 0.7560764080372171, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703335.171, \"ph\": \"X\", \"dur\": 4.206438953722069, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703340.856, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.011, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.202, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.335, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.485, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.611, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.774, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703341.954, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703342.108, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703342.257, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703342.427, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703342.571, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703340.743, \"ph\": \"X\", \"dur\": 2.0649292331679585, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703328.972, \"ph\": \"X\", \"dur\": 13.943884900320818, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.177, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.282, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.572, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.687, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.931, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.019, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.266, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.202, \"ph\": \"X\", \"dur\": 0.17236845857925337, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.568, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.509, \"ph\": \"X\", \"dur\": 0.16962453232111765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.906, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.073, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703344.781, \"ph\": \"X\", \"dur\": 0.4801870951737522, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.869, \"ph\": \"X\", \"dur\": 1.45527870817853, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.577, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.692, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.911, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.846, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703346.232, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703346.169, \"ph\": \"X\", \"dur\": 0.15041704851416757, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703346.531, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703346.671, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703346.427, \"ph\": \"X\", \"dur\": 0.45823568510866636, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703345.484, \"ph\": \"X\", \"dur\": 1.4672522045776677, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703347.18, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703347.314, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703347.472, \"ph\": \"X\", \"dur\": 0.11699103773324145, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703347.644, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703347.077, \"ph\": \"X\", \"dur\": 0.8082110069417958, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.509, \"ph\": \"X\", \"dur\": 4.4394232378219565, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703348.232, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703348.369, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703349.823, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703349.988, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.232, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.17, \"ph\": \"X\", \"dur\": 0.18109913303695796, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.542, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.479, \"ph\": \"X\", \"dur\": 0.14966870498922144, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.849, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.999, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703350.733, \"ph\": \"X\", \"dur\": 0.4522489369090975, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703349.756, \"ph\": \"X\", \"dur\": 1.5099077854995957, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703351.472, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703351.589, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703351.838, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703351.741, \"ph\": \"X\", \"dur\": 0.18259582008685019, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.127, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.043, \"ph\": \"X\", \"dur\": 0.1855891941866346, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.438, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.639, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.329, \"ph\": \"X\", \"dur\": 0.4884188739481593, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703351.407, \"ph\": \"X\", \"dur\": 1.4742367441438313, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.069, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.211, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.375, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.516, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.672, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703353.822, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703352.992, \"ph\": \"X\", \"dur\": 1.0347096471588177, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703348.154, \"ph\": \"X\", \"dur\": 5.955068323679473, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.275, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.406, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.598, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.737, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.88, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.027, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.191, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.308, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.467, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.583, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.767, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703355.91, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703354.199, \"ph\": \"X\", \"dur\": 1.8790905911396754, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703343.098, \"ph\": \"X\", \"dur\": 13.056100031893086, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.357, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.493, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.67, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.801, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.949, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703358.318, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703358.49, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703358.625, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703358.791, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703358.923, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.122, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.238, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.387, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.517, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.667, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.791, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703359.953, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.128, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.312, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.429, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.578, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.719, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703360.905, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703361.019, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703361.181, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703361.35, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703361.502, \"ph\": \"X\", \"dur\": 0.10002858450112967, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703361.663, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703356.278, \"ph\": \"X\", \"dur\": 5.6257971727031855, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703328.601, \"ph\": \"X\", \"dur\": 33.42700857229272, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.284, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.428, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.662, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.802, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.966, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.106, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.258, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.389, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.53, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.683, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703363.893, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.029, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.189, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.323, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.47, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.597, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.765, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703364.878, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703365.08, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703365.194, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703365.348, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703366.676, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703366.879, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.002, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.15, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.284, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.434, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.613, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.76, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703367.875, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.032, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.172, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.331, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.46, \"ph\": \"X\", \"dur\": 0.12796674276578435, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.693, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.822, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703368.981, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.131, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.286, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.437, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.597, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.741, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.89, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703369.999, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.153, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.279, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.434, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.57, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.717, \"ph\": \"X\", \"dur\": 0.08431337047726141, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703370.863, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.048, \"ph\": \"X\", \"dur\": 0.10002858450112967, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.214, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.365, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.493, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.652, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.785, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703371.939, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703372.091, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703362.167, \"ph\": \"X\", \"dur\": 10.533434009299757, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703295.168, \"ph\": \"X\", \"dur\": 77.69776426889618, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.222, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.328, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.598, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.702, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.975, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703374.076, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703374.373, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703374.451, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703375.932, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.013, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.3, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.234, \"ph\": \"X\", \"dur\": 0.1763596240456326, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.631, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.547, \"ph\": \"X\", \"dur\": 0.18733532907817554, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.933, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.108, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703376.836, \"ph\": \"X\", \"dur\": 0.4622268505750456, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703375.844, \"ph\": \"X\", \"dur\": 1.52063404269049, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.624, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.741, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.977, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.889, \"ph\": \"X\", \"dur\": 0.20255164741874637, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703378.324, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703378.26, \"ph\": \"X\", \"dur\": 0.1429336132647065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703378.579, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703378.706, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703378.504, \"ph\": \"X\", \"dur\": 0.3816551977225147, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703377.533, \"ph\": \"X\", \"dur\": 1.4243471758140909, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.169, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.285, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.454, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.611, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.774, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.923, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703379.057, \"ph\": \"X\", \"dur\": 1.0935793377879115, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703374.269, \"ph\": \"X\", \"dur\": 5.953072740946284, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.432, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.544, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.824, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.905, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.148, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.084, \"ph\": \"X\", \"dur\": 0.17012342800441504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.47, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.382, \"ph\": \"X\", \"dur\": 0.19431986864433917, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.782, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.899, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703381.671, \"ph\": \"X\", \"dur\": 0.4447655016596364, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.725, \"ph\": \"X\", \"dur\": 1.4547798124952327, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.385, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.495, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.731, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.672, \"ph\": \"X\", \"dur\": 0.1641366798048462, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703383.034, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.977, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703384.621, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703384.772, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703384.502, \"ph\": \"X\", \"dur\": 0.4951539656726743, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703382.323, \"ph\": \"X\", \"dur\": 2.7381889577778065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703385.27, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703385.393, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703385.554, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703385.709, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703385.162, \"ph\": \"X\", \"dur\": 0.7812706400437359, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703380.369, \"ph\": \"X\", \"dur\": 5.659223183484112, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.247, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.4, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.599, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.74, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.894, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703387.048, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703387.226, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703387.367, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703387.513, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703387.658, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703386.141, \"ph\": \"X\", \"dur\": 1.7778147674303022, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.914, \"ph\": \"X\", \"dur\": 14.115006119691827, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.281, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.397, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.675, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.788, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.058, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.139, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.387, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.324, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.746, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.642, \"ph\": \"X\", \"dur\": 0.2065428128851256, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703390.062, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703390.184, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703389.948, \"ph\": \"X\", \"dur\": 0.437531514251824, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.964, \"ph\": \"X\", \"dur\": 1.502923245933432, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703390.74, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703390.856, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.095, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.011, \"ph\": \"X\", \"dur\": 0.19382097296104178, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.468, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.357, \"ph\": \"X\", \"dur\": 0.18808367260312164, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.76, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.884, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703391.648, \"ph\": \"X\", \"dur\": 0.4285513919524708, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703390.663, \"ph\": \"X\", \"dur\": 1.478726805293508, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703392.405, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703393.771, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703393.985, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703394.127, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703394.319, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703394.505, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703392.256, \"ph\": \"X\", \"dur\": 2.4515733877234474, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.576, \"ph\": \"X\", \"dur\": 6.2219775142435845, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.065, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.216, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.499, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.606, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.826, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.758, \"ph\": \"X\", \"dur\": 0.1738651456291456, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.137, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.075, \"ph\": \"X\", \"dur\": 0.1429336132647065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.417, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.558, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.322, \"ph\": \"X\", \"dur\": 0.3923814549134089, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703395.432, \"ph\": \"X\", \"dur\": 1.3500117190027774, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.988, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.092, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.295, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.236, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.548, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.491, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.804, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.926, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703397.731, \"ph\": \"X\", \"dur\": 0.36294660959886205, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703396.929, \"ph\": \"X\", \"dur\": 1.2337690247944821, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.329, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.469, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.658, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.811, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.975, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703399.16, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703398.256, \"ph\": \"X\", \"dur\": 1.1339898881350012, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703394.961, \"ph\": \"X\", \"dur\": 4.492306180251482, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703399.657, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703399.789, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703399.961, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.144, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.324, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.473, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.621, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.764, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703400.923, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703401.049, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703402.536, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703402.707, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703402.874, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703403.045, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703399.548, \"ph\": \"X\", \"dur\": 3.731989158906237, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703388.222, \"ph\": \"X\", \"dur\": 15.15071355821724, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703403.598, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703403.748, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703403.946, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.089, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.238, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.394, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.549, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.677, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.843, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703404.981, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.168, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.336, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.477, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.62, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.779, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703405.915, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.07, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.201, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.414, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.564, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.724, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703406.859, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703407.007, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703407.174, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703407.318, \"ph\": \"X\", \"dur\": 0.07882551796098997, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703407.46, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703403.508, \"ph\": \"X\", \"dur\": 4.261816374568081, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.536, \"ph\": \"X\", \"dur\": 34.347221660134785, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.17, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.301, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.607, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.721, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.061, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.192, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.449, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.541, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.788, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.71, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703410.09, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703410.012, \"ph\": \"X\", \"dur\": 0.18010134167036315, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703411.594, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703411.756, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703411.488, \"ph\": \"X\", \"dur\": 0.46721580740801966, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703409.358, \"ph\": \"X\", \"dur\": 2.65686896140033, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.233, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.348, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.644, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.551, \"ph\": \"X\", \"dur\": 0.1968143470608262, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.953, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.891, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703413.214, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703413.445, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703413.137, \"ph\": \"X\", \"dur\": 0.5330700376032771, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703412.171, \"ph\": \"X\", \"dur\": 1.570024715336933, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703413.92, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703414.06, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703414.263, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703414.412, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703413.837, \"ph\": \"X\", \"dur\": 0.7942419278094686, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.965, \"ph\": \"X\", \"dur\": 5.722582935262882, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703414.936, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.051, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.269, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.351, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.568, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.494, \"ph\": \"X\", \"dur\": 0.1763596240456326, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.943, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.861, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703416.232, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703416.436, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703416.154, \"ph\": \"X\", \"dur\": 0.4791893038071574, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703415.213, \"ph\": \"X\", \"dur\": 1.4817201793932926, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703416.924, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.032, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.229, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.172, \"ph\": \"X\", \"dur\": 0.15765103592197993, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.494, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.438, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.762, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.945, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703417.669, \"ph\": \"X\", \"dur\": 0.4422710232431494, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703416.866, \"ph\": \"X\", \"dur\": 1.3051111075060111, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.37, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.527, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.676, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.815, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.999, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703420.352, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703418.285, \"ph\": \"X\", \"dur\": 2.3283461539489885, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703414.849, \"ph\": \"X\", \"dur\": 5.828598267963581, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703420.854, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.002, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.202, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.333, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.518, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.644, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.787, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703421.935, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.096, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.229, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.408, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.539, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.701, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703422.844, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703420.774, \"ph\": \"X\", \"dur\": 2.271472046053084, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.514, \"ph\": \"X\", \"dur\": 14.631612599746289, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.411, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.53, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.794, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.902, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.187, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.314, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.561, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.497, \"ph\": \"X\", \"dur\": 0.1748629369957404, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.867, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.785, \"ph\": \"X\", \"dur\": 0.19182539022785217, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.156, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.306, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.076, \"ph\": \"X\", \"dur\": 0.4283019441108221, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703424.124, \"ph\": \"X\", \"dur\": 1.4450513466709332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.779, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.888, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.093, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.031, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.381, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.319, \"ph\": \"X\", \"dur\": 0.14617643520613963, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.686, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.821, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703426.563, \"ph\": \"X\", \"dur\": 0.46172795489174817, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703425.717, \"ph\": \"X\", \"dur\": 1.3667247243932406, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703427.293, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703427.426, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703427.572, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703428.925, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703427.197, \"ph\": \"X\", \"dur\": 1.9399558645019588, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.712, \"ph\": \"X\", \"dur\": 5.510053374178188, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.442, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.558, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.845, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.948, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.184, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.103, \"ph\": \"X\", \"dur\": 0.1948187643276366, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.553, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.454, \"ph\": \"X\", \"dur\": 0.18234637224520148, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.867, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.002, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703430.738, \"ph\": \"X\", \"dur\": 0.4692113901412093, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.761, \"ph\": \"X\", \"dur\": 1.5111550247078394, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.527, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.634, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.876, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.811, \"ph\": \"X\", \"dur\": 0.17735741541222744, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.165, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.103, \"ph\": \"X\", \"dur\": 0.13994023916492207, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.46, \"ph\": \"X\", \"dur\": 0.11075484169202388, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.634, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.353, \"ph\": \"X\", \"dur\": 0.4632246419416404, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703431.441, \"ph\": \"X\", \"dur\": 1.437567911421472, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.049, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.18, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.355, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.502, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.691, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703433.819, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703432.974, \"ph\": \"X\", \"dur\": 1.0307184816924384, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703429.379, \"ph\": \"X\", \"dur\": 4.689120527312308, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.262, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.398, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.566, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.695, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.876, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.988, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.171, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.302, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.473, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.634, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.812, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703435.942, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703436.093, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703436.234, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703434.164, \"ph\": \"X\", \"dur\": 3.555878982702253, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703423.302, \"ph\": \"X\", \"dur\": 14.519361071004374, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.052, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.222, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.423, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.562, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.725, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703438.857, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.007, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.133, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.297, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.429, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.616, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.743, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703439.897, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.023, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.182, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.31, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.468, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.596, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.786, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703440.922, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.067, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.182, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.33, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.483, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.629, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703441.784, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703437.951, \"ph\": \"X\", \"dur\": 4.104664234329399, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703408.068, \"ph\": \"X\", \"dur\": 34.086548665611886, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703442.416, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703442.554, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703442.746, \"ph\": \"X\", \"dur\": 0.0808211006941796, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703442.889, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.055, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.185, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.331, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.462, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.626, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.754, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703443.961, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703444.099, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703444.248, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703444.382, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703444.542, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703444.661, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.023, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.141, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.339, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.453, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.615, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.734, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703447.881, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.033, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.178, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.298, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.445, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.591, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.747, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703448.864, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.008, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.12, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.275, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.389, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.582, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.709, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703449.867, \"ph\": \"X\", \"dur\": 0.083814474793964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.013, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.171, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.306, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.451, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.603, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.752, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703450.872, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.031, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.176, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.334, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.448, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.604, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.741, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703451.924, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.061, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.213, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.347, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.5, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.633, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.785, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703452.954, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703453.095, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703453.246, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703442.278, \"ph\": \"X\", \"dur\": 11.256583302239346, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703373.16, \"ph\": \"X\", \"dur\": 80.51976770146796, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703453.927, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703455.28, \"ph\": \"X\", \"dur\": 0.07982330932758477, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703455.487, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703455.637, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703455.803, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703455.943, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.109, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.247, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.396, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.531, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.726, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703456.859, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.014, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.153, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.299, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.425, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.589, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.721, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703457.924, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.055, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.211, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.345, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.528, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.657, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.818, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703458.965, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.122, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.244, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.449, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.585, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.767, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703459.884, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.046, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.164, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.371, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.489, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.635, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.749, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703460.896, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.014, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.158, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.276, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.419, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.534, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.675, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.787, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703461.947, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703463.246, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703463.447, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703463.575, \"ph\": \"X\", \"dur\": 0.10302195860091411, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703463.848, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703463.983, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.144, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.262, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.424, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.542, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.688, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.818, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703464.98, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.104, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.258, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.386, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.547, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.714, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703465.886, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.021, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.234, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.358, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.517, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.694, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.838, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703466.959, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.111, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.227, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.387, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.504, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.65, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.785, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703467.942, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.067, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.223, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.342, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.539, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.651, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.807, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703468.924, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.067, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.205, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.362, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.496, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.655, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.789, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703469.96, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703470.087, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703471.713, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703471.872, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.077, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.254, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.401, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.542, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.729, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703472.919, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.078, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.206, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.358, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.494, \"ph\": \"X\", \"dur\": 0.12796674276578435, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.726, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703473.87, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.018, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.147, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.305, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.437, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.594, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.735, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703474.889, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.024, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.181, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.314, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.469, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.634, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.776, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703475.921, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703453.835, \"ph\": \"X\", \"dur\": 22.489718507363712, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703294.744, \"ph\": \"X\", \"dur\": 181.7574258910689, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703476.785, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703476.937, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.141, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.29, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.461, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.605, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.763, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703477.904, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.047, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.188, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.406, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.55, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.706, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703478.882, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703479.024, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703479.158, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703480.493, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703480.622, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703480.834, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703480.955, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.129, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.253, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.451, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.597, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.75, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703481.887, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.032, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.163, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.355, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.496, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.643, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.764, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703482.922, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.076, \"ph\": \"X\", \"dur\": 0.14143692621481427, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.331, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.468, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.625, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.76, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703483.938, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.068, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.214, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.333, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.494, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.618, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.812, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703484.94, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.094, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.218, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.39, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.509, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.69, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.808, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703485.963, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.106, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.273, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.419, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.576, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.699, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703486.867, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703487.004, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703487.164, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703487.284, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703487.458, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703488.763, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703488.968, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.097, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.323, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.483, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.657, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.774, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703489.98, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.115, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.27, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.392, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.547, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.666, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.818, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703490.933, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.089, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.208, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.352, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.492, \"ph\": \"X\", \"dur\": 0.11699103773324145, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.704, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.823, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703491.982, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.099, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.258, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.376, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.534, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.656, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.807, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703492.924, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.068, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.185, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.34, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.482, \"ph\": \"X\", \"dur\": 0.05313239027117362, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.629, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.744, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703493.894, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.007, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.161, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.275, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.427, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.542, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.689, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.805, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703494.987, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703495.103, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703495.254, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703495.378, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703496.742, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703496.908, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.058, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.19, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.35, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.494, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.644, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.771, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703497.922, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.057, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.22, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.35, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.5, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.629, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703498.774, \"ph\": \"X\", \"dur\": 0.32378329846001574, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703499.157, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703499.316, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703499.445, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703499.603, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703499.783, \"ph\": \"X\", \"dur\": 0.1763596240456326, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.062, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.194, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.339, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.474, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.618, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.731, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.878, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703500.988, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.133, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.246, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.406, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.524, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.673, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.789, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703501.946, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.061, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.208, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.32, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.478, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.622, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.784, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703502.901, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703503.065, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703503.183, \"ph\": \"X\", \"dur\": 0.3913836635468141, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703503.685, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703503.804, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.191, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.35, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.513, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.643, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.789, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703505.904, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.053, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.171, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.315, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.428, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.574, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.687, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.827, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703506.94, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.094, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.21, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.368, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.509, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.662, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.775, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703507.928, \"ph\": \"X\", \"dur\": 0.12671950355754083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.115, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.273, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.431, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.576, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.702, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.864, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703508.982, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.128, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.256, \"ph\": \"X\", \"dur\": 0.14742367441438312, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.506, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.641, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.79, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703509.916, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.074, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.311, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.465, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.599, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.74, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703510.861, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.005, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.126, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.271, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.395, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.535, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.657, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703511.802, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703513.205, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703513.343, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703513.455, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703513.671, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703513.882, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.034, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.156, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.304, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.418, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.575, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.691, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.836, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703514.966, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703515.129, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703515.258, \"ph\": \"X\", \"dur\": 0.4170767912366305, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703515.781, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703515.947, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.105, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.232, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.397, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.551, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.702, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.826, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703516.98, \"ph\": \"X\", \"dur\": 0.11773938125818754, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.162, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.317, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.441, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.603, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.762, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703517.907, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.054, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.207, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.341, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.496, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.633, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.781, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703518.915, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.077, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.215, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.377, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.53, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.675, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.821, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703519.972, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703520.122, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703476.678, \"ph\": \"X\", \"dur\": 44.21787275417393, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703117.102, \"ph\": \"X\", \"dur\": 406.49321821115933, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703524.045, \"ph\": \"X\", \"dur\": 0.1464258830477883, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703524.262, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703524.534, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703524.688, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703524.874, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.036, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.203, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.359, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.59, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.748, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703525.958, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.11, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.267, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.415, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.575, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.729, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703526.877, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.023, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.228, \"ph\": \"X\", \"dur\": 0.10102637586772448, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.387, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.535, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.662, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.825, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703527.97, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.134, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.268, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.413, \"ph\": \"X\", \"dur\": 0.11649214204994404, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.594, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.752, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703528.88, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.043, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.168, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.331, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.514, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.712, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.836, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703529.995, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.121, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.285, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.414, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.576, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.705, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.85, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703530.975, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703531.116, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703531.237, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703532.944, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703533.143, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703533.365, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703533.53, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703533.754, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703533.878, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.026, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.147, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.322, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.453, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.61, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.734, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703534.896, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.047, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.205, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.33, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.486, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.611, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.756, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703535.877, \"ph\": \"X\", \"dur\": 0.11773938125818754, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.103, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.226, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.383, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.511, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.67, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.797, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703536.948, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.071, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.221, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.347, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.504, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.631, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.778, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703537.895, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.044, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.163, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.394, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.537, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.692, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.813, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703538.971, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703539.096, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703539.256, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703539.383, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703539.532, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703539.669, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.014, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.2, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.357, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.501, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.65, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.777, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703541.921, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.048, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.193, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.362, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.508, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.631, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.777, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703542.89, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.108, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.233, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.38, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.497, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.645, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.766, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703543.916, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.033, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.194, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.341, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.498, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.625, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.782, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703544.913, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.068, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.195, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.335, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.461, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.616, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.741, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703545.896, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.018, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.164, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.286, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.561, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.703, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.867, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703546.992, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703547.149, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703547.278, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703547.424, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703547.545, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703547.692, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703549.197, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703549.428, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703549.552, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703549.732, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703549.886, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.063, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.228, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.375, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.499, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.644, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.792, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703550.958, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703551.111, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703551.261, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703551.383, \"ph\": \"X\", \"dur\": 0.2506950808569459, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703551.748, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703551.915, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.067, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.22, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.393, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.528, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.682, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.839, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703552.99, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.113, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.259, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.381, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.552, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.68, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.846, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703553.974, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.135, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.283, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.469, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.617, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.803, \"ph\": \"X\", \"dur\": 0.11474600715840312, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703554.981, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.124, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.242, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.4, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.547, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.695, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.819, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703555.962, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703556.079, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703556.233, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703557.777, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.023, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.173, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.337, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.458, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.606, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.729, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703558.89, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.017, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.162, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.28, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.445, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.566, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.727, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703559.848, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.019, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.163, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.304, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.429, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.585, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.709, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.856, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703560.976, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.135, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.255, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.409, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.529, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.686, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.808, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703561.954, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.071, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.224, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.36, \"ph\": \"X\", \"dur\": 0.15864882728857474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.627, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.75, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703562.924, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.061, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.218, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.344, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.496, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.611, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.768, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703563.896, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703564.056, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703564.19, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703564.349, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703564.469, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.104, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.261, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.441, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.568, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.733, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703566.862, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.013, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.133, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.296, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.418, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.562, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.712, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.856, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703567.972, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.128, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.248, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.407, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.526, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.676, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.806, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703568.951, \"ph\": \"X\", \"dur\": 0.15116539203911367, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703569.168, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703569.313, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703569.438, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703569.594, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703569.741, \"ph\": \"X\", \"dur\": 0.2965934837203072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.169, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.315, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.472, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.604, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.748, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703570.871, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.017, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.136, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.282, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.405, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.551, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.666, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.82, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703571.941, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.102, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.243, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.393, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.51, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.667, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703572.787, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.067, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.275, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.433, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.559, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.728, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703575.848, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.038, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.163, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.322, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.44, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.589, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.746, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703576.894, \"ph\": \"X\", \"dur\": 0.1314590125488662, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.094, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.248, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.377, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.534, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.672, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.813, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703577.941, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.28, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.403, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.565, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.703, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.847, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703578.969, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.111, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.241, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.389, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.504, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.66, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.788, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703579.937, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.05, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.205, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.342, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.498, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.635, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.782, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703580.902, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.061, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.181, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.329, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.448, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.609, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.727, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703581.883, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.193, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.344, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.459, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.645, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.764, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703583.912, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.029, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.183, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.303, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.459, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.61, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.752, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703584.872, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.016, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.135, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.294, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.413, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.562, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.741, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703585.894, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703586.038, \"ph\": \"X\", \"dur\": 2.1846641971593357, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703588.431, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703588.558, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703588.716, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703588.834, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703588.981, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.131, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.296, \"ph\": \"X\", \"dur\": 0.05712355573755286, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.419, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.577, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.701, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703589.877, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.0, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.158, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.281, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.425, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.554, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.715, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703590.859, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.006, \"ph\": \"X\", \"dur\": 0.12197999456621549, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.192, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.373, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.511, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.658, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.787, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703591.936, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703592.063, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703593.459, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703593.653, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703593.834, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703593.967, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.123, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.278, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.435, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.564, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.761, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703594.882, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.047, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.205, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.367, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.488, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.629, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.777, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703595.931, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.055, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.21, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.343, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.497, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.614, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.762, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703596.879, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.041, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.157, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.304, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.416, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.568, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.683, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703597.92, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.039, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.192, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.393, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.551, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.666, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.825, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703598.944, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.092, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.214, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.375, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.493, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.639, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.751, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703599.892, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703600.002, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703601.621, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703601.757, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703601.927, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.044, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.235, \"ph\": \"X\", \"dur\": 0.1314590125488662, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.426, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.611, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.73, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703602.893, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.024, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.187, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.341, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.487, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.611, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.768, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703603.885, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.06, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.197, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.339, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.451, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.6, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.727, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703604.876, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.002, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.15, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.277, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.438, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.613, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.762, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703605.926, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.146, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.288, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.467, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.578, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.726, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703606.843, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.021, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.134, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.284, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.442, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.602, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.724, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703607.902, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703608.016, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703608.175, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703608.315, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703608.491, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703609.87, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.107, \"ph\": \"X\", \"dur\": 0.11823827694148495, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.289, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.449, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.584, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.751, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703610.88, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.03, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.197, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.357, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.509, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.657, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.768, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703611.926, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.057, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.202, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.363, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.516, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.715, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.872, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703612.988, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.146, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.283, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.443, \"ph\": \"X\", \"dur\": 0.09952968881783227, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.617, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.796, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703613.933, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.09, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.252, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.402, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.569, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.725, \"ph\": \"X\", \"dur\": 0.13021177334062267, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703614.92, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703523.907, \"ph\": \"X\", \"dur\": 95.08876889296042, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702651.251, \"ph\": \"X\", \"dur\": 968.1310204314124, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703620.892, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703621.182, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703621.608, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703621.744, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.088, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.2, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.468, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.557, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.793, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.878, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703623.135, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703624.549, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703624.823, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703624.912, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.213, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.15, \"ph\": \"X\", \"dur\": 0.18084968519530925, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.539, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.629, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.894, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.833, \"ph\": \"X\", \"dur\": 0.17186956289595595, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703626.242, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703626.156, \"ph\": \"X\", \"dur\": 0.19631545137752882, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703626.563, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703626.729, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703626.452, \"ph\": \"X\", \"dur\": 0.4809354386986983, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703625.459, \"ph\": \"X\", \"dur\": 1.5792542854779352, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703627.248, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703627.397, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703627.579, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703627.739, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703627.133, \"ph\": \"X\", \"dur\": 0.8299129691652329, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703624.712, \"ph\": \"X\", \"dur\": 3.3186540852943374, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.229, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.315, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.584, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.674, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.936, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.86, \"ph\": \"X\", \"dur\": 0.18908146396971645, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703629.252, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703629.162, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703629.567, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703629.755, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703629.483, \"ph\": \"X\", \"dur\": 0.44177212755985196, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.49, \"ph\": \"X\", \"dur\": 1.4994309761503504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.22, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.311, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.533, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.473, \"ph\": \"X\", \"dur\": 0.1636377841215488, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.829, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.772, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.154, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.327, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.025, \"ph\": \"X\", \"dur\": 0.4729531077659398, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703630.129, \"ph\": \"X\", \"dur\": 1.431581163221903, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.76, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.876, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703632.043, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703632.191, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703633.705, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703633.848, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703631.669, \"ph\": \"X\", \"dur\": 2.4505755963568525, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703628.158, \"ph\": \"X\", \"dur\": 6.017430284091649, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703634.412, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703634.548, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703634.726, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703634.862, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.062, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.206, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.355, \"ph\": \"X\", \"dur\": 0.11699103773324145, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.533, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.701, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703635.847, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703636.065, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703636.22, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703634.307, \"ph\": \"X\", \"dur\": 2.1425075119207055, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703623.073, \"ph\": \"X\", \"dur\": 13.490139276361829, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703636.83, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703636.916, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.206, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.296, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.574, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.664, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.929, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.831, \"ph\": \"X\", \"dur\": 0.19806158626906972, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703638.258, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703638.184, \"ph\": \"X\", \"dur\": 0.1818474765619041, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703638.574, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703638.715, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703638.465, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.512, \"ph\": \"X\", \"dur\": 1.4495414078206097, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.191, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.284, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.542, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.462, \"ph\": \"X\", \"dur\": 0.18883201612806774, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.821, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.754, \"ph\": \"X\", \"dur\": 0.18035078951201186, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.121, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.242, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.031, \"ph\": \"X\", \"dur\": 0.4240613308027941, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703639.126, \"ph\": \"X\", \"dur\": 1.4058880355320869, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.749, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.891, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703641.103, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703641.249, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703642.9, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.04, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703640.62, \"ph\": \"X\", \"dur\": 2.6483877347842735, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703637.124, \"ph\": \"X\", \"dur\": 6.20750953942796, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.58, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.671, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.909, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.003, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.276, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.198, \"ph\": \"X\", \"dur\": 0.18608808986993203, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.577, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.516, \"ph\": \"X\", \"dur\": 0.17785631109552483, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.895, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.016, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703644.798, \"ph\": \"X\", \"dur\": 0.39612317253813945, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.851, \"ph\": \"X\", \"dur\": 1.4058880355320869, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.441, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.525, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.775, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.717, \"ph\": \"X\", \"dur\": 0.16388723196319752, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.116, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.037, \"ph\": \"X\", \"dur\": 0.18683643339487813, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.42, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.543, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.323, \"ph\": \"X\", \"dur\": 0.4008626815294648, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703645.382, \"ph\": \"X\", \"dur\": 1.402395765749005, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.98, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703647.099, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703647.256, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703647.403, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703647.574, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703647.751, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703646.893, \"ph\": \"X\", \"dur\": 1.0623983575818237, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703643.501, \"ph\": \"X\", \"dur\": 4.517500412258001, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.187, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.359, \"ph\": \"X\", \"dur\": 0.1025230629176167, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.567, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.697, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.843, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.98, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.139, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.267, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.408, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.56, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.76, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703649.902, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703648.107, \"ph\": \"X\", \"dur\": 2.013542977788326, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703636.728, \"ph\": \"X\", \"dur\": 14.905506329876566, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703651.886, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.058, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.255, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.396, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.563, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.725, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703652.894, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.027, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.177, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.308, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.5, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.623, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.776, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703653.887, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.033, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.179, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.327, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.496, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.697, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.823, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703654.986, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703655.122, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703655.27, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703655.419, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703651.746, \"ph\": \"X\", \"dur\": 3.961730621064692, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.732, \"ph\": \"X\", \"dur\": 33.084017790025754, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.06, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.17, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.514, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.593, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.83, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.912, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.21, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.288, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.509, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.444, \"ph\": \"X\", \"dur\": 0.16463557548814362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.808, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.747, \"ph\": \"X\", \"dur\": 0.16014551433846697, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.089, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.23, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.007, \"ph\": \"X\", \"dur\": 0.388140841605381, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703657.111, \"ph\": \"X\", \"dur\": 1.3719631290678633, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.74, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.82, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703659.095, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703659.007, \"ph\": \"X\", \"dur\": 1.3545017801524541, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703660.538, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703660.471, \"ph\": \"X\", \"dur\": 0.20903729130161264, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703660.857, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703660.99, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703660.762, \"ph\": \"X\", \"dur\": 0.4193218218114688, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703658.633, \"ph\": \"X\", \"dur\": 2.6162089632115912, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703661.502, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703661.641, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703661.817, \"ph\": \"X\", \"dur\": 0.1454280916811935, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703662.019, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703662.23, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703662.428, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703661.371, \"ph\": \"X\", \"dur\": 1.26495000500057, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.767, \"ph\": \"X\", \"dur\": 5.949580471163202, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703662.936, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.013, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.203, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.272, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.518, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.464, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.763, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.711, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.016, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.119, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.931, \"ph\": \"X\", \"dur\": 0.3691828056400796, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703663.153, \"ph\": \"X\", \"dur\": 1.196351848547177, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.524, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.594, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.77, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.719, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.015, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.965, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.25, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.353, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.185, \"ph\": \"X\", \"dur\": 0.3287722552929898, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703664.473, \"ph\": \"X\", \"dur\": 1.0885903809549375, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.74, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.859, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.003, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.121, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703665.657, \"ph\": \"X\", \"dur\": 0.6500610753365186, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703662.88, \"ph\": \"X\", \"dur\": 3.4743095384831273, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.513, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.652, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.799, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.908, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.197, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.332, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.498, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.626, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.745, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703668.851, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.001, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.117, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.252, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.365, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703666.449, \"ph\": \"X\", \"dur\": 3.069954587170581, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703656.419, \"ph\": \"X\", \"dur\": 13.196040271058008, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.874, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.939, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.166, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.252, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.472, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.547, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.745, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.69, \"ph\": \"X\", \"dur\": 0.1536598704556007, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.034, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.982, \"ph\": \"X\", \"dur\": 0.1444303003145987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.282, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.408, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.213, \"ph\": \"X\", \"dur\": 0.33550734701750473, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.399, \"ph\": \"X\", \"dur\": 1.2075770014213685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.791, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.881, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.084, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.033, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.335, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.283, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.586, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.689, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.51, \"ph\": \"X\", \"dur\": 0.3247810898266106, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703671.737, \"ph\": \"X\", \"dur\": 1.155192954675141, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.05, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.149, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.289, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.407, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703672.975, \"ph\": \"X\", \"dur\": 0.6415798487204627, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703670.117, \"ph\": \"X\", \"dur\": 3.5543822956523607, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.827, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.898, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703674.088, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703674.157, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.443, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.389, \"ph\": \"X\", \"dur\": 0.15615434887208773, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.728, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.677, \"ph\": \"X\", \"dur\": 0.14418085247294998, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.998, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.101, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703675.905, \"ph\": \"X\", \"dur\": 0.37516955383964845, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703674.038, \"ph\": \"X\", \"dur\": 2.2956684866930086, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.53, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.598, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.82, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.742, \"ph\": \"X\", \"dur\": 0.17162011505430727, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.085, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.022, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.321, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.418, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.241, \"ph\": \"X\", \"dur\": 0.3282733596096924, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703676.458, \"ph\": \"X\", \"dur\": 1.1646719726577917, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.811, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.91, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.067, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.188, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.349, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.488, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703677.717, \"ph\": \"X\", \"dur\": 0.964864251497181, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703673.777, \"ph\": \"X\", \"dur\": 4.954283582984879, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.914, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.059, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.208, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.314, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.437, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.555, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.692, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.819, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703679.941, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.035, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.199, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.314, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703678.827, \"ph\": \"X\", \"dur\": 1.650596368189464, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703669.77, \"ph\": \"X\", \"dur\": 10.759184305991834, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.69, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.814, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.971, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703681.08, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703681.237, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703681.343, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703681.478, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703682.674, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703682.796, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703682.912, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.062, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.173, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.311, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.415, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.538, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.646, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.778, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703683.874, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.045, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.154, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.291, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.408, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.528, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.663, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.784, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703684.909, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703680.62, \"ph\": \"X\", \"dur\": 4.499540167659295, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703655.999, \"ph\": \"X\", \"dur\": 29.20535330023008, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.4, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.521, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.667, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.791, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.924, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.035, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.165, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.273, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.391, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.498, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.684, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.794, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703686.927, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.035, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.156, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.287, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.407, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.499, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.654, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.76, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.889, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703687.983, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703688.112, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703688.21, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703688.326, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703688.417, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703689.623, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703689.734, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703689.852, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703689.957, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.093, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.211, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.343, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.501, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.666, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.761, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703690.887, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.026, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.158, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.295, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.44, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.552, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.706, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.798, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703691.93, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.027, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.162, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.278, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.41, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.528, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.709, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.82, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703692.939, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.055, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.195, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.322, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.453, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.574, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.719, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703693.84, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703685.318, \"ph\": \"X\", \"dur\": 8.791789178908518, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.407, \"ph\": \"X\", \"dur\": 71.80231397937075, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.454, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.597, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.791, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.861, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.058, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.13, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.375, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.442, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.64, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.587, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703697.758, \"ph\": \"X\", \"dur\": 0.029434845314546886, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703697.859, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.061, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.007, \"ph\": \"X\", \"dur\": 0.14991815283087015, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.33, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.276, \"ph\": \"X\", \"dur\": 0.17112121937100985, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.638, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.782, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703698.531, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703697.684, \"ph\": \"X\", \"dur\": 1.2968793287316038, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.142, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.244, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.369, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.498, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.077, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.324, \"ph\": \"X\", \"dur\": 4.443414403288336, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.947, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.02, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.21, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.279, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.475, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.422, \"ph\": \"X\", \"dur\": 0.13969079132327336, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.737, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.681, \"ph\": \"X\", \"dur\": 0.15665324455538512, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.033, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.138, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.919, \"ph\": \"X\", \"dur\": 0.37916071930602774, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703700.157, \"ph\": \"X\", \"dur\": 1.2043341794799354, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.531, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.6, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.771, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.717, \"ph\": \"X\", \"dur\": 0.13994023916492207, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.041, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.987, \"ph\": \"X\", \"dur\": 0.13994023916492207, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.268, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.392, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.204, \"ph\": \"X\", \"dur\": 0.3504742175164269, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703701.478, \"ph\": \"X\", \"dur\": 1.1444666974842466, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.796, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.921, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.087, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.233, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.402, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.531, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703702.722, \"ph\": \"X\", \"dur\": 0.9753410608464265, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703699.89, \"ph\": \"X\", \"dur\": 3.883653446628648, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.936, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703705.355, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703705.542, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703705.655, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703705.79, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703705.915, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.049, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.174, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.296, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.409, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.565, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703706.669, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703703.867, \"ph\": \"X\", \"dur\": 2.969676554827802, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703695.007, \"ph\": \"X\", \"dur\": 11.927847444116003, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.124, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.217, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.437, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.509, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.742, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.81, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.021, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.966, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.276, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.222, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.556, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.662, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703708.449, \"ph\": \"X\", \"dur\": 0.357957652765888, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.686, \"ph\": \"X\", \"dur\": 1.1786410517901191, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.077, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.151, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.342, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.276, \"ph\": \"X\", \"dur\": 0.15515655750549293, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.602, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.548, \"ph\": \"X\", \"dur\": 0.14717422657273443, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.855, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.956, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.778, \"ph\": \"X\", \"dur\": 0.3442380214752093, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703709.015, \"ph\": \"X\", \"dur\": 1.1883695176144182, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703710.387, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703710.486, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703710.632, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703710.752, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703710.295, \"ph\": \"X\", \"dur\": 0.6408315051955166, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.377, \"ph\": \"X\", \"dur\": 3.626971617572133, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703711.195, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703711.283, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703711.497, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703712.605, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703712.855, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703712.778, \"ph\": \"X\", \"dur\": 0.1968143470608262, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.188, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.081, \"ph\": \"X\", \"dur\": 0.1958165556942314, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.458, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.557, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.359, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703711.446, \"ph\": \"X\", \"dur\": 2.3423152330813157, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.964, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.053, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.225, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.17, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.442, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.39, \"ph\": \"X\", \"dur\": 0.11898662046643106, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.664, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.762, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703714.588, \"ph\": \"X\", \"dur\": 0.3158009675272573, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703713.911, \"ph\": \"X\", \"dur\": 1.0476809349245502, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.121, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.243, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.382, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.502, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.634, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.754, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703715.037, \"ph\": \"X\", \"dur\": 0.8735663414537559, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703711.142, \"ph\": \"X\", \"dur\": 4.81758616576139, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.122, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.285, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.417, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.526, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.649, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.74, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.858, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.946, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.066, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.175, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.335, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.462, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.599, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703717.721, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703716.051, \"ph\": \"X\", \"dur\": 1.83593611453445, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703707.06, \"ph\": \"X\", \"dur\": 10.893387244798834, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703718.102, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703718.215, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703718.368, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703718.474, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703719.893, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.004, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.14, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.257, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.382, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.488, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.633, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.738, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.863, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703720.97, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.099, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.203, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.324, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.437, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.598, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.693, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.824, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703721.978, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.096, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.203, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.326, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.446, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.565, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703722.686, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703718.03, \"ph\": \"X\", \"dur\": 4.862985672941454, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.741, \"ph\": \"X\", \"dur\": 28.251215305923793, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.202, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.29, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.496, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.585, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.796, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.882, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.062, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.128, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.307, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.257, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.547, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.495, \"ph\": \"X\", \"dur\": 0.13594907369854284, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.778, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.923, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.713, \"ph\": \"X\", \"dur\": 0.3499753218331295, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703724.011, \"ph\": \"X\", \"dur\": 1.1152813000113486, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703725.296, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703725.39, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703725.625, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703725.554, \"ph\": \"X\", \"dur\": 0.15191373556405977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703726.924, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703726.871, \"ph\": \"X\", \"dur\": 0.11848772478313366, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.136, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.268, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.058, \"ph\": \"X\", \"dur\": 0.3514720088830217, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703725.242, \"ph\": \"X\", \"dur\": 2.2392932744804015, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.649, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.743, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.893, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.026, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.186, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.298, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703727.579, \"ph\": \"X\", \"dur\": 0.9049967695014924, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.746, \"ph\": \"X\", \"dur\": 4.799127025479386, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.775, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.868, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.056, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.146, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.337, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.288, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.574, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.523, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.809, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.918, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.708, \"ph\": \"X\", \"dur\": 0.37242562758151276, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703729.006, \"ph\": \"X\", \"dur\": 1.1464622802174362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.301, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.391, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.559, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.509, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.785, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.734, \"ph\": \"X\", \"dur\": 0.11748993341653885, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.001, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.126, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.918, \"ph\": \"X\", \"dur\": 0.332763420759369, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703730.251, \"ph\": \"X\", \"dur\": 1.051173204707632, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.464, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.585, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.709, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.818, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703731.39, \"ph\": \"X\", \"dur\": 0.581712366724774, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703728.691, \"ph\": \"X\", \"dur\": 3.329879238168529, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.175, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.298, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.43, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.537, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.679, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703733.863, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703733.982, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.078, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.198, \"ph\": \"X\", \"dur\": 0.09903079313453486, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.344, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.492, \"ph\": \"X\", \"dur\": 0.0808211006941796, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.624, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.75, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703734.854, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703732.096, \"ph\": \"X\", \"dur\": 2.909809072832114, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.444, \"ph\": \"X\", \"dur\": 11.641730769744942, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.273, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.355, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.575, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.662, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.851, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.937, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.115, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.063, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.354, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.302, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.593, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.721, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703736.5, \"ph\": \"X\", \"dur\": 0.3582071006075367, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.802, \"ph\": \"X\", \"dur\": 1.123263630944107, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.119, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.216, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.411, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.341, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.631, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.584, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.853, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.954, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.775, \"ph\": \"X\", \"dur\": 0.3182954459437443, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703737.058, \"ph\": \"X\", \"dur\": 1.0845992154885582, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.278, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.368, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.488, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.607, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.74, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.854, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703738.217, \"ph\": \"X\", \"dur\": 0.7927452407595763, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.526, \"ph\": \"X\", \"dur\": 3.5341770204788157, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703739.26, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703739.351, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703739.537, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703740.73, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703740.94, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703740.857, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.193, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.144, \"ph\": \"X\", \"dur\": 0.12048330751632327, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.488, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.589, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.353, \"ph\": \"X\", \"dur\": 0.38764194592208356, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703739.488, \"ph\": \"X\", \"dur\": 2.3071430874088485, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.964, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.055, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.246, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.175, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.466, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.418, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.731, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.839, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703742.669, \"ph\": \"X\", \"dur\": 0.3322645250760716, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703741.902, \"ph\": \"X\", \"dur\": 1.181883873731552, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.244, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.348, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.477, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.581, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.741, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.901, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703743.177, \"ph\": \"X\", \"dur\": 0.8882837641110293, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703739.213, \"ph\": \"X\", \"dur\": 4.90589070170503, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.329, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.442, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.585, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.695, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.829, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.959, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.086, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.224, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.343, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.436, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.584, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.7, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703744.211, \"ph\": \"X\", \"dur\": 1.6398701109985698, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703735.221, \"ph\": \"X\", \"dur\": 10.680608235872493, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.056, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.171, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.327, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.437, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.551, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703746.654, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703747.864, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703747.978, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.118, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.229, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.385, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.478, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.615, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.72, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.852, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703748.957, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.117, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.236, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.388, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.506, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.634, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.773, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703749.901, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.038, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.156, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.299, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703745.979, \"ph\": \"X\", \"dur\": 4.548681392464089, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703723.15, \"ph\": \"X\", \"dur\": 27.466951291780276, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.812, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.951, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.106, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.216, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.382, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.493, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.625, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.735, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.86, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703751.961, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.155, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.251, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.38, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.487, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.605, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.722, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.842, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703752.936, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.098, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.223, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.375, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.488, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.612, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703753.707, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703754.885, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703754.983, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.104, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.213, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.347, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.443, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.57, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.709, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.857, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703755.996, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.173, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.331, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.451, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.56, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.692, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.822, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703756.939, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.053, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.179, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.287, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.412, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.53, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.662, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.774, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.904, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703757.998, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.191, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.304, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.426, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.572, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.704, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.821, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703758.941, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703759.06, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703750.721, \"ph\": \"X\", \"dur\": 8.83170083357231, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703694.378, \"ph\": \"X\", \"dur\": 65.28174739867367, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703759.834, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703759.951, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.107, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.224, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.359, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.471, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.607, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.72, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.843, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703760.938, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703761.106, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.279, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.398, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.518, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.654, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.773, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703762.89, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.004, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.17, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.265, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.389, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.485, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.607, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.702, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.836, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703763.958, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.09, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.186, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.317, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.413, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.544, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.641, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.772, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703764.87, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.031, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.126, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.246, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.341, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.465, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.556, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.685, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.79, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703765.915, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.005, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.153, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.245, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.403, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.51, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.651, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.755, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703766.929, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.028, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.148, \"ph\": \"X\", \"dur\": 0.10651422838399595, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.307, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.452, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.57, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.703, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703767.824, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.032, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.161, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.327, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.449, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.606, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.722, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.872, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703769.986, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.188, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.314, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.456, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.576, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.726, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703770.876, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.03, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.15, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.283, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.391, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.534, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.659, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.795, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703771.912, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.052, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.193, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.392, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.521, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.67, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.795, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703772.931, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.049, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.178, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.329, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.464, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.581, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.729, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.848, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703773.983, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.102, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.258, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.37, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.52, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.671, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.815, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703774.943, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703775.094, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703775.225, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703776.395, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703776.535, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703776.779, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703776.902, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.056, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.194, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.35, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.513, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.671, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.793, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703777.936, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703778.06, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703778.208, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703778.342, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703759.767, \"ph\": \"X\", \"dur\": 18.894925661364265, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703622.022, \"ph\": \"X\", \"dur\": 156.75826209671922, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.11, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.201, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.429, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.526, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.756, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.853, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.152, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.232, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.477, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.545, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.769, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.691, \"ph\": \"X\", \"dur\": 0.17860465462047093, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.064, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.143, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.355, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.282, \"ph\": \"X\", \"dur\": 0.16937508447946895, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.621, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.559, \"ph\": \"X\", \"dur\": 0.14692477873108573, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.926, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.056, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.818, \"ph\": \"X\", \"dur\": 0.4220657480696045, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703781.004, \"ph\": \"X\", \"dur\": 1.313592334122067, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.539, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.655, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.824, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.96, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703782.446, \"ph\": \"X\", \"dur\": 0.7114252443820993, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.387, \"ph\": \"X\", \"dur\": 2.869149074643375, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703783.461, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703783.56, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703783.769, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703784.897, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.113, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.027, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.431, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.342, \"ph\": \"X\", \"dur\": 0.1636377841215488, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.7, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.811, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703785.593, \"ph\": \"X\", \"dur\": 0.3761673452062433, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703783.703, \"ph\": \"X\", \"dur\": 2.3333351107819627, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.23, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.326, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.545, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.479, \"ph\": \"X\", \"dur\": 0.1327062517571097, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.825, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.762, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703787.082, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703787.22, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.993, \"ph\": \"X\", \"dur\": 0.37367286678975625, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703786.167, \"ph\": \"X\", \"dur\": 1.3110978557055801, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703787.7, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703787.839, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.0, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.162, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703787.617, \"ph\": \"X\", \"dur\": 0.7166636490567221, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703783.4, \"ph\": \"X\", \"dur\": 4.999433642323295, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.587, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.735, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.913, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.042, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.184, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.316, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.471, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.588, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.728, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.838, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703789.981, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.097, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703788.484, \"ph\": \"X\", \"dur\": 1.7900377116710886, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703780.073, \"ph\": \"X\", \"dur\": 10.288226780959082, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.573, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.673, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.866, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.953, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703791.144, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703791.231, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703791.412, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703791.364, \"ph\": \"X\", \"dur\": 1.3816915948921629, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703792.916, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703792.863, \"ph\": \"X\", \"dur\": 0.15316097477230328, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.213, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.317, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.098, \"ph\": \"X\", \"dur\": 0.4218163002279558, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703791.094, \"ph\": \"X\", \"dur\": 2.482504920087887, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.771, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.867, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.076, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.022, \"ph\": \"X\", \"dur\": 0.12647005571589212, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.352, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.299, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.591, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.693, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703794.509, \"ph\": \"X\", \"dur\": 0.3427413344253171, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703793.718, \"ph\": \"X\", \"dur\": 1.207826449263017, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.108, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.231, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.379, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.498, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.632, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.756, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703795.019, \"ph\": \"X\", \"dur\": 0.9207119835253607, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.815, \"ph\": \"X\", \"dur\": 5.190760136867849, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.171, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.262, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.474, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.562, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.73, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.677, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.964, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.915, \"ph\": \"X\", \"dur\": 0.12946342981567657, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.203, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.328, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.119, \"ph\": \"X\", \"dur\": 0.3589554441324828, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.425, \"ph\": \"X\", \"dur\": 1.1063011777119953, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.714, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.795, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.962, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.912, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703798.188, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703798.14, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703798.393, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703798.492, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703798.331, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703797.647, \"ph\": \"X\", \"dur\": 1.049427069816091, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703799.955, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.056, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.209, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.334, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.526, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.646, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703799.844, \"ph\": \"X\", \"dur\": 0.9643653558138836, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703796.119, \"ph\": \"X\", \"dur\": 4.745745187366564, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.026, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.153, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.312, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.419, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.552, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.658, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.789, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703801.904, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.026, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.136, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.292, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.419, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.541, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.661, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703800.964, \"ph\": \"X\", \"dur\": 1.8449162368338032, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703790.522, \"ph\": \"X\", \"dur\": 12.363383375634637, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.053, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.18, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.343, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.449, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.589, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.697, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.821, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703803.922, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.05, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.162, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.356, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.48, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.641, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.753, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.875, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703804.968, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.088, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.192, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.364, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.48, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.614, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703805.723, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703807.653, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703807.795, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703807.951, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.092, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.263, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.377, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703802.958, \"ph\": \"X\", \"dur\": 5.5744109173235525, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.69, \"ph\": \"X\", \"dur\": 28.919236625859018, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.796, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.881, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.132, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.221, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.413, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.501, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.742, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.83, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.02, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.971, \"ph\": \"X\", \"dur\": 0.1342029388070019, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.262, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.211, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.509, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.649, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.433, \"ph\": \"X\", \"dur\": 0.38215409340581213, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.643, \"ph\": \"X\", \"dur\": 1.226285589545021, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.063, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.162, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.392, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.339, \"ph\": \"X\", \"dur\": 0.14343250894800388, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.691, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.601, \"ph\": \"X\", \"dur\": 0.16114330570506177, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.931, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.077, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703811.847, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703810.99, \"ph\": \"X\", \"dur\": 1.301119942039632, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.479, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.6, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.752, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.873, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.011, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.124, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703812.368, \"ph\": \"X\", \"dur\": 0.9399194673323108, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.364, \"ph\": \"X\", \"dur\": 3.999397245153646, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.591, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.685, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.877, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.965, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703814.199, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703814.134, \"ph\": \"X\", \"dur\": 1.3784487729507295, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703815.672, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703815.605, \"ph\": \"X\", \"dur\": 0.153410422613952, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703815.939, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.042, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703815.825, \"ph\": \"X\", \"dur\": 0.36244771391556463, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.829, \"ph\": \"X\", \"dur\": 2.4306197690249562, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.461, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.556, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.755, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.703, \"ph\": \"X\", \"dur\": 0.14143692621481427, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.998, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.947, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.195, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.317, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.13, \"ph\": \"X\", \"dur\": 0.32278550709342096, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703816.393, \"ph\": \"X\", \"dur\": 1.109045103970131, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.655, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.773, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.903, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.014, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.145, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.25, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703817.589, \"ph\": \"X\", \"dur\": 0.8161933378745544, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703813.503, \"ph\": \"X\", \"dur\": 4.968252662117206, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.627, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.739, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.866, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.955, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.106, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.199, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.33, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.457, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.588, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.681, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703819.879, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.0, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703818.565, \"ph\": \"X\", \"dur\": 1.6076913394258872, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703809.063, \"ph\": \"X\", \"dur\": 11.181000606219788, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.42, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.512, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.735, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.825, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703821.012, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703821.082, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703821.252, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703821.203, \"ph\": \"X\", \"dur\": 1.1691620338074684, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703822.533, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703822.481, \"ph\": \"X\", \"dur\": 0.1444303003145987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703822.812, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703822.923, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703822.75, \"ph\": \"X\", \"dur\": 0.3262777768765028, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.963, \"ph\": \"X\", \"dur\": 2.1629622349358986, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.35, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.418, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.642, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.568, \"ph\": \"X\", \"dur\": 0.1636377841215488, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.92, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.835, \"ph\": \"X\", \"dur\": 0.16987398016276634, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.196, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.319, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.072, \"ph\": \"X\", \"dur\": 0.41233728224530514, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703823.267, \"ph\": \"X\", \"dur\": 1.2913914762153325, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.745, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.843, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.974, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.081, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.243, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.367, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703824.648, \"ph\": \"X\", \"dur\": 0.8720696544038636, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.686, \"ph\": \"X\", \"dur\": 4.906639045229976, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.767, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.868, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.099, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.168, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.345, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.294, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.581, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.528, \"ph\": \"X\", \"dur\": 0.14168637405646298, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.8, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.939, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.731, \"ph\": \"X\", \"dur\": 0.39662206822143686, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703826.048, \"ph\": \"X\", \"dur\": 1.131744857560163, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.42, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.516, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.718, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.666, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.96, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.904, \"ph\": \"X\", \"dur\": 0.12197999456621549, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703828.205, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703828.317, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703828.107, \"ph\": \"X\", \"dur\": 0.3799090628309738, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703827.342, \"ph\": \"X\", \"dur\": 1.2145615409875323, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703829.854, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.005, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.177, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.304, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.442, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.57, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703829.761, \"ph\": \"X\", \"dur\": 0.9758399565297239, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703825.714, \"ph\": \"X\", \"dur\": 5.080254743017473, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.972, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.087, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.228, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.324, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.469, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.587, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.709, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.819, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703831.95, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.041, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.201, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.339, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.458, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.583, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703830.879, \"ph\": \"X\", \"dur\": 1.8611303465409688, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703820.367, \"ph\": \"X\", \"dur\": 12.43422656266287, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.99, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.102, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.264, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.376, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.498, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.605, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.737, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.847, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703833.969, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.076, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.216, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.324, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.457, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.564, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.702, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.827, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703834.95, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703835.056, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703835.231, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703835.375, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703835.495, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703835.624, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703836.809, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703836.956, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.112, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.244, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.369, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.523, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.662, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703837.772, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703832.915, \"ph\": \"X\", \"dur\": 5.081003086542419, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703808.727, \"ph\": \"X\", \"dur\": 29.358015379319088, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.28, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.397, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.543, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.659, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.814, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.93, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.055, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.168, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.291, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.399, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.563, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.669, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.79, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703839.883, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.016, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.121, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.246, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.339, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.505, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.601, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.736, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.83, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703840.951, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.052, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.189, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.283, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.415, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.508, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.641, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.747, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703841.882, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.035, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.159, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.264, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.449, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.552, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703842.672, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703843.866, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.068, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.202, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.338, \"ph\": \"X\", \"dur\": 0.08431337047726141, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.47, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.611, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.705, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.841, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703844.951, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.085, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.206, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.361, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.481, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.642, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.762, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703845.883, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703846.025, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703846.154, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703846.266, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703846.385, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703846.502, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703838.199, \"ph\": \"X\", \"dur\": 8.506420848062403, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.37, \"ph\": \"X\", \"dur\": 67.45593478648377, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.063, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.157, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.411, \"ph\": \"X\", \"dur\": 0.029434845314546886, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.477, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.702, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.784, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.992, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.077, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.291, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.354, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.539, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.485, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.783, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.733, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.057, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.181, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.939, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703848.208, \"ph\": \"X\", \"dur\": 1.1883695176144182, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.61, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.677, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.893, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.835, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703850.221, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703850.12, \"ph\": \"X\", \"dur\": 0.18982980749466255, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703851.619, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703851.748, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703851.513, \"ph\": \"X\", \"dur\": 0.38365078045570433, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703849.524, \"ph\": \"X\", \"dur\": 2.443092161107392, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.151, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.279, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.425, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.546, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.702, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.812, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703852.056, \"ph\": \"X\", \"dur\": 0.9396700194906621, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.911, \"ph\": \"X\", \"dur\": 5.138376090121621, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.227, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.296, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.516, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.582, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.791, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.715, \"ph\": \"X\", \"dur\": 0.15914772297187216, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.058, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.984, \"ph\": \"X\", \"dur\": 0.15665324455538512, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.285, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.407, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.225, \"ph\": \"X\", \"dur\": 0.3167987588938521, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.463, \"ph\": \"X\", \"dur\": 1.1319943054018116, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.772, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.842, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.014, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.963, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.274, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.222, \"ph\": \"X\", \"dur\": 0.13894244779832726, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.546, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.662, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.443, \"ph\": \"X\", \"dur\": 0.3509731131997243, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703854.724, \"ph\": \"X\", \"dur\": 1.1195219133193766, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.01, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.13, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.264, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.404, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.542, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.651, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703855.937, \"ph\": \"X\", \"dur\": 0.8857892856945423, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703853.175, \"ph\": \"X\", \"dur\": 3.6990620438086084, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703857.027, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703857.165, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703857.319, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703857.426, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703858.667, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703858.817, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703858.964, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.076, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.219, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.336, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.481, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.615, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.746, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703859.874, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703856.951, \"ph\": \"X\", \"dur\": 3.1001377760100737, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.628, \"ph\": \"X\", \"dur\": 12.483367787467666, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.309, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.401, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.612, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.688, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.908, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.981, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.194, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.144, \"ph\": \"X\", \"dur\": 0.14343250894800388, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.459, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.409, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.698, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.824, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703861.633, \"ph\": \"X\", \"dur\": 0.36144992254896985, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.832, \"ph\": \"X\", \"dur\": 1.215559332354127, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.224, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.297, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.498, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.422, \"ph\": \"X\", \"dur\": 0.167628949587928, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.806, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.713, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.066, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.183, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.973, \"ph\": \"X\", \"dur\": 0.3402468560088301, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703862.171, \"ph\": \"X\", \"dur\": 1.1938573701306898, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.524, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.634, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.755, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.879, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703863.442, \"ph\": \"X\", \"dur\": 0.6081538379395365, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.546, \"ph\": \"X\", \"dur\": 3.5546317434940096, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.284, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.369, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.554, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.623, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.787, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.739, \"ph\": \"X\", \"dur\": 1.1222658395775122, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.073, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703865.994, \"ph\": \"X\", \"dur\": 0.1828452679284989, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.356, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.478, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.245, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.505, \"ph\": \"X\", \"dur\": 2.2048694723328808, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.886, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.961, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.187, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.117, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.476, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.388, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.726, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.829, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703867.649, \"ph\": \"X\", \"dur\": 0.3170482067355008, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703866.836, \"ph\": \"X\", \"dur\": 1.1821333215732008, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.23, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.353, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.49, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.611, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.11, \"ph\": \"X\", \"dur\": 0.6560478235360875, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703864.236, \"ph\": \"X\", \"dur\": 4.581608507561717, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.975, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.093, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.241, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.338, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.476, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.576, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.696, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.843, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703869.975, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.071, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.223, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.34, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703868.897, \"ph\": \"X\", \"dur\": 1.5924750210853162, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703860.254, \"ph\": \"X\", \"dur\": 10.289224572325677, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.742, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.848, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.009, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.121, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.262, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.371, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.492, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.596, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703871.732, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703872.932, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.156, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.249, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.421, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.533, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.658, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.754, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.88, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703873.998, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.172, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.291, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.431, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.55, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.686, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.82, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703874.946, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703875.069, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703875.194, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703875.323, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703875.45, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703875.56, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703870.644, \"ph\": \"X\", \"dur\": 5.130393759188863, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.345, \"ph\": \"X\", \"dur\": 28.50540265656382, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.092, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.187, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.444, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.52, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.738, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.811, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.01, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.083, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.272, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.222, \"ph\": \"X\", \"dur\": 0.14193582189811166, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.519, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.469, \"ph\": \"X\", \"dur\": 0.1429336132647065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.777, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.9, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703877.7, \"ph\": \"X\", \"dur\": 0.3681850142734848, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.96, \"ph\": \"X\", \"dur\": 1.1586852244582229, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.312, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.386, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.595, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.543, \"ph\": \"X\", \"dur\": 0.16787839742957672, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.871, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.817, \"ph\": \"X\", \"dur\": 0.15191373556405977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703879.138, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703879.239, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703879.051, \"ph\": \"X\", \"dur\": 1.570024715336933, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703878.246, \"ph\": \"X\", \"dur\": 2.4433416089490403, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703880.901, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.029, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.181, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.311, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703880.788, \"ph\": \"X\", \"dur\": 0.7014473307161512, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.666, \"ph\": \"X\", \"dur\": 4.897908370772272, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.781, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.856, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.052, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.126, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.31, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.256, \"ph\": \"X\", \"dur\": 0.1449291959978961, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.575, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.522, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.838, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.951, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.739, \"ph\": \"X\", \"dur\": 0.38265298908910955, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703882.002, \"ph\": \"X\", \"dur\": 1.1901156525059593, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.358, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.434, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.671, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.592, \"ph\": \"X\", \"dur\": 0.1641366798048462, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.901, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.851, \"ph\": \"X\", \"dur\": 0.1314590125488662, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.146, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.265, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.063, \"ph\": \"X\", \"dur\": 0.35222035240796784, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703883.305, \"ph\": \"X\", \"dur\": 1.1609302550330611, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.643, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.743, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.885, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.003, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.151, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.259, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703884.543, \"ph\": \"X\", \"dur\": 0.8740652371370533, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703881.699, \"ph\": \"X\", \"dur\": 3.766163513212109, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.621, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.739, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.901, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.994, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703886.157, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703886.266, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703886.398, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703886.491, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703887.683, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703887.805, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703887.981, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.104, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703885.557, \"ph\": \"X\", \"dur\": 2.732701105261535, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.364, \"ph\": \"X\", \"dur\": 11.991706091578072, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.582, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.674, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.873, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.945, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.21, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.276, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.449, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.397, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.693, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.642, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.93, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.063, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.87, \"ph\": \"X\", \"dur\": 0.3529686959329139, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703889.134, \"ph\": \"X\", \"dur\": 1.148457862950626, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.471, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.54, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.757, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.692, \"ph\": \"X\", \"dur\": 0.14767312225603182, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.018, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.965, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.286, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.433, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.183, \"ph\": \"X\", \"dur\": 0.4098428038288181, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703890.404, \"ph\": \"X\", \"dur\": 1.256718226226163, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.817, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.92, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.072, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.206, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.368, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.48, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703891.751, \"ph\": \"X\", \"dur\": 0.8867870770611371, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.822, \"ph\": \"X\", \"dur\": 3.8834039987869993, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.891, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.98, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.168, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.236, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.407, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.355, \"ph\": \"X\", \"dur\": 0.1314590125488662, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.639, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.589, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.867, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.032, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.801, \"ph\": \"X\", \"dur\": 1.4108769923650608, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703893.119, \"ph\": \"X\", \"dur\": 2.1724412529185493, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.482, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.575, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.806, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.725, \"ph\": \"X\", \"dur\": 0.17186956289595595, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.046, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.993, \"ph\": \"X\", \"dur\": 0.14418085247294998, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.342, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.444, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.226, \"ph\": \"X\", \"dur\": 0.3709289405316205, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703895.431, \"ph\": \"X\", \"dur\": 1.2260361417033725, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.846, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.97, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.12, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.238, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.375, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.479, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703896.755, \"ph\": \"X\", \"dur\": 0.8857892856945423, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703892.842, \"ph\": \"X\", \"dur\": 4.880197574015215, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.873, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.004, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.141, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.233, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.355, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.461, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.593, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.688, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.81, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703898.94, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.089, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.204, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.333, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.447, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703897.801, \"ph\": \"X\", \"dur\": 1.803008999436821, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703888.529, \"ph\": \"X\", \"dur\": 11.158799748313054, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.866, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.976, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.127, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.269, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.39, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.505, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.638, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.749, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703900.882, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.03, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.192, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.317, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.475, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.583, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.708, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.813, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703902.932, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.037, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.201, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.329, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.461, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.573, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.706, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.825, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703903.952, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.065, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.193, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.295, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703899.795, \"ph\": \"X\", \"dur\": 4.703837949969582, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703876.024, \"ph\": \"X\", \"dur\": 28.55928339035994, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.755, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.877, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.031, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.143, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.261, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.372, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.533, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.64, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.768, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703905.882, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.05, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.156, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.279, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.386, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.506, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.598, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.733, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703906.844, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.023, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.138, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.258, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.351, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.47, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.566, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.695, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703907.791, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703908.979, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.099, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.234, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.343, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.465, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.567, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.689, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.822, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703909.994, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.103, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.229, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.37, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.491, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.597, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.727, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.843, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703910.97, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.063, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.193, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.316, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.446, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.544, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.664, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.779, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703911.944, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.06, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.183, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.295, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.419, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.548, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.677, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.796, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703912.919, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.034, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703904.682, \"ph\": \"X\", \"dur\": 8.617175689754426, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703847.009, \"ph\": \"X\", \"dur\": 66.40451213393447, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.609, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.718, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.866, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.979, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.109, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.224, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.355, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.467, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.589, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703914.699, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703916.736, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703916.889, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.023, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.145, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.305, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.406, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.532, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.651, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.812, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703917.917, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.038, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.13, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.286, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.386, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.542, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.657, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.776, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.867, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703918.999, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.097, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.229, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.321, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.443, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.537, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.709, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.807, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703919.927, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.02, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.138, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.233, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.361, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.459, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.586, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.685, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.81, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703920.909, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.037, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.134, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.265, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.363, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.521, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.62, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.749, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.842, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703921.962, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703922.069, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703922.199, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703923.375, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703923.526, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703923.617, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703923.748, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703923.889, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.025, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.135, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.258, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.364, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.551, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.655, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.776, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703924.92, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.048, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.152, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.283, \"ph\": \"X\", \"dur\": 0.05313239027117362, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.387, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.507, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.615, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.74, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.836, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703925.959, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.063, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.188, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.283, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.463, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.555, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.685, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.779, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703926.903, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.021, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.151, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.263, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.383, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.491, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.614, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.741, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.867, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703927.974, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.102, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.231, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.35, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.442, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.571, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.679, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.803, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703928.929, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.082, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.236, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.444, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.54, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.676, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.783, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703930.905, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.017, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.179, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.289, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.412, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.523, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.657, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.766, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703931.89, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703932.045, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703932.177, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703932.299, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703932.431, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703932.555, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703913.544, \"ph\": \"X\", \"dur\": 19.314746378859027, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703779.023, \"ph\": \"X\", \"dur\": 153.9559650436377, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.186, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.328, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.489, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.622, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.746, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.877, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.011, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.133, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.249, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.371, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.551, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.7, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.826, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703934.945, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.066, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.186, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.301, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.401, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.571, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.684, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.808, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703935.907, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703936.035, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703936.141, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.302, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.422, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.553, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.655, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.8, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703937.899, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.034, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.134, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.268, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.369, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.54, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.641, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.776, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.875, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703938.997, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.097, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.214, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.325, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.487, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.588, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.734, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.835, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703939.982, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.087, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.222, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.334, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.484, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.593, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.728, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.835, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703940.952, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.06, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.179, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.283, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.421, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.532, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.647, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.756, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.872, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703941.978, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.097, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.191, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.383, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.478, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.599, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.697, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703942.831, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.007, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.185, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.295, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.437, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.569, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.694, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.793, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703944.912, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.007, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.128, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.248, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.411, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.511, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.646, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.744, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.868, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703945.964, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.1, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.196, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.331, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.43, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.564, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.662, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.797, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703946.9, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.062, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.162, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.285, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.381, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.516, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.615, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.749, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.849, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703947.98, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.08, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.249, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.361, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.48, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.58, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.704, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.825, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703948.96, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703949.067, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703949.184, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703949.288, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703949.41, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703950.553, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703950.709, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703950.818, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703950.939, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.046, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.178, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.289, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.425, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.534, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.653, \"ph\": \"X\", \"dur\": 0.1451786438395448, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.848, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703951.98, \"ph\": \"X\", \"dur\": 0.1129998722668622, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.142, \"ph\": \"X\", \"dur\": 0.14667533088943702, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.379, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.486, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.603, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.709, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.841, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703952.941, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.061, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.158, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.281, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.377, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.496, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.593, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.724, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.823, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703953.954, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.049, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.17, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.264, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.389, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.482, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.612, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.708, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.837, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703954.931, \"ph\": \"X\", \"dur\": 0.27090035603049084, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.292, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.391, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.527, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.625, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.76, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.859, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703955.976, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703956.072, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703956.192, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703956.289, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703957.48, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703957.601, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703957.754, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703957.85, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703957.971, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.069, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.203, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.301, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.423, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.516, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.65, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.747, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.866, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703958.999, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.127, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.229, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.353, \"ph\": \"X\", \"dur\": 0.1237261294577564, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.526, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.652, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.762, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703959.893, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.001, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.182, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.282, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.4, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.505, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.632, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.741, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.864, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703960.975, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.096, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.222, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.341, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.433, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.565, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.671, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.789, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703961.881, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.011, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.116, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.249, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.352, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.472, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.588, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.702, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703962.827, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.165, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.27, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.408, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.503, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.644, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.798, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703964.944, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.068, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.322, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.414, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.544, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.64, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.77, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.878, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703965.997, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.105, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.236, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.365, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.492, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.599, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.721, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.85, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703966.977, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.09, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.218, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.327, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.446, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.59, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.722, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.818, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703967.937, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703968.041, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703933.12, \"ph\": \"X\", \"dur\": 35.509898050059384, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703621.515, \"ph\": \"X\", \"dur\": 347.3197001109374, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.33, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.423, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.673, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.767, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.998, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.091, \"ph\": \"X\", \"dur\": 0.029434845314546886, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.299, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.369, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.566, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.635, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.818, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.888, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703971.066, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703971.016, \"ph\": \"X\", \"dur\": 1.176146573373632, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.375, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.449, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.655, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.595, \"ph\": \"X\", \"dur\": 0.15041704851416757, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.909, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.854, \"ph\": \"X\", \"dur\": 0.14193582189811166, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.166, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.332, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.085, \"ph\": \"X\", \"dur\": 0.3951253811715446, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703972.311, \"ph\": \"X\", \"dur\": 1.24574252119362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.716, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.835, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703973.654, \"ph\": \"X\", \"dur\": 0.3507236653580756, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.768, \"ph\": \"X\", \"dur\": 3.3131662327780655, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.26, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.331, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.559, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.633, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.811, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.761, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.075, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.013, \"ph\": \"X\", \"dur\": 0.14892036146427534, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.319, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.439, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.242, \"ph\": \"X\", \"dur\": 0.33725348190904564, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.497, \"ph\": \"X\", \"dur\": 1.1307470661935681, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.794, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.862, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.03, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.983, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.283, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.236, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.525, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.629, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.448, \"ph\": \"X\", \"dur\": 0.3192932373103391, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703975.743, \"ph\": \"X\", \"dur\": 1.0766168845557997, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.983, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.107, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.229, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.352, \"ph\": \"X\", \"dur\": 0.05313239027117362, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703976.91, \"ph\": \"X\", \"dur\": 0.5956814458571014, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703974.208, \"ph\": \"X\", \"dur\": 3.345345004350748, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.71, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.819, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.977, \"ph\": \"X\", \"dur\": 0.07633103954450295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703979.177, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703979.343, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703979.466, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703979.616, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703979.738, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703977.65, \"ph\": \"X\", \"dur\": 2.2981629651094955, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.516, \"ph\": \"X\", \"dur\": 9.536141538388245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.225, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.299, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.518, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.589, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.774, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.849, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.058, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.985, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.338, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.263, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.632, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.75, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703981.505, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.726, \"ph\": \"X\", \"dur\": 1.2400052208356998, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.171, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.256, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.448, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.383, \"ph\": \"X\", \"dur\": 0.15839937944692606, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.731, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.657, \"ph\": \"X\", \"dur\": 0.1666311582213332, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.0, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.112, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.906, \"ph\": \"X\", \"dur\": 0.3971209639047343, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703982.103, \"ph\": \"X\", \"dur\": 1.2669455877337596, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.531, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.637, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.76, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.893, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703983.448, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.468, \"ph\": \"X\", \"dur\": 3.6319605744051073, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.245, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.318, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.504, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.577, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.742, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.694, \"ph\": \"X\", \"dur\": 0.15590490103043902, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.984, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.938, \"ph\": \"X\", \"dur\": 0.1352007301735967, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703985.223, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703985.32, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703985.149, \"ph\": \"X\", \"dur\": 1.4038924527988972, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.457, \"ph\": \"X\", \"dur\": 2.1504898428534633, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703986.765, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703986.842, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.081, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.017, \"ph\": \"X\", \"dur\": 0.15116539203911367, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.359, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.307, \"ph\": \"X\", \"dur\": 0.14792257009768053, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.608, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.725, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703987.537, \"ph\": \"X\", \"dur\": 0.3424918865836684, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703986.714, \"ph\": \"X\", \"dur\": 1.2195504978205063, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.1, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.225, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.347, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.471, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.609, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.731, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703988.034, \"ph\": \"X\", \"dur\": 0.8620917407379156, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703984.197, \"ph\": \"X\", \"dur\": 4.749736352832944, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.124, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.236, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.37, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.475, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.612, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.728, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.864, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.981, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.104, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.214, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.36, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.48, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.603, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703990.718, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703989.047, \"ph\": \"X\", \"dur\": 1.819223109143987, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703980.176, \"ph\": \"X\", \"dur\": 10.755193140525455, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.107, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.224, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.369, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.477, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.597, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.704, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.839, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.933, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703992.056, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703992.161, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703993.415, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703993.532, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703993.651, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703993.746, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703993.883, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.005, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.14, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.298, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.44, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.563, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.684, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.793, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703994.946, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.079, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.215, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.333, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.466, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.575, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703991.029, \"ph\": \"X\", \"dur\": 4.728782734134452, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703970.245, \"ph\": \"X\", \"dur\": 25.595843031573356, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.068, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.19, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.439, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.528, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.754, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.837, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.03, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.119, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.332, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.262, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.585, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.527, \"ph\": \"X\", \"dur\": 0.15141483988076238, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.827, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.967, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703997.758, \"ph\": \"X\", \"dur\": 0.35596207003269836, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.978, \"ph\": \"X\", \"dur\": 1.1873717262478236, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.389, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.462, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.659, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.605, \"ph\": \"X\", \"dur\": 0.1451786438395448, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.918, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.839, \"ph\": \"X\", \"dur\": 0.16563336685473842, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703999.181, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703999.28, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703999.095, \"ph\": \"X\", \"dur\": 0.32078992436023135, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703998.333, \"ph\": \"X\", \"dur\": 1.1319943054018116, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703999.619, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704001.942, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704002.124, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704002.246, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704002.441, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704002.564, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703999.555, \"ph\": \"X\", \"dur\": 3.1782149504461175, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.701, \"ph\": \"X\", \"dur\": 6.092015188744611, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.019, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.107, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.382, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.458, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.677, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.626, \"ph\": \"X\", \"dur\": 0.1449291959978961, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.953, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.897, \"ph\": \"X\", \"dur\": 0.1449291959978961, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.247, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.369, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.126, \"ph\": \"X\", \"dur\": 0.39437703764659854, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704003.33, \"ph\": \"X\", \"dur\": 1.24574252119362, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.733, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.827, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.029, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.978, \"ph\": \"X\", \"dur\": 0.14592698736449092, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.312, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.261, \"ph\": \"X\", \"dur\": 0.12023385967467458, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.533, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.648, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.467, \"ph\": \"X\", \"dur\": 0.318544893785393, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704004.681, \"ph\": \"X\", \"dur\": 1.1544446111501947, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.984, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.083, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.208, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.351, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704005.908, \"ph\": \"X\", \"dur\": 0.6131427947725105, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704002.923, \"ph\": \"X\", \"dur\": 3.6504197146871116, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.747, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.87, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.02, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.123, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.253, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.366, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.505, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.618, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.733, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.833, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704007.99, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704008.116, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704009.393, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704009.507, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704006.67, \"ph\": \"X\", \"dur\": 2.988385142951455, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703996.349, \"ph\": \"X\", \"dur\": 13.392106274593887, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704009.951, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.046, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.254, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.349, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.546, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.622, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.886, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.833, \"ph\": \"X\", \"dur\": 0.14792257009768053, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.142, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.087, \"ph\": \"X\", \"dur\": 0.14143692621481427, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.409, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.536, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.308, \"ph\": \"X\", \"dur\": 0.3898869764969219, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.494, \"ph\": \"X\", \"dur\": 1.250731478026594, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.951, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.039, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.243, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.19, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.486, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.435, \"ph\": \"X\", \"dur\": 0.11773938125818754, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.737, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.838, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704012.632, \"ph\": \"X\", \"dur\": 0.34299078226696583, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704011.882, \"ph\": \"X\", \"dur\": 1.1432194582760034, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.162, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.275, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.397, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.552, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.098, \"ph\": \"X\", \"dur\": 0.6089021814644826, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704010.196, \"ph\": \"X\", \"dur\": 3.5618657309018222, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.956, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.044, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.26, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.33, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.501, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.449, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.77, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.719, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.997, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704015.095, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.933, \"ph\": \"X\", \"dur\": 0.29409900530382016, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704014.209, \"ph\": \"X\", \"dur\": 1.067886210098095, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704016.525, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704016.593, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704016.801, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704016.749, \"ph\": \"X\", \"dur\": 0.14767312225603182, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.067, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.015, \"ph\": \"X\", \"dur\": 0.13894244779832726, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.31, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.435, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.232, \"ph\": \"X\", \"dur\": 0.38265298908910955, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704016.448, \"ph\": \"X\", \"dur\": 1.218053810770614, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.838, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.934, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.078, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.197, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.348, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.457, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704017.771, \"ph\": \"X\", \"dur\": 0.8473743180806422, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704013.904, \"ph\": \"X\", \"dur\": 4.794387516488061, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.838, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.952, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.089, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.192, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.323, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.423, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.559, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.663, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.781, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704019.895, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.051, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.156, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.279, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.389, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704018.772, \"ph\": \"X\", \"dur\": 1.7693335408142463, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704009.876, \"ph\": \"X\", \"dur\": 10.736484552401802, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.774, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.884, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.052, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.155, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.271, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.401, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.537, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.644, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.764, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704021.869, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704022.027, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704022.132, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704022.262, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.194, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.356, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.506, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.625, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.736, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704024.927, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.044, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.167, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.287, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.412, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.519, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.638, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.767, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704025.892, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.002, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704020.706, \"ph\": \"X\", \"dur\": 5.51354564396127, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703995.99, \"ph\": \"X\", \"dur\": 30.326621348440998, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.486, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.607, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.747, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.86, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.981, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.091, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.215, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.326, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.446, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.552, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.727, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.833, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704027.97, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.078, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.206, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.313, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.435, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.541, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.692, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.786, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704028.913, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.009, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.13, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.234, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.355, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.459, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.577, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.704, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704029.836, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.002, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.17, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.267, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.4, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.535, \"ph\": \"X\", \"dur\": 0.1254722643492973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.76, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704031.895, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.018, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.139, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.264, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.379, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.502, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.611, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.732, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.846, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704032.977, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.073, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.205, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.312, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.456, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.569, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.736, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.845, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704033.967, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704034.071, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704034.234, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704034.396, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704034.533, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704034.661, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704026.411, \"ph\": \"X\", \"dur\": 8.475738763539612, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.944, \"ph\": \"X\", \"dur\": 65.07420679442194, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.244, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.339, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.538, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.628, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.829, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.902, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.142, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.213, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.412, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.363, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.665, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.736, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.908, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.858, \"ph\": \"X\", \"dur\": 0.13594907369854284, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704037.137, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704037.085, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704038.513, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704038.639, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704038.433, \"ph\": \"X\", \"dur\": 0.34847863478323726, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.614, \"ph\": \"X\", \"dur\": 2.235551556855671, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.033, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.133, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.286, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.416, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704038.939, \"ph\": \"X\", \"dur\": 0.6515577623864108, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704036.066, \"ph\": \"X\", \"dur\": 3.5905522326914228, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.844, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.92, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.114, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.186, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.363, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.311, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.593, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.541, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.845, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.945, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.764, \"ph\": \"X\", \"dur\": 0.32228661141012355, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704040.06, \"ph\": \"X\", \"dur\": 1.0801091543388817, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.297, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.366, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.571, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.491, \"ph\": \"X\", \"dur\": 0.1668806060629819, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.828, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.775, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.093, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.231, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.015, \"ph\": \"X\", \"dur\": 0.3479797390999399, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704041.244, \"ph\": \"X\", \"dur\": 1.1656697640243865, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.562, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.681, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.805, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.923, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.056, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.174, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704042.486, \"ph\": \"X\", \"dur\": 0.8543588576468059, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704039.79, \"ph\": \"X\", \"dur\": 3.6000312506740735, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.536, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.644, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.778, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.878, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704044.005, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704044.115, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704045.334, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704045.453, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704045.602, \"ph\": \"X\", \"dur\": 0.07633103954450295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704045.728, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704043.465, \"ph\": \"X\", \"dur\": 2.475270932680074, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.777, \"ph\": \"X\", \"dur\": 10.239085556154288, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.233, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.321, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.547, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.626, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.821, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.888, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.088, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.038, \"ph\": \"X\", \"dur\": 0.13769520859008375, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.319, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.268, \"ph\": \"X\", \"dur\": 0.13944134348162468, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.576, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.703, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704047.491, \"ph\": \"X\", \"dur\": 0.360452131182375, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.768, \"ph\": \"X\", \"dur\": 1.136733814393137, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.091, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.163, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.365, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.314, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.617, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.566, \"ph\": \"X\", \"dur\": 0.13594907369854284, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.859, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.981, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.781, \"ph\": \"X\", \"dur\": 0.35197090456631913, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704048.041, \"ph\": \"X\", \"dur\": 1.144965593167544, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704049.358, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704049.466, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704049.611, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704049.729, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704049.279, \"ph\": \"X\", \"dur\": 0.6036637767898598, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.496, \"ph\": \"X\", \"dur\": 3.4508614413681493, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.114, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.208, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.401, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.471, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.646, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.593, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.89, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.837, \"ph\": \"X\", \"dur\": 0.1439314046313013, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704051.12, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704051.23, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704051.059, \"ph\": \"X\", \"dur\": 0.3569598613992932, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.349, \"ph\": \"X\", \"dur\": 2.171194013710306, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704052.695, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704052.788, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.008, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704052.954, \"ph\": \"X\", \"dur\": 0.1454280916811935, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.275, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.208, \"ph\": \"X\", \"dur\": 0.16214109707165658, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.572, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.684, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.455, \"ph\": \"X\", \"dur\": 0.39088476786351667, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704052.643, \"ph\": \"X\", \"dur\": 1.255720434859568, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.059, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.172, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.315, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.44, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.585, \"ph\": \"X\", \"dur\": 0.11823827694148495, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704054.755, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704053.993, \"ph\": \"X\", \"dur\": 0.920462535683712, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704050.064, \"ph\": \"X\", \"dur\": 4.92135646788725, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.142, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.251, \"ph\": \"X\", \"dur\": 0.07782772659439516, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.402, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.507, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.624, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.738, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.864, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.979, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.097, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.219, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704055.06, \"ph\": \"X\", \"dur\": 1.3599896326687255, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704046.168, \"ph\": \"X\", \"dur\": 10.331630705405958, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.663, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.771, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.911, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.017, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.149, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.257, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.384, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.491, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.615, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.707, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.861, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704057.97, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704058.099, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704058.195, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704058.325, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704059.462, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704059.675, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704059.793, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704059.976, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.098, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.235, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.357, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.48, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.605, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704056.592, \"ph\": \"X\", \"dur\": 4.185235887181929, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.486, \"ph\": \"X\", \"dur\": 25.36859604783139, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.057, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.175, \"ph\": \"X\", \"dur\": 0.05712355573755286, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.424, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.521, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.749, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.823, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.016, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.09, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.285, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.237, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.546, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.498, \"ph\": \"X\", \"dur\": 0.14143692621481427, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.801, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.945, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704062.718, \"ph\": \"X\", \"dur\": 0.3786618236227303, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.97, \"ph\": \"X\", \"dur\": 1.1826322172564983, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.327, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.4, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.579, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.525, \"ph\": \"X\", \"dur\": 0.1444303003145987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.85, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.799, \"ph\": \"X\", \"dur\": 0.1429336132647065, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.096, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.196, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.022, \"ph\": \"X\", \"dur\": 0.3639444009654568, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704063.274, \"ph\": \"X\", \"dur\": 1.1599324636664663, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.58, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.697, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.842, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.957, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704065.108, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704065.228, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704064.514, \"ph\": \"X\", \"dur\": 0.8665818018875923, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.664, \"ph\": \"X\", \"dur\": 3.7694063351535423, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704065.603, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704065.695, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.094, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.166, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.377, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.324, \"ph\": \"X\", \"dur\": 0.14343250894800388, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.626, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.577, \"ph\": \"X\", \"dur\": 0.11823827694148495, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.863, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.988, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.795, \"ph\": \"X\", \"dur\": 0.3332623164426664, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704067.041, \"ph\": \"X\", \"dur\": 1.1429700104343545, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.353, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.447, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.627, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.576, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.853, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.806, \"ph\": \"X\", \"dur\": 0.15216318340570847, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.103, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.202, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.04, \"ph\": \"X\", \"dur\": 0.31355593695241896, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704068.303, \"ph\": \"X\", \"dur\": 1.0995660859874803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.559, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.657, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.782, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.925, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704069.493, \"ph\": \"X\", \"dur\": 0.611895555564267, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704065.555, \"ph\": \"X\", \"dur\": 4.596076482377343, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.306, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.418, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.557, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.672, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.805, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.945, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.076, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.18, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.296, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.419, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.596, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.707, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.839, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704071.957, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704070.244, \"ph\": \"X\", \"dur\": 1.8840795479726493, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704061.351, \"ph\": \"X\", \"dur\": 10.846740498410528, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.445, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.539, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.772, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.859, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.17, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.24, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.421, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.37, \"ph\": \"X\", \"dur\": 0.14742367441438312, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.683, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.63, \"ph\": \"X\", \"dur\": 0.13994023916492207, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.92, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.025, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.854, \"ph\": \"X\", \"dur\": 0.3058230538613092, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704074.105, \"ph\": \"X\", \"dur\": 1.1162790913779435, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.394, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.484, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.699, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.634, \"ph\": \"X\", \"dur\": 0.15166428772241108, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.944, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.879, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.18, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.319, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.099, \"ph\": \"X\", \"dur\": 0.42156685238630714, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704075.346, \"ph\": \"X\", \"dur\": 1.2285306201198594, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.75, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.875, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.054, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.176, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704076.668, \"ph\": \"X\", \"dur\": 0.662284019577305, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.704, \"ph\": \"X\", \"dur\": 4.69635451472012, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.635, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.725, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.92, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.006, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.191, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.145, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.434, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.388, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.68, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.821, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704078.602, \"ph\": \"X\", \"dur\": 0.39786930742968035, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.872, \"ph\": \"X\", \"dur\": 1.1771443647402269, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.217, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.309, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.498, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.45, \"ph\": \"X\", \"dur\": 0.13470183449029932, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.734, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.688, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.944, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704080.128, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.878, \"ph\": \"X\", \"dur\": 0.3816551977225147, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704079.169, \"ph\": \"X\", \"dur\": 2.2829466467689246, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704081.659, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704081.784, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704081.925, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.044, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.179, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.314, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704081.565, \"ph\": \"X\", \"dur\": 0.9259503881999834, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704077.547, \"ph\": \"X\", \"dur\": 4.991201863548887, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.706, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.82, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.961, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.059, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.182, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.29, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.41, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.502, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.622, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.739, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704083.894, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.004, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.138, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.249, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704082.62, \"ph\": \"X\", \"dur\": 1.7780642152719508, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704072.366, \"ph\": \"X\", \"dur\": 12.086995167087876, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.621, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.726, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.865, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.971, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.091, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.195, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.329, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.435, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.602, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.711, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.858, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704085.965, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.083, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.188, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.314, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.418, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.539, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.648, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.818, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704086.961, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704087.082, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704087.212, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704088.406, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704088.542, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704088.691, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704088.816, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704088.94, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.085, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.205, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.316, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704084.556, \"ph\": \"X\", \"dur\": 5.008164316780999, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704060.985, \"ph\": \"X\", \"dur\": 28.65956142270272, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.829, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.972, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.126, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.243, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.369, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.486, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.627, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.757, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.875, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704090.983, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.15, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.259, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.379, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.483, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.607, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.707, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.847, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704091.941, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.102, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.213, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.345, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.442, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.567, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.662, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.785, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704092.88, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.002, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.105, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.225, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.356, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.495, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.603, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.721, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.813, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704093.997, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704094.109, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.251, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.422, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.545, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.642, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.784, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704095.905, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.026, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.152, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.277, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.393, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.517, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.657, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.778, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704096.887, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704089.745, \"ph\": \"X\", \"dur\": 7.707938306944905, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704035.188, \"ph\": \"X\", \"dur\": 62.37044163879166, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704097.81, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704097.923, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.083, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.196, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.333, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.447, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.565, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.682, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.805, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704098.917, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.084, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.182, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.314, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.425, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.555, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.663, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.788, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704099.883, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.063, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.159, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.287, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.38, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.513, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.622, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.75, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.848, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704100.972, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704101.065, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704101.193, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704101.303, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704101.431, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704102.65, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704102.803, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704102.898, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.068, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.167, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.296, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.407, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.54, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.641, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.773, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704103.871, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.003, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.1, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.235, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.332, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.469, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.567, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.7, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.8, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704104.969, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.068, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.183, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.276, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.406, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.504, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.633, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.743, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.874, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704105.971, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.094, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.189, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.313, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.417, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.537, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.664, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.851, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704106.984, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.108, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.2, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.32, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.416, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.546, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.654, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.781, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704107.891, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704108.019, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.216, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.358, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.454, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.575, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.689, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704109.886, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.004, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.128, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.228, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.354, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.474, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.605, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.707, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.837, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704110.951, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.083, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.188, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.31, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.432, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.584, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.678, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.809, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704111.914, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.045, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.185, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.32, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.441, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.561, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.652, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.829, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704112.931, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.061, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.191, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.323, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.436, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.566, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.681, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.802, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704113.914, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704114.034, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704114.162, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704114.283, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704114.39, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704097.667, \"ph\": \"X\", \"dur\": 17.040779854389456, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.618, \"ph\": \"X\", \"dur\": 145.21880494205024, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704115.137, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704115.227, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704116.669, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704116.761, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.003, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.074, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.286, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.358, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.551, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.62, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.806, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.755, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.059, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.125, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.296, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.245, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.525, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.47, \"ph\": \"X\", \"dur\": 0.15241263124735718, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.808, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.99, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.703, \"ph\": \"X\", \"dur\": 0.4557412066921793, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704118.006, \"ph\": \"X\", \"dur\": 1.2193010499788575, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704119.451, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704119.554, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704119.319, \"ph\": \"X\", \"dur\": 0.41632844771168437, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.499, \"ph\": \"X\", \"dur\": 2.295917934534657, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704119.977, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.049, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.241, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.305, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.477, \"ph\": \"X\", \"dur\": 0.028935949631249482, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.421, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.705, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.652, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.949, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.055, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.869, \"ph\": \"X\", \"dur\": 0.34324023010861454, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704120.186, \"ph\": \"X\", \"dur\": 1.0738729582976638, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.427, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.494, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.666, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.614, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.907, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.853, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704122.142, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704122.24, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704122.066, \"ph\": \"X\", \"dur\": 0.31505262400231115, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704121.373, \"ph\": \"X\", \"dur\": 1.0559127136989572, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704123.959, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.111, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.234, \"ph\": \"X\", \"dur\": 0.07782772659439516, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.362, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.51, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.63, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704123.898, \"ph\": \"X\", \"dur\": 0.8932727209440033, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704119.92, \"ph\": \"X\", \"dur\": 4.922354259253845, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.994, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.107, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.27, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.414, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.546, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.674, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.824, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704125.932, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.051, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.163, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.303, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.424, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704124.924, \"ph\": \"X\", \"dur\": 1.673296121779496, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704117.234, \"ph\": \"X\", \"dur\": 9.417404365763463, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.834, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.924, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.147, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.215, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.401, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.467, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.638, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.586, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.888, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.838, \"ph\": \"X\", \"dur\": 0.1541587661388981, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.156, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.273, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.071, \"ph\": \"X\", \"dur\": 0.35396648729950875, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.349, \"ph\": \"X\", \"dur\": 1.1556918503584384, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.67, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.739, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.914, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.863, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.141, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.088, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.383, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.485, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.305, \"ph\": \"X\", \"dur\": 0.32228661141012355, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704128.618, \"ph\": \"X\", \"dur\": 1.0618994618985262, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.845, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704131.739, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704131.979, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.11, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704129.769, \"ph\": \"X\", \"dur\": 2.516679274393759, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704127.095, \"ph\": \"X\", \"dur\": 5.243643079297374, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.503, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.596, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.819, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.895, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.104, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.051, \"ph\": \"X\", \"dur\": 0.14243471758140908, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.384, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.321, \"ph\": \"X\", \"dur\": 0.14742367441438312, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.614, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.736, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704133.552, \"ph\": \"X\", \"dur\": 0.3247810898266106, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.766, \"ph\": \"X\", \"dur\": 1.1719059600656039, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.116, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.203, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.375, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.323, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.652, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.598, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.876, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.994, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.812, \"ph\": \"X\", \"dur\": 0.3180459981020956, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704134.064, \"ph\": \"X\", \"dur\": 1.1177757784278355, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704135.339, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704135.46, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704135.601, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704135.726, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704135.275, \"ph\": \"X\", \"dur\": 0.6191295429720794, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704132.449, \"ph\": \"X\", \"dur\": 3.495762052864916, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.121, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.219, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.353, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.445, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.582, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.699, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.846, \"ph\": \"X\", \"dur\": 0.055127973004363236, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.954, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704137.074, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704137.182, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704137.341, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704137.46, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704137.581, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704138.743, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704136.049, \"ph\": \"X\", \"dur\": 2.917292508081575, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704126.766, \"ph\": \"X\", \"dur\": 12.271087674224619, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.183, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.304, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.478, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.599, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.722, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.835, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.974, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.088, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.209, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.319, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.493, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.606, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.746, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.857, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704140.981, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.082, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.206, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.328, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.503, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.623, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.742, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704141.878, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.019, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.142, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.282, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.405, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.544, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704142.667, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704139.122, \"ph\": \"X\", \"dur\": 3.757183390912756, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704116.95, \"ph\": \"X\", \"dur\": 25.99845184799436, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.149, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.246, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.514, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.587, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.791, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.869, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.125, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.194, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.379, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.326, \"ph\": \"X\", \"dur\": 0.1332051474404071, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.604, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.553, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.836, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.978, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.768, \"ph\": \"X\", \"dur\": 1.4218526973976038, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704144.071, \"ph\": \"X\", \"dur\": 2.172690700760198, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.442, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.509, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.689, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.637, \"ph\": \"X\", \"dur\": 0.16114330570506177, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.955, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.904, \"ph\": \"X\", \"dur\": 0.14118747837316556, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.191, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.293, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.125, \"ph\": \"X\", \"dur\": 0.3005846491866864, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704146.352, \"ph\": \"X\", \"dur\": 1.1280031399354322, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.652, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.768, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.927, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.057, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.191, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.318, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704147.572, \"ph\": \"X\", \"dur\": 0.9032506346099515, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.739, \"ph\": \"X\", \"dur\": 4.801122608212576, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.745, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.82, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.036, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.106, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.277, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.225, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.536, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.484, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.785, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.888, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704149.701, \"ph\": \"X\", \"dur\": 0.34548526068345287, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.984, \"ph\": \"X\", \"dur\": 1.1092945518117796, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.28, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.346, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.52, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.468, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.765, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.711, \"ph\": \"X\", \"dur\": 0.13869299995667855, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.01, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.109, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.929, \"ph\": \"X\", \"dur\": 0.341992990900371, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704150.226, \"ph\": \"X\", \"dur\": 1.0980693989375883, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.481, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.594, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.714, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.829, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.029, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.144, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704151.401, \"ph\": \"X\", \"dur\": 1.9097726756624658, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704148.669, \"ph\": \"X\", \"dur\": 4.694857827670228, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.559, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.672, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.829, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.945, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.062, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.175, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.289, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.402, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.536, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.628, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.78, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704154.901, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.021, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.127, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704153.482, \"ph\": \"X\", \"dur\": 1.7915343987209809, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.461, \"ph\": \"X\", \"dur\": 11.868728305645261, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.515, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.585, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.812, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.88, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.063, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.127, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.312, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.261, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.576, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.524, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.839, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.94, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.74, \"ph\": \"X\", \"dur\": 0.3686839099567822, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704156.011, \"ph\": \"X\", \"dur\": 1.1454644888508414, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.327, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.395, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.595, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.544, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.836, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.785, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.063, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.164, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.001, \"ph\": \"X\", \"dur\": 0.2983396186118481, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704157.277, \"ph\": \"X\", \"dur\": 1.0688840014646899, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.518, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.632, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.758, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704159.924, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.046, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.166, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704158.44, \"ph\": \"X\", \"dur\": 1.8930596702720026, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.76, \"ph\": \"X\", \"dur\": 4.62725746258343, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.593, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.686, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.942, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.014, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.189, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.137, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.422, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.372, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.639, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.743, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704161.574, \"ph\": \"X\", \"dur\": 0.31879434162704173, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.865, \"ph\": \"X\", \"dur\": 1.0811069457054765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.136, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.222, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.417, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.367, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.639, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.589, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.909, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.01, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.812, \"ph\": \"X\", \"dur\": 0.337004034067397, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704162.068, \"ph\": \"X\", \"dur\": 1.1581863287749254, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.369, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.468, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.595, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.705, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.838, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.959, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704163.303, \"ph\": \"X\", \"dur\": 0.8166922335578517, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704160.517, \"ph\": \"X\", \"dur\": 3.6561570150450318, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.325, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.481, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.628, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.722, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.842, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.956, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.096, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.196, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.327, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.435, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.584, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704165.708, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.013, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.149, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704164.263, \"ph\": \"X\", \"dur\": 3.0452592508473595, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704155.464, \"ph\": \"X\", \"dur\": 11.900657629376296, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.526, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.649, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.801, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.913, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.036, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.147, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.282, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.387, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.539, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.666, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.81, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704168.917, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.046, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.165, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.293, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.4, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.531, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.641, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.798, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704169.91, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.041, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.161, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.285, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.404, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.551, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.676, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.803, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704170.943, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.076, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.188, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704167.446, \"ph\": \"X\", \"dur\": 3.924812340500684, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704143.096, \"ph\": \"X\", \"dur\": 28.33078916740973, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.635, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.756, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.901, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704172.021, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704172.145, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704172.254, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704215.49, \"ph\": \"X\", \"dur\": 0.21951410065085813, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704215.862, \"ph\": \"X\", \"dur\": 0.12671950355754083, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704216.296, \"ph\": \"X\", \"dur\": 0.13021177334062267, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704216.51, \"ph\": \"X\", \"dur\": 0.1818474765619041, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704218.406, \"ph\": \"X\", \"dur\": 0.12098220319962069, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704218.661, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704218.943, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.091, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.237, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.343, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.472, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.567, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.817, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704219.915, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.08, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.206, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.343, \"ph\": \"X\", \"dur\": 0.08531116184385623, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.477, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.61, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.775, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704220.918, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.012, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.133, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.238, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.375, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.468, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.599, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.733, \"ph\": \"X\", \"dur\": 0.1254722643492973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704221.981, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.081, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.201, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.365, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.499, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.638, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.769, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704222.915, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.044, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.138, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.265, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.358, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.489, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.653, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.786, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704223.963, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.147, \"ph\": \"X\", \"dur\": 0.08830453594364066, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.301, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.425, \"ph\": \"X\", \"dur\": 0.1229777859328103, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.599, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.732, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.871, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704224.997, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704226.302, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704226.445, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704226.619, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704171.559, \"ph\": \"X\", \"dur\": 55.53232795567578, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704116.589, \"ph\": \"X\", \"dur\": 110.74735825677442, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704228.124, \"ph\": \"X\", \"dur\": 0.1307106690239201, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704228.385, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704228.899, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.028, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.326, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.406, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.659, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.744, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.959, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.034, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.249, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.198, \"ph\": \"X\", \"dur\": 0.16962453232111765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.59, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.539, \"ph\": \"X\", \"dur\": 0.17087177152936114, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704231.125, \"ph\": \"X\", \"dur\": 0.15914772297187216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704231.362, \"ph\": \"X\", \"dur\": 0.10352085428421151, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704230.831, \"ph\": \"X\", \"dur\": 0.8715707587205662, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.907, \"ph\": \"X\", \"dur\": 1.907278197245979, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.068, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.152, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.318, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.266, \"ph\": \"X\", \"dur\": 0.13694686506513765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.613, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.563, \"ph\": \"X\", \"dur\": 0.1464258830477883, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.97, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704233.139, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.814, \"ph\": \"X\", \"dur\": 0.5308250070284388, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704232.007, \"ph\": \"X\", \"dur\": 1.4196076668227655, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704233.761, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704233.953, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704234.115, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704234.265, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704234.397, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704234.523, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704233.564, \"ph\": \"X\", \"dur\": 1.196351848547177, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.61, \"ph\": \"X\", \"dur\": 5.246137557713861, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.062, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.133, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.352, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.419, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.59, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.54, \"ph\": \"X\", \"dur\": 1.2729323359333284, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.019, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704236.958, \"ph\": \"X\", \"dur\": 0.15316097477230328, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.286, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.407, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.218, \"ph\": \"X\", \"dur\": 0.35246980024961655, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.302, \"ph\": \"X\", \"dur\": 2.3300922888405293, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.835, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.907, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.114, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.036, \"ph\": \"X\", \"dur\": 0.16962453232111765, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.416, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.363, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.729, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.856, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704238.587, \"ph\": \"X\", \"dur\": 0.48342991711518535, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704237.777, \"ph\": \"X\", \"dur\": 1.4031441092739512, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.398, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.511, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.671, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.793, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.931, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.047, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704239.289, \"ph\": \"X\", \"dur\": 0.9738443737965342, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704235.014, \"ph\": \"X\", \"dur\": 5.312490683592416, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.542, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.68, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.84, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.943, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.067, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.172, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.291, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.423, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.559, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.679, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.867, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704241.981, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704240.434, \"ph\": \"X\", \"dur\": 1.7623490012480827, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704229.273, \"ph\": \"X\", \"dur\": 13.016936720754238, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.517, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.59, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.824, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.892, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704243.081, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704243.147, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704243.322, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704243.273, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704244.664, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704244.598, \"ph\": \"X\", \"dur\": 0.15715214023868254, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704244.901, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.035, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704244.82, \"ph\": \"X\", \"dur\": 0.40585163836243887, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704243.03, \"ph\": \"X\", \"dur\": 2.265235850011867, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.507, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.576, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.747, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.697, \"ph\": \"X\", \"dur\": 0.13744576074843504, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.989, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.942, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.24, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.339, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.14, \"ph\": \"X\", \"dur\": 0.37367286678975625, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704245.455, \"ph\": \"X\", \"dur\": 1.1117890302282667, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.752, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.862, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.987, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.106, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704246.66, \"ph\": \"X\", \"dur\": 0.6223723649135126, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.772, \"ph\": \"X\", \"dur\": 4.601813782735262, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.543, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.635, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.843, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.911, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.075, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.03, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.314, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.264, \"ph\": \"X\", \"dur\": 0.13794465643173245, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.545, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.668, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.466, \"ph\": \"X\", \"dur\": 0.35596207003269836, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.771, \"ph\": \"X\", \"dur\": 1.102310012245616, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.043, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.131, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.347, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.301, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.583, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.537, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.781, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.879, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704249.717, \"ph\": \"X\", \"dur\": 0.3020813362365786, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704248.993, \"ph\": \"X\", \"dur\": 1.102310012245616, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704250.258, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704250.366, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704251.58, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704251.719, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704251.857, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704251.958, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704250.183, \"ph\": \"X\", \"dur\": 1.9479381954347172, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704247.495, \"ph\": \"X\", \"dur\": 4.704336845652879, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.39, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.506, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.665, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.759, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.893, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.052, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.175, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.313, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.432, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.541, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.731, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.844, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704253.958, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.074, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704252.278, \"ph\": \"X\", \"dur\": 1.9748785623327771, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704242.466, \"ph\": \"X\", \"dur\": 11.88244793693594, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.538, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.662, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.815, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.923, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.065, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.171, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.303, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.398, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.526, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.655, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.842, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704255.946, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.074, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.181, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.312, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.418, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.542, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.642, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.827, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704256.917, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704257.036, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704257.15, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704257.276, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704257.435, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704257.564, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704258.826, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704254.451, \"ph\": \"X\", \"dur\": 4.605555500359993, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704228.798, \"ph\": \"X\", \"dur\": 30.376760364612387, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.416, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.535, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.76, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.85, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.082, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.151, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.332, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.398, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.579, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.533, \"ph\": \"X\", \"dur\": 0.13046122118227138, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.815, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.769, \"ph\": \"X\", \"dur\": 0.12946342981567657, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.049, \"ph\": \"X\", \"dur\": 0.08630895321045104, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.191, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.969, \"ph\": \"X\", \"dur\": 0.3584565484491854, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.283, \"ph\": \"X\", \"dur\": 1.1003144295124263, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.62, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.687, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.894, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.814, \"ph\": \"X\", \"dur\": 0.17411459347079428, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.145, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.093, \"ph\": \"X\", \"dur\": 0.14592698736449092, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.383, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.484, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.303, \"ph\": \"X\", \"dur\": 0.3367545862257483, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704261.528, \"ph\": \"X\", \"dur\": 1.1731531992738475, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.836, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.95, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.078, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.192, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.321, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.461, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704262.772, \"ph\": \"X\", \"dur\": 0.8503676921804266, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704260.022, \"ph\": \"X\", \"dur\": 3.6524152974203012, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.862, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.943, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.127, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.219, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.401, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.354, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.636, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.588, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.846, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.016, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.786, \"ph\": \"X\", \"dur\": 1.404890244165492, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704264.078, \"ph\": \"X\", \"dur\": 2.1657061611940343, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.46, \"ph\": \"X\", \"dur\": 0.028437053947952075, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.547, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.753, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.698, \"ph\": \"X\", \"dur\": 0.1546576618221955, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.038, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.987, \"ph\": \"X\", \"dur\": 0.12322723377445899, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.284, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.381, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.179, \"ph\": \"X\", \"dur\": 0.3494764261498321, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704266.371, \"ph\": \"X\", \"dur\": 1.210570375521153, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.736, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.828, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.971, \"ph\": \"X\", \"dur\": 0.11075484169202388, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.192, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.327, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.437, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704267.673, \"ph\": \"X\", \"dur\": 0.9324360320828496, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704263.797, \"ph\": \"X\", \"dur\": 4.8664779427245355, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.838, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.96, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.098, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.212, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.342, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.461, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.597, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.688, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.821, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704269.949, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.093, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.22, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704268.741, \"ph\": \"X\", \"dur\": 1.6633182081135478, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.711, \"ph\": \"X\", \"dur\": 10.754694244842156, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.697, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.827, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.052, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.135, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.32, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.384, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.551, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.498, \"ph\": \"X\", \"dur\": 0.1616422013883592, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.817, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.764, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704272.041, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704272.181, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.977, \"ph\": \"X\", \"dur\": 1.4682499959442625, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704271.273, \"ph\": \"X\", \"dur\": 2.240789961530294, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704273.692, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704273.782, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704273.982, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704273.93, \"ph\": \"X\", \"dur\": 0.1404391348482195, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.227, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.175, \"ph\": \"X\", \"dur\": 0.11848772478313366, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.463, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.566, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.379, \"ph\": \"X\", \"dur\": 0.37342341894810754, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704273.639, \"ph\": \"X\", \"dur\": 1.1609302550330611, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.983, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704275.102, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704275.244, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704275.364, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704275.52, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704275.653, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704274.898, \"ph\": \"X\", \"dur\": 0.953140202939692, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.998, \"ph\": \"X\", \"dur\": 4.930586038028252, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.106, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.192, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.383, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.467, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.637, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.585, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.861, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.809, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.088, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.21, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.009, \"ph\": \"X\", \"dur\": 0.3350084513342073, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.33, \"ph\": \"X\", \"dur\": 1.0611511183735802, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.573, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.656, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.863, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.796, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.08, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.027, \"ph\": \"X\", \"dur\": 0.11873717262478237, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.393, \"ph\": \"X\", \"dur\": 0.11499545500005182, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.56, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.228, \"ph\": \"X\", \"dur\": 0.4784409602822113, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704277.521, \"ph\": \"X\", \"dur\": 1.240753564360646, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.931, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704279.046, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704279.181, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704279.3, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704280.612, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704280.729, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704278.854, \"ph\": \"X\", \"dur\": 2.033748252961871, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704276.055, \"ph\": \"X\", \"dur\": 4.886683217898081, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.122, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.235, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.387, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.481, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.615, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.739, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.861, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.967, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.086, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.22, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.382, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.494, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.624, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704282.743, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704281.023, \"ph\": \"X\", \"dur\": 1.870110468840322, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704270.647, \"ph\": \"X\", \"dur\": 12.315988285721385, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.137, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.271, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.413, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.529, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.654, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.771, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.894, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.995, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.147, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.249, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.399, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.505, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.627, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.734, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.856, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704284.975, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.102, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.21, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.391, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.543, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.703, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.811, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704285.949, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704286.066, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704286.203, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704286.322, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704286.444, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704288.445, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704288.579, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704288.703, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704283.062, \"ph\": \"X\", \"dur\": 5.909169920816112, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704259.361, \"ph\": \"X\", \"dur\": 29.69377217417824, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.255, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.373, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.52, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.644, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.767, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.883, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.008, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.122, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.246, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.358, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.535, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.644, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.765, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704290.871, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.005, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.123, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.254, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.35, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.494, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.584, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.701, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.793, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704291.929, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.018, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.149, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.242, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.372, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.466, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.585, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.692, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.823, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704292.933, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.066, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.204, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.375, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.497, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.617, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.712, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.831, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704293.966, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704294.098, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704294.191, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704295.405, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704295.54, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704295.669, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704295.794, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704295.925, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.045, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.169, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.286, \"ph\": \"X\", \"dur\": 0.1239755772994051, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.516, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.614, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.764, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704296.883, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.015, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.131, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.252, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.377, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.503, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704297.609, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704289.164, \"ph\": \"X\", \"dur\": 8.742398506262074, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704227.934, \"ph\": \"X\", \"dur\": 70.12253221370838, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.237, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.382, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.544, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.68, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.806, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.939, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.095, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.204, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.333, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.446, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.625, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.734, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.866, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704299.972, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.094, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.204, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.332, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.444, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.622, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.716, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.847, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704300.956, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704301.083, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704301.181, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704301.301, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704301.394, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704302.559, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704302.689, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704302.845, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704302.947, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.083, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.194, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.346, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.44, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.611, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.715, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.846, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704303.947, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.074, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.169, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.29, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.383, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.503, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.597, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.718, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.821, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704304.944, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.104, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.23, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.326, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.483, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.577, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.706, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.803, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704305.935, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.033, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.153, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.25, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.368, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.462, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.593, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.702, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.821, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704306.915, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.037, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.139, \"ph\": \"X\", \"dur\": 0.1544082139805468, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.372, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.477, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.606, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.717, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.849, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704307.953, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704308.071, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.22, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.36, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.456, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.588, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.712, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.832, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704309.957, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.089, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.185, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.393, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.503, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.623, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.743, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.871, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704310.969, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.09, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.181, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.309, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.406, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.535, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.632, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.76, \"ph\": \"X\", \"dur\": 0.07932441364428737, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704311.894, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.02, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.136, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.258, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.36, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.48, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.587, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.719, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.814, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704312.936, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.026, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.217, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.33, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.46, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.576, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.699, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.8, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704313.918, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.024, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.156, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.263, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.395, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.536, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704314.667, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704315.816, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704315.951, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704316.067, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704316.194, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704316.315, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704298.168, \"ph\": \"X\", \"dur\": 18.50503868486734, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704115.062, \"ph\": \"X\", \"dur\": 201.76663506107792, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.057, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.216, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.378, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.512, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.645, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.769, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704317.901, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.022, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.177, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.28, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.452, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.548, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.677, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.773, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704318.908, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.032, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.161, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.256, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.401, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.5, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.619, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.715, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.84, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704319.94, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.074, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.198, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.336, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.477, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.614, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.731, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.853, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704320.959, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.079, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.174, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.341, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.443, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.572, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.671, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.802, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704321.909, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.297, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.422, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.56, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.669, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.794, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704323.902, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.038, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.14, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.283, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.379, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.532, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.63, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.789, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704324.913, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.05, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.16, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.294, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.389, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.513, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.609, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.741, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.846, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704325.982, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.087, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.217, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.315, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.492, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.648, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.771, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704326.877, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.001, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.095, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.224, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.324, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.445, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.545, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.678, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.778, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.899, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704327.997, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.128, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.227, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.398, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.497, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.632, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704328.728, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704329.875, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704329.999, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.121, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.216, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.362, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.465, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.584, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.683, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.816, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704330.944, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.077, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.174, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.309, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.408, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.53, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.629, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.775, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.875, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704331.997, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.091, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.265, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.362, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.498, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.598, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.716, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.855, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704332.984, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.092, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.245, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.363, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.489, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.593, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.717, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.823, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704333.943, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.185, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.306, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.412, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.54, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.646, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.768, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.871, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704334.989, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704335.084, \"ph\": \"X\", \"dur\": 0.17186956289595595, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704335.346, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704335.458, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704335.593, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704336.719, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704336.851, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704336.95, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.082, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.235, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.38, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.496, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.615, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.726, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.845, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704337.942, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.064, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.161, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.317, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.409, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.531, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.623, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.757, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.856, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704338.993, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704339.099, \"ph\": \"X\", \"dur\": 0.3494764261498321, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704339.571, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704339.67, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704339.797, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704339.896, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.025, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.124, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.25, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.359, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.476, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.571, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.696, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.814, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704340.947, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.044, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.164, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.268, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.397, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.493, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.62, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.726, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.849, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704341.945, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704342.066, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704342.158, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704342.293, \"ph\": \"X\", \"dur\": 0.05562686868766064, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704343.473, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704343.645, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704343.741, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704343.874, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704343.973, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.094, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.193, \"ph\": \"X\", \"dur\": 0.12048330751632327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.393, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.485, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.603, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.756, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.893, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704344.989, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.123, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.248, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.366, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.486, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.609, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.71, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.845, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704345.939, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.058, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.16, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.282, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.384, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.53, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.635, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.771, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.864, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704346.982, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.131, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.251, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.344, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.48, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.587, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.705, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.799, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704347.936, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.069, \"ph\": \"X\", \"dur\": 0.16114330570506177, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.351, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.46, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.595, \"ph\": \"X\", \"dur\": 0.11599324636664662, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.761, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704348.923, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704349.031, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704349.155, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704349.258, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704350.391, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704350.517, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704350.652, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704350.774, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704350.894, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.0, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.122, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.262, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.382, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.49, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.618, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.729, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.849, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704351.958, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.078, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.188, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.315, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.458, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.581, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.739, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.858, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704352.967, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704316.967, \"ph\": \"X\", \"dur\": 36.82249259281486, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703969.223, \"ph\": \"X\", \"dur\": 384.7613222467243, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.319, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.48, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.656, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.799, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.927, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.09, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.258, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.397, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.529, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.678, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704355.873, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704356.014, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704356.129, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704356.243, \"ph\": \"X\", \"dur\": 11.29824109179468, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704368.188, \"ph\": \"X\", \"dur\": 0.20803949993501783, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704368.55, \"ph\": \"X\", \"dur\": 0.12696895139918954, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704369.021, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704369.242, \"ph\": \"X\", \"dur\": 0.15241263124735718, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704369.669, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704369.849, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704370.191, \"ph\": \"X\", \"dur\": 0.12073275535797198, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704370.398, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704372.301, \"ph\": \"X\", \"dur\": 0.1234766816161077, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704372.491, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704372.785, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704372.939, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.161, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.343, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.518, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.642, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.786, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704373.939, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704374.181, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704374.303, \"ph\": \"X\", \"dur\": 0.12572171219094602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704374.659, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704374.771, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704374.948, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.058, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.199, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.311, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.434, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.538, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.664, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.766, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704375.921, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.024, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.14, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.244, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.363, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.464, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.8, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704376.918, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.04, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.143, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.276, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.384, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.509, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.607, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.743, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.849, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704377.971, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.07, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.202, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.304, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.424, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.522, \"ph\": \"X\", \"dur\": 0.13046122118227138, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.748, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.849, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704378.97, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.153, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.309, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.448, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.587, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.722, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704380.891, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.006, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.128, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.236, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.358, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.461, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.591, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.695, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.899, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704381.999, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.141, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.241, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.371, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.473, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.607, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.712, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.832, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704382.973, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.107, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.229, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.355, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.455, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.589, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.69, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.841, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704383.944, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.078, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.181, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.319, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.419, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.541, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.638, \"ph\": \"X\", \"dur\": 0.1314590125488662, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.887, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704384.999, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.118, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.214, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.37, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.48, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.609, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.707, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.859, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704385.958, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.316, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.452, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.572, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.673, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.808, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704387.914, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.038, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.141, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.266, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.371, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.495, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.595, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.734, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704388.835, \"ph\": \"X\", \"dur\": 0.1641366798048462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.161, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.294, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.424, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.523, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.657, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.755, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.889, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704389.993, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.118, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.215, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.348, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.449, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.571, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.669, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.801, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704390.902, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.027, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.122, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.257, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.361, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.479, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.586, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.707, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704391.835, \"ph\": \"X\", \"dur\": 0.35745875708259056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704392.356, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704392.503, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704392.65, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704392.784, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704392.907, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704393.011, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704393.145, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704393.265, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704394.448, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704394.591, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704394.734, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704394.842, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704394.988, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.091, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.233, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.336, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.477, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.581, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.716, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.819, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704395.949, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.056, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.193, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.303, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.431, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.535, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.669, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.773, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.892, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704396.992, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.146, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.273, \"ph\": \"X\", \"dur\": 0.12771729492413564, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.493, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.594, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.714, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.815, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704397.941, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.047, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.189, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.296, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.419, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.516, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.667, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.768, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.898, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704398.997, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.152, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.263, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.393, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.498, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.657, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.756, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.888, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704399.987, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704400.122, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.328, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.484, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.604, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.742, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.843, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704401.983, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.087, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.208, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.312, \"ph\": \"X\", \"dur\": 0.1818474765619041, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.574, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.682, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.82, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704402.923, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.044, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.144, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.285, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.386, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.508, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.603, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.74, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.836, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704403.965, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.062, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.195, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.297, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.429, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.53, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.663, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.764, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704404.899, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.091, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.226, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.329, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.463, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.568, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.704, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.802, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704405.924, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.021, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.155, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.257, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.38, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.48, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.602, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.704, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704406.823, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704408.798, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704408.936, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.066, \"ph\": \"X\", \"dur\": 0.22200857906734514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.378, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.486, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.605, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.704, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.85, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704409.954, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.092, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.189, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.329, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.429, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.566, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.671, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.801, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704410.925, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.055, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.155, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.278, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.373, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.497, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.593, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.71, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.825, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704411.963, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.061, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.205, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.33, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.45, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.549, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.67, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.766, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704412.898, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.0, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.131, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.236, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.363, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.469, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.598, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.696, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.816, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704413.916, \"ph\": \"X\", \"dur\": 0.13894244779832726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704414.161, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704414.26, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704414.386, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704414.483, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704415.774, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704415.958, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.085, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.186, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.323, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.425, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.545, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.644, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.777, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704416.907, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.028, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.124, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.26, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.364, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.496, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.602, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.729, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.836, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704417.981, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.096, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.22, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.313, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.434, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.528, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.657, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.757, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.88, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704418.978, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.109, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.207, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.336, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.433, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.555, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.649, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.769, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.865, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704419.988, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.085, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.207, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.301, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.435, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.534, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.654, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.746, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704420.903, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704421.03, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.244, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.405, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.618, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.734, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.87, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704422.978, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.114, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.212, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.336, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.43, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.552, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.672, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.786, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704423.89, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.023, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.161, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.287, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.424, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.549, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.668, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.792, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704424.913, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.049, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.158, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.279, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.385, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.512, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.616, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.736, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.841, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704425.973, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.081, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.205, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.31, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.441, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.538, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.669, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.784, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704426.925, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.026, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.153, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.256, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.376, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.473, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.598, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.698, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704427.816, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704428.947, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.127, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.233, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.375, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.474, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.616, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.717, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.88, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704429.979, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.103, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.197, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.321, \"ph\": \"X\", \"dur\": 0.13395349096535322, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.509, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.628, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.725, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.86, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704430.953, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.074, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.173, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.289, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.385, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.506, \"ph\": \"X\", \"dur\": 0.09952968881783227, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.652, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.777, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.869, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704431.995, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.089, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.216, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.311, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.445, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.542, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.679, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.777, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.899, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704432.998, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.132, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.234, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.354, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.524, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.677, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.838, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704433.956, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704434.061, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704434.188, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704434.289, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704434.428, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704435.705, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704435.89, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.018, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.155, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.311, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.434, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.541, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.661, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.755, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704436.894, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.034, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.172, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.267, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.389, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.486, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.606, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.698, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.818, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704437.94, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.076, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.174, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.321, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.449, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.582, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.728, \"ph\": \"X\", \"dur\": 0.11748993341653885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704438.953, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.096, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.23, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.365, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.487, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.606, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.737, \"ph\": \"X\", \"dur\": 0.08630895321045104, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704439.869, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.002, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.134, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.253, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.409, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.564, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.69, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.813, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704440.973, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.091, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.207, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.329, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.483, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.612, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704441.746, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704442.963, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.101, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.248, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.364, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.5, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.661, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.805, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704443.946, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704444.076, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704444.229, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704354.206, \"ph\": \"X\", \"dur\": 94.44369677445687, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995703620.801, \"ph\": \"X\", \"dur\": 828.2219622466964, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.034, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.213, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.522, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.646, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.797, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704450.956, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.09, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.248, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.362, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.508, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.728, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.866, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704451.997, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.128, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.238, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.348, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.483, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.587, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.798, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704452.955, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.089, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.235, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.368, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.513, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.632, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.735, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704453.875, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.018, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.147, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.259, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.376, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.479, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.601, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704454.706, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.217, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.37, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.52, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.632, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.766, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.872, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704456.991, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.11, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.241, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.352, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.486, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.594, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.709, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.816, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704457.944, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.05, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.213, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.327, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.46, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.566, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.755, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.86, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704458.982, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.085, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.212, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.318, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.44, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.543, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.663, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.768, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.887, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704459.993, \"ph\": \"X\", \"dur\": 0.11848772478313366, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.196, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.305, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.436, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.541, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.66, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.765, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.887, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704460.99, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.109, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.21, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.341, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.449, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.57, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.678, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704461.808, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704462.929, \"ph\": \"X\", \"dur\": 0.1234766816161077, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.168, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.279, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.424, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.532, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.662, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.771, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.893, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704463.998, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.12, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.224, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.355, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.463, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.582, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.69, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.807, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704464.909, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.028, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.134, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.255, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.361, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.496, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.605, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.726, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704465.828, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.01, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.113, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.256, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.366, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.488, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.597, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.716, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.818, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704466.959, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.063, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.184, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.298, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.416, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.525, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.644, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.752, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.876, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704467.979, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704468.117, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704468.237, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704468.369, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704468.474, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704469.693, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704469.826, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.015, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.141, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.261, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.376, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.495, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.622, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.745, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.847, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704470.972, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.075, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.212, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.326, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.444, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.547, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.679, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.792, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704471.908, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.016, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.136, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.24, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.368, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.48, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.61, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704472.736, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.042, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.151, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.286, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.39, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.527, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.632, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.762, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704473.872, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.001, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.11, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.227, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.331, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.464, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.572, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.697, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.805, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704474.932, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704475.04, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704475.163, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704475.267, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704476.466, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704476.585, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704476.719, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704476.83, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704476.992, \"ph\": \"X\", \"dur\": 0.08032220501088219, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.122, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.272, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.379, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.521, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.656, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.779, \"ph\": \"X\", \"dur\": 0.055127973004363236, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704477.884, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.08, \"ph\": \"X\", \"dur\": 0.05313239027117362, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.186, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.311, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.415, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.55, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.658, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.787, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704478.897, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.026, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.129, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.261, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.366, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.499, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.606, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.74, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.841, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704479.98, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.087, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.213, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.325, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.441, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.547, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.679, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.799, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704480.929, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.033, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.153, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.255, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.371, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.472, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.593, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704481.698, \"ph\": \"X\", \"dur\": 0.3694322534817283, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704482.157, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704482.262, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704482.381, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704483.551, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704483.681, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704483.835, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704483.963, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.076, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.206, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.315, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.448, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.555, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.675, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.78, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704484.901, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.007, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.136, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.24, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.37, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.493, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.613, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.712, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.834, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704485.94, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.075, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.181, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.311, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.417, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.542, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.646, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.766, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704486.869, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.011, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.115, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.236, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.344, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.464, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.567, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.698, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.805, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704487.992, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.093, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.236, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.341, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.462, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.567, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.685, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.796, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704488.918, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.092, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.242, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.349, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.509, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.617, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.738, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.848, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704490.985, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.115, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.254, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.361, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.495, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.603, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.723, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.831, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704491.95, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.054, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.184, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.293, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.426, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.536, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.656, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.759, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704492.893, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.001, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.121, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.225, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.375, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.481, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.611, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704493.716, \"ph\": \"X\", \"dur\": 0.19431986864433917, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.018, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.125, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.248, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.352, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.487, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.596, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.716, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.825, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704494.959, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.066, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.188, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.297, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.43, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.534, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.667, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704495.772, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704496.968, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.085, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.209, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.313, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.44, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.544, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.665, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.793, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704497.923, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.036, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.161, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.26, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.395, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.499, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.623, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.73, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.861, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704498.969, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.094, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.204, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.339, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.445, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.564, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.67, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.79, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704499.893, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.028, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.136, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.269, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.374, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.505, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.61, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.763, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.863, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704500.984, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.09, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.21, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.311, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.437, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.535, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.654, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.783, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704501.902, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704502.0, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704502.121, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704502.226, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704503.529, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704503.653, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704503.764, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704503.891, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.03, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.138, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.256, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.36, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.472, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.573, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.705, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.811, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704504.942, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.052, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.172, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.277, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.398, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.503, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.636, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.738, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.864, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704505.965, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.103, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.213, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.332, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.442, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.571, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.671, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.802, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704506.905, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.022, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.13, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.258, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.364, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.495, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.598, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.721, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.821, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704507.95, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.079, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.215, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.32, \"ph\": \"X\", \"dur\": 0.2354787625163751, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.663, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.767, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704508.902, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704509.007, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704509.129, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.261, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.407, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.521, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.662, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.765, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.886, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704510.986, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.108, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.209, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.331, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.434, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.565, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.671, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.789, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704511.891, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.024, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.13, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.262, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.382, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.508, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.612, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.73, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.83, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704512.96, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.064, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.193, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.296, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.429, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.53, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.659, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.763, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.886, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704513.991, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.114, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.212, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.345, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.455, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.583, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.688, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.811, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704514.91, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704515.031, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704515.133, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704515.255, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704515.355, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704515.482, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704518.806, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704518.974, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.131, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.275, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.439, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.58, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.689, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.855, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704519.969, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.1, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.206, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.336, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.439, \"ph\": \"X\", \"dur\": 0.11200208090026739, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.631, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.745, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.865, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704520.97, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.12, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.224, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.348, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.446, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.57, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.671, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.814, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704521.918, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.037, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.136, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.269, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.376, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.501, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.602, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.721, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704522.82, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.084, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.187, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.314, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.427, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.554, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.658, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.789, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704523.896, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.03, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.132, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.263, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.367, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.498, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704524.604, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704525.817, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704525.922, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.053, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.161, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.282, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.38, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.504, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.61, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.732, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.83, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704526.952, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.054, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.189, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.29, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.419, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.526, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.648, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.749, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.879, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704527.983, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.115, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.218, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.337, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.439, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.562, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.659, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.793, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704528.893, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.027, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.125, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.262, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.368, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.504, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.608, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.739, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.842, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704529.975, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704530.08, \"ph\": \"X\", \"dur\": 1.4607665606948015, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704531.674, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704531.831, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704531.951, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704532.064, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704532.188, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704532.291, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704532.43, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704532.533, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704533.818, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704533.931, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.065, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.167, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.33, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.44, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.563, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.693, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.82, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704534.927, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.059, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.164, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.302, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.403, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.527, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.629, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.763, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.868, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704535.988, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.093, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.226, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.329, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.462, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.572, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.693, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.806, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704536.925, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.027, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.142, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.244, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.363, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.468, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.602, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.717, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.839, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704537.94, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.063, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.185, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.317, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.424, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.543, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.644, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.764, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.867, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704538.99, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704539.089, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704539.21, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704540.356, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704540.533, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704540.643, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704540.783, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704540.883, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.018, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.123, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.249, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.346, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.482, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.583, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.702, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.802, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704541.921, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.029, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.145, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.246, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.38, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.481, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.611, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.726, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.857, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704542.961, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.079, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.181, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.361, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.472, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.594, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.698, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.828, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704543.93, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.063, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.162, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.295, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.4, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.52, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.624, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.743, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.847, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704544.979, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.082, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.215, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.32, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.449, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.553, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.674, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704545.775, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704546.969, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.124, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.257, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.361, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.48, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.584, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.705, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.803, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704547.932, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.035, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.157, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.257, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.385, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.485, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.606, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.711, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.834, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704548.933, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.066, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.186, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.3, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.403, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.539, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.648, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.778, \"ph\": \"X\", \"dur\": 0.05662466005425545, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704549.886, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.008, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.111, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.246, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.352, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.485, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.585, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.72, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.82, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704550.957, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.078, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.2, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.305, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.439, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.564, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.698, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.796, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704551.919, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704552.02, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704552.155, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704552.258, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704553.423, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704553.532, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704553.679, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704553.792, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704553.927, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.027, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.15, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.3, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.432, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.553, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.687, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.79, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704554.913, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.015, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.144, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.249, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.373, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.473, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.602, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.703, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.848, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704555.945, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.068, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.164, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.286, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.383, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.504, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.602, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.732, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.831, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704556.954, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.057, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.184, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.299, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.418, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.514, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.652, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.761, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704557.894, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.001, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.119, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.244, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.371, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.479, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.609, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.715, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704558.842, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.01, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.165, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.265, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.407, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.528, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.648, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.751, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.885, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704560.984, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.124, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.226, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.344, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.444, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.577, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.682, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.815, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704561.923, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.042, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.139, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.263, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.359, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.489, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.598, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.716, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.814, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704562.945, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.054, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.175, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.273, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.402, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.519, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.647, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.748, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.869, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704563.965, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.094, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.195, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.329, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.429, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.563, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.663, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.799, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704564.897, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704565.017, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704565.113, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704565.245, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.355, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.473, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.569, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.702, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.818, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704566.942, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.037, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.159, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.258, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.392, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.502, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.634, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.743, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.866, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704567.961, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.08, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.178, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.313, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.424, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.54, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.637, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.769, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704568.87, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.018, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.12, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.239, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.347, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.466, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.567, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.692, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.797, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704569.929, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.028, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.164, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.263, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.396, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.492, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.613, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.716, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.848, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704570.989, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.123, \"ph\": \"X\", \"dur\": 0.053631285954471024, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.226, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.34, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.434, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.573, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704571.672, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704572.852, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704572.959, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.126, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.226, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.345, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.441, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.56, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.658, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.78, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704573.877, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.001, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.097, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.23, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.327, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.444, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.606, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.726, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.83, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704574.961, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.064, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.184, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.279, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.403, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.497, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.621, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.717, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.85, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704575.949, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.079, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.188, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.318, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.418, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.544, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.652, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.783, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704576.888, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.009, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.114, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.245, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.361, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.482, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.583, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.701, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.806, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704577.924, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704578.04, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.191, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.301, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.421, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.539, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.674, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.791, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704579.937, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.042, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.176, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.283, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.415, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.51, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.64, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.745, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.877, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704580.971, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.089, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.221, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.342, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.436, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.565, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.671, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.804, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704581.903, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.031, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.128, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.25, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.346, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.47, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.617, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.75, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.851, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704582.982, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.082, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.201, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.297, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.419, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.511, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.641, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.738, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.854, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704583.949, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704584.128, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704584.22, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704584.35, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704584.448, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704584.566, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704585.697, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704585.849, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704585.948, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.082, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.186, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.304, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.402, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.532, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.631, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.764, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.873, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704586.995, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.09, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.207, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.301, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.432, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.569, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.702, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.807, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704587.932, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.037, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.157, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.281, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.403, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.516, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.648, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.756, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.887, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704588.983, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.113, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.221, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.356, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.452, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.571, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.666, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.794, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704589.886, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.01, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.174, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.297, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.421, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.545, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.689, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.82, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704590.917, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704591.051, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.175, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.317, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.434, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.605, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.743, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.872, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704592.997, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.137, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.263, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.385, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.495, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.62, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.748, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704593.887, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.02, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.144, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.236, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.374, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.481, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.603, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.724, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.868, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704594.987, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.125, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.243, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.376, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.517, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.652, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.768, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704595.911, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704596.057, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704449.742, \"ph\": \"X\", \"dur\": 149.95956117258385, \"name\": \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995702646.377, \"ph\": \"X\", \"dur\": 1953.7590608195899, \"name\": \"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704603.095, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704603.578, \"ph\": \"X\", \"dur\": 0.15016760067251886, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704604.249, \"ph\": \"X\", \"dur\": 0.12272833809116158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704604.612, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704604.881, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.055, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.216, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.343, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.451, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.579, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.708, \"ph\": \"X\", \"dur\": 0.13096011686556877, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704605.92, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704606.099, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704606.234, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704608.475, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704608.594, \"ph\": \"X\", \"dur\": 0.07134208271152889, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704608.771, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704608.902, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.031, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.142, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.263, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.364, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.485, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.604, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.785, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.888, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704609.997, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.104, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.242, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.361, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.48, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.608, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.732, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.848, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704610.967, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.112, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.236, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.357, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.511, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.634, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.752, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.854, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704611.959, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.062, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.169, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.289, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.395, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.5, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.649, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.767, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704612.887, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.03, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.148, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.253, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.38, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.518, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.641, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.764, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.865, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704613.985, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.121, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.225, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.344, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.446, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.55, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.664, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.84, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704615.941, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704616.045, \"ph\": \"X\", \"dur\": 1.5652852063456077, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704617.712, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704617.814, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.002, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.128, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.248, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.371, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.495, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.602, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.71, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.832, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704618.943, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.043, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.166, \"ph\": \"X\", \"dur\": 0.13869299995667855, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.368, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.491, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.596, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704619.721, \"ph\": \"X\", \"dur\": 0.3781629279394329, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.195, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.3, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.41, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.536, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.642, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.761, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.88, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704620.982, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.091, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.212, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.334, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.437, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.564, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.686, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.793, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704621.921, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704622.03, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704622.152, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704622.291, \"ph\": \"X\", \"dur\": 0.11200208090026739, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704622.466, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704622.573, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704623.719, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704623.826, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704623.954, \"ph\": \"X\", \"dur\": 0.09853189745123746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.133, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.241, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.348, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.478, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.613, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.718, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.827, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704624.949, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.072, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.192, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.3, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.422, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.54, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.649, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.772, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704625.892, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.015, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.135, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.238, \"ph\": \"X\", \"dur\": 0.15141483988076238, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.47, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.596, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704626.76, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.073, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.18, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.306, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.432, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.535, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.657, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.779, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704627.884, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.013, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.134, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.258, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.358, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.494, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.616, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.737, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.842, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704628.95, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704629.076, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704629.18, \"ph\": \"X\", \"dur\": 0.15615434887208773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704629.401, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704629.509, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704629.619, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704630.778, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704630.881, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704630.988, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.131, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.232, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.357, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.478, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.586, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.716, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.823, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704631.946, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.246, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.349, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.456, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.582, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.69, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.81, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704632.929, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.034, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.16, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.266, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.372, \"ph\": \"X\", \"dur\": 0.3392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.791, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704633.898, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.025, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.133, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.262, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.386, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.51, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.615, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.74, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704634.892, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.016, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.139, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.261, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.404, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.508, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.617, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.739, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.863, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704635.987, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704636.091, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704636.198, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704636.305, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704636.411, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704636.518, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704637.65, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704637.757, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704637.943, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.07, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.177, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.302, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.462, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.587, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.697, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.82, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704638.93, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.036, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.145, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.253, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.372, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.478, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.609, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.734, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.837, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704639.944, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.054, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.161, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.269, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.375, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.503, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.61, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.733, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.842, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704640.947, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.055, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.161, \"ph\": \"X\", \"dur\": 0.28362219595457466, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.527, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.634, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.759, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704641.88, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.003, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.129, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.251, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.375, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.499, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.606, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.715, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.835, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704642.962, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704643.243, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704643.365, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704643.49, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704644.727, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704644.876, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.003, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.112, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.221, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.347, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.455, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.562, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.671, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.776, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704645.896, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.017, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.125, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.251, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.376, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.481, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.605, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.71, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.838, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704646.951, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.054, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.174, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.274, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.395, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.501, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.668, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.8, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704647.902, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.009, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.111, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.218, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.342, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.461, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.56, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.683, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.805, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704648.906, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.013, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.132, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.247, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.344, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.455, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.558, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.663, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.767, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704649.883, \"ph\": \"X\", \"dur\": 0.17336624994584818, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.161, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.283, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.402, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.527, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.649, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.752, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.873, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704651.978, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.082, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.187, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.291, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.44, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.565, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.682, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.805, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704652.934, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.053, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.157, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.263, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.382, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.512, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.615, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.737, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.858, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704653.997, \"ph\": \"X\", \"dur\": 0.18060023735366057, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.25, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.353, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.478, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.582, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.71, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.818, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704654.931, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.033, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.161, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.283, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.405, \"ph\": \"X\", \"dur\": 0.1436819567896526, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.629, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.733, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.862, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704655.965, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.068, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.189, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.314, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.437, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.558, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.662, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704656.764, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.021, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.144, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.285, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.395, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.512, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.622, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.721, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.854, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704658.975, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.077, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.182, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.307, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.428, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.53, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.655, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.756, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.864, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704659.97, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.095, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.217, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.319, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.427, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.532, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.638, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.759, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704660.877, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.0, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.096, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.205, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.327, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.447, \"ph\": \"X\", \"dur\": 0.07982330932758477, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.604, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.705, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.829, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704661.948, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.052, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.17, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.272, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.378, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.481, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.606, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.725, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704662.845, \"ph\": \"X\", \"dur\": 0.13594907369854284, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704663.042, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704663.15, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704663.258, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704664.432, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704664.586, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704664.723, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704664.846, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704664.964, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.071, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.178, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.302, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.422, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.547, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.652, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.758, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.864, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704665.987, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.108, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.21, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.319, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.441, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.565, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.678, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.795, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704666.937, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.059, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.182, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.303, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.422, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.526, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.648, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.755, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.857, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704667.966, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.072, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.192, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.296, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.403, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.522, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.631, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704668.733, \"ph\": \"X\", \"dur\": 0.16064441002176438, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.003, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.105, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.211, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.314, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.444, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.562, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.665, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.772, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704669.897, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.069, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.188, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.334, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.45, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.559, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.689, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.814, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704671.94, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.066, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.207, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.325, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.447, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.55, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.672, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.791, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704672.893, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.0, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.105, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.252, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.375, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.482, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.587, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.695, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704673.818, \"ph\": \"X\", \"dur\": 0.1853397463449859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.081, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.188, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.312, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.43, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.535, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.642, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.75, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.87, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704674.973, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.092, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.196, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.317, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.417, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.524, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.63, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.751, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.87, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704675.992, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704676.097, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704676.219, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704676.326, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704676.444, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704677.565, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704677.686, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704677.804, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704677.91, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.014, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.138, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.236, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.4, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.498, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.622, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.744, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.861, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704678.964, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.082, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.184, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.304, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.421, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.525, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.63, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.752, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.869, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704679.974, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704680.41, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704680.654, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704680.897, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.088, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.212, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.334, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.453, \"ph\": \"X\", \"dur\": 0.1456775395228422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.672, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.795, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704681.902, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.007, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.132, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.259, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.378, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.484, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.67, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.788, \"ph\": \"X\", \"dur\": 0.1125009765835648, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704682.964, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.064, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.185, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.306, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.464, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.568, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.67, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704683.798, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.152, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.266, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.366, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.507, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.624, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.741, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704685.86, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.0, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.103, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.224, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.388, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.525, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.632, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.734, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.839, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704686.962, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.073, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.189, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.291, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.395, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.515, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.617, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.72, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.822, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704687.943, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.06, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.223, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.361, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.475, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.578, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.715, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.817, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704688.927, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.042, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.15, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.273, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.395, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.5, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.62, \"ph\": \"X\", \"dur\": 0.12622060787424344, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.805, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704689.928, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704690.047, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704690.165, \"ph\": \"X\", \"dur\": 0.12173054672456678, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704690.365, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704690.468, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704690.595, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704691.749, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704691.886, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704691.993, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.099, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.205, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.313, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.428, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.535, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.656, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.759, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704692.869, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.037, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.157, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.258, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.387, \"ph\": \"X\", \"dur\": 0.1239755772994051, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.591, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.693, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.796, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704693.901, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.028, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.147, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.254, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.357, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.479, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.595, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.698, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.806, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704694.911, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.012, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.119, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.24, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.344, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.517, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.622, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.727, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.835, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704695.94, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.069, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.17, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.315, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.436, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.537, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.709, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.81, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704696.931, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704697.036, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704697.139, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.33, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.452, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.557, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.662, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.788, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704698.898, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.006, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.13, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.253, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.357, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.482, \"ph\": \"X\", \"dur\": 0.13969079132327336, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.7, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.805, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704699.929, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.045, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.335, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.458, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.578, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.696, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.8, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704700.903, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.029, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.151, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.267, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.374, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.492, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.615, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.718, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.839, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704701.944, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.048, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.166, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.273, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.393, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.522, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.619, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.727, \"ph\": \"X\", \"dur\": 0.1631388884382514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704702.968, \"ph\": \"X\", \"dur\": 0.12721839924083825, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.155, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.259, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.385, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.484, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.592, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.717, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.838, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704703.942, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704704.067, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704705.934, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.077, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.197, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.301, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.404, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.513, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.637, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.761, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704706.881, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.008, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.127, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.229, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.353, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.457, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.578, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.679, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.784, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704707.907, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.009, \"ph\": \"X\", \"dur\": 0.20030661684390805, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.287, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.404, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.51, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.614, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.738, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.84, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704708.964, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.071, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.176, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.356, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.46, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.567, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.674, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.775, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704709.895, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.011, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.133, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.253, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.357, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.478, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.584, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.688, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.792, \"ph\": \"X\", \"dur\": 0.11449655931675441, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704710.982, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704711.102, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704711.222, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704711.329, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704712.588, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704712.692, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704712.823, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704712.966, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.085, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.203, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.311, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.419, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.536, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.64, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.758, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704713.876, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.197, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.349, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.565, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.728, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.849, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.006, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.111, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.217, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.372, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.498, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.603, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.727, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.828, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704715.952, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.055, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.2, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.321, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.473, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.579, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.7, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.803, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704716.905, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.009, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.115, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.263, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.384, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.504, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.605, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.753, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.854, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704717.958, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704718.083, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704718.183, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704718.289, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704718.395, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704719.561, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704719.712, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704719.837, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704719.942, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.045, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.176, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.279, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.405, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.525, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.629, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.749, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.852, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704720.973, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.119, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.221, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.329, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.434, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.541, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.714, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.831, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704721.933, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.039, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.146, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.267, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.363, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.47, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.576, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.696, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.798, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704722.917, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.022, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.183, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.303, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.425, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.532, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.656, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.763, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704723.88, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.004, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.103, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.208, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.312, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.432, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.533, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.637, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704724.764, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704725.868, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704725.975, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.079, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.188, \"ph\": \"X\", \"dur\": 0.09952968881783227, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.352, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.476, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.585, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.692, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.811, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704726.917, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.018, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.145, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.243, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.35, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.469, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.621, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.724, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.831, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704727.937, \"ph\": \"X\", \"dur\": 0.11873717262478237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.116, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.221, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.329, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.433, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.555, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.67, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.907, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.033, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.226, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.373, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.497, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.619, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.724, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704729.87, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.033, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.139, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.263, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.382, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.5, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.654, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.756, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.858, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704730.967, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704731.073, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704731.178, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704731.281, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704731.406, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704731.506, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704732.739, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704732.89, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.051, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.17, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.276, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.383, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.49, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.615, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.733, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.855, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704733.96, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.063, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.165, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.295, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.506, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.589, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.751, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.897, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.014, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.12, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.224, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.383, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.484, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.591, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.696, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.836, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704735.935, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.041, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.147, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.253, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.355, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.458, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.566, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.719, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.82, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704736.922, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.025, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.13, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.235, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.339, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.442, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.638, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704737.614, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704738.21, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704738.292, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704738.488, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704739.663, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704739.786, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704739.911, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.053, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.159, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.324, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.43, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.54, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.645, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.781, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704740.889, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.001, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.108, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.238, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.345, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.469, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.592, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.717, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.833, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704741.965, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.075, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.183, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.288, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.482, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.562, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.721, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.85, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.958, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.084, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.232, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.338, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.446, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.552, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.688, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.811, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704743.916, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.051, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.154, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.262, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.391, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.52, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.64, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.761, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.864, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704744.987, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704745.18, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704745.276, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704746.618, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704746.767, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704746.888, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704746.993, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.101, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.229, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.334, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.442, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.55, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.679, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.786, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.999, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.082, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.232, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.381, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.502, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.606, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.716, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.863, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704748.993, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.122, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.253, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.361, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.528, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.608, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.828, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704750.097, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.998, \"ph\": \"X\", \"dur\": 0.2040483344686386, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704750.523, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704750.468, \"ph\": \"X\", \"dur\": 0.1464258830477883, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704749.496, \"ph\": \"X\", \"dur\": 1.2602104960092446, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.143, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.244, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.44, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.584, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.691, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.82, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.97, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.095, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.197, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.401, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.477, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.653, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.775, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.912, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704753.014, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.271, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.372, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.687, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.819, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.004, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.078, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.327, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.498, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.469, \"ph\": \"X\", \"dur\": 0.11948551614972847, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.821, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704755.795, \"ph\": \"X\", \"dur\": 0.11798882909983625, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.957, \"ph\": \"X\", \"dur\": 1.0773652280807458, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704756.242, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704756.216, \"ph\": \"X\", \"dur\": 0.11724048557489014, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704754.207, \"ph\": \"X\", \"dur\": 2.240041618005348, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704756.739, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704756.713, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704752.376, \"ph\": \"X\", \"dur\": 4.537206791748249, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.157, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.253, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.444, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.628, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.586, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.89, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.865, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704757.13, \"ph\": \"X\", \"dur\": 0.9942990968117279, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704751.118, \"ph\": \"X\", \"dur\": 7.207047040914311, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704747.973, \"ph\": \"X\", \"dur\": 10.55812934562298, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704758.76, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704758.736, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704745.155, \"ph\": \"X\", \"dur\": 13.820907114388007, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.174, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.273, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.436, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.542, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.647, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.757, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.881, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.014, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.174, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.336, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.414, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.574, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.683, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.787, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.896, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704761.059, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.19, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.366, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.497, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.643, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.807, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704762.779, \"ph\": \"X\", \"dur\": 0.1254722643492973, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.07, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.181, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.356, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.548, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.491, \"ph\": \"X\", \"dur\": 0.14243471758140908, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.798, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.767, \"ph\": \"X\", \"dur\": 0.12272833809116158, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704763.042, \"ph\": \"X\", \"dur\": 0.9451578720069336, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704761.033, \"ph\": \"X\", \"dur\": 3.108120106942832, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704764.339, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704764.308, \"ph\": \"X\", \"dur\": 0.12023385967467458, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704760.31, \"ph\": \"X\", \"dur\": 4.212675149763287, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704764.725, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704764.827, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704765.023, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704765.201, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704765.178, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704765.439, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704765.415, \"ph\": \"X\", \"dur\": 0.11549435068334922, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704764.7, \"ph\": \"X\", \"dur\": 0.9259503881999834, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704759.149, \"ph\": \"X\", \"dur\": 6.6006393378663155, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704742.458, \"ph\": \"X\", \"dur\": 23.863677219164764, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704766.562, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704766.644, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704766.814, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704766.921, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704767.112, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704767.086, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704767.339, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704767.315, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704766.535, \"ph\": \"X\", \"dur\": 0.9583786076143148, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704738.183, \"ph\": \"X\", \"dur\": 29.749149595024253, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704734.46, \"ph\": \"X\", \"dur\": 33.70938352903905, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.401, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.482, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.668, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.794, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.902, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704769.029, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704769.155, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.337, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.471, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.673, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.78, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.93, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.059, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.217, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.298, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.468, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.649, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.623, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.919, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.892, \"ph\": \"X\", \"dur\": 0.12647005571589212, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704771.192, \"ph\": \"X\", \"dur\": 0.9042484259765463, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.307, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.28, \"ph\": \"X\", \"dur\": 0.12422502514105381, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704770.646, \"ph\": \"X\", \"dur\": 1.8548941504997514, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.726, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.8, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.954, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.089, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.214, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.38, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.354, \"ph\": \"X\", \"dur\": 0.11499545500005182, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.627, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.728, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.897, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.019, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.182, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.289, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.484, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.651, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.624, \"ph\": \"X\", \"dur\": 0.12996232549897396, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.902, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.877, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704774.156, \"ph\": \"X\", \"dur\": 0.9214603270503068, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704775.257, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704775.231, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704773.603, \"ph\": \"X\", \"dur\": 1.800763968861983, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704772.682, \"ph\": \"X\", \"dur\": 2.876881957734485, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704768.375, \"ph\": \"X\", \"dur\": 7.331770961738662, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704728.857, \"ph\": \"X\", \"dur\": 47.07205495831839, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.24, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.336, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.532, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.658, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.813, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704777.948, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.053, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.174, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.3, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.423, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.544, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.721, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.869, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704778.977, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.083, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.188, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.317, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.421, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.544, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.649, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.769, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704779.875, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.0, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.119, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.221, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.348, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.506, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.625, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.728, \"ph\": \"X\", \"dur\": 0.08531116184385623, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.874, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704780.98, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.101, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.203, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.308, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.415, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.524, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.626, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.732, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.837, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704781.987, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.092, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.197, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.302, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.424, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.524, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.634, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.738, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704782.924, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704783.044, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704783.15, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704783.261, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704783.366, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704784.498, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704784.628, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704784.734, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704784.85, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704784.956, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.137, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.241, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.351, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.457, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.56, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.681, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.801, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704785.913, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.021, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.127, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.234, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.343, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.465, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.688, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.803, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.957, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.109, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.226, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.35, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.472, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.592, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.768, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.871, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704787.995, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.114, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.234, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.335, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.457, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.589, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.695, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.833, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.013, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.093, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.261, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.371, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.491, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.614, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.722, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.865, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704789.98, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704790.104, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.261, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.389, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.582, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.665, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.813, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.94, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.083, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.19, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.292, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.399, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.549, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.709, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.786, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.986, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.149, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.122, \"ph\": \"X\", \"dur\": 0.11499545500005182, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.384, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.358, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704792.684, \"ph\": \"X\", \"dur\": 0.8610939493713208, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.761, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.837, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.005, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.154, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.257, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.382, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.569, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.543, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.775, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.876, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.051, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.176, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.335, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.41, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.555, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.719, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.694, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.949, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.91, \"ph\": \"X\", \"dur\": 0.12746784708248693, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704795.309, \"ph\": \"X\", \"dur\": 0.7984825411174965, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704796.288, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704796.264, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704794.751, \"ph\": \"X\", \"dur\": 1.736156977874969, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704793.735, \"ph\": \"X\", \"dur\": 2.870396313851619, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704791.553, \"ph\": \"X\", \"dur\": 5.17903608831036, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704796.916, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704796.995, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704797.21, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704798.454, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704798.403, \"ph\": \"X\", \"dur\": 0.15191373556405977, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704798.72, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704798.691, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704796.891, \"ph\": \"X\", \"dur\": 1.9883487457818072, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704788.988, \"ph\": \"X\", \"dur\": 10.054743601175899, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.262, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.344, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.534, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.662, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.771, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.88, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.043, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.151, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.293, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.423, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.543, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.714, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.794, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.943, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.109, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.084, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.377, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.337, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.688, \"ph\": \"X\", \"dur\": 0.8448798396641551, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.676, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704801.651, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704800.016, \"ph\": \"X\", \"dur\": 1.839927280000829, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704802.066, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704802.043, \"ph\": \"X\", \"dur\": 0.12148109888291808, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704799.233, \"ph\": \"X\", \"dur\": 3.0190672274742454, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704786.664, \"ph\": \"X\", \"dur\": 16.3208733833913, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.235, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.313, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.445, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.575, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.719, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.846, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.949, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.05, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.156, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.329, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.451, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.569, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.671, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704804.779, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704805.943, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.087, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.191, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.299, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.409, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.518, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.645, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.822, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704806.929, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.049, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.152, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.315, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.419, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.527, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.632, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.734, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.842, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704807.969, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.067, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.219, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.323, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.428, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.533, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.642, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.745, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.867, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704808.983, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.084, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.19, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.369, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.474, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.6, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.734, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.842, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704809.966, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.071, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.172, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.295, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.475, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.553, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.687, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.815, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.938, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704811.061, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704811.182, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704811.306, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704811.454, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704813.396, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704813.539, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704813.664, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704813.835, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.05, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.131, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.303, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.428, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.537, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.667, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.796, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.956, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.058, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.162, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.328, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.3, \"ph\": \"X\", \"dur\": 0.12222944240786418, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.572, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.667, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.808, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.916, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.019, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.147, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.292, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.396, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.538, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.7, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.777, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.946, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.109, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.084, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.358, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.333, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704816.674, \"ph\": \"X\", \"dur\": 0.8578511274298877, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.719, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.8, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.956, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.074, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.221, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.323, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.491, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.592, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.718, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.822, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.951, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704819.132, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704819.21, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704820.525, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704820.71, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704820.684, \"ph\": \"X\", \"dur\": 0.1244744729827025, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704820.952, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704820.924, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704819.106, \"ph\": \"X\", \"dur\": 1.997827763764458, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704821.269, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704821.244, \"ph\": \"X\", \"dur\": 0.11823827694148495, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704818.466, \"ph\": \"X\", \"dur\": 2.97591275086902, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704821.64, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704821.616, \"ph\": \"X\", \"dur\": 0.11549435068334922, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704817.695, \"ph\": \"X\", \"dur\": 4.100174173179722, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704815.548, \"ph\": \"X\", \"dur\": 6.355931005208937, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704814.011, \"ph\": \"X\", \"dur\": 8.047686267270437, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.258, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.34, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.508, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.672, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.649, \"ph\": \"X\", \"dur\": 0.11599324636664662, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.893, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.868, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704822.232, \"ph\": \"X\", \"dur\": 0.7905002101847379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704810.449, \"ph\": \"X\", \"dur\": 12.714107040992713, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.353, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.435, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.576, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.7, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.852, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.962, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.065, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.172, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.318, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.446, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.55, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.655, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.76, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704824.926, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.03, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.134, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.241, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.369, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.484, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.591, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.697, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.804, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704825.939, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704826.048, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.224, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.345, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.461, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.57, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.674, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.78, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704827.886, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.031, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.141, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.267, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.439, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.545, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.667, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.772, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704828.881, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.09, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.192, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.363, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.488, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.614, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.719, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.828, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.99, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.966, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.198, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.303, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.45, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.556, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.701, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.894, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.862, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.122, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.217, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.396, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.579, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.552, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.811, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.786, \"ph\": \"X\", \"dur\": 0.11399766363345701, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704831.097, \"ph\": \"X\", \"dur\": 0.8795530896533247, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704830.171, \"ph\": \"X\", \"dur\": 1.9788697277991565, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704829.045, \"ph\": \"X\", \"dur\": 3.2642744558149204, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.538, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.617, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.746, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.856, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.962, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.125, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.271, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.396, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.547, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.673, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.794, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704834.917, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.062, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.165, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.265, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.372, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.479, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.603, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.721, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.822, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704835.929, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.079, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.175, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.28, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.384, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.489, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.592, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.702, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.803, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704836.967, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.066, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.171, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.356, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.473, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.637, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.742, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.866, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.992, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.116, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.218, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.368, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.49, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.592, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.708, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.809, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704838.929, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.031, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.155, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.292, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.398, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.499, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704839.604, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704840.826, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704840.969, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.106, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.221, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.343, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.463, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.571, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.69, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.811, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.991, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.113, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.241, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.391, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.529, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.648, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.751, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704842.857, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.007, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.141, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.267, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.371, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.476, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.603, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.729, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.831, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.006, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.1, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.256, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.364, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.522, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.497, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.746, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.841, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.012, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.171, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.146, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.371, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.348, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704844.718, \"ph\": \"X\", \"dur\": 0.8296635213235843, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704843.982, \"ph\": \"X\", \"dur\": 1.7134572242849369, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.887, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.965, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704846.092, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704846.201, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704846.309, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704846.432, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704847.567, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704847.692, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704847.823, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704847.927, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.033, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.138, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.329, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.454, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.598, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.711, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.837, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.979, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.096, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.212, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.334, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.438, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.634, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.731, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.892, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.014, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.189, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.162, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.414, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.388, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704849.606, \"ph\": \"X\", \"dur\": 0.9626192209223428, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.77, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.848, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.986, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.092, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.203, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.313, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.492, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.467, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.709, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.805, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.945, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.066, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.192, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.357, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.451, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.618, \"ph\": \"X\", \"dur\": 0.05762245142085026, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.829, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.767, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704853.027, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704853.001, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704852.331, \"ph\": \"X\", \"dur\": 0.8266701472237998, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704853.344, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704853.32, \"ph\": \"X\", \"dur\": 1.1117890302282667, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704851.685, \"ph\": \"X\", \"dur\": 2.8816214667258104, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704850.744, \"ph\": \"X\", \"dur\": 3.9771963872469116, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704848.303, \"ph\": \"X\", \"dur\": 6.562723265935713, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.084, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.041, \"ph\": \"X\", \"dur\": 0.12572171219094602, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704845.863, \"ph\": \"X\", \"dur\": 9.404682525839378, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704841.967, \"ph\": \"X\", \"dur\": 13.462949461622118, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.641, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.725, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.857, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.972, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.078, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.203, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.359, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.481, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.609, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.715, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.866, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704856.973, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.096, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.26, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.336, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.479, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.621, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.752, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.903, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.981, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.105, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.239, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.399, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.374, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.624, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.725, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.867, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.029, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.007, \"ph\": \"X\", \"dur\": 0.11050539385037517, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.249, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.222, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704858.598, \"ph\": \"X\", \"dur\": 0.8077121112584984, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.878, \"ph\": \"X\", \"dur\": 1.6540886379725457, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.722, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704859.696, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704857.234, \"ph\": \"X\", \"dur\": 2.678321475782118, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704860.087, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704860.165, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704860.319, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704861.472, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704861.632, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704861.755, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704861.862, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704861.991, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.176, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.277, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.406, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.544, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.714, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.68, \"ph\": \"X\", \"dur\": 0.1317084603905149, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.968, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.066, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.23, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.406, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.381, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.619, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704863.593, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.936, \"ph\": \"X\", \"dur\": 0.8226789817574206, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704862.148, \"ph\": \"X\", \"dur\": 1.751123848373891, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.084, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.161, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.315, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.433, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.612, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.712, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.872, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.029, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.004, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.236, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.206, \"ph\": \"X\", \"dur\": 0.12197999456621549, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.585, \"ph\": \"X\", \"dur\": 0.848372109447237, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.581, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704865.549, \"ph\": \"X\", \"dur\": 0.12796674276578435, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704864.057, \"ph\": \"X\", \"dur\": 1.6892607836450129, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704860.061, \"ph\": \"X\", \"dur\": 5.800660109698926, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704855.615, \"ph\": \"X\", \"dur\": 10.403471683800785, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704837.33, \"ph\": \"X\", \"dur\": 28.84440227336441, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.492, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.567, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.74, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.903, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.876, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704867.117, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704867.091, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704866.464, \"ph\": \"X\", \"dur\": 0.7782772659439515, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704832.491, \"ph\": \"X\", \"dur\": 35.930467111079096, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704823.329, \"ph\": \"X\", \"dur\": 45.80286434000979, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704803.208, \"ph\": \"X\", \"dur\": 66.20171103867408, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704776.215, \"ph\": \"X\", \"dur\": 93.63523631967344, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704714.144, \"ph\": \"X\", \"dur\": 156.07053439729376, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704870.956, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.06, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.261, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.408, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.554, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.676, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.802, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704871.924, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.116, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.241, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.36, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.5, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.623, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.77, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704872.929, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.055, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.175, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.297, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.42, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.552, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.672, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.796, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704873.953, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.071, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.192, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.307, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.429, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.546, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.668, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.788, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704874.937, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.076, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.223, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.368, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.487, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.609, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.731, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704875.854, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704876.016, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704876.136, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704876.257, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704876.374, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704877.61, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704877.745, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704877.865, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.018, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.228, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.342, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.469, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.588, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.713, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.829, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704878.949, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.072, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.189, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.309, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.436, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.557, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.71, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.827, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704879.977, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.091, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.211, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.332, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.456, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.576, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.7, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.82, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704880.961, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.095, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.212, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.409, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.535, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.654, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704881.777, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.038, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.155, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.273, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.404, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.519, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.646, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.774, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704882.933, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704883.072, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704883.203, \"ph\": \"X\", \"dur\": 0.24944784164870243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704883.528, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704883.646, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704883.767, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704884.913, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.039, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.172, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.295, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.413, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.533, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.648, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.767, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704885.884, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.01, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.227, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.343, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.465, \"ph\": \"X\", \"dur\": 0.10826036327553686, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.649, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.791, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704886.927, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.057, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.177, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.299, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.422, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.547, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.666, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.784, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704887.905, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.037, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.195, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.36, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.503, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.619, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.814, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.939, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.128, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.254, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.376, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.498, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.646, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.828, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704889.945, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.086, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.304, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.406, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.56, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.704, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.848, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.981, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704891.12, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704891.253, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704892.451, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704892.656, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704892.769, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704892.899, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.04, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.146, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.329, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.407, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.538, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.672, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.866, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.838, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.121, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.091, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704893.285, \"ph\": \"X\", \"dur\": 0.9823256004125901, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.461, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.435, \"ph\": \"X\", \"dur\": 0.11399766363345701, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704892.631, \"ph\": \"X\", \"dur\": 2.0080551252720547, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.869, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.946, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.105, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.234, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.454, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.425, \"ph\": \"X\", \"dur\": 0.12946342981567657, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.694, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704895.67, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704894.844, \"ph\": \"X\", \"dur\": 0.9905573791869973, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704890.262, \"ph\": \"X\", \"dur\": 5.72507741367937, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.191, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.165, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704888.785, \"ph\": \"X\", \"dur\": 7.603918556977396, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.605, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.684, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.841, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.954, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.112, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.247, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.362, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.484, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.6, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.713, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.858, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704897.96, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704898.113, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704898.214, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704898.321, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704899.556, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704899.755, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704899.882, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.006, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.115, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.236, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.346, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.45, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.555, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.672, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.801, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704900.955, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.058, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.158, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.264, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.384, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.501, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.666, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.771, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.891, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704901.991, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.111, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.231, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.348, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.453, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.609, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.724, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.829, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704902.932, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.032, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.136, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.24, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.344, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.523, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.627, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.733, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.836, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704903.939, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.044, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.176, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.294, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.397, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.561, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.678, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.781, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.883, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704904.987, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.125, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.245, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.405, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.505, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.607, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.726, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.828, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704906.948, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.071, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.173, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.278, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.386, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.57, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.688, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.79, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704907.896, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.014, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.139, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.242, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.349, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.452, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.559, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.677, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.779, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704908.903, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.021, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.124, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.227, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.331, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.52, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.631, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.735, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.838, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704909.941, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.064, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.187, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.291, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.398, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.501, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.605, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.705, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.81, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704910.914, \"ph\": \"X\", \"dur\": 0.2506950808569459, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704911.244, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704911.343, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704911.521, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704912.625, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704912.81, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704912.936, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704913.086, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704913.201, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704928.461, \"ph\": \"X\", \"dur\": 0.17860465462047093, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704928.898, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704929.203, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704929.436, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704929.632, \"ph\": \"X\", \"dur\": 0.1756112805206865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704929.989, \"ph\": \"X\", \"dur\": 0.12796674276578435, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704930.261, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704930.441, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704930.604, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704930.783, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704930.924, \"ph\": \"X\", \"dur\": 0.12597116003259473, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.178, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.303, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.442, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.536, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.66, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.777, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704931.902, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.034, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.14, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.247, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.353, \"ph\": \"X\", \"dur\": 0.12746784708248693, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.597, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.698, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.819, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704932.939, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.057, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.2, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.302, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.423, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.522, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.622, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.728, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.833, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704933.937, \"ph\": \"X\", \"dur\": 0.12048330751632327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.142, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.24, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.363, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.497, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.662, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.788, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704934.927, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704937.593, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704937.772, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704937.89, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.029, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.21, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.316, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.441, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.562, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.66, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704938.765, \"ph\": \"X\", \"dur\": 0.1968143470608262, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.03, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.133, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.24, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.342, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.444, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.549, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.654, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.758, \"ph\": \"X\", \"dur\": 0.12896453413237915, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704939.955, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.057, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.158, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.264, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.367, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.465, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.568, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.676, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.785, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.89, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704940.992, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704941.096, \"ph\": \"X\", \"dur\": 0.14093803053151685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704941.311, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704941.826, \"ph\": \"X\", \"dur\": 0.1239755772994051, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704942.105, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704942.583, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704942.744, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704942.875, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704942.993, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.111, \"ph\": \"X\", \"dur\": 0.1334545952820558, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.321, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.422, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.526, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.63, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.788, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.889, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704943.997, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704944.102, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704945.34, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704945.48, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704945.625, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704945.736, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704945.901, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.006, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.108, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.215, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.358, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.457, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.56, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.659, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.825, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704946.93, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.03, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.133, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.234, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.339, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.441, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.546, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.729, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.832, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704947.944, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.049, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.153, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.255, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.361, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.465, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.643, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.761, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704948.905, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.01, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.113, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.216, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.317, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.438, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.536, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.671, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.77, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.039, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.168, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.373, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.53, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.753, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.863, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704951.134, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704951.382, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704951.358, \"ph\": \"X\", \"dur\": 1.3417799402283703, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704953.194, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704953.131, \"ph\": \"X\", \"dur\": 0.25693127689816353, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704950.716, \"ph\": \"X\", \"dur\": 2.8172639235804455, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704953.846, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704953.793, \"ph\": \"X\", \"dur\": 0.1958165556942314, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704949.98, \"ph\": \"X\", \"dur\": 4.141582514893407, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.326, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.508, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.684, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.819, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.961, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.065, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.172, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.387, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.496, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.6, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.697, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.888, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704955.987, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.093, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.198, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.3, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.405, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.516, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.619, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.784, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.888, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704956.993, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.09, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.191, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.293, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.395, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.498, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.634, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.736, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.842, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704957.944, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.063, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.165, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.267, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.369, \"ph\": \"X\", \"dur\": 0.09853189745123746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.528, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.632, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.735, \"ph\": \"X\", \"dur\": 0.06011692983733729, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.855, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704958.958, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.26, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.409, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.519, \"ph\": \"X\", \"dur\": 0.13844355211502987, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.731, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.836, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704961.944, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.048, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.153, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.272, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.451, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.639, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.745, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.879, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.014, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.129, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.245, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.363, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.481, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.583, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.76, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.875, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704963.994, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.097, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.2, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.379, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.483, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.587, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.689, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.793, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704964.899, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.007, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.122, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.248, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.383, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.486, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.589, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.712, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.886, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704965.989, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.094, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.198, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.33, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.487, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.591, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.697, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704966.815, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.067, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.196, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.32, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.446, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.551, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.676, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.783, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704968.963, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.068, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.19, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.36, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.488, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.678, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.781, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.97, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.095, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.219, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.344, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.465, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.569, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.687, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.845, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.002, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.111, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.303, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.486, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.461, \"ph\": \"X\", \"dur\": 0.14068858268986817, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.808, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704971.767, \"ph\": \"X\", \"dur\": 0.1332051474404071, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704970.976, \"ph\": \"X\", \"dur\": 1.0476809349245502, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.222, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.329, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.489, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.616, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.735, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.837, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.941, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.122, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.092, \"ph\": \"X\", \"dur\": 0.11748993341653885, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.369, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.47, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.633, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.777, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.909, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704974.089, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704974.065, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704974.33, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704975.501, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704975.757, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704975.972, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704975.945, \"ph\": \"X\", \"dur\": 0.12696895139918954, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704976.22, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704976.181, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704974.303, \"ph\": \"X\", \"dur\": 2.0951124220074515, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704973.332, \"ph\": \"X\", \"dur\": 3.2687645169645965, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704972.184, \"ph\": \"X\", \"dur\": 4.536209000381654, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704969.651, \"ph\": \"X\", \"dur\": 7.236481886228858, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.143, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.243, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.493, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.617, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.745, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.864, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.985, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.178, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.3, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.421, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.521, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.666, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.774, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.878, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704978.979, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.085, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.188, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.295, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.393, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.565, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.666, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.77, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.871, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704979.972, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.076, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.198, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.354, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.453, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.607, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.728, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.829, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704980.948, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704981.049, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704981.157, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704981.257, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704981.358, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704982.536, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704982.715, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704982.91, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.022, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.189, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.309, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.431, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.571, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.674, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.777, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704983.931, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.032, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.136, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.26, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.362, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.467, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.589, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.741, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.842, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704984.963, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.122, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.244, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.36, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.459, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.581, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.697, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.795, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704985.896, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.034, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.139, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.245, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.362, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.462, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.576, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.675, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.865, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.947, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.115, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.224, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.327, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.431, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.535, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.73, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.835, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.998, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704987.972, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704988.247, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704989.524, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704989.721, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704989.869, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704989.994, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.116, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.221, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.329, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.55, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.525, \"ph\": \"X\", \"dur\": 0.11399766363345701, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.773, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.879, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.006, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.13, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.28, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.384, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.588, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.685, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.858, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.025, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.999, \"ph\": \"X\", \"dur\": 0.20779005209336912, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.339, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.312, \"ph\": \"X\", \"dur\": 0.11848772478313366, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704991.541, \"ph\": \"X\", \"dur\": 0.9878134529288616, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.679, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.761, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.93, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704993.099, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704993.07, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704993.337, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704993.312, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704992.653, \"ph\": \"X\", \"dur\": 0.8443809439808577, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704990.741, \"ph\": \"X\", \"dur\": 2.9068156987323297, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704988.222, \"ph\": \"X\", \"dur\": 5.57690539574004, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704986.837, \"ph\": \"X\", \"dur\": 7.1065195607298834, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.172, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.271, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.442, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.55, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.666, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.772, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.88, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704995.04, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704995.142, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704995.246, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704995.348, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704995.491, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704996.665, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704996.795, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704996.908, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.015, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.122, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.227, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.333, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.465, \"ph\": \"X\", \"dur\": 0.13545017801524542, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.659, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.778, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.88, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704997.988, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.154, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.25, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.45, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.637, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.591, \"ph\": \"X\", \"dur\": 0.12946342981567657, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.886, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.839, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704998.126, \"ph\": \"X\", \"dur\": 0.9466545590568257, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.239, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.325, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.497, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.606, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.71, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.819, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.923, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.05, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.153, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.26, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.36, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.482, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.586, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.692, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.797, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705000.899, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.003, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.105, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.212, \"ph\": \"X\", \"dur\": 0.10102637586772448, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.374, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.477, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.637, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.611, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.902, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705002.018, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705002.186, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705002.293, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705003.479, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705003.62, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705003.742, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705003.872, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705003.978, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.084, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.193, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.319, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.425, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.531, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.635, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.739, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.841, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705004.944, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.047, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.216, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.415, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.388, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.618, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.726, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.861, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.003, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.131, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.258, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.362, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.492, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.615, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.741, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705006.861, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.045, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.171, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.297, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.42, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.521, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.639, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.756, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705007.878, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.056, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.154, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.291, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.415, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.549, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.651, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.756, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.863, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.999, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.133, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.275, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.493, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.679, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.85, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.978, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.101, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.207, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.313, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.417, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.61, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.692, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.887, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.011, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.114, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.304, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.377, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.736, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.84, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.025, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.972, \"ph\": \"X\", \"dur\": 0.1344523866486506, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.294, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.393, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.653, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.951, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.866, \"ph\": \"X\", \"dur\": 0.18783422476147293, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705014.271, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705014.243, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705013.267, \"ph\": \"X\", \"dur\": 1.1499545500005182, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705012.25, \"ph\": \"X\", \"dur\": 2.331090080207124, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705014.768, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705014.741, \"ph\": \"X\", \"dur\": 0.11948551614972847, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705011.553, \"ph\": \"X\", \"dur\": 3.409203651812816, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.258, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.337, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.594, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.793, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.749, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.998, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.973, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705015.232, \"ph\": \"X\", \"dur\": 0.8972638864103826, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705010.419, \"ph\": \"X\", \"dur\": 5.851298021553613, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705016.497, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705016.575, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705016.831, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705017.023, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705017.0, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705018.434, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705018.407, \"ph\": \"X\", \"dur\": 0.11474600715840312, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705016.446, \"ph\": \"X\", \"dur\": 2.1382668986126774, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705008.032, \"ph\": \"X\", \"dur\": 10.695325658529766, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705018.932, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.04, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.24, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.357, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.49, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.592, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.699, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.834, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.012, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705019.986, \"ph\": \"X\", \"dur\": 0.1137482157918083, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.245, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.344, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.541, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.669, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.799, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.909, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.016, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.195, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.271, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.419, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.525, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.716, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.69, \"ph\": \"X\", \"dur\": 0.11474600715840312, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.94, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.016, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.199, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.349, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.323, \"ph\": \"X\", \"dur\": 0.11225152874191609, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.562, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.536, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.914, \"ph\": \"X\", \"dur\": 0.7949902713344146, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705021.17, \"ph\": \"X\", \"dur\": 1.641366798048462, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.948, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.025, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.197, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.362, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.337, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.561, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705023.536, \"ph\": \"X\", \"dur\": 0.11175263305861868, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705022.922, \"ph\": \"X\", \"dur\": 0.7989814368007938, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705020.217, \"ph\": \"X\", \"dur\": 3.672620572593846, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705018.905, \"ph\": \"X\", \"dur\": 5.143365046954596, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705005.589, \"ph\": \"X\", \"dur\": 19.807156418273568, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705001.876, \"ph\": \"X\", \"dur\": 23.681330846919565, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704999.208, \"ph\": \"X\", \"dur\": 26.512563849632336, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704994.144, \"ph\": \"X\", \"dur\": 31.711306317432943, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704982.868, \"ph\": \"X\", \"dur\": 43.141754765301435, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705026.529, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705026.632, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705026.79, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705026.923, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.035, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.222, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.327, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.47, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.6, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.776, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.75, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.965, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.94, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705027.195, \"ph\": \"X\", \"dur\": 0.922957014100199, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705028.297, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705028.272, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705026.482, \"ph\": \"X\", \"dur\": 1.997827763764458, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704977.118, \"ph\": \"X\", \"dur\": 51.52270334901454, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704962.612, \"ph\": \"X\", \"dur\": 66.45290501521433, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705029.527, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705029.504, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704954.292, \"ph\": \"X\", \"dur\": 75.87829171191055, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704941.728, \"ph\": \"X\", \"dur\": 89.01745787507265, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.039, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.117, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.293, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.421, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.528, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.655, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.792, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.897, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.017, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.121, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.24, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.416, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.527, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.649, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.752, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.874, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705032.993, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705033.112, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705033.269, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705034.471, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705034.652, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705034.774, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705034.877, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.002, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.121, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.301, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.408, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.573, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.701, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.835, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.939, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.071, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.225, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.325, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.436, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.537, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.743, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.843, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.985, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.107, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.237, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.389, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.506, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.628, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.755, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705037.852, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.072, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.151, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.3, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.423, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.597, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.572, \"ph\": \"X\", \"dur\": 0.11075484169202388, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.876, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.827, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705038.048, \"ph\": \"X\", \"dur\": 0.9828244960958875, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.191, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.268, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.399, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.525, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.629, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.745, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.906, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.88, \"ph\": \"X\", \"dur\": 0.11474600715840312, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705040.143, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705040.242, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705040.405, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705041.546, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705041.693, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705041.891, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705041.992, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.18, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.344, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.319, \"ph\": \"X\", \"dur\": 0.11898662046643106, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.565, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.537, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705041.862, \"ph\": \"X\", \"dur\": 0.8648356669960514, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.888, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705042.862, \"ph\": \"X\", \"dur\": 0.11399766363345701, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705040.119, \"ph\": \"X\", \"dur\": 2.950718518862501, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705039.168, \"ph\": \"X\", \"dur\": 4.07373270196496, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705036.717, \"ph\": \"X\", \"dur\": 6.66499688101168, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705043.626, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705043.599, \"ph\": \"X\", \"dur\": 0.11200208090026739, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705035.276, \"ph\": \"X\", \"dur\": 8.538599619635084, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.025, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.103, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.239, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.364, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.49, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.609, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.733, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.855, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705044.977, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.14, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.243, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.35, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.454, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.595, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.803, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.899, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.05, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.172, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.277, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.381, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.483, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.628, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.733, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.836, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705046.938, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705047.129, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705047.104, \"ph\": \"X\", \"dur\": 0.1129998722668622, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705047.344, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.278, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.463, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.572, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.725, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.842, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705049.965, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.086, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.189, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.338, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.524, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.62, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.743, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.845, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.968, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.088, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.208, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.414, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.493, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.666, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.832, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.807, \"ph\": \"X\", \"dur\": 0.11549435068334922, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.069, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.042, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705051.369, \"ph\": \"X\", \"dur\": 0.8438820482975603, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.404, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.483, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.635, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.757, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.93, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.01, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.19, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.351, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.325, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.575, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.55, \"ph\": \"X\", \"dur\": 0.11499545500005182, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.905, \"ph\": \"X\", \"dur\": 0.825672355857205, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.879, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705053.855, \"ph\": \"X\", \"dur\": 0.11923606830807977, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705052.347, \"ph\": \"X\", \"dur\": 1.7411459347079428, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705050.498, \"ph\": \"X\", \"dur\": 3.728995784806453, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.446, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.525, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.676, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.843, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.818, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705055.075, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705055.051, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705054.422, \"ph\": \"X\", \"dur\": 1.9132649454455477, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705047.319, \"ph\": \"X\", \"dur\": 9.151492966565945, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705045.777, \"ph\": \"X\", \"dur\": 10.846740498410528, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705056.822, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705056.904, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705057.089, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705057.322, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705057.294, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705057.542, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705057.514, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705056.795, \"ph\": \"X\", \"dur\": 0.9102351741761151, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705043.998, \"ph\": \"X\", \"dur\": 13.83562453704528, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705031.012, \"ph\": \"X\", \"dur\": 26.973294013157492, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704911.488, \"ph\": \"X\", \"dur\": 146.94673014115082, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.022, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.107, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.273, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.39, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.506, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.611, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.72, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.877, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705059.985, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.092, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.204, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.345, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.475, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.576, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.698, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.829, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705060.957, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.061, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.193, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.321, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.423, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.574, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.698, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.816, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705061.918, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.342, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.444, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.547, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.719, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.825, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.979, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705063.087, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.265, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.415, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.546, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.653, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.804, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705064.912, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.013, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.119, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.261, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.368, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.48, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.587, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.693, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.799, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705065.929, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.037, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.184, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.296, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.404, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.509, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.676, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.781, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.931, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.062, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.184, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.31, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.439, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.587, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.705, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.812, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705067.94, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.069, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.22, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.347, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.45, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.552, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.691, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.813, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705068.942, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.048, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.157, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.318, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.494, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.603, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.751, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.943, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.915, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.264, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.219, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705069.468, \"ph\": \"X\", \"dur\": 1.9551721828425295, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.558, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.642, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.802, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.932, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.063, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.213, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.335, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.46, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.594, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.723, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.841, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705072.983, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.104, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.241, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.366, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.481, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.599, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.717, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705073.817, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.037, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.139, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.281, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.391, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.514, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.614, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.739, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.869, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.015, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.137, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.295, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.373, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.501, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.604, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.722, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.841, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.946, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.136, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.11, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.353, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.451, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.591, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.697, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.81, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.024, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.238, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.318, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.495, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.658, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.63, \"ph\": \"X\", \"dur\": 0.12896453413237915, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.886, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.86, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705078.212, \"ph\": \"X\", \"dur\": 0.8229284295990693, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.194, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.293, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.459, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.641, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.615, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.843, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.815, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705079.171, \"ph\": \"X\", \"dur\": 0.8054670806836601, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705076.328, \"ph\": \"X\", \"dur\": 3.7960972542099536, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705075.269, \"ph\": \"X\", \"dur\": 4.975736097366667, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.458, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.533, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.664, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.824, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.799, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.05, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.023, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705080.431, \"ph\": \"X\", \"dur\": 0.7493413163127022, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705074.01, \"ph\": \"X\", \"dur\": 7.275395749526055, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.485, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.565, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.711, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.818, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.951, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.053, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.157, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.303, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.409, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.567, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.667, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.832, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.938, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.043, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.151, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.256, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.392, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.551, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.651, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705084.916, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.054, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.205, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.356, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.477, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.686, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.79, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.958, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.071, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.253, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.224, \"ph\": \"X\", \"dur\": 0.1229777859328103, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.493, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.588, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.778, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.942, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.918, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.201, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.175, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705086.468, \"ph\": \"X\", \"dur\": 0.8992594691435722, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705085.662, \"ph\": \"X\", \"dur\": 1.8087462997947414, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.643, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.746, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.93, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.093, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.068, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.277, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.251, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705087.615, \"ph\": \"X\", \"dur\": 0.8027231544255244, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705083.525, \"ph\": \"X\", \"dur\": 5.0385969534621395, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.758, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705088.715, \"ph\": \"X\", \"dur\": 0.13195790823216358, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705082.542, \"ph\": \"X\", \"dur\": 6.397588794764271, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705089.177, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705089.148, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705081.46, \"ph\": \"X\", \"dur\": 7.891033022715052, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705071.527, \"ph\": \"X\", \"dur\": 18.03632619040943, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705066.649, \"ph\": \"X\", \"dur\": 23.27098914740745, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.255, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.23, \"ph\": \"X\", \"dur\": 0.12098220319962069, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705062.693, \"ph\": \"X\", \"dur\": 27.777264406791257, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.709, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.831, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.996, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705091.121, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705091.307, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705091.276, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705092.56, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705092.534, \"ph\": \"X\", \"dur\": 0.11898662046643106, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705090.677, \"ph\": \"X\", \"dur\": 2.0417305838946294, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705058.99, \"ph\": \"X\", \"dur\": 33.89946278437536, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704896.58, \"ph\": \"X\", \"dur\": 196.73751712559843, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704870.932, \"ph\": \"X\", \"dur\": 223.02033951307232, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704680.286, \"ph\": \"X\", \"dur\": 414.5344188345469, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705095.664, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705095.921, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.128, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.302, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.44, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.548, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.655, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.829, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705096.94, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.046, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.166, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.296, \"ph\": \"X\", \"dur\": 0.08531116184385623, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.463, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.562, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.671, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.775, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705097.886, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.006, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.143, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.243, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.371, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.491, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.636, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.739, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.842, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705098.971, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.095, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.196, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.302, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.405, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.512, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.662, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.762, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.865, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705099.969, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705100.074, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705100.179, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705100.281, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705100.385, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705100.567, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705101.998, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.149, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.286, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.422, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.527, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.629, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.733, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705102.835, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.0, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.104, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.224, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.323, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.426, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.533, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.634, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.737, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.844, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705103.945, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.053, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.155, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.322, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.426, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.544, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.645, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.771, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.873, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705104.978, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.081, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.185, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.291, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.397, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.501, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.699, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.804, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705105.92, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.027, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.132, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.236, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.343, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.445, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.551, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.67, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.774, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.881, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705106.986, \"ph\": \"X\", \"dur\": 0.2359776581996725, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705107.284, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.411, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.549, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.661, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.784, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.888, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705108.99, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.118, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.253, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.392, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.498, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.602, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.722, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.841, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705109.948, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.049, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.154, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.258, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.362, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.467, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.57, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.693, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705110.795, \"ph\": \"X\", \"dur\": 0.1541587661388981, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.035, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.139, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.258, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.359, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.473, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.588, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.697, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.822, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705111.925, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.027, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.132, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.238, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.346, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.45, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.554, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.672, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.779, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705112.88, \"ph\": \"X\", \"dur\": 0.1751123848373891, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.117, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.221, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.334, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.447, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.553, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.658, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705113.766, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705114.874, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.001, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.109, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.219, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.327, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.433, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.541, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.648, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.751, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.858, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705115.966, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.073, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.178, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.306, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.459, \"ph\": \"X\", \"dur\": 0.17735741541222744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.718, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.825, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705116.932, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.032, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.138, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.248, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.35, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.474, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.588, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.694, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.804, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705117.905, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.005, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.111, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.232, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.359, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.463, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.567, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.669, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.79, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705118.891, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.015, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.122, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.225, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.328, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.45, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.568, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.7, \"ph\": \"X\", \"dur\": 0.20853839561831525, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705119.989, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705120.092, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705120.199, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705120.303, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705121.43, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705121.555, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705121.709, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705121.816, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705121.938, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.045, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.149, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.257, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.36, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.471, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.576, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.683, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.79, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705122.895, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.0, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.103, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.208, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.316, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.426, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.53, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.648, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.749, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.857, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705123.975, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.082, \"ph\": \"X\", \"dur\": 0.12921398197402786, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.28, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.388, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.493, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.6, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.726, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.849, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705124.953, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.059, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.168, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.274, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.375, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.497, \"ph\": \"X\", \"dur\": 0.10401974996750891, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.683, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.781, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.887, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705125.994, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705126.114, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705126.237, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705126.339, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705126.449, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705126.563, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705127.7, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705127.836, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705127.958, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.082, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.184, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.29, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.393, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.499, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.608, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.708, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.828, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705128.934, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705129.04, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705129.146, \"ph\": \"X\", \"dur\": 1.279916875499492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705130.5, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705130.61, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705130.723, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705130.829, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705130.936, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.043, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.15, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.256, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.364, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.494, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.597, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.718, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.821, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705131.925, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.033, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.137, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.26, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.361, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.47, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.572, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.677, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.782, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.89, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705132.999, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.106, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.212, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.315, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.421, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.54, \"ph\": \"X\", \"dur\": 0.12148109888291808, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.74, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.842, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705133.951, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705134.055, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.197, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.301, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.411, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.519, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.68, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.864, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.005, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.181, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.331, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.474, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.61, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.713, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.84, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705136.962, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.11, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.233, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.332, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.436, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.602, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.721, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.824, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705137.929, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.06, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.175, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.321, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.446, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.565, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.668, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.826, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705138.943, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.062, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.164, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.288, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.409, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.563, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.682, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.787, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705139.912, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.031, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.135, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.239, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.344, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.451, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.554, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.703, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705140.821, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.017, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.116, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.292, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.394, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.548, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.689, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.813, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.952, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.077, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.182, \"ph\": \"X\", \"dur\": 0.10576588485904984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.35, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.457, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.564, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.684, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.808, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705143.947, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.051, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.172, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.29, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.399, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.5, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.606, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.706, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.812, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705144.951, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.055, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.159, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.263, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.371, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.495, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.662, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.762, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.914, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.021, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.155, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.319, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.434, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.609, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.741, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.907, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.885, \"ph\": \"X\", \"dur\": 0.0927945970933173, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.123, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.221, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.393, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.589, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.536, \"ph\": \"X\", \"dur\": 0.11948551614972847, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.78, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.755, \"ph\": \"X\", \"dur\": 1.9165077673869808, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705147.098, \"ph\": \"X\", \"dur\": 2.659113991975168, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705146.294, \"ph\": \"X\", \"dur\": 3.581073214708772, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.078, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.052, \"ph\": \"X\", \"dur\": 0.11674158989159274, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705145.637, \"ph\": \"X\", \"dur\": 4.627756358266727, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.492, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.599, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.797, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.924, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.031, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.158, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.285, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.392, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.569, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.674, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.778, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705151.887, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.026, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.166, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.269, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.393, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.51, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.613, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.719, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.826, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705152.949, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.05, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.15, \"ph\": \"X\", \"dur\": 0.07882551796098997, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.382, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.483, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.637, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.765, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.866, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.995, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.136, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.259, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.367, \"ph\": \"X\", \"dur\": 0.0626114082538243, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.496, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.6, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.705, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.808, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705154.934, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705155.041, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705155.167, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705155.267, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705156.521, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705156.627, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705156.821, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705156.944, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.085, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.202, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.307, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.419, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.55, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.662, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.763, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705157.864, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.066, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.166, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.329, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.438, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.555, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.665, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.786, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.912, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.065, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.187, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.358, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.456, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.615, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.722, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.855, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.977, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.077, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.252, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.226, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.462, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.56, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.7, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.823, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.945, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.124, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.096, \"ph\": \"X\", \"dur\": 0.13495128233194803, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.359, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.458, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.626, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.832, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.804, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705162.03, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705162.006, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705161.334, \"ph\": \"X\", \"dur\": 0.8371469565730454, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705160.435, \"ph\": \"X\", \"dur\": 1.8411745192090725, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705159.333, \"ph\": \"X\", \"dur\": 4.136344110218784, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705163.685, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705163.77, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705163.94, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.144, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.117, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.33, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.303, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705163.657, \"ph\": \"X\", \"dur\": 0.8211822947075283, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705158.039, \"ph\": \"X\", \"dur\": 6.55748486126109, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.767, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705164.738, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705156.494, \"ph\": \"X\", \"dur\": 8.462019132248932, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.17, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.254, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.461, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.594, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.748, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.949, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.924, \"ph\": \"X\", \"dur\": 0.12148109888291808, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.17, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.272, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.418, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.58, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.555, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.773, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.749, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705166.144, \"ph\": \"X\", \"dur\": 0.7695465914862469, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705165.144, \"ph\": \"X\", \"dur\": 1.8795894868229728, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705153.354, \"ph\": \"X\", \"dur\": 13.819410427338115, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.4, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.479, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.694, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.837, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.947, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.052, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.213, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.189, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.431, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.531, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.685, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.792, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.969, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705169.065, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705169.204, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705169.37, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705169.344, \"ph\": \"X\", \"dur\": 1.2931376111068735, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705170.807, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705170.782, \"ph\": \"X\", \"dur\": 0.11823827694148495, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.945, \"ph\": \"X\", \"dur\": 2.0327504615952763, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705171.134, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705171.105, \"ph\": \"X\", \"dur\": 0.12497336866599991, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705168.407, \"ph\": \"X\", \"dur\": 2.9252748390143335, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705167.376, \"ph\": \"X\", \"dur\": 4.05826693578274, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705150.468, \"ph\": \"X\", \"dur\": 21.12399157433707, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705142.266, \"ph\": \"X\", \"dur\": 29.50543905373347, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.06, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.14, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.349, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.502, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.613, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.717, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.825, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.978, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.089, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.215, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.345, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.452, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.59, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.699, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.804, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.984, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705173.959, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.204, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.317, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.456, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.583, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.704, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.833, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.943, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.045, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.151, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.29, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.394, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.51, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.626, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.817, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.926, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.076, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.183, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.346, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.32, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.552, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705177.652, \"ph\": \"X\", \"dur\": 0.1020241672343193, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705177.936, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.125, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.097, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.335, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.307, \"ph\": \"X\", \"dur\": 0.1027725107592654, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705176.527, \"ph\": \"X\", \"dur\": 1.9668962314000187, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705175.793, \"ph\": \"X\", \"dur\": 2.788577421790844, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.738, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.824, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.982, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.091, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.211, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.318, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.42, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.568, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.707, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.874, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.973, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.117, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.23, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.349, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.479, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.703, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.646, \"ph\": \"X\", \"dur\": 0.1237261294577564, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.906, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.003, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.162, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.32, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.5, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.476, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.719, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705181.696, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705180.882, \"ph\": \"X\", \"dur\": 0.9868156615622667, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705179.848, \"ph\": \"X\", \"dur\": 2.198633276291663, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.243, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.323, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.491, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.664, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.639, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.846, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.82, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705182.217, \"ph\": \"X\", \"dur\": 0.7638092911283269, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705178.71, \"ph\": \"X\", \"dur\": 4.390531460858812, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705174.178, \"ph\": \"X\", \"dur\": 9.069424626663524, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705172.031, \"ph\": \"X\", \"dur\": 11.372327100764343, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705135.83, \"ph\": \"X\", \"dur\": 49.291891301150194, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705185.841, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705185.944, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.115, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.228, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.356, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.49, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.6, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.706, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705186.875, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.0, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.102, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.229, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.35, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.452, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.593, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.698, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.807, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705187.928, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.052, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.172, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.333, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.434, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.54, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.647, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.787, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705188.909, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.012, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.12, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.226, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.33, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.435, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.54, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.706, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.809, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705189.915, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.018, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.123, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.229, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.33, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.462, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.565, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.673, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.826, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705190.942, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705191.043, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705191.147, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.28, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.387, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.516, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.649, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.753, \"ph\": \"X\", \"dur\": 0.132456803915461, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705192.948, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.078, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.244, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.364, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.48, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.579, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.685, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.788, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705193.894, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.0, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.108, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.211, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.316, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.418, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.527, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.715, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.815, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705194.934, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.032, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.153, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.258, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.374, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.478, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.601, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.723, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.844, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705195.945, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.069, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.172, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.273, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.373, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.478, \"ph\": \"X\", \"dur\": 0.11948551614972847, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.676, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.788, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705196.912, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.051, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.158, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.263, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.374, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.476, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.583, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705197.705, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705198.819, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705198.942, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.046, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.152, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.256, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.365, \"ph\": \"X\", \"dur\": 0.15066649635581628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.596, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.697, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.807, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705199.933, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.039, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.147, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.252, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.378, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.48, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.603, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.726, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.859, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705200.982, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.092, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.198, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.301, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.405, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.512, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.616, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.719, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.842, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705201.965, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.088, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.209, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.333, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.452, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.567, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.668, \"ph\": \"X\", \"dur\": 0.14143692621481427, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.871, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705202.99, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.142, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.249, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.354, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.456, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.577, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.706, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.809, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705203.911, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705204.015, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705204.12, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.275, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.4, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.525, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.665, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.773, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.894, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705205.998, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.103, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.208, \"ph\": \"X\", \"dur\": 0.23323373194153676, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.5, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.637, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.754, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.857, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705206.979, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.081, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.204, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.309, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.416, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.537, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.703, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.811, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705207.913, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.02, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.147, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.26, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.379, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.479, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.588, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.691, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.793, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705208.897, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.005, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.108, \"ph\": \"X\", \"dur\": 0.04515005933841514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.218, \"ph\": \"X\", \"dur\": 0.15041704851416757, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.43, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.536, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.644, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.747, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.866, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705209.971, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.104, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.212, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.319, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.423, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.528, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.631, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705210.736, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705211.88, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.006, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.134, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.24, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.364, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.493, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.594, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.695, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.799, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705212.907, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.011, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.131, \"ph\": \"X\", \"dur\": 0.1529115269306546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.342, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.467, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.588, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.709, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.815, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705213.936, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.039, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.144, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.25, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.349, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.452, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.578, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.689, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.794, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705214.919, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.025, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.143, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.265, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.368, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.49, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.594, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.716, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.818, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705215.922, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.06, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.215, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.339, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.44, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.545, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.648, \"ph\": \"X\", \"dur\": 0.12272833809116158, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.835, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705216.969, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705217.068, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705217.192, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.336, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.458, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.585, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.784, \"ph\": \"X\", \"dur\": 0.02793815826465467, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.889, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.051, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.18, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.306, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.435, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.576, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.684, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.809, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705219.935, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.036, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.195, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.367, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.487, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.607, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.727, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.858, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705220.976, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.076, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.245, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.402, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.534, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.632, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.753, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.87, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705221.976, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.099, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.204, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.305, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.428, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.529, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.714, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.83, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705222.934, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.041, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.15, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.255, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.363, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.464, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.618, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.738, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.842, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705223.947, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705224.067, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.285, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.472, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.593, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.727, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.849, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705225.962, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.065, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.202, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.319, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.425, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.53, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.713, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.819, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.986, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.096, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.232, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.355, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.472, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.641, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.747, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705227.905, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.027, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.147, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.285, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.393, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.495, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.602, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.709, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.816, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705228.921, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.027, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.165, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.289, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.392, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.501, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.61, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.798, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.899, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.084, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.231, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.346, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.471, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.572, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.693, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.813, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705230.932, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.169, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.293, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.399, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.504, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.679, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.783, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705232.968, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.071, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.191, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.311, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.415, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.522, \"ph\": \"X\", \"dur\": 0.04415226797182033, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.64, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.808, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.909, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.085, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.191, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.296, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.404, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.51, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.678, \"ph\": \"X\", \"dur\": 0.0409094460303872, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.861, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.97, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.118, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.242, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.348, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.454, \"ph\": \"X\", \"dur\": 0.04315447660522552, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.559, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.761, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.838, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.981, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.087, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.192, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.36, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.439, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.588, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.697, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.875, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.849, \"ph\": \"X\", \"dur\": 0.12696895139918954, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.12, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.222, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.42, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.601, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.576, \"ph\": \"X\", \"dur\": 0.12123165104126939, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.84, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.816, \"ph\": \"X\", \"dur\": 0.11898662046643106, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705237.095, \"ph\": \"X\", \"dur\": 0.9189658486338197, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705236.334, \"ph\": \"X\", \"dur\": 2.816765027897148, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705239.339, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705239.312, \"ph\": \"X\", \"dur\": 0.12696895139918954, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705235.735, \"ph\": \"X\", \"dur\": 3.7995895239930357, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705239.768, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705239.743, \"ph\": \"X\", \"dur\": 0.11798882909983625, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705234.819, \"ph\": \"X\", \"dur\": 5.146108973212731, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.152, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.127, \"ph\": \"X\", \"dur\": 0.11599324636664662, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705233.783, \"ph\": \"X\", \"dur\": 6.552745352269764, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.532, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.661, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.834, \"ph\": \"X\", \"dur\": 0.042406133080279414, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.949, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.089, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.199, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.327, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.456, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.604, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.734, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.856, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705241.958, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.062, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.211, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.313, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.501, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.601, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.732, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.84, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.977, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.129, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.23, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.434, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.407, \"ph\": \"X\", \"dur\": 0.1234766816161077, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.67, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.771, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.906, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.075, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.189, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.316, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.48, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.579, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.758, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.929, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.904, \"ph\": \"X\", \"dur\": 0.10975705032542907, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705245.142, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705245.116, \"ph\": \"X\", \"dur\": 1.0766168845557997, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705244.455, \"ph\": \"X\", \"dur\": 1.831695501226422, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.572, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.654, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.794, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.941, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.919, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.094, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.071, \"ph\": \"X\", \"dur\": 0.08007275716923348, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705246.518, \"ph\": \"X\", \"dur\": 0.7051890483408818, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705243.645, \"ph\": \"X\", \"dur\": 3.697315908917067, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705242.473, \"ph\": \"X\", \"dur\": 4.962515361759286, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.591, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.66, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.803, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.935, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.025, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.132, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.231, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.319, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.459, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.542, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.671, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.773, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.918, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.002, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.132, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.268, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.246, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.431, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.411, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.896, \"ph\": \"X\", \"dur\": 0.6692685591434686, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.687, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.666, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705248.438, \"ph\": \"X\", \"dur\": 1.377201533742486, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.943, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.005, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.141, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.225, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.356, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.439, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.544, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.714, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.694, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.895, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.875, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705250.336, \"ph\": \"X\", \"dur\": 0.6670235285686302, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705252.76, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705252.737, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705249.924, \"ph\": \"X\", \"dur\": 2.9786566771271556, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705247.569, \"ph\": \"X\", \"dur\": 5.444448591824579, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705240.506, \"ph\": \"X\", \"dur\": 12.628795879148859, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705229.773, \"ph\": \"X\", \"dur\": 23.519189749847907, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705253.502, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705253.48, \"ph\": \"X\", \"dur\": 0.09803300176794005, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705226.688, \"ph\": \"X\", \"dur\": 26.97928076135706, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705253.97, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.036, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.168, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.269, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.357, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.464, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.567, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.649, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.756, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.838, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705254.926, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.06, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.144, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.23, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.317, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.429, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.515, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.615, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.731, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.816, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.903, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705255.989, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.074, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.173, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.259, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.358, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.443, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.572, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.698, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.781, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.916, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.997, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705257.116, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705257.221, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705257.331, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705257.421, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705257.507, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.481, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.575, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.709, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.793, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.876, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705258.963, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.09, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.188, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.3, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.384, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.483, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.613, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.709, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.867, \"ph\": \"X\", \"dur\": 0.028935949631249482, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.935, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.064, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.15, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.237, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.325, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.422, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.525, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.634, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.735, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.829, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705260.912, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.012, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.096, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.239, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.299, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.431, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.514, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.607, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.69, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.777, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.891, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.987, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.121, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.184, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.32, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.423, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.529, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.621, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.719, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.849, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.911, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705263.028, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705263.123, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.319, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.298, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.539, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.518, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.829, \"ph\": \"X\", \"dur\": 1.8521502242416155, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.827, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.894, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.033, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.182, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.16, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.366, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.344, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705264.805, \"ph\": \"X\", \"dur\": 0.6702663505100633, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705262.102, \"ph\": \"X\", \"dur\": 3.4937664701317264, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.719, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.698, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705261.219, \"ph\": \"X\", \"dur\": 4.640977093874109, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.012, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.092, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.232, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.342, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.448, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.59, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.569, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.773, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.853, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.995, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.135, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.115, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.312, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.291, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705266.753, \"ph\": \"X\", \"dur\": 0.6757542030263348, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705265.991, \"ph\": \"X\", \"dur\": 1.5306119563564382, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705259.847, \"ph\": \"X\", \"dur\": 7.783271555122813, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.795, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.86, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.041, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.13, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.222, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.307, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.435, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.512, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.614, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.701, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.802, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.948, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705269.009, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.07, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.229, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.206, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.433, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.408, \"ph\": \"X\", \"dur\": 0.11075484169202388, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.928, \"ph\": \"X\", \"dur\": 1.649848024664518, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.708, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705270.684, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705268.414, \"ph\": \"X\", \"dur\": 2.433363695283092, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.047, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.024, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705267.773, \"ph\": \"X\", \"dur\": 3.413444265120844, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705256.898, \"ph\": \"X\", \"dur\": 14.418833590819945, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.506, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.572, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.713, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.814, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.93, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.026, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.111, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.198, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.316, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.415, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.543, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.605, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.745, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.848, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.946, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.043, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.14, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.3, \"ph\": \"X\", \"dur\": 0.02644147121476246, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.279, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.476, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.557, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.685, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.786, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.884, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.983, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.135, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.114, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.336, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.418, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.54, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.624, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.756, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.834, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705275.843, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705275.985, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705275.964, \"ph\": \"X\", \"dur\": 0.10451864565080632, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.18, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.155, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.734, \"ph\": \"X\", \"dur\": 1.5528128142631727, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.411, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.391, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705274.315, \"ph\": \"X\", \"dur\": 2.2168429687320184, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705273.456, \"ph\": \"X\", \"dur\": 3.183702802962389, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705272.521, \"ph\": \"X\", \"dur\": 4.215419076021423, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.846, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.911, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705277.015, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705277.151, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705277.131, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705277.316, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705277.295, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705276.825, \"ph\": \"X\", \"dur\": 0.595182550173804, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705271.486, \"ph\": \"X\", \"dur\": 6.007951266108998, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705253.948, \"ph\": \"X\", \"dur\": 23.78410335767883, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705218.732, \"ph\": \"X\", \"dur\": 59.26057539695729, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705278.651, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705278.732, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705278.872, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705278.957, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.044, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.127, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.215, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.335, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.44, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.523, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.608, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.724, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.808, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.895, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705279.981, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.065, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.147, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.227, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.31, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.421, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.503, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.597, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.68, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.765, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705280.847, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705281.819, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705281.903, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.035, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.119, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.216, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.3, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.399, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.485, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.568, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.653, \"ph\": \"X\", \"dur\": 0.07483435249461072, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.78, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.861, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705282.954, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.04, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.125, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.21, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.296, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.395, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.509, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.655, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.74, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.826, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.913, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705283.997, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.081, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.165, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.253, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.338, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.42, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.506, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.591, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.72, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.807, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.899, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705284.985, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.071, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.157, \"ph\": \"X\", \"dur\": 0.03816551977225147, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.244, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.331, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.415, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.503, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.585, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.672, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.821, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.904, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705285.997, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705286.954, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.035, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.123, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.208, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.297, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.38, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.466, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.551, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.636, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.804, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.889, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705287.982, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.066, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.151, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.235, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.319, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.403, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.487, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.574, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.658, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.741, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.824, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.909, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705288.992, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.079, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.228, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.315, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.407, \"ph\": \"X\", \"dur\": 0.042156685238630705, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.498, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.583, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.67, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.754, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.84, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705289.923, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.009, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.097, \"ph\": \"X\", \"dur\": 0.041907237396982, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.189, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.275, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.359, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.442, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.525, \"ph\": \"X\", \"dur\": 0.162639992754954, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.75, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.833, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705290.919, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705291.004, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705291.088, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705291.171, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.159, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.258, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.344, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.432, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.52, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.602, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.688, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.772, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.859, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705292.947, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.03, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.11, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.198, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.28, \"ph\": \"X\", \"dur\": 0.12247889024951289, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.452, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.539, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.622, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.72, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.802, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.887, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705293.987, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.067, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.152, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.235, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.319, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.406, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.49, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.576, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.661, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.743, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.829, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.914, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705294.999, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.084, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.167, \"ph\": \"X\", \"dur\": 0.11724048557489014, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.339, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.424, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.51, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.594, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.679, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.76, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.862, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705295.944, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705296.027, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705296.115, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705296.199, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.214, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.317, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.4, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.485, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.571, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.674, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.761, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.848, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705297.936, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.021, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.102, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.187, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.27, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.4, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.481, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.565, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.765, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.844, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.963, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.064, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.177, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.258, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.343, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.427, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.511, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.652, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.734, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.816, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705299.9, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.05, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.147, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.242, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.344, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.442, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.523, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.61, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.695, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.779, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.861, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705300.944, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.027, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.138, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.221, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.307, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.391, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.475, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705301.56, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705302.553, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705302.683, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705302.804, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705302.886, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705302.972, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.061, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.16, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.242, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.327, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.424, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.558, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.639, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.736, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.824, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705303.943, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.029, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.128, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.212, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.294, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.395, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.475, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.56, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.661, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.744, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.829, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705304.955, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.04, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.125, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.223, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.322, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.417, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.5, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.584, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.687, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.764, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.847, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705305.929, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.013, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.112, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.24, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.335, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.416, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.532, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.618, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.699, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705306.787, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705307.732, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705307.835, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705307.933, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.033, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.115, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.216, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.32, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.404, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.488, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.567, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.653, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.795, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.877, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705308.963, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.043, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.129, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.212, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.314, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.414, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.51, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.594, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.69, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.772, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.871, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705309.971, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.067, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.163, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.258, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.34, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.428, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.582, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.666, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.752, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.836, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705310.918, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.004, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.103, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.203, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.3, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.397, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.494, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.589, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.687, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.822, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.907, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705311.99, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705312.075, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.128, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.245, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.331, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.418, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.521, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.619, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.704, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.797, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705313.882, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.017, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.106, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.193, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.289, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.374, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.461, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.545, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.639, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.734, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.859, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705314.944, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.029, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.115, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.215, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.297, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.397, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.48, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.563, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.66, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.767, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705315.862, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.018, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.121, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.216, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.315, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.4, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.484, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.569, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.651, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.735, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.818, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.903, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705316.987, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705317.088, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705317.169, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705317.263, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705317.344, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.326, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.42, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.519, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.602, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.702, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.795, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705318.879, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.039, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.125, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.245, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.34, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.442, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.536, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.634, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.748, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.845, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.942, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.026, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.168, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.263, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.381, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.476, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.572, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.655, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.74, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.823, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.907, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705320.992, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.113, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.201, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.285, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.365, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.447, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.533, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.617, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.7, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.827, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705321.923, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.04, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.124, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.22, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.305, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.388, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.472, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.556, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.642, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705322.771, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705323.773, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705323.902, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.004, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.108, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.192, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.28, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.368, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.631, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.714, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.799, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.883, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705324.965, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.047, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.131, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.212, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.297, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.379, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.464, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.546, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.687, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.77, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.854, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705325.938, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.023, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.109, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.194, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.276, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.357, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.444, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.524, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.609, \"ph\": \"X\", \"dur\": 0.09728465824299394, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.768, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.848, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705326.936, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.02, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.106, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.188, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.274, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.356, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.441, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.522, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.605, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.687, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.815, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.897, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705327.978, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705328.061, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.062, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.178, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.26, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.345, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.43, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.514, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.598, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.681, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.764, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.853, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705329.934, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.021, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.156, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.264, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.345, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.428, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.516, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.598, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.685, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.767, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.849, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705330.934, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.02, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.123, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.202, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.289, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.373, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.462, \"ph\": \"X\", \"dur\": 0.17611017620398392, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.691, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.78, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705331.882, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.015, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.099, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.186, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.268, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.353, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.437, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.537, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.62, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.705, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.787, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.949, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705333.036, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705333.168, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705333.283, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705333.378, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.014, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.115, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.275, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.335, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.46, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.547, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.726, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.79, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.918, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.047, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.022, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.27, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.249, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.705, \"ph\": \"X\", \"dur\": 0.6752553073430374, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.518, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.494, \"ph\": \"X\", \"dur\": 0.09903079313453486, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705335.239, \"ph\": \"X\", \"dur\": 1.4056385876904383, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.775, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.839, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.989, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.13, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.108, \"ph\": \"X\", \"dur\": 0.09479017982650693, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.332, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.31, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705336.754, \"ph\": \"X\", \"dur\": 0.6864804602172291, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705332.928, \"ph\": \"X\", \"dur\": 4.611542248559561, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.693, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.756, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.947, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.053, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.152, \"ph\": \"X\", \"dur\": 0.04864232912149697, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.247, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.333, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.43, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.513, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.612, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.694, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.824, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705338.945, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.04, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.123, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.217, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.311, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.402, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.554, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.647, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705339.783, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705340.811, \"ph\": \"X\", \"dur\": 0.028935949631249482, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705340.892, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705340.994, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.111, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.21, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.294, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.391, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.486, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.581, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.678, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.76, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705341.862, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.005, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.086, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.174, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.269, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.372, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.468, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.562, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.646, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.73, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.829, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705342.912, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.009, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.09, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.176, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.262, \"ph\": \"X\", \"dur\": 0.05013901617138919, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.373, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.467, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.552, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.636, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.737, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.833, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705343.913, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.008, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.104, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.186, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.269, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.399, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.497, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.61, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.705, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.8, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.897, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705344.978, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705345.067, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.056, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.159, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.244, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.33, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.434, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.544, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.644, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705346.742, \"ph\": \"X\", \"dur\": 1.0683851057813925, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705347.879, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705347.976, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.095, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.197, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.295, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.394, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.478, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.566, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.659, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.743, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.828, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705348.911, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.009, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.105, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.203, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.298, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.378, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.523, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.61, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.709, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.802, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.885, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705349.998, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.081, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.179, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.261, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.342, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.431, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.513, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.61, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.692, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.775, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.875, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705350.971, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705351.052, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705351.136, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705351.228, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705351.311, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705351.407, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.383, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.498, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.581, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.667, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.803, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.89, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705352.972, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.129, \"ph\": \"X\", \"dur\": 0.04465116365511773, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.22, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.344, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.431, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.517, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.634, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.731, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.818, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.916, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.009, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.113, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.211, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.299, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.381, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.466, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.575, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.694, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.778, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.876, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705354.959, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.046, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.141, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.226, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.364, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.447, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.544, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.643, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.727, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.824, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.909, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705355.997, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.095, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.209, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.308, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.393, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.491, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.587, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.671, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705356.778, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705357.946, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.069, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.172, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.276, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.357, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.458, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.556, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.653, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.734, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.831, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705358.937, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.053, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.134, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.294, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.379, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.51, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.607, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.706, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.791, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.877, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.025, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.11, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.194, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.278, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.385, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.472, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.557, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.644, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.727, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.811, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.895, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705360.978, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.086, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.169, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.256, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.342, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.425, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.508, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.591, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.674, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.828, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705361.807, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.034, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.114, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.261, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.367, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.463, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705364.635, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705364.746, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705364.828, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705364.929, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.016, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.13, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.231, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.33, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.429, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.528, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.631, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.757, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.851, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705365.931, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.027, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.123, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.206, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.287, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.373, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.454, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.536, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.67, \"ph\": \"X\", \"dur\": 0.025443679848167648, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.733, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.848, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.93, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.016, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.101, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.187, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.31, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.397, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.528, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.589, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.727, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.81, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.911, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.025, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.122, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.205, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.339, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.4, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.557, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.694, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.674, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.89, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.869, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705368.32, \"ph\": \"X\", \"dur\": 0.7089307659656123, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.115, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.197, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.302, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.407, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.513, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.684, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.747, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.898, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.033, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.011, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.229, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.207, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.649, \"ph\": \"X\", \"dur\": 0.6947122389916363, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.487, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.467, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705370.094, \"ph\": \"X\", \"dur\": 1.529863612831492, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705367.508, \"ph\": \"X\", \"dur\": 4.2286398116288035, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.89, \"ph\": \"X\", \"dur\": 0.024944784164870244, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705371.87, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705366.649, \"ph\": \"X\", \"dur\": 5.376598778896132, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.166, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.225, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.331, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.417, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.503, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.6, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.7, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.783, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.903, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.985, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.07, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.153, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.269, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.368, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.447, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.547, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.645, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.802, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.861, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.979, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.078, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.188, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.268, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.351, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.461, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.539, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705374.622, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705375.637, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705375.765, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705375.931, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705375.995, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.118, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.203, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.305, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.43, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.528, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.657, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.637, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.851, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.942, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.063, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.183, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.291, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.436, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.499, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.647, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.799, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.763, \"ph\": \"X\", \"dur\": 0.10751201975059076, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.002, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.975, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705377.403, \"ph\": \"X\", \"dur\": 0.7146680663235324, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.25, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.23, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705376.83, \"ph\": \"X\", \"dur\": 1.543333796280522, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705375.894, \"ph\": \"X\", \"dur\": 2.5930103139382616, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.645, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.706, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.851, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.938, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.039, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.188, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.168, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.37, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.451, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.566, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.705, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.683, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.888, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.868, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705379.349, \"ph\": \"X\", \"dur\": 0.6515577623864108, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705378.623, \"ph\": \"X\", \"dur\": 1.473737848460534, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705373.781, \"ph\": \"X\", \"dur\": 6.4187918613044115, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705380.335, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.277, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.391, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.499, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.584, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.722, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.789, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.896, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.989, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.146, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.215, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.359, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.495, \"ph\": \"X\", \"dur\": 0.024944784164870244, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.472, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.689, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.667, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.124, \"ph\": \"X\", \"dur\": 0.6792464728094166, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.923, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705382.901, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705381.699, \"ph\": \"X\", \"dur\": 1.341031596703424, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705383.15, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705383.127, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705380.314, \"ph\": \"X\", \"dur\": 2.9412395008798504, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705372.145, \"ph\": \"X\", \"dur\": 11.229393487499637, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705362.013, \"ph\": \"X\", \"dur\": 21.583723946495624, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705359.276, \"ph\": \"X\", \"dur\": 24.45910921718022, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705383.912, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705383.992, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.099, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.203, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.305, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.404, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.485, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.589, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.683, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.779, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705384.923, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.021, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.106, \"ph\": \"X\", \"dur\": 0.05213459890457881, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.22, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.315, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.411, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.507, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.628, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.727, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.811, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.892, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705385.979, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.067, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.189, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.291, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.426, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.534, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.675, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.773, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.888, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.983, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.068, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.167, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.298, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.364, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.485, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.622, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.6, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.827, \"ph\": \"X\", \"dur\": 0.022200857906734515, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.795, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705388.274, \"ph\": \"X\", \"dur\": 0.6707652461933608, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.071, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.137, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.264, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.362, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.467, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.618, \"ph\": \"X\", \"dur\": 0.024944784164870244, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.578, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.815, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.898, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.002, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.087, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.246, \"ph\": \"X\", \"dur\": 0.022949201431680624, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.325, \"ph\": \"X\", \"dur\": 0.05063791185468659, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.462, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.599, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.577, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.793, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.768, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705390.212, \"ph\": \"X\", \"dur\": 0.6914694170502032, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.033, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.011, \"ph\": \"X\", \"dur\": 0.09603741903475042, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.792, \"ph\": \"X\", \"dur\": 1.3767026380591887, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705389.047, \"ph\": \"X\", \"dur\": 2.229065912972805, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705387.404, \"ph\": \"X\", \"dur\": 3.9637262037978815, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.506, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.599, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.724, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.813, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705392.845, \"ph\": \"X\", \"dur\": 0.03741717624730536, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705392.968, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.087, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.17, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.261, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.364, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.449, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.556, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.643, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.739, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.855, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705393.939, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.044, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.18, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.258, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.361, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.446, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.544, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.644, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.796, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.857, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.984, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.069, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.215, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.194, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.414, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.491, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.604, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.755, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.734, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.928, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.909, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705395.394, \"ph\": \"X\", \"dur\": 0.6383370267790296, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.776, \"ph\": \"X\", \"dur\": 1.347018344902993, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.243, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.223, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705394.16, \"ph\": \"X\", \"dur\": 2.235052661172374, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.582, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.664, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.787, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.89, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705397.004, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705397.105, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705397.191, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705397.28, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705397.403, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.359, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.44, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.62, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.599, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.815, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.923, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.048, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.135, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.222, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.308, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.391, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.555, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.643, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.814, \"ph\": \"X\", \"dur\": 0.0204547230151936, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.891, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.003, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.096, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.183, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.272, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.375, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.504, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.669, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.753, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.882, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.99, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.092, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.213, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.312, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.478, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.559, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.688, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.792, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.932, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.012, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.152, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.288, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.268, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.471, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.45, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.909, \"ph\": \"X\", \"dur\": 0.6882265951087699, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.729, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.709, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705401.456, \"ph\": \"X\", \"dur\": 1.3921684042414084, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.955, \"ph\": \"X\", \"dur\": 0.022699753590031922, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705403.035, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705403.175, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705403.32, \"ph\": \"X\", \"dur\": 0.028935949631249482, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705403.298, \"ph\": \"X\", \"dur\": 0.9763388522130213, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705404.398, \"ph\": \"X\", \"dur\": 0.022200857906734515, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705404.361, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705402.934, \"ph\": \"X\", \"dur\": 1.5705236110202305, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705400.647, \"ph\": \"X\", \"dur\": 3.9627284124312867, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705404.795, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705404.758, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705399.777, \"ph\": \"X\", \"dur\": 5.171552653060899, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705405.119, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705405.099, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705398.793, \"ph\": \"X\", \"dur\": 6.459202411651501, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705396.563, \"ph\": \"X\", \"dur\": 8.834195311988797, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705391.485, \"ph\": \"X\", \"dur\": 14.036928945255783, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705383.891, \"ph\": \"X\", \"dur\": 21.76033301838291, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705353.107, \"ph\": \"X\", \"dur\": 52.6933620698719, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.016, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.103, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.241, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.348, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.464, \"ph\": \"X\", \"dur\": 0.04440171581346903, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.571, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.666, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.766, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.869, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705406.951, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.08, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.159, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.244, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.325, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.425, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.511, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.595, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.682, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.766, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.848, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705407.947, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.061, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.16, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.296, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.397, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.486, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.569, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.653, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.738, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.837, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705408.935, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705409.914, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.017, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.104, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.221, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.308, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.391, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.477, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.578, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.695, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.789, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.873, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705410.977, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.073, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.155, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.255, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.335, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.429, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.524, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.621, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.717, \"ph\": \"X\", \"dur\": 0.06311030393712172, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705411.852, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.002, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.083, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.17, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.257, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.343, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.44, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.537, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.626, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.725, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.819, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.914, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705412.999, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.126, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.21, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.309, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.39, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.476, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.626, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.71, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.824, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.911, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705414.012, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705414.097, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705414.203, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705414.289, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705414.388, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705415.996, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.099, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.217, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.319, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.44, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.54, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.648, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.787, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.886, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705416.999, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.092, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.187, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.268, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.351, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.448, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.543, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.679, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.773, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.859, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705417.943, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.04, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.125, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.251, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.368, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.476, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.558, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.642, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.726, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.804, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.903, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705418.998, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.096, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.232, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.312, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.396, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.495, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.608, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.746, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.811, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.953, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.037, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.133, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.214, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.298, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.398, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705420.484, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.452, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.554, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.674, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.774, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.861, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705421.97, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.07, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.157, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.242, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.329, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.481, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.544, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.646, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.752, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.848, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.957, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.054, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.137, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.223, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.319, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.412, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.514, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.624, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.705, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.789, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705423.872, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.023, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.085, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.228, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.314, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.411, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.49, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.591, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.675, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.772, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.89, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.031, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.108, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.242, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.377, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.355, \"ph\": \"X\", \"dur\": 0.09753410608464265, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.588, \"ph\": \"X\", \"dur\": 0.022200857906734515, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.557, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.01, \"ph\": \"X\", \"dur\": 0.6842354296423907, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.847, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.913, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705426.024, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.141, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.226, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.333, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.421, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.586, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.652, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.759, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.862, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.98, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.065, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.214, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.284, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.414, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.578, \"ph\": \"X\", \"dur\": 0.021203066540139707, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.546, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.77, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.75, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.192, \"ph\": \"X\", \"dur\": 0.685732116692283, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.007, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.07, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.209, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.346, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.32, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.539, \"ph\": \"X\", \"dur\": 0.045648955021712546, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.515, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705428.986, \"ph\": \"X\", \"dur\": 0.6752553073430374, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705427.564, \"ph\": \"X\", \"dur\": 2.204370576649583, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.933, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705429.911, \"ph\": \"X\", \"dur\": 0.08930232731023546, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705425.824, \"ph\": \"X\", \"dur\": 4.253335147952026, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705424.001, \"ph\": \"X\", \"dur\": 6.211001809211043, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.375, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.459, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.603, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.708, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.805, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.889, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.016, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.079, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.209, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.342, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.322, \"ph\": \"X\", \"dur\": 0.08880343162693806, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.516, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.495, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.997, \"ph\": \"X\", \"dur\": 0.62287126059681, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.724, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705432.684, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705432.872, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.023, \"ph\": \"X\", \"dur\": 0.022699753590031922, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705432.992, \"ph\": \"X\", \"dur\": 0.09952968881783227, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.211, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.191, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705431.704, \"ph\": \"X\", \"dur\": 1.6159231182002942, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705430.355, \"ph\": \"X\", \"dur\": 3.0637183911293633, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705422.459, \"ph\": \"X\", \"dur\": 11.079475334668766, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.706, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.771, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.894, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.04, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.019, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.228, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.207, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705433.685, \"ph\": \"X\", \"dur\": 0.6475665969200315, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705419.725, \"ph\": \"X\", \"dur\": 14.741369650071718, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.636, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.699, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.823, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.907, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.016, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.121, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.207, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.308, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.393, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.513, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.607, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.704, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.82, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705435.918, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.014, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.095, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.195, \"ph\": \"X\", \"dur\": 0.049640120488091785, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.305, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.404, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.5, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.581, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.683, \"ph\": \"X\", \"dur\": 0.0309315323644391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.765, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.848, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705436.951, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705437.061, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705437.156, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705437.298, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705437.406, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.485, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.584, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.695, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.798, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.897, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705438.995, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.08, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.181, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.292, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.401, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.541, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.61, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.719, \"ph\": \"X\", \"dur\": 0.04340392444687422, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.814, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.901, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.0, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.104, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.248, \"ph\": \"X\", \"dur\": 0.023448097114978028, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.312, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.427, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.513, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.615, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.746, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.724, \"ph\": \"X\", \"dur\": 0.11898662046643106, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.962, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.042, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.143, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.224, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.367, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.449, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.596, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.725, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.705, \"ph\": \"X\", \"dur\": 0.09079901436012769, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.91, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.889, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705441.344, \"ph\": \"X\", \"dur\": 0.6732597246098478, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.138, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.117, \"ph\": \"X\", \"dur\": 0.0922957014100199, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.942, \"ph\": \"X\", \"dur\": 1.317832947430095, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705440.213, \"ph\": \"X\", \"dur\": 2.140511929187516, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.52, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.5, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705439.518, \"ph\": \"X\", \"dur\": 3.14129666988211, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.803, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.867, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.983, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705443.98, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.077, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.212, \"ph\": \"X\", \"dur\": 0.038414967613900175, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.19, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.409, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.494, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.6, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.688, \"ph\": \"X\", \"dur\": 0.03766662408895407, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.826, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.911, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.028, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.164, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.143, \"ph\": \"X\", \"dur\": 0.10726257190894205, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.364, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.342, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.805, \"ph\": \"X\", \"dur\": 0.6807431598593089, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.6, \"ph\": \"X\", \"dur\": 0.028437053947952075, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705445.579, \"ph\": \"X\", \"dur\": 0.10002858450112967, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705444.388, \"ph\": \"X\", \"dur\": 1.341281044545073, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705442.783, \"ph\": \"X\", \"dur\": 3.02006501884084, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705437.278, \"ph\": \"X\", \"dur\": 8.6318931124117, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.052, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.116, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.242, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.327, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.43, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.56, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.638, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.724, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.806, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.911, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.994, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.075, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.158, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.292, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.376, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.518, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.597, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.724, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.82, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.917, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.029, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.123, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.217, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.309, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.39, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705448.472, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705449.584, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705449.683, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705449.825, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705449.926, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.064, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.148, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.283, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.348, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.47, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.606, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.584, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.803, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.784, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705450.258, \"ph\": \"X\", \"dur\": 0.6700169026684146, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.065, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.131, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.25, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.4, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.378, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.583, \"ph\": \"X\", \"dur\": 0.025443679848167648, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.561, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.041, \"ph\": \"X\", \"dur\": 0.6585423019525745, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705449.564, \"ph\": \"X\", \"dur\": 2.2442822313133757, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.944, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.006, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.168, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.251, \"ph\": \"X\", \"dur\": 0.04639729854665865, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.363, \"ph\": \"X\", \"dur\": 0.04490061149676644, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.509, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.49, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.686, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.768, \"ph\": \"X\", \"dur\": 0.04839288127984827, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.904, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.06, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.039, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.228, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.208, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705452.666, \"ph\": \"X\", \"dur\": 0.664778497993792, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705451.923, \"ph\": \"X\", \"dur\": 1.4969364977338633, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705447.498, \"ph\": \"X\", \"dur\": 6.019675314666487, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.662, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.723, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.853, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.953, \"ph\": \"X\", \"dur\": 0.04614785070500995, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705454.095, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705454.075, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705454.273, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705454.253, \"ph\": \"X\", \"dur\": 0.9459062155318796, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705453.641, \"ph\": \"X\", \"dur\": 1.6199142836666736, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705446.032, \"ph\": \"X\", \"dur\": 9.349804000676665, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705434.616, \"ph\": \"X\", \"dur\": 20.893501768653667, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705413.604, \"ph\": \"X\", \"dur\": 42.3988990928716, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.274, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.341, \"ph\": \"X\", \"dur\": 0.03791607193060277, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.456, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.542, \"ph\": \"X\", \"dur\": 0.045399507180063844, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.656, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.777, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.86, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.945, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.042, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.137, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.231, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.352, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.501, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.585, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.68, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.762, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.858, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705457.94, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.05, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.143, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.25, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.33, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.427, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.571, \"ph\": \"X\", \"dur\": 0.02594257553146505, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.651, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.752, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.842, \"ph\": \"X\", \"dur\": 0.028437053947952075, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.925, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.011, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.11, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.212, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.318, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.402, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.485, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.629, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.69, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.833, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.914, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.998, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705460.1, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705460.183, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.122, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.208, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.347, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.412, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.53, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.618, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.742, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.806, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.955, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.091, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.07, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.313, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.289, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.718, \"ph\": \"X\", \"dur\": 0.702445122082746, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.582, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.55, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705461.324, \"ph\": \"X\", \"dur\": 1.3821904905754603, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.832, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.898, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.018, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.105, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.207, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.336, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.316, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.516, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.597, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.698, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.799, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.919, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.983, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.118, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.251, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.231, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.44, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.419, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.898, \"ph\": \"X\", \"dur\": 0.6360919962041912, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.658, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705464.637, \"ph\": \"X\", \"dur\": 0.0920462535683712, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705463.496, \"ph\": \"X\", \"dur\": 1.2849058323324662, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705462.809, \"ph\": \"X\", \"dur\": 2.02626481771241, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705459.598, \"ph\": \"X\", \"dur\": 5.340927737540368, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.085, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.065, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705458.55, \"ph\": \"X\", \"dur\": 6.677469273094115, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.374, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.437, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.557, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705466.546, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705466.654, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705466.757, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705466.858, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705466.958, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.059, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.161, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.243, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.327, \"ph\": \"X\", \"dur\": 0.05313239027117362, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.485, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.464, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.678, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.761, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.902, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.992, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.086, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.196, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.308, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.407, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.51, \"ph\": \"X\", \"dur\": 0.046896194229956056, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.608, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.749, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.814, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.949, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.04, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.123, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.206, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.291, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.404, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.571, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.551, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.756, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.838, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.955, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.041, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.127, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.214, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.343, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.403, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.523, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.621, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.715, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.844, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.825, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705471.017, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705471.079, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.085, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.222, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.2, \"ph\": \"X\", \"dur\": 0.10102637586772448, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.437, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.416, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.997, \"ph\": \"X\", \"dur\": 1.5727686415950688, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705470.322, \"ph\": \"X\", \"dur\": 2.331090080207124, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.792, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705472.771, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705469.735, \"ph\": \"X\", \"dur\": 3.1974224342530677, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705468.728, \"ph\": \"X\", \"dur\": 4.335403487854448, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705473.212, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705473.192, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705467.657, \"ph\": \"X\", \"dur\": 5.691152507215146, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705465.354, \"ph\": \"X\", \"dur\": 8.13773693810562, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705456.253, \"ph\": \"X\", \"dur\": 17.360821435224743, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705405.995, \"ph\": \"X\", \"dur\": 67.81888139608262, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705337.672, \"ph\": \"X\", \"dur\": 136.52055870376, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705319.017, \"ph\": \"X\", \"dur\": 155.51002509710912, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.307, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.378, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.526, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.632, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.758, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.842, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.947, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.063, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.146, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.278, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.363, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.467, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.55, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.666, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.75, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.853, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705476.956, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.054, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.15, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.263, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.364, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.495, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.589, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.686, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.802, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705477.901, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705478.018, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705478.104, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.079, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.18, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.277, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.357, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.458, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.563, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.678, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.765, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.895, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705479.993, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.088, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.171, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.267, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.351, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.434, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.517, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.616, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.712, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.794, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.893, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705480.974, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.181, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.267, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.396, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.483, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.571, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.658, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.744, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.868, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.956, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.04, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.128, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.255, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.337, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.434, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.533, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.618, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.7, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.786, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.87, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705482.955, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705483.062, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705483.161, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705483.257, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705483.337, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705483.425, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705484.591, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705484.711, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705484.797, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705484.884, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705484.97, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.083, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.17, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.257, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.345, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.481, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.548, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.662, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.77, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.906, \"ph\": \"X\", \"dur\": 0.023697544956626734, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.985, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.133, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.271, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.25, \"ph\": \"X\", \"dur\": 0.09653631471804783, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.499, \"ph\": \"X\", \"dur\": 0.023198649273329326, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.46, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.882, \"ph\": \"X\", \"dur\": 0.7256437713560754, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.76, \"ph\": \"X\", \"dur\": 0.022200857906734515, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705486.738, \"ph\": \"X\", \"dur\": 0.09129791004342509, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705485.46, \"ph\": \"X\", \"dur\": 1.4230999366058474, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.02, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.081, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.205, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.307, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.426, \"ph\": \"X\", \"dur\": 0.0416577895553333, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.52, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.621, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.717, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.815, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.908, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.007, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.142, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.243, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.344, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.44, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.535, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.645, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.754, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.863, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705488.956, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705489.038, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705489.149, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705489.233, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.437, \"ph\": \"X\", \"dur\": 0.029933740997844294, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.52, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.603, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.685, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.771, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.851, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705490.983, \"ph\": \"X\", \"dur\": 0.046646746388307354, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.128, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.207, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.323, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.412, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.497, \"ph\": \"X\", \"dur\": 0.05712355573755286, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.617, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.714, \"ph\": \"X\", \"dur\": 0.032428219414331313, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.801, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.884, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.98, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.079, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.216, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.318, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.405, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.487, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.584, \"ph\": \"X\", \"dur\": 0.031430428047736506, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.678, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.773, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.934, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.015, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.147, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.237, \"ph\": \"X\", \"dur\": 0.036918280564007956, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.338, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.434, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.513, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.624, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.723, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.806, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.935, \"ph\": \"X\", \"dur\": 0.024695336323221538, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705493.915, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.131, \"ph\": \"X\", \"dur\": 0.0202052751735449, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.19, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.289, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.375, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.456, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.543, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.629, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.731, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.859, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705495.81, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705495.935, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.023, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.126, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.232, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.32, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.452, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.516, \"ph\": \"X\", \"dur\": 0.036668832722359254, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.636, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.716, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.799, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.928, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.908, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.121, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.2, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.319, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.422, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.557, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.621, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.742, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.873, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.852, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.053, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.033, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.53, \"ph\": \"X\", \"dur\": 0.6291074566380276, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.273, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.252, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705497.099, \"ph\": \"X\", \"dur\": 1.3008704941979832, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705496.431, \"ph\": \"X\", \"dur\": 2.0392361054781425, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.615, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.595, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.839, \"ph\": \"X\", \"dur\": 3.914834426834736, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.903, \"ph\": \"X\", \"dur\": 0.024196440639924134, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705498.881, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705494.102, \"ph\": \"X\", \"dur\": 4.923850946303737, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705492.915, \"ph\": \"X\", \"dur\": 6.235946593375912, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.303, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.383, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.499, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.608, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.704, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.801, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.918, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705500.018, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705500.144, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705500.256, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705500.382, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.002, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.082, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.248, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.315, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.44, \"ph\": \"X\", \"dur\": 0.03866441545554888, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.531, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.665, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.642, \"ph\": \"X\", \"dur\": 0.10476809349245503, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.862, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.947, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.126, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.266, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.242, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.472, \"ph\": \"X\", \"dur\": 0.022200857906734515, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.438, \"ph\": \"X\", \"dur\": 0.1025230629176167, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.838, \"ph\": \"X\", \"dur\": 0.7658048738615165, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705502.225, \"ph\": \"X\", \"dur\": 1.4632610391112886, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.808, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705503.786, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705500.123, \"ph\": \"X\", \"dur\": 3.799340076151387, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.05, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.129, \"ph\": \"X\", \"dur\": 0.047893985596550864, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.273, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.421, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.402, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.592, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.573, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705504.026, \"ph\": \"X\", \"dur\": 0.6702663505100633, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705499.283, \"ph\": \"X\", \"dur\": 5.516539018061054, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705491.108, \"ph\": \"X\", \"dur\": 13.835125641361984, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.135, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.218, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.381, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.488, \"ph\": \"X\", \"dur\": 0.04589840286336125, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.601, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.704, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.788, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.875, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.012, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.092, \"ph\": \"X\", \"dur\": 0.03492269783081834, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.193, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.275, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.405, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.489, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.634, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.739, \"ph\": \"X\", \"dur\": 0.04889177696314567, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705507.721, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705507.837, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705507.918, \"ph\": \"X\", \"dur\": 0.032927115097628724, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.019, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.167, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.235, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.389, \"ph\": \"X\", \"dur\": 0.03716772840565666, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.527, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.506, \"ph\": \"X\", \"dur\": 0.10177471939267059, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.732, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.709, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.145, \"ph\": \"X\", \"dur\": 0.7204053666814526, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.007, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.072, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.197, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.365, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.45, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.582, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.661, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.805, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.89, \"ph\": \"X\", \"dur\": 0.03267766725598002, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.022, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.001, \"ph\": \"X\", \"dur\": 0.09928024097618357, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.207, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.288, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.426, \"ph\": \"X\", \"dur\": 0.03517214567246704, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.558, \"ph\": \"X\", \"dur\": 0.02594257553146505, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.535, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.737, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.716, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705510.186, \"ph\": \"X\", \"dur\": 0.6585423019525745, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705509.562, \"ph\": \"X\", \"dur\": 1.359490736985428, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.047, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.027, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705508.985, \"ph\": \"X\", \"dur\": 2.1846641971593357, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705506.384, \"ph\": \"X\", \"dur\": 4.881195365381809, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.42, \"ph\": \"X\", \"dur\": 0.02569312768981635, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.483, \"ph\": \"X\", \"dur\": 0.04714564207160476, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.593, \"ph\": \"X\", \"dur\": 0.03616993703906185, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.68, \"ph\": \"X\", \"dur\": 0.030682084522790396, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.797, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.877, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705512.009, \"ph\": \"X\", \"dur\": 0.03367545862257483, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705512.14, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705512.118, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705512.342, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705512.32, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.777, \"ph\": \"X\", \"dur\": 1.5957178430267496, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705513.492, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705513.469, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705511.4, \"ph\": \"X\", \"dur\": 2.2041211288079348, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705505.115, \"ph\": \"X\", \"dur\": 8.585994709548336, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705487.001, \"ph\": \"X\", \"dur\": 26.85006677938303, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705481.161, \"ph\": \"X\", \"dur\": 33.02265362098017, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.385, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.472, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.598, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.718, \"ph\": \"X\", \"dur\": 0.04764453775490217, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.815, \"ph\": \"X\", \"dur\": 0.034174354305872234, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.922, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.02, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.113, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.215, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.31, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.44, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.524, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.621, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.734, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.826, \"ph\": \"X\", \"dur\": 0.02968429315619559, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.955, \"ph\": \"X\", \"dur\": 0.02768871042300597, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.035, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.152, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.239, \"ph\": \"X\", \"dur\": 0.030432636681141694, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.321, \"ph\": \"X\", \"dur\": 0.03592048919741315, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.406, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.488, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.587, \"ph\": \"X\", \"dur\": 0.033176562939277426, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.715, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.778, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.913, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.017, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.115, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.213, \"ph\": \"X\", \"dur\": 0.03392490646422353, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.308, \"ph\": \"X\", \"dur\": 0.03167987588938521, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.434, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.414, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.62, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.706, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.822, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.909, \"ph\": \"X\", \"dur\": 0.042655580921928116, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705518.024, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705518.17, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705518.234, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705518.354, \"ph\": \"X\", \"dur\": 0.034423802147520936, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.397, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.375, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.609, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.587, \"ph\": \"X\", \"dur\": 0.09404183630156082, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705518.149, \"ph\": \"X\", \"dur\": 1.5819982117360707, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.851, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705519.828, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705517.6, \"ph\": \"X\", \"dur\": 2.3852202618448928, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705516.694, \"ph\": \"X\", \"dur\": 3.4334000924527404, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.251, \"ph\": \"X\", \"dur\": 0.028187606106303373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.23, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705515.936, \"ph\": \"X\", \"dur\": 4.448153912279662, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.521, \"ph\": \"X\", \"dur\": 0.02669091905641116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.604, \"ph\": \"X\", \"dur\": 0.03217877157268261, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.707, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.813, \"ph\": \"X\", \"dur\": 0.048143433438199566, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.913, \"ph\": \"X\", \"dur\": 0.03342601078092613, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.015, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.115, \"ph\": \"X\", \"dur\": 0.031180980206087804, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.243, \"ph\": \"X\", \"dur\": 0.02718981473970856, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.323, \"ph\": \"X\", \"dur\": 0.03192932373103391, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.438, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.524, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.677, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.658, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.868, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.947, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.084, \"ph\": \"X\", \"dur\": 0.035421593514115744, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.231, \"ph\": \"X\", \"dur\": 0.029185397472898184, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.206, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.395, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.374, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.846, \"ph\": \"X\", \"dur\": 0.6525555537530056, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705521.223, \"ph\": \"X\", \"dur\": 1.360488528352023, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.729, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.806, \"ph\": \"X\", \"dur\": 0.035671041355764446, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.928, \"ph\": \"X\", \"dur\": 0.03641938488071055, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705523.06, \"ph\": \"X\", \"dur\": 0.026192023373113757, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705523.039, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705523.225, \"ph\": \"X\", \"dur\": 0.025194232006518946, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705523.203, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705522.708, \"ph\": \"X\", \"dur\": 0.6193789908137282, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705520.501, \"ph\": \"X\", \"dur\": 2.9409900530382016, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705514.363, \"ph\": \"X\", \"dur\": 9.22957014100199, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705475.286, \"ph\": \"X\", \"dur\": 48.45374655321056, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705298.708, \"ph\": \"X\", \"dur\": 226.42255862531894, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.573, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.688, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"list.pop\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.845, \"ph\": \"X\", \"dur\": 0.03467324998916964, \"name\": \"list.append\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.985, \"ph\": \"X\", \"dur\": 0.030183188839492996, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.961, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705527.163, \"ph\": \"X\", \"dur\": 0.02868650178960078, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705527.14, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705526.548, \"ph\": \"X\", \"dur\": 0.7263921148810215, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705278.632, \"ph\": \"X\", \"dur\": 248.99459492042672, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705185.81, \"ph\": \"X\", \"dur\": 342.51558412862505, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705095.633, \"ph\": \"X\", \"dur\": 433.3487728430586, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995704602.823, \"ph\": \"X\", \"dur\": 927.2829385700708, \"name\": \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705532.213, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705536.157, \"ph\": \"X\", \"dur\": 0.4008626815294648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705534.438, \"ph\": \"X\", \"dur\": 2.211355116215747, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705537.526, \"ph\": \"X\", \"dur\": 0.1329556995987584, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705536.899, \"ph\": \"X\", \"dur\": 0.8219306382324745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705538.264, \"ph\": \"X\", \"dur\": 0.11100428953367257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705537.864, \"ph\": \"X\", \"dur\": 0.5577653739264987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705538.728, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705538.506, \"ph\": \"X\", \"dur\": 0.3404963038504788, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705538.922, \"ph\": \"X\", \"dur\": 0.14742367441438312, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.157, \"ph\": \"X\", \"dur\": 0.11748993341653885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.473, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.336, \"ph\": \"X\", \"dur\": 0.24371054129078226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.825, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.647, \"ph\": \"X\", \"dur\": 0.28511888300446686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705540.217, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705539.996, \"ph\": \"X\", \"dur\": 0.32278550709342096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705540.506, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705540.376, \"ph\": \"X\", \"dur\": 0.23872158445780822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705540.67, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.061, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705540.835, \"ph\": \"X\", \"dur\": 0.3148031761606625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.206, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.504, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.374, \"ph\": \"X\", \"dur\": 0.2596752031562992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.83, \"ph\": \"X\", \"dur\": 0.13120956470721748, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705541.686, \"ph\": \"X\", \"dur\": 0.3257788811932054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.294, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.093, \"ph\": \"X\", \"dur\": 0.2945979009871176, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.584, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.443, \"ph\": \"X\", \"dur\": 0.2367260017246186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.875, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705542.75, \"ph\": \"X\", \"dur\": 0.22475250532548088, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705543.187, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705543.029, \"ph\": \"X\", \"dur\": 0.2646641599892733, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705544.542, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705544.386, \"ph\": \"X\", \"dur\": 0.27988047832984414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705544.872, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705544.738, \"ph\": \"X\", \"dur\": 0.2364765538829699, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.178, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.045, \"ph\": \"X\", \"dur\": 0.23772379309121341, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.351, \"ph\": \"X\", \"dur\": 0.12048330751632327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.661, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.539, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.952, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705545.818, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.109, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.397, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.254, \"ph\": \"X\", \"dur\": 0.23173704489164457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.668, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.544, \"ph\": \"X\", \"dur\": 0.21851630928426333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.951, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705546.82, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.229, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.104, \"ph\": \"X\", \"dur\": 0.2150240395011815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.376, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.512, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.646, \"ph\": \"X\", \"dur\": 0.07982330932758477, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.912, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705547.78, \"ph\": \"X\", \"dur\": 0.24420943697407965, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.203, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.079, \"ph\": \"X\", \"dur\": 0.2135273524512893, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.351, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.629, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.505, \"ph\": \"X\", \"dur\": 0.2145251438178841, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.775, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.071, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705548.923, \"ph\": \"X\", \"dur\": 0.23697544956626732, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.34, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.215, \"ph\": \"X\", \"dur\": 0.2145251438178841, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.61, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.487, \"ph\": \"X\", \"dur\": 0.2135273524512893, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.758, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.021, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705549.895, \"ph\": \"X\", \"dur\": 0.2155229351844789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.294, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.165, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.577, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.455, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.847, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705550.72, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705551.947, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.265, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.093, \"ph\": \"X\", \"dur\": 0.28312330027127725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.564, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.433, \"ph\": \"X\", \"dur\": 0.22949201431680624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.888, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705552.759, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.159, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.036, \"ph\": \"X\", \"dur\": 0.2155229351844789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.306, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.575, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.441, \"ph\": \"X\", \"dur\": 0.22450305748383217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.722, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.0, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705553.876, \"ph\": \"X\", \"dur\": 0.2150240395011815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.275, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.144, \"ph\": \"X\", \"dur\": 0.22300637043393998, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.666, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.423, \"ph\": \"X\", \"dur\": 0.3422424387420197, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.821, \"ph\": \"X\", \"dur\": 0.09628686687639913, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705554.974, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.271, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.111, \"ph\": \"X\", \"dur\": 0.24969728949035114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.543, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.42, \"ph\": \"X\", \"dur\": 0.2150240395011815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.817, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.692, \"ph\": \"X\", \"dur\": 0.23922048014110564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.113, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705555.986, \"ph\": \"X\", \"dur\": 0.21951410065085813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.381, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.26, \"ph\": \"X\", \"dur\": 0.21053397835150486, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.666, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.545, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.937, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705556.813, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.212, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.085, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.376, \"ph\": \"X\", \"dur\": 0.08980122299353288, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.65, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.526, \"ph\": \"X\", \"dur\": 0.21103287403480225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.92, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705557.792, \"ph\": \"X\", \"dur\": 0.22001299633415553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705558.192, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705558.065, \"ph\": \"X\", \"dur\": 0.2180174136009659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705558.463, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705558.336, \"ph\": \"X\", \"dur\": 0.2150240395011815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705558.604, \"ph\": \"X\", \"dur\": 0.07882551796098997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705559.62, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705559.964, \"ph\": \"X\", \"dur\": 0.07034429134493408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705559.8, \"ph\": \"X\", \"dur\": 0.2646641599892733, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.264, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.125, \"ph\": \"X\", \"dur\": 0.23797324093286212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.42, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.685, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.559, \"ph\": \"X\", \"dur\": 0.218765757125912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.972, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705560.833, \"ph\": \"X\", \"dur\": 0.2359776581996725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.123, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.257, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.522, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.4, \"ph\": \"X\", \"dur\": 0.22126023554239904, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.825, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.674, \"ph\": \"X\", \"dur\": 0.24071716719099787, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705561.969, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.237, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.11, \"ph\": \"X\", \"dur\": 0.23897103229945693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.562, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.402, \"ph\": \"X\", \"dur\": 0.2634169207810298, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.742, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.005, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705562.878, \"ph\": \"X\", \"dur\": 0.22250747475064256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.287, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.155, \"ph\": \"X\", \"dur\": 0.24321164560748484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.592, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.456, \"ph\": \"X\", \"dur\": 0.22999091000010363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.881, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705563.741, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.197, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.041, \"ph\": \"X\", \"dur\": 0.2546862463233252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.478, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.347, \"ph\": \"X\", \"dur\": 0.23148759704999586, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.781, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.631, \"ph\": \"X\", \"dur\": 0.23872158445780822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.051, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705564.928, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.407, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.213, \"ph\": \"X\", \"dur\": 0.29384955746217145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.711, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.565, \"ph\": \"X\", \"dur\": 0.23847213661615954, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.987, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705565.858, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705566.288, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705566.158, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705567.65, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705567.468, \"ph\": \"X\", \"dur\": 0.2758893128634649, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705567.944, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705567.802, \"ph\": \"X\", \"dur\": 0.23622710604132122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.286, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.096, \"ph\": \"X\", \"dur\": 0.29509679667041494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.591, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.446, \"ph\": \"X\", \"dur\": 0.23448097114978028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.737, \"ph\": \"X\", \"dur\": 0.1526620790890059, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705569.143, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705568.945, \"ph\": \"X\", \"dur\": 0.2911056312040357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705569.301, \"ph\": \"X\", \"dur\": 0.1464258830477883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705569.501, \"ph\": \"X\", \"dur\": 0.1446797481562474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705569.719, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.058, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705569.858, \"ph\": \"X\", \"dur\": 0.2945979009871176, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.346, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.209, \"ph\": \"X\", \"dur\": 0.23173704489164457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.495, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.758, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.634, \"ph\": \"X\", \"dur\": 0.21951410065085813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.046, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705570.91, \"ph\": \"X\", \"dur\": 0.22724698374196792, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.315, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.193, \"ph\": \"X\", \"dur\": 0.21228011324304577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.585, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.46, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.86, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705571.735, \"ph\": \"X\", \"dur\": 0.21951410065085813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.145, \"ph\": \"X\", \"dur\": 0.06535533451196004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.01, \"ph\": \"X\", \"dur\": 0.2269975359003192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.295, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.58, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.433, \"ph\": \"X\", \"dur\": 0.2357282103580238, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.846, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.723, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705572.996, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705573.331, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705573.137, \"ph\": \"X\", \"dur\": 0.3080680844361475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705573.499, \"ph\": \"X\", \"dur\": 0.20205275173544895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705573.782, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705574.195, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705573.924, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705574.69, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705574.529, \"ph\": \"X\", \"dur\": 0.2753904171801675, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705574.419, \"ph\": \"X\", \"dur\": 0.42456022648609154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705575.209, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705575.059, \"ph\": \"X\", \"dur\": 1.2467403125602148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705574.896, \"ph\": \"X\", \"dur\": 1.4470469294041226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705576.73, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705576.555, \"ph\": \"X\", \"dur\": 0.2931012139372253, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705576.397, \"ph\": \"X\", \"dur\": 0.4869221868982671, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.207, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.063, \"ph\": \"X\", \"dur\": 0.24645446754891798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705576.941, \"ph\": \"X\", \"dur\": 0.4098428038288181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.65, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.523, \"ph\": \"X\", \"dur\": 0.22974146215845492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.408, \"ph\": \"X\", \"dur\": 0.3953748290131933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705577.857, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.264, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.121, \"ph\": \"X\", \"dur\": 0.24994673733199982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.002, \"ph\": \"X\", \"dur\": 0.39637262037978815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.77, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.604, \"ph\": \"X\", \"dur\": 0.26790698193070644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.456, \"ph\": \"X\", \"dur\": 0.4445160538179877, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.227, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.09, \"ph\": \"X\", \"dur\": 0.2594257553146505, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705578.959, \"ph\": \"X\", \"dur\": 0.42356243511949676, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.581, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.444, \"ph\": \"X\", \"dur\": 0.2871144657376565, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.06, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.908, \"ph\": \"X\", \"dur\": 0.25318955927343295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705579.792, \"ph\": \"X\", \"dur\": 0.39662206822143686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.538, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.362, \"ph\": \"X\", \"dur\": 0.30607250170295786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.25, \"ph\": \"X\", \"dur\": 0.4505028020175566, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.755, \"ph\": \"X\", \"dur\": 0.08605950536880233, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705580.895, \"ph\": \"X\", \"dur\": 0.08431337047726141, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.147, \"ph\": \"X\", \"dur\": 0.14243471758140908, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.028, \"ph\": \"X\", \"dur\": 0.31180980206087805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.681, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.522, \"ph\": \"X\", \"dur\": 0.25493569416497386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.393, \"ph\": \"X\", \"dur\": 0.42480967432774025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.126, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.988, \"ph\": \"X\", \"dur\": 0.23747434524956473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705581.865, \"ph\": \"X\", \"dur\": 0.4028582642626544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.435, \"ph\": \"X\", \"dur\": 0.09678576255969654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.317, \"ph\": \"X\", \"dur\": 0.25368845495673037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.735, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.624, \"ph\": \"X\", \"dur\": 0.2264986402170218, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705583.152, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705583.014, \"ph\": \"X\", \"dur\": 0.24994673733199982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705582.903, \"ph\": \"X\", \"dur\": 0.4013615772127622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.274, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.514, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.4, \"ph\": \"X\", \"dur\": 0.24969728949035114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.966, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.84, \"ph\": \"X\", \"dur\": 0.22874367079186012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705584.728, \"ph\": \"X\", \"dur\": 0.3766662408895407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.275, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.159, \"ph\": \"X\", \"dur\": 0.23922048014110564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.726, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.573, \"ph\": \"X\", \"dur\": 0.24845005028210762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.449, \"ph\": \"X\", \"dur\": 0.4198207174947662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.183, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.051, \"ph\": \"X\", \"dur\": 0.22550084885042698, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705585.919, \"ph\": \"X\", \"dur\": 0.39437703764659854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.68, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.515, \"ph\": \"X\", \"dur\": 0.2664102948808142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.384, \"ph\": \"X\", \"dur\": 0.43354034878544484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.142, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.004, \"ph\": \"X\", \"dur\": 0.25219176790683817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705586.879, \"ph\": \"X\", \"dur\": 0.4240613308027941, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.352, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.757, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.604, \"ph\": \"X\", \"dur\": 0.2564323812148661, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.493, \"ph\": \"X\", \"dur\": 0.39986489016286997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705588.077, \"ph\": \"X\", \"dur\": 0.10751201975059076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705587.944, \"ph\": \"X\", \"dur\": 0.285867226529413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705588.282, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705588.555, \"ph\": \"X\", \"dur\": 0.11524490284170053, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705588.434, \"ph\": \"X\", \"dur\": 0.26790698193070644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.202, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.045, \"ph\": \"X\", \"dur\": 0.29010783983744093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705588.784, \"ph\": \"X\", \"dur\": 0.5844562929829098, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.423, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.707, \"ph\": \"X\", \"dur\": 0.09329349277661471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.581, \"ph\": \"X\", \"dur\": 0.2689047732973012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.174, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.023, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705589.903, \"ph\": \"X\", \"dur\": 0.4098428038288181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.521, \"ph\": \"X\", \"dur\": 0.102273615075968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.394, \"ph\": \"X\", \"dur\": 0.26416526430597587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.83, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.714, \"ph\": \"X\", \"dur\": 0.23448097114978028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705591.106, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705590.996, \"ph\": \"X\", \"dur\": 0.23348317978318547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705591.566, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705591.406, \"ph\": \"X\", \"dur\": 0.26391581646432716, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705591.285, \"ph\": \"X\", \"dur\": 0.4188229261281714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705592.703, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.149, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.011, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705592.863, \"ph\": \"X\", \"dur\": 0.44900611496766435, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.395, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.823, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.692, \"ph\": \"X\", \"dur\": 0.22799532726691402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705593.567, \"ph\": \"X\", \"dur\": 0.38839028944702964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.315, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.142, \"ph\": \"X\", \"dur\": 0.28037937401314156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.013, \"ph\": \"X\", \"dur\": 0.43902820130171627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.795, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.64, \"ph\": \"X\", \"dur\": 0.24919839380705372, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.51, \"ph\": \"X\", \"dur\": 0.4113394908787103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705594.972, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.354, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.215, \"ph\": \"X\", \"dur\": 0.23822268877451083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.104, \"ph\": \"X\", \"dur\": 0.3841496761390017, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.541, \"ph\": \"X\", \"dur\": 0.09379238845991211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.953, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.798, \"ph\": \"X\", \"dur\": 0.2596752031562992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705595.688, \"ph\": \"X\", \"dur\": 0.39936599447957255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.442, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.288, \"ph\": \"X\", \"dur\": 0.2566818290565148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.142, \"ph\": \"X\", \"dur\": 0.4280524962691734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.634, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.02, \"ph\": \"X\", \"dur\": 0.07059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.884, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705596.769, \"ph\": \"X\", \"dur\": 0.3841496761390017, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.327, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.207, \"ph\": \"X\", \"dur\": 0.2504456330152972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.63, \"ph\": \"X\", \"dur\": 0.11873717262478237, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.514, \"ph\": \"X\", \"dur\": 0.26990256466389606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.839, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.237, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.098, \"ph\": \"X\", \"dur\": 0.24071716719099787, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705597.982, \"ph\": \"X\", \"dur\": 0.3901364243385706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.699, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.57, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.442, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.149, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.02, \"ph\": \"X\", \"dur\": 0.2506950808569459, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705598.889, \"ph\": \"X\", \"dur\": 0.41483176066179217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.521, \"ph\": \"X\", \"dur\": 0.0833155791106666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.361, \"ph\": \"X\", \"dur\": 0.27888268696324936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.951, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.827, \"ph\": \"X\", \"dur\": 1.12076915252762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705599.717, \"ph\": \"X\", \"dur\": 1.2676939312587059, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.338, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.198, \"ph\": \"X\", \"dur\": 0.27090035603049084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.066, \"ph\": \"X\", \"dur\": 0.427553600585876, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.839, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.708, \"ph\": \"X\", \"dur\": 0.2264986402170218, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705601.574, \"ph\": \"X\", \"dur\": 0.3901364243385706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.455, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.304, \"ph\": \"X\", \"dur\": 0.24321164560748484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.153, \"ph\": \"X\", \"dur\": 0.430048079002363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.022, \"ph\": \"X\", \"dur\": 0.5891958019742352, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.068, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.921, \"ph\": \"X\", \"dur\": 0.24545667618232317, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.792, \"ph\": \"X\", \"dur\": 0.40834611677892585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705602.67, \"ph\": \"X\", \"dur\": 0.5605093001846344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.287, \"ph\": \"X\", \"dur\": 0.08705729673539714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.872, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.712, \"ph\": \"X\", \"dur\": 0.2758893128634649, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.565, \"ph\": \"X\", \"dur\": 0.4537456239589897, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705603.431, \"ph\": \"X\", \"dur\": 0.6188800951304307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.259, \"ph\": \"X\", \"dur\": 0.10052748018442707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.107, \"ph\": \"X\", \"dur\": 0.2916045268873331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.479, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.849, \"ph\": \"X\", \"dur\": 0.11998441183302587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.731, \"ph\": \"X\", \"dur\": 0.2704014603471934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705604.617, \"ph\": \"X\", \"dur\": 0.41533065634508953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.346, \"ph\": \"X\", \"dur\": 0.09703521040134525, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.223, \"ph\": \"X\", \"dur\": 0.26940366898059864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.089, \"ph\": \"X\", \"dur\": 0.4290502876357682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.845, \"ph\": \"X\", \"dur\": 0.11474600715840312, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.727, \"ph\": \"X\", \"dur\": 0.2646641599892733, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705605.573, \"ph\": \"X\", \"dur\": 0.4482577714427183, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.075, \"ph\": \"X\", \"dur\": 0.08231778774407181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.323, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.211, \"ph\": \"X\", \"dur\": 0.2262491923753731, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.845, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.71, \"ph\": \"X\", \"dur\": 0.24171495855759267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.601, \"ph\": \"X\", \"dur\": 0.3936286941216524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705606.487, \"ph\": \"X\", \"dur\": 0.5325711419199797, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.453, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.304, \"ph\": \"X\", \"dur\": 0.2472028110738641, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.192, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.076, \"ph\": \"X\", \"dur\": 0.5442951904774688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.903, \"ph\": \"X\", \"dur\": 0.10626478054234724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.791, \"ph\": \"X\", \"dur\": 0.25269066359013553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705607.666, \"ph\": \"X\", \"dur\": 0.40734832541233107, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.45, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.299, \"ph\": \"X\", \"dur\": 0.2546862463233252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.166, \"ph\": \"X\", \"dur\": 0.41533065634508953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.042, \"ph\": \"X\", \"dur\": 0.5709861095338798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.672, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.212, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.049, \"ph\": \"X\", \"dur\": 0.2671586384057603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.93, \"ph\": \"X\", \"dur\": 0.4150812085034408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705609.813, \"ph\": \"X\", \"dur\": 0.562504882917824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.431, \"ph\": \"X\", \"dur\": 0.09104846220177638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.811, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.691, \"ph\": \"X\", \"dur\": 0.24420943697407965, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705610.575, \"ph\": \"X\", \"dur\": 0.3901364243385706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.448, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.295, \"ph\": \"X\", \"dur\": 0.25294011143178424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.178, \"ph\": \"X\", \"dur\": 0.39936599447957255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.05, \"ph\": \"X\", \"dur\": 0.5580148217681474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.089, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.935, \"ph\": \"X\", \"dur\": 0.2659113991975168, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.79, \"ph\": \"X\", \"dur\": 0.43902820130171627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705611.664, \"ph\": \"X\", \"dur\": 0.5946836544905065, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.709, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.56, \"ph\": \"X\", \"dur\": 0.2778848955966545, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.433, \"ph\": \"X\", \"dur\": 0.43403924446874226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.315, \"ph\": \"X\", \"dur\": 0.5824607102497201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.367, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.229, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.103, \"ph\": \"X\", \"dur\": 0.3988670987962752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705612.98, \"ph\": \"X\", \"dur\": 0.5520280735685785, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.83, \"ph\": \"X\", \"dur\": 0.10152527155102188, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.71, \"ph\": \"X\", \"dur\": 0.2689047732973012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705613.59, \"ph\": \"X\", \"dur\": 0.41383396929519733, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.434, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.296, \"ph\": \"X\", \"dur\": 0.2357282103580238, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.177, \"ph\": \"X\", \"dur\": 0.38938808081362447, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.062, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.909, \"ph\": \"X\", \"dur\": 0.09528907550980434, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.788, \"ph\": \"X\", \"dur\": 0.264913607830922, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705614.653, \"ph\": \"X\", \"dur\": 0.42306353943619934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.149, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.542, \"ph\": \"X\", \"dur\": 0.11973496399137717, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.423, \"ph\": \"X\", \"dur\": 0.27139925171378826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.29, \"ph\": \"X\", \"dur\": 0.4345381401520396, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.921, \"ph\": \"X\", \"dur\": 0.08805508810199196, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705615.793, \"ph\": \"X\", \"dur\": 0.25119397654024334, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705616.487, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705616.34, \"ph\": \"X\", \"dur\": 0.2614213380478402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705616.22, \"ph\": \"X\", \"dur\": 1.986852058731915, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705616.104, \"ph\": \"X\", \"dur\": 2.12803953710508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705618.844, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705618.693, \"ph\": \"X\", \"dur\": 0.2566818290565148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705618.563, \"ph\": \"X\", \"dur\": 0.4198207174947662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705618.436, \"ph\": \"X\", \"dur\": 0.5774717534167461, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705618.319, \"ph\": \"X\", \"dur\": 0.7351227893387261, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.636, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.477, \"ph\": \"X\", \"dur\": 0.264913607830922, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.369, \"ph\": \"X\", \"dur\": 0.4018604728960596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.246, \"ph\": \"X\", \"dur\": 0.5562686868766065, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.117, \"ph\": \"X\", \"dur\": 0.7181603361066143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.017, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705619.893, \"ph\": \"X\", \"dur\": 0.2571807247398122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.567, \"ph\": \"X\", \"dur\": 0.12946342981567657, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.45, \"ph\": \"X\", \"dur\": 0.2965934837203072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.318, \"ph\": \"X\", \"dur\": 0.4532467282756923, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.2, \"ph\": \"X\", \"dur\": 0.6096505249894287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.226, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.118, \"ph\": \"X\", \"dur\": 0.2546862463233252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.988, \"ph\": \"X\", \"dur\": 0.42356243511949676, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705620.865, \"ph\": \"X\", \"dur\": 0.5732311401087181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.988, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.84, \"ph\": \"X\", \"dur\": 0.24420943697407965, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.731, \"ph\": \"X\", \"dur\": 0.4028582642626544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.619, \"ph\": \"X\", \"dur\": 0.5462907732106583, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705621.496, \"ph\": \"X\", \"dur\": 0.7016967785577999, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705622.753, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705622.6, \"ph\": \"X\", \"dur\": 0.2539379027983791, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705622.491, \"ph\": \"X\", \"dur\": 0.39737041174638293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705622.383, \"ph\": \"X\", \"dur\": 0.5353150681781155, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705622.271, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.348, \"ph\": \"X\", \"dur\": 0.18209692440355277, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.241, \"ph\": \"X\", \"dur\": 0.33974796032553267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.132, \"ph\": \"X\", \"dur\": 0.48442770848178013, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.009, \"ph\": \"X\", \"dur\": 0.6435754314536523, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.233, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.08, \"ph\": \"X\", \"dur\": 0.25169287222354075, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.968, \"ph\": \"X\", \"dur\": 0.3991165466379239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.843, \"ph\": \"X\", \"dur\": 0.5552708955100116, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705623.709, \"ph\": \"X\", \"dur\": 0.7196570231565065, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.82, \"ph\": \"X\", \"dur\": 0.13644796938184023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.711, \"ph\": \"X\", \"dur\": 0.2763882085467623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.602, \"ph\": \"X\", \"dur\": 0.41483176066179217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705624.479, \"ph\": \"X\", \"dur\": 0.569988318167285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705625.106, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.569, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.429, \"ph\": \"X\", \"dur\": 0.29360010962052274, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.298, \"ph\": \"X\", \"dur\": 0.45075224985920526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.171, \"ph\": \"X\", \"dur\": 0.6106483163560236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.337, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.197, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.078, \"ph\": \"X\", \"dur\": 0.3951253811715446, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.964, \"ph\": \"X\", \"dur\": 0.5398051293277921, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705626.852, \"ph\": \"X\", \"dur\": 0.6817409512259037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.931, \"ph\": \"X\", \"dur\": 0.11948551614972847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.823, \"ph\": \"X\", \"dur\": 0.2579290682647583, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.711, \"ph\": \"X\", \"dur\": 0.39786930742968035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705627.593, \"ph\": \"X\", \"dur\": 0.5437962947941714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.666, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.516, \"ph\": \"X\", \"dur\": 0.2561829333732174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.408, \"ph\": \"X\", \"dur\": 0.393129798438355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.3, \"ph\": \"X\", \"dur\": 0.5320722462366823, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.189, \"ph\": \"X\", \"dur\": 0.67475641165974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.405, \"ph\": \"X\", \"dur\": 0.06984539566163668, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.258, \"ph\": \"X\", \"dur\": 0.2452072283406745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.148, \"ph\": \"X\", \"dur\": 0.38564636318889395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.039, \"ph\": \"X\", \"dur\": 0.5195998541542471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705628.923, \"ph\": \"X\", \"dur\": 0.6645290501521433, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.228, \"ph\": \"X\", \"dur\": 0.09903079313453486, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.081, \"ph\": \"X\", \"dur\": 0.2771365520717084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.972, \"ph\": \"X\", \"dur\": 0.4200701653364149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.863, \"ph\": \"X\", \"dur\": 0.5570170304015526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.754, \"ph\": \"X\", \"dur\": 0.6929661041000953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705629.638, \"ph\": \"X\", \"dur\": 0.8438820482975603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.888, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.779, \"ph\": \"X\", \"dur\": 0.2130284567679919, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.67, \"ph\": \"X\", \"dur\": 0.3594543398157802, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705630.543, \"ph\": \"X\", \"dur\": 0.5208470933624907, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.231, \"ph\": \"X\", \"dur\": 0.09054956651847898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.114, \"ph\": \"X\", \"dur\": 0.234730418991429, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.734, \"ph\": \"X\", \"dur\": 0.06809926077009577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.627, \"ph\": \"X\", \"dur\": 0.20354943878534118, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.521, \"ph\": \"X\", \"dur\": 0.34548526068345287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.409, \"ph\": \"X\", \"dur\": 0.48392881279848277, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.377, \"ph\": \"X\", \"dur\": 0.11574379852499793, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.27, \"ph\": \"X\", \"dur\": 0.2546862463233252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.162, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.054, \"ph\": \"X\", \"dur\": 0.5285799764536004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705631.944, \"ph\": \"X\", \"dur\": 0.6787475771261192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.787, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.675, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705633.406, \"ph\": \"X\", \"dur\": 0.12572171219094602, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705633.293, \"ph\": \"X\", \"dur\": 1.1911134438725541, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705633.174, \"ph\": \"X\", \"dur\": 1.340283253178478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705633.064, \"ph\": \"X\", \"dur\": 1.4934442279507814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705632.953, \"ph\": \"X\", \"dur\": 1.641366798048462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705634.941, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705634.814, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705634.673, \"ph\": \"X\", \"dur\": 0.41408341713684604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.874, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.711, \"ph\": \"X\", \"dur\": 0.2736442822886266, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.603, \"ph\": \"X\", \"dur\": 0.41258673008695385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.497, \"ph\": \"X\", \"dur\": 0.5472885645772532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.39, \"ph\": \"X\", \"dur\": 0.6862310123755804, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.276, \"ph\": \"X\", \"dur\": 0.8314096562151252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705635.152, \"ph\": \"X\", \"dur\": 0.9942990968117279, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.933, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.781, \"ph\": \"X\", \"dur\": 0.2472028110738641, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.67, \"ph\": \"X\", \"dur\": 0.3936286941216524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.561, \"ph\": \"X\", \"dur\": 0.5305755591867901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.444, \"ph\": \"X\", \"dur\": 0.679745368492714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.329, \"ph\": \"X\", \"dur\": 0.827418490748746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705636.212, \"ph\": \"X\", \"dur\": 0.9960452317032688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.715, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.607, \"ph\": \"X\", \"dur\": 0.19955827331896195, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.498, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.391, \"ph\": \"X\", \"dur\": 0.4682135987746145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.269, \"ph\": \"X\", \"dur\": 0.6238690519634048, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.51, \"ph\": \"X\", \"dur\": 0.11025594600872647, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.384, \"ph\": \"X\", \"dur\": 0.2888606006291974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.269, \"ph\": \"X\", \"dur\": 0.4288008397941195, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.163, \"ph\": \"X\", \"dur\": 0.5657477048592571, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.056, \"ph\": \"X\", \"dur\": 0.7039418091326383, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705637.944, \"ph\": \"X\", \"dur\": 0.8558555446966981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.657, \"ph\": \"X\", \"dur\": 0.07832662227769256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.503, \"ph\": \"X\", \"dur\": 0.2778848955966545, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.396, \"ph\": \"X\", \"dur\": 0.41533065634508953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.289, \"ph\": \"X\", \"dur\": 0.5497830429937401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.18, \"ph\": \"X\", \"dur\": 0.6902221778419596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705639.072, \"ph\": \"X\", \"dur\": 0.8299129691652329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.966, \"ph\": \"X\", \"dur\": 0.974842165163129, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705638.851, \"ph\": \"X\", \"dur\": 1.128252587777081, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.867, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.723, \"ph\": \"X\", \"dur\": 0.2482006024404589, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.612, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.484, \"ph\": \"X\", \"dur\": 0.5462907732106583, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.373, \"ph\": \"X\", \"dur\": 0.685732116692283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.265, \"ph\": \"X\", \"dur\": 0.8246745644906103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.156, \"ph\": \"X\", \"dur\": 1.845914028200398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705640.048, \"ph\": \"X\", \"dur\": 1.9998233464976474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705643.089, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.945, \"ph\": \"X\", \"dur\": 0.2596752031562992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.835, \"ph\": \"X\", \"dur\": 0.39986489016286997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.723, \"ph\": \"X\", \"dur\": 0.5413018163776843, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.604, \"ph\": \"X\", \"dur\": 0.6937144476250414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.488, \"ph\": \"X\", \"dur\": 0.8393919871478837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.373, \"ph\": \"X\", \"dur\": 0.9800805698377518, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.259, \"ph\": \"X\", \"dur\": 1.1215174960525662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705642.138, \"ph\": \"X\", \"dur\": 1.2681928269420033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705645.075, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.916, \"ph\": \"X\", \"dur\": 0.25269066359013553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.805, \"ph\": \"X\", \"dur\": 0.3951253811715446, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.693, \"ph\": \"X\", \"dur\": 0.5335689332865745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.579, \"ph\": \"X\", \"dur\": 0.6760036508679835, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.466, \"ph\": \"X\", \"dur\": 0.8161933378745544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.35, \"ph\": \"X\", \"dur\": 0.9613719817140992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.235, \"ph\": \"X\", \"dur\": 1.1038066992955082, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705644.092, \"ph\": \"X\", \"dur\": 1.2739301272999233, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705646.581, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705646.442, \"ph\": \"X\", \"dur\": 0.22974146215845492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705646.322, \"ph\": \"X\", \"dur\": 0.38215409340581213, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705646.198, \"ph\": \"X\", \"dur\": 0.532321694078331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705646.09, \"ph\": \"X\", \"dur\": 0.6677718720935764, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705645.982, \"ph\": \"X\", \"dur\": 0.802224258742227, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705645.875, \"ph\": \"X\", \"dur\": 0.934681062657688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705645.768, \"ph\": \"X\", \"dur\": 1.0681356579397439, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705645.663, \"ph\": \"X\", \"dur\": 1.2000935661719074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.005, \"ph\": \"X\", \"dur\": 0.07433545681131332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.842, \"ph\": \"X\", \"dur\": 0.27139925171378826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.735, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.625, \"ph\": \"X\", \"dur\": 0.5437962947941714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.489, \"ph\": \"X\", \"dur\": 0.7074340789157201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.373, \"ph\": \"X\", \"dur\": 0.8486215572888857, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.266, \"ph\": \"X\", \"dur\": 0.9820761525709414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.158, \"ph\": \"X\", \"dur\": 1.117526330586187, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705647.048, \"ph\": \"X\", \"dur\": 1.2806652190244383, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.26, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.152, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.046, \"ph\": \"X\", \"dur\": 0.34548526068345287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.938, \"ph\": \"X\", \"dur\": 0.4889177696314567, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.828, \"ph\": \"X\", \"dur\": 0.6238690519634048, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.719, \"ph\": \"X\", \"dur\": 0.7593192299786502, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.605, \"ph\": \"X\", \"dur\": 0.8967649907270852, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705648.475, \"ph\": \"X\", \"dur\": 1.0524204439158755, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705650.525, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705650.394, \"ph\": \"X\", \"dur\": 1.1137846129614564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705650.279, \"ph\": \"X\", \"dur\": 1.2754268143498155, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705650.171, \"ph\": \"X\", \"dur\": 1.4143692621481427, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705650.065, \"ph\": \"X\", \"dur\": 1.5478238574301986, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.956, \"ph\": \"X\", \"dur\": 1.7009848322025019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.849, \"ph\": \"X\", \"dur\": 1.8344394274845577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.742, \"ph\": \"X\", \"dur\": 1.9718851882329926, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705649.628, \"ph\": \"X\", \"dur\": 2.115816592864294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.662, \"ph\": \"X\", \"dur\": 0.11125373737532128, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.545, \"ph\": \"X\", \"dur\": 0.2743926258135727, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.427, \"ph\": \"X\", \"dur\": 0.4170767912366305, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.314, \"ph\": \"X\", \"dur\": 0.5610081958679318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.198, \"ph\": \"X\", \"dur\": 0.7039418091326383, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705652.083, \"ph\": \"X\", \"dur\": 0.848372109447237, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705651.969, \"ph\": \"X\", \"dur\": 0.9925529619201869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705651.848, \"ph\": \"X\", \"dur\": 1.1414733233844623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.784, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.67, \"ph\": \"X\", \"dur\": 0.21851630928426333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.561, \"ph\": \"X\", \"dur\": 0.35396648729950875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.426, \"ph\": \"X\", \"dur\": 0.5215954368874368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.307, \"ph\": \"X\", \"dur\": 0.6710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.193, \"ph\": \"X\", \"dur\": 0.8171911292411491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705653.079, \"ph\": \"X\", \"dur\": 0.9613719817140992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.959, \"ph\": \"X\", \"dur\": 0.09030011867683028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.845, \"ph\": \"X\", \"dur\": 0.2486994981237563, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.732, \"ph\": \"X\", \"dur\": 0.388140841605381, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.616, \"ph\": \"X\", \"dur\": 0.5355645160197642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.504, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.391, \"ph\": \"X\", \"dur\": 0.8254229080155564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.265, \"ph\": \"X\", \"dur\": 0.9813278090459953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705654.137, \"ph\": \"X\", \"dur\": 1.1419722190677597, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705656.362, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705656.219, \"ph\": \"X\", \"dur\": 0.24670391539056669, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705656.101, \"ph\": \"X\", \"dur\": 0.3953748290131933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.988, \"ph\": \"X\", \"dur\": 0.537310650911305, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.871, \"ph\": \"X\", \"dur\": 0.6827387425924986, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.751, \"ph\": \"X\", \"dur\": 0.83240744758172, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.63, \"ph\": \"X\", \"dur\": 0.9843211831457798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.515, \"ph\": \"X\", \"dur\": 1.1292503791436759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705655.374, \"ph\": \"X\", \"dur\": 1.3003715985146858, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.591, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.479, \"ph\": \"X\", \"dur\": 0.24420943697407965, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.358, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.237, \"ph\": \"X\", \"dur\": 0.5422996077442791, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.122, \"ph\": \"X\", \"dur\": 0.6917188648918519, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705657.001, \"ph\": \"X\", \"dur\": 0.8433831526142629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705656.886, \"ph\": \"X\", \"dur\": 1.8489074023001824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705656.773, \"ph\": \"X\", \"dur\": 1.983359788948833, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.911, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.755, \"ph\": \"X\", \"dur\": 0.28636612221271035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.636, \"ph\": \"X\", \"dur\": 0.4407743361932572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.521, \"ph\": \"X\", \"dur\": 0.5862024278744506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.404, \"ph\": \"X\", \"dur\": 0.7331272066055364, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.288, \"ph\": \"X\", \"dur\": 0.87855529828673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.175, \"ph\": \"X\", \"dur\": 1.0222372550763825, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705659.03, \"ph\": \"X\", \"dur\": 1.2013408053801509, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705658.864, \"ph\": \"X\", \"dur\": 1.3981551524409772, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705661.361, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705661.194, \"ph\": \"X\", \"dur\": 0.27090035603049084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705661.079, \"ph\": \"X\", \"dur\": 0.4195712696531175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.961, \"ph\": \"X\", \"dur\": 0.5679927354340953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.846, \"ph\": \"X\", \"dur\": 0.7144186184818837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.729, \"ph\": \"X\", \"dur\": 0.864336771312754, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.609, \"ph\": \"X\", \"dur\": 1.0145043719852729, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.495, \"ph\": \"X\", \"dur\": 1.16117970287471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705660.373, \"ph\": \"X\", \"dur\": 1.3153384690136078, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.747, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.607, \"ph\": \"X\", \"dur\": 0.23298428409988808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.492, \"ph\": \"X\", \"dur\": 0.38215409340581213, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.376, \"ph\": \"X\", \"dur\": 0.5288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.262, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.133, \"ph\": \"X\", \"dur\": 0.8339041346316123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705662.02, \"ph\": \"X\", \"dur\": 0.9768377478963186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705661.904, \"ph\": \"X\", \"dur\": 1.1252592136772968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705661.788, \"ph\": \"X\", \"dur\": 1.2701884096751928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.023, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.91, \"ph\": \"X\", \"dur\": 0.25269066359013553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.754, \"ph\": \"X\", \"dur\": 0.44002599266831105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.636, \"ph\": \"X\", \"dur\": 0.5857035321911532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.519, \"ph\": \"X\", \"dur\": 0.7341249979721313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.402, \"ph\": \"X\", \"dur\": 0.8835442551197039, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.287, \"ph\": \"X\", \"dur\": 1.0279745554343025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705663.167, \"ph\": \"X\", \"dur\": 1.1803871866816598, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.254, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.139, \"ph\": \"X\", \"dur\": 0.2339820754664829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.024, \"ph\": \"X\", \"dur\": 0.3774145844144868, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.908, \"ph\": \"X\", \"dur\": 0.5243393631455725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.792, \"ph\": \"X\", \"dur\": 0.6702663505100633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.68, \"ph\": \"X\", \"dur\": 0.8151955465079596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.548, \"ph\": \"X\", \"dur\": 0.9788333306295083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705664.433, \"ph\": \"X\", \"dur\": 1.124261422310702, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705666.459, \"ph\": \"X\", \"dur\": 0.09878134529288615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705666.342, \"ph\": \"X\", \"dur\": 0.2506950808569459, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705666.225, \"ph\": \"X\", \"dur\": 1.2898947891654402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705666.108, \"ph\": \"X\", \"dur\": 1.431581163221903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.99, \"ph\": \"X\", \"dur\": 1.5844926901525578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.874, \"ph\": \"X\", \"dur\": 1.7304196775170488, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.761, \"ph\": \"X\", \"dur\": 1.8765961127231883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705665.644, \"ph\": \"X\", \"dur\": 2.0247681306625176, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.565, \"ph\": \"X\", \"dur\": 0.08456281831891012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.451, \"ph\": \"X\", \"dur\": 0.2339820754664829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.339, \"ph\": \"X\", \"dur\": 0.3761673452062433, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.223, \"ph\": \"X\", \"dur\": 0.5235910196206264, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.109, \"ph\": \"X\", \"dur\": 0.6692685591434686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705667.995, \"ph\": \"X\", \"dur\": 0.8151955465079596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705667.881, \"ph\": \"X\", \"dur\": 0.9601247425058557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705667.76, \"ph\": \"X\", \"dur\": 1.1142835086447538, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.964, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.788, \"ph\": \"X\", \"dur\": 0.27289593876368046, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.662, \"ph\": \"X\", \"dur\": 0.4330414531021474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.549, \"ph\": \"X\", \"dur\": 0.5764739620501512, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.441, \"ph\": \"X\", \"dur\": 0.7169130968983708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.33, \"ph\": \"X\", \"dur\": 0.8583500231131851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.215, \"ph\": \"X\", \"dur\": 1.0055242496859196, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705669.075, \"ph\": \"X\", \"dur\": 1.1751487820070372, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705668.963, \"ph\": \"X\", \"dur\": 1.3173340517467975, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.285, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.127, \"ph\": \"X\", \"dur\": 0.25368845495673037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.02, \"ph\": \"X\", \"dur\": 0.3953748290131933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.913, \"ph\": \"X\", \"dur\": 0.5338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.806, \"ph\": \"X\", \"dur\": 0.6712641418766582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.695, \"ph\": \"X\", \"dur\": 0.8146966508246621, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.587, \"ph\": \"X\", \"dur\": 0.9551357856728816, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.479, \"ph\": \"X\", \"dur\": 1.0945771291545063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705670.368, \"ph\": \"X\", \"dur\": 1.2377601902608615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.506, \"ph\": \"X\", \"dur\": 0.10302195860091411, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.379, \"ph\": \"X\", \"dur\": 0.2614213380478402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.272, \"ph\": \"X\", \"dur\": 0.39836820311297777, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.164, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.055, \"ph\": \"X\", \"dur\": 0.6687696634601712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.947, \"ph\": \"X\", \"dur\": 0.802224258742227, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.835, \"ph\": \"X\", \"dur\": 0.9396700194906621, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705671.721, \"ph\": \"X\", \"dur\": 1.0811069457054765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.845, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.695, \"ph\": \"X\", \"dur\": 0.2559334855315687, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.588, \"ph\": \"X\", \"dur\": 0.39737041174638293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.48, \"ph\": \"X\", \"dur\": 0.5335689332865745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.373, \"ph\": \"X\", \"dur\": 0.6700169026684146, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.266, \"ph\": \"X\", \"dur\": 0.8104560375166342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.151, \"ph\": \"X\", \"dur\": 1.8611303465409688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705673.038, \"ph\": \"X\", \"dur\": 2.006558438222162, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705672.926, \"ph\": \"X\", \"dur\": 2.153483216953248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705676.186, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.998, \"ph\": \"X\", \"dur\": 0.28511888300446686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.889, \"ph\": \"X\", \"dur\": 0.4280524962691734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.781, \"ph\": \"X\", \"dur\": 0.5664960483842032, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.668, \"ph\": \"X\", \"dur\": 0.7104274530155045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.553, \"ph\": \"X\", \"dur\": 0.8568533360632928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.444, \"ph\": \"X\", \"dur\": 0.9982902622781071, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.3, \"ph\": \"X\", \"dur\": 1.1734026471154961, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705675.19, \"ph\": \"X\", \"dur\": 1.3148395733303104, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.562, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.394, \"ph\": \"X\", \"dur\": 0.26391581646432716, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.284, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.177, \"ph\": \"X\", \"dur\": 0.5445446383191175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.067, \"ph\": \"X\", \"dur\": 0.6849837731673368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705676.932, \"ph\": \"X\", \"dur\": 0.8511160357053728, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705676.822, \"ph\": \"X\", \"dur\": 0.9890606921371051, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705676.708, \"ph\": \"X\", \"dur\": 1.1344887838182987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705676.596, \"ph\": \"X\", \"dur\": 1.2779212927663024, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.75, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.622, \"ph\": \"X\", \"dur\": 0.26266857725608367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.514, \"ph\": \"X\", \"dur\": 0.39961544232122126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.404, \"ph\": \"X\", \"dur\": 0.5403040250110895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.296, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.187, \"ph\": \"X\", \"dur\": 0.8216811903908258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705678.077, \"ph\": \"X\", \"dur\": 0.9621203252390453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705677.964, \"ph\": \"X\", \"dur\": 1.1043055949788056, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.089, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.94, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.831, \"ph\": \"X\", \"dur\": 0.38764194592208356, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.723, \"ph\": \"X\", \"dur\": 0.5268338415620596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.616, \"ph\": \"X\", \"dur\": 0.6657762893603867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.508, \"ph\": \"X\", \"dur\": 0.8042198414754166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.4, \"ph\": \"X\", \"dur\": 0.9446589763236362, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.29, \"ph\": \"X\", \"dur\": 1.0865947982217479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705679.172, \"ph\": \"X\", \"dur\": 1.2370118467359152, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705681.406, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705681.267, \"ph\": \"X\", \"dur\": 0.23323373194153676, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705681.149, \"ph\": \"X\", \"dur\": 0.38664415455548873, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705681.041, \"ph\": \"X\", \"dur\": 0.5240899153039238, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.932, \"ph\": \"X\", \"dur\": 0.6650279458354407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.823, \"ph\": \"X\", \"dur\": 0.8059659763669575, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.715, \"ph\": \"X\", \"dur\": 0.9449084241652849, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.605, \"ph\": \"X\", \"dur\": 1.085597006855153, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705680.497, \"ph\": \"X\", \"dur\": 1.2210471848703985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.601, \"ph\": \"X\", \"dur\": 0.08905287946858677, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.473, \"ph\": \"X\", \"dur\": 0.25269066359013553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.363, \"ph\": \"X\", \"dur\": 0.3916331113884628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.256, \"ph\": \"X\", \"dur\": 0.532321694078331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.145, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705683.035, \"ph\": \"X\", \"dur\": 0.8151955465079596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705682.924, \"ph\": \"X\", \"dur\": 0.9541379943062869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705682.803, \"ph\": \"X\", \"dur\": 1.1018111165623186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705682.666, \"ph\": \"X\", \"dur\": 1.2639522136339751, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.833, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.721, \"ph\": \"X\", \"dur\": 0.26092244236454276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.612, \"ph\": \"X\", \"dur\": 0.4028582642626544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.502, \"ph\": \"X\", \"dur\": 0.5447940861607662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.392, \"ph\": \"X\", \"dur\": 0.6867299080588778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.276, \"ph\": \"X\", \"dur\": 0.8336546867899636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.159, \"ph\": \"X\", \"dur\": 0.9793322263128057, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705684.047, \"ph\": \"X\", \"dur\": 1.1167779870612409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.065, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.954, \"ph\": \"X\", \"dur\": 0.22150968338404775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.847, \"ph\": \"X\", \"dur\": 0.3597037876574289, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.737, \"ph\": \"X\", \"dur\": 0.502138505238838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.626, \"ph\": \"X\", \"dur\": 0.6455710141868419, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.519, \"ph\": \"X\", \"dur\": 0.7815200878853846, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.405, \"ph\": \"X\", \"dur\": 0.9214603270503068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705685.265, \"ph\": \"X\", \"dur\": 1.0870936939050453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.396, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.23, \"ph\": \"X\", \"dur\": 0.2644147121476246, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.121, \"ph\": \"X\", \"dur\": 0.40635053404573623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.013, \"ph\": \"X\", \"dur\": 0.5447940861607662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.905, \"ph\": \"X\", \"dur\": 0.6847343253256881, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.796, \"ph\": \"X\", \"dur\": 0.8244251166489616, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.686, \"ph\": \"X\", \"dur\": 0.9668598342303707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.574, \"ph\": \"X\", \"dur\": 1.1087956561284822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705686.458, \"ph\": \"X\", \"dur\": 1.2552215391762707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.608, \"ph\": \"X\", \"dur\": 0.1132493201085109, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.482, \"ph\": \"X\", \"dur\": 0.27688710423005974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.373, \"ph\": \"X\", \"dur\": 0.41458231282014346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.261, \"ph\": \"X\", \"dur\": 0.5580148217681474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.128, \"ph\": \"X\", \"dur\": 0.7241470843061831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705688.019, \"ph\": \"X\", \"dur\": 0.862590636421213, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.911, \"ph\": \"X\", \"dur\": 0.9965441273865662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705687.801, \"ph\": \"X\", \"dur\": 1.1334909924517038, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.977, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.82, \"ph\": \"X\", \"dur\": 0.25343900711508166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.696, \"ph\": \"X\", \"dur\": 0.4113394908787103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.587, \"ph\": \"X\", \"dur\": 0.5502819386770376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.479, \"ph\": \"X\", \"dur\": 1.555806188362957, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.371, \"ph\": \"X\", \"dur\": 1.6892607836450129, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.264, \"ph\": \"X\", \"dur\": 1.8202209005105816, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.152, \"ph\": \"X\", \"dur\": 1.9706379490247492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705689.035, \"ph\": \"X\", \"dur\": 2.1120748752395633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.215, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.057, \"ph\": \"X\", \"dur\": 0.25269066359013553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.949, \"ph\": \"X\", \"dur\": 0.393129798438355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.84, \"ph\": \"X\", \"dur\": 0.5325711419199797, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.728, \"ph\": \"X\", \"dur\": 0.674008068134794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.614, \"ph\": \"X\", \"dur\": 0.8174405770827978, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.498, \"ph\": \"X\", \"dur\": 0.9643653558138836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.384, \"ph\": \"X\", \"dur\": 1.1087956561284822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705691.267, \"ph\": \"X\", \"dur\": 1.256718226226163, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705693.62, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705693.454, \"ph\": \"X\", \"dur\": 0.2594257553146505, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705693.337, \"ph\": \"X\", \"dur\": 0.4103416995121155, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705693.2, \"ph\": \"X\", \"dur\": 0.5784695447833409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705693.086, \"ph\": \"X\", \"dur\": 0.7243965321478318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.956, \"ph\": \"X\", \"dur\": 0.8850409421695962, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.842, \"ph\": \"X\", \"dur\": 1.0307184816924384, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.722, \"ph\": \"X\", \"dur\": 1.1823827694148494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705692.607, \"ph\": \"X\", \"dur\": 1.3263141740461508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.932, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.783, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.675, \"ph\": \"X\", \"dur\": 0.38863973728867834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.569, \"ph\": \"X\", \"dur\": 0.5245888109872212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.461, \"ph\": \"X\", \"dur\": 0.6637807066271972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.354, \"ph\": \"X\", \"dur\": 0.8017253630589296, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.246, \"ph\": \"X\", \"dur\": 0.9421644979071491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.14, \"ph\": \"X\", \"dur\": 1.0791113629722868, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705694.025, \"ph\": \"X\", \"dur\": 1.2250383503367777, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.296, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.157, \"ph\": \"X\", \"dur\": 0.2354787625163751, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.009, \"ph\": \"X\", \"dur\": 0.4168273433949818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.902, \"ph\": \"X\", \"dur\": 0.5550214476683629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.793, \"ph\": \"X\", \"dur\": 0.6939638954666901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.684, \"ph\": \"X\", \"dur\": 0.8339041346316123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.576, \"ph\": \"X\", \"dur\": 0.9738443737965342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.468, \"ph\": \"X\", \"dur\": 1.1127868215948615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705695.352, \"ph\": \"X\", \"dur\": 1.2597116003259472, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705697.498, \"ph\": \"X\", \"dur\": 0.10077692802607578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705697.381, \"ph\": \"X\", \"dur\": 0.25318955927343295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705697.272, \"ph\": \"X\", \"dur\": 0.3916331113884628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705697.165, \"ph\": \"X\", \"dur\": 0.5295777678201953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705697.042, \"ph\": \"X\", \"dur\": 0.6832376382757959, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.935, \"ph\": \"X\", \"dur\": 0.8216811903908258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.815, \"ph\": \"X\", \"dur\": 1.8598831073327253, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705696.699, \"ph\": \"X\", \"dur\": 1.9990750029727011, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.596, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.487, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.379, \"ph\": \"X\", \"dur\": 0.39063532002186796, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.262, \"ph\": \"X\", \"dur\": 0.5378095465946025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.148, \"ph\": \"X\", \"dur\": 0.6837365339590933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705699.034, \"ph\": \"X\", \"dur\": 0.8299129691652329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705698.92, \"ph\": \"X\", \"dur\": 0.9713498953800472, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705698.787, \"ph\": \"X\", \"dur\": 1.132493201085109, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.795, \"ph\": \"X\", \"dur\": 0.1037703021258602, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.676, \"ph\": \"X\", \"dur\": 0.258178516106407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.568, \"ph\": \"X\", \"dur\": 0.3971209639047343, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.463, \"ph\": \"X\", \"dur\": 0.5310744548700875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.355, \"ph\": \"X\", \"dur\": 0.6692685591434686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.247, \"ph\": \"X\", \"dur\": 0.8102065896749855, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.136, \"ph\": \"X\", \"dur\": 0.9491490374733128, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705700.018, \"ph\": \"X\", \"dur\": 1.093080442104614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.118, \"ph\": \"X\", \"dur\": 0.07084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.964, \"ph\": \"X\", \"dur\": 0.25493569416497386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.858, \"ph\": \"X\", \"dur\": 0.39637262037978815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.752, \"ph\": \"X\", \"dur\": 0.5318227983950335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.645, \"ph\": \"X\", \"dur\": 0.6682707677768738, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.538, \"ph\": \"X\", \"dur\": 0.8067143198919037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.432, \"ph\": \"X\", \"dur\": 0.9449084241652849, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.324, \"ph\": \"X\", \"dur\": 1.0848486633302068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705701.207, \"ph\": \"X\", \"dur\": 1.2332701291111847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.301, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.193, \"ph\": \"X\", \"dur\": 0.22101078770075033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.084, \"ph\": \"X\", \"dur\": 0.3587059962908341, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.976, \"ph\": \"X\", \"dur\": 0.4961517570392691, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.869, \"ph\": \"X\", \"dur\": 0.6281096652714327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.761, \"ph\": \"X\", \"dur\": 0.7613148127118399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.652, \"ph\": \"X\", \"dur\": 0.8942705123105982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705702.53, \"ph\": \"X\", \"dur\": 1.0426919780915762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.455, \"ph\": \"X\", \"dur\": 0.08057165285253089, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.34, \"ph\": \"X\", \"dur\": 0.23348317978318547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.234, \"ph\": \"X\", \"dur\": 0.3709289405316205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.126, \"ph\": \"X\", \"dur\": 0.5068780142301633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.02, \"ph\": \"X\", \"dur\": 0.6378381310957322, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.913, \"ph\": \"X\", \"dur\": 0.7692971436445982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.781, \"ph\": \"X\", \"dur\": 0.9269481795665783, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705703.665, \"ph\": \"X\", \"dur\": 1.0683851057813925, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.609, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.5, \"ph\": \"X\", \"dur\": 0.24021827150770045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.394, \"ph\": \"X\", \"dur\": 0.3766662408895407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.284, \"ph\": \"X\", \"dur\": 0.5166064800544627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.177, \"ph\": \"X\", \"dur\": 1.5570534275712005, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705705.062, \"ph\": \"X\", \"dur\": 1.6972431145777713, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.941, \"ph\": \"X\", \"dur\": 1.8446667889921544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705704.825, \"ph\": \"X\", \"dur\": 1.9863531630486175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.95, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.758, \"ph\": \"X\", \"dur\": 0.31879434162704173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.645, \"ph\": \"X\", \"dur\": 0.4607301635251534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.531, \"ph\": \"X\", \"dur\": 0.6016681940566703, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.416, \"ph\": \"X\", \"dur\": 0.7446018073213768, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.296, \"ph\": \"X\", \"dur\": 0.8927738252607059, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.181, \"ph\": \"X\", \"dur\": 1.0504248611826859, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705707.066, \"ph\": \"X\", \"dur\": 1.1938573701306898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705706.949, \"ph\": \"X\", \"dur\": 1.3390360139702346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705709.423, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705709.226, \"ph\": \"X\", \"dur\": 0.2896089441541435, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705709.114, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.997, \"ph\": \"X\", \"dur\": 0.583458501616315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.854, \"ph\": \"X\", \"dur\": 0.7580719907704068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.742, \"ph\": \"X\", \"dur\": 0.904497873818195, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.631, \"ph\": \"X\", \"dur\": 1.0474314870829013, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.518, \"ph\": \"X\", \"dur\": 1.190365100347608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705708.397, \"ph\": \"X\", \"dur\": 1.3442744186448574, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.76, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.6, \"ph\": \"X\", \"dur\": 0.25518514200662257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.489, \"ph\": \"X\", \"dur\": 0.4001143380045187, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.378, \"ph\": \"X\", \"dur\": 0.5418007120609817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.27, \"ph\": \"X\", \"dur\": 0.6817409512259037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.161, \"ph\": \"X\", \"dur\": 0.8226789817574206, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705710.05, \"ph\": \"X\", \"dur\": 0.9651136993388297, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705709.939, \"ph\": \"X\", \"dur\": 1.1082967604451848, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705709.829, \"ph\": \"X\", \"dur\": 1.2462414168769174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.926, \"ph\": \"X\", \"dur\": 0.07633103954450295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.815, \"ph\": \"X\", \"dur\": 0.22275692259229127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.707, \"ph\": \"X\", \"dur\": 0.3616993703906185, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.597, \"ph\": \"X\", \"dur\": 0.5026374009221354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.488, \"ph\": \"X\", \"dur\": 0.6430765357703548, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.378, \"ph\": \"X\", \"dur\": 0.7845134619851691, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.27, \"ph\": \"X\", \"dur\": 0.9234559097834963, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705711.16, \"ph\": \"X\", \"dur\": 1.0589060877987417, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705713.298, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705713.139, \"ph\": \"X\", \"dur\": 0.25892685963135315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705713.003, \"ph\": \"X\", \"dur\": 0.4305469746856604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.894, \"ph\": \"X\", \"dur\": 0.5674938397507979, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.785, \"ph\": \"X\", \"dur\": 0.7084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.678, \"ph\": \"X\", \"dur\": 0.8438820482975603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.563, \"ph\": \"X\", \"dur\": 0.9838222874624823, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.447, \"ph\": \"X\", \"dur\": 2.0175341432547054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705712.336, \"ph\": \"X\", \"dur\": 2.149990947170166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705715.612, \"ph\": \"X\", \"dur\": 0.08955177515188417, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705715.441, \"ph\": \"X\", \"dur\": 0.29509679667041494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705715.315, \"ph\": \"X\", \"dur\": 0.45624010237547674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705715.204, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705715.091, \"ph\": \"X\", \"dur\": 0.7446018073213768, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705714.974, \"ph\": \"X\", \"dur\": 0.8947694079938956, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705714.859, \"ph\": \"X\", \"dur\": 1.0409458432000351, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705714.741, \"ph\": \"X\", \"dur\": 1.1913628917142027, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705714.594, \"ph\": \"X\", \"dur\": 1.370466442017971, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.011, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.847, \"ph\": \"X\", \"dur\": 0.26067299452289405, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.714, \"ph\": \"X\", \"dur\": 0.4258074656943351, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.605, \"ph\": \"X\", \"dur\": 0.5672443919091493, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.495, \"ph\": \"X\", \"dur\": 0.709928557332207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.384, \"ph\": \"X\", \"dur\": 0.8526127227552649, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.275, \"ph\": \"X\", \"dur\": 0.9945485446533765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.165, \"ph\": \"X\", \"dur\": 1.1359854708681907, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705716.054, \"ph\": \"X\", \"dur\": 1.2794179798161947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.2, \"ph\": \"X\", \"dur\": 0.10875925895883425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.088, \"ph\": \"X\", \"dur\": 0.25693127689816353, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.98, \"ph\": \"X\", \"dur\": 0.39437703764659854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.871, \"ph\": \"X\", \"dur\": 0.5358139638614129, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.763, \"ph\": \"X\", \"dur\": 0.67475641165974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.654, \"ph\": \"X\", \"dur\": 0.8151955465079596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.538, \"ph\": \"X\", \"dur\": 0.9621203252390453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705717.421, \"ph\": \"X\", \"dur\": 1.1105417910200233, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.436, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.326, \"ph\": \"X\", \"dur\": 0.2269975359003192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.216, \"ph\": \"X\", \"dur\": 0.3674366707485387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.108, \"ph\": \"X\", \"dur\": 0.5068780142301633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.997, \"ph\": \"X\", \"dur\": 0.6493127318115725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.867, \"ph\": \"X\", \"dur\": 0.812202172408175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.756, \"ph\": \"X\", \"dur\": 0.9516435158897998, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705718.635, \"ph\": \"X\", \"dur\": 1.0993166381458315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.629, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.519, \"ph\": \"X\", \"dur\": 0.22799532726691402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.406, \"ph\": \"X\", \"dur\": 0.369681701323377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.279, \"ph\": \"X\", \"dur\": 0.5265843937204109, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.17, \"ph\": \"X\", \"dur\": 0.6665246328853328, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705720.061, \"ph\": \"X\", \"dur\": 0.8079615591001471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.952, \"ph\": \"X\", \"dur\": 0.9461556633735283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705719.838, \"ph\": \"X\", \"dur\": 1.0858464546968016, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.966, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.812, \"ph\": \"X\", \"dur\": 0.2482006024404589, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.683, \"ph\": \"X\", \"dur\": 0.411588938720359, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.575, \"ph\": \"X\", \"dur\": 1.4582720822783144, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.465, \"ph\": \"X\", \"dur\": 1.5932233646102625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.357, \"ph\": \"X\", \"dur\": 1.7291724383088054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.248, \"ph\": \"X\", \"dur\": 1.8651215120073479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.14, \"ph\": \"X\", \"dur\": 2.001070585705891, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705721.025, \"ph\": \"X\", \"dur\": 2.1440041989705976, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.127, \"ph\": \"X\", \"dur\": 0.1244744729827025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.004, \"ph\": \"X\", \"dur\": 0.27988047832984414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.889, \"ph\": \"X\", \"dur\": 0.42381188296114547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.773, \"ph\": \"X\", \"dur\": 0.5684916311173928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.655, \"ph\": \"X\", \"dur\": 0.7189086796315604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.536, \"ph\": \"X\", \"dur\": 0.866831249729241, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.42, \"ph\": \"X\", \"dur\": 1.0132571327770292, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705723.309, \"ph\": \"X\", \"dur\": 1.1546940589918435, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.391, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.274, \"ph\": \"X\", \"dur\": 0.22924256647515753, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.122, \"ph\": \"X\", \"dur\": 0.4113394908787103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.015, \"ph\": \"X\", \"dur\": 0.550780834360335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.906, \"ph\": \"X\", \"dur\": 0.6882265951087699, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.794, \"ph\": \"X\", \"dur\": 0.8316591040567739, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.676, \"ph\": \"X\", \"dur\": 0.981577256887644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705724.556, \"ph\": \"X\", \"dur\": 1.1329920967684064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.534, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.426, \"ph\": \"X\", \"dur\": 0.2596752031562992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.32, \"ph\": \"X\", \"dur\": 0.39612317253813945, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.211, \"ph\": \"X\", \"dur\": 0.5353150681781155, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.102, \"ph\": \"X\", \"dur\": 0.672261933243253, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.99, \"ph\": \"X\", \"dur\": 0.8136988594580673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.875, \"ph\": \"X\", \"dur\": 0.9596258468225582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705725.768, \"ph\": \"X\", \"dur\": 1.0980693989375883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.918, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.758, \"ph\": \"X\", \"dur\": 0.2571807247398122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.652, \"ph\": \"X\", \"dur\": 0.39662206822143686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.544, \"ph\": \"X\", \"dur\": 0.531573350553385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.432, \"ph\": \"X\", \"dur\": 0.67475641165974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.32, \"ph\": \"X\", \"dur\": 0.8191867119743388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.214, \"ph\": \"X\", \"dur\": 0.9571313684060713, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705727.096, \"ph\": \"X\", \"dur\": 1.104804490662103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705726.958, \"ph\": \"X\", \"dur\": 1.2744290229832207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705729.141, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705729.007, \"ph\": \"X\", \"dur\": 0.23747434524956473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.894, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.785, \"ph\": \"X\", \"dur\": 0.5200987498375446, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.675, \"ph\": \"X\", \"dur\": 0.6625334674189537, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.564, \"ph\": \"X\", \"dur\": 0.8057165285253088, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.452, \"ph\": \"X\", \"dur\": 0.9421644979071491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705728.334, \"ph\": \"X\", \"dur\": 1.9596622439922062, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.204, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.087, \"ph\": \"X\", \"dur\": 0.22001299633415553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.974, \"ph\": \"X\", \"dur\": 0.36144992254896985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.857, \"ph\": \"X\", \"dur\": 0.508873596963353, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.743, \"ph\": \"X\", \"dur\": 0.6525555537530056, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.629, \"ph\": \"X\", \"dur\": 0.7932441364428737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.514, \"ph\": \"X\", \"dur\": 0.9366766453908777, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705730.395, \"ph\": \"X\", \"dur\": 1.0900870680048298, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.345, \"ph\": \"X\", \"dur\": 0.10950760248378036, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.237, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.128, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.02, \"ph\": \"X\", \"dur\": 0.531573350553385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.912, \"ph\": \"X\", \"dur\": 0.664030154468846, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.797, \"ph\": \"X\", \"dur\": 0.8062154242086063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.682, \"ph\": \"X\", \"dur\": 0.950645724523205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705731.567, \"ph\": \"X\", \"dur\": 1.0910848593714244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.468, \"ph\": \"X\", \"dur\": 0.0728387697614211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.36, \"ph\": \"X\", \"dur\": 0.20779005209336912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.25, \"ph\": \"X\", \"dur\": 0.3422424387420197, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.129, \"ph\": \"X\", \"dur\": 0.490414456681349, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.015, \"ph\": \"X\", \"dur\": 0.6293569044796763, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.9, \"ph\": \"X\", \"dur\": 0.7692971436445982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705732.774, \"ph\": \"X\", \"dur\": 0.9209614313670094, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.802, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.628, \"ph\": \"X\", \"dur\": 0.27663765638841104, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.521, \"ph\": \"X\", \"dur\": 0.41782513476157657, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.411, \"ph\": \"X\", \"dur\": 0.55751592608485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.301, \"ph\": \"X\", \"dur\": 0.6989528522996642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.142, \"ph\": \"X\", \"dur\": 0.8910276903691651, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705734.028, \"ph\": \"X\", \"dur\": 1.0357074385254126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.911, \"ph\": \"X\", \"dur\": 1.185376143514634, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705733.796, \"ph\": \"X\", \"dur\": 1.3318020265624222, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.16, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.001, \"ph\": \"X\", \"dur\": 0.25219176790683817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.894, \"ph\": \"X\", \"dur\": 0.39437703764659854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.771, \"ph\": \"X\", \"dur\": 0.5477874602605506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.66, \"ph\": \"X\", \"dur\": 0.6904716256836083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.55, \"ph\": \"X\", \"dur\": 0.8501182443387779, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.442, \"ph\": \"X\", \"dur\": 0.9905573791869973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.334, \"ph\": \"X\", \"dur\": 1.1294998269853245, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705735.22, \"ph\": \"X\", \"dur\": 1.2749279186665181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705737.353, \"ph\": \"X\", \"dur\": 0.10776146759223945, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705737.244, \"ph\": \"X\", \"dur\": 0.25318955927343295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705737.135, \"ph\": \"X\", \"dur\": 0.393129798438355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705737.023, \"ph\": \"X\", \"dur\": 0.5345667246531693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.913, \"ph\": \"X\", \"dur\": 0.6730102767681991, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.805, \"ph\": \"X\", \"dur\": 2.3241055406409603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.696, \"ph\": \"X\", \"dur\": 2.454566761823232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705736.584, \"ph\": \"X\", \"dur\": 2.5957542401963973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.293, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.145, \"ph\": \"X\", \"dur\": 0.24171495855759267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.03, \"ph\": \"X\", \"dur\": 0.3928803505967063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.902, \"ph\": \"X\", \"dur\": 0.5510302822019837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.792, \"ph\": \"X\", \"dur\": 0.6889749386337161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.682, \"ph\": \"X\", \"dur\": 0.8269195950654485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.563, \"ph\": \"X\", \"dur\": 0.9728465824299394, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.453, \"ph\": \"X\", \"dur\": 1.1087956561284822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705739.316, \"ph\": \"X\", \"dur\": 1.269938961833544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.613, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.446, \"ph\": \"X\", \"dur\": 0.26391581646432716, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.336, \"ph\": \"X\", \"dur\": 0.41582955202838695, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.225, \"ph\": \"X\", \"dur\": 0.5555203433516603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.118, \"ph\": \"X\", \"dur\": 0.6939638954666901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705741.008, \"ph\": \"X\", \"dur\": 0.8368975087313967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.888, \"ph\": \"X\", \"dur\": 0.9868156615622667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.778, \"ph\": \"X\", \"dur\": 1.128252587777081, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705740.668, \"ph\": \"X\", \"dur\": 1.2671950355754085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.979, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.812, \"ph\": \"X\", \"dur\": 0.26042354668124534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.705, \"ph\": \"X\", \"dur\": 0.4006132336878161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.597, \"ph\": \"X\", \"dur\": 0.5395556814861434, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.489, \"ph\": \"X\", \"dur\": 0.679745368492714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.378, \"ph\": \"X\", \"dur\": 0.8229284295990693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.236, \"ph\": \"X\", \"dur\": 0.9980408144364584, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.128, \"ph\": \"X\", \"dur\": 1.137482157918083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705742.017, \"ph\": \"X\", \"dur\": 1.279916875499492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.151, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.042, \"ph\": \"X\", \"dur\": 0.20978563482655874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.933, \"ph\": \"X\", \"dur\": 0.3477302912582912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.823, \"ph\": \"X\", \"dur\": 0.48941666531475414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.712, \"ph\": \"X\", \"dur\": 0.6248668433299996, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.6, \"ph\": \"X\", \"dur\": 0.7628114997617321, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.49, \"ph\": \"X\", \"dur\": 0.8987605734602748, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705743.381, \"ph\": \"X\", \"dur\": 1.0322151687423307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705745.491, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705745.293, \"ph\": \"X\", \"dur\": 0.29235287041227925, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705745.168, \"ph\": \"X\", \"dur\": 0.4542445196422871, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705745.06, \"ph\": \"X\", \"dur\": 0.5916902803907221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.952, \"ph\": \"X\", \"dur\": 0.7296349368224546, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.846, \"ph\": \"X\", \"dur\": 0.8660829062042948, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.737, \"ph\": \"X\", \"dur\": 1.0040275626360273, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.63, \"ph\": \"X\", \"dur\": 1.1409744277011649, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705744.515, \"ph\": \"X\", \"dur\": 2.256754623395811, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.897, \"ph\": \"X\", \"dur\": 0.056125764370958044, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.734, \"ph\": \"X\", \"dur\": 0.2614213380478402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.625, \"ph\": \"X\", \"dur\": 0.4043549513125466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.513, \"ph\": \"X\", \"dur\": 0.5480369081021993, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.401, \"ph\": \"X\", \"dur\": 0.6889749386337161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.289, \"ph\": \"X\", \"dur\": 0.83240744758172, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.144, \"ph\": \"X\", \"dur\": 1.011012102202191, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705747.008, \"ph\": \"X\", \"dur\": 1.176146573373632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705746.895, \"ph\": \"X\", \"dur\": 1.3220735607381229, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.305, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.147, \"ph\": \"X\", \"dur\": 0.26391581646432716, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.038, \"ph\": \"X\", \"dur\": 0.40834611677892585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.923, \"ph\": \"X\", \"dur\": 0.5545225519850655, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.808, \"ph\": \"X\", \"dur\": 0.699950643666259, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.689, \"ph\": \"X\", \"dur\": 0.850866587863724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.546, \"ph\": \"X\", \"dur\": 1.0257295248594644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.425, \"ph\": \"X\", \"dur\": 1.1786410517901191, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705748.305, \"ph\": \"X\", \"dur\": 1.3308042351958274, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.548, \"ph\": \"X\", \"dur\": 0.07358711328636722, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.433, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.322, \"ph\": \"X\", \"dur\": 0.3669377750652413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.181, \"ph\": \"X\", \"dur\": 0.5398051293277921, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.071, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.954, \"ph\": \"X\", \"dur\": 0.8309107605318278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.841, \"ph\": \"X\", \"dur\": 0.9708509996967498, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705749.723, \"ph\": \"X\", \"dur\": 1.1137846129614564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.898, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.73, \"ph\": \"X\", \"dur\": 0.2654125035142194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.608, \"ph\": \"X\", \"dur\": 0.42131740454465844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.486, \"ph\": \"X\", \"dur\": 0.571734453058826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.378, \"ph\": \"X\", \"dur\": 0.7089307659656123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.272, \"ph\": \"X\", \"dur\": 0.8478732137639395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.165, \"ph\": \"X\", \"dur\": 0.9863167658789693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705751.055, \"ph\": \"X\", \"dur\": 1.124261422310702, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705750.936, \"ph\": \"X\", \"dur\": 1.2729323359333284, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705753.261, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705753.103, \"ph\": \"X\", \"dur\": 0.2644147121476246, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.957, \"ph\": \"X\", \"dur\": 0.4425204710847981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.847, \"ph\": \"X\", \"dur\": 0.5804651275165306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.731, \"ph\": \"X\", \"dur\": 0.7281382497725624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.622, \"ph\": \"X\", \"dur\": 0.870074071670674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.513, \"ph\": \"X\", \"dur\": 1.0095154151522987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.403, \"ph\": \"X\", \"dur\": 1.1521995805753567, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705752.293, \"ph\": \"X\", \"dur\": 1.2941354024734684, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.6, \"ph\": \"X\", \"dur\": 0.09154735788507379, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.493, \"ph\": \"X\", \"dur\": 0.23423152330813157, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.381, \"ph\": \"X\", \"dur\": 1.2729323359333284, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.255, \"ph\": \"X\", \"dur\": 1.4355723286882824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.147, \"ph\": \"X\", \"dur\": 1.5720202980701226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705754.038, \"ph\": \"X\", \"dur\": 1.71096274586845, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705753.929, \"ph\": \"X\", \"dur\": 1.8439184454672084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705753.815, \"ph\": \"X\", \"dur\": 1.9848564759987253, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705753.679, \"ph\": \"X\", \"dur\": 2.1479953644369765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.939, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.766, \"ph\": \"X\", \"dur\": 0.26940366898059864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.659, \"ph\": \"X\", \"dur\": 0.4108405951954129, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.553, \"ph\": \"X\", \"dur\": 0.5462907732106583, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.438, \"ph\": \"X\", \"dur\": 0.6942133433083388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.314, \"ph\": \"X\", \"dur\": 0.8493699008138318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.195, \"ph\": \"X\", \"dur\": 1.0002858450112968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705756.082, \"ph\": \"X\", \"dur\": 1.1439678018009491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705755.933, \"ph\": \"X\", \"dur\": 1.3233207999463663, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.258, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.107, \"ph\": \"X\", \"dur\": 0.24570612402397188, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.998, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.889, \"ph\": \"X\", \"dur\": 0.5260854980371135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.778, \"ph\": \"X\", \"dur\": 0.6670235285686302, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.671, \"ph\": \"X\", \"dur\": 0.804718737158714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.562, \"ph\": \"X\", \"dur\": 0.9431622892737439, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.454, \"ph\": \"X\", \"dur\": 1.0826036327553685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705757.342, \"ph\": \"X\", \"dur\": 1.2265350373866697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.424, \"ph\": \"X\", \"dur\": 0.0830661312690179, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.315, \"ph\": \"X\", \"dur\": 0.2267480880586705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.209, \"ph\": \"X\", \"dur\": 0.36244771391556463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.099, \"ph\": \"X\", \"dur\": 0.5041340879720276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.989, \"ph\": \"X\", \"dur\": 0.6470677012367342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.88, \"ph\": \"X\", \"dur\": 0.7845134619851691, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.764, \"ph\": \"X\", \"dur\": 0.9244537011500912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705758.655, \"ph\": \"X\", \"dur\": 1.060402774848634, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.616, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.508, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.4, \"ph\": \"X\", \"dur\": 0.3569598613992932, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.291, \"ph\": \"X\", \"dur\": 0.49714954840586395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.184, \"ph\": \"X\", \"dur\": 0.6365908918874886, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705760.075, \"ph\": \"X\", \"dur\": 0.7740366526359236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.957, \"ph\": \"X\", \"dur\": 0.9174691615839276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705759.811, \"ph\": \"X\", \"dur\": 1.089089276638235, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.928, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.771, \"ph\": \"X\", \"dur\": 0.25368845495673037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.664, \"ph\": \"X\", \"dur\": 0.3971209639047343, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.555, \"ph\": \"X\", \"dur\": 0.5355645160197642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.447, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.341, \"ph\": \"X\", \"dur\": 1.7139561199682343, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.236, \"ph\": \"X\", \"dur\": 1.8444173411505058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.124, \"ph\": \"X\", \"dur\": 1.9828608932655356, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705761.005, \"ph\": \"X\", \"dur\": 2.129286776313324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.133, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.02, \"ph\": \"X\", \"dur\": 0.23822268877451083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.903, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.787, \"ph\": \"X\", \"dur\": 0.528081080770303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.673, \"ph\": \"X\", \"dur\": 0.674008068134794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.555, \"ph\": \"X\", \"dur\": 0.8239262209656641, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.433, \"ph\": \"X\", \"dur\": 0.977336643579616, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705763.222, \"ph\": \"X\", \"dur\": 1.2200493935038037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.387, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.257, \"ph\": \"X\", \"dur\": 0.2561829333732174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.149, \"ph\": \"X\", \"dur\": 0.3911342157051654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.038, \"ph\": \"X\", \"dur\": 0.5320722462366823, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.926, \"ph\": \"X\", \"dur\": 0.6762530987096322, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.773, \"ph\": \"X\", \"dur\": 0.8615928450546182, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.664, \"ph\": \"X\", \"dur\": 0.9990386058030531, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705764.547, \"ph\": \"X\", \"dur\": 1.1429700104343545, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.553, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.445, \"ph\": \"X\", \"dur\": 0.2155229351844789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.337, \"ph\": \"X\", \"dur\": 0.34872808262488597, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.229, \"ph\": \"X\", \"dur\": 0.481184886540347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.123, \"ph\": \"X\", \"dur\": 0.6131427947725105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.014, \"ph\": \"X\", \"dur\": 0.746098494371269, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.907, \"ph\": \"X\", \"dur\": 0.8800519853366221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705765.791, \"ph\": \"X\", \"dur\": 1.0214889115514365, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.688, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.581, \"ph\": \"X\", \"dur\": 0.22026244417580423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.469, \"ph\": \"X\", \"dur\": 0.3607015790240237, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.36, \"ph\": \"X\", \"dur\": 0.5026374009221354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.252, \"ph\": \"X\", \"dur\": 0.6405820573538679, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.145, \"ph\": \"X\", \"dur\": 0.7755333396858158, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705767.035, \"ph\": \"X\", \"dur\": 0.9109835177010612, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705766.92, \"ph\": \"X\", \"dur\": 1.052919339599173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.856, \"ph\": \"X\", \"dur\": 0.11649214204994404, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.737, \"ph\": \"X\", \"dur\": 0.2704014603471934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.621, \"ph\": \"X\", \"dur\": 0.41632844771168437, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.512, \"ph\": \"X\", \"dur\": 0.5542731041434168, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.402, \"ph\": \"X\", \"dur\": 0.6912199692085544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.293, \"ph\": \"X\", \"dur\": 0.8251734601739077, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.187, \"ph\": \"X\", \"dur\": 0.9566324727227739, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705768.071, \"ph\": \"X\", \"dur\": 1.1003144295124263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705770.143, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705770.035, \"ph\": \"X\", \"dur\": 0.20729115641007173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.926, \"ph\": \"X\", \"dur\": 0.34523581284180416, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.818, \"ph\": \"X\", \"dur\": 1.3896739258249213, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.711, \"ph\": \"X\", \"dur\": 1.524126312473572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.604, \"ph\": \"X\", \"dur\": 1.6600753861721145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.495, \"ph\": \"X\", \"dur\": 1.798020042603847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.386, \"ph\": \"X\", \"dur\": 1.9349669076689848, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705769.27, \"ph\": \"X\", \"dur\": 2.0803949993501782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.271, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.161, \"ph\": \"X\", \"dur\": 0.234730418991429, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.051, \"ph\": \"X\", \"dur\": 0.3689333577984309, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705771.934, \"ph\": \"X\", \"dur\": 0.5153592408462192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705771.808, \"ph\": \"X\", \"dur\": 0.6712641418766582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705771.693, \"ph\": \"X\", \"dur\": 0.8191867119743388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705771.578, \"ph\": \"X\", \"dur\": 0.964864251497181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705771.455, \"ph\": \"X\", \"dur\": 1.1177757784278355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.419, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.312, \"ph\": \"X\", \"dur\": 0.19856048195236714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.2, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.082, \"ph\": \"X\", \"dur\": 0.47968819949045477, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.969, \"ph\": \"X\", \"dur\": 0.6166350645555924, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.837, \"ph\": \"X\", \"dur\": 0.7737872047942749, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705772.656, \"ph\": \"X\", \"dur\": 0.9788333306295083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.517, \"ph\": \"X\", \"dur\": 0.10925815464213166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.41, \"ph\": \"X\", \"dur\": 0.25219176790683817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.303, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.196, \"ph\": \"X\", \"dur\": 0.528081080770303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.092, \"ph\": \"X\", \"dur\": 0.6645290501521433, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.98, \"ph\": \"X\", \"dur\": 0.8069637677335524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.865, \"ph\": \"X\", \"dur\": 0.9536390986229895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705773.749, \"ph\": \"X\", \"dur\": 1.1013122208790211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.601, \"ph\": \"X\", \"dur\": 0.08780564026034325, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.495, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.387, \"ph\": \"X\", \"dur\": 0.351222561041373, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.281, \"ph\": \"X\", \"dur\": 0.48168378222364444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.167, \"ph\": \"X\", \"dur\": 0.62287126059681, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.05, \"ph\": \"X\", \"dur\": 0.7633103954450294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705774.935, \"ph\": \"X\", \"dur\": 0.9027517389266541, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.71, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.602, \"ph\": \"X\", \"dur\": 0.22874367079186012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.494, \"ph\": \"X\", \"dur\": 0.36718722290689, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.386, \"ph\": \"X\", \"dur\": 0.5041340879720276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.28, \"ph\": \"X\", \"dur\": 0.6545511364861952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.167, \"ph\": \"X\", \"dur\": 0.7944913756511172, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705776.046, \"ph\": \"X\", \"dur\": 0.94391063279869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705775.932, \"ph\": \"X\", \"dur\": 1.0880914852716401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.888, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.782, \"ph\": \"X\", \"dur\": 0.21602183086777632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.675, \"ph\": \"X\", \"dur\": 1.256718226226163, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.567, \"ph\": \"X\", \"dur\": 1.388177238775029, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.461, \"ph\": \"X\", \"dur\": 1.5221307297403823, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.347, \"ph\": \"X\", \"dur\": 1.6620709689053041, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.229, \"ph\": \"X\", \"dur\": 1.8077485084281466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705777.112, \"ph\": \"X\", \"dur\": 1.9501832260095555, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.139, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.977, \"ph\": \"X\", \"dur\": 0.2599246509979479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.869, \"ph\": \"X\", \"dur\": 0.4013615772127622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.763, \"ph\": \"X\", \"dur\": 0.5378095465946025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.648, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.534, \"ph\": \"X\", \"dur\": 0.8246745644906103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.414, \"ph\": \"X\", \"dur\": 0.9763388522130213, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.295, \"ph\": \"X\", \"dur\": 1.1220163917358636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705779.168, \"ph\": \"X\", \"dur\": 1.2789190841328972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.321, \"ph\": \"X\", \"dur\": 0.09254514925166861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.21, \"ph\": \"X\", \"dur\": 0.24021827150770045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.101, \"ph\": \"X\", \"dur\": 0.3776640322561355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.994, \"ph\": \"X\", \"dur\": 0.5141120016379757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.885, \"ph\": \"X\", \"dur\": 0.6510588667031134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.768, \"ph\": \"X\", \"dur\": 0.7987319889591451, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.647, \"ph\": \"X\", \"dur\": 0.9596258468225582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705780.532, \"ph\": \"X\", \"dur\": 1.1065506255536441, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.68, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.52, \"ph\": \"X\", \"dur\": 0.2738937301302753, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.41, \"ph\": \"X\", \"dur\": 0.4133350736118999, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.303, \"ph\": \"X\", \"dur\": 0.5487852516271454, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.195, \"ph\": \"X\", \"dur\": 0.6872288037421752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705782.086, \"ph\": \"X\", \"dur\": 0.8246745644906103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.973, \"ph\": \"X\", \"dur\": 0.9646148036555323, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.85, \"ph\": \"X\", \"dur\": 1.118274674111133, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705781.733, \"ph\": \"X\", \"dur\": 1.2637027657923265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.882, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.774, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.663, \"ph\": \"X\", \"dur\": 0.3584565484491854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.554, \"ph\": \"X\", \"dur\": 0.4949045178310256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.443, \"ph\": \"X\", \"dur\": 0.6348447569959477, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.336, \"ph\": \"X\", \"dur\": 0.7668026652281112, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.225, \"ph\": \"X\", \"dur\": 0.9042484259765463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705783.111, \"ph\": \"X\", \"dur\": 1.0441886651414685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705785.026, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.918, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.812, \"ph\": \"X\", \"dur\": 0.35446538298280617, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.704, \"ph\": \"X\", \"dur\": 0.5036351922887302, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.597, \"ph\": \"X\", \"dur\": 0.6425776400870575, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.483, \"ph\": \"X\", \"dur\": 0.7860101490350613, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.367, \"ph\": \"X\", \"dur\": 0.9314382407162549, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705784.248, \"ph\": \"X\", \"dur\": 1.9501832260095555, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705787.069, \"ph\": \"X\", \"dur\": 0.11624269420829533, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.96, \"ph\": \"X\", \"dur\": 0.2723970430803831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.853, \"ph\": \"X\", \"dur\": 0.40335715994595184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.743, \"ph\": \"X\", \"dur\": 0.5413018163776843, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.635, \"ph\": \"X\", \"dur\": 0.6787475771261192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.526, \"ph\": \"X\", \"dur\": 0.818188920607744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.415, \"ph\": \"X\", \"dur\": 0.9581291597726661, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705786.299, \"ph\": \"X\", \"dur\": 1.1045550428204545, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.336, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.227, \"ph\": \"X\", \"dur\": 0.24670391539056669, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.119, \"ph\": \"X\", \"dur\": 0.3786618236227303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.013, \"ph\": \"X\", \"dur\": 0.5156086886878679, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705787.886, \"ph\": \"X\", \"dur\": 0.6732597246098478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705787.755, \"ph\": \"X\", \"dur\": 0.8339041346316123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705787.642, \"ph\": \"X\", \"dur\": 0.9793322263128057, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705787.532, \"ph\": \"X\", \"dur\": 1.1192724654777277, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.728, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.532, \"ph\": \"X\", \"dur\": 0.3015824405532812, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.424, \"ph\": \"X\", \"dur\": 0.4440171581346903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.316, \"ph\": \"X\", \"dur\": 0.5824607102497201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.209, \"ph\": \"X\", \"dur\": 0.7174119925816682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705789.103, \"ph\": \"X\", \"dur\": 0.8563544403799955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.995, \"ph\": \"X\", \"dur\": 0.9945485446533765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.879, \"ph\": \"X\", \"dur\": 1.1389788449679752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705788.763, \"ph\": \"X\", \"dur\": 1.2841574888075202, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.918, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.81, \"ph\": \"X\", \"dur\": 0.23822268877451083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.703, \"ph\": \"X\", \"dur\": 0.37192673189821535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.597, \"ph\": \"X\", \"dur\": 0.5101208361715964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.49, \"ph\": \"X\", \"dur\": 0.6470677012367342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.375, \"ph\": \"X\", \"dur\": 0.7870079404016561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.26, \"ph\": \"X\", \"dur\": 0.927945970933173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705790.144, \"ph\": \"X\", \"dur\": 1.0701312406729335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705792.252, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705792.094, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.988, \"ph\": \"X\", \"dur\": 0.39487593332989596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.878, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.77, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.663, \"ph\": \"X\", \"dur\": 0.8102065896749855, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.556, \"ph\": \"X\", \"dur\": 0.948151246106718, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.439, \"ph\": \"X\", \"dur\": 1.0955749205211012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705791.316, \"ph\": \"X\", \"dur\": 1.2502325823432967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.628, \"ph\": \"X\", \"dur\": 0.058121347104147666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.478, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.353, \"ph\": \"X\", \"dur\": 0.4028582642626544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.245, \"ph\": \"X\", \"dur\": 0.5427985034275765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.138, \"ph\": \"X\", \"dur\": 1.5745147764866096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705793.029, \"ph\": \"X\", \"dur\": 1.7069715804020706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705792.914, \"ph\": \"X\", \"dur\": 1.8499051936667772, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705792.797, \"ph\": \"X\", \"dur\": 1.9963310767145657, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705792.673, \"ph\": \"X\", \"dur\": 2.1504898428534633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.899, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.748, \"ph\": \"X\", \"dur\": 0.25343900711508166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.632, \"ph\": \"X\", \"dur\": 0.4043549513125466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.517, \"ph\": \"X\", \"dur\": 0.550780834360335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.4, \"ph\": \"X\", \"dur\": 0.6962089260415285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.286, \"ph\": \"X\", \"dur\": 0.8398908828311811, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.168, \"ph\": \"X\", \"dur\": 0.9863167658789693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705795.05, \"ph\": \"X\", \"dur\": 1.1352371273432447, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705794.916, \"ph\": \"X\", \"dur\": 1.2963804330483064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.228, \"ph\": \"X\", \"dur\": 0.06834870861174447, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.107, \"ph\": \"X\", \"dur\": 0.2267480880586705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.993, \"ph\": \"X\", \"dur\": 0.3691828056400796, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.879, \"ph\": \"X\", \"dur\": 0.5141120016379757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.766, \"ph\": \"X\", \"dur\": 0.6595400933191693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.653, \"ph\": \"X\", \"dur\": 0.8024737065838757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.536, \"ph\": \"X\", \"dur\": 0.9521424115730972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.415, \"ph\": \"X\", \"dur\": 1.1167779870612409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705796.299, \"ph\": \"X\", \"dur\": 1.2542237478096758, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.451, \"ph\": \"X\", \"dur\": 0.10426919780915762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.332, \"ph\": \"X\", \"dur\": 0.2599246509979479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.215, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.1, \"ph\": \"X\", \"dur\": 0.5537742084601195, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.986, \"ph\": \"X\", \"dur\": 0.7002000915079077, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.869, \"ph\": \"X\", \"dur\": 0.8481226616055882, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.756, \"ph\": \"X\", \"dur\": 0.9905573791869973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705797.641, \"ph\": \"X\", \"dur\": 1.1359854708681907, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.824, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.673, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.559, \"ph\": \"X\", \"dur\": 0.40360660778760055, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.438, \"ph\": \"X\", \"dur\": 0.5542731041434168, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.323, \"ph\": \"X\", \"dur\": 0.7004495393495564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.208, \"ph\": \"X\", \"dur\": 0.8473743180806422, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705799.094, \"ph\": \"X\", \"dur\": 0.9920540662368895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.977, \"ph\": \"X\", \"dur\": 1.1414733233844623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705798.864, \"ph\": \"X\", \"dur\": 1.283409145282574, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705801.044, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.935, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.819, \"ph\": \"X\", \"dur\": 0.36344550528215946, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.688, \"ph\": \"X\", \"dur\": 0.5260854980371135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.58, \"ph\": \"X\", \"dur\": 0.664778497993792, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.469, \"ph\": \"X\", \"dur\": 0.8067143198919037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.362, \"ph\": \"X\", \"dur\": 1.8331921882763142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705800.245, \"ph\": \"X\", \"dur\": 1.9736313231245335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.129, \"ph\": \"X\", \"dur\": 0.11275042442521349, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.017, \"ph\": \"X\", \"dur\": 0.2596752031562992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.909, \"ph\": \"X\", \"dur\": 0.3991165466379239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.794, \"ph\": \"X\", \"dur\": 0.5452929818440635, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.678, \"ph\": \"X\", \"dur\": 0.6929661041000953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.561, \"ph\": \"X\", \"dur\": 0.8423853612476682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.444, \"ph\": \"X\", \"dur\": 0.990806827028646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705802.332, \"ph\": \"X\", \"dur\": 1.13423933597665, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705804.571, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705804.401, \"ph\": \"X\", \"dur\": 0.2773859999133571, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705804.251, \"ph\": \"X\", \"dur\": 0.4572378937420715, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705804.139, \"ph\": \"X\", \"dur\": 0.6011692983733729, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705804.031, \"ph\": \"X\", \"dur\": 0.7411095375382949, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.924, \"ph\": \"X\", \"dur\": 0.8800519853366221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.811, \"ph\": \"X\", \"dur\": 1.0242328378095722, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.692, \"ph\": \"X\", \"dur\": 1.1756476776903346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705803.554, \"ph\": \"X\", \"dur\": 1.3460205535363983, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705806.346, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705806.089, \"ph\": \"X\", \"dur\": 0.3669377750652413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.963, \"ph\": \"X\", \"dur\": 0.5270832894037083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.855, \"ph\": \"X\", \"dur\": 0.6625334674189537, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.748, \"ph\": \"X\", \"dur\": 0.7997297803257399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.636, \"ph\": \"X\", \"dur\": 0.9411667065405542, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.518, \"ph\": \"X\", \"dur\": 1.0910848593714244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.328, \"ph\": \"X\", \"dur\": 1.3115967513888775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705805.07, \"ph\": \"X\", \"dur\": 1.6017045912263184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.594, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.485, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.377, \"ph\": \"X\", \"dur\": 0.3514720088830217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.266, \"ph\": \"X\", \"dur\": 0.48791997826486194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.156, \"ph\": \"X\", \"dur\": 0.625365739013297, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.048, \"ph\": \"X\", \"dur\": 0.7593192299786502, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705806.939, \"ph\": \"X\", \"dur\": 0.8942705123105982, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705806.796, \"ph\": \"X\", \"dur\": 1.0623983575818237, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.769, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.657, \"ph\": \"X\", \"dur\": 0.20953618698491006, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.531, \"ph\": \"X\", \"dur\": 0.3599532354990776, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.423, \"ph\": \"X\", \"dur\": 0.495403413514323, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.315, \"ph\": \"X\", \"dur\": 0.6293569044796763, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.199, \"ph\": \"X\", \"dur\": 0.7720410699027339, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705808.084, \"ph\": \"X\", \"dur\": 0.9124802047509535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705807.969, \"ph\": \"X\", \"dur\": 1.0554138180156598, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.908, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.802, \"ph\": \"X\", \"dur\": 0.20255164741874637, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.677, \"ph\": \"X\", \"dur\": 0.35246980024961655, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.57, \"ph\": \"X\", \"dur\": 2.5194232006518944, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.462, \"ph\": \"X\", \"dur\": 2.658116200608573, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.347, \"ph\": \"X\", \"dur\": 2.799802574665036, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.233, \"ph\": \"X\", \"dur\": 2.9414889487214992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705809.115, \"ph\": \"X\", \"dur\": 3.0871664882443413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.129, \"ph\": \"X\", \"dur\": 0.10401974996750891, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.019, \"ph\": \"X\", \"dur\": 0.26017409883959663, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.904, \"ph\": \"X\", \"dur\": 0.4003637858461674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.787, \"ph\": \"X\", \"dur\": 0.55751592608485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.667, \"ph\": \"X\", \"dur\": 0.7074340789157201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.554, \"ph\": \"X\", \"dur\": 0.8516149313886702, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.434, \"ph\": \"X\", \"dur\": 1.0020319799028377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705812.311, \"ph\": \"X\", \"dur\": 1.155941298200087, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705814.603, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705814.381, \"ph\": \"X\", \"dur\": 0.32977004665958465, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705814.273, \"ph\": \"X\", \"dur\": 0.4712069728743989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705814.164, \"ph\": \"X\", \"dur\": 0.6096505249894287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705814.053, \"ph\": \"X\", \"dur\": 0.7500896598376482, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.937, \"ph\": \"X\", \"dur\": 0.8962660950437878, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.821, \"ph\": \"X\", \"dur\": 1.041195291041684, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.707, \"ph\": \"X\", \"dur\": 1.1826322172564983, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705813.579, \"ph\": \"X\", \"dur\": 1.338786566128586, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.949, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.77, \"ph\": \"X\", \"dur\": 0.2723970430803831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.66, \"ph\": \"X\", \"dur\": 0.418324030444874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.55, \"ph\": \"X\", \"dur\": 0.5582642696097961, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.442, \"ph\": \"X\", \"dur\": 0.6947122389916363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.332, \"ph\": \"X\", \"dur\": 0.834153582473261, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.223, \"ph\": \"X\", \"dur\": 0.9696037604885064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.114, \"ph\": \"X\", \"dur\": 1.107548416920239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705815.003, \"ph\": \"X\", \"dur\": 1.2502325823432967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.128, \"ph\": \"X\", \"dur\": 0.14592698736449092, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.018, \"ph\": \"X\", \"dur\": 0.2913550790456844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.907, \"ph\": \"X\", \"dur\": 0.4307964225273091, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.782, \"ph\": \"X\", \"dur\": 0.5876991149243429, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.674, \"ph\": \"X\", \"dur\": 0.7296349368224546, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.564, \"ph\": \"X\", \"dur\": 0.8695751759873767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.453, \"ph\": \"X\", \"dur\": 1.0120098935687858, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705816.345, \"ph\": \"X\", \"dur\": 1.152449028417005, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705818.362, \"ph\": \"X\", \"dur\": 0.11424711147510572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705818.253, \"ph\": \"X\", \"dur\": 0.25892685963135315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705818.145, \"ph\": \"X\", \"dur\": 0.39737041174638293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705818.036, \"ph\": \"X\", \"dur\": 0.5388073379611973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.927, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.814, \"ph\": \"X\", \"dur\": 0.8246745644906103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.696, \"ph\": \"X\", \"dur\": 0.9735949259548855, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705817.581, \"ph\": \"X\", \"dur\": 2.0871300910746933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.481, \"ph\": \"X\", \"dur\": 0.08556060968550493, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.358, \"ph\": \"X\", \"dur\": 0.24221385424089006, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.248, \"ph\": \"X\", \"dur\": 0.3801585106726225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.133, \"ph\": \"X\", \"dur\": 0.5253371545121673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.018, \"ph\": \"X\", \"dur\": 0.6665246328853328, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705819.897, \"ph\": \"X\", \"dur\": 0.8149460986663108, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705819.773, \"ph\": \"X\", \"dur\": 0.9636170122889375, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.625, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.517, \"ph\": \"X\", \"dur\": 0.22001299633415553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.406, \"ph\": \"X\", \"dur\": 0.36144992254896985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.299, \"ph\": \"X\", \"dur\": 0.4993945789807023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.191, \"ph\": \"X\", \"dur\": 0.6338469656293529, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.076, \"ph\": \"X\", \"dur\": 0.776281683210762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.959, \"ph\": \"X\", \"dur\": 0.9167208180589814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705820.832, \"ph\": \"X\", \"dur\": 1.0693828971479873, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.783, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.675, \"ph\": \"X\", \"dur\": 0.2359776581996725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.567, \"ph\": \"X\", \"dur\": 0.3729245232648101, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.455, \"ph\": \"X\", \"dur\": 0.5141120016379757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.348, \"ph\": \"X\", \"dur\": 0.6480654926033289, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.229, \"ph\": \"X\", \"dur\": 0.792994688601225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705822.114, \"ph\": \"X\", \"dur\": 0.9339327191327419, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705821.993, \"ph\": \"X\", \"dur\": 1.0803586021805303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.144, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.98, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.848, \"ph\": \"X\", \"dur\": 0.4218163002279558, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.74, \"ph\": \"X\", \"dur\": 0.5610081958679318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.634, \"ph\": \"X\", \"dur\": 0.7004495393495564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.524, \"ph\": \"X\", \"dur\": 0.8388930914645862, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.406, \"ph\": \"X\", \"dur\": 0.9868156615622667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.287, \"ph\": \"X\", \"dur\": 1.1379810536013804, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705823.171, \"ph\": \"X\", \"dur\": 1.2849058323324662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.318, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.21, \"ph\": \"X\", \"dur\": 0.23323373194153676, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.104, \"ph\": \"X\", \"dur\": 0.36444329664875424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.997, \"ph\": \"X\", \"dur\": 0.5031362966054328, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.888, \"ph\": \"X\", \"dur\": 0.6440743271369497, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.777, \"ph\": \"X\", \"dur\": 0.7855112533517639, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.66, \"ph\": \"X\", \"dur\": 0.9349305104993367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705824.54, \"ph\": \"X\", \"dur\": 1.0811069457054765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.681, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.531, \"ph\": \"X\", \"dur\": 0.24570612402397188, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.421, \"ph\": \"X\", \"dur\": 0.38888918513032705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.314, \"ph\": \"X\", \"dur\": 0.5270832894037083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.207, \"ph\": \"X\", \"dur\": 0.6645290501521433, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705826.089, \"ph\": \"X\", \"dur\": 0.812202172408175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.976, \"ph\": \"X\", \"dur\": 1.8706093645236195, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.853, \"ph\": \"X\", \"dur\": 2.0175341432547054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705825.738, \"ph\": \"X\", \"dur\": 2.162213891410953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.855, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.708, \"ph\": \"X\", \"dur\": 0.2818760610630337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.598, \"ph\": \"X\", \"dur\": 0.42131740454465844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.486, \"ph\": \"X\", \"dur\": 0.5664960483842032, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.375, \"ph\": \"X\", \"dur\": 0.7084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.256, \"ph\": \"X\", \"dur\": 0.8538599619635084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.129, \"ph\": \"X\", \"dur\": 1.0100143108355961, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705828.002, \"ph\": \"X\", \"dur\": 1.163424733449548, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705830.278, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705830.113, \"ph\": \"X\", \"dur\": 0.27139925171378826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.99, \"ph\": \"X\", \"dur\": 0.42381188296114547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.88, \"ph\": \"X\", \"dur\": 0.5659971527009058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.771, \"ph\": \"X\", \"dur\": 0.7074340789157201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.654, \"ph\": \"X\", \"dur\": 0.855107201171752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.504, \"ph\": \"X\", \"dur\": 1.0367052298920074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.388, \"ph\": \"X\", \"dur\": 1.184627799989688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705829.276, \"ph\": \"X\", \"dur\": 1.325316382679556, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.653, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.487, \"ph\": \"X\", \"dur\": 0.26266857725608367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.379, \"ph\": \"X\", \"dur\": 0.4043549513125466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.27, \"ph\": \"X\", \"dur\": 0.5427985034275765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.162, \"ph\": \"X\", \"dur\": 0.6807431598593089, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705831.054, \"ph\": \"X\", \"dur\": 0.8166922335578517, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705830.946, \"ph\": \"X\", \"dur\": 0.9521424115730972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705830.825, \"ph\": \"X\", \"dur\": 1.1028089079289134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705830.716, \"ph\": \"X\", \"dur\": 1.240753564360646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.832, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.725, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.616, \"ph\": \"X\", \"dur\": 0.3569598613992932, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.509, \"ph\": \"X\", \"dur\": 0.4924100394145386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.399, \"ph\": \"X\", \"dur\": 0.6283591131130815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.264, \"ph\": \"X\", \"dur\": 0.788005731768251, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.152, \"ph\": \"X\", \"dur\": 0.9249525968333886, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705832.042, \"ph\": \"X\", \"dur\": 1.0609016705319314, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705834.164, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705834.008, \"ph\": \"X\", \"dur\": 0.24919839380705372, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.893, \"ph\": \"X\", \"dur\": 0.39986489016286997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.778, \"ph\": \"X\", \"dur\": 0.5447940861607662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.645, \"ph\": \"X\", \"dur\": 0.7084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.537, \"ph\": \"X\", \"dur\": 0.8443809439808577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.425, \"ph\": \"X\", \"dur\": 0.9833233917791849, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.311, \"ph\": \"X\", \"dur\": 1.1267559007271888, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705833.198, \"ph\": \"X\", \"dur\": 1.2701884096751928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705836.385, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705836.215, \"ph\": \"X\", \"dur\": 0.2631674729393811, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705836.107, \"ph\": \"X\", \"dur\": 0.40734832541233107, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.997, \"ph\": \"X\", \"dur\": 0.5472885645772532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.887, \"ph\": \"X\", \"dur\": 0.6867299080588778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.776, \"ph\": \"X\", \"dur\": 0.8291646256402869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.665, \"ph\": \"X\", \"dur\": 0.9703521040134525, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.551, \"ph\": \"X\", \"dur\": 1.1117890302282667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705835.439, \"ph\": \"X\", \"dur\": 1.2552215391762707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.627, \"ph\": \"X\", \"dur\": 0.09553852335145303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.52, \"ph\": \"X\", \"dur\": 0.23348317978318547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.407, \"ph\": \"X\", \"dur\": 0.3744212103147024, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.283, \"ph\": \"X\", \"dur\": 0.5305755591867901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.163, \"ph\": \"X\", \"dur\": 0.6807431598593089, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705837.047, \"ph\": \"X\", \"dur\": 0.8201845033409336, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705836.933, \"ph\": \"X\", \"dur\": 0.9616214295557479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705836.801, \"ph\": \"X\", \"dur\": 1.1197713611610252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.791, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.683, \"ph\": \"X\", \"dur\": 0.22175913122569646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.576, \"ph\": \"X\", \"dur\": 0.3589554441324828, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.469, \"ph\": \"X\", \"dur\": 0.4964012048809178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.363, \"ph\": \"X\", \"dur\": 0.6333480699460555, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.248, \"ph\": \"X\", \"dur\": 0.7815200878853846, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.134, \"ph\": \"X\", \"dur\": 0.9214603270503068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705838.02, \"ph\": \"X\", \"dur\": 1.0609016705319314, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.938, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.83, \"ph\": \"X\", \"dur\": 0.20329999094369247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.723, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.616, \"ph\": \"X\", \"dur\": 0.46571912035812746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.508, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.402, \"ph\": \"X\", \"dur\": 0.7311316238723469, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.287, \"ph\": \"X\", \"dur\": 0.8710718630372688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705839.17, \"ph\": \"X\", \"dur\": 1.0137560284603266, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.107, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.991, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.878, \"ph\": \"X\", \"dur\": 0.3499753218331295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.734, \"ph\": \"X\", \"dur\": 0.5195998541542471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.623, \"ph\": \"X\", \"dur\": 0.6565467192193848, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.504, \"ph\": \"X\", \"dur\": 0.8012264673756322, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.391, \"ph\": \"X\", \"dur\": 0.9401689151739595, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705840.273, \"ph\": \"X\", \"dur\": 1.0826036327553685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705842.383, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705842.236, \"ph\": \"X\", \"dur\": 0.24071716719099787, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705842.126, \"ph\": \"X\", \"dur\": 0.38564636318889395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705842.017, \"ph\": \"X\", \"dur\": 0.5245888109872212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.91, \"ph\": \"X\", \"dur\": 0.6620345717356563, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.804, \"ph\": \"X\", \"dur\": 0.7982330932758478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.687, \"ph\": \"X\", \"dur\": 1.819223109143987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.573, \"ph\": \"X\", \"dur\": 1.9586644526256114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705841.458, \"ph\": \"X\", \"dur\": 2.1010991702070205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.483, \"ph\": \"X\", \"dur\": 0.12721839924083825, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.375, \"ph\": \"X\", \"dur\": 0.2704014603471934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.267, \"ph\": \"X\", \"dur\": 0.40884501246222327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.159, \"ph\": \"X\", \"dur\": 0.5467896688939557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.047, \"ph\": \"X\", \"dur\": 0.6912199692085544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705843.93, \"ph\": \"X\", \"dur\": 0.8393919871478837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705843.818, \"ph\": \"X\", \"dur\": 0.9768377478963186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705843.663, \"ph\": \"X\", \"dur\": 1.1594335679831689, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.683, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.574, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.469, \"ph\": \"X\", \"dur\": 0.34698194773334506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.362, \"ph\": \"X\", \"dur\": 0.4804365430154009, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.251, \"ph\": \"X\", \"dur\": 0.6158867210306463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.144, \"ph\": \"X\", \"dur\": 0.7493413163127022, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705845.037, \"ph\": \"X\", \"dur\": 0.8827959115947579, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705844.92, \"ph\": \"X\", \"dur\": 1.0257295248594644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.703, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.595, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.486, \"ph\": \"X\", \"dur\": 0.3489775304665347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.378, \"ph\": \"X\", \"dur\": 0.48392881279848277, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.271, \"ph\": \"X\", \"dur\": 0.6151383775057002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.163, \"ph\": \"X\", \"dur\": 0.751087451204243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705846.041, \"ph\": \"X\", \"dur\": 0.8982616777769774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.795, \"ph\": \"X\", \"dur\": 0.0723398740781237, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.687, \"ph\": \"X\", \"dur\": 0.2155229351844789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.578, \"ph\": \"X\", \"dur\": 0.35446538298280617, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.469, \"ph\": \"X\", \"dur\": 0.4964012048809178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.362, \"ph\": \"X\", \"dur\": 0.6348447569959477, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.256, \"ph\": \"X\", \"dur\": 0.7673015609114087, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.148, \"ph\": \"X\", \"dur\": 0.9022528432433566, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705847.032, \"ph\": \"X\", \"dur\": 1.0441886651414685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.144, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.973, \"ph\": \"X\", \"dur\": 0.2773859999133571, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.863, \"ph\": \"X\", \"dur\": 0.4223151959112532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.755, \"ph\": \"X\", \"dur\": 0.5615070915512292, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.641, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.507, \"ph\": \"X\", \"dur\": 0.8660829062042948, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.399, \"ph\": \"X\", \"dur\": 1.000036397169648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.293, \"ph\": \"X\", \"dur\": 1.132493201085109, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705848.177, \"ph\": \"X\", \"dur\": 1.2749279186665181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705850.316, \"ph\": \"X\", \"dur\": 0.06560478235360874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705850.19, \"ph\": \"X\", \"dur\": 0.22949201431680624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705850.081, \"ph\": \"X\", \"dur\": 0.36444329664875424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.973, \"ph\": \"X\", \"dur\": 1.4595193214865578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.863, \"ph\": \"X\", \"dur\": 1.594470603818506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.754, \"ph\": \"X\", \"dur\": 1.7304196775170488, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.646, \"ph\": \"X\", \"dur\": 1.8653709598489967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705849.535, \"ph\": \"X\", \"dur\": 2.0038145119640265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.601, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.451, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.343, \"ph\": \"X\", \"dur\": 0.395624276854842, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.234, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.127, \"ph\": \"X\", \"dur\": 0.6737586202931453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705852.016, \"ph\": \"X\", \"dur\": 0.8161933378745544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705851.9, \"ph\": \"X\", \"dur\": 0.9715993432216959, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705851.763, \"ph\": \"X\", \"dur\": 1.1387293971263266, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705851.648, \"ph\": \"X\", \"dur\": 1.2861530715407097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.943, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.78, \"ph\": \"X\", \"dur\": 0.2718981473970857, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.67, \"ph\": \"X\", \"dur\": 0.4168273433949818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.562, \"ph\": \"X\", \"dur\": 0.5542731041434168, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.452, \"ph\": \"X\", \"dur\": 0.6952111346749337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.343, \"ph\": \"X\", \"dur\": 0.8361491652064506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.236, \"ph\": \"X\", \"dur\": 0.9753410608464265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.129, \"ph\": \"X\", \"dur\": 1.113285717278159, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705853.021, \"ph\": \"X\", \"dur\": 1.253225956443081, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.16, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.052, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.944, \"ph\": \"X\", \"dur\": 0.3230349549350697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.834, \"ph\": \"X\", \"dur\": 0.460231267841856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.725, \"ph\": \"X\", \"dur\": 0.5961803415403988, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.616, \"ph\": \"X\", \"dur\": 0.7321294152389416, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.505, \"ph\": \"X\", \"dur\": 0.8705729673539714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705854.388, \"ph\": \"X\", \"dur\": 1.0140054763019755, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.282, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.173, \"ph\": \"X\", \"dur\": 0.2037988866269899, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.067, \"ph\": \"X\", \"dur\": 0.3367545862257483, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.959, \"ph\": \"X\", \"dur\": 0.47070807719110147, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.854, \"ph\": \"X\", \"dur\": 0.6036637767898598, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.745, \"ph\": \"X\", \"dur\": 0.7386150591218079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.631, \"ph\": \"X\", \"dur\": 0.8800519853366221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705855.52, \"ph\": \"X\", \"dur\": 1.0174977460850572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705857.572, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705857.401, \"ph\": \"X\", \"dur\": 0.2793815826465467, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705857.293, \"ph\": \"X\", \"dur\": 0.41582955202838695, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705857.186, \"ph\": \"X\", \"dur\": 0.5532753127768221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705857.078, \"ph\": \"X\", \"dur\": 0.6927166562584466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.971, \"ph\": \"X\", \"dur\": 0.8314096562151252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.86, \"ph\": \"X\", \"dur\": 0.9738443737965342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.746, \"ph\": \"X\", \"dur\": 1.1197713611610252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705856.632, \"ph\": \"X\", \"dur\": 2.7733611034502736, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.312, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.19, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.08, \"ph\": \"X\", \"dur\": 0.37417176247305367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705859.968, \"ph\": \"X\", \"dur\": 0.5141120016379757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705859.856, \"ph\": \"X\", \"dur\": 0.6555489278527901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705859.741, \"ph\": \"X\", \"dur\": 0.8004781238506861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705859.616, \"ph\": \"X\", \"dur\": 0.9536390986229895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705859.5, \"ph\": \"X\", \"dur\": 1.0985682946208857, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.663, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.506, \"ph\": \"X\", \"dur\": 0.2566818290565148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.393, \"ph\": \"X\", \"dur\": 0.4043549513125466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.265, \"ph\": \"X\", \"dur\": 0.562504882917824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.154, \"ph\": \"X\", \"dur\": 0.7049396004992331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705861.039, \"ph\": \"X\", \"dur\": 0.8513654835470215, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.925, \"ph\": \"X\", \"dur\": 0.9985397101197558, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.81, \"ph\": \"X\", \"dur\": 1.1469611759007337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705860.693, \"ph\": \"X\", \"dur\": 1.295133193840063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.905, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.783, \"ph\": \"X\", \"dur\": 0.2037988866269899, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.668, \"ph\": \"X\", \"dur\": 0.3477302912582912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.559, \"ph\": \"X\", \"dur\": 0.48318046927353664, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.451, \"ph\": \"X\", \"dur\": 0.6196284386553769, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.341, \"ph\": \"X\", \"dur\": 0.7575730950871093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.231, \"ph\": \"X\", \"dur\": 0.8955177515188417, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705862.119, \"ph\": \"X\", \"dur\": 1.0347096471588177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.056, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.924, \"ph\": \"X\", \"dur\": 0.2546862463233252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.815, \"ph\": \"X\", \"dur\": 0.38913863297197576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.705, \"ph\": \"X\", \"dur\": 0.5305755591867901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.595, \"ph\": \"X\", \"dur\": 0.6735091724514966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.48, \"ph\": \"X\", \"dur\": 0.8194361598159875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.364, \"ph\": \"X\", \"dur\": 0.9683565212802628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705863.247, \"ph\": \"X\", \"dur\": 1.1177757784278355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.396, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.258, \"ph\": \"X\", \"dur\": 0.2357282103580238, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.138, \"ph\": \"X\", \"dur\": 0.39088476786351667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.028, \"ph\": \"X\", \"dur\": 0.5308250070284388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.919, \"ph\": \"X\", \"dur\": 0.6864804602172291, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.809, \"ph\": \"X\", \"dur\": 0.8468754223973448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.7, \"ph\": \"X\", \"dur\": 0.9845706309874285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.592, \"ph\": \"X\", \"dur\": 1.123513078785756, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705864.476, \"ph\": \"X\", \"dur\": 1.2719345445667336, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.763, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.605, \"ph\": \"X\", \"dur\": 0.2664102948808142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.487, \"ph\": \"X\", \"dur\": 0.4193218218114688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.379, \"ph\": \"X\", \"dur\": 1.4098792009984662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.27, \"ph\": \"X\", \"dur\": 1.5428349005972246, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.162, \"ph\": \"X\", \"dur\": 1.6852696181786337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705866.05, \"ph\": \"X\", \"dur\": 1.8262076487101506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.942, \"ph\": \"X\", \"dur\": 1.9611589310420985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705865.834, \"ph\": \"X\", \"dur\": 2.095611317690749, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.048, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.872, \"ph\": \"X\", \"dur\": 0.2763882085467623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.746, \"ph\": \"X\", \"dur\": 0.4315447660522552, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.633, \"ph\": \"X\", \"dur\": 0.5739794836336642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.524, \"ph\": \"X\", \"dur\": 0.7154164098484785, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.409, \"ph\": \"X\", \"dur\": 0.8598467101630773, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.297, \"ph\": \"X\", \"dur\": 1.0050253540026222, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.184, \"ph\": \"X\", \"dur\": 1.1482084151089773, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705868.065, \"ph\": \"X\", \"dur\": 1.298625463623145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.44, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.277, \"ph\": \"X\", \"dur\": 0.2634169207810298, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.164, \"ph\": \"X\", \"dur\": 0.40734832541233107, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.054, \"ph\": \"X\", \"dur\": 0.5467896688939557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.938, \"ph\": \"X\", \"dur\": 0.6917188648918519, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.814, \"ph\": \"X\", \"dur\": 0.8433831526142629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.694, \"ph\": \"X\", \"dur\": 0.9918046183952408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.567, \"ph\": \"X\", \"dur\": 1.1464622802174362, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705869.454, \"ph\": \"X\", \"dur\": 1.2871508629073045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.791, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.639, \"ph\": \"X\", \"dur\": 0.2541873506400278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.529, \"ph\": \"X\", \"dur\": 0.39836820311297777, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.419, \"ph\": \"X\", \"dur\": 0.5368117552280076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.307, \"ph\": \"X\", \"dur\": 0.6787475771261192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.196, \"ph\": \"X\", \"dur\": 0.8191867119743388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705871.086, \"ph\": \"X\", \"dur\": 0.9608730860308018, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.975, \"ph\": \"X\", \"dur\": 1.1018111165623186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705870.863, \"ph\": \"X\", \"dur\": 1.2452436255103225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.917, \"ph\": \"X\", \"dur\": 0.0815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.782, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.643, \"ph\": \"X\", \"dur\": 0.41208783440365643, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.529, \"ph\": \"X\", \"dur\": 0.5580148217681474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.418, \"ph\": \"X\", \"dur\": 0.7009484350328538, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.309, \"ph\": \"X\", \"dur\": 0.8403897785144785, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705872.197, \"ph\": \"X\", \"dur\": 0.9793322263128057, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705874.053, \"ph\": \"X\", \"dur\": 0.10676367622564464, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.943, \"ph\": \"X\", \"dur\": 0.2689047732973012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.833, \"ph\": \"X\", \"dur\": 0.40335715994595184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.724, \"ph\": \"X\", \"dur\": 0.5437962947941714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.614, \"ph\": \"X\", \"dur\": 0.685732116692283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.499, \"ph\": \"X\", \"dur\": 0.8306613126901791, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.385, \"ph\": \"X\", \"dur\": 0.9758399565297239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705873.269, \"ph\": \"X\", \"dur\": 1.9980772116061063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.234, \"ph\": \"X\", \"dur\": 0.07682993522780035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.108, \"ph\": \"X\", \"dur\": 0.23922048014110564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.969, \"ph\": \"X\", \"dur\": 0.40734832541233107, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.848, \"ph\": \"X\", \"dur\": 0.5585137174514447, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.734, \"ph\": \"X\", \"dur\": 0.7034429134493408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.618, \"ph\": \"X\", \"dur\": 0.8523632749136162, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.499, \"ph\": \"X\", \"dur\": 1.002530875586135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705875.367, \"ph\": \"X\", \"dur\": 1.1656697640243865, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.401, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.293, \"ph\": \"X\", \"dur\": 0.21926465280920943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.182, \"ph\": \"X\", \"dur\": 0.3582071006075367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.073, \"ph\": \"X\", \"dur\": 0.4961517570392691, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.964, \"ph\": \"X\", \"dur\": 0.6355931005208938, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.854, \"ph\": \"X\", \"dur\": 0.7765311310524106, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.738, \"ph\": \"X\", \"dur\": 0.922957014100199, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705876.623, \"ph\": \"X\", \"dur\": 1.0648928359983105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.567, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.457, \"ph\": \"X\", \"dur\": 0.22101078770075033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.349, \"ph\": \"X\", \"dur\": 0.3589554441324828, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.232, \"ph\": \"X\", \"dur\": 0.5066285663885146, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.122, \"ph\": \"X\", \"dur\": 0.650559971019816, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.013, \"ph\": \"X\", \"dur\": 0.7885046274515484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.904, \"ph\": \"X\", \"dur\": 0.9244537011500912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705877.788, \"ph\": \"X\", \"dur\": 1.0673873144147976, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.873, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.738, \"ph\": \"X\", \"dur\": 0.23273483625823937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.616, \"ph\": \"X\", \"dur\": 0.38714305023878615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.507, \"ph\": \"X\", \"dur\": 0.5290788721368979, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.398, \"ph\": \"X\", \"dur\": 0.6680213199352251, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.29, \"ph\": \"X\", \"dur\": 0.8097076939916881, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.18, \"ph\": \"X\", \"dur\": 0.9486501417900154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705879.07, \"ph\": \"X\", \"dur\": 1.090585963688127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705878.956, \"ph\": \"X\", \"dur\": 1.2365129510526178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.94, \"ph\": \"X\", \"dur\": 0.08356502695231531, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.831, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.72, \"ph\": \"X\", \"dur\": 0.35596207003269836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.61, \"ph\": \"X\", \"dur\": 0.4946550699893769, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.501, \"ph\": \"X\", \"dur\": 0.6291074566380276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.392, \"ph\": \"X\", \"dur\": 0.764557634653273, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705880.279, \"ph\": \"X\", \"dur\": 0.9039989781348976, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705882.235, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705882.088, \"ph\": \"X\", \"dur\": 0.26017409883959663, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.978, \"ph\": \"X\", \"dur\": 0.40335715994595184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.872, \"ph\": \"X\", \"dur\": 0.5403040250110895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.763, \"ph\": \"X\", \"dur\": 0.6802442641760115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.653, \"ph\": \"X\", \"dur\": 0.8216811903908258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.537, \"ph\": \"X\", \"dur\": 1.8538963591331565, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.421, \"ph\": \"X\", \"dur\": 1.995083837506322, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705881.302, \"ph\": \"X\", \"dur\": 2.145001990337192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.327, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.216, \"ph\": \"X\", \"dur\": 0.25518514200662257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.111, \"ph\": \"X\", \"dur\": 0.3861452588721913, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705883.998, \"ph\": \"X\", \"dur\": 0.5288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705883.887, \"ph\": \"X\", \"dur\": 0.6692685591434686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705883.775, \"ph\": \"X\", \"dur\": 0.8112043810415803, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705883.662, \"ph\": \"X\", \"dur\": 0.9536390986229895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705883.536, \"ph\": \"X\", \"dur\": 1.109793447495077, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.715, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.543, \"ph\": \"X\", \"dur\": 0.2664102948808142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.435, \"ph\": \"X\", \"dur\": 0.4093439081455207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.327, \"ph\": \"X\", \"dur\": 0.5467896688939557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.196, \"ph\": \"X\", \"dur\": 0.7094296616489097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705885.09, \"ph\": \"X\", \"dur\": 0.8473743180806422, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.976, \"ph\": \"X\", \"dur\": 0.9940496489700792, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.859, \"ph\": \"X\", \"dur\": 1.1384799492846778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705884.747, \"ph\": \"X\", \"dur\": 1.2814135625493843, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.088, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.888, \"ph\": \"X\", \"dur\": 0.29409900530382016, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.78, \"ph\": \"X\", \"dur\": 0.43803040993512143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.671, \"ph\": \"X\", \"dur\": 0.5767234098917999, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.562, \"ph\": \"X\", \"dur\": 0.7181603361066143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.454, \"ph\": \"X\", \"dur\": 0.8571027839049415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.345, \"ph\": \"X\", \"dur\": 0.9985397101197558, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.231, \"ph\": \"X\", \"dur\": 1.1444666974842466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705886.117, \"ph\": \"X\", \"dur\": 1.2893958934821428, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.32, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.19, \"ph\": \"X\", \"dur\": 0.25343900711508166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.052, \"ph\": \"X\", \"dur\": 0.4190723739698201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.944, \"ph\": \"X\", \"dur\": 0.5595115088180396, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.838, \"ph\": \"X\", \"dur\": 0.6974561652497719, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.728, \"ph\": \"X\", \"dur\": 0.8354008216815044, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.62, \"ph\": \"X\", \"dur\": 0.9758399565297239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705887.495, \"ph\": \"X\", \"dur\": 1.1332415446100552, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.384, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.278, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.169, \"ph\": \"X\", \"dur\": 0.3509731131997243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.062, \"ph\": \"X\", \"dur\": 0.48492660416507755, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.954, \"ph\": \"X\", \"dur\": 0.6198778864970256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.835, \"ph\": \"X\", \"dur\": 0.7673015609114087, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705888.716, \"ph\": \"X\", \"dur\": 0.913727443959197, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705890.499, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705890.392, \"ph\": \"X\", \"dur\": 0.21602183086777632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705890.284, \"ph\": \"X\", \"dur\": 1.2230427676035882, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705890.176, \"ph\": \"X\", \"dur\": 1.3535039887858593, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705890.069, \"ph\": \"X\", \"dur\": 1.4914486452175917, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.96, \"ph\": \"X\", \"dur\": 1.6386228717903262, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.844, \"ph\": \"X\", \"dur\": 1.7835520677882224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705889.729, \"ph\": \"X\", \"dur\": 1.9284812637861184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.573, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.466, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.358, \"ph\": \"X\", \"dur\": 0.357957652765888, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.249, \"ph\": \"X\", \"dur\": 0.49690010056421524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.132, \"ph\": \"X\", \"dur\": 0.6445732228202471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.02, \"ph\": \"X\", \"dur\": 0.7835156706185743, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705891.903, \"ph\": \"X\", \"dur\": 0.9294426579830652, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705891.792, \"ph\": \"X\", \"dur\": 1.067886210098095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.789, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.653, \"ph\": \"X\", \"dur\": 0.25169287222354075, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.545, \"ph\": \"X\", \"dur\": 0.3861452588721913, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.438, \"ph\": \"X\", \"dur\": 0.5215954368874368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.33, \"ph\": \"X\", \"dur\": 0.6545511364861952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.216, \"ph\": \"X\", \"dur\": 0.7969858540676042, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705893.08, \"ph\": \"X\", \"dur\": 0.9591269511392608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705892.963, \"ph\": \"X\", \"dur\": 1.1030583557705622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.127, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.962, \"ph\": \"X\", \"dur\": 0.2748915214968701, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.852, \"ph\": \"X\", \"dur\": 0.4128361779286025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.746, \"ph\": \"X\", \"dur\": 0.5480369081021993, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.637, \"ph\": \"X\", \"dur\": 0.6884760429504186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.528, \"ph\": \"X\", \"dur\": 0.8299129691652329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.42, \"ph\": \"X\", \"dur\": 0.9698532083301551, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.314, \"ph\": \"X\", \"dur\": 1.1068000733952927, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705894.202, \"ph\": \"X\", \"dur\": 1.2512303737098913, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.302, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.193, \"ph\": \"X\", \"dur\": 0.20629336504347692, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.083, \"ph\": \"X\", \"dur\": 0.3412446473754249, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.975, \"ph\": \"X\", \"dur\": 0.47869040812386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.866, \"ph\": \"X\", \"dur\": 0.6146394818224028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.756, \"ph\": \"X\", \"dur\": 0.7490918684710535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.649, \"ph\": \"X\", \"dur\": 0.8840431508030013, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705895.538, \"ph\": \"X\", \"dur\": 1.021738359393085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705897.466, \"ph\": \"X\", \"dur\": 0.08481226616055883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705897.357, \"ph\": \"X\", \"dur\": 0.22375471395888608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705897.244, \"ph\": \"X\", \"dur\": 0.36519164017370037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705897.135, \"ph\": \"X\", \"dur\": 0.5041340879720276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705897.019, \"ph\": \"X\", \"dur\": 0.6515577623864108, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.905, \"ph\": \"X\", \"dur\": 0.7964869583843068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.791, \"ph\": \"X\", \"dur\": 0.9404183630156082, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705896.674, \"ph\": \"X\", \"dur\": 1.0900870680048298, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.423, \"ph\": \"X\", \"dur\": 0.10027803234277838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.313, \"ph\": \"X\", \"dur\": 0.23772379309121341, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.203, \"ph\": \"X\", \"dur\": 0.3776640322561355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.09, \"ph\": \"X\", \"dur\": 0.523092123937329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705898.975, \"ph\": \"X\", \"dur\": 0.6670235285686302, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705898.857, \"ph\": \"X\", \"dur\": 0.8161933378745544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705898.734, \"ph\": \"X\", \"dur\": 0.9688554169635603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.468, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.36, \"ph\": \"X\", \"dur\": 0.21153176971809967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.251, \"ph\": \"X\", \"dur\": 0.34548526068345287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.141, \"ph\": \"X\", \"dur\": 0.4806859908570496, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.03, \"ph\": \"X\", \"dur\": 0.618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.917, \"ph\": \"X\", \"dur\": 0.7580719907704068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705899.794, \"ph\": \"X\", \"dur\": 0.9077406957596281, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.595, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.487, \"ph\": \"X\", \"dur\": 0.22425360964218347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.375, \"ph\": \"X\", \"dur\": 0.36519164017370037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.245, \"ph\": \"X\", \"dur\": 0.5273327372453569, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.136, \"ph\": \"X\", \"dur\": 0.6697674548267659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705901.023, \"ph\": \"X\", \"dur\": 0.8136988594580673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.909, \"ph\": \"X\", \"dur\": 0.9541379943062869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705900.793, \"ph\": \"X\", \"dur\": 1.096572711887696, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.682, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.574, \"ph\": \"X\", \"dur\": 0.2180174136009659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.462, \"ph\": \"X\", \"dur\": 0.36419384880710554, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.347, \"ph\": \"X\", \"dur\": 0.5023879530804867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.233, \"ph\": \"X\", \"dur\": 0.6418292965621114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.115, \"ph\": \"X\", \"dur\": 0.7850123576684666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705902.003, \"ph\": \"X\", \"dur\": 0.9239548054667938, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.962, \"ph\": \"X\", \"dur\": 0.08406392263561271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.851, \"ph\": \"X\", \"dur\": 0.23123814920834715, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.742, \"ph\": \"X\", \"dur\": 0.3776640322561355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.634, \"ph\": \"X\", \"dur\": 0.5121164189047861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.504, \"ph\": \"X\", \"dur\": 0.6742575159764426, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.39, \"ph\": \"X\", \"dur\": 0.818188920607744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.24, \"ph\": \"X\", \"dur\": 0.9995375014863506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705903.089, \"ph\": \"X\", \"dur\": 1.1948551614972847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705905.322, \"ph\": \"X\", \"dur\": 0.0917968057267225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705905.173, \"ph\": \"X\", \"dur\": 0.2763882085467623, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705905.064, \"ph\": \"X\", \"dur\": 0.4203196131780636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.954, \"ph\": \"X\", \"dur\": 0.5607587480262831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.845, \"ph\": \"X\", \"dur\": 0.7039418091326383, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.736, \"ph\": \"X\", \"dur\": 0.8423853612476682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.628, \"ph\": \"X\", \"dur\": 0.9828244960958875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.511, \"ph\": \"X\", \"dur\": 1.1544446111501947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705904.391, \"ph\": \"X\", \"dur\": 1.2996232549897397, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.695, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.533, \"ph\": \"X\", \"dur\": 0.25867741178970444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.411, \"ph\": \"X\", \"dur\": 0.41582955202838695, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.288, \"ph\": \"X\", \"dur\": 0.5679927354340953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.177, \"ph\": \"X\", \"dur\": 0.7079329745990175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705907.065, \"ph\": \"X\", \"dur\": 0.8491204529721831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705906.923, \"ph\": \"X\", \"dur\": 1.02273615075968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705906.808, \"ph\": \"X\", \"dur\": 1.1681642424408736, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705906.681, \"ph\": \"X\", \"dur\": 1.3263141740461508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.66, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.55, \"ph\": \"X\", \"dur\": 0.204547230151936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.441, \"ph\": \"X\", \"dur\": 0.34149409521707363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.324, \"ph\": \"X\", \"dur\": 0.48492660416507755, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.208, \"ph\": \"X\", \"dur\": 0.6301052480046223, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.092, \"ph\": \"X\", \"dur\": 0.7725399655860313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.796, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.673, \"ph\": \"X\", \"dur\": 0.22275692259229127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.563, \"ph\": \"X\", \"dur\": 0.357957652765888, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.447, \"ph\": \"X\", \"dur\": 0.5026374009221354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.335, \"ph\": \"X\", \"dur\": 0.6398337138289217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.197, \"ph\": \"X\", \"dur\": 0.8049681850003627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705909.083, \"ph\": \"X\", \"dur\": 0.94391063279869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705908.968, \"ph\": \"X\", \"dur\": 1.0850981111718556, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.961, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.837, \"ph\": \"X\", \"dur\": 0.22350526611723737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.731, \"ph\": \"X\", \"dur\": 0.3564609657159958, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.623, \"ph\": \"X\", \"dur\": 0.4884188739481593, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.516, \"ph\": \"X\", \"dur\": 0.6208756778636203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.405, \"ph\": \"X\", \"dur\": 0.7583214386120555, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.29, \"ph\": \"X\", \"dur\": 0.8987605734602748, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705910.166, \"ph\": \"X\", \"dur\": 1.049427069816091, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.125, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.01, \"ph\": \"X\", \"dur\": 0.21153176971809967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.866, \"ph\": \"X\", \"dur\": 0.38265298908910955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.759, \"ph\": \"X\", \"dur\": 0.5151097930045705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.654, \"ph\": \"X\", \"dur\": 0.6480654926033289, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.546, \"ph\": \"X\", \"dur\": 0.782018983568682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.431, \"ph\": \"X\", \"dur\": 0.9239548054667938, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705911.313, \"ph\": \"X\", \"dur\": 1.0703806885145821, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705913.294, \"ph\": \"X\", \"dur\": 0.07732883091109775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705913.187, \"ph\": \"X\", \"dur\": 0.2354787625163751, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705913.075, \"ph\": \"X\", \"dur\": 0.3706794926899718, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.949, \"ph\": \"X\", \"dur\": 0.5295777678201953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.838, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.721, \"ph\": \"X\", \"dur\": 0.8214317425491771, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.606, \"ph\": \"X\", \"dur\": 0.9668598342303707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705912.486, \"ph\": \"X\", \"dur\": 1.1167779870612409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705915.617, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705915.471, \"ph\": \"X\", \"dur\": 0.24146551071594397, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705915.35, \"ph\": \"X\", \"dur\": 0.39737041174638293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705915.234, \"ph\": \"X\", \"dur\": 0.5442951904774688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705915.115, \"ph\": \"X\", \"dur\": 0.693215551941744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705914.995, \"ph\": \"X\", \"dur\": 0.8448798396641551, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705914.879, \"ph\": \"X\", \"dur\": 0.9933013054451331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705914.766, \"ph\": \"X\", \"dur\": 1.136733814393137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705914.624, \"ph\": \"X\", \"dur\": 1.3108484078639313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.805, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.696, \"ph\": \"X\", \"dur\": 0.2047966779935847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.588, \"ph\": \"X\", \"dur\": 0.33974796032553267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.477, \"ph\": \"X\", \"dur\": 0.47619592970737296, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.368, \"ph\": \"X\", \"dur\": 0.6116461077226184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.252, \"ph\": \"X\", \"dur\": 0.7538313774623788, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.136, \"ph\": \"X\", \"dur\": 0.8957671993604904, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705916.022, \"ph\": \"X\", \"dur\": 1.0357074385254126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.078, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.929, \"ph\": \"X\", \"dur\": 0.25368845495673037, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.82, \"ph\": \"X\", \"dur\": 0.3953748290131933, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.712, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.604, \"ph\": \"X\", \"dur\": 0.67475641165974, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.495, \"ph\": \"X\", \"dur\": 0.8146966508246621, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.378, \"ph\": \"X\", \"dur\": 0.9641159079722349, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.264, \"ph\": \"X\", \"dur\": 1.1110406867033207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705917.148, \"ph\": \"X\", \"dur\": 1.2579654654344063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.332, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.205, \"ph\": \"X\", \"dur\": 0.2259997445337244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.097, \"ph\": \"X\", \"dur\": 0.3619488182322672, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.973, \"ph\": \"X\", \"dur\": 0.5136131059546784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.862, \"ph\": \"X\", \"dur\": 0.6495621796532212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.752, \"ph\": \"X\", \"dur\": 0.7855112533517639, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.638, \"ph\": \"X\", \"dur\": 0.9264492838832808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705918.521, \"ph\": \"X\", \"dur\": 1.0698817928312847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.631, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.482, \"ph\": \"X\", \"dur\": 0.26192023373113754, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.373, \"ph\": \"X\", \"dur\": 0.39936599447957255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.266, \"ph\": \"X\", \"dur\": 0.5368117552280076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.155, \"ph\": \"X\", \"dur\": 0.6792464728094166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705920.046, \"ph\": \"X\", \"dur\": 0.8191867119743388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.937, \"ph\": \"X\", \"dur\": 0.9596258468225582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.813, \"ph\": \"X\", \"dur\": 1.115780195694646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705919.701, \"ph\": \"X\", \"dur\": 1.2587138089593526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705922.077, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.866, \"ph\": \"X\", \"dur\": 0.3065713973862553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.759, \"ph\": \"X\", \"dur\": 0.44701053223447473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.648, \"ph\": \"X\", \"dur\": 1.5548083969963622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.539, \"ph\": \"X\", \"dur\": 1.688262992278418, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.425, \"ph\": \"X\", \"dur\": 1.831695501226422, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.31, \"ph\": \"X\", \"dur\": 1.97238408391629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.198, \"ph\": \"X\", \"dur\": 2.1153176971809966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705921.087, \"ph\": \"X\", \"dur\": 2.257253519079108, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.411, \"ph\": \"X\", \"dur\": 0.06510588667031134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.253, \"ph\": \"X\", \"dur\": 0.2576796204231096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.144, \"ph\": \"X\", \"dur\": 0.4016110250544109, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.035, \"ph\": \"X\", \"dur\": 0.541551264219333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705923.921, \"ph\": \"X\", \"dur\": 0.6859815645339317, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705923.806, \"ph\": \"X\", \"dur\": 0.83240744758172, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705923.687, \"ph\": \"X\", \"dur\": 0.9828244960958875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705923.571, \"ph\": \"X\", \"dur\": 1.1307470661935681, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705923.46, \"ph\": \"X\", \"dur\": 1.2734312316166259, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.758, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.588, \"ph\": \"X\", \"dur\": 0.2651630556725707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.479, \"ph\": \"X\", \"dur\": 0.40834611677892585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.372, \"ph\": \"X\", \"dur\": 0.5442951904774688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.26, \"ph\": \"X\", \"dur\": 0.6897232821586622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.147, \"ph\": \"X\", \"dur\": 0.8329063432650174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705925.041, \"ph\": \"X\", \"dur\": 0.9715993432216959, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.933, \"ph\": \"X\", \"dur\": 1.1100428953367258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705924.826, \"ph\": \"X\", \"dur\": 1.246490864718566, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.934, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.826, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.718, \"ph\": \"X\", \"dur\": 0.3549642786661035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.609, \"ph\": \"X\", \"dur\": 0.5051318793386224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.502, \"ph\": \"X\", \"dur\": 0.6425776400870575, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.384, \"ph\": \"X\", \"dur\": 0.7909991058680353, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.273, \"ph\": \"X\", \"dur\": 0.9344316148160393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705926.158, \"ph\": \"X\", \"dur\": 1.0803586021805303, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.12, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.011, \"ph\": \"X\", \"dur\": 0.23772379309121341, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.904, \"ph\": \"X\", \"dur\": 0.3746706581563511, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.793, \"ph\": \"X\", \"dur\": 0.5161075843711653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.686, \"ph\": \"X\", \"dur\": 0.6565467192193848, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.575, \"ph\": \"X\", \"dur\": 0.7964869583843068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.462, \"ph\": \"X\", \"dur\": 0.9369260932325263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705927.353, \"ph\": \"X\", \"dur\": 1.071378479881177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705929.296, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705929.188, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705929.08, \"ph\": \"X\", \"dur\": 0.357957652765888, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.973, \"ph\": \"X\", \"dur\": 0.49690010056421524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.867, \"ph\": \"X\", \"dur\": 0.6355931005208938, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.758, \"ph\": \"X\", \"dur\": 0.7740366526359236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.653, \"ph\": \"X\", \"dur\": 0.9074912479179794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705928.537, \"ph\": \"X\", \"dur\": 2.119308862647376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.549, \"ph\": \"X\", \"dur\": 0.09354294061826342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.441, \"ph\": \"X\", \"dur\": 0.23622710604132122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.321, \"ph\": \"X\", \"dur\": 0.38764194592208356, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.205, \"ph\": \"X\", \"dur\": 0.5338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.089, \"ph\": \"X\", \"dur\": 0.6812420555426063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705930.974, \"ph\": \"X\", \"dur\": 0.8281668342736921, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705930.858, \"ph\": \"X\", \"dur\": 0.9745927173214803, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705930.743, \"ph\": \"X\", \"dur\": 1.1202702568443226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.79, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.684, \"ph\": \"X\", \"dur\": 0.2264986402170218, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.576, \"ph\": \"X\", \"dur\": 0.36444329664875424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.463, \"ph\": \"X\", \"dur\": 0.5093724926466504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.334, \"ph\": \"X\", \"dur\": 0.6685202156185225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.214, \"ph\": \"X\", \"dur\": 0.8194361598159875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705932.097, \"ph\": \"X\", \"dur\": 0.9678576255969655, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705931.982, \"ph\": \"X\", \"dur\": 1.1102923431783744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.031, \"ph\": \"X\", \"dur\": 0.10127582370937319, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.885, \"ph\": \"X\", \"dur\": 0.28287385242962854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.75, \"ph\": \"X\", \"dur\": 0.44701053223447473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.639, \"ph\": \"X\", \"dur\": 0.5874496670826942, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.532, \"ph\": \"X\", \"dur\": 0.7246459799894805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.426, \"ph\": \"X\", \"dur\": 0.8635884277878079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.308, \"ph\": \"X\", \"dur\": 1.0130076849353806, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705933.19, \"ph\": \"X\", \"dur\": 1.1631752856078994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.263, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.132, \"ph\": \"X\", \"dur\": 0.23298428409988808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.025, \"ph\": \"X\", \"dur\": 0.36993114916502573, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.917, \"ph\": \"X\", \"dur\": 0.5053813271802711, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.812, \"ph\": \"X\", \"dur\": 0.6373392354124348, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.703, \"ph\": \"X\", \"dur\": 0.77278941342768, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.585, \"ph\": \"X\", \"dur\": 0.9172197137422788, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705934.456, \"ph\": \"X\", \"dur\": 1.0733740626143664, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.392, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.284, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.178, \"ph\": \"X\", \"dur\": 0.3529686959329139, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.071, \"ph\": \"X\", \"dur\": 0.4859243955316723, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.964, \"ph\": \"X\", \"dur\": 0.6188800951304307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.855, \"ph\": \"X\", \"dur\": 0.7533324817790814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.74, \"ph\": \"X\", \"dur\": 0.8937716166273008, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705935.624, \"ph\": \"X\", \"dur\": 1.0372041255753046, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705937.528, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705937.42, \"ph\": \"X\", \"dur\": 0.22101078770075033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705937.312, \"ph\": \"X\", \"dur\": 0.35745875708259056, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705937.204, \"ph\": \"X\", \"dur\": 0.49141224804794376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705937.097, \"ph\": \"X\", \"dur\": 0.6243679476467022, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.986, \"ph\": \"X\", \"dur\": 1.8167286307275, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.87, \"ph\": \"X\", \"dur\": 1.955671078525827, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705936.753, \"ph\": \"X\", \"dur\": 2.1013486180486693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.846, \"ph\": \"X\", \"dur\": 0.06485643882866263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.735, \"ph\": \"X\", \"dur\": 0.20853839561831525, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.609, \"ph\": \"X\", \"dur\": 0.3636949531238082, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.467, \"ph\": \"X\", \"dur\": 0.5333194854449258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.355, \"ph\": \"X\", \"dur\": 0.6752553073430374, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.242, \"ph\": \"X\", \"dur\": 0.8166922335578517, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705939.123, \"ph\": \"X\", \"dur\": 0.9618708773973966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705938.998, \"ph\": \"X\", \"dur\": 1.1147824043280512, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.995, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.886, \"ph\": \"X\", \"dur\": 0.2267480880586705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.775, \"ph\": \"X\", \"dur\": 0.36618943154029515, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.667, \"ph\": \"X\", \"dur\": 0.507127462071812, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.549, \"ph\": \"X\", \"dur\": 0.6555489278527901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.436, \"ph\": \"X\", \"dur\": 0.7994803324840912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.32, \"ph\": \"X\", \"dur\": 0.9459062155318796, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705940.204, \"ph\": \"X\", \"dur\": 1.093080442104614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.233, \"ph\": \"X\", \"dur\": 0.07508380033625943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.122, \"ph\": \"X\", \"dur\": 0.22101078770075033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.014, \"ph\": \"X\", \"dur\": 0.3594543398157802, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705941.905, \"ph\": \"X\", \"dur\": 0.49789789193081, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705941.789, \"ph\": \"X\", \"dur\": 0.6453215663451932, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705941.673, \"ph\": \"X\", \"dur\": 0.792994688601225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705941.558, \"ph\": \"X\", \"dur\": 0.9381733324407698, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705941.433, \"ph\": \"X\", \"dur\": 1.089837620163181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.421, \"ph\": \"X\", \"dur\": 0.07383656112801591, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.307, \"ph\": \"X\", \"dur\": 0.2130284567679919, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.181, \"ph\": \"X\", \"dur\": 0.36494219233205166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.048, \"ph\": \"X\", \"dur\": 0.5235910196206264, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.914, \"ph\": \"X\", \"dur\": 0.6842354296423907, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.769, \"ph\": \"X\", \"dur\": 0.8543588576468059, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705942.617, \"ph\": \"X\", \"dur\": 1.0317162730590332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.55, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.441, \"ph\": \"X\", \"dur\": 0.21203066540139706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.331, \"ph\": \"X\", \"dur\": 0.3509731131997243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.218, \"ph\": \"X\", \"dur\": 0.4959023091976204, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.11, \"ph\": \"X\", \"dur\": 0.6358425483625425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.994, \"ph\": \"X\", \"dur\": 0.7772794745773567, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.872, \"ph\": \"X\", \"dur\": 0.9259503881999834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705943.753, \"ph\": \"X\", \"dur\": 1.0708795841978795, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.764, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.648, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.538, \"ph\": \"X\", \"dur\": 0.3494764261498321, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.427, \"ph\": \"X\", \"dur\": 0.4859243955316723, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.281, \"ph\": \"X\", \"dur\": 0.6570456149026822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.166, \"ph\": \"X\", \"dur\": 1.8638742727991047, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705945.048, \"ph\": \"X\", \"dur\": 2.006558438222162, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705944.935, \"ph\": \"X\", \"dur\": 2.147496468753679, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.011, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.898, \"ph\": \"X\", \"dur\": 0.2165207265510737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.78, \"ph\": \"X\", \"dur\": 0.3599532354990776, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.666, \"ph\": \"X\", \"dur\": 0.5028868487637841, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.551, \"ph\": \"X\", \"dur\": 0.6470677012367342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.428, \"ph\": \"X\", \"dur\": 0.7994803324840912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.314, \"ph\": \"X\", \"dur\": 0.9394205716490134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705947.196, \"ph\": \"X\", \"dur\": 1.0841003198052608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705949.501, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705949.313, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705949.194, \"ph\": \"X\", \"dur\": 0.46671691172472224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705949.071, \"ph\": \"X\", \"dur\": 0.6213745735469177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.887, \"ph\": \"X\", \"dur\": 0.8376458522563428, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.773, \"ph\": \"X\", \"dur\": 0.9830739439375362, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.634, \"ph\": \"X\", \"dur\": 1.1536962676252487, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.514, \"ph\": \"X\", \"dur\": 1.3056100031893085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705948.381, \"ph\": \"X\", \"dur\": 1.4702455786774522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.739, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.632, \"ph\": \"X\", \"dur\": 0.2037988866269899, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.522, \"ph\": \"X\", \"dur\": 0.3407457516921275, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.413, \"ph\": \"X\", \"dur\": 0.4751981383407781, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.302, \"ph\": \"X\", \"dur\": 0.6131427947725105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.187, \"ph\": \"X\", \"dur\": 0.7548291688289736, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705950.067, \"ph\": \"X\", \"dur\": 0.9022528432433566, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705949.95, \"ph\": \"X\", \"dur\": 1.0471820392412527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.048, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.899, \"ph\": \"X\", \"dur\": 0.2564323812148661, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.766, \"ph\": \"X\", \"dur\": 0.4180745826032253, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.657, \"ph\": \"X\", \"dur\": 0.5565181347182552, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.548, \"ph\": \"X\", \"dur\": 0.6974561652497719, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.439, \"ph\": \"X\", \"dur\": 0.8368975087313967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.324, \"ph\": \"X\", \"dur\": 0.9833233917791849, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.208, \"ph\": \"X\", \"dur\": 1.1304976183519193, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705951.092, \"ph\": \"X\", \"dur\": 1.2779212927663024, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.16, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.023, \"ph\": \"X\", \"dur\": 0.26017409883959663, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.903, \"ph\": \"X\", \"dur\": 0.4078472210956285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.794, \"ph\": \"X\", \"dur\": 0.5442951904774688, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.685, \"ph\": \"X\", \"dur\": 0.679745368492714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.577, \"ph\": \"X\", \"dur\": 0.8171911292411491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705952.461, \"ph\": \"X\", \"dur\": 0.9601247425058557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705954.332, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705954.221, \"ph\": \"X\", \"dur\": 0.20429778231028728, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705954.113, \"ph\": \"X\", \"dur\": 1.4108769923650608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705954.004, \"ph\": \"X\", \"dur\": 1.5578017710961467, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.894, \"ph\": \"X\", \"dur\": 1.6972431145777713, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.78, \"ph\": \"X\", \"dur\": 1.8523996720832643, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.638, \"ph\": \"X\", \"dur\": 2.021275860879436, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705953.519, \"ph\": \"X\", \"dur\": 2.1701962223437112, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.593, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.486, \"ph\": \"X\", \"dur\": 0.2065428128851256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.376, \"ph\": \"X\", \"dur\": 0.3424918865836684, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.263, \"ph\": \"X\", \"dur\": 0.48442770848178013, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.148, \"ph\": \"X\", \"dur\": 0.6258646346965944, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.03, \"ph\": \"X\", \"dur\": 0.7710432785361392, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705955.902, \"ph\": \"X\", \"dur\": 0.9259503881999834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705955.781, \"ph\": \"X\", \"dur\": 1.0741224061393126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.788, \"ph\": \"X\", \"dur\": 0.07159153055317759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.66, \"ph\": \"X\", \"dur\": 0.23373262762483418, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.551, \"ph\": \"X\", \"dur\": 0.3681850142734848, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.438, \"ph\": \"X\", \"dur\": 0.5081252534384069, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.329, \"ph\": \"X\", \"dur\": 0.6445732228202471, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.214, \"ph\": \"X\", \"dur\": 0.7875068360849535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705957.097, \"ph\": \"X\", \"dur\": 0.9299415536663627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705956.982, \"ph\": \"X\", \"dur\": 1.0731246147727178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.941, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.831, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.723, \"ph\": \"X\", \"dur\": 0.3409951995337762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.615, \"ph\": \"X\", \"dur\": 0.47395089913253463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.499, \"ph\": \"X\", \"dur\": 0.6158867210306463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.384, \"ph\": \"X\", \"dur\": 0.7588203342953528, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.267, \"ph\": \"X\", \"dur\": 0.9032506346099515, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705958.15, \"ph\": \"X\", \"dur\": 1.0484292784494962, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.213, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.064, \"ph\": \"X\", \"dur\": 0.24321164560748484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.955, \"ph\": \"X\", \"dur\": 0.38714305023878615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.845, \"ph\": \"X\", \"dur\": 0.5260854980371135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.738, \"ph\": \"X\", \"dur\": 0.6630323631022511, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.631, \"ph\": \"X\", \"dur\": 0.7999792281673886, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.521, \"ph\": \"X\", \"dur\": 0.9429128414320952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.406, \"ph\": \"X\", \"dur\": 1.0888398287965861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705959.292, \"ph\": \"X\", \"dur\": 1.2357646075276718, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705961.436, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705961.313, \"ph\": \"X\", \"dur\": 0.20978563482655874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705961.202, \"ph\": \"X\", \"dur\": 0.3477302912582912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705961.091, \"ph\": \"X\", \"dur\": 0.4854254998483749, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.983, \"ph\": \"X\", \"dur\": 0.6198778864970256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.873, \"ph\": \"X\", \"dur\": 0.7573236472454606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.759, \"ph\": \"X\", \"dur\": 0.89776278209368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705960.644, \"ph\": \"X\", \"dur\": 1.0401974996750891, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.457, \"ph\": \"X\", \"dur\": 0.07009484350328539, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.341, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.226, \"ph\": \"X\", \"dur\": 0.36444329664875424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.11, \"ph\": \"X\", \"dur\": 0.51136807537984, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705962.994, \"ph\": \"X\", \"dur\": 0.6592906454775206, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705962.878, \"ph\": \"X\", \"dur\": 0.8052176328420114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705962.765, \"ph\": \"X\", \"dur\": 0.950645724523205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705962.633, \"ph\": \"X\", \"dur\": 1.1137846129614564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.694, \"ph\": \"X\", \"dur\": 0.07458490465296203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.569, \"ph\": \"X\", \"dur\": 0.24321164560748484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.448, \"ph\": \"X\", \"dur\": 0.3936286941216524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.327, \"ph\": \"X\", \"dur\": 0.5455424296857122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.206, \"ph\": \"X\", \"dur\": 0.6989528522996642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705964.075, \"ph\": \"X\", \"dur\": 0.8581005752715364, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.952, \"ph\": \"X\", \"dur\": 1.0130076849353806, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705963.837, \"ph\": \"X\", \"dur\": 1.1546940589918435, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.959, \"ph\": \"X\", \"dur\": 0.09578797119310173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.836, \"ph\": \"X\", \"dur\": 0.25219176790683817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.718, \"ph\": \"X\", \"dur\": 0.39811875527132906, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.601, \"ph\": \"X\", \"dur\": 0.5462907732106583, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.476, \"ph\": \"X\", \"dur\": 0.7014473307161512, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.358, \"ph\": \"X\", \"dur\": 0.8496193486554805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.23, \"ph\": \"X\", \"dur\": 1.0095154151522987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705965.11, \"ph\": \"X\", \"dur\": 1.1561907460417358, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.305, \"ph\": \"X\", \"dur\": 0.07907496580263867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.158, \"ph\": \"X\", \"dur\": 0.26216968157278625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.038, \"ph\": \"X\", \"dur\": 0.4098428038288181, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705966.916, \"ph\": \"X\", \"dur\": 0.5607587480262831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705966.792, \"ph\": \"X\", \"dur\": 0.7149175141651811, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705966.663, \"ph\": \"X\", \"dur\": 0.872568550087161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705966.538, \"ph\": \"X\", \"dur\": 1.0254800770178156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705966.41, \"ph\": \"X\", \"dur\": 1.1806366345233086, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705968.668, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705968.466, \"ph\": \"X\", \"dur\": 0.3407457516921275, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705968.344, \"ph\": \"X\", \"dur\": 0.48791997826486194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705968.224, \"ph\": \"X\", \"dur\": 0.6403326095122192, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705968.098, \"ph\": \"X\", \"dur\": 0.7964869583843068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.977, \"ph\": \"X\", \"dur\": 0.9491490374733128, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.82, \"ph\": \"X\", \"dur\": 1.137482157918083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705967.692, \"ph\": \"X\", \"dur\": 1.2961309852066578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705970.079, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.939, \"ph\": \"X\", \"dur\": 0.2339820754664829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.747, \"ph\": \"X\", \"dur\": 0.45773678942536894, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.63, \"ph\": \"X\", \"dur\": 0.6039132246315085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.503, \"ph\": \"X\", \"dur\": 0.7618137083951373, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.334, \"ph\": \"X\", \"dur\": 0.9601247425058557, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.206, \"ph\": \"X\", \"dur\": 1.1167779870612409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705969.094, \"ph\": \"X\", \"dur\": 2.300906891367631, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705972.603, \"ph\": \"X\", \"dur\": 0.06884760429504187, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705972.427, \"ph\": \"X\", \"dur\": 0.28511888300446686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705972.3, \"ph\": \"X\", \"dur\": 0.44800832360106957, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705972.168, \"ph\": \"X\", \"dur\": 0.6141405861391054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705972.041, \"ph\": \"X\", \"dur\": 0.7710432785361392, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705971.916, \"ph\": \"X\", \"dur\": 0.9264492838832808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705971.774, \"ph\": \"X\", \"dur\": 1.1013122208790211, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705971.649, \"ph\": \"X\", \"dur\": 1.25921270464265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705971.509, \"ph\": \"X\", \"dur\": 1.4298350283303622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.876, \"ph\": \"X\", \"dur\": 0.07583214386120554, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.76, \"ph\": \"X\", \"dur\": 0.2252514010087783, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.642, \"ph\": \"X\", \"dur\": 0.3726750754231615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.526, \"ph\": \"X\", \"dur\": 0.5161075843711653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.403, \"ph\": \"X\", \"dur\": 0.6692685591434686, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.286, \"ph\": \"X\", \"dur\": 0.8136988594580673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.168, \"ph\": \"X\", \"dur\": 0.9596258468225582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705973.035, \"ph\": \"X\", \"dur\": 1.1202702568443226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.094, \"ph\": \"X\", \"dur\": 0.06460699098701393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.974, \"ph\": \"X\", \"dur\": 0.2180174136009659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.852, \"ph\": \"X\", \"dur\": 0.3679355664318361, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.714, \"ph\": \"X\", \"dur\": 0.5333194854449258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.596, \"ph\": \"X\", \"dur\": 0.6792464728094166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.48, \"ph\": \"X\", \"dur\": 0.8221800860741232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.36, \"ph\": \"X\", \"dur\": 0.9683565212802628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705974.243, \"ph\": \"X\", \"dur\": 1.113285717278159, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.283, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.165, \"ph\": \"X\", \"dur\": 0.2250019531671296, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.048, \"ph\": \"X\", \"dur\": 0.3709289405316205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.924, \"ph\": \"X\", \"dur\": 0.5220943325707342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.806, \"ph\": \"X\", \"dur\": 0.6700169026684146, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.688, \"ph\": \"X\", \"dur\": 0.8146966508246621, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.57, \"ph\": \"X\", \"dur\": 0.9616214295557479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705975.445, \"ph\": \"X\", \"dur\": 1.113285717278159, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.517, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.399, \"ph\": \"X\", \"dur\": 0.2277458794252653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.276, \"ph\": \"X\", \"dur\": 0.3781629279394329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.155, \"ph\": \"X\", \"dur\": 0.5263349458787622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.036, \"ph\": \"X\", \"dur\": 0.6727608289265504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.92, \"ph\": \"X\", \"dur\": 0.815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.799, \"ph\": \"X\", \"dur\": 0.9658620428637759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705976.65, \"ph\": \"X\", \"dur\": 1.1409744277011649, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.714, \"ph\": \"X\", \"dur\": 0.09454073198485823, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.593, \"ph\": \"X\", \"dur\": 0.2554345898482713, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.472, \"ph\": \"X\", \"dur\": 0.40585163836243887, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.35, \"ph\": \"X\", \"dur\": 0.5550214476683629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.231, \"ph\": \"X\", \"dur\": 2.3298428409988805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705978.114, \"ph\": \"X\", \"dur\": 2.4827543679295356, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.996, \"ph\": \"X\", \"dur\": 2.6299285945022697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705977.878, \"ph\": \"X\", \"dur\": 2.7803456430164375, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.681, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.549, \"ph\": \"X\", \"dur\": 0.26067299452289405, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.425, \"ph\": \"X\", \"dur\": 0.4093439081455207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.299, \"ph\": \"X\", \"dur\": 0.5652488091759597, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.17, \"ph\": \"X\", \"dur\": 0.727639354089265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705981.041, \"ph\": \"X\", \"dur\": 0.8882837641110293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705980.895, \"ph\": \"X\", \"dur\": 1.0648928359983105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705980.772, \"ph\": \"X\", \"dur\": 1.2205482891871011, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.96, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.836, \"ph\": \"X\", \"dur\": 0.23423152330813157, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.715, \"ph\": \"X\", \"dur\": 0.3841496761390017, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.596, \"ph\": \"X\", \"dur\": 0.5353150681781155, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.475, \"ph\": \"X\", \"dur\": 0.6887254907920674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.347, \"ph\": \"X\", \"dur\": 0.8478732137639395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.21, \"ph\": \"X\", \"dur\": 1.0162505068768137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705982.086, \"ph\": \"X\", \"dur\": 1.1716565122239553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705984.229, \"ph\": \"X\", \"dur\": 0.08581005752715364, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705984.1, \"ph\": \"X\", \"dur\": 0.2452072283406745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.976, \"ph\": \"X\", \"dur\": 0.4013615772127622, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.85, \"ph\": \"X\", \"dur\": 0.560010404501337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.728, \"ph\": \"X\", \"dur\": 0.7139197227985864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.601, \"ph\": \"X\", \"dur\": 0.872568550087161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.471, \"ph\": \"X\", \"dur\": 1.0352085428421152, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705983.35, \"ph\": \"X\", \"dur\": 1.1868728305645262, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.517, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.38, \"ph\": \"X\", \"dur\": 0.23448097114978028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.256, \"ph\": \"X\", \"dur\": 0.3898869764969219, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.134, \"ph\": \"X\", \"dur\": 0.5437962947941714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.009, \"ph\": \"X\", \"dur\": 0.7009484350328538, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705984.882, \"ph\": \"X\", \"dur\": 0.8595972623214286, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705984.761, \"ph\": \"X\", \"dur\": 1.0120098935687858, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705984.629, \"ph\": \"X\", \"dur\": 1.1771443647402269, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.777, \"ph\": \"X\", \"dur\": 0.10526698917575243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.658, \"ph\": \"X\", \"dur\": 0.258178516106407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.531, \"ph\": \"X\", \"dur\": 0.418324030444874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.402, \"ph\": \"X\", \"dur\": 0.5777212012583948, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.278, \"ph\": \"X\", \"dur\": 0.7316305195556443, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.158, \"ph\": \"X\", \"dur\": 0.88429259864465, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705986.032, \"ph\": \"X\", \"dur\": 1.0406963953583865, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705985.9, \"ph\": \"X\", \"dur\": 1.203835283796638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705988.094, \"ph\": \"X\", \"dur\": 0.09005067083518158, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.966, \"ph\": \"X\", \"dur\": 0.2486994981237563, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.844, \"ph\": \"X\", \"dur\": 0.4018604728960596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.719, \"ph\": \"X\", \"dur\": 1.5929739167686137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.591, \"ph\": \"X\", \"dur\": 1.7446382044910247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.47, \"ph\": \"X\", \"dur\": 1.899545314154869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.34, \"ph\": \"X\", \"dur\": 2.062933650434769, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705987.215, \"ph\": \"X\", \"dur\": 2.219586894990154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.317, \"ph\": \"X\", \"dur\": 0.11649214204994404, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.175, \"ph\": \"X\", \"dur\": 0.29010783983744093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.052, \"ph\": \"X\", \"dur\": 0.4425204710847981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705989.933, \"ph\": \"X\", \"dur\": 0.5936858631239118, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705989.81, \"ph\": \"X\", \"dur\": 0.7490918684710535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705989.687, \"ph\": \"X\", \"dur\": 0.9047473216598437, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705989.541, \"ph\": \"X\", \"dur\": 1.0826036327553685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705991.593, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705991.474, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705991.351, \"ph\": \"X\", \"dur\": 0.4018604728960596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705991.233, \"ph\": \"X\", \"dur\": 0.5497830429937401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705991.1, \"ph\": \"X\", \"dur\": 0.7176614404233169, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.976, \"ph\": \"X\", \"dur\": 0.8705729673539714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.854, \"ph\": \"X\", \"dur\": 1.0262284205427619, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705990.715, \"ph\": \"X\", \"dur\": 1.1948551614972847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.85, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.728, \"ph\": \"X\", \"dur\": 0.23772379309121341, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.609, \"ph\": \"X\", \"dur\": 0.39063532002186796, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.49, \"ph\": \"X\", \"dur\": 0.5510302822019837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.372, \"ph\": \"X\", \"dur\": 0.6989528522996642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.246, \"ph\": \"X\", \"dur\": 0.8566038882216442, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.131, \"ph\": \"X\", \"dur\": 1.0040275626360273, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705992.002, \"ph\": \"X\", \"dur\": 1.1621774942413046, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705994.285, \"ph\": \"X\", \"dur\": 0.15615434887208773, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705994.168, \"ph\": \"X\", \"dur\": 0.32977004665958465, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705994.039, \"ph\": \"X\", \"dur\": 0.5066285663885146, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705993.9, \"ph\": \"X\", \"dur\": 0.6882265951087699, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705993.788, \"ph\": \"X\", \"dur\": 0.8329063432650174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705993.659, \"ph\": \"X\", \"dur\": 0.9885617964538077, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705993.522, \"ph\": \"X\", \"dur\": 1.154195163308546, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705993.338, \"ph\": \"X\", \"dur\": 1.3667247243932406, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705995.597, \"ph\": \"X\", \"dur\": 0.10102637586772448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705995.48, \"ph\": \"X\", \"dur\": 0.2462050197072693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705995.325, \"ph\": \"X\", \"dur\": 0.4609796113668021, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705995.214, \"ph\": \"X\", \"dur\": 0.6098999728310774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705995.094, \"ph\": \"X\", \"dur\": 0.7623126040784347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705994.971, \"ph\": \"X\", \"dur\": 0.9154735788507379, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705994.834, \"ph\": \"X\", \"dur\": 1.083102528438666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.906, \"ph\": \"X\", \"dur\": 0.08855398378528936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.794, \"ph\": \"X\", \"dur\": 0.24046771934934916, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.645, \"ph\": \"X\", \"dur\": 0.4198207174947662, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.534, \"ph\": \"X\", \"dur\": 1.4505391991872045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.42, \"ph\": \"X\", \"dur\": 1.5874860642523423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.3, \"ph\": \"X\", \"dur\": 1.7396492476580507, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.182, \"ph\": \"X\", \"dur\": 1.888569609122326, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705996.009, \"ph\": \"X\", \"dur\": 2.09162015222437, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.056, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.942, \"ph\": \"X\", \"dur\": 0.2354787625163751, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.822, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.699, \"ph\": \"X\", \"dur\": 0.5325711419199797, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.584, \"ph\": \"X\", \"dur\": 0.6762530987096322, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.456, \"ph\": \"X\", \"dur\": 0.8361491652064506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.342, \"ph\": \"X\", \"dur\": 0.9798311219961031, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705998.194, \"ph\": \"X\", \"dur\": 1.1581863287749254, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.312, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.191, \"ph\": \"X\", \"dur\": 0.22375471395888608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.071, \"ph\": \"X\", \"dur\": 0.37367286678975625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.906, \"ph\": \"X\", \"dur\": 0.5679927354340953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.793, \"ph\": \"X\", \"dur\": 0.7079329745990175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.666, \"ph\": \"X\", \"dur\": 0.8630895321045104, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.545, \"ph\": \"X\", \"dur\": 1.016001059035165, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705999.43, \"ph\": \"X\", \"dur\": 1.157687433091628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.513, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.366, \"ph\": \"X\", \"dur\": 0.2571807247398122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.248, \"ph\": \"X\", \"dur\": 0.4028582642626544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.13, \"ph\": \"X\", \"dur\": 0.5497830429937401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.021, \"ph\": \"X\", \"dur\": 0.6877276994254725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.901, \"ph\": \"X\", \"dur\": 0.8386436436229376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.785, \"ph\": \"X\", \"dur\": 0.9823256004125901, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706000.67, \"ph\": \"X\", \"dur\": 1.1270053485688374, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.69, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.581, \"ph\": \"X\", \"dur\": 0.22375471395888608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.46, \"ph\": \"X\", \"dur\": 0.37566844952294587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.341, \"ph\": \"X\", \"dur\": 0.523092123937329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.221, \"ph\": \"X\", \"dur\": 0.6702663505100633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706002.111, \"ph\": \"X\", \"dur\": 0.8102065896749855, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.992, \"ph\": \"X\", \"dur\": 0.9571313684060713, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706001.877, \"ph\": \"X\", \"dur\": 1.102310012245616, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.896, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.745, \"ph\": \"X\", \"dur\": 0.26092244236454276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.633, \"ph\": \"X\", \"dur\": 0.40335715994595184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.514, \"ph\": \"X\", \"dur\": 0.5517786257269298, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.396, \"ph\": \"X\", \"dur\": 0.6974561652497719, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.287, \"ph\": \"X\", \"dur\": 0.8383941957812889, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.175, \"ph\": \"X\", \"dur\": 0.9793322263128057, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706003.063, \"ph\": \"X\", \"dur\": 1.1197713611610252, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706005.124, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.985, \"ph\": \"X\", \"dur\": 0.25518514200662257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.876, \"ph\": \"X\", \"dur\": 1.3422788359116677, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.756, \"ph\": \"X\", \"dur\": 1.5071638592414602, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.638, \"ph\": \"X\", \"dur\": 1.6500974725061666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.529, \"ph\": \"X\", \"dur\": 1.7910355030376834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.411, \"ph\": \"X\", \"dur\": 1.9404547601852562, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706004.269, \"ph\": \"X\", \"dur\": 2.1153176971809966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.258, \"ph\": \"X\", \"dur\": 0.1032714064425628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.142, \"ph\": \"X\", \"dur\": 0.24919839380705372, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.028, \"ph\": \"X\", \"dur\": 0.39412758980494983, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706006.892, \"ph\": \"X\", \"dur\": 0.5597609566596883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706006.758, \"ph\": \"X\", \"dur\": 0.722650397256291, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706006.637, \"ph\": \"X\", \"dur\": 0.8720696544038636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706006.476, \"ph\": \"X\", \"dur\": 1.0618994618985262, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.477, \"ph\": \"X\", \"dur\": 0.09429128414320952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.348, \"ph\": \"X\", \"dur\": 0.2599246509979479, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.235, \"ph\": \"X\", \"dur\": 0.40535274267914145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.122, \"ph\": \"X\", \"dur\": 0.550780834360335, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.008, \"ph\": \"X\", \"dur\": 0.6922177605751492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.859, \"ph\": \"X\", \"dur\": 0.8728179979288098, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.745, \"ph\": \"X\", \"dur\": 1.0167494025601111, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706007.62, \"ph\": \"X\", \"dur\": 1.1701598251740633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.587, \"ph\": \"X\", \"dur\": 0.07707938306944905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.477, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.354, \"ph\": \"X\", \"dur\": 0.3686839099567822, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.235, \"ph\": \"X\", \"dur\": 0.5166064800544627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.117, \"ph\": \"X\", \"dur\": 0.6650279458354407, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.993, \"ph\": \"X\", \"dur\": 0.8166922335578517, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706008.871, \"ph\": \"X\", \"dur\": 0.9696037604885064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.771, \"ph\": \"X\", \"dur\": 0.09304404493496601, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.625, \"ph\": \"X\", \"dur\": 0.27139925171378826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.506, \"ph\": \"X\", \"dur\": 0.418324030444874, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.387, \"ph\": \"X\", \"dur\": 0.5664960483842032, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.276, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.168, \"ph\": \"X\", \"dur\": 0.8418864655643707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706010.054, \"ph\": \"X\", \"dur\": 0.9848200788290772, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706009.926, \"ph\": \"X\", \"dur\": 1.13997663633457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.968, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.834, \"ph\": \"X\", \"dur\": 0.2571807247398122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.717, \"ph\": \"X\", \"dur\": 0.4018604728960596, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.599, \"ph\": \"X\", \"dur\": 0.5477874602605506, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.481, \"ph\": \"X\", \"dur\": 0.6947122389916363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.37, \"ph\": \"X\", \"dur\": 0.8336546867899636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.262, \"ph\": \"X\", \"dur\": 0.9696037604885064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706011.152, \"ph\": \"X\", \"dur\": 1.1100428953367258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706013.194, \"ph\": \"X\", \"dur\": 0.07807717443604387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706013.072, \"ph\": \"X\", \"dur\": 0.23173704489164457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.938, \"ph\": \"X\", \"dur\": 1.2639522136339751, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.825, \"ph\": \"X\", \"dur\": 1.426093310705632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.706, \"ph\": \"X\", \"dur\": 1.5730180894367174, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.591, \"ph\": \"X\", \"dur\": 1.7189450768012084, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.461, \"ph\": \"X\", \"dur\": 1.8800883825062702, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706012.347, \"ph\": \"X\", \"dur\": 2.023520891454274, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.335, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.22, \"ph\": \"X\", \"dur\": 0.22550084885042698, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.102, \"ph\": \"X\", \"dur\": 0.3746706581563511, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706014.984, \"ph\": \"X\", \"dur\": 0.523092123937329, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706014.862, \"ph\": \"X\", \"dur\": 0.6752553073430374, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706014.731, \"ph\": \"X\", \"dur\": 0.8358997173648018, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706014.596, \"ph\": \"X\", \"dur\": 1.0010341885362428, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706014.458, \"ph\": \"X\", \"dur\": 1.1711576165406579, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.555, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.428, \"ph\": \"X\", \"dur\": 0.22799532726691402, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.307, \"ph\": \"X\", \"dur\": 0.37417176247305367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.187, \"ph\": \"X\", \"dur\": 0.5260854980371135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.073, \"ph\": \"X\", \"dur\": 0.6695180069851173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.964, \"ph\": \"X\", \"dur\": 0.8074626634168498, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.85, \"ph\": \"X\", \"dur\": 0.9486501417900154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706015.713, \"ph\": \"X\", \"dur\": 1.1122879259115641, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.804, \"ph\": \"X\", \"dur\": 0.07109263486988018, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.685, \"ph\": \"X\", \"dur\": 0.22400416180053478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.561, \"ph\": \"X\", \"dur\": 0.37716513657283807, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.435, \"ph\": \"X\", \"dur\": 0.5325711419199797, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.29, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.149, \"ph\": \"X\", \"dur\": 0.8755619241869455, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706017.038, \"ph\": \"X\", \"dur\": 1.016001059035165, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706016.907, \"ph\": \"X\", \"dur\": 1.1746498863237398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.998, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.888, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.773, \"ph\": \"X\", \"dur\": 0.36294660959886205, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.656, \"ph\": \"X\", \"dur\": 0.5073769099134607, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.533, \"ph\": \"X\", \"dur\": 0.6595400933191693, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.4, \"ph\": \"X\", \"dur\": 0.8211822947075283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.281, \"ph\": \"X\", \"dur\": 0.9686059691219115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706018.163, \"ph\": \"X\", \"dur\": 1.1147824043280512, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.133, \"ph\": \"X\", \"dur\": 0.0725893219197724, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.016, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.89, \"ph\": \"X\", \"dur\": 0.3669377750652413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.767, \"ph\": \"X\", \"dur\": 0.5146108973212731, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.666, \"ph\": \"X\", \"dur\": 0.6408315051955166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.563, \"ph\": \"X\", \"dur\": 0.7697960393278956, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.459, \"ph\": \"X\", \"dur\": 0.8982616777769774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706019.357, \"ph\": \"X\", \"dur\": 1.025230629176167, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706021.231, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706021.131, \"ph\": \"X\", \"dur\": 1.085597006855153, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706021.02, \"ph\": \"X\", \"dur\": 1.2320228899029413, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.901, \"ph\": \"X\", \"dur\": 1.3767026380591887, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.793, \"ph\": \"X\", \"dur\": 1.5121528160744342, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.684, \"ph\": \"X\", \"dur\": 1.6500974725061666, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.576, \"ph\": \"X\", \"dur\": 1.787044337571304, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706020.461, \"ph\": \"X\", \"dur\": 1.930476846519308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.249, \"ph\": \"X\", \"dur\": 0.11075484169202388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.108, \"ph\": \"X\", \"dur\": 0.29010783983744093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.0, \"ph\": \"X\", \"dur\": 0.42456022648609154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706022.878, \"ph\": \"X\", \"dur\": 0.5769728577334486, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706022.774, \"ph\": \"X\", \"dur\": 0.7084318702823149, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706022.641, \"ph\": \"X\", \"dur\": 0.8690762803040792, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706022.486, \"ph\": \"X\", \"dur\": 1.0626478054234725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.281, \"ph\": \"X\", \"dur\": 0.08107054853582829, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.182, \"ph\": \"X\", \"dur\": 0.20779005209336912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.075, \"ph\": \"X\", \"dur\": 0.3407457516921275, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.975, \"ph\": \"X\", \"dur\": 0.46671691172472224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.868, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.757, \"ph\": \"X\", \"dur\": 0.7376172677552131, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706023.64, \"ph\": \"X\", \"dur\": 0.8795530896533247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.22, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.113, \"ph\": \"X\", \"dur\": 0.19531766001093398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.014, \"ph\": \"X\", \"dur\": 0.32029102867693393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.917, \"ph\": \"X\", \"dur\": 0.44551384518458254, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.809, \"ph\": \"X\", \"dur\": 0.5819618145664227, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.7, \"ph\": \"X\", \"dur\": 0.7169130968983708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706024.599, \"ph\": \"X\", \"dur\": 0.8463765267140474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.239, \"ph\": \"X\", \"dur\": 0.08730674457704585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.139, \"ph\": \"X\", \"dur\": 0.22300637043393998, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.032, \"ph\": \"X\", \"dur\": 0.3589554441324828, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.923, \"ph\": \"X\", \"dur\": 0.49340783078113337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.823, \"ph\": \"X\", \"dur\": 0.6178823037638359, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.724, \"ph\": \"X\", \"dur\": 0.7441029116380794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.622, \"ph\": \"X\", \"dur\": 0.8690762803040792, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706025.524, \"ph\": \"X\", \"dur\": 0.9925529619201869, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.323, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.221, \"ph\": \"X\", \"dur\": 0.1958165556942314, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.116, \"ph\": \"X\", \"dur\": 0.3247810898266106, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.014, \"ph\": \"X\", \"dur\": 0.4517500412258001, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.904, \"ph\": \"X\", \"dur\": 0.5896946976575325, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.803, \"ph\": \"X\", \"dur\": 0.7144186184818837, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.695, \"ph\": \"X\", \"dur\": 0.8473743180806422, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706026.594, \"ph\": \"X\", \"dur\": 0.9745927173214803, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706028.273, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706028.173, \"ph\": \"X\", \"dur\": 0.19182539022785217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706028.065, \"ph\": \"X\", \"dur\": 1.207826449263017, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.96, \"ph\": \"X\", \"dur\": 1.3347954006622067, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.851, \"ph\": \"X\", \"dur\": 1.46874889162756, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.751, \"ph\": \"X\", \"dur\": 1.5947200516601547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706027.647, \"ph\": \"X\", \"dur\": 1.7246823771591286, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.204, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.084, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706029.963, \"ph\": \"X\", \"dur\": 0.34648305205004765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706029.845, \"ph\": \"X\", \"dur\": 0.490414456681349, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706029.735, \"ph\": \"X\", \"dur\": 0.627860217429784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706029.611, \"ph\": \"X\", \"dur\": 0.7775289224190054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706029.466, \"ph\": \"X\", \"dur\": 0.9501468288399075, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.178, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.075, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.969, \"ph\": \"X\", \"dur\": 0.31230869774417547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.867, \"ph\": \"X\", \"dur\": 0.44002599266831105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.765, \"ph\": \"X\", \"dur\": 0.5684916311173928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.635, \"ph\": \"X\", \"dur\": 0.7256437713560754, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706030.493, \"ph\": \"X\", \"dur\": 0.8912771382108138, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.237, \"ph\": \"X\", \"dur\": 0.06859815645339318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.104, \"ph\": \"X\", \"dur\": 0.234730418991429, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.0, \"ph\": \"X\", \"dur\": 0.3636949531238082, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.894, \"ph\": \"X\", \"dur\": 0.4951539656726743, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.793, \"ph\": \"X\", \"dur\": 0.6233701562801074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.689, \"ph\": \"X\", \"dur\": 0.7543302731456761, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.578, \"ph\": \"X\", \"dur\": 0.8902793468442189, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706031.462, \"ph\": \"X\", \"dur\": 1.0299701381674922, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.354, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.23, \"ph\": \"X\", \"dur\": 0.2274964315836166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.126, \"ph\": \"X\", \"dur\": 0.35596207003269836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.024, \"ph\": \"X\", \"dur\": 0.48293102143188793, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.919, \"ph\": \"X\", \"dur\": 0.6128933469308618, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.814, \"ph\": \"X\", \"dur\": 0.7438534637964307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.703, \"ph\": \"X\", \"dur\": 0.8798025374949734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706032.566, \"ph\": \"X\", \"dur\": 1.0434403216165222, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.447, \"ph\": \"X\", \"dur\": 0.06360919962041912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.346, \"ph\": \"X\", \"dur\": 0.197812138427421, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.241, \"ph\": \"X\", \"dur\": 0.3479797390999399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.14, \"ph\": \"X\", \"dur\": 0.4824321257485905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.033, \"ph\": \"X\", \"dur\": 0.6138911382974567, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.91, \"ph\": \"X\", \"dur\": 0.7643081868116243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.786, \"ph\": \"X\", \"dur\": 0.9139768918008457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706033.683, \"ph\": \"X\", \"dur\": 1.0429414259332248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.593, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.482, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.378, \"ph\": \"X\", \"dur\": 0.33625569054245086, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.277, \"ph\": \"X\", \"dur\": 0.4622268505750456, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.177, \"ph\": \"X\", \"dur\": 1.4677511002609651, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706035.062, \"ph\": \"X\", \"dur\": 1.612181400575564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.945, \"ph\": \"X\", \"dur\": 1.7546161181569728, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706034.816, \"ph\": \"X\", \"dur\": 1.9142627368121425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.597, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.488, \"ph\": \"X\", \"dur\": 0.24121606287429526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.387, \"ph\": \"X\", \"dur\": 0.37217617973986405, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.267, \"ph\": \"X\", \"dur\": 0.5210965412041394, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.159, \"ph\": \"X\", \"dur\": 0.6560478235360875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.054, \"ph\": \"X\", \"dur\": 0.7890035231348458, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706036.947, \"ph\": \"X\", \"dur\": 0.9219592227336042, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706036.815, \"ph\": \"X\", \"dur\": 1.0811069457054765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.62, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.512, \"ph\": \"X\", \"dur\": 0.18883201612806774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.407, \"ph\": \"X\", \"dur\": 0.31879434162704173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.305, \"ph\": \"X\", \"dur\": 0.44576329302623124, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.191, \"ph\": \"X\", \"dur\": 0.5847057408245585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.085, \"ph\": \"X\", \"dur\": 0.715915305531776, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706037.975, \"ph\": \"X\", \"dur\": 0.8518643792303189, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.67, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.567, \"ph\": \"X\", \"dur\": 0.21028453050985615, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.467, \"ph\": \"X\", \"dur\": 0.3337612121259638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.358, \"ph\": \"X\", \"dur\": 0.4697102858245067, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.247, \"ph\": \"X\", \"dur\": 0.6046615681564547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.137, \"ph\": \"X\", \"dur\": 0.7391139548051053, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706039.015, \"ph\": \"X\", \"dur\": 0.8847914943279475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706038.904, \"ph\": \"X\", \"dur\": 1.021738359393085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.859, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.758, \"ph\": \"X\", \"dur\": 0.1965648992191775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.657, \"ph\": \"X\", \"dur\": 0.32228661141012355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.553, \"ph\": \"X\", \"dur\": 0.4527478325923949, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.45, \"ph\": \"X\", \"dur\": 0.5804651275165306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.345, \"ph\": \"X\", \"dur\": 0.7114252443820993, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.233, \"ph\": \"X\", \"dur\": 0.8498687964971292, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706040.062, \"ph\": \"X\", \"dur\": 1.0451864565080633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.973, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.835, \"ph\": \"X\", \"dur\": 0.23971937582440306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.73, \"ph\": \"X\", \"dur\": 0.37367286678975625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.626, \"ph\": \"X\", \"dur\": 0.504632983655325, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.523, \"ph\": \"X\", \"dur\": 0.6328491742627581, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.42, \"ph\": \"X\", \"dur\": 0.7613148127118399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.318, \"ph\": \"X\", \"dur\": 0.8897804511609215, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706041.202, \"ph\": \"X\", \"dur\": 1.030219586009141, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.96, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.86, \"ph\": \"X\", \"dur\": 0.17960244598706576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.758, \"ph\": \"X\", \"dur\": 0.30607250170295786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.652, \"ph\": \"X\", \"dur\": 1.3866805517251368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.515, \"ph\": \"X\", \"dur\": 1.5478238574301986, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.411, \"ph\": \"X\", \"dur\": 1.67828507861247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706042.305, \"ph\": \"X\", \"dur\": 1.8122385695778231, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.0, \"ph\": \"X\", \"dur\": 0.06710146940350095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.898, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.792, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.682, \"ph\": \"X\", \"dur\": 0.47070807719110147, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.532, \"ph\": \"X\", \"dur\": 0.6460699098701393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.425, \"ph\": \"X\", \"dur\": 0.7775289224190054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.318, \"ph\": \"X\", \"dur\": 0.9104846220177638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706044.206, \"ph\": \"X\", \"dur\": 1.046932591399604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.079, \"ph\": \"X\", \"dur\": 0.06959594781998799, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.976, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.869, \"ph\": \"X\", \"dur\": 0.3479797390999399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.764, \"ph\": \"X\", \"dur\": 0.4826815735902392, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.657, \"ph\": \"X\", \"dur\": 0.618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.535, \"ph\": \"X\", \"dur\": 0.767800456594706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.434, \"ph\": \"X\", \"dur\": 0.8972638864103826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706045.331, \"ph\": \"X\", \"dur\": 1.0269767640677079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.157, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.051, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.948, \"ph\": \"X\", \"dur\": 0.33026894234288207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.843, \"ph\": \"X\", \"dur\": 0.45973237215855856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.74, \"ph\": \"X\", \"dur\": 0.5911913847074247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.637, \"ph\": \"X\", \"dur\": 0.7194075753148578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.535, \"ph\": \"X\", \"dur\": 0.8463765267140474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706046.435, \"ph\": \"X\", \"dur\": 0.9708509996967498, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.187, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.085, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.981, \"ph\": \"X\", \"dur\": 0.3095647714860397, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.866, \"ph\": \"X\", \"dur\": 0.44950501065096177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.754, \"ph\": \"X\", \"dur\": 0.5864518757160994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.623, \"ph\": \"X\", \"dur\": 0.7431051202714846, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706047.482, \"ph\": \"X\", \"dur\": 0.9092373828095204, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.114, \"ph\": \"X\", \"dur\": 0.06585423019525745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.01, \"ph\": \"X\", \"dur\": 0.1948187643276366, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.908, \"ph\": \"X\", \"dur\": 0.32278550709342096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.807, \"ph\": \"X\", \"dur\": 0.45075224985920526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.701, \"ph\": \"X\", \"dur\": 0.5799662318332331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.595, \"ph\": \"X\", \"dur\": 0.713420827115289, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706048.469, \"ph\": \"X\", \"dur\": 0.8635884277878079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706050.154, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706050.033, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.932, \"ph\": \"X\", \"dur\": 0.34598415636675023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.829, \"ph\": \"X\", \"dur\": 0.47494869049912947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.72, \"ph\": \"X\", \"dur\": 0.6103988685143749, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.615, \"ph\": \"X\", \"dur\": 1.578505941952989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.511, \"ph\": \"X\", \"dur\": 1.7039782063022864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706049.41, \"ph\": \"X\", \"dur\": 1.8331921882763142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.002, \"ph\": \"X\", \"dur\": 0.09728465824299394, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.885, \"ph\": \"X\", \"dur\": 0.2452072283406745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.778, \"ph\": \"X\", \"dur\": 0.37516955383964845, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.674, \"ph\": \"X\", \"dur\": 0.5076263577551094, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.567, \"ph\": \"X\", \"dur\": 0.6400831616705704, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.461, \"ph\": \"X\", \"dur\": 0.7725399655860313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706051.342, \"ph\": \"X\", \"dur\": 0.9152241310090892, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.944, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.839, \"ph\": \"X\", \"dur\": 0.21053397835150486, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.738, \"ph\": \"X\", \"dur\": 0.3404963038504788, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.637, \"ph\": \"X\", \"dur\": 0.46846304661626315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.538, \"ph\": \"X\", \"dur\": 0.5956814458571014, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.437, \"ph\": \"X\", \"dur\": 0.7261426670393728, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706052.335, \"ph\": \"X\", \"dur\": 0.857601679588239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.987, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.881, \"ph\": \"X\", \"dur\": 0.2040483344686386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.779, \"ph\": \"X\", \"dur\": 0.33101728586782814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.677, \"ph\": \"X\", \"dur\": 0.45798623726701765, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.579, \"ph\": \"X\", \"dur\": 0.5804651275165306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.474, \"ph\": \"X\", \"dur\": 0.7124230357486941, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.374, \"ph\": \"X\", \"dur\": 0.8363986130480993, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706053.271, \"ph\": \"X\", \"dur\": 0.9651136993388297, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.048, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.946, \"ph\": \"X\", \"dur\": 0.19531766001093398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.846, \"ph\": \"X\", \"dur\": 0.3200415808352852, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.742, \"ph\": \"X\", \"dur\": 0.4500039063342592, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.641, \"ph\": \"X\", \"dur\": 0.5749772750002591, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.536, \"ph\": \"X\", \"dur\": 0.7156658576901272, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.436, \"ph\": \"X\", \"dur\": 0.8411381220394246, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706054.324, \"ph\": \"X\", \"dur\": 0.9788333306295083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.091, \"ph\": \"X\", \"dur\": 0.059618034154039885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.99, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.888, \"ph\": \"X\", \"dur\": 0.3504742175164269, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.787, \"ph\": \"X\", \"dur\": 0.4794387516488061, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.685, \"ph\": \"X\", \"dur\": 0.60940107714778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.583, \"ph\": \"X\", \"dur\": 0.7396128504884028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.48, \"ph\": \"X\", \"dur\": 0.8810497767032169, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706055.381, \"ph\": \"X\", \"dur\": 1.0060231453692168, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706057.194, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706057.093, \"ph\": \"X\", \"dur\": 0.23173704489164457, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.991, \"ph\": \"X\", \"dur\": 0.3582071006075367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.887, \"ph\": \"X\", \"dur\": 0.49141224804794376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.784, \"ph\": \"X\", \"dur\": 0.6218734692302151, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.684, \"ph\": \"X\", \"dur\": 0.7493413163127022, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.578, \"ph\": \"X\", \"dur\": 1.7573600444151087, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706056.47, \"ph\": \"X\", \"dur\": 1.8903157440138671, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.182, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.073, \"ph\": \"X\", \"dur\": 0.20130440821050286, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706058.964, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706058.847, \"ph\": \"X\", \"dur\": 0.4801870951737522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706058.704, \"ph\": \"X\", \"dur\": 0.6510588667031134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706058.587, \"ph\": \"X\", \"dur\": 0.7944913756511172, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706058.458, \"ph\": \"X\", \"dur\": 0.9613719817140992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.219, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.11, \"ph\": \"X\", \"dur\": 0.18583864202828332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.009, \"ph\": \"X\", \"dur\": 0.31180980206087805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.901, \"ph\": \"X\", \"dur\": 0.4445160538179877, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.767, \"ph\": \"X\", \"dur\": 0.6031648811065624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.658, \"ph\": \"X\", \"dur\": 0.7371183720719157, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706059.519, \"ph\": \"X\", \"dur\": 0.9015044997184105, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.162, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.061, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.944, \"ph\": \"X\", \"dur\": 0.32228661141012355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.815, \"ph\": \"X\", \"dur\": 0.47744316891561644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.709, \"ph\": \"X\", \"dur\": 0.6084032857811852, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.608, \"ph\": \"X\", \"dur\": 0.7341249979721313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706060.501, \"ph\": \"X\", \"dur\": 0.8658334583626461, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.198, \"ph\": \"X\", \"dur\": 0.06435754314536522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.072, \"ph\": \"X\", \"dur\": 0.22275692259229127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.97, \"ph\": \"X\", \"dur\": 0.3492269783081834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.869, \"ph\": \"X\", \"dur\": 0.4766948253906704, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.762, \"ph\": \"X\", \"dur\": 0.6091516293061313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.654, \"ph\": \"X\", \"dur\": 0.7426062245881871, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.546, \"ph\": \"X\", \"dur\": 0.8760608198702429, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706061.444, \"ph\": \"X\", \"dur\": 1.00352866695273, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.307, \"ph\": \"X\", \"dur\": 0.06236196041217561, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.201, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.093, \"ph\": \"X\", \"dur\": 0.33426010780926124, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.972, \"ph\": \"X\", \"dur\": 0.48143433438199573, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.864, \"ph\": \"X\", \"dur\": 0.6143900339807541, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.757, \"ph\": \"X\", \"dur\": 0.7455995986879715, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.648, \"ph\": \"X\", \"dur\": 0.8810497767032169, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706062.534, \"ph\": \"X\", \"dur\": 1.019243880976598, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706064.391, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706064.273, \"ph\": \"X\", \"dur\": 0.20155385605215156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706064.17, \"ph\": \"X\", \"dur\": 0.3287722552929898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706064.066, \"ph\": \"X\", \"dur\": 0.45773678942536894, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.966, \"ph\": \"X\", \"dur\": 0.583458501616315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.861, \"ph\": \"X\", \"dur\": 0.7139197227985864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.754, \"ph\": \"X\", \"dur\": 0.8463765267140474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706063.631, \"ph\": \"X\", \"dur\": 1.8321943969097194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.352, \"ph\": \"X\", \"dur\": 0.06934649997833928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.243, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.126, \"ph\": \"X\", \"dur\": 0.35720930924094185, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.014, \"ph\": \"X\", \"dur\": 0.49714954840586395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706065.901, \"ph\": \"X\", \"dur\": 0.6360919962041912, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706065.77, \"ph\": \"X\", \"dur\": 0.7947408234927659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706065.665, \"ph\": \"X\", \"dur\": 0.9264492838832808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706065.541, \"ph\": \"X\", \"dur\": 1.0761179888725023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.475, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.367, \"ph\": \"X\", \"dur\": 0.19431986864433917, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.249, \"ph\": \"X\", \"dur\": 0.3367545862257483, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.145, \"ph\": \"X\", \"dur\": 0.4662180160414248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.041, \"ph\": \"X\", \"dur\": 0.5946836544905065, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.936, \"ph\": \"X\", \"dur\": 0.7261426670393728, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.829, \"ph\": \"X\", \"dur\": 0.8581005752715364, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706066.724, \"ph\": \"X\", \"dur\": 0.9880629007705103, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.538, \"ph\": \"X\", \"dur\": 0.06610367803690614, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.434, \"ph\": \"X\", \"dur\": 0.20604391720182821, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.311, \"ph\": \"X\", \"dur\": 0.35396648729950875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.211, \"ph\": \"X\", \"dur\": 0.4804365430154009, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.102, \"ph\": \"X\", \"dur\": 0.6133922426141593, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.997, \"ph\": \"X\", \"dur\": 0.7438534637964307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.893, \"ph\": \"X\", \"dur\": 0.8723191022455123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706067.792, \"ph\": \"X\", \"dur\": 0.9987891579614046, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.484, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.38, \"ph\": \"X\", \"dur\": 0.21053397835150486, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.279, \"ph\": \"X\", \"dur\": 0.3350084513342073, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.174, \"ph\": \"X\", \"dur\": 0.46522022467483004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.069, \"ph\": \"X\", \"dur\": 0.595182550173804, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.969, \"ph\": \"X\", \"dur\": 0.7211537102063987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706068.868, \"ph\": \"X\", \"dur\": 0.8491204529721831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.56, \"ph\": \"X\", \"dur\": 0.06136416904558079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.443, \"ph\": \"X\", \"dur\": 0.21252956108469448, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.316, \"ph\": \"X\", \"dur\": 0.3674366707485387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.21, \"ph\": \"X\", \"dur\": 0.495403413514323, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.102, \"ph\": \"X\", \"dur\": 0.6283591131130815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.001, \"ph\": \"X\", \"dur\": 0.7563258558788658, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.897, \"ph\": \"X\", \"dur\": 0.8847914943279475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706069.797, \"ph\": \"X\", \"dur\": 1.0107626543605421, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.563, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.46, \"ph\": \"X\", \"dur\": 0.17960244598706576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.355, \"ph\": \"X\", \"dur\": 0.3110614585359319, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.25, \"ph\": \"X\", \"dur\": 0.4430193667680955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.146, \"ph\": \"X\", \"dur\": 0.5709861095338798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706071.037, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706070.885, \"ph\": \"X\", \"dur\": 0.8832948072780552, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.539, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.422, \"ph\": \"X\", \"dur\": 0.20280109526039508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.302, \"ph\": \"X\", \"dur\": 0.3499753218331295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.18, \"ph\": \"X\", \"dur\": 0.5003923703472971, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.061, \"ph\": \"X\", \"dur\": 0.6468182533950855, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706072.951, \"ph\": \"X\", \"dur\": 0.7825178792519795, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706072.841, \"ph\": \"X\", \"dur\": 0.9194647443171171, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706072.728, \"ph\": \"X\", \"dur\": 1.0589060877987417, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.675, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.567, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.461, \"ph\": \"X\", \"dur\": 0.33426010780926124, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.343, \"ph\": \"X\", \"dur\": 0.4766948253906704, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.234, \"ph\": \"X\", \"dur\": 0.6116461077226184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.115, \"ph\": \"X\", \"dur\": 0.755328064512271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706074.005, \"ph\": \"X\", \"dur\": 0.8907782425275164, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706073.901, \"ph\": \"X\", \"dur\": 1.019243880976598, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.676, \"ph\": \"X\", \"dur\": 0.07533324817790814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.553, \"ph\": \"X\", \"dur\": 0.22450305748383217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.436, \"ph\": \"X\", \"dur\": 0.36494219233205166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.327, \"ph\": \"X\", \"dur\": 0.49839678761410744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.227, \"ph\": \"X\", \"dur\": 0.6238690519634048, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.115, \"ph\": \"X\", \"dur\": 0.7608159170285425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706075.004, \"ph\": \"X\", \"dur\": 0.8997583648268697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.629, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.523, \"ph\": \"X\", \"dur\": 0.20729115641007173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.421, \"ph\": \"X\", \"dur\": 0.33725348190904564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.318, \"ph\": \"X\", \"dur\": 0.4647213289915326, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.218, \"ph\": \"X\", \"dur\": 0.5914408325490734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.115, \"ph\": \"X\", \"dur\": 0.7199064709981552, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.011, \"ph\": \"X\", \"dur\": 0.8488710051305344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.586, \"ph\": \"X\", \"dur\": 0.09977913665948097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.485, \"ph\": \"X\", \"dur\": 0.2257502966920757, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.382, \"ph\": \"X\", \"dur\": 0.3529686959329139, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.281, \"ph\": \"X\", \"dur\": 0.4791893038071574, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.175, \"ph\": \"X\", \"dur\": 0.611147212039321, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.059, \"ph\": \"X\", \"dur\": 0.7525841382541353, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706076.956, \"ph\": \"X\", \"dur\": 0.8815486723865144, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.647, \"ph\": \"X\", \"dur\": 0.06335975177877042, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.545, \"ph\": \"X\", \"dur\": 0.19905937763566453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.442, \"ph\": \"X\", \"dur\": 0.3267766725598002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.338, \"ph\": \"X\", \"dur\": 0.4554917588505306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.239, \"ph\": \"X\", \"dur\": 0.5804651275165306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.138, \"ph\": \"X\", \"dur\": 0.7054384961825304, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.035, \"ph\": \"X\", \"dur\": 0.8344030303149096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706077.927, \"ph\": \"X\", \"dur\": 0.9678576255969655, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.6, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.5, \"ph\": \"X\", \"dur\": 1.190365100347608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.4, \"ph\": \"X\", \"dur\": 1.3140912298053644, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.294, \"ph\": \"X\", \"dur\": 1.4575237387533682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.189, \"ph\": \"X\", \"dur\": 1.6061946523759951, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706079.09, \"ph\": \"X\", \"dur\": 1.7281746469422106, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706078.981, \"ph\": \"X\", \"dur\": 1.8666181990572401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.766, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.654, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.547, \"ph\": \"X\", \"dur\": 0.35346759161621133, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.437, \"ph\": \"X\", \"dur\": 0.4924100394145386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.33, \"ph\": \"X\", \"dur\": 0.6293569044796763, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.201, \"ph\": \"X\", \"dur\": 0.7865090447183587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706081.092, \"ph\": \"X\", \"dur\": 0.9239548054667938, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706080.954, \"ph\": \"X\", \"dur\": 1.0895881723215324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.941, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.814, \"ph\": \"X\", \"dur\": 0.24071716719099787, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.699, \"ph\": \"X\", \"dur\": 0.38564636318889395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.582, \"ph\": \"X\", \"dur\": 0.5290788721368979, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.469, \"ph\": \"X\", \"dur\": 0.6695180069851173, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.357, \"ph\": \"X\", \"dur\": 0.8097076939916881, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.24, \"ph\": \"X\", \"dur\": 0.9561335770394764, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706082.132, \"ph\": \"X\", \"dur\": 1.0895881723215324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.966, \"ph\": \"X\", \"dur\": 0.07333766544471851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.859, \"ph\": \"X\", \"dur\": 0.21178121755974838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.746, \"ph\": \"X\", \"dur\": 0.3504742175164269, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.638, \"ph\": \"X\", \"dur\": 0.488668321789808, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.528, \"ph\": \"X\", \"dur\": 0.6258646346965944, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.418, \"ph\": \"X\", \"dur\": 0.7635598432866781, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706083.312, \"ph\": \"X\", \"dur\": 0.8982616777769774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.074, \"ph\": \"X\", \"dur\": 0.06760036508679836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.966, \"ph\": \"X\", \"dur\": 0.21203066540139706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.853, \"ph\": \"X\", \"dur\": 0.3549642786661035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.739, \"ph\": \"X\", \"dur\": 0.49690010056421524, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.632, \"ph\": \"X\", \"dur\": 0.6415798487204627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.526, \"ph\": \"X\", \"dur\": 0.7740366526359236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.41, \"ph\": \"X\", \"dur\": 0.9174691615839276, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706084.301, \"ph\": \"X\", \"dur\": 1.0549149223323624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.103, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.987, \"ph\": \"X\", \"dur\": 0.22150968338404775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.879, \"ph\": \"X\", \"dur\": 0.35346759161621133, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.772, \"ph\": \"X\", \"dur\": 0.490414456681349, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.657, \"ph\": \"X\", \"dur\": 0.6338469656293529, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.55, \"ph\": \"X\", \"dur\": 0.7702949350111931, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706085.442, \"ph\": \"X\", \"dur\": 0.9042484259765463, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706087.229, \"ph\": \"X\", \"dur\": 0.05936858631239118, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706087.122, \"ph\": \"X\", \"dur\": 0.19880992979401582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706087.014, \"ph\": \"X\", \"dur\": 0.33126673370947685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.903, \"ph\": \"X\", \"dur\": 1.4303339240136597, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.789, \"ph\": \"X\", \"dur\": 1.5695258196536357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.673, \"ph\": \"X\", \"dur\": 1.7124594329183422, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.545, \"ph\": \"X\", \"dur\": 1.8656204076906453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706086.435, \"ph\": \"X\", \"dur\": 2.0055606468555673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.315, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.203, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.081, \"ph\": \"X\", \"dur\": 0.357957652765888, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706088.963, \"ph\": \"X\", \"dur\": 0.5051318793386224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706088.826, \"ph\": \"X\", \"dur\": 0.6702663505100633, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706088.709, \"ph\": \"X\", \"dur\": 0.8161933378745544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706088.546, \"ph\": \"X\", \"dur\": 1.0080187281024064, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.392, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.292, \"ph\": \"X\", \"dur\": 0.20853839561831525, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.183, \"ph\": \"X\", \"dur\": 0.35446538298280617, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.067, \"ph\": \"X\", \"dur\": 0.4993945789807023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.962, \"ph\": \"X\", \"dur\": 0.6313524872128659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.863, \"ph\": \"X\", \"dur\": 0.7588203342953528, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.756, \"ph\": \"X\", \"dur\": 0.8910276903691651, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706089.643, \"ph\": \"X\", \"dur\": 1.0317162730590332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.526, \"ph\": \"X\", \"dur\": 0.06036637767898599, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.408, \"ph\": \"X\", \"dur\": 0.21103287403480225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.304, \"ph\": \"X\", \"dur\": 0.3424918865836684, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.204, \"ph\": \"X\", \"dur\": 0.4662180160414248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.099, \"ph\": \"X\", \"dur\": 0.5966792372236962, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.986, \"ph\": \"X\", \"dur\": 0.7376172677552131, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.866, \"ph\": \"X\", \"dur\": 0.8827959115947579, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706090.754, \"ph\": \"X\", \"dur\": 1.0207405680264903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.645, \"ph\": \"X\", \"dur\": 0.06685202156185226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.526, \"ph\": \"X\", \"dur\": 0.21851630928426333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.424, \"ph\": \"X\", \"dur\": 0.34473691715850674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.32, \"ph\": \"X\", \"dur\": 0.47469924265748076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.216, \"ph\": \"X\", \"dur\": 0.6041626724731572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.089, \"ph\": \"X\", \"dur\": 0.7568247515621632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.983, \"ph\": \"X\", \"dur\": 0.8882837641110293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706091.883, \"ph\": \"X\", \"dur\": 1.0155021633518675, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.659, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.508, \"ph\": \"X\", \"dur\": 0.23248538841659067, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.406, \"ph\": \"X\", \"dur\": 0.36144992254896985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.299, \"ph\": \"X\", \"dur\": 0.4919111437312412, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.197, \"ph\": \"X\", \"dur\": 0.6208756778636203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.093, \"ph\": \"X\", \"dur\": 0.7513368990458917, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706092.977, \"ph\": \"X\", \"dur\": 0.8912771382108138, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.663, \"ph\": \"X\", \"dur\": 0.07308821760306981, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.556, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.455, \"ph\": \"X\", \"dur\": 0.34348967795026325, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.354, \"ph\": \"X\", \"dur\": 1.900293657679815, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.253, \"ph\": \"X\", \"dur\": 2.022523100087679, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.153, \"ph\": \"X\", \"dur\": 2.151487634220058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706094.052, \"ph\": \"X\", \"dur\": 2.2821983032439785, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706093.949, \"ph\": \"X\", \"dur\": 2.4258802600336313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.333, \"ph\": \"X\", \"dur\": 0.07209042623647499, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.225, \"ph\": \"X\", \"dur\": 0.21203066540139706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.118, \"ph\": \"X\", \"dur\": 0.34598415636675023, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706096.973, \"ph\": \"X\", \"dur\": 0.5156086886878679, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706096.839, \"ph\": \"X\", \"dur\": 0.6752553073430374, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706096.723, \"ph\": \"X\", \"dur\": 0.8186878162910414, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706096.615, \"ph\": \"X\", \"dur\": 0.9526413072563946, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706096.506, \"ph\": \"X\", \"dur\": 1.089089276638235, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.333, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.232, \"ph\": \"X\", \"dur\": 0.17885410246211964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.123, \"ph\": \"X\", \"dur\": 0.3158009675272573, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.012, \"ph\": \"X\", \"dur\": 0.4522489369090975, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.908, \"ph\": \"X\", \"dur\": 0.5832090537746663, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.785, \"ph\": \"X\", \"dur\": 0.732628310922239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706097.676, \"ph\": \"X\", \"dur\": 0.8665818018875923, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.295, \"ph\": \"X\", \"dur\": 0.06410809530371653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.183, \"ph\": \"X\", \"dur\": 0.20105496036885415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.078, \"ph\": \"X\", \"dur\": 0.332015077234423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.978, \"ph\": \"X\", \"dur\": 0.45673899805877416, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.872, \"ph\": \"X\", \"dur\": 0.5894452498158839, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.768, \"ph\": \"X\", \"dur\": 0.7189086796315604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706098.625, \"ph\": \"X\", \"dur\": 0.888533211952678, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.314, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.209, \"ph\": \"X\", \"dur\": 0.20280109526039508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.108, \"ph\": \"X\", \"dur\": 0.33076783802617943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.003, \"ph\": \"X\", \"dur\": 0.4607301635251534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.901, \"ph\": \"X\", \"dur\": 0.5894452498158839, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.799, \"ph\": \"X\", \"dur\": 0.7179108882649656, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.698, \"ph\": \"X\", \"dur\": 0.8448798396641551, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706099.596, \"ph\": \"X\", \"dur\": 0.9718487910633447, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.35, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.243, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.143, \"ph\": \"X\", \"dur\": 0.31230869774417547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.035, \"ph\": \"X\", \"dur\": 0.44725998007612344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.931, \"ph\": \"X\", \"dur\": 0.5779706491000435, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.8, \"ph\": \"X\", \"dur\": 0.7351227893387261, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706100.678, \"ph\": \"X\", \"dur\": 0.8817981202281631, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706102.284, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706102.176, \"ph\": \"X\", \"dur\": 0.1838430592950937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706102.071, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.965, \"ph\": \"X\", \"dur\": 0.44701053223447473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.859, \"ph\": \"X\", \"dur\": 0.5799662318332331, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.753, \"ph\": \"X\", \"dur\": 1.5720202980701226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706101.645, \"ph\": \"X\", \"dur\": 1.7047265498272324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.248, \"ph\": \"X\", \"dur\": 0.0718409783948263, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.134, \"ph\": \"X\", \"dur\": 0.22325581827558866, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.026, \"ph\": \"X\", \"dur\": 0.3582071006075367, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706103.911, \"ph\": \"X\", \"dur\": 0.5001429225056484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706103.778, \"ph\": \"X\", \"dur\": 0.6607873325274128, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706103.656, \"ph\": \"X\", \"dur\": 0.8097076939916881, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706103.55, \"ph\": \"X\", \"dur\": 0.9426633935904465, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706103.445, \"ph\": \"X\", \"dur\": 1.0733740626143664, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.376, \"ph\": \"X\", \"dur\": 0.06635312587855485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.269, \"ph\": \"X\", \"dur\": 0.2065428128851256, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.16, \"ph\": \"X\", \"dur\": 0.3404963038504788, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.05, \"ph\": \"X\", \"dur\": 0.47594648186572425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.942, \"ph\": \"X\", \"dur\": 0.6103988685143749, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.838, \"ph\": \"X\", \"dur\": 0.7401117461717002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.716, \"ph\": \"X\", \"dur\": 0.8875354205860833, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706104.608, \"ph\": \"X\", \"dur\": 1.021987807234734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.491, \"ph\": \"X\", \"dur\": 0.06385864746206782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.382, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.281, \"ph\": \"X\", \"dur\": 0.332015077234423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.18, \"ph\": \"X\", \"dur\": 0.45848513295031507, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.073, \"ph\": \"X\", \"dur\": 0.5919397282323708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.953, \"ph\": \"X\", \"dur\": 0.7376172677552131, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.841, \"ph\": \"X\", \"dur\": 0.8770586112368377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706105.732, \"ph\": \"X\", \"dur\": 1.0115109978854884, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.589, \"ph\": \"X\", \"dur\": 0.062112512570526905, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.479, \"ph\": \"X\", \"dur\": 0.2055450215185308, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.362, \"ph\": \"X\", \"dur\": 0.3474808434166425, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.256, \"ph\": \"X\", \"dur\": 0.4799376473321035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.147, \"ph\": \"X\", \"dur\": 0.6143900339807541, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.048, \"ph\": \"X\", \"dur\": 0.7403611940133489, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.946, \"ph\": \"X\", \"dur\": 0.8670806975708897, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706106.833, \"ph\": \"X\", \"dur\": 1.0070209367358116, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.693, \"ph\": \"X\", \"dur\": 0.0618630647288782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.593, \"ph\": \"X\", \"dur\": 0.19382097296104178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.486, \"ph\": \"X\", \"dur\": 0.325279985509908, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.375, \"ph\": \"X\", \"dur\": 0.462725746258343, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.249, \"ph\": \"X\", \"dur\": 0.6146394818224028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.15, \"ph\": \"X\", \"dur\": 0.7386150591218079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706108.043, \"ph\": \"X\", \"dur\": 0.870074071670674, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706107.927, \"ph\": \"X\", \"dur\": 1.0130076849353806, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.679, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.575, \"ph\": \"X\", \"dur\": 0.1828452679284989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.467, \"ph\": \"X\", \"dur\": 0.3167987588938521, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.359, \"ph\": \"X\", \"dur\": 0.44950501065096177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.253, \"ph\": \"X\", \"dur\": 1.430832819696957, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.137, \"ph\": \"X\", \"dur\": 1.5710225067035277, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706109.028, \"ph\": \"X\", \"dur\": 1.7094660588185577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.526, \"ph\": \"X\", \"dur\": 0.06660257372020355, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.41, \"ph\": \"X\", \"dur\": 0.21003508266820745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.307, \"ph\": \"X\", \"dur\": 0.3399974081671814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.203, \"ph\": \"X\", \"dur\": 0.4704586293494528, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.082, \"ph\": \"X\", \"dur\": 0.6183811994471333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706110.96, \"ph\": \"X\", \"dur\": 0.7665532173864625, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706110.834, \"ph\": \"X\", \"dur\": 0.9177186094255763, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.443, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.343, \"ph\": \"X\", \"dur\": 0.17835520677882225, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.244, \"ph\": \"X\", \"dur\": 0.3050747103363631, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.143, \"ph\": \"X\", \"dur\": 0.4310458703689578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.039, \"ph\": \"X\", \"dur\": 0.5605093001846344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.938, \"ph\": \"X\", \"dur\": 0.6879771472671212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706111.833, \"ph\": \"X\", \"dur\": 0.8184383684493927, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.49, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.384, \"ph\": \"X\", \"dur\": 0.2127790089263432, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.267, \"ph\": \"X\", \"dur\": 0.35596207003269836, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.16, \"ph\": \"X\", \"dur\": 0.48791997826486194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.057, \"ph\": \"X\", \"dur\": 0.6173834080805385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.931, \"ph\": \"X\", \"dur\": 0.7682993522780034, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.832, \"ph\": \"X\", \"dur\": 0.8932727209440033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706112.731, \"ph\": \"X\", \"dur\": 1.0204911201848417, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.476, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.373, \"ph\": \"X\", \"dur\": 0.18783422476147293, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.273, \"ph\": \"X\", \"dur\": 0.31230869774417547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.169, \"ph\": \"X\", \"dur\": 0.4422710232431494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.059, \"ph\": \"X\", \"dur\": 0.5782200969416922, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.944, \"ph\": \"X\", \"dur\": 0.7191581274732091, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706113.839, \"ph\": \"X\", \"dur\": 0.8496193486554805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.378, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.278, \"ph\": \"X\", \"dur\": 0.1753618326790378, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.176, \"ph\": \"X\", \"dur\": 0.30282967976152475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.076, \"ph\": \"X\", \"dur\": 0.4290502876357682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.973, \"ph\": \"X\", \"dur\": 0.5582642696097961, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.868, \"ph\": \"X\", \"dur\": 0.6904716256836083, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706114.768, \"ph\": \"X\", \"dur\": 0.8136988594580673, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.288, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.187, \"ph\": \"X\", \"dur\": 0.1766090718872813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.087, \"ph\": \"X\", \"dur\": 0.3015824405532812, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.984, \"ph\": \"X\", \"dur\": 0.430048079002363, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.884, \"ph\": \"X\", \"dur\": 0.5570170304015526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.784, \"ph\": \"X\", \"dur\": 0.6822398469092011, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706115.675, \"ph\": \"X\", \"dur\": 0.818188920607744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706117.196, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706117.086, \"ph\": \"X\", \"dur\": 1.051173204707632, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.985, \"ph\": \"X\", \"dur\": 1.1888684132977156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.881, \"ph\": \"X\", \"dur\": 1.3163362603802027, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.781, \"ph\": \"X\", \"dur\": 1.445300794512582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.68, \"ph\": \"X\", \"dur\": 1.5745147764866096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706116.575, \"ph\": \"X\", \"dur\": 1.7069715804020706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.176, \"ph\": \"X\", \"dur\": 0.0820683399024231, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.059, \"ph\": \"X\", \"dur\": 0.2352293146747264, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.941, \"ph\": \"X\", \"dur\": 0.38065740635591994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.816, \"ph\": \"X\", \"dur\": 0.534816172494818, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.711, \"ph\": \"X\", \"dur\": 0.6637807066271972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.602, \"ph\": \"X\", \"dur\": 0.7977341975925504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.497, \"ph\": \"X\", \"dur\": 0.9294426579830652, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706118.383, \"ph\": \"X\", \"dur\": 1.0691334493063387, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.332, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.213, \"ph\": \"X\", \"dur\": 0.2052955736768821, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.082, \"ph\": \"X\", \"dur\": 0.360452131182375, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.949, \"ph\": \"X\", \"dur\": 0.5210965412041394, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.845, \"ph\": \"X\", \"dur\": 0.6515577623864108, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.739, \"ph\": \"X\", \"dur\": 0.7835156706185743, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.634, \"ph\": \"X\", \"dur\": 0.9134779961175483, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706119.532, \"ph\": \"X\", \"dur\": 1.0406963953583865, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.271, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.17, \"ph\": \"X\", \"dur\": 0.1818474765619041, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.066, \"ph\": \"X\", \"dur\": 0.3095647714860397, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.965, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.86, \"ph\": \"X\", \"dur\": 0.5664960483842032, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.755, \"ph\": \"X\", \"dur\": 0.6952111346749337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706120.655, \"ph\": \"X\", \"dur\": 0.8221800860741232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.228, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.076, \"ph\": \"X\", \"dur\": 0.23622710604132122, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.973, \"ph\": \"X\", \"dur\": 0.36269716175721334, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.872, \"ph\": \"X\", \"dur\": 0.4884188739481593, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.772, \"ph\": \"X\", \"dur\": 0.6138911382974567, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.666, \"ph\": \"X\", \"dur\": 0.7458490465296203, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706121.558, \"ph\": \"X\", \"dur\": 0.8798025374949734, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.088, \"ph\": \"X\", \"dur\": 0.09828244960958875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.961, \"ph\": \"X\", \"dur\": 0.25019618517364856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.862, \"ph\": \"X\", \"dur\": 0.37566844952294587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.76, \"ph\": \"X\", \"dur\": 0.5031362966054328, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.65, \"ph\": \"X\", \"dur\": 0.6375886832540835, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706122.536, \"ph\": \"X\", \"dur\": 0.7790256094688977, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706124.022, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.913, \"ph\": \"X\", \"dur\": 0.1828452679284989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.81, \"ph\": \"X\", \"dur\": 0.3125581455858242, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.708, \"ph\": \"X\", \"dur\": 0.44052488835160847, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.605, \"ph\": \"X\", \"dur\": 1.4138703664648453, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.505, \"ph\": \"X\", \"dur\": 1.543333796280522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706123.394, \"ph\": \"X\", \"dur\": 1.6817773483955518, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.856, \"ph\": \"X\", \"dur\": 0.061613616887229494, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.739, \"ph\": \"X\", \"dur\": 0.21701962223437113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.63, \"ph\": \"X\", \"dur\": 0.3489775304665347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.517, \"ph\": \"X\", \"dur\": 0.49141224804794376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.409, \"ph\": \"X\", \"dur\": 0.6288580087963789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.301, \"ph\": \"X\", \"dur\": 0.7613148127118399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706125.191, \"ph\": \"X\", \"dur\": 0.8967649907270852, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.749, \"ph\": \"X\", \"dur\": 0.09778355392629134, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.648, \"ph\": \"X\", \"dur\": 0.22051189201745294, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.546, \"ph\": \"X\", \"dur\": 0.3492269783081834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.437, \"ph\": \"X\", \"dur\": 0.48168378222364444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.314, \"ph\": \"X\", \"dur\": 0.630354695846271, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706126.185, \"ph\": \"X\", \"dur\": 0.7865090447183587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.679, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.58, \"ph\": \"X\", \"dur\": 0.1746134891540917, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.477, \"ph\": \"X\", \"dur\": 0.30307912760317346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.379, \"ph\": \"X\", \"dur\": 0.4260569135359838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.245, \"ph\": \"X\", \"dur\": 0.5857035321911532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.146, \"ph\": \"X\", \"dur\": 0.7089307659656123, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.046, \"ph\": \"X\", \"dur\": 0.834901925998207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.58, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.478, \"ph\": \"X\", \"dur\": 0.17860465462047093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.377, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.277, \"ph\": \"X\", \"dur\": 0.4330414531021474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.174, \"ph\": \"X\", \"dur\": 0.562504882917824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.076, \"ph\": \"X\", \"dur\": 0.685732116692283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706127.97, \"ph\": \"X\", \"dur\": 0.8166922335578517, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.618, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.519, \"ph\": \"X\", \"dur\": 0.1766090718872813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.418, \"ph\": \"X\", \"dur\": 0.30307912760317346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.32, \"ph\": \"X\", \"dur\": 0.42680525706092987, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.22, \"ph\": \"X\", \"dur\": 0.5522775214102272, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.12, \"ph\": \"X\", \"dur\": 0.6777497857595245, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.019, \"ph\": \"X\", \"dur\": 0.8044692893170653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706128.907, \"ph\": \"X\", \"dur\": 0.9431622892737439, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.568, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.464, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.361, \"ph\": \"X\", \"dur\": 0.3167987588938521, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.257, \"ph\": \"X\", \"dur\": 0.446761084392826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.154, \"ph\": \"X\", \"dur\": 0.5749772750002591, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.053, \"ph\": \"X\", \"dur\": 0.7011978828745025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706129.945, \"ph\": \"X\", \"dur\": 0.8336546867899636, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706131.379, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706131.277, \"ph\": \"X\", \"dur\": 0.21228011324304577, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706131.178, \"ph\": \"X\", \"dur\": 1.1873717262478236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706131.08, \"ph\": \"X\", \"dur\": 1.310349512180634, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.976, \"ph\": \"X\", \"dur\": 1.4405612855212564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706130.867, \"ph\": \"X\", \"dur\": 1.5775081505863942, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.299, \"ph\": \"X\", \"dur\": 0.06909705213669058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.199, \"ph\": \"X\", \"dur\": 0.20305054310204376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.094, \"ph\": \"X\", \"dur\": 0.33550734701750473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706132.986, \"ph\": \"X\", \"dur\": 0.4709575250327502, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706132.869, \"ph\": \"X\", \"dur\": 0.6128933469308618, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706132.759, \"ph\": \"X\", \"dur\": 0.7478446292628099, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706132.652, \"ph\": \"X\", \"dur\": 0.8808003288615682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706132.543, \"ph\": \"X\", \"dur\": 1.0162505068768137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.271, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.17, \"ph\": \"X\", \"dur\": 0.18134858087860667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.065, \"ph\": \"X\", \"dur\": 0.31280759342747283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.96, \"ph\": \"X\", \"dur\": 0.4427699189264468, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.852, \"ph\": \"X\", \"dur\": 0.5767234098917999, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.746, \"ph\": \"X\", \"dur\": 0.7079329745990175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706133.638, \"ph\": \"X\", \"dur\": 0.8413875698810733, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.185, \"ph\": \"X\", \"dur\": 0.06111472120393209, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.079, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.98, \"ph\": \"X\", \"dur\": 0.31355593695241896, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.872, \"ph\": \"X\", \"dur\": 0.4465116365511773, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.761, \"ph\": \"X\", \"dur\": 0.583458501616315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.66, \"ph\": \"X\", \"dur\": 0.709928557332207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706134.555, \"ph\": \"X\", \"dur\": 0.8408886741977759, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.132, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.031, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.897, \"ph\": \"X\", \"dur\": 0.33974796032553267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.788, \"ph\": \"X\", \"dur\": 0.47569703402407554, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.681, \"ph\": \"X\", \"dur\": 0.6086527336228339, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.58, \"ph\": \"X\", \"dur\": 0.7341249979721313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706135.474, \"ph\": \"X\", \"dur\": 0.8650851148377001, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.042, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.938, \"ph\": \"X\", \"dur\": 0.18010134167036315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.818, \"ph\": \"X\", \"dur\": 0.3262777768765028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.713, \"ph\": \"X\", \"dur\": 0.4549928631672332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.614, \"ph\": \"X\", \"dur\": 0.5804651275165306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.513, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706136.415, \"ph\": \"X\", \"dur\": 0.8301624170068816, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706138.007, \"ph\": \"X\", \"dur\": 0.06286085609547301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.892, \"ph\": \"X\", \"dur\": 0.2155229351844789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.759, \"ph\": \"X\", \"dur\": 0.37018059700667444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.659, \"ph\": \"X\", \"dur\": 0.49665065272256653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.552, \"ph\": \"X\", \"dur\": 0.627860217429784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.432, \"ph\": \"X\", \"dur\": 0.7732883091109775, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706137.328, \"ph\": \"X\", \"dur\": 0.9037495302932489, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.856, \"ph\": \"X\", \"dur\": 0.05437962947941712, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.75, \"ph\": \"X\", \"dur\": 0.18833312044477035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.634, \"ph\": \"X\", \"dur\": 0.3267766725598002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.527, \"ph\": \"X\", \"dur\": 0.4612290592084508, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.419, \"ph\": \"X\", \"dur\": 0.5956814458571014, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.3, \"ph\": \"X\", \"dur\": 0.7391139548051053, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706139.162, \"ph\": \"X\", \"dur\": 0.9017539475600592, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.808, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.708, \"ph\": \"X\", \"dur\": 0.18035078951201186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.606, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.496, \"ph\": \"X\", \"dur\": 0.4430193667680955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.374, \"ph\": \"X\", \"dur\": 0.5911913847074247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.265, \"ph\": \"X\", \"dur\": 0.7266415627226702, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706140.156, \"ph\": \"X\", \"dur\": 0.8595972623214286, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.793, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.685, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.541, \"ph\": \"X\", \"dur\": 0.36668832722359257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.434, \"ph\": \"X\", \"dur\": 0.4964012048809178, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.301, \"ph\": \"X\", \"dur\": 0.6545511364861952, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.201, \"ph\": \"X\", \"dur\": 0.7817695357270333, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706141.093, \"ph\": \"X\", \"dur\": 0.913727443959197, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.708, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.589, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.487, \"ph\": \"X\", \"dur\": 0.33176562939277426, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.383, \"ph\": \"X\", \"dur\": 0.4607301635251534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.284, \"ph\": \"X\", \"dur\": 0.5872002192410455, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.183, \"ph\": \"X\", \"dur\": 0.713420827115289, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706142.08, \"ph\": \"X\", \"dur\": 0.8423853612476682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.676, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.571, \"ph\": \"X\", \"dur\": 0.1838430592950937, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.462, \"ph\": \"X\", \"dur\": 0.3192932373103391, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.363, \"ph\": \"X\", \"dur\": 0.4440171581346903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.256, \"ph\": \"X\", \"dur\": 0.5774717534167461, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.149, \"ph\": \"X\", \"dur\": 0.7104274530155045, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.042, \"ph\": \"X\", \"dur\": 0.8438820482975603, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.612, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.507, \"ph\": \"X\", \"dur\": 0.1828452679284989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.407, \"ph\": \"X\", \"dur\": 0.31006366716933714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.308, \"ph\": \"X\", \"dur\": 0.43403924446874226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.209, \"ph\": \"X\", \"dur\": 0.560010404501337, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.091, \"ph\": \"X\", \"dur\": 0.7034429134493408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706143.989, \"ph\": \"X\", \"dur\": 0.8319085518984226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706145.543, \"ph\": \"X\", \"dur\": 0.06061582552063469, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706145.427, \"ph\": \"X\", \"dur\": 0.20080551252720544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706145.326, \"ph\": \"X\", \"dur\": 0.3287722552929898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706145.209, \"ph\": \"X\", \"dur\": 0.4717058685576963, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706145.1, \"ph\": \"X\", \"dur\": 1.4849630013347255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.998, \"ph\": \"X\", \"dur\": 1.608689130792482, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706144.895, \"ph\": \"X\", \"dur\": 1.7381525606081585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.436, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.319, \"ph\": \"X\", \"dur\": 0.19880992979401582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.184, \"ph\": \"X\", \"dur\": 0.3584565484491854, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.075, \"ph\": \"X\", \"dur\": 0.495403413514323, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706146.97, \"ph\": \"X\", \"dur\": 0.627860217429784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706146.863, \"ph\": \"X\", \"dur\": 0.7613148127118399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706146.718, \"ph\": \"X\", \"dur\": 0.932186584241201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.391, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.286, \"ph\": \"X\", \"dur\": 0.1843419549783911, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.184, \"ph\": \"X\", \"dur\": 0.31131090637758063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.08, \"ph\": \"X\", \"dur\": 0.4539950718006384, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.975, \"ph\": \"X\", \"dur\": 0.5794673361499357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.838, \"ph\": \"X\", \"dur\": 0.743604015954782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706147.739, \"ph\": \"X\", \"dur\": 0.8665818018875923, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.3, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.196, \"ph\": \"X\", \"dur\": 0.18259582008685019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.096, \"ph\": \"X\", \"dur\": 0.31006366716933714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.988, \"ph\": \"X\", \"dur\": 0.4440171581346903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.887, \"ph\": \"X\", \"dur\": 0.569988318167285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.785, \"ph\": \"X\", \"dur\": 0.6977056130914207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706148.68, \"ph\": \"X\", \"dur\": 0.8276679385903947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.221, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.114, \"ph\": \"X\", \"dur\": 0.18833312044477035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.011, \"ph\": \"X\", \"dur\": 0.318544893785393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.908, \"ph\": \"X\", \"dur\": 0.44551384518458254, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.803, \"ph\": \"X\", \"dur\": 0.5774717534167461, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.683, \"ph\": \"X\", \"dur\": 0.7219020537313449, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706149.582, \"ph\": \"X\", \"dur\": 0.8488710051305344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.184, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.081, \"ph\": \"X\", \"dur\": 0.18234637224520148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.975, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.866, \"ph\": \"X\", \"dur\": 0.44725998007612344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.73, \"ph\": \"X\", \"dur\": 0.6096505249894287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.622, \"ph\": \"X\", \"dur\": 0.7431051202714846, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706150.506, \"ph\": \"X\", \"dur\": 0.9057451130264385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.177, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.071, \"ph\": \"X\", \"dur\": 0.18334416361179628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.966, \"ph\": \"X\", \"dur\": 0.3155515196856086, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.857, \"ph\": \"X\", \"dur\": 0.4500039063342592, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.721, \"ph\": \"X\", \"dur\": 0.6121450034059157, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.588, \"ph\": \"X\", \"dur\": 0.7722905177443826, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706151.487, \"ph\": \"X\", \"dur\": 0.8997583648268697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706153.108, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.998, \"ph\": \"X\", \"dur\": 0.18683643339487813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.898, \"ph\": \"X\", \"dur\": 1.181135530206606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.795, \"ph\": \"X\", \"dur\": 1.308603377289093, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.687, \"ph\": \"X\", \"dur\": 1.4445524509876357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.561, \"ph\": \"X\", \"dur\": 1.5992101128098313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706152.461, \"ph\": \"X\", \"dur\": 1.7249318250007772, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.972, \"ph\": \"X\", \"dur\": 0.05986748199568859, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.866, \"ph\": \"X\", \"dur\": 0.19282318159444697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.76, \"ph\": \"X\", \"dur\": 0.32378329846001574, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.643, \"ph\": \"X\", \"dur\": 0.46671691172472224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.533, \"ph\": \"X\", \"dur\": 0.6031648811065624, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.427, \"ph\": \"X\", \"dur\": 0.7346238936554287, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706154.262, \"ph\": \"X\", \"dur\": 0.9259503881999834, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.958, \"ph\": \"X\", \"dur\": 0.04290502876357682, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.846, \"ph\": \"X\", \"dur\": 0.18084968519530925, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.722, \"ph\": \"X\", \"dur\": 0.332763420759369, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.605, \"ph\": \"X\", \"dur\": 0.4769442732323191, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.5, \"ph\": \"X\", \"dur\": 0.6084032857811852, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.388, \"ph\": \"X\", \"dur\": 0.7468468378962151, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706155.279, \"ph\": \"X\", \"dur\": 0.8803014331782708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.901, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.797, \"ph\": \"X\", \"dur\": 0.18334416361179628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.696, \"ph\": \"X\", \"dur\": 0.31180980206087805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.595, \"ph\": \"X\", \"dur\": 0.43852930561841885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.489, \"ph\": \"X\", \"dur\": 0.5684916311173928, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.374, \"ph\": \"X\", \"dur\": 0.7114252443820993, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706156.233, \"ph\": \"X\", \"dur\": 0.879303641811676, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.817, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.713, \"ph\": \"X\", \"dur\": 0.18134858087860667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.611, \"ph\": \"X\", \"dur\": 0.31131090637758063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.51, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.406, \"ph\": \"X\", \"dur\": 0.5789684404666383, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.283, \"ph\": \"X\", \"dur\": 0.7241470843061831, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706157.183, \"ph\": \"X\", \"dur\": 0.8486215572888857, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.721, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.617, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.517, \"ph\": \"X\", \"dur\": 0.306820845227904, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.415, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.307, \"ph\": \"X\", \"dur\": 0.5704872138505824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.207, \"ph\": \"X\", \"dur\": 0.6959594781998798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706158.109, \"ph\": \"X\", \"dur\": 0.8209328468658798, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.531, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.43, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.324, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.221, \"ph\": \"X\", \"dur\": 0.4407743361932572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.12, \"ph\": \"X\", \"dur\": 0.5694894224839876, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706159.013, \"ph\": \"X\", \"dur\": 0.702445122082746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.356, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.251, \"ph\": \"X\", \"dur\": 0.19132649454455478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.135, \"ph\": \"X\", \"dur\": 0.33076783802617943, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.029, \"ph\": \"X\", \"dur\": 0.46372353762493784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706160.92, \"ph\": \"X\", \"dur\": 0.6011692983733729, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706160.805, \"ph\": \"X\", \"dur\": 0.743604015954782, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706160.698, \"ph\": \"X\", \"dur\": 0.8770586112368377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.33, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.21, \"ph\": \"X\", \"dur\": 0.2050461258352334, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.09, \"ph\": \"X\", \"dur\": 0.35197090456631913, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.977, \"ph\": \"X\", \"dur\": 0.4944056221477282, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.852, \"ph\": \"X\", \"dur\": 0.6465688055534368, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.753, \"ph\": \"X\", \"dur\": 0.7755333396858158, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706161.651, \"ph\": \"X\", \"dur\": 0.9062440087097359, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.218, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.114, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.013, \"ph\": \"X\", \"dur\": 0.3412446473754249, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.912, \"ph\": \"X\", \"dur\": 0.47070807719110147, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.792, \"ph\": \"X\", \"dur\": 0.616136168872295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706162.647, \"ph\": \"X\", \"dur\": 0.7855112533517639, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.175, \"ph\": \"X\", \"dur\": 0.0516357032212814, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.071, \"ph\": \"X\", \"dur\": 0.18259582008685019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.957, \"ph\": \"X\", \"dur\": 0.3215382678851774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.827, \"ph\": \"X\", \"dur\": 0.4766948253906704, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.707, \"ph\": \"X\", \"dur\": 0.62287126059681, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.606, \"ph\": \"X\", \"dur\": 0.7490918684710535, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706163.508, \"ph\": \"X\", \"dur\": 0.8740652371370533, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.103, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.998, \"ph\": \"X\", \"dur\": 0.18234637224520148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.894, \"ph\": \"X\", \"dur\": 0.31380538479406767, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.791, \"ph\": \"X\", \"dur\": 0.4432688146097442, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.689, \"ph\": \"X\", \"dur\": 0.5694894224839876, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.582, \"ph\": \"X\", \"dur\": 0.7026945699243947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706164.466, \"ph\": \"X\", \"dur\": 0.84587763103075, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.963, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.856, \"ph\": \"X\", \"dur\": 0.1848408506616885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.749, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.598, \"ph\": \"X\", \"dur\": 0.495403413514323, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.495, \"ph\": \"X\", \"dur\": 0.6243679476467022, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706165.39, \"ph\": \"X\", \"dur\": 0.7573236472454606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.771, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.657, \"ph\": \"X\", \"dur\": 0.21901520496756072, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.543, \"ph\": \"X\", \"dur\": 0.35745875708259056, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.427, \"ph\": \"X\", \"dur\": 0.5011407138722431, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.32, \"ph\": \"X\", \"dur\": 0.6330986221044068, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706166.219, \"ph\": \"X\", \"dur\": 0.7598181256619476, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706167.474, \"ph\": \"X\", \"dur\": 0.08655840105209973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706167.37, \"ph\": \"X\", \"dur\": 1.0786124672889894, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706167.267, \"ph\": \"X\", \"dur\": 1.2165571237207218, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706167.163, \"ph\": \"X\", \"dur\": 1.342029388070019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706167.053, \"ph\": \"X\", \"dur\": 1.4899519581676997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.212, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.096, \"ph\": \"X\", \"dur\": 0.19980772116061063, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706168.977, \"ph\": \"X\", \"dur\": 0.34448746931685803, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706168.862, \"ph\": \"X\", \"dur\": 0.4864232912149697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706168.752, \"ph\": \"X\", \"dur\": 0.6223723649135126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706168.621, \"ph\": \"X\", \"dur\": 0.7810211922020872, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.016, \"ph\": \"X\", \"dur\": 0.07757827875274646, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.916, \"ph\": \"X\", \"dur\": 0.20329999094369247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.81, \"ph\": \"X\", \"dur\": 0.3337612121259638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.701, \"ph\": \"X\", \"dur\": 0.4682135987746145, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.578, \"ph\": \"X\", \"dur\": 0.6168845123972411, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706169.476, \"ph\": \"X\", \"dur\": 0.7441029116380794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.811, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.711, \"ph\": \"X\", \"dur\": 0.17611017620398392, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.606, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.501, \"ph\": \"X\", \"dur\": 0.437531514251824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.399, \"ph\": \"X\", \"dur\": 0.564999361334311, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706170.295, \"ph\": \"X\", \"dur\": 0.6942133433083388, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.717, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.608, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.497, \"ph\": \"X\", \"dur\": 0.3232844027767184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.348, \"ph\": \"X\", \"dur\": 0.49914513113905357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.229, \"ph\": \"X\", \"dur\": 0.6440743271369497, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.063, \"ph\": \"X\", \"dur\": 0.8344030303149096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.616, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.517, \"ph\": \"X\", \"dur\": 0.19032870317795997, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.412, \"ph\": \"X\", \"dur\": 0.3197921329936365, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.312, \"ph\": \"X\", \"dur\": 0.4450149495012851, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.208, \"ph\": \"X\", \"dur\": 0.5759750663668539, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.1, \"ph\": \"X\", \"dur\": 0.7079329745990175, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706171.972, \"ph\": \"X\", \"dur\": 0.8615928450546182, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.522, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.421, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.32, \"ph\": \"X\", \"dur\": 0.3065713973862553, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.219, \"ph\": \"X\", \"dur\": 0.43204366173555264, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.115, \"ph\": \"X\", \"dur\": 0.5605093001846344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.01, \"ph\": \"X\", \"dur\": 0.6914694170502032, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706172.91, \"ph\": \"X\", \"dur\": 0.818188920607744, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706174.306, \"ph\": \"X\", \"dur\": 0.07857607011934127, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706174.205, \"ph\": \"X\", \"dur\": 0.204547230151936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706174.104, \"ph\": \"X\", \"dur\": 0.33176562939277426, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706174.004, \"ph\": \"X\", \"dur\": 0.45773678942536894, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.904, \"ph\": \"X\", \"dur\": 1.4270911020722268, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706173.803, \"ph\": \"X\", \"dur\": 1.5523139185798753, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.181, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.074, \"ph\": \"X\", \"dur\": 0.18982980749466255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706175.959, \"ph\": \"X\", \"dur\": 0.32777446392639503, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706175.836, \"ph\": \"X\", \"dur\": 0.4769442732323191, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706175.681, \"ph\": \"X\", \"dur\": 0.6585423019525745, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706175.544, \"ph\": \"X\", \"dur\": 0.8236767731240154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706175.441, \"ph\": \"X\", \"dur\": 0.9536390986229895, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.103, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.99, \"ph\": \"X\", \"dur\": 0.20030661684390805, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.885, \"ph\": \"X\", \"dur\": 0.33026894234288207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.78, \"ph\": \"X\", \"dur\": 0.46372353762493784, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.672, \"ph\": \"X\", \"dur\": 0.6098999728310774, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.571, \"ph\": \"X\", \"dur\": 0.7358711328636722, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706176.471, \"ph\": \"X\", \"dur\": 0.8635884277878079, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.054, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.953, \"ph\": \"X\", \"dur\": 0.1758607283623352, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.846, \"ph\": \"X\", \"dur\": 0.3078186365944988, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.728, \"ph\": \"X\", \"dur\": 0.4517500412258001, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.626, \"ph\": \"X\", \"dur\": 0.5782200969416922, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.518, \"ph\": \"X\", \"dur\": 0.7119241400653967, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706177.416, \"ph\": \"X\", \"dur\": 0.8406392263561272, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.742, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.642, \"ph\": \"X\", \"dur\": 0.20230219957709766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.536, \"ph\": \"X\", \"dur\": 0.3457347085251016, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.437, \"ph\": \"X\", \"dur\": 0.46671691172472224, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706178.33, \"ph\": \"X\", \"dur\": 0.5971781329069936, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.513, \"ph\": \"X\", \"dur\": 0.049141224804794374, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.411, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.308, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.204, \"ph\": \"X\", \"dur\": 0.437531514251824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.104, \"ph\": \"X\", \"dur\": 0.5627543307594727, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.001, \"ph\": \"X\", \"dur\": 0.690721073525257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.31, \"ph\": \"X\", \"dur\": 0.07608159170285424, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.206, \"ph\": \"X\", \"dur\": 0.2075406042517204, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.092, \"ph\": \"X\", \"dur\": 0.3479797390999399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.968, \"ph\": \"X\", \"dur\": 0.49714954840586395, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.867, \"ph\": \"X\", \"dur\": 0.6243679476467022, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706179.766, \"ph\": \"X\", \"dur\": 0.7503391076792969, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706181.219, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706181.119, \"ph\": \"X\", \"dur\": 0.17710796757057873, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706181.017, \"ph\": \"X\", \"dur\": 0.3050747103363631, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.916, \"ph\": \"X\", \"dur\": 0.4310458703689578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.805, \"ph\": \"X\", \"dur\": 0.5689905268006902, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.688, \"ph\": \"X\", \"dur\": 0.7094296616489097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706180.588, \"ph\": \"X\", \"dur\": 0.8373964044146941, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.163, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.057, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706182.953, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706182.84, \"ph\": \"X\", \"dur\": 0.4572378937420715, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706182.733, \"ph\": \"X\", \"dur\": 0.5931869674406144, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706182.619, \"ph\": \"X\", \"dur\": 0.732628310922239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706182.505, \"ph\": \"X\", \"dur\": 0.872568550087161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.067, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.964, \"ph\": \"X\", \"dur\": 0.1853397463449859, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.854, \"ph\": \"X\", \"dur\": 0.32029102867693393, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.751, \"ph\": \"X\", \"dur\": 0.44800832360106957, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.645, \"ph\": \"X\", \"dur\": 0.5794673361499357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706183.516, \"ph\": \"X\", \"dur\": 0.7356216850220235, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.846, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.744, \"ph\": \"X\", \"dur\": 0.17935299814541705, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.64, \"ph\": \"X\", \"dur\": 0.3083175322777962, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.538, \"ph\": \"X\", \"dur\": 0.4372820664101753, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.431, \"ph\": \"X\", \"dur\": 0.5704872138505824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706184.33, \"ph\": \"X\", \"dur\": 0.6967078217248258, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.704, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.6, \"ph\": \"X\", \"dur\": 0.1855891941866346, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.495, \"ph\": \"X\", \"dur\": 0.3145537283190138, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.348, \"ph\": \"X\", \"dur\": 0.4884188739481593, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.206, \"ph\": \"X\", \"dur\": 0.6560478235360875, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.101, \"ph\": \"X\", \"dur\": 0.7865090447183587, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.567, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.467, \"ph\": \"X\", \"dur\": 0.1818474765619041, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.367, \"ph\": \"X\", \"dur\": 0.3050747103363631, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.267, \"ph\": \"X\", \"dur\": 0.43354034878544484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.162, \"ph\": \"X\", \"dur\": 0.5620059872345265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.062, \"ph\": \"X\", \"dur\": 0.6892243864753648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706185.961, \"ph\": \"X\", \"dur\": 0.815694442191257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.466, \"ph\": \"X\", \"dur\": 0.05737300357920156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.339, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.232, \"ph\": \"X\", \"dur\": 0.34324023010861454, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.117, \"ph\": \"X\", \"dur\": 0.48492660416507755, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.956, \"ph\": \"X\", \"dur\": 0.6732597246098478, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706186.85, \"ph\": \"X\", \"dur\": 0.8044692893170653, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.335, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.234, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.133, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.032, \"ph\": \"X\", \"dur\": 0.43403924446874226, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.931, \"ph\": \"X\", \"dur\": 0.5610081958679318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.829, \"ph\": \"X\", \"dur\": 0.6877276994254725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706187.728, \"ph\": \"X\", \"dur\": 0.8171911292411491, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706189.138, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706189.035, \"ph\": \"X\", \"dur\": 1.078113571605692, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.931, \"ph\": \"X\", \"dur\": 1.2210471848703985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.826, \"ph\": \"X\", \"dur\": 1.3505106146860748, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.72, \"ph\": \"X\", \"dur\": 1.4834663142848332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706188.618, \"ph\": \"X\", \"dur\": 1.6151747746753484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.929, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.826, \"ph\": \"X\", \"dur\": 0.18583864202828332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.71, \"ph\": \"X\", \"dur\": 0.3267766725598002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.601, \"ph\": \"X\", \"dur\": 0.460231267841856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.48, \"ph\": \"X\", \"dur\": 0.6081538379395365, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706190.33, \"ph\": \"X\", \"dur\": 0.7835156706185743, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.719, \"ph\": \"X\", \"dur\": 0.043653372288522924, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.601, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.501, \"ph\": \"X\", \"dur\": 0.31305704126912154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.396, \"ph\": \"X\", \"dur\": 0.4430193667680955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.293, \"ph\": \"X\", \"dur\": 0.5719839009004746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.187, \"ph\": \"X\", \"dur\": 0.7029440177660434, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.51, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.399, \"ph\": \"X\", \"dur\": 0.18833312044477035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.279, \"ph\": \"X\", \"dur\": 0.33475900349255866, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.174, \"ph\": \"X\", \"dur\": 0.4662180160414248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.068, \"ph\": \"X\", \"dur\": 0.5966792372236962, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706191.964, \"ph\": \"X\", \"dur\": 0.7278888019309137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.291, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.191, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.09, \"ph\": \"X\", \"dur\": 0.30607250170295786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.976, \"ph\": \"X\", \"dur\": 0.4445160538179877, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.867, \"ph\": \"X\", \"dur\": 0.5794673361499357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706192.766, \"ph\": \"X\", \"dur\": 0.7044407048159357, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.078, \"ph\": \"X\", \"dur\": 0.03991165466379239, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.969, \"ph\": \"X\", \"dur\": 0.1753618326790378, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.861, \"ph\": \"X\", \"dur\": 0.31031311501098585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.755, \"ph\": \"X\", \"dur\": 0.4407743361932572, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.65, \"ph\": \"X\", \"dur\": 0.572482796583772, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706193.544, \"ph\": \"X\", \"dur\": 0.7034429134493408, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.737, \"ph\": \"X\", \"dur\": 0.07957386148593608, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.634, \"ph\": \"X\", \"dur\": 0.20828894777666654, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.533, \"ph\": \"X\", \"dur\": 0.335257899175856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.428, \"ph\": \"X\", \"dur\": 0.46871249445791185, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706194.321, \"ph\": \"X\", \"dur\": 0.5996726113234806, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.561, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.46, \"ph\": \"X\", \"dur\": 0.17685851972893002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.356, \"ph\": \"X\", \"dur\": 0.306820845227904, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.25, \"ph\": \"X\", \"dur\": 0.439277649143365, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.139, \"ph\": \"X\", \"dur\": 0.5752267228419078, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.012, \"ph\": \"X\", \"dur\": 0.7278888019309137, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706196.365, \"ph\": \"X\", \"dur\": 0.05712355573755286, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706196.243, \"ph\": \"X\", \"dur\": 1.0633961489484185, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706196.144, \"ph\": \"X\", \"dur\": 1.187870621931121, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706196.039, \"ph\": \"X\", \"dur\": 1.3298064438292327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.917, \"ph\": \"X\", \"dur\": 1.4742367441438313, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706195.813, \"ph\": \"X\", \"dur\": 1.6071924437425897, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.146, \"ph\": \"X\", \"dur\": 0.04739508991325347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.025, \"ph\": \"X\", \"dur\": 0.20080551252720544, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706197.903, \"ph\": \"X\", \"dur\": 0.3479797390999399, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706197.778, \"ph\": \"X\", \"dur\": 0.5001429225056484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706197.654, \"ph\": \"X\", \"dur\": 0.6500610753365186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706197.503, \"ph\": \"X\", \"dur\": 0.824924012332259, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.923, \"ph\": \"X\", \"dur\": 0.052633494587876216, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.823, \"ph\": \"X\", \"dur\": 0.17710796757057873, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.72, \"ph\": \"X\", \"dur\": 0.3085669801194449, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.617, \"ph\": \"X\", \"dur\": 0.4355359315186344, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.509, \"ph\": \"X\", \"dur\": 0.5694894224839876, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706198.407, \"ph\": \"X\", \"dur\": 0.6962089260415285, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.852, \"ph\": \"X\", \"dur\": 0.040161102505441096, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.742, \"ph\": \"X\", \"dur\": 0.17411459347079428, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.624, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.523, \"ph\": \"X\", \"dur\": 0.4430193667680955, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.399, \"ph\": \"X\", \"dur\": 0.5916902803907221, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.277, \"ph\": \"X\", \"dur\": 0.7401117461717002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706199.175, \"ph\": \"X\", \"dur\": 0.8680784889374845, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.626, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.525, \"ph\": \"X\", \"dur\": 0.17885410246211964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.421, \"ph\": \"X\", \"dur\": 0.3085669801194449, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.317, \"ph\": \"X\", \"dur\": 0.43803040993512143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.217, \"ph\": \"X\", \"dur\": 0.562504882917824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.117, \"ph\": \"X\", \"dur\": 0.6879771472671212, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.395, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.291, \"ph\": \"X\", \"dur\": 0.18159802872025538, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.183, \"ph\": \"X\", \"dur\": 0.31505262400231115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.083, \"ph\": \"X\", \"dur\": 0.4410237840349059, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.982, \"ph\": \"X\", \"dur\": 0.5679927354340953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706200.879, \"ph\": \"X\", \"dur\": 0.6964583738831771, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.16, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.056, \"ph\": \"X\", \"dur\": 0.18259582008685019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.956, \"ph\": \"X\", \"dur\": 0.3080680844361475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.855, \"ph\": \"X\", \"dur\": 0.43354034878544484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.751, \"ph\": \"X\", \"dur\": 0.5642510178093648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706201.65, \"ph\": \"X\", \"dur\": 0.690721073525257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706203.04, \"ph\": \"X\", \"dur\": 0.0406599981887385, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.932, \"ph\": \"X\", \"dur\": 0.1736156977874969, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.826, \"ph\": \"X\", \"dur\": 0.30607250170295786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.723, \"ph\": \"X\", \"dur\": 0.43354034878544484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.622, \"ph\": \"X\", \"dur\": 1.9826114454238868, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.522, \"ph\": \"X\", \"dur\": 2.107584814089887, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706202.421, \"ph\": \"X\", \"dur\": 2.2375471395888606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.304, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.196, \"ph\": \"X\", \"dur\": 0.20704170856842302, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.09, \"ph\": \"X\", \"dur\": 0.3509731131997243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706204.976, \"ph\": \"X\", \"dur\": 0.48991556099805156, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706204.868, \"ph\": \"X\", \"dur\": 0.6268624260631892, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706204.741, \"ph\": \"X\", \"dur\": 0.7939924799678199, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.254, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.149, \"ph\": \"X\", \"dur\": 0.18583864202828332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.049, \"ph\": \"X\", \"dur\": 0.31305704126912154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.923, \"ph\": \"X\", \"dur\": 0.46172795489174817, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.744, \"ph\": \"X\", \"dur\": 0.6677718720935764, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706205.613, \"ph\": \"X\", \"dur\": 0.8221800860741232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.043, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.939, \"ph\": \"X\", \"dur\": 0.18134858087860667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.837, \"ph\": \"X\", \"dur\": 0.3080680844361475, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.734, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.629, \"ph\": \"X\", \"dur\": 0.5659971527009058, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706206.512, \"ph\": \"X\", \"dur\": 0.7094296616489097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.851, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.742, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.603, \"ph\": \"X\", \"dur\": 0.3514720088830217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.503, \"ph\": \"X\", \"dur\": 0.47644537754902166, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.404, \"ph\": \"X\", \"dur\": 0.6004209548484267, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706207.298, \"ph\": \"X\", \"dur\": 0.7323788630805903, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.614, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.51, \"ph\": \"X\", \"dur\": 0.18035078951201186, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.41, \"ph\": \"X\", \"dur\": 0.3058230538613092, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.308, \"ph\": \"X\", \"dur\": 0.43254255741885006, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.208, \"ph\": \"X\", \"dur\": 0.55751592608485, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.104, \"ph\": \"X\", \"dur\": 0.6877276994254725, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.459, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.338, \"ph\": \"X\", \"dur\": 0.19930882547731324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.232, \"ph\": \"X\", \"dur\": 0.33176562939277426, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.092, \"ph\": \"X\", \"dur\": 0.4973989962475126, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.98, \"ph\": \"X\", \"dur\": 0.634595309154299, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706208.879, \"ph\": \"X\", \"dur\": 0.7618137083951373, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.221, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.121, \"ph\": \"X\", \"dur\": 0.1753618326790378, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.021, \"ph\": \"X\", \"dur\": 0.3005846491866864, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.92, \"ph\": \"X\", \"dur\": 0.4270547049025786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.818, \"ph\": \"X\", \"dur\": 0.5535247606184708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706209.716, \"ph\": \"X\", \"dur\": 0.6809926077009576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.991, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.889, \"ph\": \"X\", \"dur\": 0.18010134167036315, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.781, \"ph\": \"X\", \"dur\": 1.1791399474734165, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.68, \"ph\": \"X\", \"dur\": 1.303614420456119, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.58, \"ph\": \"X\", \"dur\": 1.430084476172011, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706210.475, \"ph\": \"X\", \"dur\": 1.5795037333195838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.738, \"ph\": \"X\", \"dur\": 0.05587631652930934, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.638, \"ph\": \"X\", \"dur\": 0.18084968519530925, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.533, \"ph\": \"X\", \"dur\": 0.31330648911077025, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.425, \"ph\": \"X\", \"dur\": 0.44775887575942086, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.313, \"ph\": \"X\", \"dur\": 0.5857035321911532, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706212.137, \"ph\": \"X\", \"dur\": 0.7885046274515484, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.573, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.426, \"ph\": \"X\", \"dur\": 0.22550084885042698, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.326, \"ph\": \"X\", \"dur\": 0.3514720088830217, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.222, \"ph\": \"X\", \"dur\": 0.4819332300652931, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.114, \"ph\": \"X\", \"dur\": 0.6143900339807541, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.003, \"ph\": \"X\", \"dur\": 0.7518357947291892, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.364, \"ph\": \"X\", \"dur\": 0.03941275898049498, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.256, \"ph\": \"X\", \"dur\": 0.1738651456291456, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.149, \"ph\": \"X\", \"dur\": 0.3090658758027423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.042, \"ph\": \"X\", \"dur\": 0.4415226797182033, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.937, \"ph\": \"X\", \"dur\": 0.5719839009004746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706213.831, \"ph\": \"X\", \"dur\": 0.7059373918658278, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.023, \"ph\": \"X\", \"dur\": 0.06784981292844706, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.923, \"ph\": \"X\", \"dur\": 0.19232428591114956, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.819, \"ph\": \"X\", \"dur\": 0.325279985509908, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.714, \"ph\": \"X\", \"dur\": 0.4557412066921793, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706214.61, \"ph\": \"X\", \"dur\": 0.5842068451412611, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.82, \"ph\": \"X\", \"dur\": 0.056375212212606746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.687, \"ph\": \"X\", \"dur\": 0.2175185179176685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.583, \"ph\": \"X\", \"dur\": 0.34847863478323726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.475, \"ph\": \"X\", \"dur\": 0.4864232912149697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.375, \"ph\": \"X\", \"dur\": 0.6141405861391054, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706215.276, \"ph\": \"X\", \"dur\": 0.7376172677552131, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.633, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.513, \"ph\": \"X\", \"dur\": 0.20354943878534118, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.408, \"ph\": \"X\", \"dur\": 0.3337612121259638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.294, \"ph\": \"X\", \"dur\": 0.47494869049912947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.195, \"ph\": \"X\", \"dur\": 0.600171507006778, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.09, \"ph\": \"X\", \"dur\": 0.7306327281890495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.438, \"ph\": \"X\", \"dur\": 0.059119138470742474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.335, \"ph\": \"X\", \"dur\": 0.18833312044477035, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.232, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.133, \"ph\": \"X\", \"dur\": 0.44177212755985196, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.027, \"ph\": \"X\", \"dur\": 0.5729816922670694, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706216.898, \"ph\": \"X\", \"dur\": 0.7288865932975085, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706218.214, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706218.109, \"ph\": \"X\", \"dur\": 0.18334416361179628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706218.009, \"ph\": \"X\", \"dur\": 1.2267844852283185, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.909, \"ph\": \"X\", \"dur\": 1.3497622711611288, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.804, \"ph\": \"X\", \"dur\": 1.4817201793932926, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706217.701, \"ph\": \"X\", \"dur\": 1.612181400575564, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706219.884, \"ph\": \"X\", \"dur\": 0.05862024278744507, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706219.769, \"ph\": \"X\", \"dur\": 0.20105496036885415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706219.661, \"ph\": \"X\", \"dur\": 0.33550734701750473, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706219.545, \"ph\": \"X\", \"dur\": 0.47794206459891386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706219.392, \"ph\": \"X\", \"dur\": 0.6577939584276283, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.742, \"ph\": \"X\", \"dur\": 0.057871899262498964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.606, \"ph\": \"X\", \"dur\": 0.25568403768992, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.488, \"ph\": \"X\", \"dur\": 0.3986176509546265, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.376, \"ph\": \"X\", \"dur\": 0.5375600987529537, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.26, \"ph\": \"X\", \"dur\": 0.6842354296423907, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706220.143, \"ph\": \"X\", \"dur\": 0.8271690429070973, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.63, \"ph\": \"X\", \"dur\": 0.05886969062909377, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.523, \"ph\": \"X\", \"dur\": 0.19531766001093398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.411, \"ph\": \"X\", \"dur\": 0.3367545862257483, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.283, \"ph\": \"X\", \"dur\": 0.49141224804794376, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.166, \"ph\": \"X\", \"dur\": 0.6368403397291373, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.053, \"ph\": \"X\", \"dur\": 0.7795245051521951, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.462, \"ph\": \"X\", \"dur\": 0.06086527336228339, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.356, \"ph\": \"X\", \"dur\": 0.19806158626906972, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.245, \"ph\": \"X\", \"dur\": 0.33126673370947685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.131, \"ph\": \"X\", \"dur\": 0.47270365992429114, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.018, \"ph\": \"X\", \"dur\": 0.611147212039321, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706221.911, \"ph\": \"X\", \"dur\": 0.7441029116380794, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.25, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.15, \"ph\": \"X\", \"dur\": 0.1766090718872813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.05, \"ph\": \"X\", \"dur\": 0.30407691896976824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.95, \"ph\": \"X\", \"dur\": 0.4285513919524708, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.848, \"ph\": \"X\", \"dur\": 0.5550214476683629, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706222.74, \"ph\": \"X\", \"dur\": 0.6894738343170135, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.035, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.934, \"ph\": \"X\", \"dur\": 0.18134858087860667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.829, \"ph\": \"X\", \"dur\": 0.3105625628526345, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.727, \"ph\": \"X\", \"dur\": 0.43653372288522924, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.626, \"ph\": \"X\", \"dur\": 0.5640015699677161, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706223.518, \"ph\": \"X\", \"dur\": 0.6984539566163668, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.839, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.736, \"ph\": \"X\", \"dur\": 0.17960244598706576, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.631, \"ph\": \"X\", \"dur\": 0.3105625628526345, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.526, \"ph\": \"X\", \"dur\": 0.44202157540150067, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.419, \"ph\": \"X\", \"dur\": 0.5734805879503668, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706224.31, \"ph\": \"X\", \"dur\": 0.7094296616489097, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706225.544, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706225.444, \"ph\": \"X\", \"dur\": 1.0910848593714244, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706225.337, \"ph\": \"X\", \"dur\": 1.2210471848703985, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706225.23, \"ph\": \"X\", \"dur\": 1.3694686506513762, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706225.119, \"ph\": \"X\", \"dur\": 1.5024243502501347, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.207, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.097, \"ph\": \"X\", \"dur\": 0.19431986864433917, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706226.987, \"ph\": \"X\", \"dur\": 0.33176562939277426, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706226.882, \"ph\": \"X\", \"dur\": 0.4632246419416404, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706226.728, \"ph\": \"X\", \"dur\": 0.6435754314536523, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.855, \"ph\": \"X\", \"dur\": 0.06735091724514966, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.754, \"ph\": \"X\", \"dur\": 0.19731324274412362, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.654, \"ph\": \"X\", \"dur\": 0.3247810898266106, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.552, \"ph\": \"X\", \"dur\": 0.4537456239589897, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706227.449, \"ph\": \"X\", \"dur\": 0.5824607102497201, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.528, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.423, \"ph\": \"X\", \"dur\": 0.18334416361179628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.319, \"ph\": \"X\", \"dur\": 0.31505262400231115, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.21, \"ph\": \"X\", \"dur\": 0.44950501065096177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.11, \"ph\": \"X\", \"dur\": 0.5739794836336642, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.193, \"ph\": \"X\", \"dur\": 0.12173054672456678, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.087, \"ph\": \"X\", \"dur\": 0.25518514200662257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.983, \"ph\": \"X\", \"dur\": 0.38365078045570433, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.884, \"ph\": \"X\", \"dur\": 0.5121164189047861, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706228.786, \"ph\": \"X\", \"dur\": 0.6393348181456243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.938, \"ph\": \"X\", \"dur\": 0.054878525162714534, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.815, \"ph\": \"X\", \"dur\": 0.20329999094369247, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.711, \"ph\": \"X\", \"dur\": 0.3332623164426664, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.611, \"ph\": \"X\", \"dur\": 0.460231267841856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706229.503, \"ph\": \"X\", \"dur\": 0.5946836544905065, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.684, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.58, \"ph\": \"X\", \"dur\": 0.18234637224520148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.475, \"ph\": \"X\", \"dur\": 0.3143042804773651, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.376, \"ph\": \"X\", \"dur\": 0.43803040993512143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.275, \"ph\": \"X\", \"dur\": 0.5642510178093648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.174, \"ph\": \"X\", \"dur\": 0.6892243864753648, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.242, \"ph\": \"X\", \"dur\": 0.07658048738615164, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.139, \"ph\": \"X\", \"dur\": 0.2040483344686386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.039, \"ph\": \"X\", \"dur\": 0.3407457516921275, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706230.939, \"ph\": \"X\", \"dur\": 0.4662180160414248, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.904, \"ph\": \"X\", \"dur\": 0.07782772659439516, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.783, \"ph\": \"X\", \"dur\": 0.22350526611723737, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.682, \"ph\": \"X\", \"dur\": 0.3509731131997243, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.579, \"ph\": \"X\", \"dur\": 0.4801870951737522, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706231.479, \"ph\": \"X\", \"dur\": 0.6146394818224028, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706232.582, \"ph\": \"X\", \"dur\": 0.041408341713684606, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706232.476, \"ph\": \"X\", \"dur\": 0.17311680210419947, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706232.376, \"ph\": \"X\", \"dur\": 0.2990879621367942, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706232.272, \"ph\": \"X\", \"dur\": 1.2587138089593526, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706232.167, \"ph\": \"X\", \"dur\": 1.3941639869745979, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.102, \"ph\": \"X\", \"dur\": 0.053880733796119726, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.0, \"ph\": \"X\", \"dur\": 0.18259582008685019, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706233.896, \"ph\": \"X\", \"dur\": 0.3125581455858242, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706233.781, \"ph\": \"X\", \"dur\": 0.4529972804340436, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706233.636, \"ph\": \"X\", \"dur\": 0.625365739013297, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.776, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.668, \"ph\": \"X\", \"dur\": 0.1843419549783911, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.569, \"ph\": \"X\", \"dur\": 0.3090658758027423, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.467, \"ph\": \"X\", \"dur\": 0.43803040993512143, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706234.347, \"ph\": \"X\", \"dur\": 0.5847057408245585, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.413, \"ph\": \"X\", \"dur\": 0.051136807537984, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.314, \"ph\": \"X\", \"dur\": 0.17710796757057873, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.214, \"ph\": \"X\", \"dur\": 0.30407691896976824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.112, \"ph\": \"X\", \"dur\": 0.43204366173555264, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.011, \"ph\": \"X\", \"dur\": 0.5597609566596883, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.158, \"ph\": \"X\", \"dur\": 0.049390672646443076, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.054, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.955, \"ph\": \"X\", \"dur\": 0.30607250170295786, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.856, \"ph\": \"X\", \"dur\": 0.4310458703689578, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.752, \"ph\": \"X\", \"dur\": 0.5610081958679318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706235.652, \"ph\": \"X\", \"dur\": 0.6874782515838238, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.82, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.719, \"ph\": \"X\", \"dur\": 0.17810575893717354, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.616, \"ph\": \"X\", \"dur\": 0.3070702930695527, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.512, \"ph\": \"X\", \"dur\": 0.43703261856852665, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706236.413, \"ph\": \"X\", \"dur\": 0.562504882917824, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.501, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.38, \"ph\": \"X\", \"dur\": 0.19930882547731324, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.273, \"ph\": \"X\", \"dur\": 0.3337612121259638, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.154, \"ph\": \"X\", \"dur\": 0.47819151244056257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.047, \"ph\": \"X\", \"dur\": 0.611147212039321, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.142, \"ph\": \"X\", \"dur\": 0.04988956832974049, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.037, \"ph\": \"X\", \"dur\": 0.17985189382871444, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.938, \"ph\": \"X\", \"dur\": 0.30382747112811953, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.838, \"ph\": \"X\", \"dur\": 0.4305469746856604, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706237.738, \"ph\": \"X\", \"dur\": 0.5547719998267142, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.808, \"ph\": \"X\", \"dur\": 0.03891386329719758, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.701, \"ph\": \"X\", \"dur\": 0.17211901073760466, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.601, \"ph\": \"X\", \"dur\": 0.2980901707701994, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.49, \"ph\": \"X\", \"dur\": 0.4330414531021474, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706238.369, \"ph\": \"X\", \"dur\": 0.5812134710414766, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706239.432, \"ph\": \"X\", \"dur\": 0.0404105503470898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706239.329, \"ph\": \"X\", \"dur\": 0.17012342800441504, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706239.228, \"ph\": \"X\", \"dur\": 0.29559569235371236, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706239.129, \"ph\": \"X\", \"dur\": 1.2886475499571968, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706239.028, \"ph\": \"X\", \"dur\": 1.4228504887641986, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706240.971, \"ph\": \"X\", \"dur\": 0.043902820130171626, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706240.855, \"ph\": \"X\", \"dur\": 0.19880992979401582, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706240.749, \"ph\": \"X\", \"dur\": 0.33026894234288207, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706240.643, \"ph\": \"X\", \"dur\": 0.46571912035812746, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706240.53, \"ph\": \"X\", \"dur\": 0.6171339602388898, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.566, \"ph\": \"X\", \"dur\": 0.08256723558572052, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.458, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.332, \"ph\": \"X\", \"dur\": 0.36668832722359257, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.222, \"ph\": \"X\", \"dur\": 0.502138505238838, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.237, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.138, \"ph\": \"X\", \"dur\": 0.1766090718872813, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.031, \"ph\": \"X\", \"dur\": 0.3105625628526345, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.93, \"ph\": \"X\", \"dur\": 0.4360348272019318, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706241.818, \"ph\": \"X\", \"dur\": 0.5749772750002591, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.925, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.82, \"ph\": \"X\", \"dur\": 0.18234637224520148, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.712, \"ph\": \"X\", \"dur\": 0.3192932373103391, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.59, \"ph\": \"X\", \"dur\": 0.46522022467483004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706242.482, \"ph\": \"X\", \"dur\": 0.5981759242735885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.503, \"ph\": \"X\", \"dur\": 0.05288294242952492, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.399, \"ph\": \"X\", \"dur\": 0.1828452679284989, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.291, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.177, \"ph\": \"X\", \"dur\": 0.4572378937420715, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.139, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.029, \"ph\": \"X\", \"dur\": 0.1848408506616885, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.928, \"ph\": \"X\", \"dur\": 0.31305704126912154, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.822, \"ph\": \"X\", \"dur\": 0.4435182624513929, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706243.716, \"ph\": \"X\", \"dur\": 0.5754761706835565, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.719, \"ph\": \"X\", \"dur\": 0.050887359696335295, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.617, \"ph\": \"X\", \"dur\": 0.17885410246211964, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.505, \"ph\": \"X\", \"dur\": 0.3158009675272573, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.38, \"ph\": \"X\", \"dur\": 0.46696635956637095, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.252, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.152, \"ph\": \"X\", \"dur\": 0.17760686325387612, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.048, \"ph\": \"X\", \"dur\": 0.3085669801194449, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706244.933, \"ph\": \"X\", \"dur\": 0.4500039063342592, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.798, \"ph\": \"X\", \"dur\": 0.08755619241869456, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.697, \"ph\": \"X\", \"dur\": 0.2140262481345867, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.591, \"ph\": \"X\", \"dur\": 0.34448746931685803, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706245.484, \"ph\": \"X\", \"dur\": 0.4784409602822113, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.363, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.255, \"ph\": \"X\", \"dur\": 0.18583864202828332, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.15, \"ph\": \"X\", \"dur\": 0.3162998632105547, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.043, \"ph\": \"X\", \"dur\": 0.44950501065096177, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.8, \"ph\": \"X\", \"dur\": 0.08680784889374844, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.691, \"ph\": \"X\", \"dur\": 1.0880914852716401, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706246.578, \"ph\": \"X\", \"dur\": 1.23227233774459, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.037, \"ph\": \"X\", \"dur\": 0.09503962766815563, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706247.919, \"ph\": \"X\", \"dur\": 0.24470833265737707, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.575, \"ph\": \"X\", \"dur\": 0.041158893872035904, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.456, \"ph\": \"X\", \"dur\": 0.18933091181136516, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.346, \"ph\": \"X\", \"dur\": 0.3267766725598002, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.238, \"ph\": \"X\", \"dur\": 0.460231267841856, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.095, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.975, \"ph\": \"X\", \"dur\": 0.19856048195236714, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.875, \"ph\": \"X\", \"dur\": 0.3232844027767184, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706248.775, \"ph\": \"X\", \"dur\": 0.44925556280931306, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.613, \"ph\": \"X\", \"dur\": 0.039662206822143685, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.498, \"ph\": \"X\", \"dur\": 0.183593611453445, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.393, \"ph\": \"X\", \"dur\": 0.3125581455858242, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.293, \"ph\": \"X\", \"dur\": 0.43902820130171627, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.144, \"ph\": \"X\", \"dur\": 0.05687410789590415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.029, \"ph\": \"X\", \"dur\": 0.19531766001093398, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.922, \"ph\": \"X\", \"dur\": 0.32977004665958465, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706249.813, \"ph\": \"X\", \"dur\": 0.4642224333082352, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.568, \"ph\": \"X\", \"dur\": 0.07558269601955683, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.467, \"ph\": \"X\", \"dur\": 0.20105496036885415, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.365, \"ph\": \"X\", \"dur\": 0.3285228074513411, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.976, \"ph\": \"X\", \"dur\": 0.08506171400220752, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.869, \"ph\": \"X\", \"dur\": 0.2180174136009659, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706250.77, \"ph\": \"X\", \"dur\": 0.34348967795026325, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.387, \"ph\": \"X\", \"dur\": 0.07408600896966462, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.283, \"ph\": \"X\", \"dur\": 0.2040483344686386, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.181, \"ph\": \"X\", \"dur\": 0.3305183901845307, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.799, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.688, \"ph\": \"X\", \"dur\": 0.18633753771158074, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.585, \"ph\": \"X\", \"dur\": 0.3172976545771495, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.184, \"ph\": \"X\", \"dur\": 0.0513862553796327, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.078, \"ph\": \"X\", \"dur\": 0.18134858087860667, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706251.976, \"ph\": \"X\", \"dur\": 0.3095647714860397, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.672, \"ph\": \"X\", \"dur\": 0.05338183811282232, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.558, \"ph\": \"X\", \"dur\": 0.19082759886125736, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.458, \"ph\": \"X\", \"dur\": 0.3177965502604469, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.361, \"ph\": \"X\", \"dur\": 0.4522489369090975, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.181, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.991, \"ph\": \"X\", \"dur\": 0.267408086247409, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706252.886, \"ph\": \"X\", \"dur\": 0.39936599447957255, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.562, \"ph\": \"X\", \"dur\": 0.05038846401303789, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.46, \"ph\": \"X\", \"dur\": 0.17785631109552483, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.361, \"ph\": \"X\", \"dur\": 0.3015824405532812, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706254.001, \"ph\": \"X\", \"dur\": 0.052384046746227514, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.838, \"ph\": \"X\", \"dur\": 1.105802282028698, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706253.739, \"ph\": \"X\", \"dur\": 1.233020681269536, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.397, \"ph\": \"X\", \"dur\": 0.05837079494579637, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.217, \"ph\": \"X\", \"dur\": 0.2689047732973012, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.057, \"ph\": \"X\", \"dur\": 0.46522022467483004, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.718, \"ph\": \"X\", \"dur\": 0.05537742084601194, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.588, \"ph\": \"X\", \"dur\": 0.2127790089263432, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.978, \"ph\": \"X\", \"dur\": 0.03916331113884628, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706255.883, \"ph\": \"X\", \"dur\": 0.16014551433846697, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995706256.178, \"ph\": \"X\", \"dur\": 0.0518851510629301, \"name\": \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\", \"cat\": \"FEE\"}, {\"pid\": 222321, \"tid\": 222321, \"ts\": 81995705532.107, \"ph\": \"X\", \"dur\": 724.2121901928534, \"name\": \"heap_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:94)\", \"cat\": \"FEE\"}], \"viztracer_metadata\": {\"version\": \"1.1.1\", \"overflow\": false, \"baseTimeNanoseconds\": 1767325615896926966}, \"file_info\": {\"files\": {\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\": [\"# https://github.com/TheAlgorithms/Python\\n\\n\\nimport os\\nimport random\\n\\nfrom viztracer import VizTracer\\n\\n\\ndef merge_sort(collection):\\n    \\\"\\\"\\\"Pure implementation of the merge sort algorithm in Python\\n\\n    :param collection: some mutable ordered collection with heterogeneous\\n    comparable items inside\\n    :return: the same collection ordered by ascending\\n\\n    Examples:\\n    >>> merge_sort([0, 5, 3, 2, 2])\\n    [0, 2, 2, 3, 5]\\n\\n    >>> merge_sort([])\\n    []\\n\\n    >>> merge_sort([-2, -5, -45])\\n    [-45, -5, -2]\\n    \\\"\\\"\\\"\\n\\n    def merge(left, right):\\n        \\\"\\\"\\\"merge left and right\\n        :param left: left collection\\n        :param right: right collection\\n        :return: merge result\\n        \\\"\\\"\\\"\\n        result = []\\n        while left and right:\\n            result.append((left if left[0] <= right[0] else right).pop(0))\\n        return result + left + right\\n\\n    if len(collection) <= 1:\\n        return collection\\n    mid = len(collection) // 2\\n    return merge(merge_sort(collection[:mid]), merge_sort(collection[mid:]))\\n\\n\\ndef quick_sort(collection):\\n    \\\"\\\"\\\"Pure implementation of quick sort algorithm in Python\\n\\n    :param collection: some mutable ordered collection with heterogeneous\\n    comparable items inside\\n    :return: the same collection ordered by ascending\\n\\n    Examples:\\n    >>> quick_sort([0, 5, 3, 2, 2])\\n    [0, 2, 2, 3, 5]\\n\\n    >>> quick_sort([])\\n    []\\n\\n    >>> quick_sort([-2, -5, -45])\\n    [-45, -5, -2]\\n    \\\"\\\"\\\"\\n    length = len(collection)\\n    if length <= 1:\\n        return collection\\n    else:\\n        # Use the last element as the first pivot\\n        pivot = collection.pop()\\n        # Put elements greater than pivot in greater list\\n        # Put elements lesser than pivot in lesser list\\n        greater, lesser = [], []\\n        for element in collection:\\n            if element > pivot:\\n                greater.append(element)\\n            else:\\n                lesser.append(element)\\n        return quick_sort(lesser) + [pivot] + quick_sort(greater)\\n\\n\\ndef heapify(unsorted, index, heap_size):\\n    largest = index\\n    left_index = 2 * index + 1\\n    right_index = 2 * index + 2\\n    if left_index < heap_size and unsorted[left_index] > unsorted[largest]:\\n        largest = left_index\\n\\n    if right_index < heap_size and unsorted[right_index] > unsorted[largest]:\\n        largest = right_index\\n\\n    if largest != index:\\n        unsorted[largest], unsorted[index] = unsorted[index], unsorted[largest]\\n        heapify(unsorted, largest, heap_size)\\n\\n\\ndef heap_sort(unsorted):\\n    \\\"\\\"\\\"\\n    Pure implementation of the heap sort algorithm in Python\\n    :param collection: some mutable ordered collection with heterogeneous\\n    comparable items inside\\n    :return: the same collection ordered by ascending\\n\\n    Examples:\\n    >>> heap_sort([0, 5, 3, 2, 2])\\n    [0, 2, 2, 3, 5]\\n\\n    >>> heap_sort([])\\n    []\\n\\n    >>> heap_sort([-2, -5, -45])\\n    [-45, -5, -2]\\n    \\\"\\\"\\\"\\n    n = len(unsorted)\\n    for i in range(n // 2 - 1, -1, -1):\\n        heapify(unsorted, i, n)\\n    for i in range(n - 1, 0, -1):\\n        unsorted[0], unsorted[i] = unsorted[i], unsorted[0]\\n        heapify(unsorted, 0, i)\\n    return unsorted\\n\\n\\narr1 = [random.randrange(100000) for _ in range(500)]\\narr2 = [random.randrange(100000) for _ in range(500)]\\narr3 = [random.randrange(100000) for _ in range(500)]\\n\\n\\nwith VizTracer(\\n    output_file=os.path.join(\\n        os.path.dirname(__file__), \\\"../\\\", \\\"json/different_sorts.json\\\"\\n    ),\\n    file_info=True,\\n) as _:\\n    merge_sort(arr1)\\n    quick_sort(arr2)\\n    heap_sort(arr3)\\n\", 133]}, \"functions\": {\"merge_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:10)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\", 10], \"merge_sort.<locals>.merge (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:28)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\", 28], \"quick_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:45)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\", 45], \"heapify (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:79)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\", 79], \"heap_sort (/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py:94)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/different_sorts.py\", 94]}}}"
  },
  {
    "path": "example/json/function_args_return.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222294, \"tid\": 222294, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222294, \"tid\": 222294, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229620.478, \"ph\": \"X\", \"dur\": 0.5744784873156823, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229622.563, \"ph\": \"X\", \"dur\": 0.6019177550554674, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"0\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229619.915, \"ph\": \"X\", \"dur\": 3.7392238492670766, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"2\"}, \"return_value\": \"2\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229624.141, \"ph\": \"X\", \"dur\": 0.6545512595381461, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229619.168, \"ph\": \"X\", \"dur\": 6.072309950814439, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"3\"}, \"return_value\": \"3\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229626.138, \"ph\": \"X\", \"dur\": 0.6138912537055554, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229627.097, \"ph\": \"X\", \"dur\": 0.5654983633281163, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"0\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229625.584, \"ph\": \"X\", \"dur\": 2.4151544568781746, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"2\"}, \"return_value\": \"2\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229618.229, \"ph\": \"X\", \"dur\": 9.95496633599403, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"4\"}, \"return_value\": \"5\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229632.119, \"ph\": \"X\", \"dur\": 0.5966793493960539, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229633.105, \"ph\": \"X\", \"dur\": 0.4592335628085849, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"0\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229631.194, \"ph\": \"X\", \"dur\": 2.5997458944003653, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"2\"}, \"return_value\": \"2\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229634.149, \"ph\": \"X\", \"dur\": 0.48018718544623895, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229628.459, \"ph\": \"X\", \"dur\": 6.352938825425878, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"3\"}, \"return_value\": \"3\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229612.594, \"ph\": \"X\", \"dur\": 22.41688395185024, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"5\"}, \"return_value\": \"8\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229637.038, \"ph\": \"X\", \"dur\": 0.5210966391673731, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229637.903, \"ph\": \"X\", \"dur\": 0.477692706560804, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"0\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229636.472, \"ph\": \"X\", \"dur\": 2.0774020157902746, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"2\"}, \"return_value\": \"2\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229638.858, \"ph\": \"X\", \"dur\": 0.3891387061278612, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229635.819, \"ph\": \"X\", \"dur\": 3.5945440739118464, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"3\"}, \"return_value\": \"3\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229640.158, \"ph\": \"X\", \"dur\": 0.4440172416074314, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"1\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229640.855, \"ph\": \"X\", \"dur\": 2.7875801544736216, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"0\"}, \"return_value\": \"1\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229639.632, \"ph\": \"X\", \"dur\": 4.293497057610735, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"2\"}, \"return_value\": \"2\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229635.265, \"ph\": \"X\", \"dur\": 8.957923125485657, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"4\"}, \"return_value\": \"5\"}, \"cat\": \"FEE\"}, {\"pid\": 222294, \"tid\": 222294, \"ts\": 81995229607.272, \"ph\": \"X\", \"dur\": 37.17546827752647, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\", \"args\": {\"func_args\": {\"n\": \"6\"}, \"return_value\": \"13\"}, \"cat\": \"FEE\"}], \"viztracer_metadata\": {\"version\": \"1.1.1\", \"overflow\": false, \"baseTimeNanoseconds\": 1767325615896926966}, \"file_info\": {\"files\": {\"/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py\": [\"import os\\n\\nfrom viztracer import VizTracer\\n\\n\\ndef fib(n):\\n    if n < 2:\\n        return 1\\n    return fib(n - 1) + fib(n - 2)\\n\\n\\nwith VizTracer(\\n    log_func_args=True,\\n    log_func_retval=True,\\n    file_info=True,\\n    output_file=os.path.join(\\n        os.path.dirname(__file__), \\\"../\\\", \\\"json/function_args_return.json\\\"\\n    ),\\n):\\n    fib(6)\\n\", 20]}, \"functions\": {\"fib (/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py:6)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/function_args_return.py\", 6]}}}"
  },
  {
    "path": "example/json/gradient_descent.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222296, \"tid\": 222296, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222296, \"tid\": 222296, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343917.952, \"ph\": \"X\", \"dur\": 0.2529401072179102, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343923.908, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343923.708, \"ph\": \"X\", \"dur\": 2.9818994493914186, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343922.786, \"ph\": \"X\", \"dur\": 4.022096931737263, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343927.498, \"ph\": \"X\", \"dur\": 0.19656489594449036, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343921.926, \"ph\": \"X\", \"dur\": 5.829845410049091, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343928.72, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343928.526, \"ph\": \"X\", \"dur\": 0.7074340671301709, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343928.1, \"ph\": \"X\", \"dur\": 1.203835263741257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343929.414, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343928.004, \"ph\": \"X\", \"dur\": 1.572519167555923, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343930.072, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343929.998, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343929.804, \"ph\": \"X\", \"dur\": 0.5792178786587648, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343930.464, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343929.737, \"ph\": \"X\", \"dur\": 0.83589970343907, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.053, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.026, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343930.746, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.305, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343930.697, \"ph\": \"X\", \"dur\": 0.6767519831185309, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.546, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.52, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.469, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.778, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343931.428, \"ph\": \"X\", \"dur\": 0.4098427970010123, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343920.777, \"ph\": \"X\", \"dur\": 11.108161651401144, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343919.57, \"ph\": \"X\", \"dur\": 13.035395643872123, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343932.842, \"ph\": \"X\", \"dur\": 0.4138339624009004, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.733, \"ph\": \"X\", \"dur\": 0.06834870747308422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.706, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.643, \"ph\": \"X\", \"dur\": 0.37965960866435833, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.069, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.578, \"ph\": \"X\", \"dur\": 0.5607587386842822, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.586, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.561, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.512, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.823, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343935.462, \"ph\": \"X\", \"dur\": 0.41907236698825356, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343936.436, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343936.41, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343936.364, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343936.765, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343936.294, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343937.168, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343937.143, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343937.094, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343938.506, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343937.054, \"ph\": \"X\", \"dur\": 1.5251240784322515, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343938.873, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343938.85, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343938.792, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343939.161, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343938.743, \"ph\": \"X\", \"dur\": 0.4737014433992223, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.316, \"ph\": \"X\", \"dur\": 5.02612447764662, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343934.174, \"ph\": \"X\", \"dur\": 5.371609732574436, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343939.693, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.679, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.656, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.608, \"ph\": \"X\", \"dur\": 0.3462335984402952, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.002, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.541, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.335, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.311, \"ph\": \"X\", \"dur\": 0.18334416055736094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.263, \"ph\": \"X\", \"dur\": 0.26017409450520745, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.572, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.224, \"ph\": \"X\", \"dur\": 0.4038560489011801, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.894, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.87, \"ph\": \"X\", \"dur\": 0.18084968218243086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.822, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.147, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343941.78, \"ph\": \"X\", \"dur\": 0.42231518887566266, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.481, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.457, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.409, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.734, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.369, \"ph\": \"X\", \"dur\": 0.4170767842883095, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343943.005, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.981, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.934, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343943.25, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343942.895, \"ph\": \"X\", \"dur\": 0.4083461099760542, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.33, \"ph\": \"X\", \"dur\": 3.0564843528018284, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343940.247, \"ph\": \"X\", \"dur\": 3.2478108441589653, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343943.595, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.175, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.151, \"ph\": \"X\", \"dur\": 0.17810575597000777, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.102, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.402, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.047, \"ph\": \"X\", \"dur\": 0.4113394840259703, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.652, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.628, \"ph\": \"X\", \"dur\": 0.247452254793064, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.582, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.95, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343944.541, \"ph\": \"X\", \"dur\": 1.325316360600352, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.212, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.188, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.08, \"ph\": \"X\", \"dur\": 0.41333506672591436, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.546, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.042, \"ph\": \"X\", \"dur\": 0.5669949346216074, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.889, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.861, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.808, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.135, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343946.755, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.455, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.427, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.364, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.739, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.308, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343943.924, \"ph\": \"X\", \"dur\": 3.954496567776657, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343943.854, \"ph\": \"X\", \"dur\": 4.093688461097756, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343947.991, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343948.894, \"ph\": \"X\", \"dur\": 1.1319942865432706, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343972.573, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 7.303035362031936}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343977.077, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343979.723, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343984.446, \"ph\": \"X\", \"dur\": 0.6660257261063316, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343985.75, \"ph\": \"X\", \"dur\": 10.703058363312497, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343983.586, \"ph\": \"X\", \"dur\": 12.943349391837204, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343997.055, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343997.28, \"ph\": \"X\", \"dur\": 1.2512303528649287, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343996.653, \"ph\": \"X\", \"dur\": 1.9219955878836272, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343998.76, \"ph\": \"X\", \"dur\": 0.3631960513898198, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343998.639, \"ph\": \"X\", \"dur\": 0.5734805783964256, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343999.345, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343999.251, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343999.524, \"ph\": \"X\", \"dur\": 0.11050539200940258, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344000.002, \"ph\": \"X\", \"dur\": 1.3160867906131106, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344004.96, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344008.302, \"ph\": \"X\", \"dur\": 4.440171507375544, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344027.845, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344033.133, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344035.778, \"ph\": \"X\", \"dur\": 0.5597609473343101, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344043.996, \"ph\": \"X\", \"dur\": 17.29122519934033, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344043.398, \"ph\": \"X\", \"dur\": 18.046054355594176, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344036.816, \"ph\": \"X\", \"dur\": 24.995421660311887, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344032.826, \"ph\": \"X\", \"dur\": 29.11779662272134, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344029.708, \"ph\": \"X\", \"dur\": 32.444432983528095, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344066.614, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344068.711, \"ph\": \"X\", \"dur\": 0.14692477628338177, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344069.907, \"ph\": \"X\", \"dur\": 0.1731167992201476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344070.958, \"ph\": \"X\", \"dur\": 1.259711579339691, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344070.757, \"ph\": \"X\", \"dur\": 1.513649477907573, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344070.222, \"ph\": \"X\", \"dur\": 2.155977659452069, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344068.523, \"ph\": \"X\", \"dur\": 3.919324422690143, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344067.977, \"ph\": \"X\", \"dur\": 4.553919721272356, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344074.542, \"ph\": \"X\", \"dur\": 1.4739872717461846, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344077.923, \"ph\": \"X\", \"dur\": 1.1015616503691237, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344079.884, \"ph\": \"X\", \"dur\": 1.0347096299209975, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344077.063, \"ph\": \"X\", \"dur\": 4.047790058999042, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344100.99, \"ph\": \"X\", \"dur\": 2.742180077560638, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344103.955, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344125.116, \"ph\": \"X\", \"dur\": 0.6550500212566391, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344124.579, \"ph\": \"X\", \"dur\": 1.2809146455265965, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343981.534, \"ph\": \"X\", \"dur\": 145.9564197782339, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344128.115, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344128.915, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344130.459, \"ph\": \"X\", \"dur\": 1.9379602494831798, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344128.849, \"ph\": \"X\", \"dur\": 3.7289957226829777, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344128.403, \"ph\": \"X\", \"dur\": 4.325924397803747, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343978.588, \"ph\": \"X\", \"dur\": 154.8033367827609, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344134.365, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344135.549, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344135.458, \"ph\": \"X\", \"dur\": 0.9384227646486965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344135.314, \"ph\": \"X\", \"dur\": 1.143468887067949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344136.57, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344135.219, \"ph\": \"X\", \"dur\": 1.5839937680806013, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.158, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.135, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.039, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.646, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344136.988, \"ph\": \"X\", \"dur\": 0.7518357822039263, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.012, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.989, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.914, \"ph\": \"X\", \"dur\": 0.41233727537594234, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.373, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344137.862, \"ph\": \"X\", \"dur\": 0.6031648710580936, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.668, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.644, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.571, \"ph\": \"X\", \"dur\": 0.39088476135154365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.009, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344138.525, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.275, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.245, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.197, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.541, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344139.158, \"ph\": \"X\", \"dur\": 1.6812784247028745, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344134.937, \"ph\": \"X\", \"dur\": 5.967041720670247, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344134.821, \"ph\": \"X\", \"dur\": 6.283591026448874, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.234, \"ph\": \"X\", \"dur\": 0.08730674312255284, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.018, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.991, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.94, \"ph\": \"X\", \"dur\": 0.4155800972633515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.426, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.893, \"ph\": \"X\", \"dur\": 0.5944341967458382, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.867, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.84, \"ph\": \"X\", \"dur\": 0.4185734713132676, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.785, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.336, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344142.744, \"ph\": \"X\", \"dur\": 0.6550500212566391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.658, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.633, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.584, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.969, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344143.546, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.23, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.205, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.155, \"ph\": \"X\", \"dur\": 0.36544108192725683, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.569, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.11, \"ph\": \"X\", \"dur\": 0.5230921152228379, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.827, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.801, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.752, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.099, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344144.712, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.73, \"ph\": \"X\", \"dur\": 3.583318185587061, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344141.636, \"ph\": \"X\", \"dur\": 3.761673389394562, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.49, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.06, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.03, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.94, \"ph\": \"X\", \"dur\": 0.36219826003984773, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.349, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.894, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.626, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.602, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.554, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.93, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344146.513, \"ph\": \"X\", \"dur\": 0.48093543068651956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344147.199, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344147.174, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344147.123, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344147.464, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344147.081, \"ph\": \"X\", \"dur\": 1.4477952488094188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344148.771, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344148.74, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344148.687, \"ph\": \"X\", \"dur\": 0.36569052976474986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.103, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344148.64, \"ph\": \"X\", \"dur\": 0.5330700287225583, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.416, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.359, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.308, \"ph\": \"X\", \"dur\": 0.37117838218959603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.731, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.261, \"ph\": \"X\", \"dur\": 0.5375600897974324, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.753, \"ph\": \"X\", \"dur\": 4.120129931872015, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344145.709, \"ph\": \"X\", \"dur\": 4.2219046495691614, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344149.976, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.361, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.331, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.277, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.654, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.227, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.977, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.949, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.895, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344151.385, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.849, \"ph\": \"X\", \"dur\": 0.6143900237452788, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344151.682, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344151.658, \"ph\": \"X\", \"dur\": 0.4564895426122048, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344151.607, \"ph\": \"X\", \"dur\": 0.5378095376349253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.196, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344151.563, \"ph\": \"X\", \"dur\": 0.6969572579554646, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.47, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.448, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.38, \"ph\": \"X\", \"dur\": 0.41907236698825356, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.848, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.336, \"ph\": \"X\", \"dur\": 0.5749772654213836, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344153.109, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344153.085, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344153.037, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344153.398, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344152.995, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.132, \"ph\": \"X\", \"dur\": 3.416687030141732, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344150.085, \"ph\": \"X\", \"dur\": 3.5229518089137533, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344153.636, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344154.017, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344166.232, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 7.174297051652697}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344167.037, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344167.645, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344168.638, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344209.842, \"ph\": \"X\", \"dur\": 2.1756840386140164, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344168.484, \"ph\": \"X\", \"dur\": 43.655117696138866, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344212.674, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344212.996, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344212.436, \"ph\": \"X\", \"dur\": 0.8528621563885946, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344213.415, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344213.356, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344213.793, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344213.661, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344213.98, \"ph\": \"X\", \"dur\": 0.12422502307151802, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344214.566, \"ph\": \"X\", \"dur\": 0.1823463692073889, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344215.792, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344216.902, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344219.306, \"ph\": \"X\", \"dur\": 0.10002858283469623, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344220.529, \"ph\": \"X\", \"dur\": 0.12721839712143412, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344221.519, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344223.179, \"ph\": \"X\", \"dur\": 2.1622138553893944, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344223.008, \"ph\": \"X\", \"dur\": 2.3976926139827937, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344222.007, \"ph\": \"X\", \"dur\": 3.6097596563613203, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344220.329, \"ph\": \"X\", \"dur\": 5.3983006511861875, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344219.779, \"ph\": \"X\", \"dur\": 6.1276861280157435, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344227.237, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344227.748, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344228.182, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344228.95, \"ph\": \"X\", \"dur\": 0.6325997158822685, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344228.892, \"ph\": \"X\", \"dur\": 0.7171625327923983, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344228.337, \"ph\": \"X\", \"dur\": 1.3729608975615164, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344227.698, \"ph\": \"X\", \"dur\": 2.067423677142051, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344227.403, \"ph\": \"X\", \"dur\": 2.4598051255185527, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344230.544, \"ph\": \"X\", \"dur\": 0.1389424454836055, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344231.365, \"ph\": \"X\", \"dur\": 0.4038560489011801, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344232.066, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344231.129, \"ph\": \"X\", \"dur\": 1.4056385642731006, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344234.184, \"ph\": \"X\", \"dur\": 0.618381189145167, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344235.001, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344240.865, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344240.714, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344167.863, \"ph\": \"X\", \"dur\": 74.35790587829078, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344242.712, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344243.409, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344244.252, \"ph\": \"X\", \"dur\": 1.3130934165631944, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344243.354, \"ph\": \"X\", \"dur\": 2.3428140897343317, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344242.954, \"ph\": \"X\", \"dur\": 2.8227517290708795, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344167.366, \"ph\": \"X\", \"dur\": 78.89486314661362, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344246.999, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344248.289, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344248.23, \"ph\": \"X\", \"dur\": 1.9050331349341028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344248.066, \"ph\": \"X\", \"dur\": 2.121304410040541, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344250.318, \"ph\": \"X\", \"dur\": 0.10526698742204942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344247.987, \"ph\": \"X\", \"dur\": 2.5733038915778716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344250.935, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344250.907, \"ph\": \"X\", \"dur\": 0.38215408703928844, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344250.831, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344251.372, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344250.734, \"ph\": \"X\", \"dur\": 0.6987033928179156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344251.672, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344251.645, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344251.593, \"ph\": \"X\", \"dur\": 0.38165519136430237, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.024, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344251.549, \"ph\": \"X\", \"dur\": 0.5430479422222786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.292, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.268, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.21, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.57, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.165, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.817, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.793, \"ph\": \"X\", \"dur\": 0.23223593670599052, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.741, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.105, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344252.699, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344247.575, \"ph\": \"X\", \"dur\": 5.647997936516689, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344247.418, \"ph\": \"X\", \"dur\": 5.9071742396719245, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.436, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.05, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.013, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.964, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.364, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.923, \"ph\": \"X\", \"dur\": 0.5076263492982714, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.804, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.777, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.72, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.129, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344254.667, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.465, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.438, \"ph\": \"X\", \"dur\": 0.2384721326433157, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.387, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.756, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.341, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344256.029, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344256.002, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.956, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344256.309, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344255.912, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344257.888, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344257.859, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344257.795, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.229, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344257.741, \"ph\": \"X\", \"dur\": 0.556518125446901, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.779, \"ph\": \"X\", \"dur\": 4.58834352284639, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344253.727, \"ph\": \"X\", \"dur\": 4.731027685892392, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.53, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.017, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.996, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.924, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.291, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.879, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.563, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.539, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.49, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.828, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.449, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.121, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.096, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.043, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.393, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344259.995, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.701, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.675, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.628, \"ph\": \"X\", \"dur\": 0.3043263617414698, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.977, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344260.586, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.241, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.219, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.17, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.496, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.129, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.766, \"ph\": \"X\", \"dur\": 2.8499415433576174, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344258.72, \"ph\": \"X\", \"dur\": 2.9345043602677467, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.685, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.043, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.018, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.97, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.299, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.925, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.57, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.543, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.496, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.852, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344262.453, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.222, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.194, \"ph\": \"X\", \"dur\": 0.2626685728801375, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.134, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.544, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.057, \"ph\": \"X\", \"dur\": 0.5512797208595479, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.828, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.8, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.746, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.112, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344264.697, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.369, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.344, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.297, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.706, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.256, \"ph\": \"X\", \"dur\": 0.5113680668606665, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.824, \"ph\": \"X\", \"dur\": 4.01112122688757, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344261.781, \"ph\": \"X\", \"dur\": 4.1196310361970285, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344265.954, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344266.224, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344278.175, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 7.044744693890847}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344278.986, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344279.478, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344280.105, \"ph\": \"X\", \"dur\": 0.18484084758231897, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344280.403, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344279.973, \"ph\": \"X\", \"dur\": 0.8830453447252485, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344280.968, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.064, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344280.898, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.403, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.373, \"ph\": \"X\", \"dur\": 0.154657659245665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.659, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.557, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344281.788, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344282.037, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344282.521, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344283.035, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344284.204, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344284.758, \"ph\": \"X\", \"dur\": 0.09354293905987804, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344285.213, \"ph\": \"X\", \"dur\": 0.10401974823458437, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344286.154, \"ph\": \"X\", \"dur\": 0.8521138128761157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344286.064, \"ph\": \"X\", \"dur\": 1.0184955204839519, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344285.599, \"ph\": \"X\", \"dur\": 1.604199042917535, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344284.686, \"ph\": \"X\", \"dur\": 2.59974536235213, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344284.409, \"ph\": \"X\", \"dur\": 2.9784071796665166, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344288.291, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344288.659, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344288.926, \"ph\": \"X\", \"dur\": 0.06261140721074503, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344290.682, \"ph\": \"X\", \"dur\": 0.5567675732843941, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344290.632, \"ph\": \"X\", \"dur\": 0.6333480593947476, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344290.294, \"ph\": \"X\", \"dur\": 1.045186439095704, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344288.609, \"ph\": \"X\", \"dur\": 2.7973080496465927, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344288.453, \"ph\": \"X\", \"dur\": 3.0078420244906914, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344291.959, \"ph\": \"X\", \"dur\": 0.11973496199664388, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344292.479, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344292.911, \"ph\": \"X\", \"dur\": 0.13545017575870338, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344292.329, \"ph\": \"X\", \"dur\": 0.831409642364196, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344293.613, \"ph\": \"X\", \"dur\": 0.32054047117851536, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344294.05, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344297.511, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344297.398, \"ph\": \"X\", \"dur\": 0.39662206161388286, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344279.65, \"ph\": \"X\", \"dur\": 18.532477638705544, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344298.53, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344299.029, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344299.624, \"ph\": \"X\", \"dur\": 0.9389216603236824, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344298.964, \"ph\": \"X\", \"dur\": 1.722686765726714, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344298.713, \"ph\": \"X\", \"dur\": 2.037240488805397, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344279.288, \"ph\": \"X\", \"dur\": 21.798498175001495, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344301.534, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344302.265, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344302.226, \"ph\": \"X\", \"dur\": 0.4215668453631837, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344302.163, \"ph\": \"X\", \"dur\": 0.5437962857347576, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344302.774, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344302.098, \"ph\": \"X\", \"dur\": 0.7727894005533391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.12, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.097, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.046, \"ph\": \"X\", \"dur\": 0.32103936685350143, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.414, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.004, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.747, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.718, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.665, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.021, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344303.586, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.264, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.24, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.19, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.527, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.147, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.814, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.788, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.738, \"ph\": \"X\", \"dur\": 0.2843705347420292, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344305.07, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344304.694, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344301.9, \"ph\": \"X\", \"dur\": 5.485357946471248, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344301.835, \"ph\": \"X\", \"dur\": 5.629289348704713, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344307.554, \"ph\": \"X\", \"dur\": 0.06211251153575901, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.121, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.097, \"ph\": \"X\", \"dur\": 0.25443679424286825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.023, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.435, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344307.976, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.756, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.732, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.68, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.047, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344308.64, \"ph\": \"X\", \"dur\": 0.47195530853677126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.313, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.29, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.241, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.601, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.198, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.858, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.835, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.787, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.15, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344309.745, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.439, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.414, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.368, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.733, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.309, \"ph\": \"X\", \"dur\": 0.48367935689894265, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344307.825, \"ph\": \"X\", \"dur\": 3.03677797363988, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344307.773, \"ph\": \"X\", \"dur\": 3.1345615259371398, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344310.937, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.297, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.273, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.223, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.55, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.186, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.852, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.83, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.782, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.108, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.722, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.36, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.335, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.288, \"ph\": \"X\", \"dur\": 0.38340132622675344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.724, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.245, \"ph\": \"X\", \"dur\": 0.617383397795195, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344313.111, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344313.085, \"ph\": \"X\", \"dur\": 1.2724334190518343, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344313.04, \"ph\": \"X\", \"dur\": 1.3437755005748344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344314.449, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344312.977, \"ph\": \"X\", \"dur\": 1.5682785543185418, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344314.796, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344314.769, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344314.722, \"ph\": \"X\", \"dur\": 0.37267506921455407, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.144, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344314.669, \"ph\": \"X\", \"dur\": 0.5577653646343661, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.092, \"ph\": \"X\", \"dur\": 4.205939987969609, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344311.051, \"ph\": \"X\", \"dur\": 4.294493970279627, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.377, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.782, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.753, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.694, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.133, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.645, \"ph\": \"X\", \"dur\": 0.5679927259715793, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.483, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.455, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.4, \"ph\": \"X\", \"dur\": 0.37591789110196316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.843, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344316.325, \"ph\": \"X\", \"dur\": 0.6081538278079537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.16, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.132, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.074, \"ph\": \"X\", \"dur\": 0.37317396488954013, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.507, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.023, \"ph\": \"X\", \"dur\": 0.5642510084091842, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.842, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.811, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.758, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.15, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344317.689, \"ph\": \"X\", \"dur\": 0.5293283111601631, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.465, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.441, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.356, \"ph\": \"X\", \"dur\": 0.3856463567641905, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.799, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344318.308, \"ph\": \"X\", \"dur\": 0.556268677609408, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.526, \"ph\": \"X\", \"dur\": 3.4057113252920392, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344315.485, \"ph\": \"X\", \"dur\": 3.490274142202169, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344319.008, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344319.222, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344328.872, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.916156238587382}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344329.321, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344329.712, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344330.153, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344330.302, \"ph\": \"X\", \"dur\": 0.3983681964763339, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344330.07, \"ph\": \"X\", \"dur\": 0.677749774468503, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344331.815, \"ph\": \"X\", \"dur\": 0.1020241655346403, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344331.973, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344331.752, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.315, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.265, \"ph\": \"X\", \"dur\": 0.16862673814527346, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.551, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.483, \"ph\": \"X\", \"dur\": 0.17835520380750078, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.694, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344332.893, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344333.199, \"ph\": \"X\", \"dur\": 0.017710796462003575, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344333.538, \"ph\": \"X\", \"dur\": 0.1516642851957489, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344334.443, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344334.928, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344335.371, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344336.112, \"ph\": \"X\", \"dur\": 0.6555489169316253, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344336.023, \"ph\": \"X\", \"dur\": 0.77204105704086, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344335.652, \"ph\": \"X\", \"dur\": 1.2467402917900545, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344334.895, \"ph\": \"X\", \"dur\": 2.067922572817037, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344334.613, \"ph\": \"X\", \"dur\": 2.4161517539572763, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344337.684, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.064, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.338, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.978, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.938, \"ph\": \"X\", \"dur\": 0.5986748099832193, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.504, \"ph\": \"X\", \"dur\": 1.1132856987312951, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344338.032, \"ph\": \"X\", \"dur\": 1.6416162185414862, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344337.836, \"ph\": \"X\", \"dur\": 1.8933090865719313, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344340.084, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344340.477, \"ph\": \"X\", \"dur\": 0.16263999004544127, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344340.815, \"ph\": \"X\", \"dur\": 0.10002858283469623, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344340.368, \"ph\": \"X\", \"dur\": 0.6318513723697895, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344341.34, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344341.741, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344344.703, \"ph\": \"X\", \"dur\": 0.17162011219518955, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344344.562, \"ph\": \"X\", \"dur\": 0.3736728605645261, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344329.84, \"ph\": \"X\", \"dur\": 15.391430468993585, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344345.496, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344345.947, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344346.384, \"ph\": \"X\", \"dur\": 0.6924671968805904, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344345.895, \"ph\": \"X\", \"dur\": 1.2492347701649844, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344345.688, \"ph\": \"X\", \"dur\": 1.540090948681832, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344329.529, \"ph\": \"X\", \"dur\": 17.934052276559818, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344347.817, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.498, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.429, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.34, \"ph\": \"X\", \"dur\": 0.6253657285949713, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.038, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.297, \"ph\": \"X\", \"dur\": 1.85339743257305, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.45, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.403, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.332, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.846, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344350.282, \"ph\": \"X\", \"dur\": 0.6550500212566391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.162, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.136, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.086, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.498, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.043, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.739, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.714, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.664, \"ph\": \"X\", \"dur\": 0.31954267982854334, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.032, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344351.623, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.304, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.28, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.231, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.559, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.189, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.125, \"ph\": \"X\", \"dur\": 4.54020009021024, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344348.068, \"ph\": \"X\", \"dur\": 4.663676769769279, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.785, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.228, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.203, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.154, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.506, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.109, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.804, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.78, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.73, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.054, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.69, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.351, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.328, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.28, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.597, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.24, \"ph\": \"X\", \"dur\": 0.4200701583382256, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.86, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.833, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.788, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344355.116, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344354.746, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344355.385, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344355.362, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344355.315, \"ph\": \"X\", \"dur\": 1.1913628718666067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344356.573, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344355.271, \"ph\": \"X\", \"dur\": 1.3722125540490373, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344353.007, \"ph\": \"X\", \"dur\": 3.7250045572830897, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344352.963, \"ph\": \"X\", \"dur\": 3.8085695828432478, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344356.808, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.239, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.207, \"ph\": \"X\", \"dur\": 0.40684942295109616, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.154, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.694, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.112, \"ph\": \"X\", \"dur\": 0.6650279347563595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.013, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.984, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.93, \"ph\": \"X\", \"dur\": 0.39288034405148775, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.372, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344357.883, \"ph\": \"X\", \"dur\": 0.556518125446901, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.662, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.631, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.58, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.957, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344358.531, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.338, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.309, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.256, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.649, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.208, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.997, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.968, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.916, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.276, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344359.873, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344356.987, \"ph\": \"X\", \"dur\": 3.4351461701162145, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344356.939, \"ph\": \"X\", \"dur\": 3.559870088862718, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.554, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.91, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.883, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.831, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.211, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.79, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.524, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.493, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.442, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.818, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.399, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344362.109, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344362.082, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344362.033, \"ph\": \"X\", \"dur\": 1.2557204139398026, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.34, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344361.99, \"ph\": \"X\", \"dur\": 1.4221021215476393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.639, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.604, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.555, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.938, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344363.512, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.247, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.216, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.162, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.516, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.116, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.7, \"ph\": \"X\", \"dur\": 3.9385319061771047, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344360.657, \"ph\": \"X\", \"dur\": 4.038809936849294, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.725, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344364.907, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344372.729, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.786494638317054}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.119, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.369, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.869, \"ph\": \"X\", \"dur\": 0.06111472018578698, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.983, \"ph\": \"X\", \"dur\": 0.36369494706480576, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.791, \"ph\": \"X\", \"dur\": 0.5896946878334711, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344374.464, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344374.6, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344374.414, \"ph\": \"X\", \"dur\": 0.4185734713132676, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344374.909, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344374.879, \"ph\": \"X\", \"dur\": 0.10676367444700746, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.063, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.019, \"ph\": \"X\", \"dur\": 0.13744575845864745, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.199, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.372, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.702, \"ph\": \"X\", \"dur\": 0.017960244299496584, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344375.944, \"ph\": \"X\", \"dur\": 0.13545017575870338, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344376.754, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344377.125, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344377.477, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344378.063, \"ph\": \"X\", \"dur\": 0.5969286751207684, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344377.983, \"ph\": \"X\", \"dur\": 0.7199064590048214, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344377.753, \"ph\": \"X\", \"dur\": 1.0771157622948089, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344377.093, \"ph\": \"X\", \"dur\": 1.8167286004615777, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344376.923, \"ph\": \"X\", \"dur\": 2.093116804403831, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344379.715, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344380.028, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344380.365, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344380.828, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344380.795, \"ph\": \"X\", \"dur\": 0.5689905173215515, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344380.483, \"ph\": \"X\", \"dur\": 1.9529271197327602, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344379.997, \"ph\": \"X\", \"dur\": 2.4907366573676857, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344379.848, \"ph\": \"X\", \"dur\": 2.693787197086994, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344382.849, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344383.203, \"ph\": \"X\", \"dur\": 0.14143692385853557, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344383.459, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344383.096, \"ph\": \"X\", \"dur\": 0.5380589854724184, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344384.047, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344384.38, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344387.237, \"ph\": \"X\", \"dur\": 0.12023385767162989, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344387.132, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.493, \"ph\": \"X\", \"dur\": 14.253698882187974, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344388.073, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344388.436, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344388.977, \"ph\": \"X\", \"dur\": 0.58545407459609, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344388.404, \"ph\": \"X\", \"dur\": 1.209323116166103, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344388.221, \"ph\": \"X\", \"dur\": 1.4562764752841812, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344373.261, \"ph\": \"X\", \"dur\": 16.614473216221803, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.148, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.771, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.736, \"ph\": \"X\", \"dur\": 0.29534623959172157, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.667, \"ph\": \"X\", \"dur\": 0.3958737181014038, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.137, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.604, \"ph\": \"X\", \"dur\": 0.6238690415700132, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.462, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.436, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.386, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.753, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.345, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.037, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.014, \"ph\": \"X\", \"dur\": 0.21128231835657785, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.962, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.297, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344391.921, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.544, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.52, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.469, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.813, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344392.421, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344393.189, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344393.149, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344393.08, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344393.451, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344393.033, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.435, \"ph\": \"X\", \"dur\": 3.1338131824246607, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344390.388, \"ph\": \"X\", \"dur\": 3.2400779611966817, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.403, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.959, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.934, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.852, \"ph\": \"X\", \"dur\": 0.38614525243917647, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.304, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.803, \"ph\": \"X\", \"dur\": 0.5649993519216633, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.647, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.621, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.571, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.922, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344396.531, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.212, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.187, \"ph\": \"X\", \"dur\": 0.2639158120676025, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.14, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.522, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.087, \"ph\": \"X\", \"dur\": 0.5248382500852891, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.862, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.834, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.784, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.129, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344397.742, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.409, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.383, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.334, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.693, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.29, \"ph\": \"X\", \"dur\": 0.4649707690869671, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.64, \"ph\": \"X\", \"dur\": 3.1707314623736256, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344395.588, \"ph\": \"X\", \"dur\": 3.2587865490086574, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344398.886, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.306, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.282, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.229, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.6, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.187, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.936, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.91, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.861, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.19, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.821, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.451, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.427, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.376, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.74, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.335, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.992, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.965, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.914, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.244, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344400.869, \"ph\": \"X\", \"dur\": 1.4722411368837338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.543, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.513, \"ph\": \"X\", \"dur\": 0.2631674685551236, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.463, \"ph\": \"X\", \"dur\": 0.34398856790285814, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.871, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344402.418, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.056, \"ph\": \"X\", \"dur\": 3.939529697527077, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344399.011, \"ph\": \"X\", \"dur\": 4.025589201462164, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.07, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.453, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.425, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.369, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.753, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.327, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.041, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.013, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.964, \"ph\": \"X\", \"dur\": 0.36045212517739667, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.374, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.922, \"ph\": \"X\", \"dur\": 0.5128647538856246, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.625, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.598, \"ph\": \"X\", \"dur\": 0.2222580232062702, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.553, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.902, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344404.509, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.154, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.129, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.08, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.411, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.038, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.662, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.638, \"ph\": \"X\", \"dur\": 0.2611718858551795, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.589, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.972, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344405.546, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.215, \"ph\": \"X\", \"dur\": 2.8773808054818484, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344403.17, \"ph\": \"X\", \"dur\": 2.9582019048295827, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344406.157, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344406.303, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344413.711, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.65810241005916}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344413.987, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.202, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.54, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.717, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.487, \"ph\": \"X\", \"dur\": 0.6193789804951391, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344415.229, \"ph\": \"X\", \"dur\": 0.08680784744756681, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344416.301, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344415.157, \"ph\": \"X\", \"dur\": 1.396658442123352, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344416.669, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344416.609, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344416.914, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344416.866, \"ph\": \"X\", \"dur\": 0.13021177117135022, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344417.034, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344417.159, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344417.439, \"ph\": \"X\", \"dur\": 0.020454722674426662, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344417.743, \"ph\": \"X\", \"dur\": 0.12023385767162989, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344418.448, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344418.801, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344419.102, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344419.716, \"ph\": \"X\", \"dur\": 0.5886968964834991, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344419.636, \"ph\": \"X\", \"dur\": 0.7069351714551849, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344419.339, \"ph\": \"X\", \"dur\": 1.114283490081267, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344418.77, \"ph\": \"X\", \"dur\": 1.7179472568143468, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344418.613, \"ph\": \"X\", \"dur\": 1.944445893257998, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.166, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.453, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.758, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344422.288, \"ph\": \"X\", \"dur\": 0.4215668453631837, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344422.259, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.907, \"ph\": \"X\", \"dur\": 0.89476939308742, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.419, \"ph\": \"X\", \"dur\": 1.416863716960286, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344421.274, \"ph\": \"X\", \"dur\": 1.6151747477672271, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344423.134, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344423.52, \"ph\": \"X\", \"dur\": 0.08456281691012973, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344423.69, \"ph\": \"X\", \"dur\": 0.07433545557291642, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344423.371, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344424.209, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344424.547, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344427.095, \"ph\": \"X\", \"dur\": 0.12422502307151802, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344426.969, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.313, \"ph\": \"X\", \"dur\": 13.199033425267537, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344427.716, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344428.052, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344428.466, \"ph\": \"X\", \"dur\": 0.552526960047013, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344428.02, \"ph\": \"X\", \"dur\": 1.0950760065943055, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344427.867, \"ph\": \"X\", \"dur\": 1.297627650638628, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344414.114, \"ph\": \"X\", \"dur\": 15.262216489172205, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344429.563, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344430.175, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344430.149, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344430.065, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344430.55, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344430.018, \"ph\": \"X\", \"dur\": 0.6034143188955866, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344431.92, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344431.893, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344431.835, \"ph\": \"X\", \"dur\": 0.33500844575310984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.228, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344431.783, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.535, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.508, \"ph\": \"X\", \"dur\": 0.2561829291053193, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.455, \"ph\": \"X\", \"dur\": 0.3362556849405749, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.845, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.407, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.09, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.066, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.016, \"ph\": \"X\", \"dur\": 0.29434844824174955, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.362, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344432.974, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.604, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.58, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.532, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.879, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344433.488, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344429.831, \"ph\": \"X\", \"dur\": 4.15954269019591, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344429.781, \"ph\": \"X\", \"dur\": 4.258074586005647, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.087, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.469, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.445, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.395, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.728, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.352, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.036, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.013, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.964, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.29, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.918, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.581, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.557, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.514, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.83, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.469, \"ph\": \"X\", \"dur\": 0.42081850185070463, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.084, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.06, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.014, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.337, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344435.972, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.614, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.59, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.543, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344437.756, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344436.501, \"ph\": \"X\", \"dur\": 1.3634818797367823, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.263, \"ph\": \"X\", \"dur\": 3.665635971959754, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344434.222, \"ph\": \"X\", \"dur\": 3.7487021018449256, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.005, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.412, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.385, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.333, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.689, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.288, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.971, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.945, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.896, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.312, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.855, \"ph\": \"X\", \"dur\": 0.524339354410303, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.587, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.564, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.497, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.853, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344439.454, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.141, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.113, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.064, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.396, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.023, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.652, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.627, \"ph\": \"X\", \"dur\": 0.24046771534325978, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.579, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.942, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344440.531, \"ph\": \"X\", \"dur\": 0.4746992347491944, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.17, \"ph\": \"X\", \"dur\": 2.8933454670814007, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344438.113, \"ph\": \"X\", \"dur\": 3.028546195002611, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.197, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.587, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.558, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.504, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.887, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.459, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.158, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.134, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.086, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.426, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.041, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.677, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.653, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.604, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.99, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344442.559, \"ph\": \"X\", \"dur\": 1.573267511068402, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.374, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.344, \"ph\": \"X\", \"dur\": 0.2649136034175746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.289, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.691, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.243, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.99, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.965, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.887, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344445.302, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344444.842, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.368, \"ph\": \"X\", \"dur\": 4.062258033573636, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344441.304, \"ph\": \"X\", \"dur\": 4.179747965032843, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344445.522, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344445.663, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344452.665, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.528296885308971}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344452.933, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.177, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.52, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.655, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.476, \"ph\": \"X\", \"dur\": 0.555021438421943, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.117, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.219, \"ph\": \"X\", \"dur\": 0.1698739773327385, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.064, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.519, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.478, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.655, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.623, \"ph\": \"X\", \"dur\": 0.09379238689737104, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.758, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344454.864, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344455.058, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344455.308, \"ph\": \"X\", \"dur\": 0.12247888820906697, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.017, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.313, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.626, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344457.081, \"ph\": \"X\", \"dur\": 0.5240899065728101, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344457.035, \"ph\": \"X\", \"dur\": 0.5951825402583173, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.834, \"ph\": \"X\", \"dur\": 0.8930232582249689, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.28, \"ph\": \"X\", \"dur\": 1.4999298468454576, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344456.132, \"ph\": \"X\", \"dur\": 1.700735356027329, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344458.346, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344458.635, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344458.952, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344459.253, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344459.223, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344459.052, \"ph\": \"X\", \"dur\": 0.7573236346287725, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344458.606, \"ph\": \"X\", \"dur\": 1.2350162434278829, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344458.461, \"ph\": \"X\", \"dur\": 2.6833103879122877, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344461.437, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344461.797, \"ph\": \"X\", \"dur\": 0.10077692634717526, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344461.977, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344461.693, \"ph\": \"X\", \"dur\": 0.4073483186260822, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344462.464, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344462.749, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344465.135, \"ph\": \"X\", \"dur\": 0.12846563630889915, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344465.054, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.29, \"ph\": \"X\", \"dur\": 12.260610660618841, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344465.788, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344466.11, \"ph\": \"X\", \"dur\": 0.07034429017302829, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344466.457, \"ph\": \"X\", \"dur\": 0.5390567768223905, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344466.08, \"ph\": \"X\", \"dur\": 0.9908068105222282, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344465.93, \"ph\": \"X\", \"dur\": 1.2235416429032044, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344453.069, \"ph\": \"X\", \"dur\": 14.273654709187417, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344467.543, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.093, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.054, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344467.986, \"ph\": \"X\", \"dur\": 0.40884500565104026, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.462, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344467.922, \"ph\": \"X\", \"dur\": 0.6158867107702369, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.765, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.741, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.691, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.04, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344468.648, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.333, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.31, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.261, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.619, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.217, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.904, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.873, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.825, \"ph\": \"X\", \"dur\": 0.38439911757672546, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.258, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344469.76, \"ph\": \"X\", \"dur\": 0.5635026648967053, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.546, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.518, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.454, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.804, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.411, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344467.783, \"ph\": \"X\", \"dur\": 3.1278264343248283, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344467.715, \"ph\": \"X\", \"dur\": 3.2475613963214722, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344470.992, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.358, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.334, \"ph\": \"X\", \"dur\": 1.2185526861533444, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.284, \"ph\": \"X\", \"dur\": 1.300122129013558, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344472.635, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.242, \"ph\": \"X\", \"dur\": 1.4665038366213947, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344472.978, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344472.948, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344472.897, \"ph\": \"X\", \"dur\": 0.33750292412803995, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.286, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344472.845, \"ph\": \"X\", \"dur\": 0.5091230363232295, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.61, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.57, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.516, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.892, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344473.474, \"ph\": \"X\", \"dur\": 0.48517604392390073, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.174, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.143, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.09, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.463, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.045, \"ph\": \"X\", \"dur\": 0.4841782525739287, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.73, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.704, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.654, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.003, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344474.61, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.135, \"ph\": \"X\", \"dur\": 3.9891698171881855, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344471.092, \"ph\": \"X\", \"dur\": 4.079469934360654, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.203, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.569, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.543, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.493, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.851, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.45, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.132, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.108, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.058, \"ph\": \"X\", \"dur\": 0.2843705347420292, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.389, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.011, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.646, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.62, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.57, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.898, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344476.525, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344477.173, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344477.147, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344477.101, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344477.424, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344477.06, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344478.617, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344478.589, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344478.536, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344478.926, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344478.49, \"ph\": \"X\", \"dur\": 0.5066285579482994, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.358, \"ph\": \"X\", \"dur\": 3.7057970737961283, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344475.316, \"ph\": \"X\", \"dur\": 3.788114860168821, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.139, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.536, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.513, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.456, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.806, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.41, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.148, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.118, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.067, \"ph\": \"X\", \"dur\": 0.38963752216407865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.506, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.02, \"ph\": \"X\", \"dur\": 0.552526960047013, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.768, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.742, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.691, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.084, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344480.646, \"ph\": \"X\", \"dur\": 0.5388073289848975, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.402, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.36, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.309, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.654, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.263, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.95, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.923, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.875, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344482.253, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344481.832, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.303, \"ph\": \"X\", \"dur\": 3.080431345201157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344479.263, \"ph\": \"X\", \"dur\": 3.1560140399615384, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344482.45, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344482.571, \"ph\": \"X\", \"dur\": 0.09479017824734308, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344489.29, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.400161428717433}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344489.585, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344489.785, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.135, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.253, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.077, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.666, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.779, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344490.607, \"ph\": \"X\", \"dur\": 0.40535273592613813, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.028, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344491.975, \"ph\": \"X\", \"dur\": 0.14867091114583283, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.196, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.159, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.296, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.417, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.632, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344492.941, \"ph\": \"X\", \"dur\": 0.1444302979084517, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344493.664, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344493.966, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344494.235, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344494.796, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344494.734, \"ph\": \"X\", \"dur\": 0.6096505148329118, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344494.504, \"ph\": \"X\", \"dur\": 0.9224581030491439, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344493.935, \"ph\": \"X\", \"dur\": 1.5498194143440591, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344493.79, \"ph\": \"X\", \"dur\": 1.7496271321759587, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.057, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.408, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.638, \"ph\": \"X\", \"dur\": 0.05013901533609462, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344497.088, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344497.001, \"ph\": \"X\", \"dur\": 0.583458491896146, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.769, \"ph\": \"X\", \"dur\": 0.8867870622876437, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.379, \"ph\": \"X\", \"dur\": 1.3298064216752261, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344496.209, \"ph\": \"X\", \"dur\": 1.5720202718809368, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344498.005, \"ph\": \"X\", \"dur\": 0.07233987287297235, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344498.338, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344498.488, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344498.24, \"ph\": \"X\", \"dur\": 0.4033571532261941, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344498.963, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344499.28, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344501.573, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344501.511, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344489.887, \"ph\": \"X\", \"dur\": 12.007421105563436, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344502.087, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344502.393, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344502.741, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344502.36, \"ph\": \"X\", \"dur\": 0.9960452151095812, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344502.203, \"ph\": \"X\", \"dur\": 1.202837472391285, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344489.714, \"ph\": \"X\", \"dur\": 13.85358455084919, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344503.768, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.343, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.304, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.229, \"ph\": \"X\", \"dur\": 0.41782512780078856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.736, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.184, \"ph\": \"X\", \"dur\": 0.6273613112949153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344505.015, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.992, \"ph\": \"X\", \"dur\": 0.2611718858551795, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.946, \"ph\": \"X\", \"dur\": 1.4864596636208354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344506.492, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.904, \"ph\": \"X\", \"dur\": 1.667059897965773, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344506.824, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344506.797, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344506.738, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.122, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344506.687, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.39, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.363, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.312, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.679, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.273, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.938, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.914, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.861, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.224, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344507.825, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344504.043, \"ph\": \"X\", \"dur\": 4.312953110254109, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344503.973, \"ph\": \"X\", \"dur\": 4.436429789813149, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.439, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.838, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.813, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.76, \"ph\": \"X\", \"dur\": 0.3300194890032497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.14, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.721, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.429, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.405, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.358, \"ph\": \"X\", \"dur\": 0.2821255042045921, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.686, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.315, \"ph\": \"X\", \"dur\": 0.4534961685622887, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.963, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.938, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.891, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.223, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344509.843, \"ph\": \"X\", \"dur\": 0.4442665985750474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.473, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.446, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.399, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.738, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.356, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344511.027, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344511.003, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.954, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344511.275, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344510.91, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.626, \"ph\": \"X\", \"dur\": 3.6928257862464915, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344508.587, \"ph\": \"X\", \"dur\": 3.7990905650185134, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.435, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.841, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.814, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.753, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.144, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.705, \"ph\": \"X\", \"dur\": 0.5046329752483554, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.457, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.429, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.377, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.749, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.318, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.002, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.978, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.934, \"ph\": \"X\", \"dur\": 0.36943224732714497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.374, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344513.886, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.643, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.618, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.57, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.899, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344514.507, \"ph\": \"X\", \"dur\": 0.4559906469372188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.153, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.131, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.083, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.428, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.038, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.592, \"ph\": \"X\", \"dur\": 2.9582019048295827, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344512.549, \"ph\": \"X\", \"dur\": 3.0417669303897403, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.62, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.961, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.938, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.886, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.231, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.846, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.501, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.475, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.428, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.792, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.383, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.042, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.019, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.969, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.291, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344516.928, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.548, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.525, \"ph\": \"X\", \"dur\": 1.1963518286164667, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.48, \"ph\": \"X\", \"dur\": 1.2789190628266525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344518.804, \"ph\": \"X\", \"dur\": 0.06735091612311218, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344517.438, \"ph\": \"X\", \"dur\": 1.4702455541837895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.11, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.083, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.031, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.378, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344518.987, \"ph\": \"X\", \"dur\": 0.4699597258368272, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.756, \"ph\": \"X\", \"dur\": 3.76815903316938, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344515.715, \"ph\": \"X\", \"dur\": 3.862949211416723, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.613, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344519.72, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.194, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.270166493741198}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.41, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.603, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.957, \"ph\": \"X\", \"dur\": 0.07184097719798634, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.07, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.887, \"ph\": \"X\", \"dur\": 0.5021384968734253, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.483, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.568, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.431, \"ph\": \"X\", \"dur\": 0.3639443949022988, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.868, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.828, \"ph\": \"X\", \"dur\": 0.1267195014464481, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344528.025, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344527.996, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344528.114, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344528.223, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344528.435, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344528.698, \"ph\": \"X\", \"dur\": 0.12023385767162989, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344529.33, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344529.725, \"ph\": \"X\", \"dur\": 0.06211251153575901, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344530.001, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344530.533, \"ph\": \"X\", \"dur\": 0.6213745631950832, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344530.477, \"ph\": \"X\", \"dur\": 0.7044406930802548, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344530.246, \"ph\": \"X\", \"dur\": 1.0224866858838402, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344529.649, \"ph\": \"X\", \"dur\": 1.6735455417405913, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344529.502, \"ph\": \"X\", \"dur\": 1.8746004987599558, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344531.965, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.242, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.489, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.996, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.95, \"ph\": \"X\", \"dur\": 0.522593219547852, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.652, \"ph\": \"X\", \"dur\": 0.8862881666126577, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.212, \"ph\": \"X\", \"dur\": 1.3811926761987858, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344532.07, \"ph\": \"X\", \"dur\": 1.577009228630797, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344534.832, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344535.094, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344535.255, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344535.033, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344535.682, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344535.952, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344538.308, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344538.229, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.705, \"ph\": \"X\", \"dur\": 11.88668835221682, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344538.784, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344539.174, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344539.507, \"ph\": \"X\", \"dur\": 0.5447940770847297, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344539.121, \"ph\": \"X\", \"dur\": 0.9833233753974379, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344538.913, \"ph\": \"X\", \"dur\": 1.2427491263901664, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344526.515, \"ph\": \"X\", \"dur\": 13.84784725058685, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344540.542, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.066, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.024, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344540.936, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.454, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344540.889, \"ph\": \"X\", \"dur\": 0.650061064506779, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.771, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.746, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.696, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.048, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344541.653, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.324, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.3, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.252, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.594, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.213, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.831, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.808, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.761, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.088, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344542.722, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.325, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.301, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.253, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.605, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.208, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344540.757, \"ph\": \"X\", \"dur\": 2.968678714004289, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344540.706, \"ph\": \"X\", \"dur\": 3.0554865614518563, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.791, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344544.167, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344544.143, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344544.074, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344545.369, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344544.034, \"ph\": \"X\", \"dur\": 1.453033653396772, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344545.761, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344545.733, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344545.676, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.056, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344545.624, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.397, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.374, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.293, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.688, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.246, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.95, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.927, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.878, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.211, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344546.834, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.473, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.451, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.399, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.742, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.359, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.943, \"ph\": \"X\", \"dur\": 3.92156945322758, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344543.904, \"ph\": \"X\", \"dur\": 3.9969027001504687, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344547.932, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.328, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.303, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.254, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.585, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.215, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.872, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.849, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.781, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.131, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.74, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.442, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.417, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.366, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.69, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.325, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.967, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.942, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.897, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344550.217, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344549.85, \"ph\": \"X\", \"dur\": 0.4278030413005089, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344550.463, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344550.439, \"ph\": \"X\", \"dur\": 1.7703313026878784, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344550.392, \"ph\": \"X\", \"dur\": 1.8471612366357248, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.296, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344550.35, \"ph\": \"X\", \"dur\": 2.0180330053184354, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.122, \"ph\": \"X\", \"dur\": 4.340891268053327, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344548.084, \"ph\": \"X\", \"dur\": 4.430443041713316, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.549, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.968, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.916, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.861, \"ph\": \"X\", \"dur\": 0.3666883211147219, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344553.28, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.819, \"ph\": \"X\", \"dur\": 0.5315733416976002, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344553.595, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344553.571, \"ph\": \"X\", \"dur\": 0.3300194890032497, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344553.505, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.005, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344553.46, \"ph\": \"X\", \"dur\": 0.6253657285949713, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.283, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.259, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.21, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.598, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.164, \"ph\": \"X\", \"dur\": 0.4966506444485791, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.852, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.828, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.783, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.117, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344554.735, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.37, \"ph\": \"X\", \"dur\": 0.04964011966110861, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.346, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.296, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.672, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.254, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.724, \"ph\": \"X\", \"dur\": 3.0714512230514086, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344552.67, \"ph\": \"X\", \"dur\": 3.165742505623766, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.864, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344555.969, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344562.67, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.142366797715175}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344562.935, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.149, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.508, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.611, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.461, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344564.039, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344564.15, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.988, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344564.517, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344564.466, \"ph\": \"X\", \"dur\": 0.12197999253408096, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344565.735, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344565.685, \"ph\": \"X\", \"dur\": 0.15365986789569297, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344565.875, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344565.995, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344566.231, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344566.508, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344567.167, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344567.454, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344567.787, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344568.363, \"ph\": \"X\", \"dur\": 0.5737300262339186, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344568.314, \"ph\": \"X\", \"dur\": 0.6495621688317931, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344568.07, \"ph\": \"X\", \"dur\": 0.9873145407973261, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344567.422, \"ph\": \"X\", \"dur\": 1.691256338202595, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344567.278, \"ph\": \"X\", \"dur\": 1.8900662646845223, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344569.662, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344569.959, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344570.306, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344570.695, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344570.633, \"ph\": \"X\", \"dur\": 0.5694894129965374, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344570.447, \"ph\": \"X\", \"dur\": 0.8231778637269267, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344569.927, \"ph\": \"X\", \"dur\": 1.3772015107988977, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344569.784, \"ph\": \"X\", \"dur\": 1.573516958905895, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344571.604, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344571.899, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344572.091, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344571.833, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344572.52, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344572.81, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344575.078, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344574.991, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.257, \"ph\": \"X\", \"dur\": 12.11293754082298, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344575.533, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344575.854, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344576.267, \"ph\": \"X\", \"dur\": 0.5517786165345339, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344575.824, \"ph\": \"X\", \"dur\": 1.1591841008300088, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344575.65, \"ph\": \"X\", \"dur\": 1.4013979510357195, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344563.065, \"ph\": \"X\", \"dur\": 14.162650421503027, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344577.45, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.067, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.018, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344577.933, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.437, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344577.887, \"ph\": \"X\", \"dur\": 0.6303546853448314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.76, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.73, \"ph\": \"X\", \"dur\": 0.2626685728801375, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.671, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344579.084, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344578.62, \"ph\": \"X\", \"dur\": 1.5044199079203318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.392, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.365, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.309, \"ph\": \"X\", \"dur\": 0.3629466035523267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.724, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.26, \"ph\": \"X\", \"dur\": 0.5323216852100793, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.027, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.001, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.948, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.317, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344580.892, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.584, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.559, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.506, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.905, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344581.463, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344577.725, \"ph\": \"X\", \"dur\": 4.320685993216394, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344577.677, \"ph\": \"X\", \"dur\": 4.423957397938499, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.133, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.58, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.553, \"ph\": \"X\", \"dur\": 0.2524412115429242, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.475, \"ph\": \"X\", \"dur\": 0.3616993643648617, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.882, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.421, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.226, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.202, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.149, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.489, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.104, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.776, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.752, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.704, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.027, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344583.638, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.294, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.271, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.218, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.547, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.175, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.908, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.884, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.802, \"ph\": \"X\", \"dur\": 0.40784721430106824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344585.258, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344584.757, \"ph\": \"X\", \"dur\": 0.5684916216465655, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.327, \"ph\": \"X\", \"dur\": 3.0634688922516324, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344582.282, \"ph\": \"X\", \"dur\": 3.14204496106193, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.342, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.774, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.75, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.693, \"ph\": \"X\", \"dur\": 0.40310770538870105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.148, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.65, \"ph\": \"X\", \"dur\": 0.6001714970081774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.499, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.471, \"ph\": \"X\", \"dur\": 0.340496298177956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.417, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.893, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344587.367, \"ph\": \"X\", \"dur\": 0.5961803316082893, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.198, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.168, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.114, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.506, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.063, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.775, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.752, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.699, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.067, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344588.652, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.348, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.322, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.274, \"ph\": \"X\", \"dur\": 0.34723138979026724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.669, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.227, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.555, \"ph\": \"X\", \"dur\": 3.2515525617213603, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344586.494, \"ph\": \"X\", \"dur\": 3.3488372183436335, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.874, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.23, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.204, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.152, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.538, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.11, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.81, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.787, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.736, \"ph\": \"X\", \"dur\": 0.33450955007812383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.117, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.693, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.399, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.376, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.325, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.729, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.282, \"ph\": \"X\", \"dur\": 0.5106197233481876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.982, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.957, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.908, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.206, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344591.866, \"ph\": \"X\", \"dur\": 1.4213537780351602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.501, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.472, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.418, \"ph\": \"X\", \"dur\": 0.3110614533537811, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.78, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.372, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344590.019, \"ph\": \"X\", \"dur\": 3.893132399753377, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344589.977, \"ph\": \"X\", \"dur\": 3.9724568120761536, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344593.985, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344594.162, \"ph\": \"X\", \"dur\": 0.14418085007095868, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.114, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 6.012122860489891}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.361, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.604, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.918, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.072, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.874, \"ph\": \"X\", \"dur\": 0.5577653646343661, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.51, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.613, \"ph\": \"X\", \"dur\": 0.1823463692073889, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.467, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.907, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344602.858, \"ph\": \"X\", \"dur\": 0.1389424454836055, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.083, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.031, \"ph\": \"X\", \"dur\": 0.13420293657123836, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.199, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.353, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.569, \"ph\": \"X\", \"dur\": 0.01920748348696162, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344603.838, \"ph\": \"X\", \"dur\": 0.08955177365998991, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344604.475, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344604.841, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344605.132, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344605.585, \"ph\": \"X\", \"dur\": 0.5714849956964815, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344605.51, \"ph\": \"X\", \"dur\": 0.6750058482560799, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344605.313, \"ph\": \"X\", \"dur\": 0.957879695973151, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344604.793, \"ph\": \"X\", \"dur\": 1.512152790882615, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344604.617, \"ph\": \"X\", \"dur\": 1.7798103205126126, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344606.892, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.188, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.51, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.999, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.965, \"ph\": \"X\", \"dur\": 0.5567675732843941, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.636, \"ph\": \"X\", \"dur\": 0.955634665435714, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.154, \"ph\": \"X\", \"dur\": 1.479974019846017, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344607.007, \"ph\": \"X\", \"dur\": 1.6817773203778603, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344609.003, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344609.32, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344610.79, \"ph\": \"X\", \"dur\": 0.10576588309703543, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344609.231, \"ph\": \"X\", \"dur\": 1.7179472568143468, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344611.294, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344611.596, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344614.084, \"ph\": \"X\", \"dur\": 0.1329556973837733, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344613.966, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.707, \"ph\": \"X\", \"dur\": 12.784700567191651, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344614.658, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344614.969, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344615.378, \"ph\": \"X\", \"dur\": 0.6131427845578139, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344614.936, \"ph\": \"X\", \"dur\": 1.143468887067949, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344614.777, \"ph\": \"X\", \"dur\": 1.3552501010995128, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344601.512, \"ph\": \"X\", \"dur\": 14.807722529259944, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344616.56, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.13, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.103, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.043, \"ph\": \"X\", \"dur\": 0.4038560489011801, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.531, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344616.988, \"ph\": \"X\", \"dur\": 0.6268624156199293, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.847, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.821, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.768, \"ph\": \"X\", \"dur\": 0.32303494955344547, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.139, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344617.724, \"ph\": \"X\", \"dur\": 0.48093543068651956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.408, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.383, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.332, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.681, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.289, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.989, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.965, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.913, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.247, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344618.869, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.531, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.505, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.452, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.812, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344619.41, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344616.823, \"ph\": \"X\", \"dur\": 3.116102385962657, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344616.773, \"ph\": \"X\", \"dur\": 3.234590108771836, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.037, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.521, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.493, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.423, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.82, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.38, \"ph\": \"X\", \"dur\": 0.5043835274108623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.168, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.14, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.071, \"ph\": \"X\", \"dur\": 0.3724256213770611, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.5, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.021, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.781, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.759, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.708, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.06, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344622.664, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.345, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.321, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.271, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.615, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.23, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.888, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.861, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.816, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.161, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344623.751, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.268, \"ph\": \"X\", \"dur\": 4.0303287103745316, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344620.217, \"ph\": \"X\", \"dur\": 4.137840728334019, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.386, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.777, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.752, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.698, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.034, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.657, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.326, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.303, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.252, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.581, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.21, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.833, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.808, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.76, \"ph\": \"X\", \"dur\": 0.277635443129718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.087, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344625.719, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.34, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.316, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.268, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.6, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.222, \"ph\": \"X\", \"dur\": 0.4422710158751033, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.851, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.825, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.778, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.189, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344626.736, \"ph\": \"X\", \"dur\": 1.5338547527445066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.564, \"ph\": \"X\", \"dur\": 3.769905168031831, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344624.523, \"ph\": \"X\", \"dur\": 3.8489801325171147, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.404, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.758, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.735, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.682, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.085, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.64, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.366, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.341, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.291, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.658, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.249, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.927, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.903, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.852, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.179, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344629.811, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.431, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.404, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.355, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.686, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.312, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.951, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.925, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.878, \"ph\": \"X\", \"dur\": 0.2908561785168474, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344631.217, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344630.836, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.547, \"ph\": \"X\", \"dur\": 2.7868312404718862, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344628.503, \"ph\": \"X\", \"dur\": 2.867153444144635, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344631.419, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344631.573, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344638.611, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.88476189101384}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344638.943, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.201, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.524, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.683, \"ph\": \"X\", \"dur\": 0.29734182229166567, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.477, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.109, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.249, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.052, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.553, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.512, \"ph\": \"X\", \"dur\": 0.12447447090901104, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.699, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344640.669, \"ph\": \"X\", \"dur\": 0.09803300013475218, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344641.773, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344641.932, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344642.228, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344642.52, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344643.189, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344643.51, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344643.765, \"ph\": \"X\", \"dur\": 0.07383655989793039, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344644.429, \"ph\": \"X\", \"dur\": 0.5694894129965374, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344644.36, \"ph\": \"X\", \"dur\": 0.6670235174563036, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344644.074, \"ph\": \"X\", \"dur\": 1.0352085255959835, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344643.478, \"ph\": \"X\", \"dur\": 1.6872651728027068, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344643.299, \"ph\": \"X\", \"dur\": 1.94544368460797, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344645.839, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.124, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.36, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.88, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.832, \"ph\": \"X\", \"dur\": 0.5066285579482994, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.487, \"ph\": \"X\", \"dur\": 0.9451578562610077, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344646.093, \"ph\": \"X\", \"dur\": 1.394413411585915, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344645.947, \"ph\": \"X\", \"dur\": 1.5934727859053357, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344647.797, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344648.143, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344648.321, \"ph\": \"X\", \"dur\": 0.09379238689737104, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344648.043, \"ph\": \"X\", \"dur\": 0.4225646367131557, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344648.894, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344649.193, \"ph\": \"X\", \"dur\": 0.19706379161947638, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344651.557, \"ph\": \"X\", \"dur\": 0.10676367444700746, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344651.495, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.326, \"ph\": \"X\", \"dur\": 12.605098124196683, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344652.092, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344652.409, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344652.834, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344652.378, \"ph\": \"X\", \"dur\": 1.0459347826081828, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344652.207, \"ph\": \"X\", \"dur\": 1.269440045001918, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344639.092, \"ph\": \"X\", \"dur\": 14.521356411817973, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344653.847, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.422, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.383, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.321, \"ph\": \"X\", \"dur\": 0.41333506672591436, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.784, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.25, \"ph\": \"X\", \"dur\": 0.6318513723697895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344655.135, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344655.106, \"ph\": \"X\", \"dur\": 0.2631674685551236, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344655.045, \"ph\": \"X\", \"dur\": 0.3522203465401274, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344655.456, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.994, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344656.809, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344656.785, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344656.72, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.122, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344656.674, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.447, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.416, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.362, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.735, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.306, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.973, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.948, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.9, \"ph\": \"X\", \"dur\": 0.2978407179666517, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.247, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344657.857, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.129, \"ph\": \"X\", \"dur\": 4.244604402781026, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344654.049, \"ph\": \"X\", \"dur\": 4.393524761764351, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.471, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.856, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.833, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.782, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.116, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.738, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.448, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.419, \"ph\": \"X\", \"dur\": 0.2639158120676025, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.367, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.761, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.315, \"ph\": \"X\", \"dur\": 0.5093724841607226, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.036, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.013, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.962, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.319, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344659.919, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.607, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.584, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.535, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.888, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344660.469, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.157, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.129, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.082, \"ph\": \"X\", \"dur\": 0.3679355603021869, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.496, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.038, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.649, \"ph\": \"X\", \"dur\": 2.970175401029247, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344658.6, \"ph\": \"X\", \"dur\": 3.0574821441518, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.688, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344662.054, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344662.032, \"ph\": \"X\", \"dur\": 1.1200207903436061, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.979, \"ph\": \"X\", \"dur\": 1.204833055091229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.25, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.937, \"ph\": \"X\", \"dur\": 1.3836871545737157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.537, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.51, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.46, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.881, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344663.418, \"ph\": \"X\", \"dur\": 0.5298272068351492, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.163, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.134, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.084, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.477, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.029, \"ph\": \"X\", \"dur\": 0.5353150592599953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.831, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.807, \"ph\": \"X\", \"dur\": 0.2596751988302214, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.732, \"ph\": \"X\", \"dur\": 0.36244770787734076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.147, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344664.687, \"ph\": \"X\", \"dur\": 0.5273327284602191, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.416, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.392, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.339, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.707, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.293, \"ph\": \"X\", \"dur\": 0.4749486825866874, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.847, \"ph\": \"X\", \"dur\": 3.978693008013479, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344661.804, \"ph\": \"X\", \"dur\": 4.05677018114879, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344665.893, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.261, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.236, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.189, \"ph\": \"X\", \"dur\": 0.277635443129718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.514, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.146, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.796, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.771, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.726, \"ph\": \"X\", \"dur\": 0.3918825527015157, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.168, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.668, \"ph\": \"X\", \"dur\": 0.5689905173215515, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.425, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.4, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.354, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.705, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.309, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.952, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.93, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.883, \"ph\": \"X\", \"dur\": 0.34124464169043506, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344668.269, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344667.84, \"ph\": \"X\", \"dur\": 1.327810838975282, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.41, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.385, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.32, \"ph\": \"X\", \"dur\": 0.36943224732714497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.74, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.268, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.05, \"ph\": \"X\", \"dur\": 3.8337638144300414, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344666.011, \"ph\": \"X\", \"dur\": 3.922816692415045, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344669.966, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344670.103, \"ph\": \"X\", \"dur\": 0.17486293408259865, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344676.973, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.754190966031344}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.2, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.428, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.796, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.944, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.728, \"ph\": \"X\", \"dur\": 0.5966792272832753, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.418, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.529, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.362, \"ph\": \"X\", \"dur\": 0.3826529827142744, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.858, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.802, \"ph\": \"X\", \"dur\": 0.1521631808707349, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344679.042, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344678.986, \"ph\": \"X\", \"dur\": 0.12846563630889915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344679.147, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344679.291, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344679.572, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344679.807, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344680.442, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344680.735, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344681.019, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344681.535, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344681.486, \"ph\": \"X\", \"dur\": 0.618381189145167, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344681.269, \"ph\": \"X\", \"dur\": 0.9284448511489761, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344680.7, \"ph\": \"X\", \"dur\": 1.576510332955811, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344680.556, \"ph\": \"X\", \"dur\": 1.7793114248376267, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344682.841, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.167, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.396, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.955, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.922, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.576, \"ph\": \"X\", \"dur\": 0.9174691462992837, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344683.123, \"ph\": \"X\", \"dur\": 1.4265921826225132, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344682.981, \"ph\": \"X\", \"dur\": 1.6229076307295107, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344684.816, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344685.127, \"ph\": \"X\", \"dur\": 0.15415876357067898, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344685.344, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344685.027, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344686.778, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344687.1, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344689.439, \"ph\": \"X\", \"dur\": 0.09479017824734308, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344689.365, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.547, \"ph\": \"X\", \"dur\": 12.248637164419177, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344689.949, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344690.296, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344690.624, \"ph\": \"X\", \"dur\": 0.6123944410453348, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344690.265, \"ph\": \"X\", \"dur\": 1.0292217774961514, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344690.085, \"ph\": \"X\", \"dur\": 1.26045992285217, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344677.341, \"ph\": \"X\", \"dur\": 14.158160360428154, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344691.663, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.221, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.196, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.119, \"ph\": \"X\", \"dur\": 0.3791607129893723, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.568, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.074, \"ph\": \"X\", \"dur\": 0.5615070821967612, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.857, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.833, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.773, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.148, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344692.735, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.415, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.39, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.343, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.671, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.298, \"ph\": \"X\", \"dur\": 0.43827985047521517, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.925, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.9, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.848, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.176, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344693.801, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.413, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.387, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.338, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.665, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.297, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344691.95, \"ph\": \"X\", \"dur\": 2.8277406858207397, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344691.886, \"ph\": \"X\", \"dur\": 2.946228408629919, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344694.863, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.349, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.319, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.26, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.677, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.207, \"ph\": \"X\", \"dur\": 0.5400545681723624, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344696.005, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.977, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.923, \"ph\": \"X\", \"dur\": 1.2532259355648725, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.253, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.874, \"ph\": \"X\", \"dur\": 1.477230093633594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.614, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.582, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.533, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.906, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344697.468, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.223, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.174, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.119, \"ph\": \"X\", \"dur\": 0.3734234127270331, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.553, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.07, \"ph\": \"X\", \"dur\": 0.552776407884506, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.849, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.823, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.772, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.119, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344698.723, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.057, \"ph\": \"X\", \"dur\": 4.218911275519245, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344695.018, \"ph\": \"X\", \"dur\": 4.294493970279627, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.346, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.708, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.679, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.618, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.961, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.576, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.229, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.206, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.157, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.498, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.114, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.75, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.724, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.674, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.002, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344700.632, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.374, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.311, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.209, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.637, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.162, \"ph\": \"X\", \"dur\": 0.5365622984474604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.884, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.858, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.811, \"ph\": \"X\", \"dur\": 0.27264648637985783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344702.129, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344701.768, \"ph\": \"X\", \"dur\": 0.42381187590062075, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.487, \"ph\": \"X\", \"dur\": 3.6706249287096138, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344699.446, \"ph\": \"X\", \"dur\": 3.755437193457237, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.238, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.606, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.584, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.532, \"ph\": \"X\", \"dur\": 0.3442380157403512, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.926, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.489, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.215, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.191, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.14, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.508, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.096, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.762, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.736, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.686, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.016, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344704.644, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.285, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.262, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.193, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.577, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.15, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.827, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.802, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.754, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344706.131, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344705.712, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.389, \"ph\": \"X\", \"dur\": 2.862912830907254, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344703.349, \"ph\": \"X\", \"dur\": 2.938994421342621, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344706.319, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344706.446, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344713.408, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.627402818088974}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344713.67, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344713.877, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.252, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.354, \"ph\": \"X\", \"dur\": 0.2616707815301655, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.188, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.764, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.873, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.683, \"ph\": \"X\", \"dur\": 0.41483175375087245, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.162, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.132, \"ph\": \"X\", \"dur\": 0.11449655740929071, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.31, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.28, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.399, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344715.497, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344717.265, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344717.539, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.143, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.441, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.731, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344719.241, \"ph\": \"X\", \"dur\": 0.5507808251845618, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344719.187, \"ph\": \"X\", \"dur\": 0.6308535810198174, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.943, \"ph\": \"X\", \"dur\": 0.9661114746104202, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.41, \"ph\": \"X\", \"dur\": 1.5336053049070137, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344718.254, \"ph\": \"X\", \"dur\": 1.7426425927261546, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344720.547, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344720.861, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344721.182, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344721.801, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344721.694, \"ph\": \"X\", \"dur\": 0.6685202044812617, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344721.286, \"ph\": \"X\", \"dur\": 1.143468887067949, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344720.83, \"ph\": \"X\", \"dur\": 1.630889961529287, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344720.664, \"ph\": \"X\", \"dur\": 1.85090295419812, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344722.756, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344723.052, \"ph\": \"X\", \"dur\": 0.1015252698596543, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344723.222, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344722.965, \"ph\": \"X\", \"dur\": 0.38290243055176737, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344723.742, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344724.049, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344726.374, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344726.325, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344714.008, \"ph\": \"X\", \"dur\": 12.674943518694727, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344726.846, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344727.134, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344727.499, \"ph\": \"X\", \"dur\": 0.6123944410453348, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344727.103, \"ph\": \"X\", \"dur\": 1.0643939225826655, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344726.95, \"ph\": \"X\", \"dur\": 1.2699389406769042, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344713.801, \"ph\": \"X\", \"dur\": 14.602676406840693, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344728.602, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.121, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.096, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.033, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.513, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344728.986, \"ph\": \"X\", \"dur\": 0.6106483061828838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.841, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.813, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.753, \"ph\": \"X\", \"dur\": 0.3614499165273687, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344730.172, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344729.701, \"ph\": \"X\", \"dur\": 0.5388073289848975, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344730.473, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344730.445, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344730.39, \"ph\": \"X\", \"dur\": 1.2769234801267084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344731.719, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344730.341, \"ph\": \"X\", \"dur\": 1.4605170885215624, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.006, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344731.979, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344731.911, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.318, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344731.867, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.566, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.541, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.49, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.845, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344732.445, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344728.866, \"ph\": \"X\", \"dur\": 4.080467725710626, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344728.814, \"ph\": \"X\", \"dur\": 4.178500725845379, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.041, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.4, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.376, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.325, \"ph\": \"X\", \"dur\": 0.3240327409034175, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.716, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.281, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.012, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.985, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.937, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.307, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.894, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.609, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.585, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.537, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.865, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344734.472, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.174, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.13, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.061, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.452, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.018, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.72, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.694, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.643, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.974, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344735.601, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.191, \"ph\": \"X\", \"dur\": 2.92976485135538, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344733.149, \"ph\": \"X\", \"dur\": 3.0462569914646145, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.253, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.597, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.572, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.523, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344737.855, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.477, \"ph\": \"X\", \"dur\": 1.512152790882615, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.256, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.219, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.159, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.555, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.105, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.837, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.81, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.755, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.11, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344738.706, \"ph\": \"X\", \"dur\": 0.46447187341198104, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.364, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.341, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.292, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.653, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.248, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.908, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.884, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.834, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.235, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344739.79, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.388, \"ph\": \"X\", \"dur\": 3.9587371810140386, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344736.345, \"ph\": \"X\", \"dur\": 4.037562697661829, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.416, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.779, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.756, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.706, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.085, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.666, \"ph\": \"X\", \"dur\": 0.48717162662384483, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.364, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.343, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.29, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.67, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.247, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.914, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.888, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.842, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.185, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344741.801, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.438, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.414, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.366, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.683, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.324, \"ph\": \"X\", \"dur\": 0.4230635323881417, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.931, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.906, \"ph\": \"X\", \"dur\": 1.1908639761916207, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.859, \"ph\": \"X\", \"dur\": 1.267444462301974, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344744.185, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344742.816, \"ph\": \"X\", \"dur\": 1.4353228569347685, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.562, \"ph\": \"X\", \"dur\": 3.7566844326447018, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344740.524, \"ph\": \"X\", \"dur\": 3.8352605014549996, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344744.424, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344744.553, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.113, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.4964029735428275}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.408, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.609, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.939, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.05, \"ph\": \"X\", \"dur\": 0.25543458559284027, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.869, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.443, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.556, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.4, \"ph\": \"X\", \"dur\": 0.37167727786458205, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.838, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.809, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344753.014, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344752.975, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344753.115, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344753.243, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344753.437, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344753.694, \"ph\": \"X\", \"dur\": 0.07583214259787445, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344754.305, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344754.652, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344755.016, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344755.51, \"ph\": \"X\", \"dur\": 0.5308249981851212, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344755.429, \"ph\": \"X\", \"dur\": 0.6395842553320727, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344755.168, \"ph\": \"X\", \"dur\": 0.9975419021345393, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344754.605, \"ph\": \"X\", \"dur\": 1.5952189207677867, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344754.439, \"ph\": \"X\", \"dur\": 1.8197219745114939, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344756.775, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.114, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.447, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.923, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.893, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.604, \"ph\": \"X\", \"dur\": 0.8817981055377836, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344757.069, \"ph\": \"X\", \"dur\": 1.4657554931089156, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344756.897, \"ph\": \"X\", \"dur\": 1.7119605087145144, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344758.86, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344759.153, \"ph\": \"X\", \"dur\": 0.12297778388405298, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344759.366, \"ph\": \"X\", \"dur\": 1.1661686402798128, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344759.081, \"ph\": \"X\", \"dur\": 1.5395920530068459, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344760.988, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344761.313, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344764.664, \"ph\": \"X\", \"dur\": 0.10676367444700746, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344764.589, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.715, \"ph\": \"X\", \"dur\": 13.34022090128858, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344765.215, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344765.509, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344765.951, \"ph\": \"X\", \"dur\": 0.5654982475966494, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344765.48, \"ph\": \"X\", \"dur\": 1.0910848411944174, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344765.323, \"ph\": \"X\", \"dur\": 1.3103494903507715, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344751.53, \"ph\": \"X\", \"dur\": 15.266207654572096, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344766.975, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.502, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.479, \"ph\": \"X\", \"dur\": 0.32103936685350143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.399, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.896, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.354, \"ph\": \"X\", \"dur\": 0.6380875683071147, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.238, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.209, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.148, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.55, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.096, \"ph\": \"X\", \"dur\": 0.5208470846854009, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.813, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.789, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.738, \"ph\": \"X\", \"dur\": 0.38764193946413456, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.179, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344768.692, \"ph\": \"X\", \"dur\": 0.5530258557219989, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.441, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.415, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.346, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.72, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.305, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.964, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.939, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.888, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.228, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344769.843, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.224, \"ph\": \"X\", \"dur\": 3.107870607325388, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344767.172, \"ph\": \"X\", \"dur\": 3.20340912908521, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.414, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.78, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.754, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.704, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344771.038, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.658, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344771.326, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344771.301, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344771.251, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344772.56, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344771.207, \"ph\": \"X\", \"dur\": 1.4867091114583282, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344772.949, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344772.918, \"ph\": \"X\", \"dur\": 0.26616084260503964, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344772.871, \"ph\": \"X\", \"dur\": 0.34348967222787213, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.264, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344772.796, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.573, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.543, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.492, \"ph\": \"X\", \"dur\": 0.31605041010364127, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.865, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344773.426, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.15, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.122, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.069, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.44, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.024, \"ph\": \"X\", \"dur\": 0.48093543068651956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.567, \"ph\": \"X\", \"dur\": 3.9934104304255666, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344770.523, \"ph\": \"X\", \"dur\": 4.075229321123273, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.628, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.011, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.986, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.932, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.26, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.889, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.56, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.534, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.482, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.833, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.439, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.083, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.06, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.009, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.356, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344775.967, \"ph\": \"X\", \"dur\": 0.4515005858623446, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.607, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.586, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.535, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.853, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.493, \"ph\": \"X\", \"dur\": 0.42356242806312777, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344777.101, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344777.075, \"ph\": \"X\", \"dur\": 0.21178121403156389, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344777.029, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344777.358, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344776.987, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.797, \"ph\": \"X\", \"dur\": 2.6830609400747947, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344774.747, \"ph\": \"X\", \"dur\": 2.7698687875223618, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.419, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.839, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.811, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.755, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.118, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.711, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.412, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.381, \"ph\": \"X\", \"dur\": 0.25443679424286825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.328, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.719, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.283, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.995, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.966, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.913, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.281, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344779.869, \"ph\": \"X\", \"dur\": 0.48093543068651956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.574, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.546, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.492, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.841, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.452, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.121, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.091, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.039, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.421, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344780.992, \"ph\": \"X\", \"dur\": 0.5447940770847297, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.594, \"ph\": \"X\", \"dur\": 3.0203144163653417, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344778.553, \"ph\": \"X\", \"dur\": 3.1006366200380904, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.7, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344781.867, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344788.81, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.37036209259339}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.04, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.269, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.604, \"ph\": \"X\", \"dur\": 0.08581005609759478, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.728, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.549, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.137, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.243, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.081, \"ph\": \"X\", \"dur\": 0.38614525243917647, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.576, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.519, \"ph\": \"X\", \"dur\": 0.154657659245665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.759, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.716, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.856, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344790.988, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344791.161, \"ph\": \"X\", \"dur\": 0.019955826999440644, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344792.448, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.028, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.332, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.605, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344794.029, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.983, \"ph\": \"X\", \"dur\": 0.6054099015955307, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.764, \"ph\": \"X\", \"dur\": 0.9084890241495355, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.298, \"ph\": \"X\", \"dur\": 1.4108769688604537, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344793.152, \"ph\": \"X\", \"dur\": 1.6214109437045525, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.302, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.602, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.829, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344796.261, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344796.232, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.922, \"ph\": \"X\", \"dur\": 0.8670806831256961, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.571, \"ph\": \"X\", \"dur\": 1.2522281442149006, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344795.427, \"ph\": \"X\", \"dur\": 1.450040279346856, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344797.118, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344797.376, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344797.558, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344797.313, \"ph\": \"X\", \"dur\": 0.3836507740642464, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344798.035, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344798.314, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344800.711, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344800.643, \"ph\": \"X\", \"dur\": 0.18883201298220711, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.375, \"ph\": \"X\", \"dur\": 11.658443580910719, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344801.199, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344801.523, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344801.885, \"ph\": \"X\", \"dur\": 0.5388073289848975, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344801.492, \"ph\": \"X\", \"dur\": 0.9893101234972701, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344801.34, \"ph\": \"X\", \"dur\": 1.1938573502415368, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344789.166, \"ph\": \"X\", \"dur\": 13.499867517284105, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344802.904, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.381, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.356, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.284, \"ph\": \"X\", \"dur\": 0.42081850185070463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.769, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.239, \"ph\": \"X\", \"dur\": 0.6011692883581495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.095, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.065, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.005, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.409, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.952, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.682, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.656, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.603, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344805.021, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344804.558, \"ph\": \"X\", \"dur\": 1.4974353684705275, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.294, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.266, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.18, \"ph\": \"X\", \"dur\": 0.39113420918903663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.654, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.137, \"ph\": \"X\", \"dur\": 0.587200209458541, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.939, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.908, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.859, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.229, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344806.803, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.116, \"ph\": \"X\", \"dur\": 4.227143054156515, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344803.067, \"ph\": \"X\", \"dur\": 4.321434336728872, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.447, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.851, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.822, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.764, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.129, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.72, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.453, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.428, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.354, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.758, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.307, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.074, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.049, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.98, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.355, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344808.918, \"ph\": \"X\", \"dur\": 0.5023879447109183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.659, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.635, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.557, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.958, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344809.511, \"ph\": \"X\", \"dur\": 0.5158581279355406, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.258, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.217, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.164, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.527, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.117, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.621, \"ph\": \"X\", \"dur\": 3.0407691390397686, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344807.574, \"ph\": \"X\", \"dur\": 3.1293231213497865, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.746, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344811.184, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344811.161, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344811.087, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344811.431, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344811.043, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344812.612, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344812.585, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344812.535, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344812.927, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344812.492, \"ph\": \"X\", \"dur\": 0.4996440184984952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.219, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.188, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.137, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.502, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.092, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.783, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.759, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.709, \"ph\": \"X\", \"dur\": 0.3619488122023547, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.122, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344813.667, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.397, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.373, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.313, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.657, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.273, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.948, \"ph\": \"X\", \"dur\": 3.8322671274050832, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344810.879, \"ph\": \"X\", \"dur\": 3.9405274888770485, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.85, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.219, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.195, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.148, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.492, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.085, \"ph\": \"X\", \"dur\": 0.48816941797381685, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.781, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.757, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.708, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.066, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344815.666, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.314, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.291, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.242, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.571, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.2, \"ph\": \"X\", \"dur\": 0.433290893725355, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.821, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.798, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.75, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344817.075, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344816.706, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344817.323, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344817.299, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344817.25, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344818.52, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344817.207, \"ph\": \"X\", \"dur\": 1.3951617550983941, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.996, \"ph\": \"X\", \"dur\": 3.671622720059586, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344814.956, \"ph\": \"X\", \"dur\": 3.7521943715698276, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344818.743, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344818.865, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344825.37, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.238800278687474}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344825.595, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344825.814, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.113, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.263, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.069, \"ph\": \"X\", \"dur\": 0.4689619344868552, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.626, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.718, \"ph\": \"X\", \"dur\": 0.17685851678254272, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.571, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.986, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344826.955, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.132, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.101, \"ph\": \"X\", \"dur\": 0.08581005609759478, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.219, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.317, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.472, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344827.747, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344828.297, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344828.645, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344828.964, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344829.475, \"ph\": \"X\", \"dur\": 0.5592620516593241, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344829.419, \"ph\": \"X\", \"dur\": 0.6403325988445517, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344829.178, \"ph\": \"X\", \"dur\": 0.9723476705477455, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344828.576, \"ph\": \"X\", \"dur\": 1.6273976918043846, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344828.428, \"ph\": \"X\", \"dur\": 1.8389294579984554, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344830.783, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.083, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.342, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.857, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.795, \"ph\": \"X\", \"dur\": 0.553275303559492, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.491, \"ph\": \"X\", \"dur\": 0.9349304949237943, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344831.051, \"ph\": \"X\", \"dur\": 1.4505391750218422, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344830.911, \"ph\": \"X\", \"dur\": 1.6418656663789792, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344832.769, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344833.056, \"ph\": \"X\", \"dur\": 0.11549434875926275, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344833.285, \"ph\": \"X\", \"dur\": 0.11075483984689559, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344832.984, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344833.798, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344834.078, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344836.436, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344836.353, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344825.918, \"ph\": \"X\", \"dur\": 11.90215411814139, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344837.953, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344838.315, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344838.722, \"ph\": \"X\", \"dur\": 0.5916902705334152, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344838.281, \"ph\": \"X\", \"dur\": 1.087093675794529, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344838.114, \"ph\": \"X\", \"dur\": 1.3058594292758974, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344825.73, \"ph\": \"X\", \"dur\": 13.825147497374987, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344839.757, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.286, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.258, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.184, \"ph\": \"X\", \"dur\": 0.36544108192725683, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.612, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.122, \"ph\": \"X\", \"dur\": 0.5595114994968171, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.919, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.895, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.843, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.199, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344840.797, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.508, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.483, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.407, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.771, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.369, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.015, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.988, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.937, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.295, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344841.894, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.548, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.521, \"ph\": \"X\", \"dur\": 0.2127790053815359, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.47, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.825, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344842.427, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344839.986, \"ph\": \"X\", \"dur\": 2.9427361389050164, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344839.93, \"ph\": \"X\", \"dur\": 3.040270243364782, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.011, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.427, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.402, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.352, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.676, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.31, \"ph\": \"X\", \"dur\": 0.42979862400045293, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.998, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.974, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.904, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344844.276, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.858, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344845.576, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344845.549, \"ph\": \"X\", \"dur\": 0.2639158120676025, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344845.49, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344845.903, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344845.438, \"ph\": \"X\", \"dur\": 0.5325711330475723, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.206, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.182, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.114, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.501, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.066, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.773, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.745, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.697, \"ph\": \"X\", \"dur\": 0.33999740250297006, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.088, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344846.657, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.217, \"ph\": \"X\", \"dur\": 3.9909159520506363, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344843.173, \"ph\": \"X\", \"dur\": 4.070240364373412, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.275, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.675, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.651, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.6, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.933, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.559, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.201, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.179, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.13, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.458, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.087, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.711, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.685, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.637, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.992, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344848.593, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.241, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.216, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.167, \"ph\": \"X\", \"dur\": 0.3826529827142744, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.611, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.126, \"ph\": \"X\", \"dur\": 0.556268677609408, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.914, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.885, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.827, \"ph\": \"X\", \"dur\": 0.3574587511274806, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.239, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344849.776, \"ph\": \"X\", \"dur\": 0.5273327284602191, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.448, \"ph\": \"X\", \"dur\": 2.913301294080841, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344847.407, \"ph\": \"X\", \"dur\": 2.992875154241111, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.431, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.816, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.79, \"ph\": \"X\", \"dur\": 1.202338576716299, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.741, \"ph\": \"X\", \"dur\": 1.2814135412015826, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.085, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.7, \"ph\": \"X\", \"dur\": 1.4517864142093069, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.394, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.368, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.312, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.691, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.262, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.958, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.933, \"ph\": \"X\", \"dur\": 0.23996881966827377, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.883, \"ph\": \"X\", \"dur\": 0.3170482014536133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.251, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344852.838, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.519, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.493, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.445, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.784, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.395, \"ph\": \"X\", \"dur\": 0.45549175126223274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344854.039, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344854.012, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.964, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344854.323, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344853.922, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.595, \"ph\": \"X\", \"dur\": 3.851225163054552, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344850.549, \"ph\": \"X\", \"dur\": 3.9322957102397793, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344854.51, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344854.613, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344861.294, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 5.113733312495218}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344861.545, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344861.793, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.148, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.261, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.098, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.719, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.838, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344862.651, \"ph\": \"X\", \"dur\": 0.4193218148257466, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.142, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.106, \"ph\": \"X\", \"dur\": 0.1479225676333538, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.324, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.288, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.416, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.525, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.678, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344863.927, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344864.475, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344866.497, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344866.823, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344867.356, \"ph\": \"X\", \"dur\": 0.6168845021202091, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344867.31, \"ph\": \"X\", \"dur\": 0.6889749271556883, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344867.071, \"ph\": \"X\", \"dur\": 1.0242328207462912, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344866.449, \"ph\": \"X\", \"dur\": 1.6810289768653814, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344866.29, \"ph\": \"X\", \"dur\": 1.8940574300844104, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344868.652, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344868.944, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344869.217, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344869.702, \"ph\": \"X\", \"dur\": 0.5046329752483554, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344869.67, \"ph\": \"X\", \"dur\": 0.5620059778717472, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344869.334, \"ph\": \"X\", \"dur\": 0.9616214135355461, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344868.909, \"ph\": \"X\", \"dur\": 1.4198570910102022, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344868.763, \"ph\": \"X\", \"dur\": 1.6186670174921294, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344870.64, \"ph\": \"X\", \"dur\": 0.09753410445976615, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344870.985, \"ph\": \"X\", \"dur\": 0.12098220118410892, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344871.182, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344870.867, \"ph\": \"X\", \"dur\": 0.44825776397493555, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344871.595, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344871.911, \"ph\": \"X\", \"dur\": 0.18209692136989591, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344874.215, \"ph\": \"X\", \"dur\": 0.12846563630889915, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344874.136, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344861.901, \"ph\": \"X\", \"dur\": 12.721340816468427, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344874.826, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344875.146, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344875.511, \"ph\": \"X\", \"dur\": 0.5260854892727541, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344875.113, \"ph\": \"X\", \"dur\": 0.9833233753974379, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344874.958, \"ph\": \"X\", \"dur\": 1.1881200499791975, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344861.696, \"ph\": \"X\", \"dur\": 14.593945732528438, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.467, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.992, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.953, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.869, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.366, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.823, \"ph\": \"X\", \"dur\": 0.6118955453703488, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.676, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.649, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.598, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.957, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344877.559, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.231, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.203, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.156, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.489, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.101, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.762, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.738, \"ph\": \"X\", \"dur\": 1.2592126836647048, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.686, \"ph\": \"X\", \"dur\": 1.3452721875997926, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.087, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344878.625, \"ph\": \"X\", \"dur\": 1.5328569613945346, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.359, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.33, \"ph\": \"X\", \"dur\": 0.25443679424286825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.276, \"ph\": \"X\", \"dur\": 0.339498506827984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.671, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.23, \"ph\": \"X\", \"dur\": 0.5051318709233413, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.681, \"ph\": \"X\", \"dur\": 4.097679626497643, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344876.628, \"ph\": \"X\", \"dur\": 4.190723669882535, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.851, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.225, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.2, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.15, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.489, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.11, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.801, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.777, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.707, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.065, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.664, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.33, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.307, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.257, \"ph\": \"X\", \"dur\": 0.401860466201236, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.722, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.214, \"ph\": \"X\", \"dur\": 0.5767234002838347, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.044, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.015, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.956, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.337, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344882.904, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.625, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.6, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.549, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.935, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344883.505, \"ph\": \"X\", \"dur\": 0.5151097844230617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344881.019, \"ph\": \"X\", \"dur\": 3.058479935501772, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344880.973, \"ph\": \"X\", \"dur\": 3.143791095924381, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.166, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.553, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.53, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.48, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.825, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.438, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344885.101, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344885.078, \"ph\": \"X\", \"dur\": 1.1282525689808756, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344885.026, \"ph\": \"X\", \"dur\": 1.208824220491117, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.295, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.983, \"ph\": \"X\", \"dur\": 1.381691571873772, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.607, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.563, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.505, \"ph\": \"X\", \"dur\": 0.3616993643648617, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.922, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344886.453, \"ph\": \"X\", \"dur\": 0.5353150592599953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.198, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.172, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.123, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.487, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.068, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.761, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.738, \"ph\": \"X\", \"dur\": 0.2137767967315079, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.668, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.025, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344887.625, \"ph\": \"X\", \"dur\": 0.4659685604369391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.341, \"ph\": \"X\", \"dur\": 3.8070728958182896, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344884.301, \"ph\": \"X\", \"dur\": 3.885648964628587, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.216, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.574, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.55, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.5, \"ph\": \"X\", \"dur\": 0.36095102085238273, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.911, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.459, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.199, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.167, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.102, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.472, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.06, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.719, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.695, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.648, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.974, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344889.605, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.225, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.2, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.153, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.472, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.108, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.738, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.714, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.666, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.989, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344890.624, \"ph\": \"X\", \"dur\": 0.42281408455064873, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.357, \"ph\": \"X\", \"dur\": 3.6229803917484498, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344888.316, \"ph\": \"X\", \"dur\": 3.7067948651461, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344892.059, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344892.195, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344898.763, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.981436131785439}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344898.992, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.208, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.507, \"ph\": \"X\", \"dur\": 0.056624659110912835, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.603, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.46, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.991, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.127, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.96, \"ph\": \"X\", \"dur\": 0.3891386264890926, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.424, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.384, \"ph\": \"X\", \"dur\": 0.12771729279642013, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.573, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.542, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.661, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.772, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344900.923, \"ph\": \"X\", \"dur\": 0.02095361834941268, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344901.145, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344901.741, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.088, \"ph\": \"X\", \"dur\": 0.0586202418108569, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.371, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.827, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.779, \"ph\": \"X\", \"dur\": 0.5911913748584292, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.579, \"ph\": \"X\", \"dur\": 0.8827958968877556, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344902.021, \"ph\": \"X\", \"dur\": 1.4717422412087475, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344901.859, \"ph\": \"X\", \"dur\": 1.6872651728027068, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.067, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.35, \"ph\": \"X\", \"dur\": 0.07333766422294438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.592, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344905.04, \"ph\": \"X\", \"dur\": 0.4073483186260822, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.968, \"ph\": \"X\", \"dur\": 0.5066285579482994, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.713, \"ph\": \"X\", \"dur\": 0.8463765126137764, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.318, \"ph\": \"X\", \"dur\": 1.296629859288656, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344904.176, \"ph\": \"X\", \"dur\": 1.4879563506457933, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344905.861, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344906.156, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344906.316, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344906.079, \"ph\": \"X\", \"dur\": 0.400363779176278, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344906.758, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344907.05, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344909.226, \"ph\": \"X\", \"dur\": 0.12422502307151802, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344909.142, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.31, \"ph\": \"X\", \"dur\": 10.247067716375279, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344910.852, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344911.169, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344911.523, \"ph\": \"X\", \"dur\": 0.5777211916338068, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344911.134, \"ph\": \"X\", \"dur\": 1.0372041082959276, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344910.969, \"ph\": \"X\", \"dur\": 1.2542237269148448, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344899.12, \"ph\": \"X\", \"dur\": 13.220735387129428, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344912.511, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.025, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.001, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344912.921, \"ph\": \"X\", \"dur\": 0.4218162932006767, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.396, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344912.872, \"ph\": \"X\", \"dur\": 0.5941847489083453, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.682, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.661, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.61, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.963, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344913.568, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.219, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.194, \"ph\": \"X\", \"dur\": 0.21028452700660583, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.147, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.481, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.105, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.718, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.693, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.643, \"ph\": \"X\", \"dur\": 0.338999611152998, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.06, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344914.6, \"ph\": \"X\", \"dur\": 0.5290788633226702, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.333, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.306, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.251, \"ph\": \"X\", \"dur\": 0.3474808376277603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.653, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.201, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344912.74, \"ph\": \"X\", \"dur\": 3.030292329865062, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344912.687, \"ph\": \"X\", \"dur\": 3.121839686224996, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.84, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.218, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.194, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.147, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.482, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.106, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.766, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.745, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.694, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344917.022, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.655, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344917.282, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344917.257, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344917.208, \"ph\": \"X\", \"dur\": 1.266446670952002, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344918.522, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344917.168, \"ph\": \"X\", \"dur\": 1.4280888696474712, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344918.86, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344918.822, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344918.763, \"ph\": \"X\", \"dur\": 0.3499753160026904, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.166, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344918.686, \"ph\": \"X\", \"dur\": 0.5502819295095759, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.451, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.422, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.37, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.743, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.324, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344916.004, \"ph\": \"X\", \"dur\": 3.8664414811416252, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344915.958, \"ph\": \"X\", \"dur\": 3.9527504329142062, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344919.943, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.344, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.319, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.257, \"ph\": \"X\", \"dur\": 0.3497258681651973, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.711, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.213, \"ph\": \"X\", \"dur\": 0.5615070821967612, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.032, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.004, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.951, \"ph\": \"X\", \"dur\": 0.35895543815243863, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.359, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.881, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.672, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.63, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.556, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.969, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344921.51, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.252, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.221, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.175, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.529, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.113, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.806, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.778, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.725, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.076, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344922.678, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.116, \"ph\": \"X\", \"dur\": 3.09065870653837, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344920.046, \"ph\": \"X\", \"dur\": 3.214384833934902, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.293, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.681, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.657, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.608, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344924.872, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.567, \"ph\": \"X\", \"dur\": 1.3727114497240234, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.207, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.185, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.118, \"ph\": \"X\", \"dur\": 0.3419929852029141, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.511, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.071, \"ph\": \"X\", \"dur\": 0.5068780057857925, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.811, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.782, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.734, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.126, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344925.667, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.397, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.371, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.308, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.672, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.264, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.949, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.922, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.874, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344927.218, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344926.827, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.437, \"ph\": \"X\", \"dur\": 3.9016136262281393, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344923.391, \"ph\": \"X\", \"dur\": 3.985178651788297, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344927.407, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344927.546, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.003, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.85763710048502}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.215, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.407, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.705, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.838, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.662, \"ph\": \"X\", \"dur\": 0.5001429141734812, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.24, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.34, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.196, \"ph\": \"X\", \"dur\": 0.3836507740642464, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.667, \"ph\": \"X\", \"dur\": 0.033924905899049104, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.614, \"ph\": \"X\", \"dur\": 0.13395348873374532, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.809, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.78, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344935.901, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344936.027, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344936.177, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344936.418, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344936.997, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344937.356, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344937.647, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344939.433, \"ph\": \"X\", \"dur\": 0.6071560364579817, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344939.329, \"ph\": \"X\", \"dur\": 0.739113942491783, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344938.936, \"ph\": \"X\", \"dur\": 1.2113186988660474, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344937.323, \"ph\": \"X\", \"dur\": 2.8594205611823518, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344937.119, \"ph\": \"X\", \"dur\": 3.1208418948750243, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344940.708, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344940.998, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344941.257, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344941.712, \"ph\": \"X\", \"dur\": 0.4083461099760542, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344941.68, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344941.381, \"ph\": \"X\", \"dur\": 0.832906329389154, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344940.965, \"ph\": \"X\", \"dur\": 1.3036143987384603, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344940.817, \"ph\": \"X\", \"dur\": 1.5059165949452897, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344942.556, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344942.825, \"ph\": \"X\", \"dur\": 0.1334545930587593, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344943.027, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344942.775, \"ph\": \"X\", \"dur\": 0.40011433133878493, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344943.491, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344943.77, \"ph\": \"X\", \"dur\": 0.22126023185629817, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344946.032, \"ph\": \"X\", \"dur\": 0.07533324692288844, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344945.981, \"ph\": \"X\", \"dur\": 0.16713005112031543, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.495, \"ph\": \"X\", \"dur\": 11.865485286029916, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344946.5, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344946.824, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344947.205, \"ph\": \"X\", \"dur\": 0.5839573875711319, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344946.793, \"ph\": \"X\", \"dur\": 1.05067429152055, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344946.614, \"ph\": \"X\", \"dur\": 1.2804157498516107, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344934.324, \"ph\": \"X\", \"dur\": 13.724370571027812, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.202, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.706, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.679, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.604, \"ph\": \"X\", \"dur\": 0.3771651302894283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.037, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.557, \"ph\": \"X\", \"dur\": 0.5460413162721947, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.309, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.284, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.236, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.622, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.194, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.869, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.843, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.794, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344950.13, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344949.756, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344950.387, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344950.363, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344950.307, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344951.597, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344950.264, \"ph\": \"X\", \"dur\": 1.4068858034605656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344951.92, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344951.894, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344951.837, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.249, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344951.773, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.425, \"ph\": \"X\", \"dur\": 3.9357879799646818, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344948.369, \"ph\": \"X\", \"dur\": 4.03107705388701, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.446, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.874, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.852, \"ph\": \"X\", \"dur\": 0.2644147077425886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.794, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.191, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.754, \"ph\": \"X\", \"dur\": 0.5023879447109183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.484, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.459, \"ph\": \"X\", \"dur\": 0.2349798629184136, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.404, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.771, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.363, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.036, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.012, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.962, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.303, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344953.92, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.585, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.561, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.513, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.915, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344954.45, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.163, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.14, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.091, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.451, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.05, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.653, \"ph\": \"X\", \"dur\": 2.9128023984058555, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344952.608, \"ph\": \"X\", \"dur\": 2.9923762585661247, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.633, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.991, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.968, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.918, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344956.249, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.877, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344956.525, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344956.499, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344956.45, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344957.708, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344956.407, \"ph\": \"X\", \"dur\": 1.381691571873772, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344957.999, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344957.971, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344957.918, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.292, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344957.872, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.588, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.549, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.499, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.9, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344958.457, \"ph\": \"X\", \"dur\": 0.5118669625356526, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.158, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.133, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.084, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.45, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.042, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.788, \"ph\": \"X\", \"dur\": 3.850476819542073, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344955.747, \"ph\": \"X\", \"dur\": 3.9312979188898076, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.709, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.086, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.059, \"ph\": \"X\", \"dur\": 0.278134338804704, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.007, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.426, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.969, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.737, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.712, \"ph\": \"X\", \"dur\": 0.2534390028928962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.654, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.048, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344960.603, \"ph\": \"X\", \"dur\": 0.5475380032971527, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.37, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.345, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.293, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.642, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.249, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.957, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.934, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.886, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.222, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344961.821, \"ph\": \"X\", \"dur\": 0.4971495401235651, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.513, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.49, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.443, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.775, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344962.396, \"ph\": \"X\", \"dur\": 0.4759464739366594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.866, \"ph\": \"X\", \"dur\": 3.0986410373381466, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344959.825, \"ph\": \"X\", \"dur\": 3.176219314798472, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344963.95, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344964.08, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344970.65, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.724378983263017}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344970.881, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.112, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.397, \"ph\": \"X\", \"dur\": 0.05812134613587089, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.505, \"ph\": \"X\", \"dur\": 0.30183188336653977, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.364, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.918, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.038, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.876, \"ph\": \"X\", \"dur\": 0.39288034405148775, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.355, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.315, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.484, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.455, \"ph\": \"X\", \"dur\": 0.0863089517725808, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.573, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.695, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344972.848, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344973.117, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344973.751, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344974.095, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344974.502, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344975.02, \"ph\": \"X\", \"dur\": 0.6136416802327999, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344974.953, \"ph\": \"X\", \"dur\": 0.7156658457674402, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344974.753, \"ph\": \"X\", \"dur\": 0.9918046018722001, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344974.061, \"ph\": \"X\", \"dur\": 1.7448876232635917, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344973.9, \"ph\": \"X\", \"dur\": 1.9818630688819492, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344976.357, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344976.718, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344976.989, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344977.518, \"ph\": \"X\", \"dur\": 0.45399506423727476, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344977.489, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344977.123, \"ph\": \"X\", \"dur\": 0.9561335611107, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344976.649, \"ph\": \"X\", \"dur\": 1.48271794605844, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344976.465, \"ph\": \"X\", \"dur\": 1.7169494654643747, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344978.46, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344978.728, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344978.918, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344978.676, \"ph\": \"X\", \"dur\": 0.3791607129893723, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344979.42, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344979.687, \"ph\": \"X\", \"dur\": 0.18733532595724905, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344981.877, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344981.786, \"ph\": \"X\", \"dur\": 0.21427569240649394, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.216, \"ph\": \"X\", \"dur\": 10.943276630818266, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344982.294, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344982.606, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344985.216, \"ph\": \"X\", \"dur\": 0.5592620516593241, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344982.575, \"ph\": \"X\", \"dur\": 3.2682655668333918, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344982.395, \"ph\": \"X\", \"dur\": 3.5005015035393825, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344971.013, \"ph\": \"X\", \"dur\": 15.03197613516616, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.241, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.755, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.728, \"ph\": \"X\", \"dur\": 0.26092243801768644, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.671, \"ph\": \"X\", \"dur\": 0.3474808376277603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.078, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.621, \"ph\": \"X\", \"dur\": 0.5398051203348695, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.381, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.355, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.305, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.659, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.261, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.92, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.896, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.842, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.185, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344987.8, \"ph\": \"X\", \"dur\": 0.4500038988373866, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.432, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.407, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.351, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.684, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.305, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.99, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.962, \"ph\": \"X\", \"dur\": 0.246953359118078, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.907, \"ph\": \"X\", \"dur\": 0.3305183846782357, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.282, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344988.859, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.466, \"ph\": \"X\", \"dur\": 2.921782520555604, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344986.413, \"ph\": \"X\", \"dur\": 3.0098376071906356, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.455, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.869, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.845, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.789, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.129, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.743, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.42, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.396, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.342, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.716, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.299, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.98, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.953, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.906, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344991.226, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344990.861, \"ph\": \"X\", \"dur\": 1.4004001596857474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344992.51, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344992.482, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344992.426, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344992.834, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344992.374, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.153, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.128, \"ph\": \"X\", \"dur\": 0.23647654994337164, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.079, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.468, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.023, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.628, \"ph\": \"X\", \"dur\": 3.9667195118138148, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344989.583, \"ph\": \"X\", \"dur\": 4.048787850349014, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.663, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.052, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.027, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.976, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.315, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.935, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.593, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.569, \"ph\": \"X\", \"dur\": 0.2122801097065499, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.52, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.86, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.472, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.109, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.086, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.039, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.373, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344994.997, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.628, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.605, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.559, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.891, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344995.514, \"ph\": \"X\", \"dur\": 0.43927764182518725, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.14, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.116, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.068, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.41, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.026, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.823, \"ph\": \"X\", \"dur\": 2.722972594073676, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344993.783, \"ph\": \"X\", \"dur\": 2.7985552888340575, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.615, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.965, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.942, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.893, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344997.243, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.853, \"ph\": \"X\", \"dur\": 1.3734597932365025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.504, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.479, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.41, \"ph\": \"X\", \"dur\": 0.37167727786458205, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.835, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.349, \"ph\": \"X\", \"dur\": 0.5577653646343661, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.141, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.096, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.031, \"ph\": \"X\", \"dur\": 0.339249058990491, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.421, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344998.984, \"ph\": \"X\", \"dur\": 0.5076263492982714, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.697, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.669, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.616, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.974, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344999.569, \"ph\": \"X\", \"dur\": 0.5063791101108064, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.266, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.243, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.191, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.517, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.149, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.752, \"ph\": \"X\", \"dur\": 3.891635712728419, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995344996.711, \"ph\": \"X\", \"dur\": 3.995904908800496, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.737, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345000.846, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345007.364, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.60222859412828}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345007.604, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345007.84, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.179, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.31, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.106, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.728, \"ph\": \"X\", \"dur\": 0.05762245046088487, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.838, \"ph\": \"X\", \"dur\": 0.18633753460727703, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345008.668, \"ph\": \"X\", \"dur\": 0.38215408703928844, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.116, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.086, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.278, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.23, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.365, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.507, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.676, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345009.923, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345010.569, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345010.908, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345011.18, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345011.705, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345011.64, \"ph\": \"X\", \"dur\": 0.6071560364579817, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345011.421, \"ph\": \"X\", \"dur\": 1.9347174275957706, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345010.873, \"ph\": \"X\", \"dur\": 2.5378822986538645, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345010.693, \"ph\": \"X\", \"dur\": 2.772363265897292, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.015, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.325, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.584, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345015.206, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345015.128, \"ph\": \"X\", \"dur\": 0.585952970271076, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.714, \"ph\": \"X\", \"dur\": 1.0663895052826096, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.29, \"ph\": \"X\", \"dur\": 1.5231284957323072, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345014.148, \"ph\": \"X\", \"dur\": 1.7199428395142906, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345016.089, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345016.384, \"ph\": \"X\", \"dur\": 0.14093802818354956, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345016.592, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345016.274, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345016.996, \"ph\": \"X\", \"dur\": 0.2132779010565219, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345017.272, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345019.478, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345019.427, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345007.954, \"ph\": \"X\", \"dur\": 11.835551545530754, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345019.98, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345020.294, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345020.641, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345020.243, \"ph\": \"X\", \"dur\": 0.9965441107845674, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345020.094, \"ph\": \"X\", \"dur\": 1.2100714596785822, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345007.748, \"ph\": \"X\", \"dur\": 13.689697321616284, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345021.624, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.158, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.131, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.074, \"ph\": \"X\", \"dur\": 0.35296869005260645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.478, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.024, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.779, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.753, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.701, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.068, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345022.658, \"ph\": \"X\", \"dur\": 0.4786904001490825, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.316, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.29, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.235, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.599, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.192, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.846, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.82, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.766, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345024.145, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345023.726, \"ph\": \"X\", \"dur\": 2.1846641607637647, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.147, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.119, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.059, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.453, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.008, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345021.877, \"ph\": \"X\", \"dur\": 4.6898687927060445, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345021.825, \"ph\": \"X\", \"dur\": 4.782413940415951, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.642, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.038, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.014, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.964, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.342, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.919, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.724, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.696, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.649, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.016, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345027.607, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.366, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.342, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.289, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.626, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.245, \"ph\": \"X\", \"dur\": 0.4699597258368272, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.933, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.905, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.853, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.215, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345028.808, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.557, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.531, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.478, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.809, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345029.43, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.815, \"ph\": \"X\", \"dur\": 3.1131090119127407, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345026.77, \"ph\": \"X\", \"dur\": 3.1959256939604197, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.01, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.369, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.344, \"ph\": \"X\", \"dur\": 0.2499467331679941, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.291, \"ph\": \"X\", \"dur\": 0.3320150717031938, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.671, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.247, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.945, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.919, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.871, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345031.206, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.829, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.377, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.347, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.295, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.698, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.232, \"ph\": \"X\", \"dur\": 0.5305755503476283, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.0, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.951, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.898, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.275, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345032.84, \"ph\": \"X\", \"dur\": 0.5031362882233973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.541, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.515, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.467, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.848, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345033.421, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.153, \"ph\": \"X\", \"dur\": 3.815803570130545, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345030.111, \"ph\": \"X\", \"dur\": 3.9123398832403384, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.054, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.423, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.4, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.348, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.68, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.303, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.976, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.948, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.897, \"ph\": \"X\", \"dur\": 0.3327634152156728, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.277, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.852, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.574, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.53, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.464, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.858, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345035.419, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.144, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.117, \"ph\": \"X\", \"dur\": 0.2309886975185255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.055, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.425, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.01, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.687, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.66, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.607, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.942, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345036.562, \"ph\": \"X\", \"dur\": 0.4467610769499775, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.211, \"ph\": \"X\", \"dur\": 2.8534338130825194, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345034.166, \"ph\": \"X\", \"dur\": 2.936998838642677, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345037.133, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345037.278, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345044.701, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.467716736914177}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345044.981, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.214, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.553, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.654, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.51, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.073, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.196, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.025, \"ph\": \"X\", \"dur\": 0.41682733645081654, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.517, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.485, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.664, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.633, \"ph\": \"X\", \"dur\": 0.10651422660951446, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.773, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345046.88, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345047.026, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345047.296, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345047.863, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.234, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.498, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345049.053, \"ph\": \"X\", \"dur\": 0.5310744460226142, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.968, \"ph\": \"X\", \"dur\": 0.6420787337070029, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.729, \"ph\": \"X\", \"dur\": 0.9691048486603364, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.183, \"ph\": \"X\", \"dur\": 1.5697752413434998, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345048.012, \"ph\": \"X\", \"dur\": 1.7945277429247002, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345050.331, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345050.624, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345050.913, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345051.357, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345051.3, \"ph\": \"X\", \"dur\": 0.5235910108978239, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345051.018, \"ph\": \"X\", \"dur\": 0.8835442404002347, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345050.591, \"ph\": \"X\", \"dur\": 1.3412810221999045, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345050.438, \"ph\": \"X\", \"dur\": 1.5448304575941991, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345052.269, \"ph\": \"X\", \"dur\": 0.09354293905987804, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345052.575, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345052.747, \"ph\": \"X\", \"dur\": 0.05961803316082893, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345052.498, \"ph\": \"X\", \"dur\": 0.35296869005260645, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345053.223, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345053.518, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345055.791, \"ph\": \"X\", \"dur\": 0.12846563630889915, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345055.738, \"ph\": \"X\", \"dur\": 0.22175912753128418, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.313, \"ph\": \"X\", \"dur\": 10.84424583933354, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345056.297, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345056.637, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345057.028, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345056.605, \"ph\": \"X\", \"dur\": 0.9693542964978294, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345056.417, \"ph\": \"X\", \"dur\": 2.2043705399257125, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345045.116, \"ph\": \"X\", \"dur\": 13.658266894092165, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345058.988, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.561, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.524, \"ph\": \"X\", \"dur\": 0.34573470276530915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.412, \"ph\": \"X\", \"dur\": 0.5053813187608344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.97, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.363, \"ph\": \"X\", \"dur\": 0.678747565818475, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.267, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.244, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.18, \"ph\": \"X\", \"dur\": 0.3639443949022988, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.593, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.139, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.847, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.824, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.774, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.132, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345060.735, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.37, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.346, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.295, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.627, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.254, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.863, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.842, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.79, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.148, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345061.747, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.237, \"ph\": \"X\", \"dur\": 3.0170715944779327, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345059.183, \"ph\": \"X\", \"dur\": 3.1076211594878944, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.322, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.716, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.692, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.641, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.984, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.604, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.319, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.297, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.248, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.597, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.205, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.861, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.837, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.789, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345064.119, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345063.746, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345064.404, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345064.379, \"ph\": \"X\", \"dur\": 1.1813849583668863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345064.331, \"ph\": \"X\", \"dur\": 1.261457714202142, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345065.644, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345064.287, \"ph\": \"X\", \"dur\": 1.4380667831471916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345065.945, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345065.913, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345065.86, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.26, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345065.815, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.493, \"ph\": \"X\", \"dur\": 3.8986202521782234, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345062.45, \"ph\": \"X\", \"dur\": 3.981436934225902, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.467, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.85, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.826, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.772, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.143, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.727, \"ph\": \"X\", \"dur\": 0.4806859828490266, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.425, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.402, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.35, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.72, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.304, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.984, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.959, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.908, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.239, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345067.865, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.507, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.482, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.434, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.774, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.391, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.046, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.023, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.974, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.31, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345068.931, \"ph\": \"X\", \"dur\": 0.44202156803761034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.636, \"ph\": \"X\", \"dur\": 2.7930674364092116, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345066.579, \"ph\": \"X\", \"dur\": 2.8866103754690893, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.495, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.836, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.813, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.761, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345070.084, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.719, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345070.359, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345070.333, \"ph\": \"X\", \"dur\": 1.1454644697678933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345070.282, \"ph\": \"X\", \"dur\": 1.2275328083030927, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345071.572, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345070.24, \"ph\": \"X\", \"dur\": 1.4011485031982263, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345071.868, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345071.841, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345071.784, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.174, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345071.732, \"ph\": \"X\", \"dur\": 0.5063791101108064, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.446, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.424, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.369, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.731, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.322, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.997, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.972, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.92, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345073.278, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345072.878, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.631, \"ph\": \"X\", \"dur\": 3.772898542081747, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345069.591, \"ph\": \"X\", \"dur\": 3.8821566949036845, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345073.507, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345073.646, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.097, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.3477068074914715}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.333, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.547, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.887, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.997, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.857, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.462, \"ph\": \"X\", \"dur\": 0.08830453447252487, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.58, \"ph\": \"X\", \"dur\": 0.18484084758231897, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.411, \"ph\": \"X\", \"dur\": 0.38015850433934434, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.857, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.826, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.99, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345081.958, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345082.078, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345082.18, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345082.356, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345082.594, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345083.176, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345083.517, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345083.805, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345084.331, \"ph\": \"X\", \"dur\": 0.5610081865217752, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345084.276, \"ph\": \"X\", \"dur\": 0.6590411866565273, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345084.017, \"ph\": \"X\", \"dur\": 1.0122593245466267, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345083.447, \"ph\": \"X\", \"dur\": 1.6603248063534617, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345083.291, \"ph\": \"X\", \"dur\": 2.8733896400819603, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345086.71, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345087.014, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345087.262, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345087.685, \"ph\": \"X\", \"dur\": 0.5268338327852331, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345087.589, \"ph\": \"X\", \"dur\": 0.649063273156807, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345087.373, \"ph\": \"X\", \"dur\": 0.9354293905987803, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345086.981, \"ph\": \"X\", \"dur\": 1.3612368491993452, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345086.835, \"ph\": \"X\", \"dur\": 1.5615434627062308, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345088.622, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345088.912, \"ph\": \"X\", \"dur\": 0.14268416304600062, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345089.115, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345088.817, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345089.513, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345089.821, \"ph\": \"X\", \"dur\": 0.18184747353240288, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.073, \"ph\": \"X\", \"dur\": 0.11823827497168582, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.001, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.652, \"ph\": \"X\", \"dur\": 11.764458911845248, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.574, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.922, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345093.277, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.867, \"ph\": \"X\", \"dur\": 0.9863167494473539, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345092.698, \"ph\": \"X\", \"dur\": 1.2043341594162429, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345080.47, \"ph\": \"X\", \"dur\": 13.585428125544206, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.26, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.798, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.774, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.697, \"ph\": \"X\", \"dur\": 0.38315187838926046, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.131, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.653, \"ph\": \"X\", \"dur\": 0.5492841381596038, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.404, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.38, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.33, \"ph\": \"X\", \"dur\": 0.29434844824174955, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.672, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.29, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.923, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.899, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.849, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.2, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345095.809, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.476, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.452, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.4, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.764, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.356, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345097.131, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345097.1, \"ph\": \"X\", \"dur\": 1.4096297296729887, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345097.053, \"ph\": \"X\", \"dur\": 1.4879563506457933, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345098.6, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345096.971, \"ph\": \"X\", \"dur\": 1.6982408776523992, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.517, \"ph\": \"X\", \"dur\": 4.199703792032284, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345094.466, \"ph\": \"X\", \"dur\": 4.291500596229711, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345098.792, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.23, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.201, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.151, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.525, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.081, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.83, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.803, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.755, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.129, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345099.713, \"ph\": \"X\", \"dur\": 0.4806859828490266, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.424, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.4, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.349, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.718, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.304, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.983, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.96, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.909, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.253, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345100.867, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.52, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.494, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.444, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.819, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345101.401, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345098.971, \"ph\": \"X\", \"dur\": 2.999111350178436, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345098.909, \"ph\": \"X\", \"dur\": 3.1001377243631048, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.041, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.432, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.406, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.358, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.682, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.315, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.958, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.932, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.882, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345103.23, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.839, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345103.513, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345103.489, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345103.439, \"ph\": \"X\", \"dur\": 1.1776432408044912, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345104.665, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345103.395, \"ph\": \"X\", \"dur\": 1.3362920654500443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345104.96, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345104.935, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345104.883, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.24, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345104.841, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.527, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.499, \"ph\": \"X\", \"dur\": 0.24296219371818986, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.441, \"ph\": \"X\", \"dur\": 0.3320150717031938, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.825, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345105.398, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.224, \"ph\": \"X\", \"dur\": 3.735481366457796, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345102.186, \"ph\": \"X\", \"dur\": 3.8105651655431916, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.028, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.44, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.414, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.364, \"ph\": \"X\", \"dur\": 0.31430427524119015, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.724, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.318, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.025, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.0, \"ph\": \"X\", \"dur\": 0.2596751988302214, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.942, \"ph\": \"X\", \"dur\": 0.34673249411528123, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.34, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.897, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.617, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.59, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.543, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.868, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345107.499, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.118, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.092, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.047, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.368, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.007, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.623, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.597, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.548, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.892, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345108.503, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.206, \"ph\": \"X\", \"dur\": 2.8050409326088763, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345106.159, \"ph\": \"X\", \"dur\": 2.8881070624940475, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345109.076, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345109.195, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345115.581, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.2115621323682735}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345115.832, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.069, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.353, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.498, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.317, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.925, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.028, \"ph\": \"X\", \"dur\": 0.1758607254325707, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.861, \"ph\": \"X\", \"dur\": 0.38764193946413456, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.347, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.294, \"ph\": \"X\", \"dur\": 0.1601455116705112, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.546, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.498, \"ph\": \"X\", \"dur\": 0.12871508414639218, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.661, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345118.773, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345119.054, \"ph\": \"X\", \"dur\": 0.017710796462003575, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345119.3, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345119.893, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.225, \"ph\": \"X\", \"dur\": 0.09678576094728714, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.584, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.997, \"ph\": \"X\", \"dur\": 0.5637521127341982, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.95, \"ph\": \"X\", \"dur\": 0.6403325988445517, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.694, \"ph\": \"X\", \"dur\": 0.9778355229725917, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.178, \"ph\": \"X\", \"dur\": 1.5278680046446746, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345120.032, \"ph\": \"X\", \"dur\": 1.7376536359762942, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.293, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.577, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.792, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345123.241, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345123.169, \"ph\": \"X\", \"dur\": 0.5293283111601631, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.91, \"ph\": \"X\", \"dur\": 0.9007561411872522, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.545, \"ph\": \"X\", \"dur\": 1.3198285081755057, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345122.4, \"ph\": \"X\", \"dur\": 1.5176406433074612, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345124.141, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345124.394, \"ph\": \"X\", \"dur\": 0.12397557523402501, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345124.58, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345124.313, \"ph\": \"X\", \"dur\": 0.3973704051263619, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345125.013, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345125.307, \"ph\": \"X\", \"dur\": 0.18982980433217916, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345127.593, \"ph\": \"X\", \"dur\": 0.12796674063391314, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345127.531, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345117.174, \"ph\": \"X\", \"dur\": 10.761179709448369, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345128.056, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345128.403, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345128.79, \"ph\": \"X\", \"dur\": 0.5635026648967053, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345128.354, \"ph\": \"X\", \"dur\": 1.0865947801195432, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345128.161, \"ph\": \"X\", \"dur\": 1.3327997957251423, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345116.929, \"ph\": \"X\", \"dur\": 12.704627811356396, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345130.82, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.414, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.388, \"ph\": \"X\", \"dur\": 0.37591789110196316, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.306, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.855, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.241, \"ph\": \"X\", \"dur\": 0.7171625327923983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.186, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.162, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.113, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.456, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.07, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.693, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.667, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.618, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.011, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345132.578, \"ph\": \"X\", \"dur\": 0.4986462271485232, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.322, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.278, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.23, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.605, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.139, \"ph\": \"X\", \"dur\": 0.5343172679100233, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.862, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.838, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.784, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.141, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345133.741, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.103, \"ph\": \"X\", \"dur\": 3.153519561586608, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345131.036, \"ph\": \"X\", \"dur\": 3.27724568898314, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.354, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.716, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.692, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.641, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.968, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.596, \"ph\": \"X\", \"dur\": 0.44950500316240055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.268, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.244, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.193, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.521, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.153, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.787, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.762, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.71, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345136.064, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345135.669, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345136.323, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345136.296, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345136.245, \"ph\": \"X\", \"dur\": 1.3101000425132783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345137.601, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345136.201, \"ph\": \"X\", \"dur\": 1.4657554931089156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345137.867, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345137.84, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345137.787, \"ph\": \"X\", \"dur\": 0.37267506921455407, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.212, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345137.744, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.507, \"ph\": \"X\", \"dur\": 3.8307704403801255, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345134.468, \"ph\": \"X\", \"dur\": 3.9043575524405623, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.405, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.796, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.771, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.721, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.103, \"ph\": \"X\", \"dur\": 0.0586202418108569, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.678, \"ph\": \"X\", \"dur\": 0.5378095376349253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.461, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.435, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.383, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.739, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.33, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.989, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.962, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.915, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.237, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345139.87, \"ph\": \"X\", \"dur\": 0.42979862400045293, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.487, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.461, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.414, \"ph\": \"X\", \"dur\": 0.2913550741918335, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.751, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.371, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.016, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.991, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.942, \"ph\": \"X\", \"dur\": 0.339498506827984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.326, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345140.898, \"ph\": \"X\", \"dur\": 0.49166168769871893, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.569, \"ph\": \"X\", \"dur\": 2.876133566294383, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345138.526, \"ph\": \"X\", \"dur\": 2.954210739429695, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.511, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.877, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.854, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.802, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345142.155, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.753, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345142.427, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345142.403, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345142.355, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345143.563, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345142.314, \"ph\": \"X\", \"dur\": 1.3220735387129428, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345143.908, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345143.879, \"ph\": \"X\", \"dur\": 0.2561829291053193, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345143.83, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.215, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345143.741, \"ph\": \"X\", \"dur\": 0.5418007030348135, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.49, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.458, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.408, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.755, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.36, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345145.017, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.992, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.942, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345145.323, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345144.899, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.647, \"ph\": \"X\", \"dur\": 3.821291422555391, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345141.605, \"ph\": \"X\", \"dur\": 3.8988697000157164, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345145.537, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345145.657, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345152.29, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 4.094326195597174}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345152.557, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345152.805, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.128, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.242, \"ph\": \"X\", \"dur\": 0.3320150717031938, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.095, \"ph\": \"X\", \"dur\": 0.49839677931103016, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.701, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.805, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345153.644, \"ph\": \"X\", \"dur\": 0.3836507740642464, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.092, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.062, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.244, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.203, \"ph\": \"X\", \"dur\": 0.11624269227174178, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.351, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.467, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.642, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345154.934, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345155.551, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345155.856, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345156.158, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345156.995, \"ph\": \"X\", \"dur\": 0.5714849956964815, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345156.923, \"ph\": \"X\", \"dur\": 0.6717630263686708, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345156.708, \"ph\": \"X\", \"dur\": 0.957630248135658, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345155.824, \"ph\": \"X\", \"dur\": 1.8770949771348857, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345155.684, \"ph\": \"X\", \"dur\": 2.0871300563039985, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345158.279, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345159.627, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345159.867, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345160.218, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345160.161, \"ph\": \"X\", \"dur\": 0.5734805783964256, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345159.969, \"ph\": \"X\", \"dur\": 0.8373963904640281, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345159.571, \"ph\": \"X\", \"dur\": 1.2759256887767363, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345159.421, \"ph\": \"X\", \"dur\": 1.481720154708468, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345161.161, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345161.414, \"ph\": \"X\", \"dur\": 0.1172404836217138, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345161.656, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345161.344, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345162.108, \"ph\": \"X\", \"dur\": 0.1913264913571372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345162.387, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345164.729, \"ph\": \"X\", \"dur\": 0.12173054469658794, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345164.612, \"ph\": \"X\", \"dur\": 0.2908561785168474, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345152.938, \"ph\": \"X\", \"dur\": 12.14037680294721, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345165.235, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345165.544, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345165.867, \"ph\": \"X\", \"dur\": 0.5607587386842822, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345165.491, \"ph\": \"X\", \"dur\": 1.0025308588843995, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345165.337, \"ph\": \"X\", \"dur\": 1.2075769813036523, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345152.704, \"ph\": \"X\", \"dur\": 13.983047978508061, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345166.874, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.415, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.376, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.31, \"ph\": \"X\", \"dur\": 0.40535273592613813, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.77, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.245, \"ph\": \"X\", \"dur\": 0.6069065886204887, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.084, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.061, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.011, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.352, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.969, \"ph\": \"X\", \"dur\": 0.44825776397493555, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.636, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.612, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.545, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.923, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345168.504, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.159, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.135, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.084, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.432, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.042, \"ph\": \"X\", \"dur\": 0.45249837721231667, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.665, \"ph\": \"X\", \"dur\": 0.056624659110912835, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.642, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.595, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345170.888, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345169.551, \"ph\": \"X\", \"dur\": 1.4073846991355514, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.114, \"ph\": \"X\", \"dur\": 3.8956268781283074, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345167.047, \"ph\": \"X\", \"dur\": 4.002889448250301, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.114, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.549, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.511, \"ph\": \"X\", \"dur\": 0.2509445245179661, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.462, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.843, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.414, \"ph\": \"X\", \"dur\": 0.494904509586128, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.146, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.121, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.072, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.468, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.031, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.812, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.787, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.737, \"ph\": \"X\", \"dur\": 0.36219826003984773, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.147, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345172.692, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.409, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.386, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.341, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.693, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.294, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.952, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.928, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.882, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.239, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345173.838, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.301, \"ph\": \"X\", \"dur\": 3.057731591989293, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345171.253, \"ph\": \"X\", \"dur\": 3.157510726986496, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.443, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.785, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.76, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.708, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.058, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.666, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.328, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.303, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.255, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.617, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.213, \"ph\": \"X\", \"dur\": 0.4659685604369391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.863, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.84, \"ph\": \"X\", \"dur\": 0.2651630512550676, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.794, \"ph\": \"X\", \"dur\": 0.3437391200653651, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345176.186, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345175.749, \"ph\": \"X\", \"dur\": 1.9606600026950434, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345177.97, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345177.941, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345177.89, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.29, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345177.828, \"ph\": \"X\", \"dur\": 0.5285799676476841, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.652, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.592, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.507, \"ph\": \"X\", \"dur\": 0.4138339624009004, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.97, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345178.445, \"ph\": \"X\", \"dur\": 0.5901935835084571, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.58, \"ph\": \"X\", \"dur\": 4.522738741585729, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345174.538, \"ph\": \"X\", \"dur\": 4.603060945258479, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.195, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.61, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.586, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.531, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.87, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.489, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.15, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.125, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.072, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.432, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.033, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.694, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.668, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.619, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.976, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345180.577, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.231, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.206, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.158, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.482, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.114, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.781, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.757, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.708, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345182.031, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345181.66, \"ph\": \"X\", \"dur\": 0.4756970260991664, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.35, \"ph\": \"X\", \"dur\": 2.8461998257952223, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345179.304, \"ph\": \"X\", \"dur\": 2.927020925142957, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345182.262, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345182.451, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345189.534, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.9560595151466966}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345189.832, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345190.044, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.432, \"ph\": \"X\", \"dur\": 0.09304404338489201, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.578, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.373, \"ph\": \"X\", \"dur\": 0.5290788633226702, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.98, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.118, \"ph\": \"X\", \"dur\": 0.1913264913571372, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.94, \"ph\": \"X\", \"dur\": 0.39412758323895275, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.409, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.371, \"ph\": \"X\", \"dur\": 0.13370404089625235, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.576, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.539, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.697, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345192.84, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345193.184, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345193.461, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345194.153, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345194.511, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345194.903, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345195.485, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345195.447, \"ph\": \"X\", \"dur\": 0.6136416802327999, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345195.171, \"ph\": \"X\", \"dur\": 0.9838222710724238, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345194.465, \"ph\": \"X\", \"dur\": 1.724931796264151, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345194.286, \"ph\": \"X\", \"dur\": 1.970139020519778, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345196.875, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.2, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.474, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.872, \"ph\": \"X\", \"dur\": 0.5121164103731456, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.825, \"ph\": \"X\", \"dur\": 0.5822112527086808, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.604, \"ph\": \"X\", \"dur\": 0.8680784744756681, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.169, \"ph\": \"X\", \"dur\": 1.355998444611992, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345197.027, \"ph\": \"X\", \"dur\": 1.5503183100190452, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345198.811, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345199.046, \"ph\": \"X\", \"dur\": 0.12746784495892713, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345199.237, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345198.97, \"ph\": \"X\", \"dur\": 0.38988697000157163, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345199.783, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345200.078, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345202.468, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345202.406, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345191.105, \"ph\": \"X\", \"dur\": 11.714818792184138, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345202.959, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345203.338, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345203.738, \"ph\": \"X\", \"dur\": 0.5567675732843941, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345203.296, \"ph\": \"X\", \"dur\": 1.077614657969795, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345203.095, \"ph\": \"X\", \"dur\": 1.3298064216752261, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345189.979, \"ph\": \"X\", \"dur\": 14.631612355989882, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345204.796, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345205.332, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345205.309, \"ph\": \"X\", \"dur\": 1.4350734090972757, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345205.216, \"ph\": \"X\", \"dur\": 1.5568039537938634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345206.843, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345205.169, \"ph\": \"X\", \"dur\": 1.857139150135445, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.283, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.258, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.206, \"ph\": \"X\", \"dur\": 0.3736728605645261, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.633, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.159, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.901, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.877, \"ph\": \"X\", \"dur\": 0.2561829291053193, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.824, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.204, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345207.783, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.442, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.418, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.366, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.703, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.326, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.939, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.916, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.864, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.211, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345208.823, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345205.037, \"ph\": \"X\", \"dur\": 4.287010535154837, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345204.982, \"ph\": \"X\", \"dur\": 4.379555682864743, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.39, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.792, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.768, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.715, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.045, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.676, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.37, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.347, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.294, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.621, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.252, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.878, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.854, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.807, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.15, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345210.768, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.414, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.388, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.34, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.663, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345211.297, \"ph\": \"X\", \"dur\": 1.295881515776177, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345212.862, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345212.832, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345212.777, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.163, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345212.708, \"ph\": \"X\", \"dur\": 0.5230921152228379, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.575, \"ph\": \"X\", \"dur\": 3.72999351403295, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345209.533, \"ph\": \"X\", \"dur\": 3.827777066330209, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.396, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.813, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.77, \"ph\": \"X\", \"dur\": 0.2349798629184136, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.716, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.08, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.668, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.38, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.351, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.297, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.665, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.249, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.939, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.915, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.862, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.216, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345214.817, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.471, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.447, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.397, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.725, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.355, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.985, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.959, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.908, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.24, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345215.864, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.55, \"ph\": \"X\", \"dur\": 2.808782650171271, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345213.504, \"ph\": \"X\", \"dur\": 2.8930960192439077, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.429, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.802, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.773, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.723, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.112, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.682, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.388, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.361, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.312, \"ph\": \"X\", \"dur\": 0.3327634152156728, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.689, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345217.269, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345218.888, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345218.86, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345218.808, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.193, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345218.761, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.518, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.493, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.434, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.818, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.386, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.078, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.054, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.002, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.383, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345219.958, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.565, \"ph\": \"X\", \"dur\": 3.944019758601951, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345216.523, \"ph\": \"X\", \"dur\": 4.035068219286899, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.62, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345220.761, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345227.364, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.8424107161156416}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345227.624, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345227.904, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.239, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.341, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.202, \"ph\": \"X\", \"dur\": 0.525337145760275, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.81, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.901, \"ph\": \"X\", \"dur\": 0.17735741245752873, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.772, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.177, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.144, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.335, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.282, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.425, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.536, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.738, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345229.98, \"ph\": \"X\", \"dur\": 0.10576588309703543, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345230.652, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345231.024, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345231.329, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345231.835, \"ph\": \"X\", \"dur\": 0.5886968964834991, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345231.769, \"ph\": \"X\", \"dur\": 0.6797453571684471, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345231.534, \"ph\": \"X\", \"dur\": 1.0050253372593296, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345230.969, \"ph\": \"X\", \"dur\": 1.629892170179315, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345230.797, \"ph\": \"X\", \"dur\": 1.8711082290350536, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345233.225, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345233.525, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345234.861, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345235.362, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345235.274, \"ph\": \"X\", \"dur\": 0.6019176318706285, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345234.984, \"ph\": \"X\", \"dur\": 0.9656125789354343, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345233.494, \"ph\": \"X\", \"dur\": 2.5104430365296335, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345233.354, \"ph\": \"X\", \"dur\": 2.7067584846366306, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345236.341, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345236.62, \"ph\": \"X\", \"dur\": 0.09678576094728714, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345236.785, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345236.553, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345237.228, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345237.506, \"ph\": \"X\", \"dur\": 0.19282317838209526, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345239.911, \"ph\": \"X\", \"dur\": 0.09553852175982211, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345239.829, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345228.021, \"ph\": \"X\", \"dur\": 12.212217780145195, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345240.408, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345240.704, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345241.05, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345240.67, \"ph\": \"X\", \"dur\": 1.016001042109022, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345240.509, \"ph\": \"X\", \"dur\": 1.2300272866780229, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345227.819, \"ph\": \"X\", \"dur\": 14.080831530805321, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.092, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.622, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.597, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.54, \"ph\": \"X\", \"dur\": 0.39712095728886887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.004, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.48, \"ph\": \"X\", \"dur\": 0.6089021713204328, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.306, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.28, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.232, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.618, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.19, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.867, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.843, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.791, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.161, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345243.751, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.396, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.368, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.319, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.673, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.277, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.943, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.9, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.849, \"ph\": \"X\", \"dur\": 0.31305703605372515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345245.212, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345244.793, \"ph\": \"X\", \"dur\": 0.4841782525739287, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.343, \"ph\": \"X\", \"dur\": 3.930050679702342, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345242.276, \"ph\": \"X\", \"dur\": 4.063255824923608, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.376, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.845, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.816, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.762, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.138, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.716, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.437, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.414, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.363, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.704, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.32, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.972, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.945, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.894, \"ph\": \"X\", \"dur\": 0.36693776895221486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.312, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345247.854, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.57, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.545, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.497, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.853, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345248.454, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.133, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.108, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.061, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.394, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.019, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.61, \"ph\": \"X\", \"dur\": 2.901327797881177, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345246.546, \"ph\": \"X\", \"dur\": 3.015574907452975, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.592, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.934, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.911, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.86, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.189, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.82, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.555, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.514, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.389, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.875, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345250.347, \"ph\": \"X\", \"dur\": 0.5946836445833313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345251.15, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345251.125, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345251.072, \"ph\": \"X\", \"dur\": 0.30083409201656774, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345251.425, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345251.025, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345252.571, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345252.546, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345252.499, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345252.882, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345252.456, \"ph\": \"X\", \"dur\": 0.49565285309860707, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.152, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.126, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.076, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.42, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.029, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.731, \"ph\": \"X\", \"dur\": 3.858459150341849, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345249.691, \"ph\": \"X\", \"dur\": 3.9372846669896395, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.66, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.01, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.985, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.933, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.268, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.892, \"ph\": \"X\", \"dur\": 0.4447654942500334, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.549, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.525, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.476, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.826, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.431, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.074, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.048, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.003, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.32, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345254.957, \"ph\": \"X\", \"dur\": 0.4225646367131557, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.566, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.538, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.493, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.828, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.45, \"ph\": \"X\", \"dur\": 0.44177212020011736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.096, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.074, \"ph\": \"X\", \"dur\": 0.1950682089195323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.006, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.361, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345255.964, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.8, \"ph\": \"X\", \"dur\": 2.6730830265750747, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345253.759, \"ph\": \"X\", \"dur\": 2.7491646170104422, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.537, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345256.645, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345262.832, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.7013932835634638}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.066, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.271, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.585, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.695, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.54, \"ph\": \"X\", \"dur\": 1.6852695901027626, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.371, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.506, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.291, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.827, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.785, \"ph\": \"X\", \"dur\": 0.13545017575870338, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345266.015, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345265.967, \"ph\": \"X\", \"dur\": 0.12197999253408096, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345266.126, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345266.24, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345266.449, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345266.678, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345267.285, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345267.658, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345267.937, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345268.454, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345268.378, \"ph\": \"X\", \"dur\": 0.6056593494330237, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345268.178, \"ph\": \"X\", \"dur\": 0.896764975787364, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345267.605, \"ph\": \"X\", \"dur\": 1.511903343045122, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345267.429, \"ph\": \"X\", \"dur\": 1.7421436970511683, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345269.749, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.071, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.283, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.628, \"ph\": \"X\", \"dur\": 0.40635052727611015, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.587, \"ph\": \"X\", \"dur\": 0.47020917367432025, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.415, \"ph\": \"X\", \"dur\": 0.7119241282050451, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345270.039, \"ph\": \"X\", \"dur\": 1.1212680295310713, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345269.877, \"ph\": \"X\", \"dur\": 1.3367909611250304, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345271.45, \"ph\": \"X\", \"dur\": 0.08955177365998991, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345271.73, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345271.899, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345271.663, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345272.339, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345272.617, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345275.002, \"ph\": \"X\", \"dur\": 0.123726127396532, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345274.921, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.407, \"ph\": \"X\", \"dur\": 11.923357184328294, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345275.465, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345275.774, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345276.172, \"ph\": \"X\", \"dur\": 0.5365622984474604, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345275.741, \"ph\": \"X\", \"dur\": 1.045186439095704, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345275.594, \"ph\": \"X\", \"dur\": 1.2437469177401383, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345263.194, \"ph\": \"X\", \"dur\": 13.79895547443822, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.181, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.784, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.757, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.65, \"ph\": \"X\", \"dur\": 0.4113394840259703, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.241, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.588, \"ph\": \"X\", \"dur\": 1.7663401372879903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.608, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.583, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.525, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.908, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345279.464, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.193, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.168, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.118, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.493, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.072, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.747, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.723, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.676, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.016, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345280.608, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.252, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.226, \"ph\": \"X\", \"dur\": 0.22126023185629817, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.177, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.524, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.135, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.433, \"ph\": \"X\", \"dur\": 4.195712626632396, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345277.364, \"ph\": \"X\", \"dur\": 4.30222685324191, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.696, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.065, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.039, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.989, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.32, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.946, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.615, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.592, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.541, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.873, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345282.497, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.134, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.109, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.062, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.383, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.018, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.644, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.62, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.573, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.886, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345283.528, \"ph\": \"X\", \"dur\": 0.41957126266323963, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345284.194, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345284.164, \"ph\": \"X\", \"dur\": 1.1549434875926274, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345284.094, \"ph\": \"X\", \"dur\": 1.2567182052897747, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345285.435, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345284.053, \"ph\": \"X\", \"dur\": 1.450788622859335, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.855, \"ph\": \"X\", \"dur\": 3.7087904478460443, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345281.815, \"ph\": \"X\", \"dur\": 3.807571791493275, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345285.682, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.125, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.083, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.029, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.41, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345285.984, \"ph\": \"X\", \"dur\": 0.49365727039866303, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.686, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.66, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.609, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.939, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345286.567, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.22, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.193, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.143, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.482, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.099, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.738, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.712, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.664, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.987, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345287.617, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.248, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.221, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.173, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.528, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.126, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345285.843, \"ph\": \"X\", \"dur\": 2.801049767208988, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345285.79, \"ph\": \"X\", \"dur\": 2.890850988706471, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.71, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.066, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.042, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.986, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.344, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.944, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.615, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.59, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.54, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.881, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345289.499, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345290.133, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345290.106, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345290.055, \"ph\": \"X\", \"dur\": 1.1933584545665505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.294, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345290.013, \"ph\": \"X\", \"dur\": 1.3537534140745549, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.598, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.571, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.52, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.871, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345291.473, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.155, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.131, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.082, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.414, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.039, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.846, \"ph\": \"X\", \"dur\": 3.689582964359083, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345288.805, \"ph\": \"X\", \"dur\": 3.769406272356845, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.606, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345292.718, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345299.58, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.592370561238882}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345299.831, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.033, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.371, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.481, \"ph\": \"X\", \"dur\": 0.34822918114023926, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.329, \"ph\": \"X\", \"dur\": 0.5373106419599394, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.949, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.055, \"ph\": \"X\", \"dur\": 0.1726179035451616, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.899, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.322, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.287, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.471, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.438, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.557, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.689, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345301.881, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345302.12, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345302.765, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345303.084, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345303.328, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345304.101, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345304.037, \"ph\": \"X\", \"dur\": 0.6098999626704048, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345303.73, \"ph\": \"X\", \"dur\": 1.016749385621501, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345303.03, \"ph\": \"X\", \"dur\": 1.7513732670384097, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345302.874, \"ph\": \"X\", \"dur\": 1.9661478551198897, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345305.372, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345305.684, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345305.952, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345306.342, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345306.269, \"ph\": \"X\", \"dur\": 1.6735455417405913, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345306.058, \"ph\": \"X\", \"dur\": 2.001320000206404, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345305.641, \"ph\": \"X\", \"dur\": 2.464794082268413, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345305.496, \"ph\": \"X\", \"dur\": 2.664601800100312, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345308.397, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345308.674, \"ph\": \"X\", \"dur\": 0.12696894928394112, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345308.858, \"ph\": \"X\", \"dur\": 0.07383655989793039, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345308.594, \"ph\": \"X\", \"dur\": 0.3856463567641905, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345309.304, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345309.561, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345311.856, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345311.81, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345300.144, \"ph\": \"X\", \"dur\": 11.997942087738702, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345312.267, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345312.575, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345312.941, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345312.53, \"ph\": \"X\", \"dur\": 1.0287228818211653, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345312.369, \"ph\": \"X\", \"dur\": 1.2432480220651523, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345299.952, \"ph\": \"X\", \"dur\": 13.822653019000057, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345313.929, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.446, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.418, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.334, \"ph\": \"X\", \"dur\": 0.4108405883509843, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.8, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.285, \"ph\": \"X\", \"dur\": 0.5837079397336389, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.083, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.057, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.004, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.401, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.961, \"ph\": \"X\", \"dur\": 0.5263349371102471, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.679, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.654, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.602, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.936, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345315.562, \"ph\": \"X\", \"dur\": 0.4422710158751033, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.178, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.152, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.102, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.457, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.058, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.693, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.668, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.617, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.976, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345316.575, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.15, \"ph\": \"X\", \"dur\": 2.934005464592761, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345314.096, \"ph\": \"X\", \"dur\": 3.066961161976534, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.136, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.601, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.573, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.519, \"ph\": \"X\", \"dur\": 0.34398856790285814, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.927, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.473, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.267, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.22, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.168, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.564, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.121, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.853, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.824, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.772, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.152, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345319.73, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.421, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.398, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.349, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.678, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.306, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.935, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.913, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.863, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.23, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345320.821, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.374, \"ph\": \"X\", \"dur\": 2.9736676707541494, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345318.321, \"ph\": \"X\", \"dur\": 3.0627205487391533, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.413, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.776, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.752, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.701, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.022, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.661, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.318, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.294, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.246, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.574, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.2, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.82, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.797, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.749, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345323.11, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345322.708, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345323.355, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345323.332, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345323.285, \"ph\": \"X\", \"dur\": 1.1958529329414807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345324.549, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345323.244, \"ph\": \"X\", \"dur\": 1.3694686278366144, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345324.838, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345324.809, \"ph\": \"X\", \"dur\": 0.25194231586793814, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345324.76, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.143, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345324.708, \"ph\": \"X\", \"dur\": 0.5048824230858484, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.557, \"ph\": \"X\", \"dur\": 3.7185189135082712, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345321.517, \"ph\": \"X\", \"dur\": 3.798591669343527, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.346, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.722, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.699, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.645, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.984, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.603, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.263, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.239, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.194, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.531, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.153, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.78, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.755, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.708, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.052, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345326.665, \"ph\": \"X\", \"dur\": 0.4549928555872468, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.326, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.302, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.257, \"ph\": \"X\", \"dur\": 0.2741431734048159, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.579, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.212, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.821, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.795, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.751, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345328.071, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345327.71, \"ph\": \"X\", \"dur\": 0.42356242806312777, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.483, \"ph\": \"X\", \"dur\": 2.7080057238240958, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345325.442, \"ph\": \"X\", \"dur\": 2.7878290318218584, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345328.263, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345328.365, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.005, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.4477983151071023}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.281, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.477, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.841, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.97, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.795, \"ph\": \"X\", \"dur\": 0.46546966476195306, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345336.324, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345337.954, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345336.293, \"ph\": \"X\", \"dur\": 1.9494348500078582, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.341, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.303, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.518, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.479, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.644, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345338.786, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345339.009, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345339.298, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345339.919, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.227, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.541, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345341.024, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.975, \"ph\": \"X\", \"dur\": 0.5635026648967053, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.754, \"ph\": \"X\", \"dur\": 0.864586204750766, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.198, \"ph\": \"X\", \"dur\": 1.4542808925842372, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345340.053, \"ph\": \"X\", \"dur\": 1.6525919233911786, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.236, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.532, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.814, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345343.134, \"ph\": \"X\", \"dur\": 0.40684942295109616, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345343.075, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.921, \"ph\": \"X\", \"dur\": 0.7119241282050451, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.499, \"ph\": \"X\", \"dur\": 1.1873717064667184, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345342.357, \"ph\": \"X\", \"dur\": 1.3831882588987299, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345344.004, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345344.275, \"ph\": \"X\", \"dur\": 0.13145901035881524, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345344.464, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345344.193, \"ph\": \"X\", \"dur\": 0.3826529827142744, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345344.842, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345345.161, \"ph\": \"X\", \"dur\": 0.18334416055736094, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345347.473, \"ph\": \"X\", \"dur\": 0.10027803067218924, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345347.413, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.576, \"ph\": \"X\", \"dur\": 12.202239866645476, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345347.901, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345348.202, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345348.523, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345348.17, \"ph\": \"X\", \"dur\": 0.9479017824734307, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345348.002, \"ph\": \"X\", \"dur\": 1.1783915843169703, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345335.404, \"ph\": \"X\", \"dur\": 13.93490454587191, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.474, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.994, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.953, \"ph\": \"X\", \"dur\": 0.37267506921455407, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.879, \"ph\": \"X\", \"dur\": 0.47444978691170137, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345350.411, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.833, \"ph\": \"X\", \"dur\": 1.5964661599552517, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345351.703, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345351.676, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345351.614, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.019, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345351.543, \"ph\": \"X\", \"dur\": 0.5427984943847857, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.28, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.254, \"ph\": \"X\", \"dur\": 0.2626685728801375, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.204, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.602, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.155, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.868, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.844, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.794, \"ph\": \"X\", \"dur\": 0.2923528655418055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.134, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345352.729, \"ph\": \"X\", \"dur\": 0.4699597258368272, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.368, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.346, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.297, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.627, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.255, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.692, \"ph\": \"X\", \"dur\": 4.0405560717117455, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345349.624, \"ph\": \"X\", \"dur\": 4.145573611296301, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.798, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.19, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.166, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.117, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.537, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.073, \"ph\": \"X\", \"dur\": 0.5280810719726982, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.874, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.845, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.776, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.133, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345354.733, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.403, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.379, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.333, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.655, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.29, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.902, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.878, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.83, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345356.163, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345355.787, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345356.427, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345356.403, \"ph\": \"X\", \"dur\": 0.2222580232062702, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345356.355, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345357.58, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345356.313, \"ph\": \"X\", \"dur\": 1.3332986914001284, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.971, \"ph\": \"X\", \"dur\": 3.7412186667201355, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345353.93, \"ph\": \"X\", \"dur\": 3.8459867584671987, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345357.81, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.215, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.188, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.137, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.518, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.093, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.808, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.784, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.734, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.13, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345358.693, \"ph\": \"X\", \"dur\": 0.5048824230858484, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.408, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.382, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.316, \"ph\": \"X\", \"dur\": 0.3442380157403512, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.731, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.274, \"ph\": \"X\", \"dur\": 0.5230921152228379, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.99, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.965, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.915, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.259, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345359.872, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.54, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.511, \"ph\": \"X\", \"dur\": 0.2746420690798019, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.462, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.863, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345360.418, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345357.976, \"ph\": \"X\", \"dur\": 3.0100870550281282, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345357.934, \"ph\": \"X\", \"dur\": 3.087415884650961, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.051, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.402, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.375, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.326, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.654, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.281, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.931, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.906, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.856, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345362.192, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.811, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345362.443, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345362.416, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345362.368, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345363.563, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345362.327, \"ph\": \"X\", \"dur\": 1.3415304700373973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345363.899, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345363.871, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345363.819, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.206, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345363.764, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.482, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.453, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.4, \"ph\": \"X\", \"dur\": 0.34723138979026724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.794, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345364.353, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.193, \"ph\": \"X\", \"dur\": 3.73498247078281, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345361.152, \"ph\": \"X\", \"dur\": 3.8120618525681493, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345365.006, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345365.104, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345371.634, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.344721470602358}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345371.874, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.08, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.362, \"ph\": \"X\", \"dur\": 0.05961803316082893, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.472, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.315, \"ph\": \"X\", \"dur\": 0.45249837721231667, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.85, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.936, \"ph\": \"X\", \"dur\": 0.17486293408259865, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.803, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.199, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.168, \"ph\": \"X\", \"dur\": 0.09503962608483608, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.327, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.296, \"ph\": \"X\", \"dur\": 0.10526698742204942, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.433, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.541, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.703, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345373.909, \"ph\": \"X\", \"dur\": 0.07358711206043739, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345374.529, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345374.842, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345375.139, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345375.743, \"ph\": \"X\", \"dur\": 0.5018890490359322, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345375.692, \"ph\": \"X\", \"dur\": 0.5784695351462857, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345375.474, \"ph\": \"X\", \"dur\": 0.8860387187751647, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345374.81, \"ph\": \"X\", \"dur\": 1.5837443202431083, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345374.638, \"ph\": \"X\", \"dur\": 1.8097440610117737, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.004, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.305, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.537, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.926, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.873, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.651, \"ph\": \"X\", \"dur\": 0.8271690291268149, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.274, \"ph\": \"X\", \"dur\": 2.1776796213139606, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345377.137, \"ph\": \"X\", \"dur\": 2.3907080745329896, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345379.805, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345380.079, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345380.228, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345379.99, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345380.698, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345380.991, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345383.305, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345383.234, \"ph\": \"X\", \"dur\": 0.18883201298220711, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345372.197, \"ph\": \"X\", \"dur\": 11.393529977493145, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345383.734, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345384.046, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345384.388, \"ph\": \"X\", \"dur\": 0.5946836445833313, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345384.011, \"ph\": \"X\", \"dur\": 1.0282239861461795, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345383.862, \"ph\": \"X\", \"dur\": 1.229029495328051, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345371.997, \"ph\": \"X\", \"dur\": 13.20926078660475, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.345, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.846, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.822, \"ph\": \"X\", \"dur\": 0.33500844575310984, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.743, \"ph\": \"X\", \"dur\": 0.43927764182518725, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.251, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.697, \"ph\": \"X\", \"dur\": 0.617632845632688, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.523, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.497, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.447, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.816, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.404, \"ph\": \"X\", \"dur\": 0.47819150447409653, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.071, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.045, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.993, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.331, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345386.953, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.573, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.546, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.499, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.824, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.458, \"ph\": \"X\", \"dur\": 0.433290893725355, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.06, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.035, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.986, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.339, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345387.946, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.572, \"ph\": \"X\", \"dur\": 2.871643505219509, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345385.519, \"ph\": \"X\", \"dur\": 2.962691965904457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.51, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.902, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.878, \"ph\": \"X\", \"dur\": 1.2864024979514428, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.83, \"ph\": \"X\", \"dur\": 1.3624840883868101, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.253, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.769, \"ph\": \"X\", \"dur\": 1.5538105797439472, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.606, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.567, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.51, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.896, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345390.459, \"ph\": \"X\", \"dur\": 0.5210965325228939, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.214, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.187, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.136, \"ph\": \"X\", \"dur\": 0.33675458061556096, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.527, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.089, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.818, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.794, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.744, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.089, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345391.699, \"ph\": \"X\", \"dur\": 0.45549175126223274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.359, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.334, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.282, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.618, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.239, \"ph\": \"X\", \"dur\": 0.43877874615020124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.654, \"ph\": \"X\", \"dur\": 4.082962204085557, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345388.612, \"ph\": \"X\", \"dur\": 4.162536064245827, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.806, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.15, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.127, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.078, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.433, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.035, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.709, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.684, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.636, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.961, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345393.592, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.208, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.184, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.137, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.472, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.095, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.724, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.699, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.653, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.978, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345394.606, \"ph\": \"X\", \"dur\": 1.3153384471006315, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.179, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.15, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.1, \"ph\": \"X\", \"dur\": 0.3320150717031938, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.505, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.026, \"ph\": \"X\", \"dur\": 0.5492841381596038, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.946, \"ph\": \"X\", \"dur\": 3.6908302035465477, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345392.905, \"ph\": \"X\", \"dur\": 3.7709029593818033, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.709, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.12, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.096, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.023, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.389, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.976, \"ph\": \"X\", \"dur\": 0.48218266987398467, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.686, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.657, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.605, \"ph\": \"X\", \"dur\": 0.3170482014536133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.972, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345397.558, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.252, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.212, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.159, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.544, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.112, \"ph\": \"X\", \"dur\": 0.5208470846854009, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.847, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.817, \"ph\": \"X\", \"dur\": 0.22425360590621427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.764, \"ph\": \"X\", \"dur\": 0.3058230487664279, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.127, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345398.71, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.387, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.363, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.315, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.705, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.272, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.858, \"ph\": \"X\", \"dur\": 2.9631908615794433, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345396.813, \"ph\": \"X\", \"dur\": 3.0437625130896846, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.885, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345399.997, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345406.429, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.1955726515627467}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345406.642, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345406.818, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.103, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.215, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.073, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.596, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.679, \"ph\": \"X\", \"dur\": 0.1753618297575847, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345407.566, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345408.96, \"ph\": \"X\", \"dur\": 0.06061582451080096, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345408.904, \"ph\": \"X\", \"dur\": 0.1516642851957489, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.143, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.094, \"ph\": \"X\", \"dur\": 0.13195790603380125, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.263, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.376, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.526, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345409.766, \"ph\": \"X\", \"dur\": 0.06585422909815414, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345410.324, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345410.621, \"ph\": \"X\", \"dur\": 0.08730674312255284, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345410.92, \"ph\": \"X\", \"dur\": 0.05812134613587089, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345411.429, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345411.384, \"ph\": \"X\", \"dur\": 0.58794855297102, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345411.185, \"ph\": \"X\", \"dur\": 0.8852903752626856, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345410.59, \"ph\": \"X\", \"dur\": 1.5373470224694088, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345410.445, \"ph\": \"X\", \"dur\": 1.7366558446263223, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345412.69, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345412.997, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345413.292, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345413.73, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345413.652, \"ph\": \"X\", \"dur\": 0.5764739524463416, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345413.411, \"ph\": \"X\", \"dur\": 0.8897804363375599, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345412.959, \"ph\": \"X\", \"dur\": 1.4063869077855795, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345412.804, \"ph\": \"X\", \"dur\": 1.6161725391171995, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345414.691, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345415.038, \"ph\": \"X\", \"dur\": 0.14343250655847964, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345415.238, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345414.988, \"ph\": \"X\", \"dur\": 0.3781629216394003, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345415.76, \"ph\": \"X\", \"dur\": 0.246454463443092, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345416.088, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345418.397, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345418.341, \"ph\": \"X\", \"dur\": 0.17735741245752873, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345406.909, \"ph\": \"X\", \"dur\": 11.779176334257334, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345418.836, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345419.166, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345419.576, \"ph\": \"X\", \"dur\": 0.4816837741989986, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345419.134, \"ph\": \"X\", \"dur\": 0.9987891413220044, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345418.939, \"ph\": \"X\", \"dur\": 1.330804213025198, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345406.755, \"ph\": \"X\", \"dur\": 13.684708364866422, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345420.615, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.212, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.181, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.115, \"ph\": \"X\", \"dur\": 0.4215668453631837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.597, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.041, \"ph\": \"X\", \"dur\": 0.6530544385566951, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.946, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.92, \"ph\": \"X\", \"dur\": 1.2572171009647606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.85, \"ph\": \"X\", \"dur\": 1.3535039662370618, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.275, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345421.783, \"ph\": \"X\", \"dur\": 1.5730180632309092, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.627, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.594, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.531, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.991, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345423.472, \"ph\": \"X\", \"dur\": 0.5906924791834431, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.302, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.275, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.2, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.618, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.146, \"ph\": \"X\", \"dur\": 0.5437962857347576, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.923, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.896, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.826, \"ph\": \"X\", \"dur\": 0.36244770787734076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.244, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345424.767, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345420.888, \"ph\": \"X\", \"dur\": 4.468608560849747, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345420.791, \"ph\": \"X\", \"dur\": 4.616780576320593, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.442, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.887, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.864, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.786, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.197, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.734, \"ph\": \"X\", \"dur\": 0.5303261025101352, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.522, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.494, \"ph\": \"X\", \"dur\": 0.2599246466677144, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.434, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.84, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345426.389, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.148, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.121, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.069, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.467, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.002, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.757, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.73, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.669, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.079, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345427.622, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.377, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.35, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.292, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.716, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345428.244, \"ph\": \"X\", \"dur\": 0.5622554257092401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.623, \"ph\": \"X\", \"dur\": 4.213922318769385, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345425.57, \"ph\": \"X\", \"dur\": 4.312204766741631, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345429.938, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.37, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.342, \"ph\": \"X\", \"dur\": 0.2631674685551236, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.28, \"ph\": \"X\", \"dur\": 0.3597037816649176, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.699, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.226, \"ph\": \"X\", \"dur\": 0.5505313773470689, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.026, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.996, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.94, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.33, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.885, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.64, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.611, \"ph\": \"X\", \"dur\": 0.2499467331679941, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.559, \"ph\": \"X\", \"dur\": 0.3327634152156728, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.947, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345431.486, \"ph\": \"X\", \"dur\": 0.5310744460226142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.236, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.208, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.157, \"ph\": \"X\", \"dur\": 0.36219826003984773, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.578, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.102, \"ph\": \"X\", \"dur\": 0.5445446292472367, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.869, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.839, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.781, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.168, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345432.735, \"ph\": \"X\", \"dur\": 0.5053813187608344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.107, \"ph\": \"X\", \"dur\": 3.196923485310392, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345430.049, \"ph\": \"X\", \"dur\": 3.290965320045256, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.374, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.776, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.748, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.688, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.072, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.638, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.389, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.357, \"ph\": \"X\", \"dur\": 0.2509445245179661, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.297, \"ph\": \"X\", \"dur\": 0.33750292412803995, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.687, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.247, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.973, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.944, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.888, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345435.234, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345434.838, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.415, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.387, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.335, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.7, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.292, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.976, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.945, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.895, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345437.277, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345436.852, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.533, \"ph\": \"X\", \"dur\": 3.8726776770789506, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345433.481, \"ph\": \"X\", \"dur\": 3.9662206161388287, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345437.483, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345437.627, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.293, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 3.100106057522306}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.505, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.693, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.968, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.075, \"ph\": \"X\", \"dur\": 0.26017409450520745, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.913, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.436, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.523, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.406, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.825, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.775, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.981, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345445.952, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345446.072, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345446.169, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345446.392, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345446.662, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345447.251, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345447.631, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345447.954, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345448.441, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345448.4, \"ph\": \"X\", \"dur\": 0.5699883086715234, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345448.178, \"ph\": \"X\", \"dur\": 0.8875354058001228, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345447.6, \"ph\": \"X\", \"dur\": 1.4996803990079646, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345447.372, \"ph\": \"X\", \"dur\": 1.793529951574728, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345449.644, \"ph\": \"X\", \"dur\": 0.04964011966110861, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.117, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.356, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.671, \"ph\": \"X\", \"dur\": 0.5303261025101352, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.614, \"ph\": \"X\", \"dur\": 0.6138911280702929, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.454, \"ph\": \"X\", \"dur\": 0.8576016653009618, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345450.085, \"ph\": \"X\", \"dur\": 1.259711579339691, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345449.783, \"ph\": \"X\", \"dur\": 1.6126802693922972, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345452.78, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345453.028, \"ph\": \"X\", \"dur\": 0.12696894928394112, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345453.216, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345452.978, \"ph\": \"X\", \"dur\": 0.3781629216394003, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345453.789, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345454.068, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345456.261, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345456.209, \"ph\": \"X\", \"dur\": 0.17735741245752873, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.801, \"ph\": \"X\", \"dur\": 11.749990937270653, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345456.673, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345457.019, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345457.359, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345456.967, \"ph\": \"X\", \"dur\": 0.989809019172256, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345456.777, \"ph\": \"X\", \"dur\": 1.230526182353009, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345444.629, \"ph\": \"X\", \"dur\": 13.530549601295744, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.318, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.767, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.74, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.685, \"ph\": \"X\", \"dur\": 0.37965960866435833, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.121, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.636, \"ph\": \"X\", \"dur\": 0.5782200873087927, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.426, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.403, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.353, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.708, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.313, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.961, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.935, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.889, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.246, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345459.846, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.483, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.458, \"ph\": \"X\", \"dur\": 0.2584279596427564, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.409, \"ph\": \"X\", \"dur\": 0.33825126764051894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.793, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.366, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.039, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.013, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.963, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.302, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345460.917, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.514, \"ph\": \"X\", \"dur\": 2.895091601943852, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345458.463, \"ph\": \"X\", \"dur\": 2.9843939277663485, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.476, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.853, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.831, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.782, \"ph\": \"X\", \"dur\": 1.3709653148615724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.212, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.739, \"ph\": \"X\", \"dur\": 1.543832666244227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.562, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.533, \"ph\": \"X\", \"dur\": 0.24845004614303604, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.473, \"ph\": \"X\", \"dur\": 0.3365051327780679, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.868, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345463.422, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.184, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.159, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.091, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.481, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.041, \"ph\": \"X\", \"dur\": 0.5021384968734253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.752, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.726, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.676, \"ph\": \"X\", \"dur\": 0.2978407179666517, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.026, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345464.635, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.351, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.322, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.266, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.641, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.216, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.647, \"ph\": \"X\", \"dur\": 4.117884901334577, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345461.607, \"ph\": \"X\", \"dur\": 4.196211522307382, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.833, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.19, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.163, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.113, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.448, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.07, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.723, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.699, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.649, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.978, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345466.606, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.236, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.212, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.163, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.509, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.119, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.787, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.761, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.713, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345468.072, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345467.669, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345468.326, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345468.301, \"ph\": \"X\", \"dur\": 1.1242614035809875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345468.251, \"ph\": \"X\", \"dur\": 1.205830846441201, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345469.508, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345468.208, \"ph\": \"X\", \"dur\": 1.3687202843241353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.977, \"ph\": \"X\", \"dur\": 3.6753644376219814, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345465.934, \"ph\": \"X\", \"dur\": 3.7566844326447018, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345469.724, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.169, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.144, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.056, \"ph\": \"X\", \"dur\": 0.3424918808779001, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.46, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.01, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.753, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.725, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.671, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.047, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345470.626, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.309, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.284, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.239, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.581, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.192, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.836, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.812, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.762, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.092, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345471.719, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.345, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.317, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.269, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.601, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.225, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345469.866, \"ph\": \"X\", \"dur\": 2.8569260828074214, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345469.821, \"ph\": \"X\", \"dur\": 2.937497734317663, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.789, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345472.912, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345479.582, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.945092631299228}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345479.793, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345479.987, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.338, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.432, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.278, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.807, \"ph\": \"X\", \"dur\": 0.06735091612311218, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.965, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.763, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345481.295, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345481.242, \"ph\": \"X\", \"dur\": 1.1579368616425436, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345482.513, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345482.453, \"ph\": \"X\", \"dur\": 0.12197999253408096, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345482.611, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345482.722, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345482.896, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345483.17, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345483.785, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.097, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.423, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.918, \"ph\": \"X\", \"dur\": 0.5794673264962578, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.882, \"ph\": \"X\", \"dur\": 0.6413303901945239, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.643, \"ph\": \"X\", \"dur\": 0.9713498791977735, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345484.066, \"ph\": \"X\", \"dur\": 1.600706773192633, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345483.907, \"ph\": \"X\", \"dur\": 1.8139846742491548, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.344, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.621, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.871, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345487.401, \"ph\": \"X\", \"dur\": 0.44077432885014534, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345487.355, \"ph\": \"X\", \"dur\": 0.5325711330475723, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.977, \"ph\": \"X\", \"dur\": 0.9793322099975498, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.59, \"ph\": \"X\", \"dur\": 1.3989034726607892, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345486.448, \"ph\": \"X\", \"dur\": 1.5942211294178146, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345488.282, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345488.515, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345488.689, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345488.463, \"ph\": \"X\", \"dur\": 0.5792178786587648, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345489.343, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345489.635, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345491.774, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345491.71, \"ph\": \"X\", \"dur\": 0.17511238192009168, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345480.104, \"ph\": \"X\", \"dur\": 11.96451607751464, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345492.232, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345492.563, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345492.928, \"ph\": \"X\", \"dur\": 0.5385578811474044, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345492.531, \"ph\": \"X\", \"dur\": 0.9908068105222282, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345492.342, \"ph\": \"X\", \"dur\": 1.233020660727939, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345479.916, \"ph\": \"X\", \"dur\": 13.799953265788194, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345493.887, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.398, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.371, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.312, \"ph\": \"X\", \"dur\": 0.41258672321343537, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.794, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.261, \"ph\": \"X\", \"dur\": 0.6358425377696776, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345495.125, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345495.1, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345495.049, \"ph\": \"X\", \"dur\": 0.29384955256676354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.012, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345495.004, \"ph\": \"X\", \"dur\": 2.090123430353915, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.291, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.264, \"ph\": \"X\", \"dur\": 0.2579290639677703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.215, \"ph\": \"X\", \"dur\": 0.3365051327780679, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.602, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.173, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.869, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.827, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.775, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.164, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345497.729, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.424, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.394, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.341, \"ph\": \"X\", \"dur\": 0.3639443949022988, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.758, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.303, \"ph\": \"X\", \"dur\": 0.522593219547852, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.124, \"ph\": \"X\", \"dur\": 4.745994556141972, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345494.068, \"ph\": \"X\", \"dur\": 4.840535286551821, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345498.942, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.338, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.314, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.264, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.601, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.221, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.893, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.87, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.821, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.147, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.772, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.42, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.395, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.349, \"ph\": \"X\", \"dur\": 0.27863323447969, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.672, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.304, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.929, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.904, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.859, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.182, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345500.817, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.442, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.417, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.371, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.725, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345501.33, \"ph\": \"X\", \"dur\": 0.45549175126223274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.108, \"ph\": \"X\", \"dur\": 2.7349460902733407, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345499.063, \"ph\": \"X\", \"dur\": 2.836471360132995, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345502.787, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.226, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.199, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.15, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.537, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.102, \"ph\": \"X\", \"dur\": 0.5043835274108623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.855, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.812, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.766, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.126, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345503.707, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.389, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.364, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.317, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.69, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.271, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.941, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.917, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.869, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.194, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345504.826, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.442, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.418, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.37, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.697, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.33, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345502.94, \"ph\": \"X\", \"dur\": 2.8801247316942713, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345502.894, \"ph\": \"X\", \"dur\": 2.962691965904457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.887, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.23, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.205, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.155, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.505, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.114, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.8, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.775, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.727, \"ph\": \"X\", \"dur\": 0.36045212517739667, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.135, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.685, \"ph\": \"X\", \"dur\": 0.5133636495606106, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.405, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.382, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.312, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.66, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.271, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.923, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.899, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.842, \"ph\": \"X\", \"dur\": 1.169162014329729, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.058, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345507.8, \"ph\": \"X\", \"dur\": 1.327561391137789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.325, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.297, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.248, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.621, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.207, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345506.024, \"ph\": \"X\", \"dur\": 3.726501244308048, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345505.982, \"ph\": \"X\", \"dur\": 3.8095673741932194, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.826, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345509.953, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.194, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.8593157964130365}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.423, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.61, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.937, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.047, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.891, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.41, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.497, \"ph\": \"X\", \"dur\": 0.17436403840761264, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.366, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.763, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.732, \"ph\": \"X\", \"dur\": 0.09703520878478014, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.892, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.862, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345517.981, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345518.072, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345518.219, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345518.439, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345518.99, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345519.318, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345519.599, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345520.06, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345520.01, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345519.783, \"ph\": \"X\", \"dur\": 0.8309107466892098, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345519.284, \"ph\": \"X\", \"dur\": 1.361486297036838, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345519.136, \"ph\": \"X\", \"dur\": 1.5640379410811607, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.184, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.473, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.719, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345522.091, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345522.024, \"ph\": \"X\", \"dur\": 0.5285799676476841, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.819, \"ph\": \"X\", \"dur\": 0.801226454027542, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.443, \"ph\": \"X\", \"dur\": 1.23227231721546, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345521.288, \"ph\": \"X\", \"dur\": 1.4425568442220658, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345522.956, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345523.186, \"ph\": \"X\", \"dur\": 0.12597115793396907, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345524.394, \"ph\": \"X\", \"dur\": 0.1324568017087873, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345523.135, \"ph\": \"X\", \"dur\": 98.29666649898229, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345622.931, \"ph\": \"X\", \"dur\": 0.41233727537594234, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345623.564, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345627.621, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345627.445, \"ph\": \"X\", \"dur\": 0.5699883086715234, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.732, \"ph\": \"X\", \"dur\": 111.70174383801904, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345628.908, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345629.634, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345630.56, \"ph\": \"X\", \"dur\": 1.3599896100118802, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345629.538, \"ph\": \"X\", \"dur\": 2.5206703978668465, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345629.121, \"ph\": \"X\", \"dur\": 3.0123320855655655, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345516.542, \"ph\": \"X\", \"dur\": 115.91466836543847, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345632.904, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.898, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.846, \"ph\": \"X\", \"dur\": 0.617383397795195, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.697, \"ph\": \"X\", \"dur\": 0.8097076805023042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345634.585, \"ph\": \"X\", \"dur\": 0.060116928835814945, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.622, \"ph\": \"X\", \"dur\": 1.1092945333314068, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345634.99, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345634.965, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345634.909, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.308, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345634.868, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.631, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.607, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.53, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.905, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345635.492, \"ph\": \"X\", \"dur\": 0.47819150447409653, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.15, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.125, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.071, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.4, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.027, \"ph\": \"X\", \"dur\": 0.4564895426122048, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.735, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.705, \"ph\": \"X\", \"dur\": 0.2504456288429801, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.625, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.033, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345636.58, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.386, \"ph\": \"X\", \"dur\": 3.773397437756733, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345633.288, \"ph\": \"X\", \"dur\": 3.9599844202015033, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.32, \"ph\": \"X\", \"dur\": 0.1788540994824868, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345638.033, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.997, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.938, \"ph\": \"X\", \"dur\": 0.3165493057786273, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345638.304, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.899, \"ph\": \"X\", \"dur\": 1.82271534856141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.078, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.051, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345639.986, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.484, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345639.935, \"ph\": \"X\", \"dur\": 0.6158867107702369, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.781, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.756, \"ph\": \"X\", \"dur\": 0.277635443129718, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.705, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.125, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345640.66, \"ph\": \"X\", \"dur\": 0.5310744460226142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.417, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.387, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.335, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.696, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.291, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.945, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.922, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.875, \"ph\": \"X\", \"dur\": 0.34822918114023926, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.268, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345641.835, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.769, \"ph\": \"X\", \"dur\": 4.617030024158086, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345637.703, \"ph\": \"X\", \"dur\": 4.726038729142531, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.485, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.888, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.863, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.817, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.143, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.775, \"ph\": \"X\", \"dur\": 0.4288008326504809, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.421, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.397, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.351, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.669, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.308, \"ph\": \"X\", \"dur\": 0.42106794968819766, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.908, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.885, \"ph\": \"X\", \"dur\": 0.19282317838209526, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.838, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.15, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345643.797, \"ph\": \"X\", \"dur\": 0.4150812015883654, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.412, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.375, \"ph\": \"X\", \"dur\": 0.24246329804320385, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.329, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.694, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.284, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.949, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.926, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.879, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.1, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345644.836, \"ph\": \"X\", \"dur\": 1.3644796710867542, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.673, \"ph\": \"X\", \"dur\": 3.5895543815243864, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345642.62, \"ph\": \"X\", \"dur\": 3.683097320584264, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.36, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.733, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.705, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.653, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.016, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.605, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.284, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.261, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.212, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.583, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.17, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.84, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.814, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.763, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.093, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345647.721, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.354, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.327, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.278, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.602, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.235, \"ph\": \"X\", \"dur\": 0.433290893725355, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.873, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.848, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.798, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345649.124, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345648.76, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.507, \"ph\": \"X\", \"dur\": 2.7386878078357357, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345646.462, \"ph\": \"X\", \"dur\": 2.8222528333958934, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345649.316, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345649.486, \"ph\": \"X\", \"dur\": 0.14592698493340972, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345658.396, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.6968304530343166}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345658.85, \"ph\": \"X\", \"dur\": 0.06735091612311218, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.176, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.734, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.91, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.623, \"ph\": \"X\", \"dur\": 0.8571027696259758, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345660.595, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345660.701, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345660.532, \"ph\": \"X\", \"dur\": 0.3901364178390646, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345660.992, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345660.955, \"ph\": \"X\", \"dur\": 0.1364479671086754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345661.201, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345661.121, \"ph\": \"X\", \"dur\": 1.0706301185199907, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345662.261, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345662.574, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345663.015, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345663.497, \"ph\": \"X\", \"dur\": 0.15615434627062305, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345664.413, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345664.866, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345665.395, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345666.485, \"ph\": \"X\", \"dur\": 0.8543588434135527, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345666.343, \"ph\": \"X\", \"dur\": 1.0377030039709136, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345665.629, \"ph\": \"X\", \"dur\": 1.9314746057083616, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345664.822, \"ph\": \"X\", \"dur\": 2.7913213015467604, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345664.598, \"ph\": \"X\", \"dur\": 3.11385735542522, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345668.55, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345668.841, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345669.082, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345669.786, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345669.732, \"ph\": \"X\", \"dur\": 0.5517786165345339, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345669.217, \"ph\": \"X\", \"dur\": 1.143468887067949, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345668.806, \"ph\": \"X\", \"dur\": 1.5869871421305175, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345668.661, \"ph\": \"X\", \"dur\": 1.7945277429247002, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345670.927, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345671.462, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345671.767, \"ph\": \"X\", \"dur\": 0.12447447090901104, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345671.324, \"ph\": \"X\", \"dur\": 0.6610367693564714, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345672.388, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345672.741, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345675.575, \"ph\": \"X\", \"dur\": 0.1666311554453294, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345675.481, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.316, \"ph\": \"X\", \"dur\": 16.783099954367078, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345676.337, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345676.659, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345677.033, \"ph\": \"X\", \"dur\": 0.7550786040913354, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345676.606, \"ph\": \"X\", \"dur\": 1.2607093706896628, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345676.448, \"ph\": \"X\", \"dur\": 1.4687488671588316, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345659.045, \"ph\": \"X\", \"dur\": 19.09373527306481, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345678.494, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.109, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.085, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.016, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.515, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345678.969, \"ph\": \"X\", \"dur\": 0.6218734588700692, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.808, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.784, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.736, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345680.072, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345679.694, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.354, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.325, \"ph\": \"X\", \"dur\": 0.24196440236821784, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.248, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.656, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.196, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.917, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.891, \"ph\": \"X\", \"dur\": 0.2529401072179102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.837, \"ph\": \"X\", \"dur\": 0.33800181980302596, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.228, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345681.789, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.465, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.438, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.39, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.742, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.349, \"ph\": \"X\", \"dur\": 0.47195530853677126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345678.787, \"ph\": \"X\", \"dur\": 4.075478768960766, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345678.732, \"ph\": \"X\", \"dur\": 4.174759008282983, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345682.958, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.398, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.375, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.322, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.66, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.282, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.97, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.944, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.894, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.225, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.848, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.513, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.49, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.442, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.789, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.397, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.115, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.073, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.025, \"ph\": \"X\", \"dur\": 0.32054047117851536, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.406, \"ph\": \"X\", \"dur\": 0.04964011966110861, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345684.97, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.724, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.698, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.647, \"ph\": \"X\", \"dur\": 0.2821255042045921, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.975, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345685.587, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.151, \"ph\": \"X\", \"dur\": 2.9736676707541494, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345683.107, \"ph\": \"X\", \"dur\": 3.054239322264391, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345686.194, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.453, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.426, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.373, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.741, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.329, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.064, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.023, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.968, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.34, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.924, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.613, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.589, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.537, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.873, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345688.493, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.128, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.101, \"ph\": \"X\", \"dur\": 0.21128231835657785, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.053, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.394, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.011, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.665, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.641, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.573, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.918, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345689.529, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.209, \"ph\": \"X\", \"dur\": 2.836720807970488, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345687.161, \"ph\": \"X\", \"dur\": 2.922530864068083, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.115, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.457, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.436, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.383, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.735, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.342, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.026, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.001, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.955, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.314, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.892, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.571, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.545, \"ph\": \"X\", \"dur\": 0.22175912753128418, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.496, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.842, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.451, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345692.102, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345692.065, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345692.014, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345692.341, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345691.974, \"ph\": \"X\", \"dur\": 1.3096011468382924, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345693.553, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345693.528, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345693.434, \"ph\": \"X\", \"dur\": 0.36095102085238273, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345693.843, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345693.377, \"ph\": \"X\", \"dur\": 0.5587631559843381, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.252, \"ph\": \"X\", \"dur\": 3.788364308006314, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345690.21, \"ph\": \"X\", \"dur\": 3.8701831987040203, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345694.146, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345694.318, \"ph\": \"X\", \"dur\": 0.11200207903436063, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345701.718, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.623311150555711}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.011, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.302, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.725, \"ph\": \"X\", \"dur\": 0.07533324692288844, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.858, \"ph\": \"X\", \"dur\": 0.40136157052625004, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.622, \"ph\": \"X\", \"dur\": 0.6605378736814854, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.384, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.473, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.334, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.774, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.735, \"ph\": \"X\", \"dur\": 0.14043913250856355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.972, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345703.907, \"ph\": \"X\", \"dur\": 0.14143692385853557, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345704.08, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345704.243, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345704.533, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345704.86, \"ph\": \"X\", \"dur\": 0.10077692634717526, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345705.569, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345705.918, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345706.253, \"ph\": \"X\", \"dur\": 0.06360919856071706, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345706.868, \"ph\": \"X\", \"dur\": 0.5235910108978239, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345706.793, \"ph\": \"X\", \"dur\": 0.6395842553320727, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345706.455, \"ph\": \"X\", \"dur\": 1.082104719044669, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345705.869, \"ph\": \"X\", \"dur\": 1.7099649260145704, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345705.703, \"ph\": \"X\", \"dur\": 1.9511809848703092, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.265, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.585, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.819, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345709.212, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345709.164, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.934, \"ph\": \"X\", \"dur\": 0.833904120739126, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.552, \"ph\": \"X\", \"dur\": 1.2467402917900545, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345708.374, \"ph\": \"X\", \"dur\": 1.4779784371460727, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345710.196, \"ph\": \"X\", \"dur\": 0.07508379908539543, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345710.586, \"ph\": \"X\", \"dur\": 0.13994023683357754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345710.83, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345710.483, \"ph\": \"X\", \"dur\": 1.4697466585088037, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345712.41, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345712.752, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345715.176, \"ph\": \"X\", \"dur\": 0.1267195014464481, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345715.079, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.416, \"ph\": \"X\", \"dur\": 13.13367809184437, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345715.752, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345716.111, \"ph\": \"X\", \"dur\": 0.07034429017302829, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345716.528, \"ph\": \"X\", \"dur\": 0.5585137081468452, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345716.078, \"ph\": \"X\", \"dur\": 1.0930804238943614, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345715.904, \"ph\": \"X\", \"dur\": 1.3183318211505477, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345702.184, \"ph\": \"X\", \"dur\": 15.237271705422906, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345717.683, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.232, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.206, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.15, \"ph\": \"X\", \"dur\": 0.4093439013260262, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.628, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.103, \"ph\": \"X\", \"dur\": 0.588198000808513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.938, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.912, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.864, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.246, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345718.797, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.53, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.504, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.452, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.811, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.412, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.086, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.058, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.979, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.349, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345719.934, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.6, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.572, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.522, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.86, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345720.48, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345717.967, \"ph\": \"X\", \"dur\": 3.0195660728528626, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345717.908, \"ph\": \"X\", \"dur\": 3.114356251100206, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.071, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.473, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.445, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.395, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.726, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.353, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345722.065, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345722.04, \"ph\": \"X\", \"dur\": 1.4340756177473035, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.989, \"ph\": \"X\", \"dur\": 1.514647269257545, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345723.565, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.943, \"ph\": \"X\", \"dur\": 1.6895102033401437, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345723.87, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345723.843, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345723.789, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.175, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345723.74, \"ph\": \"X\", \"dur\": 0.4996440184984952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.444, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.42, \"ph\": \"X\", \"dur\": 0.22126023185629817, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.37, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.72, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.329, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.988, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.965, \"ph\": \"X\", \"dur\": 0.21128231835657785, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.912, \"ph\": \"X\", \"dur\": 0.29384955256676354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.254, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345724.871, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.259, \"ph\": \"X\", \"dur\": 4.1163882143096195, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345721.214, \"ph\": \"X\", \"dur\": 4.200202687707271, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.446, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.843, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.815, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.765, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.141, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.725, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.414, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.39, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.339, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.675, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.295, \"ph\": \"X\", \"dur\": 0.4442665985750474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.929, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.903, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.854, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.179, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345726.81, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.433, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.406, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.354, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.691, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.312, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.942, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.919, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.87, \"ph\": \"X\", \"dur\": 0.27613875610475996, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345728.194, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345727.829, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.628, \"ph\": \"X\", \"dur\": 3.6040223560989806, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345725.57, \"ph\": \"X\", \"dur\": 3.703302595421198, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.304, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.683, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.659, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.605, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.983, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.557, \"ph\": \"X\", \"dur\": 0.49166168769871893, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.294, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.265, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.214, \"ph\": \"X\", \"dur\": 0.34773028546525325, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.613, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.173, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.884, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.855, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.802, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.153, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345730.757, \"ph\": \"X\", \"dur\": 0.4604807080120929, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.421, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.389, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.339, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.723, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.296, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345732.003, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.973, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.921, \"ph\": \"X\", \"dur\": 0.400363779176278, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345732.383, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345731.875, \"ph\": \"X\", \"dur\": 0.5764739524463416, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.448, \"ph\": \"X\", \"dur\": 3.0619722052266742, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345729.403, \"ph\": \"X\", \"dur\": 3.146285574299311, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345732.59, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345732.71, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345739.314, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.4513737749299}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345739.553, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345739.773, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.147, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.255, \"ph\": \"X\", \"dur\": 0.38814083513912057, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.075, \"ph\": \"X\", \"dur\": 0.5891957921584852, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.772, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.86, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345740.716, \"ph\": \"X\", \"dur\": 0.38315187838926046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345741.161, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345741.133, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345741.348, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345741.296, \"ph\": \"X\", \"dur\": 0.11848772280917884, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345741.446, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345742.527, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345742.826, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345743.149, \"ph\": \"X\", \"dur\": 0.09878134364723119, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345743.827, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.194, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.495, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.963, \"ph\": \"X\", \"dur\": 0.6143900237452788, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.882, \"ph\": \"X\", \"dur\": 0.7396128381667689, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.646, \"ph\": \"X\", \"dur\": 1.0676367444700745, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345744.164, \"ph\": \"X\", \"dur\": 1.5834948724056153, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345743.982, \"ph\": \"X\", \"dur\": 1.8197219745114939, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345746.4, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345746.691, \"ph\": \"X\", \"dur\": 0.07283876854795837, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345746.979, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345747.423, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345747.393, \"ph\": \"X\", \"dur\": 0.5625048735467333, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345747.082, \"ph\": \"X\", \"dur\": 0.9364271819487524, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345746.66, \"ph\": \"X\", \"dur\": 1.4176120604727651, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345746.502, \"ph\": \"X\", \"dur\": 1.6271482439668916, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345748.333, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345748.649, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345748.831, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345748.549, \"ph\": \"X\", \"dur\": 0.3926308962139947, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345749.3, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345749.597, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345751.996, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345751.916, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345739.888, \"ph\": \"X\", \"dur\": 12.438965864426342, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345752.51, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345752.849, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345753.212, \"ph\": \"X\", \"dur\": 0.5590126038218312, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345752.815, \"ph\": \"X\", \"dur\": 1.0317162558710813, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345752.616, \"ph\": \"X\", \"dur\": 1.297128754963642, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345739.668, \"ph\": \"X\", \"dur\": 14.439288073282773, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.351, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.851, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.826, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.767, \"ph\": \"X\", \"dur\": 0.401611018363743, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.25, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.717, \"ph\": \"X\", \"dur\": 0.6121449932078418, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.551, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.526, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.477, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.854, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.434, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345756.105, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345756.08, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345756.03, \"ph\": \"X\", \"dur\": 2.2986618224980693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345758.423, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345755.985, \"ph\": \"X\", \"dur\": 2.499467331679941, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345758.701, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345758.671, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345758.615, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.008, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345758.561, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.264, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.236, \"ph\": \"X\", \"dur\": 0.26192022936765846, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.184, \"ph\": \"X\", \"dur\": 0.3474808376277603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.582, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.137, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.575, \"ph\": \"X\", \"dur\": 5.117671834006553, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345754.515, \"ph\": \"X\", \"dur\": 5.218448760353729, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.78, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.168, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.144, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.091, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.438, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.045, \"ph\": \"X\", \"dur\": 0.4559906469372188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.741, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.715, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.663, \"ph\": \"X\", \"dur\": 0.278134338804704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.992, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345760.619, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.258, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.234, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.185, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.508, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.143, \"ph\": \"X\", \"dur\": 0.4230635323881417, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.757, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.733, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.687, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.009, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345761.646, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.267, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.243, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.194, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.55, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.152, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.954, \"ph\": \"X\", \"dur\": 2.711497993548998, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345759.915, \"ph\": \"X\", \"dur\": 2.7873301361468723, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.733, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345763.078, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345763.053, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345763.006, \"ph\": \"X\", \"dur\": 1.9267350967959944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.003, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.966, \"ph\": \"X\", \"dur\": 2.1053397484409886, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.342, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.314, \"ph\": \"X\", \"dur\": 0.23996881966827377, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.256, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.636, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.204, \"ph\": \"X\", \"dur\": 0.495153957423621, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.909, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.884, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.831, \"ph\": \"X\", \"dur\": 0.34573470276530915, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.226, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345765.785, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.476, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.452, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.405, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.764, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.361, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.036, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.011, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.964, \"ph\": \"X\", \"dur\": 0.2821255042045921, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.294, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345766.923, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.867, \"ph\": \"X\", \"dur\": 4.540698985885226, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345762.827, \"ph\": \"X\", \"dur\": 4.6177783676705655, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.476, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.819, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.793, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.747, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.074, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.705, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.399, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.375, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.326, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.713, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.283, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.02, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.994, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.94, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.291, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345768.898, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.577, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.552, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.502, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.838, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.461, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345770.098, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345770.074, \"ph\": \"X\", \"dur\": 1.0900870498444453, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345770.028, \"ph\": \"X\", \"dur\": 1.1681642229797569, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345771.25, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345769.987, \"ph\": \"X\", \"dur\": 1.3288086303252542, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.612, \"ph\": \"X\", \"dur\": 3.767410689656901, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345767.575, \"ph\": \"X\", \"dur\": 3.8452384149547196, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345771.455, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345771.604, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.082, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.3932357546695107}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.322, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.557, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.899, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.025, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.854, \"ph\": \"X\", \"dur\": 0.5001429141734812, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.477, \"ph\": \"X\", \"dur\": 0.05812134613587089, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.566, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.422, \"ph\": \"X\", \"dur\": 0.3873924916266416, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.874, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345779.844, \"ph\": \"X\", \"dur\": 0.11624269227174178, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.051, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.002, \"ph\": \"X\", \"dur\": 0.11923606632165785, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.153, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.271, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.463, \"ph\": \"X\", \"dur\": 0.01945693132445463, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345780.702, \"ph\": \"X\", \"dur\": 0.08880343014751088, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345781.37, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345781.673, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345781.974, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345782.575, \"ph\": \"X\", \"dur\": 0.5447940770847297, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345782.527, \"ph\": \"X\", \"dur\": 0.6378381204696217, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345782.34, \"ph\": \"X\", \"dur\": 0.923954790074102, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345781.64, \"ph\": \"X\", \"dur\": 1.6575808801410388, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345781.493, \"ph\": \"X\", \"dur\": 1.8693620941726026, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345783.885, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.185, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.405, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.839, \"ph\": \"X\", \"dur\": 0.4500038988373866, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.794, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.506, \"ph\": \"X\", \"dur\": 0.8917760190375039, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345784.154, \"ph\": \"X\", \"dur\": 1.298126546313614, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345783.99, \"ph\": \"X\", \"dur\": 1.5126516865576012, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345785.733, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345786.004, \"ph\": \"X\", \"dur\": 0.06061582451080096, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345786.126, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345785.915, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345786.583, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345787.867, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345790.224, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345790.151, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.7, \"ph\": \"X\", \"dur\": 11.893423443829134, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345790.775, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345791.072, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345791.423, \"ph\": \"X\", \"dur\": 0.5981759143082334, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345791.041, \"ph\": \"X\", \"dur\": 1.0476809174706339, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345790.877, \"ph\": \"X\", \"dur\": 1.2754267931017502, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345778.451, \"ph\": \"X\", \"dur\": 13.86680528623632, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345792.507, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.044, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.016, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345792.937, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.365, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345792.888, \"ph\": \"X\", \"dur\": 0.5592620516593241, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.732, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.707, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.624, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.023, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345793.579, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.275, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.253, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.198, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.575, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.158, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.811, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.787, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.734, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.086, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345794.693, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.361, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.334, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.287, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.645, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.242, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345792.758, \"ph\": \"X\", \"dur\": 3.0013563807158734, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345792.691, \"ph\": \"X\", \"dur\": 3.1058750246254436, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.848, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.291, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.264, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.208, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.576, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.152, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.882, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.856, \"ph\": \"X\", \"dur\": 0.23897102831830172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.806, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.227, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.769, \"ph\": \"X\", \"dur\": 1.5528127883939753, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.548, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.522, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.468, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.823, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.421, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.138, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.115, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.022, \"ph\": \"X\", \"dur\": 0.33800181980302596, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.448, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345798.977, \"ph\": \"X\", \"dur\": 0.5405534638473486, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.762, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.734, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.68, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.02, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345799.618, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345796.035, \"ph\": \"X\", \"dur\": 4.10316747892249, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345795.975, \"ph\": \"X\", \"dur\": 4.199953239869777, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.208, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.565, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.54, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.493, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.841, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.442, \"ph\": \"X\", \"dur\": 0.46646745611192514, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.117, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.09, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.042, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.368, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.0, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.625, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.598, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.548, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.874, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345801.503, \"ph\": \"X\", \"dur\": 0.43927764182518725, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.148, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.12, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.061, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.423, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.018, \"ph\": \"X\", \"dur\": 0.4684630388118692, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.683, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.656, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.608, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.979, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345802.566, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.349, \"ph\": \"X\", \"dur\": 2.7628842480725577, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345800.31, \"ph\": \"X\", \"dur\": 3.7284968270079917, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.086, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.51, \"ph\": \"X\", \"dur\": 9.490741873096479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.478, \"ph\": \"X\", \"dur\": 10.734488790836616, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.403, \"ph\": \"X\", \"dur\": 10.89313761548217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345815.559, \"ph\": \"X\", \"dur\": 0.13195790603380125, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.359, \"ph\": \"X\", \"dur\": 11.446911814716648, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345816.461, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345816.366, \"ph\": \"X\", \"dur\": 0.5313238938601073, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345816.238, \"ph\": \"X\", \"dur\": 0.6874782401307302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345816.998, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345816.13, \"ph\": \"X\", \"dur\": 0.9733454618977175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345817.475, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345817.423, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345817.354, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345817.858, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345817.297, \"ph\": \"X\", \"dur\": 0.6567961561190903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.224, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.184, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.114, \"ph\": \"X\", \"dur\": 0.41358451456340745, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.583, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.057, \"ph\": \"X\", \"dur\": 0.6193789804951391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.94, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.901, \"ph\": \"X\", \"dur\": 0.30682084011639993, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.853, \"ph\": \"X\", \"dur\": 0.3846485654142185, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345819.282, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345818.798, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.265, \"ph\": \"X\", \"dur\": 15.156949501750157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345804.208, \"ph\": \"X\", \"dur\": 15.314351087208246, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345819.608, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345819.911, \"ph\": \"X\", \"dur\": 0.14867091114583283, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345828.889, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.209446319134792}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345829.444, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345829.786, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345830.334, \"ph\": \"X\", \"dur\": 0.1449291935834377, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345830.555, \"ph\": \"X\", \"dur\": 0.7346238814169088, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345830.234, \"ph\": \"X\", \"dur\": 1.1063011592814909, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345831.477, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345831.591, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345831.402, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345831.943, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345831.891, \"ph\": \"X\", \"dur\": 0.1696245294952455, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345832.177, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345832.104, \"ph\": \"X\", \"dur\": 0.14642588060839573, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345832.284, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345832.537, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345832.953, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345834.772, \"ph\": \"X\", \"dur\": 0.17012342517023152, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345836.035, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345836.683, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345837.422, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345838.399, \"ph\": \"X\", \"dur\": 1.0656411617701305, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345838.266, \"ph\": \"X\", \"dur\": 1.238009617477799, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345837.798, \"ph\": \"X\", \"dur\": 1.887821234147085, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345836.597, \"ph\": \"X\", \"dur\": 3.1590074140114544, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345836.268, \"ph\": \"X\", \"dur\": 3.583567633424554, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345840.765, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345841.164, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345841.596, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345842.022, \"ph\": \"X\", \"dur\": 0.5295777589976561, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345841.965, \"ph\": \"X\", \"dur\": 0.6111472018578699, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345841.693, \"ph\": \"X\", \"dur\": 0.9606236221855742, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345841.119, \"ph\": \"X\", \"dur\": 1.567779658643556, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345840.922, \"ph\": \"X\", \"dur\": 1.8394283536734415, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345843.086, \"ph\": \"X\", \"dur\": 0.11275042254683966, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345843.57, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345843.903, \"ph\": \"X\", \"dur\": 0.11125373552188161, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345843.416, \"ph\": \"X\", \"dur\": 0.6797453571684471, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345844.684, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345845.113, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345848.338, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345848.241, \"ph\": \"X\", \"dur\": 0.3766662346144422, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345829.919, \"ph\": \"X\", \"dur\": 19.027132700454178, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345849.211, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345849.622, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345850.169, \"ph\": \"X\", \"dur\": 0.7865090316154546, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345849.557, \"ph\": \"X\", \"dur\": 1.4717422412087475, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345849.368, \"ph\": \"X\", \"dur\": 1.7361569489513362, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345829.642, \"ph\": \"X\", \"dur\": 21.71468370160385, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345851.73, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.57, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.52, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.435, \"ph\": \"X\", \"dur\": 0.61613615860773, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.118, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.365, \"ph\": \"X\", \"dur\": 0.8523632607136086, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.526, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.501, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.446, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.815, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.382, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345854.098, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345854.076, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345854.026, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.325, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345853.983, \"ph\": \"X\", \"dur\": 1.4440535312470237, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.63, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.6, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.545, \"ph\": \"X\", \"dur\": 0.36569052976474986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.961, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345855.502, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.229, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.203, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.149, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.505, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.104, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.143, \"ph\": \"X\", \"dur\": 4.480831504886904, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345852.059, \"ph\": \"X\", \"dur\": 4.651453825732122, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345856.786, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.341, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.318, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.267, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.609, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.223, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.977, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.951, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.904, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.254, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.858, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.517, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.494, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.443, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.818, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.398, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.077, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.053, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.006, \"ph\": \"X\", \"dur\": 0.31430427524119015, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.37, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345858.962, \"ph\": \"X\", \"dur\": 0.47020917367432025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.632, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.605, \"ph\": \"X\", \"dur\": 0.22674808428114435, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.557, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.939, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345859.514, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.092, \"ph\": \"X\", \"dur\": 2.968678714004289, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345857.03, \"ph\": \"X\", \"dur\": 3.076440179801269, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.151, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.533, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.508, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.458, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.803, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.417, \"ph\": \"X\", \"dur\": 1.3096011468382924, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.058, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.026, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345861.949, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.395, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345861.89, \"ph\": \"X\", \"dur\": 0.586202418108569, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.697, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.666, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.612, \"ph\": \"X\", \"dur\": 0.41782512780078856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.101, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345862.568, \"ph\": \"X\", \"dur\": 0.6049110059205447, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.379, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.347, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.293, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.658, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.247, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.944, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.917, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.868, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.204, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345863.82, \"ph\": \"X\", \"dur\": 0.44825776397493555, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.327, \"ph\": \"X\", \"dur\": 3.9954060131255105, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345860.274, \"ph\": \"X\", \"dur\": 4.084957786785501, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.39, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.787, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.762, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.712, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.036, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.671, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.309, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.287, \"ph\": \"X\", \"dur\": 0.22175912753128418, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.236, \"ph\": \"X\", \"dur\": 0.3023307790415258, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.587, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.192, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.84, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.818, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.768, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.09, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345865.722, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.339, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.314, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.268, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.586, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.223, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.843, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.818, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.768, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345868.143, \"ph\": \"X\", \"dur\": 0.06311030288573105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345866.721, \"ph\": \"X\", \"dur\": 1.5181395389824472, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.578, \"ph\": \"X\", \"dur\": 3.7250045572830897, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345864.507, \"ph\": \"X\", \"dur\": 3.8357593971299853, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345868.38, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345868.541, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345875.734, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 2.170418761042332}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.025, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.308, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.702, \"ph\": \"X\", \"dur\": 0.09129790852244096, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.861, \"ph\": \"X\", \"dur\": 0.3619488122023547, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.642, \"ph\": \"X\", \"dur\": 0.6026659753831075, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.362, \"ph\": \"X\", \"dur\": 0.05712355478589885, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.45, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.305, \"ph\": \"X\", \"dur\": 0.37766402596441423, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.781, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.729, \"ph\": \"X\", \"dur\": 0.15565545059563704, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.966, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345877.918, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345878.065, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345878.194, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345878.467, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345878.792, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345879.457, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345879.822, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345880.189, \"ph\": \"X\", \"dur\": 0.05762245046088487, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345880.86, \"ph\": \"X\", \"dur\": 0.678248670143489, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345880.764, \"ph\": \"X\", \"dur\": 0.800977006190049, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345880.422, \"ph\": \"X\", \"dur\": 1.2744290017517783, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345879.766, \"ph\": \"X\", \"dur\": 1.9843575472568793, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345879.606, \"ph\": \"X\", \"dur\": 2.232059249887436, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345882.445, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345882.743, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345882.969, \"ph\": \"X\", \"dur\": 0.07333766422294438, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345883.387, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345883.33, \"ph\": \"X\", \"dur\": 0.555270886259436, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345883.128, \"ph\": \"X\", \"dur\": 0.8211822810269827, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345882.715, \"ph\": \"X\", \"dur\": 1.3138417600756735, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345882.555, \"ph\": \"X\", \"dur\": 1.5263713176197165, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345884.321, \"ph\": \"X\", \"dur\": 0.0863089517725808, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345884.745, \"ph\": \"X\", \"dur\": 0.1419358195335216, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345884.981, \"ph\": \"X\", \"dur\": 0.11574379659675575, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345884.615, \"ph\": \"X\", \"dur\": 0.552526960047013, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345885.506, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345885.807, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345888.414, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345888.32, \"ph\": \"X\", \"dur\": 1.2200493731783026, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.42, \"ph\": \"X\", \"dur\": 13.413558565511522, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345890.066, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345890.373, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345890.802, \"ph\": \"X\", \"dur\": 0.678747565818475, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345890.34, \"ph\": \"X\", \"dur\": 1.1953540372664948, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345890.185, \"ph\": \"X\", \"dur\": 1.4133714472353838, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345876.202, \"ph\": \"X\", \"dur\": 15.599469965462752, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.074, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.735, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.712, \"ph\": \"X\", \"dur\": 0.3756684432644702, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.6, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.178, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.545, \"ph\": \"X\", \"dur\": 0.7124230238800311, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.517, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.49, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.434, \"ph\": \"X\", \"dur\": 0.3165493057786273, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.805, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.384, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.077, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.054, \"ph\": \"X\", \"dur\": 0.25443679424286825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.003, \"ph\": \"X\", \"dur\": 0.32902169765327766, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.382, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345893.959, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.63, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.605, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.554, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.886, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345894.512, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.13, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.106, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.055, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.385, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.016, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.384, \"ph\": \"X\", \"dur\": 3.1141068032627133, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345892.316, \"ph\": \"X\", \"dur\": 3.2266077779720597, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.592, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.97, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.945, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.896, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.218, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.856, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.516, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.491, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.443, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.779, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345896.403, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.059, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.03, \"ph\": \"X\", \"dur\": 0.2621696772051515, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345897.978, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.374, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345897.939, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.679, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.655, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.581, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.973, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345898.54, \"ph\": \"X\", \"dur\": 0.4966506444485791, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.253, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.228, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.179, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.504, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.135, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.763, \"ph\": \"X\", \"dur\": 3.875172155453881, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345895.722, \"ph\": \"X\", \"dur\": 3.9599844202015033, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.722, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.079, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.044, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.998, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.338, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.956, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.616, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.593, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.544, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.878, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345900.501, \"ph\": \"X\", \"dur\": 0.44077432885014534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.137, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.114, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.066, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.382, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.024, \"ph\": \"X\", \"dur\": 0.42281408455064873, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.632, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.605, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.558, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.891, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345901.515, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.143, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.12, \"ph\": \"X\", \"dur\": 0.1913264913571372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.071, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.391, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.028, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.869, \"ph\": \"X\", \"dur\": 2.6404053598634905, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345899.825, \"ph\": \"X\", \"dur\": 2.720977011373732, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345902.577, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.985, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.957, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.902, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.271, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.855, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.569, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.54, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.486, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.909, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345904.437, \"ph\": \"X\", \"dur\": 0.5368117462849534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.181, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.151, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.099, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.438, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.053, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.715, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.689, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.615, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.971, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345905.574, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.222, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.199, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.151, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.476, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.104, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.728, \"ph\": \"X\", \"dur\": 2.898833319506247, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345903.668, \"ph\": \"X\", \"dur\": 3.0043497547657894, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.701, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345906.829, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345913.575, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.9729301280528977}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345913.887, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.146, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.528, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.683, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.484, \"ph\": \"X\", \"dur\": 0.5941847489083453, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.183, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.286, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.115, \"ph\": \"X\", \"dur\": 0.38814083513912057, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.595, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.548, \"ph\": \"X\", \"dur\": 0.14742367195836778, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.777, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.736, \"ph\": \"X\", \"dur\": 0.14892035898332584, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345915.92, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345916.063, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345916.281, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345916.615, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345917.263, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345918.566, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345918.844, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345919.469, \"ph\": \"X\", \"dur\": 0.6031648710580936, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345919.368, \"ph\": \"X\", \"dur\": 0.7453501384291081, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345919.099, \"ph\": \"X\", \"dur\": 1.1028088895565888, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345918.52, \"ph\": \"X\", \"dur\": 1.7174483611393607, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345918.342, \"ph\": \"X\", \"dur\": 1.9519293283827883, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345920.863, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345921.169, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345921.38, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345922.137, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345922.076, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345921.507, \"ph\": \"X\", \"dur\": 1.1873717064667184, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345921.137, \"ph\": \"X\", \"dur\": 1.5912277553678986, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345920.995, \"ph\": \"X\", \"dur\": 1.787543203474896, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345923.013, \"ph\": \"X\", \"dur\": 0.08880343014751088, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345923.361, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345923.548, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345923.247, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345924.042, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345924.366, \"ph\": \"X\", \"dur\": 0.18982980433217916, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345926.824, \"ph\": \"X\", \"dur\": 0.08755619096004584, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345926.73, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.26, \"ph\": \"X\", \"dur\": 12.907927798913198, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345927.344, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345927.643, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345928.004, \"ph\": \"X\", \"dur\": 0.6026659753831075, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345927.612, \"ph\": \"X\", \"dur\": 1.05067429152055, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345927.456, \"ph\": \"X\", \"dur\": 1.267195014464481, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345914.038, \"ph\": \"X\", \"dur\": 14.864846084045844, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.11, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.664, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.638, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.567, \"ph\": \"X\", \"dur\": 0.44027543317515927, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.059, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.499, \"ph\": \"X\", \"dur\": 0.6303546853448314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.354, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.328, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.277, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.644, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.236, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.891, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.867, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.814, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345931.152, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345930.775, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.402, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.373, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.31, \"ph\": \"X\", \"dur\": 0.3424918808779001, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.712, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.255, \"ph\": \"X\", \"dur\": 0.524339354410303, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.993, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.968, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.911, \"ph\": \"X\", \"dur\": 0.33450955007812383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.298, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345932.863, \"ph\": \"X\", \"dur\": 0.5058802144358204, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.337, \"ph\": \"X\", \"dur\": 4.07747435166071, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345929.285, \"ph\": \"X\", \"dur\": 4.178750173682872, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.515, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.969, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.939, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.879, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.292, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.827, \"ph\": \"X\", \"dur\": 0.5298272068351492, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.614, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.588, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.538, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.89, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345934.49, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.157, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.13, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.082, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.443, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.039, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.706, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.679, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.631, \"ph\": \"X\", \"dur\": 0.29833961364163764, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.984, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345935.586, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.252, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.225, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.176, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.509, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.131, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.706, \"ph\": \"X\", \"dur\": 2.9559568742921454, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345933.662, \"ph\": \"X\", \"dur\": 3.0362790779648945, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.728, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.176, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.15, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.1, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.426, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.054, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.702, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.674, \"ph\": \"X\", \"dur\": 1.1629258183924036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.627, \"ph\": \"X\", \"dur\": 1.2397557523402503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345938.928, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345937.583, \"ph\": \"X\", \"dur\": 1.416863716960286, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.234, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.206, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.147, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.552, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.097, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.815, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.79, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.74, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.097, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345939.696, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.425, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.396, \"ph\": \"X\", \"dur\": 0.23647654994337164, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.344, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.706, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.3, \"ph\": \"X\", \"dur\": 0.47095751718679923, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.95, \"ph\": \"X\", \"dur\": 3.8766688424788387, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345936.892, \"ph\": \"X\", \"dur\": 3.971209572888689, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345940.898, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.274, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.247, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.198, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.531, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.157, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.846, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.821, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.772, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.138, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.725, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.394, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.367, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.321, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.641, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.274, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.9, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.875, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.815, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.17, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345942.773, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.421, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.394, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.348, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.668, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345943.301, \"ph\": \"X\", \"dur\": 1.9279823359834596, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.065, \"ph\": \"X\", \"dur\": 4.230136428206431, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345941.02, \"ph\": \"X\", \"dur\": 4.3326594894160575, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345945.384, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345945.619, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.172, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.9563578705960574}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.395, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.647, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.994, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.122, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.954, \"ph\": \"X\", \"dur\": 0.5038846317358763, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.532, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.635, \"ph\": \"X\", \"dur\": 0.18209692136989591, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.491, \"ph\": \"X\", \"dur\": 0.37317396488954013, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.936, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345953.907, \"ph\": \"X\", \"dur\": 0.1267195014464481, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.111, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.067, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.225, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.365, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.571, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345954.877, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345955.494, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345955.803, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345956.064, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345956.549, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345956.485, \"ph\": \"X\", \"dur\": 0.5886968964834991, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345956.283, \"ph\": \"X\", \"dur\": 0.86658178745071, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345955.769, \"ph\": \"X\", \"dur\": 1.4138703429103698, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345955.614, \"ph\": \"X\", \"dur\": 1.6244043177544687, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345957.782, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.076, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.409, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.829, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.786, \"ph\": \"X\", \"dur\": 0.5283305198101912, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.513, \"ph\": \"X\", \"dur\": 0.8750630139254724, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345958.046, \"ph\": \"X\", \"dur\": 1.3936650680734362, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345957.908, \"ph\": \"X\", \"dur\": 1.5844926637555872, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345959.733, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345960.038, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345960.201, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345959.95, \"ph\": \"X\", \"dur\": 0.4183240234757745, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345960.72, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345961.016, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345963.297, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345963.237, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.761, \"ph\": \"X\", \"dur\": 10.889894793594761, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345964.876, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345965.181, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345965.592, \"ph\": \"X\", \"dur\": 0.618381189145167, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345965.134, \"ph\": \"X\", \"dur\": 1.1327426300557497, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345964.979, \"ph\": \"X\", \"dur\": 1.3417799178748906, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345952.544, \"ph\": \"X\", \"dur\": 13.947376937746562, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345966.724, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.212, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.186, \"ph\": \"X\", \"dur\": 0.3671872167897079, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.131, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.634, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.083, \"ph\": \"X\", \"dur\": 0.647566586131849, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.945, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.92, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.874, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.234, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345967.82, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.519, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.493, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.398, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.875, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345968.355, \"ph\": \"X\", \"dur\": 0.5891957921584852, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.141, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.112, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.058, \"ph\": \"X\", \"dur\": 0.34348967222787213, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.451, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.013, \"ph\": \"X\", \"dur\": 0.5021384968734253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.687, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.663, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.618, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.949, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345969.569, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345966.951, \"ph\": \"X\", \"dur\": 3.1098661900253317, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345966.9, \"ph\": \"X\", \"dur\": 3.207150846647605, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.148, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.537, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.512, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.461, \"ph\": \"X\", \"dur\": 0.3612004686898757, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.87, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.42, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.162, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.138, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.088, \"ph\": \"X\", \"dur\": 0.31954267982854334, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.453, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.045, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.724, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.7, \"ph\": \"X\", \"dur\": 1.2382590653152923, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.657, \"ph\": \"X\", \"dur\": 1.327311943300296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.043, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345971.611, \"ph\": \"X\", \"dur\": 1.4999298468454576, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.335, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.311, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.256, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.624, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.208, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.897, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.874, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.823, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.17, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345973.781, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.325, \"ph\": \"X\", \"dur\": 3.9649733769513635, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345970.285, \"ph\": \"X\", \"dur\": 4.060761346548679, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.394, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.769, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.745, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.693, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.035, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.654, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.307, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.282, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.236, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.583, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.192, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.838, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.811, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.764, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.088, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345975.718, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.351, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.325, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.268, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.626, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.223, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.875, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.852, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.803, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.129, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345976.757, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.543, \"ph\": \"X\", \"dur\": 2.716985845973844, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345974.5, \"ph\": \"X\", \"dur\": 2.7975574974840858, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.326, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.709, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.684, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.636, \"ph\": \"X\", \"dur\": 1.1596829965049946, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345978.871, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.597, \"ph\": \"X\", \"dur\": 1.3505105921871456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.187, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.166, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.091, \"ph\": \"X\", \"dur\": 0.3574587511274806, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.512, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.05, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.785, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.756, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.711, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.059, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345979.656, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.327, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.3, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.252, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.591, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.213, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.876, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.848, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.798, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345981.13, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345980.754, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.496, \"ph\": \"X\", \"dur\": 3.75818111966966, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345977.454, \"ph\": \"X\", \"dur\": 3.8472339976546635, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345981.332, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345981.441, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.098, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.7598752902834358}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.361, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.593, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.993, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345989.117, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.943, \"ph\": \"X\", \"dur\": 0.5343172679100233, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345989.586, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345989.701, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345989.513, \"ph\": \"X\", \"dur\": 0.4083461099760542, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.002, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345989.968, \"ph\": \"X\", \"dur\": 0.12272833604655997, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.165, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.125, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.273, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.389, \"ph\": \"X\", \"dur\": 0.06610367693564714, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.607, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345990.913, \"ph\": \"X\", \"dur\": 0.06834870747308422, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345991.439, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345991.757, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345992.051, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345993.477, \"ph\": \"X\", \"dur\": 0.5235910108978239, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345993.428, \"ph\": \"X\", \"dur\": 0.6001714970081774, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345993.242, \"ph\": \"X\", \"dur\": 0.8675795788006821, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345991.724, \"ph\": \"X\", \"dur\": 2.4208912628696435, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345991.559, \"ph\": \"X\", \"dur\": 2.6541249909256064, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345994.761, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.077, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.329, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.926, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.895, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.477, \"ph\": \"X\", \"dur\": 1.019493311833924, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345995.024, \"ph\": \"X\", \"dur\": 1.5291152438321396, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345994.879, \"ph\": \"X\", \"dur\": 1.727925170314067, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345996.835, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345997.152, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345997.333, \"ph\": \"X\", \"dur\": 0.08955177365998991, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345997.049, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345997.873, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345998.186, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346000.512, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346000.418, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.722, \"ph\": \"X\", \"dur\": 12.147860238072, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346001.016, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346001.338, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346001.698, \"ph\": \"X\", \"dur\": 0.5699883086715234, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346001.308, \"ph\": \"X\", \"dur\": 1.0327140472210536, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346001.127, \"ph\": \"X\", \"dur\": 1.2779212714766803, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995345988.493, \"ph\": \"X\", \"dur\": 14.04690662490627, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346002.743, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.317, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.289, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.206, \"ph\": \"X\", \"dur\": 0.41682733645081654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.683, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.153, \"ph\": \"X\", \"dur\": 0.5971781229582613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.987, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.958, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.905, \"ph\": \"X\", \"dur\": 0.31555151442865526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.288, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346003.859, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.547, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.522, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.474, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.814, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.431, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346005.114, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346005.087, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346005.032, \"ph\": \"X\", \"dur\": 1.328309734650268, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.42, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346004.992, \"ph\": \"X\", \"dur\": 1.4926958595581605, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.686, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.658, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.604, \"ph\": \"X\", \"dur\": 0.339747954665477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.995, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346006.56, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346002.99, \"ph\": \"X\", \"dur\": 4.116138766472126, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346002.932, \"ph\": \"X\", \"dur\": 4.237619863331221, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.203, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.639, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.61, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.555, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.902, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.508, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.208, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.18, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.129, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.466, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.084, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.751, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.725, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.676, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.094, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346008.631, \"ph\": \"X\", \"dur\": 0.5263349371102471, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.359, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.334, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.283, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.651, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.239, \"ph\": \"X\", \"dur\": 0.4737014433992223, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.965, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.94, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.886, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.226, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346009.83, \"ph\": \"X\", \"dur\": 0.4659685604369391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.412, \"ph\": \"X\", \"dur\": 2.944232825929974, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346007.357, \"ph\": \"X\", \"dur\": 3.0347823909399363, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.422, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.769, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.744, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.692, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346011.024, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.648, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346011.307, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346011.278, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346011.227, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346012.755, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346011.183, \"ph\": \"X\", \"dur\": 1.6742938852530704, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.056, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.027, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346012.978, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.357, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346012.935, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.625, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.597, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.546, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.94, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346013.501, \"ph\": \"X\", \"dur\": 0.5031362882233973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.195, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.169, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.121, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.459, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.077, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.558, \"ph\": \"X\", \"dur\": 4.025090305787178, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346010.514, \"ph\": \"X\", \"dur\": 4.1056619572974205, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.65, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.011, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.986, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.936, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.304, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.894, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.601, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.574, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.523, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.897, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346015.482, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.141, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.117, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.07, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.398, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.027, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.645, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.618, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.572, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.897, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346016.53, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346017.142, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346017.117, \"ph\": \"X\", \"dur\": 0.2227569188812562, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346017.073, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346017.414, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346017.029, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.805, \"ph\": \"X\", \"dur\": 2.731204372710945, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346014.763, \"ph\": \"X\", \"dur\": 3.703302595421198, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346018.531, \"ph\": \"X\", \"dur\": 0.061613615860773, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346018.691, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.106, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.752675080332411}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.384, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.631, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.023, \"ph\": \"X\", \"dur\": 0.08456281691012973, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.169, \"ph\": \"X\", \"dur\": 0.3499753160026904, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.95, \"ph\": \"X\", \"dur\": 0.5896946878334711, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.626, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.72, \"ph\": \"X\", \"dur\": 0.18409250406983999, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.574, \"ph\": \"X\", \"dur\": 0.3756684432644702, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.037, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346026.994, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.185, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.142, \"ph\": \"X\", \"dur\": 0.11624269227174178, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.302, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.424, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.602, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346027.906, \"ph\": \"X\", \"dur\": 0.06660257261063315, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346028.499, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346028.873, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346029.162, \"ph\": \"X\", \"dur\": 0.08431336907263673, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346029.646, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346029.599, \"ph\": \"X\", \"dur\": 0.6106483061828838, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346029.344, \"ph\": \"X\", \"dur\": 0.9496479173358817, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346028.827, \"ph\": \"X\", \"dur\": 1.5221307043823353, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346028.652, \"ph\": \"X\", \"dur\": 1.7511238192009169, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346030.996, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346031.352, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346031.595, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346032.059, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346032.01, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346031.718, \"ph\": \"X\", \"dur\": 0.9109835025244655, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346031.322, \"ph\": \"X\", \"dur\": 1.3407821265249185, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346031.125, \"ph\": \"X\", \"dur\": 1.5914772032053917, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346032.954, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346033.3, \"ph\": \"X\", \"dur\": 0.13021177117135022, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346033.525, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346033.164, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346034.005, \"ph\": \"X\", \"dur\": 0.2127790053815359, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346034.288, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346036.559, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346036.469, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.755, \"ph\": \"X\", \"dur\": 11.175512567524255, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346037.075, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346037.422, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346038.885, \"ph\": \"X\", \"dur\": 0.6363414334446637, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346037.388, \"ph\": \"X\", \"dur\": 2.2033727485757404, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346037.198, \"ph\": \"X\", \"dur\": 2.4585578863310875, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346025.509, \"ph\": \"X\", \"dur\": 14.35023519529777, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.042, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.613, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.577, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.483, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.974, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.435, \"ph\": \"X\", \"dur\": 0.6233701458950273, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.288, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.263, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.208, \"ph\": \"X\", \"dur\": 0.3873924916266416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.642, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.153, \"ph\": \"X\", \"dur\": 0.5540236470719709, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.945, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.919, \"ph\": \"X\", \"dur\": 0.23946992399328776, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.855, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.237, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346041.81, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.478, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.453, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.4, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.736, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.357, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.997, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.973, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.902, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.25, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346042.859, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.306, \"ph\": \"X\", \"dur\": 3.0574821441518, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346040.239, \"ph\": \"X\", \"dur\": 3.1624996837363564, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.462, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.824, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.798, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.75, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.077, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.709, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.363, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.338, \"ph\": \"X\", \"dur\": 0.2137767967315079, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.289, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.627, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.244, \"ph\": \"X\", \"dur\": 0.44526438992501943, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.901, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.877, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.827, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.105, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346044.785, \"ph\": \"X\", \"dur\": 1.3921683810484782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.422, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.393, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.334, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.722, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.284, \"ph\": \"X\", \"dur\": 0.5031362882233973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.007, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.983, \"ph\": \"X\", \"dur\": 0.2611718858551795, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.931, \"ph\": \"X\", \"dur\": 0.34348967222787213, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.325, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346046.885, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.615, \"ph\": \"X\", \"dur\": 3.831768231730097, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346043.575, \"ph\": \"X\", \"dur\": 3.9362868756396674, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.54, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.924, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.898, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.852, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.203, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.81, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.473, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.449, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.402, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.732, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.363, \"ph\": \"X\", \"dur\": 0.4288008326504809, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.993, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.971, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.907, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.3, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346048.863, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.557, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.532, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.487, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.813, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.441, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.089, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.065, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.014, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.34, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346049.942, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.696, \"ph\": \"X\", \"dur\": 2.792568540734225, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346047.653, \"ph\": \"X\", \"dur\": 2.8851136884441315, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.567, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.991, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.952, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.905, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346051.292, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.852, \"ph\": \"X\", \"dur\": 1.3801948848488137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.496, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.464, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.413, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.791, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.372, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.087, \"ph\": \"X\", \"dur\": 0.05911913748584291, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.057, \"ph\": \"X\", \"dur\": 0.26192022936765846, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.005, \"ph\": \"X\", \"dur\": 0.34598415060280224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.403, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346052.958, \"ph\": \"X\", \"dur\": 0.5285799676476841, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.676, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.653, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.604, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.985, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346053.561, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.251, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.216, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.169, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.511, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.123, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.722, \"ph\": \"X\", \"dur\": 3.9073509264904787, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346050.68, \"ph\": \"X\", \"dur\": 3.98792257800072, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.7, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346054.835, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346061.397, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.5576523459486589}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346061.689, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346061.903, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.279, \"ph\": \"X\", \"dur\": 0.08531116042260876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.425, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.21, \"ph\": \"X\", \"dur\": 0.5373106419599394, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.835, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.938, \"ph\": \"X\", \"dur\": 0.17062232084521753, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.78, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.211, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.167, \"ph\": \"X\", \"dur\": 0.14043913250856355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.38, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.349, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.481, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.587, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346063.773, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346064.06, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346064.695, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346065.01, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346065.308, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346065.753, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346065.687, \"ph\": \"X\", \"dur\": 1.574514750255867, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346065.461, \"ph\": \"X\", \"dur\": 1.9763752164571031, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346064.975, \"ph\": \"X\", \"dur\": 2.522915428404284, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346064.813, \"ph\": \"X\", \"dur\": 2.7531557824103303, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.156, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.446, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.671, \"ph\": \"X\", \"dur\": 0.07233987287297235, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346069.269, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346069.197, \"ph\": \"X\", \"dur\": 0.5462907641096878, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.812, \"ph\": \"X\", \"dur\": 1.0010341718594415, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.414, \"ph\": \"X\", \"dur\": 1.454779788259223, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346068.269, \"ph\": \"X\", \"dur\": 1.6550864017661087, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346070.148, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346070.439, \"ph\": \"X\", \"dur\": 0.12771729279642013, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346070.633, \"ph\": \"X\", \"dur\": 0.09703520878478014, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346070.343, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346071.101, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346071.419, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346073.667, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346073.615, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346062.035, \"ph\": \"X\", \"dur\": 11.989710309101435, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346074.223, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346074.533, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346074.957, \"ph\": \"X\", \"dur\": 0.6363414334446637, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346074.499, \"ph\": \"X\", \"dur\": 1.1489567394927953, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346074.334, \"ph\": \"X\", \"dur\": 1.3836871545737157, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346061.816, \"ph\": \"X\", \"dur\": 14.081330426480307, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.079, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.622, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.577, \"ph\": \"X\", \"dur\": 0.339498506827984, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.5, \"ph\": \"X\", \"dur\": 0.4467610769499775, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.002, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.453, \"ph\": \"X\", \"dur\": 0.6253657285949713, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.321, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.294, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.234, \"ph\": \"X\", \"dur\": 0.3429907765528861, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.635, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.183, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.908, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.883, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.83, \"ph\": \"X\", \"dur\": 0.3048252574164559, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.185, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346077.782, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.441, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.415, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.369, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.698, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346078.309, \"ph\": \"X\", \"dur\": 1.44704690529694, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.019, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346079.993, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346079.928, \"ph\": \"X\", \"dur\": 0.38015850433934434, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.366, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346079.874, \"ph\": \"X\", \"dur\": 0.5597609473343101, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.318, \"ph\": \"X\", \"dur\": 4.1842380261077174, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346076.239, \"ph\": \"X\", \"dur\": 4.304970779454334, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.597, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.028, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.003, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.952, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.299, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.901, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.626, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.597, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.548, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.926, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346081.495, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.235, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.21, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.157, \"ph\": \"X\", \"dur\": 0.29384955256676354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.5, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.108, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.8, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.775, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.727, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.055, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346082.683, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.335, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.312, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.262, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.588, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.22, \"ph\": \"X\", \"dur\": 0.432293102375383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.785, \"ph\": \"X\", \"dur\": 2.9230297597430686, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346080.738, \"ph\": \"X\", \"dur\": 3.0225594469027786, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.793, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.164, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.139, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.087, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.43, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.046, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.696, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.672, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.623, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.943, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346084.587, \"ph\": \"X\", \"dur\": 1.485461872270863, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.327, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.299, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.24, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.626, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.188, \"ph\": \"X\", \"dur\": 0.5023879447109183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.893, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.868, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.818, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.17, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346086.772, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.42, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.395, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.35, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.712, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.309, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.928, \"ph\": \"X\", \"dur\": 3.9026114175781115, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346083.887, \"ph\": \"X\", \"dur\": 3.981935829900888, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.898, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.26, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.233, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.185, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.515, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.143, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.783, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.76, \"ph\": \"X\", \"dur\": 0.25194231586793814, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.711, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.105, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.668, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.399, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.369, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.312, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.701, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.26, \"ph\": \"X\", \"dur\": 0.5028868403859043, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.969, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.941, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.89, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.239, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346089.844, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.49, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.465, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.419, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.752, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.375, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346088.038, \"ph\": \"X\", \"dur\": 2.8317318512206278, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346087.999, \"ph\": \"X\", \"dur\": 2.905817858956051, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346090.934, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346091.976, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346098.295, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.5610390325223615}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346098.561, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346098.786, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.096, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.233, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.039, \"ph\": \"X\", \"dur\": 0.5293283111601631, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.634, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.74, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.603, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.027, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346099.998, \"ph\": \"X\", \"dur\": 0.09503962608483608, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.157, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.127, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.277, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.385, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.581, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346100.821, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346101.438, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346101.754, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346102.029, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346102.436, \"ph\": \"X\", \"dur\": 0.5303261025101352, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346102.388, \"ph\": \"X\", \"dur\": 0.6056593494330237, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346102.161, \"ph\": \"X\", \"dur\": 0.9129790852244096, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346101.722, \"ph\": \"X\", \"dur\": 1.38568273727366, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346101.561, \"ph\": \"X\", \"dur\": 1.5997089818426609, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346103.663, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346103.974, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346104.204, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346104.754, \"ph\": \"X\", \"dur\": 0.3891386264890926, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346104.694, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346104.316, \"ph\": \"X\", \"dur\": 0.9371755254612314, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346103.943, \"ph\": \"X\", \"dur\": 1.3417799178748906, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346103.771, \"ph\": \"X\", \"dur\": 1.5660335237811047, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346105.619, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346105.904, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346106.069, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346105.828, \"ph\": \"X\", \"dur\": 0.400363779176278, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346106.584, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346106.899, \"ph\": \"X\", \"dur\": 0.19307262621958823, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346109.177, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346109.129, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346098.889, \"ph\": \"X\", \"dur\": 10.643689777989163, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346109.71, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346110.068, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346110.409, \"ph\": \"X\", \"dur\": 0.5380589854724184, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346110.005, \"ph\": \"X\", \"dur\": 0.9962946629470742, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346109.84, \"ph\": \"X\", \"dur\": 2.8801247316942713, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346098.688, \"ph\": \"X\", \"dur\": 14.188094100927314, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.058, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.589, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.563, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.466, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.957, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.418, \"ph\": \"X\", \"dur\": 0.6084032756454467, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.274, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.248, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.193, \"ph\": \"X\", \"dur\": 0.370430038677117, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.618, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.141, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.881, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.857, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.807, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.184, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346114.763, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.42, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.397, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.345, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.718, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.304, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.974, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.952, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.883, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.226, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346115.838, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.288, \"ph\": \"X\", \"dur\": 3.038773556339825, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346113.236, \"ph\": \"X\", \"dur\": 3.145786678624325, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.428, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.818, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.795, \"ph\": \"X\", \"dur\": 0.19706379161947638, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.744, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.067, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.702, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.381, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.357, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.306, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.627, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.265, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.883, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.86, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.811, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346118.155, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346117.77, \"ph\": \"X\", \"dur\": 0.44825776397493555, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.495, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.469, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.41, \"ph\": \"X\", \"dur\": 0.36943224732714497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.835, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.357, \"ph\": \"X\", \"dur\": 0.5418007030348135, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.097, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.075, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.024, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.394, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346119.98, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.61, \"ph\": \"X\", \"dur\": 3.9080992700029578, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346116.567, \"ph\": \"X\", \"dur\": 4.01112122688757, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.609, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.965, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.941, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.892, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.252, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.853, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.521, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.497, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.448, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.771, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.406, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.017, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.992, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.946, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.268, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346121.904, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.515, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.491, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.443, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.81, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.4, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.055, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.03, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.984, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.298, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346122.941, \"ph\": \"X\", \"dur\": 0.41807457563828154, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.761, \"ph\": \"X\", \"dur\": 2.673831370087554, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346120.721, \"ph\": \"X\", \"dur\": 2.7491646170104422, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.5, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.854, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.829, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.782, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346124.115, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.74, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346124.403, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346124.379, \"ph\": \"X\", \"dur\": 1.0716279098699626, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346124.334, \"ph\": \"X\", \"dur\": 1.1494556351677814, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346125.561, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346124.292, \"ph\": \"X\", \"dur\": 1.3352942741000722, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346125.834, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346125.805, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346125.752, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.13, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346125.703, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.424, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.376, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.325, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.722, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.278, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.999, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.971, \"ph\": \"X\", \"dur\": 0.2561829291053193, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.922, \"ph\": \"X\", \"dur\": 0.3362556849405749, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346127.31, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346126.873, \"ph\": \"X\", \"dur\": 0.5051318709233413, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.654, \"ph\": \"X\", \"dur\": 3.7833753512564536, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346123.594, \"ph\": \"X\", \"dur\": 3.882406142741178, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346127.51, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346127.615, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.16, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.4320388238681778}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.394, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.65, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.966, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.092, \"ph\": \"X\", \"dur\": 0.2504456288429801, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.933, \"ph\": \"X\", \"dur\": 0.433290893725355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.446, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.554, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.398, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.848, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.813, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.978, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346135.945, \"ph\": \"X\", \"dur\": 0.10476809174706339, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346136.082, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346136.212, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346136.349, \"ph\": \"X\", \"dur\": 0.01945693132445463, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346136.575, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346137.206, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346137.579, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346137.893, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346138.472, \"ph\": \"X\", \"dur\": 0.5098713798357085, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346138.425, \"ph\": \"X\", \"dur\": 0.584955178921104, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346138.208, \"ph\": \"X\", \"dur\": 0.8847914795876997, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346137.53, \"ph\": \"X\", \"dur\": 2.7002728408618126, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346137.343, \"ph\": \"X\", \"dur\": 2.936998838642677, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346140.848, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.178, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.399, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.749, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.714, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.515, \"ph\": \"X\", \"dur\": 0.7852617924279894, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346141.146, \"ph\": \"X\", \"dur\": 1.1868728107917326, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346140.98, \"ph\": \"X\", \"dur\": 1.4293361088349363, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346142.641, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346142.902, \"ph\": \"X\", \"dur\": 0.13495128008371737, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346143.108, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346142.829, \"ph\": \"X\", \"dur\": 0.3963726137763899, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346143.527, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346143.848, \"ph\": \"X\", \"dur\": 0.2227569188812562, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346146.047, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346145.993, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.758, \"ph\": \"X\", \"dur\": 11.664929224685537, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346146.608, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346146.899, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346147.245, \"ph\": \"X\", \"dur\": 0.552526960047013, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346146.866, \"ph\": \"X\", \"dur\": 0.9855684059348749, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346146.711, \"ph\": \"X\", \"dur\": 1.205331950766215, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346134.565, \"ph\": \"X\", \"dur\": 13.483154512172074, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.224, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.807, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.783, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.717, \"ph\": \"X\", \"dur\": 0.35471482491505746, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.128, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.674, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.46, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.42, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.348, \"ph\": \"X\", \"dur\": 0.35895543815243863, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.757, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.304, \"ph\": \"X\", \"dur\": 0.5240899065728101, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.022, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.996, \"ph\": \"X\", \"dur\": 0.24046771534325978, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.945, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.318, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346149.9, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.581, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.555, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.505, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.878, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346150.462, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346151.128, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346151.101, \"ph\": \"X\", \"dur\": 1.2120670423785265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346151.051, \"ph\": \"X\", \"dur\": 1.2921397982137819, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346152.405, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346151.013, \"ph\": \"X\", \"dur\": 1.4647577017589435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.55, \"ph\": \"X\", \"dur\": 3.9889203693506925, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346148.479, \"ph\": \"X\", \"dur\": 4.118633244847056, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346152.63, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.081, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.055, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.002, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.385, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346152.954, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.679, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.656, \"ph\": \"X\", \"dur\": 0.23223593670599052, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.608, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.961, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346153.567, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.266, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.242, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.193, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.542, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.146, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.814, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.791, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.743, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.067, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346154.702, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.324, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.301, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.253, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.576, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.21, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346152.84, \"ph\": \"X\", \"dur\": 2.8514382303825756, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346152.79, \"ph\": \"X\", \"dur\": 2.9384955256676353, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.762, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.105, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.081, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.033, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.357, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.99, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.63, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.606, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.558, \"ph\": \"X\", \"dur\": 0.3634454992273128, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.968, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346156.519, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346157.216, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346157.192, \"ph\": \"X\", \"dur\": 1.300122129013558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346157.142, \"ph\": \"X\", \"dur\": 1.381691571873772, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346158.577, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346157.101, \"ph\": \"X\", \"dur\": 1.5503183100190452, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346158.855, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346158.826, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346158.776, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.136, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346158.731, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.414, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.387, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.339, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.727, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.279, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.898, \"ph\": \"X\", \"dur\": 3.952500985076713, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346155.858, \"ph\": \"X\", \"dur\": 4.027584784162109, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346159.916, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.323, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.299, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.239, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.579, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.19, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.853, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.831, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.78, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.116, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.736, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.368, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.344, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.294, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.624, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.251, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.899, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.873, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.825, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.176, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346161.77, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.461, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.437, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.387, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.737, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.343, \"ph\": \"X\", \"dur\": 0.4549928555872468, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.058, \"ph\": \"X\", \"dur\": 2.7973080496465927, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346160.016, \"ph\": \"X\", \"dur\": 2.892098227893936, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346162.94, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346163.04, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346170.457, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.383053228235046}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346170.834, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.033, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.361, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.476, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.307, \"ph\": \"X\", \"dur\": 0.4789398479865755, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.889, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.006, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.822, \"ph\": \"X\", \"dur\": 0.4230635323881417, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.319, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.282, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.461, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.425, \"ph\": \"X\", \"dur\": 0.09129790852244096, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.551, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.668, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346172.831, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346173.068, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346173.662, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346174.011, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346174.284, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346174.702, \"ph\": \"X\", \"dur\": 0.5807145656837228, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346174.642, \"ph\": \"X\", \"dur\": 0.6672729652937965, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346174.439, \"ph\": \"X\", \"dur\": 0.9681070573103643, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346173.977, \"ph\": \"X\", \"dur\": 1.4655060452714224, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346173.788, \"ph\": \"X\", \"dur\": 1.7102143738520632, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.077, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.375, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.607, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346177.246, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346177.197, \"ph\": \"X\", \"dur\": 0.5403040160098556, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.717, \"ph\": \"X\", \"dur\": 1.087093675794529, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.343, \"ph\": \"X\", \"dur\": 1.4946914422581044, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346176.186, \"ph\": \"X\", \"dur\": 1.7047265214272171, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346178.144, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346178.418, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346178.569, \"ph\": \"X\", \"dur\": 0.08531116042260876, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346178.348, \"ph\": \"X\", \"dur\": 0.36369494706480576, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346179.007, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346179.277, \"ph\": \"X\", \"dur\": 0.17785630813251477, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346181.446, \"ph\": \"X\", \"dur\": 0.11275042254683966, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346181.395, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346171.149, \"ph\": \"X\", \"dur\": 10.633961312326935, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346181.952, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346182.245, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346182.592, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346182.214, \"ph\": \"X\", \"dur\": 0.9805794491850148, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346182.063, \"ph\": \"X\", \"dur\": 1.197848515641425, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346170.944, \"ph\": \"X\", \"dur\": 13.487644573246948, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346184.608, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.146, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.118, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.057, \"ph\": \"X\", \"dur\": 0.37866181731438625, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.489, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.009, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.803, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.765, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.719, \"ph\": \"X\", \"dur\": 0.36519163408976385, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.133, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346185.665, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.4, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.376, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.329, \"ph\": \"X\", \"dur\": 0.2843705347420292, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.661, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.269, \"ph\": \"X\", \"dur\": 0.45748733396217683, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.897, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.872, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.825, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.201, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346186.78, \"ph\": \"X\", \"dur\": 0.5091230363232295, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.465, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.441, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.393, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.757, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.347, \"ph\": \"X\", \"dur\": 0.47444978691170137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346184.86, \"ph\": \"X\", \"dur\": 3.0048486504407754, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346184.807, \"ph\": \"X\", \"dur\": 3.115603490287671, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346187.962, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.353, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.329, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.28, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.616, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.236, \"ph\": \"X\", \"dur\": 0.44202156803761034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.905, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.881, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.833, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.164, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.791, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.423, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.398, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.354, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.682, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.311, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.946, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.921, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.872, \"ph\": \"X\", \"dur\": 1.1514512178677252, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.069, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346189.829, \"ph\": \"X\", \"dur\": 1.3061088771133902, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.335, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.31, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.257, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.622, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.213, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.149, \"ph\": \"X\", \"dur\": 3.605519043123939, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346188.084, \"ph\": \"X\", \"dur\": 3.7050487302836492, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.822, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.167, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.143, \"ph\": \"X\", \"dur\": 0.23897102831830172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.093, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.463, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.051, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.748, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.724, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.677, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.006, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346192.632, \"ph\": \"X\", \"dur\": 0.4549928555872468, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.281, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.256, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.205, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.604, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.162, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.873, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.848, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.8, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.167, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346193.759, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.441, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.418, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.372, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.699, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.325, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.96, \"ph\": \"X\", \"dur\": 2.8569260828074214, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346191.919, \"ph\": \"X\", \"dur\": 2.9502195740298065, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346194.9, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.252, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.226, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.179, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.543, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.137, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.812, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.788, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.741, \"ph\": \"X\", \"dur\": 1.139477721668061, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346196.939, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.697, \"ph\": \"X\", \"dur\": 1.3148395514256457, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.264, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.204, \"ph\": \"X\", \"dur\": 0.2551851377553473, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.153, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.598, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.092, \"ph\": \"X\", \"dur\": 0.5739794740714116, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.887, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.858, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.807, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.186, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346197.761, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.462, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.432, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.38, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.767, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.333, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.046, \"ph\": \"X\", \"dur\": 3.857960254666863, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346195.007, \"ph\": \"X\", \"dur\": 3.936536323477161, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346198.98, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346199.097, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346205.443, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.3702310130522448}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346205.655, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346205.863, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.158, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.284, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.116, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.663, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.756, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346206.621, \"ph\": \"X\", \"dur\": 0.37267506921455407, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.069, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.028, \"ph\": \"X\", \"dur\": 0.10576588309703543, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.195, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.167, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.285, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.408, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.55, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346207.761, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346208.397, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346208.79, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346209.073, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346209.456, \"ph\": \"X\", \"dur\": 0.558014812471859, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346209.422, \"ph\": \"X\", \"dur\": 0.618880084820153, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346209.224, \"ph\": \"X\", \"dur\": 0.8987605584873081, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346208.734, \"ph\": \"X\", \"dur\": 1.4238482564100903, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346208.54, \"ph\": \"X\", \"dur\": 1.6735455417405913, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346211.748, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.041, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.271, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.729, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.62, \"ph\": \"X\", \"dur\": 0.6288579983198733, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.414, \"ph\": \"X\", \"dur\": 0.9169702506242977, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346212.006, \"ph\": \"X\", \"dur\": 1.3762037194489256, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346211.86, \"ph\": \"X\", \"dur\": 1.579004811330741, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346213.655, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346213.902, \"ph\": \"X\", \"dur\": 0.09454073040985007, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346214.066, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346213.856, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346214.472, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346214.735, \"ph\": \"X\", \"dur\": 0.23647654994337164, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.089, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.017, \"ph\": \"X\", \"dur\": 0.18933090865719313, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346205.966, \"ph\": \"X\", \"dur\": 11.435437214191971, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.578, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.882, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346218.263, \"ph\": \"X\", \"dur\": 0.5754761610963697, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.834, \"ph\": \"X\", \"dur\": 1.0604027571827774, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346217.689, \"ph\": \"X\", \"dur\": 1.29114200686381, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346205.78, \"ph\": \"X\", \"dur\": 13.352194397488244, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.328, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.827, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.801, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.732, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.168, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.687, \"ph\": \"X\", \"dur\": 0.5739794740714116, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.49, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.467, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.417, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.769, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.377, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.009, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.984, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.936, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.27, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346220.894, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.521, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.498, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.449, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.779, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.402, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346222.022, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.996, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.946, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.411, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346221.903, \"ph\": \"X\", \"dur\": 1.6101857910173671, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.556, \"ph\": \"X\", \"dur\": 4.005383926625231, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346219.501, \"ph\": \"X\", \"dur\": 4.100174104872574, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.636, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.057, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.032, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.979, \"ph\": \"X\", \"dur\": 0.3110614533537811, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.345, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.931, \"ph\": \"X\", \"dur\": 0.4816837741989986, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.643, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.619, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.57, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.941, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346224.528, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.199, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.174, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.128, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.456, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.088, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.713, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.688, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.643, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.967, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346225.599, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.226, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.202, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.153, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.471, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.112, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.817, \"ph\": \"X\", \"dur\": 2.7728621615722777, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346223.755, \"ph\": \"X\", \"dur\": 2.869647922519565, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.654, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.022, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.998, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.953, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.274, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.909, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.539, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.515, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.467, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.808, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.425, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346228.058, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346228.035, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.988, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.133, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346227.943, \"ph\": \"X\", \"dur\": 1.2841574674140057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.44, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.411, \"ph\": \"X\", \"dur\": 0.25393789856788224, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.363, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.747, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.304, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.063, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.035, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.981, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.356, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346229.934, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.819, \"ph\": \"X\", \"dur\": 3.6943224732714497, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346226.78, \"ph\": \"X\", \"dur\": 3.7781369466691004, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.588, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.957, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.931, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.881, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.281, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.838, \"ph\": \"X\", \"dur\": 0.5068780057857925, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.58, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.558, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.505, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.849, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346231.46, \"ph\": \"X\", \"dur\": 0.4549928555872468, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.14, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.109, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.062, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.403, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.0, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.685, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.66, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.609, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.94, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346232.562, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.219, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.188, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.121, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.474, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.078, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.729, \"ph\": \"X\", \"dur\": 2.89658828896881, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346230.686, \"ph\": \"X\", \"dur\": 2.987387301816265, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.703, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346233.812, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346240.299, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.2737385146480558}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346240.538, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346240.743, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.171, \"ph\": \"X\", \"dur\": 0.09454073040985007, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.312, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.104, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.745, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.841, \"ph\": \"X\", \"dur\": 0.17685851678254272, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346242.684, \"ph\": \"X\", \"dur\": 0.35820709463995964, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.147, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.09, \"ph\": \"X\", \"dur\": 0.14368195439597267, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.314, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.269, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.414, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.555, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346243.793, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346244.046, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346244.663, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346244.968, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346245.265, \"ph\": \"X\", \"dur\": 0.05911913748584291, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346245.704, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346245.655, \"ph\": \"X\", \"dur\": 0.6248668329199852, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346245.431, \"ph\": \"X\", \"dur\": 0.927696507636497, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346244.933, \"ph\": \"X\", \"dur\": 1.479974019846017, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346244.785, \"ph\": \"X\", \"dur\": 1.6807795290278884, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346246.982, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.279, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.549, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.876, \"ph\": \"X\", \"dur\": 0.4225646367131557, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.822, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.666, \"ph\": \"X\", \"dur\": 0.7326282987169648, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.246, \"ph\": \"X\", \"dur\": 1.203585815903764, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346247.097, \"ph\": \"X\", \"dur\": 1.4061374599480867, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346248.72, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346248.95, \"ph\": \"X\", \"dur\": 0.12896453198388516, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346249.136, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346248.906, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346249.53, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346249.787, \"ph\": \"X\", \"dur\": 0.18010133866995184, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346251.989, \"ph\": \"X\", \"dur\": 0.09204625203491999, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346251.94, \"ph\": \"X\", \"dur\": 0.1823463692073889, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346241.856, \"ph\": \"X\", \"dur\": 10.421182306945399, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346252.402, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346252.709, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346253.029, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346252.677, \"ph\": \"X\", \"dur\": 0.954137978410756, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346252.529, \"ph\": \"X\", \"dur\": 1.1554423832676135, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346240.659, \"ph\": \"X\", \"dur\": 13.170346923955842, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346253.961, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.509, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.482, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.385, \"ph\": \"X\", \"dur\": 0.38764193946413456, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.834, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.337, \"ph\": \"X\", \"dur\": 0.5684916216465655, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.16, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.134, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.078, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.446, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.029, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.685, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.663, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.613, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.97, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346256.571, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.208, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.184, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.136, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.467, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.096, \"ph\": \"X\", \"dur\": 0.4342886850753271, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.727, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.701, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.629, \"ph\": \"X\", \"dur\": 0.37217617353956806, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.051, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346257.587, \"ph\": \"X\", \"dur\": 0.5275821762977121, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.187, \"ph\": \"X\", \"dur\": 2.965685339954373, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346255.134, \"ph\": \"X\", \"dur\": 3.073446805751353, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.256, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.662, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.638, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.587, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.933, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.531, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.231, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.205, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.159, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.499, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.1, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.757, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.732, \"ph\": \"X\", \"dur\": 0.20105495701936452, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.684, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.008, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346259.644, \"ph\": \"X\", \"dur\": 0.44526438992501943, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.292, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.266, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.219, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.534, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346260.173, \"ph\": \"X\", \"dur\": 2.069918155516981, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346262.506, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346262.477, \"ph\": \"X\", \"dur\": 0.2524412115429242, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346262.428, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346262.809, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346262.357, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.41, \"ph\": \"X\", \"dur\": 4.537206716160323, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346258.367, \"ph\": \"X\", \"dur\": 4.649458243032178, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.051, \"ph\": \"X\", \"dur\": 0.05263349371102471, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.488, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.463, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.407, \"ph\": \"X\", \"dur\": 0.3170482014536133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.779, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.36, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.065, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.04, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.989, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.341, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.946, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.593, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.568, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.52, \"ph\": \"X\", \"dur\": 0.29434844824174955, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.862, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.48, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.119, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.093, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.036, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.388, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346264.996, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.65, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.625, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.578, \"ph\": \"X\", \"dur\": 0.277635443129718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.904, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346265.536, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.238, \"ph\": \"X\", \"dur\": 2.783089522909491, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346263.184, \"ph\": \"X\", \"dur\": 2.871643505219509, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.087, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.5, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.476, \"ph\": \"X\", \"dur\": 0.19606600026950435, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.427, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.745, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.38, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346267.023, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346267.002, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.941, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346267.285, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.898, \"ph\": \"X\", \"dur\": 1.323320777900408, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.47, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.442, \"ph\": \"X\", \"dur\": 0.26067299018019346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.385, \"ph\": \"X\", \"dur\": 0.34473691141533713, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.788, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.33, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.082, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.045, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.991, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.378, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346268.941, \"ph\": \"X\", \"dur\": 0.4996440184984952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.631, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.609, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.56, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.901, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346269.516, \"ph\": \"X\", \"dur\": 0.44825776397493555, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.287, \"ph\": \"X\", \"dur\": 3.738973636182698, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346266.249, \"ph\": \"X\", \"dur\": 3.8150552266180657, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346270.093, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346270.232, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.127, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.3179242893739536}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.367, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.596, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.935, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.07, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.892, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.463, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.551, \"ph\": \"X\", \"dur\": 0.185090295419812, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.423, \"ph\": \"X\", \"dur\": 0.34124464169043506, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.828, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.799, \"ph\": \"X\", \"dur\": 0.09803300013475218, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.981, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346278.932, \"ph\": \"X\", \"dur\": 0.11624269227174178, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346279.08, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346279.192, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346279.375, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346279.59, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.225, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.541, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.802, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346281.227, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346281.187, \"ph\": \"X\", \"dur\": 0.5996726013331914, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.96, \"ph\": \"X\", \"dur\": 0.9331843600613432, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.508, \"ph\": \"X\", \"dur\": 1.4188592996602298, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346280.353, \"ph\": \"X\", \"dur\": 1.638872292329063, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346282.522, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346282.796, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346284.086, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346284.473, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346284.437, \"ph\": \"X\", \"dur\": 0.5911913748584292, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346284.227, \"ph\": \"X\", \"dur\": 0.8725685355505423, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346282.766, \"ph\": \"X\", \"dur\": 2.3879641483205662, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346282.628, \"ph\": \"X\", \"dur\": 2.58228401372762, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346285.421, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346285.68, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346285.843, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346285.62, \"ph\": \"X\", \"dur\": 0.3629466035523267, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346286.26, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346286.535, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346288.765, \"ph\": \"X\", \"dur\": 0.09279459554739901, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346288.703, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.699, \"ph\": \"X\", \"dur\": 11.366340163206408, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346289.233, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346289.522, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346289.876, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346289.491, \"ph\": \"X\", \"dur\": 0.9471534389609517, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346289.334, \"ph\": \"X\", \"dur\": 1.1566896224550784, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346277.513, \"ph\": \"X\", \"dur\": 13.123201282669664, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346290.848, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.371, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.346, \"ph\": \"X\", \"dur\": 0.41957126266323963, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.272, \"ph\": \"X\", \"dur\": 0.5198492933354288, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.851, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.224, \"ph\": \"X\", \"dur\": 0.6917188533681115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.167, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.142, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.093, \"ph\": \"X\", \"dur\": 0.29335065689177753, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.45, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.04, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.713, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.688, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.643, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.02, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346292.582, \"ph\": \"X\", \"dur\": 0.5048824230858484, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.262, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.238, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.185, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.521, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.143, \"ph\": \"X\", \"dur\": 0.4432688072250754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.789, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.762, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.697, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346294.078, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346293.642, \"ph\": \"X\", \"dur\": 1.4358217526097545, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.089, \"ph\": \"X\", \"dur\": 4.062258033573636, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346291.037, \"ph\": \"X\", \"dur\": 4.155052629121036, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.238, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.705, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.68, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.625, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.993, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.574, \"ph\": \"X\", \"dur\": 0.4846771482489147, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.325, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.3, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.251, \"ph\": \"X\", \"dur\": 0.32303494955344547, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.622, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.206, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.889, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.862, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.813, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.17, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346296.771, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.442, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.416, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.368, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.716, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.324, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.978, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.955, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.905, \"ph\": \"X\", \"dur\": 0.35720930328998757, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.321, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346297.863, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.458, \"ph\": \"X\", \"dur\": 2.990380675866181, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346295.407, \"ph\": \"X\", \"dur\": 3.081429136551129, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.532, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.024, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.0, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.949, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.316, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.902, \"ph\": \"X\", \"dur\": 0.4749486825866874, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.588, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.565, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.517, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.878, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346299.475, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346300.14, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346300.118, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346300.069, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346300.416, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346300.029, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346301.605, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346301.578, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346301.519, \"ph\": \"X\", \"dur\": 0.35920488598993167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346301.936, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346301.466, \"ph\": \"X\", \"dur\": 0.5353150592599953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.211, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.184, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.132, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.492, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.083, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.786, \"ph\": \"X\", \"dur\": 3.8245342444428, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346298.737, \"ph\": \"X\", \"dur\": 3.912838778915325, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.678, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.045, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.02, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.97, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.321, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.928, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.603, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.577, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.532, \"ph\": \"X\", \"dur\": 0.30382746606648386, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.886, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346303.489, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.135, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.11, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.063, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.391, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.019, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.637, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.612, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.567, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.896, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346304.522, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.155, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.129, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.083, \"ph\": \"X\", \"dur\": 0.27713654745473193, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.408, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.028, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.834, \"ph\": \"X\", \"dur\": 2.6972794668118962, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346302.793, \"ph\": \"X\", \"dur\": 2.775855535622194, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.62, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346305.735, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.014, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.2284708106597426}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.298, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.557, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.904, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346314.935, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.852, \"ph\": \"X\", \"dur\": 1.4228504650601181, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.372, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.473, \"ph\": \"X\", \"dur\": 0.18908146081970015, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.331, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.765, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.724, \"ph\": \"X\", \"dur\": 0.11125373552188161, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.92, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346315.871, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346316.015, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346316.142, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346316.334, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346316.573, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.156, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.486, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.75, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346318.191, \"ph\": \"X\", \"dur\": 0.5535247513969849, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346318.156, \"ph\": \"X\", \"dur\": 0.616385606445223, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.922, \"ph\": \"X\", \"dur\": 0.9464050954484727, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.455, \"ph\": \"X\", \"dur\": 1.4477952488094188, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346317.295, \"ph\": \"X\", \"dur\": 1.6857684857777486, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346319.558, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346319.864, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346320.121, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346320.464, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346320.433, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346320.257, \"ph\": \"X\", \"dur\": 0.740860077354234, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346319.832, \"ph\": \"X\", \"dur\": 1.2175548948033725, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346319.687, \"ph\": \"X\", \"dur\": 1.4373184396347125, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346321.384, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346321.645, \"ph\": \"X\", \"dur\": 0.13170845819630828, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346321.833, \"ph\": \"X\", \"dur\": 0.0586202418108569, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346321.587, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346322.222, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346322.53, \"ph\": \"X\", \"dur\": 0.17461348624510567, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346324.748, \"ph\": \"X\", \"dur\": 0.10352085255959835, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346324.697, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.672, \"ph\": \"X\", \"dur\": 11.443918440666732, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346325.254, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346325.553, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346325.946, \"ph\": \"X\", \"dur\": 0.6228712502200411, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346325.522, \"ph\": \"X\", \"dur\": 1.111290116031351, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346325.366, \"ph\": \"X\", \"dur\": 1.3337975870751142, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346313.473, \"ph\": \"X\", \"dur\": 13.35269329316323, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.012, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.526, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.5, \"ph\": \"X\", \"dur\": 0.2611718858551795, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.424, \"ph\": \"X\", \"dur\": 1.3377887524750025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346328.819, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.374, \"ph\": \"X\", \"dur\": 1.5286163481571537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.157, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.129, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.072, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.483, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.022, \"ph\": \"X\", \"dur\": 0.553275303559492, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.788, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.762, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.711, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.084, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346329.663, \"ph\": \"X\", \"dur\": 0.48093543068651956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.32, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.292, \"ph\": \"X\", \"dur\": 0.24196440236821784, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.245, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.61, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.202, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.845, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.819, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.772, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.109, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346330.728, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.223, \"ph\": \"X\", \"dur\": 3.990167608538157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346327.159, \"ph\": \"X\", \"dur\": 4.10067300054756, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.299, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.76, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.73, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.675, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.058, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.626, \"ph\": \"X\", \"dur\": 0.5497830338345898, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.428, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.402, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.352, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.72, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.306, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.985, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.961, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.915, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.24, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346332.873, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.501, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.477, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.426, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.761, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.384, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346334.04, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346334.014, \"ph\": \"X\", \"dur\": 1.1933584545665505, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.968, \"ph\": \"X\", \"dur\": 1.2696894928394111, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.299, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346333.926, \"ph\": \"X\", \"dur\": 1.4455502182719817, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.49, \"ph\": \"X\", \"dur\": 3.9559932548016152, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346331.437, \"ph\": \"X\", \"dur\": 4.049785641698986, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.522, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.956, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.931, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.879, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.272, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.833, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.559, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.536, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.486, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.85, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346336.443, \"ph\": \"X\", \"dur\": 0.4737014433992223, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.191, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.148, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.077, \"ph\": \"X\", \"dur\": 0.3419929852029141, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.468, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.009, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.725, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.699, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.649, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.997, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346337.604, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.253, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.229, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.178, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.507, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.133, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.72, \"ph\": \"X\", \"dur\": 2.9063167546310376, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346335.672, \"ph\": \"X\", \"dur\": 3.0036014112533103, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.706, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.056, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.029, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.977, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.307, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.934, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.581, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.554, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.507, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.865, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.461, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346340.119, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346340.092, \"ph\": \"X\", \"dur\": 1.2130648337284984, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346340.043, \"ph\": \"X\", \"dur\": 1.2921397982137819, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346341.394, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346339.998, \"ph\": \"X\", \"dur\": 1.4630115668964925, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346341.698, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346341.672, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346341.617, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.001, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346341.571, \"ph\": \"X\", \"dur\": 0.49365727039866303, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.274, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.251, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.203, \"ph\": \"X\", \"dur\": 0.29384955256676354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.547, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.145, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.846, \"ph\": \"X\", \"dur\": 3.821291422555391, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346338.809, \"ph\": \"X\", \"dur\": 3.8996180435281955, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.74, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346342.868, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346349.322, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.2737109735376362}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346349.561, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346349.784, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.068, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.195, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.035, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.643, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.749, \"ph\": \"X\", \"dur\": 0.17411459057011963, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.578, \"ph\": \"X\", \"dur\": 0.37292451705204704, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.029, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346350.983, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.155, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.126, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.254, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.389, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.561, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346351.801, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346352.402, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346352.723, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346353.015, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346353.46, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346353.41, \"ph\": \"X\", \"dur\": 0.5704872043465096, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346353.206, \"ph\": \"X\", \"dur\": 0.8887826449875877, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346352.672, \"ph\": \"X\", \"dur\": 1.4742367195836779, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346352.526, \"ph\": \"X\", \"dur\": 1.6837729030778046, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346354.761, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.031, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.255, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.586, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.553, \"ph\": \"X\", \"dur\": 1.5375964703069018, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.368, \"ph\": \"X\", \"dur\": 1.8603819720228543, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346355.002, \"ph\": \"X\", \"dur\": 2.260246855524146, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346354.864, \"ph\": \"X\", \"dur\": 2.4553150644436785, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346357.545, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346357.788, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346357.95, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346357.73, \"ph\": \"X\", \"dur\": 0.3574587511274806, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346358.455, \"ph\": \"X\", \"dur\": 0.1763596211075567, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346358.699, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346360.992, \"ph\": \"X\", \"dur\": 0.07583214259787445, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346360.941, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346349.892, \"ph\": \"X\", \"dur\": 11.465620402528625, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346361.509, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346361.816, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346362.209, \"ph\": \"X\", \"dur\": 0.5674938302965934, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346361.787, \"ph\": \"X\", \"dur\": 1.0623983398827215, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346361.609, \"ph\": \"X\", \"dur\": 1.3046121900884322, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346349.708, \"ph\": \"X\", \"dur\": 13.361174519637993, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.219, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.693, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.668, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.609, \"ph\": \"X\", \"dur\": 0.3901364178390646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.055, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.56, \"ph\": \"X\", \"dur\": 0.5659971432716353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.364, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.34, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.274, \"ph\": \"X\", \"dur\": 0.307818631466372, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.63, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.234, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.867, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.844, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.794, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.128, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346364.754, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.38, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.354, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.307, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.636, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.246, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.869, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.844, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.799, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346366.118, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346365.752, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.433, \"ph\": \"X\", \"dur\": 2.7905729580342813, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346363.383, \"ph\": \"X\", \"dur\": 3.8457373106297053, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.308, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.77, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.746, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.689, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.092, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.637, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.39, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.368, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.318, \"ph\": \"X\", \"dur\": 0.31430427524119015, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.683, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.272, \"ph\": \"X\", \"dur\": 0.4749486825866874, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.95, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.924, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.876, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.226, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346368.834, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.487, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.462, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.412, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.75, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.371, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.011, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.984, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.938, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.308, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346369.895, \"ph\": \"X\", \"dur\": 0.47444978691170137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.515, \"ph\": \"X\", \"dur\": 2.9147979811057994, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346367.462, \"ph\": \"X\", \"dur\": 3.01432766826551, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.526, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.879, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.854, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.802, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.183, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.76, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.465, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.44, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.393, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.723, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.338, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.008, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.983, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.935, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.284, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346371.89, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.536, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.511, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.461, \"ph\": \"X\", \"dur\": 1.2564687574522817, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346373.762, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346372.42, \"ph\": \"X\", \"dur\": 1.4305833480224015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.087, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.057, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346373.988, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.377, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346373.93, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.668, \"ph\": \"X\", \"dur\": 3.8402494582048594, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346370.627, \"ph\": \"X\", \"dur\": 3.9360374278021744, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.597, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.006, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.979, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.925, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.334, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.876, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.643, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.62, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.545, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.928, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346375.498, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.217, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.177, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.129, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.5, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.085, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.772, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.747, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.7, \"ph\": \"X\", \"dur\": 0.277635443129718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.044, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346376.637, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.357, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.32, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.259, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.676, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.206, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.763, \"ph\": \"X\", \"dur\": 3.0362790779648945, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346374.697, \"ph\": \"X\", \"dur\": 3.145786678624325, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.876, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346377.975, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.145, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1903280616091434}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.375, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.586, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.88, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.992, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.809, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.36, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.481, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.294, \"ph\": \"X\", \"dur\": 0.39886709215131994, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.768, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.73, \"ph\": \"X\", \"dur\": 0.11225152687185364, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.913, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346386.878, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346387.012, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346387.131, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346387.314, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346387.592, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.179, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.517, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.816, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346389.268, \"ph\": \"X\", \"dur\": 0.5295777589976561, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346389.187, \"ph\": \"X\", \"dur\": 0.6388359118195936, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.975, \"ph\": \"X\", \"dur\": 0.9813277926974938, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.483, \"ph\": \"X\", \"dur\": 1.507912177645234, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346388.305, \"ph\": \"X\", \"dur\": 1.754865536763312, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346390.578, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346390.862, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346391.099, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346391.483, \"ph\": \"X\", \"dur\": 0.4103416926759983, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346391.435, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346391.224, \"ph\": \"X\", \"dur\": 0.769297130828437, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346390.828, \"ph\": \"X\", \"dur\": 1.1968507242914528, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346390.686, \"ph\": \"X\", \"dur\": 1.391170589698506, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346392.282, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346392.539, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346392.704, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346392.464, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346393.1, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346393.367, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346395.647, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346395.587, \"ph\": \"X\", \"dur\": 0.18284526488237493, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.689, \"ph\": \"X\", \"dur\": 11.24061845310993, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346396.102, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346396.407, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346396.875, \"ph\": \"X\", \"dur\": 0.5530258557219989, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346396.377, \"ph\": \"X\", \"dur\": 1.1063011592814909, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346396.23, \"ph\": \"X\", \"dur\": 1.3051110857634183, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346384.504, \"ph\": \"X\", \"dur\": 13.20177735147996, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346397.843, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.386, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.36, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.275, \"ph\": \"X\", \"dur\": 0.3916331048640227, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.721, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.227, \"ph\": \"X\", \"dur\": 1.5039210122453457, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346399.989, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346399.962, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346399.903, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.31, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346399.85, \"ph\": \"X\", \"dur\": 0.5290788633226702, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.579, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.554, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.503, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.858, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.456, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.134, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.111, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.035, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.399, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346400.992, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.647, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.624, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.577, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.917, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346401.536, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.091, \"ph\": \"X\", \"dur\": 3.9295517840273564, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346398.038, \"ph\": \"X\", \"dur\": 4.029081471187067, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.094, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.472, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.449, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.399, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.751, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.356, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.03, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.005, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.957, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.275, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.919, \"ph\": \"X\", \"dur\": 0.41682733645081654, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.589, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.564, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.514, \"ph\": \"X\", \"dur\": 0.2923528655418055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.852, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.469, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.141, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.117, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.038, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.403, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346403.995, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.668, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.641, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.593, \"ph\": \"X\", \"dur\": 1.332300900050156, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346405.985, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346404.549, \"ph\": \"X\", \"dur\": 1.5216318087073493, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.252, \"ph\": \"X\", \"dur\": 3.9088476135154364, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346402.21, \"ph\": \"X\", \"dur\": 3.993160982588073, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.239, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.747, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.721, \"ph\": \"X\", \"dur\": 0.2731453820548439, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.666, \"ph\": \"X\", \"dur\": 0.35571261626502954, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.076, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.614, \"ph\": \"X\", \"dur\": 0.5290788633226702, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.364, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.342, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.295, \"ph\": \"X\", \"dur\": 0.2923528655418055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.637, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.249, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.923, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.881, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.83, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.2, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346407.787, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.473, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.449, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.382, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.742, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.336, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.034, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.975, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.928, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.304, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346408.874, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.497, \"ph\": \"X\", \"dur\": 2.9315109862178312, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346406.447, \"ph\": \"X\", \"dur\": 3.0180693858279044, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.494, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.883, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.861, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.815, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.15, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.752, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.416, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.392, \"ph\": \"X\", \"dur\": 0.2524412115429242, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.345, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.717, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.305, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.984, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.946, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.899, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346412.874, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346410.853, \"ph\": \"X\", \"dur\": 2.1103287051908484, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.186, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.16, \"ph\": \"X\", \"dur\": 0.2509445245179661, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.102, \"ph\": \"X\", \"dur\": 0.338999611152998, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.498, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.051, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.769, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.744, \"ph\": \"X\", \"dur\": 0.2626685728801375, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.695, \"ph\": \"X\", \"dur\": 0.340745746015449, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346414.089, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346413.648, \"ph\": \"X\", \"dur\": 0.5230921152228379, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.666, \"ph\": \"X\", \"dur\": 4.565394321797034, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346409.624, \"ph\": \"X\", \"dur\": 4.647462660332234, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346414.304, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346414.432, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346420.905, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.2362852933916704}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.126, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.335, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.651, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.754, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.612, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.098, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.189, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.059, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.472, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.443, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.631, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.589, \"ph\": \"X\", \"dur\": 0.09828244797224518, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.719, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346422.839, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346423.021, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346423.287, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346423.892, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.211, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.531, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.996, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.922, \"ph\": \"X\", \"dur\": 0.648564377481821, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.699, \"ph\": \"X\", \"dur\": 0.9758399402726476, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.174, \"ph\": \"X\", \"dur\": 1.5545589232564263, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346424.027, \"ph\": \"X\", \"dur\": 1.7778147378126687, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346426.399, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346426.684, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346426.899, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346427.234, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346427.191, \"ph\": \"X\", \"dur\": 0.522343771710359, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346427.01, \"ph\": \"X\", \"dur\": 1.9556710459451834, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346426.651, \"ph\": \"X\", \"dur\": 2.349050285671657, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346426.506, \"ph\": \"X\", \"dur\": 2.5453657337786546, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346429.28, \"ph\": \"X\", \"dur\": 0.08955177365998991, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346429.594, \"ph\": \"X\", \"dur\": 0.10052747850968226, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346429.829, \"ph\": \"X\", \"dur\": 0.09528907392232909, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346429.508, \"ph\": \"X\", \"dur\": 0.48717162662384483, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346430.329, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346430.617, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346432.929, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346432.814, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.439, \"ph\": \"X\", \"dur\": 11.881948843304453, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346433.454, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346433.816, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346434.161, \"ph\": \"X\", \"dur\": 0.5669949346216074, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346433.768, \"ph\": \"X\", \"dur\": 1.015751594271529, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346433.568, \"ph\": \"X\", \"dur\": 1.2699389406769042, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346421.24, \"ph\": \"X\", \"dur\": 13.716887135903022, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.127, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.641, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.615, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.549, \"ph\": \"X\", \"dur\": 0.38165519136430237, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.988, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.485, \"ph\": \"X\", \"dur\": 0.6069065886204887, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.327, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.293, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.244, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.638, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.203, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.92, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.896, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.819, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.186, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346436.781, \"ph\": \"X\", \"dur\": 0.47020917367432025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.438, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.415, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.347, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.717, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.306, \"ph\": \"X\", \"dur\": 0.4759464739366594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.974, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.946, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.892, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346438.287, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346437.849, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.328, \"ph\": \"X\", \"dur\": 3.0682084011639996, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346435.275, \"ph\": \"X\", \"dur\": 3.166490849136245, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346438.485, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.748, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.722, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.667, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.07, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.616, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.393, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.367, \"ph\": \"X\", \"dur\": 0.2309886975185255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.31, \"ph\": \"X\", \"dur\": 0.3215382625284874, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.688, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.26, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.972, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.949, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.898, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.269, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346441.853, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.531, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.508, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.461, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.807, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.419, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.067, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.043, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.993, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.346, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346442.954, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.497, \"ph\": \"X\", \"dur\": 2.965685339954373, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346440.446, \"ph\": \"X\", \"dur\": 3.053740426589405, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.529, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.916, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.893, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.845, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.217, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.805, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.519, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.496, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.446, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.777, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.403, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.089, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.064, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.019, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.342, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346444.976, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.603, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.578, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.53, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.869, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346445.487, \"ph\": \"X\", \"dur\": 1.330804213025198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.083, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.054, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346446.995, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.42, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346446.942, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.683, \"ph\": \"X\", \"dur\": 3.867938168166583, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346443.639, \"ph\": \"X\", \"dur\": 3.9522515372392197, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.622, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.026, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.005, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.956, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.303, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.913, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.572, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.548, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.501, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.837, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.46, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.092, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.069, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.016, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.378, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346448.973, \"ph\": \"X\", \"dur\": 0.46646745611192514, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.623, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.6, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.551, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.904, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346449.51, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.154, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.128, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.081, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.426, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.038, \"ph\": \"X\", \"dur\": 0.4505027945123726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.811, \"ph\": \"X\", \"dur\": 2.732451611898411, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346447.766, \"ph\": \"X\", \"dur\": 2.813771606921131, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.61, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346450.755, \"ph\": \"X\", \"dur\": 0.09354293905987804, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346457.768, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1580889079635037}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.041, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.26, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.643, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.778, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.565, \"ph\": \"X\", \"dur\": 0.5403040160098556, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346459.189, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346459.28, \"ph\": \"X\", \"dur\": 0.18658698244477007, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346459.14, \"ph\": \"X\", \"dur\": 1.4405612615221217, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346460.684, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346460.633, \"ph\": \"X\", \"dur\": 0.15864882464555313, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346460.864, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346460.827, \"ph\": \"X\", \"dur\": 0.11250097470934665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346460.983, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346461.111, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346461.366, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346461.673, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346462.278, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346462.573, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346462.829, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346463.317, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346463.26, \"ph\": \"X\", \"dur\": 0.6121449932078418, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346463.017, \"ph\": \"X\", \"dur\": 0.9339327035738223, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346462.54, \"ph\": \"X\", \"dur\": 1.4632610147339853, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346462.397, \"ph\": \"X\", \"dur\": 1.6610731498659408, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346464.665, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346464.947, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346465.2, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346465.53, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346465.498, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346465.32, \"ph\": \"X\", \"dur\": 0.7560763954413074, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346464.914, \"ph\": \"X\", \"dur\": 1.1958529329414807, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346464.772, \"ph\": \"X\", \"dur\": 1.4121242080479188, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346466.396, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346466.695, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346466.876, \"ph\": \"X\", \"dur\": 0.08107054718522763, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346466.616, \"ph\": \"X\", \"dur\": 0.39088476135154365, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346467.366, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346467.667, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.082, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.006, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.372, \"ph\": \"X\", \"dur\": 12.061301838461926, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.606, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.914, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346471.305, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.88, \"ph\": \"X\", \"dur\": 1.0282239861461795, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346470.71, \"ph\": \"X\", \"dur\": 1.2502325615149565, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346458.185, \"ph\": \"X\", \"dur\": 13.929416693447065, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.333, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.893, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.842, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.767, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346473.312, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.717, \"ph\": \"X\", \"dur\": 0.6902221663431534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346473.65, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346473.623, \"ph\": \"X\", \"dur\": 1.4505391750218422, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346473.565, \"ph\": \"X\", \"dur\": 1.5365986789569297, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.159, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346473.516, \"ph\": \"X\", \"dur\": 1.7089671346645985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.456, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.426, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.375, \"ph\": \"X\", \"dur\": 0.32852280197829165, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.755, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.305, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.071, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.044, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.987, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.372, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346475.935, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.619, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.595, \"ph\": \"X\", \"dur\": 0.2227569188812562, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.544, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.897, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346476.499, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.571, \"ph\": \"X\", \"dur\": 4.430443041713316, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346472.501, \"ph\": \"X\", \"dur\": 4.557162543159765, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.117, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.545, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.523, \"ph\": \"X\", \"dur\": 0.246454463443092, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.471, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.839, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.428, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.151, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.127, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.081, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.41, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.018, \"ph\": \"X\", \"dur\": 0.4569884382871908, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.715, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.687, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.638, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.966, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346478.592, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.231, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.206, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.158, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.482, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.115, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.752, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.727, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.677, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346480.048, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346479.632, \"ph\": \"X\", \"dur\": 1.35250617488709, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.318, \"ph\": \"X\", \"dur\": 3.7506976845448694, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346477.278, \"ph\": \"X\", \"dur\": 3.831768231730097, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.145, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.565, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.539, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.484, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.874, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.437, \"ph\": \"X\", \"dur\": 0.4981473314735371, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.176, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.152, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.104, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.48, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.061, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.73, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.704, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.656, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.988, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346482.612, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.265, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.241, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.19, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.54, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.145, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.788, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.764, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.716, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.077, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346483.676, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.32, \"ph\": \"X\", \"dur\": 2.873140192244467, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346481.269, \"ph\": \"X\", \"dur\": 2.962691965904457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.261, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.631, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.607, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.557, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.88, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.516, \"ph\": \"X\", \"dur\": 0.4288008326504809, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.147, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.123, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.074, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.433, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.033, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.683, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.66, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.608, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.927, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346485.566, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.22, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.192, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.139, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.534, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.094, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.805, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.777, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.724, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346488.101, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346487.678, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.423, \"ph\": \"X\", \"dur\": 3.801086147718457, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346484.382, \"ph\": \"X\", \"dur\": 3.896125773803293, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346488.314, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346488.448, \"ph\": \"X\", \"dur\": 0.06360919856071706, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346494.843, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.2044794617092114}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.094, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.304, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.615, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.727, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.568, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.072, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.155, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.041, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.443, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.411, \"ph\": \"X\", \"dur\": 0.09578796959731511, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.572, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.54, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.659, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.771, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346496.936, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346497.193, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346497.768, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.09, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.36, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.785, \"ph\": \"X\", \"dur\": 0.5193503976604428, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.737, \"ph\": \"X\", \"dur\": 0.5936858532333592, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.504, \"ph\": \"X\", \"dur\": 0.9244536857490879, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346498.057, \"ph\": \"X\", \"dur\": 1.4051396685981143, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346497.89, \"ph\": \"X\", \"dur\": 1.636377813954133, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.068, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.37, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.586, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.889, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.86, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.687, \"ph\": \"X\", \"dur\": 0.7286371333170766, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.34, \"ph\": \"X\", \"dur\": 1.1227647165560295, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346500.172, \"ph\": \"X\", \"dur\": 2.3333350719095973, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346502.769, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346503.034, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346503.188, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346502.976, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346503.629, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346503.92, \"ph\": \"X\", \"dur\": 0.19606600026950435, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346506.298, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346506.214, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.41, \"ph\": \"X\", \"dur\": 11.176510358874229, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346506.782, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346507.136, \"ph\": \"X\", \"dur\": 0.05013901533609462, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346507.541, \"ph\": \"X\", \"dur\": 0.5348161635850094, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346507.096, \"ph\": \"X\", \"dur\": 1.057908278807847, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346506.908, \"ph\": \"X\", \"dur\": 1.3183318211505477, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346495.218, \"ph\": \"X\", \"dur\": 13.165856862880966, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346508.604, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.223, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.195, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.131, \"ph\": \"X\", \"dur\": 0.39537482242641786, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.598, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.063, \"ph\": \"X\", \"dur\": 0.6059087972705166, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.935, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.908, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.847, \"ph\": \"X\", \"dur\": 0.39238144837650174, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.292, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346509.801, \"ph\": \"X\", \"dur\": 0.5819618048711879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.621, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.594, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.534, \"ph\": \"X\", \"dur\": 0.34673249411528123, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.933, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346510.485, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.21, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.181, \"ph\": \"X\", \"dur\": 0.24894894181802207, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.129, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.518, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.08, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.786, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.76, \"ph\": \"X\", \"dur\": 0.2843705347420292, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.7, \"ph\": \"X\", \"dur\": 0.3751695475894842, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.128, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346511.654, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346508.908, \"ph\": \"X\", \"dur\": 3.332124213231602, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346508.808, \"ph\": \"X\", \"dur\": 3.4728127935776585, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.323, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.731, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.704, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.646, \"ph\": \"X\", \"dur\": 1.44704690529694, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.155, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.597, \"ph\": \"X\", \"dur\": 1.6603248063534617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.592, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.549, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.471, \"ph\": \"X\", \"dur\": 0.4043549445761661, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.936, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346514.412, \"ph\": \"X\", \"dur\": 0.5976770186332474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.264, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.235, \"ph\": \"X\", \"dur\": 0.27514096475478794, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.172, \"ph\": \"X\", \"dur\": 0.36618942543973587, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.595, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.119, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.892, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.864, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.805, \"ph\": \"X\", \"dur\": 0.36618942543973587, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.227, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346515.757, \"ph\": \"X\", \"dur\": 0.5380589854724184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.517, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.489, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.427, \"ph\": \"X\", \"dur\": 0.3424918808779001, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.823, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346516.377, \"ph\": \"X\", \"dur\": 0.5585137081468452, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.486, \"ph\": \"X\", \"dur\": 4.511513588898544, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346512.436, \"ph\": \"X\", \"dur\": 4.603060945258479, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.071, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.522, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.495, \"ph\": \"X\", \"dur\": 0.26017409450520745, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.441, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.84, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.387, \"ph\": \"X\", \"dur\": 0.5210965325228939, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.14, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.111, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.052, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.435, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.008, \"ph\": \"X\", \"dur\": 0.494156166073649, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.713, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.687, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.635, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.008, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346518.584, \"ph\": \"X\", \"dur\": 0.5350656114225023, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.33, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.305, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.249, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.637, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346519.204, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.017, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346520.987, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346520.925, \"ph\": \"X\", \"dur\": 0.3766662346144422, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.359, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346520.873, \"ph\": \"X\", \"dur\": 0.5625048735467333, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.268, \"ph\": \"X\", \"dur\": 4.233628697931334, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346517.217, \"ph\": \"X\", \"dur\": 4.328418876178676, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.602, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.049, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.023, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.953, \"ph\": \"X\", \"dur\": 0.34822918114023926, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.363, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.885, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.712, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.682, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.62, \"ph\": \"X\", \"dur\": 0.4230635323881417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.112, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346522.576, \"ph\": \"X\", \"dur\": 0.6089021713204328, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.45, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.418, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.362, \"ph\": \"X\", \"dur\": 0.35920488598993167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.78, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.282, \"ph\": \"X\", \"dur\": 0.5724827870464536, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.105, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.08, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.0, \"ph\": \"X\", \"dur\": 0.36244770787734076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.42, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346523.949, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.709, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.683, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.628, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346525.04, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346524.573, \"ph\": \"X\", \"dur\": 0.5315733416976002, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.766, \"ph\": \"X\", \"dur\": 3.400722368542179, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346521.712, \"ph\": \"X\", \"dur\": 3.4957619946270153, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346525.244, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346525.355, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.046, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1306864636216432}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.251, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.454, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.823, \"ph\": \"X\", \"dur\": 0.12796674063391314, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.979, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.765, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346533.359, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346533.445, \"ph\": \"X\", \"dur\": 0.17186956003268256, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346533.314, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346533.715, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346533.675, \"ph\": \"X\", \"dur\": 1.0531687698954801, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346534.814, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346534.774, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346534.914, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346535.056, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346535.243, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346535.518, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.056, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.389, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.614, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346537.026, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.995, \"ph\": \"X\", \"dur\": 0.555270886259436, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.761, \"ph\": \"X\", \"dur\": 0.8670806831256961, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.34, \"ph\": \"X\", \"dur\": 1.3437755005748344, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346536.164, \"ph\": \"X\", \"dur\": 1.5877354856429966, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.244, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.554, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.754, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346539.087, \"ph\": \"X\", \"dur\": 0.4218162932006767, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346539.057, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.868, \"ph\": \"X\", \"dur\": 0.7530830213913914, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.523, \"ph\": \"X\", \"dur\": 1.1389788259930749, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346538.386, \"ph\": \"X\", \"dur\": 1.328309734650268, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346539.954, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346540.21, \"ph\": \"X\", \"dur\": 0.09977913499720323, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346540.373, \"ph\": \"X\", \"dur\": 0.09404183473486405, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346540.137, \"ph\": \"X\", \"dur\": 0.3973704051263619, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346540.803, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346541.065, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346543.246, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346543.195, \"ph\": \"X\", \"dur\": 0.17860465164499378, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.567, \"ph\": \"X\", \"dur\": 11.010378099103884, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346543.755, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346544.081, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346544.433, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346544.047, \"ph\": \"X\", \"dur\": 0.98681564512234, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346543.882, \"ph\": \"X\", \"dur\": 1.203835263741257, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346532.377, \"ph\": \"X\", \"dur\": 12.856292096552144, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.395, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.981, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.937, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.861, \"ph\": \"X\", \"dur\": 0.3906353135140507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346546.306, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.814, \"ph\": \"X\", \"dur\": 0.5610081865217752, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346546.588, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346546.566, \"ph\": \"X\", \"dur\": 0.2309886975185255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346546.516, \"ph\": \"X\", \"dur\": 1.4300844523474154, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.005, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346546.474, \"ph\": \"X\", \"dur\": 1.6012056688676188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.304, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.275, \"ph\": \"X\", \"dur\": 0.2641652599050956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.214, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.627, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.162, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.892, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.866, \"ph\": \"X\", \"dur\": 0.33500844575310984, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.812, \"ph\": \"X\", \"dur\": 0.41807457563828154, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.29, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346548.763, \"ph\": \"X\", \"dur\": 0.5939353010708522, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.555, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.531, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.475, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.846, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346549.425, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.666, \"ph\": \"X\", \"dur\": 4.2847655046174, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346545.599, \"ph\": \"X\", \"dur\": 4.392277522576887, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.022, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.417, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.394, \"ph\": \"X\", \"dur\": 0.2122801097065499, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.344, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.698, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.305, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.989, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.965, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.918, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.246, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.877, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.503, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.479, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.433, \"ph\": \"X\", \"dur\": 0.2908561785168474, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.775, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.387, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.05, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.025, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.981, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.329, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346551.92, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.608, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.584, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.537, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.859, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346552.491, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.188, \"ph\": \"X\", \"dur\": 2.785334553446928, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346550.144, \"ph\": \"X\", \"dur\": 3.7492009975199116, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346553.948, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.386, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.36, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.305, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.676, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.256, \"ph\": \"X\", \"dur\": 0.4846771482489147, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.954, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.93, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.884, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.226, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.841, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.475, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.451, \"ph\": \"X\", \"dur\": 0.2127790053815359, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.403, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.739, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.36, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.996, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.972, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.924, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.254, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346555.876, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.495, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.472, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.425, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.758, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.384, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.139, \"ph\": \"X\", \"dur\": 2.739685599185708, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346554.087, \"ph\": \"X\", \"dur\": 2.827241790145754, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346556.942, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.335, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.312, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.263, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.607, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.223, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.898, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.873, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.825, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.163, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.784, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.414, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.39, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.341, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.669, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.297, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.916, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.892, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.844, \"ph\": \"X\", \"dur\": 1.117775759806169, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.009, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346558.801, \"ph\": \"X\", \"dur\": 1.2696894928394111, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.281, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.251, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.203, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.582, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.148, \"ph\": \"X\", \"dur\": 0.4976484357985511, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.131, \"ph\": \"X\", \"dur\": 3.572591928574862, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346557.091, \"ph\": \"X\", \"dur\": 3.6499207581976942, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.774, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346560.904, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.255, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1772787506908708}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.489, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.706, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.005, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.111, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.959, \"ph\": \"X\", \"dur\": 0.4103416926759983, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.437, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.556, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.408, \"ph\": \"X\", \"dur\": 0.3958737181014038, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.88, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.839, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346569.01, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346568.981, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346569.1, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346569.195, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346569.388, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346569.636, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.218, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.545, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.817, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346571.228, \"ph\": \"X\", \"dur\": 0.5106197233481876, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346571.181, \"ph\": \"X\", \"dur\": 0.584206835408625, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.959, \"ph\": \"X\", \"dur\": 0.8867870622876437, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.512, \"ph\": \"X\", \"dur\": 1.390921141861013, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346570.353, \"ph\": \"X\", \"dur\": 1.6027023558925768, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346572.45, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346572.764, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346572.97, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346573.326, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346573.298, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346573.095, \"ph\": \"X\", \"dur\": 0.7820189705405803, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346572.733, \"ph\": \"X\", \"dur\": 1.176645449454519, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346572.557, \"ph\": \"X\", \"dur\": 1.4198570910102022, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346574.243, \"ph\": \"X\", \"dur\": 0.06934649882305625, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346576.275, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346576.427, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346576.195, \"ph\": \"X\", \"dur\": 0.36419384273979183, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346576.867, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346577.164, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346579.276, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346579.228, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.837, \"ph\": \"X\", \"dur\": 11.75048983294564, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346579.754, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346580.1, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346580.464, \"ph\": \"X\", \"dur\": 0.5777211916338068, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346580.071, \"ph\": \"X\", \"dur\": 1.0262284034462352, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346579.853, \"ph\": \"X\", \"dur\": 1.2956320679386841, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346567.617, \"ph\": \"X\", \"dur\": 13.665999777054449, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346581.484, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.133, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.108, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.052, \"ph\": \"X\", \"dur\": 0.3474808376277603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.453, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346581.993, \"ph\": \"X\", \"dur\": 0.5275821762977121, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.757, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.734, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.666, \"ph\": \"X\", \"dur\": 0.36519163408976385, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.08, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346582.624, \"ph\": \"X\", \"dur\": 0.5388073289848975, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.397, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.374, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.3, \"ph\": \"X\", \"dur\": 0.339747954665477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.685, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.243, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.938, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.914, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.862, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.216, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346583.818, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.455, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.43, \"ph\": \"X\", \"dur\": 0.22175912753128418, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.378, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.728, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.337, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346581.861, \"ph\": \"X\", \"dur\": 2.9878861974912505, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346581.798, \"ph\": \"X\", \"dur\": 3.0948993197757515, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346584.922, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.284, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.261, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.21, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.577, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.169, \"ph\": \"X\", \"dur\": 1.421852673710146, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346586.861, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346586.834, \"ph\": \"X\", \"dur\": 0.2641652599050956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346586.774, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.186, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346586.722, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.465, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.441, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.392, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.74, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.343, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.026, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.002, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.929, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.316, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346587.888, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.576, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.553, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.505, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.861, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346588.464, \"ph\": \"X\", \"dur\": 0.4786904001490825, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.077, \"ph\": \"X\", \"dur\": 3.9360374278021744, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346585.036, \"ph\": \"X\", \"dur\": 4.025589201462164, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.088, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.431, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.408, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.358, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.694, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.315, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.002, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.979, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.926, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.258, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.877, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.52, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.496, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.452, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.776, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.39, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.022, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.997, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.95, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.271, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346590.908, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.517, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.493, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.448, \"ph\": \"X\", \"dur\": 1.1092945333314068, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346592.602, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346591.406, \"ph\": \"X\", \"dur\": 1.262206057714621, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.225, \"ph\": \"X\", \"dur\": 3.5089827300141447, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346589.182, \"ph\": \"X\", \"dur\": 3.60227622123653, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346592.816, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.181, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.157, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.107, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.502, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.067, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.792, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.765, \"ph\": \"X\", \"dur\": 0.23897102831830172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.712, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.081, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346593.664, \"ph\": \"X\", \"dur\": 0.4789398479865755, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.351, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.325, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.279, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.604, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.24, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.853, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.828, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.78, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.103, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346594.738, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.351, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.326, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.279, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.653, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.236, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346592.971, \"ph\": \"X\", \"dur\": 2.8000519758590157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346592.928, \"ph\": \"X\", \"dur\": 2.926023133792985, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346595.913, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346596.017, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346602.411, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1072111281017298}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346602.642, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346602.849, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.143, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.258, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.094, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.664, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.748, \"ph\": \"X\", \"dur\": 0.18733532595724905, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346603.621, \"ph\": \"X\", \"dur\": 0.338999611152998, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346604.039, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346604.01, \"ph\": \"X\", \"dur\": 0.10027803067218924, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346604.191, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346604.145, \"ph\": \"X\", \"dur\": 1.1883694978166905, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346605.392, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346605.52, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346605.657, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346605.946, \"ph\": \"X\", \"dur\": 0.07333766422294438, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346606.515, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346606.865, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346607.111, \"ph\": \"X\", \"dur\": 0.05013901533609462, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346607.512, \"ph\": \"X\", \"dur\": 0.5630037692217192, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346607.481, \"ph\": \"X\", \"dur\": 0.618880084820153, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346607.26, \"ph\": \"X\", \"dur\": 0.9491490216608958, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346606.806, \"ph\": \"X\", \"dur\": 1.4370689917972195, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346606.644, \"ph\": \"X\", \"dur\": 1.6545875060911226, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346608.853, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.123, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.323, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.67, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.612, \"ph\": \"X\", \"dur\": 0.5320722373725864, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.434, \"ph\": \"X\", \"dur\": 0.7964869451151748, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346609.095, \"ph\": \"X\", \"dur\": 1.1883694978166905, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346608.956, \"ph\": \"X\", \"dur\": 1.3984045769858033, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346610.62, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346610.895, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346611.084, \"ph\": \"X\", \"dur\": 0.09503962608483608, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346610.824, \"ph\": \"X\", \"dur\": 0.4215668453631837, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346611.501, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346611.76, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346613.888, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346613.838, \"ph\": \"X\", \"dur\": 0.18933090865719313, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346602.957, \"ph\": \"X\", \"dur\": 11.25209305363461, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346614.41, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346614.714, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346615.033, \"ph\": \"X\", \"dur\": 0.556268677609408, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346614.682, \"ph\": \"X\", \"dur\": 1.0020319632094135, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346614.514, \"ph\": \"X\", \"dur\": 1.2225438515532325, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346602.771, \"ph\": \"X\", \"dur\": 13.11047944295752, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.074, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.629, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.604, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.527, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.948, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.464, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346617.218, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346617.193, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346617.142, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346617.514, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346617.102, \"ph\": \"X\", \"dur\": 1.3921683810484782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346618.741, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346618.714, \"ph\": \"X\", \"dur\": 0.2524412115429242, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346618.651, \"ph\": \"X\", \"dur\": 0.34598415060280224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.057, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346618.599, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.327, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.3, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.244, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.622, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.195, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.863, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.838, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.789, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.137, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346619.746, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.333, \"ph\": \"X\", \"dur\": 3.90909706135293, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346616.258, \"ph\": \"X\", \"dur\": 4.023094723087234, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.31, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.688, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.662, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.612, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.966, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.573, \"ph\": \"X\", \"dur\": 0.45748733396217683, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.264, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.238, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.188, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.551, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.145, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.816, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.791, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.744, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.105, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346621.7, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.405, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.377, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.328, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.675, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.283, \"ph\": \"X\", \"dur\": 0.45848512531214886, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.939, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.914, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.867, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346623.211, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346622.823, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.457, \"ph\": \"X\", \"dur\": 2.871144609544523, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346620.417, \"ph\": \"X\", \"dur\": 2.9494712305173274, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346623.398, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.687, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.658, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.605, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.985, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.549, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.286, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.259, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.207, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.577, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.16, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.849, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.82, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.767, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.142, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346625.722, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.412, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.384, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.333, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.697, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.286, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.976, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.952, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.901, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.226, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346626.859, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.421, \"ph\": \"X\", \"dur\": 2.9235286554180546, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346624.378, \"ph\": \"X\", \"dur\": 3.0400207955272895, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.445, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.788, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.762, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.712, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.069, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.672, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.343, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.317, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.269, \"ph\": \"X\", \"dur\": 0.36593997760224284, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.682, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.227, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.94, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.912, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.865, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346629.2, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346628.818, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346629.453, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346629.427, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346629.379, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346630.544, \"ph\": \"X\", \"dur\": 0.12397557523402501, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346629.337, \"ph\": \"X\", \"dur\": 1.387678319973604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346630.973, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346630.948, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346630.876, \"ph\": \"X\", \"dur\": 0.33675458061556096, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346631.262, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346630.835, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.583, \"ph\": \"X\", \"dur\": 3.812311300405643, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346627.538, \"ph\": \"X\", \"dur\": 3.892633504078391, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346631.467, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346631.575, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.167, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1538213004656674}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.373, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.612, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.925, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.033, \"ph\": \"X\", \"dur\": 0.29534623959172157, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.891, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.42, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.522, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.387, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.824, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.782, \"ph\": \"X\", \"dur\": 0.10476809174706339, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.95, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346639.92, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346640.04, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346640.149, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346640.304, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346640.569, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.094, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.383, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.633, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346642.101, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346642.041, \"ph\": \"X\", \"dur\": 0.5921891662084011, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.829, \"ph\": \"X\", \"dur\": 0.8882837493126018, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.351, \"ph\": \"X\", \"dur\": 1.4001507118482543, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346641.205, \"ph\": \"X\", \"dur\": 1.602203460217591, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.328, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.622, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.863, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346644.198, \"ph\": \"X\", \"dur\": 0.4065999751136032, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346644.168, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.996, \"ph\": \"X\", \"dur\": 0.7009484233553527, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.573, \"ph\": \"X\", \"dur\": 1.176645449454519, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346643.437, \"ph\": \"X\", \"dur\": 1.3684708364866425, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346645.027, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346645.302, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346645.481, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346645.256, \"ph\": \"X\", \"dur\": 1.4949408900955976, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346647.06, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346647.351, \"ph\": \"X\", \"dur\": 0.19157593919463023, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346649.493, \"ph\": \"X\", \"dur\": 0.10426919607207738, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346649.443, \"ph\": \"X\", \"dur\": 0.1950682089195323, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.702, \"ph\": \"X\", \"dur\": 11.12213073030075, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346649.948, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346650.256, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346650.56, \"ph\": \"X\", \"dur\": 0.5824607005461738, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346650.227, \"ph\": \"X\", \"dur\": 0.9703520878478015, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346650.066, \"ph\": \"X\", \"dur\": 1.1818838540418724, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346638.506, \"ph\": \"X\", \"dur\": 12.87250620598919, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346651.58, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.118, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.093, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.038, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.422, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346651.974, \"ph\": \"X\", \"dur\": 0.5133636495606106, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.708, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.684, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.637, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.98, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346652.582, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.255, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.231, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.16, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.533, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.117, \"ph\": \"X\", \"dur\": 0.4846771482489147, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.769, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.746, \"ph\": \"X\", \"dur\": 0.21128231835657785, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.698, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.029, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346653.655, \"ph\": \"X\", \"dur\": 0.4694608301618412, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.305, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.278, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.226, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.552, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.181, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346651.828, \"ph\": \"X\", \"dur\": 2.832230746895614, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346651.776, \"ph\": \"X\", \"dur\": 2.936998838642677, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.775, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346655.123, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346655.097, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346655.05, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346655.398, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346655.006, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346656.682, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346656.653, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346656.592, \"ph\": \"X\", \"dur\": 0.36269715571483374, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.014, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346656.538, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.315, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.28, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.227, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.607, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.177, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.904, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.88, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.835, \"ph\": \"X\", \"dur\": 0.33999740250297006, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.221, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346657.763, \"ph\": \"X\", \"dur\": 0.5213459803603869, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.479, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.455, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.41, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.769, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.37, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.916, \"ph\": \"X\", \"dur\": 3.9727062599136467, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346654.875, \"ph\": \"X\", \"dur\": 4.061509690061158, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346658.965, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.328, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.304, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.257, \"ph\": \"X\", \"dur\": 0.30831752714135796, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.615, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.215, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.886, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.861, \"ph\": \"X\", \"dur\": 0.2137767967315079, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.816, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.152, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.772, \"ph\": \"X\", \"dur\": 0.44177212020011736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.4, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.376, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.328, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.65, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.283, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.896, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.872, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.828, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.187, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346660.782, \"ph\": \"X\", \"dur\": 0.4659685604369391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.432, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.408, \"ph\": \"X\", \"dur\": 0.19357152189457427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.363, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.682, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346661.319, \"ph\": \"X\", \"dur\": 1.2734312104018064, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.124, \"ph\": \"X\", \"dur\": 3.5548811321128584, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346659.08, \"ph\": \"X\", \"dur\": 3.64044174037296, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346662.757, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.162, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.135, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.08, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.451, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.033, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.733, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.71, \"ph\": \"X\", \"dur\": 0.2649136034175746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.66, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.069, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346663.621, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.359, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.332, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.276, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.65, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.228, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.907, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.884, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.835, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.181, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346664.791, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.43, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.405, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.357, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.694, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.317, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346662.915, \"ph\": \"X\", \"dur\": 2.9018266935561634, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346662.864, \"ph\": \"X\", \"dur\": 2.989881780191195, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.887, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346665.987, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346672.38, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0869021446784295}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346672.645, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346672.818, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.148, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.249, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.09, \"ph\": \"X\", \"dur\": 0.4245602194130998, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.594, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.712, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.553, \"ph\": \"X\", \"dur\": 0.3958737181014038, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346674.022, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346673.986, \"ph\": \"X\", \"dur\": 0.11075483984689559, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346674.168, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346674.132, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346674.274, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346675.334, \"ph\": \"X\", \"dur\": 0.07383655989793039, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346675.565, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346675.846, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346676.386, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346676.717, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346676.986, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346678.601, \"ph\": \"X\", \"dur\": 0.5659971432716353, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346678.559, \"ph\": \"X\", \"dur\": 0.6355930899321847, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346678.31, \"ph\": \"X\", \"dur\": 0.9753410445976616, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346676.684, \"ph\": \"X\", \"dur\": 2.655122782275578, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346676.504, \"ph\": \"X\", \"dur\": 2.8990827673437396, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346679.894, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.177, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.406, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.782, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.739, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.548, \"ph\": \"X\", \"dur\": 0.7917474362028076, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.143, \"ph\": \"X\", \"dur\": 1.233519556402925, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346680.004, \"ph\": \"X\", \"dur\": 1.4255943912725413, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346681.656, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346681.885, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346682.064, \"ph\": \"X\", \"dur\": 0.09578796959731511, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346681.827, \"ph\": \"X\", \"dur\": 0.3771651302894283, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346682.51, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346682.779, \"ph\": \"X\", \"dur\": 0.19157593919463023, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346684.993, \"ph\": \"X\", \"dur\": 0.12746784495892713, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346684.913, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346672.925, \"ph\": \"X\", \"dur\": 12.41077825878963, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346685.48, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346685.769, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346686.103, \"ph\": \"X\", \"dur\": 0.5487852424846178, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346685.736, \"ph\": \"X\", \"dur\": 0.9925529453846792, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346685.581, \"ph\": \"X\", \"dur\": 1.2008418896913409, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346672.753, \"ph\": \"X\", \"dur\": 14.217279497913996, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.123, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.679, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.656, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.564, \"ph\": \"X\", \"dur\": 0.3868935959516555, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.01, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.502, \"ph\": \"X\", \"dur\": 0.5769728481213278, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.352, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.325, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.279, \"ph\": \"X\", \"dur\": 0.3170482014536133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.648, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.218, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.935, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.909, \"ph\": \"X\", \"dur\": 1.2656983274395228, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.859, \"ph\": \"X\", \"dur\": 1.3505105921871456, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.274, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346688.816, \"ph\": \"X\", \"dur\": 1.5276185568071814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.59, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.562, \"ph\": \"X\", \"dur\": 0.2561829291053193, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.504, \"ph\": \"X\", \"dur\": 0.34773028546525325, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.908, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346690.452, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.168, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.142, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.088, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.447, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.041, \"ph\": \"X\", \"dur\": 0.46796414313688317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.367, \"ph\": \"X\", \"dur\": 4.183739130432731, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346687.292, \"ph\": \"X\", \"dur\": 4.313202558091603, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.649, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.039, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.016, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.968, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.334, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.928, \"ph\": \"X\", \"dur\": 0.47020917367432025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.641, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.614, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.566, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.938, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346692.526, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.211, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.188, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.14, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.461, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.1, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.755, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.726, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.676, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.013, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346693.617, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.257, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.234, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.187, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.505, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.147, \"ph\": \"X\", \"dur\": 0.4173262321258025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.812, \"ph\": \"X\", \"dur\": 2.808533202333778, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346691.767, \"ph\": \"X\", \"dur\": 2.8866103754690893, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.685, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346695.033, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346695.009, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.962, \"ph\": \"X\", \"dur\": 1.1272547776309036, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.148, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.919, \"ph\": \"X\", \"dur\": 1.302117711713502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.476, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.439, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.382, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.782, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.331, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.096, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.065, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.978, \"ph\": \"X\", \"dur\": 0.37866181731438625, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.418, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346696.929, \"ph\": \"X\", \"dur\": 0.555769781934422, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.719, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.679, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.622, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.03, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346697.572, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.3, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.274, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.221, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.567, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.176, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.821, \"ph\": \"X\", \"dur\": 3.86519424195416, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346694.779, \"ph\": \"X\", \"dur\": 3.946015341301895, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.756, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.121, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.096, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.047, \"ph\": \"X\", \"dur\": 0.31305703605372515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.409, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.003, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.681, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.657, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.61, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.957, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346699.568, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.208, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.186, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.136, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.469, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.093, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.715, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.691, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.642, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.954, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346700.598, \"ph\": \"X\", \"dur\": 0.4188229191507606, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.125, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.098, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.048, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.429, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.002, \"ph\": \"X\", \"dur\": 0.49465506174863505, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.908, \"ph\": \"X\", \"dur\": 3.6489229668477225, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346698.855, \"ph\": \"X\", \"dur\": 3.7516954758948415, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.649, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346702.776, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.046, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1333881780213537}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.255, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.448, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.716, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.809, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.683, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.184, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.271, \"ph\": \"X\", \"dur\": 0.19282317838209526, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.153, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.556, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.525, \"ph\": \"X\", \"dur\": 0.09703520878478014, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.687, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.657, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.777, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346710.88, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346711.032, \"ph\": \"X\", \"dur\": 0.019955826999440644, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346711.271, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346711.818, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.136, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.397, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.75, \"ph\": \"X\", \"dur\": 0.5398051203348695, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.715, \"ph\": \"X\", \"dur\": 0.6238690415700132, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.541, \"ph\": \"X\", \"dur\": 0.8735663269005144, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346712.102, \"ph\": \"X\", \"dur\": 1.389673902673548, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346711.954, \"ph\": \"X\", \"dur\": 1.5927244423928566, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.047, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.343, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.597, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.929, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.898, \"ph\": \"X\", \"dur\": 0.5350656114225023, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.74, \"ph\": \"X\", \"dur\": 0.7598181130037026, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.313, \"ph\": \"X\", \"dur\": 1.2200493731783026, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346714.153, \"ph\": \"X\", \"dur\": 1.4330778263973314, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346715.833, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346716.091, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346716.257, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346716.027, \"ph\": \"X\", \"dur\": 0.3330128630531658, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346716.626, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346718.42, \"ph\": \"X\", \"dur\": 0.2509445245179661, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346720.754, \"ph\": \"X\", \"dur\": 0.10426919607207738, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346720.703, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.554, \"ph\": \"X\", \"dur\": 11.579368616425436, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346721.275, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346721.561, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346721.926, \"ph\": \"X\", \"dur\": 0.5535247513969849, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346721.53, \"ph\": \"X\", \"dur\": 1.0244822685837842, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346721.377, \"ph\": \"X\", \"dur\": 1.2295283910030368, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346709.383, \"ph\": \"X\", \"dur\": 13.376390837725067, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346722.925, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.377, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.351, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.295, \"ph\": \"X\", \"dur\": 0.3442380157403512, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.706, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.249, \"ph\": \"X\", \"dur\": 0.5310744460226142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.027, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.002, \"ph\": \"X\", \"dur\": 0.2379732369683297, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.927, \"ph\": \"X\", \"dur\": 0.3437391200653651, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.32, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.885, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.597, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.569, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.516, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.901, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346724.474, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.149, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.123, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.074, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.459, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.033, \"ph\": \"X\", \"dur\": 0.5240899065728101, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.73, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.707, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.656, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.059, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346725.614, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.124, \"ph\": \"X\", \"dur\": 3.0372768693148666, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346723.074, \"ph\": \"X\", \"dur\": 3.1395504826869995, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.242, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.599, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.575, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.524, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.899, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.481, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346727.196, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346727.169, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346727.121, \"ph\": \"X\", \"dur\": 1.2649499839270442, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346728.455, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346727.078, \"ph\": \"X\", \"dur\": 1.447545800971926, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346728.776, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346728.751, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346728.695, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.067, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346728.646, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.339, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.317, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.265, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.611, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.223, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.871, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.847, \"ph\": \"X\", \"dur\": 0.2596751988302214, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.8, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.182, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346729.76, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.391, \"ph\": \"X\", \"dur\": 3.920571661877608, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346726.35, \"ph\": \"X\", \"dur\": 3.9974015958254543, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.408, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.781, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.757, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.707, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.045, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.662, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.315, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.29, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.246, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.567, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.199, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.812, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.787, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.742, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.068, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346731.701, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.311, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.288, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.242, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.566, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.198, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.828, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.805, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.759, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346733.081, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346732.699, \"ph\": \"X\", \"dur\": 0.44027543317515927, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.55, \"ph\": \"X\", \"dur\": 2.6426503904009278, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346730.505, \"ph\": \"X\", \"dur\": 3.8412472495548315, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.379, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.807, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.76, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.705, \"ph\": \"X\", \"dur\": 0.3429907765528861, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.1, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.659, \"ph\": \"X\", \"dur\": 0.5148603365855687, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.436, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.412, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.343, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.723, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.274, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.996, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.965, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.915, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.261, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346735.867, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.512, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.487, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.441, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.767, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.394, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346737.019, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.992, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.945, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346737.306, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346736.901, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.56, \"ph\": \"X\", \"dur\": 2.8881070624940475, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346734.513, \"ph\": \"X\", \"dur\": 2.9726698794041773, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346737.538, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346737.634, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.042, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0691328255098638}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.269, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.481, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.769, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.887, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.73, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.264, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.351, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.229, \"ph\": \"X\", \"dur\": 0.3666883211147219, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.674, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.63, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.816, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.775, \"ph\": \"X\", \"dur\": 0.09479017824734308, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346745.904, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346746.03, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346747.213, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346747.486, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.022, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.349, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.63, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346749.009, \"ph\": \"X\", \"dur\": 0.5500324816720827, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.975, \"ph\": \"X\", \"dur\": 0.6101494105078977, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.767, \"ph\": \"X\", \"dur\": 0.9341821514113153, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.303, \"ph\": \"X\", \"dur\": 1.4425568442220658, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346748.162, \"ph\": \"X\", \"dur\": 1.6393711880040491, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346750.348, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346750.662, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346750.876, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346751.208, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346751.162, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346751.008, \"ph\": \"X\", \"dur\": 0.7079329628051569, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346750.614, \"ph\": \"X\", \"dur\": 1.1349876605931868, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346750.478, \"ph\": \"X\", \"dur\": 1.325815256275338, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346752.016, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346752.273, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346752.433, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346752.211, \"ph\": \"X\", \"dur\": 0.36618942543973587, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346752.856, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346753.108, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346755.335, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346755.286, \"ph\": \"X\", \"dur\": 0.18583863893229102, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.587, \"ph\": \"X\", \"dur\": 11.044552452840426, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346755.797, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346756.131, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346756.479, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346756.096, \"ph\": \"X\", \"dur\": 0.9476523346359377, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346755.933, \"ph\": \"X\", \"dur\": 1.1641730575798688, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346744.399, \"ph\": \"X\", \"dur\": 12.843570256840001, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.434, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.943, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.917, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.864, \"ph\": \"X\", \"dur\": 0.3419929852029141, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.264, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.814, \"ph\": \"X\", \"dur\": 0.522593219547852, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.551, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.527, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.479, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.833, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.423, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346759.068, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346759.043, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.995, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.283, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346758.956, \"ph\": \"X\", \"dur\": 1.450788622859335, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.631, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.602, \"ph\": \"X\", \"dur\": 0.26366636423010953, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.545, \"ph\": \"X\", \"dur\": 0.3497258681651973, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.952, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346760.494, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.224, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.202, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.124, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.502, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.08, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.677, \"ph\": \"X\", \"dur\": 3.930050679702342, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346757.622, \"ph\": \"X\", \"dur\": 4.030578158212025, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.679, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.075, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.051, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.001, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.35, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.958, \"ph\": \"X\", \"dur\": 0.4559906469372188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.637, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.61, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.565, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.893, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346762.518, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.21, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.187, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.139, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.469, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.095, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.741, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.717, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.672, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.998, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346763.627, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.263, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.239, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.192, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.517, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.147, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.85, \"ph\": \"X\", \"dur\": 2.785334553446928, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346761.81, \"ph\": \"X\", \"dur\": 2.8866103754690893, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.729, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346765.086, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346765.062, \"ph\": \"X\", \"dur\": 0.26466415558008155, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346765.014, \"ph\": \"X\", \"dur\": 0.340745746015449, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346766.407, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.971, \"ph\": \"X\", \"dur\": 1.4979342641455136, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346766.727, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346766.698, \"ph\": \"X\", \"dur\": 0.26017409450520745, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346766.642, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.041, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346766.603, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.35, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.325, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.237, \"ph\": \"X\", \"dur\": 0.3649421862522708, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.654, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.189, \"ph\": \"X\", \"dur\": 0.5300766546726422, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.927, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.899, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.844, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.203, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346767.795, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.475, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.445, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.393, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.748, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.345, \"ph\": \"X\", \"dur\": 0.47395089123671535, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.883, \"ph\": \"X\", \"dur\": 3.997900491500441, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346764.838, \"ph\": \"X\", \"dur\": 4.0847083389480074, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346768.955, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.339, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.314, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.258, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.611, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.212, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.882, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.858, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.81, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.153, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.769, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.404, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.381, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.332, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.697, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.289, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.965, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.942, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.892, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346771.217, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346770.85, \"ph\": \"X\", \"dur\": 0.4278030413005089, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346771.464, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346771.439, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346771.393, \"ph\": \"X\", \"dur\": 1.2988748898260931, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346772.739, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346771.349, \"ph\": \"X\", \"dur\": 1.4697466585088037, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.118, \"ph\": \"X\", \"dur\": 3.765165659119464, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346769.073, \"ph\": \"X\", \"dur\": 3.8524724022420167, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346772.959, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346773.059, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.308, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.1153881685377587}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.541, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.718, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.0, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.142, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.969, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.516, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.604, \"ph\": \"X\", \"dur\": 0.17486293408259865, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.485, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.87, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.839, \"ph\": \"X\", \"dur\": 0.10027803067218924, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346781.006, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346780.974, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346781.113, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346781.224, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346781.409, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346781.602, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.164, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.49, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.81, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346783.204, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346783.173, \"ph\": \"X\", \"dur\": 0.5774717437963137, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.94, \"ph\": \"X\", \"dur\": 0.9089879198245214, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.456, \"ph\": \"X\", \"dur\": 1.4265921826225132, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346782.286, \"ph\": \"X\", \"dur\": 1.6777861549779722, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346784.501, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346784.814, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346785.024, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346785.384, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346785.356, \"ph\": \"X\", \"dur\": 0.5353150592599953, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346785.197, \"ph\": \"X\", \"dur\": 0.7618136957036467, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346784.78, \"ph\": \"X\", \"dur\": 1.2098220118410894, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346784.608, \"ph\": \"X\", \"dur\": 1.4353228569347685, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346786.28, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346786.513, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346786.674, \"ph\": \"X\", \"dur\": 0.07533324692288844, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346786.462, \"ph\": \"X\", \"dur\": 0.34174353736542107, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346787.055, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346787.32, \"ph\": \"X\", \"dur\": 0.18683643028226304, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346789.396, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346789.347, \"ph\": \"X\", \"dur\": 1.2754267931017502, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.818, \"ph\": \"X\", \"dur\": 11.023099938816028, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346790.993, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346791.356, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346791.709, \"ph\": \"X\", \"dur\": 0.58545407459609, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346791.32, \"ph\": \"X\", \"dur\": 1.0307184645211094, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346791.106, \"ph\": \"X\", \"dur\": 1.296879307126149, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346779.653, \"ph\": \"X\", \"dur\": 12.90169160297587, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346792.732, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.239, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.214, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.123, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.595, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.077, \"ph\": \"X\", \"dur\": 0.6031648710580936, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.882, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.859, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.808, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.169, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346793.767, \"ph\": \"X\", \"dur\": 0.4649707690869671, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.445, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.421, \"ph\": \"X\", \"dur\": 0.24894894181802207, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.373, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.744, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.311, \"ph\": \"X\", \"dur\": 0.4961517487735931, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.991, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.967, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.919, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.246, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346794.876, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.492, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.468, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.418, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.786, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.377, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346792.944, \"ph\": \"X\", \"dur\": 2.9472261999798905, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346792.891, \"ph\": \"X\", \"dur\": 3.045758095789629, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346795.968, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.342, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.318, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.27, \"ph\": \"X\", \"dur\": 0.2696531123299417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.588, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.226, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.888, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.865, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.818, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346797.15, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.777, \"ph\": \"X\", \"dur\": 1.481969602545961, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346798.5, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346798.47, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346798.411, \"ph\": \"X\", \"dur\": 0.38714304378914854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346798.854, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346798.355, \"ph\": \"X\", \"dur\": 0.5620059778717472, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.138, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.113, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.06, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.418, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.014, \"ph\": \"X\", \"dur\": 0.46546966476195306, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.676, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.652, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.606, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.956, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346799.567, \"ph\": \"X\", \"dur\": 0.4534961685622887, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.142, \"ph\": \"X\", \"dur\": 3.9350396364522027, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346796.08, \"ph\": \"X\", \"dur\": 4.035068219286899, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.144, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.488, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.464, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.413, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.77, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.375, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.06, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.036, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.987, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.374, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.945, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.637, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.613, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.564, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.897, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346801.524, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.142, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.117, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.071, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.412, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.027, \"ph\": \"X\", \"dur\": 0.4447654942500334, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.656, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.634, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.587, \"ph\": \"X\", \"dur\": 0.3499753160026904, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.984, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346802.544, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.284, \"ph\": \"X\", \"dur\": 2.820756146370935, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346800.243, \"ph\": \"X\", \"dur\": 2.89658828896881, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346803.168, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.587, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.559, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.505, \"ph\": \"X\", \"dur\": 0.37217617353956806, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.928, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.461, \"ph\": \"X\", \"dur\": 0.5360634027724743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.25, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.206, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.154, \"ph\": \"X\", \"dur\": 0.33500844575310984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.539, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.113, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.812, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.786, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.734, \"ph\": \"X\", \"dur\": 0.31305703605372515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.096, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346805.686, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.372, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.343, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.291, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.671, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.244, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.954, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.923, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.872, \"ph\": \"X\", \"dur\": 0.34398856790285814, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346807.261, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346806.825, \"ph\": \"X\", \"dur\": 0.49839677931103016, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.344, \"ph\": \"X\", \"dur\": 3.0377757649898527, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346804.299, \"ph\": \"X\", \"dur\": 3.119345207850066, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346807.449, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346807.55, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346813.921, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0533930701469898}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.18, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.377, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.686, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.804, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.633, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.214, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.317, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.142, \"ph\": \"X\", \"dur\": 0.43179420670039703, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.635, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.606, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.784, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.755, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346815.886, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346816.009, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346816.156, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346816.344, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346818.201, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346818.554, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346818.875, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346819.281, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346819.247, \"ph\": \"X\", \"dur\": 0.5819618048711879, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346819.003, \"ph\": \"X\", \"dur\": 0.9092373676620145, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346818.52, \"ph\": \"X\", \"dur\": 1.4248460477600622, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346818.328, \"ph\": \"X\", \"dur\": 1.6720488547156334, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346820.541, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346820.866, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346821.25, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346821.562, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346821.528, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346821.353, \"ph\": \"X\", \"dur\": 0.740111733841755, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346820.835, \"ph\": \"X\", \"dur\": 1.2931375895637538, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346820.692, \"ph\": \"X\", \"dur\": 1.4882057984832864, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346822.401, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346822.665, \"ph\": \"X\", \"dur\": 0.13395348873374532, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346822.852, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346822.613, \"ph\": \"X\", \"dur\": 0.37117838218959603, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346823.273, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346823.547, \"ph\": \"X\", \"dur\": 0.18633753460727703, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346825.753, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346825.682, \"ph\": \"X\", \"dur\": 0.18334416055736094, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.492, \"ph\": \"X\", \"dur\": 11.543448127826442, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346826.197, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346826.529, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346826.847, \"ph\": \"X\", \"dur\": 0.5323216852100793, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346826.496, \"ph\": \"X\", \"dur\": 0.9386722124861895, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346826.305, \"ph\": \"X\", \"dur\": 1.1808860626919002, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346814.292, \"ph\": \"X\", \"dur\": 13.322510104826575, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346827.768, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.275, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.253, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.198, \"ph\": \"X\", \"dur\": 0.34174353736542107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.597, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.152, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.899, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.874, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.823, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.239, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.781, \"ph\": \"X\", \"dur\": 0.5273327284602191, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.558, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.512, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.454, \"ph\": \"X\", \"dur\": 0.3756684432644702, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.883, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346829.397, \"ph\": \"X\", \"dur\": 0.555769781934422, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.363, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.334, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.273, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.689, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.217, \"ph\": \"X\", \"dur\": 0.5393062246598834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.952, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.925, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.871, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.245, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346831.825, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346828.007, \"ph\": \"X\", \"dur\": 4.344383537778229, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346827.957, \"ph\": \"X\", \"dur\": 4.437926476838107, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.423, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.816, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.792, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.737, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.078, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.697, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.398, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.371, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.317, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.68, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.272, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.964, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.94, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.889, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.217, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346833.85, \"ph\": \"X\", \"dur\": 0.42680524995053687, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.495, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.47, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.403, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.75, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.361, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.016, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.99, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.943, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.271, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346834.897, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.595, \"ph\": \"X\", \"dur\": 2.7940652277591833, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346832.552, \"ph\": \"X\", \"dur\": 2.872641296569481, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.452, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.817, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.796, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.747, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346836.064, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.703, \"ph\": \"X\", \"dur\": 0.42381187590062075, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.421, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.391, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.334, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.721, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.283, \"ph\": \"X\", \"dur\": 0.5038846317358763, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.0, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.974, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.92, \"ph\": \"X\", \"dur\": 0.30831752714135796, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.283, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346837.871, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.539, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.516, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.468, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.837, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346838.425, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.154, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.13, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.056, \"ph\": \"X\", \"dur\": 0.4143328580758864, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.531, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.011, \"ph\": \"X\", \"dur\": 0.586202418108569, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.589, \"ph\": \"X\", \"dur\": 4.069242573023441, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346835.546, \"ph\": \"X\", \"dur\": 4.1540548377710635, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.733, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.129, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.101, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.048, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.404, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.001, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.684, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.661, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.61, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.96, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346840.567, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.209, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.183, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.135, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.487, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.093, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.737, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.716, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.664, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.989, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346841.621, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346842.236, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346842.213, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346842.164, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346842.482, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346842.122, \"ph\": \"X\", \"dur\": 1.2789190628266525, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.891, \"ph\": \"X\", \"dur\": 3.612753030411236, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346839.842, \"ph\": \"X\", \"dur\": 3.70430038677117, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346843.581, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346843.691, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.173, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0993405281155544}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.438, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.614, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.91, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.021, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.872, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.36, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.446, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.328, \"ph\": \"X\", \"dur\": 0.35720930328998757, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.751, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.719, \"ph\": \"X\", \"dur\": 0.12572171009647606, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.907, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346851.877, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346852.015, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346852.125, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346852.265, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346852.491, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.041, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.381, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.641, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.993, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.945, \"ph\": \"X\", \"dur\": 0.5632532170592123, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.767, \"ph\": \"X\", \"dur\": 0.8299129553392379, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.349, \"ph\": \"X\", \"dur\": 1.2824113325515545, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346853.168, \"ph\": \"X\", \"dur\": 1.5291152438321396, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.263, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.607, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.847, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346856.199, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346856.166, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.972, \"ph\": \"X\", \"dur\": 0.7855112402654825, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.557, \"ph\": \"X\", \"dur\": 1.2320228693779671, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346855.369, \"ph\": \"X\", \"dur\": 1.5231284957323072, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346857.135, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346857.365, \"ph\": \"X\", \"dur\": 0.13919189332109852, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346857.563, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346857.307, \"ph\": \"X\", \"dur\": 0.36269715571483374, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346857.973, \"ph\": \"X\", \"dur\": 0.18583863893229102, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346858.219, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346860.41, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346860.341, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.717, \"ph\": \"X\", \"dur\": 11.022850490978533, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346861.893, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346862.193, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346862.574, \"ph\": \"X\", \"dur\": 0.585204626758597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346862.161, \"ph\": \"X\", \"dur\": 1.0534182177329732, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346861.999, \"ph\": \"X\", \"dur\": 1.2689411493269322, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346850.546, \"ph\": \"X\", \"dur\": 12.837583508740169, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346863.592, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.156, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.129, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.052, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.479, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346863.993, \"ph\": \"X\", \"dur\": 0.554522542746957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.782, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.758, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.707, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.081, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346864.654, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.334, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.31, \"ph\": \"X\", \"dur\": 0.23946992399328776, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.261, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.626, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.22, \"ph\": \"X\", \"dur\": 0.47095751718679923, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.863, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.839, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.788, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.135, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346865.745, \"ph\": \"X\", \"dur\": 0.4549928555872468, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.37, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.347, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.298, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.681, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.253, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346863.849, \"ph\": \"X\", \"dur\": 2.932508777567803, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346863.792, \"ph\": \"X\", \"dur\": 3.0315395690525273, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.849, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.248, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.225, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.177, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.519, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.136, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.813, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.789, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.741, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346868.066, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.697, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346868.353, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346868.33, \"ph\": \"X\", \"dur\": 1.9676445421448476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346868.282, \"ph\": \"X\", \"dur\": 2.047218402305117, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346870.393, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346868.239, \"ph\": \"X\", \"dur\": 2.2343042804248734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346870.714, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346870.685, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346870.629, \"ph\": \"X\", \"dur\": 0.3340106544031378, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.023, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346870.576, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.297, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.275, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.225, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.6, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.179, \"ph\": \"X\", \"dur\": 0.48617383527387276, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346867.011, \"ph\": \"X\", \"dur\": 4.7150630242928395, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346866.972, \"ph\": \"X\", \"dur\": 4.792890749590657, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.796, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.177, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.15, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.101, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.476, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.061, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.762, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.733, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.685, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.059, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346872.645, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.319, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.293, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.243, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.577, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.197, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.836, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.81, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.761, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.09, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346873.716, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.364, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.337, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.277, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.632, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.24, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.944, \"ph\": \"X\", \"dur\": 2.808034306658792, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346871.898, \"ph\": \"X\", \"dur\": 2.8901026451939917, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.819, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346875.169, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346875.141, \"ph\": \"X\", \"dur\": 1.1853761237667746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346875.09, \"ph\": \"X\", \"dur\": 1.2649499839270442, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346876.414, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346875.048, \"ph\": \"X\", \"dur\": 1.4365700961222334, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346876.727, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346876.697, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346876.642, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.048, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346876.593, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.318, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.292, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.246, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.583, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.192, \"ph\": \"X\", \"dur\": 0.4559906469372188, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.836, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.811, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.764, \"ph\": \"X\", \"dur\": 0.36943224732714497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.182, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346877.724, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.455, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.429, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.384, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.707, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.342, \"ph\": \"X\", \"dur\": 0.42356242806312777, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.954, \"ph\": \"X\", \"dur\": 3.8676887203290904, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346874.911, \"ph\": \"X\", \"dur\": 3.947013132651867, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.888, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346878.987, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346885.562, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0483444333441467}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346885.824, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.034, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.37, \"ph\": \"X\", \"dur\": 0.06261140721074503, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.485, \"ph\": \"X\", \"dur\": 0.246953359118078, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.339, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.838, \"ph\": \"X\", \"dur\": 0.05812134613587089, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.93, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.802, \"ph\": \"X\", \"dur\": 0.38514746108920445, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.252, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.22, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.418, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.378, \"ph\": \"X\", \"dur\": 0.1077614657969795, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.515, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.63, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346887.799, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346888.026, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346888.666, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346889.047, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346890.374, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346890.775, \"ph\": \"X\", \"dur\": 0.5792178786587648, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346890.739, \"ph\": \"X\", \"dur\": 0.6415798380320168, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346890.523, \"ph\": \"X\", \"dur\": 0.9521423957108119, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346888.996, \"ph\": \"X\", \"dur\": 2.5431207032412178, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346888.803, \"ph\": \"X\", \"dur\": 2.7923190928967325, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.113, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.406, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.654, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346893.011, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.975, \"ph\": \"X\", \"dur\": 0.5328205808850652, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.789, \"ph\": \"X\", \"dur\": 0.7924957797152866, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.374, \"ph\": \"X\", \"dur\": 1.2422502307151804, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346892.22, \"ph\": \"X\", \"dur\": 1.4537819969092511, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346893.896, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346894.116, \"ph\": \"X\", \"dur\": 0.10476809174706339, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346894.283, \"ph\": \"X\", \"dur\": 0.09479017824734308, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346894.06, \"ph\": \"X\", \"dur\": 0.3671872167897079, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346894.723, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346895.002, \"ph\": \"X\", \"dur\": 0.17361569489513362, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.149, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.098, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346886.145, \"ph\": \"X\", \"dur\": 11.317947282732762, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.589, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.904, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346898.234, \"ph\": \"X\", \"dur\": 0.5360634027724743, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.873, \"ph\": \"X\", \"dur\": 0.9648642354229553, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346897.693, \"ph\": \"X\", \"dur\": 1.1963518286164667, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346885.94, \"ph\": \"X\", \"dur\": 13.080545702458357, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.202, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.762, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.736, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.648, \"ph\": \"X\", \"dur\": 0.39362868756396674, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.096, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.601, \"ph\": \"X\", \"dur\": 0.5794673264962578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.381, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.356, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.309, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.72, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.266, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.979, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.944, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.894, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346901.231, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346900.854, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346901.468, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346901.445, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346901.397, \"ph\": \"X\", \"dur\": 1.2230427472282186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346902.678, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346901.353, \"ph\": \"X\", \"dur\": 1.394912307260901, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346902.963, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346902.934, \"ph\": \"X\", \"dur\": 0.25543458559284027, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346902.874, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.277, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346902.822, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.456, \"ph\": \"X\", \"dur\": 3.9352890842896953, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346899.377, \"ph\": \"X\", \"dur\": 4.0814655170605985, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.492, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.873, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.848, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.796, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.145, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.75, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.457, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.434, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.379, \"ph\": \"X\", \"dur\": 0.29185396986681944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.718, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.337, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.0, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.977, \"ph\": \"X\", \"dur\": 0.21427569240649394, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.925, \"ph\": \"X\", \"dur\": 0.2923528655418055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.265, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346904.879, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.534, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.51, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.458, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.793, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.412, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.081, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.056, \"ph\": \"X\", \"dur\": 0.20105495701936452, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.006, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.335, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346905.962, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.649, \"ph\": \"X\", \"dur\": 2.80454203693389, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346903.6, \"ph\": \"X\", \"dur\": 2.8891048538440196, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.517, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.884, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.856, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.81, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346907.132, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.747, \"ph\": \"X\", \"dur\": 0.45249837721231667, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346907.41, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346907.384, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346907.336, \"ph\": \"X\", \"dur\": 1.176396001617026, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346908.559, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346907.293, \"ph\": \"X\", \"dur\": 1.3801948848488137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346908.9, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346908.871, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346908.81, \"ph\": \"X\", \"dur\": 0.3507236595151694, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.212, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346908.767, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.503, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.473, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.427, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.776, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.359, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.03, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.002, \"ph\": \"X\", \"dur\": 0.25543458559284027, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.953, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.336, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346909.912, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.657, \"ph\": \"X\", \"dur\": 3.801086147718457, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346906.611, \"ph\": \"X\", \"dur\": 3.886147860303573, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.527, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.894, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.869, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.82, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.233, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.753, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.522, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.494, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.445, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.814, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.399, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.071, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.045, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.997, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.319, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346911.951, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.597, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.569, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.521, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.848, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.48, \"ph\": \"X\", \"dur\": 0.43279199805036905, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346913.102, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346913.076, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346913.028, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346913.354, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346912.984, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.663, \"ph\": \"X\", \"dur\": 2.81202547205868, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346910.625, \"ph\": \"X\", \"dur\": 3.778386394506594, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346914.478, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346914.618, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.218, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0848577902943302}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.489, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.698, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.025, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.123, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.988, \"ph\": \"X\", \"dur\": 0.4083461099760542, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.486, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.578, \"ph\": \"X\", \"dur\": 0.17660906894504974, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.452, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.862, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.818, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346923.026, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346922.971, \"ph\": \"X\", \"dur\": 0.11299987038433267, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346923.119, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346923.222, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346923.376, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346923.651, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346924.3, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346924.649, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346924.925, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346925.323, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346925.276, \"ph\": \"X\", \"dur\": 0.5734805783964256, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346925.081, \"ph\": \"X\", \"dur\": 0.8590983523259198, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346924.615, \"ph\": \"X\", \"dur\": 1.35749513163695, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346924.446, \"ph\": \"X\", \"dur\": 1.5795037070057272, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346926.529, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346926.819, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346927.074, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346927.439, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346927.408, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346927.204, \"ph\": \"X\", \"dur\": 0.7780278051406921, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346926.788, \"ph\": \"X\", \"dur\": 1.229029495328051, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346926.638, \"ph\": \"X\", \"dur\": 1.4335767220723175, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346928.357, \"ph\": \"X\", \"dur\": 0.07358711206043739, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346928.618, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346929.852, \"ph\": \"X\", \"dur\": 0.1110042876843886, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346928.557, \"ph\": \"X\", \"dur\": 1.4560270274466882, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346930.319, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346930.579, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346932.833, \"ph\": \"X\", \"dur\": 0.11923606632165785, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346932.788, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.821, \"ph\": \"X\", \"dur\": 11.335658079194767, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346933.318, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346934.638, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346934.94, \"ph\": \"X\", \"dur\": 0.5844562832461179, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346934.604, \"ph\": \"X\", \"dur\": 0.9738443575727035, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346934.424, \"ph\": \"X\", \"dur\": 1.2193010296658235, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346921.625, \"ph\": \"X\", \"dur\": 14.171381095815283, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346935.968, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.472, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.446, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.366, \"ph\": \"X\", \"dur\": 0.3901364178390646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.846, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.316, \"ph\": \"X\", \"dur\": 0.6041626624080656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.132, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.107, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.058, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.404, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.017, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.663, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.637, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.566, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.921, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346937.52, \"ph\": \"X\", \"dur\": 0.4684630388118692, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.194, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.164, \"ph\": \"X\", \"dur\": 0.23223593670599052, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.112, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.471, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.056, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.707, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.683, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.632, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.963, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346938.589, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.167, \"ph\": \"X\", \"dur\": 2.913301294080841, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346936.113, \"ph\": \"X\", \"dur\": 3.0033519634158172, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.146, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.52, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.494, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.446, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.795, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.399, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.086, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.063, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.012, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.367, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.967, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.718, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.689, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.609, \"ph\": \"X\", \"dur\": 0.35895543815243863, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346941.936, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346940.559, \"ph\": \"X\", \"dur\": 1.4707444498587756, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.264, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.226, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.176, \"ph\": \"X\", \"dur\": 0.34723138979026724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.572, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.129, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.848, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.823, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.772, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.139, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346942.73, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.299, \"ph\": \"X\", \"dur\": 3.961231659388968, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346939.248, \"ph\": \"X\", \"dur\": 4.054774598448846, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.331, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.728, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.705, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.642, \"ph\": \"X\", \"dur\": 0.3215382625284874, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.016, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.597, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.295, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.269, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.22, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.582, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.176, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.831, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.806, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.76, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.085, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346944.717, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.337, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.311, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.265, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.594, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.221, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.846, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.821, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.773, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.119, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346945.731, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.491, \"ph\": \"X\", \"dur\": 2.7566480521352323, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346943.455, \"ph\": \"X\", \"dur\": 2.8432064517453064, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.349, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.789, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.763, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.708, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346947.944, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.658, \"ph\": \"X\", \"dur\": 1.3654774624367263, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.297, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.27, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.19, \"ph\": \"X\", \"dur\": 0.37117838218959603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.619, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.142, \"ph\": \"X\", \"dur\": 0.5393062246598834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.909, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.886, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.837, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.207, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346948.791, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.465, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.44, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.391, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.723, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.347, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.977, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.954, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.906, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346950.256, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346949.863, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.523, \"ph\": \"X\", \"dur\": 3.851225163054552, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346946.471, \"ph\": \"X\", \"dur\": 3.954496567776657, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346950.462, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346950.581, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.042, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0441427654822453}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.312, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.521, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.824, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.933, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.79, \"ph\": \"X\", \"dur\": 0.41333506672591436, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.272, \"ph\": \"X\", \"dur\": 0.07333766422294438, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.374, \"ph\": \"X\", \"dur\": 0.19307262621958823, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.237, \"ph\": \"X\", \"dur\": 0.35720930328998757, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.658, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.628, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.788, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.757, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.877, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346958.977, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346959.117, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346959.33, \"ph\": \"X\", \"dur\": 0.10102637418466827, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346959.96, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.274, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.521, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.98, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.906, \"ph\": \"X\", \"dur\": 1.5612940148687375, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.704, \"ph\": \"X\", \"dur\": 1.9314746057083616, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.222, \"ph\": \"X\", \"dur\": 2.4712797260432313, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346960.072, \"ph\": \"X\", \"dur\": 2.689796031687106, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346963.331, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346963.655, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346963.958, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346964.296, \"ph\": \"X\", \"dur\": 0.5076263492982714, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346964.266, \"ph\": \"X\", \"dur\": 0.5635026648967053, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346964.066, \"ph\": \"X\", \"dur\": 0.8558555304385107, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346963.599, \"ph\": \"X\", \"dur\": 1.355748996774499, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346963.454, \"ph\": \"X\", \"dur\": 1.5548083710939193, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346965.203, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346965.438, \"ph\": \"X\", \"dur\": 0.09329349122238503, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346965.592, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346965.364, \"ph\": \"X\", \"dur\": 0.3799090565018513, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346966.019, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346966.277, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346968.516, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346968.466, \"ph\": \"X\", \"dur\": 0.16613225977034338, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.625, \"ph\": \"X\", \"dur\": 11.17251919347434, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346968.968, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346969.319, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346969.689, \"ph\": \"X\", \"dur\": 0.5704872043465096, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346969.262, \"ph\": \"X\", \"dur\": 1.0504248436830572, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346969.081, \"ph\": \"X\", \"dur\": 1.2839080195765125, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346957.445, \"ph\": \"X\", \"dur\": 13.045623005209336, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346970.71, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.308, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.283, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.174, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.647, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.124, \"ph\": \"X\", \"dur\": 0.5876991051335271, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.921, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.898, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.844, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.236, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346971.803, \"ph\": \"X\", \"dur\": 0.5046329752483554, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.528, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.506, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.435, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.788, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.39, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346973.036, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346973.013, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.963, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.344, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346972.923, \"ph\": \"X\", \"dur\": 1.5024243252203877, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.625, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.599, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.546, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.947, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346974.502, \"ph\": \"X\", \"dur\": 0.5113680668606665, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346970.981, \"ph\": \"X\", \"dur\": 4.07996883003564, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346970.931, \"ph\": \"X\", \"dur\": 4.174759008282983, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.134, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.542, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.519, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.456, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.831, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.412, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.207, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.163, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.11, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.485, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.066, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.779, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.751, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.701, \"ph\": \"X\", \"dur\": 0.35471482491505746, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.113, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346976.661, \"ph\": \"X\", \"dur\": 0.5195998454979358, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.4, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.37, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.319, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.67, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.278, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.965, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.935, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.883, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.236, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346977.845, \"ph\": \"X\", \"dur\": 0.45798622963716284, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.305, \"ph\": \"X\", \"dur\": 3.060475518201716, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346975.261, \"ph\": \"X\", \"dur\": 3.141795513224437, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.435, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.826, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.798, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.744, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.163, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.698, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.453, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.423, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.371, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.755, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346979.323, \"ph\": \"X\", \"dur\": 1.3530050705620758, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346980.884, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346980.856, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346980.803, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.171, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346980.756, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.465, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.435, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.381, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.762, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.334, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.038, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.009, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.957, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.344, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346981.913, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.602, \"ph\": \"X\", \"dur\": 3.8706820943790063, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346978.558, \"ph\": \"X\", \"dur\": 3.955494359126629, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.548, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.905, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.88, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.832, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.189, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.788, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.465, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.441, \"ph\": \"X\", \"dur\": 0.2584279596427564, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.391, \"ph\": \"X\", \"dur\": 0.340745746015449, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.782, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.355, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.033, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.009, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.96, \"ph\": \"X\", \"dur\": 0.27713654745473193, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.283, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346983.917, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.563, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.538, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.488, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.831, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.445, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346985.077, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346985.054, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346985.008, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346985.425, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346984.964, \"ph\": \"X\", \"dur\": 0.5303261025101352, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.696, \"ph\": \"X\", \"dur\": 2.8599194568573374, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346982.65, \"ph\": \"X\", \"dur\": 2.9452306172799463, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346986.542, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346986.707, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.196, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0716298318922}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.414, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.593, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.92, \"ph\": \"X\", \"dur\": 0.07283876854795837, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.033, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.886, \"ph\": \"X\", \"dur\": 0.4589840209871349, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.415, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.507, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.377, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.802, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.771, \"ph\": \"X\", \"dur\": 0.09528907392232909, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.948, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346994.899, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346995.034, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346995.121, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346995.262, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346995.486, \"ph\": \"X\", \"dur\": 0.06510588558567511, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.103, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.459, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.748, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346997.216, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346997.152, \"ph\": \"X\", \"dur\": 0.6011692883581495, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.898, \"ph\": \"X\", \"dur\": 0.9326854643863572, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.426, \"ph\": \"X\", \"dur\": 1.4577731623091392, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346996.24, \"ph\": \"X\", \"dur\": 1.696993638464934, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346998.472, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346998.766, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346998.998, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346999.334, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346999.303, \"ph\": \"X\", \"dur\": 0.5260854892727541, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346999.125, \"ph\": \"X\", \"dur\": 0.7678004438034789, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346998.737, \"ph\": \"X\", \"dur\": 1.1878706021417045, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346998.597, \"ph\": \"X\", \"dur\": 1.3811926761987858, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347000.19, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347000.473, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347000.636, \"ph\": \"X\", \"dur\": 0.07283876854795837, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347000.399, \"ph\": \"X\", \"dur\": 0.39288034405148775, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347001.074, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347001.343, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347003.586, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347003.534, \"ph\": \"X\", \"dur\": 0.1601455116705112, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.7, \"ph\": \"X\", \"dur\": 10.18994416158938, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347004.052, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347004.384, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347004.728, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347004.354, \"ph\": \"X\", \"dur\": 1.9873509213067955, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347004.183, \"ph\": \"X\", \"dur\": 2.2235780234126743, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995346993.524, \"ph\": \"X\", \"dur\": 13.017435399572626, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347006.739, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.29, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.246, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.184, \"ph\": \"X\", \"dur\": 0.3664388732772289, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.617, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.139, \"ph\": \"X\", \"dur\": 0.5492841381596038, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.967, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.938, \"ph\": \"X\", \"dur\": 0.26192022936765846, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.86, \"ph\": \"X\", \"dur\": 0.3686839038146659, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.288, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347007.808, \"ph\": \"X\", \"dur\": 0.5447940770847297, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.541, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.517, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.465, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.812, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.417, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.046, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.022, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.974, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.306, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347008.931, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.537, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.513, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.467, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.829, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347009.423, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347006.994, \"ph\": \"X\", \"dur\": 2.937497734317663, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347006.919, \"ph\": \"X\", \"dur\": 3.055237113614363, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.001, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.363, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.338, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.289, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.62, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.247, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.914, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.891, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.844, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.162, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.801, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.424, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.4, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.352, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.679, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347011.311, \"ph\": \"X\", \"dur\": 0.42356242806312777, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347013.582, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347013.554, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347013.474, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347013.964, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347013.431, \"ph\": \"X\", \"dur\": 0.6024165275456145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.267, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.241, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.182, \"ph\": \"X\", \"dur\": 0.34398856790285814, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.583, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.129, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.158, \"ph\": \"X\", \"dur\": 4.557910886672244, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347010.104, \"ph\": \"X\", \"dur\": 4.65295051275708, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.788, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.178, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.153, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.107, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.459, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.042, \"ph\": \"X\", \"dur\": 0.4826815655489706, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.732, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.707, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.657, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.996, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347015.618, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.265, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.24, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.194, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.515, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.13, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.766, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.74, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.694, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.038, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347016.65, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.285, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.259, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.212, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.574, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.167, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.94, \"ph\": \"X\", \"dur\": 2.746171242960526, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347014.894, \"ph\": \"X\", \"dur\": 2.8282395814957257, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.752, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347018.108, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347018.083, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347018.034, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347018.352, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.994, \"ph\": \"X\", \"dur\": 0.41957126266323963, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347019.562, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347019.534, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347019.476, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347019.891, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347019.425, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.178, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.152, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.1, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.455, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.052, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.706, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.683, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.637, \"ph\": \"X\", \"dur\": 0.28262439987957816, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.988, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347020.594, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.24, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.216, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.165, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.507, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.123, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.899, \"ph\": \"X\", \"dur\": 3.7284968270079917, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347017.847, \"ph\": \"X\", \"dur\": 3.817549704992996, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.694, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347021.796, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.192, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0389441624347815}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.415, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.602, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.861, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.959, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.825, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.337, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.422, \"ph\": \"X\", \"dur\": 0.19257373054460222, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.306, \"ph\": \"X\", \"dur\": 0.3360062371030819, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.718, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.677, \"ph\": \"X\", \"dur\": 0.15041704600828387, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.89, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.861, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347029.977, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347030.076, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347030.238, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347030.488, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.057, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.371, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.656, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347032.064, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347032.008, \"ph\": \"X\", \"dur\": 0.6096505148329118, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.804, \"ph\": \"X\", \"dur\": 0.9224581030491439, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.338, \"ph\": \"X\", \"dur\": 2.34181629838436, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347031.167, \"ph\": \"X\", \"dur\": 2.600992601539595, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.312, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.601, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.854, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347035.207, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347035.171, \"ph\": \"X\", \"dur\": 0.555769781934422, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.992, \"ph\": \"X\", \"dur\": 0.8249239985893778, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.569, \"ph\": \"X\", \"dur\": 1.301618816038516, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347034.422, \"ph\": \"X\", \"dur\": 1.5046693557578248, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347036.162, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347036.464, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347036.637, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347036.383, \"ph\": \"X\", \"dur\": 0.3853969089266975, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347037.042, \"ph\": \"X\", \"dur\": 0.1913264913571372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347037.3, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347039.45, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347039.402, \"ph\": \"X\", \"dur\": 0.1696245294952455, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.707, \"ph\": \"X\", \"dur\": 11.063261040652401, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347039.92, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347040.238, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347040.577, \"ph\": \"X\", \"dur\": 0.5305755503476283, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347040.208, \"ph\": \"X\", \"dur\": 0.9526412913857979, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347040.031, \"ph\": \"X\", \"dur\": 1.1806366148544074, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347028.525, \"ph\": \"X\", \"dur\": 12.810643142290923, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347041.502, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.062, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.022, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347041.941, \"ph\": \"X\", \"dur\": 0.38714304378914854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.389, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347041.89, \"ph\": \"X\", \"dur\": 0.5659971432716353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.671, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.646, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.596, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.97, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347042.554, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.234, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.21, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.159, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.51, \"ph\": \"X\", \"dur\": 0.05063791101108064, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.104, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.772, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.747, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.697, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347044.05, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347043.654, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.284, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.256, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.196, \"ph\": \"X\", \"dur\": 0.36045212517739667, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.615, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.146, \"ph\": \"X\", \"dur\": 0.5363128506099675, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347041.753, \"ph\": \"X\", \"dur\": 3.9737040512636184, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347041.683, \"ph\": \"X\", \"dur\": 4.083211651923049, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.798, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.194, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.168, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.118, \"ph\": \"X\", \"dur\": 0.29634403094169365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.464, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.073, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.754, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.73, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.679, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.019, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347046.638, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.312, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.286, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.235, \"ph\": \"X\", \"dur\": 0.32054047117851536, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.604, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.195, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.876, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.852, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.807, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.133, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347047.761, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.389, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.364, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.315, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.664, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.273, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.959, \"ph\": \"X\", \"dur\": 2.8190100115084844, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347045.91, \"ph\": \"X\", \"dur\": 2.902824484906135, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.843, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.295, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.267, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.207, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.597, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.157, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.895, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.87, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.816, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347050.172, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.769, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347050.43, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347050.404, \"ph\": \"X\", \"dur\": 1.2075769813036523, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347050.356, \"ph\": \"X\", \"dur\": 1.2866519457889358, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347051.705, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347050.313, \"ph\": \"X\", \"dur\": 1.4607665363590554, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.0, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347051.972, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347051.915, \"ph\": \"X\", \"dur\": 0.3427413287153931, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.314, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347051.865, \"ph\": \"X\", \"dur\": 0.5151097844230617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.586, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.562, \"ph\": \"X\", \"dur\": 0.23946992399328776, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.51, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.883, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347052.462, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347049.03, \"ph\": \"X\", \"dur\": 3.9717084685636745, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347048.976, \"ph\": \"X\", \"dur\": 4.060761346548679, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.067, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.43, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.405, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.357, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.729, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.316, \"ph\": \"X\", \"dur\": 0.4759464739366594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.996, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.974, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.923, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.275, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.88, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.527, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.505, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.455, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.847, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.414, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.097, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.072, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.025, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.361, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347054.98, \"ph\": \"X\", \"dur\": 0.44077432885014534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.63, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.605, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.557, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.881, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347055.516, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.224, \"ph\": \"X\", \"dur\": 2.774358848597236, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347053.167, \"ph\": \"X\", \"dur\": 2.8659062049571697, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347056.063, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347056.188, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347064.386, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0594097801143074}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347064.604, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347064.809, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.124, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.221, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.08, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.619, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.721, \"ph\": \"X\", \"dur\": 0.1788540994824868, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.572, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.004, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347065.964, \"ph\": \"X\", \"dur\": 0.1359490714336894, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.186, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.155, \"ph\": \"X\", \"dur\": 0.13046121900884322, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.316, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.411, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.559, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347066.8, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347067.366, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347067.691, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347067.964, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347068.333, \"ph\": \"X\", \"dur\": 0.5275821762977121, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347068.296, \"ph\": \"X\", \"dur\": 0.5906924791834431, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347068.104, \"ph\": \"X\", \"dur\": 0.862091726375836, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347067.656, \"ph\": \"X\", \"dur\": 1.3452721875997926, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347067.51, \"ph\": \"X\", \"dur\": 1.5488216229940872, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347069.581, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347069.916, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347070.132, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347070.493, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347070.434, \"ph\": \"X\", \"dur\": 0.5749772654213836, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347070.272, \"ph\": \"X\", \"dur\": 0.803970380239965, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347069.884, \"ph\": \"X\", \"dur\": 1.2449941569276033, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347069.69, \"ph\": \"X\", \"dur\": 1.4934442030706394, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347071.441, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347071.698, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347071.881, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347071.608, \"ph\": \"X\", \"dur\": 0.38814083513912057, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347072.273, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347072.548, \"ph\": \"X\", \"dur\": 0.18608808676978403, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347074.668, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347074.615, \"ph\": \"X\", \"dur\": 0.18060023434493785, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347064.913, \"ph\": \"X\", \"dur\": 10.048507237730844, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347075.098, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347075.406, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347075.729, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347075.375, \"ph\": \"X\", \"dur\": 0.9364271819487524, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347075.214, \"ph\": \"X\", \"dur\": 1.1494556351677814, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347064.721, \"ph\": \"X\", \"dur\": 12.887971971913755, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347077.754, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.396, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.33, \"ph\": \"X\", \"dur\": 0.34598415060280224, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.162, \"ph\": \"X\", \"dur\": 0.5427984943847857, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.791, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.1, \"ph\": \"X\", \"dur\": 0.7668026524535069, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.116, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.078, \"ph\": \"X\", \"dur\": 0.26366636423010953, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.025, \"ph\": \"X\", \"dur\": 0.3437391200653651, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.421, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347078.977, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.677, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.652, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.603, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.942, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347079.562, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.182, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.156, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.105, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.489, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.065, \"ph\": \"X\", \"dur\": 0.494904509586128, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.733, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.709, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.659, \"ph\": \"X\", \"dur\": 0.2843705347420292, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.992, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347080.617, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347077.969, \"ph\": \"X\", \"dur\": 3.126828642974856, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347077.914, \"ph\": \"X\", \"dur\": 3.2291022563469896, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.172, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.609, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.584, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.533, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.882, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.49, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.214, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.189, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.14, \"ph\": \"X\", \"dur\": 0.27713654745473193, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.465, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.097, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.784, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.761, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.707, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347083.035, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347082.664, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347083.314, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347083.287, \"ph\": \"X\", \"dur\": 1.1953540372664948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347083.237, \"ph\": \"X\", \"dur\": 1.2774223758016945, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347084.578, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347083.192, \"ph\": \"X\", \"dur\": 1.454779788259223, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347084.879, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347084.853, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347084.797, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.168, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347084.747, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.364, \"ph\": \"X\", \"dur\": 3.939529697527077, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347081.309, \"ph\": \"X\", \"dur\": 4.0335715322619405, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.39, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.773, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.751, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.695, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.055, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.654, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.328, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.305, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.257, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.587, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.218, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.838, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.814, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.767, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.093, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347086.723, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.344, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.318, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.27, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.596, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.233, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.864, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.839, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.787, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.115, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347087.746, \"ph\": \"X\", \"dur\": 0.43279199805036905, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.555, \"ph\": \"X\", \"dur\": 2.6833103879122877, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347085.512, \"ph\": \"X\", \"dur\": 2.7628842480725577, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.304, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.644, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.617, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.569, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.918, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.529, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347089.191, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347089.167, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347089.116, \"ph\": \"X\", \"dur\": 1.3540028619120479, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347090.515, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347089.072, \"ph\": \"X\", \"dur\": 1.5076627298077407, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347090.782, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347090.755, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347090.704, \"ph\": \"X\", \"dur\": 0.35047421167767634, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.106, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347090.659, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.402, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.369, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.322, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.699, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.253, \"ph\": \"X\", \"dur\": 0.5133636495606106, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.96, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.933, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.886, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347092.256, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347091.841, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.439, \"ph\": \"X\", \"dur\": 3.9380330105021186, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347088.398, \"ph\": \"X\", \"dur\": 4.017856318499881, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347092.447, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347092.584, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347098.907, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0329962177531595}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.17, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.368, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.71, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.812, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.655, \"ph\": \"X\", \"dur\": 0.4292997283254669, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.15, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.238, \"ph\": \"X\", \"dur\": 0.18733532595724905, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.119, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.52, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.487, \"ph\": \"X\", \"dur\": 0.10476809174706339, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.676, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.634, \"ph\": \"X\", \"dur\": 0.10102637418466827, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.776, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347100.89, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347101.081, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347101.356, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347101.99, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.335, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.591, \"ph\": \"X\", \"dur\": 0.06834870747308422, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347103.015, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.957, \"ph\": \"X\", \"dur\": 0.6086527234829396, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.743, \"ph\": \"X\", \"dur\": 0.9084890241495355, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.3, \"ph\": \"X\", \"dur\": 1.4073846991355514, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347102.132, \"ph\": \"X\", \"dur\": 2.5668182478030532, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.318, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.609, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.849, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347106.156, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347106.124, \"ph\": \"X\", \"dur\": 0.5475380032971527, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.965, \"ph\": \"X\", \"dur\": 0.7752838789282691, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.575, \"ph\": \"X\", \"dur\": 1.1988463069913968, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347105.431, \"ph\": \"X\", \"dur\": 1.3996518161732683, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347107.057, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347107.307, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347107.458, \"ph\": \"X\", \"dur\": 0.07982330799776258, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347107.259, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347107.865, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347108.159, \"ph\": \"X\", \"dur\": 0.17835520380750078, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347110.304, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347110.246, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.471, \"ph\": \"X\", \"dur\": 11.166282997537014, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347110.817, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347111.111, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347111.448, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347111.077, \"ph\": \"X\", \"dur\": 0.9479017824734307, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347110.926, \"ph\": \"X\", \"dur\": 1.1499545308427672, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347099.286, \"ph\": \"X\", \"dur\": 12.915161786200493, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.417, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.9, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.876, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.801, \"ph\": \"X\", \"dur\": 0.4043549445761661, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.267, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.754, \"ph\": \"X\", \"dur\": 0.5837079397336389, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.574, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.546, \"ph\": \"X\", \"dur\": 0.307818631466372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.491, \"ph\": \"X\", \"dur\": 0.3888891786515996, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.936, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347113.44, \"ph\": \"X\", \"dur\": 0.5582642603093521, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.21, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.189, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.123, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.501, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.076, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.784, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.759, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.707, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347115.111, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347114.665, \"ph\": \"X\", \"dur\": 0.5103702755106946, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347115.426, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347115.396, \"ph\": \"X\", \"dur\": 0.22026244050632612, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347115.331, \"ph\": \"X\", \"dur\": 1.2250383299281626, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347116.604, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347115.285, \"ph\": \"X\", \"dur\": 1.3851838415986737, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.631, \"ph\": \"X\", \"dur\": 4.114642079447169, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347112.581, \"ph\": \"X\", \"dur\": 4.2293880846939516, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347116.846, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.325, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.298, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.24, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.626, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.189, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.941, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.916, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.866, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.233, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.821, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.502, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.477, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.429, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.776, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.386, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.036, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.01, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.962, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.29, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347118.922, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.547, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.523, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.476, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.796, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.433, \"ph\": \"X\", \"dur\": 0.4230635323881417, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.069, \"ph\": \"X\", \"dur\": 2.8454514822827432, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347117.016, \"ph\": \"X\", \"dur\": 2.9364999429676915, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347119.99, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.327, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.301, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.255, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.601, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.214, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.867, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.844, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.795, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347121.14, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.752, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347121.398, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347121.372, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347121.325, \"ph\": \"X\", \"dur\": 0.2701520080049278, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347122.529, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347121.284, \"ph\": \"X\", \"dur\": 1.3447732919248065, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347122.857, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347122.827, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347122.768, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.159, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347122.716, \"ph\": \"X\", \"dur\": 0.5098713798357085, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.437, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.413, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.362, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.729, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.32, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.124, \"ph\": \"X\", \"dur\": 3.726501244308048, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347120.083, \"ph\": \"X\", \"dur\": 3.804079521768373, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347123.92, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.286, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.261, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.211, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.58, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.17, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.866, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.844, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.796, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.154, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.755, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.399, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.376, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.328, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.646, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.287, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.898, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.872, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.824, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.144, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347125.782, \"ph\": \"X\", \"dur\": 0.4245602194130998, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.392, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.366, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.32, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.641, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.278, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.06, \"ph\": \"X\", \"dur\": 2.6982772581618684, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347124.016, \"ph\": \"X\", \"dur\": 2.77884890967211, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.841, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347126.94, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347133.149, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.048001941218259}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347133.405, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347134.71, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.022, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.154, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347134.983, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.521, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.617, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.473, \"ph\": \"X\", \"dur\": 0.3664388732772289, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.911, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347135.876, \"ph\": \"X\", \"dur\": 0.13844354980861948, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.083, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.047, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.184, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.3, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.435, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347136.675, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.209, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.521, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.798, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347138.198, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347138.157, \"ph\": \"X\", \"dur\": 0.617133949957702, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.954, \"ph\": \"X\", \"dur\": 0.9017539325372242, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.49, \"ph\": \"X\", \"dur\": 1.3989034726607892, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347137.317, \"ph\": \"X\", \"dur\": 1.633883335579203, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347139.489, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347139.821, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347140.048, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347140.348, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347140.316, \"ph\": \"X\", \"dur\": 0.5121164103731456, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347140.16, \"ph\": \"X\", \"dur\": 0.7548291562538425, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347139.777, \"ph\": \"X\", \"dur\": 1.169162014329729, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347139.605, \"ph\": \"X\", \"dur\": 1.3906716940235202, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347141.205, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347141.432, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347141.611, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347141.389, \"ph\": \"X\", \"dur\": 0.35621151194001555, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347142.009, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347142.287, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347144.374, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347144.327, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347134.808, \"ph\": \"X\", \"dur\": 9.888112278222842, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347144.819, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347145.15, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347145.496, \"ph\": \"X\", \"dur\": 0.5078757971357645, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347145.118, \"ph\": \"X\", \"dur\": 0.9419150343735985, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347144.924, \"ph\": \"X\", \"dur\": 1.201091337528834, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347134.562, \"ph\": \"X\", \"dur\": 11.690622351947317, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347146.417, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.912, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.884, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.801, \"ph\": \"X\", \"dur\": 0.4155800972633515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.295, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.749, \"ph\": \"X\", \"dur\": 0.6094010669954187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.575, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.552, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.5, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.855, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347148.457, \"ph\": \"X\", \"dur\": 0.46696635178691115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.136, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.111, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.039, \"ph\": \"X\", \"dur\": 0.31305703605372515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.4, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.002, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.649, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.625, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.572, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.911, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347149.531, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.148, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.125, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.073, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.437, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.031, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.61, \"ph\": \"X\", \"dur\": 2.9315109862178312, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347147.544, \"ph\": \"X\", \"dur\": 3.049250365514531, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.637, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.011, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.986, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.936, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.265, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.893, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.551, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.526, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.48, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.799, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.435, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.062, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.037, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.986, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.367, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347151.943, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.673, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.646, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.59, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347153.998, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347152.539, \"ph\": \"X\", \"dur\": 1.542585427056762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.31, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.281, \"ph\": \"X\", \"dur\": 0.26815642530498374, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.222, \"ph\": \"X\", \"dur\": 0.3577081989649736, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.634, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.171, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.803, \"ph\": \"X\", \"dur\": 3.9564921504766013, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347150.761, \"ph\": \"X\", \"dur\": 4.039807728199266, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.833, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.219, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.196, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.146, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.505, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.105, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.784, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.76, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.708, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.045, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.667, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.302, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.279, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.228, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.585, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.181, \"ph\": \"X\", \"dur\": 0.4639729777369951, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.827, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.804, \"ph\": \"X\", \"dur\": 0.20105495701936452, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.755, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.082, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347156.715, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.33, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.308, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.258, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.581, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.217, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347155.003, \"ph\": \"X\", \"dur\": 2.6957827797869385, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347154.961, \"ph\": \"X\", \"dur\": 2.773361057247264, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.768, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.127, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.103, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.053, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.395, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.011, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.665, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.642, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.594, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.929, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347158.55, \"ph\": \"X\", \"dur\": 1.9207483486961623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347160.708, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347160.678, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347160.628, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.002, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347160.583, \"ph\": \"X\", \"dur\": 0.49914512282350915, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.297, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.27, \"ph\": \"X\", \"dur\": 0.26466415558008155, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.223, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.629, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.159, \"ph\": \"X\", \"dur\": 0.5330700287225583, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.929, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.881, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.832, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347162.195, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347161.775, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.91, \"ph\": \"X\", \"dur\": 4.433436415763232, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347157.87, \"ph\": \"X\", \"dur\": 4.51201248457353, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347162.412, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347162.511, \"ph\": \"X\", \"dur\": 0.06311030288573105, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.067, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0264893366890562}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.29, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.471, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.769, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.877, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.729, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.239, \"ph\": \"X\", \"dur\": 0.07283876854795837, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.35, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.198, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.641, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.603, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.786, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.749, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.899, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347170.999, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347171.162, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347171.413, \"ph\": \"X\", \"dur\": 0.07533324692288844, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.044, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.397, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.689, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347173.081, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347173.05, \"ph\": \"X\", \"dur\": 0.6026659753831075, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.832, \"ph\": \"X\", \"dur\": 0.9112329503619585, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.36, \"ph\": \"X\", \"dur\": 1.4173626126352719, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347172.167, \"ph\": \"X\", \"dur\": 1.668307137153238, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347174.343, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347175.611, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347175.893, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347176.195, \"ph\": \"X\", \"dur\": 0.5320722373725864, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347176.164, \"ph\": \"X\", \"dur\": 0.5911913748584292, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347176.003, \"ph\": \"X\", \"dur\": 0.8269195812893219, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347175.575, \"ph\": \"X\", \"dur\": 1.2874002893014147, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347175.431, \"ph\": \"X\", \"dur\": 1.4874574549708073, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347177.152, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347177.365, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347177.543, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347177.318, \"ph\": \"X\", \"dur\": 0.339747954665477, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347178.02, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347178.294, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347180.569, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347180.485, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.575, \"ph\": \"X\", \"dur\": 11.288262990071095, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347181.011, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347181.301, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347181.611, \"ph\": \"X\", \"dur\": 0.556268677609408, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347181.272, \"ph\": \"X\", \"dur\": 0.9521423957108119, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347181.116, \"ph\": \"X\", \"dur\": 1.174150971079589, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347169.397, \"ph\": \"X\", \"dur\": 13.034896748197138, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347182.606, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.111, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.085, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.01, \"ph\": \"X\", \"dur\": 0.33750292412803995, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.408, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347182.961, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.686, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.664, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.615, \"ph\": \"X\", \"dur\": 0.3320150717031938, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.998, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347183.57, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.244, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.22, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.172, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.552, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.132, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.833, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.811, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.751, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.085, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347184.704, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.316, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.293, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.244, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.572, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347185.204, \"ph\": \"X\", \"dur\": 1.5246251827572654, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347182.813, \"ph\": \"X\", \"dur\": 3.9904170563756503, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347182.759, \"ph\": \"X\", \"dur\": 4.089946743535361, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347186.886, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.327, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.301, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.245, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.621, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.195, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.932, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.909, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.859, \"ph\": \"X\", \"dur\": 0.29484734391673556, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.203, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.816, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.503, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.478, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.432, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.76, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.369, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.022, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.998, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.952, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.27, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347188.911, \"ph\": \"X\", \"dur\": 0.4220657410381697, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.537, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.512, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.464, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.805, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.419, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.073, \"ph\": \"X\", \"dur\": 2.8514382303825756, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347187.019, \"ph\": \"X\", \"dur\": 2.9429855867425094, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347189.99, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.343, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.319, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.274, \"ph\": \"X\", \"dur\": 0.278134338804704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.599, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.229, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.864, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.839, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.793, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.134, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.751, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.405, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.382, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.335, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.673, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347191.292, \"ph\": \"X\", \"dur\": 1.4425568442220658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347192.976, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347192.947, \"ph\": \"X\", \"dur\": 0.26466415558008155, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347192.894, \"ph\": \"X\", \"dur\": 0.3452358070903232, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.306, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347192.848, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.594, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.565, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.514, \"ph\": \"X\", \"dur\": 0.40111212268875696, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.968, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347193.47, \"ph\": \"X\", \"dur\": 0.5649993519216633, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.141, \"ph\": \"X\", \"dur\": 3.9507548502142624, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347190.091, \"ph\": \"X\", \"dur\": 4.038560489011801, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.165, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.554, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.528, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.48, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.838, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.436, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.108, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.085, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.035, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.382, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.993, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.637, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.611, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.559, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.889, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347195.52, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.139, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.114, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.069, \"ph\": \"X\", \"dur\": 0.28736390879194534, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.406, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.023, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.655, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.63, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.583, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.898, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347196.54, \"ph\": \"X\", \"dur\": 0.42231518887566266, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.338, \"ph\": \"X\", \"dur\": 2.6957827797869385, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347194.297, \"ph\": \"X\", \"dur\": 2.788078479659351, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347197.119, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347197.224, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347203.667, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0372516947468255}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347203.908, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347204.11, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347204.466, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347205.526, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347204.43, \"ph\": \"X\", \"dur\": 1.4485435923218979, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.006, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.113, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347205.947, \"ph\": \"X\", \"dur\": 0.3756684432644702, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.401, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.36, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.549, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.514, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.661, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.789, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347206.929, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347207.2, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347207.767, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.118, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.396, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.786, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.751, \"ph\": \"X\", \"dur\": 0.6101494105078977, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.532, \"ph\": \"X\", \"dur\": 0.9194647289992277, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347208.083, \"ph\": \"X\", \"dur\": 1.4033935337356636, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347207.934, \"ph\": \"X\", \"dur\": 1.606693521292465, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.05, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.35, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.6, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.914, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.881, \"ph\": \"X\", \"dur\": 0.5151097844230617, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.725, \"ph\": \"X\", \"dur\": 0.7590697694912236, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.317, \"ph\": \"X\", \"dur\": 1.199844098341369, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347210.17, \"ph\": \"X\", \"dur\": 1.4013979510357195, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347211.791, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347212.015, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347212.184, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347211.959, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347212.62, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347212.913, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347215.249, \"ph\": \"X\", \"dur\": 0.12896453198388516, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347215.198, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347204.22, \"ph\": \"X\", \"dur\": 11.41223856530512, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347215.797, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347216.118, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347216.459, \"ph\": \"X\", \"dur\": 0.555021438421943, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347216.085, \"ph\": \"X\", \"dur\": 0.9843211667474099, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347215.921, \"ph\": \"X\", \"dur\": 1.199844098341369, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347204.035, \"ph\": \"X\", \"dur\": 13.255658084378451, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347217.463, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347218.025, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347218.003, \"ph\": \"X\", \"dur\": 1.3639807754117683, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347217.931, \"ph\": \"X\", \"dur\": 1.4655060452714224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347219.462, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347217.861, \"ph\": \"X\", \"dur\": 1.6742938852530704, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347219.772, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347219.745, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347219.689, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.082, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347219.639, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.352, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.329, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.277, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.634, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.232, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.874, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.849, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.802, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.17, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347220.759, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.427, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.402, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.354, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.709, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.309, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347217.728, \"ph\": \"X\", \"dur\": 4.080966621385612, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347217.656, \"ph\": \"X\", \"dur\": 4.188229191507606, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.893, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.273, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.248, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.199, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.556, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.154, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.902, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.874, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.829, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.158, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.768, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.442, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.418, \"ph\": \"X\", \"dur\": 0.19656489594449036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.369, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.693, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.324, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347224.021, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.994, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.944, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347224.302, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347223.897, \"ph\": \"X\", \"dur\": 0.49839677931103016, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347225.54, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347225.512, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347225.457, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347225.859, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347225.396, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347222.036, \"ph\": \"X\", \"dur\": 3.944518654276937, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347221.995, \"ph\": \"X\", \"dur\": 4.03930883252428, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.085, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.487, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.46, \"ph\": \"X\", \"dur\": 0.2579290639677703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.41, \"ph\": \"X\", \"dur\": 0.33999740250297006, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.807, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.369, \"ph\": \"X\", \"dur\": 0.5043835274108623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.099, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.075, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.024, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.36, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.981, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.615, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.589, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.542, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.875, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347227.496, \"ph\": \"X\", \"dur\": 0.44027543317515927, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.12, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.097, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.048, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.375, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.006, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.629, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.602, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.555, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.881, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347228.514, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.248, \"ph\": \"X\", \"dur\": 2.750411856197907, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347226.202, \"ph\": \"X\", \"dur\": 2.8287384771707114, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.084, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.426, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.4, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.352, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.679, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.309, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.951, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.927, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.879, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347230.252, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.836, \"ph\": \"X\", \"dur\": 0.4789398479865755, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347230.499, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347230.475, \"ph\": \"X\", \"dur\": 1.1005638590191518, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347230.427, \"ph\": \"X\", \"dur\": 1.1798882713419283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347231.658, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347230.386, \"ph\": \"X\", \"dur\": 1.3437755005748344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347231.937, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347231.907, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347231.854, \"ph\": \"X\", \"dur\": 0.33825126764051894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.267, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347231.807, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.536, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.506, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.452, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.823, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347232.408, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.222, \"ph\": \"X\", \"dur\": 3.73248799240788, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347229.183, \"ph\": \"X\", \"dur\": 3.831768231730097, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347233.049, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347233.165, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.256, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.019570342707661}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.503, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.705, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.973, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.08, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.941, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.45, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.535, \"ph\": \"X\", \"dur\": 0.18484084758231897, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.42, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.811, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.781, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.976, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347240.927, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347241.062, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347241.161, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347241.324, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347241.585, \"ph\": \"X\", \"dur\": 0.07184097719798634, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.172, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.535, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.792, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347243.199, \"ph\": \"X\", \"dur\": 0.5393062246598834, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347243.135, \"ph\": \"X\", \"dur\": 0.6308535810198174, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.921, \"ph\": \"X\", \"dur\": 0.9279459554739902, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.475, \"ph\": \"X\", \"dur\": 1.4093802818354957, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347242.301, \"ph\": \"X\", \"dur\": 1.6383733966540772, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347244.474, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347244.768, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347244.988, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347246.337, \"ph\": \"X\", \"dur\": 0.47095751718679923, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347246.267, \"ph\": \"X\", \"dur\": 0.5689905173215515, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347246.094, \"ph\": \"X\", \"dur\": 0.8136988459021923, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347244.733, \"ph\": \"X\", \"dur\": 2.256754585799244, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347244.585, \"ph\": \"X\", \"dur\": 2.462549051730976, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347247.278, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347247.54, \"ph\": \"X\", \"dur\": 0.13794465413363347, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347247.748, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347247.494, \"ph\": \"X\", \"dur\": 0.3771651302894283, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347248.13, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347248.38, \"ph\": \"X\", \"dur\": 0.17186956003268256, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347250.568, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347250.503, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.814, \"ph\": \"X\", \"dur\": 11.08147073278939, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347251.054, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347251.392, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347251.719, \"ph\": \"X\", \"dur\": 0.5051318709233413, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347251.361, \"ph\": \"X\", \"dur\": 0.9199636246742139, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347251.174, \"ph\": \"X\", \"dur\": 1.1591841008300088, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347239.637, \"ph\": \"X\", \"dur\": 12.857788783577101, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347252.659, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.147, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.122, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.066, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.455, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.008, \"ph\": \"X\", \"dur\": 0.5123658582106386, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.764, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.74, \"ph\": \"X\", \"dur\": 0.26815642530498374, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.672, \"ph\": \"X\", \"dur\": 0.3649421862522708, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.086, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347253.63, \"ph\": \"X\", \"dur\": 0.5283305198101912, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.369, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.343, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.293, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.641, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.252, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.877, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.854, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.804, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.136, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347254.761, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.372, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.348, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.297, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.643, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347255.254, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347252.877, \"ph\": \"X\", \"dur\": 2.8698973703570583, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347252.811, \"ph\": \"X\", \"dur\": 3.9195738705276364, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347256.793, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.296, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.271, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.214, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.629, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.163, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.963, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.938, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.882, \"ph\": \"X\", \"dur\": 0.36244770787734076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.3, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.832, \"ph\": \"X\", \"dur\": 0.5522775122095199, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.588, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.564, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.517, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.853, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347258.472, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.132, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.105, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.059, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.385, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.0, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.65, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.627, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.575, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.923, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347259.533, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347257.044, \"ph\": \"X\", \"dur\": 2.999859693690915, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347256.989, \"ph\": \"X\", \"dur\": 3.119345207850066, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.136, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.511, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.487, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.436, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.764, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.395, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.038, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.013, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.964, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.286, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.923, \"ph\": \"X\", \"dur\": 0.4258074586005648, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.532, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.51, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.461, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.783, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.42, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347262.034, \"ph\": \"X\", \"dur\": 0.02344809672434276, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347262.008, \"ph\": \"X\", \"dur\": 1.3230713300629149, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.959, \"ph\": \"X\", \"dur\": 1.4036429815731564, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.414, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347261.916, \"ph\": \"X\", \"dur\": 1.5675302108060627, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.703, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.673, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.62, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.982, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347263.578, \"ph\": \"X\", \"dur\": 0.4699597258368272, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.29, \"ph\": \"X\", \"dur\": 3.818796944180461, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347260.247, \"ph\": \"X\", \"dur\": 3.8986202521782234, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.182, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.637, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.613, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.55, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.924, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.505, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.213, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.187, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.136, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.512, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.089, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.759, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.735, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.686, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.007, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347265.65, \"ph\": \"X\", \"dur\": 0.4203196061757186, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.266, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.241, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.193, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.517, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.153, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.767, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.742, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.695, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347267.013, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347266.651, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.383, \"ph\": \"X\", \"dur\": 2.780844492372054, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347264.339, \"ph\": \"X\", \"dur\": 2.861166696044803, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347267.257, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347267.394, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347273.601, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0270371741337974}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347273.831, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347274.02, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347274.34, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347274.462, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347274.304, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347275.791, \"ph\": \"X\", \"dur\": 0.09553852175982211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347275.925, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347275.704, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.233, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.193, \"ph\": \"X\", \"dur\": 0.17137066435769654, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.436, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.4, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.547, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.678, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347276.811, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347277.061, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347277.622, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347277.939, \"ph\": \"X\", \"dur\": 0.07483435124790241, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347278.201, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347278.596, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347278.552, \"ph\": \"X\", \"dur\": 0.5789684308212718, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347278.326, \"ph\": \"X\", \"dur\": 0.8805508663503185, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347277.905, \"ph\": \"X\", \"dur\": 1.3380382003124953, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347277.757, \"ph\": \"X\", \"dur\": 1.5413381878692969, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347279.815, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.106, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.341, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.637, \"ph\": \"X\", \"dur\": 0.4500038988373866, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.606, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.453, \"ph\": \"X\", \"dur\": 0.7261426549421466, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347280.071, \"ph\": \"X\", \"dur\": 1.1641730575798688, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347279.925, \"ph\": \"X\", \"dur\": 1.3624840883868101, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347281.556, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347281.795, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347281.935, \"ph\": \"X\", \"dur\": 1.16841367081725, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347281.746, \"ph\": \"X\", \"dur\": 1.4313316915348804, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347283.494, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347283.754, \"ph\": \"X\", \"dur\": 0.2504456288429801, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.091, \"ph\": \"X\", \"dur\": 0.0863089517725808, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.006, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347274.146, \"ph\": \"X\", \"dur\": 12.26310513899377, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.552, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.881, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347287.237, \"ph\": \"X\", \"dur\": 0.5420501508723066, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.827, \"ph\": \"X\", \"dur\": 1.016749385621501, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347286.658, \"ph\": \"X\", \"dur\": 1.2477380831400264, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347273.937, \"ph\": \"X\", \"dur\": 14.100537909967269, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.213, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.736, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.71, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.657, \"ph\": \"X\", \"dur\": 0.36893335165215896, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.043, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.608, \"ph\": \"X\", \"dur\": 1.5675302108060627, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.435, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.412, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.341, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.762, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.297, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.022, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.994, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.946, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.318, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347290.887, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.592, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.569, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.517, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.869, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.473, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.115, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.081, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.031, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.365, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347291.989, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.442, \"ph\": \"X\", \"dur\": 4.034569323611913, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347288.388, \"ph\": \"X\", \"dur\": 4.135346249959087, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.581, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.054, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.027, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.972, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.343, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.924, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.641, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.618, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.57, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.901, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347293.526, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.185, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.161, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.111, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.489, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.069, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.755, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.732, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.685, \"ph\": \"X\", \"dur\": 0.27364427772982985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347295.005, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347294.637, \"ph\": \"X\", \"dur\": 0.4292997283254669, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347295.289, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347295.263, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347295.214, \"ph\": \"X\", \"dur\": 1.141972200042991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.414, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347295.166, \"ph\": \"X\", \"dur\": 1.3188307168255338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.804, \"ph\": \"X\", \"dur\": 3.7516954758948415, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347292.743, \"ph\": \"X\", \"dur\": 3.856463567641905, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.632, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.04, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.013, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.959, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.352, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.912, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.631, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.607, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.557, \"ph\": \"X\", \"dur\": 0.33475899791561686, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.941, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347297.516, \"ph\": \"X\", \"dur\": 0.5073769014607785, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.217, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.191, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.143, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.531, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.103, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.787, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.761, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.716, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.058, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347298.668, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.326, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.299, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.252, \"ph\": \"X\", \"dur\": 0.276637651779746, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.574, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.21, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.794, \"ph\": \"X\", \"dur\": 2.897336632481289, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347296.742, \"ph\": \"X\", \"dur\": 2.9843939277663485, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.757, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.111, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.084, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.035, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.372, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.993, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.65, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.625, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.574, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.938, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347300.531, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347301.201, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347301.174, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347301.123, \"ph\": \"X\", \"dur\": 1.7613511805381301, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347302.955, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347301.077, \"ph\": \"X\", \"dur\": 1.9671456464698618, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.286, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.246, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.188, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.576, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.147, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.857, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.829, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.775, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347304.166, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347303.729, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.903, \"ph\": \"X\", \"dur\": 4.393275313926858, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347299.86, \"ph\": \"X\", \"dur\": 4.476590891649523, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347304.373, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347304.494, \"ph\": \"X\", \"dur\": 0.03542159292400715, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347310.72, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0123526756705388}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347310.965, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.194, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.469, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.566, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.435, \"ph\": \"X\", \"dur\": 0.40909445348853324, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.925, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.026, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.881, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.315, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.284, \"ph\": \"X\", \"dur\": 0.11574379659675575, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.473, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.432, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.562, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.677, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347312.839, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347313.132, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347313.815, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.163, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.421, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.788, \"ph\": \"X\", \"dur\": 0.5630037692217192, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.734, \"ph\": \"X\", \"dur\": 0.645571003431905, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.54, \"ph\": \"X\", \"dur\": 0.9329349122238503, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347314.106, \"ph\": \"X\", \"dur\": 1.4026451902231845, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347313.929, \"ph\": \"X\", \"dur\": 1.6505963406912345, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.222, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.592, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.828, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347317.195, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347317.159, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.966, \"ph\": \"X\", \"dur\": 1.7835520380750078, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.556, \"ph\": \"X\", \"dur\": 2.252763420399356, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347316.381, \"ph\": \"X\", \"dur\": 2.4825048787304165, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347319.131, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347319.409, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347319.596, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347319.32, \"ph\": \"X\", \"dur\": 0.4160789929383375, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347320.056, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347320.324, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347322.626, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347322.574, \"ph\": \"X\", \"dur\": 0.17286735138265458, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.304, \"ph\": \"X\", \"dur\": 11.629008736086544, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347323.079, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347323.413, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347323.799, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347323.359, \"ph\": \"X\", \"dur\": 1.0125087723841197, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347323.2, \"ph\": \"X\", \"dur\": 1.2255372256031487, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347311.091, \"ph\": \"X\", \"dur\": 13.47292715083486, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347324.752, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.291, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.265, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.185, \"ph\": \"X\", \"dur\": 0.38764193946413456, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.646, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.135, \"ph\": \"X\", \"dur\": 0.5767234002838347, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.956, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.931, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.881, \"ph\": \"X\", \"dur\": 0.3442380157403512, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.275, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347325.809, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.567, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.537, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.48, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.843, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.437, \"ph\": \"X\", \"dur\": 0.4749486825866874, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.086, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.06, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.008, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.367, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347326.968, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.666, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.642, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.59, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.945, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347327.543, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347324.975, \"ph\": \"X\", \"dur\": 3.081678584388622, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347324.905, \"ph\": \"X\", \"dur\": 3.1941795590979685, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.104, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.608, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.579, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.52, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.913, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.468, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.234, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.208, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.157, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.513, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.111, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.836, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.805, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.749, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.127, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347330.703, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.401, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.376, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.325, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.658, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.279, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.971, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.946, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.867, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.248, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347331.821, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.343, \"ph\": \"X\", \"dur\": 3.0280472993276253, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347329.289, \"ph\": \"X\", \"dur\": 3.120342999200038, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.441, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.796, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.77, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.721, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.081, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.679, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.362, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.337, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.288, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.616, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.242, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.874, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.85, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.799, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347334.125, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347333.761, \"ph\": \"X\", \"dur\": 0.42830193697549485, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347334.382, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347334.356, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347334.305, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347335.612, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347334.263, \"ph\": \"X\", \"dur\": 1.4677510758088594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347335.954, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347335.928, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347335.871, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.256, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347335.819, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.587, \"ph\": \"X\", \"dur\": 3.800088356368485, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347332.543, \"ph\": \"X\", \"dur\": 3.884651173278615, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.497, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.894, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.868, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.816, \"ph\": \"X\", \"dur\": 0.3287722498157847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.197, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.773, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.482, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.458, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.411, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.793, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.368, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.051, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.025, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.976, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.339, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347337.931, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.596, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.571, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.522, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.889, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347338.476, \"ph\": \"X\", \"dur\": 0.4759464739366594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.153, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.131, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.069, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.417, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.025, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.645, \"ph\": \"X\", \"dur\": 2.8930960192439077, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347336.596, \"ph\": \"X\", \"dur\": 2.9814005537164325, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.61, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347339.719, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.179, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0172625032345088}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.428, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.626, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.907, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347347.023, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.873, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347347.423, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347347.525, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347347.372, \"ph\": \"X\", \"dur\": 1.323320777900408, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347348.793, \"ph\": \"X\", \"dur\": 0.05712355478589885, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347348.739, \"ph\": \"X\", \"dur\": 0.14717422412087477, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347348.976, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347348.934, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347349.077, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347349.203, \"ph\": \"X\", \"dur\": 0.0708431858480143, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347349.411, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347349.715, \"ph\": \"X\", \"dur\": 0.06360919856071706, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347350.349, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347350.7, \"ph\": \"X\", \"dur\": 0.06585422909815414, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347350.965, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347351.386, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347351.32, \"ph\": \"X\", \"dur\": 0.6420787337070029, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347351.135, \"ph\": \"X\", \"dur\": 0.9314382251988922, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347350.665, \"ph\": \"X\", \"dur\": 1.4567753709591673, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347350.499, \"ph\": \"X\", \"dur\": 1.6792828420029304, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347352.749, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.127, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.366, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.702, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.673, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.48, \"ph\": \"X\", \"dur\": 0.8004781105150629, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347353.093, \"ph\": \"X\", \"dur\": 1.238508513152785, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347352.864, \"ph\": \"X\", \"dur\": 1.5176406433074612, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347354.623, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347354.879, \"ph\": \"X\", \"dur\": 0.11449655740929071, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347355.057, \"ph\": \"X\", \"dur\": 0.09977913499720323, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347354.794, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347355.516, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347355.811, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347358.025, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347357.978, \"ph\": \"X\", \"dur\": 0.17486293408259865, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.734, \"ph\": \"X\", \"dur\": 11.620028613936796, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347358.51, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347358.81, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347359.126, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347358.772, \"ph\": \"X\", \"dur\": 0.9553852175982209, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347358.616, \"ph\": \"X\", \"dur\": 1.1656697446048268, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347346.54, \"ph\": \"X\", \"dur\": 13.358181145588077, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.096, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.627, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.597, \"ph\": \"X\", \"dur\": 0.2656619469300536, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.513, \"ph\": \"X\", \"dur\": 0.3794101608268653, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.952, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.466, \"ph\": \"X\", \"dur\": 0.5602598430092961, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.313, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.285, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.224, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.63, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.149, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.902, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.876, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.822, \"ph\": \"X\", \"dur\": 0.3474808376277603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.227, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347362.773, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.475, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.45, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.398, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.771, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.357, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.007, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.983, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.932, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.302, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347363.894, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.334, \"ph\": \"X\", \"dur\": 4.071487603560878, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347360.28, \"ph\": \"X\", \"dur\": 4.178251278007885, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.513, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.905, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.88, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.832, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.185, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.79, \"ph\": \"X\", \"dur\": 0.4756970260991664, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.492, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.468, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.42, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.748, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.376, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.02, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.996, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.948, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.294, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347365.903, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.556, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.532, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.484, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.81, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.441, \"ph\": \"X\", \"dur\": 0.4288008326504809, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347367.069, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347367.045, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.997, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347367.326, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347366.954, \"ph\": \"X\", \"dur\": 1.5535611319064544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.658, \"ph\": \"X\", \"dur\": 3.9380330105021186, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347364.618, \"ph\": \"X\", \"dur\": 4.019103557687346, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347368.707, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.177, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.148, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.084, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.494, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.029, \"ph\": \"X\", \"dur\": 0.5325711330475723, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.813, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.785, \"ph\": \"X\", \"dur\": 0.23647654994337164, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.729, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.109, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347369.68, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.412, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.388, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.337, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.697, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.29, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.958, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.933, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.88, \"ph\": \"X\", \"dur\": 0.33825126764051894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.269, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347370.837, \"ph\": \"X\", \"dur\": 0.5283305198101912, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.573, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.55, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.502, \"ph\": \"X\", \"dur\": 0.29484734391673556, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.846, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347371.455, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347368.9, \"ph\": \"X\", \"dur\": 3.0654644749515763, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347368.845, \"ph\": \"X\", \"dur\": 3.157510726986496, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.033, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.391, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.367, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.316, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.65, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.272, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.928, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.902, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.855, \"ph\": \"X\", \"dur\": 0.3300194890032497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.233, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.812, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.49, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.465, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.413, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.741, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347373.37, \"ph\": \"X\", \"dur\": 1.3757048237739395, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.0, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347374.973, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347374.91, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.338, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347374.857, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.612, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.586, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.537, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.923, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347375.488, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.179, \"ph\": \"X\", \"dur\": 3.8709315422164994, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347372.135, \"ph\": \"X\", \"dur\": 3.954496567776657, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347376.123, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347376.245, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347382.787, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0049241009322936}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.014, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.221, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.566, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.686, \"ph\": \"X\", \"dur\": 0.2913550741918335, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.531, \"ph\": \"X\", \"dur\": 0.4737014433992223, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.076, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.171, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.044, \"ph\": \"X\", \"dur\": 0.3761673389394562, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.488, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.459, \"ph\": \"X\", \"dur\": 0.11998440983413688, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.657, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.626, \"ph\": \"X\", \"dur\": 0.09379238689737104, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.758, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347384.888, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347385.033, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347385.287, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347385.936, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.313, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.593, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.964, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.909, \"ph\": \"X\", \"dur\": 0.6273613112949153, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.713, \"ph\": \"X\", \"dur\": 0.9129790852244096, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.265, \"ph\": \"X\", \"dur\": 1.419358195335216, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347386.074, \"ph\": \"X\", \"dur\": 1.6760400201155214, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.254, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.597, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.811, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347389.122, \"ph\": \"X\", \"dur\": 0.5048824230858484, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347389.086, \"ph\": \"X\", \"dur\": 0.5654982475966494, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.932, \"ph\": \"X\", \"dur\": 0.7875068229654265, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.563, \"ph\": \"X\", \"dur\": 1.2090736683286103, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347388.395, \"ph\": \"X\", \"dur\": 2.429871385019392, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347391.08, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347391.311, \"ph\": \"X\", \"dur\": 0.12597115793396907, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347391.496, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347391.253, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347391.914, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347392.209, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347394.511, \"ph\": \"X\", \"dur\": 0.10826036147196551, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347394.444, \"ph\": \"X\", \"dur\": 0.22425360590621427, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.328, \"ph\": \"X\", \"dur\": 11.513264939489789, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347394.979, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347395.277, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347395.715, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347395.245, \"ph\": \"X\", \"dur\": 1.0623983398827215, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347395.082, \"ph\": \"X\", \"dur\": 1.3076055641383484, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347383.141, \"ph\": \"X\", \"dur\": 13.421042000636314, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347396.723, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.222, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.198, \"ph\": \"X\", \"dur\": 0.34473691141533713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.119, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.625, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.075, \"ph\": \"X\", \"dur\": 0.6203767718451111, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.928, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.902, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.85, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.22, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347397.81, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.489, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.464, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.389, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.808, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.348, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.061, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.036, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.984, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.343, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347398.941, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.588, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.563, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.515, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.931, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347399.469, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347396.942, \"ph\": \"X\", \"dur\": 3.1006366200380904, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347396.89, \"ph\": \"X\", \"dur\": 3.212139803397465, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.131, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.616, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.588, \"ph\": \"X\", \"dur\": 1.3178329254755619, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.528, \"ph\": \"X\", \"dur\": 1.4068858034605656, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347401.99, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.478, \"ph\": \"X\", \"dur\": 1.608938551829902, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.371, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.338, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.285, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.651, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.21, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.936, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.908, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.857, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.205, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347402.812, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.473, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.449, \"ph\": \"X\", \"dur\": 0.2127790053815359, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.401, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.738, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.358, \"ph\": \"X\", \"dur\": 0.4442665985750474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.069, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.039, \"ph\": \"X\", \"dur\": 0.2534390028928962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.977, \"ph\": \"X\", \"dur\": 0.34598415060280224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.382, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347403.922, \"ph\": \"X\", \"dur\": 0.5285799676476841, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.355, \"ph\": \"X\", \"dur\": 4.158046003170952, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347400.3, \"ph\": \"X\", \"dur\": 4.2643107819429735, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.597, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.019, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.994, \"ph\": \"X\", \"dur\": 0.24944783749300808, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.942, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.322, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.894, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.606, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.58, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.534, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.871, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347405.489, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.127, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.103, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.052, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.389, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.008, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.644, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.619, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.571, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.901, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347406.528, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.128, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.101, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.041, \"ph\": \"X\", \"dur\": 0.34024685034046304, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.442, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347407.987, \"ph\": \"X\", \"dur\": 0.5210965325228939, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.781, \"ph\": \"X\", \"dur\": 3.79135768205623, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347404.73, \"ph\": \"X\", \"dur\": 3.8841522776036292, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.646, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.029, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.003, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.952, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.322, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.906, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.606, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.58, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.534, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.882, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347409.49, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.164, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.139, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.068, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.415, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.026, \"ph\": \"X\", \"dur\": 0.45848512531214886, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.677, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.651, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.6, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.953, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347410.558, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.224, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.196, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.14, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.481, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.092, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.798, \"ph\": \"X\", \"dur\": 2.8030453499089316, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347408.75, \"ph\": \"X\", \"dur\": 2.8891048538440196, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.671, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347411.774, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.088, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 1.0078523496642906}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.347, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.55, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.872, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.991, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.831, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347419.359, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347419.465, \"ph\": \"X\", \"dur\": 0.17760686029502176, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347419.314, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347420.722, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347420.68, \"ph\": \"X\", \"dur\": 0.14318305872098666, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347420.904, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347420.862, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347421.01, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347421.156, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347421.329, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347421.593, \"ph\": \"X\", \"dur\": 0.09553852175982211, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.155, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.466, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.751, \"ph\": \"X\", \"dur\": 0.05213459803603869, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347423.151, \"ph\": \"X\", \"dur\": 0.5630037692217192, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347423.102, \"ph\": \"X\", \"dur\": 0.6400831510070587, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.891, \"ph\": \"X\", \"dur\": 0.9471534389609517, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.434, \"ph\": \"X\", \"dur\": 1.4410601571971076, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347422.286, \"ph\": \"X\", \"dur\": 1.6441106969164163, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347424.468, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347424.774, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347425.016, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347425.386, \"ph\": \"X\", \"dur\": 0.43877874615020124, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347425.33, \"ph\": \"X\", \"dur\": 0.522343771710359, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347425.147, \"ph\": \"X\", \"dur\": 0.7752838789282691, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347424.741, \"ph\": \"X\", \"dur\": 1.2360140347778552, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347424.594, \"ph\": \"X\", \"dur\": 1.4370689917972195, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347426.252, \"ph\": \"X\", \"dur\": 0.09329349122238503, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347426.587, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347426.757, \"ph\": \"X\", \"dur\": 0.07508379908539543, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347426.539, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347427.171, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347427.469, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347429.701, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347429.648, \"ph\": \"X\", \"dur\": 0.17685851678254272, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.657, \"ph\": \"X\", \"dur\": 11.36085231078156, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347430.161, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347430.45, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347430.826, \"ph\": \"X\", \"dur\": 0.5719838913714675, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347430.416, \"ph\": \"X\", \"dur\": 1.0379524518084067, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347430.262, \"ph\": \"X\", \"dur\": 1.2447447090901103, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347418.476, \"ph\": \"X\", \"dur\": 13.195291707705142, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347431.828, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.389, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.364, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.273, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.774, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.224, \"ph\": \"X\", \"dur\": 0.6193789804951391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347433.105, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347433.081, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347433.007, \"ph\": \"X\", \"dur\": 1.324069121412887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347434.404, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.965, \"ph\": \"X\", \"dur\": 1.5101572081826709, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347434.688, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347434.659, \"ph\": \"X\", \"dur\": 0.2499467331679941, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347434.6, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.0, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347434.549, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.271, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.243, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.185, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.562, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.134, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.802, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.778, \"ph\": \"X\", \"dur\": 0.23946992399328776, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.73, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.097, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347435.688, \"ph\": \"X\", \"dur\": 0.47395089123671535, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.086, \"ph\": \"X\", \"dur\": 4.118134349172071, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347432.021, \"ph\": \"X\", \"dur\": 4.2433571635935605, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.324, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.833, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.804, \"ph\": \"X\", \"dur\": 0.2644147077425886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.749, \"ph\": \"X\", \"dur\": 0.36219826003984773, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.159, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.705, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.473, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.449, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.395, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.735, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.349, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.999, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.975, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.925, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.257, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347437.884, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.54, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.516, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.467, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.795, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.421, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347439.06, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347439.036, \"ph\": \"X\", \"dur\": 0.3058230487664279, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.987, \"ph\": \"X\", \"dur\": 0.39712095728886887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347439.448, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347438.944, \"ph\": \"X\", \"dur\": 0.5754761610963697, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.557, \"ph\": \"X\", \"dur\": 3.9737040512636184, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347436.488, \"ph\": \"X\", \"dur\": 4.0949357002852205, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347440.618, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.06, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.034, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347440.977, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.379, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347440.927, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.674, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.648, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.597, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.977, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347441.553, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.243, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.219, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.167, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.518, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.126, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.779, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.753, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.704, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.047, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347442.658, \"ph\": \"X\", \"dur\": 0.45748733396217683, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.337, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.308, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.238, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.603, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.191, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347440.803, \"ph\": \"X\", \"dur\": 2.9235286554180546, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347440.751, \"ph\": \"X\", \"dur\": 3.0123320855655655, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.795, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.148, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.123, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.07, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.405, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.029, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.687, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.659, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.611, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.019, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347444.568, \"ph\": \"X\", \"dur\": 0.525087697922782, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.326, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.296, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.236, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.63, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.184, \"ph\": \"X\", \"dur\": 0.5315733416976002, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.946, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.919, \"ph\": \"X\", \"dur\": 1.2908925590263167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.845, \"ph\": \"X\", \"dur\": 1.3951617550983941, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.303, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347445.798, \"ph\": \"X\", \"dur\": 1.577009228630797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.602, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.575, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.517, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.904, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347447.465, \"ph\": \"X\", \"dur\": 0.5051318709233413, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.934, \"ph\": \"X\", \"dur\": 4.097929074335137, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347443.891, \"ph\": \"X\", \"dur\": 4.179249069357858, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347448.101, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347448.208, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347454.473, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9973525764398047}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347454.698, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347454.892, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.168, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.264, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.121, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.624, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.739, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.594, \"ph\": \"X\", \"dur\": 0.40235936187622207, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.066, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.035, \"ph\": \"X\", \"dur\": 0.11923606632165785, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.249, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.198, \"ph\": \"X\", \"dur\": 0.123227231721546, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.357, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.465, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.615, \"ph\": \"X\", \"dur\": 0.01920748348696162, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347456.883, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347457.46, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347457.776, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347458.034, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347458.403, \"ph\": \"X\", \"dur\": 0.5694894129965374, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347458.367, \"ph\": \"X\", \"dur\": 0.6316019245322965, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347458.166, \"ph\": \"X\", \"dur\": 0.9149746679243537, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347457.742, \"ph\": \"X\", \"dur\": 1.3742081367489816, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347457.585, \"ph\": \"X\", \"dur\": 1.5874860378055033, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347459.657, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347459.966, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347460.2, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347460.554, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347460.502, \"ph\": \"X\", \"dur\": 0.6036637667330795, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347460.341, \"ph\": \"X\", \"dur\": 0.8393919731639723, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347459.935, \"ph\": \"X\", \"dur\": 1.2809146455265965, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347459.794, \"ph\": \"X\", \"dur\": 1.478227884983566, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347461.487, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347463.499, \"ph\": \"X\", \"dur\": 0.13046121900884322, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347463.69, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347463.431, \"ph\": \"X\", \"dur\": 0.3916331048640227, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347464.145, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347464.425, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347466.593, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347466.545, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347455.003, \"ph\": \"X\", \"dur\": 11.90390025300384, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347467.064, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347467.359, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347467.723, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347467.326, \"ph\": \"X\", \"dur\": 1.0426919607207739, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347467.167, \"ph\": \"X\", \"dur\": 1.2552215182648168, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347454.825, \"ph\": \"X\", \"dur\": 13.736842962902461, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347468.707, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.264, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.233, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.175, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.607, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.121, \"ph\": \"X\", \"dur\": 0.55477199058445, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.92, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.897, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.83, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.218, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347469.786, \"ph\": \"X\", \"dur\": 0.4976484357985511, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.481, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.454, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.407, \"ph\": \"X\", \"dur\": 0.3419929852029141, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.797, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.363, \"ph\": \"X\", \"dur\": 0.5028868403859043, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.052, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.026, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.977, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.326, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347470.935, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.603, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.579, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.529, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.873, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347471.489, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347468.959, \"ph\": \"X\", \"dur\": 3.019067177177877, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347468.901, \"ph\": \"X\", \"dur\": 3.1166012816376427, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.048, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.521, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.492, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.433, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347473.781, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.382, \"ph\": \"X\", \"dur\": 1.4842146330833983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.119, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.094, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.038, \"ph\": \"X\", \"dur\": 0.3175470971285993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.412, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347473.99, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.693, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.668, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.616, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.994, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347474.573, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.301, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.276, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.22, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.595, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.175, \"ph\": \"X\", \"dur\": 0.4841782525739287, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.926, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.9, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.823, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.193, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347475.763, \"ph\": \"X\", \"dur\": 0.494904509586128, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.253, \"ph\": \"X\", \"dur\": 4.064004168436088, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347472.199, \"ph\": \"X\", \"dur\": 4.171266738558081, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.403, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.834, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.809, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.732, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.099, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.684, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.375, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.348, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.299, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.661, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.255, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.916, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.893, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.843, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.172, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347477.8, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.456, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.432, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.382, \"ph\": \"X\", \"dur\": 0.3452358070903232, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.777, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.342, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347479.037, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347479.013, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.964, \"ph\": \"X\", \"dur\": 1.2115681467035404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.226, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347478.92, \"ph\": \"X\", \"dur\": 1.3697180756741074, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.573, \"ph\": \"X\", \"dur\": 3.7798830815315516, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347476.507, \"ph\": \"X\", \"dur\": 3.9105937483778876, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.454, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.839, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.812, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.758, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.123, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.714, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.448, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.425, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.347, \"ph\": \"X\", \"dur\": 0.3961231659388968, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.795, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.303, \"ph\": \"X\", \"dur\": 0.5605092908467892, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.095, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.067, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.013, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.356, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347481.968, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.644, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.608, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.555, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.901, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347482.514, \"ph\": \"X\", \"dur\": 0.45549175126223274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.188, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.158, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.088, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.444, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.042, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.599, \"ph\": \"X\", \"dur\": 2.9721709837291916, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347480.555, \"ph\": \"X\", \"dur\": 3.0724490144013807, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.662, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347483.769, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.145, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9987475701917531}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.392, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.601, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.923, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.018, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.868, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.376, \"ph\": \"X\", \"dur\": 0.0586202418108569, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.465, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.344, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.77, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347491.739, \"ph\": \"X\", \"dur\": 0.09952968715971022, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347492.941, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347492.814, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347493.072, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347493.198, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347493.372, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347493.668, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.237, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.53, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.785, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347495.199, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347495.153, \"ph\": \"X\", \"dur\": 0.5857035224335829, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.907, \"ph\": \"X\", \"dur\": 0.9164713549493118, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.498, \"ph\": \"X\", \"dur\": 1.3624840883868101, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347494.349, \"ph\": \"X\", \"dur\": 1.5672807629685699, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347496.448, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347496.783, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347497.005, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347497.324, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347497.292, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347497.134, \"ph\": \"X\", \"dur\": 0.7548291562538425, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347496.729, \"ph\": \"X\", \"dur\": 1.2140626250784703, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347496.58, \"ph\": \"X\", \"dur\": 1.419358195335216, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347498.208, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347498.453, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347498.591, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347498.407, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347499.065, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347499.33, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347501.506, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347501.458, \"ph\": \"X\", \"dur\": 0.16463557274538534, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.709, \"ph\": \"X\", \"dur\": 11.104918829513734, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347501.969, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347502.277, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347502.622, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347502.247, \"ph\": \"X\", \"dur\": 0.9471534389609517, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347502.072, \"ph\": \"X\", \"dur\": 1.1888683934916764, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347490.518, \"ph\": \"X\", \"dur\": 12.87425234085164, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347503.556, \"ph\": \"X\", \"dur\": 0.06261140721074503, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.083, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.058, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347503.995, \"ph\": \"X\", \"dur\": 0.39362868756396674, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.448, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347503.949, \"ph\": \"X\", \"dur\": 0.5669949346216074, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.759, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.736, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.679, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347505.048, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347504.636, \"ph\": \"X\", \"dur\": 1.476731197958608, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.369, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.339, \"ph\": \"X\", \"dur\": 0.2654124990925606, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.275, \"ph\": \"X\", \"dur\": 0.3597037816649176, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.695, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.22, \"ph\": \"X\", \"dur\": 0.5427984943847857, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.994, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.968, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.897, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.308, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347506.849, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.57, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.544, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.494, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.861, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347507.454, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347503.82, \"ph\": \"X\", \"dur\": 4.156549316145994, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347503.77, \"ph\": \"X\", \"dur\": 4.265308573292945, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.073, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.449, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.42, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.366, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.72, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.321, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.018, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.994, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.94, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.279, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.897, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.575, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.55, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.498, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.838, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.455, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.106, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.081, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.029, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.364, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347509.985, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.62, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.593, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.544, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.884, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347510.499, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.228, \"ph\": \"X\", \"dur\": 2.780844492372054, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347508.181, \"ph\": \"X\", \"dur\": 2.8858620319566106, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.005, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.456, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.424, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.369, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.752, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.303, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.05, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.026, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.973, \"ph\": \"X\", \"dur\": 0.2923528655418055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.316, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.925, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.585, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.559, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.507, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.846, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.463, \"ph\": \"X\", \"dur\": 0.44950500316240055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.103, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.076, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.028, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.359, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347513.986, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.618, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.592, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.542, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.876, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347514.498, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.176, \"ph\": \"X\", \"dur\": 2.871643505219509, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347512.105, \"ph\": \"X\", \"dur\": 2.9796544188539813, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.115, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.48, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.455, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.405, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.806, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.362, \"ph\": \"X\", \"dur\": 0.5128647538856246, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.09, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.066, \"ph\": \"X\", \"dur\": 0.21826685780638205, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.016, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.367, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.968, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.621, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.595, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.545, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.871, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347516.502, \"ph\": \"X\", \"dur\": 0.43279199805036905, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347517.127, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347517.1, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347517.049, \"ph\": \"X\", \"dur\": 0.28287384771707114, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.273, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347517.009, \"ph\": \"X\", \"dur\": 1.3480161138122158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.571, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.539, \"ph\": \"X\", \"dur\": 0.2579290639677703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.485, \"ph\": \"X\", \"dur\": 0.3424918808779001, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.881, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347518.438, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.259, \"ph\": \"X\", \"dur\": 3.757183328319688, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347515.216, \"ph\": \"X\", \"dur\": 3.869684303029034, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347519.129, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347519.231, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347525.709, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9896907418822282}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347525.937, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.127, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.434, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.534, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.379, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.905, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.993, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.873, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.299, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.269, \"ph\": \"X\", \"dur\": 0.09703520878478014, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.432, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.402, \"ph\": \"X\", \"dur\": 0.08680784744756681, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.524, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.666, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347527.819, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347528.082, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347528.636, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347528.997, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347529.305, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347529.68, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347529.634, \"ph\": \"X\", \"dur\": 0.6191295326576461, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347529.425, \"ph\": \"X\", \"dur\": 0.9102351590119865, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347528.93, \"ph\": \"X\", \"dur\": 1.576510332955811, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347528.769, \"ph\": \"X\", \"dur\": 1.795026638599686, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.121, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.439, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.671, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.983, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.954, \"ph\": \"X\", \"dur\": 0.5265843849477401, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.774, \"ph\": \"X\", \"dur\": 0.7780278051406921, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.406, \"ph\": \"X\", \"dur\": 1.2003429940163548, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347531.261, \"ph\": \"X\", \"dur\": 1.4004001596857474, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347532.864, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347533.104, \"ph\": \"X\", \"dur\": 0.12148109685909493, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347534.273, \"ph\": \"X\", \"dur\": 0.11324931822182567, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347533.056, \"ph\": \"X\", \"dur\": 1.3964089942858593, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347534.79, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347535.071, \"ph\": \"X\", \"dur\": 0.1823463692073889, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347537.305, \"ph\": \"X\", \"dur\": 0.07233987287297235, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347537.241, \"ph\": \"X\", \"dur\": 0.17087176868271053, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.234, \"ph\": \"X\", \"dur\": 11.337653661894711, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347537.745, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347538.096, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347538.495, \"ph\": \"X\", \"dur\": 0.5832090440586529, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347538.061, \"ph\": \"X\", \"dur\": 1.0716279098699626, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347537.895, \"ph\": \"X\", \"dur\": 1.3158373427756176, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347526.046, \"ph\": \"X\", \"dur\": 13.290081885952484, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347539.479, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.051, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.026, \"ph\": \"X\", \"dur\": 0.2496972853305011, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347539.955, \"ph\": \"X\", \"dur\": 0.35246979437762044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.367, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347539.904, \"ph\": \"X\", \"dur\": 0.5530258557219989, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.703, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.679, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.628, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.004, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347540.584, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.272, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.247, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.194, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.545, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.153, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.789, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.763, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.714, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.07, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347541.669, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.325, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.289, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.238, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.593, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.196, \"ph\": \"X\", \"dur\": 0.45998181233710694, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347539.773, \"ph\": \"X\", \"dur\": 2.924027551093041, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347539.717, \"ph\": \"X\", \"dur\": 3.02430558176523, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.778, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347543.159, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347543.134, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347543.081, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347543.422, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347543.039, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347544.753, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347544.724, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347544.666, \"ph\": \"X\", \"dur\": 0.36818500813967997, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.091, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347544.612, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.385, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.358, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.303, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.69, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.255, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.969, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.945, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.894, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.273, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347545.845, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.543, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.516, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.466, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.837, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347546.422, \"ph\": \"X\", \"dur\": 0.47993763933654754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.932, \"ph\": \"X\", \"dur\": 4.02608809713715, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347542.892, \"ph\": \"X\", \"dur\": 4.104165270272462, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.026, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.381, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.354, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.305, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.659, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.265, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.956, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.927, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.878, \"ph\": \"X\", \"dur\": 0.28736390879194534, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.215, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.836, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.477, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.45, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.398, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.761, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.353, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.016, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.988, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.939, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.269, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347548.895, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.535, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.508, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.461, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347550.792, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347549.417, \"ph\": \"X\", \"dur\": 1.4582720579841253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.169, \"ph\": \"X\", \"dur\": 3.7714018550567894, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347547.126, \"ph\": \"X\", \"dur\": 3.858958046016835, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.019, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.432, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.404, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.35, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.727, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.301, \"ph\": \"X\", \"dur\": 0.494156166073649, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.057, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.026, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.945, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.365, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.9, \"ph\": \"X\", \"dur\": 0.525836041435261, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.629, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.606, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.557, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.903, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347552.518, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.161, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.136, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.088, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.45, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.041, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.712, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.686, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.638, \"ph\": \"X\", \"dur\": 0.30831752714135796, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.995, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347553.595, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.181, \"ph\": \"X\", \"dur\": 2.934005464592761, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347551.129, \"ph\": \"X\", \"dur\": 3.027548403652639, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347554.187, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347554.291, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347560.645, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9899017485421223}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347560.915, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.107, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.406, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.533, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.358, \"ph\": \"X\", \"dur\": 0.47095751718679923, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.898, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347562.009, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.864, \"ph\": \"X\", \"dur\": 0.369931143002131, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347562.31, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347562.268, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347562.441, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347562.412, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347563.492, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347563.668, \"ph\": \"X\", \"dur\": 0.036419384273979186, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347563.835, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347564.124, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347564.718, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347565.017, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347565.354, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347565.779, \"ph\": \"X\", \"dur\": 0.5649993519216633, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347565.708, \"ph\": \"X\", \"dur\": 0.6642795912438806, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347565.507, \"ph\": \"X\", \"dur\": 0.9471534389609517, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347564.984, \"ph\": \"X\", \"dur\": 1.5059165949452897, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347564.829, \"ph\": \"X\", \"dur\": 1.7306690965264901, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.094, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.433, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.743, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347568.067, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347568.032, \"ph\": \"X\", \"dur\": 0.5355645070974884, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.866, \"ph\": \"X\", \"dur\": 0.7994803191650909, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.404, \"ph\": \"X\", \"dur\": 1.3160867906131106, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347567.226, \"ph\": \"X\", \"dur\": 1.5468260402941432, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347569.027, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347569.273, \"ph\": \"X\", \"dur\": 0.1364479671086754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347569.473, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347569.22, \"ph\": \"X\", \"dur\": 0.4048538402511521, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347569.918, \"ph\": \"X\", \"dur\": 0.23223593670599052, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347570.214, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347572.501, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347572.442, \"ph\": \"X\", \"dur\": 0.18883201298220711, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.212, \"ph\": \"X\", \"dur\": 11.63275045364894, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347573.003, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347573.32, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347573.727, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347573.288, \"ph\": \"X\", \"dur\": 1.0070209199592737, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347573.108, \"ph\": \"X\", \"dur\": 1.2527270398898867, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347561.037, \"ph\": \"X\", \"dur\": 13.449479054110517, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347574.633, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.209, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.171, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.062, \"ph\": \"X\", \"dur\": 0.3963726137763899, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.516, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.012, \"ph\": \"X\", \"dur\": 0.5714849956964815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.81, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.785, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.733, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347576.086, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347575.69, \"ph\": \"X\", \"dur\": 0.4659685604369391, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347576.347, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347576.323, \"ph\": \"X\", \"dur\": 1.2577159966397466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347576.267, \"ph\": \"X\", \"dur\": 1.3437755005748344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347577.672, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347576.227, \"ph\": \"X\", \"dur\": 1.5176406433074612, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347577.956, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347577.929, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347577.871, \"ph\": \"X\", \"dur\": 0.339249058990491, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.269, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347577.817, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.524, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.497, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.444, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.802, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.399, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347574.87, \"ph\": \"X\", \"dur\": 4.043299997924168, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347574.817, \"ph\": \"X\", \"dur\": 4.141582445896414, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347578.986, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.395, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.366, \"ph\": \"X\", \"dur\": 0.21527348375646596, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.31, \"ph\": \"X\", \"dur\": 0.2968429266166796, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.654, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.264, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.968, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.942, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.891, \"ph\": \"X\", \"dur\": 0.3634454992273128, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.301, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.848, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.616, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.592, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.522, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.893, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347580.475, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.16, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.135, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.083, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.437, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.038, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.708, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.68, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.63, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.969, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347581.592, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.168, \"ph\": \"X\", \"dur\": 2.924027551093041, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347579.095, \"ph\": \"X\", \"dur\": 3.0350318387774298, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.159, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.505, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.481, \"ph\": \"X\", \"dur\": 1.1152812814312392, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.428, \"ph\": \"X\", \"dur\": 1.1988463069913968, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347583.695, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.387, \"ph\": \"X\", \"dur\": 1.3794465413363348, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.003, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347583.973, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347583.916, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.286, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347583.873, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.62, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.589, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.532, \"ph\": \"X\", \"dur\": 0.33675458061556096, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.919, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347584.482, \"ph\": \"X\", \"dur\": 0.5053813187608344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.183, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.158, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.107, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.465, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.064, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.759, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.734, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.662, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.047, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347585.6, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.295, \"ph\": \"X\", \"dur\": 3.8776666338288104, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347582.254, \"ph\": \"X\", \"dur\": 3.9599844202015033, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.245, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.597, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.573, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.519, \"ph\": \"X\", \"dur\": 0.29384955256676354, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.861, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.479, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.202, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.174, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.12, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.494, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.048, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.751, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.727, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.675, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.02, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347587.634, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.292, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.266, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.217, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.549, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347588.174, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347589.726, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347589.699, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347589.648, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347590.032, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347589.593, \"ph\": \"X\", \"dur\": 0.5028868403859043, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.39, \"ph\": \"X\", \"dur\": 3.765165659119464, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347586.347, \"ph\": \"X\", \"dur\": 3.850476819542073, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347590.231, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347590.337, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347596.92, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9819793679793012}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.167, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.37, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.645, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.75, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.61, \"ph\": \"X\", \"dur\": 0.45848512531214886, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.181, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.282, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.124, \"ph\": \"X\", \"dur\": 0.40684942295109616, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.624, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.579, \"ph\": \"X\", \"dur\": 0.13694686278366144, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.795, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.76, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347598.892, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347599.002, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347599.187, \"ph\": \"X\", \"dur\": 0.021452514024398694, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347599.457, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.027, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.353, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.641, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347601.084, \"ph\": \"X\", \"dur\": 0.5368117462849534, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347601.021, \"ph\": \"X\", \"dur\": 0.6268624156199293, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.765, \"ph\": \"X\", \"dur\": 0.9656125789354343, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.316, \"ph\": \"X\", \"dur\": 1.4697466585088037, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347600.146, \"ph\": \"X\", \"dur\": 1.7124594043895005, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347602.428, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347602.769, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347602.998, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347603.388, \"ph\": \"X\", \"dur\": 0.4200701583382256, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347603.341, \"ph\": \"X\", \"dur\": 0.49565285309860707, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347603.134, \"ph\": \"X\", \"dur\": 0.7807717313531154, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347602.735, \"ph\": \"X\", \"dur\": 1.2160582077784146, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347602.57, \"ph\": \"X\", \"dur\": 1.4395634701721496, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347604.26, \"ph\": \"X\", \"dur\": 0.06710146828561918, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347604.542, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347604.738, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347604.465, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347606.307, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347606.615, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347608.799, \"ph\": \"X\", \"dur\": 0.08905287798500389, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347608.739, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.478, \"ph\": \"X\", \"dur\": 11.614041865836963, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347609.218, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347609.533, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347609.862, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347609.501, \"ph\": \"X\", \"dur\": 0.9486501259859098, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347609.32, \"ph\": \"X\", \"dur\": 1.1823827497168584, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347597.297, \"ph\": \"X\", \"dur\": 13.337726422913649, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347610.769, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.274, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.248, \"ph\": \"X\", \"dur\": 0.2594257509927284, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.174, \"ph\": \"X\", \"dur\": 0.36269715571483374, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.595, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.123, \"ph\": \"X\", \"dur\": 0.5385578811474044, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.881, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.858, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.806, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.168, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347611.765, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.42, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.398, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.346, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.676, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.305, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.922, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.897, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.844, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.178, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347612.799, \"ph\": \"X\", \"dur\": 0.4457632856000055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.422, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.396, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.345, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.705, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.302, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347610.991, \"ph\": \"X\", \"dur\": 2.815517741783582, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347610.936, \"ph\": \"X\", \"dur\": 2.905318963281065, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.871, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.238, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.211, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.162, \"ph\": \"X\", \"dur\": 0.31430427524119015, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.524, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.119, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.814, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.787, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.739, \"ph\": \"X\", \"dur\": 2.031503188543058, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347616.848, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.695, \"ph\": \"X\", \"dur\": 2.220085753687772, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.163, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.135, \"ph\": \"X\", \"dur\": 0.23897102831830172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.079, \"ph\": \"X\", \"dur\": 0.34124464169043506, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.472, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.028, \"ph\": \"X\", \"dur\": 0.5058802144358204, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.764, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.739, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.689, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.066, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347617.645, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.34, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.314, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.266, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.641, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.221, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347614.029, \"ph\": \"X\", \"dur\": 4.741753942904591, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347613.973, \"ph\": \"X\", \"dur\": 4.837292464664412, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.846, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.253, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.225, \"ph\": \"X\", \"dur\": 0.24046771534325978, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.169, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.548, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.121, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.846, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.82, \"ph\": \"X\", \"dur\": 0.246953359118078, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.761, \"ph\": \"X\", \"dur\": 0.3335117587281518, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.163, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.715, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.411, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.384, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.337, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.669, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.295, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.943, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.916, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.846, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.203, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347620.803, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.459, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.435, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.387, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.712, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347621.342, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347619.004, \"ph\": \"X\", \"dur\": 3.69931143002131, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347618.955, \"ph\": \"X\", \"dur\": 3.7898609950312716, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347622.816, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.267, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.241, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.185, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.572, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.136, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.878, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.853, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.801, \"ph\": \"X\", \"dur\": 0.36843445597717295, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.25, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347623.756, \"ph\": \"X\", \"dur\": 0.556019229771915, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.501, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.475, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.43, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.82, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.386, \"ph\": \"X\", \"dur\": 0.4996440184984952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.086, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.059, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.006, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.368, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347624.962, \"ph\": \"X\", \"dur\": 0.4746992347491944, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.648, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.602, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.553, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.91, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347625.509, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347622.984, \"ph\": \"X\", \"dur\": 3.0442614087646707, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347622.93, \"ph\": \"X\", \"dur\": 3.1475328134867757, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347626.109, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347626.222, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347632.488, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9812784545403401}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347632.711, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347632.904, \"ph\": \"X\", \"dur\": 0.02344809672434276, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.155, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.256, \"ph\": \"X\", \"dur\": 0.2641652599050956, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.119, \"ph\": \"X\", \"dur\": 0.42431077157560676, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.61, \"ph\": \"X\", \"dur\": 0.05063791101108064, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.692, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.579, \"ph\": \"X\", \"dur\": 0.3360062371030819, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.979, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347633.946, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347634.146, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347634.104, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347634.244, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347634.356, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347635.456, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347635.741, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347636.373, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347636.66, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347636.886, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347637.239, \"ph\": \"X\", \"dur\": 0.522593219547852, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347637.204, \"ph\": \"X\", \"dur\": 0.5839573875711319, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347637.016, \"ph\": \"X\", \"dur\": 0.8655839961007381, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347636.629, \"ph\": \"X\", \"dur\": 1.3051110857634183, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347636.482, \"ph\": \"X\", \"dur\": 1.505667147107797, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347638.509, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347638.787, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347638.998, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347639.325, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347639.295, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347639.118, \"ph\": \"X\", \"dur\": 0.7458490341040941, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347638.757, \"ph\": \"X\", \"dur\": 1.1606807878549665, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347638.618, \"ph\": \"X\", \"dur\": 1.35250617488709, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347640.174, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347640.401, \"ph\": \"X\", \"dur\": 0.11299987038433267, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347640.574, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347640.355, \"ph\": \"X\", \"dur\": 0.32054047117851536, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347640.992, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347641.274, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347643.497, \"ph\": \"X\", \"dur\": 0.09279459554739901, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347643.451, \"ph\": \"X\", \"dur\": 0.1815980256949099, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347632.994, \"ph\": \"X\", \"dur\": 10.804833081009646, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347643.945, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347644.28, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347644.624, \"ph\": \"X\", \"dur\": 0.5340678200725303, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347644.231, \"ph\": \"X\", \"dur\": 0.9793322099975498, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347644.072, \"ph\": \"X\", \"dur\": 1.1898661848416487, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347632.828, \"ph\": \"X\", \"dur\": 12.564687574522818, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347645.565, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.07, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.036, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347645.958, \"ph\": \"X\", \"dur\": 0.38115629568931636, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.419, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347645.912, \"ph\": \"X\", \"dur\": 0.5926880618833873, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.697, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.673, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.624, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.971, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347646.583, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347647.23, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347647.206, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347647.156, \"ph\": \"X\", \"dur\": 1.2794179585016383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347648.507, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347647.117, \"ph\": \"X\", \"dur\": 1.4687488671588316, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347648.816, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347648.789, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347648.733, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.133, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347648.683, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.38, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.358, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.306, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.655, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.262, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347645.786, \"ph\": \"X\", \"dur\": 3.9729557077511397, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347645.735, \"ph\": \"X\", \"dur\": 4.068244781673469, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.83, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.187, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.162, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.112, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.473, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.073, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.764, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.737, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.69, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.039, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347650.648, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.299, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.274, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.227, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.554, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.185, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.811, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.787, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.739, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.102, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347651.699, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.361, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.336, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.29, \"ph\": \"X\", \"dur\": 0.29484734391673556, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.629, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.244, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.978, \"ph\": \"X\", \"dur\": 2.7923190928967325, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347649.938, \"ph\": \"X\", \"dur\": 2.871144609544523, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.841, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347653.18, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347653.153, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347653.109, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347654.383, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347653.062, \"ph\": \"X\", \"dur\": 1.4158659256103139, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347654.756, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347654.732, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347654.664, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.031, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347654.622, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.352, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.322, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.247, \"ph\": \"X\", \"dur\": 0.35920488598993167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.657, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.2, \"ph\": \"X\", \"dur\": 0.5230921152228379, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.93, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.9, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.848, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.223, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347655.802, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.514, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.47, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.417, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.778, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347656.37, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.974, \"ph\": \"X\", \"dur\": 3.9370352191521465, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347652.934, \"ph\": \"X\", \"dur\": 4.015611287962444, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.011, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.394, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.363, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.309, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.672, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.261, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.95, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.924, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.877, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.232, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.834, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.485, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.46, \"ph\": \"X\", \"dur\": 0.23996881966827377, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.412, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.782, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.369, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.037, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.01, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.958, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.289, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347658.918, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.549, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.521, \"ph\": \"X\", \"dur\": 1.1926101110540717, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.472, \"ph\": \"X\", \"dur\": 1.2681928058144532, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347660.794, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347659.429, \"ph\": \"X\", \"dur\": 1.4355723047722615, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.156, \"ph\": \"X\", \"dur\": 3.7761413639691566, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347657.11, \"ph\": \"X\", \"dur\": 3.864445898441681, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347661.006, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347661.112, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347667.571, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9742500155143958}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347667.782, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347667.976, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.229, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.328, \"ph\": \"X\", \"dur\": 0.2674080817925047, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.195, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.683, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.789, \"ph\": \"X\", \"dur\": 0.1883331173072211, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.653, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.067, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.036, \"ph\": \"X\", \"dur\": 0.11324931822182567, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.224, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.194, \"ph\": \"X\", \"dur\": 0.08780563879753885, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.316, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.429, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.557, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347669.808, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347670.363, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347670.68, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347670.96, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347671.312, \"ph\": \"X\", \"dur\": 0.585204626758597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347671.278, \"ph\": \"X\", \"dur\": 0.6672729652937965, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347671.095, \"ph\": \"X\", \"dur\": 0.9309393295239061, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347670.643, \"ph\": \"X\", \"dur\": 1.4148681342603417, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347670.5, \"ph\": \"X\", \"dur\": 1.6411173228665001, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347672.704, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347672.983, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347673.188, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347673.534, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347673.483, \"ph\": \"X\", \"dur\": 0.558014812471859, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347673.304, \"ph\": \"X\", \"dur\": 0.7977341843026399, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347672.95, \"ph\": \"X\", \"dur\": 1.2075769813036523, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347672.811, \"ph\": \"X\", \"dur\": 1.3994023683357755, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347674.441, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347674.654, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347674.796, \"ph\": \"X\", \"dur\": 0.08730674312255284, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347674.607, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347675.223, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347675.524, \"ph\": \"X\", \"dur\": 0.17685851678254272, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347678.686, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347678.631, \"ph\": \"X\", \"dur\": 0.1688761859827665, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347668.076, \"ph\": \"X\", \"dur\": 10.90311552898189, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347679.116, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347679.427, \"ph\": \"X\", \"dur\": 0.07583214259787445, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347679.789, \"ph\": \"X\", \"dur\": 0.5704872043465096, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347679.398, \"ph\": \"X\", \"dur\": 1.0164999377840078, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347679.237, \"ph\": \"X\", \"dur\": 1.2270339126281067, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347667.91, \"ph\": \"X\", \"dur\": 12.722837503493386, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347680.774, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.274, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.247, \"ph\": \"X\", \"dur\": 0.2384721326433157, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.171, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.574, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.126, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.871, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.848, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.776, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.165, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.734, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.428, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.403, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.35, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.684, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.306, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.928, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.903, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.85, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.182, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347682.807, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.418, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.393, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.345, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.715, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.304, \"ph\": \"X\", \"dur\": 0.4789398479865755, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347681.007, \"ph\": \"X\", \"dur\": 2.8247473117708237, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347680.938, \"ph\": \"X\", \"dur\": 2.954210739429695, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347683.919, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.275, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.25, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.198, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.54, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.156, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.828, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.802, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.753, \"ph\": \"X\", \"dur\": 0.3245316365784035, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347685.124, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.711, \"ph\": \"X\", \"dur\": 1.5844926637555872, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347686.561, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347686.533, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347686.475, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347686.889, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347686.427, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.174, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.151, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.095, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.473, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.05, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.744, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.715, \"ph\": \"X\", \"dur\": 0.24271274588069688, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.666, \"ph\": \"X\", \"dur\": 0.31954267982854334, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.032, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347687.624, \"ph\": \"X\", \"dur\": 0.47444978691170137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.068, \"ph\": \"X\", \"dur\": 4.102169687572518, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347684.024, \"ph\": \"X\", \"dur\": 4.183240234757745, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.237, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.685, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.66, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.61, \"ph\": \"X\", \"dur\": 0.2821255042045921, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.937, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.566, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.212, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.183, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.132, \"ph\": \"X\", \"dur\": 0.29484734391673556, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.473, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.088, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.738, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.711, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.66, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.985, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347689.616, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.236, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.211, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.16, \"ph\": \"X\", \"dur\": 0.30382746606648386, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.509, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.118, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.763, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.738, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.689, \"ph\": \"X\", \"dur\": 0.32677666711584064, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347691.063, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347690.645, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.475, \"ph\": \"X\", \"dur\": 2.7080057238240958, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347688.434, \"ph\": \"X\", \"dur\": 2.789575166684309, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.204, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.621, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.582, \"ph\": \"X\", \"dur\": 0.2514434201929521, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.52, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.922, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.471, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.292, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.264, \"ph\": \"X\", \"dur\": 0.26241912504264453, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.202, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.617, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.15, \"ph\": \"X\", \"dur\": 0.5343172679100233, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.968, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.94, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.887, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.297, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347694.839, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.553, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.528, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.482, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.823, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.44, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.074, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.05, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.003, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.337, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347695.96, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.359, \"ph\": \"X\", \"dur\": 3.101634411388063, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347693.311, \"ph\": \"X\", \"dur\": 3.1899389458605873, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.53, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347696.639, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347702.759, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9728490815498402}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347702.996, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.227, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.524, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.637, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.49, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.998, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.083, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.966, \"ph\": \"X\", \"dur\": 0.3429907765528861, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.376, \"ph\": \"X\", \"dur\": 0.033924905899049104, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.345, \"ph\": \"X\", \"dur\": 0.09528907392232909, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.504, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.474, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.594, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.732, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347704.858, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347705.101, \"ph\": \"X\", \"dur\": 0.09354293905987804, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347706.672, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347706.996, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347707.24, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347707.646, \"ph\": \"X\", \"dur\": 0.6166350542827159, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347707.611, \"ph\": \"X\", \"dur\": 0.679246461493461, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347707.376, \"ph\": \"X\", \"dur\": 0.9942990802471302, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347706.962, \"ph\": \"X\", \"dur\": 1.4430557398970518, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347706.815, \"ph\": \"X\", \"dur\": 1.6443601447539093, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347708.983, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.273, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.49, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.849, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.817, \"ph\": \"X\", \"dur\": 0.5832090440586529, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.615, \"ph\": \"X\", \"dur\": 0.8720696398755563, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.241, \"ph\": \"X\", \"dur\": 1.2986254419886, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347709.098, \"ph\": \"X\", \"dur\": 1.510406656020164, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347710.824, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347711.059, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347711.179, \"ph\": \"X\", \"dur\": 0.08780563879753885, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347710.995, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347711.619, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347711.903, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347713.956, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347713.906, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.338, \"ph\": \"X\", \"dur\": 10.936292091368461, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347714.409, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347714.687, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347715.017, \"ph\": \"X\", \"dur\": 0.5632532170592123, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347714.657, \"ph\": \"X\", \"dur\": 0.9733454618977175, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347714.507, \"ph\": \"X\", \"dur\": 1.1821333018793652, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347703.113, \"ph\": \"X\", \"dur\": 12.72084192079344, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347715.996, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.554, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.523, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.442, \"ph\": \"X\", \"dur\": 0.4073483186260822, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.914, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.394, \"ph\": \"X\", \"dur\": 0.5896946878334711, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.215, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.19, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.135, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.501, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.088, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.779, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.736, \"ph\": \"X\", \"dur\": 0.2626685728801375, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.687, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347718.071, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347717.644, \"ph\": \"X\", \"dur\": 1.516143956282503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.358, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.333, \"ph\": \"X\", \"dur\": 0.25493568991785426, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.28, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.672, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.238, \"ph\": \"X\", \"dur\": 0.5058802144358204, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.945, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.914, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.863, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.243, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347719.817, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.238, \"ph\": \"X\", \"dur\": 4.109653122697308, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347716.177, \"ph\": \"X\", \"dur\": 4.213922318769385, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.418, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.878, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.84, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.781, \"ph\": \"X\", \"dur\": 0.34573470276530915, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.183, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.73, \"ph\": \"X\", \"dur\": 0.5642510084091842, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.535, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.508, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.457, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.815, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.412, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.105, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.079, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.031, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.374, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347721.987, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.685, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.639, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.574, \"ph\": \"X\", \"dur\": 0.31954267982854334, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.943, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347722.525, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.233, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.206, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.158, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.496, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.113, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.604, \"ph\": \"X\", \"dur\": 3.0125815334030586, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347720.55, \"ph\": \"X\", \"dur\": 3.1026322027380346, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.684, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347724.047, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347724.022, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.971, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347724.296, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.925, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347725.592, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347725.564, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347725.505, \"ph\": \"X\", \"dur\": 0.3335117587281518, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347725.895, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347725.451, \"ph\": \"X\", \"dur\": 0.5091230363232295, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.176, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.149, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.096, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.465, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.047, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.722, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.696, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.65, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.995, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347726.61, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.248, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.225, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.178, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.524, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.13, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.82, \"ph\": \"X\", \"dur\": 3.827777066330209, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347723.778, \"ph\": \"X\", \"dur\": 3.9223177967400593, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.732, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.109, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.081, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.024, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.396, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.978, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.668, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.643, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.597, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.953, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347728.555, \"ph\": \"X\", \"dur\": 0.45798622963716284, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.199, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.175, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.127, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.446, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.087, \"ph\": \"X\", \"dur\": 0.41957126266323963, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.695, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.67, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.622, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.941, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347729.58, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347730.194, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347730.169, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347730.121, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347731.389, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347730.077, \"ph\": \"X\", \"dur\": 1.3964089942858593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.881, \"ph\": \"X\", \"dur\": 3.6519163408976385, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347727.834, \"ph\": \"X\", \"dur\": 3.73747694915774, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347731.604, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347731.734, \"ph\": \"X\", \"dur\": 0.06710146828561918, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.334, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9665270904344345}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.571, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.754, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.045, \"ph\": \"X\", \"dur\": 0.06211251153575901, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.159, \"ph\": \"X\", \"dur\": 0.2596751988302214, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.999, \"ph\": \"X\", \"dur\": 0.46122905152457194, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.534, \"ph\": \"X\", \"dur\": 0.061613615860773, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.628, \"ph\": \"X\", \"dur\": 0.1721190078701756, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.492, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.891, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347739.862, \"ph\": \"X\", \"dur\": 0.11499545308427674, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.036, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.007, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.125, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.238, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.389, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347740.623, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.208, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.562, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.787, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347742.177, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347742.143, \"ph\": \"X\", \"dur\": 0.5535247513969849, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.92, \"ph\": \"X\", \"dur\": 0.8551071869260316, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.506, \"ph\": \"X\", \"dur\": 1.3031155030634742, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347741.333, \"ph\": \"X\", \"dur\": 1.5343536484194926, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347743.366, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347743.689, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347743.902, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347744.239, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347744.199, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347744.012, \"ph\": \"X\", \"dur\": 0.7682993394784648, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347743.659, \"ph\": \"X\", \"dur\": 1.1771443451295052, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347743.496, \"ph\": \"X\", \"dur\": 1.392667276723464, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347745.127, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347745.347, \"ph\": \"X\", \"dur\": 0.09329349122238503, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347745.507, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347745.302, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347745.949, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347746.226, \"ph\": \"X\", \"dur\": 0.19407041756956028, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347748.386, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347748.336, \"ph\": \"X\", \"dur\": 0.15266207654572095, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.868, \"ph\": \"X\", \"dur\": 10.986680554542048, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347749.985, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347750.338, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347750.685, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347750.303, \"ph\": \"X\", \"dur\": 0.9748421489226756, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347750.146, \"ph\": \"X\", \"dur\": 1.1841288845793094, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347738.679, \"ph\": \"X\", \"dur\": 12.765991979379674, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347751.627, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.147, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.108, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.035, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.471, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347751.989, \"ph\": \"X\", \"dur\": 0.5510302730220549, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.746, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.721, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.673, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.024, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347752.63, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.269, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.243, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.194, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.549, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.156, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.785, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.761, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.71, \"ph\": \"X\", \"dur\": 0.3110614533537811, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.066, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347753.667, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.299, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.276, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.228, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.572, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.184, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347751.833, \"ph\": \"X\", \"dur\": 2.8397141820204044, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347751.779, \"ph\": \"X\", \"dur\": 2.938994421342621, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.764, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.117, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.094, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.047, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.394, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.003, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.674, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.651, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.603, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.923, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347755.559, \"ph\": \"X\", \"dur\": 0.42979862400045293, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.134, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.107, \"ph\": \"X\", \"dur\": 0.24046771534325978, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.051, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.435, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347756.999, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.723, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.697, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.643, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.006, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347757.594, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.273, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.247, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.2, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.543, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.157, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.916, \"ph\": \"X\", \"dur\": 3.7496998931948973, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347754.865, \"ph\": \"X\", \"dur\": 3.837754979829929, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.731, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.084, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.061, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.01, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.384, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.967, \"ph\": \"X\", \"dur\": 0.4789398479865755, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.655, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.629, \"ph\": \"X\", \"dur\": 0.22126023185629817, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.581, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.928, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347759.537, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.179, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.154, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.107, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.479, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.064, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.725, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.699, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.653, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.002, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347760.61, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.246, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.224, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.176, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.499, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.133, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.875, \"ph\": \"X\", \"dur\": 2.74317786891061, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347758.83, \"ph\": \"X\", \"dur\": 2.8227517290708795, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.698, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347762.038, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347762.015, \"ph\": \"X\", \"dur\": 1.666561002290787, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.966, \"ph\": \"X\", \"dur\": 1.7453865189385775, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347763.791, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.926, \"ph\": \"X\", \"dur\": 1.9304768143583897, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.098, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.072, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.021, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.427, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347763.979, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.692, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.665, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.614, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.962, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347764.568, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.234, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.205, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.157, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.493, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.099, \"ph\": \"X\", \"dur\": 0.4564895426122048, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.748, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.723, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.673, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347766.02, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347765.628, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.842, \"ph\": \"X\", \"dur\": 4.293995074604641, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347761.801, \"ph\": \"X\", \"dur\": 4.372571143414939, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347766.203, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347766.301, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347772.717, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.964591144645116}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347772.974, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.186, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.442, \"ph\": \"X\", \"dur\": 0.0586202418108569, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.553, \"ph\": \"X\", \"dur\": 0.25443679424286825, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.411, \"ph\": \"X\", \"dur\": 0.4200701583382256, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.899, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.004, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.868, \"ph\": \"X\", \"dur\": 0.37217617353956806, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.305, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.275, \"ph\": \"X\", \"dur\": 0.09828244797224518, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.436, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.405, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.524, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.637, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347774.805, \"ph\": \"X\", \"dur\": 0.020454722674426662, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347775.077, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347775.665, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347777.041, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347777.287, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347778.601, \"ph\": \"X\", \"dur\": 0.556019229771915, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347778.564, \"ph\": \"X\", \"dur\": 0.6203767718451111, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347778.327, \"ph\": \"X\", \"dur\": 0.9446589605860216, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347777.006, \"ph\": \"X\", \"dur\": 2.322359367059905, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347776.83, \"ph\": \"X\", \"dur\": 2.553846960253417, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347779.899, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.208, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.45, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.814, \"ph\": \"X\", \"dur\": 0.39712095728886887, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.787, \"ph\": \"X\", \"dur\": 0.4505027945123726, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.58, \"ph\": \"X\", \"dur\": 0.7251448635921744, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.175, \"ph\": \"X\", \"dur\": 1.1883694978166905, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347780.01, \"ph\": \"X\", \"dur\": 1.4058880121105934, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347781.68, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347781.902, \"ph\": \"X\", \"dur\": 0.13370404089625235, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347782.097, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347781.849, \"ph\": \"X\", \"dur\": 0.3946264789139388, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347782.519, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347782.828, \"ph\": \"X\", \"dur\": 0.18309471271986794, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347785.004, \"ph\": \"X\", \"dur\": 0.08755619096004584, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347784.955, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.294, \"ph\": \"X\", \"dur\": 12.017897914738143, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347785.449, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347785.821, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347786.168, \"ph\": \"X\", \"dur\": 0.5654982475966494, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347785.764, \"ph\": \"X\", \"dur\": 1.0274756426337004, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347785.593, \"ph\": \"X\", \"dur\": 1.266446670952002, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347773.102, \"ph\": \"X\", \"dur\": 13.907964179422667, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.169, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.654, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.628, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.552, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.962, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.504, \"ph\": \"X\", \"dur\": 0.5240899065728101, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.253, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.23, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.181, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.523, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.139, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.789, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.765, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.717, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347789.046, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347788.674, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347789.279, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347789.255, \"ph\": \"X\", \"dur\": 1.3515083835371178, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347789.209, \"ph\": \"X\", \"dur\": 1.4295855566724291, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347790.701, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347789.166, \"ph\": \"X\", \"dur\": 1.606194625617479, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347790.98, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347790.953, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347790.894, \"ph\": \"X\", \"dur\": 0.3335117587281518, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.284, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347790.844, \"ph\": \"X\", \"dur\": 0.5066285579482994, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.371, \"ph\": \"X\", \"dur\": 4.024092514437206, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347787.318, \"ph\": \"X\", \"dur\": 4.149315328858696, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.501, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.904, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.879, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.831, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.167, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.79, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.456, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.431, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.384, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.735, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.342, \"ph\": \"X\", \"dur\": 0.4594829166621209, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.0, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.976, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.928, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.251, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347792.884, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.524, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.5, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.453, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.768, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.409, \"ph\": \"X\", \"dur\": 0.4198207105007326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.026, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.002, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.955, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.281, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347793.913, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.673, \"ph\": \"X\", \"dur\": 2.7234714897486625, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347791.611, \"ph\": \"X\", \"dur\": 2.8230011769083725, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.463, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.807, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.782, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.737, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347795.068, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.695, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347795.337, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347795.313, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347795.264, \"ph\": \"X\", \"dur\": 1.1147823857562533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347796.428, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347795.225, \"ph\": \"X\", \"dur\": 1.2666961187894952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347796.723, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347796.698, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347796.635, \"ph\": \"X\", \"dur\": 0.3597037816649176, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.048, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347796.567, \"ph\": \"X\", \"dur\": 0.5482863468096318, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.339, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.31, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.258, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.635, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.191, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.905, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.881, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.834, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.182, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347797.792, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.606, \"ph\": \"X\", \"dur\": 3.695320264621422, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347794.566, \"ph\": \"X\", \"dur\": 3.7723996464067615, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.373, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.726, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.7, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.65, \"ph\": \"X\", \"dur\": 0.3225360538784594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.025, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.608, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.3, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.274, \"ph\": \"X\", \"dur\": 0.22026244050632612, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.226, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.595, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.184, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.866, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.839, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.786, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.115, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347799.74, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.364, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.342, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.294, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.641, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.25, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.889, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.864, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.817, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347801.179, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347800.774, \"ph\": \"X\", \"dur\": 0.4746992347491944, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.51, \"ph\": \"X\", \"dur\": 3.773397437756733, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347798.468, \"ph\": \"X\", \"dur\": 3.862450315741737, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347802.364, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347802.494, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347808.671, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9588294353593853}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347808.902, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.095, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.381, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.472, \"ph\": \"X\", \"dur\": 0.2641652599050956, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.347, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.827, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.917, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.796, \"ph\": \"X\", \"dur\": 0.3577081989649736, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.22, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.188, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.353, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.323, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.455, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.563, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.729, \"ph\": \"X\", \"dur\": 0.018958035649468612, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347810.953, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347811.572, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347811.912, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347812.185, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347812.563, \"ph\": \"X\", \"dur\": 0.5298272068351492, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347812.526, \"ph\": \"X\", \"dur\": 0.5936858532333592, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347812.314, \"ph\": \"X\", \"dur\": 0.8962660801123781, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347811.878, \"ph\": \"X\", \"dur\": 1.3881772156485899, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347811.698, \"ph\": \"X\", \"dur\": 1.6476029666413183, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347813.847, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.123, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.329, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.725, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.653, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.455, \"ph\": \"X\", \"dur\": 0.8097076805023042, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347814.092, \"ph\": \"X\", \"dur\": 1.2235416429032044, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347813.952, \"ph\": \"X\", \"dur\": 1.4355723047722615, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347815.58, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347815.795, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347815.973, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347815.747, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347816.371, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347816.642, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347818.943, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347818.892, \"ph\": \"X\", \"dur\": 0.17660906894504974, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.21, \"ph\": \"X\", \"dur\": 10.045513863680927, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347819.394, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347820.755, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347821.091, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347820.719, \"ph\": \"X\", \"dur\": 0.9763388359476337, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347820.531, \"ph\": \"X\", \"dur\": 1.2165571034534004, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347809.008, \"ph\": \"X\", \"dur\": 12.882983015163896, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.062, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.57, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.546, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.462, \"ph\": \"X\", \"dur\": 0.369182799489652, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.917, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.414, \"ph\": \"X\", \"dur\": 0.5839573875711319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.238, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.215, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.166, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.533, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.121, \"ph\": \"X\", \"dur\": 0.4756970260991664, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.793, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.768, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.706, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.073, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347823.664, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.317, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.294, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.239, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.595, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.196, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.83, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.805, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.756, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.083, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347824.712, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.278, \"ph\": \"X\", \"dur\": 2.910307920030925, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347822.224, \"ph\": \"X\", \"dur\": 3.0078420244906914, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.258, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.627, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.602, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.551, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.879, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.506, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.17, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.147, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.096, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.421, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.053, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.687, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.662, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.614, \"ph\": \"X\", \"dur\": 1.2784201671516664, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347827.95, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347826.57, \"ph\": \"X\", \"dur\": 1.449790831509363, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.275, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.232, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.174, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.577, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.124, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.861, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.837, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.783, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.142, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347828.738, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.421, \"ph\": \"X\", \"dur\": 3.853969089266975, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347825.376, \"ph\": \"X\", \"dur\": 3.9457658934644018, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.352, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.745, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.723, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.671, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.013, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.632, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.29, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.266, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.215, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.566, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.172, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.811, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.786, \"ph\": \"X\", \"dur\": 0.2222580232062702, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.742, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.081, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347830.697, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.332, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.306, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.258, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.614, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.216, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.866, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.839, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.792, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.128, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347831.75, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.533, \"ph\": \"X\", \"dur\": 2.710999097874012, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347829.489, \"ph\": \"X\", \"dur\": 2.7913213015467604, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.309, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.651, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.626, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.578, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347833.781, \"ph\": \"X\", \"dur\": 0.051136806686066655, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.536, \"ph\": \"X\", \"dur\": 1.3497622486746668, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.113, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.085, \"ph\": \"X\", \"dur\": 0.25767961613027734, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.033, \"ph\": \"X\", \"dur\": 0.34024685034046304, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.421, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347833.985, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.698, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.668, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.614, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.968, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347834.568, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.233, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.208, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.158, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.485, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.112, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.733, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.71, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.664, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347836.035, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347835.62, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.445, \"ph\": \"X\", \"dur\": 3.707044312983593, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347832.405, \"ph\": \"X\", \"dur\": 3.7838742469314397, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347836.22, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347836.316, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347842.713, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9564869441059946}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347842.934, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.115, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.426, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.535, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.394, \"ph\": \"X\", \"dur\": 0.4028582575512081, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.871, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.979, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.837, \"ph\": \"X\", \"dur\": 0.3577081989649736, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.263, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.232, \"ph\": \"X\", \"dur\": 0.10426919607207738, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.403, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.372, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.516, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.625, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.761, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347844.983, \"ph\": \"X\", \"dur\": 0.06735091612311218, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347845.596, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347845.908, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347846.167, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347847.558, \"ph\": \"X\", \"dur\": 0.6054099015955307, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347847.494, \"ph\": \"X\", \"dur\": 0.7169130849549052, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347847.262, \"ph\": \"X\", \"dur\": 1.0369546604584345, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347845.857, \"ph\": \"X\", \"dur\": 2.4772664741430632, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347845.708, \"ph\": \"X\", \"dur\": 2.681314805212344, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347848.925, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.235, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.466, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.858, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.801, \"ph\": \"X\", \"dur\": 0.5058802144358204, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.603, \"ph\": \"X\", \"dur\": 0.770544370015902, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.202, \"ph\": \"X\", \"dur\": 1.2265350169531206, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347849.055, \"ph\": \"X\", \"dur\": 1.4275899739724853, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347850.7, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347850.946, \"ph\": \"X\", \"dur\": 0.11823827497168582, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347851.121, \"ph\": \"X\", \"dur\": 0.06261140721074503, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347850.895, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347851.533, \"ph\": \"X\", \"dur\": 0.19656489594449036, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347851.787, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347853.853, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347853.798, \"ph\": \"X\", \"dur\": 0.17112121652020354, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.246, \"ph\": \"X\", \"dur\": 10.902117737631919, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347854.292, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347854.611, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347854.951, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347854.578, \"ph\": \"X\", \"dur\": 0.9638664440729832, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347854.428, \"ph\": \"X\", \"dur\": 1.1646719532548548, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347843.047, \"ph\": \"X\", \"dur\": 12.657981065745203, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347855.841, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.329, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.303, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.244, \"ph\": \"X\", \"dur\": 0.3599532295024107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.662, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.193, \"ph\": \"X\", \"dur\": 0.5403040160098556, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.959, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.936, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.874, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.251, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.831, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.525, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.499, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.436, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.809, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.393, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347858.06, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347858.036, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.986, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.301, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347857.942, \"ph\": \"X\", \"dur\": 1.443554635572038, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.598, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.57, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.509, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.903, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347859.459, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.056, \"ph\": \"X\", \"dur\": 3.9579888375015595, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347856.004, \"ph\": \"X\", \"dur\": 4.053277911423888, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.087, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.458, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.435, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.387, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.777, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.348, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.105, \"ph\": \"X\", \"dur\": 0.02095361834941268, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.064, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.996, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.385, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.956, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.662, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.623, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.577, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.921, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347861.538, \"ph\": \"X\", \"dur\": 0.4442665985750474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.191, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.168, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.12, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.439, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.079, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.721, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.698, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.652, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.988, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347862.605, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.249, \"ph\": \"X\", \"dur\": 2.857424978482408, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347860.202, \"ph\": \"X\", \"dur\": 2.9419877953925373, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.173, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.561, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.532, \"ph\": \"X\", \"dur\": 0.2611718858551795, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.452, \"ph\": \"X\", \"dur\": 0.370430038677117, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.882, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.411, \"ph\": \"X\", \"dur\": 0.5403040160098556, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347864.19, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347864.163, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347864.108, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347865.38, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347864.057, \"ph\": \"X\", \"dur\": 1.3946628594234083, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347865.68, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347865.651, \"ph\": \"X\", \"dur\": 0.26466415558008155, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347865.593, \"ph\": \"X\", \"dur\": 0.3512225551901554, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.001, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347865.541, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.347, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.319, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.24, \"ph\": \"X\", \"dur\": 0.370180590839624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.664, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.195, \"ph\": \"X\", \"dur\": 0.5642510084091842, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.958, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.93, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.881, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.235, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347866.838, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.319, \"ph\": \"X\", \"dur\": 4.035567114961885, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347863.277, \"ph\": \"X\", \"dur\": 4.118383797009564, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.427, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.858, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.828, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.771, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.17, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.721, \"ph\": \"X\", \"dur\": 0.5121164103731456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.46, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.433, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.381, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.749, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.334, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.999, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.975, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.926, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.259, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347868.885, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.508, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.482, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.433, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.774, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.391, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347870.044, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347870.018, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.971, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347870.324, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347869.929, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.602, \"ph\": \"X\", \"dur\": 2.866155652794663, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347867.55, \"ph\": \"X\", \"dur\": 2.95296350024223, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347871.463, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347871.584, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347877.639, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9511715639872224}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347877.845, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.017, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.293, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.384, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.262, \"ph\": \"X\", \"dur\": 0.3846485654142185, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.742, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.845, \"ph\": \"X\", \"dur\": 0.17511238192009168, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.69, \"ph\": \"X\", \"dur\": 0.38714304378914854, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.139, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.11, \"ph\": \"X\", \"dur\": 0.10875925714695153, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.281, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.253, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.384, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.495, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.647, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347879.879, \"ph\": \"X\", \"dur\": 0.06735091612311218, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347880.451, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347880.826, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347881.097, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347881.456, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347881.422, \"ph\": \"X\", \"dur\": 0.5909419270209362, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347881.219, \"ph\": \"X\", \"dur\": 0.8817981055377836, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347880.768, \"ph\": \"X\", \"dur\": 1.3644796710867542, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347880.591, \"ph\": \"X\", \"dur\": 1.5957178164427728, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347882.695, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347882.982, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347883.243, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347883.533, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347883.503, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347883.35, \"ph\": \"X\", \"dur\": 0.7263921027796396, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347882.952, \"ph\": \"X\", \"dur\": 1.1591841008300088, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347882.81, \"ph\": \"X\", \"dur\": 1.3704664191865863, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347884.398, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347884.631, \"ph\": \"X\", \"dur\": 0.09952968715971022, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347884.789, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347884.576, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347885.246, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347885.52, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347887.756, \"ph\": \"X\", \"dur\": 0.07533324692288844, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347887.699, \"ph\": \"X\", \"dur\": 0.16563336409535737, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347878.125, \"ph\": \"X\", \"dur\": 9.937502950046456, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347888.213, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347888.528, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347889.864, \"ph\": \"X\", \"dur\": 0.5610081865217752, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347888.497, \"ph\": \"X\", \"dur\": 1.9858542342818373, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347888.32, \"ph\": \"X\", \"dur\": 2.214597901262926, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347877.952, \"ph\": \"X\", \"dur\": 12.741047195630374, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347890.896, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.435, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.41, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.336, \"ph\": \"X\", \"dur\": 0.39537482242641786, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.79, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.286, \"ph\": \"X\", \"dur\": 0.585952970271076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.112, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.085, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.038, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.389, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.974, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.66, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.634, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.581, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.913, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347892.537, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.178, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.153, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.1, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.452, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.058, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.702, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.673, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.623, \"ph\": \"X\", \"dur\": 0.28861114797941034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.96, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347893.58, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.143, \"ph\": \"X\", \"dur\": 2.922530864068083, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347891.09, \"ph\": \"X\", \"dur\": 3.0130804290780446, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.145, \"ph\": \"X\", \"dur\": 0.02095361834941268, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.492, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.465, \"ph\": \"X\", \"dur\": 0.20105495701936452, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.415, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.759, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.371, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.05, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.023, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.975, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.298, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.931, \"ph\": \"X\", \"dur\": 0.4292997283254669, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.584, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.557, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.51, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.829, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347895.463, \"ph\": \"X\", \"dur\": 1.3707158670240795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347897.092, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347897.064, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347897.006, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347897.386, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347896.953, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347906.762, \"ph\": \"X\", \"dur\": 0.13744575845864745, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347906.646, \"ph\": \"X\", \"dur\": 1.2452436047650963, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347906.343, \"ph\": \"X\", \"dur\": 1.6490996536662765, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347908.15, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347905.894, \"ph\": \"X\", \"dur\": 2.4747719957681333, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.283, \"ph\": \"X\", \"dur\": 14.283632622687135, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347894.242, \"ph\": \"X\", \"dur\": 14.439288073282773, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347908.775, \"ph\": \"X\", \"dur\": 0.10002858283469623, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.804, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.725, \"ph\": \"X\", \"dur\": 0.5602598430092961, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.608, \"ph\": \"X\", \"dur\": 0.7176614284673842, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347910.437, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.52, \"ph\": \"X\", \"dur\": 1.0683850879825536, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347911.044, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347910.984, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347910.89, \"ph\": \"X\", \"dur\": 0.58545407459609, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347911.574, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347910.798, \"ph\": \"X\", \"dur\": 0.8977627671373362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.059, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.002, \"ph\": \"X\", \"dur\": 0.3761673389394562, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347911.93, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.465, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347911.858, \"ph\": \"X\", \"dur\": 0.7019462147053248, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.848, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.821, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.748, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.097, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347912.683, \"ph\": \"X\", \"dur\": 0.47644536961164546, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.383, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.359, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.295, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.649, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.249, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.233, \"ph\": \"X\", \"dur\": 4.562650395584611, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347909.119, \"ph\": \"X\", \"dur\": 4.712568545917908, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.871, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.353, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.327, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.259, \"ph\": \"X\", \"dur\": 0.339498506827984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.649, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.209, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347916.956, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347916.931, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347916.845, \"ph\": \"X\", \"dur\": 0.5939353010708522, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347917.49, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347916.771, \"ph\": \"X\", \"dur\": 0.8368974947890421, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347917.815, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347917.788, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347917.734, \"ph\": \"X\", \"dur\": 0.30682084011639993, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.093, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347917.694, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.348, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.322, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.275, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.616, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.232, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.881, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.844, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.799, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347919.139, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347918.755, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347914.046, \"ph\": \"X\", \"dur\": 5.209718086041474, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347913.989, \"ph\": \"X\", \"dur\": 5.305506055638789, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347919.327, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347919.512, \"ph\": \"X\", \"dur\": 0.15590489843313005, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347928.506, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9485225175144527}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.056, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.414, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.937, \"ph\": \"X\", \"dur\": 0.13694686278366144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347930.146, \"ph\": \"X\", \"dur\": 0.6947122274180275, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.845, \"ph\": \"X\", \"dur\": 1.051173187195536, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.063, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.193, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347930.973, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.512, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.463, \"ph\": \"X\", \"dur\": 0.14567753709591674, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.699, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.639, \"ph\": \"X\", \"dur\": 0.13120956252132226, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347931.81, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347932.052, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347932.422, \"ph\": \"X\", \"dur\": 0.033924905899049104, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347932.981, \"ph\": \"X\", \"dur\": 0.1444302979084517, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347934.162, \"ph\": \"X\", \"dur\": 0.08780563879753885, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347934.72, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347935.335, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347936.161, \"ph\": \"X\", \"dur\": 1.0609016528577633, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347936.039, \"ph\": \"X\", \"dur\": 1.2215460602032606, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347935.596, \"ph\": \"X\", \"dur\": 2.8856125841191176, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347934.654, \"ph\": \"X\", \"dur\": 3.9036092089280836, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347934.372, \"ph\": \"X\", \"dur\": 4.272293112742749, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347939.55, \"ph\": \"X\", \"dur\": 0.04964011966110861, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347939.892, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347940.182, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347940.579, \"ph\": \"X\", \"dur\": 0.5570170211218871, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347940.506, \"ph\": \"X\", \"dur\": 0.6540522299066672, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347940.316, \"ph\": \"X\", \"dur\": 0.9349304949237943, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347939.859, \"ph\": \"X\", \"dur\": 1.4485435923218979, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347939.694, \"ph\": \"X\", \"dur\": 1.6817773203778603, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347941.695, \"ph\": \"X\", \"dur\": 0.11898661848416485, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347942.167, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347942.466, \"ph\": \"X\", \"dur\": 0.11973496199664388, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347942.021, \"ph\": \"X\", \"dur\": 0.6420787337070029, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347943.184, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347943.633, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347946.71, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347946.615, \"ph\": \"X\", \"dur\": 0.35820709463995964, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.526, \"ph\": \"X\", \"dur\": 17.791118665676326, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347947.55, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347947.949, \"ph\": \"X\", \"dur\": 0.06111472018578698, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347948.35, \"ph\": \"X\", \"dur\": 0.7226503852172445, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347947.918, \"ph\": \"X\", \"dur\": 1.230775630190502, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347947.743, \"ph\": \"X\", \"dur\": 1.4662543887839015, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347929.278, \"ph\": \"X\", \"dur\": 20.187314592634156, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347949.866, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.677, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.642, \"ph\": \"X\", \"dur\": 0.33825126764051894, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.538, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.085, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.474, \"ph\": \"X\", \"dur\": 0.6879771358057163, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.447, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.422, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.371, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.704, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.329, \"ph\": \"X\", \"dur\": 0.44202156803761034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.987, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.96, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.891, \"ph\": \"X\", \"dur\": 0.33251396737817973, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.272, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347951.854, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.512, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.489, \"ph\": \"X\", \"dur\": 0.2187657534813681, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.44, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.809, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347952.397, \"ph\": \"X\", \"dur\": 0.47395089123671535, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.192, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.166, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.087, \"ph\": \"X\", \"dur\": 0.38115629568931636, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.514, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.044, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.268, \"ph\": \"X\", \"dur\": 4.379555682864743, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347950.185, \"ph\": \"X\", \"dur\": 4.5456879426350865, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347954.8, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.385, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.349, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.292, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.652, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.247, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.972, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.944, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.895, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.299, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.85, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.56, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.533, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.484, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.828, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.439, \"ph\": \"X\", \"dur\": 0.45249837721231667, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.082, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.056, \"ph\": \"X\", \"dur\": 0.22175912753128418, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.006, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.354, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347956.963, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.606, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.579, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.53, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.877, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347957.488, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.112, \"ph\": \"X\", \"dur\": 2.887109271144076, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347955.054, \"ph\": \"X\", \"dur\": 2.992875154241111, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.117, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.514, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.487, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.432, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.8, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.389, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347959.124, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347959.099, \"ph\": \"X\", \"dur\": 0.21477458808147995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347959.026, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347959.398, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.978, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347960.729, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347960.699, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347960.648, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.001, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347960.603, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.272, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.243, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.192, \"ph\": \"X\", \"dur\": 0.31904378415355733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.561, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.146, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.83, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.802, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.751, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.119, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347961.704, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.284, \"ph\": \"X\", \"dur\": 3.9911653998881294, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347958.227, \"ph\": \"X\", \"dur\": 4.086953369485444, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.346, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.702, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.679, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.63, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.965, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.589, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.275, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.25, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.202, \"ph\": \"X\", \"dur\": 0.39337923972647376, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.638, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.161, \"ph\": \"X\", \"dur\": 0.5368117462849534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.883, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.858, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.809, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.153, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347963.768, \"ph\": \"X\", \"dur\": 0.4467610769499775, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.401, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.378, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.329, \"ph\": \"X\", \"dur\": 0.3973704051263619, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.804, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.287, \"ph\": \"X\", \"dur\": 0.584705731083611, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.089, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.062, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.007, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.371, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347964.956, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.497, \"ph\": \"X\", \"dur\": 2.9943718412660694, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347962.446, \"ph\": \"X\", \"dur\": 3.0971443503131884, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.574, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347965.741, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347973.932, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9435646196685837}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.198, \"ph\": \"X\", \"dur\": 0.06984539449804227, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.483, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.846, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.972, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.798, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347975.443, \"ph\": \"X\", \"dur\": 0.09454073040985007, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347975.566, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347975.385, \"ph\": \"X\", \"dur\": 0.40560218376363116, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347975.891, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347975.851, \"ph\": \"X\", \"dur\": 0.12721839712143412, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347976.043, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347976.01, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347976.152, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347976.331, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347976.633, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347977.01, \"ph\": \"X\", \"dur\": 0.11599324443424877, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347977.75, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.082, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.42, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.942, \"ph\": \"X\", \"dur\": 0.6520566472067232, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.869, \"ph\": \"X\", \"dur\": 0.7520852300414194, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.581, \"ph\": \"X\", \"dur\": 1.1556918311051065, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347978.021, \"ph\": \"X\", \"dur\": 1.7683357199879342, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347977.859, \"ph\": \"X\", \"dur\": 2.004812269931306, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347980.528, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347980.827, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347981.041, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347981.378, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347981.348, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347981.171, \"ph\": \"X\", \"dur\": 0.7670521002909999, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347980.794, \"ph\": \"X\", \"dur\": 1.2060802942786941, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347980.65, \"ph\": \"X\", \"dur\": 1.4078835948105377, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347982.314, \"ph\": \"X\", \"dur\": 0.10626477877202144, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347982.695, \"ph\": \"X\", \"dur\": 0.1416863716960286, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347982.921, \"ph\": \"X\", \"dur\": 0.092545147709906, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347982.589, \"ph\": \"X\", \"dur\": 0.4846771482489147, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347983.431, \"ph\": \"X\", \"dur\": 0.2197635448313401, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347983.735, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347986.293, \"ph\": \"X\", \"dur\": 0.18259581704488193, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347986.211, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.613, \"ph\": \"X\", \"dur\": 12.198747596920576, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347986.996, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347987.362, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347987.752, \"ph\": \"X\", \"dur\": 0.6029154232206005, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347987.331, \"ph\": \"X\", \"dur\": 1.0875925714695152, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347987.142, \"ph\": \"X\", \"dur\": 2.2562556901242585, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347974.374, \"ph\": \"X\", \"dur\": 15.308364339108413, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347989.963, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.592, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.547, \"ph\": \"X\", \"dur\": 0.307818631466372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.457, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.954, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.406, \"ph\": \"X\", \"dur\": 0.618381189145167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.256, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.229, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.18, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.522, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.138, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.8, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.775, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.722, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.077, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347991.682, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.329, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.304, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.253, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.597, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.21, \"ph\": \"X\", \"dur\": 0.4502533466748796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.836, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.808, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.759, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.116, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347992.718, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.228, \"ph\": \"X\", \"dur\": 3.0050980982782685, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347990.162, \"ph\": \"X\", \"dur\": 3.136307660799591, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.351, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.785, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.759, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.709, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.063, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.667, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.375, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.351, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.298, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.629, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.255, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.942, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.913, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.842, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347995.191, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347994.775, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347995.459, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347995.43, \"ph\": \"X\", \"dur\": 1.1903650805166346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347995.383, \"ph\": \"X\", \"dur\": 1.267444462301974, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347996.711, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347995.338, \"ph\": \"X\", \"dur\": 1.44205794854708, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.016, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347996.988, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347996.931, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.315, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347996.88, \"ph\": \"X\", \"dur\": 0.5021384968734253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.567, \"ph\": \"X\", \"dur\": 3.8731765727539362, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347993.516, \"ph\": \"X\", \"dur\": 3.9637261377638984, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.53, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.949, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.925, \"ph\": \"X\", \"dur\": 0.21178121403156389, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.876, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.21, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.835, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.489, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.465, \"ph\": \"X\", \"dur\": 0.24845004614303604, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.414, \"ph\": \"X\", \"dur\": 0.32203715820347345, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.781, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.373, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.033, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.008, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.962, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.289, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347998.917, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.572, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.523, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.473, \"ph\": \"X\", \"dur\": 0.35720930328998757, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.88, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347999.431, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.159, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.117, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.071, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.437, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.025, \"ph\": \"X\", \"dur\": 0.4756970260991664, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.704, \"ph\": \"X\", \"dur\": 2.8539327087575055, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995347997.659, \"ph\": \"X\", \"dur\": 2.9345043602677467, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.623, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.977, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.941, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.892, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348001.235, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.848, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348001.504, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348001.479, \"ph\": \"X\", \"dur\": 1.1883694978166905, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348001.43, \"ph\": \"X\", \"dur\": 1.2589632358272118, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348002.739, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348001.388, \"ph\": \"X\", \"dur\": 1.420854882360174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.009, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348002.983, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348002.932, \"ph\": \"X\", \"dur\": 0.32054047117851536, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.296, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348002.886, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.555, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.532, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.48, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.82, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.437, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.091, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.066, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.02, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.368, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348003.975, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.761, \"ph\": \"X\", \"dur\": 3.7230089745831454, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348000.723, \"ph\": \"X\", \"dur\": 3.8015850433934433, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.554, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348004.699, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348011.291, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9406868191954557}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348011.539, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348011.751, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.122, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.228, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.065, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.659, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.768, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348012.6, \"ph\": \"X\", \"dur\": 0.3913836570265297, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.094, \"ph\": \"X\", \"dur\": 0.05712355478589885, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.046, \"ph\": \"X\", \"dur\": 0.15790048113307412, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.272, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.235, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.387, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.513, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348013.773, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348014.099, \"ph\": \"X\", \"dur\": 0.1139976617343047, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348014.77, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.085, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.431, \"ph\": \"X\", \"dur\": 0.06311030288573105, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.963, \"ph\": \"X\", \"dur\": 0.55726646895938, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.895, \"ph\": \"X\", \"dur\": 0.6525555428817091, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.634, \"ph\": \"X\", \"dur\": 0.9985396934845114, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348015.051, \"ph\": \"X\", \"dur\": 1.6406184271915143, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348014.906, \"ph\": \"X\", \"dur\": 2.874137983594439, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348018.471, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348018.759, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348019.035, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348019.43, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348019.377, \"ph\": \"X\", \"dur\": 0.5330700287225583, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348019.179, \"ph\": \"X\", \"dur\": 0.803720932402472, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348018.728, \"ph\": \"X\", \"dur\": 1.3051110857634183, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348018.58, \"ph\": \"X\", \"dur\": 1.5076627298077407, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348020.329, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348020.603, \"ph\": \"X\", \"dur\": 0.12173054469658794, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348020.807, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348020.523, \"ph\": \"X\", \"dur\": 0.43079641535042495, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348021.263, \"ph\": \"X\", \"dur\": 0.2130284532190289, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348021.577, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348024.041, \"ph\": \"X\", \"dur\": 0.10476809174706339, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348023.969, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348011.876, \"ph\": \"X\", \"dur\": 12.536499968886108, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348024.576, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348024.914, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348025.246, \"ph\": \"X\", \"dur\": 0.5709861000214955, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348024.879, \"ph\": \"X\", \"dur\": 0.9938001845721441, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348024.704, \"ph\": \"X\", \"dur\": 1.2215460602032606, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348011.655, \"ph\": \"X\", \"dur\": 14.482442549169063, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.321, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.864, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.837, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.765, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.246, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.715, \"ph\": \"X\", \"dur\": 0.6268624156199293, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.563, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.538, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.489, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.832, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.444, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.11, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.088, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.032, \"ph\": \"X\", \"dur\": 0.3599532295024107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.443, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348027.993, \"ph\": \"X\", \"dur\": 0.5151097844230617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.678, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.654, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.602, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.997, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348028.565, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348029.239, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348029.216, \"ph\": \"X\", \"dur\": 1.2891464241638657, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348029.167, \"ph\": \"X\", \"dur\": 1.3674730451366703, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348030.596, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348029.123, \"ph\": \"X\", \"dur\": 1.541837083544283, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.571, \"ph\": \"X\", \"dur\": 4.144076924271343, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348026.516, \"ph\": \"X\", \"dur\": 4.245103298456011, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348030.812, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.308, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.282, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.227, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.612, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.178, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.937, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.909, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.845, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.202, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.799, \"ph\": \"X\", \"dur\": 0.46646745611192514, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.494, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.469, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.421, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.796, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.38, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.061, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.036, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.987, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.409, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348032.945, \"ph\": \"X\", \"dur\": 0.5260854892727541, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.664, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.638, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.591, \"ph\": \"X\", \"dur\": 0.3058230487664279, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.946, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348033.55, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.059, \"ph\": \"X\", \"dur\": 3.0041003069282963, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348031.006, \"ph\": \"X\", \"dur\": 3.1076211594878944, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.142, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.503, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.477, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.431, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.771, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.386, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.073, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.046, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.999, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.357, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.954, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.649, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.605, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.533, \"ph\": \"X\", \"dur\": 1.2996232333385722, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348036.92, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348035.489, \"ph\": \"X\", \"dur\": 1.5296141395071257, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.238, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.212, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.156, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.533, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.106, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.804, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.779, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.726, \"ph\": \"X\", \"dur\": 0.3305183846782357, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.119, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348037.68, \"ph\": \"X\", \"dur\": 0.5003923620109743, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.278, \"ph\": \"X\", \"dur\": 3.958986628851531, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348034.236, \"ph\": \"X\", \"dur\": 4.053277911423888, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.348, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.766, \"ph\": \"X\", \"dur\": 0.02344809672434276, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.726, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.652, \"ph\": \"X\", \"dur\": 0.3597037816649176, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.058, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.612, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.353, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.33, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.26, \"ph\": \"X\", \"dur\": 0.3574587511274806, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.664, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.217, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.912, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.885, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.838, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.209, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348039.799, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.454, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.43, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.381, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.7, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.338, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.975, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.949, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.901, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348041.217, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348040.859, \"ph\": \"X\", \"dur\": 0.42081850185070463, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.495, \"ph\": \"X\", \"dur\": 2.84021307769539, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348038.448, \"ph\": \"X\", \"dur\": 2.926023133792985, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348041.403, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348041.515, \"ph\": \"X\", \"dur\": 0.07433545557291642, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348048.044, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9360171204733923}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348048.364, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348049.677, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.07, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.209, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.016, \"ph\": \"X\", \"dur\": 0.5744783697463977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.691, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.808, \"ph\": \"X\", \"dur\": 0.29484734391673556, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348050.636, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.202, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.165, \"ph\": \"X\", \"dur\": 0.1329556973837733, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.375, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.343, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.478, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.588, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348051.797, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348052.085, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348052.683, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.05, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.316, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.728, \"ph\": \"X\", \"dur\": 0.5620059778717472, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.681, \"ph\": \"X\", \"dur\": 0.6540522299066672, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.44, \"ph\": \"X\", \"dur\": 0.9723476705477455, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348053.021, \"ph\": \"X\", \"dur\": 1.4253449434350483, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348052.816, \"ph\": \"X\", \"dur\": 1.6832740074028185, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.02, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.314, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.553, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.899, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.868, \"ph\": \"X\", \"dur\": 0.5280810719726982, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.667, \"ph\": \"X\", \"dur\": 0.8216811767019686, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.282, \"ph\": \"X\", \"dur\": 1.2617071620396347, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348055.14, \"ph\": \"X\", \"dur\": 1.453532549071758, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348056.833, \"ph\": \"X\", \"dur\": 0.10426919607207738, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348057.144, \"ph\": \"X\", \"dur\": 0.15091594168326988, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348057.357, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348057.089, \"ph\": \"X\", \"dur\": 0.4253085629255788, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348057.792, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348058.092, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348060.388, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348060.308, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348049.807, \"ph\": \"X\", \"dur\": 10.869689518757827, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348060.856, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348061.137, \"ph\": \"X\", \"dur\": 0.061613615860773, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348061.61, \"ph\": \"X\", \"dur\": 0.5617565300342542, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348061.108, \"ph\": \"X\", \"dur\": 1.1220163730435504, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348060.953, \"ph\": \"X\", \"dur\": 1.329058078162747, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348049.57, \"ph\": \"X\", \"dur\": 12.870760071126739, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348063.632, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.206, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.173, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.08, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.578, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.032, \"ph\": \"X\", \"dur\": 0.6393348074945797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.939, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.913, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.841, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.228, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348064.791, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.506, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.483, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.432, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.81, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.386, \"ph\": \"X\", \"dur\": 0.5083746928107505, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.068, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.045, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.994, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.33, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348065.952, \"ph\": \"X\", \"dur\": 0.463474082062009, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.587, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.563, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.514, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.86, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348066.471, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348063.881, \"ph\": \"X\", \"dur\": 3.0946498719382585, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348063.815, \"ph\": \"X\", \"dur\": 3.202910233410224, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.067, \"ph\": \"X\", \"dur\": 0.05712355478589885, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.508, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.483, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.435, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.775, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.395, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.067, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.043, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.996, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.323, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.954, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.584, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.561, \"ph\": \"X\", \"dur\": 0.19606600026950435, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.515, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.831, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.472, \"ph\": \"X\", \"dur\": 0.41682733645081654, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348069.074, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348069.052, \"ph\": \"X\", \"dur\": 0.1945693132445463, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348069.002, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.183, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348068.961, \"ph\": \"X\", \"dur\": 1.3213251952004639, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.504, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.476, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.42, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.8, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348070.37, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.284, \"ph\": \"X\", \"dur\": 3.6424373230729037, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348067.242, \"ph\": \"X\", \"dur\": 3.7496998931948973, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.023, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.412, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.389, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.339, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.695, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.297, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.974, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.945, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.896, \"ph\": \"X\", \"dur\": 0.4073483186260822, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.365, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.855, \"ph\": \"X\", \"dur\": 0.5864518659460619, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.64, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.617, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.567, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.913, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348072.526, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.183, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.159, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.112, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.437, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.069, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.775, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.746, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.695, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.053, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348073.647, \"ph\": \"X\", \"dur\": 0.46746524746189716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.195, \"ph\": \"X\", \"dur\": 2.985391719116321, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348071.149, \"ph\": \"X\", \"dur\": 3.0704534317014365, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.251, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.591, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.568, \"ph\": \"X\", \"dur\": 0.19656489594449036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.517, \"ph\": \"X\", \"dur\": 0.27514096475478794, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.841, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.476, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348075.117, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348075.093, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348075.042, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.301, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.998, \"ph\": \"X\", \"dur\": 1.392667276723464, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.62, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.591, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.541, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.897, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348076.494, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.165, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.138, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.088, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.46, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.044, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.715, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.692, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.642, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.973, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348077.597, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.389, \"ph\": \"X\", \"dur\": 3.7057970737961283, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348074.351, \"ph\": \"X\", \"dur\": 3.7823775599064815, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348078.166, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348078.292, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348084.868, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9329710783475483}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.096, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.31, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.631, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.727, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.599, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.151, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.265, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.105, \"ph\": \"X\", \"dur\": 0.40585163160112414, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.577, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.546, \"ph\": \"X\", \"dur\": 0.12796674063391314, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.747, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.707, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.857, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348086.982, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348087.165, \"ph\": \"X\", \"dur\": 0.020454722674426662, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348087.419, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.009, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.343, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.627, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348089.076, \"ph\": \"X\", \"dur\": 0.5640015605716913, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348089.006, \"ph\": \"X\", \"dur\": 0.6612862171939644, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.781, \"ph\": \"X\", \"dur\": 0.98681564512234, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.311, \"ph\": \"X\", \"dur\": 1.513898925745066, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348088.146, \"ph\": \"X\", \"dur\": 1.756611671625763, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348090.467, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.348, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.581, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.913, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.88, \"ph\": \"X\", \"dur\": 0.5497830338345898, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.701, \"ph\": \"X\", \"dur\": 0.8027231410525001, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.313, \"ph\": \"X\", \"dur\": 1.2255372256031487, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348092.159, \"ph\": \"X\", \"dur\": 1.4370689917972195, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348093.845, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348094.093, \"ph\": \"X\", \"dur\": 0.1416863716960286, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348094.292, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348094.048, \"ph\": \"X\", \"dur\": 0.3946264789139388, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348094.73, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348095.035, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348097.343, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348097.281, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.424, \"ph\": \"X\", \"dur\": 12.254374464681515, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348097.827, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348098.126, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348098.423, \"ph\": \"X\", \"dur\": 0.6248668329199852, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348098.094, \"ph\": \"X\", \"dur\": 1.0110120853591618, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348097.945, \"ph\": \"X\", \"dur\": 1.2120670423785265, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348085.22, \"ph\": \"X\", \"dur\": 14.102533492667211, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348099.546, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.054, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.03, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348099.959, \"ph\": \"X\", \"dur\": 0.37417175623951215, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.39, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348099.914, \"ph\": \"X\", \"dur\": 0.5819618048711879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.718, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.693, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.646, \"ph\": \"X\", \"dur\": 0.30831752714135796, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.017, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348100.599, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.302, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.28, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.228, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.566, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.182, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.808, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.785, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.731, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348102.079, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348101.688, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348102.315, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348102.29, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348102.243, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348103.62, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348102.199, \"ph\": \"X\", \"dur\": 1.4934442030706394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348099.748, \"ph\": \"X\", \"dur\": 4.025090305787178, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348099.694, \"ph\": \"X\", \"dur\": 4.1223749624094514, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348103.868, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.333, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.306, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.252, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.629, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.205, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.956, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.932, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.883, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.252, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.84, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.514, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.487, \"ph\": \"X\", \"dur\": 0.21178121403156389, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.438, \"ph\": \"X\", \"dur\": 0.2888605958169034, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.773, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.398, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.056, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.032, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.982, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.331, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348105.938, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.595, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.569, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.521, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.847, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348106.474, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.091, \"ph\": \"X\", \"dur\": 2.874636879269425, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348104.037, \"ph\": \"X\", \"dur\": 2.998363006665957, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.071, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.454, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.428, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.378, \"ph\": \"X\", \"dur\": 0.29609458310420056, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.719, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.337, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.991, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.967, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.915, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.236, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.875, \"ph\": \"X\", \"dur\": 0.4245602194130998, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.494, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.471, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.421, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.741, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348108.379, \"ph\": \"X\", \"dur\": 1.3200779560129987, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348109.972, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348109.925, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348109.871, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.265, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348109.831, \"ph\": \"X\", \"dur\": 0.49565285309860707, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.542, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.514, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.466, \"ph\": \"X\", \"dur\": 0.3452358070903232, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.861, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348110.404, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.247, \"ph\": \"X\", \"dur\": 3.740719771045149, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348107.204, \"ph\": \"X\", \"dur\": 3.82203976606787, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.062, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.416, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.392, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.343, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.678, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.299, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.95, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.925, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.876, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.274, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.835, \"ph\": \"X\", \"dur\": 0.5081252449732575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.53, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.508, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.46, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.789, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.417, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.035, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.011, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.965, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.295, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348112.923, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.536, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.512, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.467, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.822, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348113.423, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.206, \"ph\": \"X\", \"dur\": 2.732451611898411, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348111.163, \"ph\": \"X\", \"dur\": 2.8112771285462013, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348114.004, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348114.134, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348120.336, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9285355387183702}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348120.568, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348120.787, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.272, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.386, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.232, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.826, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.948, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.769, \"ph\": \"X\", \"dur\": 0.4173262321258025, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.274, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.221, \"ph\": \"X\", \"dur\": 0.15665324194560906, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.451, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.414, \"ph\": \"X\", \"dur\": 0.09404183473486405, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.545, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.672, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348123.841, \"ph\": \"X\", \"dur\": 0.01945693132445463, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348124.074, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348124.613, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348124.955, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348125.228, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348125.729, \"ph\": \"X\", \"dur\": 0.5492841381596038, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348125.675, \"ph\": \"X\", \"dur\": 0.6383370161446077, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348125.401, \"ph\": \"X\", \"dur\": 1.0070209199592737, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348124.9, \"ph\": \"X\", \"dur\": 1.5645368367561465, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348124.738, \"ph\": \"X\", \"dur\": 1.7932805037372352, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.122, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.435, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.688, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348128.035, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348128.006, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.808, \"ph\": \"X\", \"dur\": 0.8294140596642519, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.404, \"ph\": \"X\", \"dur\": 1.2656983274395228, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348127.233, \"ph\": \"X\", \"dur\": 1.4879563506457933, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348128.937, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348129.149, \"ph\": \"X\", \"dur\": 0.10875925714695153, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348129.321, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348129.108, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348129.726, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348129.975, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348132.209, \"ph\": \"X\", \"dur\": 0.1204833055091229, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348132.149, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348122.046, \"ph\": \"X\", \"dur\": 10.524453711667503, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348132.728, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348133.07, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348133.441, \"ph\": \"X\", \"dur\": 0.5330700287225583, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348133.037, \"ph\": \"X\", \"dur\": 1.0005352761844555, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348132.881, \"ph\": \"X\", \"dur\": 1.207327533466159, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348120.69, \"ph\": \"X\", \"dur\": 13.51932444860856, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.443, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.981, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.958, \"ph\": \"X\", \"dur\": 1.3420293657123834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.875, \"ph\": \"X\", \"dur\": 1.4652565974339296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348136.404, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.832, \"ph\": \"X\", \"dur\": 1.6428634577289514, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348136.716, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348136.689, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348136.635, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.006, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348136.584, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.266, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.242, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.193, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.534, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.15, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.771, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.747, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.698, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.072, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348137.654, \"ph\": \"X\", \"dur\": 0.4816837741989986, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.307, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.281, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.235, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.584, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.192, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.673, \"ph\": \"X\", \"dur\": 4.0131168095875145, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348134.626, \"ph\": \"X\", \"dur\": 4.098677417847616, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.766, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.153, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.128, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.077, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.404, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.035, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.686, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.662, \"ph\": \"X\", \"dur\": 0.19656489594449036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.615, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.933, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348139.569, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.191, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.168, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.12, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.468, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.078, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.772, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.748, \"ph\": \"X\", \"dur\": 0.19082759568215119, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.694, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348141.018, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348140.649, \"ph\": \"X\", \"dur\": 1.451038070696828, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.332, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.304, \"ph\": \"X\", \"dur\": 0.2566818247803053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.253, \"ph\": \"X\", \"dur\": 0.34124464169043506, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.666, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.211, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.922, \"ph\": \"X\", \"dur\": 3.8791633208537686, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348138.882, \"ph\": \"X\", \"dur\": 3.958986628851531, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348142.878, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.309, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.281, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.228, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.578, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.184, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.877, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.848, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.796, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.155, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.75, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.437, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.412, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.359, \"ph\": \"X\", \"dur\": 0.2911056263543404, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.696, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.311, \"ph\": \"X\", \"dur\": 0.4467610769499775, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.95, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.921, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.874, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.197, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348144.829, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.451, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.425, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.376, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.699, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.333, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.069, \"ph\": \"X\", \"dur\": 2.7481668256604697, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348143.025, \"ph\": \"X\", \"dur\": 2.8277406858207397, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348145.905, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.259, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.233, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.188, \"ph\": \"X\", \"dur\": 0.2806288171796341, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.513, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.143, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.792, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.766, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.716, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348147.082, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.673, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.29, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.262, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.209, \"ph\": \"X\", \"dur\": 0.34024685034046304, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.6, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.165, \"ph\": \"X\", \"dur\": 0.5323216852100793, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.925, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.895, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.843, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.223, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348148.796, \"ph\": \"X\", \"dur\": 0.49565285309860707, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.519, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.481, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.425, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.798, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.378, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.048, \"ph\": \"X\", \"dur\": 3.8721787814039645, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348146.006, \"ph\": \"X\", \"dur\": 3.952999880751699, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348149.99, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348150.101, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348156.529, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9253682973755698}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348156.798, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348156.995, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.313, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.417, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.271, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.852, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.938, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.811, \"ph\": \"X\", \"dur\": 0.34598415060280224, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.242, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.201, \"ph\": \"X\", \"dur\": 0.1359490714336894, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.4, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.37, \"ph\": \"X\", \"dur\": 0.10077692634717526, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.505, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.637, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348158.872, \"ph\": \"X\", \"dur\": 0.018209692136989593, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348159.145, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348159.743, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.084, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.393, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.878, \"ph\": \"X\", \"dur\": 0.5355645070974884, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.809, \"ph\": \"X\", \"dur\": 0.6298557896698455, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.567, \"ph\": \"X\", \"dur\": 0.9618708613730391, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348160.05, \"ph\": \"X\", \"dur\": 1.5343536484194926, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348159.868, \"ph\": \"X\", \"dur\": 1.7808081118625847, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348162.156, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348162.48, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348162.719, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348164.06, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348164.014, \"ph\": \"X\", \"dur\": 0.5398051203348695, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348163.799, \"ph\": \"X\", \"dur\": 0.8518643650386226, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348162.451, \"ph\": \"X\", \"dur\": 2.234054832587381, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348162.31, \"ph\": \"X\", \"dur\": 2.442094329056549, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348164.974, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348165.214, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348165.372, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348165.162, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348165.777, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348166.064, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348210.069, \"ph\": \"X\", \"dur\": 0.1449291935834377, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348209.876, \"ph\": \"X\", \"dur\": 0.400862674851264, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348157.109, \"ph\": \"X\", \"dur\": 53.56892310162348, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348210.962, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348211.558, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348212.078, \"ph\": \"X\", \"dur\": 0.9681070573103643, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348211.514, \"ph\": \"X\", \"dur\": 1.605695729942493, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348211.139, \"ph\": \"X\", \"dur\": 2.056447972292359, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348156.92, \"ph\": \"X\", \"dur\": 56.56753555612694, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348213.899, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.61, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.587, \"ph\": \"X\", \"dur\": 0.3644432905772848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.484, \"ph\": \"X\", \"dur\": 0.49914512282350915, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.042, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.423, \"ph\": \"X\", \"dur\": 0.7054384844302268, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.365, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.341, \"ph\": \"X\", \"dur\": 0.2349798629184136, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.277, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.646, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.236, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.932, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.909, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.857, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.207, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348215.819, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.445, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.421, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.369, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.698, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.327, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.931, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.907, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.858, \"ph\": \"X\", \"dur\": 0.39562427026391084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348217.317, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348216.817, \"ph\": \"X\", \"dur\": 0.5620059778717472, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.214, \"ph\": \"X\", \"dur\": 4.307714705666756, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348214.156, \"ph\": \"X\", \"dur\": 4.451147212225236, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348218.66, \"ph\": \"X\", \"dur\": 0.09803300013475218, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.232, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.204, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.145, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.557, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.093, \"ph\": \"X\", \"dur\": 0.5315733416976002, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.88, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.856, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.804, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.162, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348219.758, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.487, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.463, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.4, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.774, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.326, \"ph\": \"X\", \"dur\": 0.5106197233481876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.05, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.024, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.974, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.316, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348220.929, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.635, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.608, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.555, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.89, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348221.512, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348218.95, \"ph\": \"X\", \"dur\": 3.069705088188958, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348218.899, \"ph\": \"X\", \"dur\": 3.165991953461259, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.095, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.489, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.467, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.418, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.761, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.376, \"ph\": \"X\", \"dur\": 0.4505027945123726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.028, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.005, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.958, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.28, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.915, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.532, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.507, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.458, \"ph\": \"X\", \"dur\": 0.307818631466372, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.813, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.412, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348224.064, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348224.04, \"ph\": \"X\", \"dur\": 1.204833055091229, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.991, \"ph\": \"X\", \"dur\": 1.2834091239015266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.337, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348223.946, \"ph\": \"X\", \"dur\": 1.4602676406840693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.64, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.611, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.551, \"ph\": \"X\", \"dur\": 0.3335117587281518, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.945, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348225.499, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.263, \"ph\": \"X\", \"dur\": 3.807571791493275, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348222.223, \"ph\": \"X\", \"dur\": 3.8866467559785587, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.142, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.555, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.532, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.472, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.824, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.431, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.109, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.085, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.032, \"ph\": \"X\", \"dur\": 0.3327634152156728, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.411, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.989, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.663, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.639, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.591, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.917, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348227.55, \"ph\": \"X\", \"dur\": 0.4529972728873027, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.195, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.169, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.121, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.448, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.077, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.702, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.677, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.632, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.977, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348228.585, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.326, \"ph\": \"X\", \"dur\": 2.77136547454732, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348226.282, \"ph\": \"X\", \"dur\": 2.8524360217325473, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348229.166, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348229.299, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348237.622, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.921124751983338}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.009, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.307, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.803, \"ph\": \"X\", \"dur\": 0.10052747850968226, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.954, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.753, \"ph\": \"X\", \"dur\": 1.7738235724127807, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348240.681, \"ph\": \"X\", \"dur\": 0.11773937929669981, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348240.853, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348240.609, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.192, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.152, \"ph\": \"X\", \"dur\": 0.1364479671086754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.394, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.332, \"ph\": \"X\", \"dur\": 0.12422502307151802, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.492, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.631, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348241.935, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348242.281, \"ph\": \"X\", \"dur\": 0.10875925714695153, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.017, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.36, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.716, \"ph\": \"X\", \"dur\": 0.08256723421018568, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348244.357, \"ph\": \"X\", \"dur\": 0.617383397795195, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348244.28, \"ph\": \"X\", \"dur\": 0.7286371333170766, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.927, \"ph\": \"X\", \"dur\": 1.204833055091229, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.304, \"ph\": \"X\", \"dur\": 1.8903157125220154, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348243.147, \"ph\": \"X\", \"dur\": 2.11132649654082, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348245.912, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.199, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.435, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.828, \"ph\": \"X\", \"dur\": 0.3976198529638549, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.795, \"ph\": \"X\", \"dur\": 0.4569884382871908, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.577, \"ph\": \"X\", \"dur\": 0.7421073165416991, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.168, \"ph\": \"X\", \"dur\": 1.2043341594162429, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348246.027, \"ph\": \"X\", \"dur\": 1.3959100986108732, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348247.727, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348248.132, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348248.465, \"ph\": \"X\", \"dur\": 0.09304404338489201, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348248.002, \"ph\": \"X\", \"dur\": 0.6143900237452788, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348249.081, \"ph\": \"X\", \"dur\": 0.2596751988302214, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348249.436, \"ph\": \"X\", \"dur\": 0.17660906894504974, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348252.055, \"ph\": \"X\", \"dur\": 0.12547226225898306, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348251.97, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.42, \"ph\": \"X\", \"dur\": 14.065615212718246, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348252.697, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348253.029, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348253.416, \"ph\": \"X\", \"dur\": 0.618880084820153, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348252.995, \"ph\": \"X\", \"dur\": 1.1352371084306798, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348252.806, \"ph\": \"X\", \"dur\": 1.3906716940235202, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348238.176, \"ph\": \"X\", \"dur\": 16.193904162208593, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348254.635, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348255.214, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348255.188, \"ph\": \"X\", \"dur\": 0.38215408703928844, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348255.136, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348256.863, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348255.088, \"ph\": \"X\", \"dur\": 1.8910640560344942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.268, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.242, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.162, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.577, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.114, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.853, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.828, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.776, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.144, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348257.733, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.382, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.358, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.304, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.677, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.263, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.916, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.892, \"ph\": \"X\", \"dur\": 0.21028452700660583, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.841, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.179, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348258.799, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348254.911, \"ph\": \"X\", \"dur\": 4.3735689347649105, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348254.857, \"ph\": \"X\", \"dur\": 4.500537884048852, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.424, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.925, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.901, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.853, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.175, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.813, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.456, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.43, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.385, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.716, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.34, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.043, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.015, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.955, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.358, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348260.901, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.632, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.606, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.555, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.925, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348261.511, \"ph\": \"X\", \"dur\": 0.4751981304241804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348262.187, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348262.161, \"ph\": \"X\", \"dur\": 1.2744290017517783, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348262.112, \"ph\": \"X\", \"dur\": 1.3540028619120479, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348263.525, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348262.071, \"ph\": \"X\", \"dur\": 1.5248746305947585, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.708, \"ph\": \"X\", \"dur\": 3.952500985076713, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348259.665, \"ph\": \"X\", \"dur\": 4.034569323611913, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348263.733, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.3, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.272, \"ph\": \"X\", \"dur\": 0.2659113947675466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.218, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.62, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.169, \"ph\": \"X\", \"dur\": 0.5171053671230057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.917, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.893, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.843, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.185, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.797, \"ph\": \"X\", \"dur\": 0.44950500316240055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.456, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.433, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.36, \"ph\": \"X\", \"dur\": 0.339498506827984, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.746, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.319, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.0, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.972, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.925, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.252, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348265.882, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.505, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.48, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.434, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.775, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348266.391, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348264.038, \"ph\": \"X\", \"dur\": 2.908811233005967, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348263.984, \"ph\": \"X\", \"dur\": 3.0083409201656774, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.026, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.385, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.361, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.309, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.679, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.267, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.951, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.929, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.877, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348268.251, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.837, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348268.5, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348268.477, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348268.428, \"ph\": \"X\", \"dur\": 1.1696609100047148, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348269.673, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348268.385, \"ph\": \"X\", \"dur\": 1.3594907143368942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348269.972, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348269.942, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348269.884, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.274, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348269.835, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.547, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.521, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.469, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.869, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348270.422, \"ph\": \"X\", \"dur\": 0.5118669625356526, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.18, \"ph\": \"X\", \"dur\": 3.8105651655431916, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348267.135, \"ph\": \"X\", \"dur\": 3.892633504078391, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348271.058, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348271.171, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348278.094, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9178728600772181}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348278.428, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348278.702, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.056, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.172, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.012, \"ph\": \"X\", \"dur\": 0.5422995987097996, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.637, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.742, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348279.587, \"ph\": \"X\", \"dur\": 0.3981187486388409, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.06, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.031, \"ph\": \"X\", \"dur\": 0.13994023683357754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.279, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.212, \"ph\": \"X\", \"dur\": 0.11873717064667184, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.363, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.482, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348280.741, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348281.003, \"ph\": \"X\", \"dur\": 0.07184097719798634, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348281.663, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348281.975, \"ph\": \"X\", \"dur\": 0.06111472018578698, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348282.282, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348282.734, \"ph\": \"X\", \"dur\": 0.5368117462849534, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348282.68, \"ph\": \"X\", \"dur\": 0.6330986115572546, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348282.405, \"ph\": \"X\", \"dur\": 0.9940496324096372, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348281.941, \"ph\": \"X\", \"dur\": 1.514647269257545, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348281.777, \"ph\": \"X\", \"dur\": 1.73316357490142, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.048, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.359, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.612, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.925, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.893, \"ph\": \"X\", \"dur\": 1.4969364727955414, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.738, \"ph\": \"X\", \"dur\": 1.7518721627133957, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.328, \"ph\": \"X\", \"dur\": 2.217591275312842, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348284.191, \"ph\": \"X\", \"dur\": 2.40567494478257, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348286.918, \"ph\": \"X\", \"dur\": 0.09578796959731511, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348287.25, \"ph\": \"X\", \"dur\": 0.1451786414209307, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348287.478, \"ph\": \"X\", \"dur\": 0.09653631310979412, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348287.129, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348288.003, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348288.308, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348290.655, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348290.593, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348278.82, \"ph\": \"X\", \"dur\": 12.206729927720351, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348291.177, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348291.463, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348291.854, \"ph\": \"X\", \"dur\": 0.5981759143082334, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348291.431, \"ph\": \"X\", \"dur\": 1.0940782152443336, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348291.277, \"ph\": \"X\", \"dur\": 1.3105989381882646, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348278.578, \"ph\": \"X\", \"dur\": 14.159657047453111, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348292.987, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.591, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.566, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.488, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.973, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.419, \"ph\": \"X\", \"dur\": 0.6273613112949153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.315, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.286, \"ph\": \"X\", \"dur\": 0.2594257509927284, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.224, \"ph\": \"X\", \"dur\": 0.3499753160026904, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.629, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.17, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.911, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.887, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.838, \"ph\": \"X\", \"dur\": 0.3462335984402952, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.234, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348294.794, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.466, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.442, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.393, \"ph\": \"X\", \"dur\": 0.3584565424774526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.801, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.352, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348296.078, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348296.051, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348296.005, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348296.35, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348295.94, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.261, \"ph\": \"X\", \"dur\": 3.21338704258493, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348293.18, \"ph\": \"X\", \"dur\": 3.3286319435067, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.22, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.758, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.737, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.679, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.053, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.618, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.386, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.361, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.313, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.654, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.257, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.918, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.894, \"ph\": \"X\", \"dur\": 0.2227569188812562, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.844, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.221, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348299.803, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.497, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.473, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.421, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.756, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.38, \"ph\": \"X\", \"dur\": 0.43927764182518725, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.019, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.992, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.947, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.298, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348300.901, \"ph\": \"X\", \"dur\": 0.45998181233710694, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.47, \"ph\": \"X\", \"dur\": 2.9512173653797786, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348298.416, \"ph\": \"X\", \"dur\": 3.0594777268517444, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.507, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.887, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.863, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.813, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.138, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.77, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.433, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.41, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.357, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.68, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.314, \"ph\": \"X\", \"dur\": 0.4278030413005089, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.931, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.907, \"ph\": \"X\", \"dur\": 0.19706379161947638, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.858, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348303.177, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348302.815, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348303.453, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348303.429, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348303.385, \"ph\": \"X\", \"dur\": 1.2235416429032044, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348304.677, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348303.335, \"ph\": \"X\", \"dur\": 1.4133714472353838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348304.998, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348304.97, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348304.91, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.3, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348304.858, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.682, \"ph\": \"X\", \"dur\": 3.7437131450950654, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348301.644, \"ph\": \"X\", \"dur\": 3.81954528769294, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.503, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.917, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.891, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.823, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.201, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.779, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.477, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.452, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.403, \"ph\": \"X\", \"dur\": 0.3664388732772289, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.816, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.36, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.09, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.064, \"ph\": \"X\", \"dur\": 0.31430427524119015, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.015, \"ph\": \"X\", \"dur\": 0.39537482242641786, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.49, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348306.971, \"ph\": \"X\", \"dur\": 0.5844562832461179, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.784, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.759, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.694, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.033, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348307.655, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.285, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.262, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.211, \"ph\": \"X\", \"dur\": 0.3043263617414698, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.563, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.168, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.673, \"ph\": \"X\", \"dur\": 3.0080914723281844, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348305.627, \"ph\": \"X\", \"dur\": 3.091656497888342, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.751, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348308.857, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348315.436, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9137883942650639}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348315.729, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348315.982, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.302, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.405, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.259, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.806, \"ph\": \"X\", \"dur\": 0.07782772529781852, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348317.903, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.757, \"ph\": \"X\", \"dur\": 1.4021462945481986, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.275, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.216, \"ph\": \"X\", \"dur\": 0.154657659245665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.467, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.416, \"ph\": \"X\", \"dur\": 0.12771729279642013, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.58, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.744, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348318.932, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348319.204, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348319.796, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.106, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.391, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.81, \"ph\": \"X\", \"dur\": 0.5502819295095759, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.762, \"ph\": \"X\", \"dur\": 0.6258646242699573, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.548, \"ph\": \"X\", \"dur\": 0.9396700038361614, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348320.077, \"ph\": \"X\", \"dur\": 1.4520358620468001, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348319.916, \"ph\": \"X\", \"dur\": 1.6917552338775808, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.132, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.421, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.691, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.988, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.957, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.801, \"ph\": \"X\", \"dur\": 0.7199064590048214, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.387, \"ph\": \"X\", \"dur\": 1.1876211543042117, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348322.242, \"ph\": \"X\", \"dur\": 1.38568273727366, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348323.881, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348324.16, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348324.363, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348324.081, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348324.845, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348325.125, \"ph\": \"X\", \"dur\": 0.19257373054460222, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348327.381, \"ph\": \"X\", \"dur\": 0.08780563879753885, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348327.309, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348316.075, \"ph\": \"X\", \"dur\": 11.651209593623422, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348327.865, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348328.184, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348328.519, \"ph\": \"X\", \"dur\": 0.5640015605716913, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348328.148, \"ph\": \"X\", \"dur\": 0.9873145407973261, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348327.996, \"ph\": \"X\", \"dur\": 1.201839681041313, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348315.894, \"ph\": \"X\", \"dur\": 13.440249484123276, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348329.57, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348330.116, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348330.091, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348330.01, \"ph\": \"X\", \"dur\": 0.3791607129893723, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348330.45, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348329.959, \"ph\": \"X\", \"dur\": 0.5600103951718031, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348331.854, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348331.826, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348331.767, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.156, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348331.724, \"ph\": \"X\", \"dur\": 0.5011407055234532, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.437, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.409, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.352, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.75, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.305, \"ph\": \"X\", \"dur\": 0.5118669625356526, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.991, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.967, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.913, \"ph\": \"X\", \"dur\": 0.339747954665477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.298, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348332.87, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.555, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.532, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.469, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.836, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348333.427, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348329.782, \"ph\": \"X\", \"dur\": 4.159043794520924, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348329.728, \"ph\": \"X\", \"dur\": 4.274288695442693, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.05, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.427, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.403, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.353, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.691, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.31, \"ph\": \"X\", \"dur\": 0.4442665985750474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.013, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.982, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.928, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.327, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.886, \"ph\": \"X\", \"dur\": 0.5273327284602191, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.621, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.599, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.547, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.873, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348335.506, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.151, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.125, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.078, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.425, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.034, \"ph\": \"X\", \"dur\": 0.45549175126223274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.704, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.681, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.632, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348337.869, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348336.586, \"ph\": \"X\", \"dur\": 1.3659763581117121, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.203, \"ph\": \"X\", \"dur\": 3.8182980485054747, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348334.164, \"ph\": \"X\", \"dur\": 3.8986202521782234, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.108, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.498, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.468, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.414, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.816, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.369, \"ph\": \"X\", \"dur\": 0.5151097844230617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.106, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.079, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.03, \"ph\": \"X\", \"dur\": 0.34024685034046304, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.42, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.986, \"ph\": \"X\", \"dur\": 0.4971495401235651, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.67, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.646, \"ph\": \"X\", \"dur\": 0.26466415558008155, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.597, \"ph\": \"X\", \"dur\": 0.34673249411528123, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.992, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348339.556, \"ph\": \"X\", \"dur\": 0.4976484357985511, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.248, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.222, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.174, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.549, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.133, \"ph\": \"X\", \"dur\": 0.47993763933654754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.799, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.777, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.727, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.057, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348340.686, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.244, \"ph\": \"X\", \"dur\": 2.930014299192873, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348338.201, \"ph\": \"X\", \"dur\": 3.0100870550281282, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.241, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.585, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.559, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.509, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.856, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.468, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.149, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.125, \"ph\": \"X\", \"dur\": 0.2616707815301655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.076, \"ph\": \"X\", \"dur\": 0.34174353736542107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.464, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.034, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.749, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.72, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.666, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.999, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348342.622, \"ph\": \"X\", \"dur\": 1.420854882360174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.269, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.219, \"ph\": \"X\", \"dur\": 0.2641652599050956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.168, \"ph\": \"X\", \"dur\": 0.34698194195277426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.565, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.122, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.849, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.817, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.77, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348345.134, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348344.711, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.381, \"ph\": \"X\", \"dur\": 3.881158903553713, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348341.338, \"ph\": \"X\", \"dur\": 3.9652228247888566, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348345.338, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348345.455, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348351.898, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9104802258099465}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.175, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.387, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.755, \"ph\": \"X\", \"dur\": 0.07633103827286047, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.88, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.691, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.237, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.325, \"ph\": \"X\", \"dur\": 0.21078342268159184, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.195, \"ph\": \"X\", \"dur\": 0.36693776895221486, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.639, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.596, \"ph\": \"X\", \"dur\": 0.13495128008371737, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.81, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.78, \"ph\": \"X\", \"dur\": 0.10676367444700746, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348353.919, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348354.058, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348354.235, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348354.516, \"ph\": \"X\", \"dur\": 0.08581005609759478, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.204, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.523, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.802, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348356.24, \"ph\": \"X\", \"dur\": 0.5774717437963137, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348356.191, \"ph\": \"X\", \"dur\": 0.6672729652937965, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.931, \"ph\": \"X\", \"dur\": 1.019742759671417, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.491, \"ph\": \"X\", \"dur\": 1.513649477907573, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348355.331, \"ph\": \"X\", \"dur\": 1.7311679922014762, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348357.594, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348357.936, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348358.177, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348358.535, \"ph\": \"X\", \"dur\": 0.4215668453631837, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348358.503, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348358.316, \"ph\": \"X\", \"dur\": 0.7528335735538985, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348357.884, \"ph\": \"X\", \"dur\": 2.244282193924594, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348357.703, \"ph\": \"X\", \"dur\": 2.4782642654930354, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348360.468, \"ph\": \"X\", \"dur\": 0.07358711206043739, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348360.753, \"ph\": \"X\", \"dur\": 0.15490710708315802, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348360.968, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348360.691, \"ph\": \"X\", \"dur\": 0.42281408455064873, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348361.441, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348361.748, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348364.025, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348363.975, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.507, \"ph\": \"X\", \"dur\": 11.858750194417604, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348364.519, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348364.858, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348365.21, \"ph\": \"X\", \"dur\": 0.5522775122095199, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348364.801, \"ph\": \"X\", \"dur\": 1.017996624808966, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348364.653, \"ph\": \"X\", \"dur\": 1.23227231721546, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348352.304, \"ph\": \"X\", \"dur\": 13.74407695018976, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.256, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.758, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.732, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.655, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.07, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.605, \"ph\": \"X\", \"dur\": 0.5328205808850652, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.436, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.4, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.32, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.745, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.259, \"ph\": \"X\", \"dur\": 0.555520334096929, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.03, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.999, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.943, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.292, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348367.898, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.553, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.528, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.476, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.825, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.43, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.063, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.036, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.987, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.321, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348368.945, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.459, \"ph\": \"X\", \"dur\": 2.9676809226543175, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348366.406, \"ph\": \"X\", \"dur\": 3.0694556403514643, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.521, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.892, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.865, \"ph\": \"X\", \"dur\": 1.2744290017517783, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.815, \"ph\": \"X\", \"dur\": 1.3540028619120479, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.23, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.772, \"ph\": \"X\", \"dur\": 1.5395920530068459, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.591, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.564, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.508, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.88, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348371.458, \"ph\": \"X\", \"dur\": 0.4876705222988308, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.184, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.161, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.108, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.451, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.061, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.715, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.69, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.643, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.986, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348372.599, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.24, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.216, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.168, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.499, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.127, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.684, \"ph\": \"X\", \"dur\": 3.9360374278021744, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348369.64, \"ph\": \"X\", \"dur\": 4.0168585271499095, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.69, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.053, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.028, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.98, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.306, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.94, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.575, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.551, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.507, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.846, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.462, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.09, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.066, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.019, \"ph\": \"X\", \"dur\": 0.2746420690798019, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.341, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348374.975, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.588, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.562, \"ph\": \"X\", \"dur\": 0.2197635448313401, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.516, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.861, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348375.473, \"ph\": \"X\", \"dur\": 1.3096011468382924, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.0, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348376.974, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348376.925, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.276, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348376.88, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.837, \"ph\": \"X\", \"dur\": 3.5668546283125226, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348373.792, \"ph\": \"X\", \"dur\": 3.6516668930601455, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.481, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.89, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.864, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.809, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.206, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.77, \"ph\": \"X\", \"dur\": 0.5023879447109183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.491, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.465, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.416, \"ph\": \"X\", \"dur\": 0.32952059332826367, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.796, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.37, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.05, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.024, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.975, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.322, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348378.931, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.597, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.573, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.527, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.86, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.469, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.107, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.085, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.035, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.362, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348379.993, \"ph\": \"X\", \"dur\": 0.4260569064380578, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.665, \"ph\": \"X\", \"dur\": 2.810029889358736, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348377.622, \"ph\": \"X\", \"dur\": 2.8881070624940475, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.541, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348380.665, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348386.986, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9065291294734391}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.217, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.428, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.717, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.831, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.67, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348388.195, \"ph\": \"X\", \"dur\": 0.06535533342316811, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348388.297, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348388.153, \"ph\": \"X\", \"dur\": 0.3891386264890926, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348389.564, \"ph\": \"X\", \"dur\": 0.06710146828561918, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348389.505, \"ph\": \"X\", \"dur\": 0.18982980433217916, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348389.805, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348389.74, \"ph\": \"X\", \"dur\": 0.12746784495892713, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348389.906, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348390.043, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348390.248, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348390.524, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.06, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.398, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.749, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348392.148, \"ph\": \"X\", \"dur\": 0.5530258557219989, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348392.102, \"ph\": \"X\", \"dur\": 0.6413303901945239, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.878, \"ph\": \"X\", \"dur\": 0.957630248135658, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.344, \"ph\": \"X\", \"dur\": 1.5271196611321955, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348391.178, \"ph\": \"X\", \"dur\": 1.7501260278509447, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348393.485, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348393.771, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348394.026, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348394.327, \"ph\": \"X\", \"dur\": 0.4183240234757745, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348394.292, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348394.139, \"ph\": \"X\", \"dur\": 0.6982044971429296, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348393.739, \"ph\": \"X\", \"dur\": 1.1499545308427672, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348393.595, \"ph\": \"X\", \"dur\": 1.3502611443496528, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348395.16, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348395.439, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348395.612, \"ph\": \"X\", \"dur\": 0.10127582202216127, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348395.389, \"ph\": \"X\", \"dur\": 0.36893335165215896, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348396.103, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348396.429, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348398.709, \"ph\": \"X\", \"dur\": 0.07383655989793039, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348398.66, \"ph\": \"X\", \"dur\": 0.18434195190733296, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.534, \"ph\": \"X\", \"dur\": 11.515759417864718, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348399.175, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348399.463, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348399.834, \"ph\": \"X\", \"dur\": 0.5921891662084011, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348399.431, \"ph\": \"X\", \"dur\": 1.048429260983113, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348399.283, \"ph\": \"X\", \"dur\": 1.2477380831400264, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348387.341, \"ph\": \"X\", \"dur\": 13.34870212776334, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348400.878, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.371, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.343, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.286, \"ph\": \"X\", \"dur\": 0.369931143002131, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.715, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.239, \"ph\": \"X\", \"dur\": 0.5437962857347576, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348402.007, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.98, \"ph\": \"X\", \"dur\": 1.2719345233768482, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.933, \"ph\": \"X\", \"dur\": 1.3475172181372297, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.332, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.891, \"ph\": \"X\", \"dur\": 1.51090555169515, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.644, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.614, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.563, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.961, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348403.496, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.235, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.206, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.137, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.522, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.09, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.786, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.758, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.709, \"ph\": \"X\", \"dur\": 0.3360062371030819, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.094, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348404.659, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.092, \"ph\": \"X\", \"dur\": 4.124869440784382, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348401.037, \"ph\": \"X\", \"dur\": 4.225147471456571, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.3, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.731, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.705, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.65, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.036, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.602, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.338, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.313, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.262, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.61, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.218, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.893, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.869, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.82, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.2, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348406.774, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.465, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.441, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.39, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.738, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.349, \"ph\": \"X\", \"dur\": 0.45798622963716284, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348408.029, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348408.0, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.932, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348408.301, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348407.888, \"ph\": \"X\", \"dur\": 0.4966506444485791, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.484, \"ph\": \"X\", \"dur\": 5.0271222689965915, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348405.433, \"ph\": \"X\", \"dur\": 5.135382630468557, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348410.604, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.04, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.002, \"ph\": \"X\", \"dur\": 0.339249058990491, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348410.947, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.444, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348410.898, \"ph\": \"X\", \"dur\": 0.617383397795195, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.758, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.736, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.682, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.028, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348411.64, \"ph\": \"X\", \"dur\": 0.46696635178691115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.339, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.31, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.261, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.613, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.217, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.878, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.848, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.799, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.126, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348412.758, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.406, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.384, \"ph\": \"X\", \"dur\": 0.22425360590621427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.33, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.682, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.289, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348410.781, \"ph\": \"X\", \"dur\": 3.0240561339277368, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348410.73, \"ph\": \"X\", \"dur\": 3.1131090119127407, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.873, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.243, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.214, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.163, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.485, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.121, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.785, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.757, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.707, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.06, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.661, \"ph\": \"X\", \"dur\": 0.46272573854953, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.314, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.287, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.239, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.561, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348415.195, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348416.732, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348416.702, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348416.647, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.013, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348416.604, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.302, \"ph\": \"X\", \"dur\": 0.02344809672434276, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.255, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.202, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.609, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.157, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348414.012, \"ph\": \"X\", \"dur\": 3.7274990356580195, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348413.968, \"ph\": \"X\", \"dur\": 3.8115629568931637, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.817, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348417.941, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348424.298, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.9031866908939911}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348424.524, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348424.72, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.068, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.181, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.035, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.576, \"ph\": \"X\", \"dur\": 0.06934649882305625, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.676, \"ph\": \"X\", \"dur\": 0.2132779010565219, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.546, \"ph\": \"X\", \"dur\": 0.370928934352103, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.005, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348425.962, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.137, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.105, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.251, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.369, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.582, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348426.835, \"ph\": \"X\", \"dur\": 0.10127582202216127, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348427.478, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348427.859, \"ph\": \"X\", \"dur\": 0.0708431858480143, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348428.172, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348428.673, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348428.621, \"ph\": \"X\", \"dur\": 0.587449657296034, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348428.378, \"ph\": \"X\", \"dur\": 0.8997583498372802, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348427.809, \"ph\": \"X\", \"dur\": 1.5034221165703598, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348427.637, \"ph\": \"X\", \"dur\": 1.7294218573390252, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348429.876, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.152, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.385, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.766, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.723, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.496, \"ph\": \"X\", \"dur\": 0.7890035099903846, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348430.121, \"ph\": \"X\", \"dur\": 1.2140626250784703, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348429.983, \"ph\": \"X\", \"dur\": 1.4028946380606775, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348432.628, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348432.931, \"ph\": \"X\", \"dur\": 0.09928023932221722, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348433.105, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348432.852, \"ph\": \"X\", \"dur\": 0.4130856188884214, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348433.606, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348433.869, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348436.217, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348436.164, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348424.852, \"ph\": \"X\", \"dur\": 11.715816583534112, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348436.743, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348437.1, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348437.559, \"ph\": \"X\", \"dur\": 0.556268677609408, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348437.067, \"ph\": \"X\", \"dur\": 1.1367337954556378, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348436.898, \"ph\": \"X\", \"dur\": 1.358991818661908, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348424.632, \"ph\": \"X\", \"dur\": 13.822154123325072, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348438.7, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.211, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.186, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.123, \"ph\": \"X\", \"dur\": 0.3629466035523267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.545, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.05, \"ph\": \"X\", \"dur\": 0.5782200873087927, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.848, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.824, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.773, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.111, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348439.73, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.392, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.367, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.315, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.647, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.277, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.885, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.86, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.809, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.167, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348440.767, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.406, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.383, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.332, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.678, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.29, \"ph\": \"X\", \"dur\": 0.4515005858623446, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348438.906, \"ph\": \"X\", \"dur\": 2.876133566294383, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348438.854, \"ph\": \"X\", \"dur\": 2.963689757254429, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.862, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348442.273, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348442.248, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348442.2, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348443.444, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348442.123, \"ph\": \"X\", \"dur\": 1.4275899739724853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348443.829, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348443.798, \"ph\": \"X\", \"dur\": 0.2551851377553473, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348443.743, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.158, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348443.696, \"ph\": \"X\", \"dur\": 0.525337145760275, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.448, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.423, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.361, \"ph\": \"X\", \"dur\": 0.34124464169043506, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.764, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.313, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.067, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.023, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.968, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.356, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348444.921, \"ph\": \"X\", \"dur\": 0.5046329752483554, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.652, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.623, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.576, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.923, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348445.512, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348442.035, \"ph\": \"X\", \"dur\": 4.027584784162109, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348441.989, \"ph\": \"X\", \"dur\": 4.115140975122155, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.136, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.584, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.556, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.498, \"ph\": \"X\", \"dur\": 0.3360062371030819, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.891, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.447, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.219, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.192, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.137, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.498, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.089, \"ph\": \"X\", \"dur\": 0.47444978691170137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.759, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.729, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.681, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.054, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348447.637, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.31, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.284, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.235, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.567, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.192, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.825, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.798, \"ph\": \"X\", \"dur\": 1.8030089693994624, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.748, \"ph\": \"X\", \"dur\": 1.884578412259676, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348450.695, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348448.702, \"ph\": \"X\", \"dur\": 2.06817202065453, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.323, \"ph\": \"X\", \"dur\": 4.511513588898544, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348446.27, \"ph\": \"X\", \"dur\": 4.605555423633408, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348450.91, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.314, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.288, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.232, \"ph\": \"X\", \"dur\": 0.338999611152998, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.629, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.183, \"ph\": \"X\", \"dur\": 0.5093724841607226, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.915, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.89, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.841, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.237, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.797, \"ph\": \"X\", \"dur\": 0.524339354410303, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.517, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.492, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.441, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.803, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.402, \"ph\": \"X\", \"dur\": 0.46097960368707896, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.053, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.029, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.982, \"ph\": \"X\", \"dur\": 0.3120592447037531, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.339, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348452.935, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.585, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.562, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.513, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.833, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348453.469, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.067, \"ph\": \"X\", \"dur\": 2.905817858956051, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348451.016, \"ph\": \"X\", \"dur\": 3.0058464417907476, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348454.056, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348454.193, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348460.449, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8993488645037444}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348460.693, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348460.927, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.199, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.288, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.166, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.726, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.832, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.685, \"ph\": \"X\", \"dur\": 0.3856463567641905, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348462.153, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348462.116, \"ph\": \"X\", \"dur\": 0.12173054469658794, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348463.288, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348463.209, \"ph\": \"X\", \"dur\": 0.15964661599552515, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348463.404, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348463.553, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348463.729, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348464.015, \"ph\": \"X\", \"dur\": 0.07433545557291642, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348464.669, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348465.0, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348465.295, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348465.715, \"ph\": \"X\", \"dur\": 0.5263349371102471, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348465.674, \"ph\": \"X\", \"dur\": 0.6016681840331355, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348465.452, \"ph\": \"X\", \"dur\": 0.9159724592743257, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348464.957, \"ph\": \"X\", \"dur\": 1.4642588060839576, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348464.808, \"ph\": \"X\", \"dur\": 1.7032298344022592, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.042, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.348, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.583, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.955, \"ph\": \"X\", \"dur\": 0.44950500316240055, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.927, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.701, \"ph\": \"X\", \"dur\": 0.7959880494401887, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.32, \"ph\": \"X\", \"dur\": 1.2572171009647606, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348467.147, \"ph\": \"X\", \"dur\": 1.483216841733426, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348468.887, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348469.19, \"ph\": \"X\", \"dur\": 0.10526698742204942, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348469.366, \"ph\": \"X\", \"dur\": 0.11549434875926275, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348469.093, \"ph\": \"X\", \"dur\": 0.43877874615020124, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348469.807, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348470.118, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348472.398, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348472.317, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348461.045, \"ph\": \"X\", \"dur\": 11.706337565709376, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348472.915, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348473.249, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348473.572, \"ph\": \"X\", \"dur\": 0.5799662221712437, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348473.202, \"ph\": \"X\", \"dur\": 1.0055242329343157, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348473.05, \"ph\": \"X\", \"dur\": 1.2108198031910613, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348460.82, \"ph\": \"X\", \"dur\": 13.566220642057244, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348474.563, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.113, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.086, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.012, \"ph\": \"X\", \"dur\": 0.41233727537594234, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.482, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348474.963, \"ph\": \"X\", \"dur\": 0.584705731083611, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.809, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.787, \"ph\": \"X\", \"dur\": 0.21427569240649394, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.714, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.015, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348475.67, \"ph\": \"X\", \"dur\": 1.4440535312470237, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.319, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.293, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.237, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.619, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.195, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.931, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.903, \"ph\": \"X\", \"dur\": 0.2644147077425886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.821, \"ph\": \"X\", \"dur\": 0.37267506921455407, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.245, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348477.779, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.514, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.483, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.428, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.791, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.381, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348474.821, \"ph\": \"X\", \"dur\": 4.071986499235864, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348474.756, \"ph\": \"X\", \"dur\": 4.17450956044549, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348478.96, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.348, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.324, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.276, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.617, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.234, \"ph\": \"X\", \"dur\": 0.44626218127499145, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.912, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.887, \"ph\": \"X\", \"dur\": 0.22325581455624222, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.838, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.188, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.796, \"ph\": \"X\", \"dur\": 0.4746992347491944, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.483, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.458, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.41, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.736, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.368, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.997, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.972, \"ph\": \"X\", \"dur\": 0.20105495701936452, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.926, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.248, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348480.88, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.538, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.513, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.439, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.794, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348481.394, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.132, \"ph\": \"X\", \"dur\": 2.7843367620969564, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348479.088, \"ph\": \"X\", \"dur\": 2.8659062049571697, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348482.856, \"ph\": \"X\", \"dur\": 0.02195140969938471, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.257, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.227, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.173, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.539, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.132, \"ph\": \"X\", \"dur\": 0.47968819149905456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.855, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.828, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.759, \"ph\": \"X\", \"dur\": 0.340745746015449, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.15, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.712, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.417, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.391, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.341, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.683, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.294, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.941, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.913, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.863, \"ph\": \"X\", \"dur\": 0.2876133566294383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.196, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348484.819, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.5, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.474, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.425, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.748, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.384, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348483.019, \"ph\": \"X\", \"dur\": 2.8442042430952785, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348482.961, \"ph\": \"X\", \"dur\": 2.937996629992649, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348485.929, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.281, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.259, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.207, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.532, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.168, \"ph\": \"X\", \"dur\": 0.4245602194130998, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.799, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.777, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.729, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.082, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.688, \"ph\": \"X\", \"dur\": 0.4604807080120929, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.337, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.311, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.26, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.588, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.219, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.837, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.814, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.766, \"ph\": \"X\", \"dur\": 1.1646719532548548, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348488.988, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348487.723, \"ph\": \"X\", \"dur\": 1.3337975870751142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.266, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.238, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.174, \"ph\": \"X\", \"dur\": 0.3372534762905469, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.561, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.133, \"ph\": \"X\", \"dur\": 0.494156166073649, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.078, \"ph\": \"X\", \"dur\": 3.609260760686334, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348486.041, \"ph\": \"X\", \"dur\": 3.6880862773341248, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.785, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348489.901, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.277, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8959892025574853}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.503, \"ph\": \"X\", \"dur\": 0.061613615860773, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.743, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.023, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.132, \"ph\": \"X\", \"dur\": 0.3225360538784594, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.989, \"ph\": \"X\", \"dur\": 0.5086241406482435, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.564, \"ph\": \"X\", \"dur\": 0.05612576343592682, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.65, \"ph\": \"X\", \"dur\": 0.1726179035451616, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.531, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.926, \"ph\": \"X\", \"dur\": 0.03367545806155609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348497.894, \"ph\": \"X\", \"dur\": 0.09553852175982211, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.063, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.021, \"ph\": \"X\", \"dur\": 0.09778355229725916, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.151, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.287, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.43, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348498.664, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348499.272, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348499.602, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348499.861, \"ph\": \"X\", \"dur\": 0.06585422909815414, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348500.275, \"ph\": \"X\", \"dur\": 0.5595114994968171, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348500.221, \"ph\": \"X\", \"dur\": 0.6400831510070587, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348500.014, \"ph\": \"X\", \"dur\": 0.9389216603236824, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348499.543, \"ph\": \"X\", \"dur\": 1.4652565974339296, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348499.395, \"ph\": \"X\", \"dur\": 1.667059897965773, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348501.588, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348501.873, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348502.189, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348502.511, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348502.48, \"ph\": \"X\", \"dur\": 0.5383084333099115, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348502.296, \"ph\": \"X\", \"dur\": 0.7890035099903846, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348501.841, \"ph\": \"X\", \"dur\": 1.2769234801267084, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348501.698, \"ph\": \"X\", \"dur\": 1.4727400325587199, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348503.396, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348503.656, \"ph\": \"X\", \"dur\": 0.1322073538712943, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348504.874, \"ph\": \"X\", \"dur\": 0.10726257012199347, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348503.592, \"ph\": \"X\", \"dur\": 1.4390645744971637, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348505.41, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348505.696, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348507.998, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348507.932, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.846, \"ph\": \"X\", \"dur\": 11.519002239752128, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348508.521, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348508.823, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348509.146, \"ph\": \"X\", \"dur\": 0.5689905173215515, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348508.792, \"ph\": \"X\", \"dur\": 0.9805794491850148, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348508.621, \"ph\": \"X\", \"dur\": 1.202837472391285, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348496.644, \"ph\": \"X\", \"dur\": 13.333485809676267, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.174, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.725, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.699, \"ph\": \"X\", \"dur\": 0.26765752962999767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.613, \"ph\": \"X\", \"dur\": 0.38215408703928844, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.065, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.563, \"ph\": \"X\", \"dur\": 0.5774717437963137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.359, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.335, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.287, \"ph\": \"X\", \"dur\": 0.33800181980302596, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.673, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.228, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.924, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.899, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.849, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.178, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348511.807, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.428, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.405, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.353, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.763, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.309, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.996, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.972, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.922, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.277, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348512.88, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.415, \"ph\": \"X\", \"dur\": 2.963689757254429, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348510.34, \"ph\": \"X\", \"dur\": 3.0739457014263385, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.46, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.824, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.801, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.751, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348514.074, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.709, \"ph\": \"X\", \"dur\": 1.4004001596857474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.363, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.334, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.282, \"ph\": \"X\", \"dur\": 0.340496298177956, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.675, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.225, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.0, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.972, \"ph\": \"X\", \"dur\": 0.26366636423010953, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.917, \"ph\": \"X\", \"dur\": 0.34723138979026724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.314, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348515.851, \"ph\": \"X\", \"dur\": 0.5303261025101352, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.594, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.568, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.516, \"ph\": \"X\", \"dur\": 0.29734182229166567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.864, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348516.468, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.128, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.101, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.053, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.386, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.009, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.609, \"ph\": \"X\", \"dur\": 3.912090435402846, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348513.57, \"ph\": \"X\", \"dur\": 3.9869247866507482, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.587, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.933, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.908, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.859, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.208, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.814, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.496, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.475, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.424, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.774, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.367, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.03, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.002, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.953, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.284, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348518.912, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.534, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.509, \"ph\": \"X\", \"dur\": 0.1943198654070533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.462, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.776, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.417, \"ph\": \"X\", \"dur\": 0.4220657410381697, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348520.062, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348520.026, \"ph\": \"X\", \"dur\": 0.20729115295668973, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.971, \"ph\": \"X\", \"dur\": 0.2913550741918335, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.237, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348519.932, \"ph\": \"X\", \"dur\": 1.3951617550983941, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.723, \"ph\": \"X\", \"dur\": 3.667631554659698, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348517.681, \"ph\": \"X\", \"dur\": 3.7506976845448694, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.466, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.838, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.813, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.758, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.127, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.711, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.446, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.416, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.363, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.746, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.322, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.093, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.025, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.923, \"ph\": \"X\", \"dur\": 0.42356242806312777, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.397, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348522.88, \"ph\": \"X\", \"dur\": 0.5789684308212718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.644, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.623, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.574, \"ph\": \"X\", \"dur\": 0.3113109011912741, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.934, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348523.531, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.179, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.154, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.107, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.436, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.066, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.611, \"ph\": \"X\", \"dur\": 2.9469767521423975, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348521.566, \"ph\": \"X\", \"dur\": 3.0312901212150343, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.627, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348524.75, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.284, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8922489152752204}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.499, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.699, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.055, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.16, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.987, \"ph\": \"X\", \"dur\": 0.4909133441862399, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.558, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.659, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.516, \"ph\": \"X\", \"dur\": 0.3836507740642464, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.994, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348532.944, \"ph\": \"X\", \"dur\": 0.13096011468382923, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348533.15, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348533.108, \"ph\": \"X\", \"dur\": 1.02498116425877, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348534.208, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348534.364, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348534.549, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348534.852, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348535.451, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348535.77, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348536.028, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348536.423, \"ph\": \"X\", \"dur\": 0.5844562832461179, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348536.388, \"ph\": \"X\", \"dur\": 0.647566586131849, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348536.165, \"ph\": \"X\", \"dur\": 0.9623697570480252, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348535.738, \"ph\": \"X\", \"dur\": 1.4245965999225692, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348535.579, \"ph\": \"X\", \"dur\": 1.6378745009790912, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348537.785, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.099, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.318, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.695, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.586, \"ph\": \"X\", \"dur\": 0.618381189145167, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.429, \"ph\": \"X\", \"dur\": 0.8451292734263114, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348538.066, \"ph\": \"X\", \"dur\": 1.2854047066014707, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348537.897, \"ph\": \"X\", \"dur\": 1.507413281970248, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348539.631, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348539.879, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348540.059, \"ph\": \"X\", \"dur\": 0.06610367693564714, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348539.822, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348540.497, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348540.755, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348542.906, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348542.857, \"ph\": \"X\", \"dur\": 0.16837729030778048, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.818, \"ph\": \"X\", \"dur\": 11.400265069105455, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348543.386, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348543.662, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348544.015, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348543.632, \"ph\": \"X\", \"dur\": 0.9853189580973819, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348543.485, \"ph\": \"X\", \"dur\": 1.1843783324168022, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348531.616, \"ph\": \"X\", \"dur\": 13.200031216617509, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348544.972, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.486, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.462, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.397, \"ph\": \"X\", \"dur\": 0.3921320005390087, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.846, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.32, \"ph\": \"X\", \"dur\": 0.5921891662084011, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348546.17, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348546.135, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348546.05, \"ph\": \"X\", \"dur\": 0.3619488122023547, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348546.473, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348546.007, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348547.702, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348547.674, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348547.619, \"ph\": \"X\", \"dur\": 0.32802390630330563, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.003, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348547.566, \"ph\": \"X\", \"dur\": 0.5031362882233973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.26, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.236, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.181, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.541, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.134, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.776, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.752, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.704, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.052, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348548.664, \"ph\": \"X\", \"dur\": 0.4500038988373866, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.195, \"ph\": \"X\", \"dur\": 3.9632272420889127, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348545.14, \"ph\": \"X\", \"dur\": 4.056271285473804, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.246, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.626, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.6, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.55, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.904, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.507, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.202, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.178, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.13, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.476, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.088, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.782, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.753, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.703, \"ph\": \"X\", \"dur\": 0.3110614533537811, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.06, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348550.639, \"ph\": \"X\", \"dur\": 0.48367935689894265, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.319, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.294, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.248, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.571, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.204, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.839, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.814, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.766, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.091, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348551.725, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.403, \"ph\": \"X\", \"dur\": 2.808034306658792, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348549.363, \"ph\": \"X\", \"dur\": 2.887109271144076, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.299, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.653, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.631, \"ph\": \"X\", \"dur\": 1.1322437343807636, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.581, \"ph\": \"X\", \"dur\": 1.2125659380535123, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348553.847, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.539, \"ph\": \"X\", \"dur\": 1.3727114497240234, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.139, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.111, \"ph\": \"X\", \"dur\": 0.22674808428114435, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.058, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.43, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.013, \"ph\": \"X\", \"dur\": 0.48218266987398467, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.702, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.673, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.621, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.985, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348554.575, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.264, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.234, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.187, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.55, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.143, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.808, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.784, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.735, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.062, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348555.691, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.454, \"ph\": \"X\", \"dur\": 3.730991305382922, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348552.4, \"ph\": \"X\", \"dur\": 3.821291422555391, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.252, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.603, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.579, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.527, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.883, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.487, \"ph\": \"X\", \"dur\": 0.4564895426122048, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.148, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.123, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.074, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.427, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.033, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.676, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.651, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.603, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.921, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348557.561, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348558.174, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348558.149, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348558.099, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348558.418, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348558.055, \"ph\": \"X\", \"dur\": 1.297128754963642, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348559.597, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348559.568, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348559.52, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348559.89, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348559.46, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.395, \"ph\": \"X\", \"dur\": 3.6264726614733513, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348556.356, \"ph\": \"X\", \"dur\": 3.7289957226829777, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348560.116, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348560.249, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348566.647, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8888852139168283}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348566.87, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.074, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.438, \"ph\": \"X\", \"dur\": 0.06211251153575901, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.537, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.381, \"ph\": \"X\", \"dur\": 0.4694608301618412, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.927, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.014, \"ph\": \"X\", \"dur\": 0.18982980433217916, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.882, \"ph\": \"X\", \"dur\": 0.34573470276530915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.293, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.263, \"ph\": \"X\", \"dur\": 0.11524490092176974, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.458, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.42, \"ph\": \"X\", \"dur\": 0.1110042876843886, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.563, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.688, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348568.834, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348569.068, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348569.597, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348569.94, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348570.237, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348570.641, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348570.611, \"ph\": \"X\", \"dur\": 0.5664960389466214, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348570.365, \"ph\": \"X\", \"dur\": 0.8892815406625738, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348569.907, \"ph\": \"X\", \"dur\": 1.3801948848488137, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348569.745, \"ph\": \"X\", \"dur\": 1.6086891039924092, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348571.959, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.256, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.465, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.775, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.748, \"ph\": \"X\", \"dur\": 0.5141119930730897, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.594, \"ph\": \"X\", \"dur\": 0.7316305073669926, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.227, \"ph\": \"X\", \"dur\": 1.167665327304771, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348572.087, \"ph\": \"X\", \"dur\": 1.3786981978238557, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348573.706, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348574.005, \"ph\": \"X\", \"dur\": 0.08406392123514372, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348574.151, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348573.931, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348575.547, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348575.839, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348578.04, \"ph\": \"X\", \"dur\": 0.09179680419742697, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348577.982, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348567.196, \"ph\": \"X\", \"dur\": 11.19322336398626, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348578.539, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348578.87, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348579.185, \"ph\": \"X\", \"dur\": 0.5348161635850094, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348578.836, \"ph\": \"X\", \"dur\": 0.9394205559986685, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348578.67, \"ph\": \"X\", \"dur\": 1.1586852051550225, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348566.983, \"ph\": \"X\", \"dur\": 13.005711351210454, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.19, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.675, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.65, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.594, \"ph\": \"X\", \"dur\": 0.31679875361612025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.968, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.545, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.242, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.218, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.17, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.514, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.126, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.778, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.754, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.705, \"ph\": \"X\", \"dur\": 0.340496298177956, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.115, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348581.663, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.394, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.365, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.309, \"ph\": \"X\", \"dur\": 0.36369494706480576, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.721, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.253, \"ph\": \"X\", \"dur\": 0.527831624135205, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.95, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.926, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.878, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.233, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348582.836, \"ph\": \"X\", \"dur\": 0.45748733396217683, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.406, \"ph\": \"X\", \"dur\": 2.9467273043049045, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348580.354, \"ph\": \"X\", \"dur\": 3.0362790779648945, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.434, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.779, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.755, \"ph\": \"X\", \"dur\": 0.22475250158120028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.706, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348584.056, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.662, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348584.407, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348584.384, \"ph\": \"X\", \"dur\": 1.2497336658399705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348584.332, \"ph\": \"X\", \"dur\": 1.3427777092248625, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348585.724, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348584.284, \"ph\": \"X\", \"dur\": 1.511154999532643, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.033, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.009, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348585.946, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.314, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348585.905, \"ph\": \"X\", \"dur\": 0.4786904001490825, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.641, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.611, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.535, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.911, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348586.487, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.175, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.152, \"ph\": \"X\", \"dur\": 0.2222580232062702, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.104, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.447, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.059, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.574, \"ph\": \"X\", \"dur\": 3.99291153475058, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348583.535, \"ph\": \"X\", \"dur\": 4.069492020860934, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.637, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.988, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.964, \"ph\": \"X\", \"dur\": 0.22425360590621427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.905, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.265, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.863, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.56, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.533, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.484, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.852, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.441, \"ph\": \"X\", \"dur\": 0.4746992347491944, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.103, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.078, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.03, \"ph\": \"X\", \"dur\": 0.2998363006665957, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.38, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348588.987, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.658, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.633, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.585, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.909, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348589.542, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348590.158, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348590.131, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348590.082, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348590.426, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348590.039, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.776, \"ph\": \"X\", \"dur\": 3.6978147429963517, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348587.734, \"ph\": \"X\", \"dur\": 3.796845534481076, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.561, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.985, \"ph\": \"X\", \"dur\": 0.05587631559843381, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.956, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.9, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348592.281, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.856, \"ph\": \"X\", \"dur\": 0.494156166073649, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348592.594, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348592.569, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348592.519, \"ph\": \"X\", \"dur\": 0.3976198529638549, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.001, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348592.472, \"ph\": \"X\", \"dur\": 0.5981759143082334, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.274, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.25, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.195, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.528, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.148, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.781, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.754, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.703, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.083, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348593.662, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.329, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.302, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.254, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.583, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.212, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.73, \"ph\": \"X\", \"dur\": 2.9696765053542613, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348591.682, \"ph\": \"X\", \"dur\": 3.052243739564447, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.766, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348594.875, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348601.409, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.885230136147105}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348601.638, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348601.846, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.159, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.272, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.13, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.628, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.717, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.598, \"ph\": \"X\", \"dur\": 0.33999740250297006, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348603.002, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348602.971, \"ph\": \"X\", \"dur\": 0.12497336658399705, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348603.187, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348603.145, \"ph\": \"X\", \"dur\": 0.09803300013475218, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348603.274, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348605.228, \"ph\": \"X\", \"dur\": 0.07957386016026957, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348605.433, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348605.733, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348606.298, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348606.655, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348606.912, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348607.327, \"ph\": \"X\", \"dur\": 0.5452929727597157, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348607.281, \"ph\": \"X\", \"dur\": 0.6198778761701251, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348607.088, \"ph\": \"X\", \"dur\": 0.894270497412434, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348606.621, \"ph\": \"X\", \"dur\": 1.3974067856358312, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348606.451, \"ph\": \"X\", \"dur\": 1.638872292329063, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348608.65, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348608.931, \"ph\": \"X\", \"dur\": 0.040410549673867306, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348609.14, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348609.456, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348609.423, \"ph\": \"X\", \"dur\": 0.48717162662384483, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348609.252, \"ph\": \"X\", \"dur\": 0.7261426549421466, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348608.898, \"ph\": \"X\", \"dur\": 1.1329920778932427, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348608.76, \"ph\": \"X\", \"dur\": 1.3228218822254219, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348610.324, \"ph\": \"X\", \"dur\": 0.06834870747308422, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348610.581, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348610.718, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348610.503, \"ph\": \"X\", \"dur\": 0.33800181980302596, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348611.145, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348611.445, \"ph\": \"X\", \"dur\": 0.17411459057011963, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348613.545, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348613.492, \"ph\": \"X\", \"dur\": 0.17012342517023152, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348601.961, \"ph\": \"X\", \"dur\": 11.877957677904565, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348613.961, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348614.25, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348614.582, \"ph\": \"X\", \"dur\": 0.5413018073598276, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348614.219, \"ph\": \"X\", \"dur\": 0.9586280394856301, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348614.074, \"ph\": \"X\", \"dur\": 1.1544445919176414, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348601.747, \"ph\": \"X\", \"dur\": 13.640306649792668, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348615.593, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.142, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.106, \"ph\": \"X\", \"dur\": 0.3048252574164559, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.014, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.498, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348615.968, \"ph\": \"X\", \"dur\": 0.617383397795195, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.803, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.775, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.718, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348617.083, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348616.674, \"ph\": \"X\", \"dur\": 0.47993763933654754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348617.37, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348617.341, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348617.287, \"ph\": \"X\", \"dur\": 1.4148681342603417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348618.759, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348617.242, \"ph\": \"X\", \"dur\": 1.606194625617479, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.086, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.056, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348618.999, \"ph\": \"X\", \"dur\": 0.33675458061556096, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.395, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348618.949, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.651, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.625, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.572, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.932, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348619.523, \"ph\": \"X\", \"dur\": 0.4737014433992223, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348615.831, \"ph\": \"X\", \"dur\": 4.223650784431613, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348615.78, \"ph\": \"X\", \"dur\": 4.314200349441575, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.148, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.557, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.534, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.486, \"ph\": \"X\", \"dur\": 0.28811225230442433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.824, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.428, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.132, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.107, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.06, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.39, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.016, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.646, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.622, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.575, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.953, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348621.534, \"ph\": \"X\", \"dur\": 0.5071274536232854, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.227, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.205, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.16, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.476, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.115, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.748, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.724, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.677, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.025, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348622.636, \"ph\": \"X\", \"dur\": 0.4487566596499215, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.314, \"ph\": \"X\", \"dur\": 2.8232506247458655, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348620.272, \"ph\": \"X\", \"dur\": 2.902076141393656, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.203, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.547, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.521, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.472, \"ph\": \"X\", \"dur\": 1.3138417600756735, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348624.832, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.428, \"ph\": \"X\", \"dur\": 1.4916980682081882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.165, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.135, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.087, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.468, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.034, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.725, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.702, \"ph\": \"X\", \"dur\": 0.22924256265607443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.656, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.008, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348625.61, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.257, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.235, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.188, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.54, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.144, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.805, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.781, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.716, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.064, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348626.675, \"ph\": \"X\", \"dur\": 0.4507522423498656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.34, \"ph\": \"X\", \"dur\": 3.8414966973923246, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348623.3, \"ph\": \"X\", \"dur\": 3.9375341148271326, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.272, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.676, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.652, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.604, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.931, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.551, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.206, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.183, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.134, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.509, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.092, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.769, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.746, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.701, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.04, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348628.656, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.292, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.268, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.22, \"ph\": \"X\", \"dur\": 0.2878628044669313, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.559, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.175, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.805, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.781, \"ph\": \"X\", \"dur\": 1.2412524393652082, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.735, \"ph\": \"X\", \"dur\": 1.3210757473629708, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348631.105, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348629.691, \"ph\": \"X\", \"dur\": 1.479724572008524, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.427, \"ph\": \"X\", \"dur\": 3.8045784174433592, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348627.37, \"ph\": \"X\", \"dur\": 3.899119147853209, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348631.326, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348631.484, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348637.775, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.881872570990814}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.01, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.212, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.498, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.598, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.463, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.973, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.081, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.931, \"ph\": \"X\", \"dur\": 0.3664388732772289, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.364, \"ph\": \"X\", \"dur\": 0.03716772778645821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.334, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.51, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.481, \"ph\": \"X\", \"dur\": 0.08855398231001788, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.606, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.701, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348639.901, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348640.141, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348640.713, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.038, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.337, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.731, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.685, \"ph\": \"X\", \"dur\": 0.5857035224335829, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.482, \"ph\": \"X\", \"dur\": 0.866831235288203, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348641.003, \"ph\": \"X\", \"dur\": 1.3971573377983382, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348640.842, \"ph\": \"X\", \"dur\": 1.6101857910173671, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348642.951, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.223, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.422, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.715, \"ph\": \"X\", \"dur\": 0.5038846317358763, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.683, \"ph\": \"X\", \"dur\": 0.5627543213842263, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.532, \"ph\": \"X\", \"dur\": 0.8047187237524441, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.192, \"ph\": \"X\", \"dur\": 1.1990957548288899, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348643.053, \"ph\": \"X\", \"dur\": 1.3914200375359993, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348644.702, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348645.0, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348645.141, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348644.902, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348645.523, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348646.802, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348649.047, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348648.985, \"ph\": \"X\", \"dur\": 0.18109913001992387, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.319, \"ph\": \"X\", \"dur\": 11.057773188227555, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348649.521, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348649.837, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348650.158, \"ph\": \"X\", \"dur\": 0.5582642603093521, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348649.807, \"ph\": \"X\", \"dur\": 0.9651136832604483, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348649.628, \"ph\": \"X\", \"dur\": 1.197848515641425, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348638.135, \"ph\": \"X\", \"dur\": 12.83533847820273, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.138, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.651, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.628, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.54, \"ph\": \"X\", \"dur\": 0.38514746108920445, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.985, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.494, \"ph\": \"X\", \"dur\": 0.5567675732843941, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.316, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.293, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.241, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.596, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.195, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.877, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.853, \"ph\": \"X\", \"dur\": 0.20828894430666176, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.803, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.14, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348652.762, \"ph\": \"X\", \"dur\": 0.44177212020011736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.401, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.376, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.325, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.672, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.284, \"ph\": \"X\", \"dur\": 0.4564895426122048, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.905, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.881, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.833, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.165, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348653.793, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.359, \"ph\": \"X\", \"dur\": 2.933506568917775, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348651.308, \"ph\": \"X\", \"dur\": 3.021062759877821, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.359, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.706, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.682, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.632, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.964, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.589, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348655.268, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348655.241, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348655.193, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348656.561, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348655.148, \"ph\": \"X\", \"dur\": 1.5246251827572654, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348656.955, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348656.926, \"ph\": \"X\", \"dur\": 0.26765752962999767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348656.865, \"ph\": \"X\", \"dur\": 0.35820709463995964, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.283, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348656.811, \"ph\": \"X\", \"dur\": 0.5393062246598834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.578, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.552, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.497, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.88, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348657.447, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.152, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.124, \"ph\": \"X\", \"dur\": 0.2384721326433157, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.077, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.441, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.033, \"ph\": \"X\", \"dur\": 0.47195530853677126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.501, \"ph\": \"X\", \"dur\": 4.058516316011241, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348654.459, \"ph\": \"X\", \"dur\": 4.13883851968399, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.629, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.978, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.952, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.901, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.246, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.861, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.521, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.497, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.448, \"ph\": \"X\", \"dur\": 0.2841210869045362, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.779, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.405, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.048, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.022, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.974, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.358, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348659.928, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.655, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.631, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.581, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.918, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348660.542, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348661.179, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348661.153, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348661.101, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348661.433, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348661.057, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.767, \"ph\": \"X\", \"dur\": 2.7885773753343375, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348658.725, \"ph\": \"X\", \"dur\": 2.8664051006321563, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348662.623, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.059, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.035, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348662.978, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.364, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348662.929, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.654, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.629, \"ph\": \"X\", \"dur\": 0.3123086925412461, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.577, \"ph\": \"X\", \"dur\": 0.39537482242641786, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.033, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348663.535, \"ph\": \"X\", \"dur\": 0.5684916216465655, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.334, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.304, \"ph\": \"X\", \"dur\": 0.2526906593804172, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.245, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.644, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.193, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.915, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.889, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.835, \"ph\": \"X\", \"dur\": 0.30033519634158173, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.188, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348664.79, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.445, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.421, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.375, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.724, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.332, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348662.811, \"ph\": \"X\", \"dur\": 3.0332857039149785, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348662.761, \"ph\": \"X\", \"dur\": 3.135559317287112, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348665.929, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348666.05, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348672.477, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8782930208136764}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348672.7, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348672.882, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.188, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.276, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.146, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.598, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.7, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.558, \"ph\": \"X\", \"dur\": 0.3602026773399037, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.985, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348673.954, \"ph\": \"X\", \"dur\": 0.1142471095717977, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348674.137, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348674.106, \"ph\": \"X\", \"dur\": 0.08581005609759478, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348674.229, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348674.343, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348674.499, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348675.798, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348676.351, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348676.692, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348676.949, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348677.327, \"ph\": \"X\", \"dur\": 0.5300766546726422, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348677.279, \"ph\": \"X\", \"dur\": 0.6041626624080656, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348677.086, \"ph\": \"X\", \"dur\": 0.9027517238871963, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348676.642, \"ph\": \"X\", \"dur\": 1.4001507118482543, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348676.463, \"ph\": \"X\", \"dur\": 1.634881126929175, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348678.646, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348678.95, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348679.152, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348679.476, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348679.447, \"ph\": \"X\", \"dur\": 0.5280810719726982, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348679.273, \"ph\": \"X\", \"dur\": 0.770544370015902, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348678.918, \"ph\": \"X\", \"dur\": 1.1783915843169703, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348678.753, \"ph\": \"X\", \"dur\": 1.3984045769858033, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348680.359, \"ph\": \"X\", \"dur\": 0.09977913499720323, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348680.668, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348680.842, \"ph\": \"X\", \"dur\": 0.07358711206043739, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348680.596, \"ph\": \"X\", \"dur\": 0.3781629216394003, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348681.301, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348681.558, \"ph\": \"X\", \"dur\": 0.1880836694697281, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348683.68, \"ph\": \"X\", \"dur\": 0.1172404836217138, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348683.631, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348672.988, \"ph\": \"X\", \"dur\": 11.091947541964096, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348684.213, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348684.496, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348684.86, \"ph\": \"X\", \"dur\": 0.6096505148329118, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348684.464, \"ph\": \"X\", \"dur\": 1.0636455790701864, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348684.314, \"ph\": \"X\", \"dur\": 1.263203849064593, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348672.805, \"ph\": \"X\", \"dur\": 12.901442155138378, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348685.914, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.389, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.366, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.309, \"ph\": \"X\", \"dur\": 0.3631960513898198, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.732, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.261, \"ph\": \"X\", \"dur\": 0.5570170211218871, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.039, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.013, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.964, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.327, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.921, \"ph\": \"X\", \"dur\": 0.47020917367432025, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.579, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.555, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.506, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.859, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348687.465, \"ph\": \"X\", \"dur\": 1.4323294828848525, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.15, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.122, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.064, \"ph\": \"X\", \"dur\": 0.38015850433934434, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.506, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.012, \"ph\": \"X\", \"dur\": 0.5617565300342542, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.776, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.748, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.693, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.081, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348689.645, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.13, \"ph\": \"X\", \"dur\": 4.058266868173749, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348686.08, \"ph\": \"X\", \"dur\": 4.158046003170952, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.268, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.686, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.661, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.609, \"ph\": \"X\", \"dur\": 0.3893880743265856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.047, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.566, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.346, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.321, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.262, \"ph\": \"X\", \"dur\": 0.31580096226614823, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.623, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.22, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.924, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.896, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.845, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.183, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348691.798, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.467, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.442, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.392, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.717, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.348, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.984, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.957, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.907, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.286, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348692.861, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.463, \"ph\": \"X\", \"dur\": 2.9429855867425094, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348690.418, \"ph\": \"X\", \"dur\": 3.026301164465174, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.474, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.842, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.816, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.767, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348694.125, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.724, \"ph\": \"X\", \"dur\": 1.386680528623632, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.376, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.35, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.294, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.673, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.243, \"ph\": \"X\", \"dur\": 0.5121164103731456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.967, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.945, \"ph\": \"X\", \"dur\": 0.2349798629184136, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.884, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.261, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348695.838, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.519, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.497, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.445, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.826, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.403, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.084, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.057, \"ph\": \"X\", \"dur\": 0.21028452700660583, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.009, \"ph\": \"X\", \"dur\": 0.2868650131169593, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.343, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348696.967, \"ph\": \"X\", \"dur\": 0.4390281939876942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.635, \"ph\": \"X\", \"dur\": 3.831269336055111, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348693.59, \"ph\": \"X\", \"dur\": 3.918326631340171, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.539, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.887, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.862, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.812, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.145, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.77, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.419, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.395, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.345, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.693, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.301, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.941, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.916, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.868, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.22, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348698.827, \"ph\": \"X\", \"dur\": 0.4569884382871908, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.493, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.467, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.419, \"ph\": \"X\", \"dur\": 0.27613875610475996, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.744, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.377, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348700.01, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.985, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.94, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348701.133, \"ph\": \"X\", \"dur\": 0.05612576343592682, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348699.882, \"ph\": \"X\", \"dur\": 1.3495128008371737, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.677, \"ph\": \"X\", \"dur\": 3.6259737657983657, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348697.635, \"ph\": \"X\", \"dur\": 3.7057970737961283, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348701.377, \"ph\": \"X\", \"dur\": 0.05812134613587089, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348701.566, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348707.771, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8749494247116575}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348707.997, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.184, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.483, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.621, \"ph\": \"X\", \"dur\": 0.26790697746749065, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.44, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.012, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.123, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.962, \"ph\": \"X\", \"dur\": 0.39238144837650174, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.442, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.39, \"ph\": \"X\", \"dur\": 0.15365986789569297, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.616, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.585, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.702, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.797, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348709.959, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348710.174, \"ph\": \"X\", \"dur\": 0.06585422909815414, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348710.745, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.094, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.419, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.807, \"ph\": \"X\", \"dur\": 0.55477199058445, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.77, \"ph\": \"X\", \"dur\": 0.6378381204696217, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.55, \"ph\": \"X\", \"dur\": 0.9479017824734307, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348711.06, \"ph\": \"X\", \"dur\": 1.4921969638831742, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348710.873, \"ph\": \"X\", \"dur\": 1.7451370711010845, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.152, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.433, \"ph\": \"X\", \"dur\": 0.0708431858480143, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.672, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348714.034, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348714.003, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.788, \"ph\": \"X\", \"dur\": 0.7830167618905524, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.402, \"ph\": \"X\", \"dur\": 1.203336368066271, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348713.26, \"ph\": \"X\", \"dur\": 1.3999012640107615, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348714.865, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348715.099, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348715.235, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348715.039, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348715.629, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348715.904, \"ph\": \"X\", \"dur\": 0.20878783998164777, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348718.152, \"ph\": \"X\", \"dur\": 0.10127582202216127, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348718.086, \"ph\": \"X\", \"dur\": 1.2749278974267644, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.311, \"ph\": \"X\", \"dur\": 11.294000290333434, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348719.754, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348720.051, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348720.375, \"ph\": \"X\", \"dur\": 0.5941847489083453, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348720.018, \"ph\": \"X\", \"dur\": 1.0070209199592737, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348719.859, \"ph\": \"X\", \"dur\": 1.2185526861533444, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348708.105, \"ph\": \"X\", \"dur\": 13.132680300494396, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.385, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.843, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.818, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.761, \"ph\": \"X\", \"dur\": 0.3292711454907707, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.147, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.714, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.437, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.41, \"ph\": \"X\", \"dur\": 0.26241912504264453, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.36, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.754, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.305, \"ph\": \"X\", \"dur\": 0.5146108887480757, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.002, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.979, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.927, \"ph\": \"X\", \"dur\": 0.2926023133792985, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.266, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348722.887, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.501, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.475, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.427, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.762, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.386, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.023, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.997, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.949, \"ph\": \"X\", \"dur\": 0.3357567892655889, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.332, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348723.906, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.581, \"ph\": \"X\", \"dur\": 2.8549305001074776, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348721.531, \"ph\": \"X\", \"dur\": 2.961694174554485, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.52, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.894, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.869, \"ph\": \"X\", \"dur\": 0.19955826999440646, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.819, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.145, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.776, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.432, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.408, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.359, \"ph\": \"X\", \"dur\": 0.30731973579138594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.711, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348725.314, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348726.99, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348726.961, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348726.904, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.289, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348726.853, \"ph\": \"X\", \"dur\": 0.5036351838983834, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.577, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.551, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.497, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.86, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348727.45, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.121, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.097, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.05, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.381, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.008, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.664, \"ph\": \"X\", \"dur\": 3.8382538755049156, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348724.622, \"ph\": \"X\", \"dur\": 3.9168299443152126, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.571, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.935, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.91, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.862, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.189, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.818, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.465, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.439, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.391, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.713, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.345, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.976, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.952, \"ph\": \"X\", \"dur\": 0.25194231586793814, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.905, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.275, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348729.85, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.519, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.494, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.448, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.77, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.406, \"ph\": \"X\", \"dur\": 0.4255580107630718, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348731.039, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348731.016, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.966, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348731.288, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348730.901, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.709, \"ph\": \"X\", \"dur\": 2.6932883014120086, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348728.665, \"ph\": \"X\", \"dur\": 2.8000519758590157, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348731.493, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.734, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.703, \"ph\": \"X\", \"dur\": 0.2616707815301655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.655, \"ph\": \"X\", \"dur\": 0.34174353736542107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.049, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.6, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.337, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.308, \"ph\": \"X\", \"dur\": 0.2402182675057668, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.257, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.628, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.21, \"ph\": \"X\", \"dur\": 0.48692217878635174, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.901, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.871, \"ph\": \"X\", \"dur\": 0.21527348375646596, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.821, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.178, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348733.774, \"ph\": \"X\", \"dur\": 0.47320254772423637, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.451, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.418, \"ph\": \"X\", \"dur\": 0.23946992399328776, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.367, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.748, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.321, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348735.035, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348735.006, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.954, \"ph\": \"X\", \"dur\": 0.31629985794113424, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348735.333, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348734.907, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.489, \"ph\": \"X\", \"dur\": 2.9661842356293593, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348732.424, \"ph\": \"X\", \"dur\": 3.0699545360264504, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348735.523, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348735.631, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348741.941, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8714377809827211}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.151, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.323, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.595, \"ph\": \"X\", \"dur\": 0.08107054718522763, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.724, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.564, \"ph\": \"X\", \"dur\": 0.5001429141734812, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.15, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.236, \"ph\": \"X\", \"dur\": 0.18384305623234695, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.098, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.512, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.481, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.652, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.612, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.753, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348743.853, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348744.054, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348744.288, \"ph\": \"X\", \"dur\": 0.0865583996100738, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348744.846, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.155, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.417, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.864, \"ph\": \"X\", \"dur\": 0.5645004562466773, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.799, \"ph\": \"X\", \"dur\": 0.6575444996315694, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.55, \"ph\": \"X\", \"dur\": 0.9873145407973261, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348746.12, \"ph\": \"X\", \"dur\": 1.453033653396772, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348745.949, \"ph\": \"X\", \"dur\": 1.6917552338775808, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.155, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.449, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.666, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.98, \"ph\": \"X\", \"dur\": 0.44526438992501943, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.951, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.794, \"ph\": \"X\", \"dur\": 0.7568247389537865, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.416, \"ph\": \"X\", \"dur\": 1.1883694978166905, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348748.273, \"ph\": \"X\", \"dur\": 1.382190467548758, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348749.881, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348750.127, \"ph\": \"X\", \"dur\": 0.12946342765887117, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348750.407, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348750.067, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348750.864, \"ph\": \"X\", \"dur\": 0.37866181731438625, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348751.3, \"ph\": \"X\", \"dur\": 0.17411459057011963, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348753.577, \"ph\": \"X\", \"dur\": 0.11075483984689559, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348753.44, \"ph\": \"X\", \"dur\": 0.30831752714135796, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.43, \"ph\": \"X\", \"dur\": 11.541701992963992, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348754.131, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348754.471, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348754.809, \"ph\": \"X\", \"dur\": 0.5844562832461179, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348754.439, \"ph\": \"X\", \"dur\": 1.0100142940091896, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348754.281, \"ph\": \"X\", \"dur\": 1.2180537904783584, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348742.26, \"ph\": \"X\", \"dur\": 13.407072921736706, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348755.854, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.384, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.359, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.3, \"ph\": \"X\", \"dur\": 0.3948759267514318, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.745, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.242, \"ph\": \"X\", \"dur\": 0.5782200873087927, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.067, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.039, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.979, \"ph\": \"X\", \"dur\": 0.3300194890032497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.365, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.926, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.638, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.612, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.559, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.914, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348757.511, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348759.975, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348759.947, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348759.894, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.277, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348759.823, \"ph\": \"X\", \"dur\": 0.5220943238728659, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.564, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.522, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.466, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.851, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348760.427, \"ph\": \"X\", \"dur\": 0.4919111355362119, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.099, \"ph\": \"X\", \"dur\": 4.865480070301122, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348756.021, \"ph\": \"X\", \"dur\": 4.999932454709854, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.067, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.484, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.457, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.404, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.743, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.359, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.06, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.031, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.962, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.33, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.917, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.612, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.585, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.536, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.908, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348762.493, \"ph\": \"X\", \"dur\": 0.4784409523115895, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.202, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.173, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.101, \"ph\": \"X\", \"dur\": 0.3307678325157287, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.478, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.055, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.744, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.72, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.669, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.994, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348763.626, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.231, \"ph\": \"X\", \"dur\": 2.8851136884441315, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348761.189, \"ph\": \"X\", \"dur\": 2.962691965904457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.181, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.556, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.532, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.481, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.804, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.435, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348765.097, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348765.071, \"ph\": \"X\", \"dur\": 1.175148762429561, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348765.021, \"ph\": \"X\", \"dur\": 1.2587137879897188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.329, \"ph\": \"X\", \"dur\": 0.03542159292400715, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.976, \"ph\": \"X\", \"dur\": 1.425843839110034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.632, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.585, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.53, \"ph\": \"X\", \"dur\": 0.36943224732714497, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.952, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348766.487, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.235, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.204, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.153, \"ph\": \"X\", \"dur\": 0.34024685034046304, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.544, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.111, \"ph\": \"X\", \"dur\": 0.5026373925484113, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.813, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.784, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.735, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.139, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348767.69, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.319, \"ph\": \"X\", \"dur\": 3.953748224264178, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348764.276, \"ph\": \"X\", \"dur\": 4.037562697661829, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.388, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.745, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.721, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.671, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.061, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.629, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.354, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.325, \"ph\": \"X\", \"dur\": 0.2559334812678263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.276, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.66, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.227, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.95, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.925, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.876, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.226, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348769.835, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.472, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.448, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.4, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.725, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.36, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.998, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.969, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.904, \"ph\": \"X\", \"dur\": 0.29534623959172157, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348771.25, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348770.86, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.534, \"ph\": \"X\", \"dur\": 3.698812534346324, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348768.485, \"ph\": \"X\", \"dur\": 3.7868676209813557, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348772.305, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348772.458, \"ph\": \"X\", \"dur\": 0.0800727558352556, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348779.24, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8681141624353363}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348779.551, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348779.763, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.146, \"ph\": \"X\", \"dur\": 0.08381447339765072, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.26, \"ph\": \"X\", \"dur\": 0.28586722176698726, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.086, \"ph\": \"X\", \"dur\": 0.5006418098484672, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.716, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.814, \"ph\": \"X\", \"dur\": 0.18084968218243086, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348780.635, \"ph\": \"X\", \"dur\": 0.39936598782630595, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.1, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.068, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.251, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.206, \"ph\": \"X\", \"dur\": 0.1688761859827665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.409, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.539, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348781.8, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348782.048, \"ph\": \"X\", \"dur\": 0.08730674312255284, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348782.735, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.044, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.343, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.803, \"ph\": \"X\", \"dur\": 0.5804651178462298, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.741, \"ph\": \"X\", \"dur\": 0.6705157871812057, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.492, \"ph\": \"X\", \"dur\": 1.0012836196969344, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348783.009, \"ph\": \"X\", \"dur\": 1.5433337705692411, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348782.866, \"ph\": \"X\", \"dur\": 1.7433909362386335, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.267, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.561, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.857, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348786.21, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348786.18, \"ph\": \"X\", \"dur\": 0.5091230363232295, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.973, \"ph\": \"X\", \"dur\": 0.7944913624152307, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.527, \"ph\": \"X\", \"dur\": 1.2921397982137819, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348785.379, \"ph\": \"X\", \"dur\": 1.5049188035953178, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348787.121, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348787.423, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348787.588, \"ph\": \"X\", \"dur\": 0.06560478126066113, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348787.339, \"ph\": \"X\", \"dur\": 0.3761673389394562, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348788.051, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348788.368, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348790.698, \"ph\": \"X\", \"dur\": 0.10451864390957039, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348790.637, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348779.881, \"ph\": \"X\", \"dur\": 11.197214529386146, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348792.203, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348792.535, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348792.959, \"ph\": \"X\", \"dur\": 0.5951825402583173, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348792.501, \"ph\": \"X\", \"dur\": 1.111290116031351, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348792.345, \"ph\": \"X\", \"dur\": 1.3208262995254778, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348779.681, \"ph\": \"X\", \"dur\": 14.140699011803642, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.008, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.567, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.53, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.448, \"ph\": \"X\", \"dur\": 0.3918825527015157, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.892, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.375, \"ph\": \"X\", \"dur\": 0.58794855297102, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.201, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.176, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.113, \"ph\": \"X\", \"dur\": 0.36244770787734076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.523, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.051, \"ph\": \"X\", \"dur\": 0.5375600897974324, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.775, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.752, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.696, \"ph\": \"X\", \"dur\": 0.3736728605645261, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.131, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348795.658, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.371, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.344, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.3, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.627, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.256, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.86, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.836, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.79, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.118, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348796.746, \"ph\": \"X\", \"dur\": 0.4355359242627921, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.235, \"ph\": \"X\", \"dur\": 2.9978641109909714, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348794.182, \"ph\": \"X\", \"dur\": 3.115104594612685, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.326, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.698, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.673, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.622, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.953, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.581, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.245, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.219, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.167, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.494, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.126, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.757, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.731, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.681, \"ph\": \"X\", \"dur\": 1.23726127396532, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348799.975, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348798.64, \"ph\": \"X\", \"dur\": 1.4051396685981143, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.286, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.258, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.202, \"ph\": \"X\", \"dur\": 0.3207899190160084, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.583, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.153, \"ph\": \"X\", \"dur\": 0.494904509586128, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.905, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.867, \"ph\": \"X\", \"dur\": 0.2696531123299417, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.814, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.214, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348800.769, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.492, \"ph\": \"X\", \"dur\": 3.8429933844172823, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348797.452, \"ph\": \"X\", \"dur\": 3.920322214040115, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.403, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.801, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.776, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.725, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.141, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.684, \"ph\": \"X\", \"dur\": 0.5215954281978799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.446, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.418, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.365, \"ph\": \"X\", \"dur\": 0.3634454992273128, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.782, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.323, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.042, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.017, \"ph\": \"X\", \"dur\": 0.2132779010565219, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.968, \"ph\": \"X\", \"dur\": 0.28736390879194534, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.304, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348802.925, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.55, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.524, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.477, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.818, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.435, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.066, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.041, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.994, \"ph\": \"X\", \"dur\": 0.2913550741918335, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.332, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348803.951, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.56, \"ph\": \"X\", \"dur\": 2.8881070624940475, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348801.505, \"ph\": \"X\", \"dur\": 2.980901658041447, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.515, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.851, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.828, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.779, \"ph\": \"X\", \"dur\": 1.2175548948033725, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.056, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.738, \"ph\": \"X\", \"dur\": 1.3801948848488137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.359, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.333, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.28, \"ph\": \"X\", \"dur\": 0.33825126764051894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.669, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.24, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.947, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.918, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.864, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.217, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348806.82, \"ph\": \"X\", \"dur\": 0.4639729777369951, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.492, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.467, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.42, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.745, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.357, \"ph\": \"X\", \"dur\": 0.47195530853677126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348808.028, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348808.002, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.95, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348808.306, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348807.906, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.652, \"ph\": \"X\", \"dur\": 3.770154615869324, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348804.61, \"ph\": \"X\", \"dur\": 3.8509757152170585, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348808.491, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348808.637, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.167, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8646644077483154}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.409, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.638, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.988, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.103, \"ph\": \"X\", \"dur\": 0.25867740748024937, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.951, \"ph\": \"X\", \"dur\": 0.4492555553249076, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.477, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.584, \"ph\": \"X\", \"dur\": 0.17411459057011963, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.433, \"ph\": \"X\", \"dur\": 0.3484786289777323, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.87, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.825, \"ph\": \"X\", \"dur\": 0.12397557523402501, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348817.031, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348816.983, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348817.13, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348817.275, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348817.459, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348817.706, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348818.324, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348818.633, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348818.889, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348820.332, \"ph\": \"X\", \"dur\": 0.5757256089338626, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348820.276, \"ph\": \"X\", \"dur\": 0.6582928431440483, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348820.025, \"ph\": \"X\", \"dur\": 1.0015330675344274, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348818.584, \"ph\": \"X\", \"dur\": 2.494977270605067, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348818.438, \"ph\": \"X\", \"dur\": 2.6922905100620365, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348821.674, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348821.958, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348822.211, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348822.545, \"ph\": \"X\", \"dur\": 0.4118383797009563, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348822.515, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348822.361, \"ph\": \"X\", \"dur\": 0.6912199576931254, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348821.925, \"ph\": \"X\", \"dur\": 1.1811355105293933, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348821.782, \"ph\": \"X\", \"dur\": 1.3769520629614047, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348823.381, \"ph\": \"X\", \"dur\": 0.10002858283469623, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348823.702, \"ph\": \"X\", \"dur\": 0.10676367444700746, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348823.873, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348823.608, \"ph\": \"X\", \"dur\": 0.4113394840259703, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348824.311, \"ph\": \"X\", \"dur\": 0.18982980433217916, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348824.572, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348826.81, \"ph\": \"X\", \"dur\": 0.09454073040985007, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348826.751, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.743, \"ph\": \"X\", \"dur\": 11.423214270154812, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348827.319, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348827.668, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348828.052, \"ph\": \"X\", \"dur\": 0.5358139549349813, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348827.636, \"ph\": \"X\", \"dur\": 1.0075198156342597, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348827.442, \"ph\": \"X\", \"dur\": 1.2542237269148448, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348815.544, \"ph\": \"X\", \"dur\": 13.286839064065076, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.014, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.518, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.493, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.437, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.812, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.391, \"ph\": \"X\", \"dur\": 0.5113680668606665, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.104, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.081, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.03, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.38, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.989, \"ph\": \"X\", \"dur\": 0.4544939599122607, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.614, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.589, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.544, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.895, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348830.5, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348831.129, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348831.105, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348831.056, \"ph\": \"X\", \"dur\": 1.2410029915277152, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.357, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348831.013, \"ph\": \"X\", \"dur\": 1.4148681342603417, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.639, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.61, \"ph\": \"X\", \"dur\": 0.25019618100548713, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.551, \"ph\": \"X\", \"dur\": 0.3352578935906029, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.947, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348832.5, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.224, \"ph\": \"X\", \"dur\": 3.8307704403801255, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348829.174, \"ph\": \"X\", \"dur\": 3.9263089621399474, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.142, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.555, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.53, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.48, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.827, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.44, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.132, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.108, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.058, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.394, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.016, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.702, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.672, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.618, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.956, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348834.576, \"ph\": \"X\", \"dur\": 0.4432688072250754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.213, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.191, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.143, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.484, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.103, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.736, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.712, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.665, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.999, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348835.627, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.319, \"ph\": \"X\", \"dur\": 2.7950630191091554, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348833.27, \"ph\": \"X\", \"dur\": 2.879126940344299, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.18, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.521, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.498, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.45, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.816, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.404, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348837.109, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348837.086, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348837.039, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.282, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.995, \"ph\": \"X\", \"dur\": 1.3752059280989535, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.612, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.584, \"ph\": \"X\", \"dur\": 0.2309886975185255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.512, \"ph\": \"X\", \"dur\": 0.33376120656564484, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.894, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348838.448, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.151, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.128, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.079, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.437, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.033, \"ph\": \"X\", \"dur\": 0.4729530998867433, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.704, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.68, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.628, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.037, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348839.584, \"ph\": \"X\", \"dur\": 0.5178537106354847, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.316, \"ph\": \"X\", \"dur\": 3.8494790281921007, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348836.275, \"ph\": \"X\", \"dur\": 3.9288034405148773, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.242, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.616, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.588, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.538, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.905, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.491, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.198, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.173, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.123, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.516, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.08, \"ph\": \"X\", \"dur\": 0.5031362882233973, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.798, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.769, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.717, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.068, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348841.673, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.342, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.31, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.257, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.648, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.212, \"ph\": \"X\", \"dur\": 0.5056307665983274, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.923, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.893, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.844, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348843.192, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348842.796, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.399, \"ph\": \"X\", \"dur\": 2.9230297597430686, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348840.352, \"ph\": \"X\", \"dur\": 3.919324422690143, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348844.307, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348844.417, \"ph\": \"X\", \"dur\": 0.0705937380105213, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348850.873, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8613653546584781}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.09, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.287, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.586, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.68, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.551, \"ph\": \"X\", \"dur\": 0.42081850185070463, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.057, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.158, \"ph\": \"X\", \"dur\": 0.18683643028226304, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.005, \"ph\": \"X\", \"dur\": 0.3671872167897079, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.438, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.404, \"ph\": \"X\", \"dur\": 0.11973496199664388, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.614, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.565, \"ph\": \"X\", \"dur\": 0.11773937929669981, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.715, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.835, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348852.99, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348853.269, \"ph\": \"X\", \"dur\": 0.07857606881029754, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348853.903, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.218, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.487, \"ph\": \"X\", \"dur\": 0.06934649882305625, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.918, \"ph\": \"X\", \"dur\": 0.5413018073598276, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.869, \"ph\": \"X\", \"dur\": 0.615637262932744, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.661, \"ph\": \"X\", \"dur\": 0.9032506195621822, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.184, \"ph\": \"X\", \"dur\": 1.4118747602104258, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348854.041, \"ph\": \"X\", \"dur\": 1.6189164653296224, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.143, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.424, \"ph\": \"X\", \"dur\": 0.042156684536318365, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.648, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348857.075, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.971, \"ph\": \"X\", \"dur\": 0.5867013137835551, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.763, \"ph\": \"X\", \"dur\": 0.862091726375836, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.393, \"ph\": \"X\", \"dur\": 1.265199431764537, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348856.25, \"ph\": \"X\", \"dur\": 1.4627621190589994, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348857.942, \"ph\": \"X\", \"dur\": 0.07134208152300031, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348858.179, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348858.344, \"ph\": \"X\", \"dur\": 0.08730674312255284, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348858.121, \"ph\": \"X\", \"dur\": 0.35296869005260645, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348858.774, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348859.038, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348861.203, \"ph\": \"X\", \"dur\": 0.0990307914847242, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348861.159, \"ph\": \"X\", \"dur\": 0.1756112775950777, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.389, \"ph\": \"X\", \"dur\": 10.180964039439631, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348861.75, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348862.06, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348863.402, \"ph\": \"X\", \"dur\": 0.5323216852100793, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348862.029, \"ph\": \"X\", \"dur\": 1.9616577940450157, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348861.873, \"ph\": \"X\", \"dur\": 2.16770170781424, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348851.213, \"ph\": \"X\", \"dur\": 13.012945338497753, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.423, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.974, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.946, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.891, \"ph\": \"X\", \"dur\": 0.3599532295024107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.323, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.829, \"ph\": \"X\", \"dur\": 0.5689905173215515, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.615, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.592, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.542, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.911, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348865.499, \"ph\": \"X\", \"dur\": 0.47669481744913844, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.147, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.125, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.07, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.422, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.032, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.658, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.635, \"ph\": \"X\", \"dur\": 0.24944783749300808, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.586, \"ph\": \"X\", \"dur\": 0.3225360538784594, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.953, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348866.543, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.211, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.189, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.137, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.461, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.094, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.631, \"ph\": \"X\", \"dur\": 2.9350032559427333, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348864.579, \"ph\": \"X\", \"dur\": 3.0382746606648383, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.661, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.149, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.127, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.077, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.441, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.035, \"ph\": \"X\", \"dur\": 0.46871248664936216, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.752, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.729, \"ph\": \"X\", \"dur\": 0.19706379161947638, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.68, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.998, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348868.639, \"ph\": \"X\", \"dur\": 0.4220657410381697, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348869.283, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348869.26, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348869.209, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348870.42, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348869.17, \"ph\": \"X\", \"dur\": 1.349263352999681, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348870.788, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348870.748, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348870.686, \"ph\": \"X\", \"dur\": 0.370180590839624, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.114, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348870.631, \"ph\": \"X\", \"dur\": 0.5510302730220549, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.401, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.376, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.323, \"ph\": \"X\", \"dur\": 0.31555151442865526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.691, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.278, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.896, \"ph\": \"X\", \"dur\": 3.9624788985764337, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348867.838, \"ph\": \"X\", \"dur\": 4.061260242223665, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348871.936, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.322, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.298, \"ph\": \"X\", \"dur\": 0.2132779010565219, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.248, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.584, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.206, \"ph\": \"X\", \"dur\": 0.44052488101265225, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.853, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.829, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.782, \"ph\": \"X\", \"dur\": 0.32802390630330563, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.156, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.739, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.404, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.381, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.332, \"ph\": \"X\", \"dur\": 0.29335065689177753, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.672, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.289, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.921, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.897, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.853, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.187, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348873.804, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.454, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.429, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.384, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.702, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.342, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.116, \"ph\": \"X\", \"dur\": 2.7249681767736202, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348872.074, \"ph\": \"X\", \"dur\": 2.801548662883974, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348874.905, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.244, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.222, \"ph\": \"X\", \"dur\": 0.26042354234270043, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.172, \"ph\": \"X\", \"dur\": 0.34149408952792804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.562, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.132, \"ph\": \"X\", \"dur\": 1.3674730451366703, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348876.789, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348876.762, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348876.706, \"ph\": \"X\", \"dur\": 0.3579576468024666, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.119, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348876.654, \"ph\": \"X\", \"dur\": 0.5320722373725864, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.404, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.369, \"ph\": \"X\", \"dur\": 0.22599974076866533, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.316, \"ph\": \"X\", \"dur\": 0.31031310984130206, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.679, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.269, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.936, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.913, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.867, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.202, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348877.821, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.474, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.452, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.382, \"ph\": \"X\", \"dur\": 0.3043263617414698, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.734, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.339, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.044, \"ph\": \"X\", \"dur\": 3.8090684785182334, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348875.004, \"ph\": \"X\", \"dur\": 3.889141234353489, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348878.927, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348879.058, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348895.548, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8579727194807814}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348896.353, \"ph\": \"X\", \"dur\": 0.09479017824734308, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348896.766, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348897.856, \"ph\": \"X\", \"dur\": 0.1641366770703993, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348898.092, \"ph\": \"X\", \"dur\": 0.7977341843026399, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348897.743, \"ph\": \"X\", \"dur\": 1.1990957548288899, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.116, \"ph\": \"X\", \"dur\": 0.07757827746032551, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.251, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.019, \"ph\": \"X\", \"dur\": 0.49216058337370494, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.602, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.562, \"ph\": \"X\", \"dur\": 0.13694686278366144, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.81, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.729, \"ph\": \"X\", \"dur\": 0.17710796462003575, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348899.946, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348900.258, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348900.737, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348901.293, \"ph\": \"X\", \"dur\": 0.15715213762059507, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348902.609, \"ph\": \"X\", \"dur\": 0.09329349122238503, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348903.239, \"ph\": \"X\", \"dur\": 0.09853189580973819, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348903.961, \"ph\": \"X\", \"dur\": 0.092295699872413, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348904.879, \"ph\": \"X\", \"dur\": 1.1908639761916207, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348904.741, \"ph\": \"X\", \"dur\": 1.3699675235116004, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348904.248, \"ph\": \"X\", \"dur\": 3.366049119130651, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348903.166, \"ph\": \"X\", \"dur\": 4.536208924810352, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348902.84, \"ph\": \"X\", \"dur\": 4.961018592060944, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348908.715, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.086, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.391, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.751, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.715, \"ph\": \"X\", \"dur\": 0.6086527234829396, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.505, \"ph\": \"X\", \"dur\": 0.8972638714623501, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348909.036, \"ph\": \"X\", \"dur\": 1.417861508310258, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348908.852, \"ph\": \"X\", \"dur\": 1.663567628240871, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348910.855, \"ph\": \"X\", \"dur\": 0.12073275334661591, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348911.355, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348911.728, \"ph\": \"X\", \"dur\": 0.14293361088349363, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348911.205, \"ph\": \"X\", \"dur\": 0.7545797084163495, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348912.501, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348912.95, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348916.295, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348916.197, \"ph\": \"X\", \"dur\": 0.36269715571483374, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348896.895, \"ph\": \"X\", \"dur\": 19.985511292102313, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348917.094, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348917.422, \"ph\": \"X\", \"dur\": 0.06909705098556325, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348917.825, \"ph\": \"X\", \"dur\": 0.7154163979299472, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348917.38, \"ph\": \"X\", \"dur\": 1.2405040958527294, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348917.236, \"ph\": \"X\", \"dur\": 1.4425568442220658, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348896.577, \"ph\": \"X\", \"dur\": 22.375720470960317, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348919.312, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348920.312, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348920.251, \"ph\": \"X\", \"dur\": 0.7256437592671605, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348920.104, \"ph\": \"X\", \"dur\": 0.9112329503619585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.128, \"ph\": \"X\", \"dur\": 0.07333766422294438, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348920.019, \"ph\": \"X\", \"dur\": 1.2854047066014707, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.585, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.549, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.479, \"ph\": \"X\", \"dur\": 0.39886709215131994, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.943, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348921.44, \"ph\": \"X\", \"dur\": 0.6041626624080656, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.291, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.266, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.219, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.562, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.159, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.831, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.806, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.754, \"ph\": \"X\", \"dur\": 0.30382746606648386, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348923.104, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348922.709, \"ph\": \"X\", \"dur\": 1.3981551291483103, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348924.347, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348924.318, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348924.258, \"ph\": \"X\", \"dur\": 0.34473691141533713, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348924.673, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348924.204, \"ph\": \"X\", \"dur\": 0.5335689243975442, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348919.768, \"ph\": \"X\", \"dur\": 5.044084721946117, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348919.68, \"ph\": \"X\", \"dur\": 5.245139678965481, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.003, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.566, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.544, \"ph\": \"X\", \"dur\": 0.23922047615579475, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.495, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.864, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.452, \"ph\": \"X\", \"dur\": 0.47819150447409653, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.236, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.21, \"ph\": \"X\", \"dur\": 0.24894894181802207, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.16, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.54, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.12, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.859, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.831, \"ph\": \"X\", \"dur\": 0.20255164404432255, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.781, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.112, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348926.72, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.387, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.364, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.313, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.643, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.258, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.905, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.878, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.83, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.16, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348927.787, \"ph\": \"X\", \"dur\": 0.43927764182518725, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.335, \"ph\": \"X\", \"dur\": 2.963689757254429, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348925.268, \"ph\": \"X\", \"dur\": 3.084921406276031, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.399, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.798, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.775, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.723, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.05, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.679, \"ph\": \"X\", \"dur\": 0.4375315069627362, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.323, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.299, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.248, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.568, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348929.207, \"ph\": \"X\", \"dur\": 0.4263063542755508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348931.567, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348931.537, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348931.489, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348931.859, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348931.428, \"ph\": \"X\", \"dur\": 0.5001429141734812, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.164, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.122, \"ph\": \"X\", \"dur\": 0.277884890967211, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.068, \"ph\": \"X\", \"dur\": 0.3629466035523267, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.483, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.019, \"ph\": \"X\", \"dur\": 0.5313238938601073, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.755, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.726, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.674, \"ph\": \"X\", \"dur\": 0.3332623108906588, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.055, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348932.627, \"ph\": \"X\", \"dur\": 0.49216058337370494, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.593, \"ph\": \"X\", \"dur\": 4.586098492308953, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348928.536, \"ph\": \"X\", \"dur\": 4.681138118393791, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.25, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.597, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.572, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.523, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.861, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.48, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.14, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.114, \"ph\": \"X\", \"dur\": 0.340496298177956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.065, \"ph\": \"X\", \"dur\": 0.41907236698825356, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.545, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.019, \"ph\": \"X\", \"dur\": 0.5924386140458942, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.835, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.808, \"ph\": \"X\", \"dur\": 0.2379732369683297, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.749, \"ph\": \"X\", \"dur\": 0.32303494955344547, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.128, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348934.696, \"ph\": \"X\", \"dur\": 0.4964011966110861, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.387, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.361, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.313, \"ph\": \"X\", \"dur\": 0.31081200551628807, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.671, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.27, \"ph\": \"X\", \"dur\": 0.4657191125994461, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.924, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.901, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.853, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348936.202, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348935.81, \"ph\": \"X\", \"dur\": 0.4569884382871908, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.388, \"ph\": \"X\", \"dur\": 2.934005464592761, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348933.348, \"ph\": \"X\", \"dur\": 3.0095881593531426, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348936.387, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348937.474, \"ph\": \"X\", \"dur\": 0.14043913250856355, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348945.795, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8547017135906737}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.081, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.345, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.773, \"ph\": \"X\", \"dur\": 0.10102637418466827, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.913, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.701, \"ph\": \"X\", \"dur\": 0.5398051203348695, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.327, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.431, \"ph\": \"X\", \"dur\": 0.17511238192009168, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.277, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.734, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.684, \"ph\": \"X\", \"dur\": 0.15365986789569297, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.943, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348947.891, \"ph\": \"X\", \"dur\": 0.12796674063391314, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348948.063, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348948.188, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348948.46, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348948.78, \"ph\": \"X\", \"dur\": 0.11175263119686762, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348949.537, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348949.866, \"ph\": \"X\", \"dur\": 0.06061582451080096, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348950.241, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348950.761, \"ph\": \"X\", \"dur\": 0.5510302730220549, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348950.679, \"ph\": \"X\", \"dur\": 0.6612862171939644, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348950.403, \"ph\": \"X\", \"dur\": 1.046932573958155, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348949.821, \"ph\": \"X\", \"dur\": 1.663567628240871, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348949.663, \"ph\": \"X\", \"dur\": 1.8953046692718754, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.281, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.598, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.859, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348953.243, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348953.212, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.996, \"ph\": \"X\", \"dur\": 0.8296635075017449, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.547, \"ph\": \"X\", \"dur\": 1.331303108700184, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348952.388, \"ph\": \"X\", \"dur\": 1.5473249359691292, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348954.226, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348954.571, \"ph\": \"X\", \"dur\": 0.14692477628338177, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348954.809, \"ph\": \"X\", \"dur\": 0.09329349122238503, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348954.451, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348955.293, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348955.618, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348958.153, \"ph\": \"X\", \"dur\": 0.12746784495892713, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348958.053, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.47, \"ph\": \"X\", \"dur\": 12.11044306244805, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348958.794, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348959.132, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348959.568, \"ph\": \"X\", \"dur\": 0.5901935835084571, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348959.103, \"ph\": \"X\", \"dur\": 1.1162790727812113, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348958.935, \"ph\": \"X\", \"dur\": 2.3111342143727196, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348946.226, \"ph\": \"X\", \"dur\": 15.293646916696325, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348961.752, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.337, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.3, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.208, \"ph\": \"X\", \"dur\": 0.41208782753844936, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.683, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.161, \"ph\": \"X\", \"dur\": 0.6066571407829956, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.026, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.0, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.933, \"ph\": \"X\", \"dur\": 0.32527998009088255, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.313, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348962.884, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.583, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.557, \"ph\": \"X\", \"dur\": 0.2437105372306689, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.506, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.901, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348963.46, \"ph\": \"X\", \"dur\": 0.5041340795733693, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.132, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.11, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.06, \"ph\": \"X\", \"dur\": 0.2978407179666517, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.428, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.021, \"ph\": \"X\", \"dur\": 0.4682135909743762, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.662, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.637, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.588, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.923, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348964.545, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348961.999, \"ph\": \"X\", \"dur\": 3.025552820952695, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348961.924, \"ph\": \"X\", \"dur\": 3.141546065386944, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.12, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.526, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.502, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.454, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.796, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.41, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.09, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.064, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.016, \"ph\": \"X\", \"dur\": 0.2836221912295502, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.368, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.973, \"ph\": \"X\", \"dur\": 0.45574119909972577, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.65, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.627, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.578, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.905, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348966.532, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.089, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.06, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.013, \"ph\": \"X\", \"dur\": 0.35596206410252257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.421, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348967.953, \"ph\": \"X\", \"dur\": 0.5380589854724184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.709, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.678, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.626, \"ph\": \"X\", \"dur\": 0.32852280197829165, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.006, \"ph\": \"X\", \"dur\": 0.033924905899049104, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348968.578, \"ph\": \"X\", \"dur\": 0.49739898796105814, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.295, \"ph\": \"X\", \"dur\": 3.854966880616947, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348965.255, \"ph\": \"X\", \"dur\": 3.9462647891393883, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.234, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.653, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.623, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.571, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.943, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.521, \"ph\": \"X\", \"dur\": 0.48841886581130983, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.22, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.196, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.149, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.5, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.109, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.746, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.721, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.674, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.997, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348970.631, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.242, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.218, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.171, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.503, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.129, \"ph\": \"X\", \"dur\": 0.43279199805036905, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.747, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.72, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.675, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.001, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348971.631, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.411, \"ph\": \"X\", \"dur\": 2.71000130652404, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348969.364, \"ph\": \"X\", \"dur\": 2.842208660395334, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.295, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.687, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.655, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.603, \"ph\": \"X\", \"dur\": 0.31305703605372515, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.966, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.558, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348973.232, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348973.207, \"ph\": \"X\", \"dur\": 1.1816344062043793, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348973.161, \"ph\": \"X\", \"dur\": 1.2552215182648168, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348974.466, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348973.116, \"ph\": \"X\", \"dur\": 1.4173626126352719, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348974.742, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348974.711, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348974.658, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.037, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348974.613, \"ph\": \"X\", \"dur\": 0.48941665716128185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.309, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.28, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.227, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.6, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.181, \"ph\": \"X\", \"dur\": 0.48816941797381685, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.873, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.844, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.791, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348976.163, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348975.744, \"ph\": \"X\", \"dur\": 0.48243211771147765, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.444, \"ph\": \"X\", \"dur\": 3.856962463316891, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348972.404, \"ph\": \"X\", \"dur\": 3.9355385321271887, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348976.374, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348976.516, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348983.577, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8513623992130147}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348983.886, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.126, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.482, \"ph\": \"X\", \"dur\": 0.10002858283469623, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.636, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.435, \"ph\": \"X\", \"dur\": 0.5418007030348135, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.085, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.2, \"ph\": \"X\", \"dur\": 0.17112121652020354, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.023, \"ph\": \"X\", \"dur\": 0.3751695475894842, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.468, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.433, \"ph\": \"X\", \"dur\": 0.12222944037157396, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.653, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.597, \"ph\": \"X\", \"dur\": 0.12173054469658794, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.753, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348985.895, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348986.111, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348986.439, \"ph\": \"X\", \"dur\": 0.09404183473486405, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.056, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.392, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.716, \"ph\": \"X\", \"dur\": 0.0708431858480143, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348988.239, \"ph\": \"X\", \"dur\": 0.5889463443209921, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348988.176, \"ph\": \"X\", \"dur\": 0.678747565818475, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.905, \"ph\": \"X\", \"dur\": 1.051672082870522, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.336, \"ph\": \"X\", \"dur\": 2.619202293676585, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348987.182, \"ph\": \"X\", \"dur\": 2.847447064982687, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348990.68, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348991.019, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348991.301, \"ph\": \"X\", \"dur\": 0.07458490341040941, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348991.666, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348991.631, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348991.458, \"ph\": \"X\", \"dur\": 0.8117032632022483, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348990.963, \"ph\": \"X\", \"dur\": 1.3624840883868101, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348990.816, \"ph\": \"X\", \"dur\": 1.5627907018936955, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348992.626, \"ph\": \"X\", \"dur\": 0.10576588309703543, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348992.973, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348993.145, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348992.869, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348993.6, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348993.935, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348996.282, \"ph\": \"X\", \"dur\": 0.11823827497168582, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348996.19, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.232, \"ph\": \"X\", \"dur\": 12.430983533626565, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348996.852, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348997.181, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348997.542, \"ph\": \"X\", \"dur\": 0.585952970271076, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348997.15, \"ph\": \"X\", \"dur\": 1.0426919607207739, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348996.955, \"ph\": \"X\", \"dur\": 1.297627650638628, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348984.014, \"ph\": \"X\", \"dur\": 14.448018747595027, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348998.665, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.231, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.207, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.139, \"ph\": \"X\", \"dur\": 0.37591789110196316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.569, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.094, \"ph\": \"X\", \"dur\": 0.5600103951718031, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.874, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.849, \"ph\": \"X\", \"dur\": 0.2100350791691128, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.801, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.135, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348999.759, \"ph\": \"X\", \"dur\": 0.4427699115500894, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.393, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.37, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.317, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.65, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.279, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.911, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.886, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.819, \"ph\": \"X\", \"dur\": 0.31779654496609233, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349001.183, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349000.767, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349001.438, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349001.414, \"ph\": \"X\", \"dur\": 1.171656492704659, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349001.365, \"ph\": \"X\", \"dur\": 1.2484864266525055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349002.683, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349001.322, \"ph\": \"X\", \"dur\": 1.446049113946968, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348998.929, \"ph\": \"X\", \"dur\": 3.8976224608282513, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995348998.849, \"ph\": \"X\", \"dur\": 4.022096931737263, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349002.915, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.36, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.336, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.277, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.658, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.228, \"ph\": \"X\", \"dur\": 0.5235910108978239, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.996, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.972, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.921, \"ph\": \"X\", \"dur\": 0.3437391200653651, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.315, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.876, \"ph\": \"X\", \"dur\": 0.5043835274108623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.585, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.558, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.51, \"ph\": \"X\", \"dur\": 0.2940990004042565, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.852, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.469, \"ph\": \"X\", \"dur\": 0.44501494208752645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.111, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.086, \"ph\": \"X\", \"dur\": 0.3237832930659245, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.038, \"ph\": \"X\", \"dur\": 0.39662206161388286, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.504, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349004.995, \"ph\": \"X\", \"dur\": 0.5724827870464536, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.785, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.759, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.711, \"ph\": \"X\", \"dur\": 0.2871144609544523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.045, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349005.668, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.098, \"ph\": \"X\", \"dur\": 3.0664622663015484, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349003.046, \"ph\": \"X\", \"dur\": 3.15451735293658, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.231, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.595, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.571, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.519, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.846, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.477, \"ph\": \"X\", \"dur\": 0.43179420670039703, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.133, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.108, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.056, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.386, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.019, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.656, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.632, \"ph\": \"X\", \"dur\": 1.0841003017446131, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.564, \"ph\": \"X\", \"dur\": 1.1836299889043234, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349008.808, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349007.522, \"ph\": \"X\", \"dur\": 1.35500065326202, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.102, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.074, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.016, \"ph\": \"X\", \"dur\": 0.3227855017159525, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.397, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349008.965, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.69, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.664, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.615, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.981, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349009.569, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.367, \"ph\": \"X\", \"dur\": 3.734483575107824, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349006.325, \"ph\": \"X\", \"dur\": 3.816053017968038, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.17, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.532, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.505, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.454, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.792, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.412, \"ph\": \"X\", \"dur\": 0.4684630388118692, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.097, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.073, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.021, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.392, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.985, \"ph\": \"X\", \"dur\": 0.4724542042117573, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.658, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.617, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.571, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.909, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349011.527, \"ph\": \"X\", \"dur\": 0.4704586215118132, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.185, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.159, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.11, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.43, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.068, \"ph\": \"X\", \"dur\": 0.42505911508808575, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.678, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.654, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.604, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.923, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349012.563, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.32, \"ph\": \"X\", \"dur\": 2.719480324348774, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349010.27, \"ph\": \"X\", \"dur\": 2.8187605636709914, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349013.12, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349013.218, \"ph\": \"X\", \"dur\": 0.07159152936049333, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349019.819, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.84812206096793}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.059, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.274, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.578, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.721, \"ph\": \"X\", \"dur\": 0.25892685531774234, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.54, \"ph\": \"X\", \"dur\": 0.4786904001490825, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.11, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.225, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.056, \"ph\": \"X\", \"dur\": 0.3986176443138269, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.539, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.504, \"ph\": \"X\", \"dur\": 0.1359490714336894, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.726, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.672, \"ph\": \"X\", \"dur\": 0.12447447090901104, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.839, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349022.968, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349023.184, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349023.473, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349024.046, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349024.323, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349024.594, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349026.073, \"ph\": \"X\", \"dur\": 0.5759750567713556, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349025.987, \"ph\": \"X\", \"dur\": 0.7074340671301709, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349025.702, \"ph\": \"X\", \"dur\": 1.1167779684561971, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349024.294, \"ph\": \"X\", \"dur\": 2.5840301485900707, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349024.152, \"ph\": \"X\", \"dur\": 2.7923190928967325, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349027.523, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349027.863, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349028.091, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349028.41, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349028.381, \"ph\": \"X\", \"dur\": 0.5288294154851771, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349028.232, \"ph\": \"X\", \"dur\": 0.7668026524535069, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349027.807, \"ph\": \"X\", \"dur\": 1.2447447090901103, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349027.635, \"ph\": \"X\", \"dur\": 1.4702455541837895, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349029.314, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349029.547, \"ph\": \"X\", \"dur\": 0.15316097222070696, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349029.768, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349029.497, \"ph\": \"X\", \"dur\": 0.3913836570265297, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349030.189, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349030.464, \"ph\": \"X\", \"dur\": 0.24221385020571085, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349032.821, \"ph\": \"X\", \"dur\": 0.11250097470934665, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349032.757, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.397, \"ph\": \"X\", \"dur\": 11.826072527706021, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349033.352, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349033.655, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349034.018, \"ph\": \"X\", \"dur\": 0.5891957921584852, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349033.621, \"ph\": \"X\", \"dur\": 1.0377030039709136, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349033.468, \"ph\": \"X\", \"dur\": 1.2507314571899426, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349021.175, \"ph\": \"X\", \"dur\": 13.724370571027812, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.103, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.68, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.653, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.594, \"ph\": \"X\", \"dur\": 0.36818500813967997, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.024, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.518, \"ph\": \"X\", \"dur\": 0.5762245046088487, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.344, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.315, \"ph\": \"X\", \"dur\": 0.2379732369683297, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.256, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.64, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.206, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.914, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.888, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.837, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.194, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349037.792, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.476, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.451, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.401, \"ph\": \"X\", \"dur\": 0.31255814037873914, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.762, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.359, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.004, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.977, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.925, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.277, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349038.882, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.355, \"ph\": \"X\", \"dur\": 3.027298955815146, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349036.291, \"ph\": \"X\", \"dur\": 3.1368065564745766, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.454, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.812, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.786, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.736, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.062, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.69, \"ph\": \"X\", \"dur\": 0.4370326112877502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.351, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.327, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.278, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.601, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.233, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.863, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.841, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.792, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349041.114, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349040.748, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349041.389, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349041.362, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349041.314, \"ph\": \"X\", \"dur\": 1.1499545308427672, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349042.539, \"ph\": \"X\", \"dur\": 0.055377419923447795, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349041.272, \"ph\": \"X\", \"dur\": 1.360488505686866, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349042.895, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349042.857, \"ph\": \"X\", \"dur\": 0.25368845073038926, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349042.796, \"ph\": \"X\", \"dur\": 0.37167727786458205, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.237, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349042.742, \"ph\": \"X\", \"dur\": 0.5590126038218312, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.598, \"ph\": \"X\", \"dur\": 3.766163450469436, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349039.557, \"ph\": \"X\", \"dur\": 3.8454878627922127, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.447, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.843, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.818, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.766, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.155, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.72, \"ph\": \"X\", \"dur\": 0.5166064714480197, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.459, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.435, \"ph\": \"X\", \"dur\": 0.28736390879194534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.388, \"ph\": \"X\", \"dur\": 0.3639443949022988, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.797, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.347, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.07, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.046, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.0, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.325, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349044.935, \"ph\": \"X\", \"dur\": 0.44975445099989353, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.573, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.549, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.498, \"ph\": \"X\", \"dur\": 0.38814083513912057, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.932, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349045.457, \"ph\": \"X\", \"dur\": 0.5373106419599394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.177, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.154, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.107, \"ph\": \"X\", \"dur\": 0.28137716069211316, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.434, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.063, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.61, \"ph\": \"X\", \"dur\": 2.937996629992649, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349043.561, \"ph\": \"X\", \"dur\": 3.0253033731152024, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.615, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.035, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.013, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.964, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.281, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.92, \"ph\": \"X\", \"dur\": 0.42131739752569064, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.545, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.52, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.472, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349048.777, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349047.431, \"ph\": \"X\", \"dur\": 1.4345745134222896, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.09, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.062, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.005, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.399, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349048.955, \"ph\": \"X\", \"dur\": 0.5111186190231736, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.683, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.654, \"ph\": \"X\", \"dur\": 0.23996881966827377, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.605, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.987, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349049.545, \"ph\": \"X\", \"dur\": 0.525586593597768, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.275, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.248, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.199, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.535, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.158, \"ph\": \"X\", \"dur\": 0.44252046371259635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.749, \"ph\": \"X\", \"dur\": 3.912838778915325, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349046.707, \"ph\": \"X\", \"dur\": 4.0131168095875145, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.754, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349050.866, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349057.386, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8448330238429291}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349057.651, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349057.836, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.131, \"ph\": \"X\", \"dur\": 0.09628686527230111, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.286, \"ph\": \"X\", \"dur\": 0.2639158120676025, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.101, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.65, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.734, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349058.608, \"ph\": \"X\", \"dur\": 0.36544108192725683, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.061, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.03, \"ph\": \"X\", \"dur\": 0.11250097470934665, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.226, \"ph\": \"X\", \"dur\": 0.02344809672434276, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.185, \"ph\": \"X\", \"dur\": 0.11025594417190958, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.338, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.437, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.631, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349059.89, \"ph\": \"X\", \"dur\": 0.07358711206043739, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349060.509, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349060.817, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349061.076, \"ph\": \"X\", \"dur\": 0.07233987287297235, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349061.519, \"ph\": \"X\", \"dur\": 0.5353150592599953, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349061.454, \"ph\": \"X\", \"dur\": 0.6278602069699013, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349061.217, \"ph\": \"X\", \"dur\": 0.9913057061972141, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349060.782, \"ph\": \"X\", \"dur\": 1.4602676406840693, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349060.624, \"ph\": \"X\", \"dur\": 1.6727971982281122, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349063.981, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.289, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.538, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.955, \"ph\": \"X\", \"dur\": 0.5413018073598276, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.861, \"ph\": \"X\", \"dur\": 0.6620345607064435, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.685, \"ph\": \"X\", \"dur\": 0.9074912327995633, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.254, \"ph\": \"X\", \"dur\": 1.391170589698506, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349064.106, \"ph\": \"X\", \"dur\": 1.5942211294178146, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349065.947, \"ph\": \"X\", \"dur\": 0.07184097719798634, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349066.188, \"ph\": \"X\", \"dur\": 0.1050175395845564, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349066.354, \"ph\": \"X\", \"dur\": 0.06834870747308422, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349066.136, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349066.774, \"ph\": \"X\", \"dur\": 0.22774587563111637, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349067.079, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349069.324, \"ph\": \"X\", \"dur\": 0.14892035898332584, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349069.248, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349057.945, \"ph\": \"X\", \"dur\": 11.805118909356608, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349069.886, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349070.169, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349070.564, \"ph\": \"X\", \"dur\": 0.615637262932744, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349070.136, \"ph\": \"X\", \"dur\": 1.0955749022692916, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349069.987, \"ph\": \"X\", \"dur\": 1.2936364852387399, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349057.771, \"ph\": \"X\", \"dur\": 13.659264685442137, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349071.618, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.173, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.148, \"ph\": \"X\", \"dur\": 0.2649136034175746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.083, \"ph\": \"X\", \"dur\": 0.3577081989649736, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.498, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.036, \"ph\": \"X\", \"dur\": 0.5375600897974324, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.842, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.811, \"ph\": \"X\", \"dur\": 0.22724697995613036, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.759, \"ph\": \"X\", \"dur\": 0.30981421416631605, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.119, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349072.701, \"ph\": \"X\", \"dur\": 0.4879199701363238, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.373, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.346, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.294, \"ph\": \"X\", \"dur\": 0.3133064838912181, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.654, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.254, \"ph\": \"X\", \"dur\": 0.46696635178691115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.901, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.875, \"ph\": \"X\", \"dur\": 0.22425360590621427, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.821, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349074.168, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349073.776, \"ph\": \"X\", \"dur\": 0.45399506423727476, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349074.419, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349074.395, \"ph\": \"X\", \"dur\": 0.2257502929311723, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349074.344, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349076.578, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349074.299, \"ph\": \"X\", \"dur\": 2.3951981356078638, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349071.869, \"ph\": \"X\", \"dur\": 4.872464609750927, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349071.792, \"ph\": \"X\", \"dur\": 4.993197363097543, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349076.82, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.266, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.239, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.174, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.569, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.127, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.97, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.941, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.872, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.278, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.816, \"ph\": \"X\", \"dur\": 0.5273327284602191, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.641, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.615, \"ph\": \"X\", \"dur\": 0.2374743412933437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.562, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.936, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349078.515, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.2, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.176, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.13, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.461, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.087, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.739, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.714, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.669, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.007, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349079.606, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349077.013, \"ph\": \"X\", \"dur\": 3.138303243499535, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349076.961, \"ph\": \"X\", \"dur\": 3.228104464997018, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.219, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.592, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.568, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.519, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.89, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.477, \"ph\": \"X\", \"dur\": 0.4754475782616734, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.168, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.144, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.097, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.42, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.048, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.678, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.654, \"ph\": \"X\", \"dur\": 0.19407041756956028, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.606, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349083.579, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349081.567, \"ph\": \"X\", \"dur\": 2.0841366822540826, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349083.882, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349083.853, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349083.793, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.181, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349083.743, \"ph\": \"X\", \"dur\": 0.5061296622733134, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.484, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.444, \"ph\": \"X\", \"dur\": 0.2629180207176305, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.379, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.79, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.332, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.365, \"ph\": \"X\", \"dur\": 4.54768352533503, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349080.326, \"ph\": \"X\", \"dur\": 4.62476290712037, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349084.98, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.337, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.311, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.265, \"ph\": \"X\", \"dur\": 0.2896089393293824, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.616, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.221, \"ph\": \"X\", \"dur\": 0.45873457314964183, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.89, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.865, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.816, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.241, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.776, \"ph\": \"X\", \"dur\": 0.5338183722350373, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.556, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.527, \"ph\": \"X\", \"dur\": 0.2384721326433157, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.469, \"ph\": \"X\", \"dur\": 0.32627777144085457, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.85, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.417, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.121, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.093, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.04, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.397, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349086.994, \"ph\": \"X\", \"dur\": 0.464721321249474, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.647, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.624, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.575, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.913, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349087.535, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.126, \"ph\": \"X\", \"dur\": 2.926023133792985, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349085.084, \"ph\": \"X\", \"dur\": 3.0048486504407754, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349088.119, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349088.217, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349094.682, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8416253030672911}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349094.9, \"ph\": \"X\", \"dur\": 0.05388073289848975, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349095.122, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349096.526, \"ph\": \"X\", \"dur\": 0.10526698742204942, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349096.671, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349096.462, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.082, \"ph\": \"X\", \"dur\": 0.07508379908539543, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.192, \"ph\": \"X\", \"dur\": 0.1918253870321232, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.027, \"ph\": \"X\", \"dur\": 0.3836507740642464, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.499, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.448, \"ph\": \"X\", \"dur\": 0.1389424454836055, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.658, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.623, \"ph\": \"X\", \"dur\": 0.10576588309703543, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.763, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349097.905, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349098.153, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349098.457, \"ph\": \"X\", \"dur\": 0.09628686527230111, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.113, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.469, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.766, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349100.216, \"ph\": \"X\", \"dur\": 0.5966792272832753, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349100.163, \"ph\": \"X\", \"dur\": 0.676253087443545, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.942, \"ph\": \"X\", \"dur\": 0.9950474237596093, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.412, \"ph\": \"X\", \"dur\": 1.5597973278437796, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349099.25, \"ph\": \"X\", \"dur\": 1.7773158421376827, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349101.639, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349101.923, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349102.171, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349102.506, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349102.466, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349102.312, \"ph\": \"X\", \"dur\": 0.7583214259787446, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349101.89, \"ph\": \"X\", \"dur\": 1.2577159966397466, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349101.746, \"ph\": \"X\", \"dur\": 1.4682499714838457, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349103.451, \"ph\": \"X\", \"dur\": 0.057871898298377876, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349103.671, \"ph\": \"X\", \"dur\": 0.10027803067218924, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349103.839, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349103.618, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349104.396, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349104.663, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349106.847, \"ph\": \"X\", \"dur\": 0.12447447090901104, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349106.787, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349096.224, \"ph\": \"X\", \"dur\": 10.99690791587926, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349107.36, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349107.675, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349108.043, \"ph\": \"X\", \"dur\": 0.5318227895350932, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349107.64, \"ph\": \"X\", \"dur\": 0.9915551540347072, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349107.486, \"ph\": \"X\", \"dur\": 1.1988463069913968, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349095.033, \"ph\": \"X\", \"dur\": 13.788478665263515, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349108.953, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.674, \"ph\": \"X\", \"dur\": 0.02220085753687772, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.622, \"ph\": \"X\", \"dur\": 0.28836170014191737, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.559, \"ph\": \"X\", \"dur\": 0.3789112651518793, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.005, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.514, \"ph\": \"X\", \"dur\": 0.5602598430092961, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.313, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.284, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.226, \"ph\": \"X\", \"dur\": 0.4225646367131557, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.706, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.176, \"ph\": \"X\", \"dur\": 0.5981759143082334, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.968, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.942, \"ph\": \"X\", \"dur\": 0.22126023185629817, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.889, \"ph\": \"X\", \"dur\": 0.3043263617414698, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.245, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349111.841, \"ph\": \"X\", \"dur\": 0.4667169039494181, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.487, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.463, \"ph\": \"X\", \"dur\": 0.2092867356566338, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.413, \"ph\": \"X\", \"dur\": 0.2898583871668754, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.752, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.368, \"ph\": \"X\", \"dur\": 0.44301935938758236, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.981, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.955, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.907, \"ph\": \"X\", \"dur\": 0.2838716390670432, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.236, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349112.867, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.343, \"ph\": \"X\", \"dur\": 2.995369632616041, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349110.279, \"ph\": \"X\", \"dur\": 3.111861772725276, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.42, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.773, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.747, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.698, \"ph\": \"X\", \"dur\": 0.30407691390397684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.048, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.655, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.337, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.311, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.263, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.592, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.217, \"ph\": \"X\", \"dur\": 0.44202156803761034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.868, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.842, \"ph\": \"X\", \"dur\": 0.23223593670599052, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.794, \"ph\": \"X\", \"dur\": 0.3053241530914419, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.145, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349114.755, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.42, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.396, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.346, \"ph\": \"X\", \"dur\": 0.2823749520420852, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.675, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349115.305, \"ph\": \"X\", \"dur\": 1.3806937805237998, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349116.937, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349116.908, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349116.855, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.257, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349116.807, \"ph\": \"X\", \"dur\": 0.5181031584729778, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.563, \"ph\": \"X\", \"dur\": 3.8372560841549435, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349113.522, \"ph\": \"X\", \"dur\": 3.918326631340171, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.474, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.865, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.837, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.767, \"ph\": \"X\", \"dur\": 0.32103936685350143, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.188, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.722, \"ph\": \"X\", \"dur\": 0.552776407884506, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.525, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.484, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.43, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.775, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.383, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.045, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.019, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.951, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.32, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349118.908, \"ph\": \"X\", \"dur\": 0.4756970260991664, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.569, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.545, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.494, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.82, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.454, \"ph\": \"X\", \"dur\": 0.44850721181242853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.093, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.069, \"ph\": \"X\", \"dur\": 0.19756268729446239, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.022, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.346, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349119.976, \"ph\": \"X\", \"dur\": 0.431045863187918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.621, \"ph\": \"X\", \"dur\": 2.8434558995827994, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349117.574, \"ph\": \"X\", \"dur\": 2.928268164330422, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.531, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.899, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.876, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.826, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.174, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.781, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.445, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.42, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.372, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.749, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349121.331, \"ph\": \"X\", \"dur\": 1.5196362260074052, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.052, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.026, \"ph\": \"X\", \"dur\": 0.25418734640537527, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349122.975, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.359, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349122.929, \"ph\": \"X\", \"dur\": 0.4966506444485791, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.629, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.601, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.549, \"ph\": \"X\", \"dur\": 0.28611666960448023, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.885, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349123.503, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.141, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.117, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.067, \"ph\": \"X\", \"dur\": 0.28162660852960614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.399, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.023, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.694, \"ph\": \"X\", \"dur\": 3.821291422555391, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349120.649, \"ph\": \"X\", \"dur\": 3.9213200053900867, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.604, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349124.722, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.165, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.838384086960063}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.422, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.649, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.004, \"ph\": \"X\", \"dur\": 0.10925815282193754, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.173, \"ph\": \"X\", \"dur\": 0.2584279596427564, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.967, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.541, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.637, \"ph\": \"X\", \"dur\": 0.184591399744826, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.492, \"ph\": \"X\", \"dur\": 0.3564609597775085, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.929, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349132.884, \"ph\": \"X\", \"dur\": 0.13170845819630828, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.128, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.083, \"ph\": \"X\", \"dur\": 0.10526698742204942, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.223, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.337, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.496, \"ph\": \"X\", \"dur\": 0.01920748348696162, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349133.756, \"ph\": \"X\", \"dur\": 0.07433545557291642, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349134.331, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349134.662, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349134.936, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349135.368, \"ph\": \"X\", \"dur\": 0.6303546853448314, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349135.329, \"ph\": \"X\", \"dur\": 0.6967078101179716, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349135.091, \"ph\": \"X\", \"dur\": 1.0337118385710256, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349134.63, \"ph\": \"X\", \"dur\": 1.5291152438321396, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349134.469, \"ph\": \"X\", \"dur\": 1.759854493513172, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349136.74, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349137.081, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349138.565, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349138.911, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349138.865, \"ph\": \"X\", \"dur\": 0.5380589854724184, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349138.679, \"ph\": \"X\", \"dur\": 0.7979836321401328, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349137.018, \"ph\": \"X\", \"dur\": 2.5149330976045077, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349136.876, \"ph\": \"X\", \"dur\": 2.711996889223984, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349139.815, \"ph\": \"X\", \"dur\": 0.08156944286021364, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349140.099, \"ph\": \"X\", \"dur\": 0.09977913499720323, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349140.257, \"ph\": \"X\", \"dur\": 0.09404183473486405, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349140.03, \"ph\": \"X\", \"dur\": 0.38290243055176737, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349140.68, \"ph\": \"X\", \"dur\": 0.24820059830554306, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349141.0, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349143.333, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349143.264, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.769, \"ph\": \"X\", \"dur\": 11.886937800054314, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349143.846, \"ph\": \"X\", \"dur\": 0.05038846317358763, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349144.208, \"ph\": \"X\", \"dur\": 0.052384045873531696, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349144.564, \"ph\": \"X\", \"dur\": 0.5457918684347016, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349144.14, \"ph\": \"X\", \"dur\": 1.0279745383086862, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349143.987, \"ph\": \"X\", \"dur\": 1.233519556402925, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349131.559, \"ph\": \"X\", \"dur\": 13.798207130925743, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349145.548, \"ph\": \"X\", \"dur\": 0.031929323199105034, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.134, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.089, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.029, \"ph\": \"X\", \"dur\": 0.3841496697392324, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.475, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349145.98, \"ph\": \"X\", \"dur\": 0.5600103951718031, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.795, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.772, \"ph\": \"X\", \"dur\": 0.2252513972561863, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.708, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.078, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349146.666, \"ph\": \"X\", \"dur\": 0.47993763933654754, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.34, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.317, \"ph\": \"X\", \"dur\": 0.246953359118078, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.264, \"ph\": \"X\", \"dur\": 0.3454852549278162, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.66, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.223, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.902, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.877, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.825, \"ph\": \"X\", \"dur\": 0.30707028795389296, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.179, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349147.783, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.417, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.394, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.34, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.695, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349148.298, \"ph\": \"X\", \"dur\": 0.48018708717404057, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349145.798, \"ph\": \"X\", \"dur\": 4.074730425448287, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349145.746, \"ph\": \"X\", \"dur\": 4.171017290720588, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349149.952, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.443, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.416, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.361, \"ph\": \"X\", \"dur\": 0.32952059332826367, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.754, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.313, \"ph\": \"X\", \"dur\": 0.5078757971357645, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.082, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.055, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.997, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.401, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.946, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.677, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.651, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.602, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.936, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349151.557, \"ph\": \"X\", \"dur\": 0.4412732245251313, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.235, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.206, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.153, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.492, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.113, \"ph\": \"X\", \"dur\": 0.4400259853376663, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.753, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.726, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.678, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.0, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349152.634, \"ph\": \"X\", \"dur\": 0.4290502804879739, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.182, \"ph\": \"X\", \"dur\": 2.939992212692593, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349150.131, \"ph\": \"X\", \"dur\": 3.038773556339825, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.199, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.567, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.544, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.492, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.84, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.443, \"ph\": \"X\", \"dur\": 0.46073015584958593, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.109, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.084, \"ph\": \"X\", \"dur\": 0.19556710459451832, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.036, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.352, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.993, \"ph\": \"X\", \"dur\": 0.4203196061757186, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.619, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.595, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.548, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.885, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349154.503, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.147, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.121, \"ph\": \"X\", \"dur\": 0.22350526239373525, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.06, \"ph\": \"X\", \"dur\": 0.3153020665911622, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.425, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.016, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.687, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.66, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.611, \"ph\": \"X\", \"dur\": 0.2821255042045921, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.962, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349156.567, \"ph\": \"X\", \"dur\": 0.4569884382871908, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.354, \"ph\": \"X\", \"dur\": 3.731739648895401, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349153.314, \"ph\": \"X\", \"dur\": 3.8120618525681493, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.184, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.598, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.57, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.518, \"ph\": \"X\", \"dur\": 0.31605041010364127, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.881, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.462, \"ph\": \"X\", \"dur\": 0.4826815655489706, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.205, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.175, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.113, \"ph\": \"X\", \"dur\": 0.3948759267514318, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.566, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.059, \"ph\": \"X\", \"dur\": 0.5744783697463977, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.847, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.823, \"ph\": \"X\", \"dur\": 0.21751851429390306, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.766, \"ph\": \"X\", \"dur\": 0.3150526187536692, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.137, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349158.717, \"ph\": \"X\", \"dur\": 0.4826815655489706, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.4, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.372, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.322, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.67, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.275, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.939, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.914, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.867, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349160.191, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349159.808, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.371, \"ph\": \"X\", \"dur\": 2.9394933170176074, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349157.302, \"ph\": \"X\", \"dur\": 3.046755887139601, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349160.378, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349160.511, \"ph\": \"X\", \"dur\": 0.06934649882305625, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349166.974, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8352104113323179}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.243, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.44, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.746, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.877, \"ph\": \"X\", \"dur\": 0.26765752962999767, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.713, \"ph\": \"X\", \"dur\": 1.4278394218099784, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.241, \"ph\": \"X\", \"dur\": 0.08755619096004584, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.367, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.199, \"ph\": \"X\", \"dur\": 0.4108405883509843, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.7, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.647, \"ph\": \"X\", \"dur\": 0.13944134115859153, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.857, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.821, \"ph\": \"X\", \"dur\": 0.09528907392232909, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349169.951, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349170.062, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349170.244, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349170.509, \"ph\": \"X\", \"dur\": 0.09079901284745495, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.098, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.417, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.713, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349172.109, \"ph\": \"X\", \"dur\": 0.5649993519216633, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349172.054, \"ph\": \"X\", \"dur\": 0.647566586131849, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.845, \"ph\": \"X\", \"dur\": 0.9526412913857979, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.371, \"ph\": \"X\", \"dur\": 1.476232302283622, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349171.23, \"ph\": \"X\", \"dur\": 1.6822762160528466, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349173.425, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349173.729, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349174.006, \"ph\": \"X\", \"dur\": 0.06959594666054926, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349174.378, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349174.34, \"ph\": \"X\", \"dur\": 0.5116175146981596, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349174.164, \"ph\": \"X\", \"dur\": 0.7762816702782411, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349173.695, \"ph\": \"X\", \"dur\": 1.295881515776177, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349173.552, \"ph\": \"X\", \"dur\": 1.4904508290207235, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349175.249, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349175.518, \"ph\": \"X\", \"dur\": 0.08107054718522763, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349175.656, \"ph\": \"X\", \"dur\": 0.07807717313531153, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349175.46, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349176.108, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349176.374, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349178.535, \"ph\": \"X\", \"dur\": 0.07233987287297235, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349178.472, \"ph\": \"X\", \"dur\": 0.1758607254325707, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.542, \"ph\": \"X\", \"dur\": 11.317697834895268, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349179.014, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349179.351, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349179.745, \"ph\": \"X\", \"dur\": 0.5126153060481317, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349179.318, \"ph\": \"X\", \"dur\": 0.9975419021345393, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349179.138, \"ph\": \"X\", \"dur\": 1.2265350169531206, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349167.364, \"ph\": \"X\", \"dur\": 13.153883366681303, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349180.738, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349181.243, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349181.218, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349181.167, \"ph\": \"X\", \"dur\": 1.5196362260074052, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349182.762, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349181.12, \"ph\": \"X\", \"dur\": 1.7119605087145144, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.069, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.042, \"ph\": \"X\", \"dur\": 0.2534390028928962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349182.985, \"ph\": \"X\", \"dur\": 0.34448746357784416, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.388, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349182.935, \"ph\": \"X\", \"dur\": 0.5156086800980477, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.666, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.641, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.592, \"ph\": \"X\", \"dur\": 0.29734182229166567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.938, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349183.518, \"ph\": \"X\", \"dur\": 0.4849265960864077, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.203, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.18, \"ph\": \"X\", \"dur\": 0.2529401072179102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.132, \"ph\": \"X\", \"dur\": 0.3305183846782357, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.509, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.071, \"ph\": \"X\", \"dur\": 0.5016396011984393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.757, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.735, \"ph\": \"X\", \"dur\": 0.20779004863167574, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.683, \"ph\": \"X\", \"dur\": 0.28736390879194534, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.037, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349184.641, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349180.979, \"ph\": \"X\", \"dur\": 4.15954269019591, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349180.925, \"ph\": \"X\", \"dur\": 4.255829555468211, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.224, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.654, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.629, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.581, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.907, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.54, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.195, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.17, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.123, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.441, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.08, \"ph\": \"X\", \"dur\": 0.4240613237381137, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.7, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.673, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.625, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.948, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349186.584, \"ph\": \"X\", \"dur\": 0.4258074586005648, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.208, \"ph\": \"X\", \"dur\": 0.04864232831113657, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.181, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.132, \"ph\": \"X\", \"dur\": 0.2955956874292146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.474, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.091, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.75, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.728, \"ph\": \"X\", \"dur\": 1.2245394342531768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.678, \"ph\": \"X\", \"dur\": 1.3041132944134464, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.042, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349187.637, \"ph\": \"X\", \"dur\": 1.4739872717461846, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.435, \"ph\": \"X\", \"dur\": 3.741717562395121, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349185.394, \"ph\": \"X\", \"dur\": 3.8362582928049713, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.275, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.74, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.716, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.655, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.036, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.608, \"ph\": \"X\", \"dur\": 0.49340782256117, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.313, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.289, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.239, \"ph\": \"X\", \"dur\": 0.29160452202932646, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.581, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.199, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.846, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.818, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.766, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.107, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349190.721, \"ph\": \"X\", \"dur\": 0.45199948153733066, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.381, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.355, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.305, \"ph\": \"X\", \"dur\": 0.3063219444414139, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.659, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.259, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.917, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.89, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.839, \"ph\": \"X\", \"dur\": 0.3856463567641905, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.272, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349191.795, \"ph\": \"X\", \"dur\": 0.5413018073598276, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.497, \"ph\": \"X\", \"dur\": 2.8955904976188376, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349189.449, \"ph\": \"X\", \"dur\": 2.9794049710164887, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.457, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.864, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.837, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.788, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.117, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.741, \"ph\": \"X\", \"dur\": 0.44351825506256837, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.4, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.373, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.324, \"ph\": \"X\", \"dur\": 0.32103936685350143, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.692, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.283, \"ph\": \"X\", \"dur\": 0.4727036520492503, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.945, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.918, \"ph\": \"X\", \"dur\": 1.3599896100118802, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.87, \"ph\": \"X\", \"dur\": 1.4405612615221217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.37, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349193.829, \"ph\": \"X\", \"dur\": 1.6101857910173671, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.656, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.629, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.575, \"ph\": \"X\", \"dur\": 0.3330128630531658, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.963, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349195.526, \"ph\": \"X\", \"dur\": 0.5021384968734253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.231, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.207, \"ph\": \"X\", \"dur\": 0.23198648886849754, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.155, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.518, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.11, \"ph\": \"X\", \"dur\": 0.47220475637426435, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.633, \"ph\": \"X\", \"dur\": 4.01112122688757, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349192.566, \"ph\": \"X\", \"dur\": 4.116138766472126, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.713, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349196.816, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.234, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8320150167042495}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.498, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.681, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.024, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.114, \"ph\": \"X\", \"dur\": 0.2866155652794663, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.957, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.516, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.632, \"ph\": \"X\", \"dur\": 0.17286735138265458, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.472, \"ph\": \"X\", \"dur\": 0.3554631684275365, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.896, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349204.865, \"ph\": \"X\", \"dur\": 0.12123164902160193, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.061, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.021, \"ph\": \"X\", \"dur\": 0.09454073040985007, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.149, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.258, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.414, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349205.629, \"ph\": \"X\", \"dur\": 0.08556060826010177, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349206.25, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349206.595, \"ph\": \"X\", \"dur\": 0.047644536961164545, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349206.875, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349207.329, \"ph\": \"X\", \"dur\": 0.6006703926831635, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349207.256, \"ph\": \"X\", \"dur\": 0.6984539449804227, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349207.028, \"ph\": \"X\", \"dur\": 0.9938001845721441, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349206.561, \"ph\": \"X\", \"dur\": 1.513649477907573, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349206.392, \"ph\": \"X\", \"dur\": 1.7528699540633679, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349208.648, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349208.921, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349209.141, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349209.466, \"ph\": \"X\", \"dur\": 0.46771469529939014, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349209.437, \"ph\": \"X\", \"dur\": 1.6037001472425492, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349209.253, \"ph\": \"X\", \"dur\": 1.8883201298220713, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349208.892, \"ph\": \"X\", \"dur\": 2.3066441532978454, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349208.753, \"ph\": \"X\", \"dur\": 2.498968436004955, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349211.517, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349211.806, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349211.952, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349211.756, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349212.425, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349212.679, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349214.887, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349214.835, \"ph\": \"X\", \"dur\": 0.19481876108203933, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.802, \"ph\": \"X\", \"dur\": 11.444417336341717, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349215.401, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349215.732, \"ph\": \"X\", \"dur\": 0.0648564377481821, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349216.112, \"ph\": \"X\", \"dur\": 0.5375600897974324, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349215.679, \"ph\": \"X\", \"dur\": 1.0254800599337561, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349215.515, \"ph\": \"X\", \"dur\": 1.2410029915277152, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349203.606, \"ph\": \"X\", \"dur\": 13.344461514525962, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.16, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.645, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.619, \"ph\": \"X\", \"dur\": 0.2931012090542845, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.565, \"ph\": \"X\", \"dur\": 0.3746706519144981, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.997, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.519, \"ph\": \"X\", \"dur\": 0.5669949346216074, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.299, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.276, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.229, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.579, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.174, \"ph\": \"X\", \"dur\": 0.47095751718679923, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.827, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.803, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.753, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.081, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349218.714, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.359, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.335, \"ph\": \"X\", \"dur\": 0.2377237891308367, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.254, \"ph\": \"X\", \"dur\": 0.3489775246527183, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.65, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.215, \"ph\": \"X\", \"dur\": 0.5013901533609463, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.885, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.858, \"ph\": \"X\", \"dur\": 0.20554501809423867, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.809, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349220.138, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349219.77, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.382, \"ph\": \"X\", \"dur\": 2.8621644873947747, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349217.311, \"ph\": \"X\", \"dur\": 4.098427970010122, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.456, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.9, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.872, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.817, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.184, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.774, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.497, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.466, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.413, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.793, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.375, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.073, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.047, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.996, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.329, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349222.948, \"ph\": \"X\", \"dur\": 0.44152267236262427, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.585, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.562, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.515, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.86, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349223.474, \"ph\": \"X\", \"dur\": 0.4477588682999495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.119, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.092, \"ph\": \"X\", \"dur\": 0.20504612241925263, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.046, \"ph\": \"X\", \"dur\": 0.27963102582966204, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.371, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.001, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.64, \"ph\": \"X\", \"dur\": 2.850939334707589, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349221.592, \"ph\": \"X\", \"dur\": 2.9350032559427333, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.566, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.899, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.876, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.83, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.151, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.785, \"ph\": \"X\", \"dur\": 0.43029751967543894, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.42, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.397, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.35, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.667, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.306, \"ph\": \"X\", \"dur\": 0.4258074586005648, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.941, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.913, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.844, \"ph\": \"X\", \"dur\": 0.29833961364163764, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349226.189, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349225.8, \"ph\": \"X\", \"dur\": 0.4505027945123726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349226.433, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349226.41, \"ph\": \"X\", \"dur\": 0.19905937431942045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349226.362, \"ph\": \"X\", \"dur\": 1.3377887524750025, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349227.76, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349226.321, \"ph\": \"X\", \"dur\": 1.511154999532643, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.063, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.04, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349227.97, \"ph\": \"X\", \"dur\": 0.3986176443138269, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.419, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349227.928, \"ph\": \"X\", \"dur\": 0.558014812471859, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.699, \"ph\": \"X\", \"dur\": 3.8479823411671426, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349224.654, \"ph\": \"X\", \"dur\": 3.9322957102397793, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.616, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.971, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.948, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.898, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.252, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.857, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.529, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.502, \"ph\": \"X\", \"dur\": 0.23373262373094858, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.453, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.816, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.409, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.076, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.053, \"ph\": \"X\", \"dur\": 0.2317370410310045, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.008, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.356, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349229.964, \"ph\": \"X\", \"dur\": 0.4517500336998376, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.641, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.613, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.569, \"ph\": \"X\", \"dur\": 0.27913213015467603, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.894, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349230.486, \"ph\": \"X\", \"dur\": 0.4714564128617853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.144, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.119, \"ph\": \"X\", \"dur\": 0.2344809672434276, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.07, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.436, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.027, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.754, \"ph\": \"X\", \"dur\": 2.8000519758590157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349228.714, \"ph\": \"X\", \"dur\": 2.888605958169034, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.67, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349231.795, \"ph\": \"X\", \"dur\": 0.03492269724902113, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.178, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8288764073686647}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.389, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.598, \"ph\": \"X\", \"dur\": 0.022949201049356743, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.869, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.965, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.838, \"ph\": \"X\", \"dur\": 0.3868935959516555, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349240.969, \"ph\": \"X\", \"dur\": 0.06884760314807023, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.075, \"ph\": \"X\", \"dur\": 0.18683643028226304, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349240.928, \"ph\": \"X\", \"dur\": 0.3597037816649176, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.365, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.325, \"ph\": \"X\", \"dur\": 0.11474600524678373, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.522, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.476, \"ph\": \"X\", \"dur\": 0.1077614657969795, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.63, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.739, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349241.872, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349242.171, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349242.763, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.08, \"ph\": \"X\", \"dur\": 0.08481226474762275, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.337, \"ph\": \"X\", \"dur\": 0.07308821638545138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.766, \"ph\": \"X\", \"dur\": 0.5398051203348695, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.717, \"ph\": \"X\", \"dur\": 0.6158867107702369, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.493, \"ph\": \"X\", \"dur\": 0.9339327035738223, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349243.048, \"ph\": \"X\", \"dur\": 1.4133714472353838, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349242.867, \"ph\": \"X\", \"dur\": 1.6513446842037136, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349244.982, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.294, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.525, \"ph\": \"X\", \"dur\": 0.04589840209871349, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.824, \"ph\": \"X\", \"dur\": 0.4043549445761661, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.796, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.639, \"ph\": \"X\", \"dur\": 0.6962089144429856, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.245, \"ph\": \"X\", \"dur\": 1.1479589481428232, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349245.102, \"ph\": \"X\", \"dur\": 1.3412810221999045, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349246.652, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349246.884, \"ph\": \"X\", \"dur\": 0.1698739773327385, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349247.146, \"ph\": \"X\", \"dur\": 0.08057165151024161, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349246.838, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349247.594, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349247.893, \"ph\": \"X\", \"dur\": 0.18883201298220711, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349250.013, \"ph\": \"X\", \"dur\": 0.09628686527230111, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349249.96, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.715, \"ph\": \"X\", \"dur\": 11.636741619048827, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349250.491, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349250.801, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349251.108, \"ph\": \"X\", \"dur\": 0.5186020541479638, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349250.765, \"ph\": \"X\", \"dur\": 0.92295699872413, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349250.612, \"ph\": \"X\", \"dur\": 1.1275042254683965, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349238.519, \"ph\": \"X\", \"dur\": 13.357183354238105, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.051, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.559, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.521, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.464, \"ph\": \"X\", \"dur\": 0.35147200302764836, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.875, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.4, \"ph\": \"X\", \"dur\": 1.574514750255867, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.221, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.195, \"ph\": \"X\", \"dur\": 0.25543458559284027, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.137, \"ph\": \"X\", \"dur\": 0.3424918808779001, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.541, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.089, \"ph\": \"X\", \"dur\": 0.5213459803603869, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.828, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.802, \"ph\": \"X\", \"dur\": 0.23597765426838563, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.744, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.15, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349254.694, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.398, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.372, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.321, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.67, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.276, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.911, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.886, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.835, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.18, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349255.794, \"ph\": \"X\", \"dur\": 0.4512511380248516, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.249, \"ph\": \"X\", \"dur\": 4.038560489011801, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349252.198, \"ph\": \"X\", \"dur\": 4.125867232134354, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.354, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.755, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.729, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.68, \"ph\": \"X\", \"dur\": 0.34723138979026724, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.075, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.635, \"ph\": \"X\", \"dur\": 0.5051318709233413, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.363, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.34, \"ph\": \"X\", \"dur\": 0.19781213513195542, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.296, \"ph\": \"X\", \"dur\": 0.2669091861175186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.609, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.251, \"ph\": \"X\", \"dur\": 0.4218162932006767, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.871, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.847, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.8, \"ph\": \"X\", \"dur\": 0.2733948298923369, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.119, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349257.757, \"ph\": \"X\", \"dur\": 0.4422710158751033, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.405, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.382, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.333, \"ph\": \"X\", \"dur\": 0.2851188782545082, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.663, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.29, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.942, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.917, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.869, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.089, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349258.828, \"ph\": \"X\", \"dur\": 1.3452721875997926, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.512, \"ph\": \"X\", \"dur\": 3.7282473791704986, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349256.469, \"ph\": \"X\", \"dur\": 3.8352605014549996, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.338, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.764, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.736, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.676, \"ph\": \"X\", \"dur\": 0.34174353736542107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.082, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.631, \"ph\": \"X\", \"dur\": 0.5136130973981036, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.392, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.365, \"ph\": \"X\", \"dur\": 0.22649863644365134, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.314, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.668, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.245, \"ph\": \"X\", \"dur\": 0.48667273094885877, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.918, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.895, \"ph\": \"X\", \"dur\": 0.24520722425562697, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.846, \"ph\": \"X\", \"dur\": 0.31605041010364127, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.21, \"ph\": \"X\", \"dur\": 0.05338183722350373, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349261.803, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.496, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.47, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.422, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.747, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.379, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.998, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.973, \"ph\": \"X\", \"dur\": 0.2279953234686094, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.925, \"ph\": \"X\", \"dur\": 0.3043263617414698, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.302, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349262.881, \"ph\": \"X\", \"dur\": 0.4816837741989986, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.507, \"ph\": \"X\", \"dur\": 2.925025342443013, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349260.439, \"ph\": \"X\", \"dur\": 3.030042882027569, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.5, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.84, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.816, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.765, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.109, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.725, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.384, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.359, \"ph\": \"X\", \"dur\": 0.26341691639261655, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.313, \"ph\": \"X\", \"dur\": 0.33999740250297006, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.698, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.267, \"ph\": \"X\", \"dur\": 0.4954034052611141, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.956, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.93, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.882, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.128, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349264.836, \"ph\": \"X\", \"dur\": 1.355748996774499, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.39, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.364, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.311, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.66, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.269, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.926, \"ph\": \"X\", \"dur\": 0.028437053474202924, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.898, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.85, \"ph\": \"X\", \"dur\": 0.3060724966039209, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349267.209, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349266.804, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.636, \"ph\": \"X\", \"dur\": 3.7000597735337886, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349263.594, \"ph\": \"X\", \"dur\": 3.7788852901815795, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349267.403, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349267.511, \"ph\": \"X\", \"dur\": 0.06635312477314015, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349273.902, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8257251897537123}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.112, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.294, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.63, \"ph\": \"X\", \"dur\": 0.05138625452355967, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.742, \"ph\": \"X\", \"dur\": 0.2531895550554032, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.593, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.139, \"ph\": \"X\", \"dur\": 0.06784981179809821, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.243, \"ph\": \"X\", \"dur\": 0.17236845570766857, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.088, \"ph\": \"X\", \"dur\": 0.35346758572759246, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.506, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.477, \"ph\": \"X\", \"dur\": 0.11125373552188161, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.663, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.62, \"ph\": \"X\", \"dur\": 0.12197999253408096, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.775, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349275.891, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349276.029, \"ph\": \"X\", \"dur\": 0.02070417051191967, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349276.271, \"ph\": \"X\", \"dur\": 0.06859815531057722, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349276.877, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.18, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.527, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.908, \"ph\": \"X\", \"dur\": 0.552526960047013, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.86, \"ph\": \"X\", \"dur\": 0.6278602069699013, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.641, \"ph\": \"X\", \"dur\": 0.9409172430236264, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.146, \"ph\": \"X\", \"dur\": 1.4702455541837895, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349277.003, \"ph\": \"X\", \"dur\": 1.6685565849907311, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.167, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.507, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.721, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349280.1, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349280.019, \"ph\": \"X\", \"dur\": 0.6001714970081774, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.851, \"ph\": \"X\", \"dur\": 0.834901912089098, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.474, \"ph\": \"X\", \"dur\": 2.2697258733488805, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349279.31, \"ph\": \"X\", \"dur\": 2.486246596292812, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349282.018, \"ph\": \"X\", \"dur\": 0.06385864639821007, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349282.299, \"ph\": \"X\", \"dur\": 0.08506171258511576, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349282.46, \"ph\": \"X\", \"dur\": 0.0860595039350878, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349282.195, \"ph\": \"X\", \"dur\": 0.39886709215131994, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349282.905, \"ph\": \"X\", \"dur\": 0.1878342216322351, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349283.158, \"ph\": \"X\", \"dur\": 0.1920748348696162, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349285.283, \"ph\": \"X\", \"dur\": 0.12422502307151802, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349285.233, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.397, \"ph\": \"X\", \"dur\": 11.224404343672884, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349285.756, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349286.108, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349286.448, \"ph\": \"X\", \"dur\": 0.5393062246598834, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349286.076, \"ph\": \"X\", \"dur\": 0.98681564512234, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349285.863, \"ph\": \"X\", \"dur\": 1.2492347701649844, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349274.227, \"ph\": \"X\", \"dur\": 13.024918834697417, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.422, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.908, \"ph\": \"X\", \"dur\": 0.04390281939876942, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.869, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.807, \"ph\": \"X\", \"dur\": 0.40684942295109616, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.29, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.758, \"ph\": \"X\", \"dur\": 0.6196284283326321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.614, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.588, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.523, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.895, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349288.474, \"ph\": \"X\", \"dur\": 0.4859243874363797, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.15, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.126, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.075, \"ph\": \"X\", \"dur\": 0.29060673067935444, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.413, \"ph\": \"X\", \"dur\": 0.027938157799216906, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.033, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.67, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.646, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.595, \"ph\": \"X\", \"dur\": 0.2856177739294943, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.928, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349289.535, \"ph\": \"X\", \"dur\": 0.46422242557448806, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.175, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.147, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.1, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.432, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.054, \"ph\": \"X\", \"dur\": 0.4455138377625124, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.621, \"ph\": \"X\", \"dur\": 2.916793563805743, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349287.567, \"ph\": \"X\", \"dur\": 3.0078420244906914, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349290.616, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.123, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.095, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.038, \"ph\": \"X\", \"dur\": 0.3569598554524946, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.457, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349291.986, \"ph\": \"X\", \"dur\": 0.5413018073598276, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.785, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.757, \"ph\": \"X\", \"dur\": 0.2342315194059346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.7, \"ph\": \"X\", \"dur\": 0.3212888146909944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.078, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349292.649, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.359, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.334, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.281, \"ph\": \"X\", \"dur\": 0.38165519136430237, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.714, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.235, \"ph\": \"X\", \"dur\": 0.5408029116848415, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.978, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.955, \"ph\": \"X\", \"dur\": 0.23697544561835768, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.905, \"ph\": \"X\", \"dur\": 0.3135559317287112, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.269, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349293.859, \"ph\": \"X\", \"dur\": 0.4717058606992783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.549, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.52, \"ph\": \"X\", \"dur\": 0.20604391376922468, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.443, \"ph\": \"X\", \"dur\": 0.309065870653837, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.801, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.401, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349291.863, \"ph\": \"X\", \"dur\": 3.054239322264391, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349291.81, \"ph\": \"X\", \"dur\": 3.142793304574409, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349294.984, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.357, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.332, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.283, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.606, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.242, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.902, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.877, \"ph\": \"X\", \"dur\": 0.19581655243201135, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.83, \"ph\": \"X\", \"dur\": 0.2701520080049278, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.149, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.785, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.406, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.376, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.33, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.661, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.286, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.908, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.883, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.835, \"ph\": \"X\", \"dur\": 0.27090035151740677, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349297.153, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349296.79, \"ph\": \"X\", \"dur\": 1.3689697321616283, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.415, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.387, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.33, \"ph\": \"X\", \"dur\": 0.33450955007812383, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.724, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.276, \"ph\": \"X\", \"dur\": 0.5121164103731456, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.151, \"ph\": \"X\", \"dur\": 3.7207639440457085, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349295.111, \"ph\": \"X\", \"dur\": 3.801086147718457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349298.961, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.342, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.32, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.27, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.619, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.224, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.897, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.873, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.825, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.172, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.784, \"ph\": \"X\", \"dur\": 0.44950500316240055, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.423, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.397, \"ph\": \"X\", \"dur\": 0.21652072294393102, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.351, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.692, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.308, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.939, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.915, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.867, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.192, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349300.825, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.439, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.416, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.37, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.712, \"ph\": \"X\", \"dur\": 0.039163310486402265, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.326, \"ph\": \"X\", \"dur\": 0.4582356774746559, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.11, \"ph\": \"X\", \"dur\": 2.7287098943360157, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349299.061, \"ph\": \"X\", \"dur\": 2.8187605636709914, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349301.912, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349302.024, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349308.305, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8226223513432311}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349308.582, \"ph\": \"X\", \"dur\": 0.0461478499362065, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349308.81, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.115, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.229, \"ph\": \"X\", \"dur\": 0.25393789856788224, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.077, \"ph\": \"X\", \"dur\": 0.43004807183794597, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.58, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.695, \"ph\": \"X\", \"dur\": 0.17785630813251477, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349309.542, \"ph\": \"X\", \"dur\": 1.538594261656874, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.197, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.142, \"ph\": \"X\", \"dur\": 0.18209692136989591, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.421, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.369, \"ph\": \"X\", \"dur\": 0.12746784495892713, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.534, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.67, \"ph\": \"X\", \"dur\": 0.054379628573475766, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349311.833, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349312.14, \"ph\": \"X\", \"dur\": 0.0863089517725808, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349312.768, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.105, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.406, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.81, \"ph\": \"X\", \"dur\": 0.5645004562466773, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.749, \"ph\": \"X\", \"dur\": 0.6520566472067232, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.546, \"ph\": \"X\", \"dur\": 0.9601247265105881, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349313.061, \"ph\": \"X\", \"dur\": 1.480472915521003, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349312.896, \"ph\": \"X\", \"dur\": 1.7124594043895005, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.139, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.49, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.72, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349316.059, \"ph\": \"X\", \"dur\": 0.48567493959888675, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349316.015, \"ph\": \"X\", \"dur\": 0.5669949346216074, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.85, \"ph\": \"X\", \"dur\": 0.8034714845649791, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.436, \"ph\": \"X\", \"dur\": 1.2696894928394111, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349315.251, \"ph\": \"X\", \"dur\": 1.511404447370136, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349317.016, \"ph\": \"X\", \"dur\": 0.05637521127341983, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349317.273, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349317.408, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349317.197, \"ph\": \"X\", \"dur\": 0.3315161760282077, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349317.825, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349318.106, \"ph\": \"X\", \"dur\": 0.20978563133161982, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349320.264, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349320.218, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349308.918, \"ph\": \"X\", \"dur\": 11.70658701354687, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349320.759, \"ph\": \"X\", \"dur\": 0.03741717562395121, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349321.081, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349321.427, \"ph\": \"X\", \"dur\": 0.5033857360608903, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349321.05, \"ph\": \"X\", \"dur\": 0.9426633778860776, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349320.88, \"ph\": \"X\", \"dur\": 1.1761465537795333, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349308.723, \"ph\": \"X\", \"dur\": 13.491635738646835, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.397, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.909, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.884, \"ph\": \"X\", \"dur\": 0.2908561785168474, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.827, \"ph\": \"X\", \"dur\": 0.3751695475894842, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349323.261, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.776, \"ph\": \"X\", \"dur\": 0.5502819295095759, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349323.541, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349323.517, \"ph\": \"X\", \"dur\": 1.1801377191794213, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349323.463, \"ph\": \"X\", \"dur\": 1.263702744739579, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349324.78, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349323.422, \"ph\": \"X\", \"dur\": 1.4275899739724853, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.034, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.007, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349324.955, \"ph\": \"X\", \"dur\": 0.3185448884785714, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.334, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349324.913, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.592, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.564, \"ph\": \"X\", \"dur\": 0.22550084509367932, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.512, \"ph\": \"X\", \"dur\": 0.338999611152998, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.894, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349325.46, \"ph\": \"X\", \"dur\": 0.4986462271485232, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.144, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.119, \"ph\": \"X\", \"dur\": 0.21402624456900093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.071, \"ph\": \"X\", \"dur\": 0.29285176121679146, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.409, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.015, \"ph\": \"X\", \"dur\": 0.47070806934930626, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.625, \"ph\": \"X\", \"dur\": 3.913337674590311, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349322.571, \"ph\": \"X\", \"dur\": 4.018105766337374, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.635, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.015, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.99, \"ph\": \"X\", \"dur\": 0.19831103080694143, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.937, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.268, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.893, \"ph\": \"X\", \"dur\": 0.4365337156127641, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.553, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.527, \"ph\": \"X\", \"dur\": 0.2035494353942946, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.48, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.807, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.437, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.074, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.049, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.0, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.351, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349327.956, \"ph\": \"X\", \"dur\": 0.45973236449961385, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.618, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.592, \"ph\": \"X\", \"dur\": 0.19856047864443443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.544, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.864, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349328.499, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349329.123, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349329.098, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349329.05, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349329.372, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349329.009, \"ph\": \"X\", \"dur\": 1.3101000425132783, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.795, \"ph\": \"X\", \"dur\": 3.609260760686334, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349326.745, \"ph\": \"X\", \"dur\": 3.709788239196016, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.49, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.945, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.915, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.859, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.221, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.795, \"ph\": \"X\", \"dur\": 0.494156166073649, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.518, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.489, \"ph\": \"X\", \"dur\": 0.2347304150809206, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.436, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.805, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.39, \"ph\": \"X\", \"dur\": 0.4839288047364357, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.081, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.05, \"ph\": \"X\", \"dur\": 0.23398207156844159, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.999, \"ph\": \"X\", \"dur\": 0.31555151442865526, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.363, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349331.952, \"ph\": \"X\", \"dur\": 0.4774431609616175, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.635, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.605, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.553, \"ph\": \"X\", \"dur\": 0.31729764929110627, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.919, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349332.506, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.208, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.175, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.123, \"ph\": \"X\", \"dur\": 0.32328439739093845, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.509, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.076, \"ph\": \"X\", \"dur\": 0.5268338327852331, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.666, \"ph\": \"X\", \"dur\": 2.999859693690915, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349330.62, \"ph\": \"X\", \"dur\": 3.087665332488454, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.743, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.145, \"ph\": \"X\", \"dur\": 0.047145641286178534, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.119, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.063, \"ph\": \"X\", \"dur\": 0.3362556849405749, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.456, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.016, \"ph\": \"X\", \"dur\": 0.5043835274108623, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.744, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.721, \"ph\": \"X\", \"dur\": 0.2314875931935115, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.67, \"ph\": \"X\", \"dur\": 0.3115603490287671, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.029, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349334.623, \"ph\": \"X\", \"dur\": 0.4694608301618412, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.278, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.254, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.205, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.547, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349335.166, \"ph\": \"X\", \"dur\": 0.44526438992501943, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349336.7, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349336.672, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349336.614, \"ph\": \"X\", \"dur\": 0.3449863592528302, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.016, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349336.562, \"ph\": \"X\", \"dur\": 0.5200987411729219, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.292, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.268, \"ph\": \"X\", \"dur\": 0.2274964277936234, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.213, \"ph\": \"X\", \"dur\": 0.3110614533537811, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.579, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.165, \"ph\": \"X\", \"dur\": 0.4786904001490825, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.9, \"ph\": \"X\", \"dur\": 3.8045784174433592, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349333.85, \"ph\": \"X\", \"dur\": 3.893631295428363, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.775, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349337.876, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.183, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8195139422972081}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.421, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.647, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.945, \"ph\": \"X\", \"dur\": 0.1017747176971473, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.094, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.912, \"ph\": \"X\", \"dur\": 0.43354034156284804, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.412, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.521, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.379, \"ph\": \"X\", \"dur\": 0.3674366646272009, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.812, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.782, \"ph\": \"X\", \"dur\": 0.11574379659675575, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.962, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349345.931, \"ph\": \"X\", \"dur\": 0.09878134364723119, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349346.063, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349346.196, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349346.349, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349346.579, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.206, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.562, \"ph\": \"X\", \"dur\": 0.04190723669882536, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.84, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349348.174, \"ph\": \"X\", \"dur\": 0.5360634027724743, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349348.125, \"ph\": \"X\", \"dur\": 0.6111472018578699, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.957, \"ph\": \"X\", \"dur\": 0.8655839961007381, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.494, \"ph\": \"X\", \"dur\": 1.3824399153862508, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349347.348, \"ph\": \"X\", \"dur\": 1.5967156077927447, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349349.48, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349349.768, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349349.98, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349350.302, \"ph\": \"X\", \"dur\": 0.4295491761629599, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349350.271, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349350.094, \"ph\": \"X\", \"dur\": 0.7286371333170766, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349349.736, \"ph\": \"X\", \"dur\": 1.1192724468311273, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349349.594, \"ph\": \"X\", \"dur\": 2.311633110047706, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349352.211, \"ph\": \"X\", \"dur\": 0.07209042503547934, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349352.456, \"ph\": \"X\", \"dur\": 0.09878134364723119, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349352.632, \"ph\": \"X\", \"dur\": 0.08805508663503185, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349352.408, \"ph\": \"X\", \"dur\": 0.37417175623951215, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349353.108, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349353.378, \"ph\": \"X\", \"dur\": 0.26142133369267245, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349355.64, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349355.591, \"ph\": \"X\", \"dur\": 0.1698739773327385, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.75, \"ph\": \"X\", \"dur\": 11.173018089149325, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349356.061, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349356.398, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349356.735, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349356.346, \"ph\": \"X\", \"dur\": 0.9466545432859657, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349356.174, \"ph\": \"X\", \"dur\": 1.1706587013546867, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349344.534, \"ph\": \"X\", \"dur\": 12.95133172263698, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349357.64, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.147, \"ph\": \"X\", \"dur\": 0.022699753211863738, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.122, \"ph\": \"X\", \"dur\": 0.24470832858064093, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.047, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.456, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349357.999, \"ph\": \"X\", \"dur\": 0.5280810719726982, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.757, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.735, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.685, \"ph\": \"X\", \"dur\": 0.33550734142809585, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.072, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349358.641, \"ph\": \"X\", \"dur\": 0.4998934663359882, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.312, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.287, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.24, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.574, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.199, \"ph\": \"X\", \"dur\": 0.4385292983127082, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.818, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.795, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.739, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.086, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349359.694, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.336, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.314, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.266, \"ph\": \"X\", \"dur\": 0.28312329555456417, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.598, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.204, \"ph\": \"X\", \"dur\": 0.4567389904496978, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349357.868, \"ph\": \"X\", \"dur\": 2.8327296425706, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349357.814, \"ph\": \"X\", \"dur\": 2.925025342443013, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.767, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349361.13, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349361.108, \"ph\": \"X\", \"dur\": 0.2065428094442107, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349361.06, \"ph\": \"X\", \"dur\": 1.2779212714766803, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349362.415, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349361.019, \"ph\": \"X\", \"dur\": 1.4777289893085799, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349362.759, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349362.73, \"ph\": \"X\", \"dur\": 0.23572820643089265, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349362.675, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.07, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349362.624, \"ph\": \"X\", \"dur\": 0.5106197233481876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.36, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.324, \"ph\": \"X\", \"dur\": 0.2407171631807528, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.273, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.644, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.228, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.912, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.885, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.836, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.192, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349363.791, \"ph\": \"X\", \"dur\": 0.48542549176139377, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.494, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.467, \"ph\": \"X\", \"dur\": 0.21452514024398694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.413, \"ph\": \"X\", \"dur\": 0.2936001047292705, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.753, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.365, \"ph\": \"X\", \"dur\": 0.45224892937482364, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.925, \"ph\": \"X\", \"dur\": 3.949008715351811, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349360.884, \"ph\": \"X\", \"dur\": 4.037313249824336, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349364.951, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.316, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.291, \"ph\": \"X\", \"dur\": 0.23024035400604645, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.238, \"ph\": \"X\", \"dur\": 0.3118097968662601, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.608, \"ph\": \"X\", \"dur\": 0.023198648886849752, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.198, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.874, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.85, \"ph\": \"X\", \"dur\": 0.19930882215691345, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.8, \"ph\": \"X\", \"dur\": 0.2808782650171271, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.127, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.756, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.384, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.357, \"ph\": \"X\", \"dur\": 0.22375471023122825, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.308, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.654, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.264, \"ph\": \"X\", \"dur\": 0.4547434077497537, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.932, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.908, \"ph\": \"X\", \"dur\": 0.23298428021846956, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.857, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349367.213, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349366.81, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349367.467, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349367.44, \"ph\": \"X\", \"dur\": 1.1828816453918443, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349367.392, \"ph\": \"X\", \"dur\": 1.2584643401522257, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349368.722, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349367.348, \"ph\": \"X\", \"dur\": 1.443554635572038, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.091, \"ph\": \"X\", \"dur\": 3.7738963334317193, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349365.048, \"ph\": \"X\", \"dur\": 3.868686511679062, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349368.952, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.353, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.323, \"ph\": \"X\", \"dur\": 0.21826685780638205, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.269, \"ph\": \"X\", \"dur\": 0.30183188336653977, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.622, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.225, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.914, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.886, \"ph\": \"X\", \"dur\": 0.2312381453560185, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.836, \"ph\": \"X\", \"dur\": 0.3138053795662042, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.203, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.789, \"ph\": \"X\", \"dur\": 0.47918929582406855, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.474, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.443, \"ph\": \"X\", \"dur\": 0.2893594914918894, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.389, \"ph\": \"X\", \"dur\": 0.3761673389394562, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.828, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.341, \"ph\": \"X\", \"dur\": 0.5577653646343661, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.126, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.099, \"ph\": \"X\", \"dur\": 0.21153176619407085, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.023, \"ph\": \"X\", \"dur\": 0.3192932319910503, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.393, \"ph\": \"X\", \"dur\": 0.03467324941152813, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349370.975, \"ph\": \"X\", \"dur\": 0.4874210744613378, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.661, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.635, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.588, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.935, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349371.54, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.109, \"ph\": \"X\", \"dur\": 2.940491108367579, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349369.055, \"ph\": \"X\", \"dur\": 3.034034047427457, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349372.138, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349372.28, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349378.956, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8164473330327268}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.19, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.395, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.73, \"ph\": \"X\", \"dur\": 0.07009484233553527, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.842, \"ph\": \"X\", \"dur\": 0.3015824355290468, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.68, \"ph\": \"X\", \"dur\": 0.48891776148629584, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349380.242, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349380.351, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349380.205, \"ph\": \"X\", \"dur\": 0.38165519136430237, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349380.653, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349380.624, \"ph\": \"X\", \"dur\": 1.2200493731783026, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349381.942, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349381.901, \"ph\": \"X\", \"dur\": 0.10277250904711933, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349382.041, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349382.162, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349382.342, \"ph\": \"X\", \"dur\": 0.03841496697392324, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349382.597, \"ph\": \"X\", \"dur\": 0.1015252698596543, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.195, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.512, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.776, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349384.154, \"ph\": \"X\", \"dur\": 0.5315733416976002, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349384.12, \"ph\": \"X\", \"dur\": 0.5931869575583733, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.895, \"ph\": \"X\", \"dur\": 0.8987605584873081, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.459, \"ph\": \"X\", \"dur\": 1.3697180756741074, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349383.313, \"ph\": \"X\", \"dur\": 1.570024689180993, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349385.395, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349385.701, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349385.921, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349386.32, \"ph\": \"X\", \"dur\": 0.4395270896626802, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349386.259, \"ph\": \"X\", \"dur\": 0.5378095376349253, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349386.04, \"ph\": \"X\", \"dur\": 0.834403016414112, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349385.669, \"ph\": \"X\", \"dur\": 1.259711579339691, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349385.526, \"ph\": \"X\", \"dur\": 1.4582720579841253, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349387.215, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349387.444, \"ph\": \"X\", \"dur\": 0.09054956500996193, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349387.597, \"ph\": \"X\", \"dur\": 0.0708431858480143, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349387.38, \"ph\": \"X\", \"dur\": 0.339249058990491, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349388.018, \"ph\": \"X\", \"dur\": 0.18733532595724905, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349388.286, \"ph\": \"X\", \"dur\": 0.21103287051908484, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349390.525, \"ph\": \"X\", \"dur\": 0.08705729528505982, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349390.463, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.502, \"ph\": \"X\", \"dur\": 11.47859169007826, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349391.134, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349391.449, \"ph\": \"X\", \"dur\": 0.04490061074874146, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349391.819, \"ph\": \"X\", \"dur\": 0.5300766546726422, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349391.417, \"ph\": \"X\", \"dur\": 0.988811227822284, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349391.235, \"ph\": \"X\", \"dur\": 1.2235416429032044, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349379.321, \"ph\": \"X\", \"dur\": 13.266134893553154, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349392.718, \"ph\": \"X\", \"dur\": 0.05188515019854568, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.213, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.19, \"ph\": \"X\", \"dur\": 0.3519708987026344, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.135, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.625, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.087, \"ph\": \"X\", \"dur\": 0.6039132145705726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.927, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.904, \"ph\": \"X\", \"dur\": 0.24770170263055705, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.826, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349395.898, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349393.783, \"ph\": \"X\", \"dur\": 2.225573606112618, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.232, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.206, \"ph\": \"X\", \"dur\": 0.25169286803044516, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.15, \"ph\": \"X\", \"dur\": 0.33750292412803995, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.551, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.099, \"ph\": \"X\", \"dur\": 0.5238404587353169, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.833, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.805, \"ph\": \"X\", \"dur\": 0.23971937183078076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.745, \"ph\": \"X\", \"dur\": 0.3297700411657567, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.132, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349396.695, \"ph\": \"X\", \"dur\": 0.4996440184984952, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.387, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.362, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.309, \"ph\": \"X\", \"dur\": 0.31605041010364127, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.679, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.262, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349392.962, \"ph\": \"X\", \"dur\": 4.821577250902354, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349392.908, \"ph\": \"X\", \"dur\": 4.913872950774767, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349397.865, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.442, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.417, \"ph\": \"X\", \"dur\": 0.22949201049356746, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.365, \"ph\": \"X\", \"dur\": 0.308068079303865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.72, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.325, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.011, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.983, \"ph\": \"X\", \"dur\": 0.21252955754404287, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.933, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.268, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.892, \"ph\": \"X\", \"dur\": 0.44202156803761034, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.533, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.507, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.458, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.785, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.416, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.046, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.02, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.976, \"ph\": \"X\", \"dur\": 0.2743926212423089, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.294, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349399.931, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.588, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.56, \"ph\": \"X\", \"dur\": 0.20903728781914077, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.483, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.845, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349400.439, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.207, \"ph\": \"X\", \"dur\": 2.7576458434852045, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349398.166, \"ph\": \"X\", \"dur\": 3.7065454173086074, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349401.921, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.309, \"ph\": \"X\", \"dur\": 0.07283876854795837, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.286, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.233, \"ph\": \"X\", \"dur\": 0.3479797333027463, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.627, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.188, \"ph\": \"X\", \"dur\": 0.5076263492982714, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.954, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.924, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.87, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.273, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.823, \"ph\": \"X\", \"dur\": 0.5143614409105827, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.539, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.51, \"ph\": \"X\", \"dur\": 0.20479667458175965, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.462, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.786, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.419, \"ph\": \"X\", \"dur\": 0.43204365453789, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.037, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.011, \"ph\": \"X\", \"dur\": 0.21801740996888908, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.964, \"ph\": \"X\", \"dur\": 0.29185396986681944, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.303, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349403.922, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.558, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.532, \"ph\": \"X\", \"dur\": 0.22974145833106044, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.482, \"ph\": \"X\", \"dur\": 0.30657139227890695, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.846, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349404.44, \"ph\": \"X\", \"dur\": 0.4692113823243482, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.092, \"ph\": \"X\", \"dur\": 2.871394057382016, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349402.051, \"ph\": \"X\", \"dur\": 2.9477250956548766, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.029, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.371, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.347, \"ph\": \"X\", \"dur\": 0.20055606134437848, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.296, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.621, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.253, \"ph\": \"X\", \"dur\": 0.43403923723783405, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.891, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.867, \"ph\": \"X\", \"dur\": 0.24171495453072483, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.818, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.183, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.78, \"ph\": \"X\", \"dur\": 0.4662180082744321, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.444, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.418, \"ph\": \"X\", \"dur\": 0.20529557025674566, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.372, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.699, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.328, \"ph\": \"X\", \"dur\": 0.4367831634502572, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.951, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.928, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.878, \"ph\": \"X\", \"dur\": 1.1277536733058897, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.051, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349406.836, \"ph\": \"X\", \"dur\": 1.2839080195765125, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.345, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.318, \"ph\": \"X\", \"dur\": 0.27139924719239283, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.26, \"ph\": \"X\", \"dur\": 0.3599532295024107, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.695, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.219, \"ph\": \"X\", \"dur\": 0.5403040160098556, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.164, \"ph\": \"X\", \"dur\": 3.6574041933224843, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349405.121, \"ph\": \"X\", \"dur\": 3.7402208753701633, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349408.897, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349409.0, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349415.62, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8133805786559191}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349415.853, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.061, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.372, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.47, \"ph\": \"X\", \"dur\": 0.2731453820548439, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.342, \"ph\": \"X\", \"dur\": 0.4233129802256347, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.831, \"ph\": \"X\", \"dur\": 0.07658048611035348, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.938, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.801, \"ph\": \"X\", \"dur\": 0.38065740001433035, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.249, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.22, \"ph\": \"X\", \"dur\": 0.11275042254683966, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.396, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.367, \"ph\": \"X\", \"dur\": 0.09828244797224518, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.498, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.615, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349417.796, \"ph\": \"X\", \"dur\": 0.02120306618690569, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349418.044, \"ph\": \"X\", \"dur\": 0.07558269476038144, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349418.628, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349418.949, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349419.229, \"ph\": \"X\", \"dur\": 0.043403923723783405, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349419.631, \"ph\": \"X\", \"dur\": 0.5310744460226142, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349419.585, \"ph\": \"X\", \"dur\": 0.6041626624080656, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349419.364, \"ph\": \"X\", \"dur\": 0.9224581030491439, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349418.905, \"ph\": \"X\", \"dur\": 1.4350734090972757, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349418.739, \"ph\": \"X\", \"dur\": 1.6560841931160808, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349420.896, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.222, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.486, \"ph\": \"X\", \"dur\": 0.03616993643648617, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.843, \"ph\": \"X\", \"dur\": 0.49690009228607207, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.764, \"ph\": \"X\", \"dur\": 0.5981759143082334, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.615, \"ph\": \"X\", \"dur\": 0.8156944286021365, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.168, \"ph\": \"X\", \"dur\": 1.2921397982137819, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349421.024, \"ph\": \"X\", \"dur\": 1.5126516865576012, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349422.738, \"ph\": \"X\", \"dur\": 0.04839288047364357, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349424.205, \"ph\": \"X\", \"dur\": 0.07707938178533949, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349424.359, \"ph\": \"X\", \"dur\": 0.07907496448528356, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349424.151, \"ph\": \"X\", \"dur\": 0.3362556849405749, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349424.76, \"ph\": \"X\", \"dur\": 0.20853839214415476, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349425.025, \"ph\": \"X\", \"dur\": 0.16812784247028745, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.198, \"ph\": \"X\", \"dur\": 0.1419358195335216, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.147, \"ph\": \"X\", \"dur\": 0.23273483238097653, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349416.168, \"ph\": \"X\", \"dur\": 11.373574150493702, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.682, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.975, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349428.293, \"ph\": \"X\", \"dur\": 0.5684916216465655, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.944, \"ph\": \"X\", \"dur\": 0.9733454618977175, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349427.794, \"ph\": \"X\", \"dur\": 1.175148762429561, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349415.978, \"ph\": \"X\", \"dur\": 13.143406557506596, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.31, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.794, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.755, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.688, \"ph\": \"X\", \"dur\": 0.37142783002708907, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.117, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.641, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.401, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.377, \"ph\": \"X\", \"dur\": 0.23048980184353948, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.326, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.688, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.282, \"ph\": \"X\", \"dur\": 0.4694608301618412, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.922, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.897, \"ph\": \"X\", \"dur\": 0.2070417051191967, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.85, \"ph\": \"X\", \"dur\": 0.28112771285462007, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.178, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349430.81, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.457, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.434, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.366, \"ph\": \"X\", \"dur\": 0.3544653770775645, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.765, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.314, \"ph\": \"X\", \"dur\": 0.5363128506099675, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.039, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.015, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.946, \"ph\": \"X\", \"dur\": 0.2908561785168474, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.284, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349431.905, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.519, \"ph\": \"X\", \"dur\": 2.894842154106359, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349429.456, \"ph\": \"X\", \"dur\": 2.9943718412660694, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.496, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.877, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.854, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.805, \"ph\": \"X\", \"dur\": 0.29858906147913067, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349433.149, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.763, \"ph\": \"X\", \"dur\": 1.7074704476396403, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349434.762, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349434.733, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349434.645, \"ph\": \"X\", \"dur\": 0.36593997760224284, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.065, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349434.592, \"ph\": \"X\", \"dur\": 0.5418007030348135, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.375, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.351, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.299, \"ph\": \"X\", \"dur\": 0.3045758095789629, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.656, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.253, \"ph\": \"X\", \"dur\": 0.4672157996244042, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.923, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.897, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.847, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.182, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349435.806, \"ph\": \"X\", \"dur\": 0.4410237766876383, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.444, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.419, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.372, \"ph\": \"X\", \"dur\": 0.27514096475478794, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.695, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.327, \"ph\": \"X\", \"dur\": 0.432542550212876, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.673, \"ph\": \"X\", \"dur\": 4.1642821991082775, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349432.629, \"ph\": \"X\", \"dur\": 4.245602194130997, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349436.905, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.249, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.224, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.173, \"ph\": \"X\", \"dur\": 0.2945978960792426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.513, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.134, \"ph\": \"X\", \"dur\": 0.44077432885014534, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.776, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.752, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.704, \"ph\": \"X\", \"dur\": 0.2728959342173508, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.024, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.662, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.286, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.262, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.214, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.529, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.17, \"ph\": \"X\", \"dur\": 0.42281408455064873, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.776, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.753, \"ph\": \"X\", \"dur\": 0.19232428270710925, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.707, \"ph\": \"X\", \"dur\": 0.2664102904425326, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349439.019, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349438.663, \"ph\": \"X\", \"dur\": 0.42081850185070463, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349439.291, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349439.268, \"ph\": \"X\", \"dur\": 0.2220085753687772, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349439.217, \"ph\": \"X\", \"dur\": 1.3248174649253661, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349440.603, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349439.177, \"ph\": \"X\", \"dur\": 1.4944419944206115, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.042, \"ph\": \"X\", \"dur\": 3.701307012721254, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349437.001, \"ph\": \"X\", \"dur\": 3.7803819772065377, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349440.817, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.23, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.188, \"ph\": \"X\", \"dur\": 0.2379732369683297, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.134, \"ph\": \"X\", \"dur\": 0.3215382625284874, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.509, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.088, \"ph\": \"X\", \"dur\": 0.48991555283626786, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.809, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.781, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.728, \"ph\": \"X\", \"dur\": 0.33101728035322175, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.119, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349441.682, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.409, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.375, \"ph\": \"X\", \"dur\": 0.24570611993061298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.323, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.702, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.275, \"ph\": \"X\", \"dur\": 0.493906718236156, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.974, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.944, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.893, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.269, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349442.848, \"ph\": \"X\", \"dur\": 0.4831804612239567, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.535, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.506, \"ph\": \"X\", \"dur\": 0.22400415806872126, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.455, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.82, \"ph\": \"X\", \"dur\": 0.033924905899049104, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349443.408, \"ph\": \"X\", \"dur\": 0.4814343263615056, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349440.971, \"ph\": \"X\", \"dur\": 2.9821488972289116, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349440.926, \"ph\": \"X\", \"dur\": 3.0774379711512405, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349444.045, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349444.146, \"ph\": \"X\", \"dur\": 0.05911913748584291, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349450.534, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8103504649347806}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349450.83, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.037, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.344, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.451, \"ph\": \"X\", \"dur\": 0.2579290639677703, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.308, \"ph\": \"X\", \"dur\": 0.4258074586005648, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.812, \"ph\": \"X\", \"dur\": 0.08780563879753885, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.947, \"ph\": \"X\", \"dur\": 0.18484084758231897, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.772, \"ph\": \"X\", \"dur\": 0.38614525243917647, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349452.23, \"ph\": \"X\", \"dur\": 0.05986748099832194, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349452.194, \"ph\": \"X\", \"dur\": 0.12597115793396907, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349452.402, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349452.367, \"ph\": \"X\", \"dur\": 1.0633961312326936, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349453.492, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349453.644, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349453.813, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349454.081, \"ph\": \"X\", \"dur\": 0.08356502556015771, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349454.655, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.058, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.312, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.779, \"ph\": \"X\", \"dur\": 0.5131142017231176, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.709, \"ph\": \"X\", \"dur\": 0.6081538278079537, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.486, \"ph\": \"X\", \"dur\": 0.9234558943991159, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349455.006, \"ph\": \"X\", \"dur\": 1.4622632233840134, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349454.795, \"ph\": \"X\", \"dur\": 1.72817461815156, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.045, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.379, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.654, \"ph\": \"X\", \"dur\": 0.036918279948965196, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.988, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.939, \"ph\": \"X\", \"dur\": 0.5542730949094639, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.771, \"ph\": \"X\", \"dur\": 0.8156944286021365, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.345, \"ph\": \"X\", \"dur\": 1.297627650638628, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349457.164, \"ph\": \"X\", \"dur\": 1.5493205186690733, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349458.966, \"ph\": \"X\", \"dur\": 0.061613615860773, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349459.252, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349459.395, \"ph\": \"X\", \"dur\": 0.1077614657969795, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349459.179, \"ph\": \"X\", \"dur\": 0.3736728605645261, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349459.878, \"ph\": \"X\", \"dur\": 0.2075406007941827, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349460.147, \"ph\": \"X\", \"dur\": 0.20130440485685752, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349462.337, \"ph\": \"X\", \"dur\": 0.09179680419742697, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349462.281, \"ph\": \"X\", \"dur\": 0.18883201298220711, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349451.14, \"ph\": \"X\", \"dur\": 11.52748346622689, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349462.83, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349463.164, \"ph\": \"X\", \"dur\": 0.05288294154851771, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349463.56, \"ph\": \"X\", \"dur\": 0.5467896597846738, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349463.126, \"ph\": \"X\", \"dur\": 1.0434403042332527, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349462.949, \"ph\": \"X\", \"dur\": 1.2739301060767922, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349450.951, \"ph\": \"X\", \"dur\": 13.412061878486565, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349464.548, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.2, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.152, \"ph\": \"X\", \"dur\": 0.32228660604096643, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.083, \"ph\": \"X\", \"dur\": 0.42805248913800187, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.574, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.02, \"ph\": \"X\", \"dur\": 0.6430765250569748, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.902, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.874, \"ph\": \"X\", \"dur\": 0.2569312726177983, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.811, \"ph\": \"X\", \"dur\": 0.3499753160026904, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349466.22, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349465.759, \"ph\": \"X\", \"dur\": 1.5368481267944227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349467.57, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349467.537, \"ph\": \"X\", \"dur\": 0.31455372307868323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349467.473, \"ph\": \"X\", \"dur\": 0.4128361710509284, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349467.955, \"ph\": \"X\", \"dur\": 0.035671040761500156, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349467.408, \"ph\": \"X\", \"dur\": 0.6243679372449992, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.284, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.251, \"ph\": \"X\", \"dur\": 0.2684058731424767, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.194, \"ph\": \"X\", \"dur\": 0.35895543815243863, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.614, \"ph\": \"X\", \"dur\": 0.033176562386570074, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.126, \"ph\": \"X\", \"dur\": 0.5625048735467333, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.894, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.865, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.806, \"ph\": \"X\", \"dur\": 0.36569052976474986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.228, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349468.756, \"ph\": \"X\", \"dur\": 0.5442951814097436, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349464.819, \"ph\": \"X\", \"dur\": 4.522988189423222, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349464.738, \"ph\": \"X\", \"dur\": 4.657440573831954, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.433, \"ph\": \"X\", \"dur\": 0.031430427524119016, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.852, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.828, \"ph\": \"X\", \"dur\": 0.25718072045529133, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.766, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.182, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.718, \"ph\": \"X\", \"dur\": 0.5330700287225583, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.499, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.473, \"ph\": \"X\", \"dur\": 0.277385995292225, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.415, \"ph\": \"X\", \"dur\": 0.36968169516463795, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.841, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349470.367, \"ph\": \"X\", \"dur\": 0.5432973900597716, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.148, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.126, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.065, \"ph\": \"X\", \"dur\": 0.33251396737817973, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.455, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.016, \"ph\": \"X\", \"dur\": 0.5053813187608344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.748, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.724, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.669, \"ph\": \"X\", \"dur\": 0.31405482740369717, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.036, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349471.613, \"ph\": \"X\", \"dur\": 0.5365622984474604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.372, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.346, \"ph\": \"X\", \"dur\": 0.2379732369683297, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.29, \"ph\": \"X\", \"dur\": 0.3217877103659804, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.67, \"ph\": \"X\", \"dur\": 0.03242821887409105, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.239, \"ph\": \"X\", \"dur\": 0.5028868403859043, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.611, \"ph\": \"X\", \"dur\": 3.1946784547729545, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349469.554, \"ph\": \"X\", \"dur\": 3.312667281907147, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349472.907, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.523, \"ph\": \"X\", \"dur\": 0.03267766671158406, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.492, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.426, \"ph\": \"X\", \"dur\": 0.39936598782630595, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.888, \"ph\": \"X\", \"dur\": 0.03417435373654211, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.367, \"ph\": \"X\", \"dur\": 0.5971781229582613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.232, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.199, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.137, \"ph\": \"X\", \"dur\": 0.3973704051263619, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.594, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.091, \"ph\": \"X\", \"dur\": 0.5797167743337508, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.911, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.88, \"ph\": \"X\", \"dur\": 0.25543458559284027, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.817, \"ph\": \"X\", \"dur\": 0.3464830462777882, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.219, \"ph\": \"X\", \"dur\": 0.03167987536161203, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349475.765, \"ph\": \"X\", \"dur\": 0.525836041435261, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.515, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.486, \"ph\": \"X\", \"dur\": 0.310063662003809, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.426, \"ph\": \"X\", \"dur\": 0.40560218376363116, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.9, \"ph\": \"X\", \"dur\": 0.035172145086514145, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349476.378, \"ph\": \"X\", \"dur\": 0.6061582451080096, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.213, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.182, \"ph\": \"X\", \"dur\": 0.246205015605599, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.124, \"ph\": \"X\", \"dur\": 0.33700402845305394, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.519, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.072, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.23, \"ph\": \"X\", \"dur\": 3.417185925816718, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349474.177, \"ph\": \"X\", \"dur\": 3.5254462872886836, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.733, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.091, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.067, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.015, \"ph\": \"X\", \"dur\": 0.27888268231718305, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.342, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.963, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.625, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.599, \"ph\": \"X\", \"dur\": 0.215522931593959, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.55, \"ph\": \"X\", \"dur\": 0.2903572828418614, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.885, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349478.507, \"ph\": \"X\", \"dur\": 0.4445160464125404, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.156, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.128, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.078, \"ph\": \"X\", \"dur\": 0.276388203942253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.413, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.034, \"ph\": \"X\", \"dur\": 0.46447187341198104, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.698, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.671, \"ph\": \"X\", \"dur\": 0.19880992648192744, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.622, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.944, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349479.576, \"ph\": \"X\", \"dur\": 1.3697180756741074, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.194, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.167, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.106, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.497, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.052, \"ph\": \"X\", \"dur\": 0.5093724841607226, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.871, \"ph\": \"X\", \"dur\": 3.756185536969716, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349477.826, \"ph\": \"X\", \"dur\": 3.8427439365797897, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.703, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349481.804, \"ph\": \"X\", \"dur\": 0.06760036396060519, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.102, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8073243780733934}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.322, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.514, \"ph\": \"X\", \"dur\": 0.03666883211147219, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.825, \"ph\": \"X\", \"dur\": 0.07832662097280453, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.968, \"ph\": \"X\", \"dur\": 0.24420943290565492, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.786, \"ph\": \"X\", \"dur\": 0.463723529899502, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.318, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.439, \"ph\": \"X\", \"dur\": 0.17286735138265458, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.288, \"ph\": \"X\", \"dur\": 0.36095102085238273, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.715, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.683, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.866, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.834, \"ph\": \"X\", \"dur\": 0.10875925714695153, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349489.977, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349490.077, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349490.221, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349490.445, \"ph\": \"X\", \"dur\": 0.09129790852244096, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.019, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.344, \"ph\": \"X\", \"dur\": 0.06036637667330796, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.628, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349492.024, \"ph\": \"X\", \"dur\": 0.5343172679100233, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.972, \"ph\": \"X\", \"dur\": 0.6133922323953069, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.763, \"ph\": \"X\", \"dur\": 0.9112329503619585, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.292, \"ph\": \"X\", \"dur\": 1.416863716960286, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349491.144, \"ph\": \"X\", \"dur\": 1.6201637045170876, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349493.27, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349493.624, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349493.891, \"ph\": \"X\", \"dur\": 0.06086527234829397, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349494.289, \"ph\": \"X\", \"dur\": 0.49590230093610005, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349494.257, \"ph\": \"X\", \"dur\": 0.555021438421943, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349494.042, \"ph\": \"X\", \"dur\": 0.8481226474762275, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349493.59, \"ph\": \"X\", \"dur\": 1.3342964827501003, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349493.401, \"ph\": \"X\", \"dur\": 1.576510332955811, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349495.197, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349495.436, \"ph\": \"X\", \"dur\": 0.10327140472210534, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349495.606, \"ph\": \"X\", \"dur\": 0.09005066933497592, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349495.359, \"ph\": \"X\", \"dur\": 1.4031440858981705, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349497.093, \"ph\": \"X\", \"dur\": 0.20629336160671768, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349497.349, \"ph\": \"X\", \"dur\": 0.19631544810699736, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349499.543, \"ph\": \"X\", \"dur\": 0.10377030039709136, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349499.471, \"ph\": \"X\", \"dur\": 0.2432116415556829, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.631, \"ph\": \"X\", \"dur\": 11.262320414971823, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349500.033, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349500.325, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349500.668, \"ph\": \"X\", \"dur\": 0.5640015605716913, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349500.293, \"ph\": \"X\", \"dur\": 0.9940496324096372, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349500.143, \"ph\": \"X\", \"dur\": 1.1943562459165227, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349488.433, \"ph\": \"X\", \"dur\": 13.02342214767246, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349501.641, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.175, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.134, \"ph\": \"X\", \"dur\": 0.3020813312040328, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.041, \"ph\": \"X\", \"dur\": 0.4203196061757186, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.521, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349501.989, \"ph\": \"X\", \"dur\": 0.5951825402583173, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.837, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.813, \"ph\": \"X\", \"dur\": 0.21502403591897298, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.762, \"ph\": \"X\", \"dur\": 0.29709237445417264, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.107, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349502.716, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.344, \"ph\": \"X\", \"dur\": 0.02444588807431479, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.32, \"ph\": \"X\", \"dur\": 0.26067299018019346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.267, \"ph\": \"X\", \"dur\": 0.3422424330404071, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.669, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.225, \"ph\": \"X\", \"dur\": 0.5101208276732015, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.926, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.902, \"ph\": \"X\", \"dur\": 0.2008055091818715, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.829, \"ph\": \"X\", \"dur\": 0.3023307790415258, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.178, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349503.789, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.441, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.417, \"ph\": \"X\", \"dur\": 0.22250747104376323, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.365, \"ph\": \"X\", \"dur\": 0.30357801822899083, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.715, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.322, \"ph\": \"X\", \"dur\": 0.45798622963716284, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349501.856, \"ph\": \"X\", \"dur\": 2.964188652929415, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349501.804, \"ph\": \"X\", \"dur\": 3.054239322264391, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.889, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.252, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.226, \"ph\": \"X\", \"dur\": 0.25069507668047314, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.177, \"ph\": \"X\", \"dur\": 0.3282733541407986, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.57, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.136, \"ph\": \"X\", \"dur\": 0.5096219319982155, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.867, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.84, \"ph\": \"X\", \"dur\": 1.2100714596785822, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.791, \"ph\": \"X\", \"dur\": 1.288896976326373, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.141, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.746, \"ph\": \"X\", \"dur\": 1.4637599104089714, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.449, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.423, \"ph\": \"X\", \"dur\": 0.22699753211863738, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.369, \"ph\": \"X\", \"dur\": 0.3105625576787951, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.733, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.318, \"ph\": \"X\", \"dur\": 0.4806859828490266, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.007, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.981, \"ph\": \"X\", \"dur\": 0.2185163056438751, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.933, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.278, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349507.89, \"ph\": \"X\", \"dur\": 0.45100169018735864, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.599, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.576, \"ph\": \"X\", \"dur\": 0.2032999875568016, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.526, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.853, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349508.482, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349505.034, \"ph\": \"X\", \"dur\": 3.946015341301895, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349504.993, \"ph\": \"X\", \"dur\": 4.040805519549238, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.063, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.416, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.391, \"ph\": \"X\", \"dur\": 0.2284942191435954, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.342, \"ph\": \"X\", \"dur\": 0.30557360092893493, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.691, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.301, \"ph\": \"X\", \"dur\": 0.4534961685622887, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.97, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.942, \"ph\": \"X\", \"dur\": 0.20454722674426662, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.896, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.22, \"ph\": \"X\", \"dur\": 0.028935949149188938, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.854, \"ph\": \"X\", \"dur\": 0.4305469675129319, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.479, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.457, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.408, \"ph\": \"X\", \"dur\": 0.3000857485040887, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.753, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.367, \"ph\": \"X\", \"dur\": 0.4480083161374425, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.0, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.973, \"ph\": \"X\", \"dur\": 0.20005716566939247, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.926, \"ph\": \"X\", \"dur\": 0.27613875610475996, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.248, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349510.884, \"ph\": \"X\", \"dur\": 0.4275535934630158, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.498, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.473, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.425, \"ph\": \"X\", \"dur\": 0.2718981428673788, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.741, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349511.382, \"ph\": \"X\", \"dur\": 1.4869585592958212, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.211, \"ph\": \"X\", \"dur\": 3.732238544570387, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349509.173, \"ph\": \"X\", \"dur\": 3.806574000143303, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.029, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.395, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.369, \"ph\": \"X\", \"dur\": 0.22874366698108842, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.318, \"ph\": \"X\", \"dur\": 0.31280758821623217, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.681, \"ph\": \"X\", \"dur\": 0.03966220616138828, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.277, \"ph\": \"X\", \"dur\": 0.4804365350115336, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.989, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.959, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.909, \"ph\": \"X\", \"dur\": 0.31879433631606435, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.277, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.868, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.547, \"ph\": \"X\", \"dur\": 0.06585422909815414, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.521, \"ph\": \"X\", \"dur\": 0.25917630315523543, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.475, \"ph\": \"X\", \"dur\": 0.33426010224063085, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.855, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.428, \"ph\": \"X\", \"dur\": 0.49141223986122595, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.127, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.102, \"ph\": \"X\", \"dur\": 0.2738937255673229, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.036, \"ph\": \"X\", \"dur\": 0.36893335165215896, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.455, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349514.994, \"ph\": \"X\", \"dur\": 0.5313238938601073, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.721, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.695, \"ph\": \"X\", \"dur\": 0.2003066135068855, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.648, \"ph\": \"X\", \"dur\": 0.27838378664219704, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.974, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349515.602, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.176, \"ph\": \"X\", \"dur\": 2.9147979811057994, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349513.136, \"ph\": \"X\", \"dur\": 2.992875154241111, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349516.162, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349516.262, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349522.66, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8043308769834978}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349522.889, \"ph\": \"X\", \"dur\": 0.04789398479865756, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.095, \"ph\": \"X\", \"dur\": 0.046397297773699504, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.403, \"ph\": \"X\", \"dur\": 0.05936858532333592, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.52, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.368, \"ph\": \"X\", \"dur\": 0.42106794968819766, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.873, \"ph\": \"X\", \"dur\": 0.05687410694840585, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.983, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.824, \"ph\": \"X\", \"dur\": 0.39562427026391084, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349524.283, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349524.253, \"ph\": \"X\", \"dur\": 0.10302195688461234, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349524.42, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349524.39, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349524.54, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349525.64, \"ph\": \"X\", \"dur\": 0.058869689648349904, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349525.798, \"ph\": \"X\", \"dur\": 0.030432636174146984, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349526.062, \"ph\": \"X\", \"dur\": 0.05088735884857365, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349526.646, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349526.973, \"ph\": \"X\", \"dur\": 0.045150058586234464, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349527.227, \"ph\": \"X\", \"dur\": 0.04065999751136032, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349527.626, \"ph\": \"X\", \"dur\": 0.5023879447109183, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349527.578, \"ph\": \"X\", \"dur\": 0.5779706394712997, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349527.36, \"ph\": \"X\", \"dur\": 0.8902793320125458, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349526.919, \"ph\": \"X\", \"dur\": 1.3674730451366703, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349526.761, \"ph\": \"X\", \"dur\": 1.580501498355699, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349528.836, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.128, \"ph\": \"X\", \"dur\": 0.04165778886133235, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.35, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.665, \"ph\": \"X\", \"dur\": 0.41682733645081654, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.633, \"ph\": \"X\", \"dur\": 0.4769442652866314, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.46, \"ph\": \"X\", \"dur\": 0.7271404462921186, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349529.093, \"ph\": \"X\", \"dur\": 1.1287514646558616, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349528.947, \"ph\": \"X\", \"dur\": 1.331303108700184, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349530.52, \"ph\": \"X\", \"dur\": 0.03766662346144422, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349530.8, \"ph\": \"X\", \"dur\": 0.06410809423570307, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349530.923, \"ph\": \"X\", \"dur\": 0.10227361337213331, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349530.707, \"ph\": \"X\", \"dur\": 0.38963752216407865, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349531.376, \"ph\": \"X\", \"dur\": 0.2122801097065499, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349531.648, \"ph\": \"X\", \"dur\": 0.25119397235545915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349533.859, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349533.797, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.22, \"ph\": \"X\", \"dur\": 10.980444358604723, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349534.324, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349534.619, \"ph\": \"X\", \"dur\": 0.04365337156127642, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349534.959, \"ph\": \"X\", \"dur\": 0.5248382500852891, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349534.573, \"ph\": \"X\", \"dur\": 0.9708509835227875, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349534.423, \"ph\": \"X\", \"dur\": 1.172654284054631, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349523.017, \"ph\": \"X\", \"dur\": 12.730320938618176, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349535.912, \"ph\": \"X\", \"dur\": 0.03292711454907707, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.404, \"ph\": \"X\", \"dur\": 0.03342601022406309, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.378, \"ph\": \"X\", \"dur\": 0.23547875859339962, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.319, \"ph\": \"X\", \"dur\": 0.33850071547801197, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.716, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.27, \"ph\": \"X\", \"dur\": 0.5098713798357085, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.022, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.995, \"ph\": \"X\", \"dur\": 0.27988047366715507, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.927, \"ph\": \"X\", \"dur\": 0.37866181731438625, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.358, \"ph\": \"X\", \"dur\": 0.048143432636150556, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.875, \"ph\": \"X\", \"dur\": 0.5664960389466214, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.673, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.646, \"ph\": \"X\", \"dur\": 1.2557204139398026, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.56, \"ph\": \"X\", \"dur\": 1.3729608975615164, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349538.991, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349537.516, \"ph\": \"X\", \"dur\": 1.545329353269185, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.28, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.251, \"ph\": \"X\", \"dur\": 0.26241912504264453, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.194, \"ph\": \"X\", \"dur\": 0.3494764203277043, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.597, \"ph\": \"X\", \"dur\": 0.04889177614862958, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.144, \"ph\": \"X\", \"dur\": 0.5378095376349253, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.905, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.882, \"ph\": \"X\", \"dur\": 0.23323372805596257, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.829, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.195, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349539.782, \"ph\": \"X\", \"dur\": 0.47769260879911046, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.138, \"ph\": \"X\", \"dur\": 4.1680239166706725, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349536.085, \"ph\": \"X\", \"dur\": 4.25907237735562, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.39, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.844, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.817, \"ph\": \"X\", \"dur\": 0.27588930826726693, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.757, \"ph\": \"X\", \"dur\": 0.3679355603021869, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.184, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.708, \"ph\": \"X\", \"dur\": 0.5388073289848975, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.483, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.456, \"ph\": \"X\", \"dur\": 0.22150967969379118, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.405, \"ph\": \"X\", \"dur\": 0.30382746606648386, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.757, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.362, \"ph\": \"X\", \"dur\": 0.4577367817996698, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.069, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.03, \"ph\": \"X\", \"dur\": 0.23722489345585068, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.978, \"ph\": \"X\", \"dur\": 0.3182954406410783, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.356, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349541.937, \"ph\": \"X\", \"dur\": 0.4819332220364916, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.603, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.579, \"ph\": \"X\", \"dur\": 0.20280109188181558, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.53, \"ph\": \"X\", \"dur\": 0.2818760563670991, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.86, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.487, \"ph\": \"X\", \"dur\": 0.43603481993777815, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.114, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.086, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.036, \"ph\": \"X\", \"dur\": 0.29759127012915865, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.38, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349542.993, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.581, \"ph\": \"X\", \"dur\": 2.916793563805743, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349540.53, \"ph\": \"X\", \"dur\": 3.0060958896282406, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.565, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.957, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.932, \"ph\": \"X\", \"dur\": 0.23872158048080874, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.881, \"ph\": \"X\", \"dur\": 1.8007639388620253, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349545.776, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.835, \"ph\": \"X\", \"dur\": 2.008553987493701, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.085, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.062, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.007, \"ph\": \"X\", \"dur\": 0.337752371965533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.399, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349545.959, \"ph\": \"X\", \"dur\": 0.5053813187608344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.709, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.681, \"ph\": \"X\", \"dur\": 0.22674808428114435, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.603, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.984, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349546.562, \"ph\": \"X\", \"dur\": 0.4844277004114217, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.238, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.214, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.165, \"ph\": \"X\", \"dur\": 0.28911004365439635, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.501, \"ph\": \"X\", \"dur\": 0.06335975072322406, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.118, \"ph\": \"X\", \"dur\": 0.4811848785240126, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.831, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.805, \"ph\": \"X\", \"dur\": 0.25568403343033325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.756, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.133, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349547.713, \"ph\": \"X\", \"dur\": 0.48293101338646366, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.746, \"ph\": \"X\", \"dur\": 4.509019110523615, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349543.685, \"ph\": \"X\", \"dur\": 4.606802662820874, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.325, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.688, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.66, \"ph\": \"X\", \"dur\": 0.2307392496810325, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.612, \"ph\": \"X\", \"dur\": 0.3197921276660364, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.982, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.569, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.287, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.26, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.206, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.552, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.159, \"ph\": \"X\", \"dur\": 0.45399506423727476, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.81, \"ph\": \"X\", \"dur\": 0.026441470774258857, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.785, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.738, \"ph\": \"X\", \"dur\": 0.27040145584242076, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.057, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349549.695, \"ph\": \"X\", \"dur\": 0.42705469778802985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.311, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.287, \"ph\": \"X\", \"dur\": 0.19382096973206728, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.241, \"ph\": \"X\", \"dur\": 0.26990256016743475, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.56, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349550.194, \"ph\": \"X\", \"dur\": 0.4273041456255228, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349551.764, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349551.74, \"ph\": \"X\", \"dur\": 0.20953618349412678, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349551.669, \"ph\": \"X\", \"dur\": 0.30956476632882307, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349552.03, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349551.597, \"ph\": \"X\", \"dur\": 0.4981473314735371, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.481, \"ph\": \"X\", \"dur\": 3.672121615734572, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349548.423, \"ph\": \"X\", \"dur\": 3.768408481006873, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349552.225, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349552.332, \"ph\": \"X\", \"dur\": 0.06809925963559121, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349558.617, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.8013446000781509}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349558.818, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349558.992, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.273, \"ph\": \"X\", \"dur\": 0.058370793973363894, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.381, \"ph\": \"X\", \"dur\": 0.29534623959172157, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.239, \"ph\": \"X\", \"dur\": 0.46222684287454396, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.78, \"ph\": \"X\", \"dur\": 0.09628686527230111, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.915, \"ph\": \"X\", \"dur\": 0.1913264913571372, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.739, \"ph\": \"X\", \"dur\": 0.39113420918903663, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.203, \"ph\": \"X\", \"dur\": 0.03866441481141625, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.167, \"ph\": \"X\", \"dur\": 0.10975704849692355, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.357, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.311, \"ph\": \"X\", \"dur\": 0.1137482138968117, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.459, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.559, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.706, \"ph\": \"X\", \"dur\": 0.01970637916194764, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349560.925, \"ph\": \"X\", \"dur\": 0.07258932071046535, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349561.473, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349561.755, \"ph\": \"X\", \"dur\": 0.041158893186346336, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349562.052, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349562.438, \"ph\": \"X\", \"dur\": 0.5477874511346458, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349562.402, \"ph\": \"X\", \"dur\": 0.6111472018578699, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349562.186, \"ph\": \"X\", \"dur\": 0.9224581030491439, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349561.723, \"ph\": \"X\", \"dur\": 1.420355986685188, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349561.586, \"ph\": \"X\", \"dur\": 1.6126802693922972, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349563.725, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349564.029, \"ph\": \"X\", \"dur\": 0.040909445348853324, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349564.258, \"ph\": \"X\", \"dur\": 0.049889567498601614, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349564.563, \"ph\": \"X\", \"dur\": 0.43154475886290394, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349564.533, \"ph\": \"X\", \"dur\": 0.4864232831113658, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349564.384, \"ph\": \"X\", \"dur\": 0.7026945582178038, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349563.983, \"ph\": \"X\", \"dur\": 1.1559412789425993, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349563.84, \"ph\": \"X\", \"dur\": 1.3502611443496528, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349565.415, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349565.665, \"ph\": \"X\", \"dur\": 0.08206833853519965, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349565.807, \"ph\": \"X\", \"dur\": 0.06286085504823803, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349565.599, \"ph\": \"X\", \"dur\": 0.32478108441589654, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349566.202, \"ph\": \"X\", \"dur\": 0.18933090865719313, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349567.445, \"ph\": \"X\", \"dur\": 0.21701961861891703, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349569.684, \"ph\": \"X\", \"dur\": 0.09379238689737104, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349569.632, \"ph\": \"X\", \"dur\": 0.19681434378198337, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349559.097, \"ph\": \"X\", \"dur\": 10.907605590056765, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349570.134, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349570.447, \"ph\": \"X\", \"dur\": 0.0431544758862904, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349570.767, \"ph\": \"X\", \"dur\": 0.6089021713204328, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349570.413, \"ph\": \"X\", \"dur\": 1.017248281296487, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349570.258, \"ph\": \"X\", \"dur\": 1.2245394342531768, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349558.926, \"ph\": \"X\", \"dur\": 12.72084192079344, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349571.778, \"ph\": \"X\", \"dur\": 0.029434844824174952, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.285, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.247, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.153, \"ph\": \"X\", \"dur\": 0.37317396488954013, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.586, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.106, \"ph\": \"X\", \"dur\": 0.5672443824591004, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.884, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.86, \"ph\": \"X\", \"dur\": 0.2644147077425886, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.81, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.201, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349572.765, \"ph\": \"X\", \"dur\": 0.4993945706610022, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.458, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.434, \"ph\": \"X\", \"dur\": 0.22624918860615834, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.386, \"ph\": \"X\", \"dur\": 0.3030791225540048, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.733, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.346, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.983, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.96, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.911, \"ph\": \"X\", \"dur\": 0.2901078350043684, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.247, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349573.87, \"ph\": \"X\", \"dur\": 0.4437677029000614, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.484, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.46, \"ph\": \"X\", \"dur\": 0.1998077178318995, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.413, \"ph\": \"X\", \"dur\": 0.276637651779746, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.733, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.37, \"ph\": \"X\", \"dur\": 0.4285513848129879, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349571.98, \"ph\": \"X\", \"dur\": 2.8599194568573374, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349571.929, \"ph\": \"X\", \"dur\": 2.9459789607924254, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349574.919, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.275, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.253, \"ph\": \"X\", \"dur\": 0.21352734889401492, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.204, \"ph\": \"X\", \"dur\": 0.2921034177043125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.543, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.163, \"ph\": \"X\", \"dur\": 0.44651162911248443, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.833, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.811, \"ph\": \"X\", \"dur\": 0.24919838965551508, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.762, \"ph\": \"X\", \"dur\": 1.267444462301974, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.087, \"ph\": \"X\", \"dur\": 0.0401611018363743, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.721, \"ph\": \"X\", \"dur\": 1.443804083409531, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.413, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.388, \"ph\": \"X\", \"dur\": 0.23348317589345557, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.332, \"ph\": \"X\", \"dur\": 0.3180459928035853, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.708, \"ph\": \"X\", \"dur\": 0.024944783749300807, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.281, \"ph\": \"X\", \"dur\": 0.49041444851125393, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.989, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.964, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.913, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.263, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349577.866, \"ph\": \"X\", \"dur\": 0.4602312601745999, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.523, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.5, \"ph\": \"X\", \"dur\": 0.23248538454348355, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.452, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.807, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.413, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.074, \"ph\": \"X\", \"dur\": 3.8517240587295376, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349575.031, \"ph\": \"X\", \"dur\": 3.9320462624022867, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349578.994, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.367, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.344, \"ph\": \"X\", \"dur\": 0.2037988832317876, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.295, \"ph\": \"X\", \"dur\": 0.27938157799216906, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.621, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.254, \"ph\": \"X\", \"dur\": 0.4572378861246838, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.956, \"ph\": \"X\", \"dur\": 0.03018318833665398, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.934, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.872, \"ph\": \"X\", \"dur\": 0.2965934787791866, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.215, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.831, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.48, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.457, \"ph\": \"X\", \"dur\": 0.22899311481858142, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.41, \"ph\": \"X\", \"dur\": 0.30507470525394886, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.762, \"ph\": \"X\", \"dur\": 0.045399506423727476, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.365, \"ph\": \"X\", \"dur\": 0.47794205663660344, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.036, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.012, \"ph\": \"X\", \"dur\": 0.19531765675702534, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.963, \"ph\": \"X\", \"dur\": 0.26940366449244874, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.28, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349580.922, \"ph\": \"X\", \"dur\": 0.4380304026377222, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.607, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.583, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.536, \"ph\": \"X\", \"dur\": 0.28461998257952226, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.87, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349581.46, \"ph\": \"X\", \"dur\": 0.46971027799933424, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.143, \"ph\": \"X\", \"dur\": 2.843954795257785, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349579.105, \"ph\": \"X\", \"dur\": 3.9569910461515874, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.124, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.567, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.54, \"ph\": \"X\", \"dur\": 0.24121605885573882, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.485, \"ph\": \"X\", \"dur\": 0.32577887576586856, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.865, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.432, \"ph\": \"X\", \"dur\": 0.5008912576859602, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.157, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.133, \"ph\": \"X\", \"dur\": 0.24869949398052907, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.083, \"ph\": \"X\", \"dur\": 0.3272755627908266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.463, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.036, \"ph\": \"X\", \"dur\": 0.492410031211198, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.726, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.702, \"ph\": \"X\", \"dur\": 0.22999090616855347, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.655, \"ph\": \"X\", \"dur\": 0.308566974978851, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.01, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349584.614, \"ph\": \"X\", \"dur\": 0.45848512531214886, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.255, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.231, \"ph\": \"X\", \"dur\": 0.2040483310692806, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.184, \"ph\": \"X\", \"dur\": 0.2803793693421411, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.51, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.142, \"ph\": \"X\", \"dur\": 0.43453813291282006, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.763, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.738, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.69, \"ph\": \"X\", \"dur\": 0.29509679175422854, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349586.029, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349585.647, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.31, \"ph\": \"X\", \"dur\": 2.84021307769539, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349583.257, \"ph\": \"X\", \"dur\": 2.947974543492369, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349586.248, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349586.351, \"ph\": \"X\", \"dur\": 0.0646069899106891, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.01, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.7983877125128171}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.266, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.492, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.779, \"ph\": \"X\", \"dur\": 0.06685202044812617, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.892, \"ph\": \"X\", \"dur\": 0.26890476881746267, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.742, \"ph\": \"X\", \"dur\": 0.4562400947747118, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.271, \"ph\": \"X\", \"dur\": 0.06236195937325202, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.368, \"ph\": \"X\", \"dur\": 0.19032870000716517, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.235, \"ph\": \"X\", \"dur\": 0.3509731073526624, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.668, \"ph\": \"X\", \"dur\": 0.037916071298937225, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.621, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.805, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.772, \"ph\": \"X\", \"dur\": 0.11674158794672779, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349594.924, \"ph\": \"X\", \"dur\": 0.044651162911248446, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349595.033, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349595.22, \"ph\": \"X\", \"dur\": 0.02394699239932878, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349596.474, \"ph\": \"X\", \"dur\": 0.09154735635993397, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.123, \"ph\": \"X\", \"dur\": 0.04664674561119252, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.469, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.75, \"ph\": \"X\", \"dur\": 0.07034429017302829, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349598.156, \"ph\": \"X\", \"dur\": 0.5205976368479079, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349598.096, \"ph\": \"X\", \"dur\": 0.6074054842954747, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.909, \"ph\": \"X\", \"dur\": 0.8925243625499829, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.412, \"ph\": \"X\", \"dur\": 1.4235988085725972, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349597.264, \"ph\": \"X\", \"dur\": 1.625901004779427, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349599.365, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349599.676, \"ph\": \"X\", \"dur\": 0.03816551913643024, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349599.878, \"ph\": \"X\", \"dur\": 0.0710926336855073, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349600.24, \"ph\": \"X\", \"dur\": 0.45524230342473976, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349600.21, \"ph\": \"X\", \"dur\": 0.5091230363232295, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349600.013, \"ph\": \"X\", \"dur\": 0.7934935710652588, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349599.633, \"ph\": \"X\", \"dur\": 1.2043341594162429, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349599.491, \"ph\": \"X\", \"dur\": 1.3981551291483103, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349601.119, \"ph\": \"X\", \"dur\": 0.06435754207319609, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349601.397, \"ph\": \"X\", \"dur\": 0.07408600773542341, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349601.53, \"ph\": \"X\", \"dur\": 0.09304404338489201, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349601.328, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349601.972, \"ph\": \"X\", \"dur\": 0.20429777890677364, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349602.249, \"ph\": \"X\", \"dur\": 0.21053397484409883, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349604.382, \"ph\": \"X\", \"dur\": 0.1020241655346403, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349604.334, \"ph\": \"X\", \"dur\": 0.185339743257305, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.605, \"ph\": \"X\", \"dur\": 11.084963002514293, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349604.829, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349605.119, \"ph\": \"X\", \"dur\": 0.04564895426122048, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349605.497, \"ph\": \"X\", \"dur\": 0.5724827870464536, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349605.089, \"ph\": \"X\", \"dur\": 1.0362063169459557, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349604.939, \"ph\": \"X\", \"dur\": 1.2392568566652642, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349593.396, \"ph\": \"X\", \"dur\": 12.974031475848843, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349606.51, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.026, \"ph\": \"X\", \"dur\": 0.024196440236821784, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.002, \"ph\": \"X\", \"dur\": 0.27239703854236486, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349606.927, \"ph\": \"X\", \"dur\": 0.3766662346144422, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.362, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349606.876, \"ph\": \"X\", \"dur\": 0.5520280643720269, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.634, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.609, \"ph\": \"X\", \"dur\": 0.2282447713061024, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.561, \"ph\": \"X\", \"dur\": 0.307569183628879, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.918, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349607.52, \"ph\": \"X\", \"dur\": 0.46172794719955795, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349608.158, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349608.133, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349608.081, \"ph\": \"X\", \"dur\": 0.3025802268790188, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349609.586, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349608.038, \"ph\": \"X\", \"dur\": 1.6481018623163044, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349609.896, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349609.869, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349609.811, \"ph\": \"X\", \"dur\": 0.35945433382742464, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.226, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349609.759, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.479, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.454, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.404, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.752, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.356, \"ph\": \"X\", \"dur\": 0.46322463422451604, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349606.724, \"ph\": \"X\", \"dur\": 4.139337415358976, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349606.674, \"ph\": \"X\", \"dur\": 4.228889189018966, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349610.934, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.348, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.323, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.27, \"ph\": \"X\", \"dur\": 0.28536832609200125, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.604, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.229, \"ph\": \"X\", \"dur\": 0.43977653750017326, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.904, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.88, \"ph\": \"X\", \"dur\": 0.20155385269435053, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.832, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.171, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.79, \"ph\": \"X\", \"dur\": 0.4440171507375544, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.449, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.422, \"ph\": \"X\", \"dur\": 0.2030505397193086, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.376, \"ph\": \"X\", \"dur\": 0.2748915169172949, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.698, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.334, \"ph\": \"X\", \"dur\": 0.4460127334374985, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.982, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.955, \"ph\": \"X\", \"dur\": 0.20180330053184356, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.91, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.234, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349612.866, \"ph\": \"X\", \"dur\": 0.43079641535042495, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.536, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.511, \"ph\": \"X\", \"dur\": 0.1980615829694484, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.436, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.781, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.387, \"ph\": \"X\", \"dur\": 0.4592334688246279, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.112, \"ph\": \"X\", \"dur\": 2.7890762710093235, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349611.07, \"ph\": \"X\", \"dur\": 2.8684006833321, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349613.97, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.319, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.295, \"ph\": \"X\", \"dur\": 0.2250019494186933, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.246, \"ph\": \"X\", \"dur\": 0.30282967471651184, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.593, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.206, \"ph\": \"X\", \"dur\": 1.3427777092248625, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349615.773, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349615.746, \"ph\": \"X\", \"dur\": 0.24146550669323183, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349615.696, \"ph\": \"X\", \"dur\": 0.32004157550352935, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.066, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349615.656, \"ph\": \"X\", \"dur\": 0.4759464739366594, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.337, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.311, \"ph\": \"X\", \"dur\": 0.22001299266883315, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.26, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.608, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.219, \"ph\": \"X\", \"dur\": 0.45274782504980965, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.856, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.833, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.784, \"ph\": \"X\", \"dur\": 0.32777445846581266, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.173, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349616.743, \"ph\": \"X\", \"dur\": 0.492908926886184, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.437, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.408, \"ph\": \"X\", \"dur\": 0.26067299018019346, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.355, \"ph\": \"X\", \"dur\": 0.3432402243903791, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.748, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.311, \"ph\": \"X\", \"dur\": 0.49889567498601617, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.114, \"ph\": \"X\", \"dur\": 3.7621722850695476, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349614.077, \"ph\": \"X\", \"dur\": 3.837754979829929, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349617.948, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.305, \"ph\": \"X\", \"dur\": 0.02245030537437073, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.266, \"ph\": \"X\", \"dur\": 0.23622710210587866, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.219, \"ph\": \"X\", \"dur\": 0.3148031709161762, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.582, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.177, \"ph\": \"X\", \"dur\": 0.47120696502429227, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.862, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.838, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.792, \"ph\": \"X\", \"dur\": 0.29434844824174955, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.134, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.745, \"ph\": \"X\", \"dur\": 0.44900610748741454, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.39, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.366, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.317, \"ph\": \"X\", \"dur\": 0.2753904125922809, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.644, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.276, \"ph\": \"X\", \"dur\": 0.4472599726249635, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.912, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.888, \"ph\": \"X\", \"dur\": 0.2352293107559066, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.841, \"ph\": \"X\", \"dur\": 0.308816422816344, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349620.199, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349619.795, \"ph\": \"X\", \"dur\": 0.463474082062009, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349620.445, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349620.422, \"ph\": \"X\", \"dur\": 0.19332207405708127, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349620.374, \"ph\": \"X\", \"dur\": 1.1147823857562533, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349621.556, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349620.33, \"ph\": \"X\", \"dur\": 1.290643111188824, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.088, \"ph\": \"X\", \"dur\": 3.5995322950241064, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349618.046, \"ph\": \"X\", \"dur\": 3.679605050859362, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349621.784, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349621.894, \"ph\": \"X\", \"dur\": 0.07682993394784648, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349628.522, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.7954404887326534}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349628.739, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349628.914, \"ph\": \"X\", \"dur\": 0.02369754456183577, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.241, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.352, \"ph\": \"X\", \"dur\": 0.22300636671874924, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.195, \"ph\": \"X\", \"dur\": 0.4220657410381697, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.68, \"ph\": \"X\", \"dur\": 0.061364168023279986, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.771, \"ph\": \"X\", \"dur\": 0.20803949646916875, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.651, \"ph\": \"X\", \"dur\": 0.35496427275255055, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.073, \"ph\": \"X\", \"dur\": 0.03592048859899317, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.043, \"ph\": \"X\", \"dur\": 0.11649214010923478, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.234, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.196, \"ph\": \"X\", \"dur\": 0.09204625203491999, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.323, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.451, \"ph\": \"X\", \"dur\": 0.030931531849133, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.589, \"ph\": \"X\", \"dur\": 0.021701961861891703, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349630.819, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349631.382, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349631.724, \"ph\": \"X\", \"dur\": 0.04440171507375544, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349632.023, \"ph\": \"X\", \"dur\": 0.04290502804879739, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349632.381, \"ph\": \"X\", \"dur\": 0.5333194765600513, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349632.327, \"ph\": \"X\", \"dur\": 0.6133922323953069, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349632.141, \"ph\": \"X\", \"dur\": 0.8780563879753884, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349631.69, \"ph\": \"X\", \"dur\": 1.3836871545737157, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349631.514, \"ph\": \"X\", \"dur\": 1.631388857204273, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349633.652, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349634.003, \"ph\": \"X\", \"dur\": 0.061863063698266, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349634.235, \"ph\": \"X\", \"dur\": 0.04914122398612259, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349634.577, \"ph\": \"X\", \"dur\": 0.47345199556172934, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349634.55, \"ph\": \"X\", \"dur\": 0.524588802247796, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349634.347, \"ph\": \"X\", \"dur\": 0.7939924667402447, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349633.974, \"ph\": \"X\", \"dur\": 1.199345202666383, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349633.758, \"ph\": \"X\", \"dur\": 1.4864596636208354, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349635.492, \"ph\": \"X\", \"dur\": 0.09404183473486405, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349635.798, \"ph\": \"X\", \"dur\": 0.11923606632165785, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349635.969, \"ph\": \"X\", \"dur\": 0.08680784744756681, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349635.735, \"ph\": \"X\", \"dur\": 0.3751695475894842, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349636.517, \"ph\": \"X\", \"dur\": 0.23672599778086467, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349636.813, \"ph\": \"X\", \"dur\": 0.19282317838209526, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349639.036, \"ph\": \"X\", \"dur\": 0.09104846068494796, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349638.986, \"ph\": \"X\", \"dur\": 1.1314953908682845, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349629.018, \"ph\": \"X\", \"dur\": 11.306223234370592, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349640.483, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349640.793, \"ph\": \"X\", \"dur\": 0.04265558021130438, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349641.158, \"ph\": \"X\", \"dur\": 0.5971781229582613, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349640.76, \"ph\": \"X\", \"dur\": 1.0476809174706339, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349640.588, \"ph\": \"X\", \"dur\": 1.2704378363518902, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349628.848, \"ph\": \"X\", \"dur\": 13.149393305606429, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.128, \"ph\": \"X\", \"dur\": 0.03118097968662601, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.611, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.586, \"ph\": \"X\", \"dur\": 0.2581785118052634, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.523, \"ph\": \"X\", \"dur\": 0.35396648140257847, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.935, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.474, \"ph\": \"X\", \"dur\": 0.527083280622726, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.232, \"ph\": \"X\", \"dur\": 0.02993374049916097, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.208, \"ph\": \"X\", \"dur\": 0.2190152013188611, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.155, \"ph\": \"X\", \"dur\": 0.2990879571541167, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.506, \"ph\": \"X\", \"dur\": 0.025443679424286825, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.113, \"ph\": \"X\", \"dur\": 0.45424451207476774, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.755, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.732, \"ph\": \"X\", \"dur\": 0.216021827268945, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.678, \"ph\": \"X\", \"dur\": 0.3010835398540607, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.023, \"ph\": \"X\", \"dur\": 0.030682084011639993, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349643.638, \"ph\": \"X\", \"dur\": 0.45374561639978167, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.266, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.24, \"ph\": \"X\", \"dur\": 0.246703911280585, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.188, \"ph\": \"X\", \"dur\": 0.3242821887409105, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.56, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.148, \"ph\": \"X\", \"dur\": 0.47943874366156153, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.819, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.791, \"ph\": \"X\", \"dur\": 0.21203066186905686, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.725, \"ph\": \"X\", \"dur\": 0.30931531849133, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.08, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349644.682, \"ph\": \"X\", \"dur\": 0.494405613911142, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.348, \"ph\": \"X\", \"dur\": 2.8736390879194533, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349642.295, \"ph\": \"X\", \"dur\": 2.9756632534540937, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.325, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.735, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.709, \"ph\": \"X\", \"dur\": 0.20679225728170372, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.656, \"ph\": \"X\", \"dur\": 0.2863661174419733, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.991, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.61, \"ph\": \"X\", \"dur\": 0.4652202169244601, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349646.295, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349646.269, \"ph\": \"X\", \"dur\": 0.25743016829278437, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349646.222, \"ph\": \"X\", \"dur\": 0.3335117587281518, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349646.602, \"ph\": \"X\", \"dur\": 0.04739508912367154, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349646.18, \"ph\": \"X\", \"dur\": 1.4722411368837338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349647.921, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349647.891, \"ph\": \"X\", \"dur\": 0.25219176370543117, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349647.833, \"ph\": \"X\", \"dur\": 0.338750163315505, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.229, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349647.781, \"ph\": \"X\", \"dur\": 0.5161075757730338, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.534, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.507, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.453, \"ph\": \"X\", \"dur\": 0.3409951938529421, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.845, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.406, \"ph\": \"X\", \"dur\": 0.5013901533609463, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.108, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.085, \"ph\": \"X\", \"dur\": 0.22450305374370727, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.038, \"ph\": \"X\", \"dur\": 0.30058464417907477, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.386, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349648.995, \"ph\": \"X\", \"dur\": 0.4532467207247957, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.515, \"ph\": \"X\", \"dur\": 4.003637791762779, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349645.471, \"ph\": \"X\", \"dur\": 4.084957786785501, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.585, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.929, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.904, \"ph\": \"X\", \"dur\": 0.20579446593173167, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.854, \"ph\": \"X\", \"dur\": 0.28486943041701523, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.186, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.814, \"ph\": \"X\", \"dur\": 0.43503702858780613, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.457, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.433, \"ph\": \"X\", \"dur\": 0.20205274836933654, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.385, \"ph\": \"X\", \"dur\": 0.27688709961723895, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.712, \"ph\": \"X\", \"dur\": 0.02594257509927284, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.344, \"ph\": \"X\", \"dur\": 0.4265558021130438, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.967, \"ph\": \"X\", \"dur\": 0.04689619344868552, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.944, \"ph\": \"X\", \"dur\": 0.2195140969938471, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.896, \"ph\": \"X\", \"dur\": 0.29958685282910275, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.241, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349650.856, \"ph\": \"X\", \"dur\": 0.4470105247874705, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.489, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.464, \"ph\": \"X\", \"dur\": 0.22101078401880517, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.418, \"ph\": \"X\", \"dur\": 0.29809016580414466, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.762, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.377, \"ph\": \"X\", \"dur\": 0.4475094204624565, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349652.03, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349652.008, \"ph\": \"X\", \"dur\": 0.1973132394569694, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.961, \"ph\": \"X\", \"dur\": 0.27563986042977395, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349652.281, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349651.916, \"ph\": \"X\", \"dur\": 0.4258074586005648, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.722, \"ph\": \"X\", \"dur\": 2.6793192225124, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349649.682, \"ph\": \"X\", \"dur\": 2.7728621615722777, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349652.485, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.99, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.963, \"ph\": \"X\", \"dur\": 0.247202806955571, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.91, \"ph\": \"X\", \"dur\": 0.33226451954068675, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.312, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.863, \"ph\": \"X\", \"dur\": 0.5176042627979918, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.606, \"ph\": \"X\", \"dur\": 0.028187605636709915, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.578, \"ph\": \"X\", \"dur\": 0.2833727433920572, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.525, \"ph\": \"X\", \"dur\": 0.3639443949022988, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.938, \"ph\": \"X\", \"dur\": 0.02968429266166796, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349654.478, \"ph\": \"X\", \"dur\": 0.5497830338345898, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.245, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.215, \"ph\": \"X\", \"dur\": 0.22051188834381916, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.163, \"ph\": \"X\", \"dur\": 0.3202910233410224, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.529, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.116, \"ph\": \"X\", \"dur\": 0.47619592177415243, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.78, \"ph\": \"X\", \"dur\": 0.025194231586793816, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.756, \"ph\": \"X\", \"dur\": 0.20230219620682957, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.708, \"ph\": \"X\", \"dur\": 0.28012992150464805, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.035, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349655.665, \"ph\": \"X\", \"dur\": 0.43304144588786203, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.317, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.291, \"ph\": \"X\", \"dur\": 0.2546862420803613, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.244, \"ph\": \"X\", \"dur\": 0.3317656238657008, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.62, \"ph\": \"X\", \"dur\": 0.028686501311695933, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.201, \"ph\": \"X\", \"dur\": 0.48342990906144967, \"name\": \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.749, \"ph\": \"X\", \"dur\": 2.9968663196409993, \"name\": \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349653.69, \"ph\": \"X\", \"dur\": 3.091656497888342, \"name\": \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.823, \"ph\": \"X\", \"dur\": 0.029185396986681947, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349656.931, \"ph\": \"X\", \"dur\": 0.032178771036598046, \"name\": \"math.log\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349663.311, \"ph\": \"C\", \"name\": \"log(1 + cost)\", \"args\": {\"cost\": 0.792520125189846}}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349663.558, \"ph\": \"X\", \"dur\": 0.025693127261779834, \"name\": \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349663.752, \"ph\": \"X\", \"dur\": 0.024695335911807798, \"name\": \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.037, \"ph\": \"X\", \"dur\": 0.05487852424846178, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.149, \"ph\": \"X\", \"dur\": 0.33126672819071473, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.004, \"ph\": \"X\", \"dur\": 0.5191009498229499, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.599, \"ph\": \"X\", \"dur\": 0.057373002623391865, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.689, \"ph\": \"X\", \"dur\": 0.17112121652020354, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.556, \"ph\": \"X\", \"dur\": 0.3302689368407427, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.952, \"ph\": \"X\", \"dur\": 0.03891386264890926, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349664.922, \"ph\": \"X\", \"dur\": 0.09728465662227315, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.093, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"builtins.isinstance\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.053, \"ph\": \"X\", \"dur\": 0.0960374174348081, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.182, \"ph\": \"X\", \"dur\": 0.044152267236262435, \"name\": \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.307, \"ph\": \"X\", \"dur\": 0.034423801574035115, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.471, \"ph\": \"X\", \"dur\": 0.020205274836933653, \"name\": \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349665.708, \"ph\": \"X\", \"dur\": 0.08456281691012973, \"name\": \"numpy.asanyarray\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349667.288, \"ph\": \"X\", \"dur\": 0.027688709961723897, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349667.643, \"ph\": \"X\", \"dur\": 0.07608159043536745, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349667.918, \"ph\": \"X\", \"dur\": 0.04240613237381138, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349668.335, \"ph\": \"X\", \"dur\": 0.5961803316082893, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349668.281, \"ph\": \"X\", \"dur\": 0.6957100187679996, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349668.059, \"ph\": \"X\", \"dur\": 1.0130076680591058, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349667.584, \"ph\": \"X\", \"dur\": 1.5206340173573774, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349667.403, \"ph\": \"X\", \"dur\": 1.7543666410883259, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349669.724, \"ph\": \"X\", \"dur\": 0.026690918611751865, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349670.014, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349670.28, \"ph\": \"X\", \"dur\": 0.03991165399888129, \"name\": \"builtins.getattr\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349670.621, \"ph\": \"X\", \"dur\": 0.4771937131241245, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349670.579, \"ph\": \"X\", \"dur\": 0.5472885554596597, \"name\": \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349670.405, \"ph\": \"X\", \"dur\": 0.7944913624152307, \"name\": \"numpy.bool.all\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349669.979, \"ph\": \"X\", \"dur\": 1.2542237269148448, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349669.834, \"ph\": \"X\", \"dur\": 1.4560270274466882, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349671.533, \"ph\": \"X\", \"dur\": 0.03941275832389528, \"name\": \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349671.784, \"ph\": \"X\", \"dur\": 0.1015252698596543, \"name\": \"numpy._core._multiarray_umath._make_extobj\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349671.943, \"ph\": \"X\", \"dur\": 1.3238196735753938, \"name\": \"_contextvars.ContextVar.set\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349671.72, \"ph\": \"X\", \"dur\": 1.630889961529287, \"name\": \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349673.74, \"ph\": \"X\", \"dur\": 0.23822268480582273, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349674.04, \"ph\": \"X\", \"dur\": 0.2309886975185255, \"name\": \"builtins.abs\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349676.325, \"ph\": \"X\", \"dur\": 0.123726127396532, \"name\": \"_contextvars.ContextVar.reset\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349676.259, \"ph\": \"X\", \"dur\": 0.2564323769428123, \"name\": \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349663.86, \"ph\": \"X\", \"dur\": 12.865272218701891, \"name\": \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349676.849, \"ph\": \"X\", \"dur\": 0.027189814286737883, \"name\": \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349677.131, \"ph\": \"X\", \"dur\": 0.04140834102383934, \"name\": \"dict.items\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349677.436, \"ph\": \"X\", \"dur\": 0.6103988583453908, \"name\": \"numpy.ufunc.reduce\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349677.1, \"ph\": \"X\", \"dur\": 1.0045264415843436, \"name\": \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349676.948, \"ph\": \"X\", \"dur\": 1.2210471645282746, \"name\": \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349663.682, \"ph\": \"X\", \"dur\": 14.685991984563358, \"name\": \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349694.073, \"ph\": \"i\", \"cat\": \"INSTANT\", \"name\": \"print - ('Number of iterations:', 145)\\n\", \"args\": null, \"s\": \"g\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995343916.817, \"ph\": \"X\", \"dur\": 5782.651625330278, \"name\": \"run_gradient_descent (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:106)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349700.974, \"ph\": \"X\", \"dur\": 0.08306612988517169, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349701.663, \"ph\": \"X\", \"dur\": 0.4028582575512081, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349708.021, \"ph\": \"i\", \"cat\": \"INSTANT\", \"name\": \"print - ('Actual output value:', 555)\\n\", \"args\": null, \"s\": \"g\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349712.996, \"ph\": \"X\", \"dur\": 0.049390671823615596, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349712.907, \"ph\": \"X\", \"dur\": 0.6832376268933491, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349712.534, \"ph\": \"X\", \"dur\": 1.0973210371317426, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349721.047, \"ph\": \"i\", \"cat\": \"INSTANT\", \"name\": \"print - ('Hypothesis output:', 920.4759629556128)\\n\", \"args\": null, \"s\": \"g\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349724.773, \"ph\": \"X\", \"dur\": 0.24894894181802207, \"name\": \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349728.688, \"ph\": \"i\", \"cat\": \"INSTANT\", \"name\": \"print - ('Actual output value:', 150)\\n\", \"args\": null, \"s\": \"g\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349733.289, \"ph\": \"X\", \"dur\": 0.026192022936765848, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349733.222, \"ph\": \"X\", \"dur\": 0.40884500565104026, \"name\": \"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349732.999, \"ph\": \"X\", \"dur\": 0.680244252843433, \"name\": \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\", \"cat\": \"FEE\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349737.887, \"ph\": \"i\", \"cat\": \"INSTANT\", \"name\": \"print - ('Hypothesis output:', 181.95323743495473)\\n\", \"args\": null, \"s\": \"g\"}, {\"pid\": 222296, \"tid\": 222296, \"ts\": 81995349700.554, \"ph\": \"X\", \"dur\": 40.33895814450682, \"name\": \"test_gradient_descent (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:134)\", \"cat\": \"FEE\"}], \"viztracer_metadata\": {\"version\": \"1.1.1\", \"overflow\": false, \"baseTimeNanoseconds\": 1767325615896926964}, \"file_info\": {\"files\": {\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\": [\"# https://github.com/TheAlgorithms/Python\\n\\nimport math\\nimport os\\n\\nimport numpy\\n\\nfrom viztracer import VizTracer\\nfrom viztracer.vizcounter import VizCounter\\n\\n# List of input, output pairs\\ntrain_data = (\\n    ((5, 2, 3), 15),\\n    ((6, 5, 9), 25),\\n    ((11, 12, 13), 41),\\n    ((1, 1, 1), 8),\\n    ((11, 12, 13), 41),\\n)\\ntest_data = (((515, 22, 13), 555), ((61, 35, 49), 150))\\nparameter_vector = [2, 4, 1, 5]\\nm = len(train_data)\\nLEARNING_RATE = 0.009\\n\\n\\ndef _error(example_no, data_set=\\\"train\\\"):\\n    \\\"\\\"\\\"\\n    :param data_set: train data or test data\\n    :param example_no: example number whose error has to be checked\\n    :return: error in example pointed by example number.\\n    \\\"\\\"\\\"\\n    return calculate_hypothesis_value(example_no, data_set) - output(\\n        example_no, data_set\\n    )\\n\\n\\ndef _hypothesis_value(data_input_tuple):\\n    \\\"\\\"\\\"\\n    Calculates hypothesis function value for a given input\\n    :param data_input_tuple: Input tuple of a particular example\\n    :return: Value of hypothesis function at that point.\\n    Note that there is an 'biased input' whose value is fixed as 1.\\n    It is not explicitly mentioned in input data.. But, ML hypothesis functions use it.\\n    So, we have to take care of it separately. Line 36 takes care of it.\\n    \\\"\\\"\\\"\\n    hyp_val = 0\\n    for i in range(len(parameter_vector) - 1):\\n        hyp_val += data_input_tuple[i] * parameter_vector[i + 1]\\n    hyp_val += parameter_vector[0]\\n    return hyp_val\\n\\n\\ndef output(example_no, data_set):\\n    \\\"\\\"\\\"\\n    :param data_set: test data or train data\\n    :param example_no: example whose output is to be fetched\\n    :return: output for that example\\n    \\\"\\\"\\\"\\n    if data_set == \\\"train\\\":\\n        return train_data[example_no][1]\\n    elif data_set == \\\"test\\\":\\n        return test_data[example_no][1]\\n\\n\\ndef calculate_hypothesis_value(example_no, data_set):\\n    \\\"\\\"\\\"\\n    Calculates hypothesis value for a given example\\n    :param data_set: test data or train_data\\n    :param example_no: example whose hypothesis value is to be calculated\\n    :return: hypothesis value for that example\\n    \\\"\\\"\\\"\\n    if data_set == \\\"train\\\":\\n        return _hypothesis_value(train_data[example_no][0])\\n    elif data_set == \\\"test\\\":\\n        return _hypothesis_value(test_data[example_no][0])\\n\\n\\ndef summation_of_cost_derivative(index, end=m):\\n    \\\"\\\"\\\"\\n    Calculates the sum of cost function derivative\\n    :param index: index wrt derivative is being calculated\\n    :param end: value where summation ends, default is m, number of examples\\n    :return: Returns the summation of cost derivative\\n    Note: If index is -1, this means we are calculating summation wrt to biased\\n        parameter.\\n    \\\"\\\"\\\"\\n    summation_value = 0\\n    for i in range(end):\\n        if index == -1:\\n            summation_value += _error(i)\\n        else:\\n            summation_value += _error(i) * train_data[i][0][index]\\n    return summation_value\\n\\n\\ndef get_cost_derivative(index):\\n    \\\"\\\"\\\"\\n    :param index: index of the parameter vector wrt to derivative is to be calculated\\n    :return: derivative wrt to that index\\n    Note: If index is -1, this means we are calculating summation wrt to biased\\n        parameter.\\n    \\\"\\\"\\\"\\n    cost_derivative_value = summation_of_cost_derivative(index, m) / m\\n    return cost_derivative_value\\n\\n\\ndef run_gradient_descent():\\n    global parameter_vector\\n    # Tune these values to set a tolerance value for predicted output\\n    absolute_error_limit = 0.004\\n    relative_error_limit = 0\\n    j = 0\\n    while True:\\n        j += 1\\n        temp_parameter_vector = [0, 0, 0, 0]\\n        err = 0\\n        for i in range(0, len(parameter_vector)):\\n            cost_derivative = get_cost_derivative(i - 1)\\n            err += abs(cost_derivative)\\n            temp_parameter_vector[i] = (\\n                parameter_vector[i] - LEARNING_RATE * cost_derivative\\n            )\\n        counter.cost = math.log(1 + err)\\n        if numpy.allclose(\\n            parameter_vector,\\n            temp_parameter_vector,\\n            atol=absolute_error_limit,\\n            rtol=relative_error_limit,\\n        ):\\n            break\\n        parameter_vector = temp_parameter_vector\\n    print((\\\"Number of iterations:\\\", j))\\n\\n\\ndef test_gradient_descent():\\n    for i in range(len(test_data)):\\n        print((\\\"Actual output value:\\\", output(i, \\\"test\\\")))\\n        print((\\\"Hypothesis output:\\\", calculate_hypothesis_value(i, \\\"test\\\")))\\n\\n\\nif __name__ == \\\"__main__\\\":\\n    with VizTracer(\\n        log_print=True,\\n        output_file=os.path.join(\\n            os.path.dirname(__file__), \\\"../\\\", \\\"json/gradient_descent.json\\\"\\n        ),\\n        file_info=True,\\n    ) as tracer:\\n        counter = VizCounter(tracer, \\\"log(1 + cost)\\\")\\n        run_gradient_descent()\\n        test_gradient_descent()\\n\", 150], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\": [\"import builtins\\nimport functools\\nimport itertools\\nimport math\\nimport numbers\\nimport operator\\nimport sys\\nimport warnings\\n\\nimport numpy as np\\nfrom numpy.exceptions import AxisError\\n\\nfrom . import multiarray, numerictypes, numerictypes as nt, overrides, shape_base, umath\\nfrom ._ufunc_config import errstate\\nfrom .multiarray import (  # noqa: F401\\n    ALLOW_THREADS,\\n    BUFSIZE,\\n    CLIP,\\n    MAXDIMS,\\n    MAY_SHARE_BOUNDS,\\n    MAY_SHARE_EXACT,\\n    RAISE,\\n    WRAP,\\n    arange,\\n    array,\\n    asanyarray,\\n    asarray,\\n    ascontiguousarray,\\n    asfortranarray,\\n    broadcast,\\n    can_cast,\\n    concatenate,\\n    copyto,\\n    dot,\\n    dtype,\\n    empty,\\n    empty_like,\\n    flatiter,\\n    from_dlpack,\\n    frombuffer,\\n    fromfile,\\n    fromiter,\\n    fromstring,\\n    inner,\\n    lexsort,\\n    matmul,\\n    may_share_memory,\\n    min_scalar_type,\\n    ndarray,\\n    nditer,\\n    nested_iters,\\n    normalize_axis_index,\\n    promote_types,\\n    putmask,\\n    result_type,\\n    shares_memory,\\n    vdot,\\n    vecdot,\\n    where,\\n    zeros,\\n)\\nfrom .overrides import finalize_array_function_like, set_module\\nfrom .umath import NAN, PINF, invert, multiply, sin\\n\\nbitwise_not = invert\\nufunc = type(sin)\\nnewaxis = None\\n\\narray_function_dispatch = functools.partial(\\n    overrides.array_function_dispatch, module='numpy')\\n\\n\\n__all__ = [\\n    'newaxis', 'ndarray', 'flatiter', 'nditer', 'nested_iters', 'ufunc',\\n    'arange', 'array', 'asarray', 'asanyarray', 'ascontiguousarray',\\n    'asfortranarray', 'zeros', 'count_nonzero', 'empty', 'broadcast', 'dtype',\\n    'fromstring', 'fromfile', 'frombuffer', 'from_dlpack', 'where',\\n    'argwhere', 'copyto', 'concatenate', 'lexsort', 'astype',\\n    'can_cast', 'promote_types', 'min_scalar_type',\\n    'result_type', 'isfortran', 'empty_like', 'zeros_like', 'ones_like',\\n    'correlate', 'convolve', 'inner', 'dot', 'outer', 'vdot', 'roll',\\n    'rollaxis', 'moveaxis', 'cross', 'tensordot', 'little_endian',\\n    'fromiter', 'array_equal', 'array_equiv', 'indices', 'fromfunction',\\n    'isclose', 'isscalar', 'binary_repr', 'base_repr', 'ones',\\n    'identity', 'allclose', 'putmask',\\n    'flatnonzero', 'inf', 'nan', 'False_', 'True_', 'bitwise_not',\\n    'full', 'full_like', 'matmul', 'vecdot', 'shares_memory',\\n    'may_share_memory']\\n\\n\\ndef _zeros_like_dispatcher(\\n    a, dtype=None, order=None, subok=None, shape=None, *, device=None\\n):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_zeros_like_dispatcher)\\ndef zeros_like(\\n    a, dtype=None, order='K', subok=True, shape=None, *, device=None\\n):\\n    \\\"\\\"\\\"\\n    Return an array of zeros with the same shape and type as a given array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        The shape and data-type of `a` define these same attributes of\\n        the returned array.\\n    dtype : data-type, optional\\n        Overrides the data type of the result.\\n    order : {'C', 'F', 'A', or 'K'}, optional\\n        Overrides the memory layout of the result. 'C' means C-order,\\n        'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,\\n        'C' otherwise. 'K' means match the layout of `a` as closely\\n        as possible.\\n    subok : bool, optional.\\n        If True, then the newly created array will use the sub-class\\n        type of `a`, otherwise it will be a base-class array. Defaults\\n        to True.\\n    shape : int or sequence of ints, optional.\\n        Overrides the shape of the result. If order='K' and the number of\\n        dimensions is unchanged, will try to keep order, otherwise,\\n        order='C' is implied.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of zeros with the same shape and type as `a`.\\n\\n    See Also\\n    --------\\n    empty_like : Return an empty array with shape and type of input.\\n    ones_like : Return an array of ones with shape and type of input.\\n    full_like : Return a new array with shape of input filled with value.\\n    zeros : Return a new array setting values to zero.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(6)\\n    >>> x = x.reshape((2, 3))\\n    >>> x\\n    array([[0, 1, 2],\\n           [3, 4, 5]])\\n    >>> np.zeros_like(x)\\n    array([[0, 0, 0],\\n           [0, 0, 0]])\\n\\n    >>> y = np.arange(3, dtype=float)\\n    >>> y\\n    array([0., 1., 2.])\\n    >>> np.zeros_like(y)\\n    array([0.,  0.,  0.])\\n\\n    \\\"\\\"\\\"\\n    res = empty_like(\\n        a, dtype=dtype, order=order, subok=subok, shape=shape, device=device\\n    )\\n    # needed instead of a 0 to get same result as zeros for string dtypes\\n    z = zeros(1, dtype=res.dtype)\\n    multiarray.copyto(res, z, casting='unsafe')\\n    return res\\n\\n\\n@finalize_array_function_like\\n@set_module('numpy')\\ndef ones(shape, dtype=None, order='C', *, device=None, like=None):\\n    \\\"\\\"\\\"\\n    Return a new array of given shape and type, filled with ones.\\n\\n    Parameters\\n    ----------\\n    shape : int or sequence of ints\\n        Shape of the new array, e.g., ``(2, 3)`` or ``2``.\\n    dtype : data-type, optional\\n        The desired data-type for the array, e.g., `numpy.int8`.  Default is\\n        `numpy.float64`.\\n    order : {'C', 'F'}, optional, default: C\\n        Whether to store multi-dimensional data in row-major\\n        (C-style) or column-major (Fortran-style) order in\\n        memory.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n    ${ARRAY_FUNCTION_LIKE}\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of ones with the given shape, dtype, and order.\\n\\n    See Also\\n    --------\\n    ones_like : Return an array of ones with shape and type of input.\\n    empty : Return a new uninitialized array.\\n    zeros : Return a new array setting values to zero.\\n    full : Return a new array of given shape filled with value.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.ones(5)\\n    array([1., 1., 1., 1., 1.])\\n\\n    >>> np.ones((5,), dtype=int)\\n    array([1, 1, 1, 1, 1])\\n\\n    >>> np.ones((2, 1))\\n    array([[1.],\\n           [1.]])\\n\\n    >>> s = (2,2)\\n    >>> np.ones(s)\\n    array([[1.,  1.],\\n           [1.,  1.]])\\n\\n    \\\"\\\"\\\"\\n    if like is not None:\\n        return _ones_with_like(\\n            like, shape, dtype=dtype, order=order, device=device\\n        )\\n\\n    a = empty(shape, dtype, order, device=device)\\n    multiarray.copyto(a, 1, casting='unsafe')\\n    return a\\n\\n\\n_ones_with_like = array_function_dispatch()(ones)\\n\\n\\ndef _ones_like_dispatcher(\\n    a, dtype=None, order=None, subok=None, shape=None, *, device=None\\n):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_ones_like_dispatcher)\\ndef ones_like(\\n    a, dtype=None, order='K', subok=True, shape=None, *, device=None\\n):\\n    \\\"\\\"\\\"\\n    Return an array of ones with the same shape and type as a given array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        The shape and data-type of `a` define these same attributes of\\n        the returned array.\\n    dtype : data-type, optional\\n        Overrides the data type of the result.\\n    order : {'C', 'F', 'A', or 'K'}, optional\\n        Overrides the memory layout of the result. 'C' means C-order,\\n        'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,\\n        'C' otherwise. 'K' means match the layout of `a` as closely\\n        as possible.\\n    subok : bool, optional.\\n        If True, then the newly created array will use the sub-class\\n        type of `a`, otherwise it will be a base-class array. Defaults\\n        to True.\\n    shape : int or sequence of ints, optional.\\n        Overrides the shape of the result. If order='K' and the number of\\n        dimensions is unchanged, will try to keep order, otherwise,\\n        order='C' is implied.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of ones with the same shape and type as `a`.\\n\\n    See Also\\n    --------\\n    empty_like : Return an empty array with shape and type of input.\\n    zeros_like : Return an array of zeros with shape and type of input.\\n    full_like : Return a new array with shape of input filled with value.\\n    ones : Return a new array setting values to one.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(6)\\n    >>> x = x.reshape((2, 3))\\n    >>> x\\n    array([[0, 1, 2],\\n           [3, 4, 5]])\\n    >>> np.ones_like(x)\\n    array([[1, 1, 1],\\n           [1, 1, 1]])\\n\\n    >>> y = np.arange(3, dtype=float)\\n    >>> y\\n    array([0., 1., 2.])\\n    >>> np.ones_like(y)\\n    array([1.,  1.,  1.])\\n\\n    \\\"\\\"\\\"\\n    res = empty_like(\\n        a, dtype=dtype, order=order, subok=subok, shape=shape, device=device\\n    )\\n    multiarray.copyto(res, 1, casting='unsafe')\\n    return res\\n\\n\\ndef _full_dispatcher(\\n    shape, fill_value, dtype=None, order=None, *, device=None, like=None\\n):\\n    return (like,)\\n\\n\\n@finalize_array_function_like\\n@set_module('numpy')\\ndef full(shape, fill_value, dtype=None, order='C', *, device=None, like=None):\\n    \\\"\\\"\\\"\\n    Return a new array of given shape and type, filled with `fill_value`.\\n\\n    Parameters\\n    ----------\\n    shape : int or sequence of ints\\n        Shape of the new array, e.g., ``(2, 3)`` or ``2``.\\n    fill_value : scalar or array_like\\n        Fill value.\\n    dtype : data-type, optional\\n        The desired data-type for the array  The default, None, means\\n         ``np.array(fill_value).dtype``.\\n    order : {'C', 'F'}, optional\\n        Whether to store multidimensional data in C- or Fortran-contiguous\\n        (row- or column-wise) order in memory.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n    ${ARRAY_FUNCTION_LIKE}\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of `fill_value` with the given shape, dtype, and order.\\n\\n    See Also\\n    --------\\n    full_like : Return a new array with shape of input filled with value.\\n    empty : Return a new uninitialized array.\\n    ones : Return a new array setting values to one.\\n    zeros : Return a new array setting values to zero.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.full((2, 2), np.inf)\\n    array([[inf, inf],\\n           [inf, inf]])\\n    >>> np.full((2, 2), 10)\\n    array([[10, 10],\\n           [10, 10]])\\n\\n    >>> np.full((2, 2), [1, 2])\\n    array([[1, 2],\\n           [1, 2]])\\n\\n    \\\"\\\"\\\"\\n    if like is not None:\\n        return _full_with_like(\\n            like, shape, fill_value, dtype=dtype, order=order, device=device\\n        )\\n\\n    if dtype is None:\\n        fill_value = asarray(fill_value)\\n        dtype = fill_value.dtype\\n    a = empty(shape, dtype, order, device=device)\\n    multiarray.copyto(a, fill_value, casting='unsafe')\\n    return a\\n\\n\\n_full_with_like = array_function_dispatch()(full)\\n\\n\\ndef _full_like_dispatcher(\\n    a, fill_value, dtype=None, order=None, subok=None, shape=None,\\n    *, device=None\\n):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_full_like_dispatcher)\\ndef full_like(\\n    a, fill_value, dtype=None, order='K', subok=True, shape=None,\\n    *, device=None\\n):\\n    \\\"\\\"\\\"\\n    Return a full array with the same shape and type as a given array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        The shape and data-type of `a` define these same attributes of\\n        the returned array.\\n    fill_value : array_like\\n        Fill value.\\n    dtype : data-type, optional\\n        Overrides the data type of the result.\\n    order : {'C', 'F', 'A', or 'K'}, optional\\n        Overrides the memory layout of the result. 'C' means C-order,\\n        'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,\\n        'C' otherwise. 'K' means match the layout of `a` as closely\\n        as possible.\\n    subok : bool, optional.\\n        If True, then the newly created array will use the sub-class\\n        type of `a`, otherwise it will be a base-class array. Defaults\\n        to True.\\n    shape : int or sequence of ints, optional.\\n        Overrides the shape of the result. If order='K' and the number of\\n        dimensions is unchanged, will try to keep order, otherwise,\\n        order='C' is implied.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of `fill_value` with the same shape and type as `a`.\\n\\n    See Also\\n    --------\\n    empty_like : Return an empty array with shape and type of input.\\n    ones_like : Return an array of ones with shape and type of input.\\n    zeros_like : Return an array of zeros with shape and type of input.\\n    full : Return a new array of given shape filled with value.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(6, dtype=int)\\n    >>> np.full_like(x, 1)\\n    array([1, 1, 1, 1, 1, 1])\\n    >>> np.full_like(x, 0.1)\\n    array([0, 0, 0, 0, 0, 0])\\n    >>> np.full_like(x, 0.1, dtype=np.double)\\n    array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1])\\n    >>> np.full_like(x, np.nan, dtype=np.double)\\n    array([nan, nan, nan, nan, nan, nan])\\n\\n    >>> y = np.arange(6, dtype=np.double)\\n    >>> np.full_like(y, 0.1)\\n    array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1])\\n\\n    >>> y = np.zeros([2, 2, 3], dtype=int)\\n    >>> np.full_like(y, [0, 0, 255])\\n    array([[[  0,   0, 255],\\n            [  0,   0, 255]],\\n           [[  0,   0, 255],\\n            [  0,   0, 255]]])\\n    \\\"\\\"\\\"\\n    res = empty_like(\\n        a, dtype=dtype, order=order, subok=subok, shape=shape, device=device\\n    )\\n    multiarray.copyto(res, fill_value, casting='unsafe')\\n    return res\\n\\n\\ndef _count_nonzero_dispatcher(a, axis=None, *, keepdims=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_count_nonzero_dispatcher)\\ndef count_nonzero(a, axis=None, *, keepdims=False):\\n    \\\"\\\"\\\"\\n    Counts the number of non-zero values in the array ``a``.\\n\\n    The word \\\"non-zero\\\" is in reference to the Python 2.x\\n    built-in method ``__nonzero__()`` (renamed ``__bool__()``\\n    in Python 3.x) of Python objects that tests an object's\\n    \\\"truthfulness\\\". For example, any number is considered\\n    truthful if it is nonzero, whereas any string is considered\\n    truthful if it is not the empty string. Thus, this function\\n    (recursively) counts how many elements in ``a`` (and in\\n    sub-arrays thereof) have their ``__nonzero__()`` or ``__bool__()``\\n    method evaluated to ``True``.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        The array for which to count non-zeros.\\n    axis : int or tuple, optional\\n        Axis or tuple of axes along which to count non-zeros.\\n        Default is None, meaning that non-zeros will be counted\\n        along a flattened version of ``a``.\\n    keepdims : bool, optional\\n        If this is set to True, the axes that are counted are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n    Returns\\n    -------\\n    count : int or array of int\\n        Number of non-zero values in the array along a given axis.\\n        Otherwise, the total number of non-zero values in the array\\n        is returned.\\n\\n    See Also\\n    --------\\n    nonzero : Return the coordinates of all the non-zero values.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.count_nonzero(np.eye(4))\\n    np.int64(4)\\n    >>> a = np.array([[0, 1, 7, 0],\\n    ...               [3, 0, 2, 19]])\\n    >>> np.count_nonzero(a)\\n    np.int64(5)\\n    >>> np.count_nonzero(a, axis=0)\\n    array([1, 1, 2, 1])\\n    >>> np.count_nonzero(a, axis=1)\\n    array([2, 3])\\n    >>> np.count_nonzero(a, axis=1, keepdims=True)\\n    array([[2],\\n           [3]])\\n    \\\"\\\"\\\"\\n    if axis is None and not keepdims:\\n        return multiarray.count_nonzero(a)\\n\\n    a = asanyarray(a)\\n\\n    # TODO: this works around .astype(bool) not working properly (gh-9847)\\n    if np.issubdtype(a.dtype, np.character):\\n        a_bool = a != a.dtype.type()\\n    else:\\n        a_bool = a.astype(np.bool, copy=False)\\n\\n    return a_bool.sum(axis=axis, dtype=np.intp, keepdims=keepdims)\\n\\n\\n@set_module('numpy')\\ndef isfortran(a):\\n    \\\"\\\"\\\"\\n    Check if the array is Fortran contiguous but *not* C contiguous.\\n\\n    This function is obsolete. If you only want to check if an array is Fortran\\n    contiguous use ``a.flags.f_contiguous`` instead.\\n\\n    Parameters\\n    ----------\\n    a : ndarray\\n        Input array.\\n\\n    Returns\\n    -------\\n    isfortran : bool\\n        Returns True if the array is Fortran contiguous but *not* C contiguous.\\n\\n\\n    Examples\\n    --------\\n\\n    np.array allows to specify whether the array is written in C-contiguous\\n    order (last index varies the fastest), or FORTRAN-contiguous order in\\n    memory (first index varies the fastest).\\n\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2, 3], [4, 5, 6]], order='C')\\n    >>> a\\n    array([[1, 2, 3],\\n           [4, 5, 6]])\\n    >>> np.isfortran(a)\\n    False\\n\\n    >>> b = np.array([[1, 2, 3], [4, 5, 6]], order='F')\\n    >>> b\\n    array([[1, 2, 3],\\n           [4, 5, 6]])\\n    >>> np.isfortran(b)\\n    True\\n\\n\\n    The transpose of a C-ordered array is a FORTRAN-ordered array.\\n\\n    >>> a = np.array([[1, 2, 3], [4, 5, 6]], order='C')\\n    >>> a\\n    array([[1, 2, 3],\\n           [4, 5, 6]])\\n    >>> np.isfortran(a)\\n    False\\n    >>> b = a.T\\n    >>> b\\n    array([[1, 4],\\n           [2, 5],\\n           [3, 6]])\\n    >>> np.isfortran(b)\\n    True\\n\\n    C-ordered arrays evaluate as False even if they are also FORTRAN-ordered.\\n\\n    >>> np.isfortran(np.array([1, 2], order='F'))\\n    False\\n\\n    \\\"\\\"\\\"\\n    return a.flags.fnc\\n\\n\\ndef _argwhere_dispatcher(a):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_argwhere_dispatcher)\\ndef argwhere(a):\\n    \\\"\\\"\\\"\\n    Find the indices of array elements that are non-zero, grouped by element.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n\\n    Returns\\n    -------\\n    index_array : (N, a.ndim) ndarray\\n        Indices of elements that are non-zero. Indices are grouped by element.\\n        This array will have shape ``(N, a.ndim)`` where ``N`` is the number of\\n        non-zero items.\\n\\n    See Also\\n    --------\\n    where, nonzero\\n\\n    Notes\\n    -----\\n    ``np.argwhere(a)`` is almost the same as ``np.transpose(np.nonzero(a))``,\\n    but produces a result of the correct shape for a 0D array.\\n\\n    The output of ``argwhere`` is not suitable for indexing arrays.\\n    For this purpose use ``nonzero(a)`` instead.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(6).reshape(2,3)\\n    >>> x\\n    array([[0, 1, 2],\\n           [3, 4, 5]])\\n    >>> np.argwhere(x>1)\\n    array([[0, 2],\\n           [1, 0],\\n           [1, 1],\\n           [1, 2]])\\n\\n    \\\"\\\"\\\"\\n    # nonzero does not behave well on 0d, so promote to 1d\\n    if np.ndim(a) == 0:\\n        a = shape_base.atleast_1d(a)\\n        # then remove the added dimension\\n        return argwhere(a)[:, :0]\\n    return transpose(nonzero(a))\\n\\n\\ndef _flatnonzero_dispatcher(a):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_flatnonzero_dispatcher)\\ndef flatnonzero(a):\\n    \\\"\\\"\\\"\\n    Return indices that are non-zero in the flattened version of a.\\n\\n    This is equivalent to ``np.nonzero(np.ravel(a))[0]``.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n\\n    Returns\\n    -------\\n    res : ndarray\\n        Output array, containing the indices of the elements of ``a.ravel()``\\n        that are non-zero.\\n\\n    See Also\\n    --------\\n    nonzero : Return the indices of the non-zero elements of the input array.\\n    ravel : Return a 1-D array containing the elements of the input array.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(-2, 3)\\n    >>> x\\n    array([-2, -1,  0,  1,  2])\\n    >>> np.flatnonzero(x)\\n    array([0, 1, 3, 4])\\n\\n    Use the indices of the non-zero elements as an index array to extract\\n    these elements:\\n\\n    >>> x.ravel()[np.flatnonzero(x)]\\n    array([-2, -1,  1,  2])\\n\\n    \\\"\\\"\\\"\\n    return np.nonzero(np.ravel(a))[0]\\n\\n\\ndef _correlate_dispatcher(a, v, mode=None):\\n    return (a, v)\\n\\n\\n@array_function_dispatch(_correlate_dispatcher)\\ndef correlate(a, v, mode='valid'):\\n    r\\\"\\\"\\\"\\n    Cross-correlation of two 1-dimensional sequences.\\n\\n    This function computes the correlation as generally defined in signal\\n    processing texts [1]_:\\n\\n    .. math:: c_k = \\\\sum_n a_{n+k} \\\\cdot \\\\overline{v}_n\\n\\n    with a and v sequences being zero-padded where necessary and\\n    :math:`\\\\overline v` denoting complex conjugation.\\n\\n    Parameters\\n    ----------\\n    a, v : array_like\\n        Input sequences.\\n    mode : {'valid', 'same', 'full'}, optional\\n        Refer to the `convolve` docstring.  Note that the default\\n        is 'valid', unlike `convolve`, which uses 'full'.\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Discrete cross-correlation of `a` and `v`.\\n\\n    See Also\\n    --------\\n    convolve : Discrete, linear convolution of two one-dimensional sequences.\\n    scipy.signal.correlate : uses FFT which has superior performance\\n        on large arrays.\\n\\n    Notes\\n    -----\\n    The definition of correlation above is not unique and sometimes\\n    correlation may be defined differently. Another common definition is [1]_:\\n\\n    .. math:: c'_k = \\\\sum_n a_{n} \\\\cdot \\\\overline{v_{n+k}}\\n\\n    which is related to :math:`c_k` by :math:`c'_k = c_{-k}`.\\n\\n    `numpy.correlate` may perform slowly in large arrays (i.e. n = 1e5)\\n    because it does not use the FFT to compute the convolution; in that case,\\n    `scipy.signal.correlate` might be preferable.\\n\\n    References\\n    ----------\\n    .. [1] Wikipedia, \\\"Cross-correlation\\\",\\n           https://en.wikipedia.org/wiki/Cross-correlation\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.correlate([1, 2, 3], [0, 1, 0.5])\\n    array([3.5])\\n    >>> np.correlate([1, 2, 3], [0, 1, 0.5], \\\"same\\\")\\n    array([2. ,  3.5,  3. ])\\n    >>> np.correlate([1, 2, 3], [0, 1, 0.5], \\\"full\\\")\\n    array([0.5,  2. ,  3.5,  3. ,  0. ])\\n\\n    Using complex sequences:\\n\\n    >>> np.correlate([1+1j, 2, 3-1j], [0, 1, 0.5j], 'full')\\n    array([ 0.5-0.5j,  1.0+0.j ,  1.5-1.5j,  3.0-1.j ,  0.0+0.j ])\\n\\n    Note that you get the time reversed, complex conjugated result\\n    (:math:`\\\\overline{c_{-k}}`) when the two input sequences a and v change\\n    places:\\n\\n    >>> np.correlate([0, 1, 0.5j], [1+1j, 2, 3-1j], 'full')\\n    array([ 0.0+0.j ,  3.0+1.j ,  1.5+1.5j,  1.0+0.j ,  0.5+0.5j])\\n\\n    \\\"\\\"\\\"\\n    return multiarray.correlate2(a, v, mode)\\n\\n\\ndef _convolve_dispatcher(a, v, mode=None):\\n    return (a, v)\\n\\n\\n@array_function_dispatch(_convolve_dispatcher)\\ndef convolve(a, v, mode='full'):\\n    \\\"\\\"\\\"\\n    Returns the discrete, linear convolution of two one-dimensional sequences.\\n\\n    The convolution operator is often seen in signal processing, where it\\n    models the effect of a linear time-invariant system on a signal [1]_.  In\\n    probability theory, the sum of two independent random variables is\\n    distributed according to the convolution of their individual\\n    distributions.\\n\\n    If `v` is longer than `a`, the arrays are swapped before computation.\\n\\n    Parameters\\n    ----------\\n    a : (N,) array_like\\n        First one-dimensional input array.\\n    v : (M,) array_like\\n        Second one-dimensional input array.\\n    mode : {'full', 'valid', 'same'}, optional\\n        'full':\\n          By default, mode is 'full'.  This returns the convolution\\n          at each point of overlap, with an output shape of (N+M-1,). At\\n          the end-points of the convolution, the signals do not overlap\\n          completely, and boundary effects may be seen.\\n\\n        'same':\\n          Mode 'same' returns output of length ``max(M, N)``.  Boundary\\n          effects are still visible.\\n\\n        'valid':\\n          Mode 'valid' returns output of length\\n          ``max(M, N) - min(M, N) + 1``.  The convolution product is only given\\n          for points where the signals overlap completely.  Values outside\\n          the signal boundary have no effect.\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Discrete, linear convolution of `a` and `v`.\\n\\n    See Also\\n    --------\\n    scipy.signal.fftconvolve : Convolve two arrays using the Fast Fourier\\n                               Transform.\\n    scipy.linalg.toeplitz : Used to construct the convolution operator.\\n    polymul : Polynomial multiplication. Same output as convolve, but also\\n              accepts poly1d objects as input.\\n\\n    Notes\\n    -----\\n    The discrete convolution operation is defined as\\n\\n    .. math:: (a * v)_n = \\\\\\\\sum_{m = -\\\\\\\\infty}^{\\\\\\\\infty} a_m v_{n - m}\\n\\n    It can be shown that a convolution :math:`x(t) * y(t)` in time/space\\n    is equivalent to the multiplication :math:`X(f) Y(f)` in the Fourier\\n    domain, after appropriate padding (padding is necessary to prevent\\n    circular convolution).  Since multiplication is more efficient (faster)\\n    than convolution, the function `scipy.signal.fftconvolve` exploits the\\n    FFT to calculate the convolution of large data-sets.\\n\\n    References\\n    ----------\\n    .. [1] Wikipedia, \\\"Convolution\\\",\\n        https://en.wikipedia.org/wiki/Convolution\\n\\n    Examples\\n    --------\\n    Note how the convolution operator flips the second array\\n    before \\\"sliding\\\" the two across one another:\\n\\n    >>> import numpy as np\\n    >>> np.convolve([1, 2, 3], [0, 1, 0.5])\\n    array([0. , 1. , 2.5, 4. , 1.5])\\n\\n    Only return the middle values of the convolution.\\n    Contains boundary effects, where zeros are taken\\n    into account:\\n\\n    >>> np.convolve([1,2,3],[0,1,0.5], 'same')\\n    array([1. ,  2.5,  4. ])\\n\\n    The two arrays are of the same length, so there\\n    is only one position where they completely overlap:\\n\\n    >>> np.convolve([1,2,3],[0,1,0.5], 'valid')\\n    array([2.5])\\n\\n    \\\"\\\"\\\"\\n    a, v = array(a, copy=None, ndmin=1), array(v, copy=None, ndmin=1)\\n    if len(a) == 0:\\n        raise ValueError('a cannot be empty')\\n    if len(v) == 0:\\n        raise ValueError('v cannot be empty')\\n    if len(v) > len(a):\\n        a, v = v, a\\n    return multiarray.correlate(a, v[::-1], mode)\\n\\n\\ndef _outer_dispatcher(a, b, out=None):\\n    return (a, b, out)\\n\\n\\n@array_function_dispatch(_outer_dispatcher)\\ndef outer(a, b, out=None):\\n    \\\"\\\"\\\"\\n    Compute the outer product of two vectors.\\n\\n    Given two vectors `a` and `b` of length ``M`` and ``N``, respectively,\\n    the outer product [1]_ is::\\n\\n      [[a_0*b_0  a_0*b_1 ... a_0*b_{N-1} ]\\n       [a_1*b_0    .\\n       [ ...          .\\n       [a_{M-1}*b_0            a_{M-1}*b_{N-1} ]]\\n\\n    Parameters\\n    ----------\\n    a : (M,) array_like\\n        First input vector.  Input is flattened if\\n        not already 1-dimensional.\\n    b : (N,) array_like\\n        Second input vector.  Input is flattened if\\n        not already 1-dimensional.\\n    out : (M, N) ndarray, optional\\n        A location where the result is stored\\n\\n    Returns\\n    -------\\n    out : (M, N) ndarray\\n        ``out[i, j] = a[i] * b[j]``\\n\\n    See also\\n    --------\\n    inner\\n    einsum : ``einsum('i,j->ij', a.ravel(), b.ravel())`` is the equivalent.\\n    ufunc.outer : A generalization to dimensions other than 1D and other\\n                  operations. ``np.multiply.outer(a.ravel(), b.ravel())``\\n                  is the equivalent.\\n    linalg.outer : An Array API compatible variation of ``np.outer``,\\n                   which accepts 1-dimensional inputs only.\\n    tensordot : ``np.tensordot(a.ravel(), b.ravel(), axes=((), ()))``\\n                is the equivalent.\\n\\n    References\\n    ----------\\n    .. [1] G. H. Golub and C. F. Van Loan, *Matrix Computations*, 3rd\\n           ed., Baltimore, MD, Johns Hopkins University Press, 1996,\\n           pg. 8.\\n\\n    Examples\\n    --------\\n    Make a (*very* coarse) grid for computing a Mandelbrot set:\\n\\n    >>> import numpy as np\\n    >>> rl = np.outer(np.ones((5,)), np.linspace(-2, 2, 5))\\n    >>> rl\\n    array([[-2., -1.,  0.,  1.,  2.],\\n           [-2., -1.,  0.,  1.,  2.],\\n           [-2., -1.,  0.,  1.,  2.],\\n           [-2., -1.,  0.,  1.,  2.],\\n           [-2., -1.,  0.,  1.,  2.]])\\n    >>> im = np.outer(1j*np.linspace(2, -2, 5), np.ones((5,)))\\n    >>> im\\n    array([[0.+2.j, 0.+2.j, 0.+2.j, 0.+2.j, 0.+2.j],\\n           [0.+1.j, 0.+1.j, 0.+1.j, 0.+1.j, 0.+1.j],\\n           [0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],\\n           [0.-1.j, 0.-1.j, 0.-1.j, 0.-1.j, 0.-1.j],\\n           [0.-2.j, 0.-2.j, 0.-2.j, 0.-2.j, 0.-2.j]])\\n    >>> grid = rl + im\\n    >>> grid\\n    array([[-2.+2.j, -1.+2.j,  0.+2.j,  1.+2.j,  2.+2.j],\\n           [-2.+1.j, -1.+1.j,  0.+1.j,  1.+1.j,  2.+1.j],\\n           [-2.+0.j, -1.+0.j,  0.+0.j,  1.+0.j,  2.+0.j],\\n           [-2.-1.j, -1.-1.j,  0.-1.j,  1.-1.j,  2.-1.j],\\n           [-2.-2.j, -1.-2.j,  0.-2.j,  1.-2.j,  2.-2.j]])\\n\\n    An example using a \\\"vector\\\" of letters:\\n\\n    >>> x = np.array(['a', 'b', 'c'], dtype=object)\\n    >>> np.outer(x, [1, 2, 3])\\n    array([['a', 'aa', 'aaa'],\\n           ['b', 'bb', 'bbb'],\\n           ['c', 'cc', 'ccc']], dtype=object)\\n\\n    \\\"\\\"\\\"\\n    a = asarray(a)\\n    b = asarray(b)\\n    return multiply(a.ravel()[:, newaxis], b.ravel()[newaxis, :], out)\\n\\n\\ndef _tensordot_dispatcher(a, b, axes=None):\\n    return (a, b)\\n\\n\\n@array_function_dispatch(_tensordot_dispatcher)\\ndef tensordot(a, b, axes=2):\\n    \\\"\\\"\\\"\\n    Compute tensor dot product along specified axes.\\n\\n    Given two tensors, `a` and `b`, and an array_like object containing\\n    two array_like objects, ``(a_axes, b_axes)``, sum the products of\\n    `a`'s and `b`'s elements (components) over the axes specified by\\n    ``a_axes`` and ``b_axes``. The third argument can be a single non-negative\\n    integer_like scalar, ``N``; if it is such, then the last ``N`` dimensions\\n    of `a` and the first ``N`` dimensions of `b` are summed over.\\n\\n    Parameters\\n    ----------\\n    a, b : array_like\\n        Tensors to \\\"dot\\\".\\n\\n    axes : int or (2,) array_like\\n        * integer_like\\n          If an int N, sum over the last N axes of `a` and the first N axes\\n          of `b` in order. The sizes of the corresponding axes must match.\\n        * (2,) array_like\\n          Or, a list of axes to be summed over, first sequence applying to `a`,\\n          second to `b`. Both elements array_like must be of the same length.\\n\\n    Returns\\n    -------\\n    output : ndarray\\n        The tensor dot product of the input.\\n\\n    See Also\\n    --------\\n    dot, einsum\\n\\n    Notes\\n    -----\\n    Three common use cases are:\\n        * ``axes = 0`` : tensor product :math:`a\\\\\\\\otimes b`\\n        * ``axes = 1`` : tensor dot product :math:`a\\\\\\\\cdot b`\\n        * ``axes = 2`` : (default) tensor double contraction :math:`a:b`\\n\\n    When `axes` is integer_like, the sequence of axes for evaluation\\n    will be: from the -Nth axis to the -1th axis in `a`,\\n    and from the 0th axis to (N-1)th axis in `b`.\\n    For example, ``axes = 2`` is the equal to\\n    ``axes = [[-2, -1], [0, 1]]``.\\n    When N-1 is smaller than 0, or when -N is larger than -1,\\n    the element of `a` and `b` are defined as the `axes`.\\n\\n    When there is more than one axis to sum over - and they are not the last\\n    (first) axes of `a` (`b`) - the argument `axes` should consist of\\n    two sequences of the same length, with the first axis to sum over given\\n    first in both sequences, the second axis second, and so forth.\\n    The calculation can be referred to ``numpy.einsum``.\\n\\n    The shape of the result consists of the non-contracted axes of the\\n    first tensor, followed by the non-contracted axes of the second.\\n\\n    Examples\\n    --------\\n    An example on integer_like:\\n\\n    >>> a_0 = np.array([[1, 2], [3, 4]])\\n    >>> b_0 = np.array([[5, 6], [7, 8]])\\n    >>> c_0 = np.tensordot(a_0, b_0, axes=0)\\n    >>> c_0.shape\\n    (2, 2, 2, 2)\\n    >>> c_0\\n    array([[[[ 5,  6],\\n             [ 7,  8]],\\n            [[10, 12],\\n             [14, 16]]],\\n           [[[15, 18],\\n             [21, 24]],\\n            [[20, 24],\\n             [28, 32]]]])\\n\\n    An example on array_like:\\n\\n    >>> a = np.arange(60.).reshape(3,4,5)\\n    >>> b = np.arange(24.).reshape(4,3,2)\\n    >>> c = np.tensordot(a,b, axes=([1,0],[0,1]))\\n    >>> c.shape\\n    (5, 2)\\n    >>> c\\n    array([[4400., 4730.],\\n           [4532., 4874.],\\n           [4664., 5018.],\\n           [4796., 5162.],\\n           [4928., 5306.]])\\n\\n    A slower but equivalent way of computing the same...\\n\\n    >>> d = np.zeros((5,2))\\n    >>> for i in range(5):\\n    ...   for j in range(2):\\n    ...     for k in range(3):\\n    ...       for n in range(4):\\n    ...         d[i,j] += a[k,n,i] * b[n,k,j]\\n    >>> c == d\\n    array([[ True,  True],\\n           [ True,  True],\\n           [ True,  True],\\n           [ True,  True],\\n           [ True,  True]])\\n\\n    An extended example taking advantage of the overloading of + and \\\\\\\\*:\\n\\n    >>> a = np.array(range(1, 9)).reshape((2, 2, 2))\\n    >>> A = np.array(('a', 'b', 'c', 'd'), dtype=object)\\n    >>> A = A.reshape((2, 2))\\n    >>> a; A\\n    array([[[1, 2],\\n            [3, 4]],\\n           [[5, 6],\\n            [7, 8]]])\\n    array([['a', 'b'],\\n           ['c', 'd']], dtype=object)\\n\\n    >>> np.tensordot(a, A) # third argument default is 2 for double-contraction\\n    array(['abbcccdddd', 'aaaaabbbbbbcccccccdddddddd'], dtype=object)\\n\\n    >>> np.tensordot(a, A, 1)\\n    array([[['acc', 'bdd'],\\n            ['aaacccc', 'bbbdddd']],\\n           [['aaaaacccccc', 'bbbbbdddddd'],\\n            ['aaaaaaacccccccc', 'bbbbbbbdddddddd']]], dtype=object)\\n\\n    >>> np.tensordot(a, A, 0) # tensor product (result too long to incl.)\\n    array([[[[['a', 'b'],\\n              ['c', 'd']],\\n              ...\\n\\n    >>> np.tensordot(a, A, (0, 1))\\n    array([[['abbbbb', 'cddddd'],\\n            ['aabbbbbb', 'ccdddddd']],\\n           [['aaabbbbbbb', 'cccddddddd'],\\n            ['aaaabbbbbbbb', 'ccccdddddddd']]], dtype=object)\\n\\n    >>> np.tensordot(a, A, (2, 1))\\n    array([[['abb', 'cdd'],\\n            ['aaabbbb', 'cccdddd']],\\n           [['aaaaabbbbbb', 'cccccdddddd'],\\n            ['aaaaaaabbbbbbbb', 'cccccccdddddddd']]], dtype=object)\\n\\n    >>> np.tensordot(a, A, ((0, 1), (0, 1)))\\n    array(['abbbcccccddddddd', 'aabbbbccccccdddddddd'], dtype=object)\\n\\n    >>> np.tensordot(a, A, ((2, 1), (1, 0)))\\n    array(['acccbbdddd', 'aaaaacccccccbbbbbbdddddddd'], dtype=object)\\n\\n    \\\"\\\"\\\"\\n    try:\\n        iter(axes)\\n    except Exception:\\n        axes_a = list(range(-axes, 0))\\n        axes_b = list(range(axes))\\n    else:\\n        axes_a, axes_b = axes\\n    try:\\n        na = len(axes_a)\\n        axes_a = list(axes_a)\\n    except TypeError:\\n        axes_a = [axes_a]\\n        na = 1\\n    try:\\n        nb = len(axes_b)\\n        axes_b = list(axes_b)\\n    except TypeError:\\n        axes_b = [axes_b]\\n        nb = 1\\n\\n    a, b = asarray(a), asarray(b)\\n    as_ = a.shape\\n    nda = a.ndim\\n    bs = b.shape\\n    ndb = b.ndim\\n    equal = True\\n    if na != nb:\\n        equal = False\\n    else:\\n        for k in range(na):\\n            if as_[axes_a[k]] != bs[axes_b[k]]:\\n                equal = False\\n                break\\n            if axes_a[k] < 0:\\n                axes_a[k] += nda\\n            if axes_b[k] < 0:\\n                axes_b[k] += ndb\\n    if not equal:\\n        raise ValueError(\\\"shape-mismatch for sum\\\")\\n\\n    # Move the axes to sum over to the end of \\\"a\\\"\\n    # and to the front of \\\"b\\\"\\n    notin = [k for k in range(nda) if k not in axes_a]\\n    newaxes_a = notin + axes_a\\n    N2 = math.prod(as_[axis] for axis in axes_a)\\n    newshape_a = (math.prod(as_[ax] for ax in notin), N2)\\n    olda = [as_[axis] for axis in notin]\\n\\n    notin = [k for k in range(ndb) if k not in axes_b]\\n    newaxes_b = axes_b + notin\\n    N2 = math.prod(bs[axis] for axis in axes_b)\\n    newshape_b = (N2, math.prod(bs[ax] for ax in notin))\\n    oldb = [bs[axis] for axis in notin]\\n\\n    at = a.transpose(newaxes_a).reshape(newshape_a)\\n    bt = b.transpose(newaxes_b).reshape(newshape_b)\\n    res = dot(at, bt)\\n    return res.reshape(olda + oldb)\\n\\n\\ndef _roll_dispatcher(a, shift, axis=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_roll_dispatcher)\\ndef roll(a, shift, axis=None):\\n    \\\"\\\"\\\"\\n    Roll array elements along a given axis.\\n\\n    Elements that roll beyond the last position are re-introduced at\\n    the first.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    shift : int or tuple of ints\\n        The number of places by which elements are shifted.  If a tuple,\\n        then `axis` must be a tuple of the same size, and each of the\\n        given axes is shifted by the corresponding number.  If an int\\n        while `axis` is a tuple of ints, then the same value is used for\\n        all given axes.\\n    axis : int or tuple of ints, optional\\n        Axis or axes along which elements are shifted.  By default, the\\n        array is flattened before shifting, after which the original\\n        shape is restored.\\n\\n    Returns\\n    -------\\n    res : ndarray\\n        Output array, with the same shape as `a`.\\n\\n    See Also\\n    --------\\n    rollaxis : Roll the specified axis backwards, until it lies in a\\n               given position.\\n\\n    Notes\\n    -----\\n    Supports rolling over multiple dimensions simultaneously.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(10)\\n    >>> np.roll(x, 2)\\n    array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])\\n    >>> np.roll(x, -2)\\n    array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])\\n\\n    >>> x2 = np.reshape(x, (2, 5))\\n    >>> x2\\n    array([[0, 1, 2, 3, 4],\\n           [5, 6, 7, 8, 9]])\\n    >>> np.roll(x2, 1)\\n    array([[9, 0, 1, 2, 3],\\n           [4, 5, 6, 7, 8]])\\n    >>> np.roll(x2, -1)\\n    array([[1, 2, 3, 4, 5],\\n           [6, 7, 8, 9, 0]])\\n    >>> np.roll(x2, 1, axis=0)\\n    array([[5, 6, 7, 8, 9],\\n           [0, 1, 2, 3, 4]])\\n    >>> np.roll(x2, -1, axis=0)\\n    array([[5, 6, 7, 8, 9],\\n           [0, 1, 2, 3, 4]])\\n    >>> np.roll(x2, 1, axis=1)\\n    array([[4, 0, 1, 2, 3],\\n           [9, 5, 6, 7, 8]])\\n    >>> np.roll(x2, -1, axis=1)\\n    array([[1, 2, 3, 4, 0],\\n           [6, 7, 8, 9, 5]])\\n    >>> np.roll(x2, (1, 1), axis=(1, 0))\\n    array([[9, 5, 6, 7, 8],\\n           [4, 0, 1, 2, 3]])\\n    >>> np.roll(x2, (2, 1), axis=(1, 0))\\n    array([[8, 9, 5, 6, 7],\\n           [3, 4, 0, 1, 2]])\\n\\n    \\\"\\\"\\\"\\n    a = asanyarray(a)\\n    if axis is None:\\n        return roll(a.ravel(), shift, 0).reshape(a.shape)\\n\\n    else:\\n        axis = normalize_axis_tuple(axis, a.ndim, allow_duplicate=True)\\n        broadcasted = broadcast(shift, axis)\\n        if broadcasted.ndim > 1:\\n            raise ValueError(\\n                \\\"'shift' and 'axis' should be scalars or 1D sequences\\\")\\n        shifts = dict.fromkeys(range(a.ndim), 0)\\n        for sh, ax in broadcasted:\\n            shifts[ax] += int(sh)\\n\\n        rolls = [((slice(None), slice(None)),)] * a.ndim\\n        for ax, offset in shifts.items():\\n            offset %= a.shape[ax] or 1  # If `a` is empty, nothing matters.\\n            if offset:\\n                # (original, result), (original, result)\\n                rolls[ax] = ((slice(None, -offset), slice(offset, None)),\\n                             (slice(-offset, None), slice(None, offset)))\\n\\n        result = empty_like(a)\\n        for indices in itertools.product(*rolls):\\n            arr_index, res_index = zip(*indices)\\n            result[res_index] = a[arr_index]\\n\\n        return result\\n\\n\\ndef _rollaxis_dispatcher(a, axis, start=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_rollaxis_dispatcher)\\ndef rollaxis(a, axis, start=0):\\n    \\\"\\\"\\\"\\n    Roll the specified axis backwards, until it lies in a given position.\\n\\n    This function continues to be supported for backward compatibility, but you\\n    should prefer `moveaxis`. The `moveaxis` function was added in NumPy\\n    1.11.\\n\\n    Parameters\\n    ----------\\n    a : ndarray\\n        Input array.\\n    axis : int\\n        The axis to be rolled. The positions of the other axes do not\\n        change relative to one another.\\n    start : int, optional\\n        When ``start <= axis``, the axis is rolled back until it lies in\\n        this position. When ``start > axis``, the axis is rolled until it\\n        lies before this position. The default, 0, results in a \\\"complete\\\"\\n        roll. The following table describes how negative values of ``start``\\n        are interpreted:\\n\\n        .. table::\\n           :align: left\\n\\n           +-------------------+----------------------+\\n           |     ``start``     | Normalized ``start`` |\\n           +===================+======================+\\n           | ``-(arr.ndim+1)`` | raise ``AxisError``  |\\n           +-------------------+----------------------+\\n           | ``-arr.ndim``     | 0                    |\\n           +-------------------+----------------------+\\n           | |vdots|           | |vdots|              |\\n           +-------------------+----------------------+\\n           | ``-1``            | ``arr.ndim-1``       |\\n           +-------------------+----------------------+\\n           | ``0``             | ``0``                |\\n           +-------------------+----------------------+\\n           | |vdots|           | |vdots|              |\\n           +-------------------+----------------------+\\n           | ``arr.ndim``      | ``arr.ndim``         |\\n           +-------------------+----------------------+\\n           | ``arr.ndim + 1``  | raise ``AxisError``  |\\n           +-------------------+----------------------+\\n\\n        .. |vdots|   unicode:: U+22EE .. Vertical Ellipsis\\n\\n    Returns\\n    -------\\n    res : ndarray\\n        For NumPy >= 1.10.0 a view of `a` is always returned. For earlier\\n        NumPy versions a view of `a` is returned only if the order of the\\n        axes is changed, otherwise the input array is returned.\\n\\n    See Also\\n    --------\\n    moveaxis : Move array axes to new positions.\\n    roll : Roll the elements of an array by a number of positions along a\\n        given axis.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.ones((3,4,5,6))\\n    >>> np.rollaxis(a, 3, 1).shape\\n    (3, 6, 4, 5)\\n    >>> np.rollaxis(a, 2).shape\\n    (5, 3, 4, 6)\\n    >>> np.rollaxis(a, 1, 4).shape\\n    (3, 5, 6, 4)\\n\\n    \\\"\\\"\\\"\\n    n = a.ndim\\n    axis = normalize_axis_index(axis, n)\\n    if start < 0:\\n        start += n\\n    msg = \\\"'%s' arg requires %d <= %s < %d, but %d was passed in\\\"\\n    if not (0 <= start < n + 1):\\n        raise AxisError(msg % ('start', -n, 'start', n + 1, start))\\n    if axis < start:\\n        # it's been removed\\n        start -= 1\\n    if axis == start:\\n        return a[...]\\n    axes = list(range(n))\\n    axes.remove(axis)\\n    axes.insert(start, axis)\\n    return a.transpose(axes)\\n\\n\\n@set_module(\\\"numpy.lib.array_utils\\\")\\ndef normalize_axis_tuple(axis, ndim, argname=None, allow_duplicate=False):\\n    \\\"\\\"\\\"\\n    Normalizes an axis argument into a tuple of non-negative integer axes.\\n\\n    This handles shorthands such as ``1`` and converts them to ``(1,)``,\\n    as well as performing the handling of negative indices covered by\\n    `normalize_axis_index`.\\n\\n    By default, this forbids axes from being specified multiple times.\\n\\n    Used internally by multi-axis-checking logic.\\n\\n    Parameters\\n    ----------\\n    axis : int, iterable of int\\n        The un-normalized index or indices of the axis.\\n    ndim : int\\n        The number of dimensions of the array that `axis` should be normalized\\n        against.\\n    argname : str, optional\\n        A prefix to put before the error message, typically the name of the\\n        argument.\\n    allow_duplicate : bool, optional\\n        If False, the default, disallow an axis from being specified twice.\\n\\n    Returns\\n    -------\\n    normalized_axes : tuple of int\\n        The normalized axis index, such that `0 <= normalized_axis < ndim`\\n\\n    Raises\\n    ------\\n    AxisError\\n        If any axis provided is out of range\\n    ValueError\\n        If an axis is repeated\\n\\n    See also\\n    --------\\n    normalize_axis_index : normalizing a single scalar axis\\n    \\\"\\\"\\\"\\n    # Optimization to speed-up the most common cases.\\n    if not isinstance(axis, (tuple, list)):\\n        try:\\n            axis = [operator.index(axis)]\\n        except TypeError:\\n            pass\\n    # Going via an iterator directly is slower than via list comprehension.\\n    axis = tuple(normalize_axis_index(ax, ndim, argname) for ax in axis)\\n    if not allow_duplicate and len(set(axis)) != len(axis):\\n        if argname:\\n            raise ValueError(f'repeated axis in `{argname}` argument')\\n        else:\\n            raise ValueError('repeated axis')\\n    return axis\\n\\n\\ndef _moveaxis_dispatcher(a, source, destination):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_moveaxis_dispatcher)\\ndef moveaxis(a, source, destination):\\n    \\\"\\\"\\\"\\n    Move axes of an array to new positions.\\n\\n    Other axes remain in their original order.\\n\\n    Parameters\\n    ----------\\n    a : np.ndarray\\n        The array whose axes should be reordered.\\n    source : int or sequence of int\\n        Original positions of the axes to move. These must be unique.\\n    destination : int or sequence of int\\n        Destination positions for each of the original axes. These must also be\\n        unique.\\n\\n    Returns\\n    -------\\n    result : np.ndarray\\n        Array with moved axes. This array is a view of the input array.\\n\\n    See Also\\n    --------\\n    transpose : Permute the dimensions of an array.\\n    swapaxes : Interchange two axes of an array.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.zeros((3, 4, 5))\\n    >>> np.moveaxis(x, 0, -1).shape\\n    (4, 5, 3)\\n    >>> np.moveaxis(x, -1, 0).shape\\n    (5, 3, 4)\\n\\n    These all achieve the same result:\\n\\n    >>> np.transpose(x).shape\\n    (5, 4, 3)\\n    >>> np.swapaxes(x, 0, -1).shape\\n    (5, 4, 3)\\n    >>> np.moveaxis(x, [0, 1], [-1, -2]).shape\\n    (5, 4, 3)\\n    >>> np.moveaxis(x, [0, 1, 2], [-1, -2, -3]).shape\\n    (5, 4, 3)\\n\\n    \\\"\\\"\\\"\\n    try:\\n        # allow duck-array types if they define transpose\\n        transpose = a.transpose\\n    except AttributeError:\\n        a = asarray(a)\\n        transpose = a.transpose\\n\\n    source = normalize_axis_tuple(source, a.ndim, 'source')\\n    destination = normalize_axis_tuple(destination, a.ndim, 'destination')\\n    if len(source) != len(destination):\\n        raise ValueError('`source` and `destination` arguments must have '\\n                         'the same number of elements')\\n\\n    order = [n for n in range(a.ndim) if n not in source]\\n\\n    for dest, src in sorted(zip(destination, source)):\\n        order.insert(dest, src)\\n\\n    result = transpose(order)\\n    return result\\n\\n\\ndef _cross_dispatcher(a, b, axisa=None, axisb=None, axisc=None, axis=None):\\n    return (a, b)\\n\\n\\n@array_function_dispatch(_cross_dispatcher)\\ndef cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None):\\n    \\\"\\\"\\\"\\n    Return the cross product of two (arrays of) vectors.\\n\\n    The cross product of `a` and `b` in :math:`R^3` is a vector perpendicular\\n    to both `a` and `b`.  If `a` and `b` are arrays of vectors, the vectors\\n    are defined by the last axis of `a` and `b` by default, and these axes\\n    can have dimensions 2 or 3.  Where the dimension of either `a` or `b` is\\n    2, the third component of the input vector is assumed to be zero and the\\n    cross product calculated accordingly.  In cases where both input vectors\\n    have dimension 2, the z-component of the cross product is returned.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Components of the first vector(s).\\n    b : array_like\\n        Components of the second vector(s).\\n    axisa : int, optional\\n        Axis of `a` that defines the vector(s).  By default, the last axis.\\n    axisb : int, optional\\n        Axis of `b` that defines the vector(s).  By default, the last axis.\\n    axisc : int, optional\\n        Axis of `c` containing the cross product vector(s).  Ignored if\\n        both input vectors have dimension 2, as the return is scalar.\\n        By default, the last axis.\\n    axis : int, optional\\n        If defined, the axis of `a`, `b` and `c` that defines the vector(s)\\n        and cross product(s).  Overrides `axisa`, `axisb` and `axisc`.\\n\\n    Returns\\n    -------\\n    c : ndarray\\n        Vector cross product(s).\\n\\n    Raises\\n    ------\\n    ValueError\\n        When the dimension of the vector(s) in `a` and/or `b` does not\\n        equal 2 or 3.\\n\\n    See Also\\n    --------\\n    inner : Inner product\\n    outer : Outer product.\\n    linalg.cross : An Array API compatible variation of ``np.cross``,\\n                   which accepts (arrays of) 3-element vectors only.\\n    ix_ : Construct index arrays.\\n\\n    Notes\\n    -----\\n    Supports full broadcasting of the inputs.\\n\\n    Dimension-2 input arrays were deprecated in 2.0.0. If you do need this\\n    functionality, you can use::\\n\\n        def cross2d(x, y):\\n            return x[..., 0] * y[..., 1] - x[..., 1] * y[..., 0]\\n\\n    Examples\\n    --------\\n    Vector cross-product.\\n\\n    >>> import numpy as np\\n    >>> x = [1, 2, 3]\\n    >>> y = [4, 5, 6]\\n    >>> np.cross(x, y)\\n    array([-3,  6, -3])\\n\\n    One vector with dimension 2.\\n\\n    >>> x = [1, 2]\\n    >>> y = [4, 5, 6]\\n    >>> np.cross(x, y)\\n    array([12, -6, -3])\\n\\n    Equivalently:\\n\\n    >>> x = [1, 2, 0]\\n    >>> y = [4, 5, 6]\\n    >>> np.cross(x, y)\\n    array([12, -6, -3])\\n\\n    Both vectors with dimension 2.\\n\\n    >>> x = [1,2]\\n    >>> y = [4,5]\\n    >>> np.cross(x, y)\\n    array(-3)\\n\\n    Multiple vector cross-products. Note that the direction of the cross\\n    product vector is defined by the *right-hand rule*.\\n\\n    >>> x = np.array([[1,2,3], [4,5,6]])\\n    >>> y = np.array([[4,5,6], [1,2,3]])\\n    >>> np.cross(x, y)\\n    array([[-3,  6, -3],\\n           [ 3, -6,  3]])\\n\\n    The orientation of `c` can be changed using the `axisc` keyword.\\n\\n    >>> np.cross(x, y, axisc=0)\\n    array([[-3,  3],\\n           [ 6, -6],\\n           [-3,  3]])\\n\\n    Change the vector definition of `x` and `y` using `axisa` and `axisb`.\\n\\n    >>> x = np.array([[1,2,3], [4,5,6], [7, 8, 9]])\\n    >>> y = np.array([[7, 8, 9], [4,5,6], [1,2,3]])\\n    >>> np.cross(x, y)\\n    array([[ -6,  12,  -6],\\n           [  0,   0,   0],\\n           [  6, -12,   6]])\\n    >>> np.cross(x, y, axisa=0, axisb=0)\\n    array([[-24,  48, -24],\\n           [-30,  60, -30],\\n           [-36,  72, -36]])\\n\\n    \\\"\\\"\\\"\\n    if axis is not None:\\n        axisa, axisb, axisc = (axis,) * 3\\n    a = asarray(a)\\n    b = asarray(b)\\n\\n    if (a.ndim < 1) or (b.ndim < 1):\\n        raise ValueError(\\\"At least one array has zero dimension\\\")\\n\\n    # Check axisa and axisb are within bounds\\n    axisa = normalize_axis_index(axisa, a.ndim, msg_prefix='axisa')\\n    axisb = normalize_axis_index(axisb, b.ndim, msg_prefix='axisb')\\n\\n    # Move working axis to the end of the shape\\n    a = moveaxis(a, axisa, -1)\\n    b = moveaxis(b, axisb, -1)\\n    msg = (\\\"incompatible dimensions for cross product\\\\n\\\"\\n           \\\"(dimension must be 2 or 3)\\\")\\n    if a.shape[-1] not in (2, 3) or b.shape[-1] not in (2, 3):\\n        raise ValueError(msg)\\n    if a.shape[-1] == 2 or b.shape[-1] == 2:\\n        # Deprecated in NumPy 2.0, 2023-09-26\\n        warnings.warn(\\n            \\\"Arrays of 2-dimensional vectors are deprecated. Use arrays of \\\"\\n            \\\"3-dimensional vectors instead. (deprecated in NumPy 2.0)\\\",\\n            DeprecationWarning, stacklevel=2\\n        )\\n\\n    # Create the output array\\n    shape = broadcast(a[..., 0], b[..., 0]).shape\\n    if a.shape[-1] == 3 or b.shape[-1] == 3:\\n        shape += (3,)\\n        # Check axisc is within bounds\\n        axisc = normalize_axis_index(axisc, len(shape), msg_prefix='axisc')\\n    dtype = promote_types(a.dtype, b.dtype)\\n    cp = empty(shape, dtype)\\n\\n    # recast arrays as dtype\\n    a = a.astype(dtype)\\n    b = b.astype(dtype)\\n\\n    # create local aliases for readability\\n    a0 = a[..., 0]\\n    a1 = a[..., 1]\\n    if a.shape[-1] == 3:\\n        a2 = a[..., 2]\\n    b0 = b[..., 0]\\n    b1 = b[..., 1]\\n    if b.shape[-1] == 3:\\n        b2 = b[..., 2]\\n    if cp.ndim != 0 and cp.shape[-1] == 3:\\n        cp0 = cp[..., 0]\\n        cp1 = cp[..., 1]\\n        cp2 = cp[..., 2]\\n\\n    if a.shape[-1] == 2:\\n        if b.shape[-1] == 2:\\n            # a0 * b1 - a1 * b0\\n            multiply(a0, b1, out=cp)\\n            cp -= a1 * b0\\n            return cp\\n        else:\\n            assert b.shape[-1] == 3\\n            # cp0 = a1 * b2 - 0  (a2 = 0)\\n            # cp1 = 0 - a0 * b2  (a2 = 0)\\n            # cp2 = a0 * b1 - a1 * b0\\n            multiply(a1, b2, out=cp0)\\n            multiply(a0, b2, out=cp1)\\n            negative(cp1, out=cp1)\\n            multiply(a0, b1, out=cp2)\\n            cp2 -= a1 * b0\\n    else:\\n        assert a.shape[-1] == 3\\n        if b.shape[-1] == 3:\\n            # cp0 = a1 * b2 - a2 * b1\\n            # cp1 = a2 * b0 - a0 * b2\\n            # cp2 = a0 * b1 - a1 * b0\\n            multiply(a1, b2, out=cp0)\\n            tmp = np.multiply(a2, b1, out=...)\\n            cp0 -= tmp\\n            multiply(a2, b0, out=cp1)\\n            multiply(a0, b2, out=tmp)\\n            cp1 -= tmp\\n            multiply(a0, b1, out=cp2)\\n            multiply(a1, b0, out=tmp)\\n            cp2 -= tmp\\n        else:\\n            assert b.shape[-1] == 2\\n            # cp0 = 0 - a2 * b1  (b2 = 0)\\n            # cp1 = a2 * b0 - 0  (b2 = 0)\\n            # cp2 = a0 * b1 - a1 * b0\\n            multiply(a2, b1, out=cp0)\\n            negative(cp0, out=cp0)\\n            multiply(a2, b0, out=cp1)\\n            multiply(a0, b1, out=cp2)\\n            cp2 -= a1 * b0\\n\\n    return moveaxis(cp, -1, axisc)\\n\\n\\nlittle_endian = (sys.byteorder == 'little')\\n\\n\\n@set_module('numpy')\\ndef indices(dimensions, dtype=int, sparse=False):\\n    \\\"\\\"\\\"\\n    Return an array representing the indices of a grid.\\n\\n    Compute an array where the subarrays contain index values 0, 1, ...\\n    varying only along the corresponding axis.\\n\\n    Parameters\\n    ----------\\n    dimensions : sequence of ints\\n        The shape of the grid.\\n    dtype : dtype, optional\\n        Data type of the result.\\n    sparse : boolean, optional\\n        Return a sparse representation of the grid instead of a dense\\n        representation. Default is False.\\n\\n    Returns\\n    -------\\n    grid : one ndarray or tuple of ndarrays\\n        If sparse is False:\\n            Returns one array of grid indices,\\n            ``grid.shape = (len(dimensions),) + tuple(dimensions)``.\\n        If sparse is True:\\n            Returns a tuple of arrays, with\\n            ``grid[i].shape = (1, ..., 1, dimensions[i], 1, ..., 1)`` with\\n            dimensions[i] in the ith place\\n\\n    See Also\\n    --------\\n    mgrid, ogrid, meshgrid\\n\\n    Notes\\n    -----\\n    The output shape in the dense case is obtained by prepending the number\\n    of dimensions in front of the tuple of dimensions, i.e. if `dimensions`\\n    is a tuple ``(r0, ..., rN-1)`` of length ``N``, the output shape is\\n    ``(N, r0, ..., rN-1)``.\\n\\n    The subarrays ``grid[k]`` contains the N-D array of indices along the\\n    ``k-th`` axis. Explicitly::\\n\\n        grid[k, i0, i1, ..., iN-1] = ik\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> grid = np.indices((2, 3))\\n    >>> grid.shape\\n    (2, 2, 3)\\n    >>> grid[0]        # row indices\\n    array([[0, 0, 0],\\n           [1, 1, 1]])\\n    >>> grid[1]        # column indices\\n    array([[0, 1, 2],\\n           [0, 1, 2]])\\n\\n    The indices can be used as an index into an array.\\n\\n    >>> x = np.arange(20).reshape(5, 4)\\n    >>> row, col = np.indices((2, 3))\\n    >>> x[row, col]\\n    array([[0, 1, 2],\\n           [4, 5, 6]])\\n\\n    Note that it would be more straightforward in the above example to\\n    extract the required elements directly with ``x[:2, :3]``.\\n\\n    If sparse is set to true, the grid will be returned in a sparse\\n    representation.\\n\\n    >>> i, j = np.indices((2, 3), sparse=True)\\n    >>> i.shape\\n    (2, 1)\\n    >>> j.shape\\n    (1, 3)\\n    >>> i        # row indices\\n    array([[0],\\n           [1]])\\n    >>> j        # column indices\\n    array([[0, 1, 2]])\\n\\n    \\\"\\\"\\\"\\n    dimensions = tuple(dimensions)\\n    N = len(dimensions)\\n    shape = (1,) * N\\n    if sparse:\\n        res = ()\\n    else:\\n        res = empty((N,) + dimensions, dtype=dtype)\\n    for i, dim in enumerate(dimensions):\\n        idx = arange(dim, dtype=dtype).reshape(\\n            shape[:i] + (dim,) + shape[i + 1:]\\n        )\\n        if sparse:\\n            res = res + (idx,)\\n        else:\\n            res[i] = idx\\n    return res\\n\\n\\n@finalize_array_function_like\\n@set_module('numpy')\\ndef fromfunction(function, shape, *, dtype=float, like=None, **kwargs):\\n    \\\"\\\"\\\"\\n    Construct an array by executing a function over each coordinate.\\n\\n    The resulting array therefore has a value ``fn(x, y, z)`` at\\n    coordinate ``(x, y, z)``.\\n\\n    Parameters\\n    ----------\\n    function : callable\\n        The function is called with N parameters, where N is the rank of\\n        `shape`.  Each parameter represents the coordinates of the array\\n        varying along a specific axis.  For example, if `shape`\\n        were ``(2, 2)``, then the parameters would be\\n        ``array([[0, 0], [1, 1]])`` and ``array([[0, 1], [0, 1]])``\\n    shape : (N,) tuple of ints\\n        Shape of the output array, which also determines the shape of\\n        the coordinate arrays passed to `function`.\\n    dtype : data-type, optional\\n        Data-type of the coordinate arrays passed to `function`.\\n        By default, `dtype` is float.\\n    ${ARRAY_FUNCTION_LIKE}\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    fromfunction : any\\n        The result of the call to `function` is passed back directly.\\n        Therefore the shape of `fromfunction` is completely determined by\\n        `function`.  If `function` returns a scalar value, the shape of\\n        `fromfunction` would not match the `shape` parameter.\\n\\n    See Also\\n    --------\\n    indices, meshgrid\\n\\n    Notes\\n    -----\\n    Keywords other than `dtype` and `like` are passed to `function`.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.fromfunction(lambda i, j: i, (2, 2), dtype=float)\\n    array([[0., 0.],\\n           [1., 1.]])\\n\\n    >>> np.fromfunction(lambda i, j: j, (2, 2), dtype=float)\\n    array([[0., 1.],\\n           [0., 1.]])\\n\\n    >>> np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)\\n    array([[ True, False, False],\\n           [False,  True, False],\\n           [False, False,  True]])\\n\\n    >>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)\\n    array([[0, 1, 2],\\n           [1, 2, 3],\\n           [2, 3, 4]])\\n\\n    \\\"\\\"\\\"\\n    if like is not None:\\n        return _fromfunction_with_like(\\n                like, function, shape, dtype=dtype, **kwargs)\\n\\n    args = indices(shape, dtype=dtype)\\n    return function(*args, **kwargs)\\n\\n\\n_fromfunction_with_like = array_function_dispatch()(fromfunction)\\n\\n\\ndef _frombuffer(buf, dtype, shape, order, axis_order=None):\\n    array = frombuffer(buf, dtype=dtype)\\n    if order == 'K' and axis_order is not None:\\n        return array.reshape(shape, order='C').transpose(axis_order)\\n    return array.reshape(shape, order=order)\\n\\n\\n@set_module('numpy')\\ndef isscalar(element):\\n    \\\"\\\"\\\"\\n    Returns True if the type of `element` is a scalar type.\\n\\n    Parameters\\n    ----------\\n    element : any\\n        Input argument, can be of any type and shape.\\n\\n    Returns\\n    -------\\n    val : bool\\n        True if `element` is a scalar type, False if it is not.\\n\\n    See Also\\n    --------\\n    ndim : Get the number of dimensions of an array\\n\\n    Notes\\n    -----\\n    If you need a stricter way to identify a *numerical* scalar, use\\n    ``isinstance(x, numbers.Number)``, as that returns ``False`` for most\\n    non-numerical elements such as strings.\\n\\n    In most cases ``np.ndim(x) == 0`` should be used instead of this function,\\n    as that will also return true for 0d arrays. This is how numpy overloads\\n    functions in the style of the ``dx`` arguments to `gradient` and\\n    the ``bins`` argument to `histogram`. Some key differences:\\n\\n    +------------------------------------+---------------+-------------------+\\n    | x                                  |``isscalar(x)``|``np.ndim(x) == 0``|\\n    +====================================+===============+===================+\\n    | PEP 3141 numeric objects           | ``True``      | ``True``          |\\n    | (including builtins)               |               |                   |\\n    +------------------------------------+---------------+-------------------+\\n    | builtin string and buffer objects  | ``True``      | ``True``          |\\n    +------------------------------------+---------------+-------------------+\\n    | other builtin objects, like        | ``False``     | ``True``          |\\n    | `pathlib.Path`, `Exception`,       |               |                   |\\n    | the result of `re.compile`         |               |                   |\\n    +------------------------------------+---------------+-------------------+\\n    | third-party objects like           | ``False``     | ``True``          |\\n    | `matplotlib.figure.Figure`         |               |                   |\\n    +------------------------------------+---------------+-------------------+\\n    | zero-dimensional numpy arrays      | ``False``     | ``True``          |\\n    +------------------------------------+---------------+-------------------+\\n    | other numpy arrays                 | ``False``     | ``False``         |\\n    +------------------------------------+---------------+-------------------+\\n    | `list`, `tuple`, and other         | ``False``     | ``False``         |\\n    | sequence objects                   |               |                   |\\n    +------------------------------------+---------------+-------------------+\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n\\n    >>> np.isscalar(3.1)\\n    True\\n\\n    >>> np.isscalar(np.array(3.1))\\n    False\\n\\n    >>> np.isscalar([3.1])\\n    False\\n\\n    >>> np.isscalar(False)\\n    True\\n\\n    >>> np.isscalar('numpy')\\n    True\\n\\n    NumPy supports PEP 3141 numbers:\\n\\n    >>> from fractions import Fraction\\n    >>> np.isscalar(Fraction(5, 17))\\n    True\\n    >>> from numbers import Number\\n    >>> np.isscalar(Number())\\n    True\\n\\n    \\\"\\\"\\\"\\n    return (isinstance(element, generic)\\n            or type(element) in ScalarType\\n            or isinstance(element, numbers.Number))\\n\\n\\n@set_module('numpy')\\ndef binary_repr(num, width=None):\\n    \\\"\\\"\\\"\\n    Return the binary representation of the input number as a string.\\n\\n    For negative numbers, if width is not given, a minus sign is added to the\\n    front. If width is given, the two's complement of the number is\\n    returned, with respect to that width.\\n\\n    In a two's-complement system negative numbers are represented by the two's\\n    complement of the absolute value. This is the most common method of\\n    representing signed integers on computers [1]_. A N-bit two's-complement\\n    system can represent every integer in the range\\n    :math:`-2^{N-1}` to :math:`+2^{N-1}-1`.\\n\\n    Parameters\\n    ----------\\n    num : int\\n        Only an integer decimal number can be used.\\n    width : int, optional\\n        The length of the returned string if `num` is positive, or the length\\n        of the two's complement if `num` is negative, provided that `width` is\\n        at least a sufficient number of bits for `num` to be represented in\\n        the designated form. If the `width` value is insufficient, an error is\\n        raised.\\n\\n    Returns\\n    -------\\n    bin : str\\n        Binary representation of `num` or two's complement of `num`.\\n\\n    See Also\\n    --------\\n    base_repr: Return a string representation of a number in the given base\\n               system.\\n    bin: Python's built-in binary representation generator of an integer.\\n\\n    Notes\\n    -----\\n    `binary_repr` is equivalent to using `base_repr` with base 2, but about 25x\\n    faster.\\n\\n    References\\n    ----------\\n    .. [1] Wikipedia, \\\"Two's complement\\\",\\n        https://en.wikipedia.org/wiki/Two's_complement\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.binary_repr(3)\\n    '11'\\n    >>> np.binary_repr(-3)\\n    '-11'\\n    >>> np.binary_repr(3, width=4)\\n    '0011'\\n\\n    The two's complement is returned when the input number is negative and\\n    width is specified:\\n\\n    >>> np.binary_repr(-3, width=3)\\n    '101'\\n    >>> np.binary_repr(-3, width=5)\\n    '11101'\\n\\n    \\\"\\\"\\\"\\n    def err_if_insufficient(width, binwidth):\\n        if width is not None and width < binwidth:\\n            raise ValueError(\\n                f\\\"Insufficient bit {width=} provided for {binwidth=}\\\"\\n            )\\n\\n    # Ensure that num is a Python integer to avoid overflow or unwanted\\n    # casts to floating point.\\n    num = operator.index(num)\\n\\n    if num == 0:\\n        return '0' * (width or 1)\\n\\n    elif num > 0:\\n        binary = f'{num:b}'\\n        binwidth = len(binary)\\n        outwidth = (binwidth if width is None\\n                    else builtins.max(binwidth, width))\\n        err_if_insufficient(width, binwidth)\\n        return binary.zfill(outwidth)\\n\\n    elif width is None:\\n        return f'-{-num:b}'\\n\\n    else:\\n        poswidth = len(f'{-num:b}')\\n\\n        # See gh-8679: remove extra digit\\n        # for numbers at boundaries.\\n        if 2**(poswidth - 1) == -num:\\n            poswidth -= 1\\n\\n        twocomp = 2**(poswidth + 1) + num\\n        binary = f'{twocomp:b}'\\n        binwidth = len(binary)\\n\\n        outwidth = builtins.max(binwidth, width)\\n        err_if_insufficient(width, binwidth)\\n        return '1' * (outwidth - binwidth) + binary\\n\\n\\n@set_module('numpy')\\ndef base_repr(number, base=2, padding=0):\\n    \\\"\\\"\\\"\\n    Return a string representation of a number in the given base system.\\n\\n    Parameters\\n    ----------\\n    number : int\\n        The value to convert. Positive and negative values are handled.\\n    base : int, optional\\n        Convert `number` to the `base` number system. The valid range is 2-36,\\n        the default value is 2.\\n    padding : int, optional\\n        Number of zeros padded on the left. Default is 0 (no padding).\\n\\n    Returns\\n    -------\\n    out : str\\n        String representation of `number` in `base` system.\\n\\n    See Also\\n    --------\\n    binary_repr : Faster version of `base_repr` for base 2.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.base_repr(5)\\n    '101'\\n    >>> np.base_repr(6, 5)\\n    '11'\\n    >>> np.base_repr(7, base=5, padding=3)\\n    '00012'\\n\\n    >>> np.base_repr(10, base=16)\\n    'A'\\n    >>> np.base_repr(32, base=16)\\n    '20'\\n\\n    \\\"\\\"\\\"\\n    digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'\\n    if base > len(digits):\\n        raise ValueError(\\\"Bases greater than 36 not handled in base_repr.\\\")\\n    elif base < 2:\\n        raise ValueError(\\\"Bases less than 2 not handled in base_repr.\\\")\\n\\n    num = abs(int(number))\\n    res = []\\n    while num:\\n        res.append(digits[num % base])\\n        num //= base\\n    if padding:\\n        res.append('0' * padding)\\n    if number < 0:\\n        res.append('-')\\n    return ''.join(reversed(res or '0'))\\n\\n\\n# These are all essentially abbreviations\\n# These might wind up in a special abbreviations module\\n\\n\\ndef _maketup(descr, val):\\n    dt = dtype(descr)\\n    # Place val in all scalar tuples:\\n    fields = dt.fields\\n    if fields is None:\\n        return val\\n    else:\\n        res = [_maketup(fields[name][0], val) for name in dt.names]\\n        return tuple(res)\\n\\n\\n@finalize_array_function_like\\n@set_module('numpy')\\ndef identity(n, dtype=None, *, like=None):\\n    \\\"\\\"\\\"\\n    Return the identity array.\\n\\n    The identity array is a square array with ones on\\n    the main diagonal.\\n\\n    Parameters\\n    ----------\\n    n : int\\n        Number of rows (and columns) in `n` x `n` output.\\n    dtype : data-type, optional\\n        Data-type of the output.  Defaults to ``float``.\\n    ${ARRAY_FUNCTION_LIKE}\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        `n` x `n` array with its main diagonal set to one,\\n        and all other elements 0.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.identity(3)\\n    array([[1.,  0.,  0.],\\n           [0.,  1.,  0.],\\n           [0.,  0.,  1.]])\\n\\n    \\\"\\\"\\\"\\n    if like is not None:\\n        return _identity_with_like(like, n, dtype=dtype)\\n\\n    from numpy import eye\\n    return eye(n, dtype=dtype, like=like)\\n\\n\\n_identity_with_like = array_function_dispatch()(identity)\\n\\n\\ndef _allclose_dispatcher(a, b, rtol=None, atol=None, equal_nan=None):\\n    return (a, b, rtol, atol)\\n\\n\\n@array_function_dispatch(_allclose_dispatcher)\\ndef allclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False):\\n    \\\"\\\"\\\"\\n    Returns True if two arrays are element-wise equal within a tolerance.\\n\\n    The tolerance values are positive, typically very small numbers.  The\\n    relative difference (`rtol` * abs(`b`)) and the absolute difference\\n    `atol` are added together to compare against the absolute difference\\n    between `a` and `b`.\\n\\n    .. warning:: The default `atol` is not appropriate for comparing numbers\\n                 with magnitudes much smaller than one (see Notes).\\n\\n    NaNs are treated as equal if they are in the same place and if\\n    ``equal_nan=True``.  Infs are treated as equal if they are in the same\\n    place and of the same sign in both arrays.\\n\\n    Parameters\\n    ----------\\n    a, b : array_like\\n        Input arrays to compare.\\n    rtol : array_like\\n        The relative tolerance parameter (see Notes).\\n    atol : array_like\\n        The absolute tolerance parameter (see Notes).\\n    equal_nan : bool\\n        Whether to compare NaN's as equal.  If True, NaN's in `a` will be\\n        considered equal to NaN's in `b` in the output array.\\n\\n    Returns\\n    -------\\n    allclose : bool\\n        Returns True if the two arrays are equal within the given\\n        tolerance; False otherwise.\\n\\n    See Also\\n    --------\\n    isclose, all, any, equal\\n\\n    Notes\\n    -----\\n    If the following equation is element-wise True, then allclose returns\\n    True.::\\n\\n     absolute(a - b) <= (atol + rtol * absolute(b))\\n\\n    The above equation is not symmetric in `a` and `b`, so that\\n    ``allclose(a, b)`` might be different from ``allclose(b, a)`` in\\n    some rare cases.\\n\\n    The default value of `atol` is not appropriate when the reference value\\n    `b` has magnitude smaller than one. For example, it is unlikely that\\n    ``a = 1e-9`` and ``b = 2e-9`` should be considered \\\"close\\\", yet\\n    ``allclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure\\n    to select `atol` for the use case at hand, especially for defining the\\n    threshold below which a non-zero value in `a` will be considered \\\"close\\\"\\n    to a very small or zero value in `b`.\\n\\n    The comparison of `a` and `b` uses standard broadcasting, which\\n    means that `a` and `b` need not have the same shape in order for\\n    ``allclose(a, b)`` to evaluate to True.  The same is true for\\n    `equal` but not `array_equal`.\\n\\n    `allclose` is not defined for non-numeric data types.\\n    `bool` is considered a numeric data-type for this purpose.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.allclose([1e10,1e-7], [1.00001e10,1e-8])\\n    False\\n\\n    >>> np.allclose([1e10,1e-8], [1.00001e10,1e-9])\\n    True\\n\\n    >>> np.allclose([1e10,1e-8], [1.0001e10,1e-9])\\n    False\\n\\n    >>> np.allclose([1.0, np.nan], [1.0, np.nan])\\n    False\\n\\n    >>> np.allclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)\\n    True\\n\\n\\n    \\\"\\\"\\\"\\n    res = all(isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan))\\n    return builtins.bool(res)\\n\\n\\ndef _isclose_dispatcher(a, b, rtol=None, atol=None, equal_nan=None):\\n    return (a, b, rtol, atol)\\n\\n\\n@array_function_dispatch(_isclose_dispatcher)\\ndef isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False):\\n    \\\"\\\"\\\"\\n    Returns a boolean array where two arrays are element-wise equal within a\\n    tolerance.\\n\\n    The tolerance values are positive, typically very small numbers.  The\\n    relative difference (`rtol` * abs(`b`)) and the absolute difference\\n    `atol` are added together to compare against the absolute difference\\n    between `a` and `b`.\\n\\n    .. warning:: The default `atol` is not appropriate for comparing numbers\\n                 with magnitudes much smaller than one (see Notes).\\n\\n    Parameters\\n    ----------\\n    a, b : array_like\\n        Input arrays to compare.\\n    rtol : array_like\\n        The relative tolerance parameter (see Notes).\\n    atol : array_like\\n        The absolute tolerance parameter (see Notes).\\n    equal_nan : bool\\n        Whether to compare NaN's as equal.  If True, NaN's in `a` will be\\n        considered equal to NaN's in `b` in the output array.\\n\\n    Returns\\n    -------\\n    y : array_like\\n        Returns a boolean array of where `a` and `b` are equal within the\\n        given tolerance. If both `a` and `b` are scalars, returns a single\\n        boolean value.\\n\\n    See Also\\n    --------\\n    allclose\\n    math.isclose\\n\\n    Notes\\n    -----\\n    For finite values, isclose uses the following equation to test whether\\n    two floating point values are equivalent.::\\n\\n     absolute(a - b) <= (atol + rtol * absolute(b))\\n\\n    Unlike the built-in `math.isclose`, the above equation is not symmetric\\n    in `a` and `b` -- it assumes `b` is the reference value -- so that\\n    `isclose(a, b)` might be different from `isclose(b, a)`.\\n\\n    The default value of `atol` is not appropriate when the reference value\\n    `b` has magnitude smaller than one. For example, it is unlikely that\\n    ``a = 1e-9`` and ``b = 2e-9`` should be considered \\\"close\\\", yet\\n    ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure\\n    to select `atol` for the use case at hand, especially for defining the\\n    threshold below which a non-zero value in `a` will be considered \\\"close\\\"\\n    to a very small or zero value in `b`.\\n\\n    `isclose` is not defined for non-numeric data types.\\n    :class:`bool` is considered a numeric data-type for this purpose.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8])\\n    array([ True, False])\\n\\n    >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9])\\n    array([ True, True])\\n\\n    >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9])\\n    array([False,  True])\\n\\n    >>> np.isclose([1.0, np.nan], [1.0, np.nan])\\n    array([ True, False])\\n\\n    >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)\\n    array([ True, True])\\n\\n    >>> np.isclose([1e-8, 1e-7], [0.0, 0.0])\\n    array([ True, False])\\n\\n    >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0)\\n    array([False, False])\\n\\n    >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0])\\n    array([ True,  True])\\n\\n    >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0)\\n    array([False,  True])\\n\\n    \\\"\\\"\\\"\\n    # Turn all but python scalars into arrays.\\n    x, y, atol, rtol = (\\n        a if isinstance(a, (int, float, complex)) else asanyarray(a)\\n        for a in (a, b, atol, rtol))\\n\\n    # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT).\\n    # This will cause casting of x later. Also, make sure to allow subclasses\\n    # (e.g., for numpy.ma).\\n    # NOTE: We explicitly allow timedelta, which used to work. This could\\n    #       possibly be deprecated. See also gh-18286.\\n    #       timedelta works if `atol` is an integer or also a timedelta.\\n    #       Although, the default tolerances are unlikely to be useful\\n    if (dtype := getattr(y, \\\"dtype\\\", None)) is not None and dtype.kind != \\\"m\\\":\\n        dt = multiarray.result_type(y, 1.)\\n        y = asanyarray(y, dtype=dt)\\n    elif isinstance(y, int):\\n        y = float(y)\\n\\n    # atol and rtol can be arrays\\n    if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))):\\n        err_s = np.geterr()[\\\"invalid\\\"]\\n        err_msg = f\\\"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}\\\"\\n\\n        if err_s == \\\"warn\\\":\\n            warnings.warn(err_msg, RuntimeWarning, stacklevel=2)\\n        elif err_s == \\\"raise\\\":\\n            raise FloatingPointError(err_msg)\\n        elif err_s == \\\"print\\\":\\n            print(err_msg)\\n\\n    with errstate(invalid='ignore'):\\n\\n        result = (less_equal(abs(x - y), atol + rtol * abs(y))\\n                  & isfinite(y)\\n                  | (x == y))\\n        if equal_nan:\\n            result |= isnan(x) & isnan(y)\\n\\n    return result[()]  # Flatten 0d arrays to scalars\\n\\n\\ndef _array_equal_dispatcher(a1, a2, equal_nan=None):\\n    return (a1, a2)\\n\\n\\n_no_nan_types = {\\n    # should use np.dtype.BoolDType, but as of writing\\n    # that fails the reloading test.\\n    type(dtype(nt.bool)),\\n    type(dtype(nt.int8)),\\n    type(dtype(nt.int16)),\\n    type(dtype(nt.int32)),\\n    type(dtype(nt.int64)),\\n}\\n\\n\\ndef _dtype_cannot_hold_nan(dtype):\\n    return type(dtype) in _no_nan_types\\n\\n\\n@array_function_dispatch(_array_equal_dispatcher)\\ndef array_equal(a1, a2, equal_nan=False):\\n    \\\"\\\"\\\"\\n    True if two arrays have the same shape and elements, False otherwise.\\n\\n    Parameters\\n    ----------\\n    a1, a2 : array_like\\n        Input arrays.\\n    equal_nan : bool\\n        Whether to compare NaN's as equal. If the dtype of a1 and a2 is\\n        complex, values will be considered equal if either the real or the\\n        imaginary component of a given value is ``nan``.\\n\\n    Returns\\n    -------\\n    b : bool\\n        Returns True if the arrays are equal.\\n\\n    See Also\\n    --------\\n    allclose: Returns True if two arrays are element-wise equal within a\\n              tolerance.\\n    array_equiv: Returns True if input arrays are shape consistent and all\\n                 elements equal.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n\\n    >>> np.array_equal([1, 2], [1, 2])\\n    True\\n\\n    >>> np.array_equal(np.array([1, 2]), np.array([1, 2]))\\n    True\\n\\n    >>> np.array_equal([1, 2], [1, 2, 3])\\n    False\\n\\n    >>> np.array_equal([1, 2], [1, 4])\\n    False\\n\\n    >>> a = np.array([1, np.nan])\\n    >>> np.array_equal(a, a)\\n    False\\n\\n    >>> np.array_equal(a, a, equal_nan=True)\\n    True\\n\\n    When ``equal_nan`` is True, complex values with nan components are\\n    considered equal if either the real *or* the imaginary components are nan.\\n\\n    >>> a = np.array([1 + 1j])\\n    >>> b = a.copy()\\n    >>> a.real = np.nan\\n    >>> b.imag = np.nan\\n    >>> np.array_equal(a, b, equal_nan=True)\\n    True\\n    \\\"\\\"\\\"\\n    try:\\n        a1, a2 = asarray(a1), asarray(a2)\\n    except Exception:\\n        return False\\n    if a1.shape != a2.shape:\\n        return False\\n    if not equal_nan:\\n        return builtins.bool((asanyarray(a1 == a2)).all())\\n\\n    if a1 is a2:\\n        # nan will compare equal so an array will compare equal to itself.\\n        return True\\n\\n    cannot_have_nan = (_dtype_cannot_hold_nan(a1.dtype)\\n                       and _dtype_cannot_hold_nan(a2.dtype))\\n    if cannot_have_nan:\\n        return builtins.bool(asarray(a1 == a2).all())\\n\\n    # Handling NaN values if equal_nan is True\\n    a1nan, a2nan = isnan(a1), isnan(a2)\\n    # NaN's occur at different locations\\n    if not (a1nan == a2nan).all():\\n        return False\\n    # Shapes of a1, a2 and masks are guaranteed to be consistent by this point\\n    return builtins.bool((a1[~a1nan] == a2[~a1nan]).all())\\n\\n\\ndef _array_equiv_dispatcher(a1, a2):\\n    return (a1, a2)\\n\\n\\n@array_function_dispatch(_array_equiv_dispatcher)\\ndef array_equiv(a1, a2):\\n    \\\"\\\"\\\"\\n    Returns True if input arrays are shape consistent and all elements equal.\\n\\n    Shape consistent means they are either the same shape, or one input array\\n    can be broadcasted to create the same shape as the other one.\\n\\n    Parameters\\n    ----------\\n    a1, a2 : array_like\\n        Input arrays.\\n\\n    Returns\\n    -------\\n    out : bool\\n        True if equivalent, False otherwise.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.array_equiv([1, 2], [1, 2])\\n    True\\n    >>> np.array_equiv([1, 2], [1, 3])\\n    False\\n\\n    Showing the shape equivalence:\\n\\n    >>> np.array_equiv([1, 2], [[1, 2], [1, 2]])\\n    True\\n    >>> np.array_equiv([1, 2], [[1, 2, 1, 2], [1, 2, 1, 2]])\\n    False\\n\\n    >>> np.array_equiv([1, 2], [[1, 2], [1, 3]])\\n    False\\n\\n    \\\"\\\"\\\"\\n    try:\\n        a1, a2 = asarray(a1), asarray(a2)\\n    except Exception:\\n        return False\\n    try:\\n        multiarray.broadcast(a1, a2)\\n    except Exception:\\n        return False\\n\\n    return builtins.bool(asanyarray(a1 == a2).all())\\n\\n\\ndef _astype_dispatcher(x, dtype, /, *, copy=None, device=None):\\n    return (x, dtype)\\n\\n\\n@array_function_dispatch(_astype_dispatcher)\\ndef astype(x, dtype, /, *, copy=True, device=None):\\n    \\\"\\\"\\\"\\n    Copies an array to a specified data type.\\n\\n    This function is an Array API compatible alternative to\\n    `numpy.ndarray.astype`.\\n\\n    Parameters\\n    ----------\\n    x : ndarray\\n        Input NumPy array to cast. ``array_likes`` are explicitly not\\n        supported here.\\n    dtype : dtype\\n        Data type of the result.\\n    copy : bool, optional\\n        Specifies whether to copy an array when the specified dtype matches\\n        the data type of the input array ``x``. If ``True``, a newly allocated\\n        array must always be returned. If ``False`` and the specified dtype\\n        matches the data type of the input array, the input array must be\\n        returned; otherwise, a newly allocated array must be returned.\\n        Defaults to ``True``.\\n    device : str, optional\\n        The device on which to place the returned array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.1.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        An array having the specified data type.\\n\\n    See Also\\n    --------\\n    ndarray.astype\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> arr = np.array([1, 2, 3]); arr\\n    array([1, 2, 3])\\n    >>> np.astype(arr, np.float64)\\n    array([1., 2., 3.])\\n\\n    Non-copy case:\\n\\n    >>> arr = np.array([1, 2, 3])\\n    >>> arr_noncpy = np.astype(arr, arr.dtype, copy=False)\\n    >>> np.shares_memory(arr, arr_noncpy)\\n    True\\n\\n    \\\"\\\"\\\"\\n    if not (isinstance(x, np.ndarray) or isscalar(x)):\\n        raise TypeError(\\n            \\\"Input should be a NumPy array or scalar. \\\"\\n            f\\\"It is a {type(x)} instead.\\\"\\n        )\\n    if device is not None and device != \\\"cpu\\\":\\n        raise ValueError(\\n            'Device not understood. Only \\\"cpu\\\" is allowed, but received:'\\n            f' {device}'\\n        )\\n    return x.astype(dtype, copy=copy)\\n\\n\\ninf = PINF\\nnan = NAN\\nFalse_ = nt.bool(False)\\nTrue_ = nt.bool(True)\\n\\n\\ndef extend_all(module):\\n    existing = set(__all__)\\n    mall = module.__all__\\n    for a in mall:\\n        if a not in existing:\\n            __all__.append(a)\\n\\n\\nfrom . import _asarray, _ufunc_config, arrayprint, fromnumeric\\nfrom ._asarray import *\\nfrom ._ufunc_config import *\\nfrom .arrayprint import *\\nfrom .fromnumeric import *\\nfrom .numerictypes import *\\nfrom .umath import *\\n\\nextend_all(fromnumeric)\\nextend_all(umath)\\nextend_all(numerictypes)\\nextend_all(arrayprint)\\nextend_all(_asarray)\\nextend_all(_ufunc_config)\\n\", 2758], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py\": [\"\\\"\\\"\\\"\\nCreate the numpy._core.multiarray namespace for backward compatibility.\\nIn v1.16 the multiarray and umath c-extension modules were merged into\\na single _multiarray_umath extension module. So we replicate the old\\nnamespace by importing from the extension module.\\n\\n\\\"\\\"\\\"\\n\\nimport functools\\n\\nfrom . import _multiarray_umath, overrides\\nfrom ._multiarray_umath import *  # noqa: F403\\n\\n# These imports are needed for backward compatibility,\\n# do not change them. issue gh-15518\\n# _get_ndarray_c_version is semi-public, on purpose not added to __all__\\nfrom ._multiarray_umath import (  # noqa: F401\\n    _ARRAY_API,\\n    _flagdict,\\n    _get_madvise_hugepage,\\n    _get_ndarray_c_version,\\n    _monotonicity,\\n    _place,\\n    _reconstruct,\\n    _set_madvise_hugepage,\\n    _vec_string,\\n    from_dlpack,\\n)\\n\\n__all__ = [\\n    '_ARRAY_API', 'ALLOW_THREADS', 'BUFSIZE', 'CLIP', 'DATETIMEUNITS',\\n    'ITEM_HASOBJECT', 'ITEM_IS_POINTER', 'LIST_PICKLE', 'MAXDIMS',\\n    'MAY_SHARE_BOUNDS', 'MAY_SHARE_EXACT', 'NEEDS_INIT', 'NEEDS_PYAPI',\\n    'RAISE', 'USE_GETITEM', 'USE_SETITEM', 'WRAP',\\n    '_flagdict', 'from_dlpack', '_place', '_reconstruct', '_vec_string',\\n    '_monotonicity', 'add_docstring', 'arange', 'array', 'asarray',\\n    'asanyarray', 'ascontiguousarray', 'asfortranarray', 'bincount',\\n    'broadcast', 'busday_count', 'busday_offset', 'busdaycalendar', 'can_cast',\\n    'compare_chararrays', 'concatenate', 'copyto', 'correlate', 'correlate2',\\n    'count_nonzero', 'c_einsum', 'datetime_as_string', 'datetime_data',\\n    'dot', 'dragon4_positional', 'dragon4_scientific', 'dtype',\\n    'empty', 'empty_like', 'error', 'flagsobj', 'flatiter', 'format_longfloat',\\n    'frombuffer', 'fromfile', 'fromiter', 'fromstring',\\n    'get_handler_name', 'get_handler_version', 'inner', 'interp',\\n    'interp_complex', 'is_busday', 'lexsort', 'matmul', 'vecdot',\\n    'may_share_memory', 'min_scalar_type', 'ndarray', 'nditer', 'nested_iters',\\n    'normalize_axis_index', 'packbits', 'promote_types', 'putmask',\\n    'ravel_multi_index', 'result_type', 'scalar', 'set_datetimeparse_function',\\n    'set_typeDict', 'shares_memory', 'typeinfo',\\n    'unpackbits', 'unravel_index', 'vdot', 'where', 'zeros']\\n\\n# For backward compatibility, make sure pickle imports\\n# these functions from here\\n_reconstruct.__module__ = 'numpy._core.multiarray'\\nscalar.__module__ = 'numpy._core.multiarray'\\n\\n\\nfrom_dlpack.__module__ = 'numpy'\\narange.__module__ = 'numpy'\\narray.__module__ = 'numpy'\\nasarray.__module__ = 'numpy'\\nasanyarray.__module__ = 'numpy'\\nascontiguousarray.__module__ = 'numpy'\\nasfortranarray.__module__ = 'numpy'\\ndatetime_data.__module__ = 'numpy'\\nempty.__module__ = 'numpy'\\nfrombuffer.__module__ = 'numpy'\\nfromfile.__module__ = 'numpy'\\nfromiter.__module__ = 'numpy'\\nfrompyfunc.__module__ = 'numpy'\\nfromstring.__module__ = 'numpy'\\nmay_share_memory.__module__ = 'numpy'\\nnested_iters.__module__ = 'numpy'\\npromote_types.__module__ = 'numpy'\\nzeros.__module__ = 'numpy'\\nnormalize_axis_index.__module__ = 'numpy.lib.array_utils'\\nadd_docstring.__module__ = 'numpy.lib'\\ncompare_chararrays.__module__ = 'numpy.char'\\n\\n\\ndef _override___module__():\\n    namespace_names = globals()\\n    for ufunc_name in [\\n        'absolute', 'arccos', 'arccosh', 'add', 'arcsin', 'arcsinh', 'arctan',\\n        'arctan2', 'arctanh', 'bitwise_and', 'bitwise_count', 'invert',\\n        'left_shift', 'bitwise_or', 'right_shift', 'bitwise_xor', 'cbrt',\\n        'ceil', 'conjugate', 'copysign', 'cos', 'cosh', 'deg2rad', 'degrees',\\n        'divide', 'divmod', 'equal', 'exp', 'exp2', 'expm1', 'fabs',\\n        'float_power', 'floor', 'floor_divide', 'fmax', 'fmin', 'fmod',\\n        'frexp', 'gcd', 'greater', 'greater_equal', 'heaviside', 'hypot',\\n        'isfinite', 'isinf', 'isnan', 'isnat', 'lcm', 'ldexp', 'less',\\n        'less_equal', 'log', 'log10', 'log1p', 'log2', 'logaddexp',\\n        'logaddexp2', 'logical_and', 'logical_not', 'logical_or',\\n        'logical_xor', 'matmul', 'matvec', 'maximum', 'minimum', 'remainder',\\n        'modf', 'multiply', 'negative', 'nextafter', 'not_equal', 'positive',\\n        'power', 'rad2deg', 'radians', 'reciprocal', 'rint', 'sign', 'signbit',\\n        'sin', 'sinh', 'spacing', 'sqrt', 'square', 'subtract', 'tan', 'tanh',\\n        'trunc', 'vecdot', 'vecmat',\\n    ]:\\n        ufunc = namespace_names[ufunc_name]\\n        ufunc.__module__ = \\\"numpy\\\"\\n        ufunc.__qualname__ = ufunc_name\\n\\n\\n_override___module__()\\n\\n\\n# We can't verify dispatcher signatures because NumPy's C functions don't\\n# support introspection.\\narray_function_from_c_func_and_dispatcher = functools.partial(\\n    overrides.array_function_from_dispatcher,\\n    module='numpy', docs_from_dispatcher=True, verify=False)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.empty_like)\\ndef empty_like(\\n    prototype, dtype=None, order=\\\"K\\\", subok=True, shape=None, *, device=None\\n):\\n    \\\"\\\"\\\"\\n    empty_like(\\n        prototype,\\n        /,\\n        dtype=None,\\n        order='K',\\n        subok=True,\\n        shape=None,\\n        *,\\n        device=None,\\n    )\\n    --\\n\\n    Return a new array with the same shape and type as a given array.\\n\\n    Parameters\\n    ----------\\n    prototype : array_like\\n        The shape and data-type of `prototype` define these same attributes\\n        of the returned array.\\n    dtype : data-type, optional\\n        Overrides the data type of the result.\\n    order : {'C', 'F', 'A', or 'K'}, optional\\n        Overrides the memory layout of the result. 'C' means C-order,\\n        'F' means F-order, 'A' means 'F' if `prototype` is Fortran\\n        contiguous, 'C' otherwise. 'K' means match the layout of `prototype`\\n        as closely as possible.\\n    subok : bool, optional.\\n        If True, then the newly created array will use the sub-class\\n        type of `prototype`, otherwise it will be a base-class array. Defaults\\n        to True.\\n    shape : int or sequence of ints, optional.\\n        Overrides the shape of the result. If order='K' and the number of\\n        dimensions is unchanged, will try to keep order, otherwise,\\n        order='C' is implied.\\n    device : str, optional\\n        The device on which to place the created array. Default: None.\\n        For Array-API interoperability only, so must be ``\\\"cpu\\\"`` if passed.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        Array of uninitialized (arbitrary) data with the same\\n        shape and type as `prototype`.\\n\\n    See Also\\n    --------\\n    ones_like : Return an array of ones with shape and type of input.\\n    zeros_like : Return an array of zeros with shape and type of input.\\n    full_like : Return a new array with shape of input filled with value.\\n    empty : Return a new uninitialized array.\\n\\n    Notes\\n    -----\\n    Unlike other array creation functions (e.g. `zeros_like`, `ones_like`,\\n    `full_like`), `empty_like` does not initialize the values of the array,\\n    and may therefore be marginally faster. However, the values stored in the\\n    newly allocated array are arbitrary. For reproducible behavior, be sure\\n    to set each element of the array before reading.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = ([1,2,3], [4,5,6])                         # a is array-like\\n    >>> np.empty_like(a)\\n    array([[-1073741821, -1073741821,           3],    # uninitialized\\n           [          0,           0, -1073741821]])\\n    >>> a = np.array([[1., 2., 3.],[4.,5.,6.]])\\n    >>> np.empty_like(a)\\n    array([[ -2.00000715e+000,   1.48219694e-323,  -2.00000572e+000], # uninitialized\\n           [  4.38791518e-305,  -2.00000715e+000,   4.17269252e-309]])\\n\\n    \\\"\\\"\\\"\\n    return (prototype,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.concatenate)\\ndef concatenate(arrays, axis=0, out=None, *, dtype=None, casting=\\\"same_kind\\\"):\\n    \\\"\\\"\\\"\\n    concatenate(\\n        arrays,\\n        /,\\n        axis=0,\\n        out=None,\\n        *,\\n        dtype=None,\\n        casting=\\\"same_kind\\\",\\n    )\\n    --\\n\\n    Join a sequence of arrays along an existing axis.\\n\\n    Parameters\\n    ----------\\n    a1, a2, ... : sequence of array_like\\n        The arrays must have the same shape, except in the dimension\\n        corresponding to `axis` (the first, by default).\\n    axis : int, optional\\n        The axis along which the arrays will be joined.  If axis is None,\\n        arrays are flattened before use.  Default is 0.\\n    out : ndarray, optional\\n        If provided, the destination to place the result. The shape must be\\n        correct, matching that of what concatenate would have returned if no\\n        out argument were specified.\\n    dtype : str or dtype\\n        If provided, the destination array will have this dtype. Cannot be\\n        provided together with `out`.\\n\\n        .. versionadded:: 1.20.0\\n\\n    casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional\\n        Controls what kind of data casting may occur. Defaults to 'same_kind'.\\n        For a description of the options, please see :term:`casting`.\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    res : ndarray\\n        The concatenated array.\\n\\n    See Also\\n    --------\\n    ma.concatenate : Concatenate function that preserves input masks.\\n    array_split : Split an array into multiple sub-arrays of equal or\\n                  near-equal size.\\n    split : Split array into a list of multiple sub-arrays of equal size.\\n    hsplit : Split array into multiple sub-arrays horizontally (column wise).\\n    vsplit : Split array into multiple sub-arrays vertically (row wise).\\n    dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).\\n    stack : Stack a sequence of arrays along a new axis.\\n    block : Assemble arrays from blocks.\\n    hstack : Stack arrays in sequence horizontally (column wise).\\n    vstack : Stack arrays in sequence vertically (row wise).\\n    dstack : Stack arrays in sequence depth wise (along third dimension).\\n    column_stack : Stack 1-D arrays as columns into a 2-D array.\\n\\n    Notes\\n    -----\\n    When one or more of the arrays to be concatenated is a MaskedArray,\\n    this function will return a MaskedArray object instead of an ndarray,\\n    but the input masks are *not* preserved. In cases where a MaskedArray\\n    is expected as input, use the ma.concatenate function from the masked\\n    array module instead.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4]])\\n    >>> b = np.array([[5, 6]])\\n    >>> np.concatenate((a, b), axis=0)\\n    array([[1, 2],\\n           [3, 4],\\n           [5, 6]])\\n    >>> np.concatenate((a, b.T), axis=1)\\n    array([[1, 2, 5],\\n           [3, 4, 6]])\\n    >>> np.concatenate((a, b), axis=None)\\n    array([1, 2, 3, 4, 5, 6])\\n\\n    This function will not preserve masking of MaskedArray inputs.\\n\\n    >>> a = np.ma.arange(3)\\n    >>> a[1] = np.ma.masked\\n    >>> b = np.arange(2, 5)\\n    >>> a\\n    masked_array(data=[0, --, 2],\\n                 mask=[False,  True, False],\\n           fill_value=999999)\\n    >>> b\\n    array([2, 3, 4])\\n    >>> np.concatenate([a, b])\\n    masked_array(data=[0, 1, 2, 2, 3, 4],\\n                 mask=False,\\n           fill_value=999999)\\n    >>> np.ma.concatenate([a, b])\\n    masked_array(data=[0, --, 2, 2, 3, 4],\\n                 mask=[False,  True, False, False, False, False],\\n           fill_value=999999)\\n\\n    \\\"\\\"\\\"\\n    if out is not None:\\n        # optimize for the typical case where only arrays is provided\\n        arrays = list(arrays)\\n        arrays.append(out)\\n    return arrays\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.inner)\\ndef inner(a, b, /):\\n    \\\"\\\"\\\"\\n    inner(a, b, /)\\n\\n    Inner product of two arrays.\\n\\n    Ordinary inner product of vectors for 1-D arrays (without complex\\n    conjugation), in higher dimensions a sum product over the last axes.\\n\\n    Parameters\\n    ----------\\n    a, b : array_like\\n        If `a` and `b` are nonscalar, their last dimensions must match.\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        If `a` and `b` are both\\n        scalars or both 1-D arrays then a scalar is returned; otherwise\\n        an array is returned.\\n        ``out.shape = (*a.shape[:-1], *b.shape[:-1])``\\n\\n    Raises\\n    ------\\n    ValueError\\n        If both `a` and `b` are nonscalar and their last dimensions have\\n        different sizes.\\n\\n    See Also\\n    --------\\n    tensordot : Sum products over arbitrary axes.\\n    dot : Generalised matrix product, using second last dimension of `b`.\\n    vecdot : Vector dot product of two arrays.\\n    einsum : Einstein summation convention.\\n\\n    Notes\\n    -----\\n    For vectors (1-D arrays) it computes the ordinary inner-product::\\n\\n        np.inner(a, b) = sum(a[:]*b[:])\\n\\n    More generally, if ``ndim(a) = r > 0`` and ``ndim(b) = s > 0``::\\n\\n        np.inner(a, b) = np.tensordot(a, b, axes=(-1,-1))\\n\\n    or explicitly::\\n\\n        np.inner(a, b)[i0,...,ir-2,j0,...,js-2]\\n             = sum(a[i0,...,ir-2,:]*b[j0,...,js-2,:])\\n\\n    In addition `a` or `b` may be scalars, in which case::\\n\\n       np.inner(a,b) = a*b\\n\\n    Examples\\n    --------\\n    Ordinary inner product for vectors:\\n\\n    >>> import numpy as np\\n    >>> a = np.array([1,2,3])\\n    >>> b = np.array([0,1,0])\\n    >>> np.inner(a, b)\\n    2\\n\\n    Some multidimensional examples:\\n\\n    >>> a = np.arange(24).reshape((2,3,4))\\n    >>> b = np.arange(4)\\n    >>> c = np.inner(a, b)\\n    >>> c.shape\\n    (2, 3)\\n    >>> c\\n    array([[ 14,  38,  62],\\n           [ 86, 110, 134]])\\n\\n    >>> a = np.arange(2).reshape((1,1,2))\\n    >>> b = np.arange(6).reshape((3,2))\\n    >>> c = np.inner(a, b)\\n    >>> c.shape\\n    (1, 1, 3)\\n    >>> c\\n    array([[[1, 3, 5]]])\\n\\n    An example where `b` is a scalar:\\n\\n    >>> np.inner(np.eye(2), 7)\\n    array([[7., 0.],\\n           [0., 7.]])\\n\\n    \\\"\\\"\\\"\\n    return (a, b)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.where)\\ndef where(condition, x=None, y=None, /):\\n    \\\"\\\"\\\"\\n    where(condition, [x, y], /)\\n\\n    Return elements chosen from `x` or `y` depending on `condition`.\\n\\n    .. note::\\n        When only `condition` is provided, this function is a shorthand for\\n        ``np.asarray(condition).nonzero()``. Using `nonzero` directly should be\\n        preferred, as it behaves correctly for subclasses. The rest of this\\n        documentation covers only the case where all three arguments are\\n        provided.\\n\\n    Parameters\\n    ----------\\n    condition : array_like, bool\\n        Where True, yield `x`, otherwise yield `y`.\\n    x, y : array_like\\n        Values from which to choose. `x`, `y` and `condition` need to be\\n        broadcastable to some shape.\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        An array with elements from `x` where `condition` is True, and elements\\n        from `y` elsewhere.\\n\\n    See Also\\n    --------\\n    choose\\n    nonzero : The function that is called when x and y are omitted\\n\\n    Notes\\n    -----\\n    If all the arrays are 1-D, `where` is equivalent to::\\n\\n        [xv if c else yv\\n         for c, xv, yv in zip(condition, x, y)]\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(10)\\n    >>> a\\n    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\\n    >>> np.where(a < 5, a, 10*a)\\n    array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])\\n\\n    This can be used on multidimensional arrays too:\\n\\n    >>> np.where([[True, False], [True, True]],\\n    ...          [[1, 2], [3, 4]],\\n    ...          [[9, 8], [7, 6]])\\n    array([[1, 8],\\n           [3, 4]])\\n\\n    The shapes of x, y, and the condition are broadcast together:\\n\\n    >>> x, y = np.ogrid[:3, :4]\\n    >>> np.where(x < y, x, 10 + y)  # both x and 10+y are broadcast\\n    array([[10,  0,  0,  0],\\n           [10, 11,  1,  1],\\n           [10, 11, 12,  2]])\\n\\n    >>> a = np.array([[0, 1, 2],\\n    ...               [0, 2, 4],\\n    ...               [0, 3, 6]])\\n    >>> np.where(a < 4, a, -1)  # -1 is broadcast\\n    array([[ 0,  1,  2],\\n           [ 0,  2, -1],\\n           [ 0,  3, -1]])\\n    \\\"\\\"\\\"\\n    return (condition, x, y)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.lexsort)\\ndef lexsort(keys, axis=-1):\\n    \\\"\\\"\\\"\\n    lexsort(keys, axis=-1)\\n\\n    Perform an indirect stable sort using a sequence of keys.\\n\\n    Given multiple sorting keys, lexsort returns an array of integer indices\\n    that describes the sort order by multiple keys. The last key in the\\n    sequence is used for the primary sort order, ties are broken by the\\n    second-to-last key, and so on.\\n\\n    Parameters\\n    ----------\\n    keys : (k, m, n, ...) array-like\\n        The `k` keys to be sorted. The *last* key (e.g, the last\\n        row if `keys` is a 2D array) is the primary sort key.\\n        Each element of `keys` along the zeroth axis must be\\n        an array-like object of the same shape.\\n    axis : int, optional\\n        Axis to be indirectly sorted. By default, sort over the last axis\\n        of each sequence. Separate slices along `axis` sorted over\\n        independently; see last example.\\n\\n    Returns\\n    -------\\n    indices : (m, n, ...) ndarray of ints\\n        Array of indices that sort the keys along the specified axis.\\n\\n    See Also\\n    --------\\n    argsort : Indirect sort.\\n    ndarray.sort : In-place sort.\\n    sort : Return a sorted copy of an array.\\n\\n    Examples\\n    --------\\n    Sort names: first by surname, then by name.\\n\\n    >>> import numpy as np\\n    >>> surnames =    ('Hertz',    'Galilei', 'Hertz')\\n    >>> first_names = ('Heinrich', 'Galileo', 'Gustav')\\n    >>> ind = np.lexsort((first_names, surnames))\\n    >>> ind\\n    array([1, 2, 0])\\n\\n    >>> [surnames[i] + \\\", \\\" + first_names[i] for i in ind]\\n    ['Galilei, Galileo', 'Hertz, Gustav', 'Hertz, Heinrich']\\n\\n    Sort according to two numerical keys, first by elements\\n    of ``a``, then breaking ties according to elements of ``b``:\\n\\n    >>> a = [1, 5, 1, 4, 3, 4, 4]  # First sequence\\n    >>> b = [9, 4, 0, 4, 0, 2, 1]  # Second sequence\\n    >>> ind = np.lexsort((b, a))  # Sort by `a`, then by `b`\\n    >>> ind\\n    array([2, 0, 4, 6, 5, 3, 1])\\n    >>> [(a[i], b[i]) for i in ind]\\n    [(1, 0), (1, 9), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4)]\\n\\n    Compare against `argsort`, which would sort each key independently.\\n\\n    >>> np.argsort((b, a), kind='stable')\\n    array([[2, 4, 6, 5, 1, 3, 0],\\n           [0, 2, 4, 3, 5, 6, 1]])\\n\\n    To sort lexicographically with `argsort`, we would need to provide a\\n    structured array.\\n\\n    >>> x = np.array([(ai, bi) for ai, bi in zip(a, b)],\\n    ...              dtype = np.dtype([('x', int), ('y', int)]))\\n    >>> np.argsort(x)  # or np.argsort(x, order=('x', 'y'))\\n    array([2, 0, 4, 6, 5, 3, 1])\\n\\n    The zeroth axis of `keys` always corresponds with the sequence of keys,\\n    so 2D arrays are treated just like other sequences of keys.\\n\\n    >>> arr = np.asarray([b, a])\\n    >>> ind2 = np.lexsort(arr)\\n    >>> np.testing.assert_equal(ind2, ind)\\n\\n    Accordingly, the `axis` parameter refers to an axis of *each* key, not of\\n    the `keys` argument itself. For instance, the array ``arr`` is treated as\\n    a sequence of two 1-D keys, so specifying ``axis=0`` is equivalent to\\n    using the default axis, ``axis=-1``.\\n\\n    >>> np.testing.assert_equal(np.lexsort(arr, axis=0),\\n    ...                         np.lexsort(arr, axis=-1))\\n\\n    For higher-dimensional arrays, the axis parameter begins to matter. The\\n    resulting array has the same shape as each key, and the values are what\\n    we would expect if `lexsort` were performed on corresponding slices\\n    of the keys independently. For instance,\\n\\n    >>> x = [[1, 2, 3, 4],\\n    ...      [4, 3, 2, 1],\\n    ...      [2, 1, 4, 3]]\\n    >>> y = [[2, 2, 1, 1],\\n    ...      [1, 2, 1, 2],\\n    ...      [1, 1, 2, 1]]\\n    >>> np.lexsort((x, y), axis=1)\\n    array([[2, 3, 0, 1],\\n           [2, 0, 3, 1],\\n           [1, 0, 3, 2]])\\n\\n    Each row of the result is what we would expect if we were to perform\\n    `lexsort` on the corresponding row of the keys:\\n\\n    >>> for i in range(3):\\n    ...     print(np.lexsort((x[i], y[i])))\\n    [2 3 0 1]\\n    [2 0 3 1]\\n    [1 0 3 2]\\n\\n    \\\"\\\"\\\"\\n    if isinstance(keys, tuple):\\n        return keys\\n    else:\\n        return (keys,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.can_cast)\\ndef can_cast(from_, to, casting=\\\"safe\\\"):\\n    \\\"\\\"\\\"\\n    can_cast(from_, to, casting='safe')\\n\\n    Returns True if cast between data types can occur according to the\\n    casting rule.\\n\\n    Parameters\\n    ----------\\n    from_ : dtype, dtype specifier, NumPy scalar, or array\\n        Data type, NumPy scalar, or array to cast from.\\n    to : dtype or dtype specifier\\n        Data type to cast to.\\n    casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional\\n        Controls what kind of data casting may occur.\\n\\n        * 'no' means the data types should not be cast at all.\\n        * 'equiv' means only byte-order changes are allowed.\\n        * 'safe' means only casts which can preserve values are allowed.\\n        * 'same_kind' means only safe casts or casts within a kind,\\n          like float64 to float32, are allowed.\\n        * 'unsafe' means any data conversions may be done.\\n\\n    Returns\\n    -------\\n    out : bool\\n        True if cast can occur according to the casting rule.\\n\\n    Notes\\n    -----\\n    .. versionchanged:: 2.0\\n       This function does not support Python scalars anymore and does not\\n       apply any value-based logic for 0-D arrays and NumPy scalars.\\n\\n    See also\\n    --------\\n    dtype, result_type\\n\\n    Examples\\n    --------\\n    Basic examples\\n\\n    >>> import numpy as np\\n    >>> np.can_cast(np.int32, np.int64)\\n    True\\n    >>> np.can_cast(np.float64, complex)\\n    True\\n    >>> np.can_cast(complex, float)\\n    False\\n\\n    >>> np.can_cast('i8', 'f8')\\n    True\\n    >>> np.can_cast('i8', 'f4')\\n    False\\n    >>> np.can_cast('i4', 'S4')\\n    False\\n\\n    \\\"\\\"\\\"\\n    return (from_,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.min_scalar_type)\\ndef min_scalar_type(a, /):\\n    \\\"\\\"\\\"\\n    min_scalar_type(a, /)\\n\\n    For scalar ``a``, returns the data type with the smallest size\\n    and smallest scalar kind which can hold its value.  For non-scalar\\n    array ``a``, returns the vector's dtype unmodified.\\n\\n    Floating point values are not demoted to integers,\\n    and complex values are not demoted to floats.\\n\\n    Parameters\\n    ----------\\n    a : scalar or array_like\\n        The value whose minimal data type is to be found.\\n\\n    Returns\\n    -------\\n    out : dtype\\n        The minimal data type.\\n\\n    See Also\\n    --------\\n    result_type, promote_types, dtype, can_cast\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.min_scalar_type(10)\\n    dtype('uint8')\\n\\n    >>> np.min_scalar_type(-260)\\n    dtype('int16')\\n\\n    >>> np.min_scalar_type(3.1)\\n    dtype('float16')\\n\\n    >>> np.min_scalar_type(1e50)\\n    dtype('float64')\\n\\n    >>> np.min_scalar_type(np.arange(4,dtype='f8'))\\n    dtype('float64')\\n\\n    \\\"\\\"\\\"\\n    return (a,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.result_type)\\ndef result_type(*arrays_and_dtypes):\\n    \\\"\\\"\\\"\\n    result_type(*arrays_and_dtypes)\\n\\n    Returns the type that results from applying the NumPy\\n    :ref:`type promotion <arrays.promotion>` rules to the arguments.\\n\\n    Parameters\\n    ----------\\n    arrays_and_dtypes : list of arrays and dtypes\\n        The operands of some operation whose result type is needed.\\n\\n    Returns\\n    -------\\n    out : dtype\\n        The result type.\\n\\n    See also\\n    --------\\n    dtype, promote_types, min_scalar_type, can_cast\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.result_type(3, np.arange(7, dtype='i1'))\\n    dtype('int8')\\n\\n    >>> np.result_type('i4', 'c8')\\n    dtype('complex128')\\n\\n    >>> np.result_type(3.0, -2)\\n    dtype('float64')\\n\\n    \\\"\\\"\\\"\\n    return arrays_and_dtypes\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.dot)\\ndef dot(a, b, out=None):\\n    \\\"\\\"\\\"\\n    dot(a, b, out=None)\\n\\n    Dot product of two arrays. Specifically,\\n\\n    - If both `a` and `b` are 1-D arrays, it is inner product of vectors\\n      (without complex conjugation).\\n\\n    - If both `a` and `b` are 2-D arrays, it is matrix multiplication,\\n      but using :func:`matmul` or ``a @ b`` is preferred.\\n\\n    - If either `a` or `b` is 0-D (scalar), it is equivalent to\\n      :func:`multiply` and using ``numpy.multiply(a, b)`` or ``a * b`` is\\n      preferred.\\n\\n    - If `a` is an N-D array and `b` is a 1-D array, it is a sum product over\\n      the last axis of `a` and `b`.\\n\\n    - If `a` is an N-D array and `b` is an M-D array (where ``M>=2``), it is a\\n      sum product over the last axis of `a` and the second-to-last axis of\\n      `b`::\\n\\n        dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])\\n\\n    It uses an optimized BLAS library when possible (see `numpy.linalg`).\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        First argument.\\n    b : array_like\\n        Second argument.\\n    out : ndarray, optional\\n        Output argument. This must have the exact kind that would be returned\\n        if it was not used. In particular, it must have the right type, must be\\n        C-contiguous, and its dtype must be the dtype that would be returned\\n        for `dot(a,b)`. This is a performance feature. Therefore, if these\\n        conditions are not met, an exception is raised, instead of attempting\\n        to be flexible.\\n\\n    Returns\\n    -------\\n    output : ndarray\\n        Returns the dot product of `a` and `b`.  If `a` and `b` are both\\n        scalars or both 1-D arrays then a scalar is returned; otherwise\\n        an array is returned.\\n        If `out` is given, then it is returned.\\n\\n    Raises\\n    ------\\n    ValueError\\n        If the last dimension of `a` is not the same size as\\n        the second-to-last dimension of `b`.\\n\\n    See Also\\n    --------\\n    vdot : Complex-conjugating dot product.\\n    vecdot : Vector dot product of two arrays.\\n    tensordot : Sum products over arbitrary axes.\\n    einsum : Einstein summation convention.\\n    matmul : '@' operator as method with out parameter.\\n    linalg.multi_dot : Chained dot product.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.dot(3, 4)\\n    12\\n\\n    Neither argument is complex-conjugated:\\n\\n    >>> np.dot([2j, 3j], [2j, 3j])\\n    (-13+0j)\\n\\n    For 2-D arrays it is the matrix product:\\n\\n    >>> a = [[1, 0], [0, 1]]\\n    >>> b = [[4, 1], [2, 2]]\\n    >>> np.dot(a, b)\\n    array([[4, 1],\\n           [2, 2]])\\n\\n    >>> a = np.arange(3*4*5*6).reshape((3,4,5,6))\\n    >>> b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))\\n    >>> np.dot(a, b)[2,3,2,1,2,2]\\n    499128\\n    >>> sum(a[2,3,2,:] * b[1,2,:,2])\\n    499128\\n\\n    \\\"\\\"\\\"\\n    return (a, b, out)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.vdot)\\ndef vdot(a, b, /):\\n    r\\\"\\\"\\\"\\n    vdot(a, b, /)\\n\\n    Return the dot product of two vectors.\\n\\n    The `vdot` function handles complex numbers differently than `dot`:\\n    if the first argument is complex, it is replaced by its complex conjugate\\n    in the dot product calculation. `vdot` also handles multidimensional\\n    arrays differently than `dot`: it does not perform a matrix product, but\\n    flattens the arguments to 1-D arrays before taking a vector dot product.\\n\\n    Consequently, when the arguments are 2-D arrays of the same shape, this\\n    function effectively returns their\\n    `Frobenius inner product <https://en.wikipedia.org/wiki/Frobenius_inner_product>`_\\n    (also known as the *trace inner product* or the *standard inner product*\\n    on a vector space of matrices).\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        If `a` is complex the complex conjugate is taken before calculation\\n        of the dot product.\\n    b : array_like\\n        Second argument to the dot product.\\n\\n    Returns\\n    -------\\n    output : ndarray\\n        Dot product of `a` and `b`.  Can be an int, float, or\\n        complex depending on the types of `a` and `b`.\\n\\n    See Also\\n    --------\\n    dot : Return the dot product without using the complex conjugate of the\\n          first argument.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([1+2j,3+4j])\\n    >>> b = np.array([5+6j,7+8j])\\n    >>> np.vdot(a, b)\\n    (70-8j)\\n    >>> np.vdot(b, a)\\n    (70+8j)\\n\\n    Note that higher-dimensional arrays are flattened!\\n\\n    >>> a = np.array([[1, 4], [5, 6]])\\n    >>> b = np.array([[4, 1], [2, 2]])\\n    >>> np.vdot(a, b)\\n    30\\n    >>> np.vdot(b, a)\\n    30\\n    >>> 1*4 + 4*1 + 5*2 + 6*2\\n    30\\n\\n    \\\"\\\"\\\"  # noqa: E501\\n    return (a, b)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.bincount)\\ndef bincount(x, /, weights=None, minlength=0):\\n    \\\"\\\"\\\"\\n    bincount(x, /, weights=None, minlength=0)\\n\\n    Count number of occurrences of each value in array of non-negative ints.\\n\\n    The number of bins (of size 1) is one larger than the largest value in\\n    `x`. If `minlength` is specified, there will be at least this number\\n    of bins in the output array (though it will be longer if necessary,\\n    depending on the contents of `x`).\\n    Each bin gives the number of occurrences of its index value in `x`.\\n    If `weights` is specified the input array is weighted by it, i.e. if a\\n    value ``n`` is found at position ``i``, ``out[n] += weight[i]`` instead\\n    of ``out[n] += 1``.\\n\\n    Parameters\\n    ----------\\n    x : array_like, 1 dimension, nonnegative ints\\n        Input array.\\n    weights : array_like, optional\\n        Weights, array of the same shape as `x`.\\n    minlength : int, optional\\n        A minimum number of bins for the output array.\\n\\n    Returns\\n    -------\\n    out : ndarray of ints\\n        The result of binning the input array.\\n        The length of `out` is equal to ``np.amax(x)+1``.\\n\\n    Raises\\n    ------\\n    ValueError\\n        If the input is not 1-dimensional, or contains elements with negative\\n        values, or if `minlength` is negative.\\n    TypeError\\n        If the type of the input is float or complex.\\n\\n    See Also\\n    --------\\n    histogram, digitize, unique\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.bincount(np.arange(5))\\n    array([1, 1, 1, 1, 1])\\n    >>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))\\n    array([1, 3, 1, 1, 0, 0, 0, 1])\\n\\n    >>> x = np.array([0, 1, 1, 3, 2, 1, 7, 23])\\n    >>> np.bincount(x).size == np.amax(x)+1\\n    True\\n\\n    The input array needs to be of integer dtype, otherwise a\\n    TypeError is raised:\\n\\n    >>> np.bincount(np.arange(5, dtype=float))\\n    Traceback (most recent call last):\\n      ...\\n    TypeError: Cannot cast array data from dtype('float64') to dtype('int64')\\n    according to the rule 'safe'\\n\\n    A possible use of ``bincount`` is to perform sums over\\n    variable-size chunks of an array, using the ``weights`` keyword.\\n\\n    >>> w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6]) # weights\\n    >>> x = np.array([0, 1, 1, 2, 2, 2])\\n    >>> np.bincount(x,  weights=w)\\n    array([ 0.3,  0.7,  1.1])\\n\\n    \\\"\\\"\\\"\\n    return (x, weights)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.ravel_multi_index)\\ndef ravel_multi_index(multi_index, dims, mode=\\\"raise\\\", order=\\\"C\\\"):\\n    \\\"\\\"\\\"\\n    ravel_multi_index(multi_index, dims, mode='raise', order='C')\\n\\n    Converts a tuple of index arrays into an array of flat\\n    indices, applying boundary modes to the multi-index.\\n\\n    Parameters\\n    ----------\\n    multi_index : tuple of array_like\\n        A tuple of integer arrays, one array for each dimension.\\n    dims : tuple of ints\\n        The shape of array into which the indices from ``multi_index`` apply.\\n    mode : {'raise', 'wrap', 'clip'}, optional\\n        Specifies how out-of-bounds indices are handled.  Can specify\\n        either one mode or a tuple of modes, one mode per index.\\n\\n        * 'raise' -- raise an error (default)\\n        * 'wrap' -- wrap around\\n        * 'clip' -- clip to the range\\n\\n        In 'clip' mode, a negative index which would normally\\n        wrap will clip to 0 instead.\\n    order : {'C', 'F'}, optional\\n        Determines whether the multi-index should be viewed as\\n        indexing in row-major (C-style) or column-major\\n        (Fortran-style) order.\\n\\n    Returns\\n    -------\\n    raveled_indices : ndarray\\n        An array of indices into the flattened version of an array\\n        of dimensions ``dims``.\\n\\n    See Also\\n    --------\\n    unravel_index\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> arr = np.array([[3,6,6],[4,5,1]])\\n    >>> np.ravel_multi_index(arr, (7,6))\\n    array([22, 41, 37])\\n    >>> np.ravel_multi_index(arr, (7,6), order='F')\\n    array([31, 41, 13])\\n    >>> np.ravel_multi_index(arr, (4,6), mode='clip')\\n    array([22, 23, 19])\\n    >>> np.ravel_multi_index(arr, (4,4), mode=('clip','wrap'))\\n    array([12, 13, 13])\\n\\n    >>> np.ravel_multi_index((3,1,4,1), (6,7,8,9))\\n    1621\\n    \\\"\\\"\\\"\\n    return multi_index\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.unravel_index)\\ndef unravel_index(indices, shape, order=\\\"C\\\"):\\n    \\\"\\\"\\\"\\n    unravel_index(indices, shape, order='C')\\n\\n    Converts a flat index or array of flat indices into a tuple\\n    of coordinate arrays.\\n\\n    Parameters\\n    ----------\\n    indices : array_like\\n        An integer array whose elements are indices into the flattened\\n        version of an array of dimensions ``shape``. Before version 1.6.0,\\n        this function accepted just one index value.\\n    shape : tuple of ints\\n        The shape of the array to use for unraveling ``indices``.\\n    order : {'C', 'F'}, optional\\n        Determines whether the indices should be viewed as indexing in\\n        row-major (C-style) or column-major (Fortran-style) order.\\n\\n    Returns\\n    -------\\n    unraveled_coords : tuple of ndarray\\n        Each array in the tuple has the same shape as the ``indices``\\n        array.\\n\\n    See Also\\n    --------\\n    ravel_multi_index\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.unravel_index([22, 41, 37], (7,6))\\n    (array([3, 6, 6]), array([4, 5, 1]))\\n    >>> np.unravel_index([31, 41, 13], (7,6), order='F')\\n    (array([3, 6, 6]), array([4, 5, 1]))\\n\\n    >>> np.unravel_index(1621, (6,7,8,9))\\n    (3, 1, 4, 1)\\n\\n    \\\"\\\"\\\"\\n    return (indices,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.copyto)\\ndef copyto(dst, src, casting=\\\"same_kind\\\", where=True):\\n    \\\"\\\"\\\"\\n    copyto(dst, src, casting='same_kind', where=True)\\n\\n    Copies values from one array to another, broadcasting as necessary.\\n\\n    Raises a TypeError if the `casting` rule is violated, and if\\n    `where` is provided, it selects which elements to copy.\\n\\n    Parameters\\n    ----------\\n    dst : ndarray\\n        The array into which values are copied.\\n    src : array_like\\n        The array from which values are copied.\\n    casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional\\n        Controls what kind of data casting may occur when copying.\\n\\n        * 'no' means the data types should not be cast at all.\\n        * 'equiv' means only byte-order changes are allowed.\\n        * 'safe' means only casts which can preserve values are allowed.\\n        * 'same_kind' means only safe casts or casts within a kind,\\n          like float64 to float32, are allowed.\\n        * 'unsafe' means any data conversions may be done.\\n    where : array_like of bool, optional\\n        A boolean array which is broadcasted to match the dimensions\\n        of `dst`, and selects elements to copy from `src` to `dst`\\n        wherever it contains the value True.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> A = np.array([4, 5, 6])\\n    >>> B = [1, 2, 3]\\n    >>> np.copyto(A, B)\\n    >>> A\\n    array([1, 2, 3])\\n\\n    >>> A = np.array([[1, 2, 3], [4, 5, 6]])\\n    >>> B = [[4, 5, 6], [7, 8, 9]]\\n    >>> np.copyto(A, B)\\n    >>> A\\n    array([[4, 5, 6],\\n           [7, 8, 9]])\\n\\n    \\\"\\\"\\\"\\n    return (dst, src, where)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.putmask)\\ndef putmask(a, /, mask, values):\\n    \\\"\\\"\\\"\\n    putmask(a, /, mask, values)\\n\\n    Changes elements of an array based on conditional and input values.\\n\\n    Sets ``a.flat[n] = values[n]`` for each n where ``mask.flat[n]==True``.\\n\\n    If `values` is not the same size as `a` and `mask` then it will repeat.\\n    This gives behavior different from ``a[mask] = values``.\\n\\n    Parameters\\n    ----------\\n    a : ndarray\\n        Target array.\\n    mask : array_like\\n        Boolean mask array. It has to be the same shape as `a`.\\n    values : array_like\\n        Values to put into `a` where `mask` is True. If `values` is smaller\\n        than `a` it will be repeated.\\n\\n    See Also\\n    --------\\n    place, put, take, copyto\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.arange(6).reshape(2, 3)\\n    >>> np.putmask(x, x>2, x**2)\\n    >>> x\\n    array([[ 0,  1,  2],\\n           [ 9, 16, 25]])\\n\\n    If `values` is smaller than `a` it is repeated:\\n\\n    >>> x = np.arange(5)\\n    >>> np.putmask(x, x>1, [-33, -44])\\n    >>> x\\n    array([  0,   1, -33, -44, -33])\\n\\n    \\\"\\\"\\\"\\n    return (a, mask, values)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.packbits)\\ndef packbits(a, /, axis=None, bitorder=\\\"big\\\"):\\n    \\\"\\\"\\\"\\n    packbits(a, /, axis=None, bitorder='big')\\n\\n    Packs the elements of a binary-valued array into bits in a uint8 array.\\n\\n    The result is padded to full bytes by inserting zero bits at the end.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        An array of integers or booleans whose elements should be packed to\\n        bits.\\n    axis : int, optional\\n        The dimension over which bit-packing is done.\\n        ``None`` implies packing the flattened array.\\n    bitorder : {'big', 'little'}, optional\\n        The order of the input bits. 'big' will mimic bin(val),\\n        ``[0, 0, 0, 0, 0, 0, 1, 1] => 3 = 0b00000011``, 'little' will\\n        reverse the order so ``[1, 1, 0, 0, 0, 0, 0, 0] => 3``.\\n        Defaults to 'big'.\\n\\n    Returns\\n    -------\\n    packed : ndarray\\n        Array of type uint8 whose elements represent bits corresponding to the\\n        logical (0 or nonzero) value of the input elements. The shape of\\n        `packed` has the same number of dimensions as the input (unless `axis`\\n        is None, in which case the output is 1-D).\\n\\n    See Also\\n    --------\\n    unpackbits: Unpacks elements of a uint8 array into a binary-valued output\\n                array.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[[1,0,1],\\n    ...                [0,1,0]],\\n    ...               [[1,1,0],\\n    ...                [0,0,1]]])\\n    >>> b = np.packbits(a, axis=-1)\\n    >>> b\\n    array([[[160],\\n            [ 64]],\\n           [[192],\\n            [ 32]]], dtype=uint8)\\n\\n    Note that in binary 160 = 1010 0000, 64 = 0100 0000, 192 = 1100 0000,\\n    and 32 = 0010 0000.\\n\\n    \\\"\\\"\\\"\\n    return (a,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.unpackbits)\\ndef unpackbits(a, /, axis=None, count=None, bitorder=\\\"big\\\"):\\n    \\\"\\\"\\\"\\n    unpackbits(a, /, axis=None, count=None, bitorder='big')\\n\\n    Unpacks elements of a uint8 array into a binary-valued output array.\\n\\n    Each element of `a` represents a bit-field that should be unpacked\\n    into a binary-valued output array. The shape of the output array is\\n    either 1-D (if `axis` is ``None``) or the same shape as the input\\n    array with unpacking done along the axis specified.\\n\\n    Parameters\\n    ----------\\n    a : ndarray, uint8 type\\n       Input array.\\n    axis : int, optional\\n        The dimension over which bit-unpacking is done.\\n        ``None`` implies unpacking the flattened array.\\n    count : int or None, optional\\n        The number of elements to unpack along `axis`, provided as a way\\n        of undoing the effect of packing a size that is not a multiple\\n        of eight. A non-negative number means to only unpack `count`\\n        bits. A negative number means to trim off that many bits from\\n        the end. ``None`` means to unpack the entire array (the\\n        default). Counts larger than the available number of bits will\\n        add zero padding to the output. Negative counts must not\\n        exceed the available number of bits.\\n    bitorder : {'big', 'little'}, optional\\n        The order of the returned bits. 'big' will mimic bin(val),\\n        ``3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1]``, 'little' will reverse\\n        the order to ``[1, 1, 0, 0, 0, 0, 0, 0]``.\\n        Defaults to 'big'.\\n\\n    Returns\\n    -------\\n    unpacked : ndarray, uint8 type\\n       The elements are binary-valued (0 or 1).\\n\\n    See Also\\n    --------\\n    packbits : Packs the elements of a binary-valued array into bits in\\n               a uint8 array.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[2], [7], [23]], dtype=np.uint8)\\n    >>> a\\n    array([[ 2],\\n           [ 7],\\n           [23]], dtype=uint8)\\n    >>> b = np.unpackbits(a, axis=1)\\n    >>> b\\n    array([[0, 0, 0, 0, 0, 0, 1, 0],\\n           [0, 0, 0, 0, 0, 1, 1, 1],\\n           [0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)\\n    >>> c = np.unpackbits(a, axis=1, count=-3)\\n    >>> c\\n    array([[0, 0, 0, 0, 0],\\n           [0, 0, 0, 0, 0],\\n           [0, 0, 0, 1, 0]], dtype=uint8)\\n\\n    >>> p = np.packbits(b, axis=0)\\n    >>> np.unpackbits(p, axis=0)\\n    array([[0, 0, 0, 0, 0, 0, 1, 0],\\n           [0, 0, 0, 0, 0, 1, 1, 1],\\n           [0, 0, 0, 1, 0, 1, 1, 1],\\n           [0, 0, 0, 0, 0, 0, 0, 0],\\n           [0, 0, 0, 0, 0, 0, 0, 0],\\n           [0, 0, 0, 0, 0, 0, 0, 0],\\n           [0, 0, 0, 0, 0, 0, 0, 0],\\n           [0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)\\n    >>> np.array_equal(b, np.unpackbits(p, axis=0, count=b.shape[0]))\\n    True\\n\\n    \\\"\\\"\\\"\\n    return (a,)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.shares_memory)\\ndef shares_memory(a, b, /, max_work=-1):\\n    \\\"\\\"\\\"\\n    shares_memory(a, b, /, max_work=-1)\\n\\n    Determine if two arrays share memory.\\n\\n    .. warning::\\n\\n       This function can be exponentially slow for some inputs, unless\\n       `max_work` is set to zero or a positive integer.\\n       If in doubt, use `numpy.may_share_memory` instead.\\n\\n    Parameters\\n    ----------\\n    a, b : ndarray\\n        Input arrays\\n    max_work : int, optional\\n        Effort to spend on solving the overlap problem (maximum number\\n        of candidate solutions to consider). The following special\\n        values are recognized:\\n\\n        max_work=-1 (default)\\n            The problem is solved exactly. In this case, the function returns\\n            True only if there is an element shared between the arrays. Finding\\n            the exact solution may take extremely long in some cases.\\n        max_work=0\\n            Only the memory bounds of a and b are checked.\\n            This is equivalent to using ``may_share_memory()``.\\n\\n    Raises\\n    ------\\n    numpy.exceptions.TooHardError\\n        Exceeded max_work.\\n\\n    Returns\\n    -------\\n    out : bool\\n\\n    See Also\\n    --------\\n    may_share_memory\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.array([1, 2, 3, 4])\\n    >>> np.shares_memory(x, np.array([5, 6, 7]))\\n    False\\n    >>> np.shares_memory(x[::2], x)\\n    True\\n    >>> np.shares_memory(x[::2], x[1::2])\\n    False\\n\\n    Checking whether two arrays share memory is NP-complete, and\\n    runtime may increase exponentially in the number of\\n    dimensions. Hence, `max_work` should generally be set to a finite\\n    number, as it is possible to construct examples that take\\n    extremely long to run:\\n\\n    >>> from numpy.lib.stride_tricks import as_strided\\n    >>> x = np.zeros([192163377], dtype=np.int8)\\n    >>> x1 = as_strided(\\n    ...     x, strides=(36674, 61119, 85569), shape=(1049, 1049, 1049))\\n    >>> x2 = as_strided(\\n    ...     x[64023025:], strides=(12223, 12224, 1), shape=(1049, 1049, 1))\\n    >>> np.shares_memory(x1, x2, max_work=1000)\\n    Traceback (most recent call last):\\n    ...\\n    numpy.exceptions.TooHardError: Exceeded max_work\\n\\n    Running ``np.shares_memory(x1, x2)`` without `max_work` set takes\\n    around 1 minute for this case. It is possible to find problems\\n    that take still significantly longer.\\n\\n    \\\"\\\"\\\"\\n    return (a, b)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.may_share_memory)\\ndef may_share_memory(a, b, /, max_work=0):\\n    \\\"\\\"\\\"\\n    may_share_memory(a, b, /, max_work=0)\\n\\n    Determine if two arrays might share memory\\n\\n    A return of True does not necessarily mean that the two arrays\\n    share any element.  It just means that they *might*.\\n\\n    Only the memory bounds of a and b are checked by default.\\n\\n    Parameters\\n    ----------\\n    a, b : ndarray\\n        Input arrays\\n    max_work : int, optional\\n        Effort to spend on solving the overlap problem.  See\\n        `shares_memory` for details.  Default for ``may_share_memory``\\n        is to do a bounds check.\\n\\n    Returns\\n    -------\\n    out : bool\\n\\n    See Also\\n    --------\\n    shares_memory\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.may_share_memory(np.array([1,2]), np.array([5,8,9]))\\n    False\\n    >>> x = np.zeros([3, 4])\\n    >>> np.may_share_memory(x[:,0], x[:,1])\\n    True\\n\\n    \\\"\\\"\\\"\\n    return (a, b)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.is_busday)\\ndef is_busday(dates, weekmask=\\\"1111100\\\", holidays=None, busdaycal=None, out=None):\\n    \\\"\\\"\\\"\\n    is_busday(\\n        dates,\\n        weekmask='1111100',\\n        holidays=None,\\n        busdaycal=None,\\n        out=None,\\n    )\\n\\n    Calculates which of the given dates are valid days, and which are not.\\n\\n    Parameters\\n    ----------\\n    dates : array_like of datetime64[D]\\n        The array of dates to process.\\n    weekmask : str or array_like of bool, optional\\n        A seven-element array indicating which of Monday through Sunday are\\n        valid days. May be specified as a length-seven list or array, like\\n        [1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string\\n        like \\\"Mon Tue Wed Thu Fri\\\", made up of 3-character abbreviations for\\n        weekdays, optionally separated by white space. Valid abbreviations\\n        are: Mon Tue Wed Thu Fri Sat Sun\\n    holidays : array_like of datetime64[D], optional\\n        An array of dates to consider as invalid dates.  They may be\\n        specified in any order, and NaT (not-a-time) dates are ignored.\\n        This list is saved in a normalized form that is suited for\\n        fast calculations of valid days.\\n    busdaycal : busdaycalendar, optional\\n        A `busdaycalendar` object which specifies the valid days. If this\\n        parameter is provided, neither weekmask nor holidays may be\\n        provided.\\n    out : array of bool, optional\\n        If provided, this array is filled with the result.\\n\\n    Returns\\n    -------\\n    out : array of bool\\n        An array with the same shape as ``dates``, containing True for\\n        each valid day, and False for each invalid day.\\n\\n    See Also\\n    --------\\n    busdaycalendar : An object that specifies a custom set of valid days.\\n    busday_offset : Applies an offset counted in valid days.\\n    busday_count : Counts how many valid days are in a half-open date range.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> # The weekdays are Friday, Saturday, and Monday\\n    ... np.is_busday(['2011-07-01', '2011-07-02', '2011-07-18'],\\n    ...                 holidays=['2011-07-01', '2011-07-04', '2011-07-17'])\\n    array([False, False,  True])\\n    \\\"\\\"\\\"\\n    return (dates, weekmask, holidays, out)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.busday_offset)\\ndef busday_offset(dates, offsets, roll=\\\"raise\\\", weekmask=\\\"1111100\\\", holidays=None,\\n                  busdaycal=None, out=None):\\n    \\\"\\\"\\\"\\n    busday_offset(\\n        dates,\\n        offsets,\\n        roll='raise',\\n        weekmask='1111100',\\n        holidays=None,\\n        busdaycal=None,\\n        out=None,\\n    )\\n\\n    First adjusts the date to fall on a valid day according to\\n    the ``roll`` rule, then applies offsets to the given dates\\n    counted in valid days.\\n\\n    Parameters\\n    ----------\\n    dates : array_like of datetime64[D]\\n        The array of dates to process.\\n    offsets : array_like of int\\n        The array of offsets, which is broadcast with ``dates``.\\n    roll : {'raise', 'nat', 'forward', 'following', 'backward', 'preceding', \\\\\\n        'modifiedfollowing', 'modifiedpreceding'}, optional\\n        How to treat dates that do not fall on a valid day. The default\\n        is 'raise'.\\n\\n        * 'raise' means to raise an exception for an invalid day.\\n        * 'nat' means to return a NaT (not-a-time) for an invalid day.\\n        * 'forward' and 'following' mean to take the first valid day\\n          later in time.\\n        * 'backward' and 'preceding' mean to take the first valid day\\n          earlier in time.\\n        * 'modifiedfollowing' means to take the first valid day\\n          later in time unless it is across a Month boundary, in which\\n          case to take the first valid day earlier in time.\\n        * 'modifiedpreceding' means to take the first valid day\\n          earlier in time unless it is across a Month boundary, in which\\n          case to take the first valid day later in time.\\n    weekmask : str or array_like of bool, optional\\n        A seven-element array indicating which of Monday through Sunday are\\n        valid days. May be specified as a length-seven list or array, like\\n        [1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string\\n        like \\\"Mon Tue Wed Thu Fri\\\", made up of 3-character abbreviations for\\n        weekdays, optionally separated by white space. Valid abbreviations\\n        are: Mon Tue Wed Thu Fri Sat Sun\\n    holidays : array_like of datetime64[D], optional\\n        An array of dates to consider as invalid dates.  They may be\\n        specified in any order, and NaT (not-a-time) dates are ignored.\\n        This list is saved in a normalized form that is suited for\\n        fast calculations of valid days.\\n    busdaycal : busdaycalendar, optional\\n        A `busdaycalendar` object which specifies the valid days. If this\\n        parameter is provided, neither weekmask nor holidays may be\\n        provided.\\n    out : array of datetime64[D], optional\\n        If provided, this array is filled with the result.\\n\\n    Returns\\n    -------\\n    out : array of datetime64[D]\\n        An array with a shape from broadcasting ``dates`` and ``offsets``\\n        together, containing the dates with offsets applied.\\n\\n    See Also\\n    --------\\n    busdaycalendar : An object that specifies a custom set of valid days.\\n    is_busday : Returns a boolean array indicating valid days.\\n    busday_count : Counts how many valid days are in a half-open date range.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> # First business day in October 2011 (not accounting for holidays)\\n    ... np.busday_offset('2011-10', 0, roll='forward')\\n    np.datetime64('2011-10-03')\\n    >>> # Last business day in February 2012 (not accounting for holidays)\\n    ... np.busday_offset('2012-03', -1, roll='forward')\\n    np.datetime64('2012-02-29')\\n    >>> # Third Wednesday in January 2011\\n    ... np.busday_offset('2011-01', 2, roll='forward', weekmask='Wed')\\n    np.datetime64('2011-01-19')\\n    >>> # 2012 Mother's Day in Canada and the U.S.\\n    ... np.busday_offset('2012-05', 1, roll='forward', weekmask='Sun')\\n    np.datetime64('2012-05-13')\\n\\n    >>> # First business day on or after a date\\n    ... np.busday_offset('2011-03-20', 0, roll='forward')\\n    np.datetime64('2011-03-21')\\n    >>> np.busday_offset('2011-03-22', 0, roll='forward')\\n    np.datetime64('2011-03-22')\\n    >>> # First business day after a date\\n    ... np.busday_offset('2011-03-20', 1, roll='backward')\\n    np.datetime64('2011-03-21')\\n    >>> np.busday_offset('2011-03-22', 1, roll='backward')\\n    np.datetime64('2011-03-23')\\n    \\\"\\\"\\\"\\n    return (dates, offsets, weekmask, holidays, out)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.busday_count)\\ndef busday_count(begindates, enddates, weekmask=\\\"1111100\\\", holidays=(),\\n                 busdaycal=None, out=None):\\n    \\\"\\\"\\\"\\n    busday_count(\\n        begindates,\\n        enddates,\\n        weekmask='1111100',\\n        holidays=[],\\n        busdaycal=None,\\n        out=None\\n    )\\n\\n    Counts the number of valid days between `begindates` and\\n    `enddates`, not including the day of `enddates`.\\n\\n    If ``enddates`` specifies a date value that is earlier than the\\n    corresponding ``begindates`` date value, the count will be negative.\\n\\n    Parameters\\n    ----------\\n    begindates : array_like of datetime64[D]\\n        The array of the first dates for counting.\\n    enddates : array_like of datetime64[D]\\n        The array of the end dates for counting, which are excluded\\n        from the count themselves.\\n    weekmask : str or array_like of bool, optional\\n        A seven-element array indicating which of Monday through Sunday are\\n        valid days. May be specified as a length-seven list or array, like\\n        [1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string\\n        like \\\"Mon Tue Wed Thu Fri\\\", made up of 3-character abbreviations for\\n        weekdays, optionally separated by white space. Valid abbreviations\\n        are: Mon Tue Wed Thu Fri Sat Sun\\n    holidays : array_like of datetime64[D], optional\\n        An array of dates to consider as invalid dates.  They may be\\n        specified in any order, and NaT (not-a-time) dates are ignored.\\n        This list is saved in a normalized form that is suited for\\n        fast calculations of valid days.\\n    busdaycal : busdaycalendar, optional\\n        A `busdaycalendar` object which specifies the valid days. If this\\n        parameter is provided, neither weekmask nor holidays may be\\n        provided.\\n    out : array of int, optional\\n        If provided, this array is filled with the result.\\n\\n    Returns\\n    -------\\n    out : array of int\\n        An array with a shape from broadcasting ``begindates`` and ``enddates``\\n        together, containing the number of valid days between\\n        the begin and end dates.\\n\\n    See Also\\n    --------\\n    busdaycalendar : An object that specifies a custom set of valid days.\\n    is_busday : Returns a boolean array indicating valid days.\\n    busday_offset : Applies an offset counted in valid days.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> # Number of weekdays in January 2011\\n    ... np.busday_count('2011-01', '2011-02')\\n    21\\n    >>> # Number of weekdays in 2011\\n    >>> np.busday_count('2011', '2012')\\n    260\\n    >>> # Number of Saturdays in 2011\\n    ... np.busday_count('2011', '2012', weekmask='Sat')\\n    53\\n    \\\"\\\"\\\"\\n    return (begindates, enddates, weekmask, holidays, out)\\n\\n\\n@array_function_from_c_func_and_dispatcher(_multiarray_umath.datetime_as_string)\\ndef datetime_as_string(arr, unit=None, timezone=\\\"naive\\\", casting=\\\"same_kind\\\"):\\n    \\\"\\\"\\\"\\n    datetime_as_string(arr, unit=None, timezone='naive', casting='same_kind')\\n\\n    Convert an array of datetimes into an array of strings.\\n\\n    Parameters\\n    ----------\\n    arr : array_like of datetime64\\n        The array of UTC timestamps to format.\\n    unit : str\\n        One of None, 'auto', or\\n        a :ref:`datetime unit <arrays.dtypes.dateunits>`.\\n    timezone : {'naive', 'UTC', 'local'} or tzinfo\\n        Timezone information to use when displaying the datetime. If 'UTC',\\n        end with a Z to indicate UTC time. If 'local', convert to the local\\n        timezone first, and suffix with a +-#### timezone offset. If a tzinfo\\n        object, then do as with 'local', but use the specified timezone.\\n    casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}\\n        Casting to allow when changing between datetime units.\\n\\n    Returns\\n    -------\\n    str_arr : ndarray\\n        An array of strings the same shape as `arr`.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> from zoneinfo import ZoneInfo\\n    >>> d = np.arange('2002-10-27T04:30', 4*60, 60, dtype='M8[m]')\\n    >>> d\\n    array(['2002-10-27T04:30', '2002-10-27T05:30', '2002-10-27T06:30',\\n           '2002-10-27T07:30'], dtype='datetime64[m]')\\n\\n    Setting the timezone to UTC shows the same information, but with a Z suffix\\n\\n    >>> np.datetime_as_string(d, timezone='UTC')\\n    array(['2002-10-27T04:30Z', '2002-10-27T05:30Z', '2002-10-27T06:30Z',\\n           '2002-10-27T07:30Z'], dtype='<U35')\\n\\n    Note that we picked datetimes that cross a DST boundary. Passing in a\\n    ``ZoneInfo`` object will print the appropriate offset\\n\\n    >>> np.datetime_as_string(d, timezone=ZoneInfo('US/Eastern'))\\n    array(['2002-10-27T00:30-0400', '2002-10-27T01:30-0400',\\n           '2002-10-27T01:30-0500', '2002-10-27T02:30-0500'], dtype='<U39')\\n\\n    Passing in a unit will change the precision\\n\\n    >>> np.datetime_as_string(d, unit='h')\\n    array(['2002-10-27T04', '2002-10-27T05', '2002-10-27T06', '2002-10-27T07'],\\n          dtype='<U32')\\n    >>> np.datetime_as_string(d, unit='s')\\n    array(['2002-10-27T04:30:00', '2002-10-27T05:30:00', '2002-10-27T06:30:00',\\n           '2002-10-27T07:30:00'], dtype='<U38')\\n\\n    'casting' can be used to specify whether precision can be changed\\n\\n    >>> np.datetime_as_string(d, unit='h', casting='safe')\\n    Traceback (most recent call last):\\n        ...\\n    TypeError: Cannot create a datetime string as units 'h' from a NumPy\\n    datetime with units 'm' according to the rule 'safe'\\n    \\\"\\\"\\\"\\n    return (arr,)\\n\", 1740], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py\": [\"\\\"\\\"\\\"Module containing non-deprecated functions borrowed from Numeric.\\n\\n\\\"\\\"\\\"\\nimport functools\\nimport math\\nimport types\\n\\nimport numpy as np\\nfrom numpy._utils import set_module\\n\\nfrom . import _methods, multiarray as mu, numerictypes as nt, overrides, umath as um\\nfrom ._multiarray_umath import _array_converter\\nfrom .multiarray import asanyarray, asarray, concatenate\\n\\n_dt_ = nt.sctype2char\\n\\n# functions that are methods\\n__all__ = [\\n    'all', 'amax', 'amin', 'any', 'argmax',\\n    'argmin', 'argpartition', 'argsort', 'around', 'choose', 'clip',\\n    'compress', 'cumprod', 'cumsum', 'cumulative_prod', 'cumulative_sum',\\n    'diagonal', 'mean', 'max', 'min', 'matrix_transpose',\\n    'ndim', 'nonzero', 'partition', 'prod', 'ptp', 'put',\\n    'ravel', 'repeat', 'reshape', 'resize', 'round',\\n    'searchsorted', 'shape', 'size', 'sort', 'squeeze',\\n    'std', 'sum', 'swapaxes', 'take', 'trace', 'transpose', 'var',\\n]\\n\\n_gentype = types.GeneratorType\\n# save away Python sum\\n_sum_ = sum\\n\\narray_function_dispatch = functools.partial(\\n    overrides.array_function_dispatch, module='numpy')\\n\\n\\n# functions that are now methods\\ndef _wrapit(obj, method, *args, **kwds):\\n    conv = _array_converter(obj)\\n    # As this already tried the method, subok is maybe quite reasonable here\\n    # but this follows what was done before. TODO: revisit this.\\n    arr, = conv.as_arrays(subok=False)\\n    result = getattr(arr, method)(*args, **kwds)\\n\\n    return conv.wrap(result, to_scalar=False)\\n\\n\\ndef _wrapfunc(obj, method, *args, **kwds):\\n    bound = getattr(obj, method, None)\\n    if bound is None:\\n        return _wrapit(obj, method, *args, **kwds)\\n\\n    try:\\n        return bound(*args, **kwds)\\n    except TypeError:\\n        # A TypeError occurs if the object does have such a method in its\\n        # class, but its signature is not identical to that of NumPy's. This\\n        # situation has occurred in the case of a downstream library like\\n        # 'pandas'.\\n        #\\n        # Call _wrapit from within the except clause to ensure a potential\\n        # exception has a traceback chain.\\n        return _wrapit(obj, method, *args, **kwds)\\n\\n\\ndef _wrapreduction(obj, ufunc, method, axis, dtype, out, **kwargs):\\n    passkwargs = {k: v for k, v in kwargs.items()\\n                  if v is not np._NoValue}\\n\\n    if type(obj) is not mu.ndarray:\\n        try:\\n            reduction = getattr(obj, method)\\n        except AttributeError:\\n            pass\\n        else:\\n            # This branch is needed for reductions like any which don't\\n            # support a dtype.\\n            if dtype is not None:\\n                return reduction(axis=axis, dtype=dtype, out=out, **passkwargs)\\n            else:\\n                return reduction(axis=axis, out=out, **passkwargs)\\n\\n    return ufunc.reduce(obj, axis, dtype, out, **passkwargs)\\n\\n\\ndef _wrapreduction_any_all(obj, ufunc, method, axis, out, **kwargs):\\n    # Same as above function, but dtype is always bool (but never passed on)\\n    passkwargs = {k: v for k, v in kwargs.items()\\n                  if v is not np._NoValue}\\n\\n    if type(obj) is not mu.ndarray:\\n        try:\\n            reduction = getattr(obj, method)\\n        except AttributeError:\\n            pass\\n        else:\\n            return reduction(axis=axis, out=out, **passkwargs)\\n\\n    return ufunc.reduce(obj, axis, bool, out, **passkwargs)\\n\\n\\ndef _take_dispatcher(a, indices, axis=None, out=None, mode=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_take_dispatcher)\\ndef take(a, indices, axis=None, out=None, mode='raise'):\\n    \\\"\\\"\\\"\\n    Take elements from an array along an axis.\\n\\n    When axis is not None, this function does the same thing as \\\"fancy\\\"\\n    indexing (indexing arrays using arrays); however, it can be easier to use\\n    if you need elements along a given axis. A call such as\\n    ``np.take(arr, indices, axis=3)`` is equivalent to\\n    ``arr[:,:,:,indices,...]``.\\n\\n    Explained without fancy indexing, this is equivalent to the following use\\n    of `ndindex`, which sets each of ``ii``, ``jj``, and ``kk`` to a tuple of\\n    indices::\\n\\n        Ni, Nk = a.shape[:axis], a.shape[axis+1:]\\n        Nj = indices.shape\\n        for ii in ndindex(Ni):\\n            for jj in ndindex(Nj):\\n                for kk in ndindex(Nk):\\n                    out[ii + jj + kk] = a[ii + (indices[jj],) + kk]\\n\\n    Parameters\\n    ----------\\n    a : array_like (Ni..., M, Nk...)\\n        The source array.\\n    indices : array_like (Nj...)\\n        The indices of the values to extract.\\n        Also allow scalars for indices.\\n    axis : int, optional\\n        The axis over which to select values. By default, the flattened\\n        input array is used.\\n    out : ndarray, optional (Ni..., Nj..., Nk...)\\n        If provided, the result will be placed in this array. It should\\n        be of the appropriate shape and dtype. Note that `out` is always\\n        buffered if `mode='raise'`; use other modes for better performance.\\n    mode : {'raise', 'wrap', 'clip'}, optional\\n        Specifies how out-of-bounds indices will behave.\\n\\n        * 'raise' -- raise an error (default)\\n        * 'wrap' -- wrap around\\n        * 'clip' -- clip to the range\\n\\n        'clip' mode means that all indices that are too large are replaced\\n        by the index that addresses the last element along that axis. Note\\n        that this disables indexing with negative numbers.\\n\\n    Returns\\n    -------\\n    out : ndarray (Ni..., Nj..., Nk...)\\n        The returned array has the same type as `a`.\\n\\n    See Also\\n    --------\\n    compress : Take elements using a boolean mask\\n    ndarray.take : equivalent method\\n    take_along_axis : Take elements by matching the array and the index arrays\\n\\n    Notes\\n    -----\\n    By eliminating the inner loop in the description above, and using `s_` to\\n    build simple slice objects, `take` can be expressed  in terms of applying\\n    fancy indexing to each 1-d slice::\\n\\n        Ni, Nk = a.shape[:axis], a.shape[axis+1:]\\n        for ii in ndindex(Ni):\\n            for kk in ndindex(Nk):\\n                out[ii + s_[...,] + kk] = a[ii + s_[:,] + kk][indices]\\n\\n    For this reason, it is equivalent to (but faster than) the following use\\n    of `apply_along_axis`::\\n\\n        out = np.apply_along_axis(lambda a_1d: a_1d[indices], axis, a)\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = [4, 3, 5, 7, 6, 8]\\n    >>> indices = [0, 1, 4]\\n    >>> np.take(a, indices)\\n    array([4, 3, 6])\\n\\n    In this example if `a` is an ndarray, \\\"fancy\\\" indexing can be used.\\n\\n    >>> a = np.array(a)\\n    >>> a[indices]\\n    array([4, 3, 6])\\n\\n    If `indices` is not one dimensional, the output also has these dimensions.\\n\\n    >>> np.take(a, [[0, 1], [2, 3]])\\n    array([[4, 3],\\n           [5, 7]])\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'take', indices, axis=axis, out=out, mode=mode)\\n\\n\\ndef _reshape_dispatcher(a, /, shape, order=None, *, copy=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_reshape_dispatcher)\\ndef reshape(a, /, shape, order='C', *, copy=None):\\n    \\\"\\\"\\\"\\n    Gives a new shape to an array without changing its data.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to be reshaped.\\n    shape : int or tuple of ints\\n        The new shape should be compatible with the original shape. If\\n        an integer, then the result will be a 1-D array of that length.\\n        One shape dimension can be -1. In this case, the value is\\n        inferred from the length of the array and remaining dimensions.\\n    order : {'C', 'F', 'A'}, optional\\n        Read the elements of ``a`` using this index order, and place the\\n        elements into the reshaped array using this index order. 'C'\\n        means to read / write the elements using C-like index order,\\n        with the last axis index changing fastest, back to the first\\n        axis index changing slowest. 'F' means to read / write the\\n        elements using Fortran-like index order, with the first index\\n        changing fastest, and the last index changing slowest. Note that\\n        the 'C' and 'F' options take no account of the memory layout of\\n        the underlying array, and only refer to the order of indexing.\\n        'A' means to read / write the elements in Fortran-like index\\n        order if ``a`` is Fortran *contiguous* in memory, C-like order\\n        otherwise.\\n    copy : bool, optional\\n        If ``True``, then the array data is copied. If ``None``, a copy will\\n        only be made if it's required by ``order``. For ``False`` it raises\\n        a ``ValueError`` if a copy cannot be avoided. Default: ``None``.\\n\\n    Returns\\n    -------\\n    reshaped_array : ndarray\\n        This will be a new view object if possible; otherwise, it will\\n        be a copy.  Note there is no guarantee of the *memory layout* (C- or\\n        Fortran- contiguous) of the returned array.\\n\\n    See Also\\n    --------\\n    ndarray.reshape : Equivalent method.\\n\\n    Notes\\n    -----\\n    It is not always possible to change the shape of an array without copying\\n    the data.\\n\\n    The ``order`` keyword gives the index ordering both for *fetching*\\n    the values from ``a``, and then *placing* the values into the output\\n    array. For example, let's say you have an array:\\n\\n    >>> a = np.arange(6).reshape((3, 2))\\n    >>> a\\n    array([[0, 1],\\n           [2, 3],\\n           [4, 5]])\\n\\n    You can think of reshaping as first raveling the array (using the given\\n    index order), then inserting the elements from the raveled array into the\\n    new array using the same kind of index ordering as was used for the\\n    raveling.\\n\\n    >>> np.reshape(a, (2, 3)) # C-like index ordering\\n    array([[0, 1, 2],\\n           [3, 4, 5]])\\n    >>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape\\n    array([[0, 1, 2],\\n           [3, 4, 5]])\\n    >>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering\\n    array([[0, 4, 3],\\n           [2, 1, 5]])\\n    >>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F')\\n    array([[0, 4, 3],\\n           [2, 1, 5]])\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1,2,3], [4,5,6]])\\n    >>> np.reshape(a, 6)\\n    array([1, 2, 3, 4, 5, 6])\\n    >>> np.reshape(a, 6, order='F')\\n    array([1, 4, 2, 5, 3, 6])\\n\\n    >>> np.reshape(a, (3,-1))       # the unspecified value is inferred to be 2\\n    array([[1, 2],\\n           [3, 4],\\n           [5, 6]])\\n    \\\"\\\"\\\"\\n    if copy is not None:\\n        return _wrapfunc(a, 'reshape', shape, order=order, copy=copy)\\n    return _wrapfunc(a, 'reshape', shape, order=order)\\n\\n\\ndef _choose_dispatcher(a, choices, out=None, mode=None):\\n    yield a\\n    yield from choices\\n    yield out\\n\\n\\n@array_function_dispatch(_choose_dispatcher)\\ndef choose(a, choices, out=None, mode='raise'):\\n    \\\"\\\"\\\"\\n    Construct an array from an index array and a list of arrays to choose from.\\n\\n    First of all, if confused or uncertain, definitely look at the Examples -\\n    in its full generality, this function is less simple than it might\\n    seem from the following code description::\\n\\n        np.choose(a,c) == np.array([c[a[I]][I] for I in np.ndindex(a.shape)])\\n\\n    But this omits some subtleties.  Here is a fully general summary:\\n\\n    Given an \\\"index\\\" array (`a`) of integers and a sequence of ``n`` arrays\\n    (`choices`), `a` and each choice array are first broadcast, as necessary,\\n    to arrays of a common shape; calling these *Ba* and *Bchoices[i], i =\\n    0,...,n-1* we have that, necessarily, ``Ba.shape == Bchoices[i].shape``\\n    for each ``i``.  Then, a new array with shape ``Ba.shape`` is created as\\n    follows:\\n\\n    * if ``mode='raise'`` (the default), then, first of all, each element of\\n      ``a`` (and thus ``Ba``) must be in the range ``[0, n-1]``; now, suppose\\n      that ``i`` (in that range) is the value at the ``(j0, j1, ..., jm)``\\n      position in ``Ba`` - then the value at the same position in the new array\\n      is the value in ``Bchoices[i]`` at that same position;\\n\\n    * if ``mode='wrap'``, values in `a` (and thus `Ba`) may be any (signed)\\n      integer; modular arithmetic is used to map integers outside the range\\n      `[0, n-1]` back into that range; and then the new array is constructed\\n      as above;\\n\\n    * if ``mode='clip'``, values in `a` (and thus ``Ba``) may be any (signed)\\n      integer; negative integers are mapped to 0; values greater than ``n-1``\\n      are mapped to ``n-1``; and then the new array is constructed as above.\\n\\n    Parameters\\n    ----------\\n    a : int array\\n        This array must contain integers in ``[0, n-1]``, where ``n`` is the\\n        number of choices, unless ``mode=wrap`` or ``mode=clip``, in which\\n        cases any integers are permissible.\\n    choices : sequence of arrays\\n        Choice arrays. `a` and all of the choices must be broadcastable to the\\n        same shape.  If `choices` is itself an array (not recommended), then\\n        its outermost dimension (i.e., the one corresponding to\\n        ``choices.shape[0]``) is taken as defining the \\\"sequence\\\".\\n    out : array, optional\\n        If provided, the result will be inserted into this array. It should\\n        be of the appropriate shape and dtype. Note that `out` is always\\n        buffered if ``mode='raise'``; use other modes for better performance.\\n    mode : {'raise' (default), 'wrap', 'clip'}, optional\\n        Specifies how indices outside ``[0, n-1]`` will be treated:\\n\\n        * 'raise' : an exception is raised\\n        * 'wrap' : value becomes value mod ``n``\\n        * 'clip' : values < 0 are mapped to 0, values > n-1 are mapped to n-1\\n\\n    Returns\\n    -------\\n    merged_array : array\\n        The merged result.\\n\\n    Raises\\n    ------\\n    ValueError: shape mismatch\\n        If `a` and each choice array are not all broadcastable to the same\\n        shape.\\n\\n    See Also\\n    --------\\n    ndarray.choose : equivalent method\\n    numpy.take_along_axis : Preferable if `choices` is an array\\n\\n    Notes\\n    -----\\n    To reduce the chance of misinterpretation, even though the following\\n    \\\"abuse\\\" is nominally supported, `choices` should neither be, nor be\\n    thought of as, a single array, i.e., the outermost sequence-like container\\n    should be either a list or a tuple.\\n\\n    Examples\\n    --------\\n\\n    >>> import numpy as np\\n    >>> choices = [[0, 1, 2, 3], [10, 11, 12, 13],\\n    ...   [20, 21, 22, 23], [30, 31, 32, 33]]\\n    >>> np.choose([2, 3, 1, 0], choices\\n    ... # the first element of the result will be the first element of the\\n    ... # third (2+1) \\\"array\\\" in choices, namely, 20; the second element\\n    ... # will be the second element of the fourth (3+1) choice array, i.e.,\\n    ... # 31, etc.\\n    ... )\\n    array([20, 31, 12,  3])\\n    >>> np.choose([2, 4, 1, 0], choices, mode='clip') # 4 goes to 3 (4-1)\\n    array([20, 31, 12,  3])\\n    >>> # because there are 4 choice arrays\\n    >>> np.choose([2, 4, 1, 0], choices, mode='wrap') # 4 goes to (4 mod 4)\\n    array([20,  1, 12,  3])\\n    >>> # i.e., 0\\n\\n    A couple examples illustrating how choose broadcasts:\\n\\n    >>> a = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]\\n    >>> choices = [-10, 10]\\n    >>> np.choose(a, choices)\\n    array([[ 10, -10,  10],\\n           [-10,  10, -10],\\n           [ 10, -10,  10]])\\n\\n    >>> # With thanks to Anne Archibald\\n    >>> a = np.array([0, 1]).reshape((2,1,1))\\n    >>> c1 = np.array([1, 2, 3]).reshape((1,3,1))\\n    >>> c2 = np.array([-1, -2, -3, -4, -5]).reshape((1,1,5))\\n    >>> np.choose(a, (c1, c2)) # result is 2x3x5, res[0,:,:]=c1, res[1,:,:]=c2\\n    array([[[ 1,  1,  1,  1,  1],\\n            [ 2,  2,  2,  2,  2],\\n            [ 3,  3,  3,  3,  3]],\\n           [[-1, -2, -3, -4, -5],\\n            [-1, -2, -3, -4, -5],\\n            [-1, -2, -3, -4, -5]]])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'choose', choices, out=out, mode=mode)\\n\\n\\ndef _repeat_dispatcher(a, repeats, axis=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_repeat_dispatcher)\\ndef repeat(a, repeats, axis=None):\\n    \\\"\\\"\\\"\\n    Repeat each element of an array after themselves\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    repeats : int or array of ints\\n        The number of repetitions for each element.  `repeats` is broadcasted\\n        to fit the shape of the given axis.\\n    axis : int, optional\\n        The axis along which to repeat values.  By default, use the\\n        flattened input array, and return a flat output array.\\n\\n    Returns\\n    -------\\n    repeated_array : ndarray\\n        Output array which has the same shape as `a`, except along\\n        the given axis.\\n\\n    See Also\\n    --------\\n    tile : Tile an array.\\n    unique : Find the unique elements of an array.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.repeat(3, 4)\\n    array([3, 3, 3, 3])\\n    >>> x = np.array([[1,2],[3,4]])\\n    >>> np.repeat(x, 2)\\n    array([1, 1, 2, 2, 3, 3, 4, 4])\\n    >>> np.repeat(x, 3, axis=1)\\n    array([[1, 1, 1, 2, 2, 2],\\n           [3, 3, 3, 4, 4, 4]])\\n    >>> np.repeat(x, [1, 2], axis=0)\\n    array([[1, 2],\\n           [3, 4],\\n           [3, 4]])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'repeat', repeats, axis=axis)\\n\\n\\ndef _put_dispatcher(a, ind, v, mode=None):\\n    return (a, ind, v)\\n\\n\\n@array_function_dispatch(_put_dispatcher)\\ndef put(a, ind, v, mode='raise'):\\n    \\\"\\\"\\\"\\n    Replaces specified elements of an array with given values.\\n\\n    The indexing works on the flattened target array. `put` is roughly\\n    equivalent to:\\n\\n    ::\\n\\n        a.flat[ind] = v\\n\\n    Parameters\\n    ----------\\n    a : ndarray\\n        Target array.\\n    ind : array_like\\n        Target indices, interpreted as integers.\\n    v : array_like\\n        Values to place in `a` at target indices. If `v` is shorter than\\n        `ind` it will be repeated as necessary.\\n    mode : {'raise', 'wrap', 'clip'}, optional\\n        Specifies how out-of-bounds indices will behave.\\n\\n        * 'raise' -- raise an error (default)\\n        * 'wrap' -- wrap around\\n        * 'clip' -- clip to the range\\n\\n        'clip' mode means that all indices that are too large are replaced\\n        by the index that addresses the last element along that axis. Note\\n        that this disables indexing with negative numbers. In 'raise' mode,\\n        if an exception occurs the target array may still be modified.\\n\\n    See Also\\n    --------\\n    putmask, place\\n    put_along_axis : Put elements by matching the array and the index arrays\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(5)\\n    >>> np.put(a, [0, 2], [-44, -55])\\n    >>> a\\n    array([-44,   1, -55,   3,   4])\\n\\n    >>> a = np.arange(5)\\n    >>> np.put(a, 22, -5, mode='clip')\\n    >>> a\\n    array([ 0,  1,  2,  3, -5])\\n\\n    \\\"\\\"\\\"\\n    try:\\n        put = a.put\\n    except AttributeError as e:\\n        raise TypeError(f\\\"argument 1 must be numpy.ndarray, not {type(a)}\\\") from e\\n\\n    return put(ind, v, mode=mode)\\n\\n\\ndef _swapaxes_dispatcher(a, axis1, axis2):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_swapaxes_dispatcher)\\ndef swapaxes(a, axis1, axis2):\\n    \\\"\\\"\\\"\\n    Interchange two axes of an array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axis1 : int\\n        First axis.\\n    axis2 : int\\n        Second axis.\\n\\n    Returns\\n    -------\\n    a_swapped : ndarray\\n        For NumPy >= 1.10.0, if `a` is an ndarray, then a view of `a` is\\n        returned; otherwise a new array is created. For earlier NumPy\\n        versions a view of `a` is returned only if the order of the\\n        axes is changed, otherwise the input array is returned.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.array([[1,2,3]])\\n    >>> np.swapaxes(x,0,1)\\n    array([[1],\\n           [2],\\n           [3]])\\n\\n    >>> x = np.array([[[0,1],[2,3]],[[4,5],[6,7]]])\\n    >>> x\\n    array([[[0, 1],\\n            [2, 3]],\\n           [[4, 5],\\n            [6, 7]]])\\n\\n    >>> np.swapaxes(x,0,2)\\n    array([[[0, 4],\\n            [2, 6]],\\n           [[1, 5],\\n            [3, 7]]])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'swapaxes', axis1, axis2)\\n\\n\\ndef _transpose_dispatcher(a, axes=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_transpose_dispatcher)\\ndef transpose(a, axes=None):\\n    \\\"\\\"\\\"\\n    Returns an array with axes transposed.\\n\\n    For a 1-D array, this returns an unchanged view of the original array, as a\\n    transposed vector is simply the same vector.\\n    To convert a 1-D array into a 2-D column vector, an additional dimension\\n    must be added, e.g., ``np.atleast_2d(a).T`` achieves this, as does\\n    ``a[:, np.newaxis]``.\\n    For a 2-D array, this is the standard matrix transpose.\\n    For an n-D array, if axes are given, their order indicates how the\\n    axes are permuted (see Examples). If axes are not provided, then\\n    ``transpose(a).shape == a.shape[::-1]``.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axes : tuple or list of ints, optional\\n        If specified, it must be a tuple or list which contains a permutation\\n        of [0, 1, ..., N-1] where N is the number of axes of `a`. Negative\\n        indices can also be used to specify axes. The i-th axis of the returned\\n        array will correspond to the axis numbered ``axes[i]`` of the input.\\n        If not specified, defaults to ``range(a.ndim)[::-1]``, which reverses\\n        the order of the axes.\\n\\n    Returns\\n    -------\\n    p : ndarray\\n        `a` with its axes permuted. A view is returned whenever possible.\\n\\n    See Also\\n    --------\\n    ndarray.transpose : Equivalent method.\\n    moveaxis : Move axes of an array to new positions.\\n    argsort : Return the indices that would sort an array.\\n\\n    Notes\\n    -----\\n    Use ``transpose(a, argsort(axes))`` to invert the transposition of tensors\\n    when using the `axes` keyword argument.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4]])\\n    >>> a\\n    array([[1, 2],\\n           [3, 4]])\\n    >>> np.transpose(a)\\n    array([[1, 3],\\n           [2, 4]])\\n\\n    >>> a = np.array([1, 2, 3, 4])\\n    >>> a\\n    array([1, 2, 3, 4])\\n    >>> np.transpose(a)\\n    array([1, 2, 3, 4])\\n\\n    >>> a = np.ones((1, 2, 3))\\n    >>> np.transpose(a, (1, 0, 2)).shape\\n    (2, 1, 3)\\n\\n    >>> a = np.ones((2, 3, 4, 5))\\n    >>> np.transpose(a).shape\\n    (5, 4, 3, 2)\\n\\n    >>> a = np.arange(3*4*5).reshape((3, 4, 5))\\n    >>> np.transpose(a, (-1, 0, -2)).shape\\n    (5, 3, 4)\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'transpose', axes)\\n\\n\\ndef _matrix_transpose_dispatcher(x):\\n    return (x,)\\n\\n@array_function_dispatch(_matrix_transpose_dispatcher)\\ndef matrix_transpose(x, /):\\n    \\\"\\\"\\\"\\n    Transposes a matrix (or a stack of matrices) ``x``.\\n\\n    This function is Array API compatible.\\n\\n    Parameters\\n    ----------\\n    x : array_like\\n        Input array having shape (..., M, N) and whose two innermost\\n        dimensions form ``MxN`` matrices.\\n\\n    Returns\\n    -------\\n    out : ndarray\\n        An array containing the transpose for each matrix and having shape\\n        (..., N, M).\\n\\n    See Also\\n    --------\\n    transpose : Generic transpose method.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.matrix_transpose([[1, 2], [3, 4]])\\n    array([[1, 3],\\n           [2, 4]])\\n\\n    >>> np.matrix_transpose([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])\\n    array([[[1, 3],\\n            [2, 4]],\\n           [[5, 7],\\n            [6, 8]]])\\n\\n    \\\"\\\"\\\"\\n    x = asanyarray(x)\\n    if x.ndim < 2:\\n        raise ValueError(\\n            f\\\"Input array must be at least 2-dimensional, but it is {x.ndim}\\\"\\n        )\\n    return swapaxes(x, -1, -2)\\n\\n\\ndef _partition_dispatcher(a, kth, axis=None, kind=None, order=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_partition_dispatcher)\\ndef partition(a, kth, axis=-1, kind='introselect', order=None):\\n    \\\"\\\"\\\"\\n    Return a partitioned copy of an array.\\n\\n    Creates a copy of the array and partially sorts it in such a way that\\n    the value of the element in k-th position is in the position it would be\\n    in a sorted array. In the output array, all elements smaller than the k-th\\n    element are located to the left of this element and all equal or greater\\n    are located to its right. The ordering of the elements in the two\\n    partitions on the either side of the k-th element in the output array is\\n    undefined.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to be sorted.\\n    kth : int or sequence of ints\\n        Element index to partition by. The k-th value of the element\\n        will be in its final sorted position and all smaller elements\\n        will be moved before it and all equal or greater elements behind\\n        it. The order of all elements in the partitions is undefined. If\\n        provided with a sequence of k-th it will partition all elements\\n        indexed by k-th  of them into their sorted position at once.\\n\\n    axis : int or None, optional\\n        Axis along which to sort. If None, the array is flattened before\\n        sorting. The default is -1, which sorts along the last axis.\\n    kind : {'introselect'}, optional\\n        Selection algorithm. Default is 'introselect'.\\n    order : str or list of str, optional\\n        When `a` is an array with fields defined, this argument\\n        specifies which fields to compare first, second, etc.  A single\\n        field can be specified as a string.  Not all fields need be\\n        specified, but unspecified fields will still be used, in the\\n        order in which they come up in the dtype, to break ties.\\n\\n    Returns\\n    -------\\n    partitioned_array : ndarray\\n        Array of the same type and shape as `a`.\\n\\n    See Also\\n    --------\\n    ndarray.partition : Method to sort an array in-place.\\n    argpartition : Indirect partition.\\n    sort : Full sorting\\n\\n    Notes\\n    -----\\n    The various selection algorithms are characterized by their average\\n    speed, worst case performance, work space size, and whether they are\\n    stable. A stable sort keeps items with the same key in the same\\n    relative order. The available algorithms have the following\\n    properties:\\n\\n    ================= ======= ============= ============ =======\\n       kind            speed   worst case    work space  stable\\n    ================= ======= ============= ============ =======\\n    'introselect'        1        O(n)           0         no\\n    ================= ======= ============= ============ =======\\n\\n    All the partition algorithms make temporary copies of the data when\\n    partitioning along any but the last axis.  Consequently,\\n    partitioning along the last axis is faster and uses less space than\\n    partitioning along any other axis.\\n\\n    The sort order for complex numbers is lexicographic. If both the\\n    real and imaginary parts are non-nan then the order is determined by\\n    the real parts except when they are equal, in which case the order\\n    is determined by the imaginary parts.\\n\\n    The sort order of ``np.nan`` is bigger than ``np.inf``.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([7, 1, 7, 7, 1, 5, 7, 2, 3, 2, 6, 2, 3, 0])\\n    >>> p = np.partition(a, 4)\\n    >>> p\\n    array([0, 1, 2, 1, 2, 5, 2, 3, 3, 6, 7, 7, 7, 7]) # may vary\\n\\n    ``p[4]`` is 2;  all elements in ``p[:4]`` are less than or equal\\n    to ``p[4]``, and all elements in ``p[5:]`` are greater than or\\n    equal to ``p[4]``.  The partition is::\\n\\n        [0, 1, 2, 1], [2], [5, 2, 3, 3, 6, 7, 7, 7, 7]\\n\\n    The next example shows the use of multiple values passed to `kth`.\\n\\n    >>> p2 = np.partition(a, (4, 8))\\n    >>> p2\\n    array([0, 1, 2, 1, 2, 3, 3, 2, 5, 6, 7, 7, 7, 7])\\n\\n    ``p2[4]`` is 2  and ``p2[8]`` is 5.  All elements in ``p2[:4]``\\n    are less than or equal to ``p2[4]``, all elements in ``p2[5:8]``\\n    are greater than or equal to ``p2[4]`` and less than or equal to\\n    ``p2[8]``, and all elements in ``p2[9:]`` are greater than or\\n    equal to ``p2[8]``.  The partition is::\\n\\n        [0, 1, 2, 1], [2], [3, 3, 2], [5], [6, 7, 7, 7, 7]\\n    \\\"\\\"\\\"\\n    if axis is None:\\n        # flatten returns (1, N) for np.matrix, so always use the last axis\\n        a = asanyarray(a).flatten()\\n        axis = -1\\n    else:\\n        a = asanyarray(a).copy(order=\\\"K\\\")\\n    a.partition(kth, axis=axis, kind=kind, order=order)\\n    return a\\n\\n\\ndef _argpartition_dispatcher(a, kth, axis=None, kind=None, order=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_argpartition_dispatcher)\\ndef argpartition(a, kth, axis=-1, kind='introselect', order=None):\\n    \\\"\\\"\\\"\\n    Perform an indirect partition along the given axis using the\\n    algorithm specified by the `kind` keyword. It returns an array of\\n    indices of the same shape as `a` that index data along the given\\n    axis in partitioned order.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to sort.\\n    kth : int or sequence of ints\\n        Element index to partition by. The k-th element will be in its\\n        final sorted position and all smaller elements will be moved\\n        before it and all larger elements behind it. The order of all\\n        elements in the partitions is undefined. If provided with a\\n        sequence of k-th it will partition all of them into their sorted\\n        position at once.\\n\\n    axis : int or None, optional\\n        Axis along which to sort. The default is -1 (the last axis). If\\n        None, the flattened array is used.\\n    kind : {'introselect'}, optional\\n        Selection algorithm. Default is 'introselect'\\n    order : str or list of str, optional\\n        When `a` is an array with fields defined, this argument\\n        specifies which fields to compare first, second, etc. A single\\n        field can be specified as a string, and not all fields need be\\n        specified, but unspecified fields will still be used, in the\\n        order in which they come up in the dtype, to break ties.\\n\\n    Returns\\n    -------\\n    index_array : ndarray, int\\n        Array of indices that partition `a` along the specified axis.\\n        If `a` is one-dimensional, ``a[index_array]`` yields a partitioned `a`.\\n        More generally, ``np.take_along_axis(a, index_array, axis=axis)``\\n        always yields the partitioned `a`, irrespective of dimensionality.\\n\\n    See Also\\n    --------\\n    partition : Describes partition algorithms used.\\n    ndarray.partition : Inplace partition.\\n    argsort : Full indirect sort.\\n    take_along_axis : Apply ``index_array`` from argpartition\\n                      to an array as if by calling partition.\\n\\n    Notes\\n    -----\\n    The returned indices are not guaranteed to be sorted according to\\n    the values. Furthermore, the default selection algorithm ``introselect``\\n    is unstable, and hence the returned indices are not guaranteed\\n    to be the earliest/latest occurrence of the element.\\n\\n    `argpartition` works for real/complex inputs with nan values,\\n    see `partition` for notes on the enhanced sort order and\\n    different selection algorithms.\\n\\n    Examples\\n    --------\\n    One dimensional array:\\n\\n    >>> import numpy as np\\n    >>> x = np.array([3, 4, 2, 1])\\n    >>> x[np.argpartition(x, 3)]\\n    array([2, 1, 3, 4]) # may vary\\n    >>> x[np.argpartition(x, (1, 3))]\\n    array([1, 2, 3, 4]) # may vary\\n\\n    >>> x = [3, 4, 2, 1]\\n    >>> np.array(x)[np.argpartition(x, 3)]\\n    array([2, 1, 3, 4]) # may vary\\n\\n    Multi-dimensional array:\\n\\n    >>> x = np.array([[3, 4, 2], [1, 3, 1]])\\n    >>> index_array = np.argpartition(x, kth=1, axis=-1)\\n    >>> # below is the same as np.partition(x, kth=1)\\n    >>> np.take_along_axis(x, index_array, axis=-1)\\n    array([[2, 3, 4],\\n           [1, 1, 3]])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'argpartition', kth, axis=axis, kind=kind, order=order)\\n\\n\\ndef _sort_dispatcher(a, axis=None, kind=None, order=None, *, stable=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_sort_dispatcher)\\ndef sort(a, axis=-1, kind=None, order=None, *, stable=None):\\n    \\\"\\\"\\\"\\n    Return a sorted copy of an array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to be sorted.\\n    axis : int or None, optional\\n        Axis along which to sort. If None, the array is flattened before\\n        sorting. The default is -1, which sorts along the last axis.\\n    kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional\\n        Sorting algorithm. The default is 'quicksort'. Note that both 'stable'\\n        and 'mergesort' use timsort or radix sort under the covers and,\\n        in general, the actual implementation will vary with data type.\\n        The 'mergesort' option is retained for backwards compatibility.\\n    order : str or list of str, optional\\n        When `a` is an array with fields defined, this argument specifies\\n        which fields to compare first, second, etc.  A single field can\\n        be specified as a string, and not all fields need be specified,\\n        but unspecified fields will still be used, in the order in which\\n        they come up in the dtype, to break ties.\\n    stable : bool, optional\\n        Sort stability. If ``True``, the returned array will maintain\\n        the relative order of ``a`` values which compare as equal.\\n        If ``False`` or ``None``, this is not guaranteed. Internally,\\n        this option selects ``kind='stable'``. Default: ``None``.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    sorted_array : ndarray\\n        Array of the same type and shape as `a`.\\n\\n    See Also\\n    --------\\n    ndarray.sort : Method to sort an array in-place.\\n    argsort : Indirect sort.\\n    lexsort : Indirect stable sort on multiple keys.\\n    searchsorted : Find elements in a sorted array.\\n    partition : Partial sort.\\n\\n    Notes\\n    -----\\n    The various sorting algorithms are characterized by their average speed,\\n    worst case performance, work space size, and whether they are stable. A\\n    stable sort keeps items with the same key in the same relative\\n    order. The four algorithms implemented in NumPy have the following\\n    properties:\\n\\n    =========== ======= ============= ============ ========\\n       kind      speed   worst case    work space   stable\\n    =========== ======= ============= ============ ========\\n    'quicksort'    1     O(n^2)            0          no\\n    'heapsort'     3     O(n*log(n))       0          no\\n    'mergesort'    2     O(n*log(n))      ~n/2        yes\\n    'timsort'      2     O(n*log(n))      ~n/2        yes\\n    =========== ======= ============= ============ ========\\n\\n    .. note:: The datatype determines which of 'mergesort' or 'timsort'\\n       is actually used, even if 'mergesort' is specified. User selection\\n       at a finer scale is not currently available.\\n\\n    For performance, ``sort`` makes a temporary copy if needed to make the data\\n    `contiguous <https://numpy.org/doc/stable/glossary.html#term-contiguous>`_\\n    in memory along the sort axis. For even better performance and reduced\\n    memory consumption, ensure that the array is already contiguous along the\\n    sort axis.\\n\\n    The sort order for complex numbers is lexicographic. If both the real\\n    and imaginary parts are non-nan then the order is determined by the\\n    real parts except when they are equal, in which case the order is\\n    determined by the imaginary parts.\\n\\n    Previous to numpy 1.4.0 sorting real and complex arrays containing nan\\n    values led to undefined behaviour. In numpy versions >= 1.4.0 nan\\n    values are sorted to the end. The extended sort order is:\\n\\n      * Real: [R, nan]\\n      * Complex: [R + Rj, R + nanj, nan + Rj, nan + nanj]\\n\\n    where R is a non-nan real value. Complex values with the same nan\\n    placements are sorted according to the non-nan part if it exists.\\n    Non-nan values are sorted as before.\\n\\n    quicksort has been changed to:\\n    `introsort <https://en.wikipedia.org/wiki/Introsort>`_.\\n    When sorting does not make enough progress it switches to\\n    `heapsort <https://en.wikipedia.org/wiki/Heapsort>`_.\\n    This implementation makes quicksort O(n*log(n)) in the worst case.\\n\\n    'stable' automatically chooses the best stable sorting algorithm\\n    for the data type being sorted.\\n    It, along with 'mergesort' is currently mapped to\\n    `timsort <https://en.wikipedia.org/wiki/Timsort>`_\\n    or `radix sort <https://en.wikipedia.org/wiki/Radix_sort>`_\\n    depending on the data type.\\n    API forward compatibility currently limits the\\n    ability to select the implementation and it is hardwired for the different\\n    data types.\\n\\n    Timsort is added for better performance on already or nearly\\n    sorted data. On random data timsort is almost identical to\\n    mergesort. It is now used for stable sort while quicksort is still the\\n    default sort if none is chosen. For timsort details, refer to\\n    `CPython listsort.txt\\n    <https://github.com/python/cpython/blob/3.7/Objects/listsort.txt>`_\\n    'mergesort' and 'stable' are mapped to radix sort for integer data types.\\n    Radix sort is an O(n) sort instead of O(n log n).\\n\\n    NaT now sorts to the end of arrays for consistency with NaN.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1,4],[3,1]])\\n    >>> np.sort(a)                # sort along the last axis\\n    array([[1, 4],\\n           [1, 3]])\\n    >>> np.sort(a, axis=None)     # sort the flattened array\\n    array([1, 1, 3, 4])\\n    >>> np.sort(a, axis=0)        # sort along the first axis\\n    array([[1, 1],\\n           [3, 4]])\\n\\n    Use the `order` keyword to specify a field to use when sorting a\\n    structured array:\\n\\n    >>> dtype = [('name', 'S10'), ('height', float), ('age', int)]\\n    >>> values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),\\n    ...           ('Galahad', 1.7, 38)]\\n    >>> a = np.array(values, dtype=dtype)       # create a structured array\\n    >>> np.sort(a, order='height')                        # doctest: +SKIP\\n    array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41),\\n           ('Lancelot', 1.8999999999999999, 38)],\\n          dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])\\n\\n    Sort by age, then height if ages are equal:\\n\\n    >>> np.sort(a, order=['age', 'height'])               # doctest: +SKIP\\n    array([('Galahad', 1.7, 38), ('Lancelot', 1.8999999999999999, 38),\\n           ('Arthur', 1.8, 41)],\\n          dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])\\n\\n    \\\"\\\"\\\"\\n    if axis is None:\\n        # flatten returns (1, N) for np.matrix, so always use the last axis\\n        a = asanyarray(a).flatten()\\n        axis = -1\\n    else:\\n        a = asanyarray(a).copy(order=\\\"K\\\")\\n    a.sort(axis=axis, kind=kind, order=order, stable=stable)\\n    return a\\n\\n\\ndef _argsort_dispatcher(a, axis=None, kind=None, order=None, *, stable=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_argsort_dispatcher)\\ndef argsort(a, axis=-1, kind=None, order=None, *, stable=None):\\n    \\\"\\\"\\\"\\n    Returns the indices that would sort an array.\\n\\n    Perform an indirect sort along the given axis using the algorithm specified\\n    by the `kind` keyword. It returns an array of indices of the same shape as\\n    `a` that index data along the given axis in sorted order.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to sort.\\n    axis : int or None, optional\\n        Axis along which to sort.  The default is -1 (the last axis). If None,\\n        the flattened array is used.\\n    kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional\\n        Sorting algorithm. The default is 'quicksort'. Note that both 'stable'\\n        and 'mergesort' use timsort under the covers and, in general, the\\n        actual implementation will vary with data type. The 'mergesort' option\\n        is retained for backwards compatibility.\\n    order : str or list of str, optional\\n        When `a` is an array with fields defined, this argument specifies\\n        which fields to compare first, second, etc.  A single field can\\n        be specified as a string, and not all fields need be specified,\\n        but unspecified fields will still be used, in the order in which\\n        they come up in the dtype, to break ties.\\n    stable : bool, optional\\n        Sort stability. If ``True``, the returned array will maintain\\n        the relative order of ``a`` values which compare as equal.\\n        If ``False`` or ``None``, this is not guaranteed. Internally,\\n        this option selects ``kind='stable'``. Default: ``None``.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    index_array : ndarray, int\\n        Array of indices that sort `a` along the specified `axis`.\\n        If `a` is one-dimensional, ``a[index_array]`` yields a sorted `a`.\\n        More generally, ``np.take_along_axis(a, index_array, axis=axis)``\\n        always yields the sorted `a`, irrespective of dimensionality.\\n\\n    See Also\\n    --------\\n    sort : Describes sorting algorithms used.\\n    lexsort : Indirect stable sort with multiple keys.\\n    ndarray.sort : Inplace sort.\\n    argpartition : Indirect partial sort.\\n    take_along_axis : Apply ``index_array`` from argsort\\n                      to an array as if by calling sort.\\n\\n    Notes\\n    -----\\n    See `sort` for notes on the different sorting algorithms.\\n\\n    As of NumPy 1.4.0 `argsort` works with real/complex arrays containing\\n    nan values. The enhanced sort order is documented in `sort`.\\n\\n    Examples\\n    --------\\n    One dimensional array:\\n\\n    >>> import numpy as np\\n    >>> x = np.array([3, 1, 2])\\n    >>> np.argsort(x)\\n    array([1, 2, 0])\\n\\n    Two-dimensional array:\\n\\n    >>> x = np.array([[0, 3], [2, 2]])\\n    >>> x\\n    array([[0, 3],\\n           [2, 2]])\\n\\n    >>> ind = np.argsort(x, axis=0)  # sorts along first axis (down)\\n    >>> ind\\n    array([[0, 1],\\n           [1, 0]])\\n    >>> np.take_along_axis(x, ind, axis=0)  # same as np.sort(x, axis=0)\\n    array([[0, 2],\\n           [2, 3]])\\n\\n    >>> ind = np.argsort(x, axis=1)  # sorts along last axis (across)\\n    >>> ind\\n    array([[0, 1],\\n           [0, 1]])\\n    >>> np.take_along_axis(x, ind, axis=1)  # same as np.sort(x, axis=1)\\n    array([[0, 3],\\n           [2, 2]])\\n\\n    Indices of the sorted elements of a N-dimensional array:\\n\\n    >>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape)\\n    >>> ind\\n    (array([0, 1, 1, 0]), array([0, 0, 1, 1]))\\n    >>> x[ind]  # same as np.sort(x, axis=None)\\n    array([0, 2, 2, 3])\\n\\n    Sorting with keys:\\n\\n    >>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])\\n    >>> x\\n    array([(1, 0), (0, 1)],\\n          dtype=[('x', '<i4'), ('y', '<i4')])\\n\\n    >>> np.argsort(x, order=('x','y'))\\n    array([1, 0])\\n\\n    >>> np.argsort(x, order=('y','x'))\\n    array([0, 1])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(\\n        a, 'argsort', axis=axis, kind=kind, order=order, stable=stable\\n    )\\n\\ndef _argmax_dispatcher(a, axis=None, out=None, *, keepdims=np._NoValue):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_argmax_dispatcher)\\ndef argmax(a, axis=None, out=None, *, keepdims=np._NoValue):\\n    \\\"\\\"\\\"\\n    Returns the indices of the maximum values along an axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axis : int, optional\\n        By default, the index is into the flattened array, otherwise\\n        along the specified axis.\\n    out : array, optional\\n        If provided, the result will be inserted into this array. It should\\n        be of the appropriate shape and dtype.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the array.\\n\\n        .. versionadded:: 1.22.0\\n\\n    Returns\\n    -------\\n    index_array : ndarray of ints\\n        Array of indices into the array. It has the same shape as ``a.shape``\\n        with the dimension along `axis` removed. If `keepdims` is set to True,\\n        then the size of `axis` will be 1 with the resulting array having same\\n        shape as ``a.shape``.\\n\\n    See Also\\n    --------\\n    ndarray.argmax, argmin\\n    amax : The maximum value along a given axis.\\n    unravel_index : Convert a flat index into an index tuple.\\n    take_along_axis : Apply ``np.expand_dims(index_array, axis)``\\n                      from argmax to an array as if by calling max.\\n\\n    Notes\\n    -----\\n    In case of multiple occurrences of the maximum values, the indices\\n    corresponding to the first occurrence are returned.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(6).reshape(2,3) + 10\\n    >>> a\\n    array([[10, 11, 12],\\n           [13, 14, 15]])\\n    >>> np.argmax(a)\\n    5\\n    >>> np.argmax(a, axis=0)\\n    array([1, 1, 1])\\n    >>> np.argmax(a, axis=1)\\n    array([2, 2])\\n\\n    Indexes of the maximal elements of a N-dimensional array:\\n\\n    >>> a.flat[np.argmax(a)]\\n    15\\n    >>> ind = np.unravel_index(np.argmax(a, axis=None), a.shape)\\n    >>> ind\\n    (1, 2)\\n    >>> a[ind]\\n    15\\n\\n    >>> b = np.arange(6)\\n    >>> b[1] = 5\\n    >>> b\\n    array([0, 5, 2, 3, 4, 5])\\n    >>> np.argmax(b)  # Only the first occurrence is returned.\\n    1\\n\\n    >>> x = np.array([[4,2,3], [1,0,3]])\\n    >>> index_array = np.argmax(x, axis=-1)\\n    >>> # Same as np.amax(x, axis=-1, keepdims=True)\\n    >>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1), axis=-1)\\n    array([[4],\\n           [3]])\\n    >>> # Same as np.amax(x, axis=-1)\\n    >>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1),\\n    ...     axis=-1).squeeze(axis=-1)\\n    array([4, 3])\\n\\n    Setting `keepdims` to `True`,\\n\\n    >>> x = np.arange(24).reshape((2, 3, 4))\\n    >>> res = np.argmax(x, axis=1, keepdims=True)\\n    >>> res.shape\\n    (2, 1, 4)\\n    \\\"\\\"\\\"\\n    kwds = {'keepdims': keepdims} if keepdims is not np._NoValue else {}\\n    return _wrapfunc(a, 'argmax', axis=axis, out=out, **kwds)\\n\\n\\ndef _argmin_dispatcher(a, axis=None, out=None, *, keepdims=np._NoValue):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_argmin_dispatcher)\\ndef argmin(a, axis=None, out=None, *, keepdims=np._NoValue):\\n    \\\"\\\"\\\"\\n    Returns the indices of the minimum values along an axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axis : int, optional\\n        By default, the index is into the flattened array, otherwise\\n        along the specified axis.\\n    out : array, optional\\n        If provided, the result will be inserted into this array. It should\\n        be of the appropriate shape and dtype.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the array.\\n\\n        .. versionadded:: 1.22.0\\n\\n    Returns\\n    -------\\n    index_array : ndarray of ints\\n        Array of indices into the array. It has the same shape as `a.shape`\\n        with the dimension along `axis` removed. If `keepdims` is set to True,\\n        then the size of `axis` will be 1 with the resulting array having same\\n        shape as `a.shape`.\\n\\n    See Also\\n    --------\\n    ndarray.argmin, argmax\\n    amin : The minimum value along a given axis.\\n    unravel_index : Convert a flat index into an index tuple.\\n    take_along_axis : Apply ``np.expand_dims(index_array, axis)``\\n                      from argmin to an array as if by calling min.\\n\\n    Notes\\n    -----\\n    In case of multiple occurrences of the minimum values, the indices\\n    corresponding to the first occurrence are returned.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(6).reshape(2,3) + 10\\n    >>> a\\n    array([[10, 11, 12],\\n           [13, 14, 15]])\\n    >>> np.argmin(a)\\n    0\\n    >>> np.argmin(a, axis=0)\\n    array([0, 0, 0])\\n    >>> np.argmin(a, axis=1)\\n    array([0, 0])\\n\\n    Indices of the minimum elements of a N-dimensional array:\\n\\n    >>> a.flat[np.argmin(a)]\\n    10\\n    >>> ind = np.unravel_index(np.argmin(a, axis=None), a.shape)\\n    >>> ind\\n    (0, 0)\\n    >>> a[ind]\\n    10\\n\\n    >>> b = np.arange(6) + 10\\n    >>> b[4] = 10\\n    >>> b\\n    array([10, 11, 12, 13, 10, 15])\\n    >>> np.argmin(b)  # Only the first occurrence is returned.\\n    0\\n\\n    >>> x = np.array([[4,2,3], [1,0,3]])\\n    >>> index_array = np.argmin(x, axis=-1)\\n    >>> # Same as np.amin(x, axis=-1, keepdims=True)\\n    >>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1), axis=-1)\\n    array([[2],\\n           [0]])\\n    >>> # Same as np.amax(x, axis=-1)\\n    >>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1),\\n    ...     axis=-1).squeeze(axis=-1)\\n    array([2, 0])\\n\\n    Setting `keepdims` to `True`,\\n\\n    >>> x = np.arange(24).reshape((2, 3, 4))\\n    >>> res = np.argmin(x, axis=1, keepdims=True)\\n    >>> res.shape\\n    (2, 1, 4)\\n    \\\"\\\"\\\"\\n    kwds = {'keepdims': keepdims} if keepdims is not np._NoValue else {}\\n    return _wrapfunc(a, 'argmin', axis=axis, out=out, **kwds)\\n\\n\\ndef _searchsorted_dispatcher(a, v, side=None, sorter=None):\\n    return (a, v, sorter)\\n\\n\\n@array_function_dispatch(_searchsorted_dispatcher)\\ndef searchsorted(a, v, side='left', sorter=None):\\n    \\\"\\\"\\\"\\n    Find indices where elements should be inserted to maintain order.\\n\\n    Find the indices into a sorted array `a` such that, if the\\n    corresponding elements in `v` were inserted before the indices, the\\n    order of `a` would be preserved.\\n\\n    Assuming that `a` is sorted:\\n\\n    ======  ============================\\n    `side`  returned index `i` satisfies\\n    ======  ============================\\n    left    ``a[i-1] < v <= a[i]``\\n    right   ``a[i-1] <= v < a[i]``\\n    ======  ============================\\n\\n    Parameters\\n    ----------\\n    a : 1-D array_like\\n        Input array. If `sorter` is None, then it must be sorted in\\n        ascending order, otherwise `sorter` must be an array of indices\\n        that sort it.\\n    v : array_like\\n        Values to insert into `a`.\\n    side : {'left', 'right'}, optional\\n        If 'left', the index of the first suitable location found is given.\\n        If 'right', return the last such index.  If there is no suitable\\n        index, return either 0 or N (where N is the length of `a`).\\n    sorter : 1-D array_like, optional\\n        Optional array of integer indices that sort array a into ascending\\n        order. They are typically the result of argsort.\\n\\n    Returns\\n    -------\\n    indices : int or array of ints\\n        Array of insertion points with the same shape as `v`,\\n        or an integer if `v` is a scalar.\\n\\n    See Also\\n    --------\\n    sort : Return a sorted copy of an array.\\n    histogram : Produce histogram from 1-D data.\\n\\n    Notes\\n    -----\\n    Binary search is used to find the required insertion points.\\n\\n    As of NumPy 1.4.0 `searchsorted` works with real/complex arrays containing\\n    `nan` values. The enhanced sort order is documented in `sort`.\\n\\n    This function uses the same algorithm as the builtin python\\n    `bisect.bisect_left` (``side='left'``) and `bisect.bisect_right`\\n    (``side='right'``) functions, which is also vectorized\\n    in the `v` argument.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.searchsorted([11,12,13,14,15], 13)\\n    2\\n    >>> np.searchsorted([11,12,13,14,15], 13, side='right')\\n    3\\n    >>> np.searchsorted([11,12,13,14,15], [-10, 20, 12, 13])\\n    array([0, 5, 1, 2])\\n\\n    When `sorter` is used, the returned indices refer to the sorted\\n    array of `a` and not `a` itself:\\n\\n    >>> a = np.array([40, 10, 20, 30])\\n    >>> sorter = np.argsort(a)\\n    >>> sorter\\n    array([1, 2, 3, 0])  # Indices that would sort the array 'a'\\n    >>> result = np.searchsorted(a, 25, sorter=sorter)\\n    >>> result\\n    2\\n    >>> a[sorter[result]]\\n    30  # The element at index 2 of the sorted array is 30.\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'searchsorted', v, side=side, sorter=sorter)\\n\\n\\ndef _resize_dispatcher(a, new_shape):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_resize_dispatcher)\\ndef resize(a, new_shape):\\n    \\\"\\\"\\\"\\n    Return a new array with the specified shape.\\n\\n    If the new array is larger than the original array, then the new\\n    array is filled with repeated copies of `a`.  Note that this behavior\\n    is different from a.resize(new_shape) which fills with zeros instead\\n    of repeated copies of `a`.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array to be resized.\\n\\n    new_shape : int or tuple of int\\n        Shape of resized array.\\n\\n    Returns\\n    -------\\n    reshaped_array : ndarray\\n        The new array is formed from the data in the old array, repeated\\n        if necessary to fill out the required number of elements.  The\\n        data are repeated iterating over the array in C-order.\\n\\n    See Also\\n    --------\\n    numpy.reshape : Reshape an array without changing the total size.\\n    numpy.pad : Enlarge and pad an array.\\n    numpy.repeat : Repeat elements of an array.\\n    ndarray.resize : resize an array in-place.\\n\\n    Notes\\n    -----\\n    When the total size of the array does not change `~numpy.reshape` should\\n    be used.  In most other cases either indexing (to reduce the size)\\n    or padding (to increase the size) may be a more appropriate solution.\\n\\n    Warning: This functionality does **not** consider axes separately,\\n    i.e. it does not apply interpolation/extrapolation.\\n    It fills the return array with the required number of elements, iterating\\n    over `a` in C-order, disregarding axes (and cycling back from the start if\\n    the new shape is larger).  This functionality is therefore not suitable to\\n    resize images, or data where each axis represents a separate and distinct\\n    entity.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[0,1],[2,3]])\\n    >>> np.resize(a,(2,3))\\n    array([[0, 1, 2],\\n           [3, 0, 1]])\\n    >>> np.resize(a,(1,4))\\n    array([[0, 1, 2, 3]])\\n    >>> np.resize(a,(2,4))\\n    array([[0, 1, 2, 3],\\n           [0, 1, 2, 3]])\\n\\n    \\\"\\\"\\\"\\n    if isinstance(new_shape, (int, nt.integer)):\\n        new_shape = (new_shape,)\\n\\n    a = ravel(a)\\n\\n    new_size = 1\\n    for dim_length in new_shape:\\n        new_size *= dim_length\\n        if dim_length < 0:\\n            raise ValueError(\\n                'all elements of `new_shape` must be non-negative'\\n            )\\n\\n    if a.size == 0 or new_size == 0:\\n        # First case must zero fill. The second would have repeats == 0.\\n        return np.zeros_like(a, shape=new_shape)\\n\\n    # ceiling division without negating new_size\\n    repeats = (new_size + a.size - 1) // a.size\\n    a = concatenate((a,) * repeats)[:new_size]\\n\\n    return reshape(a, new_shape)\\n\\n\\ndef _squeeze_dispatcher(a, axis=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_squeeze_dispatcher)\\ndef squeeze(a, axis=None):\\n    \\\"\\\"\\\"\\n    Remove axes of length one from `a`.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    axis : None or int or tuple of ints, optional\\n        Selects a subset of the entries of length one in the\\n        shape. If an axis is selected with shape entry greater than\\n        one, an error is raised.\\n\\n    Returns\\n    -------\\n    squeezed : ndarray\\n        The input array, but with all or a subset of the\\n        dimensions of length 1 removed. This is always `a` itself\\n        or a view into `a`. Note that if all axes are squeezed,\\n        the result is a 0d array and not a scalar.\\n\\n    Raises\\n    ------\\n    ValueError\\n        If `axis` is not None, and an axis being squeezed is not of length 1\\n\\n    See Also\\n    --------\\n    expand_dims : The inverse operation, adding entries of length one\\n    reshape : Insert, remove, and combine dimensions, and resize existing ones\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.array([[[0], [1], [2]]])\\n    >>> x.shape\\n    (1, 3, 1)\\n    >>> np.squeeze(x).shape\\n    (3,)\\n    >>> np.squeeze(x, axis=0).shape\\n    (3, 1)\\n    >>> np.squeeze(x, axis=1).shape\\n    Traceback (most recent call last):\\n    ...\\n    ValueError: cannot select an axis to squeeze out which has size\\n    not equal to one\\n    >>> np.squeeze(x, axis=2).shape\\n    (1, 3)\\n    >>> x = np.array([[1234]])\\n    >>> x.shape\\n    (1, 1)\\n    >>> np.squeeze(x)\\n    array(1234)  # 0d array\\n    >>> np.squeeze(x).shape\\n    ()\\n    >>> np.squeeze(x)[()]\\n    1234\\n\\n    \\\"\\\"\\\"\\n    try:\\n        squeeze = a.squeeze\\n    except AttributeError:\\n        return _wrapit(a, 'squeeze', axis=axis)\\n    if axis is None:\\n        return squeeze()\\n    else:\\n        return squeeze(axis=axis)\\n\\n\\ndef _diagonal_dispatcher(a, offset=None, axis1=None, axis2=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_diagonal_dispatcher)\\ndef diagonal(a, offset=0, axis1=0, axis2=1):\\n    \\\"\\\"\\\"\\n    Return specified diagonals.\\n\\n    If `a` is 2-D, returns the diagonal of `a` with the given offset,\\n    i.e., the collection of elements of the form ``a[i, i+offset]``.  If\\n    `a` has more than two dimensions, then the axes specified by `axis1`\\n    and `axis2` are used to determine the 2-D sub-array whose diagonal is\\n    returned.  The shape of the resulting array can be determined by\\n    removing `axis1` and `axis2` and appending an index to the right equal\\n    to the size of the resulting diagonals.\\n\\n    In versions of NumPy prior to 1.7, this function always returned a new,\\n    independent array containing a copy of the values in the diagonal.\\n\\n    In NumPy 1.7 and 1.8, it continues to return a copy of the diagonal,\\n    but depending on this fact is deprecated. Writing to the resulting\\n    array continues to work as it used to, but a FutureWarning is issued.\\n\\n    Starting in NumPy 1.9 it returns a read-only view on the original array.\\n    Attempting to write to the resulting array will produce an error.\\n\\n    In some future release, it will return a read/write view and writing to\\n    the returned array will alter your original array.  The returned array\\n    will have the same type as the input array.\\n\\n    If you don't write to the array returned by this function, then you can\\n    just ignore all of the above.\\n\\n    If you depend on the current behavior, then we suggest copying the\\n    returned array explicitly, i.e., use ``np.diagonal(a).copy()`` instead\\n    of just ``np.diagonal(a)``. This will work with both past and future\\n    versions of NumPy.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array from which the diagonals are taken.\\n    offset : int, optional\\n        Offset of the diagonal from the main diagonal.  Can be positive or\\n        negative.  Defaults to main diagonal (0).\\n    axis1 : int, optional\\n        Axis to be used as the first axis of the 2-D sub-arrays from which\\n        the diagonals should be taken.  Defaults to first axis (0).\\n    axis2 : int, optional\\n        Axis to be used as the second axis of the 2-D sub-arrays from\\n        which the diagonals should be taken. Defaults to second axis (1).\\n\\n    Returns\\n    -------\\n    array_of_diagonals : ndarray\\n        If `a` is 2-D, then a 1-D array containing the diagonal and of the\\n        same type as `a` is returned unless `a` is a `matrix`, in which case\\n        a 1-D array rather than a (2-D) `matrix` is returned in order to\\n        maintain backward compatibility.\\n\\n        If ``a.ndim > 2``, then the dimensions specified by `axis1` and `axis2`\\n        are removed, and a new axis inserted at the end corresponding to the\\n        diagonal.\\n\\n    Raises\\n    ------\\n    ValueError\\n        If the dimension of `a` is less than 2.\\n\\n    See Also\\n    --------\\n    diag : MATLAB work-a-like for 1-D and 2-D arrays.\\n    diagflat : Create diagonal arrays.\\n    trace : Sum along diagonals.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(4).reshape(2,2)\\n    >>> a\\n    array([[0, 1],\\n           [2, 3]])\\n    >>> a.diagonal()\\n    array([0, 3])\\n    >>> a.diagonal(1)\\n    array([1])\\n\\n    A 3-D example:\\n\\n    >>> a = np.arange(8).reshape(2,2,2); a\\n    array([[[0, 1],\\n            [2, 3]],\\n           [[4, 5],\\n            [6, 7]]])\\n    >>> a.diagonal(0,  # Main diagonals of two arrays created by skipping\\n    ...            0,  # across the outer(left)-most axis last and\\n    ...            1)  # the \\\"middle\\\" (row) axis first.\\n    array([[0, 6],\\n           [1, 7]])\\n\\n    The sub-arrays whose main diagonals we just obtained; note that each\\n    corresponds to fixing the right-most (column) axis, and that the\\n    diagonals are \\\"packed\\\" in rows.\\n\\n    >>> a[:,:,0]  # main diagonal is [0 6]\\n    array([[0, 2],\\n           [4, 6]])\\n    >>> a[:,:,1]  # main diagonal is [1 7]\\n    array([[1, 3],\\n           [5, 7]])\\n\\n    The anti-diagonal can be obtained by reversing the order of elements\\n    using either `numpy.flipud` or `numpy.fliplr`.\\n\\n    >>> a = np.arange(9).reshape(3, 3)\\n    >>> a\\n    array([[0, 1, 2],\\n           [3, 4, 5],\\n           [6, 7, 8]])\\n    >>> np.fliplr(a).diagonal()  # Horizontal flip\\n    array([2, 4, 6])\\n    >>> np.flipud(a).diagonal()  # Vertical flip\\n    array([6, 4, 2])\\n\\n    Note that the order in which the diagonal is retrieved varies depending\\n    on the flip function.\\n    \\\"\\\"\\\"\\n    if isinstance(a, np.matrix):\\n        # Make diagonal of matrix 1-D to preserve backward compatibility.\\n        return asarray(a).diagonal(offset=offset, axis1=axis1, axis2=axis2)\\n    else:\\n        return asanyarray(a).diagonal(offset=offset, axis1=axis1, axis2=axis2)\\n\\n\\ndef _trace_dispatcher(\\n        a, offset=None, axis1=None, axis2=None, dtype=None, out=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_trace_dispatcher)\\ndef trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None):\\n    \\\"\\\"\\\"\\n    Return the sum along diagonals of the array.\\n\\n    If `a` is 2-D, the sum along its diagonal with the given offset\\n    is returned, i.e., the sum of elements ``a[i,i+offset]`` for all i.\\n\\n    If `a` has more than two dimensions, then the axes specified by axis1 and\\n    axis2 are used to determine the 2-D sub-arrays whose traces are returned.\\n    The shape of the resulting array is the same as that of `a` with `axis1`\\n    and `axis2` removed.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array, from which the diagonals are taken.\\n    offset : int, optional\\n        Offset of the diagonal from the main diagonal. Can be both positive\\n        and negative. Defaults to 0.\\n    axis1, axis2 : int, optional\\n        Axes to be used as the first and second axis of the 2-D sub-arrays\\n        from which the diagonals should be taken. Defaults are the first two\\n        axes of `a`.\\n    dtype : dtype, optional\\n        Determines the data-type of the returned array and of the accumulator\\n        where the elements are summed. If dtype has the value None and `a` is\\n        of integer type of precision less than the default integer\\n        precision, then the default integer precision is used. Otherwise,\\n        the precision is the same as that of `a`.\\n    out : ndarray, optional\\n        Array into which the output is placed. Its type is preserved and\\n        it must be of the right shape to hold the output.\\n\\n    Returns\\n    -------\\n    sum_along_diagonals : ndarray\\n        If `a` is 2-D, the sum along the diagonal is returned.  If `a` has\\n        larger dimensions, then an array of sums along diagonals is returned.\\n\\n    See Also\\n    --------\\n    diag, diagonal, diagflat\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.trace(np.eye(3))\\n    3.0\\n    >>> a = np.arange(8).reshape((2,2,2))\\n    >>> np.trace(a)\\n    array([6, 8])\\n\\n    >>> a = np.arange(24).reshape((2,2,2,3))\\n    >>> np.trace(a).shape\\n    (2, 3)\\n\\n    \\\"\\\"\\\"\\n    if isinstance(a, np.matrix):\\n        # Get trace of matrix via an array to preserve backward compatibility.\\n        return asarray(a).trace(\\n            offset=offset, axis1=axis1, axis2=axis2, dtype=dtype, out=out\\n        )\\n    else:\\n        return asanyarray(a).trace(\\n            offset=offset, axis1=axis1, axis2=axis2, dtype=dtype, out=out\\n        )\\n\\n\\ndef _ravel_dispatcher(a, order=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_ravel_dispatcher)\\ndef ravel(a, order='C'):\\n    \\\"\\\"\\\"Return a contiguous flattened array.\\n\\n    A 1-D array, containing the elements of the input, is returned.  A copy is\\n    made only if needed.\\n\\n    As of NumPy 1.10, the returned array will have the same type as the input\\n    array. (for example, a masked array will be returned for a masked array\\n    input)\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.  The elements in `a` are read in the order specified by\\n        `order`, and packed as a 1-D array.\\n    order : {'C','F', 'A', 'K'}, optional\\n\\n        The elements of `a` are read using this index order. 'C' means\\n        to index the elements in row-major, C-style order,\\n        with the last axis index changing fastest, back to the first\\n        axis index changing slowest.  'F' means to index the elements\\n        in column-major, Fortran-style order, with the\\n        first index changing fastest, and the last index changing\\n        slowest. Note that the 'C' and 'F' options take no account of\\n        the memory layout of the underlying array, and only refer to\\n        the order of axis indexing.  'A' means to read the elements in\\n        Fortran-like index order if `a` is Fortran *contiguous* in\\n        memory, C-like order otherwise.  'K' means to read the\\n        elements in the order they occur in memory, except for\\n        reversing the data when strides are negative.  By default, 'C'\\n        index order is used.\\n\\n    Returns\\n    -------\\n    y : array_like\\n        y is a contiguous 1-D array of the same subtype as `a`,\\n        with shape ``(a.size,)``.\\n        Note that matrices are special cased for backward compatibility,\\n        if `a` is a matrix, then y is a 1-D ndarray.\\n\\n    See Also\\n    --------\\n    ndarray.flat : 1-D iterator over an array.\\n    ndarray.flatten : 1-D array copy of the elements of an array\\n                      in row-major order.\\n    ndarray.reshape : Change the shape of an array without changing its data.\\n\\n    Notes\\n    -----\\n    In row-major, C-style order, in two dimensions, the row index\\n    varies the slowest, and the column index the quickest.  This can\\n    be generalized to multiple dimensions, where row-major order\\n    implies that the index along the first axis varies slowest, and\\n    the index along the last quickest.  The opposite holds for\\n    column-major, Fortran-style index ordering.\\n\\n    When a view is desired in as many cases as possible, ``arr.reshape(-1)``\\n    may be preferable. However, ``ravel`` supports ``K`` in the optional\\n    ``order`` argument while ``reshape`` does not.\\n\\n    Examples\\n    --------\\n    It is equivalent to ``reshape(-1, order=order)``.\\n\\n    >>> import numpy as np\\n    >>> x = np.array([[1, 2, 3], [4, 5, 6]])\\n    >>> np.ravel(x)\\n    array([1, 2, 3, 4, 5, 6])\\n\\n    >>> x.reshape(-1)\\n    array([1, 2, 3, 4, 5, 6])\\n\\n    >>> np.ravel(x, order='F')\\n    array([1, 4, 2, 5, 3, 6])\\n\\n    When ``order`` is 'A', it will preserve the array's 'C' or 'F' ordering:\\n\\n    >>> np.ravel(x.T)\\n    array([1, 4, 2, 5, 3, 6])\\n    >>> np.ravel(x.T, order='A')\\n    array([1, 2, 3, 4, 5, 6])\\n\\n    When ``order`` is 'K', it will preserve orderings that are neither 'C'\\n    nor 'F', but won't reverse axes:\\n\\n    >>> a = np.arange(3)[::-1]; a\\n    array([2, 1, 0])\\n    >>> a.ravel(order='C')\\n    array([2, 1, 0])\\n    >>> a.ravel(order='K')\\n    array([2, 1, 0])\\n\\n    >>> a = np.arange(12).reshape(2,3,2).swapaxes(1,2); a\\n    array([[[ 0,  2,  4],\\n            [ 1,  3,  5]],\\n           [[ 6,  8, 10],\\n            [ 7,  9, 11]]])\\n    >>> a.ravel(order='C')\\n    array([ 0,  2,  4,  1,  3,  5,  6,  8, 10,  7,  9, 11])\\n    >>> a.ravel(order='K')\\n    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])\\n\\n    \\\"\\\"\\\"\\n    if isinstance(a, np.matrix):\\n        return asarray(a).ravel(order=order)\\n    else:\\n        return asanyarray(a).ravel(order=order)\\n\\n\\ndef _nonzero_dispatcher(a):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_nonzero_dispatcher)\\ndef nonzero(a):\\n    \\\"\\\"\\\"\\n    Return the indices of the elements that are non-zero.\\n\\n    Returns a tuple of arrays, one for each dimension of `a`,\\n    containing the indices of the non-zero elements in that\\n    dimension. The values in `a` are always tested and returned in\\n    row-major, C-style order.\\n\\n    To group the indices by element, rather than dimension, use `argwhere`,\\n    which returns a row for each non-zero element.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n\\n    Returns\\n    -------\\n    tuple_of_arrays : tuple\\n        Indices of elements that are non-zero.\\n\\n    See Also\\n    --------\\n    flatnonzero :\\n        Return indices that are non-zero in the flattened version of the input\\n        array.\\n    ndarray.nonzero :\\n        Equivalent ndarray method.\\n    count_nonzero :\\n        Counts the number of non-zero elements in the input array.\\n\\n    Notes\\n    -----\\n    While the nonzero values can be obtained with ``a[nonzero(a)]``, it is\\n    recommended to use ``x[x.astype(bool)]`` or ``x[x != 0]`` instead, which\\n    will correctly handle 0-d arrays.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]])\\n    >>> x\\n    array([[3, 0, 0],\\n           [0, 4, 0],\\n           [5, 6, 0]])\\n    >>> np.nonzero(x)\\n    (array([0, 1, 2, 2]), array([0, 1, 0, 1]))\\n\\n    >>> x[np.nonzero(x)]\\n    array([3, 4, 5, 6])\\n    >>> np.transpose(np.nonzero(x))\\n    array([[0, 0],\\n           [1, 1],\\n           [2, 0],\\n           [2, 1]])\\n\\n    A common use for ``nonzero`` is to find the indices of an array, where\\n    a condition is True.  Given an array `a`, the condition `a` > 3 is a\\n    boolean array and since False is interpreted as 0, np.nonzero(a > 3)\\n    yields the indices of the `a` where the condition is true.\\n\\n    >>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])\\n    >>> a > 3\\n    array([[False, False, False],\\n           [ True,  True,  True],\\n           [ True,  True,  True]])\\n    >>> np.nonzero(a > 3)\\n    (array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))\\n\\n    Using this result to index `a` is equivalent to using the mask directly:\\n\\n    >>> a[np.nonzero(a > 3)]\\n    array([4, 5, 6, 7, 8, 9])\\n    >>> a[a > 3]  # prefer this spelling\\n    array([4, 5, 6, 7, 8, 9])\\n\\n    ``nonzero`` can also be called as a method of the array.\\n\\n    >>> (a > 3).nonzero()\\n    (array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'nonzero')\\n\\n\\ndef _shape_dispatcher(a):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_shape_dispatcher)\\ndef shape(a):\\n    \\\"\\\"\\\"\\n    Return the shape of an array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n\\n    Returns\\n    -------\\n    shape : tuple of ints\\n        The elements of the shape tuple give the lengths of the\\n        corresponding array dimensions.\\n\\n    See Also\\n    --------\\n    len : ``len(a)`` is equivalent to ``np.shape(a)[0]`` for N-D arrays with\\n          ``N>=1``.\\n    ndarray.shape : Equivalent array method.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.shape(np.eye(3))\\n    (3, 3)\\n    >>> np.shape([[1, 3]])\\n    (1, 2)\\n    >>> np.shape([0])\\n    (1,)\\n    >>> np.shape(0)\\n    ()\\n\\n    >>> a = np.array([(1, 2), (3, 4), (5, 6)],\\n    ...              dtype=[('x', 'i4'), ('y', 'i4')])\\n    >>> np.shape(a)\\n    (3,)\\n    >>> a.shape\\n    (3,)\\n\\n    \\\"\\\"\\\"\\n    try:\\n        result = a.shape\\n    except AttributeError:\\n        result = asarray(a).shape\\n    return result\\n\\n\\ndef _compress_dispatcher(condition, a, axis=None, out=None):\\n    return (condition, a, out)\\n\\n\\n@array_function_dispatch(_compress_dispatcher)\\ndef compress(condition, a, axis=None, out=None):\\n    \\\"\\\"\\\"\\n    Return selected slices of an array along given axis.\\n\\n    When working along a given axis, a slice along that axis is returned in\\n    `output` for each index where `condition` evaluates to True. When\\n    working on a 1-D array, `compress` is equivalent to `extract`.\\n\\n    Parameters\\n    ----------\\n    condition : 1-D array of bools\\n        Array that selects which entries to return. If len(condition)\\n        is less than the size of `a` along the given axis, then output is\\n        truncated to the length of the condition array.\\n    a : array_like\\n        Array from which to extract a part.\\n    axis : int, optional\\n        Axis along which to take slices. If None (default), work on the\\n        flattened array.\\n    out : ndarray, optional\\n        Output array.  Its type is preserved and it must be of the right\\n        shape to hold the output.\\n\\n    Returns\\n    -------\\n    compressed_array : ndarray\\n        A copy of `a` without the slices along axis for which `condition`\\n        is false.\\n\\n    See Also\\n    --------\\n    take, choose, diag, diagonal, select\\n    ndarray.compress : Equivalent method in ndarray\\n    extract : Equivalent method when working on 1-D arrays\\n    :ref:`ufuncs-output-type`\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4], [5, 6]])\\n    >>> a\\n    array([[1, 2],\\n           [3, 4],\\n           [5, 6]])\\n    >>> np.compress([0, 1], a, axis=0)\\n    array([[3, 4]])\\n    >>> np.compress([False, True, True], a, axis=0)\\n    array([[3, 4],\\n           [5, 6]])\\n    >>> np.compress([False, True], a, axis=1)\\n    array([[2],\\n           [4],\\n           [6]])\\n\\n    Working on the flattened array does not return slices along an axis but\\n    selects elements.\\n\\n    >>> np.compress([False, True], a)\\n    array([2])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'compress', condition, axis=axis, out=out)\\n\\n\\ndef _clip_dispatcher(a, a_min=None, a_max=None, out=None, *, min=None,\\n                     max=None, **kwargs):\\n    return (a, a_min, a_max, out, min, max)\\n\\n\\n@array_function_dispatch(_clip_dispatcher)\\ndef clip(a, a_min=np._NoValue, a_max=np._NoValue, out=None, *,\\n         min=np._NoValue, max=np._NoValue, **kwargs):\\n    \\\"\\\"\\\"\\n    Clip (limit) the values in an array.\\n\\n    Given an interval, values outside the interval are clipped to\\n    the interval edges.  For example, if an interval of ``[0, 1]``\\n    is specified, values smaller than 0 become 0, and values larger\\n    than 1 become 1.\\n\\n    Equivalent to but faster than ``np.minimum(a_max, np.maximum(a, a_min))``.\\n\\n    No check is performed to ensure ``a_min < a_max``.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array containing elements to clip.\\n    a_min, a_max : array_like or None\\n        Minimum and maximum value. If ``None``, clipping is not performed on\\n        the corresponding edge. If both ``a_min`` and ``a_max`` are ``None``,\\n        the elements of the returned array stay the same. Both are broadcasted\\n        against ``a``.\\n    out : ndarray, optional\\n        The results will be placed in this array. It may be the input\\n        array for in-place clipping.  `out` must be of the right shape\\n        to hold the output.  Its type is preserved.\\n    min, max : array_like or None\\n        Array API compatible alternatives for ``a_min`` and ``a_max``\\n        arguments. Either ``a_min`` and ``a_max`` or ``min`` and ``max``\\n        can be passed at the same time. Default: ``None``.\\n\\n        .. versionadded:: 2.1.0\\n    **kwargs\\n        For other keyword-only arguments, see the\\n        :ref:`ufunc docs <ufuncs.kwargs>`.\\n\\n    Returns\\n    -------\\n    clipped_array : ndarray\\n        An array with the elements of `a`, but where values\\n        < `a_min` are replaced with `a_min`, and those > `a_max`\\n        with `a_max`.\\n\\n    See Also\\n    --------\\n    :ref:`ufuncs-output-type`\\n\\n    Notes\\n    -----\\n    When `a_min` is greater than `a_max`, `clip` returns an\\n    array in which all values are equal to `a_max`,\\n    as shown in the second example.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(10)\\n    >>> a\\n    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\\n    >>> np.clip(a, 1, 8)\\n    array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])\\n    >>> np.clip(a, 8, 1)\\n    array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\\n    >>> np.clip(a, 3, 6, out=a)\\n    array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])\\n    >>> a\\n    array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])\\n    >>> a = np.arange(10)\\n    >>> a\\n    array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\\n    >>> np.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8)\\n    array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])\\n\\n    \\\"\\\"\\\"\\n    if a_min is np._NoValue and a_max is np._NoValue:\\n        a_min = None if min is np._NoValue else min\\n        a_max = None if max is np._NoValue else max\\n    elif a_min is np._NoValue:\\n        raise TypeError(\\\"clip() missing 1 required positional \\\"\\n                        \\\"argument: 'a_min'\\\")\\n    elif a_max is np._NoValue:\\n        raise TypeError(\\\"clip() missing 1 required positional \\\"\\n                        \\\"argument: 'a_max'\\\")\\n    elif min is not np._NoValue or max is not np._NoValue:\\n        raise ValueError(\\\"Passing `min` or `max` keyword argument when \\\"\\n                         \\\"`a_min` and `a_max` are provided is forbidden.\\\")\\n\\n    return _wrapfunc(a, 'clip', a_min, a_max, out=out, **kwargs)\\n\\n\\ndef _sum_dispatcher(a, axis=None, dtype=None, out=None, keepdims=None,\\n                    initial=None, where=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_sum_dispatcher)\\ndef sum(a, axis=None, dtype=None, out=None, keepdims=np._NoValue,\\n        initial=np._NoValue, where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Sum of array elements over a given axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Elements to sum.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which a sum is performed.  The default,\\n        axis=None, will sum all of the elements of the input array.  If\\n        axis is negative it counts from the last to the first axis. If\\n        axis is a tuple of ints, a sum is performed on all of the axes\\n        specified in the tuple instead of a single axis or all the axes as\\n        before.\\n    dtype : dtype, optional\\n        The type of the returned array and of the accumulator in which the\\n        elements are summed.  The dtype of `a` is used by default unless `a`\\n        has an integer dtype of less precision than the default platform\\n        integer.  In that case, if `a` is signed then the platform integer\\n        is used while if `a` is unsigned then an unsigned integer of the\\n        same precision as the platform integer is used.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must have\\n        the same shape as the expected output, but the type of the output\\n        values will be cast if necessary.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `sum` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n    initial : scalar, optional\\n        Starting value for the sum. See `~numpy.ufunc.reduce` for details.\\n    where : array_like of bool, optional\\n        Elements to include in the sum. See `~numpy.ufunc.reduce` for details.\\n\\n    Returns\\n    -------\\n    sum_along_axis : ndarray\\n        An array with the same shape as `a`, with the specified\\n        axis removed.   If `a` is a 0-d array, or if `axis` is None, a scalar\\n        is returned.  If an output array is specified, a reference to\\n        `out` is returned.\\n\\n    See Also\\n    --------\\n    ndarray.sum : Equivalent method.\\n    add: ``numpy.add.reduce`` equivalent function.\\n    cumsum : Cumulative sum of array elements.\\n    trapezoid : Integration of array values using composite trapezoidal rule.\\n\\n    mean, average\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.\\n\\n    The sum of an empty array is the neutral element 0:\\n\\n    >>> np.sum([])\\n    0.0\\n\\n    For floating point numbers the numerical precision of sum (and\\n    ``np.add.reduce``) is in general limited by directly adding each number\\n    individually to the result causing rounding errors in every step.\\n    However, often numpy will use a  numerically better approach (partial\\n    pairwise summation) leading to improved precision in many use-cases.\\n    This improved precision is always provided when no ``axis`` is given.\\n    When ``axis`` is given, it will depend on which axis is summed.\\n    Technically, to provide the best speed possible, the improved precision\\n    is only used when the summation is along the fast axis in memory.\\n    Note that the exact precision may vary depending on other parameters.\\n    In contrast to NumPy, Python's ``math.fsum`` function uses a slower but\\n    more precise approach to summation.\\n    Especially when summing a large number of lower precision floating point\\n    numbers, such as ``float32``, numerical errors can become significant.\\n    In such cases it can be advisable to use `dtype=\\\"float64\\\"` to use a higher\\n    precision for the output.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.sum([0.5, 1.5])\\n    2.0\\n    >>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)\\n    np.int32(1)\\n    >>> np.sum([[0, 1], [0, 5]])\\n    6\\n    >>> np.sum([[0, 1], [0, 5]], axis=0)\\n    array([0, 6])\\n    >>> np.sum([[0, 1], [0, 5]], axis=1)\\n    array([1, 5])\\n    >>> np.sum([[0, 1], [np.nan, 5]], where=[False, True], axis=1)\\n    array([1., 5.])\\n\\n    If the accumulator is too small, overflow occurs:\\n\\n    >>> np.ones(128, dtype=np.int8).sum(dtype=np.int8)\\n    np.int8(-128)\\n\\n    You can also start the sum with a value other than zero:\\n\\n    >>> np.sum([10], initial=5)\\n    15\\n    \\\"\\\"\\\"\\n    if isinstance(a, _gentype):\\n        # 2018-02-25, 1.15.0\\n        raise TypeError(\\n            \\\"Calling np.sum(generator) is deprecated.\\\"\\n            \\\"Use np.sum(np.fromiter(generator)) or \\\"\\n            \\\"the python sum builtin instead.\\\",\\n        )\\n\\n    return _wrapreduction(\\n        a, np.add, 'sum', axis, dtype, out,\\n        keepdims=keepdims, initial=initial, where=where\\n    )\\n\\n\\ndef _any_dispatcher(a, axis=None, out=None, keepdims=None, *,\\n                    where=np._NoValue):\\n    return (a, where, out)\\n\\n\\n@array_function_dispatch(_any_dispatcher)\\ndef any(a, axis=None, out=None, keepdims=np._NoValue, *, where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Test whether any array element along a given axis evaluates to True.\\n\\n    Returns single boolean if `axis` is ``None``\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array or object that can be converted to an array.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which a logical OR reduction is performed.\\n        The default (``axis=None``) is to perform a logical OR over all\\n        the dimensions of the input array. `axis` may be negative, in\\n        which case it counts from the last to the first axis. If this\\n        is a tuple of ints, a reduction is performed on multiple\\n        axes, instead of a single axis or all the axes as before.\\n    out : ndarray, optional\\n        Alternate output array in which to place the result.  It must have\\n        the same shape as the expected output and its type is preserved\\n        (e.g., if it is of type float, then it will remain so, returning\\n        1.0 for True and 0.0 for False, regardless of the type of `a`).\\n        See :ref:`ufuncs-output-type` for more details.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `any` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    where : array_like of bool, optional\\n        Elements to include in checking for any `True` values.\\n        See `~numpy.ufunc.reduce` for details.\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    any : bool or ndarray\\n        A new boolean or `ndarray` is returned unless `out` is specified,\\n        in which case a reference to `out` is returned.\\n\\n    See Also\\n    --------\\n    ndarray.any : equivalent method\\n\\n    all : Test whether all elements along a given axis evaluate to True.\\n\\n    Notes\\n    -----\\n    Not a Number (NaN), positive infinity and negative infinity evaluate\\n    to `True` because these are not equal to zero.\\n\\n    .. versionchanged:: 2.0\\n       Before NumPy 2.0, ``any`` did not return booleans for object dtype\\n       input arrays.\\n       This behavior is still available via ``np.logical_or.reduce``.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.any([[True, False], [True, True]])\\n    True\\n\\n    >>> np.any([[True,  False, True ],\\n    ...         [False, False, False]], axis=0)\\n    array([ True, False, True])\\n\\n    >>> np.any([-1, 0, 5])\\n    True\\n\\n    >>> np.any([[np.nan], [np.inf]], axis=1, keepdims=True)\\n    array([[ True],\\n           [ True]])\\n\\n    >>> np.any([[True, False], [False, False]], where=[[False], [True]])\\n    False\\n\\n    >>> a = np.array([[1, 0, 0],\\n    ...               [0, 0, 1],\\n    ...               [0, 0, 0]])\\n    >>> np.any(a, axis=0)\\n    array([ True, False,  True])\\n    >>> np.any(a, axis=1)\\n    array([ True,  True, False])\\n\\n    >>> o=np.array(False)\\n    >>> z=np.any([-1, 4, 5], out=o)\\n    >>> z, o\\n    (array(True), array(True))\\n    >>> # Check now that z is a reference to o\\n    >>> z is o\\n    True\\n    >>> id(z), id(o) # identity of z and o              # doctest: +SKIP\\n    (191614240, 191614240)\\n\\n    \\\"\\\"\\\"\\n    return _wrapreduction_any_all(a, np.logical_or, 'any', axis, out,\\n                                  keepdims=keepdims, where=where)\\n\\n\\ndef _all_dispatcher(a, axis=None, out=None, keepdims=None, *,\\n                    where=None):\\n    return (a, where, out)\\n\\n\\n@array_function_dispatch(_all_dispatcher)\\ndef all(a, axis=None, out=None, keepdims=np._NoValue, *, where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Test whether all array elements along a given axis evaluate to True.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array or object that can be converted to an array.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which a logical AND reduction is performed.\\n        The default (``axis=None``) is to perform a logical AND over all\\n        the dimensions of the input array. `axis` may be negative, in\\n        which case it counts from the last to the first axis. If this\\n        is a tuple of ints, a reduction is performed on multiple\\n        axes, instead of a single axis or all the axes as before.\\n    out : ndarray, optional\\n        Alternate output array in which to place the result.\\n        It must have the same shape as the expected output and its\\n        type is preserved (e.g., if ``dtype(out)`` is float, the result\\n        will consist of 0.0's and 1.0's). See :ref:`ufuncs-output-type`\\n        for more details.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `all` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    where : array_like of bool, optional\\n        Elements to include in checking for all `True` values.\\n        See `~numpy.ufunc.reduce` for details.\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    all : ndarray, bool\\n        A new boolean or array is returned unless `out` is specified,\\n        in which case a reference to `out` is returned.\\n\\n    See Also\\n    --------\\n    ndarray.all : equivalent method\\n\\n    any : Test whether any element along a given axis evaluates to True.\\n\\n    Notes\\n    -----\\n    Not a Number (NaN), positive infinity and negative infinity\\n    evaluate to `True` because these are not equal to zero.\\n\\n    .. versionchanged:: 2.0\\n       Before NumPy 2.0, ``all`` did not return booleans for object dtype\\n       input arrays.\\n       This behavior is still available via ``np.logical_and.reduce``.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.all([[True,False],[True,True]])\\n    False\\n\\n    >>> np.all([[True,False],[True,True]], axis=0)\\n    array([ True, False])\\n\\n    >>> np.all([-1, 4, 5])\\n    True\\n\\n    >>> np.all([1.0, np.nan])\\n    True\\n\\n    >>> np.all([[True, True], [False, True]], where=[[True], [False]])\\n    True\\n\\n    >>> o=np.array(False)\\n    >>> z=np.all([-1, 4, 5], out=o)\\n    >>> id(z), id(o), z\\n    (28293632, 28293632, array(True)) # may vary\\n\\n    \\\"\\\"\\\"\\n    return _wrapreduction_any_all(a, np.logical_and, 'all', axis, out,\\n                                  keepdims=keepdims, where=where)\\n\\n\\ndef _cumulative_func(x, func, axis, dtype, out, include_initial):\\n    x = np.atleast_1d(x)\\n    x_ndim = x.ndim\\n    if axis is None:\\n        if x_ndim >= 2:\\n            raise ValueError(\\\"For arrays which have more than one dimension \\\"\\n                            \\\"``axis`` argument is required.\\\")\\n        axis = 0\\n\\n    if out is not None and include_initial:\\n        item = [slice(None)] * x_ndim\\n        item[axis] = slice(1, None)\\n        func.accumulate(x, axis=axis, dtype=dtype, out=out[tuple(item)])\\n        item[axis] = 0\\n        out[tuple(item)] = func.identity\\n        return out\\n\\n    res = func.accumulate(x, axis=axis, dtype=dtype, out=out)\\n    if include_initial:\\n        initial_shape = list(x.shape)\\n        initial_shape[axis] = 1\\n        res = np.concat(\\n            [np.full_like(res, func.identity, shape=initial_shape), res],\\n            axis=axis,\\n        )\\n\\n    return res\\n\\n\\ndef _cumulative_prod_dispatcher(x, /, *, axis=None, dtype=None, out=None,\\n                                include_initial=None):\\n    return (x, out)\\n\\n\\n@array_function_dispatch(_cumulative_prod_dispatcher)\\ndef cumulative_prod(x, /, *, axis=None, dtype=None, out=None,\\n                    include_initial=False):\\n    \\\"\\\"\\\"\\n    Return the cumulative product of elements along a given axis.\\n\\n    This function is an Array API compatible alternative to `numpy.cumprod`.\\n\\n    Parameters\\n    ----------\\n    x : array_like\\n        Input array.\\n    axis : int, optional\\n        Axis along which the cumulative product is computed. The default\\n        (None) is only allowed for one-dimensional arrays. For arrays\\n        with more than one dimension ``axis`` is required.\\n    dtype : dtype, optional\\n        Type of the returned array, as well as of the accumulator in which\\n        the elements are multiplied.  If ``dtype`` is not specified, it\\n        defaults to the dtype of ``x``, unless ``x`` has an integer dtype\\n        with a precision less than that of the default platform integer.\\n        In that case, the default platform integer is used instead.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must\\n        have the same shape and buffer length as the expected output\\n        but the type of the resulting values will be cast if necessary.\\n        See :ref:`ufuncs-output-type` for more details.\\n    include_initial : bool, optional\\n        Boolean indicating whether to include the initial value (ones) as\\n        the first value in the output. With ``include_initial=True``\\n        the shape of the output is different than the shape of the input.\\n        Default: ``False``.\\n\\n    Returns\\n    -------\\n    cumulative_prod_along_axis : ndarray\\n        A new array holding the result is returned unless ``out`` is\\n        specified, in which case a reference to ``out`` is returned. The\\n        result has the same shape as ``x`` if ``include_initial=False``.\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.\\n\\n    Examples\\n    --------\\n    >>> a = np.array([1, 2, 3])\\n    >>> np.cumulative_prod(a)  # intermediate results 1, 1*2\\n    ...                        # total product 1*2*3 = 6\\n    array([1, 2, 6])\\n    >>> a = np.array([1, 2, 3, 4, 5, 6])\\n    >>> np.cumulative_prod(a, dtype=float) # specify type of output\\n    array([   1.,    2.,    6.,   24.,  120.,  720.])\\n\\n    The cumulative product for each column (i.e., over the rows) of ``b``:\\n\\n    >>> b = np.array([[1, 2, 3], [4, 5, 6]])\\n    >>> np.cumulative_prod(b, axis=0)\\n    array([[ 1,  2,  3],\\n           [ 4, 10, 18]])\\n\\n    The cumulative product for each row (i.e. over the columns) of ``b``:\\n\\n    >>> np.cumulative_prod(b, axis=1)\\n    array([[  1,   2,   6],\\n           [  4,  20, 120]])\\n\\n    \\\"\\\"\\\"\\n    return _cumulative_func(x, um.multiply, axis, dtype, out, include_initial)\\n\\n\\ndef _cumulative_sum_dispatcher(x, /, *, axis=None, dtype=None, out=None,\\n                               include_initial=None):\\n    return (x, out)\\n\\n\\n@array_function_dispatch(_cumulative_sum_dispatcher)\\ndef cumulative_sum(x, /, *, axis=None, dtype=None, out=None,\\n                   include_initial=False):\\n    \\\"\\\"\\\"\\n    Return the cumulative sum of the elements along a given axis.\\n\\n    This function is an Array API compatible alternative to `numpy.cumsum`.\\n\\n    Parameters\\n    ----------\\n    x : array_like\\n        Input array.\\n    axis : int, optional\\n        Axis along which the cumulative sum is computed. The default\\n        (None) is only allowed for one-dimensional arrays. For arrays\\n        with more than one dimension ``axis`` is required.\\n    dtype : dtype, optional\\n        Type of the returned array and of the accumulator in which the\\n        elements are summed.  If ``dtype`` is not specified, it defaults\\n        to the dtype of ``x``, unless ``x`` has an integer dtype with\\n        a precision less than that of the default platform integer.\\n        In that case, the default platform integer is used.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must\\n        have the same shape and buffer length as the expected output\\n        but the type will be cast if necessary. See :ref:`ufuncs-output-type`\\n        for more details.\\n    include_initial : bool, optional\\n        Boolean indicating whether to include the initial value (zeros) as\\n        the first value in the output. With ``include_initial=True``\\n        the shape of the output is different than the shape of the input.\\n        Default: ``False``.\\n\\n    Returns\\n    -------\\n    cumulative_sum_along_axis : ndarray\\n        A new array holding the result is returned unless ``out`` is\\n        specified, in which case a reference to ``out`` is returned. The\\n        result has the same shape as ``x`` if ``include_initial=False``.\\n\\n    See Also\\n    --------\\n    sum : Sum array elements.\\n    trapezoid : Integration of array values using composite trapezoidal rule.\\n    diff : Calculate the n-th discrete difference along given axis.\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.\\n\\n    ``cumulative_sum(a)[-1]`` may not be equal to ``sum(a)`` for\\n    floating-point values since ``sum`` may use a pairwise summation routine,\\n    reducing the roundoff-error. See `sum` for more information.\\n\\n    Examples\\n    --------\\n    >>> a = np.array([1, 2, 3, 4, 5, 6])\\n    >>> a\\n    array([1, 2, 3, 4, 5, 6])\\n    >>> np.cumulative_sum(a)\\n    array([ 1,  3,  6, 10, 15, 21])\\n    >>> np.cumulative_sum(a, dtype=float)  # specifies type of output value(s)\\n    array([  1.,   3.,   6.,  10.,  15.,  21.])\\n\\n    >>> b = np.array([[1, 2, 3], [4, 5, 6]])\\n    >>> np.cumulative_sum(b,axis=0)  # sum over rows for each of the 3 columns\\n    array([[1, 2, 3],\\n           [5, 7, 9]])\\n    >>> np.cumulative_sum(b,axis=1)  # sum over columns for each of the 2 rows\\n    array([[ 1,  3,  6],\\n           [ 4,  9, 15]])\\n\\n    ``cumulative_sum(c)[-1]`` may not be equal to ``sum(c)``\\n\\n    >>> c = np.array([1, 2e-9, 3e-9] * 1000000)\\n    >>> np.cumulative_sum(c)[-1]\\n    1000000.0050045159\\n    >>> c.sum()\\n    1000000.0050000029\\n\\n    \\\"\\\"\\\"\\n    return _cumulative_func(x, um.add, axis, dtype, out, include_initial)\\n\\n\\ndef _cumsum_dispatcher(a, axis=None, dtype=None, out=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_cumsum_dispatcher)\\ndef cumsum(a, axis=None, dtype=None, out=None):\\n    \\\"\\\"\\\"\\n    Return the cumulative sum of the elements along a given axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axis : int, optional\\n        Axis along which the cumulative sum is computed. The default\\n        (None) is to compute the cumsum over the flattened array.\\n    dtype : dtype, optional\\n        Type of the returned array and of the accumulator in which the\\n        elements are summed.  If `dtype` is not specified, it defaults\\n        to the dtype of `a`, unless `a` has an integer dtype with a\\n        precision less than that of the default platform integer.  In\\n        that case, the default platform integer is used.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must\\n        have the same shape and buffer length as the expected output\\n        but the type will be cast if necessary. See :ref:`ufuncs-output-type`\\n        for more details.\\n\\n    Returns\\n    -------\\n    cumsum_along_axis : ndarray.\\n        A new array holding the result is returned unless `out` is\\n        specified, in which case a reference to `out` is returned. The\\n        result has the same size as `a`, and the same shape as `a` if\\n        `axis` is not None or `a` is a 1-d array.\\n\\n    See Also\\n    --------\\n    cumulative_sum : Array API compatible alternative for ``cumsum``.\\n    sum : Sum array elements.\\n    trapezoid : Integration of array values using composite trapezoidal rule.\\n    diff : Calculate the n-th discrete difference along given axis.\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.\\n\\n    ``cumsum(a)[-1]`` may not be equal to ``sum(a)`` for floating-point\\n    values since ``sum`` may use a pairwise summation routine, reducing\\n    the roundoff-error. See `sum` for more information.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1,2,3], [4,5,6]])\\n    >>> a\\n    array([[1, 2, 3],\\n           [4, 5, 6]])\\n    >>> np.cumsum(a)\\n    array([ 1,  3,  6, 10, 15, 21])\\n    >>> np.cumsum(a, dtype=float)     # specifies type of output value(s)\\n    array([  1.,   3.,   6.,  10.,  15.,  21.])\\n\\n    >>> np.cumsum(a,axis=0)      # sum over rows for each of the 3 columns\\n    array([[1, 2, 3],\\n           [5, 7, 9]])\\n    >>> np.cumsum(a,axis=1)      # sum over columns for each of the 2 rows\\n    array([[ 1,  3,  6],\\n           [ 4,  9, 15]])\\n\\n    ``cumsum(b)[-1]`` may not be equal to ``sum(b)``\\n\\n    >>> b = np.array([1, 2e-9, 3e-9] * 1000000)\\n    >>> b.cumsum()[-1]\\n    1000000.0050045159\\n    >>> b.sum()\\n    1000000.0050000029\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'cumsum', axis=axis, dtype=dtype, out=out)\\n\\n\\ndef _ptp_dispatcher(a, axis=None, out=None, keepdims=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_ptp_dispatcher)\\ndef ptp(a, axis=None, out=None, keepdims=np._NoValue):\\n    \\\"\\\"\\\"\\n    Range of values (maximum - minimum) along an axis.\\n\\n    The name of the function comes from the acronym for 'peak to peak'.\\n\\n    .. warning::\\n        `ptp` preserves the data type of the array. This means the\\n        return value for an input of signed integers with n bits\\n        (e.g. `numpy.int8`, `numpy.int16`, etc) is also a signed integer\\n        with n bits.  In that case, peak-to-peak values greater than\\n        ``2**(n-1)-1`` will be returned as negative values. An example\\n        with a work-around is shown below.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input values.\\n    axis : None or int or tuple of ints, optional\\n        Axis along which to find the peaks.  By default, flatten the\\n        array.  `axis` may be negative, in\\n        which case it counts from the last to the first axis.\\n        If this is a tuple of ints, a reduction is performed on multiple\\n        axes, instead of a single axis or all the axes as before.\\n    out : array_like\\n        Alternative output array in which to place the result. It must\\n        have the same shape and buffer length as the expected output,\\n        but the type of the output values will be cast if necessary.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `ptp` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    Returns\\n    -------\\n    ptp : ndarray or scalar\\n        The range of a given array - `scalar` if array is one-dimensional\\n        or a new array holding the result along the given axis\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> x = np.array([[4, 9, 2, 10],\\n    ...               [6, 9, 7, 12]])\\n\\n    >>> np.ptp(x, axis=1)\\n    array([8, 6])\\n\\n    >>> np.ptp(x, axis=0)\\n    array([2, 0, 5, 2])\\n\\n    >>> np.ptp(x)\\n    10\\n\\n    This example shows that a negative value can be returned when\\n    the input is an array of signed integers.\\n\\n    >>> y = np.array([[1, 127],\\n    ...               [0, 127],\\n    ...               [-1, 127],\\n    ...               [-2, 127]], dtype=np.int8)\\n    >>> np.ptp(y, axis=1)\\n    array([ 126,  127, -128, -127], dtype=int8)\\n\\n    A work-around is to use the `view()` method to view the result as\\n    unsigned integers with the same bit width:\\n\\n    >>> np.ptp(y, axis=1).view(np.uint8)\\n    array([126, 127, 128, 129], dtype=uint8)\\n\\n    \\\"\\\"\\\"\\n    kwargs = {}\\n    if keepdims is not np._NoValue:\\n        kwargs['keepdims'] = keepdims\\n    return _methods._ptp(a, axis=axis, out=out, **kwargs)\\n\\n\\ndef _max_dispatcher(a, axis=None, out=None, keepdims=None, initial=None,\\n                    where=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_max_dispatcher)\\n@set_module('numpy')\\ndef max(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,\\n         where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Return the maximum of an array or maximum along an axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which to operate.  By default, flattened input is\\n        used. If this is a tuple of ints, the maximum is selected over\\n        multiple axes, instead of a single axis or all the axes as before.\\n\\n    out : ndarray, optional\\n        Alternative output array in which to place the result.  Must\\n        be of the same shape and buffer length as the expected output.\\n        See :ref:`ufuncs-output-type` for more details.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the ``max`` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    initial : scalar, optional\\n        The minimum value of an output element. Must be present to allow\\n        computation on empty slice. See `~numpy.ufunc.reduce` for details.\\n\\n    where : array_like of bool, optional\\n        Elements to compare for the maximum. See `~numpy.ufunc.reduce`\\n        for details.\\n\\n    Returns\\n    -------\\n    max : ndarray or scalar\\n        Maximum of `a`. If `axis` is None, the result is a scalar value.\\n        If `axis` is an int, the result is an array of dimension\\n        ``a.ndim - 1``. If `axis` is a tuple, the result is an array of\\n        dimension ``a.ndim - len(axis)``.\\n\\n    See Also\\n    --------\\n    amin :\\n        The minimum value of an array along a given axis, propagating any NaNs.\\n    nanmax :\\n        The maximum value of an array along a given axis, ignoring any NaNs.\\n    maximum :\\n        Element-wise maximum of two arrays, propagating any NaNs.\\n    fmax :\\n        Element-wise maximum of two arrays, ignoring any NaNs.\\n    argmax :\\n        Return the indices of the maximum values.\\n\\n    nanmin, minimum, fmin\\n\\n    Notes\\n    -----\\n    NaN values are propagated, that is if at least one item is NaN, the\\n    corresponding max value will be NaN as well. To ignore NaN values\\n    (MATLAB behavior), please use nanmax.\\n\\n    Don't use `~numpy.max` for element-wise comparison of 2 arrays; when\\n    ``a.shape[0]`` is 2, ``maximum(a[0], a[1])`` is faster than\\n    ``max(a, axis=0)``.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(4).reshape((2,2))\\n    >>> a\\n    array([[0, 1],\\n           [2, 3]])\\n    >>> np.max(a)           # Maximum of the flattened array\\n    3\\n    >>> np.max(a, axis=0)   # Maxima along the first axis\\n    array([2, 3])\\n    >>> np.max(a, axis=1)   # Maxima along the second axis\\n    array([1, 3])\\n    >>> np.max(a, where=[False, True], initial=-1, axis=0)\\n    array([-1,  3])\\n    >>> b = np.arange(5, dtype=float)\\n    >>> b[2] = np.nan\\n    >>> np.max(b)\\n    np.float64(nan)\\n    >>> np.max(b, where=~np.isnan(b), initial=-1)\\n    4.0\\n    >>> np.nanmax(b)\\n    4.0\\n\\n    You can use an initial value to compute the maximum of an empty slice, or\\n    to initialize it to a different value:\\n\\n    >>> np.max([[-50], [10]], axis=-1, initial=0)\\n    array([ 0, 10])\\n\\n    Notice that the initial value is used as one of the elements for which the\\n    maximum is determined, unlike for the default argument Python's max\\n    function, which is only used for empty iterables.\\n\\n    >>> np.max([5], initial=6)\\n    6\\n    >>> max([5], default=6)\\n    5\\n    \\\"\\\"\\\"\\n    return _wrapreduction(a, np.maximum, 'max', axis, None, out,\\n                          keepdims=keepdims, initial=initial, where=where)\\n\\n\\n@array_function_dispatch(_max_dispatcher)\\ndef amax(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,\\n         where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Return the maximum of an array or maximum along an axis.\\n\\n    `amax` is an alias of `~numpy.max`.\\n\\n    See Also\\n    --------\\n    max : alias of this function\\n    ndarray.max : equivalent method\\n    \\\"\\\"\\\"\\n    return _wrapreduction(a, np.maximum, 'max', axis, None, out,\\n                          keepdims=keepdims, initial=initial, where=where)\\n\\n\\ndef _min_dispatcher(a, axis=None, out=None, keepdims=None, initial=None,\\n                    where=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_min_dispatcher)\\ndef min(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,\\n        where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Return the minimum of an array or minimum along an axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which to operate.  By default, flattened input is\\n        used.\\n\\n        If this is a tuple of ints, the minimum is selected over multiple axes,\\n        instead of a single axis or all the axes as before.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result.  Must\\n        be of the same shape and buffer length as the expected output.\\n        See :ref:`ufuncs-output-type` for more details.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the ``min`` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    initial : scalar, optional\\n        The maximum value of an output element. Must be present to allow\\n        computation on empty slice. See `~numpy.ufunc.reduce` for details.\\n\\n    where : array_like of bool, optional\\n        Elements to compare for the minimum. See `~numpy.ufunc.reduce`\\n        for details.\\n\\n    Returns\\n    -------\\n    min : ndarray or scalar\\n        Minimum of `a`. If `axis` is None, the result is a scalar value.\\n        If `axis` is an int, the result is an array of dimension\\n        ``a.ndim - 1``.  If `axis` is a tuple, the result is an array of\\n        dimension ``a.ndim - len(axis)``.\\n\\n    See Also\\n    --------\\n    amax :\\n        The maximum value of an array along a given axis, propagating any NaNs.\\n    nanmin :\\n        The minimum value of an array along a given axis, ignoring any NaNs.\\n    minimum :\\n        Element-wise minimum of two arrays, propagating any NaNs.\\n    fmin :\\n        Element-wise minimum of two arrays, ignoring any NaNs.\\n    argmin :\\n        Return the indices of the minimum values.\\n\\n    nanmax, maximum, fmax\\n\\n    Notes\\n    -----\\n    NaN values are propagated, that is if at least one item is NaN, the\\n    corresponding min value will be NaN as well. To ignore NaN values\\n    (MATLAB behavior), please use nanmin.\\n\\n    Don't use `~numpy.min` for element-wise comparison of 2 arrays; when\\n    ``a.shape[0]`` is 2, ``minimum(a[0], a[1])`` is faster than\\n    ``min(a, axis=0)``.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.arange(4).reshape((2,2))\\n    >>> a\\n    array([[0, 1],\\n           [2, 3]])\\n    >>> np.min(a)           # Minimum of the flattened array\\n    0\\n    >>> np.min(a, axis=0)   # Minima along the first axis\\n    array([0, 1])\\n    >>> np.min(a, axis=1)   # Minima along the second axis\\n    array([0, 2])\\n    >>> np.min(a, where=[False, True], initial=10, axis=0)\\n    array([10,  1])\\n\\n    >>> b = np.arange(5, dtype=float)\\n    >>> b[2] = np.nan\\n    >>> np.min(b)\\n    np.float64(nan)\\n    >>> np.min(b, where=~np.isnan(b), initial=10)\\n    0.0\\n    >>> np.nanmin(b)\\n    0.0\\n\\n    >>> np.min([[-50], [10]], axis=-1, initial=0)\\n    array([-50,   0])\\n\\n    Notice that the initial value is used as one of the elements for which the\\n    minimum is determined, unlike for the default argument Python's max\\n    function, which is only used for empty iterables.\\n\\n    Notice that this isn't the same as Python's ``default`` argument.\\n\\n    >>> np.min([6], initial=5)\\n    5\\n    >>> min([6], default=5)\\n    6\\n    \\\"\\\"\\\"\\n    return _wrapreduction(a, np.minimum, 'min', axis, None, out,\\n                          keepdims=keepdims, initial=initial, where=where)\\n\\n\\n@array_function_dispatch(_min_dispatcher)\\ndef amin(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,\\n         where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Return the minimum of an array or minimum along an axis.\\n\\n    `amin` is an alias of `~numpy.min`.\\n\\n    See Also\\n    --------\\n    min : alias of this function\\n    ndarray.min : equivalent method\\n    \\\"\\\"\\\"\\n    return _wrapreduction(a, np.minimum, 'min', axis, None, out,\\n                          keepdims=keepdims, initial=initial, where=where)\\n\\n\\ndef _prod_dispatcher(a, axis=None, dtype=None, out=None, keepdims=None,\\n                     initial=None, where=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_prod_dispatcher)\\ndef prod(a, axis=None, dtype=None, out=None, keepdims=np._NoValue,\\n         initial=np._NoValue, where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Return the product of array elements over a given axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which a product is performed.  The default,\\n        axis=None, will calculate the product of all the elements in the\\n        input array. If axis is negative it counts from the last to the\\n        first axis.\\n\\n        If axis is a tuple of ints, a product is performed on all of the\\n        axes specified in the tuple instead of a single axis or all the\\n        axes as before.\\n    dtype : dtype, optional\\n        The type of the returned array, as well as of the accumulator in\\n        which the elements are multiplied.  The dtype of `a` is used by\\n        default unless `a` has an integer dtype of less precision than the\\n        default platform integer.  In that case, if `a` is signed then the\\n        platform integer is used while if `a` is unsigned then an unsigned\\n        integer of the same precision as the platform integer is used.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must have\\n        the same shape as the expected output, but the type of the output\\n        values will be cast if necessary.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left in the\\n        result as dimensions with size one. With this option, the result\\n        will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `prod` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n    initial : scalar, optional\\n        The starting value for this product. See `~numpy.ufunc.reduce`\\n        for details.\\n    where : array_like of bool, optional\\n        Elements to include in the product. See `~numpy.ufunc.reduce`\\n        for details.\\n\\n    Returns\\n    -------\\n    product_along_axis : ndarray, see `dtype` parameter above.\\n        An array shaped as `a` but with the specified axis removed.\\n        Returns a reference to `out` if specified.\\n\\n    See Also\\n    --------\\n    ndarray.prod : equivalent method\\n    :ref:`ufuncs-output-type`\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.  That means that, on a 32-bit platform:\\n\\n    >>> x = np.array([536870910, 536870910, 536870910, 536870910])\\n    >>> np.prod(x)\\n    16 # may vary\\n\\n    The product of an empty array is the neutral element 1:\\n\\n    >>> np.prod([])\\n    1.0\\n\\n    Examples\\n    --------\\n    By default, calculate the product of all elements:\\n\\n    >>> import numpy as np\\n    >>> np.prod([1.,2.])\\n    2.0\\n\\n    Even when the input array is two-dimensional:\\n\\n    >>> a = np.array([[1., 2.], [3., 4.]])\\n    >>> np.prod(a)\\n    24.0\\n\\n    But we can also specify the axis over which to multiply:\\n\\n    >>> np.prod(a, axis=1)\\n    array([  2.,  12.])\\n    >>> np.prod(a, axis=0)\\n    array([3., 8.])\\n\\n    Or select specific elements to include:\\n\\n    >>> np.prod([1., np.nan, 3.], where=[True, False, True])\\n    3.0\\n\\n    If the type of `x` is unsigned, then the output type is\\n    the unsigned platform integer:\\n\\n    >>> x = np.array([1, 2, 3], dtype=np.uint8)\\n    >>> np.prod(x).dtype == np.uint\\n    True\\n\\n    If `x` is of a signed integer type, then the output type\\n    is the default platform integer:\\n\\n    >>> x = np.array([1, 2, 3], dtype=np.int8)\\n    >>> np.prod(x).dtype == int\\n    True\\n\\n    You can also start the product with a value other than one:\\n\\n    >>> np.prod([1, 2], initial=5)\\n    10\\n    \\\"\\\"\\\"\\n    return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,\\n                          keepdims=keepdims, initial=initial, where=where)\\n\\n\\ndef _cumprod_dispatcher(a, axis=None, dtype=None, out=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_cumprod_dispatcher)\\ndef cumprod(a, axis=None, dtype=None, out=None):\\n    \\\"\\\"\\\"\\n    Return the cumulative product of elements along a given axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.\\n    axis : int, optional\\n        Axis along which the cumulative product is computed.  By default\\n        the input is flattened.\\n    dtype : dtype, optional\\n        Type of the returned array, as well as of the accumulator in which\\n        the elements are multiplied.  If *dtype* is not specified, it\\n        defaults to the dtype of `a`, unless `a` has an integer dtype with\\n        a precision less than that of the default platform integer.  In\\n        that case, the default platform integer is used instead.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must\\n        have the same shape and buffer length as the expected output\\n        but the type of the resulting values will be cast if necessary.\\n\\n    Returns\\n    -------\\n    cumprod : ndarray\\n        A new array holding the result is returned unless `out` is\\n        specified, in which case a reference to out is returned.\\n\\n    See Also\\n    --------\\n    cumulative_prod : Array API compatible alternative for ``cumprod``.\\n    :ref:`ufuncs-output-type`\\n\\n    Notes\\n    -----\\n    Arithmetic is modular when using integer types, and no error is\\n    raised on overflow.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([1,2,3])\\n    >>> np.cumprod(a) # intermediate results 1, 1*2\\n    ...               # total product 1*2*3 = 6\\n    array([1, 2, 6])\\n    >>> a = np.array([[1, 2, 3], [4, 5, 6]])\\n    >>> np.cumprod(a, dtype=float) # specify type of output\\n    array([   1.,    2.,    6.,   24.,  120.,  720.])\\n\\n    The cumulative product for each column (i.e., over the rows) of `a`:\\n\\n    >>> np.cumprod(a, axis=0)\\n    array([[ 1,  2,  3],\\n           [ 4, 10, 18]])\\n\\n    The cumulative product for each row (i.e. over the columns) of `a`:\\n\\n    >>> np.cumprod(a,axis=1)\\n    array([[  1,   2,   6],\\n           [  4,  20, 120]])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'cumprod', axis=axis, dtype=dtype, out=out)\\n\\n\\ndef _ndim_dispatcher(a):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_ndim_dispatcher)\\ndef ndim(a):\\n    \\\"\\\"\\\"\\n    Return the number of dimensions of an array.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input array.  If it is not already an ndarray, a conversion is\\n        attempted.\\n\\n    Returns\\n    -------\\n    number_of_dimensions : int\\n        The number of dimensions in `a`.  Scalars are zero-dimensional.\\n\\n    See Also\\n    --------\\n    ndarray.ndim : equivalent method\\n    shape : dimensions of array\\n    ndarray.shape : dimensions of array\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.ndim([[1,2,3],[4,5,6]])\\n    2\\n    >>> np.ndim(np.array([[1,2,3],[4,5,6]]))\\n    2\\n    >>> np.ndim(1)\\n    0\\n\\n    \\\"\\\"\\\"\\n    try:\\n        return a.ndim\\n    except AttributeError:\\n        return asarray(a).ndim\\n\\n\\ndef _size_dispatcher(a, axis=None):\\n    return (a,)\\n\\n\\n@array_function_dispatch(_size_dispatcher)\\ndef size(a, axis=None):\\n    \\\"\\\"\\\"\\n    Return the number of elements along a given axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which the elements are counted.  By default, give\\n        the total number of elements.\\n\\n        .. versionchanged:: 2.4\\n           Extended to accept multiple axes.\\n\\n    Returns\\n    -------\\n    element_count : int\\n        Number of elements along the specified axis.\\n\\n    See Also\\n    --------\\n    shape : dimensions of array\\n    ndarray.shape : dimensions of array\\n    ndarray.size : number of elements in array\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1,2,3],[4,5,6]])\\n    >>> np.size(a)\\n    6\\n    >>> np.size(a,axis=1)\\n    3\\n    >>> np.size(a,axis=0)\\n    2\\n    >>> np.size(a,axis=(0,1))\\n    6\\n\\n    \\\"\\\"\\\"\\n    if axis is None:\\n        try:\\n            return a.size\\n        except AttributeError:\\n            return asarray(a).size\\n    else:\\n        _shape = shape(a)\\n        from .numeric import normalize_axis_tuple\\n        axis = normalize_axis_tuple(axis, len(_shape), allow_duplicate=False)\\n        return math.prod(_shape[ax] for ax in axis)\\n\\n\\ndef _round_dispatcher(a, decimals=None, out=None):\\n    return (a, out)\\n\\n\\n@array_function_dispatch(_round_dispatcher)\\ndef round(a, decimals=0, out=None):\\n    \\\"\\\"\\\"\\n    Evenly round to the given number of decimals.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Input data.\\n    decimals : int, optional\\n        Number of decimal places to round to (default: 0).  If\\n        decimals is negative, it specifies the number of positions to\\n        the left of the decimal point.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must have\\n        the same shape as the expected output, but the type of the output\\n        values will be cast if necessary. See :ref:`ufuncs-output-type`\\n        for more details.\\n\\n    Returns\\n    -------\\n    rounded_array : ndarray\\n        An array of the same type as `a`, containing the rounded values.\\n        Unless `out` was specified, a new array is created.  A reference to\\n        the result is returned.\\n\\n        The real and imaginary parts of complex numbers are rounded\\n        separately.  The result of rounding a float is a float.\\n\\n    See Also\\n    --------\\n    ndarray.round : equivalent method\\n    around : an alias for this function\\n    ceil, fix, floor, rint, trunc\\n\\n\\n    Notes\\n    -----\\n    For values exactly halfway between rounded decimal values, NumPy\\n    rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0,\\n    -0.5 and 0.5 round to 0.0, etc.\\n\\n    ``np.round`` uses a fast but sometimes inexact algorithm to round\\n    floating-point datatypes. For positive `decimals` it is equivalent to\\n    ``np.true_divide(np.rint(a * 10**decimals), 10**decimals)``, which has\\n    error due to the inexact representation of decimal fractions in the IEEE\\n    floating point standard [1]_ and errors introduced when scaling by powers\\n    of ten. For instance, note the extra \\\"1\\\" in the following:\\n\\n        >>> np.round(56294995342131.5, 3)\\n        56294995342131.51\\n\\n    If your goal is to print such values with a fixed number of decimals, it is\\n    preferable to use numpy's float printing routines to limit the number of\\n    printed decimals:\\n\\n        >>> np.format_float_positional(56294995342131.5, precision=3)\\n        '56294995342131.5'\\n\\n    The float printing routines use an accurate but much more computationally\\n    demanding algorithm to compute the number of digits after the decimal\\n    point.\\n\\n    Alternatively, Python's builtin `round` function uses a more accurate\\n    but slower algorithm for 64-bit floating point values:\\n\\n        >>> round(56294995342131.5, 3)\\n        56294995342131.5\\n        >>> np.round(16.055, 2), round(16.055, 2)  # equals 16.0549999999999997\\n        (16.06, 16.05)\\n\\n\\n    References\\n    ----------\\n    .. [1] \\\"Lecture Notes on the Status of IEEE 754\\\", William Kahan,\\n           https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.round([0.37, 1.64])\\n    array([0., 2.])\\n    >>> np.round([0.37, 1.64], decimals=1)\\n    array([0.4, 1.6])\\n    >>> np.round([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value\\n    array([0., 2., 2., 4., 4.])\\n    >>> np.round([1,2,3,11], decimals=1) # ndarray of ints is returned\\n    array([ 1,  2,  3, 11])\\n    >>> np.round([1,2,3,11], decimals=-1)\\n    array([ 0,  0,  0, 10])\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'round', decimals=decimals, out=out)\\n\\n\\n@array_function_dispatch(_round_dispatcher)\\ndef around(a, decimals=0, out=None):\\n    \\\"\\\"\\\"\\n    Round an array to the given number of decimals.\\n\\n    `around` is an alias of `~numpy.round`.\\n\\n    See Also\\n    --------\\n    ndarray.round : equivalent method\\n    round : alias for this function\\n    ceil, fix, floor, rint, trunc\\n\\n    \\\"\\\"\\\"\\n    return _wrapfunc(a, 'round', decimals=decimals, out=out)\\n\\n\\ndef _mean_dispatcher(a, axis=None, dtype=None, out=None, keepdims=None, *,\\n                     where=None):\\n    return (a, where, out)\\n\\n\\n@array_function_dispatch(_mean_dispatcher)\\ndef mean(a, axis=None, dtype=None, out=None, keepdims=np._NoValue, *,\\n         where=np._NoValue):\\n    \\\"\\\"\\\"\\n    Compute the arithmetic mean along the specified axis.\\n\\n    Returns the average of the array elements.  The average is taken over\\n    the flattened array by default, otherwise over the specified axis.\\n    `float64` intermediate and return values are used for integer inputs.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array containing numbers whose mean is desired. If `a` is not an\\n        array, a conversion is attempted.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which the means are computed. The default is to\\n        compute the mean of the flattened array.\\n\\n        If this is a tuple of ints, a mean is performed over multiple axes,\\n        instead of a single axis or all the axes as before.\\n    dtype : data-type, optional\\n        Type to use in computing the mean.  For integer inputs, the default\\n        is `float64`; for floating point inputs, it is the same as the\\n        input dtype.\\n    out : ndarray, optional\\n        Alternate output array in which to place the result.  The default\\n        is ``None``; if provided, it must have the same shape as the\\n        expected output, but the type will be cast if necessary.\\n        See :ref:`ufuncs-output-type` for more details.\\n        See :ref:`ufuncs-output-type` for more details.\\n\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `mean` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n\\n    where : array_like of bool, optional\\n        Elements to include in the mean. See `~numpy.ufunc.reduce` for details.\\n\\n        .. versionadded:: 1.20.0\\n\\n    Returns\\n    -------\\n    m : ndarray, see dtype parameter above\\n        If `out=None`, returns a new array containing the mean values,\\n        otherwise a reference to the output array is returned.\\n\\n    See Also\\n    --------\\n    average : Weighted average\\n    std, var, nanmean, nanstd, nanvar\\n\\n    Notes\\n    -----\\n    The arithmetic mean is the sum of the elements along the axis divided\\n    by the number of elements.\\n\\n    Note that for floating-point input, the mean is computed using the\\n    same precision the input has.  Depending on the input data, this can\\n    cause the results to be inaccurate, especially for `float32` (see\\n    example below).  Specifying a higher-precision accumulator using the\\n    `dtype` keyword can alleviate this issue.\\n\\n    By default, `float16` results are computed using `float32` intermediates\\n    for extra precision.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4]])\\n    >>> np.mean(a)\\n    2.5\\n    >>> np.mean(a, axis=0)\\n    array([2., 3.])\\n    >>> np.mean(a, axis=1)\\n    array([1.5, 3.5])\\n\\n    In single precision, `mean` can be inaccurate:\\n\\n    >>> a = np.zeros((2, 512*512), dtype=np.float32)\\n    >>> a[0, :] = 1.0\\n    >>> a[1, :] = 0.1\\n    >>> np.mean(a)\\n    np.float32(0.54999924)\\n\\n    Computing the mean in float64 is more accurate:\\n\\n    >>> np.mean(a, dtype=np.float64)\\n    0.55000000074505806 # may vary\\n\\n    Computing the mean in timedelta64 is available:\\n\\n    >>> b = np.array([1, 3], dtype=\\\"timedelta64[D]\\\")\\n    >>> np.mean(b)\\n    np.timedelta64(2,'D')\\n\\n    Specifying a where argument:\\n\\n    >>> a = np.array([[5, 9, 13], [14, 10, 12], [11, 15, 19]])\\n    >>> np.mean(a)\\n    12.0\\n    >>> np.mean(a, where=[[True], [False], [False]])\\n    9.0\\n\\n    \\\"\\\"\\\"\\n    kwargs = {}\\n    if keepdims is not np._NoValue:\\n        kwargs['keepdims'] = keepdims\\n    if where is not np._NoValue:\\n        kwargs['where'] = where\\n    if type(a) is not mu.ndarray:\\n        try:\\n            mean = a.mean\\n        except AttributeError:\\n            pass\\n        else:\\n            return mean(axis=axis, dtype=dtype, out=out, **kwargs)\\n\\n    return _methods._mean(a, axis=axis, dtype=dtype,\\n                          out=out, **kwargs)\\n\\n\\ndef _std_dispatcher(a, axis=None, dtype=None, out=None, ddof=None,\\n                    keepdims=None, *, where=None, mean=None, correction=None):\\n    return (a, where, out, mean)\\n\\n\\n@array_function_dispatch(_std_dispatcher)\\ndef std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue, *,\\n        where=np._NoValue, mean=np._NoValue, correction=np._NoValue):\\n    r\\\"\\\"\\\"\\n    Compute the standard deviation along the specified axis.\\n\\n    Returns the standard deviation, a measure of the spread of a distribution,\\n    of the array elements. The standard deviation is computed for the\\n    flattened array by default, otherwise over the specified axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Calculate the standard deviation of these values.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which the standard deviation is computed. The\\n        default is to compute the standard deviation of the flattened array.\\n        If this is a tuple of ints, a standard deviation is performed over\\n        multiple axes, instead of a single axis or all the axes as before.\\n    dtype : dtype, optional\\n        Type to use in computing the standard deviation. For arrays of\\n        integer type the default is float64, for arrays of float types it is\\n        the same as the array type.\\n    out : ndarray, optional\\n        Alternative output array in which to place the result. It must have\\n        the same shape as the expected output but the type (of the calculated\\n        values) will be cast if necessary.\\n        See :ref:`ufuncs-output-type` for more details.\\n    ddof : {int, float}, optional\\n        Means Delta Degrees of Freedom.  The divisor used in calculations\\n        is ``N - ddof``, where ``N`` represents the number of elements.\\n        By default `ddof` is zero. See Notes for details about use of `ddof`.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `std` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n    where : array_like of bool, optional\\n        Elements to include in the standard deviation.\\n        See `~numpy.ufunc.reduce` for details.\\n\\n        .. versionadded:: 1.20.0\\n\\n    mean : array_like, optional\\n        Provide the mean to prevent its recalculation. The mean should have\\n        a shape as if it was calculated with ``keepdims=True``.\\n        The axis for the calculation of the mean should be the same as used in\\n        the call to this std function.\\n\\n        .. versionadded:: 2.0.0\\n\\n    correction : {int, float}, optional\\n        Array API compatible name for the ``ddof`` parameter. Only one of them\\n        can be provided at the same time.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    standard_deviation : ndarray, see dtype parameter above.\\n        If `out` is None, return a new array containing the standard deviation,\\n        otherwise return a reference to the output array.\\n\\n    See Also\\n    --------\\n    var, mean, nanmean, nanstd, nanvar\\n    :ref:`ufuncs-output-type`\\n\\n    Notes\\n    -----\\n    There are several common variants of the array standard deviation\\n    calculation. Assuming the input `a` is a one-dimensional NumPy array\\n    and ``mean`` is either provided as an argument or computed as\\n    ``a.mean()``, NumPy computes the standard deviation of an array as::\\n\\n        N = len(a)\\n        d2 = abs(a - mean)**2  # abs is for complex `a`\\n        var = d2.sum() / (N - ddof)  # note use of `ddof`\\n        std = var**0.5\\n\\n    Different values of the argument `ddof` are useful in different\\n    contexts. NumPy's default ``ddof=0`` corresponds with the expression:\\n\\n    .. math::\\n\\n        \\\\sqrt{\\\\frac{\\\\sum_i{|a_i - \\\\bar{a}|^2 }}{N}}\\n\\n    which is sometimes called the \\\"population standard deviation\\\" in the field\\n    of statistics because it applies the definition of standard deviation to\\n    `a` as if `a` were a complete population of possible observations.\\n\\n    Many other libraries define the standard deviation of an array\\n    differently, e.g.:\\n\\n    .. math::\\n\\n        \\\\sqrt{\\\\frac{\\\\sum_i{|a_i - \\\\bar{a}|^2 }}{N - 1}}\\n\\n    In statistics, the resulting quantity is sometimes called the \\\"sample\\n    standard deviation\\\" because if `a` is a random sample from a larger\\n    population, this calculation provides the square root of an unbiased\\n    estimate of the variance of the population. The use of :math:`N-1` in the\\n    denominator is often called \\\"Bessel's correction\\\" because it corrects for\\n    bias (toward lower values) in the variance estimate introduced when the\\n    sample mean of `a` is used in place of the true mean of the population.\\n    The resulting estimate of the standard deviation is still biased, but less\\n    than it would have been without the correction. For this quantity, use\\n    ``ddof=1``.\\n\\n    Note that, for complex numbers, `std` takes the absolute\\n    value before squaring, so that the result is always real and nonnegative.\\n\\n    For floating-point input, the standard deviation is computed using the same\\n    precision the input has. Depending on the input data, this can cause\\n    the results to be inaccurate, especially for float32 (see example below).\\n    Specifying a higher-accuracy accumulator using the `dtype` keyword can\\n    alleviate this issue.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4]])\\n    >>> np.std(a)\\n    1.1180339887498949 # may vary\\n    >>> np.std(a, axis=0)\\n    array([1.,  1.])\\n    >>> np.std(a, axis=1)\\n    array([0.5,  0.5])\\n\\n    In single precision, std() can be inaccurate:\\n\\n    >>> a = np.zeros((2, 512*512), dtype=np.float32)\\n    >>> a[0, :] = 1.0\\n    >>> a[1, :] = 0.1\\n    >>> np.std(a)\\n    np.float32(0.45000005)\\n\\n    Computing the standard deviation in float64 is more accurate:\\n\\n    >>> np.std(a, dtype=np.float64)\\n    0.44999999925494177 # may vary\\n\\n    Specifying a where argument:\\n\\n    >>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])\\n    >>> np.std(a)\\n    2.614064523559687 # may vary\\n    >>> np.std(a, where=[[True], [True], [False]])\\n    2.0\\n\\n    Using the mean keyword to save computation time:\\n\\n    >>> import numpy as np\\n    >>> from timeit import timeit\\n    >>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])\\n    >>> mean = np.mean(a, axis=1, keepdims=True)\\n    >>>\\n    >>> g = globals()\\n    >>> n = 10000\\n    >>> t1 = timeit(\\\"std = np.std(a, axis=1, mean=mean)\\\", globals=g, number=n)\\n    >>> t2 = timeit(\\\"std = np.std(a, axis=1)\\\", globals=g, number=n)\\n    >>> print(f'Percentage execution time saved {100*(t2-t1)/t2:.0f}%')\\n    #doctest: +SKIP\\n    Percentage execution time saved 30%\\n\\n    \\\"\\\"\\\"\\n    kwargs = {}\\n    if keepdims is not np._NoValue:\\n        kwargs['keepdims'] = keepdims\\n    if where is not np._NoValue:\\n        kwargs['where'] = where\\n    if mean is not np._NoValue:\\n        kwargs['mean'] = mean\\n\\n    if correction != np._NoValue:\\n        if ddof != 0:\\n            raise ValueError(\\n                \\\"ddof and correction can't be provided simultaneously.\\\"\\n            )\\n        else:\\n            ddof = correction\\n\\n    if type(a) is not mu.ndarray:\\n        try:\\n            std = a.std\\n        except AttributeError:\\n            pass\\n        else:\\n            return std(axis=axis, dtype=dtype, out=out, ddof=ddof, **kwargs)\\n\\n    return _methods._std(a, axis=axis, dtype=dtype, out=out, ddof=ddof,\\n                         **kwargs)\\n\\n\\ndef _var_dispatcher(a, axis=None, dtype=None, out=None, ddof=None,\\n                    keepdims=None, *, where=None, mean=None, correction=None):\\n    return (a, where, out, mean)\\n\\n\\n@array_function_dispatch(_var_dispatcher)\\ndef var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue, *,\\n        where=np._NoValue, mean=np._NoValue, correction=np._NoValue):\\n    r\\\"\\\"\\\"\\n    Compute the variance along the specified axis.\\n\\n    Returns the variance of the array elements, a measure of the spread of a\\n    distribution.  The variance is computed for the flattened array by\\n    default, otherwise over the specified axis.\\n\\n    Parameters\\n    ----------\\n    a : array_like\\n        Array containing numbers whose variance is desired.  If `a` is not an\\n        array, a conversion is attempted.\\n    axis : None or int or tuple of ints, optional\\n        Axis or axes along which the variance is computed.  The default is to\\n        compute the variance of the flattened array.\\n        If this is a tuple of ints, a variance is performed over multiple axes,\\n        instead of a single axis or all the axes as before.\\n    dtype : data-type, optional\\n        Type to use in computing the variance.  For arrays of integer type\\n        the default is `float64`; for arrays of float types it is the same as\\n        the array type.\\n    out : ndarray, optional\\n        Alternate output array in which to place the result.  It must have\\n        the same shape as the expected output, but the type is cast if\\n        necessary.\\n    ddof : {int, float}, optional\\n        \\\"Delta Degrees of Freedom\\\": the divisor used in the calculation is\\n        ``N - ddof``, where ``N`` represents the number of elements. By\\n        default `ddof` is zero. See notes for details about use of `ddof`.\\n    keepdims : bool, optional\\n        If this is set to True, the axes which are reduced are left\\n        in the result as dimensions with size one. With this option,\\n        the result will broadcast correctly against the input array.\\n\\n        If the default value is passed, then `keepdims` will not be\\n        passed through to the `var` method of sub-classes of\\n        `ndarray`, however any non-default value will be.  If the\\n        sub-class' method does not implement `keepdims` any\\n        exceptions will be raised.\\n    where : array_like of bool, optional\\n        Elements to include in the variance. See `~numpy.ufunc.reduce` for\\n        details.\\n\\n        .. versionadded:: 1.20.0\\n\\n    mean : array like, optional\\n        Provide the mean to prevent its recalculation. The mean should have\\n        a shape as if it was calculated with ``keepdims=True``.\\n        The axis for the calculation of the mean should be the same as used in\\n        the call to this var function.\\n\\n        .. versionadded:: 2.0.0\\n\\n    correction : {int, float}, optional\\n        Array API compatible name for the ``ddof`` parameter. Only one of them\\n        can be provided at the same time.\\n\\n        .. versionadded:: 2.0.0\\n\\n    Returns\\n    -------\\n    variance : ndarray, see dtype parameter above\\n        If ``out=None``, returns a new array containing the variance;\\n        otherwise, a reference to the output array is returned.\\n\\n    See Also\\n    --------\\n    std, mean, nanmean, nanstd, nanvar\\n    :ref:`ufuncs-output-type`\\n\\n    Notes\\n    -----\\n    There are several common variants of the array variance calculation.\\n    Assuming the input `a` is a one-dimensional NumPy array and ``mean`` is\\n    either provided as an argument or computed as ``a.mean()``, NumPy\\n    computes the variance of an array as::\\n\\n        N = len(a)\\n        d2 = abs(a - mean)**2  # abs is for complex `a`\\n        var = d2.sum() / (N - ddof)  # note use of `ddof`\\n\\n    Different values of the argument `ddof` are useful in different\\n    contexts. NumPy's default ``ddof=0`` corresponds with the expression:\\n\\n    .. math::\\n\\n        \\\\frac{\\\\sum_i{|a_i - \\\\bar{a}|^2 }}{N}\\n\\n    which is sometimes called the \\\"population variance\\\" in the field of\\n    statistics because it applies the definition of variance to `a` as if `a`\\n    were a complete population of possible observations.\\n\\n    Many other libraries define the variance of an array differently, e.g.:\\n\\n    .. math::\\n\\n        \\\\frac{\\\\sum_i{|a_i - \\\\bar{a}|^2}}{N - 1}\\n\\n    In statistics, the resulting quantity is sometimes called the \\\"sample\\n    variance\\\" because if `a` is a random sample from a larger population,\\n    this calculation provides an unbiased estimate of the variance of the\\n    population.  The use of :math:`N-1` in the denominator is often called\\n    \\\"Bessel's correction\\\" because it corrects for bias (toward lower values)\\n    in the variance estimate introduced when the sample mean of `a` is used\\n    in place of the true mean of the population. For this quantity, use\\n    ``ddof=1``.\\n\\n    Note that for complex numbers, the absolute value is taken before\\n    squaring, so that the result is always real and nonnegative.\\n\\n    For floating-point input, the variance is computed using the same\\n    precision the input has.  Depending on the input data, this can cause\\n    the results to be inaccurate, especially for `float32` (see example\\n    below).  Specifying a higher-accuracy accumulator using the ``dtype``\\n    keyword can alleviate this issue.\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> a = np.array([[1, 2], [3, 4]])\\n    >>> np.var(a)\\n    1.25\\n    >>> np.var(a, axis=0)\\n    array([1.,  1.])\\n    >>> np.var(a, axis=1)\\n    array([0.25,  0.25])\\n\\n    In single precision, var() can be inaccurate:\\n\\n    >>> a = np.zeros((2, 512*512), dtype=np.float32)\\n    >>> a[0, :] = 1.0\\n    >>> a[1, :] = 0.1\\n    >>> np.var(a)\\n    np.float32(0.20250003)\\n\\n    Computing the variance in float64 is more accurate:\\n\\n    >>> np.var(a, dtype=np.float64)\\n    0.20249999932944759 # may vary\\n    >>> ((1-0.55)**2 + (0.1-0.55)**2)/2\\n    0.2025\\n\\n    Specifying a where argument:\\n\\n    >>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])\\n    >>> np.var(a)\\n    6.833333333333333 # may vary\\n    >>> np.var(a, where=[[True], [True], [False]])\\n    4.0\\n\\n    Using the mean keyword to save computation time:\\n\\n    >>> import numpy as np\\n    >>> from timeit import timeit\\n    >>>\\n    >>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])\\n    >>> mean = np.mean(a, axis=1, keepdims=True)\\n    >>>\\n    >>> g = globals()\\n    >>> n = 10000\\n    >>> t1 = timeit(\\\"var = np.var(a, axis=1, mean=mean)\\\", globals=g, number=n)\\n    >>> t2 = timeit(\\\"var = np.var(a, axis=1)\\\", globals=g, number=n)\\n    >>> print(f'Percentage execution time saved {100*(t2-t1)/t2:.0f}%')\\n    #doctest: +SKIP\\n    Percentage execution time saved 32%\\n\\n    \\\"\\\"\\\"\\n    kwargs = {}\\n    if keepdims is not np._NoValue:\\n        kwargs['keepdims'] = keepdims\\n    if where is not np._NoValue:\\n        kwargs['where'] = where\\n    if mean is not np._NoValue:\\n        kwargs['mean'] = mean\\n\\n    if correction != np._NoValue:\\n        if ddof != 0:\\n            raise ValueError(\\n                \\\"ddof and correction can't be provided simultaneously.\\\"\\n            )\\n        else:\\n            ddof = correction\\n\\n    if type(a) is not mu.ndarray:\\n        try:\\n            var = a.var\\n\\n        except AttributeError:\\n            pass\\n        else:\\n            return var(axis=axis, dtype=dtype, out=out, ddof=ddof, **kwargs)\\n\\n    return _methods._var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,\\n                         **kwargs)\\n\", 4233], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py\": [\"\\\"\\\"\\\"\\nArray methods which are called by both the C-code for the method\\nand the Python code for the NumPy-namespace function\\n\\n\\\"\\\"\\\"\\nimport os\\nimport pickle\\nimport warnings\\nfrom contextlib import nullcontext\\n\\nimport numpy as np\\nfrom numpy._core import multiarray as mu, numerictypes as nt, umath as um\\nfrom numpy._core.multiarray import asanyarray\\nfrom numpy._globals import _NoValue\\n\\n# save those O(100) nanoseconds!\\nbool_dt = mu.dtype(\\\"bool\\\")\\numr_maximum = um.maximum.reduce\\numr_minimum = um.minimum.reduce\\numr_sum = um.add.reduce\\numr_prod = um.multiply.reduce\\numr_bitwise_count = um.bitwise_count\\numr_any = um.logical_or.reduce\\numr_all = um.logical_and.reduce\\n\\n# Complex types to -> (2,)float view for fast-path computation in _var()\\n_complex_to_float = {\\n    nt.dtype(nt.csingle): nt.dtype(nt.single),\\n    nt.dtype(nt.cdouble): nt.dtype(nt.double),\\n}\\n# Special case for windows: ensure double takes precedence\\nif nt.dtype(nt.longdouble) != nt.dtype(nt.double):\\n    _complex_to_float.update({\\n        nt.dtype(nt.clongdouble): nt.dtype(nt.longdouble),\\n    })\\n\\n# avoid keyword arguments to speed up parsing, saves about 15%-20% for very\\n# small reductions\\ndef _amax(a, axis=None, out=None, keepdims=False,\\n          initial=_NoValue, where=True):\\n    return umr_maximum(a, axis, None, out, keepdims, initial, where)\\n\\ndef _amin(a, axis=None, out=None, keepdims=False,\\n          initial=_NoValue, where=True):\\n    return umr_minimum(a, axis, None, out, keepdims, initial, where)\\n\\ndef _sum(a, axis=None, dtype=None, out=None, keepdims=False,\\n         initial=_NoValue, where=True):\\n    return umr_sum(a, axis, dtype, out, keepdims, initial, where)\\n\\ndef _prod(a, axis=None, dtype=None, out=None, keepdims=False,\\n          initial=_NoValue, where=True):\\n    return umr_prod(a, axis, dtype, out, keepdims, initial, where)\\n\\ndef _any(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):\\n    # By default, return a boolean for any and all\\n    if dtype is None:\\n        dtype = bool_dt\\n    # Parsing keyword arguments is currently fairly slow, so avoid it for now\\n    if where is True:\\n        return umr_any(a, axis, dtype, out, keepdims)\\n    return umr_any(a, axis, dtype, out, keepdims, where=where)\\n\\ndef _all(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):\\n    # By default, return a boolean for any and all\\n    if dtype is None:\\n        dtype = bool_dt\\n    # Parsing keyword arguments is currently fairly slow, so avoid it for now\\n    if where is True:\\n        return umr_all(a, axis, dtype, out, keepdims)\\n    return umr_all(a, axis, dtype, out, keepdims, where=where)\\n\\ndef _count_reduce_items(arr, axis, keepdims=False, where=True):\\n    # fast-path for the default case\\n    if where is True:\\n        # no boolean mask given, calculate items according to axis\\n        if axis is None:\\n            axis = tuple(range(arr.ndim))\\n        elif not isinstance(axis, tuple):\\n            axis = (axis,)\\n        items = 1\\n        for ax in axis:\\n            items *= arr.shape[mu.normalize_axis_index(ax, arr.ndim)]\\n        items = nt.intp(items)\\n    else:\\n        # TODO: Optimize case when `where` is broadcast along a non-reduction\\n        # axis and full sum is more excessive than needed.\\n\\n        # guarded to protect circular imports\\n        from numpy.lib._stride_tricks_impl import broadcast_to\\n        # count True values in (potentially broadcasted) boolean mask\\n        items = umr_sum(broadcast_to(where, arr.shape), axis, nt.intp, None,\\n                        keepdims)\\n    return items\\n\\ndef _clip(a, min=None, max=None, out=None, **kwargs):\\n    if a.dtype.kind in \\\"iu\\\":\\n        # If min/max is a Python integer, deal with out-of-bound values here.\\n        # (This enforces NEP 50 rules as no value based promotion is done.)\\n        if type(min) is int and min <= np.iinfo(a.dtype).min:\\n            min = None\\n        if type(max) is int and max >= np.iinfo(a.dtype).max:\\n            max = None\\n\\n    if min is None and max is None:\\n        # return identity\\n        return um.positive(a, out=out, **kwargs)\\n    elif min is None:\\n        return um.minimum(a, max, out=out, **kwargs)\\n    elif max is None:\\n        return um.maximum(a, min, out=out, **kwargs)\\n    else:\\n        return um.clip(a, min, max, out=out, **kwargs)\\n\\ndef _mean(a, axis=None, dtype=None, out=None, keepdims=False, *, where=True):\\n    arr = asanyarray(a)\\n\\n    is_float16_result = False\\n\\n    rcount = _count_reduce_items(arr, axis, keepdims=keepdims, where=where)\\n    if rcount == 0 if where is True else umr_any(rcount == 0, axis=None):\\n        warnings.warn(\\\"Mean of empty slice\\\", RuntimeWarning, stacklevel=2)\\n\\n    # Cast bool, unsigned int, and int to float64 by default\\n    if dtype is None:\\n        if issubclass(arr.dtype.type, (nt.integer, nt.bool)):\\n            dtype = mu.dtype('f8')\\n        elif issubclass(arr.dtype.type, nt.float16):\\n            dtype = mu.dtype('f4')\\n            is_float16_result = True\\n\\n    ret = umr_sum(arr, axis, dtype, out, keepdims, where=where)\\n    if isinstance(ret, mu.ndarray):\\n        ret = um.true_divide(\\n                ret, rcount, out=ret, casting='unsafe', subok=False)\\n        if is_float16_result and out is None:\\n            ret = arr.dtype.type(ret)\\n    elif hasattr(ret, 'dtype'):\\n        if is_float16_result:\\n            ret = arr.dtype.type(ret / rcount)\\n        else:\\n            ret = ret.dtype.type(ret / rcount)\\n    else:\\n        ret = ret / rcount\\n\\n    return ret\\n\\ndef _var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, *,\\n         where=True, mean=None):\\n    arr = asanyarray(a)\\n\\n    rcount = _count_reduce_items(arr, axis, keepdims=keepdims, where=where)\\n    # Make this warning show up on top.\\n    if ddof >= rcount if where is True else umr_any(ddof >= rcount, axis=None):\\n        warnings.warn(\\\"Degrees of freedom <= 0 for slice\\\", RuntimeWarning,\\n                      stacklevel=2)\\n\\n    # Cast bool, unsigned int, and int to float64 by default\\n    if dtype is None and issubclass(arr.dtype.type, (nt.integer, nt.bool)):\\n        dtype = mu.dtype('f8')\\n\\n    if mean is not None:\\n        arrmean = mean\\n    else:\\n        # Compute the mean.\\n        # Note that if dtype is not of inexact type then arraymean will\\n        # not be either.\\n        arrmean = umr_sum(arr, axis, dtype, keepdims=True, where=where)\\n        # The shape of rcount has to match arrmean to not change the shape of\\n        # out in broadcasting. Otherwise, it cannot be stored back to arrmean.\\n        if rcount.ndim == 0:\\n            # fast-path for default case when where is True\\n            div = rcount\\n        else:\\n            # matching rcount to arrmean when where is specified as array\\n            div = rcount.reshape(arrmean.shape)\\n        if isinstance(arrmean, mu.ndarray):\\n            arrmean = um.true_divide(arrmean, div, out=arrmean,\\n                                     casting='unsafe', subok=False)\\n        elif hasattr(arrmean, \\\"dtype\\\"):\\n            arrmean = arrmean.dtype.type(arrmean / rcount)\\n        else:\\n            arrmean = arrmean / rcount\\n\\n    # Compute sum of squared deviations from mean\\n    # Note that x may not be inexact and that we need it to be an array,\\n    # not a scalar.\\n    x = um.subtract(arr, arrmean, out=...)\\n    if issubclass(arr.dtype.type, (nt.floating, nt.integer)):\\n        x = um.square(x, out=x)\\n    # Fast-paths for built-in complex types\\n    elif (_float_dtype := _complex_to_float.get(x.dtype)) is not None:\\n        xv = x.view(dtype=(_float_dtype, (2,)))\\n        um.square(xv, out=xv)\\n        x = um.add(xv[..., 0], xv[..., 1], out=x.real)\\n    # Most general case; includes handling object arrays containing imaginary\\n    # numbers and complex types with non-native byteorder\\n    else:\\n        x = um.multiply(x, um.conjugate(x), out=x).real\\n\\n    ret = umr_sum(x, axis, dtype, out, keepdims=keepdims, where=where)\\n\\n    # Compute degrees of freedom and make sure it is not negative.\\n    rcount = um.maximum(rcount - ddof, 0)\\n\\n    # divide by degrees of freedom\\n    if isinstance(ret, mu.ndarray):\\n        ret = um.true_divide(\\n                ret, rcount, out=ret, casting='unsafe', subok=False)\\n    elif hasattr(ret, 'dtype'):\\n        ret = ret.dtype.type(ret / rcount)\\n    else:\\n        ret = ret / rcount\\n\\n    return ret\\n\\ndef _std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=False, *,\\n         where=True, mean=None):\\n    ret = _var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,\\n               keepdims=keepdims, where=where, mean=mean)\\n\\n    if isinstance(ret, mu.ndarray):\\n        ret = um.sqrt(ret, out=ret)\\n    elif hasattr(ret, 'dtype'):\\n        ret = ret.dtype.type(um.sqrt(ret))\\n    else:\\n        ret = um.sqrt(ret)\\n\\n    return ret\\n\\ndef _ptp(a, axis=None, out=None, keepdims=False):\\n    return um.subtract(\\n        umr_maximum(a, axis, None, out, keepdims),\\n        umr_minimum(a, axis, None, None, keepdims),\\n        out\\n    )\\n\\ndef _dump(self, file, protocol=2):\\n    if hasattr(file, 'write'):\\n        ctx = nullcontext(file)\\n    else:\\n        ctx = open(os.fspath(file), \\\"wb\\\")\\n    with ctx as f:\\n        pickle.dump(self, f, protocol=protocol)\\n\\ndef _dumps(self, protocol=2):\\n    return pickle.dumps(self, protocol=protocol)\\n\\ndef _bitwise_count(a, out=None, *, where=True, casting='same_kind',\\n          order='K', dtype=None, subok=True):\\n    return umr_bitwise_count(a, out, where=where, casting=casting,\\n            order=order, dtype=dtype, subok=subok)\\n\", 252], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py\": [\"\\\"\\\"\\\"\\nFunctions for changing global ufunc configuration\\n\\nThis provides helpers which wrap `_get_extobj_dict` and `_make_extobj`, and\\n`_extobj_contextvar` from umath.\\n\\\"\\\"\\\"\\nimport functools\\n\\nfrom numpy._utils import set_module\\n\\nfrom .umath import _extobj_contextvar, _get_extobj_dict, _make_extobj\\n\\n__all__ = [\\n    \\\"seterr\\\", \\\"geterr\\\", \\\"setbufsize\\\", \\\"getbufsize\\\", \\\"seterrcall\\\", \\\"geterrcall\\\",\\n    \\\"errstate\\\"\\n]\\n\\n\\n@set_module('numpy')\\ndef seterr(all=None, divide=None, over=None, under=None, invalid=None):\\n    \\\"\\\"\\\"\\n    Set how floating-point errors are handled.\\n\\n    Note that operations on integer scalar types (such as `int16`) are\\n    handled like floating point, and are affected by these settings.\\n\\n    Parameters\\n    ----------\\n    all : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional\\n        Set treatment for all types of floating-point errors at once:\\n\\n        - ignore: Take no action when the exception occurs.\\n        - warn: Print a :exc:`RuntimeWarning` (via the Python `warnings`\\n          module).\\n        - raise: Raise a :exc:`FloatingPointError`.\\n        - call: Call a function specified using the `seterrcall` function.\\n        - print: Print a warning directly to ``stdout``.\\n        - log: Record error in a Log object specified by `seterrcall`.\\n\\n        The default is not to change the current behavior.\\n    divide : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional\\n        Treatment for division by zero.\\n    over : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional\\n        Treatment for floating-point overflow.\\n    under : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional\\n        Treatment for floating-point underflow.\\n    invalid : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional\\n        Treatment for invalid floating-point operation.\\n\\n    Returns\\n    -------\\n    old_settings : dict\\n        Dictionary containing the old settings.\\n\\n    See also\\n    --------\\n    seterrcall : Set a callback function for the 'call' mode.\\n    geterr, geterrcall, errstate\\n\\n\\n    Notes\\n    -----\\n    The floating-point exceptions are defined in the IEEE 754 standard [1]_:\\n\\n    - Division by zero: infinite result obtained from finite numbers.\\n    - Overflow: result too large to be expressed.\\n    - Underflow: result so close to zero that some precision\\n      was lost.\\n    - Invalid operation: result is not an expressible number, typically\\n      indicates that a NaN was produced.\\n\\n    **Concurrency note:** see  :ref:`fp_error_handling`\\n\\n    .. [1] https://en.wikipedia.org/wiki/IEEE_754\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> orig_settings = np.seterr(all='ignore')  # seterr to known value\\n    >>> np.int16(32000) * np.int16(3)\\n    np.int16(30464)\\n    >>> np.seterr(over='raise')\\n    {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}\\n    >>> old_settings = np.seterr(all='warn', over='raise')\\n    >>> np.int16(32000) * np.int16(3)\\n    Traceback (most recent call last):\\n      File \\\"<stdin>\\\", line 1, in <module>\\n    FloatingPointError: overflow encountered in scalar multiply\\n\\n    >>> old_settings = np.seterr(all='print')\\n    >>> np.geterr()\\n    {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}\\n    >>> np.int16(32000) * np.int16(3)\\n    np.int16(30464)\\n    >>> np.seterr(**orig_settings)  # restore original\\n    {'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}\\n\\n    \\\"\\\"\\\"\\n\\n    old = _get_extobj_dict()\\n    # The errstate doesn't include call and bufsize, so pop them:\\n    old.pop(\\\"call\\\", None)\\n    old.pop(\\\"bufsize\\\", None)\\n\\n    extobj = _make_extobj(\\n            all=all, divide=divide, over=over, under=under, invalid=invalid)\\n    _extobj_contextvar.set(extobj)\\n    return old\\n\\n\\n@set_module('numpy')\\ndef geterr():\\n    \\\"\\\"\\\"\\n    Get the current way of handling floating-point errors.\\n\\n    Returns\\n    -------\\n    res : dict\\n        A dictionary with keys \\\"divide\\\", \\\"over\\\", \\\"under\\\", and \\\"invalid\\\",\\n        whose values are from the strings \\\"ignore\\\", \\\"print\\\", \\\"log\\\", \\\"warn\\\",\\n        \\\"raise\\\", and \\\"call\\\". The keys represent possible floating-point\\n        exceptions, and the values define how these exceptions are handled.\\n\\n    See Also\\n    --------\\n    geterrcall, seterr, seterrcall\\n\\n    Notes\\n    -----\\n    For complete documentation of the types of floating-point exceptions and\\n    treatment options, see `seterr`.\\n\\n    **Concurrency note:** see :doc:`/reference/routines.err`\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.geterr()\\n    {'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}\\n    >>> np.arange(3.) / np.arange(3.)  # doctest: +SKIP\\n    array([nan,  1.,  1.])\\n    RuntimeWarning: invalid value encountered in divide\\n\\n    >>> oldsettings = np.seterr(all='warn', invalid='raise')\\n    >>> np.geterr()\\n    {'divide': 'warn', 'over': 'warn', 'under': 'warn', 'invalid': 'raise'}\\n    >>> np.arange(3.) / np.arange(3.)\\n    Traceback (most recent call last):\\n      ...\\n    FloatingPointError: invalid value encountered in divide\\n    >>> oldsettings = np.seterr(**oldsettings)  # restore original\\n\\n    \\\"\\\"\\\"\\n    res = _get_extobj_dict()\\n    # The \\\"geterr\\\" doesn't include call and bufsize,:\\n    res.pop(\\\"call\\\", None)\\n    res.pop(\\\"bufsize\\\", None)\\n    return res\\n\\n\\n@set_module('numpy')\\ndef setbufsize(size):\\n    \\\"\\\"\\\"\\n    Set the size of the buffer used in ufuncs.\\n\\n    .. versionchanged:: 2.0\\n        The scope of setting the buffer is tied to the `numpy.errstate`\\n        context.  Exiting a ``with errstate():`` will also restore the bufsize.\\n\\n    Parameters\\n    ----------\\n    size : int\\n        Size of buffer.\\n\\n    Returns\\n    -------\\n    bufsize : int\\n        Previous size of ufunc buffer in bytes.\\n\\n    Notes\\n    -----\\n    **Concurrency note:** see :doc:`/reference/routines.err`\\n\\n    Examples\\n    --------\\n    When exiting a `numpy.errstate` context manager the bufsize is restored:\\n\\n    >>> import numpy as np\\n    >>> with np.errstate():\\n    ...     np.setbufsize(4096)\\n    ...     print(np.getbufsize())\\n    ...\\n    8192\\n    4096\\n    >>> np.getbufsize()\\n    8192\\n\\n    \\\"\\\"\\\"\\n    if size < 0:\\n        raise ValueError(\\\"buffer size must be non-negative\\\")\\n    old = _get_extobj_dict()[\\\"bufsize\\\"]\\n    extobj = _make_extobj(bufsize=size)\\n    _extobj_contextvar.set(extobj)\\n    return old\\n\\n\\n@set_module('numpy')\\ndef getbufsize():\\n    \\\"\\\"\\\"\\n    Return the size of the buffer used in ufuncs.\\n\\n    Returns\\n    -------\\n    getbufsize : int\\n        Size of ufunc buffer in bytes.\\n\\n    Notes\\n    -----\\n\\n    **Concurrency note:** see :doc:`/reference/routines.err`\\n\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.getbufsize()\\n    8192\\n\\n    \\\"\\\"\\\"\\n    return _get_extobj_dict()[\\\"bufsize\\\"]\\n\\n\\n@set_module('numpy')\\ndef seterrcall(func):\\n    \\\"\\\"\\\"\\n    Set the floating-point error callback function or log object.\\n\\n    There are two ways to capture floating-point error messages.  The first\\n    is to set the error-handler to 'call', using `seterr`.  Then, set\\n    the function to call using this function.\\n\\n    The second is to set the error-handler to 'log', using `seterr`.\\n    Floating-point errors then trigger a call to the 'write' method of\\n    the provided object.\\n\\n    Parameters\\n    ----------\\n    func : callable f(err, flag) or object with write method\\n        Function to call upon floating-point errors ('call'-mode) or\\n        object whose 'write' method is used to log such message ('log'-mode).\\n\\n        The call function takes two arguments. The first is a string describing\\n        the type of error (such as \\\"divide by zero\\\", \\\"overflow\\\", \\\"underflow\\\",\\n        or \\\"invalid value\\\"), and the second is the status flag.  The flag is a\\n        byte, whose four least-significant bits indicate the type of error, one\\n        of \\\"divide\\\", \\\"over\\\", \\\"under\\\", \\\"invalid\\\"::\\n\\n          [0 0 0 0 divide over under invalid]\\n\\n        In other words, ``flags = divide + 2*over + 4*under + 8*invalid``.\\n\\n        If an object is provided, its write method should take one argument,\\n        a string.\\n\\n    Returns\\n    -------\\n    h : callable, log instance or None\\n        The old error handler.\\n\\n    See Also\\n    --------\\n    seterr, geterr, geterrcall\\n\\n    Notes\\n    -----\\n\\n    **Concurrency note:** see :doc:`/reference/routines.err`\\n\\n    Examples\\n    --------\\n    Callback upon error:\\n\\n    >>> def err_handler(type, flag):\\n    ...     print(\\\"Floating point error (%s), with flag %s\\\" % (type, flag))\\n    ...\\n\\n    >>> import numpy as np\\n\\n    >>> orig_handler = np.seterrcall(err_handler)\\n    >>> orig_err = np.seterr(all='call')\\n\\n    >>> np.array([1, 2, 3]) / 0.0\\n    Floating point error (divide by zero), with flag 1\\n    array([inf, inf, inf])\\n\\n    >>> np.seterrcall(orig_handler)\\n    <function err_handler at 0x...>\\n    >>> np.seterr(**orig_err)\\n    {'divide': 'call', 'over': 'call', 'under': 'call', 'invalid': 'call'}\\n\\n    Log error message:\\n\\n    >>> class Log:\\n    ...     def write(self, msg):\\n    ...         print(\\\"LOG: %s\\\" % msg)\\n    ...\\n\\n    >>> log = Log()\\n    >>> saved_handler = np.seterrcall(log)\\n    >>> save_err = np.seterr(all='log')\\n\\n    >>> np.array([1, 2, 3]) / 0.0\\n    LOG: Warning: divide by zero encountered in divide\\n    array([inf, inf, inf])\\n\\n    >>> np.seterrcall(orig_handler)\\n    <numpy.Log object at 0x...>\\n    >>> np.seterr(**orig_err)\\n    {'divide': 'log', 'over': 'log', 'under': 'log', 'invalid': 'log'}\\n\\n    \\\"\\\"\\\"\\n    old = _get_extobj_dict()[\\\"call\\\"]\\n    extobj = _make_extobj(call=func)\\n    _extobj_contextvar.set(extobj)\\n    return old\\n\\n\\n@set_module('numpy')\\ndef geterrcall():\\n    \\\"\\\"\\\"\\n    Return the current callback function used on floating-point errors.\\n\\n    When the error handling for a floating-point error (one of \\\"divide\\\",\\n    \\\"over\\\", \\\"under\\\", or \\\"invalid\\\") is set to 'call' or 'log', the function\\n    that is called or the log instance that is written to is returned by\\n    `geterrcall`. This function or log instance has been set with\\n    `seterrcall`.\\n\\n    Returns\\n    -------\\n    errobj : callable, log instance or None\\n        The current error handler. If no handler was set through `seterrcall`,\\n        ``None`` is returned.\\n\\n    See Also\\n    --------\\n    seterrcall, seterr, geterr\\n\\n    Notes\\n    -----\\n    For complete documentation of the types of floating-point exceptions and\\n    treatment options, see `seterr`.\\n\\n    **Concurrency note:** see :ref:`fp_error_handling`\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> np.geterrcall()  # we did not yet set a handler, returns None\\n\\n    >>> orig_settings = np.seterr(all='call')\\n    >>> def err_handler(type, flag):\\n    ...     print(\\\"Floating point error (%s), with flag %s\\\" % (type, flag))\\n    >>> old_handler = np.seterrcall(err_handler)\\n    >>> np.array([1, 2, 3]) / 0.0\\n    Floating point error (divide by zero), with flag 1\\n    array([inf, inf, inf])\\n\\n    >>> cur_handler = np.geterrcall()\\n    >>> cur_handler is err_handler\\n    True\\n    >>> old_settings = np.seterr(**orig_settings)  # restore original\\n    >>> old_handler = np.seterrcall(None)  # restore original\\n\\n    \\\"\\\"\\\"\\n    return _get_extobj_dict()[\\\"call\\\"]\\n\\n\\nclass _unspecified:\\n    pass\\n\\n\\n_Unspecified = _unspecified()\\n\\n\\n@set_module('numpy')\\nclass errstate:\\n    \\\"\\\"\\\"\\n    errstate(**kwargs)\\n\\n    Context manager for floating-point error handling.\\n\\n    Using an instance of `errstate` as a context manager allows statements in\\n    that context to execute with a known error handling behavior. Upon entering\\n    the context the error handling is set with `seterr` and `seterrcall`, and\\n    upon exiting it is reset to what it was before.\\n\\n    ..  versionchanged:: 1.17.0\\n        `errstate` is also usable as a function decorator, saving\\n        a level of indentation if an entire function is wrapped.\\n\\n    .. versionchanged:: 2.0\\n        `errstate` is now fully thread and asyncio safe, but may not be\\n        entered more than once.\\n        It is not safe to decorate async functions using ``errstate``.\\n\\n    Parameters\\n    ----------\\n    kwargs : {divide, over, under, invalid}\\n        Keyword arguments. The valid keywords are the possible floating-point\\n        exceptions. Each keyword should have a string value that defines the\\n        treatment for the particular error. Possible values are\\n        {'ignore', 'warn', 'raise', 'call', 'print', 'log'}.\\n\\n    See Also\\n    --------\\n    seterr, geterr, seterrcall, geterrcall\\n\\n    Notes\\n    -----\\n    For complete documentation of the types of floating-point exceptions and\\n    treatment options, see `seterr`.\\n\\n    **Concurrency note:** see :ref:`fp_error_handling`\\n\\n    Examples\\n    --------\\n    >>> import numpy as np\\n    >>> olderr = np.seterr(all='ignore')  # Set error handling to known state.\\n\\n    >>> np.arange(3) / 0.\\n    array([nan, inf, inf])\\n    >>> with np.errstate(divide='ignore'):\\n    ...     np.arange(3) / 0.\\n    array([nan, inf, inf])\\n\\n    >>> np.sqrt(-1)\\n    np.float64(nan)\\n    >>> with np.errstate(invalid='raise'):\\n    ...     np.sqrt(-1)\\n    Traceback (most recent call last):\\n      File \\\"<stdin>\\\", line 2, in <module>\\n    FloatingPointError: invalid value encountered in sqrt\\n\\n    Outside the context the error handling behavior has not changed:\\n\\n    >>> np.geterr()\\n    {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}\\n    >>> olderr = np.seterr(**olderr)  # restore original state\\n\\n    \\\"\\\"\\\"\\n    __slots__ = (\\n        \\\"_all\\\",\\n        \\\"_call\\\",\\n        \\\"_divide\\\",\\n        \\\"_invalid\\\",\\n        \\\"_over\\\",\\n        \\\"_token\\\",\\n        \\\"_under\\\",\\n    )\\n\\n    def __init__(self, *, call=_Unspecified,\\n                 all=None, divide=None, over=None, under=None, invalid=None):\\n        self._token = None\\n        self._call = call\\n        self._all = all\\n        self._divide = divide\\n        self._over = over\\n        self._under = under\\n        self._invalid = invalid\\n\\n    def __enter__(self):\\n        # Note that __call__ duplicates much of this logic\\n        if self._token is not None:\\n            raise TypeError(\\\"Cannot enter `np.errstate` twice.\\\")\\n        if self._call is _Unspecified:\\n            extobj = _make_extobj(\\n                    all=self._all, divide=self._divide, over=self._over,\\n                    under=self._under, invalid=self._invalid)\\n        else:\\n            extobj = _make_extobj(\\n                    call=self._call,\\n                    all=self._all, divide=self._divide, over=self._over,\\n                    under=self._under, invalid=self._invalid)\\n\\n        self._token = _extobj_contextvar.set(extobj)\\n\\n    def __exit__(self, *exc_info):\\n        _extobj_contextvar.reset(self._token)\\n\\n    def __call__(self, func):\\n        # We need to customize `__call__` compared to `ContextDecorator`\\n        # because we must store the token per-thread so cannot store it on\\n        # the instance (we could create a new instance for this).\\n        # This duplicates the code from `__enter__`.\\n        @functools.wraps(func)\\n        def inner(*args, **kwargs):\\n            if self._call is _Unspecified:\\n                extobj = _make_extobj(\\n                        all=self._all, divide=self._divide, over=self._over,\\n                        under=self._under, invalid=self._invalid)\\n            else:\\n                extobj = _make_extobj(\\n                        call=self._call,\\n                        all=self._all, divide=self._divide, over=self._over,\\n                        under=self._under, invalid=self._invalid)\\n\\n            _token = _extobj_contextvar.set(extobj)\\n            try:\\n                # Call the original, decorated, function:\\n                return func(*args, **kwargs)\\n            finally:\\n                _extobj_contextvar.reset(_token)\\n\\n        return inner\\n\", 515]}, \"functions\": {\"_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:36)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 36], \"calculate_hypothesis_value (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:64)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 64], \"output (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:52)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 52], \"_error (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:25)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 25], \"summation_of_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:77)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 77], \"get_cost_derivative (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:95)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 95], \"_allclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2273)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\", 2273], \"_isclose_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2367)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\", 2367], \"isclose.<locals>.<genexpr> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2463)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\", 2463], \"result_type (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py:710)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/multiarray.py\", 710], \"_all_dispatcher (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2543)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py\", 2543], \"_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py:64)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_methods.py\", 64], \"_wrapreduction_any_all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:86)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py\", 86], \"all (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py:2548)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/fromnumeric.py\", 2548], \"errstate.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:462)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py\", 462], \"errstate.__enter__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:472)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py\", 472], \"errstate.__exit__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py:488)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/_ufunc_config.py\", 488], \"isclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2371)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\", 2371], \"allclose (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py:2277)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/numpy/_core/numeric.py\", 2277], \"run_gradient_descent (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:106)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 106], \"test_gradient_descent (/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py:134)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/gradient_descent.py\", 134]}}}"
  },
  {
    "path": "example/json/logging_integration.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222316, \"tid\": 222316, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222316, \"tid\": 222316, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630308.779, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 7\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630334.182, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 6\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630351.914, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 5\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630365.237, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 4\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630377.045, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 3\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630387.536, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630403.683, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630388.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.28, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630414.767, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630404.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.559, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630377.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.778, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630424.714, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630415.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.611, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630366.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.338, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630434.656, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630444.021, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630435.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.237, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630454.112, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630444.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.935, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630425.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.174, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630353.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.676, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630463.556, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 3\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630473.097, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630482.627, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630473.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.503, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630491.84, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630483.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.084, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630464.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.28, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630500.963, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630492.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.908, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630454.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.562, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630336.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 165.548, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630510.401, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 4\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630519.346, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 3\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630528.512, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630537.779, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630529.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.173, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630547.184, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630538.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.324, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630519.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.855, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630556.764, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630547.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.344, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630511.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.277, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630566.303, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630575.524, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630566.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.079, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630584.51, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630576.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.531, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630557.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.362, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630501.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 85.15, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630311.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 275.074, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630596.027, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 5\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630605.2, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 4\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630614.719, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 3\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630623.961, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630633.05, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630624.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.093, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630641.837, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630633.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.625, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630615.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.076, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630650.762, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630642.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.806, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630605.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.512, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630659.726, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630668.604, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630660.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.72, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630677.298, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630669.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.561, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630651.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.393, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630596.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 81.15, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630686.69, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 3\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630697.209, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - INFO:root:Recursive, working on 2\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630707.76, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630697.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.439, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630716.799, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630708.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.849, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630687.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.155, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630727.26, \"ph\": \"i\", \"cat\": \"instant\", \"name\": \"logging - WARNING:root:Base case, return 1\", \"s\": \"p\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630717.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.3, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630678.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.849, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630587.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 140.881, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995630254.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 473.473, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995628509.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2218.329, \"name\": \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:1)\"}, {\"pid\": 222316, \"tid\": 222316, \"ts\": 81995628506.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2221.409, \"name\": \"builtins.exec\"}], \"viztracer_metadata\": {\"overflow\": false, \"version\": \"1.1.1\"}, \"file_info\": {\"files\": {\"/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py\": [\"import logging\\n\\nfrom viztracer import get_tracer\\nfrom viztracer.vizlogging import VizLoggingHandler\\n\\n\\ndef fib(n):\\n    if n < 2:\\n        logging.warning(\\\"Base case, return 1\\\")\\n        return 1\\n    logging.info(f\\\"Recursive, working on {n}\\\")\\n    return fib(n - 1) + fib(n - 2)\\n\\n\\nhandler = VizLoggingHandler()\\nhandler.setTracer(get_tracer())\\nlogging.basicConfig(handlers=[handler], level=logging.INFO)\\n\\nfib(7)\\n\", 19]}, \"functions\": {\"fib (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:7)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py\", 7], \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py:1)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/logging_integration.py\", 1]}}}"
  },
  {
    "path": "example/json/mcts_game.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222292, \"tid\": 222292, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222292, \"tid\": 222292, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038973.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038974.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038976.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038977.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038977.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038978.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038976.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.807, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038979.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_thread.get_ident\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038980.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038983.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038982.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.942, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038983.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038981.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.104, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038984.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_List.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038980.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.306, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038985.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038986.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038986.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_List.remove\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038986.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038987.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038987.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038979.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.677, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038975.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.312, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038988.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038990.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038992.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038992.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038994.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"builtins.locals\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038994.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"str.format\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038996.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038996.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038993.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.036, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038997.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038997.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038997.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038997.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038998.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038998.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038999.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038999.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038999.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038999.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039001.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039001.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039000.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.163, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039001.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039001.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039003.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039003.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039006.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039006.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039008.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039009.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.601, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039009.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.797, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039012.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039013.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039014.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039014.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039013.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.213, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039015.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039016.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039016.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039016.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039016.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039016.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039017.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039017.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039017.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039017.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039017.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039019.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039019.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039018.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039019.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039008.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.742, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039019.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039020.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039020.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039020.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.981, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039020.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039021.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039022.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039022.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039022.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039022.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039022.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039023.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039023.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039024.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039023.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.438, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039024.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039024.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039025.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039026.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039020.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.732, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039027.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039027.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039027.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039027.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039028.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039028.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039028.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039029.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039029.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039029.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039029.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039030.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039031.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039032.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039032.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039032.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039032.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039033.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039033.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039034.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039034.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039033.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039034.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039028.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.555, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039034.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039035.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039035.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039035.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.974, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039035.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.023, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039036.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039037.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039037.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039037.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039037.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039038.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039039.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039040.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039035.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.697, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.173, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.242, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039043.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039043.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039043.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039043.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.454, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039045.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039046.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039047.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039047.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039047.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039047.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039047.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039049.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.689, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039048.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.807, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039048.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.143, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039048.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.673, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039052.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039053.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"posix.fspath\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039054.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"str.startswith\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039054.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039054.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039055.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039053.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.008, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039051.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.184, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039041.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.478, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039005.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.479, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039004.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.535, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039057.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039057.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038991.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 66.065, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039059.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039059.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039060.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039060.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039062.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039063.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039063.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039064.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039063.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039064.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039065.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039066.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039066.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039067.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"str.endswith\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039069.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"posix.fspath\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039070.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"str.rfind\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039070.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039071.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039070.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.308, \"name\": \"builtins.max\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039069.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.229, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039072.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039072.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039074.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039074.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039074.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039074.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039074.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.879, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039069.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.718, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039067.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.903, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039066.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.64, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039075.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039062.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.835, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039059.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.791, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039079.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039078.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039079.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"posix.fspath\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039080.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"str.rfind\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039080.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039080.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039080.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"builtins.max\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039079.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.949, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039080.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rpartition\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039081.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039081.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"str.join\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039081.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039079.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.681, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.107, \"name\": \"posix.stat\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.187, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039082.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.547, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039085.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039085.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.079, \"name\": \"_io.open_code\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039095.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.847, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039103.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.656, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039085.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.945, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039108.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039108.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039109.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"type.from_bytes\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039108.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039107.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.789, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039110.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039111.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"type.from_bytes\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039110.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039111.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039111.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"type.from_bytes\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039111.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039110.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.275, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039112.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039113.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.46, \"name\": \"marshal.loads\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039142.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039143.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039143.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039113.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.495, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039078.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 65.436, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039149.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"treeNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039149.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.418, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039157.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039157.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.423, \"name\": \"mcts (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:29)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039156.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.049, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039146.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.972, \"name\": \"<module> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:1)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039144.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.644, \"name\": \"builtins.exec\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039144.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.803, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039076.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 91.265, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039167.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"dict.pop\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039168.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039059.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 109.418, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038990.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 178.351, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039170.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_thread.get_ident\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039170.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039170.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"list.pop\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039171.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039171.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039171.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039169.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.922, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039169.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.761, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039172.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039172.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039173.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_imp.release_lock\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039172.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038973.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 200.273, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039174.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.425, \"name\": \"NaughtsAndCrossesState (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:10)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039174.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.877, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039182.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"Action (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039182.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.994, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039189.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"NaughtsAndCrossesState.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:11)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039191.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"mcts.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:30)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039195.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039196.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039196.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039196.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039196.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039197.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039199.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039199.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039199.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039199.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039199.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039200.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039200.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039201.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039201.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039201.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039202.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039202.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039202.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039202.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039203.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039203.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039204.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039195.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.895, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039193.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.243, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039206.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039207.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039210.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039210.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039211.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039212.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039213.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039213.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039213.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039213.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039214.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039214.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039214.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039214.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039215.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039215.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039215.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039216.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039216.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039217.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039217.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039217.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039217.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039217.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039209.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.114, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039218.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039219.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039219.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039222.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.219, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039223.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039224.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039225.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039225.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039225.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039226.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039230.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"mappingproxy.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039230.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039229.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.695, \"name\": \"_slotnames (/usr/lib/python3.12/copyreg.py:107)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039226.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.18, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039232.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039235.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039237.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039237.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039237.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039235.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.289, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039235.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.609, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039238.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039239.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039239.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039240.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039241.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039241.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039242.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039243.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039243.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039244.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039244.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039244.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039245.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039246.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039246.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039246.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039247.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039248.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039249.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039249.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039249.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039248.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.285, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039250.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039250.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039250.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039250.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039250.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039251.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039252.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039246.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.2, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039253.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039254.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039253.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.779, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039246.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039255.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039255.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039255.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039255.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039256.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039256.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039256.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039257.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039259.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039259.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039259.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039258.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039259.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039256.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.374, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039261.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039262.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039261.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.008, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039255.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.234, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039262.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039262.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039263.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039263.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039263.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039264.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039265.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039266.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039263.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.299, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039267.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039267.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039267.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039262.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.07, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039267.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039245.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.469, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039268.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039268.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039268.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039244.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.529, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039268.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039269.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039269.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039269.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039268.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039269.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039270.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039270.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039271.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039269.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039271.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039272.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039272.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039272.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039271.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039242.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.076, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039273.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039273.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039273.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039241.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.363, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039273.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039274.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039274.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039234.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.591, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039275.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039276.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039275.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039222.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.147, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039220.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.91, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039280.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039281.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039281.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039282.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039283.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039283.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039278.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.907, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039277.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.591, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039284.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039284.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.263, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039286.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039286.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039209.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.678, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039208.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.779, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039289.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039290.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039291.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039291.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039291.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039288.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.622, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039292.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039292.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039293.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039293.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039293.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039294.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039295.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039295.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039295.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039295.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039295.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039296.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039296.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039297.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039297.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039292.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.376, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039298.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039299.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039300.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039300.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039301.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039301.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039299.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.848, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039298.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.518, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039302.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039303.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039304.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039304.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039304.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039305.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039305.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039305.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.827, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039306.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039307.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039308.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039308.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039308.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039307.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.045, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039307.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.227, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039309.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039309.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039309.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039310.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039310.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039311.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039311.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039311.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039312.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039312.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039312.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039313.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039313.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039313.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039314.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039314.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039314.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039315.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039315.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039315.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039316.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039315.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039316.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039316.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039318.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039318.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039318.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039317.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.919, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039318.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039314.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.491, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039319.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039319.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039319.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039313.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039320.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039321.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039321.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039321.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039321.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039322.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039322.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039322.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039323.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039324.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039321.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.259, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039325.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039325.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039325.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039320.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039326.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039326.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039327.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039327.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039327.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039328.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039329.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039327.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.988, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039331.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039330.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039326.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.502, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039331.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039313.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.303, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039331.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039331.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039312.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.642, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039332.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039333.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039333.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039333.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039333.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039333.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039334.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039335.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039335.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039335.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039334.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039311.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.445, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039336.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039336.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039336.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039310.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.105, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039336.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039337.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039337.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039307.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.657, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039338.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039338.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039338.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039302.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.041, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039302.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.983, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039339.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039340.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039341.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039342.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039343.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039343.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039339.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.69, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039343.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039344.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039344.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039344.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039344.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039346.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039346.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039346.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039346.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039346.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039347.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039343.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.403, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039349.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039349.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039348.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039350.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039350.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039350.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039351.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039351.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039351.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039351.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039351.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039352.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039353.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039353.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039353.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039354.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039353.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039353.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.103, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039354.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039354.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039354.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039354.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039355.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039355.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039356.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039356.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039356.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039357.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039357.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039358.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039358.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039359.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039359.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039359.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039360.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039360.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039360.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039361.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039363.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039363.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039362.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039363.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039360.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.344, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039363.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039364.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039363.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.318, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039359.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.624, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039366.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039366.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039366.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039366.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039368.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039368.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039367.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039368.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039368.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039369.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039369.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039370.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039368.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039370.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.286, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039370.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039370.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039370.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039365.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039371.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039371.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039371.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039371.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039372.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039372.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039372.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039373.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039374.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039375.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039372.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.152, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039375.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039375.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039375.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039371.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039375.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039358.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.296, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039376.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039376.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039376.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039357.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039376.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039377.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039378.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039378.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039376.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039378.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039379.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039379.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039379.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039378.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039379.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039380.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039380.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039380.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039379.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039356.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.342, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039380.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039381.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039380.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039355.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039381.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039381.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039381.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039352.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.142, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039382.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039382.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039382.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039350.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039349.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.127, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039384.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039385.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039385.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039385.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039385.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039385.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039386.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039386.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039386.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039387.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039387.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039387.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039383.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.376, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039388.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039388.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039388.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039388.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039389.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039390.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039390.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039390.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039390.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039390.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039388.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.974, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039391.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039392.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039392.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039393.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039394.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039394.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039395.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039395.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039395.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039394.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039394.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.171, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039395.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039396.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039395.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039396.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039397.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039398.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039398.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039398.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039399.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039399.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039399.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039399.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039400.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039400.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039402.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039403.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039401.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.132, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039405.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039404.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039400.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.036, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039405.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039405.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039406.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039406.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039406.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039407.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039407.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039407.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039407.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039407.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039408.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039409.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039409.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039409.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039409.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039409.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039410.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039406.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.373, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039405.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.822, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039412.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039412.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039412.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039413.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039414.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039412.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.116, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039416.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039415.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039411.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.523, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039416.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039400.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.426, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039417.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039418.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039417.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039399.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.819, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039418.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039418.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039418.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039418.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039419.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039420.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039420.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039420.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039420.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039420.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039398.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.377, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039397.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.857, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039421.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039394.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.775, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039422.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039422.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039422.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039392.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.524, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039392.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.867, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039424.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039426.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039427.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039428.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039423.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.981, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039428.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039428.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039429.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039430.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039428.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.575, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039432.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039433.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039433.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039433.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039434.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039434.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039434.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039434.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039434.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039433.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.005, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039435.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039436.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039436.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039436.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039438.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039438.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039440.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039440.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039440.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039441.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039442.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039440.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.246, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039444.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039443.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.098, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.209, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039446.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039446.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039446.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039448.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039450.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039450.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039449.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039450.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.417, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039450.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039450.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039445.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.895, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039452.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039452.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039452.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039452.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039453.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039454.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039455.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.156, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039455.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039456.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039455.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039451.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.44, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039456.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039439.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.613, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039457.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039457.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039457.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039438.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.053, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039457.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039458.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039458.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039458.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039457.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039458.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039458.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039460.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039460.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039459.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.475, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039460.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039460.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039460.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039437.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.963, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039461.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039461.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039461.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039433.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.74, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039461.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039462.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039461.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.329, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039431.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.637, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039462.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039462.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039462.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039463.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039463.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039463.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039463.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039463.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039464.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039464.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039464.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039465.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039466.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039462.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.192, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039468.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039468.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039468.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039468.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039468.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039467.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.212, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039469.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039470.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039470.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039471.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039472.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039472.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039472.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039472.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.895, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039474.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039475.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039475.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039475.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039476.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039476.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039476.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039479.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039480.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039478.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.004, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039482.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039481.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.982, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039482.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039482.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039484.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039484.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039484.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039485.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039485.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039485.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039485.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039485.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039486.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039484.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.323, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039488.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039488.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039487.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039482.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.573, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039488.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039488.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039490.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039492.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039492.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039491.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.555, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039493.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039489.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.907, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039493.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039493.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039493.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039488.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.392, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039477.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.942, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039476.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.204, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039495.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039495.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039495.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039494.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039495.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039496.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039496.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039496.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039495.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039496.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039497.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039497.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039497.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039496.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039475.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.586, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039497.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039497.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039475.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.941, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039472.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.438, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039499.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039498.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039470.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.028, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039470.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.275, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039499.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039499.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039500.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039500.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039501.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039502.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039502.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039502.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039502.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039502.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039503.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039499.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.22, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039504.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039504.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039504.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039504.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039505.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039505.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039505.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039505.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039504.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.052, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039506.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039508.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039508.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039508.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039508.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039509.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039510.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039510.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039510.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039509.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039509.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.9, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039512.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039512.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039512.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039513.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039513.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039513.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039513.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039514.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039514.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039514.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039516.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039517.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039515.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.956, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039518.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039518.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039518.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039514.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039519.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039519.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039520.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039521.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039521.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039521.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039521.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039522.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039523.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039521.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.358, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039525.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039524.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.628, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039519.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039525.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039525.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039525.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039526.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039526.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039526.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039526.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039527.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039530.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039528.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039530.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039526.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.108, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039530.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039530.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039530.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039525.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.5, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039514.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.075, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039513.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.465, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039532.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039532.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039532.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039531.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039532.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039532.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039534.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039534.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039533.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039512.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.726, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039534.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039534.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039534.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039511.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.14, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039535.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039535.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039535.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039508.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.539, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039535.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039536.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039535.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.152, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039507.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.48, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039536.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039536.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039537.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039537.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039538.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039538.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039538.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039538.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039539.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039540.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039536.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.335, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039541.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039541.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039541.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039541.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039541.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.512, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039542.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039544.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039545.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039545.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039546.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039545.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039545.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.903, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039547.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039548.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039548.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039548.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039549.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039549.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039549.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039551.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039551.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039551.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039552.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039553.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039551.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.112, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039555.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039554.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.198, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.128, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039556.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039556.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039557.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039557.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039557.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039558.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039558.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039558.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039559.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039561.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039560.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039561.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039557.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.466, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039561.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039561.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039561.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039556.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.873, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039563.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039563.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039563.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039563.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039564.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039565.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039565.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039565.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039568.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039565.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.548, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039568.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.896, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039568.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039569.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039568.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039562.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.275, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039569.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039550.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.185, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039569.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039570.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039569.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039549.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.563, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039570.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039570.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039570.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039571.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039572.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039549.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.934, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039548.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.286, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039573.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039545.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.678, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039574.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039574.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039574.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.031, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039543.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.334, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039575.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039575.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039575.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039575.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039576.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039576.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039577.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039578.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039579.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039575.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.132, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039579.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039579.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039579.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039579.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.194, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039580.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.912, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039582.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039583.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039584.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039584.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039584.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039584.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039585.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039586.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039586.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039589.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039589.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039589.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039589.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039590.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039591.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039589.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039593.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039592.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.085, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039594.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039594.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039595.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039595.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039595.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039596.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039596.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039596.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039596.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039596.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039597.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039595.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.149, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039599.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039598.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.624, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039594.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039599.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039599.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039600.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039600.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039600.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039602.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039602.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039602.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039601.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039602.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039603.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039603.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039600.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.249, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039605.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039604.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039599.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.628, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039605.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039588.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.165, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039605.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039605.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.467, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039606.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039607.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039587.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.648, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039609.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039608.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039586.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.029, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039609.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039609.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039609.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039584.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.477, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039610.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039610.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039610.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.922, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039581.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.201, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039611.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039612.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039612.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039612.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039612.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039612.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039613.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039613.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039611.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.248, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039615.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039616.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039616.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039616.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039614.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.078, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039287.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 328.965, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039617.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039207.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 410.856, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039618.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039619.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039620.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039620.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039620.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039621.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039622.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039623.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039623.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039623.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039623.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039623.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039624.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039619.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.395, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039624.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039624.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039624.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.233, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039626.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039627.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039627.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039627.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039628.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039628.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039629.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039630.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039630.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039631.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039631.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039631.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039630.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.051, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039630.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.155, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039631.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039632.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039632.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039632.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039632.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039633.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039633.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039633.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039635.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039635.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039638.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039638.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039639.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039637.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039639.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039639.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039639.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039636.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.416, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039641.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039640.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.273, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039635.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039642.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039642.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039642.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039642.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039643.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039643.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039643.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039644.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039646.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039645.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039646.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039643.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.121, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039646.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039646.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039646.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.624, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039642.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.631, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039649.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039649.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039649.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039649.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039650.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039651.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.103, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039647.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.477, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.807, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039653.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039652.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039634.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.191, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039653.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039653.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039654.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039654.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039653.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039654.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039654.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039654.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039655.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039633.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.654, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039656.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039657.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039656.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039632.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.086, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039657.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039658.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039658.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039630.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.042, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039658.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039659.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039658.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039628.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.258, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039628.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.652, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039661.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039662.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039662.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039662.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039662.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039662.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039663.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039663.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039663.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039663.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039663.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039660.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.888, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039659.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.246, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039664.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039664.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039664.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039664.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039619.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.414, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039619.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.929, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039665.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039665.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039665.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039666.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039666.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039667.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039667.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039667.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039667.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039667.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039668.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039669.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039665.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.128, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039670.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039670.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039670.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039670.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039671.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039672.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039670.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.586, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039674.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039674.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039673.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.586, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039675.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039676.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039676.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039676.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039676.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039676.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039677.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039677.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039677.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039678.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039678.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039678.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039678.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039678.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039677.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.081, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039679.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039679.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039679.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039679.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039681.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039681.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039681.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039682.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039682.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039682.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039684.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039686.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039687.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039687.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039685.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039687.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039683.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.245, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039687.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039688.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039687.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.297, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039682.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.382, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039689.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039689.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039689.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039689.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039690.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039690.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039690.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039691.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039692.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039690.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.091, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039689.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.516, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039694.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039694.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039694.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039695.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039695.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039695.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039695.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039695.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039696.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039697.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039694.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.258, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039699.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039699.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039698.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039693.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039699.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039682.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.551, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039699.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039700.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039699.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039681.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.882, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039700.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039700.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039700.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039701.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039702.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039702.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039702.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039702.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039702.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.113, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039703.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039703.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039703.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039680.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.605, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039703.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039703.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039704.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039677.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.398, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039705.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039705.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039705.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039675.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.167, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039675.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.475, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039707.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039708.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039709.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039709.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039706.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.139, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039709.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039709.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039710.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039710.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039710.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039710.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039710.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039711.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039712.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039712.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039709.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.861, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039715.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039714.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039715.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039716.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039717.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039717.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039717.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.851, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039717.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.959, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039718.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039719.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039719.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039722.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039722.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039722.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039723.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039723.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039723.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039723.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039723.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039724.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039724.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039724.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039725.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039722.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.154, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039727.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039726.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.152, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.122, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039729.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039729.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039729.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039729.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039730.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039731.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.16, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039732.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039732.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039732.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039728.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.53, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039732.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039733.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039734.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039734.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039734.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039735.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039736.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039734.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.122, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039738.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039737.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039733.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.583, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039738.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039721.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.093, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039738.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039739.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039738.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.459, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039739.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039739.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039739.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039739.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039740.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039741.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039741.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039741.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039742.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039741.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039720.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.718, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039743.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039743.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039742.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.612, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039719.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.182, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039743.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039743.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039744.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039717.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.911, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039744.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039744.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039744.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039715.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.401, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039715.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.672, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039746.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039747.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039748.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039748.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039745.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.073, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039748.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039748.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039749.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039749.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039749.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039749.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039749.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039750.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039751.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039748.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.816, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039752.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039753.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039753.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039753.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039755.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.941, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039756.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039756.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039756.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039756.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039757.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039757.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039757.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039757.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039758.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039758.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039758.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039758.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039759.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039759.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039759.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039760.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039761.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039761.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039761.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039762.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039763.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039761.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.207, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039764.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039759.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.014, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039765.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039765.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039767.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039769.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039769.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039768.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039770.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039766.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.081, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039770.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039770.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039770.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.621, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039765.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.468, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039772.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039772.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039772.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039772.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039773.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039774.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.063, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039771.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.462, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039759.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.824, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039776.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039775.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039758.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.129, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039776.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039777.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039777.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039777.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039776.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039777.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039778.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039778.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039778.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039777.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.62, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039779.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039779.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039779.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039779.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039779.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039757.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.333, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039756.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039780.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039754.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.066, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039781.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039781.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039781.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039753.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.58, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039753.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.833, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039783.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039784.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039782.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.966, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039786.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039786.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039786.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039786.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039787.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039786.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.357, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039789.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039789.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039788.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039789.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039790.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039792.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.935, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039792.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039792.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039792.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039792.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039794.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039794.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039795.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039795.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039796.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039796.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039798.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039799.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039797.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.005, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039800.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.979, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039796.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039801.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039801.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039802.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039802.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039802.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039802.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039804.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039804.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039804.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039803.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039804.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039805.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039805.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039802.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.168, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039806.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039801.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039808.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039808.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039808.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039809.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039810.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039808.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.09, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039807.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.394, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039811.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039796.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.899, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039812.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039812.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039812.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039794.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.085, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039812.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039813.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039814.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039814.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039812.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039814.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039814.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039815.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039815.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039814.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039815.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039815.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039816.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039816.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039815.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.459, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039816.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039816.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039816.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039793.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039817.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039817.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039817.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039791.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.289, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039817.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039817.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039789.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039789.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.913, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039819.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039820.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039821.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039821.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039822.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039822.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039818.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.943, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039822.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039822.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039823.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039823.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039823.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039823.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039823.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039824.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039824.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039824.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039824.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039824.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039822.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.245, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039826.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039827.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039827.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039827.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039827.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039828.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039829.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039829.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039830.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039830.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039831.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039831.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039832.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039832.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039832.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039834.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039835.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.902, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039837.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039836.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.051, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039833.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039837.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039838.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039838.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039838.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039838.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039839.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039840.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039840.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039840.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039841.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039840.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039841.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039841.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039841.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039838.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.106, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039843.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039842.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039837.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.496, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039843.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039843.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039845.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039846.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039844.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.045, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039843.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.322, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039847.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039832.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.52, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039848.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039848.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039848.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039831.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.482, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039850.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039850.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039850.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039851.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039850.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039851.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039851.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039851.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039851.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039852.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039830.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.878, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039829.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.2, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039853.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039827.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.608, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039854.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039854.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039854.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.075, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039825.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.325, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039856.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039857.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039857.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039858.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039858.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039858.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039858.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039858.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039855.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.237, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039860.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039860.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039860.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039860.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039860.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039859.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.878, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039862.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039861.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039862.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039862.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039863.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039864.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039864.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039864.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.878, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039864.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.974, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039865.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039866.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039866.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039867.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039868.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039868.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039868.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039870.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039870.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039870.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039871.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039871.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039871.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039871.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039872.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039873.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039870.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.359, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039874.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039874.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039874.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.146, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.435, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039875.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039875.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039875.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039876.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039876.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039876.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039876.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039877.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.87, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039879.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039876.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.287, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039880.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039875.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039882.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039882.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039882.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039883.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039884.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039882.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.005, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039881.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.319, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039869.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.409, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039887.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039885.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.375, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039868.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.622, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039887.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039887.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039887.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039888.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039889.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039867.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.04, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039890.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039890.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039890.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039866.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.432, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039890.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039890.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039891.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039864.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.008, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039891.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039891.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039891.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039862.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.614, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039862.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.865, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039893.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039892.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.584, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039894.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039895.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039895.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039895.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039895.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039895.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039896.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039897.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039894.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.149, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039665.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 231.787, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039897.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039619.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 278.974, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039898.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039899.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039899.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039899.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039900.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039900.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039900.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039900.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039900.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039901.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039901.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039901.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039901.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039901.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039902.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039902.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039902.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039902.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039902.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039903.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039903.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039903.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039903.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039899.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.796, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039904.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039904.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039904.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039904.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039905.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039905.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039905.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039906.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039906.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039907.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039906.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039907.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039908.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039909.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039909.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039909.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039909.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.982, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039910.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039911.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039911.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039913.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039913.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039913.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039915.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039916.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039916.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039916.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039916.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039916.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039917.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039918.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.362, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039919.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039919.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039919.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.102, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039914.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.31, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039920.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039920.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039920.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039921.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039921.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039921.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039921.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039922.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039924.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039924.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039923.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039924.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039921.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.15, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039924.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039925.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039924.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039920.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039925.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039925.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039925.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039926.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039926.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039926.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039927.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039926.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039928.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039929.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039926.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.077, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039925.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.467, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039930.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039913.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.511, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039931.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039931.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039931.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039931.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039932.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039932.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039932.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039931.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039932.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039932.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039934.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039934.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039933.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039912.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.175, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039934.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039934.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039934.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039911.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039936.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039936.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039936.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039909.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.296, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039936.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039937.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039936.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039907.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.092, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039907.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.429, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039939.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039940.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039941.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039941.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039941.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039941.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039938.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.837, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039937.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.104, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039942.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039942.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039942.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039942.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039899.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.755, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039898.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.221, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039944.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039945.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039946.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039946.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039946.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039946.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039946.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.357, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039948.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039948.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039948.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039948.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039948.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039949.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039949.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039949.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039949.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039949.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039950.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039947.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.531, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039951.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039952.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039953.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039954.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039955.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039955.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039955.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039955.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.024, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039956.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039957.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039957.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039958.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039958.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039958.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039958.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039961.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039961.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039961.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039961.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039962.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039963.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039963.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039963.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039963.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039964.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039963.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039965.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.177, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039965.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039965.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039965.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.144, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039960.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.231, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039966.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039966.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039968.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039969.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039967.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.46, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039971.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039970.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039966.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.963, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039971.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039971.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039972.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039972.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039972.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039973.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039973.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039973.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039973.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039973.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039974.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039975.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039975.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039975.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039975.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039975.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039976.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039977.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039972.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.525, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039977.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039977.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039977.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039971.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.187, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039977.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.355, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039978.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039978.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039978.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039959.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039978.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039979.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039979.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039979.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039978.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039979.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039980.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039980.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039980.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039979.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039980.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039981.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039981.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039981.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039980.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039958.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.344, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039981.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039982.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039981.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039957.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.925, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039982.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039982.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039982.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039955.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.694, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039984.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039984.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039984.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039952.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.556, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039952.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.857, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039986.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039987.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039988.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039988.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039988.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039988.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039985.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.433, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039989.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039989.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039989.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039989.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039990.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039990.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039990.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039990.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039990.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039991.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039992.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040008.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039988.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.479, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040009.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040010.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040010.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040010.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040010.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040009.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.131, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040011.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.466, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040013.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040013.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040013.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040013.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040014.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040014.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040014.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040014.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040016.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040016.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040016.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040017.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040016.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.156, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040015.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.382, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040017.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040017.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040017.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040018.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040018.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040019.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040019.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040019.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040020.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040020.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040020.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040020.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040021.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040021.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040022.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040022.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040022.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040023.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040023.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040023.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040023.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040023.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040024.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040025.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040025.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.849, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040026.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040022.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.944, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040028.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040027.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.468, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040021.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.622, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040029.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040029.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040031.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040032.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040030.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.279, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040034.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040033.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040029.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.834, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040034.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040034.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040035.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040036.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040036.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040036.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040036.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040037.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040039.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040038.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040039.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040036.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.018, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040039.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040039.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040039.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040034.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.427, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040021.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.071, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040020.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.5, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040041.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040041.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040041.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040040.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040041.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040042.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040042.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040042.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040041.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040042.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040043.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040043.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040043.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040042.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.643, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040019.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.949, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040044.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040045.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040044.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040018.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.406, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040045.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040045.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040045.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040015.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.505, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040046.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040046.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040046.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040011.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.312, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040011.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.863, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040047.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040047.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040047.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040048.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040048.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040048.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040049.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040050.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040051.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040051.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040051.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040051.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040047.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.425, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040052.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040052.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040053.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040053.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040053.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040053.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040053.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040054.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040055.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040055.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040055.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040055.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040056.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040056.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040056.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040056.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040052.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.718, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040056.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040058.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040058.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040058.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040058.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040058.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040059.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040059.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040059.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040059.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040060.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040060.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.0, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040060.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.155, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040061.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040062.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040062.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040063.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040063.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040063.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040065.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040065.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040065.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040066.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040067.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040067.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040068.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040070.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040070.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040069.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040070.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040066.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.287, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040070.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040071.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040070.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.142, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040065.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.386, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040071.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040071.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040072.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040072.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040072.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040073.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040075.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040075.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040075.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040074.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040075.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040072.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.971, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040076.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040077.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040076.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.633, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040071.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.436, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040077.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040077.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040077.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040078.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040078.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040078.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040078.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040079.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.832, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040080.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040078.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.338, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040082.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040081.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040077.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.877, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040082.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.679, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040082.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040082.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040064.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.098, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040083.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040084.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040084.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040084.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040085.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040084.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040085.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040086.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040086.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040086.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040085.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040063.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.63, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040086.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040087.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040086.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040062.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.039, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040087.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040087.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040087.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040060.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.064, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040088.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040088.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040088.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.871, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040057.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.27, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040090.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040090.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040090.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040090.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040090.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040091.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040092.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040089.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.489, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040093.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040094.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040094.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040094.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040095.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040093.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.735, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040096.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.625, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040098.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040098.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040098.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040098.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040098.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040099.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040099.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040099.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.857, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040100.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.958, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040101.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040101.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040101.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040101.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040103.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040103.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040103.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040104.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040105.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040105.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040106.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040106.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040106.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040107.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040108.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040106.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.114, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040110.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040109.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.107, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040105.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.166, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040110.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040112.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040112.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040112.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040112.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040112.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040113.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040114.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040114.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.983, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040116.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040115.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040111.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.4, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040116.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040116.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040118.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040119.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040117.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.999, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040120.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040116.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040105.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.003, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040103.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.359, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040122.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040123.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040123.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040121.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040123.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040124.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040124.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040124.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040123.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040124.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040125.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040125.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040125.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040124.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.766, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040125.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040125.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040102.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.143, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040099.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.904, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040127.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040126.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.633, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040097.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.944, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040127.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040128.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040129.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040130.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040130.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040130.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040131.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040131.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040131.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040131.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040127.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.108, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040132.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040132.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040132.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040132.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040133.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040132.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.202, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040134.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040137.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040137.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040137.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040138.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040137.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040137.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040138.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040138.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040138.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040138.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040141.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040141.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040143.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040143.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040143.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040144.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040145.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040143.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.119, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040147.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040146.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.996, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.067, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040147.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040149.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040149.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040149.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040149.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040151.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040150.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.634, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040151.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040152.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.185, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040148.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.587, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040154.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040154.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040154.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040155.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040156.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040154.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.101, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040158.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040157.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040153.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.523, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040158.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040142.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.149, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040158.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040158.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040158.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040141.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.012, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040160.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040161.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040161.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040161.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040160.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040161.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040161.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040163.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040163.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040162.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.451, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040163.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040163.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040163.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040139.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040164.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040164.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040164.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040136.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.454, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040164.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040164.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.028, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040135.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.285, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.476, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040204.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040205.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040206.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040206.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040206.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040207.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040207.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040207.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040207.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040208.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040208.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040208.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040208.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040210.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040210.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040210.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040210.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040210.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040211.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040165.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.034, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040212.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040212.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040213.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040213.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040214.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040214.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040214.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040214.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040212.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.207, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040216.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040216.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040215.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040216.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040218.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040218.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040218.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040219.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040219.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040219.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040219.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040220.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040221.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040222.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040222.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040222.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040221.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.563, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040221.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.776, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040222.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040223.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040223.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040223.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040224.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040225.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040225.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040226.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040227.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040227.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040227.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040228.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040228.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040228.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040229.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040229.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040229.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040230.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040230.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040230.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040231.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040230.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.049, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040231.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040231.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040231.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.881, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040232.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040229.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040234.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040233.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040228.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.631, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040235.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040235.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040236.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040236.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040236.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040237.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040238.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040238.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040238.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040240.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040238.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040240.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040240.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040241.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040241.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040241.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040240.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040241.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040236.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.283, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040242.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040242.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040241.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040235.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.015, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040242.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040242.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040243.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040243.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040243.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040244.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040245.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040243.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.98, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040247.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040246.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040242.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.425, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040247.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040228.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.302, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040247.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040248.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040247.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.453, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040227.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040249.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040249.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040249.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040249.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040250.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040251.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040251.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040251.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040251.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040251.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040226.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.504, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040252.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040252.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040252.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040224.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.202, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040252.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040252.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040253.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040220.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.975, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040253.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040254.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040253.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040216.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040216.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.354, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040256.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040257.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040257.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040257.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040258.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040258.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040258.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040259.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040259.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040259.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040259.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040255.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.438, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040260.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040260.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040260.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040260.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040259.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.847, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040261.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040263.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040263.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040263.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040263.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040263.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040264.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040264.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040264.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040265.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040265.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040265.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040266.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040265.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.941, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040265.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040266.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040266.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040266.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040266.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040267.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040267.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040267.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040268.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040269.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040269.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040270.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040270.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040270.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040272.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040272.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040272.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040272.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040273.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040274.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040275.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.293, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040275.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040275.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040275.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.22, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040271.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.384, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040276.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040276.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040277.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040277.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040277.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040279.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040279.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040279.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040278.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040280.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040280.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040280.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040277.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.228, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040282.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040281.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040276.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040282.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040282.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040284.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040285.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040283.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.168, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040287.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040286.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040282.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.617, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040287.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040270.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.722, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040287.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040287.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040287.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040269.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.131, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040289.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040289.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040289.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040289.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040289.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040291.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040291.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040291.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040290.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040268.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.668, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040291.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040292.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040291.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040267.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.008, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040292.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040292.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040292.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040264.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.197, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040293.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040293.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040293.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.054, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040262.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.487, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040295.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040295.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040295.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040295.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040296.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040297.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040298.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040298.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040298.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040298.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040298.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040294.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.608, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040299.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040299.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040299.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040299.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.497, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040300.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.079, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040303.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040303.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040303.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040303.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040304.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040304.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040304.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040305.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040304.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040304.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040305.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040305.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040305.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040305.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040306.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040307.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040307.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040307.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040308.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040308.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040308.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040309.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040309.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040309.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040310.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040310.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040310.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040311.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040312.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040310.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.081, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040314.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040313.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.021, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040309.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.949, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040314.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040316.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040316.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040316.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040317.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040316.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040317.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040318.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040318.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040318.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040318.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040318.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040319.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.237, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040315.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.624, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040321.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040321.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040321.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040322.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040323.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040321.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.991, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040325.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040324.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040320.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.333, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040325.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040309.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.002, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040326.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040326.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040326.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040308.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.304, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040326.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040328.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040328.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040328.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040327.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040328.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040329.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040329.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040329.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040328.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040307.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.717, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040329.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040329.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040306.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.183, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040303.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.737, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040331.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040330.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040302.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.379, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040301.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.671, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040331.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040332.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040333.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040334.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040334.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040334.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040335.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040335.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040335.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040335.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040335.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040331.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.963, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040337.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040338.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040338.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040338.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040338.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040339.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040339.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040339.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040339.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040339.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040336.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.028, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039943.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 396.815, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040340.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039898.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 442.202, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040342.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040342.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040342.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040343.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040344.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040345.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040345.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040345.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040345.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040345.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040346.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040346.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040346.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040346.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040346.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040347.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.41, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040347.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040347.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040347.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040348.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040350.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040350.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040350.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040350.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040351.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040351.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040351.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040351.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040352.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040352.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040352.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040353.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040352.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040352.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.067, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040353.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040353.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040353.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040353.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040355.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040356.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040356.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040356.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040357.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040357.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040357.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040358.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040358.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040358.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040360.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040361.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040359.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.209, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040363.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040362.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.134, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040358.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.169, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040363.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040365.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040367.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.134, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040369.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040368.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040364.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.603, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040369.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040369.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040370.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040370.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040370.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040371.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040372.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040370.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.997, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040374.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040373.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040369.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040374.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040358.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.971, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040375.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040375.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040375.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040357.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.367, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040375.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040376.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040376.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040376.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040375.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040376.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040377.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040377.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040377.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040376.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040377.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040378.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040378.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040378.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040377.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040356.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.736, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040378.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040379.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040378.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040355.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.31, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040379.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040379.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040379.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040351.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.882, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040380.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040380.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040380.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040349.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.264, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040382.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040383.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040384.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040384.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040384.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040384.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040385.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.764, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040381.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.163, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040386.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040386.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040386.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040386.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.454, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.923, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040387.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040387.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040387.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040388.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040389.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040390.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040387.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.195, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040391.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040391.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040391.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040391.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040393.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040394.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040391.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.463, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040396.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040395.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040396.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040397.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040397.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040397.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040397.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040397.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040398.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040398.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040398.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040399.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040399.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040399.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.94, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040399.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040400.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040401.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040401.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040401.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040402.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040402.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040403.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040404.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040404.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040404.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040406.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040406.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040406.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040407.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040406.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040407.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040407.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040407.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040407.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040408.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040409.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.397, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040409.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040409.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040409.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.195, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040405.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.462, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040410.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040410.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040411.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040411.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040411.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040411.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040413.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040413.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040413.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040412.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.611, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040414.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040414.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040414.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040411.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.157, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040415.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040410.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040417.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040417.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040417.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040418.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040419.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040417.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.101, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040416.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.513, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040420.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040404.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.497, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040421.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040421.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040421.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040403.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.928, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040422.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040423.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040423.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040423.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040422.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040423.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040423.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040425.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040425.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040424.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040401.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.43, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040425.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040426.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040425.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040401.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040426.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040426.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040426.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040398.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.837, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040427.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040427.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040427.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040396.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.038, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040396.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.38, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040429.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040430.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040430.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040430.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040431.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040431.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040431.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040431.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040431.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040428.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.086, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040432.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040432.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040432.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040432.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040433.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040433.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040433.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040433.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040433.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040434.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040432.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.097, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040435.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040436.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040436.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040437.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040438.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040439.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040439.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040439.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040438.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040438.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040440.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040440.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040440.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040440.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040441.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040441.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040442.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040442.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040442.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040443.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040443.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040443.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040443.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040445.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040445.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040445.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040445.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040446.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.931, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040448.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040447.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040444.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040450.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040450.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040451.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040450.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.63, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040452.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040453.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040454.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.18, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040454.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040454.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040454.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.627, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040449.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.626, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040454.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040456.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040456.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040456.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040456.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040456.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040457.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.088, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040460.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040458.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.371, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040455.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.334, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040460.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040443.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.774, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040460.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040460.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040442.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.177, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040461.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040463.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040463.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040463.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040462.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040442.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.411, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040463.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040464.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040463.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040441.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.897, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040464.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040464.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040464.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040438.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.641, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040465.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040465.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040465.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040436.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.193, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040436.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.471, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040467.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040467.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040468.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040469.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040466.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.851, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040471.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040470.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.807, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040472.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040474.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040475.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040476.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040476.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040476.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040476.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.958, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040477.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040478.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040478.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040478.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040480.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040480.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040480.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040482.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040482.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040482.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040482.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040482.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040483.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040485.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040484.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040481.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040486.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040488.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040488.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040488.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040489.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040490.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.044, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040487.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.513, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040494.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040494.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040494.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040493.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040494.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040496.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040496.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040496.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040496.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040496.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040492.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.629, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040491.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.037, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040480.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.357, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040498.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040498.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040497.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.622, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040498.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040499.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040499.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040499.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040498.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040499.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040499.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040500.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040479.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.041, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040478.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.397, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040501.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040502.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040502.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040476.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.872, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040502.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040502.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040502.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.248, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040473.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.489, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040503.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040504.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040504.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040504.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040504.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040504.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040505.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040506.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040503.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.127, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040508.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040508.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040508.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040508.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040509.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040507.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.6, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040510.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040511.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040511.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040512.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040513.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040514.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040514.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040514.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.931, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040514.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040515.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040517.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040517.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040520.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040522.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040522.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040522.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040521.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040523.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040519.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040523.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040524.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040523.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.975, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040524.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040524.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040525.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040525.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040525.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040526.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040527.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040525.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040529.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040528.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040524.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.419, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040529.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040529.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040529.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040530.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040530.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040530.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040530.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040531.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040533.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040530.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.274, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040534.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.614, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040529.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040535.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040518.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.016, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040535.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040535.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040535.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040517.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.278, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040535.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040536.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040538.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040538.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040537.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.509, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040538.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040538.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040538.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040516.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.822, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040539.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040539.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040539.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040514.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.45, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040539.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040539.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040511.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.962, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040511.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.179, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040542.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040543.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040541.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.019, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040545.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040544.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.97, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040547.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040547.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040546.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040548.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040549.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.9, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040551.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040552.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040552.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040552.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040553.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040553.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040553.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040556.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040559.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040559.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040557.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040559.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040555.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.967, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040559.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040560.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040559.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.169, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.934, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040560.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040560.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040561.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040561.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040561.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040562.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040563.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040561.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.94, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040564.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040560.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.335, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040566.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040566.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040566.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040567.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040567.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040566.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040568.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040569.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040566.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.999, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040565.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040554.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.553, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040571.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040570.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040553.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040571.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040571.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040571.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040572.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040573.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040552.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.977, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040574.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040574.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040574.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040552.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.314, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040574.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040574.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040576.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040550.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.722, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040577.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040577.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040577.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040548.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.231, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040548.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.469, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040579.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040580.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040578.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.849, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040581.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.692, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040583.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040583.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040583.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040583.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040583.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040582.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.463, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040584.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040585.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040586.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040586.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040586.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.934, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040586.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040587.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040588.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040588.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040588.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040589.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040589.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040589.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040591.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040591.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040591.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040592.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040593.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040591.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040596.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040595.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.139, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.115, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040596.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040598.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040598.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040598.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040598.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040599.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040600.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.127, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040597.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.549, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040602.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040602.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040602.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040603.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040603.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040603.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040603.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040603.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040604.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040604.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040605.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040602.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.223, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040607.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040606.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040601.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040607.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040590.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.269, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040607.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040607.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040589.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.482, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040608.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040610.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040610.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040610.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040609.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040589.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.563, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040610.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040611.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040610.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040588.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040611.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040612.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040612.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040586.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.183, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040612.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040613.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040612.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040584.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040584.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.916, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040613.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040613.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040613.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040614.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040615.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040613.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.962, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040617.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040617.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040617.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040617.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040617.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040616.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.532, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040618.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040620.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040620.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040620.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040621.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040622.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040622.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040622.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.932, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040622.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.031, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040623.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040624.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040624.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040624.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040625.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040625.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040625.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040627.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040627.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040627.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040627.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040628.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040630.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040630.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040631.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040629.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.276, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040632.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040627.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.609, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040632.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040632.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040632.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.174, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040633.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040633.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040635.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040636.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040634.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.236, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040638.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040637.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040633.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040638.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040638.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040638.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040639.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040639.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040639.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040640.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040640.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040640.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040639.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040641.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040641.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040641.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040642.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040639.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.135, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040643.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040638.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.544, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040626.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.842, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040625.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.186, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040645.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040645.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040645.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040644.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040645.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040646.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040646.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040646.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040645.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040646.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040646.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040624.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.469, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040647.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040624.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.844, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040648.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040648.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040648.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040622.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.388, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040649.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040650.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040649.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040620.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.245, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040620.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.509, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040650.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040650.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040651.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040651.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040651.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040651.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040651.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040652.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040653.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040654.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040654.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040650.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.809, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040654.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040654.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040655.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040655.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040655.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040655.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040654.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.312, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040657.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040657.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040658.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040658.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040658.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040658.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040659.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040659.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.891, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040659.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040660.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040661.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040661.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040661.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040661.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040662.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040662.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040662.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040664.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040664.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040664.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040665.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040665.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040665.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040665.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040666.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040668.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040667.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040668.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040665.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.996, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040669.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040669.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040669.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.151, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040664.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.018, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040670.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040670.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040672.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040673.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040671.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.085, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040674.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040670.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.53, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040676.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040676.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040676.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040677.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040676.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040677.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040677.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040677.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040678.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040678.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040677.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040679.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.083, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040675.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.458, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.922, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040681.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040680.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040663.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.207, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040681.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040681.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040681.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040682.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040683.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040662.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.358, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040661.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040684.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040659.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.364, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040685.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040685.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040685.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.926, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040656.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.176, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040688.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040689.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040687.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.143, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040691.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040692.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040693.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040693.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040690.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.548, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040387.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 306.467, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040694.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040341.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 353.563, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040696.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040696.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040696.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040696.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040696.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040697.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040697.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040697.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040697.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040697.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040698.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040699.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040699.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040699.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040699.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.978, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040699.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040700.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040701.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040702.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040702.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040703.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040703.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040704.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040705.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040705.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040705.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.932, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040705.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.06, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040706.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040707.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040707.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040707.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040709.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040709.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040709.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040711.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040712.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040713.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040713.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.13, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040715.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040714.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.187, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040710.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.11, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040716.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040716.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040716.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040716.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040717.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040717.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040717.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040717.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040718.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040719.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040717.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.045, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040716.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.45, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040721.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040721.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040721.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040722.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040722.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040722.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040723.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040722.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040723.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040723.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040723.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040724.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040721.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.045, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040726.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040725.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040720.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040726.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040709.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.874, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040726.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040726.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040726.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.15, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040727.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040727.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040727.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040727.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040727.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040729.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040729.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040729.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040728.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040708.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.544, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040729.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040730.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040729.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040707.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.854, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040730.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040731.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040731.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040705.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.689, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040732.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040732.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040732.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040703.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.484, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040703.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.805, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040734.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040735.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040736.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040736.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040736.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.321, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040733.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.617, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.871, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.272, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040738.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040739.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040739.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040740.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040741.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.015, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040742.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040742.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040742.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040742.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040743.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040744.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040742.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.387, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040746.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040746.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040746.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040746.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040745.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040747.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040748.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040749.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040749.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040750.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040750.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040750.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040750.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040749.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040749.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040750.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040751.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040751.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040751.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040751.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040752.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040752.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040752.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040754.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040754.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040754.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040755.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040755.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040755.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040756.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040758.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040758.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040757.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040759.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040755.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.081, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040759.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040759.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040759.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.179, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040754.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.069, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040760.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040760.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040761.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040761.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040761.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040762.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040763.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040761.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.112, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040764.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.593, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040760.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.568, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040766.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040766.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040767.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040767.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040767.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040766.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040768.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040768.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040769.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040766.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.683, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040771.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040770.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040765.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.036, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040771.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.643, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040771.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040771.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040753.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.908, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040772.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040774.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040774.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040774.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040773.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040752.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.126, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040774.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040775.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040774.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040751.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.494, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040775.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040775.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040776.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040749.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.112, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040776.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040777.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040776.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040747.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040747.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.176, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040778.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040779.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040780.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040777.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040781.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040781.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040781.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040781.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040782.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040783.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040783.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040783.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040783.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040783.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040784.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040781.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.936, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040785.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040788.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040788.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040788.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040789.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040788.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040788.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.977, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040789.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040789.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040789.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040789.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040792.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040792.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040793.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040793.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040793.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040794.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040794.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040794.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040793.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040795.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040795.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040795.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040796.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040793.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.25, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040798.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040797.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.037, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040792.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.141, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040798.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040798.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040799.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040799.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040799.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040800.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040801.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040799.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.992, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040803.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040802.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040798.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.397, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040803.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040804.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040804.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040804.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040805.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040805.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040805.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040806.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040807.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040805.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.102, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040804.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.544, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040808.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.95, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040809.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040809.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040809.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.627, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040791.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.343, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040809.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040809.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040810.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040812.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040811.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.376, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040813.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040813.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040813.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040790.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040813.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040813.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040814.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040787.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.338, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040814.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040814.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040814.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.948, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040786.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.167, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040816.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040817.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040815.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.202, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040819.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040819.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040819.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040819.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040820.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040822.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040822.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040822.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040822.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040822.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040818.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.882, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040824.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040824.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040823.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040824.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040825.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040826.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040826.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040827.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040827.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040827.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040826.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040826.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040827.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040828.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040827.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040828.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040828.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040830.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040830.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040830.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040831.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040831.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040831.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040832.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040833.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040833.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040833.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040833.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040834.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040835.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040836.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040832.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.339, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040836.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040836.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040836.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.006, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040831.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.226, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040837.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040837.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040837.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040838.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040838.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040838.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040838.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040839.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040840.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040841.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040838.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.875, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040837.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.299, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040843.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040843.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040843.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040844.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040845.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040843.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.026, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040847.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040846.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040842.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.379, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040847.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040830.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.776, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040847.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040847.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040847.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.01, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040849.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040850.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040850.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040848.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.554, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040850.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040850.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040851.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040851.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040850.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040829.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.034, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040851.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040851.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040851.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040828.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.356, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040852.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040852.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040852.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040826.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.895, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040852.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040852.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040824.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.504, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040824.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.748, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040854.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040855.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040856.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040856.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040853.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.863, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040857.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040857.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040858.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040857.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.379, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040859.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040861.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040862.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040862.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040862.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040862.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040863.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040864.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040864.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040864.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040867.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040867.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040867.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040868.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040868.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040868.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040868.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040869.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040870.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040868.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.054, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040872.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040871.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.025, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040867.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.93, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040872.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040874.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040874.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040874.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040874.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040874.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040875.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040876.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040876.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040877.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040877.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040877.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040876.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040877.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.106, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040873.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.53, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040880.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040881.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040879.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.041, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040882.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040878.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.388, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040867.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.847, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.115, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040885.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040885.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040885.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040883.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040885.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040886.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040886.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040886.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040885.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040886.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040887.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040887.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040887.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040886.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040865.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.32, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040887.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040887.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040864.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.616, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040862.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.984, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040889.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040888.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.547, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040860.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.804, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040889.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040889.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040889.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040890.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040891.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040889.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.102, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040894.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040894.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040894.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040894.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040894.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040895.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040893.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.16, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040898.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040898.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040898.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040898.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040899.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040900.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040900.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040900.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040900.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040901.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040902.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040903.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040903.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040903.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040905.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040905.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040905.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040906.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040907.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040905.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.114, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040909.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040908.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.999, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040909.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040911.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040911.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040911.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040911.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040911.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040912.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040912.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040913.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040913.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040913.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040912.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040913.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040913.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.133, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040915.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040914.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040910.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.509, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040915.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040915.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040917.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040918.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040916.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.89, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040915.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.182, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040919.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040904.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.599, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040920.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040921.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040920.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.343, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040903.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040921.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040921.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040922.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040922.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040921.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040922.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040922.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040922.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040923.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040903.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.923, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040900.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.855, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040924.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040898.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.155, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040925.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040925.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040925.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040897.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040896.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.895, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040927.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040929.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040926.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.119, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040930.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040930.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040930.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040930.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040931.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040931.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040931.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040931.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040931.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040930.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.82, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040933.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040934.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040934.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040935.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040935.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040935.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040934.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.86, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040934.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.968, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040935.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040936.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040935.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040936.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040936.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040937.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040938.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040938.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040938.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040941.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040941.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040941.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040941.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040942.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040943.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.103, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040944.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040944.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040944.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040940.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040946.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040946.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040948.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040948.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040947.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040949.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.115, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040945.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.518, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040951.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040951.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040951.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040952.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040953.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040951.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.089, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040955.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040954.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040950.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.459, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040955.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.737, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040956.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040956.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040939.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.066, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040957.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040959.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040959.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040959.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040958.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040938.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.37, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040959.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040959.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040936.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.603, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040934.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.967, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040960.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.447, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040932.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.669, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040962.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040963.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040963.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040963.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040964.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040964.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040964.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040964.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040961.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.054, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040966.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040966.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040966.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040966.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040966.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040965.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.393, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040967.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040968.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040968.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040970.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040970.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040970.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040971.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040970.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.888, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040970.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.001, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040971.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040971.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040971.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040971.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040973.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040973.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040973.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040974.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040974.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040974.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040975.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040975.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040975.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040977.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040978.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.131, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040980.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040979.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.109, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040976.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.102, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040982.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040982.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040983.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040983.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040982.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040983.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040984.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040984.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040985.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.415, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040986.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040981.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040988.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040988.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040988.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040988.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040989.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.936, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040991.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040990.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040987.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.341, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040991.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040975.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.34, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040992.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040993.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040992.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040974.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040993.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040993.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040993.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040994.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040995.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040973.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.062, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040973.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.541, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040996.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040969.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.093, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040997.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040997.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040997.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040968.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.551, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040968.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.846, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040999.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040999.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040999.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040999.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040999.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041000.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040998.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.696, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040737.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 262.869, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041001.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995040695.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 306.16, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041001.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041002.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041002.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041002.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041003.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041004.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041005.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041002.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.986, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041006.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041006.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041006.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041006.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041006.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041007.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041008.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041008.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041010.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041010.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041010.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041010.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041012.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041012.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041012.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041013.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041012.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.912, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041012.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041013.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041013.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041013.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041013.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041015.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041015.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041019.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041019.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041020.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041018.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.91, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041020.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041020.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041020.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041017.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.379, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041022.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041021.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.324, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041024.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041024.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041024.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041025.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041026.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041023.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.455, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041028.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041028.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041028.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041029.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041030.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041031.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041028.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.12, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041033.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041032.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041027.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.551, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041033.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041016.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.299, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041033.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041033.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041015.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.535, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041034.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041036.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041036.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041036.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041035.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.911, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041036.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041038.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041036.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.072, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041014.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.925, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041039.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041039.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041039.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041011.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.626, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041039.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041040.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041039.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.625, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041010.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.304, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041009.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.601, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041040.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041041.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041042.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041043.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041040.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.392, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041040.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.657, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041044.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041044.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041044.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041002.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.112, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041001.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.508, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041046.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041046.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041047.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041048.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041049.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041049.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.807, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041049.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041049.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041050.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041051.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041049.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.294, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041053.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041053.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041053.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041053.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041052.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.685, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041056.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041056.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041056.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041056.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041057.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041058.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041058.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041058.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041058.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041059.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041059.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041059.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041059.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041060.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041060.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041060.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041060.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041061.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041061.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041061.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041062.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041062.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041062.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041062.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041063.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041065.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041066.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041066.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041064.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041066.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041062.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.488, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041066.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041067.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041066.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.288, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041061.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.593, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041068.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041068.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041068.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041069.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041069.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041069.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041070.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041070.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041070.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041069.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041070.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041070.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041071.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041069.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.654, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041073.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041072.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.627, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041068.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.293, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041073.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041073.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041074.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041074.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041074.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041075.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041075.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041075.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041075.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041075.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041076.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041077.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041077.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041077.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041077.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041077.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.947, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041078.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041079.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041074.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.577, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041079.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041079.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041079.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041073.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.085, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041079.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041061.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.923, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041080.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041080.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041080.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041060.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.389, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041080.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041081.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041081.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041081.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041080.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041081.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041082.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041082.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041082.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041081.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041082.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041083.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041083.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041083.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041082.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041059.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.929, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041083.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041084.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041083.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041058.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.339, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041084.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041084.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041085.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041056.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.851, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041085.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041086.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041085.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041055.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.512, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041054.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.788, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041086.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041087.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041088.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041089.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041086.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.039, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041091.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041092.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041092.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041092.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041093.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041093.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041093.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041090.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.887, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041095.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041095.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041095.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041095.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041095.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041096.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041096.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041096.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041097.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041097.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041097.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041097.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041097.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.968, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041099.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041099.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041099.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041101.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041101.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041101.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041102.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041102.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041102.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041103.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041103.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041103.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041102.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041104.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041104.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041104.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041104.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041106.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041106.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041105.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041106.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041102.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.174, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041106.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041107.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041106.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041101.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.063, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041107.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041107.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041108.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041108.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041108.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041109.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041110.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041108.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041112.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041111.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041107.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.52, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041113.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041113.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041113.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041113.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041114.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041114.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041114.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041115.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041116.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041114.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.118, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041113.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.603, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041117.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.04, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041118.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041118.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041118.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041100.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.419, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041118.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041118.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041119.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041122.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041120.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041099.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.574, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041122.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041122.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041122.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041098.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.986, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041123.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041123.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041123.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041096.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.683, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041123.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041123.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.276, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041094.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.534, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041125.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041126.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041127.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041127.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041127.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041127.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041127.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041124.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.29, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041128.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041128.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041128.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041128.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041129.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041129.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041129.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041130.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041130.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041130.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041130.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041128.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.765, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041131.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041133.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041134.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041134.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041135.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041135.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041135.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041134.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041134.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.029, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041135.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041136.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041135.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041136.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041136.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041137.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041137.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041137.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041137.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041139.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041139.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041140.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041140.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041141.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041141.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041141.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041141.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041142.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041143.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041140.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.197, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041144.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041144.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041144.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.093, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041139.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.053, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041145.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041145.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041145.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041145.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041146.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041146.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041146.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041147.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041148.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041149.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041146.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.012, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041150.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041150.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041150.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041145.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.502, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041150.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041152.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041152.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041152.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041152.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041152.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041153.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.043, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041155.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041154.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041151.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041155.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.883, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041155.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041155.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041138.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.172, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041156.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041157.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041158.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041158.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041158.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041157.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.616, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041158.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041159.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041159.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041159.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041158.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.859, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041137.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.34, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041159.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041159.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041136.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041134.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.27, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041161.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041160.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041132.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.96, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041161.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041162.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041163.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041164.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041161.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.983, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041166.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041166.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041166.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041166.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041166.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041167.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041165.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.554, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041168.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041169.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041169.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041170.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041172.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.978, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041172.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041172.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041172.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041172.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041174.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041174.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041176.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041176.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041176.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041178.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041178.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041178.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041178.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041178.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041179.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.007, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041181.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041180.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.102, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041177.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041183.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041183.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041183.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041184.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041185.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041186.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041182.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.485, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041189.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041190.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041188.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.974, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041191.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041187.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.268, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041176.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.649, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041174.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.445, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041194.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041194.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041194.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041192.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041194.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041194.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041196.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041196.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041195.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.618, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041196.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041196.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041196.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041173.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.927, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041197.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041197.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041197.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041171.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.334, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041197.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041197.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041169.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041169.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.014, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041199.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041200.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041201.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041201.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041201.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041201.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041198.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.678, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041202.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041202.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041202.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041202.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041203.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041202.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.996, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041205.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041205.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041204.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041205.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041206.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041207.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041207.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041208.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041208.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041207.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.915, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041207.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.006, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041208.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041208.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041208.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041209.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041211.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041211.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041213.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041213.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041213.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041214.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041215.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041213.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.869, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041217.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041216.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041217.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041217.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041218.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041218.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041218.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041219.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041219.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041219.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041219.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041218.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041220.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041220.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041220.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041221.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041218.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.174, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041223.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041222.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041217.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.598, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041223.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041223.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041223.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041224.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041224.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041224.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041224.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041225.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041226.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041227.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041224.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.917, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041227.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041227.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041227.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041223.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.294, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041227.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041212.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.429, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041228.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041229.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041228.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041211.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.912, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041229.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041229.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041229.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041230.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041231.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.053, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041210.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.462, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041232.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041207.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.897, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041233.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041233.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041233.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041205.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.292, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041205.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.53, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041240.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041241.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041241.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041241.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041241.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041241.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041243.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041244.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041244.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041244.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041244.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041245.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041245.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041245.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041245.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041245.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041246.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041234.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.41, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041247.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041247.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041247.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041248.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041248.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041248.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041248.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041246.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.727, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041250.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041250.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041250.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041249.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041251.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041252.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041252.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041253.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041253.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041253.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041253.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041253.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041254.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041255.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041256.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041256.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041256.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041255.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.607, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041255.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.801, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041256.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041257.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041257.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041258.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.624, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041259.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041259.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041260.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041260.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041260.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041262.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041262.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041262.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041263.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041263.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041263.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.069, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041265.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041265.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041265.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041264.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041265.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041266.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041263.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.827, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041267.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041267.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041267.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.451, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041262.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.293, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041268.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041268.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041269.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041269.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041269.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041270.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041270.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041270.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041270.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041270.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041272.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041273.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041269.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.446, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041274.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041274.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041274.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041268.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.12, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041276.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041276.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041276.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041276.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041277.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.624, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.878, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041279.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041278.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041275.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.231, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041280.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.851, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041280.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041281.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041280.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041261.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.277, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041281.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041281.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041281.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041282.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041283.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041260.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.841, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041284.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041284.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041284.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041259.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.418, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041284.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041285.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041285.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041254.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.957, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041285.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041286.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041285.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041250.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.486, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041250.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.009, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041288.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041288.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041288.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041288.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041288.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041289.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041290.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041291.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041291.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041291.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041291.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041291.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041287.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.743, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041292.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.558, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041293.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041295.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041295.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041295.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041295.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041295.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041296.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041296.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041296.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.927, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041297.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.065, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041298.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041298.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041298.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041298.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041300.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041300.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041300.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041301.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041301.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041301.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041302.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041302.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041302.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041304.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041304.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041304.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041304.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041304.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041305.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.103, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041307.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041307.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041306.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.182, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041303.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.117, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041308.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041308.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041308.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041308.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041309.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041309.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041310.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041310.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041310.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041309.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041311.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041311.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041311.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041312.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041309.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.184, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041313.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041308.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041315.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041315.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041315.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041316.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041317.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.054, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041318.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041318.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041318.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041314.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.448, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041318.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041302.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.232, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041319.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041320.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041319.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041301.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041320.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041321.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041321.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041321.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041320.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041321.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041321.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041323.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041323.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041322.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041301.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.368, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041323.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041323.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041323.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041300.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041324.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041324.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041324.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041296.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.734, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041324.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041325.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041324.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.643, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041294.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.948, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041325.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041325.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041326.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041326.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041326.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041326.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041326.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041327.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041327.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041327.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041325.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.689, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041327.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041329.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041329.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041329.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041329.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041329.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041330.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041330.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041330.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041330.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041330.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041327.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.296, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041045.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 285.502, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041331.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041001.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 329.985, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041331.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041333.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041333.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041333.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041333.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041334.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041335.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041336.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041336.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041336.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041336.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.233, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041336.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041337.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041338.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041338.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041339.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041340.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041341.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041341.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041341.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041342.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041343.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041343.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041343.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.087, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041344.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041345.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041345.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041347.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041347.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041347.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041347.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041348.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041349.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041349.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041349.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041350.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041350.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041350.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041351.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041352.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041353.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041349.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.232, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041353.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041353.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041353.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.197, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041348.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.349, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041354.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041354.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041356.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041358.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041358.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041359.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041357.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041359.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041355.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.108, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041359.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041360.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041359.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.635, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041354.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.605, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041360.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041360.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041360.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041361.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041361.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041361.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041361.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041362.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041363.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041361.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.083, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041360.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.474, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041364.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041347.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.388, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041365.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041365.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041365.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041365.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041366.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041366.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041366.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041365.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041367.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041367.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041369.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041369.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041368.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041346.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.061, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041369.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041369.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041369.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041345.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.356, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041370.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041370.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041370.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041343.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.224, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041370.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041371.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041370.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041341.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.955, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041341.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.339, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041371.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041371.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041372.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041373.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041374.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041376.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041371.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.57, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041371.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.866, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041376.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041376.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.929, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.314, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041378.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041379.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.854, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041381.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041381.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041381.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041381.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041381.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041382.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041383.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041383.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041384.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041384.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041384.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041384.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041380.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.494, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041386.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041385.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041386.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041387.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041388.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041388.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041388.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041388.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041389.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041390.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041390.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041391.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041391.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041391.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041391.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041395.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041395.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041395.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041396.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041397.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041398.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.31, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041398.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041398.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041398.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041393.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.194, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041399.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041399.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041399.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041400.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041400.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041400.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041400.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041401.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041403.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041402.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041403.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041400.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.002, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041404.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041404.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041404.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041399.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.411, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041404.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041406.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041406.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041406.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041407.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041408.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.096, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041405.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.491, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.025, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041410.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041409.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041392.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.319, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041410.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041410.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041410.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041411.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041410.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041411.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041411.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041411.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041413.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041411.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041414.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041414.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041414.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041414.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041414.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041391.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.669, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041390.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.028, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041415.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041388.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.723, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041416.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041416.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041416.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041386.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.384, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041386.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.7, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041418.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041419.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041417.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.223, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041422.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041422.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041422.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041422.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041422.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041423.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041420.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.982, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041424.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041426.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041427.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041427.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041427.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041427.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.951, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041428.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041429.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041429.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041430.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041430.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041430.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041431.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041431.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041432.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041432.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041432.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041434.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041434.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041434.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041434.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041434.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041435.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.992, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041437.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041436.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.089, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041433.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.925, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041439.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041439.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041439.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041439.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041440.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.566, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041441.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041441.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041441.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.011, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041443.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041442.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041438.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.365, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041443.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041443.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041445.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041446.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041444.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.92, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041443.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.239, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041447.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041432.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.474, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041448.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041448.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041448.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041431.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.976, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041449.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041450.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041450.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041450.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041449.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041450.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041450.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041452.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041452.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041451.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041430.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.155, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041452.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041452.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041452.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041429.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.399, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041453.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041453.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041453.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041427.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.08, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041453.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041454.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041453.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041425.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.92, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041454.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041454.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041455.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041456.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041458.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041454.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.357, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041459.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041459.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041459.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041460.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041461.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041459.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.749, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041462.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041464.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041464.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041464.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041465.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041465.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041465.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041465.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041465.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041464.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041466.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041466.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041466.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.735, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041468.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041468.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041470.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041470.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041470.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041472.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041472.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041472.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041472.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041472.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041473.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.024, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041475.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041474.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.077, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041471.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.943, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041477.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041477.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041478.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041477.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041479.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041480.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.058, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041476.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.454, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041482.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041482.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041482.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041483.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041484.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041482.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.09, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041486.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041485.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041481.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.359, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041487.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041470.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.719, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041487.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041487.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041487.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.601, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.082, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041488.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041488.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041488.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041488.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041488.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041490.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041490.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041490.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041489.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041469.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.423, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041490.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041490.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041468.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041464.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.123, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041492.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041491.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.432, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041463.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.777, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041493.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041494.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041494.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041494.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041495.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041495.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041495.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041495.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041495.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041496.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041492.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.099, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041497.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041497.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041497.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041497.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041498.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041497.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.36, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041500.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041499.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041500.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041500.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041501.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041504.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.928, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041504.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041504.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041504.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041504.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041506.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041506.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041506.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041507.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041507.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041507.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041509.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041510.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041508.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.036, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041511.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041507.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041512.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041512.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041513.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041514.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041514.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041514.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041514.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041515.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041516.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041514.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.112, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041517.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041512.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.485, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041519.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041519.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041519.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041519.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041520.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041521.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041522.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041519.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.864, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041523.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041523.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041522.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041518.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041523.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041507.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.597, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041523.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041524.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041523.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041506.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.961, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041524.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041524.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041524.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041525.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041526.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.164, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041505.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.59, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041527.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041502.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.979, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041528.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041528.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041528.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041500.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.273, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041500.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.505, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041530.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041531.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041532.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041529.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.936, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041534.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041533.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.936, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041536.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041537.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041537.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041538.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041538.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041538.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.976, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041539.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041540.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041540.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041542.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041542.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041542.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041543.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041543.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041543.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041543.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041544.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041545.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.633, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041543.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.889, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041547.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041546.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.94, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041542.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041547.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041548.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041549.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041549.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041549.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041550.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041551.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041549.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041552.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041548.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.482, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041554.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041554.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041554.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041554.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041556.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041555.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041556.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041556.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041556.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041557.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041557.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041556.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.643, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041557.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041554.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.905, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041553.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.361, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041542.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.315, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041559.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041558.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.558, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041559.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041559.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041559.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041560.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041561.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041541.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.741, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041540.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.09, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041562.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041538.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.513, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041563.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041563.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041563.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041535.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.089, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041564.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041564.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041564.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041565.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041565.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041565.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041566.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041567.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041564.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.765, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041568.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.627, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041570.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041570.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041569.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041570.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041571.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041572.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041573.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041573.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041573.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041574.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041575.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041575.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041575.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041576.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041576.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041576.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041579.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041580.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041578.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.961, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041581.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041583.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041583.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041584.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041584.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041584.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041585.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041586.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041584.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.073, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041587.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041583.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.439, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041589.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041589.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041589.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041590.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041591.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041591.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041591.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.624, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.923, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041593.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041592.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041588.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.26, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041593.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041577.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.403, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041593.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041594.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041593.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041576.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041594.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041594.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041594.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041594.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041595.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041575.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.912, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041597.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041597.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041596.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041575.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.251, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041597.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041597.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041597.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041573.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.68, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041598.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041598.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041598.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041570.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.216, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041570.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.466, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041599.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041599.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041600.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041601.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041602.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041603.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041599.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.866, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041604.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.436, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041606.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041605.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041606.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041606.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041607.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041609.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041609.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041609.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.924, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041609.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.043, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041610.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041611.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041611.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041611.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041612.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041612.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041612.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041614.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041614.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041614.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041615.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041616.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041614.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.045, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041618.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041617.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.969, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.841, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041618.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041619.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041620.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041620.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041620.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041621.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041622.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041620.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.126, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041624.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041623.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041619.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041624.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041624.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041624.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041625.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041625.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041625.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041625.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041626.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041628.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041629.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041627.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041629.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041625.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.075, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041629.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041629.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041629.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041624.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.438, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041613.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.731, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041612.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.085, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041631.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041631.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041631.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041630.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041631.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041632.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041632.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041632.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041631.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041632.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041632.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041612.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.356, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041633.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041611.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041634.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041634.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041634.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041609.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.43, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041634.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041635.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041634.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041606.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.985, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041606.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.213, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041635.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041635.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041635.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041637.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041637.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041637.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041637.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041637.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041638.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041639.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041635.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.237, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041640.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.157, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041641.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041644.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041644.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041644.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.912, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041645.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041646.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041645.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041646.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041646.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041647.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041647.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041647.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041647.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041650.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041650.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041650.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041650.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041651.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041652.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.095, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041653.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041653.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041653.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.035, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041649.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.978, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041654.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041654.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041654.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041654.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041655.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041656.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041656.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041656.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041657.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041658.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041655.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.141, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041654.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.476, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041660.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041660.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041660.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041661.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041663.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041663.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041663.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041662.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041663.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041660.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.815, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041664.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041665.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041664.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041659.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.26, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041665.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.617, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041665.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041665.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041665.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041648.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.903, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041667.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041667.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041667.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041666.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041667.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041668.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041668.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041668.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041667.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041647.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.072, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041668.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041668.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041646.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.378, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041643.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.866, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041669.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.642, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.251, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041642.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.466, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041671.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041671.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041672.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041673.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041670.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.941, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041675.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041676.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041677.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041677.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041677.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041674.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.562, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041377.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 299.655, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041677.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041332.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 345.923, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041679.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041679.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041680.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041680.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041680.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041681.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041681.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041681.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041681.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041681.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041682.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041683.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041683.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041683.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041683.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041683.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.227, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041684.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041685.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041686.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041689.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041690.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041690.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041691.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041691.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041691.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041690.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.852, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041690.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041691.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041692.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041692.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041692.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041692.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041693.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041693.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041693.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041693.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041696.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041696.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041696.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041697.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.641, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041699.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.144, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041700.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041700.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041700.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.141, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041695.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.089, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041701.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041701.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041701.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041702.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041702.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041702.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041702.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041703.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041704.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041702.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.053, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041705.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041701.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.457, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041708.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041708.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041708.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041708.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041709.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.057, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041711.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041710.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041706.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.405, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041711.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.903, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041711.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041712.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041711.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041694.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.194, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041712.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041712.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041712.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041712.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041713.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041693.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.368, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041715.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041714.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041692.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041716.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041716.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041716.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041690.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.406, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041717.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041717.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041717.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.064, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041688.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.384, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041719.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041720.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041721.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041721.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.21, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041718.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.478, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041721.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041721.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.736, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.126, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041723.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041723.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041724.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041724.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041724.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041724.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041724.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041725.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.893, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041727.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041727.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041727.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041727.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041727.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041728.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041729.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041726.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.373, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041730.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041732.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041733.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041733.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041733.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041733.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041734.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041734.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041734.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041734.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041735.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041735.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041735.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041736.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041735.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.888, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041735.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041736.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041736.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041736.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041736.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041738.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041738.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041741.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041743.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041743.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041744.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041742.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041744.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041740.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.042, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041744.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041745.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041744.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.216, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.057, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041745.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041747.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041747.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041747.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041747.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041748.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041749.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.195, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041746.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.6, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041752.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041752.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041752.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041753.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041753.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041753.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041754.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041751.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.236, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041756.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041755.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041750.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.57, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041756.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041739.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.168, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041756.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041756.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041756.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041738.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.513, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041758.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041758.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041758.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041757.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041758.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041759.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041759.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041759.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041758.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.556, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041759.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041760.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041759.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041737.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.917, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041760.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041760.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041760.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041734.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.588, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041761.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041761.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041732.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.501, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041732.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.768, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041763.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041764.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041762.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.93, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041766.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041766.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041766.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041766.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041766.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041767.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041768.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041768.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041765.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.845, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041770.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041770.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041769.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041770.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041771.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041772.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041772.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041772.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041772.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041773.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041774.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041774.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041774.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041775.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041775.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041775.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041778.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041778.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041778.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041778.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041779.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041779.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041780.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041777.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.092, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041782.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041781.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.066, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.976, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041782.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041782.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041783.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041783.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041783.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041784.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041784.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041784.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041784.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041784.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041785.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041783.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.002, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041787.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041786.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041782.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.414, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041787.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041788.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041788.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041789.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041789.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041789.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041789.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041790.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041791.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041789.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.074, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041792.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041788.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.577, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041776.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.787, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041775.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.022, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041794.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041794.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041794.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041793.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041794.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041794.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041796.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041795.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041775.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.123, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041797.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041797.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041797.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041774.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041798.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041798.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041798.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041772.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.963, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041798.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041798.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041770.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.492, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041770.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.733, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041800.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041801.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041799.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.705, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041803.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041803.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041803.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041804.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041804.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041805.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041802.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.796, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041809.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041810.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041810.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041812.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041812.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041812.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041813.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041813.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041813.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041814.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041815.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041815.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041815.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041816.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041817.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041814.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.152, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041818.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041818.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041818.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041813.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.003, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041820.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041820.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041820.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041820.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041821.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041822.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041822.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041822.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041822.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041822.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041823.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.847, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041823.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041824.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041823.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041819.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.242, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041824.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041824.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041826.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041827.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041825.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.938, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041828.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041824.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.337, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041812.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.526, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041830.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041830.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041830.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041829.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041830.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041831.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041832.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041832.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041830.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041832.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041833.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041833.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041833.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041832.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041811.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.145, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041833.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041833.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041810.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.518, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041808.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.833, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041834.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041807.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.251, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041806.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.474, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041836.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041837.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041838.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041838.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041838.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041835.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.88, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041838.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041839.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041840.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041838.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.259, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041841.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041843.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041844.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041844.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041844.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041844.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041845.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041846.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041846.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041846.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041847.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041847.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041847.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041847.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041849.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041849.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041849.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041850.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041850.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041850.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041851.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041852.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041850.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.123, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041854.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041853.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.066, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041849.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.085, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041854.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041856.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041857.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.097, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041860.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041859.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041855.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.508, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041860.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041860.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041862.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041863.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041861.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.971, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041864.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041860.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.384, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041849.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.963, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041847.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.224, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041866.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041867.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041865.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.268, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041868.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041846.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.861, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041870.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041869.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041846.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.148, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041870.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041870.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041870.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041844.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.524, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041871.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041871.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041871.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041842.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.114, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041872.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041873.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041874.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041874.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041875.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041875.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041875.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041871.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.715, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041875.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041876.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041875.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.043, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041877.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041879.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041880.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041880.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041880.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041880.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.895, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041881.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041882.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041882.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041882.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041884.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041884.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041884.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041886.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041886.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041886.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041887.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041888.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041886.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.056, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041890.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041889.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041890.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041890.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041891.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041891.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041891.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041893.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041893.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041894.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041892.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041894.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041894.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041894.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041891.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.16, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041896.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041895.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041890.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.556, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041896.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041896.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041898.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041899.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041897.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041896.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.338, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041900.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041885.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.673, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041901.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041901.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041901.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.44, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041884.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.902, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041902.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041902.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041903.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041904.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041884.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.114, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041905.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041905.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041905.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041882.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041905.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041905.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041906.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041880.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.837, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041906.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041906.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041906.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.146, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041878.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.363, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041908.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041908.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041908.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041907.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041722.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 185.772, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041908.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041678.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 230.769, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041911.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041911.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041911.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041911.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041911.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041912.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041912.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041912.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041912.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041912.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041913.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.019, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041914.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041915.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041916.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041917.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041917.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041917.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041917.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041917.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041918.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041918.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041918.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041918.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041920.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041920.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041920.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041920.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041921.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041921.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041921.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041921.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.891, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041922.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.996, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041924.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041924.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041924.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041925.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041925.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041925.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041925.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041926.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041926.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041928.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041928.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041928.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041929.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041929.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041929.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041930.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041927.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.187, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041932.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041931.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.229, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041926.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.28, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041932.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041934.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041934.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041934.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041934.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041934.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041935.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.035, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041937.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041936.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041933.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.397, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041938.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041938.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041940.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041941.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041939.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.145, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041942.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041938.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.548, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041926.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.108, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041925.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.526, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041944.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041944.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041944.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041943.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041944.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041944.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041947.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041947.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041945.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041924.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.791, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041947.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041947.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041923.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.238, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041921.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.769, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041949.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041948.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.451, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041919.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.756, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041949.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041950.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041950.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041950.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041950.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041950.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041951.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041952.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041953.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041949.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.419, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041949.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.694, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041953.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041953.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041953.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041954.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.538, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.787, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041956.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041957.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041958.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041958.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.806, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041958.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041958.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041959.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041960.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041961.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041961.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041961.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041961.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041958.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.085, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041962.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041962.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041963.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041962.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041962.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.219, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041964.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041964.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041965.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041966.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041966.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041966.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041966.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.976, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041967.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041968.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041968.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041968.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041969.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041969.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041969.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041970.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041970.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041970.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041972.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041972.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041972.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041974.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041972.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.631, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041974.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041974.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041974.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041975.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.039, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041977.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041976.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.141, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041971.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.066, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041979.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041979.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041979.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041980.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041981.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.987, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041982.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041982.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041982.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.467, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041978.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.309, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041983.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041983.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041984.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041984.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041984.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041985.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041986.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041984.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.103, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041988.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041987.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041983.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.572, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041988.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041970.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.997, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041988.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041988.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041969.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.317, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041989.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041992.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041992.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041992.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041990.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041969.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.447, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041992.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041992.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041968.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.93, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041966.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.515, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041994.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041993.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041964.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.21, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041964.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.534, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041994.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041995.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041996.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041997.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041994.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.185, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041998.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041998.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041998.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041998.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042000.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042000.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042001.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042002.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041998.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.716, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042004.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042004.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042004.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042004.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.981, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042006.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042007.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042007.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042007.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042007.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042008.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042008.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042008.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042008.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042009.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042009.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042010.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042011.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042011.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042013.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042014.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042012.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.121, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042016.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042015.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.049, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042011.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.048, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042016.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042016.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042019.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042019.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042019.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042018.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042019.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042020.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042020.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042020.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042017.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.913, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042021.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042016.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.269, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042023.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042023.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042023.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042023.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042024.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.918, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042026.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042025.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042022.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.326, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042026.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042011.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.633, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042026.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042027.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042026.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042009.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.173, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042027.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042027.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042028.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042027.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042029.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042008.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.31, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042031.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042030.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042007.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.627, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042031.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042031.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042031.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042005.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.253, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042032.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042032.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042032.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042003.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.037, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042034.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042035.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042035.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042035.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042035.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042035.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042036.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042036.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042036.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042033.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.022, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042037.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042037.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042037.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042037.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042038.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042038.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042038.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042038.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042038.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042039.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042037.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.699, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042041.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042042.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042042.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042042.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042042.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.924, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042043.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042045.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042045.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042045.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042046.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042046.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042046.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042048.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042048.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042048.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042049.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042050.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042048.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.156, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042052.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042051.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.973, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042052.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042054.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042056.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042057.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.206, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042053.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042059.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042059.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042059.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042060.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042061.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042059.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.056, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042063.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042062.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042058.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.392, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042063.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042047.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.072, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042064.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042064.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042046.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.478, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042065.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042067.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042067.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042067.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042066.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042046.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.562, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042067.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042067.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042045.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042042.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.208, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042069.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042068.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.568, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042040.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.855, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042069.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042069.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042070.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042071.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042071.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042071.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042071.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042072.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042072.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042072.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042072.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042069.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.077, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042074.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042075.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042073.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.391, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042076.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042077.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042077.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042077.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042079.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.913, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042080.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042081.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042081.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042081.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042081.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042082.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042082.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042082.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042084.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042084.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042084.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042085.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042085.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042085.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042085.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042086.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042087.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042085.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.977, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042088.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042088.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042088.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.053, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042084.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042089.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042097.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.675, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042099.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042100.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042100.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042101.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042104.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042104.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042104.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042101.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.064, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042104.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042105.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042105.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042106.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042106.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042105.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.165, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042106.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042106.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042107.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042107.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042107.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042106.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.935, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042107.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042100.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.152, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042108.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042108.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042108.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042097.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.969, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042108.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042109.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042109.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042109.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042110.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042110.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042110.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042111.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042113.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042113.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042112.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042113.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042109.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.341, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042114.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042115.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042114.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042109.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.261, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042115.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.635, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042115.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042116.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042115.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042083.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.016, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042116.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042116.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042116.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042117.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042116.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042117.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042117.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042117.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042117.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042118.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042082.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.481, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042119.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042119.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042119.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042081.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.914, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042119.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042120.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042120.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042078.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.811, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042121.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042121.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042120.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042077.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.57, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042077.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.059, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042122.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042122.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042122.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042123.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042123.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042123.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042124.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042124.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042125.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042125.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042125.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042125.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042125.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042126.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042126.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042126.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042126.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042127.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042122.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.785, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042128.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042128.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042129.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042129.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042129.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042130.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042130.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042130.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042130.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042130.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042128.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.721, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042131.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042133.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042133.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042133.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042133.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042133.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042134.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042134.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042135.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042136.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042137.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042137.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042137.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042136.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.103, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042136.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.29, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042137.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042138.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042138.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042138.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042140.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042140.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042140.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042141.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042141.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042141.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042143.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042145.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042145.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042144.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042145.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042142.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.964, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042145.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042146.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042145.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.324, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042141.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.173, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042147.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042149.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042149.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042149.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042150.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042151.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.131, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042148.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042153.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042153.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042153.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042154.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042156.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042157.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042158.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042155.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.394, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042158.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042153.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.736, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042158.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042158.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042158.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042152.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.134, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042141.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.974, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042140.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.281, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042160.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042160.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042160.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042159.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042160.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042161.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042161.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042161.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042160.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042161.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042162.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042162.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042162.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042161.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.895, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.879, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042162.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042163.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042162.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042139.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.29, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042163.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042163.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042163.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042136.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.884, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042164.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042164.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042164.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.136, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042132.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.526, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042165.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042165.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042166.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042166.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042166.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042166.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042167.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042168.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042168.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042168.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042168.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042168.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042169.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042165.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.702, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042170.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042170.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042170.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042170.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042171.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042170.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.019, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042172.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.627, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042173.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042173.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042173.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042174.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042174.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042174.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042174.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042174.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042175.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042176.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042176.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042176.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.012, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042176.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.148, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042177.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042178.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042179.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042179.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042179.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042179.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042181.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042181.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042181.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042182.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042182.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042182.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042183.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042184.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042185.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042182.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042185.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042185.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042185.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.271, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042181.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.146, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042187.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042187.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042188.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042188.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042188.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042189.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042190.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042188.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.011, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042191.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042187.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.558, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042193.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042193.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042193.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042195.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042194.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042195.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042195.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042196.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042196.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042196.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042195.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042196.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042193.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.916, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042192.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.371, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.0, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042198.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042197.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042180.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.419, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042198.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042198.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042198.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042199.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042200.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042200.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042200.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042200.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042200.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042179.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.612, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042178.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.006, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042201.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042176.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.991, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042202.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042202.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042202.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042173.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.63, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042173.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.912, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042203.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042203.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.359, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042205.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042205.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042204.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041955.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 250.017, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042205.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995041909.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 296.655, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042206.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042209.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042210.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.336, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042211.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042212.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042213.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042213.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042214.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042214.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042214.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042214.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042214.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042215.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042217.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042217.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042216.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042207.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.409, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042217.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042218.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042218.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042219.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042220.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042221.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042222.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042222.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042222.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042222.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042217.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.824, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042222.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042223.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042223.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042223.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042224.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042225.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042226.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042226.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042226.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042226.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042226.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.913, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042225.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.08, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042227.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042227.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042227.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042227.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042229.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042229.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042230.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042230.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042231.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042231.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042233.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042234.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042232.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.155, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042236.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042235.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.181, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042231.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.238, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042236.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042238.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042238.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042238.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042238.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042239.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042240.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.053, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042242.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042241.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.617, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042237.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.519, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042242.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042242.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042244.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042245.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042243.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.873, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042246.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042242.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042231.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.995, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042229.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.227, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042249.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042249.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042249.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042247.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.614, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042249.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042249.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042250.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.423, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042228.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042251.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042252.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042225.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.666, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042252.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042252.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042252.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042223.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.523, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042223.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.903, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042253.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042254.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042254.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042254.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042254.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042254.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042255.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042256.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042256.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042256.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042256.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042256.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042257.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042257.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042258.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042258.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042253.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.955, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042253.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.311, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042259.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042259.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042259.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042259.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042217.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.075, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042206.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 53.425, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042261.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042262.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042263.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042263.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.252, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042263.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042263.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042264.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042264.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042264.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042264.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042265.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042265.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042265.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042265.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042265.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042266.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042266.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042263.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.108, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042267.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042269.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042269.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042269.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042269.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042269.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042270.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042270.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042270.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042271.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042271.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042271.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042271.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042271.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042270.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042273.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042273.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042273.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042275.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042275.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042275.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042276.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042277.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042277.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042277.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042278.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042279.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042276.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.012, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042280.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042280.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042280.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.063, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042275.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042281.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042281.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042281.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042282.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042282.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042282.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042282.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042283.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042284.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042285.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042282.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.965, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042286.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042286.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042286.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042281.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.462, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042286.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042288.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042288.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042288.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042288.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042288.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042289.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.983, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042291.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042290.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042287.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.363, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042291.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.637, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042291.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042291.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042274.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042292.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042293.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042293.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042293.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042294.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042293.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042294.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042295.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042295.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042295.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042294.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042273.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.09, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042295.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042296.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042295.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042272.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.381, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042296.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042296.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042296.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042270.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.047, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042297.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042297.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042297.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042268.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.056, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042298.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042299.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042300.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042297.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.236, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042301.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042301.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042303.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042303.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042303.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042304.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042301.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.316, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042306.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042306.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042305.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042306.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042307.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042308.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042308.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042308.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042308.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042309.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042310.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042310.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042310.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042313.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042313.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042313.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042315.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042316.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.152, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042318.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042317.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.05, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042314.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.037, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042320.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042320.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042320.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042321.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042323.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.037, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.62, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042319.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.5, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042325.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042325.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042325.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042326.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042327.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042325.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.957, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042328.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042324.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.295, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042313.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.816, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.09, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042331.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042331.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042331.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042329.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.618, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042331.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042331.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042332.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042311.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.085, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042310.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.343, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042333.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042334.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042334.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042308.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.889, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042334.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042334.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042306.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.555, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042306.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.82, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042336.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042337.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042335.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.132, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042340.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042340.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042340.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042340.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042341.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042339.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.513, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042342.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042343.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042343.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042344.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042345.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042345.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042345.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.821, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042345.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.932, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042346.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042349.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042349.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042349.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042349.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042350.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042350.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042352.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042353.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042351.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.029, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042354.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042350.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042355.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042355.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042355.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042356.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042356.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042356.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042357.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042357.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042357.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042356.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042357.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042358.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042358.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042359.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042356.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.186, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042360.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042355.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.52, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042362.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042362.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042362.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042362.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042363.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042364.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042365.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042365.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042365.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042361.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.418, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042365.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042350.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.722, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042367.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042367.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042367.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042349.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.147, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042367.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042367.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042368.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042369.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.287, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042348.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042370.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042345.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.985, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042371.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042371.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042371.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042343.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.573, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042343.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.868, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042373.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042374.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042375.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042376.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042372.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.98, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042376.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042376.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042376.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042377.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042377.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042377.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042377.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042377.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042376.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.088, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042379.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042379.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042378.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042379.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042380.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042381.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042381.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042382.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042382.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042381.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042381.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042383.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042383.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042383.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042383.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042385.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042385.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042385.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042387.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042387.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042387.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042387.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042388.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042389.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042390.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042387.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.88, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042390.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042390.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042390.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.136, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042391.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042391.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042391.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042392.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042392.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042392.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042392.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042394.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042395.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042392.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.162, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042396.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042391.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.509, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042398.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042398.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042398.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042398.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042399.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042402.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042400.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.429, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042397.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.179, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042402.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042386.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.321, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042402.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042402.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042385.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.613, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042403.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042405.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042405.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042405.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042404.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.729, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042405.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042405.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042384.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.087, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042381.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.56, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042407.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042406.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042379.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.976, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042379.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.225, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042407.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042408.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042409.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042409.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042410.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042411.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042407.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.04, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042412.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.758, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042413.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042415.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042416.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042416.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042417.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042417.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042417.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042416.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.878, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042416.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.954, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042418.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042418.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042418.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042418.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042419.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042419.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042423.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042425.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042425.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042424.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042425.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042422.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.918, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042425.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042426.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042425.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.139, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042426.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042426.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042427.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042427.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042427.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042429.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042430.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042427.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.289, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042432.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042431.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042426.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042432.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042432.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042434.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042436.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042436.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042435.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042436.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042433.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.633, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042432.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.039, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042421.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.415, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042439.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042438.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042439.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042439.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042439.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042440.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042441.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042441.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042441.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042441.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042441.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042420.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.768, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042419.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.059, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042442.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042416.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.52, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042443.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042443.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042443.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.939, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042414.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.196, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042443.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042444.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042445.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042445.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042446.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042443.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.629, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042448.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042449.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042450.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042447.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.604, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042260.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 190.279, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042450.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042206.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 244.56, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042451.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042452.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042452.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042452.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042453.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042453.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042454.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042454.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042454.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042455.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042456.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042451.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.655, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042458.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042458.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042458.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042458.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042458.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042459.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042460.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.376, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042461.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042461.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042461.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042462.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042463.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042463.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042463.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042463.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042464.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042464.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042464.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042464.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.899, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042465.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042466.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042466.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042466.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042466.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042468.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042468.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042468.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042469.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042469.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042469.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042471.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042473.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042474.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042474.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042472.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042474.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042470.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.127, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042474.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042475.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042474.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.247, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042469.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.191, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042475.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042477.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042477.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042477.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042477.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042478.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.114, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042480.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042479.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042476.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.494, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042480.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042480.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042482.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042482.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042482.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042483.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042483.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042483.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042484.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042481.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.15, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042486.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042485.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042480.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.459, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042486.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042469.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.158, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042486.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042486.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042486.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042468.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.476, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042488.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042488.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042488.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042487.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042488.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042488.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.577, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042489.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042467.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.88, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042490.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042490.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042491.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042464.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.606, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042491.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042492.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042491.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042462.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.391, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042462.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.689, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042492.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042493.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042494.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042495.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042492.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.358, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042492.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.687, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042496.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042496.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042496.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042496.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042457.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.421, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042451.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.86, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042498.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042498.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042498.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042499.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042499.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042499.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042499.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042499.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042500.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042501.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.818, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042501.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042501.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042502.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042503.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042501.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.07, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042505.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042505.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042504.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.628, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042505.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042506.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042506.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042506.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042506.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042506.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042507.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042507.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042508.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042508.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042508.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042508.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.014, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042509.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042510.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042510.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042512.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042512.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042512.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042513.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042513.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042513.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042513.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042514.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042515.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042513.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.019, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042517.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042516.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.079, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042512.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.942, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042518.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042520.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042520.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042521.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042522.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.204, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042519.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042523.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042525.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042526.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042526.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042526.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042526.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042526.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042527.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042527.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042527.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042529.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042528.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042524.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.334, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042529.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042512.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.061, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042529.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042529.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.412, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042530.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042531.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042531.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042531.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042531.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042531.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042511.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.664, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042533.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042532.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042510.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.996, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042533.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042533.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042533.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042508.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.574, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042534.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042534.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042534.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042505.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.094, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042505.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.338, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042535.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042536.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042537.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042538.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042535.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042540.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042539.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.69, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042542.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042542.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042542.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042542.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042541.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.438, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042543.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042544.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042545.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042545.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042545.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042545.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.95, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042546.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042547.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042547.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042547.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042550.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042550.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042550.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042551.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042553.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042554.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042554.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042552.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042554.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042550.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.057, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042554.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042555.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042554.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.024, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042555.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042557.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042557.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042557.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042557.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042557.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042558.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042560.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042559.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042556.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.453, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042560.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042560.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042562.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042562.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042562.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042563.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042563.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042563.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042564.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042561.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.053, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042565.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042560.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.343, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042549.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.736, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.955, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042567.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042567.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042567.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042566.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042567.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042567.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042569.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042568.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042548.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.058, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042569.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042569.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042569.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042547.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042569.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042570.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042572.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042545.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.146, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042572.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042573.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042572.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042543.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042543.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.031, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042573.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042573.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042574.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042575.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042573.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.828, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042577.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042577.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042577.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042577.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042577.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042578.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042579.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042576.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.38, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042579.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042579.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.366, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042581.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042583.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042583.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042583.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.874, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.0, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042583.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042584.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042583.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042584.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042584.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042587.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042587.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042587.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042589.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042589.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042590.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042588.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042590.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042590.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042590.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042587.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.034, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042592.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042591.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.898, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042592.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042594.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042594.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042594.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042594.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042594.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042595.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.999, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042597.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042596.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042593.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.422, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042597.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042597.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042598.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042598.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042598.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042599.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042599.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042600.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042601.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042598.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.231, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042602.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042597.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.538, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042586.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.755, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.991, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042604.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042604.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042604.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042603.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042604.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042604.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042606.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042606.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042605.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042585.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.047, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042606.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042607.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042606.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042584.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.355, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042608.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042608.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042608.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042582.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.789, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042608.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042608.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.234, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042580.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.454, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042610.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042611.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042609.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.66, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042613.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042613.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042613.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042613.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042613.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042614.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042612.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.908, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042616.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042618.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042618.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042618.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.873, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.986, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042618.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042619.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042619.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042619.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042619.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042621.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042621.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042621.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042623.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042624.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042625.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.089, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042627.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042626.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.047, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042622.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.956, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042629.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042629.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042629.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042629.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042630.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.039, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042632.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042631.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042628.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.425, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042632.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042632.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042633.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042634.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042634.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042634.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042634.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042635.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042636.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042634.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.219, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042637.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042632.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042621.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.661, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.921, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042639.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042639.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042639.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042638.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042639.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042639.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042641.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042641.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042640.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042620.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.005, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042642.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042642.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042642.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042619.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.338, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042617.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.727, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042643.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.131, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042615.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.375, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042645.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042646.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042647.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042644.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.794, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042647.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042647.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042647.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042648.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042648.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042648.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042648.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042648.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042649.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042649.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042647.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.699, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042653.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042653.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042653.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.981, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042653.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042654.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042653.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042654.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042654.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042656.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042656.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042656.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042657.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042657.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042657.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042657.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042658.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042658.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042658.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042658.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042658.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042659.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042659.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042659.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042660.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042657.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.009, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042662.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042661.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.121, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042656.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.898, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042662.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042664.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042664.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042664.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042664.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042664.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042665.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.084, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042667.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042666.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042663.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.458, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042668.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042668.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042670.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042671.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042669.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.988, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042672.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042668.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.377, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042656.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.564, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042674.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042674.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042674.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042673.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042674.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042674.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042677.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042675.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042655.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.956, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042677.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042677.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042677.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042654.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.309, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042678.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042678.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042678.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042652.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.768, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042678.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042678.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042651.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.11, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042650.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.392, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042680.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042681.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042679.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.711, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042683.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042683.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042682.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.32, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042684.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042686.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042688.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.937, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042688.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042688.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042688.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042688.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042691.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042691.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042691.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042692.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042692.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042692.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042693.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042693.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042692.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042693.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042694.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042694.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042694.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042694.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042695.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042696.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042692.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042696.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042696.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042696.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.969, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042691.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042697.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042697.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042697.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042697.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042698.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042698.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042698.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042698.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042699.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042700.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042698.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.93, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042701.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042701.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042701.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042697.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.218, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042701.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042703.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042703.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042703.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042704.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042704.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042704.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042705.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042706.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042707.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042704.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.053, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042707.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042707.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042707.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042703.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.633, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042707.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.058, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042708.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042708.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042708.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042690.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.274, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042708.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042708.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042709.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042710.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.553, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.162, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042689.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.524, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042712.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042687.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.858, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042713.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042713.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042713.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042685.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.617, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042715.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042715.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042715.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042715.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042714.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042497.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 218.168, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042715.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042451.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 264.786, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042716.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042717.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042717.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042717.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042717.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042717.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042718.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042719.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042720.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042721.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042716.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.291, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042722.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042722.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042722.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042723.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042724.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042722.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.315, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042726.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042725.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042726.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042727.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042728.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042728.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042729.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042729.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042729.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.016, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042730.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042731.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042731.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042731.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042732.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042732.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042732.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042734.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042734.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042734.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042735.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042736.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042734.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.067, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042738.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042737.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.016, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.944, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042739.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042741.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042741.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042741.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042742.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042743.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.209, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042740.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.609, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042745.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042745.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042745.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042747.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042747.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042747.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042746.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042747.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042748.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042748.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042745.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.059, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042750.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042749.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042744.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.447, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042750.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042733.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.026, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042750.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042750.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042750.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042732.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.366, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042751.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042751.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042751.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042751.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042751.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042753.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042753.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042753.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042752.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042732.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.65, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042753.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042754.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042753.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042731.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.965, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042754.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042754.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042754.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042729.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.56, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042755.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042755.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042755.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042726.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.12, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042726.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.47, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042756.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042757.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042757.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042757.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042757.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042757.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042758.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042759.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042760.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042760.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042760.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042756.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.505, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042755.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.822, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042760.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042722.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.222, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042716.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.18, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042762.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042763.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042764.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042764.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042764.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.786, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042766.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042766.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042766.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042766.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042766.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042767.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042768.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042765.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.055, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042770.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042770.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042770.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042770.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042770.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042771.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042771.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042771.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042772.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042772.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042772.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042772.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042772.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042771.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.994, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042774.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042774.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042774.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042774.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042776.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042776.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042776.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042776.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042777.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042777.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042777.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042778.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042778.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042778.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042778.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042779.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042781.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042780.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042781.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042778.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.938, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042781.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042781.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042781.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.087, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042777.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.832, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042782.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042782.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042782.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042783.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042783.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042784.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042784.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042785.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042786.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042783.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.155, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042787.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042782.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.519, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042789.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042789.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042789.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042789.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042790.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042791.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.102, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042788.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.353, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042777.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.622, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042794.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042793.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042776.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.936, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042794.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042794.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042794.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042795.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.169, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042797.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042797.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042796.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042775.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.543, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042797.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042797.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042797.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042771.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.321, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042798.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042798.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042798.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042769.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.204, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042800.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042801.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042802.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042799.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.909, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042803.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042803.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042803.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042803.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042804.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042805.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042803.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.693, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042807.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042808.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042809.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042809.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042810.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042810.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042810.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042809.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042809.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.001, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042810.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042811.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042811.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042811.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042811.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042812.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042812.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042812.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042812.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042815.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042815.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042815.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042815.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042815.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042816.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.042, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042818.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042817.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.035, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042814.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.913, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042821.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042821.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042821.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042822.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042823.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.086, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042820.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.505, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042827.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042827.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042827.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042826.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042827.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042828.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042828.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042828.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042825.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.949, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042829.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042824.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.281, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.555, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042813.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.876, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042831.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042831.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042831.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042830.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042831.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042831.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042832.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042812.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.856, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042811.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.186, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042833.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042834.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042834.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042809.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.737, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042834.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042834.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042834.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.245, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042806.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.474, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042837.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042838.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042839.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042836.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.903, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042841.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042840.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.363, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042842.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042843.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042844.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042844.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042844.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042844.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042845.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042845.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042845.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042845.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042846.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042846.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042846.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042847.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042846.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.972, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042846.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.111, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042847.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042847.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042847.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042847.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042849.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042849.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042849.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042849.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042850.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042850.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042850.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042851.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042851.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042851.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042851.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042852.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042853.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042855.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042851.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.982, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042855.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042855.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042855.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.179, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042850.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.953, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042856.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042856.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042857.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042857.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042857.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042858.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042859.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042857.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.092, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042860.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042856.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.574, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042862.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042862.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042862.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042863.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042863.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042862.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042863.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042864.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042864.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042864.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042864.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042865.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042862.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.069, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042861.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.349, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042850.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.779, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042867.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042866.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042849.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.089, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042867.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042867.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042867.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042868.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042869.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.123, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042848.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042870.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042845.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.07, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042872.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042872.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042872.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042843.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.372, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042843.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.58, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042873.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042874.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042872.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.82, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042876.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042876.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042876.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042876.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042876.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042875.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.954, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042878.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042878.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042878.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042878.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.122, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042877.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.339, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042879.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042880.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042882.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042883.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042883.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042883.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042884.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042884.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042884.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042884.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042885.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042885.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042885.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042887.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042888.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042886.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.212, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042891.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042890.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.13, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042885.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.176, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042891.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042893.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042893.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042893.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042893.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042894.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.058, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042896.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042895.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042892.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.546, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042896.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042896.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042898.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042898.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042899.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042899.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042899.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042899.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042900.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042897.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.181, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042902.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042901.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042896.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.495, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042902.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042885.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.059, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042902.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042902.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042902.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042884.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.339, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042904.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042904.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042904.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042903.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042904.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042904.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042883.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.442, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042905.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042883.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042906.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042907.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042907.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042881.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.277, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042907.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042907.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042879.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042879.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.949, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042909.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042910.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042908.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.896, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042912.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042911.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.743, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042914.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.167, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042913.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.399, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.919, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042917.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042918.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042918.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042918.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042918.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042920.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042920.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042920.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042922.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042923.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042924.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042924.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.01, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042926.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042925.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.005, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042921.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042926.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042928.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042928.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042928.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042928.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042929.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042930.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.291, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042927.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.64, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042932.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042932.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042932.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042933.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042933.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042934.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042934.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042933.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.617, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042934.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042934.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042934.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042935.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042932.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.088, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042937.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042936.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042931.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.417, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042937.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042920.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.787, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042937.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042937.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042937.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.061, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042939.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042939.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042939.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042938.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042939.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042939.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042919.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.07, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042940.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042918.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.331, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042942.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042942.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042942.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042916.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.703, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042942.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042942.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.084, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042915.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.319, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042944.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042945.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042943.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.706, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042946.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.423, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042948.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042948.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042948.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042948.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042947.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.36, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042949.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042949.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042950.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042951.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042951.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042951.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042951.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.913, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042952.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042955.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042955.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042955.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042956.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042956.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042956.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042956.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042958.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042957.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042958.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042958.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042959.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042959.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042959.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042958.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042959.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042956.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.975, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042960.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042960.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042960.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.185, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042955.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.938, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042961.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042961.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042961.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042962.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042962.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042962.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042962.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042963.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042965.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042964.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042965.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042962.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.938, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042965.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042965.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042965.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042961.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042967.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042967.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042967.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042967.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042967.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.212, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042969.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042969.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042969.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042970.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.675, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042971.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042966.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.975, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.287, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042954.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.558, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042973.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042973.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042973.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042972.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042973.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042973.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042974.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.596, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042953.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042975.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042976.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042977.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042951.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.108, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042977.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042977.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042977.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042949.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.564, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042949.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.791, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042979.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042980.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042978.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.858, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042981.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.137, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042982.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042983.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042983.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042984.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042984.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.832, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042986.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.955, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042988.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042988.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042988.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042988.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042991.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042991.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042991.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042991.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042991.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042993.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042993.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042993.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042992.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042994.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.928, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042994.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042995.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042994.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.184, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042990.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.891, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042996.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042996.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042996.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042996.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042997.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042997.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042997.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042998.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042999.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042997.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.056, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042996.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.508, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043001.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043001.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043001.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043002.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.621, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043004.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043001.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.9, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043006.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043005.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043000.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.235, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043006.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.574, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043006.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043006.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043006.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042989.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.915, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043008.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043008.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043008.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043007.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043008.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043008.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042988.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.011, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043009.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042987.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.234, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043010.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043010.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043010.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042985.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.636, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043011.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043011.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042983.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.915, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042983.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.178, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043013.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043014.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043012.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.8, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043016.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043017.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043017.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043017.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043017.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043018.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043018.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043018.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043015.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.109, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042761.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 256.95, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043019.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995042716.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 303.168, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043019.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043020.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043020.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043020.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043021.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043022.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043020.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.685, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043024.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043024.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043024.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043024.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043025.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043026.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043027.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043027.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043027.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043027.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043024.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.478, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043028.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043029.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043029.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043030.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043031.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043031.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043031.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.012, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043032.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043033.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043033.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043033.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043034.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043034.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043034.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043035.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043035.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043035.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043036.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043036.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043036.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043036.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043037.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043037.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043037.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043038.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043037.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043038.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043038.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043038.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043039.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043036.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.114, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043041.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043040.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043035.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.137, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043043.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043043.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043043.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043044.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043045.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043046.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043046.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043046.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043042.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.487, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043047.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043047.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043048.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043048.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043048.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043049.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043049.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043049.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043049.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043050.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043048.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.219, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043052.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043052.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043051.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043047.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.599, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043052.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043035.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.281, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043052.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043053.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043052.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043034.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043053.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043053.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043053.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043055.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043054.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043055.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043056.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043056.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043056.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043055.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043033.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.932, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043033.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.284, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043057.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043031.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.881, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043058.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043058.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043058.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043029.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.522, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043029.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.887, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043060.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043061.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043062.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.883, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043059.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.167, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043062.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043062.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043062.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043062.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043023.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.03, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043019.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.334, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043065.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043066.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.685, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043067.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043067.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043067.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043067.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043068.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043069.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043070.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043070.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043067.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043070.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043071.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043071.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043071.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043071.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043070.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.458, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043074.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043074.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043074.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043075.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043074.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.923, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043074.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.061, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043075.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043075.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043075.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043075.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043077.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043077.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043077.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043077.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043078.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043078.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043081.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043081.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043080.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043082.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043082.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043082.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043083.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043083.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043082.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043083.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043079.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043083.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043084.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043083.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.182, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043078.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.019, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043084.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043084.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043085.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043085.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043085.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043086.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043087.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043085.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.16, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043089.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043088.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043084.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.546, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043089.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043089.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043089.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043090.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043090.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043091.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043091.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043092.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043093.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043094.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043090.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.929, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043094.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043094.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043094.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043089.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.354, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043094.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043078.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.869, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043095.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043095.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043095.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043077.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.142, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043095.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043095.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043096.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043097.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.258, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043098.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043098.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043098.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.003, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043076.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.034, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043100.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043100.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043100.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043073.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.803, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043100.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043101.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043100.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.446, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043072.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.697, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043101.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043102.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043103.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043101.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.686, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043105.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043105.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043105.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043105.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043105.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043106.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043106.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043106.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043106.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043107.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043107.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043104.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.784, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043109.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043108.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043109.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043109.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043110.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043111.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043111.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043111.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043111.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.922, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043112.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043114.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043114.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043114.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043114.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043116.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043116.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043116.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043117.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043118.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043116.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043118.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043118.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043118.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043119.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043116.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.235, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043120.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.023, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.019, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043121.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043121.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043123.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043124.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043122.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.967, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043125.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043121.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.262, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043127.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043129.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043129.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043129.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043129.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043130.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.018, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043132.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043131.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043128.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.389, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043132.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043115.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.576, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043132.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043132.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043114.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043133.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043136.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043136.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043136.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043134.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.873, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043136.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043137.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043136.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043113.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.188, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043137.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043137.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043137.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043111.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.651, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043138.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043138.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043138.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043109.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.088, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043109.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.34, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043138.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043139.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043140.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043138.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.523, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043142.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043142.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043143.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043143.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043143.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043144.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043141.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.503, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043146.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.958, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043148.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043149.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043149.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043149.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043150.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043150.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043150.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043152.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043153.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043153.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043153.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043154.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043155.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043153.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.976, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043157.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043156.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.993, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043157.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043157.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043159.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043161.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043161.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043160.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043162.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043158.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.955, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043162.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043162.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043162.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043157.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.328, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043164.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043164.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043164.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043164.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043165.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.965, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043167.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043167.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043166.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043163.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.351, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043167.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043151.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.317, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043167.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043167.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043150.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043168.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043169.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043170.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043170.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043170.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043169.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.541, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043170.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043171.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043171.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043171.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043170.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043150.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.547, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043171.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043171.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043149.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.844, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043147.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.15, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043173.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043172.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.492, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043145.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.743, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043173.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043173.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043174.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043175.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043176.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043176.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043173.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.67, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043177.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043177.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043177.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043178.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043178.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043178.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043178.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043178.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043177.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.022, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043179.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043180.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043180.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043181.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.902, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043184.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043184.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043184.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043185.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043185.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043185.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043185.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043186.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043187.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043187.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043188.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043188.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043188.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043188.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043189.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043190.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043191.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043188.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043191.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043191.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043191.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043187.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.942, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043192.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043192.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043192.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043193.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043193.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043193.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043193.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043194.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043196.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043197.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043195.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043197.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043193.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.01, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043197.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043197.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043197.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043192.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.436, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043199.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043199.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043199.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043199.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043199.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043200.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043202.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043201.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043198.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.324, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043202.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043186.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.709, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043202.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043203.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043202.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043185.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.906, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043203.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043203.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043203.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043203.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.839, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043205.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043184.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.173, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043206.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043183.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.463, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043182.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.805, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043208.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043207.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043180.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.2, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043180.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.423, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043208.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043209.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043210.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043211.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043211.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043212.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043212.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043208.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.692, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043212.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043212.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043213.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043213.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043213.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043213.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043213.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043212.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.809, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043214.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043215.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043215.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043215.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043217.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.887, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043219.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043219.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043219.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043219.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043220.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043220.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043221.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043221.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043223.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043223.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043223.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043223.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043224.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043225.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.132, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043226.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043226.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043226.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043222.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.073, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043227.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043227.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043227.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043227.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043228.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043228.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043228.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043228.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043230.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043229.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043230.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043230.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043230.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.136, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043228.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.483, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043232.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043227.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043234.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043234.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043234.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043235.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043236.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043234.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.03, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043233.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043221.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.272, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043238.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043237.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043220.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.539, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043238.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043239.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043239.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043240.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043238.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043240.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043240.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043240.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043241.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043219.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.725, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043218.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.029, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043242.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043243.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043216.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.242, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043243.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043243.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043243.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043215.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.515, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043215.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.768, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043245.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043246.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043246.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043246.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043246.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043247.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043247.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043247.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043244.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.631, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043247.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043248.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043248.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043248.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043248.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043248.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043247.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.446, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043249.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043250.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043250.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043250.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043252.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.957, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043254.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043254.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043254.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043255.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043255.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043255.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043255.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043256.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043258.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043258.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043258.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043259.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043260.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043261.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.129, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043261.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043261.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043261.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.02, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043257.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.009, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043262.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043262.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043262.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043263.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043263.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043263.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043263.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043264.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043266.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043267.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043267.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043265.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043267.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043263.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.343, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043267.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043268.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043267.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043262.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.833, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043268.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043268.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043268.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043269.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043269.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043269.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043269.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043270.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043271.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043269.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.418, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043273.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043272.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.64, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043268.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.972, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043273.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043256.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.8, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043273.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043274.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043273.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.604, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043255.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.105, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043274.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043274.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043274.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043275.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043274.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043276.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043276.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043276.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043276.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043276.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.852, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043277.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043277.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043277.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043277.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043277.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043254.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.496, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043278.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043278.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043278.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043253.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.915, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043278.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043278.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043279.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043251.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.314, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043279.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043279.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043279.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043250.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043250.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.96, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043281.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043282.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043280.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.48, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043284.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043285.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043286.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043286.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043286.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043286.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043283.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.651, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043064.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 222.38, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043286.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043019.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 267.537, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043287.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043288.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043288.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043288.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043288.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043288.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043289.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043291.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043291.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.513, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043290.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.837, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043287.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.788, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043293.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043293.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043293.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043293.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043294.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043295.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.483, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043296.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043298.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043299.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043299.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043300.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043300.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043301.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043301.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043300.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.93, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043299.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.071, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043303.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043303.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043303.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043304.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043304.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043304.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043304.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043305.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043305.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043307.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043309.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043308.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043309.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043306.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.998, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043309.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043310.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043309.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.1, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043305.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.016, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043310.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043310.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043311.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043312.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043312.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043313.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043314.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043312.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.354, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043316.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043315.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043310.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043316.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043316.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043316.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043317.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043317.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043317.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043317.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043318.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043319.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.565, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043320.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043317.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.783, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043321.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043321.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043321.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043316.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.226, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043321.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043305.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043322.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043322.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043322.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043304.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.222, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043322.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043322.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043323.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043324.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043303.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.422, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043302.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043325.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043299.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.475, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043326.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043326.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043326.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.157, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043297.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.477, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043328.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043329.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043330.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043331.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043331.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.009, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043327.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.275, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043331.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043331.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043292.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.442, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043287.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.8, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043333.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043334.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043335.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043336.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.569, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043336.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043336.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043336.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043337.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043338.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043336.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.904, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043339.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.614, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043340.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043340.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043341.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043343.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.888, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043343.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043343.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043343.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043344.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043346.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043346.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043349.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043350.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043348.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043352.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043351.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.859, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043352.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043352.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043353.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043353.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043353.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043354.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043354.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043354.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043354.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043354.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.601, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043355.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043355.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043355.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043356.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043353.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.131, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043358.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043357.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043352.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.526, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043358.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043358.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043358.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043359.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043359.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043359.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043359.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043360.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043362.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043361.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043362.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043359.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.052, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043362.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043362.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043362.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043358.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.84, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043364.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043347.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.228, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043364.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043364.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043346.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.599, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043365.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043367.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043367.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043367.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043366.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.84, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043367.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043368.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043367.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043345.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.236, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043368.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043368.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043368.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043342.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.905, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043369.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043369.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043369.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043340.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.45, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043340.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.742, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043371.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043371.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043371.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043371.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043371.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043372.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043372.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043372.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043372.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043373.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043370.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.813, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043375.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043374.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.55, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043376.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043378.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043379.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043380.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043380.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043381.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043379.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043379.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.827, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043381.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043381.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043381.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043381.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043383.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043383.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043383.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043384.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043384.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043384.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043386.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043387.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043385.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.097, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043389.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043388.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043384.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.881, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043389.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043389.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043391.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043391.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043391.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043392.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043393.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043391.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.211, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043395.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043394.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043389.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.487, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043395.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043395.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043395.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043396.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043396.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043396.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043396.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043397.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043399.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043398.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.627, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043399.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043396.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043395.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.235, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043384.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.532, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043401.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043400.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043383.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043401.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043401.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043401.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043402.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043403.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043403.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043403.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043403.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043403.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.988, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043382.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.318, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043404.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043379.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.885, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043405.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043405.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043405.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.241, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043377.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.458, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043406.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043406.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043406.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043406.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043407.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043407.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043407.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043408.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043409.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043406.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.801, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043411.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043410.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.231, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043412.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043414.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043415.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043415.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043415.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.899, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043416.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043417.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043417.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043417.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043417.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043418.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043418.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043418.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043418.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043421.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.644, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043422.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.9, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043425.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043423.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.956, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043420.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043425.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043425.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043426.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043426.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043426.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043427.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043428.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043426.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.997, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043429.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043425.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.399, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043431.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043431.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043431.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043433.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043433.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043432.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043434.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043435.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043431.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.026, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043435.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043435.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043435.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043430.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043435.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.269, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043436.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043436.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043436.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043419.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.544, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043436.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043436.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043437.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043438.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043418.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.629, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043417.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.888, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043439.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043415.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.295, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043440.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043440.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043440.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043413.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.891, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043442.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.348, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043444.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043443.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.295, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043332.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 112.383, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043445.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043287.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 157.838, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043445.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043446.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043446.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043446.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043446.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043446.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043447.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043448.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043449.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043449.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043449.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043449.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043445.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.39, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043451.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043451.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043451.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043451.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043451.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043452.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043453.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.323, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043454.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043456.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043457.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043458.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043458.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043458.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043458.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.954, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043459.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043460.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043460.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043461.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043461.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043461.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043461.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043464.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043464.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043464.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043464.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043464.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043465.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.823, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043467.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043466.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.067, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043463.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.553, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043468.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043468.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043469.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043469.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043469.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043470.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043470.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043470.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043470.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043470.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043471.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043469.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.121, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043473.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043472.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043468.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.586, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043473.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043473.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043476.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043476.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043476.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043475.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043476.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043477.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043477.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043477.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043478.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043477.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043478.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043474.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.943, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043478.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043478.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043478.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043473.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.327, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.432, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043462.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043480.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043480.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043480.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043479.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043480.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043480.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043481.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043461.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.999, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043460.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.36, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043482.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043483.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043483.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043458.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.904, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043483.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043484.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043483.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043455.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.759, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043484.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043485.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043485.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043485.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043485.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043486.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043487.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043488.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043488.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043488.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043484.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.894, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043484.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.151, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043488.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043488.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043450.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.812, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043445.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.759, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043490.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043491.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043491.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043491.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043493.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.258, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043494.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043494.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043494.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043494.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043495.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043496.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043494.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.879, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043498.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043498.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043498.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043498.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043498.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043499.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043499.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043499.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043500.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043500.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043500.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043500.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043500.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043499.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.918, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043501.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043502.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043502.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043502.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043502.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043503.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043503.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043503.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043506.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043506.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043506.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043507.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043508.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.027, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043509.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043509.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043509.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.045, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043505.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.884, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043510.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043510.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043510.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043510.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043511.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043512.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043512.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043512.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043513.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043514.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043515.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043511.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.09, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043515.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043515.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043515.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043510.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.53, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043515.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043517.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043519.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043519.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043519.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043518.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043519.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.065, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043520.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043521.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043520.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043516.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.355, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043521.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.67, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043521.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043521.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043504.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.909, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043522.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043524.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043524.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043524.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043523.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043503.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.202, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043524.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043524.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043502.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.491, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043499.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.024, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043526.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043525.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.496, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043497.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.757, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043526.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043526.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043527.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043528.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043528.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043528.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043528.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043529.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043526.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.897, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043531.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043531.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043531.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043531.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043531.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043532.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043530.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.577, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043533.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043534.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043534.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043535.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043535.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043535.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043535.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043535.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043536.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043536.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043538.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043538.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043538.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043538.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043538.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043540.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043540.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043540.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043540.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043541.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043541.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043541.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043542.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043542.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043542.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043542.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043543.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043545.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043544.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043545.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043542.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.97, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043545.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043545.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043545.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043541.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043547.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043547.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043547.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043548.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043548.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043548.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043548.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043549.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043550.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043548.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.096, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043551.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043547.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.598, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043553.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043553.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043553.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043553.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043553.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043554.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043555.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043555.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.911, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043557.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043556.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043552.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.253, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043557.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043541.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.487, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043557.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043557.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043540.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043558.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043560.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043560.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043560.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043559.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.857, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043560.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043560.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043539.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.21, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043537.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.638, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043562.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043561.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043534.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.911, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043534.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.134, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043562.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043563.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043563.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043563.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043563.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043563.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043564.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043565.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043562.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.783, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043567.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043566.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.313, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043568.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043570.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043571.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043572.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043572.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043572.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.852, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043572.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.95, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043573.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043575.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043575.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043575.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043575.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043576.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043576.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043576.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043577.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043577.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043577.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043577.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043578.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043580.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043579.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043581.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043577.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.929, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043581.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043581.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043581.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.151, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043576.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043582.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043582.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043584.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043585.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043583.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043586.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043582.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.367, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043588.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043588.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043588.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043588.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043588.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043589.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043589.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043589.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.609, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043590.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.89, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043592.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043591.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043587.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.247, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043592.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043576.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.395, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043592.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043592.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043592.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043575.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.631, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043593.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043593.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043593.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043593.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043593.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043595.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043595.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043595.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043594.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.907, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043595.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043595.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043574.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.173, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043572.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.506, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043596.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.375, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043569.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.896, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043599.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043600.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043598.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.801, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043602.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043602.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043602.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043602.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043602.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043601.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.971, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043604.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.223, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043603.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.452, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043605.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043605.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043606.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043607.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043607.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043607.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.86, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043607.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043608.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043611.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043611.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043611.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043612.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043612.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043612.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043612.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043614.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043613.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043614.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043614.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043615.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043615.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043615.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043614.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043616.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043612.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.97, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043616.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043616.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043616.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.154, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043611.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.972, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043617.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043617.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043618.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043618.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043618.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043618.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043619.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043620.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043618.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.099, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043621.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043617.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.572, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043623.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043623.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043624.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043624.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043623.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.243, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043625.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043625.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043625.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043626.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.718, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043628.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043627.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043622.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.071, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043628.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.508, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043628.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043628.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043610.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043629.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043631.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043631.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043631.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043630.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.807, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043631.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043632.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043631.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043609.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.025, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043632.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043633.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043633.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043607.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.28, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043633.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043633.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043605.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043605.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.033, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043635.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043636.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043637.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043634.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.717, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043637.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043637.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043637.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043638.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043637.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.632, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043640.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043640.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.381, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043639.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.615, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043640.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043641.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043641.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043641.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043641.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043641.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043643.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043643.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043643.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043643.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043644.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043644.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043644.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043644.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043645.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043645.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043645.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043645.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043647.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043647.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043647.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043648.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043648.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043648.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043650.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043650.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043649.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043651.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043651.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043651.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043651.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043652.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043651.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043652.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043648.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.071, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043652.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043652.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043652.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.048, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043647.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.028, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043653.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043653.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043653.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043654.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043654.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043654.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043654.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043655.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043656.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043654.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043653.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.302, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043658.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043658.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043658.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043659.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043659.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.61, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043660.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043661.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043658.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.035, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043663.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043662.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043657.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.388, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043663.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.663, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043663.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043663.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043646.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.993, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043664.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043666.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043666.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043666.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043665.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043645.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.179, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043666.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043667.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043666.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.398, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043644.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.357, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043668.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043668.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043668.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043642.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.961, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043668.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043669.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043668.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043640.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.442, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043640.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.668, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043669.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043669.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043669.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043670.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043669.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.212, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043672.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043671.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.211, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043489.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 182.703, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043672.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043445.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 227.137, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043672.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043674.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043676.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043677.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.406, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043679.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043679.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043679.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043679.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043680.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043681.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.327, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043682.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043683.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043683.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043683.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043683.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043685.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043684.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043685.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043685.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043686.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043687.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043687.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043687.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.94, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043687.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.091, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043688.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043689.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043689.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043689.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043690.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043690.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043690.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043692.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043692.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043692.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043694.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043695.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043695.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043693.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043695.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043695.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043695.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043692.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.138, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043697.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043696.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.016, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043697.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043699.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043699.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043699.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043699.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043699.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043700.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.006, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043702.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043701.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043698.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.347, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043702.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043702.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043702.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043703.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043704.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043704.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043704.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043705.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043706.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043704.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.042, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043702.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.217, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043691.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.516, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043708.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043707.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043690.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043708.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043708.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043708.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043709.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043710.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043689.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.998, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043712.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043712.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043711.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043689.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.24, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043712.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043712.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043712.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043687.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.85, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043713.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043713.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043713.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043685.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.314, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043685.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.566, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043715.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043716.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.994, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043714.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.297, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043717.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043717.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043717.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043717.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043678.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.056, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.951, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043718.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043718.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043718.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043719.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043719.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043719.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043720.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043721.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043718.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.808, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043722.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043722.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043722.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043722.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043723.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043723.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043723.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043723.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043723.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043724.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043722.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.045, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043725.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043727.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043727.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043727.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043728.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043729.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043729.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043729.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.931, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043729.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043730.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043731.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043731.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043731.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043732.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043732.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043732.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043732.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043733.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043733.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043733.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043735.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043737.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043738.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043736.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043738.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043734.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.062, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043738.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043739.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043738.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043733.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.939, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043739.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043739.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043740.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043740.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043740.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043741.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043742.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043740.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043743.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043739.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.414, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043745.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043745.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043746.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043746.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043746.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043745.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043747.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043747.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043747.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043747.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043748.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043745.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.008, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043744.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.372, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043733.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.615, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043750.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043749.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043732.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043750.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043750.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043750.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043751.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043752.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043731.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.979, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043731.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.336, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043753.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043729.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.581, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043755.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043756.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043755.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043727.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.251, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043727.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.491, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043756.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043756.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043756.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043757.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043758.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043756.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.876, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043760.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043760.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043760.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043760.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043760.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043761.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043762.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043762.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043759.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.569, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043763.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043764.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043764.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043765.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043767.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043767.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043767.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043767.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043767.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043770.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043770.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043770.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043771.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043771.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043771.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043771.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043773.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043772.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043775.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043775.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043774.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043775.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043771.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.215, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043775.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043776.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043775.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043770.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.125, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043776.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043776.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043777.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043777.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043777.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043778.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043779.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043777.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.005, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043781.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043780.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043776.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.438, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043781.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043781.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043782.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043782.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043783.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043783.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043783.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043784.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043785.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043783.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.106, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043781.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.379, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.874, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043787.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043786.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043769.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.113, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043787.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043787.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043788.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043788.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043787.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043788.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043788.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043788.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043789.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.318, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043768.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.633, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043791.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043766.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.978, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043792.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043792.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043792.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043764.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.364, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043764.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.587, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043794.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043793.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.659, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043796.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043797.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043798.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043798.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043798.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043798.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043795.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.361, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043799.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043802.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043802.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043802.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.945, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043802.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043803.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043803.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043803.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043803.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043804.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043804.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043804.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043804.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043807.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043807.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043808.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043808.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043807.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043809.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043810.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.155, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043811.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043811.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043811.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.043, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043806.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.022, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043812.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043812.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043812.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043812.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043813.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043813.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043813.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043813.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043814.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043815.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043813.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.944, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043816.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043816.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043816.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043812.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.308, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043817.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043817.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043818.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043818.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043818.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043819.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043820.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043818.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.999, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043821.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043817.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.348, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.609, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043805.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.885, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043822.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043824.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043824.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043824.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043823.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043825.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043825.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043826.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043826.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043825.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043804.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.925, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043826.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043826.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043826.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043803.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.242, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043827.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043827.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043827.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043801.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.691, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043827.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043827.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.07, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043800.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.301, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043829.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043830.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043828.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.847, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043833.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043831.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.928, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043834.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043837.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043839.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043839.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043839.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043839.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043841.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043841.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043842.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043842.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043843.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043843.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043843.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043844.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043845.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043842.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.167, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043846.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043846.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043846.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043841.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.917, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043847.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043847.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043847.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043847.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043848.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043848.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043848.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043848.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043849.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043850.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043851.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043848.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043847.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.453, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043853.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043853.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043853.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043854.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043855.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043853.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.041, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043857.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043856.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043852.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.381, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043857.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.706, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043857.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043857.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043857.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043840.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.947, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043859.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043860.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043860.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043860.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043858.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043860.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043861.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043861.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043861.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043860.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043839.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.193, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043861.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043861.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043838.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.474, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043836.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.776, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043863.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043862.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.198, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043835.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.431, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043863.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043863.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043864.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043865.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043866.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043866.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043866.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043863.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.718, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043867.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043867.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043868.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043867.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.717, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.924, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043872.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043873.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043873.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043873.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043877.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043877.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043877.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043878.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043878.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043878.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043878.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043879.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043877.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.132, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043881.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043881.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043880.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.109, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043883.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043883.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043883.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043883.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043884.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043885.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043885.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043885.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043885.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043885.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.184, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043887.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.575, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043887.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043887.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043882.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.991, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043889.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043889.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043889.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043890.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043891.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043892.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043889.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043892.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043892.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043892.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043888.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.471, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043892.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043875.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.526, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043893.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043893.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043893.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043893.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043894.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043894.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043894.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043893.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043895.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043895.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043897.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043896.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043874.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.073, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043897.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043897.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043897.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043873.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.431, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043897.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043898.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043898.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043871.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.734, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043898.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043898.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043898.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043870.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.067, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043869.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.289, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043899.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.459, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043901.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043902.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043902.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043903.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043900.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.338, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043718.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 185.202, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043903.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043673.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 230.855, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043905.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043906.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043907.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.695, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043908.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043908.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043908.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043909.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043910.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043911.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043908.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.305, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043912.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043913.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043914.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043917.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043917.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043917.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043917.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043917.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.927, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.072, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043918.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043919.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043919.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043919.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043921.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043921.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043921.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043921.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043922.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043922.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043924.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043925.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043923.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043926.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.957, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043922.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043927.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043927.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043929.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043929.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043930.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043930.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043930.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043930.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043931.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043928.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.091, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043932.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043927.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.434, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043934.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043934.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043934.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043935.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043936.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.965, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043937.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043937.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043937.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.395, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043933.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.223, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043938.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043922.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.499, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043938.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043939.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043938.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043921.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043939.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043939.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043939.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043940.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.063, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043942.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043941.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043920.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.422, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043942.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043942.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043942.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043916.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.054, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043943.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043943.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043943.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.398, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043915.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.648, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043945.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043945.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043946.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043946.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043946.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043946.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043947.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043948.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043944.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.306, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043943.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.571, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043948.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043948.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043948.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043948.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043908.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.805, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.013, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043950.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043951.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.501, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043952.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043953.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043953.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043953.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043954.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043955.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043952.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.94, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043957.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043957.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043957.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043957.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043959.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.985, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043960.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043960.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043960.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043960.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043963.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043963.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043963.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043963.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043964.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043964.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043964.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043965.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043965.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043965.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043965.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043966.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043968.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043967.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043968.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043965.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.077, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043968.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043968.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043968.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.084, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043964.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.973, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043969.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043969.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043970.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043970.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043970.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043972.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043972.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043973.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043971.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043973.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043973.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043973.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043973.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043970.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.958, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043974.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043969.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.398, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043976.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043976.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043976.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043976.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043977.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.929, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043979.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043978.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043975.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.264, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043979.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043964.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.578, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043979.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043980.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043979.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043963.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043981.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043981.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043981.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043981.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043981.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043983.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043983.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043983.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043982.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.951, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043983.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043984.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043983.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043961.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.282, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043984.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043984.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043984.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043958.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.954, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043985.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043985.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043985.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043957.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.535, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043956.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.782, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043985.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043986.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043987.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043988.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043988.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043985.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.861, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043990.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043991.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043989.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.645, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043992.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043993.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043993.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043995.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043996.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043997.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043997.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043997.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043997.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043998.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043998.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043998.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044000.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044000.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044001.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044001.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044001.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044001.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044002.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044003.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044004.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044001.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.963, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044004.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044004.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044004.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044000.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.927, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044005.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044005.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044007.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044007.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044008.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044008.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044008.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044008.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044009.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044006.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.208, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044010.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044005.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.583, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044012.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044012.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044012.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044012.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044013.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.88, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044015.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044014.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.006, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044011.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.15, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043999.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.537, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044018.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044018.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044018.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044017.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044018.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044018.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044020.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044020.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044019.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043998.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.635, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044020.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044020.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044020.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043997.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.049, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044021.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044021.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044021.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043994.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.42, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044021.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044021.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043993.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043993.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.042, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044023.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044023.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044023.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044023.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044023.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044024.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044024.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044024.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044025.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044026.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044022.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.757, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044026.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044026.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044026.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044027.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044026.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.318, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044028.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044030.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.939, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044033.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044034.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044034.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044034.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044035.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044035.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044035.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044038.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044039.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044037.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.001, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044041.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044040.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044041.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044041.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044042.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044043.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044043.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044044.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044045.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044043.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044046.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044041.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.404, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044048.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044048.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044048.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044048.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044049.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044050.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.587, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044051.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.959, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044052.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044052.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044051.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044047.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.304, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044052.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044036.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.391, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044052.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044053.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044052.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044035.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044053.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044053.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044053.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044054.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044055.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044055.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044055.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044055.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044055.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044035.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.833, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044034.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.152, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044056.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044031.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.692, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044057.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044057.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044057.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.074, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044029.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.346, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044059.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044059.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044060.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044061.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044058.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.842, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044063.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044062.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.902, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044065.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044065.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044065.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044065.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044066.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044067.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044067.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044067.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044067.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044068.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.949, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044070.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044070.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044070.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044073.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044073.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044073.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044073.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044074.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044075.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.934, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044076.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044077.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044076.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.141, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044072.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044079.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044079.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044079.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044080.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044081.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.08, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044078.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.468, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044083.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044083.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044083.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044085.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044085.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044086.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044084.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.54, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044086.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044086.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044086.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044083.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.866, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044087.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044082.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.22, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.399, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044071.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.617, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044089.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044089.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044089.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044088.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044089.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044089.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044090.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044070.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.678, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044069.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044091.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044092.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044092.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044067.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.465, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044092.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044093.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044092.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044065.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.956, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044064.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.233, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044095.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044096.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044094.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.825, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044098.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044097.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.736, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044100.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044100.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044100.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044101.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044101.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044101.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044101.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044102.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044102.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044102.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044102.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044103.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044104.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044104.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044104.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044107.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044107.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044107.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044108.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044110.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044110.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044110.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044109.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044110.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044107.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.86, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044111.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044112.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044111.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044112.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044113.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044113.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044113.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044113.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044114.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044114.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044114.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044114.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044115.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044113.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.044, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044117.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044116.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044112.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.528, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044117.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044117.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044120.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044120.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044121.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044119.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044121.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044121.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044121.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044121.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044118.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.095, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044122.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044117.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.44, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044106.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.769, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.092, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044124.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044124.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044124.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044123.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044124.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044124.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044125.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044105.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.133, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044104.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.435, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044126.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044127.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044127.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044102.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.766, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044127.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044127.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044127.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.204, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044099.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.46, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044130.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044131.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044129.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.638, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044132.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.419, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044134.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044133.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044134.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044134.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044135.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044135.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044135.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044136.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044136.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044136.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044136.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044137.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.954, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044139.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044139.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044139.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044139.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044142.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044142.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044142.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044142.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044143.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044144.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.025, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044146.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044147.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044146.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.112, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044141.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.389, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044147.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044147.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044148.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044148.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044148.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044149.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044150.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044148.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.014, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044151.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044147.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.417, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044153.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044153.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044153.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044155.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044154.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.549, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044155.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044156.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044153.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.865, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044152.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.257, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.977, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044158.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044157.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044140.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.318, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044158.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044158.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044158.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044159.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044160.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044139.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.398, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044138.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.634, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044161.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044136.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.972, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044162.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044162.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044162.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044134.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.271, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044134.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.527, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044163.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044164.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043949.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 215.744, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044165.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995043904.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 261.449, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044165.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044167.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044173.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044173.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044173.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044174.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044174.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044174.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044174.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044174.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.51, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044176.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044176.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044176.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044177.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044178.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044179.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.549, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044180.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.593, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044191.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044192.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044192.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044192.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044192.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044192.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044193.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044193.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044195.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044196.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044196.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044196.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044195.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.951, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044194.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.22, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044197.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044197.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044197.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044198.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044199.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044199.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044201.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044201.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044202.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044202.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044202.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044203.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044203.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044205.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044205.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044206.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044206.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044205.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.073, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044206.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044206.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044206.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044207.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.822, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044209.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044208.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044204.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.418, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044210.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044210.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044211.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044211.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044211.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044213.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044214.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044214.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044212.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044214.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044214.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044214.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044211.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.236, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044216.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044215.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044210.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044216.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044216.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044218.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044219.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044220.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044217.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.885, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044220.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044220.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044220.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044216.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.251, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044220.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044203.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.597, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044221.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044221.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044221.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.385, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044202.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.102, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044222.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044223.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044223.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044223.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044222.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044223.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044223.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044225.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044225.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044224.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044201.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.015, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044225.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044226.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044225.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044198.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.116, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044226.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044226.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044226.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044194.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.482, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044227.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044227.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044227.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.876, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044181.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.395, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044228.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044228.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044228.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044229.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044229.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044229.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044230.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044231.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044231.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044232.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044232.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044232.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044232.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044233.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044233.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044233.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044233.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044228.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.523, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044228.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.908, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044234.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044234.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044234.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044234.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044175.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.294, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044166.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 69.358, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044236.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044237.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044238.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044238.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.892, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044238.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044238.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044239.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044239.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044240.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044240.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044240.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044241.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044241.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044241.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044242.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044238.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.603, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044243.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044244.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044245.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044246.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044246.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044247.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.081, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044248.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044248.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044248.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044248.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044250.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044250.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044250.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044251.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044251.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044253.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044254.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044254.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044254.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044255.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044256.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044254.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.162, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044258.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044257.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.278, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044253.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.4, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044259.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044259.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044259.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044259.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044260.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044260.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044260.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044260.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044261.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044263.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044262.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044263.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044260.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.975, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044259.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.417, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044265.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044265.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044265.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044266.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044267.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044265.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.909, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044269.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044268.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044264.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.259, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044269.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044251.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.156, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044269.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044269.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044269.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044250.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.429, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044270.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044270.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044270.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044270.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044270.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.588, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044271.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044272.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044272.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044272.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044271.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044272.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044272.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.588, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044273.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044249.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.938, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044274.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044274.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044274.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044246.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.803, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044274.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044275.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044274.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044244.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.961, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044244.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.272, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044275.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044275.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044276.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044277.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044278.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044278.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044278.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044278.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044278.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044279.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044275.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.969, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044280.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044280.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044280.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044280.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044280.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044281.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044279.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.718, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044282.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044284.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044286.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044286.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044286.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.903, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044286.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044287.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044286.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044287.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044287.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044289.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044289.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044289.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044289.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044292.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044292.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044292.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044292.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044292.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044293.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.931, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044295.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044294.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.087, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044291.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044297.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044297.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044298.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044298.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044297.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044298.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044298.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044299.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044299.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044298.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044300.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.221, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044296.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044302.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044302.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044302.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044302.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044303.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044304.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044302.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.97, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044306.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044305.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044301.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.295, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044306.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.686, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044308.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044308.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044308.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044290.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044308.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044309.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044309.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044309.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044308.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044309.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044309.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044310.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044289.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.952, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044287.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044311.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044312.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044312.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044285.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.749, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044312.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044312.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.411, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044283.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.712, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044314.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044315.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044315.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044316.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044317.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044317.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044313.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.927, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044317.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044317.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044318.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044318.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044318.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044318.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044318.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044319.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044317.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.408, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044321.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044323.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044323.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044323.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.849, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.947, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044323.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044324.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044324.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044325.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044325.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044326.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044326.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044326.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044326.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044329.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044329.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044329.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044329.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044329.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044330.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.961, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044332.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044331.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.054, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044328.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044334.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044334.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044335.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044335.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044334.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.623, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044336.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044337.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.121, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044333.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044339.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044339.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044339.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044340.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044341.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044339.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.054, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044343.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044342.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.406, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044338.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.356, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044344.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.664, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044344.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044344.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044327.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.162, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044345.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044347.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044347.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044347.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044346.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044326.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.325, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044347.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044347.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044325.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044322.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.085, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044349.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044348.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.535, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044320.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.78, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044349.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044349.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044350.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044351.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044351.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044352.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044349.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.034, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044354.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044354.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044354.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044354.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044354.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044355.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044353.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.949, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044357.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044358.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044358.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044359.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044359.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044359.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044358.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044358.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.923, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044360.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044360.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044360.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044361.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044361.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044362.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044362.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044362.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044363.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044363.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044363.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044363.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044364.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044364.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044365.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044365.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044365.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044366.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044366.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044366.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044366.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044365.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.93, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044366.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044367.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044368.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044365.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.503, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044369.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044369.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044369.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.123, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044364.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.622, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044370.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044370.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044370.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044371.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044372.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044372.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044372.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044373.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044374.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044372.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.639, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044376.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044375.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044370.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.141, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044376.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044376.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044378.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044380.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044380.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044380.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044379.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044380.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044377.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.143, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044381.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044382.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044381.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044376.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044382.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044364.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.397, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044382.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044382.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044363.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.848, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044383.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044385.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044385.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044385.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044384.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044362.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.04, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044385.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044385.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044361.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.459, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044358.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.115, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044387.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044386.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.581, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044356.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.825, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044387.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044387.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044387.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044388.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044388.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044388.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044388.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.322, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044235.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 154.03, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044389.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044165.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 224.277, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044390.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044391.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044391.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044391.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044392.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044392.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044392.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044392.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044392.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044393.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044394.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044391.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.328, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044396.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044396.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044396.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044396.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044396.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044397.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044398.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044399.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.451, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044401.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044401.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044401.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044401.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044401.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044402.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044402.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044402.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.885, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044403.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044404.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044404.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044404.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044404.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044406.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044406.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044406.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044407.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044407.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044407.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044409.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044409.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044409.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.636, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044410.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044410.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044410.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044411.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044408.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.092, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044413.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044412.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.145, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044407.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.067, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044413.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044415.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044416.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.908, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044418.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044417.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044414.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.288, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044419.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044419.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044419.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044420.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044420.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044420.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044420.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044421.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044422.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044420.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.901, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044419.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.277, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044407.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.589, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044424.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044423.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044406.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.887, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044424.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044424.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044424.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044425.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044426.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044426.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044426.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044427.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044426.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.08, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044428.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044428.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044427.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044405.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.459, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044428.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044428.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044428.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044402.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.237, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044429.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044429.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044429.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.918, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044400.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.215, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044431.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044432.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044433.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044433.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044433.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.307, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044430.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.571, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044433.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044433.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044434.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044434.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044395.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.808, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044390.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.58, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044436.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044437.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.917, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044439.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044439.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044439.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044439.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044439.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044440.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044438.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.092, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044442.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044442.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044443.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044442.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.866, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044441.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.217, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044444.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044445.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.28, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044446.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044446.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044446.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044446.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044447.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044448.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044448.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044448.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044450.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044450.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044450.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044452.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044452.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044452.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044452.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044452.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044453.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044455.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044456.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.43, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044456.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044456.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044456.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.159, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044451.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.392, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044457.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044457.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044459.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044460.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044458.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044461.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044457.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.38, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044463.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044463.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044464.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044463.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044465.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044466.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.176, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044462.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.504, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044450.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.252, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044468.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044467.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.523, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044468.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044468.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044468.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044468.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044469.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044449.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.561, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044471.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044470.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044448.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044472.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044472.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044472.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044446.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.481, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044473.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044473.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044473.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044444.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.247, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044444.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.502, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044475.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044474.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.755, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044477.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044477.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044477.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044477.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044477.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044478.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044479.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044476.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.524, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044480.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044481.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044481.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044482.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044483.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044483.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044483.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044483.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.944, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044484.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044486.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044486.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044486.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044487.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044487.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044487.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044489.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044489.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044489.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.604, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044490.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044490.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044490.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044491.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044488.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.041, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044493.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044492.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.067, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044487.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.984, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044493.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044493.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044494.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044494.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044494.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044495.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044496.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044494.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.009, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044498.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044497.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044493.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.376, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044499.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044499.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044499.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044499.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044500.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044500.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044500.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044500.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044501.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044502.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044503.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044500.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.087, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044503.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044503.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044503.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044499.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044503.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044487.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.815, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044504.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044504.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044504.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044486.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.13, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044504.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044504.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044506.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044506.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044505.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044506.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044506.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044507.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044507.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044506.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.64, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.141, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044508.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044508.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044508.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044485.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.481, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044508.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044508.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044509.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044483.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.02, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044509.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044509.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044509.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044481.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.561, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044481.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.786, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044511.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044512.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044510.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.924, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044513.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044513.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044513.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044513.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044514.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044514.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044515.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044515.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044515.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044515.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044513.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.39, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044516.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044518.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.948, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044520.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044522.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044522.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044522.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044522.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044523.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044523.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044524.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044524.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044524.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044525.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044525.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044526.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044527.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044524.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.246, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044529.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044528.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044523.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.061, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044529.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044529.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044530.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044530.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044530.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044531.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044533.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044533.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044533.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044532.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044533.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044530.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.835, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044534.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044534.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044534.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.604, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044529.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.26, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044536.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044536.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044536.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044537.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044538.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.096, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044535.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.443, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044523.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.683, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044540.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044539.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044522.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.943, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044540.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044540.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044540.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044542.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044541.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.968, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044544.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044543.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044521.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.245, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044544.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044544.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044544.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044519.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.661, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044545.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044545.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044545.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.056, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044517.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.323, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044547.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044548.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044546.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.893, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044549.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044550.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044550.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044550.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044550.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044551.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044549.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.152, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044552.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.876, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044555.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044556.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044556.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044556.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044556.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044557.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044557.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044557.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044557.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044561.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044561.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044561.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044561.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044562.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.978, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044564.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044564.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044563.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.057, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044560.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.969, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044566.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044566.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044566.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044567.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044568.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044568.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044568.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044569.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044569.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044568.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.573, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044569.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.895, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044570.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044570.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044569.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044565.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.346, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044570.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044570.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044571.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044571.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044571.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044571.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044572.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044573.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044571.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.986, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044574.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044570.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.596, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044558.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044576.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044576.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044576.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044575.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.257, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044578.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044578.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044578.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044578.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044579.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044557.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.594, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044556.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044580.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044554.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.162, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044581.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044581.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044581.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044553.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.95, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044583.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044584.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044585.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044585.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044582.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.847, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044586.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.79, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044587.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044589.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044590.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044590.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044590.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044590.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.916, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044591.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044592.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044592.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044592.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044593.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044593.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044593.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044594.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044595.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044595.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044595.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044596.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044596.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044596.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044597.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044598.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044596.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.004, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044600.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044599.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044595.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.974, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044600.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044600.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044601.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044601.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044601.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044602.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044602.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044602.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044602.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044602.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044603.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044604.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044604.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044601.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.155, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044606.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044605.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044600.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.616, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044606.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044606.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044608.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044609.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044607.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.088, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044610.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044606.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.444, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044595.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.96, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044593.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.159, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044612.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044613.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044613.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044611.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044613.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044614.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044614.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044614.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044613.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044614.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044615.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044615.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044615.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044614.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044593.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.387, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044615.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044615.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044592.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044590.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.996, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044616.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.528, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044588.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.786, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044617.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044618.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044435.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 183.44, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044619.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044390.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 228.807, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044619.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044620.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044621.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044621.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044622.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044623.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044620.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.489, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044625.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044625.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044625.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044625.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044625.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044626.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044627.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044628.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.227, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044630.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044632.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044632.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044632.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.844, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.973, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044632.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044633.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044632.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044633.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044633.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044634.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044634.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044634.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044634.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044637.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044637.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044637.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044637.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044638.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044639.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044640.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.064, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044641.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044641.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044641.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.084, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044636.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.0, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044643.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044643.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044643.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044643.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044644.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044645.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044642.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.406, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044649.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044650.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044647.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044652.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044651.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044646.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.494, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044652.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.841, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044652.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044652.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044652.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044635.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.107, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044653.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044653.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044653.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044653.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044653.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044655.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044655.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044655.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044654.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044634.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.277, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044655.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044656.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044655.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044633.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.547, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044657.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044657.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044657.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044631.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.001, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044657.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044658.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044657.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.617, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044629.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.904, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044658.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044659.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044660.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044661.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044658.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.987, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044658.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.273, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044662.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044662.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044662.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044662.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044624.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.998, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044619.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.0, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044664.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044664.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044665.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.615, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044667.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044667.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044667.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044667.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044667.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044668.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044666.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.906, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044669.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044671.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044671.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044672.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044672.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044672.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044673.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044673.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044673.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044674.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.054, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044675.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044675.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044675.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044675.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044676.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044676.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044676.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044676.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044678.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044678.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044678.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044679.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044679.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044679.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044680.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044682.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044681.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044683.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044679.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.059, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044683.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044683.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044683.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.172, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044678.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.029, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044684.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044684.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044686.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044687.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044685.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.051, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044688.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044684.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.453, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044690.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044690.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044690.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044691.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044690.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044691.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044691.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044691.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044692.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044692.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044691.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044693.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044689.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.385, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.784, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044695.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044694.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044677.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.051, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044695.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044695.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044695.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044696.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044697.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044697.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044697.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044697.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044697.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044676.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.245, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044675.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.561, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044698.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044673.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.277, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044699.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044700.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044699.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.462, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.858, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044670.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.103, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044702.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044703.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044701.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.964, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044705.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044704.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.514, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044708.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044708.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044708.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044706.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.08, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044711.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044711.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044711.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044712.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044711.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044711.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.002, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044712.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044712.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044712.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044712.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044714.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044714.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044714.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044715.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044715.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044715.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044718.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044718.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044718.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044717.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044719.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044719.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044719.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044716.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.104, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044721.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044720.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.103, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044715.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.021, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044721.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044721.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044722.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044722.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044722.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044723.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044724.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044722.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044726.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044725.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044721.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.417, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044726.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044726.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044726.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044727.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044727.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044727.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044727.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.894, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044729.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044730.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044727.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.24, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044731.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044726.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.522, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044715.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.911, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044714.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.259, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044733.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044733.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044733.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044732.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044733.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044733.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044735.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044735.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044734.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.429, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044735.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044735.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044735.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044713.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044736.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044736.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044737.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044710.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.315, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044737.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044737.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044737.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.923, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044709.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.176, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044739.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044740.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044741.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044738.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.829, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044741.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044741.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044741.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044742.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044743.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044743.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044741.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.176, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044745.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044744.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044745.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044745.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044746.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044747.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044747.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044747.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.857, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044747.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044748.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044750.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044750.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044750.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044751.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044751.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044751.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044753.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044753.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044753.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044753.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044754.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044754.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044754.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044755.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044752.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.988, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044756.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.005, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044751.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044757.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044757.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044759.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044760.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044758.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.963, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044757.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.316, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044761.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044762.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044763.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044763.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044763.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044764.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044765.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044763.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.07, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044767.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044766.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044762.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.449, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044767.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044751.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.224, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044767.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044767.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044767.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044750.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.51, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044768.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044770.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044770.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044769.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.598, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044771.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044771.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044749.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044747.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.358, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044772.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044745.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.84, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044745.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.069, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044774.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044775.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044773.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.808, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044777.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044777.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044777.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044777.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044778.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044778.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044778.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044776.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.875, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044780.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044779.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.607, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044780.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044780.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044781.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.873, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044784.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044784.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044784.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044786.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044786.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044786.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044787.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044787.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044787.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044787.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044789.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044790.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044791.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044787.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.995, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044791.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044791.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044791.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044786.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.977, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044792.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044792.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044792.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044793.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044793.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044793.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044793.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044794.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044796.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044795.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044796.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044793.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044796.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044797.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044796.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044792.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.362, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044797.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044799.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044799.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044799.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044799.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044799.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044800.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.095, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044802.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044801.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044798.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.52, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044802.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.789, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044802.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044803.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044802.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044785.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.108, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044803.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044803.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044803.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044803.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044804.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044805.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044806.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044806.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044806.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044805.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044784.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.232, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044806.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044807.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044806.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044783.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.594, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044807.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044807.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044807.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044782.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.926, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044808.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044808.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044808.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044780.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.328, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044780.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.566, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044810.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044809.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.692, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044812.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044812.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044812.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044814.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044814.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044811.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.735, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044815.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044817.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044818.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044818.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044818.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044818.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044819.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044821.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044821.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044821.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044821.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044822.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044822.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044822.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044823.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044823.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044824.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044824.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044825.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044826.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044823.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.117, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044827.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.996, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044822.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.892, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044828.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044828.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044828.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044829.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044829.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044829.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044829.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044830.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044832.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044831.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044832.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044829.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.939, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044833.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044833.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044833.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044828.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.382, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044835.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044835.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044835.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044835.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044835.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044836.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.99, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044838.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044837.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044834.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.356, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044838.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044822.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.482, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044838.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044838.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044821.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044839.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044840.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044840.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044840.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044842.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044840.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.211, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044842.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044842.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044843.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044843.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044842.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.483, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044843.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044843.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044843.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044820.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044818.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.147, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044844.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.473, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044816.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.686, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044846.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044845.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.586, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044848.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044849.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044849.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044849.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044849.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044847.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.443, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044850.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044851.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044851.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044851.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044853.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044854.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044854.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044854.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044854.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044855.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044855.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044855.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044855.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044859.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044860.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.075, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044862.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044861.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044857.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044862.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044864.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044864.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044864.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044864.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044865.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044866.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.98, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044867.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044868.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044867.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044863.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.461, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044868.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044868.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044870.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044871.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044869.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.971, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044872.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044868.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.366, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.505, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044856.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044874.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044874.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044874.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044873.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044874.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044875.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044875.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044876.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044874.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044876.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044876.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044877.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044877.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044876.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044855.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.927, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044877.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044877.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044877.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044854.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.207, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044878.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044878.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044878.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044852.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.528, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044878.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044878.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044851.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.881, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044851.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.128, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044880.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044879.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044663.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 217.183, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044880.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044619.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 260.922, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044880.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044882.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044883.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044883.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044883.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044883.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044884.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.39, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044886.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044886.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044886.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044886.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044886.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044887.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044888.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044889.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.262, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044889.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044889.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044889.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044889.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044891.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044891.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044891.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044891.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044891.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044892.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044892.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044893.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044893.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044893.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044893.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044894.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044895.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044895.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044895.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044896.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044896.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044896.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044897.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044897.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044897.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044897.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044899.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044899.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044899.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044899.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044900.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044901.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.18, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044902.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044902.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044902.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.442, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044898.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.471, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044904.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044904.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044905.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044905.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044905.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044906.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044907.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044905.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.125, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044909.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044908.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044904.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.631, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044909.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044909.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044909.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044910.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044910.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044910.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044910.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044912.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044912.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044911.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044912.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044913.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044910.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.837, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044909.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.131, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044897.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.204, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044915.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044914.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044896.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.499, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044915.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044915.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044915.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044916.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044917.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044896.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.613, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044895.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.967, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044918.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044893.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.531, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044919.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044919.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044919.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.167, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044890.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.461, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044922.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044923.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044924.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.226, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044921.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.504, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044924.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044924.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044924.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044885.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.308, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.192, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044926.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044927.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044927.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044927.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044928.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044929.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.776, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044929.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044929.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044929.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044930.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044931.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044929.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.999, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044932.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044933.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044933.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044934.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044935.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044935.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044936.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044936.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044936.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044935.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.867, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044935.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.013, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044937.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044937.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044937.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044938.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044938.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044940.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044940.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044940.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044941.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044941.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044941.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044942.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044942.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044942.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044942.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044943.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044945.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044944.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044945.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044941.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.177, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044945.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044945.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044945.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.071, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044941.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.23, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044946.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044946.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044947.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044947.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044947.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044948.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044948.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044949.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044950.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044947.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.063, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044951.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044946.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.445, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044953.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044953.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044953.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044953.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044954.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044955.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.975, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.604, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044952.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.456, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044940.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.13, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044958.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044957.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.441, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044958.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044958.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044958.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044959.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044960.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044960.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044960.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044960.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044960.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044939.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.605, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044938.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.963, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044961.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044935.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.702, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044962.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044962.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044962.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044933.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.376, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044933.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.656, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044964.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044965.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044966.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044963.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.886, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044967.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044967.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044967.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044967.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044968.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044967.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.657, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044969.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044971.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044971.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044971.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044971.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044971.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044973.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044973.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044973.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044974.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044974.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044974.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044974.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.063, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044975.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044977.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044977.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044977.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044977.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044978.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044978.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044980.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044982.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044982.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044981.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044982.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044979.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.986, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044982.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044983.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044982.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.935, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044978.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.791, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044984.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044984.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044986.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044987.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044985.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.14, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044988.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044984.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.578, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044990.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044990.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044990.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044990.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044991.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044992.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044993.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044990.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.966, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044989.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.285, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044978.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.638, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044995.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044994.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044977.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.901, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044995.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044995.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044995.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044996.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.004, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044998.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044997.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044976.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.329, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044998.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044998.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044998.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044974.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.897, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044999.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044999.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044999.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.956, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044970.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.191, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045001.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045002.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045000.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.68, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045004.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045004.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045004.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045004.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045004.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045005.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045003.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.247, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045007.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045008.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045008.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045008.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045008.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045008.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.931, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045010.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045011.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045011.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045011.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045014.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045014.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045014.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045014.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045015.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045017.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045017.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045017.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045016.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.6, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045018.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045014.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.857, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045018.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045019.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045018.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045019.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045019.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045020.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045020.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045020.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045021.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045022.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045020.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.951, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045023.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045019.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.392, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045025.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045025.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045025.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045026.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045025.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045026.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045026.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045027.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045027.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045027.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045026.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.621, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045027.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045028.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.943, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045024.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.365, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045013.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.372, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045030.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045029.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.574, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045030.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045030.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045030.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045030.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045031.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045012.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.612, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045033.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045032.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045011.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.889, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045033.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045033.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045033.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045009.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.244, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045035.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045035.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045035.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045006.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.03, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045036.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045037.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045035.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.633, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045039.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045039.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045039.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045039.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045039.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045038.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.981, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045041.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045041.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045041.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045040.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.363, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045042.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045043.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045044.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045044.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045044.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045044.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.976, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045045.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045047.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045047.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045047.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045047.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045048.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045048.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045048.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045049.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045049.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045049.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045049.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045050.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045052.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045052.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045053.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045051.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045053.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045049.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045053.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045054.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045053.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.121, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045048.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.981, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045054.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045054.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045056.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045057.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045055.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.938, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045058.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045054.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.32, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045060.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045060.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045061.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045061.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045060.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045062.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045062.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045062.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045062.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045063.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.327, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045059.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045064.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045048.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.911, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045065.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045065.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045065.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045047.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.114, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045065.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045065.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045066.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045067.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.201, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045068.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045068.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045068.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045046.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.449, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045068.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045069.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045069.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045044.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.678, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045070.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045070.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045070.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045042.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.103, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045042.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.377, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045072.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045071.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.711, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045074.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045074.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045074.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045074.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045073.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.752, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045076.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045075.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.368, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045077.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045077.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045078.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045081.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045081.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045081.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045081.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045084.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045085.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045087.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.22, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045088.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045088.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045088.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.067, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045083.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.048, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045089.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045089.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045089.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045089.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045090.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045090.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045090.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045091.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045092.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045090.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.021, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045089.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045094.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045094.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045094.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045095.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045095.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045095.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045096.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045095.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045096.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045096.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045096.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045097.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045094.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045099.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045098.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045093.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.368, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045099.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.687, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045099.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045099.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045099.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045082.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.966, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045101.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045101.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045101.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045100.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045101.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045102.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045102.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045102.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045101.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045081.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.017, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045102.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045103.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045102.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045080.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.285, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045103.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045104.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045104.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045079.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.065, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045105.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045105.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045105.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045077.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.55, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045077.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.777, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045107.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045106.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044925.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 181.807, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045107.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995044881.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 226.707, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045107.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045108.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045108.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045108.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045109.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045110.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045112.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.215, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045111.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.545, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045108.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.419, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045112.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045113.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045113.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045113.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045113.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045113.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045114.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045115.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045112.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.239, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045116.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045118.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045120.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045121.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045121.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.918, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045121.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045122.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045121.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045122.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045122.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045123.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045123.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045123.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045123.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045125.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045125.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045125.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045126.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045126.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045126.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045126.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045127.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045128.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045125.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045129.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045129.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045129.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045125.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.011, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045130.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045130.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045131.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045132.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045132.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045132.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045132.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045133.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045134.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045132.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.272, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045135.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045130.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045137.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045137.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045137.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045137.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045138.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045139.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045139.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045139.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045139.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045139.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.627, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045140.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.886, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045141.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045141.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045140.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045136.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.217, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045141.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.895, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045141.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045142.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045141.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045124.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.241, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045142.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045142.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045142.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045143.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045144.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045123.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.566, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045122.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.91, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045145.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045119.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.444, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045146.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045146.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045146.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.909, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045117.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.201, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045148.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045148.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045149.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045150.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045151.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045151.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.303, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045147.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.606, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045151.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045151.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045112.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.5, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045108.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.466, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045153.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045154.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045155.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.784, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045157.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045157.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045157.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045157.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045157.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045158.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045156.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.046, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045159.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045161.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045162.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045162.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045162.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.86, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045162.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045163.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.228, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045165.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045165.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045167.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045167.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045167.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045169.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045169.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045169.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045169.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045170.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045171.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.055, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045172.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045172.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045172.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.094, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045168.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.032, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045174.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045174.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045174.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045175.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045175.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045174.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045176.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045176.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045176.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045176.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045176.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045177.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.13, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045173.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.471, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045179.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045179.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045179.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045180.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045181.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045179.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.987, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045183.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045182.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045178.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045184.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045167.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.662, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045184.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045184.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045184.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.98, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045186.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045186.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045186.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045185.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045186.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045187.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045187.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045187.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045186.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045166.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.267, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045187.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045187.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045165.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.633, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045162.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.336, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045189.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045188.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045160.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.045, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045189.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045189.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045189.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045190.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045191.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045192.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045189.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.815, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045194.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045194.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045194.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045194.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045194.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045195.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045193.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.628, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.28, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045196.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045197.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045197.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045197.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045199.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045199.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045201.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045202.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045199.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045199.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.979, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045202.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045202.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045202.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045202.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045204.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045204.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045204.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045205.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045205.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045205.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045207.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045208.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045206.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.905, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045209.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045205.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045210.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045210.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045211.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045212.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045212.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045212.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045213.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045213.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045213.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045212.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.019, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045214.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045215.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045216.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045212.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.842, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045217.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045217.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045217.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045210.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.374, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045219.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045219.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045219.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045219.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045220.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045221.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.601, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045222.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.026, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045222.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045223.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045222.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045218.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.414, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045223.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045205.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.486, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045223.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045224.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045223.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045204.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.963, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045224.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045225.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045225.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045225.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045224.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045225.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045225.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045227.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045226.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.429, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045227.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045227.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045227.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045203.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045227.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045228.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045228.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045198.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.376, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045228.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045228.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045228.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045197.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045197.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.95, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045229.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045229.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045229.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045229.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045231.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045231.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045231.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045231.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045231.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045232.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045229.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.378, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045234.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045235.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045233.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.311, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045237.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045237.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045237.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045237.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045237.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045238.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045238.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045239.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045239.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045239.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045239.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.996, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045240.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045241.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045241.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045243.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045243.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045243.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045243.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045245.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045245.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045245.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045245.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045245.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045246.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.111, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045248.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045249.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045247.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.979, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045244.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.915, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045251.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045251.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045251.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045251.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045252.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045253.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045254.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.218, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045254.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045254.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045254.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045250.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045254.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045256.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045256.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045256.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045256.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045256.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045257.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045258.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045258.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045258.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045260.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045259.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045255.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.333, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045260.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045243.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045260.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045260.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.25, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045261.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045263.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045263.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045263.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045262.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045242.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.415, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045263.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045263.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045241.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045239.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.262, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045265.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045264.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.593, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045236.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.704, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045266.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045266.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045267.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045268.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045266.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.786, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045270.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045269.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.001, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045271.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045273.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045274.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045275.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045275.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045275.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045275.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.962, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045276.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045279.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045279.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045280.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045280.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045280.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045280.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045281.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045282.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045283.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045280.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.876, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045284.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045284.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045284.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045279.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.802, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045285.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045285.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045285.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045285.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045286.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045286.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045286.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045287.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045288.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045289.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045286.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.071, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045289.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045289.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045289.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045285.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.543, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045291.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045291.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045291.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045291.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045291.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045292.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045292.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045292.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045293.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045293.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045292.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.592, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045293.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045293.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045293.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.903, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045295.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045294.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045290.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.277, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045295.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.536, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045295.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045295.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045278.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045296.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045298.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045298.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045298.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045297.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.012, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045298.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045298.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045277.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045275.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.667, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045300.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045299.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.076, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045272.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.322, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045301.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045301.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045302.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045303.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045301.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.798, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045305.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045304.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.707, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045306.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045307.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045307.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045308.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045308.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045310.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045310.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045310.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045311.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045310.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.881, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045310.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.001, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045311.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045311.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045311.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045311.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045314.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045314.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045314.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045315.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045315.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045315.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045315.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045316.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045317.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045318.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045315.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.846, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045319.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045319.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045319.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.008, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045314.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045321.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045321.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045321.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045322.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045323.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.11, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045320.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.527, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045325.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045325.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045325.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045326.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045327.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045327.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.626, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045328.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045325.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.059, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045330.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045329.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045324.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.472, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045330.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.667, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045330.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045330.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045313.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.977, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045331.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045332.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.125, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045334.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045333.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045312.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.398, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045334.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045334.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045334.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045309.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.922, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045335.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045336.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045334.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.4, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045307.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.155, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045307.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.408, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045336.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045336.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045337.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045338.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045336.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.619, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045339.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.367, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045340.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045343.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045345.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045346.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045346.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045346.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045347.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045347.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045347.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045347.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045348.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045348.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045348.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045350.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045352.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045352.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045351.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.597, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045353.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045349.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.935, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045353.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045354.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045353.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.128, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045348.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.932, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045354.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045354.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045355.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045355.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045355.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045356.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045357.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045355.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.188, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045359.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045358.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045354.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045359.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045359.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045361.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045361.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045361.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045361.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045363.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045363.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.833, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045364.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045360.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.299, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045366.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045365.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045359.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045366.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045348.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.256, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045366.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045366.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045366.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045347.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.552, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045367.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045367.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045367.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045367.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045367.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045369.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045369.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045369.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045368.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045346.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.66, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045369.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045370.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045369.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045346.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.998, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045370.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045370.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045370.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045344.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.445, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045371.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045372.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045371.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.541, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045341.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.782, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045372.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045372.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045372.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045373.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045374.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045372.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.623, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045375.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045376.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045378.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045378.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045380.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045380.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045380.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.891, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.997, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045380.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045381.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045381.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045381.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045381.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045382.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045382.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045382.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045382.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045385.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045385.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045385.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045385.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045385.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045386.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045387.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.118, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045389.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045389.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045389.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.108, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045384.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.063, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045390.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045390.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045390.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045390.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045391.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045391.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045391.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045391.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045392.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045393.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045391.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.164, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045390.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.583, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045394.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045396.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045396.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045396.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045396.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045397.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.595, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045398.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045398.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045398.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.024, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045400.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045399.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045395.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.421, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045400.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.03, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045400.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045401.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045400.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045383.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.302, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045401.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045401.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045401.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045401.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045402.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045382.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.4, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045403.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045381.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.643, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045379.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.103, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045405.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045404.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.333, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045377.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.579, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045406.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045407.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045408.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045406.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.759, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045410.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045411.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045409.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.04, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045152.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 260.288, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045413.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045107.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 305.741, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045413.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045415.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045416.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.454, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045418.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045419.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045420.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045420.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045420.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045421.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045421.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045421.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.418, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045422.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045423.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045424.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045426.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045427.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045427.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045427.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045427.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.028, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045428.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045430.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045430.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045431.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045431.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045431.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045431.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045434.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045434.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045434.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045434.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045435.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045436.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.959, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045437.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045437.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045437.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.112, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045433.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.9, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045439.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045439.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045440.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045440.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045439.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045441.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045441.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045441.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045441.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045442.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.163, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045438.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.509, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045444.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045444.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045444.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045444.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045445.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045446.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045444.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.043, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045448.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045447.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045443.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.47, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045449.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.715, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045449.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045450.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045449.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045432.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.119, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045450.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045450.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045450.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045450.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045452.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045452.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045452.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045451.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045431.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.366, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045452.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045452.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045430.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045427.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.492, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045454.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045453.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.131, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045425.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.411, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045455.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045456.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045456.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045456.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045456.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045457.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045457.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045457.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045457.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045458.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045454.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.152, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045454.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.397, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045459.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045459.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045459.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045459.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045417.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.086, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.076, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045461.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045462.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045463.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.944, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045463.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045463.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045464.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045465.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045465.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045465.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045465.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045465.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045466.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045463.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.322, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045467.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045469.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045469.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045469.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045469.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045469.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045470.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045470.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045470.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045471.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045471.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045471.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045471.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045471.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.953, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045470.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.077, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045472.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045472.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045472.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045472.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045474.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045475.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045477.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045477.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045477.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045478.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045478.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045478.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045479.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045481.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045480.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045481.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045477.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.532, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045481.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045481.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045481.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.111, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.594, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045482.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045482.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045483.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045483.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045483.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045484.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045484.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045484.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045484.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045484.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045485.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045485.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045485.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045485.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045486.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045485.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045487.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045487.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045487.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045488.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045488.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045487.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045488.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045483.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.807, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045488.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045489.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045488.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045482.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.517, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045489.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045489.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045489.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045490.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045490.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045490.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045490.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045491.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045492.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045490.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.319, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045494.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045493.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045489.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045494.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045476.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.938, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045494.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045494.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045494.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045475.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.388, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045495.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045496.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045495.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.239, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045497.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045498.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.211, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045473.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.637, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045499.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045470.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.381, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045500.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045500.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045500.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.186, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045468.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.459, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045502.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045503.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045503.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045503.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045503.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045504.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045504.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045504.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045504.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045504.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045501.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.835, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045505.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045505.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045505.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045505.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045506.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045506.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045506.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045506.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045506.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045507.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045505.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.586, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045509.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045510.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045510.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.46, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045510.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045510.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.014, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045511.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045512.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045513.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045513.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045516.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045516.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045516.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045517.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045518.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045516.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.091, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045520.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045519.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.08, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.046, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045522.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045522.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045522.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045523.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045522.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.557, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045523.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045524.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045525.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.065, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045521.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.461, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045527.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045527.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045527.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045527.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045528.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045529.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045527.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045530.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045526.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.309, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045515.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.664, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.978, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045533.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045533.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045533.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045532.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045533.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045533.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045535.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045535.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045534.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045514.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.123, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045535.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045535.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045535.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045513.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.411, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045510.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.919, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045536.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.287, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045508.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.514, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045538.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045538.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045538.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045538.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045538.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045539.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045539.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045540.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045541.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045537.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.856, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045541.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045541.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045541.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045542.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045541.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.311, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045543.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045545.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045547.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.843, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045548.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045548.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045548.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045548.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045550.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045550.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045550.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045550.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045551.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045551.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045551.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045552.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045552.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045552.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045552.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045553.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045555.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045554.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045555.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045552.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045555.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045555.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045555.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.069, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045551.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.919, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045556.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045556.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045557.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045557.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045558.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045558.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045558.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045559.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045560.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045558.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.232, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045561.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045556.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045563.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045563.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045563.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045564.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045565.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045566.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045563.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.922, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045562.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.368, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045551.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.836, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045568.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045567.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045550.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.152, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045568.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045568.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045568.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045569.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045570.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.198, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045549.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.572, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045571.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045546.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.886, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045572.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045572.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045572.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.236, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045544.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.445, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045574.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045574.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045575.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045576.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045573.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.795, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045578.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045577.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.912, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045580.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045581.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045581.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045581.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045581.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.82, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045583.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045584.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045584.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045584.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045585.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045585.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045585.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045588.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045589.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045587.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045591.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045590.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.976, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045591.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045591.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045593.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045593.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045593.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045594.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045595.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045593.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.174, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045597.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045596.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045591.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.456, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045597.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045597.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045597.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045598.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045598.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045598.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045598.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045599.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045601.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045600.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.567, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045601.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045598.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.833, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045602.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045602.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045602.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045597.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.202, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045602.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045586.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.544, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045603.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045603.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045602.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045585.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045603.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045603.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045604.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045605.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045585.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.986, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045584.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.365, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045606.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045581.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.634, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045607.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045607.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045607.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.07, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045579.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.297, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045608.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045608.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045608.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045608.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045609.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045609.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045609.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045610.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045608.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.655, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045612.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045612.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045612.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045612.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045612.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045611.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.731, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045614.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045614.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045613.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045614.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045615.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045617.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045617.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045617.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045617.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045618.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045619.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045619.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045619.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045620.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045620.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045620.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045620.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045621.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045621.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045621.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045623.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045625.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045625.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045624.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045625.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045622.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.036, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045625.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045626.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045625.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045621.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.916, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045628.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045628.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045628.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045628.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045629.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045629.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045629.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045629.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045630.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045631.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045629.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.042, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045628.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.507, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045633.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045633.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045633.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045634.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045635.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045633.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.017, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045638.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045637.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045632.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.388, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045638.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045621.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.22, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045638.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045638.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045638.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045620.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.49, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045640.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045640.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045640.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045639.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045640.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045640.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045619.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.488, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045641.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045619.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045642.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045642.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045642.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045617.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.16, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045642.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045643.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045642.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045614.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045614.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.915, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045643.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045643.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045643.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.101, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045644.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045644.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045644.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045644.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045460.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 184.898, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045645.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045414.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 231.793, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045645.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045647.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045648.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.473, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045651.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045651.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045651.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045651.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045652.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045652.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045652.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045653.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045650.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.305, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045654.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045655.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045657.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045658.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045658.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045658.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045659.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045660.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045661.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045661.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045662.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045662.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045662.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045663.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045663.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045663.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045665.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045665.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045665.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045665.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045666.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045667.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.097, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045668.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045668.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045668.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.038, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045664.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.068, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045669.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045669.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045669.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045669.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045670.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045670.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045671.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045671.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045671.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045670.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045671.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045672.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045672.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045673.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045670.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.291, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045674.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045669.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045676.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045676.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045676.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045677.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045678.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.036, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045679.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045679.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045679.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045675.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.283, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045679.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045663.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.098, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045680.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045681.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045680.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045662.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.385, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045681.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045681.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045681.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045681.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045682.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.75, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045662.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.731, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045684.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045683.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045660.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.997, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045684.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045684.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045684.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045658.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.623, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045685.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045685.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045685.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.252, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045656.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.512, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045687.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045689.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045690.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045686.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.356, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045685.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.643, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045690.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045690.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045649.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.388, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.368, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045692.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045693.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045694.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045694.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.64, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045694.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045694.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045695.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045695.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045695.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045696.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045696.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045696.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045696.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045697.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045697.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045697.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045697.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045697.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045694.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.974, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045698.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045699.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045699.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045700.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045701.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045701.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.84, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045701.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045702.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045703.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045703.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045703.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045704.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045704.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045704.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045705.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045705.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045706.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045706.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045707.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045707.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045707.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045707.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045708.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045709.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045707.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.106, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045711.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045710.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045706.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.211, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045713.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045713.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045713.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045713.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045714.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045715.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045716.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045716.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045716.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045715.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.816, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045716.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.188, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045712.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.623, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045718.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045718.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045718.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045719.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045720.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045718.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.07, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045722.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045721.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045717.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.47, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045722.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045706.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.246, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045722.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045722.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045722.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045704.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.502, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045723.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045723.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045723.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045724.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045723.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045724.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045726.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045726.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045726.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045725.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045703.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.668, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045726.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045726.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045703.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.948, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045701.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.42, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045728.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045727.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045699.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.015, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045699.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.283, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045728.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045728.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045728.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045729.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045730.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045731.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045732.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045732.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045732.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045728.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.932, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045732.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045733.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045733.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045733.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045733.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045733.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045734.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045732.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.641, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045736.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045735.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045736.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045736.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045737.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045738.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045738.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045738.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045738.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.962, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045739.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045741.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045741.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045741.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045742.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045742.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045742.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045744.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045744.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045744.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045744.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045745.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045746.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045744.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.034, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045748.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045747.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.001, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.839, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045748.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045748.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045749.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045749.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045749.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045750.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045750.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045750.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045750.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045750.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045751.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045751.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045751.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045752.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045749.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.187, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045754.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045753.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045748.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.59, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045754.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045754.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045756.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045757.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045755.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.016, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045754.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.331, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045758.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045743.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.413, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045760.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045761.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045760.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045742.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.844, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045761.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045761.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045761.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045762.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045763.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045742.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.1, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045764.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045764.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045764.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045741.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.518, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045764.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045764.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045765.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045738.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.004, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045765.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045765.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045765.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045736.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.412, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045736.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.65, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045767.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045768.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045768.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045769.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045766.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.845, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045770.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045770.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045770.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045770.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045771.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045770.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.316, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045773.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045772.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045773.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045773.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045774.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.868, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045777.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045777.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045777.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045777.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045780.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045780.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045780.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045781.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045781.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045781.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045781.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045782.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045783.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045781.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.935, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045784.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045784.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045784.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.965, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045780.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045786.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045786.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045786.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045788.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045789.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.18, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045785.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.553, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045791.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045791.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045791.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045791.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045792.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045794.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045794.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045794.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045793.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045794.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045791.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.924, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045795.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045796.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045795.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045790.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.229, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045796.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.433, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045796.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045796.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045796.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045779.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045798.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045798.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045798.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045797.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045798.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045799.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045799.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045799.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045798.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.812, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045799.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045799.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045778.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.14, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045775.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.537, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045800.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045773.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.884, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045773.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.102, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045802.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045802.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045802.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045802.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045803.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045803.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045803.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045803.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045803.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045804.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045801.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.361, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045806.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045805.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.56, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045691.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 116.176, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045807.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045646.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 162.179, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045808.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045808.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045809.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045809.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045809.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045809.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045810.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045810.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045811.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045813.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045812.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045808.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.449, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045813.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045813.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045814.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045815.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045813.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.291, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045816.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045817.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045817.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.016, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045818.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045819.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045820.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045820.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045820.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045821.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045822.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045822.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045822.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.887, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045822.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.01, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045823.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045825.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045825.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045825.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045826.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045826.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045826.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045829.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045830.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045828.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.227, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045832.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045831.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.119, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045826.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.168, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045832.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045833.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045833.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045833.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045833.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045834.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045834.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045834.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045834.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045835.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045836.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.582, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045837.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045833.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.061, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045837.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045838.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045837.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045832.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.573, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045838.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045838.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045840.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045841.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045839.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.005, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045842.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045838.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045826.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.034, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045825.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.314, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045844.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045844.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045844.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045843.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045845.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045845.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045847.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045847.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045846.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.522, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045847.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045847.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045847.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045824.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.887, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045848.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045848.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045848.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045822.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.525, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045848.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045849.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045848.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045820.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.101, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045820.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.381, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045849.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045849.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045850.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045851.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045852.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045852.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045852.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045852.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045852.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045849.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.997, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045849.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.258, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045854.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045854.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045854.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045854.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045813.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.122, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045808.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.129, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045856.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045855.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.785, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045858.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045859.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045860.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045857.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.865, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045861.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045863.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045865.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045865.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045865.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.011, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045865.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045866.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045865.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045866.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045866.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045868.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045868.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045868.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045870.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045870.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045870.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045870.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045870.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045872.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045873.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.237, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045874.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045874.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045874.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.124, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045869.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.178, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045875.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045875.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045875.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045876.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045876.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045876.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045876.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045877.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045878.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045876.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.099, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045879.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045875.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.512, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045880.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045880.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045881.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045881.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045881.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045882.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045882.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045882.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045882.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045882.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045883.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045881.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.082, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045885.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045884.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045880.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.464, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045885.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045868.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.953, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045885.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045885.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.262, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045886.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045888.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045889.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045887.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.245, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045867.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.861, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045866.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.199, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045890.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045891.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045864.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.729, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045891.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045891.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045891.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.18, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045862.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.44, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045893.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045894.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045892.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.704, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045895.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045895.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045895.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045895.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045896.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045896.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045897.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045897.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045897.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045897.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045897.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045895.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.558, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045898.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045900.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045901.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045901.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045901.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045901.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.942, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045902.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045903.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045903.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045903.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045904.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045904.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045904.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045905.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045905.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045905.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045906.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045907.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045907.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045907.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045908.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045909.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045907.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.054, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045911.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045910.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.078, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045906.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.066, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045911.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045913.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045915.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045915.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045917.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045914.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.48, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045917.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.812, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045917.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045917.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045912.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.178, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045919.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045919.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045919.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045920.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045921.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045919.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.067, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045918.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045905.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.572, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045923.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045923.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045922.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045904.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045923.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045923.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045924.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045924.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045923.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.599, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045925.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045925.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045925.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045925.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045926.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045904.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.876, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045903.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.204, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045927.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045901.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.646, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045928.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045928.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045928.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.979, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045899.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.25, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045930.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045931.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045932.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045929.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.663, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045933.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045934.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045932.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.329, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045935.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045938.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045939.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045939.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045940.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045940.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045940.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045941.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045941.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045942.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045942.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045942.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045944.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045944.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045944.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045944.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045944.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045945.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.919, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045947.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045946.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.05, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045943.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045947.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045949.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045950.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045950.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045950.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045950.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045950.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045951.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045951.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045951.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.995, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045953.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045952.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045948.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.375, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045953.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045953.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045955.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045956.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045954.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.973, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045953.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.313, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045957.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045942.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.494, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045958.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045958.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045958.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045941.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045959.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045959.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045960.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045961.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045940.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.646, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045939.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.965, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045962.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045937.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.407, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045963.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045963.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045963.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045936.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.884, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045965.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045966.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045966.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045967.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045964.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.103, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045968.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045968.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045968.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045968.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045969.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045968.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.959, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045970.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.626, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045971.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045971.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045971.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.876, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045973.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045974.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045974.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045974.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045975.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045976.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045976.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045976.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045976.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045978.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045978.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045978.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045979.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045979.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045979.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045979.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045980.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045981.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045979.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.963, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045982.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045982.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045982.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.039, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045978.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.861, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045984.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045984.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045984.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045985.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045985.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045984.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045986.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045986.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045986.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045986.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045986.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045987.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.035, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045983.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.34, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045989.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045989.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045989.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045990.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045991.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045989.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.181, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045993.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045992.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045988.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.502, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045993.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.566, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045994.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045994.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045994.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045977.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.94, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045995.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045995.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045995.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045995.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045995.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045997.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045997.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045997.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045996.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045976.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.169, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045997.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045997.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045975.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.601, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045972.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.837, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045998.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045971.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.11, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045971.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.323, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045999.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046000.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045854.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 145.84, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046001.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995045808.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 193.688, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046002.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046003.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046004.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046005.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046002.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.202, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046007.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046008.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046009.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.202, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046010.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046011.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046012.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046014.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046015.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046015.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046016.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046016.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046016.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046015.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046015.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046016.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046020.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046020.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046021.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046024.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046024.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046025.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046025.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046026.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046026.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046026.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046027.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046027.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046027.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046028.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046028.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046028.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046029.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046029.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046029.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046029.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046029.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.937, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046030.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046030.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046030.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046030.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046032.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046031.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046032.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046028.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.621, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046032.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046033.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046032.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046027.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.296, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046034.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046034.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046034.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046035.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046035.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046035.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046036.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046036.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046038.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046035.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.973, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046038.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046039.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046040.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046035.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.724, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046034.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.314, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046042.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046042.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046042.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046043.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046044.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046042.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.919, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046046.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046045.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046041.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046047.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046027.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.017, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046047.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046047.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046047.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046026.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.48, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046048.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046048.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046048.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046048.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046048.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046050.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046050.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046050.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046049.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046025.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.268, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046050.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046051.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046050.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046024.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.415, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046051.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046051.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046052.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046015.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.037, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046052.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046053.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046052.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046013.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.399, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046054.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046054.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046055.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046055.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046055.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046055.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046056.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046056.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046056.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046056.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046057.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046057.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046058.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046058.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046059.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046060.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046060.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046054.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.335, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046054.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.768, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046061.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046061.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046061.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046061.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046006.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.973, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046002.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.778, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046063.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046064.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.005, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046067.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046067.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046068.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046068.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046068.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046068.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046069.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046065.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.901, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046071.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046070.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046072.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046072.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046073.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.612, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046074.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046075.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046076.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046076.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046076.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046075.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.971, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046075.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.142, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046076.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046077.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046077.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046077.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046078.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046078.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046079.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046079.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046080.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046080.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046082.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046082.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046082.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046083.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046083.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046083.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046083.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046083.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046084.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046082.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.219, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046086.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046085.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.189, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.32, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046087.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046087.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046087.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046088.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046088.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046088.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046088.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046089.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046091.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046088.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.142, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046092.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046087.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.544, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046094.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046094.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046094.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046095.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046096.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046093.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.52, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046081.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.456, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046099.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046097.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046080.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046099.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046099.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046100.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046101.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046079.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.231, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046102.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046102.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046102.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046078.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046102.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046103.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046103.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046075.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.373, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046103.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046104.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046103.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046072.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.106, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046072.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.535, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046104.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046104.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046104.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046105.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046106.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046106.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046106.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046106.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046107.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046107.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046108.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046104.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.119, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046110.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046109.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.704, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046111.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046113.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046114.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046114.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046115.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046115.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046115.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046114.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046114.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.864, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046116.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046117.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046116.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046117.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046117.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046118.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046118.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046118.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046118.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046121.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046121.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046121.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046121.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046122.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.942, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046124.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046123.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.086, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046120.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046126.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046127.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046126.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046128.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046129.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.171, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046125.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.531, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046131.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046131.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046131.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046132.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046134.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046134.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046134.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046133.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046134.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046131.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046135.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046136.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046135.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046130.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.382, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046136.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.715, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046136.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046136.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046136.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046119.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.018, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046137.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046137.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046137.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046137.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046137.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046139.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046139.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046139.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046138.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046118.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.307, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046139.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046140.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046139.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046117.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046140.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046140.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046140.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046114.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.355, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046141.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046141.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046141.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.039, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046112.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.34, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046143.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046143.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046144.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046145.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046142.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.95, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046146.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046146.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046146.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046146.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046147.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046146.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.324, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046148.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046150.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046151.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046152.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046152.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046152.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046152.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.982, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046153.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046155.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046155.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046155.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046156.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046156.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046156.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046158.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046160.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046160.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046159.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046160.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046157.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046160.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046161.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046160.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.016, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046156.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046162.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046162.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046163.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046163.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046163.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046163.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046164.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046165.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046163.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.191, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046166.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.587, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046162.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046168.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046168.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046168.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046168.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046170.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046170.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046169.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046170.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046170.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046172.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046172.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046172.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046170.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.534, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046172.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046168.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.885, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046167.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.226, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046156.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.594, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046174.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046173.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046155.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046174.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046174.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046174.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046175.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046176.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046176.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046176.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046176.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046176.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.942, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046154.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.352, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046177.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046152.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.851, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046178.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046178.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046178.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.196, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046149.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.467, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046179.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046179.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046180.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046180.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046180.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046180.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046181.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046182.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046179.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.081, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046184.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046183.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.958, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046185.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046187.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.849, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.943, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046189.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046190.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046190.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046192.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046192.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046192.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046194.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046195.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.014, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046198.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046196.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.923, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046193.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046198.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046198.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046199.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046199.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046199.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046200.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046201.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046199.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.133, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046203.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046202.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046198.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.532, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046203.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046203.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046206.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046206.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046205.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046207.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046207.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046207.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046207.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046204.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.059, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046208.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046203.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.345, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046192.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.497, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046210.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046210.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046210.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046209.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046210.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046210.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046211.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046191.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.898, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046190.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.307, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046212.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046213.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046188.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.589, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046213.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046213.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046213.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046186.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.006, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046216.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046217.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046215.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.942, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046218.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046218.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046218.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046218.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046219.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046218.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.697, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046221.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046221.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046221.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046221.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046222.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046222.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046222.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046223.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046223.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046223.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046223.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046224.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046225.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046225.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046225.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046226.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046226.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046226.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046228.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046228.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046228.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046228.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046229.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046231.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046231.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046231.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046230.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046231.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046228.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.12, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046232.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046233.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046232.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.075, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.936, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046233.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046233.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046234.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046234.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046234.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046235.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046236.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046234.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.037, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046238.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046237.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046233.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.467, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046238.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046238.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046238.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046239.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046239.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046239.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046239.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046241.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046241.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046241.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046240.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.639, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046242.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046242.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046242.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046242.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046242.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046239.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.016, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046238.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.383, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046243.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046227.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.708, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046244.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046244.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046244.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046226.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.036, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046244.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046245.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046245.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046245.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046244.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046245.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046245.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046246.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046225.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.176, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046225.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.49, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046247.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046248.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046223.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.93, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046248.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046248.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046248.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.076, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046220.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.305, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046250.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046062.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 188.552, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046251.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046002.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 249.3, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046251.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046252.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046253.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046253.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046253.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046254.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046255.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046252.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.933, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046257.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046257.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046257.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046257.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046258.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046258.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046259.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046259.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046259.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046259.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046259.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046260.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046261.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.445, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046261.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046261.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046261.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046261.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046262.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046263.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046265.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046265.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046266.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046266.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046266.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046267.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046267.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046267.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046267.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046268.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046268.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046268.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046269.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046268.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046268.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046269.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046269.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046269.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046269.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046271.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046271.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046273.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046273.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046273.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046283.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046285.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046286.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046286.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046274.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.88, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046287.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046287.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046287.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.12, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046289.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046289.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046289.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046288.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046290.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046273.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.495, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046291.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046292.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046291.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.664, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.278, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046293.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046293.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046293.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046294.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046294.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046295.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046295.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046295.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046295.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046295.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046296.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046294.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.5, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046298.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046297.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046293.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.196, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046298.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046298.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046299.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046299.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046299.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046301.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046302.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046302.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046300.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046302.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046302.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046302.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046299.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046304.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046303.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046298.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.436, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046304.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046272.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.004, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046304.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046304.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046304.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046271.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.308, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046305.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046305.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046305.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046305.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046305.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046307.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046307.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046307.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046306.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.819, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046307.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046308.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046307.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046270.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.232, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046308.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046308.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046308.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046267.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.267, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046309.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046310.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046309.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046265.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.018, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046264.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.605, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046313.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046313.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046313.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046313.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046313.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046314.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046314.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046314.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046315.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046316.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046312.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.588, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046311.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.921, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046317.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046316.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046317.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046317.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046256.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.174, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046252.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 65.684, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046319.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046321.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046321.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046321.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046321.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046322.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.692, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046323.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046323.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046323.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046324.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046324.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046324.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046324.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046325.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046323.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.43, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046326.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046328.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046328.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046328.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046328.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046329.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046329.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046329.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046329.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046331.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046332.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046332.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046332.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046333.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046332.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.031, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046332.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.203, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046333.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046333.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046333.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046334.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046334.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046335.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046335.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046335.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046335.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046337.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046337.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046337.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046338.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046338.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046338.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046338.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046339.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046340.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046341.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046338.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.132, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046341.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046341.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046341.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.22, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046337.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.198, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046343.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046343.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046344.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046344.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046344.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046345.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046346.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046344.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.064, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046347.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046343.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.557, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046349.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046349.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046349.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046349.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046351.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046350.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046351.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046351.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046352.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046352.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046352.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046351.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046352.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046349.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.939, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046348.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.307, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.017, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046354.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046353.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046336.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.308, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046354.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046354.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046354.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046355.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046356.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046335.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.628, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046357.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046357.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046357.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046334.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.002, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046357.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046357.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046358.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046331.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.553, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046358.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046358.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046358.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.966, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046327.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.384, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046359.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046359.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046360.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046360.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046360.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046360.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046361.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046362.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046359.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.112, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046364.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046364.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046364.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046364.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046364.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046365.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046363.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.54, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046366.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046367.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046368.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046368.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046368.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046369.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046369.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046369.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046369.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046369.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046370.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046370.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046370.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.84, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046370.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.004, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046371.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046372.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046372.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046372.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046373.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046373.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046373.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046374.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046374.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046374.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046376.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046378.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046378.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046378.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046378.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046377.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.575, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046379.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.007, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046379.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046380.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046379.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.063, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046375.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.913, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046380.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046382.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046382.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046382.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046382.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046383.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.072, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046385.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046384.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.604, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046381.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.501, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046385.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046385.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046387.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046387.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046387.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046387.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046388.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046388.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046389.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046386.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.199, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046390.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046385.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.473, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046374.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.831, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046373.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.044, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046392.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046392.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046392.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046391.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046392.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046392.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046394.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046394.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046393.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046373.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.264, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046394.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046394.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046394.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046372.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046395.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046395.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046395.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046370.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.426, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046396.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046396.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046367.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.923, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046367.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.163, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046398.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046399.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046397.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.978, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046401.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046402.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046400.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.249, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046403.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046403.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046403.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046404.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046404.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046403.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.309, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046403.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.549, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046404.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046405.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046405.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046405.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046405.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046405.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046407.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046407.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046407.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.841, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.997, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046407.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046408.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046407.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046408.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046408.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046409.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046409.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046409.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046409.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046412.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046412.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046412.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046412.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046412.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046413.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.606, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046414.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046414.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046415.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046415.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046415.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046414.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046415.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.06, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046416.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046416.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046416.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.139, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046411.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.055, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046417.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046417.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046417.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046418.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046418.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046418.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046418.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046419.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046420.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046418.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.061, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046417.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.522, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046421.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046423.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046424.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046424.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046424.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046423.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.623, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046424.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046424.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046425.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.073, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046427.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046426.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046422.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.513, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046427.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046427.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046428.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046427.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046410.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.264, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046428.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046428.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046428.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046428.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046430.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046430.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046430.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046429.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046409.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.357, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046430.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046431.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046430.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.444, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046408.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.59, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046432.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046432.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046432.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046406.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.186, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046433.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046433.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046433.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046404.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046404.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.985, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046435.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046434.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.687, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046437.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046437.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046437.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046437.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046437.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046438.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046438.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046438.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046438.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046438.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046436.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.924, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046439.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046439.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046439.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046441.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046442.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046442.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046442.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046442.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.948, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046443.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046444.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046444.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046444.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046445.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046445.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046445.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046448.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046448.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046448.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046448.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046449.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046449.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.873, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046450.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046447.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.233, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046452.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046451.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.064, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046452.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046452.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046453.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046453.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046453.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046454.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046455.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046453.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.088, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046457.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046456.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046452.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.401, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046457.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046457.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046459.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046459.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046459.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046460.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046460.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046460.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046460.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046460.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046461.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046462.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046459.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.219, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046457.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.124, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046446.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.493, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046464.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046463.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046445.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046464.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046464.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046464.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046465.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046466.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046466.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046466.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046466.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046466.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.608, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046445.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.788, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046467.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046468.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046467.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046444.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.161, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046468.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046468.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046468.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046442.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.624, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046469.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046469.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046469.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.977, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046440.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.227, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046471.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046470.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.788, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046473.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046474.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046474.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046472.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.654, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046475.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046477.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046478.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046478.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046478.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046478.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.916, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046479.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046481.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046481.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046481.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046481.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046482.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046482.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046482.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046483.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046483.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046483.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046484.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046484.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046484.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046483.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046485.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046485.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046485.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046485.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046487.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046486.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046487.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046483.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.018, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046487.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046487.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046487.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.994, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046482.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046488.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046488.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046488.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046489.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046489.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046489.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046489.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046490.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046491.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046492.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046489.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.928, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046492.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046492.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046492.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046488.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.225, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046492.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046493.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046495.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046496.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046494.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.031, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046497.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046493.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.454, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046482.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.171, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046481.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.517, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046499.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046499.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046499.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046498.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046499.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046500.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046500.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046500.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046499.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046500.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046501.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046501.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046501.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046500.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.568, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.493, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046502.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046502.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046502.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046480.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.926, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046503.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046503.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046503.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046478.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.218, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046503.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046503.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046476.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.915, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046505.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046506.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046504.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.718, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046508.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046508.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046508.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046510.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046507.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.4, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046510.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046510.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046510.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046512.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046513.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046513.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046513.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046513.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.906, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046514.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046516.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046516.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046516.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046516.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046517.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046517.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046517.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046518.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046518.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046518.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046518.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046520.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046520.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046519.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.625, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046521.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046522.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046518.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046522.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046522.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046522.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046517.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046523.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046523.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046523.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046523.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046524.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046524.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046524.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046525.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046526.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046524.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.167, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046523.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.505, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046527.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046528.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046529.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046529.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046529.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046530.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046531.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046529.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.109, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046533.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046532.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046528.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.335, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046533.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046517.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.454, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046533.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046533.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046533.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046516.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046535.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046535.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046535.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046534.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046535.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046536.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046536.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046536.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046535.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.621, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046537.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046537.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046537.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046515.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.954, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046538.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046538.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046538.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046513.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.319, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046538.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046538.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046511.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.931, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046540.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046541.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046539.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.31, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046543.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046543.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046543.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046543.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046544.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046545.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046542.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.277, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046318.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 227.345, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046545.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046252.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 293.978, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046546.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046547.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046547.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046547.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046548.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046549.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046550.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046546.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.015, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046552.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046552.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046552.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046553.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046553.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046554.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046555.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046555.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046555.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046555.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.491, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046555.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046556.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046557.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046557.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046557.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046558.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046559.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046559.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046559.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046559.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.088, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046560.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046561.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046561.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046561.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046562.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046562.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046562.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046564.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046564.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046564.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046565.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046565.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046565.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046566.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046566.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046566.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046567.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.919, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046568.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046566.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.613, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046570.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046569.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.242, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046565.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046572.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046572.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046572.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046574.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046574.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046573.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046574.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046575.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046575.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046576.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046576.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046575.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046576.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.42, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046576.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046577.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046576.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046571.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.012, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046577.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046577.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046577.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046578.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046578.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046578.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046578.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046579.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046580.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046578.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.191, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046581.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.614, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046577.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046582.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046564.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.627, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046582.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046582.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046582.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046562.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.101, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046583.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046584.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046584.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046584.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046583.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046584.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046586.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046586.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046586.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046585.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046562.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.746, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046587.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046587.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046586.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046561.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.19, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046587.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046587.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046587.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046559.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.084, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046588.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046588.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046588.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046557.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046557.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.152, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046590.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046591.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046592.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046592.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046593.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046593.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046594.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046594.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.018, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046589.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.305, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046594.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046594.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046551.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.35, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046546.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.96, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046596.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046597.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.635, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046599.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046600.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046600.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046600.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046601.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046601.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046601.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046598.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.989, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046602.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046604.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046605.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046605.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046606.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046606.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046606.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046605.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046605.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.006, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046606.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046607.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046606.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046607.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046607.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046608.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046608.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046608.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046608.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046610.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046610.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046610.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046612.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046612.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046612.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046613.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046614.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046612.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.387, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046616.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046615.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.156, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046610.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.48, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046616.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046616.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046617.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046617.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046617.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046618.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046620.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046620.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046620.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046619.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046620.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046617.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.145, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046621.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046622.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046621.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046616.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.584, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046622.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046622.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046624.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046625.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046623.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.008, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046626.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046622.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.319, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.394, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046609.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.629, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046628.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046628.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046628.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046627.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046628.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046629.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046630.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046630.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046628.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046630.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046630.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046631.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046631.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046630.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.839, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046608.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.008, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046631.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046631.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046631.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046607.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.382, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046632.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046632.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046632.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046605.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.153, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046632.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046633.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046632.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046603.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.967, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046633.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046633.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046633.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046634.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046635.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046636.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046633.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.2, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046637.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046638.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046638.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046638.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046639.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046637.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.773, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046640.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046642.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046643.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046643.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046643.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046644.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046646.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046646.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046647.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046649.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046649.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046649.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046650.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046650.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046650.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046651.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046652.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046653.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046650.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.987, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046653.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046653.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046653.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046649.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046654.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046654.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046654.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046655.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046655.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046655.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046655.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046657.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046657.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046658.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046656.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046658.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046658.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046658.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046655.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.222, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046659.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046654.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046661.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046661.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046661.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046662.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046663.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046661.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.027, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046660.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.425, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.942, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046665.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046664.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.354, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046648.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.113, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046666.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046666.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046666.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046667.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046668.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046647.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.438, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046645.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046669.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046643.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.384, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046670.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046670.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046670.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.899, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046641.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.157, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046672.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046673.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046673.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046674.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046675.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046671.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.996, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046675.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046675.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046675.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046676.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046676.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046676.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046676.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046676.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046675.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.399, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046677.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046679.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046680.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046680.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046681.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046681.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046681.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046680.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046680.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.943, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046681.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046682.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046682.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046683.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046683.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046684.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046684.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046684.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046684.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046687.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046687.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046687.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046687.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046688.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046689.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.951, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046690.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046690.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046690.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046686.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046692.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046692.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046693.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046693.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046692.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.601, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046694.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046695.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.197, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046691.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.574, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046696.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046698.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046698.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046698.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046698.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046698.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046699.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.0, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046701.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046700.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046697.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046702.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.791, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046702.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046703.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046702.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046685.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.231, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046703.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046703.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046703.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046703.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046704.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046684.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.394, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046706.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046705.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046683.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046706.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046706.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046706.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046680.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.35, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046707.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046707.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046707.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.874, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046678.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.131, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046707.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046708.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046709.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046710.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046707.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.738, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046712.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046712.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046712.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046712.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046712.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046711.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.044, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046713.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046715.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046716.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046716.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046717.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046717.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046717.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046716.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.913, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046716.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.052, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046718.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046718.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046718.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046719.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046719.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046719.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046722.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046722.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046722.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046723.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046724.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046722.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.903, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046726.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046725.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.981, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046726.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046726.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046727.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046727.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046729.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046729.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046729.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046729.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046730.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046731.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046728.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.094, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046726.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.015, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046733.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046733.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046733.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046734.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046736.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046736.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046736.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046735.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046736.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046733.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.983, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046737.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046738.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046737.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046732.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.306, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046738.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046721.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.849, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046738.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046738.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046738.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.117, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046740.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046740.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046740.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046739.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046740.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046740.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046720.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.168, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046741.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046719.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.473, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046742.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046742.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046742.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046716.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.08, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046742.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046742.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.437, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046714.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.66, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046745.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046746.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046743.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.859, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046748.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046747.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.653, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046750.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046751.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046751.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046752.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046752.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046753.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046751.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.986, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046751.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.102, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046753.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046753.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046753.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046754.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046754.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046756.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046756.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046756.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046756.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046758.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046759.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.931, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046761.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046760.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.05, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046757.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046761.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046762.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046762.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046763.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046763.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046764.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046764.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046764.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046765.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046766.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046763.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.156, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046762.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.584, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046768.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046768.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046768.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046769.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046771.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046771.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046771.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046770.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046772.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046768.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.914, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046772.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046772.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046767.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.354, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046756.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.565, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046774.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046774.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046774.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046773.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046774.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046775.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046775.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046775.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046774.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046775.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046775.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046755.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.051, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046776.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046754.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.378, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046777.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046777.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046777.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046751.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.95, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046777.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046777.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.255, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046749.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.476, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046779.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046780.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046781.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046778.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.743, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046782.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.283, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046783.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046785.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046786.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046786.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046787.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046787.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046786.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.862, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046786.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.994, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046788.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046788.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046788.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046788.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046790.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046790.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046790.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046791.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046791.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046791.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046793.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046794.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046792.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.992, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046796.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046795.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046791.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046796.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046796.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046797.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046797.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046797.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046798.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046798.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046799.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046800.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046797.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.117, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046801.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046796.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.51, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046803.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046803.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046803.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046804.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046806.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046805.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046806.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046803.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.95, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046807.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046807.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046807.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046802.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.425, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046807.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046791.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.799, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046808.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046808.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046808.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046790.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.112, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046808.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046808.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046809.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046810.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.175, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046789.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.483, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046811.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046786.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.052, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046812.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046812.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046812.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.355, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046784.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.597, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046814.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046815.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046816.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046813.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.926, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046817.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046817.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046817.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046817.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046817.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.148, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046818.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.887, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046821.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046823.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046823.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046823.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046823.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046824.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046824.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046824.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046824.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046827.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046827.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046827.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046827.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046828.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046829.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.076, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046830.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046830.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046830.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046826.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.811, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046832.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046832.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046832.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046834.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046832.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.815, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046834.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046834.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046834.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046834.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046835.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046836.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.302, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046836.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046836.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046836.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046831.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046836.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046838.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046839.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.022, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046841.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046840.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.378, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046837.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.214, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046842.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.612, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046842.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046842.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046842.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046825.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.933, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046843.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046845.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046845.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046845.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046844.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046824.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.976, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046845.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046845.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046823.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.321, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046820.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.772, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046846.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.139, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046819.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.372, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046848.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046848.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046848.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046847.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.054, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046848.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046849.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046849.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046850.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046848.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.224, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046595.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 255.407, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046851.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046546.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 305.089, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046851.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046853.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046855.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046854.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.633, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046859.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046860.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.258, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046861.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046862.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046864.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046864.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046864.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046864.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046864.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046866.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.883, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.011, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046866.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046866.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046866.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046866.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046869.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046869.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046869.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046870.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046870.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046870.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046872.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046873.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046871.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.238, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046875.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046874.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.029, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046870.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.167, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046875.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046877.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046877.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046877.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046877.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046877.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046878.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046878.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046879.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.977, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046881.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046880.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046876.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.361, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046881.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046881.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046883.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046884.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046885.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046882.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.878, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046885.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046885.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046885.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046881.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.206, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046885.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046870.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.802, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046887.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046887.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046887.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046869.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.26, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046887.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046888.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046888.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046888.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046887.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046888.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046888.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046890.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046890.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046889.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.517, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046890.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046890.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046890.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046868.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.935, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046865.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.361, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046891.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.931, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046863.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.209, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046893.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046895.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046895.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046895.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046895.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046896.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.741, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046892.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.012, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046897.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046897.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046897.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046897.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046856.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.002, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.241, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046899.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046900.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046901.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046901.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.904, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046901.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046901.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046902.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046902.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046903.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046903.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046903.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046904.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046901.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.069, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046906.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046906.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046905.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046906.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046907.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046908.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046908.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046908.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046908.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046909.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046910.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046910.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046910.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046911.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046911.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046911.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046912.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046913.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046913.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046913.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046914.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046914.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046914.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046915.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046916.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046914.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.16, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046918.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046917.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046913.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.191, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046920.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046920.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046920.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046921.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046922.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046923.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046919.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.404, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046925.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046925.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046925.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046925.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046926.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046927.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046925.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.031, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046929.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046928.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046924.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.408, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046929.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046913.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.983, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046929.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046929.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046929.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046911.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.232, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046930.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046930.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046931.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046931.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046930.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046931.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046932.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046932.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046932.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046931.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046932.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046932.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046911.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.295, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046933.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046910.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046934.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046934.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046934.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046908.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.225, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046934.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046934.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046906.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046906.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.964, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046936.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046937.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046938.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046939.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046939.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046939.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046935.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.115, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046939.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046940.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046941.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046941.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046941.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046941.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046941.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046939.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.754, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046943.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046942.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046943.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046943.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046944.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046945.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046945.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046945.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.936, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046946.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046949.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046949.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046949.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046950.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046950.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046950.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046952.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046953.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046951.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.049, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046955.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046954.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.07, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046950.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.985, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046955.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046955.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046956.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046956.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046956.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046957.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046957.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046957.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046957.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046957.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046959.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046960.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046956.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.366, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046961.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046961.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046961.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046955.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.908, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046961.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046962.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046962.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046962.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046962.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046963.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.64, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046964.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046962.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.851, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046966.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046965.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046961.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.216, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046966.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046950.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046967.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046967.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046967.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046949.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.392, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046969.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046969.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046969.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046968.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046969.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046970.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046970.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046970.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046969.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.66, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046970.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046970.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046948.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.041, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046945.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.4, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046972.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046971.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046943.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.973, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046943.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.209, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046972.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046972.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046972.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046973.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046974.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046975.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046976.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046976.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046972.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.759, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046976.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046976.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046977.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046978.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046976.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.391, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046980.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046981.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046981.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046982.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046982.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046982.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046981.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046981.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.82, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046983.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046983.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046983.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046983.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046984.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046984.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046984.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046985.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046985.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046985.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046987.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046987.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046987.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046988.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046989.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046987.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.917, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046991.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046990.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.957, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046991.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046991.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046994.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.377, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046995.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046997.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046996.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046997.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046992.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.872, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046997.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046997.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046997.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046991.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.332, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046999.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046999.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046999.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046999.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046999.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047000.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047001.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.973, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046998.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.445, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046986.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.364, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047004.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047003.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046985.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047004.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047004.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047004.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047005.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046985.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.766, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047007.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047006.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046984.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.136, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047007.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047007.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047007.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046981.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.51, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047008.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047008.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047008.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.89, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046979.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.118, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047010.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047011.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047012.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047009.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.966, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047013.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047013.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047013.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047013.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047014.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047013.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.034, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047016.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047018.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047019.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047019.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.866, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047019.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047019.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047019.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047020.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047020.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047022.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047022.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047022.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047022.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047024.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047024.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047024.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047024.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047024.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047025.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.001, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047027.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047026.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047023.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047028.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047028.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047028.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047029.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047029.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047030.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047030.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047030.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047030.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047031.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047029.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.12, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047033.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047032.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047028.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.42, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047033.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047033.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047034.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047034.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047034.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047035.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047037.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047037.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047037.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047036.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.554, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047038.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047034.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.868, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047038.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047038.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047038.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047033.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.345, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047022.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.547, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047040.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047040.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047040.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047039.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047040.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047040.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047041.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047021.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.816, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047020.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.227, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047042.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047043.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047017.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.596, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047043.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047043.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047043.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.859, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047015.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.069, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047045.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047045.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047046.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047047.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047044.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.782, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047048.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.717, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047049.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047051.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047052.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047053.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047053.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047054.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047052.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047052.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.781, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047054.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047054.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047054.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047054.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047056.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047056.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047056.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047056.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047057.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047057.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047057.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047058.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047058.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047058.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047058.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047059.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047061.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047060.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047061.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047058.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047061.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047061.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047061.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047057.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047062.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047062.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047063.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047063.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047064.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047064.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047064.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047065.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047066.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047064.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.091, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047062.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.385, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047068.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047068.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047068.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047068.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047069.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047071.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047071.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047073.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047070.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047073.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047068.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.994, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047073.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047074.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047073.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047067.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.377, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047074.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047057.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.447, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047074.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047074.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047074.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047056.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047075.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047076.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.737, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047077.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047055.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.06, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047078.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047078.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047078.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047052.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.341, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047078.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047078.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047050.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.991, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047081.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047082.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047079.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.973, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047084.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047083.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.392, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047086.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047088.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047089.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047089.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.873, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047089.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047089.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047089.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047090.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047090.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047092.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047092.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047092.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047094.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047095.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.926, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047097.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047096.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.051, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047093.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047097.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047098.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047099.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047099.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047099.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047100.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047101.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047099.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.052, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047103.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047102.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047097.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.37, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047103.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047103.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047103.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047104.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047104.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047104.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047104.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047105.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047107.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047107.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047106.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047108.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047104.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.187, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047108.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047109.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047108.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047103.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047109.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047092.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.733, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047109.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047109.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047109.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.043, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047111.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047111.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047111.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047110.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047111.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047111.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047091.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.099, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047112.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047090.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.407, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047087.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.832, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047113.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.119, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047085.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.334, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047114.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047114.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047114.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047114.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047115.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047115.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047116.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047117.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047114.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.624, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047119.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047120.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047118.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.475, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046898.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 222.417, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047121.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995046852.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 269.371, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047121.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047122.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047122.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047123.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047124.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047125.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047121.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.932, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047127.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047127.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047127.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047127.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047128.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047129.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047129.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047129.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047129.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047129.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047130.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047130.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047130.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047130.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047127.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.509, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047131.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047131.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047131.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047133.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047133.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047133.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047133.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047134.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047134.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047134.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047134.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047135.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047135.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047135.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047135.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.209, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047136.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047137.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047137.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047137.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047138.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047138.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047138.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047140.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047140.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047140.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047142.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047142.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047143.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047143.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047141.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047143.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047143.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047143.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047140.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.129, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047145.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047144.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.113, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.108, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047147.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047147.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047147.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047147.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047148.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.029, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047150.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047149.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047146.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.336, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047150.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047150.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047151.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047152.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047152.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047152.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047152.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047153.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047154.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047152.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.023, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047155.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047150.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.332, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047139.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.746, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047138.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.035, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047157.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047157.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047157.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047156.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047157.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047157.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047159.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047159.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047158.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047138.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.251, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047160.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047160.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047160.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047137.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.526, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047160.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047161.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047161.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047134.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.688, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047161.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047162.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047161.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.605, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047132.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.997, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047164.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047165.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047166.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047166.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047166.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.807, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047163.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.167, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047167.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047167.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047167.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047167.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047126.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.897, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047121.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.378, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047168.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047168.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047169.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047169.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047169.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047169.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047170.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047171.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047172.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047168.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.019, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047172.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047172.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047173.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047174.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047172.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.207, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047176.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047176.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047176.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047175.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047177.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.5, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047178.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047179.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047179.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047179.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.877, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047179.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.067, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047180.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047181.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047181.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047183.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047183.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047183.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047185.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047185.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047185.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047185.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047185.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047186.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047187.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047187.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047187.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047188.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047187.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047188.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.038, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047189.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047189.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047188.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047184.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.028, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047190.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047190.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047190.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047190.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047191.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047191.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047191.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047192.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047193.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047191.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.092, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047190.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.49, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047195.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047195.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047195.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047195.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047196.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047196.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047196.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047196.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047196.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047197.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047197.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047197.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047198.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047195.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.045, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047200.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047199.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047194.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.362, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047200.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047183.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.868, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047200.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047200.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.234, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047201.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047203.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047203.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047203.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047202.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047182.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.532, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047203.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047204.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047203.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047181.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.875, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047204.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047204.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047204.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047179.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.461, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047206.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047206.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047206.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047177.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.299, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047177.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.577, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047208.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047209.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047207.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.93, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047210.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047210.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047210.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047210.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047211.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047212.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047210.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.863, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047214.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047216.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047216.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047216.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047216.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.833, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047217.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.997, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047218.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047218.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047218.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047218.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047219.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047219.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047219.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047219.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047221.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047221.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047221.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047222.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047222.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047222.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047222.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047224.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047225.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047225.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047223.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047225.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047225.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047225.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047222.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.339, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047227.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047226.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.178, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047221.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.374, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047227.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047228.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047228.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047228.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047228.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047229.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047229.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047229.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047229.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.839, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047230.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047231.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047228.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.198, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047227.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.565, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047233.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047234.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047234.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047234.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047234.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047235.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047236.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047234.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.189, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047237.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047232.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.343, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.168, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047220.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.437, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047239.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047239.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047239.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047238.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047239.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047239.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.793, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047252.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047252.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047240.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.317, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047219.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.427, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047254.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047256.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047254.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.893, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047218.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047256.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047256.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047257.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047216.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.742, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047257.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047258.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047257.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.95, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.881, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047215.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.42, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047259.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047260.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047260.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047260.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047260.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047260.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047261.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047262.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047262.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047262.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047262.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047263.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047264.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047259.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.629, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047264.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047264.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047265.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047265.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047265.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047266.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047266.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047266.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047266.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047267.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047264.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.174, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047269.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047269.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047269.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047269.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047268.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047270.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.781, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047271.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047272.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047272.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047273.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047274.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047274.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047274.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047273.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.262, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047273.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.467, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047274.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047275.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047275.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047275.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047277.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047277.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047278.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047278.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047278.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047280.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047280.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047281.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047283.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047280.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.031, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047283.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047283.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047283.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.108, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047285.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047285.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047285.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047284.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047285.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.103, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047286.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047286.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047286.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.414, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047279.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.485, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047287.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047287.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047288.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047288.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047288.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047289.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047290.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047288.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.082, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047292.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047291.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047287.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.525, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047293.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047293.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047295.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047296.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047294.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.189, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047298.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047297.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047293.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047298.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047278.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.863, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047298.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047298.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047298.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047277.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.354, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047299.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047299.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047299.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047299.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047299.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047302.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047302.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047302.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047300.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.767, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047302.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047303.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047302.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047276.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.233, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047303.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047303.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047303.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047272.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.044, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047304.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047304.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047304.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047270.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047269.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.137, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047306.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047307.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047308.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047308.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047308.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047305.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.352, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047308.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047309.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047309.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047309.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047309.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047310.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047310.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047311.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047311.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047311.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047311.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047311.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047308.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.167, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047313.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047313.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047313.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047313.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047314.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047314.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047314.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047314.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047315.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047315.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047315.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047315.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047316.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047317.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047317.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047317.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047318.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047318.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047318.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047319.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047319.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047319.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047322.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047322.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047322.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047322.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047323.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047324.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.205, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047325.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047325.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047325.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.093, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047320.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.274, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047326.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047326.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047326.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047327.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047327.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047327.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047327.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047328.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047329.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.634, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047330.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047327.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.914, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.64, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047326.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.25, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047332.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047332.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047332.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047333.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047334.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047332.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.904, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047336.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047335.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047331.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.294, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047336.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047319.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.865, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047336.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047336.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047336.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047318.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.201, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047338.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047338.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047339.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047337.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.612, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047339.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047340.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047340.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047340.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047339.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047318.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.473, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047340.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047340.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047317.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.866, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047315.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.752, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047342.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047341.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.606, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047312.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.883, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047342.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047343.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047344.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047345.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047342.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.939, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047346.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047346.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047347.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047347.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047347.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047346.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.85, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047348.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047350.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047351.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047351.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047352.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047352.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047352.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047351.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047351.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.994, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047352.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047353.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047352.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047353.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047353.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047354.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047354.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047354.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047354.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047356.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047356.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047356.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047358.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047358.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047358.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047359.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047361.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047360.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047361.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047357.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.243, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047361.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047361.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047361.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047356.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.119, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047362.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047362.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047364.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047366.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047366.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047365.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047366.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047363.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.909, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047367.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047367.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047367.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047362.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.378, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047369.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047369.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047369.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047370.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047371.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.137, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047368.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.517, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.054, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047373.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047372.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047355.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.284, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047373.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047373.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047374.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047374.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047373.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047374.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047374.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047375.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047375.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047374.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047376.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047376.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047376.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047376.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047376.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047354.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.468, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047353.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.835, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047377.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047351.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.515, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047378.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047378.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047378.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.088, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047349.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.345, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047379.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.461, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047381.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047382.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047383.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047380.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.462, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047168.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 215.205, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047383.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047121.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 262.445, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047384.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047385.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047385.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047385.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047385.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047385.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047386.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047387.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047384.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.815, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047389.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047389.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047389.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047389.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047389.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047390.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047390.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047390.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047390.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047390.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047391.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047392.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047392.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047392.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047392.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047392.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.73, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047393.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047394.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047394.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047394.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047394.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047394.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047396.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047397.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047397.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047398.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047398.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047398.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.304, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047399.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047400.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047400.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047401.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047401.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047401.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047401.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047402.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047402.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047402.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047403.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047404.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047404.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047405.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047405.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047405.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047405.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047406.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047407.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047405.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.337, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047409.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047408.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.14, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047404.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.387, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047409.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047410.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047410.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047410.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047410.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047411.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047411.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047411.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047411.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047411.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047412.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047413.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047413.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047414.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047414.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047413.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047414.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047410.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.092, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047414.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047415.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047414.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.628, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047409.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.555, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047415.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047415.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047417.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047418.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047416.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.901, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047419.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047415.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.292, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047403.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.341, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047402.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.59, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047421.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047421.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047420.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.199, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047423.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047424.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047424.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047424.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047424.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047424.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047401.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.459, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047400.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.845, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047425.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047398.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.112, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047426.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047426.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047426.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.432, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047395.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.767, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047428.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047429.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047430.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047430.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047430.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047431.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047431.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.477, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047427.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.786, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047432.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047432.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047432.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047432.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047388.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.221, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047384.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.646, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047434.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047435.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.743, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047436.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047436.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047436.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047436.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047437.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047437.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047437.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047437.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047437.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047438.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047438.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047438.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047439.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047439.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047439.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047436.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.129, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047440.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047441.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047442.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047443.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047443.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047444.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047444.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047444.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047443.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047443.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.116, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047444.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047445.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047445.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047445.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047445.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047446.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047446.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047446.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047447.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047447.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047447.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047447.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047448.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047448.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047450.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047451.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047451.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.809, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047451.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047451.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047451.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047452.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047449.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.27, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047454.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047453.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.09, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047448.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.25, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047454.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047456.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047456.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047456.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047456.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047457.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.043, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047460.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047458.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047455.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.433, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047460.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047460.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047462.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047463.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047461.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.091, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047465.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047464.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047460.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.509, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047465.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047448.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.312, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047465.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047465.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047465.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047447.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047467.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047467.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047467.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047467.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047466.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047468.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047469.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047469.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047469.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047468.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047446.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.053, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047469.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047469.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047445.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.427, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047443.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.276, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047471.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047470.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047441.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.161, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047441.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.421, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047472.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047473.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047474.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047471.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.029, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047475.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047475.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047475.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047476.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047476.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047477.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047475.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.673, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047478.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.641, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047480.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047481.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047481.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047482.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047482.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047482.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047482.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047481.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047481.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.013, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047482.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047483.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047483.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047483.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047483.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047484.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047484.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047484.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047485.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047485.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047485.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047486.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047486.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047487.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047487.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047488.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047488.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047488.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047488.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047489.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047490.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047491.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047488.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.0, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047491.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047491.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047491.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.079, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047487.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.938, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047492.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047492.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047492.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047493.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047493.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047493.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047493.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047495.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047495.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047495.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047494.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047495.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047496.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047496.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047496.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047493.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.183, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047497.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047492.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.545, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047499.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047499.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047499.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047499.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047500.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047501.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.021, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047498.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.388, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047486.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.899, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047503.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047502.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047485.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.193, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047503.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047503.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047504.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047503.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.62, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047505.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047484.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.239, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047507.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047506.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047483.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.487, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047507.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047507.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047507.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047481.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.27, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047508.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047508.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047508.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.849, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047479.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.139, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047510.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047511.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047511.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047511.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047511.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047511.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047512.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047512.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047512.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047509.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.856, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047513.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047513.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047513.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047513.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047514.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047513.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.476, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047516.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047515.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047516.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047516.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047517.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047518.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047518.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047518.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047518.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.943, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047519.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047520.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047520.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047521.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047521.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047522.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047522.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047522.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047522.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047523.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047523.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047523.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047524.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047524.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047524.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047524.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047525.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047526.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047527.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047524.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.937, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047527.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047527.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047527.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.088, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047523.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047528.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047528.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047528.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047529.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047529.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047529.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047529.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047531.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047530.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047532.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047529.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.96, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047528.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.266, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047534.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047534.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047534.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047535.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047536.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047534.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.057, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047538.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047537.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047533.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.472, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047538.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047523.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.511, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047538.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047538.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.521, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047522.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047540.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047542.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047542.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047542.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047541.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047521.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.06, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047542.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047542.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047520.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.256, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047518.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.654, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047544.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047543.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047516.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.17, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047516.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.407, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047545.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047546.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047547.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047548.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047549.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047544.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.346, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047549.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047549.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047549.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047550.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047549.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.234, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047551.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047553.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047554.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047554.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047555.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047555.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047555.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047554.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.85, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047554.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.978, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047555.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047557.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047557.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047557.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047558.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047558.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047558.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047559.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047559.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047559.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047561.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047561.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047561.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047562.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047563.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047561.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.832, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047565.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047564.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047565.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047565.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047566.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047566.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047566.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047567.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047567.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047567.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047568.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047566.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.65, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047568.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047568.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047568.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047569.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047566.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.123, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047571.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047570.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047565.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.526, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047571.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047571.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047571.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047572.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047572.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047572.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047572.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047573.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047575.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047574.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047575.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047572.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.073, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047575.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047575.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047575.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.392, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047571.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047576.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047560.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.583, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047577.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047577.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047577.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047559.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.966, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047577.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047578.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047578.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047578.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047577.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047578.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047578.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047580.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047579.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047559.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.213, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047580.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047580.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047580.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047558.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.555, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047580.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047581.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047581.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047554.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.767, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047581.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047581.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047581.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.368, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047552.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.642, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047583.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047583.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047582.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.323, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047583.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047584.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047585.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047583.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.3, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047433.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 153.019, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047586.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047384.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 202.47, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047588.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047589.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047590.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.482, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047592.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047592.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047593.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047594.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047591.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.518, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047597.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047598.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047596.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.006, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047601.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047601.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047601.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047601.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047601.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047602.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047602.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047602.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047603.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047603.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047603.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047604.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047603.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047603.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047604.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047604.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047604.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047604.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047605.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047605.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047605.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047606.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047606.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047606.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047608.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047608.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047608.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047609.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047611.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047611.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047611.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047610.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.621, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047612.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047608.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.128, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047612.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047613.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047612.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.2, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.268, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047615.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047615.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047615.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047615.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047616.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047617.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.941, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047614.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.341, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047620.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047620.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047620.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047620.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047621.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047621.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047622.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047619.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.859, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047618.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.172, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047623.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047607.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.757, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047624.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047624.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047624.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047606.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.038, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047624.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047624.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047625.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047626.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047605.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.135, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047627.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047627.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047627.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047605.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.417, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047627.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047627.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047628.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047602.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.358, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047629.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047629.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047629.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.043, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047599.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.514, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047631.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047632.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047632.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047632.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047632.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047633.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.587, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047630.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.871, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047634.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047634.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047634.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047634.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047595.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.197, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.994, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047636.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047636.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047636.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047636.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047637.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047637.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047637.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047638.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047639.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047639.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047639.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047639.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.344, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047641.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047640.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.73, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047642.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047644.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047644.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047644.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047644.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047644.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047645.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047645.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047645.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047646.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047647.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047647.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047647.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047646.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047646.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.861, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047647.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047648.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047648.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047648.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047648.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047649.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047649.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047649.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047651.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047651.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047651.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047652.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047652.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047652.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047652.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047653.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047655.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047655.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047654.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047655.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047652.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.143, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047655.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047656.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047655.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047651.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.095, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047656.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047658.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047658.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047658.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047658.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047659.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047659.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047659.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047659.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047660.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047661.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047658.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.222, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047657.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047663.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047663.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047663.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047664.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047666.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047666.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047668.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047665.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.405, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047668.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047663.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.765, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047668.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047668.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047668.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047662.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.132, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047650.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.538, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047670.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047670.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047670.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047669.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047670.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047670.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047672.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047672.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047671.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047649.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.738, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047672.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047672.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047672.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047648.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.119, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047673.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047673.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047673.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047645.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.715, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047673.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047674.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047673.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.54, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047643.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.925, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047674.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047674.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047675.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047675.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047676.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047677.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047678.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047674.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.039, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047680.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047679.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.28, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047681.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047682.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047682.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047683.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047683.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047683.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047684.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047684.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047684.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047684.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047685.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047685.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047685.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.965, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047685.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.085, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047686.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047687.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047687.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047689.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047689.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047689.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047691.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047691.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047691.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047692.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047694.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047693.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047694.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.25, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047695.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047696.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047695.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.232, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047690.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.895, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047697.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047697.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047697.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047697.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047698.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047698.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047698.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047699.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047700.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.83, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047698.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.654, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047702.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047701.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047697.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.183, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047702.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047702.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047705.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047705.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047705.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047704.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047706.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047706.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047706.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047703.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.433, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047708.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047707.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047702.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.979, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047708.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047689.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.095, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047708.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047709.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047708.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.635, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.636, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047709.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047710.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047710.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047710.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047709.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047710.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047711.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047711.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047711.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047710.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047711.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047712.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047712.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047712.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047711.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047688.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.296, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047712.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047712.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047687.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047685.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.569, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047714.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047713.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047682.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.084, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047682.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.217, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047715.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047715.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047715.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047716.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047717.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047718.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047715.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.148, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047720.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047719.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.046, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047722.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047723.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047723.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047723.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047723.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047723.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047725.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047725.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047725.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.904, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047725.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047726.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047726.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047726.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047726.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047727.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047727.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047727.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047729.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047729.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047729.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047730.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047730.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047730.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047730.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047731.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047732.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047734.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047730.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.036, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047734.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047734.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047734.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.083, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047729.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.912, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047735.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047735.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047737.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047738.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047736.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.023, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047739.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047735.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.404, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047741.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047742.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047743.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047743.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047743.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047742.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.849, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047744.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.26, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047740.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.604, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.846, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047746.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047745.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047728.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.098, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047746.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047746.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047746.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047747.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047748.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047727.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.195, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047726.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.624, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047749.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047724.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.264, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047750.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047751.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047750.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.604, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047721.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.004, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047752.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.434, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047754.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047753.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.454, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047635.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 119.818, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047755.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047587.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 168.613, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047755.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047756.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047756.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047757.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047758.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047758.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047759.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047761.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047760.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.925, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047756.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.985, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047761.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047761.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047762.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047763.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047761.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.352, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047764.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047765.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047767.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047769.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047770.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047770.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047770.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047771.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047771.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047771.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.946, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047771.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.091, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047772.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047774.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047774.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047774.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047775.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047775.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047775.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047776.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047777.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047777.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047778.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047780.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047780.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047780.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047779.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047780.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047777.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.345, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047781.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047781.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047781.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.137, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047775.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.45, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047782.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047782.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047782.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047782.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047783.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047783.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047783.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047784.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047785.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047786.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047783.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.864, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047782.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.316, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047788.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047788.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047788.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047789.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047790.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.635, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047788.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.84, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047791.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047787.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.167, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047775.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.9, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047774.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.185, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047793.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047793.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047793.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047792.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047793.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047794.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047793.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.601, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047795.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.308, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047773.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.558, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047796.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047797.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047770.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.429, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047797.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047797.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047797.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.045, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047768.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.376, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047799.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047800.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047801.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047801.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047801.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047801.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.301, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047798.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.469, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047803.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047803.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047803.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047803.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047761.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.248, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047756.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.775, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047805.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047806.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.037, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047807.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047807.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047807.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047807.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047808.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047809.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047809.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047809.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047809.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047809.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047810.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047807.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.864, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047811.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047814.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047816.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047816.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047816.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047818.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047818.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047819.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047819.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047819.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047820.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047820.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047820.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047819.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047821.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047821.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047821.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047821.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047823.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047823.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047822.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047823.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047819.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.151, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047823.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047824.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047823.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047818.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.131, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047824.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047824.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047825.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047825.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047825.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047826.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047827.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047825.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.14, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047829.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047828.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047824.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.597, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047829.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047831.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047831.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047831.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047831.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047832.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047832.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047832.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047832.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047832.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047833.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047831.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.08, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047835.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047834.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047830.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.428, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047835.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.585, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047835.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047835.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047817.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047836.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047838.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047838.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047839.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047837.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.563, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047816.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.909, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047839.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047840.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047839.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.601, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047815.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.364, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047840.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047840.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047840.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047813.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.944, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047841.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047841.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047840.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.489, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047812.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.79, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047842.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047843.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047844.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047841.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.917, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047846.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047846.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047847.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047847.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047847.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047847.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047847.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047845.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.681, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047848.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047850.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047851.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047851.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047851.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047851.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.94, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047852.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047853.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047853.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047856.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047857.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047857.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047858.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047859.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047857.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.206, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047861.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047860.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.083, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.068, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047861.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047863.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047863.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047863.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047863.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047864.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047865.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047866.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.975, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047866.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047867.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047866.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047862.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.578, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047867.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047867.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047868.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047868.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047868.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047869.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.752, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047870.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047868.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.178, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047872.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047871.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047867.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.497, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047872.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047855.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.034, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047872.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047872.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047872.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.288, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047875.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047875.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047875.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047873.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047875.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047876.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047876.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047876.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047875.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047854.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.416, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047876.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047876.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047853.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047851.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.187, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047878.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047877.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047849.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.048, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047878.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047878.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047879.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047880.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047881.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047881.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047881.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047881.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047881.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047878.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.888, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047882.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047883.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047884.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047882.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.319, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047885.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047887.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047887.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047887.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047887.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.91, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047888.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047889.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047889.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047889.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047889.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047890.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047890.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047890.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047890.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047894.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047894.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047894.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047894.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047895.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047896.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.015, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047897.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047897.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047897.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047893.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.893, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047899.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047899.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047899.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047901.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047901.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047900.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047902.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.11, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047898.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.48, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047904.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047904.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047904.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047905.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047906.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047904.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.947, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047907.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047903.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.221, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.566, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047892.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.864, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047910.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047910.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047910.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047908.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.622, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047910.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047910.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047912.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047912.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047911.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047890.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.914, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047912.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047912.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047912.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047889.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.184, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047913.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047913.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047913.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047887.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.626, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047913.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047913.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.058, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047886.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.318, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047915.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047916.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047916.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047916.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047916.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047916.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047917.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047917.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047917.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047917.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047918.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047914.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.833, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047918.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047918.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047918.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047919.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047918.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.976, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047920.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.927, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047923.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047924.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047924.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047924.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047924.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047925.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047925.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047926.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047926.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047929.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047929.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047929.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047929.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047930.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.993, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047932.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047932.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047931.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.942, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047928.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047934.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047934.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047934.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047935.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047934.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047935.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047935.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047935.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047936.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047936.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047935.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.66, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047936.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.066, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047938.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047938.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047937.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047933.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.424, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047938.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047938.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047940.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047941.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047939.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.09, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047942.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047938.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.366, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047943.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.423, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047943.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047943.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047943.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.348, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047927.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.595, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047944.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047945.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047945.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047945.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047944.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047945.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047945.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047947.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047946.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047926.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.849, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047947.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047947.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047947.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047924.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.129, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047947.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047948.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047948.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047922.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.436, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047948.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047948.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047948.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.776, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047921.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.037, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047950.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047951.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047951.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047952.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047953.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047949.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.019, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047953.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047953.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047954.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047953.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.744, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047956.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.814, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.897, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047958.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047959.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047959.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047959.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047961.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047961.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047962.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047962.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047962.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047962.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047963.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047963.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047963.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047964.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047964.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047964.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047964.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047965.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047967.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047966.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047967.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047964.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.035, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047967.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047967.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047967.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047963.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.917, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047968.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047968.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047970.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.627, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047972.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047969.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.113, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047973.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047968.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.551, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047975.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047975.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047975.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047975.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047976.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047977.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047975.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047974.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.307, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047963.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.725, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047980.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047978.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.37, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047962.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.899, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047980.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047980.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047980.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047980.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047981.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047961.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.148, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047983.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047982.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047959.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.006, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047983.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047983.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047983.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047957.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.334, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047984.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047984.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047984.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047955.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.908, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047986.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047987.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047987.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047987.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047988.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047985.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.963, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047989.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.509, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047990.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047992.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047994.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.817, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047994.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047994.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047994.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047994.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047995.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047996.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047996.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047996.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047998.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047998.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047998.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047999.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047999.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047999.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048000.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048001.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047999.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.978, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048002.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048002.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048002.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.035, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047998.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.797, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048003.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048003.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048003.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048004.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048004.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048004.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048005.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048005.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048005.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048004.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048005.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048006.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048006.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048006.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048007.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048004.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.003, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048003.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.46, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048009.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048009.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048009.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048009.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048010.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048011.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048009.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048013.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048012.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048008.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.401, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048013.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.437, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048014.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048014.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048014.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047997.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048015.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048015.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048015.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048015.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048015.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048017.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048017.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048017.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048016.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047996.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.898, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048017.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048017.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047995.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.285, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047993.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.539, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048019.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048018.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.786, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047991.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.995, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048019.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048019.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048019.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048020.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048021.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048022.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048023.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048023.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048019.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.86, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048023.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048023.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048023.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.092, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048024.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048026.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.902, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048029.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048029.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048030.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048032.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048032.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048032.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048033.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048033.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048033.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048033.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048034.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048035.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048033.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.922, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048036.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048036.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048036.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.025, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048032.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.768, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048038.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048038.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048038.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048038.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048040.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048039.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048040.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048041.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.997, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048037.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.389, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048044.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048045.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048043.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.028, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048047.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048046.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048042.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.317, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048047.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.355, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048047.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048047.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048047.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.399, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048031.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.541, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048048.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048049.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048049.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048049.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048048.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048049.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048049.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048051.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048051.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048050.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048030.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.786, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048051.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048051.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048051.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048028.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.062, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048027.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.317, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048052.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.545, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048025.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.769, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048053.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048054.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047804.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 250.783, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048056.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995047756.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 300.357, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048056.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048057.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048057.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048057.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048057.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048058.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048059.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048056.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.541, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048061.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048061.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048061.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048061.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048062.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048063.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048063.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048063.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048063.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048064.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048064.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.424, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048065.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048066.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048067.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048069.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048070.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048070.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048071.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048071.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048071.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048070.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.906, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048070.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048071.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048072.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048072.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048073.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048073.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048075.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048075.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048075.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048075.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048077.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048078.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.89, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048080.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048079.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048076.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048080.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048082.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048082.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048083.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048083.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048082.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.565, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048083.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048083.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048083.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048084.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.954, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048086.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048085.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.593, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048081.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.309, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048086.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048086.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048086.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048087.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048087.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048087.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048087.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048088.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048089.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048090.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048087.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048090.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048090.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048090.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.98, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048086.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048092.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048075.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.721, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048092.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048092.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048092.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.066, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048093.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048095.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048095.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048095.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048094.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048074.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.238, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048095.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048095.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048073.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.574, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048070.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.183, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048096.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048068.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.056, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048098.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048099.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048100.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048101.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.241, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048097.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.52, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048102.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048102.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048102.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048102.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048060.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.142, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048056.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.197, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048104.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048105.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.958, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048106.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048107.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048107.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048107.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048108.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048109.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048106.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.057, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048111.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048110.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048111.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048112.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048113.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048113.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048113.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048113.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.983, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048114.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048115.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048115.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048116.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048117.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048117.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048117.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048119.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048119.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048119.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048120.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048120.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048120.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048120.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048120.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048121.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048119.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.239, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048123.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048122.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.049, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.103, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048125.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048125.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048125.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048126.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048125.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048126.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048126.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048127.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048127.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048127.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048126.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048127.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.96, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048129.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048129.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048128.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048124.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.383, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048129.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048129.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048131.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048132.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048130.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.978, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048134.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048133.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.574, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048129.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.386, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048134.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048118.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.817, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048134.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048135.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048134.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.441, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048117.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.082, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048135.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048136.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048136.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048136.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048135.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048136.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048137.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048137.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048137.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048136.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048137.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048137.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048117.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.354, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048138.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048115.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048139.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048139.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048139.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048113.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.311, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048139.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048140.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048139.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048111.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.853, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048111.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.167, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048140.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048140.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048140.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048141.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048142.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048142.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048143.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048144.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048144.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048140.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.794, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048144.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048144.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048145.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048145.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048145.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048145.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048145.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048146.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048144.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.656, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048147.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048150.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.822, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048151.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048152.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048152.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048152.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048152.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048153.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048153.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048153.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048153.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048155.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048155.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048155.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048156.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048156.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048156.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048156.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048157.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048158.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048156.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.982, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048159.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048159.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048159.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048155.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.832, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048161.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048162.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048162.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048162.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048163.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048164.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.242, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048160.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.593, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048165.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048167.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.573, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048194.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048195.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048195.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048168.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048195.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.218, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048197.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.101, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048198.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048197.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048166.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.108, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048199.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.597, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048199.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048200.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048199.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048154.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.199, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048200.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048201.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048201.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048201.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048200.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048201.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048201.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048203.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048203.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048202.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048153.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.945, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048203.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048203.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048203.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048152.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.301, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048204.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048204.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048204.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048149.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.057, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048205.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048205.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048205.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.516, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048148.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.029, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048206.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048206.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048207.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048207.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048207.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048207.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048208.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048209.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048210.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048210.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048210.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048210.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048210.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048211.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048211.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048211.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048211.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048211.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048206.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.616, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048212.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048212.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048213.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048213.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048213.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048213.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048214.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048212.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.01, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048216.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048215.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048216.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048217.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048217.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048217.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048217.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048217.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048218.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048218.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048218.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048220.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048221.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048221.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048221.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048220.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.12, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048220.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.304, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048222.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048222.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048222.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048222.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048223.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048223.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048224.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048224.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048224.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048226.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048226.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048226.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048227.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048227.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048227.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048227.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048228.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048230.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048229.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048230.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048226.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.268, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048230.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048231.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048230.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.403, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048226.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.579, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048231.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048234.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048234.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048234.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048235.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048236.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.095, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048233.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048238.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048238.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048238.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048239.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048241.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048242.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048242.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048240.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048242.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048238.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.883, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048242.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048242.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048237.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.284, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.586, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048225.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.839, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048244.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048244.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048244.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048243.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048244.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048244.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048245.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048224.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.116, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048223.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.466, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048246.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048247.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048247.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048220.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.216, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048247.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048248.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048247.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048216.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048216.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.975, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048248.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048248.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048248.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048250.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048250.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048250.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048250.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048251.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048252.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048248.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.221, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048254.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048253.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.559, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048103.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 152.62, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048255.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048056.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 199.686, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048256.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048259.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048260.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048260.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048260.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048261.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048262.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048259.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.111, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048264.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048264.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048264.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048264.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048265.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048266.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048267.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048267.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048267.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048268.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048264.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.544, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048268.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048268.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048268.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048269.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048269.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048269.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048269.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048269.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048270.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048271.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048272.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048272.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048272.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.612, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048273.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048274.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048275.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048275.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048275.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048275.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048275.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.924, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048274.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.101, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048277.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048277.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048277.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048277.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048278.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048278.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048278.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048279.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048279.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048279.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048282.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048283.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048281.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.087, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048285.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048284.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.09, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.053, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048285.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048285.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048286.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048286.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048286.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048288.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048289.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048286.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.974, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048291.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048290.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048285.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.409, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048291.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048291.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048291.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048292.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048292.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048292.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048292.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048293.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048294.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048295.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048292.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.962, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048296.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048296.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048296.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048291.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.355, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048296.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048280.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.767, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048297.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048297.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048297.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048279.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.968, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048297.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048298.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048298.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048298.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048297.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048298.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048298.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048300.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048299.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048278.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.279, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048300.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048300.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048300.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048278.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.671, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048300.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048301.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048301.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048274.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.883, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048301.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048302.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048301.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048272.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048272.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.128, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048302.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048302.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048303.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048303.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048303.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048303.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048303.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048304.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048304.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048304.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048305.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048306.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048302.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.507, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048302.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.837, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048307.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048307.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048307.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048307.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048263.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.246, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048259.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.965, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048309.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048310.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048311.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048312.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.755, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048312.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048312.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048313.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048314.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048312.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.004, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048316.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048315.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048316.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048317.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048318.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048318.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048319.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048319.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048319.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048318.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.924, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048318.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.074, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048319.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048320.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048320.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048320.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048320.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048322.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048322.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048322.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048323.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048323.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048323.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048323.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048324.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048324.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048326.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048327.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048325.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.162, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048329.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048328.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.113, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048324.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.298, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048329.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048331.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048331.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048331.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048332.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048331.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048332.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048332.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048332.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.581, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048333.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.968, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048335.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048334.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048330.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.42, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048335.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048335.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048337.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048338.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048336.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.923, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048335.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.204, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048339.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048324.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.916, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048341.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048341.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048340.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048323.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.2, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048341.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048341.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048342.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048343.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048322.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.477, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048344.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048344.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048344.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048320.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.999, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048344.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048344.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048345.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048318.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.829, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048345.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048345.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048316.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.645, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048316.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.976, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048347.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048348.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048349.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048350.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048350.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048346.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.966, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048350.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048350.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048351.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048352.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048350.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.563, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048353.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048354.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048354.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048355.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048356.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048356.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048357.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048358.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048356.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.781, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048356.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.934, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048358.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048358.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048358.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048358.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048359.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048359.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048361.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048361.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048361.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048366.612, \"ph\": \"C\", \"name\": \"garbage collection\", \"args\": {\"collecting\": 1, \"collected\": 0, \"uncollectable\": 0}}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048411.669, \"ph\": \"C\", \"name\": \"garbage collection\", \"args\": {\"collecting\": 0, \"collected\": 0, \"uncollectable\": 0}}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048362.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.74, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048412.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048413.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048413.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.275, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048415.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048415.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048416.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048416.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048415.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.077, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048416.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048416.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048416.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048417.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048413.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.782, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048419.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048418.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.479, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048362.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.369, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048420.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048420.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048422.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048422.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048422.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048423.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048423.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048424.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048425.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048422.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.389, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048426.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048420.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.521, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048428.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048428.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048428.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048428.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048429.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048431.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048430.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048431.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.971, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048432.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048432.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048432.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048427.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.443, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048432.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048361.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.459, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048433.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048433.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048433.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 72.883, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048433.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048434.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048434.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048434.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048433.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048434.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048434.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048436.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048435.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048360.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 76.056, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048436.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048436.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048436.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048359.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.384, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048436.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048437.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048437.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048356.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 81.526, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048438.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048438.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048438.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048354.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 84.394, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048354.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 84.951, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048439.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048439.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048440.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048440.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048441.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048441.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048442.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048443.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048443.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048443.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048443.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048444.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048439.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.525, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048445.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048445.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048446.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048446.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048446.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048446.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048447.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048445.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.003, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048448.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.933, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048450.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048450.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048450.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048452.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048452.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048452.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048453.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048453.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048454.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048455.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048455.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048455.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048454.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.047, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048454.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.229, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048455.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048456.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048456.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048456.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048458.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048458.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048458.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048458.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048459.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048459.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048461.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048463.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048463.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048462.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048463.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048460.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.003, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048464.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048465.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048464.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.211, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048459.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.004, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048465.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048465.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048466.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048466.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048466.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048467.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048468.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048466.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.964, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048469.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048465.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.344, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048471.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048471.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048471.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048471.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048473.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048472.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.587, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048473.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.889, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048475.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048475.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048474.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048470.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.171, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048475.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048459.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.516, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048475.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048475.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048458.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048476.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048478.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048478.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048478.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048477.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.959, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048478.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048479.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048478.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048457.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.227, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048479.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048479.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048479.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048454.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.861, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048480.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048480.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048480.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.812, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048449.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.19, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048483.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048484.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048485.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048485.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048482.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.419, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048485.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048485.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048486.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048486.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048486.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048486.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048486.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048485.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.061, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048487.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048490.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048491.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.28, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048491.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048493.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048493.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048493.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048493.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048493.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.964, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048492.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.111, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048494.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048494.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048494.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048494.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048496.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048496.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048496.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048497.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048497.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048497.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048499.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048501.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048502.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048500.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.538, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048502.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048498.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.84, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048502.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048502.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048502.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.181, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048497.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048503.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048503.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048505.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.647, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048506.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048504.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.897, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048507.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048503.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.307, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048509.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048510.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048511.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.961, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048513.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048512.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048508.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.306, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048513.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048497.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.285, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048513.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048513.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048496.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.593, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048514.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048516.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048516.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048516.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048515.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.772, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048516.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048517.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048516.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048495.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.068, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048517.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048517.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048517.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048491.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.897, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048518.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048519.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048518.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048488.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.043, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048520.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048521.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048522.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048519.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.19, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048523.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048523.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048523.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048523.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048524.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048523.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.852, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048525.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048526.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048527.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048527.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048527.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048527.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048527.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048528.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048528.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048528.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.89, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048529.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048530.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048530.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048530.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048530.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048532.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048532.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048532.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048532.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048533.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048533.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048535.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048537.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048538.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048536.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048538.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048534.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.974, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048538.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048539.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048538.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.126, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048533.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.934, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048539.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048539.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048541.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048542.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048540.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.985, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048543.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048539.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.368, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048545.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048545.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048545.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048546.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048545.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048546.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048547.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.926, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048549.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048548.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048544.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.24, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048549.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048533.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.525, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048549.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048549.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048532.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.813, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048550.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048552.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048552.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048552.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048551.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.943, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048552.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048553.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048552.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048531.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.318, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048553.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048553.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048554.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048528.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.12, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048555.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048555.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048555.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048526.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048526.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.09, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048557.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048558.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048556.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.896, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048559.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048559.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048559.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048559.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048559.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.453, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048561.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048561.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048560.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048561.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048562.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048563.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048564.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048564.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048564.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048564.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.971, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048565.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048567.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048567.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048567.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048567.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048568.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048568.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048570.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048572.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048571.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.561, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048573.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048569.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.856, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048573.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048573.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048573.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.014, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048568.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048574.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048574.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048574.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048575.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048575.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048575.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048575.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048576.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048577.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048575.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.96, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048574.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.349, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048579.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048579.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048579.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048580.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048582.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048582.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048582.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048582.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048583.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048584.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048579.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.499, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048584.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048584.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048584.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.587, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048578.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048584.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048568.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.847, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048585.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048585.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048585.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048567.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.182, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048585.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048586.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048586.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048586.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048585.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048586.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048586.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048587.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.348, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048566.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.585, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048588.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048589.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048564.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.118, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048590.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048590.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048590.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048561.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.474, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048561.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.738, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048592.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048592.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048592.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048592.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048591.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048308.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 284.052, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048592.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048259.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 334.008, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048593.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048594.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048594.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048595.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048596.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048597.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048593.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.027, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048600.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048600.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048600.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048600.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048600.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048601.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.437, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048602.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048603.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048605.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048606.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048606.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048607.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048607.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048607.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048606.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048606.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.13, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048608.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048609.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048608.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048609.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048609.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048610.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048610.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048610.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048612.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048612.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048612.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048613.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048613.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048613.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048613.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048614.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048616.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048615.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048616.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048613.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.04, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048616.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048616.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048616.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.071, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048612.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.986, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048617.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048617.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048618.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048618.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048618.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048619.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048618.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.554, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048620.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048621.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.741, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048618.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.012, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048622.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048617.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.503, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048624.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048624.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048624.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048624.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048625.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048626.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048624.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.966, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048627.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048628.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048627.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.323, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048623.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.133, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048628.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.611, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048628.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048629.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048628.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048611.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.977, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048629.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048629.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048629.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048629.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048630.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048631.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048631.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048631.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048631.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048631.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048610.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.33, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048609.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048632.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048606.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.584, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048633.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048633.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048633.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.27, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048604.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.606, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048635.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048635.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048636.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048636.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048636.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048636.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048637.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048638.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048638.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048638.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048638.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048638.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.619, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048634.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.926, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048639.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048639.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048639.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048639.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048599.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.738, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048593.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.309, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048641.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048642.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.886, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048644.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048644.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048644.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048644.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048645.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048646.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048644.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.955, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048647.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048648.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048648.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048648.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048649.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048650.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048650.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048650.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.986, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048651.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048652.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048652.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048653.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048654.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048654.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048654.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048656.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048656.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048656.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048656.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048657.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048658.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048656.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.924, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048660.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048659.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.054, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048660.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048660.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048661.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048661.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048661.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048663.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048663.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048664.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048664.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048662.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.628, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048664.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048664.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048664.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048661.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.098, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048666.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048665.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048660.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.549, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048666.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048666.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048666.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048667.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048667.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048667.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048667.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048668.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048669.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048667.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048666.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.359, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048670.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048655.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.624, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048671.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048672.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048671.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.335, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048654.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048672.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048672.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048672.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048673.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048674.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048654.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.017, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048652.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.308, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048675.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048650.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.054, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048676.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048676.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048676.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048648.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.775, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048648.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.156, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048678.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048679.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048679.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048680.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048681.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048677.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.906, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048681.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048681.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048681.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048682.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048683.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048681.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.61, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048684.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048686.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048686.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048686.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048686.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048687.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.92, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048689.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048689.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048689.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048689.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048691.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048691.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048691.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048691.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048692.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048692.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048692.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048693.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048693.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048693.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048693.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048694.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.016, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048695.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048693.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.872, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048696.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048696.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048696.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048692.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.783, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048697.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048697.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048697.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048698.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048698.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048699.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048699.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.833, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048700.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048701.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048698.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.147, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048702.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048697.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.511, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048704.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048704.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048704.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048704.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048704.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048706.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048706.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048706.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048705.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048706.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.006, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048707.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048708.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048707.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.619, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048703.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.28, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048708.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048692.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.503, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048708.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048708.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048691.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.827, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048709.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048711.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048711.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048711.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048710.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.023, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048711.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048711.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048690.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.356, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048686.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.956, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048713.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048712.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.349, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048685.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.597, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048713.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048713.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048714.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048714.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048714.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048714.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048714.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048716.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048717.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048718.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048718.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048713.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.663, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048718.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048718.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048719.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048720.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048718.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.337, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048722.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048723.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048724.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048724.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048724.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048725.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048726.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048726.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048729.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048729.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048729.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048730.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048731.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048729.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.969, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048733.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048732.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.08, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048736.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048736.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048736.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048737.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048738.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.106, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048735.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.636, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048740.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048740.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048740.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048741.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048743.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048744.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048744.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048742.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.64, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048744.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048740.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.083, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048744.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048745.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048744.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048739.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.456, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048745.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048728.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.008, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048745.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048745.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048745.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.266, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048746.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048746.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048746.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048746.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048746.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048748.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048748.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048748.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048747.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048727.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.253, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048748.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048748.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048726.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.588, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048724.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.133, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048750.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048749.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.502, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048721.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.752, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048750.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048750.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048751.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048751.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048751.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048752.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048753.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048754.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048754.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048750.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.738, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048754.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048754.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048755.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048754.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.054, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048756.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048758.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048758.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048758.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048758.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048759.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048759.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048759.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048760.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048760.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048760.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048760.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.982, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048761.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048762.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048762.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048765.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048765.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048765.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048765.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048766.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048768.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048768.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048768.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048767.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.665, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048768.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048765.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.945, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048769.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048770.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048769.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.068, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048770.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048770.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048771.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048771.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048771.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048772.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048773.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048771.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.936, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048774.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048770.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.41, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048776.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048776.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048776.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048776.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048776.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048777.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.669, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048778.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048778.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048780.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048779.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048775.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.258, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048780.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048764.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.289, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048780.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048780.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.507, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048781.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048783.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048783.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048783.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048782.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048763.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.528, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048783.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048783.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048762.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.927, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048760.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.297, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048785.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048784.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.796, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048757.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.088, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048786.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048786.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048787.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048788.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048786.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.012, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048790.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048790.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048790.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048790.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048790.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048789.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.883, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048791.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048793.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048793.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048793.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048794.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048794.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048794.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048794.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048795.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048795.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048796.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048796.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048796.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048795.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.962, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048795.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.092, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048796.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048797.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048797.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048797.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048797.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048798.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048798.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048798.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048799.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048799.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048799.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048799.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048800.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048800.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048802.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.833, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048804.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048804.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048804.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048803.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.803, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048804.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048801.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.379, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048805.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048806.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048805.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.141, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048800.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.395, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048807.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048807.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048807.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048807.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048808.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048808.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048808.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048809.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048810.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.832, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048808.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.488, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048811.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048807.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.972, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048813.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048813.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048813.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048813.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048814.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.846, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048816.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048813.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.17, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048812.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.568, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048817.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048800.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.944, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048818.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048818.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048818.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048799.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.383, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048818.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048819.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048819.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048819.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048818.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048819.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048819.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.644, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048820.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048798.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.57, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048797.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.97, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048821.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048822.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048795.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.716, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048822.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048822.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048822.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.444, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048792.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.679, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048825.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048826.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048824.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.556, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048828.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048829.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048829.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048829.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048827.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.292, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048640.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 189.317, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048829.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048593.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 236.472, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048831.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048831.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048832.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048833.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048834.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048831.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.446, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048836.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048836.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048836.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048836.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048836.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048837.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048838.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048838.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048838.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048838.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.386, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048839.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048839.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048839.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048840.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048842.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048843.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048843.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048844.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.507, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048844.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048844.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048845.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048844.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.02, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048844.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.151, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048845.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048845.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048845.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048845.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048847.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048847.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048847.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048847.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048848.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048848.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048849.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048850.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048850.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048851.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048851.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048851.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048852.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048853.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048850.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.129, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048854.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048854.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048854.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048848.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.642, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048855.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048855.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048855.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048856.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048856.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048856.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048856.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048857.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048859.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048858.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048860.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048856.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.027, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048860.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048860.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048860.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048855.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.581, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048862.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048862.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048862.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048862.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048863.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.983, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048865.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048864.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048861.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.335, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048865.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048848.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.591, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048865.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048866.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048865.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048847.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.923, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048866.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048866.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048867.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048867.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048866.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048867.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048868.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048868.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048868.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048867.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.616, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048869.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048869.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048869.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048869.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048869.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.209, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048846.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.54, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048870.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048843.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.447, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048891.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.664, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048893.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048890.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.564, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048841.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.145, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048895.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048895.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048896.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048897.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048897.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048897.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048897.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048897.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048898.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048898.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048898.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048898.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048898.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.73, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048894.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.554, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048902.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048902.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048902.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048902.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048835.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 67.569, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048831.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.634, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048904.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048905.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048906.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.015, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048906.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048906.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048907.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048907.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048907.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048907.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048908.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048908.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048908.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048908.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048908.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048909.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048909.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048909.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048909.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048909.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048910.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048910.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048906.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.542, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048911.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048912.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.077, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048913.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048913.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048914.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048914.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048914.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048914.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048914.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048915.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048916.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.784, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048917.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048917.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048917.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048916.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.605, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048916.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.838, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048918.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048918.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048918.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048918.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048919.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048919.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048920.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048920.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048920.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048921.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048921.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048921.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048922.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048922.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048924.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048924.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048924.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.088, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048925.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048926.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048926.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048926.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048926.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048926.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.935, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048927.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048928.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048923.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.842, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048928.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048929.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.517, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048928.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.477, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048922.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.359, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048931.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048931.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048931.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048932.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048933.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048934.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.186, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048934.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048934.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048934.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048930.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.828, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048935.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048937.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048937.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048937.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048938.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048939.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.136, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048940.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048940.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048940.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048936.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048940.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048921.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.904, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048941.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048941.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048941.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048921.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.407, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048941.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048942.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048942.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048942.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048941.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048942.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048942.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048944.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048943.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.615, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048920.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.809, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048945.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048945.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048945.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048919.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.427, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048945.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048946.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048946.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048915.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.907, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048946.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048947.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048946.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048912.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.19, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048912.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.619, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048948.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048949.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048950.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048947.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.103, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048951.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048951.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048951.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048951.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048952.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048952.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048952.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048953.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048953.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048954.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048951.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.886, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048955.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048956.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048957.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048958.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048958.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048959.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048959.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048959.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048958.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048958.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.017, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048959.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048960.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048959.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048960.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048960.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048961.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048961.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048961.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048961.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048964.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048964.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048964.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048965.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048965.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048965.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048965.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048966.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048967.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048968.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048964.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.087, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048968.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048968.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048968.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.097, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048964.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.107, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048969.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048969.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048969.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048970.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048970.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048970.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048970.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048971.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048973.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048973.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048974.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048972.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.612, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048974.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048970.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.12, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048974.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048974.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048974.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048969.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.526, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048976.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048976.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048976.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048976.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048977.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048978.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.087, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048975.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.389, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.027, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048980.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048979.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048962.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.257, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048980.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048980.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048980.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048981.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048980.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.651, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048982.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048982.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048982.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048982.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048983.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048961.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.523, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048960.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.879, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048984.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048958.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.652, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048985.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048985.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048985.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048956.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.448, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048956.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.775, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048987.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048988.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048989.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048990.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048986.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.023, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048990.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048990.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048991.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048992.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048990.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.515, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048994.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048994.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048994.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048994.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048994.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048995.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048995.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048995.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.878, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048996.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.011, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048997.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048997.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048997.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048997.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048998.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048998.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048998.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048998.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049001.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049001.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049001.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049002.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049002.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049002.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049002.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049003.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049005.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049004.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049005.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049002.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.011, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049005.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049005.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049005.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049001.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.896, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049006.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049006.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049009.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049009.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049009.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049008.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.552, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049010.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049010.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049010.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049010.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049007.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.013, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049011.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049006.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.511, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049013.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049013.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049013.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049013.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049013.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049014.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.913, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049016.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049015.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049012.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.241, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049016.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.594, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049016.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049017.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049016.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049000.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.966, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049018.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049019.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049019.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049019.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049018.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049019.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049019.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049020.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048998.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.552, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048997.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.825, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049021.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049022.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048995.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.527, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049022.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049022.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049022.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.156, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048993.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.495, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049024.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049025.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049025.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049025.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049025.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049026.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049026.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049026.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049026.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049027.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049027.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049023.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.045, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049027.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049027.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049028.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049028.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049028.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049028.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049028.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049027.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.054, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049029.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049031.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049032.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049032.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049032.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049032.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049033.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049034.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049034.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049035.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049036.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049036.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049036.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049038.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049038.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049038.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049038.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049039.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049041.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049041.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049040.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049041.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049038.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.886, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049041.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049042.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049041.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.043, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.794, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049042.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049042.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049043.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049043.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049043.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049044.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.627, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049046.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049043.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.093, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049047.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049042.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.45, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049049.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049049.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049049.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049049.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049050.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049051.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049049.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.955, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049048.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.387, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049037.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.576, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049054.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049052.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.41, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049036.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.789, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049054.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049054.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049054.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049055.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049056.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049035.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.98, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049034.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.284, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049057.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049032.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.729, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049058.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049058.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049058.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.136, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049030.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.38, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049060.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049062.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049059.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.12, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049063.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049063.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049063.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049064.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049063.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.778, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049066.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.836, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049068.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049069.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049069.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049070.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049072.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049072.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049072.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049074.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049074.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049074.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049074.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049075.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049076.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.101, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049077.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049077.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049077.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.094, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049073.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.063, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049078.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049078.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049078.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049078.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049079.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049079.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049080.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049080.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049080.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049079.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.644, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049080.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049081.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049081.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049081.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049081.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.762, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049082.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049083.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049079.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.026, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049083.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049083.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049083.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049078.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.488, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049083.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049085.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049086.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.05, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049088.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049087.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049084.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.376, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049088.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049072.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.9, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049089.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049089.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049089.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.101, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049090.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049090.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049090.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049090.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049090.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049092.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049092.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049092.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049091.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049071.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.381, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049092.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049092.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049069.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049067.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.063, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049094.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049093.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.612, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.543, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049065.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.795, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049094.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049095.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049096.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049096.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049096.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049096.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049094.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.539, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049098.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049097.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.659, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048903.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 195.947, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049099.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995048831.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 268.535, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049099.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049100.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049100.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049101.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049101.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049101.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049101.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049102.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049103.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049100.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.656, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049104.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049104.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049104.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049106.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049107.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049108.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049109.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049109.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049109.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049109.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049104.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.441, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049109.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049110.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049111.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.keys\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049113.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049114.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049115.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049116.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049116.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049116.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049114.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.006, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049114.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.153, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049117.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049117.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049117.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049117.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049119.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049119.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049121.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049121.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049121.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049122.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049123.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049121.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049125.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049124.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.19, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.127, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049126.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049128.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049128.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049128.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049128.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049129.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.032, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049131.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049130.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049127.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.561, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049131.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049131.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049133.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049135.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049136.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049134.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.61, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049136.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049132.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.824, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049136.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049136.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049136.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049131.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.197, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049120.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.767, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049119.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.133, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049138.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049138.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049138.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049137.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049138.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049138.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049140.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049140.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049139.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.392, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049140.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049140.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049140.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049118.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.837, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049141.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049141.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049141.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049114.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.911, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049141.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049142.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049141.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.69, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049112.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.065, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049142.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049142.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049143.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049144.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049144.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049144.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049145.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049146.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049146.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049146.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049146.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049146.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049147.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049147.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049147.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049147.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049147.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049142.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.98, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049142.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.303, \"name\": \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049148.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.hash\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049148.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049148.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049148.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049104.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.427, \"name\": \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049100.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.638, \"name\": \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049150.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049151.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049151.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049151.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049152.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049152.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049152.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049152.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.828, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049153.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049153.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049153.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049153.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049154.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049155.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049153.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.101, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049156.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.527, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049158.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049158.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049158.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049158.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049159.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.068, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049160.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049161.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049161.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049161.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049162.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049162.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049162.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049163.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049163.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049163.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049165.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049165.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049165.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049166.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049167.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049165.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.972, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049169.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049168.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.117, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.901, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049169.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049171.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049171.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049171.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049171.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049173.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049174.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.414, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049170.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.79, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049176.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049176.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049176.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049176.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049177.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049178.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049176.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.91, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049180.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049179.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.363, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049175.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.034, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049181.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049164.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.72, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049181.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049181.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049181.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049163.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.255, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049183.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049183.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049183.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049182.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049183.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049184.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049184.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049184.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049183.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049163.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.493, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049184.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049184.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049162.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.913, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049158.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.861, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049186.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049185.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.351, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049157.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.639, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049186.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049186.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049187.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049188.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049189.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049186.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.916, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049191.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049192.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049190.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.64, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049194.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049194.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049193.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049194.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049195.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049196.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049197.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049197.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049197.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.857, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049197.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.976, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049198.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049199.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049199.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049199.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049201.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049201.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049201.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049203.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049205.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049205.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049204.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.634, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049205.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049202.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.912, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049205.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049206.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049205.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.096, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049201.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.735, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049207.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049207.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049208.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049208.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049208.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049209.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049210.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049208.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.098, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049211.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049207.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.564, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049213.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049213.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049213.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049213.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049215.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049214.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049215.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049215.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049216.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049216.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049216.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049215.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.636, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049216.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049213.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.947, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049212.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.27, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049201.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.525, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049218.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049217.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049218.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049218.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049218.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049219.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049200.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.825, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049221.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049220.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049199.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.093, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049221.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049221.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049221.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049197.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.643, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049222.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049222.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049222.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049194.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.987, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049194.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.252, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049223.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049224.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049225.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049226.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049223.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.861, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049228.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049227.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.245, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049229.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049230.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049230.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049231.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049232.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049234.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.983, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049234.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049234.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049234.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049234.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049236.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049236.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049236.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049237.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049237.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049237.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049239.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049241.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049241.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049240.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.563, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049242.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049238.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.782, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049242.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049242.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049242.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.052, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049237.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.68, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049243.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049243.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049243.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049244.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049244.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049244.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049244.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049245.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049246.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049244.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.031, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049247.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049243.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.474, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049249.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049249.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049249.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049250.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049249.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049250.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049250.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049250.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.596, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049251.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.747, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.964, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049253.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049252.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049248.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.353, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049253.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049237.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.433, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049253.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049254.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049253.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049236.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.799, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049254.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049254.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049254.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049254.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049255.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.935, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049257.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049256.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049235.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.233, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049257.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049257.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049257.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049233.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.953, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049259.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049259.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049259.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049230.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.434, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049230.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.701, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049261.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049260.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.794, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049263.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049264.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049262.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.032, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049265.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.369, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049266.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049267.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049268.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049268.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049268.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049268.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.883, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049269.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049270.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049270.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049270.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049271.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049271.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049271.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049271.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049272.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049272.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049272.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049274.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049277.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049277.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049277.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049275.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.269, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049277.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049273.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.603, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049278.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049278.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049278.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049272.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.55, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049279.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049279.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049279.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049279.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049280.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049280.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049280.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049281.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 143.544, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049426.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049427.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049282.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 145.039, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049427.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049280.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 147.66, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049428.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.057, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049430.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049428.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.491, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049279.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 151.282, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049430.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049431.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049431.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049431.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049432.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049432.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049433.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049433.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049433.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049432.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.295, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049435.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049436.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049431.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.987, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049430.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.744, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049272.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 165.643, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049438.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049437.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049271.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 166.943, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049438.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049438.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049439.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.648, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049441.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049440.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049270.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 170.202, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049441.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049441.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049441.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049270.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 171.514, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049441.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049442.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049443.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049268.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 175.139, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049443.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049444.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049443.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049266.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 177.778, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049266.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 178.293, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049446.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049446.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049447.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049448.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049449.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049449.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"_functools.reduce\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049445.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.475, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049450.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049450.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049450.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049451.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049449.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.214, \"name\": \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049453.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.462, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049452.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.825, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049454.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049455.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049455.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049455.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.issubclass\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049455.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049455.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049456.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.getattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049456.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"NaughtsAndCrossesState.__reduce_ex__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049456.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049457.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049458.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049458.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049458.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049457.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.087, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049457.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.264, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049458.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049459.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"type.__new__\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049459.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049459.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049461.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049461.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049463.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049463.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049463.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049465.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049465.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049465.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049465.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049464.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049465.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049466.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049467.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049467.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049467.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049466.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049467.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049463.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.313, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049468.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049468.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049468.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.487, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.704, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049469.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049469.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049470.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049470.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049470.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049471.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049472.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049470.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.007, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049473.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049469.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.377, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049475.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049475.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049476.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049475.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.654, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049477.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049478.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.062, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049474.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.372, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049462.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.543, \"name\": \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049480.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049479.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049461.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.784, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049480.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049480.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049480.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049481.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"dict.get\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049482.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.04, \"name\": \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049483.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049483.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049483.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049460.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.365, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049484.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.hasattr\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049484.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.isinstance\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049484.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"dict.update\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049457.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.882, \"name\": \"_reconstruct (/usr/lib/python3.12/copy.py:247)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049485.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.id\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049485.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"list.append\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049485.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.587, \"name\": \"_keep_alive (/usr/lib/python3.12/copy.py:231)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049454.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.512, \"name\": \"deepcopy (/usr/lib/python3.12/copy.py:118)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049454.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.884, \"name\": \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049486.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.619, \"name\": \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.abs\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.sum\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049487.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049149.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 338.877, \"name\": \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049488.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049100.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 388.379, \"name\": \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049488.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"time.time\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049489.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.values\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049490.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049490.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049490.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049490.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049491.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049492.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049492.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049492.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049492.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049492.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.log\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049493.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"math.sqrt\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049493.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049493.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049494.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"int.bit_length\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049494.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049494.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.getrandbits\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049494.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049493.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"Random.choice (/usr/lib/python3.12/random.py:341)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049489.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.168, \"name\": \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049495.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"dict.items\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995049495.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"mcts.getAction (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:107)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995039193.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10303.275, \"name\": \"mcts.search (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:49)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038967.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10529.074, \"name\": \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:1)\"}, {\"pid\": 222292, \"tid\": 222292, \"ts\": 81995038964.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10532.283, \"name\": \"builtins.exec\"}], \"viztracer_metadata\": {\"overflow\": false, \"version\": \"1.1.1\"}, \"file_info\": {\"files\": {\"<frozen importlib._bootstrap>\": [\"\\\"\\\"\\\"Core implementation of import.\\n\\nThis module is NOT meant to be directly imported! It has been designed such\\nthat it can be bootstrapped into Python as the implementation of import. As\\nsuch it requires the injection of specific modules and attributes in order to\\nwork. One should use importlib as the public-facing version of this module.\\n\\n\\\"\\\"\\\"\\n#\\n# IMPORTANT: Whenever making changes to this module, be sure to run a top-level\\n# `make regen-importlib` followed by `make` in order to get the frozen version\\n# of the module updated. Not doing so will result in the Makefile to fail for\\n# all others who don't have a ./python around to freeze the module\\n# in the early stages of compilation.\\n#\\n\\n# See importlib._setup() for what is injected into the global namespace.\\n\\n# When editing this code be aware that code executed at import time CANNOT\\n# reference any injected objects! This includes not only global code but also\\n# anything specified at the class level.\\n\\ndef _object_name(obj):\\n    try:\\n        return obj.__qualname__\\n    except AttributeError:\\n        return type(obj).__qualname__\\n\\n# Bootstrap-related code ######################################################\\n\\n# Modules injected manually by _setup()\\n_thread = None\\n_warnings = None\\n_weakref = None\\n\\n# Import done by _install_external_importers()\\n_bootstrap_external = None\\n\\n\\ndef _wrap(new, old):\\n    \\\"\\\"\\\"Simple substitute for functools.update_wrapper.\\\"\\\"\\\"\\n    for replace in ['__module__', '__name__', '__qualname__', '__doc__']:\\n        if hasattr(old, replace):\\n            setattr(new, replace, getattr(old, replace))\\n    new.__dict__.update(old.__dict__)\\n\\n\\ndef _new_module(name):\\n    return type(sys)(name)\\n\\n\\n# Module-level locking ########################################################\\n\\n# For a list that can have a weakref to it.\\nclass _List(list):\\n    pass\\n\\n\\n# Copied from weakref.py with some simplifications and modifications unique to\\n# bootstrapping importlib. Many methods were simply deleting for simplicity, so if they\\n# are needed in the future they may work if simply copied back in.\\nclass _WeakValueDictionary:\\n\\n    def __init__(self):\\n        self_weakref = _weakref.ref(self)\\n\\n        # Inlined to avoid issues with inheriting from _weakref.ref before _weakref is\\n        # set by _setup(). Since there's only one instance of this class, this is\\n        # not expensive.\\n        class KeyedRef(_weakref.ref):\\n\\n            __slots__ = \\\"key\\\",\\n\\n            def __new__(type, ob, key):\\n                self = super().__new__(type, ob, type.remove)\\n                self.key = key\\n                return self\\n\\n            def __init__(self, ob, key):\\n                super().__init__(ob, self.remove)\\n\\n            @staticmethod\\n            def remove(wr):\\n                nonlocal self_weakref\\n\\n                self = self_weakref()\\n                if self is not None:\\n                    if self._iterating:\\n                        self._pending_removals.append(wr.key)\\n                    else:\\n                        _weakref._remove_dead_weakref(self.data, wr.key)\\n\\n        self._KeyedRef = KeyedRef\\n        self.clear()\\n\\n    def clear(self):\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self.data = {}\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n            _weakref._remove_dead_weakref(d, key)\\n\\n    def get(self, key, default=None):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            wr = self.data[key]\\n        except KeyError:\\n            return default\\n        else:\\n            if (o := wr()) is None:\\n                return default\\n            else:\\n                return o\\n\\n    def setdefault(self, key, default=None):\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if self._pending_removals:\\n                self._commit_removals()\\n            self.data[key] = self._KeyedRef(default, key)\\n            return default\\n        else:\\n            return o\\n\\n\\n# A dict mapping module names to weakrefs of _ModuleLock instances.\\n# Dictionary protected by the global import lock.\\n_module_locks = {}\\n\\n# A dict mapping thread IDs to weakref'ed lists of _ModuleLock instances.\\n# This maps a thread to the module locks it is blocking on acquiring.  The\\n# values are lists because a single thread could perform a re-entrant import\\n# and be \\\"in the process\\\" of blocking on locks for more than one module.  A\\n# thread can be \\\"in the process\\\" because a thread cannot actually block on\\n# acquiring more than one lock but it can have set up bookkeeping that reflects\\n# that it intends to block on acquiring more than one lock.\\n#\\n# The dictionary uses a WeakValueDictionary to avoid keeping unnecessary\\n# lists around, regardless of GC runs. This way there's no memory leak if\\n# the list is no longer needed (GH-106176).\\n_blocking_on = None\\n\\n\\nclass _BlockingOnManager:\\n    \\\"\\\"\\\"A context manager responsible to updating ``_blocking_on``.\\\"\\\"\\\"\\n    def __init__(self, thread_id, lock):\\n        self.thread_id = thread_id\\n        self.lock = lock\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Mark the running thread as waiting for self.lock. via _blocking_on.\\\"\\\"\\\"\\n        # Interactions with _blocking_on are *not* protected by the global\\n        # import lock here because each thread only touches the state that it\\n        # owns (state keyed on its thread id).  The global import lock is\\n        # re-entrant (i.e., a single thread may take it more than once) so it\\n        # wouldn't help us be correct in the face of re-entrancy either.\\n\\n        self.blocked_on = _blocking_on.setdefault(self.thread_id, _List())\\n        self.blocked_on.append(self.lock)\\n\\n    def __exit__(self, *args, **kwargs):\\n        \\\"\\\"\\\"Remove self.lock from this thread's _blocking_on list.\\\"\\\"\\\"\\n        self.blocked_on.remove(self.lock)\\n\\n\\nclass _DeadlockError(RuntimeError):\\n    pass\\n\\n\\n\\ndef _has_deadlocked(target_id, *, seen_ids, candidate_ids, blocking_on):\\n    \\\"\\\"\\\"Check if 'target_id' is holding the same lock as another thread(s).\\n\\n    The search within 'blocking_on' starts with the threads listed in\\n    'candidate_ids'.  'seen_ids' contains any threads that are considered\\n    already traversed in the search.\\n\\n    Keyword arguments:\\n    target_id     -- The thread id to try to reach.\\n    seen_ids      -- A set of threads that have already been visited.\\n    candidate_ids -- The thread ids from which to begin.\\n    blocking_on   -- A dict representing the thread/blocking-on graph.  This may\\n                     be the same object as the global '_blocking_on' but it is\\n                     a parameter to reduce the impact that global mutable\\n                     state has on the result of this function.\\n    \\\"\\\"\\\"\\n    if target_id in candidate_ids:\\n        # If we have already reached the target_id, we're done - signal that it\\n        # is reachable.\\n        return True\\n\\n    # Otherwise, try to reach the target_id from each of the given candidate_ids.\\n    for tid in candidate_ids:\\n        if not (candidate_blocking_on := blocking_on.get(tid)):\\n            # There are no edges out from this node, skip it.\\n            continue\\n        elif tid in seen_ids:\\n            # bpo 38091: the chain of tid's we encounter here eventually leads\\n            # to a fixed point or a cycle, but does not reach target_id.\\n            # This means we would not actually deadlock.  This can happen if\\n            # other threads are at the beginning of acquire() below.\\n            return False\\n        seen_ids.add(tid)\\n\\n        # Follow the edges out from this thread.\\n        edges = [lock.owner for lock in candidate_blocking_on]\\n        if _has_deadlocked(target_id, seen_ids=seen_ids, candidate_ids=edges,\\n                blocking_on=blocking_on):\\n            return True\\n\\n    return False\\n\\n\\nclass _ModuleLock:\\n    \\\"\\\"\\\"A recursive lock implementation which is able to detect deadlocks\\n    (e.g. thread 1 trying to take locks A then B, and thread 2 trying to\\n    take locks B then A).\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        # Create an RLock for protecting the import process for the\\n        # corresponding module.  Since it is an RLock, a single thread will be\\n        # able to take it more than once.  This is necessary to support\\n        # re-entrancy in the import system that arises from (at least) signal\\n        # handlers and the garbage collector.  Consider the case of:\\n        #\\n        #  import foo\\n        #  -> ...\\n        #     -> importlib._bootstrap._ModuleLock.acquire\\n        #        -> ...\\n        #           -> <garbage collector>\\n        #              -> __del__\\n        #                 -> import foo\\n        #                    -> ...\\n        #                       -> importlib._bootstrap._ModuleLock.acquire\\n        #                          -> _BlockingOnManager.__enter__\\n        #\\n        # If a different thread than the running one holds the lock then the\\n        # thread will have to block on taking the lock, which is what we want\\n        # for thread safety.\\n        self.lock = _thread.RLock()\\n        self.wakeup = _thread.allocate_lock()\\n\\n        # The name of the module for which this is a lock.\\n        self.name = name\\n\\n        # Can end up being set to None if this lock is not owned by any thread\\n        # or the thread identifier for the owning thread.\\n        self.owner = None\\n\\n        # Represent the number of times the owning thread has acquired this lock\\n        # via a list of True.  This supports RLock-like (\\\"re-entrant lock\\\")\\n        # behavior, necessary in case a single thread is following a circular\\n        # import dependency and needs to take the lock for a single module\\n        # more than once.\\n        #\\n        # Counts are represented as a list of True because list.append(True)\\n        # and list.pop() are both atomic and thread-safe in CPython and it's hard\\n        # to find another primitive with the same properties.\\n        self.count = []\\n\\n        # This is a count of the number of threads that are blocking on\\n        # self.wakeup.acquire() awaiting to get their turn holding this module\\n        # lock.  When the module lock is released, if this is greater than\\n        # zero, it is decremented and `self.wakeup` is released one time.  The\\n        # intent is that this will let one other thread make more progress on\\n        # acquiring this module lock.  This repeats until all the threads have\\n        # gotten a turn.\\n        #\\n        # This is incremented in self.acquire() when a thread notices it is\\n        # going to have to wait for another thread to finish.\\n        #\\n        # See the comment above count for explanation of the representation.\\n        self.waiters = []\\n\\n    def has_deadlock(self):\\n        # To avoid deadlocks for concurrent or re-entrant circular imports,\\n        # look at _blocking_on to see if any threads are blocking\\n        # on getting the import lock for any module for which the import lock\\n        # is held by this thread.\\n        return _has_deadlocked(\\n            # Try to find this thread.\\n            target_id=_thread.get_ident(),\\n            seen_ids=set(),\\n            # Start from the thread that holds the import lock for this\\n            # module.\\n            candidate_ids=[self.owner],\\n            # Use the global \\\"blocking on\\\" state.\\n            blocking_on=_blocking_on,\\n        )\\n\\n    def acquire(self):\\n        \\\"\\\"\\\"\\n        Acquire the module lock.  If a potential deadlock is detected,\\n        a _DeadlockError is raised.\\n        Otherwise, the lock is always acquired and True is returned.\\n        \\\"\\\"\\\"\\n        tid = _thread.get_ident()\\n        with _BlockingOnManager(tid, self):\\n            while True:\\n                # Protect interaction with state on self with a per-module\\n                # lock.  This makes it safe for more than one thread to try to\\n                # acquire the lock for a single module at the same time.\\n                with self.lock:\\n                    if self.count == [] or self.owner == tid:\\n                        # If the lock for this module is unowned then we can\\n                        # take the lock immediately and succeed.  If the lock\\n                        # for this module is owned by the running thread then\\n                        # we can also allow the acquire to succeed.  This\\n                        # supports circular imports (thread T imports module A\\n                        # which imports module B which imports module A).\\n                        self.owner = tid\\n                        self.count.append(True)\\n                        return True\\n\\n                    # At this point we know the lock is held (because count !=\\n                    # 0) by another thread (because owner != tid).  We'll have\\n                    # to get in line to take the module lock.\\n\\n                    # But first, check to see if this thread would create a\\n                    # deadlock by acquiring this module lock.  If it would\\n                    # then just stop with an error.\\n                    #\\n                    # It's not clear who is expected to handle this error.\\n                    # There is one handler in _lock_unlock_module but many\\n                    # times this method is called when entering the context\\n                    # manager _ModuleLockManager instead - so _DeadlockError\\n                    # will just propagate up to application code.\\n                    #\\n                    # This seems to be more than just a hypothetical -\\n                    # https://stackoverflow.com/questions/59509154\\n                    # https://github.com/encode/django-rest-framework/issues/7078\\n                    if self.has_deadlock():\\n                        raise _DeadlockError(f'deadlock detected by {self!r}')\\n\\n                    # Check to see if we're going to be able to acquire the\\n                    # lock.  If we are going to have to wait then increment\\n                    # the waiters so `self.release` will know to unblock us\\n                    # later on.  We do this part non-blockingly so we don't\\n                    # get stuck here before we increment waiters.  We have\\n                    # this extra acquire call (in addition to the one below,\\n                    # outside the self.lock context manager) to make sure\\n                    # self.wakeup is held when the next acquire is called (so\\n                    # we block).  This is probably needlessly complex and we\\n                    # should just take self.wakeup in the return codepath\\n                    # above.\\n                    if self.wakeup.acquire(False):\\n                        self.waiters.append(None)\\n\\n                # Now take the lock in a blocking fashion.  This won't\\n                # complete until the thread holding this lock\\n                # (self.owner) calls self.release.\\n                self.wakeup.acquire()\\n\\n                # Taking the lock has served its purpose (making us wait), so we can\\n                # give it up now.  We'll take it w/o blocking again on the\\n                # next iteration around this 'while' loop.\\n                self.wakeup.release()\\n\\n    def release(self):\\n        tid = _thread.get_ident()\\n        with self.lock:\\n            if self.owner != tid:\\n                raise RuntimeError('cannot release un-acquired lock')\\n            assert len(self.count) > 0\\n            self.count.pop()\\n            if not len(self.count):\\n                self.owner = None\\n                if len(self.waiters) > 0:\\n                    self.waiters.pop()\\n                    self.wakeup.release()\\n\\n    def __repr__(self):\\n        return f'_ModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _DummyModuleLock:\\n    \\\"\\\"\\\"A simple _ModuleLock equivalent for Python builds without\\n    multi-threading support.\\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        self.name = name\\n        self.count = 0\\n\\n    def acquire(self):\\n        self.count += 1\\n        return True\\n\\n    def release(self):\\n        if self.count == 0:\\n            raise RuntimeError('cannot release un-acquired lock')\\n        self.count -= 1\\n\\n    def __repr__(self):\\n        return f'_DummyModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _ModuleLockManager:\\n\\n    def __init__(self, name):\\n        self._name = name\\n        self._lock = None\\n\\n    def __enter__(self):\\n        self._lock = _get_module_lock(self._name)\\n        self._lock.acquire()\\n\\n    def __exit__(self, *args, **kwargs):\\n        self._lock.release()\\n\\n\\n# The following two functions are for consumption by Python/import.c.\\n\\ndef _get_module_lock(name):\\n    \\\"\\\"\\\"Get or create the module lock for a given module name.\\n\\n    Acquire/release internally the global import lock to protect\\n    _module_locks.\\\"\\\"\\\"\\n\\n    _imp.acquire_lock()\\n    try:\\n        try:\\n            lock = _module_locks[name]()\\n        except KeyError:\\n            lock = None\\n\\n        if lock is None:\\n            if _thread is None:\\n                lock = _DummyModuleLock(name)\\n            else:\\n                lock = _ModuleLock(name)\\n\\n            def cb(ref, name=name):\\n                _imp.acquire_lock()\\n                try:\\n                    # bpo-31070: Check if another thread created a new lock\\n                    # after the previous lock was destroyed\\n                    # but before the weakref callback was called.\\n                    if _module_locks.get(name) is ref:\\n                        del _module_locks[name]\\n                finally:\\n                    _imp.release_lock()\\n\\n            _module_locks[name] = _weakref.ref(lock, cb)\\n    finally:\\n        _imp.release_lock()\\n\\n    return lock\\n\\n\\ndef _lock_unlock_module(name):\\n    \\\"\\\"\\\"Acquires then releases the module lock for a given module name.\\n\\n    This is used to ensure a module is completely initialized, in the\\n    event it is being imported by another thread.\\n    \\\"\\\"\\\"\\n    lock = _get_module_lock(name)\\n    try:\\n        lock.acquire()\\n    except _DeadlockError:\\n        # Concurrent circular import, we'll accept a partially initialized\\n        # module object.\\n        pass\\n    else:\\n        lock.release()\\n\\n# Frame stripping magic ###############################################\\ndef _call_with_frames_removed(f, *args, **kwds):\\n    \\\"\\\"\\\"remove_importlib_frames in import.c will always remove sequences\\n    of importlib frames that end with a call to this function\\n\\n    Use it instead of a normal call in places where including the importlib\\n    frames introduces unwanted noise into the traceback (e.g. when executing\\n    module code)\\n    \\\"\\\"\\\"\\n    return f(*args, **kwds)\\n\\n\\ndef _verbose_message(message, *args, verbosity=1):\\n    \\\"\\\"\\\"Print the message to stderr if -v/PYTHONVERBOSE is turned on.\\\"\\\"\\\"\\n    if sys.flags.verbose >= verbosity:\\n        if not message.startswith(('#', 'import ')):\\n            message = '# ' + message\\n        print(message.format(*args), file=sys.stderr)\\n\\n\\ndef _requires_builtin(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is built-in.\\\"\\\"\\\"\\n    def _requires_builtin_wrapper(self, fullname):\\n        if fullname not in sys.builtin_module_names:\\n            raise ImportError(f'{fullname!r} is not a built-in module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_builtin_wrapper, fxn)\\n    return _requires_builtin_wrapper\\n\\n\\ndef _requires_frozen(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is frozen.\\\"\\\"\\\"\\n    def _requires_frozen_wrapper(self, fullname):\\n        if not _imp.is_frozen(fullname):\\n            raise ImportError(f'{fullname!r} is not a frozen module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_frozen_wrapper, fxn)\\n    return _requires_frozen_wrapper\\n\\n\\n# Typically used by loader classes as a method replacement.\\ndef _load_module_shim(self, fullname):\\n    \\\"\\\"\\\"Load the specified module into sys.modules and return it.\\n\\n    This method is deprecated.  Use loader.exec_module() instead.\\n\\n    \\\"\\\"\\\"\\n    msg = (\\\"the load_module() method is deprecated and slated for removal in \\\"\\n          \\\"Python 3.12; use exec_module() instead\\\")\\n    _warnings.warn(msg, DeprecationWarning)\\n    spec = spec_from_loader(fullname, self)\\n    if fullname in sys.modules:\\n        module = sys.modules[fullname]\\n        _exec(spec, module)\\n        return sys.modules[fullname]\\n    else:\\n        return _load(spec)\\n\\n# Module specifications #######################################################\\n\\ndef _module_repr(module):\\n    \\\"\\\"\\\"The implementation of ModuleType.__repr__().\\\"\\\"\\\"\\n    loader = getattr(module, '__loader__', None)\\n    if spec := getattr(module, \\\"__spec__\\\", None):\\n        return _module_repr_from_spec(spec)\\n    # Fall through to a catch-all which always succeeds.\\n    try:\\n        name = module.__name__\\n    except AttributeError:\\n        name = '?'\\n    try:\\n        filename = module.__file__\\n    except AttributeError:\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        return f'<module {name!r} from {filename!r}>'\\n\\n\\nclass ModuleSpec:\\n    \\\"\\\"\\\"The specification for a module, used for loading.\\n\\n    A module's spec is the source for information about the module.  For\\n    data associated with the module, including source, use the spec's\\n    loader.\\n\\n    `name` is the absolute name of the module.  `loader` is the loader\\n    to use when loading the module.  `parent` is the name of the\\n    package the module is in.  The parent is derived from the name.\\n\\n    `is_package` determines if the module is considered a package or\\n    not.  On modules this is reflected by the `__path__` attribute.\\n\\n    `origin` is the specific location used by the loader from which to\\n    load the module, if that information is available.  When filename is\\n    set, origin will match.\\n\\n    `has_location` indicates that a spec's \\\"origin\\\" reflects a location.\\n    When this is True, `__file__` attribute of the module is set.\\n\\n    `cached` is the location of the cached bytecode file, if any.  It\\n    corresponds to the `__cached__` attribute.\\n\\n    `submodule_search_locations` is the sequence of path entries to\\n    search when importing submodules.  If set, is_package should be\\n    True--and False otherwise.\\n\\n    Packages are simply modules that (may) have submodules.  If a spec\\n    has a non-None value in `submodule_search_locations`, the import\\n    system will consider modules loaded from the spec as packages.\\n\\n    Only finders (see importlib.abc.MetaPathFinder and\\n    importlib.abc.PathEntryFinder) should modify ModuleSpec instances.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name, loader, *, origin=None, loader_state=None,\\n                 is_package=None):\\n        self.name = name\\n        self.loader = loader\\n        self.origin = origin\\n        self.loader_state = loader_state\\n        self.submodule_search_locations = [] if is_package else None\\n        self._uninitialized_submodules = []\\n\\n        # file-location attributes\\n        self._set_fileattr = False\\n        self._cached = None\\n\\n    def __repr__(self):\\n        args = [f'name={self.name!r}', f'loader={self.loader!r}']\\n        if self.origin is not None:\\n            args.append(f'origin={self.origin!r}')\\n        if self.submodule_search_locations is not None:\\n            args.append(f'submodule_search_locations={self.submodule_search_locations}')\\n        return f'{self.__class__.__name__}({\\\", \\\".join(args)})'\\n\\n    def __eq__(self, other):\\n        smsl = self.submodule_search_locations\\n        try:\\n            return (self.name == other.name and\\n                    self.loader == other.loader and\\n                    self.origin == other.origin and\\n                    smsl == other.submodule_search_locations and\\n                    self.cached == other.cached and\\n                    self.has_location == other.has_location)\\n        except AttributeError:\\n            return NotImplemented\\n\\n    @property\\n    def cached(self):\\n        if self._cached is None:\\n            if self.origin is not None and self._set_fileattr:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                self._cached = _bootstrap_external._get_cached(self.origin)\\n        return self._cached\\n\\n    @cached.setter\\n    def cached(self, cached):\\n        self._cached = cached\\n\\n    @property\\n    def parent(self):\\n        \\\"\\\"\\\"The name of the module's parent.\\\"\\\"\\\"\\n        if self.submodule_search_locations is None:\\n            return self.name.rpartition('.')[0]\\n        else:\\n            return self.name\\n\\n    @property\\n    def has_location(self):\\n        return self._set_fileattr\\n\\n    @has_location.setter\\n    def has_location(self, value):\\n        self._set_fileattr = bool(value)\\n\\n\\ndef spec_from_loader(name, loader, *, origin=None, is_package=None):\\n    \\\"\\\"\\\"Return a module spec based on various loader methods.\\\"\\\"\\\"\\n    if origin is None:\\n        origin = getattr(loader, '_ORIGIN', None)\\n\\n    if not origin and hasattr(loader, 'get_filename'):\\n        if _bootstrap_external is None:\\n            raise NotImplementedError\\n        spec_from_file_location = _bootstrap_external.spec_from_file_location\\n\\n        if is_package is None:\\n            return spec_from_file_location(name, loader=loader)\\n        search = [] if is_package else None\\n        return spec_from_file_location(name, loader=loader,\\n                                       submodule_search_locations=search)\\n\\n    if is_package is None:\\n        if hasattr(loader, 'is_package'):\\n            try:\\n                is_package = loader.is_package(name)\\n            except ImportError:\\n                is_package = None  # aka, undefined\\n        else:\\n            # the default\\n            is_package = False\\n\\n    return ModuleSpec(name, loader, origin=origin, is_package=is_package)\\n\\n\\ndef _spec_from_module(module, loader=None, origin=None):\\n    # This function is meant for use in _setup().\\n    try:\\n        spec = module.__spec__\\n    except AttributeError:\\n        pass\\n    else:\\n        if spec is not None:\\n            return spec\\n\\n    name = module.__name__\\n    if loader is None:\\n        try:\\n            loader = module.__loader__\\n        except AttributeError:\\n            # loader will stay None.\\n            pass\\n    try:\\n        location = module.__file__\\n    except AttributeError:\\n        location = None\\n    if origin is None:\\n        if loader is not None:\\n            origin = getattr(loader, '_ORIGIN', None)\\n        if not origin and location is not None:\\n            origin = location\\n    try:\\n        cached = module.__cached__\\n    except AttributeError:\\n        cached = None\\n    try:\\n        submodule_search_locations = list(module.__path__)\\n    except AttributeError:\\n        submodule_search_locations = None\\n\\n    spec = ModuleSpec(name, loader, origin=origin)\\n    spec._set_fileattr = False if location is None else (origin == location)\\n    spec.cached = cached\\n    spec.submodule_search_locations = submodule_search_locations\\n    return spec\\n\\n\\ndef _init_module_attrs(spec, module, *, override=False):\\n    # The passed-in module may be not support attribute assignment,\\n    # in which case we simply don't set the attributes.\\n    # __name__\\n    if (override or getattr(module, '__name__', None) is None):\\n        try:\\n            module.__name__ = spec.name\\n        except AttributeError:\\n            pass\\n    # __loader__\\n    if override or getattr(module, '__loader__', None) is None:\\n        loader = spec.loader\\n        if loader is None:\\n            # A backward compatibility hack.\\n            if spec.submodule_search_locations is not None:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                NamespaceLoader = _bootstrap_external.NamespaceLoader\\n\\n                loader = NamespaceLoader.__new__(NamespaceLoader)\\n                loader._path = spec.submodule_search_locations\\n                spec.loader = loader\\n                # While the docs say that module.__file__ is not set for\\n                # built-in modules, and the code below will avoid setting it if\\n                # spec.has_location is false, this is incorrect for namespace\\n                # packages.  Namespace packages have no location, but their\\n                # __spec__.origin is None, and thus their module.__file__\\n                # should also be None for consistency.  While a bit of a hack,\\n                # this is the best place to ensure this consistency.\\n                #\\n                # See # https://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_module\\n                # and bpo-32305\\n                module.__file__ = None\\n        try:\\n            module.__loader__ = loader\\n        except AttributeError:\\n            pass\\n    # __package__\\n    if override or getattr(module, '__package__', None) is None:\\n        try:\\n            module.__package__ = spec.parent\\n        except AttributeError:\\n            pass\\n    # __spec__\\n    try:\\n        module.__spec__ = spec\\n    except AttributeError:\\n        pass\\n    # __path__\\n    if override or getattr(module, '__path__', None) is None:\\n        if spec.submodule_search_locations is not None:\\n            # XXX We should extend __path__ if it's already a list.\\n            try:\\n                module.__path__ = spec.submodule_search_locations\\n            except AttributeError:\\n                pass\\n    # __file__/__cached__\\n    if spec.has_location:\\n        if override or getattr(module, '__file__', None) is None:\\n            try:\\n                module.__file__ = spec.origin\\n            except AttributeError:\\n                pass\\n\\n        if override or getattr(module, '__cached__', None) is None:\\n            if spec.cached is not None:\\n                try:\\n                    module.__cached__ = spec.cached\\n                except AttributeError:\\n                    pass\\n    return module\\n\\n\\ndef module_from_spec(spec):\\n    \\\"\\\"\\\"Create a module based on the provided spec.\\\"\\\"\\\"\\n    # Typically loaders will not implement create_module().\\n    module = None\\n    if hasattr(spec.loader, 'create_module'):\\n        # If create_module() returns `None` then it means default\\n        # module creation should be used.\\n        module = spec.loader.create_module(spec)\\n    elif hasattr(spec.loader, 'exec_module'):\\n        raise ImportError('loaders that define exec_module() '\\n                          'must also define create_module()')\\n    if module is None:\\n        module = _new_module(spec.name)\\n    _init_module_attrs(spec, module)\\n    return module\\n\\n\\ndef _module_repr_from_spec(spec):\\n    \\\"\\\"\\\"Return the repr to use for the module.\\\"\\\"\\\"\\n    name = '?' if spec.name is None else spec.name\\n    if spec.origin is None:\\n        loader = spec.loader\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        elif (\\n            _bootstrap_external is not None\\n            and isinstance(loader, _bootstrap_external.NamespaceLoader)\\n        ):\\n            return f'<module {name!r} (namespace) from {list(loader._path)}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        if spec.has_location:\\n            return f'<module {name!r} from {spec.origin!r}>'\\n        else:\\n            return f'<module {spec.name!r} ({spec.origin})>'\\n\\n\\n# Used by importlib.reload() and _load_module_shim().\\ndef _exec(spec, module):\\n    \\\"\\\"\\\"Execute the spec's specified module in an existing module's namespace.\\\"\\\"\\\"\\n    name = spec.name\\n    with _ModuleLockManager(name):\\n        if sys.modules.get(name) is not module:\\n            msg = f'module {name!r} not in sys.modules'\\n            raise ImportError(msg, name=name)\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # Namespace package.\\n                _init_module_attrs(spec, module, override=True)\\n            else:\\n                _init_module_attrs(spec, module, override=True)\\n                if not hasattr(spec.loader, 'exec_module'):\\n                    msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                           \\\"falling back to load_module()\\\")\\n                    _warnings.warn(msg, ImportWarning)\\n                    spec.loader.load_module(name)\\n                else:\\n                    spec.loader.exec_module(module)\\n        finally:\\n            # Update the order of insertion into sys.modules for module\\n            # clean-up at shutdown.\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n    return module\\n\\n\\ndef _load_backward_compatible(spec):\\n    # It is assumed that all callers have been warned about using load_module()\\n    # appropriately before calling this function.\\n    try:\\n        spec.loader.load_module(spec.name)\\n    except:\\n        if spec.name in sys.modules:\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n        raise\\n    # The module must be in sys.modules at this point!\\n    # Move it to the end of sys.modules.\\n    module = sys.modules.pop(spec.name)\\n    sys.modules[spec.name] = module\\n    if getattr(module, '__loader__', None) is None:\\n        try:\\n            module.__loader__ = spec.loader\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__package__', None) is None:\\n        try:\\n            # Since module.__path__ may not line up with\\n            # spec.submodule_search_paths, we can't necessarily rely\\n            # on spec.parent here.\\n            module.__package__ = module.__name__\\n            if not hasattr(module, '__path__'):\\n                module.__package__ = spec.name.rpartition('.')[0]\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__spec__', None) is None:\\n        try:\\n            module.__spec__ = spec\\n        except AttributeError:\\n            pass\\n    return module\\n\\ndef _load_unlocked(spec):\\n    # A helper for direct use by the import system.\\n    if spec.loader is not None:\\n        # Not a namespace package.\\n        if not hasattr(spec.loader, 'exec_module'):\\n            msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                    \\\"falling back to load_module()\\\")\\n            _warnings.warn(msg, ImportWarning)\\n            return _load_backward_compatible(spec)\\n\\n    module = module_from_spec(spec)\\n\\n    # This must be done before putting the module in sys.modules\\n    # (otherwise an optimization shortcut in import.c becomes\\n    # wrong).\\n    spec._initializing = True\\n    try:\\n        sys.modules[spec.name] = module\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # A namespace package so do nothing.\\n            else:\\n                spec.loader.exec_module(module)\\n        except:\\n            try:\\n                del sys.modules[spec.name]\\n            except KeyError:\\n                pass\\n            raise\\n        # Move the module to the end of sys.modules.\\n        # We don't ensure that the import-related module attributes get\\n        # set in the sys.modules replacement case.  Such modules are on\\n        # their own.\\n        module = sys.modules.pop(spec.name)\\n        sys.modules[spec.name] = module\\n        _verbose_message('import {!r} # {!r}', spec.name, spec.loader)\\n    finally:\\n        spec._initializing = False\\n\\n    return module\\n\\n# A method used during testing of _load_unlocked() and by\\n# _load_module_shim().\\ndef _load(spec):\\n    \\\"\\\"\\\"Return a new module object, loaded by the spec's loader.\\n\\n    The module is not added to its parent.\\n\\n    If a module is already in sys.modules, that existing module gets\\n    clobbered.\\n\\n    \\\"\\\"\\\"\\n    with _ModuleLockManager(spec.name):\\n        return _load_unlocked(spec)\\n\\n\\n# Loaders #####################################################################\\n\\nclass BuiltinImporter:\\n\\n    \\\"\\\"\\\"Meta path import for built-in modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"built-in\\\"\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        if _imp.is_builtin(fullname):\\n            return spec_from_loader(fullname, cls, origin=cls._ORIGIN)\\n        else:\\n            return None\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Create a built-in module\\\"\\\"\\\"\\n        if spec.name not in sys.builtin_module_names:\\n            raise ImportError(f'{spec.name!r} is not a built-in module',\\n                              name=spec.name)\\n        return _call_with_frames_removed(_imp.create_builtin, spec)\\n\\n    @staticmethod\\n    def exec_module(module):\\n        \\\"\\\"\\\"Exec a built-in module\\\"\\\"\\\"\\n        _call_with_frames_removed(_imp.exec_builtin, module)\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have code objects.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return False as built-in modules are never packages.\\\"\\\"\\\"\\n        return False\\n\\n    load_module = classmethod(_load_module_shim)\\n\\n\\nclass FrozenImporter:\\n\\n    \\\"\\\"\\\"Meta path import for frozen modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"frozen\\\"\\n\\n    @classmethod\\n    def _fix_up_module(cls, module):\\n        spec = module.__spec__\\n        state = spec.loader_state\\n        if state is None:\\n            # The module is missing FrozenImporter-specific values.\\n\\n            # Fix up the spec attrs.\\n            origname = vars(module).pop('__origname__', None)\\n            assert origname, 'see PyImport_ImportFrozenModuleObject()'\\n            ispkg = hasattr(module, '__path__')\\n            assert _imp.is_frozen_package(module.__name__) == ispkg, ispkg\\n            filename, pkgdir = cls._resolve_filename(origname, spec.name, ispkg)\\n            spec.loader_state = type(sys.implementation)(\\n                filename=filename,\\n                origname=origname,\\n            )\\n            __path__ = spec.submodule_search_locations\\n            if ispkg:\\n                assert __path__ == [], __path__\\n                if pkgdir:\\n                    spec.submodule_search_locations.insert(0, pkgdir)\\n            else:\\n                assert __path__ is None, __path__\\n\\n            # Fix up the module attrs (the bare minimum).\\n            assert not hasattr(module, '__file__'), module.__file__\\n            if filename:\\n                try:\\n                    module.__file__ = filename\\n                except AttributeError:\\n                    pass\\n            if ispkg:\\n                if module.__path__ != __path__:\\n                    assert module.__path__ == [], module.__path__\\n                    module.__path__.extend(__path__)\\n        else:\\n            # These checks ensure that _fix_up_module() is only called\\n            # in the right places.\\n            __path__ = spec.submodule_search_locations\\n            ispkg = __path__ is not None\\n            # Check the loader state.\\n            assert sorted(vars(state)) == ['filename', 'origname'], state\\n            if state.origname:\\n                # The only frozen modules with \\\"origname\\\" set are stdlib modules.\\n                (__file__, pkgdir,\\n                 ) = cls._resolve_filename(state.origname, spec.name, ispkg)\\n                assert state.filename == __file__, (state.filename, __file__)\\n                if pkgdir:\\n                    assert __path__ == [pkgdir], (__path__, pkgdir)\\n                else:\\n                    assert __path__ == ([] if ispkg else None), __path__\\n            else:\\n                __file__ = None\\n                assert state.filename is None, state.filename\\n                assert __path__ == ([] if ispkg else None), __path__\\n            # Check the file attrs.\\n            if __file__:\\n                assert hasattr(module, '__file__')\\n                assert module.__file__ == __file__, (module.__file__, __file__)\\n            else:\\n                assert not hasattr(module, '__file__'), module.__file__\\n            if ispkg:\\n                assert hasattr(module, '__path__')\\n                assert module.__path__ == __path__, (module.__path__, __path__)\\n            else:\\n                assert not hasattr(module, '__path__'), module.__path__\\n        assert not spec.has_location\\n\\n    @classmethod\\n    def _resolve_filename(cls, fullname, alias=None, ispkg=False):\\n        if not fullname or not getattr(sys, '_stdlib_dir', None):\\n            return None, None\\n        try:\\n            sep = cls._SEP\\n        except AttributeError:\\n            sep = cls._SEP = '\\\\\\\\' if sys.platform == 'win32' else '/'\\n\\n        if fullname != alias:\\n            if fullname.startswith('<'):\\n                fullname = fullname[1:]\\n                if not ispkg:\\n                    fullname = f'{fullname}.__init__'\\n            else:\\n                ispkg = False\\n        relfile = fullname.replace('.', sep)\\n        if ispkg:\\n            pkgdir = f'{sys._stdlib_dir}{sep}{relfile}'\\n            filename = f'{pkgdir}{sep}__init__.py'\\n        else:\\n            pkgdir = None\\n            filename = f'{sys._stdlib_dir}{sep}{relfile}.py'\\n        return filename, pkgdir\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        info = _call_with_frames_removed(_imp.find_frozen, fullname)\\n        if info is None:\\n            return None\\n        # We get the marshaled data in exec_module() (the loader\\n        # part of the importer), instead of here (the finder part).\\n        # The loader is the usual place to get the data that will\\n        # be loaded into the module.  (For example, see _LoaderBasics\\n        # in _bootstra_external.py.)  Most importantly, this importer\\n        # is simpler if we wait to get the data.\\n        # However, getting as much data in the finder as possible\\n        # to later load the module is okay, and sometimes important.\\n        # (That's why ModuleSpec.loader_state exists.)  This is\\n        # especially true if it avoids throwing away expensive data\\n        # the loader would otherwise duplicate later and can be done\\n        # efficiently.  In this case it isn't worth it.\\n        _, ispkg, origname = info\\n        spec = spec_from_loader(fullname, cls,\\n                                origin=cls._ORIGIN,\\n                                is_package=ispkg)\\n        filename, pkgdir = cls._resolve_filename(origname, fullname, ispkg)\\n        spec.loader_state = type(sys.implementation)(\\n            filename=filename,\\n            origname=origname,\\n        )\\n        if pkgdir:\\n            spec.submodule_search_locations.insert(0, pkgdir)\\n        return spec\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Set __file__, if able.\\\"\\\"\\\"\\n        module = _new_module(spec.name)\\n        try:\\n            filename = spec.loader_state.filename\\n        except AttributeError:\\n            pass\\n        else:\\n            if filename:\\n                module.__file__ = filename\\n        return module\\n\\n    @staticmethod\\n    def exec_module(module):\\n        spec = module.__spec__\\n        name = spec.name\\n        code = _call_with_frames_removed(_imp.get_frozen_object, name)\\n        exec(code, module.__dict__)\\n\\n    @classmethod\\n    def load_module(cls, fullname):\\n        \\\"\\\"\\\"Load a frozen module.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # Warning about deprecation implemented in _load_module_shim().\\n        module = _load_module_shim(cls, fullname)\\n        info = _imp.find_frozen(fullname)\\n        assert info is not None\\n        _, ispkg, origname = info\\n        module.__origname__ = origname\\n        vars(module).pop('__file__', None)\\n        if ispkg:\\n            module.__path__ = []\\n        cls._fix_up_module(module)\\n        return module\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return the code object for the frozen module.\\\"\\\"\\\"\\n        return _imp.get_frozen_object(fullname)\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as frozen modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_frozen\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return True if the frozen module is a package.\\\"\\\"\\\"\\n        return _imp.is_frozen_package(fullname)\\n\\n\\n# Import itself ###############################################################\\n\\nclass _ImportLockContext:\\n\\n    \\\"\\\"\\\"Context manager for the import lock.\\\"\\\"\\\"\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Acquire the import lock.\\\"\\\"\\\"\\n        _imp.acquire_lock()\\n\\n    def __exit__(self, exc_type, exc_value, exc_traceback):\\n        \\\"\\\"\\\"Release the import lock regardless of any raised exceptions.\\\"\\\"\\\"\\n        _imp.release_lock()\\n\\n\\ndef _resolve_name(name, package, level):\\n    \\\"\\\"\\\"Resolve a relative module name to an absolute one.\\\"\\\"\\\"\\n    bits = package.rsplit('.', level - 1)\\n    if len(bits) < level:\\n        raise ImportError('attempted relative import beyond top-level package')\\n    base = bits[0]\\n    return f'{base}.{name}' if name else base\\n\\n\\ndef _find_spec(name, path, target=None):\\n    \\\"\\\"\\\"Find a module's spec.\\\"\\\"\\\"\\n    meta_path = sys.meta_path\\n    if meta_path is None:\\n        # PyImport_Cleanup() is running or has been called.\\n        raise ImportError(\\\"sys.meta_path is None, Python is likely \\\"\\n                          \\\"shutting down\\\")\\n\\n    if not meta_path:\\n        _warnings.warn('sys.meta_path is empty', ImportWarning)\\n\\n    # We check sys.modules here for the reload case.  While a passed-in\\n    # target will usually indicate a reload there is no guarantee, whereas\\n    # sys.modules provides one.\\n    is_reload = name in sys.modules\\n    for finder in meta_path:\\n        with _ImportLockContext():\\n            try:\\n                find_spec = finder.find_spec\\n            except AttributeError:\\n                continue\\n            else:\\n                spec = find_spec(name, path, target)\\n        if spec is not None:\\n            # The parent import may have already imported this module.\\n            if not is_reload and name in sys.modules:\\n                module = sys.modules[name]\\n                try:\\n                    __spec__ = module.__spec__\\n                except AttributeError:\\n                    # We use the found spec since that is the one that\\n                    # we would have used if the parent module hadn't\\n                    # beaten us to the punch.\\n                    return spec\\n                else:\\n                    if __spec__ is None:\\n                        return spec\\n                    else:\\n                        return __spec__\\n            else:\\n                return spec\\n    else:\\n        return None\\n\\n\\ndef _sanity_check(name, package, level):\\n    \\\"\\\"\\\"Verify arguments are \\\"sane\\\".\\\"\\\"\\\"\\n    if not isinstance(name, str):\\n        raise TypeError(f'module name must be str, not {type(name)}')\\n    if level < 0:\\n        raise ValueError('level must be >= 0')\\n    if level > 0:\\n        if not isinstance(package, str):\\n            raise TypeError('__package__ not set to a string')\\n        elif not package:\\n            raise ImportError('attempted relative import with no known parent '\\n                              'package')\\n    if not name and level == 0:\\n        raise ValueError('Empty module name')\\n\\n\\n_ERR_MSG_PREFIX = 'No module named '\\n_ERR_MSG = _ERR_MSG_PREFIX + '{!r}'\\n\\ndef _find_and_load_unlocked(name, import_):\\n    path = None\\n    parent = name.rpartition('.')[0]\\n    parent_spec = None\\n    if parent:\\n        if parent not in sys.modules:\\n            _call_with_frames_removed(import_, parent)\\n        # Crazy side-effects!\\n        if name in sys.modules:\\n            return sys.modules[name]\\n        parent_module = sys.modules[parent]\\n        try:\\n            path = parent_module.__path__\\n        except AttributeError:\\n            msg = f'{_ERR_MSG_PREFIX}{name!r}; {parent!r} is not a package'\\n            raise ModuleNotFoundError(msg, name=name) from None\\n        parent_spec = parent_module.__spec__\\n        child = name.rpartition('.')[2]\\n    spec = _find_spec(name, path)\\n    if spec is None:\\n        raise ModuleNotFoundError(f'{_ERR_MSG_PREFIX}{name!r}', name=name)\\n    else:\\n        if parent_spec:\\n            # Temporarily add child we are currently importing to parent's\\n            # _uninitialized_submodules for circular import tracking.\\n            parent_spec._uninitialized_submodules.append(child)\\n        try:\\n            module = _load_unlocked(spec)\\n        finally:\\n            if parent_spec:\\n                parent_spec._uninitialized_submodules.pop()\\n    if parent:\\n        # Set the module as an attribute on its parent.\\n        parent_module = sys.modules[parent]\\n        try:\\n            setattr(parent_module, child, module)\\n        except AttributeError:\\n            msg = f\\\"Cannot set an attribute on {parent!r} for child module {child!r}\\\"\\n            _warnings.warn(msg, ImportWarning)\\n    return module\\n\\n\\n_NEEDS_LOADING = object()\\n\\n\\ndef _find_and_load(name, import_):\\n    \\\"\\\"\\\"Find and load the module.\\\"\\\"\\\"\\n\\n    # Optimization: we avoid unneeded module locking if the module\\n    # already exists in sys.modules and is fully initialized.\\n    module = sys.modules.get(name, _NEEDS_LOADING)\\n    if (module is _NEEDS_LOADING or\\n        getattr(getattr(module, \\\"__spec__\\\", None), \\\"_initializing\\\", False)):\\n        with _ModuleLockManager(name):\\n            module = sys.modules.get(name, _NEEDS_LOADING)\\n            if module is _NEEDS_LOADING:\\n                return _find_and_load_unlocked(name, import_)\\n\\n        # Optimization: only call _bootstrap._lock_unlock_module() if\\n        # module.__spec__._initializing is True.\\n        # NOTE: because of this, initializing must be set *before*\\n        # putting the new module in sys.modules.\\n        _lock_unlock_module(name)\\n\\n    if module is None:\\n        message = f'import of {name} halted; None in sys.modules'\\n        raise ModuleNotFoundError(message, name=name)\\n\\n    return module\\n\\n\\ndef _gcd_import(name, package=None, level=0):\\n    \\\"\\\"\\\"Import and return the module based on its name, the package the call is\\n    being made from, and the level adjustment.\\n\\n    This function represents the greatest common denominator of functionality\\n    between import_module and __import__. This includes setting __package__ if\\n    the loader did not.\\n\\n    \\\"\\\"\\\"\\n    _sanity_check(name, package, level)\\n    if level > 0:\\n        name = _resolve_name(name, package, level)\\n    return _find_and_load(name, _gcd_import)\\n\\n\\ndef _handle_fromlist(module, fromlist, import_, *, recursive=False):\\n    \\\"\\\"\\\"Figure out what __import__ should return.\\n\\n    The import_ parameter is a callable which takes the name of module to\\n    import. It is required to decouple the function from assuming importlib's\\n    import implementation is desired.\\n\\n    \\\"\\\"\\\"\\n    # The hell that is fromlist ...\\n    # If a package was imported, try to import stuff from fromlist.\\n    for x in fromlist:\\n        if not isinstance(x, str):\\n            if recursive:\\n                where = module.__name__ + '.__all__'\\n            else:\\n                where = \\\"``from list''\\\"\\n            raise TypeError(f\\\"Item in {where} must be str, \\\"\\n                            f\\\"not {type(x).__name__}\\\")\\n        elif x == '*':\\n            if not recursive and hasattr(module, '__all__'):\\n                _handle_fromlist(module, module.__all__, import_,\\n                                 recursive=True)\\n        elif not hasattr(module, x):\\n            from_name = f'{module.__name__}.{x}'\\n            try:\\n                _call_with_frames_removed(import_, from_name)\\n            except ModuleNotFoundError as exc:\\n                # Backwards-compatibility dictates we ignore failed\\n                # imports triggered by fromlist for modules that don't\\n                # exist.\\n                if (exc.name == from_name and\\n                    sys.modules.get(from_name, _NEEDS_LOADING) is not None):\\n                    continue\\n                raise\\n    return module\\n\\n\\ndef _calc___package__(globals):\\n    \\\"\\\"\\\"Calculate what __package__ should be.\\n\\n    __package__ is not guaranteed to be defined or could be set to None\\n    to represent that its proper value is unknown.\\n\\n    \\\"\\\"\\\"\\n    package = globals.get('__package__')\\n    spec = globals.get('__spec__')\\n    if package is not None:\\n        if spec is not None and package != spec.parent:\\n            _warnings.warn(\\\"__package__ != __spec__.parent \\\"\\n                           f\\\"({package!r} != {spec.parent!r})\\\",\\n                           DeprecationWarning, stacklevel=3)\\n        return package\\n    elif spec is not None:\\n        return spec.parent\\n    else:\\n        _warnings.warn(\\\"can't resolve package from __spec__ or __package__, \\\"\\n                       \\\"falling back on __name__ and __path__\\\",\\n                       ImportWarning, stacklevel=3)\\n        package = globals['__name__']\\n        if '__path__' not in globals:\\n            package = package.rpartition('.')[0]\\n    return package\\n\\n\\ndef __import__(name, globals=None, locals=None, fromlist=(), level=0):\\n    \\\"\\\"\\\"Import a module.\\n\\n    The 'globals' argument is used to infer where the import is occurring from\\n    to handle relative imports. The 'locals' argument is ignored. The\\n    'fromlist' argument specifies what should exist as attributes on the module\\n    being imported (e.g. ``from module import <fromlist>``).  The 'level'\\n    argument represents the package location to import from in a relative\\n    import (e.g. ``from ..pkg import mod`` would have a 'level' of 2).\\n\\n    \\\"\\\"\\\"\\n    if level == 0:\\n        module = _gcd_import(name)\\n    else:\\n        globals_ = globals if globals is not None else {}\\n        package = _calc___package__(globals_)\\n        module = _gcd_import(name, package, level)\\n    if not fromlist:\\n        # Return up to the first dot in 'name'. This is complicated by the fact\\n        # that 'name' may be relative.\\n        if level == 0:\\n            return _gcd_import(name.partition('.')[0])\\n        elif not name:\\n            return module\\n        else:\\n            # Figure out where to slice the module's name up to the first dot\\n            # in 'name'.\\n            cut_off = len(name) - len(name.partition('.')[0])\\n            # Slice end needs to be positive to alleviate need to special-case\\n            # when ``'.' not in name``.\\n            return sys.modules[module.__name__[:len(module.__name__)-cut_off]]\\n    elif hasattr(module, '__path__'):\\n        return _handle_fromlist(module, fromlist, _gcd_import)\\n    else:\\n        return module\\n\\n\\ndef _builtin_from_name(name):\\n    spec = BuiltinImporter.find_spec(name)\\n    if spec is None:\\n        raise ImportError('no built-in module named ' + name)\\n    return _load_unlocked(spec)\\n\\n\\ndef _setup(sys_module, _imp_module):\\n    \\\"\\\"\\\"Setup importlib by importing needed built-in modules and injecting them\\n    into the global namespace.\\n\\n    As sys is needed for sys.modules access and _imp is needed to load built-in\\n    modules, those two modules must be explicitly passed in.\\n\\n    \\\"\\\"\\\"\\n    global _imp, sys, _blocking_on\\n    _imp = _imp_module\\n    sys = sys_module\\n\\n    # Set up the spec for existing builtin/frozen modules.\\n    module_type = type(sys)\\n    for name, module in sys.modules.items():\\n        if isinstance(module, module_type):\\n            if name in sys.builtin_module_names:\\n                loader = BuiltinImporter\\n            elif _imp.is_frozen(name):\\n                loader = FrozenImporter\\n            else:\\n                continue\\n            spec = _spec_from_module(module, loader)\\n            _init_module_attrs(spec, module)\\n            if loader is FrozenImporter:\\n                loader._fix_up_module(module)\\n\\n    # Directly load built-in modules needed during bootstrap.\\n    self_module = sys.modules[__name__]\\n    for builtin_name in ('_thread', '_warnings', '_weakref'):\\n        if builtin_name not in sys.modules:\\n            builtin_module = _builtin_from_name(builtin_name)\\n        else:\\n            builtin_module = sys.modules[builtin_name]\\n        setattr(self_module, builtin_name, builtin_module)\\n\\n    # Instantiation requires _weakref to have been set.\\n    _blocking_on = _WeakValueDictionary()\\n\\n\\ndef _install(sys_module, _imp_module):\\n    \\\"\\\"\\\"Install importers for builtin and frozen modules\\\"\\\"\\\"\\n    _setup(sys_module, _imp_module)\\n\\n    sys.meta_path.append(BuiltinImporter)\\n    sys.meta_path.append(FrozenImporter)\\n\\n\\ndef _install_external_importers():\\n    \\\"\\\"\\\"Install importers that require external filesystem access\\\"\\\"\\\"\\n    global _bootstrap_external\\n    import _frozen_importlib_external\\n    _bootstrap_external = _frozen_importlib_external\\n    _frozen_importlib_external._install(sys.modules[__name__])\\n\", 1551], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\": [\"# don't import any costly modules\\nimport os\\nimport sys\\n\\nreport_url = (\\n    \\\"https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml\\\"\\n)\\n\\n\\ndef warn_distutils_present():\\n    if 'distutils' not in sys.modules:\\n        return\\n    import warnings\\n\\n    warnings.warn(\\n        \\\"Distutils was imported before Setuptools, but importing Setuptools \\\"\\n        \\\"also replaces the `distutils` module in `sys.modules`. This may lead \\\"\\n        \\\"to undesirable behaviors or errors. To avoid these issues, avoid \\\"\\n        \\\"using distutils directly, ensure that setuptools is installed in the \\\"\\n        \\\"traditional way (e.g. not an editable install), and/or make sure \\\"\\n        \\\"that setuptools is always imported before distutils.\\\"\\n    )\\n\\n\\ndef clear_distutils():\\n    if 'distutils' not in sys.modules:\\n        return\\n    import warnings\\n\\n    warnings.warn(\\n        \\\"Setuptools is replacing distutils. Support for replacing \\\"\\n        \\\"an already imported distutils is deprecated. In the future, \\\"\\n        \\\"this condition will fail. \\\"\\n        f\\\"Register concerns at {report_url}\\\"\\n    )\\n    mods = [\\n        name\\n        for name in sys.modules\\n        if name == \\\"distutils\\\" or name.startswith(\\\"distutils.\\\")\\n    ]\\n    for name in mods:\\n        del sys.modules[name]\\n\\n\\ndef enabled():\\n    \\\"\\\"\\\"\\n    Allow selection of distutils by environment variable.\\n    \\\"\\\"\\\"\\n    which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local')\\n    if which == 'stdlib':\\n        import warnings\\n\\n        warnings.warn(\\n            \\\"Reliance on distutils from stdlib is deprecated. Users \\\"\\n            \\\"must rely on setuptools to provide the distutils module. \\\"\\n            \\\"Avoid importing distutils or import setuptools first, \\\"\\n            \\\"and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. \\\"\\n            f\\\"Register concerns at {report_url}\\\"\\n        )\\n    return which == 'local'\\n\\n\\ndef ensure_local_distutils():\\n    import importlib\\n\\n    clear_distutils()\\n\\n    # With the DistutilsMetaFinder in place,\\n    # perform an import to cause distutils to be\\n    # loaded from setuptools._distutils. Ref #2906.\\n    with shim():\\n        importlib.import_module('distutils')\\n\\n    # check that submodules load as expected\\n    core = importlib.import_module('distutils.core')\\n    assert '_distutils' in core.__file__, core.__file__\\n    assert 'setuptools._distutils.log' not in sys.modules\\n\\n\\ndef do_override():\\n    \\\"\\\"\\\"\\n    Ensure that the local copy of distutils is preferred over stdlib.\\n\\n    See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401\\n    for more motivation.\\n    \\\"\\\"\\\"\\n    if enabled():\\n        warn_distutils_present()\\n        ensure_local_distutils()\\n\\n\\nclass _TrivialRe:\\n    def __init__(self, *patterns) -> None:\\n        self._patterns = patterns\\n\\n    def match(self, string):\\n        return all(pat in string for pat in self._patterns)\\n\\n\\nclass DistutilsMetaFinder:\\n    def find_spec(self, fullname, path, target=None):\\n        # optimization: only consider top level modules and those\\n        # found in the CPython test suite.\\n        if path is not None and not fullname.startswith('test.'):\\n            return None\\n\\n        method_name = 'spec_for_{fullname}'.format(**locals())\\n        method = getattr(self, method_name, lambda: None)\\n        return method()\\n\\n    def spec_for_distutils(self):\\n        if self.is_cpython():\\n            return None\\n\\n        import importlib\\n        import importlib.abc\\n        import importlib.util\\n\\n        try:\\n            mod = importlib.import_module('setuptools._distutils')\\n        except Exception:\\n            # There are a couple of cases where setuptools._distutils\\n            # may not be present:\\n            # - An older Setuptools without a local distutils is\\n            #   taking precedence. Ref #2957.\\n            # - Path manipulation during sitecustomize removes\\n            #   setuptools from the path but only after the hook\\n            #   has been loaded. Ref #2980.\\n            # In either case, fall back to stdlib behavior.\\n            return None\\n\\n        class DistutilsLoader(importlib.abc.Loader):\\n            def create_module(self, spec):\\n                mod.__name__ = 'distutils'\\n                return mod\\n\\n            def exec_module(self, module):\\n                pass\\n\\n        return importlib.util.spec_from_loader(\\n            'distutils', DistutilsLoader(), origin=mod.__file__\\n        )\\n\\n    @staticmethod\\n    def is_cpython():\\n        \\\"\\\"\\\"\\n        Suppress supplying distutils for CPython (build and tests).\\n        Ref #2965 and #3007.\\n        \\\"\\\"\\\"\\n        return os.path.isfile('pybuilddir.txt')\\n\\n    def spec_for_pip(self):\\n        \\\"\\\"\\\"\\n        Ensure stdlib distutils when running under pip.\\n        See pypa/pip#8761 for rationale.\\n        \\\"\\\"\\\"\\n        if sys.version_info >= (3, 12) or self.pip_imported_during_build():\\n            return\\n        clear_distutils()\\n        self.spec_for_distutils = lambda: None\\n\\n    @classmethod\\n    def pip_imported_during_build(cls):\\n        \\\"\\\"\\\"\\n        Detect if pip is being imported in a build script. Ref #2355.\\n        \\\"\\\"\\\"\\n        import traceback\\n\\n        return any(\\n            cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None)\\n        )\\n\\n    @staticmethod\\n    def frame_file_is_setup(frame):\\n        \\\"\\\"\\\"\\n        Return True if the indicated frame suggests a setup.py file.\\n        \\\"\\\"\\\"\\n        # some frames may not have __file__ (#2940)\\n        return frame.f_globals.get('__file__', '').endswith('setup.py')\\n\\n    def spec_for_sensitive_tests(self):\\n        \\\"\\\"\\\"\\n        Ensure stdlib distutils when running select tests under CPython.\\n\\n        python/cpython#91169\\n        \\\"\\\"\\\"\\n        clear_distutils()\\n        self.spec_for_distutils = lambda: None\\n\\n    sensitive_tests = (\\n        [\\n            'test.test_distutils',\\n            'test.test_peg_generator',\\n            'test.test_importlib',\\n        ]\\n        if sys.version_info < (3, 10)\\n        else [\\n            'test.test_distutils',\\n        ]\\n    )\\n\\n\\nfor name in DistutilsMetaFinder.sensitive_tests:\\n    setattr(\\n        DistutilsMetaFinder,\\n        f'spec_for_{name}',\\n        DistutilsMetaFinder.spec_for_sensitive_tests,\\n    )\\n\\n\\nDISTUTILS_FINDER = DistutilsMetaFinder()\\n\\n\\ndef add_shim():\\n    DISTUTILS_FINDER in sys.meta_path or insert_shim()\\n\\n\\nclass shim:\\n    def __enter__(self) -> None:\\n        insert_shim()\\n\\n    def __exit__(self, exc: object, value: object, tb: object) -> None:\\n        _remove_shim()\\n\\n\\ndef insert_shim():\\n    sys.meta_path.insert(0, DISTUTILS_FINDER)\\n\\n\\ndef _remove_shim():\\n    try:\\n        sys.meta_path.remove(DISTUTILS_FINDER)\\n    except ValueError:\\n        pass\\n\\n\\nif sys.version_info < (3, 12):\\n    # DistutilsMetaFinder can only be disabled in Python < 3.12 (PEP 632)\\n    remove_shim = _remove_shim\\n\", 239], \"<frozen importlib._bootstrap_external>\": [\"\\\"\\\"\\\"Core implementation of path-based import.\\n\\nThis module is NOT meant to be directly imported! It has been designed such\\nthat it can be bootstrapped into Python as the implementation of import. As\\nsuch it requires the injection of specific modules and attributes in order to\\nwork. One should use importlib as the public-facing version of this module.\\n\\n\\\"\\\"\\\"\\n# IMPORTANT: Whenever making changes to this module, be sure to run a top-level\\n# `make regen-importlib` followed by `make` in order to get the frozen version\\n# of the module updated. Not doing so will result in the Makefile to fail for\\n# all others who don't have a ./python around to freeze the module in the early\\n# stages of compilation.\\n#\\n\\n# See importlib._setup() for what is injected into the global namespace.\\n\\n# When editing this code be aware that code executed at import time CANNOT\\n# reference any injected objects! This includes not only global code but also\\n# anything specified at the class level.\\n\\n# Module injected manually by _set_bootstrap_module()\\n_bootstrap = None\\n\\n# Import builtin modules\\nimport _imp\\nimport _io\\nimport sys\\nimport _warnings\\nimport marshal\\n\\n\\n_MS_WINDOWS = (sys.platform == 'win32')\\nif _MS_WINDOWS:\\n    import nt as _os\\n    import winreg\\nelse:\\n    import posix as _os\\n\\n\\nif _MS_WINDOWS:\\n    path_separators = ['\\\\\\\\', '/']\\nelse:\\n    path_separators = ['/']\\n# Assumption made in _path_join()\\nassert all(len(sep) == 1 for sep in path_separators)\\npath_sep = path_separators[0]\\npath_sep_tuple = tuple(path_separators)\\npath_separators = ''.join(path_separators)\\n_pathseps_with_colon = {f':{s}' for s in path_separators}\\n\\n\\n# Bootstrap-related code ######################################################\\n_CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win',\\n_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin'\\n_CASE_INSENSITIVE_PLATFORMS =  (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY\\n                                + _CASE_INSENSITIVE_PLATFORMS_STR_KEY)\\n\\n\\ndef _make_relax_case():\\n    if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):\\n        if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS_STR_KEY):\\n            key = 'PYTHONCASEOK'\\n        else:\\n            key = b'PYTHONCASEOK'\\n\\n        def _relax_case():\\n            \\\"\\\"\\\"True if filenames must be checked case-insensitively and ignore environment flags are not set.\\\"\\\"\\\"\\n            return not sys.flags.ignore_environment and key in _os.environ\\n    else:\\n        def _relax_case():\\n            \\\"\\\"\\\"True if filenames must be checked case-insensitively.\\\"\\\"\\\"\\n            return False\\n    return _relax_case\\n\\n_relax_case = _make_relax_case()\\n\\n\\ndef _pack_uint32(x):\\n    \\\"\\\"\\\"Convert a 32-bit integer to little-endian.\\\"\\\"\\\"\\n    return (int(x) & 0xFFFFFFFF).to_bytes(4, 'little')\\n\\n\\ndef _unpack_uint32(data):\\n    \\\"\\\"\\\"Convert 4 bytes in little-endian to an integer.\\\"\\\"\\\"\\n    assert len(data) == 4\\n    return int.from_bytes(data, 'little')\\n\\ndef _unpack_uint16(data):\\n    \\\"\\\"\\\"Convert 2 bytes in little-endian to an integer.\\\"\\\"\\\"\\n    assert len(data) == 2\\n    return int.from_bytes(data, 'little')\\n\\n\\nif _MS_WINDOWS:\\n    def _path_join(*path_parts):\\n        \\\"\\\"\\\"Replacement for os.path.join().\\\"\\\"\\\"\\n        if not path_parts:\\n            return \\\"\\\"\\n        if len(path_parts) == 1:\\n            return path_parts[0]\\n        root = \\\"\\\"\\n        path = []\\n        for new_root, tail in map(_os._path_splitroot, path_parts):\\n            if new_root.startswith(path_sep_tuple) or new_root.endswith(path_sep_tuple):\\n                root = new_root.rstrip(path_separators) or root\\n                path = [path_sep + tail]\\n            elif new_root.endswith(':'):\\n                if root.casefold() != new_root.casefold():\\n                    # Drive relative paths have to be resolved by the OS, so we reset the\\n                    # tail but do not add a path_sep prefix.\\n                    root = new_root\\n                    path = [tail]\\n                else:\\n                    path.append(tail)\\n            else:\\n                root = new_root or root\\n                path.append(tail)\\n        path = [p.rstrip(path_separators) for p in path if p]\\n        if len(path) == 1 and not path[0]:\\n            # Avoid losing the root's trailing separator when joining with nothing\\n            return root + path_sep\\n        return root + path_sep.join(path)\\n\\nelse:\\n    def _path_join(*path_parts):\\n        \\\"\\\"\\\"Replacement for os.path.join().\\\"\\\"\\\"\\n        return path_sep.join([part.rstrip(path_separators)\\n                              for part in path_parts if part])\\n\\n\\ndef _path_split(path):\\n    \\\"\\\"\\\"Replacement for os.path.split().\\\"\\\"\\\"\\n    i = max(path.rfind(p) for p in path_separators)\\n    if i < 0:\\n        return '', path\\n    return path[:i], path[i + 1:]\\n\\n\\ndef _path_stat(path):\\n    \\\"\\\"\\\"Stat the path.\\n\\n    Made a separate function to make it easier to override in experiments\\n    (e.g. cache stat results).\\n\\n    \\\"\\\"\\\"\\n    return _os.stat(path)\\n\\n\\ndef _path_is_mode_type(path, mode):\\n    \\\"\\\"\\\"Test whether the path is the specified mode type.\\\"\\\"\\\"\\n    try:\\n        stat_info = _path_stat(path)\\n    except OSError:\\n        return False\\n    return (stat_info.st_mode & 0o170000) == mode\\n\\n\\ndef _path_isfile(path):\\n    \\\"\\\"\\\"Replacement for os.path.isfile.\\\"\\\"\\\"\\n    return _path_is_mode_type(path, 0o100000)\\n\\n\\ndef _path_isdir(path):\\n    \\\"\\\"\\\"Replacement for os.path.isdir.\\\"\\\"\\\"\\n    if not path:\\n        path = _os.getcwd()\\n    return _path_is_mode_type(path, 0o040000)\\n\\n\\nif _MS_WINDOWS:\\n    def _path_isabs(path):\\n        \\\"\\\"\\\"Replacement for os.path.isabs.\\\"\\\"\\\"\\n        if not path:\\n            return False\\n        root = _os._path_splitroot(path)[0].replace('/', '\\\\\\\\')\\n        return len(root) > 1 and (root.startswith('\\\\\\\\\\\\\\\\') or root.endswith('\\\\\\\\'))\\n\\nelse:\\n    def _path_isabs(path):\\n        \\\"\\\"\\\"Replacement for os.path.isabs.\\\"\\\"\\\"\\n        return path.startswith(path_separators)\\n\\n\\ndef _path_abspath(path):\\n    \\\"\\\"\\\"Replacement for os.path.abspath.\\\"\\\"\\\"\\n    if not _path_isabs(path):\\n        for sep in path_separators:\\n            path = path.removeprefix(f\\\".{sep}\\\")\\n        return _path_join(_os.getcwd(), path)\\n    else:\\n        return path\\n\\n\\ndef _write_atomic(path, data, mode=0o666):\\n    \\\"\\\"\\\"Best-effort function to write data to a path atomically.\\n    Be prepared to handle a FileExistsError if concurrent writing of the\\n    temporary file is attempted.\\\"\\\"\\\"\\n    # id() is used to generate a pseudo-random filename.\\n    path_tmp = f'{path}.{id(path)}'\\n    fd = _os.open(path_tmp,\\n                  _os.O_EXCL | _os.O_CREAT | _os.O_WRONLY, mode & 0o666)\\n    try:\\n        # We first write data to a temporary file, and then use os.replace() to\\n        # perform an atomic rename.\\n        with _io.FileIO(fd, 'wb') as file:\\n            file.write(data)\\n        _os.replace(path_tmp, path)\\n    except OSError:\\n        try:\\n            _os.unlink(path_tmp)\\n        except OSError:\\n            pass\\n        raise\\n\\n\\n_code_type = type(_write_atomic.__code__)\\n\\n\\n# Finder/loader utility code ###############################################\\n\\n# Magic word to reject .pyc files generated by other Python versions.\\n# It should change for each incompatible change to the bytecode.\\n#\\n# The value of CR and LF is incorporated so if you ever read or write\\n# a .pyc file in text mode the magic number will be wrong; also, the\\n# Apple MPW compiler swaps their values, botching string constants.\\n#\\n# There were a variety of old schemes for setting the magic number.\\n# The current working scheme is to increment the previous value by\\n# 10.\\n#\\n# Starting with the adoption of PEP 3147 in Python 3.2, every bump in magic\\n# number also includes a new \\\"magic tag\\\", i.e. a human readable string used\\n# to represent the magic number in __pycache__ directories.  When you change\\n# the magic number, you must also set a new unique magic tag.  Generally this\\n# can be named after the Python major version of the magic number bump, but\\n# it can really be anything, as long as it's different than anything else\\n# that's come before.  The tags are included in the following table, starting\\n# with Python 3.2a0.\\n#\\n# Known values:\\n#  Python 1.5:   20121\\n#  Python 1.5.1: 20121\\n#     Python 1.5.2: 20121\\n#     Python 1.6:   50428\\n#     Python 2.0:   50823\\n#     Python 2.0.1: 50823\\n#     Python 2.1:   60202\\n#     Python 2.1.1: 60202\\n#     Python 2.1.2: 60202\\n#     Python 2.2:   60717\\n#     Python 2.3a0: 62011\\n#     Python 2.3a0: 62021\\n#     Python 2.3a0: 62011 (!)\\n#     Python 2.4a0: 62041\\n#     Python 2.4a3: 62051\\n#     Python 2.4b1: 62061\\n#     Python 2.5a0: 62071\\n#     Python 2.5a0: 62081 (ast-branch)\\n#     Python 2.5a0: 62091 (with)\\n#     Python 2.5a0: 62092 (changed WITH_CLEANUP opcode)\\n#     Python 2.5b3: 62101 (fix wrong code: for x, in ...)\\n#     Python 2.5b3: 62111 (fix wrong code: x += yield)\\n#     Python 2.5c1: 62121 (fix wrong lnotab with for loops and\\n#                          storing constants that should have been removed)\\n#     Python 2.5c2: 62131 (fix wrong code: for x, in ... in listcomp/genexp)\\n#     Python 2.6a0: 62151 (peephole optimizations and STORE_MAP opcode)\\n#     Python 2.6a1: 62161 (WITH_CLEANUP optimization)\\n#     Python 2.7a0: 62171 (optimize list comprehensions/change LIST_APPEND)\\n#     Python 2.7a0: 62181 (optimize conditional branches:\\n#                          introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE)\\n#     Python 2.7a0  62191 (introduce SETUP_WITH)\\n#     Python 2.7a0  62201 (introduce BUILD_SET)\\n#     Python 2.7a0  62211 (introduce MAP_ADD and SET_ADD)\\n#     Python 3000:   3000\\n#                    3010 (removed UNARY_CONVERT)\\n#                    3020 (added BUILD_SET)\\n#                    3030 (added keyword-only parameters)\\n#                    3040 (added signature annotations)\\n#                    3050 (print becomes a function)\\n#                    3060 (PEP 3115 metaclass syntax)\\n#                    3061 (string literals become unicode)\\n#                    3071 (PEP 3109 raise changes)\\n#                    3081 (PEP 3137 make __file__ and __name__ unicode)\\n#                    3091 (kill str8 interning)\\n#                    3101 (merge from 2.6a0, see 62151)\\n#                    3103 (__file__ points to source file)\\n#     Python 3.0a4: 3111 (WITH_CLEANUP optimization).\\n#     Python 3.0b1: 3131 (lexical exception stacking, including POP_EXCEPT\\n                          #3021)\\n#     Python 3.1a1: 3141 (optimize list, set and dict comprehensions:\\n#                         change LIST_APPEND and SET_ADD, add MAP_ADD #2183)\\n#     Python 3.1a1: 3151 (optimize conditional branches:\\n#                         introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE\\n                          #4715)\\n#     Python 3.2a1: 3160 (add SETUP_WITH #6101)\\n#                   tag: cpython-32\\n#     Python 3.2a2: 3170 (add DUP_TOP_TWO, remove DUP_TOPX and ROT_FOUR #9225)\\n#                   tag: cpython-32\\n#     Python 3.2a3  3180 (add DELETE_DEREF #4617)\\n#     Python 3.3a1  3190 (__class__ super closure changed)\\n#     Python 3.3a1  3200 (PEP 3155 __qualname__ added #13448)\\n#     Python 3.3a1  3210 (added size modulo 2**32 to the pyc header #13645)\\n#     Python 3.3a2  3220 (changed PEP 380 implementation #14230)\\n#     Python 3.3a4  3230 (revert changes to implicit __class__ closure #14857)\\n#     Python 3.4a1  3250 (evaluate positional default arguments before\\n#                        keyword-only defaults #16967)\\n#     Python 3.4a1  3260 (add LOAD_CLASSDEREF; allow locals of class to override\\n#                        free vars #17853)\\n#     Python 3.4a1  3270 (various tweaks to the __class__ closure #12370)\\n#     Python 3.4a1  3280 (remove implicit class argument)\\n#     Python 3.4a4  3290 (changes to __qualname__ computation #19301)\\n#     Python 3.4a4  3300 (more changes to __qualname__ computation #19301)\\n#     Python 3.4rc2 3310 (alter __qualname__ computation #20625)\\n#     Python 3.5a1  3320 (PEP 465: Matrix multiplication operator #21176)\\n#     Python 3.5b1  3330 (PEP 448: Additional Unpacking Generalizations #2292)\\n#     Python 3.5b2  3340 (fix dictionary display evaluation order #11205)\\n#     Python 3.5b3  3350 (add GET_YIELD_FROM_ITER opcode #24400)\\n#     Python 3.5.2  3351 (fix BUILD_MAP_UNPACK_WITH_CALL opcode #27286)\\n#     Python 3.6a0  3360 (add FORMAT_VALUE opcode #25483)\\n#     Python 3.6a1  3361 (lineno delta of code.co_lnotab becomes signed #26107)\\n#     Python 3.6a2  3370 (16 bit wordcode #26647)\\n#     Python 3.6a2  3371 (add BUILD_CONST_KEY_MAP opcode #27140)\\n#     Python 3.6a2  3372 (MAKE_FUNCTION simplification, remove MAKE_CLOSURE\\n#                         #27095)\\n#     Python 3.6b1  3373 (add BUILD_STRING opcode #27078)\\n#     Python 3.6b1  3375 (add SETUP_ANNOTATIONS and STORE_ANNOTATION opcodes\\n#                         #27985)\\n#     Python 3.6b1  3376 (simplify CALL_FUNCTIONs & BUILD_MAP_UNPACK_WITH_CALL\\n                          #27213)\\n#     Python 3.6b1  3377 (set __class__ cell from type.__new__ #23722)\\n#     Python 3.6b2  3378 (add BUILD_TUPLE_UNPACK_WITH_CALL #28257)\\n#     Python 3.6rc1 3379 (more thorough __class__ validation #23722)\\n#     Python 3.7a1  3390 (add LOAD_METHOD and CALL_METHOD opcodes #26110)\\n#     Python 3.7a2  3391 (update GET_AITER #31709)\\n#     Python 3.7a4  3392 (PEP 552: Deterministic pycs #31650)\\n#     Python 3.7b1  3393 (remove STORE_ANNOTATION opcode #32550)\\n#     Python 3.7b5  3394 (restored docstring as the first stmt in the body;\\n#                         this might affected the first line number #32911)\\n#     Python 3.8a1  3400 (move frame block handling to compiler #17611)\\n#     Python 3.8a1  3401 (add END_ASYNC_FOR #33041)\\n#     Python 3.8a1  3410 (PEP570 Python Positional-Only Parameters #36540)\\n#     Python 3.8b2  3411 (Reverse evaluation order of key: value in dict\\n#                         comprehensions #35224)\\n#     Python 3.8b2  3412 (Swap the position of positional args and positional\\n#                         only args in ast.arguments #37593)\\n#     Python 3.8b4  3413 (Fix \\\"break\\\" and \\\"continue\\\" in \\\"finally\\\" #37830)\\n#     Python 3.9a0  3420 (add LOAD_ASSERTION_ERROR #34880)\\n#     Python 3.9a0  3421 (simplified bytecode for with blocks #32949)\\n#     Python 3.9a0  3422 (remove BEGIN_FINALLY, END_FINALLY, CALL_FINALLY, POP_FINALLY bytecodes #33387)\\n#     Python 3.9a2  3423 (add IS_OP, CONTAINS_OP and JUMP_IF_NOT_EXC_MATCH bytecodes #39156)\\n#     Python 3.9a2  3424 (simplify bytecodes for *value unpacking)\\n#     Python 3.9a2  3425 (simplify bytecodes for **value unpacking)\\n#     Python 3.10a1 3430 (Make 'annotations' future by default)\\n#     Python 3.10a1 3431 (New line number table format -- PEP 626)\\n#     Python 3.10a2 3432 (Function annotation for MAKE_FUNCTION is changed from dict to tuple bpo-42202)\\n#     Python 3.10a2 3433 (RERAISE restores f_lasti if oparg != 0)\\n#     Python 3.10a6 3434 (PEP 634: Structural Pattern Matching)\\n#     Python 3.10a7 3435 Use instruction offsets (as opposed to byte offsets).\\n#     Python 3.10b1 3436 (Add GEN_START bytecode #43683)\\n#     Python 3.10b1 3437 (Undo making 'annotations' future by default - We like to dance among core devs!)\\n#     Python 3.10b1 3438 Safer line number table handling.\\n#     Python 3.10b1 3439 (Add ROT_N)\\n#     Python 3.11a1 3450 Use exception table for unwinding (\\\"zero cost\\\" exception handling)\\n#     Python 3.11a1 3451 (Add CALL_METHOD_KW)\\n#     Python 3.11a1 3452 (drop nlocals from marshaled code objects)\\n#     Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds)\\n#     Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693)\\n#     Python 3.11a1 3455 (add MAKE_CELL bpo-43693)\\n#     Python 3.11a1 3456 (interleave cell args bpo-43693)\\n#     Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693)\\n#     Python 3.11a1 3458 (imported objects now don't use LOAD_METHOD/CALL_METHOD)\\n#     Python 3.11a1 3459 (PEP 657: add end line numbers and column offsets for instructions)\\n#     Python 3.11a1 3460 (Add co_qualname field to PyCodeObject bpo-44530)\\n#     Python 3.11a1 3461 (JUMP_ABSOLUTE must jump backwards)\\n#     Python 3.11a2 3462 (bpo-44511: remove COPY_DICT_WITHOUT_KEYS, change\\n#                         MATCH_CLASS and MATCH_KEYS, and add COPY)\\n#     Python 3.11a3 3463 (bpo-45711: JUMP_IF_NOT_EXC_MATCH no longer pops the\\n#                         active exception)\\n#     Python 3.11a3 3464 (bpo-45636: Merge numeric BINARY_*/INPLACE_* into\\n#                         BINARY_OP)\\n#     Python 3.11a3 3465 (Add COPY_FREE_VARS opcode)\\n#     Python 3.11a4 3466 (bpo-45292: PEP-654 except*)\\n#     Python 3.11a4 3467 (Change CALL_xxx opcodes)\\n#     Python 3.11a4 3468 (Add SEND opcode)\\n#     Python 3.11a4 3469 (bpo-45711: remove type, traceback from exc_info)\\n#     Python 3.11a4 3470 (bpo-46221: PREP_RERAISE_STAR no longer pushes lasti)\\n#     Python 3.11a4 3471 (bpo-46202: remove pop POP_EXCEPT_AND_RERAISE)\\n#     Python 3.11a4 3472 (bpo-46009: replace GEN_START with POP_TOP)\\n#     Python 3.11a4 3473 (Add POP_JUMP_IF_NOT_NONE/POP_JUMP_IF_NONE opcodes)\\n#     Python 3.11a4 3474 (Add RESUME opcode)\\n#     Python 3.11a5 3475 (Add RETURN_GENERATOR opcode)\\n#     Python 3.11a5 3476 (Add ASYNC_GEN_WRAP opcode)\\n#     Python 3.11a5 3477 (Replace DUP_TOP/DUP_TOP_TWO with COPY and\\n#                         ROT_TWO/ROT_THREE/ROT_FOUR/ROT_N with SWAP)\\n#     Python 3.11a5 3478 (New CALL opcodes)\\n#     Python 3.11a5 3479 (Add PUSH_NULL opcode)\\n#     Python 3.11a5 3480 (New CALL opcodes, second iteration)\\n#     Python 3.11a5 3481 (Use inline cache for BINARY_OP)\\n#     Python 3.11a5 3482 (Use inline caching for UNPACK_SEQUENCE and LOAD_GLOBAL)\\n#     Python 3.11a5 3483 (Use inline caching for COMPARE_OP and BINARY_SUBSCR)\\n#     Python 3.11a5 3484 (Use inline caching for LOAD_ATTR, LOAD_METHOD, and\\n#                         STORE_ATTR)\\n#     Python 3.11a5 3485 (Add an oparg to GET_AWAITABLE)\\n#     Python 3.11a6 3486 (Use inline caching for PRECALL and CALL)\\n#     Python 3.11a6 3487 (Remove the adaptive \\\"oparg counter\\\" mechanism)\\n#     Python 3.11a6 3488 (LOAD_GLOBAL can push additional NULL)\\n#     Python 3.11a6 3489 (Add JUMP_BACKWARD, remove JUMP_ABSOLUTE)\\n#     Python 3.11a6 3490 (remove JUMP_IF_NOT_EXC_MATCH, add CHECK_EXC_MATCH)\\n#     Python 3.11a6 3491 (remove JUMP_IF_NOT_EG_MATCH, add CHECK_EG_MATCH,\\n#                         add JUMP_BACKWARD_NO_INTERRUPT, make JUMP_NO_INTERRUPT virtual)\\n#     Python 3.11a7 3492 (make POP_JUMP_IF_NONE/NOT_NONE/TRUE/FALSE relative)\\n#     Python 3.11a7 3493 (Make JUMP_IF_TRUE_OR_POP/JUMP_IF_FALSE_OR_POP relative)\\n#     Python 3.11a7 3494 (New location info table)\\n#     Python 3.11b4 3495 (Set line number of module's RESUME instr to 0 per PEP 626)\\n#     Python 3.12a1 3500 (Remove PRECALL opcode)\\n#     Python 3.12a1 3501 (YIELD_VALUE oparg == stack_depth)\\n#     Python 3.12a1 3502 (LOAD_FAST_CHECK, no NULL-check in LOAD_FAST)\\n#     Python 3.12a1 3503 (Shrink LOAD_METHOD cache)\\n#     Python 3.12a1 3504 (Merge LOAD_METHOD back into LOAD_ATTR)\\n#     Python 3.12a1 3505 (Specialization/Cache for FOR_ITER)\\n#     Python 3.12a1 3506 (Add BINARY_SLICE and STORE_SLICE instructions)\\n#     Python 3.12a1 3507 (Set lineno of module's RESUME to 0)\\n#     Python 3.12a1 3508 (Add CLEANUP_THROW)\\n#     Python 3.12a1 3509 (Conditional jumps only jump forward)\\n#     Python 3.12a2 3510 (FOR_ITER leaves iterator on the stack)\\n#     Python 3.12a2 3511 (Add STOPITERATION_ERROR instruction)\\n#     Python 3.12a2 3512 (Remove all unused consts from code objects)\\n#     Python 3.12a4 3513 (Add CALL_INTRINSIC_1 instruction, removed STOPITERATION_ERROR, PRINT_EXPR, IMPORT_STAR)\\n#     Python 3.12a4 3514 (Remove ASYNC_GEN_WRAP, LIST_TO_TUPLE, and UNARY_POSITIVE)\\n#     Python 3.12a5 3515 (Embed jump mask in COMPARE_OP oparg)\\n#     Python 3.12a5 3516 (Add COMPARE_AND_BRANCH instruction)\\n#     Python 3.12a5 3517 (Change YIELD_VALUE oparg to exception block depth)\\n#     Python 3.12a6 3518 (Add RETURN_CONST instruction)\\n#     Python 3.12a6 3519 (Modify SEND instruction)\\n#     Python 3.12a6 3520 (Remove PREP_RERAISE_STAR, add CALL_INTRINSIC_2)\\n#     Python 3.12a7 3521 (Shrink the LOAD_GLOBAL caches)\\n#     Python 3.12a7 3522 (Removed JUMP_IF_FALSE_OR_POP/JUMP_IF_TRUE_OR_POP)\\n#     Python 3.12a7 3523 (Convert COMPARE_AND_BRANCH back to COMPARE_OP)\\n#     Python 3.12a7 3524 (Shrink the BINARY_SUBSCR caches)\\n#     Python 3.12b1 3525 (Shrink the CALL caches)\\n#     Python 3.12b1 3526 (Add instrumentation support)\\n#     Python 3.12b1 3527 (Add LOAD_SUPER_ATTR)\\n#     Python 3.12b1 3528 (Add LOAD_SUPER_ATTR_METHOD specialization)\\n#     Python 3.12b1 3529 (Inline list/dict/set comprehensions)\\n#     Python 3.12b1 3530 (Shrink the LOAD_SUPER_ATTR caches)\\n#     Python 3.12b1 3531 (Add PEP 695 changes)\\n\\n#     Python 3.13 will start with 3550\\n\\n#     Please don't copy-paste the same pre-release tag for new entries above!!!\\n#     You should always use the *upcoming* tag. For example, if 3.12a6 came out\\n#     a week ago, I should put \\\"Python 3.12a7\\\" next to my new magic number.\\n\\n# MAGIC must change whenever the bytecode emitted by the compiler may no\\n# longer be understood by older implementations of the eval loop (usually\\n# due to the addition of new opcodes).\\n#\\n# Starting with Python 3.11, Python 3.n starts with magic number 2900+50n.\\n#\\n# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array\\n# in PC/launcher.c must also be updated.\\n\\nMAGIC_NUMBER = (3531).to_bytes(2, 'little') + b'\\\\r\\\\n'\\n\\n_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c\\n\\n_PYCACHE = '__pycache__'\\n_OPT = 'opt-'\\n\\nSOURCE_SUFFIXES = ['.py']\\nif _MS_WINDOWS:\\n    SOURCE_SUFFIXES.append('.pyw')\\n\\nEXTENSION_SUFFIXES = _imp.extension_suffixes()\\n\\nBYTECODE_SUFFIXES = ['.pyc']\\n# Deprecated.\\nDEBUG_BYTECODE_SUFFIXES = OPTIMIZED_BYTECODE_SUFFIXES = BYTECODE_SUFFIXES\\n\\ndef cache_from_source(path, debug_override=None, *, optimization=None):\\n    \\\"\\\"\\\"Given the path to a .py file, return the path to its .pyc file.\\n\\n    The .py file does not need to exist; this simply returns the path to the\\n    .pyc file calculated as if the .py file were imported.\\n\\n    The 'optimization' parameter controls the presumed optimization level of\\n    the bytecode file. If 'optimization' is not None, the string representation\\n    of the argument is taken and verified to be alphanumeric (else ValueError\\n    is raised).\\n\\n    The debug_override parameter is deprecated. If debug_override is not None,\\n    a True value is the same as setting 'optimization' to the empty string\\n    while a False value is equivalent to setting 'optimization' to '1'.\\n\\n    If sys.implementation.cache_tag is None then NotImplementedError is raised.\\n\\n    \\\"\\\"\\\"\\n    if debug_override is not None:\\n        _warnings.warn('the debug_override parameter is deprecated; use '\\n                       \\\"'optimization' instead\\\", DeprecationWarning)\\n        if optimization is not None:\\n            message = 'debug_override or optimization must be set to None'\\n            raise TypeError(message)\\n        optimization = '' if debug_override else 1\\n    path = _os.fspath(path)\\n    head, tail = _path_split(path)\\n    base, sep, rest = tail.rpartition('.')\\n    tag = sys.implementation.cache_tag\\n    if tag is None:\\n        raise NotImplementedError('sys.implementation.cache_tag is None')\\n    almost_filename = ''.join([(base if base else rest), sep, tag])\\n    if optimization is None:\\n        if sys.flags.optimize == 0:\\n            optimization = ''\\n        else:\\n            optimization = sys.flags.optimize\\n    optimization = str(optimization)\\n    if optimization != '':\\n        if not optimization.isalnum():\\n            raise ValueError(f'{optimization!r} is not alphanumeric')\\n        almost_filename = f'{almost_filename}.{_OPT}{optimization}'\\n    filename = almost_filename + BYTECODE_SUFFIXES[0]\\n    if sys.pycache_prefix is not None:\\n        # We need an absolute path to the py file to avoid the possibility of\\n        # collisions within sys.pycache_prefix, if someone has two different\\n        # `foo/bar.py` on their system and they import both of them using the\\n        # same sys.pycache_prefix. Let's say sys.pycache_prefix is\\n        # `C:\\\\Bytecode`; the idea here is that if we get `Foo\\\\Bar`, we first\\n        # make it absolute (`C:\\\\Somewhere\\\\Foo\\\\Bar`), then make it root-relative\\n        # (`Somewhere\\\\Foo\\\\Bar`), so we end up placing the bytecode file in an\\n        # unambiguous `C:\\\\Bytecode\\\\Somewhere\\\\Foo\\\\Bar\\\\`.\\n        head = _path_abspath(head)\\n\\n        # Strip initial drive from a Windows path. We know we have an absolute\\n        # path here, so the second part of the check rules out a POSIX path that\\n        # happens to contain a colon at the second character.\\n        if head[1] == ':' and head[0] not in path_separators:\\n            head = head[2:]\\n\\n        # Strip initial path separator from `head` to complete the conversion\\n        # back to a root-relative path before joining.\\n        return _path_join(\\n            sys.pycache_prefix,\\n            head.lstrip(path_separators),\\n            filename,\\n        )\\n    return _path_join(head, _PYCACHE, filename)\\n\\n\\ndef source_from_cache(path):\\n    \\\"\\\"\\\"Given the path to a .pyc. file, return the path to its .py file.\\n\\n    The .pyc file does not need to exist; this simply returns the path to\\n    the .py file calculated to correspond to the .pyc file.  If path does\\n    not conform to PEP 3147/488 format, ValueError will be raised. If\\n    sys.implementation.cache_tag is None then NotImplementedError is raised.\\n\\n    \\\"\\\"\\\"\\n    if sys.implementation.cache_tag is None:\\n        raise NotImplementedError('sys.implementation.cache_tag is None')\\n    path = _os.fspath(path)\\n    head, pycache_filename = _path_split(path)\\n    found_in_pycache_prefix = False\\n    if sys.pycache_prefix is not None:\\n        stripped_path = sys.pycache_prefix.rstrip(path_separators)\\n        if head.startswith(stripped_path + path_sep):\\n            head = head[len(stripped_path):]\\n            found_in_pycache_prefix = True\\n    if not found_in_pycache_prefix:\\n        head, pycache = _path_split(head)\\n        if pycache != _PYCACHE:\\n            raise ValueError(f'{_PYCACHE} not bottom-level directory in '\\n                             f'{path!r}')\\n    dot_count = pycache_filename.count('.')\\n    if dot_count not in {2, 3}:\\n        raise ValueError(f'expected only 2 or 3 dots in {pycache_filename!r}')\\n    elif dot_count == 3:\\n        optimization = pycache_filename.rsplit('.', 2)[-2]\\n        if not optimization.startswith(_OPT):\\n            raise ValueError(\\\"optimization portion of filename does not start \\\"\\n                             f\\\"with {_OPT!r}\\\")\\n        opt_level = optimization[len(_OPT):]\\n        if not opt_level.isalnum():\\n            raise ValueError(f\\\"optimization level {optimization!r} is not an \\\"\\n                             \\\"alphanumeric value\\\")\\n    base_filename = pycache_filename.partition('.')[0]\\n    return _path_join(head, base_filename + SOURCE_SUFFIXES[0])\\n\\n\\ndef _get_sourcefile(bytecode_path):\\n    \\\"\\\"\\\"Convert a bytecode file path to a source path (if possible).\\n\\n    This function exists purely for backwards-compatibility for\\n    PyImport_ExecCodeModuleWithFilenames() in the C API.\\n\\n    \\\"\\\"\\\"\\n    if len(bytecode_path) == 0:\\n        return None\\n    rest, _, extension = bytecode_path.rpartition('.')\\n    if not rest or extension.lower()[-3:-1] != 'py':\\n        return bytecode_path\\n    try:\\n        source_path = source_from_cache(bytecode_path)\\n    except (NotImplementedError, ValueError):\\n        source_path = bytecode_path[:-1]\\n    return source_path if _path_isfile(source_path) else bytecode_path\\n\\n\\ndef _get_cached(filename):\\n    if filename.endswith(tuple(SOURCE_SUFFIXES)):\\n        try:\\n            return cache_from_source(filename)\\n        except NotImplementedError:\\n            pass\\n    elif filename.endswith(tuple(BYTECODE_SUFFIXES)):\\n        return filename\\n    else:\\n        return None\\n\\n\\ndef _calc_mode(path):\\n    \\\"\\\"\\\"Calculate the mode permissions for a bytecode file.\\\"\\\"\\\"\\n    try:\\n        mode = _path_stat(path).st_mode\\n    except OSError:\\n        mode = 0o666\\n    # We always ensure write access so we can update cached files\\n    # later even when the source files are read-only on Windows (#6074)\\n    mode |= 0o200\\n    return mode\\n\\n\\ndef _check_name(method):\\n    \\\"\\\"\\\"Decorator to verify that the module being requested matches the one the\\n    loader can handle.\\n\\n    The first argument (self) must define _name which the second argument is\\n    compared against. If the comparison fails then ImportError is raised.\\n\\n    \\\"\\\"\\\"\\n    def _check_name_wrapper(self, name=None, *args, **kwargs):\\n        if name is None:\\n            name = self.name\\n        elif self.name != name:\\n            raise ImportError('loader for %s cannot handle %s' %\\n                                (self.name, name), name=name)\\n        return method(self, name, *args, **kwargs)\\n\\n    # FIXME: @_check_name is used to define class methods before the\\n    # _bootstrap module is set by _set_bootstrap_module().\\n    if _bootstrap is not None:\\n        _wrap = _bootstrap._wrap\\n    else:\\n        def _wrap(new, old):\\n            for replace in ['__module__', '__name__', '__qualname__', '__doc__']:\\n                if hasattr(old, replace):\\n                    setattr(new, replace, getattr(old, replace))\\n            new.__dict__.update(old.__dict__)\\n\\n    _wrap(_check_name_wrapper, method)\\n    return _check_name_wrapper\\n\\n\\ndef _classify_pyc(data, name, exc_details):\\n    \\\"\\\"\\\"Perform basic validity checking of a pyc header and return the flags field,\\n    which determines how the pyc should be further validated against the source.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required, though.)\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    ImportError is raised when the magic number is incorrect or when the flags\\n    field is invalid. EOFError is raised when the data is found to be truncated.\\n\\n    \\\"\\\"\\\"\\n    magic = data[:4]\\n    if magic != MAGIC_NUMBER:\\n        message = f'bad magic number in {name!r}: {magic!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise ImportError(message, **exc_details)\\n    if len(data) < 16:\\n        message = f'reached EOF while reading pyc header of {name!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise EOFError(message)\\n    flags = _unpack_uint32(data[4:8])\\n    # Only the first two flags are defined.\\n    if flags & ~0b11:\\n        message = f'invalid flags {flags!r} in {name!r}'\\n        raise ImportError(message, **exc_details)\\n    return flags\\n\\n\\ndef _validate_timestamp_pyc(data, source_mtime, source_size, name,\\n                            exc_details):\\n    \\\"\\\"\\\"Validate a pyc against the source last-modified time.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required.)\\n\\n    *source_mtime* is the last modified timestamp of the source file.\\n\\n    *source_size* is None or the size of the source file in bytes.\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    An ImportError is raised if the bytecode is stale.\\n\\n    \\\"\\\"\\\"\\n    if _unpack_uint32(data[8:12]) != (source_mtime & 0xFFFFFFFF):\\n        message = f'bytecode is stale for {name!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise ImportError(message, **exc_details)\\n    if (source_size is not None and\\n        _unpack_uint32(data[12:16]) != (source_size & 0xFFFFFFFF)):\\n        raise ImportError(f'bytecode is stale for {name!r}', **exc_details)\\n\\n\\ndef _validate_hash_pyc(data, source_hash, name, exc_details):\\n    \\\"\\\"\\\"Validate a hash-based pyc by checking the real source hash against the one in\\n    the pyc header.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required.)\\n\\n    *source_hash* is the importlib.util.source_hash() of the source file.\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    An ImportError is raised if the bytecode is stale.\\n\\n    \\\"\\\"\\\"\\n    if data[8:16] != source_hash:\\n        raise ImportError(\\n            f'hash in bytecode doesn\\\\'t match hash of source {name!r}',\\n            **exc_details,\\n        )\\n\\n\\ndef _compile_bytecode(data, name=None, bytecode_path=None, source_path=None):\\n    \\\"\\\"\\\"Compile bytecode as found in a pyc.\\\"\\\"\\\"\\n    code = marshal.loads(data)\\n    if isinstance(code, _code_type):\\n        _bootstrap._verbose_message('code object from {!r}', bytecode_path)\\n        if source_path is not None:\\n            _imp._fix_co_filename(code, source_path)\\n        return code\\n    else:\\n        raise ImportError(f'Non-code object in {bytecode_path!r}',\\n                          name=name, path=bytecode_path)\\n\\n\\ndef _code_to_timestamp_pyc(code, mtime=0, source_size=0):\\n    \\\"Produce the data for a timestamp-based pyc.\\\"\\n    data = bytearray(MAGIC_NUMBER)\\n    data.extend(_pack_uint32(0))\\n    data.extend(_pack_uint32(mtime))\\n    data.extend(_pack_uint32(source_size))\\n    data.extend(marshal.dumps(code))\\n    return data\\n\\n\\ndef _code_to_hash_pyc(code, source_hash, checked=True):\\n    \\\"Produce the data for a hash-based pyc.\\\"\\n    data = bytearray(MAGIC_NUMBER)\\n    flags = 0b1 | checked << 1\\n    data.extend(_pack_uint32(flags))\\n    assert len(source_hash) == 8\\n    data.extend(source_hash)\\n    data.extend(marshal.dumps(code))\\n    return data\\n\\n\\ndef decode_source(source_bytes):\\n    \\\"\\\"\\\"Decode bytes representing source code and return the string.\\n\\n    Universal newline support is used in the decoding.\\n    \\\"\\\"\\\"\\n    import tokenize  # To avoid bootstrap issues.\\n    source_bytes_readline = _io.BytesIO(source_bytes).readline\\n    encoding = tokenize.detect_encoding(source_bytes_readline)\\n    newline_decoder = _io.IncrementalNewlineDecoder(None, True)\\n    return newline_decoder.decode(source_bytes.decode(encoding[0]))\\n\\n\\n# Module specifications #######################################################\\n\\n_POPULATE = object()\\n\\n\\ndef spec_from_file_location(name, location=None, *, loader=None,\\n                            submodule_search_locations=_POPULATE):\\n    \\\"\\\"\\\"Return a module spec based on a file location.\\n\\n    To indicate that the module is a package, set\\n    submodule_search_locations to a list of directory paths.  An\\n    empty list is sufficient, though its not otherwise useful to the\\n    import system.\\n\\n    The loader must take a spec as its only __init__() arg.\\n\\n    \\\"\\\"\\\"\\n    if location is None:\\n        # The caller may simply want a partially populated location-\\n        # oriented spec.  So we set the location to a bogus value and\\n        # fill in as much as we can.\\n        location = '<unknown>'\\n        if hasattr(loader, 'get_filename'):\\n            # ExecutionLoader\\n            try:\\n                location = loader.get_filename(name)\\n            except ImportError:\\n                pass\\n    else:\\n        location = _os.fspath(location)\\n        try:\\n            location = _path_abspath(location)\\n        except OSError:\\n            pass\\n\\n    # If the location is on the filesystem, but doesn't actually exist,\\n    # we could return None here, indicating that the location is not\\n    # valid.  However, we don't have a good way of testing since an\\n    # indirect location (e.g. a zip file or URL) will look like a\\n    # non-existent file relative to the filesystem.\\n\\n    spec = _bootstrap.ModuleSpec(name, loader, origin=location)\\n    spec._set_fileattr = True\\n\\n    # Pick a loader if one wasn't provided.\\n    if loader is None:\\n        for loader_class, suffixes in _get_supported_file_loaders():\\n            if location.endswith(tuple(suffixes)):\\n                loader = loader_class(name, location)\\n                spec.loader = loader\\n                break\\n        else:\\n            return None\\n\\n    # Set submodule_search_paths appropriately.\\n    if submodule_search_locations is _POPULATE:\\n        # Check the loader.\\n        if hasattr(loader, 'is_package'):\\n            try:\\n                is_package = loader.is_package(name)\\n            except ImportError:\\n                pass\\n            else:\\n                if is_package:\\n                    spec.submodule_search_locations = []\\n    else:\\n        spec.submodule_search_locations = submodule_search_locations\\n    if spec.submodule_search_locations == []:\\n        if location:\\n            dirname = _path_split(location)[0]\\n            spec.submodule_search_locations.append(dirname)\\n\\n    return spec\\n\\n\\ndef _bless_my_loader(module_globals):\\n    \\\"\\\"\\\"Helper function for _warnings.c\\n\\n    See GH#97850 for details.\\n    \\\"\\\"\\\"\\n    # 2022-10-06(warsaw): For now, this helper is only used in _warnings.c and\\n    # that use case only has the module globals.  This function could be\\n    # extended to accept either that or a module object.  However, in the\\n    # latter case, it would be better to raise certain exceptions when looking\\n    # at a module, which should have either a __loader__ or __spec__.loader.\\n    # For backward compatibility, it is possible that we'll get an empty\\n    # dictionary for the module globals, and that cannot raise an exception.\\n    if not isinstance(module_globals, dict):\\n        return None\\n\\n    missing = object()\\n    loader = module_globals.get('__loader__', None)\\n    spec = module_globals.get('__spec__', missing)\\n\\n    if loader is None:\\n        if spec is missing:\\n            # If working with a module:\\n            # raise AttributeError('Module globals is missing a __spec__')\\n            return None\\n        elif spec is None:\\n            raise ValueError('Module globals is missing a __spec__.loader')\\n\\n    spec_loader = getattr(spec, 'loader', missing)\\n\\n    if spec_loader in (missing, None):\\n        if loader is None:\\n            exc = AttributeError if spec_loader is missing else ValueError\\n            raise exc('Module globals is missing a __spec__.loader')\\n        _warnings.warn(\\n            'Module globals is missing a __spec__.loader',\\n            DeprecationWarning)\\n        spec_loader = loader\\n\\n    assert spec_loader is not None\\n    if loader is not None and loader != spec_loader:\\n        _warnings.warn(\\n            'Module globals; __loader__ != __spec__.loader',\\n            DeprecationWarning)\\n        return loader\\n\\n    return spec_loader\\n\\n\\n# Loaders #####################################################################\\n\\nclass WindowsRegistryFinder:\\n\\n    \\\"\\\"\\\"Meta path finder for modules declared in the Windows registry.\\\"\\\"\\\"\\n\\n    REGISTRY_KEY = (\\n        'Software\\\\\\\\Python\\\\\\\\PythonCore\\\\\\\\{sys_version}'\\n        '\\\\\\\\Modules\\\\\\\\{fullname}')\\n    REGISTRY_KEY_DEBUG = (\\n        'Software\\\\\\\\Python\\\\\\\\PythonCore\\\\\\\\{sys_version}'\\n        '\\\\\\\\Modules\\\\\\\\{fullname}\\\\\\\\Debug')\\n    DEBUG_BUILD = (_MS_WINDOWS and '_d.pyd' in EXTENSION_SUFFIXES)\\n\\n    @staticmethod\\n    def _open_registry(key):\\n        try:\\n            return winreg.OpenKey(winreg.HKEY_CURRENT_USER, key)\\n        except OSError:\\n            return winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key)\\n\\n    @classmethod\\n    def _search_registry(cls, fullname):\\n        if cls.DEBUG_BUILD:\\n            registry_key = cls.REGISTRY_KEY_DEBUG\\n        else:\\n            registry_key = cls.REGISTRY_KEY\\n        key = registry_key.format(fullname=fullname,\\n                                  sys_version='%d.%d' % sys.version_info[:2])\\n        try:\\n            with cls._open_registry(key) as hkey:\\n                filepath = winreg.QueryValue(hkey, '')\\n        except OSError:\\n            return None\\n        return filepath\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        filepath = cls._search_registry(fullname)\\n        if filepath is None:\\n            return None\\n        try:\\n            _path_stat(filepath)\\n        except OSError:\\n            return None\\n        for loader, suffixes in _get_supported_file_loaders():\\n            if filepath.endswith(tuple(suffixes)):\\n                spec = _bootstrap.spec_from_loader(fullname,\\n                                                   loader(fullname, filepath),\\n                                                   origin=filepath)\\n                return spec\\n\\n\\nclass _LoaderBasics:\\n\\n    \\\"\\\"\\\"Base class of common code needed by both SourceLoader and\\n    SourcelessFileLoader.\\\"\\\"\\\"\\n\\n    def is_package(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.is_package by checking if\\n        the path returned by get_filename has a filename of '__init__.py'.\\\"\\\"\\\"\\n        filename = _path_split(self.get_filename(fullname))[1]\\n        filename_base = filename.rsplit('.', 1)[0]\\n        tail_name = fullname.rpartition('.')[2]\\n        return filename_base == '__init__' and tail_name != '__init__'\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Use default semantics for module creation.\\\"\\\"\\\"\\n\\n    def exec_module(self, module):\\n        \\\"\\\"\\\"Execute the module.\\\"\\\"\\\"\\n        code = self.get_code(module.__name__)\\n        if code is None:\\n            raise ImportError(f'cannot load module {module.__name__!r} when '\\n                              'get_code() returns None')\\n        _bootstrap._call_with_frames_removed(exec, code, module.__dict__)\\n\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"This method is deprecated.\\\"\\\"\\\"\\n        # Warning implemented in _load_module_shim().\\n        return _bootstrap._load_module_shim(self, fullname)\\n\\n\\nclass SourceLoader(_LoaderBasics):\\n\\n    def path_mtime(self, path):\\n        \\\"\\\"\\\"Optional method that returns the modification time (an int) for the\\n        specified path (a str).\\n\\n        Raises OSError when the path cannot be handled.\\n        \\\"\\\"\\\"\\n        raise OSError\\n\\n    def path_stats(self, path):\\n        \\\"\\\"\\\"Optional method returning a metadata dict for the specified\\n        path (a str).\\n\\n        Possible keys:\\n        - 'mtime' (mandatory) is the numeric timestamp of last source\\n          code modification;\\n        - 'size' (optional) is the size in bytes of the source code.\\n\\n        Implementing this method allows the loader to read bytecode files.\\n        Raises OSError when the path cannot be handled.\\n        \\\"\\\"\\\"\\n        return {'mtime': self.path_mtime(path)}\\n\\n    def _cache_bytecode(self, source_path, cache_path, data):\\n        \\\"\\\"\\\"Optional method which writes data (bytes) to a file path (a str).\\n\\n        Implementing this method allows for the writing of bytecode files.\\n\\n        The source path is needed in order to correctly transfer permissions\\n        \\\"\\\"\\\"\\n        # For backwards compatibility, we delegate to set_data()\\n        return self.set_data(cache_path, data)\\n\\n    def set_data(self, path, data):\\n        \\\"\\\"\\\"Optional method which writes data (bytes) to a file path (a str).\\n\\n        Implementing this method allows for the writing of bytecode files.\\n        \\\"\\\"\\\"\\n\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.get_source.\\\"\\\"\\\"\\n        path = self.get_filename(fullname)\\n        try:\\n            source_bytes = self.get_data(path)\\n        except OSError as exc:\\n            raise ImportError('source not available through get_data()',\\n                              name=fullname) from exc\\n        return decode_source(source_bytes)\\n\\n    def source_to_code(self, data, path, *, _optimize=-1):\\n        \\\"\\\"\\\"Return the code object compiled from source.\\n\\n        The 'data' argument can be any object type that compile() supports.\\n        \\\"\\\"\\\"\\n        return _bootstrap._call_with_frames_removed(compile, data, path, 'exec',\\n                                        dont_inherit=True, optimize=_optimize)\\n\\n    def get_code(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.get_code.\\n\\n        Reading of bytecode requires path_stats to be implemented. To write\\n        bytecode, set_data must also be implemented.\\n\\n        \\\"\\\"\\\"\\n        source_path = self.get_filename(fullname)\\n        source_mtime = None\\n        source_bytes = None\\n        source_hash = None\\n        hash_based = False\\n        check_source = True\\n        try:\\n            bytecode_path = cache_from_source(source_path)\\n        except NotImplementedError:\\n            bytecode_path = None\\n        else:\\n            try:\\n                st = self.path_stats(source_path)\\n            except OSError:\\n                pass\\n            else:\\n                source_mtime = int(st['mtime'])\\n                try:\\n                    data = self.get_data(bytecode_path)\\n                except OSError:\\n                    pass\\n                else:\\n                    exc_details = {\\n                        'name': fullname,\\n                        'path': bytecode_path,\\n                    }\\n                    try:\\n                        flags = _classify_pyc(data, fullname, exc_details)\\n                        bytes_data = memoryview(data)[16:]\\n                        hash_based = flags & 0b1 != 0\\n                        if hash_based:\\n                            check_source = flags & 0b10 != 0\\n                            if (_imp.check_hash_based_pycs != 'never' and\\n                                (check_source or\\n                                 _imp.check_hash_based_pycs == 'always')):\\n                                source_bytes = self.get_data(source_path)\\n                                source_hash = _imp.source_hash(\\n                                    _RAW_MAGIC_NUMBER,\\n                                    source_bytes,\\n                                )\\n                                _validate_hash_pyc(data, source_hash, fullname,\\n                                                   exc_details)\\n                        else:\\n                            _validate_timestamp_pyc(\\n                                data,\\n                                source_mtime,\\n                                st['size'],\\n                                fullname,\\n                                exc_details,\\n                            )\\n                    except (ImportError, EOFError):\\n                        pass\\n                    else:\\n                        _bootstrap._verbose_message('{} matches {}', bytecode_path,\\n                                                    source_path)\\n                        return _compile_bytecode(bytes_data, name=fullname,\\n                                                 bytecode_path=bytecode_path,\\n                                                 source_path=source_path)\\n        if source_bytes is None:\\n            source_bytes = self.get_data(source_path)\\n        code_object = self.source_to_code(source_bytes, source_path)\\n        _bootstrap._verbose_message('code object from {}', source_path)\\n        if (not sys.dont_write_bytecode and bytecode_path is not None and\\n                source_mtime is not None):\\n            if hash_based:\\n                if source_hash is None:\\n                    source_hash = _imp.source_hash(_RAW_MAGIC_NUMBER,\\n                                                   source_bytes)\\n                data = _code_to_hash_pyc(code_object, source_hash, check_source)\\n            else:\\n                data = _code_to_timestamp_pyc(code_object, source_mtime,\\n                                              len(source_bytes))\\n            try:\\n                self._cache_bytecode(source_path, bytecode_path, data)\\n            except NotImplementedError:\\n                pass\\n        return code_object\\n\\n\\nclass FileLoader:\\n\\n    \\\"\\\"\\\"Base file loader class which implements the loader protocol methods that\\n    require file system usage.\\\"\\\"\\\"\\n\\n    def __init__(self, fullname, path):\\n        \\\"\\\"\\\"Cache the module name and the path to the file found by the\\n        finder.\\\"\\\"\\\"\\n        self.name = fullname\\n        self.path = path\\n\\n    def __eq__(self, other):\\n        return (self.__class__ == other.__class__ and\\n                self.__dict__ == other.__dict__)\\n\\n    def __hash__(self):\\n        return hash(self.name) ^ hash(self.path)\\n\\n    @_check_name\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"Load a module from a file.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # The only reason for this method is for the name check.\\n        # Issue #14857: Avoid the zero-argument form of super so the implementation\\n        # of that form can be updated without breaking the frozen module.\\n        return super(FileLoader, self).load_module(fullname)\\n\\n    @_check_name\\n    def get_filename(self, fullname):\\n        \\\"\\\"\\\"Return the path to the source file as found by the finder.\\\"\\\"\\\"\\n        return self.path\\n\\n    def get_data(self, path):\\n        \\\"\\\"\\\"Return the data from path as raw bytes.\\\"\\\"\\\"\\n        if isinstance(self, (SourceLoader, ExtensionFileLoader)):\\n            with _io.open_code(str(path)) as file:\\n                return file.read()\\n        else:\\n            with _io.FileIO(path, 'r') as file:\\n                return file.read()\\n\\n    @_check_name\\n    def get_resource_reader(self, module):\\n        from importlib.readers import FileReader\\n        return FileReader(self)\\n\\n\\nclass SourceFileLoader(FileLoader, SourceLoader):\\n\\n    \\\"\\\"\\\"Concrete implementation of SourceLoader using the file system.\\\"\\\"\\\"\\n\\n    def path_stats(self, path):\\n        \\\"\\\"\\\"Return the metadata for the path.\\\"\\\"\\\"\\n        st = _path_stat(path)\\n        return {'mtime': st.st_mtime, 'size': st.st_size}\\n\\n    def _cache_bytecode(self, source_path, bytecode_path, data):\\n        # Adapt between the two APIs\\n        mode = _calc_mode(source_path)\\n        return self.set_data(bytecode_path, data, _mode=mode)\\n\\n    def set_data(self, path, data, *, _mode=0o666):\\n        \\\"\\\"\\\"Write bytes data to a file.\\\"\\\"\\\"\\n        parent, filename = _path_split(path)\\n        path_parts = []\\n        # Figure out what directories are missing.\\n        while parent and not _path_isdir(parent):\\n            parent, part = _path_split(parent)\\n            path_parts.append(part)\\n        # Create needed directories.\\n        for part in reversed(path_parts):\\n            parent = _path_join(parent, part)\\n            try:\\n                _os.mkdir(parent)\\n            except FileExistsError:\\n                # Probably another Python process already created the dir.\\n                continue\\n            except OSError as exc:\\n                # Could be a permission error, read-only filesystem: just forget\\n                # about writing the data.\\n                _bootstrap._verbose_message('could not create {!r}: {!r}',\\n                                            parent, exc)\\n                return\\n        try:\\n            _write_atomic(path, data, _mode)\\n            _bootstrap._verbose_message('created {!r}', path)\\n        except OSError as exc:\\n            # Same as above: just don't write the bytecode.\\n            _bootstrap._verbose_message('could not create {!r}: {!r}', path,\\n                                        exc)\\n\\n\\nclass SourcelessFileLoader(FileLoader, _LoaderBasics):\\n\\n    \\\"\\\"\\\"Loader which handles sourceless file imports.\\\"\\\"\\\"\\n\\n    def get_code(self, fullname):\\n        path = self.get_filename(fullname)\\n        data = self.get_data(path)\\n        # Call _classify_pyc to do basic validation of the pyc but ignore the\\n        # result. There's no source to check against.\\n        exc_details = {\\n            'name': fullname,\\n            'path': path,\\n        }\\n        _classify_pyc(data, fullname, exc_details)\\n        return _compile_bytecode(\\n            memoryview(data)[16:],\\n            name=fullname,\\n            bytecode_path=path,\\n        )\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Return None as there is no source code.\\\"\\\"\\\"\\n        return None\\n\\n\\nclass ExtensionFileLoader(FileLoader, _LoaderBasics):\\n\\n    \\\"\\\"\\\"Loader for extension modules.\\n\\n    The constructor is designed to work with FileFinder.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name, path):\\n        self.name = name\\n        self.path = path\\n\\n    def __eq__(self, other):\\n        return (self.__class__ == other.__class__ and\\n                self.__dict__ == other.__dict__)\\n\\n    def __hash__(self):\\n        return hash(self.name) ^ hash(self.path)\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Create an uninitialized extension module\\\"\\\"\\\"\\n        module = _bootstrap._call_with_frames_removed(\\n            _imp.create_dynamic, spec)\\n        _bootstrap._verbose_message('extension module {!r} loaded from {!r}',\\n                         spec.name, self.path)\\n        return module\\n\\n    def exec_module(self, module):\\n        \\\"\\\"\\\"Initialize an extension module\\\"\\\"\\\"\\n        _bootstrap._call_with_frames_removed(_imp.exec_dynamic, module)\\n        _bootstrap._verbose_message('extension module {!r} executed from {!r}',\\n                         self.name, self.path)\\n\\n    def is_package(self, fullname):\\n        \\\"\\\"\\\"Return True if the extension module is a package.\\\"\\\"\\\"\\n        file_name = _path_split(self.path)[1]\\n        return any(file_name == '__init__' + suffix\\n                   for suffix in EXTENSION_SUFFIXES)\\n\\n    def get_code(self, fullname):\\n        \\\"\\\"\\\"Return None as an extension module cannot create a code object.\\\"\\\"\\\"\\n        return None\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Return None as extension modules have no source code.\\\"\\\"\\\"\\n        return None\\n\\n    @_check_name\\n    def get_filename(self, fullname):\\n        \\\"\\\"\\\"Return the path to the source file as found by the finder.\\\"\\\"\\\"\\n        return self.path\\n\\n\\nclass _NamespacePath:\\n    \\\"\\\"\\\"Represents a namespace package's path.  It uses the module name\\n    to find its parent module, and from there it looks up the parent's\\n    __path__.  When this changes, the module's own path is recomputed,\\n    using path_finder.  For top-level modules, the parent module's path\\n    is sys.path.\\\"\\\"\\\"\\n\\n    # When invalidate_caches() is called, this epoch is incremented\\n    # https://bugs.python.org/issue45703\\n    _epoch = 0\\n\\n    def __init__(self, name, path, path_finder):\\n        self._name = name\\n        self._path = path\\n        self._last_parent_path = tuple(self._get_parent_path())\\n        self._last_epoch = self._epoch\\n        self._path_finder = path_finder\\n\\n    def _find_parent_path_names(self):\\n        \\\"\\\"\\\"Returns a tuple of (parent-module-name, parent-path-attr-name)\\\"\\\"\\\"\\n        parent, dot, me = self._name.rpartition('.')\\n        if dot == '':\\n            # This is a top-level module. sys.path contains the parent path.\\n            return 'sys', 'path'\\n        # Not a top-level module. parent-module.__path__ contains the\\n        #  parent path.\\n        return parent, '__path__'\\n\\n    def _get_parent_path(self):\\n        parent_module_name, path_attr_name = self._find_parent_path_names()\\n        return getattr(sys.modules[parent_module_name], path_attr_name)\\n\\n    def _recalculate(self):\\n        # If the parent's path has changed, recalculate _path\\n        parent_path = tuple(self._get_parent_path()) # Make a copy\\n        if parent_path != self._last_parent_path or self._epoch != self._last_epoch:\\n            spec = self._path_finder(self._name, parent_path)\\n            # Note that no changes are made if a loader is returned, but we\\n            #  do remember the new parent path\\n            if spec is not None and spec.loader is None:\\n                if spec.submodule_search_locations:\\n                    self._path = spec.submodule_search_locations\\n            self._last_parent_path = parent_path     # Save the copy\\n            self._last_epoch = self._epoch\\n        return self._path\\n\\n    def __iter__(self):\\n        return iter(self._recalculate())\\n\\n    def __getitem__(self, index):\\n        return self._recalculate()[index]\\n\\n    def __setitem__(self, index, path):\\n        self._path[index] = path\\n\\n    def __len__(self):\\n        return len(self._recalculate())\\n\\n    def __repr__(self):\\n        return f'_NamespacePath({self._path!r})'\\n\\n    def __contains__(self, item):\\n        return item in self._recalculate()\\n\\n    def append(self, item):\\n        self._path.append(item)\\n\\n\\n# This class is actually exposed publicly in a namespace package's __loader__\\n# attribute, so it should be available through a non-private name.\\n# https://github.com/python/cpython/issues/92054\\nclass NamespaceLoader:\\n    def __init__(self, name, path, path_finder):\\n        self._path = _NamespacePath(name, path, path_finder)\\n\\n    def is_package(self, fullname):\\n        return True\\n\\n    def get_source(self, fullname):\\n        return ''\\n\\n    def get_code(self, fullname):\\n        return compile('', '<string>', 'exec', dont_inherit=True)\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Use default semantics for module creation.\\\"\\\"\\\"\\n\\n    def exec_module(self, module):\\n        pass\\n\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"Load a namespace module.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # The import system never calls this method.\\n        _bootstrap._verbose_message('namespace module loaded with path {!r}',\\n                                    self._path)\\n        # Warning implemented in _load_module_shim().\\n        return _bootstrap._load_module_shim(self, fullname)\\n\\n    def get_resource_reader(self, module):\\n        from importlib.readers import NamespaceReader\\n        return NamespaceReader(self._path)\\n\\n\\n# We use this exclusively in module_from_spec() for backward-compatibility.\\n_NamespaceLoader = NamespaceLoader\\n\\n\\n# Finders #####################################################################\\n\\nclass PathFinder:\\n\\n    \\\"\\\"\\\"Meta path finder for sys.path and package __path__ attributes.\\\"\\\"\\\"\\n\\n    @staticmethod\\n    def invalidate_caches():\\n        \\\"\\\"\\\"Call the invalidate_caches() method on all path entry finders\\n        stored in sys.path_importer_caches (where implemented).\\\"\\\"\\\"\\n        for name, finder in list(sys.path_importer_cache.items()):\\n            # Drop entry if finder name is a relative path. The current\\n            # working directory may have changed.\\n            if finder is None or not _path_isabs(name):\\n                del sys.path_importer_cache[name]\\n            elif hasattr(finder, 'invalidate_caches'):\\n                finder.invalidate_caches()\\n        # Also invalidate the caches of _NamespacePaths\\n        # https://bugs.python.org/issue45703\\n        _NamespacePath._epoch += 1\\n\\n        from importlib.metadata import MetadataPathFinder\\n        MetadataPathFinder.invalidate_caches()\\n\\n    @staticmethod\\n    def _path_hooks(path):\\n        \\\"\\\"\\\"Search sys.path_hooks for a finder for 'path'.\\\"\\\"\\\"\\n        if sys.path_hooks is not None and not sys.path_hooks:\\n            _warnings.warn('sys.path_hooks is empty', ImportWarning)\\n        for hook in sys.path_hooks:\\n            try:\\n                return hook(path)\\n            except ImportError:\\n                continue\\n        else:\\n            return None\\n\\n    @classmethod\\n    def _path_importer_cache(cls, path):\\n        \\\"\\\"\\\"Get the finder for the path entry from sys.path_importer_cache.\\n\\n        If the path entry is not in the cache, find the appropriate finder\\n        and cache it. If no finder is available, store None.\\n\\n        \\\"\\\"\\\"\\n        if path == '':\\n            try:\\n                path = _os.getcwd()\\n            except FileNotFoundError:\\n                # Don't cache the failure as the cwd can easily change to\\n                # a valid directory later on.\\n                return None\\n        try:\\n            finder = sys.path_importer_cache[path]\\n        except KeyError:\\n            finder = cls._path_hooks(path)\\n            sys.path_importer_cache[path] = finder\\n        return finder\\n\\n    @classmethod\\n    def _get_spec(cls, fullname, path, target=None):\\n        \\\"\\\"\\\"Find the loader or namespace_path for this module/package name.\\\"\\\"\\\"\\n        # If this ends up being a namespace package, namespace_path is\\n        #  the list of paths that will become its __path__\\n        namespace_path = []\\n        for entry in path:\\n            if not isinstance(entry, str):\\n                continue\\n            finder = cls._path_importer_cache(entry)\\n            if finder is not None:\\n                spec = finder.find_spec(fullname, target)\\n                if spec is None:\\n                    continue\\n                if spec.loader is not None:\\n                    return spec\\n                portions = spec.submodule_search_locations\\n                if portions is None:\\n                    raise ImportError('spec missing loader')\\n                # This is possibly part of a namespace package.\\n                #  Remember these path entries (if any) for when we\\n                #  create a namespace package, and continue iterating\\n                #  on path.\\n                namespace_path.extend(portions)\\n        else:\\n            spec = _bootstrap.ModuleSpec(fullname, None)\\n            spec.submodule_search_locations = namespace_path\\n            return spec\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        \\\"\\\"\\\"Try to find a spec for 'fullname' on sys.path or 'path'.\\n\\n        The search is based on sys.path_hooks and sys.path_importer_cache.\\n        \\\"\\\"\\\"\\n        if path is None:\\n            path = sys.path\\n        spec = cls._get_spec(fullname, path, target)\\n        if spec is None:\\n            return None\\n        elif spec.loader is None:\\n            namespace_path = spec.submodule_search_locations\\n            if namespace_path:\\n                # We found at least one namespace path.  Return a spec which\\n                # can create the namespace package.\\n                spec.origin = None\\n                spec.submodule_search_locations = _NamespacePath(fullname, namespace_path, cls._get_spec)\\n                return spec\\n            else:\\n                return None\\n        else:\\n            return spec\\n\\n    @staticmethod\\n    def find_distributions(*args, **kwargs):\\n        \\\"\\\"\\\"\\n        Find distributions.\\n\\n        Return an iterable of all Distribution instances capable of\\n        loading the metadata for packages matching ``context.name``\\n        (or all names if ``None`` indicated) along the paths in the list\\n        of directories ``context.path``.\\n        \\\"\\\"\\\"\\n        from importlib.metadata import MetadataPathFinder\\n        return MetadataPathFinder.find_distributions(*args, **kwargs)\\n\\n\\nclass FileFinder:\\n\\n    \\\"\\\"\\\"File-based finder.\\n\\n    Interactions with the file system are cached for performance, being\\n    refreshed when the directory the finder is handling has been modified.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, path, *loader_details):\\n        \\\"\\\"\\\"Initialize with the path to search on and a variable number of\\n        2-tuples containing the loader and the file suffixes the loader\\n        recognizes.\\\"\\\"\\\"\\n        loaders = []\\n        for loader, suffixes in loader_details:\\n            loaders.extend((suffix, loader) for suffix in suffixes)\\n        self._loaders = loaders\\n        # Base (directory) path\\n        if not path or path == '.':\\n            self.path = _os.getcwd()\\n        else:\\n            self.path = _path_abspath(path)\\n        self._path_mtime = -1\\n        self._path_cache = set()\\n        self._relaxed_path_cache = set()\\n\\n    def invalidate_caches(self):\\n        \\\"\\\"\\\"Invalidate the directory mtime.\\\"\\\"\\\"\\n        self._path_mtime = -1\\n\\n    def _get_spec(self, loader_class, fullname, path, smsl, target):\\n        loader = loader_class(fullname, path)\\n        return spec_from_file_location(fullname, path, loader=loader,\\n                                       submodule_search_locations=smsl)\\n\\n    def find_spec(self, fullname, target=None):\\n        \\\"\\\"\\\"Try to find a spec for the specified module.\\n\\n        Returns the matching spec, or None if not found.\\n        \\\"\\\"\\\"\\n        is_namespace = False\\n        tail_module = fullname.rpartition('.')[2]\\n        try:\\n            mtime = _path_stat(self.path or _os.getcwd()).st_mtime\\n        except OSError:\\n            mtime = -1\\n        if mtime != self._path_mtime:\\n            self._fill_cache()\\n            self._path_mtime = mtime\\n        # tail_module keeps the original casing, for __file__ and friends\\n        if _relax_case():\\n            cache = self._relaxed_path_cache\\n            cache_module = tail_module.lower()\\n        else:\\n            cache = self._path_cache\\n            cache_module = tail_module\\n        # Check if the module is the name of a directory (and thus a package).\\n        if cache_module in cache:\\n            base_path = _path_join(self.path, tail_module)\\n            for suffix, loader_class in self._loaders:\\n                init_filename = '__init__' + suffix\\n                full_path = _path_join(base_path, init_filename)\\n                if _path_isfile(full_path):\\n                    return self._get_spec(loader_class, fullname, full_path, [base_path], target)\\n            else:\\n                # If a namespace package, return the path if we don't\\n                #  find a module in the next section.\\n                is_namespace = _path_isdir(base_path)\\n        # Check for a file w/ a proper suffix exists.\\n        for suffix, loader_class in self._loaders:\\n            try:\\n                full_path = _path_join(self.path, tail_module + suffix)\\n            except ValueError:\\n                return None\\n            _bootstrap._verbose_message('trying {}', full_path, verbosity=2)\\n            if cache_module + suffix in cache:\\n                if _path_isfile(full_path):\\n                    return self._get_spec(loader_class, fullname, full_path,\\n                                          None, target)\\n        if is_namespace:\\n            _bootstrap._verbose_message('possible namespace for {}', base_path)\\n            spec = _bootstrap.ModuleSpec(fullname, None)\\n            spec.submodule_search_locations = [base_path]\\n            return spec\\n        return None\\n\\n    def _fill_cache(self):\\n        \\\"\\\"\\\"Fill the cache of potential modules and packages for this directory.\\\"\\\"\\\"\\n        path = self.path\\n        try:\\n            contents = _os.listdir(path or _os.getcwd())\\n        except (FileNotFoundError, PermissionError, NotADirectoryError):\\n            # Directory has either been removed, turned into a file, or made\\n            # unreadable.\\n            contents = []\\n        # We store two cached versions, to handle runtime changes of the\\n        # PYTHONCASEOK environment variable.\\n        if not sys.platform.startswith('win'):\\n            self._path_cache = set(contents)\\n        else:\\n            # Windows users can import modules with case-insensitive file\\n            # suffixes (for legacy reasons). Make the suffix lowercase here\\n            # so it's done once instead of for every import. This is safe as\\n            # the specified suffixes to check against are always specified in a\\n            # case-sensitive manner.\\n            lower_suffix_contents = set()\\n            for item in contents:\\n                name, dot, suffix = item.partition('.')\\n                if dot:\\n                    new_name = f'{name}.{suffix.lower()}'\\n                else:\\n                    new_name = name\\n                lower_suffix_contents.add(new_name)\\n            self._path_cache = lower_suffix_contents\\n        if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):\\n            self._relaxed_path_cache = {fn.lower() for fn in contents}\\n\\n    @classmethod\\n    def path_hook(cls, *loader_details):\\n        \\\"\\\"\\\"A class method which returns a closure to use on sys.path_hook\\n        which will return an instance using the specified loaders and the path\\n        called on the closure.\\n\\n        If the path called on the closure is not a directory, ImportError is\\n        raised.\\n\\n        \\\"\\\"\\\"\\n        def path_hook_for_FileFinder(path):\\n            \\\"\\\"\\\"Path hook for importlib.machinery.FileFinder.\\\"\\\"\\\"\\n            if not _path_isdir(path):\\n                raise ImportError('only directories are supported', path=path)\\n            return cls(path, *loader_details)\\n\\n        return path_hook_for_FileFinder\\n\\n    def __repr__(self):\\n        return f'FileFinder({self.path!r})'\\n\\n\\n# Import setup ###############################################################\\n\\ndef _fix_up_module(ns, name, pathname, cpathname=None):\\n    # This function is used by PyImport_ExecCodeModuleObject().\\n    loader = ns.get('__loader__')\\n    spec = ns.get('__spec__')\\n    if not loader:\\n        if spec:\\n            loader = spec.loader\\n        elif pathname == cpathname:\\n            loader = SourcelessFileLoader(name, pathname)\\n        else:\\n            loader = SourceFileLoader(name, pathname)\\n    if not spec:\\n        spec = spec_from_file_location(name, pathname, loader=loader)\\n        if cpathname:\\n            spec.cached = _path_abspath(cpathname)\\n    try:\\n        ns['__spec__'] = spec\\n        ns['__loader__'] = loader\\n        ns['__file__'] = pathname\\n        ns['__cached__'] = cpathname\\n    except Exception:\\n        # Not important enough to report.\\n        pass\\n\\n\\ndef _get_supported_file_loaders():\\n    \\\"\\\"\\\"Returns a list of file-based module loaders.\\n\\n    Each item is a tuple (loader, suffixes).\\n    \\\"\\\"\\\"\\n    extensions = ExtensionFileLoader, _imp.extension_suffixes()\\n    source = SourceFileLoader, SOURCE_SUFFIXES\\n    bytecode = SourcelessFileLoader, BYTECODE_SUFFIXES\\n    return [extensions, source, bytecode]\\n\\n\\ndef _set_bootstrap_module(_bootstrap_module):\\n    global _bootstrap\\n    _bootstrap = _bootstrap_module\\n\\n\\ndef _install(_bootstrap_module):\\n    \\\"\\\"\\\"Install the path-based import components.\\\"\\\"\\\"\\n    _set_bootstrap_module(_bootstrap_module)\\n    supported_loaders = _get_supported_file_loaders()\\n    sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)])\\n    sys.meta_path.append(PathFinder)\\n\", 1745], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\": [\"from __future__ import division\\n\\nimport time\\nimport math\\nimport random\\n\\n\\ndef randomPolicy(state):\\n    while not state.isTerminal():\\n        try:\\n            action = random.choice(state.getPossibleActions())\\n        except IndexError:\\n            raise Exception(\\\"Non-terminal state has no possible actions: \\\" + str(state))\\n        state = state.takeAction(action)\\n    return state.getReward()\\n\\n\\nclass treeNode():\\n    def __init__(self, state, parent):\\n        self.state = state\\n        self.isTerminal = state.isTerminal()\\n        self.isFullyExpanded = self.isTerminal\\n        self.parent = parent\\n        self.numVisits = 0\\n        self.totalReward = 0\\n        self.children = {}\\n\\n\\nclass mcts():\\n    def __init__(self, timeLimit=None, iterationLimit=None, explorationConstant=1 / math.sqrt(2),\\n                 rolloutPolicy=randomPolicy):\\n        if timeLimit != None:\\n            if iterationLimit != None:\\n                raise ValueError(\\\"Cannot have both a time limit and an iteration limit\\\")\\n            # time taken for each MCTS search in milliseconds\\n            self.timeLimit = timeLimit\\n            self.limitType = 'time'\\n        else:\\n            if iterationLimit == None:\\n                raise ValueError(\\\"Must have either a time limit or an iteration limit\\\")\\n            # number of iterations of the search\\n            if iterationLimit < 1:\\n                raise ValueError(\\\"Iteration limit must be greater than one\\\")\\n            self.searchLimit = iterationLimit\\n            self.limitType = 'iterations'\\n        self.explorationConstant = explorationConstant\\n        self.rollout = rolloutPolicy\\n\\n    def search(self, initialState):\\n        self.root = treeNode(initialState, None)\\n\\n        if self.limitType == 'time':\\n            timeLimit = time.time() + self.timeLimit / 1000\\n            while time.time() < timeLimit:\\n                self.executeRound()\\n        else:\\n            for i in range(self.searchLimit):\\n                self.executeRound()\\n\\n        bestChild = self.getBestChild(self.root, 0)\\n        return self.getAction(self.root, bestChild)\\n\\n    def executeRound(self):\\n        node = self.selectNode(self.root)\\n        reward = self.rollout(node.state)\\n        self.backpropogate(node, reward)\\n\\n    def selectNode(self, node):\\n        while not node.isTerminal:\\n            if node.isFullyExpanded:\\n                node = self.getBestChild(node, self.explorationConstant)\\n            else:\\n                return self.expand(node)\\n        return node\\n\\n    def expand(self, node):\\n        actions = node.state.getPossibleActions()\\n        for action in actions:\\n            if action not in node.children.keys():\\n                newNode = treeNode(node.state.takeAction(action), node)\\n                node.children[action] = newNode\\n                if len(actions) == len(node.children):\\n                    node.isFullyExpanded = True\\n                return newNode\\n\\n        raise Exception(\\\"Should never reach here\\\")\\n\\n    def backpropogate(self, node, reward):\\n        while node is not None:\\n            node.numVisits += 1\\n            node.totalReward += reward\\n            node = node.parent\\n\\n    def getBestChild(self, node, explorationValue):\\n        bestValue = float(\\\"-inf\\\")\\n        bestNodes = []\\n        for child in node.children.values():\\n            nodeValue = child.totalReward / child.numVisits + explorationValue * math.sqrt(\\n                2 * math.log(node.numVisits) / child.numVisits)\\n            if nodeValue > bestValue:\\n                bestValue = nodeValue\\n                bestNodes = [child]\\n            elif nodeValue == bestValue:\\n                bestNodes.append(child)\\n        return random.choice(bestNodes)\\n\\n    def getAction(self, root, bestChild):\\n        for action, node in root.children.items():\\n            if node is bestChild:\\n                return action\\n\", 110], \"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\": [\"from __future__ import division\\n\\nimport operator\\nfrom copy import deepcopy\\nfrom functools import reduce\\n\\nfrom mcts import mcts\\n\\n\\nclass NaughtsAndCrossesState:\\n    def __init__(self):\\n        self.board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]\\n        self.currentPlayer = 1\\n\\n    def getCurrentPlayer(self):\\n        return self.currentPlayer\\n\\n    def getPossibleActions(self):\\n        possibleActions = []\\n        for i in range(len(self.board)):\\n            for j in range(len(self.board[i])):\\n                if self.board[i][j] == 0:\\n                    possibleActions.append(Action(player=self.currentPlayer, x=i, y=j))\\n        return possibleActions\\n\\n    def takeAction(self, action):\\n        newState = deepcopy(self)\\n        newState.board[action.x][action.y] = action.player\\n        newState.currentPlayer = self.currentPlayer * -1\\n        return newState\\n\\n    def isTerminal(self):\\n        for row in self.board:\\n            if abs(sum(row)) == 3:\\n                return True\\n        for column in list(map(list, zip(*self.board))):\\n            if abs(sum(column)) == 3:\\n                return True\\n        for diagonal in [\\n            [self.board[i][i] for i in range(len(self.board))],\\n            [self.board[i][len(self.board) - i - 1] for i in range(len(self.board))],\\n        ]:\\n            if abs(sum(diagonal)) == 3:\\n                return True\\n        return reduce(operator.mul, sum(self.board, []), 1)\\n\\n    def getReward(self):\\n        for row in self.board:\\n            if abs(sum(row)) == 3:\\n                return sum(row) / 3\\n        for column in list(map(list, zip(*self.board))):\\n            if abs(sum(column)) == 3:\\n                return sum(column) / 3\\n        for diagonal in [\\n            [self.board[i][i] for i in range(len(self.board))],\\n            [self.board[i][len(self.board) - i - 1] for i in range(len(self.board))],\\n        ]:\\n            if abs(sum(diagonal)) == 3:\\n                return sum(diagonal) / 3\\n        return False\\n\\n\\nclass Action:\\n    def __init__(self, player, x, y):\\n        self.player = player\\n        self.x = x\\n        self.y = y\\n\\n    def __str__(self):\\n        return str((self.x, self.y))\\n\\n    def __repr__(self):\\n        return str(self)\\n\\n    def __eq__(self, other):\\n        return (\\n            self.__class__ == other.__class__\\n            and self.x == other.x\\n            and self.y == other.y\\n            and self.player == other.player\\n        )\\n\\n    def __hash__(self):\\n        return hash((self.x, self.y, self.player))\\n\\n\\ninitialState = NaughtsAndCrossesState()\\nmcts = mcts(timeLimit=10)\\naction = mcts.search(initialState=initialState)\\n\", 89], \"/usr/lib/python3.12/copyreg.py\": [\"\\\"\\\"\\\"Helper to provide extensibility for pickle.\\n\\nThis is only useful to add pickle support for extension types defined in\\nC, not for instances of user-defined classes.\\n\\\"\\\"\\\"\\n\\n__all__ = [\\\"pickle\\\", \\\"constructor\\\",\\n           \\\"add_extension\\\", \\\"remove_extension\\\", \\\"clear_extension_cache\\\"]\\n\\ndispatch_table = {}\\n\\ndef pickle(ob_type, pickle_function, constructor_ob=None):\\n    if not callable(pickle_function):\\n        raise TypeError(\\\"reduction functions must be callable\\\")\\n    dispatch_table[ob_type] = pickle_function\\n\\n    # The constructor_ob function is a vestige of safe for unpickling.\\n    # There is no reason for the caller to pass it anymore.\\n    if constructor_ob is not None:\\n        constructor(constructor_ob)\\n\\ndef constructor(object):\\n    if not callable(object):\\n        raise TypeError(\\\"constructors must be callable\\\")\\n\\n# Example: provide pickling support for complex numbers.\\n\\ndef pickle_complex(c):\\n    return complex, (c.real, c.imag)\\n\\npickle(complex, pickle_complex, complex)\\n\\ndef pickle_union(obj):\\n    import functools, operator\\n    return functools.reduce, (operator.or_, obj.__args__)\\n\\npickle(type(int | str), pickle_union)\\n\\n# Support for pickling new-style objects\\n\\ndef _reconstructor(cls, base, state):\\n    if base is object:\\n        obj = object.__new__(cls)\\n    else:\\n        obj = base.__new__(cls, state)\\n        if base.__init__ != object.__init__:\\n            base.__init__(obj, state)\\n    return obj\\n\\n_HEAPTYPE = 1<<9\\n_new_type = type(int.__new__)\\n\\n# Python code for object.__reduce_ex__ for protocols 0 and 1\\n\\ndef _reduce_ex(self, proto):\\n    assert proto < 2\\n    cls = self.__class__\\n    for base in cls.__mro__:\\n        if hasattr(base, '__flags__') and not base.__flags__ & _HEAPTYPE:\\n            break\\n        new = base.__new__\\n        if isinstance(new, _new_type) and new.__self__ is base:\\n            break\\n    else:\\n        base = object # not really reachable\\n    if base is object:\\n        state = None\\n    else:\\n        if base is cls:\\n            raise TypeError(f\\\"cannot pickle {cls.__name__!r} object\\\")\\n        state = base(self)\\n    args = (cls, base, state)\\n    try:\\n        getstate = self.__getstate__\\n    except AttributeError:\\n        if getattr(self, \\\"__slots__\\\", None):\\n            raise TypeError(f\\\"cannot pickle {cls.__name__!r} object: \\\"\\n                            f\\\"a class that defines __slots__ without \\\"\\n                            f\\\"defining __getstate__ cannot be pickled \\\"\\n                            f\\\"with protocol {proto}\\\") from None\\n        try:\\n            dict = self.__dict__\\n        except AttributeError:\\n            dict = None\\n    else:\\n        if (type(self).__getstate__ is object.__getstate__ and\\n            getattr(self, \\\"__slots__\\\", None)):\\n            raise TypeError(\\\"a class that defines __slots__ without \\\"\\n                            \\\"defining __getstate__ cannot be pickled\\\")\\n        dict = getstate()\\n    if dict:\\n        return _reconstructor, args, dict\\n    else:\\n        return _reconstructor, args\\n\\n# Helper for __reduce_ex__ protocol 2\\n\\ndef __newobj__(cls, *args):\\n    return cls.__new__(cls, *args)\\n\\ndef __newobj_ex__(cls, args, kwargs):\\n    \\\"\\\"\\\"Used by pickle protocol 4, instead of __newobj__ to allow classes with\\n    keyword-only arguments to be pickled correctly.\\n    \\\"\\\"\\\"\\n    return cls.__new__(cls, *args, **kwargs)\\n\\ndef _slotnames(cls):\\n    \\\"\\\"\\\"Return a list of slot names for a given class.\\n\\n    This needs to find slots defined by the class and its bases, so we\\n    can't simply return the __slots__ attribute.  We must walk down\\n    the Method Resolution Order and concatenate the __slots__ of each\\n    class found there.  (This assumes classes don't modify their\\n    __slots__ attribute to misrepresent their slots after the class is\\n    defined.)\\n    \\\"\\\"\\\"\\n\\n    # Get the value from a cache in the class if possible\\n    names = cls.__dict__.get(\\\"__slotnames__\\\")\\n    if names is not None:\\n        return names\\n\\n    # Not cached -- calculate the value\\n    names = []\\n    if not hasattr(cls, \\\"__slots__\\\"):\\n        # This class has no slots\\n        pass\\n    else:\\n        # Slots found -- gather slot names from all base classes\\n        for c in cls.__mro__:\\n            if \\\"__slots__\\\" in c.__dict__:\\n                slots = c.__dict__['__slots__']\\n                # if class has a single slot, it can be given as a string\\n                if isinstance(slots, str):\\n                    slots = (slots,)\\n                for name in slots:\\n                    # special descriptors\\n                    if name in (\\\"__dict__\\\", \\\"__weakref__\\\"):\\n                        continue\\n                    # mangled names\\n                    elif name.startswith('__') and not name.endswith('__'):\\n                        stripped = c.__name__.lstrip('_')\\n                        if stripped:\\n                            names.append('_%s%s' % (stripped, name))\\n                        else:\\n                            names.append(name)\\n                    else:\\n                        names.append(name)\\n\\n    # Cache the outcome in the class if at all possible\\n    try:\\n        cls.__slotnames__ = names\\n    except:\\n        pass # But don't die if we can't\\n\\n    return names\\n\\n# A registry of extension codes.  This is an ad-hoc compression\\n# mechanism.  Whenever a global reference to <module>, <name> is about\\n# to be pickled, the (<module>, <name>) tuple is looked up here to see\\n# if it is a registered extension code for it.  Extension codes are\\n# universal, so that the meaning of a pickle does not depend on\\n# context.  (There are also some codes reserved for local use that\\n# don't have this restriction.)  Codes are positive ints; 0 is\\n# reserved.\\n\\n_extension_registry = {}                # key -> code\\n_inverted_registry = {}                 # code -> key\\n_extension_cache = {}                   # code -> object\\n# Don't ever rebind those names:  pickling grabs a reference to them when\\n# it's initialized, and won't see a rebinding.\\n\\ndef add_extension(module, name, code):\\n    \\\"\\\"\\\"Register an extension code.\\\"\\\"\\\"\\n    code = int(code)\\n    if not 1 <= code <= 0x7fffffff:\\n        raise ValueError(\\\"code out of range\\\")\\n    key = (module, name)\\n    if (_extension_registry.get(key) == code and\\n        _inverted_registry.get(code) == key):\\n        return # Redundant registrations are benign\\n    if key in _extension_registry:\\n        raise ValueError(\\\"key %s is already registered with code %s\\\" %\\n                         (key, _extension_registry[key]))\\n    if code in _inverted_registry:\\n        raise ValueError(\\\"code %s is already in use for key %s\\\" %\\n                         (code, _inverted_registry[code]))\\n    _extension_registry[key] = code\\n    _inverted_registry[code] = key\\n\\ndef remove_extension(module, name, code):\\n    \\\"\\\"\\\"Unregister an extension code.  For testing only.\\\"\\\"\\\"\\n    key = (module, name)\\n    if (_extension_registry.get(key) != code or\\n        _inverted_registry.get(code) != key):\\n        raise ValueError(\\\"key %s is not registered with code %s\\\" %\\n                         (key, code))\\n    del _extension_registry[key]\\n    del _inverted_registry[code]\\n    if code in _extension_cache:\\n        del _extension_cache[code]\\n\\ndef clear_extension_cache():\\n    _extension_cache.clear()\\n\\n# Standard extension code assignments\\n\\n# Reserved ranges\\n\\n# First  Last Count  Purpose\\n#     1   127   127  Reserved for Python standard library\\n#   128   191    64  Reserved for Zope\\n#   192   239    48  Reserved for 3rd parties\\n#   240   255    16  Reserved for private use (will never be assigned)\\n#   256   Inf   Inf  Reserved for future assignment\\n\\n# Extension codes are assigned by the Python Software Foundation.\\n\", 217], \"/usr/lib/python3.12/copy.py\": [\"\\\"\\\"\\\"Generic (shallow and deep) copying operations.\\n\\nInterface summary:\\n\\n        import copy\\n\\n        x = copy.copy(y)        # make a shallow copy of y\\n        x = copy.deepcopy(y)    # make a deep copy of y\\n\\nFor module specific errors, copy.Error is raised.\\n\\nThe difference between shallow and deep copying is only relevant for\\ncompound objects (objects that contain other objects, like lists or\\nclass instances).\\n\\n- A shallow copy constructs a new compound object and then (to the\\n  extent possible) inserts *the same objects* into it that the\\n  original contains.\\n\\n- A deep copy constructs a new compound object and then, recursively,\\n  inserts *copies* into it of the objects found in the original.\\n\\nTwo problems often exist with deep copy operations that don't exist\\nwith shallow copy operations:\\n\\n a) recursive objects (compound objects that, directly or indirectly,\\n    contain a reference to themselves) may cause a recursive loop\\n\\n b) because deep copy copies *everything* it may copy too much, e.g.\\n    administrative data structures that should be shared even between\\n    copies\\n\\nPython's deep copy operation avoids these problems by:\\n\\n a) keeping a table of objects already copied during the current\\n    copying pass\\n\\n b) letting user-defined classes override the copying operation or the\\n    set of components copied\\n\\nThis version does not copy types like module, class, function, method,\\nnor stack trace, stack frame, nor file, socket, window, nor any\\nsimilar types.\\n\\nClasses can use the same interfaces to control copying that they use\\nto control pickling: they can define methods called __getinitargs__(),\\n__getstate__() and __setstate__().  See the documentation for module\\n\\\"pickle\\\" for information on these methods.\\n\\\"\\\"\\\"\\n\\nimport types\\nimport weakref\\nfrom copyreg import dispatch_table\\n\\nclass Error(Exception):\\n    pass\\nerror = Error   # backward compatibility\\n\\n__all__ = [\\\"Error\\\", \\\"copy\\\", \\\"deepcopy\\\"]\\n\\ndef copy(x):\\n    \\\"\\\"\\\"Shallow copy operation on arbitrary Python objects.\\n\\n    See the module's __doc__ string for more info.\\n    \\\"\\\"\\\"\\n\\n    cls = type(x)\\n\\n    copier = _copy_dispatch.get(cls)\\n    if copier:\\n        return copier(x)\\n\\n    if issubclass(cls, type):\\n        # treat it as a regular class:\\n        return _copy_immutable(x)\\n\\n    copier = getattr(cls, \\\"__copy__\\\", None)\\n    if copier is not None:\\n        return copier(x)\\n\\n    reductor = dispatch_table.get(cls)\\n    if reductor is not None:\\n        rv = reductor(x)\\n    else:\\n        reductor = getattr(x, \\\"__reduce_ex__\\\", None)\\n        if reductor is not None:\\n            rv = reductor(4)\\n        else:\\n            reductor = getattr(x, \\\"__reduce__\\\", None)\\n            if reductor:\\n                rv = reductor()\\n            else:\\n                raise Error(\\\"un(shallow)copyable object of type %s\\\" % cls)\\n\\n    if isinstance(rv, str):\\n        return x\\n    return _reconstruct(x, None, *rv)\\n\\n\\n_copy_dispatch = d = {}\\n\\ndef _copy_immutable(x):\\n    return x\\nfor t in (types.NoneType, int, float, bool, complex, str, tuple,\\n          bytes, frozenset, type, range, slice, property,\\n          types.BuiltinFunctionType, types.EllipsisType,\\n          types.NotImplementedType, types.FunctionType, types.CodeType,\\n          weakref.ref):\\n    d[t] = _copy_immutable\\n\\nd[list] = list.copy\\nd[dict] = dict.copy\\nd[set] = set.copy\\nd[bytearray] = bytearray.copy\\n\\ndel d, t\\n\\ndef deepcopy(x, memo=None, _nil=[]):\\n    \\\"\\\"\\\"Deep copy operation on arbitrary Python objects.\\n\\n    See the module's __doc__ string for more info.\\n    \\\"\\\"\\\"\\n\\n    if memo is None:\\n        memo = {}\\n\\n    d = id(x)\\n    y = memo.get(d, _nil)\\n    if y is not _nil:\\n        return y\\n\\n    cls = type(x)\\n\\n    copier = _deepcopy_dispatch.get(cls)\\n    if copier is not None:\\n        y = copier(x, memo)\\n    else:\\n        if issubclass(cls, type):\\n            y = _deepcopy_atomic(x, memo)\\n        else:\\n            copier = getattr(x, \\\"__deepcopy__\\\", None)\\n            if copier is not None:\\n                y = copier(memo)\\n            else:\\n                reductor = dispatch_table.get(cls)\\n                if reductor:\\n                    rv = reductor(x)\\n                else:\\n                    reductor = getattr(x, \\\"__reduce_ex__\\\", None)\\n                    if reductor is not None:\\n                        rv = reductor(4)\\n                    else:\\n                        reductor = getattr(x, \\\"__reduce__\\\", None)\\n                        if reductor:\\n                            rv = reductor()\\n                        else:\\n                            raise Error(\\n                                \\\"un(deep)copyable object of type %s\\\" % cls)\\n                if isinstance(rv, str):\\n                    y = x\\n                else:\\n                    y = _reconstruct(x, memo, *rv)\\n\\n    # If is its own copy, don't memoize.\\n    if y is not x:\\n        memo[d] = y\\n        _keep_alive(x, memo) # Make sure x lives at least as long as d\\n    return y\\n\\n_deepcopy_dispatch = d = {}\\n\\ndef _deepcopy_atomic(x, memo):\\n    return x\\nd[types.NoneType] = _deepcopy_atomic\\nd[types.EllipsisType] = _deepcopy_atomic\\nd[types.NotImplementedType] = _deepcopy_atomic\\nd[int] = _deepcopy_atomic\\nd[float] = _deepcopy_atomic\\nd[bool] = _deepcopy_atomic\\nd[complex] = _deepcopy_atomic\\nd[bytes] = _deepcopy_atomic\\nd[str] = _deepcopy_atomic\\nd[types.CodeType] = _deepcopy_atomic\\nd[type] = _deepcopy_atomic\\nd[range] = _deepcopy_atomic\\nd[types.BuiltinFunctionType] = _deepcopy_atomic\\nd[types.FunctionType] = _deepcopy_atomic\\nd[weakref.ref] = _deepcopy_atomic\\nd[property] = _deepcopy_atomic\\n\\ndef _deepcopy_list(x, memo, deepcopy=deepcopy):\\n    y = []\\n    memo[id(x)] = y\\n    append = y.append\\n    for a in x:\\n        append(deepcopy(a, memo))\\n    return y\\nd[list] = _deepcopy_list\\n\\ndef _deepcopy_tuple(x, memo, deepcopy=deepcopy):\\n    y = [deepcopy(a, memo) for a in x]\\n    # We're not going to put the tuple in the memo, but it's still important we\\n    # check for it, in case the tuple contains recursive mutable structures.\\n    try:\\n        return memo[id(x)]\\n    except KeyError:\\n        pass\\n    for k, j in zip(x, y):\\n        if k is not j:\\n            y = tuple(y)\\n            break\\n    else:\\n        y = x\\n    return y\\nd[tuple] = _deepcopy_tuple\\n\\ndef _deepcopy_dict(x, memo, deepcopy=deepcopy):\\n    y = {}\\n    memo[id(x)] = y\\n    for key, value in x.items():\\n        y[deepcopy(key, memo)] = deepcopy(value, memo)\\n    return y\\nd[dict] = _deepcopy_dict\\n\\ndef _deepcopy_method(x, memo): # Copy instance methods\\n    return type(x)(x.__func__, deepcopy(x.__self__, memo))\\nd[types.MethodType] = _deepcopy_method\\n\\ndel d\\n\\ndef _keep_alive(x, memo):\\n    \\\"\\\"\\\"Keeps a reference to the object x in the memo.\\n\\n    Because we remember objects by their id, we have\\n    to assure that possibly temporary objects are kept\\n    alive by referencing them.\\n    We store a reference at the id of the memo, which should\\n    normally not be used unless someone tries to deepcopy\\n    the memo itself...\\n    \\\"\\\"\\\"\\n    try:\\n        memo[id(memo)].append(x)\\n    except KeyError:\\n        # aha, this is the first one :-)\\n        memo[id(memo)]=[x]\\n\\ndef _reconstruct(x, memo, func, args,\\n                 state=None, listiter=None, dictiter=None,\\n                 *, deepcopy=deepcopy):\\n    deep = memo is not None\\n    if deep and args:\\n        args = (deepcopy(arg, memo) for arg in args)\\n    y = func(*args)\\n    if deep:\\n        memo[id(x)] = y\\n\\n    if state is not None:\\n        if deep:\\n            state = deepcopy(state, memo)\\n        if hasattr(y, '__setstate__'):\\n            y.__setstate__(state)\\n        else:\\n            if isinstance(state, tuple) and len(state) == 2:\\n                state, slotstate = state\\n            else:\\n                slotstate = None\\n            if state is not None:\\n                y.__dict__.update(state)\\n            if slotstate is not None:\\n                for key, value in slotstate.items():\\n                    setattr(y, key, value)\\n\\n    if listiter is not None:\\n        if deep:\\n            for item in listiter:\\n                item = deepcopy(item, memo)\\n                y.append(item)\\n        else:\\n            for item in listiter:\\n                y.append(item)\\n    if dictiter is not None:\\n        if deep:\\n            for key, value in dictiter:\\n                key = deepcopy(key, memo)\\n                value = deepcopy(value, memo)\\n                y[key] = value\\n        else:\\n            for key, value in dictiter:\\n                y[key] = value\\n    return y\\n\\ndel types, weakref\\n\", 292], \"/usr/lib/python3.12/random.py\": [\"\\\"\\\"\\\"Random variable generators.\\n\\n    bytes\\n    -----\\n           uniform bytes (values between 0 and 255)\\n\\n    integers\\n    --------\\n           uniform within range\\n\\n    sequences\\n    ---------\\n           pick random element\\n           pick random sample\\n           pick weighted random sample\\n           generate random permutation\\n\\n    distributions on the real line:\\n    ------------------------------\\n           uniform\\n           triangular\\n           normal (Gaussian)\\n           lognormal\\n           negative exponential\\n           gamma\\n           beta\\n           pareto\\n           Weibull\\n\\n    distributions on the circle (angles 0 to 2pi)\\n    ---------------------------------------------\\n           circular uniform\\n           von Mises\\n\\n    discrete distributions\\n    ----------------------\\n           binomial\\n\\n\\nGeneral notes on the underlying Mersenne Twister core generator:\\n\\n* The period is 2**19937-1.\\n* It is one of the most extensively tested generators in existence.\\n* The random() method is implemented in C, executes in a single Python step,\\n  and is, therefore, threadsafe.\\n\\n\\\"\\\"\\\"\\n\\n# Translated by Guido van Rossum from C source provided by\\n# Adrian Baddeley.  Adapted by Raymond Hettinger for use with\\n# the Mersenne Twister  and os.urandom() core generators.\\n\\nfrom warnings import warn as _warn\\nfrom math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil\\nfrom math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin\\nfrom math import tau as TWOPI, floor as _floor, isfinite as _isfinite\\nfrom math import lgamma as _lgamma, fabs as _fabs, log2 as _log2\\nfrom os import urandom as _urandom\\nfrom _collections_abc import Sequence as _Sequence\\nfrom operator import index as _index\\nfrom itertools import accumulate as _accumulate, repeat as _repeat\\nfrom bisect import bisect as _bisect\\nimport os as _os\\nimport _random\\n\\ntry:\\n    # hashlib is pretty heavy to load, try lean internal module first\\n    from _sha2 import sha512 as _sha512\\nexcept ImportError:\\n    # fallback to official implementation\\n    from hashlib import sha512 as _sha512\\n\\n__all__ = [\\n    \\\"Random\\\",\\n    \\\"SystemRandom\\\",\\n    \\\"betavariate\\\",\\n    \\\"binomialvariate\\\",\\n    \\\"choice\\\",\\n    \\\"choices\\\",\\n    \\\"expovariate\\\",\\n    \\\"gammavariate\\\",\\n    \\\"gauss\\\",\\n    \\\"getrandbits\\\",\\n    \\\"getstate\\\",\\n    \\\"lognormvariate\\\",\\n    \\\"normalvariate\\\",\\n    \\\"paretovariate\\\",\\n    \\\"randbytes\\\",\\n    \\\"randint\\\",\\n    \\\"random\\\",\\n    \\\"randrange\\\",\\n    \\\"sample\\\",\\n    \\\"seed\\\",\\n    \\\"setstate\\\",\\n    \\\"shuffle\\\",\\n    \\\"triangular\\\",\\n    \\\"uniform\\\",\\n    \\\"vonmisesvariate\\\",\\n    \\\"weibullvariate\\\",\\n]\\n\\nNV_MAGICCONST = 4 * _exp(-0.5) / _sqrt(2.0)\\nLOG4 = _log(4.0)\\nSG_MAGICCONST = 1.0 + _log(4.5)\\nBPF = 53        # Number of bits in a float\\nRECIP_BPF = 2 ** -BPF\\n_ONE = 1\\n\\n\\nclass Random(_random.Random):\\n    \\\"\\\"\\\"Random number generator base class used by bound module functions.\\n\\n    Used to instantiate instances of Random to get generators that don't\\n    share state.\\n\\n    Class Random can also be subclassed if you want to use a different basic\\n    generator of your own devising: in that case, override the following\\n    methods:  random(), seed(), getstate(), and setstate().\\n    Optionally, implement a getrandbits() method so that randrange()\\n    can cover arbitrarily large ranges.\\n\\n    \\\"\\\"\\\"\\n\\n    VERSION = 3     # used by getstate/setstate\\n\\n    def __init__(self, x=None):\\n        \\\"\\\"\\\"Initialize an instance.\\n\\n        Optional argument x controls seeding, as for Random.seed().\\n        \\\"\\\"\\\"\\n\\n        self.seed(x)\\n        self.gauss_next = None\\n\\n    def seed(self, a=None, version=2):\\n        \\\"\\\"\\\"Initialize internal state from a seed.\\n\\n        The only supported seed types are None, int, float,\\n        str, bytes, and bytearray.\\n\\n        None or no argument seeds from current time or from an operating\\n        system specific randomness source if available.\\n\\n        If *a* is an int, all bits are used.\\n\\n        For version 2 (the default), all of the bits are used if *a* is a str,\\n        bytes, or bytearray.  For version 1 (provided for reproducing random\\n        sequences from older versions of Python), the algorithm for str and\\n        bytes generates a narrower range of seeds.\\n\\n        \\\"\\\"\\\"\\n\\n        if version == 1 and isinstance(a, (str, bytes)):\\n            a = a.decode('latin-1') if isinstance(a, bytes) else a\\n            x = ord(a[0]) << 7 if a else 0\\n            for c in map(ord, a):\\n                x = ((1000003 * x) ^ c) & 0xFFFFFFFFFFFFFFFF\\n            x ^= len(a)\\n            a = -2 if x == -1 else x\\n\\n        elif version == 2 and isinstance(a, (str, bytes, bytearray)):\\n            if isinstance(a, str):\\n                a = a.encode()\\n            a = int.from_bytes(a + _sha512(a).digest())\\n\\n        elif not isinstance(a, (type(None), int, float, str, bytes, bytearray)):\\n            raise TypeError('The only supported seed types are: None,\\\\n'\\n                            'int, float, str, bytes, and bytearray.')\\n\\n        super().seed(a)\\n        self.gauss_next = None\\n\\n    def getstate(self):\\n        \\\"\\\"\\\"Return internal state; can be passed to setstate() later.\\\"\\\"\\\"\\n        return self.VERSION, super().getstate(), self.gauss_next\\n\\n    def setstate(self, state):\\n        \\\"\\\"\\\"Restore internal state from object returned by getstate().\\\"\\\"\\\"\\n        version = state[0]\\n        if version == 3:\\n            version, internalstate, self.gauss_next = state\\n            super().setstate(internalstate)\\n        elif version == 2:\\n            version, internalstate, self.gauss_next = state\\n            # In version 2, the state was saved as signed ints, which causes\\n            #   inconsistencies between 32/64-bit systems. The state is\\n            #   really unsigned 32-bit ints, so we convert negative ints from\\n            #   version 2 to positive longs for version 3.\\n            try:\\n                internalstate = tuple(x % (2 ** 32) for x in internalstate)\\n            except ValueError as e:\\n                raise TypeError from e\\n            super().setstate(internalstate)\\n        else:\\n            raise ValueError(\\\"state with version %s passed to \\\"\\n                             \\\"Random.setstate() of version %s\\\" %\\n                             (version, self.VERSION))\\n\\n\\n    ## -------------------------------------------------------\\n    ## ---- Methods below this point do not need to be overridden or extended\\n    ## ---- when subclassing for the purpose of using a different core generator.\\n\\n\\n    ## -------------------- pickle support  -------------------\\n\\n    # Issue 17489: Since __reduce__ was defined to fix #759889 this is no\\n    # longer called; we leave it here because it has been here since random was\\n    # rewritten back in 2001 and why risk breaking something.\\n    def __getstate__(self):  # for pickle\\n        return self.getstate()\\n\\n    def __setstate__(self, state):  # for pickle\\n        self.setstate(state)\\n\\n    def __reduce__(self):\\n        return self.__class__, (), self.getstate()\\n\\n\\n    ## ---- internal support method for evenly distributed integers ----\\n\\n    def __init_subclass__(cls, /, **kwargs):\\n        \\\"\\\"\\\"Control how subclasses generate random integers.\\n\\n        The algorithm a subclass can use depends on the random() and/or\\n        getrandbits() implementation available to it and determines\\n        whether it can generate random integers from arbitrarily large\\n        ranges.\\n        \\\"\\\"\\\"\\n\\n        for c in cls.__mro__:\\n            if '_randbelow' in c.__dict__:\\n                # just inherit it\\n                break\\n            if 'getrandbits' in c.__dict__:\\n                cls._randbelow = cls._randbelow_with_getrandbits\\n                break\\n            if 'random' in c.__dict__:\\n                cls._randbelow = cls._randbelow_without_getrandbits\\n                break\\n\\n    def _randbelow_with_getrandbits(self, n):\\n        \\\"Return a random int in the range [0,n).  Defined for n > 0.\\\"\\n\\n        getrandbits = self.getrandbits\\n        k = n.bit_length()\\n        r = getrandbits(k)  # 0 <= r < 2**k\\n        while r >= n:\\n            r = getrandbits(k)\\n        return r\\n\\n    def _randbelow_without_getrandbits(self, n, maxsize=1<<BPF):\\n        \\\"\\\"\\\"Return a random int in the range [0,n).  Defined for n > 0.\\n\\n        The implementation does not use getrandbits, but only random.\\n        \\\"\\\"\\\"\\n\\n        random = self.random\\n        if n >= maxsize:\\n            _warn(\\\"Underlying random() generator does not supply \\\\n\\\"\\n                \\\"enough bits to choose from a population range this large.\\\\n\\\"\\n                \\\"To remove the range limitation, add a getrandbits() method.\\\")\\n            return _floor(random() * n)\\n        rem = maxsize % n\\n        limit = (maxsize - rem) / maxsize   # int(limit * maxsize) % n == 0\\n        r = random()\\n        while r >= limit:\\n            r = random()\\n        return _floor(r * maxsize) % n\\n\\n    _randbelow = _randbelow_with_getrandbits\\n\\n\\n    ## --------------------------------------------------------\\n    ## ---- Methods below this point generate custom distributions\\n    ## ---- based on the methods defined above.  They do not\\n    ## ---- directly touch the underlying generator and only\\n    ## ---- access randomness through the methods:  random(),\\n    ## ---- getrandbits(), or _randbelow().\\n\\n\\n    ## -------------------- bytes methods ---------------------\\n\\n    def randbytes(self, n):\\n        \\\"\\\"\\\"Generate n random bytes.\\\"\\\"\\\"\\n        return self.getrandbits(n * 8).to_bytes(n, 'little')\\n\\n\\n    ## -------------------- integer methods  -------------------\\n\\n    def randrange(self, start, stop=None, step=_ONE):\\n        \\\"\\\"\\\"Choose a random item from range(stop) or range(start, stop[, step]).\\n\\n        Roughly equivalent to ``choice(range(start, stop, step))`` but\\n        supports arbitrarily large ranges and is optimized for common cases.\\n\\n        \\\"\\\"\\\"\\n\\n        # This code is a bit messy to make it fast for the\\n        # common case while still doing adequate error checking.\\n        istart = _index(start)\\n        if stop is None:\\n            # We don't check for \\\"step != 1\\\" because it hasn't been\\n            # type checked and converted to an integer yet.\\n            if step is not _ONE:\\n                raise TypeError(\\\"Missing a non-None stop argument\\\")\\n            if istart > 0:\\n                return self._randbelow(istart)\\n            raise ValueError(\\\"empty range for randrange()\\\")\\n\\n        # Stop argument supplied.\\n        istop = _index(stop)\\n        width = istop - istart\\n        istep = _index(step)\\n        # Fast path.\\n        if istep == 1:\\n            if width > 0:\\n                return istart + self._randbelow(width)\\n            raise ValueError(f\\\"empty range in randrange({start}, {stop})\\\")\\n\\n        # Non-unit step argument supplied.\\n        if istep > 0:\\n            n = (width + istep - 1) // istep\\n        elif istep < 0:\\n            n = (width + istep + 1) // istep\\n        else:\\n            raise ValueError(\\\"zero step for randrange()\\\")\\n        if n <= 0:\\n            raise ValueError(f\\\"empty range in randrange({start}, {stop}, {step})\\\")\\n        return istart + istep * self._randbelow(n)\\n\\n    def randint(self, a, b):\\n        \\\"\\\"\\\"Return random integer in range [a, b], including both end points.\\n        \\\"\\\"\\\"\\n\\n        return self.randrange(a, b+1)\\n\\n\\n    ## -------------------- sequence methods  -------------------\\n\\n    def choice(self, seq):\\n        \\\"\\\"\\\"Choose a random element from a non-empty sequence.\\\"\\\"\\\"\\n\\n        # As an accommodation for NumPy, we don't use \\\"if not seq\\\"\\n        # because bool(numpy.array()) raises a ValueError.\\n        if not len(seq):\\n            raise IndexError('Cannot choose from an empty sequence')\\n        return seq[self._randbelow(len(seq))]\\n\\n    def shuffle(self, x):\\n        \\\"\\\"\\\"Shuffle list x in place, and return None.\\\"\\\"\\\"\\n\\n        randbelow = self._randbelow\\n        for i in reversed(range(1, len(x))):\\n            # pick an element in x[:i+1] with which to exchange x[i]\\n            j = randbelow(i + 1)\\n            x[i], x[j] = x[j], x[i]\\n\\n    def sample(self, population, k, *, counts=None):\\n        \\\"\\\"\\\"Chooses k unique random elements from a population sequence.\\n\\n        Returns a new list containing elements from the population while\\n        leaving the original population unchanged.  The resulting list is\\n        in selection order so that all sub-slices will also be valid random\\n        samples.  This allows raffle winners (the sample) to be partitioned\\n        into grand prize and second place winners (the subslices).\\n\\n        Members of the population need not be hashable or unique.  If the\\n        population contains repeats, then each occurrence is a possible\\n        selection in the sample.\\n\\n        Repeated elements can be specified one at a time or with the optional\\n        counts parameter.  For example:\\n\\n            sample(['red', 'blue'], counts=[4, 2], k=5)\\n\\n        is equivalent to:\\n\\n            sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)\\n\\n        To choose a sample from a range of integers, use range() for the\\n        population argument.  This is especially fast and space efficient\\n        for sampling from a large population:\\n\\n            sample(range(10000000), 60)\\n\\n        \\\"\\\"\\\"\\n\\n        # Sampling without replacement entails tracking either potential\\n        # selections (the pool) in a list or previous selections in a set.\\n\\n        # When the number of selections is small compared to the\\n        # population, then tracking selections is efficient, requiring\\n        # only a small set and an occasional reselection.  For\\n        # a larger number of selections, the pool tracking method is\\n        # preferred since the list takes less space than the\\n        # set and it doesn't suffer from frequent reselections.\\n\\n        # The number of calls to _randbelow() is kept at or near k, the\\n        # theoretical minimum.  This is important because running time\\n        # is dominated by _randbelow() and because it extracts the\\n        # least entropy from the underlying random number generators.\\n\\n        # Memory requirements are kept to the smaller of a k-length\\n        # set or an n-length list.\\n\\n        # There are other sampling algorithms that do not require\\n        # auxiliary memory, but they were rejected because they made\\n        # too many calls to _randbelow(), making them slower and\\n        # causing them to eat more entropy than necessary.\\n\\n        if not isinstance(population, _Sequence):\\n            raise TypeError(\\\"Population must be a sequence.  \\\"\\n                            \\\"For dicts or sets, use sorted(d).\\\")\\n        n = len(population)\\n        if counts is not None:\\n            cum_counts = list(_accumulate(counts))\\n            if len(cum_counts) != n:\\n                raise ValueError('The number of counts does not match the population')\\n            total = cum_counts.pop()\\n            if not isinstance(total, int):\\n                raise TypeError('Counts must be integers')\\n            if total <= 0:\\n                raise ValueError('Total of counts must be greater than zero')\\n            selections = self.sample(range(total), k=k)\\n            bisect = _bisect\\n            return [population[bisect(cum_counts, s)] for s in selections]\\n        randbelow = self._randbelow\\n        if not 0 <= k <= n:\\n            raise ValueError(\\\"Sample larger than population or is negative\\\")\\n        result = [None] * k\\n        setsize = 21        # size of a small set minus size of an empty list\\n        if k > 5:\\n            setsize += 4 ** _ceil(_log(k * 3, 4))  # table size for big sets\\n        if n <= setsize:\\n            # An n-length list is smaller than a k-length set.\\n            # Invariant:  non-selected at pool[0 : n-i]\\n            pool = list(population)\\n            for i in range(k):\\n                j = randbelow(n - i)\\n                result[i] = pool[j]\\n                pool[j] = pool[n - i - 1]  # move non-selected item into vacancy\\n        else:\\n            selected = set()\\n            selected_add = selected.add\\n            for i in range(k):\\n                j = randbelow(n)\\n                while j in selected:\\n                    j = randbelow(n)\\n                selected_add(j)\\n                result[i] = population[j]\\n        return result\\n\\n    def choices(self, population, weights=None, *, cum_weights=None, k=1):\\n        \\\"\\\"\\\"Return a k sized list of population elements chosen with replacement.\\n\\n        If the relative weights or cumulative weights are not specified,\\n        the selections are made with equal probability.\\n\\n        \\\"\\\"\\\"\\n        random = self.random\\n        n = len(population)\\n        if cum_weights is None:\\n            if weights is None:\\n                floor = _floor\\n                n += 0.0    # convert to float for a small speed improvement\\n                return [population[floor(random() * n)] for i in _repeat(None, k)]\\n            try:\\n                cum_weights = list(_accumulate(weights))\\n            except TypeError:\\n                if not isinstance(weights, int):\\n                    raise\\n                k = weights\\n                raise TypeError(\\n                    f'The number of choices must be a keyword argument: {k=}'\\n                ) from None\\n        elif weights is not None:\\n            raise TypeError('Cannot specify both weights and cumulative weights')\\n        if len(cum_weights) != n:\\n            raise ValueError('The number of weights does not match the population')\\n        total = cum_weights[-1] + 0.0   # convert to float\\n        if total <= 0.0:\\n            raise ValueError('Total of weights must be greater than zero')\\n        if not _isfinite(total):\\n            raise ValueError('Total of weights must be finite')\\n        bisect = _bisect\\n        hi = n - 1\\n        return [population[bisect(cum_weights, random() * total, 0, hi)]\\n                for i in _repeat(None, k)]\\n\\n\\n    ## -------------------- real-valued distributions  -------------------\\n\\n    def uniform(self, a, b):\\n        \\\"\\\"\\\"Get a random number in the range [a, b) or [a, b] depending on rounding.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = (a + b) / 2\\n            Var[X] = (b - a) ** 2 / 12\\n\\n        \\\"\\\"\\\"\\n        return a + (b - a) * self.random()\\n\\n    def triangular(self, low=0.0, high=1.0, mode=None):\\n        \\\"\\\"\\\"Triangular distribution.\\n\\n        Continuous distribution bounded by given lower and upper limits,\\n        and having a given mode value in-between.\\n\\n        http://en.wikipedia.org/wiki/Triangular_distribution\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = (low + high + mode) / 3\\n            Var[X] = (low**2 + high**2 + mode**2 - low*high - low*mode - high*mode) / 18\\n\\n        \\\"\\\"\\\"\\n        u = self.random()\\n        try:\\n            c = 0.5 if mode is None else (mode - low) / (high - low)\\n        except ZeroDivisionError:\\n            return low\\n        if u > c:\\n            u = 1.0 - u\\n            c = 1.0 - c\\n            low, high = high, low\\n        return low + (high - low) * _sqrt(u * c)\\n\\n    def normalvariate(self, mu=0.0, sigma=1.0):\\n        \\\"\\\"\\\"Normal distribution.\\n\\n        mu is the mean, and sigma is the standard deviation.\\n\\n        \\\"\\\"\\\"\\n        # Uses Kinderman and Monahan method. Reference: Kinderman,\\n        # A.J. and Monahan, J.F., \\\"Computer generation of random\\n        # variables using the ratio of uniform deviates\\\", ACM Trans\\n        # Math Software, 3, (1977), pp257-260.\\n\\n        random = self.random\\n        while True:\\n            u1 = random()\\n            u2 = 1.0 - random()\\n            z = NV_MAGICCONST * (u1 - 0.5) / u2\\n            zz = z * z / 4.0\\n            if zz <= -_log(u2):\\n                break\\n        return mu + z * sigma\\n\\n    def gauss(self, mu=0.0, sigma=1.0):\\n        \\\"\\\"\\\"Gaussian distribution.\\n\\n        mu is the mean, and sigma is the standard deviation.  This is\\n        slightly faster than the normalvariate() function.\\n\\n        Not thread-safe without a lock around calls.\\n\\n        \\\"\\\"\\\"\\n        # When x and y are two variables from [0, 1), uniformly\\n        # distributed, then\\n        #\\n        #    cos(2*pi*x)*sqrt(-2*log(1-y))\\n        #    sin(2*pi*x)*sqrt(-2*log(1-y))\\n        #\\n        # are two *independent* variables with normal distribution\\n        # (mu = 0, sigma = 1).\\n        # (Lambert Meertens)\\n        # (corrected version; bug discovered by Mike Miller, fixed by LM)\\n\\n        # Multithreading note: When two threads call this function\\n        # simultaneously, it is possible that they will receive the\\n        # same return value.  The window is very small though.  To\\n        # avoid this, you have to use a lock around all calls.  (I\\n        # didn't want to slow this down in the serial case by using a\\n        # lock here.)\\n\\n        random = self.random\\n        z = self.gauss_next\\n        self.gauss_next = None\\n        if z is None:\\n            x2pi = random() * TWOPI\\n            g2rad = _sqrt(-2.0 * _log(1.0 - random()))\\n            z = _cos(x2pi) * g2rad\\n            self.gauss_next = _sin(x2pi) * g2rad\\n\\n        return mu + z * sigma\\n\\n    def lognormvariate(self, mu, sigma):\\n        \\\"\\\"\\\"Log normal distribution.\\n\\n        If you take the natural logarithm of this distribution, you'll get a\\n        normal distribution with mean mu and standard deviation sigma.\\n        mu can have any value, and sigma must be greater than zero.\\n\\n        \\\"\\\"\\\"\\n        return _exp(self.normalvariate(mu, sigma))\\n\\n    def expovariate(self, lambd=1.0):\\n        \\\"\\\"\\\"Exponential distribution.\\n\\n        lambd is 1.0 divided by the desired mean.  It should be\\n        nonzero.  (The parameter would be called \\\"lambda\\\", but that is\\n        a reserved word in Python.)  Returned values range from 0 to\\n        positive infinity if lambd is positive, and from negative\\n        infinity to 0 if lambd is negative.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = 1 / lambd\\n            Var[X] = 1 / lambd ** 2\\n\\n        \\\"\\\"\\\"\\n        # we use 1-random() instead of random() to preclude the\\n        # possibility of taking the log of zero.\\n\\n        return -_log(1.0 - self.random()) / lambd\\n\\n    def vonmisesvariate(self, mu, kappa):\\n        \\\"\\\"\\\"Circular data distribution.\\n\\n        mu is the mean angle, expressed in radians between 0 and 2*pi, and\\n        kappa is the concentration parameter, which must be greater than or\\n        equal to zero.  If kappa is equal to zero, this distribution reduces\\n        to a uniform random angle over the range 0 to 2*pi.\\n\\n        \\\"\\\"\\\"\\n        # Based upon an algorithm published in: Fisher, N.I.,\\n        # \\\"Statistical Analysis of Circular Data\\\", Cambridge\\n        # University Press, 1993.\\n\\n        # Thanks to Magnus Kessler for a correction to the\\n        # implementation of step 4.\\n\\n        random = self.random\\n        if kappa <= 1e-6:\\n            return TWOPI * random()\\n\\n        s = 0.5 / kappa\\n        r = s + _sqrt(1.0 + s * s)\\n\\n        while True:\\n            u1 = random()\\n            z = _cos(_pi * u1)\\n\\n            d = z / (r + z)\\n            u2 = random()\\n            if u2 < 1.0 - d * d or u2 <= (1.0 - d) * _exp(d):\\n                break\\n\\n        q = 1.0 / r\\n        f = (q + z) / (1.0 + q * z)\\n        u3 = random()\\n        if u3 > 0.5:\\n            theta = (mu + _acos(f)) % TWOPI\\n        else:\\n            theta = (mu - _acos(f)) % TWOPI\\n\\n        return theta\\n\\n    def gammavariate(self, alpha, beta):\\n        \\\"\\\"\\\"Gamma distribution.  Not the gamma function!\\n\\n        Conditions on the parameters are alpha > 0 and beta > 0.\\n\\n        The probability distribution function is:\\n\\n                    x ** (alpha - 1) * math.exp(-x / beta)\\n          pdf(x) =  --------------------------------------\\n                      math.gamma(alpha) * beta ** alpha\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = alpha * beta\\n            Var[X] = alpha * beta ** 2\\n\\n        \\\"\\\"\\\"\\n\\n        # Warning: a few older sources define the gamma distribution in terms\\n        # of alpha > -1.0\\n        if alpha <= 0.0 or beta <= 0.0:\\n            raise ValueError('gammavariate: alpha and beta must be > 0.0')\\n\\n        random = self.random\\n        if alpha > 1.0:\\n\\n            # Uses R.C.H. Cheng, \\\"The generation of Gamma\\n            # variables with non-integral shape parameters\\\",\\n            # Applied Statistics, (1977), 26, No. 1, p71-74\\n\\n            ainv = _sqrt(2.0 * alpha - 1.0)\\n            bbb = alpha - LOG4\\n            ccc = alpha + ainv\\n\\n            while True:\\n                u1 = random()\\n                if not 1e-7 < u1 < 0.9999999:\\n                    continue\\n                u2 = 1.0 - random()\\n                v = _log(u1 / (1.0 - u1)) / ainv\\n                x = alpha * _exp(v)\\n                z = u1 * u1 * u2\\n                r = bbb + ccc * v - x\\n                if r + SG_MAGICCONST - 4.5 * z >= 0.0 or r >= _log(z):\\n                    return x * beta\\n\\n        elif alpha == 1.0:\\n            # expovariate(1/beta)\\n            return -_log(1.0 - random()) * beta\\n\\n        else:\\n            # alpha is between 0 and 1 (exclusive)\\n            # Uses ALGORITHM GS of Statistical Computing - Kennedy & Gentle\\n            while True:\\n                u = random()\\n                b = (_e + alpha) / _e\\n                p = b * u\\n                if p <= 1.0:\\n                    x = p ** (1.0 / alpha)\\n                else:\\n                    x = -_log((b - p) / alpha)\\n                u1 = random()\\n                if p > 1.0:\\n                    if u1 <= x ** (alpha - 1.0):\\n                        break\\n                elif u1 <= _exp(-x):\\n                    break\\n            return x * beta\\n\\n    def betavariate(self, alpha, beta):\\n        \\\"\\\"\\\"Beta distribution.\\n\\n        Conditions on the parameters are alpha > 0 and beta > 0.\\n        Returned values range between 0 and 1.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = alpha / (alpha + beta)\\n            Var[X] = alpha * beta / ((alpha + beta)**2 * (alpha + beta + 1))\\n\\n        \\\"\\\"\\\"\\n        ## See\\n        ## http://mail.python.org/pipermail/python-bugs-list/2001-January/003752.html\\n        ## for Ivan Frohne's insightful analysis of why the original implementation:\\n        ##\\n        ##    def betavariate(self, alpha, beta):\\n        ##        # Discrete Event Simulation in C, pp 87-88.\\n        ##\\n        ##        y = self.expovariate(alpha)\\n        ##        z = self.expovariate(1.0/beta)\\n        ##        return z/(y+z)\\n        ##\\n        ## was dead wrong, and how it probably got that way.\\n\\n        # This version due to Janne Sinkkonen, and matches all the std\\n        # texts (e.g., Knuth Vol 2 Ed 3 pg 134 \\\"the beta distribution\\\").\\n        y = self.gammavariate(alpha, 1.0)\\n        if y:\\n            return y / (y + self.gammavariate(beta, 1.0))\\n        return 0.0\\n\\n    def paretovariate(self, alpha):\\n        \\\"\\\"\\\"Pareto distribution.  alpha is the shape parameter.\\\"\\\"\\\"\\n        # Jain, pg. 495\\n\\n        u = 1.0 - self.random()\\n        return u ** (-1.0 / alpha)\\n\\n    def weibullvariate(self, alpha, beta):\\n        \\\"\\\"\\\"Weibull distribution.\\n\\n        alpha is the scale parameter and beta is the shape parameter.\\n\\n        \\\"\\\"\\\"\\n        # Jain, pg. 499; bug fix courtesy Bill Arms\\n\\n        u = 1.0 - self.random()\\n        return alpha * (-_log(u)) ** (1.0 / beta)\\n\\n\\n    ## -------------------- discrete  distributions  ---------------------\\n\\n    def binomialvariate(self, n=1, p=0.5):\\n        \\\"\\\"\\\"Binomial random variable.\\n\\n        Gives the number of successes for *n* independent trials\\n        with the probability of success in each trial being *p*:\\n\\n            sum(random() < p for i in range(n))\\n\\n        Returns an integer in the range:   0 <= X <= n\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = n * p\\n            Var[x] = n * p * (1 - p)\\n\\n        \\\"\\\"\\\"\\n        # Error check inputs and handle edge cases\\n        if n < 0:\\n            raise ValueError(\\\"n must be non-negative\\\")\\n        if p <= 0.0 or p >= 1.0:\\n            if p == 0.0:\\n                return 0\\n            if p == 1.0:\\n                return n\\n            raise ValueError(\\\"p must be in the range 0.0 <= p <= 1.0\\\")\\n\\n        random = self.random\\n\\n        # Fast path for a common case\\n        if n == 1:\\n            return _index(random() < p)\\n\\n        # Exploit symmetry to establish:  p <= 0.5\\n        if p > 0.5:\\n            return n - self.binomialvariate(n, 1.0 - p)\\n\\n        if n * p < 10.0:\\n            # BG: Geometric method by Devroye with running time of O(np).\\n            # https://dl.acm.org/doi/pdf/10.1145/42372.42381\\n            x = y = 0\\n            c = _log2(1.0 - p)\\n            if not c:\\n                return x\\n            while True:\\n                y += _floor(_log2(random()) / c) + 1\\n                if y > n:\\n                    return x\\n                x += 1\\n\\n        # BTRS: Transformed rejection with squeeze method by Wolfgang H\\u00f6rmann\\n        # https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.47.8407&rep=rep1&type=pdf\\n        assert n*p >= 10.0 and p <= 0.5\\n        setup_complete = False\\n\\n        spq = _sqrt(n * p * (1.0 - p))  # Standard deviation of the distribution\\n        b = 1.15 + 2.53 * spq\\n        a = -0.0873 + 0.0248 * b + 0.01 * p\\n        c = n * p + 0.5\\n        vr = 0.92 - 4.2 / b\\n\\n        while True:\\n\\n            u = random()\\n            u -= 0.5\\n            us = 0.5 - _fabs(u)\\n            k = _floor((2.0 * a / us + b) * u + c)\\n            if k < 0 or k > n:\\n                continue\\n\\n            # The early-out \\\"squeeze\\\" test substantially reduces\\n            # the number of acceptance condition evaluations.\\n            v = random()\\n            if us >= 0.07 and v <= vr:\\n                return k\\n\\n            # Acceptance-rejection test.\\n            # Note, the original paper erroneously omits the call to log(v)\\n            # when comparing to the log of the rescaled binomial distribution.\\n            if not setup_complete:\\n                alpha = (2.83 + 5.1 / b) * spq\\n                lpq = _log(p / (1.0 - p))\\n                m = _floor((n + 1) * p)         # Mode of the distribution\\n                h = _lgamma(m + 1) + _lgamma(n - m + 1)\\n                setup_complete = True           # Only needs to be done once\\n            v *= alpha / (a / (us * us) + b)\\n            if _log(v) <= h - _lgamma(k + 1) - _lgamma(n - k + 1) + (k - m) * lpq:\\n                return k\\n\\n\\n## ------------------------------------------------------------------\\n## --------------- Operating System Random Source  ------------------\\n\\n\\nclass SystemRandom(Random):\\n    \\\"\\\"\\\"Alternate random number generator using sources provided\\n    by the operating system (such as /dev/urandom on Unix or\\n    CryptGenRandom on Windows).\\n\\n     Not available on all systems (see os.urandom() for details).\\n\\n    \\\"\\\"\\\"\\n\\n    def random(self):\\n        \\\"\\\"\\\"Get the next random number in the range 0.0 <= X < 1.0.\\\"\\\"\\\"\\n        return (int.from_bytes(_urandom(7)) >> 3) * RECIP_BPF\\n\\n    def getrandbits(self, k):\\n        \\\"\\\"\\\"getrandbits(k) -> x.  Generates an int with k random bits.\\\"\\\"\\\"\\n        if k < 0:\\n            raise ValueError('number of bits must be non-negative')\\n        numbytes = (k + 7) // 8                       # bits / 8 and rounded up\\n        x = int.from_bytes(_urandom(numbytes))\\n        return x >> (numbytes * 8 - k)                # trim excess bits\\n\\n    def randbytes(self, n):\\n        \\\"\\\"\\\"Generate n random bytes.\\\"\\\"\\\"\\n        # os.urandom(n) fails with ValueError for n < 0\\n        # and returns an empty bytes string for n == 0.\\n        return _urandom(n)\\n\\n    def seed(self, *args, **kwds):\\n        \\\"Stub method.  Not used for a system random number generator.\\\"\\n        return None\\n\\n    def _notimplemented(self, *args, **kwds):\\n        \\\"Method should not be called for a system random number generator.\\\"\\n        raise NotImplementedError('System entropy source does not have state.')\\n    getstate = setstate = _notimplemented\\n\\n\\n# ----------------------------------------------------------------------\\n# Create one instance, seeded from current time, and export its methods\\n# as module-level functions.  The functions share state across all uses\\n# (both in the user's code and in the Python libraries), but that's fine\\n# for most programs and is easier for the casual user than making them\\n# instantiate their own Random() instance.\\n\\n_inst = Random()\\nseed = _inst.seed\\nrandom = _inst.random\\nuniform = _inst.uniform\\ntriangular = _inst.triangular\\nrandint = _inst.randint\\nchoice = _inst.choice\\nrandrange = _inst.randrange\\nsample = _inst.sample\\nshuffle = _inst.shuffle\\nchoices = _inst.choices\\nnormalvariate = _inst.normalvariate\\nlognormvariate = _inst.lognormvariate\\nexpovariate = _inst.expovariate\\nvonmisesvariate = _inst.vonmisesvariate\\ngammavariate = _inst.gammavariate\\ngauss = _inst.gauss\\nbetavariate = _inst.betavariate\\nbinomialvariate = _inst.binomialvariate\\nparetovariate = _inst.paretovariate\\nweibullvariate = _inst.weibullvariate\\ngetstate = _inst.getstate\\nsetstate = _inst.setstate\\ngetrandbits = _inst.getrandbits\\nrandbytes = _inst.randbytes\\n\\n\\n## ------------------------------------------------------\\n## ----------------- test program -----------------------\\n\\ndef _test_generator(n, func, args):\\n    from statistics import stdev, fmean as mean\\n    from time import perf_counter\\n\\n    t0 = perf_counter()\\n    data = [func(*args) for i in _repeat(None, n)]\\n    t1 = perf_counter()\\n\\n    xbar = mean(data)\\n    sigma = stdev(data, xbar)\\n    low = min(data)\\n    high = max(data)\\n\\n    print(f'{t1 - t0:.3f} sec, {n} times {func.__name__}{args!r}')\\n    print('avg %g, stddev %g, min %g, max %g\\\\n' % (xbar, sigma, low, high))\\n\\n\\ndef _test(N=10_000):\\n    _test_generator(N, random, ())\\n    _test_generator(N, normalvariate, (0.0, 1.0))\\n    _test_generator(N, lognormvariate, (0.0, 1.0))\\n    _test_generator(N, vonmisesvariate, (0.0, 1.0))\\n    _test_generator(N, binomialvariate, (15, 0.60))\\n    _test_generator(N, binomialvariate, (100, 0.75))\\n    _test_generator(N, gammavariate, (0.01, 1.0))\\n    _test_generator(N, gammavariate, (0.1, 1.0))\\n    _test_generator(N, gammavariate, (0.1, 2.0))\\n    _test_generator(N, gammavariate, (0.5, 1.0))\\n    _test_generator(N, gammavariate, (0.9, 1.0))\\n    _test_generator(N, gammavariate, (1.0, 1.0))\\n    _test_generator(N, gammavariate, (2.0, 1.0))\\n    _test_generator(N, gammavariate, (20.0, 1.0))\\n    _test_generator(N, gammavariate, (200.0, 1.0))\\n    _test_generator(N, gauss, (0.0, 1.0))\\n    _test_generator(N, betavariate, (3.0, 3.0))\\n    _test_generator(N, triangular, (0.0, 1.0, 1.0 / 3.0))\\n\\n\\n## ------------------------------------------------------\\n## ------------------ fork support  ---------------------\\n\\nif hasattr(_os, \\\"fork\\\"):\\n    _os.register_at_fork(after_in_child=_inst.seed)\\n\\n\\nif __name__ == '__main__':\\n    _test()\\n\", 996]}, \"functions\": {\"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\": [\"<frozen importlib._bootstrap>\", 412], \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\": [\"<frozen importlib._bootstrap>\", 232], \"_get_module_lock (<frozen importlib._bootstrap>:426)\": [\"<frozen importlib._bootstrap>\", 426], \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\": [\"<frozen importlib._bootstrap>\", 158], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\": [\"<frozen importlib._bootstrap>\", 74], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\": [\"<frozen importlib._bootstrap>\", 79], \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\": [\"<frozen importlib._bootstrap>\", 124], \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\": [\"<frozen importlib._bootstrap>\", 162], \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\": [\"<frozen importlib._bootstrap>\", 173], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\": [\"<frozen importlib._bootstrap>\", 82], \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\": [\"<frozen importlib._bootstrap>\", 304], \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\": [\"<frozen importlib._bootstrap>\", 416], \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\": [\"<frozen importlib._bootstrap>\", 1222], \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\", 108], \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\", 101], \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\": [\"<frozen importlib._bootstrap>\", 1226], \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\": [\"<frozen importlib._bootstrap>\", 982], \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\": [\"<frozen importlib._bootstrap>\", 480], \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\": [\"<frozen importlib._bootstrap>\", 1128], \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\": [\"<frozen importlib._bootstrap_external>\", 1469], \"_path_stat (<frozen importlib._bootstrap_external>:140)\": [\"<frozen importlib._bootstrap_external>\", 140], \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\": [\"<frozen importlib._bootstrap_external>\", 71], \"_path_join (<frozen importlib._bootstrap_external>:126)\": [\"<frozen importlib._bootstrap_external>\", 126], \"_verbose_message (<frozen importlib._bootstrap>:491)\": [\"<frozen importlib._bootstrap>\", 491], \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\": [\"<frozen importlib._bootstrap_external>\", 1593], \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\": [\"<frozen importlib._bootstrap_external>\", 150], \"_path_isfile (<frozen importlib._bootstrap_external>:159)\": [\"<frozen importlib._bootstrap_external>\", 159], \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\": [\"<frozen importlib._bootstrap_external>\", 1153], \"_path_isabs (<frozen importlib._bootstrap_external>:180)\": [\"<frozen importlib._bootstrap_external>\", 180], \"_path_abspath (<frozen importlib._bootstrap_external>:185)\": [\"<frozen importlib._bootstrap_external>\", 185], \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\": [\"<frozen importlib._bootstrap>\", 599], \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\": [\"<frozen importlib._bootstrap_external>\", 802], \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\": [\"<frozen importlib._bootstrap_external>\", 1588], \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\": [\"<frozen importlib._bootstrap_external>\", 1491], \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\": [\"<frozen importlib._bootstrap_external>\", 1520], \"_find_spec (<frozen importlib._bootstrap>:1240)\": [\"<frozen importlib._bootstrap>\", 1240], \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\": [\"<frozen importlib._bootstrap_external>\", 986], \"_new_module (<frozen importlib._bootstrap>:48)\": [\"<frozen importlib._bootstrap>\", 48], \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\": [\"<frozen importlib._bootstrap>\", 645], \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\": [\"<frozen importlib._bootstrap>\", 653], \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\": [\"<frozen importlib._bootstrap_external>\", 134], \"_path_split (<frozen importlib._bootstrap_external>:132)\": [\"<frozen importlib._bootstrap_external>\", 132], \"cache_from_source (<frozen importlib._bootstrap_external>:482)\": [\"<frozen importlib._bootstrap_external>\", 482], \"_get_cached (<frozen importlib._bootstrap_external>:611)\": [\"<frozen importlib._bootstrap_external>\", 611], \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\": [\"<frozen importlib._bootstrap>\", 632], \"_init_module_attrs (<frozen importlib._bootstrap>:733)\": [\"<frozen importlib._bootstrap>\", 733], \"module_from_spec (<frozen importlib._bootstrap>:806)\": [\"<frozen importlib._bootstrap>\", 806], \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\": [\"<frozen importlib._bootstrap_external>\", 1178], \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\": [\"<frozen importlib._bootstrap_external>\", 643], \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\": [\"<frozen importlib._bootstrap_external>\", 1202], \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\": [\"<frozen importlib._bootstrap_external>\", 1183], \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\": [\"<frozen importlib._bootstrap_external>\", 84], \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\": [\"<frozen importlib._bootstrap_external>\", 666], \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\": [\"<frozen importlib._bootstrap_external>\", 699], \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\": [\"<frozen importlib._bootstrap_external>\", 751], \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\": [\"<frozen importlib._bootstrap_external>\", 1062], \"treeNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:18)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 18], \"mcts (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:29)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 29], \"<module> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:1)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 1], \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\": [\"<frozen importlib._bootstrap_external>\", 989], \"_load_unlocked (<frozen importlib._bootstrap>:911)\": [\"<frozen importlib._bootstrap>\", 911], \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\": [\"<frozen importlib._bootstrap>\", 1304], \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\": [\"<frozen importlib._bootstrap>\", 372], \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\": [\"<frozen importlib._bootstrap>\", 420], \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\": [\"<frozen importlib._bootstrap>\", 445], \"_find_and_load (<frozen importlib._bootstrap>:1349)\": [\"<frozen importlib._bootstrap>\", 1349], \"NaughtsAndCrossesState (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:10)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 10], \"Action (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:63)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 63], \"NaughtsAndCrossesState.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:11)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 11], \"mcts.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:30)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 30], \"NaughtsAndCrossesState.isTerminal (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:32)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 32], \"treeNode.__init__ (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:19)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 19], \"Action.__init__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:64)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 64], \"NaughtsAndCrossesState.getPossibleActions (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:18)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 18], \"Action.__hash__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:83)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 83], \"_slotnames (/usr/lib/python3.12/copyreg.py:107)\": [\"/usr/lib/python3.12/copyreg.py\", 107], \"_deepcopy_atomic (/usr/lib/python3.12/copy.py:172)\": [\"/usr/lib/python3.12/copy.py\", 172], \"deepcopy (/usr/lib/python3.12/copy.py:118)\": [\"/usr/lib/python3.12/copy.py\", 118], \"_reconstruct.<locals>.<genexpr> (/usr/lib/python3.12/copy.py:252)\": [\"/usr/lib/python3.12/copy.py\", 252], \"__newobj__ (/usr/lib/python3.12/copyreg.py:98)\": [\"/usr/lib/python3.12/copyreg.py\", 98], \"_deepcopy_list (/usr/lib/python3.12/copy.py:191)\": [\"/usr/lib/python3.12/copy.py\", 191], \"_keep_alive (/usr/lib/python3.12/copy.py:231)\": [\"/usr/lib/python3.12/copy.py\", 231], \"_deepcopy_dict (/usr/lib/python3.12/copy.py:217)\": [\"/usr/lib/python3.12/copy.py\", 217], \"_reconstruct (/usr/lib/python3.12/copy.py:247)\": [\"/usr/lib/python3.12/copy.py\", 247], \"NaughtsAndCrossesState.takeAction (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:26)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 26], \"mcts.expand (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:76)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 76], \"mcts.selectNode (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:68)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 68], \"Random._randbelow_with_getrandbits (/usr/lib/python3.12/random.py:242)\": [\"/usr/lib/python3.12/random.py\", 242], \"Random.choice (/usr/lib/python3.12/random.py:341)\": [\"/usr/lib/python3.12/random.py\", 341], \"NaughtsAndCrossesState.getReward (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:47)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 47], \"randomPolicy (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:8)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 8], \"mcts.backpropogate (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:88)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 88], \"mcts.executeRound (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:63)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 63], \"Action.__eq__ (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:75)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 75], \"mcts.getBestChild (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:94)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 94], \"mcts.getAction (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:107)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 107], \"mcts.search (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py:49)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/mcts.py\", 49], \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py:1)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/mcts_game.py\", 1]}}}"
  },
  {
    "path": "example/json/multi_process_pool.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222288, \"tid\": 222288, \"name\": \"process_name\", \"args\": {\"name\": \"ForkPoolWorker-5\"}}, {\"ph\": \"M\", \"pid\": 222288, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916951.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.87, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916950.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.016, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916957.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916957.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916958.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916958.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916959.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916967.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916974.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"builtins.hasattr\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916977.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"posix.close\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916977.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916976.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.607, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916979.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"posix.close\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916979.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916979.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.84, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916985.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 878.858, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916984.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 880.197, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917867.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917867.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917872.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.111, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917874.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917874.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917871.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.785, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917878.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917878.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.692, \"name\": \"_struct.unpack\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917884.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917884.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917885.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917884.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.412, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917869.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.418, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917885.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917866.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.095, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917887.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.25, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917886.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.174, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917900.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.735, \"name\": \"_pickle.loads\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916980.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 928.887, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917910.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917922.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.677, \"name\": \"dict.copy\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917927.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.375, \"name\": \"dict.update\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917915.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.332, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917931.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.113, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917932.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917913.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.425, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917934.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.426, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917933.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.163, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917978.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917979.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917984.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917985.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_struct.pack\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917987.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917987.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.209, \"name\": \"posix.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917987.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.814, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917984.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.559, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917978.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.572, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917989.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917989.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917911.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.236, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917992.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2663.675, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917991.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2664.167, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920657.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920657.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920659.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.989, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920737.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920738.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920658.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 80.317, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920741.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920741.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"_struct.unpack\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920742.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920743.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920743.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920742.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.682, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920658.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 85.968, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920744.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920657.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.491, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920745.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.731, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920745.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.202, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920757.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.514, \"name\": \"_pickle.loads\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994917991.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2776.508, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920768.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"posix.getpid\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920774.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"dict.copy\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920774.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"dict.update\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920771.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.608, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920775.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920776.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920770.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.246, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920778.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920777.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920779.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920779.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920780.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920781.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"_struct.pack\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920782.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920782.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.068, \"name\": \"posix.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920781.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.556, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920780.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.016, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920778.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.9, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920784.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920784.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920769.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.927, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920785.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1221.393, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920785.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1221.886, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922008.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922008.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922010.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.117, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922012.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922012.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922009.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.667, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922014.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922014.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"_struct.unpack\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922015.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"posix.read\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922015.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.len\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922016.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922015.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922009.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.204, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922016.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922008.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.728, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922017.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.919, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922017.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.382, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922031.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.638, \"name\": \"_pickle.loads\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994920784.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1248.228, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922035.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922036.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916973.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5063.556, \"name\": \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994916969.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5068.092, \"name\": \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922058.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922061.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922069.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922070.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"list.sort\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922064.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.14, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922071.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922072.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922072.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.138, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922073.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922073.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.808, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922074.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922078.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922078.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.sort\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922079.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"dict.get\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922082.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922089.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"posix.getpid\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922090.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922088.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.549, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922074.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.199, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222288, \"tid\": 222282, \"ts\": 81994922057.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.222, \"name\": \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\"}, {\"ph\": \"M\", \"pid\": 222284, \"tid\": 222284, \"name\": \"process_name\", \"args\": {\"name\": \"ForkPoolWorker-1\"}}, {\"ph\": \"M\", \"pid\": 222284, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914511.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.142, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914510.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.094, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914516.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914516.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.547, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914520.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914520.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914520.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914520.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914521.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914520.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914521.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914521.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914528.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914536.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"builtins.hasattr\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914540.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.14, \"name\": \"posix.close\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914540.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.332, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914539.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.148, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914544.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"posix.close\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914544.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914544.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914550.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.633, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914548.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.648, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914554.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914554.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914558.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1752.284, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916311.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916312.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914557.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1756.284, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916321.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916322.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.649, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916354.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.655, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916356.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916356.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916353.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.682, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914555.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1801.688, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916357.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914553.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1804.147, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916359.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.651, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916358.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.933, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916377.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.147, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914545.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1856.854, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916405.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916403.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.37, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916424.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.752, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916438.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.418, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916415.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.657, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916465.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.552, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916468.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916411.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.48, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916471.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.06, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916470.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.718, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916475.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916476.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916485.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916486.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916488.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916488.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.105, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916488.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.829, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916485.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.851, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916475.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.341, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916516.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916516.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916407.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 110.234, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916519.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916518.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916520.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916520.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916521.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916522.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916522.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916521.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.849, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916525.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916525.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916526.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916527.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916527.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916526.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.349, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916520.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.223, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916528.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916519.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.495, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916528.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.291, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916528.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.566, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916540.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.568, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916518.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.897, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916552.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916552.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.377, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916559.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916560.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916557.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.718, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916561.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.97, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916563.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916554.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.189, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916564.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916564.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916565.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916565.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916566.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916567.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916567.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916568.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.221, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916567.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.628, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916566.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.136, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916564.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.967, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916570.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916570.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916553.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.701, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916571.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 94.365, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916571.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 94.858, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916667.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916667.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916669.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.157, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916670.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916671.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916668.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.969, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916672.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916672.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916673.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916673.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916673.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916673.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.963, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916668.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.851, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916674.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916667.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.308, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916675.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.752, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916675.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.154, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916687.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.595, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916571.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 125.011, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916698.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916697.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.5, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916703.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916703.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916700.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.876, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916704.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916706.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916699.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.999, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916707.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.788, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916707.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.424, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916735.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916736.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916738.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916738.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916740.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916740.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.106, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916740.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.486, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916738.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.705, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916735.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.359, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916742.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916742.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916699.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.753, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916744.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916744.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916745.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916745.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916746.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.613, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916747.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916747.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916745.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.832, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916748.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916748.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916748.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916749.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916749.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916748.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.885, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916745.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.776, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916749.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916745.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.555, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916750.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.182, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916750.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.45, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916768.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.956, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916744.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.757, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916779.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916778.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.507, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916784.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916785.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916781.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.143, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916786.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.176, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916788.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916781.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.284, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916788.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916788.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916789.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916789.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916790.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916790.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916791.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916791.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.758, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916791.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916790.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.097, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916789.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.495, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916793.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916793.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916780.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.863, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916794.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1055.125, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916794.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1055.558, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917850.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917851.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917852.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.244, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917855.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917855.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917851.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.3, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917856.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917856.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917857.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917858.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917858.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917857.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917851.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.153, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917858.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917850.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.46, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917859.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.93, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917859.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.386, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917872.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.852, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994916794.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1085.453, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917880.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917885.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917885.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.755, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917882.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.283, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917887.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.237, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917889.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917881.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.076, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917890.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917890.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917891.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917891.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917892.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917893.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917894.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917894.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.403, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917894.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.847, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917892.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.486, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917890.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.447, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917896.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917896.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917881.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.985, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917899.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917899.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917899.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.461, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917900.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917900.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917901.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917901.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917901.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917901.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.84, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.182, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917902.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917898.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.841, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917902.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.695, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917902.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.932, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917913.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.392, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917897.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.219, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917917.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917920.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917921.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917919.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.483, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917921.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.621, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917922.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917918.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.662, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917923.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917923.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917924.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917924.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917925.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917925.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917926.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917926.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917926.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917925.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.988, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917924.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.336, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917927.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917927.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917918.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.892, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917928.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917928.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917930.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917930.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.325, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917931.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917931.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917931.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917932.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917932.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917931.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.037, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.171, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917932.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917929.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.924, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917933.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.424, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917933.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.672, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917943.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.178, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917928.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.844, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917947.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917949.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917950.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917948.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.159, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917950.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917951.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917947.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.034, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917952.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917952.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917952.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917952.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917953.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917953.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917954.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917954.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917954.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.041, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917953.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.95, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917952.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.137, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917956.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.659, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917956.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.94, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917947.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.655, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917968.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2182.266, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917968.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2182.758, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920152.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920152.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920153.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 398.027, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920551.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920552.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920152.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 399.889, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920553.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920553.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920554.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920555.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920555.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920554.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.495, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920152.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 403.165, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920556.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920151.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 404.339, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920556.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.149, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920556.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.53, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920568.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.089, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994917968.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2612.807, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920581.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.95, \"name\": \"posix.getpid\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920587.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"dict.copy\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920587.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"dict.update\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920584.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.184, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920588.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.2, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920590.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920583.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.742, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920591.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920591.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920592.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920592.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920594.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920594.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"_struct.pack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920595.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920595.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.934, \"name\": \"posix.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920595.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.399, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920593.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.767, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920592.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.5, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920617.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920617.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920582.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.089, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920619.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 532.603, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920619.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 532.983, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921152.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921153.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921153.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 752.838, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921907.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921907.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921153.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 754.859, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921908.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921908.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"_struct.unpack\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921910.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"posix.read\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921910.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.len\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921910.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921909.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.552, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921153.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 758.074, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921911.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921152.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 759.109, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921912.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.724, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921912.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.139, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921923.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"_pickle.loads\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994920618.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1305.767, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921925.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921927.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914535.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7391.723, \"name\": \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994914531.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7395.939, \"name\": \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921933.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921935.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921943.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921944.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"list.sort\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921939.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.997, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921946.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921947.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921946.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.441, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921948.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921948.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921949.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921952.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921953.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"list.sort\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921953.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"dict.get\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921956.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921961.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"posix.getpid\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921962.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921960.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.475, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921949.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.67, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222284, \"tid\": 222282, \"ts\": 81994921932.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.103, \"name\": \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\"}, {\"ph\": \"M\", \"pid\": 222285, \"tid\": 222285, \"name\": \"process_name\", \"args\": {\"name\": \"ForkPoolWorker-2\"}}, {\"ph\": \"M\", \"pid\": 222285, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914831.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.981, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914830.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.022, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914836.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914836.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914839.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914839.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914839.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914839.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914840.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914839.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914840.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914840.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914847.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914856.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"builtins.hasattr\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914861.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.984, \"name\": \"posix.close\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914860.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.164, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914860.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.122, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914865.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"posix.close\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914865.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914864.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.203, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914872.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1509.919, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914870.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1512.614, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916387.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916387.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916392.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.786, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916394.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916395.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916391.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.056, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916423.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916423.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.044, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916434.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.142, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916435.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916436.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916433.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.955, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916388.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.005, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916437.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916386.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.878, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916438.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.771, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916437.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.682, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916454.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.665, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914866.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1607.007, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916476.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916475.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.219, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916493.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.027, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916520.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.217, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916485.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.904, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916529.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.18, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916533.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916481.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.7, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916535.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.854, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916535.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.41, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916539.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916539.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916546.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916547.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916548.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916549.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.332, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916548.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.861, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916546.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.233, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916538.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.107, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916551.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916551.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916478.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 73.972, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916553.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 73.618, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916553.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 74.196, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916629.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916629.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916632.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.465, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916634.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916635.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916631.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.705, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916639.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916639.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916640.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916641.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916641.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916640.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.395, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916630.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.639, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916642.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916629.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.506, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916643.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.479, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916643.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.906, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916655.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.557, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916553.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 113.368, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916668.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916667.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.786, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916677.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916678.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916673.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.38, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916679.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.532, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916681.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916670.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.071, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916683.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916683.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916684.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916684.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916686.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916687.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916688.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916688.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.685, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916688.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.17, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916686.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.071, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916684.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.734, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916691.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916691.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916669.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.904, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916692.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916692.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916693.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916693.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916694.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916694.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916694.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916693.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.555, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916695.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916695.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916696.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916696.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916696.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916695.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916693.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.218, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916696.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916693.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.946, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916697.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916697.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.614, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916697.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.486, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916692.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.924, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916706.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916705.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.982, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916709.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916709.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916707.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.409, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916710.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.907, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916711.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916707.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.557, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916712.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.27, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916712.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.41, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916713.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916714.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916714.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916715.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916715.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916715.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916715.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916714.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.816, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916713.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.926, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916717.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916716.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916707.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.404, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916718.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.869, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916718.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.465, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916764.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916765.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916766.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 986.801, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917753.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917754.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916765.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 989.03, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917755.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917755.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917757.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917757.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917758.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917756.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.828, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916765.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 993.069, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917758.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916764.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 994.443, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917759.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.606, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917759.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.074, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917772.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.441, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994916718.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1061.551, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917780.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917785.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917786.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917782.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.576, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917787.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.086, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917789.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917781.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.996, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917790.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917790.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917791.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917791.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917792.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917793.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917793.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917794.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.68, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917793.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.163, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917792.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.711, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917790.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.529, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917815.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917814.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917781.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.381, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917816.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917816.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917817.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917817.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917818.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917819.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917819.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917817.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.72, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917819.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917819.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917820.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917820.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917820.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917820.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917817.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.367, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917821.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917817.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.191, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917821.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.563, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917821.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.786, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917832.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.677, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917816.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.075, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917837.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917840.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917840.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917838.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.473, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917841.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917842.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917837.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.581, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917842.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917842.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917843.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917843.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917844.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917844.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917845.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917845.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917845.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.223, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917844.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.234, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917843.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.589, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917847.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917847.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917837.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.506, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917848.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.714, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917848.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 100.222, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917950.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917950.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917951.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1457.229, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919409.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919409.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917950.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1459.371, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919410.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919411.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919412.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919413.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919413.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919411.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.885, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917950.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1463.175, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919414.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917949.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1464.431, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919414.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.454, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919414.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.852, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919426.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.806, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994917848.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1583.32, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919432.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919436.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919437.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919434.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.192, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919438.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.724, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919443.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919434.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.218, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919444.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919444.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919445.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919445.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919447.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919447.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919448.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919448.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.997, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919448.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.433, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919447.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.776, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919445.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.469, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919469.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919469.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919433.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.488, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919471.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1292.928, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919471.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1293.436, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920765.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920765.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920767.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 182.929, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920950.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920951.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920766.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 185.183, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920952.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920952.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920953.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920954.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920954.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920953.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.711, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920766.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 188.902, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920955.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920765.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 190.262, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920956.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.643, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920956.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.05, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920971.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.043, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994919470.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1507.73, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920979.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"posix.getpid\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920982.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"dict.copy\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920983.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"dict.update\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920980.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.992, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920984.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920985.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920980.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.24, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920986.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920985.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920986.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920986.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920987.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920988.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_struct.pack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920988.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920988.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"posix.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920988.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.2, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920987.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.19, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920986.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.578, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920990.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920990.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920979.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.814, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920991.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1048.749, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920991.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1049.225, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922041.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922042.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922043.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.15, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922044.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922045.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922042.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.744, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922045.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922045.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"_struct.unpack\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922046.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"posix.read\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922047.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922047.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922046.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922042.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.041, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922047.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922041.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.242, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922048.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.837, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922048.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.205, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922059.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"_pickle.loads\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994920991.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1069.607, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922061.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922063.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914855.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7208.203, \"name\": \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994914851.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7212.776, \"name\": \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922070.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922072.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922080.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922081.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"list.sort\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922076.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.969, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922082.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922083.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922083.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.431, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922085.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922084.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922085.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922089.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922089.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"list.sort\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922090.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"dict.get\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922093.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922125.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"posix.getpid\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922126.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922124.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.263, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922085.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.565, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222285, \"tid\": 222282, \"ts\": 81994922069.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 69.074, \"name\": \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\"}, {\"ph\": \"M\", \"pid\": 222286, \"tid\": 222286, \"name\": \"process_name\", \"args\": {\"name\": \"ForkPoolWorker-3\"}}, {\"ph\": \"M\", \"pid\": 222286, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915848.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.939, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915847.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.357, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915872.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915872.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915875.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915875.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915876.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915875.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915876.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915876.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915876.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915876.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915883.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915891.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"builtins.hasattr\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915895.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.902, \"name\": \"posix.close\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915895.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.085, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915894.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.341, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915899.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"posix.close\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915899.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915899.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.13, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915906.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 555.412, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915904.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 557.878, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916466.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916467.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916472.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.269, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916474.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916475.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916470.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.527, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916482.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916483.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.011, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916492.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916493.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916494.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916492.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.158, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916468.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.173, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916494.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916465.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.528, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916496.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.528, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916495.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.453, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916515.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.256, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915901.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 651.393, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916555.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916553.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.034, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916571.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.676, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916582.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.802, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916563.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.287, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916591.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.109, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916594.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916559.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.847, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916596.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.678, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916595.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.21, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916599.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916599.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916621.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916622.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916624.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916624.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.969, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916624.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.465, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916621.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.275, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916599.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.813, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916627.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916627.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916556.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.568, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916629.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 82.82, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916629.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 83.567, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916730.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916730.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916732.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.497, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916733.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916734.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916731.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.114, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916737.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916738.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916739.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916740.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916740.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916739.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.429, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916731.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.337, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916740.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916730.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.775, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916741.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.361, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916741.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.81, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916754.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.63, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916629.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 135.072, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916765.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916765.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.309, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916772.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916773.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916770.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.276, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916773.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.839, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916775.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916767.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.263, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916776.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916776.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916777.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916777.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916778.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916779.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916780.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916780.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.184, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916780.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.586, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916778.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.213, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916776.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.162, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916782.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916782.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916766.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.964, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916783.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1049.582, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916783.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1050.111, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917835.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917835.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917836.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.311, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917838.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917838.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917836.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.9, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917839.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917839.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917840.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917840.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917841.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917840.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.023, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917835.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.533, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917841.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917834.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.898, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917842.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.251, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917842.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.669, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917855.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.375, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994916783.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1077.093, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917861.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917865.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917865.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917863.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.374, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917866.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.931, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917868.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917862.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.236, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917869.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917869.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917869.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917870.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917871.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917871.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917872.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917872.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.013, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917872.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.359, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917871.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.755, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917869.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.479, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917874.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917874.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917862.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.793, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917875.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.781, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917875.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.01, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917920.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917920.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917921.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917922.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917922.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917920.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.799, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917922.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917923.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917923.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917923.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917924.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917923.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917920.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.689, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917924.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917920.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.71, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917925.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917924.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917925.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.954, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917875.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 53.303, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917929.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917931.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917931.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917930.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.027, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917932.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917933.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917929.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.89, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917934.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917934.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917934.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917934.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917935.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917935.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917936.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917936.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917936.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.937, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917935.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.845, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917934.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.946, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917937.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.213, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917937.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.492, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917929.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.839, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917950.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1482.041, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917950.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1482.421, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919433.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919434.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919435.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 691.493, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920126.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920127.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919434.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 693.078, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920127.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920128.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920129.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920129.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920129.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920128.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.368, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919434.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 695.808, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920130.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994919433.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 696.896, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920131.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.828, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920130.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.156, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920142.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.908, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994917950.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2202.188, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920153.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"posix.getpid\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920157.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920157.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920155.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.851, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920158.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920159.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920154.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.243, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920160.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920160.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920160.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920161.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920162.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920162.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920163.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920163.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.454, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920163.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.908, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920162.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.217, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920160.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.666, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920190.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920190.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920154.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.444, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920191.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 793.647, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920191.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 793.997, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920986.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920986.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920987.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 142.611, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921130.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921130.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920987.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 144.019, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921131.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921131.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921132.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921133.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921133.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921132.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.471, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920986.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 146.839, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921133.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920986.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 147.88, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921134.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.29, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921134.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.594, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921145.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.887, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994920191.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 957.958, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921149.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"posix.getpid\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921152.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"dict.copy\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921153.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"dict.update\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921151.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.287, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921153.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.62, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921154.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921150.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.309, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921155.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921155.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921156.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921156.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921157.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921157.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_struct.pack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921157.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921158.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"posix.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921157.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921156.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.089, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921155.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.27, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921159.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921159.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921150.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.364, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921160.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 912.346, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921160.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 913.335, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922077.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922078.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922081.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.761, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922084.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922084.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922080.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.978, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922086.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922086.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.273, \"name\": \"_struct.unpack\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922088.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"posix.read\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922089.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922089.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922088.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.469, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922079.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.751, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922090.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922076.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.643, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922091.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.693, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922091.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.48, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922107.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.581, \"name\": \"_pickle.loads\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994921160.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 948.861, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922110.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922111.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915890.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6221.339, \"name\": \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994915886.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6225.822, \"name\": \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922118.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922119.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922127.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922127.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"list.sort\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922122.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.737, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922129.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922130.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.63, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922129.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.207, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922131.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922131.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922132.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922135.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922136.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"list.sort\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922136.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"dict.get\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922138.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922141.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.642, \"name\": \"posix.getpid\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922143.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922141.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.662, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922132.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.627, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222286, \"tid\": 222282, \"ts\": 81994922117.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.557, \"name\": \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\"}, {\"ph\": \"M\", \"pid\": 222287, \"tid\": 222287, \"name\": \"process_name\", \"args\": {\"name\": \"ForkPoolWorker-4\"}}, {\"ph\": \"M\", \"pid\": 222287, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916371.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.573, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916370.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.016, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916377.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916377.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916380.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916380.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_multiprocessing.SemLock._after_fork\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916381.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916389.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916398.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"builtins.hasattr\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916402.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.155, \"name\": \"posix.close\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916402.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.375, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916401.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.408, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916407.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"posix.close\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916406.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916406.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.249, \"name\": \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916414.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 133.686, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916412.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 136.475, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916552.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916552.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916558.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.874, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916560.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916561.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916556.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.182, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916569.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916569.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.605, \"name\": \"_struct.unpack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916599.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.282, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916600.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916601.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916598.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.131, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916553.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.098, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916602.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916551.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.912, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916604.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.592, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916603.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.549, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916621.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.382, \"name\": \"_pickle.loads\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916408.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 230.002, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916641.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916639.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.103, \"name\": \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916657.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.79, \"name\": \"dict.copy\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916669.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.162, \"name\": \"dict.update\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916649.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.483, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916692.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.899, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916695.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916645.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.476, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916697.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.499, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916697.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.968, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916700.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916701.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916707.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916708.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"_struct.pack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916709.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916709.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.357, \"name\": \"posix.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916709.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.823, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916707.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.042, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916700.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.409, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916712.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.621, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916712.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.196, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916642.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 83.237, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916727.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1052.362, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916727.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1052.834, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917781.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917782.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917783.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.129, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917785.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917785.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917782.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.911, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917807.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917808.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_struct.unpack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917809.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.023, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917810.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917811.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917809.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.248, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917782.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.134, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917811.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917781.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.691, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917812.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.387, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917812.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.869, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917825.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.547, \"name\": \"_pickle.loads\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916727.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1104.694, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917832.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917841.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"dict.copy\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917842.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"dict.update\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917837.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.998, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917843.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.16, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917845.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917834.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.699, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917846.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.337, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917846.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.595, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917848.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917849.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917851.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917851.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"_struct.pack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917852.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917852.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"posix.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917852.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.738, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917850.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.565, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917848.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.054, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917855.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917855.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917833.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.899, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917856.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.372, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917856.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.647, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917905.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917906.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917907.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917908.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917908.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917906.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.121, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917909.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917909.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_struct.unpack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917910.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917910.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917910.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917909.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917906.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.204, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917911.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917905.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.42, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917911.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.877, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917911.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.299, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917923.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.543, \"name\": \"_pickle.loads\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917856.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.421, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917928.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917931.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"dict.copy\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917932.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"dict.update\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917930.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.668, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917933.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917934.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917929.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.178, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917935.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.744, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917935.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.276, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917960.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917960.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917962.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917963.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.548, \"name\": \"_struct.pack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917964.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917964.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.12, \"name\": \"posix.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917964.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.511, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917962.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.605, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917960.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.131, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917967.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917966.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917929.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.696, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917969.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2606.498, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917969.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2606.972, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920577.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920577.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920578.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.053, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920631.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920631.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920578.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.254, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920633.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920633.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"_struct.unpack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920634.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920635.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920635.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920634.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.74, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920577.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.145, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920636.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920577.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.417, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920637.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.699, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920636.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.134, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920647.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.834, \"name\": \"_pickle.loads\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994917969.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2688.494, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920658.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"posix.getpid\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920662.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"dict.copy\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920662.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"dict.update\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920660.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.095, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920663.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920664.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920659.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.507, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920665.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920665.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920666.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920666.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920667.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920668.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_struct.pack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920668.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920668.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.105, \"name\": \"posix.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920668.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.444, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920667.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.576, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920666.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.023, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920670.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920670.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920659.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.639, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920671.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1259.169, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920671.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1259.606, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921932.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921932.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921933.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.065, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921982.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921983.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921932.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.759, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921984.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921984.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_struct.unpack\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921985.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"posix.read\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921986.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921986.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921985.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.219, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921932.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 53.612, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921986.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921932.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.692, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921987.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.196, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921987.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.599, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994921998.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"_pickle.loads\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994920671.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1327.617, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922000.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922001.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916397.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5604.346, \"name\": \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994916393.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5609.179, \"name\": \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922006.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922032.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922041.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922042.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"list.sort\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922037.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.065, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922043.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922044.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922044.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.415, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922046.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922046.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922047.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922050.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922051.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"list.sort\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922052.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"dict.get\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922055.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922061.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"posix.getpid\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922062.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922060.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.153, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922047.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.682, \"name\": \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\"}, {\"pid\": 222287, \"tid\": 222282, \"ts\": 81994922006.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 68.696, \"name\": \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\"}, {\"ph\": \"M\", \"pid\": 222282, \"tid\": 222282, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222282, \"tid\": 222291, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-6\"}}, {\"ph\": \"M\", \"pid\": 222282, \"tid\": 222290, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-4\"}}, {\"ph\": \"M\", \"pid\": 222282, \"tid\": 222289, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-2\"}}, {\"ph\": \"M\", \"pid\": 222282, \"tid\": 222282, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908552.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908552.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908551.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.344, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908556.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908555.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.964, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908559.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908560.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908561.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908563.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908563.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908564.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908561.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.993, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908565.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908566.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908568.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908568.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.901, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908569.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908567.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.001, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908570.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908566.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.151, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908571.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908571.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908572.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908572.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908573.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908573.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908565.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.583, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908561.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.399, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908574.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908576.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908577.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908579.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908579.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908580.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908580.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908581.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908581.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908581.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908581.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908582.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908582.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908582.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908582.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908583.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908583.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908584.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908584.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.66, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908583.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.77, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908586.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908586.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908587.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908587.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908589.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908589.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908591.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908592.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.773, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908592.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.964, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908597.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908598.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908598.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908599.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908598.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.194, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908600.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908600.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908600.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908601.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908602.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908603.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908604.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.718, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908604.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.803, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908603.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.142, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908603.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.705, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908607.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908608.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908609.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908609.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908609.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908610.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908608.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.908, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908606.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.918, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908591.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.968, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908588.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.168, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908588.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.081, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908612.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908612.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908578.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.926, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908613.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908615.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908616.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908616.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908616.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908620.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908620.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908620.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908621.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908622.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908624.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908626.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908626.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908627.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908625.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.199, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908624.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.075, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908628.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908628.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908630.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908630.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908630.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908630.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908629.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.045, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908624.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.904, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908622.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.968, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908621.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.657, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908631.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908619.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.619, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908616.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.71, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908635.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908634.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.686, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908635.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908636.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908636.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908636.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908636.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908636.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908637.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908637.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908638.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908638.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908638.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908639.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908638.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908635.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.49, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908639.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.953, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908639.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908639.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.477, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908642.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908642.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.872, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908653.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.668, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908659.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.752, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908642.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.719, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908662.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908663.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908663.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908663.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908662.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.787, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908665.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908665.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908665.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908666.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908666.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908666.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908665.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.237, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908667.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908668.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 140.16, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908808.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908809.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908809.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908668.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 141.408, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908634.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 175.243, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908815.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908816.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908816.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908817.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.134, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908817.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.546, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908819.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908816.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.098, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908819.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908820.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908821.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908821.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908822.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908820.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.389, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908823.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908820.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.864, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908824.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908825.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908825.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908825.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908826.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908826.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908819.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.934, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908816.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.441, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908826.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908827.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908828.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908828.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908829.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908829.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.761, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908831.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908831.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908828.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.014, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908832.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.683, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908833.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908833.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908833.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908833.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908834.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908834.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908834.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908836.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908836.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908836.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908837.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.078, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908837.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.21, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908839.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908840.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908840.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908840.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908840.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908841.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908842.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908842.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908842.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908843.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908844.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908844.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908844.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908844.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908844.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908845.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908836.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.423, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908846.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908846.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908846.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908847.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.278, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908847.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.376, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908848.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908849.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908850.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908851.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908853.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908853.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908853.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908853.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908853.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908846.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.978, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908855.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.786, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908855.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908856.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908857.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908858.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908859.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.681, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908859.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.765, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908859.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.062, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908859.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.352, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908862.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908862.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908863.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908863.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908862.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908863.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908862.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.997, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908862.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.758, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908854.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.202, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.51, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908835.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.951, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908888.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908887.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908827.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.943, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908889.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908889.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908889.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908890.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.652, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908891.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908891.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908891.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908892.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908891.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908892.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908892.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908892.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908893.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908893.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908894.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908895.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908895.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908895.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908895.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.926, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908894.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.817, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908896.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908897.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908898.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908898.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908899.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908899.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908898.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908894.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.087, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908893.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.978, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908893.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.329, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908899.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908890.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.102, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908889.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.557, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908901.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908900.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908901.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908902.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908902.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908902.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908901.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908901.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.792, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908903.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908904.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908904.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908904.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908904.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908905.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908904.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908901.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.59, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908905.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.441, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908905.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.537, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908905.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.899, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908907.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908908.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.759, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908917.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.76, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908921.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.26, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908907.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.864, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908923.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908924.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908924.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908924.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908923.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.468, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908925.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908925.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908925.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908926.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908926.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908926.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908925.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.242, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908927.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908927.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.347, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908965.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908965.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908965.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908927.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.378, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908900.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 65.553, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908970.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908970.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908970.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908972.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908973.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908973.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908974.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908974.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908975.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908973.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.036, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908975.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908977.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908978.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908978.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908979.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908977.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.448, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908980.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908977.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.135, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908981.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908981.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908981.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908981.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908982.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908982.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908975.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.109, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908973.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.516, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908983.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908983.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908984.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908984.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908985.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908985.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.476, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908987.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908988.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908984.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.348, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908988.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908988.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908988.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908988.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908989.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908989.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.694, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908990.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.641, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908991.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908991.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908991.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908991.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908992.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908992.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908992.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908993.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.525, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908993.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.665, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908995.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908997.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908997.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908997.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908996.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908998.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908998.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908998.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908998.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908998.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908999.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909001.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909001.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909000.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909001.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908992.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.653, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909001.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909002.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909002.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909002.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909002.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.045, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909003.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909003.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909004.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909005.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909007.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909002.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.465, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909008.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.945, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909010.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909011.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909012.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909014.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.366, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909014.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.468, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909014.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.774, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909013.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.033, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909016.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909016.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909017.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909017.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.069, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909017.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.221, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909019.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909016.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.729, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909016.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.492, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909009.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.267, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908992.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.806, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908991.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.226, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909021.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909021.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908983.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.807, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909022.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909022.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909022.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909022.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909023.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909023.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909023.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909024.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909024.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909024.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909024.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909024.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909025.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909025.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909026.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909027.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909027.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909027.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909026.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909026.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.439, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909028.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909028.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909029.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909029.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909029.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909029.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909029.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909026.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.813, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909025.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.487, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909025.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.834, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909030.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909023.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.142, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909022.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.338, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909031.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909031.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909032.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909033.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909033.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909033.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909033.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909033.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.85, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909034.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909034.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909034.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909034.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909035.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909035.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909034.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909031.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.372, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909035.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909035.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909035.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.18, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909037.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909037.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.505, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909043.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.821, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909046.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.099, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909037.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.517, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909048.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909049.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909049.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909048.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909048.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.258, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909051.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909050.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909051.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909052.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.137, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909085.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909085.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909085.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909052.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.059, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909031.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.14, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909092.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909092.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909092.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909093.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909093.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909094.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909092.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.815, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909095.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909096.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909097.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909097.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909098.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909096.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.065, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909098.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909096.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.692, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909099.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909099.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909100.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909100.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909100.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909100.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909095.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.357, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909092.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.545, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909101.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909101.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909102.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909102.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909103.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909103.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909104.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909105.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909102.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.29, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909105.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909105.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909105.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909105.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909106.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909108.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909110.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BuiltinImporter.is_package (<frozen importlib._bootstrap>:1014)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909109.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.443, \"name\": \"_requires_builtin.<locals>._requires_builtin_wrapper (<frozen importlib._bootstrap>:501)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909111.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909107.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.901, \"name\": \"spec_from_loader (<frozen importlib._bootstrap>:662)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909106.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.638, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909112.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909111.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909102.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.199, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909112.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909112.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909114.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.629, \"name\": \"_imp.create_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909114.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.799, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909113.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.26, \"name\": \"BuiltinImporter.create_module (<frozen importlib._bootstrap>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909120.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909120.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909138.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909138.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909138.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909139.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909139.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909120.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.589, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909112.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.082, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909141.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.63, \"name\": \"_imp.exec_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909141.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.865, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909140.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.199, \"name\": \"BuiltinImporter.exec_module (<frozen importlib._bootstrap>:997)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909143.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909143.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909112.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.605, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909101.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.679, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909145.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909147.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909147.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909147.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909148.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909148.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909145.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.145, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909144.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.997, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909149.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909149.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909150.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909149.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909091.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.933, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909089.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 64.054, \"name\": \"<module> (/usr/lib/python3.12/heapq.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909087.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 66.145, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909087.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 66.298, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909030.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 122.529, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909153.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909154.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909021.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 132.406, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908983.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 170.981, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909154.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909155.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909155.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909155.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909155.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909155.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909154.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.18, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909154.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.332, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909156.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909156.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909156.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909156.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.44, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908972.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 185.251, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909161.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909161.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909161.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909162.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909162.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909163.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909161.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.974, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909164.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909164.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909165.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909165.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909165.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.441, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909164.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.909, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909166.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909164.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.5, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909167.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909167.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909167.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909167.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909168.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909168.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909164.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.945, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909161.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.288, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909169.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909169.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909170.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909170.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909170.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909171.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909172.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909172.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909170.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.929, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909172.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909172.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909173.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909173.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909173.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909173.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909175.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909174.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909176.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909176.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909176.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909176.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909177.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909177.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909178.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909178.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.738, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909178.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.834, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909180.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909181.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909181.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909181.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909181.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909182.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909182.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909182.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909183.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909182.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909183.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909183.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909183.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909183.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909184.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909185.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909185.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909185.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909185.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909185.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909178.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.865, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.008, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909187.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909188.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909188.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909188.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909188.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909189.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909190.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909191.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909186.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.33, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909192.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.857, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.927, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909194.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909195.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909195.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909195.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909195.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909195.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909196.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909198.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909197.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.299, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909198.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909193.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.14, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909199.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909200.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909200.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909200.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.968, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909200.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.025, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909201.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909202.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909202.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909202.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909202.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909203.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909203.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.455, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909203.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.505, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909203.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.805, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909203.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.066, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909206.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"ExtensionFileLoader.__init__ (<frozen importlib._bootstrap_external>:1276)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909207.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909207.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909207.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909207.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909208.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909206.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.851, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909205.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.074, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909200.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.627, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909177.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.849, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909177.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.226, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909209.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909209.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909169.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.03, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909210.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909210.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909211.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.288, \"name\": \"_imp.create_dynamic\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909211.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.533, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909267.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909211.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.413, \"name\": \"ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1287)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909268.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909268.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909269.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909270.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909270.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909270.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909270.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909271.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909271.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909272.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909272.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909271.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909271.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.277, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909268.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.731, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909210.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 62.539, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909274.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.858, \"name\": \"_imp.exec_dynamic\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909273.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.021, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909290.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909273.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.571, \"name\": \"ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1295)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909290.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909290.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909210.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 80.99, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909169.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 121.82, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909291.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909292.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909292.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909292.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909292.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909293.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909291.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.481, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909291.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.706, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909293.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909293.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909294.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909293.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.617, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909160.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 133.682, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909296.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"Full (/usr/lib/python3.12/queue.py:23)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909295.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.163, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909304.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.599, \"name\": \"Queue (/usr/lib/python3.12/queue.py:28)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909304.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.689, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909317.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.332, \"name\": \"PriorityQueue (/usr/lib/python3.12/queue.py:223)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909317.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.822, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909326.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"LifoQueue (/usr/lib/python3.12/queue.py:242)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909326.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.474, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909332.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"_PySimpleQueue (/usr/lib/python3.12/queue.py:258)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909331.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.48, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908968.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 370.789, \"name\": \"<module> (/usr/lib/python3.12/queue.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908967.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 372.852, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908966.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 372.981, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908900.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 440.515, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909341.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909342.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908889.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 453.131, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908827.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 515.135, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909342.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909343.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909343.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909343.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909343.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909343.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909342.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.108, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909342.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.266, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909344.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909344.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909344.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909344.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908815.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 529.367, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909347.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909348.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909348.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909349.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909349.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909350.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909348.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.769, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909350.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909350.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909352.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909351.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909352.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909351.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.043, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909353.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909351.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.669, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909354.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909354.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909354.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909354.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909355.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909355.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909350.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.226, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909348.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.353, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909355.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909356.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909357.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909357.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909357.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909359.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909360.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909360.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909357.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.107, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909360.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909360.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909361.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909361.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909361.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909361.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909362.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909362.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909362.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909362.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909363.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909363.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.494, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909362.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909363.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909363.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909365.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909365.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.177, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909365.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.284, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909368.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909368.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909368.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909368.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909368.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909369.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909369.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909369.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909369.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909370.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909371.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909371.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909371.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909371.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909371.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909365.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.592, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909373.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909374.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909374.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909374.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909374.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.027, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909375.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909376.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909377.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909378.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909374.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.186, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909379.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.903, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909381.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909381.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909382.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909382.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909381.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.373, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909383.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909383.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909383.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909383.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909383.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909384.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.545, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.627, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.859, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909385.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.104, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909389.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909389.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909390.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909390.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909389.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909390.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909389.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.757, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909389.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.446, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909380.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.311, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.322, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909364.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.658, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909392.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909392.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909356.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.889, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909392.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909393.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909393.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909393.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909413.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909413.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909424.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909425.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909426.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909427.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909428.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909428.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909429.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909428.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.076, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909427.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.105, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909430.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909430.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909432.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909432.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909432.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909432.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909431.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.108, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909427.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.532, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909426.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.732, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909426.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.234, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909433.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909394.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.361, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909392.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.705, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909434.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909436.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909436.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909436.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909437.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909437.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909437.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909437.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909437.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909435.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.403, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909438.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.619, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909438.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.724, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909438.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.123, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909440.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909441.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.367, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909450.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.274, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909455.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.506, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909440.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.429, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909459.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909459.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909459.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909459.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909458.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.488, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909461.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909461.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909461.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909462.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909462.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909462.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909461.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.047, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909462.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909463.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 143.622, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909607.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909607.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909607.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909463.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 144.846, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909434.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 173.883, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909617.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"_Sentinel (/usr/lib/python3.12/traceback.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909617.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.716, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909626.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.142, \"name\": \"FrameSummary (/usr/lib/python3.12/traceback.py:248)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909625.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.642, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909656.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.552, \"name\": \"StackSummary (/usr/lib/python3.12/traceback.py:374)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909655.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.869, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909675.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909676.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"sys.intern\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909677.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"str.isidentifier\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909678.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"frozenset.__contains__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909678.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"str.isidentifier\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"frozenset.__contains__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"str.isidentifier\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"frozenset.__contains__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.isidentifier\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"frozenset.__contains__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.isidentifier\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909679.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"frozenset.__contains__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909680.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909681.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909683.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909683.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909689.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909689.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909691.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909691.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909691.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909691.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909691.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909690.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.798, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909784.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"<module> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909694.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 90.763, \"name\": \"builtins.eval\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909791.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"sys.intern\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909793.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"sys.intern\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909793.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"sys.intern\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909793.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"sys.intern\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909803.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.189, \"name\": \"sys._getframemodulename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909674.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 130.666, \"name\": \"namedtuple (/usr/lib/python3.12/collections/__init__.py:355)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909806.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"_ExceptionPrintContext (/usr/lib/python3.12/traceback.py:656)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909806.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.215, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909813.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.091, \"name\": \"TracebackException (/usr/lib/python3.12/traceback.py:679)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909812.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.693, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909611.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 210.104, \"name\": \"<module> (/usr/lib/python3.12/traceback.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909609.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 212.841, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909609.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 213.037, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909434.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 388.228, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909822.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909823.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909392.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 430.786, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909356.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 467.447, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909824.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909825.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909825.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909825.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909825.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909825.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909824.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.031, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909824.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.311, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909826.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909827.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909827.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909826.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909347.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 480.51, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909829.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909829.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909830.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909831.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909830.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.851, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909832.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909832.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909833.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909833.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909833.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909833.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909833.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.911, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909834.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909834.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909836.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909837.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909837.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909838.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909838.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.608, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909839.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909837.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.223, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909839.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909840.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909842.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909841.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909842.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909840.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.488, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909843.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909840.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.253, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909844.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909844.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909845.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909844.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909845.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909845.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909839.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.463, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909837.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.058, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909846.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909847.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909847.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909848.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909848.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909849.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909849.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909849.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909849.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909850.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909850.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909850.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909850.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909852.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909853.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909853.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909853.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909853.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909854.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909854.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909855.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909855.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.295, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909855.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.415, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909858.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909859.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909859.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909859.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909858.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.034, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909860.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909860.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909860.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909861.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909860.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909861.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909861.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909861.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909861.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909862.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909863.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909863.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.469, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909863.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.539, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909863.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.847, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909863.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.147, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909865.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909866.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909866.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909866.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909866.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909867.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909866.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.759, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909865.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.457, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909855.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.239, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909854.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.333, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909854.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.775, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909884.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909884.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909848.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.725, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909885.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909885.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909886.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909886.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909886.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909887.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909887.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909888.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909888.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909888.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909889.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909889.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909889.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909889.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909890.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909891.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909891.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909891.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909892.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909891.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.977, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909891.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.882, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909893.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909893.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909895.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909895.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909895.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909895.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909894.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.153, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909890.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.238, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909890.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.104, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909889.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.447, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909896.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909887.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.033, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909886.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.515, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909897.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909897.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.275, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909901.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.599, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.99, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909901.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909901.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909902.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909902.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909902.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909902.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909902.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909898.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.499, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909903.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.485, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909903.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.589, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909903.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.977, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909905.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909906.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.279, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909914.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.523, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909920.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.464, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909905.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.538, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909923.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909923.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909923.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909923.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909922.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.547, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909925.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.137, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909926.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909927.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 364.544, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910291.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910292.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910293.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909926.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 366.745, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909897.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 396.654, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910306.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910306.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910307.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910309.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910308.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910310.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910307.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.994, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910310.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910312.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910314.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910313.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.052, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910314.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.659, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910312.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.769, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910315.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910312.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.538, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910316.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910316.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910317.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910317.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910318.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910317.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910310.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.119, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910307.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.576, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910318.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910319.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910320.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910320.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910321.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910322.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910323.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910323.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910320.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.009, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910324.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910324.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910324.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910324.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910325.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910325.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910325.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910325.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910326.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910326.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910326.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910326.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910326.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910328.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910328.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910328.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910329.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.724, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910328.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.883, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910334.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910335.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910335.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910335.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910334.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.069, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910336.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910336.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910336.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910337.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910338.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910339.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910328.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.515, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910340.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910340.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910340.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910341.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.224, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910341.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.319, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910342.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910343.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910344.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910346.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910346.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910346.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910346.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910346.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910347.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910340.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.14, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910349.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.01, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910349.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.073, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910350.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910350.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910350.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910350.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910351.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910352.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910353.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910353.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910353.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910353.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910353.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910348.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.878, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910354.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910373.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910374.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910374.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.889, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910374.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.998, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910377.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910377.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910378.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910378.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910377.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.97, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910378.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910379.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.189, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910379.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.278, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910379.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.584, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910379.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.905, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910383.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"ExtensionFileLoader.__init__ (<frozen importlib._bootstrap_external>:1276)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910383.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910384.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910383.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910383.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910385.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910383.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.395, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910382.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.371, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910374.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.268, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.595, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910327.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.95, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910386.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910386.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910319.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 67.57, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910387.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910388.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910388.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.665, \"name\": \"_imp.create_dynamic\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910388.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.098, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910450.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910388.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 62.041, \"name\": \"ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1287)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910450.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910451.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910451.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910451.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910451.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910452.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910452.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910452.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910452.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910453.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910454.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910453.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910453.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.024, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910450.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.47, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910388.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 68.226, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910457.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.386, \"name\": \"_imp.exec_dynamic\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910456.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.531, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910465.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910456.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.088, \"name\": \"ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1295)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910466.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910466.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910387.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 79.063, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910319.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 147.59, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910467.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910468.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910468.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910468.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910469.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910469.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910467.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.048, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910467.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.279, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910470.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910470.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910470.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910469.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.953, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910306.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 165.515, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910472.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910472.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910473.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910473.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910473.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910474.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910474.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910475.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910475.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910475.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910475.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910474.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.899, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910476.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910476.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910480.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910480.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910481.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910482.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910482.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910483.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910481.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.266, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910483.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910484.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910487.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910486.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.746, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910487.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910485.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.178, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910488.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910485.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.823, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910488.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910489.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910489.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910489.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910490.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910490.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910483.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.946, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910481.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.59, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910490.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910491.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910492.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910492.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910492.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"builtins.locals\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910493.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"str.format\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910494.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910495.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910492.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.743, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910495.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910495.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910496.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910496.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910496.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910496.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910497.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910497.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910497.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910497.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910498.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910498.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910498.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910498.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910498.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910499.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910499.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.838, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.934, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910504.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910505.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910506.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910506.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910505.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910506.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910507.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910507.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910507.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910507.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910508.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910510.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910510.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910509.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910510.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910500.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.971, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910510.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910511.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910511.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910511.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910511.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.261, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910512.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910513.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910513.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910513.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910513.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910513.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910515.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910515.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910514.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910515.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910516.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910516.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910516.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910516.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910517.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910511.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.943, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910519.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.923, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910519.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910520.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910520.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910520.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910520.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910520.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910521.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910521.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910521.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910521.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910521.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910522.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910523.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910524.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910518.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.307, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910524.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910525.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910525.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910525.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910525.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910526.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910527.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910528.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910529.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910530.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910530.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910530.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910530.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910530.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910525.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.235, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.365, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.437, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910533.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910533.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910533.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910533.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910533.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910534.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910536.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910538.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910538.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910537.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910538.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910531.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.19, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910538.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910538.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910539.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910539.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.983, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910539.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.056, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910540.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910541.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910541.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910541.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910541.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910541.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910542.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910543.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910544.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910544.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910544.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910544.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910544.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910545.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910539.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.975, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910546.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910499.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.978, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910499.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.425, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910547.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910547.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910491.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.786, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910491.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.142, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910550.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910550.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910550.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910550.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910550.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910551.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910549.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.355, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910549.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.513, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910551.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910552.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910552.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910551.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910480.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 72.476, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910555.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910558.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.782, \"name\": \"_ConnectionBase (/usr/lib/python3.12/multiprocessing/connection.py:115)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910557.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.585, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910569.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.817, \"name\": \"Connection (/usr/lib/python3.12/multiprocessing/connection.py:364)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910569.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.288, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910580.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.988, \"name\": \"Listener (/usr/lib/python3.12/multiprocessing/connection.py:448)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910579.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.424, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910589.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"SocketListener (/usr/lib/python3.12/multiprocessing/connection.py:596)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910588.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.939, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910597.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910599.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910598.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910599.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910599.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910599.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910597.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.514, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910601.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"ConnectionWrapper (/usr/lib/python3.12/multiprocessing/connection.py:970)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910600.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.935, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910606.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"XmlListener (/usr/lib/python3.12/multiprocessing/connection.py:992)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910606.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.354, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910615.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910639.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.621, \"name\": \"ForkingPickler.register (/usr/lib/python3.12/multiprocessing/reduction.py:43)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910300.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 339.963, \"name\": \"<module> (/usr/lib/python3.12/multiprocessing/connection.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910295.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 345.404, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910294.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 345.786, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909897.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 743.717, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910641.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910642.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909885.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 756.634, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910642.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910643.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"builtins.setattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909846.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 797.308, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910644.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910645.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910645.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910646.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910646.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910646.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910644.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.776, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910644.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.963, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910647.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910647.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910647.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910647.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994909836.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 811.879, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910650.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"RemoteTraceback (/usr/lib/python3.12/multiprocessing/pool.py:57)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910650.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.432, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910659.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"ExceptionWithTraceback (/usr/lib/python3.12/multiprocessing/pool.py:63)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910658.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.452, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910664.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"MaybeEncodingError (/usr/lib/python3.12/multiprocessing/pool.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910663.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.29, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910671.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_PoolCache (/usr/lib/python3.12/multiprocessing/pool.py:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910671.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.746, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910681.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.847, \"name\": \"Pool (/usr/lib/python3.12/multiprocessing/pool.py:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910680.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.647, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910697.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.997, \"name\": \"ApplyResult (/usr/lib/python3.12/multiprocessing/pool.py:745)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910697.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.589, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910706.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"MapResult (/usr/lib/python3.12/multiprocessing/pool.py:794)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910706.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.665, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910713.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"IMapIterator (/usr/lib/python3.12/multiprocessing/pool.py:837)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910713.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.761, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910719.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"IMapUnorderedIterator (/usr/lib/python3.12/multiprocessing/pool.py:906)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910719.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.514, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910725.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.501, \"name\": \"ThreadPool (/usr/lib/python3.12/multiprocessing/pool.py:921)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910724.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.95, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908812.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1920.315, \"name\": \"<module> (/usr/lib/python3.12/multiprocessing/pool.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908810.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1923.964, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908810.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1924.12, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908632.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2102.351, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910734.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910735.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908615.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2120.596, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910736.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910736.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"builtins.setattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908576.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2160.697, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910737.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910737.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910737.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910738.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910738.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910738.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910737.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910737.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.366, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910738.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910739.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910739.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910738.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908559.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2180.171, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910741.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.427, \"name\": \"DefaultContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:237)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910747.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910747.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910751.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910751.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910752.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910753.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910753.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910754.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910752.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.015, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910754.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910754.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910756.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910755.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910756.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910755.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.104, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910757.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910754.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.735, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910758.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910758.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910758.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910758.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910759.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910759.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910754.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.422, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910752.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.06, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910761.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910761.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910762.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910763.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910763.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910764.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910764.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910764.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910764.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910765.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910766.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910766.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910766.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910766.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910766.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910768.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910768.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910768.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.712, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910768.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.826, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910772.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910772.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910773.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910773.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910772.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910773.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910774.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910774.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910774.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910774.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910774.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910777.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910777.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910775.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.573, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910777.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910778.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.69, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910778.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.787, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910778.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.1, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910777.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.393, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910780.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910781.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910781.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910781.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910781.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910782.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910781.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.902, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910780.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.618, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910768.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.795, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.791, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910767.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.154, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910783.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910783.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910763.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.103, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910784.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910784.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910785.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910785.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910785.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910786.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910786.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910786.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910787.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910786.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910787.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910787.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910787.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910788.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910788.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910789.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910790.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910789.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910790.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910789.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.918, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910789.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.924, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910791.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910792.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910793.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910794.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910794.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910794.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910793.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.839, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910789.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.869, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910788.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.698, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910788.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.045, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910795.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910786.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.225, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910785.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.529, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910796.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910796.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.692, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910798.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910798.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910798.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910797.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.431, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.883, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910799.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.319, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910801.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910802.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.62, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910812.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.699, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910816.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.881, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910801.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.589, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910819.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910819.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910820.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910819.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910818.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.553, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910821.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910821.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910821.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910822.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910822.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910822.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910821.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.128, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910822.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910825.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.586, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910884.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910884.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910885.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910825.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.876, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910796.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 89.239, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910890.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910890.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910891.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910892.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910891.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910892.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910892.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910893.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910893.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910892.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910894.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910894.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910896.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 66.769, \"name\": \"Queue (/usr/lib/python3.12/multiprocessing/queues.py:35)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910895.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 74.271, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910971.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.698, \"name\": \"JoinableQueue (/usr/lib/python3.12/multiprocessing/queues.py:316)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910970.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.72, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910980.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.15, \"name\": \"SimpleQueue (/usr/lib/python3.12/multiprocessing/queues.py:359)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910979.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.906, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910887.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 98.79, \"name\": \"<module> (/usr/lib/python3.12/multiprocessing/queues.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910886.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 100.812, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910886.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.083, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910795.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 191.393, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910987.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910988.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910784.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 203.753, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910988.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910989.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.setattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910761.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 228.279, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910990.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910991.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910991.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910991.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910992.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910992.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910990.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.103, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910990.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.291, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910993.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910993.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910993.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910993.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910751.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 244.088, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910996.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910999.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.403, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911008.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.569, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911010.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910998.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.245, \"name\": \"Pipe (/usr/lib/python3.12/multiprocessing/connection.py:533)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911012.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911012.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911015.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911016.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911016.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911017.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911017.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.572, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911018.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911016.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.04, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911019.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911019.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911021.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911020.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911021.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911019.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.263, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911022.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911019.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.959, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911023.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911023.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911023.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911023.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911024.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911024.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911019.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.779, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911016.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.185, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911025.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911025.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911026.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911027.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911027.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911027.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911027.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911028.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911029.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911029.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911029.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911029.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.307, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911031.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911031.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911031.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911033.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911033.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911033.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911034.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.587, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911033.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.724, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911037.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911037.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911038.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911038.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911037.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.033, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911038.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911039.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911039.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911039.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911039.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911039.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911040.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.042, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.138, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.427, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911041.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.686, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911046.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911045.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911044.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.703, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911033.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.008, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.966, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911032.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.301, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911049.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911049.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911026.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.974, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911049.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911051.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911051.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911052.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911052.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911052.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911052.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911053.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911053.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911053.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911054.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911054.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911055.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911055.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911055.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911055.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.794, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911054.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.584, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911056.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911057.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911058.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911058.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911058.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911058.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911058.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911054.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.164, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911053.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.063, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911053.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.414, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911059.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911051.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.658, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.997, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911060.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911060.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911060.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911061.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911061.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911061.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911061.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911061.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911063.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911063.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911063.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911063.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911060.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.588, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.068, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.172, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911064.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.5, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911066.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911067.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.421, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911076.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.885, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911080.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.441, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911066.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.972, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911082.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911083.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911083.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911083.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911082.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.536, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911084.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911084.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911084.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911085.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911085.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911085.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911084.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.078, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911085.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911086.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 127.282, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911213.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911214.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911215.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911086.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 129.132, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911059.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.654, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911221.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911221.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911222.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911222.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911222.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911223.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911223.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911223.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911224.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911223.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911244.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911244.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911245.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911245.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911245.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911249.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.085, \"name\": \"SemLock (/usr/lib/python3.12/multiprocessing/synchronize.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911249.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.384, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911261.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"Semaphore (/usr/lib/python3.12/multiprocessing/synchronize.py:130)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911260.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.667, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911267.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"BoundedSemaphore (/usr/lib/python3.12/multiprocessing/synchronize.py:149)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911267.706, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.434, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911275.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"Lock (/usr/lib/python3.12/multiprocessing/synchronize.py:166)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911275.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.571, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911281.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"RLock (/usr/lib/python3.12/multiprocessing/synchronize.py:191)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911280.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.547, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911284.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.824, \"name\": \"Condition (/usr/lib/python3.12/multiprocessing/synchronize.py:217)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911284.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.651, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911291.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.359, \"name\": \"Event (/usr/lib/python3.12/multiprocessing/synchronize.py:328)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911291.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.296, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911298.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"property.setter\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911299.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"property.setter\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911297.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.217, \"name\": \"Barrier (/usr/lib/python3.12/multiprocessing/synchronize.py:370)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911297.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.135, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911219.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.601, \"name\": \"<module> (/usr/lib/python3.12/multiprocessing/synchronize.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911216.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 91.026, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911216.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 91.261, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911059.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 248.179, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911308.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911309.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911050.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 259.228, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911309.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911310.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"builtins.setattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911025.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 285.304, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911311.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911312.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911312.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911312.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911312.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911312.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911311.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.832, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911311.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.063, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911313.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911313.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911314.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911313.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911015.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 298.927, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911315.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911319.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911322.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911325.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.929, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911326.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911330.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911331.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911332.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.931, \"name\": \"Random.seed\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911330.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.08, \"name\": \"Random.seed (/usr/lib/python3.12/random.py:135)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911328.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.208, \"name\": \"Random.__init__ (/usr/lib/python3.12/random.py:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911325.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.275, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911345.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911347.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911348.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911348.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911348.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911348.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911348.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911349.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911344.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.967, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911350.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911324.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.585, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911324.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.53, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911321.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.452, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911393.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911394.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911397.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911397.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.866, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911400.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911400.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911401.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911399.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.308, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911396.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.583, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911318.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 84.8, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911317.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 86.275, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911012.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 391.643, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911405.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911405.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911407.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911408.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911410.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911411.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911411.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911411.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911412.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911413.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911412.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.293, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911414.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911411.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.904, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911411.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.113, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911410.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.065, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911445.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911445.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911446.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911446.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.588, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911449.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911449.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911449.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911448.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.864, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911446.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.076, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911408.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.039, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911408.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.584, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911404.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.361, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910997.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 453.482, \"name\": \"SimpleQueue.__init__ (/usr/lib/python3.12/multiprocessing/queues.py:361)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910747.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 704.207, \"name\": \"BaseContext.SimpleQueue (/usr/lib/python3.12/multiprocessing/context.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911452.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911452.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911453.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911454.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.847, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911459.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911461.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911454.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.541, \"name\": \"Pipe (/usr/lib/python3.12/multiprocessing/connection.py:533)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911462.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911462.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911463.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911464.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911466.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911467.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911467.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911467.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911468.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911469.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911469.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911469.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911469.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911466.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.641, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911469.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.282, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.508, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911465.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.07, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911480.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911480.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911481.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911481.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.079, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911483.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911483.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911483.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911483.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.346, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911481.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.914, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911464.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.47, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911463.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.874, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911462.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.439, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911485.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911485.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911486.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911487.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911489.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911490.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911491.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911491.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911489.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.765, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911491.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.804, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.906, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911488.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.295, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911501.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911501.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911502.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911502.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911503.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911503.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911503.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911503.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.122, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911502.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.076, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911487.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.54, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911487.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.792, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911485.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.118, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911454.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.429, \"name\": \"SimpleQueue.__init__ (/usr/lib/python3.12/multiprocessing/queues.py:361)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911451.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.778, \"name\": \"BaseContext.SimpleQueue (/usr/lib/python3.12/multiprocessing/context.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910746.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 759.594, \"name\": \"Pool._setup_queues (/usr/lib/python3.12/multiprocessing/pool.py:345)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911507.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911507.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911507.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911518.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.543, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911523.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911524.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911518.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.625, \"name\": \"Pipe (/usr/lib/python3.12/multiprocessing/connection.py:533)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911526.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911526.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911527.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911528.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911529.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911529.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911530.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911529.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911530.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911531.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911531.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911531.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911531.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911532.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911533.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911533.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911530.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.79, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911533.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911529.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.023, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911529.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.27, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911528.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.031, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911545.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911545.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911546.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911546.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.238, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911548.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911548.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911549.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911548.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.836, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911546.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.519, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911527.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.415, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911527.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.819, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911525.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.01, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911551.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911551.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911553.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911555.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911555.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911555.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911556.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"Random.random\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"math.floor\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911555.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.871, \"name\": \"Random.choices (/usr/lib/python3.12/random.py:454)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911557.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.833, \"name\": \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.998, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911554.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.404, \"name\": \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911583.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911584.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911584.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911585.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.545, \"name\": \"builtins.id\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911587.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911587.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911587.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911586.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.65, \"name\": \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911584.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.795, \"name\": \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911553.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.817, \"name\": \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911553.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.101, \"name\": \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911551.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.893, \"name\": \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911508.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 80.922, \"name\": \"SimpleQueue.__init__ (/usr/lib/python3.12/multiprocessing/queues.py:361)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911506.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 82.264, \"name\": \"BaseContext.SimpleQueue (/usr/lib/python3.12/multiprocessing/context.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911590.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.071, \"name\": \"_PoolCache.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:157)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911594.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911599.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911600.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911602.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911603.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911607.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911607.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911606.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.974, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911611.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911610.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.542, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911598.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.086, \"name\": \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911595.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.315, \"name\": \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911612.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911612.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.615, \"name\": \"str.replace\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911613.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911613.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911614.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911616.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911617.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911617.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911618.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.723, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911620.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911620.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911622.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911623.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911623.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911625.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911625.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.691, \"name\": \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911626.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911623.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.692, \"name\": \"_get_module_lock (<frozen importlib._bootstrap>:426)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911626.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911627.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911628.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911628.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911628.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911627.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.89, \"name\": \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911629.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_List.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911627.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.69, \"name\": \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911630.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911630.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911631.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"_List.remove\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911631.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911632.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_weakref._remove_dead_weakref\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911631.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911626.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.051, \"name\": \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911623.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.28, \"name\": \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911633.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911633.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911634.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911635.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911635.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.194, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911636.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911636.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911637.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911637.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911637.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911637.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911638.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"_imp.is_builtin\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911638.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911638.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911638.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911639.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911639.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911639.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"_imp.find_frozen\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911639.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911639.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911640.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911640.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911640.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911640.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911641.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911641.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911642.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911642.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.599, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911642.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.74, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911645.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911646.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911646.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911647.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911646.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911647.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911648.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911648.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911648.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911648.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911648.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911650.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911650.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911649.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911650.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911652.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.573, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911651.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.66, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911651.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.989, \"name\": \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911651.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.276, \"name\": \"_path_isfile (<frozen importlib._bootstrap_external>:159)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911654.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911654.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911655.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"str.startswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911655.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"_path_isabs (<frozen importlib._bootstrap_external>:180)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911655.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"_path_abspath (<frozen importlib._bootstrap_external>:185)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911655.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911654.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.89, \"name\": \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911654.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.544, \"name\": \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911642.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.742, \"name\": \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911641.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.817, \"name\": \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911641.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.184, \"name\": \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911657.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911657.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911634.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.178, \"name\": \"_find_spec (<frozen importlib._bootstrap>:1240)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911658.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911658.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911658.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911659.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911659.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_new_module (<frozen importlib._bootstrap>:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911661.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911661.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911661.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911661.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.getattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911662.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"str.endswith\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911662.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911663.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911663.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911664.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911663.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.912, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911663.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.764, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911665.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911665.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911666.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911666.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911666.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911666.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911666.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.759, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911662.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.336, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911662.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.027, \"name\": \"_get_cached (<frozen importlib._bootstrap_external>:611)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911662.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.344, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911668.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911660.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.649, \"name\": \"_init_module_attrs (<frozen importlib._bootstrap>:733)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911658.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.069, \"name\": \"module_from_spec (<frozen importlib._bootstrap>:806)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911669.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911669.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.617, \"name\": \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"posix.fspath\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"str.rfind\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911671.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.497, \"name\": \"builtins.max\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"_path_split (<frozen importlib._bootstrap_external>:132)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911671.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911671.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"str.rstrip\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_path_join (<frozen importlib._bootstrap_external>:126)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911670.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.459, \"name\": \"cache_from_source (<frozen importlib._bootstrap_external>:482)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911673.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.997, \"name\": \"posix.stat\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911673.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.078, \"name\": \"_path_stat (<frozen importlib._bootstrap_external>:140)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911672.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.438, \"name\": \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911675.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911675.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.152, \"name\": \"_io.open_code\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911684.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.516, \"name\": \"_io.BufferedReader.read\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911687.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.585, \"name\": \"_io.BufferedReader.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911675.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.535, \"name\": \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911690.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911690.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911691.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911690.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911690.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.525, \"name\": \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911692.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911693.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911692.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911693.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911693.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"type.from_bytes\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911693.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911692.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.297, \"name\": \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911694.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911694.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.004, \"name\": \"marshal.loads\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911714.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911714.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911714.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_imp._fix_co_filename\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911694.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.895, \"name\": \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911669.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.337, \"name\": \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911719.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911719.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911720.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911720.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911719.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911722.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.421, \"name\": \"Popen (/usr/lib/python3.12/multiprocessing/popen_fork.py:12)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911722.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.041, \"name\": \"builtins.__build_class__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911718.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.343, \"name\": \"<module> (/usr/lib/python3.12/multiprocessing/popen_fork.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911716.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.899, \"name\": \"builtins.exec\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911716.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.063, \"name\": \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911669.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.562, \"name\": \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911730.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"dict.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911731.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_verbose_message (<frozen importlib._bootstrap>:491)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911658.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 73.282, \"name\": \"_load_unlocked (<frozen importlib._bootstrap>:911)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911731.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911732.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"builtins.setattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911633.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.389, \"name\": \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911733.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911733.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911733.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.106, \"name\": \"list.pop\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911735.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911735.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911735.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911733.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.689, \"name\": \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911733.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.89, \"name\": \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911736.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_imp.acquire_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911736.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911736.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_imp.release_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911736.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911622.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 114.842, \"name\": \"_find_and_load (<frozen importlib._bootstrap>:1349)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911740.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911741.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911739.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.937, \"name\": \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911742.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.904, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911745.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.505, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911748.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 347.694, \"name\": \"posix.fork\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912134.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.061, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912137.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912218.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912221.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912204.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.517, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911742.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 484.431, \"name\": \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911738.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 491.909, \"name\": \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911619.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 615.008, \"name\": \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912273.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.722, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911616.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 659.546, \"name\": \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912282.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.28, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912304.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912324.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912329.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.803, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912333.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912333.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912365.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.19, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912367.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912365.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.936, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912377.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912376.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.602, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912322.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.181, \"name\": \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912315.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 63.172, \"name\": \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912379.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912381.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"str.replace\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912386.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912386.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.892, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912391.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.316, \"name\": \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912394.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912394.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912395.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912404.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.427, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912403.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.986, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912396.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.902, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912432.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.414, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912431.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.205, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912454.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.682, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912462.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912446.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.618, \"name\": \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912465.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.302, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912470.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.052, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912473.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 317.099, \"name\": \"posix.fork\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912823.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.997, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912825.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912863.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912866.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912856.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.42, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912463.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 407.888, \"name\": \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912442.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 431.781, \"name\": \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912409.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 480.897, \"name\": \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912907.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912393.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 514.194, \"name\": \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912914.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912933.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912947.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912953.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.517, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912956.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912956.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912971.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.749, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912972.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912970.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.962, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912996.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912995.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.437, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912946.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.637, \"name\": \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912940.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.151, \"name\": \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912997.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994912999.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"str.replace\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913004.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913003.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913007.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913008.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913008.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913009.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913016.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.757, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913015.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.72, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913018.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913018.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.623, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913010.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.853, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913027.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.003, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913027.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.449, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913056.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.743, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913063.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913050.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.313, \"name\": \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913065.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.111, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913069.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.678, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913072.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 376.54, \"name\": \"posix.fork\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913479.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.597, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913485.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913537.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913540.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.473, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913525.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.302, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913063.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 484.283, \"name\": \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913047.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 502.048, \"name\": \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913019.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 548.879, \"name\": \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913584.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.069, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913008.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 578.737, \"name\": \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913592.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.853, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913617.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913633.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913639.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.654, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913643.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913643.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913675.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913676.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913675.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.349, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913684.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913683.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.195, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913632.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.661, \"name\": \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913624.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.176, \"name\": \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913685.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913687.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"str.replace\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913691.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913691.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913696.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913696.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913697.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913697.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913717.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.826, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913717.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.562, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913720.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913720.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913721.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913721.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913698.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.994, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913742.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.199, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913742.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.845, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913759.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.679, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913765.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913752.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.891, \"name\": \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913767.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.788, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913772.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.031, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913774.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 243.388, \"name\": \"posix.fork\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914033.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.348, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914037.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914092.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914108.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914055.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.53, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913765.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 347.581, \"name\": \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913750.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 364.502, \"name\": \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913722.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 396.873, \"name\": \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914135.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.019, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994913696.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 440.599, \"name\": \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914156.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.048, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914163.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914179.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914197.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.797, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914200.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914201.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914216.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914218.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914215.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.254, \"name\": \"str.join\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914224.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.79, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914223.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.67, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914177.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.344, \"name\": \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914170.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.895, \"name\": \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914228.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914230.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"str.replace\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914235.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914234.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914239.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914239.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914239.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914240.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"dict.get\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914246.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.356, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914245.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.958, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914248.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914248.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914248.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914248.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914249.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914249.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914241.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.539, \"name\": \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914258.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.005, \"name\": \"str.rpartition\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914257.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.521, \"name\": \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914305.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.334, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914324.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"_io.TextIOWrapper.flush\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914299.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.099, \"name\": \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914327.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.684, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914331.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.036, \"name\": \"posix.pipe\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914333.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 245.653, \"name\": \"posix.fork\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914591.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.986, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914610.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"posix.close\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914638.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914640.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914628.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.048, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914325.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 340.626, \"name\": \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914296.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 371.15, \"name\": \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914250.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 421.371, \"name\": \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914687.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.116, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914239.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 467.527, \"name\": \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914712.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.617, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914721.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911594.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3127.924, \"name\": \"Pool._repopulate_pool_static (/usr/lib/python3.12/multiprocessing/pool.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994911593.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3131.07, \"name\": \"Pool._repopulate_pool (/usr/lib/python3.12/multiprocessing/pool.py:305)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914746.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.186, \"name\": \"Pool._get_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:279)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914798.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.312, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914822.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914820.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.249, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914827.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.822, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914890.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.786, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914901.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.879, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914904.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914904.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914895.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.177, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914888.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.601, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914933.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.161, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914942.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914940.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.196, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914794.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 148.259, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914944.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_thread.daemon_threads_allowed\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914945.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914944.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.307, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1249)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914951.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914954.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914955.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 112.343, \"name\": \"_thread.start_new_thread\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915073.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.626, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915073.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.243, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915079.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915079.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.091, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915080.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915081.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915083.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915083.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915083.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915241.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915241.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.866, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915258.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.739, \"name\": \"_thread._set_sentinel\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915260.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915261.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915258.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.231, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915262.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"_thread.get_native_id\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915262.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.587, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915264.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915263.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915264.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915265.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915265.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915266.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.039, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915293.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915265.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.694, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915264.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.29, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915294.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915294.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.672, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915263.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.964, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915299.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915297.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.414, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915301.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915310.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915310.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915321.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915332.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915336.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.301, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915336.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.223, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915329.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.149, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915361.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915362.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.553, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915361.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.611, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915361.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.413, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915363.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915364.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915363.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915363.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.881, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915364.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915364.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915364.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915364.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915368.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915368.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915368.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.017, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915368.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.341, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915321.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.801, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915317.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.783, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915386.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915386.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915375.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.431, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915386.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915387.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.36, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915388.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.461, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915390.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915374.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.077, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915457.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915447.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.262, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915463.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.25, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915439.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.854, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915489.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915507.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915507.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915506.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.506, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915518.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915516.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.866, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915503.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.072, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915521.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.126, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915499.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.56, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915528.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915528.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915527.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915531.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915528.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.36, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915527.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.739, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915533.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915526.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.432, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915535.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915535.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915535.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915535.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915535.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915534.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.231, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915536.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915534.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.139, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915536.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.654, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915537.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915536.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.061, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915539.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.255, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.953, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915561.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915558.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.714, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.837, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.983, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915563.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915563.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.456, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915564.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915540.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.221, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915565.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915569.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915568.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915565.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.041, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915565.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.131, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915569.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915569.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915565.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.984, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915570.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915564.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.6, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915084.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 526.727, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915612.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915612.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915078.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 534.936, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915614.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915614.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915071.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 543.13, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994914951.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 663.689, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915622.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.205, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915625.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915625.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915626.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915627.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915628.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915628.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915628.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915627.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.317, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915627.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.144, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915634.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915636.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915635.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.916, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915622.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.186, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915637.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_thread.daemon_threads_allowed\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915637.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915637.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1249)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915638.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915639.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915640.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.772, \"name\": \"_thread.start_new_thread\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915693.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915693.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915694.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915694.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915695.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915695.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915696.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915696.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915696.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915748.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915748.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.567, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915749.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"_thread._set_sentinel\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915749.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915750.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915749.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.419, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915750.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_thread.get_native_id\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915750.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915752.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915751.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915752.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915753.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915752.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915753.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.345, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915775.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915752.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.377, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915752.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.85, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915776.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915776.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915751.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.916, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915778.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915778.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.925, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915780.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915785.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915785.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915796.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"builtins.iter\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915697.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 142.53, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915840.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915840.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.183, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915694.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 148.247, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915843.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915843.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915692.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 151.424, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915638.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 205.804, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915847.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.143, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915849.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915849.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915850.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915851.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915851.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915852.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915852.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915851.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.083, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915851.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.752, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915853.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915854.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.769, \"name\": \"set.add\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915854.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.438, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915847.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.606, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915860.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_thread.daemon_threads_allowed\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915861.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915860.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1249)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915861.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915862.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915862.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 44.597, \"name\": \"_thread.start_new_thread\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915908.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915908.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915909.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915909.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915910.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.264, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915912.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915912.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915913.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915913.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915945.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915945.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915946.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_thread._set_sentinel\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915946.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915947.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915946.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.064, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915947.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_thread.get_native_id\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915947.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915948.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915948.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915948.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915950.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915950.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915951.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.231, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915962.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915950.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.749, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915948.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.414, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915963.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915963.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915948.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.043, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915965.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915964.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.643, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915966.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915973.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915973.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915978.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915978.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915913.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 94.882, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916009.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916009.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915909.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 100.81, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916010.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916010.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915908.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 103.41, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994915861.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 149.968, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916014.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916014.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916015.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916013.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.56, \"name\": \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994910745.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5271.495, \"name\": \"Pool.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:183)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908554.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7470.506, \"name\": \"BaseContext.Pool (/usr/lib/python3.12/multiprocessing/context.py:115)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916037.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916033.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.752, \"name\": \"Pool.__enter__ (/usr/lib/python3.12/multiprocessing/pool.py:734)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916044.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916044.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.306, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916048.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916048.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916049.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.536, \"name\": \"builtins.divmod\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916050.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916079.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916093.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916097.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916097.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916097.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916096.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.449, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916093.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.464, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916101.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916090.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.032, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916084.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.32, \"name\": \"MapResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:796)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916119.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.858, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916044.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 89.575, \"name\": \"Pool._map_async (/usr/lib/python3.12/multiprocessing/pool.py:471)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916140.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916140.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.9, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916141.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.409, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916141.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916142.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916142.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916142.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916143.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916143.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916153.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"builtins.iter\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916153.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.548, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916152.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.464, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916197.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916198.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916227.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.876, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916243.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.825, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916213.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.178, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916250.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.19, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916263.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.068, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916207.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.982, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916268.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916278.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.042, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916286.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916286.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.904, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916286.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.853, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916268.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 34.766, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916196.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 106.882, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916304.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.495, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916304.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.08, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916307.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916307.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916315.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916315.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916312.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.952, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916316.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.343, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916321.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916308.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.107, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916321.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916325.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916326.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916326.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.168, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916326.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.688, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916321.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.69, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916307.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 46.552, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916354.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.202, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916353.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.672, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916356.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916356.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916359.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916359.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916357.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.878, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916360.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.8, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916364.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916357.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.374, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916364.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916364.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916365.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916365.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916365.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.164, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916364.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.261, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916356.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.834, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916367.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916367.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916367.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916368.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916369.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916369.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916368.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.329, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916369.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.448, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916371.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916368.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.7, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916372.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.962, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916367.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.333, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916373.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916373.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916373.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916374.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916375.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916375.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916374.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.253, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916375.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.19, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916377.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916374.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.227, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916377.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916377.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916379.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916379.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916379.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.557, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916377.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.22, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916373.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.02, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916380.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916379.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916380.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916380.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916381.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916381.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916381.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.059, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916382.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.238, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916383.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916380.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.998, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916384.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916380.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.469, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916386.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916386.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916386.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.93, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916387.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.943, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.586, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916388.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916385.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.832, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916389.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916389.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916389.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916390.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916391.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916391.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916390.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.102, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916391.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.264, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916394.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916390.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.444, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916394.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916394.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916395.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916395.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916395.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916394.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916389.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.867, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916395.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916395.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916396.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916396.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916397.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916397.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916396.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.215, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916398.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.084, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916399.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916396.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.017, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916399.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916399.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916400.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916400.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916400.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916399.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.873, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916396.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.434, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916400.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916400.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916401.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916401.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916402.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916402.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916401.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.006, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916402.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.109, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916401.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.788, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916404.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916401.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.058, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916405.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.414, \"name\": \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994916405.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.968, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915575.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 943.294, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916522.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916523.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915574.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 949.624, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916527.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916527.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.976, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916525.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.328, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915419.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1110.323, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916535.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916535.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916542.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916541.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.885, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916542.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916540.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.668, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916543.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916545.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916545.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916545.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916545.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.182, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916544.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.411, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916546.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916546.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916544.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.579, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916548.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916544.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.939, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916580.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916582.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.818, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916581.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.071, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916596.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916597.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916597.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.859, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916597.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.181, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916539.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.988, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916539.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.079, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916535.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 64.452, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916534.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 65.864, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915412.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1187.584, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916601.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916602.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915990.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 615.193, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916605.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916606.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915986.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 620.526, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916608.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916608.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916610.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.063, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916622.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916623.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916609.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.763, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915982.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 642.835, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916626.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916627.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.825, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915977.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 659.497, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916641.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.5, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916643.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916643.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916644.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.402, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916656.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916656.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916644.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.75, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916657.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916657.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916658.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916659.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916659.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916658.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.02, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916644.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.326, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916659.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916660.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916643.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.873, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916662.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.856, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916663.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916663.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916664.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.524, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916674.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916675.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916663.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.64, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916675.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916675.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916676.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916677.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916677.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916676.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.171, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916663.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.987, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916678.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916678.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916663.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.792, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916679.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916680.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916680.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916681.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.402, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916691.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916692.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916681.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.515, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916694.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916694.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916695.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916695.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916695.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916694.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.272, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916680.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.314, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916696.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916696.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916680.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.166, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916698.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916699.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916699.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916699.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.143, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916709.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916710.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916699.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.208, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916710.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916711.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916711.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916712.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916712.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916711.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.268, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916699.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.607, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916713.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916713.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.727, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916698.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.47, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916714.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916715.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916715.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916716.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.906, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916726.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916726.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916716.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.995, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916727.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916727.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916728.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916729.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916729.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916728.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.302, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916716.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.417, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916729.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916730.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.69, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916715.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.211, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916731.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916732.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916732.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916734.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916734.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916734.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916733.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.944, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916735.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916735.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916603.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 153.882, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916603.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.229, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916602.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 156.011, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916760.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916761.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.874, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916760.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.948, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916759.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.171, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916783.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916784.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.946, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916784.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.23, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916783.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.082, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916785.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916785.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916785.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916785.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.98, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916786.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916786.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916786.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916786.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.954, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916601.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 186.452, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916601.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 186.954, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916790.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916790.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916790.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916791.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916792.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.283, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916797.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916797.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916797.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916797.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916797.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916789.54, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.902, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916803.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916802.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916803.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.457, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916801.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.38, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916804.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916807.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916806.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916806.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.735, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916808.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916808.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.975, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916805.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.118, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916810.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916805.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.222, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916812.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.413, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916813.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916811.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.272, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916815.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.922, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916815.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916814.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.487, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916816.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916816.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916816.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916816.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916816.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916815.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.353, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916817.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916815.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.016, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916818.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916818.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916818.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916821.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916821.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916818.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.829, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916822.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916817.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.376, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916823.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916823.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916823.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916823.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.665, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916822.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.803, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916825.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916824.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916822.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.136, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916822.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.831, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916827.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916827.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.62, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.728, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916827.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916827.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.395, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916828.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916826.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.873, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916828.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.107, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916833.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916834.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916828.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.807, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916835.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916835.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.2, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916835.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.492, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916800.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.133, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916840.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916840.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916842.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916842.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916842.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916841.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.104, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916843.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916845.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916844.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.52, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916843.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.969, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916884.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916843.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.798, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916892.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916894.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.981, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916893.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.041, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916897.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916898.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916898.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916898.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.061, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916841.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.057, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916841.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.421, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916840.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.246, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916840.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.878, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916799.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.376, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916902.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916904.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916904.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.59, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916904.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.022, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916903.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.542, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916906.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916907.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.656, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916907.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.876, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916906.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.261, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916908.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916908.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916908.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916908.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.01, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916909.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916909.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916909.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916909.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916910.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916910.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916910.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.644, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916910.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.907, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916902.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.673, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916902.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.046, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916911.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916911.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916912.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916915.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916915.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916916.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916917.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916911.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.46, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916920.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916920.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916920.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916919.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.669, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916921.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916922.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916922.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916922.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916923.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916923.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916921.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.171, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916924.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916921.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.324, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916925.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916925.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916925.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916926.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916926.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916925.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.326, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916926.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.685, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916925.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.048, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916949.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916949.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916949.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916950.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916950.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.624, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916948.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.529, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916952.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916947.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.23, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916956.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.038, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916957.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916955.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.647, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916958.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916957.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916957.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916958.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916958.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916957.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916958.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916957.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.292, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916959.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916960.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916960.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916959.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.331, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916959.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.444, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916961.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916961.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916959.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.542, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916959.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.156, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916963.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916963.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.152, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916963.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916962.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.555, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916964.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.584, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916967.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916968.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916964.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.316, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916969.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916969.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916969.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.078, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916918.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.76, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916971.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916972.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916974.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916974.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.58, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916975.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916973.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.415, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916975.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916977.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916977.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.41, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916977.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916976.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.919, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916978.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916979.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.621, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916979.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.153, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916980.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916980.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916980.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916980.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.428, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916973.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.856, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916973.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.522, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916971.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.153, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916971.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.567, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916918.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 63.403, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916983.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916984.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916985.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.852, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916984.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.446, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916984.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.118, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916987.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916987.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916987.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916987.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916988.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916988.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916988.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916988.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916989.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916989.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916989.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916989.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916990.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916990.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916990.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916989.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.575, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916983.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.528, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916982.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.906, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916992.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916992.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916992.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.68, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916993.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916994.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916992.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.863, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916996.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916996.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916996.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916996.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916996.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916998.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.041, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916998.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916997.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.521, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916999.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.61, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917000.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916998.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.017, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917001.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917000.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.394, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917002.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.927, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917003.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.812, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917005.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917005.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.056, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917005.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917004.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.473, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917006.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917005.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.026, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917008.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.029, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917009.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917009.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917008.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.038, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917010.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917010.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917010.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916995.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.369, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917011.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917011.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.601, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.454, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917014.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917014.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.102, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917014.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917013.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.536, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917014.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917015.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917015.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917015.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917016.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917016.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917016.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.355, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917012.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.771, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917011.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.114, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917011.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.26, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994916995.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.272, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917017.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917017.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.489, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917017.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.809, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917018.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.537, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917020.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917020.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917020.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917020.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917020.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917021.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917017.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.68, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917017.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.862, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917023.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917024.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917022.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.289, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.619, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.247, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917027.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917027.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.88, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917026.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.271, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917028.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.513, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.446, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917029.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.837, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917030.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917031.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917033.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917033.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.863, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917034.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917032.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.263, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917034.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917035.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917034.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.252, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917036.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.763, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917037.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917037.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917036.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.735, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917038.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917038.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917038.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.588, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.854, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917041.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917040.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.226, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917041.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917041.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917041.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917042.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917042.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917042.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917042.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.516, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.82, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.166, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917039.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.294, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917025.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.313, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917044.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.63, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917045.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917046.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917047.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917044.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.421, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917044.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.599, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917050.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917049.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917048.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.226, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917053.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917052.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.148, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917054.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917055.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917057.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917057.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917057.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917057.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.146, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.609, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917058.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917056.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.947, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917059.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917058.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917058.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.395, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917061.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917061.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917061.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917060.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.095, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917061.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917062.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917062.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917061.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.365, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.688, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.759, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917067.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917065.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.142, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917067.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917067.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917067.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917068.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917068.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917068.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917068.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.418, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917064.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.737, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.064, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917063.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.188, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917051.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.198, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917070.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917071.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.165, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917069.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.296, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917073.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917073.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917073.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917073.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917073.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.141, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917075.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917076.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917072.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.202, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917078.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.202, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917079.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.847, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917081.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917081.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.485, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917081.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.618, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917106.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917106.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.421, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917081.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.019, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917107.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917080.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.909, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917109.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917109.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917108.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917109.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917109.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917108.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.289, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917108.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.113, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917111.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917111.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917111.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917111.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.77, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917112.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917110.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.515, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917114.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917114.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.929, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917114.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917113.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.423, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917114.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.139, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917116.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917116.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917114.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.276, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917117.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917117.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917117.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.649, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.265, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917118.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917119.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917120.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917119.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.499, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917121.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917119.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.037, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917121.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.474, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917123.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917123.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.243, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917123.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917122.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.821, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917124.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917124.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917124.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.925, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917125.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917125.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917125.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917125.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917119.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.824, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917119.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.234, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917118.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.681, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917118.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.833, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917077.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.595, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.811, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.106, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917128.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917129.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917128.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917128.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917129.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917129.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917129.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917129.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917130.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917127.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.128, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917126.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.322, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917132.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917132.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917132.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917133.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917134.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917132.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.602, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917137.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917137.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917137.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917136.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917137.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.096, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917139.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917138.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.646, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917140.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917140.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917140.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917140.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917140.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917139.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.943, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917139.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.563, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.668, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917142.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.019, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917143.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917144.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917145.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917147.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917147.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917147.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917146.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.024, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917148.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.796, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917149.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917149.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917148.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.521, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917150.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917150.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917150.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917135.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.436, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917152.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.286, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917153.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917154.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917154.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917154.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917155.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917155.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917154.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.756, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.056, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.413, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917151.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.531, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917135.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.367, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917155.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917156.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917156.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917156.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.463, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917156.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.658, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917157.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917157.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917157.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917156.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917158.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917158.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917158.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917158.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917159.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917155.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.539, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917155.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.667, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917161.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917160.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.102, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917164.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917164.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917164.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.112, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917165.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917165.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917164.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.71, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917165.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.117, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917166.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.012, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917167.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.916, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917168.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.852, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917170.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.902, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917169.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.186, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917173.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.866, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917173.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917172.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.234, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917173.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917174.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917174.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917173.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.344, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917163.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.542, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.95, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917178.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917177.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.331, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917178.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917178.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917178.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917179.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917179.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917179.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917179.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.401, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917176.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.684, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.015, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917175.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.071, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917162.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.967, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917182.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917183.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.446, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917181.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.569, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917185.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.997, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917186.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.11, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917187.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917187.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917184.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.948, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.736, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917188.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.12, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917189.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917190.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.912, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917191.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.852, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917193.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917193.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.402, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917192.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.733, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917195.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917195.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.907, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917195.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917194.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.294, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917196.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917195.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.055, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917197.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917197.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917198.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917197.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.212, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917198.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917198.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917198.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917187.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.917, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.884, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917201.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917200.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.334, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917202.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917202.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917202.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917203.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917203.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917203.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917203.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.414, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.639, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.94, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917199.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.068, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917187.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.271, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917205.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.539, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917206.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917206.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917206.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917206.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.267, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.234, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917204.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.354, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917208.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917209.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917207.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.967, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917211.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.08, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917212.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.882, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917213.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.121, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.578, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917214.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.889, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917216.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917218.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917218.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917218.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.922, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917218.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917217.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.271, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917219.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917218.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.104, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917220.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.352, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917235.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917235.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917220.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.143, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917237.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917237.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917236.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.846, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917239.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917239.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917241.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.976, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917242.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.922, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917244.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917244.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917243.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.127, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917245.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917242.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.061, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917245.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917246.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.552, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917246.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.214, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917257.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917258.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917258.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917258.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.425, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.954, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.402, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917238.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.594, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917210.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.921, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917260.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917261.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916735.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 527.629, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917263.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917264.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916735.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 529.506, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916733.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 531.376, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917265.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917266.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.659, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994916732.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 535.937, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917269.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917270.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917271.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917271.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.615, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917284.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917285.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917271.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.076, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917285.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917286.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.418, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917287.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917287.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917287.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917287.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.318, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917271.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.152, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917291.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917292.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.909, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917270.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.528, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917293.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917294.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917294.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917295.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.355, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917306.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917307.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917295.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.376, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917307.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917308.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917308.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917309.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917309.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917308.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.201, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917295.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.806, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917310.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917310.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.706, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917294.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.717, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917311.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917312.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917312.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917313.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.637, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917324.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917324.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917313.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.717, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917325.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917325.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917326.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917326.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917326.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917325.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.432, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917313.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.295, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917327.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917327.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917312.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.178, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917343.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917343.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.534, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917339.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.848, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917345.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.587, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917347.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917338.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.197, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917351.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.709, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917350.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.876, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917355.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917356.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917363.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917364.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917365.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917365.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.632, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917364.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.128, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917363.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.648, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917355.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.676, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917380.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917380.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.657, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917338.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.783, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917330.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.623, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917382.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917382.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.994, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917384.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917384.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917384.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917385.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.055, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917395.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917384.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.112, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917383.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.673, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917397.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917396.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917382.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.391, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917329.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 68.739, \"name\": \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917398.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917398.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917261.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 154.82, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917261.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.823, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917261.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 156.31, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917418.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917418.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.622, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917418.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.078, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917418.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.697, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917420.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917420.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.879, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917421.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917422.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917422.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917422.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.451, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917422.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.888, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917260.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 165.017, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917260.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 165.36, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917427.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917427.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917427.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917427.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917428.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917429.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917426.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.495, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917433.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917432.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917433.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917431.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.156, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917434.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917435.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917435.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917435.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917436.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917436.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917435.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.993, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917438.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917434.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.266, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.121, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.295, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917462.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917439.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.411, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917464.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917463.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917463.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917464.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917464.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917463.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.45, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917462.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.301, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917465.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.26, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917467.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917467.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917467.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917466.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.043, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917468.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917469.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917468.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917468.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.216, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917468.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.339, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917469.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917469.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917468.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.462, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917470.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917467.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.071, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.523, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917472.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917472.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.052, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917472.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917471.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.581, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917474.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.128, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917489.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917490.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917473.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.656, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917491.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917491.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.025, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917491.49, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.276, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917431.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.85, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917494.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917494.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917495.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917495.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.464, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917495.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917494.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.187, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917496.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.929, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917498.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917498.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917497.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.169, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917499.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917496.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.138, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917500.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917501.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.668, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917512.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917513.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917500.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.966, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917514.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917514.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917514.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917494.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.676, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917494.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.576, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917493.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.184, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917493.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.542, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917518.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.892, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917517.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.455, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917522.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917522.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917523.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.257, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917534.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917535.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917523.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.912, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917537.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917537.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917538.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.916, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917540.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917541.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917538.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.548, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917522.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.518, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917541.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917522.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.664, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917542.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917542.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.558, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917543.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.991, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917517.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.041, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917544.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917544.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917546.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917546.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917546.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917545.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.098, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917546.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917547.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917548.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917548.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917547.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917547.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.839, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917548.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917548.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917547.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.035, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917549.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917547.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.948, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917550.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917550.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.325, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917550.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.928, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917561.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917562.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917562.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917562.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.863, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917545.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.368, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917545.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.054, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917544.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.68, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917544.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.96, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917430.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 133.664, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917565.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917566.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917566.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.364, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917566.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.795, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917566.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.292, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917579.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917580.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917579.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.601, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917579.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.134, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917580.624, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917580.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917580.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917580.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.271, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916143.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1440.414, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917585.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.434, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917585.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916141.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1444.559, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917586.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917586.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916139.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1447.721, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916139.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1448.225, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917588.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917588.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.626, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916138.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1450.954, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994916042.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1547.832, \"name\": \"Pool.map (/usr/lib/python3.12/multiprocessing/pool.py:362)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.454, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.929, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917581.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.216, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917565.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.868, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917565.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.172, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917623.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917623.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917623.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.714, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917624.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917625.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.387, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917626.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917626.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917627.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917627.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917627.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917627.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917627.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917622.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.806, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917629.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917629.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.413, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917629.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917628.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.274, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917630.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917631.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917631.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917631.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917632.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917632.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.437, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917631.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.054, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917633.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917630.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.152, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.979, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917635.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917634.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.657, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917635.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.578, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917635.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.07, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917637.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917636.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.929, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917639.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917638.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.974, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917641.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917641.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.72, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917640.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.296, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917643.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917643.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.488, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917643.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917643.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917643.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917642.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.353, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917590.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.507, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917664.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917670.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917671.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917672.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917672.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917671.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.277, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917673.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917669.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.869, \"name\": \"IMapIterator.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:839)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917683.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.092, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917664.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.896, \"name\": \"Pool.imap_unordered (/usr/lib/python3.12/multiprocessing/pool.py:425)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917695.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"IMapIterator.__iter__ (/usr/lib/python3.12/multiprocessing/pool.py:850)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917697.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917697.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917699.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.828, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917701.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917701.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917702.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917702.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917704.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917704.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917704.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917721.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.199, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917723.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917724.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917727.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917728.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917725.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.241, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917729.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.592, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917732.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917724.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.77, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917732.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917733.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917734.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917734.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.276, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917734.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.717, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917732.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.303, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917723.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.729, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917746.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917747.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917747.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917750.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917750.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917748.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.172, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917751.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.426, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917752.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917748.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.07, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917753.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917753.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917754.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917754.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.568, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917754.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917753.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.771, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917747.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.979, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917755.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917755.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917755.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917756.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917756.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917756.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.038, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917757.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.819, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917758.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917755.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.542, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917758.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917758.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917760.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917760.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917760.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917758.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.804, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917755.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.934, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917761.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917761.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917761.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917762.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917763.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917762.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.983, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917763.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.617, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917762.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.245, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917764.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917761.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.542, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917765.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917765.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917765.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917766.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917766.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917766.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.986, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917767.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.583, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917767.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917765.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.187, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917768.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.726, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917765.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.433, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917770.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917770.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.977, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917770.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.587, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917771.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.144, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917771.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917772.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917771.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.827, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917769.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.43, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917774.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917774.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917775.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917774.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.904, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917775.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917775.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917774.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.906, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.716, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917773.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.022, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917776.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917778.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.874, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917778.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.999, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917779.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917777.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.159, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917781.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917781.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.926, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917781.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.496, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917782.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.021, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917783.859, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917783.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917783.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.698, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917780.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.134, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917785.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917785.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917785.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917786.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917786.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917785.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.929, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917784.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.127, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917787.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917789.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917791.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917790.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917792.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917792.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994917790.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.161, \"name\": \"IMapIterator._set_length (/usr/lib/python3.12/multiprocessing/pool.py:894)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917644.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 171.105, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917816.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917817.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917644.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 173.79, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917819.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917818.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917818.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917628.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 191.53, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917821.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917821.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917822.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917822.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.485, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917823.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917822.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.386, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917823.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917824.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917826.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917826.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917824.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.475, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917824.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.652, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917827.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917827.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917824.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.03, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917828.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917823.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.895, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917829.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917829.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.078, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917829.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.688, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917841.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917842.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917842.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.518, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917842.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917821.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.515, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917821.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.092, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917820.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.817, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917820.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.104, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917628.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 215.55, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917844.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917845.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917846.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.942, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917845.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.46, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917845.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.979, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917857.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917858.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917858.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917857.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.185, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917858.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.44, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917859.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917860.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917860.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917860.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.455, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917860.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.637, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917844.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.376, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917844.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.615, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917862.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917861.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917861.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.661, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917863.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917863.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917863.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917863.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917863.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917864.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917861.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.984, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917867.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917866.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917867.287, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917866.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.085, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917867.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917868.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917868.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917868.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917869.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917869.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917868.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.681, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917870.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917867.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.584, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917871.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917870.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917870.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917871.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917871.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917870.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917871.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917870.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.422, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917872.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917872.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917872.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.188, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917873.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917873.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917872.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.66, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917872.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.049, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917874.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917875.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.813, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917877.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917877.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.634, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917876.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.126, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917879.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917879.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.893, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917879.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917878.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.286, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917880.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.148, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917881.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917882.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917879.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.348, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917883.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917883.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917883.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.731, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917866.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.574, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917887.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917887.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917887.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.933, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917887.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917886.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.34, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917887.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917888.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917888.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917889.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917889.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917889.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917889.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.209, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.665, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917885.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.104, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917884.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.307, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917865.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.364, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917890.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917891.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917891.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.667, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917891.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.306, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917891.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.662, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917947.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917948.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.596, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917947.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.953, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917947.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917949.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917949.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917949.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917948.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917949.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917399.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 554.059, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917953.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917954.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917399.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 556.018, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917955.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917955.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917957.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.552, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917968.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917969.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917956.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.974, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917398.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 570.736, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917969.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917970.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917398.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 573.271, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917974.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.375, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917974.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.59, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917975.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917975.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917975.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.499, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917976.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.042, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917987.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917975.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.857, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917988.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917988.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917973.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.154, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917989.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917989.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917990.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.112, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918010.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918010.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917989.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.416, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918011.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918011.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918012.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918013.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918013.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918012.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.085, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917989.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.726, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918013.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918014.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994917989.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.742, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918016.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918015.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918016.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918017.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918017.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918017.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.696, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918020.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918020.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918015.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.901, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918020.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918021.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918021.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.358, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918032.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918032.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918021.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.535, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918033.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918033.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918034.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.85, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918061.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918061.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918033.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.135, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918021.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.87, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918062.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918062.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.602, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918020.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.59, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918064.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918064.369, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918064.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918065.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918065.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918065.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918066.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918066.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918064.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.562, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918067.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918067.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918067.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.916, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918077.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918078.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918067.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.106, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918078.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918078.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917704.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 391.191, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918097.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918096.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.644, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917701.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 396.518, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918098.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918099.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918099.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994917697.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 403.196, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918079.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.959, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918122.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918124.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918079.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 45.67, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918067.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.354, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918126.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.52, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918126.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.207, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918066.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.293, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918130.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918130.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.964, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918131.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918132.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918132.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.55, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918131.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918133.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918133.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918129.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.116, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918134.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918134.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917951.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 200.226, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917951.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 200.799, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917949.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 202.946, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918153.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918153.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918153.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.172, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918153.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.738, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917890.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 264.263, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994917890.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 264.536, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918156.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918156.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918156.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.678, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918157.814, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.641, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918158.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.796, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918160.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918160.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918155.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.27, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918163.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918163.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.563, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918163.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918162.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.645, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918164.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918165.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918165.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918165.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918166.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.239, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918166.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918165.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.206, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918167.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918164.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.376, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918168.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918168.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918168.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918169.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918169.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918168.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.937, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918169.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918168.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.6, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918170.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.124, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918171.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.882, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.077, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.626, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918172.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.942, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918175.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918175.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.917, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.008, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918175.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918175.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.901, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918176.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918174.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.496, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918177.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.891, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918178.1, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918176.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.286, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918178.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.174, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918192.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918193.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918178.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.265, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918194.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918194.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.76, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918194.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.978, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918161.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.622, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918196.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918196.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918197.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918197.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918198.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918197.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.954, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918198.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.67, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918200.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918200.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918199.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.079, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918203.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918198.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.379, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918204.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918205.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.512, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918204.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.177, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918216.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918217.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918217.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918216.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918197.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.881, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918196.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.484, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918196.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.053, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918196.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.384, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918161.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.845, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918219.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918220.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918220.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.196, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918220.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.606, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918220.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.06, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918231.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918101.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 149.236, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918252.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918251.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918253.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918253.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918253.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918251.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.034, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918232.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.725, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918232.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.233, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918231.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.799, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918273.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918274.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.604, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918274.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.848, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918273.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.36, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918275.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918219.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.861, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918219.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.168, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918277.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918277.25, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918277.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.788, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918278.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918279.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918280.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918276.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.32, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918282.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918282.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918282.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918281.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.021, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918283.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918284.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918284.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918283.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.364, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918284.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918284.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918283.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.64, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918285.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918283.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.589, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918287.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918286.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.456, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918288.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918288.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918287.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.09, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918289.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918289.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918287.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.655, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918289.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918287.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.082, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.607, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918289.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.969, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.603, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918291.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918290.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.946, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.705, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.787, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918293.365, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918293.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.613, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918292.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.174, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.446, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918295.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918295.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.871, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918295.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918294.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.231, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918135.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 177.96, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918313.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918314.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918134.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 179.951, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918317.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918317.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918295.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.273, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918336.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918336.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918295.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.277, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918338.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918337.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918337.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.85, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918281.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.119, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918340.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918340.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918341.07, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918340.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.996, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918341.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918342.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918342.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918342.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918342.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918342.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.88, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918343.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918343.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.279, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918341.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.947, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918344.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918341.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.735, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918344.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918345.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.306, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918344.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.895, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918356.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918356.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918356.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918356.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.632, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.24, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.738, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918339.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.001, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918281.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 76.757, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918359.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918359.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918254.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 123.416, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918379.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918379.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918380.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918381.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918380.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918379.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.115, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918360.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.724, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918360.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.164, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918359.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.671, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918402.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918318.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.522, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918420.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918421.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918318.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 103.738, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918134.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 287.878, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918422.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.546, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918423.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.145, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918134.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 290.745, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918426.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918426.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918427.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918428.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918427.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.537, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918427.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.883, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918429.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918429.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918425.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.542, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918429.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918430.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918430.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.546, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918442.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918442.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918430.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.87, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918443.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918443.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918384.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 76.917, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918462.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918462.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918463.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918463.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918463.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918461.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.301, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918445.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.366, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918483.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918484.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918444.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.379, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918430.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 55.128, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918485.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918486.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.929, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918429.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.765, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918489.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918489.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.322, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918491.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918492.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918492.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918492.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.791, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918493.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918493.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918488.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.105, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918403.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.935, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918403.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 108.407, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918402.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 108.974, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918512.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918512.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.588, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918512.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918511.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.332, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918513.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918513.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918513.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918513.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.681, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918514.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918514.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918514.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918513.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918358.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.647, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918358.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.894, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918515.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918515.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918515.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.533, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918515.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918516.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918517.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918519.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918518.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918518.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918519.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918519.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918515.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.404, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918520.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918520.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918521.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918520.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.026, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918521.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918522.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918522.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918522.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918523.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918522.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918522.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.595, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918523.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918521.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.575, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918524.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918524.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918524.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.248, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918525.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918525.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918524.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918525.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918524.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.492, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.605, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.742, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918526.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.16, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.525, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918527.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.367, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.927, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918530.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918528.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.278, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918531.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918531.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918531.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918531.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918531.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.952, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918532.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918532.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918530.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.842, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918532.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918530.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.597, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918534.137, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918534.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918534.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918533.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.272, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918534.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.953, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918546.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918547.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918534.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.743, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918548.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918548.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918548.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.843, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918519.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.221, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918549.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918550.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918551.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918551.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918551.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918550.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918551.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918552.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918553.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918553.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918552.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918552.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.917, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918553.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918553.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918552.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.259, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918556.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918552.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.179, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918556.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918556.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.008, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918556.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.552, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918567.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918568.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918568.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918568.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.719, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918550.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.635, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918550.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.18, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918549.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.74, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918549.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.993, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918519.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.85, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918570.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918571.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918571.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.02, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918571.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.392, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918570.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.869, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918582.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918464.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 135.978, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918601.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918601.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.712, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918602.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918603.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918602.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918601.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.492, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918582.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.502, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918582.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.924, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918582.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.499, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918622.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918622.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.593, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918622.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.823, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918621.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.346, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918624.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918624.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918623.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918570.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.398, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918570.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.616, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918625.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918625.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918625.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.963, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918627.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918627.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918627.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918627.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918628.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918629.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918625.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.889, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918631.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918631.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918631.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918630.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.014, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918631.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918632.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918632.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918632.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918633.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918633.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918632.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.626, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918634.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918632.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.63, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918635.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.16, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918636.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918634.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.824, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918637.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918637.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.182, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918637.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.307, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918638.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918638.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918637.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.055, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918636.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.62, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918640.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918640.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918640.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918639.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.158, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.156, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.629, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918641.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918640.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.099, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.679, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.785, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918643.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918643.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.629, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918642.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.207, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.43, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918645.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918645.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.579, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.007, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918645.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918644.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.45, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918646.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.765, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918657.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918658.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918645.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.529, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918660.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918660.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918660.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918630.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 30.905, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918661.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918662.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918663.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918663.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918663.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918662.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.974, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918663.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918664.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918665.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918665.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918664.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.676, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918664.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918665.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918665.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918664.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.897, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918666.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918664.171, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.717, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918667.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918667.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.962, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918667.289, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.496, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918678.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918679.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918678.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918678.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.717, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918662.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.1, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918662.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.653, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918661.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.22, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918661.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.449, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918630.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.938, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918680.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918681.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918681.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.479, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918681.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.828, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918681.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.307, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918702.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 224.337, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918719.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918720.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 226.145, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918721.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918721.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918702.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 35.455, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918702.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.07, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918702.031, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.636, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918740.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918740.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918740.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918739.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.29, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918741.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918741.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918741.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918741.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.666, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918742.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918742.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918742.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918742.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918680.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.834, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918680.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 62.071, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.541, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918744.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918745.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918743.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.964, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918747.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918747.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918747.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918746.682, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918747.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918749.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918749.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918749.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918750.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918750.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918749.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.736, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918751.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918749.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.646, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918752.184, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.845, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918751.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.346, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918753.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.993, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918754.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918755.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918757.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918757.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918757.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.347, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.878, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918759.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918756.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.434, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.408, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.505, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918760.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.005, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918761.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918759.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.397, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918761.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.853, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918773.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918773.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918761.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.571, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918774.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918774.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918774.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918746.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.081, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918777.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918777.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.4, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918777.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.015, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918778.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918779.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918779.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918779.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918779.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918778.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.959, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918780.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918780.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.344, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918778.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.096, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918781.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918778.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.981, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918781.547, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918782.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.953, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918781.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.494, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918792.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918793.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918793.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.47, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918793.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.321, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.144, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.696, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918776.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.922, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918746.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.605, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918796.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918797.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918797.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.936, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918797.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.308, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918797.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.798, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918808.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918603.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 222.896, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918828.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918827.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.663, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918828.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918829.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918829.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918827.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.464, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918808.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.378, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918808.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.804, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918808.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 39.383, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918848.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918848.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918848.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.789, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918848.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.339, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918849.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918849.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918849.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918849.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918850.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918850.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918850.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918850.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918796.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.242, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918796.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 54.48, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918851.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918851.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918851.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.396, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918852.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918853.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918853.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918853.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.479, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918854.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918854.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918854.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918854.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918854.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918855.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918851.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.6, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918857.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918856.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918857.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918856.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.048, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918857.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918858.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918858.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918858.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918859.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918859.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918858.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.614, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918860.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918858.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.565, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918861.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918861.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918861.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918861.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918861.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.204, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918860.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.025, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918860.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.707, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918863.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918863.152, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918863.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918862.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.227, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918864.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.707, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918865.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918863.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.139, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918866.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.767, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918868.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918868.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.616, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918867.19, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.198, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918870.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918870.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918870.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.941, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918870.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918869.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.305, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918871.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.746, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918882.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918883.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918870.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.414, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918884.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918884.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918883.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918856.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.589, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918886.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918886.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918887.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918886.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.951, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918887.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918910.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918911.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918910.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918910.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.021, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918910.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.204, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918911.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918911.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918910.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.606, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918912.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918909.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.773, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918913.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918913.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.976, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918913.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.541, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918924.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918925.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918925.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918925.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.751, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.088, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.632, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.134, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918885.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 41.323, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918856.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 70.482, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918927.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918928.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918722.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 239.588, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918962.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918962.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.478, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918722.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 241.676, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 469.627, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918964.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918965.159, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.223, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918494.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 472.541, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918968.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.432, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918968.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918969.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918970.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918970.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918969.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.888, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918971.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918971.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918968.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.574, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918972.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918972.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918972.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.369, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918984.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918984.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918972.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.684, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918987.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918987.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918988.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.009, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918999.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918999.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918988.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.268, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918972.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.549, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919000.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919000.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.687, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994918971.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.57, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919002.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919002.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919002.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919003.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919003.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919003.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919004.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919004.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919002.136, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.532, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919005.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919005.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919005.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.169, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919016.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919016.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919005.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.365, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919017.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919017.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994918830.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 204.645, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919036.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919035.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919036.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919037.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919037.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919035.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.639, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919018.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.457, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919055.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919056.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919017.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.966, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919005.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.564, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919057.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919057.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919004.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 53.423, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919059.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919059.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919060.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919060.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919060.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.585, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919060.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.831, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919062.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919062.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919058.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.073, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919063.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919063.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918928.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 136.748, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918928.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 137.287, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918927.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 137.732, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919066.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919064.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.797, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919082.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919082.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919063.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.08, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919083.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919083.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919084.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919084.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919085.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919083.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.523, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919063.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.709, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919085.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919085.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919063.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.371, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919087.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919087.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919088.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919088.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919088.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919088.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.628, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919095.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919095.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919092.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.788, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919096.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.715, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919097.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919091.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.071, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919098.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919098.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919099.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919099.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919100.825, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919101.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919101.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919101.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.984, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919101.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.438, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919100.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.976, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919098.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.987, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919115.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919115.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.447, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919091.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.545, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919089.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.568, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919116.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919116.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919087.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.828, \"name\": \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919117.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919117.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919038.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 96.256, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919135.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919135.4, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.586, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919136.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919136.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919136.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919134.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.204, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919066.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.549, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919066.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.998, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919065.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 88.558, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919154.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919155.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.594, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919155.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.78, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919154.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.31, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.555, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.243, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919156.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.562, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918927.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 230.147, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994918927.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 230.343, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919158.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919159.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.526, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919160.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919160.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919161.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919157.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.184, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919163.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919163.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.412, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919163.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919162.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.075, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919163.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919165.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919164.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919164.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919165.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919165.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919164.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.589, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919166.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919164.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.534, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919167.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919166.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.211, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.716, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919168.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.914, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919170.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919170.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.556, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919169.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.938, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919171.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.985, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919173.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919173.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.769, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.895, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919173.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919173.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.707, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919172.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.197, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919174.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.148, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919176.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.582, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919188.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919189.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919175.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.379, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919190.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919190.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.63, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919189.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.861, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919162.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.545, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919191.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919191.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919193.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919192.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919193.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919192.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919194.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919196.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919196.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919196.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919196.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.695, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919195.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.897, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919197.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919196.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919195.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.048, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919197.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919195.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.909, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919198.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919198.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.347, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919210.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919210.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919198.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.181, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919211.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919211.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919211.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.65, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919192.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.898, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919192.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.583, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919191.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.196, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919191.461, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.451, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919213.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919213.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919214.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919214.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919215.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.521, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919218.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919218.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919215.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.735, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919219.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919219.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919220.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919222.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919222.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919220.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.286, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919215.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 7.24, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919222.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919214.59, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.308, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919223.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919223.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919223.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919213.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.312, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919225.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919225.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919227.475, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919227.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919227.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919226.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.917, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919227.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.634, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919228.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.805, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919229.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.285, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919228.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.967, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919230.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919228.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.858, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919231.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919231.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.12, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919231.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.659, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919242.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919243.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919243.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.526, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919243.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919226.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.342, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919226.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.933, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919225.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.458, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919224.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.642, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919162.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 82.336, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919245.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919246.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919137.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 112.057, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919250.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919250.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.707, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919251.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919252.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919252.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919250.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.571, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919246.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.346, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919246.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.78, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919245.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.271, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919271.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919272.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.598, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919271.951, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.859, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919271.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.377, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919273.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919273.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919273.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.466, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919272.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.765, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919275.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919275.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919275.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919275.206, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.674, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919276.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919276.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919276.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919275.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919245.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.32, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919245.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.556, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919277.637, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919277.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919277.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.51, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919277.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.324, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919278.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.145, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919279.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919277.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.054, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919281.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919281.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.339, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919281.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919280.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.99, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919281.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919282.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919282.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919282.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919283.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919283.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919282.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.027, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919299.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919282.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.081, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919301.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919301.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919301.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.449, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919302.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919302.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919301.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.7, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919300.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.565, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919304.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919303.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.263, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919304.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919304.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919304.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919304.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.944, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919305.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.859, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919307.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919307.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919307.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919307.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.754, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919307.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.877, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919308.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919308.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.71, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919308.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919306.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.232, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.544, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.624, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919311.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919311.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.132, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919311.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919309.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.502, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919253.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 74.802, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919328.967, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919328.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.591, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919329.588, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919330.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919329.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919328.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.093, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919330.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.607, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919344.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919343.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919344.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"collections.deque.popleft\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919347.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919347.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919343.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.883, \"name\": \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919351.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919353.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.303, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919354.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919354.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919354.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919353.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.133, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919353.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.965, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919355.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919352.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.55, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919357.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.963, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919351.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.582, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919369.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919369.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.509, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919370.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919370.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.41, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919371.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919371.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919371.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919372.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919371.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919377.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919378.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919382.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.335, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919382.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919379.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.686, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919385.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.429, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919387.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919378.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.685, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919388.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919389.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919389.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919389.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.228, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919389.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.631, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919388.546, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.049, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994919377.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.487, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919311.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 156.796, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919469.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919470.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919311.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 158.746, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919471.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.396, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919471.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.653, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919471.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.875, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919280.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 191.632, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919472.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919473.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919474.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919473.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919474.417, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919473.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919474.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919475.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919476.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919476.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919475.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.646, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919475.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919476.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919476.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919475.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.857, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919477.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919475.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.804, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919478.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919478.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.185, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919478.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.707, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919489.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919490.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919490.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919489.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919473.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.538, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919473.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.039, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919472.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.585, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919472.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.763, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919280.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 212.345, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919493.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919494.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919494.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.8, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919494.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.051, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919494.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.523, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919496.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919496.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.813, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919496.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.962, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919495.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.268, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.397, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.224, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.619, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919498.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.286, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919499.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919493.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.626, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919493.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.852, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919500.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919500.794, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919500.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.178, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.276, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.804, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919501.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919502.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919503.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919503.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919500.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.72, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919505.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919505.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919505.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919504.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919505.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919507.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919506.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919506.872, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.398, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919507.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919507.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919506.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.616, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919508.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919506.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.422, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919509.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919508.941, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.362, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919510.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.995, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919511.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.793, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.515, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919512.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.847, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919515.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.827, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919515.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919515.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.637, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919514.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.133, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919517.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919517.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.877, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.458, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919517.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919517.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919517.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919516.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.32, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919518.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.872, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919529.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919530.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919518.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.578, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919531.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.312, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919531.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.577, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919531.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.807, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919504.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 27.591, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919532.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919532.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919534.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919533.857, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919534.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919533.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919534.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.79, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.662, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919536.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919536.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919535.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.88, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919537.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919534.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.73, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919538.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919539.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.35, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919539.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.898, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919550.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919551.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919551.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.462, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919551.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.699, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919533.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.629, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919533.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.181, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919532.684, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.691, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919532.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.888, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919504.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.06, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919553.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919553.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919554.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919554.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919553.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.252, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919555.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919555.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.717, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919555.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.894, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919555.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.231, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919557.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919557.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919557.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919557.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.268, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919559.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.28, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919559.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.352, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919558.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919553.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.429, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919552.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.657, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919559.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919560.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919561.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919561.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919561.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919561.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.423, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919561.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.633, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919563.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919559.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.324, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919565.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919565.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919565.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919564.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.949, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919565.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919566.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919566.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919566.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919567.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919567.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919566.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.632, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919568.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919566.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.492, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.219, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919569.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.091, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919570.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919568.844, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.721, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919570.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919570.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.738, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919570.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.182, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919572.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919572.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919572.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919573.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919573.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919572.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.788, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919571.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.145, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919574.205, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.935, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919576.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919576.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919576.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.609, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919575.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.151, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919578.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919578.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919578.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919578.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.989, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919578.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919577.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.407, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919579.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.633, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919590.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919591.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919579.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.401, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919592.346, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.314, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919592.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919592.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919564.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.588, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919593.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919593.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919594.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919594.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919595.199, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919594.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.257, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919596.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919598.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919598.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919598.354, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919598.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.74, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919597.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.907, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919599.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919599.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919597.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.071, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919600.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919597.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.044, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919600.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919600.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.676, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919600.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.196, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919612.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919613.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919612.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919612.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919594.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.486, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919594.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.007, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919593.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.515, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919593.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.729, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919564.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.892, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919614.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919615.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919615.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.519, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919615.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.779, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919615.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.207, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919616.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919617.11, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.798, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919617.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.908, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919616.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.187, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.374, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.284, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.585, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.854, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919619.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919620.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919620.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919620.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.369, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919620.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.545, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919614.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.167, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919614.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.4, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.222, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.045, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919624.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919625.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919623.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.665, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919626.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919626.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919627.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919626.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.96, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919627.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.332, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919628.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.571, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919629.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919627.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.443, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919630.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919630.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919630.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919631.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919631.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919630.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.886, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919631.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919630.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.586, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.628, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919633.077, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.057, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.61, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919634.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.738, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919635.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.868, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919637.035, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.574, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.818, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919637.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919637.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.551, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919636.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.058, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.456, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919639.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919639.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.578, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919639.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919638.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.251, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919639.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.848, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919651.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919653.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919639.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.041, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919654.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919654.7, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.532, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919654.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.764, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919626.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.365, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919656.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919656.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919657.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919657.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919657.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919656.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.91, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919657.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919658.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919659.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919659.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919658.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.671, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919658.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.806, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919659.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919659.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919658.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.893, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919660.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919658.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.745, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919660.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919661.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.087, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919661.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.666, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919672.128, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919673.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919672.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919672.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.718, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919656.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.169, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919656.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.706, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919655.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.205, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919655.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.411, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919626.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.304, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919674.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919675.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919676.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.569, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919675.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.822, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919675.52, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.27, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919677.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919677.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.872, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919677.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.01, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919676.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.336, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919679.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919679.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919679.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919679.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.779, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919681.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919681.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.065, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919681.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.359, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919681.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.64, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919692.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919692.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919692.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.641, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919692.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.169, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919674.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.636, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919674.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.867, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919694.379, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919694.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919694.059, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919694.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919694.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919695.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919696.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919693.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.985, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919698.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919697.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.365, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919698.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919697.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.97, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919698.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919699.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919699.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919699.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919700.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919700.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.413, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919699.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.733, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919702.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919698.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.661, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919703.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919704.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919702.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.784, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919704.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.774, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919705.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919704.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.285, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919706.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.987, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919707.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.869, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.788, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919709.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919709.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.23, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.563, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919709.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919708.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.124, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919710.783, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919712.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919712.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919710.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.584, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919710.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.693, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919712.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919712.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919710.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.239, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919712.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919710.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.647, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919713.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.679, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919724.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919725.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919713.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.421, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919726.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919726.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919726.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.775, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919697.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.932, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919727.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919727.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919728.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919728.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.345, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919729.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919728.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.899, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919729.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.689, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.834, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919731.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919731.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919730.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.905, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919732.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919729.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.742, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919732.608, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919733.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.187, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919732.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.72, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919743.855, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919744.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919744.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.508, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919744.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919728.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.239, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919728.076, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.735, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919727.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.229, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919727.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.422, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919697.141, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.888, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919748.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919748.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919749.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.031, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919749.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.403, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919748.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.878, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919760.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919760.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919760.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919759.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.066, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919760.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919760.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.542, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.575, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919761.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919762.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919762.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919762.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919762.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919747.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.895, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919747.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.169, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919763.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919763.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919763.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919763.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.32, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919764.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919765.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.485, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919763.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.277, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919785.238, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919785.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919785.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919784.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.086, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919785.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919786.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919786.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919786.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919787.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919787.347, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.329, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919786.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.625, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919788.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919786.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.501, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.229, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919789.03, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.876, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919788.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.473, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.612, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919790.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.065, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.632, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919791.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.988, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919793.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919793.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919793.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919792.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.058, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919795.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919795.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919795.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919795.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.799, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919795.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919796.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919796.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919794.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.738, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919796.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919794.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.271, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.45, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919798.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.327, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919798.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919797.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.277, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919798.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.58, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919810.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919810.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919798.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.37, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919811.839, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919811.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.589, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919811.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.831, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919784.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.251, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919814.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919814.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919814.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.0, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919815.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919816.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919816.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919816.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919815.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919815.881, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.872, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919816.996, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919816.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919815.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.971, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919817.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919815.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.825, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919818.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919819.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.23, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919819.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.79, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919830.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.187, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919831.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919831.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.501, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919831.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.745, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.642, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.163, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919813.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.671, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919812.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.941, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919784.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.807, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919833.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919834.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919834.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919834.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.833, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919834.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.327, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919835.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919836.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.704, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919835.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.854, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919835.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.199, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.197, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919837.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.729, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.924, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919838.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.552, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919839.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919118.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 723.984, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919842.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919843.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919117.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 725.906, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919844.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919844.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919845.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.359, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919857.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919857.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919845.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.716, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919117.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 740.344, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919858.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919859.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.428, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919117.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 743.281, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919872.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.516, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919872.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919873.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919874.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.33, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919874.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919875.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.744, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919885.919, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919874.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.475, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919873.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.345, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919886.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919886.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919871.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.694, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919892.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919893.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.473, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919890.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.239, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919893.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.642, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919895.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919889.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.62, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919895.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919895.753, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.406, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919896.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919896.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919897.729, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919898.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919898.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919898.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.954, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919898.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.37, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919897.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.614, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919896.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.073, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919911.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919910.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919889.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.244, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919887.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.904, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919862.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.758, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919912.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919912.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919372.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 556.741, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919930.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919930.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.625, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919370.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 560.34, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919932.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919931.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919369.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 562.806, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919369.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 563.302, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919933.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919933.172, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919368.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 565.301, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919839.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.028, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919839.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.636, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919839.334, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 99.954, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919833.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.234, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919833.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.519, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919942.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919942.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919941.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.732, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919942.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919942.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.028, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919943.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.188, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.363, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919944.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919941.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.572, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919946.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919946.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919947.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919945.926, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.401, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919947.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919948.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919948.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919948.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919949.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919949.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919948.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.89, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919950.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919947.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.913, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.368, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919951.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.09, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919953.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919950.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.754, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919954.209, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919954.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919954.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919954.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919954.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919953.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.895, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919953.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.365, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.412, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919955.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.942, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.484, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919956.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.296, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.795, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.879, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919958.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919958.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.797, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919957.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.267, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.419, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919960.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919960.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.87, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919960.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919959.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.196, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919962.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.969, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919974.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919975.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919961.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.734, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919976.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919976.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.636, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919976.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.849, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919945.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.675, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919977.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919978.074, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919979.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919979.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919979.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919978.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.038, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919979.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919980.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919981.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919981.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919980.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.693, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919980.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.832, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919981.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919981.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919980.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.913, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919982.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919980.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.732, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919983.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919983.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.258, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919994.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919995.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919983.429, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.119, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919996.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919996.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919996.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.616, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919978.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.587, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919978.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.222, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919977.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.733, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919977.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.952, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919998.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919998.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919998.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919999.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994919934.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 68.521, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920005.582, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920007.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.426, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920008.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920008.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920008.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920007.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.702, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920006.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.763, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920010.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920006.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.359, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920012.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.944, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920005.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.623, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920026.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920026.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920027.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920027.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920027.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920028.112, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920028.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920028.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920028.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920055.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920056.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920059.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.275, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920060.078, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.359, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920057.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.038, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920060.744, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.606, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920082.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920056.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 26.614, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920083.677, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920084.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920084.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920000.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.959, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920102.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920102.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919999.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 103.891, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920103.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920103.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920105.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.737, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920105.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920106.017, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920104.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.438, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919999.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 106.838, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920106.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919998.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.739, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920107.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.165, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920106.879, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920107.585, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919997.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 110.383, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920108.865, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920109.104, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920110.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920110.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.72, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920112.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920109.796, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.562, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920112.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920113.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920114.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920114.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920113.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.757, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920113.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.905, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920114.731, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920114.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920113.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.237, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920115.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920112.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.076, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920116.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920116.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.181, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920116.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.766, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920128.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920129.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920129.415, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920129.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920109.542, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.643, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920109.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.26, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920108.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.934, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920108.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.177, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994919945.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 185.328, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920131.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920132.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920085.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.218, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920084.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.771, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920083.566, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 51.271, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920055.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 79.787, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920132.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.97, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920132.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.512, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920132.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.009, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920152.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920152.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.619, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920152.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.842, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920152.3, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.38, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920153.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920153.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920153.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920153.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.667, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920154.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920154.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920154.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.327, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920154.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.506, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920156.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920156.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.291, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920156.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920156.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.6, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920131.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.621, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920131.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.821, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920157.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.017, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920158.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.198, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.15, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920159.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920160.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920160.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920157.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.958, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920161.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920161.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920162.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920161.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.981, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920162.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920163.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920163.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.256, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920163.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920163.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920163.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.331, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920162.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.553, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920164.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920162.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.455, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920165.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920165.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.897, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920165.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.007, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920167.81, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.506, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920167.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 25.665, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920165.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.464, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920194.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920165.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.522, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920196.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920196.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920196.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.467, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920196.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920196.734, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920195.71, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.538, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920197.395, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920195.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.321, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920197.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920197.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.802, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920197.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.177, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920198.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.829, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920201.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920201.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920200.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.658, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920201.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920199.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.275, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.623, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.469, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920203.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.304, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.151, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920204.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920202.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.53, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920205.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.113, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920217.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920217.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920204.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.894, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920218.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920218.649, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.556, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920218.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.783, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920161.05, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.368, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.087, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920221.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920221.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920221.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.966, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920221.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920222.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920223.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920223.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920222.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920222.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.82, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920223.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920223.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920222.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.029, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920224.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920222.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.936, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920225.328, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920225.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.179, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920225.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.721, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920236.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920237.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920237.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920237.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.733, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.638, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.527, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.137, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920220.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.686, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920219.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.935, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920160.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.91, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920239.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920240.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919913.445, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 328.801, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920242.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920243.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919913.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 332.18, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920245.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920245.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920247.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.415, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920258.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920259.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920246.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.825, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919912.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 346.861, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920260.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920260.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994919912.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 349.536, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920264.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920264.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.582, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920264.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920265.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.261, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920265.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.425, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920266.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.896, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920276.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920265.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.412, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920264.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.867, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920277.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920277.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920263.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.922, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920282.294, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920282.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920280.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.892, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920283.474, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920284.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920279.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.013, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920285.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920285.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.415, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920285.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920286.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920287.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920287.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920288.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920288.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.913, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920288.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.364, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920287.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.537, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920285.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.972, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920300.358, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920300.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.431, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920279.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.424, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920278.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.857, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920262.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 38.321, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920301.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920302.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920029.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 290.985, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920321.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920321.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.677, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920027.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 294.636, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920322.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920322.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920025.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 297.134, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920025.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 297.442, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920323.777, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920323.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920025.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 298.627, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920240.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.511, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920240.471, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 101.983, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920240.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 102.459, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920342.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920343.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.634, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920343.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.862, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920342.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.402, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920344.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920344.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920344.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.611, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920344.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.931, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.466, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920346.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920346.086, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920345.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920239.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.138, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920239.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 107.365, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920347.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920347.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920347.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920347.87, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920347.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.019, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920349.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.018, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920348.979, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.341, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.897, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.846, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920350.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920351.071, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920351.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920346.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.361, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920352.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920352.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920352.952, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920352.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.044, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920353.28, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920354.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920354.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920354.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.487, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920355.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920354.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920353.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.839, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920356.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.192, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920353.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.882, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.207, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920357.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.009, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920358.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920356.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.778, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920359.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920359.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920358.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920359.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920359.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920358.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.704, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920359.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920358.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.26, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.575, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920361.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920360.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.065, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920362.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.003, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920364.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.309, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.772, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.889, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920364.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920364.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.236, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.722, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920365.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920363.311, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.268, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.094, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920365.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920365.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.435, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920365.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.855, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920366.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920365.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.189, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920367.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.182, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920379.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920379.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920367.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.939, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920380.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920380.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.534, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920380.616, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.768, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920351.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.717, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920382.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920382.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920383.618, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920383.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.39, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920383.893, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920383.007, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.029, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920384.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920385.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920386.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920386.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920385.121, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.907, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920385.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.056, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920387.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920387.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920384.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.204, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920388.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920384.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.068, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920388.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920389.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.24, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920400.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920400.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.135, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920388.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.055, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920401.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920401.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920401.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.607, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920382.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.633, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920382.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.271, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920382.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.845, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920381.978, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.077, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920403.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920403.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920404.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920404.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920324.214, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 83.342, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920409.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920411.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920412.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920412.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920412.285, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920411.663, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.954, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920411.013, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.794, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920412.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920410.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.283, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920414.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.639, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920409.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.543, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920426.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.149, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920427.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920427.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920427.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920428.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920427.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.915, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920427.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.596, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920428.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920426.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.835, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920429.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920426.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.87, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920432.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920432.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.96, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920435.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920435.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920435.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920434.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920432.726, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.814, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920435.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920432.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.414, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.158, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920432.18, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.083, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.756, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920437.842, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920437.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920437.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920437.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.057, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.76, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.098, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920438.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.508, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920436.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.982, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920440.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920440.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920440.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920440.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.405, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.735, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.376, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920441.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.next\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.625, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.673, \"name\": \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920445.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920439.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.986, \"name\": \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920447.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920447.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920448.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920448.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920448.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.921, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920449.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920449.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920450.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920449.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920405.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 62.15, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920467.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920468.08, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.399, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920404.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 64.002, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920470.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920470.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.319, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920471.658, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.756, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920482.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920482.933, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920471.296, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.062, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920404.622, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.855, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920483.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920404.051, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 79.934, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920484.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920484.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920485.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.661, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920403.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 82.613, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920486.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920486.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920488.129, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920487.936, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.376, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920488.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.139, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920487.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.18, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920488.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920489.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920490.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920490.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920489.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.734, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920489.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920490.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920490.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920489.441, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.227, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920492.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920489.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.201, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920492.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920493.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.39, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920492.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.935, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920504.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920505.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.194, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920504.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920504.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.748, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920487.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.524, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920486.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.131, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920486.273, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.845, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920486.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.11, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920351.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 154.556, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920507.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920507.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920511.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920512.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920517.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920518.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920514.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.495, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920518.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.187, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920522.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920514.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.569, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920523.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920523.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920524.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920508.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.345, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920507.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 32.948, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920507.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.423, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920541.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920541.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.514, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920541.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.744, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920541.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.278, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920542.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920542.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920542.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920542.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.54, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.181, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.538, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.278, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920543.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.511, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920506.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.504, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920506.739, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.724, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.477, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920545.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.245, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.823, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920546.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.556, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.434, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.38, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.597, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920548.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920544.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.34, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920550.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920550.259, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.417, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920550.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920549.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.09, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920551.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920552.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920552.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920551.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920552.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920552.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920551.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.635, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920553.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920551.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.569, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.782, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.31, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920554.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.342, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.02, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.573, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920555.58, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.974, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920557.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920557.041, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.981, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920557.248, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920557.222, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.908, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920557.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.305, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920556.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.81, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920577.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920577.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920577.493, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920578.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920578.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920577.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.012, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920579.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920576.518, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.28, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920580.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920581.174, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920581.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920580.647, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.895, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920580.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.036, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920581.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920581.756, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920580.371, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.018, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920582.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920580.027, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.931, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.444, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.535, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920584.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920584.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.113, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920584.64, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920583.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.639, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920524.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 76.832, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920524.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.311, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920522.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.742, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920511.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 90.604, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920603.529, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920603.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920606.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920606.743, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920604.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.465, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920607.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.035, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920609.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920604.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.948, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920610.451, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920610.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920611.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920585.088, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.614, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920617.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920618.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920584.959, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 33.601, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920621.036, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920620.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.702, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920620.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.941, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920549.583, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 72.236, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920622.648, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920622.851, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920624.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920623.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.404, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920624.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920623.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920624.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920625.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920626.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920626.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.262, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920625.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.804, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920625.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.956, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920626.781, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920626.705, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.318, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920625.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.096, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920627.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920625.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.969, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920628.157, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920628.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.531, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920628.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.081, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920639.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920640.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920640.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.483, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920640.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.721, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920623.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.113, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920623.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.679, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920622.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.285, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920622.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.535, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920549.44, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 92.525, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920642.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920643.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920643.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.281, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920643.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.666, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920643.258, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.174, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920654.902, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920611.519, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 77.566, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920611.322, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.004, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920610.39, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 79.156, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920603.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 86.814, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920691.655, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920691.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920694.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920695.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.334, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920692.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.474, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920696.641, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.855, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920698.917, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920692.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.839, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920699.404, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920699.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920700.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920655.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.624, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920655.176, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.07, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920654.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.649, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920716.817, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920304.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 429.957, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920734.573, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920735.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.407, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920303.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 431.81, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920736.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920736.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920717.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.4, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920717.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.83, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920716.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 37.394, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920754.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920754.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.579, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920754.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.809, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920754.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.338, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920755.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920755.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920755.866, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920755.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.664, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920642.559, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 113.931, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920642.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 114.157, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920757.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920757.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920757.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920757.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920758.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920759.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920759.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920759.352, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920759.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.297, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920759.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.476, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920760.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920760.816, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920761.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920761.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920760.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.232, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920761.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920761.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920756.884, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.67, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920762.997, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920762.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920763.269, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920762.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.048, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920763.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920764.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920764.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.258, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920764.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.393, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920765.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.212, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920765.153, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920764.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.671, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920766.302, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920763.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.659, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.193, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.397, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920766.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.79, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920767.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920766.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.317, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.486, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.564, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.249, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920768.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.208, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.916, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.581, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920770.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920769.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.122, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920771.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.166, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920771.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.675, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920771.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.051, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.865, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.967, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920774.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920774.278, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920773.04, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.731, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920774.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920772.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.231, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.442, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.974, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.857, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920776.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920775.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.238, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920776.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.017, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920788.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920789.103, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920776.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.825, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920790.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.351, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920790.307, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920790.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.881, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920762.122, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.034, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920791.909, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920792.114, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920793.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920793.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920793.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920792.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.922, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920793.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920795.011, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.975, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.122, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920796.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920796.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.32, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.276, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920797.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920794.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.126, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920798.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.131, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920798.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.88, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920798.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.431, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920809.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920810.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920810.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920809.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.709, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920792.439, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.312, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920792.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.873, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920791.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.43, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920791.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.691, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920762.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.383, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920812.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920812.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920737.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 108.251, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920846.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920846.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.307, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920737.301, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 109.975, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920303.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 543.743, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920847.824, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.472, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920848.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.032, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920301.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 547.903, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920851.315, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.373, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920851.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.609, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920852.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920852.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920852.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.439, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920853.125, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.084, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920863.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920852.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.566, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920852.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.983, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920864.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920864.402, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920850.862, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.081, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920865.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.973, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920850.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.925, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920866.934, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920867.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920813.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 70.096, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920813.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 71.881, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920812.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 72.352, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920885.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920700.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 211.138, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920700.194, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 211.705, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920699.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 212.901, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920691.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 221.289, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920914.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920914.62, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920917.631, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920918.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920915.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.751, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920918.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.938, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920921.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920915.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.295, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920921.643, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920922.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.288, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920922.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920885.914, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.462, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920885.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.879, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920885.276, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 53.457, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920939.228, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920867.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.444, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920955.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920956.211, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920867.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 89.344, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920957.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920957.602, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.311, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920450.388, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 525.001, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920976.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.292, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920976.108, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.528, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920447.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 528.812, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920977.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920977.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.36, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920446.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 531.023, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920446.68, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 531.262, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920978.314, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920978.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.277, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920446.411, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 532.107, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920979.873, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920979.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920980.45, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.255, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920980.385, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920980.871, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920981.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920981.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920981.73, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920981.656, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.849, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920939.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.349, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920939.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 60.814, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920938.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 61.439, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921000.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920958.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 57.929, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921016.949, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921017.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.323, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920958.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.423, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920867.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 150.643, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921018.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.445, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921018.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.226, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994920866.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 153.624, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921022.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.367, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921022.728, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.627, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921023.762, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921024.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921024.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921025.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.077, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921035.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.221, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921023.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.911, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921023.629, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.389, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921036.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921036.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921022.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.691, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921037.422, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.172, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921021.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.094, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921039.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921039.571, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921040.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.945, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921060.384, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921060.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.197, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921039.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.211, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921061.356, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921061.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920922.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.163, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920922.654, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 155.613, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920921.562, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 156.931, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994920914.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 164.852, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921080.433, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921080.702, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921083.255, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921083.581, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921081.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.229, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921084.2, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.718, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921086.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921081.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.393, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921088.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921088.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.205, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921089.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921001.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 103.997, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921001.186, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 104.47, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921000.699, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 105.036, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921106.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921106.644, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.185, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921106.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.585, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921106.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.163, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920811.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 305.371, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994920811.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 305.604, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921118.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921118.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921118.195, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.606, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921118.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921118.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.382, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.313, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.555, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.968, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921119.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.179, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.399, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.213, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.533, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.769, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.226, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921120.948, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.103, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921117.883, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.327, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921122.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921122.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.38, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921122.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921122.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.03, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921123.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921124.326, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921124.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921124.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.381, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921126.097, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921126.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921123.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.006, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921127.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.21, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921123.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.035, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921128.22, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921128.187, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921128.117, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.214, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921128.524, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921128.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921127.988, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.913, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.134, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921127.766, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.58, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.856, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.793, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.208, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921130.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921130.082, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.613, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921130.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921129.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.194, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921130.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.725, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921131.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921130.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.145, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.297, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.219, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.46, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.599, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921132.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.964, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.506, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.95, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.455, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.81, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.896, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921134.491, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921134.432, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.674, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921135.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921133.096, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.222, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.442, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.468, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921138.091, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921138.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.263, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.124, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921138.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921137.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.61, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921138.98, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.132, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921150.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.151, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921151.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.136, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921138.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.877, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921152.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.308, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921152.606, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.592, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921152.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.839, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921121.745, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 31.672, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921154.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921154.277, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921155.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921155.261, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.355, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921155.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.11, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921154.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.936, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921156.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921157.022, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921157.375, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921157.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921156.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.701, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921156.869, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.838, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921157.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921157.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.31, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921156.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.952, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921158.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921156.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.806, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921159.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921159.714, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.111, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921159.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.635, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921170.381, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921171.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921171.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.48, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921171.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.72, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921154.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.29, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921154.512, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.86, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921153.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.475, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921153.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.708, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921121.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 52.158, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921174.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921175.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921175.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.944, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921175.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.301, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921175.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.73, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921186.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920983.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 220.162, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921204.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.504, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921204.67, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.773, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920980.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 225.284, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921206.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.102, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921206.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920979.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 227.256, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920979.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 227.47, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921207.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921207.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.295, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994920979.123, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 228.364, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921208.459, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.233, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921208.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.354, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921209.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921209.111, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921209.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.604, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921211.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921211.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921211.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921211.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.225, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921089.481, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 138.937, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921089.281, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 139.49, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921088.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 140.67, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921080.234, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 149.164, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921186.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.667, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921186.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.139, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921186.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 59.698, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921246.264, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921246.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.285, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921246.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.67, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921246.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.225, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921257.75, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.368, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.531, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921257.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.04, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.808, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.283, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.353, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921258.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.53, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921174.392, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 84.874, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921174.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 86.281, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921261.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921261.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921261.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.672, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.561, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.418, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.067, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.018, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921262.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.231, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.203, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.391, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.179, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.556, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.2, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921263.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921260.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.199, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921265.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921265.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.377, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921265.799, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921264.938, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921266.113, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921267.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921267.166, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921267.063, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921267.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.247, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921267.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.392, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921266.712, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.714, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921268.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921266.414, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.658, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.611, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.958, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.915, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921271.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921269.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.619, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.682, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921272.029, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.127, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.523, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.154, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.694, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.058, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921273.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.907, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.449, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.626, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921274.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.832, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.878, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.448, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.798, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921276.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921276.367, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.282, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.634, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921275.133, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.186, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.837, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.937, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.388, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921278.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921278.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.636, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.961, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921278.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921277.485, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.394, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921279.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.602, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921292.079, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921292.527, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921279.038, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.852, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921293.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.302, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921293.687, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921293.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921264.698, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 29.774, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.127, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921296.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921296.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921296.725, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.968, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921297.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921298.039, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921298.372, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921298.286, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921297.977, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.703, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921297.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.858, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921298.975, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921298.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.304, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921297.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.949, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921299.88, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921297.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.829, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921300.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921300.758, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.156, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921300.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.691, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921311.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921312.421, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921312.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.461, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921312.151, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.7, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.673, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.319, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.869, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921295.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.418, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921294.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.63, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921264.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.019, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921314.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.126, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921314.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921062.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 255.359, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921318.329, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.228, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921318.802, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.299, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921062.143, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 257.207, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921039.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 279.861, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921319.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921320.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.815, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921039.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 282.254, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921325.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921325.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.645, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921326.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921326.586, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.251, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921326.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.436, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921327.267, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.125, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921337.74, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921326.341, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.726, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921326.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.158, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921338.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921338.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.395, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921324.784, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.327, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921339.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.826, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921324.42, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.055, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921340.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921341.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.064, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921315.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.053, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921315.146, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.521, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921314.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 42.966, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921358.21, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921358.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.605, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921358.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.77, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921358.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.279, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921359.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921359.567, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921359.536, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.37, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921359.366, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.565, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.044, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.346, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921359.976, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.631, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.838, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.317, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921360.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.492, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921314.119, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.124, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921313.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.318, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.193, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.095, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.216, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921361.905, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.493, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.202, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.898, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921362.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921363.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921363.163, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921364.764, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921364.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.163, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921364.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.358, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921364.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.24, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.22, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.416, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.564, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921365.787, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921361.685, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.403, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921367.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921367.242, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.372, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921367.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921366.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.998, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921368.008, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921369.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921369.014, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921368.904, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921369.565, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.188, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921369.472, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.333, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921368.549, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.644, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921370.56, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921368.283, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.536, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.509, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.137, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.405, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.234, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921371.245, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.797, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921370.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.401, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.822, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.797, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.078, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.971, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.584, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921372.487, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.94, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.327, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.395, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921375.237, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.063, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921375.185, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.876, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921375.595, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921373.483, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.219, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.115, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.081, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.043, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.275, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921375.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921375.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.912, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921377.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921377.713, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921377.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921377.254, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.777, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921377.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.885, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921378.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921378.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.765, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921378.985, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921376.818, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.374, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.662, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.812, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.635, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.429, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921380.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921380.09, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.118, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.497, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.816, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921380.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921379.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.228, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921380.858, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.765, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921392.473, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.15, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921392.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921380.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.569, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921394.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921394.105, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.543, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921393.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.776, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921366.57, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.309, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921395.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921395.722, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.054, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921396.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921396.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.385, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921398.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921396.331, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.376, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921398.966, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921400.054, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921400.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.073, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921400.309, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921399.998, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.697, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921399.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.849, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921400.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921400.908, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921399.589, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.977, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921401.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921399.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.866, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921402.253, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921402.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.116, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921402.501, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.652, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921413.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921414.387, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921414.274, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.471, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921414.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.708, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921396.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.949, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921395.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.521, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921395.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.064, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921395.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.271, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921366.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.188, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921416.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921416.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921341.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 106.575, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921448.6, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.177, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921448.987, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.265, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921341.423, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 108.095, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921449.785, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921450.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.3, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921451.023, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.711, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921451.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921451.947, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921450.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.528, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921341.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 110.958, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921452.492, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921452.828, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.639, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921340.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 112.826, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921454.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.246, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921454.709, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.453, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921455.498, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921455.807, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.215, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921455.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.394, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921455.65, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.595, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921455.427, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.149, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921457.945, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.087, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921457.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.29, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921454.447, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.799, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921458.484, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.549, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921454.182, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.965, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921459.504, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921459.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921460.053, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.813, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921470.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921471.308, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.172, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921459.92, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.807, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921471.935, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921472.135, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921212.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 276.575, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921489.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921489.603, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.607, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921209.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 281.339, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921491.066, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.107, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921490.836, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921208.247, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 283.181, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921208.148, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 283.35, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921491.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921491.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.34, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921207.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 284.205, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.185, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.362, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.607, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921492.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.058, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921492.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.228, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921493.918, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921492.454, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.634, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.117, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.479, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921495.061, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.452, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921495.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.063, \"name\": \"_thread.allocate_lock\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921496.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921496.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.111, \"name\": \"collections.deque.append\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921497.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.093, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921497.221, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921473.049, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 40.496, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921513.681, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921514.026, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921472.697, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 43.061, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921459.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 56.081, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921516.218, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921516.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.642, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921459.373, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 58.056, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921518.91, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.287, \"name\": \"_thread.lock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921518.788, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.503, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921519.634, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921520.047, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.218, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921519.965, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.403, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921520.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.514, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921530.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"collections.deque.remove\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921519.813, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.949, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921519.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.327, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921531.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921531.191, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921518.468, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.195, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921535.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.273, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921536.351, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921533.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.999, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921537.208, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.641, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921538.27, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921533.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.212, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921539.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.198, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921538.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.391, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921539.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.072, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921539.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921541.009, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921541.305, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921541.962, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.038, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921542.085, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.711, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921541.927, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.107, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921540.954, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.265, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921539.554, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.824, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921553.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921553.805, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.448, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921532.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.725, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921531.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.816, \"name\": \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921518.215, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 36.661, \"name\": \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921555.336, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921555.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921497.675, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 90.141, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921588.551, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.27, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921588.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.491, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.84, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 94.191, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921589.669, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"_thread.lock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921589.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.357, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 97.282, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 97.472, \"name\": \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921592.165, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921591.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921494.173, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 98.221, \"name\": \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921417.362, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 183.044, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921417.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 183.454, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921416.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 183.941, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921601.272, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921601.664, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.566, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921601.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.801, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921601.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.308, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921602.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921602.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.259, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921602.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921602.437, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.559, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.144, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.262, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.26, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.379, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.551, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.861, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.244, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921603.696, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.502, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921416.161, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 188.147, \"name\": \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921416.006, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 188.339, \"name\": \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921604.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.476, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.888, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921605.755, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.109, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.048, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.306, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.557, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.496, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.704, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.108, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.659, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.196, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921606.889, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.095, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921608.343, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921608.291, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.106, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921608.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921608.535, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921608.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921604.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.047, \"name\": \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921610.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921609.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.416, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921610.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921609.478, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.044, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921610.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921611.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.076, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921611.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921611.679, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.387, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921612.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921612.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.322, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921611.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.695, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921613.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.254, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921611.0, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.727, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.419, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.168, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.338, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.282, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.789, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.723, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.206, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921614.164, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.02, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921615.438, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.074, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921613.921, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.673, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.169, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.039, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.128, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.073, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.223, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.431, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.083, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.386, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921615.93, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.835, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921616.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921615.754, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.422, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.109, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.526, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.167, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.811, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.767, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.17, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.407, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.673, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.225, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.049, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921617.29, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.053, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.627, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.584, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.827, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.059, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.801, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.969, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.525, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.86, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921635.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921618.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 17.76, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921637.511, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.176, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921638.046, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921637.876, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.343, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921637.452, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.986, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921637.339, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.132, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921638.798, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.182, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921638.708, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921637.016, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.368, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921639.666, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.224, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921636.548, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.457, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.692, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.901, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.199, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.443, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.561, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921641.231, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921641.202, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.444, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.061, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921641.69, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921640.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.679, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921642.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.42, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921654.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921654.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921642.042, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.21, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921656.241, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.289, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921656.13, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.571, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921655.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.825, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921609.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 47.691, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921657.539, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921657.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921658.911, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921658.736, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.357, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921659.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921658.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.915, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921659.458, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.43, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.761, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.676, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.207, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.378, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.71, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.266, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.853, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921661.413, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.157, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921661.335, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.305, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921660.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.472, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921663.913, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.138, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921659.746, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.393, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921664.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921664.833, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.151, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921675.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921676.279, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.146, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921664.558, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.043, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921677.499, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.127, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921677.41, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.386, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921677.246, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.618, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921658.167, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.856, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921657.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 20.523, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921657.443, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.161, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921657.323, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 21.356, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921679.223, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921679.155, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.328, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921679.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921679.989, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.067, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921592.815, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 90.505, \"name\": \"builtins.print\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921685.942, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921695.514, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.597, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921702.639, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.315, \"name\": \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921706.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921713.317, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.316, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921713.864, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.576, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921707.923, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.653, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921714.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.34, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921716.819, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.337, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921707.256, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.032, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921717.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.238, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921717.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.498, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921718.646, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.085, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921718.86, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921719.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.119, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921720.192, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.209, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921720.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921720.89, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.596, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921720.701, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 13.018, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921719.778, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.124, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921718.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.597, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921734.719, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921734.488, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.486, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921706.832, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 28.35, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921736.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921737.318, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.145, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921739.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921680.757, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 78.912, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921759.97, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.227, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921760.569, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.401, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921680.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 80.921, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921761.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.141, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921761.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.293, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921763.055, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.688, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921763.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921763.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921762.632, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.485, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921680.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 83.977, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921764.376, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921679.707, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 84.844, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921765.138, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921764.915, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.465, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921765.683, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.753, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921678.9, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 87.58, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921767.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.09, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921767.226, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921768.77, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921768.544, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.374, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921768.999, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.122, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921768.003, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.187, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921769.36, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921770.505, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921770.943, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921770.863, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.201, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921770.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.771, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921770.344, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.917, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921771.563, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921771.477, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.313, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921769.983, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.247, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921772.619, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.156, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921769.657, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.209, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921773.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921773.661, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.669, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921774.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921775.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.121, \"name\": \"list.append\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921773.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.956, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921776.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921775.991, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921775.874, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.601, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921767.751, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.853, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921767.482, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 9.54, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921766.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.258, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921766.688, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.452, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921778.773, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921778.689, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.336, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.408, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.835, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.361, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921780.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921780.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.082, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.633, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.894, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921780.601, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921780.721, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.094, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921781.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.347, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921781.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.026, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921781.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921780.956, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.73, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.185, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921781.853, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.071, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921779.204, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.773, \"name\": \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.227, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.084, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.217, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.394, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.175, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921778.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.078, \"name\": \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.78, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.046, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.885, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.503, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.361, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.237, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.653, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.554, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.821, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.355, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.534, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.48, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.144, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.244, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.521, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.057, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.848, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.171, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921784.107, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.152, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921785.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.1, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.96, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.729, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921785.737, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921786.001, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.383, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921785.892, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.621, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921786.678, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.104, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921787.116, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921787.069, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.325, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921786.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.438, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921783.083, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.44, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.994, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.777, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.044, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921782.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.159, \"name\": \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921609.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 179.776, \"name\": \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921789.507, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.602, \"name\": \"_queue.SimpleQueue.put\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921801.183, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.14, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915309.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6491.919, \"name\": \"Pool._handle_workers (/usr/lib/python3.12/multiprocessing/pool.py:506)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915303.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6499.298, \"name\": \"Thread.run (/usr/lib/python3.12/threading.py:999)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921804.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.173, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921805.131, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.191, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994921803.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.923, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915241.089, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6564.449, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\"}, {\"pid\": 222282, \"tid\": 222289, \"ts\": 81994915235.973, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6569.661, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921837.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.152, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921837.598, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921841.826, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.389, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921842.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.371, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921839.53, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.482, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921843.312, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.544, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921844.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.266, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921838.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.981, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921845.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.756, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921844.99, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.986, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921847.425, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.088, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921847.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921848.867, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921849.268, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921849.992, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921850.126, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.676, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921849.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.122, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921848.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.374, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921847.252, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.112, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921862.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.161, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921861.829, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.49, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921838.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 24.512, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921863.092, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921863.717, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.098, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921863.929, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.068, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921866.304, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.129, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921866.652, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.301, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921864.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.324, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921867.319, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.433, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921868.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.181, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921864.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.096, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921868.537, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.092, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921868.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921869.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.044, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921556.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 330.217, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921886.759, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.23, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921887.249, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921555.806, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 332.093, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921888.293, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"_io.BytesIO.getvalue\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921888.528, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.269, \"name\": \"_struct.unpack\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921889.711, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.885, \"name\": \"posix.read\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921890.651, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.058, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921890.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.25, \"name\": \"_io.BytesIO.write\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921889.295, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.93, \"name\": \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921555.72, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 335.591, \"name\": \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921891.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.411, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921892.098, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.713, \"name\": \"_pickle.loads\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921555.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 337.789, \"name\": \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921893.955, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.125, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921894.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.306, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921894.928, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.036, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921895.899, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.096, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921896.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921898.068, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921897.718, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.56, \"name\": \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921898.389, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.147, \"name\": \"select.poll\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921897.004, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.629, \"name\": \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921898.895, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.047, \"name\": \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921900.216, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"builtins.isinstance\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921900.749, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.052, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921900.609, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921900.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.958, \"name\": \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921899.995, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.104, \"name\": \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921901.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.241, \"name\": \"type.__new__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921901.47, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.482, \"name\": \"<lambda> (<string>:1)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921899.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.955, \"name\": \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921902.953, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.211, \"name\": \"select.poll.register\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921899.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.026, \"name\": \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921903.495, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.332, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921904.457, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.708, \"name\": \"select.poll.poll\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921904.005, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.509, \"name\": \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921916.907, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.18, \"name\": \"time.monotonic\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921917.925, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.253, \"name\": \"dict.clear\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921917.795, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.684, \"name\": \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921917.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.933, \"name\": \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921896.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.194, \"name\": \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921896.299, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 22.979, \"name\": \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921895.668, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 23.706, \"name\": \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921919.779, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921920.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915973.178, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5947.223, \"name\": \"Pool._handle_results (/usr/lib/python3.12/multiprocessing/pool.py:573)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915966.984, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5956.058, \"name\": \"Thread.run (/usr/lib/python3.12/threading.py:999)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921924.63, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.164, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921925.325, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994921923.594, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.979, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915945.772, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5979.867, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\"}, {\"pid\": 222282, \"tid\": 222291, \"ts\": 81994915945.436, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5980.265, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921870.847, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 86.393, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921869.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 88.387, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921868.489, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 89.509, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921863.572, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 94.893, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921959.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921959.538, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921962.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.281, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921963.26, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.342, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921960.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.915, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921963.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.475, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921964.809, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.242, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921960.06, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.073, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921965.359, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.105, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921965.732, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.294, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921966.428, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.069, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921966.587, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 10.693, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921966.393, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.098, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921965.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 12.37, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921958.993, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 18.957, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921978.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921978.774, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.061, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921981.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.142, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921981.462, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.297, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921979.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.224, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921982.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.384, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921982.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921979.124, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.913, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921983.239, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921983.502, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.189, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921984.057, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.056, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921984.213, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.622, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921984.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.915, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921983.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.785, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921978.333, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.725, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921985.284, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.043, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921985.383, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921986.364, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921986.51, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.186, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921985.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.991, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921986.845, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.174, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921987.139, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.08, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921985.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.924, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921988.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921988.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.079, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921988.963, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921989.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.35, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921988.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.495, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921988.532, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.939, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921985.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.329, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921989.727, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921989.82, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921990.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921990.944, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.195, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921990.189, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.994, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921991.271, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.203, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921991.614, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.086, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921990.002, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.737, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921991.83, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.034, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921991.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.124, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921992.236, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921992.324, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.264, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921992.212, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.422, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921991.8, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.867, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921989.628, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.109, \"name\": \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921993.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915784.957, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6208.42, \"name\": \"Pool._handle_tasks (/usr/lib/python3.12/multiprocessing/pool.py:527)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915781.162, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6212.86, \"name\": \"Thread.run (/usr/lib/python3.12/threading.py:999)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921995.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.169, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921995.887, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_thread.RLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994921994.349, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.807, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915748.342, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6247.916, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\"}, {\"pid\": 222282, \"tid\": 222290, \"ts\": 81994915747.912, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6248.426, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921742.037, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 385.839, \"name\": \"_multiprocessing.SemLock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922130.101, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.099, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922133.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.175, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922134.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.123, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922142.435, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.155, \"name\": \"_thread.lock.locked\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922143.177, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.363, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922142.062, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.573, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922132.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 11.083, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922129.465, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.743, \"name\": \"Thread.is_alive (/usr/lib/python3.12/threading.py:1220)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921738.969, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 405.437, \"name\": \"Pool._help_stuff_finish (/usr/lib/python3.12/multiprocessing/pool.py:671)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922145.316, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.027, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922145.752, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.349, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922146.217, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.053, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922146.508, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_thread.lock.locked\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922146.894, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.084, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922146.424, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 48.567, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922145.516, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 49.617, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922144.896, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 50.744, \"name\": \"Thread.is_alive (/usr/lib/python3.12/threading.py:1220)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922195.964, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.298, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922202.118, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.423, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922202.903, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.57, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922198.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 4.743, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922204.019, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.121, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922205.776, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.42, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922197.868, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 8.453, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922206.982, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.252, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922206.841, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.479, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922207.791, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.143, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922208.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.065, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922209.233, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922209.693, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.338, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922210.645, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.048, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922210.782, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.788, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922210.469, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.248, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922209.17, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.688, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922207.596, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.43, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922213.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.12, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922213.353, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.382, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922197.154, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 16.779, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922215.615, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.235, \"name\": \"dict.copy\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922216.033, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.321, \"name\": \"dict.update\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922214.733, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.694, \"name\": \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922216.593, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.326, \"name\": \"ForkingPickler.dump\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922217.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.162, \"name\": \"_io.BytesIO.getbuffer\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922214.521, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.824, \"name\": \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922217.612, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.132, \"name\": \"_multiprocessing.SemLock.__enter__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922217.531, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.274, \"name\": \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922217.961, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922218.093, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.025, \"name\": \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922218.604, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922218.715, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"_struct.pack\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922219.012, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"builtins.len\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922219.102, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.459, \"name\": \"posix.write\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922218.986, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.651, \"name\": \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922218.552, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.154, \"name\": \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922217.906, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.887, \"name\": \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922220.021, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.05, \"name\": \"_multiprocessing.SemLock.__exit__\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922219.922, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.184, \"name\": \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922214.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 5.893, \"name\": \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922220.849, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.153, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922221.695, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.183, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922221.513, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922225.064, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.051, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922225.35, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.066, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922225.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.19, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922225.882, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.638, \"name\": \"_thread.lock.acquire\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922226.671, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.148, \"name\": \"_thread.lock.release\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922227.034, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.089, \"name\": \"_thread.lock.locked\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922227.292, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.158, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922226.972, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.529, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922225.703, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.865, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922224.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.927, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922228.149, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.655, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922229.072, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.06, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922229.843, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922230.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.812, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922230.196, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.476, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922229.672, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.068, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922233.642, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.045, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922238.37, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 14.642, \"name\": \"posix.kill\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922237.763, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15.345, \"name\": \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922234.251, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.01, \"name\": \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922233.453, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 19.9, \"name\": \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922253.891, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.07, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922254.321, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.743, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922254.147, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.012, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922253.765, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.447, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922255.592, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922256.517, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.204, \"name\": \"posix.kill\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922256.257, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.538, \"name\": \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922255.834, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.012, \"name\": \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922255.464, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.424, \"name\": \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.106, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.265, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.402, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.512, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.015, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.766, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.939, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.042, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922260.232, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.877, \"name\": \"posix.kill\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922260.16, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.988, \"name\": \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922260.056, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.171, \"name\": \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922259.875, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.375, \"name\": \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922262.401, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922262.577, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.348, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922262.545, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.424, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922262.33, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.685, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922263.134, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922263.337, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.723, \"name\": \"posix.kill\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922263.288, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.823, \"name\": \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922263.235, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.168, \"name\": \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922263.081, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 3.368, \"name\": \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922266.568, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.023, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922266.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.378, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922266.686, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.524, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922266.515, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.724, \"name\": \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922267.377, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922267.553, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.767, \"name\": \"posix.kill\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922267.522, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.877, \"name\": \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922267.467, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.961, \"name\": \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922267.303, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.165, \"name\": \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922269.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.062, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922270.14, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922270.075, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.24, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922270.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.04, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.099, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.029, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.065, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.116, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.13, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922270.543, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.999, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.674, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.021, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.792, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.03, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.768, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.091, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.032, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.024, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.168, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"_thread.get_ident\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.142, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.348, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.075, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922271.94, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.522, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.576, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.115, \"name\": \"builtins.hasattr\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922272.831, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922273.932, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.037, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922274.229, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.257, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922274.852, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.356, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922274.803, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.481, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922273.747, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.594, \"name\": \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922276.456, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.028, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922276.298, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.366, \"name\": \"BaseProcess.ident (/usr/lib/python3.12/multiprocessing/process.py:234)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922277.621, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.02, \"name\": \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922281.886, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.032, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922282.12, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.272, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922289.85, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1250.049, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923542.494, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.263, \"name\": \"posix.waitstatus_to_exitcode\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922289.66, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1253.483, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922286.406, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1257.107, \"name\": \"Popen.wait (/usr/lib/python3.12/multiprocessing/popen_fork.py:36)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923544.617, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.427, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994922281.741, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1263.469, \"name\": \"BaseProcess.join (/usr/lib/python3.12/multiprocessing/process.py:142)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923546.665, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.112, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923547.201, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.341, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923549.771, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.09, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923552.052, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.097, \"name\": \"posix.waitstatus_to_exitcode\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923549.599, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.677, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923552.463, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.16, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923546.409, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 6.321, \"name\": \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923553.01, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.055, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923553.175, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.101, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923553.5, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.082, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923554.667, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.077, \"name\": \"posix.waitstatus_to_exitcode\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923553.426, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.403, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.024, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.159, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923552.931, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.323, \"name\": \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.403, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.031, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.541, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.114, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.775, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.118, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923556.946, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.035, \"name\": \"posix.waitstatus_to_exitcode\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.742, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.272, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.041, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923555.345, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.896, \"name\": \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.398, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.022, \"name\": \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.476, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.113, \"name\": \"posix.getpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.724, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1.799, \"name\": \"posix.waitpid\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923559.591, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.033, \"name\": \"posix.waitstatus_to_exitcode\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.691, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.005, \"name\": \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923559.748, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 0.133, \"name\": \"set.discard\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994923557.34, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 2.604, \"name\": \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921706.025, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1854.163, \"name\": \"Pool._terminate_pool (/usr/lib/python3.12/multiprocessing/pool.py:680)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921694.55, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1866.953, \"name\": \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921685.243, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1876.55, \"name\": \"Pool.terminate (/usr/lib/python3.12/multiprocessing/pool.py:654)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994921684.61, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 1877.366, \"name\": \"Pool.__exit__ (/usr/lib/python3.12/multiprocessing/pool.py:738)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908549.132, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15013.165, \"name\": \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:1)\"}, {\"pid\": 222282, \"tid\": 222282, \"ts\": 81994908545.786, \"ph\": \"X\", \"cat\": \"fee\", \"dur\": 15018.357, \"name\": \"builtins.exec\"}], \"viztracer_metadata\": {\"overflow\": false, \"version\": \"1.1.1\"}, \"file_info\": {\"files\": {\"/usr/lib/python3.12/multiprocessing/synchronize.py\": [\"#\\n# Module implementing synchronization primitives\\n#\\n# multiprocessing/synchronize.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\n__all__ = [\\n    'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Condition', 'Event'\\n    ]\\n\\nimport threading\\nimport sys\\nimport tempfile\\nimport _multiprocessing\\nimport time\\n\\nfrom . import context\\nfrom . import process\\nfrom . import util\\n\\n# Try to import the mp.synchronize module cleanly, if it fails\\n# raise ImportError for platforms lacking a working sem_open implementation.\\n# See issue 3770\\ntry:\\n    from _multiprocessing import SemLock, sem_unlink\\nexcept (ImportError):\\n    raise ImportError(\\\"This platform lacks a functioning sem_open\\\" +\\n                      \\\" implementation, therefore, the required\\\" +\\n                      \\\" synchronization primitives needed will not\\\" +\\n                      \\\" function, see issue 3770.\\\")\\n\\n#\\n# Constants\\n#\\n\\nRECURSIVE_MUTEX, SEMAPHORE = list(range(2))\\nSEM_VALUE_MAX = _multiprocessing.SemLock.SEM_VALUE_MAX\\n\\n#\\n# Base class for semaphores and mutexes; wraps `_multiprocessing.SemLock`\\n#\\n\\nclass SemLock(object):\\n\\n    _rand = tempfile._RandomNameSequence()\\n\\n    def __init__(self, kind, value, maxvalue, *, ctx):\\n        if ctx is None:\\n            ctx = context._default_context.get_context()\\n        self._is_fork_ctx = ctx.get_start_method() == 'fork'\\n        unlink_now = sys.platform == 'win32' or self._is_fork_ctx\\n        for i in range(100):\\n            try:\\n                sl = self._semlock = _multiprocessing.SemLock(\\n                    kind, value, maxvalue, self._make_name(),\\n                    unlink_now)\\n            except FileExistsError:\\n                pass\\n            else:\\n                break\\n        else:\\n            raise FileExistsError('cannot find name for semaphore')\\n\\n        util.debug('created semlock with handle %s' % sl.handle)\\n        self._make_methods()\\n\\n        if sys.platform != 'win32':\\n            def _after_fork(obj):\\n                obj._semlock._after_fork()\\n            util.register_after_fork(self, _after_fork)\\n\\n        if self._semlock.name is not None:\\n            # We only get here if we are on Unix with forking\\n            # disabled.  When the object is garbage collected or the\\n            # process shuts down we unlink the semaphore name\\n            from .resource_tracker import register\\n            register(self._semlock.name, \\\"semaphore\\\")\\n            util.Finalize(self, SemLock._cleanup, (self._semlock.name,),\\n                          exitpriority=0)\\n\\n    @staticmethod\\n    def _cleanup(name):\\n        from .resource_tracker import unregister\\n        sem_unlink(name)\\n        unregister(name, \\\"semaphore\\\")\\n\\n    def _make_methods(self):\\n        self.acquire = self._semlock.acquire\\n        self.release = self._semlock.release\\n\\n    def __enter__(self):\\n        return self._semlock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._semlock.__exit__(*args)\\n\\n    def __getstate__(self):\\n        context.assert_spawning(self)\\n        sl = self._semlock\\n        if sys.platform == 'win32':\\n            h = context.get_spawning_popen().duplicate_for_child(sl.handle)\\n        else:\\n            if self._is_fork_ctx:\\n                raise RuntimeError('A SemLock created in a fork context is being '\\n                                   'shared with a process in a spawn context. This is '\\n                                   'not supported. Please use the same context to create '\\n                                   'multiprocessing objects and Process.')\\n            h = sl.handle\\n        return (h, sl.kind, sl.maxvalue, sl.name)\\n\\n    def __setstate__(self, state):\\n        self._semlock = _multiprocessing.SemLock._rebuild(*state)\\n        util.debug('recreated blocker with handle %r' % state[0])\\n        self._make_methods()\\n        # Ensure that deserialized SemLock can be serialized again (gh-108520).\\n        self._is_fork_ctx = False\\n\\n    @staticmethod\\n    def _make_name():\\n        return '%s-%s' % (process.current_process()._config['semprefix'],\\n                          next(SemLock._rand))\\n\\n#\\n# Semaphore\\n#\\n\\nclass Semaphore(SemLock):\\n\\n    def __init__(self, value=1, *, ctx):\\n        SemLock.__init__(self, SEMAPHORE, value, SEM_VALUE_MAX, ctx=ctx)\\n\\n    def get_value(self):\\n        return self._semlock._get_value()\\n\\n    def __repr__(self):\\n        try:\\n            value = self._semlock._get_value()\\n        except Exception:\\n            value = 'unknown'\\n        return '<%s(value=%s)>' % (self.__class__.__name__, value)\\n\\n#\\n# Bounded semaphore\\n#\\n\\nclass BoundedSemaphore(Semaphore):\\n\\n    def __init__(self, value=1, *, ctx):\\n        SemLock.__init__(self, SEMAPHORE, value, value, ctx=ctx)\\n\\n    def __repr__(self):\\n        try:\\n            value = self._semlock._get_value()\\n        except Exception:\\n            value = 'unknown'\\n        return '<%s(value=%s, maxvalue=%s)>' % \\\\\\n               (self.__class__.__name__, value, self._semlock.maxvalue)\\n\\n#\\n# Non-recursive lock\\n#\\n\\nclass Lock(SemLock):\\n\\n    def __init__(self, *, ctx):\\n        SemLock.__init__(self, SEMAPHORE, 1, 1, ctx=ctx)\\n\\n    def __repr__(self):\\n        try:\\n            if self._semlock._is_mine():\\n                name = process.current_process().name\\n                if threading.current_thread().name != 'MainThread':\\n                    name += '|' + threading.current_thread().name\\n            elif self._semlock._get_value() == 1:\\n                name = 'None'\\n            elif self._semlock._count() > 0:\\n                name = 'SomeOtherThread'\\n            else:\\n                name = 'SomeOtherProcess'\\n        except Exception:\\n            name = 'unknown'\\n        return '<%s(owner=%s)>' % (self.__class__.__name__, name)\\n\\n#\\n# Recursive lock\\n#\\n\\nclass RLock(SemLock):\\n\\n    def __init__(self, *, ctx):\\n        SemLock.__init__(self, RECURSIVE_MUTEX, 1, 1, ctx=ctx)\\n\\n    def __repr__(self):\\n        try:\\n            if self._semlock._is_mine():\\n                name = process.current_process().name\\n                if threading.current_thread().name != 'MainThread':\\n                    name += '|' + threading.current_thread().name\\n                count = self._semlock._count()\\n            elif self._semlock._get_value() == 1:\\n                name, count = 'None', 0\\n            elif self._semlock._count() > 0:\\n                name, count = 'SomeOtherThread', 'nonzero'\\n            else:\\n                name, count = 'SomeOtherProcess', 'nonzero'\\n        except Exception:\\n            name, count = 'unknown', 'unknown'\\n        return '<%s(%s, %s)>' % (self.__class__.__name__, name, count)\\n\\n#\\n# Condition variable\\n#\\n\\nclass Condition(object):\\n\\n    def __init__(self, lock=None, *, ctx):\\n        self._lock = lock or ctx.RLock()\\n        self._sleeping_count = ctx.Semaphore(0)\\n        self._woken_count = ctx.Semaphore(0)\\n        self._wait_semaphore = ctx.Semaphore(0)\\n        self._make_methods()\\n\\n    def __getstate__(self):\\n        context.assert_spawning(self)\\n        return (self._lock, self._sleeping_count,\\n                self._woken_count, self._wait_semaphore)\\n\\n    def __setstate__(self, state):\\n        (self._lock, self._sleeping_count,\\n         self._woken_count, self._wait_semaphore) = state\\n        self._make_methods()\\n\\n    def __enter__(self):\\n        return self._lock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._lock.__exit__(*args)\\n\\n    def _make_methods(self):\\n        self.acquire = self._lock.acquire\\n        self.release = self._lock.release\\n\\n    def __repr__(self):\\n        try:\\n            num_waiters = (self._sleeping_count._semlock._get_value() -\\n                           self._woken_count._semlock._get_value())\\n        except Exception:\\n            num_waiters = 'unknown'\\n        return '<%s(%s, %s)>' % (self.__class__.__name__, self._lock, num_waiters)\\n\\n    def wait(self, timeout=None):\\n        assert self._lock._semlock._is_mine(), \\\\\\n               'must acquire() condition before using wait()'\\n\\n        # indicate that this thread is going to sleep\\n        self._sleeping_count.release()\\n\\n        # release lock\\n        count = self._lock._semlock._count()\\n        for i in range(count):\\n            self._lock.release()\\n\\n        try:\\n            # wait for notification or timeout\\n            return self._wait_semaphore.acquire(True, timeout)\\n        finally:\\n            # indicate that this thread has woken\\n            self._woken_count.release()\\n\\n            # reacquire lock\\n            for i in range(count):\\n                self._lock.acquire()\\n\\n    def notify(self, n=1):\\n        assert self._lock._semlock._is_mine(), 'lock is not owned'\\n        assert not self._wait_semaphore.acquire(\\n            False), ('notify: Should not have been able to acquire '\\n                     + '_wait_semaphore')\\n\\n        # to take account of timeouts since last notify*() we subtract\\n        # woken_count from sleeping_count and rezero woken_count\\n        while self._woken_count.acquire(False):\\n            res = self._sleeping_count.acquire(False)\\n            assert res, ('notify: Bug in sleeping_count.acquire'\\n                         + '- res should not be False')\\n\\n        sleepers = 0\\n        while sleepers < n and self._sleeping_count.acquire(False):\\n            self._wait_semaphore.release()        # wake up one sleeper\\n            sleepers += 1\\n\\n        if sleepers:\\n            for i in range(sleepers):\\n                self._woken_count.acquire()       # wait for a sleeper to wake\\n\\n            # rezero wait_semaphore in case some timeouts just happened\\n            while self._wait_semaphore.acquire(False):\\n                pass\\n\\n    def notify_all(self):\\n        self.notify(n=sys.maxsize)\\n\\n    def wait_for(self, predicate, timeout=None):\\n        result = predicate()\\n        if result:\\n            return result\\n        if timeout is not None:\\n            endtime = time.monotonic() + timeout\\n        else:\\n            endtime = None\\n            waittime = None\\n        while not result:\\n            if endtime is not None:\\n                waittime = endtime - time.monotonic()\\n                if waittime <= 0:\\n                    break\\n            self.wait(waittime)\\n            result = predicate()\\n        return result\\n\\n#\\n# Event\\n#\\n\\nclass Event(object):\\n\\n    def __init__(self, *, ctx):\\n        self._cond = ctx.Condition(ctx.Lock())\\n        self._flag = ctx.Semaphore(0)\\n\\n    def is_set(self):\\n        with self._cond:\\n            if self._flag.acquire(False):\\n                self._flag.release()\\n                return True\\n            return False\\n\\n    def set(self):\\n        with self._cond:\\n            self._flag.acquire(False)\\n            self._flag.release()\\n            self._cond.notify_all()\\n\\n    def clear(self):\\n        with self._cond:\\n            self._flag.acquire(False)\\n\\n    def wait(self, timeout=None):\\n        with self._cond:\\n            if self._flag.acquire(False):\\n                self._flag.release()\\n            else:\\n                self._cond.wait(timeout)\\n\\n            if self._flag.acquire(False):\\n                self._flag.release()\\n                return True\\n            return False\\n\\n    def __repr__(self) -> str:\\n        set_status = 'set' if self.is_set() else 'unset'\\n        return f\\\"<{type(self).__qualname__} at {id(self):#x} {set_status}>\\\"\\n#\\n# Barrier\\n#\\n\\nclass Barrier(threading.Barrier):\\n\\n    def __init__(self, parties, action=None, timeout=None, *, ctx):\\n        import struct\\n        from .heap import BufferWrapper\\n        wrapper = BufferWrapper(struct.calcsize('i') * 2)\\n        cond = ctx.Condition()\\n        self.__setstate__((parties, action, timeout, cond, wrapper))\\n        self._state = 0\\n        self._count = 0\\n\\n    def __setstate__(self, state):\\n        (self._parties, self._action, self._timeout,\\n         self._cond, self._wrapper) = state\\n        self._array = self._wrapper.create_memoryview().cast('i')\\n\\n    def __getstate__(self):\\n        return (self._parties, self._action, self._timeout,\\n                self._cond, self._wrapper)\\n\\n    @property\\n    def _state(self):\\n        return self._array[0]\\n\\n    @_state.setter\\n    def _state(self, value):\\n        self._array[0] = value\\n\\n    @property\\n    def _count(self):\\n        return self._array[1]\\n\\n    @_count.setter\\n    def _count(self, value):\\n        self._array[1] = value\\n\", 404], \"/usr/lib/python3.12/multiprocessing/util.py\": [\"#\\n# Module providing various facilities to other parts of the package\\n#\\n# multiprocessing/util.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\nimport os\\nimport itertools\\nimport sys\\nimport weakref\\nimport atexit\\nimport threading        # we want threading to install it's\\n                        # cleanup function before multiprocessing does\\nfrom subprocess import _args_from_interpreter_flags\\n\\nfrom . import process\\n\\n__all__ = [\\n    'sub_debug', 'debug', 'info', 'sub_warning', 'get_logger',\\n    'log_to_stderr', 'get_temp_dir', 'register_after_fork',\\n    'is_exiting', 'Finalize', 'ForkAwareThreadLock', 'ForkAwareLocal',\\n    'close_all_fds_except', 'SUBDEBUG', 'SUBWARNING',\\n    ]\\n\\n#\\n# Logging\\n#\\n\\nNOTSET = 0\\nSUBDEBUG = 5\\nDEBUG = 10\\nINFO = 20\\nSUBWARNING = 25\\n\\nLOGGER_NAME = 'multiprocessing'\\nDEFAULT_LOGGING_FORMAT = '[%(levelname)s/%(processName)s] %(message)s'\\n\\n_logger = None\\n_log_to_stderr = False\\n\\ndef sub_debug(msg, *args):\\n    if _logger:\\n        _logger.log(SUBDEBUG, msg, *args, stacklevel=2)\\n\\ndef debug(msg, *args):\\n    if _logger:\\n        _logger.log(DEBUG, msg, *args, stacklevel=2)\\n\\ndef info(msg, *args):\\n    if _logger:\\n        _logger.log(INFO, msg, *args, stacklevel=2)\\n\\ndef sub_warning(msg, *args):\\n    if _logger:\\n        _logger.log(SUBWARNING, msg, *args, stacklevel=2)\\n\\ndef get_logger():\\n    '''\\n    Returns logger used by multiprocessing\\n    '''\\n    global _logger\\n    import logging\\n\\n    logging._acquireLock()\\n    try:\\n        if not _logger:\\n\\n            _logger = logging.getLogger(LOGGER_NAME)\\n            _logger.propagate = 0\\n\\n            # XXX multiprocessing should cleanup before logging\\n            if hasattr(atexit, 'unregister'):\\n                atexit.unregister(_exit_function)\\n                atexit.register(_exit_function)\\n            else:\\n                atexit._exithandlers.remove((_exit_function, (), {}))\\n                atexit._exithandlers.append((_exit_function, (), {}))\\n\\n    finally:\\n        logging._releaseLock()\\n\\n    return _logger\\n\\ndef log_to_stderr(level=None):\\n    '''\\n    Turn on logging and add a handler which prints to stderr\\n    '''\\n    global _log_to_stderr\\n    import logging\\n\\n    logger = get_logger()\\n    formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)\\n    handler = logging.StreamHandler()\\n    handler.setFormatter(formatter)\\n    logger.addHandler(handler)\\n\\n    if level:\\n        logger.setLevel(level)\\n    _log_to_stderr = True\\n    return _logger\\n\\n\\n# Abstract socket support\\n\\ndef _platform_supports_abstract_sockets():\\n    if sys.platform == \\\"linux\\\":\\n        return True\\n    if hasattr(sys, 'getandroidapilevel'):\\n        return True\\n    return False\\n\\n\\ndef is_abstract_socket_namespace(address):\\n    if not address:\\n        return False\\n    if isinstance(address, bytes):\\n        return address[0] == 0\\n    elif isinstance(address, str):\\n        return address[0] == \\\"\\\\0\\\"\\n    raise TypeError(f'address type of {address!r} unrecognized')\\n\\n\\nabstract_sockets_supported = _platform_supports_abstract_sockets()\\n\\n#\\n# Function returning a temp directory which will be removed on exit\\n#\\n\\ndef _remove_temp_dir(rmtree, tempdir):\\n    def onerror(func, path, err_info):\\n        if not issubclass(err_info[0], FileNotFoundError):\\n            raise\\n    rmtree(tempdir, onerror=onerror)\\n\\n    current_process = process.current_process()\\n    # current_process() can be None if the finalizer is called\\n    # late during Python finalization\\n    if current_process is not None:\\n        current_process._config['tempdir'] = None\\n\\ndef get_temp_dir():\\n    # get name of a temp directory which will be automatically cleaned up\\n    tempdir = process.current_process()._config.get('tempdir')\\n    if tempdir is None:\\n        import shutil, tempfile\\n        tempdir = tempfile.mkdtemp(prefix='pymp-')\\n        info('created temp directory %s', tempdir)\\n        # keep a strong reference to shutil.rmtree(), since the finalizer\\n        # can be called late during Python shutdown\\n        Finalize(None, _remove_temp_dir, args=(shutil.rmtree, tempdir),\\n                 exitpriority=-100)\\n        process.current_process()._config['tempdir'] = tempdir\\n    return tempdir\\n\\n#\\n# Support for reinitialization of objects when bootstrapping a child process\\n#\\n\\n_afterfork_registry = weakref.WeakValueDictionary()\\n_afterfork_counter = itertools.count()\\n\\ndef _run_after_forkers():\\n    items = list(_afterfork_registry.items())\\n    items.sort()\\n    for (index, ident, func), obj in items:\\n        try:\\n            func(obj)\\n        except Exception as e:\\n            info('after forker raised exception %s', e)\\n\\ndef register_after_fork(obj, func):\\n    _afterfork_registry[(next(_afterfork_counter), id(obj), func)] = obj\\n\\n#\\n# Finalization using weakrefs\\n#\\n\\n_finalizer_registry = {}\\n_finalizer_counter = itertools.count()\\n\\n\\nclass Finalize(object):\\n    '''\\n    Class which supports object finalization using weakrefs\\n    '''\\n    def __init__(self, obj, callback, args=(), kwargs=None, exitpriority=None):\\n        if (exitpriority is not None) and not isinstance(exitpriority,int):\\n            raise TypeError(\\n                \\\"Exitpriority ({0!r}) must be None or int, not {1!s}\\\".format(\\n                    exitpriority, type(exitpriority)))\\n\\n        if obj is not None:\\n            self._weakref = weakref.ref(obj, self)\\n        elif exitpriority is None:\\n            raise ValueError(\\\"Without object, exitpriority cannot be None\\\")\\n\\n        self._callback = callback\\n        self._args = args\\n        self._kwargs = kwargs or {}\\n        self._key = (exitpriority, next(_finalizer_counter))\\n        self._pid = os.getpid()\\n\\n        _finalizer_registry[self._key] = self\\n\\n    def __call__(self, wr=None,\\n                 # Need to bind these locally because the globals can have\\n                 # been cleared at shutdown\\n                 _finalizer_registry=_finalizer_registry,\\n                 sub_debug=sub_debug, getpid=os.getpid):\\n        '''\\n        Run the callback unless it has already been called or cancelled\\n        '''\\n        try:\\n            del _finalizer_registry[self._key]\\n        except KeyError:\\n            sub_debug('finalizer no longer registered')\\n        else:\\n            if self._pid != getpid():\\n                sub_debug('finalizer ignored because different process')\\n                res = None\\n            else:\\n                sub_debug('finalizer calling %s with args %s and kwargs %s',\\n                          self._callback, self._args, self._kwargs)\\n                res = self._callback(*self._args, **self._kwargs)\\n            self._weakref = self._callback = self._args = \\\\\\n                            self._kwargs = self._key = None\\n            return res\\n\\n    def cancel(self):\\n        '''\\n        Cancel finalization of the object\\n        '''\\n        try:\\n            del _finalizer_registry[self._key]\\n        except KeyError:\\n            pass\\n        else:\\n            self._weakref = self._callback = self._args = \\\\\\n                            self._kwargs = self._key = None\\n\\n    def still_active(self):\\n        '''\\n        Return whether this finalizer is still waiting to invoke callback\\n        '''\\n        return self._key in _finalizer_registry\\n\\n    def __repr__(self):\\n        try:\\n            obj = self._weakref()\\n        except (AttributeError, TypeError):\\n            obj = None\\n\\n        if obj is None:\\n            return '<%s object, dead>' % self.__class__.__name__\\n\\n        x = '<%s object, callback=%s' % (\\n                self.__class__.__name__,\\n                getattr(self._callback, '__name__', self._callback))\\n        if self._args:\\n            x += ', args=' + str(self._args)\\n        if self._kwargs:\\n            x += ', kwargs=' + str(self._kwargs)\\n        if self._key[0] is not None:\\n            x += ', exitpriority=' + str(self._key[0])\\n        return x + '>'\\n\\n\\ndef _run_finalizers(minpriority=None):\\n    '''\\n    Run all finalizers whose exit priority is not None and at least minpriority\\n\\n    Finalizers with highest priority are called first; finalizers with\\n    the same priority will be called in reverse order of creation.\\n    '''\\n    if _finalizer_registry is None:\\n        # This function may be called after this module's globals are\\n        # destroyed.  See the _exit_function function in this module for more\\n        # notes.\\n        return\\n\\n    if minpriority is None:\\n        f = lambda p : p[0] is not None\\n    else:\\n        f = lambda p : p[0] is not None and p[0] >= minpriority\\n\\n    # Careful: _finalizer_registry may be mutated while this function\\n    # is running (either by a GC run or by another thread).\\n\\n    # list(_finalizer_registry) should be atomic, while\\n    # list(_finalizer_registry.items()) is not.\\n    keys = [key for key in list(_finalizer_registry) if f(key)]\\n    keys.sort(reverse=True)\\n\\n    for key in keys:\\n        finalizer = _finalizer_registry.get(key)\\n        # key may have been removed from the registry\\n        if finalizer is not None:\\n            sub_debug('calling %s', finalizer)\\n            try:\\n                finalizer()\\n            except Exception:\\n                import traceback\\n                traceback.print_exc()\\n\\n    if minpriority is None:\\n        _finalizer_registry.clear()\\n\\n#\\n# Clean up on exit\\n#\\n\\ndef is_exiting():\\n    '''\\n    Returns true if the process is shutting down\\n    '''\\n    return _exiting or _exiting is None\\n\\n_exiting = False\\n\\ndef _exit_function(info=info, debug=debug, _run_finalizers=_run_finalizers,\\n                   active_children=process.active_children,\\n                   current_process=process.current_process):\\n    # We hold on to references to functions in the arglist due to the\\n    # situation described below, where this function is called after this\\n    # module's globals are destroyed.\\n\\n    global _exiting\\n\\n    if not _exiting:\\n        _exiting = True\\n\\n        info('process shutting down')\\n        debug('running all \\\"atexit\\\" finalizers with priority >= 0')\\n        _run_finalizers(0)\\n\\n        if current_process() is not None:\\n            # We check if the current process is None here because if\\n            # it's None, any call to ``active_children()`` will raise\\n            # an AttributeError (active_children winds up trying to\\n            # get attributes from util._current_process).  One\\n            # situation where this can happen is if someone has\\n            # manipulated sys.modules, causing this module to be\\n            # garbage collected.  The destructor for the module type\\n            # then replaces all values in the module dict with None.\\n            # For instance, after setuptools runs a test it replaces\\n            # sys.modules with a copy created earlier.  See issues\\n            # #9775 and #15881.  Also related: #4106, #9205, and\\n            # #9207.\\n\\n            for p in active_children():\\n                if p.daemon:\\n                    info('calling terminate() for daemon %s', p.name)\\n                    p._popen.terminate()\\n\\n            for p in active_children():\\n                info('calling join() for process %s', p.name)\\n                p.join()\\n\\n        debug('running the remaining \\\"atexit\\\" finalizers')\\n        _run_finalizers()\\n\\natexit.register(_exit_function)\\n\\n#\\n# Some fork aware types\\n#\\n\\nclass ForkAwareThreadLock(object):\\n    def __init__(self):\\n        self._lock = threading.Lock()\\n        self.acquire = self._lock.acquire\\n        self.release = self._lock.release\\n        register_after_fork(self, ForkAwareThreadLock._at_fork_reinit)\\n\\n    def _at_fork_reinit(self):\\n        self._lock._at_fork_reinit()\\n\\n    def __enter__(self):\\n        return self._lock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._lock.__exit__(*args)\\n\\n\\nclass ForkAwareLocal(threading.local):\\n    def __init__(self):\\n        register_after_fork(self, lambda obj : obj.__dict__.clear())\\n    def __reduce__(self):\\n        return type(self), ()\\n\\n#\\n# Close fds except those specified\\n#\\n\\ntry:\\n    MAXFD = os.sysconf(\\\"SC_OPEN_MAX\\\")\\nexcept Exception:\\n    MAXFD = 256\\n\\ndef close_all_fds_except(fds):\\n    fds = list(fds) + [-1, MAXFD]\\n    fds.sort()\\n    assert fds[-1] == MAXFD, 'fd too large'\\n    for i in range(len(fds) - 1):\\n        os.closerange(fds[i]+1, fds[i+1])\\n#\\n# Close sys.stdin and replace stdin with os.devnull\\n#\\n\\ndef _close_stdin():\\n    if sys.stdin is None:\\n        return\\n\\n    try:\\n        sys.stdin.close()\\n    except (OSError, ValueError):\\n        pass\\n\\n    try:\\n        fd = os.open(os.devnull, os.O_RDONLY)\\n        try:\\n            sys.stdin = open(fd, encoding=\\\"utf-8\\\", closefd=False)\\n        except:\\n            os.close(fd)\\n            raise\\n    except (OSError, ValueError):\\n        pass\\n\\n#\\n# Flush standard streams, if any\\n#\\n\\ndef _flush_std_streams():\\n    try:\\n        sys.stdout.flush()\\n    except (AttributeError, ValueError):\\n        pass\\n    try:\\n        sys.stderr.flush()\\n    except (AttributeError, ValueError):\\n        pass\\n\\n#\\n# Start a program with only specified fds kept open\\n#\\n\\ndef spawnv_passfds(path, args, passfds):\\n    import _posixsubprocess\\n    import subprocess\\n    passfds = tuple(sorted(map(int, passfds)))\\n    errpipe_read, errpipe_write = os.pipe()\\n    try:\\n        return _posixsubprocess.fork_exec(\\n            args, [path], True, passfds, None, None,\\n            -1, -1, -1, -1, -1, -1, errpipe_read, errpipe_write,\\n            False, False, -1, None, None, None, -1, None,\\n            subprocess._USE_VFORK)\\n    finally:\\n        os.close(errpipe_read)\\n        os.close(errpipe_write)\\n\\n\\ndef close_fds(*fds):\\n    \\\"\\\"\\\"Close each file descriptor given as an argument\\\"\\\"\\\"\\n    for fd in fds:\\n        os.close(fd)\\n\\n\\ndef _cleanup_tests():\\n    \\\"\\\"\\\"Cleanup multiprocessing resources when multiprocessing tests\\n    completed.\\\"\\\"\\\"\\n\\n    from test import support\\n\\n    # cleanup multiprocessing\\n    process._cleanup()\\n\\n    # Stop the ForkServer process if it's running\\n    from multiprocessing import forkserver\\n    forkserver._forkserver._stop()\\n\\n    # Stop the ResourceTracker process if it's running\\n    from multiprocessing import resource_tracker\\n    resource_tracker._resource_tracker._stop()\\n\\n    # bpo-37421: Explicitly call _run_finalizers() to remove immediately\\n    # temporary directories created by multiprocessing.util.get_temp_dir().\\n    _run_finalizers()\\n    support.gc_collect()\\n\\n    support.reap_children()\\n\", 494], \"/usr/lib/python3.12/multiprocessing/connection.py\": [\"#\\n# A higher level module for using sockets (or Windows named pipes)\\n#\\n# multiprocessing/connection.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\n__all__ = [ 'Client', 'Listener', 'Pipe', 'wait' ]\\n\\nimport errno\\nimport io\\nimport os\\nimport sys\\nimport socket\\nimport struct\\nimport time\\nimport tempfile\\nimport itertools\\n\\nimport _multiprocessing\\n\\nfrom . import util\\n\\nfrom . import AuthenticationError, BufferTooShort\\nfrom .context import reduction\\n_ForkingPickler = reduction.ForkingPickler\\n\\ntry:\\n    import _winapi\\n    from _winapi import WAIT_OBJECT_0, WAIT_ABANDONED_0, WAIT_TIMEOUT, INFINITE\\nexcept ImportError:\\n    if sys.platform == 'win32':\\n        raise\\n    _winapi = None\\n\\n#\\n#\\n#\\n\\nBUFSIZE = 8192\\n# A very generous timeout when it comes to local connections...\\nCONNECTION_TIMEOUT = 20.\\n\\n_mmap_counter = itertools.count()\\n\\ndefault_family = 'AF_INET'\\nfamilies = ['AF_INET']\\n\\nif hasattr(socket, 'AF_UNIX'):\\n    default_family = 'AF_UNIX'\\n    families += ['AF_UNIX']\\n\\nif sys.platform == 'win32':\\n    default_family = 'AF_PIPE'\\n    families += ['AF_PIPE']\\n\\n\\ndef _init_timeout(timeout=CONNECTION_TIMEOUT):\\n    return time.monotonic() + timeout\\n\\ndef _check_timeout(t):\\n    return time.monotonic() > t\\n\\n#\\n#\\n#\\n\\ndef arbitrary_address(family):\\n    '''\\n    Return an arbitrary free address for the given family\\n    '''\\n    if family == 'AF_INET':\\n        return ('localhost', 0)\\n    elif family == 'AF_UNIX':\\n        return tempfile.mktemp(prefix='listener-', dir=util.get_temp_dir())\\n    elif family == 'AF_PIPE':\\n        return tempfile.mktemp(prefix=r'\\\\\\\\.\\\\pipe\\\\pyc-%d-%d-' %\\n                               (os.getpid(), next(_mmap_counter)), dir=\\\"\\\")\\n    else:\\n        raise ValueError('unrecognized family')\\n\\ndef _validate_family(family):\\n    '''\\n    Checks if the family is valid for the current environment.\\n    '''\\n    if sys.platform != 'win32' and family == 'AF_PIPE':\\n        raise ValueError('Family %s is not recognized.' % family)\\n\\n    if sys.platform == 'win32' and family == 'AF_UNIX':\\n        # double check\\n        if not hasattr(socket, family):\\n            raise ValueError('Family %s is not recognized.' % family)\\n\\ndef address_type(address):\\n    '''\\n    Return the types of the address\\n\\n    This can be 'AF_INET', 'AF_UNIX', or 'AF_PIPE'\\n    '''\\n    if type(address) == tuple:\\n        return 'AF_INET'\\n    elif type(address) is str and address.startswith('\\\\\\\\\\\\\\\\'):\\n        return 'AF_PIPE'\\n    elif type(address) is str or util.is_abstract_socket_namespace(address):\\n        return 'AF_UNIX'\\n    else:\\n        raise ValueError('address type of %r unrecognized' % address)\\n\\n#\\n# Connection classes\\n#\\n\\nclass _ConnectionBase:\\n    _handle = None\\n\\n    def __init__(self, handle, readable=True, writable=True):\\n        handle = handle.__index__()\\n        if handle < 0:\\n            raise ValueError(\\\"invalid handle\\\")\\n        if not readable and not writable:\\n            raise ValueError(\\n                \\\"at least one of `readable` and `writable` must be True\\\")\\n        self._handle = handle\\n        self._readable = readable\\n        self._writable = writable\\n\\n    # XXX should we use util.Finalize instead of a __del__?\\n\\n    def __del__(self):\\n        if self._handle is not None:\\n            self._close()\\n\\n    def _check_closed(self):\\n        if self._handle is None:\\n            raise OSError(\\\"handle is closed\\\")\\n\\n    def _check_readable(self):\\n        if not self._readable:\\n            raise OSError(\\\"connection is write-only\\\")\\n\\n    def _check_writable(self):\\n        if not self._writable:\\n            raise OSError(\\\"connection is read-only\\\")\\n\\n    def _bad_message_length(self):\\n        if self._writable:\\n            self._readable = False\\n        else:\\n            self.close()\\n        raise OSError(\\\"bad message length\\\")\\n\\n    @property\\n    def closed(self):\\n        \\\"\\\"\\\"True if the connection is closed\\\"\\\"\\\"\\n        return self._handle is None\\n\\n    @property\\n    def readable(self):\\n        \\\"\\\"\\\"True if the connection is readable\\\"\\\"\\\"\\n        return self._readable\\n\\n    @property\\n    def writable(self):\\n        \\\"\\\"\\\"True if the connection is writable\\\"\\\"\\\"\\n        return self._writable\\n\\n    def fileno(self):\\n        \\\"\\\"\\\"File descriptor or handle of the connection\\\"\\\"\\\"\\n        self._check_closed()\\n        return self._handle\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the connection\\\"\\\"\\\"\\n        if self._handle is not None:\\n            try:\\n                self._close()\\n            finally:\\n                self._handle = None\\n\\n    def send_bytes(self, buf, offset=0, size=None):\\n        \\\"\\\"\\\"Send the bytes data from a bytes-like object\\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_writable()\\n        m = memoryview(buf)\\n        if m.itemsize > 1:\\n            m = m.cast('B')\\n        n = m.nbytes\\n        if offset < 0:\\n            raise ValueError(\\\"offset is negative\\\")\\n        if n < offset:\\n            raise ValueError(\\\"buffer length < offset\\\")\\n        if size is None:\\n            size = n - offset\\n        elif size < 0:\\n            raise ValueError(\\\"size is negative\\\")\\n        elif offset + size > n:\\n            raise ValueError(\\\"buffer length < offset + size\\\")\\n        self._send_bytes(m[offset:offset + size])\\n\\n    def send(self, obj):\\n        \\\"\\\"\\\"Send a (picklable) object\\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_writable()\\n        self._send_bytes(_ForkingPickler.dumps(obj))\\n\\n    def recv_bytes(self, maxlength=None):\\n        \\\"\\\"\\\"\\n        Receive bytes data as a bytes object.\\n        \\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_readable()\\n        if maxlength is not None and maxlength < 0:\\n            raise ValueError(\\\"negative maxlength\\\")\\n        buf = self._recv_bytes(maxlength)\\n        if buf is None:\\n            self._bad_message_length()\\n        return buf.getvalue()\\n\\n    def recv_bytes_into(self, buf, offset=0):\\n        \\\"\\\"\\\"\\n        Receive bytes data into a writeable bytes-like object.\\n        Return the number of bytes read.\\n        \\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_readable()\\n        with memoryview(buf) as m:\\n            # Get bytesize of arbitrary buffer\\n            itemsize = m.itemsize\\n            bytesize = itemsize * len(m)\\n            if offset < 0:\\n                raise ValueError(\\\"negative offset\\\")\\n            elif offset > bytesize:\\n                raise ValueError(\\\"offset too large\\\")\\n            result = self._recv_bytes()\\n            size = result.tell()\\n            if bytesize < offset + size:\\n                raise BufferTooShort(result.getvalue())\\n            # Message can fit in dest\\n            result.seek(0)\\n            result.readinto(m[offset // itemsize :\\n                              (offset + size) // itemsize])\\n            return size\\n\\n    def recv(self):\\n        \\\"\\\"\\\"Receive a (picklable) object\\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_readable()\\n        buf = self._recv_bytes()\\n        return _ForkingPickler.loads(buf.getbuffer())\\n\\n    def poll(self, timeout=0.0):\\n        \\\"\\\"\\\"Whether there is any input available to be read\\\"\\\"\\\"\\n        self._check_closed()\\n        self._check_readable()\\n        return self._poll(timeout)\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, exc_type, exc_value, exc_tb):\\n        self.close()\\n\\n\\nif _winapi:\\n\\n    class PipeConnection(_ConnectionBase):\\n        \\\"\\\"\\\"\\n        Connection class based on a Windows named pipe.\\n        Overlapped I/O is used, so the handles must have been created\\n        with FILE_FLAG_OVERLAPPED.\\n        \\\"\\\"\\\"\\n        _got_empty_message = False\\n        _send_ov = None\\n\\n        def _close(self, _CloseHandle=_winapi.CloseHandle):\\n            ov = self._send_ov\\n            if ov is not None:\\n                # Interrupt WaitForMultipleObjects() in _send_bytes()\\n                ov.cancel()\\n            _CloseHandle(self._handle)\\n\\n        def _send_bytes(self, buf):\\n            if self._send_ov is not None:\\n                # A connection should only be used by a single thread\\n                raise ValueError(\\\"concurrent send_bytes() calls \\\"\\n                                 \\\"are not supported\\\")\\n            ov, err = _winapi.WriteFile(self._handle, buf, overlapped=True)\\n            self._send_ov = ov\\n            try:\\n                if err == _winapi.ERROR_IO_PENDING:\\n                    waitres = _winapi.WaitForMultipleObjects(\\n                        [ov.event], False, INFINITE)\\n                    assert waitres == WAIT_OBJECT_0\\n            except:\\n                ov.cancel()\\n                raise\\n            finally:\\n                self._send_ov = None\\n                nwritten, err = ov.GetOverlappedResult(True)\\n            if err == _winapi.ERROR_OPERATION_ABORTED:\\n                # close() was called by another thread while\\n                # WaitForMultipleObjects() was waiting for the overlapped\\n                # operation.\\n                raise OSError(errno.EPIPE, \\\"handle is closed\\\")\\n            assert err == 0\\n            assert nwritten == len(buf)\\n\\n        def _recv_bytes(self, maxsize=None):\\n            if self._got_empty_message:\\n                self._got_empty_message = False\\n                return io.BytesIO()\\n            else:\\n                bsize = 128 if maxsize is None else min(maxsize, 128)\\n                try:\\n                    ov, err = _winapi.ReadFile(self._handle, bsize,\\n                                                overlapped=True)\\n                    try:\\n                        if err == _winapi.ERROR_IO_PENDING:\\n                            waitres = _winapi.WaitForMultipleObjects(\\n                                [ov.event], False, INFINITE)\\n                            assert waitres == WAIT_OBJECT_0\\n                    except:\\n                        ov.cancel()\\n                        raise\\n                    finally:\\n                        nread, err = ov.GetOverlappedResult(True)\\n                        if err == 0:\\n                            f = io.BytesIO()\\n                            f.write(ov.getbuffer())\\n                            return f\\n                        elif err == _winapi.ERROR_MORE_DATA:\\n                            return self._get_more_data(ov, maxsize)\\n                except OSError as e:\\n                    if e.winerror == _winapi.ERROR_BROKEN_PIPE:\\n                        raise EOFError\\n                    else:\\n                        raise\\n            raise RuntimeError(\\\"shouldn't get here; expected KeyboardInterrupt\\\")\\n\\n        def _poll(self, timeout):\\n            if (self._got_empty_message or\\n                        _winapi.PeekNamedPipe(self._handle)[0] != 0):\\n                return True\\n            return bool(wait([self], timeout))\\n\\n        def _get_more_data(self, ov, maxsize):\\n            buf = ov.getbuffer()\\n            f = io.BytesIO()\\n            f.write(buf)\\n            left = _winapi.PeekNamedPipe(self._handle)[1]\\n            assert left > 0\\n            if maxsize is not None and len(buf) + left > maxsize:\\n                self._bad_message_length()\\n            ov, err = _winapi.ReadFile(self._handle, left, overlapped=True)\\n            rbytes, err = ov.GetOverlappedResult(True)\\n            assert err == 0\\n            assert rbytes == left\\n            f.write(ov.getbuffer())\\n            return f\\n\\n\\nclass Connection(_ConnectionBase):\\n    \\\"\\\"\\\"\\n    Connection class based on an arbitrary file descriptor (Unix only), or\\n    a socket handle (Windows).\\n    \\\"\\\"\\\"\\n\\n    if _winapi:\\n        def _close(self, _close=_multiprocessing.closesocket):\\n            _close(self._handle)\\n        _write = _multiprocessing.send\\n        _read = _multiprocessing.recv\\n    else:\\n        def _close(self, _close=os.close):\\n            _close(self._handle)\\n        _write = os.write\\n        _read = os.read\\n\\n    def _send(self, buf, write=_write):\\n        remaining = len(buf)\\n        while True:\\n            n = write(self._handle, buf)\\n            remaining -= n\\n            if remaining == 0:\\n                break\\n            buf = buf[n:]\\n\\n    def _recv(self, size, read=_read):\\n        buf = io.BytesIO()\\n        handle = self._handle\\n        remaining = size\\n        while remaining > 0:\\n            chunk = read(handle, remaining)\\n            n = len(chunk)\\n            if n == 0:\\n                if remaining == size:\\n                    raise EOFError\\n                else:\\n                    raise OSError(\\\"got end of file during message\\\")\\n            buf.write(chunk)\\n            remaining -= n\\n        return buf\\n\\n    def _send_bytes(self, buf):\\n        n = len(buf)\\n        if n > 0x7fffffff:\\n            pre_header = struct.pack(\\\"!i\\\", -1)\\n            header = struct.pack(\\\"!Q\\\", n)\\n            self._send(pre_header)\\n            self._send(header)\\n            self._send(buf)\\n        else:\\n            # For wire compatibility with 3.7 and lower\\n            header = struct.pack(\\\"!i\\\", n)\\n            if n > 16384:\\n                # The payload is large so Nagle's algorithm won't be triggered\\n                # and we'd better avoid the cost of concatenation.\\n                self._send(header)\\n                self._send(buf)\\n            else:\\n                # Issue #20540: concatenate before sending, to avoid delays due\\n                # to Nagle's algorithm on a TCP socket.\\n                # Also note we want to avoid sending a 0-length buffer separately,\\n                # to avoid \\\"broken pipe\\\" errors if the other end closed the pipe.\\n                self._send(header + buf)\\n\\n    def _recv_bytes(self, maxsize=None):\\n        buf = self._recv(4)\\n        size, = struct.unpack(\\\"!i\\\", buf.getvalue())\\n        if size == -1:\\n            buf = self._recv(8)\\n            size, = struct.unpack(\\\"!Q\\\", buf.getvalue())\\n        if maxsize is not None and size > maxsize:\\n            return None\\n        return self._recv(size)\\n\\n    def _poll(self, timeout):\\n        r = wait([self], timeout)\\n        return bool(r)\\n\\n\\n#\\n# Public functions\\n#\\n\\nclass Listener(object):\\n    '''\\n    Returns a listener object.\\n\\n    This is a wrapper for a bound socket which is 'listening' for\\n    connections, or for a Windows named pipe.\\n    '''\\n    def __init__(self, address=None, family=None, backlog=1, authkey=None):\\n        family = family or (address and address_type(address)) \\\\\\n                 or default_family\\n        address = address or arbitrary_address(family)\\n\\n        _validate_family(family)\\n        if family == 'AF_PIPE':\\n            self._listener = PipeListener(address, backlog)\\n        else:\\n            self._listener = SocketListener(address, family, backlog)\\n\\n        if authkey is not None and not isinstance(authkey, bytes):\\n            raise TypeError('authkey should be a byte string')\\n\\n        self._authkey = authkey\\n\\n    def accept(self):\\n        '''\\n        Accept a connection on the bound socket or named pipe of `self`.\\n\\n        Returns a `Connection` object.\\n        '''\\n        if self._listener is None:\\n            raise OSError('listener is closed')\\n\\n        c = self._listener.accept()\\n        if self._authkey is not None:\\n            deliver_challenge(c, self._authkey)\\n            answer_challenge(c, self._authkey)\\n        return c\\n\\n    def close(self):\\n        '''\\n        Close the bound socket or named pipe of `self`.\\n        '''\\n        listener = self._listener\\n        if listener is not None:\\n            self._listener = None\\n            listener.close()\\n\\n    @property\\n    def address(self):\\n        return self._listener._address\\n\\n    @property\\n    def last_accepted(self):\\n        return self._listener._last_accepted\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, exc_type, exc_value, exc_tb):\\n        self.close()\\n\\n\\ndef Client(address, family=None, authkey=None):\\n    '''\\n    Returns a connection to the address of a `Listener`\\n    '''\\n    family = family or address_type(address)\\n    _validate_family(family)\\n    if family == 'AF_PIPE':\\n        c = PipeClient(address)\\n    else:\\n        c = SocketClient(address)\\n\\n    if authkey is not None and not isinstance(authkey, bytes):\\n        raise TypeError('authkey should be a byte string')\\n\\n    if authkey is not None:\\n        answer_challenge(c, authkey)\\n        deliver_challenge(c, authkey)\\n\\n    return c\\n\\n\\nif sys.platform != 'win32':\\n\\n    def Pipe(duplex=True):\\n        '''\\n        Returns pair of connection objects at either end of a pipe\\n        '''\\n        if duplex:\\n            s1, s2 = socket.socketpair()\\n            s1.setblocking(True)\\n            s2.setblocking(True)\\n            c1 = Connection(s1.detach())\\n            c2 = Connection(s2.detach())\\n        else:\\n            fd1, fd2 = os.pipe()\\n            c1 = Connection(fd1, writable=False)\\n            c2 = Connection(fd2, readable=False)\\n\\n        return c1, c2\\n\\nelse:\\n\\n    def Pipe(duplex=True):\\n        '''\\n        Returns pair of connection objects at either end of a pipe\\n        '''\\n        address = arbitrary_address('AF_PIPE')\\n        if duplex:\\n            openmode = _winapi.PIPE_ACCESS_DUPLEX\\n            access = _winapi.GENERIC_READ | _winapi.GENERIC_WRITE\\n            obsize, ibsize = BUFSIZE, BUFSIZE\\n        else:\\n            openmode = _winapi.PIPE_ACCESS_INBOUND\\n            access = _winapi.GENERIC_WRITE\\n            obsize, ibsize = 0, BUFSIZE\\n\\n        h1 = _winapi.CreateNamedPipe(\\n            address, openmode | _winapi.FILE_FLAG_OVERLAPPED |\\n            _winapi.FILE_FLAG_FIRST_PIPE_INSTANCE,\\n            _winapi.PIPE_TYPE_MESSAGE | _winapi.PIPE_READMODE_MESSAGE |\\n            _winapi.PIPE_WAIT,\\n            1, obsize, ibsize, _winapi.NMPWAIT_WAIT_FOREVER,\\n            # default security descriptor: the handle cannot be inherited\\n            _winapi.NULL\\n            )\\n        h2 = _winapi.CreateFile(\\n            address, access, 0, _winapi.NULL, _winapi.OPEN_EXISTING,\\n            _winapi.FILE_FLAG_OVERLAPPED, _winapi.NULL\\n            )\\n        _winapi.SetNamedPipeHandleState(\\n            h2, _winapi.PIPE_READMODE_MESSAGE, None, None\\n            )\\n\\n        overlapped = _winapi.ConnectNamedPipe(h1, overlapped=True)\\n        _, err = overlapped.GetOverlappedResult(True)\\n        assert err == 0\\n\\n        c1 = PipeConnection(h1, writable=duplex)\\n        c2 = PipeConnection(h2, readable=duplex)\\n\\n        return c1, c2\\n\\n#\\n# Definitions for connections based on sockets\\n#\\n\\nclass SocketListener(object):\\n    '''\\n    Representation of a socket which is bound to an address and listening\\n    '''\\n    def __init__(self, address, family, backlog=1):\\n        self._socket = socket.socket(getattr(socket, family))\\n        try:\\n            # SO_REUSEADDR has different semantics on Windows (issue #2550).\\n            if os.name == 'posix':\\n                self._socket.setsockopt(socket.SOL_SOCKET,\\n                                        socket.SO_REUSEADDR, 1)\\n            self._socket.setblocking(True)\\n            self._socket.bind(address)\\n            self._socket.listen(backlog)\\n            self._address = self._socket.getsockname()\\n        except OSError:\\n            self._socket.close()\\n            raise\\n        self._family = family\\n        self._last_accepted = None\\n\\n        if family == 'AF_UNIX' and not util.is_abstract_socket_namespace(address):\\n            # Linux abstract socket namespaces do not need to be explicitly unlinked\\n            self._unlink = util.Finalize(\\n                self, os.unlink, args=(address,), exitpriority=0\\n                )\\n        else:\\n            self._unlink = None\\n\\n    def accept(self):\\n        s, self._last_accepted = self._socket.accept()\\n        s.setblocking(True)\\n        return Connection(s.detach())\\n\\n    def close(self):\\n        try:\\n            self._socket.close()\\n        finally:\\n            unlink = self._unlink\\n            if unlink is not None:\\n                self._unlink = None\\n                unlink()\\n\\n\\ndef SocketClient(address):\\n    '''\\n    Return a connection object connected to the socket given by `address`\\n    '''\\n    family = address_type(address)\\n    with socket.socket( getattr(socket, family) ) as s:\\n        s.setblocking(True)\\n        s.connect(address)\\n        return Connection(s.detach())\\n\\n#\\n# Definitions for connections based on named pipes\\n#\\n\\nif sys.platform == 'win32':\\n\\n    class PipeListener(object):\\n        '''\\n        Representation of a named pipe\\n        '''\\n        def __init__(self, address, backlog=None):\\n            self._address = address\\n            self._handle_queue = [self._new_handle(first=True)]\\n\\n            self._last_accepted = None\\n            util.sub_debug('listener created with address=%r', self._address)\\n            self.close = util.Finalize(\\n                self, PipeListener._finalize_pipe_listener,\\n                args=(self._handle_queue, self._address), exitpriority=0\\n                )\\n\\n        def _new_handle(self, first=False):\\n            flags = _winapi.PIPE_ACCESS_DUPLEX | _winapi.FILE_FLAG_OVERLAPPED\\n            if first:\\n                flags |= _winapi.FILE_FLAG_FIRST_PIPE_INSTANCE\\n            return _winapi.CreateNamedPipe(\\n                self._address, flags,\\n                _winapi.PIPE_TYPE_MESSAGE | _winapi.PIPE_READMODE_MESSAGE |\\n                _winapi.PIPE_WAIT,\\n                _winapi.PIPE_UNLIMITED_INSTANCES, BUFSIZE, BUFSIZE,\\n                _winapi.NMPWAIT_WAIT_FOREVER, _winapi.NULL\\n                )\\n\\n        def accept(self):\\n            self._handle_queue.append(self._new_handle())\\n            handle = self._handle_queue.pop(0)\\n            try:\\n                ov = _winapi.ConnectNamedPipe(handle, overlapped=True)\\n            except OSError as e:\\n                if e.winerror != _winapi.ERROR_NO_DATA:\\n                    raise\\n                # ERROR_NO_DATA can occur if a client has already connected,\\n                # written data and then disconnected -- see Issue 14725.\\n            else:\\n                try:\\n                    res = _winapi.WaitForMultipleObjects(\\n                        [ov.event], False, INFINITE)\\n                except:\\n                    ov.cancel()\\n                    _winapi.CloseHandle(handle)\\n                    raise\\n                finally:\\n                    _, err = ov.GetOverlappedResult(True)\\n                    assert err == 0\\n            return PipeConnection(handle)\\n\\n        @staticmethod\\n        def _finalize_pipe_listener(queue, address):\\n            util.sub_debug('closing listener with address=%r', address)\\n            for handle in queue:\\n                _winapi.CloseHandle(handle)\\n\\n    def PipeClient(address):\\n        '''\\n        Return a connection object connected to the pipe given by `address`\\n        '''\\n        t = _init_timeout()\\n        while 1:\\n            try:\\n                _winapi.WaitNamedPipe(address, 1000)\\n                h = _winapi.CreateFile(\\n                    address, _winapi.GENERIC_READ | _winapi.GENERIC_WRITE,\\n                    0, _winapi.NULL, _winapi.OPEN_EXISTING,\\n                    _winapi.FILE_FLAG_OVERLAPPED, _winapi.NULL\\n                    )\\n            except OSError as e:\\n                if e.winerror not in (_winapi.ERROR_SEM_TIMEOUT,\\n                                      _winapi.ERROR_PIPE_BUSY) or _check_timeout(t):\\n                    raise\\n            else:\\n                break\\n        else:\\n            raise\\n\\n        _winapi.SetNamedPipeHandleState(\\n            h, _winapi.PIPE_READMODE_MESSAGE, None, None\\n            )\\n        return PipeConnection(h)\\n\\n#\\n# Authentication stuff\\n#\\n\\nMESSAGE_LENGTH = 40  # MUST be > 20\\n\\n_CHALLENGE = b'#CHALLENGE#'\\n_WELCOME = b'#WELCOME#'\\n_FAILURE = b'#FAILURE#'\\n\\n# multiprocessing.connection Authentication Handshake Protocol Description\\n# (as documented for reference after reading the existing code)\\n# =============================================================================\\n#\\n# On Windows: native pipes with \\\"overlapped IO\\\" are used to send the bytes,\\n# instead of the length prefix SIZE scheme described below. (ie: the OS deals\\n# with message sizes for us)\\n#\\n# Protocol error behaviors:\\n#\\n# On POSIX, any failure to receive the length prefix into SIZE, for SIZE greater\\n# than the requested maxsize to receive, or receiving fewer than SIZE bytes\\n# results in the connection being closed and auth to fail.\\n#\\n# On Windows, receiving too few bytes is never a low level _recv_bytes read\\n# error, receiving too many will trigger an error only if receive maxsize\\n# value was larger than 128 OR the if the data arrived in smaller pieces.\\n#\\n#      Serving side                           Client side\\n#     ------------------------------  ---------------------------------------\\n# 0.                                  Open a connection on the pipe.\\n# 1.  Accept connection.\\n# 2.  Random 20+ bytes -> MESSAGE\\n#     Modern servers always send\\n#     more than 20 bytes and include\\n#     a {digest} prefix on it with\\n#     their preferred HMAC digest.\\n#     Legacy ones send ==20 bytes.\\n# 3.  send 4 byte length (net order)\\n#     prefix followed by:\\n#       b'#CHALLENGE#' + MESSAGE\\n# 4.                                  Receive 4 bytes, parse as network byte\\n#                                     order integer. If it is -1, receive an\\n#                                     additional 8 bytes, parse that as network\\n#                                     byte order. The result is the length of\\n#                                     the data that follows -> SIZE.\\n# 5.                                  Receive min(SIZE, 256) bytes -> M1\\n# 6.                                  Assert that M1 starts with:\\n#                                       b'#CHALLENGE#'\\n# 7.                                  Strip that prefix from M1 into -> M2\\n# 7.1.                                Parse M2: if it is exactly 20 bytes in\\n#                                     length this indicates a legacy server\\n#                                     supporting only HMAC-MD5. Otherwise the\\n# 7.2.                                preferred digest is looked up from an\\n#                                     expected \\\"{digest}\\\" prefix on M2. No prefix\\n#                                     or unsupported digest? <- AuthenticationError\\n# 7.3.                                Put divined algorithm name in -> D_NAME\\n# 8.                                  Compute HMAC-D_NAME of AUTHKEY, M2 -> C_DIGEST\\n# 9.                                  Send 4 byte length prefix (net order)\\n#                                     followed by C_DIGEST bytes.\\n# 10. Receive 4 or 4+8 byte length\\n#     prefix (#4 dance) -> SIZE.\\n# 11. Receive min(SIZE, 256) -> C_D.\\n# 11.1. Parse C_D: legacy servers\\n#     accept it as is, \\\"md5\\\" -> D_NAME\\n# 11.2. modern servers check the length\\n#     of C_D, IF it is 16 bytes?\\n# 11.2.1. \\\"md5\\\" -> D_NAME\\n#         and skip to step 12.\\n# 11.3. longer? expect and parse a \\\"{digest}\\\"\\n#     prefix into -> D_NAME.\\n#     Strip the prefix and store remaining\\n#     bytes in -> C_D.\\n# 11.4. Don't like D_NAME? <- AuthenticationError\\n# 12. Compute HMAC-D_NAME of AUTHKEY,\\n#     MESSAGE into -> M_DIGEST.\\n# 13. Compare M_DIGEST == C_D:\\n# 14a: Match? Send length prefix &\\n#       b'#WELCOME#'\\n#    <- RETURN\\n# 14b: Mismatch? Send len prefix &\\n#       b'#FAILURE#'\\n#    <- CLOSE & AuthenticationError\\n# 15.                                 Receive 4 or 4+8 byte length prefix (net\\n#                                     order) again as in #4 into -> SIZE.\\n# 16.                                 Receive min(SIZE, 256) bytes -> M3.\\n# 17.                                 Compare M3 == b'#WELCOME#':\\n# 17a.                                Match? <- RETURN\\n# 17b.                                Mismatch? <- CLOSE & AuthenticationError\\n#\\n# If this RETURNed, the connection remains open: it has been authenticated.\\n#\\n# Length prefixes are used consistently. Even on the legacy protocol, this\\n# was good fortune and allowed us to evolve the protocol by using the length\\n# of the opening challenge or length of the returned digest as a signal as\\n# to which protocol the other end supports.\\n\\n_ALLOWED_DIGESTS = frozenset(\\n        {b'md5', b'sha256', b'sha384', b'sha3_256', b'sha3_384'})\\n_MAX_DIGEST_LEN = max(len(_) for _ in _ALLOWED_DIGESTS)\\n\\n# Old hmac-md5 only server versions from Python <=3.11 sent a message of this\\n# length. It happens to not match the length of any supported digest so we can\\n# use a message of this length to indicate that we should work in backwards\\n# compatible md5-only mode without a {digest_name} prefix on our response.\\n_MD5ONLY_MESSAGE_LENGTH = 20\\n_MD5_DIGEST_LEN = 16\\n_LEGACY_LENGTHS = (_MD5ONLY_MESSAGE_LENGTH, _MD5_DIGEST_LEN)\\n\\n\\ndef _get_digest_name_and_payload(message: bytes) -> (str, bytes):\\n    \\\"\\\"\\\"Returns a digest name and the payload for a response hash.\\n\\n    If a legacy protocol is detected based on the message length\\n    or contents the digest name returned will be empty to indicate\\n    legacy mode where MD5 and no digest prefix should be sent.\\n    \\\"\\\"\\\"\\n    # modern message format: b\\\"{digest}payload\\\" longer than 20 bytes\\n    # legacy message format: 16 or 20 byte b\\\"payload\\\"\\n    if len(message) in _LEGACY_LENGTHS:\\n        # Either this was a legacy server challenge, or we're processing\\n        # a reply from a legacy client that sent an unprefixed 16-byte\\n        # HMAC-MD5 response. All messages using the modern protocol will\\n        # be longer than either of these lengths.\\n        return '', message\\n    if (message.startswith(b'{') and\\n        (curly := message.find(b'}', 1, _MAX_DIGEST_LEN+2)) > 0):\\n        digest = message[1:curly]\\n        if digest in _ALLOWED_DIGESTS:\\n            payload = message[curly+1:]\\n            return digest.decode('ascii'), payload\\n    raise AuthenticationError(\\n            'unsupported message length, missing digest prefix, '\\n            f'or unsupported digest: {message=}')\\n\\n\\ndef _create_response(authkey, message):\\n    \\\"\\\"\\\"Create a MAC based on authkey and message\\n\\n    The MAC algorithm defaults to HMAC-MD5, unless MD5 is not available or\\n    the message has a '{digest_name}' prefix. For legacy HMAC-MD5, the response\\n    is the raw MAC, otherwise the response is prefixed with '{digest_name}',\\n    e.g. b'{sha256}abcdefg...'\\n\\n    Note: The MAC protects the entire message including the digest_name prefix.\\n    \\\"\\\"\\\"\\n    import hmac\\n    digest_name = _get_digest_name_and_payload(message)[0]\\n    # The MAC protects the entire message: digest header and payload.\\n    if not digest_name:\\n        # Legacy server without a {digest} prefix on message.\\n        # Generate a legacy non-prefixed HMAC-MD5 reply.\\n        try:\\n            return hmac.new(authkey, message, 'md5').digest()\\n        except ValueError:\\n            # HMAC-MD5 is not available (FIPS mode?), fall back to\\n            # HMAC-SHA2-256 modern protocol. The legacy server probably\\n            # doesn't support it and will reject us anyways. :shrug:\\n            digest_name = 'sha256'\\n    # Modern protocol, indicate the digest used in the reply.\\n    response = hmac.new(authkey, message, digest_name).digest()\\n    return b'{%s}%s' % (digest_name.encode('ascii'), response)\\n\\n\\ndef _verify_challenge(authkey, message, response):\\n    \\\"\\\"\\\"Verify MAC challenge\\n\\n    If our message did not include a digest_name prefix, the client is allowed\\n    to select a stronger digest_name from _ALLOWED_DIGESTS.\\n\\n    In case our message is prefixed, a client cannot downgrade to a weaker\\n    algorithm, because the MAC is calculated over the entire message\\n    including the '{digest_name}' prefix.\\n    \\\"\\\"\\\"\\n    import hmac\\n    response_digest, response_mac = _get_digest_name_and_payload(response)\\n    response_digest = response_digest or 'md5'\\n    try:\\n        expected = hmac.new(authkey, message, response_digest).digest()\\n    except ValueError:\\n        raise AuthenticationError(f'{response_digest=} unsupported')\\n    if len(expected) != len(response_mac):\\n        raise AuthenticationError(\\n                f'expected {response_digest!r} of length {len(expected)} '\\n                f'got {len(response_mac)}')\\n    if not hmac.compare_digest(expected, response_mac):\\n        raise AuthenticationError('digest received was wrong')\\n\\n\\ndef deliver_challenge(connection, authkey: bytes, digest_name='sha256'):\\n    if not isinstance(authkey, bytes):\\n        raise ValueError(\\n            \\\"Authkey must be bytes, not {0!s}\\\".format(type(authkey)))\\n    assert MESSAGE_LENGTH > _MD5ONLY_MESSAGE_LENGTH, \\\"protocol constraint\\\"\\n    message = os.urandom(MESSAGE_LENGTH)\\n    message = b'{%s}%s' % (digest_name.encode('ascii'), message)\\n    # Even when sending a challenge to a legacy client that does not support\\n    # digest prefixes, they'll take the entire thing as a challenge and\\n    # respond to it with a raw HMAC-MD5.\\n    connection.send_bytes(_CHALLENGE + message)\\n    response = connection.recv_bytes(256)        # reject large message\\n    try:\\n        _verify_challenge(authkey, message, response)\\n    except AuthenticationError:\\n        connection.send_bytes(_FAILURE)\\n        raise\\n    else:\\n        connection.send_bytes(_WELCOME)\\n\\n\\ndef answer_challenge(connection, authkey: bytes):\\n    if not isinstance(authkey, bytes):\\n        raise ValueError(\\n            \\\"Authkey must be bytes, not {0!s}\\\".format(type(authkey)))\\n    message = connection.recv_bytes(256)         # reject large message\\n    if not message.startswith(_CHALLENGE):\\n        raise AuthenticationError(\\n                f'Protocol error, expected challenge: {message=}')\\n    message = message[len(_CHALLENGE):]\\n    if len(message) < _MD5ONLY_MESSAGE_LENGTH:\\n        raise AuthenticationError('challenge too short: {len(message)} bytes')\\n    digest = _create_response(authkey, message)\\n    connection.send_bytes(digest)\\n    response = connection.recv_bytes(256)        # reject large message\\n    if response != _WELCOME:\\n        raise AuthenticationError('digest sent was rejected')\\n\\n#\\n# Support for using xmlrpclib for serialization\\n#\\n\\nclass ConnectionWrapper(object):\\n    def __init__(self, conn, dumps, loads):\\n        self._conn = conn\\n        self._dumps = dumps\\n        self._loads = loads\\n        for attr in ('fileno', 'close', 'poll', 'recv_bytes', 'send_bytes'):\\n            obj = getattr(conn, attr)\\n            setattr(self, attr, obj)\\n    def send(self, obj):\\n        s = self._dumps(obj)\\n        self._conn.send_bytes(s)\\n    def recv(self):\\n        s = self._conn.recv_bytes()\\n        return self._loads(s)\\n\\ndef _xml_dumps(obj):\\n    return xmlrpclib.dumps((obj,), None, None, None, 1).encode('utf-8')\\n\\ndef _xml_loads(s):\\n    (obj,), method = xmlrpclib.loads(s.decode('utf-8'))\\n    return obj\\n\\nclass XmlListener(Listener):\\n    def accept(self):\\n        global xmlrpclib\\n        import xmlrpc.client as xmlrpclib\\n        obj = Listener.accept(self)\\n        return ConnectionWrapper(obj, _xml_dumps, _xml_loads)\\n\\ndef XmlClient(*args, **kwds):\\n    global xmlrpclib\\n    import xmlrpc.client as xmlrpclib\\n    return ConnectionWrapper(Client(*args, **kwds), _xml_dumps, _xml_loads)\\n\\n#\\n# Wait\\n#\\n\\nif sys.platform == 'win32':\\n\\n    def _exhaustive_wait(handles, timeout):\\n        # Return ALL handles which are currently signalled.  (Only\\n        # returning the first signalled might create starvation issues.)\\n        L = list(handles)\\n        ready = []\\n        while L:\\n            res = _winapi.WaitForMultipleObjects(L, False, timeout)\\n            if res == WAIT_TIMEOUT:\\n                break\\n            elif WAIT_OBJECT_0 <= res < WAIT_OBJECT_0 + len(L):\\n                res -= WAIT_OBJECT_0\\n            elif WAIT_ABANDONED_0 <= res < WAIT_ABANDONED_0 + len(L):\\n                res -= WAIT_ABANDONED_0\\n            else:\\n                raise RuntimeError('Should not get here')\\n            ready.append(L[res])\\n            L = L[res+1:]\\n            timeout = 0\\n        return ready\\n\\n    _ready_errors = {_winapi.ERROR_BROKEN_PIPE, _winapi.ERROR_NETNAME_DELETED}\\n\\n    def wait(object_list, timeout=None):\\n        '''\\n        Wait till an object in object_list is ready/readable.\\n\\n        Returns list of those objects in object_list which are ready/readable.\\n        '''\\n        if timeout is None:\\n            timeout = INFINITE\\n        elif timeout < 0:\\n            timeout = 0\\n        else:\\n            timeout = int(timeout * 1000 + 0.5)\\n\\n        object_list = list(object_list)\\n        waithandle_to_obj = {}\\n        ov_list = []\\n        ready_objects = set()\\n        ready_handles = set()\\n\\n        try:\\n            for o in object_list:\\n                try:\\n                    fileno = getattr(o, 'fileno')\\n                except AttributeError:\\n                    waithandle_to_obj[o.__index__()] = o\\n                else:\\n                    # start an overlapped read of length zero\\n                    try:\\n                        ov, err = _winapi.ReadFile(fileno(), 0, True)\\n                    except OSError as e:\\n                        ov, err = None, e.winerror\\n                        if err not in _ready_errors:\\n                            raise\\n                    if err == _winapi.ERROR_IO_PENDING:\\n                        ov_list.append(ov)\\n                        waithandle_to_obj[ov.event] = o\\n                    else:\\n                        # If o.fileno() is an overlapped pipe handle and\\n                        # err == 0 then there is a zero length message\\n                        # in the pipe, but it HAS NOT been consumed...\\n                        if ov and sys.getwindowsversion()[:2] >= (6, 2):\\n                            # ... except on Windows 8 and later, where\\n                            # the message HAS been consumed.\\n                            try:\\n                                _, err = ov.GetOverlappedResult(False)\\n                            except OSError as e:\\n                                err = e.winerror\\n                            if not err and hasattr(o, '_got_empty_message'):\\n                                o._got_empty_message = True\\n                        ready_objects.add(o)\\n                        timeout = 0\\n\\n            ready_handles = _exhaustive_wait(waithandle_to_obj.keys(), timeout)\\n        finally:\\n            # request that overlapped reads stop\\n            for ov in ov_list:\\n                ov.cancel()\\n\\n            # wait for all overlapped reads to stop\\n            for ov in ov_list:\\n                try:\\n                    _, err = ov.GetOverlappedResult(True)\\n                except OSError as e:\\n                    err = e.winerror\\n                    if err not in _ready_errors:\\n                        raise\\n                if err != _winapi.ERROR_OPERATION_ABORTED:\\n                    o = waithandle_to_obj[ov.event]\\n                    ready_objects.add(o)\\n                    if err == 0:\\n                        # If o.fileno() is an overlapped pipe handle then\\n                        # a zero length message HAS been consumed.\\n                        if hasattr(o, '_got_empty_message'):\\n                            o._got_empty_message = True\\n\\n        ready_objects.update(waithandle_to_obj[h] for h in ready_handles)\\n        return [o for o in object_list if o in ready_objects]\\n\\nelse:\\n\\n    import selectors\\n\\n    # poll/select have the advantage of not requiring any extra file\\n    # descriptor, contrarily to epoll/kqueue (also, they require a single\\n    # syscall).\\n    if hasattr(selectors, 'PollSelector'):\\n        _WaitSelector = selectors.PollSelector\\n    else:\\n        _WaitSelector = selectors.SelectSelector\\n\\n    def wait(object_list, timeout=None):\\n        '''\\n        Wait till an object in object_list is ready/readable.\\n\\n        Returns list of those objects in object_list which are ready/readable.\\n        '''\\n        with _WaitSelector() as selector:\\n            for obj in object_list:\\n                selector.register(obj, selectors.EVENT_READ)\\n\\n            if timeout is not None:\\n                deadline = time.monotonic() + timeout\\n\\n            while True:\\n                ready = selector.select(timeout)\\n                if ready:\\n                    return [key.fileobj for (key, events) in ready]\\n                else:\\n                    if timeout is not None:\\n                        timeout = deadline - time.monotonic()\\n                        if timeout < 0:\\n                            return ready\\n\\n#\\n# Make connection and socket objects shareable if possible\\n#\\n\\nif sys.platform == 'win32':\\n    def reduce_connection(conn):\\n        handle = conn.fileno()\\n        with socket.fromfd(handle, socket.AF_INET, socket.SOCK_STREAM) as s:\\n            from . import resource_sharer\\n            ds = resource_sharer.DupSocket(s)\\n            return rebuild_connection, (ds, conn.readable, conn.writable)\\n    def rebuild_connection(ds, readable, writable):\\n        sock = ds.detach()\\n        return Connection(sock.detach(), readable, writable)\\n    reduction.register(Connection, reduce_connection)\\n\\n    def reduce_pipe_connection(conn):\\n        access = ((_winapi.FILE_GENERIC_READ if conn.readable else 0) |\\n                  (_winapi.FILE_GENERIC_WRITE if conn.writable else 0))\\n        dh = reduction.DupHandle(conn.fileno(), access)\\n        return rebuild_pipe_connection, (dh, conn.readable, conn.writable)\\n    def rebuild_pipe_connection(dh, readable, writable):\\n        handle = dh.detach()\\n        return PipeConnection(handle, readable, writable)\\n    reduction.register(PipeConnection, reduce_pipe_connection)\\n\\nelse:\\n    def reduce_connection(conn):\\n        df = reduction.DupFd(conn.fileno())\\n        return rebuild_connection, (df, conn.readable, conn.writable)\\n    def rebuild_connection(df, readable, writable):\\n        fd = df.detach()\\n        return Connection(fd, readable, writable)\\n    reduction.register(Connection, reduce_connection)\\n\", 1178], \"/usr/lib/python3.12/multiprocessing/queues.py\": [\"#\\n# Module implementing queues\\n#\\n# multiprocessing/queues.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\n__all__ = ['Queue', 'SimpleQueue', 'JoinableQueue']\\n\\nimport sys\\nimport os\\nimport threading\\nimport collections\\nimport time\\nimport types\\nimport weakref\\nimport errno\\n\\nfrom queue import Empty, Full\\n\\nimport _multiprocessing\\n\\nfrom . import connection\\nfrom . import context\\n_ForkingPickler = context.reduction.ForkingPickler\\n\\nfrom .util import debug, info, Finalize, register_after_fork, is_exiting\\n\\n#\\n# Queue type using a pipe, buffer and thread\\n#\\n\\nclass Queue(object):\\n\\n    def __init__(self, maxsize=0, *, ctx):\\n        if maxsize <= 0:\\n            # Can raise ImportError (see issues #3770 and #23400)\\n            from .synchronize import SEM_VALUE_MAX as maxsize\\n        self._maxsize = maxsize\\n        self._reader, self._writer = connection.Pipe(duplex=False)\\n        self._rlock = ctx.Lock()\\n        self._opid = os.getpid()\\n        if sys.platform == 'win32':\\n            self._wlock = None\\n        else:\\n            self._wlock = ctx.Lock()\\n        self._sem = ctx.BoundedSemaphore(maxsize)\\n        # For use by concurrent.futures\\n        self._ignore_epipe = False\\n        self._reset()\\n\\n        if sys.platform != 'win32':\\n            register_after_fork(self, Queue._after_fork)\\n\\n    def __getstate__(self):\\n        context.assert_spawning(self)\\n        return (self._ignore_epipe, self._maxsize, self._reader, self._writer,\\n                self._rlock, self._wlock, self._sem, self._opid)\\n\\n    def __setstate__(self, state):\\n        (self._ignore_epipe, self._maxsize, self._reader, self._writer,\\n         self._rlock, self._wlock, self._sem, self._opid) = state\\n        self._reset()\\n\\n    def _after_fork(self):\\n        debug('Queue._after_fork()')\\n        self._reset(after_fork=True)\\n\\n    def _reset(self, after_fork=False):\\n        if after_fork:\\n            self._notempty._at_fork_reinit()\\n        else:\\n            self._notempty = threading.Condition(threading.Lock())\\n        self._buffer = collections.deque()\\n        self._thread = None\\n        self._jointhread = None\\n        self._joincancelled = False\\n        self._closed = False\\n        self._close = None\\n        self._send_bytes = self._writer.send_bytes\\n        self._recv_bytes = self._reader.recv_bytes\\n        self._poll = self._reader.poll\\n\\n    def put(self, obj, block=True, timeout=None):\\n        if self._closed:\\n            raise ValueError(f\\\"Queue {self!r} is closed\\\")\\n        if not self._sem.acquire(block, timeout):\\n            raise Full\\n\\n        with self._notempty:\\n            if self._thread is None:\\n                self._start_thread()\\n            self._buffer.append(obj)\\n            self._notempty.notify()\\n\\n    def get(self, block=True, timeout=None):\\n        if self._closed:\\n            raise ValueError(f\\\"Queue {self!r} is closed\\\")\\n        if block and timeout is None:\\n            with self._rlock:\\n                res = self._recv_bytes()\\n            self._sem.release()\\n        else:\\n            if block:\\n                deadline = time.monotonic() + timeout\\n            if not self._rlock.acquire(block, timeout):\\n                raise Empty\\n            try:\\n                if block:\\n                    timeout = deadline - time.monotonic()\\n                    if not self._poll(timeout):\\n                        raise Empty\\n                elif not self._poll():\\n                    raise Empty\\n                res = self._recv_bytes()\\n                self._sem.release()\\n            finally:\\n                self._rlock.release()\\n        # unserialize the data after having released the lock\\n        return _ForkingPickler.loads(res)\\n\\n    def qsize(self):\\n        # Raises NotImplementedError on Mac OSX because of broken sem_getvalue()\\n        return self._maxsize - self._sem._semlock._get_value()\\n\\n    def empty(self):\\n        return not self._poll()\\n\\n    def full(self):\\n        return self._sem._semlock._is_zero()\\n\\n    def get_nowait(self):\\n        return self.get(False)\\n\\n    def put_nowait(self, obj):\\n        return self.put(obj, False)\\n\\n    def close(self):\\n        self._closed = True\\n        close = self._close\\n        if close:\\n            self._close = None\\n            close()\\n\\n    def join_thread(self):\\n        debug('Queue.join_thread()')\\n        assert self._closed, \\\"Queue {0!r} not closed\\\".format(self)\\n        if self._jointhread:\\n            self._jointhread()\\n\\n    def cancel_join_thread(self):\\n        debug('Queue.cancel_join_thread()')\\n        self._joincancelled = True\\n        try:\\n            self._jointhread.cancel()\\n        except AttributeError:\\n            pass\\n\\n    def _terminate_broken(self):\\n        # Close a Queue on error.\\n\\n        # gh-94777: Prevent queue writing to a pipe which is no longer read.\\n        self._reader.close()\\n\\n        # gh-107219: Close the connection writer which can unblock\\n        # Queue._feed() if it was stuck in send_bytes().\\n        if sys.platform == 'win32':\\n            self._writer.close()\\n\\n        self.close()\\n        self.join_thread()\\n\\n    def _start_thread(self):\\n        debug('Queue._start_thread()')\\n\\n        # Start thread which transfers data from buffer to pipe\\n        self._buffer.clear()\\n        self._thread = threading.Thread(\\n            target=Queue._feed,\\n            args=(self._buffer, self._notempty, self._send_bytes,\\n                  self._wlock, self._reader.close, self._writer.close,\\n                  self._ignore_epipe, self._on_queue_feeder_error,\\n                  self._sem),\\n            name='QueueFeederThread',\\n            daemon=True,\\n        )\\n\\n        try:\\n            debug('doing self._thread.start()')\\n            self._thread.start()\\n            debug('... done self._thread.start()')\\n        except:\\n            # gh-109047: During Python finalization, creating a thread\\n            # can fail with RuntimeError.\\n            self._thread = None\\n            raise\\n\\n        if not self._joincancelled:\\n            self._jointhread = Finalize(\\n                self._thread, Queue._finalize_join,\\n                [weakref.ref(self._thread)],\\n                exitpriority=-5\\n                )\\n\\n        # Send sentinel to the thread queue object when garbage collected\\n        self._close = Finalize(\\n            self, Queue._finalize_close,\\n            [self._buffer, self._notempty],\\n            exitpriority=10\\n            )\\n\\n    @staticmethod\\n    def _finalize_join(twr):\\n        debug('joining queue thread')\\n        thread = twr()\\n        if thread is not None:\\n            thread.join()\\n            debug('... queue thread joined')\\n        else:\\n            debug('... queue thread already dead')\\n\\n    @staticmethod\\n    def _finalize_close(buffer, notempty):\\n        debug('telling queue thread to quit')\\n        with notempty:\\n            buffer.append(_sentinel)\\n            notempty.notify()\\n\\n    @staticmethod\\n    def _feed(buffer, notempty, send_bytes, writelock, reader_close,\\n              writer_close, ignore_epipe, onerror, queue_sem):\\n        debug('starting thread to feed data to pipe')\\n        nacquire = notempty.acquire\\n        nrelease = notempty.release\\n        nwait = notempty.wait\\n        bpopleft = buffer.popleft\\n        sentinel = _sentinel\\n        if sys.platform != 'win32':\\n            wacquire = writelock.acquire\\n            wrelease = writelock.release\\n        else:\\n            wacquire = None\\n\\n        while 1:\\n            try:\\n                nacquire()\\n                try:\\n                    if not buffer:\\n                        nwait()\\n                finally:\\n                    nrelease()\\n                try:\\n                    while 1:\\n                        obj = bpopleft()\\n                        if obj is sentinel:\\n                            debug('feeder thread got sentinel -- exiting')\\n                            reader_close()\\n                            writer_close()\\n                            return\\n\\n                        # serialize the data before acquiring the lock\\n                        obj = _ForkingPickler.dumps(obj)\\n                        if wacquire is None:\\n                            send_bytes(obj)\\n                        else:\\n                            wacquire()\\n                            try:\\n                                send_bytes(obj)\\n                            finally:\\n                                wrelease()\\n                except IndexError:\\n                    pass\\n            except Exception as e:\\n                if ignore_epipe and getattr(e, 'errno', 0) == errno.EPIPE:\\n                    return\\n                # Since this runs in a daemon thread the resources it uses\\n                # may be become unusable while the process is cleaning up.\\n                # We ignore errors which happen after the process has\\n                # started to cleanup.\\n                if is_exiting():\\n                    info('error in queue thread: %s', e)\\n                    return\\n                else:\\n                    # Since the object has not been sent in the queue, we need\\n                    # to decrease the size of the queue. The error acts as\\n                    # if the object had been silently removed from the queue\\n                    # and this step is necessary to have a properly working\\n                    # queue.\\n                    queue_sem.release()\\n                    onerror(e, obj)\\n\\n    @staticmethod\\n    def _on_queue_feeder_error(e, obj):\\n        \\\"\\\"\\\"\\n        Private API hook called when feeding data in the background thread\\n        raises an exception.  For overriding by concurrent.futures.\\n        \\\"\\\"\\\"\\n        import traceback\\n        traceback.print_exc()\\n\\n    __class_getitem__ = classmethod(types.GenericAlias)\\n\\n\\n_sentinel = object()\\n\\n#\\n# A queue type which also supports join() and task_done() methods\\n#\\n# Note that if you do not call task_done() for each finished task then\\n# eventually the counter's semaphore may overflow causing Bad Things\\n# to happen.\\n#\\n\\nclass JoinableQueue(Queue):\\n\\n    def __init__(self, maxsize=0, *, ctx):\\n        Queue.__init__(self, maxsize, ctx=ctx)\\n        self._unfinished_tasks = ctx.Semaphore(0)\\n        self._cond = ctx.Condition()\\n\\n    def __getstate__(self):\\n        return Queue.__getstate__(self) + (self._cond, self._unfinished_tasks)\\n\\n    def __setstate__(self, state):\\n        Queue.__setstate__(self, state[:-2])\\n        self._cond, self._unfinished_tasks = state[-2:]\\n\\n    def put(self, obj, block=True, timeout=None):\\n        if self._closed:\\n            raise ValueError(f\\\"Queue {self!r} is closed\\\")\\n        if not self._sem.acquire(block, timeout):\\n            raise Full\\n\\n        with self._notempty, self._cond:\\n            if self._thread is None:\\n                self._start_thread()\\n            self._buffer.append(obj)\\n            self._unfinished_tasks.release()\\n            self._notempty.notify()\\n\\n    def task_done(self):\\n        with self._cond:\\n            if not self._unfinished_tasks.acquire(False):\\n                raise ValueError('task_done() called too many times')\\n            if self._unfinished_tasks._semlock._is_zero():\\n                self._cond.notify_all()\\n\\n    def join(self):\\n        with self._cond:\\n            if not self._unfinished_tasks._semlock._is_zero():\\n                self._cond.wait()\\n\\n#\\n# Simplified Queue type -- really just a locked pipe\\n#\\n\\nclass SimpleQueue(object):\\n\\n    def __init__(self, *, ctx):\\n        self._reader, self._writer = connection.Pipe(duplex=False)\\n        self._rlock = ctx.Lock()\\n        self._poll = self._reader.poll\\n        if sys.platform == 'win32':\\n            self._wlock = None\\n        else:\\n            self._wlock = ctx.Lock()\\n\\n    def close(self):\\n        self._reader.close()\\n        self._writer.close()\\n\\n    def empty(self):\\n        return not self._poll()\\n\\n    def __getstate__(self):\\n        context.assert_spawning(self)\\n        return (self._reader, self._writer, self._rlock, self._wlock)\\n\\n    def __setstate__(self, state):\\n        (self._reader, self._writer, self._rlock, self._wlock) = state\\n        self._poll = self._reader.poll\\n\\n    def get(self):\\n        with self._rlock:\\n            res = self._reader.recv_bytes()\\n        # unserialize the data after having released the lock\\n        return _ForkingPickler.loads(res)\\n\\n    def put(self, obj):\\n        # serialize the data before acquiring the lock\\n        obj = _ForkingPickler.dumps(obj)\\n        if self._wlock is None:\\n            # writes to a message oriented win32 pipe are atomic\\n            self._writer.send_bytes(obj)\\n        else:\\n            with self._wlock:\\n                self._writer.send_bytes(obj)\\n\\n    __class_getitem__ = classmethod(types.GenericAlias)\\n\", 401], \"/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py\": [\"import os\\nfrom multiprocessing import Pool\\n\\n\\ndef f(x):\\n    return x**x\\n\\n\\nif __name__ == \\\"__main__\\\":\\n    process_num = 5\\n    with Pool(processes=process_num) as pool:\\n        print(pool.map(f, range(10)))\\n\\n        for i in pool.imap_unordered(f, range(10)):\\n            print(i)\\n\\n        res = pool.apply_async(f, (20,))  # runs in *only* one process\\n        print(res.get(timeout=1))  # prints \\\"400\\\"\\n\\n        res = pool.apply_async(os.getpid, ())  # runs in *only* one process\\n        print(res.get(timeout=1))  # prints the PID of that process\\n\\n        multiple_results = [pool.apply_async(os.getpid, ()) for i in range(process_num)]\\n        print([res.get(timeout=1) for res in multiple_results])\\n\", 24], \"/usr/lib/python3.12/multiprocessing/reduction.py\": [\"#\\n# Module which deals with pickling of objects.\\n#\\n# multiprocessing/reduction.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\nfrom abc import ABCMeta\\nimport copyreg\\nimport functools\\nimport io\\nimport os\\nimport pickle\\nimport socket\\nimport sys\\n\\nfrom . import context\\n\\n__all__ = ['send_handle', 'recv_handle', 'ForkingPickler', 'register', 'dump']\\n\\n\\nHAVE_SEND_HANDLE = (sys.platform == 'win32' or\\n                    (hasattr(socket, 'CMSG_LEN') and\\n                     hasattr(socket, 'SCM_RIGHTS') and\\n                     hasattr(socket.socket, 'sendmsg')))\\n\\n#\\n# Pickler subclass\\n#\\n\\nclass ForkingPickler(pickle.Pickler):\\n    '''Pickler subclass used by multiprocessing.'''\\n    _extra_reducers = {}\\n    _copyreg_dispatch_table = copyreg.dispatch_table\\n\\n    def __init__(self, *args):\\n        super().__init__(*args)\\n        self.dispatch_table = self._copyreg_dispatch_table.copy()\\n        self.dispatch_table.update(self._extra_reducers)\\n\\n    @classmethod\\n    def register(cls, type, reduce):\\n        '''Register a reduce function for a type.'''\\n        cls._extra_reducers[type] = reduce\\n\\n    @classmethod\\n    def dumps(cls, obj, protocol=None):\\n        buf = io.BytesIO()\\n        cls(buf, protocol).dump(obj)\\n        return buf.getbuffer()\\n\\n    loads = pickle.loads\\n\\nregister = ForkingPickler.register\\n\\ndef dump(obj, file, protocol=None):\\n    '''Replacement for pickle.dump() using ForkingPickler.'''\\n    ForkingPickler(file, protocol).dump(obj)\\n\\n#\\n# Platform specific definitions\\n#\\n\\nif sys.platform == 'win32':\\n    # Windows\\n    __all__ += ['DupHandle', 'duplicate', 'steal_handle']\\n    import _winapi\\n\\n    def duplicate(handle, target_process=None, inheritable=False,\\n                  *, source_process=None):\\n        '''Duplicate a handle.  (target_process is a handle not a pid!)'''\\n        current_process = _winapi.GetCurrentProcess()\\n        if source_process is None:\\n            source_process = current_process\\n        if target_process is None:\\n            target_process = current_process\\n        return _winapi.DuplicateHandle(\\n            source_process, handle, target_process,\\n            0, inheritable, _winapi.DUPLICATE_SAME_ACCESS)\\n\\n    def steal_handle(source_pid, handle):\\n        '''Steal a handle from process identified by source_pid.'''\\n        source_process_handle = _winapi.OpenProcess(\\n            _winapi.PROCESS_DUP_HANDLE, False, source_pid)\\n        try:\\n            return _winapi.DuplicateHandle(\\n                source_process_handle, handle,\\n                _winapi.GetCurrentProcess(), 0, False,\\n                _winapi.DUPLICATE_SAME_ACCESS | _winapi.DUPLICATE_CLOSE_SOURCE)\\n        finally:\\n            _winapi.CloseHandle(source_process_handle)\\n\\n    def send_handle(conn, handle, destination_pid):\\n        '''Send a handle over a local connection.'''\\n        dh = DupHandle(handle, _winapi.DUPLICATE_SAME_ACCESS, destination_pid)\\n        conn.send(dh)\\n\\n    def recv_handle(conn):\\n        '''Receive a handle over a local connection.'''\\n        return conn.recv().detach()\\n\\n    class DupHandle(object):\\n        '''Picklable wrapper for a handle.'''\\n        def __init__(self, handle, access, pid=None):\\n            if pid is None:\\n                # We just duplicate the handle in the current process and\\n                # let the receiving process steal the handle.\\n                pid = os.getpid()\\n            proc = _winapi.OpenProcess(_winapi.PROCESS_DUP_HANDLE, False, pid)\\n            try:\\n                self._handle = _winapi.DuplicateHandle(\\n                    _winapi.GetCurrentProcess(),\\n                    handle, proc, access, False, 0)\\n            finally:\\n                _winapi.CloseHandle(proc)\\n            self._access = access\\n            self._pid = pid\\n\\n        def detach(self):\\n            '''Get the handle.  This should only be called once.'''\\n            # retrieve handle from process which currently owns it\\n            if self._pid == os.getpid():\\n                # The handle has already been duplicated for this process.\\n                return self._handle\\n            # We must steal the handle from the process whose pid is self._pid.\\n            proc = _winapi.OpenProcess(_winapi.PROCESS_DUP_HANDLE, False,\\n                                       self._pid)\\n            try:\\n                return _winapi.DuplicateHandle(\\n                    proc, self._handle, _winapi.GetCurrentProcess(),\\n                    self._access, False, _winapi.DUPLICATE_CLOSE_SOURCE)\\n            finally:\\n                _winapi.CloseHandle(proc)\\n\\nelse:\\n    # Unix\\n    __all__ += ['DupFd', 'sendfds', 'recvfds']\\n    import array\\n\\n    # On MacOSX we should acknowledge receipt of fds -- see Issue14669\\n    ACKNOWLEDGE = sys.platform == 'darwin'\\n\\n    def sendfds(sock, fds):\\n        '''Send an array of fds over an AF_UNIX socket.'''\\n        fds = array.array('i', fds)\\n        msg = bytes([len(fds) % 256])\\n        sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, fds)])\\n        if ACKNOWLEDGE and sock.recv(1) != b'A':\\n            raise RuntimeError('did not receive acknowledgement of fd')\\n\\n    def recvfds(sock, size):\\n        '''Receive an array of fds over an AF_UNIX socket.'''\\n        a = array.array('i')\\n        bytes_size = a.itemsize * size\\n        msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_SPACE(bytes_size))\\n        if not msg and not ancdata:\\n            raise EOFError\\n        try:\\n            if ACKNOWLEDGE:\\n                sock.send(b'A')\\n            if len(ancdata) != 1:\\n                raise RuntimeError('received %d items of ancdata' %\\n                                   len(ancdata))\\n            cmsg_level, cmsg_type, cmsg_data = ancdata[0]\\n            if (cmsg_level == socket.SOL_SOCKET and\\n                cmsg_type == socket.SCM_RIGHTS):\\n                if len(cmsg_data) % a.itemsize != 0:\\n                    raise ValueError\\n                a.frombytes(cmsg_data)\\n                if len(a) % 256 != msg[0]:\\n                    raise AssertionError(\\n                        \\\"Len is {0:n} but msg[0] is {1!r}\\\".format(\\n                            len(a), msg[0]))\\n                return list(a)\\n        except (ValueError, IndexError):\\n            pass\\n        raise RuntimeError('Invalid data received')\\n\\n    def send_handle(conn, handle, destination_pid):\\n        '''Send a handle over a local connection.'''\\n        with socket.fromfd(conn.fileno(), socket.AF_UNIX, socket.SOCK_STREAM) as s:\\n            sendfds(s, [handle])\\n\\n    def recv_handle(conn):\\n        '''Receive a handle over a local connection.'''\\n        with socket.fromfd(conn.fileno(), socket.AF_UNIX, socket.SOCK_STREAM) as s:\\n            return recvfds(s, 1)[0]\\n\\n    def DupFd(fd):\\n        '''Return a wrapper for an fd.'''\\n        popen_obj = context.get_spawning_popen()\\n        if popen_obj is not None:\\n            return popen_obj.DupFd(popen_obj.duplicate_for_child(fd))\\n        elif HAVE_SEND_HANDLE:\\n            from . import resource_sharer\\n            return resource_sharer.DupFd(fd)\\n        else:\\n            raise ValueError('SCM_RIGHTS appears not to be available')\\n\\n#\\n# Try making some callable types picklable\\n#\\n\\ndef _reduce_method(m):\\n    if m.__self__ is None:\\n        return getattr, (m.__class__, m.__func__.__name__)\\n    else:\\n        return getattr, (m.__self__, m.__func__.__name__)\\nclass _C:\\n    def f(self):\\n        pass\\nregister(type(_C().f), _reduce_method)\\n\\n\\ndef _reduce_method_descriptor(m):\\n    return getattr, (m.__objclass__, m.__name__)\\nregister(type(list.append), _reduce_method_descriptor)\\nregister(type(int.__add__), _reduce_method_descriptor)\\n\\n\\ndef _reduce_partial(p):\\n    return _rebuild_partial, (p.func, p.args, p.keywords or {})\\ndef _rebuild_partial(func, args, keywords):\\n    return functools.partial(func, *args, **keywords)\\nregister(functools.partial, _reduce_partial)\\n\\n#\\n# Make sockets picklable\\n#\\n\\nif sys.platform == 'win32':\\n    def _reduce_socket(s):\\n        from .resource_sharer import DupSocket\\n        return _rebuild_socket, (DupSocket(s),)\\n    def _rebuild_socket(ds):\\n        return ds.detach()\\n    register(socket.socket, _reduce_socket)\\n\\nelse:\\n    def _reduce_socket(s):\\n        df = DupFd(s.fileno())\\n        return _rebuild_socket, (df, s.family, s.type, s.proto)\\n    def _rebuild_socket(df, family, type, proto):\\n        fd = df.detach()\\n        return socket.socket(family, type, proto, fileno=fd)\\n    register(socket.socket, _reduce_socket)\\n\\n\\nclass AbstractReducer(metaclass=ABCMeta):\\n    '''Abstract base class for use in implementing a Reduction class\\n    suitable for use in replacing the standard reduction mechanism\\n    used in multiprocessing.'''\\n    ForkingPickler = ForkingPickler\\n    register = register\\n    dump = dump\\n    send_handle = send_handle\\n    recv_handle = recv_handle\\n\\n    if sys.platform == 'win32':\\n        steal_handle = steal_handle\\n        duplicate = duplicate\\n        DupHandle = DupHandle\\n    else:\\n        sendfds = sendfds\\n        recvfds = recvfds\\n        DupFd = DupFd\\n\\n    _reduce_method = _reduce_method\\n    _reduce_method_descriptor = _reduce_method_descriptor\\n    _rebuild_partial = _rebuild_partial\\n    _reduce_socket = _reduce_socket\\n    _rebuild_socket = _rebuild_socket\\n\\n    def __init__(self, *args):\\n        register(type(_C().f), _reduce_method)\\n        register(type(list.append), _reduce_method_descriptor)\\n        register(type(int.__add__), _reduce_method_descriptor)\\n        register(functools.partial, _reduce_partial)\\n        register(socket.socket, _reduce_socket)\\n\", 281], \"/usr/lib/python3.12/multiprocessing/pool.py\": [\"#\\n# Module providing the `Pool` class for managing a process pool\\n#\\n# multiprocessing/pool.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\n__all__ = ['Pool', 'ThreadPool']\\n\\n#\\n# Imports\\n#\\n\\nimport collections\\nimport itertools\\nimport os\\nimport queue\\nimport threading\\nimport time\\nimport traceback\\nimport types\\nimport warnings\\n\\n# If threading is available then ThreadPool should be provided.  Therefore\\n# we avoid top-level imports which are liable to fail on some systems.\\nfrom . import util\\nfrom . import get_context, TimeoutError\\nfrom .connection import wait\\n\\n#\\n# Constants representing the state of a pool\\n#\\n\\nINIT = \\\"INIT\\\"\\nRUN = \\\"RUN\\\"\\nCLOSE = \\\"CLOSE\\\"\\nTERMINATE = \\\"TERMINATE\\\"\\n\\n#\\n# Miscellaneous\\n#\\n\\njob_counter = itertools.count()\\n\\ndef mapstar(args):\\n    return list(map(*args))\\n\\ndef starmapstar(args):\\n    return list(itertools.starmap(args[0], args[1]))\\n\\n#\\n# Hack to embed stringification of remote traceback in local traceback\\n#\\n\\nclass RemoteTraceback(Exception):\\n    def __init__(self, tb):\\n        self.tb = tb\\n    def __str__(self):\\n        return self.tb\\n\\nclass ExceptionWithTraceback:\\n    def __init__(self, exc, tb):\\n        tb = traceback.format_exception(type(exc), exc, tb)\\n        tb = ''.join(tb)\\n        self.exc = exc\\n        self.tb = '\\\\n\\\"\\\"\\\"\\\\n%s\\\"\\\"\\\"' % tb\\n    def __reduce__(self):\\n        return rebuild_exc, (self.exc, self.tb)\\n\\ndef rebuild_exc(exc, tb):\\n    exc.__cause__ = RemoteTraceback(tb)\\n    return exc\\n\\n#\\n# Code run by worker processes\\n#\\n\\nclass MaybeEncodingError(Exception):\\n    \\\"\\\"\\\"Wraps possible unpickleable errors, so they can be\\n    safely sent through the socket.\\\"\\\"\\\"\\n\\n    def __init__(self, exc, value):\\n        self.exc = repr(exc)\\n        self.value = repr(value)\\n        super(MaybeEncodingError, self).__init__(self.exc, self.value)\\n\\n    def __str__(self):\\n        return \\\"Error sending result: '%s'. Reason: '%s'\\\" % (self.value,\\n                                                             self.exc)\\n\\n    def __repr__(self):\\n        return \\\"<%s: %s>\\\" % (self.__class__.__name__, self)\\n\\n\\ndef worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None,\\n           wrap_exception=False):\\n    if (maxtasks is not None) and not (isinstance(maxtasks, int)\\n                                       and maxtasks >= 1):\\n        raise AssertionError(\\\"Maxtasks {!r} is not valid\\\".format(maxtasks))\\n    put = outqueue.put\\n    get = inqueue.get\\n    if hasattr(inqueue, '_writer'):\\n        inqueue._writer.close()\\n        outqueue._reader.close()\\n\\n    if initializer is not None:\\n        initializer(*initargs)\\n\\n    completed = 0\\n    while maxtasks is None or (maxtasks and completed < maxtasks):\\n        try:\\n            task = get()\\n        except (EOFError, OSError):\\n            util.debug('worker got EOFError or OSError -- exiting')\\n            break\\n\\n        if task is None:\\n            util.debug('worker got sentinel -- exiting')\\n            break\\n\\n        job, i, func, args, kwds = task\\n        try:\\n            result = (True, func(*args, **kwds))\\n        except Exception as e:\\n            if wrap_exception and func is not _helper_reraises_exception:\\n                e = ExceptionWithTraceback(e, e.__traceback__)\\n            result = (False, e)\\n        try:\\n            put((job, i, result))\\n        except Exception as e:\\n            wrapped = MaybeEncodingError(e, result[1])\\n            util.debug(\\\"Possible encoding error while sending result: %s\\\" % (\\n                wrapped))\\n            put((job, i, (False, wrapped)))\\n\\n        task = job = result = func = args = kwds = None\\n        completed += 1\\n    util.debug('worker exiting after %d tasks' % completed)\\n\\ndef _helper_reraises_exception(ex):\\n    'Pickle-able helper function for use by _guarded_task_generation.'\\n    raise ex\\n\\n#\\n# Class representing a process pool\\n#\\n\\nclass _PoolCache(dict):\\n    \\\"\\\"\\\"\\n    Class that implements a cache for the Pool class that will notify\\n    the pool management threads every time the cache is emptied. The\\n    notification is done by the use of a queue that is provided when\\n    instantiating the cache.\\n    \\\"\\\"\\\"\\n    def __init__(self, /, *args, notifier=None, **kwds):\\n        self.notifier = notifier\\n        super().__init__(*args, **kwds)\\n\\n    def __delitem__(self, item):\\n        super().__delitem__(item)\\n\\n        # Notify that the cache is empty. This is important because the\\n        # pool keeps maintaining workers until the cache gets drained. This\\n        # eliminates a race condition in which a task is finished after the\\n        # the pool's _handle_workers method has enter another iteration of the\\n        # loop. In this situation, the only event that can wake up the pool\\n        # is the cache to be emptied (no more tasks available).\\n        if not self:\\n            self.notifier.put(None)\\n\\nclass Pool(object):\\n    '''\\n    Class which supports an async version of applying functions to arguments.\\n    '''\\n    _wrap_exception = True\\n\\n    @staticmethod\\n    def Process(ctx, *args, **kwds):\\n        return ctx.Process(*args, **kwds)\\n\\n    def __init__(self, processes=None, initializer=None, initargs=(),\\n                 maxtasksperchild=None, context=None):\\n        # Attributes initialized early to make sure that they exist in\\n        # __del__() if __init__() raises an exception\\n        self._pool = []\\n        self._state = INIT\\n\\n        self._ctx = context or get_context()\\n        self._setup_queues()\\n        self._taskqueue = queue.SimpleQueue()\\n        # The _change_notifier queue exist to wake up self._handle_workers()\\n        # when the cache (self._cache) is empty or when there is a change in\\n        # the _state variable of the thread that runs _handle_workers.\\n        self._change_notifier = self._ctx.SimpleQueue()\\n        self._cache = _PoolCache(notifier=self._change_notifier)\\n        self._maxtasksperchild = maxtasksperchild\\n        self._initializer = initializer\\n        self._initargs = initargs\\n\\n        if processes is None:\\n            processes = os.cpu_count() or 1\\n        if processes < 1:\\n            raise ValueError(\\\"Number of processes must be at least 1\\\")\\n        if maxtasksperchild is not None:\\n            if not isinstance(maxtasksperchild, int) or maxtasksperchild <= 0:\\n                raise ValueError(\\\"maxtasksperchild must be a positive int or None\\\")\\n\\n        if initializer is not None and not callable(initializer):\\n            raise TypeError('initializer must be a callable')\\n\\n        self._processes = processes\\n        try:\\n            self._repopulate_pool()\\n        except Exception:\\n            for p in self._pool:\\n                if p.exitcode is None:\\n                    p.terminate()\\n            for p in self._pool:\\n                p.join()\\n            raise\\n\\n        sentinels = self._get_sentinels()\\n\\n        self._worker_handler = threading.Thread(\\n            target=Pool._handle_workers,\\n            args=(self._cache, self._taskqueue, self._ctx, self.Process,\\n                  self._processes, self._pool, self._inqueue, self._outqueue,\\n                  self._initializer, self._initargs, self._maxtasksperchild,\\n                  self._wrap_exception, sentinels, self._change_notifier)\\n            )\\n        self._worker_handler.daemon = True\\n        self._worker_handler._state = RUN\\n        self._worker_handler.start()\\n\\n\\n        self._task_handler = threading.Thread(\\n            target=Pool._handle_tasks,\\n            args=(self._taskqueue, self._quick_put, self._outqueue,\\n                  self._pool, self._cache)\\n            )\\n        self._task_handler.daemon = True\\n        self._task_handler._state = RUN\\n        self._task_handler.start()\\n\\n        self._result_handler = threading.Thread(\\n            target=Pool._handle_results,\\n            args=(self._outqueue, self._quick_get, self._cache)\\n            )\\n        self._result_handler.daemon = True\\n        self._result_handler._state = RUN\\n        self._result_handler.start()\\n\\n        self._terminate = util.Finalize(\\n            self, self._terminate_pool,\\n            args=(self._taskqueue, self._inqueue, self._outqueue, self._pool,\\n                  self._change_notifier, self._worker_handler, self._task_handler,\\n                  self._result_handler, self._cache),\\n            exitpriority=15\\n            )\\n        self._state = RUN\\n\\n    # Copy globals as function locals to make sure that they are available\\n    # during Python shutdown when the Pool is destroyed.\\n    def __del__(self, _warn=warnings.warn, RUN=RUN):\\n        if self._state == RUN:\\n            _warn(f\\\"unclosed running multiprocessing pool {self!r}\\\",\\n                  ResourceWarning, source=self)\\n            if getattr(self, '_change_notifier', None) is not None:\\n                self._change_notifier.put(None)\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f'<{cls.__module__}.{cls.__qualname__} '\\n                f'state={self._state} '\\n                f'pool_size={len(self._pool)}>')\\n\\n    def _get_sentinels(self):\\n        task_queue_sentinels = [self._outqueue._reader]\\n        self_notifier_sentinels = [self._change_notifier._reader]\\n        return [*task_queue_sentinels, *self_notifier_sentinels]\\n\\n    @staticmethod\\n    def _get_worker_sentinels(workers):\\n        return [worker.sentinel for worker in\\n                workers if hasattr(worker, \\\"sentinel\\\")]\\n\\n    @staticmethod\\n    def _join_exited_workers(pool):\\n        \\\"\\\"\\\"Cleanup after any worker processes which have exited due to reaching\\n        their specified lifetime.  Returns True if any workers were cleaned up.\\n        \\\"\\\"\\\"\\n        cleaned = False\\n        for i in reversed(range(len(pool))):\\n            worker = pool[i]\\n            if worker.exitcode is not None:\\n                # worker exited\\n                util.debug('cleaning up worker %d' % i)\\n                worker.join()\\n                cleaned = True\\n                del pool[i]\\n        return cleaned\\n\\n    def _repopulate_pool(self):\\n        return self._repopulate_pool_static(self._ctx, self.Process,\\n                                            self._processes,\\n                                            self._pool, self._inqueue,\\n                                            self._outqueue, self._initializer,\\n                                            self._initargs,\\n                                            self._maxtasksperchild,\\n                                            self._wrap_exception)\\n\\n    @staticmethod\\n    def _repopulate_pool_static(ctx, Process, processes, pool, inqueue,\\n                                outqueue, initializer, initargs,\\n                                maxtasksperchild, wrap_exception):\\n        \\\"\\\"\\\"Bring the number of pool processes up to the specified number,\\n        for use after reaping workers which have exited.\\n        \\\"\\\"\\\"\\n        for i in range(processes - len(pool)):\\n            w = Process(ctx, target=worker,\\n                        args=(inqueue, outqueue,\\n                              initializer,\\n                              initargs, maxtasksperchild,\\n                              wrap_exception))\\n            w.name = w.name.replace('Process', 'PoolWorker')\\n            w.daemon = True\\n            w.start()\\n            pool.append(w)\\n            util.debug('added worker')\\n\\n    @staticmethod\\n    def _maintain_pool(ctx, Process, processes, pool, inqueue, outqueue,\\n                       initializer, initargs, maxtasksperchild,\\n                       wrap_exception):\\n        \\\"\\\"\\\"Clean up any exited workers and start replacements for them.\\n        \\\"\\\"\\\"\\n        if Pool._join_exited_workers(pool):\\n            Pool._repopulate_pool_static(ctx, Process, processes, pool,\\n                                         inqueue, outqueue, initializer,\\n                                         initargs, maxtasksperchild,\\n                                         wrap_exception)\\n\\n    def _setup_queues(self):\\n        self._inqueue = self._ctx.SimpleQueue()\\n        self._outqueue = self._ctx.SimpleQueue()\\n        self._quick_put = self._inqueue._writer.send\\n        self._quick_get = self._outqueue._reader.recv\\n\\n    def _check_running(self):\\n        if self._state != RUN:\\n            raise ValueError(\\\"Pool not running\\\")\\n\\n    def apply(self, func, args=(), kwds={}):\\n        '''\\n        Equivalent of `func(*args, **kwds)`.\\n        Pool must be running.\\n        '''\\n        return self.apply_async(func, args, kwds).get()\\n\\n    def map(self, func, iterable, chunksize=None):\\n        '''\\n        Apply `func` to each element in `iterable`, collecting the results\\n        in a list that is returned.\\n        '''\\n        return self._map_async(func, iterable, mapstar, chunksize).get()\\n\\n    def starmap(self, func, iterable, chunksize=None):\\n        '''\\n        Like `map()` method but the elements of the `iterable` are expected to\\n        be iterables as well and will be unpacked as arguments. Hence\\n        `func` and (a, b) becomes func(a, b).\\n        '''\\n        return self._map_async(func, iterable, starmapstar, chunksize).get()\\n\\n    def starmap_async(self, func, iterable, chunksize=None, callback=None,\\n            error_callback=None):\\n        '''\\n        Asynchronous version of `starmap()` method.\\n        '''\\n        return self._map_async(func, iterable, starmapstar, chunksize,\\n                               callback, error_callback)\\n\\n    def _guarded_task_generation(self, result_job, func, iterable):\\n        '''Provides a generator of tasks for imap and imap_unordered with\\n        appropriate handling for iterables which throw exceptions during\\n        iteration.'''\\n        try:\\n            i = -1\\n            for i, x in enumerate(iterable):\\n                yield (result_job, i, func, (x,), {})\\n        except Exception as e:\\n            yield (result_job, i+1, _helper_reraises_exception, (e,), {})\\n\\n    def imap(self, func, iterable, chunksize=1):\\n        '''\\n        Equivalent of `map()` -- can be MUCH slower than `Pool.map()`.\\n        '''\\n        self._check_running()\\n        if chunksize == 1:\\n            result = IMapIterator(self)\\n            self._taskqueue.put(\\n                (\\n                    self._guarded_task_generation(result._job, func, iterable),\\n                    result._set_length\\n                ))\\n            return result\\n        else:\\n            if chunksize < 1:\\n                raise ValueError(\\n                    \\\"Chunksize must be 1+, not {0:n}\\\".format(\\n                        chunksize))\\n            task_batches = Pool._get_tasks(func, iterable, chunksize)\\n            result = IMapIterator(self)\\n            self._taskqueue.put(\\n                (\\n                    self._guarded_task_generation(result._job,\\n                                                  mapstar,\\n                                                  task_batches),\\n                    result._set_length\\n                ))\\n            return (item for chunk in result for item in chunk)\\n\\n    def imap_unordered(self, func, iterable, chunksize=1):\\n        '''\\n        Like `imap()` method but ordering of results is arbitrary.\\n        '''\\n        self._check_running()\\n        if chunksize == 1:\\n            result = IMapUnorderedIterator(self)\\n            self._taskqueue.put(\\n                (\\n                    self._guarded_task_generation(result._job, func, iterable),\\n                    result._set_length\\n                ))\\n            return result\\n        else:\\n            if chunksize < 1:\\n                raise ValueError(\\n                    \\\"Chunksize must be 1+, not {0!r}\\\".format(chunksize))\\n            task_batches = Pool._get_tasks(func, iterable, chunksize)\\n            result = IMapUnorderedIterator(self)\\n            self._taskqueue.put(\\n                (\\n                    self._guarded_task_generation(result._job,\\n                                                  mapstar,\\n                                                  task_batches),\\n                    result._set_length\\n                ))\\n            return (item for chunk in result for item in chunk)\\n\\n    def apply_async(self, func, args=(), kwds={}, callback=None,\\n            error_callback=None):\\n        '''\\n        Asynchronous version of `apply()` method.\\n        '''\\n        self._check_running()\\n        result = ApplyResult(self, callback, error_callback)\\n        self._taskqueue.put(([(result._job, 0, func, args, kwds)], None))\\n        return result\\n\\n    def map_async(self, func, iterable, chunksize=None, callback=None,\\n            error_callback=None):\\n        '''\\n        Asynchronous version of `map()` method.\\n        '''\\n        return self._map_async(func, iterable, mapstar, chunksize, callback,\\n            error_callback)\\n\\n    def _map_async(self, func, iterable, mapper, chunksize=None, callback=None,\\n            error_callback=None):\\n        '''\\n        Helper function to implement map, starmap and their async counterparts.\\n        '''\\n        self._check_running()\\n        if not hasattr(iterable, '__len__'):\\n            iterable = list(iterable)\\n\\n        if chunksize is None:\\n            chunksize, extra = divmod(len(iterable), len(self._pool) * 4)\\n            if extra:\\n                chunksize += 1\\n        if len(iterable) == 0:\\n            chunksize = 0\\n\\n        task_batches = Pool._get_tasks(func, iterable, chunksize)\\n        result = MapResult(self, chunksize, len(iterable), callback,\\n                           error_callback=error_callback)\\n        self._taskqueue.put(\\n            (\\n                self._guarded_task_generation(result._job,\\n                                              mapper,\\n                                              task_batches),\\n                None\\n            )\\n        )\\n        return result\\n\\n    @staticmethod\\n    def _wait_for_updates(sentinels, change_notifier, timeout=None):\\n        wait(sentinels, timeout=timeout)\\n        while not change_notifier.empty():\\n            change_notifier.get()\\n\\n    @classmethod\\n    def _handle_workers(cls, cache, taskqueue, ctx, Process, processes,\\n                        pool, inqueue, outqueue, initializer, initargs,\\n                        maxtasksperchild, wrap_exception, sentinels,\\n                        change_notifier):\\n        thread = threading.current_thread()\\n\\n        # Keep maintaining workers until the cache gets drained, unless the pool\\n        # is terminated.\\n        while thread._state == RUN or (cache and thread._state != TERMINATE):\\n            cls._maintain_pool(ctx, Process, processes, pool, inqueue,\\n                               outqueue, initializer, initargs,\\n                               maxtasksperchild, wrap_exception)\\n\\n            current_sentinels = [*cls._get_worker_sentinels(pool), *sentinels]\\n\\n            cls._wait_for_updates(current_sentinels, change_notifier)\\n        # send sentinel to stop workers\\n        taskqueue.put(None)\\n        util.debug('worker handler exiting')\\n\\n    @staticmethod\\n    def _handle_tasks(taskqueue, put, outqueue, pool, cache):\\n        thread = threading.current_thread()\\n\\n        for taskseq, set_length in iter(taskqueue.get, None):\\n            task = None\\n            try:\\n                # iterating taskseq cannot fail\\n                for task in taskseq:\\n                    if thread._state != RUN:\\n                        util.debug('task handler found thread._state != RUN')\\n                        break\\n                    try:\\n                        put(task)\\n                    except Exception as e:\\n                        job, idx = task[:2]\\n                        try:\\n                            cache[job]._set(idx, (False, e))\\n                        except KeyError:\\n                            pass\\n                else:\\n                    if set_length:\\n                        util.debug('doing set_length()')\\n                        idx = task[1] if task else -1\\n                        set_length(idx + 1)\\n                    continue\\n                break\\n            finally:\\n                task = taskseq = job = None\\n        else:\\n            util.debug('task handler got sentinel')\\n\\n        try:\\n            # tell result handler to finish when cache is empty\\n            util.debug('task handler sending sentinel to result handler')\\n            outqueue.put(None)\\n\\n            # tell workers there is no more work\\n            util.debug('task handler sending sentinel to workers')\\n            for p in pool:\\n                put(None)\\n        except OSError:\\n            util.debug('task handler got OSError when sending sentinels')\\n\\n        util.debug('task handler exiting')\\n\\n    @staticmethod\\n    def _handle_results(outqueue, get, cache):\\n        thread = threading.current_thread()\\n\\n        while 1:\\n            try:\\n                task = get()\\n            except (OSError, EOFError):\\n                util.debug('result handler got EOFError/OSError -- exiting')\\n                return\\n\\n            if thread._state != RUN:\\n                assert thread._state == TERMINATE, \\\"Thread not in TERMINATE\\\"\\n                util.debug('result handler found thread._state=TERMINATE')\\n                break\\n\\n            if task is None:\\n                util.debug('result handler got sentinel')\\n                break\\n\\n            job, i, obj = task\\n            try:\\n                cache[job]._set(i, obj)\\n            except KeyError:\\n                pass\\n            task = job = obj = None\\n\\n        while cache and thread._state != TERMINATE:\\n            try:\\n                task = get()\\n            except (OSError, EOFError):\\n                util.debug('result handler got EOFError/OSError -- exiting')\\n                return\\n\\n            if task is None:\\n                util.debug('result handler ignoring extra sentinel')\\n                continue\\n            job, i, obj = task\\n            try:\\n                cache[job]._set(i, obj)\\n            except KeyError:\\n                pass\\n            task = job = obj = None\\n\\n        if hasattr(outqueue, '_reader'):\\n            util.debug('ensuring that outqueue is not full')\\n            # If we don't make room available in outqueue then\\n            # attempts to add the sentinel (None) to outqueue may\\n            # block.  There is guaranteed to be no more than 2 sentinels.\\n            try:\\n                for i in range(10):\\n                    if not outqueue._reader.poll():\\n                        break\\n                    get()\\n            except (OSError, EOFError):\\n                pass\\n\\n        util.debug('result handler exiting: len(cache)=%s, thread._state=%s',\\n              len(cache), thread._state)\\n\\n    @staticmethod\\n    def _get_tasks(func, it, size):\\n        it = iter(it)\\n        while 1:\\n            x = tuple(itertools.islice(it, size))\\n            if not x:\\n                return\\n            yield (func, x)\\n\\n    def __reduce__(self):\\n        raise NotImplementedError(\\n              'pool objects cannot be passed between processes or pickled'\\n              )\\n\\n    def close(self):\\n        util.debug('closing pool')\\n        if self._state == RUN:\\n            self._state = CLOSE\\n            self._worker_handler._state = CLOSE\\n            self._change_notifier.put(None)\\n\\n    def terminate(self):\\n        util.debug('terminating pool')\\n        self._state = TERMINATE\\n        self._terminate()\\n\\n    def join(self):\\n        util.debug('joining pool')\\n        if self._state == RUN:\\n            raise ValueError(\\\"Pool is still running\\\")\\n        elif self._state not in (CLOSE, TERMINATE):\\n            raise ValueError(\\\"In unknown state\\\")\\n        self._worker_handler.join()\\n        self._task_handler.join()\\n        self._result_handler.join()\\n        for p in self._pool:\\n            p.join()\\n\\n    @staticmethod\\n    def _help_stuff_finish(inqueue, task_handler, size):\\n        # task_handler may be blocked trying to put items on inqueue\\n        util.debug('removing tasks from inqueue until task handler finished')\\n        inqueue._rlock.acquire()\\n        while task_handler.is_alive() and inqueue._reader.poll():\\n            inqueue._reader.recv()\\n            time.sleep(0)\\n\\n    @classmethod\\n    def _terminate_pool(cls, taskqueue, inqueue, outqueue, pool, change_notifier,\\n                        worker_handler, task_handler, result_handler, cache):\\n        # this is guaranteed to only be called once\\n        util.debug('finalizing pool')\\n\\n        # Notify that the worker_handler state has been changed so the\\n        # _handle_workers loop can be unblocked (and exited) in order to\\n        # send the finalization sentinel all the workers.\\n        worker_handler._state = TERMINATE\\n        change_notifier.put(None)\\n\\n        task_handler._state = TERMINATE\\n\\n        util.debug('helping task handler/workers to finish')\\n        cls._help_stuff_finish(inqueue, task_handler, len(pool))\\n\\n        if (not result_handler.is_alive()) and (len(cache) != 0):\\n            raise AssertionError(\\n                \\\"Cannot have cache with result_handler not alive\\\")\\n\\n        result_handler._state = TERMINATE\\n        change_notifier.put(None)\\n        outqueue.put(None)                  # sentinel\\n\\n        # We must wait for the worker handler to exit before terminating\\n        # workers because we don't want workers to be restarted behind our back.\\n        util.debug('joining worker handler')\\n        if threading.current_thread() is not worker_handler:\\n            worker_handler.join()\\n\\n        # Terminate workers which haven't already finished.\\n        if pool and hasattr(pool[0], 'terminate'):\\n            util.debug('terminating workers')\\n            for p in pool:\\n                if p.exitcode is None:\\n                    p.terminate()\\n\\n        util.debug('joining task handler')\\n        if threading.current_thread() is not task_handler:\\n            task_handler.join()\\n\\n        util.debug('joining result handler')\\n        if threading.current_thread() is not result_handler:\\n            result_handler.join()\\n\\n        if pool and hasattr(pool[0], 'terminate'):\\n            util.debug('joining pool workers')\\n            for p in pool:\\n                if p.is_alive():\\n                    # worker has not yet exited\\n                    util.debug('cleaning up worker %d' % p.pid)\\n                    p.join()\\n\\n    def __enter__(self):\\n        self._check_running()\\n        return self\\n\\n    def __exit__(self, exc_type, exc_val, exc_tb):\\n        self.terminate()\\n\\n#\\n# Class whose instances are returned by `Pool.apply_async()`\\n#\\n\\nclass ApplyResult(object):\\n\\n    def __init__(self, pool, callback, error_callback):\\n        self._pool = pool\\n        self._event = threading.Event()\\n        self._job = next(job_counter)\\n        self._cache = pool._cache\\n        self._callback = callback\\n        self._error_callback = error_callback\\n        self._cache[self._job] = self\\n\\n    def ready(self):\\n        return self._event.is_set()\\n\\n    def successful(self):\\n        if not self.ready():\\n            raise ValueError(\\\"{0!r} not ready\\\".format(self))\\n        return self._success\\n\\n    def wait(self, timeout=None):\\n        self._event.wait(timeout)\\n\\n    def get(self, timeout=None):\\n        self.wait(timeout)\\n        if not self.ready():\\n            raise TimeoutError\\n        if self._success:\\n            return self._value\\n        else:\\n            raise self._value\\n\\n    def _set(self, i, obj):\\n        self._success, self._value = obj\\n        if self._callback and self._success:\\n            self._callback(self._value)\\n        if self._error_callback and not self._success:\\n            self._error_callback(self._value)\\n        self._event.set()\\n        del self._cache[self._job]\\n        self._pool = None\\n\\n    __class_getitem__ = classmethod(types.GenericAlias)\\n\\nAsyncResult = ApplyResult       # create alias -- see #17805\\n\\n#\\n# Class whose instances are returned by `Pool.map_async()`\\n#\\n\\nclass MapResult(ApplyResult):\\n\\n    def __init__(self, pool, chunksize, length, callback, error_callback):\\n        ApplyResult.__init__(self, pool, callback,\\n                             error_callback=error_callback)\\n        self._success = True\\n        self._value = [None] * length\\n        self._chunksize = chunksize\\n        if chunksize <= 0:\\n            self._number_left = 0\\n            self._event.set()\\n            del self._cache[self._job]\\n        else:\\n            self._number_left = length//chunksize + bool(length % chunksize)\\n\\n    def _set(self, i, success_result):\\n        self._number_left -= 1\\n        success, result = success_result\\n        if success and self._success:\\n            self._value[i*self._chunksize:(i+1)*self._chunksize] = result\\n            if self._number_left == 0:\\n                if self._callback:\\n                    self._callback(self._value)\\n                del self._cache[self._job]\\n                self._event.set()\\n                self._pool = None\\n        else:\\n            if not success and self._success:\\n                # only store first exception\\n                self._success = False\\n                self._value = result\\n            if self._number_left == 0:\\n                # only consider the result ready once all jobs are done\\n                if self._error_callback:\\n                    self._error_callback(self._value)\\n                del self._cache[self._job]\\n                self._event.set()\\n                self._pool = None\\n\\n#\\n# Class whose instances are returned by `Pool.imap()`\\n#\\n\\nclass IMapIterator(object):\\n\\n    def __init__(self, pool):\\n        self._pool = pool\\n        self._cond = threading.Condition(threading.Lock())\\n        self._job = next(job_counter)\\n        self._cache = pool._cache\\n        self._items = collections.deque()\\n        self._index = 0\\n        self._length = None\\n        self._unsorted = {}\\n        self._cache[self._job] = self\\n\\n    def __iter__(self):\\n        return self\\n\\n    def next(self, timeout=None):\\n        with self._cond:\\n            try:\\n                item = self._items.popleft()\\n            except IndexError:\\n                if self._index == self._length:\\n                    self._pool = None\\n                    raise StopIteration from None\\n                self._cond.wait(timeout)\\n                try:\\n                    item = self._items.popleft()\\n                except IndexError:\\n                    if self._index == self._length:\\n                        self._pool = None\\n                        raise StopIteration from None\\n                    raise TimeoutError from None\\n\\n        success, value = item\\n        if success:\\n            return value\\n        raise value\\n\\n    __next__ = next                    # XXX\\n\\n    def _set(self, i, obj):\\n        with self._cond:\\n            if self._index == i:\\n                self._items.append(obj)\\n                self._index += 1\\n                while self._index in self._unsorted:\\n                    obj = self._unsorted.pop(self._index)\\n                    self._items.append(obj)\\n                    self._index += 1\\n                self._cond.notify()\\n            else:\\n                self._unsorted[i] = obj\\n\\n            if self._index == self._length:\\n                del self._cache[self._job]\\n                self._pool = None\\n\\n    def _set_length(self, length):\\n        with self._cond:\\n            self._length = length\\n            if self._index == self._length:\\n                self._cond.notify()\\n                del self._cache[self._job]\\n                self._pool = None\\n\\n#\\n# Class whose instances are returned by `Pool.imap_unordered()`\\n#\\n\\nclass IMapUnorderedIterator(IMapIterator):\\n\\n    def _set(self, i, obj):\\n        with self._cond:\\n            self._items.append(obj)\\n            self._index += 1\\n            self._cond.notify()\\n            if self._index == self._length:\\n                del self._cache[self._job]\\n                self._pool = None\\n\\n#\\n#\\n#\\n\\nclass ThreadPool(Pool):\\n    _wrap_exception = False\\n\\n    @staticmethod\\n    def Process(ctx, *args, **kwds):\\n        from .dummy import Process\\n        return Process(*args, **kwds)\\n\\n    def __init__(self, processes=None, initializer=None, initargs=()):\\n        Pool.__init__(self, processes, initializer, initargs)\\n\\n    def _setup_queues(self):\\n        self._inqueue = queue.SimpleQueue()\\n        self._outqueue = queue.SimpleQueue()\\n        self._quick_put = self._inqueue.put\\n        self._quick_get = self._outqueue.get\\n\\n    def _get_sentinels(self):\\n        return [self._change_notifier._reader]\\n\\n    @staticmethod\\n    def _get_worker_sentinels(workers):\\n        return []\\n\\n    @staticmethod\\n    def _help_stuff_finish(inqueue, task_handler, size):\\n        # drain inqueue, and put sentinels at its head to make workers finish\\n        try:\\n            while True:\\n                inqueue.get(block=False)\\n        except queue.Empty:\\n            pass\\n        for i in range(size):\\n            inqueue.put(None)\\n\\n    def _wait_for_updates(self, sentinels, change_notifier, timeout):\\n        time.sleep(timeout)\\n\", 957], \"/usr/lib/python3.12/multiprocessing/process.py\": [\"#\\n# Module providing the `Process` class which emulates `threading.Thread`\\n#\\n# multiprocessing/process.py\\n#\\n# Copyright (c) 2006-2008, R Oudkerk\\n# Licensed to PSF under a Contributor Agreement.\\n#\\n\\n__all__ = ['BaseProcess', 'current_process', 'active_children',\\n           'parent_process']\\n\\n#\\n# Imports\\n#\\n\\nimport os\\nimport sys\\nimport signal\\nimport itertools\\nimport threading\\nfrom _weakrefset import WeakSet\\n\\n#\\n#\\n#\\n\\ntry:\\n    ORIGINAL_DIR = os.path.abspath(os.getcwd())\\nexcept OSError:\\n    ORIGINAL_DIR = None\\n\\n#\\n# Public functions\\n#\\n\\ndef current_process():\\n    '''\\n    Return process object representing the current process\\n    '''\\n    return _current_process\\n\\ndef active_children():\\n    '''\\n    Return list of process objects corresponding to live child processes\\n    '''\\n    _cleanup()\\n    return list(_children)\\n\\n\\ndef parent_process():\\n    '''\\n    Return process object representing the parent process\\n    '''\\n    return _parent_process\\n\\n#\\n#\\n#\\n\\ndef _cleanup():\\n    # check for processes which have finished\\n    for p in list(_children):\\n        if (child_popen := p._popen) and child_popen.poll() is not None:\\n            _children.discard(p)\\n\\n#\\n# The `Process` class\\n#\\n\\nclass BaseProcess(object):\\n    '''\\n    Process objects represent activity that is run in a separate process\\n\\n    The class is analogous to `threading.Thread`\\n    '''\\n    def _Popen(self):\\n        raise NotImplementedError\\n\\n    def __init__(self, group=None, target=None, name=None, args=(), kwargs={},\\n                 *, daemon=None):\\n        assert group is None, 'group argument must be None for now'\\n        count = next(_process_counter)\\n        self._identity = _current_process._identity + (count,)\\n        self._config = _current_process._config.copy()\\n        self._parent_pid = os.getpid()\\n        self._parent_name = _current_process.name\\n        self._popen = None\\n        self._closed = False\\n        self._target = target\\n        self._args = tuple(args)\\n        self._kwargs = dict(kwargs)\\n        self._name = name or type(self).__name__ + '-' + \\\\\\n                     ':'.join(str(i) for i in self._identity)\\n        if daemon is not None:\\n            self.daemon = daemon\\n        _dangling.add(self)\\n\\n    def _check_closed(self):\\n        if self._closed:\\n            raise ValueError(\\\"process object is closed\\\")\\n\\n    def run(self):\\n        '''\\n        Method to be run in sub-process; can be overridden in sub-class\\n        '''\\n        if self._target:\\n            self._target(*self._args, **self._kwargs)\\n\\n    def start(self):\\n        '''\\n        Start child process\\n        '''\\n        self._check_closed()\\n        assert self._popen is None, 'cannot start a process twice'\\n        assert self._parent_pid == os.getpid(), \\\\\\n               'can only start a process object created by current process'\\n        assert not _current_process._config.get('daemon'), \\\\\\n               'daemonic processes are not allowed to have children'\\n        _cleanup()\\n        self._popen = self._Popen(self)\\n        self._sentinel = self._popen.sentinel\\n        # Avoid a refcycle if the target function holds an indirect\\n        # reference to the process object (see bpo-30775)\\n        del self._target, self._args, self._kwargs\\n        _children.add(self)\\n\\n    def terminate(self):\\n        '''\\n        Terminate process; sends SIGTERM signal or uses TerminateProcess()\\n        '''\\n        self._check_closed()\\n        self._popen.terminate()\\n\\n    def kill(self):\\n        '''\\n        Terminate process; sends SIGKILL signal or uses TerminateProcess()\\n        '''\\n        self._check_closed()\\n        self._popen.kill()\\n\\n    def join(self, timeout=None):\\n        '''\\n        Wait until child process terminates\\n        '''\\n        self._check_closed()\\n        assert self._parent_pid == os.getpid(), 'can only join a child process'\\n        assert self._popen is not None, 'can only join a started process'\\n        res = self._popen.wait(timeout)\\n        if res is not None:\\n            _children.discard(self)\\n\\n    def is_alive(self):\\n        '''\\n        Return whether process is alive\\n        '''\\n        self._check_closed()\\n        if self is _current_process:\\n            return True\\n        assert self._parent_pid == os.getpid(), 'can only test a child process'\\n\\n        if self._popen is None:\\n            return False\\n\\n        returncode = self._popen.poll()\\n        if returncode is None:\\n            return True\\n        else:\\n            _children.discard(self)\\n            return False\\n\\n    def close(self):\\n        '''\\n        Close the Process object.\\n\\n        This method releases resources held by the Process object.  It is\\n        an error to call this method if the child process is still running.\\n        '''\\n        if self._popen is not None:\\n            if self._popen.poll() is None:\\n                raise ValueError(\\\"Cannot close a process while it is still running. \\\"\\n                                 \\\"You should first call join() or terminate().\\\")\\n            self._popen.close()\\n            self._popen = None\\n            del self._sentinel\\n            _children.discard(self)\\n        self._closed = True\\n\\n    @property\\n    def name(self):\\n        return self._name\\n\\n    @name.setter\\n    def name(self, name):\\n        assert isinstance(name, str), 'name must be a string'\\n        self._name = name\\n\\n    @property\\n    def daemon(self):\\n        '''\\n        Return whether process is a daemon\\n        '''\\n        return self._config.get('daemon', False)\\n\\n    @daemon.setter\\n    def daemon(self, daemonic):\\n        '''\\n        Set whether process is a daemon\\n        '''\\n        assert self._popen is None, 'process has already started'\\n        self._config['daemon'] = daemonic\\n\\n    @property\\n    def authkey(self):\\n        return self._config['authkey']\\n\\n    @authkey.setter\\n    def authkey(self, authkey):\\n        '''\\n        Set authorization key of process\\n        '''\\n        self._config['authkey'] = AuthenticationString(authkey)\\n\\n    @property\\n    def exitcode(self):\\n        '''\\n        Return exit code of process or `None` if it has yet to stop\\n        '''\\n        self._check_closed()\\n        if self._popen is None:\\n            return self._popen\\n        return self._popen.poll()\\n\\n    @property\\n    def ident(self):\\n        '''\\n        Return identifier (PID) of process or `None` if it has yet to start\\n        '''\\n        self._check_closed()\\n        if self is _current_process:\\n            return os.getpid()\\n        else:\\n            return self._popen and self._popen.pid\\n\\n    pid = ident\\n\\n    @property\\n    def sentinel(self):\\n        '''\\n        Return a file descriptor (Unix) or handle (Windows) suitable for\\n        waiting for process termination.\\n        '''\\n        self._check_closed()\\n        try:\\n            return self._sentinel\\n        except AttributeError:\\n            raise ValueError(\\\"process not started\\\") from None\\n\\n    def __repr__(self):\\n        exitcode = None\\n        if self is _current_process:\\n            status = 'started'\\n        elif self._closed:\\n            status = 'closed'\\n        elif self._parent_pid != os.getpid():\\n            status = 'unknown'\\n        elif self._popen is None:\\n            status = 'initial'\\n        else:\\n            exitcode = self._popen.poll()\\n            if exitcode is not None:\\n                status = 'stopped'\\n            else:\\n                status = 'started'\\n\\n        info = [type(self).__name__, 'name=%r' % self._name]\\n        if self._popen is not None:\\n            info.append('pid=%s' % self._popen.pid)\\n        info.append('parent=%s' % self._parent_pid)\\n        info.append(status)\\n        if exitcode is not None:\\n            exitcode = _exitcode_to_name.get(exitcode, exitcode)\\n            info.append('exitcode=%s' % exitcode)\\n        if self.daemon:\\n            info.append('daemon')\\n        return '<%s>' % ' '.join(info)\\n\\n    ##\\n\\n    def _bootstrap(self, parent_sentinel=None):\\n        from . import util, context\\n        global _current_process, _parent_process, _process_counter, _children\\n\\n        try:\\n            if self._start_method is not None:\\n                context._force_start_method(self._start_method)\\n            _process_counter = itertools.count(1)\\n            _children = set()\\n            util._close_stdin()\\n            old_process = _current_process\\n            _current_process = self\\n            _parent_process = _ParentProcess(\\n                self._parent_name, self._parent_pid, parent_sentinel)\\n            if threading._HAVE_THREAD_NATIVE_ID:\\n                threading.main_thread()._set_native_id()\\n            try:\\n                self._after_fork()\\n            finally:\\n                # delay finalization of the old process object until after\\n                # _run_after_forkers() is executed\\n                del old_process\\n            util.info('child process calling self.run()')\\n            try:\\n                self.run()\\n                exitcode = 0\\n            finally:\\n                util._exit_function()\\n        except SystemExit as e:\\n            if e.code is None:\\n                exitcode = 0\\n            elif isinstance(e.code, int):\\n                exitcode = e.code\\n            else:\\n                sys.stderr.write(str(e.code) + '\\\\n')\\n                exitcode = 1\\n        except:\\n            exitcode = 1\\n            import traceback\\n            sys.stderr.write('Process %s:\\\\n' % self.name)\\n            traceback.print_exc()\\n        finally:\\n            threading._shutdown()\\n            util.info('process exiting with exitcode %d' % exitcode)\\n            util._flush_std_streams()\\n\\n        return exitcode\\n\\n    @staticmethod\\n    def _after_fork():\\n        from . import util\\n        util._finalizer_registry.clear()\\n        util._run_after_forkers()\\n\\n\\n#\\n# We subclass bytes to avoid accidental transmission of auth keys over network\\n#\\n\\nclass AuthenticationString(bytes):\\n    def __reduce__(self):\\n        from .context import get_spawning_popen\\n        if get_spawning_popen() is None:\\n            raise TypeError(\\n                'Pickling an AuthenticationString object is '\\n                'disallowed for security reasons'\\n                )\\n        return AuthenticationString, (bytes(self),)\\n\\n\\n#\\n# Create object representing the parent process\\n#\\n\\nclass _ParentProcess(BaseProcess):\\n\\n    def __init__(self, name, pid, sentinel):\\n        self._identity = ()\\n        self._name = name\\n        self._pid = pid\\n        self._parent_pid = None\\n        self._popen = None\\n        self._closed = False\\n        self._sentinel = sentinel\\n        self._config = {}\\n\\n    def is_alive(self):\\n        from multiprocessing.connection import wait\\n        return not wait([self._sentinel], timeout=0)\\n\\n    @property\\n    def ident(self):\\n        return self._pid\\n\\n    def join(self, timeout=None):\\n        '''\\n        Wait until parent process terminates\\n        '''\\n        from multiprocessing.connection import wait\\n        wait([self._sentinel], timeout=timeout)\\n\\n    pid = ident\\n\\n#\\n# Create object representing the main process\\n#\\n\\nclass _MainProcess(BaseProcess):\\n\\n    def __init__(self):\\n        self._identity = ()\\n        self._name = 'MainProcess'\\n        self._parent_pid = None\\n        self._popen = None\\n        self._closed = False\\n        self._config = {'authkey': AuthenticationString(os.urandom(32)),\\n                        'semprefix': '/mp'}\\n        # Note that some versions of FreeBSD only allow named\\n        # semaphores to have names of up to 14 characters.  Therefore\\n        # we choose a short prefix.\\n        #\\n        # On MacOSX in a sandbox it may be necessary to use a\\n        # different prefix -- see #19478.\\n        #\\n        # Everything in self._config will be inherited by descendant\\n        # processes.\\n\\n    def close(self):\\n        pass\\n\\n\\n_parent_process = None\\n_current_process = _MainProcess()\\n_process_counter = itertools.count(1)\\n_children = set()\\ndel _MainProcess\\n\\n#\\n# Give names to some return codes\\n#\\n\\n_exitcode_to_name = {}\\n\\nfor name, signum in list(signal.__dict__.items()):\\n    if name[:3]=='SIG' and '_' not in name:\\n        _exitcode_to_name[-signum] = f'-{name}'\\ndel name, signum\\n\\n# For debug and leak testing\\n_dangling = WeakSet()\\n\", 439], \"<frozen importlib._bootstrap>\": [\"\\\"\\\"\\\"Core implementation of import.\\n\\nThis module is NOT meant to be directly imported! It has been designed such\\nthat it can be bootstrapped into Python as the implementation of import. As\\nsuch it requires the injection of specific modules and attributes in order to\\nwork. One should use importlib as the public-facing version of this module.\\n\\n\\\"\\\"\\\"\\n#\\n# IMPORTANT: Whenever making changes to this module, be sure to run a top-level\\n# `make regen-importlib` followed by `make` in order to get the frozen version\\n# of the module updated. Not doing so will result in the Makefile to fail for\\n# all others who don't have a ./python around to freeze the module\\n# in the early stages of compilation.\\n#\\n\\n# See importlib._setup() for what is injected into the global namespace.\\n\\n# When editing this code be aware that code executed at import time CANNOT\\n# reference any injected objects! This includes not only global code but also\\n# anything specified at the class level.\\n\\ndef _object_name(obj):\\n    try:\\n        return obj.__qualname__\\n    except AttributeError:\\n        return type(obj).__qualname__\\n\\n# Bootstrap-related code ######################################################\\n\\n# Modules injected manually by _setup()\\n_thread = None\\n_warnings = None\\n_weakref = None\\n\\n# Import done by _install_external_importers()\\n_bootstrap_external = None\\n\\n\\ndef _wrap(new, old):\\n    \\\"\\\"\\\"Simple substitute for functools.update_wrapper.\\\"\\\"\\\"\\n    for replace in ['__module__', '__name__', '__qualname__', '__doc__']:\\n        if hasattr(old, replace):\\n            setattr(new, replace, getattr(old, replace))\\n    new.__dict__.update(old.__dict__)\\n\\n\\ndef _new_module(name):\\n    return type(sys)(name)\\n\\n\\n# Module-level locking ########################################################\\n\\n# For a list that can have a weakref to it.\\nclass _List(list):\\n    pass\\n\\n\\n# Copied from weakref.py with some simplifications and modifications unique to\\n# bootstrapping importlib. Many methods were simply deleting for simplicity, so if they\\n# are needed in the future they may work if simply copied back in.\\nclass _WeakValueDictionary:\\n\\n    def __init__(self):\\n        self_weakref = _weakref.ref(self)\\n\\n        # Inlined to avoid issues with inheriting from _weakref.ref before _weakref is\\n        # set by _setup(). Since there's only one instance of this class, this is\\n        # not expensive.\\n        class KeyedRef(_weakref.ref):\\n\\n            __slots__ = \\\"key\\\",\\n\\n            def __new__(type, ob, key):\\n                self = super().__new__(type, ob, type.remove)\\n                self.key = key\\n                return self\\n\\n            def __init__(self, ob, key):\\n                super().__init__(ob, self.remove)\\n\\n            @staticmethod\\n            def remove(wr):\\n                nonlocal self_weakref\\n\\n                self = self_weakref()\\n                if self is not None:\\n                    if self._iterating:\\n                        self._pending_removals.append(wr.key)\\n                    else:\\n                        _weakref._remove_dead_weakref(self.data, wr.key)\\n\\n        self._KeyedRef = KeyedRef\\n        self.clear()\\n\\n    def clear(self):\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self.data = {}\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n            _weakref._remove_dead_weakref(d, key)\\n\\n    def get(self, key, default=None):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            wr = self.data[key]\\n        except KeyError:\\n            return default\\n        else:\\n            if (o := wr()) is None:\\n                return default\\n            else:\\n                return o\\n\\n    def setdefault(self, key, default=None):\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if self._pending_removals:\\n                self._commit_removals()\\n            self.data[key] = self._KeyedRef(default, key)\\n            return default\\n        else:\\n            return o\\n\\n\\n# A dict mapping module names to weakrefs of _ModuleLock instances.\\n# Dictionary protected by the global import lock.\\n_module_locks = {}\\n\\n# A dict mapping thread IDs to weakref'ed lists of _ModuleLock instances.\\n# This maps a thread to the module locks it is blocking on acquiring.  The\\n# values are lists because a single thread could perform a re-entrant import\\n# and be \\\"in the process\\\" of blocking on locks for more than one module.  A\\n# thread can be \\\"in the process\\\" because a thread cannot actually block on\\n# acquiring more than one lock but it can have set up bookkeeping that reflects\\n# that it intends to block on acquiring more than one lock.\\n#\\n# The dictionary uses a WeakValueDictionary to avoid keeping unnecessary\\n# lists around, regardless of GC runs. This way there's no memory leak if\\n# the list is no longer needed (GH-106176).\\n_blocking_on = None\\n\\n\\nclass _BlockingOnManager:\\n    \\\"\\\"\\\"A context manager responsible to updating ``_blocking_on``.\\\"\\\"\\\"\\n    def __init__(self, thread_id, lock):\\n        self.thread_id = thread_id\\n        self.lock = lock\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Mark the running thread as waiting for self.lock. via _blocking_on.\\\"\\\"\\\"\\n        # Interactions with _blocking_on are *not* protected by the global\\n        # import lock here because each thread only touches the state that it\\n        # owns (state keyed on its thread id).  The global import lock is\\n        # re-entrant (i.e., a single thread may take it more than once) so it\\n        # wouldn't help us be correct in the face of re-entrancy either.\\n\\n        self.blocked_on = _blocking_on.setdefault(self.thread_id, _List())\\n        self.blocked_on.append(self.lock)\\n\\n    def __exit__(self, *args, **kwargs):\\n        \\\"\\\"\\\"Remove self.lock from this thread's _blocking_on list.\\\"\\\"\\\"\\n        self.blocked_on.remove(self.lock)\\n\\n\\nclass _DeadlockError(RuntimeError):\\n    pass\\n\\n\\n\\ndef _has_deadlocked(target_id, *, seen_ids, candidate_ids, blocking_on):\\n    \\\"\\\"\\\"Check if 'target_id' is holding the same lock as another thread(s).\\n\\n    The search within 'blocking_on' starts with the threads listed in\\n    'candidate_ids'.  'seen_ids' contains any threads that are considered\\n    already traversed in the search.\\n\\n    Keyword arguments:\\n    target_id     -- The thread id to try to reach.\\n    seen_ids      -- A set of threads that have already been visited.\\n    candidate_ids -- The thread ids from which to begin.\\n    blocking_on   -- A dict representing the thread/blocking-on graph.  This may\\n                     be the same object as the global '_blocking_on' but it is\\n                     a parameter to reduce the impact that global mutable\\n                     state has on the result of this function.\\n    \\\"\\\"\\\"\\n    if target_id in candidate_ids:\\n        # If we have already reached the target_id, we're done - signal that it\\n        # is reachable.\\n        return True\\n\\n    # Otherwise, try to reach the target_id from each of the given candidate_ids.\\n    for tid in candidate_ids:\\n        if not (candidate_blocking_on := blocking_on.get(tid)):\\n            # There are no edges out from this node, skip it.\\n            continue\\n        elif tid in seen_ids:\\n            # bpo 38091: the chain of tid's we encounter here eventually leads\\n            # to a fixed point or a cycle, but does not reach target_id.\\n            # This means we would not actually deadlock.  This can happen if\\n            # other threads are at the beginning of acquire() below.\\n            return False\\n        seen_ids.add(tid)\\n\\n        # Follow the edges out from this thread.\\n        edges = [lock.owner for lock in candidate_blocking_on]\\n        if _has_deadlocked(target_id, seen_ids=seen_ids, candidate_ids=edges,\\n                blocking_on=blocking_on):\\n            return True\\n\\n    return False\\n\\n\\nclass _ModuleLock:\\n    \\\"\\\"\\\"A recursive lock implementation which is able to detect deadlocks\\n    (e.g. thread 1 trying to take locks A then B, and thread 2 trying to\\n    take locks B then A).\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        # Create an RLock for protecting the import process for the\\n        # corresponding module.  Since it is an RLock, a single thread will be\\n        # able to take it more than once.  This is necessary to support\\n        # re-entrancy in the import system that arises from (at least) signal\\n        # handlers and the garbage collector.  Consider the case of:\\n        #\\n        #  import foo\\n        #  -> ...\\n        #     -> importlib._bootstrap._ModuleLock.acquire\\n        #        -> ...\\n        #           -> <garbage collector>\\n        #              -> __del__\\n        #                 -> import foo\\n        #                    -> ...\\n        #                       -> importlib._bootstrap._ModuleLock.acquire\\n        #                          -> _BlockingOnManager.__enter__\\n        #\\n        # If a different thread than the running one holds the lock then the\\n        # thread will have to block on taking the lock, which is what we want\\n        # for thread safety.\\n        self.lock = _thread.RLock()\\n        self.wakeup = _thread.allocate_lock()\\n\\n        # The name of the module for which this is a lock.\\n        self.name = name\\n\\n        # Can end up being set to None if this lock is not owned by any thread\\n        # or the thread identifier for the owning thread.\\n        self.owner = None\\n\\n        # Represent the number of times the owning thread has acquired this lock\\n        # via a list of True.  This supports RLock-like (\\\"re-entrant lock\\\")\\n        # behavior, necessary in case a single thread is following a circular\\n        # import dependency and needs to take the lock for a single module\\n        # more than once.\\n        #\\n        # Counts are represented as a list of True because list.append(True)\\n        # and list.pop() are both atomic and thread-safe in CPython and it's hard\\n        # to find another primitive with the same properties.\\n        self.count = []\\n\\n        # This is a count of the number of threads that are blocking on\\n        # self.wakeup.acquire() awaiting to get their turn holding this module\\n        # lock.  When the module lock is released, if this is greater than\\n        # zero, it is decremented and `self.wakeup` is released one time.  The\\n        # intent is that this will let one other thread make more progress on\\n        # acquiring this module lock.  This repeats until all the threads have\\n        # gotten a turn.\\n        #\\n        # This is incremented in self.acquire() when a thread notices it is\\n        # going to have to wait for another thread to finish.\\n        #\\n        # See the comment above count for explanation of the representation.\\n        self.waiters = []\\n\\n    def has_deadlock(self):\\n        # To avoid deadlocks for concurrent or re-entrant circular imports,\\n        # look at _blocking_on to see if any threads are blocking\\n        # on getting the import lock for any module for which the import lock\\n        # is held by this thread.\\n        return _has_deadlocked(\\n            # Try to find this thread.\\n            target_id=_thread.get_ident(),\\n            seen_ids=set(),\\n            # Start from the thread that holds the import lock for this\\n            # module.\\n            candidate_ids=[self.owner],\\n            # Use the global \\\"blocking on\\\" state.\\n            blocking_on=_blocking_on,\\n        )\\n\\n    def acquire(self):\\n        \\\"\\\"\\\"\\n        Acquire the module lock.  If a potential deadlock is detected,\\n        a _DeadlockError is raised.\\n        Otherwise, the lock is always acquired and True is returned.\\n        \\\"\\\"\\\"\\n        tid = _thread.get_ident()\\n        with _BlockingOnManager(tid, self):\\n            while True:\\n                # Protect interaction with state on self with a per-module\\n                # lock.  This makes it safe for more than one thread to try to\\n                # acquire the lock for a single module at the same time.\\n                with self.lock:\\n                    if self.count == [] or self.owner == tid:\\n                        # If the lock for this module is unowned then we can\\n                        # take the lock immediately and succeed.  If the lock\\n                        # for this module is owned by the running thread then\\n                        # we can also allow the acquire to succeed.  This\\n                        # supports circular imports (thread T imports module A\\n                        # which imports module B which imports module A).\\n                        self.owner = tid\\n                        self.count.append(True)\\n                        return True\\n\\n                    # At this point we know the lock is held (because count !=\\n                    # 0) by another thread (because owner != tid).  We'll have\\n                    # to get in line to take the module lock.\\n\\n                    # But first, check to see if this thread would create a\\n                    # deadlock by acquiring this module lock.  If it would\\n                    # then just stop with an error.\\n                    #\\n                    # It's not clear who is expected to handle this error.\\n                    # There is one handler in _lock_unlock_module but many\\n                    # times this method is called when entering the context\\n                    # manager _ModuleLockManager instead - so _DeadlockError\\n                    # will just propagate up to application code.\\n                    #\\n                    # This seems to be more than just a hypothetical -\\n                    # https://stackoverflow.com/questions/59509154\\n                    # https://github.com/encode/django-rest-framework/issues/7078\\n                    if self.has_deadlock():\\n                        raise _DeadlockError(f'deadlock detected by {self!r}')\\n\\n                    # Check to see if we're going to be able to acquire the\\n                    # lock.  If we are going to have to wait then increment\\n                    # the waiters so `self.release` will know to unblock us\\n                    # later on.  We do this part non-blockingly so we don't\\n                    # get stuck here before we increment waiters.  We have\\n                    # this extra acquire call (in addition to the one below,\\n                    # outside the self.lock context manager) to make sure\\n                    # self.wakeup is held when the next acquire is called (so\\n                    # we block).  This is probably needlessly complex and we\\n                    # should just take self.wakeup in the return codepath\\n                    # above.\\n                    if self.wakeup.acquire(False):\\n                        self.waiters.append(None)\\n\\n                # Now take the lock in a blocking fashion.  This won't\\n                # complete until the thread holding this lock\\n                # (self.owner) calls self.release.\\n                self.wakeup.acquire()\\n\\n                # Taking the lock has served its purpose (making us wait), so we can\\n                # give it up now.  We'll take it w/o blocking again on the\\n                # next iteration around this 'while' loop.\\n                self.wakeup.release()\\n\\n    def release(self):\\n        tid = _thread.get_ident()\\n        with self.lock:\\n            if self.owner != tid:\\n                raise RuntimeError('cannot release un-acquired lock')\\n            assert len(self.count) > 0\\n            self.count.pop()\\n            if not len(self.count):\\n                self.owner = None\\n                if len(self.waiters) > 0:\\n                    self.waiters.pop()\\n                    self.wakeup.release()\\n\\n    def __repr__(self):\\n        return f'_ModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _DummyModuleLock:\\n    \\\"\\\"\\\"A simple _ModuleLock equivalent for Python builds without\\n    multi-threading support.\\\"\\\"\\\"\\n\\n    def __init__(self, name):\\n        self.name = name\\n        self.count = 0\\n\\n    def acquire(self):\\n        self.count += 1\\n        return True\\n\\n    def release(self):\\n        if self.count == 0:\\n            raise RuntimeError('cannot release un-acquired lock')\\n        self.count -= 1\\n\\n    def __repr__(self):\\n        return f'_DummyModuleLock({self.name!r}) at {id(self)}'\\n\\n\\nclass _ModuleLockManager:\\n\\n    def __init__(self, name):\\n        self._name = name\\n        self._lock = None\\n\\n    def __enter__(self):\\n        self._lock = _get_module_lock(self._name)\\n        self._lock.acquire()\\n\\n    def __exit__(self, *args, **kwargs):\\n        self._lock.release()\\n\\n\\n# The following two functions are for consumption by Python/import.c.\\n\\ndef _get_module_lock(name):\\n    \\\"\\\"\\\"Get or create the module lock for a given module name.\\n\\n    Acquire/release internally the global import lock to protect\\n    _module_locks.\\\"\\\"\\\"\\n\\n    _imp.acquire_lock()\\n    try:\\n        try:\\n            lock = _module_locks[name]()\\n        except KeyError:\\n            lock = None\\n\\n        if lock is None:\\n            if _thread is None:\\n                lock = _DummyModuleLock(name)\\n            else:\\n                lock = _ModuleLock(name)\\n\\n            def cb(ref, name=name):\\n                _imp.acquire_lock()\\n                try:\\n                    # bpo-31070: Check if another thread created a new lock\\n                    # after the previous lock was destroyed\\n                    # but before the weakref callback was called.\\n                    if _module_locks.get(name) is ref:\\n                        del _module_locks[name]\\n                finally:\\n                    _imp.release_lock()\\n\\n            _module_locks[name] = _weakref.ref(lock, cb)\\n    finally:\\n        _imp.release_lock()\\n\\n    return lock\\n\\n\\ndef _lock_unlock_module(name):\\n    \\\"\\\"\\\"Acquires then releases the module lock for a given module name.\\n\\n    This is used to ensure a module is completely initialized, in the\\n    event it is being imported by another thread.\\n    \\\"\\\"\\\"\\n    lock = _get_module_lock(name)\\n    try:\\n        lock.acquire()\\n    except _DeadlockError:\\n        # Concurrent circular import, we'll accept a partially initialized\\n        # module object.\\n        pass\\n    else:\\n        lock.release()\\n\\n# Frame stripping magic ###############################################\\ndef _call_with_frames_removed(f, *args, **kwds):\\n    \\\"\\\"\\\"remove_importlib_frames in import.c will always remove sequences\\n    of importlib frames that end with a call to this function\\n\\n    Use it instead of a normal call in places where including the importlib\\n    frames introduces unwanted noise into the traceback (e.g. when executing\\n    module code)\\n    \\\"\\\"\\\"\\n    return f(*args, **kwds)\\n\\n\\ndef _verbose_message(message, *args, verbosity=1):\\n    \\\"\\\"\\\"Print the message to stderr if -v/PYTHONVERBOSE is turned on.\\\"\\\"\\\"\\n    if sys.flags.verbose >= verbosity:\\n        if not message.startswith(('#', 'import ')):\\n            message = '# ' + message\\n        print(message.format(*args), file=sys.stderr)\\n\\n\\ndef _requires_builtin(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is built-in.\\\"\\\"\\\"\\n    def _requires_builtin_wrapper(self, fullname):\\n        if fullname not in sys.builtin_module_names:\\n            raise ImportError(f'{fullname!r} is not a built-in module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_builtin_wrapper, fxn)\\n    return _requires_builtin_wrapper\\n\\n\\ndef _requires_frozen(fxn):\\n    \\\"\\\"\\\"Decorator to verify the named module is frozen.\\\"\\\"\\\"\\n    def _requires_frozen_wrapper(self, fullname):\\n        if not _imp.is_frozen(fullname):\\n            raise ImportError(f'{fullname!r} is not a frozen module',\\n                              name=fullname)\\n        return fxn(self, fullname)\\n    _wrap(_requires_frozen_wrapper, fxn)\\n    return _requires_frozen_wrapper\\n\\n\\n# Typically used by loader classes as a method replacement.\\ndef _load_module_shim(self, fullname):\\n    \\\"\\\"\\\"Load the specified module into sys.modules and return it.\\n\\n    This method is deprecated.  Use loader.exec_module() instead.\\n\\n    \\\"\\\"\\\"\\n    msg = (\\\"the load_module() method is deprecated and slated for removal in \\\"\\n          \\\"Python 3.12; use exec_module() instead\\\")\\n    _warnings.warn(msg, DeprecationWarning)\\n    spec = spec_from_loader(fullname, self)\\n    if fullname in sys.modules:\\n        module = sys.modules[fullname]\\n        _exec(spec, module)\\n        return sys.modules[fullname]\\n    else:\\n        return _load(spec)\\n\\n# Module specifications #######################################################\\n\\ndef _module_repr(module):\\n    \\\"\\\"\\\"The implementation of ModuleType.__repr__().\\\"\\\"\\\"\\n    loader = getattr(module, '__loader__', None)\\n    if spec := getattr(module, \\\"__spec__\\\", None):\\n        return _module_repr_from_spec(spec)\\n    # Fall through to a catch-all which always succeeds.\\n    try:\\n        name = module.__name__\\n    except AttributeError:\\n        name = '?'\\n    try:\\n        filename = module.__file__\\n    except AttributeError:\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        return f'<module {name!r} from {filename!r}>'\\n\\n\\nclass ModuleSpec:\\n    \\\"\\\"\\\"The specification for a module, used for loading.\\n\\n    A module's spec is the source for information about the module.  For\\n    data associated with the module, including source, use the spec's\\n    loader.\\n\\n    `name` is the absolute name of the module.  `loader` is the loader\\n    to use when loading the module.  `parent` is the name of the\\n    package the module is in.  The parent is derived from the name.\\n\\n    `is_package` determines if the module is considered a package or\\n    not.  On modules this is reflected by the `__path__` attribute.\\n\\n    `origin` is the specific location used by the loader from which to\\n    load the module, if that information is available.  When filename is\\n    set, origin will match.\\n\\n    `has_location` indicates that a spec's \\\"origin\\\" reflects a location.\\n    When this is True, `__file__` attribute of the module is set.\\n\\n    `cached` is the location of the cached bytecode file, if any.  It\\n    corresponds to the `__cached__` attribute.\\n\\n    `submodule_search_locations` is the sequence of path entries to\\n    search when importing submodules.  If set, is_package should be\\n    True--and False otherwise.\\n\\n    Packages are simply modules that (may) have submodules.  If a spec\\n    has a non-None value in `submodule_search_locations`, the import\\n    system will consider modules loaded from the spec as packages.\\n\\n    Only finders (see importlib.abc.MetaPathFinder and\\n    importlib.abc.PathEntryFinder) should modify ModuleSpec instances.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name, loader, *, origin=None, loader_state=None,\\n                 is_package=None):\\n        self.name = name\\n        self.loader = loader\\n        self.origin = origin\\n        self.loader_state = loader_state\\n        self.submodule_search_locations = [] if is_package else None\\n        self._uninitialized_submodules = []\\n\\n        # file-location attributes\\n        self._set_fileattr = False\\n        self._cached = None\\n\\n    def __repr__(self):\\n        args = [f'name={self.name!r}', f'loader={self.loader!r}']\\n        if self.origin is not None:\\n            args.append(f'origin={self.origin!r}')\\n        if self.submodule_search_locations is not None:\\n            args.append(f'submodule_search_locations={self.submodule_search_locations}')\\n        return f'{self.__class__.__name__}({\\\", \\\".join(args)})'\\n\\n    def __eq__(self, other):\\n        smsl = self.submodule_search_locations\\n        try:\\n            return (self.name == other.name and\\n                    self.loader == other.loader and\\n                    self.origin == other.origin and\\n                    smsl == other.submodule_search_locations and\\n                    self.cached == other.cached and\\n                    self.has_location == other.has_location)\\n        except AttributeError:\\n            return NotImplemented\\n\\n    @property\\n    def cached(self):\\n        if self._cached is None:\\n            if self.origin is not None and self._set_fileattr:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                self._cached = _bootstrap_external._get_cached(self.origin)\\n        return self._cached\\n\\n    @cached.setter\\n    def cached(self, cached):\\n        self._cached = cached\\n\\n    @property\\n    def parent(self):\\n        \\\"\\\"\\\"The name of the module's parent.\\\"\\\"\\\"\\n        if self.submodule_search_locations is None:\\n            return self.name.rpartition('.')[0]\\n        else:\\n            return self.name\\n\\n    @property\\n    def has_location(self):\\n        return self._set_fileattr\\n\\n    @has_location.setter\\n    def has_location(self, value):\\n        self._set_fileattr = bool(value)\\n\\n\\ndef spec_from_loader(name, loader, *, origin=None, is_package=None):\\n    \\\"\\\"\\\"Return a module spec based on various loader methods.\\\"\\\"\\\"\\n    if origin is None:\\n        origin = getattr(loader, '_ORIGIN', None)\\n\\n    if not origin and hasattr(loader, 'get_filename'):\\n        if _bootstrap_external is None:\\n            raise NotImplementedError\\n        spec_from_file_location = _bootstrap_external.spec_from_file_location\\n\\n        if is_package is None:\\n            return spec_from_file_location(name, loader=loader)\\n        search = [] if is_package else None\\n        return spec_from_file_location(name, loader=loader,\\n                                       submodule_search_locations=search)\\n\\n    if is_package is None:\\n        if hasattr(loader, 'is_package'):\\n            try:\\n                is_package = loader.is_package(name)\\n            except ImportError:\\n                is_package = None  # aka, undefined\\n        else:\\n            # the default\\n            is_package = False\\n\\n    return ModuleSpec(name, loader, origin=origin, is_package=is_package)\\n\\n\\ndef _spec_from_module(module, loader=None, origin=None):\\n    # This function is meant for use in _setup().\\n    try:\\n        spec = module.__spec__\\n    except AttributeError:\\n        pass\\n    else:\\n        if spec is not None:\\n            return spec\\n\\n    name = module.__name__\\n    if loader is None:\\n        try:\\n            loader = module.__loader__\\n        except AttributeError:\\n            # loader will stay None.\\n            pass\\n    try:\\n        location = module.__file__\\n    except AttributeError:\\n        location = None\\n    if origin is None:\\n        if loader is not None:\\n            origin = getattr(loader, '_ORIGIN', None)\\n        if not origin and location is not None:\\n            origin = location\\n    try:\\n        cached = module.__cached__\\n    except AttributeError:\\n        cached = None\\n    try:\\n        submodule_search_locations = list(module.__path__)\\n    except AttributeError:\\n        submodule_search_locations = None\\n\\n    spec = ModuleSpec(name, loader, origin=origin)\\n    spec._set_fileattr = False if location is None else (origin == location)\\n    spec.cached = cached\\n    spec.submodule_search_locations = submodule_search_locations\\n    return spec\\n\\n\\ndef _init_module_attrs(spec, module, *, override=False):\\n    # The passed-in module may be not support attribute assignment,\\n    # in which case we simply don't set the attributes.\\n    # __name__\\n    if (override or getattr(module, '__name__', None) is None):\\n        try:\\n            module.__name__ = spec.name\\n        except AttributeError:\\n            pass\\n    # __loader__\\n    if override or getattr(module, '__loader__', None) is None:\\n        loader = spec.loader\\n        if loader is None:\\n            # A backward compatibility hack.\\n            if spec.submodule_search_locations is not None:\\n                if _bootstrap_external is None:\\n                    raise NotImplementedError\\n                NamespaceLoader = _bootstrap_external.NamespaceLoader\\n\\n                loader = NamespaceLoader.__new__(NamespaceLoader)\\n                loader._path = spec.submodule_search_locations\\n                spec.loader = loader\\n                # While the docs say that module.__file__ is not set for\\n                # built-in modules, and the code below will avoid setting it if\\n                # spec.has_location is false, this is incorrect for namespace\\n                # packages.  Namespace packages have no location, but their\\n                # __spec__.origin is None, and thus their module.__file__\\n                # should also be None for consistency.  While a bit of a hack,\\n                # this is the best place to ensure this consistency.\\n                #\\n                # See # https://docs.python.org/3/library/importlib.html#importlib.abc.Loader.load_module\\n                # and bpo-32305\\n                module.__file__ = None\\n        try:\\n            module.__loader__ = loader\\n        except AttributeError:\\n            pass\\n    # __package__\\n    if override or getattr(module, '__package__', None) is None:\\n        try:\\n            module.__package__ = spec.parent\\n        except AttributeError:\\n            pass\\n    # __spec__\\n    try:\\n        module.__spec__ = spec\\n    except AttributeError:\\n        pass\\n    # __path__\\n    if override or getattr(module, '__path__', None) is None:\\n        if spec.submodule_search_locations is not None:\\n            # XXX We should extend __path__ if it's already a list.\\n            try:\\n                module.__path__ = spec.submodule_search_locations\\n            except AttributeError:\\n                pass\\n    # __file__/__cached__\\n    if spec.has_location:\\n        if override or getattr(module, '__file__', None) is None:\\n            try:\\n                module.__file__ = spec.origin\\n            except AttributeError:\\n                pass\\n\\n        if override or getattr(module, '__cached__', None) is None:\\n            if spec.cached is not None:\\n                try:\\n                    module.__cached__ = spec.cached\\n                except AttributeError:\\n                    pass\\n    return module\\n\\n\\ndef module_from_spec(spec):\\n    \\\"\\\"\\\"Create a module based on the provided spec.\\\"\\\"\\\"\\n    # Typically loaders will not implement create_module().\\n    module = None\\n    if hasattr(spec.loader, 'create_module'):\\n        # If create_module() returns `None` then it means default\\n        # module creation should be used.\\n        module = spec.loader.create_module(spec)\\n    elif hasattr(spec.loader, 'exec_module'):\\n        raise ImportError('loaders that define exec_module() '\\n                          'must also define create_module()')\\n    if module is None:\\n        module = _new_module(spec.name)\\n    _init_module_attrs(spec, module)\\n    return module\\n\\n\\ndef _module_repr_from_spec(spec):\\n    \\\"\\\"\\\"Return the repr to use for the module.\\\"\\\"\\\"\\n    name = '?' if spec.name is None else spec.name\\n    if spec.origin is None:\\n        loader = spec.loader\\n        if loader is None:\\n            return f'<module {name!r}>'\\n        elif (\\n            _bootstrap_external is not None\\n            and isinstance(loader, _bootstrap_external.NamespaceLoader)\\n        ):\\n            return f'<module {name!r} (namespace) from {list(loader._path)}>'\\n        else:\\n            return f'<module {name!r} ({loader!r})>'\\n    else:\\n        if spec.has_location:\\n            return f'<module {name!r} from {spec.origin!r}>'\\n        else:\\n            return f'<module {spec.name!r} ({spec.origin})>'\\n\\n\\n# Used by importlib.reload() and _load_module_shim().\\ndef _exec(spec, module):\\n    \\\"\\\"\\\"Execute the spec's specified module in an existing module's namespace.\\\"\\\"\\\"\\n    name = spec.name\\n    with _ModuleLockManager(name):\\n        if sys.modules.get(name) is not module:\\n            msg = f'module {name!r} not in sys.modules'\\n            raise ImportError(msg, name=name)\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # Namespace package.\\n                _init_module_attrs(spec, module, override=True)\\n            else:\\n                _init_module_attrs(spec, module, override=True)\\n                if not hasattr(spec.loader, 'exec_module'):\\n                    msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                           \\\"falling back to load_module()\\\")\\n                    _warnings.warn(msg, ImportWarning)\\n                    spec.loader.load_module(name)\\n                else:\\n                    spec.loader.exec_module(module)\\n        finally:\\n            # Update the order of insertion into sys.modules for module\\n            # clean-up at shutdown.\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n    return module\\n\\n\\ndef _load_backward_compatible(spec):\\n    # It is assumed that all callers have been warned about using load_module()\\n    # appropriately before calling this function.\\n    try:\\n        spec.loader.load_module(spec.name)\\n    except:\\n        if spec.name in sys.modules:\\n            module = sys.modules.pop(spec.name)\\n            sys.modules[spec.name] = module\\n        raise\\n    # The module must be in sys.modules at this point!\\n    # Move it to the end of sys.modules.\\n    module = sys.modules.pop(spec.name)\\n    sys.modules[spec.name] = module\\n    if getattr(module, '__loader__', None) is None:\\n        try:\\n            module.__loader__ = spec.loader\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__package__', None) is None:\\n        try:\\n            # Since module.__path__ may not line up with\\n            # spec.submodule_search_paths, we can't necessarily rely\\n            # on spec.parent here.\\n            module.__package__ = module.__name__\\n            if not hasattr(module, '__path__'):\\n                module.__package__ = spec.name.rpartition('.')[0]\\n        except AttributeError:\\n            pass\\n    if getattr(module, '__spec__', None) is None:\\n        try:\\n            module.__spec__ = spec\\n        except AttributeError:\\n            pass\\n    return module\\n\\ndef _load_unlocked(spec):\\n    # A helper for direct use by the import system.\\n    if spec.loader is not None:\\n        # Not a namespace package.\\n        if not hasattr(spec.loader, 'exec_module'):\\n            msg = (f\\\"{_object_name(spec.loader)}.exec_module() not found; \\\"\\n                    \\\"falling back to load_module()\\\")\\n            _warnings.warn(msg, ImportWarning)\\n            return _load_backward_compatible(spec)\\n\\n    module = module_from_spec(spec)\\n\\n    # This must be done before putting the module in sys.modules\\n    # (otherwise an optimization shortcut in import.c becomes\\n    # wrong).\\n    spec._initializing = True\\n    try:\\n        sys.modules[spec.name] = module\\n        try:\\n            if spec.loader is None:\\n                if spec.submodule_search_locations is None:\\n                    raise ImportError('missing loader', name=spec.name)\\n                # A namespace package so do nothing.\\n            else:\\n                spec.loader.exec_module(module)\\n        except:\\n            try:\\n                del sys.modules[spec.name]\\n            except KeyError:\\n                pass\\n            raise\\n        # Move the module to the end of sys.modules.\\n        # We don't ensure that the import-related module attributes get\\n        # set in the sys.modules replacement case.  Such modules are on\\n        # their own.\\n        module = sys.modules.pop(spec.name)\\n        sys.modules[spec.name] = module\\n        _verbose_message('import {!r} # {!r}', spec.name, spec.loader)\\n    finally:\\n        spec._initializing = False\\n\\n    return module\\n\\n# A method used during testing of _load_unlocked() and by\\n# _load_module_shim().\\ndef _load(spec):\\n    \\\"\\\"\\\"Return a new module object, loaded by the spec's loader.\\n\\n    The module is not added to its parent.\\n\\n    If a module is already in sys.modules, that existing module gets\\n    clobbered.\\n\\n    \\\"\\\"\\\"\\n    with _ModuleLockManager(spec.name):\\n        return _load_unlocked(spec)\\n\\n\\n# Loaders #####################################################################\\n\\nclass BuiltinImporter:\\n\\n    \\\"\\\"\\\"Meta path import for built-in modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"built-in\\\"\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        if _imp.is_builtin(fullname):\\n            return spec_from_loader(fullname, cls, origin=cls._ORIGIN)\\n        else:\\n            return None\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Create a built-in module\\\"\\\"\\\"\\n        if spec.name not in sys.builtin_module_names:\\n            raise ImportError(f'{spec.name!r} is not a built-in module',\\n                              name=spec.name)\\n        return _call_with_frames_removed(_imp.create_builtin, spec)\\n\\n    @staticmethod\\n    def exec_module(module):\\n        \\\"\\\"\\\"Exec a built-in module\\\"\\\"\\\"\\n        _call_with_frames_removed(_imp.exec_builtin, module)\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have code objects.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as built-in modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_builtin\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return False as built-in modules are never packages.\\\"\\\"\\\"\\n        return False\\n\\n    load_module = classmethod(_load_module_shim)\\n\\n\\nclass FrozenImporter:\\n\\n    \\\"\\\"\\\"Meta path import for frozen modules.\\n\\n    All methods are either class or static methods to avoid the need to\\n    instantiate the class.\\n\\n    \\\"\\\"\\\"\\n\\n    _ORIGIN = \\\"frozen\\\"\\n\\n    @classmethod\\n    def _fix_up_module(cls, module):\\n        spec = module.__spec__\\n        state = spec.loader_state\\n        if state is None:\\n            # The module is missing FrozenImporter-specific values.\\n\\n            # Fix up the spec attrs.\\n            origname = vars(module).pop('__origname__', None)\\n            assert origname, 'see PyImport_ImportFrozenModuleObject()'\\n            ispkg = hasattr(module, '__path__')\\n            assert _imp.is_frozen_package(module.__name__) == ispkg, ispkg\\n            filename, pkgdir = cls._resolve_filename(origname, spec.name, ispkg)\\n            spec.loader_state = type(sys.implementation)(\\n                filename=filename,\\n                origname=origname,\\n            )\\n            __path__ = spec.submodule_search_locations\\n            if ispkg:\\n                assert __path__ == [], __path__\\n                if pkgdir:\\n                    spec.submodule_search_locations.insert(0, pkgdir)\\n            else:\\n                assert __path__ is None, __path__\\n\\n            # Fix up the module attrs (the bare minimum).\\n            assert not hasattr(module, '__file__'), module.__file__\\n            if filename:\\n                try:\\n                    module.__file__ = filename\\n                except AttributeError:\\n                    pass\\n            if ispkg:\\n                if module.__path__ != __path__:\\n                    assert module.__path__ == [], module.__path__\\n                    module.__path__.extend(__path__)\\n        else:\\n            # These checks ensure that _fix_up_module() is only called\\n            # in the right places.\\n            __path__ = spec.submodule_search_locations\\n            ispkg = __path__ is not None\\n            # Check the loader state.\\n            assert sorted(vars(state)) == ['filename', 'origname'], state\\n            if state.origname:\\n                # The only frozen modules with \\\"origname\\\" set are stdlib modules.\\n                (__file__, pkgdir,\\n                 ) = cls._resolve_filename(state.origname, spec.name, ispkg)\\n                assert state.filename == __file__, (state.filename, __file__)\\n                if pkgdir:\\n                    assert __path__ == [pkgdir], (__path__, pkgdir)\\n                else:\\n                    assert __path__ == ([] if ispkg else None), __path__\\n            else:\\n                __file__ = None\\n                assert state.filename is None, state.filename\\n                assert __path__ == ([] if ispkg else None), __path__\\n            # Check the file attrs.\\n            if __file__:\\n                assert hasattr(module, '__file__')\\n                assert module.__file__ == __file__, (module.__file__, __file__)\\n            else:\\n                assert not hasattr(module, '__file__'), module.__file__\\n            if ispkg:\\n                assert hasattr(module, '__path__')\\n                assert module.__path__ == __path__, (module.__path__, __path__)\\n            else:\\n                assert not hasattr(module, '__path__'), module.__path__\\n        assert not spec.has_location\\n\\n    @classmethod\\n    def _resolve_filename(cls, fullname, alias=None, ispkg=False):\\n        if not fullname or not getattr(sys, '_stdlib_dir', None):\\n            return None, None\\n        try:\\n            sep = cls._SEP\\n        except AttributeError:\\n            sep = cls._SEP = '\\\\\\\\' if sys.platform == 'win32' else '/'\\n\\n        if fullname != alias:\\n            if fullname.startswith('<'):\\n                fullname = fullname[1:]\\n                if not ispkg:\\n                    fullname = f'{fullname}.__init__'\\n            else:\\n                ispkg = False\\n        relfile = fullname.replace('.', sep)\\n        if ispkg:\\n            pkgdir = f'{sys._stdlib_dir}{sep}{relfile}'\\n            filename = f'{pkgdir}{sep}__init__.py'\\n        else:\\n            pkgdir = None\\n            filename = f'{sys._stdlib_dir}{sep}{relfile}.py'\\n        return filename, pkgdir\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        info = _call_with_frames_removed(_imp.find_frozen, fullname)\\n        if info is None:\\n            return None\\n        # We get the marshaled data in exec_module() (the loader\\n        # part of the importer), instead of here (the finder part).\\n        # The loader is the usual place to get the data that will\\n        # be loaded into the module.  (For example, see _LoaderBasics\\n        # in _bootstra_external.py.)  Most importantly, this importer\\n        # is simpler if we wait to get the data.\\n        # However, getting as much data in the finder as possible\\n        # to later load the module is okay, and sometimes important.\\n        # (That's why ModuleSpec.loader_state exists.)  This is\\n        # especially true if it avoids throwing away expensive data\\n        # the loader would otherwise duplicate later and can be done\\n        # efficiently.  In this case it isn't worth it.\\n        _, ispkg, origname = info\\n        spec = spec_from_loader(fullname, cls,\\n                                origin=cls._ORIGIN,\\n                                is_package=ispkg)\\n        filename, pkgdir = cls._resolve_filename(origname, fullname, ispkg)\\n        spec.loader_state = type(sys.implementation)(\\n            filename=filename,\\n            origname=origname,\\n        )\\n        if pkgdir:\\n            spec.submodule_search_locations.insert(0, pkgdir)\\n        return spec\\n\\n    @staticmethod\\n    def create_module(spec):\\n        \\\"\\\"\\\"Set __file__, if able.\\\"\\\"\\\"\\n        module = _new_module(spec.name)\\n        try:\\n            filename = spec.loader_state.filename\\n        except AttributeError:\\n            pass\\n        else:\\n            if filename:\\n                module.__file__ = filename\\n        return module\\n\\n    @staticmethod\\n    def exec_module(module):\\n        spec = module.__spec__\\n        name = spec.name\\n        code = _call_with_frames_removed(_imp.get_frozen_object, name)\\n        exec(code, module.__dict__)\\n\\n    @classmethod\\n    def load_module(cls, fullname):\\n        \\\"\\\"\\\"Load a frozen module.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # Warning about deprecation implemented in _load_module_shim().\\n        module = _load_module_shim(cls, fullname)\\n        info = _imp.find_frozen(fullname)\\n        assert info is not None\\n        _, ispkg, origname = info\\n        module.__origname__ = origname\\n        vars(module).pop('__file__', None)\\n        if ispkg:\\n            module.__path__ = []\\n        cls._fix_up_module(module)\\n        return module\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_code(cls, fullname):\\n        \\\"\\\"\\\"Return the code object for the frozen module.\\\"\\\"\\\"\\n        return _imp.get_frozen_object(fullname)\\n\\n    @classmethod\\n    @_requires_frozen\\n    def get_source(cls, fullname):\\n        \\\"\\\"\\\"Return None as frozen modules do not have source code.\\\"\\\"\\\"\\n        return None\\n\\n    @classmethod\\n    @_requires_frozen\\n    def is_package(cls, fullname):\\n        \\\"\\\"\\\"Return True if the frozen module is a package.\\\"\\\"\\\"\\n        return _imp.is_frozen_package(fullname)\\n\\n\\n# Import itself ###############################################################\\n\\nclass _ImportLockContext:\\n\\n    \\\"\\\"\\\"Context manager for the import lock.\\\"\\\"\\\"\\n\\n    def __enter__(self):\\n        \\\"\\\"\\\"Acquire the import lock.\\\"\\\"\\\"\\n        _imp.acquire_lock()\\n\\n    def __exit__(self, exc_type, exc_value, exc_traceback):\\n        \\\"\\\"\\\"Release the import lock regardless of any raised exceptions.\\\"\\\"\\\"\\n        _imp.release_lock()\\n\\n\\ndef _resolve_name(name, package, level):\\n    \\\"\\\"\\\"Resolve a relative module name to an absolute one.\\\"\\\"\\\"\\n    bits = package.rsplit('.', level - 1)\\n    if len(bits) < level:\\n        raise ImportError('attempted relative import beyond top-level package')\\n    base = bits[0]\\n    return f'{base}.{name}' if name else base\\n\\n\\ndef _find_spec(name, path, target=None):\\n    \\\"\\\"\\\"Find a module's spec.\\\"\\\"\\\"\\n    meta_path = sys.meta_path\\n    if meta_path is None:\\n        # PyImport_Cleanup() is running or has been called.\\n        raise ImportError(\\\"sys.meta_path is None, Python is likely \\\"\\n                          \\\"shutting down\\\")\\n\\n    if not meta_path:\\n        _warnings.warn('sys.meta_path is empty', ImportWarning)\\n\\n    # We check sys.modules here for the reload case.  While a passed-in\\n    # target will usually indicate a reload there is no guarantee, whereas\\n    # sys.modules provides one.\\n    is_reload = name in sys.modules\\n    for finder in meta_path:\\n        with _ImportLockContext():\\n            try:\\n                find_spec = finder.find_spec\\n            except AttributeError:\\n                continue\\n            else:\\n                spec = find_spec(name, path, target)\\n        if spec is not None:\\n            # The parent import may have already imported this module.\\n            if not is_reload and name in sys.modules:\\n                module = sys.modules[name]\\n                try:\\n                    __spec__ = module.__spec__\\n                except AttributeError:\\n                    # We use the found spec since that is the one that\\n                    # we would have used if the parent module hadn't\\n                    # beaten us to the punch.\\n                    return spec\\n                else:\\n                    if __spec__ is None:\\n                        return spec\\n                    else:\\n                        return __spec__\\n            else:\\n                return spec\\n    else:\\n        return None\\n\\n\\ndef _sanity_check(name, package, level):\\n    \\\"\\\"\\\"Verify arguments are \\\"sane\\\".\\\"\\\"\\\"\\n    if not isinstance(name, str):\\n        raise TypeError(f'module name must be str, not {type(name)}')\\n    if level < 0:\\n        raise ValueError('level must be >= 0')\\n    if level > 0:\\n        if not isinstance(package, str):\\n            raise TypeError('__package__ not set to a string')\\n        elif not package:\\n            raise ImportError('attempted relative import with no known parent '\\n                              'package')\\n    if not name and level == 0:\\n        raise ValueError('Empty module name')\\n\\n\\n_ERR_MSG_PREFIX = 'No module named '\\n_ERR_MSG = _ERR_MSG_PREFIX + '{!r}'\\n\\ndef _find_and_load_unlocked(name, import_):\\n    path = None\\n    parent = name.rpartition('.')[0]\\n    parent_spec = None\\n    if parent:\\n        if parent not in sys.modules:\\n            _call_with_frames_removed(import_, parent)\\n        # Crazy side-effects!\\n        if name in sys.modules:\\n            return sys.modules[name]\\n        parent_module = sys.modules[parent]\\n        try:\\n            path = parent_module.__path__\\n        except AttributeError:\\n            msg = f'{_ERR_MSG_PREFIX}{name!r}; {parent!r} is not a package'\\n            raise ModuleNotFoundError(msg, name=name) from None\\n        parent_spec = parent_module.__spec__\\n        child = name.rpartition('.')[2]\\n    spec = _find_spec(name, path)\\n    if spec is None:\\n        raise ModuleNotFoundError(f'{_ERR_MSG_PREFIX}{name!r}', name=name)\\n    else:\\n        if parent_spec:\\n            # Temporarily add child we are currently importing to parent's\\n            # _uninitialized_submodules for circular import tracking.\\n            parent_spec._uninitialized_submodules.append(child)\\n        try:\\n            module = _load_unlocked(spec)\\n        finally:\\n            if parent_spec:\\n                parent_spec._uninitialized_submodules.pop()\\n    if parent:\\n        # Set the module as an attribute on its parent.\\n        parent_module = sys.modules[parent]\\n        try:\\n            setattr(parent_module, child, module)\\n        except AttributeError:\\n            msg = f\\\"Cannot set an attribute on {parent!r} for child module {child!r}\\\"\\n            _warnings.warn(msg, ImportWarning)\\n    return module\\n\\n\\n_NEEDS_LOADING = object()\\n\\n\\ndef _find_and_load(name, import_):\\n    \\\"\\\"\\\"Find and load the module.\\\"\\\"\\\"\\n\\n    # Optimization: we avoid unneeded module locking if the module\\n    # already exists in sys.modules and is fully initialized.\\n    module = sys.modules.get(name, _NEEDS_LOADING)\\n    if (module is _NEEDS_LOADING or\\n        getattr(getattr(module, \\\"__spec__\\\", None), \\\"_initializing\\\", False)):\\n        with _ModuleLockManager(name):\\n            module = sys.modules.get(name, _NEEDS_LOADING)\\n            if module is _NEEDS_LOADING:\\n                return _find_and_load_unlocked(name, import_)\\n\\n        # Optimization: only call _bootstrap._lock_unlock_module() if\\n        # module.__spec__._initializing is True.\\n        # NOTE: because of this, initializing must be set *before*\\n        # putting the new module in sys.modules.\\n        _lock_unlock_module(name)\\n\\n    if module is None:\\n        message = f'import of {name} halted; None in sys.modules'\\n        raise ModuleNotFoundError(message, name=name)\\n\\n    return module\\n\\n\\ndef _gcd_import(name, package=None, level=0):\\n    \\\"\\\"\\\"Import and return the module based on its name, the package the call is\\n    being made from, and the level adjustment.\\n\\n    This function represents the greatest common denominator of functionality\\n    between import_module and __import__. This includes setting __package__ if\\n    the loader did not.\\n\\n    \\\"\\\"\\\"\\n    _sanity_check(name, package, level)\\n    if level > 0:\\n        name = _resolve_name(name, package, level)\\n    return _find_and_load(name, _gcd_import)\\n\\n\\ndef _handle_fromlist(module, fromlist, import_, *, recursive=False):\\n    \\\"\\\"\\\"Figure out what __import__ should return.\\n\\n    The import_ parameter is a callable which takes the name of module to\\n    import. It is required to decouple the function from assuming importlib's\\n    import implementation is desired.\\n\\n    \\\"\\\"\\\"\\n    # The hell that is fromlist ...\\n    # If a package was imported, try to import stuff from fromlist.\\n    for x in fromlist:\\n        if not isinstance(x, str):\\n            if recursive:\\n                where = module.__name__ + '.__all__'\\n            else:\\n                where = \\\"``from list''\\\"\\n            raise TypeError(f\\\"Item in {where} must be str, \\\"\\n                            f\\\"not {type(x).__name__}\\\")\\n        elif x == '*':\\n            if not recursive and hasattr(module, '__all__'):\\n                _handle_fromlist(module, module.__all__, import_,\\n                                 recursive=True)\\n        elif not hasattr(module, x):\\n            from_name = f'{module.__name__}.{x}'\\n            try:\\n                _call_with_frames_removed(import_, from_name)\\n            except ModuleNotFoundError as exc:\\n                # Backwards-compatibility dictates we ignore failed\\n                # imports triggered by fromlist for modules that don't\\n                # exist.\\n                if (exc.name == from_name and\\n                    sys.modules.get(from_name, _NEEDS_LOADING) is not None):\\n                    continue\\n                raise\\n    return module\\n\\n\\ndef _calc___package__(globals):\\n    \\\"\\\"\\\"Calculate what __package__ should be.\\n\\n    __package__ is not guaranteed to be defined or could be set to None\\n    to represent that its proper value is unknown.\\n\\n    \\\"\\\"\\\"\\n    package = globals.get('__package__')\\n    spec = globals.get('__spec__')\\n    if package is not None:\\n        if spec is not None and package != spec.parent:\\n            _warnings.warn(\\\"__package__ != __spec__.parent \\\"\\n                           f\\\"({package!r} != {spec.parent!r})\\\",\\n                           DeprecationWarning, stacklevel=3)\\n        return package\\n    elif spec is not None:\\n        return spec.parent\\n    else:\\n        _warnings.warn(\\\"can't resolve package from __spec__ or __package__, \\\"\\n                       \\\"falling back on __name__ and __path__\\\",\\n                       ImportWarning, stacklevel=3)\\n        package = globals['__name__']\\n        if '__path__' not in globals:\\n            package = package.rpartition('.')[0]\\n    return package\\n\\n\\ndef __import__(name, globals=None, locals=None, fromlist=(), level=0):\\n    \\\"\\\"\\\"Import a module.\\n\\n    The 'globals' argument is used to infer where the import is occurring from\\n    to handle relative imports. The 'locals' argument is ignored. The\\n    'fromlist' argument specifies what should exist as attributes on the module\\n    being imported (e.g. ``from module import <fromlist>``).  The 'level'\\n    argument represents the package location to import from in a relative\\n    import (e.g. ``from ..pkg import mod`` would have a 'level' of 2).\\n\\n    \\\"\\\"\\\"\\n    if level == 0:\\n        module = _gcd_import(name)\\n    else:\\n        globals_ = globals if globals is not None else {}\\n        package = _calc___package__(globals_)\\n        module = _gcd_import(name, package, level)\\n    if not fromlist:\\n        # Return up to the first dot in 'name'. This is complicated by the fact\\n        # that 'name' may be relative.\\n        if level == 0:\\n            return _gcd_import(name.partition('.')[0])\\n        elif not name:\\n            return module\\n        else:\\n            # Figure out where to slice the module's name up to the first dot\\n            # in 'name'.\\n            cut_off = len(name) - len(name.partition('.')[0])\\n            # Slice end needs to be positive to alleviate need to special-case\\n            # when ``'.' not in name``.\\n            return sys.modules[module.__name__[:len(module.__name__)-cut_off]]\\n    elif hasattr(module, '__path__'):\\n        return _handle_fromlist(module, fromlist, _gcd_import)\\n    else:\\n        return module\\n\\n\\ndef _builtin_from_name(name):\\n    spec = BuiltinImporter.find_spec(name)\\n    if spec is None:\\n        raise ImportError('no built-in module named ' + name)\\n    return _load_unlocked(spec)\\n\\n\\ndef _setup(sys_module, _imp_module):\\n    \\\"\\\"\\\"Setup importlib by importing needed built-in modules and injecting them\\n    into the global namespace.\\n\\n    As sys is needed for sys.modules access and _imp is needed to load built-in\\n    modules, those two modules must be explicitly passed in.\\n\\n    \\\"\\\"\\\"\\n    global _imp, sys, _blocking_on\\n    _imp = _imp_module\\n    sys = sys_module\\n\\n    # Set up the spec for existing builtin/frozen modules.\\n    module_type = type(sys)\\n    for name, module in sys.modules.items():\\n        if isinstance(module, module_type):\\n            if name in sys.builtin_module_names:\\n                loader = BuiltinImporter\\n            elif _imp.is_frozen(name):\\n                loader = FrozenImporter\\n            else:\\n                continue\\n            spec = _spec_from_module(module, loader)\\n            _init_module_attrs(spec, module)\\n            if loader is FrozenImporter:\\n                loader._fix_up_module(module)\\n\\n    # Directly load built-in modules needed during bootstrap.\\n    self_module = sys.modules[__name__]\\n    for builtin_name in ('_thread', '_warnings', '_weakref'):\\n        if builtin_name not in sys.modules:\\n            builtin_module = _builtin_from_name(builtin_name)\\n        else:\\n            builtin_module = sys.modules[builtin_name]\\n        setattr(self_module, builtin_name, builtin_module)\\n\\n    # Instantiation requires _weakref to have been set.\\n    _blocking_on = _WeakValueDictionary()\\n\\n\\ndef _install(sys_module, _imp_module):\\n    \\\"\\\"\\\"Install importers for builtin and frozen modules\\\"\\\"\\\"\\n    _setup(sys_module, _imp_module)\\n\\n    sys.meta_path.append(BuiltinImporter)\\n    sys.meta_path.append(FrozenImporter)\\n\\n\\ndef _install_external_importers():\\n    \\\"\\\"\\\"Install importers that require external filesystem access\\\"\\\"\\\"\\n    global _bootstrap_external\\n    import _frozen_importlib_external\\n    _bootstrap_external = _frozen_importlib_external\\n    _frozen_importlib_external._install(sys.modules[__name__])\\n\", 1551], \"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\": [\"# don't import any costly modules\\nimport os\\nimport sys\\n\\nreport_url = (\\n    \\\"https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml\\\"\\n)\\n\\n\\ndef warn_distutils_present():\\n    if 'distutils' not in sys.modules:\\n        return\\n    import warnings\\n\\n    warnings.warn(\\n        \\\"Distutils was imported before Setuptools, but importing Setuptools \\\"\\n        \\\"also replaces the `distutils` module in `sys.modules`. This may lead \\\"\\n        \\\"to undesirable behaviors or errors. To avoid these issues, avoid \\\"\\n        \\\"using distutils directly, ensure that setuptools is installed in the \\\"\\n        \\\"traditional way (e.g. not an editable install), and/or make sure \\\"\\n        \\\"that setuptools is always imported before distutils.\\\"\\n    )\\n\\n\\ndef clear_distutils():\\n    if 'distutils' not in sys.modules:\\n        return\\n    import warnings\\n\\n    warnings.warn(\\n        \\\"Setuptools is replacing distutils. Support for replacing \\\"\\n        \\\"an already imported distutils is deprecated. In the future, \\\"\\n        \\\"this condition will fail. \\\"\\n        f\\\"Register concerns at {report_url}\\\"\\n    )\\n    mods = [\\n        name\\n        for name in sys.modules\\n        if name == \\\"distutils\\\" or name.startswith(\\\"distutils.\\\")\\n    ]\\n    for name in mods:\\n        del sys.modules[name]\\n\\n\\ndef enabled():\\n    \\\"\\\"\\\"\\n    Allow selection of distutils by environment variable.\\n    \\\"\\\"\\\"\\n    which = os.environ.get('SETUPTOOLS_USE_DISTUTILS', 'local')\\n    if which == 'stdlib':\\n        import warnings\\n\\n        warnings.warn(\\n            \\\"Reliance on distutils from stdlib is deprecated. Users \\\"\\n            \\\"must rely on setuptools to provide the distutils module. \\\"\\n            \\\"Avoid importing distutils or import setuptools first, \\\"\\n            \\\"and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. \\\"\\n            f\\\"Register concerns at {report_url}\\\"\\n        )\\n    return which == 'local'\\n\\n\\ndef ensure_local_distutils():\\n    import importlib\\n\\n    clear_distutils()\\n\\n    # With the DistutilsMetaFinder in place,\\n    # perform an import to cause distutils to be\\n    # loaded from setuptools._distutils. Ref #2906.\\n    with shim():\\n        importlib.import_module('distutils')\\n\\n    # check that submodules load as expected\\n    core = importlib.import_module('distutils.core')\\n    assert '_distutils' in core.__file__, core.__file__\\n    assert 'setuptools._distutils.log' not in sys.modules\\n\\n\\ndef do_override():\\n    \\\"\\\"\\\"\\n    Ensure that the local copy of distutils is preferred over stdlib.\\n\\n    See https://github.com/pypa/setuptools/issues/417#issuecomment-392298401\\n    for more motivation.\\n    \\\"\\\"\\\"\\n    if enabled():\\n        warn_distutils_present()\\n        ensure_local_distutils()\\n\\n\\nclass _TrivialRe:\\n    def __init__(self, *patterns) -> None:\\n        self._patterns = patterns\\n\\n    def match(self, string):\\n        return all(pat in string for pat in self._patterns)\\n\\n\\nclass DistutilsMetaFinder:\\n    def find_spec(self, fullname, path, target=None):\\n        # optimization: only consider top level modules and those\\n        # found in the CPython test suite.\\n        if path is not None and not fullname.startswith('test.'):\\n            return None\\n\\n        method_name = 'spec_for_{fullname}'.format(**locals())\\n        method = getattr(self, method_name, lambda: None)\\n        return method()\\n\\n    def spec_for_distutils(self):\\n        if self.is_cpython():\\n            return None\\n\\n        import importlib\\n        import importlib.abc\\n        import importlib.util\\n\\n        try:\\n            mod = importlib.import_module('setuptools._distutils')\\n        except Exception:\\n            # There are a couple of cases where setuptools._distutils\\n            # may not be present:\\n            # - An older Setuptools without a local distutils is\\n            #   taking precedence. Ref #2957.\\n            # - Path manipulation during sitecustomize removes\\n            #   setuptools from the path but only after the hook\\n            #   has been loaded. Ref #2980.\\n            # In either case, fall back to stdlib behavior.\\n            return None\\n\\n        class DistutilsLoader(importlib.abc.Loader):\\n            def create_module(self, spec):\\n                mod.__name__ = 'distutils'\\n                return mod\\n\\n            def exec_module(self, module):\\n                pass\\n\\n        return importlib.util.spec_from_loader(\\n            'distutils', DistutilsLoader(), origin=mod.__file__\\n        )\\n\\n    @staticmethod\\n    def is_cpython():\\n        \\\"\\\"\\\"\\n        Suppress supplying distutils for CPython (build and tests).\\n        Ref #2965 and #3007.\\n        \\\"\\\"\\\"\\n        return os.path.isfile('pybuilddir.txt')\\n\\n    def spec_for_pip(self):\\n        \\\"\\\"\\\"\\n        Ensure stdlib distutils when running under pip.\\n        See pypa/pip#8761 for rationale.\\n        \\\"\\\"\\\"\\n        if sys.version_info >= (3, 12) or self.pip_imported_during_build():\\n            return\\n        clear_distutils()\\n        self.spec_for_distutils = lambda: None\\n\\n    @classmethod\\n    def pip_imported_during_build(cls):\\n        \\\"\\\"\\\"\\n        Detect if pip is being imported in a build script. Ref #2355.\\n        \\\"\\\"\\\"\\n        import traceback\\n\\n        return any(\\n            cls.frame_file_is_setup(frame) for frame, line in traceback.walk_stack(None)\\n        )\\n\\n    @staticmethod\\n    def frame_file_is_setup(frame):\\n        \\\"\\\"\\\"\\n        Return True if the indicated frame suggests a setup.py file.\\n        \\\"\\\"\\\"\\n        # some frames may not have __file__ (#2940)\\n        return frame.f_globals.get('__file__', '').endswith('setup.py')\\n\\n    def spec_for_sensitive_tests(self):\\n        \\\"\\\"\\\"\\n        Ensure stdlib distutils when running select tests under CPython.\\n\\n        python/cpython#91169\\n        \\\"\\\"\\\"\\n        clear_distutils()\\n        self.spec_for_distutils = lambda: None\\n\\n    sensitive_tests = (\\n        [\\n            'test.test_distutils',\\n            'test.test_peg_generator',\\n            'test.test_importlib',\\n        ]\\n        if sys.version_info < (3, 10)\\n        else [\\n            'test.test_distutils',\\n        ]\\n    )\\n\\n\\nfor name in DistutilsMetaFinder.sensitive_tests:\\n    setattr(\\n        DistutilsMetaFinder,\\n        f'spec_for_{name}',\\n        DistutilsMetaFinder.spec_for_sensitive_tests,\\n    )\\n\\n\\nDISTUTILS_FINDER = DistutilsMetaFinder()\\n\\n\\ndef add_shim():\\n    DISTUTILS_FINDER in sys.meta_path or insert_shim()\\n\\n\\nclass shim:\\n    def __enter__(self) -> None:\\n        insert_shim()\\n\\n    def __exit__(self, exc: object, value: object, tb: object) -> None:\\n        _remove_shim()\\n\\n\\ndef insert_shim():\\n    sys.meta_path.insert(0, DISTUTILS_FINDER)\\n\\n\\ndef _remove_shim():\\n    try:\\n        sys.meta_path.remove(DISTUTILS_FINDER)\\n    except ValueError:\\n        pass\\n\\n\\nif sys.version_info < (3, 12):\\n    # DistutilsMetaFinder can only be disabled in Python < 3.12 (PEP 632)\\n    remove_shim = _remove_shim\\n\", 239], \"<frozen importlib._bootstrap_external>\": [\"\\\"\\\"\\\"Core implementation of path-based import.\\n\\nThis module is NOT meant to be directly imported! It has been designed such\\nthat it can be bootstrapped into Python as the implementation of import. As\\nsuch it requires the injection of specific modules and attributes in order to\\nwork. One should use importlib as the public-facing version of this module.\\n\\n\\\"\\\"\\\"\\n# IMPORTANT: Whenever making changes to this module, be sure to run a top-level\\n# `make regen-importlib` followed by `make` in order to get the frozen version\\n# of the module updated. Not doing so will result in the Makefile to fail for\\n# all others who don't have a ./python around to freeze the module in the early\\n# stages of compilation.\\n#\\n\\n# See importlib._setup() for what is injected into the global namespace.\\n\\n# When editing this code be aware that code executed at import time CANNOT\\n# reference any injected objects! This includes not only global code but also\\n# anything specified at the class level.\\n\\n# Module injected manually by _set_bootstrap_module()\\n_bootstrap = None\\n\\n# Import builtin modules\\nimport _imp\\nimport _io\\nimport sys\\nimport _warnings\\nimport marshal\\n\\n\\n_MS_WINDOWS = (sys.platform == 'win32')\\nif _MS_WINDOWS:\\n    import nt as _os\\n    import winreg\\nelse:\\n    import posix as _os\\n\\n\\nif _MS_WINDOWS:\\n    path_separators = ['\\\\\\\\', '/']\\nelse:\\n    path_separators = ['/']\\n# Assumption made in _path_join()\\nassert all(len(sep) == 1 for sep in path_separators)\\npath_sep = path_separators[0]\\npath_sep_tuple = tuple(path_separators)\\npath_separators = ''.join(path_separators)\\n_pathseps_with_colon = {f':{s}' for s in path_separators}\\n\\n\\n# Bootstrap-related code ######################################################\\n_CASE_INSENSITIVE_PLATFORMS_STR_KEY = 'win',\\n_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY = 'cygwin', 'darwin'\\n_CASE_INSENSITIVE_PLATFORMS =  (_CASE_INSENSITIVE_PLATFORMS_BYTES_KEY\\n                                + _CASE_INSENSITIVE_PLATFORMS_STR_KEY)\\n\\n\\ndef _make_relax_case():\\n    if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):\\n        if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS_STR_KEY):\\n            key = 'PYTHONCASEOK'\\n        else:\\n            key = b'PYTHONCASEOK'\\n\\n        def _relax_case():\\n            \\\"\\\"\\\"True if filenames must be checked case-insensitively and ignore environment flags are not set.\\\"\\\"\\\"\\n            return not sys.flags.ignore_environment and key in _os.environ\\n    else:\\n        def _relax_case():\\n            \\\"\\\"\\\"True if filenames must be checked case-insensitively.\\\"\\\"\\\"\\n            return False\\n    return _relax_case\\n\\n_relax_case = _make_relax_case()\\n\\n\\ndef _pack_uint32(x):\\n    \\\"\\\"\\\"Convert a 32-bit integer to little-endian.\\\"\\\"\\\"\\n    return (int(x) & 0xFFFFFFFF).to_bytes(4, 'little')\\n\\n\\ndef _unpack_uint32(data):\\n    \\\"\\\"\\\"Convert 4 bytes in little-endian to an integer.\\\"\\\"\\\"\\n    assert len(data) == 4\\n    return int.from_bytes(data, 'little')\\n\\ndef _unpack_uint16(data):\\n    \\\"\\\"\\\"Convert 2 bytes in little-endian to an integer.\\\"\\\"\\\"\\n    assert len(data) == 2\\n    return int.from_bytes(data, 'little')\\n\\n\\nif _MS_WINDOWS:\\n    def _path_join(*path_parts):\\n        \\\"\\\"\\\"Replacement for os.path.join().\\\"\\\"\\\"\\n        if not path_parts:\\n            return \\\"\\\"\\n        if len(path_parts) == 1:\\n            return path_parts[0]\\n        root = \\\"\\\"\\n        path = []\\n        for new_root, tail in map(_os._path_splitroot, path_parts):\\n            if new_root.startswith(path_sep_tuple) or new_root.endswith(path_sep_tuple):\\n                root = new_root.rstrip(path_separators) or root\\n                path = [path_sep + tail]\\n            elif new_root.endswith(':'):\\n                if root.casefold() != new_root.casefold():\\n                    # Drive relative paths have to be resolved by the OS, so we reset the\\n                    # tail but do not add a path_sep prefix.\\n                    root = new_root\\n                    path = [tail]\\n                else:\\n                    path.append(tail)\\n            else:\\n                root = new_root or root\\n                path.append(tail)\\n        path = [p.rstrip(path_separators) for p in path if p]\\n        if len(path) == 1 and not path[0]:\\n            # Avoid losing the root's trailing separator when joining with nothing\\n            return root + path_sep\\n        return root + path_sep.join(path)\\n\\nelse:\\n    def _path_join(*path_parts):\\n        \\\"\\\"\\\"Replacement for os.path.join().\\\"\\\"\\\"\\n        return path_sep.join([part.rstrip(path_separators)\\n                              for part in path_parts if part])\\n\\n\\ndef _path_split(path):\\n    \\\"\\\"\\\"Replacement for os.path.split().\\\"\\\"\\\"\\n    i = max(path.rfind(p) for p in path_separators)\\n    if i < 0:\\n        return '', path\\n    return path[:i], path[i + 1:]\\n\\n\\ndef _path_stat(path):\\n    \\\"\\\"\\\"Stat the path.\\n\\n    Made a separate function to make it easier to override in experiments\\n    (e.g. cache stat results).\\n\\n    \\\"\\\"\\\"\\n    return _os.stat(path)\\n\\n\\ndef _path_is_mode_type(path, mode):\\n    \\\"\\\"\\\"Test whether the path is the specified mode type.\\\"\\\"\\\"\\n    try:\\n        stat_info = _path_stat(path)\\n    except OSError:\\n        return False\\n    return (stat_info.st_mode & 0o170000) == mode\\n\\n\\ndef _path_isfile(path):\\n    \\\"\\\"\\\"Replacement for os.path.isfile.\\\"\\\"\\\"\\n    return _path_is_mode_type(path, 0o100000)\\n\\n\\ndef _path_isdir(path):\\n    \\\"\\\"\\\"Replacement for os.path.isdir.\\\"\\\"\\\"\\n    if not path:\\n        path = _os.getcwd()\\n    return _path_is_mode_type(path, 0o040000)\\n\\n\\nif _MS_WINDOWS:\\n    def _path_isabs(path):\\n        \\\"\\\"\\\"Replacement for os.path.isabs.\\\"\\\"\\\"\\n        if not path:\\n            return False\\n        root = _os._path_splitroot(path)[0].replace('/', '\\\\\\\\')\\n        return len(root) > 1 and (root.startswith('\\\\\\\\\\\\\\\\') or root.endswith('\\\\\\\\'))\\n\\nelse:\\n    def _path_isabs(path):\\n        \\\"\\\"\\\"Replacement for os.path.isabs.\\\"\\\"\\\"\\n        return path.startswith(path_separators)\\n\\n\\ndef _path_abspath(path):\\n    \\\"\\\"\\\"Replacement for os.path.abspath.\\\"\\\"\\\"\\n    if not _path_isabs(path):\\n        for sep in path_separators:\\n            path = path.removeprefix(f\\\".{sep}\\\")\\n        return _path_join(_os.getcwd(), path)\\n    else:\\n        return path\\n\\n\\ndef _write_atomic(path, data, mode=0o666):\\n    \\\"\\\"\\\"Best-effort function to write data to a path atomically.\\n    Be prepared to handle a FileExistsError if concurrent writing of the\\n    temporary file is attempted.\\\"\\\"\\\"\\n    # id() is used to generate a pseudo-random filename.\\n    path_tmp = f'{path}.{id(path)}'\\n    fd = _os.open(path_tmp,\\n                  _os.O_EXCL | _os.O_CREAT | _os.O_WRONLY, mode & 0o666)\\n    try:\\n        # We first write data to a temporary file, and then use os.replace() to\\n        # perform an atomic rename.\\n        with _io.FileIO(fd, 'wb') as file:\\n            file.write(data)\\n        _os.replace(path_tmp, path)\\n    except OSError:\\n        try:\\n            _os.unlink(path_tmp)\\n        except OSError:\\n            pass\\n        raise\\n\\n\\n_code_type = type(_write_atomic.__code__)\\n\\n\\n# Finder/loader utility code ###############################################\\n\\n# Magic word to reject .pyc files generated by other Python versions.\\n# It should change for each incompatible change to the bytecode.\\n#\\n# The value of CR and LF is incorporated so if you ever read or write\\n# a .pyc file in text mode the magic number will be wrong; also, the\\n# Apple MPW compiler swaps their values, botching string constants.\\n#\\n# There were a variety of old schemes for setting the magic number.\\n# The current working scheme is to increment the previous value by\\n# 10.\\n#\\n# Starting with the adoption of PEP 3147 in Python 3.2, every bump in magic\\n# number also includes a new \\\"magic tag\\\", i.e. a human readable string used\\n# to represent the magic number in __pycache__ directories.  When you change\\n# the magic number, you must also set a new unique magic tag.  Generally this\\n# can be named after the Python major version of the magic number bump, but\\n# it can really be anything, as long as it's different than anything else\\n# that's come before.  The tags are included in the following table, starting\\n# with Python 3.2a0.\\n#\\n# Known values:\\n#  Python 1.5:   20121\\n#  Python 1.5.1: 20121\\n#     Python 1.5.2: 20121\\n#     Python 1.6:   50428\\n#     Python 2.0:   50823\\n#     Python 2.0.1: 50823\\n#     Python 2.1:   60202\\n#     Python 2.1.1: 60202\\n#     Python 2.1.2: 60202\\n#     Python 2.2:   60717\\n#     Python 2.3a0: 62011\\n#     Python 2.3a0: 62021\\n#     Python 2.3a0: 62011 (!)\\n#     Python 2.4a0: 62041\\n#     Python 2.4a3: 62051\\n#     Python 2.4b1: 62061\\n#     Python 2.5a0: 62071\\n#     Python 2.5a0: 62081 (ast-branch)\\n#     Python 2.5a0: 62091 (with)\\n#     Python 2.5a0: 62092 (changed WITH_CLEANUP opcode)\\n#     Python 2.5b3: 62101 (fix wrong code: for x, in ...)\\n#     Python 2.5b3: 62111 (fix wrong code: x += yield)\\n#     Python 2.5c1: 62121 (fix wrong lnotab with for loops and\\n#                          storing constants that should have been removed)\\n#     Python 2.5c2: 62131 (fix wrong code: for x, in ... in listcomp/genexp)\\n#     Python 2.6a0: 62151 (peephole optimizations and STORE_MAP opcode)\\n#     Python 2.6a1: 62161 (WITH_CLEANUP optimization)\\n#     Python 2.7a0: 62171 (optimize list comprehensions/change LIST_APPEND)\\n#     Python 2.7a0: 62181 (optimize conditional branches:\\n#                          introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE)\\n#     Python 2.7a0  62191 (introduce SETUP_WITH)\\n#     Python 2.7a0  62201 (introduce BUILD_SET)\\n#     Python 2.7a0  62211 (introduce MAP_ADD and SET_ADD)\\n#     Python 3000:   3000\\n#                    3010 (removed UNARY_CONVERT)\\n#                    3020 (added BUILD_SET)\\n#                    3030 (added keyword-only parameters)\\n#                    3040 (added signature annotations)\\n#                    3050 (print becomes a function)\\n#                    3060 (PEP 3115 metaclass syntax)\\n#                    3061 (string literals become unicode)\\n#                    3071 (PEP 3109 raise changes)\\n#                    3081 (PEP 3137 make __file__ and __name__ unicode)\\n#                    3091 (kill str8 interning)\\n#                    3101 (merge from 2.6a0, see 62151)\\n#                    3103 (__file__ points to source file)\\n#     Python 3.0a4: 3111 (WITH_CLEANUP optimization).\\n#     Python 3.0b1: 3131 (lexical exception stacking, including POP_EXCEPT\\n                          #3021)\\n#     Python 3.1a1: 3141 (optimize list, set and dict comprehensions:\\n#                         change LIST_APPEND and SET_ADD, add MAP_ADD #2183)\\n#     Python 3.1a1: 3151 (optimize conditional branches:\\n#                         introduce POP_JUMP_IF_FALSE and POP_JUMP_IF_TRUE\\n                          #4715)\\n#     Python 3.2a1: 3160 (add SETUP_WITH #6101)\\n#                   tag: cpython-32\\n#     Python 3.2a2: 3170 (add DUP_TOP_TWO, remove DUP_TOPX and ROT_FOUR #9225)\\n#                   tag: cpython-32\\n#     Python 3.2a3  3180 (add DELETE_DEREF #4617)\\n#     Python 3.3a1  3190 (__class__ super closure changed)\\n#     Python 3.3a1  3200 (PEP 3155 __qualname__ added #13448)\\n#     Python 3.3a1  3210 (added size modulo 2**32 to the pyc header #13645)\\n#     Python 3.3a2  3220 (changed PEP 380 implementation #14230)\\n#     Python 3.3a4  3230 (revert changes to implicit __class__ closure #14857)\\n#     Python 3.4a1  3250 (evaluate positional default arguments before\\n#                        keyword-only defaults #16967)\\n#     Python 3.4a1  3260 (add LOAD_CLASSDEREF; allow locals of class to override\\n#                        free vars #17853)\\n#     Python 3.4a1  3270 (various tweaks to the __class__ closure #12370)\\n#     Python 3.4a1  3280 (remove implicit class argument)\\n#     Python 3.4a4  3290 (changes to __qualname__ computation #19301)\\n#     Python 3.4a4  3300 (more changes to __qualname__ computation #19301)\\n#     Python 3.4rc2 3310 (alter __qualname__ computation #20625)\\n#     Python 3.5a1  3320 (PEP 465: Matrix multiplication operator #21176)\\n#     Python 3.5b1  3330 (PEP 448: Additional Unpacking Generalizations #2292)\\n#     Python 3.5b2  3340 (fix dictionary display evaluation order #11205)\\n#     Python 3.5b3  3350 (add GET_YIELD_FROM_ITER opcode #24400)\\n#     Python 3.5.2  3351 (fix BUILD_MAP_UNPACK_WITH_CALL opcode #27286)\\n#     Python 3.6a0  3360 (add FORMAT_VALUE opcode #25483)\\n#     Python 3.6a1  3361 (lineno delta of code.co_lnotab becomes signed #26107)\\n#     Python 3.6a2  3370 (16 bit wordcode #26647)\\n#     Python 3.6a2  3371 (add BUILD_CONST_KEY_MAP opcode #27140)\\n#     Python 3.6a2  3372 (MAKE_FUNCTION simplification, remove MAKE_CLOSURE\\n#                         #27095)\\n#     Python 3.6b1  3373 (add BUILD_STRING opcode #27078)\\n#     Python 3.6b1  3375 (add SETUP_ANNOTATIONS and STORE_ANNOTATION opcodes\\n#                         #27985)\\n#     Python 3.6b1  3376 (simplify CALL_FUNCTIONs & BUILD_MAP_UNPACK_WITH_CALL\\n                          #27213)\\n#     Python 3.6b1  3377 (set __class__ cell from type.__new__ #23722)\\n#     Python 3.6b2  3378 (add BUILD_TUPLE_UNPACK_WITH_CALL #28257)\\n#     Python 3.6rc1 3379 (more thorough __class__ validation #23722)\\n#     Python 3.7a1  3390 (add LOAD_METHOD and CALL_METHOD opcodes #26110)\\n#     Python 3.7a2  3391 (update GET_AITER #31709)\\n#     Python 3.7a4  3392 (PEP 552: Deterministic pycs #31650)\\n#     Python 3.7b1  3393 (remove STORE_ANNOTATION opcode #32550)\\n#     Python 3.7b5  3394 (restored docstring as the first stmt in the body;\\n#                         this might affected the first line number #32911)\\n#     Python 3.8a1  3400 (move frame block handling to compiler #17611)\\n#     Python 3.8a1  3401 (add END_ASYNC_FOR #33041)\\n#     Python 3.8a1  3410 (PEP570 Python Positional-Only Parameters #36540)\\n#     Python 3.8b2  3411 (Reverse evaluation order of key: value in dict\\n#                         comprehensions #35224)\\n#     Python 3.8b2  3412 (Swap the position of positional args and positional\\n#                         only args in ast.arguments #37593)\\n#     Python 3.8b4  3413 (Fix \\\"break\\\" and \\\"continue\\\" in \\\"finally\\\" #37830)\\n#     Python 3.9a0  3420 (add LOAD_ASSERTION_ERROR #34880)\\n#     Python 3.9a0  3421 (simplified bytecode for with blocks #32949)\\n#     Python 3.9a0  3422 (remove BEGIN_FINALLY, END_FINALLY, CALL_FINALLY, POP_FINALLY bytecodes #33387)\\n#     Python 3.9a2  3423 (add IS_OP, CONTAINS_OP and JUMP_IF_NOT_EXC_MATCH bytecodes #39156)\\n#     Python 3.9a2  3424 (simplify bytecodes for *value unpacking)\\n#     Python 3.9a2  3425 (simplify bytecodes for **value unpacking)\\n#     Python 3.10a1 3430 (Make 'annotations' future by default)\\n#     Python 3.10a1 3431 (New line number table format -- PEP 626)\\n#     Python 3.10a2 3432 (Function annotation for MAKE_FUNCTION is changed from dict to tuple bpo-42202)\\n#     Python 3.10a2 3433 (RERAISE restores f_lasti if oparg != 0)\\n#     Python 3.10a6 3434 (PEP 634: Structural Pattern Matching)\\n#     Python 3.10a7 3435 Use instruction offsets (as opposed to byte offsets).\\n#     Python 3.10b1 3436 (Add GEN_START bytecode #43683)\\n#     Python 3.10b1 3437 (Undo making 'annotations' future by default - We like to dance among core devs!)\\n#     Python 3.10b1 3438 Safer line number table handling.\\n#     Python 3.10b1 3439 (Add ROT_N)\\n#     Python 3.11a1 3450 Use exception table for unwinding (\\\"zero cost\\\" exception handling)\\n#     Python 3.11a1 3451 (Add CALL_METHOD_KW)\\n#     Python 3.11a1 3452 (drop nlocals from marshaled code objects)\\n#     Python 3.11a1 3453 (add co_fastlocalnames and co_fastlocalkinds)\\n#     Python 3.11a1 3454 (compute cell offsets relative to locals bpo-43693)\\n#     Python 3.11a1 3455 (add MAKE_CELL bpo-43693)\\n#     Python 3.11a1 3456 (interleave cell args bpo-43693)\\n#     Python 3.11a1 3457 (Change localsplus to a bytes object bpo-43693)\\n#     Python 3.11a1 3458 (imported objects now don't use LOAD_METHOD/CALL_METHOD)\\n#     Python 3.11a1 3459 (PEP 657: add end line numbers and column offsets for instructions)\\n#     Python 3.11a1 3460 (Add co_qualname field to PyCodeObject bpo-44530)\\n#     Python 3.11a1 3461 (JUMP_ABSOLUTE must jump backwards)\\n#     Python 3.11a2 3462 (bpo-44511: remove COPY_DICT_WITHOUT_KEYS, change\\n#                         MATCH_CLASS and MATCH_KEYS, and add COPY)\\n#     Python 3.11a3 3463 (bpo-45711: JUMP_IF_NOT_EXC_MATCH no longer pops the\\n#                         active exception)\\n#     Python 3.11a3 3464 (bpo-45636: Merge numeric BINARY_*/INPLACE_* into\\n#                         BINARY_OP)\\n#     Python 3.11a3 3465 (Add COPY_FREE_VARS opcode)\\n#     Python 3.11a4 3466 (bpo-45292: PEP-654 except*)\\n#     Python 3.11a4 3467 (Change CALL_xxx opcodes)\\n#     Python 3.11a4 3468 (Add SEND opcode)\\n#     Python 3.11a4 3469 (bpo-45711: remove type, traceback from exc_info)\\n#     Python 3.11a4 3470 (bpo-46221: PREP_RERAISE_STAR no longer pushes lasti)\\n#     Python 3.11a4 3471 (bpo-46202: remove pop POP_EXCEPT_AND_RERAISE)\\n#     Python 3.11a4 3472 (bpo-46009: replace GEN_START with POP_TOP)\\n#     Python 3.11a4 3473 (Add POP_JUMP_IF_NOT_NONE/POP_JUMP_IF_NONE opcodes)\\n#     Python 3.11a4 3474 (Add RESUME opcode)\\n#     Python 3.11a5 3475 (Add RETURN_GENERATOR opcode)\\n#     Python 3.11a5 3476 (Add ASYNC_GEN_WRAP opcode)\\n#     Python 3.11a5 3477 (Replace DUP_TOP/DUP_TOP_TWO with COPY and\\n#                         ROT_TWO/ROT_THREE/ROT_FOUR/ROT_N with SWAP)\\n#     Python 3.11a5 3478 (New CALL opcodes)\\n#     Python 3.11a5 3479 (Add PUSH_NULL opcode)\\n#     Python 3.11a5 3480 (New CALL opcodes, second iteration)\\n#     Python 3.11a5 3481 (Use inline cache for BINARY_OP)\\n#     Python 3.11a5 3482 (Use inline caching for UNPACK_SEQUENCE and LOAD_GLOBAL)\\n#     Python 3.11a5 3483 (Use inline caching for COMPARE_OP and BINARY_SUBSCR)\\n#     Python 3.11a5 3484 (Use inline caching for LOAD_ATTR, LOAD_METHOD, and\\n#                         STORE_ATTR)\\n#     Python 3.11a5 3485 (Add an oparg to GET_AWAITABLE)\\n#     Python 3.11a6 3486 (Use inline caching for PRECALL and CALL)\\n#     Python 3.11a6 3487 (Remove the adaptive \\\"oparg counter\\\" mechanism)\\n#     Python 3.11a6 3488 (LOAD_GLOBAL can push additional NULL)\\n#     Python 3.11a6 3489 (Add JUMP_BACKWARD, remove JUMP_ABSOLUTE)\\n#     Python 3.11a6 3490 (remove JUMP_IF_NOT_EXC_MATCH, add CHECK_EXC_MATCH)\\n#     Python 3.11a6 3491 (remove JUMP_IF_NOT_EG_MATCH, add CHECK_EG_MATCH,\\n#                         add JUMP_BACKWARD_NO_INTERRUPT, make JUMP_NO_INTERRUPT virtual)\\n#     Python 3.11a7 3492 (make POP_JUMP_IF_NONE/NOT_NONE/TRUE/FALSE relative)\\n#     Python 3.11a7 3493 (Make JUMP_IF_TRUE_OR_POP/JUMP_IF_FALSE_OR_POP relative)\\n#     Python 3.11a7 3494 (New location info table)\\n#     Python 3.11b4 3495 (Set line number of module's RESUME instr to 0 per PEP 626)\\n#     Python 3.12a1 3500 (Remove PRECALL opcode)\\n#     Python 3.12a1 3501 (YIELD_VALUE oparg == stack_depth)\\n#     Python 3.12a1 3502 (LOAD_FAST_CHECK, no NULL-check in LOAD_FAST)\\n#     Python 3.12a1 3503 (Shrink LOAD_METHOD cache)\\n#     Python 3.12a1 3504 (Merge LOAD_METHOD back into LOAD_ATTR)\\n#     Python 3.12a1 3505 (Specialization/Cache for FOR_ITER)\\n#     Python 3.12a1 3506 (Add BINARY_SLICE and STORE_SLICE instructions)\\n#     Python 3.12a1 3507 (Set lineno of module's RESUME to 0)\\n#     Python 3.12a1 3508 (Add CLEANUP_THROW)\\n#     Python 3.12a1 3509 (Conditional jumps only jump forward)\\n#     Python 3.12a2 3510 (FOR_ITER leaves iterator on the stack)\\n#     Python 3.12a2 3511 (Add STOPITERATION_ERROR instruction)\\n#     Python 3.12a2 3512 (Remove all unused consts from code objects)\\n#     Python 3.12a4 3513 (Add CALL_INTRINSIC_1 instruction, removed STOPITERATION_ERROR, PRINT_EXPR, IMPORT_STAR)\\n#     Python 3.12a4 3514 (Remove ASYNC_GEN_WRAP, LIST_TO_TUPLE, and UNARY_POSITIVE)\\n#     Python 3.12a5 3515 (Embed jump mask in COMPARE_OP oparg)\\n#     Python 3.12a5 3516 (Add COMPARE_AND_BRANCH instruction)\\n#     Python 3.12a5 3517 (Change YIELD_VALUE oparg to exception block depth)\\n#     Python 3.12a6 3518 (Add RETURN_CONST instruction)\\n#     Python 3.12a6 3519 (Modify SEND instruction)\\n#     Python 3.12a6 3520 (Remove PREP_RERAISE_STAR, add CALL_INTRINSIC_2)\\n#     Python 3.12a7 3521 (Shrink the LOAD_GLOBAL caches)\\n#     Python 3.12a7 3522 (Removed JUMP_IF_FALSE_OR_POP/JUMP_IF_TRUE_OR_POP)\\n#     Python 3.12a7 3523 (Convert COMPARE_AND_BRANCH back to COMPARE_OP)\\n#     Python 3.12a7 3524 (Shrink the BINARY_SUBSCR caches)\\n#     Python 3.12b1 3525 (Shrink the CALL caches)\\n#     Python 3.12b1 3526 (Add instrumentation support)\\n#     Python 3.12b1 3527 (Add LOAD_SUPER_ATTR)\\n#     Python 3.12b1 3528 (Add LOAD_SUPER_ATTR_METHOD specialization)\\n#     Python 3.12b1 3529 (Inline list/dict/set comprehensions)\\n#     Python 3.12b1 3530 (Shrink the LOAD_SUPER_ATTR caches)\\n#     Python 3.12b1 3531 (Add PEP 695 changes)\\n\\n#     Python 3.13 will start with 3550\\n\\n#     Please don't copy-paste the same pre-release tag for new entries above!!!\\n#     You should always use the *upcoming* tag. For example, if 3.12a6 came out\\n#     a week ago, I should put \\\"Python 3.12a7\\\" next to my new magic number.\\n\\n# MAGIC must change whenever the bytecode emitted by the compiler may no\\n# longer be understood by older implementations of the eval loop (usually\\n# due to the addition of new opcodes).\\n#\\n# Starting with Python 3.11, Python 3.n starts with magic number 2900+50n.\\n#\\n# Whenever MAGIC_NUMBER is changed, the ranges in the magic_values array\\n# in PC/launcher.c must also be updated.\\n\\nMAGIC_NUMBER = (3531).to_bytes(2, 'little') + b'\\\\r\\\\n'\\n\\n_RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little')  # For import.c\\n\\n_PYCACHE = '__pycache__'\\n_OPT = 'opt-'\\n\\nSOURCE_SUFFIXES = ['.py']\\nif _MS_WINDOWS:\\n    SOURCE_SUFFIXES.append('.pyw')\\n\\nEXTENSION_SUFFIXES = _imp.extension_suffixes()\\n\\nBYTECODE_SUFFIXES = ['.pyc']\\n# Deprecated.\\nDEBUG_BYTECODE_SUFFIXES = OPTIMIZED_BYTECODE_SUFFIXES = BYTECODE_SUFFIXES\\n\\ndef cache_from_source(path, debug_override=None, *, optimization=None):\\n    \\\"\\\"\\\"Given the path to a .py file, return the path to its .pyc file.\\n\\n    The .py file does not need to exist; this simply returns the path to the\\n    .pyc file calculated as if the .py file were imported.\\n\\n    The 'optimization' parameter controls the presumed optimization level of\\n    the bytecode file. If 'optimization' is not None, the string representation\\n    of the argument is taken and verified to be alphanumeric (else ValueError\\n    is raised).\\n\\n    The debug_override parameter is deprecated. If debug_override is not None,\\n    a True value is the same as setting 'optimization' to the empty string\\n    while a False value is equivalent to setting 'optimization' to '1'.\\n\\n    If sys.implementation.cache_tag is None then NotImplementedError is raised.\\n\\n    \\\"\\\"\\\"\\n    if debug_override is not None:\\n        _warnings.warn('the debug_override parameter is deprecated; use '\\n                       \\\"'optimization' instead\\\", DeprecationWarning)\\n        if optimization is not None:\\n            message = 'debug_override or optimization must be set to None'\\n            raise TypeError(message)\\n        optimization = '' if debug_override else 1\\n    path = _os.fspath(path)\\n    head, tail = _path_split(path)\\n    base, sep, rest = tail.rpartition('.')\\n    tag = sys.implementation.cache_tag\\n    if tag is None:\\n        raise NotImplementedError('sys.implementation.cache_tag is None')\\n    almost_filename = ''.join([(base if base else rest), sep, tag])\\n    if optimization is None:\\n        if sys.flags.optimize == 0:\\n            optimization = ''\\n        else:\\n            optimization = sys.flags.optimize\\n    optimization = str(optimization)\\n    if optimization != '':\\n        if not optimization.isalnum():\\n            raise ValueError(f'{optimization!r} is not alphanumeric')\\n        almost_filename = f'{almost_filename}.{_OPT}{optimization}'\\n    filename = almost_filename + BYTECODE_SUFFIXES[0]\\n    if sys.pycache_prefix is not None:\\n        # We need an absolute path to the py file to avoid the possibility of\\n        # collisions within sys.pycache_prefix, if someone has two different\\n        # `foo/bar.py` on their system and they import both of them using the\\n        # same sys.pycache_prefix. Let's say sys.pycache_prefix is\\n        # `C:\\\\Bytecode`; the idea here is that if we get `Foo\\\\Bar`, we first\\n        # make it absolute (`C:\\\\Somewhere\\\\Foo\\\\Bar`), then make it root-relative\\n        # (`Somewhere\\\\Foo\\\\Bar`), so we end up placing the bytecode file in an\\n        # unambiguous `C:\\\\Bytecode\\\\Somewhere\\\\Foo\\\\Bar\\\\`.\\n        head = _path_abspath(head)\\n\\n        # Strip initial drive from a Windows path. We know we have an absolute\\n        # path here, so the second part of the check rules out a POSIX path that\\n        # happens to contain a colon at the second character.\\n        if head[1] == ':' and head[0] not in path_separators:\\n            head = head[2:]\\n\\n        # Strip initial path separator from `head` to complete the conversion\\n        # back to a root-relative path before joining.\\n        return _path_join(\\n            sys.pycache_prefix,\\n            head.lstrip(path_separators),\\n            filename,\\n        )\\n    return _path_join(head, _PYCACHE, filename)\\n\\n\\ndef source_from_cache(path):\\n    \\\"\\\"\\\"Given the path to a .pyc. file, return the path to its .py file.\\n\\n    The .pyc file does not need to exist; this simply returns the path to\\n    the .py file calculated to correspond to the .pyc file.  If path does\\n    not conform to PEP 3147/488 format, ValueError will be raised. If\\n    sys.implementation.cache_tag is None then NotImplementedError is raised.\\n\\n    \\\"\\\"\\\"\\n    if sys.implementation.cache_tag is None:\\n        raise NotImplementedError('sys.implementation.cache_tag is None')\\n    path = _os.fspath(path)\\n    head, pycache_filename = _path_split(path)\\n    found_in_pycache_prefix = False\\n    if sys.pycache_prefix is not None:\\n        stripped_path = sys.pycache_prefix.rstrip(path_separators)\\n        if head.startswith(stripped_path + path_sep):\\n            head = head[len(stripped_path):]\\n            found_in_pycache_prefix = True\\n    if not found_in_pycache_prefix:\\n        head, pycache = _path_split(head)\\n        if pycache != _PYCACHE:\\n            raise ValueError(f'{_PYCACHE} not bottom-level directory in '\\n                             f'{path!r}')\\n    dot_count = pycache_filename.count('.')\\n    if dot_count not in {2, 3}:\\n        raise ValueError(f'expected only 2 or 3 dots in {pycache_filename!r}')\\n    elif dot_count == 3:\\n        optimization = pycache_filename.rsplit('.', 2)[-2]\\n        if not optimization.startswith(_OPT):\\n            raise ValueError(\\\"optimization portion of filename does not start \\\"\\n                             f\\\"with {_OPT!r}\\\")\\n        opt_level = optimization[len(_OPT):]\\n        if not opt_level.isalnum():\\n            raise ValueError(f\\\"optimization level {optimization!r} is not an \\\"\\n                             \\\"alphanumeric value\\\")\\n    base_filename = pycache_filename.partition('.')[0]\\n    return _path_join(head, base_filename + SOURCE_SUFFIXES[0])\\n\\n\\ndef _get_sourcefile(bytecode_path):\\n    \\\"\\\"\\\"Convert a bytecode file path to a source path (if possible).\\n\\n    This function exists purely for backwards-compatibility for\\n    PyImport_ExecCodeModuleWithFilenames() in the C API.\\n\\n    \\\"\\\"\\\"\\n    if len(bytecode_path) == 0:\\n        return None\\n    rest, _, extension = bytecode_path.rpartition('.')\\n    if not rest or extension.lower()[-3:-1] != 'py':\\n        return bytecode_path\\n    try:\\n        source_path = source_from_cache(bytecode_path)\\n    except (NotImplementedError, ValueError):\\n        source_path = bytecode_path[:-1]\\n    return source_path if _path_isfile(source_path) else bytecode_path\\n\\n\\ndef _get_cached(filename):\\n    if filename.endswith(tuple(SOURCE_SUFFIXES)):\\n        try:\\n            return cache_from_source(filename)\\n        except NotImplementedError:\\n            pass\\n    elif filename.endswith(tuple(BYTECODE_SUFFIXES)):\\n        return filename\\n    else:\\n        return None\\n\\n\\ndef _calc_mode(path):\\n    \\\"\\\"\\\"Calculate the mode permissions for a bytecode file.\\\"\\\"\\\"\\n    try:\\n        mode = _path_stat(path).st_mode\\n    except OSError:\\n        mode = 0o666\\n    # We always ensure write access so we can update cached files\\n    # later even when the source files are read-only on Windows (#6074)\\n    mode |= 0o200\\n    return mode\\n\\n\\ndef _check_name(method):\\n    \\\"\\\"\\\"Decorator to verify that the module being requested matches the one the\\n    loader can handle.\\n\\n    The first argument (self) must define _name which the second argument is\\n    compared against. If the comparison fails then ImportError is raised.\\n\\n    \\\"\\\"\\\"\\n    def _check_name_wrapper(self, name=None, *args, **kwargs):\\n        if name is None:\\n            name = self.name\\n        elif self.name != name:\\n            raise ImportError('loader for %s cannot handle %s' %\\n                                (self.name, name), name=name)\\n        return method(self, name, *args, **kwargs)\\n\\n    # FIXME: @_check_name is used to define class methods before the\\n    # _bootstrap module is set by _set_bootstrap_module().\\n    if _bootstrap is not None:\\n        _wrap = _bootstrap._wrap\\n    else:\\n        def _wrap(new, old):\\n            for replace in ['__module__', '__name__', '__qualname__', '__doc__']:\\n                if hasattr(old, replace):\\n                    setattr(new, replace, getattr(old, replace))\\n            new.__dict__.update(old.__dict__)\\n\\n    _wrap(_check_name_wrapper, method)\\n    return _check_name_wrapper\\n\\n\\ndef _classify_pyc(data, name, exc_details):\\n    \\\"\\\"\\\"Perform basic validity checking of a pyc header and return the flags field,\\n    which determines how the pyc should be further validated against the source.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required, though.)\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    ImportError is raised when the magic number is incorrect or when the flags\\n    field is invalid. EOFError is raised when the data is found to be truncated.\\n\\n    \\\"\\\"\\\"\\n    magic = data[:4]\\n    if magic != MAGIC_NUMBER:\\n        message = f'bad magic number in {name!r}: {magic!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise ImportError(message, **exc_details)\\n    if len(data) < 16:\\n        message = f'reached EOF while reading pyc header of {name!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise EOFError(message)\\n    flags = _unpack_uint32(data[4:8])\\n    # Only the first two flags are defined.\\n    if flags & ~0b11:\\n        message = f'invalid flags {flags!r} in {name!r}'\\n        raise ImportError(message, **exc_details)\\n    return flags\\n\\n\\ndef _validate_timestamp_pyc(data, source_mtime, source_size, name,\\n                            exc_details):\\n    \\\"\\\"\\\"Validate a pyc against the source last-modified time.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required.)\\n\\n    *source_mtime* is the last modified timestamp of the source file.\\n\\n    *source_size* is None or the size of the source file in bytes.\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    An ImportError is raised if the bytecode is stale.\\n\\n    \\\"\\\"\\\"\\n    if _unpack_uint32(data[8:12]) != (source_mtime & 0xFFFFFFFF):\\n        message = f'bytecode is stale for {name!r}'\\n        _bootstrap._verbose_message('{}', message)\\n        raise ImportError(message, **exc_details)\\n    if (source_size is not None and\\n        _unpack_uint32(data[12:16]) != (source_size & 0xFFFFFFFF)):\\n        raise ImportError(f'bytecode is stale for {name!r}', **exc_details)\\n\\n\\ndef _validate_hash_pyc(data, source_hash, name, exc_details):\\n    \\\"\\\"\\\"Validate a hash-based pyc by checking the real source hash against the one in\\n    the pyc header.\\n\\n    *data* is the contents of the pyc file. (Only the first 16 bytes are\\n    required.)\\n\\n    *source_hash* is the importlib.util.source_hash() of the source file.\\n\\n    *name* is the name of the module being imported. It is used for logging.\\n\\n    *exc_details* is a dictionary passed to ImportError if it raised for\\n    improved debugging.\\n\\n    An ImportError is raised if the bytecode is stale.\\n\\n    \\\"\\\"\\\"\\n    if data[8:16] != source_hash:\\n        raise ImportError(\\n            f'hash in bytecode doesn\\\\'t match hash of source {name!r}',\\n            **exc_details,\\n        )\\n\\n\\ndef _compile_bytecode(data, name=None, bytecode_path=None, source_path=None):\\n    \\\"\\\"\\\"Compile bytecode as found in a pyc.\\\"\\\"\\\"\\n    code = marshal.loads(data)\\n    if isinstance(code, _code_type):\\n        _bootstrap._verbose_message('code object from {!r}', bytecode_path)\\n        if source_path is not None:\\n            _imp._fix_co_filename(code, source_path)\\n        return code\\n    else:\\n        raise ImportError(f'Non-code object in {bytecode_path!r}',\\n                          name=name, path=bytecode_path)\\n\\n\\ndef _code_to_timestamp_pyc(code, mtime=0, source_size=0):\\n    \\\"Produce the data for a timestamp-based pyc.\\\"\\n    data = bytearray(MAGIC_NUMBER)\\n    data.extend(_pack_uint32(0))\\n    data.extend(_pack_uint32(mtime))\\n    data.extend(_pack_uint32(source_size))\\n    data.extend(marshal.dumps(code))\\n    return data\\n\\n\\ndef _code_to_hash_pyc(code, source_hash, checked=True):\\n    \\\"Produce the data for a hash-based pyc.\\\"\\n    data = bytearray(MAGIC_NUMBER)\\n    flags = 0b1 | checked << 1\\n    data.extend(_pack_uint32(flags))\\n    assert len(source_hash) == 8\\n    data.extend(source_hash)\\n    data.extend(marshal.dumps(code))\\n    return data\\n\\n\\ndef decode_source(source_bytes):\\n    \\\"\\\"\\\"Decode bytes representing source code and return the string.\\n\\n    Universal newline support is used in the decoding.\\n    \\\"\\\"\\\"\\n    import tokenize  # To avoid bootstrap issues.\\n    source_bytes_readline = _io.BytesIO(source_bytes).readline\\n    encoding = tokenize.detect_encoding(source_bytes_readline)\\n    newline_decoder = _io.IncrementalNewlineDecoder(None, True)\\n    return newline_decoder.decode(source_bytes.decode(encoding[0]))\\n\\n\\n# Module specifications #######################################################\\n\\n_POPULATE = object()\\n\\n\\ndef spec_from_file_location(name, location=None, *, loader=None,\\n                            submodule_search_locations=_POPULATE):\\n    \\\"\\\"\\\"Return a module spec based on a file location.\\n\\n    To indicate that the module is a package, set\\n    submodule_search_locations to a list of directory paths.  An\\n    empty list is sufficient, though its not otherwise useful to the\\n    import system.\\n\\n    The loader must take a spec as its only __init__() arg.\\n\\n    \\\"\\\"\\\"\\n    if location is None:\\n        # The caller may simply want a partially populated location-\\n        # oriented spec.  So we set the location to a bogus value and\\n        # fill in as much as we can.\\n        location = '<unknown>'\\n        if hasattr(loader, 'get_filename'):\\n            # ExecutionLoader\\n            try:\\n                location = loader.get_filename(name)\\n            except ImportError:\\n                pass\\n    else:\\n        location = _os.fspath(location)\\n        try:\\n            location = _path_abspath(location)\\n        except OSError:\\n            pass\\n\\n    # If the location is on the filesystem, but doesn't actually exist,\\n    # we could return None here, indicating that the location is not\\n    # valid.  However, we don't have a good way of testing since an\\n    # indirect location (e.g. a zip file or URL) will look like a\\n    # non-existent file relative to the filesystem.\\n\\n    spec = _bootstrap.ModuleSpec(name, loader, origin=location)\\n    spec._set_fileattr = True\\n\\n    # Pick a loader if one wasn't provided.\\n    if loader is None:\\n        for loader_class, suffixes in _get_supported_file_loaders():\\n            if location.endswith(tuple(suffixes)):\\n                loader = loader_class(name, location)\\n                spec.loader = loader\\n                break\\n        else:\\n            return None\\n\\n    # Set submodule_search_paths appropriately.\\n    if submodule_search_locations is _POPULATE:\\n        # Check the loader.\\n        if hasattr(loader, 'is_package'):\\n            try:\\n                is_package = loader.is_package(name)\\n            except ImportError:\\n                pass\\n            else:\\n                if is_package:\\n                    spec.submodule_search_locations = []\\n    else:\\n        spec.submodule_search_locations = submodule_search_locations\\n    if spec.submodule_search_locations == []:\\n        if location:\\n            dirname = _path_split(location)[0]\\n            spec.submodule_search_locations.append(dirname)\\n\\n    return spec\\n\\n\\ndef _bless_my_loader(module_globals):\\n    \\\"\\\"\\\"Helper function for _warnings.c\\n\\n    See GH#97850 for details.\\n    \\\"\\\"\\\"\\n    # 2022-10-06(warsaw): For now, this helper is only used in _warnings.c and\\n    # that use case only has the module globals.  This function could be\\n    # extended to accept either that or a module object.  However, in the\\n    # latter case, it would be better to raise certain exceptions when looking\\n    # at a module, which should have either a __loader__ or __spec__.loader.\\n    # For backward compatibility, it is possible that we'll get an empty\\n    # dictionary for the module globals, and that cannot raise an exception.\\n    if not isinstance(module_globals, dict):\\n        return None\\n\\n    missing = object()\\n    loader = module_globals.get('__loader__', None)\\n    spec = module_globals.get('__spec__', missing)\\n\\n    if loader is None:\\n        if spec is missing:\\n            # If working with a module:\\n            # raise AttributeError('Module globals is missing a __spec__')\\n            return None\\n        elif spec is None:\\n            raise ValueError('Module globals is missing a __spec__.loader')\\n\\n    spec_loader = getattr(spec, 'loader', missing)\\n\\n    if spec_loader in (missing, None):\\n        if loader is None:\\n            exc = AttributeError if spec_loader is missing else ValueError\\n            raise exc('Module globals is missing a __spec__.loader')\\n        _warnings.warn(\\n            'Module globals is missing a __spec__.loader',\\n            DeprecationWarning)\\n        spec_loader = loader\\n\\n    assert spec_loader is not None\\n    if loader is not None and loader != spec_loader:\\n        _warnings.warn(\\n            'Module globals; __loader__ != __spec__.loader',\\n            DeprecationWarning)\\n        return loader\\n\\n    return spec_loader\\n\\n\\n# Loaders #####################################################################\\n\\nclass WindowsRegistryFinder:\\n\\n    \\\"\\\"\\\"Meta path finder for modules declared in the Windows registry.\\\"\\\"\\\"\\n\\n    REGISTRY_KEY = (\\n        'Software\\\\\\\\Python\\\\\\\\PythonCore\\\\\\\\{sys_version}'\\n        '\\\\\\\\Modules\\\\\\\\{fullname}')\\n    REGISTRY_KEY_DEBUG = (\\n        'Software\\\\\\\\Python\\\\\\\\PythonCore\\\\\\\\{sys_version}'\\n        '\\\\\\\\Modules\\\\\\\\{fullname}\\\\\\\\Debug')\\n    DEBUG_BUILD = (_MS_WINDOWS and '_d.pyd' in EXTENSION_SUFFIXES)\\n\\n    @staticmethod\\n    def _open_registry(key):\\n        try:\\n            return winreg.OpenKey(winreg.HKEY_CURRENT_USER, key)\\n        except OSError:\\n            return winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key)\\n\\n    @classmethod\\n    def _search_registry(cls, fullname):\\n        if cls.DEBUG_BUILD:\\n            registry_key = cls.REGISTRY_KEY_DEBUG\\n        else:\\n            registry_key = cls.REGISTRY_KEY\\n        key = registry_key.format(fullname=fullname,\\n                                  sys_version='%d.%d' % sys.version_info[:2])\\n        try:\\n            with cls._open_registry(key) as hkey:\\n                filepath = winreg.QueryValue(hkey, '')\\n        except OSError:\\n            return None\\n        return filepath\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        filepath = cls._search_registry(fullname)\\n        if filepath is None:\\n            return None\\n        try:\\n            _path_stat(filepath)\\n        except OSError:\\n            return None\\n        for loader, suffixes in _get_supported_file_loaders():\\n            if filepath.endswith(tuple(suffixes)):\\n                spec = _bootstrap.spec_from_loader(fullname,\\n                                                   loader(fullname, filepath),\\n                                                   origin=filepath)\\n                return spec\\n\\n\\nclass _LoaderBasics:\\n\\n    \\\"\\\"\\\"Base class of common code needed by both SourceLoader and\\n    SourcelessFileLoader.\\\"\\\"\\\"\\n\\n    def is_package(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.is_package by checking if\\n        the path returned by get_filename has a filename of '__init__.py'.\\\"\\\"\\\"\\n        filename = _path_split(self.get_filename(fullname))[1]\\n        filename_base = filename.rsplit('.', 1)[0]\\n        tail_name = fullname.rpartition('.')[2]\\n        return filename_base == '__init__' and tail_name != '__init__'\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Use default semantics for module creation.\\\"\\\"\\\"\\n\\n    def exec_module(self, module):\\n        \\\"\\\"\\\"Execute the module.\\\"\\\"\\\"\\n        code = self.get_code(module.__name__)\\n        if code is None:\\n            raise ImportError(f'cannot load module {module.__name__!r} when '\\n                              'get_code() returns None')\\n        _bootstrap._call_with_frames_removed(exec, code, module.__dict__)\\n\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"This method is deprecated.\\\"\\\"\\\"\\n        # Warning implemented in _load_module_shim().\\n        return _bootstrap._load_module_shim(self, fullname)\\n\\n\\nclass SourceLoader(_LoaderBasics):\\n\\n    def path_mtime(self, path):\\n        \\\"\\\"\\\"Optional method that returns the modification time (an int) for the\\n        specified path (a str).\\n\\n        Raises OSError when the path cannot be handled.\\n        \\\"\\\"\\\"\\n        raise OSError\\n\\n    def path_stats(self, path):\\n        \\\"\\\"\\\"Optional method returning a metadata dict for the specified\\n        path (a str).\\n\\n        Possible keys:\\n        - 'mtime' (mandatory) is the numeric timestamp of last source\\n          code modification;\\n        - 'size' (optional) is the size in bytes of the source code.\\n\\n        Implementing this method allows the loader to read bytecode files.\\n        Raises OSError when the path cannot be handled.\\n        \\\"\\\"\\\"\\n        return {'mtime': self.path_mtime(path)}\\n\\n    def _cache_bytecode(self, source_path, cache_path, data):\\n        \\\"\\\"\\\"Optional method which writes data (bytes) to a file path (a str).\\n\\n        Implementing this method allows for the writing of bytecode files.\\n\\n        The source path is needed in order to correctly transfer permissions\\n        \\\"\\\"\\\"\\n        # For backwards compatibility, we delegate to set_data()\\n        return self.set_data(cache_path, data)\\n\\n    def set_data(self, path, data):\\n        \\\"\\\"\\\"Optional method which writes data (bytes) to a file path (a str).\\n\\n        Implementing this method allows for the writing of bytecode files.\\n        \\\"\\\"\\\"\\n\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.get_source.\\\"\\\"\\\"\\n        path = self.get_filename(fullname)\\n        try:\\n            source_bytes = self.get_data(path)\\n        except OSError as exc:\\n            raise ImportError('source not available through get_data()',\\n                              name=fullname) from exc\\n        return decode_source(source_bytes)\\n\\n    def source_to_code(self, data, path, *, _optimize=-1):\\n        \\\"\\\"\\\"Return the code object compiled from source.\\n\\n        The 'data' argument can be any object type that compile() supports.\\n        \\\"\\\"\\\"\\n        return _bootstrap._call_with_frames_removed(compile, data, path, 'exec',\\n                                        dont_inherit=True, optimize=_optimize)\\n\\n    def get_code(self, fullname):\\n        \\\"\\\"\\\"Concrete implementation of InspectLoader.get_code.\\n\\n        Reading of bytecode requires path_stats to be implemented. To write\\n        bytecode, set_data must also be implemented.\\n\\n        \\\"\\\"\\\"\\n        source_path = self.get_filename(fullname)\\n        source_mtime = None\\n        source_bytes = None\\n        source_hash = None\\n        hash_based = False\\n        check_source = True\\n        try:\\n            bytecode_path = cache_from_source(source_path)\\n        except NotImplementedError:\\n            bytecode_path = None\\n        else:\\n            try:\\n                st = self.path_stats(source_path)\\n            except OSError:\\n                pass\\n            else:\\n                source_mtime = int(st['mtime'])\\n                try:\\n                    data = self.get_data(bytecode_path)\\n                except OSError:\\n                    pass\\n                else:\\n                    exc_details = {\\n                        'name': fullname,\\n                        'path': bytecode_path,\\n                    }\\n                    try:\\n                        flags = _classify_pyc(data, fullname, exc_details)\\n                        bytes_data = memoryview(data)[16:]\\n                        hash_based = flags & 0b1 != 0\\n                        if hash_based:\\n                            check_source = flags & 0b10 != 0\\n                            if (_imp.check_hash_based_pycs != 'never' and\\n                                (check_source or\\n                                 _imp.check_hash_based_pycs == 'always')):\\n                                source_bytes = self.get_data(source_path)\\n                                source_hash = _imp.source_hash(\\n                                    _RAW_MAGIC_NUMBER,\\n                                    source_bytes,\\n                                )\\n                                _validate_hash_pyc(data, source_hash, fullname,\\n                                                   exc_details)\\n                        else:\\n                            _validate_timestamp_pyc(\\n                                data,\\n                                source_mtime,\\n                                st['size'],\\n                                fullname,\\n                                exc_details,\\n                            )\\n                    except (ImportError, EOFError):\\n                        pass\\n                    else:\\n                        _bootstrap._verbose_message('{} matches {}', bytecode_path,\\n                                                    source_path)\\n                        return _compile_bytecode(bytes_data, name=fullname,\\n                                                 bytecode_path=bytecode_path,\\n                                                 source_path=source_path)\\n        if source_bytes is None:\\n            source_bytes = self.get_data(source_path)\\n        code_object = self.source_to_code(source_bytes, source_path)\\n        _bootstrap._verbose_message('code object from {}', source_path)\\n        if (not sys.dont_write_bytecode and bytecode_path is not None and\\n                source_mtime is not None):\\n            if hash_based:\\n                if source_hash is None:\\n                    source_hash = _imp.source_hash(_RAW_MAGIC_NUMBER,\\n                                                   source_bytes)\\n                data = _code_to_hash_pyc(code_object, source_hash, check_source)\\n            else:\\n                data = _code_to_timestamp_pyc(code_object, source_mtime,\\n                                              len(source_bytes))\\n            try:\\n                self._cache_bytecode(source_path, bytecode_path, data)\\n            except NotImplementedError:\\n                pass\\n        return code_object\\n\\n\\nclass FileLoader:\\n\\n    \\\"\\\"\\\"Base file loader class which implements the loader protocol methods that\\n    require file system usage.\\\"\\\"\\\"\\n\\n    def __init__(self, fullname, path):\\n        \\\"\\\"\\\"Cache the module name and the path to the file found by the\\n        finder.\\\"\\\"\\\"\\n        self.name = fullname\\n        self.path = path\\n\\n    def __eq__(self, other):\\n        return (self.__class__ == other.__class__ and\\n                self.__dict__ == other.__dict__)\\n\\n    def __hash__(self):\\n        return hash(self.name) ^ hash(self.path)\\n\\n    @_check_name\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"Load a module from a file.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # The only reason for this method is for the name check.\\n        # Issue #14857: Avoid the zero-argument form of super so the implementation\\n        # of that form can be updated without breaking the frozen module.\\n        return super(FileLoader, self).load_module(fullname)\\n\\n    @_check_name\\n    def get_filename(self, fullname):\\n        \\\"\\\"\\\"Return the path to the source file as found by the finder.\\\"\\\"\\\"\\n        return self.path\\n\\n    def get_data(self, path):\\n        \\\"\\\"\\\"Return the data from path as raw bytes.\\\"\\\"\\\"\\n        if isinstance(self, (SourceLoader, ExtensionFileLoader)):\\n            with _io.open_code(str(path)) as file:\\n                return file.read()\\n        else:\\n            with _io.FileIO(path, 'r') as file:\\n                return file.read()\\n\\n    @_check_name\\n    def get_resource_reader(self, module):\\n        from importlib.readers import FileReader\\n        return FileReader(self)\\n\\n\\nclass SourceFileLoader(FileLoader, SourceLoader):\\n\\n    \\\"\\\"\\\"Concrete implementation of SourceLoader using the file system.\\\"\\\"\\\"\\n\\n    def path_stats(self, path):\\n        \\\"\\\"\\\"Return the metadata for the path.\\\"\\\"\\\"\\n        st = _path_stat(path)\\n        return {'mtime': st.st_mtime, 'size': st.st_size}\\n\\n    def _cache_bytecode(self, source_path, bytecode_path, data):\\n        # Adapt between the two APIs\\n        mode = _calc_mode(source_path)\\n        return self.set_data(bytecode_path, data, _mode=mode)\\n\\n    def set_data(self, path, data, *, _mode=0o666):\\n        \\\"\\\"\\\"Write bytes data to a file.\\\"\\\"\\\"\\n        parent, filename = _path_split(path)\\n        path_parts = []\\n        # Figure out what directories are missing.\\n        while parent and not _path_isdir(parent):\\n            parent, part = _path_split(parent)\\n            path_parts.append(part)\\n        # Create needed directories.\\n        for part in reversed(path_parts):\\n            parent = _path_join(parent, part)\\n            try:\\n                _os.mkdir(parent)\\n            except FileExistsError:\\n                # Probably another Python process already created the dir.\\n                continue\\n            except OSError as exc:\\n                # Could be a permission error, read-only filesystem: just forget\\n                # about writing the data.\\n                _bootstrap._verbose_message('could not create {!r}: {!r}',\\n                                            parent, exc)\\n                return\\n        try:\\n            _write_atomic(path, data, _mode)\\n            _bootstrap._verbose_message('created {!r}', path)\\n        except OSError as exc:\\n            # Same as above: just don't write the bytecode.\\n            _bootstrap._verbose_message('could not create {!r}: {!r}', path,\\n                                        exc)\\n\\n\\nclass SourcelessFileLoader(FileLoader, _LoaderBasics):\\n\\n    \\\"\\\"\\\"Loader which handles sourceless file imports.\\\"\\\"\\\"\\n\\n    def get_code(self, fullname):\\n        path = self.get_filename(fullname)\\n        data = self.get_data(path)\\n        # Call _classify_pyc to do basic validation of the pyc but ignore the\\n        # result. There's no source to check against.\\n        exc_details = {\\n            'name': fullname,\\n            'path': path,\\n        }\\n        _classify_pyc(data, fullname, exc_details)\\n        return _compile_bytecode(\\n            memoryview(data)[16:],\\n            name=fullname,\\n            bytecode_path=path,\\n        )\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Return None as there is no source code.\\\"\\\"\\\"\\n        return None\\n\\n\\nclass ExtensionFileLoader(FileLoader, _LoaderBasics):\\n\\n    \\\"\\\"\\\"Loader for extension modules.\\n\\n    The constructor is designed to work with FileFinder.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, name, path):\\n        self.name = name\\n        self.path = path\\n\\n    def __eq__(self, other):\\n        return (self.__class__ == other.__class__ and\\n                self.__dict__ == other.__dict__)\\n\\n    def __hash__(self):\\n        return hash(self.name) ^ hash(self.path)\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Create an uninitialized extension module\\\"\\\"\\\"\\n        module = _bootstrap._call_with_frames_removed(\\n            _imp.create_dynamic, spec)\\n        _bootstrap._verbose_message('extension module {!r} loaded from {!r}',\\n                         spec.name, self.path)\\n        return module\\n\\n    def exec_module(self, module):\\n        \\\"\\\"\\\"Initialize an extension module\\\"\\\"\\\"\\n        _bootstrap._call_with_frames_removed(_imp.exec_dynamic, module)\\n        _bootstrap._verbose_message('extension module {!r} executed from {!r}',\\n                         self.name, self.path)\\n\\n    def is_package(self, fullname):\\n        \\\"\\\"\\\"Return True if the extension module is a package.\\\"\\\"\\\"\\n        file_name = _path_split(self.path)[1]\\n        return any(file_name == '__init__' + suffix\\n                   for suffix in EXTENSION_SUFFIXES)\\n\\n    def get_code(self, fullname):\\n        \\\"\\\"\\\"Return None as an extension module cannot create a code object.\\\"\\\"\\\"\\n        return None\\n\\n    def get_source(self, fullname):\\n        \\\"\\\"\\\"Return None as extension modules have no source code.\\\"\\\"\\\"\\n        return None\\n\\n    @_check_name\\n    def get_filename(self, fullname):\\n        \\\"\\\"\\\"Return the path to the source file as found by the finder.\\\"\\\"\\\"\\n        return self.path\\n\\n\\nclass _NamespacePath:\\n    \\\"\\\"\\\"Represents a namespace package's path.  It uses the module name\\n    to find its parent module, and from there it looks up the parent's\\n    __path__.  When this changes, the module's own path is recomputed,\\n    using path_finder.  For top-level modules, the parent module's path\\n    is sys.path.\\\"\\\"\\\"\\n\\n    # When invalidate_caches() is called, this epoch is incremented\\n    # https://bugs.python.org/issue45703\\n    _epoch = 0\\n\\n    def __init__(self, name, path, path_finder):\\n        self._name = name\\n        self._path = path\\n        self._last_parent_path = tuple(self._get_parent_path())\\n        self._last_epoch = self._epoch\\n        self._path_finder = path_finder\\n\\n    def _find_parent_path_names(self):\\n        \\\"\\\"\\\"Returns a tuple of (parent-module-name, parent-path-attr-name)\\\"\\\"\\\"\\n        parent, dot, me = self._name.rpartition('.')\\n        if dot == '':\\n            # This is a top-level module. sys.path contains the parent path.\\n            return 'sys', 'path'\\n        # Not a top-level module. parent-module.__path__ contains the\\n        #  parent path.\\n        return parent, '__path__'\\n\\n    def _get_parent_path(self):\\n        parent_module_name, path_attr_name = self._find_parent_path_names()\\n        return getattr(sys.modules[parent_module_name], path_attr_name)\\n\\n    def _recalculate(self):\\n        # If the parent's path has changed, recalculate _path\\n        parent_path = tuple(self._get_parent_path()) # Make a copy\\n        if parent_path != self._last_parent_path or self._epoch != self._last_epoch:\\n            spec = self._path_finder(self._name, parent_path)\\n            # Note that no changes are made if a loader is returned, but we\\n            #  do remember the new parent path\\n            if spec is not None and spec.loader is None:\\n                if spec.submodule_search_locations:\\n                    self._path = spec.submodule_search_locations\\n            self._last_parent_path = parent_path     # Save the copy\\n            self._last_epoch = self._epoch\\n        return self._path\\n\\n    def __iter__(self):\\n        return iter(self._recalculate())\\n\\n    def __getitem__(self, index):\\n        return self._recalculate()[index]\\n\\n    def __setitem__(self, index, path):\\n        self._path[index] = path\\n\\n    def __len__(self):\\n        return len(self._recalculate())\\n\\n    def __repr__(self):\\n        return f'_NamespacePath({self._path!r})'\\n\\n    def __contains__(self, item):\\n        return item in self._recalculate()\\n\\n    def append(self, item):\\n        self._path.append(item)\\n\\n\\n# This class is actually exposed publicly in a namespace package's __loader__\\n# attribute, so it should be available through a non-private name.\\n# https://github.com/python/cpython/issues/92054\\nclass NamespaceLoader:\\n    def __init__(self, name, path, path_finder):\\n        self._path = _NamespacePath(name, path, path_finder)\\n\\n    def is_package(self, fullname):\\n        return True\\n\\n    def get_source(self, fullname):\\n        return ''\\n\\n    def get_code(self, fullname):\\n        return compile('', '<string>', 'exec', dont_inherit=True)\\n\\n    def create_module(self, spec):\\n        \\\"\\\"\\\"Use default semantics for module creation.\\\"\\\"\\\"\\n\\n    def exec_module(self, module):\\n        pass\\n\\n    def load_module(self, fullname):\\n        \\\"\\\"\\\"Load a namespace module.\\n\\n        This method is deprecated.  Use exec_module() instead.\\n\\n        \\\"\\\"\\\"\\n        # The import system never calls this method.\\n        _bootstrap._verbose_message('namespace module loaded with path {!r}',\\n                                    self._path)\\n        # Warning implemented in _load_module_shim().\\n        return _bootstrap._load_module_shim(self, fullname)\\n\\n    def get_resource_reader(self, module):\\n        from importlib.readers import NamespaceReader\\n        return NamespaceReader(self._path)\\n\\n\\n# We use this exclusively in module_from_spec() for backward-compatibility.\\n_NamespaceLoader = NamespaceLoader\\n\\n\\n# Finders #####################################################################\\n\\nclass PathFinder:\\n\\n    \\\"\\\"\\\"Meta path finder for sys.path and package __path__ attributes.\\\"\\\"\\\"\\n\\n    @staticmethod\\n    def invalidate_caches():\\n        \\\"\\\"\\\"Call the invalidate_caches() method on all path entry finders\\n        stored in sys.path_importer_caches (where implemented).\\\"\\\"\\\"\\n        for name, finder in list(sys.path_importer_cache.items()):\\n            # Drop entry if finder name is a relative path. The current\\n            # working directory may have changed.\\n            if finder is None or not _path_isabs(name):\\n                del sys.path_importer_cache[name]\\n            elif hasattr(finder, 'invalidate_caches'):\\n                finder.invalidate_caches()\\n        # Also invalidate the caches of _NamespacePaths\\n        # https://bugs.python.org/issue45703\\n        _NamespacePath._epoch += 1\\n\\n        from importlib.metadata import MetadataPathFinder\\n        MetadataPathFinder.invalidate_caches()\\n\\n    @staticmethod\\n    def _path_hooks(path):\\n        \\\"\\\"\\\"Search sys.path_hooks for a finder for 'path'.\\\"\\\"\\\"\\n        if sys.path_hooks is not None and not sys.path_hooks:\\n            _warnings.warn('sys.path_hooks is empty', ImportWarning)\\n        for hook in sys.path_hooks:\\n            try:\\n                return hook(path)\\n            except ImportError:\\n                continue\\n        else:\\n            return None\\n\\n    @classmethod\\n    def _path_importer_cache(cls, path):\\n        \\\"\\\"\\\"Get the finder for the path entry from sys.path_importer_cache.\\n\\n        If the path entry is not in the cache, find the appropriate finder\\n        and cache it. If no finder is available, store None.\\n\\n        \\\"\\\"\\\"\\n        if path == '':\\n            try:\\n                path = _os.getcwd()\\n            except FileNotFoundError:\\n                # Don't cache the failure as the cwd can easily change to\\n                # a valid directory later on.\\n                return None\\n        try:\\n            finder = sys.path_importer_cache[path]\\n        except KeyError:\\n            finder = cls._path_hooks(path)\\n            sys.path_importer_cache[path] = finder\\n        return finder\\n\\n    @classmethod\\n    def _get_spec(cls, fullname, path, target=None):\\n        \\\"\\\"\\\"Find the loader or namespace_path for this module/package name.\\\"\\\"\\\"\\n        # If this ends up being a namespace package, namespace_path is\\n        #  the list of paths that will become its __path__\\n        namespace_path = []\\n        for entry in path:\\n            if not isinstance(entry, str):\\n                continue\\n            finder = cls._path_importer_cache(entry)\\n            if finder is not None:\\n                spec = finder.find_spec(fullname, target)\\n                if spec is None:\\n                    continue\\n                if spec.loader is not None:\\n                    return spec\\n                portions = spec.submodule_search_locations\\n                if portions is None:\\n                    raise ImportError('spec missing loader')\\n                # This is possibly part of a namespace package.\\n                #  Remember these path entries (if any) for when we\\n                #  create a namespace package, and continue iterating\\n                #  on path.\\n                namespace_path.extend(portions)\\n        else:\\n            spec = _bootstrap.ModuleSpec(fullname, None)\\n            spec.submodule_search_locations = namespace_path\\n            return spec\\n\\n    @classmethod\\n    def find_spec(cls, fullname, path=None, target=None):\\n        \\\"\\\"\\\"Try to find a spec for 'fullname' on sys.path or 'path'.\\n\\n        The search is based on sys.path_hooks and sys.path_importer_cache.\\n        \\\"\\\"\\\"\\n        if path is None:\\n            path = sys.path\\n        spec = cls._get_spec(fullname, path, target)\\n        if spec is None:\\n            return None\\n        elif spec.loader is None:\\n            namespace_path = spec.submodule_search_locations\\n            if namespace_path:\\n                # We found at least one namespace path.  Return a spec which\\n                # can create the namespace package.\\n                spec.origin = None\\n                spec.submodule_search_locations = _NamespacePath(fullname, namespace_path, cls._get_spec)\\n                return spec\\n            else:\\n                return None\\n        else:\\n            return spec\\n\\n    @staticmethod\\n    def find_distributions(*args, **kwargs):\\n        \\\"\\\"\\\"\\n        Find distributions.\\n\\n        Return an iterable of all Distribution instances capable of\\n        loading the metadata for packages matching ``context.name``\\n        (or all names if ``None`` indicated) along the paths in the list\\n        of directories ``context.path``.\\n        \\\"\\\"\\\"\\n        from importlib.metadata import MetadataPathFinder\\n        return MetadataPathFinder.find_distributions(*args, **kwargs)\\n\\n\\nclass FileFinder:\\n\\n    \\\"\\\"\\\"File-based finder.\\n\\n    Interactions with the file system are cached for performance, being\\n    refreshed when the directory the finder is handling has been modified.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, path, *loader_details):\\n        \\\"\\\"\\\"Initialize with the path to search on and a variable number of\\n        2-tuples containing the loader and the file suffixes the loader\\n        recognizes.\\\"\\\"\\\"\\n        loaders = []\\n        for loader, suffixes in loader_details:\\n            loaders.extend((suffix, loader) for suffix in suffixes)\\n        self._loaders = loaders\\n        # Base (directory) path\\n        if not path or path == '.':\\n            self.path = _os.getcwd()\\n        else:\\n            self.path = _path_abspath(path)\\n        self._path_mtime = -1\\n        self._path_cache = set()\\n        self._relaxed_path_cache = set()\\n\\n    def invalidate_caches(self):\\n        \\\"\\\"\\\"Invalidate the directory mtime.\\\"\\\"\\\"\\n        self._path_mtime = -1\\n\\n    def _get_spec(self, loader_class, fullname, path, smsl, target):\\n        loader = loader_class(fullname, path)\\n        return spec_from_file_location(fullname, path, loader=loader,\\n                                       submodule_search_locations=smsl)\\n\\n    def find_spec(self, fullname, target=None):\\n        \\\"\\\"\\\"Try to find a spec for the specified module.\\n\\n        Returns the matching spec, or None if not found.\\n        \\\"\\\"\\\"\\n        is_namespace = False\\n        tail_module = fullname.rpartition('.')[2]\\n        try:\\n            mtime = _path_stat(self.path or _os.getcwd()).st_mtime\\n        except OSError:\\n            mtime = -1\\n        if mtime != self._path_mtime:\\n            self._fill_cache()\\n            self._path_mtime = mtime\\n        # tail_module keeps the original casing, for __file__ and friends\\n        if _relax_case():\\n            cache = self._relaxed_path_cache\\n            cache_module = tail_module.lower()\\n        else:\\n            cache = self._path_cache\\n            cache_module = tail_module\\n        # Check if the module is the name of a directory (and thus a package).\\n        if cache_module in cache:\\n            base_path = _path_join(self.path, tail_module)\\n            for suffix, loader_class in self._loaders:\\n                init_filename = '__init__' + suffix\\n                full_path = _path_join(base_path, init_filename)\\n                if _path_isfile(full_path):\\n                    return self._get_spec(loader_class, fullname, full_path, [base_path], target)\\n            else:\\n                # If a namespace package, return the path if we don't\\n                #  find a module in the next section.\\n                is_namespace = _path_isdir(base_path)\\n        # Check for a file w/ a proper suffix exists.\\n        for suffix, loader_class in self._loaders:\\n            try:\\n                full_path = _path_join(self.path, tail_module + suffix)\\n            except ValueError:\\n                return None\\n            _bootstrap._verbose_message('trying {}', full_path, verbosity=2)\\n            if cache_module + suffix in cache:\\n                if _path_isfile(full_path):\\n                    return self._get_spec(loader_class, fullname, full_path,\\n                                          None, target)\\n        if is_namespace:\\n            _bootstrap._verbose_message('possible namespace for {}', base_path)\\n            spec = _bootstrap.ModuleSpec(fullname, None)\\n            spec.submodule_search_locations = [base_path]\\n            return spec\\n        return None\\n\\n    def _fill_cache(self):\\n        \\\"\\\"\\\"Fill the cache of potential modules and packages for this directory.\\\"\\\"\\\"\\n        path = self.path\\n        try:\\n            contents = _os.listdir(path or _os.getcwd())\\n        except (FileNotFoundError, PermissionError, NotADirectoryError):\\n            # Directory has either been removed, turned into a file, or made\\n            # unreadable.\\n            contents = []\\n        # We store two cached versions, to handle runtime changes of the\\n        # PYTHONCASEOK environment variable.\\n        if not sys.platform.startswith('win'):\\n            self._path_cache = set(contents)\\n        else:\\n            # Windows users can import modules with case-insensitive file\\n            # suffixes (for legacy reasons). Make the suffix lowercase here\\n            # so it's done once instead of for every import. This is safe as\\n            # the specified suffixes to check against are always specified in a\\n            # case-sensitive manner.\\n            lower_suffix_contents = set()\\n            for item in contents:\\n                name, dot, suffix = item.partition('.')\\n                if dot:\\n                    new_name = f'{name}.{suffix.lower()}'\\n                else:\\n                    new_name = name\\n                lower_suffix_contents.add(new_name)\\n            self._path_cache = lower_suffix_contents\\n        if sys.platform.startswith(_CASE_INSENSITIVE_PLATFORMS):\\n            self._relaxed_path_cache = {fn.lower() for fn in contents}\\n\\n    @classmethod\\n    def path_hook(cls, *loader_details):\\n        \\\"\\\"\\\"A class method which returns a closure to use on sys.path_hook\\n        which will return an instance using the specified loaders and the path\\n        called on the closure.\\n\\n        If the path called on the closure is not a directory, ImportError is\\n        raised.\\n\\n        \\\"\\\"\\\"\\n        def path_hook_for_FileFinder(path):\\n            \\\"\\\"\\\"Path hook for importlib.machinery.FileFinder.\\\"\\\"\\\"\\n            if not _path_isdir(path):\\n                raise ImportError('only directories are supported', path=path)\\n            return cls(path, *loader_details)\\n\\n        return path_hook_for_FileFinder\\n\\n    def __repr__(self):\\n        return f'FileFinder({self.path!r})'\\n\\n\\n# Import setup ###############################################################\\n\\ndef _fix_up_module(ns, name, pathname, cpathname=None):\\n    # This function is used by PyImport_ExecCodeModuleObject().\\n    loader = ns.get('__loader__')\\n    spec = ns.get('__spec__')\\n    if not loader:\\n        if spec:\\n            loader = spec.loader\\n        elif pathname == cpathname:\\n            loader = SourcelessFileLoader(name, pathname)\\n        else:\\n            loader = SourceFileLoader(name, pathname)\\n    if not spec:\\n        spec = spec_from_file_location(name, pathname, loader=loader)\\n        if cpathname:\\n            spec.cached = _path_abspath(cpathname)\\n    try:\\n        ns['__spec__'] = spec\\n        ns['__loader__'] = loader\\n        ns['__file__'] = pathname\\n        ns['__cached__'] = cpathname\\n    except Exception:\\n        # Not important enough to report.\\n        pass\\n\\n\\ndef _get_supported_file_loaders():\\n    \\\"\\\"\\\"Returns a list of file-based module loaders.\\n\\n    Each item is a tuple (loader, suffixes).\\n    \\\"\\\"\\\"\\n    extensions = ExtensionFileLoader, _imp.extension_suffixes()\\n    source = SourceFileLoader, SOURCE_SUFFIXES\\n    bytecode = SourcelessFileLoader, BYTECODE_SUFFIXES\\n    return [extensions, source, bytecode]\\n\\n\\ndef _set_bootstrap_module(_bootstrap_module):\\n    global _bootstrap\\n    _bootstrap = _bootstrap_module\\n\\n\\ndef _install(_bootstrap_module):\\n    \\\"\\\"\\\"Install the path-based import components.\\\"\\\"\\\"\\n    _set_bootstrap_module(_bootstrap_module)\\n    supported_loaders = _get_supported_file_loaders()\\n    sys.path_hooks.extend([FileFinder.path_hook(*supported_loaders)])\\n    sys.meta_path.append(PathFinder)\\n\", 1745], \"/usr/lib/python3.12/heapq.py\": [\"\\\"\\\"\\\"Heap queue algorithm (a.k.a. priority queue).\\n\\nHeaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for\\nall k, counting elements from 0.  For the sake of comparison,\\nnon-existing elements are considered to be infinite.  The interesting\\nproperty of a heap is that a[0] is always its smallest element.\\n\\nUsage:\\n\\nheap = []            # creates an empty heap\\nheappush(heap, item) # pushes a new item on the heap\\nitem = heappop(heap) # pops the smallest item from the heap\\nitem = heap[0]       # smallest item on the heap without popping it\\nheapify(x)           # transforms list into a heap, in-place, in linear time\\nitem = heappushpop(heap, item) # pushes a new item and then returns\\n                               # the smallest item; the heap size is unchanged\\nitem = heapreplace(heap, item) # pops and returns smallest item, and adds\\n                               # new item; the heap size is unchanged\\n\\nOur API differs from textbook heap algorithms as follows:\\n\\n- We use 0-based indexing.  This makes the relationship between the\\n  index for a node and the indexes for its children slightly less\\n  obvious, but is more suitable since Python uses 0-based indexing.\\n\\n- Our heappop() method returns the smallest item, not the largest.\\n\\nThese two make it possible to view the heap as a regular Python list\\nwithout surprises: heap[0] is the smallest item, and heap.sort()\\nmaintains the heap invariant!\\n\\\"\\\"\\\"\\n\\n# Original code by Kevin O'Connor, augmented by Tim Peters and Raymond Hettinger\\n\\n__about__ = \\\"\\\"\\\"Heap queues\\n\\n[explanation by Fran\\u00e7ois Pinard]\\n\\nHeaps are arrays for which a[k] <= a[2*k+1] and a[k] <= a[2*k+2] for\\nall k, counting elements from 0.  For the sake of comparison,\\nnon-existing elements are considered to be infinite.  The interesting\\nproperty of a heap is that a[0] is always its smallest element.\\n\\nThe strange invariant above is meant to be an efficient memory\\nrepresentation for a tournament.  The numbers below are `k', not a[k]:\\n\\n                                   0\\n\\n                  1                                 2\\n\\n          3               4                5               6\\n\\n      7       8       9       10      11      12      13      14\\n\\n    15 16   17 18   19 20   21 22   23 24   25 26   27 28   29 30\\n\\n\\nIn the tree above, each cell `k' is topping `2*k+1' and `2*k+2'.  In\\na usual binary tournament we see in sports, each cell is the winner\\nover the two cells it tops, and we can trace the winner down the tree\\nto see all opponents s/he had.  However, in many computer applications\\nof such tournaments, we do not need to trace the history of a winner.\\nTo be more memory efficient, when a winner is promoted, we try to\\nreplace it by something else at a lower level, and the rule becomes\\nthat a cell and the two cells it tops contain three different items,\\nbut the top cell \\\"wins\\\" over the two topped cells.\\n\\nIf this heap invariant is protected at all time, index 0 is clearly\\nthe overall winner.  The simplest algorithmic way to remove it and\\nfind the \\\"next\\\" winner is to move some loser (let's say cell 30 in the\\ndiagram above) into the 0 position, and then percolate this new 0 down\\nthe tree, exchanging values, until the invariant is re-established.\\nThis is clearly logarithmic on the total number of items in the tree.\\nBy iterating over all items, you get an O(n ln n) sort.\\n\\nA nice feature of this sort is that you can efficiently insert new\\nitems while the sort is going on, provided that the inserted items are\\nnot \\\"better\\\" than the last 0'th element you extracted.  This is\\nespecially useful in simulation contexts, where the tree holds all\\nincoming events, and the \\\"win\\\" condition means the smallest scheduled\\ntime.  When an event schedule other events for execution, they are\\nscheduled into the future, so they can easily go into the heap.  So, a\\nheap is a good structure for implementing schedulers (this is what I\\nused for my MIDI sequencer :-).\\n\\nVarious structures for implementing schedulers have been extensively\\nstudied, and heaps are good for this, as they are reasonably speedy,\\nthe speed is almost constant, and the worst case is not much different\\nthan the average case.  However, there are other representations which\\nare more efficient overall, yet the worst cases might be terrible.\\n\\nHeaps are also very useful in big disk sorts.  You most probably all\\nknow that a big sort implies producing \\\"runs\\\" (which are pre-sorted\\nsequences, which size is usually related to the amount of CPU memory),\\nfollowed by a merging passes for these runs, which merging is often\\nvery cleverly organised[1].  It is very important that the initial\\nsort produces the longest runs possible.  Tournaments are a good way\\nto that.  If, using all the memory available to hold a tournament, you\\nreplace and percolate items that happen to fit the current run, you'll\\nproduce runs which are twice the size of the memory for random input,\\nand much better for input fuzzily ordered.\\n\\nMoreover, if you output the 0'th item on disk and get an input which\\nmay not fit in the current tournament (because the value \\\"wins\\\" over\\nthe last output value), it cannot fit in the heap, so the size of the\\nheap decreases.  The freed memory could be cleverly reused immediately\\nfor progressively building a second heap, which grows at exactly the\\nsame rate the first heap is melting.  When the first heap completely\\nvanishes, you switch heaps and start a new run.  Clever and quite\\neffective!\\n\\nIn a word, heaps are useful memory structures to know.  I use them in\\na few applications, and I think it is good to keep a `heap' module\\naround. :-)\\n\\n--------------------\\n[1] The disk balancing algorithms which are current, nowadays, are\\nmore annoying than clever, and this is a consequence of the seeking\\ncapabilities of the disks.  On devices which cannot seek, like big\\ntape drives, the story was quite different, and one had to be very\\nclever to ensure (far in advance) that each tape movement will be the\\nmost effective possible (that is, will best participate at\\n\\\"progressing\\\" the merge).  Some tapes were even able to read\\nbackwards, and this was also used to avoid the rewinding time.\\nBelieve me, real good tape sorts were quite spectacular to watch!\\nFrom all times, sorting has always been a Great Art! :-)\\n\\\"\\\"\\\"\\n\\n__all__ = ['heappush', 'heappop', 'heapify', 'heapreplace', 'merge',\\n           'nlargest', 'nsmallest', 'heappushpop']\\n\\ndef heappush(heap, item):\\n    \\\"\\\"\\\"Push item onto heap, maintaining the heap invariant.\\\"\\\"\\\"\\n    heap.append(item)\\n    _siftdown(heap, 0, len(heap)-1)\\n\\ndef heappop(heap):\\n    \\\"\\\"\\\"Pop the smallest item off the heap, maintaining the heap invariant.\\\"\\\"\\\"\\n    lastelt = heap.pop()    # raises appropriate IndexError if heap is empty\\n    if heap:\\n        returnitem = heap[0]\\n        heap[0] = lastelt\\n        _siftup(heap, 0)\\n        return returnitem\\n    return lastelt\\n\\ndef heapreplace(heap, item):\\n    \\\"\\\"\\\"Pop and return the current smallest value, and add the new item.\\n\\n    This is more efficient than heappop() followed by heappush(), and can be\\n    more appropriate when using a fixed-size heap.  Note that the value\\n    returned may be larger than item!  That constrains reasonable uses of\\n    this routine unless written as part of a conditional replacement:\\n\\n        if item > heap[0]:\\n            item = heapreplace(heap, item)\\n    \\\"\\\"\\\"\\n    returnitem = heap[0]    # raises appropriate IndexError if heap is empty\\n    heap[0] = item\\n    _siftup(heap, 0)\\n    return returnitem\\n\\ndef heappushpop(heap, item):\\n    \\\"\\\"\\\"Fast version of a heappush followed by a heappop.\\\"\\\"\\\"\\n    if heap and heap[0] < item:\\n        item, heap[0] = heap[0], item\\n        _siftup(heap, 0)\\n    return item\\n\\ndef heapify(x):\\n    \\\"\\\"\\\"Transform list into a heap, in-place, in O(len(x)) time.\\\"\\\"\\\"\\n    n = len(x)\\n    # Transform bottom-up.  The largest index there's any point to looking at\\n    # is the largest with a child index in-range, so must have 2*i + 1 < n,\\n    # or i < (n-1)/2.  If n is even = 2*j, this is (2*j-1)/2 = j-1/2 so\\n    # j-1 is the largest, which is n//2 - 1.  If n is odd = 2*j+1, this is\\n    # (2*j+1-1)/2 = j so j-1 is the largest, and that's again n//2-1.\\n    for i in reversed(range(n//2)):\\n        _siftup(x, i)\\n\\ndef _heappop_max(heap):\\n    \\\"\\\"\\\"Maxheap version of a heappop.\\\"\\\"\\\"\\n    lastelt = heap.pop()    # raises appropriate IndexError if heap is empty\\n    if heap:\\n        returnitem = heap[0]\\n        heap[0] = lastelt\\n        _siftup_max(heap, 0)\\n        return returnitem\\n    return lastelt\\n\\ndef _heapreplace_max(heap, item):\\n    \\\"\\\"\\\"Maxheap version of a heappop followed by a heappush.\\\"\\\"\\\"\\n    returnitem = heap[0]    # raises appropriate IndexError if heap is empty\\n    heap[0] = item\\n    _siftup_max(heap, 0)\\n    return returnitem\\n\\ndef _heapify_max(x):\\n    \\\"\\\"\\\"Transform list into a maxheap, in-place, in O(len(x)) time.\\\"\\\"\\\"\\n    n = len(x)\\n    for i in reversed(range(n//2)):\\n        _siftup_max(x, i)\\n\\n# 'heap' is a heap at all indices >= startpos, except possibly for pos.  pos\\n# is the index of a leaf with a possibly out-of-order value.  Restore the\\n# heap invariant.\\ndef _siftdown(heap, startpos, pos):\\n    newitem = heap[pos]\\n    # Follow the path to the root, moving parents down until finding a place\\n    # newitem fits.\\n    while pos > startpos:\\n        parentpos = (pos - 1) >> 1\\n        parent = heap[parentpos]\\n        if newitem < parent:\\n            heap[pos] = parent\\n            pos = parentpos\\n            continue\\n        break\\n    heap[pos] = newitem\\n\\n# The child indices of heap index pos are already heaps, and we want to make\\n# a heap at index pos too.  We do this by bubbling the smaller child of\\n# pos up (and so on with that child's children, etc) until hitting a leaf,\\n# then using _siftdown to move the oddball originally at index pos into place.\\n#\\n# We *could* break out of the loop as soon as we find a pos where newitem <=\\n# both its children, but turns out that's not a good idea, and despite that\\n# many books write the algorithm that way.  During a heap pop, the last array\\n# element is sifted in, and that tends to be large, so that comparing it\\n# against values starting from the root usually doesn't pay (= usually doesn't\\n# get us out of the loop early).  See Knuth, Volume 3, where this is\\n# explained and quantified in an exercise.\\n#\\n# Cutting the # of comparisons is important, since these routines have no\\n# way to extract \\\"the priority\\\" from an array element, so that intelligence\\n# is likely to be hiding in custom comparison methods, or in array elements\\n# storing (priority, record) tuples.  Comparisons are thus potentially\\n# expensive.\\n#\\n# On random arrays of length 1000, making this change cut the number of\\n# comparisons made by heapify() a little, and those made by exhaustive\\n# heappop() a lot, in accord with theory.  Here are typical results from 3\\n# runs (3 just to demonstrate how small the variance is):\\n#\\n# Compares needed by heapify     Compares needed by 1000 heappops\\n# --------------------------     --------------------------------\\n# 1837 cut to 1663               14996 cut to 8680\\n# 1855 cut to 1659               14966 cut to 8678\\n# 1847 cut to 1660               15024 cut to 8703\\n#\\n# Building the heap by using heappush() 1000 times instead required\\n# 2198, 2148, and 2219 compares:  heapify() is more efficient, when\\n# you can use it.\\n#\\n# The total compares needed by list.sort() on the same lists were 8627,\\n# 8627, and 8632 (this should be compared to the sum of heapify() and\\n# heappop() compares):  list.sort() is (unsurprisingly!) more efficient\\n# for sorting.\\n\\ndef _siftup(heap, pos):\\n    endpos = len(heap)\\n    startpos = pos\\n    newitem = heap[pos]\\n    # Bubble up the smaller child until hitting a leaf.\\n    childpos = 2*pos + 1    # leftmost child position\\n    while childpos < endpos:\\n        # Set childpos to index of smaller child.\\n        rightpos = childpos + 1\\n        if rightpos < endpos and not heap[childpos] < heap[rightpos]:\\n            childpos = rightpos\\n        # Move the smaller child up.\\n        heap[pos] = heap[childpos]\\n        pos = childpos\\n        childpos = 2*pos + 1\\n    # The leaf at pos is empty now.  Put newitem there, and bubble it up\\n    # to its final resting place (by sifting its parents down).\\n    heap[pos] = newitem\\n    _siftdown(heap, startpos, pos)\\n\\ndef _siftdown_max(heap, startpos, pos):\\n    'Maxheap variant of _siftdown'\\n    newitem = heap[pos]\\n    # Follow the path to the root, moving parents down until finding a place\\n    # newitem fits.\\n    while pos > startpos:\\n        parentpos = (pos - 1) >> 1\\n        parent = heap[parentpos]\\n        if parent < newitem:\\n            heap[pos] = parent\\n            pos = parentpos\\n            continue\\n        break\\n    heap[pos] = newitem\\n\\ndef _siftup_max(heap, pos):\\n    'Maxheap variant of _siftup'\\n    endpos = len(heap)\\n    startpos = pos\\n    newitem = heap[pos]\\n    # Bubble up the larger child until hitting a leaf.\\n    childpos = 2*pos + 1    # leftmost child position\\n    while childpos < endpos:\\n        # Set childpos to index of larger child.\\n        rightpos = childpos + 1\\n        if rightpos < endpos and not heap[rightpos] < heap[childpos]:\\n            childpos = rightpos\\n        # Move the larger child up.\\n        heap[pos] = heap[childpos]\\n        pos = childpos\\n        childpos = 2*pos + 1\\n    # The leaf at pos is empty now.  Put newitem there, and bubble it up\\n    # to its final resting place (by sifting its parents down).\\n    heap[pos] = newitem\\n    _siftdown_max(heap, startpos, pos)\\n\\ndef merge(*iterables, key=None, reverse=False):\\n    '''Merge multiple sorted inputs into a single sorted output.\\n\\n    Similar to sorted(itertools.chain(*iterables)) but returns a generator,\\n    does not pull the data into memory all at once, and assumes that each of\\n    the input streams is already sorted (smallest to largest).\\n\\n    >>> list(merge([1,3,5,7], [0,2,4,8], [5,10,15,20], [], [25]))\\n    [0, 1, 2, 3, 4, 5, 5, 7, 8, 10, 15, 20, 25]\\n\\n    If *key* is not None, applies a key function to each element to determine\\n    its sort order.\\n\\n    >>> list(merge(['dog', 'horse'], ['cat', 'fish', 'kangaroo'], key=len))\\n    ['dog', 'cat', 'fish', 'horse', 'kangaroo']\\n\\n    '''\\n\\n    h = []\\n    h_append = h.append\\n\\n    if reverse:\\n        _heapify = _heapify_max\\n        _heappop = _heappop_max\\n        _heapreplace = _heapreplace_max\\n        direction = -1\\n    else:\\n        _heapify = heapify\\n        _heappop = heappop\\n        _heapreplace = heapreplace\\n        direction = 1\\n\\n    if key is None:\\n        for order, it in enumerate(map(iter, iterables)):\\n            try:\\n                next = it.__next__\\n                h_append([next(), order * direction, next])\\n            except StopIteration:\\n                pass\\n        _heapify(h)\\n        while len(h) > 1:\\n            try:\\n                while True:\\n                    value, order, next = s = h[0]\\n                    yield value\\n                    s[0] = next()           # raises StopIteration when exhausted\\n                    _heapreplace(h, s)      # restore heap condition\\n            except StopIteration:\\n                _heappop(h)                 # remove empty iterator\\n        if h:\\n            # fast case when only a single iterator remains\\n            value, order, next = h[0]\\n            yield value\\n            yield from next.__self__\\n        return\\n\\n    for order, it in enumerate(map(iter, iterables)):\\n        try:\\n            next = it.__next__\\n            value = next()\\n            h_append([key(value), order * direction, value, next])\\n        except StopIteration:\\n            pass\\n    _heapify(h)\\n    while len(h) > 1:\\n        try:\\n            while True:\\n                key_value, order, value, next = s = h[0]\\n                yield value\\n                value = next()\\n                s[0] = key(value)\\n                s[2] = value\\n                _heapreplace(h, s)\\n        except StopIteration:\\n            _heappop(h)\\n    if h:\\n        key_value, order, value, next = h[0]\\n        yield value\\n        yield from next.__self__\\n\\n\\n# Algorithm notes for nlargest() and nsmallest()\\n# ==============================================\\n#\\n# Make a single pass over the data while keeping the k most extreme values\\n# in a heap.  Memory consumption is limited to keeping k values in a list.\\n#\\n# Measured performance for random inputs:\\n#\\n#                                   number of comparisons\\n#    n inputs     k-extreme values  (average of 5 trials)   % more than min()\\n# -------------   ----------------  ---------------------   -----------------\\n#      1,000           100                  3,317               231.7%\\n#     10,000           100                 14,046                40.5%\\n#    100,000           100                105,749                 5.7%\\n#  1,000,000           100              1,007,751                 0.8%\\n# 10,000,000           100             10,009,401                 0.1%\\n#\\n# Theoretical number of comparisons for k smallest of n random inputs:\\n#\\n# Step   Comparisons                  Action\\n# ----   --------------------------   ---------------------------\\n#  1     1.66 * k                     heapify the first k-inputs\\n#  2     n - k                        compare remaining elements to top of heap\\n#  3     k * (1 + lg2(k)) * ln(n/k)   replace the topmost value on the heap\\n#  4     k * lg2(k) - (k/2)           final sort of the k most extreme values\\n#\\n# Combining and simplifying for a rough estimate gives:\\n#\\n#        comparisons = n + k * (log(k, 2) * log(n/k) + log(k, 2) + log(n/k))\\n#\\n# Computing the number of comparisons for step 3:\\n# -----------------------------------------------\\n# * For the i-th new value from the iterable, the probability of being in the\\n#   k most extreme values is k/i.  For example, the probability of the 101st\\n#   value seen being in the 100 most extreme values is 100/101.\\n# * If the value is a new extreme value, the cost of inserting it into the\\n#   heap is 1 + log(k, 2).\\n# * The probability times the cost gives:\\n#            (k/i) * (1 + log(k, 2))\\n# * Summing across the remaining n-k elements gives:\\n#            sum((k/i) * (1 + log(k, 2)) for i in range(k+1, n+1))\\n# * This reduces to:\\n#            (H(n) - H(k)) * k * (1 + log(k, 2))\\n# * Where H(n) is the n-th harmonic number estimated by:\\n#            gamma = 0.5772156649\\n#            H(n) = log(n, e) + gamma + 1 / (2 * n)\\n#   http://en.wikipedia.org/wiki/Harmonic_series_(mathematics)#Rate_of_divergence\\n# * Substituting the H(n) formula:\\n#            comparisons = k * (1 + log(k, 2)) * (log(n/k, e) + (1/n - 1/k) / 2)\\n#\\n# Worst-case for step 3:\\n# ----------------------\\n# In the worst case, the input data is reversed sorted so that every new element\\n# must be inserted in the heap:\\n#\\n#             comparisons = 1.66 * k + log(k, 2) * (n - k)\\n#\\n# Alternative Algorithms\\n# ----------------------\\n# Other algorithms were not used because they:\\n# 1) Took much more auxiliary memory,\\n# 2) Made multiple passes over the data.\\n# 3) Made more comparisons in common cases (small k, large n, semi-random input).\\n# See the more detailed comparison of approach at:\\n# http://code.activestate.com/recipes/577573-compare-algorithms-for-heapqsmallest\\n\\ndef nsmallest(n, iterable, key=None):\\n    \\\"\\\"\\\"Find the n smallest elements in a dataset.\\n\\n    Equivalent to:  sorted(iterable, key=key)[:n]\\n    \\\"\\\"\\\"\\n\\n    # Short-cut for n==1 is to use min()\\n    if n == 1:\\n        it = iter(iterable)\\n        sentinel = object()\\n        result = min(it, default=sentinel, key=key)\\n        return [] if result is sentinel else [result]\\n\\n    # When n>=size, it's faster to use sorted()\\n    try:\\n        size = len(iterable)\\n    except (TypeError, AttributeError):\\n        pass\\n    else:\\n        if n >= size:\\n            return sorted(iterable, key=key)[:n]\\n\\n    # When key is none, use simpler decoration\\n    if key is None:\\n        it = iter(iterable)\\n        # put the range(n) first so that zip() doesn't\\n        # consume one too many elements from the iterator\\n        result = [(elem, i) for i, elem in zip(range(n), it)]\\n        if not result:\\n            return result\\n        _heapify_max(result)\\n        top = result[0][0]\\n        order = n\\n        _heapreplace = _heapreplace_max\\n        for elem in it:\\n            if elem < top:\\n                _heapreplace(result, (elem, order))\\n                top, _order = result[0]\\n                order += 1\\n        result.sort()\\n        return [elem for (elem, order) in result]\\n\\n    # General case, slowest method\\n    it = iter(iterable)\\n    result = [(key(elem), i, elem) for i, elem in zip(range(n), it)]\\n    if not result:\\n        return result\\n    _heapify_max(result)\\n    top = result[0][0]\\n    order = n\\n    _heapreplace = _heapreplace_max\\n    for elem in it:\\n        k = key(elem)\\n        if k < top:\\n            _heapreplace(result, (k, order, elem))\\n            top, _order, _elem = result[0]\\n            order += 1\\n    result.sort()\\n    return [elem for (k, order, elem) in result]\\n\\ndef nlargest(n, iterable, key=None):\\n    \\\"\\\"\\\"Find the n largest elements in a dataset.\\n\\n    Equivalent to:  sorted(iterable, key=key, reverse=True)[:n]\\n    \\\"\\\"\\\"\\n\\n    # Short-cut for n==1 is to use max()\\n    if n == 1:\\n        it = iter(iterable)\\n        sentinel = object()\\n        result = max(it, default=sentinel, key=key)\\n        return [] if result is sentinel else [result]\\n\\n    # When n>=size, it's faster to use sorted()\\n    try:\\n        size = len(iterable)\\n    except (TypeError, AttributeError):\\n        pass\\n    else:\\n        if n >= size:\\n            return sorted(iterable, key=key, reverse=True)[:n]\\n\\n    # When key is none, use simpler decoration\\n    if key is None:\\n        it = iter(iterable)\\n        result = [(elem, i) for i, elem in zip(range(0, -n, -1), it)]\\n        if not result:\\n            return result\\n        heapify(result)\\n        top = result[0][0]\\n        order = -n\\n        _heapreplace = heapreplace\\n        for elem in it:\\n            if top < elem:\\n                _heapreplace(result, (elem, order))\\n                top, _order = result[0]\\n                order -= 1\\n        result.sort(reverse=True)\\n        return [elem for (elem, order) in result]\\n\\n    # General case, slowest method\\n    it = iter(iterable)\\n    result = [(key(elem), i, elem) for i, elem in zip(range(0, -n, -1), it)]\\n    if not result:\\n        return result\\n    heapify(result)\\n    top = result[0][0]\\n    order = -n\\n    _heapreplace = heapreplace\\n    for elem in it:\\n        k = key(elem)\\n        if top < k:\\n            _heapreplace(result, (k, order, elem))\\n            top, _order, _elem = result[0]\\n            order -= 1\\n    result.sort(reverse=True)\\n    return [elem for (k, order, elem) in result]\\n\\n# If available, use C implementation\\ntry:\\n    from _heapq import *\\nexcept ImportError:\\n    pass\\ntry:\\n    from _heapq import _heapreplace_max\\nexcept ImportError:\\n    pass\\ntry:\\n    from _heapq import _heapify_max\\nexcept ImportError:\\n    pass\\ntry:\\n    from _heapq import _heappop_max\\nexcept ImportError:\\n    pass\\n\\n\\nif __name__ == \\\"__main__\\\":\\n\\n    import doctest # pragma: no cover\\n    print(doctest.testmod()) # pragma: no cover\\n\", 603], \"/usr/lib/python3.12/queue.py\": [\"'''A multi-producer, multi-consumer queue.'''\\n\\nimport threading\\nimport types\\nfrom collections import deque\\nfrom heapq import heappush, heappop\\nfrom time import monotonic as time\\ntry:\\n    from _queue import SimpleQueue\\nexcept ImportError:\\n    SimpleQueue = None\\n\\n__all__ = ['Empty', 'Full', 'Queue', 'PriorityQueue', 'LifoQueue', 'SimpleQueue']\\n\\n\\ntry:\\n    from _queue import Empty\\nexcept ImportError:\\n    class Empty(Exception):\\n        'Exception raised by Queue.get(block=0)/get_nowait().'\\n        pass\\n\\nclass Full(Exception):\\n    'Exception raised by Queue.put(block=0)/put_nowait().'\\n    pass\\n\\n\\nclass Queue:\\n    '''Create a queue object with a given maximum size.\\n\\n    If maxsize is <= 0, the queue size is infinite.\\n    '''\\n\\n    def __init__(self, maxsize=0):\\n        self.maxsize = maxsize\\n        self._init(maxsize)\\n\\n        # mutex must be held whenever the queue is mutating.  All methods\\n        # that acquire mutex must release it before returning.  mutex\\n        # is shared between the three conditions, so acquiring and\\n        # releasing the conditions also acquires and releases mutex.\\n        self.mutex = threading.Lock()\\n\\n        # Notify not_empty whenever an item is added to the queue; a\\n        # thread waiting to get is notified then.\\n        self.not_empty = threading.Condition(self.mutex)\\n\\n        # Notify not_full whenever an item is removed from the queue;\\n        # a thread waiting to put is notified then.\\n        self.not_full = threading.Condition(self.mutex)\\n\\n        # Notify all_tasks_done whenever the number of unfinished tasks\\n        # drops to zero; thread waiting to join() is notified to resume\\n        self.all_tasks_done = threading.Condition(self.mutex)\\n        self.unfinished_tasks = 0\\n\\n    def task_done(self):\\n        '''Indicate that a formerly enqueued task is complete.\\n\\n        Used by Queue consumer threads.  For each get() used to fetch a task,\\n        a subsequent call to task_done() tells the queue that the processing\\n        on the task is complete.\\n\\n        If a join() is currently blocking, it will resume when all items\\n        have been processed (meaning that a task_done() call was received\\n        for every item that had been put() into the queue).\\n\\n        Raises a ValueError if called more times than there were items\\n        placed in the queue.\\n        '''\\n        with self.all_tasks_done:\\n            unfinished = self.unfinished_tasks - 1\\n            if unfinished <= 0:\\n                if unfinished < 0:\\n                    raise ValueError('task_done() called too many times')\\n                self.all_tasks_done.notify_all()\\n            self.unfinished_tasks = unfinished\\n\\n    def join(self):\\n        '''Blocks until all items in the Queue have been gotten and processed.\\n\\n        The count of unfinished tasks goes up whenever an item is added to the\\n        queue. The count goes down whenever a consumer thread calls task_done()\\n        to indicate the item was retrieved and all work on it is complete.\\n\\n        When the count of unfinished tasks drops to zero, join() unblocks.\\n        '''\\n        with self.all_tasks_done:\\n            while self.unfinished_tasks:\\n                self.all_tasks_done.wait()\\n\\n    def qsize(self):\\n        '''Return the approximate size of the queue (not reliable!).'''\\n        with self.mutex:\\n            return self._qsize()\\n\\n    def empty(self):\\n        '''Return True if the queue is empty, False otherwise (not reliable!).\\n\\n        This method is likely to be removed at some point.  Use qsize() == 0\\n        as a direct substitute, but be aware that either approach risks a race\\n        condition where a queue can grow before the result of empty() or\\n        qsize() can be used.\\n\\n        To create code that needs to wait for all queued tasks to be\\n        completed, the preferred technique is to use the join() method.\\n        '''\\n        with self.mutex:\\n            return not self._qsize()\\n\\n    def full(self):\\n        '''Return True if the queue is full, False otherwise (not reliable!).\\n\\n        This method is likely to be removed at some point.  Use qsize() >= n\\n        as a direct substitute, but be aware that either approach risks a race\\n        condition where a queue can shrink before the result of full() or\\n        qsize() can be used.\\n        '''\\n        with self.mutex:\\n            return 0 < self.maxsize <= self._qsize()\\n\\n    def put(self, item, block=True, timeout=None):\\n        '''Put an item into the queue.\\n\\n        If optional args 'block' is true and 'timeout' is None (the default),\\n        block if necessary until a free slot is available. If 'timeout' is\\n        a non-negative number, it blocks at most 'timeout' seconds and raises\\n        the Full exception if no free slot was available within that time.\\n        Otherwise ('block' is false), put an item on the queue if a free slot\\n        is immediately available, else raise the Full exception ('timeout'\\n        is ignored in that case).\\n        '''\\n        with self.not_full:\\n            if self.maxsize > 0:\\n                if not block:\\n                    if self._qsize() >= self.maxsize:\\n                        raise Full\\n                elif timeout is None:\\n                    while self._qsize() >= self.maxsize:\\n                        self.not_full.wait()\\n                elif timeout < 0:\\n                    raise ValueError(\\\"'timeout' must be a non-negative number\\\")\\n                else:\\n                    endtime = time() + timeout\\n                    while self._qsize() >= self.maxsize:\\n                        remaining = endtime - time()\\n                        if remaining <= 0.0:\\n                            raise Full\\n                        self.not_full.wait(remaining)\\n            self._put(item)\\n            self.unfinished_tasks += 1\\n            self.not_empty.notify()\\n\\n    def get(self, block=True, timeout=None):\\n        '''Remove and return an item from the queue.\\n\\n        If optional args 'block' is true and 'timeout' is None (the default),\\n        block if necessary until an item is available. If 'timeout' is\\n        a non-negative number, it blocks at most 'timeout' seconds and raises\\n        the Empty exception if no item was available within that time.\\n        Otherwise ('block' is false), return an item if one is immediately\\n        available, else raise the Empty exception ('timeout' is ignored\\n        in that case).\\n        '''\\n        with self.not_empty:\\n            if not block:\\n                if not self._qsize():\\n                    raise Empty\\n            elif timeout is None:\\n                while not self._qsize():\\n                    self.not_empty.wait()\\n            elif timeout < 0:\\n                raise ValueError(\\\"'timeout' must be a non-negative number\\\")\\n            else:\\n                endtime = time() + timeout\\n                while not self._qsize():\\n                    remaining = endtime - time()\\n                    if remaining <= 0.0:\\n                        raise Empty\\n                    self.not_empty.wait(remaining)\\n            item = self._get()\\n            self.not_full.notify()\\n            return item\\n\\n    def put_nowait(self, item):\\n        '''Put an item into the queue without blocking.\\n\\n        Only enqueue the item if a free slot is immediately available.\\n        Otherwise raise the Full exception.\\n        '''\\n        return self.put(item, block=False)\\n\\n    def get_nowait(self):\\n        '''Remove and return an item from the queue without blocking.\\n\\n        Only get an item if one is immediately available. Otherwise\\n        raise the Empty exception.\\n        '''\\n        return self.get(block=False)\\n\\n    # Override these methods to implement other queue organizations\\n    # (e.g. stack or priority queue).\\n    # These will only be called with appropriate locks held\\n\\n    # Initialize the queue representation\\n    def _init(self, maxsize):\\n        self.queue = deque()\\n\\n    def _qsize(self):\\n        return len(self.queue)\\n\\n    # Put a new item in the queue\\n    def _put(self, item):\\n        self.queue.append(item)\\n\\n    # Get an item from the queue\\n    def _get(self):\\n        return self.queue.popleft()\\n\\n    __class_getitem__ = classmethod(types.GenericAlias)\\n\\n\\nclass PriorityQueue(Queue):\\n    '''Variant of Queue that retrieves open entries in priority order (lowest first).\\n\\n    Entries are typically tuples of the form:  (priority number, data).\\n    '''\\n\\n    def _init(self, maxsize):\\n        self.queue = []\\n\\n    def _qsize(self):\\n        return len(self.queue)\\n\\n    def _put(self, item):\\n        heappush(self.queue, item)\\n\\n    def _get(self):\\n        return heappop(self.queue)\\n\\n\\nclass LifoQueue(Queue):\\n    '''Variant of Queue that retrieves most recently added entries first.'''\\n\\n    def _init(self, maxsize):\\n        self.queue = []\\n\\n    def _qsize(self):\\n        return len(self.queue)\\n\\n    def _put(self, item):\\n        self.queue.append(item)\\n\\n    def _get(self):\\n        return self.queue.pop()\\n\\n\\nclass _PySimpleQueue:\\n    '''Simple, unbounded FIFO queue.\\n\\n    This pure Python implementation is not reentrant.\\n    '''\\n    # Note: while this pure Python version provides fairness\\n    # (by using a threading.Semaphore which is itself fair, being based\\n    #  on threading.Condition), fairness is not part of the API contract.\\n    # This allows the C version to use a different implementation.\\n\\n    def __init__(self):\\n        self._queue = deque()\\n        self._count = threading.Semaphore(0)\\n\\n    def put(self, item, block=True, timeout=None):\\n        '''Put the item on the queue.\\n\\n        The optional 'block' and 'timeout' arguments are ignored, as this method\\n        never blocks.  They are provided for compatibility with the Queue class.\\n        '''\\n        self._queue.append(item)\\n        self._count.release()\\n\\n    def get(self, block=True, timeout=None):\\n        '''Remove and return an item from the queue.\\n\\n        If optional args 'block' is true and 'timeout' is None (the default),\\n        block if necessary until an item is available. If 'timeout' is\\n        a non-negative number, it blocks at most 'timeout' seconds and raises\\n        the Empty exception if no item was available within that time.\\n        Otherwise ('block' is false), return an item if one is immediately\\n        available, else raise the Empty exception ('timeout' is ignored\\n        in that case).\\n        '''\\n        if timeout is not None and timeout < 0:\\n            raise ValueError(\\\"'timeout' must be a non-negative number\\\")\\n        if not self._count.acquire(block, timeout):\\n            raise Empty\\n        return self._queue.popleft()\\n\\n    def put_nowait(self, item):\\n        '''Put an item into the queue without blocking.\\n\\n        This is exactly equivalent to `put(item, block=False)` and is only provided\\n        for compatibility with the Queue class.\\n        '''\\n        return self.put(item, block=False)\\n\\n    def get_nowait(self):\\n        '''Remove and return an item from the queue without blocking.\\n\\n        Only get an item if one is immediately available. Otherwise\\n        raise the Empty exception.\\n        '''\\n        return self.get(block=False)\\n\\n    def empty(self):\\n        '''Return True if the queue is empty, False otherwise (not reliable!).'''\\n        return len(self._queue) == 0\\n\\n    def qsize(self):\\n        '''Return the approximate size of the queue (not reliable!).'''\\n        return len(self._queue)\\n\\n    __class_getitem__ = classmethod(types.GenericAlias)\\n\\n\\nif SimpleQueue is None:\\n    SimpleQueue = _PySimpleQueue\\n\", 326], \"/usr/lib/python3.12/traceback.py\": [\"\\\"\\\"\\\"Extract, format and print information about Python stack traces.\\\"\\\"\\\"\\n\\nimport collections.abc\\nimport itertools\\nimport linecache\\nimport sys\\nimport textwrap\\nfrom contextlib import suppress\\n\\n__all__ = ['extract_stack', 'extract_tb', 'format_exception',\\n           'format_exception_only', 'format_list', 'format_stack',\\n           'format_tb', 'print_exc', 'format_exc', 'print_exception',\\n           'print_last', 'print_stack', 'print_tb', 'clear_frames',\\n           'FrameSummary', 'StackSummary', 'TracebackException',\\n           'walk_stack', 'walk_tb']\\n\\n#\\n# Formatting and printing lists of traceback lines.\\n#\\n\\ndef print_list(extracted_list, file=None):\\n    \\\"\\\"\\\"Print the list of tuples as returned by extract_tb() or\\n    extract_stack() as a formatted stack trace to the given file.\\\"\\\"\\\"\\n    if file is None:\\n        file = sys.stderr\\n    for item in StackSummary.from_list(extracted_list).format():\\n        print(item, file=file, end=\\\"\\\")\\n\\ndef format_list(extracted_list):\\n    \\\"\\\"\\\"Format a list of tuples or FrameSummary objects for printing.\\n\\n    Given a list of tuples or FrameSummary objects as returned by\\n    extract_tb() or extract_stack(), return a list of strings ready\\n    for printing.\\n\\n    Each string in the resulting list corresponds to the item with the\\n    same index in the argument list.  Each string ends in a newline;\\n    the strings may contain internal newlines as well, for those items\\n    whose source text line is not None.\\n    \\\"\\\"\\\"\\n    return StackSummary.from_list(extracted_list).format()\\n\\n#\\n# Printing and Extracting Tracebacks.\\n#\\n\\ndef print_tb(tb, limit=None, file=None):\\n    \\\"\\\"\\\"Print up to 'limit' stack trace entries from the traceback 'tb'.\\n\\n    If 'limit' is omitted or None, all entries are printed.  If 'file'\\n    is omitted or None, the output goes to sys.stderr; otherwise\\n    'file' should be an open file or file-like object with a write()\\n    method.\\n    \\\"\\\"\\\"\\n    print_list(extract_tb(tb, limit=limit), file=file)\\n\\ndef format_tb(tb, limit=None):\\n    \\\"\\\"\\\"A shorthand for 'format_list(extract_tb(tb, limit))'.\\\"\\\"\\\"\\n    return extract_tb(tb, limit=limit).format()\\n\\ndef extract_tb(tb, limit=None):\\n    \\\"\\\"\\\"\\n    Return a StackSummary object representing a list of\\n    pre-processed entries from traceback.\\n\\n    This is useful for alternate formatting of stack traces.  If\\n    'limit' is omitted or None, all entries are extracted.  A\\n    pre-processed stack trace entry is a FrameSummary object\\n    containing attributes filename, lineno, name, and line\\n    representing the information that is usually printed for a stack\\n    trace.  The line is a string with leading and trailing\\n    whitespace stripped; if the source is not available it is None.\\n    \\\"\\\"\\\"\\n    return StackSummary._extract_from_extended_frame_gen(\\n        _walk_tb_with_full_positions(tb), limit=limit)\\n\\n#\\n# Exception formatting and output.\\n#\\n\\n_cause_message = (\\n    \\\"\\\\nThe above exception was the direct cause \\\"\\n    \\\"of the following exception:\\\\n\\\\n\\\")\\n\\n_context_message = (\\n    \\\"\\\\nDuring handling of the above exception, \\\"\\n    \\\"another exception occurred:\\\\n\\\\n\\\")\\n\\n\\nclass _Sentinel:\\n    def __repr__(self):\\n        return \\\"<implicit>\\\"\\n\\n_sentinel = _Sentinel()\\n\\ndef _parse_value_tb(exc, value, tb):\\n    if (value is _sentinel) != (tb is _sentinel):\\n        raise ValueError(\\\"Both or neither of value and tb must be given\\\")\\n    if value is tb is _sentinel:\\n        if exc is not None:\\n            if isinstance(exc, BaseException):\\n                return exc, exc.__traceback__\\n\\n            raise TypeError(f'Exception expected for value, '\\n                            f'{type(exc).__name__} found')\\n        else:\\n            return None, None\\n    return value, tb\\n\\n\\ndef print_exception(exc, /, value=_sentinel, tb=_sentinel, limit=None, \\\\\\n                    file=None, chain=True):\\n    \\\"\\\"\\\"Print exception up to 'limit' stack trace entries from 'tb' to 'file'.\\n\\n    This differs from print_tb() in the following ways: (1) if\\n    traceback is not None, it prints a header \\\"Traceback (most recent\\n    call last):\\\"; (2) it prints the exception type and value after the\\n    stack trace; (3) if type is SyntaxError and value has the\\n    appropriate format, it prints the line where the syntax error\\n    occurred with a caret on the next line indicating the approximate\\n    position of the error.\\n    \\\"\\\"\\\"\\n    value, tb = _parse_value_tb(exc, value, tb)\\n    te = TracebackException(type(value), value, tb, limit=limit, compact=True)\\n    te.print(file=file, chain=chain)\\n\\n\\ndef format_exception(exc, /, value=_sentinel, tb=_sentinel, limit=None, \\\\\\n                     chain=True):\\n    \\\"\\\"\\\"Format a stack trace and the exception information.\\n\\n    The arguments have the same meaning as the corresponding arguments\\n    to print_exception().  The return value is a list of strings, each\\n    ending in a newline and some containing internal newlines.  When\\n    these lines are concatenated and printed, exactly the same text is\\n    printed as does print_exception().\\n    \\\"\\\"\\\"\\n    value, tb = _parse_value_tb(exc, value, tb)\\n    te = TracebackException(type(value), value, tb, limit=limit, compact=True)\\n    return list(te.format(chain=chain))\\n\\n\\ndef format_exception_only(exc, /, value=_sentinel):\\n    \\\"\\\"\\\"Format the exception part of a traceback.\\n\\n    The return value is a list of strings, each ending in a newline.\\n\\n    The list contains the exception's message, which is\\n    normally a single string; however, for :exc:`SyntaxError` exceptions, it\\n    contains several lines that (when printed) display detailed information\\n    about where the syntax error occurred. Following the message, the list\\n    contains the exception's ``__notes__``.\\n    \\\"\\\"\\\"\\n    if value is _sentinel:\\n        value = exc\\n    te = TracebackException(type(value), value, None, compact=True)\\n    return list(te.format_exception_only())\\n\\n\\n# -- not official API but folk probably use these two functions.\\n\\ndef _format_final_exc_line(etype, value):\\n    valuestr = _safe_string(value, 'exception')\\n    if value is None or not valuestr:\\n        line = \\\"%s\\\\n\\\" % etype\\n    else:\\n        line = \\\"%s: %s\\\\n\\\" % (etype, valuestr)\\n    return line\\n\\ndef _safe_string(value, what, func=str):\\n    try:\\n        return func(value)\\n    except:\\n        return f'<{what} {func.__name__}() failed>'\\n\\n# --\\n\\ndef print_exc(limit=None, file=None, chain=True):\\n    \\\"\\\"\\\"Shorthand for 'print_exception(sys.exception(), limit, file, chain)'.\\\"\\\"\\\"\\n    print_exception(sys.exception(), limit=limit, file=file, chain=chain)\\n\\ndef format_exc(limit=None, chain=True):\\n    \\\"\\\"\\\"Like print_exc() but return a string.\\\"\\\"\\\"\\n    return \\\"\\\".join(format_exception(sys.exception(), limit=limit, chain=chain))\\n\\ndef print_last(limit=None, file=None, chain=True):\\n    \\\"\\\"\\\"This is a shorthand for 'print_exception(sys.last_exc, limit, file, chain)'.\\\"\\\"\\\"\\n    if not hasattr(sys, \\\"last_exc\\\") and not hasattr(sys, \\\"last_type\\\"):\\n        raise ValueError(\\\"no last exception\\\")\\n\\n    if hasattr(sys, \\\"last_exc\\\"):\\n        print_exception(sys.last_exc, limit, file, chain)\\n    else:\\n        print_exception(sys.last_type, sys.last_value, sys.last_traceback,\\n                        limit, file, chain)\\n\\n\\n#\\n# Printing and Extracting Stacks.\\n#\\n\\ndef print_stack(f=None, limit=None, file=None):\\n    \\\"\\\"\\\"Print a stack trace from its invocation point.\\n\\n    The optional 'f' argument can be used to specify an alternate\\n    stack frame at which to start. The optional 'limit' and 'file'\\n    arguments have the same meaning as for print_exception().\\n    \\\"\\\"\\\"\\n    if f is None:\\n        f = sys._getframe().f_back\\n    print_list(extract_stack(f, limit=limit), file=file)\\n\\n\\ndef format_stack(f=None, limit=None):\\n    \\\"\\\"\\\"Shorthand for 'format_list(extract_stack(f, limit))'.\\\"\\\"\\\"\\n    if f is None:\\n        f = sys._getframe().f_back\\n    return format_list(extract_stack(f, limit=limit))\\n\\n\\ndef extract_stack(f=None, limit=None):\\n    \\\"\\\"\\\"Extract the raw traceback from the current stack frame.\\n\\n    The return value has the same format as for extract_tb().  The\\n    optional 'f' and 'limit' arguments have the same meaning as for\\n    print_stack().  Each item in the list is a quadruple (filename,\\n    line number, function name, text), and the entries are in order\\n    from oldest to newest stack frame.\\n    \\\"\\\"\\\"\\n    if f is None:\\n        f = sys._getframe().f_back\\n    stack = StackSummary.extract(walk_stack(f), limit=limit)\\n    stack.reverse()\\n    return stack\\n\\n\\ndef clear_frames(tb):\\n    \\\"Clear all references to local variables in the frames of a traceback.\\\"\\n    while tb is not None:\\n        try:\\n            tb.tb_frame.clear()\\n        except RuntimeError:\\n            # Ignore the exception raised if the frame is still executing.\\n            pass\\n        tb = tb.tb_next\\n\\n\\nclass FrameSummary:\\n    \\\"\\\"\\\"Information about a single frame from a traceback.\\n\\n    - :attr:`filename` The filename for the frame.\\n    - :attr:`lineno` The line within filename for the frame that was\\n      active when the frame was captured.\\n    - :attr:`name` The name of the function or method that was executing\\n      when the frame was captured.\\n    - :attr:`line` The text from the linecache module for the\\n      of code that was running when the frame was captured.\\n    - :attr:`locals` Either None if locals were not supplied, or a dict\\n      mapping the name to the repr() of the variable.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = ('filename', 'lineno', 'end_lineno', 'colno', 'end_colno',\\n                 'name', '_line', 'locals')\\n\\n    def __init__(self, filename, lineno, name, *, lookup_line=True,\\n            locals=None, line=None,\\n            end_lineno=None, colno=None, end_colno=None):\\n        \\\"\\\"\\\"Construct a FrameSummary.\\n\\n        :param lookup_line: If True, `linecache` is consulted for the source\\n            code line. Otherwise, the line will be looked up when first needed.\\n        :param locals: If supplied the frame locals, which will be captured as\\n            object representations.\\n        :param line: If provided, use this instead of looking up the line in\\n            the linecache.\\n        \\\"\\\"\\\"\\n        self.filename = filename\\n        self.lineno = lineno\\n        self.name = name\\n        self._line = line\\n        if lookup_line:\\n            self.line\\n        self.locals = {k: _safe_string(v, 'local', func=repr)\\n            for k, v in locals.items()} if locals else None\\n        self.end_lineno = end_lineno\\n        self.colno = colno\\n        self.end_colno = end_colno\\n\\n    def __eq__(self, other):\\n        if isinstance(other, FrameSummary):\\n            return (self.filename == other.filename and\\n                    self.lineno == other.lineno and\\n                    self.name == other.name and\\n                    self.locals == other.locals)\\n        if isinstance(other, tuple):\\n            return (self.filename, self.lineno, self.name, self.line) == other\\n        return NotImplemented\\n\\n    def __getitem__(self, pos):\\n        return (self.filename, self.lineno, self.name, self.line)[pos]\\n\\n    def __iter__(self):\\n        return iter([self.filename, self.lineno, self.name, self.line])\\n\\n    def __repr__(self):\\n        return \\\"<FrameSummary file {filename}, line {lineno} in {name}>\\\".format(\\n            filename=self.filename, lineno=self.lineno, name=self.name)\\n\\n    def __len__(self):\\n        return 4\\n\\n    @property\\n    def _original_line(self):\\n        # Returns the line as-is from the source, without modifying whitespace.\\n        self.line\\n        return self._line\\n\\n    @property\\n    def line(self):\\n        if self._line is None:\\n            if self.lineno is None:\\n                return None\\n            self._line = linecache.getline(self.filename, self.lineno)\\n        return self._line.strip()\\n\\n\\ndef walk_stack(f):\\n    \\\"\\\"\\\"Walk a stack yielding the frame and line number for each frame.\\n\\n    This will follow f.f_back from the given frame. If no frame is given, the\\n    current stack is used. Usually used with StackSummary.extract.\\n    \\\"\\\"\\\"\\n    if f is None:\\n        f = sys._getframe().f_back.f_back.f_back.f_back\\n    while f is not None:\\n        yield f, f.f_lineno\\n        f = f.f_back\\n\\n\\ndef walk_tb(tb):\\n    \\\"\\\"\\\"Walk a traceback yielding the frame and line number for each frame.\\n\\n    This will follow tb.tb_next (and thus is in the opposite order to\\n    walk_stack). Usually used with StackSummary.extract.\\n    \\\"\\\"\\\"\\n    while tb is not None:\\n        yield tb.tb_frame, tb.tb_lineno\\n        tb = tb.tb_next\\n\\n\\ndef _walk_tb_with_full_positions(tb):\\n    # Internal version of walk_tb that yields full code positions including\\n    # end line and column information.\\n    while tb is not None:\\n        positions = _get_code_position(tb.tb_frame.f_code, tb.tb_lasti)\\n        # Yield tb_lineno when co_positions does not have a line number to\\n        # maintain behavior with walk_tb.\\n        if positions[0] is None:\\n            yield tb.tb_frame, (tb.tb_lineno, ) + positions[1:]\\n        else:\\n            yield tb.tb_frame, positions\\n        tb = tb.tb_next\\n\\n\\ndef _get_code_position(code, instruction_index):\\n    if instruction_index < 0:\\n        return (None, None, None, None)\\n    positions_gen = code.co_positions()\\n    return next(itertools.islice(positions_gen, instruction_index // 2, None))\\n\\n\\n_RECURSIVE_CUTOFF = 3 # Also hardcoded in traceback.c.\\n\\nclass StackSummary(list):\\n    \\\"\\\"\\\"A list of FrameSummary objects, representing a stack of frames.\\\"\\\"\\\"\\n\\n    @classmethod\\n    def extract(klass, frame_gen, *, limit=None, lookup_lines=True,\\n            capture_locals=False):\\n        \\\"\\\"\\\"Create a StackSummary from a traceback or stack object.\\n\\n        :param frame_gen: A generator that yields (frame, lineno) tuples\\n            whose summaries are to be included in the stack.\\n        :param limit: None to include all frames or the number of frames to\\n            include.\\n        :param lookup_lines: If True, lookup lines for each frame immediately,\\n            otherwise lookup is deferred until the frame is rendered.\\n        :param capture_locals: If True, the local variables from each frame will\\n            be captured as object representations into the FrameSummary.\\n        \\\"\\\"\\\"\\n        def extended_frame_gen():\\n            for f, lineno in frame_gen:\\n                yield f, (lineno, None, None, None)\\n\\n        return klass._extract_from_extended_frame_gen(\\n            extended_frame_gen(), limit=limit, lookup_lines=lookup_lines,\\n            capture_locals=capture_locals)\\n\\n    @classmethod\\n    def _extract_from_extended_frame_gen(klass, frame_gen, *, limit=None,\\n            lookup_lines=True, capture_locals=False):\\n        # Same as extract but operates on a frame generator that yields\\n        # (frame, (lineno, end_lineno, colno, end_colno)) in the stack.\\n        # Only lineno is required, the remaining fields can be None if the\\n        # information is not available.\\n        if limit is None:\\n            limit = getattr(sys, 'tracebacklimit', None)\\n            if limit is not None and limit < 0:\\n                limit = 0\\n        if limit is not None:\\n            if limit >= 0:\\n                frame_gen = itertools.islice(frame_gen, limit)\\n            else:\\n                frame_gen = collections.deque(frame_gen, maxlen=-limit)\\n\\n        result = klass()\\n        fnames = set()\\n        for f, (lineno, end_lineno, colno, end_colno) in frame_gen:\\n            co = f.f_code\\n            filename = co.co_filename\\n            name = co.co_name\\n\\n            fnames.add(filename)\\n            linecache.lazycache(filename, f.f_globals)\\n            # Must defer line lookups until we have called checkcache.\\n            if capture_locals:\\n                f_locals = f.f_locals\\n            else:\\n                f_locals = None\\n            result.append(FrameSummary(\\n                filename, lineno, name, lookup_line=False, locals=f_locals,\\n                end_lineno=end_lineno, colno=colno, end_colno=end_colno))\\n        for filename in fnames:\\n            linecache.checkcache(filename)\\n        # If immediate lookup was desired, trigger lookups now.\\n        if lookup_lines:\\n            for f in result:\\n                f.line\\n        return result\\n\\n    @classmethod\\n    def from_list(klass, a_list):\\n        \\\"\\\"\\\"\\n        Create a StackSummary object from a supplied list of\\n        FrameSummary objects or old-style list of tuples.\\n        \\\"\\\"\\\"\\n        # While doing a fast-path check for isinstance(a_list, StackSummary) is\\n        # appealing, idlelib.run.cleanup_traceback and other similar code may\\n        # break this by making arbitrary frames plain tuples, so we need to\\n        # check on a frame by frame basis.\\n        result = StackSummary()\\n        for frame in a_list:\\n            if isinstance(frame, FrameSummary):\\n                result.append(frame)\\n            else:\\n                filename, lineno, name, line = frame\\n                result.append(FrameSummary(filename, lineno, name, line=line))\\n        return result\\n\\n    def format_frame_summary(self, frame_summary):\\n        \\\"\\\"\\\"Format the lines for a single FrameSummary.\\n\\n        Returns a string representing one frame involved in the stack. This\\n        gets called for every frame to be printed in the stack summary.\\n        \\\"\\\"\\\"\\n        row = []\\n        row.append('  File \\\"{}\\\", line {}, in {}\\\\n'.format(\\n            frame_summary.filename, frame_summary.lineno, frame_summary.name))\\n        if frame_summary.line:\\n            stripped_line = frame_summary.line.strip()\\n            row.append('    {}\\\\n'.format(stripped_line))\\n\\n            line = frame_summary._original_line\\n            orig_line_len = len(line)\\n            frame_line_len = len(frame_summary.line.lstrip())\\n            stripped_characters = orig_line_len - frame_line_len\\n            if (\\n                frame_summary.colno is not None\\n                and frame_summary.end_colno is not None\\n            ):\\n                start_offset = _byte_offset_to_character_offset(\\n                    line, frame_summary.colno)\\n                end_offset = _byte_offset_to_character_offset(\\n                    line, frame_summary.end_colno)\\n                code_segment = line[start_offset:end_offset]\\n\\n                anchors = None\\n                if frame_summary.lineno == frame_summary.end_lineno:\\n                    with suppress(Exception):\\n                        anchors = _extract_caret_anchors_from_line_segment(code_segment)\\n                else:\\n                    # Don't count the newline since the anchors only need to\\n                    # go up until the last character of the line.\\n                    end_offset = len(line.rstrip())\\n\\n                # show indicators if primary char doesn't span the frame line\\n                if end_offset - start_offset < len(stripped_line) or (\\n                        anchors and anchors.right_start_offset - anchors.left_end_offset > 0):\\n                    # When showing this on a terminal, some of the non-ASCII characters\\n                    # might be rendered as double-width characters, so we need to take\\n                    # that into account when calculating the length of the line.\\n                    dp_start_offset = _display_width(line, start_offset) + 1\\n                    dp_end_offset = _display_width(line, end_offset) + 1\\n\\n                    row.append('    ')\\n                    row.append(' ' * (dp_start_offset - stripped_characters))\\n\\n                    if anchors:\\n                        dp_left_end_offset = _display_width(code_segment, anchors.left_end_offset)\\n                        dp_right_start_offset = _display_width(code_segment, anchors.right_start_offset)\\n                        row.append(anchors.primary_char * dp_left_end_offset)\\n                        row.append(anchors.secondary_char * (dp_right_start_offset - dp_left_end_offset))\\n                        row.append(anchors.primary_char * (dp_end_offset - dp_start_offset - dp_right_start_offset))\\n                    else:\\n                        row.append('^' * (dp_end_offset - dp_start_offset))\\n\\n                    row.append('\\\\n')\\n\\n        if frame_summary.locals:\\n            for name, value in sorted(frame_summary.locals.items()):\\n                row.append('    {name} = {value}\\\\n'.format(name=name, value=value))\\n\\n        return ''.join(row)\\n\\n    def format(self):\\n        \\\"\\\"\\\"Format the stack ready for printing.\\n\\n        Returns a list of strings ready for printing.  Each string in the\\n        resulting list corresponds to a single frame from the stack.\\n        Each string ends in a newline; the strings may contain internal\\n        newlines as well, for those items with source text lines.\\n\\n        For long sequences of the same frame and line, the first few\\n        repetitions are shown, followed by a summary line stating the exact\\n        number of further repetitions.\\n        \\\"\\\"\\\"\\n        result = []\\n        last_file = None\\n        last_line = None\\n        last_name = None\\n        count = 0\\n        for frame_summary in self:\\n            formatted_frame = self.format_frame_summary(frame_summary)\\n            if formatted_frame is None:\\n                continue\\n            if (last_file is None or last_file != frame_summary.filename or\\n                last_line is None or last_line != frame_summary.lineno or\\n                last_name is None or last_name != frame_summary.name):\\n                if count > _RECURSIVE_CUTOFF:\\n                    count -= _RECURSIVE_CUTOFF\\n                    result.append(\\n                        f'  [Previous line repeated {count} more '\\n                        f'time{\\\"s\\\" if count > 1 else \\\"\\\"}]\\\\n'\\n                    )\\n                last_file = frame_summary.filename\\n                last_line = frame_summary.lineno\\n                last_name = frame_summary.name\\n                count = 0\\n            count += 1\\n            if count > _RECURSIVE_CUTOFF:\\n                continue\\n            result.append(formatted_frame)\\n\\n        if count > _RECURSIVE_CUTOFF:\\n            count -= _RECURSIVE_CUTOFF\\n            result.append(\\n                f'  [Previous line repeated {count} more '\\n                f'time{\\\"s\\\" if count > 1 else \\\"\\\"}]\\\\n'\\n            )\\n        return result\\n\\n\\ndef _byte_offset_to_character_offset(str, offset):\\n    as_utf8 = str.encode('utf-8')\\n    return len(as_utf8[:offset].decode(\\\"utf-8\\\", errors=\\\"replace\\\"))\\n\\n\\n_Anchors = collections.namedtuple(\\n    \\\"_Anchors\\\",\\n    [\\n        \\\"left_end_offset\\\",\\n        \\\"right_start_offset\\\",\\n        \\\"primary_char\\\",\\n        \\\"secondary_char\\\",\\n    ],\\n    defaults=[\\\"~\\\", \\\"^\\\"]\\n)\\n\\ndef _extract_caret_anchors_from_line_segment(segment):\\n    import ast\\n\\n    try:\\n        tree = ast.parse(segment)\\n    except SyntaxError:\\n        return None\\n\\n    if len(tree.body) != 1:\\n        return None\\n\\n    normalize = lambda offset: _byte_offset_to_character_offset(segment, offset)\\n    statement = tree.body[0]\\n    match statement:\\n        case ast.Expr(expr):\\n            match expr:\\n                case ast.BinOp():\\n                    operator_start = normalize(expr.left.end_col_offset)\\n                    operator_end = normalize(expr.right.col_offset)\\n                    operator_str = segment[operator_start:operator_end]\\n                    operator_offset = len(operator_str) - len(operator_str.lstrip())\\n\\n                    left_anchor = expr.left.end_col_offset + operator_offset\\n                    right_anchor = left_anchor + 1\\n                    if (\\n                        operator_offset + 1 < len(operator_str)\\n                        and not operator_str[operator_offset + 1].isspace()\\n                    ):\\n                        right_anchor += 1\\n\\n                    while left_anchor < len(segment) and ((ch := segment[left_anchor]).isspace() or ch in \\\")#\\\"):\\n                        left_anchor += 1\\n                        right_anchor += 1\\n                    return _Anchors(normalize(left_anchor), normalize(right_anchor))\\n                case ast.Subscript():\\n                    left_anchor = normalize(expr.value.end_col_offset)\\n                    right_anchor = normalize(expr.slice.end_col_offset + 1)\\n                    while left_anchor < len(segment) and ((ch := segment[left_anchor]).isspace() or ch != \\\"[\\\"):\\n                        left_anchor += 1\\n                    while right_anchor < len(segment) and ((ch := segment[right_anchor]).isspace() or ch != \\\"]\\\"):\\n                        right_anchor += 1\\n                    if right_anchor < len(segment):\\n                        right_anchor += 1\\n                    return _Anchors(left_anchor, right_anchor)\\n\\n    return None\\n\\n_WIDE_CHAR_SPECIFIERS = \\\"WF\\\"\\n\\ndef _display_width(line, offset):\\n    \\\"\\\"\\\"Calculate the extra amount of width space the given source\\n    code segment might take if it were to be displayed on a fixed\\n    width output device. Supports wide unicode characters and emojis.\\\"\\\"\\\"\\n\\n    # Fast track for ASCII-only strings\\n    if line.isascii():\\n        return offset\\n\\n    import unicodedata\\n\\n    return sum(\\n        2 if unicodedata.east_asian_width(char) in _WIDE_CHAR_SPECIFIERS else 1\\n        for char in line[:offset]\\n    )\\n\\n\\n\\nclass _ExceptionPrintContext:\\n    def __init__(self):\\n        self.seen = set()\\n        self.exception_group_depth = 0\\n        self.need_close = False\\n\\n    def indent(self):\\n        return ' ' * (2 * self.exception_group_depth)\\n\\n    def emit(self, text_gen, margin_char=None):\\n        if margin_char is None:\\n            margin_char = '|'\\n        indent_str = self.indent()\\n        if self.exception_group_depth:\\n            indent_str += margin_char + ' '\\n\\n        if isinstance(text_gen, str):\\n            yield textwrap.indent(text_gen, indent_str, lambda line: True)\\n        else:\\n            for text in text_gen:\\n                yield textwrap.indent(text, indent_str, lambda line: True)\\n\\n\\nclass TracebackException:\\n    \\\"\\\"\\\"An exception ready for rendering.\\n\\n    The traceback module captures enough attributes from the original exception\\n    to this intermediary form to ensure that no references are held, while\\n    still being able to fully print or format it.\\n\\n    max_group_width and max_group_depth control the formatting of exception\\n    groups. The depth refers to the nesting level of the group, and the width\\n    refers to the size of a single exception group's exceptions array. The\\n    formatted output is truncated when either limit is exceeded.\\n\\n    Use `from_exception` to create TracebackException instances from exception\\n    objects, or the constructor to create TracebackException instances from\\n    individual components.\\n\\n    - :attr:`__cause__` A TracebackException of the original *__cause__*.\\n    - :attr:`__context__` A TracebackException of the original *__context__*.\\n    - :attr:`exceptions` For exception groups - a list of TracebackException\\n      instances for the nested *exceptions*.  ``None`` for other exceptions.\\n    - :attr:`__suppress_context__` The *__suppress_context__* value from the\\n      original exception.\\n    - :attr:`stack` A `StackSummary` representing the traceback.\\n    - :attr:`exc_type` The class of the original traceback.\\n    - :attr:`filename` For syntax errors - the filename where the error\\n      occurred.\\n    - :attr:`lineno` For syntax errors - the linenumber where the error\\n      occurred.\\n    - :attr:`end_lineno` For syntax errors - the end linenumber where the error\\n      occurred. Can be `None` if not present.\\n    - :attr:`text` For syntax errors - the text where the error\\n      occurred.\\n    - :attr:`offset` For syntax errors - the offset into the text where the\\n      error occurred.\\n    - :attr:`end_offset` For syntax errors - the end offset into the text where\\n      the error occurred. Can be `None` if not present.\\n    - :attr:`msg` For syntax errors - the compiler error message.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, exc_type, exc_value, exc_traceback, *, limit=None,\\n            lookup_lines=True, capture_locals=False, compact=False,\\n            max_group_width=15, max_group_depth=10, _seen=None):\\n        # NB: we need to accept exc_traceback, exc_value, exc_traceback to\\n        # permit backwards compat with the existing API, otherwise we\\n        # need stub thunk objects just to glue it together.\\n        # Handle loops in __cause__ or __context__.\\n        is_recursive_call = _seen is not None\\n        if _seen is None:\\n            _seen = set()\\n        _seen.add(id(exc_value))\\n\\n        self.max_group_width = max_group_width\\n        self.max_group_depth = max_group_depth\\n\\n        self.stack = StackSummary._extract_from_extended_frame_gen(\\n            _walk_tb_with_full_positions(exc_traceback),\\n            limit=limit, lookup_lines=lookup_lines,\\n            capture_locals=capture_locals)\\n        self.exc_type = exc_type\\n        # Capture now to permit freeing resources: only complication is in the\\n        # unofficial API _format_final_exc_line\\n        self._str = _safe_string(exc_value, 'exception')\\n        try:\\n            self.__notes__ = getattr(exc_value, '__notes__', None)\\n        except Exception as e:\\n            self.__notes__ = [\\n                f'Ignored error getting __notes__: {_safe_string(e, '__notes__', repr)}']\\n\\n        if exc_type and issubclass(exc_type, SyntaxError):\\n            # Handle SyntaxError's specially\\n            self.filename = exc_value.filename\\n            lno = exc_value.lineno\\n            self.lineno = str(lno) if lno is not None else None\\n            end_lno = exc_value.end_lineno\\n            self.end_lineno = str(end_lno) if end_lno is not None else None\\n            self.text = exc_value.text\\n            self.offset = exc_value.offset\\n            self.end_offset = exc_value.end_offset\\n            self.msg = exc_value.msg\\n        elif exc_type and issubclass(exc_type, ImportError) and \\\\\\n                getattr(exc_value, \\\"name_from\\\", None) is not None:\\n            wrong_name = getattr(exc_value, \\\"name_from\\\", None)\\n            suggestion = _compute_suggestion_error(exc_value, exc_traceback, wrong_name)\\n            if suggestion:\\n                self._str += f\\\". Did you mean: '{suggestion}'?\\\"\\n        elif exc_type and issubclass(exc_type, (NameError, AttributeError)) and \\\\\\n                getattr(exc_value, \\\"name\\\", None) is not None:\\n            wrong_name = getattr(exc_value, \\\"name\\\", None)\\n            suggestion = _compute_suggestion_error(exc_value, exc_traceback, wrong_name)\\n            if suggestion:\\n                self._str += f\\\". Did you mean: '{suggestion}'?\\\"\\n            if issubclass(exc_type, NameError):\\n                wrong_name = getattr(exc_value, \\\"name\\\", None)\\n                if wrong_name is not None and wrong_name in sys.stdlib_module_names:\\n                    if suggestion:\\n                        self._str += f\\\" Or did you forget to import '{wrong_name}'\\\"\\n                    else:\\n                        self._str += f\\\". Did you forget to import '{wrong_name}'\\\"\\n        if lookup_lines:\\n            self._load_lines()\\n        self.__suppress_context__ = \\\\\\n            exc_value.__suppress_context__ if exc_value is not None else False\\n\\n        # Convert __cause__ and __context__ to `TracebackExceptions`s, use a\\n        # queue to avoid recursion (only the top-level call gets _seen == None)\\n        if not is_recursive_call:\\n            queue = [(self, exc_value)]\\n            while queue:\\n                te, e = queue.pop()\\n                if (e and e.__cause__ is not None\\n                    and id(e.__cause__) not in _seen):\\n                    cause = TracebackException(\\n                        type(e.__cause__),\\n                        e.__cause__,\\n                        e.__cause__.__traceback__,\\n                        limit=limit,\\n                        lookup_lines=lookup_lines,\\n                        capture_locals=capture_locals,\\n                        max_group_width=max_group_width,\\n                        max_group_depth=max_group_depth,\\n                        _seen=_seen)\\n                else:\\n                    cause = None\\n\\n                if compact:\\n                    need_context = (cause is None and\\n                                    e is not None and\\n                                    not e.__suppress_context__)\\n                else:\\n                    need_context = True\\n                if (e and e.__context__ is not None\\n                    and need_context and id(e.__context__) not in _seen):\\n                    context = TracebackException(\\n                        type(e.__context__),\\n                        e.__context__,\\n                        e.__context__.__traceback__,\\n                        limit=limit,\\n                        lookup_lines=lookup_lines,\\n                        capture_locals=capture_locals,\\n                        max_group_width=max_group_width,\\n                        max_group_depth=max_group_depth,\\n                        _seen=_seen)\\n                else:\\n                    context = None\\n\\n                if e and isinstance(e, BaseExceptionGroup):\\n                    exceptions = []\\n                    for exc in e.exceptions:\\n                        texc = TracebackException(\\n                            type(exc),\\n                            exc,\\n                            exc.__traceback__,\\n                            limit=limit,\\n                            lookup_lines=lookup_lines,\\n                            capture_locals=capture_locals,\\n                            max_group_width=max_group_width,\\n                            max_group_depth=max_group_depth,\\n                            _seen=_seen)\\n                        exceptions.append(texc)\\n                else:\\n                    exceptions = None\\n\\n                te.__cause__ = cause\\n                te.__context__ = context\\n                te.exceptions = exceptions\\n                if cause:\\n                    queue.append((te.__cause__, e.__cause__))\\n                if context:\\n                    queue.append((te.__context__, e.__context__))\\n                if exceptions:\\n                    queue.extend(zip(te.exceptions, e.exceptions))\\n\\n    @classmethod\\n    def from_exception(cls, exc, *args, **kwargs):\\n        \\\"\\\"\\\"Create a TracebackException from an exception.\\\"\\\"\\\"\\n        return cls(type(exc), exc, exc.__traceback__, *args, **kwargs)\\n\\n    def _load_lines(self):\\n        \\\"\\\"\\\"Private API. force all lines in the stack to be loaded.\\\"\\\"\\\"\\n        for frame in self.stack:\\n            frame.line\\n\\n    def __eq__(self, other):\\n        if isinstance(other, TracebackException):\\n            return self.__dict__ == other.__dict__\\n        return NotImplemented\\n\\n    def __str__(self):\\n        return self._str\\n\\n    def format_exception_only(self):\\n        \\\"\\\"\\\"Format the exception part of the traceback.\\n\\n        The return value is a generator of strings, each ending in a newline.\\n\\n        Generator yields the exception message.\\n        For :exc:`SyntaxError` exceptions, it\\n        also yields (before the exception message)\\n        several lines that (when printed)\\n        display detailed information about where the syntax error occurred.\\n        Following the message, generator also yields\\n        all the exception's ``__notes__``.\\n        \\\"\\\"\\\"\\n        if self.exc_type is None:\\n            yield _format_final_exc_line(None, self._str)\\n            return\\n\\n        stype = self.exc_type.__qualname__\\n        smod = self.exc_type.__module__\\n        if smod not in (\\\"__main__\\\", \\\"builtins\\\"):\\n            if not isinstance(smod, str):\\n                smod = \\\"<unknown>\\\"\\n            stype = smod + '.' + stype\\n\\n        if not issubclass(self.exc_type, SyntaxError):\\n            yield _format_final_exc_line(stype, self._str)\\n        else:\\n            yield from self._format_syntax_error(stype)\\n\\n        if (\\n            isinstance(self.__notes__, collections.abc.Sequence)\\n            and not isinstance(self.__notes__, (str, bytes))\\n        ):\\n            for note in self.__notes__:\\n                note = _safe_string(note, 'note')\\n                yield from [l + '\\\\n' for l in note.split('\\\\n')]\\n        elif self.__notes__ is not None:\\n            yield \\\"{}\\\\n\\\".format(_safe_string(self.__notes__, '__notes__', func=repr))\\n\\n    def _format_syntax_error(self, stype):\\n        \\\"\\\"\\\"Format SyntaxError exceptions (internal helper).\\\"\\\"\\\"\\n        # Show exactly where the problem was found.\\n        filename_suffix = ''\\n        if self.lineno is not None:\\n            yield '  File \\\"{}\\\", line {}\\\\n'.format(\\n                self.filename or \\\"<string>\\\", self.lineno)\\n        elif self.filename is not None:\\n            filename_suffix = ' ({})'.format(self.filename)\\n\\n        text = self.text\\n        if text is not None:\\n            # text  = \\\"   foo\\\\n\\\"\\n            # rtext = \\\"   foo\\\"\\n            # ltext =    \\\"foo\\\"\\n            rtext = text.rstrip('\\\\n')\\n            ltext = rtext.lstrip(' \\\\n\\\\f')\\n            spaces = len(rtext) - len(ltext)\\n            yield '    {}\\\\n'.format(ltext)\\n\\n            if self.offset is not None:\\n                offset = self.offset\\n                end_offset = self.end_offset if self.end_offset not in {None, 0} else offset\\n                if offset == end_offset or end_offset == -1:\\n                    end_offset = offset + 1\\n\\n                # Convert 1-based column offset to 0-based index into stripped text\\n                colno = offset - 1 - spaces\\n                end_colno = end_offset - 1 - spaces\\n                if colno >= 0:\\n                    # non-space whitespace (likes tabs) must be kept for alignment\\n                    caretspace = ((c if c.isspace() else ' ') for c in ltext[:colno])\\n                    yield '    {}{}'.format(\\\"\\\".join(caretspace), ('^' * (end_colno - colno) + \\\"\\\\n\\\"))\\n        msg = self.msg or \\\"<no detail available>\\\"\\n        yield \\\"{}: {}{}\\\\n\\\".format(stype, msg, filename_suffix)\\n\\n    def format(self, *, chain=True, _ctx=None):\\n        \\\"\\\"\\\"Format the exception.\\n\\n        If chain is not *True*, *__cause__* and *__context__* will not be formatted.\\n\\n        The return value is a generator of strings, each ending in a newline and\\n        some containing internal newlines. `print_exception` is a wrapper around\\n        this method which just prints the lines to a file.\\n\\n        The message indicating which exception occurred is always the last\\n        string in the output.\\n        \\\"\\\"\\\"\\n\\n        if _ctx is None:\\n            _ctx = _ExceptionPrintContext()\\n\\n        output = []\\n        exc = self\\n        if chain:\\n            while exc:\\n                if exc.__cause__ is not None:\\n                    chained_msg = _cause_message\\n                    chained_exc = exc.__cause__\\n                elif (exc.__context__  is not None and\\n                      not exc.__suppress_context__):\\n                    chained_msg = _context_message\\n                    chained_exc = exc.__context__\\n                else:\\n                    chained_msg = None\\n                    chained_exc = None\\n\\n                output.append((chained_msg, exc))\\n                exc = chained_exc\\n        else:\\n            output.append((None, exc))\\n\\n        for msg, exc in reversed(output):\\n            if msg is not None:\\n                yield from _ctx.emit(msg)\\n            if exc.exceptions is None:\\n                if exc.stack:\\n                    yield from _ctx.emit('Traceback (most recent call last):\\\\n')\\n                    yield from _ctx.emit(exc.stack.format())\\n                yield from _ctx.emit(exc.format_exception_only())\\n            elif _ctx.exception_group_depth > self.max_group_depth:\\n                # exception group, but depth exceeds limit\\n                yield from _ctx.emit(\\n                    f\\\"... (max_group_depth is {self.max_group_depth})\\\\n\\\")\\n            else:\\n                # format exception group\\n                is_toplevel = (_ctx.exception_group_depth == 0)\\n                if is_toplevel:\\n                    _ctx.exception_group_depth += 1\\n\\n                if exc.stack:\\n                    yield from _ctx.emit(\\n                        'Exception Group Traceback (most recent call last):\\\\n',\\n                        margin_char = '+' if is_toplevel else None)\\n                    yield from _ctx.emit(exc.stack.format())\\n\\n                yield from _ctx.emit(exc.format_exception_only())\\n                num_excs = len(exc.exceptions)\\n                if num_excs <= self.max_group_width:\\n                    n = num_excs\\n                else:\\n                    n = self.max_group_width + 1\\n                _ctx.need_close = False\\n                for i in range(n):\\n                    last_exc = (i == n-1)\\n                    if last_exc:\\n                        # The closing frame may be added by a recursive call\\n                        _ctx.need_close = True\\n\\n                    if self.max_group_width is not None:\\n                        truncated = (i >= self.max_group_width)\\n                    else:\\n                        truncated = False\\n                    title = f'{i+1}' if not truncated else '...'\\n                    yield (_ctx.indent() +\\n                           ('+-' if i==0 else '  ') +\\n                           f'+---------------- {title} ----------------\\\\n')\\n                    _ctx.exception_group_depth += 1\\n                    if not truncated:\\n                        yield from exc.exceptions[i].format(chain=chain, _ctx=_ctx)\\n                    else:\\n                        remaining = num_excs - self.max_group_width\\n                        plural = 's' if remaining > 1 else ''\\n                        yield from _ctx.emit(\\n                            f\\\"and {remaining} more exception{plural}\\\\n\\\")\\n\\n                    if last_exc and _ctx.need_close:\\n                        yield (_ctx.indent() +\\n                               \\\"+------------------------------------\\\\n\\\")\\n                        _ctx.need_close = False\\n                    _ctx.exception_group_depth -= 1\\n\\n                if is_toplevel:\\n                    assert _ctx.exception_group_depth == 1\\n                    _ctx.exception_group_depth = 0\\n\\n\\n    def print(self, *, file=None, chain=True):\\n        \\\"\\\"\\\"Print the result of self.format(chain=chain) to 'file'.\\\"\\\"\\\"\\n        if file is None:\\n            file = sys.stderr\\n        for line in self.format(chain=chain):\\n            print(line, file=file, end=\\\"\\\")\\n\\n\\n_MAX_CANDIDATE_ITEMS = 750\\n_MAX_STRING_SIZE = 40\\n_MOVE_COST = 2\\n_CASE_COST = 1\\n\\n\\ndef _substitution_cost(ch_a, ch_b):\\n    if ch_a == ch_b:\\n        return 0\\n    if ch_a.lower() == ch_b.lower():\\n        return _CASE_COST\\n    return _MOVE_COST\\n\\n\\ndef _compute_suggestion_error(exc_value, tb, wrong_name):\\n    if wrong_name is None or not isinstance(wrong_name, str):\\n        return None\\n    if isinstance(exc_value, AttributeError):\\n        obj = exc_value.obj\\n        try:\\n            d = dir(obj)\\n        except Exception:\\n            return None\\n    elif isinstance(exc_value, ImportError):\\n        try:\\n            mod = __import__(exc_value.name)\\n            d = dir(mod)\\n        except Exception:\\n            return None\\n    else:\\n        assert isinstance(exc_value, NameError)\\n        # find most recent frame\\n        if tb is None:\\n            return None\\n        while tb.tb_next is not None:\\n            tb = tb.tb_next\\n        frame = tb.tb_frame\\n        d = (\\n            list(frame.f_locals)\\n            + list(frame.f_globals)\\n            + list(frame.f_builtins)\\n        )\\n\\n        # Check first if we are in a method and the instance\\n        # has the wrong name as attribute\\n        if 'self' in frame.f_locals:\\n            self = frame.f_locals['self']\\n            if hasattr(self, wrong_name):\\n                return f\\\"self.{wrong_name}\\\"\\n\\n    # Compute closest match\\n\\n    if len(d) > _MAX_CANDIDATE_ITEMS:\\n        return None\\n    wrong_name_len = len(wrong_name)\\n    if wrong_name_len > _MAX_STRING_SIZE:\\n        return None\\n    best_distance = wrong_name_len\\n    suggestion = None\\n    for possible_name in d:\\n        if possible_name == wrong_name:\\n            # A missing attribute is \\\"found\\\". Don't suggest it (see GH-88821).\\n            continue\\n        # No more than 1/3 of the involved characters should need changed.\\n        max_distance = (len(possible_name) + wrong_name_len + 3) * _MOVE_COST // 6\\n        # Don't take matches we've already beaten.\\n        max_distance = min(max_distance, best_distance - 1)\\n        current_distance = _levenshtein_distance(wrong_name, possible_name, max_distance)\\n        if current_distance > max_distance:\\n            continue\\n        if not suggestion or current_distance < best_distance:\\n            suggestion = possible_name\\n            best_distance = current_distance\\n    return suggestion\\n\\n\\ndef _levenshtein_distance(a, b, max_cost):\\n    # A Python implementation of Python/suggestions.c:levenshtein_distance.\\n\\n    # Both strings are the same\\n    if a == b:\\n        return 0\\n\\n    # Trim away common affixes\\n    pre = 0\\n    while a[pre:] and b[pre:] and a[pre] == b[pre]:\\n        pre += 1\\n    a = a[pre:]\\n    b = b[pre:]\\n    post = 0\\n    while a[:post or None] and b[:post or None] and a[post-1] == b[post-1]:\\n        post -= 1\\n    a = a[:post or None]\\n    b = b[:post or None]\\n    if not a or not b:\\n        return _MOVE_COST * (len(a) + len(b))\\n    if len(a) > _MAX_STRING_SIZE or len(b) > _MAX_STRING_SIZE:\\n        return max_cost + 1\\n\\n    # Prefer shorter buffer\\n    if len(b) < len(a):\\n        a, b = b, a\\n\\n    # Quick fail when a match is impossible\\n    if (len(b) - len(a)) * _MOVE_COST > max_cost:\\n        return max_cost + 1\\n\\n    # Instead of producing the whole traditional len(a)-by-len(b)\\n    # matrix, we can update just one row in place.\\n    # Initialize the buffer row\\n    row = list(range(_MOVE_COST, _MOVE_COST * (len(a) + 1), _MOVE_COST))\\n\\n    result = 0\\n    for bindex in range(len(b)):\\n        bchar = b[bindex]\\n        distance = result = bindex * _MOVE_COST\\n        minimum = sys.maxsize\\n        for index in range(len(a)):\\n            # 1) Previous distance in this row is cost(b[:b_index], a[:index])\\n            substitute = distance + _substitution_cost(bchar, a[index])\\n            # 2) cost(b[:b_index], a[:index+1]) from previous row\\n            distance = row[index]\\n            # 3) existing result is cost(b[:b_index+1], a[index])\\n\\n            insert_delete = min(result, distance) + _MOVE_COST\\n            result = min(insert_delete, substitute)\\n\\n            # cost(b[:b_index+1], a[:index+1])\\n            row[index] = result\\n            if result < minimum:\\n                minimum = result\\n        if minimum > max_cost:\\n            # Everything in this row is too big, so bail early.\\n            return max_cost + 1\\n    return result\\n\", 1187], \"/usr/lib/python3.12/collections/__init__.py\": [\"'''This module implements specialized container datatypes providing\\nalternatives to Python's general purpose built-in containers, dict,\\nlist, set, and tuple.\\n\\n* namedtuple   factory function for creating tuple subclasses with named fields\\n* deque        list-like container with fast appends and pops on either end\\n* ChainMap     dict-like class for creating a single view of multiple mappings\\n* Counter      dict subclass for counting hashable objects\\n* OrderedDict  dict subclass that remembers the order entries were added\\n* defaultdict  dict subclass that calls a factory function to supply missing values\\n* UserDict     wrapper around dictionary objects for easier dict subclassing\\n* UserList     wrapper around list objects for easier list subclassing\\n* UserString   wrapper around string objects for easier string subclassing\\n\\n'''\\n\\n__all__ = [\\n    'ChainMap',\\n    'Counter',\\n    'OrderedDict',\\n    'UserDict',\\n    'UserList',\\n    'UserString',\\n    'defaultdict',\\n    'deque',\\n    'namedtuple',\\n]\\n\\nimport _collections_abc\\nimport sys as _sys\\n\\nfrom itertools import chain as _chain\\nfrom itertools import repeat as _repeat\\nfrom itertools import starmap as _starmap\\nfrom keyword import iskeyword as _iskeyword\\nfrom operator import eq as _eq\\nfrom operator import itemgetter as _itemgetter\\nfrom reprlib import recursive_repr as _recursive_repr\\nfrom _weakref import proxy as _proxy\\n\\ntry:\\n    from _collections import deque\\nexcept ImportError:\\n    pass\\nelse:\\n    _collections_abc.MutableSequence.register(deque)\\n\\ntry:\\n    from _collections import _deque_iterator\\nexcept ImportError:\\n    pass\\n\\ntry:\\n    from _collections import defaultdict\\nexcept ImportError:\\n    pass\\n\\n\\n################################################################################\\n### OrderedDict\\n################################################################################\\n\\nclass _OrderedDictKeysView(_collections_abc.KeysView):\\n\\n    def __reversed__(self):\\n        yield from reversed(self._mapping)\\n\\nclass _OrderedDictItemsView(_collections_abc.ItemsView):\\n\\n    def __reversed__(self):\\n        for key in reversed(self._mapping):\\n            yield (key, self._mapping[key])\\n\\nclass _OrderedDictValuesView(_collections_abc.ValuesView):\\n\\n    def __reversed__(self):\\n        for key in reversed(self._mapping):\\n            yield self._mapping[key]\\n\\nclass _Link(object):\\n    __slots__ = 'prev', 'next', 'key', '__weakref__'\\n\\nclass OrderedDict(dict):\\n    'Dictionary that remembers insertion order'\\n    # An inherited dict maps keys to values.\\n    # The inherited dict provides __getitem__, __len__, __contains__, and get.\\n    # The remaining methods are order-aware.\\n    # Big-O running times for all methods are the same as regular dictionaries.\\n\\n    # The internal self.__map dict maps keys to links in a doubly linked list.\\n    # The circular doubly linked list starts and ends with a sentinel element.\\n    # The sentinel element never gets deleted (this simplifies the algorithm).\\n    # The sentinel is in self.__hardroot with a weakref proxy in self.__root.\\n    # The prev links are weakref proxies (to prevent circular references).\\n    # Individual links are kept alive by the hard reference in self.__map.\\n    # Those hard references disappear when a key is deleted from an OrderedDict.\\n\\n    def __new__(cls, /, *args, **kwds):\\n        \\\"Create the ordered dict object and set up the underlying structures.\\\"\\n        self = dict.__new__(cls)\\n        self.__hardroot = _Link()\\n        self.__root = root = _proxy(self.__hardroot)\\n        root.prev = root.next = root\\n        self.__map = {}\\n        return self\\n\\n    def __init__(self, other=(), /, **kwds):\\n        '''Initialize an ordered dictionary.  The signature is the same as\\n        regular dictionaries.  Keyword argument order is preserved.\\n        '''\\n        self.__update(other, **kwds)\\n\\n    def __setitem__(self, key, value,\\n                    dict_setitem=dict.__setitem__, proxy=_proxy, Link=_Link):\\n        'od.__setitem__(i, y) <==> od[i]=y'\\n        # Setting a new item creates a new link at the end of the linked list,\\n        # and the inherited dictionary is updated with the new key/value pair.\\n        if key not in self:\\n            self.__map[key] = link = Link()\\n            root = self.__root\\n            last = root.prev\\n            link.prev, link.next, link.key = last, root, key\\n            last.next = link\\n            root.prev = proxy(link)\\n        dict_setitem(self, key, value)\\n\\n    def __delitem__(self, key, dict_delitem=dict.__delitem__):\\n        'od.__delitem__(y) <==> del od[y]'\\n        # Deleting an existing item uses self.__map to find the link which gets\\n        # removed by updating the links in the predecessor and successor nodes.\\n        dict_delitem(self, key)\\n        link = self.__map.pop(key)\\n        link_prev = link.prev\\n        link_next = link.next\\n        link_prev.next = link_next\\n        link_next.prev = link_prev\\n        link.prev = None\\n        link.next = None\\n\\n    def __iter__(self):\\n        'od.__iter__() <==> iter(od)'\\n        # Traverse the linked list in order.\\n        root = self.__root\\n        curr = root.next\\n        while curr is not root:\\n            yield curr.key\\n            curr = curr.next\\n\\n    def __reversed__(self):\\n        'od.__reversed__() <==> reversed(od)'\\n        # Traverse the linked list in reverse order.\\n        root = self.__root\\n        curr = root.prev\\n        while curr is not root:\\n            yield curr.key\\n            curr = curr.prev\\n\\n    def clear(self):\\n        'od.clear() -> None.  Remove all items from od.'\\n        root = self.__root\\n        root.prev = root.next = root\\n        self.__map.clear()\\n        dict.clear(self)\\n\\n    def popitem(self, last=True):\\n        '''Remove and return a (key, value) pair from the dictionary.\\n\\n        Pairs are returned in LIFO order if last is true or FIFO order if false.\\n        '''\\n        if not self:\\n            raise KeyError('dictionary is empty')\\n        root = self.__root\\n        if last:\\n            link = root.prev\\n            link_prev = link.prev\\n            link_prev.next = root\\n            root.prev = link_prev\\n        else:\\n            link = root.next\\n            link_next = link.next\\n            root.next = link_next\\n            link_next.prev = root\\n        key = link.key\\n        del self.__map[key]\\n        value = dict.pop(self, key)\\n        return key, value\\n\\n    def move_to_end(self, key, last=True):\\n        '''Move an existing element to the end (or beginning if last is false).\\n\\n        Raise KeyError if the element does not exist.\\n        '''\\n        link = self.__map[key]\\n        link_prev = link.prev\\n        link_next = link.next\\n        soft_link = link_next.prev\\n        link_prev.next = link_next\\n        link_next.prev = link_prev\\n        root = self.__root\\n        if last:\\n            last = root.prev\\n            link.prev = last\\n            link.next = root\\n            root.prev = soft_link\\n            last.next = link\\n        else:\\n            first = root.next\\n            link.prev = root\\n            link.next = first\\n            first.prev = soft_link\\n            root.next = link\\n\\n    def __sizeof__(self):\\n        sizeof = _sys.getsizeof\\n        n = len(self) + 1                       # number of links including root\\n        size = sizeof(self.__dict__)            # instance dictionary\\n        size += sizeof(self.__map) * 2          # internal dict and inherited dict\\n        size += sizeof(self.__hardroot) * n     # link objects\\n        size += sizeof(self.__root) * n         # proxy objects\\n        return size\\n\\n    update = __update = _collections_abc.MutableMapping.update\\n\\n    def keys(self):\\n        \\\"D.keys() -> a set-like object providing a view on D's keys\\\"\\n        return _OrderedDictKeysView(self)\\n\\n    def items(self):\\n        \\\"D.items() -> a set-like object providing a view on D's items\\\"\\n        return _OrderedDictItemsView(self)\\n\\n    def values(self):\\n        \\\"D.values() -> an object providing a view on D's values\\\"\\n        return _OrderedDictValuesView(self)\\n\\n    __ne__ = _collections_abc.MutableMapping.__ne__\\n\\n    __marker = object()\\n\\n    def pop(self, key, default=__marker):\\n        '''od.pop(k[,d]) -> v, remove specified key and return the corresponding\\n        value.  If key is not found, d is returned if given, otherwise KeyError\\n        is raised.\\n\\n        '''\\n        marker = self.__marker\\n        result = dict.pop(self, key, marker)\\n        if result is not marker:\\n            # The same as in __delitem__().\\n            link = self.__map.pop(key)\\n            link_prev = link.prev\\n            link_next = link.next\\n            link_prev.next = link_next\\n            link_next.prev = link_prev\\n            link.prev = None\\n            link.next = None\\n            return result\\n        if default is marker:\\n            raise KeyError(key)\\n        return default\\n\\n    def setdefault(self, key, default=None):\\n        '''Insert key with a value of default if key is not in the dictionary.\\n\\n        Return the value for key if key is in the dictionary, else default.\\n        '''\\n        if key in self:\\n            return self[key]\\n        self[key] = default\\n        return default\\n\\n    @_recursive_repr()\\n    def __repr__(self):\\n        'od.__repr__() <==> repr(od)'\\n        if not self:\\n            return '%s()' % (self.__class__.__name__,)\\n        return '%s(%r)' % (self.__class__.__name__, dict(self.items()))\\n\\n    def __reduce__(self):\\n        'Return state information for pickling'\\n        state = self.__getstate__()\\n        if state:\\n            if isinstance(state, tuple):\\n                state, slots = state\\n            else:\\n                slots = {}\\n            state = state.copy()\\n            slots = slots.copy()\\n            for k in vars(OrderedDict()):\\n                state.pop(k, None)\\n                slots.pop(k, None)\\n            if slots:\\n                state = state, slots\\n            else:\\n                state = state or None\\n        return self.__class__, (), state, None, iter(self.items())\\n\\n    def copy(self):\\n        'od.copy() -> a shallow copy of od'\\n        return self.__class__(self)\\n\\n    @classmethod\\n    def fromkeys(cls, iterable, value=None):\\n        '''Create a new ordered dictionary with keys from iterable and values set to value.\\n        '''\\n        self = cls()\\n        for key in iterable:\\n            self[key] = value\\n        return self\\n\\n    def __eq__(self, other):\\n        '''od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive\\n        while comparison to a regular mapping is order-insensitive.\\n\\n        '''\\n        if isinstance(other, OrderedDict):\\n            return dict.__eq__(self, other) and all(map(_eq, self, other))\\n        return dict.__eq__(self, other)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if not isinstance(other, dict):\\n            return NotImplemented\\n        new = self.__class__(self)\\n        new.update(other)\\n        return new\\n\\n    def __ror__(self, other):\\n        if not isinstance(other, dict):\\n            return NotImplemented\\n        new = self.__class__(other)\\n        new.update(self)\\n        return new\\n\\n\\ntry:\\n    from _collections import OrderedDict\\nexcept ImportError:\\n    # Leave the pure Python version in place.\\n    pass\\n\\n\\n################################################################################\\n### namedtuple\\n################################################################################\\n\\ntry:\\n    from _collections import _tuplegetter\\nexcept ImportError:\\n    _tuplegetter = lambda index, doc: property(_itemgetter(index), doc=doc)\\n\\ndef namedtuple(typename, field_names, *, rename=False, defaults=None, module=None):\\n    \\\"\\\"\\\"Returns a new subclass of tuple with named fields.\\n\\n    >>> Point = namedtuple('Point', ['x', 'y'])\\n    >>> Point.__doc__                   # docstring for the new class\\n    'Point(x, y)'\\n    >>> p = Point(11, y=22)             # instantiate with positional args or keywords\\n    >>> p[0] + p[1]                     # indexable like a plain tuple\\n    33\\n    >>> x, y = p                        # unpack like a regular tuple\\n    >>> x, y\\n    (11, 22)\\n    >>> p.x + p.y                       # fields also accessible by name\\n    33\\n    >>> d = p._asdict()                 # convert to a dictionary\\n    >>> d['x']\\n    11\\n    >>> Point(**d)                      # convert from a dictionary\\n    Point(x=11, y=22)\\n    >>> p._replace(x=100)               # _replace() is like str.replace() but targets named fields\\n    Point(x=100, y=22)\\n\\n    \\\"\\\"\\\"\\n\\n    # Validate the field names.  At the user's option, either generate an error\\n    # message or automatically replace the field name with a valid name.\\n    if isinstance(field_names, str):\\n        field_names = field_names.replace(',', ' ').split()\\n    field_names = list(map(str, field_names))\\n    typename = _sys.intern(str(typename))\\n\\n    if rename:\\n        seen = set()\\n        for index, name in enumerate(field_names):\\n            if (not name.isidentifier()\\n                or _iskeyword(name)\\n                or name.startswith('_')\\n                or name in seen):\\n                field_names[index] = f'_{index}'\\n            seen.add(name)\\n\\n    for name in [typename] + field_names:\\n        if type(name) is not str:\\n            raise TypeError('Type names and field names must be strings')\\n        if not name.isidentifier():\\n            raise ValueError('Type names and field names must be valid '\\n                             f'identifiers: {name!r}')\\n        if _iskeyword(name):\\n            raise ValueError('Type names and field names cannot be a '\\n                             f'keyword: {name!r}')\\n\\n    seen = set()\\n    for name in field_names:\\n        if name.startswith('_') and not rename:\\n            raise ValueError('Field names cannot start with an underscore: '\\n                             f'{name!r}')\\n        if name in seen:\\n            raise ValueError(f'Encountered duplicate field name: {name!r}')\\n        seen.add(name)\\n\\n    field_defaults = {}\\n    if defaults is not None:\\n        defaults = tuple(defaults)\\n        if len(defaults) > len(field_names):\\n            raise TypeError('Got more default values than field names')\\n        field_defaults = dict(reversed(list(zip(reversed(field_names),\\n                                                reversed(defaults)))))\\n\\n    # Variables used in the methods and docstrings\\n    field_names = tuple(map(_sys.intern, field_names))\\n    num_fields = len(field_names)\\n    arg_list = ', '.join(field_names)\\n    if num_fields == 1:\\n        arg_list += ','\\n    repr_fmt = '(' + ', '.join(f'{name}=%r' for name in field_names) + ')'\\n    tuple_new = tuple.__new__\\n    _dict, _tuple, _len, _map, _zip = dict, tuple, len, map, zip\\n\\n    # Create all the named tuple methods to be added to the class namespace\\n\\n    namespace = {\\n        '_tuple_new': tuple_new,\\n        '__builtins__': {},\\n        '__name__': f'namedtuple_{typename}',\\n    }\\n    code = f'lambda _cls, {arg_list}: _tuple_new(_cls, ({arg_list}))'\\n    __new__ = eval(code, namespace)\\n    __new__.__name__ = '__new__'\\n    __new__.__doc__ = f'Create new instance of {typename}({arg_list})'\\n    if defaults is not None:\\n        __new__.__defaults__ = defaults\\n\\n    @classmethod\\n    def _make(cls, iterable):\\n        result = tuple_new(cls, iterable)\\n        if _len(result) != num_fields:\\n            raise TypeError(f'Expected {num_fields} arguments, got {len(result)}')\\n        return result\\n\\n    _make.__func__.__doc__ = (f'Make a new {typename} object from a sequence '\\n                              'or iterable')\\n\\n    def _replace(self, /, **kwds):\\n        result = self._make(_map(kwds.pop, field_names, self))\\n        if kwds:\\n            raise ValueError(f'Got unexpected field names: {list(kwds)!r}')\\n        return result\\n\\n    _replace.__doc__ = (f'Return a new {typename} object replacing specified '\\n                        'fields with new values')\\n\\n    def __repr__(self):\\n        'Return a nicely formatted representation string'\\n        return self.__class__.__name__ + repr_fmt % self\\n\\n    def _asdict(self):\\n        'Return a new dict which maps field names to their values.'\\n        return _dict(_zip(self._fields, self))\\n\\n    def __getnewargs__(self):\\n        'Return self as a plain tuple.  Used by copy and pickle.'\\n        return _tuple(self)\\n\\n    # Modify function metadata to help with introspection and debugging\\n    for method in (\\n        __new__,\\n        _make.__func__,\\n        _replace,\\n        __repr__,\\n        _asdict,\\n        __getnewargs__,\\n    ):\\n        method.__qualname__ = f'{typename}.{method.__name__}'\\n\\n    # Build-up the class namespace dictionary\\n    # and use type() to build the result class\\n    class_namespace = {\\n        '__doc__': f'{typename}({arg_list})',\\n        '__slots__': (),\\n        '_fields': field_names,\\n        '_field_defaults': field_defaults,\\n        '__new__': __new__,\\n        '_make': _make,\\n        '_replace': _replace,\\n        '__repr__': __repr__,\\n        '_asdict': _asdict,\\n        '__getnewargs__': __getnewargs__,\\n        '__match_args__': field_names,\\n    }\\n    for index, name in enumerate(field_names):\\n        doc = _sys.intern(f'Alias for field number {index}')\\n        class_namespace[name] = _tuplegetter(index, doc)\\n\\n    result = type(typename, (tuple,), class_namespace)\\n\\n    # For pickling to work, the __module__ variable needs to be set to the frame\\n    # where the named tuple is created.  Bypass this step in environments where\\n    # sys._getframe is not defined (Jython for example) or sys._getframe is not\\n    # defined for arguments greater than 0 (IronPython), or where the user has\\n    # specified a particular module.\\n    if module is None:\\n        try:\\n            module = _sys._getframemodulename(1) or '__main__'\\n        except AttributeError:\\n            try:\\n                module = _sys._getframe(1).f_globals.get('__name__', '__main__')\\n            except (AttributeError, ValueError):\\n                pass\\n    if module is not None:\\n        result.__module__ = module\\n\\n    return result\\n\\n\\n########################################################################\\n###  Counter\\n########################################################################\\n\\ndef _count_elements(mapping, iterable):\\n    'Tally elements from the iterable.'\\n    mapping_get = mapping.get\\n    for elem in iterable:\\n        mapping[elem] = mapping_get(elem, 0) + 1\\n\\ntry:                                    # Load C helper function if available\\n    from _collections import _count_elements\\nexcept ImportError:\\n    pass\\n\\nclass Counter(dict):\\n    '''Dict subclass for counting hashable items.  Sometimes called a bag\\n    or multiset.  Elements are stored as dictionary keys and their counts\\n    are stored as dictionary values.\\n\\n    >>> c = Counter('abcdeabcdabcaba')  # count elements from a string\\n\\n    >>> c.most_common(3)                # three most common elements\\n    [('a', 5), ('b', 4), ('c', 3)]\\n    >>> sorted(c)                       # list all unique elements\\n    ['a', 'b', 'c', 'd', 'e']\\n    >>> ''.join(sorted(c.elements()))   # list elements with repetitions\\n    'aaaaabbbbcccdde'\\n    >>> sum(c.values())                 # total of all counts\\n    15\\n\\n    >>> c['a']                          # count of letter 'a'\\n    5\\n    >>> for elem in 'shazam':           # update counts from an iterable\\n    ...     c[elem] += 1                # by adding 1 to each element's count\\n    >>> c['a']                          # now there are seven 'a'\\n    7\\n    >>> del c['b']                      # remove all 'b'\\n    >>> c['b']                          # now there are zero 'b'\\n    0\\n\\n    >>> d = Counter('simsalabim')       # make another counter\\n    >>> c.update(d)                     # add in the second counter\\n    >>> c['a']                          # now there are nine 'a'\\n    9\\n\\n    >>> c.clear()                       # empty the counter\\n    >>> c\\n    Counter()\\n\\n    Note:  If a count is set to zero or reduced to zero, it will remain\\n    in the counter until the entry is deleted or the counter is cleared:\\n\\n    >>> c = Counter('aaabbc')\\n    >>> c['b'] -= 2                     # reduce the count of 'b' by two\\n    >>> c.most_common()                 # 'b' is still in, but its count is zero\\n    [('a', 3), ('c', 1), ('b', 0)]\\n\\n    '''\\n    # References:\\n    #   http://en.wikipedia.org/wiki/Multiset\\n    #   http://www.gnu.org/software/smalltalk/manual-base/html_node/Bag.html\\n    #   http://www.demo2s.com/Tutorial/Cpp/0380__set-multiset/Catalog0380__set-multiset.htm\\n    #   http://code.activestate.com/recipes/259174/\\n    #   Knuth, TAOCP Vol. II section 4.6.3\\n\\n    def __init__(self, iterable=None, /, **kwds):\\n        '''Create a new, empty Counter object.  And if given, count elements\\n        from an input iterable.  Or, initialize the count from another mapping\\n        of elements to their counts.\\n\\n        >>> c = Counter()                           # a new, empty counter\\n        >>> c = Counter('gallahad')                 # a new counter from an iterable\\n        >>> c = Counter({'a': 4, 'b': 2})           # a new counter from a mapping\\n        >>> c = Counter(a=4, b=2)                   # a new counter from keyword args\\n\\n        '''\\n        super().__init__()\\n        self.update(iterable, **kwds)\\n\\n    def __missing__(self, key):\\n        'The count of elements not in the Counter is zero.'\\n        # Needed so that self[missing_item] does not raise KeyError\\n        return 0\\n\\n    def total(self):\\n        'Sum of the counts'\\n        return sum(self.values())\\n\\n    def most_common(self, n=None):\\n        '''List the n most common elements and their counts from the most\\n        common to the least.  If n is None, then list all element counts.\\n\\n        >>> Counter('abracadabra').most_common(3)\\n        [('a', 5), ('b', 2), ('r', 2)]\\n\\n        '''\\n        # Emulate Bag.sortedByCount from Smalltalk\\n        if n is None:\\n            return sorted(self.items(), key=_itemgetter(1), reverse=True)\\n\\n        # Lazy import to speedup Python startup time\\n        import heapq\\n        return heapq.nlargest(n, self.items(), key=_itemgetter(1))\\n\\n    def elements(self):\\n        '''Iterator over elements repeating each as many times as its count.\\n\\n        >>> c = Counter('ABCABC')\\n        >>> sorted(c.elements())\\n        ['A', 'A', 'B', 'B', 'C', 'C']\\n\\n        Knuth's example for prime factors of 1836:  2**2 * 3**3 * 17**1\\n\\n        >>> import math\\n        >>> prime_factors = Counter({2: 2, 3: 3, 17: 1})\\n        >>> math.prod(prime_factors.elements())\\n        1836\\n\\n        Note, if an element's count has been set to zero or is a negative\\n        number, elements() will ignore it.\\n\\n        '''\\n        # Emulate Bag.do from Smalltalk and Multiset.begin from C++.\\n        return _chain.from_iterable(_starmap(_repeat, self.items()))\\n\\n    # Override dict methods where necessary\\n\\n    @classmethod\\n    def fromkeys(cls, iterable, v=None):\\n        # There is no equivalent method for counters because the semantics\\n        # would be ambiguous in cases such as Counter.fromkeys('aaabbc', v=2).\\n        # Initializing counters to zero values isn't necessary because zero\\n        # is already the default value for counter lookups.  Initializing\\n        # to one is easily accomplished with Counter(set(iterable)).  For\\n        # more exotic cases, create a dictionary first using a dictionary\\n        # comprehension or dict.fromkeys().\\n        raise NotImplementedError(\\n            'Counter.fromkeys() is undefined.  Use Counter(iterable) instead.')\\n\\n    def update(self, iterable=None, /, **kwds):\\n        '''Like dict.update() but add counts instead of replacing them.\\n\\n        Source can be an iterable, a dictionary, or another Counter instance.\\n\\n        >>> c = Counter('which')\\n        >>> c.update('witch')           # add elements from another iterable\\n        >>> d = Counter('watch')\\n        >>> c.update(d)                 # add elements from another counter\\n        >>> c['h']                      # four 'h' in which, witch, and watch\\n        4\\n\\n        '''\\n        # The regular dict.update() operation makes no sense here because the\\n        # replace behavior results in some of the original untouched counts\\n        # being mixed-in with all of the other counts for a mismash that\\n        # doesn't have a straight-forward interpretation in most counting\\n        # contexts.  Instead, we implement straight-addition.  Both the inputs\\n        # and outputs are allowed to contain zero and negative counts.\\n\\n        if iterable is not None:\\n            if isinstance(iterable, _collections_abc.Mapping):\\n                if self:\\n                    self_get = self.get\\n                    for elem, count in iterable.items():\\n                        self[elem] = count + self_get(elem, 0)\\n                else:\\n                    # fast path when counter is empty\\n                    super().update(iterable)\\n            else:\\n                _count_elements(self, iterable)\\n        if kwds:\\n            self.update(kwds)\\n\\n    def subtract(self, iterable=None, /, **kwds):\\n        '''Like dict.update() but subtracts counts instead of replacing them.\\n        Counts can be reduced below zero.  Both the inputs and outputs are\\n        allowed to contain zero and negative counts.\\n\\n        Source can be an iterable, a dictionary, or another Counter instance.\\n\\n        >>> c = Counter('which')\\n        >>> c.subtract('witch')             # subtract elements from another iterable\\n        >>> c.subtract(Counter('watch'))    # subtract elements from another counter\\n        >>> c['h']                          # 2 in which, minus 1 in witch, minus 1 in watch\\n        0\\n        >>> c['w']                          # 1 in which, minus 1 in witch, minus 1 in watch\\n        -1\\n\\n        '''\\n        if iterable is not None:\\n            self_get = self.get\\n            if isinstance(iterable, _collections_abc.Mapping):\\n                for elem, count in iterable.items():\\n                    self[elem] = self_get(elem, 0) - count\\n            else:\\n                for elem in iterable:\\n                    self[elem] = self_get(elem, 0) - 1\\n        if kwds:\\n            self.subtract(kwds)\\n\\n    def copy(self):\\n        'Return a shallow copy.'\\n        return self.__class__(self)\\n\\n    def __reduce__(self):\\n        return self.__class__, (dict(self),)\\n\\n    def __delitem__(self, elem):\\n        'Like dict.__delitem__() but does not raise KeyError for missing values.'\\n        if elem in self:\\n            super().__delitem__(elem)\\n\\n    def __repr__(self):\\n        if not self:\\n            return f'{self.__class__.__name__}()'\\n        try:\\n            # dict() preserves the ordering returned by most_common()\\n            d = dict(self.most_common())\\n        except TypeError:\\n            # handle case where values are not orderable\\n            d = dict(self)\\n        return f'{self.__class__.__name__}({d!r})'\\n\\n    # Multiset-style mathematical operations discussed in:\\n    #       Knuth TAOCP Volume II section 4.6.3 exercise 19\\n    #       and at http://en.wikipedia.org/wiki/Multiset\\n    #\\n    # Outputs guaranteed to only include positive counts.\\n    #\\n    # To strip negative and zero counts, add-in an empty counter:\\n    #       c += Counter()\\n    #\\n    # Results are ordered according to when an element is first\\n    # encountered in the left operand and then by the order\\n    # encountered in the right operand.\\n    #\\n    # When the multiplicities are all zero or one, multiset operations\\n    # are guaranteed to be equivalent to the corresponding operations\\n    # for regular sets.\\n    #     Given counter multisets such as:\\n    #         cp = Counter(a=1, b=0, c=1)\\n    #         cq = Counter(c=1, d=0, e=1)\\n    #     The corresponding regular sets would be:\\n    #         sp = {'a', 'c'}\\n    #         sq = {'c', 'e'}\\n    #     All of the following relations would hold:\\n    #         set(cp + cq) == sp | sq\\n    #         set(cp - cq) == sp - sq\\n    #         set(cp | cq) == sp | sq\\n    #         set(cp & cq) == sp & sq\\n    #         (cp == cq) == (sp == sq)\\n    #         (cp != cq) == (sp != sq)\\n    #         (cp <= cq) == (sp <= sq)\\n    #         (cp < cq) == (sp < sq)\\n    #         (cp >= cq) == (sp >= sq)\\n    #         (cp > cq) == (sp > sq)\\n\\n    def __eq__(self, other):\\n        'True if all counts agree. Missing counts are treated as zero.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return all(self[e] == other[e] for c in (self, other) for e in c)\\n\\n    def __ne__(self, other):\\n        'True if any counts disagree. Missing counts are treated as zero.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return not self == other\\n\\n    def __le__(self, other):\\n        'True if all counts in self are a subset of those in other.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return all(self[e] <= other[e] for c in (self, other) for e in c)\\n\\n    def __lt__(self, other):\\n        'True if all counts in self are a proper subset of those in other.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return self <= other and self != other\\n\\n    def __ge__(self, other):\\n        'True if all counts in self are a superset of those in other.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return all(self[e] >= other[e] for c in (self, other) for e in c)\\n\\n    def __gt__(self, other):\\n        'True if all counts in self are a proper superset of those in other.'\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        return self >= other and self != other\\n\\n    def __add__(self, other):\\n        '''Add counts from two counters.\\n\\n        >>> Counter('abbb') + Counter('bcc')\\n        Counter({'b': 4, 'c': 2, 'a': 1})\\n\\n        '''\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        result = Counter()\\n        for elem, count in self.items():\\n            newcount = count + other[elem]\\n            if newcount > 0:\\n                result[elem] = newcount\\n        for elem, count in other.items():\\n            if elem not in self and count > 0:\\n                result[elem] = count\\n        return result\\n\\n    def __sub__(self, other):\\n        ''' Subtract count, but keep only results with positive counts.\\n\\n        >>> Counter('abbbc') - Counter('bccd')\\n        Counter({'b': 2, 'a': 1})\\n\\n        '''\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        result = Counter()\\n        for elem, count in self.items():\\n            newcount = count - other[elem]\\n            if newcount > 0:\\n                result[elem] = newcount\\n        for elem, count in other.items():\\n            if elem not in self and count < 0:\\n                result[elem] = 0 - count\\n        return result\\n\\n    def __or__(self, other):\\n        '''Union is the maximum of value in either of the input counters.\\n\\n        >>> Counter('abbb') | Counter('bcc')\\n        Counter({'b': 3, 'c': 2, 'a': 1})\\n\\n        '''\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        result = Counter()\\n        for elem, count in self.items():\\n            other_count = other[elem]\\n            newcount = other_count if count < other_count else count\\n            if newcount > 0:\\n                result[elem] = newcount\\n        for elem, count in other.items():\\n            if elem not in self and count > 0:\\n                result[elem] = count\\n        return result\\n\\n    def __and__(self, other):\\n        ''' Intersection is the minimum of corresponding counts.\\n\\n        >>> Counter('abbb') & Counter('bcc')\\n        Counter({'b': 1})\\n\\n        '''\\n        if not isinstance(other, Counter):\\n            return NotImplemented\\n        result = Counter()\\n        for elem, count in self.items():\\n            other_count = other[elem]\\n            newcount = count if count < other_count else other_count\\n            if newcount > 0:\\n                result[elem] = newcount\\n        return result\\n\\n    def __pos__(self):\\n        'Adds an empty counter, effectively stripping negative and zero counts'\\n        result = Counter()\\n        for elem, count in self.items():\\n            if count > 0:\\n                result[elem] = count\\n        return result\\n\\n    def __neg__(self):\\n        '''Subtracts from an empty counter.  Strips positive and zero counts,\\n        and flips the sign on negative counts.\\n\\n        '''\\n        result = Counter()\\n        for elem, count in self.items():\\n            if count < 0:\\n                result[elem] = 0 - count\\n        return result\\n\\n    def _keep_positive(self):\\n        '''Internal method to strip elements with a negative or zero count'''\\n        nonpositive = [elem for elem, count in self.items() if not count > 0]\\n        for elem in nonpositive:\\n            del self[elem]\\n        return self\\n\\n    def __iadd__(self, other):\\n        '''Inplace add from another counter, keeping only positive counts.\\n\\n        >>> c = Counter('abbb')\\n        >>> c += Counter('bcc')\\n        >>> c\\n        Counter({'b': 4, 'c': 2, 'a': 1})\\n\\n        '''\\n        for elem, count in other.items():\\n            self[elem] += count\\n        return self._keep_positive()\\n\\n    def __isub__(self, other):\\n        '''Inplace subtract counter, but keep only results with positive counts.\\n\\n        >>> c = Counter('abbbc')\\n        >>> c -= Counter('bccd')\\n        >>> c\\n        Counter({'b': 2, 'a': 1})\\n\\n        '''\\n        for elem, count in other.items():\\n            self[elem] -= count\\n        return self._keep_positive()\\n\\n    def __ior__(self, other):\\n        '''Inplace union is the maximum of value from either counter.\\n\\n        >>> c = Counter('abbb')\\n        >>> c |= Counter('bcc')\\n        >>> c\\n        Counter({'b': 3, 'c': 2, 'a': 1})\\n\\n        '''\\n        for elem, other_count in other.items():\\n            count = self[elem]\\n            if other_count > count:\\n                self[elem] = other_count\\n        return self._keep_positive()\\n\\n    def __iand__(self, other):\\n        '''Inplace intersection is the minimum of corresponding counts.\\n\\n        >>> c = Counter('abbb')\\n        >>> c &= Counter('bcc')\\n        >>> c\\n        Counter({'b': 1})\\n\\n        '''\\n        for elem, count in self.items():\\n            other_count = other[elem]\\n            if other_count < count:\\n                self[elem] = other_count\\n        return self._keep_positive()\\n\\n\\n########################################################################\\n###  ChainMap\\n########################################################################\\n\\nclass ChainMap(_collections_abc.MutableMapping):\\n    ''' A ChainMap groups multiple dicts (or other mappings) together\\n    to create a single, updateable view.\\n\\n    The underlying mappings are stored in a list.  That list is public and can\\n    be accessed or updated using the *maps* attribute.  There is no other\\n    state.\\n\\n    Lookups search the underlying mappings successively until a key is found.\\n    In contrast, writes, updates, and deletions only operate on the first\\n    mapping.\\n\\n    '''\\n\\n    def __init__(self, *maps):\\n        '''Initialize a ChainMap by setting *maps* to the given mappings.\\n        If no mappings are provided, a single empty dictionary is used.\\n\\n        '''\\n        self.maps = list(maps) or [{}]          # always at least one map\\n\\n    def __missing__(self, key):\\n        raise KeyError(key)\\n\\n    def __getitem__(self, key):\\n        for mapping in self.maps:\\n            try:\\n                return mapping[key]             # can't use 'key in mapping' with defaultdict\\n            except KeyError:\\n                pass\\n        return self.__missing__(key)            # support subclasses that define __missing__\\n\\n    def get(self, key, default=None):\\n        return self[key] if key in self else default\\n\\n    def __len__(self):\\n        return len(set().union(*self.maps))     # reuses stored hash values if possible\\n\\n    def __iter__(self):\\n        d = {}\\n        for mapping in map(dict.fromkeys, reversed(self.maps)):\\n            d |= mapping                        # reuses stored hash values if possible\\n        return iter(d)\\n\\n    def __contains__(self, key):\\n        return any(key in m for m in self.maps)\\n\\n    def __bool__(self):\\n        return any(self.maps)\\n\\n    @_recursive_repr()\\n    def __repr__(self):\\n        return f'{self.__class__.__name__}({\\\", \\\".join(map(repr, self.maps))})'\\n\\n    @classmethod\\n    def fromkeys(cls, iterable, *args):\\n        'Create a ChainMap with a single dict created from the iterable.'\\n        return cls(dict.fromkeys(iterable, *args))\\n\\n    def copy(self):\\n        'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]'\\n        return self.__class__(self.maps[0].copy(), *self.maps[1:])\\n\\n    __copy__ = copy\\n\\n    def new_child(self, m=None, **kwargs):      # like Django's Context.push()\\n        '''New ChainMap with a new map followed by all previous maps.\\n        If no map is provided, an empty dict is used.\\n        Keyword arguments update the map or new empty dict.\\n        '''\\n        if m is None:\\n            m = kwargs\\n        elif kwargs:\\n            m.update(kwargs)\\n        return self.__class__(m, *self.maps)\\n\\n    @property\\n    def parents(self):                          # like Django's Context.pop()\\n        'New ChainMap from maps[1:].'\\n        return self.__class__(*self.maps[1:])\\n\\n    def __setitem__(self, key, value):\\n        self.maps[0][key] = value\\n\\n    def __delitem__(self, key):\\n        try:\\n            del self.maps[0][key]\\n        except KeyError:\\n            raise KeyError(f'Key not found in the first mapping: {key!r}')\\n\\n    def popitem(self):\\n        'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.'\\n        try:\\n            return self.maps[0].popitem()\\n        except KeyError:\\n            raise KeyError('No keys found in the first mapping.')\\n\\n    def pop(self, key, *args):\\n        'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].'\\n        try:\\n            return self.maps[0].pop(key, *args)\\n        except KeyError:\\n            raise KeyError(f'Key not found in the first mapping: {key!r}')\\n\\n    def clear(self):\\n        'Clear maps[0], leaving maps[1:] intact.'\\n        self.maps[0].clear()\\n\\n    def __ior__(self, other):\\n        self.maps[0].update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if not isinstance(other, _collections_abc.Mapping):\\n            return NotImplemented\\n        m = self.copy()\\n        m.maps[0].update(other)\\n        return m\\n\\n    def __ror__(self, other):\\n        if not isinstance(other, _collections_abc.Mapping):\\n            return NotImplemented\\n        m = dict(other)\\n        for child in reversed(self.maps):\\n            m.update(child)\\n        return self.__class__(m)\\n\\n\\n################################################################################\\n### UserDict\\n################################################################################\\n\\nclass UserDict(_collections_abc.MutableMapping):\\n\\n    # Start by filling-out the abstract methods\\n    def __init__(self, dict=None, /, **kwargs):\\n        self.data = {}\\n        if dict is not None:\\n            self.update(dict)\\n        if kwargs:\\n            self.update(kwargs)\\n\\n    def __len__(self):\\n        return len(self.data)\\n\\n    def __getitem__(self, key):\\n        if key in self.data:\\n            return self.data[key]\\n        if hasattr(self.__class__, \\\"__missing__\\\"):\\n            return self.__class__.__missing__(self, key)\\n        raise KeyError(key)\\n\\n    def __setitem__(self, key, item):\\n        self.data[key] = item\\n\\n    def __delitem__(self, key):\\n        del self.data[key]\\n\\n    def __iter__(self):\\n        return iter(self.data)\\n\\n    # Modify __contains__ and get() to work like dict\\n    # does when __missing__ is present.\\n    def __contains__(self, key):\\n        return key in self.data\\n\\n    def get(self, key, default=None):\\n        if key in self:\\n            return self[key]\\n        return default\\n\\n\\n    # Now, add the methods in dicts but not in MutableMapping\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    def __or__(self, other):\\n        if isinstance(other, UserDict):\\n            return self.__class__(self.data | other.data)\\n        if isinstance(other, dict):\\n            return self.__class__(self.data | other)\\n        return NotImplemented\\n\\n    def __ror__(self, other):\\n        if isinstance(other, UserDict):\\n            return self.__class__(other.data | self.data)\\n        if isinstance(other, dict):\\n            return self.__class__(other | self.data)\\n        return NotImplemented\\n\\n    def __ior__(self, other):\\n        if isinstance(other, UserDict):\\n            self.data |= other.data\\n        else:\\n            self.data |= other\\n        return self\\n\\n    def __copy__(self):\\n        inst = self.__class__.__new__(self.__class__)\\n        inst.__dict__.update(self.__dict__)\\n        # Create a copy and avoid triggering descriptors\\n        inst.__dict__[\\\"data\\\"] = self.__dict__[\\\"data\\\"].copy()\\n        return inst\\n\\n    def copy(self):\\n        if self.__class__ is UserDict:\\n            return UserDict(self.data.copy())\\n        import copy\\n        data = self.data\\n        try:\\n            self.data = {}\\n            c = copy.copy(self)\\n        finally:\\n            self.data = data\\n        c.update(self)\\n        return c\\n\\n    @classmethod\\n    def fromkeys(cls, iterable, value=None):\\n        d = cls()\\n        for key in iterable:\\n            d[key] = value\\n        return d\\n\\n\\n################################################################################\\n### UserList\\n################################################################################\\n\\nclass UserList(_collections_abc.MutableSequence):\\n    \\\"\\\"\\\"A more or less complete user-defined wrapper around list objects.\\\"\\\"\\\"\\n\\n    def __init__(self, initlist=None):\\n        self.data = []\\n        if initlist is not None:\\n            # XXX should this accept an arbitrary sequence?\\n            if type(initlist) == type(self.data):\\n                self.data[:] = initlist\\n            elif isinstance(initlist, UserList):\\n                self.data[:] = initlist.data[:]\\n            else:\\n                self.data = list(initlist)\\n\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    def __lt__(self, other):\\n        return self.data < self.__cast(other)\\n\\n    def __le__(self, other):\\n        return self.data <= self.__cast(other)\\n\\n    def __eq__(self, other):\\n        return self.data == self.__cast(other)\\n\\n    def __gt__(self, other):\\n        return self.data > self.__cast(other)\\n\\n    def __ge__(self, other):\\n        return self.data >= self.__cast(other)\\n\\n    def __cast(self, other):\\n        return other.data if isinstance(other, UserList) else other\\n\\n    def __contains__(self, item):\\n        return item in self.data\\n\\n    def __len__(self):\\n        return len(self.data)\\n\\n    def __getitem__(self, i):\\n        if isinstance(i, slice):\\n            return self.__class__(self.data[i])\\n        else:\\n            return self.data[i]\\n\\n    def __setitem__(self, i, item):\\n        self.data[i] = item\\n\\n    def __delitem__(self, i):\\n        del self.data[i]\\n\\n    def __add__(self, other):\\n        if isinstance(other, UserList):\\n            return self.__class__(self.data + other.data)\\n        elif isinstance(other, type(self.data)):\\n            return self.__class__(self.data + other)\\n        return self.__class__(self.data + list(other))\\n\\n    def __radd__(self, other):\\n        if isinstance(other, UserList):\\n            return self.__class__(other.data + self.data)\\n        elif isinstance(other, type(self.data)):\\n            return self.__class__(other + self.data)\\n        return self.__class__(list(other) + self.data)\\n\\n    def __iadd__(self, other):\\n        if isinstance(other, UserList):\\n            self.data += other.data\\n        elif isinstance(other, type(self.data)):\\n            self.data += other\\n        else:\\n            self.data += list(other)\\n        return self\\n\\n    def __mul__(self, n):\\n        return self.__class__(self.data * n)\\n\\n    __rmul__ = __mul__\\n\\n    def __imul__(self, n):\\n        self.data *= n\\n        return self\\n\\n    def __copy__(self):\\n        inst = self.__class__.__new__(self.__class__)\\n        inst.__dict__.update(self.__dict__)\\n        # Create a copy and avoid triggering descriptors\\n        inst.__dict__[\\\"data\\\"] = self.__dict__[\\\"data\\\"][:]\\n        return inst\\n\\n    def append(self, item):\\n        self.data.append(item)\\n\\n    def insert(self, i, item):\\n        self.data.insert(i, item)\\n\\n    def pop(self, i=-1):\\n        return self.data.pop(i)\\n\\n    def remove(self, item):\\n        self.data.remove(item)\\n\\n    def clear(self):\\n        self.data.clear()\\n\\n    def copy(self):\\n        return self.__class__(self)\\n\\n    def count(self, item):\\n        return self.data.count(item)\\n\\n    def index(self, item, *args):\\n        return self.data.index(item, *args)\\n\\n    def reverse(self):\\n        self.data.reverse()\\n\\n    def sort(self, /, *args, **kwds):\\n        self.data.sort(*args, **kwds)\\n\\n    def extend(self, other):\\n        if isinstance(other, UserList):\\n            self.data.extend(other.data)\\n        else:\\n            self.data.extend(other)\\n\\n\\n################################################################################\\n### UserString\\n################################################################################\\n\\nclass UserString(_collections_abc.Sequence):\\n\\n    def __init__(self, seq):\\n        if isinstance(seq, str):\\n            self.data = seq\\n        elif isinstance(seq, UserString):\\n            self.data = seq.data[:]\\n        else:\\n            self.data = str(seq)\\n\\n    def __str__(self):\\n        return str(self.data)\\n\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    def __int__(self):\\n        return int(self.data)\\n\\n    def __float__(self):\\n        return float(self.data)\\n\\n    def __complex__(self):\\n        return complex(self.data)\\n\\n    def __hash__(self):\\n        return hash(self.data)\\n\\n    def __getnewargs__(self):\\n        return (self.data[:],)\\n\\n    def __eq__(self, string):\\n        if isinstance(string, UserString):\\n            return self.data == string.data\\n        return self.data == string\\n\\n    def __lt__(self, string):\\n        if isinstance(string, UserString):\\n            return self.data < string.data\\n        return self.data < string\\n\\n    def __le__(self, string):\\n        if isinstance(string, UserString):\\n            return self.data <= string.data\\n        return self.data <= string\\n\\n    def __gt__(self, string):\\n        if isinstance(string, UserString):\\n            return self.data > string.data\\n        return self.data > string\\n\\n    def __ge__(self, string):\\n        if isinstance(string, UserString):\\n            return self.data >= string.data\\n        return self.data >= string\\n\\n    def __contains__(self, char):\\n        if isinstance(char, UserString):\\n            char = char.data\\n        return char in self.data\\n\\n    def __len__(self):\\n        return len(self.data)\\n\\n    def __getitem__(self, index):\\n        return self.__class__(self.data[index])\\n\\n    def __add__(self, other):\\n        if isinstance(other, UserString):\\n            return self.__class__(self.data + other.data)\\n        elif isinstance(other, str):\\n            return self.__class__(self.data + other)\\n        return self.__class__(self.data + str(other))\\n\\n    def __radd__(self, other):\\n        if isinstance(other, str):\\n            return self.__class__(other + self.data)\\n        return self.__class__(str(other) + self.data)\\n\\n    def __mul__(self, n):\\n        return self.__class__(self.data * n)\\n\\n    __rmul__ = __mul__\\n\\n    def __mod__(self, args):\\n        return self.__class__(self.data % args)\\n\\n    def __rmod__(self, template):\\n        return self.__class__(str(template) % self)\\n\\n    # the following methods are defined in alphabetical order:\\n    def capitalize(self):\\n        return self.__class__(self.data.capitalize())\\n\\n    def casefold(self):\\n        return self.__class__(self.data.casefold())\\n\\n    def center(self, width, *args):\\n        return self.__class__(self.data.center(width, *args))\\n\\n    def count(self, sub, start=0, end=_sys.maxsize):\\n        if isinstance(sub, UserString):\\n            sub = sub.data\\n        return self.data.count(sub, start, end)\\n\\n    def removeprefix(self, prefix, /):\\n        if isinstance(prefix, UserString):\\n            prefix = prefix.data\\n        return self.__class__(self.data.removeprefix(prefix))\\n\\n    def removesuffix(self, suffix, /):\\n        if isinstance(suffix, UserString):\\n            suffix = suffix.data\\n        return self.__class__(self.data.removesuffix(suffix))\\n\\n    def encode(self, encoding='utf-8', errors='strict'):\\n        encoding = 'utf-8' if encoding is None else encoding\\n        errors = 'strict' if errors is None else errors\\n        return self.data.encode(encoding, errors)\\n\\n    def endswith(self, suffix, start=0, end=_sys.maxsize):\\n        return self.data.endswith(suffix, start, end)\\n\\n    def expandtabs(self, tabsize=8):\\n        return self.__class__(self.data.expandtabs(tabsize))\\n\\n    def find(self, sub, start=0, end=_sys.maxsize):\\n        if isinstance(sub, UserString):\\n            sub = sub.data\\n        return self.data.find(sub, start, end)\\n\\n    def format(self, /, *args, **kwds):\\n        return self.data.format(*args, **kwds)\\n\\n    def format_map(self, mapping):\\n        return self.data.format_map(mapping)\\n\\n    def index(self, sub, start=0, end=_sys.maxsize):\\n        return self.data.index(sub, start, end)\\n\\n    def isalpha(self):\\n        return self.data.isalpha()\\n\\n    def isalnum(self):\\n        return self.data.isalnum()\\n\\n    def isascii(self):\\n        return self.data.isascii()\\n\\n    def isdecimal(self):\\n        return self.data.isdecimal()\\n\\n    def isdigit(self):\\n        return self.data.isdigit()\\n\\n    def isidentifier(self):\\n        return self.data.isidentifier()\\n\\n    def islower(self):\\n        return self.data.islower()\\n\\n    def isnumeric(self):\\n        return self.data.isnumeric()\\n\\n    def isprintable(self):\\n        return self.data.isprintable()\\n\\n    def isspace(self):\\n        return self.data.isspace()\\n\\n    def istitle(self):\\n        return self.data.istitle()\\n\\n    def isupper(self):\\n        return self.data.isupper()\\n\\n    def join(self, seq):\\n        return self.data.join(seq)\\n\\n    def ljust(self, width, *args):\\n        return self.__class__(self.data.ljust(width, *args))\\n\\n    def lower(self):\\n        return self.__class__(self.data.lower())\\n\\n    def lstrip(self, chars=None):\\n        return self.__class__(self.data.lstrip(chars))\\n\\n    maketrans = str.maketrans\\n\\n    def partition(self, sep):\\n        return self.data.partition(sep)\\n\\n    def replace(self, old, new, maxsplit=-1):\\n        if isinstance(old, UserString):\\n            old = old.data\\n        if isinstance(new, UserString):\\n            new = new.data\\n        return self.__class__(self.data.replace(old, new, maxsplit))\\n\\n    def rfind(self, sub, start=0, end=_sys.maxsize):\\n        if isinstance(sub, UserString):\\n            sub = sub.data\\n        return self.data.rfind(sub, start, end)\\n\\n    def rindex(self, sub, start=0, end=_sys.maxsize):\\n        return self.data.rindex(sub, start, end)\\n\\n    def rjust(self, width, *args):\\n        return self.__class__(self.data.rjust(width, *args))\\n\\n    def rpartition(self, sep):\\n        return self.data.rpartition(sep)\\n\\n    def rstrip(self, chars=None):\\n        return self.__class__(self.data.rstrip(chars))\\n\\n    def split(self, sep=None, maxsplit=-1):\\n        return self.data.split(sep, maxsplit)\\n\\n    def rsplit(self, sep=None, maxsplit=-1):\\n        return self.data.rsplit(sep, maxsplit)\\n\\n    def splitlines(self, keepends=False):\\n        return self.data.splitlines(keepends)\\n\\n    def startswith(self, prefix, start=0, end=_sys.maxsize):\\n        return self.data.startswith(prefix, start, end)\\n\\n    def strip(self, chars=None):\\n        return self.__class__(self.data.strip(chars))\\n\\n    def swapcase(self):\\n        return self.__class__(self.data.swapcase())\\n\\n    def title(self):\\n        return self.__class__(self.data.title())\\n\\n    def translate(self, *args):\\n        return self.__class__(self.data.translate(*args))\\n\\n    def upper(self):\\n        return self.__class__(self.data.upper())\\n\\n    def zfill(self, width):\\n        return self.__class__(self.data.zfill(width))\\n\", 1592], \"/usr/lib/python3.12/multiprocessing/context.py\": [\"import os\\nimport sys\\nimport threading\\n\\nfrom . import process\\nfrom . import reduction\\n\\n__all__ = ()\\n\\n#\\n# Exceptions\\n#\\n\\nclass ProcessError(Exception):\\n    pass\\n\\nclass BufferTooShort(ProcessError):\\n    pass\\n\\nclass TimeoutError(ProcessError):\\n    pass\\n\\nclass AuthenticationError(ProcessError):\\n    pass\\n\\n#\\n# Base type for contexts. Bound methods of an instance of this type are included in __all__ of __init__.py\\n#\\n\\nclass BaseContext(object):\\n\\n    ProcessError = ProcessError\\n    BufferTooShort = BufferTooShort\\n    TimeoutError = TimeoutError\\n    AuthenticationError = AuthenticationError\\n\\n    current_process = staticmethod(process.current_process)\\n    parent_process = staticmethod(process.parent_process)\\n    active_children = staticmethod(process.active_children)\\n\\n    def cpu_count(self):\\n        '''Returns the number of CPUs in the system'''\\n        num = os.cpu_count()\\n        if num is None:\\n            raise NotImplementedError('cannot determine number of cpus')\\n        else:\\n            return num\\n\\n    def Manager(self):\\n        '''Returns a manager associated with a running server process\\n\\n        The managers methods such as `Lock()`, `Condition()` and `Queue()`\\n        can be used to create shared objects.\\n        '''\\n        from .managers import SyncManager\\n        m = SyncManager(ctx=self.get_context())\\n        m.start()\\n        return m\\n\\n    def Pipe(self, duplex=True):\\n        '''Returns two connection object connected by a pipe'''\\n        from .connection import Pipe\\n        return Pipe(duplex)\\n\\n    def Lock(self):\\n        '''Returns a non-recursive lock object'''\\n        from .synchronize import Lock\\n        return Lock(ctx=self.get_context())\\n\\n    def RLock(self):\\n        '''Returns a recursive lock object'''\\n        from .synchronize import RLock\\n        return RLock(ctx=self.get_context())\\n\\n    def Condition(self, lock=None):\\n        '''Returns a condition object'''\\n        from .synchronize import Condition\\n        return Condition(lock, ctx=self.get_context())\\n\\n    def Semaphore(self, value=1):\\n        '''Returns a semaphore object'''\\n        from .synchronize import Semaphore\\n        return Semaphore(value, ctx=self.get_context())\\n\\n    def BoundedSemaphore(self, value=1):\\n        '''Returns a bounded semaphore object'''\\n        from .synchronize import BoundedSemaphore\\n        return BoundedSemaphore(value, ctx=self.get_context())\\n\\n    def Event(self):\\n        '''Returns an event object'''\\n        from .synchronize import Event\\n        return Event(ctx=self.get_context())\\n\\n    def Barrier(self, parties, action=None, timeout=None):\\n        '''Returns a barrier object'''\\n        from .synchronize import Barrier\\n        return Barrier(parties, action, timeout, ctx=self.get_context())\\n\\n    def Queue(self, maxsize=0):\\n        '''Returns a queue object'''\\n        from .queues import Queue\\n        return Queue(maxsize, ctx=self.get_context())\\n\\n    def JoinableQueue(self, maxsize=0):\\n        '''Returns a queue object'''\\n        from .queues import JoinableQueue\\n        return JoinableQueue(maxsize, ctx=self.get_context())\\n\\n    def SimpleQueue(self):\\n        '''Returns a queue object'''\\n        from .queues import SimpleQueue\\n        return SimpleQueue(ctx=self.get_context())\\n\\n    def Pool(self, processes=None, initializer=None, initargs=(),\\n             maxtasksperchild=None):\\n        '''Returns a process pool object'''\\n        from .pool import Pool\\n        return Pool(processes, initializer, initargs, maxtasksperchild,\\n                    context=self.get_context())\\n\\n    def RawValue(self, typecode_or_type, *args):\\n        '''Returns a shared object'''\\n        from .sharedctypes import RawValue\\n        return RawValue(typecode_or_type, *args)\\n\\n    def RawArray(self, typecode_or_type, size_or_initializer):\\n        '''Returns a shared array'''\\n        from .sharedctypes import RawArray\\n        return RawArray(typecode_or_type, size_or_initializer)\\n\\n    def Value(self, typecode_or_type, *args, lock=True):\\n        '''Returns a synchronized shared object'''\\n        from .sharedctypes import Value\\n        return Value(typecode_or_type, *args, lock=lock,\\n                     ctx=self.get_context())\\n\\n    def Array(self, typecode_or_type, size_or_initializer, *, lock=True):\\n        '''Returns a synchronized shared array'''\\n        from .sharedctypes import Array\\n        return Array(typecode_or_type, size_or_initializer, lock=lock,\\n                     ctx=self.get_context())\\n\\n    def freeze_support(self):\\n        '''Check whether this is a fake forked process in a frozen executable.\\n        If so then run code specified by commandline and exit.\\n        '''\\n        if sys.platform == 'win32' and getattr(sys, 'frozen', False):\\n            from .spawn import freeze_support\\n            freeze_support()\\n\\n    def get_logger(self):\\n        '''Return package logger -- if it does not already exist then\\n        it is created.\\n        '''\\n        from .util import get_logger\\n        return get_logger()\\n\\n    def log_to_stderr(self, level=None):\\n        '''Turn on logging and add a handler which prints to stderr'''\\n        from .util import log_to_stderr\\n        return log_to_stderr(level)\\n\\n    def allow_connection_pickling(self):\\n        '''Install support for sending connections and sockets\\n        between processes\\n        '''\\n        # This is undocumented.  In previous versions of multiprocessing\\n        # its only effect was to make socket objects inheritable on Windows.\\n        from . import connection\\n\\n    def set_executable(self, executable):\\n        '''Sets the path to a python.exe or pythonw.exe binary used to run\\n        child processes instead of sys.executable when using the 'spawn'\\n        start method.  Useful for people embedding Python.\\n        '''\\n        from .spawn import set_executable\\n        set_executable(executable)\\n\\n    def set_forkserver_preload(self, module_names):\\n        '''Set list of module names to try to load in forkserver process.\\n        This is really just a hint.\\n        '''\\n        from .forkserver import set_forkserver_preload\\n        set_forkserver_preload(module_names)\\n\\n    def get_context(self, method=None):\\n        if method is None:\\n            return self\\n        try:\\n            ctx = _concrete_contexts[method]\\n        except KeyError:\\n            raise ValueError('cannot find context for %r' % method) from None\\n        ctx._check_available()\\n        return ctx\\n\\n    def get_start_method(self, allow_none=False):\\n        return self._name\\n\\n    def set_start_method(self, method, force=False):\\n        raise ValueError('cannot set start method of concrete context')\\n\\n    @property\\n    def reducer(self):\\n        '''Controls how objects will be reduced to a form that can be\\n        shared with other processes.'''\\n        return globals().get('reduction')\\n\\n    @reducer.setter\\n    def reducer(self, reduction):\\n        globals()['reduction'] = reduction\\n\\n    def _check_available(self):\\n        pass\\n\\n#\\n# Type of default context -- underlying context can be set at most once\\n#\\n\\nclass Process(process.BaseProcess):\\n    _start_method = None\\n    @staticmethod\\n    def _Popen(process_obj):\\n        return _default_context.get_context().Process._Popen(process_obj)\\n\\n    @staticmethod\\n    def _after_fork():\\n        return _default_context.get_context().Process._after_fork()\\n\\nclass DefaultContext(BaseContext):\\n    Process = Process\\n\\n    def __init__(self, context):\\n        self._default_context = context\\n        self._actual_context = None\\n\\n    def get_context(self, method=None):\\n        if method is None:\\n            if self._actual_context is None:\\n                self._actual_context = self._default_context\\n            return self._actual_context\\n        else:\\n            return super().get_context(method)\\n\\n    def set_start_method(self, method, force=False):\\n        if self._actual_context is not None and not force:\\n            raise RuntimeError('context has already been set')\\n        if method is None and force:\\n            self._actual_context = None\\n            return\\n        self._actual_context = self.get_context(method)\\n\\n    def get_start_method(self, allow_none=False):\\n        if self._actual_context is None:\\n            if allow_none:\\n                return None\\n            self._actual_context = self._default_context\\n        return self._actual_context._name\\n\\n    def get_all_start_methods(self):\\n        \\\"\\\"\\\"Returns a list of the supported start methods, default first.\\\"\\\"\\\"\\n        if sys.platform == 'win32':\\n            return ['spawn']\\n        else:\\n            methods = ['spawn', 'fork'] if sys.platform == 'darwin' else ['fork', 'spawn']\\n            if reduction.HAVE_SEND_HANDLE:\\n                methods.append('forkserver')\\n            return methods\\n\\n\\n#\\n# Context types for fixed start method\\n#\\n\\nif sys.platform != 'win32':\\n\\n    class ForkProcess(process.BaseProcess):\\n        _start_method = 'fork'\\n        @staticmethod\\n        def _Popen(process_obj):\\n            from .popen_fork import Popen\\n            return Popen(process_obj)\\n\\n    class SpawnProcess(process.BaseProcess):\\n        _start_method = 'spawn'\\n        @staticmethod\\n        def _Popen(process_obj):\\n            from .popen_spawn_posix import Popen\\n            return Popen(process_obj)\\n\\n        @staticmethod\\n        def _after_fork():\\n            # process is spawned, nothing to do\\n            pass\\n\\n    class ForkServerProcess(process.BaseProcess):\\n        _start_method = 'forkserver'\\n        @staticmethod\\n        def _Popen(process_obj):\\n            from .popen_forkserver import Popen\\n            return Popen(process_obj)\\n\\n    class ForkContext(BaseContext):\\n        _name = 'fork'\\n        Process = ForkProcess\\n\\n    class SpawnContext(BaseContext):\\n        _name = 'spawn'\\n        Process = SpawnProcess\\n\\n    class ForkServerContext(BaseContext):\\n        _name = 'forkserver'\\n        Process = ForkServerProcess\\n        def _check_available(self):\\n            if not reduction.HAVE_SEND_HANDLE:\\n                raise ValueError('forkserver start method not available')\\n\\n    _concrete_contexts = {\\n        'fork': ForkContext(),\\n        'spawn': SpawnContext(),\\n        'forkserver': ForkServerContext(),\\n    }\\n    if sys.platform == 'darwin':\\n        # bpo-33725: running arbitrary code after fork() is no longer reliable\\n        # on macOS since macOS 10.14 (Mojave). Use spawn by default instead.\\n        _default_context = DefaultContext(_concrete_contexts['spawn'])\\n    else:\\n        _default_context = DefaultContext(_concrete_contexts['fork'])\\n\\nelse:\\n\\n    class SpawnProcess(process.BaseProcess):\\n        _start_method = 'spawn'\\n        @staticmethod\\n        def _Popen(process_obj):\\n            from .popen_spawn_win32 import Popen\\n            return Popen(process_obj)\\n\\n        @staticmethod\\n        def _after_fork():\\n            # process is spawned, nothing to do\\n            pass\\n\\n    class SpawnContext(BaseContext):\\n        _name = 'spawn'\\n        Process = SpawnProcess\\n\\n    _concrete_contexts = {\\n        'spawn': SpawnContext(),\\n    }\\n    _default_context = DefaultContext(_concrete_contexts['spawn'])\\n\\n#\\n# Force the start method\\n#\\n\\ndef _force_start_method(method):\\n    _default_context._actual_context = _concrete_contexts[method]\\n\\n#\\n# Check that the current thread is spawning a child process\\n#\\n\\n_tls = threading.local()\\n\\ndef get_spawning_popen():\\n    return getattr(_tls, 'spawning_popen', None)\\n\\ndef set_spawning_popen(popen):\\n    _tls.spawning_popen = popen\\n\\ndef assert_spawning(obj):\\n    if get_spawning_popen() is None:\\n        raise RuntimeError(\\n            '%s objects should only be shared between processes'\\n            ' through inheritance' % type(obj).__name__\\n            )\\n\", 377], \"/usr/lib/python3.12/random.py\": [\"\\\"\\\"\\\"Random variable generators.\\n\\n    bytes\\n    -----\\n           uniform bytes (values between 0 and 255)\\n\\n    integers\\n    --------\\n           uniform within range\\n\\n    sequences\\n    ---------\\n           pick random element\\n           pick random sample\\n           pick weighted random sample\\n           generate random permutation\\n\\n    distributions on the real line:\\n    ------------------------------\\n           uniform\\n           triangular\\n           normal (Gaussian)\\n           lognormal\\n           negative exponential\\n           gamma\\n           beta\\n           pareto\\n           Weibull\\n\\n    distributions on the circle (angles 0 to 2pi)\\n    ---------------------------------------------\\n           circular uniform\\n           von Mises\\n\\n    discrete distributions\\n    ----------------------\\n           binomial\\n\\n\\nGeneral notes on the underlying Mersenne Twister core generator:\\n\\n* The period is 2**19937-1.\\n* It is one of the most extensively tested generators in existence.\\n* The random() method is implemented in C, executes in a single Python step,\\n  and is, therefore, threadsafe.\\n\\n\\\"\\\"\\\"\\n\\n# Translated by Guido van Rossum from C source provided by\\n# Adrian Baddeley.  Adapted by Raymond Hettinger for use with\\n# the Mersenne Twister  and os.urandom() core generators.\\n\\nfrom warnings import warn as _warn\\nfrom math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil\\nfrom math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin\\nfrom math import tau as TWOPI, floor as _floor, isfinite as _isfinite\\nfrom math import lgamma as _lgamma, fabs as _fabs, log2 as _log2\\nfrom os import urandom as _urandom\\nfrom _collections_abc import Sequence as _Sequence\\nfrom operator import index as _index\\nfrom itertools import accumulate as _accumulate, repeat as _repeat\\nfrom bisect import bisect as _bisect\\nimport os as _os\\nimport _random\\n\\ntry:\\n    # hashlib is pretty heavy to load, try lean internal module first\\n    from _sha2 import sha512 as _sha512\\nexcept ImportError:\\n    # fallback to official implementation\\n    from hashlib import sha512 as _sha512\\n\\n__all__ = [\\n    \\\"Random\\\",\\n    \\\"SystemRandom\\\",\\n    \\\"betavariate\\\",\\n    \\\"binomialvariate\\\",\\n    \\\"choice\\\",\\n    \\\"choices\\\",\\n    \\\"expovariate\\\",\\n    \\\"gammavariate\\\",\\n    \\\"gauss\\\",\\n    \\\"getrandbits\\\",\\n    \\\"getstate\\\",\\n    \\\"lognormvariate\\\",\\n    \\\"normalvariate\\\",\\n    \\\"paretovariate\\\",\\n    \\\"randbytes\\\",\\n    \\\"randint\\\",\\n    \\\"random\\\",\\n    \\\"randrange\\\",\\n    \\\"sample\\\",\\n    \\\"seed\\\",\\n    \\\"setstate\\\",\\n    \\\"shuffle\\\",\\n    \\\"triangular\\\",\\n    \\\"uniform\\\",\\n    \\\"vonmisesvariate\\\",\\n    \\\"weibullvariate\\\",\\n]\\n\\nNV_MAGICCONST = 4 * _exp(-0.5) / _sqrt(2.0)\\nLOG4 = _log(4.0)\\nSG_MAGICCONST = 1.0 + _log(4.5)\\nBPF = 53        # Number of bits in a float\\nRECIP_BPF = 2 ** -BPF\\n_ONE = 1\\n\\n\\nclass Random(_random.Random):\\n    \\\"\\\"\\\"Random number generator base class used by bound module functions.\\n\\n    Used to instantiate instances of Random to get generators that don't\\n    share state.\\n\\n    Class Random can also be subclassed if you want to use a different basic\\n    generator of your own devising: in that case, override the following\\n    methods:  random(), seed(), getstate(), and setstate().\\n    Optionally, implement a getrandbits() method so that randrange()\\n    can cover arbitrarily large ranges.\\n\\n    \\\"\\\"\\\"\\n\\n    VERSION = 3     # used by getstate/setstate\\n\\n    def __init__(self, x=None):\\n        \\\"\\\"\\\"Initialize an instance.\\n\\n        Optional argument x controls seeding, as for Random.seed().\\n        \\\"\\\"\\\"\\n\\n        self.seed(x)\\n        self.gauss_next = None\\n\\n    def seed(self, a=None, version=2):\\n        \\\"\\\"\\\"Initialize internal state from a seed.\\n\\n        The only supported seed types are None, int, float,\\n        str, bytes, and bytearray.\\n\\n        None or no argument seeds from current time or from an operating\\n        system specific randomness source if available.\\n\\n        If *a* is an int, all bits are used.\\n\\n        For version 2 (the default), all of the bits are used if *a* is a str,\\n        bytes, or bytearray.  For version 1 (provided for reproducing random\\n        sequences from older versions of Python), the algorithm for str and\\n        bytes generates a narrower range of seeds.\\n\\n        \\\"\\\"\\\"\\n\\n        if version == 1 and isinstance(a, (str, bytes)):\\n            a = a.decode('latin-1') if isinstance(a, bytes) else a\\n            x = ord(a[0]) << 7 if a else 0\\n            for c in map(ord, a):\\n                x = ((1000003 * x) ^ c) & 0xFFFFFFFFFFFFFFFF\\n            x ^= len(a)\\n            a = -2 if x == -1 else x\\n\\n        elif version == 2 and isinstance(a, (str, bytes, bytearray)):\\n            if isinstance(a, str):\\n                a = a.encode()\\n            a = int.from_bytes(a + _sha512(a).digest())\\n\\n        elif not isinstance(a, (type(None), int, float, str, bytes, bytearray)):\\n            raise TypeError('The only supported seed types are: None,\\\\n'\\n                            'int, float, str, bytes, and bytearray.')\\n\\n        super().seed(a)\\n        self.gauss_next = None\\n\\n    def getstate(self):\\n        \\\"\\\"\\\"Return internal state; can be passed to setstate() later.\\\"\\\"\\\"\\n        return self.VERSION, super().getstate(), self.gauss_next\\n\\n    def setstate(self, state):\\n        \\\"\\\"\\\"Restore internal state from object returned by getstate().\\\"\\\"\\\"\\n        version = state[0]\\n        if version == 3:\\n            version, internalstate, self.gauss_next = state\\n            super().setstate(internalstate)\\n        elif version == 2:\\n            version, internalstate, self.gauss_next = state\\n            # In version 2, the state was saved as signed ints, which causes\\n            #   inconsistencies between 32/64-bit systems. The state is\\n            #   really unsigned 32-bit ints, so we convert negative ints from\\n            #   version 2 to positive longs for version 3.\\n            try:\\n                internalstate = tuple(x % (2 ** 32) for x in internalstate)\\n            except ValueError as e:\\n                raise TypeError from e\\n            super().setstate(internalstate)\\n        else:\\n            raise ValueError(\\\"state with version %s passed to \\\"\\n                             \\\"Random.setstate() of version %s\\\" %\\n                             (version, self.VERSION))\\n\\n\\n    ## -------------------------------------------------------\\n    ## ---- Methods below this point do not need to be overridden or extended\\n    ## ---- when subclassing for the purpose of using a different core generator.\\n\\n\\n    ## -------------------- pickle support  -------------------\\n\\n    # Issue 17489: Since __reduce__ was defined to fix #759889 this is no\\n    # longer called; we leave it here because it has been here since random was\\n    # rewritten back in 2001 and why risk breaking something.\\n    def __getstate__(self):  # for pickle\\n        return self.getstate()\\n\\n    def __setstate__(self, state):  # for pickle\\n        self.setstate(state)\\n\\n    def __reduce__(self):\\n        return self.__class__, (), self.getstate()\\n\\n\\n    ## ---- internal support method for evenly distributed integers ----\\n\\n    def __init_subclass__(cls, /, **kwargs):\\n        \\\"\\\"\\\"Control how subclasses generate random integers.\\n\\n        The algorithm a subclass can use depends on the random() and/or\\n        getrandbits() implementation available to it and determines\\n        whether it can generate random integers from arbitrarily large\\n        ranges.\\n        \\\"\\\"\\\"\\n\\n        for c in cls.__mro__:\\n            if '_randbelow' in c.__dict__:\\n                # just inherit it\\n                break\\n            if 'getrandbits' in c.__dict__:\\n                cls._randbelow = cls._randbelow_with_getrandbits\\n                break\\n            if 'random' in c.__dict__:\\n                cls._randbelow = cls._randbelow_without_getrandbits\\n                break\\n\\n    def _randbelow_with_getrandbits(self, n):\\n        \\\"Return a random int in the range [0,n).  Defined for n > 0.\\\"\\n\\n        getrandbits = self.getrandbits\\n        k = n.bit_length()\\n        r = getrandbits(k)  # 0 <= r < 2**k\\n        while r >= n:\\n            r = getrandbits(k)\\n        return r\\n\\n    def _randbelow_without_getrandbits(self, n, maxsize=1<<BPF):\\n        \\\"\\\"\\\"Return a random int in the range [0,n).  Defined for n > 0.\\n\\n        The implementation does not use getrandbits, but only random.\\n        \\\"\\\"\\\"\\n\\n        random = self.random\\n        if n >= maxsize:\\n            _warn(\\\"Underlying random() generator does not supply \\\\n\\\"\\n                \\\"enough bits to choose from a population range this large.\\\\n\\\"\\n                \\\"To remove the range limitation, add a getrandbits() method.\\\")\\n            return _floor(random() * n)\\n        rem = maxsize % n\\n        limit = (maxsize - rem) / maxsize   # int(limit * maxsize) % n == 0\\n        r = random()\\n        while r >= limit:\\n            r = random()\\n        return _floor(r * maxsize) % n\\n\\n    _randbelow = _randbelow_with_getrandbits\\n\\n\\n    ## --------------------------------------------------------\\n    ## ---- Methods below this point generate custom distributions\\n    ## ---- based on the methods defined above.  They do not\\n    ## ---- directly touch the underlying generator and only\\n    ## ---- access randomness through the methods:  random(),\\n    ## ---- getrandbits(), or _randbelow().\\n\\n\\n    ## -------------------- bytes methods ---------------------\\n\\n    def randbytes(self, n):\\n        \\\"\\\"\\\"Generate n random bytes.\\\"\\\"\\\"\\n        return self.getrandbits(n * 8).to_bytes(n, 'little')\\n\\n\\n    ## -------------------- integer methods  -------------------\\n\\n    def randrange(self, start, stop=None, step=_ONE):\\n        \\\"\\\"\\\"Choose a random item from range(stop) or range(start, stop[, step]).\\n\\n        Roughly equivalent to ``choice(range(start, stop, step))`` but\\n        supports arbitrarily large ranges and is optimized for common cases.\\n\\n        \\\"\\\"\\\"\\n\\n        # This code is a bit messy to make it fast for the\\n        # common case while still doing adequate error checking.\\n        istart = _index(start)\\n        if stop is None:\\n            # We don't check for \\\"step != 1\\\" because it hasn't been\\n            # type checked and converted to an integer yet.\\n            if step is not _ONE:\\n                raise TypeError(\\\"Missing a non-None stop argument\\\")\\n            if istart > 0:\\n                return self._randbelow(istart)\\n            raise ValueError(\\\"empty range for randrange()\\\")\\n\\n        # Stop argument supplied.\\n        istop = _index(stop)\\n        width = istop - istart\\n        istep = _index(step)\\n        # Fast path.\\n        if istep == 1:\\n            if width > 0:\\n                return istart + self._randbelow(width)\\n            raise ValueError(f\\\"empty range in randrange({start}, {stop})\\\")\\n\\n        # Non-unit step argument supplied.\\n        if istep > 0:\\n            n = (width + istep - 1) // istep\\n        elif istep < 0:\\n            n = (width + istep + 1) // istep\\n        else:\\n            raise ValueError(\\\"zero step for randrange()\\\")\\n        if n <= 0:\\n            raise ValueError(f\\\"empty range in randrange({start}, {stop}, {step})\\\")\\n        return istart + istep * self._randbelow(n)\\n\\n    def randint(self, a, b):\\n        \\\"\\\"\\\"Return random integer in range [a, b], including both end points.\\n        \\\"\\\"\\\"\\n\\n        return self.randrange(a, b+1)\\n\\n\\n    ## -------------------- sequence methods  -------------------\\n\\n    def choice(self, seq):\\n        \\\"\\\"\\\"Choose a random element from a non-empty sequence.\\\"\\\"\\\"\\n\\n        # As an accommodation for NumPy, we don't use \\\"if not seq\\\"\\n        # because bool(numpy.array()) raises a ValueError.\\n        if not len(seq):\\n            raise IndexError('Cannot choose from an empty sequence')\\n        return seq[self._randbelow(len(seq))]\\n\\n    def shuffle(self, x):\\n        \\\"\\\"\\\"Shuffle list x in place, and return None.\\\"\\\"\\\"\\n\\n        randbelow = self._randbelow\\n        for i in reversed(range(1, len(x))):\\n            # pick an element in x[:i+1] with which to exchange x[i]\\n            j = randbelow(i + 1)\\n            x[i], x[j] = x[j], x[i]\\n\\n    def sample(self, population, k, *, counts=None):\\n        \\\"\\\"\\\"Chooses k unique random elements from a population sequence.\\n\\n        Returns a new list containing elements from the population while\\n        leaving the original population unchanged.  The resulting list is\\n        in selection order so that all sub-slices will also be valid random\\n        samples.  This allows raffle winners (the sample) to be partitioned\\n        into grand prize and second place winners (the subslices).\\n\\n        Members of the population need not be hashable or unique.  If the\\n        population contains repeats, then each occurrence is a possible\\n        selection in the sample.\\n\\n        Repeated elements can be specified one at a time or with the optional\\n        counts parameter.  For example:\\n\\n            sample(['red', 'blue'], counts=[4, 2], k=5)\\n\\n        is equivalent to:\\n\\n            sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)\\n\\n        To choose a sample from a range of integers, use range() for the\\n        population argument.  This is especially fast and space efficient\\n        for sampling from a large population:\\n\\n            sample(range(10000000), 60)\\n\\n        \\\"\\\"\\\"\\n\\n        # Sampling without replacement entails tracking either potential\\n        # selections (the pool) in a list or previous selections in a set.\\n\\n        # When the number of selections is small compared to the\\n        # population, then tracking selections is efficient, requiring\\n        # only a small set and an occasional reselection.  For\\n        # a larger number of selections, the pool tracking method is\\n        # preferred since the list takes less space than the\\n        # set and it doesn't suffer from frequent reselections.\\n\\n        # The number of calls to _randbelow() is kept at or near k, the\\n        # theoretical minimum.  This is important because running time\\n        # is dominated by _randbelow() and because it extracts the\\n        # least entropy from the underlying random number generators.\\n\\n        # Memory requirements are kept to the smaller of a k-length\\n        # set or an n-length list.\\n\\n        # There are other sampling algorithms that do not require\\n        # auxiliary memory, but they were rejected because they made\\n        # too many calls to _randbelow(), making them slower and\\n        # causing them to eat more entropy than necessary.\\n\\n        if not isinstance(population, _Sequence):\\n            raise TypeError(\\\"Population must be a sequence.  \\\"\\n                            \\\"For dicts or sets, use sorted(d).\\\")\\n        n = len(population)\\n        if counts is not None:\\n            cum_counts = list(_accumulate(counts))\\n            if len(cum_counts) != n:\\n                raise ValueError('The number of counts does not match the population')\\n            total = cum_counts.pop()\\n            if not isinstance(total, int):\\n                raise TypeError('Counts must be integers')\\n            if total <= 0:\\n                raise ValueError('Total of counts must be greater than zero')\\n            selections = self.sample(range(total), k=k)\\n            bisect = _bisect\\n            return [population[bisect(cum_counts, s)] for s in selections]\\n        randbelow = self._randbelow\\n        if not 0 <= k <= n:\\n            raise ValueError(\\\"Sample larger than population or is negative\\\")\\n        result = [None] * k\\n        setsize = 21        # size of a small set minus size of an empty list\\n        if k > 5:\\n            setsize += 4 ** _ceil(_log(k * 3, 4))  # table size for big sets\\n        if n <= setsize:\\n            # An n-length list is smaller than a k-length set.\\n            # Invariant:  non-selected at pool[0 : n-i]\\n            pool = list(population)\\n            for i in range(k):\\n                j = randbelow(n - i)\\n                result[i] = pool[j]\\n                pool[j] = pool[n - i - 1]  # move non-selected item into vacancy\\n        else:\\n            selected = set()\\n            selected_add = selected.add\\n            for i in range(k):\\n                j = randbelow(n)\\n                while j in selected:\\n                    j = randbelow(n)\\n                selected_add(j)\\n                result[i] = population[j]\\n        return result\\n\\n    def choices(self, population, weights=None, *, cum_weights=None, k=1):\\n        \\\"\\\"\\\"Return a k sized list of population elements chosen with replacement.\\n\\n        If the relative weights or cumulative weights are not specified,\\n        the selections are made with equal probability.\\n\\n        \\\"\\\"\\\"\\n        random = self.random\\n        n = len(population)\\n        if cum_weights is None:\\n            if weights is None:\\n                floor = _floor\\n                n += 0.0    # convert to float for a small speed improvement\\n                return [population[floor(random() * n)] for i in _repeat(None, k)]\\n            try:\\n                cum_weights = list(_accumulate(weights))\\n            except TypeError:\\n                if not isinstance(weights, int):\\n                    raise\\n                k = weights\\n                raise TypeError(\\n                    f'The number of choices must be a keyword argument: {k=}'\\n                ) from None\\n        elif weights is not None:\\n            raise TypeError('Cannot specify both weights and cumulative weights')\\n        if len(cum_weights) != n:\\n            raise ValueError('The number of weights does not match the population')\\n        total = cum_weights[-1] + 0.0   # convert to float\\n        if total <= 0.0:\\n            raise ValueError('Total of weights must be greater than zero')\\n        if not _isfinite(total):\\n            raise ValueError('Total of weights must be finite')\\n        bisect = _bisect\\n        hi = n - 1\\n        return [population[bisect(cum_weights, random() * total, 0, hi)]\\n                for i in _repeat(None, k)]\\n\\n\\n    ## -------------------- real-valued distributions  -------------------\\n\\n    def uniform(self, a, b):\\n        \\\"\\\"\\\"Get a random number in the range [a, b) or [a, b] depending on rounding.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = (a + b) / 2\\n            Var[X] = (b - a) ** 2 / 12\\n\\n        \\\"\\\"\\\"\\n        return a + (b - a) * self.random()\\n\\n    def triangular(self, low=0.0, high=1.0, mode=None):\\n        \\\"\\\"\\\"Triangular distribution.\\n\\n        Continuous distribution bounded by given lower and upper limits,\\n        and having a given mode value in-between.\\n\\n        http://en.wikipedia.org/wiki/Triangular_distribution\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = (low + high + mode) / 3\\n            Var[X] = (low**2 + high**2 + mode**2 - low*high - low*mode - high*mode) / 18\\n\\n        \\\"\\\"\\\"\\n        u = self.random()\\n        try:\\n            c = 0.5 if mode is None else (mode - low) / (high - low)\\n        except ZeroDivisionError:\\n            return low\\n        if u > c:\\n            u = 1.0 - u\\n            c = 1.0 - c\\n            low, high = high, low\\n        return low + (high - low) * _sqrt(u * c)\\n\\n    def normalvariate(self, mu=0.0, sigma=1.0):\\n        \\\"\\\"\\\"Normal distribution.\\n\\n        mu is the mean, and sigma is the standard deviation.\\n\\n        \\\"\\\"\\\"\\n        # Uses Kinderman and Monahan method. Reference: Kinderman,\\n        # A.J. and Monahan, J.F., \\\"Computer generation of random\\n        # variables using the ratio of uniform deviates\\\", ACM Trans\\n        # Math Software, 3, (1977), pp257-260.\\n\\n        random = self.random\\n        while True:\\n            u1 = random()\\n            u2 = 1.0 - random()\\n            z = NV_MAGICCONST * (u1 - 0.5) / u2\\n            zz = z * z / 4.0\\n            if zz <= -_log(u2):\\n                break\\n        return mu + z * sigma\\n\\n    def gauss(self, mu=0.0, sigma=1.0):\\n        \\\"\\\"\\\"Gaussian distribution.\\n\\n        mu is the mean, and sigma is the standard deviation.  This is\\n        slightly faster than the normalvariate() function.\\n\\n        Not thread-safe without a lock around calls.\\n\\n        \\\"\\\"\\\"\\n        # When x and y are two variables from [0, 1), uniformly\\n        # distributed, then\\n        #\\n        #    cos(2*pi*x)*sqrt(-2*log(1-y))\\n        #    sin(2*pi*x)*sqrt(-2*log(1-y))\\n        #\\n        # are two *independent* variables with normal distribution\\n        # (mu = 0, sigma = 1).\\n        # (Lambert Meertens)\\n        # (corrected version; bug discovered by Mike Miller, fixed by LM)\\n\\n        # Multithreading note: When two threads call this function\\n        # simultaneously, it is possible that they will receive the\\n        # same return value.  The window is very small though.  To\\n        # avoid this, you have to use a lock around all calls.  (I\\n        # didn't want to slow this down in the serial case by using a\\n        # lock here.)\\n\\n        random = self.random\\n        z = self.gauss_next\\n        self.gauss_next = None\\n        if z is None:\\n            x2pi = random() * TWOPI\\n            g2rad = _sqrt(-2.0 * _log(1.0 - random()))\\n            z = _cos(x2pi) * g2rad\\n            self.gauss_next = _sin(x2pi) * g2rad\\n\\n        return mu + z * sigma\\n\\n    def lognormvariate(self, mu, sigma):\\n        \\\"\\\"\\\"Log normal distribution.\\n\\n        If you take the natural logarithm of this distribution, you'll get a\\n        normal distribution with mean mu and standard deviation sigma.\\n        mu can have any value, and sigma must be greater than zero.\\n\\n        \\\"\\\"\\\"\\n        return _exp(self.normalvariate(mu, sigma))\\n\\n    def expovariate(self, lambd=1.0):\\n        \\\"\\\"\\\"Exponential distribution.\\n\\n        lambd is 1.0 divided by the desired mean.  It should be\\n        nonzero.  (The parameter would be called \\\"lambda\\\", but that is\\n        a reserved word in Python.)  Returned values range from 0 to\\n        positive infinity if lambd is positive, and from negative\\n        infinity to 0 if lambd is negative.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = 1 / lambd\\n            Var[X] = 1 / lambd ** 2\\n\\n        \\\"\\\"\\\"\\n        # we use 1-random() instead of random() to preclude the\\n        # possibility of taking the log of zero.\\n\\n        return -_log(1.0 - self.random()) / lambd\\n\\n    def vonmisesvariate(self, mu, kappa):\\n        \\\"\\\"\\\"Circular data distribution.\\n\\n        mu is the mean angle, expressed in radians between 0 and 2*pi, and\\n        kappa is the concentration parameter, which must be greater than or\\n        equal to zero.  If kappa is equal to zero, this distribution reduces\\n        to a uniform random angle over the range 0 to 2*pi.\\n\\n        \\\"\\\"\\\"\\n        # Based upon an algorithm published in: Fisher, N.I.,\\n        # \\\"Statistical Analysis of Circular Data\\\", Cambridge\\n        # University Press, 1993.\\n\\n        # Thanks to Magnus Kessler for a correction to the\\n        # implementation of step 4.\\n\\n        random = self.random\\n        if kappa <= 1e-6:\\n            return TWOPI * random()\\n\\n        s = 0.5 / kappa\\n        r = s + _sqrt(1.0 + s * s)\\n\\n        while True:\\n            u1 = random()\\n            z = _cos(_pi * u1)\\n\\n            d = z / (r + z)\\n            u2 = random()\\n            if u2 < 1.0 - d * d or u2 <= (1.0 - d) * _exp(d):\\n                break\\n\\n        q = 1.0 / r\\n        f = (q + z) / (1.0 + q * z)\\n        u3 = random()\\n        if u3 > 0.5:\\n            theta = (mu + _acos(f)) % TWOPI\\n        else:\\n            theta = (mu - _acos(f)) % TWOPI\\n\\n        return theta\\n\\n    def gammavariate(self, alpha, beta):\\n        \\\"\\\"\\\"Gamma distribution.  Not the gamma function!\\n\\n        Conditions on the parameters are alpha > 0 and beta > 0.\\n\\n        The probability distribution function is:\\n\\n                    x ** (alpha - 1) * math.exp(-x / beta)\\n          pdf(x) =  --------------------------------------\\n                      math.gamma(alpha) * beta ** alpha\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = alpha * beta\\n            Var[X] = alpha * beta ** 2\\n\\n        \\\"\\\"\\\"\\n\\n        # Warning: a few older sources define the gamma distribution in terms\\n        # of alpha > -1.0\\n        if alpha <= 0.0 or beta <= 0.0:\\n            raise ValueError('gammavariate: alpha and beta must be > 0.0')\\n\\n        random = self.random\\n        if alpha > 1.0:\\n\\n            # Uses R.C.H. Cheng, \\\"The generation of Gamma\\n            # variables with non-integral shape parameters\\\",\\n            # Applied Statistics, (1977), 26, No. 1, p71-74\\n\\n            ainv = _sqrt(2.0 * alpha - 1.0)\\n            bbb = alpha - LOG4\\n            ccc = alpha + ainv\\n\\n            while True:\\n                u1 = random()\\n                if not 1e-7 < u1 < 0.9999999:\\n                    continue\\n                u2 = 1.0 - random()\\n                v = _log(u1 / (1.0 - u1)) / ainv\\n                x = alpha * _exp(v)\\n                z = u1 * u1 * u2\\n                r = bbb + ccc * v - x\\n                if r + SG_MAGICCONST - 4.5 * z >= 0.0 or r >= _log(z):\\n                    return x * beta\\n\\n        elif alpha == 1.0:\\n            # expovariate(1/beta)\\n            return -_log(1.0 - random()) * beta\\n\\n        else:\\n            # alpha is between 0 and 1 (exclusive)\\n            # Uses ALGORITHM GS of Statistical Computing - Kennedy & Gentle\\n            while True:\\n                u = random()\\n                b = (_e + alpha) / _e\\n                p = b * u\\n                if p <= 1.0:\\n                    x = p ** (1.0 / alpha)\\n                else:\\n                    x = -_log((b - p) / alpha)\\n                u1 = random()\\n                if p > 1.0:\\n                    if u1 <= x ** (alpha - 1.0):\\n                        break\\n                elif u1 <= _exp(-x):\\n                    break\\n            return x * beta\\n\\n    def betavariate(self, alpha, beta):\\n        \\\"\\\"\\\"Beta distribution.\\n\\n        Conditions on the parameters are alpha > 0 and beta > 0.\\n        Returned values range between 0 and 1.\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = alpha / (alpha + beta)\\n            Var[X] = alpha * beta / ((alpha + beta)**2 * (alpha + beta + 1))\\n\\n        \\\"\\\"\\\"\\n        ## See\\n        ## http://mail.python.org/pipermail/python-bugs-list/2001-January/003752.html\\n        ## for Ivan Frohne's insightful analysis of why the original implementation:\\n        ##\\n        ##    def betavariate(self, alpha, beta):\\n        ##        # Discrete Event Simulation in C, pp 87-88.\\n        ##\\n        ##        y = self.expovariate(alpha)\\n        ##        z = self.expovariate(1.0/beta)\\n        ##        return z/(y+z)\\n        ##\\n        ## was dead wrong, and how it probably got that way.\\n\\n        # This version due to Janne Sinkkonen, and matches all the std\\n        # texts (e.g., Knuth Vol 2 Ed 3 pg 134 \\\"the beta distribution\\\").\\n        y = self.gammavariate(alpha, 1.0)\\n        if y:\\n            return y / (y + self.gammavariate(beta, 1.0))\\n        return 0.0\\n\\n    def paretovariate(self, alpha):\\n        \\\"\\\"\\\"Pareto distribution.  alpha is the shape parameter.\\\"\\\"\\\"\\n        # Jain, pg. 495\\n\\n        u = 1.0 - self.random()\\n        return u ** (-1.0 / alpha)\\n\\n    def weibullvariate(self, alpha, beta):\\n        \\\"\\\"\\\"Weibull distribution.\\n\\n        alpha is the scale parameter and beta is the shape parameter.\\n\\n        \\\"\\\"\\\"\\n        # Jain, pg. 499; bug fix courtesy Bill Arms\\n\\n        u = 1.0 - self.random()\\n        return alpha * (-_log(u)) ** (1.0 / beta)\\n\\n\\n    ## -------------------- discrete  distributions  ---------------------\\n\\n    def binomialvariate(self, n=1, p=0.5):\\n        \\\"\\\"\\\"Binomial random variable.\\n\\n        Gives the number of successes for *n* independent trials\\n        with the probability of success in each trial being *p*:\\n\\n            sum(random() < p for i in range(n))\\n\\n        Returns an integer in the range:   0 <= X <= n\\n\\n        The mean (expected value) and variance of the random variable are:\\n\\n            E[X] = n * p\\n            Var[x] = n * p * (1 - p)\\n\\n        \\\"\\\"\\\"\\n        # Error check inputs and handle edge cases\\n        if n < 0:\\n            raise ValueError(\\\"n must be non-negative\\\")\\n        if p <= 0.0 or p >= 1.0:\\n            if p == 0.0:\\n                return 0\\n            if p == 1.0:\\n                return n\\n            raise ValueError(\\\"p must be in the range 0.0 <= p <= 1.0\\\")\\n\\n        random = self.random\\n\\n        # Fast path for a common case\\n        if n == 1:\\n            return _index(random() < p)\\n\\n        # Exploit symmetry to establish:  p <= 0.5\\n        if p > 0.5:\\n            return n - self.binomialvariate(n, 1.0 - p)\\n\\n        if n * p < 10.0:\\n            # BG: Geometric method by Devroye with running time of O(np).\\n            # https://dl.acm.org/doi/pdf/10.1145/42372.42381\\n            x = y = 0\\n            c = _log2(1.0 - p)\\n            if not c:\\n                return x\\n            while True:\\n                y += _floor(_log2(random()) / c) + 1\\n                if y > n:\\n                    return x\\n                x += 1\\n\\n        # BTRS: Transformed rejection with squeeze method by Wolfgang H\\u00f6rmann\\n        # https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.47.8407&rep=rep1&type=pdf\\n        assert n*p >= 10.0 and p <= 0.5\\n        setup_complete = False\\n\\n        spq = _sqrt(n * p * (1.0 - p))  # Standard deviation of the distribution\\n        b = 1.15 + 2.53 * spq\\n        a = -0.0873 + 0.0248 * b + 0.01 * p\\n        c = n * p + 0.5\\n        vr = 0.92 - 4.2 / b\\n\\n        while True:\\n\\n            u = random()\\n            u -= 0.5\\n            us = 0.5 - _fabs(u)\\n            k = _floor((2.0 * a / us + b) * u + c)\\n            if k < 0 or k > n:\\n                continue\\n\\n            # The early-out \\\"squeeze\\\" test substantially reduces\\n            # the number of acceptance condition evaluations.\\n            v = random()\\n            if us >= 0.07 and v <= vr:\\n                return k\\n\\n            # Acceptance-rejection test.\\n            # Note, the original paper erroneously omits the call to log(v)\\n            # when comparing to the log of the rescaled binomial distribution.\\n            if not setup_complete:\\n                alpha = (2.83 + 5.1 / b) * spq\\n                lpq = _log(p / (1.0 - p))\\n                m = _floor((n + 1) * p)         # Mode of the distribution\\n                h = _lgamma(m + 1) + _lgamma(n - m + 1)\\n                setup_complete = True           # Only needs to be done once\\n            v *= alpha / (a / (us * us) + b)\\n            if _log(v) <= h - _lgamma(k + 1) - _lgamma(n - k + 1) + (k - m) * lpq:\\n                return k\\n\\n\\n## ------------------------------------------------------------------\\n## --------------- Operating System Random Source  ------------------\\n\\n\\nclass SystemRandom(Random):\\n    \\\"\\\"\\\"Alternate random number generator using sources provided\\n    by the operating system (such as /dev/urandom on Unix or\\n    CryptGenRandom on Windows).\\n\\n     Not available on all systems (see os.urandom() for details).\\n\\n    \\\"\\\"\\\"\\n\\n    def random(self):\\n        \\\"\\\"\\\"Get the next random number in the range 0.0 <= X < 1.0.\\\"\\\"\\\"\\n        return (int.from_bytes(_urandom(7)) >> 3) * RECIP_BPF\\n\\n    def getrandbits(self, k):\\n        \\\"\\\"\\\"getrandbits(k) -> x.  Generates an int with k random bits.\\\"\\\"\\\"\\n        if k < 0:\\n            raise ValueError('number of bits must be non-negative')\\n        numbytes = (k + 7) // 8                       # bits / 8 and rounded up\\n        x = int.from_bytes(_urandom(numbytes))\\n        return x >> (numbytes * 8 - k)                # trim excess bits\\n\\n    def randbytes(self, n):\\n        \\\"\\\"\\\"Generate n random bytes.\\\"\\\"\\\"\\n        # os.urandom(n) fails with ValueError for n < 0\\n        # and returns an empty bytes string for n == 0.\\n        return _urandom(n)\\n\\n    def seed(self, *args, **kwds):\\n        \\\"Stub method.  Not used for a system random number generator.\\\"\\n        return None\\n\\n    def _notimplemented(self, *args, **kwds):\\n        \\\"Method should not be called for a system random number generator.\\\"\\n        raise NotImplementedError('System entropy source does not have state.')\\n    getstate = setstate = _notimplemented\\n\\n\\n# ----------------------------------------------------------------------\\n# Create one instance, seeded from current time, and export its methods\\n# as module-level functions.  The functions share state across all uses\\n# (both in the user's code and in the Python libraries), but that's fine\\n# for most programs and is easier for the casual user than making them\\n# instantiate their own Random() instance.\\n\\n_inst = Random()\\nseed = _inst.seed\\nrandom = _inst.random\\nuniform = _inst.uniform\\ntriangular = _inst.triangular\\nrandint = _inst.randint\\nchoice = _inst.choice\\nrandrange = _inst.randrange\\nsample = _inst.sample\\nshuffle = _inst.shuffle\\nchoices = _inst.choices\\nnormalvariate = _inst.normalvariate\\nlognormvariate = _inst.lognormvariate\\nexpovariate = _inst.expovariate\\nvonmisesvariate = _inst.vonmisesvariate\\ngammavariate = _inst.gammavariate\\ngauss = _inst.gauss\\nbetavariate = _inst.betavariate\\nbinomialvariate = _inst.binomialvariate\\nparetovariate = _inst.paretovariate\\nweibullvariate = _inst.weibullvariate\\ngetstate = _inst.getstate\\nsetstate = _inst.setstate\\ngetrandbits = _inst.getrandbits\\nrandbytes = _inst.randbytes\\n\\n\\n## ------------------------------------------------------\\n## ----------------- test program -----------------------\\n\\ndef _test_generator(n, func, args):\\n    from statistics import stdev, fmean as mean\\n    from time import perf_counter\\n\\n    t0 = perf_counter()\\n    data = [func(*args) for i in _repeat(None, n)]\\n    t1 = perf_counter()\\n\\n    xbar = mean(data)\\n    sigma = stdev(data, xbar)\\n    low = min(data)\\n    high = max(data)\\n\\n    print(f'{t1 - t0:.3f} sec, {n} times {func.__name__}{args!r}')\\n    print('avg %g, stddev %g, min %g, max %g\\\\n' % (xbar, sigma, low, high))\\n\\n\\ndef _test(N=10_000):\\n    _test_generator(N, random, ())\\n    _test_generator(N, normalvariate, (0.0, 1.0))\\n    _test_generator(N, lognormvariate, (0.0, 1.0))\\n    _test_generator(N, vonmisesvariate, (0.0, 1.0))\\n    _test_generator(N, binomialvariate, (15, 0.60))\\n    _test_generator(N, binomialvariate, (100, 0.75))\\n    _test_generator(N, gammavariate, (0.01, 1.0))\\n    _test_generator(N, gammavariate, (0.1, 1.0))\\n    _test_generator(N, gammavariate, (0.1, 2.0))\\n    _test_generator(N, gammavariate, (0.5, 1.0))\\n    _test_generator(N, gammavariate, (0.9, 1.0))\\n    _test_generator(N, gammavariate, (1.0, 1.0))\\n    _test_generator(N, gammavariate, (2.0, 1.0))\\n    _test_generator(N, gammavariate, (20.0, 1.0))\\n    _test_generator(N, gammavariate, (200.0, 1.0))\\n    _test_generator(N, gauss, (0.0, 1.0))\\n    _test_generator(N, betavariate, (3.0, 3.0))\\n    _test_generator(N, triangular, (0.0, 1.0, 1.0 / 3.0))\\n\\n\\n## ------------------------------------------------------\\n## ------------------ fork support  ---------------------\\n\\nif hasattr(_os, \\\"fork\\\"):\\n    _os.register_at_fork(after_in_child=_inst.seed)\\n\\n\\nif __name__ == '__main__':\\n    _test()\\n\", 996], \"/usr/lib/python3.12/tempfile.py\": [\"\\\"\\\"\\\"Temporary files.\\n\\nThis module provides generic, low- and high-level interfaces for\\ncreating temporary files and directories.  All of the interfaces\\nprovided by this module can be used without fear of race conditions\\nexcept for 'mktemp'.  'mktemp' is subject to race conditions and\\nshould not be used; it is provided for backward compatibility only.\\n\\nThe default path names are returned as str.  If you supply bytes as\\ninput, all return values will be in bytes.  Ex:\\n\\n    >>> tempfile.mkstemp()\\n    (4, '/tmp/tmptpu9nin8')\\n    >>> tempfile.mkdtemp(suffix=b'')\\n    b'/tmp/tmppbi8f0hy'\\n\\nThis module also provides some data items to the user:\\n\\n  TMP_MAX  - maximum number of names that will be tried before\\n             giving up.\\n  tempdir  - If this is set to a string before the first use of\\n             any routine from this module, it will be considered as\\n             another candidate location to store temporary files.\\n\\\"\\\"\\\"\\n\\n__all__ = [\\n    \\\"NamedTemporaryFile\\\", \\\"TemporaryFile\\\", # high level safe interfaces\\n    \\\"SpooledTemporaryFile\\\", \\\"TemporaryDirectory\\\",\\n    \\\"mkstemp\\\", \\\"mkdtemp\\\",                  # low level safe interfaces\\n    \\\"mktemp\\\",                              # deprecated unsafe interface\\n    \\\"TMP_MAX\\\", \\\"gettempprefix\\\",            # constants\\n    \\\"tempdir\\\", \\\"gettempdir\\\",\\n    \\\"gettempprefixb\\\", \\\"gettempdirb\\\",\\n   ]\\n\\n\\n# Imports.\\n\\nimport functools as _functools\\nimport warnings as _warnings\\nimport io as _io\\nimport os as _os\\ntry:\\n  import shutil as _shutil\\n  _rmtree = _shutil.rmtree\\nexcept ImportError:\\n  import sys as _sys\\n  import stat as _stat\\n  # version vulnerable to race conditions\\n  def _rmtree_unsafe(path, onerror):\\n    try:\\n        if _os.path.islink(path):\\n            # symlinks to directories are forbidden, see bug #1669\\n            raise OSError(\\\"Cannot call rmtree on a symbolic link\\\")\\n    except OSError:\\n        onerror(_os.path.islink, path, _sys.exc_info())\\n        # can't continue even if onerror hook returns\\n        return\\n    names = []\\n    try:\\n        names = _os.listdir(path)\\n    except OSError:\\n        onerror(_os.listdir, path, _sys.exc_info())\\n    for name in names:\\n        fullname = _os.path.join(path, name)\\n        try:\\n            mode = _os.lstat(fullname).st_mode\\n        except OSError:\\n            mode = 0\\n        if _stat.S_ISDIR(mode):\\n            _rmtree_unsafe(fullname, onerror)\\n        else:\\n            try:\\n                _os.unlink(fullname)\\n            except OSError:\\n                onerror(_os.unlink, fullname, _sys.exc_info())\\n    try:\\n        _os.rmdir(path)\\n    except OSError:\\n        onerror(_os.rmdir, path, _sys.exc_info())\\n\\n  # Version using fd-based APIs to protect against races\\n  def _rmtree_safe_fd(topfd, path, onerror):\\n    names = []\\n    try:\\n        names = _os.listdir(topfd)\\n    except OSError as err:\\n        err.filename = path\\n        onerror(_os.listdir, path, _sys.exc_info())\\n    for name in names:\\n        fullname = _os.path.join(path, name)\\n        try:\\n            orig_st = _os.stat(name, dir_fd=topfd, follow_symlinks=False)\\n            mode = orig_st.st_mode\\n        except OSError:\\n            mode = 0\\n        if _stat.S_ISDIR(mode):\\n            try:\\n                dirfd = _os.open(name, _os.O_RDONLY, dir_fd=topfd)\\n            except OSError:\\n                onerror(_os.open, fullname, _sys.exc_info())\\n            else:\\n                try:\\n                    if _os.path.samestat(orig_st, _os.fstat(dirfd)):\\n                        _rmtree_safe_fd(dirfd, fullname, onerror)\\n                        try:\\n                            _os.rmdir(name, dir_fd=topfd)\\n                        except OSError:\\n                            onerror(_os.rmdir, fullname, _sys.exc_info())\\n                    else:\\n                        try:\\n                            # This can only happen if someone replaces\\n                            # a directory with a symlink after the call to\\n                            # stat.S_ISDIR above.\\n                            raise OSError(\\\"Cannot call rmtree on a symbolic \\\"\\n                                          \\\"link\\\")\\n                        except OSError:\\n                            onerror(_os.path.islink, fullname, _sys.exc_info())\\n                finally:\\n                    _os.close(dirfd)\\n        else:\\n            try:\\n                _os.unlink(name, dir_fd=topfd)\\n            except OSError:\\n                onerror(_os.unlink, fullname, _sys.exc_info())\\n\\n  _use_fd_functions = ({_os.open, _os.stat, _os.unlink, _os.rmdir} <=\\n                     _os.supports_dir_fd and\\n                     _os.listdir in _os.supports_fd and\\n                     _os.stat in _os.supports_follow_symlinks)\\n\\n  def _rmtree(path, ignore_errors=False, onerror=None):\\n    \\\"\\\"\\\"Recursively delete a directory tree.\\n\\n    If ignore_errors is set, errors are ignored; otherwise, if onerror\\n    is set, it is called to handle the error with arguments (func,\\n    path, exc_info) where func is platform and implementation dependent;\\n    path is the argument to that function that caused it to fail; and\\n    exc_info is a tuple returned by sys.exc_info().  If ignore_errors\\n    is false and onerror is None, an exception is raised.\\n\\n    \\\"\\\"\\\"\\n    if ignore_errors:\\n        def onerror(*args):\\n            pass\\n    elif onerror is None:\\n        def onerror(*args):\\n            raise\\n    if _use_fd_functions:\\n        # While the unsafe rmtree works fine on bytes, the fd based does not.\\n        if isinstance(path, bytes):\\n            path = _os.fsdecode(path)\\n        # Note: To guard against symlink races, we use the standard\\n        # lstat()/open()/fstat() trick.\\n        try:\\n            orig_st = _os.lstat(path)\\n        except Exception:\\n            onerror(_os.lstat, path, _sys.exc_info())\\n            return\\n        try:\\n            fd = _os.open(path, _os.O_RDONLY)\\n        except Exception:\\n            onerror(_os.lstat, path, _sys.exc_info())\\n            return\\n        try:\\n            if _os.path.samestat(orig_st, _os.fstat(fd)):\\n                _rmtree_safe_fd(fd, path, onerror)\\n                try:\\n                    _os.rmdir(path)\\n                except OSError:\\n                    onerror(_os.rmdir, path, _sys.exc_info())\\n            else:\\n                try:\\n                    # symlinks to directories are forbidden, see bug #1669\\n                    raise OSError(\\\"Cannot call rmtree on a symbolic link\\\")\\n                except OSError:\\n                    onerror(_os.path.islink, path, _sys.exc_info())\\n        finally:\\n            _os.close(fd)\\n    else:\\n        return _rmtree_unsafe(path, onerror)\\n\\nimport errno as _errno\\nfrom random import Random as _Random\\nimport sys as _sys\\nimport types as _types\\nimport weakref as _weakref\\nimport _thread\\n_allocate_lock = _thread.allocate_lock\\n\\n_text_openflags = _os.O_RDWR | _os.O_CREAT | _os.O_EXCL\\nif hasattr(_os, 'O_NOFOLLOW'):\\n    _text_openflags |= _os.O_NOFOLLOW\\n\\n_bin_openflags = _text_openflags\\nif hasattr(_os, 'O_BINARY'):\\n    _bin_openflags |= _os.O_BINARY\\n\\nif hasattr(_os, 'TMP_MAX'):\\n    TMP_MAX = _os.TMP_MAX\\nelse:\\n    TMP_MAX = 10000\\n\\n# This variable _was_ unused for legacy reasons, see issue 10354.\\n# But as of 3.5 we actually use it at runtime so changing it would\\n# have a possibly desirable side effect...  But we do not want to support\\n# that as an API.  It is undocumented on purpose.  Do not depend on this.\\ntemplate = \\\"tmp\\\"\\n\\n# Internal routines.\\n\\n_once_lock = _allocate_lock()\\n\\n\\ndef _exists(fn):\\n    try:\\n        _os.lstat(fn)\\n    except OSError:\\n        return False\\n    else:\\n        return True\\n\\n\\ndef _infer_return_type(*args):\\n    \\\"\\\"\\\"Look at the type of all args and divine their implied return type.\\\"\\\"\\\"\\n    return_type = None\\n    for arg in args:\\n        if arg is None:\\n            continue\\n\\n        if isinstance(arg, _os.PathLike):\\n            arg = _os.fspath(arg)\\n\\n        if isinstance(arg, bytes):\\n            if return_type is str:\\n                raise TypeError(\\\"Can't mix bytes and non-bytes in \\\"\\n                                \\\"path components.\\\")\\n            return_type = bytes\\n        else:\\n            if return_type is bytes:\\n                raise TypeError(\\\"Can't mix bytes and non-bytes in \\\"\\n                                \\\"path components.\\\")\\n            return_type = str\\n    if return_type is None:\\n        if tempdir is None or isinstance(tempdir, str):\\n            return str  # tempfile APIs return a str by default.\\n        else:\\n            # we could check for bytes but it'll fail later on anyway\\n            return bytes\\n    return return_type\\n\\n\\ndef _sanitize_params(prefix, suffix, dir):\\n    \\\"\\\"\\\"Common parameter processing for most APIs in this module.\\\"\\\"\\\"\\n    output_type = _infer_return_type(prefix, suffix, dir)\\n    if suffix is None:\\n        suffix = output_type()\\n    if prefix is None:\\n        if output_type is str:\\n            prefix = template\\n        else:\\n            prefix = _os.fsencode(template)\\n    if dir is None:\\n        if output_type is str:\\n            dir = gettempdir()\\n        else:\\n            dir = gettempdirb()\\n    return prefix, suffix, dir, output_type\\n\\n\\nclass _RandomNameSequence:\\n    \\\"\\\"\\\"An instance of _RandomNameSequence generates an endless\\n    sequence of unpredictable strings which can safely be incorporated\\n    into file names.  Each string is eight characters long.  Multiple\\n    threads can safely use the same instance at the same time.\\n\\n    _RandomNameSequence is an iterator.\\\"\\\"\\\"\\n\\n    characters = \\\"abcdefghijklmnopqrstuvwxyz0123456789_\\\"\\n\\n    @property\\n    def rng(self):\\n        cur_pid = _os.getpid()\\n        if cur_pid != getattr(self, '_rng_pid', None):\\n            self._rng = _Random()\\n            self._rng_pid = cur_pid\\n        return self._rng\\n\\n    def __iter__(self):\\n        return self\\n\\n    def __next__(self):\\n        return ''.join(self.rng.choices(self.characters, k=8))\\n\\ndef _candidate_tempdir_list():\\n    \\\"\\\"\\\"Generate a list of candidate temporary directories which\\n    _get_default_tempdir will try.\\\"\\\"\\\"\\n\\n    dirlist = []\\n\\n    # First, try the environment.\\n    for envname in 'TMPDIR', 'TEMP', 'TMP':\\n        dirname = _os.getenv(envname)\\n        if dirname: dirlist.append(dirname)\\n\\n    # Failing that, try OS-specific locations.\\n    if _os.name == 'nt':\\n        dirlist.extend([ _os.path.expanduser(r'~\\\\AppData\\\\Local\\\\Temp'),\\n                         _os.path.expandvars(r'%SYSTEMROOT%\\\\Temp'),\\n                         r'c:\\\\temp', r'c:\\\\tmp', r'\\\\temp', r'\\\\tmp' ])\\n    else:\\n        dirlist.extend([ '/tmp', '/var/tmp', '/usr/tmp' ])\\n\\n    # As a last resort, the current directory.\\n    try:\\n        dirlist.append(_os.getcwd())\\n    except (AttributeError, OSError):\\n        dirlist.append(_os.curdir)\\n\\n    return dirlist\\n\\ndef _get_default_tempdir():\\n    \\\"\\\"\\\"Calculate the default directory to use for temporary files.\\n    This routine should be called exactly once.\\n\\n    We determine whether or not a candidate temp dir is usable by\\n    trying to create and write to a file in that directory.  If this\\n    is successful, the test file is deleted.  To prevent denial of\\n    service, the name of the test file must be randomized.\\\"\\\"\\\"\\n\\n    namer = _RandomNameSequence()\\n    dirlist = _candidate_tempdir_list()\\n\\n    for dir in dirlist:\\n        if dir != _os.curdir:\\n            dir = _os.path.abspath(dir)\\n        # Try only a few names per directory.\\n        for seq in range(100):\\n            name = next(namer)\\n            filename = _os.path.join(dir, name)\\n            try:\\n                fd = _os.open(filename, _bin_openflags, 0o600)\\n                try:\\n                    try:\\n                        _os.write(fd, b'blat')\\n                    finally:\\n                        _os.close(fd)\\n                finally:\\n                    _os.unlink(filename)\\n                return dir\\n            except FileExistsError:\\n                pass\\n            except PermissionError:\\n                # This exception is thrown when a directory with the chosen name\\n                # already exists on windows.\\n                if (_os.name == 'nt' and _os.path.isdir(dir) and\\n                    _os.access(dir, _os.W_OK)):\\n                    continue\\n                break   # no point trying more names in this directory\\n            except OSError:\\n                break   # no point trying more names in this directory\\n    raise FileNotFoundError(_errno.ENOENT,\\n                            \\\"No usable temporary directory found in %s\\\" %\\n                            dirlist)\\n\\n_name_sequence = None\\n\\ndef _get_candidate_names():\\n    \\\"\\\"\\\"Common setup sequence for all user-callable interfaces.\\\"\\\"\\\"\\n\\n    global _name_sequence\\n    if _name_sequence is None:\\n        _once_lock.acquire()\\n        try:\\n            if _name_sequence is None:\\n                _name_sequence = _RandomNameSequence()\\n        finally:\\n            _once_lock.release()\\n    return _name_sequence\\n\\n\\ndef _mkstemp_inner(dir, pre, suf, flags, output_type):\\n    \\\"\\\"\\\"Code common to mkstemp, TemporaryFile, and NamedTemporaryFile.\\\"\\\"\\\"\\n\\n    dir = _os.path.abspath(dir)\\n    names = _get_candidate_names()\\n    if output_type is bytes:\\n        names = map(_os.fsencode, names)\\n\\n    for seq in range(TMP_MAX):\\n        name = next(names)\\n        file = _os.path.join(dir, pre + name + suf)\\n        _sys.audit(\\\"tempfile.mkstemp\\\", file)\\n        try:\\n            fd = _os.open(file, flags, 0o600)\\n        except FileExistsError:\\n            continue    # try again\\n        except PermissionError:\\n            # This exception is thrown when a directory with the chosen name\\n            # already exists on windows.\\n            if (_os.name == 'nt' and _os.path.isdir(dir) and\\n                _os.access(dir, _os.W_OK)):\\n                continue\\n            else:\\n                raise\\n        return fd, file\\n\\n    raise FileExistsError(_errno.EEXIST,\\n                          \\\"No usable temporary file name found\\\")\\n\\ndef _dont_follow_symlinks(func, path, *args):\\n    # Pass follow_symlinks=False, unless not supported on this platform.\\n    if func in _os.supports_follow_symlinks:\\n        func(path, *args, follow_symlinks=False)\\n    elif _os.name == 'nt' or not _os.path.islink(path):\\n        func(path, *args)\\n\\ndef _resetperms(path):\\n    try:\\n        chflags = _os.chflags\\n    except AttributeError:\\n        pass\\n    else:\\n        _dont_follow_symlinks(chflags, path, 0)\\n    _dont_follow_symlinks(_os.chmod, path, 0o700)\\n\\n\\n# User visible interfaces.\\n\\ndef gettempprefix():\\n    \\\"\\\"\\\"The default prefix for temporary directories as string.\\\"\\\"\\\"\\n    return _os.fsdecode(template)\\n\\ndef gettempprefixb():\\n    \\\"\\\"\\\"The default prefix for temporary directories as bytes.\\\"\\\"\\\"\\n    return _os.fsencode(template)\\n\\ntempdir = None\\n\\ndef _gettempdir():\\n    \\\"\\\"\\\"Private accessor for tempfile.tempdir.\\\"\\\"\\\"\\n    global tempdir\\n    if tempdir is None:\\n        _once_lock.acquire()\\n        try:\\n            if tempdir is None:\\n                tempdir = _get_default_tempdir()\\n        finally:\\n            _once_lock.release()\\n    return tempdir\\n\\ndef gettempdir():\\n    \\\"\\\"\\\"Returns tempfile.tempdir as str.\\\"\\\"\\\"\\n    return _os.fsdecode(_gettempdir())\\n\\ndef gettempdirb():\\n    \\\"\\\"\\\"Returns tempfile.tempdir as bytes.\\\"\\\"\\\"\\n    return _os.fsencode(_gettempdir())\\n\\ndef mkstemp(suffix=None, prefix=None, dir=None, text=False):\\n    \\\"\\\"\\\"User-callable function to create and return a unique temporary\\n    file.  The return value is a pair (fd, name) where fd is the\\n    file descriptor returned by os.open, and name is the filename.\\n\\n    If 'suffix' is not None, the file name will end with that suffix,\\n    otherwise there will be no suffix.\\n\\n    If 'prefix' is not None, the file name will begin with that prefix,\\n    otherwise a default prefix is used.\\n\\n    If 'dir' is not None, the file will be created in that directory,\\n    otherwise a default directory is used.\\n\\n    If 'text' is specified and true, the file is opened in text\\n    mode.  Else (the default) the file is opened in binary mode.\\n\\n    If any of 'suffix', 'prefix' and 'dir' are not None, they must be the\\n    same type.  If they are bytes, the returned name will be bytes; str\\n    otherwise.\\n\\n    The file is readable and writable only by the creating user ID.\\n    If the operating system uses permission bits to indicate whether a\\n    file is executable, the file is executable by no one. The file\\n    descriptor is not inherited by children of this process.\\n\\n    Caller is responsible for deleting the file when done with it.\\n    \\\"\\\"\\\"\\n\\n    prefix, suffix, dir, output_type = _sanitize_params(prefix, suffix, dir)\\n\\n    if text:\\n        flags = _text_openflags\\n    else:\\n        flags = _bin_openflags\\n\\n    return _mkstemp_inner(dir, prefix, suffix, flags, output_type)\\n\\n\\ndef mkdtemp(suffix=None, prefix=None, dir=None):\\n    \\\"\\\"\\\"User-callable function to create and return a unique temporary\\n    directory.  The return value is the pathname of the directory.\\n\\n    Arguments are as for mkstemp, except that the 'text' argument is\\n    not accepted.\\n\\n    The directory is readable, writable, and searchable only by the\\n    creating user.\\n\\n    Caller is responsible for deleting the directory when done with it.\\n    \\\"\\\"\\\"\\n\\n    prefix, suffix, dir, output_type = _sanitize_params(prefix, suffix, dir)\\n\\n    names = _get_candidate_names()\\n    if output_type is bytes:\\n        names = map(_os.fsencode, names)\\n\\n    for seq in range(TMP_MAX):\\n        name = next(names)\\n        file = _os.path.join(dir, prefix + name + suffix)\\n        _sys.audit(\\\"tempfile.mkdtemp\\\", file)\\n        try:\\n            _os.mkdir(file, 0o700)\\n        except FileExistsError:\\n            continue    # try again\\n        except PermissionError:\\n            # This exception is thrown when a directory with the chosen name\\n            # already exists on windows.\\n            if (_os.name == 'nt' and _os.path.isdir(dir) and\\n                _os.access(dir, _os.W_OK)):\\n                continue\\n            else:\\n                raise\\n        return _os.path.abspath(file)\\n\\n    raise FileExistsError(_errno.EEXIST,\\n                          \\\"No usable temporary directory name found\\\")\\n\\ndef mktemp(suffix=\\\"\\\", prefix=template, dir=None):\\n    \\\"\\\"\\\"User-callable function to return a unique temporary file name.  The\\n    file is not created.\\n\\n    Arguments are similar to mkstemp, except that the 'text' argument is\\n    not accepted, and suffix=None, prefix=None and bytes file names are not\\n    supported.\\n\\n    THIS FUNCTION IS UNSAFE AND SHOULD NOT BE USED.  The file name may\\n    refer to a file that did not exist at some point, but by the time\\n    you get around to creating it, someone else may have beaten you to\\n    the punch.\\n    \\\"\\\"\\\"\\n\\n##    from warnings import warn as _warn\\n##    _warn(\\\"mktemp is a potential security risk to your program\\\",\\n##          RuntimeWarning, stacklevel=2)\\n\\n    if dir is None:\\n        dir = gettempdir()\\n\\n    names = _get_candidate_names()\\n    for seq in range(TMP_MAX):\\n        name = next(names)\\n        file = _os.path.join(dir, prefix + name + suffix)\\n        if not _exists(file):\\n            return file\\n\\n    raise FileExistsError(_errno.EEXIST,\\n                          \\\"No usable temporary filename found\\\")\\n\\n\\nclass _TemporaryFileCloser:\\n    \\\"\\\"\\\"A separate object allowing proper closing of a temporary file's\\n    underlying file object, without adding a __del__ method to the\\n    temporary file.\\\"\\\"\\\"\\n\\n    cleanup_called = False\\n    close_called = False\\n\\n    def __init__(self, file, name, delete=True, delete_on_close=True):\\n        self.file = file\\n        self.name = name\\n        self.delete = delete\\n        self.delete_on_close = delete_on_close\\n\\n    def cleanup(self, windows=(_os.name == 'nt'), unlink=_os.unlink):\\n        if not self.cleanup_called:\\n            self.cleanup_called = True\\n            try:\\n                if not self.close_called:\\n                    self.close_called = True\\n                    self.file.close()\\n            finally:\\n                # Windows provides delete-on-close as a primitive, in which\\n                # case the file was deleted by self.file.close().\\n                if self.delete and not (windows and self.delete_on_close):\\n                    try:\\n                        unlink(self.name)\\n                    except FileNotFoundError:\\n                        pass\\n\\n    def close(self):\\n        if not self.close_called:\\n            self.close_called = True\\n            try:\\n                self.file.close()\\n            finally:\\n                if self.delete and self.delete_on_close:\\n                    self.cleanup()\\n\\n    def __del__(self):\\n        self.cleanup()\\n\\n\\nclass _TemporaryFileWrapper:\\n    \\\"\\\"\\\"Temporary file wrapper\\n\\n    This class provides a wrapper around files opened for\\n    temporary use.  In particular, it seeks to automatically\\n    remove the file when it is no longer needed.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, file, name, delete=True, delete_on_close=True):\\n        self.file = file\\n        self.name = name\\n        self._closer = _TemporaryFileCloser(file, name, delete,\\n                                            delete_on_close)\\n\\n    def __getattr__(self, name):\\n        # Attribute lookups are delegated to the underlying file\\n        # and cached for non-numeric results\\n        # (i.e. methods are cached, closed and friends are not)\\n        file = self.__dict__['file']\\n        a = getattr(file, name)\\n        if hasattr(a, '__call__'):\\n            func = a\\n            @_functools.wraps(func)\\n            def func_wrapper(*args, **kwargs):\\n                return func(*args, **kwargs)\\n            # Avoid closing the file as long as the wrapper is alive,\\n            # see issue #18879.\\n            func_wrapper._closer = self._closer\\n            a = func_wrapper\\n        if not isinstance(a, int):\\n            setattr(self, name, a)\\n        return a\\n\\n    # The underlying __enter__ method returns the wrong object\\n    # (self.file) so override it to return the wrapper\\n    def __enter__(self):\\n        self.file.__enter__()\\n        return self\\n\\n    # Need to trap __exit__ as well to ensure the file gets\\n    # deleted when used in a with statement\\n    def __exit__(self, exc, value, tb):\\n        result = self.file.__exit__(exc, value, tb)\\n        self._closer.cleanup()\\n        return result\\n\\n    def close(self):\\n        \\\"\\\"\\\"\\n        Close the temporary file, possibly deleting it.\\n        \\\"\\\"\\\"\\n        self._closer.close()\\n\\n    # iter() doesn't use __getattr__ to find the __iter__ method\\n    def __iter__(self):\\n        # Don't return iter(self.file), but yield from it to avoid closing\\n        # file as long as it's being used as iterator (see issue #23700).  We\\n        # can't use 'yield from' here because iter(file) returns the file\\n        # object itself, which has a close method, and thus the file would get\\n        # closed when the generator is finalized, due to PEP380 semantics.\\n        for line in self.file:\\n            yield line\\n\\ndef NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,\\n                       newline=None, suffix=None, prefix=None,\\n                       dir=None, delete=True, *, errors=None,\\n                       delete_on_close=True):\\n    \\\"\\\"\\\"Create and return a temporary file.\\n    Arguments:\\n    'prefix', 'suffix', 'dir' -- as for mkstemp.\\n    'mode' -- the mode argument to io.open (default \\\"w+b\\\").\\n    'buffering' -- the buffer size argument to io.open (default -1).\\n    'encoding' -- the encoding argument to io.open (default None)\\n    'newline' -- the newline argument to io.open (default None)\\n    'delete' -- whether the file is automatically deleted (default True).\\n    'delete_on_close' -- if 'delete', whether the file is deleted on close\\n       (default True) or otherwise either on context manager exit\\n       (if context manager was used) or on object finalization. .\\n    'errors' -- the errors argument to io.open (default None)\\n    The file is created as mkstemp() would do it.\\n\\n    Returns an object with a file-like interface; the name of the file\\n    is accessible as its 'name' attribute.  The file will be automatically\\n    deleted when it is closed unless the 'delete' argument is set to False.\\n\\n    On POSIX, NamedTemporaryFiles cannot be automatically deleted if\\n    the creating process is terminated abruptly with a SIGKILL signal.\\n    Windows can delete the file even in this case.\\n    \\\"\\\"\\\"\\n\\n    prefix, suffix, dir, output_type = _sanitize_params(prefix, suffix, dir)\\n\\n    flags = _bin_openflags\\n\\n    # Setting O_TEMPORARY in the flags causes the OS to delete\\n    # the file when it is closed.  This is only supported by Windows.\\n    if _os.name == 'nt' and delete and delete_on_close:\\n        flags |= _os.O_TEMPORARY\\n\\n    if \\\"b\\\" not in mode:\\n        encoding = _io.text_encoding(encoding)\\n\\n    name = None\\n    def opener(*args):\\n        nonlocal name\\n        fd, name = _mkstemp_inner(dir, prefix, suffix, flags, output_type)\\n        return fd\\n    try:\\n        file = _io.open(dir, mode, buffering=buffering,\\n                        newline=newline, encoding=encoding, errors=errors,\\n                        opener=opener)\\n        try:\\n            raw = getattr(file, 'buffer', file)\\n            raw = getattr(raw, 'raw', raw)\\n            raw.name = name\\n            return _TemporaryFileWrapper(file, name, delete, delete_on_close)\\n        except:\\n            file.close()\\n            raise\\n    except:\\n        if name is not None and not (\\n            _os.name == 'nt' and delete and delete_on_close):\\n            _os.unlink(name)\\n        raise\\n\\nif _os.name != 'posix' or _sys.platform == 'cygwin':\\n    # On non-POSIX and Cygwin systems, assume that we cannot unlink a file\\n    # while it is open.\\n    TemporaryFile = NamedTemporaryFile\\n\\nelse:\\n    # Is the O_TMPFILE flag available and does it work?\\n    # The flag is set to False if os.open(dir, os.O_TMPFILE) raises an\\n    # IsADirectoryError exception\\n    _O_TMPFILE_WORKS = hasattr(_os, 'O_TMPFILE')\\n\\n    def TemporaryFile(mode='w+b', buffering=-1, encoding=None,\\n                      newline=None, suffix=None, prefix=None,\\n                      dir=None, *, errors=None):\\n        \\\"\\\"\\\"Create and return a temporary file.\\n        Arguments:\\n        'prefix', 'suffix', 'dir' -- as for mkstemp.\\n        'mode' -- the mode argument to io.open (default \\\"w+b\\\").\\n        'buffering' -- the buffer size argument to io.open (default -1).\\n        'encoding' -- the encoding argument to io.open (default None)\\n        'newline' -- the newline argument to io.open (default None)\\n        'errors' -- the errors argument to io.open (default None)\\n        The file is created as mkstemp() would do it.\\n\\n        Returns an object with a file-like interface.  The file has no\\n        name, and will cease to exist when it is closed.\\n        \\\"\\\"\\\"\\n        global _O_TMPFILE_WORKS\\n\\n        if \\\"b\\\" not in mode:\\n            encoding = _io.text_encoding(encoding)\\n\\n        prefix, suffix, dir, output_type = _sanitize_params(prefix, suffix, dir)\\n\\n        flags = _bin_openflags\\n        if _O_TMPFILE_WORKS:\\n            fd = None\\n            def opener(*args):\\n                nonlocal fd\\n                flags2 = (flags | _os.O_TMPFILE) & ~_os.O_CREAT\\n                fd = _os.open(dir, flags2, 0o600)\\n                return fd\\n            try:\\n                file = _io.open(dir, mode, buffering=buffering,\\n                                newline=newline, encoding=encoding,\\n                                errors=errors, opener=opener)\\n                raw = getattr(file, 'buffer', file)\\n                raw = getattr(raw, 'raw', raw)\\n                raw.name = fd\\n                return file\\n            except IsADirectoryError:\\n                # Linux kernel older than 3.11 ignores the O_TMPFILE flag:\\n                # O_TMPFILE is read as O_DIRECTORY. Trying to open a directory\\n                # with O_RDWR|O_DIRECTORY fails with IsADirectoryError, a\\n                # directory cannot be open to write. Set flag to False to not\\n                # try again.\\n                _O_TMPFILE_WORKS = False\\n            except OSError:\\n                # The filesystem of the directory does not support O_TMPFILE.\\n                # For example, OSError(95, 'Operation not supported').\\n                #\\n                # On Linux kernel older than 3.11, trying to open a regular\\n                # file (or a symbolic link to a regular file) with O_TMPFILE\\n                # fails with NotADirectoryError, because O_TMPFILE is read as\\n                # O_DIRECTORY.\\n                pass\\n            # Fallback to _mkstemp_inner().\\n\\n        fd = None\\n        def opener(*args):\\n            nonlocal fd\\n            fd, name = _mkstemp_inner(dir, prefix, suffix, flags, output_type)\\n            try:\\n                _os.unlink(name)\\n            except BaseException as e:\\n                _os.close(fd)\\n                raise\\n            return fd\\n        file = _io.open(dir, mode, buffering=buffering,\\n                        newline=newline, encoding=encoding, errors=errors,\\n                        opener=opener)\\n        raw = getattr(file, 'buffer', file)\\n        raw = getattr(raw, 'raw', raw)\\n        raw.name = fd\\n        return file\\n\\nclass SpooledTemporaryFile(_io.IOBase):\\n    \\\"\\\"\\\"Temporary file wrapper, specialized to switch from BytesIO\\n    or StringIO to a real file when it exceeds a certain size or\\n    when a fileno is needed.\\n    \\\"\\\"\\\"\\n    _rolled = False\\n\\n    def __init__(self, max_size=0, mode='w+b', buffering=-1,\\n                 encoding=None, newline=None,\\n                 suffix=None, prefix=None, dir=None, *, errors=None):\\n        if 'b' in mode:\\n            self._file = _io.BytesIO()\\n        else:\\n            encoding = _io.text_encoding(encoding)\\n            self._file = _io.TextIOWrapper(_io.BytesIO(),\\n                            encoding=encoding, errors=errors,\\n                            newline=newline)\\n        self._max_size = max_size\\n        self._rolled = False\\n        self._TemporaryFileArgs = {'mode': mode, 'buffering': buffering,\\n                                   'suffix': suffix, 'prefix': prefix,\\n                                   'encoding': encoding, 'newline': newline,\\n                                   'dir': dir, 'errors': errors}\\n\\n    __class_getitem__ = classmethod(_types.GenericAlias)\\n\\n    def _check(self, file):\\n        if self._rolled: return\\n        max_size = self._max_size\\n        if max_size and file.tell() > max_size:\\n            self.rollover()\\n\\n    def rollover(self):\\n        if self._rolled: return\\n        file = self._file\\n        newfile = self._file = TemporaryFile(**self._TemporaryFileArgs)\\n        del self._TemporaryFileArgs\\n\\n        pos = file.tell()\\n        if hasattr(newfile, 'buffer'):\\n            newfile.buffer.write(file.detach().getvalue())\\n        else:\\n            newfile.write(file.getvalue())\\n        newfile.seek(pos, 0)\\n\\n        self._rolled = True\\n\\n    # The method caching trick from NamedTemporaryFile\\n    # won't work here, because _file may change from a\\n    # BytesIO/StringIO instance to a real file. So we list\\n    # all the methods directly.\\n\\n    # Context management protocol\\n    def __enter__(self):\\n        if self._file.closed:\\n            raise ValueError(\\\"Cannot enter context with closed file\\\")\\n        return self\\n\\n    def __exit__(self, exc, value, tb):\\n        self._file.close()\\n\\n    # file protocol\\n    def __iter__(self):\\n        return self._file.__iter__()\\n\\n    def __del__(self):\\n        if not self.closed:\\n            _warnings.warn(\\n                \\\"Unclosed file {!r}\\\".format(self),\\n                ResourceWarning,\\n                stacklevel=2,\\n                source=self\\n            )\\n            self.close()\\n\\n    def close(self):\\n        self._file.close()\\n\\n    @property\\n    def closed(self):\\n        return self._file.closed\\n\\n    @property\\n    def encoding(self):\\n        return self._file.encoding\\n\\n    @property\\n    def errors(self):\\n        return self._file.errors\\n\\n    def fileno(self):\\n        self.rollover()\\n        return self._file.fileno()\\n\\n    def flush(self):\\n        self._file.flush()\\n\\n    def isatty(self):\\n        return self._file.isatty()\\n\\n    @property\\n    def mode(self):\\n        try:\\n            return self._file.mode\\n        except AttributeError:\\n            return self._TemporaryFileArgs['mode']\\n\\n    @property\\n    def name(self):\\n        try:\\n            return self._file.name\\n        except AttributeError:\\n            return None\\n\\n    @property\\n    def newlines(self):\\n        return self._file.newlines\\n\\n    def readable(self):\\n        return self._file.readable()\\n\\n    def read(self, *args):\\n        return self._file.read(*args)\\n\\n    def read1(self, *args):\\n        return self._file.read1(*args)\\n\\n    def readinto(self, b):\\n        return self._file.readinto(b)\\n\\n    def readinto1(self, b):\\n        return self._file.readinto1(b)\\n\\n    def readline(self, *args):\\n        return self._file.readline(*args)\\n\\n    def readlines(self, *args):\\n        return self._file.readlines(*args)\\n\\n    def seekable(self):\\n        return self._file.seekable()\\n\\n    def seek(self, *args):\\n        return self._file.seek(*args)\\n\\n    def tell(self):\\n        return self._file.tell()\\n\\n    def truncate(self, size=None):\\n        if size is None:\\n            return self._file.truncate()\\n        else:\\n            if size > self._max_size:\\n                self.rollover()\\n            return self._file.truncate(size)\\n\\n    def writable(self):\\n        return self._file.writable()\\n\\n    def write(self, s):\\n        file = self._file\\n        rv = file.write(s)\\n        self._check(file)\\n        return rv\\n\\n    def writelines(self, iterable):\\n        file = self._file\\n        rv = file.writelines(iterable)\\n        self._check(file)\\n        return rv\\n\\n    def detach(self):\\n        return self._file.detach()\\n\\n\\nclass TemporaryDirectory:\\n    \\\"\\\"\\\"Create and return a temporary directory.  This has the same\\n    behavior as mkdtemp but can be used as a context manager.  For\\n    example:\\n\\n        with TemporaryDirectory() as tmpdir:\\n            ...\\n\\n    Upon exiting the context, the directory and everything contained\\n    in it are removed (unless delete=False is passed or an exception\\n    is raised during cleanup and ignore_cleanup_errors is not True).\\n\\n    Optional Arguments:\\n        suffix - A str suffix for the directory name.  (see mkdtemp)\\n        prefix - A str prefix for the directory name.  (see mkdtemp)\\n        dir - A directory to create this temp dir in.  (see mkdtemp)\\n        ignore_cleanup_errors - False; ignore exceptions during cleanup?\\n        delete - True; whether the directory is automatically deleted.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, suffix=None, prefix=None, dir=None,\\n                 ignore_cleanup_errors=False, *, delete=True):\\n        self.name = mkdtemp(suffix, prefix, dir)\\n        self._ignore_cleanup_errors = ignore_cleanup_errors\\n        self._delete = delete\\n        self._finalizer = _weakref.finalize(\\n            self, self._cleanup, self.name,\\n            warn_message=\\\"Implicitly cleaning up {!r}\\\".format(self),\\n            ignore_errors=self._ignore_cleanup_errors, delete=self._delete)\\n\\n    @classmethod\\n    def _rmtree(cls, name, ignore_errors=False, repeated=False):\\n        def onexc(func, path, exc):\\n            if isinstance(exc, PermissionError):\\n                if repeated and path == name:\\n                    if ignore_errors:\\n                        return\\n                    raise\\n\\n                try:\\n                    if path != name:\\n                        _resetperms(_os.path.dirname(path))\\n                    _resetperms(path)\\n\\n                    try:\\n                        _os.unlink(path)\\n                    except IsADirectoryError:\\n                        cls._rmtree(path, ignore_errors=ignore_errors)\\n                    except PermissionError:\\n                        # The PermissionError handler was originally added for\\n                        # FreeBSD in directories, but it seems that it is raised\\n                        # on Windows too.\\n                        # bpo-43153: Calling _rmtree again may\\n                        # raise NotADirectoryError and mask the PermissionError.\\n                        # So we must re-raise the current PermissionError if\\n                        # path is not a directory.\\n                        if not _os.path.isdir(path) or _os.path.isjunction(path):\\n                            if ignore_errors:\\n                                return\\n                            raise\\n                        cls._rmtree(path, ignore_errors=ignore_errors,\\n                                    repeated=(path == name))\\n                except FileNotFoundError:\\n                    pass\\n            elif isinstance(exc, FileNotFoundError):\\n                pass\\n            else:\\n                if not ignore_errors:\\n                    raise\\n\\n        _rmtree(name, onexc=onexc)\\n\\n    @classmethod\\n    def _cleanup(cls, name, warn_message, ignore_errors=False, delete=True):\\n        if delete:\\n            cls._rmtree(name, ignore_errors=ignore_errors)\\n            _warnings.warn(warn_message, ResourceWarning)\\n\\n    def __repr__(self):\\n        return \\\"<{} {!r}>\\\".format(self.__class__.__name__, self.name)\\n\\n    def __enter__(self):\\n        return self.name\\n\\n    def __exit__(self, exc, value, tb):\\n        if self._delete:\\n            self.cleanup()\\n\\n    def cleanup(self):\\n        if self._finalizer.detach() or _os.path.exists(self.name):\\n            self._rmtree(self.name, ignore_errors=self._ignore_cleanup_errors)\\n\\n    __class_getitem__ = classmethod(_types.GenericAlias)\\n\", 1091], \"/usr/lib/python3.12/weakref.py\": [\"\\\"\\\"\\\"Weak reference support for Python.\\n\\nThis module is an implementation of PEP 205:\\n\\nhttps://peps.python.org/pep-0205/\\n\\\"\\\"\\\"\\n\\n# Naming convention: Variables named \\\"wr\\\" are weak reference objects;\\n# they are called this instead of \\\"ref\\\" to avoid name collisions with\\n# the module-global ref() function imported from _weakref.\\n\\nfrom _weakref import (\\n     getweakrefcount,\\n     getweakrefs,\\n     ref,\\n     proxy,\\n     CallableProxyType,\\n     ProxyType,\\n     ReferenceType,\\n     _remove_dead_weakref)\\n\\nfrom _weakrefset import WeakSet, _IterationGuard\\n\\nimport _collections_abc  # Import after _weakref to avoid circular import.\\nimport sys\\nimport itertools\\n\\nProxyTypes = (ProxyType, CallableProxyType)\\n\\n__all__ = [\\\"ref\\\", \\\"proxy\\\", \\\"getweakrefcount\\\", \\\"getweakrefs\\\",\\n           \\\"WeakKeyDictionary\\\", \\\"ReferenceType\\\", \\\"ProxyType\\\",\\n           \\\"CallableProxyType\\\", \\\"ProxyTypes\\\", \\\"WeakValueDictionary\\\",\\n           \\\"WeakSet\\\", \\\"WeakMethod\\\", \\\"finalize\\\"]\\n\\n\\n_collections_abc.MutableSet.register(WeakSet)\\n\\nclass WeakMethod(ref):\\n    \\\"\\\"\\\"\\n    A custom `weakref.ref` subclass which simulates a weak reference to\\n    a bound method, working around the lifetime problem of bound methods.\\n    \\\"\\\"\\\"\\n\\n    __slots__ = \\\"_func_ref\\\", \\\"_meth_type\\\", \\\"_alive\\\", \\\"__weakref__\\\"\\n\\n    def __new__(cls, meth, callback=None):\\n        try:\\n            obj = meth.__self__\\n            func = meth.__func__\\n        except AttributeError:\\n            raise TypeError(\\\"argument should be a bound method, not {}\\\"\\n                            .format(type(meth))) from None\\n        def _cb(arg):\\n            # The self-weakref trick is needed to avoid creating a reference\\n            # cycle.\\n            self = self_wr()\\n            if self._alive:\\n                self._alive = False\\n                if callback is not None:\\n                    callback(self)\\n        self = ref.__new__(cls, obj, _cb)\\n        self._func_ref = ref(func, _cb)\\n        self._meth_type = type(meth)\\n        self._alive = True\\n        self_wr = ref(self)\\n        return self\\n\\n    def __call__(self):\\n        obj = super().__call__()\\n        func = self._func_ref()\\n        if obj is None or func is None:\\n            return None\\n        return self._meth_type(func, obj)\\n\\n    def __eq__(self, other):\\n        if isinstance(other, WeakMethod):\\n            if not self._alive or not other._alive:\\n                return self is other\\n            return ref.__eq__(self, other) and self._func_ref == other._func_ref\\n        return NotImplemented\\n\\n    def __ne__(self, other):\\n        if isinstance(other, WeakMethod):\\n            if not self._alive or not other._alive:\\n                return self is not other\\n            return ref.__ne__(self, other) or self._func_ref != other._func_ref\\n        return NotImplemented\\n\\n    __hash__ = ref.__hash__\\n\\n\\nclass WeakValueDictionary(_collections_abc.MutableMapping):\\n    \\\"\\\"\\\"Mapping class that references values weakly.\\n\\n    Entries in the dictionary will be discarded when no strong\\n    reference to the value exists anymore\\n    \\\"\\\"\\\"\\n    # We inherit the constructor without worrying about the input\\n    # dictionary; since it uses our .update() method, we get the right\\n    # checks (if the other dictionary is a WeakValueDictionary,\\n    # objects are unwrapped on the way out, and we always wrap on the\\n    # way in).\\n\\n    def __init__(self, other=(), /, **kw):\\n        def remove(wr, selfref=ref(self), _atomic_removal=_remove_dead_weakref):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(wr.key)\\n                else:\\n                    # Atomic removal is necessary since this function\\n                    # can be called asynchronously by the GC\\n                    _atomic_removal(self.data, wr.key)\\n        self._remove = remove\\n        # A list of keys to be removed\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self.data = {}\\n        self.update(other, **kw)\\n\\n    def _commit_removals(self, _atomic_removal=_remove_dead_weakref):\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        # We shouldn't encounter any KeyError, because this method should\\n        # always be called *before* mutating the dict.\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n            _atomic_removal(d, key)\\n\\n    def __getitem__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        o = self.data[key]()\\n        if o is None:\\n            raise KeyError(key)\\n        else:\\n            return o\\n\\n    def __delitem__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        del self.data[key]\\n\\n    def __len__(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        return len(self.data)\\n\\n    def __contains__(self, key):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            return False\\n        return o is not None\\n\\n    def __repr__(self):\\n        return \\\"<%s at %#x>\\\" % (self.__class__.__name__, id(self))\\n\\n    def __setitem__(self, key, value):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data[key] = KeyedRef(value, self._remove, key)\\n\\n    def copy(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        new = WeakValueDictionary()\\n        with _IterationGuard(self):\\n            for key, wr in self.data.items():\\n                o = wr()\\n                if o is not None:\\n                    new[key] = o\\n        return new\\n\\n    __copy__ = copy\\n\\n    def __deepcopy__(self, memo):\\n        from copy import deepcopy\\n        if self._pending_removals:\\n            self._commit_removals()\\n        new = self.__class__()\\n        with _IterationGuard(self):\\n            for key, wr in self.data.items():\\n                o = wr()\\n                if o is not None:\\n                    new[deepcopy(key, memo)] = o\\n        return new\\n\\n    def get(self, key, default=None):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            wr = self.data[key]\\n        except KeyError:\\n            return default\\n        else:\\n            o = wr()\\n            if o is None:\\n                # This should only happen\\n                return default\\n            else:\\n                return o\\n\\n    def items(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for k, wr in self.data.items():\\n                v = wr()\\n                if v is not None:\\n                    yield k, v\\n\\n    def keys(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for k, wr in self.data.items():\\n                if wr() is not None:\\n                    yield k\\n\\n    __iter__ = keys\\n\\n    def itervaluerefs(self):\\n        \\\"\\\"\\\"Return an iterator that yields the weak references to the values.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the values around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            yield from self.data.values()\\n\\n    def values(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        with _IterationGuard(self):\\n            for wr in self.data.values():\\n                obj = wr()\\n                if obj is not None:\\n                    yield obj\\n\\n    def popitem(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        while True:\\n            key, wr = self.data.popitem()\\n            o = wr()\\n            if o is not None:\\n                return key, o\\n\\n    def pop(self, key, *args):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        try:\\n            o = self.data.pop(key)()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if args:\\n                return args[0]\\n            else:\\n                raise KeyError(key)\\n        else:\\n            return o\\n\\n    def setdefault(self, key, default=None):\\n        try:\\n            o = self.data[key]()\\n        except KeyError:\\n            o = None\\n        if o is None:\\n            if self._pending_removals:\\n                self._commit_removals()\\n            self.data[key] = KeyedRef(default, self._remove, key)\\n            return default\\n        else:\\n            return o\\n\\n    def update(self, other=None, /, **kwargs):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        d = self.data\\n        if other is not None:\\n            if not hasattr(other, \\\"items\\\"):\\n                other = dict(other)\\n            for key, o in other.items():\\n                d[key] = KeyedRef(o, self._remove, key)\\n        for key, o in kwargs.items():\\n            d[key] = KeyedRef(o, self._remove, key)\\n\\n    def valuerefs(self):\\n        \\\"\\\"\\\"Return a list of weak references to the values.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the values around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        if self._pending_removals:\\n            self._commit_removals()\\n        return list(self.data.values())\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.copy()\\n            c.update(other)\\n            return c\\n        return NotImplemented\\n\\n    def __ror__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.__class__()\\n            c.update(other)\\n            c.update(self)\\n            return c\\n        return NotImplemented\\n\\n\\nclass KeyedRef(ref):\\n    \\\"\\\"\\\"Specialized reference that includes a key corresponding to the value.\\n\\n    This is used in the WeakValueDictionary to avoid having to create\\n    a function object for each key stored in the mapping.  A shared\\n    callback object can use the 'key' attribute of a KeyedRef instead\\n    of getting a reference to the key from an enclosing scope.\\n\\n    \\\"\\\"\\\"\\n\\n    __slots__ = \\\"key\\\",\\n\\n    def __new__(type, ob, callback, key):\\n        self = ref.__new__(type, ob, callback)\\n        self.key = key\\n        return self\\n\\n    def __init__(self, ob, callback, key):\\n        super().__init__(ob, callback)\\n\\n\\nclass WeakKeyDictionary(_collections_abc.MutableMapping):\\n    \\\"\\\"\\\" Mapping class that references keys weakly.\\n\\n    Entries in the dictionary will be discarded when there is no\\n    longer a strong reference to the key. This can be used to\\n    associate additional data with an object owned by other parts of\\n    an application without adding attributes to those objects. This\\n    can be especially useful with objects that override attribute\\n    accesses.\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, dict=None):\\n        self.data = {}\\n        def remove(k, selfref=ref(self)):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(k)\\n                else:\\n                    try:\\n                        del self.data[k]\\n                    except KeyError:\\n                        pass\\n        self._remove = remove\\n        # A list of dead weakrefs (keys to be removed)\\n        self._pending_removals = []\\n        self._iterating = set()\\n        self._dirty_len = False\\n        if dict is not None:\\n            self.update(dict)\\n\\n    def _commit_removals(self):\\n        # NOTE: We don't need to call this method before mutating the dict,\\n        # because a dead weakref never compares equal to a live weakref,\\n        # even if they happened to refer to equal objects.\\n        # However, it means keys may already have been removed.\\n        pop = self._pending_removals.pop\\n        d = self.data\\n        while True:\\n            try:\\n                key = pop()\\n            except IndexError:\\n                return\\n\\n            try:\\n                del d[key]\\n            except KeyError:\\n                pass\\n\\n    def _scrub_removals(self):\\n        d = self.data\\n        self._pending_removals = [k for k in self._pending_removals if k in d]\\n        self._dirty_len = False\\n\\n    def __delitem__(self, key):\\n        self._dirty_len = True\\n        del self.data[ref(key)]\\n\\n    def __getitem__(self, key):\\n        return self.data[ref(key)]\\n\\n    def __len__(self):\\n        if self._dirty_len and self._pending_removals:\\n            # self._pending_removals may still contain keys which were\\n            # explicitly removed, we have to scrub them (see issue #21173).\\n            self._scrub_removals()\\n        return len(self.data) - len(self._pending_removals)\\n\\n    def __repr__(self):\\n        return \\\"<%s at %#x>\\\" % (self.__class__.__name__, id(self))\\n\\n    def __setitem__(self, key, value):\\n        self.data[ref(key, self._remove)] = value\\n\\n    def copy(self):\\n        new = WeakKeyDictionary()\\n        with _IterationGuard(self):\\n            for key, value in self.data.items():\\n                o = key()\\n                if o is not None:\\n                    new[o] = value\\n        return new\\n\\n    __copy__ = copy\\n\\n    def __deepcopy__(self, memo):\\n        from copy import deepcopy\\n        new = self.__class__()\\n        with _IterationGuard(self):\\n            for key, value in self.data.items():\\n                o = key()\\n                if o is not None:\\n                    new[o] = deepcopy(value, memo)\\n        return new\\n\\n    def get(self, key, default=None):\\n        return self.data.get(ref(key),default)\\n\\n    def __contains__(self, key):\\n        try:\\n            wr = ref(key)\\n        except TypeError:\\n            return False\\n        return wr in self.data\\n\\n    def items(self):\\n        with _IterationGuard(self):\\n            for wr, value in self.data.items():\\n                key = wr()\\n                if key is not None:\\n                    yield key, value\\n\\n    def keys(self):\\n        with _IterationGuard(self):\\n            for wr in self.data:\\n                obj = wr()\\n                if obj is not None:\\n                    yield obj\\n\\n    __iter__ = keys\\n\\n    def values(self):\\n        with _IterationGuard(self):\\n            for wr, value in self.data.items():\\n                if wr() is not None:\\n                    yield value\\n\\n    def keyrefs(self):\\n        \\\"\\\"\\\"Return a list of weak references to the keys.\\n\\n        The references are not guaranteed to be 'live' at the time\\n        they are used, so the result of calling the references needs\\n        to be checked before being used.  This can be used to avoid\\n        creating references that will cause the garbage collector to\\n        keep the keys around longer than needed.\\n\\n        \\\"\\\"\\\"\\n        return list(self.data)\\n\\n    def popitem(self):\\n        self._dirty_len = True\\n        while True:\\n            key, value = self.data.popitem()\\n            o = key()\\n            if o is not None:\\n                return o, value\\n\\n    def pop(self, key, *args):\\n        self._dirty_len = True\\n        return self.data.pop(ref(key), *args)\\n\\n    def setdefault(self, key, default=None):\\n        return self.data.setdefault(ref(key, self._remove),default)\\n\\n    def update(self, dict=None, /, **kwargs):\\n        d = self.data\\n        if dict is not None:\\n            if not hasattr(dict, \\\"items\\\"):\\n                dict = type({})(dict)\\n            for key, value in dict.items():\\n                d[ref(key, self._remove)] = value\\n        if len(kwargs):\\n            self.update(kwargs)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def __or__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.copy()\\n            c.update(other)\\n            return c\\n        return NotImplemented\\n\\n    def __ror__(self, other):\\n        if isinstance(other, _collections_abc.Mapping):\\n            c = self.__class__()\\n            c.update(other)\\n            c.update(self)\\n            return c\\n        return NotImplemented\\n\\n\\nclass finalize:\\n    \\\"\\\"\\\"Class for finalization of weakrefable objects\\n\\n    finalize(obj, func, *args, **kwargs) returns a callable finalizer\\n    object which will be called when obj is garbage collected. The\\n    first time the finalizer is called it evaluates func(*arg, **kwargs)\\n    and returns the result. After this the finalizer is dead, and\\n    calling it just returns None.\\n\\n    When the program exits any remaining finalizers for which the\\n    atexit attribute is true will be run in reverse order of creation.\\n    By default atexit is true.\\n    \\\"\\\"\\\"\\n\\n    # Finalizer objects don't have any state of their own.  They are\\n    # just used as keys to lookup _Info objects in the registry.  This\\n    # ensures that they cannot be part of a ref-cycle.\\n\\n    __slots__ = ()\\n    _registry = {}\\n    _shutdown = False\\n    _index_iter = itertools.count()\\n    _dirty = False\\n    _registered_with_atexit = False\\n\\n    class _Info:\\n        __slots__ = (\\\"weakref\\\", \\\"func\\\", \\\"args\\\", \\\"kwargs\\\", \\\"atexit\\\", \\\"index\\\")\\n\\n    def __init__(self, obj, func, /, *args, **kwargs):\\n        if not self._registered_with_atexit:\\n            # We may register the exit function more than once because\\n            # of a thread race, but that is harmless\\n            import atexit\\n            atexit.register(self._exitfunc)\\n            finalize._registered_with_atexit = True\\n        info = self._Info()\\n        info.weakref = ref(obj, self)\\n        info.func = func\\n        info.args = args\\n        info.kwargs = kwargs or None\\n        info.atexit = True\\n        info.index = next(self._index_iter)\\n        self._registry[self] = info\\n        finalize._dirty = True\\n\\n    def __call__(self, _=None):\\n        \\\"\\\"\\\"If alive then mark as dead and return func(*args, **kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.pop(self, None)\\n        if info and not self._shutdown:\\n            return info.func(*info.args, **(info.kwargs or {}))\\n\\n    def detach(self):\\n        \\\"\\\"\\\"If alive then mark as dead and return (obj, func, args, kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is not None and self._registry.pop(self, None):\\n            return (obj, info.func, info.args, info.kwargs or {})\\n\\n    def peek(self):\\n        \\\"\\\"\\\"If alive then return (obj, func, args, kwargs);\\n        otherwise return None\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is not None:\\n            return (obj, info.func, info.args, info.kwargs or {})\\n\\n    @property\\n    def alive(self):\\n        \\\"\\\"\\\"Whether finalizer is alive\\\"\\\"\\\"\\n        return self in self._registry\\n\\n    @property\\n    def atexit(self):\\n        \\\"\\\"\\\"Whether finalizer should be called at exit\\\"\\\"\\\"\\n        info = self._registry.get(self)\\n        return bool(info) and info.atexit\\n\\n    @atexit.setter\\n    def atexit(self, value):\\n        info = self._registry.get(self)\\n        if info:\\n            info.atexit = bool(value)\\n\\n    def __repr__(self):\\n        info = self._registry.get(self)\\n        obj = info and info.weakref()\\n        if obj is None:\\n            return '<%s object at %#x; dead>' % (type(self).__name__, id(self))\\n        else:\\n            return '<%s object at %#x; for %r at %#x>' % \\\\\\n                (type(self).__name__, id(self), type(obj).__name__, id(obj))\\n\\n    @classmethod\\n    def _select_for_exit(cls):\\n        # Return live finalizers marked for exit, oldest first\\n        L = [(f,i) for (f,i) in cls._registry.items() if i.atexit]\\n        L.sort(key=lambda item:item[1].index)\\n        return [f for (f,i) in L]\\n\\n    @classmethod\\n    def _exitfunc(cls):\\n        # At shutdown invoke finalizers for which atexit is true.\\n        # This is called once all other non-daemonic threads have been\\n        # joined.\\n        reenable_gc = False\\n        try:\\n            if cls._registry:\\n                import gc\\n                if gc.isenabled():\\n                    reenable_gc = True\\n                    gc.disable()\\n                pending = None\\n                while True:\\n                    if pending is None or finalize._dirty:\\n                        pending = cls._select_for_exit()\\n                        finalize._dirty = False\\n                    if not pending:\\n                        break\\n                    f = pending.pop()\\n                    try:\\n                        # gc is disabled, so (assuming no daemonic\\n                        # threads) the following is the only line in\\n                        # this function which might trigger creation\\n                        # of a new finalizer\\n                        f()\\n                    except Exception:\\n                        sys.excepthook(*sys.exc_info())\\n                    assert f not in cls._registry\\n        finally:\\n            # prevent any more finalizers from executing during shutdown\\n            finalize._shutdown = True\\n            if reenable_gc:\\n                gc.enable()\\n\", 674], \"/usr/lib/python3.12/_weakrefset.py\": [\"# Access WeakSet through the weakref module.\\n# This code is separated-out because it is needed\\n# by abc.py to load everything else at startup.\\n\\nfrom _weakref import ref\\nfrom types import GenericAlias\\n\\n__all__ = ['WeakSet']\\n\\n\\nclass _IterationGuard:\\n    # This context manager registers itself in the current iterators of the\\n    # weak container, such as to delay all removals until the context manager\\n    # exits.\\n    # This technique should be relatively thread-safe (since sets are).\\n\\n    def __init__(self, weakcontainer):\\n        # Don't create cycles\\n        self.weakcontainer = ref(weakcontainer)\\n\\n    def __enter__(self):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            w._iterating.add(self)\\n        return self\\n\\n    def __exit__(self, e, t, b):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            s = w._iterating\\n            s.remove(self)\\n            if not s:\\n                w._commit_removals()\\n\\n\\nclass WeakSet:\\n    def __init__(self, data=None):\\n        self.data = set()\\n        def _remove(item, selfref=ref(self)):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(item)\\n                else:\\n                    self.data.discard(item)\\n        self._remove = _remove\\n        # A list of keys to be removed\\n        self._pending_removals = []\\n        self._iterating = set()\\n        if data is not None:\\n            self.update(data)\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        discard = self.data.discard\\n        while True:\\n            try:\\n                item = pop()\\n            except IndexError:\\n                return\\n            discard(item)\\n\\n    def __iter__(self):\\n        with _IterationGuard(self):\\n            for itemref in self.data:\\n                item = itemref()\\n                if item is not None:\\n                    # Caveat: the iterator will keep a strong reference to\\n                    # `item` until it is resumed or closed.\\n                    yield item\\n\\n    def __len__(self):\\n        return len(self.data) - len(self._pending_removals)\\n\\n    def __contains__(self, item):\\n        try:\\n            wr = ref(item)\\n        except TypeError:\\n            return False\\n        return wr in self.data\\n\\n    def __reduce__(self):\\n        return self.__class__, (list(self),), self.__getstate__()\\n\\n    def add(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.add(ref(item, self._remove))\\n\\n    def clear(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.clear()\\n\\n    def copy(self):\\n        return self.__class__(self)\\n\\n    def pop(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        while True:\\n            try:\\n                itemref = self.data.pop()\\n            except KeyError:\\n                raise KeyError('pop from empty WeakSet') from None\\n            item = itemref()\\n            if item is not None:\\n                return item\\n\\n    def remove(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.remove(ref(item))\\n\\n    def discard(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.discard(ref(item))\\n\\n    def update(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        for element in other:\\n            self.add(element)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def difference(self, other):\\n        newset = self.copy()\\n        newset.difference_update(other)\\n        return newset\\n    __sub__ = difference\\n\\n    def difference_update(self, other):\\n        self.__isub__(other)\\n    def __isub__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.difference_update(ref(item) for item in other)\\n        return self\\n\\n    def intersection(self, other):\\n        return self.__class__(item for item in other if item in self)\\n    __and__ = intersection\\n\\n    def intersection_update(self, other):\\n        self.__iand__(other)\\n    def __iand__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.intersection_update(ref(item) for item in other)\\n        return self\\n\\n    def issubset(self, other):\\n        return self.data.issubset(ref(item) for item in other)\\n    __le__ = issubset\\n\\n    def __lt__(self, other):\\n        return self.data < set(map(ref, other))\\n\\n    def issuperset(self, other):\\n        return self.data.issuperset(ref(item) for item in other)\\n    __ge__ = issuperset\\n\\n    def __gt__(self, other):\\n        return self.data > set(map(ref, other))\\n\\n    def __eq__(self, other):\\n        if not isinstance(other, self.__class__):\\n            return NotImplemented\\n        return self.data == set(map(ref, other))\\n\\n    def symmetric_difference(self, other):\\n        newset = self.copy()\\n        newset.symmetric_difference_update(other)\\n        return newset\\n    __xor__ = symmetric_difference\\n\\n    def symmetric_difference_update(self, other):\\n        self.__ixor__(other)\\n    def __ixor__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.symmetric_difference_update(ref(item, self._remove) for item in other)\\n        return self\\n\\n    def union(self, other):\\n        return self.__class__(e for s in (self, other) for e in s)\\n    __or__ = union\\n\\n    def isdisjoint(self, other):\\n        return len(self.intersection(other)) == 0\\n\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\", 205], \"/usr/lib/python3.12/multiprocessing/popen_fork.py\": [\"import os\\nimport signal\\n\\nfrom . import util\\n\\n__all__ = ['Popen']\\n\\n#\\n# Start child process using fork\\n#\\n\\nclass Popen(object):\\n    method = 'fork'\\n\\n    def __init__(self, process_obj):\\n        util._flush_std_streams()\\n        self.returncode = None\\n        self.finalizer = None\\n        self._launch(process_obj)\\n\\n    def duplicate_for_child(self, fd):\\n        return fd\\n\\n    def poll(self, flag=os.WNOHANG):\\n        if self.returncode is None:\\n            try:\\n                pid, sts = os.waitpid(self.pid, flag)\\n            except OSError:\\n                # Child process not yet created. See #1731717\\n                # e.errno == errno.ECHILD == 10\\n                return None\\n            if pid == self.pid:\\n                self.returncode = os.waitstatus_to_exitcode(sts)\\n        return self.returncode\\n\\n    def wait(self, timeout=None):\\n        if self.returncode is None:\\n            if timeout is not None:\\n                from multiprocessing.connection import wait\\n                if not wait([self.sentinel], timeout):\\n                    return None\\n            # This shouldn't block if wait() returned successfully.\\n            return self.poll(os.WNOHANG if timeout == 0.0 else 0)\\n        return self.returncode\\n\\n    def _send_signal(self, sig):\\n        if self.returncode is None:\\n            try:\\n                os.kill(self.pid, sig)\\n            except ProcessLookupError:\\n                pass\\n            except OSError:\\n                if self.wait(timeout=0.1) is None:\\n                    raise\\n\\n    def terminate(self):\\n        self._send_signal(signal.SIGTERM)\\n\\n    def kill(self):\\n        self._send_signal(signal.SIGKILL)\\n\\n    def _launch(self, process_obj):\\n        code = 1\\n        parent_r, child_w = os.pipe()\\n        child_r, parent_w = os.pipe()\\n        self.pid = os.fork()\\n        if self.pid == 0:\\n            try:\\n                os.close(parent_r)\\n                os.close(parent_w)\\n                code = process_obj._bootstrap(parent_sentinel=child_r)\\n            finally:\\n                os._exit(code)\\n        else:\\n            os.close(child_w)\\n            os.close(child_r)\\n            self.finalizer = util.Finalize(self, util.close_fds,\\n                                           (parent_r, parent_w,))\\n            self.sentinel = parent_r\\n\\n    def close(self):\\n        if self.finalizer is not None:\\n            self.finalizer()\\n\", 83], \"/usr/lib/python3.12/threading.py\": [\"\\\"\\\"\\\"Thread module emulating a subset of Java's threading model.\\\"\\\"\\\"\\n\\nimport os as _os\\nimport sys as _sys\\nimport _thread\\nimport functools\\n\\nfrom time import monotonic as _time\\nfrom _weakrefset import WeakSet\\nfrom itertools import count as _count\\ntry:\\n    from _collections import deque as _deque\\nexcept ImportError:\\n    from collections import deque as _deque\\n\\n# Note regarding PEP 8 compliant names\\n#  This threading model was originally inspired by Java, and inherited\\n# the convention of camelCase function and method names from that\\n# language. Those original names are not in any imminent danger of\\n# being deprecated (even for Py3k),so this module provides them as an\\n# alias for the PEP 8 compliant names\\n# Note that using the new PEP 8 compliant names facilitates substitution\\n# with the multiprocessing module, which doesn't provide the old\\n# Java inspired names.\\n\\n__all__ = ['get_ident', 'active_count', 'Condition', 'current_thread',\\n           'enumerate', 'main_thread', 'TIMEOUT_MAX',\\n           'Event', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Thread',\\n           'Barrier', 'BrokenBarrierError', 'Timer', 'ThreadError',\\n           'setprofile', 'settrace', 'local', 'stack_size',\\n           'excepthook', 'ExceptHookArgs', 'gettrace', 'getprofile',\\n           'setprofile_all_threads','settrace_all_threads']\\n\\n# Rename some stuff so \\\"from threading import *\\\" is safe\\n_start_new_thread = _thread.start_new_thread\\n_daemon_threads_allowed = _thread.daemon_threads_allowed\\n_allocate_lock = _thread.allocate_lock\\n_set_sentinel = _thread._set_sentinel\\nget_ident = _thread.get_ident\\ntry:\\n    _is_main_interpreter = _thread._is_main_interpreter\\nexcept AttributeError:\\n    # See https://github.com/python/cpython/issues/112826.\\n    # We can pretend a subinterpreter is the main interpreter for the\\n    # sake of _shutdown(), since that only means we do not wait for the\\n    # subinterpreter's threads to finish.  Instead, they will be stopped\\n    # later by the mechanism we use for daemon threads.  The likelihood\\n    # of this case is small because rarely will the _thread module be\\n    # replaced by a module without _is_main_interpreter().\\n    # Furthermore, this is all irrelevant in applications\\n    # that do not use subinterpreters.\\n    def _is_main_interpreter():\\n        return True\\ntry:\\n    get_native_id = _thread.get_native_id\\n    _HAVE_THREAD_NATIVE_ID = True\\n    __all__.append('get_native_id')\\nexcept AttributeError:\\n    _HAVE_THREAD_NATIVE_ID = False\\nThreadError = _thread.error\\ntry:\\n    _CRLock = _thread.RLock\\nexcept AttributeError:\\n    _CRLock = None\\nTIMEOUT_MAX = _thread.TIMEOUT_MAX\\ndel _thread\\n\\n\\n# Support for profile and trace hooks\\n\\n_profile_hook = None\\n_trace_hook = None\\n\\ndef setprofile(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    global _profile_hook\\n    _profile_hook = func\\n\\ndef setprofile_all_threads(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    setprofile(func)\\n    _sys._setprofileallthreads(func)\\n\\ndef getprofile():\\n    \\\"\\\"\\\"Get the profiler function as set by threading.setprofile().\\\"\\\"\\\"\\n    return _profile_hook\\n\\ndef settrace(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    global _trace_hook\\n    _trace_hook = func\\n\\ndef settrace_all_threads(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    settrace(func)\\n    _sys._settraceallthreads(func)\\n\\ndef gettrace():\\n    \\\"\\\"\\\"Get the trace function as set by threading.settrace().\\\"\\\"\\\"\\n    return _trace_hook\\n\\n# Synchronization classes\\n\\nLock = _allocate_lock\\n\\ndef RLock(*args, **kwargs):\\n    \\\"\\\"\\\"Factory function that returns a new reentrant lock.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it again\\n    without blocking; the thread must release it once for each time it has\\n    acquired it.\\n\\n    \\\"\\\"\\\"\\n    if _CRLock is None:\\n        return _PyRLock(*args, **kwargs)\\n    return _CRLock(*args, **kwargs)\\n\\nclass _RLock:\\n    \\\"\\\"\\\"This class implements reentrant lock objects.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it\\n    again without blocking; the thread must release it once for each time it\\n    has acquired it.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self):\\n        self._block = _allocate_lock()\\n        self._owner = None\\n        self._count = 0\\n\\n    def __repr__(self):\\n        owner = self._owner\\n        try:\\n            owner = _active[owner].name\\n        except KeyError:\\n            pass\\n        return \\\"<%s %s.%s object owner=%r count=%d at %s>\\\" % (\\n            \\\"locked\\\" if self._block.locked() else \\\"unlocked\\\",\\n            self.__class__.__module__,\\n            self.__class__.__qualname__,\\n            owner,\\n            self._count,\\n            hex(id(self))\\n        )\\n\\n    def _at_fork_reinit(self):\\n        self._block._at_fork_reinit()\\n        self._owner = None\\n        self._count = 0\\n\\n    def acquire(self, blocking=True, timeout=-1):\\n        \\\"\\\"\\\"Acquire a lock, blocking or non-blocking.\\n\\n        When invoked without arguments: if this thread already owns the lock,\\n        increment the recursion level by one, and return immediately. Otherwise,\\n        if another thread owns the lock, block until the lock is unlocked. Once\\n        the lock is unlocked (not owned by any thread), then grab ownership, set\\n        the recursion level to one, and return. If more than one thread is\\n        blocked waiting until the lock is unlocked, only one at a time will be\\n        able to grab ownership of the lock. There is no return value in this\\n        case.\\n\\n        When invoked with the blocking argument set to true, do the same thing\\n        as when called without arguments, and return true.\\n\\n        When invoked with the blocking argument set to false, do not block. If a\\n        call without an argument would block, return false immediately;\\n        otherwise, do the same thing as when called without arguments, and\\n        return true.\\n\\n        When invoked with the floating-point timeout argument set to a positive\\n        value, block for at most the number of seconds specified by timeout\\n        and as long as the lock cannot be acquired.  Return true if the lock has\\n        been acquired, false if the timeout has elapsed.\\n\\n        \\\"\\\"\\\"\\n        me = get_ident()\\n        if self._owner == me:\\n            self._count += 1\\n            return 1\\n        rc = self._block.acquire(blocking, timeout)\\n        if rc:\\n            self._owner = me\\n            self._count = 1\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self):\\n        \\\"\\\"\\\"Release a lock, decrementing the recursion level.\\n\\n        If after the decrement it is zero, reset the lock to unlocked (not owned\\n        by any thread), and if any other threads are blocked waiting for the\\n        lock to become unlocked, allow exactly one of them to proceed. If after\\n        the decrement the recursion level is still nonzero, the lock remains\\n        locked and owned by the calling thread.\\n\\n        Only call this method when the calling thread owns the lock. A\\n        RuntimeError is raised if this method is called when the lock is\\n        unlocked.\\n\\n        There is no return value.\\n\\n        \\\"\\\"\\\"\\n        if self._owner != get_ident():\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        self._count = count = self._count - 1\\n        if not count:\\n            self._owner = None\\n            self._block.release()\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n    # Internal methods used by condition variables\\n\\n    def _acquire_restore(self, state):\\n        self._block.acquire()\\n        self._count, self._owner = state\\n\\n    def _release_save(self):\\n        if self._count == 0:\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        count = self._count\\n        self._count = 0\\n        owner = self._owner\\n        self._owner = None\\n        self._block.release()\\n        return (count, owner)\\n\\n    def _is_owned(self):\\n        return self._owner == get_ident()\\n\\n    # Internal method used for reentrancy checks\\n\\n    def _recursion_count(self):\\n        if self._owner != get_ident():\\n            return 0\\n        return self._count\\n\\n_PyRLock = _RLock\\n\\n\\nclass Condition:\\n    \\\"\\\"\\\"Class that implements a condition variable.\\n\\n    A condition variable allows one or more threads to wait until they are\\n    notified by another thread.\\n\\n    If the lock argument is given and not None, it must be a Lock or RLock\\n    object, and it is used as the underlying lock. Otherwise, a new RLock object\\n    is created and used as the underlying lock.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, lock=None):\\n        if lock is None:\\n            lock = RLock()\\n        self._lock = lock\\n        # Export the lock's acquire() and release() methods\\n        self.acquire = lock.acquire\\n        self.release = lock.release\\n        # If the lock defines _release_save() and/or _acquire_restore(),\\n        # these override the default implementations (which just call\\n        # release() and acquire() on the lock).  Ditto for _is_owned().\\n        if hasattr(lock, '_release_save'):\\n            self._release_save = lock._release_save\\n        if hasattr(lock, '_acquire_restore'):\\n            self._acquire_restore = lock._acquire_restore\\n        if hasattr(lock, '_is_owned'):\\n            self._is_owned = lock._is_owned\\n        self._waiters = _deque()\\n\\n    def _at_fork_reinit(self):\\n        self._lock._at_fork_reinit()\\n        self._waiters.clear()\\n\\n    def __enter__(self):\\n        return self._lock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._lock.__exit__(*args)\\n\\n    def __repr__(self):\\n        return \\\"<Condition(%s, %d)>\\\" % (self._lock, len(self._waiters))\\n\\n    def _release_save(self):\\n        self._lock.release()           # No state to save\\n\\n    def _acquire_restore(self, x):\\n        self._lock.acquire()           # Ignore saved state\\n\\n    def _is_owned(self):\\n        # Return True if lock is owned by current_thread.\\n        # This method is called only if _lock doesn't have _is_owned().\\n        if self._lock.acquire(False):\\n            self._lock.release()\\n            return False\\n        else:\\n            return True\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait until notified or until a timeout occurs.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method releases the underlying lock, and then blocks until it is\\n        awakened by a notify() or notify_all() call for the same condition\\n        variable in another thread, or until the optional timeout occurs. Once\\n        awakened or timed out, it re-acquires the lock and returns.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        When the underlying lock is an RLock, it is not released using its\\n        release() method, since this may not actually unlock the lock when it\\n        was acquired multiple times recursively. Instead, an internal interface\\n        of the RLock class is used, which really unlocks it even when it has\\n        been recursively acquired several times. Another internal interface is\\n        then used to restore the recursion level when the lock is reacquired.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot wait on un-acquired lock\\\")\\n        waiter = _allocate_lock()\\n        waiter.acquire()\\n        self._waiters.append(waiter)\\n        saved_state = self._release_save()\\n        gotit = False\\n        try:    # restore state no matter what (e.g., KeyboardInterrupt)\\n            if timeout is None:\\n                waiter.acquire()\\n                gotit = True\\n            else:\\n                if timeout > 0:\\n                    gotit = waiter.acquire(True, timeout)\\n                else:\\n                    gotit = waiter.acquire(False)\\n            return gotit\\n        finally:\\n            self._acquire_restore(saved_state)\\n            if not gotit:\\n                try:\\n                    self._waiters.remove(waiter)\\n                except ValueError:\\n                    pass\\n\\n    def wait_for(self, predicate, timeout=None):\\n        \\\"\\\"\\\"Wait until a condition evaluates to True.\\n\\n        predicate should be a callable which result will be interpreted as a\\n        boolean value.  A timeout may be provided giving the maximum time to\\n        wait.\\n\\n        \\\"\\\"\\\"\\n        endtime = None\\n        waittime = timeout\\n        result = predicate()\\n        while not result:\\n            if waittime is not None:\\n                if endtime is None:\\n                    endtime = _time() + waittime\\n                else:\\n                    waittime = endtime - _time()\\n                    if waittime <= 0:\\n                        break\\n            self.wait(waittime)\\n            result = predicate()\\n        return result\\n\\n    def notify(self, n=1):\\n        \\\"\\\"\\\"Wake up one or more threads waiting on this condition, if any.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method wakes up at most n of the threads waiting for the condition\\n        variable; it is a no-op if no threads are waiting.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot notify on un-acquired lock\\\")\\n        waiters = self._waiters\\n        while waiters and n > 0:\\n            waiter = waiters[0]\\n            try:\\n                waiter.release()\\n            except RuntimeError:\\n                # gh-92530: The previous call of notify() released the lock,\\n                # but was interrupted before removing it from the queue.\\n                # It can happen if a signal handler raises an exception,\\n                # like CTRL+C which raises KeyboardInterrupt.\\n                pass\\n            else:\\n                n -= 1\\n            try:\\n                waiters.remove(waiter)\\n            except ValueError:\\n                pass\\n\\n    def notify_all(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        If the calling thread has not acquired the lock when this method\\n        is called, a RuntimeError is raised.\\n\\n        \\\"\\\"\\\"\\n        self.notify(len(self._waiters))\\n\\n    def notifyAll(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        This method is deprecated, use notify_all() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('notifyAll() is deprecated, use notify_all() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.notify_all()\\n\\n\\nclass Semaphore:\\n    \\\"\\\"\\\"This class implements semaphore objects.\\n\\n    Semaphores manage a counter representing the number of release() calls minus\\n    the number of acquire() calls, plus an initial value. The acquire() method\\n    blocks if necessary until it can return without making the counter\\n    negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' semaphore class, but not quite the same (no maximum)\\n\\n    def __init__(self, value=1):\\n        if value < 0:\\n            raise ValueError(\\\"semaphore initial value must be >= 0\\\")\\n        self._cond = Condition(Lock())\\n        self._value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}>\\\")\\n\\n    def acquire(self, blocking=True, timeout=None):\\n        \\\"\\\"\\\"Acquire a semaphore, decrementing the internal counter by one.\\n\\n        When invoked without arguments: if the internal counter is larger than\\n        zero on entry, decrement it by one and return immediately. If it is zero\\n        on entry, block, waiting until some other thread has called release() to\\n        make it larger than zero. This is done with proper interlocking so that\\n        if multiple acquire() calls are blocked, release() will wake exactly one\\n        of them up. The implementation may pick one at random, so the order in\\n        which blocked threads are awakened should not be relied on. There is no\\n        return value in this case.\\n\\n        When invoked with blocking set to true, do the same thing as when called\\n        without arguments, and return true.\\n\\n        When invoked with blocking set to false, do not block. If a call without\\n        an argument would block, return false immediately; otherwise, do the\\n        same thing as when called without arguments, and return true.\\n\\n        When invoked with a timeout other than None, it will block for at\\n        most timeout seconds.  If acquire does not complete successfully in\\n        that interval, return false.  Return true otherwise.\\n\\n        \\\"\\\"\\\"\\n        if not blocking and timeout is not None:\\n            raise ValueError(\\\"can't specify timeout for non-blocking acquire\\\")\\n        rc = False\\n        endtime = None\\n        with self._cond:\\n            while self._value == 0:\\n                if not blocking:\\n                    break\\n                if timeout is not None:\\n                    if endtime is None:\\n                        endtime = _time() + timeout\\n                    else:\\n                        timeout = endtime - _time()\\n                        if timeout <= 0:\\n                            break\\n                self._cond.wait(timeout)\\n            else:\\n                self._value -= 1\\n                rc = True\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            self._value += n\\n            self._cond.notify(n)\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n\\nclass BoundedSemaphore(Semaphore):\\n    \\\"\\\"\\\"Implements a bounded semaphore.\\n\\n    A bounded semaphore checks to make sure its current value doesn't exceed its\\n    initial value. If it does, ValueError is raised. In most situations\\n    semaphores are used to guard resources with limited capacity.\\n\\n    If the semaphore is released too many times it's a sign of a bug. If not\\n    given, value defaults to 1.\\n\\n    Like regular semaphores, bounded semaphores manage a counter representing\\n    the number of release() calls minus the number of acquire() calls, plus an\\n    initial value. The acquire() method blocks if necessary until it can return\\n    without making the counter negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, value=1):\\n        super().__init__(value)\\n        self._initial_value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}/{self._initial_value}>\\\")\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        If the number of releases exceeds the number of acquires,\\n        raise a ValueError.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            if self._value + n > self._initial_value:\\n                raise ValueError(\\\"Semaphore released too many times\\\")\\n            self._value += n\\n            self._cond.notify(n)\\n\\n\\nclass Event:\\n    \\\"\\\"\\\"Class implementing event objects.\\n\\n    Events manage a flag that can be set to true with the set() method and reset\\n    to false with the clear() method. The wait() method blocks until the flag is\\n    true.  The flag is initially false.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' event class (without is_posted())\\n\\n    def __init__(self):\\n        self._cond = Condition(Lock())\\n        self._flag = False\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        status = 'set' if self._flag else 'unset'\\n        return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: {status}>\\\"\\n\\n    def _at_fork_reinit(self):\\n        # Private method called by Thread._reset_internal_locks()\\n        self._cond._at_fork_reinit()\\n\\n    def is_set(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\\"\\\"\\\"\\n        return self._flag\\n\\n    def isSet(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\n\\n        This method is deprecated, use is_set() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isSet() is deprecated, use is_set() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.is_set()\\n\\n    def set(self):\\n        \\\"\\\"\\\"Set the internal flag to true.\\n\\n        All threads waiting for it to become true are awakened. Threads\\n        that call wait() once the flag is true will not block at all.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = True\\n            self._cond.notify_all()\\n\\n    def clear(self):\\n        \\\"\\\"\\\"Reset the internal flag to false.\\n\\n        Subsequently, threads calling wait() will block until set() is called to\\n        set the internal flag to true again.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = False\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Block until the internal flag is true.\\n\\n        If the internal flag is true on entry, return immediately. Otherwise,\\n        block until another thread calls set() to set the flag to true, or until\\n        the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        This method returns the internal flag on exit, so it will always return\\n        True except if a timeout is given and the operation times out.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            signaled = self._flag\\n            if not signaled:\\n                signaled = self._cond.wait(timeout)\\n            return signaled\\n\\n\\n# A barrier class.  Inspired in part by the pthread_barrier_* api and\\n# the CyclicBarrier class from Java.  See\\n# http://sourceware.org/pthreads-win32/manual/pthread_barrier_init.html and\\n# http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/\\n#        CyclicBarrier.html\\n# for information.\\n# We maintain two main states, 'filling' and 'draining' enabling the barrier\\n# to be cyclic.  Threads are not allowed into it until it has fully drained\\n# since the previous cycle.  In addition, a 'resetting' state exists which is\\n# similar to 'draining' except that threads leave with a BrokenBarrierError,\\n# and a 'broken' state in which all threads get the exception.\\nclass Barrier:\\n    \\\"\\\"\\\"Implements a Barrier.\\n\\n    Useful for synchronizing a fixed number of threads at known synchronization\\n    points.  Threads block on 'wait()' and are simultaneously awoken once they\\n    have all made that call.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, parties, action=None, timeout=None):\\n        \\\"\\\"\\\"Create a barrier, initialised to 'parties' threads.\\n\\n        'action' is a callable which, when supplied, will be called by one of\\n        the threads after they have all entered the barrier and just prior to\\n        releasing them all. If a 'timeout' is provided, it is used as the\\n        default for all subsequent 'wait()' calls.\\n\\n        \\\"\\\"\\\"\\n        self._cond = Condition(Lock())\\n        self._action = action\\n        self._timeout = timeout\\n        self._parties = parties\\n        self._state = 0  # 0 filling, 1 draining, -1 resetting, -2 broken\\n        self._count = 0\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        if self.broken:\\n            return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: broken>\\\"\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" waiters={self.n_waiting}/{self.parties}>\\\")\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait for the barrier.\\n\\n        When the specified number of threads have started waiting, they are all\\n        simultaneously awoken. If an 'action' was provided for the barrier, one\\n        of the threads will have executed that callback prior to returning.\\n        Returns an individual index number from 0 to 'parties-1'.\\n\\n        \\\"\\\"\\\"\\n        if timeout is None:\\n            timeout = self._timeout\\n        with self._cond:\\n            self._enter() # Block while the barrier drains.\\n            index = self._count\\n            self._count += 1\\n            try:\\n                if index + 1 == self._parties:\\n                    # We release the barrier\\n                    self._release()\\n                else:\\n                    # We wait until someone releases us\\n                    self._wait(timeout)\\n                return index\\n            finally:\\n                self._count -= 1\\n                # Wake up any threads waiting for barrier to drain.\\n                self._exit()\\n\\n    # Block until the barrier is ready for us, or raise an exception\\n    # if it is broken.\\n    def _enter(self):\\n        while self._state in (-1, 1):\\n            # It is draining or resetting, wait until done\\n            self._cond.wait()\\n        #see if the barrier is in a broken state\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 0\\n\\n    # Optionally run the 'action' and release the threads waiting\\n    # in the barrier.\\n    def _release(self):\\n        try:\\n            if self._action:\\n                self._action()\\n            # enter draining state\\n            self._state = 1\\n            self._cond.notify_all()\\n        except:\\n            #an exception during the _action handler.  Break and reraise\\n            self._break()\\n            raise\\n\\n    # Wait in the barrier until we are released.  Raise an exception\\n    # if the barrier is reset or broken.\\n    def _wait(self, timeout):\\n        if not self._cond.wait_for(lambda : self._state != 0, timeout):\\n            #timed out.  Break the barrier\\n            self._break()\\n            raise BrokenBarrierError\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 1\\n\\n    # If we are the last thread to exit the barrier, signal any threads\\n    # waiting for the barrier to drain.\\n    def _exit(self):\\n        if self._count == 0:\\n            if self._state in (-1, 1):\\n                #resetting or draining\\n                self._state = 0\\n                self._cond.notify_all()\\n\\n    def reset(self):\\n        \\\"\\\"\\\"Reset the barrier to the initial state.\\n\\n        Any threads currently waiting will get the BrokenBarrier exception\\n        raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            if self._count > 0:\\n                if self._state == 0:\\n                    #reset the barrier, waking up threads\\n                    self._state = -1\\n                elif self._state == -2:\\n                    #was broken, set it to reset state\\n                    #which clears when the last thread exits\\n                    self._state = -1\\n            else:\\n                self._state = 0\\n            self._cond.notify_all()\\n\\n    def abort(self):\\n        \\\"\\\"\\\"Place the barrier into a 'broken' state.\\n\\n        Useful in case of error.  Any currently waiting threads and threads\\n        attempting to 'wait()' will have BrokenBarrierError raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._break()\\n\\n    def _break(self):\\n        # An internal error was detected.  The barrier is set to\\n        # a broken state all parties awakened.\\n        self._state = -2\\n        self._cond.notify_all()\\n\\n    @property\\n    def parties(self):\\n        \\\"\\\"\\\"Return the number of threads required to trip the barrier.\\\"\\\"\\\"\\n        return self._parties\\n\\n    @property\\n    def n_waiting(self):\\n        \\\"\\\"\\\"Return the number of threads currently waiting at the barrier.\\\"\\\"\\\"\\n        # We don't need synchronization here since this is an ephemeral result\\n        # anyway.  It returns the correct value in the steady state.\\n        if self._state == 0:\\n            return self._count\\n        return 0\\n\\n    @property\\n    def broken(self):\\n        \\\"\\\"\\\"Return True if the barrier is in a broken state.\\\"\\\"\\\"\\n        return self._state == -2\\n\\n# exception raised by the Barrier class\\nclass BrokenBarrierError(RuntimeError):\\n    pass\\n\\n\\n# Helper to generate new thread names\\n_counter = _count(1).__next__\\ndef _newname(name_template):\\n    return name_template % _counter()\\n\\n# Active thread administration.\\n#\\n# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like\\n# threading.enumerate().\\n_active_limbo_lock = RLock()\\n_active = {}    # maps thread id to Thread object\\n_limbo = {}\\n_dangling = WeakSet()\\n\\n# Set of Thread._tstate_lock locks of non-daemon threads used by _shutdown()\\n# to wait until all Python thread states get deleted:\\n# see Thread._set_tstate_lock().\\n_shutdown_locks_lock = _allocate_lock()\\n_shutdown_locks = set()\\n\\ndef _maintain_shutdown_locks():\\n    \\\"\\\"\\\"\\n    Drop any shutdown locks that don't correspond to running threads anymore.\\n\\n    Calling this from time to time avoids an ever-growing _shutdown_locks\\n    set when Thread objects are not joined explicitly. See bpo-37788.\\n\\n    This must be called with _shutdown_locks_lock acquired.\\n    \\\"\\\"\\\"\\n    # If a lock was released, the corresponding thread has exited\\n    to_remove = [lock for lock in _shutdown_locks if not lock.locked()]\\n    _shutdown_locks.difference_update(to_remove)\\n\\n\\n# Main class for threads\\n\\nclass Thread:\\n    \\\"\\\"\\\"A class that represents a thread of control.\\n\\n    This class can be safely subclassed in a limited fashion. There are two ways\\n    to specify the activity: by passing a callable object to the constructor, or\\n    by overriding the run() method in a subclass.\\n\\n    \\\"\\\"\\\"\\n\\n    _initialized = False\\n\\n    def __init__(self, group=None, target=None, name=None,\\n                 args=(), kwargs=None, *, daemon=None):\\n        \\\"\\\"\\\"This constructor should always be called with keyword arguments. Arguments are:\\n\\n        *group* should be None; reserved for future extension when a ThreadGroup\\n        class is implemented.\\n\\n        *target* is the callable object to be invoked by the run()\\n        method. Defaults to None, meaning nothing is called.\\n\\n        *name* is the thread name. By default, a unique name is constructed of\\n        the form \\\"Thread-N\\\" where N is a small decimal number.\\n\\n        *args* is a list or tuple of arguments for the target invocation. Defaults to ().\\n\\n        *kwargs* is a dictionary of keyword arguments for the target\\n        invocation. Defaults to {}.\\n\\n        If a subclass overrides the constructor, it must make sure to invoke\\n        the base class constructor (Thread.__init__()) before doing anything\\n        else to the thread.\\n\\n        \\\"\\\"\\\"\\n        assert group is None, \\\"group argument must be None for now\\\"\\n        if kwargs is None:\\n            kwargs = {}\\n        if name:\\n            name = str(name)\\n        else:\\n            name = _newname(\\\"Thread-%d\\\")\\n            if target is not None:\\n                try:\\n                    target_name = target.__name__\\n                    name += f\\\" ({target_name})\\\"\\n                except AttributeError:\\n                    pass\\n\\n        self._target = target\\n        self._name = name\\n        self._args = args\\n        self._kwargs = kwargs\\n        if daemon is not None:\\n            if daemon and not _daemon_threads_allowed():\\n                raise RuntimeError('daemon threads are disabled in this (sub)interpreter')\\n            self._daemonic = daemon\\n        else:\\n            self._daemonic = current_thread().daemon\\n        self._ident = None\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._native_id = None\\n        self._tstate_lock = None\\n        self._started = Event()\\n        self._is_stopped = False\\n        self._initialized = True\\n        # Copy of sys.stderr used by self._invoke_excepthook()\\n        self._stderr = _sys.stderr\\n        self._invoke_excepthook = _make_invoke_excepthook()\\n        # For debugging and _after_fork()\\n        _dangling.add(self)\\n\\n    def _reset_internal_locks(self, is_alive):\\n        # private!  Called by _after_fork() to reset our internal locks as\\n        # they may be in an invalid state leading to a deadlock or crash.\\n        self._started._at_fork_reinit()\\n        if is_alive:\\n            # bpo-42350: If the fork happens when the thread is already stopped\\n            # (ex: after threading._shutdown() has been called), _tstate_lock\\n            # is None. Do nothing in this case.\\n            if self._tstate_lock is not None:\\n                self._tstate_lock._at_fork_reinit()\\n                self._tstate_lock.acquire()\\n        else:\\n            # The thread isn't alive after fork: it doesn't have a tstate\\n            # anymore.\\n            self._is_stopped = True\\n            self._tstate_lock = None\\n\\n    def __repr__(self):\\n        assert self._initialized, \\\"Thread.__init__() was not called\\\"\\n        status = \\\"initial\\\"\\n        if self._started.is_set():\\n            status = \\\"started\\\"\\n        self.is_alive() # easy way to get ._is_stopped set when appropriate\\n        if self._is_stopped:\\n            status = \\\"stopped\\\"\\n        if self._daemonic:\\n            status += \\\" daemon\\\"\\n        if self._ident is not None:\\n            status += \\\" %s\\\" % self._ident\\n        return \\\"<%s(%s, %s)>\\\" % (self.__class__.__name__, self._name, status)\\n\\n    def start(self):\\n        \\\"\\\"\\\"Start the thread's activity.\\n\\n        It must be called at most once per thread object. It arranges for the\\n        object's run() method to be invoked in a separate thread of control.\\n\\n        This method will raise a RuntimeError if called more than once on the\\n        same thread object.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"thread.__init__() not called\\\")\\n\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"threads can only be started once\\\")\\n\\n        with _active_limbo_lock:\\n            _limbo[self] = self\\n        try:\\n            _start_new_thread(self._bootstrap, ())\\n        except Exception:\\n            with _active_limbo_lock:\\n                del _limbo[self]\\n            raise\\n        self._started.wait()\\n\\n    def run(self):\\n        \\\"\\\"\\\"Method representing the thread's activity.\\n\\n        You may override this method in a subclass. The standard run() method\\n        invokes the callable object passed to the object's constructor as the\\n        target argument, if any, with sequential and keyword arguments taken\\n        from the args and kwargs arguments, respectively.\\n\\n        \\\"\\\"\\\"\\n        try:\\n            if self._target is not None:\\n                self._target(*self._args, **self._kwargs)\\n        finally:\\n            # Avoid a refcycle if the thread is running a function with\\n            # an argument that has a member that points to the thread.\\n            del self._target, self._args, self._kwargs\\n\\n    def _bootstrap(self):\\n        # Wrapper around the real bootstrap code that ignores\\n        # exceptions during interpreter cleanup.  Those typically\\n        # happen when a daemon thread wakes up at an unfortunate\\n        # moment, finds the world around it destroyed, and raises some\\n        # random exception *** while trying to report the exception in\\n        # _bootstrap_inner() below ***.  Those random exceptions\\n        # don't help anybody, and they confuse users, so we suppress\\n        # them.  We suppress them only when it appears that the world\\n        # indeed has already been destroyed, so that exceptions in\\n        # _bootstrap_inner() during normal business hours are properly\\n        # reported.  Also, we only suppress them for daemonic threads;\\n        # if a non-daemonic encounters this, something else is wrong.\\n        try:\\n            self._bootstrap_inner()\\n        except:\\n            if self._daemonic and _sys is None:\\n                return\\n            raise\\n\\n    def _set_ident(self):\\n        self._ident = get_ident()\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        def _set_native_id(self):\\n            self._native_id = get_native_id()\\n\\n    def _set_tstate_lock(self):\\n        \\\"\\\"\\\"\\n        Set a lock object which will be released by the interpreter when\\n        the underlying thread state (see pystate.h) gets deleted.\\n        \\\"\\\"\\\"\\n        self._tstate_lock = _set_sentinel()\\n        self._tstate_lock.acquire()\\n\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                _maintain_shutdown_locks()\\n                _shutdown_locks.add(self._tstate_lock)\\n\\n    def _bootstrap_inner(self):\\n        try:\\n            self._set_ident()\\n            self._set_tstate_lock()\\n            if _HAVE_THREAD_NATIVE_ID:\\n                self._set_native_id()\\n            self._started.set()\\n            with _active_limbo_lock:\\n                _active[self._ident] = self\\n                del _limbo[self]\\n\\n            if _trace_hook:\\n                _sys.settrace(_trace_hook)\\n            if _profile_hook:\\n                _sys.setprofile(_profile_hook)\\n\\n            try:\\n                self.run()\\n            except:\\n                self._invoke_excepthook(self)\\n        finally:\\n            self._delete()\\n\\n    def _stop(self):\\n        # After calling ._stop(), .is_alive() returns False and .join() returns\\n        # immediately.  ._tstate_lock must be released before calling ._stop().\\n        #\\n        # Normal case:  C code at the end of the thread's life\\n        # (release_sentinel in _threadmodule.c) releases ._tstate_lock, and\\n        # that's detected by our ._wait_for_tstate_lock(), called by .join()\\n        # and .is_alive().  Any number of threads _may_ call ._stop()\\n        # simultaneously (for example, if multiple threads are blocked in\\n        # .join() calls), and they're not serialized.  That's harmless -\\n        # they'll just make redundant rebindings of ._is_stopped and\\n        # ._tstate_lock.  Obscure:  we rebind ._tstate_lock last so that the\\n        # \\\"assert self._is_stopped\\\" in ._wait_for_tstate_lock() always works\\n        # (the assert is executed only if ._tstate_lock is None).\\n        #\\n        # Special case:  _main_thread releases ._tstate_lock via this\\n        # module's _shutdown() function.\\n        lock = self._tstate_lock\\n        if lock is not None:\\n            assert not lock.locked()\\n        self._is_stopped = True\\n        self._tstate_lock = None\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                # Remove our lock and other released locks from _shutdown_locks\\n                _maintain_shutdown_locks()\\n\\n    def _delete(self):\\n        \\\"Remove current thread from the dict of currently running threads.\\\"\\n        with _active_limbo_lock:\\n            del _active[get_ident()]\\n            # There must not be any python code between the previous line\\n            # and after the lock is released.  Otherwise a tracing function\\n            # could try to acquire the lock again in the same thread, (in\\n            # current_thread()), and would block.\\n\\n    def join(self, timeout=None):\\n        \\\"\\\"\\\"Wait until the thread terminates.\\n\\n        This blocks the calling thread until the thread whose join() method is\\n        called terminates -- either normally or through an unhandled exception\\n        or until the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof). As join() always returns None, you must call\\n        is_alive() after join() to decide whether a timeout happened -- if the\\n        thread is still alive, the join() call timed out.\\n\\n        When the timeout argument is not present or None, the operation will\\n        block until the thread terminates.\\n\\n        A thread can be join()ed many times.\\n\\n        join() raises a RuntimeError if an attempt is made to join the current\\n        thread as that would cause a deadlock. It is also an error to join() a\\n        thread before it has been started and attempts to do so raises the same\\n        exception.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if not self._started.is_set():\\n            raise RuntimeError(\\\"cannot join thread before it is started\\\")\\n        if self is current_thread():\\n            raise RuntimeError(\\\"cannot join current thread\\\")\\n\\n        if timeout is None:\\n            self._wait_for_tstate_lock()\\n        else:\\n            # the behavior of a negative timeout isn't documented, but\\n            # historically .join(timeout=x) for x<0 has acted as if timeout=0\\n            self._wait_for_tstate_lock(timeout=max(timeout, 0))\\n\\n    def _wait_for_tstate_lock(self, block=True, timeout=-1):\\n        # Issue #18808: wait for the thread state to be gone.\\n        # At the end of the thread's life, after all knowledge of the thread\\n        # is removed from C data structures, C code releases our _tstate_lock.\\n        # This method passes its arguments to _tstate_lock.acquire().\\n        # If the lock is acquired, the C code is done, and self._stop() is\\n        # called.  That sets ._is_stopped to True, and ._tstate_lock to None.\\n        lock = self._tstate_lock\\n        if lock is None:\\n            # already determined that the C code is done\\n            assert self._is_stopped\\n            return\\n\\n        try:\\n            if lock.acquire(block, timeout):\\n                lock.release()\\n                self._stop()\\n        except:\\n            if lock.locked():\\n                # bpo-45274: lock.acquire() acquired the lock, but the function\\n                # was interrupted with an exception before reaching the\\n                # lock.release(). It can happen if a signal handler raises an\\n                # exception, like CTRL+C which raises KeyboardInterrupt.\\n                lock.release()\\n                self._stop()\\n            raise\\n\\n    @property\\n    def name(self):\\n        \\\"\\\"\\\"A string used for identification purposes only.\\n\\n        It has no semantics. Multiple threads may be given the same name. The\\n        initial name is set by the constructor.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._name\\n\\n    @name.setter\\n    def name(self, name):\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        self._name = str(name)\\n\\n    @property\\n    def ident(self):\\n        \\\"\\\"\\\"Thread identifier of this thread or None if it has not been started.\\n\\n        This is a nonzero integer. See the get_ident() function. Thread\\n        identifiers may be recycled when a thread exits and another thread is\\n        created. The identifier is available even after the thread has exited.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._ident\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        @property\\n        def native_id(self):\\n            \\\"\\\"\\\"Native integral thread ID of this thread, or None if it has not been started.\\n\\n            This is a non-negative integer. See the get_native_id() function.\\n            This represents the Thread ID as reported by the kernel.\\n\\n            \\\"\\\"\\\"\\n            assert self._initialized, \\\"Thread.__init__() not called\\\"\\n            return self._native_id\\n\\n    def is_alive(self):\\n        \\\"\\\"\\\"Return whether the thread is alive.\\n\\n        This method returns True just before the run() method starts until just\\n        after the run() method terminates. See also the module function\\n        enumerate().\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        if self._is_stopped or not self._started.is_set():\\n            return False\\n        self._wait_for_tstate_lock(False)\\n        return not self._is_stopped\\n\\n    @property\\n    def daemon(self):\\n        \\\"\\\"\\\"A boolean value indicating whether this thread is a daemon thread.\\n\\n        This must be set before start() is called, otherwise RuntimeError is\\n        raised. Its initial value is inherited from the creating thread; the\\n        main thread is not a daemon thread and therefore all threads created in\\n        the main thread default to daemon = False.\\n\\n        The entire Python program exits when only daemon threads are left.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._daemonic\\n\\n    @daemon.setter\\n    def daemon(self, daemonic):\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if daemonic and not _daemon_threads_allowed():\\n            raise RuntimeError('daemon threads are disabled in this interpreter')\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"cannot set daemon status of active thread\\\")\\n        self._daemonic = daemonic\\n\\n    def isDaemon(self):\\n        \\\"\\\"\\\"Return whether this thread is a daemon.\\n\\n        This method is deprecated, use the daemon attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isDaemon() is deprecated, get the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.daemon\\n\\n    def setDaemon(self, daemonic):\\n        \\\"\\\"\\\"Set whether this thread is a daemon.\\n\\n        This method is deprecated, use the .daemon property instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setDaemon() is deprecated, set the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.daemon = daemonic\\n\\n    def getName(self):\\n        \\\"\\\"\\\"Return a string used for identification purposes only.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('getName() is deprecated, get the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.name\\n\\n    def setName(self, name):\\n        \\\"\\\"\\\"Set the name string for this thread.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setName() is deprecated, set the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.name = name\\n\\n\\ntry:\\n    from _thread import (_excepthook as excepthook,\\n                         _ExceptHookArgs as ExceptHookArgs)\\nexcept ImportError:\\n    # Simple Python implementation if _thread._excepthook() is not available\\n    from traceback import print_exception as _print_exception\\n    from collections import namedtuple\\n\\n    _ExceptHookArgs = namedtuple(\\n        'ExceptHookArgs',\\n        'exc_type exc_value exc_traceback thread')\\n\\n    def ExceptHookArgs(args):\\n        return _ExceptHookArgs(*args)\\n\\n    def excepthook(args, /):\\n        \\\"\\\"\\\"\\n        Handle uncaught Thread.run() exception.\\n        \\\"\\\"\\\"\\n        if args.exc_type == SystemExit:\\n            # silently ignore SystemExit\\n            return\\n\\n        if _sys is not None and _sys.stderr is not None:\\n            stderr = _sys.stderr\\n        elif args.thread is not None:\\n            stderr = args.thread._stderr\\n            if stderr is None:\\n                # do nothing if sys.stderr is None and sys.stderr was None\\n                # when the thread was created\\n                return\\n        else:\\n            # do nothing if sys.stderr is None and args.thread is None\\n            return\\n\\n        if args.thread is not None:\\n            name = args.thread.name\\n        else:\\n            name = get_ident()\\n        print(f\\\"Exception in thread {name}:\\\",\\n              file=stderr, flush=True)\\n        _print_exception(args.exc_type, args.exc_value, args.exc_traceback,\\n                         file=stderr)\\n        stderr.flush()\\n\\n\\n# Original value of threading.excepthook\\n__excepthook__ = excepthook\\n\\n\\ndef _make_invoke_excepthook():\\n    # Create a local namespace to ensure that variables remain alive\\n    # when _invoke_excepthook() is called, even if it is called late during\\n    # Python shutdown. It is mostly needed for daemon threads.\\n\\n    old_excepthook = excepthook\\n    old_sys_excepthook = _sys.excepthook\\n    if old_excepthook is None:\\n        raise RuntimeError(\\\"threading.excepthook is None\\\")\\n    if old_sys_excepthook is None:\\n        raise RuntimeError(\\\"sys.excepthook is None\\\")\\n\\n    sys_exc_info = _sys.exc_info\\n    local_print = print\\n    local_sys = _sys\\n\\n    def invoke_excepthook(thread):\\n        global excepthook\\n        try:\\n            hook = excepthook\\n            if hook is None:\\n                hook = old_excepthook\\n\\n            args = ExceptHookArgs([*sys_exc_info(), thread])\\n\\n            hook(args)\\n        except Exception as exc:\\n            exc.__suppress_context__ = True\\n            del exc\\n\\n            if local_sys is not None and local_sys.stderr is not None:\\n                stderr = local_sys.stderr\\n            else:\\n                stderr = thread._stderr\\n\\n            local_print(\\\"Exception in threading.excepthook:\\\",\\n                        file=stderr, flush=True)\\n\\n            if local_sys is not None and local_sys.excepthook is not None:\\n                sys_excepthook = local_sys.excepthook\\n            else:\\n                sys_excepthook = old_sys_excepthook\\n\\n            sys_excepthook(*sys_exc_info())\\n        finally:\\n            # Break reference cycle (exception stored in a variable)\\n            args = None\\n\\n    return invoke_excepthook\\n\\n\\n# The timer class was contributed by Itamar Shtull-Trauring\\n\\nclass Timer(Thread):\\n    \\\"\\\"\\\"Call a function after a specified number of seconds:\\n\\n            t = Timer(30.0, f, args=None, kwargs=None)\\n            t.start()\\n            t.cancel()     # stop the timer's action if it's still waiting\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, interval, function, args=None, kwargs=None):\\n        Thread.__init__(self)\\n        self.interval = interval\\n        self.function = function\\n        self.args = args if args is not None else []\\n        self.kwargs = kwargs if kwargs is not None else {}\\n        self.finished = Event()\\n\\n    def cancel(self):\\n        \\\"\\\"\\\"Stop the timer if it hasn't finished yet.\\\"\\\"\\\"\\n        self.finished.set()\\n\\n    def run(self):\\n        self.finished.wait(self.interval)\\n        if not self.finished.is_set():\\n            self.function(*self.args, **self.kwargs)\\n        self.finished.set()\\n\\n\\n# Special thread class to represent the main thread\\n\\nclass _MainThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=\\\"MainThread\\\", daemon=False)\\n        self._set_tstate_lock()\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n\\n# Dummy thread class to represent threads not started here.\\n# These aren't garbage collected when they die, nor can they be waited for.\\n# If they invoke anything in threading.py that calls current_thread(), they\\n# leave an entry in the _active dict forever after.\\n# Their purpose is to return *something* from current_thread().\\n# They are marked as daemon threads so we won't wait for them\\n# when we exit (conform previous semantics).\\n\\nclass _DummyThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=_newname(\\\"Dummy-%d\\\"),\\n                        daemon=_daemon_threads_allowed())\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n    def _stop(self):\\n        pass\\n\\n    def is_alive(self):\\n        assert not self._is_stopped and self._started.is_set()\\n        return True\\n\\n    def join(self, timeout=None):\\n        assert False, \\\"cannot join a dummy thread\\\"\\n\\n\\n# Global API functions\\n\\ndef current_thread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    If the caller's thread of control was not created through the threading\\n    module, a dummy thread object with limited functionality is returned.\\n\\n    \\\"\\\"\\\"\\n    try:\\n        return _active[get_ident()]\\n    except KeyError:\\n        return _DummyThread()\\n\\ndef currentThread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    This function is deprecated, use current_thread() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('currentThread() is deprecated, use current_thread() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return current_thread()\\n\\ndef active_count():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    The returned count is equal to the length of the list returned by\\n    enumerate().\\n\\n    \\\"\\\"\\\"\\n    # NOTE: if the logic in here ever changes, update Modules/posixmodule.c\\n    # warn_about_fork_with_threads() to match.\\n    with _active_limbo_lock:\\n        return len(_active) + len(_limbo)\\n\\ndef activeCount():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    This function is deprecated, use active_count() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('activeCount() is deprecated, use active_count() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return active_count()\\n\\ndef _enumerate():\\n    # Same as enumerate(), but without the lock. Internal use only.\\n    return list(_active.values()) + list(_limbo.values())\\n\\ndef enumerate():\\n    \\\"\\\"\\\"Return a list of all Thread objects currently alive.\\n\\n    The list includes daemonic threads, dummy thread objects created by\\n    current_thread(), and the main thread. It excludes terminated threads and\\n    threads that have not yet been started.\\n\\n    \\\"\\\"\\\"\\n    with _active_limbo_lock:\\n        return list(_active.values()) + list(_limbo.values())\\n\\n\\n_threading_atexits = []\\n_SHUTTING_DOWN = False\\n\\ndef _register_atexit(func, *arg, **kwargs):\\n    \\\"\\\"\\\"CPython internal: register *func* to be called before joining threads.\\n\\n    The registered *func* is called with its arguments just before all\\n    non-daemon threads are joined in `_shutdown()`. It provides a similar\\n    purpose to `atexit.register()`, but its functions are called prior to\\n    threading shutdown instead of interpreter shutdown.\\n\\n    For similarity to atexit, the registered functions are called in reverse.\\n    \\\"\\\"\\\"\\n    if _SHUTTING_DOWN:\\n        raise RuntimeError(\\\"can't register atexit after shutdown\\\")\\n\\n    call = functools.partial(func, *arg, **kwargs)\\n    _threading_atexits.append(call)\\n\\n\\nfrom _thread import stack_size\\n\\n# Create the main thread object,\\n# and make it available for the interpreter\\n# (Py_Main) as threading._shutdown.\\n\\n_main_thread = _MainThread()\\n\\ndef _shutdown():\\n    \\\"\\\"\\\"\\n    Wait until the Python thread state of all non-daemon threads get deleted.\\n    \\\"\\\"\\\"\\n    # Obscure:  other threads may be waiting to join _main_thread.  That's\\n    # dubious, but some code does it.  We can't wait for C code to release\\n    # the main thread's tstate_lock - that won't happen until the interpreter\\n    # is nearly dead.  So we release it here.  Note that just calling _stop()\\n    # isn't enough:  other threads may already be waiting on _tstate_lock.\\n    if _main_thread._is_stopped and _is_main_interpreter():\\n        # _shutdown() was already called\\n        return\\n\\n    global _SHUTTING_DOWN\\n    _SHUTTING_DOWN = True\\n\\n    # Call registered threading atexit functions before threads are joined.\\n    # Order is reversed, similar to atexit.\\n    for atexit_call in reversed(_threading_atexits):\\n        atexit_call()\\n\\n    # Main thread\\n    if _main_thread.ident == get_ident():\\n        tlock = _main_thread._tstate_lock\\n        # The main thread isn't finished yet, so its thread state lock can't\\n        # have been released.\\n        assert tlock is not None\\n        assert tlock.locked()\\n        tlock.release()\\n        _main_thread._stop()\\n    else:\\n        # bpo-1596321: _shutdown() must be called in the main thread.\\n        # If the threading module was not imported by the main thread,\\n        # _main_thread is the thread which imported the threading module.\\n        # In this case, ignore _main_thread, similar behavior than for threads\\n        # spawned by C libraries or using _thread.start_new_thread().\\n        pass\\n\\n    # Join all non-deamon threads\\n    while True:\\n        with _shutdown_locks_lock:\\n            locks = list(_shutdown_locks)\\n            _shutdown_locks.clear()\\n\\n        if not locks:\\n            break\\n\\n        for lock in locks:\\n            # mimic Thread.join()\\n            lock.acquire()\\n            lock.release()\\n\\n        # new threads can be spawned while we were waiting for the other\\n        # threads to complete\\n\\n\\ndef main_thread():\\n    \\\"\\\"\\\"Return the main thread object.\\n\\n    In normal conditions, the main thread is the thread from which the\\n    Python interpreter was started.\\n    \\\"\\\"\\\"\\n    # XXX Figure this out for subinterpreters.  (See gh-75698.)\\n    return _main_thread\\n\\n# get thread-local implementation, either from the thread\\n# module, or from the python fallback\\n\\ntry:\\n    from _thread import _local as local\\nexcept ImportError:\\n    from _threading_local import local\\n\\n\\ndef _after_fork():\\n    \\\"\\\"\\\"\\n    Cleanup threading module state that should not exist after a fork.\\n    \\\"\\\"\\\"\\n    # Reset _active_limbo_lock, in case we forked while the lock was held\\n    # by another (non-forked) thread.  http://bugs.python.org/issue874900\\n    global _active_limbo_lock, _main_thread\\n    global _shutdown_locks_lock, _shutdown_locks\\n    _active_limbo_lock = RLock()\\n\\n    # fork() only copied the current thread; clear references to others.\\n    new_active = {}\\n\\n    try:\\n        current = _active[get_ident()]\\n    except KeyError:\\n        # fork() was called in a thread which was not spawned\\n        # by threading.Thread. For example, a thread spawned\\n        # by thread.start_new_thread().\\n        current = _MainThread()\\n\\n    _main_thread = current\\n\\n    # reset _shutdown() locks: threads re-register their _tstate_lock below\\n    _shutdown_locks_lock = _allocate_lock()\\n    _shutdown_locks = set()\\n\\n    with _active_limbo_lock:\\n        # Dangling thread instances must still have their locks reset,\\n        # because someone may join() them.\\n        threads = set(_enumerate())\\n        threads.update(_dangling)\\n        for thread in threads:\\n            # Any lock/condition variable may be currently locked or in an\\n            # invalid state, so we reinitialize them.\\n            if thread is current:\\n                # There is only one active thread. We reset the ident to\\n                # its new value since it can have changed.\\n                thread._reset_internal_locks(True)\\n                ident = get_ident()\\n                if isinstance(thread, _DummyThread):\\n                    thread.__class__ = _MainThread\\n                    thread._name = 'MainThread'\\n                    thread._daemonic = False\\n                    thread._set_tstate_lock()\\n                thread._ident = ident\\n                new_active[ident] = thread\\n            else:\\n                # All the others are already stopped.\\n                thread._reset_internal_locks(False)\\n                thread._stop()\\n\\n        _limbo.clear()\\n        _active.clear()\\n        _active.update(new_active)\\n        assert len(_active) == 1\\n\\n\\nif hasattr(_os, \\\"register_at_fork\\\"):\\n    _os.register_at_fork(after_in_child=_after_fork)\\n\", 1706], \"/usr/lib/python3.12/selectors.py\": [\"\\\"\\\"\\\"Selectors module.\\n\\nThis module allows high-level and efficient I/O multiplexing, built upon the\\n`select` module primitives.\\n\\\"\\\"\\\"\\n\\n\\nfrom abc import ABCMeta, abstractmethod\\nfrom collections import namedtuple\\nfrom collections.abc import Mapping\\nimport math\\nimport select\\nimport sys\\n\\n\\n# generic events, that must be mapped to implementation-specific ones\\nEVENT_READ = (1 << 0)\\nEVENT_WRITE = (1 << 1)\\n\\n\\ndef _fileobj_to_fd(fileobj):\\n    \\\"\\\"\\\"Return a file descriptor from a file object.\\n\\n    Parameters:\\n    fileobj -- file object or file descriptor\\n\\n    Returns:\\n    corresponding file descriptor\\n\\n    Raises:\\n    ValueError if the object is invalid\\n    \\\"\\\"\\\"\\n    if isinstance(fileobj, int):\\n        fd = fileobj\\n    else:\\n        try:\\n            fd = int(fileobj.fileno())\\n        except (AttributeError, TypeError, ValueError):\\n            raise ValueError(\\\"Invalid file object: \\\"\\n                             \\\"{!r}\\\".format(fileobj)) from None\\n    if fd < 0:\\n        raise ValueError(\\\"Invalid file descriptor: {}\\\".format(fd))\\n    return fd\\n\\n\\nSelectorKey = namedtuple('SelectorKey', ['fileobj', 'fd', 'events', 'data'])\\n\\nSelectorKey.__doc__ = \\\"\\\"\\\"SelectorKey(fileobj, fd, events, data)\\n\\n    Object used to associate a file object to its backing\\n    file descriptor, selected event mask, and attached data.\\n\\\"\\\"\\\"\\nSelectorKey.fileobj.__doc__ = 'File object registered.'\\nSelectorKey.fd.__doc__ = 'Underlying file descriptor.'\\nSelectorKey.events.__doc__ = 'Events that must be waited for on this file object.'\\nSelectorKey.data.__doc__ = ('''Optional opaque data associated to this file object.\\nFor example, this could be used to store a per-client session ID.''')\\n\\n\\nclass _SelectorMapping(Mapping):\\n    \\\"\\\"\\\"Mapping of file objects to selector keys.\\\"\\\"\\\"\\n\\n    def __init__(self, selector):\\n        self._selector = selector\\n\\n    def __len__(self):\\n        return len(self._selector._fd_to_key)\\n\\n    def __getitem__(self, fileobj):\\n        try:\\n            fd = self._selector._fileobj_lookup(fileobj)\\n            return self._selector._fd_to_key[fd]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n\\n    def __iter__(self):\\n        return iter(self._selector._fd_to_key)\\n\\n\\nclass BaseSelector(metaclass=ABCMeta):\\n    \\\"\\\"\\\"Selector abstract base class.\\n\\n    A selector supports registering file objects to be monitored for specific\\n    I/O events.\\n\\n    A file object is a file descriptor or any object with a `fileno()` method.\\n    An arbitrary object can be attached to the file object, which can be used\\n    for example to store context information, a callback, etc.\\n\\n    A selector can use various implementations (select(), poll(), epoll()...)\\n    depending on the platform. The default `Selector` class uses the most\\n    efficient implementation on the current platform.\\n    \\\"\\\"\\\"\\n\\n    @abstractmethod\\n    def register(self, fileobj, events, data=None):\\n        \\\"\\\"\\\"Register a file object.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n        events  -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE)\\n        data    -- attached data\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        ValueError if events is invalid\\n        KeyError if fileobj is already registered\\n        OSError if fileobj is closed or otherwise is unacceptable to\\n                the underlying system call (if a system call is made)\\n\\n        Note:\\n        OSError may or may not be raised\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    @abstractmethod\\n    def unregister(self, fileobj):\\n        \\\"\\\"\\\"Unregister a file object.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        KeyError if fileobj is not registered\\n\\n        Note:\\n        If fileobj is registered but has since been closed this does\\n        *not* raise OSError (even if the wrapped syscall does)\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def modify(self, fileobj, events, data=None):\\n        \\\"\\\"\\\"Change a registered file object monitored events or attached data.\\n\\n        Parameters:\\n        fileobj -- file object or file descriptor\\n        events  -- events to monitor (bitwise mask of EVENT_READ|EVENT_WRITE)\\n        data    -- attached data\\n\\n        Returns:\\n        SelectorKey instance\\n\\n        Raises:\\n        Anything that unregister() or register() raises\\n        \\\"\\\"\\\"\\n        self.unregister(fileobj)\\n        return self.register(fileobj, events, data)\\n\\n    @abstractmethod\\n    def select(self, timeout=None):\\n        \\\"\\\"\\\"Perform the actual selection, until some monitored file objects are\\n        ready or a timeout expires.\\n\\n        Parameters:\\n        timeout -- if timeout > 0, this specifies the maximum wait time, in\\n                   seconds\\n                   if timeout <= 0, the select() call won't block, and will\\n                   report the currently ready file objects\\n                   if timeout is None, select() will block until a monitored\\n                   file object becomes ready\\n\\n        Returns:\\n        list of (key, events) for ready file objects\\n        `events` is a bitwise mask of EVENT_READ|EVENT_WRITE\\n        \\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def close(self):\\n        \\\"\\\"\\\"Close the selector.\\n\\n        This must be called to make sure that any underlying resource is freed.\\n        \\\"\\\"\\\"\\n        pass\\n\\n    def get_key(self, fileobj):\\n        \\\"\\\"\\\"Return the key associated to a registered file object.\\n\\n        Returns:\\n        SelectorKey for this file object\\n        \\\"\\\"\\\"\\n        mapping = self.get_map()\\n        if mapping is None:\\n            raise RuntimeError('Selector is closed')\\n        try:\\n            return mapping[fileobj]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n\\n    @abstractmethod\\n    def get_map(self):\\n        \\\"\\\"\\\"Return a mapping of file objects to selector keys.\\\"\\\"\\\"\\n        raise NotImplementedError\\n\\n    def __enter__(self):\\n        return self\\n\\n    def __exit__(self, *args):\\n        self.close()\\n\\n\\nclass _BaseSelectorImpl(BaseSelector):\\n    \\\"\\\"\\\"Base selector implementation.\\\"\\\"\\\"\\n\\n    def __init__(self):\\n        # this maps file descriptors to keys\\n        self._fd_to_key = {}\\n        # read-only mapping returned by get_map()\\n        self._map = _SelectorMapping(self)\\n\\n    def _fileobj_lookup(self, fileobj):\\n        \\\"\\\"\\\"Return a file descriptor from a file object.\\n\\n        This wraps _fileobj_to_fd() to do an exhaustive search in case\\n        the object is invalid but we still have it in our map.  This\\n        is used by unregister() so we can unregister an object that\\n        was previously registered even if it is closed.  It is also\\n        used by _SelectorMapping.\\n        \\\"\\\"\\\"\\n        try:\\n            return _fileobj_to_fd(fileobj)\\n        except ValueError:\\n            # Do an exhaustive search.\\n            for key in self._fd_to_key.values():\\n                if key.fileobj is fileobj:\\n                    return key.fd\\n            # Raise ValueError after all.\\n            raise\\n\\n    def register(self, fileobj, events, data=None):\\n        if (not events) or (events & ~(EVENT_READ | EVENT_WRITE)):\\n            raise ValueError(\\\"Invalid events: {!r}\\\".format(events))\\n\\n        key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data)\\n\\n        if key.fd in self._fd_to_key:\\n            raise KeyError(\\\"{!r} (FD {}) is already registered\\\"\\n                           .format(fileobj, key.fd))\\n\\n        self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def unregister(self, fileobj):\\n        try:\\n            key = self._fd_to_key.pop(self._fileobj_lookup(fileobj))\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n        return key\\n\\n    def modify(self, fileobj, events, data=None):\\n        try:\\n            key = self._fd_to_key[self._fileobj_lookup(fileobj)]\\n        except KeyError:\\n            raise KeyError(\\\"{!r} is not registered\\\".format(fileobj)) from None\\n        if events != key.events:\\n            self.unregister(fileobj)\\n            key = self.register(fileobj, events, data)\\n        elif data != key.data:\\n            # Use a shortcut to update the data.\\n            key = key._replace(data=data)\\n            self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def close(self):\\n        self._fd_to_key.clear()\\n        self._map = None\\n\\n    def get_map(self):\\n        return self._map\\n\\n    def _key_from_fd(self, fd):\\n        \\\"\\\"\\\"Return the key associated to a given file descriptor.\\n\\n        Parameters:\\n        fd -- file descriptor\\n\\n        Returns:\\n        corresponding key, or None if not found\\n        \\\"\\\"\\\"\\n        try:\\n            return self._fd_to_key[fd]\\n        except KeyError:\\n            return None\\n\\n\\nclass SelectSelector(_BaseSelectorImpl):\\n    \\\"\\\"\\\"Select-based selector.\\\"\\\"\\\"\\n\\n    def __init__(self):\\n        super().__init__()\\n        self._readers = set()\\n        self._writers = set()\\n\\n    def register(self, fileobj, events, data=None):\\n        key = super().register(fileobj, events, data)\\n        if events & EVENT_READ:\\n            self._readers.add(key.fd)\\n        if events & EVENT_WRITE:\\n            self._writers.add(key.fd)\\n        return key\\n\\n    def unregister(self, fileobj):\\n        key = super().unregister(fileobj)\\n        self._readers.discard(key.fd)\\n        self._writers.discard(key.fd)\\n        return key\\n\\n    if sys.platform == 'win32':\\n        def _select(self, r, w, _, timeout=None):\\n            r, w, x = select.select(r, w, w, timeout)\\n            return r, w + x, []\\n    else:\\n        _select = select.select\\n\\n    def select(self, timeout=None):\\n        timeout = None if timeout is None else max(timeout, 0)\\n        ready = []\\n        try:\\n            r, w, _ = self._select(self._readers, self._writers, [], timeout)\\n        except InterruptedError:\\n            return ready\\n        r = set(r)\\n        w = set(w)\\n        for fd in r | w:\\n            events = 0\\n            if fd in r:\\n                events |= EVENT_READ\\n            if fd in w:\\n                events |= EVENT_WRITE\\n\\n            key = self._key_from_fd(fd)\\n            if key:\\n                ready.append((key, events & key.events))\\n        return ready\\n\\n\\nclass _PollLikeSelector(_BaseSelectorImpl):\\n    \\\"\\\"\\\"Base class shared between poll, epoll and devpoll selectors.\\\"\\\"\\\"\\n    _selector_cls = None\\n    _EVENT_READ = None\\n    _EVENT_WRITE = None\\n\\n    def __init__(self):\\n        super().__init__()\\n        self._selector = self._selector_cls()\\n\\n    def register(self, fileobj, events, data=None):\\n        key = super().register(fileobj, events, data)\\n        poller_events = 0\\n        if events & EVENT_READ:\\n            poller_events |= self._EVENT_READ\\n        if events & EVENT_WRITE:\\n            poller_events |= self._EVENT_WRITE\\n        try:\\n            self._selector.register(key.fd, poller_events)\\n        except:\\n            super().unregister(fileobj)\\n            raise\\n        return key\\n\\n    def unregister(self, fileobj):\\n        key = super().unregister(fileobj)\\n        try:\\n            self._selector.unregister(key.fd)\\n        except OSError:\\n            # This can happen if the FD was closed since it\\n            # was registered.\\n            pass\\n        return key\\n\\n    def modify(self, fileobj, events, data=None):\\n        try:\\n            key = self._fd_to_key[self._fileobj_lookup(fileobj)]\\n        except KeyError:\\n            raise KeyError(f\\\"{fileobj!r} is not registered\\\") from None\\n\\n        changed = False\\n        if events != key.events:\\n            selector_events = 0\\n            if events & EVENT_READ:\\n                selector_events |= self._EVENT_READ\\n            if events & EVENT_WRITE:\\n                selector_events |= self._EVENT_WRITE\\n            try:\\n                self._selector.modify(key.fd, selector_events)\\n            except:\\n                super().unregister(fileobj)\\n                raise\\n            changed = True\\n        if data != key.data:\\n            changed = True\\n\\n        if changed:\\n            key = key._replace(events=events, data=data)\\n            self._fd_to_key[key.fd] = key\\n        return key\\n\\n    def select(self, timeout=None):\\n        # This is shared between poll() and epoll().\\n        # epoll() has a different signature and handling of timeout parameter.\\n        if timeout is None:\\n            timeout = None\\n        elif timeout <= 0:\\n            timeout = 0\\n        else:\\n            # poll() has a resolution of 1 millisecond, round away from\\n            # zero to wait *at least* timeout seconds.\\n            timeout = math.ceil(timeout * 1e3)\\n        ready = []\\n        try:\\n            fd_event_list = self._selector.poll(timeout)\\n        except InterruptedError:\\n            return ready\\n        for fd, event in fd_event_list:\\n            events = 0\\n            if event & ~self._EVENT_READ:\\n                events |= EVENT_WRITE\\n            if event & ~self._EVENT_WRITE:\\n                events |= EVENT_READ\\n\\n            key = self._key_from_fd(fd)\\n            if key:\\n                ready.append((key, events & key.events))\\n        return ready\\n\\n\\nif hasattr(select, 'poll'):\\n\\n    class PollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Poll-based selector.\\\"\\\"\\\"\\n        _selector_cls = select.poll\\n        _EVENT_READ = select.POLLIN\\n        _EVENT_WRITE = select.POLLOUT\\n\\n\\nif hasattr(select, 'epoll'):\\n\\n    class EpollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Epoll-based selector.\\\"\\\"\\\"\\n        _selector_cls = select.epoll\\n        _EVENT_READ = select.EPOLLIN\\n        _EVENT_WRITE = select.EPOLLOUT\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def select(self, timeout=None):\\n            if timeout is None:\\n                timeout = -1\\n            elif timeout <= 0:\\n                timeout = 0\\n            else:\\n                # epoll_wait() has a resolution of 1 millisecond, round away\\n                # from zero to wait *at least* timeout seconds.\\n                timeout = math.ceil(timeout * 1e3) * 1e-3\\n\\n            # epoll_wait() expects `maxevents` to be greater than zero;\\n            # we want to make sure that `select()` can be called when no\\n            # FD is registered.\\n            max_ev = max(len(self._fd_to_key), 1)\\n\\n            ready = []\\n            try:\\n                fd_event_list = self._selector.poll(timeout, max_ev)\\n            except InterruptedError:\\n                return ready\\n            for fd, event in fd_event_list:\\n                events = 0\\n                if event & ~select.EPOLLIN:\\n                    events |= EVENT_WRITE\\n                if event & ~select.EPOLLOUT:\\n                    events |= EVENT_READ\\n\\n                key = self._key_from_fd(fd)\\n                if key:\\n                    ready.append((key, events & key.events))\\n            return ready\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\nif hasattr(select, 'devpoll'):\\n\\n    class DevpollSelector(_PollLikeSelector):\\n        \\\"\\\"\\\"Solaris /dev/poll selector.\\\"\\\"\\\"\\n        _selector_cls = select.devpoll\\n        _EVENT_READ = select.POLLIN\\n        _EVENT_WRITE = select.POLLOUT\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\nif hasattr(select, 'kqueue'):\\n\\n    class KqueueSelector(_BaseSelectorImpl):\\n        \\\"\\\"\\\"Kqueue-based selector.\\\"\\\"\\\"\\n\\n        def __init__(self):\\n            super().__init__()\\n            self._selector = select.kqueue()\\n            self._max_events = 0\\n\\n        def fileno(self):\\n            return self._selector.fileno()\\n\\n        def register(self, fileobj, events, data=None):\\n            key = super().register(fileobj, events, data)\\n            try:\\n                if events & EVENT_READ:\\n                    kev = select.kevent(key.fd, select.KQ_FILTER_READ,\\n                                        select.KQ_EV_ADD)\\n                    self._selector.control([kev], 0, 0)\\n                    self._max_events += 1\\n                if events & EVENT_WRITE:\\n                    kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,\\n                                        select.KQ_EV_ADD)\\n                    self._selector.control([kev], 0, 0)\\n                    self._max_events += 1\\n            except:\\n                super().unregister(fileobj)\\n                raise\\n            return key\\n\\n        def unregister(self, fileobj):\\n            key = super().unregister(fileobj)\\n            if key.events & EVENT_READ:\\n                kev = select.kevent(key.fd, select.KQ_FILTER_READ,\\n                                    select.KQ_EV_DELETE)\\n                self._max_events -= 1\\n                try:\\n                    self._selector.control([kev], 0, 0)\\n                except OSError:\\n                    # This can happen if the FD was closed since it\\n                    # was registered.\\n                    pass\\n            if key.events & EVENT_WRITE:\\n                kev = select.kevent(key.fd, select.KQ_FILTER_WRITE,\\n                                    select.KQ_EV_DELETE)\\n                self._max_events -= 1\\n                try:\\n                    self._selector.control([kev], 0, 0)\\n                except OSError:\\n                    # See comment above.\\n                    pass\\n            return key\\n\\n        def select(self, timeout=None):\\n            timeout = None if timeout is None else max(timeout, 0)\\n            # If max_ev is 0, kqueue will ignore the timeout. For consistent\\n            # behavior with the other selector classes, we prevent that here\\n            # (using max). See https://bugs.python.org/issue29255\\n            max_ev = self._max_events or 1\\n            ready = []\\n            try:\\n                kev_list = self._selector.control(None, max_ev, timeout)\\n            except InterruptedError:\\n                return ready\\n            for kev in kev_list:\\n                fd = kev.ident\\n                flag = kev.filter\\n                events = 0\\n                if flag == select.KQ_FILTER_READ:\\n                    events |= EVENT_READ\\n                if flag == select.KQ_FILTER_WRITE:\\n                    events |= EVENT_WRITE\\n\\n                key = self._key_from_fd(fd)\\n                if key:\\n                    ready.append((key, events & key.events))\\n            return ready\\n\\n        def close(self):\\n            self._selector.close()\\n            super().close()\\n\\n\\ndef _can_use(method):\\n    \\\"\\\"\\\"Check if we can use the selector depending upon the\\n    operating system. \\\"\\\"\\\"\\n    # Implementation based upon https://github.com/sethmlarson/selectors2/blob/master/selectors2.py\\n    selector = getattr(select, method, None)\\n    if selector is None:\\n        # select module does not implement method\\n        return False\\n    # check if the OS and Kernel actually support the method. Call may fail with\\n    # OSError: [Errno 38] Function not implemented\\n    try:\\n        selector_obj = selector()\\n        if method == 'poll':\\n            # check that poll actually works\\n            selector_obj.poll(0)\\n        else:\\n            # close epoll, kqueue, and devpoll fd\\n            selector_obj.close()\\n        return True\\n    except OSError:\\n        return False\\n\\n\\n# Choose the best implementation, roughly:\\n#    epoll|kqueue|devpoll > poll > select.\\n# select() also can't accept a FD > FD_SETSIZE (usually around 1024)\\nif _can_use('kqueue'):\\n    DefaultSelector = KqueueSelector\\nelif _can_use('epoll'):\\n    DefaultSelector = EpollSelector\\nelif _can_use('devpoll'):\\n    DefaultSelector = DevpollSelector\\nelif _can_use('poll'):\\n    DefaultSelector = PollSelector\\nelse:\\n    DefaultSelector = SelectSelector\\n\", 623]}, \"functions\": {\"SemLock.__init__.<locals>._after_fork (/usr/lib/python3.12/multiprocessing/synchronize.py:71)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 71], \"info (/usr/lib/python3.12/multiprocessing/util.py:52)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 52], \"Connection._close (/usr/lib/python3.12/multiprocessing/connection.py:376)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 376], \"_ConnectionBase.close (/usr/lib/python3.12/multiprocessing/connection.py:174)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 174], \"SemLock.__enter__ (/usr/lib/python3.12/multiprocessing/synchronize.py:94)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 94], \"_ConnectionBase._check_closed (/usr/lib/python3.12/multiprocessing/connection.py:135)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 135], \"_ConnectionBase._check_readable (/usr/lib/python3.12/multiprocessing/connection.py:139)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 139], \"Connection._recv (/usr/lib/python3.12/multiprocessing/connection.py:390)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 390], \"Connection._recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:429)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 429], \"_ConnectionBase.recv_bytes (/usr/lib/python3.12/multiprocessing/connection.py:208)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 208], \"SemLock.__exit__ (/usr/lib/python3.12/multiprocessing/synchronize.py:97)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 97], \"SimpleQueue.get (/usr/lib/python3.12/multiprocessing/queues.py:385)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 385], \"f (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:5)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py\", 5], \"ForkingPickler.__init__ (/usr/lib/python3.12/multiprocessing/reduction.py:38)\": [\"/usr/lib/python3.12/multiprocessing/reduction.py\", 38], \"ForkingPickler.dumps (/usr/lib/python3.12/multiprocessing/reduction.py:48)\": [\"/usr/lib/python3.12/multiprocessing/reduction.py\", 48], \"_ConnectionBase._check_writable (/usr/lib/python3.12/multiprocessing/connection.py:143)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 143], \"Connection._send (/usr/lib/python3.12/multiprocessing/connection.py:381)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 381], \"Connection._send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:406)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 406], \"_ConnectionBase.send_bytes (/usr/lib/python3.12/multiprocessing/connection.py:182)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 182], \"SimpleQueue.put (/usr/lib/python3.12/multiprocessing/queues.py:391)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 391], \"debug (/usr/lib/python3.12/multiprocessing/util.py:48)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 48], \"worker (/usr/lib/python3.12/multiprocessing/pool.py:97)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 97], \"BaseProcess.run (/usr/lib/python3.12/multiprocessing/process.py:103)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 103], \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:287)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 287], \"_run_finalizers (/usr/lib/python3.12/multiprocessing/util.py:271)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 271], \"current_process (/usr/lib/python3.12/multiprocessing/process.py:37)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 37], \"_cleanup (/usr/lib/python3.12/multiprocessing/process.py:61)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 61], \"active_children (/usr/lib/python3.12/multiprocessing/process.py:43)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 43], \"_run_finalizers.<locals>.<lambda> (/usr/lib/python3.12/multiprocessing/util.py:285)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 285], \"sub_debug (/usr/lib/python3.12/multiprocessing/util.py:44)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 44], \"Finalize.__call__ (/usr/lib/python3.12/multiprocessing/util.py:208)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 208], \"_exit_function (/usr/lib/python3.12/multiprocessing/util.py:323)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 323], \"mapstar (/usr/lib/python3.12/multiprocessing/pool.py:47)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 47], \"_handle_fromlist (<frozen importlib._bootstrap>:1390)\": [\"<frozen importlib._bootstrap>\", 1390], \"ModuleSpec.parent (<frozen importlib._bootstrap>:645)\": [\"<frozen importlib._bootstrap>\", 645], \"_ModuleLockManager.__init__ (<frozen importlib._bootstrap>:412)\": [\"<frozen importlib._bootstrap>\", 412], \"_ModuleLock.__init__ (<frozen importlib._bootstrap>:232)\": [\"<frozen importlib._bootstrap>\", 232], \"_get_module_lock (<frozen importlib._bootstrap>:426)\": [\"<frozen importlib._bootstrap>\", 426], \"_BlockingOnManager.__init__ (<frozen importlib._bootstrap>:158)\": [\"<frozen importlib._bootstrap>\", 158], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__new__ (<frozen importlib._bootstrap>:74)\": [\"<frozen importlib._bootstrap>\", 74], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.__init__ (<frozen importlib._bootstrap>:79)\": [\"<frozen importlib._bootstrap>\", 79], \"_WeakValueDictionary.setdefault (<frozen importlib._bootstrap>:124)\": [\"<frozen importlib._bootstrap>\", 124], \"_BlockingOnManager.__enter__ (<frozen importlib._bootstrap>:162)\": [\"<frozen importlib._bootstrap>\", 162], \"_BlockingOnManager.__exit__ (<frozen importlib._bootstrap>:173)\": [\"<frozen importlib._bootstrap>\", 173], \"_WeakValueDictionary.__init__.<locals>.KeyedRef.remove (<frozen importlib._bootstrap>:82)\": [\"<frozen importlib._bootstrap>\", 82], \"_ModuleLock.acquire (<frozen importlib._bootstrap>:304)\": [\"<frozen importlib._bootstrap>\", 304], \"_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:416)\": [\"<frozen importlib._bootstrap>\", 416], \"_ImportLockContext.__enter__ (<frozen importlib._bootstrap>:1222)\": [\"<frozen importlib._bootstrap>\", 1222], \"DistutilsMetaFinder.find_spec (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:101)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\", 101], \"_ImportLockContext.__exit__ (<frozen importlib._bootstrap>:1226)\": [\"<frozen importlib._bootstrap>\", 1226], \"BuiltinImporter.find_spec (<frozen importlib._bootstrap>:982)\": [\"<frozen importlib._bootstrap>\", 982], \"_call_with_frames_removed (<frozen importlib._bootstrap>:480)\": [\"<frozen importlib._bootstrap>\", 480], \"FrozenImporter.find_spec (<frozen importlib._bootstrap>:1128)\": [\"<frozen importlib._bootstrap>\", 1128], \"PathFinder._path_importer_cache (<frozen importlib._bootstrap_external>:1469)\": [\"<frozen importlib._bootstrap_external>\", 1469], \"_path_stat (<frozen importlib._bootstrap_external>:140)\": [\"<frozen importlib._bootstrap_external>\", 140], \"_make_relax_case.<locals>._relax_case (<frozen importlib._bootstrap_external>:71)\": [\"<frozen importlib._bootstrap_external>\", 71], \"_path_join (<frozen importlib._bootstrap_external>:126)\": [\"<frozen importlib._bootstrap_external>\", 126], \"_verbose_message (<frozen importlib._bootstrap>:491)\": [\"<frozen importlib._bootstrap>\", 491], \"_path_is_mode_type (<frozen importlib._bootstrap_external>:150)\": [\"<frozen importlib._bootstrap_external>\", 150], \"_path_isfile (<frozen importlib._bootstrap_external>:159)\": [\"<frozen importlib._bootstrap_external>\", 159], \"FileLoader.__init__ (<frozen importlib._bootstrap_external>:1153)\": [\"<frozen importlib._bootstrap_external>\", 1153], \"_path_isabs (<frozen importlib._bootstrap_external>:180)\": [\"<frozen importlib._bootstrap_external>\", 180], \"_path_abspath (<frozen importlib._bootstrap_external>:185)\": [\"<frozen importlib._bootstrap_external>\", 185], \"ModuleSpec.__init__ (<frozen importlib._bootstrap>:599)\": [\"<frozen importlib._bootstrap>\", 599], \"spec_from_file_location (<frozen importlib._bootstrap_external>:802)\": [\"<frozen importlib._bootstrap_external>\", 802], \"FileFinder._get_spec (<frozen importlib._bootstrap_external>:1588)\": [\"<frozen importlib._bootstrap_external>\", 1588], \"FileFinder.find_spec (<frozen importlib._bootstrap_external>:1593)\": [\"<frozen importlib._bootstrap_external>\", 1593], \"PathFinder._get_spec (<frozen importlib._bootstrap_external>:1491)\": [\"<frozen importlib._bootstrap_external>\", 1491], \"PathFinder.find_spec (<frozen importlib._bootstrap_external>:1520)\": [\"<frozen importlib._bootstrap_external>\", 1520], \"_find_spec (<frozen importlib._bootstrap>:1240)\": [\"<frozen importlib._bootstrap>\", 1240], \"_LoaderBasics.create_module (<frozen importlib._bootstrap_external>:986)\": [\"<frozen importlib._bootstrap_external>\", 986], \"_new_module (<frozen importlib._bootstrap>:48)\": [\"<frozen importlib._bootstrap>\", 48], \"ModuleSpec.has_location (<frozen importlib._bootstrap>:653)\": [\"<frozen importlib._bootstrap>\", 653], \"_path_split.<locals>.<genexpr> (<frozen importlib._bootstrap_external>:134)\": [\"<frozen importlib._bootstrap_external>\", 134], \"_path_split (<frozen importlib._bootstrap_external>:132)\": [\"<frozen importlib._bootstrap_external>\", 132], \"cache_from_source (<frozen importlib._bootstrap_external>:482)\": [\"<frozen importlib._bootstrap_external>\", 482], \"_get_cached (<frozen importlib._bootstrap_external>:611)\": [\"<frozen importlib._bootstrap_external>\", 611], \"ModuleSpec.cached (<frozen importlib._bootstrap>:632)\": [\"<frozen importlib._bootstrap>\", 632], \"_init_module_attrs (<frozen importlib._bootstrap>:733)\": [\"<frozen importlib._bootstrap>\", 733], \"module_from_spec (<frozen importlib._bootstrap>:806)\": [\"<frozen importlib._bootstrap>\", 806], \"FileLoader.get_filename (<frozen importlib._bootstrap_external>:1178)\": [\"<frozen importlib._bootstrap_external>\", 1178], \"_check_name.<locals>._check_name_wrapper (<frozen importlib._bootstrap_external>:643)\": [\"<frozen importlib._bootstrap_external>\", 643], \"SourceFileLoader.path_stats (<frozen importlib._bootstrap_external>:1202)\": [\"<frozen importlib._bootstrap_external>\", 1202], \"FileLoader.get_data (<frozen importlib._bootstrap_external>:1183)\": [\"<frozen importlib._bootstrap_external>\", 1183], \"_unpack_uint32 (<frozen importlib._bootstrap_external>:84)\": [\"<frozen importlib._bootstrap_external>\", 84], \"_classify_pyc (<frozen importlib._bootstrap_external>:666)\": [\"<frozen importlib._bootstrap_external>\", 666], \"_validate_timestamp_pyc (<frozen importlib._bootstrap_external>:699)\": [\"<frozen importlib._bootstrap_external>\", 699], \"_compile_bytecode (<frozen importlib._bootstrap_external>:751)\": [\"<frozen importlib._bootstrap_external>\", 751], \"SourceLoader.get_code (<frozen importlib._bootstrap_external>:1062)\": [\"<frozen importlib._bootstrap_external>\", 1062], \"DistutilsMetaFinder.find_spec.<locals>.<lambda> (/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py:108)\": [\"/home/gaogaotiantian/programs/viztracer/venv/lib/python3.12/site-packages/_distutils_hack/__init__.py\", 108], \"BuiltinImporter.is_package (<frozen importlib._bootstrap>:1014)\": [\"<frozen importlib._bootstrap>\", 1014], \"_requires_builtin.<locals>._requires_builtin_wrapper (<frozen importlib._bootstrap>:501)\": [\"<frozen importlib._bootstrap>\", 501], \"spec_from_loader (<frozen importlib._bootstrap>:662)\": [\"<frozen importlib._bootstrap>\", 662], \"BuiltinImporter.create_module (<frozen importlib._bootstrap>:989)\": [\"<frozen importlib._bootstrap>\", 989], \"BuiltinImporter.exec_module (<frozen importlib._bootstrap>:997)\": [\"<frozen importlib._bootstrap>\", 997], \"_load_unlocked (<frozen importlib._bootstrap>:911)\": [\"<frozen importlib._bootstrap>\", 911], \"_find_and_load_unlocked (<frozen importlib._bootstrap>:1304)\": [\"<frozen importlib._bootstrap>\", 1304], \"_ModuleLock.release (<frozen importlib._bootstrap>:372)\": [\"<frozen importlib._bootstrap>\", 372], \"_ModuleLockManager.__exit__ (<frozen importlib._bootstrap>:420)\": [\"<frozen importlib._bootstrap>\", 420], \"_get_module_lock.<locals>.cb (<frozen importlib._bootstrap>:445)\": [\"<frozen importlib._bootstrap>\", 445], \"_find_and_load (<frozen importlib._bootstrap>:1349)\": [\"<frozen importlib._bootstrap>\", 1349], \"<module> (/usr/lib/python3.12/heapq.py:1)\": [\"/usr/lib/python3.12/heapq.py\", 1], \"_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:989)\": [\"<frozen importlib._bootstrap_external>\", 989], \"ExtensionFileLoader.__init__ (<frozen importlib._bootstrap_external>:1276)\": [\"<frozen importlib._bootstrap_external>\", 1276], \"ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1287)\": [\"<frozen importlib._bootstrap_external>\", 1287], \"ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1295)\": [\"<frozen importlib._bootstrap_external>\", 1295], \"Full (/usr/lib/python3.12/queue.py:23)\": [\"/usr/lib/python3.12/queue.py\", 23], \"Queue (/usr/lib/python3.12/queue.py:28)\": [\"/usr/lib/python3.12/queue.py\", 28], \"PriorityQueue (/usr/lib/python3.12/queue.py:223)\": [\"/usr/lib/python3.12/queue.py\", 223], \"LifoQueue (/usr/lib/python3.12/queue.py:242)\": [\"/usr/lib/python3.12/queue.py\", 242], \"_PySimpleQueue (/usr/lib/python3.12/queue.py:258)\": [\"/usr/lib/python3.12/queue.py\", 258], \"<module> (/usr/lib/python3.12/queue.py:1)\": [\"/usr/lib/python3.12/queue.py\", 1], \"_Sentinel (/usr/lib/python3.12/traceback.py:90)\": [\"/usr/lib/python3.12/traceback.py\", 90], \"FrameSummary (/usr/lib/python3.12/traceback.py:248)\": [\"/usr/lib/python3.12/traceback.py\", 248], \"StackSummary (/usr/lib/python3.12/traceback.py:374)\": [\"/usr/lib/python3.12/traceback.py\", 374], \"namedtuple.<locals>.<genexpr> (/usr/lib/python3.12/collections/__init__.py:429)\": [\"/usr/lib/python3.12/collections/__init__.py\", 429], \"namedtuple (/usr/lib/python3.12/collections/__init__.py:355)\": [\"/usr/lib/python3.12/collections/__init__.py\", 355], \"_ExceptionPrintContext (/usr/lib/python3.12/traceback.py:656)\": [\"/usr/lib/python3.12/traceback.py\", 656], \"TracebackException (/usr/lib/python3.12/traceback.py:679)\": [\"/usr/lib/python3.12/traceback.py\", 679], \"<module> (/usr/lib/python3.12/traceback.py:1)\": [\"/usr/lib/python3.12/traceback.py\", 1], \"_ConnectionBase (/usr/lib/python3.12/multiprocessing/connection.py:115)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 115], \"Connection (/usr/lib/python3.12/multiprocessing/connection.py:364)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 364], \"Listener (/usr/lib/python3.12/multiprocessing/connection.py:448)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 448], \"SocketListener (/usr/lib/python3.12/multiprocessing/connection.py:596)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 596], \"<genexpr> (/usr/lib/python3.12/multiprocessing/connection.py:838)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 838], \"ConnectionWrapper (/usr/lib/python3.12/multiprocessing/connection.py:970)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 970], \"XmlListener (/usr/lib/python3.12/multiprocessing/connection.py:992)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 992], \"ForkingPickler.register (/usr/lib/python3.12/multiprocessing/reduction.py:43)\": [\"/usr/lib/python3.12/multiprocessing/reduction.py\", 43], \"<module> (/usr/lib/python3.12/multiprocessing/connection.py:1)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 1], \"RemoteTraceback (/usr/lib/python3.12/multiprocessing/pool.py:57)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 57], \"ExceptionWithTraceback (/usr/lib/python3.12/multiprocessing/pool.py:63)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 63], \"MaybeEncodingError (/usr/lib/python3.12/multiprocessing/pool.py:80)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 80], \"_PoolCache (/usr/lib/python3.12/multiprocessing/pool.py:150)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 150], \"Pool (/usr/lib/python3.12/multiprocessing/pool.py:173)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 173], \"ApplyResult (/usr/lib/python3.12/multiprocessing/pool.py:745)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 745], \"MapResult (/usr/lib/python3.12/multiprocessing/pool.py:794)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 794], \"IMapIterator (/usr/lib/python3.12/multiprocessing/pool.py:837)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 837], \"IMapUnorderedIterator (/usr/lib/python3.12/multiprocessing/pool.py:906)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 906], \"ThreadPool (/usr/lib/python3.12/multiprocessing/pool.py:921)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 921], \"<module> (/usr/lib/python3.12/multiprocessing/pool.py:1)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 1], \"DefaultContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:237)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 237], \"Queue (/usr/lib/python3.12/multiprocessing/queues.py:35)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 35], \"JoinableQueue (/usr/lib/python3.12/multiprocessing/queues.py:316)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 316], \"SimpleQueue (/usr/lib/python3.12/multiprocessing/queues.py:359)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 359], \"<module> (/usr/lib/python3.12/multiprocessing/queues.py:1)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 1], \"BaseContext.get_context (/usr/lib/python3.12/multiprocessing/context.py:187)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 187], \"_ConnectionBase.__init__ (/usr/lib/python3.12/multiprocessing/connection.py:118)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 118], \"Pipe (/usr/lib/python3.12/multiprocessing/connection.py:533)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 533], \"SemLock (/usr/lib/python3.12/multiprocessing/synchronize.py:46)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 46], \"Semaphore (/usr/lib/python3.12/multiprocessing/synchronize.py:130)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 130], \"BoundedSemaphore (/usr/lib/python3.12/multiprocessing/synchronize.py:149)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 149], \"Lock (/usr/lib/python3.12/multiprocessing/synchronize.py:166)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 166], \"RLock (/usr/lib/python3.12/multiprocessing/synchronize.py:191)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 191], \"Condition (/usr/lib/python3.12/multiprocessing/synchronize.py:217)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 217], \"Event (/usr/lib/python3.12/multiprocessing/synchronize.py:328)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 328], \"Barrier (/usr/lib/python3.12/multiprocessing/synchronize.py:370)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 370], \"<module> (/usr/lib/python3.12/multiprocessing/synchronize.py:1)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 1], \"BaseContext.get_start_method (/usr/lib/python3.12/multiprocessing/context.py:197)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 197], \"Random.seed (/usr/lib/python3.12/random.py:135)\": [\"/usr/lib/python3.12/random.py\", 135], \"Random.__init__ (/usr/lib/python3.12/random.py:126)\": [\"/usr/lib/python3.12/random.py\", 126], \"_RandomNameSequence.rng (/usr/lib/python3.12/tempfile.py:281)\": [\"/usr/lib/python3.12/tempfile.py\", 281], \"Random.choices (/usr/lib/python3.12/random.py:454)\": [\"/usr/lib/python3.12/random.py\", 454], \"_RandomNameSequence.__next__ (/usr/lib/python3.12/tempfile.py:292)\": [\"/usr/lib/python3.12/tempfile.py\", 292], \"SemLock._make_name (/usr/lib/python3.12/multiprocessing/synchronize.py:121)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 121], \"SemLock._make_methods (/usr/lib/python3.12/multiprocessing/synchronize.py:90)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 90], \"KeyedRef.__new__ (/usr/lib/python3.12/weakref.py:347)\": [\"/usr/lib/python3.12/weakref.py\", 347], \"KeyedRef.__init__ (/usr/lib/python3.12/weakref.py:352)\": [\"/usr/lib/python3.12/weakref.py\", 352], \"WeakValueDictionary.__setitem__ (/usr/lib/python3.12/weakref.py:164)\": [\"/usr/lib/python3.12/weakref.py\", 164], \"register_after_fork (/usr/lib/python3.12/multiprocessing/util.py:174)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 174], \"SemLock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:50)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 50], \"Lock.__init__ (/usr/lib/python3.12/multiprocessing/synchronize.py:168)\": [\"/usr/lib/python3.12/multiprocessing/synchronize.py\", 168], \"BaseContext.Lock (/usr/lib/python3.12/multiprocessing/context.py:65)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 65], \"SimpleQueue.__init__ (/usr/lib/python3.12/multiprocessing/queues.py:361)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 361], \"BaseContext.SimpleQueue (/usr/lib/python3.12/multiprocessing/context.py:110)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 110], \"Pool._setup_queues (/usr/lib/python3.12/multiprocessing/pool.py:345)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 345], \"_PoolCache.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:157)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 157], \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:189)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 189], \"BaseProcess.__init__.<locals>.<genexpr> (/usr/lib/python3.12/multiprocessing/process.py:94)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 94], \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\": [\"/usr/lib/python3.12/_weakrefset.py\", 85], \"BaseProcess.__init__ (/usr/lib/python3.12/multiprocessing/process.py:80)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 80], \"Pool.Process (/usr/lib/python3.12/multiprocessing/pool.py:179)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 179], \"BaseProcess.name (/usr/lib/python3.12/multiprocessing/process.py:193)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 193], \"BaseProcess.daemon (/usr/lib/python3.12/multiprocessing/process.py:205)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 205], \"BaseProcess._check_closed (/usr/lib/python3.12/multiprocessing/process.py:99)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 99], \"Popen (/usr/lib/python3.12/multiprocessing/popen_fork.py:12)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 12], \"<module> (/usr/lib/python3.12/multiprocessing/popen_fork.py:1)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 1], \"_flush_std_streams (/usr/lib/python3.12/multiprocessing/util.py:436)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 436], \"Finalize.__init__ (/usr/lib/python3.12/multiprocessing/util.py:189)\": [\"/usr/lib/python3.12/multiprocessing/util.py\", 189], \"Popen._launch (/usr/lib/python3.12/multiprocessing/popen_fork.py:62)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 62], \"Popen.__init__ (/usr/lib/python3.12/multiprocessing/popen_fork.py:15)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 15], \"ForkProcess._Popen (/usr/lib/python3.12/multiprocessing/context.py:279)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 279], \"BaseProcess.start (/usr/lib/python3.12/multiprocessing/process.py:110)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 110], \"Popen.poll (/usr/lib/python3.12/multiprocessing/popen_fork.py:24)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 24], \"Pool._repopulate_pool_static (/usr/lib/python3.12/multiprocessing/pool.py:314)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 314], \"Pool._repopulate_pool (/usr/lib/python3.12/multiprocessing/pool.py:305)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 305], \"Pool._get_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:279)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 279], \"_newname (/usr/lib/python3.12/threading.py:837)\": [\"/usr/lib/python3.12/threading.py\", 837], \"current_thread (/usr/lib/python3.12/threading.py:1483)\": [\"/usr/lib/python3.12/threading.py\", 1483], \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\": [\"/usr/lib/python3.12/threading.py\", 1234], \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\": [\"/usr/lib/python3.12/threading.py\", 277], \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\": [\"/usr/lib/python3.12/threading.py\", 588], \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\": [\"/usr/lib/python3.12/threading.py\", 1354], \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\": [\"/usr/lib/python3.12/threading.py\", 882], \"Event.is_set (/usr/lib/python3.12/threading.py:601)\": [\"/usr/lib/python3.12/threading.py\", 601], \"Thread.daemon (/usr/lib/python3.12/threading.py:1249)\": [\"/usr/lib/python3.12/threading.py\", 1249], \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\": [\"/usr/lib/python3.12/threading.py\", 299], \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\": [\"/usr/lib/python3.12/threading.py\", 314], \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\": [\"/usr/lib/python3.12/threading.py\", 308], \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\": [\"/usr/lib/python3.12/threading.py\", 1036], \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\": [\"/usr/lib/python3.12/threading.py\", 1043], \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\": [\"/usr/lib/python3.12/threading.py\", 1040], \"Condition.notify (/usr/lib/python3.12/threading.py:394)\": [\"/usr/lib/python3.12/threading.py\", 394], \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\": [\"/usr/lib/python3.12/threading.py\", 424], \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\": [\"/usr/lib/python3.12/threading.py\", 302], \"Event.set (/usr/lib/python3.12/threading.py:616)\": [\"/usr/lib/python3.12/threading.py\", 616], \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\": [\"/usr/lib/python3.12/_weakrefset.py\", 39], \"BaseProcess.exitcode (/usr/lib/python3.12/multiprocessing/process.py:224)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 224], \"Pool._join_exited_workers (/usr/lib/python3.12/multiprocessing/pool.py:289)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 289], \"Pool._maintain_pool (/usr/lib/python3.12/multiprocessing/pool.py:333)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 333], \"BaseProcess.sentinel (/usr/lib/python3.12/multiprocessing/process.py:247)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 247], \"Pool._get_worker_sentinels (/usr/lib/python3.12/multiprocessing/pool.py:284)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 284], \"_SelectorMapping.__init__ (/usr/lib/python3.12/selectors.py:63)\": [\"/usr/lib/python3.12/selectors.py\", 63], \"_BaseSelectorImpl.__init__ (/usr/lib/python3.12/selectors.py:209)\": [\"/usr/lib/python3.12/selectors.py\", 209], \"_PollLikeSelector.__init__ (/usr/lib/python3.12/selectors.py:347)\": [\"/usr/lib/python3.12/selectors.py\", 347], \"BaseSelector.__enter__ (/usr/lib/python3.12/selectors.py:199)\": [\"/usr/lib/python3.12/selectors.py\", 199], \"_fileobj_to_fd (/usr/lib/python3.12/selectors.py:21)\": [\"/usr/lib/python3.12/selectors.py\", 21], \"_BaseSelectorImpl._fileobj_lookup (/usr/lib/python3.12/selectors.py:215)\": [\"/usr/lib/python3.12/selectors.py\", 215], \"_BaseSelectorImpl.register (/usr/lib/python3.12/selectors.py:234)\": [\"/usr/lib/python3.12/selectors.py\", 234], \"_PollLikeSelector.register (/usr/lib/python3.12/selectors.py:351)\": [\"/usr/lib/python3.12/selectors.py\", 351], \"_ConnectionBase.fileno (/usr/lib/python3.12/multiprocessing/connection.py:169)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 169], \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\": [\"/usr/lib/python3.12/threading.py\", 311], \"Condition.wait (/usr/lib/python3.12/threading.py:323)\": [\"/usr/lib/python3.12/threading.py\", 323], \"Event.wait (/usr/lib/python3.12/threading.py:637)\": [\"/usr/lib/python3.12/threading.py\", 637], \"Thread.start (/usr/lib/python3.12/threading.py:973)\": [\"/usr/lib/python3.12/threading.py\", 973], \"Pool.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:183)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 183], \"BaseContext.Pool (/usr/lib/python3.12/multiprocessing/context.py:115)\": [\"/usr/lib/python3.12/multiprocessing/context.py\", 115], \"Pool._check_running (/usr/lib/python3.12/multiprocessing/pool.py:351)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 351], \"Pool.__enter__ (/usr/lib/python3.12/multiprocessing/pool.py:734)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 734], \"ApplyResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:747)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 747], \"MapResult.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:796)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 796], \"Pool._map_async (/usr/lib/python3.12/multiprocessing/pool.py:471)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 471], \"Pool._get_tasks (/usr/lib/python3.12/multiprocessing/pool.py:633)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 633], \"Pool._guarded_task_generation (/usr/lib/python3.12/multiprocessing/pool.py:385)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 385], \"_ConnectionBase.send (/usr/lib/python3.12/multiprocessing/connection.py:202)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 202], \"_BaseSelectorImpl._key_from_fd (/usr/lib/python3.12/selectors.py:275)\": [\"/usr/lib/python3.12/selectors.py\", 275], \"_PollLikeSelector.select (/usr/lib/python3.12/selectors.py:402)\": [\"/usr/lib/python3.12/selectors.py\", 402], \"_BaseSelectorImpl.close (/usr/lib/python3.12/selectors.py:268)\": [\"/usr/lib/python3.12/selectors.py\", 268], \"BaseSelector.__exit__ (/usr/lib/python3.12/selectors.py:202)\": [\"/usr/lib/python3.12/selectors.py\", 202], \"wait (/usr/lib/python3.12/multiprocessing/connection.py:1122)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 1122], \"Connection._poll (/usr/lib/python3.12/multiprocessing/connection.py:439)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 439], \"_ConnectionBase.poll (/usr/lib/python3.12/multiprocessing/connection.py:253)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 253], \"SimpleQueue.empty (/usr/lib/python3.12/multiprocessing/queues.py:374)\": [\"/usr/lib/python3.12/multiprocessing/queues.py\", 374], \"Pool._wait_for_updates (/usr/lib/python3.12/multiprocessing/pool.py:500)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 500], \"_ConnectionBase.recv (/usr/lib/python3.12/multiprocessing/connection.py:246)\": [\"/usr/lib/python3.12/multiprocessing/connection.py\", 246], \"MapResult._set (/usr/lib/python3.12/multiprocessing/pool.py:809)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 809], \"_PoolCache.__delitem__ (/usr/lib/python3.12/multiprocessing/pool.py:161)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 161], \"ApplyResult.wait (/usr/lib/python3.12/multiprocessing/pool.py:764)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 764], \"ApplyResult.ready (/usr/lib/python3.12/multiprocessing/pool.py:756)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 756], \"ApplyResult.get (/usr/lib/python3.12/multiprocessing/pool.py:767)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 767], \"Pool.map (/usr/lib/python3.12/multiprocessing/pool.py:362)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 362], \"IMapIterator.__init__ (/usr/lib/python3.12/multiprocessing/pool.py:839)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 839], \"Pool.imap_unordered (/usr/lib/python3.12/multiprocessing/pool.py:425)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 425], \"IMapIterator.__iter__ (/usr/lib/python3.12/multiprocessing/pool.py:850)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 850], \"IMapIterator._set_length (/usr/lib/python3.12/multiprocessing/pool.py:894)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 894], \"IMapUnorderedIterator._set (/usr/lib/python3.12/multiprocessing/pool.py:908)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 908], \"IMapIterator.next (/usr/lib/python3.12/multiprocessing/pool.py:853)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 853], \"Pool.apply_async (/usr/lib/python3.12/multiprocessing/pool.py:453)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 453], \"ApplyResult._set (/usr/lib/python3.12/multiprocessing/pool.py:776)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 776], \"Pool._handle_workers (/usr/lib/python3.12/multiprocessing/pool.py:506)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 506], \"Thread.run (/usr/lib/python3.12/threading.py:999)\": [\"/usr/lib/python3.12/threading.py\", 999], \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\": [\"/usr/lib/python3.12/threading.py\", 1106], \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\": [\"/usr/lib/python3.12/threading.py\", 1056], \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\": [\"/usr/lib/python3.12/threading.py\", 1016], \"Pool._handle_results (/usr/lib/python3.12/multiprocessing/pool.py:573)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 573], \"Pool._handle_tasks (/usr/lib/python3.12/multiprocessing/pool.py:527)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 527], \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\": [\"/usr/lib/python3.12/threading.py\", 1079], \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\": [\"/usr/lib/python3.12/threading.py\", 1153], \"Thread.is_alive (/usr/lib/python3.12/threading.py:1220)\": [\"/usr/lib/python3.12/threading.py\", 1220], \"Pool._help_stuff_finish (/usr/lib/python3.12/multiprocessing/pool.py:671)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 671], \"Thread.join (/usr/lib/python3.12/threading.py:1115)\": [\"/usr/lib/python3.12/threading.py\", 1115], \"Popen._send_signal (/usr/lib/python3.12/multiprocessing/popen_fork.py:46)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 46], \"Popen.terminate (/usr/lib/python3.12/multiprocessing/popen_fork.py:56)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 56], \"BaseProcess.terminate (/usr/lib/python3.12/multiprocessing/process.py:128)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 128], \"BaseProcess.is_alive (/usr/lib/python3.12/multiprocessing/process.py:153)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 153], \"BaseProcess.ident (/usr/lib/python3.12/multiprocessing/process.py:234)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 234], \"Popen.wait (/usr/lib/python3.12/multiprocessing/popen_fork.py:36)\": [\"/usr/lib/python3.12/multiprocessing/popen_fork.py\", 36], \"BaseProcess.join (/usr/lib/python3.12/multiprocessing/process.py:142)\": [\"/usr/lib/python3.12/multiprocessing/process.py\", 142], \"Pool._terminate_pool (/usr/lib/python3.12/multiprocessing/pool.py:680)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 680], \"Pool.terminate (/usr/lib/python3.12/multiprocessing/pool.py:654)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 654], \"Pool.__exit__ (/usr/lib/python3.12/multiprocessing/pool.py:738)\": [\"/usr/lib/python3.12/multiprocessing/pool.py\", 738], \"<module> (/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py:1)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/multi_process_pool.py\", 1]}}}"
  },
  {
    "path": "example/json/multithread.json",
    "content": "{\"traceEvents\": [{\"ph\": \"M\", \"pid\": 222323, \"tid\": 222323, \"name\": \"process_name\", \"args\": {\"name\": \"MainProcess\"}}, {\"ph\": \"M\", \"pid\": 222323, \"tid\": 222340, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-8\"}}, {\"ph\": \"M\", \"pid\": 222323, \"tid\": 222339, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-7\"}}, {\"ph\": \"M\", \"pid\": 222323, \"tid\": 222338, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-6\"}}, {\"ph\": \"M\", \"pid\": 222323, \"tid\": 222337, \"name\": \"thread_name\", \"args\": {\"name\": \"Dummy-5\"}}, {\"ph\": \"M\", \"pid\": 222323, \"tid\": 222323, \"name\": \"thread_name\", \"args\": {\"name\": \"MainThread\"}}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849580.628, \"ph\": \"X\", \"dur\": 1.5538106615389125, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849583.839, \"ph\": \"X\", \"dur\": 0.0977835574447349, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849583.643, \"ph\": \"X\", \"dur\": 0.5318228175310582, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849584.796, \"ph\": \"X\", \"dur\": 0.5512797498797554, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849587.87, \"ph\": \"X\", \"dur\": 0.8992595015006869, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849591.57, \"ph\": \"X\", \"dur\": 0.6091516512245985, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849592.31, \"ph\": \"X\", \"dur\": 0.2624191388567885, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849592.611, \"ph\": \"X\", \"dur\": 0.03966220824926747, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849590.118, \"ph\": \"X\", \"dur\": 3.761923035265426, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849587.415, \"ph\": \"X\", \"dur\": 7.0159702466597285, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849596.566, \"ph\": \"X\", \"dur\": 1.7181967951003416, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849601.355, \"ph\": \"X\", \"dur\": 0.19980772835008329, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849599.419, \"ph\": \"X\", \"dur\": 2.305147587619375, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849579.459, \"ph\": \"X\", \"dur\": 22.432595758794807, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849602.702, \"ph\": \"X\", \"dur\": 0.31131091757915597, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849603.419, \"ph\": \"X\", \"dur\": 0.09479018323724302, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849603.343, \"ph\": \"X\", \"dur\": 0.3115603654297803, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849603.869, \"ph\": \"X\", \"dur\": 0.11574380268968619, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849604.433, \"ph\": \"X\", \"dur\": 0.19930883264883464, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849605.086, \"ph\": \"X\", \"dur\": 0.07907496864791061, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849605.254, \"ph\": \"X\", \"dur\": 0.06635312826607011, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849605.347, \"ph\": \"X\", \"dur\": 0.031929324879913436, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849604.815, \"ph\": \"X\", \"dur\": 1.0506743468296516, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849604.384, \"ph\": \"X\", \"dur\": 1.6403690657055527, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849606.413, \"ph\": \"X\", \"dur\": 0.29634404654169655, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849607.206, \"ph\": \"X\", \"dur\": 2.619202431555399, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849606.908, \"ph\": \"X\", \"dur\": 3.090908317085995, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849602.499, \"ph\": \"X\", \"dur\": 7.546545824937665, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849610.662, \"ph\": \"X\", \"dur\": 0.2985890771973155, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849611.289, \"ph\": \"X\", \"dur\": 0.0673509196685674, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849611.24, \"ph\": \"X\", \"dur\": 0.20903729882318325, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849611.516, \"ph\": \"X\", \"dur\": 0.07358711593417548, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849612.855, \"ph\": \"X\", \"dur\": 0.1643861335614293, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849613.295, \"ph\": \"X\", \"dur\": 0.06186306695483228, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849613.413, \"ph\": \"X\", \"dur\": 0.031180981328040463, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849613.475, \"ph\": \"X\", \"dur\": 0.03342601198365938, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849613.143, \"ph\": \"X\", \"dur\": 0.613392264685212, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849612.779, \"ph\": \"X\", \"dur\": 1.0823542238589405, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849614.135, \"ph\": \"X\", \"dur\": 0.2452072371637102, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849614.686, \"ph\": \"X\", \"dur\": 0.09503963108786734, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849614.517, \"ph\": \"X\", \"dur\": 0.32827337142160995, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849610.447, \"ph\": \"X\", \"dur\": 4.444911250274824, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849615.261, \"ph\": \"X\", \"dur\": 0.11973496829967538, \"name\": \"_newname (/usr/lib/python3.12/threading.py:837)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849615.657, \"ph\": \"X\", \"dur\": 0.028187607120548578, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849615.625, \"ph\": \"X\", \"dur\": 0.11649214624155917, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849615.782, \"ph\": \"X\", \"dur\": 0.12397558176028887, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849616.282, \"ph\": \"X\", \"dur\": 0.04265558245675936, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849618.153, \"ph\": \"X\", \"dur\": 0.03392490768490802, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849618.217, \"ph\": \"X\", \"dur\": 0.033176564133035054, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849618.28, \"ph\": \"X\", \"dur\": 0.04440171741112962, \"name\": \"builtins.hasattr\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849617.922, \"ph\": \"X\", \"dur\": 0.5587631853984851, \"name\": \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849616.23, \"ph\": \"X\", \"dur\": 2.3492998571798807, \"name\": \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849618.913, \"ph\": \"X\", \"dur\": 0.21851631714690756, \"name\": \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849619.451, \"ph\": \"X\", \"dur\": 0.43204367728132864, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849619.308, \"ph\": \"X\", \"dur\": 0.6203768045026931, \"name\": \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849615.14, \"ph\": \"X\", \"dur\": 4.825568670327542, \"name\": \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849622.288, \"ph\": \"X\", \"dur\": 0.05961803629921337, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849624.246, \"ph\": \"X\", \"dur\": 0.1621411029058104, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849624.737, \"ph\": \"X\", \"dur\": 67.67819524858652, \"name\": \"_thread.start_new_thread\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849695.274, \"ph\": \"X\", \"dur\": 0.31904380094851004, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849694.853, \"ph\": \"X\", \"dur\": 0.8917760659819572, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849698.094, \"ph\": \"X\", \"dur\": 0.4140834320363774, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849697.793, \"ph\": \"X\", \"dur\": 0.829912999027125, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849698.783, \"ph\": \"X\", \"dur\": 0.20429778966132112, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849699.106, \"ph\": \"X\", \"dur\": 0.1569026980426996, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849699.857, \"ph\": \"X\", \"dur\": 0.15166429317958882, \"name\": \"collections.deque.append\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849700.654, \"ph\": \"X\", \"dur\": 0.11424711558594025, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849700.429, \"ph\": \"X\", \"dur\": 0.42007018045136113, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849787.387, \"ph\": \"X\", \"dur\": 0.3030791385085533, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849787.29, \"ph\": \"X\", \"dur\": 1.0713785184314704, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849789.393, \"ph\": \"X\", \"dur\": 0.45873459729813126, \"name\": \"_thread._set_sentinel\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849790.37, \"ph\": \"X\", \"dur\": 0.17336625618390497, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849790.974, \"ph\": \"X\", \"dur\": 0.250445642026821, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849793.306, \"ph\": \"X\", \"dur\": 0.1147460112871889, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849793.866, \"ph\": \"X\", \"dur\": 0.5472885842697661, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849792.148, \"ph\": \"X\", \"dur\": 2.348302065777383, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849794.798, \"ph\": \"X\", \"dur\": 0.11025594997595109, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849794.999, \"ph\": \"X\", \"dur\": 0.11574380268968619, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849789.245, \"ph\": \"X\", \"dur\": 5.946587311033253, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849795.578, \"ph\": \"X\", \"dur\": 0.2863661325167236, \"name\": \"_thread.get_native_id\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849795.521, \"ph\": \"X\", \"dur\": 0.6448226938638768, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849797.16, \"ph\": \"X\", \"dur\": 0.35745876994465586, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849796.701, \"ph\": \"X\", \"dur\": 0.9037495628119248, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849797.927, \"ph\": \"X\", \"dur\": 0.055876318539848514, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849798.399, \"ph\": \"X\", \"dur\": 0.22699754406813458, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849798.31, \"ph\": \"X\", \"dur\": 0.41233729708200706, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849799.693, \"ph\": \"X\", \"dur\": 24.861718928174472, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849826.148, \"ph\": \"X\", \"dur\": 0.28761337176984525, \"name\": \"collections.deque.remove\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849798.186, \"ph\": \"X\", \"dur\": 28.438551658276648, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849797.75, \"ph\": \"X\", \"dur\": 28.993323678065142, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849827.349, \"ph\": \"X\", \"dur\": 0.1179888333453051, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849827.145, \"ph\": \"X\", \"dur\": 0.4103417142770125, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849796.362, \"ph\": \"X\", \"dur\": 31.39600537527863, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849831.019, \"ph\": \"X\", \"dur\": 0.1990593847982103, \"name\": \"set.discard\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849829.537, \"ph\": \"X\", \"dur\": 3.126828807575898, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849834.234, \"ph\": \"X\", \"dur\": 0.1474236797189753, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849701.012, \"ph\": \"X\", \"dur\": 141.3985163349954, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849843.737, \"ph\": \"X\", \"dur\": 0.28137717550423713, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849843.5, \"ph\": \"X\", \"dur\": 0.6802442886525307, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849697.178, \"ph\": \"X\", \"dur\": 147.15427604030106, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849845.345, \"ph\": \"X\", \"dur\": 0.15964662439956717, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849845.06, \"ph\": \"X\", \"dur\": 0.5547720197884959, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849693.846, \"ph\": \"X\", \"dur\": 152.000798330081, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849621.675, \"ph\": \"X\", \"dur\": 224.2740724350182, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849846.972, \"ph\": \"X\", \"dur\": 0.17835521319639144, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849848.037, \"ph\": \"X\", \"dur\": 0.17885410889764009, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849848.435, \"ph\": \"X\", \"dur\": 49.75736276403384, \"name\": \"_thread.start_new_thread\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849899.492, \"ph\": \"X\", \"dur\": 0.29958686859981276, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849899.334, \"ph\": \"X\", \"dur\": 0.6036637985108634, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849900.679, \"ph\": \"X\", \"dur\": 0.30407692991105056, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849900.612, \"ph\": \"X\", \"dur\": 0.4944056399374096, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849901.247, \"ph\": \"X\", \"dur\": 0.26541251306428043, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849901.647, \"ph\": \"X\", \"dur\": 0.13744576569400235, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849901.999, \"ph\": \"X\", \"dur\": 0.1147460112871889, \"name\": \"collections.deque.append\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849902.528, \"ph\": \"X\", \"dur\": 0.09279460043224842, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849902.359, \"ph\": \"X\", \"dur\": 0.3454852731146883, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849950.679, \"ph\": \"X\", \"dur\": 0.2190152128481562, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849950.516, \"ph\": \"X\", \"dur\": 0.7361206071923793, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849951.447, \"ph\": \"X\", \"dur\": 0.1611433115033131, \"name\": \"_thread._set_sentinel\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849951.749, \"ph\": \"X\", \"dur\": 0.14343251410898614, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849952.031, \"ph\": \"X\", \"dur\": 0.18533975301387254, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849953.145, \"ph\": \"X\", \"dur\": 0.10476809726221596, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849953.433, \"ph\": \"X\", \"dur\": 0.050388465826113386, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849953.658, \"ph\": \"X\", \"dur\": 0.2417149672549697, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849952.788, \"ph\": \"X\", \"dur\": 1.2118176583329645, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849954.191, \"ph\": \"X\", \"dur\": 0.09528907893849166, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849954.377, \"ph\": \"X\", \"dur\": 0.07458490733667278, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849951.402, \"ph\": \"X\", \"dur\": 3.097144513351603, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849954.706, \"ph\": \"X\", \"dur\": 0.27963104054986687, \"name\": \"_thread.get_native_id\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849954.668, \"ph\": \"X\", \"dur\": 0.40335717445953145, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849955.655, \"ph\": \"X\", \"dur\": 0.20953619452443192, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849955.366, \"ph\": \"X\", \"dur\": 0.5567676025934906, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849956.289, \"ph\": \"X\", \"dur\": 0.07882552079728629, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849956.728, \"ph\": \"X\", \"dur\": 0.1611433115033131, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849956.646, \"ph\": \"X\", \"dur\": 0.29958686859981276, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849957.693, \"ph\": \"X\", \"dur\": 23.124065200725433, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849981.372, \"ph\": \"X\", \"dur\": 0.17211901693078335, \"name\": \"collections.deque.remove\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849956.459, \"ph\": \"X\", \"dur\": 25.275303464509598, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849956.094, \"ph\": \"X\", \"dur\": 25.756987264065167, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849982.437, \"ph\": \"X\", \"dur\": 0.09977914024972948, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849982.252, \"ph\": \"X\", \"dur\": 1.6857685745191795, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849955.192, \"ph\": \"X\", \"dur\": 29.026250794347554, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849985.716, \"ph\": \"X\", \"dur\": 0.13295570438276455, \"name\": \"set.discard\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849985.184, \"ph\": \"X\", \"dur\": 0.7875068644209899, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849987.049, \"ph\": \"X\", \"dur\": 0.08905288267288355, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849902.843, \"ph\": \"X\", \"dur\": 114.61305558280614, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850018.907, \"ph\": \"X\", \"dur\": 0.4632246586093691, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850018.634, \"ph\": \"X\", \"dur\": 0.8690763115751438, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849900.404, \"ph\": \"X\", \"dur\": 119.277730389481, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850020.625, \"ph\": \"X\", \"dur\": 0.11275042848219431, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850020.37, \"ph\": \"X\", \"dur\": 0.44376772626067185, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849898.832, \"ph\": \"X\", \"dur\": 122.21223490422554, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995849846.487, \"ph\": \"X\", \"dur\": 174.69306930137574, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850021.896, \"ph\": \"X\", \"dur\": 0.120982207552797, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850022.723, \"ph\": \"X\", \"dur\": 0.14991815822521853, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850023.153, \"ph\": \"X\", \"dur\": 42.63662442011191, \"name\": \"_thread.start_new_thread\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850066.928, \"ph\": \"X\", \"dur\": 0.3262777886166154, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850066.752, \"ph\": \"X\", \"dur\": 0.6278602400214228, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850067.898, \"ph\": \"X\", \"dur\": 0.3217877273053776, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850067.823, \"ph\": \"X\", \"dur\": 0.5083747195723717, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850068.437, \"ph\": \"X\", \"dur\": 0.2546862554874345, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850068.76, \"ph\": \"X\", \"dur\": 0.13495128718775914, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850069.066, \"ph\": \"X\", \"dur\": 0.1284656430715267, \"name\": \"collections.deque.append\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850069.486, \"ph\": \"X\", \"dur\": 0.0840639256603971, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850069.406, \"ph\": \"X\", \"dur\": 0.27189815718051286, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849837.223, \"ph\": \"X\", \"dur\": 254.44578775943265, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849988.31, \"ph\": \"X\", \"dur\": 125.93474517909232, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850170.887, \"ph\": \"X\", \"dur\": 0.1893309186238617, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850170.795, \"ph\": \"X\", \"dur\": 0.5131142287342338, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850171.662, \"ph\": \"X\", \"dur\": 0.2918539852304587, \"name\": \"_thread._set_sentinel\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850172.105, \"ph\": \"X\", \"dur\": 0.14443030551148342, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850172.532, \"ph\": \"X\", \"dur\": 0.17012343412578879, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850173.629, \"ph\": \"X\", \"dur\": 0.13644797429150507, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850173.981, \"ph\": \"X\", \"dur\": 0.05338184003360527, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850174.144, \"ph\": \"X\", \"dur\": 0.03018318992554317, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850174.414, \"ph\": \"X\", \"dur\": 0.39312981258393415, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850173.147, \"ph\": \"X\", \"dur\": 1.7760686964451848, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850175.145, \"ph\": \"X\", \"dur\": 0.12173055110466997, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850175.361, \"ph\": \"X\", \"dur\": 0.1514148453289645, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850171.603, \"ph\": \"X\", \"dur\": 3.9814371438148304, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850175.775, \"ph\": \"X\", \"dur\": 0.16164220720456177, \"name\": \"_thread.get_native_id\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850175.726, \"ph\": \"X\", \"dur\": 0.34698196021843425, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850176.516, \"ph\": \"X\", \"dur\": 0.13844355709649966, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850176.406, \"ph\": \"X\", \"dur\": 0.30008576430106143, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850176.906, \"ph\": \"X\", \"dur\": 0.0705937417266836, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850177.335, \"ph\": \"X\", \"dur\": 0.1958165627400941, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850177.243, \"ph\": \"X\", \"dur\": 0.37317398453398826, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850179.257, \"ph\": \"X\", \"dur\": 14.802235456047368, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850194.561, \"ph\": \"X\", \"dur\": 0.21652073434191296, \"name\": \"collections.deque.remove\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850177.114, \"ph\": \"X\", \"dur\": 17.873187945083416, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850176.819, \"ph\": \"X\", \"dur\": 18.27829125449732, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850195.711, \"ph\": \"X\", \"dur\": 0.10925815857345378, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850195.496, \"ph\": \"X\", \"dur\": 0.4028582787582828, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850176.168, \"ph\": \"X\", \"dur\": 19.941858970310935, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850197.669, \"ph\": \"X\", \"dur\": 0.19980772835008329, \"name\": \"set.discard\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850197.247, \"ph\": \"X\", \"dur\": 0.7164142269930577, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850200.584, \"ph\": \"X\", \"dur\": 0.2452072371637102, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850093.852, \"ph\": \"X\", \"dur\": 125.18964444927747, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850115.125, \"ph\": \"X\", \"dur\": 124.7695742688261, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850069.817, \"ph\": \"X\", \"dur\": 190.57990401193769, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850261.653, \"ph\": \"X\", \"dur\": 0.3953748432395531, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850261.45, \"ph\": \"X\", \"dur\": 0.6802442886525307, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850067.699, \"ph\": \"X\", \"dur\": 194.59052655427556, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850263.326, \"ph\": \"X\", \"dur\": 0.10327141015847002, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850263.01, \"ph\": \"X\", \"dur\": 0.49390674423616093, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850066.335, \"ph\": \"X\", \"dur\": 197.37037340163303, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850021.63, \"ph\": \"X\", \"dur\": 242.31214540936432, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850264.988, \"ph\": \"X\", \"dur\": 0.05936858844858904, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850265.775, \"ph\": \"X\", \"dur\": 0.0715915331291809, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850266.115, \"ph\": \"X\", \"dur\": 59.10018256131727, \"name\": \"_thread.start_new_thread\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850326.409, \"ph\": \"X\", \"dur\": 0.3639444140608883, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850326.285, \"ph\": \"X\", \"dur\": 0.611895577581466, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850327.546, \"ph\": \"X\", \"dur\": 0.2940990158860777, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850327.445, \"ph\": \"X\", \"dur\": 0.5111186459292393, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850328.174, \"ph\": \"X\", \"dur\": 0.24470834146246156, \"name\": \"_thread.allocate_lock\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850328.488, \"ph\": \"X\", \"dur\": 0.10676368006721054, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850328.793, \"ph\": \"X\", \"dur\": 0.10925815857345378, \"name\": \"collections.deque.append\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850329.44, \"ph\": \"X\", \"dur\": 0.10127582735347541, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850329.362, \"ph\": \"X\", \"dur\": 0.24470834146246156, \"name\": \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850369.652, \"ph\": \"X\", \"dur\": 0.16787840347016986, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850369.504, \"ph\": \"X\", \"dur\": 0.5156087072404771, \"name\": \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850370.346, \"ph\": \"X\", \"dur\": 0.22001300425065348, \"name\": \"_thread._set_sentinel\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850370.701, \"ph\": \"X\", \"dur\": 0.1566532501920753, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850371.265, \"ph\": \"X\", \"dur\": 0.19182539713010494, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850372.511, \"ph\": \"X\", \"dur\": 0.10451864941159163, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850372.861, \"ph\": \"X\", \"dur\": 0.05188515292985933, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850373.019, \"ph\": \"X\", \"dur\": 0.03417435553553235, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850373.131, \"ph\": \"X\", \"dur\": 0.06061582770171066, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850373.462, \"ph\": \"X\", \"dur\": 0.2975912857948182, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850371.94, \"ph\": \"X\", \"dur\": 1.8968014561473574, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850374.037, \"ph\": \"X\", \"dur\": 0.3195426966497587, \"name\": \"set.add\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850374.438, \"ph\": \"X\", \"dur\": 0.13794466139525102, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850370.31, \"ph\": \"X\", \"dur\": 4.335653091701371, \"name\": \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850376.397, \"ph\": \"X\", \"dur\": 0.17935300459888873, \"name\": \"_thread.get_native_id\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850376.339, \"ph\": \"X\", \"dur\": 0.3222866230066262, \"name\": \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850377.134, \"ph\": \"X\", \"dur\": 0.12023386400092403, \"name\": \"_thread.lock.__enter__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850376.99, \"ph\": \"X\", \"dur\": 0.34299079460844506, \"name\": \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850377.569, \"ph\": \"X\", \"dur\": 0.07333766808355116, \"name\": \"builtins.len\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850378.126, \"ph\": \"X\", \"dur\": 0.19930883264883464, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850378.006, \"ph\": \"X\", \"dur\": 0.4073483400695206, \"name\": \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850378.777, \"ph\": \"X\", \"dur\": 12.740548970637334, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850392.043, \"ph\": \"X\", \"dur\": 0.22550085696438862, \"name\": \"collections.deque.remove\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850377.879, \"ph\": \"X\", \"dur\": 14.592449813672312, \"name\": \"Condition.notify (/usr/lib/python3.12/threading.py:394)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850377.462, \"ph\": \"X\", \"dur\": 15.12601876615774, \"name\": \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850393.237, \"ph\": \"X\", \"dur\": 0.11674159409218349, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850392.971, \"ph\": \"X\", \"dur\": 0.45873459729813126, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850376.782, \"ph\": \"X\", \"dur\": 16.86716476351552, \"name\": \"Event.set (/usr/lib/python3.12/threading.py:616)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850395.14, \"ph\": \"X\", \"dur\": 0.2062933724663157, \"name\": \"set.discard\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850394.773, \"ph\": \"X\", \"dur\": 0.6692685832250606, \"name\": \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850396.936, \"ph\": \"X\", \"dur\": 0.11773938549468078, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850329.736, \"ph\": \"X\", \"dur\": 96.63834236251863, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850428.405, \"ph\": \"X\", \"dur\": 1.0706301748795972, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850428.187, \"ph\": \"X\", \"dur\": 1.4562765519448018, \"name\": \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850327.214, \"ph\": \"X\", \"dur\": 102.770768322267, \"name\": \"Condition.wait (/usr/lib/python3.12/threading.py:323)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850431.761, \"ph\": \"X\", \"dur\": 0.12771729951965374, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850431.228, \"ph\": \"X\", \"dur\": 0.7518358217817116, \"name\": \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850325.816, \"ph\": \"X\", \"dur\": 106.52670460911744, \"name\": \"Event.wait (/usr/lib/python3.12/threading.py:637)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850264.578, \"ph\": \"X\", \"dur\": 168.02108764072696, \"name\": \"Thread.start (/usr/lib/python3.12/threading.py:973)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850437.271, \"ph\": \"X\", \"dur\": 0.1451786490633564, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850437.917, \"ph\": \"X\", \"dur\": 0.2085384031219346, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850437.78, \"ph\": \"X\", \"dur\": 0.9349305441399652, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850241.43, \"ph\": \"X\", \"dur\": 221.53887675292248, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850201.788, \"ph\": \"X\", \"dur\": 280.641553792746, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850219.97, \"ph\": \"X\", \"dur\": 288.01972231851227, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850398.014, \"ph\": \"X\", \"dur\": 128.28354614057096, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850464.31, \"ph\": \"X\", \"dur\": 64.36627613584737, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850483.519, \"ph\": \"X\", \"dur\": 69.69572946443604, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850509.155, \"ph\": \"X\", \"dur\": 69.88431203950803, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850527.428, \"ph\": \"X\", \"dur\": 64.19690104527345, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850529.414, \"ph\": \"X\", \"dur\": 64.14426754879172, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850554.185, \"ph\": \"X\", \"dur\": 63.12427528758886, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850580.128, \"ph\": \"X\", \"dur\": 63.23004117625357, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850592.33, \"ph\": \"X\", \"dur\": 63.43608510086926, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850594.415, \"ph\": \"X\", \"dur\": 63.160944121630635, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850658.075, \"ph\": \"X\", \"dur\": 0.10925815857345378, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850658.67, \"ph\": \"X\", \"dur\": 0.023697545809310754, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850594.03, \"ph\": \"X\", \"dur\": 64.83249416866423, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850659.163, \"ph\": \"X\", \"dur\": 0.06959595032418632, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850529.169, \"ph\": \"X\", \"dur\": 130.13794146211217, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850618.104, \"ph\": \"X\", \"dur\": 63.449555284802976, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850644.139, \"ph\": \"X\", \"dur\": 62.999800810127326, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850707.651, \"ph\": \"X\", \"dur\": 0.11848772904655375, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850708.085, \"ph\": \"X\", \"dur\": 0.04939067442361609, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850643.861, \"ph\": \"X\", \"dur\": 64.40069993923352, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850708.385, \"ph\": \"X\", \"dur\": 0.037916073294897205, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850579.77, \"ph\": \"X\", \"dur\": 128.71010196513853, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850656.578, \"ph\": \"X\", \"dur\": 63.24924866075165, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850659.562, \"ph\": \"X\", \"dur\": 63.271698967307834, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850723.289, \"ph\": \"X\", \"dur\": 0.13270625653214022, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850723.622, \"ph\": \"X\", \"dur\": 0.06984539817481064, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850659.438, \"ph\": \"X\", \"dur\": 64.32511724049435, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850463.982, \"ph\": \"X\", \"dur\": 259.85007544320865, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850686.47, \"ph\": \"X\", \"dur\": 63.56430129609017, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850708.765, \"ph\": \"X\", \"dur\": 79.63547796826347, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850789.39, \"ph\": \"X\", \"dur\": 0.1801013481507617, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850789.754, \"ph\": \"X\", \"dur\": 0.04090944750238908, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850708.595, \"ph\": \"X\", \"dur\": 81.33995513157947, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850508.765, \"ph\": \"X\", \"dur\": 281.2105443400201, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850720.529, \"ph\": \"X\", \"dur\": 88.68369985395957, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850750.843, \"ph\": \"X\", \"dur\": 70.3310731399762, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850821.91, \"ph\": \"X\", \"dur\": 0.12572171671465915, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850822.253, \"ph\": \"X\", \"dur\": 0.051386257228610684, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850750.577, \"ph\": \"X\", \"dur\": 71.82651300446902, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850822.551, \"ph\": \"X\", \"dur\": 0.055377422838599866, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850686.187, \"ph\": \"X\", \"dur\": 136.46019723618565, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850724.087, \"ph\": \"X\", \"dur\": 113.40996859924502, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850810.114, \"ph\": \"X\", \"dur\": 65.99741563107982, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850876.756, \"ph\": \"X\", \"dur\": 0.15615435449082665, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850877.341, \"ph\": \"X\", \"dur\": 0.04165779105426205, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850809.888, \"ph\": \"X\", \"dur\": 67.65225267212158, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850877.659, \"ph\": \"X\", \"dur\": 0.03991165609989179, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850720.335, \"ph\": \"X\", \"dur\": 157.54702184086224, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850790.296, \"ph\": \"X\", \"dur\": 99.7504537469077, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850822.89, \"ph\": \"X\", \"dur\": 81.97105819365902, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850905.62, \"ph\": \"X\", \"dur\": 0.1324568086815159, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850905.969, \"ph\": \"X\", \"dur\": 0.0673509196685674, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850822.744, \"ph\": \"X\", \"dur\": 83.38043854968645, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850617.787, \"ph\": \"X\", \"dur\": 288.4465275909305, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850878.083, \"ph\": \"X\", \"dur\": 63.77882644762708, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850942.324, \"ph\": \"X\", \"dur\": 0.09603742249036462, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850942.62, \"ph\": \"X\", \"dur\": 0.06286085835732957, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850877.969, \"ph\": \"X\", \"dur\": 64.78634631629872, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850656.227, \"ph\": \"X\", \"dur\": 286.5858960731236, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850843.173, \"ph\": \"X\", \"dur\": 101.1052050236484, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850944.954, \"ph\": \"X\", \"dur\": 0.1611433115033131, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850945.346, \"ph\": \"X\", \"dur\": 0.055127974987975545, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850842.307, \"ph\": \"X\", \"dur\": 104.9357262178355, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850947.466, \"ph\": \"X\", \"dur\": 0.06011693200046202, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850723.961, \"ph\": \"X\", \"dur\": 223.6322431153618, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850241.2, \"ph\": \"X\", \"dur\": 706.4739795935291, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850891.788, \"ph\": \"X\", \"dur\": 68.04238911049802, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850960.376, \"ph\": \"X\", \"dur\": 0.16363779000955633, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850960.886, \"ph\": \"X\", \"dur\": 0.023198650108062106, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850891.498, \"ph\": \"X\", \"dur\": 69.60143817690005, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850961.24, \"ph\": \"X\", \"dur\": 0.021701963004316163, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850790.122, \"ph\": \"X\", \"dur\": 171.17136454626154, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850219.81, \"ph\": \"X\", \"dur\": 741.6381442003386, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850906.602, \"ph\": \"X\", \"dur\": 63.62666325874624, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850943.099, \"ph\": \"X\", \"dur\": 70.42935559312218, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850947.948, \"ph\": \"X\", \"dur\": 79.93656152396703, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850961.8, \"ph\": \"X\", \"dur\": 70.30313498070626, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850970.891, \"ph\": \"X\", \"dur\": 78.56784116759137, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851050.164, \"ph\": \"X\", \"dur\": 0.13594907859025643, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851050.515, \"ph\": \"X\", \"dur\": 0.07608159444041873, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850970.732, \"ph\": \"X\", \"dur\": 79.94978226005013, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851050.846, \"ph\": \"X\", \"dur\": 0.0748343551872971, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850906.481, \"ph\": \"X\", \"dur\": 144.49815532685324, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850554.013, \"ph\": \"X\", \"dur\": 497.020851203355, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851014.434, \"ph\": \"X\", \"dur\": 70.86938160162349, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851086.26, \"ph\": \"X\", \"dur\": 0.10826036717095648, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851086.577, \"ph\": \"X\", \"dur\": 0.062361962656080926, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851014.251, \"ph\": \"X\", \"dur\": 72.47931802955287, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851086.904, \"ph\": \"X\", \"dur\": 0.043403926008632326, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850942.987, \"ph\": \"X\", \"dur\": 144.0249527542189, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850592.192, \"ph\": \"X\", \"dur\": 494.8733546573302, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851028.698, \"ph\": \"X\", \"dur\": 73.36560624282109, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851032.957, \"ph\": \"X\", \"dur\": 85.51646049458253, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851051.314, \"ph\": \"X\", \"dur\": 69.66754185731548, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851087.445, \"ph\": \"X\", \"dur\": 64.24704006324895, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851102.918, \"ph\": \"X\", \"dur\": 70.04670259026447, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851173.72, \"ph\": \"X\", \"dur\": 0.1304612258765213, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851174.032, \"ph\": \"X\", \"dur\": 0.0810705514529052, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851102.75, \"ph\": \"X\", \"dur\": 71.45059509357816, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851174.362, \"ph\": \"X\", \"dur\": 0.05936858844858904, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851028.515, \"ph\": \"X\", \"dur\": 154.51772714288043, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851119.357, \"ph\": \"X\", \"dur\": 72.58583226176945, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851192.431, \"ph\": \"X\", \"dur\": 0.09553852678911598, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851192.784, \"ph\": \"X\", \"dur\": 0.062361962656080926, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851119.172, \"ph\": \"X\", \"dur\": 73.76796562587813, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851193.123, \"ph\": \"X\", \"dur\": 0.056375214241097156, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851032.775, \"ph\": \"X\", \"dur\": 160.4396191167019, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851121.855, \"ph\": \"X\", \"dur\": 75.1234652461707, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851152.274, \"ph\": \"X\", \"dur\": 64.4630619018896, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851183.638, \"ph\": \"X\", \"dur\": 81.24840777040035, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851265.561, \"ph\": \"X\", \"dur\": 0.14592699261522935, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851266.042, \"ph\": \"X\", \"dur\": 0.043403926008632326, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851183.429, \"ph\": \"X\", \"dur\": 82.82042812503482, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850947.795, \"ph\": \"X\", \"dur\": 318.5254483149127, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995850114.872, \"ph\": \"X\", \"dur\": 1151.499172469198, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851198.583, \"ph\": \"X\", \"dur\": 70.15720798809105, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851269.472, \"ph\": \"X\", \"dur\": 0.1274678516690294, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851269.852, \"ph\": \"X\", \"dur\": 0.07458490733667278, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851198.277, \"ph\": \"X\", \"dur\": 71.7484358272236, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851270.176, \"ph\": \"X\", \"dur\": 0.09628687034098896, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851121.714, \"ph\": \"X\", \"dur\": 148.61878437131642, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851193.42, \"ph\": \"X\", \"dur\": 82.56000456898305, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851276.969, \"ph\": \"X\", \"dur\": 0.14143693130399154, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851277.383, \"ph\": \"X\", \"dur\": 0.04689619591737286, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851193.302, \"ph\": \"X\", \"dur\": 84.29142210016647, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850961.676, \"ph\": \"X\", \"dur\": 316.0880933664624, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995850093.436, \"ph\": \"X\", \"dur\": 1184.3714102244714, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851221.06, \"ph\": \"X\", \"dur\": 68.2359606425825, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851289.938, \"ph\": \"X\", \"dur\": 0.10377030585971866, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851290.261, \"ph\": \"X\", \"dur\": 0.0683487110710647, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851220.927, \"ph\": \"X\", \"dur\": 69.49741842318971, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851290.593, \"ph\": \"X\", \"dur\": 0.06959595032418632, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851152.144, \"ph\": \"X\", \"dur\": 138.57850838368742, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851266.603, \"ph\": \"X\", \"dur\": 63.777828656224585, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851270.562, \"ph\": \"X\", \"dur\": 69.72067424949847, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851340.989, \"ph\": \"X\", \"dur\": 0.14692478401772666, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851341.331, \"ph\": \"X\", \"dur\": 0.04964012227424042, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851270.429, \"ph\": \"X\", \"dur\": 71.04624012771613, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851051.179, \"ph\": \"X\", \"dur\": 290.3685232799909, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850483.32, \"ph\": \"X\", \"dur\": 858.2931798883556, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851278.102, \"ph\": \"X\", \"dur\": 79.40573649783848, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851290.997, \"ph\": \"X\", \"dur\": 69.05689351898715, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851360.736, \"ph\": \"X\", \"dur\": 0.0957879746397403, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851361.054, \"ph\": \"X\", \"dur\": 0.07358711593417548, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851290.847, \"ph\": \"X\", \"dur\": 70.36749252616735, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851087.257, \"ph\": \"X\", \"dur\": 274.0326824383052, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850527.231, \"ph\": \"X\", \"dur\": 834.0994823041531, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851331.029, \"ph\": \"X\", \"dur\": 63.69725700047293, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851341.95, \"ph\": \"X\", \"dur\": 64.20737785499968, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851361.638, \"ph\": \"X\", \"dur\": 63.207341421846756, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851358.384, \"ph\": \"X\", \"dur\": 73.00216072446146, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851395.379, \"ph\": \"X\", \"dur\": 65.1615158836377, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851406.79, \"ph\": \"X\", \"dur\": 68.9611055443474, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851425.492, \"ph\": \"X\", \"dur\": 62.71518081256497, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851431.997, \"ph\": \"X\", \"dur\": 83.97113105996485, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851461.613, \"ph\": \"X\", \"dur\": 63.95443773446661, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851526.047, \"ph\": \"X\", \"dur\": 0.1062647843659619, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851526.356, \"ph\": \"X\", \"dur\": 0.043902821709880975, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851461.299, \"ph\": \"X\", \"dur\": 65.17299048476643, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851526.611, \"ph\": \"X\", \"dur\": 0.03417435553553235, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851395.221, \"ph\": \"X\", \"dur\": 131.45427776985673, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851476.532, \"ph\": \"X\", \"dur\": 69.51014026357154, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851488.771, \"ph\": \"X\", \"dur\": 62.88804817304762, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851520.621, \"ph\": \"X\", \"dur\": 64.45258509216339, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851585.545, \"ph\": \"X\", \"dur\": 0.1147460112871889, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851585.891, \"ph\": \"X\", \"dur\": 0.044152269560505296, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851520.262, \"ph\": \"X\", \"dur\": 65.82704274910341, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851586.225, \"ph\": \"X\", \"dur\": 0.021701963004316163, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851431.874, \"ph\": \"X\", \"dur\": 154.40597450580074, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851526.827, \"ph\": \"X\", \"dur\": 63.781071478282705, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851591.047, \"ph\": \"X\", \"dur\": 0.1062647843659619, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851591.343, \"ph\": \"X\", \"dur\": 0.06859815892168902, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851526.741, \"ph\": \"X\", \"dur\": 64.7419445988876, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851330.854, \"ph\": \"X\", \"dur\": 260.6797389943851, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851546.822, \"ph\": \"X\", \"dur\": 63.33755319987266, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851610.609, \"ph\": \"X\", \"dur\": 0.10027803595097812, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851610.913, \"ph\": \"X\", \"dur\": 0.0705937417266836, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851546.626, \"ph\": \"X\", \"dur\": 64.44784558300152, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851611.258, \"ph\": \"X\", \"dur\": 0.05487852713735121, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851476.388, \"ph\": \"X\", \"dur\": 134.9909493960084, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851552.234, \"ph\": \"X\", \"dur\": 63.15545626891689, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851615.858, \"ph\": \"X\", \"dur\": 0.10826036717095648, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851616.208, \"ph\": \"X\", \"dur\": 0.04988957012486474, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851552.117, \"ph\": \"X\", \"dur\": 64.21436239481716, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851616.532, \"ph\": \"X\", \"dur\": 0.045898404514875556, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851488.634, \"ph\": \"X\", \"dur\": 127.97996810636116, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851591.815, \"ph\": \"X\", \"dur\": 63.78281761323707, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851586.62, \"ph\": \"X\", \"dur\": 84.61271093177061, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851671.906, \"ph\": \"X\", \"dur\": 0.12148110325404565, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851672.246, \"ph\": \"X\", \"dur\": 0.057871901344843095, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851586.469, \"ph\": \"X\", \"dur\": 85.9213143561458, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851358.199, \"ph\": \"X\", \"dur\": 314.2835876150461, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851616.794, \"ph\": \"X\", \"dur\": 62.9247170070894, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851680.115, \"ph\": \"X\", \"dur\": 0.10651423221658622, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851680.426, \"ph\": \"X\", \"dur\": 0.06909705462293766, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851616.712, \"ph\": \"X\", \"dur\": 63.85366080281438, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851425.35, \"ph\": \"X\", \"dur\": 255.26647118798667, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851611.632, \"ph\": \"X\", \"dur\": 71.53840073699793, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851684.103, \"ph\": \"X\", \"dur\": 0.1586488329970699, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851684.515, \"ph\": \"X\", \"dur\": 0.05388073573485392, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851611.525, \"ph\": \"X\", \"dur\": 73.17577642849598, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851406.659, \"ph\": \"X\", \"dur\": 278.1228788449922, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851656.142, \"ph\": \"X\", \"dur\": 63.910036017055475, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851720.54, \"ph\": \"X\", \"dur\": 0.10476809726221596, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851720.827, \"ph\": \"X\", \"dur\": 0.06784981536981605, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851656.01, \"ph\": \"X\", \"dur\": 64.95696864612577, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851721.13, \"ph\": \"X\", \"dur\": 0.056874109942345805, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851591.707, \"ph\": \"X\", \"dur\": 129.53577435070505, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851266.473, \"ph\": \"X\", \"dur\": 454.81876493903064, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849987.955, \"ph\": \"X\", \"dur\": 1733.4183523932886, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849987.739, \"ph\": \"X\", \"dur\": 1733.8179678499887, \"name\": \"MyThread.run (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:16)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851725.623, \"ph\": \"X\", \"dur\": 0.18783423152011575, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851726.417, \"ph\": \"X\", \"dur\": 0.25269067268243994, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995851723.881, \"ph\": \"X\", \"dur\": 2.9192881958564603, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849950.38, \"ph\": \"X\", \"dur\": 1776.4930072390969, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222338, \"ts\": 81995849949.998, \"ph\": \"X\", \"dur\": 1776.9345299347017, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851680.891, \"ph\": \"X\", \"dur\": 64.00682178309772, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851688.597, \"ph\": \"X\", \"dur\": 71.76090821975481, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851672.777, \"ph\": \"X\", \"dur\": 122.4826363743023, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851745.649, \"ph\": \"X\", \"dur\": 63.1739154098631, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851809.257, \"ph\": \"X\", \"dur\": 0.11025594997595109, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851809.581, \"ph\": \"X\", \"dur\": 0.06335975405857822, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851745.501, \"ph\": \"X\", \"dur\": 64.23506656641898, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851809.896, \"ph\": \"X\", \"dur\": 0.04664674806674853, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851680.79, \"ph\": \"X\", \"dur\": 129.1935318996485, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851361.506, \"ph\": \"X\", \"dur\": 448.5281890419865, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850397.836, \"ph\": \"X\", \"dur\": 1412.2505029967124, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850397.678, \"ph\": \"X\", \"dur\": 1412.5777785767314, \"name\": \"MyThread.run (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:16)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851812.869, \"ph\": \"X\", \"dur\": 0.2220085870556481, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851813.816, \"ph\": \"X\", \"dur\": 0.3332623284340964, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995851811.15, \"ph\": \"X\", \"dur\": 3.169484390032657, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850369.428, \"ph\": \"X\", \"dur\": 1444.9775621029225, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222340, \"ts\": 81995850369.048, \"ph\": \"X\", \"dur\": 1445.488431301001, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851761.191, \"ph\": \"X\", \"dur\": 102.83437752417619, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851864.708, \"ph\": \"X\", \"dur\": 0.1586488329970699, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851865.083, \"ph\": \"X\", \"dur\": 0.06036637985108634, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851761.019, \"ph\": \"X\", \"dur\": 104.22105812579682, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851865.406, \"ph\": \"X\", \"dur\": 0.06485644116232415, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851688.38, \"ph\": \"X\", \"dur\": 177.13915492459788, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851341.801, \"ph\": \"X\", \"dur\": 523.782614409735, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850201.542, \"ph\": \"X\", \"dur\": 1664.0950485698345, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850201.302, \"ph\": \"X\", \"dur\": 1664.4537545790322, \"name\": \"MyThread.run (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:16)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851867.115, \"ph\": \"X\", \"dur\": 0.1334546000840132, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851867.743, \"ph\": \"X\", \"dur\": 0.15765104159457258, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995851866.227, \"ph\": \"X\", \"dur\": 1.763845751764593, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850170.663, \"ph\": \"X\", \"dur\": 1697.3891026405138, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222339, \"ts\": 81995850170.225, \"ph\": \"X\", \"dur\": 1697.8912411638205, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851796.221, \"ph\": \"X\", \"dur\": 129.36116085526803, \"name\": \"time.sleep\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851928.348, \"ph\": \"X\", \"dur\": 0.12796674737027805, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851928.696, \"ph\": \"X\", \"dur\": 0.06585423256482145, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851796.072, \"ph\": \"X\", \"dur\": 132.78034254377562, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851929.017, \"ph\": \"X\", \"dur\": 0.09229570473099977, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851672.656, \"ph\": \"X\", \"dur\": 256.5082225883946, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851277.967, \"ph\": \"X\", \"dur\": 651.2474727045569, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849836.468, \"ph\": \"X\", \"dur\": 2092.834290173943, \"name\": \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849835.552, \"ph\": \"X\", \"dur\": 2093.9074148273285, \"name\": \"MyThread.run (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:16)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851931.687, \"ph\": \"X\", \"dur\": 0.1756112868395239, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851932.629, \"ph\": \"X\", \"dur\": 0.33500846338846674, \"name\": \"_thread.RLock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995851930.074, \"ph\": \"X\", \"dur\": 3.058480096504833, \"name\": \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849787.029, \"ph\": \"X\", \"dur\": 2146.200414992959, \"name\": \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222337, \"ts\": 81995849784.712, \"ph\": \"X\", \"dur\": 2148.621306383268, \"name\": \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850440.413, \"ph\": \"X\", \"dur\": 1545.1760241895513, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851986.215, \"ph\": \"X\", \"dur\": 0.2743926356867561, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851988.944, \"ph\": \"X\", \"dur\": 0.08905288267288355, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851989.896, \"ph\": \"X\", \"dur\": 0.2788826969979939, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851992.016, \"ph\": \"X\", \"dur\": 0.07682993799229171, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851992.451, \"ph\": \"X\", \"dur\": 0.05961803629921337, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851992.628, \"ph\": \"X\", \"dur\": 0.06186306695483228, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851992.791, \"ph\": \"X\", \"dur\": 0.03417435553553235, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851992.922, \"ph\": \"X\", \"dur\": 0.038664416846770175, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851993.196, \"ph\": \"X\", \"dur\": 0.7885046558234873, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851991.46, \"ph\": \"X\", \"dur\": 2.6172068487504045, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851994.292, \"ph\": \"X\", \"dur\": 0.17685852609264552, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851988.482, \"ph\": \"X\", \"dur\": 6.103490009075952, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850440.064, \"ph\": \"X\", \"dur\": 1554.6350866852258, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995850436.46, \"ph\": \"X\", \"dur\": 1558.5688792895714, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851996.524, \"ph\": \"X\", \"dur\": 0.07807717724541333, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851996.964, \"ph\": \"X\", \"dur\": 0.18334417020887792, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851996.845, \"ph\": \"X\", \"dur\": 0.6762531230425416, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851998.4, \"ph\": \"X\", \"dur\": 0.5176042900454717, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851999.071, \"ph\": \"X\", \"dur\": 0.07508380303792142, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851999.441, \"ph\": \"X\", \"dur\": 0.06685202396731876, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851999.931, \"ph\": \"X\", \"dur\": 0.14492920121273206, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852000.586, \"ph\": \"X\", \"dur\": 0.030682085626791814, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852000.796, \"ph\": \"X\", \"dur\": 0.15814993729582122, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852000.388, \"ph\": \"X\", \"dur\": 0.6340964362870308, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852001.114, \"ph\": \"X\", \"dur\": 0.12896453877277533, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851999.318, \"ph\": \"X\", \"dur\": 1.9798675904052572, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851997.915, \"ph\": \"X\", \"dur\": 3.433649663843816, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995851995.88, \"ph\": \"X\", \"dur\": 5.591373571744216, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852001.849, \"ph\": \"X\", \"dur\": 0.17536183898889957, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852002.155, \"ph\": \"X\", \"dur\": 0.07558269873917009, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852002.124, \"ph\": \"X\", \"dur\": 0.18084969170263468, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852002.526, \"ph\": \"X\", \"dur\": 0.232734844632494, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852002.84, \"ph\": \"X\", \"dur\": 0.05238404863110798, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852005.046, \"ph\": \"X\", \"dur\": 0.03417435553553235, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852005.213, \"ph\": \"X\", \"dur\": 0.1304612258765213, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852005.733, \"ph\": \"X\", \"dur\": 0.056874109942345805, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852005.921, \"ph\": \"X\", \"dur\": 0.09404183968537004, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852005.582, \"ph\": \"X\", \"dur\": 0.4719553333812204, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.121, \"ph\": \"X\", \"dur\": 0.05886969274734039, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852004.951, \"ph\": \"X\", \"dur\": 1.2856542221177645, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852002.4, \"ph\": \"X\", \"dur\": 3.8826557949675986, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852001.695, \"ph\": \"X\", \"dur\": 4.644968426475532, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.64, \"ph\": \"X\", \"dur\": 0.04639730021612421, \"name\": \"Event.is_set (/usr/lib/python3.12/threading.py:601)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.794, \"ph\": \"X\", \"dur\": 0.038165521145521526, \"name\": \"_thread.get_ident\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.759, \"ph\": \"X\", \"dur\": 0.1304612258765213, \"name\": \"current_thread (/usr/lib/python3.12/threading.py:1483)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852007.031, \"ph\": \"X\", \"dur\": 0.25718073399367775, \"name\": \"_thread.lock.acquire\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852007.34, \"ph\": \"X\", \"dur\": 0.04140834320363773, \"name\": \"_thread.lock.release\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852007.515, \"ph\": \"X\", \"dur\": 0.03616993834052694, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852007.606, \"ph\": \"X\", \"dur\": 0.07757828154416467, \"name\": \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852019.042, \"ph\": \"X\", \"dur\": 0.12447447746153753, \"name\": \"_thread.lock.locked\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852019.481, \"ph\": \"X\", \"dur\": 0.25318956838368856, \"name\": \"set.difference_update\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852018.746, \"ph\": \"X\", \"dur\": 1.0960738556432785, \"name\": \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852019.965, \"ph\": \"X\", \"dur\": 0.12497337316278617, \"name\": \"_thread.lock.__exit__\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852007.476, \"ph\": \"X\", \"dur\": 12.681679277889993, \"name\": \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.971, \"ph\": \"X\", \"dur\": 13.258901604234678, \"name\": \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\", \"cat\": \"FEE\"}, {\"pid\": 222323, \"tid\": 222323, \"ts\": 81995852006.497, \"ph\": \"X\", \"dur\": 13.884017917899232, \"name\": \"Thread.join (/usr/lib/python3.12/threading.py:1115)\", \"cat\": \"FEE\"}], \"viztracer_metadata\": {\"version\": \"1.1.1\", \"overflow\": false, \"baseTimeNanoseconds\": 1767325615896926964}, \"file_info\": {\"files\": {\"/usr/lib/python3.12/threading.py\": [\"\\\"\\\"\\\"Thread module emulating a subset of Java's threading model.\\\"\\\"\\\"\\n\\nimport os as _os\\nimport sys as _sys\\nimport _thread\\nimport functools\\n\\nfrom time import monotonic as _time\\nfrom _weakrefset import WeakSet\\nfrom itertools import count as _count\\ntry:\\n    from _collections import deque as _deque\\nexcept ImportError:\\n    from collections import deque as _deque\\n\\n# Note regarding PEP 8 compliant names\\n#  This threading model was originally inspired by Java, and inherited\\n# the convention of camelCase function and method names from that\\n# language. Those original names are not in any imminent danger of\\n# being deprecated (even for Py3k),so this module provides them as an\\n# alias for the PEP 8 compliant names\\n# Note that using the new PEP 8 compliant names facilitates substitution\\n# with the multiprocessing module, which doesn't provide the old\\n# Java inspired names.\\n\\n__all__ = ['get_ident', 'active_count', 'Condition', 'current_thread',\\n           'enumerate', 'main_thread', 'TIMEOUT_MAX',\\n           'Event', 'Lock', 'RLock', 'Semaphore', 'BoundedSemaphore', 'Thread',\\n           'Barrier', 'BrokenBarrierError', 'Timer', 'ThreadError',\\n           'setprofile', 'settrace', 'local', 'stack_size',\\n           'excepthook', 'ExceptHookArgs', 'gettrace', 'getprofile',\\n           'setprofile_all_threads','settrace_all_threads']\\n\\n# Rename some stuff so \\\"from threading import *\\\" is safe\\n_start_new_thread = _thread.start_new_thread\\n_daemon_threads_allowed = _thread.daemon_threads_allowed\\n_allocate_lock = _thread.allocate_lock\\n_set_sentinel = _thread._set_sentinel\\nget_ident = _thread.get_ident\\ntry:\\n    _is_main_interpreter = _thread._is_main_interpreter\\nexcept AttributeError:\\n    # See https://github.com/python/cpython/issues/112826.\\n    # We can pretend a subinterpreter is the main interpreter for the\\n    # sake of _shutdown(), since that only means we do not wait for the\\n    # subinterpreter's threads to finish.  Instead, they will be stopped\\n    # later by the mechanism we use for daemon threads.  The likelihood\\n    # of this case is small because rarely will the _thread module be\\n    # replaced by a module without _is_main_interpreter().\\n    # Furthermore, this is all irrelevant in applications\\n    # that do not use subinterpreters.\\n    def _is_main_interpreter():\\n        return True\\ntry:\\n    get_native_id = _thread.get_native_id\\n    _HAVE_THREAD_NATIVE_ID = True\\n    __all__.append('get_native_id')\\nexcept AttributeError:\\n    _HAVE_THREAD_NATIVE_ID = False\\nThreadError = _thread.error\\ntry:\\n    _CRLock = _thread.RLock\\nexcept AttributeError:\\n    _CRLock = None\\nTIMEOUT_MAX = _thread.TIMEOUT_MAX\\ndel _thread\\n\\n\\n# Support for profile and trace hooks\\n\\n_profile_hook = None\\n_trace_hook = None\\n\\ndef setprofile(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    global _profile_hook\\n    _profile_hook = func\\n\\ndef setprofile_all_threads(func):\\n    \\\"\\\"\\\"Set a profile function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.setprofile() for each thread, before its\\n    run() method is called.\\n    \\\"\\\"\\\"\\n    setprofile(func)\\n    _sys._setprofileallthreads(func)\\n\\ndef getprofile():\\n    \\\"\\\"\\\"Get the profiler function as set by threading.setprofile().\\\"\\\"\\\"\\n    return _profile_hook\\n\\ndef settrace(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    global _trace_hook\\n    _trace_hook = func\\n\\ndef settrace_all_threads(func):\\n    \\\"\\\"\\\"Set a trace function for all threads started from the threading module\\n    and all Python threads that are currently executing.\\n\\n    The func will be passed to sys.settrace() for each thread, before its run()\\n    method is called.\\n    \\\"\\\"\\\"\\n    settrace(func)\\n    _sys._settraceallthreads(func)\\n\\ndef gettrace():\\n    \\\"\\\"\\\"Get the trace function as set by threading.settrace().\\\"\\\"\\\"\\n    return _trace_hook\\n\\n# Synchronization classes\\n\\nLock = _allocate_lock\\n\\ndef RLock(*args, **kwargs):\\n    \\\"\\\"\\\"Factory function that returns a new reentrant lock.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it again\\n    without blocking; the thread must release it once for each time it has\\n    acquired it.\\n\\n    \\\"\\\"\\\"\\n    if _CRLock is None:\\n        return _PyRLock(*args, **kwargs)\\n    return _CRLock(*args, **kwargs)\\n\\nclass _RLock:\\n    \\\"\\\"\\\"This class implements reentrant lock objects.\\n\\n    A reentrant lock must be released by the thread that acquired it. Once a\\n    thread has acquired a reentrant lock, the same thread may acquire it\\n    again without blocking; the thread must release it once for each time it\\n    has acquired it.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self):\\n        self._block = _allocate_lock()\\n        self._owner = None\\n        self._count = 0\\n\\n    def __repr__(self):\\n        owner = self._owner\\n        try:\\n            owner = _active[owner].name\\n        except KeyError:\\n            pass\\n        return \\\"<%s %s.%s object owner=%r count=%d at %s>\\\" % (\\n            \\\"locked\\\" if self._block.locked() else \\\"unlocked\\\",\\n            self.__class__.__module__,\\n            self.__class__.__qualname__,\\n            owner,\\n            self._count,\\n            hex(id(self))\\n        )\\n\\n    def _at_fork_reinit(self):\\n        self._block._at_fork_reinit()\\n        self._owner = None\\n        self._count = 0\\n\\n    def acquire(self, blocking=True, timeout=-1):\\n        \\\"\\\"\\\"Acquire a lock, blocking or non-blocking.\\n\\n        When invoked without arguments: if this thread already owns the lock,\\n        increment the recursion level by one, and return immediately. Otherwise,\\n        if another thread owns the lock, block until the lock is unlocked. Once\\n        the lock is unlocked (not owned by any thread), then grab ownership, set\\n        the recursion level to one, and return. If more than one thread is\\n        blocked waiting until the lock is unlocked, only one at a time will be\\n        able to grab ownership of the lock. There is no return value in this\\n        case.\\n\\n        When invoked with the blocking argument set to true, do the same thing\\n        as when called without arguments, and return true.\\n\\n        When invoked with the blocking argument set to false, do not block. If a\\n        call without an argument would block, return false immediately;\\n        otherwise, do the same thing as when called without arguments, and\\n        return true.\\n\\n        When invoked with the floating-point timeout argument set to a positive\\n        value, block for at most the number of seconds specified by timeout\\n        and as long as the lock cannot be acquired.  Return true if the lock has\\n        been acquired, false if the timeout has elapsed.\\n\\n        \\\"\\\"\\\"\\n        me = get_ident()\\n        if self._owner == me:\\n            self._count += 1\\n            return 1\\n        rc = self._block.acquire(blocking, timeout)\\n        if rc:\\n            self._owner = me\\n            self._count = 1\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self):\\n        \\\"\\\"\\\"Release a lock, decrementing the recursion level.\\n\\n        If after the decrement it is zero, reset the lock to unlocked (not owned\\n        by any thread), and if any other threads are blocked waiting for the\\n        lock to become unlocked, allow exactly one of them to proceed. If after\\n        the decrement the recursion level is still nonzero, the lock remains\\n        locked and owned by the calling thread.\\n\\n        Only call this method when the calling thread owns the lock. A\\n        RuntimeError is raised if this method is called when the lock is\\n        unlocked.\\n\\n        There is no return value.\\n\\n        \\\"\\\"\\\"\\n        if self._owner != get_ident():\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        self._count = count = self._count - 1\\n        if not count:\\n            self._owner = None\\n            self._block.release()\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n    # Internal methods used by condition variables\\n\\n    def _acquire_restore(self, state):\\n        self._block.acquire()\\n        self._count, self._owner = state\\n\\n    def _release_save(self):\\n        if self._count == 0:\\n            raise RuntimeError(\\\"cannot release un-acquired lock\\\")\\n        count = self._count\\n        self._count = 0\\n        owner = self._owner\\n        self._owner = None\\n        self._block.release()\\n        return (count, owner)\\n\\n    def _is_owned(self):\\n        return self._owner == get_ident()\\n\\n    # Internal method used for reentrancy checks\\n\\n    def _recursion_count(self):\\n        if self._owner != get_ident():\\n            return 0\\n        return self._count\\n\\n_PyRLock = _RLock\\n\\n\\nclass Condition:\\n    \\\"\\\"\\\"Class that implements a condition variable.\\n\\n    A condition variable allows one or more threads to wait until they are\\n    notified by another thread.\\n\\n    If the lock argument is given and not None, it must be a Lock or RLock\\n    object, and it is used as the underlying lock. Otherwise, a new RLock object\\n    is created and used as the underlying lock.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, lock=None):\\n        if lock is None:\\n            lock = RLock()\\n        self._lock = lock\\n        # Export the lock's acquire() and release() methods\\n        self.acquire = lock.acquire\\n        self.release = lock.release\\n        # If the lock defines _release_save() and/or _acquire_restore(),\\n        # these override the default implementations (which just call\\n        # release() and acquire() on the lock).  Ditto for _is_owned().\\n        if hasattr(lock, '_release_save'):\\n            self._release_save = lock._release_save\\n        if hasattr(lock, '_acquire_restore'):\\n            self._acquire_restore = lock._acquire_restore\\n        if hasattr(lock, '_is_owned'):\\n            self._is_owned = lock._is_owned\\n        self._waiters = _deque()\\n\\n    def _at_fork_reinit(self):\\n        self._lock._at_fork_reinit()\\n        self._waiters.clear()\\n\\n    def __enter__(self):\\n        return self._lock.__enter__()\\n\\n    def __exit__(self, *args):\\n        return self._lock.__exit__(*args)\\n\\n    def __repr__(self):\\n        return \\\"<Condition(%s, %d)>\\\" % (self._lock, len(self._waiters))\\n\\n    def _release_save(self):\\n        self._lock.release()           # No state to save\\n\\n    def _acquire_restore(self, x):\\n        self._lock.acquire()           # Ignore saved state\\n\\n    def _is_owned(self):\\n        # Return True if lock is owned by current_thread.\\n        # This method is called only if _lock doesn't have _is_owned().\\n        if self._lock.acquire(False):\\n            self._lock.release()\\n            return False\\n        else:\\n            return True\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait until notified or until a timeout occurs.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method releases the underlying lock, and then blocks until it is\\n        awakened by a notify() or notify_all() call for the same condition\\n        variable in another thread, or until the optional timeout occurs. Once\\n        awakened or timed out, it re-acquires the lock and returns.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        When the underlying lock is an RLock, it is not released using its\\n        release() method, since this may not actually unlock the lock when it\\n        was acquired multiple times recursively. Instead, an internal interface\\n        of the RLock class is used, which really unlocks it even when it has\\n        been recursively acquired several times. Another internal interface is\\n        then used to restore the recursion level when the lock is reacquired.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot wait on un-acquired lock\\\")\\n        waiter = _allocate_lock()\\n        waiter.acquire()\\n        self._waiters.append(waiter)\\n        saved_state = self._release_save()\\n        gotit = False\\n        try:    # restore state no matter what (e.g., KeyboardInterrupt)\\n            if timeout is None:\\n                waiter.acquire()\\n                gotit = True\\n            else:\\n                if timeout > 0:\\n                    gotit = waiter.acquire(True, timeout)\\n                else:\\n                    gotit = waiter.acquire(False)\\n            return gotit\\n        finally:\\n            self._acquire_restore(saved_state)\\n            if not gotit:\\n                try:\\n                    self._waiters.remove(waiter)\\n                except ValueError:\\n                    pass\\n\\n    def wait_for(self, predicate, timeout=None):\\n        \\\"\\\"\\\"Wait until a condition evaluates to True.\\n\\n        predicate should be a callable which result will be interpreted as a\\n        boolean value.  A timeout may be provided giving the maximum time to\\n        wait.\\n\\n        \\\"\\\"\\\"\\n        endtime = None\\n        waittime = timeout\\n        result = predicate()\\n        while not result:\\n            if waittime is not None:\\n                if endtime is None:\\n                    endtime = _time() + waittime\\n                else:\\n                    waittime = endtime - _time()\\n                    if waittime <= 0:\\n                        break\\n            self.wait(waittime)\\n            result = predicate()\\n        return result\\n\\n    def notify(self, n=1):\\n        \\\"\\\"\\\"Wake up one or more threads waiting on this condition, if any.\\n\\n        If the calling thread has not acquired the lock when this method is\\n        called, a RuntimeError is raised.\\n\\n        This method wakes up at most n of the threads waiting for the condition\\n        variable; it is a no-op if no threads are waiting.\\n\\n        \\\"\\\"\\\"\\n        if not self._is_owned():\\n            raise RuntimeError(\\\"cannot notify on un-acquired lock\\\")\\n        waiters = self._waiters\\n        while waiters and n > 0:\\n            waiter = waiters[0]\\n            try:\\n                waiter.release()\\n            except RuntimeError:\\n                # gh-92530: The previous call of notify() released the lock,\\n                # but was interrupted before removing it from the queue.\\n                # It can happen if a signal handler raises an exception,\\n                # like CTRL+C which raises KeyboardInterrupt.\\n                pass\\n            else:\\n                n -= 1\\n            try:\\n                waiters.remove(waiter)\\n            except ValueError:\\n                pass\\n\\n    def notify_all(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        If the calling thread has not acquired the lock when this method\\n        is called, a RuntimeError is raised.\\n\\n        \\\"\\\"\\\"\\n        self.notify(len(self._waiters))\\n\\n    def notifyAll(self):\\n        \\\"\\\"\\\"Wake up all threads waiting on this condition.\\n\\n        This method is deprecated, use notify_all() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('notifyAll() is deprecated, use notify_all() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.notify_all()\\n\\n\\nclass Semaphore:\\n    \\\"\\\"\\\"This class implements semaphore objects.\\n\\n    Semaphores manage a counter representing the number of release() calls minus\\n    the number of acquire() calls, plus an initial value. The acquire() method\\n    blocks if necessary until it can return without making the counter\\n    negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' semaphore class, but not quite the same (no maximum)\\n\\n    def __init__(self, value=1):\\n        if value < 0:\\n            raise ValueError(\\\"semaphore initial value must be >= 0\\\")\\n        self._cond = Condition(Lock())\\n        self._value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}>\\\")\\n\\n    def acquire(self, blocking=True, timeout=None):\\n        \\\"\\\"\\\"Acquire a semaphore, decrementing the internal counter by one.\\n\\n        When invoked without arguments: if the internal counter is larger than\\n        zero on entry, decrement it by one and return immediately. If it is zero\\n        on entry, block, waiting until some other thread has called release() to\\n        make it larger than zero. This is done with proper interlocking so that\\n        if multiple acquire() calls are blocked, release() will wake exactly one\\n        of them up. The implementation may pick one at random, so the order in\\n        which blocked threads are awakened should not be relied on. There is no\\n        return value in this case.\\n\\n        When invoked with blocking set to true, do the same thing as when called\\n        without arguments, and return true.\\n\\n        When invoked with blocking set to false, do not block. If a call without\\n        an argument would block, return false immediately; otherwise, do the\\n        same thing as when called without arguments, and return true.\\n\\n        When invoked with a timeout other than None, it will block for at\\n        most timeout seconds.  If acquire does not complete successfully in\\n        that interval, return false.  Return true otherwise.\\n\\n        \\\"\\\"\\\"\\n        if not blocking and timeout is not None:\\n            raise ValueError(\\\"can't specify timeout for non-blocking acquire\\\")\\n        rc = False\\n        endtime = None\\n        with self._cond:\\n            while self._value == 0:\\n                if not blocking:\\n                    break\\n                if timeout is not None:\\n                    if endtime is None:\\n                        endtime = _time() + timeout\\n                    else:\\n                        timeout = endtime - _time()\\n                        if timeout <= 0:\\n                            break\\n                self._cond.wait(timeout)\\n            else:\\n                self._value -= 1\\n                rc = True\\n        return rc\\n\\n    __enter__ = acquire\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            self._value += n\\n            self._cond.notify(n)\\n\\n    def __exit__(self, t, v, tb):\\n        self.release()\\n\\n\\nclass BoundedSemaphore(Semaphore):\\n    \\\"\\\"\\\"Implements a bounded semaphore.\\n\\n    A bounded semaphore checks to make sure its current value doesn't exceed its\\n    initial value. If it does, ValueError is raised. In most situations\\n    semaphores are used to guard resources with limited capacity.\\n\\n    If the semaphore is released too many times it's a sign of a bug. If not\\n    given, value defaults to 1.\\n\\n    Like regular semaphores, bounded semaphores manage a counter representing\\n    the number of release() calls minus the number of acquire() calls, plus an\\n    initial value. The acquire() method blocks if necessary until it can return\\n    without making the counter negative. If not given, value defaults to 1.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, value=1):\\n        super().__init__(value)\\n        self._initial_value = value\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" value={self._value}/{self._initial_value}>\\\")\\n\\n    def release(self, n=1):\\n        \\\"\\\"\\\"Release a semaphore, incrementing the internal counter by one or more.\\n\\n        When the counter is zero on entry and another thread is waiting for it\\n        to become larger than zero again, wake up that thread.\\n\\n        If the number of releases exceeds the number of acquires,\\n        raise a ValueError.\\n\\n        \\\"\\\"\\\"\\n        if n < 1:\\n            raise ValueError('n must be one or more')\\n        with self._cond:\\n            if self._value + n > self._initial_value:\\n                raise ValueError(\\\"Semaphore released too many times\\\")\\n            self._value += n\\n            self._cond.notify(n)\\n\\n\\nclass Event:\\n    \\\"\\\"\\\"Class implementing event objects.\\n\\n    Events manage a flag that can be set to true with the set() method and reset\\n    to false with the clear() method. The wait() method blocks until the flag is\\n    true.  The flag is initially false.\\n\\n    \\\"\\\"\\\"\\n\\n    # After Tim Peters' event class (without is_posted())\\n\\n    def __init__(self):\\n        self._cond = Condition(Lock())\\n        self._flag = False\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        status = 'set' if self._flag else 'unset'\\n        return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: {status}>\\\"\\n\\n    def _at_fork_reinit(self):\\n        # Private method called by Thread._reset_internal_locks()\\n        self._cond._at_fork_reinit()\\n\\n    def is_set(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\\"\\\"\\\"\\n        return self._flag\\n\\n    def isSet(self):\\n        \\\"\\\"\\\"Return true if and only if the internal flag is true.\\n\\n        This method is deprecated, use is_set() instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isSet() is deprecated, use is_set() instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.is_set()\\n\\n    def set(self):\\n        \\\"\\\"\\\"Set the internal flag to true.\\n\\n        All threads waiting for it to become true are awakened. Threads\\n        that call wait() once the flag is true will not block at all.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = True\\n            self._cond.notify_all()\\n\\n    def clear(self):\\n        \\\"\\\"\\\"Reset the internal flag to false.\\n\\n        Subsequently, threads calling wait() will block until set() is called to\\n        set the internal flag to true again.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._flag = False\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Block until the internal flag is true.\\n\\n        If the internal flag is true on entry, return immediately. Otherwise,\\n        block until another thread calls set() to set the flag to true, or until\\n        the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof).\\n\\n        This method returns the internal flag on exit, so it will always return\\n        True except if a timeout is given and the operation times out.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            signaled = self._flag\\n            if not signaled:\\n                signaled = self._cond.wait(timeout)\\n            return signaled\\n\\n\\n# A barrier class.  Inspired in part by the pthread_barrier_* api and\\n# the CyclicBarrier class from Java.  See\\n# http://sourceware.org/pthreads-win32/manual/pthread_barrier_init.html and\\n# http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/\\n#        CyclicBarrier.html\\n# for information.\\n# We maintain two main states, 'filling' and 'draining' enabling the barrier\\n# to be cyclic.  Threads are not allowed into it until it has fully drained\\n# since the previous cycle.  In addition, a 'resetting' state exists which is\\n# similar to 'draining' except that threads leave with a BrokenBarrierError,\\n# and a 'broken' state in which all threads get the exception.\\nclass Barrier:\\n    \\\"\\\"\\\"Implements a Barrier.\\n\\n    Useful for synchronizing a fixed number of threads at known synchronization\\n    points.  Threads block on 'wait()' and are simultaneously awoken once they\\n    have all made that call.\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, parties, action=None, timeout=None):\\n        \\\"\\\"\\\"Create a barrier, initialised to 'parties' threads.\\n\\n        'action' is a callable which, when supplied, will be called by one of\\n        the threads after they have all entered the barrier and just prior to\\n        releasing them all. If a 'timeout' is provided, it is used as the\\n        default for all subsequent 'wait()' calls.\\n\\n        \\\"\\\"\\\"\\n        self._cond = Condition(Lock())\\n        self._action = action\\n        self._timeout = timeout\\n        self._parties = parties\\n        self._state = 0  # 0 filling, 1 draining, -1 resetting, -2 broken\\n        self._count = 0\\n\\n    def __repr__(self):\\n        cls = self.__class__\\n        if self.broken:\\n            return f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}: broken>\\\"\\n        return (f\\\"<{cls.__module__}.{cls.__qualname__} at {id(self):#x}:\\\"\\n                f\\\" waiters={self.n_waiting}/{self.parties}>\\\")\\n\\n    def wait(self, timeout=None):\\n        \\\"\\\"\\\"Wait for the barrier.\\n\\n        When the specified number of threads have started waiting, they are all\\n        simultaneously awoken. If an 'action' was provided for the barrier, one\\n        of the threads will have executed that callback prior to returning.\\n        Returns an individual index number from 0 to 'parties-1'.\\n\\n        \\\"\\\"\\\"\\n        if timeout is None:\\n            timeout = self._timeout\\n        with self._cond:\\n            self._enter() # Block while the barrier drains.\\n            index = self._count\\n            self._count += 1\\n            try:\\n                if index + 1 == self._parties:\\n                    # We release the barrier\\n                    self._release()\\n                else:\\n                    # We wait until someone releases us\\n                    self._wait(timeout)\\n                return index\\n            finally:\\n                self._count -= 1\\n                # Wake up any threads waiting for barrier to drain.\\n                self._exit()\\n\\n    # Block until the barrier is ready for us, or raise an exception\\n    # if it is broken.\\n    def _enter(self):\\n        while self._state in (-1, 1):\\n            # It is draining or resetting, wait until done\\n            self._cond.wait()\\n        #see if the barrier is in a broken state\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 0\\n\\n    # Optionally run the 'action' and release the threads waiting\\n    # in the barrier.\\n    def _release(self):\\n        try:\\n            if self._action:\\n                self._action()\\n            # enter draining state\\n            self._state = 1\\n            self._cond.notify_all()\\n        except:\\n            #an exception during the _action handler.  Break and reraise\\n            self._break()\\n            raise\\n\\n    # Wait in the barrier until we are released.  Raise an exception\\n    # if the barrier is reset or broken.\\n    def _wait(self, timeout):\\n        if not self._cond.wait_for(lambda : self._state != 0, timeout):\\n            #timed out.  Break the barrier\\n            self._break()\\n            raise BrokenBarrierError\\n        if self._state < 0:\\n            raise BrokenBarrierError\\n        assert self._state == 1\\n\\n    # If we are the last thread to exit the barrier, signal any threads\\n    # waiting for the barrier to drain.\\n    def _exit(self):\\n        if self._count == 0:\\n            if self._state in (-1, 1):\\n                #resetting or draining\\n                self._state = 0\\n                self._cond.notify_all()\\n\\n    def reset(self):\\n        \\\"\\\"\\\"Reset the barrier to the initial state.\\n\\n        Any threads currently waiting will get the BrokenBarrier exception\\n        raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            if self._count > 0:\\n                if self._state == 0:\\n                    #reset the barrier, waking up threads\\n                    self._state = -1\\n                elif self._state == -2:\\n                    #was broken, set it to reset state\\n                    #which clears when the last thread exits\\n                    self._state = -1\\n            else:\\n                self._state = 0\\n            self._cond.notify_all()\\n\\n    def abort(self):\\n        \\\"\\\"\\\"Place the barrier into a 'broken' state.\\n\\n        Useful in case of error.  Any currently waiting threads and threads\\n        attempting to 'wait()' will have BrokenBarrierError raised.\\n\\n        \\\"\\\"\\\"\\n        with self._cond:\\n            self._break()\\n\\n    def _break(self):\\n        # An internal error was detected.  The barrier is set to\\n        # a broken state all parties awakened.\\n        self._state = -2\\n        self._cond.notify_all()\\n\\n    @property\\n    def parties(self):\\n        \\\"\\\"\\\"Return the number of threads required to trip the barrier.\\\"\\\"\\\"\\n        return self._parties\\n\\n    @property\\n    def n_waiting(self):\\n        \\\"\\\"\\\"Return the number of threads currently waiting at the barrier.\\\"\\\"\\\"\\n        # We don't need synchronization here since this is an ephemeral result\\n        # anyway.  It returns the correct value in the steady state.\\n        if self._state == 0:\\n            return self._count\\n        return 0\\n\\n    @property\\n    def broken(self):\\n        \\\"\\\"\\\"Return True if the barrier is in a broken state.\\\"\\\"\\\"\\n        return self._state == -2\\n\\n# exception raised by the Barrier class\\nclass BrokenBarrierError(RuntimeError):\\n    pass\\n\\n\\n# Helper to generate new thread names\\n_counter = _count(1).__next__\\ndef _newname(name_template):\\n    return name_template % _counter()\\n\\n# Active thread administration.\\n#\\n# bpo-44422: Use a reentrant lock to allow reentrant calls to functions like\\n# threading.enumerate().\\n_active_limbo_lock = RLock()\\n_active = {}    # maps thread id to Thread object\\n_limbo = {}\\n_dangling = WeakSet()\\n\\n# Set of Thread._tstate_lock locks of non-daemon threads used by _shutdown()\\n# to wait until all Python thread states get deleted:\\n# see Thread._set_tstate_lock().\\n_shutdown_locks_lock = _allocate_lock()\\n_shutdown_locks = set()\\n\\ndef _maintain_shutdown_locks():\\n    \\\"\\\"\\\"\\n    Drop any shutdown locks that don't correspond to running threads anymore.\\n\\n    Calling this from time to time avoids an ever-growing _shutdown_locks\\n    set when Thread objects are not joined explicitly. See bpo-37788.\\n\\n    This must be called with _shutdown_locks_lock acquired.\\n    \\\"\\\"\\\"\\n    # If a lock was released, the corresponding thread has exited\\n    to_remove = [lock for lock in _shutdown_locks if not lock.locked()]\\n    _shutdown_locks.difference_update(to_remove)\\n\\n\\n# Main class for threads\\n\\nclass Thread:\\n    \\\"\\\"\\\"A class that represents a thread of control.\\n\\n    This class can be safely subclassed in a limited fashion. There are two ways\\n    to specify the activity: by passing a callable object to the constructor, or\\n    by overriding the run() method in a subclass.\\n\\n    \\\"\\\"\\\"\\n\\n    _initialized = False\\n\\n    def __init__(self, group=None, target=None, name=None,\\n                 args=(), kwargs=None, *, daemon=None):\\n        \\\"\\\"\\\"This constructor should always be called with keyword arguments. Arguments are:\\n\\n        *group* should be None; reserved for future extension when a ThreadGroup\\n        class is implemented.\\n\\n        *target* is the callable object to be invoked by the run()\\n        method. Defaults to None, meaning nothing is called.\\n\\n        *name* is the thread name. By default, a unique name is constructed of\\n        the form \\\"Thread-N\\\" where N is a small decimal number.\\n\\n        *args* is a list or tuple of arguments for the target invocation. Defaults to ().\\n\\n        *kwargs* is a dictionary of keyword arguments for the target\\n        invocation. Defaults to {}.\\n\\n        If a subclass overrides the constructor, it must make sure to invoke\\n        the base class constructor (Thread.__init__()) before doing anything\\n        else to the thread.\\n\\n        \\\"\\\"\\\"\\n        assert group is None, \\\"group argument must be None for now\\\"\\n        if kwargs is None:\\n            kwargs = {}\\n        if name:\\n            name = str(name)\\n        else:\\n            name = _newname(\\\"Thread-%d\\\")\\n            if target is not None:\\n                try:\\n                    target_name = target.__name__\\n                    name += f\\\" ({target_name})\\\"\\n                except AttributeError:\\n                    pass\\n\\n        self._target = target\\n        self._name = name\\n        self._args = args\\n        self._kwargs = kwargs\\n        if daemon is not None:\\n            if daemon and not _daemon_threads_allowed():\\n                raise RuntimeError('daemon threads are disabled in this (sub)interpreter')\\n            self._daemonic = daemon\\n        else:\\n            self._daemonic = current_thread().daemon\\n        self._ident = None\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._native_id = None\\n        self._tstate_lock = None\\n        self._started = Event()\\n        self._is_stopped = False\\n        self._initialized = True\\n        # Copy of sys.stderr used by self._invoke_excepthook()\\n        self._stderr = _sys.stderr\\n        self._invoke_excepthook = _make_invoke_excepthook()\\n        # For debugging and _after_fork()\\n        _dangling.add(self)\\n\\n    def _reset_internal_locks(self, is_alive):\\n        # private!  Called by _after_fork() to reset our internal locks as\\n        # they may be in an invalid state leading to a deadlock or crash.\\n        self._started._at_fork_reinit()\\n        if is_alive:\\n            # bpo-42350: If the fork happens when the thread is already stopped\\n            # (ex: after threading._shutdown() has been called), _tstate_lock\\n            # is None. Do nothing in this case.\\n            if self._tstate_lock is not None:\\n                self._tstate_lock._at_fork_reinit()\\n                self._tstate_lock.acquire()\\n        else:\\n            # The thread isn't alive after fork: it doesn't have a tstate\\n            # anymore.\\n            self._is_stopped = True\\n            self._tstate_lock = None\\n\\n    def __repr__(self):\\n        assert self._initialized, \\\"Thread.__init__() was not called\\\"\\n        status = \\\"initial\\\"\\n        if self._started.is_set():\\n            status = \\\"started\\\"\\n        self.is_alive() # easy way to get ._is_stopped set when appropriate\\n        if self._is_stopped:\\n            status = \\\"stopped\\\"\\n        if self._daemonic:\\n            status += \\\" daemon\\\"\\n        if self._ident is not None:\\n            status += \\\" %s\\\" % self._ident\\n        return \\\"<%s(%s, %s)>\\\" % (self.__class__.__name__, self._name, status)\\n\\n    def start(self):\\n        \\\"\\\"\\\"Start the thread's activity.\\n\\n        It must be called at most once per thread object. It arranges for the\\n        object's run() method to be invoked in a separate thread of control.\\n\\n        This method will raise a RuntimeError if called more than once on the\\n        same thread object.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"thread.__init__() not called\\\")\\n\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"threads can only be started once\\\")\\n\\n        with _active_limbo_lock:\\n            _limbo[self] = self\\n        try:\\n            _start_new_thread(self._bootstrap, ())\\n        except Exception:\\n            with _active_limbo_lock:\\n                del _limbo[self]\\n            raise\\n        self._started.wait()\\n\\n    def run(self):\\n        \\\"\\\"\\\"Method representing the thread's activity.\\n\\n        You may override this method in a subclass. The standard run() method\\n        invokes the callable object passed to the object's constructor as the\\n        target argument, if any, with sequential and keyword arguments taken\\n        from the args and kwargs arguments, respectively.\\n\\n        \\\"\\\"\\\"\\n        try:\\n            if self._target is not None:\\n                self._target(*self._args, **self._kwargs)\\n        finally:\\n            # Avoid a refcycle if the thread is running a function with\\n            # an argument that has a member that points to the thread.\\n            del self._target, self._args, self._kwargs\\n\\n    def _bootstrap(self):\\n        # Wrapper around the real bootstrap code that ignores\\n        # exceptions during interpreter cleanup.  Those typically\\n        # happen when a daemon thread wakes up at an unfortunate\\n        # moment, finds the world around it destroyed, and raises some\\n        # random exception *** while trying to report the exception in\\n        # _bootstrap_inner() below ***.  Those random exceptions\\n        # don't help anybody, and they confuse users, so we suppress\\n        # them.  We suppress them only when it appears that the world\\n        # indeed has already been destroyed, so that exceptions in\\n        # _bootstrap_inner() during normal business hours are properly\\n        # reported.  Also, we only suppress them for daemonic threads;\\n        # if a non-daemonic encounters this, something else is wrong.\\n        try:\\n            self._bootstrap_inner()\\n        except:\\n            if self._daemonic and _sys is None:\\n                return\\n            raise\\n\\n    def _set_ident(self):\\n        self._ident = get_ident()\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        def _set_native_id(self):\\n            self._native_id = get_native_id()\\n\\n    def _set_tstate_lock(self):\\n        \\\"\\\"\\\"\\n        Set a lock object which will be released by the interpreter when\\n        the underlying thread state (see pystate.h) gets deleted.\\n        \\\"\\\"\\\"\\n        self._tstate_lock = _set_sentinel()\\n        self._tstate_lock.acquire()\\n\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                _maintain_shutdown_locks()\\n                _shutdown_locks.add(self._tstate_lock)\\n\\n    def _bootstrap_inner(self):\\n        try:\\n            self._set_ident()\\n            self._set_tstate_lock()\\n            if _HAVE_THREAD_NATIVE_ID:\\n                self._set_native_id()\\n            self._started.set()\\n            with _active_limbo_lock:\\n                _active[self._ident] = self\\n                del _limbo[self]\\n\\n            if _trace_hook:\\n                _sys.settrace(_trace_hook)\\n            if _profile_hook:\\n                _sys.setprofile(_profile_hook)\\n\\n            try:\\n                self.run()\\n            except:\\n                self._invoke_excepthook(self)\\n        finally:\\n            self._delete()\\n\\n    def _stop(self):\\n        # After calling ._stop(), .is_alive() returns False and .join() returns\\n        # immediately.  ._tstate_lock must be released before calling ._stop().\\n        #\\n        # Normal case:  C code at the end of the thread's life\\n        # (release_sentinel in _threadmodule.c) releases ._tstate_lock, and\\n        # that's detected by our ._wait_for_tstate_lock(), called by .join()\\n        # and .is_alive().  Any number of threads _may_ call ._stop()\\n        # simultaneously (for example, if multiple threads are blocked in\\n        # .join() calls), and they're not serialized.  That's harmless -\\n        # they'll just make redundant rebindings of ._is_stopped and\\n        # ._tstate_lock.  Obscure:  we rebind ._tstate_lock last so that the\\n        # \\\"assert self._is_stopped\\\" in ._wait_for_tstate_lock() always works\\n        # (the assert is executed only if ._tstate_lock is None).\\n        #\\n        # Special case:  _main_thread releases ._tstate_lock via this\\n        # module's _shutdown() function.\\n        lock = self._tstate_lock\\n        if lock is not None:\\n            assert not lock.locked()\\n        self._is_stopped = True\\n        self._tstate_lock = None\\n        if not self.daemon:\\n            with _shutdown_locks_lock:\\n                # Remove our lock and other released locks from _shutdown_locks\\n                _maintain_shutdown_locks()\\n\\n    def _delete(self):\\n        \\\"Remove current thread from the dict of currently running threads.\\\"\\n        with _active_limbo_lock:\\n            del _active[get_ident()]\\n            # There must not be any python code between the previous line\\n            # and after the lock is released.  Otherwise a tracing function\\n            # could try to acquire the lock again in the same thread, (in\\n            # current_thread()), and would block.\\n\\n    def join(self, timeout=None):\\n        \\\"\\\"\\\"Wait until the thread terminates.\\n\\n        This blocks the calling thread until the thread whose join() method is\\n        called terminates -- either normally or through an unhandled exception\\n        or until the optional timeout occurs.\\n\\n        When the timeout argument is present and not None, it should be a\\n        floating point number specifying a timeout for the operation in seconds\\n        (or fractions thereof). As join() always returns None, you must call\\n        is_alive() after join() to decide whether a timeout happened -- if the\\n        thread is still alive, the join() call timed out.\\n\\n        When the timeout argument is not present or None, the operation will\\n        block until the thread terminates.\\n\\n        A thread can be join()ed many times.\\n\\n        join() raises a RuntimeError if an attempt is made to join the current\\n        thread as that would cause a deadlock. It is also an error to join() a\\n        thread before it has been started and attempts to do so raises the same\\n        exception.\\n\\n        \\\"\\\"\\\"\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if not self._started.is_set():\\n            raise RuntimeError(\\\"cannot join thread before it is started\\\")\\n        if self is current_thread():\\n            raise RuntimeError(\\\"cannot join current thread\\\")\\n\\n        if timeout is None:\\n            self._wait_for_tstate_lock()\\n        else:\\n            # the behavior of a negative timeout isn't documented, but\\n            # historically .join(timeout=x) for x<0 has acted as if timeout=0\\n            self._wait_for_tstate_lock(timeout=max(timeout, 0))\\n\\n    def _wait_for_tstate_lock(self, block=True, timeout=-1):\\n        # Issue #18808: wait for the thread state to be gone.\\n        # At the end of the thread's life, after all knowledge of the thread\\n        # is removed from C data structures, C code releases our _tstate_lock.\\n        # This method passes its arguments to _tstate_lock.acquire().\\n        # If the lock is acquired, the C code is done, and self._stop() is\\n        # called.  That sets ._is_stopped to True, and ._tstate_lock to None.\\n        lock = self._tstate_lock\\n        if lock is None:\\n            # already determined that the C code is done\\n            assert self._is_stopped\\n            return\\n\\n        try:\\n            if lock.acquire(block, timeout):\\n                lock.release()\\n                self._stop()\\n        except:\\n            if lock.locked():\\n                # bpo-45274: lock.acquire() acquired the lock, but the function\\n                # was interrupted with an exception before reaching the\\n                # lock.release(). It can happen if a signal handler raises an\\n                # exception, like CTRL+C which raises KeyboardInterrupt.\\n                lock.release()\\n                self._stop()\\n            raise\\n\\n    @property\\n    def name(self):\\n        \\\"\\\"\\\"A string used for identification purposes only.\\n\\n        It has no semantics. Multiple threads may be given the same name. The\\n        initial name is set by the constructor.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._name\\n\\n    @name.setter\\n    def name(self, name):\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        self._name = str(name)\\n\\n    @property\\n    def ident(self):\\n        \\\"\\\"\\\"Thread identifier of this thread or None if it has not been started.\\n\\n        This is a nonzero integer. See the get_ident() function. Thread\\n        identifiers may be recycled when a thread exits and another thread is\\n        created. The identifier is available even after the thread has exited.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._ident\\n\\n    if _HAVE_THREAD_NATIVE_ID:\\n        @property\\n        def native_id(self):\\n            \\\"\\\"\\\"Native integral thread ID of this thread, or None if it has not been started.\\n\\n            This is a non-negative integer. See the get_native_id() function.\\n            This represents the Thread ID as reported by the kernel.\\n\\n            \\\"\\\"\\\"\\n            assert self._initialized, \\\"Thread.__init__() not called\\\"\\n            return self._native_id\\n\\n    def is_alive(self):\\n        \\\"\\\"\\\"Return whether the thread is alive.\\n\\n        This method returns True just before the run() method starts until just\\n        after the run() method terminates. See also the module function\\n        enumerate().\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        if self._is_stopped or not self._started.is_set():\\n            return False\\n        self._wait_for_tstate_lock(False)\\n        return not self._is_stopped\\n\\n    @property\\n    def daemon(self):\\n        \\\"\\\"\\\"A boolean value indicating whether this thread is a daemon thread.\\n\\n        This must be set before start() is called, otherwise RuntimeError is\\n        raised. Its initial value is inherited from the creating thread; the\\n        main thread is not a daemon thread and therefore all threads created in\\n        the main thread default to daemon = False.\\n\\n        The entire Python program exits when only daemon threads are left.\\n\\n        \\\"\\\"\\\"\\n        assert self._initialized, \\\"Thread.__init__() not called\\\"\\n        return self._daemonic\\n\\n    @daemon.setter\\n    def daemon(self, daemonic):\\n        if not self._initialized:\\n            raise RuntimeError(\\\"Thread.__init__() not called\\\")\\n        if daemonic and not _daemon_threads_allowed():\\n            raise RuntimeError('daemon threads are disabled in this interpreter')\\n        if self._started.is_set():\\n            raise RuntimeError(\\\"cannot set daemon status of active thread\\\")\\n        self._daemonic = daemonic\\n\\n    def isDaemon(self):\\n        \\\"\\\"\\\"Return whether this thread is a daemon.\\n\\n        This method is deprecated, use the daemon attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('isDaemon() is deprecated, get the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.daemon\\n\\n    def setDaemon(self, daemonic):\\n        \\\"\\\"\\\"Set whether this thread is a daemon.\\n\\n        This method is deprecated, use the .daemon property instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setDaemon() is deprecated, set the daemon attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.daemon = daemonic\\n\\n    def getName(self):\\n        \\\"\\\"\\\"Return a string used for identification purposes only.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('getName() is deprecated, get the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        return self.name\\n\\n    def setName(self, name):\\n        \\\"\\\"\\\"Set the name string for this thread.\\n\\n        This method is deprecated, use the name attribute instead.\\n\\n        \\\"\\\"\\\"\\n        import warnings\\n        warnings.warn('setName() is deprecated, set the name attribute instead',\\n                      DeprecationWarning, stacklevel=2)\\n        self.name = name\\n\\n\\ntry:\\n    from _thread import (_excepthook as excepthook,\\n                         _ExceptHookArgs as ExceptHookArgs)\\nexcept ImportError:\\n    # Simple Python implementation if _thread._excepthook() is not available\\n    from traceback import print_exception as _print_exception\\n    from collections import namedtuple\\n\\n    _ExceptHookArgs = namedtuple(\\n        'ExceptHookArgs',\\n        'exc_type exc_value exc_traceback thread')\\n\\n    def ExceptHookArgs(args):\\n        return _ExceptHookArgs(*args)\\n\\n    def excepthook(args, /):\\n        \\\"\\\"\\\"\\n        Handle uncaught Thread.run() exception.\\n        \\\"\\\"\\\"\\n        if args.exc_type == SystemExit:\\n            # silently ignore SystemExit\\n            return\\n\\n        if _sys is not None and _sys.stderr is not None:\\n            stderr = _sys.stderr\\n        elif args.thread is not None:\\n            stderr = args.thread._stderr\\n            if stderr is None:\\n                # do nothing if sys.stderr is None and sys.stderr was None\\n                # when the thread was created\\n                return\\n        else:\\n            # do nothing if sys.stderr is None and args.thread is None\\n            return\\n\\n        if args.thread is not None:\\n            name = args.thread.name\\n        else:\\n            name = get_ident()\\n        print(f\\\"Exception in thread {name}:\\\",\\n              file=stderr, flush=True)\\n        _print_exception(args.exc_type, args.exc_value, args.exc_traceback,\\n                         file=stderr)\\n        stderr.flush()\\n\\n\\n# Original value of threading.excepthook\\n__excepthook__ = excepthook\\n\\n\\ndef _make_invoke_excepthook():\\n    # Create a local namespace to ensure that variables remain alive\\n    # when _invoke_excepthook() is called, even if it is called late during\\n    # Python shutdown. It is mostly needed for daemon threads.\\n\\n    old_excepthook = excepthook\\n    old_sys_excepthook = _sys.excepthook\\n    if old_excepthook is None:\\n        raise RuntimeError(\\\"threading.excepthook is None\\\")\\n    if old_sys_excepthook is None:\\n        raise RuntimeError(\\\"sys.excepthook is None\\\")\\n\\n    sys_exc_info = _sys.exc_info\\n    local_print = print\\n    local_sys = _sys\\n\\n    def invoke_excepthook(thread):\\n        global excepthook\\n        try:\\n            hook = excepthook\\n            if hook is None:\\n                hook = old_excepthook\\n\\n            args = ExceptHookArgs([*sys_exc_info(), thread])\\n\\n            hook(args)\\n        except Exception as exc:\\n            exc.__suppress_context__ = True\\n            del exc\\n\\n            if local_sys is not None and local_sys.stderr is not None:\\n                stderr = local_sys.stderr\\n            else:\\n                stderr = thread._stderr\\n\\n            local_print(\\\"Exception in threading.excepthook:\\\",\\n                        file=stderr, flush=True)\\n\\n            if local_sys is not None and local_sys.excepthook is not None:\\n                sys_excepthook = local_sys.excepthook\\n            else:\\n                sys_excepthook = old_sys_excepthook\\n\\n            sys_excepthook(*sys_exc_info())\\n        finally:\\n            # Break reference cycle (exception stored in a variable)\\n            args = None\\n\\n    return invoke_excepthook\\n\\n\\n# The timer class was contributed by Itamar Shtull-Trauring\\n\\nclass Timer(Thread):\\n    \\\"\\\"\\\"Call a function after a specified number of seconds:\\n\\n            t = Timer(30.0, f, args=None, kwargs=None)\\n            t.start()\\n            t.cancel()     # stop the timer's action if it's still waiting\\n\\n    \\\"\\\"\\\"\\n\\n    def __init__(self, interval, function, args=None, kwargs=None):\\n        Thread.__init__(self)\\n        self.interval = interval\\n        self.function = function\\n        self.args = args if args is not None else []\\n        self.kwargs = kwargs if kwargs is not None else {}\\n        self.finished = Event()\\n\\n    def cancel(self):\\n        \\\"\\\"\\\"Stop the timer if it hasn't finished yet.\\\"\\\"\\\"\\n        self.finished.set()\\n\\n    def run(self):\\n        self.finished.wait(self.interval)\\n        if not self.finished.is_set():\\n            self.function(*self.args, **self.kwargs)\\n        self.finished.set()\\n\\n\\n# Special thread class to represent the main thread\\n\\nclass _MainThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=\\\"MainThread\\\", daemon=False)\\n        self._set_tstate_lock()\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n\\n# Dummy thread class to represent threads not started here.\\n# These aren't garbage collected when they die, nor can they be waited for.\\n# If they invoke anything in threading.py that calls current_thread(), they\\n# leave an entry in the _active dict forever after.\\n# Their purpose is to return *something* from current_thread().\\n# They are marked as daemon threads so we won't wait for them\\n# when we exit (conform previous semantics).\\n\\nclass _DummyThread(Thread):\\n\\n    def __init__(self):\\n        Thread.__init__(self, name=_newname(\\\"Dummy-%d\\\"),\\n                        daemon=_daemon_threads_allowed())\\n        self._started.set()\\n        self._set_ident()\\n        if _HAVE_THREAD_NATIVE_ID:\\n            self._set_native_id()\\n        with _active_limbo_lock:\\n            _active[self._ident] = self\\n\\n    def _stop(self):\\n        pass\\n\\n    def is_alive(self):\\n        assert not self._is_stopped and self._started.is_set()\\n        return True\\n\\n    def join(self, timeout=None):\\n        assert False, \\\"cannot join a dummy thread\\\"\\n\\n\\n# Global API functions\\n\\ndef current_thread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    If the caller's thread of control was not created through the threading\\n    module, a dummy thread object with limited functionality is returned.\\n\\n    \\\"\\\"\\\"\\n    try:\\n        return _active[get_ident()]\\n    except KeyError:\\n        return _DummyThread()\\n\\ndef currentThread():\\n    \\\"\\\"\\\"Return the current Thread object, corresponding to the caller's thread of control.\\n\\n    This function is deprecated, use current_thread() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('currentThread() is deprecated, use current_thread() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return current_thread()\\n\\ndef active_count():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    The returned count is equal to the length of the list returned by\\n    enumerate().\\n\\n    \\\"\\\"\\\"\\n    # NOTE: if the logic in here ever changes, update Modules/posixmodule.c\\n    # warn_about_fork_with_threads() to match.\\n    with _active_limbo_lock:\\n        return len(_active) + len(_limbo)\\n\\ndef activeCount():\\n    \\\"\\\"\\\"Return the number of Thread objects currently alive.\\n\\n    This function is deprecated, use active_count() instead.\\n\\n    \\\"\\\"\\\"\\n    import warnings\\n    warnings.warn('activeCount() is deprecated, use active_count() instead',\\n                  DeprecationWarning, stacklevel=2)\\n    return active_count()\\n\\ndef _enumerate():\\n    # Same as enumerate(), but without the lock. Internal use only.\\n    return list(_active.values()) + list(_limbo.values())\\n\\ndef enumerate():\\n    \\\"\\\"\\\"Return a list of all Thread objects currently alive.\\n\\n    The list includes daemonic threads, dummy thread objects created by\\n    current_thread(), and the main thread. It excludes terminated threads and\\n    threads that have not yet been started.\\n\\n    \\\"\\\"\\\"\\n    with _active_limbo_lock:\\n        return list(_active.values()) + list(_limbo.values())\\n\\n\\n_threading_atexits = []\\n_SHUTTING_DOWN = False\\n\\ndef _register_atexit(func, *arg, **kwargs):\\n    \\\"\\\"\\\"CPython internal: register *func* to be called before joining threads.\\n\\n    The registered *func* is called with its arguments just before all\\n    non-daemon threads are joined in `_shutdown()`. It provides a similar\\n    purpose to `atexit.register()`, but its functions are called prior to\\n    threading shutdown instead of interpreter shutdown.\\n\\n    For similarity to atexit, the registered functions are called in reverse.\\n    \\\"\\\"\\\"\\n    if _SHUTTING_DOWN:\\n        raise RuntimeError(\\\"can't register atexit after shutdown\\\")\\n\\n    call = functools.partial(func, *arg, **kwargs)\\n    _threading_atexits.append(call)\\n\\n\\nfrom _thread import stack_size\\n\\n# Create the main thread object,\\n# and make it available for the interpreter\\n# (Py_Main) as threading._shutdown.\\n\\n_main_thread = _MainThread()\\n\\ndef _shutdown():\\n    \\\"\\\"\\\"\\n    Wait until the Python thread state of all non-daemon threads get deleted.\\n    \\\"\\\"\\\"\\n    # Obscure:  other threads may be waiting to join _main_thread.  That's\\n    # dubious, but some code does it.  We can't wait for C code to release\\n    # the main thread's tstate_lock - that won't happen until the interpreter\\n    # is nearly dead.  So we release it here.  Note that just calling _stop()\\n    # isn't enough:  other threads may already be waiting on _tstate_lock.\\n    if _main_thread._is_stopped and _is_main_interpreter():\\n        # _shutdown() was already called\\n        return\\n\\n    global _SHUTTING_DOWN\\n    _SHUTTING_DOWN = True\\n\\n    # Call registered threading atexit functions before threads are joined.\\n    # Order is reversed, similar to atexit.\\n    for atexit_call in reversed(_threading_atexits):\\n        atexit_call()\\n\\n    # Main thread\\n    if _main_thread.ident == get_ident():\\n        tlock = _main_thread._tstate_lock\\n        # The main thread isn't finished yet, so its thread state lock can't\\n        # have been released.\\n        assert tlock is not None\\n        assert tlock.locked()\\n        tlock.release()\\n        _main_thread._stop()\\n    else:\\n        # bpo-1596321: _shutdown() must be called in the main thread.\\n        # If the threading module was not imported by the main thread,\\n        # _main_thread is the thread which imported the threading module.\\n        # In this case, ignore _main_thread, similar behavior than for threads\\n        # spawned by C libraries or using _thread.start_new_thread().\\n        pass\\n\\n    # Join all non-deamon threads\\n    while True:\\n        with _shutdown_locks_lock:\\n            locks = list(_shutdown_locks)\\n            _shutdown_locks.clear()\\n\\n        if not locks:\\n            break\\n\\n        for lock in locks:\\n            # mimic Thread.join()\\n            lock.acquire()\\n            lock.release()\\n\\n        # new threads can be spawned while we were waiting for the other\\n        # threads to complete\\n\\n\\ndef main_thread():\\n    \\\"\\\"\\\"Return the main thread object.\\n\\n    In normal conditions, the main thread is the thread from which the\\n    Python interpreter was started.\\n    \\\"\\\"\\\"\\n    # XXX Figure this out for subinterpreters.  (See gh-75698.)\\n    return _main_thread\\n\\n# get thread-local implementation, either from the thread\\n# module, or from the python fallback\\n\\ntry:\\n    from _thread import _local as local\\nexcept ImportError:\\n    from _threading_local import local\\n\\n\\ndef _after_fork():\\n    \\\"\\\"\\\"\\n    Cleanup threading module state that should not exist after a fork.\\n    \\\"\\\"\\\"\\n    # Reset _active_limbo_lock, in case we forked while the lock was held\\n    # by another (non-forked) thread.  http://bugs.python.org/issue874900\\n    global _active_limbo_lock, _main_thread\\n    global _shutdown_locks_lock, _shutdown_locks\\n    _active_limbo_lock = RLock()\\n\\n    # fork() only copied the current thread; clear references to others.\\n    new_active = {}\\n\\n    try:\\n        current = _active[get_ident()]\\n    except KeyError:\\n        # fork() was called in a thread which was not spawned\\n        # by threading.Thread. For example, a thread spawned\\n        # by thread.start_new_thread().\\n        current = _MainThread()\\n\\n    _main_thread = current\\n\\n    # reset _shutdown() locks: threads re-register their _tstate_lock below\\n    _shutdown_locks_lock = _allocate_lock()\\n    _shutdown_locks = set()\\n\\n    with _active_limbo_lock:\\n        # Dangling thread instances must still have their locks reset,\\n        # because someone may join() them.\\n        threads = set(_enumerate())\\n        threads.update(_dangling)\\n        for thread in threads:\\n            # Any lock/condition variable may be currently locked or in an\\n            # invalid state, so we reinitialize them.\\n            if thread is current:\\n                # There is only one active thread. We reset the ident to\\n                # its new value since it can have changed.\\n                thread._reset_internal_locks(True)\\n                ident = get_ident()\\n                if isinstance(thread, _DummyThread):\\n                    thread.__class__ = _MainThread\\n                    thread._name = 'MainThread'\\n                    thread._daemonic = False\\n                    thread._set_tstate_lock()\\n                thread._ident = ident\\n                new_active[ident] = thread\\n            else:\\n                # All the others are already stopped.\\n                thread._reset_internal_locks(False)\\n                thread._stop()\\n\\n        _limbo.clear()\\n        _active.clear()\\n        _active.update(new_active)\\n        assert len(_active) == 1\\n\\n\\nif hasattr(_os, \\\"register_at_fork\\\"):\\n    _os.register_at_fork(after_in_child=_after_fork)\\n\", 1706], \"/usr/lib/python3.12/_weakrefset.py\": [\"# Access WeakSet through the weakref module.\\n# This code is separated-out because it is needed\\n# by abc.py to load everything else at startup.\\n\\nfrom _weakref import ref\\nfrom types import GenericAlias\\n\\n__all__ = ['WeakSet']\\n\\n\\nclass _IterationGuard:\\n    # This context manager registers itself in the current iterators of the\\n    # weak container, such as to delay all removals until the context manager\\n    # exits.\\n    # This technique should be relatively thread-safe (since sets are).\\n\\n    def __init__(self, weakcontainer):\\n        # Don't create cycles\\n        self.weakcontainer = ref(weakcontainer)\\n\\n    def __enter__(self):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            w._iterating.add(self)\\n        return self\\n\\n    def __exit__(self, e, t, b):\\n        w = self.weakcontainer()\\n        if w is not None:\\n            s = w._iterating\\n            s.remove(self)\\n            if not s:\\n                w._commit_removals()\\n\\n\\nclass WeakSet:\\n    def __init__(self, data=None):\\n        self.data = set()\\n        def _remove(item, selfref=ref(self)):\\n            self = selfref()\\n            if self is not None:\\n                if self._iterating:\\n                    self._pending_removals.append(item)\\n                else:\\n                    self.data.discard(item)\\n        self._remove = _remove\\n        # A list of keys to be removed\\n        self._pending_removals = []\\n        self._iterating = set()\\n        if data is not None:\\n            self.update(data)\\n\\n    def _commit_removals(self):\\n        pop = self._pending_removals.pop\\n        discard = self.data.discard\\n        while True:\\n            try:\\n                item = pop()\\n            except IndexError:\\n                return\\n            discard(item)\\n\\n    def __iter__(self):\\n        with _IterationGuard(self):\\n            for itemref in self.data:\\n                item = itemref()\\n                if item is not None:\\n                    # Caveat: the iterator will keep a strong reference to\\n                    # `item` until it is resumed or closed.\\n                    yield item\\n\\n    def __len__(self):\\n        return len(self.data) - len(self._pending_removals)\\n\\n    def __contains__(self, item):\\n        try:\\n            wr = ref(item)\\n        except TypeError:\\n            return False\\n        return wr in self.data\\n\\n    def __reduce__(self):\\n        return self.__class__, (list(self),), self.__getstate__()\\n\\n    def add(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.add(ref(item, self._remove))\\n\\n    def clear(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.clear()\\n\\n    def copy(self):\\n        return self.__class__(self)\\n\\n    def pop(self):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        while True:\\n            try:\\n                itemref = self.data.pop()\\n            except KeyError:\\n                raise KeyError('pop from empty WeakSet') from None\\n            item = itemref()\\n            if item is not None:\\n                return item\\n\\n    def remove(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.remove(ref(item))\\n\\n    def discard(self, item):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.discard(ref(item))\\n\\n    def update(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        for element in other:\\n            self.add(element)\\n\\n    def __ior__(self, other):\\n        self.update(other)\\n        return self\\n\\n    def difference(self, other):\\n        newset = self.copy()\\n        newset.difference_update(other)\\n        return newset\\n    __sub__ = difference\\n\\n    def difference_update(self, other):\\n        self.__isub__(other)\\n    def __isub__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.difference_update(ref(item) for item in other)\\n        return self\\n\\n    def intersection(self, other):\\n        return self.__class__(item for item in other if item in self)\\n    __and__ = intersection\\n\\n    def intersection_update(self, other):\\n        self.__iand__(other)\\n    def __iand__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        self.data.intersection_update(ref(item) for item in other)\\n        return self\\n\\n    def issubset(self, other):\\n        return self.data.issubset(ref(item) for item in other)\\n    __le__ = issubset\\n\\n    def __lt__(self, other):\\n        return self.data < set(map(ref, other))\\n\\n    def issuperset(self, other):\\n        return self.data.issuperset(ref(item) for item in other)\\n    __ge__ = issuperset\\n\\n    def __gt__(self, other):\\n        return self.data > set(map(ref, other))\\n\\n    def __eq__(self, other):\\n        if not isinstance(other, self.__class__):\\n            return NotImplemented\\n        return self.data == set(map(ref, other))\\n\\n    def symmetric_difference(self, other):\\n        newset = self.copy()\\n        newset.symmetric_difference_update(other)\\n        return newset\\n    __xor__ = symmetric_difference\\n\\n    def symmetric_difference_update(self, other):\\n        self.__ixor__(other)\\n    def __ixor__(self, other):\\n        if self._pending_removals:\\n            self._commit_removals()\\n        if self is other:\\n            self.data.clear()\\n        else:\\n            self.data.symmetric_difference_update(ref(item, self._remove) for item in other)\\n        return self\\n\\n    def union(self, other):\\n        return self.__class__(e for s in (self, other) for e in s)\\n    __or__ = union\\n\\n    def isdisjoint(self, other):\\n        return len(self.intersection(other)) == 0\\n\\n    def __repr__(self):\\n        return repr(self.data)\\n\\n    __class_getitem__ = classmethod(GenericAlias)\\n\", 205], \"/home/gaogaotiantian/programs/viztracer/example/src/multithread.py\": [\"import os\\nimport threading\\nimport time\\n\\nfrom viztracer import VizTracer\\n\\n\\ndef fib(n):\\n    if n < 2:\\n        return 1\\n    time.sleep(0.0000001)\\n    return fib(n - 1) + fib(n - 2)\\n\\n\\nclass MyThread(threading.Thread):\\n    def run(self):\\n        fib(7)\\n\\n\\nwith VizTracer(\\n    output_file=os.path.join(os.path.dirname(__file__), \\\"../\\\", \\\"json/multithread.json\\\"),\\n    file_info=True,\\n) as _:\\n    thread1 = MyThread()\\n    thread2 = MyThread()\\n    thread3 = MyThread()\\n    thread4 = MyThread()\\n\\n    thread1.start()\\n    thread2.start()\\n    thread3.start()\\n    thread4.start()\\n\\n    threads = [thread1, thread2, thread3, thread4]\\n\\n    for thread in threads:\\n        thread.join()\\n\", 37]}, \"functions\": {\"_newname (/usr/lib/python3.12/threading.py:837)\": [\"/usr/lib/python3.12/threading.py\", 837], \"current_thread (/usr/lib/python3.12/threading.py:1483)\": [\"/usr/lib/python3.12/threading.py\", 1483], \"Thread.daemon (/usr/lib/python3.12/threading.py:1234)\": [\"/usr/lib/python3.12/threading.py\", 1234], \"Condition.__init__ (/usr/lib/python3.12/threading.py:277)\": [\"/usr/lib/python3.12/threading.py\", 277], \"Event.__init__ (/usr/lib/python3.12/threading.py:588)\": [\"/usr/lib/python3.12/threading.py\", 588], \"_make_invoke_excepthook (/usr/lib/python3.12/threading.py:1354)\": [\"/usr/lib/python3.12/threading.py\", 1354], \"WeakSet.add (/usr/lib/python3.12/_weakrefset.py:85)\": [\"/usr/lib/python3.12/_weakrefset.py\", 85], \"Thread.__init__ (/usr/lib/python3.12/threading.py:882)\": [\"/usr/lib/python3.12/threading.py\", 882], \"Event.is_set (/usr/lib/python3.12/threading.py:601)\": [\"/usr/lib/python3.12/threading.py\", 601], \"Condition.__enter__ (/usr/lib/python3.12/threading.py:299)\": [\"/usr/lib/python3.12/threading.py\", 299], \"Condition._is_owned (/usr/lib/python3.12/threading.py:314)\": [\"/usr/lib/python3.12/threading.py\", 314], \"Condition._release_save (/usr/lib/python3.12/threading.py:308)\": [\"/usr/lib/python3.12/threading.py\", 308], \"Thread._set_ident (/usr/lib/python3.12/threading.py:1036)\": [\"/usr/lib/python3.12/threading.py\", 1036], \"_maintain_shutdown_locks (/usr/lib/python3.12/threading.py:855)\": [\"/usr/lib/python3.12/threading.py\", 855], \"Thread._set_tstate_lock (/usr/lib/python3.12/threading.py:1043)\": [\"/usr/lib/python3.12/threading.py\", 1043], \"Thread._set_native_id (/usr/lib/python3.12/threading.py:1040)\": [\"/usr/lib/python3.12/threading.py\", 1040], \"Condition.notify (/usr/lib/python3.12/threading.py:394)\": [\"/usr/lib/python3.12/threading.py\", 394], \"Condition.notify_all (/usr/lib/python3.12/threading.py:424)\": [\"/usr/lib/python3.12/threading.py\", 424], \"Condition.__exit__ (/usr/lib/python3.12/threading.py:302)\": [\"/usr/lib/python3.12/threading.py\", 302], \"Event.set (/usr/lib/python3.12/threading.py:616)\": [\"/usr/lib/python3.12/threading.py\", 616], \"WeakSet.__init__.<locals>._remove (/usr/lib/python3.12/_weakrefset.py:39)\": [\"/usr/lib/python3.12/_weakrefset.py\", 39], \"Condition._acquire_restore (/usr/lib/python3.12/threading.py:311)\": [\"/usr/lib/python3.12/threading.py\", 311], \"Condition.wait (/usr/lib/python3.12/threading.py:323)\": [\"/usr/lib/python3.12/threading.py\", 323], \"Event.wait (/usr/lib/python3.12/threading.py:637)\": [\"/usr/lib/python3.12/threading.py\", 637], \"Thread.start (/usr/lib/python3.12/threading.py:973)\": [\"/usr/lib/python3.12/threading.py\", 973], \"fib (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:8)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/multithread.py\", 8], \"MyThread.run (/home/gaogaotiantian/programs/viztracer/example/src/multithread.py:16)\": [\"/home/gaogaotiantian/programs/viztracer/example/src/multithread.py\", 16], \"Thread._delete (/usr/lib/python3.12/threading.py:1106)\": [\"/usr/lib/python3.12/threading.py\", 1106], \"Thread._bootstrap_inner (/usr/lib/python3.12/threading.py:1056)\": [\"/usr/lib/python3.12/threading.py\", 1056], \"Thread._bootstrap (/usr/lib/python3.12/threading.py:1016)\": [\"/usr/lib/python3.12/threading.py\", 1016], \"Thread._stop (/usr/lib/python3.12/threading.py:1079)\": [\"/usr/lib/python3.12/threading.py\", 1079], \"Thread._wait_for_tstate_lock (/usr/lib/python3.12/threading.py:1153)\": [\"/usr/lib/python3.12/threading.py\", 1153], \"Thread.join (/usr/lib/python3.12/threading.py:1115)\": [\"/usr/lib/python3.12/threading.py\", 1115]}}}"
  },
  {
    "path": "example/requirements.txt",
    "content": "numpy\nmcts"
  },
  {
    "path": "example/src/async_simple.py",
    "content": "import asyncio\n\n\nasync def io_task():\n    await asyncio.sleep(0.01)\n\n\nasync def main():\n    t1 = asyncio.create_task(io_task())\n    t2 = asyncio.create_task(io_task())\n    t3 = asyncio.create_task(io_task())\n\n    await t1\n    await t2\n    await t3\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n"
  },
  {
    "path": "example/src/different_sorts.py",
    "content": "# https://github.com/TheAlgorithms/Python\n\n\nimport os\nimport random\n\nfrom viztracer import VizTracer\n\n\ndef merge_sort(collection):\n    \"\"\"Pure implementation of the merge sort algorithm in Python\n\n    :param collection: some mutable ordered collection with heterogeneous\n    comparable items inside\n    :return: the same collection ordered by ascending\n\n    Examples:\n    >>> merge_sort([0, 5, 3, 2, 2])\n    [0, 2, 2, 3, 5]\n\n    >>> merge_sort([])\n    []\n\n    >>> merge_sort([-2, -5, -45])\n    [-45, -5, -2]\n    \"\"\"\n\n    def merge(left, right):\n        \"\"\"merge left and right\n        :param left: left collection\n        :param right: right collection\n        :return: merge result\n        \"\"\"\n        result = []\n        while left and right:\n            result.append((left if left[0] <= right[0] else right).pop(0))\n        return result + left + right\n\n    if len(collection) <= 1:\n        return collection\n    mid = len(collection) // 2\n    return merge(merge_sort(collection[:mid]), merge_sort(collection[mid:]))\n\n\ndef quick_sort(collection):\n    \"\"\"Pure implementation of quick sort algorithm in Python\n\n    :param collection: some mutable ordered collection with heterogeneous\n    comparable items inside\n    :return: the same collection ordered by ascending\n\n    Examples:\n    >>> quick_sort([0, 5, 3, 2, 2])\n    [0, 2, 2, 3, 5]\n\n    >>> quick_sort([])\n    []\n\n    >>> quick_sort([-2, -5, -45])\n    [-45, -5, -2]\n    \"\"\"\n    length = len(collection)\n    if length <= 1:\n        return collection\n    else:\n        # Use the last element as the first pivot\n        pivot = collection.pop()\n        # Put elements greater than pivot in greater list\n        # Put elements lesser than pivot in lesser list\n        greater, lesser = [], []\n        for element in collection:\n            if element > pivot:\n                greater.append(element)\n            else:\n                lesser.append(element)\n        return quick_sort(lesser) + [pivot] + quick_sort(greater)\n\n\ndef heapify(unsorted, index, heap_size):\n    largest = index\n    left_index = 2 * index + 1\n    right_index = 2 * index + 2\n    if left_index < heap_size and unsorted[left_index] > unsorted[largest]:\n        largest = left_index\n\n    if right_index < heap_size and unsorted[right_index] > unsorted[largest]:\n        largest = right_index\n\n    if largest != index:\n        unsorted[largest], unsorted[index] = unsorted[index], unsorted[largest]\n        heapify(unsorted, largest, heap_size)\n\n\ndef heap_sort(unsorted):\n    \"\"\"\n    Pure implementation of the heap sort algorithm in Python\n    :param collection: some mutable ordered collection with heterogeneous\n    comparable items inside\n    :return: the same collection ordered by ascending\n\n    Examples:\n    >>> heap_sort([0, 5, 3, 2, 2])\n    [0, 2, 2, 3, 5]\n\n    >>> heap_sort([])\n    []\n\n    >>> heap_sort([-2, -5, -45])\n    [-45, -5, -2]\n    \"\"\"\n    n = len(unsorted)\n    for i in range(n // 2 - 1, -1, -1):\n        heapify(unsorted, i, n)\n    for i in range(n - 1, 0, -1):\n        unsorted[0], unsorted[i] = unsorted[i], unsorted[0]\n        heapify(unsorted, 0, i)\n    return unsorted\n\n\narr1 = [random.randrange(100000) for _ in range(500)]\narr2 = [random.randrange(100000) for _ in range(500)]\narr3 = [random.randrange(100000) for _ in range(500)]\n\n\nwith VizTracer(\n    output_file=os.path.join(\n        os.path.dirname(__file__), \"../\", \"json/different_sorts.json\"\n    ),\n    file_info=True,\n) as _:\n    merge_sort(arr1)\n    quick_sort(arr2)\n    heap_sort(arr3)\n"
  },
  {
    "path": "example/src/function_args_return.py",
    "content": "import os\n\nfrom viztracer import VizTracer\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n\n\nwith VizTracer(\n    log_func_args=True,\n    log_func_retval=True,\n    file_info=True,\n    output_file=os.path.join(\n        os.path.dirname(__file__), \"../\", \"json/function_args_return.json\"\n    ),\n):\n    fib(6)\n"
  },
  {
    "path": "example/src/gradient_descent.py",
    "content": "# https://github.com/TheAlgorithms/Python\n\nimport math\nimport os\n\nimport numpy\n\nfrom viztracer import VizTracer\nfrom viztracer.vizcounter import VizCounter\n\n# List of input, output pairs\ntrain_data = (\n    ((5, 2, 3), 15),\n    ((6, 5, 9), 25),\n    ((11, 12, 13), 41),\n    ((1, 1, 1), 8),\n    ((11, 12, 13), 41),\n)\ntest_data = (((515, 22, 13), 555), ((61, 35, 49), 150))\nparameter_vector = [2, 4, 1, 5]\nm = len(train_data)\nLEARNING_RATE = 0.009\n\n\ndef _error(example_no, data_set=\"train\"):\n    \"\"\"\n    :param data_set: train data or test data\n    :param example_no: example number whose error has to be checked\n    :return: error in example pointed by example number.\n    \"\"\"\n    return calculate_hypothesis_value(example_no, data_set) - output(\n        example_no, data_set\n    )\n\n\ndef _hypothesis_value(data_input_tuple):\n    \"\"\"\n    Calculates hypothesis function value for a given input\n    :param data_input_tuple: Input tuple of a particular example\n    :return: Value of hypothesis function at that point.\n    Note that there is an 'biased input' whose value is fixed as 1.\n    It is not explicitly mentioned in input data.. But, ML hypothesis functions use it.\n    So, we have to take care of it separately. Line 36 takes care of it.\n    \"\"\"\n    hyp_val = 0\n    for i in range(len(parameter_vector) - 1):\n        hyp_val += data_input_tuple[i] * parameter_vector[i + 1]\n    hyp_val += parameter_vector[0]\n    return hyp_val\n\n\ndef output(example_no, data_set):\n    \"\"\"\n    :param data_set: test data or train data\n    :param example_no: example whose output is to be fetched\n    :return: output for that example\n    \"\"\"\n    if data_set == \"train\":\n        return train_data[example_no][1]\n    elif data_set == \"test\":\n        return test_data[example_no][1]\n\n\ndef calculate_hypothesis_value(example_no, data_set):\n    \"\"\"\n    Calculates hypothesis value for a given example\n    :param data_set: test data or train_data\n    :param example_no: example whose hypothesis value is to be calculated\n    :return: hypothesis value for that example\n    \"\"\"\n    if data_set == \"train\":\n        return _hypothesis_value(train_data[example_no][0])\n    elif data_set == \"test\":\n        return _hypothesis_value(test_data[example_no][0])\n\n\ndef summation_of_cost_derivative(index, end=m):\n    \"\"\"\n    Calculates the sum of cost function derivative\n    :param index: index wrt derivative is being calculated\n    :param end: value where summation ends, default is m, number of examples\n    :return: Returns the summation of cost derivative\n    Note: If index is -1, this means we are calculating summation wrt to biased\n        parameter.\n    \"\"\"\n    summation_value = 0\n    for i in range(end):\n        if index == -1:\n            summation_value += _error(i)\n        else:\n            summation_value += _error(i) * train_data[i][0][index]\n    return summation_value\n\n\ndef get_cost_derivative(index):\n    \"\"\"\n    :param index: index of the parameter vector wrt to derivative is to be calculated\n    :return: derivative wrt to that index\n    Note: If index is -1, this means we are calculating summation wrt to biased\n        parameter.\n    \"\"\"\n    cost_derivative_value = summation_of_cost_derivative(index, m) / m\n    return cost_derivative_value\n\n\ndef run_gradient_descent():\n    global parameter_vector\n    # Tune these values to set a tolerance value for predicted output\n    absolute_error_limit = 0.004\n    relative_error_limit = 0\n    j = 0\n    while True:\n        j += 1\n        temp_parameter_vector = [0, 0, 0, 0]\n        err = 0\n        for i in range(0, len(parameter_vector)):\n            cost_derivative = get_cost_derivative(i - 1)\n            err += abs(cost_derivative)\n            temp_parameter_vector[i] = (\n                parameter_vector[i] - LEARNING_RATE * cost_derivative\n            )\n        counter.cost = math.log(1 + err)\n        if numpy.allclose(\n            parameter_vector,\n            temp_parameter_vector,\n            atol=absolute_error_limit,\n            rtol=relative_error_limit,\n        ):\n            break\n        parameter_vector = temp_parameter_vector\n    print((\"Number of iterations:\", j))\n\n\ndef test_gradient_descent():\n    for i in range(len(test_data)):\n        print((\"Actual output value:\", output(i, \"test\")))\n        print((\"Hypothesis output:\", calculate_hypothesis_value(i, \"test\")))\n\n\nif __name__ == \"__main__\":\n    with VizTracer(\n        log_print=True,\n        output_file=os.path.join(\n            os.path.dirname(__file__), \"../\", \"json/gradient_descent.json\"\n        ),\n        file_info=True,\n    ) as tracer:\n        counter = VizCounter(tracer, \"log(1 + cost)\")\n        run_gradient_descent()\n        test_gradient_descent()\n"
  },
  {
    "path": "example/src/logging_integration.py",
    "content": "import logging\n\nfrom viztracer import get_tracer\nfrom viztracer.vizlogging import VizLoggingHandler\n\n\ndef fib(n):\n    if n < 2:\n        logging.warning(\"Base case, return 1\")\n        return 1\n    logging.info(f\"Recursive, working on {n}\")\n    return fib(n - 1) + fib(n - 2)\n\n\nhandler = VizLoggingHandler()\nhandler.setTracer(get_tracer())\nlogging.basicConfig(handlers=[handler], level=logging.INFO)\n\nfib(7)\n"
  },
  {
    "path": "example/src/mcts_game.py",
    "content": "from __future__ import division\n\nimport operator\nfrom copy import deepcopy\nfrom functools import reduce\n\nfrom mcts import mcts\n\n\nclass NaughtsAndCrossesState:\n    def __init__(self):\n        self.board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]\n        self.currentPlayer = 1\n\n    def getCurrentPlayer(self):\n        return self.currentPlayer\n\n    def getPossibleActions(self):\n        possibleActions = []\n        for i in range(len(self.board)):\n            for j in range(len(self.board[i])):\n                if self.board[i][j] == 0:\n                    possibleActions.append(Action(player=self.currentPlayer, x=i, y=j))\n        return possibleActions\n\n    def takeAction(self, action):\n        newState = deepcopy(self)\n        newState.board[action.x][action.y] = action.player\n        newState.currentPlayer = self.currentPlayer * -1\n        return newState\n\n    def isTerminal(self):\n        for row in self.board:\n            if abs(sum(row)) == 3:\n                return True\n        for column in list(map(list, zip(*self.board))):\n            if abs(sum(column)) == 3:\n                return True\n        for diagonal in [\n            [self.board[i][i] for i in range(len(self.board))],\n            [self.board[i][len(self.board) - i - 1] for i in range(len(self.board))],\n        ]:\n            if abs(sum(diagonal)) == 3:\n                return True\n        return reduce(operator.mul, sum(self.board, []), 1)\n\n    def getReward(self):\n        for row in self.board:\n            if abs(sum(row)) == 3:\n                return sum(row) / 3\n        for column in list(map(list, zip(*self.board))):\n            if abs(sum(column)) == 3:\n                return sum(column) / 3\n        for diagonal in [\n            [self.board[i][i] for i in range(len(self.board))],\n            [self.board[i][len(self.board) - i - 1] for i in range(len(self.board))],\n        ]:\n            if abs(sum(diagonal)) == 3:\n                return sum(diagonal) / 3\n        return False\n\n\nclass Action:\n    def __init__(self, player, x, y):\n        self.player = player\n        self.x = x\n        self.y = y\n\n    def __str__(self):\n        return str((self.x, self.y))\n\n    def __repr__(self):\n        return str(self)\n\n    def __eq__(self, other):\n        return (\n            self.__class__ == other.__class__\n            and self.x == other.x\n            and self.y == other.y\n            and self.player == other.player\n        )\n\n    def __hash__(self):\n        return hash((self.x, self.y, self.player))\n\n\ninitialState = NaughtsAndCrossesState()\nmcts = mcts(timeLimit=10)\naction = mcts.search(initialState=initialState)\n"
  },
  {
    "path": "example/src/multi_process_pool.py",
    "content": "import os\nfrom multiprocessing import Pool\n\n\ndef f(x):\n    return x**x\n\n\nif __name__ == \"__main__\":\n    process_num = 5\n    with Pool(processes=process_num) as pool:\n        print(pool.map(f, range(10)))\n\n        for i in pool.imap_unordered(f, range(10)):\n            print(i)\n\n        res = pool.apply_async(f, (20,))  # runs in *only* one process\n        print(res.get(timeout=1))  # prints \"400\"\n\n        res = pool.apply_async(os.getpid, ())  # runs in *only* one process\n        print(res.get(timeout=1))  # prints the PID of that process\n\n        multiple_results = [pool.apply_async(os.getpid, ()) for i in range(process_num)]\n        print([res.get(timeout=1) for res in multiple_results])\n"
  },
  {
    "path": "example/src/multithread.py",
    "content": "import os\nimport threading\nimport time\n\nfrom viztracer import VizTracer\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    time.sleep(0.0000001)\n    return fib(n - 1) + fib(n - 2)\n\n\nclass MyThread(threading.Thread):\n    def run(self):\n        fib(7)\n\n\nwith VizTracer(\n    output_file=os.path.join(os.path.dirname(__file__), \"../\", \"json/multithread.json\"),\n    file_info=True,\n) as _:\n    thread1 = MyThread()\n    thread2 = MyThread()\n    thread3 = MyThread()\n    thread4 = MyThread()\n\n    thread1.start()\n    thread2.start()\n    thread3.start()\n    thread4.start()\n\n    threads = [thread1, thread2, thread3, thread4]\n\n    for thread in threads:\n        thread.join()\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"viztracer\"\nauthors = [{name = \"Tian Gao\", email = \"gaogaotiantian@hotmail.com\"}]\ndescription = \"A debugging and profiling tool that can trace and visualize python code execution\"\ndependencies = [\"objprint>=0.3.0\"]\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\nlicense = \"Apache-2.0\"\ndynamic = [\"version\"]\nclassifiers = [\n    \"Development Status :: 5 - Production/Stable\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Programming Language :: Python :: Free Threading\",\n    \"Programming Language :: Python :: Free Threading :: 3 - Stable\",\n    \"Intended Audience :: Developers\",\n    \"Operating System :: MacOS\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Operating System :: Microsoft :: Windows\",\n    \"Topic :: Software Development :: Quality Assurance\",\n    \"Topic :: Software Development :: Bug Tracking\",\n    \"Topic :: System :: Logging\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/gaogaotiantian/viztracer\"\nDocumentation = \"https://viztracer.readthedocs.io\"\n\n[project.optional-dependencies]\nfull = [\"orjson\"]\n\n[project.scripts]\nviztracer = \"viztracer.main:main\"\nvizviewer = \"viztracer.viewer:viewer_main\"\n\n[tool.setuptools.dynamic]\nversion = {attr = \"viztracer.__version__\"}\n\n[tool.ruff]\nexclude = [\n    \"src/viztracer/attach_process\"\n]\n\n[tool.ruff.lint]\nselect = [\"I\"]\n\n[tool.ruff.format]\nquote-style = \"double\"\n\n[tool.pytest]\njunit_suite_name = \"viztracer\"\n"
  },
  {
    "path": "requirements-dev.txt",
    "content": "# Build Packages\nbuild\nsetuptools\nwheel\n\n# Lint & Coverage\nruff\nmypy\ncoverage\n\n# Test\npytest\ncoredumpy\n\n# Devtools\npystack; sys_platform == 'linux' and python_version < '3.13'\npsutil\n\n# 3rd party packages for test\nipywidgets>8.0.5\nloky>3.5.0\njaxlib; sys_platform != 'win32' and python_version < '3.11'\n"
  },
  {
    "path": "setup.py",
    "content": "import platform\nimport sys\n\nimport setuptools\n\n# Determine which attach binary to take into package\npackage_data = {\n    \"viztracer\": [\n        \"html/*.js\",\n        \"html/*.css\",\n        \"html/*.html\",\n        \"web_dist/*\",\n        \"web_dist/*/*\",\n        \"web_dist/*/*/*\",\n        \"attach_process/__init__.py\",\n        \"attach_process/add_code_to_python_process.py\",\n        \"attach_process/LICENSE\",\n    ],\n}\n\nif sys.platform == \"win32\":\n    package_data[\"viztracer\"].extend(\n        [\n            \"attach_process/attach_x86.dll\",\n            \"attach_process/attach_x86_64.dll\",\n            \"attach_process/inject_dll.exe\",\n            \"attach_process/inject_dll_amd64.exe\",\n            \"attach_process/run_code_on_dllmain_amd64.dll\",\n            \"attach_process/run_code_on_dllmain_x86.dll\",\n        ]\n    )\nif sys.platform == \"darwin\":\n    package_data[\"viztracer\"].extend(\n        [\n            \"attach_process/attach_x86_64.dylib\",\n        ]\n    )\nelif sys.platform in (\"linux\", \"linux2\"):\n    if platform.machine() == \"i686\":\n        package_data[\"viztracer\"].extend(\n            [\n                \"attach_process/attach_linux_x86.so\",\n            ]\n        )\n    elif platform.machine() == \"x86_64\":\n        package_data[\"viztracer\"].extend(\n            [\n                \"attach_process/attach_linux_amd64.so\",\n            ]\n        )\n\nsetuptools.setup(\n    packages=setuptools.find_namespace_packages(\"src\"),\n    package_dir={\"\": \"src\"},\n    package_data=package_data,\n    ext_modules=[\n        setuptools.Extension(\n            \"viztracer.snaptrace\",\n            sources=[\n                \"src/viztracer/modules/util.c\",\n                \"src/viztracer/modules/eventnode.c\",\n                \"src/viztracer/modules/quicktime.c\",\n                \"src/viztracer/modules/snaptrace.c\",\n                \"src/viztracer/modules/snaptrace_member.c\",\n            ],\n            extra_compile_args={\"win32\": []}.get(sys.platform, [\"-Werror\", \"-std=c99\"]),\n            extra_link_args={\"win32\": []}.get(sys.platform, [\"-lpthread\"]),\n        ),\n        setuptools.Extension(\n            \"viztracer.vcompressor\",\n            sources=[\n                \"src/viztracer/modules/vcompressor/vcompressor.c\",\n                \"src/viztracer/modules/vcompressor/vc_dump.c\",\n            ],\n            extra_compile_args={\"win32\": []}.get(\n                sys.platform, [\"-Wno-unused-result\", \"-Werror\", \"-std=c99\"]\n            ),\n        ),\n    ],\n)\n"
  },
  {
    "path": "src/viztracer/__init__.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n__version__ = \"1.1.1\"\n\n\nfrom .cellmagic import load_ipython_extension\nfrom .decorator import ignore_function, log_sparse, trace_and_save\nfrom .viztracer import VizTracer, get_tracer\n\n__all__ = [\n    \"__version__\",\n    \"VizTracer\",\n    \"ignore_function\",\n    \"trace_and_save\",\n    \"log_sparse\",\n    \"get_tracer\",\n    \"load_ipython_extension\",\n]\n"
  },
  {
    "path": "src/viztracer/__main__.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom .main import main\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/viztracer/attach.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport base64\nimport builtins\nimport gc\nimport json\nimport sys\nfrom dataclasses import dataclass\n\nfrom .viztracer import VizTracer, get_tracer\n\n\n@dataclass\nclass AttachStatus:\n    created_tracer: bool\n    save_path: str\n    attached: bool\n\n\nattach_status = AttachStatus(created_tracer=False, save_path=\"\", attached=False)\n\n\ndef start_attach(init_kwargs_b64: str) -> None:\n    init_kwargs = json.loads(\n        base64.urlsafe_b64decode(init_kwargs_b64.encode(\"ascii\")).decode(\"ascii\")\n    )\n    tracer = get_tracer()\n    if tracer is None:\n        attach_status.created_tracer = True\n        tracer = VizTracer(**init_kwargs)\n    elif tracer.enable:\n        print(\"Can't attach when VizTracer is already running.\", file=sys.stderr)\n        return\n    attach_status.attached = True\n    attach_status.save_path = init_kwargs[\"output_file\"]\n    if tracer.verbose > 0:\n        print(\"Detected attaching viztracer, start tracing.\", flush=True)\n    tracer.start()\n\n\ndef stop_attach() -> None:\n    if attach_status.attached:\n        tracer = get_tracer()\n        if tracer:\n            tracer.stop()\n            tracer.save(attach_status.save_path)\n            if tracer.verbose > 0:\n                print(f\"Saved report to {attach_status.save_path}\", flush=True)\n            attach_status.attached = False\n            if attach_status.created_tracer:\n                tracer.stop()\n                attach_status.created_tracer = False\n                builtins.__dict__.pop(\"__viz_tracer__\")\n                gc.collect()\n        attach_status.attached = False\n\n\ndef uninstall_attach():\n    attach_status.created_tracer = False\n    attach_status.save_path = \"\"\n    attach_status.attached = False\n    tracer = get_tracer()\n    if tracer:\n        tracer.stop()\n        tracer.clear()\n        builtins.__dict__.pop(\"__viz_tracer__\")\n        gc.collect()\n"
  },
  {
    "path": "src/viztracer/attach_process/LICENSE",
    "content": "Eclipse Public License - v 1.0\n\nTHE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC\nLICENSE (\"AGREEMENT\"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM\nCONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.\n\n1. DEFINITIONS\n\n\"Contribution\" means:\n\na) in the case of the initial Contributor, the initial code and documentation\n   distributed under this Agreement, and\nb) in the case of each subsequent Contributor:\n    i) changes to the Program, and\n   ii) additions to the Program;\n\n   where such changes and/or additions to the Program originate from and are\n   distributed by that particular Contributor. A Contribution 'originates'\n   from a Contributor if it was added to the Program by such Contributor\n   itself or anyone acting on such Contributor's behalf. Contributions do not\n   include additions to the Program which: (i) are separate modules of\n   software distributed in conjunction with the Program under their own\n   license agreement, and (ii) are not derivative works of the Program.\n\n\"Contributor\" means any person or entity that distributes the Program.\n\n\"Licensed Patents\" mean patent claims licensable by a Contributor which are\nnecessarily infringed by the use or sale of its Contribution alone or when\ncombined with the Program.\n\n\"Program\" means the Contributions distributed in accordance with this\nAgreement.\n\n\"Recipient\" means anyone who receives the Program under this Agreement,\nincluding all Contributors.\n\n2. GRANT OF RIGHTS\n  a) Subject to the terms of this Agreement, each Contributor hereby grants\n     Recipient a non-exclusive, worldwide, royalty-free copyright license to\n     reproduce, prepare derivative works of, publicly display, publicly\n     perform, distribute and sublicense the Contribution of such Contributor,\n     if any, and such derivative works, in source code and object code form.\n  b) Subject to the terms of this Agreement, each Contributor hereby grants\n     Recipient a non-exclusive, worldwide, royalty-free patent license under\n     Licensed Patents to make, use, sell, offer to sell, import and otherwise\n     transfer the Contribution of such Contributor, if any, in source code and\n     object code form. This patent license shall apply to the combination of\n     the Contribution and the Program if, at the time the Contribution is\n     added by the Contributor, such addition of the Contribution causes such\n     combination to be covered by the Licensed Patents. The patent license\n     shall not apply to any other combinations which include the Contribution.\n     No hardware per se is licensed hereunder.\n  c) Recipient understands that although each Contributor grants the licenses\n     to its Contributions set forth herein, no assurances are provided by any\n     Contributor that the Program does not infringe the patent or other\n     intellectual property rights of any other entity. Each Contributor\n     disclaims any liability to Recipient for claims brought by any other\n     entity based on infringement of intellectual property rights or\n     otherwise. As a condition to exercising the rights and licenses granted\n     hereunder, each Recipient hereby assumes sole responsibility to secure\n     any other intellectual property rights needed, if any. For example, if a\n     third party patent license is required to allow Recipient to distribute\n     the Program, it is Recipient's responsibility to acquire that license\n     before distributing the Program.\n  d) Each Contributor represents that to its knowledge it has sufficient\n     copyright rights in its Contribution, if any, to grant the copyright\n     license set forth in this Agreement.\n\n3. REQUIREMENTS\n\nA Contributor may choose to distribute the Program in object code form under\nits own license agreement, provided that:\n\n  a) it complies with the terms and conditions of this Agreement; and\n  b) its license agreement:\n      i) effectively disclaims on behalf of all Contributors all warranties\n         and conditions, express and implied, including warranties or\n         conditions of title and non-infringement, and implied warranties or\n         conditions of merchantability and fitness for a particular purpose;\n     ii) effectively excludes on behalf of all Contributors all liability for\n         damages, including direct, indirect, special, incidental and\n         consequential damages, such as lost profits;\n    iii) states that any provisions which differ from this Agreement are\n         offered by that Contributor alone and not by any other party; and\n     iv) states that source code for the Program is available from such\n         Contributor, and informs licensees how to obtain it in a reasonable\n         manner on or through a medium customarily used for software exchange.\n\nWhen the Program is made available in source code form:\n\n  a) it must be made available under this Agreement; and\n  b) a copy of this Agreement must be included with each copy of the Program.\n     Contributors may not remove or alter any copyright notices contained\n     within the Program.\n\nEach Contributor must identify itself as the originator of its Contribution,\nif\nany, in a manner that reasonably allows subsequent Recipients to identify the\noriginator of the Contribution.\n\n4. COMMERCIAL DISTRIBUTION\n\nCommercial distributors of software may accept certain responsibilities with\nrespect to end users, business partners and the like. While this license is\nintended to facilitate the commercial use of the Program, the Contributor who\nincludes the Program in a commercial product offering should do so in a manner\nwhich does not create potential liability for other Contributors. Therefore,\nif a Contributor includes the Program in a commercial product offering, such\nContributor (\"Commercial Contributor\") hereby agrees to defend and indemnify\nevery other Contributor (\"Indemnified Contributor\") against any losses,\ndamages and costs (collectively \"Losses\") arising from claims, lawsuits and\nother legal actions brought by a third party against the Indemnified\nContributor to the extent caused by the acts or omissions of such Commercial\nContributor in connection with its distribution of the Program in a commercial\nproduct offering. The obligations in this section do not apply to any claims\nor Losses relating to any actual or alleged intellectual property\ninfringement. In order to qualify, an Indemnified Contributor must:\na) promptly notify the Commercial Contributor in writing of such claim, and\nb) allow the Commercial Contributor to control, and cooperate with the\nCommercial Contributor in, the defense and any related settlement\nnegotiations. The Indemnified Contributor may participate in any such claim at\nits own expense.\n\nFor example, a Contributor might include the Program in a commercial product\noffering, Product X. That Contributor is then a Commercial Contributor. If\nthat Commercial Contributor then makes performance claims, or offers\nwarranties related to Product X, those performance claims and warranties are\nsuch Commercial Contributor's responsibility alone. Under this section, the\nCommercial Contributor would have to defend claims against the other\nContributors related to those performance claims and warranties, and if a\ncourt requires any other Contributor to pay any damages as a result, the\nCommercial Contributor must pay those damages.\n\n5. NO WARRANTY\n\nEXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR\nIMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each\nRecipient is solely responsible for determining the appropriateness of using\nand distributing the Program and assumes all risks associated with its\nexercise of rights under this Agreement , including but not limited to the\nrisks and costs of program errors, compliance with applicable laws, damage to\nor loss of data, programs or equipment, and unavailability or interruption of\noperations.\n\n6. DISCLAIMER OF LIABILITY\n\nEXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY\nCONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION\nLOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE\nEXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY\nOF SUCH DAMAGES.\n\n7. GENERAL\n\nIf any provision of this Agreement is invalid or unenforceable under\napplicable law, it shall not affect the validity or enforceability of the\nremainder of the terms of this Agreement, and without further action by the\nparties hereto, such provision shall be reformed to the minimum extent\nnecessary to make such provision valid and enforceable.\n\nIf Recipient institutes patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Program itself\n(excluding combinations of the Program with other software or hardware)\ninfringes such Recipient's patent(s), then such Recipient's rights granted\nunder Section 2(b) shall terminate as of the date such litigation is filed.\n\nAll Recipient's rights under this Agreement shall terminate if it fails to\ncomply with any of the material terms or conditions of this Agreement and does\nnot cure such failure in a reasonable period of time after becoming aware of\nsuch noncompliance. If all Recipient's rights under this Agreement terminate,\nRecipient agrees to cease use and distribution of the Program as soon as\nreasonably practicable. However, Recipient's obligations under this Agreement\nand any licenses granted by Recipient relating to the Program shall continue\nand survive.\n\nEveryone is permitted to copy and distribute copies of this Agreement, but in\norder to avoid inconsistency the Agreement is copyrighted and may only be\nmodified in the following manner. The Agreement Steward reserves the right to\npublish new versions (including revisions) of this Agreement from time to\ntime. No one other than the Agreement Steward has the right to modify this\nAgreement. The Eclipse Foundation is the initial Agreement Steward. The\nEclipse Foundation may assign the responsibility to serve as the Agreement\nSteward to a suitable separate entity. Each new version of the Agreement will\nbe given a distinguishing version number. The Program (including\nContributions) may always be distributed subject to the version of the\nAgreement under which it was received. In addition, after a new version of the\nAgreement is published, Contributor may elect to distribute the Program\n(including its Contributions) under the new version. Except as expressly\nstated in Sections 2(a) and 2(b) above, Recipient receives no rights or\nlicenses to the intellectual property of any Contributor under this Agreement,\nwhether expressly, by implication, estoppel or otherwise. All rights in the\nProgram not expressly granted under this Agreement are reserved.\n\nThis Agreement is governed by the laws of the State of New York and the\nintellectual property laws of the United States of America. No party to this\nAgreement will bring a legal action under this Agreement more than one year\nafter the cause of action arose. Each party waives its rights to a jury trial in\nany resulting litigation."
  },
  {
    "path": "src/viztracer/attach_process/README.txt",
    "content": "This folder is copied from https://github.com/fabioz/PyDev.Debugger\n\nSome print code in add_code_to_python_process.py is removed\n\nThe code and the binary in this folder is under EPL 1.0"
  },
  {
    "path": "src/viztracer/attach_process/__init__.py",
    "content": ""
  },
  {
    "path": "src/viztracer/attach_process/add_code_to_python_process.py",
    "content": "# type: ignore\n\nr'''\nCopyright: Brainwy Software Ltda.\n\nLicense: EPL.\n=============\n\nWorks for Windows by using an executable that'll inject a dll to a process and call a function.\n\nNote: https://github.com/fabioz/winappdbg is used just to determine if the target process is 32 or 64 bits.\n\nWorks for Linux relying on gdb.\n\nLimitations:\n============\n\n    Linux:\n    ------\n\n        1. It possible that ptrace is disabled: /etc/sysctl.d/10-ptrace.conf\n\n        Note that even enabling it in /etc/sysctl.d/10-ptrace.conf (i.e.: making the\n        ptrace_scope=0), it's possible that we need to run the application that'll use ptrace (or\n        gdb in this case) as root (so, we must sudo the python which'll run this module).\n\n        2. It currently doesn't work in debug builds (i.e.: python_d)\n\n\nOther implementations:\n- pyrasite.com:\n    GPL\n    Windows/linux (in Linux it also uses gdb to connect -- although specifics are different as we use a dll to execute\n    code with other threads stopped). It's Windows approach is more limited because it doesn't seem to deal properly with\n    Python 3 if threading is disabled.\n\n- https://github.com/google/pyringe:\n    Apache v2.\n    Only linux/Python 2.\n\n- http://pytools.codeplex.com:\n    Apache V2\n    Windows Only (but supports mixed mode debugging)\n    Our own code relies heavily on a part of it: http://pytools.codeplex.com/SourceControl/latest#Python/Product/PyDebugAttach/PyDebugAttach.cpp\n    to overcome some limitations of attaching and running code in the target python executable on Python 3.\n    See: attach.cpp\n\nLinux: References if we wanted to use a pure-python debugger:\n    https://bitbucket.org/haypo/python-ptrace/\n    http://stackoverflow.com/questions/7841573/how-to-get-an-error-message-for-errno-value-in-python\n    Jugaad:\n        https://www.defcon.org/images/defcon-19/dc-19-presentations/Jakhar/DEFCON-19-Jakhar-Jugaad-Linux-Thread-Injection.pdf\n        https://github.com/aseemjakhar/jugaad\n\nSomething else (general and not Python related):\n- http://www.codeproject.com/Articles/4610/Three-Ways-to-Inject-Your-Code-into-Another-Proces\n\nOther references:\n- https://github.com/haypo/faulthandler\n- http://nedbatchelder.com/text/trace-function.html\n- https://github.com/python-git/python/blob/master/Python/sysmodule.c (sys_settrace)\n- https://github.com/python-git/python/blob/master/Python/ceval.c (PyEval_SetTrace)\n- https://github.com/python-git/python/blob/master/Python/thread.c (PyThread_get_key_value)\n\n\nTo build the dlls needed on windows, visual studio express 13 was used (see compile_dll.bat)\n\nSee: attach_pydevd.py to attach the pydev debugger to a running python process.\n'''\n\n# Note: to work with nasm compiling asm to code and decompiling to see asm with shellcode:\n# x:\\nasm\\nasm-2.07-win32\\nasm-2.07\\nasm.exe\n# nasm.asm&x:\\nasm\\nasm-2.07-win32\\nasm-2.07\\ndisasm.exe -b arch nasm\nimport ctypes\nimport os\nimport struct\nimport subprocess\nimport sys\nimport time\nfrom contextlib import contextmanager\nimport platform\nimport traceback\n\ntry:\n    TimeoutError = TimeoutError  # @ReservedAssignment\nexcept NameError:\n\n    class TimeoutError(RuntimeError):  # @ReservedAssignment\n        pass\n\n\n@contextmanager\ndef _create_win_event(name):\n    from winappdbg.win32.kernel32 import CreateEventA, WaitForSingleObject, CloseHandle\n\n    manual_reset = False  # i.e.: after someone waits it, automatically set to False.\n    initial_state = False\n    if not isinstance(name, bytes):\n        name = name.encode('utf-8')\n    event = CreateEventA(None, manual_reset, initial_state, name)\n    if not event:\n        raise ctypes.WinError()\n\n    class _WinEvent(object):\n\n        def wait_for_event_set(self, timeout=None):\n            '''\n            :param timeout: in seconds\n            '''\n            if timeout is None:\n                timeout = 0xFFFFFFFF\n            else:\n                timeout = int(timeout * 1000)\n            ret = WaitForSingleObject(event, timeout)\n            if ret in (0, 0x80):\n                return True\n            elif ret == 0x102:\n                # Timed out\n                return False\n            else:\n                raise ctypes.WinError()\n\n    try:\n        yield _WinEvent()\n    finally:\n        CloseHandle(event)\n\n\nIS_WINDOWS = sys.platform == 'win32'\nIS_LINUX = sys.platform in ('linux', 'linux2')\nIS_MAC = sys.platform == 'darwin'\n\n\ndef is_python_64bit():\n    return (struct.calcsize('P') == 8)\n\n\ndef get_target_filename(is_target_process_64=None, prefix=None, extension=None):\n    # Note: we have an independent (and similar -- but not equal) version of this method in\n    # `pydevd_tracing.py` which should be kept synchronized with this one (we do a copy\n    # because the `pydevd_attach_to_process` is mostly independent and shouldn't be imported in the\n    # debugger -- the only situation where it's imported is if the user actually does an attach to\n    # process, through `attach_pydevd.py`, but this should usually be called from the IDE directly\n    # and not from the debugger).\n    libdir = os.path.dirname(__file__)\n\n    if is_target_process_64 is None:\n        if IS_WINDOWS:\n            # i.e.: On windows the target process could have a different bitness (32bit is emulated on 64bit).\n            raise AssertionError(\"On windows it's expected that the target bitness is specified.\")\n\n        # For other platforms, just use the the same bitness of the process we're running in.\n        is_target_process_64 = is_python_64bit()\n\n    arch = ''\n    if IS_WINDOWS:\n        # prefer not using platform.machine() when possible (it's a bit heavyweight as it may\n        # spawn a subprocess).\n        arch = os.environ.get(\"PROCESSOR_ARCHITEW6432\", os.environ.get('PROCESSOR_ARCHITECTURE', ''))\n\n    if not arch:\n        arch = platform.machine()\n        if not arch:\n            print('platform.machine() did not return valid value.')  # This shouldn't happen...\n            return None\n\n    if IS_WINDOWS:\n        if not extension:\n            extension = '.dll'\n        suffix_64 = 'amd64'\n        suffix_32 = 'x86'\n\n    elif IS_LINUX:\n        if not extension:\n            extension = '.so'\n        suffix_64 = 'amd64'\n        suffix_32 = 'x86'\n\n    elif IS_MAC:\n        if not extension:\n            extension = '.dylib'\n        suffix_64 = 'x86_64'\n        suffix_32 = 'x86'\n\n    else:\n        print('Unable to attach to process in platform: %s', sys.platform)\n        return None\n\n    if arch.lower() not in ('amd64', 'x86', 'x86_64', 'i386', 'x86'):\n        # We don't support this processor by default. Still, let's support the case where the\n        # user manually compiled it himself with some heuristics.\n        #\n        # Ideally the user would provide a library in the format: \"attach_<arch>.<extension>\"\n        # based on the way it's currently compiled -- see:\n        # - windows/compile_windows.bat\n        # - linux_and_mac/compile_linux.sh\n        # - linux_and_mac/compile_mac.sh\n\n        try:\n            found = [name for name in os.listdir(libdir) if name.startswith('attach_') and name.endswith(extension)]\n        except:\n            print('Error listing dir: %s' % (libdir,))\n            traceback.print_exc()\n            return None\n\n        if prefix:\n            expected_name = prefix + arch + extension\n            expected_name_linux = prefix + 'linux_' + arch + extension\n        else:\n            # Default is looking for the attach_ / attach_linux\n            expected_name = 'attach_' + arch + extension\n            expected_name_linux = 'attach_linux_' + arch + extension\n\n        filename = None\n        if expected_name in found:  # Heuristic: user compiled with \"attach_<arch>.<extension>\"\n            filename = os.path.join(libdir, expected_name)\n\n        elif IS_LINUX and expected_name_linux in found:  # Heuristic: user compiled with \"attach_linux_<arch>.<extension>\"\n            filename = os.path.join(libdir, expected_name_linux)\n\n        elif len(found) == 1:  # Heuristic: user removed all libraries and just left his own lib.\n            filename = os.path.join(libdir, found[0])\n\n        else:  # Heuristic: there's one additional library which doesn't seem to be our own. Find the odd one.\n            filtered = [name for name in found if not name.endswith((suffix_64 + extension, suffix_32 + extension))]\n            if len(filtered) == 1:  # If more than one is available we can't be sure...\n                filename = os.path.join(libdir, found[0])\n\n        if filename is None:\n            print(\n                'Unable to attach to process in arch: %s (did not find %s in %s).' % (\n                    arch, expected_name, libdir\n                )\n            )\n            return None\n\n        print('Using %s in arch: %s.' % (filename, arch))\n\n    else:\n        if is_target_process_64:\n            suffix = suffix_64\n        else:\n            suffix = suffix_32\n\n        if not prefix:\n            # Default is looking for the attach_ / attach_linux\n            if IS_WINDOWS or IS_MAC:  # just the extension changes\n                prefix = 'attach_'\n            elif IS_LINUX:\n                prefix = 'attach_linux_'  # historically it has a different name\n            else:\n                print('Unable to attach to process in platform: %s' % (sys.platform,))\n                return None\n\n        filename = os.path.join(libdir, '%s%s%s' % (prefix, suffix, extension))\n\n    if not os.path.exists(filename):\n        print('Expected: %s to exist.' % (filename,))\n        return None\n\n    return filename\n\n\ndef run_python_code_windows(pid, python_code, connect_debugger_tracing=False, show_debug_info=0):\n    assert '\\'' not in python_code, 'Having a single quote messes with our command.'\n    from winappdbg.process import Process\n    if not isinstance(python_code, bytes):\n        python_code = python_code.encode('utf-8')\n\n    process = Process(pid)\n    bits = process.get_bits()\n    is_target_process_64 = bits == 64\n\n    # Note: this restriction no longer applies (we create a process with the proper bitness from\n    # this process so that the attach works).\n    # if is_target_process_64 != is_python_64bit():\n    #     raise RuntimeError(\"The architecture of the Python used to connect doesn't match the architecture of the target.\\n\"\n    #     \"Target 64 bits: %s\\n\"\n    #     \"Current Python 64 bits: %s\" % (is_target_process_64, is_python_64bit()))\n\n    with _acquire_mutex('_pydevd_pid_attach_mutex_%s' % (pid,), 10):\n        # print('--- Connecting to %s bits target (current process is: %s) ---' % (bits, 64 if is_python_64bit() else 32))\n\n        with _win_write_to_shared_named_memory(python_code, pid):\n\n            target_executable = get_target_filename(is_target_process_64, 'inject_dll_', '.exe')\n            if not target_executable:\n                raise RuntimeError('Could not find expected .exe file to inject dll in attach to process.')\n\n            target_dll = get_target_filename(is_target_process_64)\n            if not target_dll:\n                raise RuntimeError('Could not find expected .dll file in attach to process.')\n\n            # print('\\n--- Injecting attach dll: %s into pid: %s ---' % (os.path.basename(target_dll), pid))\n            args = [target_executable, str(pid), target_dll]\n            subprocess.check_call(args)\n\n            # Now, if the first injection worked, go on to the second which will actually\n            # run the code.\n            target_dll_run_on_dllmain = get_target_filename(is_target_process_64, 'run_code_on_dllmain_', '.dll')\n            if not target_dll_run_on_dllmain:\n                raise RuntimeError('Could not find expected .dll in attach to process.')\n\n            with _create_win_event('_pydevd_pid_event_%s' % (pid,)) as event:\n                # print('\\n--- Injecting run code dll: %s into pid: %s ---' % (os.path.basename(target_dll_run_on_dllmain), pid))\n                args = [target_executable, str(pid), target_dll_run_on_dllmain]\n                subprocess.check_call(args)\n\n                if not event.wait_for_event_set(10):\n                    print('Timeout error: the attach may not have completed.')\n            # print('--- Finished dll injection ---\\n')\n\n    return 0, b\"\", b\"\"\n\n\n@contextmanager\ndef _acquire_mutex(mutex_name, timeout):\n    '''\n    Only one process may be attaching to a pid, so, create a system mutex\n    to make sure this holds in practice.\n    '''\n    from winappdbg.win32.kernel32 import CreateMutex, GetLastError, CloseHandle\n    from winappdbg.win32.defines import ERROR_ALREADY_EXISTS\n\n    initial_time = time.time()\n    while True:\n        mutex = CreateMutex(None, True, mutex_name)\n        acquired = GetLastError() != ERROR_ALREADY_EXISTS\n        if acquired:\n            break\n        if time.time() - initial_time > timeout:\n            raise TimeoutError('Unable to acquire mutex to make attach before timeout.')\n        time.sleep(.2)\n\n    try:\n        yield\n    finally:\n        CloseHandle(mutex)\n\n\n@contextmanager\ndef _win_write_to_shared_named_memory(python_code, pid):\n    # Use the definitions from winappdbg when possible.\n    from winappdbg.win32 import defines\n    from winappdbg.win32.kernel32 import (\n        CreateFileMapping,\n        MapViewOfFile,\n        CloseHandle,\n        UnmapViewOfFile,\n    )\n\n    memmove = ctypes.cdll.msvcrt.memmove\n    memmove.argtypes = [\n        ctypes.c_void_p,\n        ctypes.c_void_p,\n        defines.SIZE_T,\n    ]\n    memmove.restype = ctypes.c_void_p\n\n    # Note: BUFSIZE must be the same from run_code_in_memory.hpp\n    BUFSIZE = 2048\n    assert isinstance(python_code, bytes)\n    assert len(python_code) > 0, 'Python code must not be empty.'\n    # Note: -1 so that we're sure we'll add a \\0 to the end.\n    assert len(python_code) < BUFSIZE - 1, 'Python code must have at most %s bytes (found: %s)' % (BUFSIZE - 1, len(python_code))\n\n    python_code += b'\\0' * (BUFSIZE - len(python_code))\n    assert python_code.endswith(b'\\0')\n\n    INVALID_HANDLE_VALUE = -1\n    PAGE_READWRITE = 0x4\n    FILE_MAP_WRITE = 0x2\n    filemap = CreateFileMapping(\n        INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, BUFSIZE, u\"__pydevd_pid_code_to_run__%s\" % (pid,))\n\n    if filemap == INVALID_HANDLE_VALUE or filemap is None:\n        raise Exception(\"Failed to create named file mapping (ctypes: CreateFileMapping): %s\" % (filemap,))\n    try:\n        view = MapViewOfFile(filemap, FILE_MAP_WRITE, 0, 0, 0)\n        if not view:\n            raise Exception(\"Failed to create view of named file mapping (ctypes: MapViewOfFile).\")\n\n        try:\n            memmove(view, python_code, BUFSIZE)\n            yield\n        finally:\n            UnmapViewOfFile(view)\n    finally:\n        CloseHandle(filemap)\n\n\ndef run_python_code_linux(pid, python_code, connect_debugger_tracing=False, show_debug_info=0):\n    assert '\\'' not in python_code, 'Having a single quote messes with our command.'\n\n    target_dll = get_target_filename()\n    if not target_dll:\n        raise RuntimeError('Could not find .so for attach to process.')\n    target_dll_name = os.path.splitext(os.path.basename(target_dll))[0]\n\n    # Note: we currently don't support debug builds\n    is_debug = 0\n    # Note that the space in the beginning of each line in the multi-line is important!\n    cmd = [\n        'gdb',\n        '--nw',  # no gui interface\n        '--nh',  # no ~/.gdbinit\n        '--nx',  # no .gdbinit\n#         '--quiet',  # no version number on startup\n        '--pid',\n        str(pid),\n        '--batch',\n#         '--batch-silent',\n    ]\n\n    cmd.extend([\"--eval-command='set scheduler-locking off'\"])  # If on we'll deadlock.\n\n    # Leave auto by default (it should do the right thing as we're attaching to a process in the\n    # current host).\n    cmd.extend([\"--eval-command='set architecture auto'\"])\n\n    cmd.extend([\n        \"--eval-command='call (void*)dlopen(\\\"%s\\\", 2)'\" % target_dll,\n        \"--eval-command='sharedlibrary %s'\" % target_dll_name,\n        \"--eval-command='call (int)DoAttach(%s, \\\"%s\\\", %s)'\" % (\n            is_debug, python_code, show_debug_info)\n    ])\n\n    # print ' '.join(cmd)\n\n    env = os.environ.copy()\n    # Remove the PYTHONPATH (if gdb has a builtin Python it could fail if we\n    # have the PYTHONPATH for a different python version or some forced encoding).\n    env.pop('PYTHONIOENCODING', None)\n    env.pop('PYTHONPATH', None)\n    # print('Running: %s' % (' '.join(cmd)))\n    p = subprocess.Popen(\n        ' '.join(cmd),\n        shell=True,\n        env=env,\n        stdout=subprocess.PIPE,\n        stderr=subprocess.PIPE,\n    )\n    # print('Running gdb in target process.')\n    out, err = p.communicate()\n    # print('stdout: %s' % (out,))\n    # print('stderr: %s' % (err,))\n    return p.returncode, out, err\n\n\ndef find_helper_script(filedir, script_name):\n    target_filename = os.path.join(filedir, 'linux_and_mac', script_name)\n    target_filename = os.path.normpath(target_filename)\n    if not os.path.exists(target_filename):\n        raise RuntimeError('Could not find helper script: %s' % target_filename)\n\n    return target_filename\n\n\ndef run_python_code_mac(pid, python_code, connect_debugger_tracing=False, show_debug_info=0):\n    assert '\\'' not in python_code, 'Having a single quote messes with our command.'\n\n    target_dll = get_target_filename()\n    if not target_dll:\n        raise RuntimeError('Could not find .dylib for attach to process.')\n\n    libdir = os.path.dirname(__file__)\n    lldb_prepare_file = find_helper_script(libdir, 'lldb_prepare.py')\n    # Note: we currently don't support debug builds\n\n    is_debug = 0\n    # Note that the space in the beginning of each line in the multi-line is important!\n    cmd = [\n        'lldb',\n        '--no-lldbinit',  # Do not automatically parse any '.lldbinit' files.\n        # '--attach-pid',\n        # str(pid),\n        # '--arch',\n        # arch,\n        '--script-language',\n        'Python'\n        #         '--batch-silent',\n    ]\n\n    cmd.extend([\n        \"-o 'process attach --pid %d'\" % pid,\n        \"-o 'command script import \\\"%s\\\"'\" % (lldb_prepare_file,),\n        \"-o 'load_lib_and_attach \\\"%s\\\" %s \\\"%s\\\" %s'\" % (target_dll,\n            is_debug, python_code, show_debug_info),\n    ])\n\n    cmd.extend([\n        \"-o 'process detach'\",\n        \"-o 'script import os; os._exit(0)'\",\n    ])\n\n    # print ' '.join(cmd)\n\n    env = os.environ.copy()\n    # Remove the PYTHONPATH (if gdb has a builtin Python it could fail if we\n    # have the PYTHONPATH for a different python version or some forced encoding).\n    env.pop('PYTHONIOENCODING', None)\n    env.pop('PYTHONPATH', None)\n    # print('Running: %s' % (' '.join(cmd)))\n    p = subprocess.Popen(\n        ' '.join(cmd),\n        shell=True,\n        env=env,\n        stdout=subprocess.PIPE,\n        stderr=subprocess.PIPE,\n        )\n    # print('Running lldb in target process.')\n    out, err = p.communicate()\n    # print('stdout: %s' % (out,))\n    # print('stderr: %s' % (err,))\n    return p.returncode, out, err\n\n\nif IS_WINDOWS:\n    run_python_code = run_python_code_windows\nelif IS_MAC:\n    run_python_code = run_python_code_mac\nelif IS_LINUX:\n    run_python_code = run_python_code_linux\nelse:\n\n    def run_python_code(*args, **kwargs):\n        print('Unable to attach to process in platform: %s', sys.platform)\n\n\nsys.path.append(os.path.dirname(__file__))\n\n\ndef test():\n    print('Running with: %s' % (sys.executable,))\n    code = '''\nimport os, time, sys\nprint(os.getpid())\n#from threading import Thread\n#Thread(target=str).start()\nif __name__ == '__main__':\n    while True:\n        time.sleep(.5)\n        sys.stdout.write('.\\\\n')\n        sys.stdout.flush()\n'''\n\n    p = subprocess.Popen([sys.executable, '-u', '-c', code])\n    try:\n        code = 'print(\"It worked!\")\\n'\n\n        # Real code will be something as:\n        # code = '''import sys;sys.path.append(r'X:\\winappdbg-code\\examples'); import imported;'''\n        run_python_code(p.pid, python_code=code)\n        print('\\nRun a 2nd time...\\n')\n        run_python_code(p.pid, python_code=code)\n\n        time.sleep(3)\n    finally:\n        p.kill()\n\n\ndef main(args):\n    # Otherwise, assume the first parameter is the pid and anything else is code to be executed\n    # in the target process.\n    pid = int(args[0])\n    del args[0]\n    python_code = ';'.join(args)\n\n    # Note: on Linux the python code may not have a single quote char: '\n    run_python_code(pid, python_code)\n\n\nif __name__ == '__main__':\n    args = sys.argv[1:]\n    if not args:\n        print('Expected pid and Python code to execute in target process.')\n    else:\n        if '--test' == args[0]:\n            test()\n        else:\n            main(args)\n\n"
  },
  {
    "path": "src/viztracer/attach_process/linux_and_mac/lldb_prepare.py",
    "content": "# This file is meant to be run inside lldb\n# It registers command to load library and invoke attach function\n# Also it marks process threads to to distinguish them from debugger\n# threads later while settings trace in threads\n\ndef load_lib_and_attach(debugger, command, result, internal_dict):\n    import shlex\n    args = shlex.split(command)\n\n    dll = args[0]\n    is_debug = args[1]\n    python_code = args[2]\n    show_debug_info = args[3]\n\n    import lldb\n    options = lldb.SBExpressionOptions()\n    options.SetFetchDynamicValue()\n    options.SetTryAllThreads(run_others=False)\n    options.SetTimeoutInMicroSeconds(timeout=60000000)\n\n    print(dll)\n    target = debugger.GetSelectedTarget()\n    res = target.EvaluateExpression(\"(void*)dlopen(\\\"%s\\\", 2);\" % (\n        dll), options)\n    error = res.GetError()\n    if error:\n        print(error)\n\n    print(python_code)\n    res = target.EvaluateExpression(\"(int)DoAttach(%s, \\\"%s\\\", %s);\" % (\n        is_debug, python_code.replace('\"', \"'\"), show_debug_info), options)\n    error = res.GetError()\n    if error:\n        print(error)\n\ndef __lldb_init_module(debugger, internal_dict):\n    import lldb\n\n    debugger.HandleCommand('command script add -f lldb_prepare.load_lib_and_attach load_lib_and_attach')\n\n    try:\n        target = debugger.GetSelectedTarget()\n        if target:\n            process = target.GetProcess()\n            if process:\n                for thread in process:\n                    # print('Marking process thread %d'%thread.GetThreadID())\n                    internal_dict['_thread_%d' % thread.GetThreadID()] = True\n                    # thread.Suspend()\n    except:\n        import traceback;traceback.print_exc()\n\n\n\n"
  },
  {
    "path": "src/viztracer/cellmagic.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\ndef load_ipython_extension(ipython) -> None:\n    \"\"\"\n    Use `%load_ext viztracer`\n    Lazy execute the following code because importing IPython is slow\n    \"\"\"\n    from IPython.core.magic import (  # type: ignore\n        Magics,\n        cell_magic,\n        magics_class,\n        needs_local_scope,\n    )\n    from IPython.core.magic_arguments import (  # type: ignore\n        argument,\n        magic_arguments,\n        parse_argstring,\n    )\n\n    @magics_class\n    class VizTracerMagics(Magics):\n        @magic_arguments()\n        @argument(\n            \"--port\",\n            \"-p\",\n            default=9001,\n            type=int,\n            help=\"specify the port vizviewer will use\",\n        )\n        @argument(\n            \"--output_file\",\n            default=\"./viztracer_report.json\",\n            help=\"output file path. End with .json or .html or .gz\",\n        )\n        @argument(\n            \"--max_stack_depth\",\n            type=int,\n            default=-1,\n            help=\"maximum stack depth you want to trace.\",\n        )\n        @argument(\n            \"--ignore_c_function\",\n            action=\"store_true\",\n            default=False,\n            help=\"ignore all c functions including most builtin functions and libraries\",\n        )\n        @argument(\n            \"--ignore_frozen\",\n            action=\"store_true\",\n            default=False,\n            help=\"ignore all functions that are frozen(like import)\",\n        )\n        @argument(\n            \"--log_func_args\",\n            action=\"store_true\",\n            default=False,\n            help=\"log all function arguments, this will introduce large overhead\",\n        )\n        @argument(\n            \"--log_print\",\n            action=\"store_true\",\n            default=False,\n            help=\"replace all print() function to adding an event to the result\",\n        )\n        @argument(\n            \"--log_sparse\",\n            action=\"store_true\",\n            default=False,\n            help=\"log only selected functions with @log_sparse\",\n        )\n        @needs_local_scope\n        @cell_magic\n        def viztracer(self, line, cell, local_ns) -> None:\n            from IPython.display import display  # type: ignore\n            from ipywidgets import Button  # type: ignore\n\n            from .viewer import ServerThread\n            from .viztracer import VizTracer\n\n            options = parse_argstring(self.viztracer, line)\n            assert self.shell is not None\n            code = self.shell.transform_cell(cell)\n            file_path = options.output_file\n            tracer_kwargs = {\n                \"output_file\": file_path,\n                \"verbose\": 0,\n                \"max_stack_depth\": options.max_stack_depth,\n                \"ignore_c_function\": options.ignore_c_function,\n                \"ignore_frozen\": options.ignore_frozen,\n                \"log_func_args\": options.log_func_args,\n                \"log_print\": options.log_print,\n                \"log_sparse\": options.log_sparse,\n            }\n            with VizTracer(**tracer_kwargs):\n                exec(code, local_ns, local_ns)\n\n            def view():  # pragma: no cover\n                server = ServerThread(file_path, port=options.port, once=True)\n                server.start()\n                server.ready.wait()\n                import webbrowser\n\n                webbrowser.open_new_tab(f\"http://127.0.0.1:{server.port}\")\n\n            button = Button(description=\"VizTracer Report\")\n            button.on_click(lambda b: view())\n\n            display(button)\n\n    ipython.register_magics(VizTracerMagics)\n"
  },
  {
    "path": "src/viztracer/code_monkey.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport ast\nimport copy\nimport re\nfrom functools import reduce\nfrom typing import Any, Callable\n\nfrom .util import color_print\n\n\nclass AstTransformer(ast.NodeTransformer):\n    def __init__(self, inst_type: str, inst_args: dict[str, dict]) -> None:\n        super().__init__()\n        self.inst_type: str = inst_type\n        self.inst_args: dict[str, dict] = inst_args\n        self.curr_lineno: int = 0\n        self.log_func_exec_enable: bool = False\n\n    def visit_Assign(self, node: ast.Assign) -> ast.stmt | list[ast.stmt]:\n        return self._visit_generic_assign(node)\n\n    def visit_AugAssign(self, node: ast.AugAssign) -> ast.stmt | list[ast.stmt]:\n        return self._visit_generic_assign(node)\n\n    def visit_AnnAssign(self, node: ast.AnnAssign) -> ast.stmt | list[ast.stmt]:\n        return self._visit_generic_assign(node)\n\n    def visit_FunctionDef(self, node: ast.FunctionDef) -> ast.FunctionDef:\n        if self.inst_type == \"log_func_exec\":\n            for funcname in self.inst_args[\"funcnames\"]:\n                if re.fullmatch(funcname, node.name):\n                    self.log_func_exec_enable = True\n        elif self.inst_type == \"log_func_entry\":\n            for funcname in self.inst_args[\"funcnames\"]:\n                if re.fullmatch(funcname, node.name):\n                    node.body.insert(\n                        0, self.get_instrument_node(\"Function Entry\", node.name)\n                    )\n        elif self.inst_type in (\"log_var\", \"log_number\"):\n            instrumented_nodes: list[ast.stmt] = []\n            args = node.args\n            func_args_name = [\n                a.arg for a in args.posonlyargs + args.args + args.kwonlyargs\n            ]\n            if \"vararg\" in args._fields and args.vararg:\n                func_args_name.append(args.vararg.arg)\n            if \"kwarg\" in args._fields and args.kwarg:\n                func_args_name.append(args.kwarg.arg)\n            for name in func_args_name:\n                for pattern in self.inst_args[\"varnames\"]:\n                    if re.fullmatch(pattern, name):\n                        instrumented_nodes.append(\n                            self.get_instrument_node(\"Variable Assign\", name)\n                        )\n                        break\n\n        self.generic_visit(node)\n\n        if self.inst_type == \"log_func_exec\":\n            self.log_func_exec_enable = False\n        elif self.inst_type in (\"log_var\", \"log_number\") and instrumented_nodes:\n            node.body = instrumented_nodes + node.body\n        return node\n\n    def visit_For(self, node: ast.For) -> ast.For:\n        if self.inst_type in (\"log_var\", \"log_number\"):\n            instrumented_nodes = self.get_assign_log_nodes(node.target)\n\n        self.generic_visit(node)\n\n        if self.inst_type in (\"log_var\", \"log_number\"):\n            if instrumented_nodes:\n                node.body = instrumented_nodes + node.body\n        return node\n\n    def visit_Raise(self, node: ast.Raise) -> ast.AST | list[ast.AST]:\n        if self.inst_type == \"log_exception\":\n            instrument_node = self.get_instrument_node_by_node(\"Exception\", node.exc)\n            return [instrument_node, node]\n        return node\n\n    def _visit_generic_assign(\n        self, node: ast.Assign | ast.AugAssign | ast.AnnAssign\n    ) -> list[ast.stmt]:\n        self.generic_visit(node)\n        ret: list[ast.stmt] = [node]\n        self.curr_lineno = node.lineno\n        if self.inst_type in (\"log_var\", \"log_number\", \"log_attr\", \"log_func_exec\"):\n            if isinstance(node, (ast.AugAssign, ast.AnnAssign)):\n                instrumented_nodes = self.get_assign_log_nodes(node.target)\n                if instrumented_nodes:\n                    ret.extend(instrumented_nodes)\n            elif isinstance(node, ast.Assign):\n                for target in node.targets:\n                    instrumented_nodes = self.get_assign_log_nodes(target)\n                    if instrumented_nodes:\n                        ret.extend(instrumented_nodes)\n        return ret\n\n    def get_assign_targets(self, node: ast.expr) -> list[str]:\n        \"\"\"\n        :param ast.Node node:\n        \"\"\"\n        if isinstance(node, ast.Name):\n            return [node.id]\n        elif isinstance(node, (ast.Attribute, ast.Subscript, ast.Starred)):\n            return self.get_assign_targets(node.value)\n        elif isinstance(node, ast.Tuple) or isinstance(node, ast.List):\n            return reduce(\n                lambda a, b: a + b, [self.get_assign_targets(elt) for elt in node.elts]\n            )\n        color_print(\n            \"WARNING\",\n            \"Unexpected node type {} for ast.Assign. \\\n            Please report to the author github.com/gaogaotiantian/viztracer\".format(\n                type(node)\n            ),\n        )\n        return []\n\n    def get_assign_targets_with_attr(self, node: ast.AST) -> list[ast.Attribute]:\n        \"\"\"\n        :param ast.Node node:\n        \"\"\"\n        if isinstance(node, ast.Attribute):\n            return [node]\n        elif isinstance(node, (ast.Name, ast.Subscript, ast.Starred)):\n            return []\n        elif isinstance(node, (ast.Tuple, ast.List)):\n            return reduce(\n                lambda a, b: a + b,\n                [self.get_assign_targets_with_attr(elt) for elt in node.elts],\n            )\n        color_print(\n            \"WARNING\",\n            \"Unexpected node type {} for ast.Assign. \\\n            Please report to the author github.com/gaogaotiantian/viztracer\".format(\n                type(node)\n            ),\n        )\n        return []\n\n    def get_assign_log_nodes(self, target: ast.expr) -> list[ast.stmt]:\n        \"\"\"\n        given a target of any type of Assign, return the instrumented node\n        that log this variable\n        if this target is not supposed to be logged, return []\n        \"\"\"\n        ret: list[ast.stmt] = []\n        if self.inst_type in (\"log_var\", \"log_number\"):\n            target_ids = self.get_assign_targets(target)\n            for target_id in target_ids:\n                for varname in self.inst_args[\"varnames\"]:\n                    if re.fullmatch(varname, target_id):\n                        ret.append(\n                            self.get_instrument_node(\"Variable Assign\", target_id)\n                        )\n                        break\n        elif self.inst_type == \"log_attr\":\n            target_nodes = self.get_assign_targets_with_attr(target)\n            for target_node in target_nodes:\n                for varname in self.inst_args[\"varnames\"]:\n                    if re.fullmatch(varname, target_node.attr):\n                        ret.append(\n                            self.get_instrument_node_by_node(\n                                \"Attribute Assign\", target_node\n                            )\n                        )\n                        break\n        elif self.inst_type == \"log_func_exec\":\n            if self.log_func_exec_enable:\n                target_ids = self.get_assign_targets(target)\n                for target_id in target_ids:\n                    ret.append(self.get_instrument_node(\"Variable Assign\", target_id))\n\n        return ret\n\n    def get_instrument_node(self, trigger: str, name: str) -> ast.Expr:\n        if self.inst_type in (\"log_var\", \"log_number\"):\n            if self.inst_type == \"log_var\":\n                event = \"instant\"\n            elif self.inst_type == \"log_number\":\n                event = \"counter\"\n            return self.get_add_variable_node(\n                name=f\"{trigger} - {name}\",\n                var_node=ast.Name(id=name, ctx=ast.Load()),\n                event=event,\n            )\n        elif self.inst_type == \"log_func_exec\":\n            return self.get_add_func_exec_node(\n                name=f\"{name}\",\n                val=ast.Name(id=name, ctx=ast.Load()),\n                lineno=self.curr_lineno,\n            )\n        elif self.inst_type == \"log_func_entry\":\n            return self.get_add_variable_node(\n                name=f\"{trigger} - {name}\",\n                var_node=ast.Constant(value=f\"{name} is called\"),\n                event=\"instant\",\n            )\n        else:\n            raise ValueError(f\"{name} is not supported\")\n\n    def get_instrument_node_by_node(\n        self, trigger: str, node: ast.expr | None\n    ) -> ast.Expr:\n        var_node: ast.expr\n        if node is None:\n            name = f\"{trigger}\"\n            var_node = ast.Constant(value=None)\n        else:\n            name = f\"{trigger} - {self.get_string_of_expr(node)}\"\n            var_node = self.copy_node_with_load(node)\n        return self.get_add_variable_node(\n            name=name,\n            var_node=var_node,\n            event=\"instant\",\n        )\n\n    def get_add_variable_node(\n        self, name: str, var_node: ast.expr, event: str\n    ) -> ast.Expr:\n        node_instrument = ast.Expr(\n            value=ast.Call(\n                func=ast.Attribute(\n                    value=ast.Name(id=\"__viz_tracer__\", ctx=ast.Load()),\n                    attr=\"add_variable\",\n                    ctx=ast.Load(),\n                ),\n                args=[\n                    ast.Constant(value=name),\n                    var_node,\n                    ast.Constant(value=event),\n                ],\n                keywords=[],\n            ),\n        )\n        return node_instrument\n\n    def get_add_func_exec_node(self, name: str, val: ast.AST, lineno: int) -> ast.Expr:\n        node_instrument = ast.Expr(\n            value=ast.Call(\n                func=ast.Attribute(\n                    value=ast.Name(id=\"__viz_tracer__\", ctx=ast.Load()),\n                    attr=\"add_func_exec\",\n                    ctx=ast.Load(),\n                ),\n                args=[\n                    ast.Constant(value=name),\n                    ast.Name(id=name, ctx=ast.Load()),\n                    ast.Constant(value=lineno),\n                ],\n                keywords=[],\n            ),\n        )\n        return node_instrument\n\n    def copy_node_with_load(self, node: ast.expr) -> ast.expr:\n        \"\"\"\n        copy the whole node tree but change all Store to Load\n        \"\"\"\n        new_node = copy.deepcopy(node)\n        for n in ast.walk(new_node):\n            # Fix Store to Load\n            if \"ctx\" in n._fields and isinstance(n.ctx, ast.Store):  # type: ignore\n                n.ctx = ast.Load()  # type: ignore\n        return new_node\n\n    def get_string_of_expr(self, node: ast.expr | ast.slice) -> str:\n        \"\"\"\n        Try to do \"unparse\" of the node\n        \"\"\"\n        if isinstance(node, ast.Name):\n            return node.id\n        elif isinstance(node, ast.Constant):\n            return repr(node.value)\n        elif isinstance(node, ast.Attribute):\n            return f\"{self.get_string_of_expr(node.value)}.{node.attr}\"\n        elif isinstance(node, ast.Subscript):\n            return f\"{self.get_string_of_expr(node.value)}[{self.get_string_of_expr(node.slice)}]\"\n        elif isinstance(node, ast.Call):\n            return f\"{self.get_string_of_expr(node.func)}()\"\n        elif isinstance(node, ast.Starred):\n            return f\"*{self.get_string_of_expr(node.value)}\"\n        elif isinstance(node, ast.Tuple):\n            return f\"({','.join([self.get_string_of_expr(elt) for elt in node.elts])})\"\n        elif isinstance(node, ast.List):\n            return f\"[{','.join([self.get_string_of_expr(elt) for elt in node.elts])}]\"\n        elif isinstance(node, ast.Slice):\n            lower = (\n                self.get_string_of_expr(node.lower)\n                if \"lower\" in node._fields and node.lower\n                else \"\"\n            )\n            upper = (\n                self.get_string_of_expr(node.upper)\n                if \"upper\" in node._fields and node.upper\n                else \"\"\n            )\n            step = (\n                self.get_string_of_expr(node.step)\n                if \"step\" in node._fields and node.step\n                else \"\"\n            )\n            if step:\n                return f\"{lower}:{upper}:{step}\"\n            elif upper:\n                return f\"{lower}:{upper}\"\n            else:\n                return f\"{lower}:\"\n        color_print(\n            \"WARNING\",\n            \"Unexpected node type {} for ast.Assign. \\\n            Please report to the author github.com/gaogaotiantian/viztracer\".format(\n                type(node)\n            ),\n        )\n        return \"\"\n\n\nclass SourceProcessor:\n    \"\"\"\n    Pre-process comments like #!viztracer: log_instant(\"event\")\n    \"\"\"\n\n    def process(self, source: Any):\n        if isinstance(source, bytes):\n            source = source.decode(\"utf-8\")\n        elif not isinstance(source, str):\n            return source\n\n        new_lines = []\n\n        for line in source.splitlines():\n            for pattern, transform in self.re_patterns:\n                m = pattern.match(line)\n                if m:\n                    new_lines.append(transform(self, m))\n                    break\n            else:\n                new_lines.append(line)\n\n        return \"\\n\".join(new_lines)\n\n    def line_transform(self, re_match: re.Match) -> str:\n        return f\"{re_match.group(1)}__viz_tracer__.{re_match.group(2)}\"\n\n    def line_transform_condition(self, re_match: re.Match) -> str:\n        return f\"{re_match.group(1)}if {re_match.group(3)}: __viz_tracer__.{re_match.group(2)};\"\n\n    def inline_transform(self, re_match: re.Match) -> str:\n        stmt = re_match.group(1)\n        if \"=\" in stmt:\n            val_assigned = stmt[: stmt.index(\"=\")].strip()\n            return f\"{stmt}; __viz_tracer__.log_var('{val_assigned}', ({val_assigned}))\"\n        return f\"{stmt}; __viz_tracer__.log_instant('{stmt.strip()}')\"\n\n    def inline_transform_condition(self, re_match: re.Match) -> str:\n        stmt = re_match.group(1)\n        if \"=\" in stmt:\n            val_assigned = stmt[: stmt.index(\"=\")].strip()\n            return f\"{stmt}; __viz_tracer__.log_var('{val_assigned}', ({val_assigned}), cond={re_match.group(2)})\"\n        return f\"{stmt}; __viz_tracer__.log_instant('{stmt.strip()}', cond={re_match.group(2)});\"\n\n    re_patterns = [\n        # !viztracer: log_var(\"var\", var)\n        (re.compile(r\"(\\s*)#\\s*!viztracer:\\s*(log_.*?\\(.*\\))\\s*$\"), line_transform),\n        # a = 3  # !viztracer: log\n        (re.compile(r\"(.*\\S.*)#\\s*!viztracer:\\s*log\\s*$\"), inline_transform),\n        # !viztracer: log_var(\"var\", var) if var > 3\n        (\n            re.compile(r\"(\\s*)#\\s*!viztracer:\\s*(log_.*?\\(.*\\))\\s*if\\s+(.*?)\\s*$\"),\n            line_transform_condition,\n        ),\n        # a = 3  # !viztracer: log if a != 3\n        (\n            re.compile(r\"(.*\\S.*)#\\s*!viztracer:\\s*log\\s*if\\s+(.*?)\\s*$\"),\n            inline_transform_condition,\n        ),\n    ]\n\n\nclass CodeMonkey:\n    def __init__(self, file_name: str) -> None:\n        self.file_name: str = file_name\n        self._compile: Callable = compile\n        self.source_processor: SourceProcessor | None = None\n        self.ast_transformers: list[AstTransformer] = []\n\n    def add_instrument(self, inst_type: str, inst_args: dict[str, dict]) -> None:\n        self.ast_transformers.append(AstTransformer(inst_type, inst_args))\n\n    def add_source_processor(self) -> None:\n        self.source_processor = SourceProcessor()\n\n    def compile(\n        self,\n        source,\n        filename,\n        mode,\n        flags=0,\n        dont_inherit=False,\n        optimize=-1,\n        *,\n        _feature_version=-1,\n    ):\n        if self.source_processor is not None:\n            source = self.source_processor.process(source)\n        if self.ast_transformers:\n            tree = self._compile(\n                source,\n                filename,\n                mode,\n                flags | ast.PyCF_ONLY_AST,\n                dont_inherit,\n                optimize,\n                _feature_version=_feature_version,\n            )\n            for trans in self.ast_transformers:\n                trans.visit(tree)\n                ast.fix_missing_locations(tree)\n            return self._compile(\n                tree,\n                filename,\n                mode,\n                flags,\n                dont_inherit,\n                optimize,\n                _feature_version=_feature_version,\n            )\n\n        return self._compile(\n            source,\n            filename,\n            mode,\n            flags,\n            dont_inherit,\n            optimize,\n            _feature_version=_feature_version,\n        )\n"
  },
  {
    "path": "src/viztracer/decorator.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport functools\nimport multiprocessing\nimport os\nimport time\nfrom typing import Any, Callable, TypeVar, overload\n\nfrom .viztracer import VizTracer, get_tracer\n\nR = TypeVar(\"R\")\n\n\n@overload\ndef ignore_function(\n    method: None, tracer: VizTracer | None = None\n) -> Callable[[Callable[..., R]], Callable[..., R]]:\n    pass  # pragma: no cover\n\n\n@overload\ndef ignore_function(\n    method: Callable[..., R], tracer: VizTracer | None = None\n) -> Callable[..., R]:\n    pass  # pragma: no cover\n\n\ndef ignore_function(\n    method: Callable[..., R] | None = None, tracer: VizTracer | None = None\n) -> Callable[..., R] | Callable[[Callable[..., R]], Callable[..., R]]:\n    def inner(func: Callable[..., R]) -> Callable[..., R]:\n        @functools.wraps(func)\n        def ignore_wrapper(*args, **kwargs) -> Any:\n            # We need this to keep trace a local variable\n            t = tracer\n            if not t:\n                t = get_tracer()\n                if not t:\n                    raise NameError(\"ignore_function only works with global tracer\")\n            t.pause()\n            ret = func(*args, **kwargs)\n            t.resume()\n            return ret\n\n        return ignore_wrapper\n\n    if method:\n        return inner(method)\n    return inner\n\n\n@overload\ndef trace_and_save(\n    method: None, output_dir: str = \"./\", **viztracer_kwargs\n) -> Callable[[Callable[..., R]], Callable[..., R]]:\n    pass  # pragma: no cover\n\n\n@overload\ndef trace_and_save(\n    method: Callable[..., R], output_dir: str = \"./\", **viztracer_kwargs\n) -> Callable[..., R]:\n    pass  # pragma: no cover\n\n\ndef trace_and_save(\n    method: Callable[..., R] | None = None, output_dir: str = \"./\", **viztracer_kwargs\n) -> Callable[..., R] | Callable[[Callable[..., R]], Callable[..., R]]:\n    def inner(func: Callable[..., R]) -> Callable[..., R]:\n        @functools.wraps(func)\n        def wrapper(*args, **kwargs) -> Any:\n            tracer = VizTracer(**viztracer_kwargs)\n            tracer.start()\n            ret = func(*args, **kwargs)\n            tracer.stop()\n            if not os.path.exists(output_dir):\n                os.mkdir(output_dir)\n            file_name = os.path.join(\n                output_dir, f\"result_{func.__name__}_{int(100000 * time.time())}.json\"\n            )\n            if (\n                multiprocessing.get_start_method() == \"fork\"\n                and not multiprocessing.current_process().daemon\n            ):\n                tracer.fork_save(file_name)\n            else:\n                tracer.save(file_name)\n            tracer.clear()\n            return ret\n\n        return wrapper\n\n    if method:\n        return inner(method)\n    return inner\n\n\ndef _log_sparse_wrapper(\n    func: Callable, stack_depth: int = 0, dynamic_tracer_check: bool = False\n) -> Callable:\n    if not dynamic_tracer_check:\n        tracer = get_tracer()\n        if tracer is None or not tracer.log_sparse:\n            return func\n\n    @functools.wraps(func)\n    def wrapper(*args, **kwargs) -> Any:\n        local_tracer = get_tracer() if dynamic_tracer_check else tracer\n\n        if local_tracer is None:\n            return func(*args, **kwargs)\n        assert isinstance(local_tracer, VizTracer)\n\n        if local_tracer.log_sparse and not local_tracer.enable:\n            if stack_depth > 0:\n                orig_max_stack_depth = local_tracer.max_stack_depth\n                local_tracer.max_stack_depth = stack_depth\n                local_tracer.log_sparse = False\n                local_tracer.start()\n                ret = func(*args, **kwargs)\n                local_tracer.stop()\n                local_tracer.log_sparse = True\n                local_tracer.max_stack_depth = orig_max_stack_depth\n                return ret\n            else:\n                start = local_tracer.getts()\n                ret = func(*args, **kwargs)\n                dur = local_tracer.getts() - start\n                code = func.__code__\n                raw_data = {\n                    \"ph\": \"X\",\n                    \"name\": f\"{code.co_name} ({code.co_filename}:{code.co_firstlineno})\",\n                    \"ts\": start,\n                    \"dur\": dur,\n                    \"cat\": \"FEE\",\n                }\n                local_tracer.add_raw(raw_data)\n                return ret\n        elif local_tracer.enable and not local_tracer.log_sparse:\n            # The call is made from the module inside, so if `trace_self=False` it will be ignored.\n            # To avoid this behavior, we need to reset the counter `ignore_stack_depth`` and then\n            # recover it\n            return local_tracer.shield_ignore(func, *args, **kwargs)\n        else:\n            return func(*args, **kwargs)\n\n    return wrapper\n\n\n@overload\ndef log_sparse(\n    func: None, stack_depth: int = 0, dynamic_tracer_check: bool = False\n) -> Callable[[Callable[..., R]], Callable[..., R]]:\n    pass  # pragma: no cover\n\n\n@overload\ndef log_sparse(\n    func: Callable[..., R], stack_depth: int = 0, dynamic_tracer_check: bool = False\n) -> Callable[..., R]:\n    pass  # pragma: no cover\n\n\ndef log_sparse(\n    func: Callable[..., R] | None = None,\n    stack_depth: int = 0,\n    dynamic_tracer_check: bool = False,\n) -> Callable[..., R] | Callable[[Callable[..., R]], Callable[..., R]]:\n    if func is None:\n        return functools.partial(\n            _log_sparse_wrapper,\n            stack_depth=stack_depth,\n            dynamic_tracer_check=dynamic_tracer_check,\n        )\n    return _log_sparse_wrapper(\n        func=func, stack_depth=stack_depth, dynamic_tracer_check=dynamic_tracer_check\n    )\n"
  },
  {
    "path": "src/viztracer/event_base.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport functools\nfrom typing import Any, Callable, Literal\n\nfrom .viztracer import VizTracer\n\n\nclass _EventBase:\n    def __init__(self, tracer: VizTracer, name: str = \"\", **kwargs) -> None:\n        self._viztracer_tracer: VizTracer = tracer\n        self._viztracer_name: str = name\n        self._viztracer_enable: bool = False\n        self._viztracer_config: dict = {\n            \"trigger_on_change\": True,\n            \"include_attributes\": [],\n            \"exclude_attributes\": [],\n        }\n\n        for key in kwargs:\n            if key in self._viztracer_config:\n                self._viztracer_config[key] = kwargs[key]\n\n        self._viztracer_enable = True\n\n    def __setattr__(self, name: str, value: Any) -> None:\n        self.__dict__[name] = value\n        if not name.startswith(\"_\"):\n            if self._viztracer_enable and self._viztracer_config[\"trigger_on_change\"]:\n                if self._viztracer_config[\"include_attributes\"]:\n                    if name in self._viztracer_config[\"include_attributes\"]:\n                        self._viztracer_log()\n                elif self._viztracer_config[\"exclude_attributes\"]:\n                    if name not in self._viztracer_config[\"exclude_attributes\"]:\n                        self._viztracer_log()\n                else:\n                    self._viztracer_log()\n\n    def _viztracer_get_attr_list(self) -> list[str]:\n        if self._viztracer_config[\"include_attributes\"]:\n            return self._viztracer_config[\"include_attributes\"]\n        else:\n            return [\n                attr\n                for attr in self.__dir__()\n                if not attr.startswith(\"_\")\n                and attr not in self._viztracer_config[\"exclude_attributes\"]\n            ]\n\n    def _viztracer_set_config(self, key: str, value: Any) -> None:\n        if key not in self._viztracer_config:\n            raise ValueError(f\"No config named {key}\")\n        self._viztracer_config[key] = value\n\n    def config(self, key: str, value: Any) -> None:\n        self._viztracer_set_config(key, value)\n\n    def _viztracer_log(self) -> None:\n        raise NotImplementedError(\"You should not use _EventBase class directly\")\n\n    def log(self) -> None:\n        self._viztracer_log()\n\n    @staticmethod\n    def triggerlog(\n        method: Callable | None = None,\n        when: Literal[\"after\", \"before\", \"both\"] = \"after\",\n    ) -> Callable:\n        if when not in [\"after\", \"before\", \"both\"]:\n            raise ValueError(\n                f\"when has to be one of 'after', 'before' or 'both', not {when}\"\n            )\n\n        def inner(func: Callable) -> Callable:\n            @functools.wraps(func)\n            def wrapper(self, *args, **kwargs) -> Any:\n                if when in (\"before\", \"both\"):\n                    self._viztracer_log()\n                ret = func(self, *args, **kwargs)\n                if when in (\"after\", \"both\"):\n                    self._viztracer_log()\n                return ret\n\n            return wrapper\n\n        if method:\n            return inner(method)\n        return inner\n"
  },
  {
    "path": "src/viztracer/functree.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport bisect\nimport copy\nimport re\nfrom typing import Any, Generator\n\n\nclass FuncTreeNode:\n    name_regex = r\"(.*) \\((.*?):([0-9]+)\\)\"\n\n    def __init__(self, event: dict[str, Any] | None = None) -> None:\n        self.filename: str | None = None\n        self.lineno: int | None = None\n        self.is_python: bool | None = False\n        self.funcname: str | None = None\n        self.parent: FuncTreeNode | None = None\n        self.children: list[FuncTreeNode] = []\n        self.start: float = -(2**64)\n        self.end: float = 2**64\n        self.event: dict[str, Any] = {}\n        if event is None:\n            self.event = {\"name\": \"__ROOT__\"}\n            self.fullname = \"__ROOT__\"\n        else:\n            self.event = copy.copy(event)\n            self.start = self.event[\"ts\"]\n            self.end = self.event[\"ts\"] + self.event[\"dur\"]\n            self.fullname = self.event[\"name\"]\n            m = re.match(self.name_regex, self.fullname)\n            if m:\n                self.is_python = True\n                self.funcname = m.group(1)\n                self.filename = m.group(2)\n                self.lineno = int(m.group(3))\n\n    def is_ancestor(self, other: \"FuncTreeNode\") -> bool:\n        return self.start < other.start and self.end > other.end\n\n    def is_same(self, other: \"FuncTreeNode\") -> bool:\n        return (\n            self.fullname == other.fullname\n            and len(self.children) == len(other.children)\n            and all(t[0].is_same(t[1]) for t in zip(self.children, other.children))\n        )\n\n    def adopt(self, other: \"FuncTreeNode\") -> None:\n        new_children = []\n        if self.is_ancestor(other):\n            # Build a list is slow\n            # In almost all cases, end_idx should be the last, because that's\n            # how we record entries.\n            # In many cases, if two entries are siblings, start_idx is the\n            # last too.\n            # Try to skip building the list by checking these common situations\n            # first.\n            if not self.children:\n                # if it's empty, then both indexes are 0\n                start_idx = end_idx = 0\n            else:\n                if other.start > self.children[-1].start:\n                    start_idx = len(self.children)\n                elif other.start < self.children[0].start:\n                    start_idx = 0\n                else:\n                    start_array = [n.start for n in self.children]\n                    start_idx = bisect.bisect(start_array, other.start)\n                if other.end > self.children[-1].end:\n                    end_idx = len(self.children)\n                else:\n                    end_array = [n.end for n in self.children]\n                    end_idx = bisect.bisect(end_array, other.end)\n            if start_idx == end_idx + 1:\n                self.children[end_idx].adopt(other)\n            elif start_idx == end_idx:\n                other.parent = self\n                self.children.insert(start_idx, other)\n            elif start_idx < end_idx:\n\n                def change_parent(node):\n                    node.parent = other\n\n                new_children = self.children[start_idx:end_idx]\n                # force map to run\n                list(map(change_parent, new_children))\n                other.children = new_children\n                other.parent = self\n                self.children = (\n                    self.children[:start_idx] + [other] + self.children[end_idx:]\n                )\n            else:  # pragma: no cover\n                raise Exception(\"This should not be possible\")\n        elif self.parent is not None:\n            self.parent.adopt(other)\n        else:  # pragma: no cover\n            raise Exception(\"This should not be possible\")\n\n\nclass FuncTree:  # pragma: no cover\n    def __init__(self, pid: int = 0, tid: int = 0) -> None:\n        self.root: FuncTreeNode = FuncTreeNode()\n        self.curr: FuncTreeNode = self.root\n        self.pid: int = pid\n        self.tid: int = tid\n\n    def is_same(self, other: \"FuncTree\") -> bool:\n        return self.root.is_same(other.root)\n\n    def add_event(self, event: dict[str, Any]) -> None:\n        node = FuncTreeNode(event)\n\n        self.curr.adopt(node)\n        self.curr = node\n\n    def first_ts(self) -> float:\n        return self.root.children[0].event[\"ts\"]\n\n    def first_node(self) -> FuncTreeNode:\n        return self.root.children[0]\n\n    def node_by_timestamp(self, ts: float) -> FuncTreeNode:\n        starts = [node.start for node in self.root.children]\n        idx = bisect.bisect(starts, ts)\n        if idx == 0:\n            return self.root.children[0]\n        else:\n            return self.root.children[idx - 1]\n\n    def normalize(self, first_ts: float) -> None:\n        for node in self.inorder_traverse():\n            node.start -= first_ts\n            node.end -= first_ts\n\n    def inorder_traverse(self) -> Generator[FuncTreeNode, None, None]:\n        lst = [self.root]\n        while lst:\n            ret = lst.pop()\n            lst.extend(ret.children[::-1])\n            yield ret\n        return\n"
  },
  {
    "path": "src/viztracer/html/LICENSE",
    "content": "// Copyright (c) 2012 The Chromium Authors. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n//    * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n//    * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n//    * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  },
  {
    "path": "src/viztracer/html/README.md",
    "content": "trace_viewer_embedder.html and trace_viewer_full.html are derived from\nhttps://github.com/catapult-project/catapult/"
  },
  {
    "path": "src/viztracer/html/flamegraph.html",
    "content": "<head>\n  <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/d3-flame-graph@3.1.1/dist/d3-flamegraph.css\">\n  <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css\" integrity=\"sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z\" crossorigin=\"anonymous\">\n</head>\n<body>\n  <div id=\"chart\" class=\"container text-center\"></div>\n  <script src=\"https://code.jquery.com/jquery-3.5.1.slim.min.js\" integrity=\"sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj\" crossorigin=\"anonymous\"></script>\n  <script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js\" integrity=\"sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV\" crossorigin=\"anonymous\"></script>\n  <script type=\"text/javascript\" src=\"https://d3js.org/d3.v4.min.js\"></script>\n  <script type=\"text/javascript\" src=\"https://cdn.jsdelivr.net/npm/d3-flame-graph@3.1.1/dist/d3-flamegraph.min.js\"></script>\n  <script type=\"text/javascript\">\n  var data = $data;\n\n  var charts = [];\n  for (var thread in data) {\n    var chart = flamegraph()\n      .width(1000)\n      .title(thread)\n      .minFrameSize(5)\n      .resetHeightOnZoom(true)\n      .setColorMapper((d, originalColor) =>\n        d.highlight ? \"#6aff8f\" : originalColor)\n      .label(function(d) {\n        return \"name: \" + d.data.name + \" time: \" + d.data.value.toString() + \" ns\"\n      });\n    var div = document.createElement(\"div\");\n    div.setAttribute(\"id\", thread);\n    document.getElementById(\"chart\").appendChild(div);\n    d3.select(\"#\" + thread)\n      .datum(data[thread])\n      .call(chart);\n  }\n  </script>\n</body>"
  },
  {
    "path": "src/viztracer/html/trace_viewer_embedder.html",
    "content": "<!DOCTYPE html>\n<!--\nCopyright (c) 2014 The Chromium Authors. All rights reserved.\nUse of this source code is governed by a BSD-style license that can be\nfound in the LICENSE file.\nOriginal LICENSE file: \nhttps://github.com/catapult-project/catapult/blob/master/tracing/LICENSE\n-->\n<head>\n<!-- WebComponent V0 polyfill. You may want to host this in a more suitable\n     place. See https://crbug.com/1036492 -->\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/0.7.24/webcomponents.min.js\"></script>\n\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/components/prism-core.min.js\" integrity=\"sha512-hqRrGU7ys5tkcqxx5FIZTBb7PkO2o3mU6U5+qB9b55kgMlBUT4J2wPwQfMCxeJW1fC8pBxuatxoH//z0FInhrA==\" crossorigin=\"anonymous\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/components/prism-python.min.js\" integrity=\"sha512-EXseTM1JV8e3AonU5PfOUmzbPkUTRm4c4hVxv206gVeWZE/FwzSQBNWrUBaHsN3Idq9k76BEjUlXpluX1UFx6Q==\" crossorigin=\"anonymous\"></script>\n<script>\n'use strict';\n\nfunction onTraceViewerImportFail() {\n  document.addEventListener('DOMContentLoaded', function() {\n    document.body.textContent =\n        'tracing/bin/trace_viewer_full.html is missing. ' +\n        'Run vulcanize_trace_viewer from $$TRACE_VIEWER and reload.';\n  });\n}\n</script>\n<!-- <link rel=\"import\" href=\"trace_viewer_full.html\"\n      onerror=\"onTraceViewerImportFail(event)\"> -->\n\n$trace_viewer_full\n\n\n<style>\n  html, body {\n    box-sizing: border-box;\n    overflow: hidden;\n    margin: 0px;\n    padding: 0;\n    width: 100%;\n    height: 100%;\n  }\n  #trace-viewer {\n    width: 100%;\n    height: 100%;\n  }\n  #trace-viewer:focus {\n    outline: none;\n  }\n</style>\n<script>\n'use strict';\n\nvar json_data;\n(function() {\n  let viewer;\n  let url;\n  let model;\n\n  // You can set this to true if you want to hide the WebComponentsV0 polyfill\n  // warning.\n  window.__hideTraceViewerPolyfillWarning = true;\n  json_data = $json_data\n\n  function load() {\n    const req = new XMLHttpRequest();\n    const isBinary = /[.]gz$$/.test(url) || /[.]zip$$/.test(url);\n    req.overrideMimeType('text/plain; charset=x-user-defined');\n    req.open('GET', url, true);\n    if (isBinary) req.responseType = 'arraybuffer';\n\n    req.onreadystatechange = function(event) {\n      if (req.readyState !== 4) return;\n\n      window.setTimeout(function() {\n        if (req.status === 200) {\n          onResult(isBinary ? req.response : req.responseText);\n        } else {\n          onResultFail(req.status);\n        }\n      }, 0);\n    };\n    req.send(null);\n  }\n\n  function onResultFail(err) {\n    const overlay = new tr.ui.b.Overlay();\n    overlay.textContent = err + ': ' + url + ' could not be loaded';\n    overlay.title = 'Failed to fetch data';\n    overlay.visible = true;\n  }\n\n  function onResult(result) {\n    model = new tr.Model();\n    const i = new tr.importer.Import(model);\n    const p = i.importTracesWithProgressDialog([result]);\n    p.then(onModelLoaded, onImportFail);\n  }\n\n  function onModelLoaded() {\n    viewer.model = model;\n    viewer.viewTitle = url;\n  }\n\n  function onImportFail(err) {\n    const overlay = new tr.ui.b.Overlay();\n    overlay.textContent = tr.b.normalizeException(err).message;\n    overlay.title = 'Import error';\n    overlay.visible = true;\n  }\n\n  document.addEventListener('WebComponentsReady', function() {\n    const container = document.createElement('track-view-container');\n    container.id = 'track_view_container';\n\n    viewer = document.createElement('tr-ui-timeline-view');\n    viewer.track_view_container = container;\n    Polymer.dom(viewer).appendChild(container);\n\n    viewer.id = 'trace-viewer';\n    viewer.globalMode = true;\n    Polymer.dom(document.body).appendChild(viewer);\n\n    //url = '../test_data/big_trace.json';\n    //load();\n    model = new tr.Model();\n    const i = new tr.importer.Import(model);\n    const p = i.importTracesWithProgressDialog([json_data]);\n    p.then(onModelLoaded, onImportFail);\n  });\n\n}());\n\nfunction updateCodeSection() {\n  try {\n    var viewer = document.getElementById(\"trace-viewer\");\n    if (viewer.shadowRoot) {\n      var tabRoot = viewer.shadowRoot\n                          .getElementById(\"analysis\")\n                          .getElementsByTagName(\"tr-ui-b-tab-view\")[0]\n                          .shadowRoot\n      var threadRoot = tabRoot.getElementById(\"subView\")\n                              .getElementsByTagName(\"tr-ui-a-single-thread-slice-sub-view\")[0]\n                              .shadowRoot;\n      var table = threadRoot.getElementById(\"content\")\n                            .shadowRoot\n                            .getElementById(\"table\")\n      var codeViewNode = threadRoot.getElementById(\"codeView\");\n      var codeNode = threadRoot.getElementById(\"code-viewer\");\n\n      var funcName = table.tableRows_[0].value.textContent;\n    } else {\n      var codeViewNode = document.getElementById(\"codeView\");\n      var codeNode = document.getElementById(\"code-viewer\");\n      var funcName = document.getElementById(\"table\").tableRows_[0].value.textContent.split(\"\\n\")[0];\n    }\n\n    resizeCodeSection();\n\n    codeNode.innerHTML = \"Unable to locate the source code\";\n    var file_data = json_data[\"file_info\"][\"functions\"][funcName];\n    if (file_data) {\n      var file_name = file_data[0];\n      var lineno = file_data[1];\n      var raw_code = json_data[\"file_info\"][\"files\"][file_name][0];\n      var total_lineno = json_data[\"file_info\"][\"files\"][file_name][1];\n      codeNode.innerHTML = raw_code;\n      Prism.highlightAll()\n      setTimeout(() => {\n        var portion = 5 + codeNode.offsetHeight * (lineno-1) / total_lineno;\n        codeViewNode.scrollTo(0, portion);\n      }, 100);\n    }\n  } catch (error) {\n  }\n}\n\nfunction resizeCodeSection() {\n  try {\n    var viewer = document.getElementById(\"trace-viewer\");\n    if (viewer.shadowRoot) {\n      var tabRoot = viewer.shadowRoot\n                          .getElementById(\"analysis\")\n                          .getElementsByTagName(\"tr-ui-b-tab-view\")[0]\n                          .shadowRoot\n      var threadRoot = tabRoot.getElementById(\"subView\")\n                              .getElementsByTagName(\"tr-ui-a-single-thread-slice-sub-view\")[0]\n                              .shadowRoot;\n  \n      var height = viewer.shadowRoot.getElementById(\"analysis\").offsetHeight - tabRoot.getElementById(\"tabs\").offsetHeight - 7;\n      threadRoot.getElementById(\"codeView\").style.height = height.toString() + \"px\";\n    } else {\n      var height = document.getElementById(\"analysis\").offsetHeight - document.getElementById(\"tabs\").offsetHeight - 7;\n      document.getElementById(\"codeView\").style.height = height.toString() + \"px\";\n    }\n  } catch (error) {\n  }\n}\n\n</script>\n</head>\n<body>\n</body>\n</html>\n"
  },
  {
    "path": "src/viztracer/html/trace_viewer_full.html",
    "content": "<!DOCTYPE html>\n<!--\nCopyright (c) 2014 The Chromium Authors. All rights reserved.\nUse of this source code is governed by a BSD-style license that can be\nfound in the LICENSE file.\nOriginal LICENSE file:\nhttps://github.com/catapult-project/catapult/blob/master/tracing/LICENSE\n-->\n<html>\n  <head i18n-values=\"dir:textdirection;\">\n  <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">\n  <meta http-equiv=\"origin-trial\" content=\"AnYuQDtUf6OrWCmR9Okd67JhWVTbmnRedvPi1TEvAxac8+1p6o9q08FoDO6oCbLD0xEqev+SkZFiIhFSzlY9HgUAAABxeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjA0NjE0NTM4LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=\">\n  <meta http-equiv=\"origin-trial\" content=\"AkFXw3wHnOs/XXYqFXpc3diDLrRFd9PTgGs/gs43haZmngI/u1g8L4bDnSKLZkB6fecjmjTwcAMQFCpWMAoHSQEAAAB8eyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==\">\n  <meta http-equiv=\"origin-trial\" content=\"AtQY4wpX9+nj+Vn27cTgygzIPbtB2WoAoMQR5jK9mCm/H2gRIDH6MmGVAaziv9XnYTDKjhBnQYtecbTiIHCQiAIAAACEeyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLXN0YWdpbmcuYXBwc3BvdC5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OSwiaXNTdWJkb21haW4iOnRydWV9\">\n<template id=\"overlay-template\">\n  <style>\n    overlay-mask {\n      left: 0;\n      padding: 8px;\n      position: absolute;\n      top: 0;\n      z-index: 1000;\n      font-family: sans-serif;\n      -webkit-justify-content: center;\n      background: rgba(0, 0, 0, 0.8);\n      display: flex;\n      height: 100%;\n      left: 0;\n      position: fixed;\n      top: 0;\n      width: 100%;\n    }\n    overlay-mask:focus {\n      outline: none;\n    }\n    overlay-vertical-centering-container {\n      -webkit-justify-content: center;\n      flex-direction: column;\n      display: flex;\n    }\n    overlay-frame {\n      z-index: 1100;\n      background: rgb(255, 255, 255);\n      border: 1px solid #ccc;\n      margin: 75px;\n      display: flex;\n      flex-direction: column;\n      min-height: 0;\n    }\n    title-bar {\n      -webkit-align-items: center;\n      flex-direction: row;\n      border-bottom: 1px solid #ccc;\n      background-color: #ddd;\n      display: flex;\n      padding: 5px;\n      flex: 0 0 auto;\n    }\n    title {\n      display: inline;\n      font-weight: bold;\n      flex: 1 1 auto;\n    }\n    close-button {\n      -webkit-align-self: flex-end;\n      border: 1px solid #eee;\n      background-color: #999;\n      font-size: 10pt;\n      font-weight: bold;\n      padding: 2px;\n      text-align: center;\n      width: 16px;\n    }\n    close-button:hover {\n      background-color: #ddd;\n      border-color: black;\n      cursor: pointer;\n    }\n    overlay-content {\n      display: flex;\n      flex: 1 1 auto;\n      flex-direction: column;\n      overflow-y: auto;\n      padding: 10px;\n      min-width: 300px;\n      min-height: 0;\n    }\n    button-bar {\n      -webkit-align-items: baseline;\n      border-top: 1px solid #ccc;\n      display: flex;\n      flex: 0 0 auto;\n      flex-direction: row-reverse;\n      padding: 4px;\n    }\n  </style>\n\n  <overlay-mask>\n    <overlay-vertical-centering-container>\n      <overlay-frame>\n        <title-bar>\n          <title></title>\n          <close-button>✕</close-button>\n        </title-bar>\n        <overlay-content>\n          <content></content>\n        </overlay-content>\n        <button-bar></button-bar>\n      </overlay-frame>\n    </overlay-vertical-centering-container>\n  </overlay-mask>\n</template><dom-module id=\"tr-ui-a-analysis-link\">\n  <template>\n    <style>\n    :host {\n      display: inline;\n      cursor: pointer;\n      cursor: pointer;\n      white-space: nowrap;\n    }\n    a {\n      text-decoration: underline;\n    }\n    </style>\n    <a href=\"{{href}}\" on-click=\"onClicked_\" on-mouseenter=\"onMouseEnter_\" on-mouseleave=\"onMouseLeave_\"><slot></slot></a>\n\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-table\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      table {\n        flex: 1 1 auto;\n        align-self: stretch;\n        border-collapse: separate;\n        border-spacing: 0;\n        border-width: 0;\n        -webkit-user-select: initial;\n      }\n\n      tr > td {\n        padding: 2px 4px 2px 4px;\n        vertical-align: top;\n      }\n\n      table > tbody:focus {\n        outline: none;\n      }\n      table > tbody:focus[selection-mode=\"row\"] > tr[selected],\n      table > tbody:focus[selection-mode=\"cell\"] > tr > td[selected],\n      table > tbody:focus > tr.empty-row > td {\n        outline: 1px dotted #666666;\n        outline-offset: -1px;\n      }\n\n      button.toggle-button {\n        height: 15px;\n        line-height: 60%;\n        vertical-align: middle;\n        width: 100%;\n      }\n\n      button > * {\n        height: 15px;\n        vertical-align: middle;\n      }\n\n      td.button-column {\n        width: 30px;\n      }\n\n      table > thead > tr > td.sensitive:hover {\n        background-color: #fcfcfc;\n      }\n\n      table > thead > tr > td {\n        font-weight: bold;\n        text-align: left;\n\n        background-color: #eee;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n\n        border-top: 1px solid #ffffff;\n        border-bottom: 1px solid #aaa;\n      }\n\n      table > tfoot {\n        background-color: #eee;\n        font-weight: bold;\n      }\n\n      /* Light row and cell highlight. */\n      table > tbody[row-highlight-style=\"light\"] > tr[selected],\n      table > tbody[cell-highlight-style=\"light\"] > tr > td[selected] {\n        background-color: rgb(213, 236, 229);  /* light turquoise */\n      }\n      table > tbody[row-highlight-style=\"light\"] >\n          tr:not(.empty-row):not([selected]):hover,\n      table > tbody[cell-highlight-style=\"light\"] >\n          tr:not(.empty-row):not([selected]) > td:hover {\n        background-color: #f6f6f6;  /* light grey */\n      }\n\n      /* Dark row and cell highlight. */\n      table > tbody[row-highlight-style=\"dark\"] > tr[selected],\n      table > tbody[cell-highlight-style=\"dark\"] > tr > td[selected] {\n        background-color: rgb(103, 199, 165);  /* turquoise */\n      }\n      table > tbody[row-highlight-style=\"dark\"] >\n          tr:not(.empty-row):not([selected]):hover,\n      table > tbody[cell-highlight-style=\"dark\"] >\n          tr:not(.empty-row):not([selected]) > td:hover {\n        background-color: #e6e6e6;  /* grey */\n      }\n      table > tbody[row-highlight-style=\"dark\"] > tr:hover[selected],\n      table > tbody[cell-highlight-style=\"dark\"] > tr[selected] > td:hover {\n        background-color: rgb(171, 217, 202);  /* semi-light turquoise */\n      }\n\n      table > colgroup > col[selected] {\n        background-color: #e6e6e6;  /* grey */\n      }\n\n      table > tbody > tr.empty-row > td {\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      table > tbody.has-footer > tr:last-child > td {\n        border-bottom: 1px solid #aaa;\n      }\n\n      table > tfoot > tr:first-child > td {\n        border-top: 1px solid #ffffff;\n      }\n\n      :host([zebra]) table tbody tr:nth-child(even) {\n        background-color: #f4f4f4;\n      }\n\n      expand-button {\n        -webkit-user-select: none;\n        cursor: pointer;\n        margin-right: 3px;\n        font-size: smaller;\n        height: 1rem;\n      }\n\n      expand-button.button-expanded {\n        transform: rotate(90deg);\n      }\n    </style>\n    <table>\n      <colgroup id=\"cols\">\n      </colgroup>\n      <thead id=\"head\">\n      </thead>\n      <tbody id=\"body\">\n      </tbody>\n      <tfoot id=\"foot\">\n      </tfoot>\n    </table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-table-header-cell\">\n  <template>\n  <style>\n    :host {\n      -webkit-user-select: none;\n      display: flex;\n    }\n\n    span {\n      flex: 0 1 auto;\n    }\n\n    #side {\n      -webkit-user-select: none;\n      flex: 0 0 auto;\n      padding-left: 2px;\n      padding-right: 2px;\n      vertical-align: top;\n      font-size: 15px;\n      font-family: sans-serif;\n      line-height: 85%;\n      margin-left: 5px;\n    }\n\n    #side.disabled {\n      color: rgb(140, 140, 140);\n    }\n\n    #title:empty, #side:empty {\n      display: none;\n    }\n  </style>\n\n    <span id=\"title\"></span>\n    <span id=\"side\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-context-controller\">\n  <template></template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-span\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n      justify-content: flex-end;\n      position: relative;\n      /* Limit the sparkline's negative z-index to the span only. */\n      isolation: isolate;\n    }\n\n    :host(.left-align) {\n      justify-content: flex-start;\n    }\n\n    :host(.inline) {\n      display: inline-flex;\n    }\n\n    #sparkline {\n      width: 0%;\n      position: absolute;\n      bottom: 0;\n      display: none;\n      height: 100%;\n      background-color: hsla(216, 100%, 94.5%, .75);\n      border-color: hsl(216, 100%, 89%);\n      box-sizing: border-box;\n      z-index: -1;\n    }\n    #sparkline.positive {\n      border-right-style: solid;\n      /* The border width must be kept in sync with buildSparklineStyle_(). */\n      border-right-width: 1px;\n    }\n    #sparkline:not(.positive) {\n      border-left-style: solid;\n      /* The border width must be kept in sync with buildSparklineStyle_(). */\n      border-left-width: 1px;\n    }\n    #sparkline.better {\n      background-color: hsla(115, 100%, 93%, .75);\n      border-color: hsl(118, 60%, 80%);\n    }\n    #sparkline.worse {\n      background-color: hsla(0, 100%, 88%, .75);\n      border-color: hsl(0, 100%, 80%);\n    }\n\n    #content {\n      white-space: nowrap;\n    }\n    #content, #significance, #warning {\n      flex-grow: 0;\n    }\n    #content.better {\n      color: green;\n    }\n    #content.worse {\n      color: red;\n    }\n\n    #significance svg {\n      margin-left: 4px;\n      display: none;\n      height: 1em;\n      vertical-align: text-top;\n      stroke-width: 4;\n      fill: rgba(0, 0, 0, 0);\n    }\n    #significance #insignificant {\n      stroke: black;\n    }\n    #significance #significantly_better {\n      stroke: green;\n    }\n    #significance #significantly_worse {\n      stroke: red;\n    }\n\n    #warning {\n      display: none;\n      margin-left: 4px;\n      height: 1em;\n      vertical-align: text-top;\n      stroke-width: 0;\n    }\n    #warning path {\n      fill: rgb(255, 185, 185);\n    }\n    #warning rect {\n      fill: red;\n    }\n    </style>\n\n    <span id=\"sparkline\"></span>\n\n    <span id=\"content\"></span>\n\n    <span id=\"significance\">\n      \n      <svg id=\"insignificant\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <line x1=\"36\" x2=\"92\" y1=\"80\" y2=\"80\"></line>\n      </svg>\n\n      \n      <svg id=\"significantly_better\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <path d=\"M 28 64 Q 64 128 100 64\"></path>\n      </svg>\n\n      \n      <svg id=\"significantly_worse\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <path d=\"M 36 96 Q 64 48 92 96\"></path>\n      </svg>\n    </span>\n\n    <svg id=\"warning\" viewBox=\"0 0 128 128\">\n      <path d=\"M 64 0 L 128 128 L 0 128 L 64 0\"></path>\n      <rect height=\"84\" width=\"8\" x=\"60\" y=\"0\"></rect>\n      <rect height=\"24\" width=\"8\" x=\"60\" y=\"100\"></rect>\n    </svg>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-generic-object-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      font-family: monospace;\n    }\n    </style>\n    <div id=\"content\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-generic-object-view-with-label\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-drag-handle\">\n  <template>\n    <style>\n    :host {\n      -webkit-user-select: none;\n      box-sizing: border-box;\n      display: block;\n    }\n\n    :host(.horizontal-drag-handle) {\n      background-image: -webkit-gradient(linear,\n                                         0 0, 0 100%,\n                                         from(#E5E5E5),\n                                         to(#D1D1D1));\n      border-bottom: 1px solid #8e8e8e;\n      border-top: 1px solid white;\n      cursor: ns-resize;\n      flex: 0 0 auto;\n      height: 7px;\n      position: relative;\n    }\n\n    :host(.vertical-drag-handle) {\n      background-image: -webkit-gradient(linear,\n                                         0 0, 100% 0,\n                                         from(#E5E5E5),\n                                         to(#D1D1D1));\n      border-left: 1px solid white;\n      border-right: 1px solid #8e8e8e;\n      cursor: ew-resize;\n      flex: 0 0 auto;\n      position: relative;\n      width: 7px;\n    }\n    </style>\n    <div></div>\n  </template>\n</dom-module><dom-module id=\"tv-ui-b-hotkey-controller\">\n  <template>\n    <div></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-info-bar\">\n  <template>\n    <style>\n    :host {\n      align-items: center;\n      flex: 0 0 auto;\n      background-color: rgb(252, 235, 162);\n      border-bottom: 1px solid #A3A3A3;\n      border-left: 1px solid white;\n      border-right: 1px solid #A3A3A3;\n      border-top: 1px solid white;\n      display: flex;\n      min-height: 26px;\n      padding: 0 3px 0 3px;\n    }\n\n    :host([hidden]) {\n      display: none !important;\n    }\n\n    #message { flex: 1 1 auto; }\n    </style>\n\n    <span id=\"message\"></span>\n    <span id=\"buttons\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-mouse-mode-icon\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=);\n      width: 27px;\n      height: 30px;\n    }\n    :host.active {\n      cursor: auto;\n    }\n    </style>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-mouse-mode-selector\">\n  <template>\n    <style>\n    :host {\n\n      -webkit-user-drag: element;\n      -webkit-user-select: none;\n\n      background: #DDD;\n      border: 1px solid #BBB;\n      border-radius: 4px;\n      box-shadow: 0 1px 2px rgba(0,0,0,0.2);\n      left: calc(100% - 120px);\n      position: absolute;\n      top: 100px;\n      user-select: none;\n      width: 29px;\n      z-index: 20;\n    }\n\n    .drag-handle {\n      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=) 2px 3px no-repeat;\n      background-repeat: no-repeat;\n      border-bottom: 1px solid #BCBCBC;\n      cursor: move;\n      display: block;\n      height: 13px;\n      width: 27px;\n    }\n\n    .tool-button {\n      background-position: center center;\n      background-repeat: no-repeat;\n      border-bottom: 1px solid #BCBCBC;\n      border-top: 1px solid #F1F1F1;\n      cursor: pointer;\n    }\n\n    .buttons > .tool-button:last-child {\n      border-bottom: none;\n    }\n\n    </style>\n    <div class=\"drag-handle\"></div>\n    <div class=\"buttons\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-chrome-cc-display-item-list-item\">\n  <template>\n    <style>\n      :host {\n        border-bottom: 1px solid #555;\n        display: block;\n        font-size: 12px;\n        padding: 3px 5px;\n      }\n\n      :host(:hover) {\n        background-color: #f0f0f0;\n        cursor: pointer;\n      }\n\n      .header {\n        font-weight: bold;\n        margin: 2px 0;\n      }\n\n      .header > .extra {\n        background-color: #777;\n        border-radius: 4px;\n        color: white;\n        margin: 0 6px;\n        text-decoration: none;\n        padding: 2px 4px;\n      }\n\n      .raw-details {\n        white-space: pre-wrap;\n      }\n\n      .details > dl {\n        margin: 0;\n      }\n\n      :host(:not([selected])) .details {\n        display: none;\n      }\n    </style>\n    <div class=\"header\">\n      {{name}}\n      <template if=\"{{_computeIfSKP(richDetails)}}\" is=\"dom-if\">\n        <a class=\"extra\" download=\"drawing.skp\" href$=\"{{_computeHref(richDetails)}}\" on-click=\"{{stopPropagation}}\">SKP</a>\n      </template>\n    </div>\n    <div class=\"details\">\n      <template if=\"{{rawDetails}}\" is=\"dom-if\">\n        <div class=\"raw-details\">{{rawDetails}}</div>\n      </template>\n      <template if=\"{{richDetails}}\" is=\"dom-if\">\n        <dl>\n          <template if=\"{{richDetails.visualRect}}\" is=\"dom-if\">\n            <dt>Visual rect</dt>\n            <dd>{{richDetails.visualRect.x}},{{richDetails.visualRect.y}}\n                {{richDetails.visualRect.width}}×{{richDetails.visualRect.height}}\n            </dd>\n          </template>\n        </dl>\n      </template>\n    </div>\n  </template>\n\n</dom-module><template id=\"tr-ui-e-chrome-cc-display-item-debugger-template\">\n  <left-panel>\n    <display-item-info>\n      <header>\n        <span class=\"title\">Display Item List</span>\n        <span class=\"size\"></span>\n        <div class=\"export\">\n          <input class=\"dlfilename\" type=\"text\" value=\"displayitemlist.json\"/>\n          <button class=\"dlexport\">Export display item list</button>\n        </div>\n        <div class=\"export\">\n          <input class=\"skpfilename\" type=\"text\" value=\"skpicture.skp\"/>\n          <button class=\"skpexport\">Export list as SkPicture</button>\n        </div>\n      </header>\n    </display-item-info>\n  </left-panel>\n  <right-panel>\n    <raster-area>\n      <canvas-scroller>\n        <canvas></canvas>\n      </canvas-scroller>\n    </raster-area>\n  </right-panel>\n</template><template id=\"quad-stack-view-template\">\n  <style>\n  #chrome-left {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAABICAYAAABC4+HLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFyMmV/Pm9QAAIABJREFUeNrtvXmwXdd13vlbe9/7BgzEQAIcQAIEQYKjSAokLVlOW5Fk2nLKmqx0J2Wp0k652h13uiy5XYqdwU7sSnckpZ1yV3U75apU4kos27Elu9NlyRXZjiiRomSTIiWZs0hwHsABJIY33rPX6j/W2ueed3DvAyDKKoGFW0UCeO/ec/fZZ+29v7XWt74lAIuLi7tXV1f/raq+zcy2AogIZsbpvrqfMzNE5IS/1/fVn5sZKaUTrtX9/v7nT+fn9e/1e052X/3r1THWa3R/37+miKCq7c+mjW/a+F/P57vj6/45bayn+wzXs4n+794Q9nP8+PHdS0tL31LVmfpGVQU4YSInGUb/YfZvpn+zp/LQu4Y27X31d933nurkq+qaa08yotO55npG0v2O+r1/XZ9fb2FMWoD9Oe5+pju//e+fdP3u83+j2I+89NJLn11dXf1bdSCTJnnSSpz2+/VWZ/8m+w+g/zD616yT2P9733BOZ5f4dhbCevPQHet63zVtV3y9n1/v/k9nZ562SNY7Gd5o9iPPP//8qxVKrQdL+hOy3qqdNEnTjv1JA+vuRpMGvd7kn8oCqded9B2THuJ6u/Kk7+vuiNOgQH8OX+/np813/376O/CkU2EavDwVWPiGsp9nn33WJt3ItF2ne2xOe2jTHuTJMOS0He1UcG33791JmWQYkzB6dyfp7tynsktPG8/Jdv2TGcLpfH7Sc5m0EKZBsPV+tp4PMe39bwj7efrpp229G5u2O3WPplN1cE/XQZsENybtnNN2pv4x3N1Fpu2S/SO6j6fXgz6n4gRPGmMfR7/ez/cXd/1798Tsfr4PMU52Oq4Hp95I9jPor7ZJ+G7STlEnvN7gesfXpB2tH5lZzynrO07Txtb92aQTY9rv+3i1v4jqv5umOSEq0r9O3/iqEUx6MPXnqjpxrk73812oMQmP968zyUj68zPp+U1bxG80+5GnnnrKpkVxTiWUuN4q7+96/YFXp6pvANN8hD7MmRbF6O7200KR9ed9CDbpSF4v6jIJtnQjQdPGOylK9p34/HowaFL0Z73IUNex7Z5Gk3bkN6L9yBNPPGHdY3fayu3uSP0dqH62uyP0w4XrDWo957gPEfqf78e4p4U8+0Y86R6711pvAUyL3vTvd9ou238Q/Xn4dj4/Cd6d7BlMC532534S9OnO8xvVfuTxxx+39RJlk/DtpAGc6k6hquScp+7EkyIn0+LV60Ufpu2q05zN/sOYFIfvP8CT5VEmGWN/h5w0zm/38+sl7/r3drLntt58rzdXbyT7kccee8z6O2b3JnLO6zpjk47nkyVg1pu07muas9b3CaZh4f5uPMn4Sikn7Jj9RTEJMnQfVHdck4x3Wt5i0qL6dj8/6WQ5GcSYBiEn+STrhT/fqPYzmJYxrRcopax5eH18Oi38WI2ulLImYTPNMavv716z/93rRXUmOZXVgZ5kePX7+hPeN5xJTmx3MdXf9zHyM888w8LCwgn30IUQ0xzWSYvhVD4/LarTzpWBpOl+zqRQ9lqjE2DCtbH2x9MW3XA45JxzzmHnzp0njYp9r9jPoH75Gkekc8SZ2ZpjrH/Ez8wMSSmHMY4YjZp2MDnniVGT/sPvRhxmZ2fJOWHmxj0ajU7AtvV6k4727gSklMg5M4jdq6iyuro69bv799fNptYF0X3vJKjz8MMPMz+/gWuvuYatW7eScgIEwTADEwEUAZDkBgtuYONlCCJgAuZ/N5QkCcP8avFzUH8fsZgNEoJJLAakc+2TjENi90RQjGSCJm1/hwlmgmRFFIwEYoiNxyPxvYZ07gVKUzh8+DD333cfRZXLLrvsBLxfjbl76pyO/ZRS1thq325O137k4YcftvUSOf1Ufdco/uwLX+LOv7ibZ194EYBdF+zkB956C+98+99ARE64ue6XqyqDwaDdGZqm4Qtf/DK3f+UveO7QS2uu944f/IH2WpNwdp2U/oT8+W23c8dX7+K5GN9FF+zkb7zlZt71jh9cswNPw8uTsPU0h19VeeSRR7j55lvYumUzK6MCpqTs9p2AAiRLmChWBBIIiqZEMkVUMAQTJZtQSCCKkDE0/h+7twkKpCSYxrhVMTGyCYogohRLCGvHoYD0xyGKScIUpC5AVSQl/0ACaxeCkJJhakDCTJEEiKAmDMx8XSdAY6lZQjHmZoa89NLL3Pv1r3PVVVeesDH3T+FTtZ/uguhu8v3o36naj4ggjzzyiPXhwtRjOf6+tLjEP//4r3HOuRfw5psPsOeSXQA8+dQz3Pu1ezl2+BC//I9+jvn5uXWjDfW1uLjIr37y19m8/fzJ13vlBf75L/48c3Oza3aWadSP5eUVfuUT/2bd6/3yL/xvbNgwv2Y3qbtOF0J2MfN6ka7nnnuOvZfuZcfO8xitKnloFBXEBHGLc4MTQwVEDeIkyAqa/Pdh9z5vaqgkUuz8akYGVATEHOYYiCSUQtJqkCDJsJJIvXFYNRIzLGWQQqqLEiOhqKS6gnzhqJ9cJplsiiXBSnfBJF957TEoJBKYYskwFUSgWCKnBkmZp59+mpdfepmdO3eu2USn+V/r2c/JWAX9CN/J7KdNiD744IO2nqM0Cff+01/9P7js6gP8d29/C5detJNtmzYC8OrxBZ547kVu/+JfcPDBe/iXv/xPkCnkvHalm/HPTvV6v/SP25vs3mB3fKurI37pX36cfdesf73HHriH//2X/3Fr/NOSTZMyzn0n0sx47LHH+JEf+REWFhd8pzcliRtyBVbFYlcTN0bfpoWEYiaxENTtjOQwByOZ7+r+b/zacY5YICvH/iDmBurjmzQOKMlIWkPThpohkuN0iwWI+YrNGkdeQswwcbhlWEAzw8wXazZDJfsYMP84ghXzxSHip5rB/IY5/sv/+0dc96Y3rdmA2uz0YDA1EHIqDNv1KDAVvk2yn64vOujHlqdlJ+vv/+wLX2JuywVcfOkeXj2ywGtHn0C1Hov+uUsu3cNzzz/Hf7vtdm5959snRknq6wtfvOOUr/fnX7yDH37n29fccBdG5Zy57fYvs2HrqV7vdm59x9vXJeqtx6WqD+T555/nyiv3s7y8TMLhSgLMElkURx+KENi+7uzi0EgtIUCi+OmSwIpjmYTSAIN6uiSDkkAKQgp/IgON+yaGnxIBz/rjcPckj30LU5I5rCsJsiYsafgjCbXEUIwiiqq4e1J9FjVfNCioYMlPC/eJIFuisTiN0oBkhllBcmJlaYnL9+/n0KFD7Nixg5xza6hPP/00S0tLzM7Mho/lfpGicW/hyyCQAv75Nuw+UOwi/o7WmXLfClhYOMaWLVvZtWtXG7TpRibrMx/0V1j34XcdT4DBYMA933yQnRdeymhUOHZsCZFEqrurORRZHRV2XrCLr33jft596zsZjUbtiuzGqQeDAXd//T52Xrj3lK53zzce4G/d+k6WlpfXOF5jSAhf+8YD7DjF8d3zjQf50VvfRdM0LYzqv/pHcH9napqGF154gb/59rdz7PhxTPCdNSliisYuK5rjIRsWPyeJQyGhWhyNCEn9sbrPIGRJmBRfeCb+kEXQwDZG49AFIYmh4kvmhHGYISTEGl9YBimPoZypvx8VJA3R5IurMcdrSTrjLuGjGJCNpJnGlCwWp6CRMLIoMCBhFJPYIAxNxjVXX83v//7vs337dnLONE1DzpmXX36Zt73tB1g8fhwzh3OIObyrp60IWp9XNlBfRtkCPqWIM9T5x+GhDIQN8/O88srLfPWrX+WWW245IeLVPvvubt49biZRMTDj6MISGzdt9i81YTjIzM/OMjc7w3AwANwp27hpM0cWln0iOt9RowruSAlHFpZP43pLJxAB68lnZuSUOXJa41tCIuQ7jYBWf9fnP5kZo9GIlZUVLrzwQpaXVzxihGHJEE1ucdlIkgOwKMncj5Ds0SjfZd2R9re7AeWkGOFUhuOrrd+jFDPMEkJ1XGPhxdY+cRzZARPJfR9Jiqm/P2wONKHJwJRs6jt0Su5nWHJfQj2IYBQIp14xBkI47OE/BVyUFI6/KCk5zJOSGY1W2bFjB03TrOGtzQyHNKNRnTGQghWjWInxGI0phvtyNOZg0GAU86hmlMYw9c9qMYyCjgpHjx9ndmYD3//Wt3LPPfdM9FtUlYGqUko5IbzVdUi7WHw4M8vc3CxzczNsmnejq6HSphSWVlYBWF2ZY2Z2tt2tuwuw/ruUwszs6V2vuxi6TlYd48zM6V+vC8/qYqgnZT861Y+dP/bYo/zoj/4Yo3o8u1PgoVRJiPqJBRkRo6C+oxchSaGIxC5uJHEfwDdqN3xTg+wRKXd2EyRIBppjy/fLY02CWCzTxuHX91MAEfdPNJESqBopFcwyJurAqg3jWpx6DqkExVIiNwIDQa1BAWRAQiE5XExJ/URCyQgFIZlB9rk8cOAAt912G/v3728jiMOZGVQDEShoSUhuEM2U5CecFHWIGbAzlwZJghRDs0AJ2FVdu2wUMxI+XyqFpjF27drF0aNH2bRpU7txt455fcjVuCrE6Ds6DkdW2bF9C1lg49wsG+ZmOWfjHNu3bGL7lk1s2TjPpvlZNszOkMTYsW0LWvSEHbhraDu2nfr1ztu6haa3uLqn0qhpOO+0rncOTWcy+vmMesLVxVgXdimFpmligWbmZgZtLN8vFmFZbbBGHfdSwo9whxot8ZAdMydzTG9aUDGKGlZ8QaiGU6wGVtDSUChIY6j6gqOBTHPScZj5qVHUoAg0DaYlIIWhlj2qFUhBDUwLNH4tMCgKZqRSGMwO+PM//VOGgznPe2jDYGbIvfd8g5mZAapCMcEEv6cK8RpFLLFp06Z2Lqvt7dmzh4cfeRBTQ1E04GXBEG187pLSqNKYbyBm0IQda6MoDUbB1DwQUvyE1tJgKFqM1dJw6Z5Lefzxx1vb7B4EqbtSJjmmXYjVNIXrr7mCI68dZmaQmJ8dsu2cTezYtpkd2zaz9ZyNzM8OmRlkjr52mBuu2c/qaHRCZGcMSxpuuGb/qV/v2isYxfW6GdFqtE3TcMNpjq8mGbs+xyRSX520GhMvpfDC889z7XXXsdKsYMV8t7fA3ChYJmWgGKkIlh3SWeQEwJDkp0UJKKIioGNXW9R3PnKKEK+E32BYDlxvUMTQzEnHIREQSCQaMSRn9+dlvKOmMUr3aFRKcco43JIUicWU+G+3fYHf/c+/x6c+9R+ZGQ6ZmZ3jtz/1Kf7PX/vX3HPvvTHaQsYgKUnFo9C5oBirKytcdeVVvPjii+1zEBGOHTvGxk0bfXGabyxGQ1GHmaYB4YqRLDYIIXyw4vDQ/HoJQ61BTHyPKeZ3aMbxhQXm5+dPSDCaGamPt7pQZRJL8qYbrmP56KscPnwYEZgZJAbZ/5sZZMA4fPgVlo++yoEbrqXCtq4Bdv2bm9/8JpaPvXZq17v+2hNgTXcxN03DzQeuP+Xx3XLg+hNoGN1Togsxu4umnijPv/AC+6/YTxlZZIo1YJIf5yLmBpeFMhCwEg67J8QkVacyRe66eLg1aRtcUVFSgmzFsx3uWSKSkWIUibiSpcD1648DMU/ggTvP6r5PskhrmEMfRFEJKBcZfJPkjq4nQTA13vk338mHfuJDfOXOr/J7v/t7/M7v/A53fvlOfuqnfoqbbjhA8di1/2nZr5kU0YQlhz7XvukannrqqTW2snXrVpYXFrBmBH5+OBnA/CRxP0NJVjySZoo2DrLcbhu0eDTORONnxde3FUQLqoVmtMreS/fwzDPPnOBe5J/+6Z/+F/1dvZ9V7BqHiHDDtVdy51f/ktVRw9ZzNpMkMRo1HD16jAce/hbPPv0k/+N//941Wcr1CoNuvO4q7vjKetd7gr/3t98zkXJ8QpTJjBuuu5IvTxnf/Q9/i+effpIPf/DHJiqO9EPX/Yhd9UuWl5fZMD/ProsupJhDBEniOzaCWMakuNMsjp0znhzTSv0wRbL4yYCQyWgliJhTMzKZRty3cNhDJNgMY0ACz66H333ScRSHVSnCrZbdfzFpc4okFLHsvkEkBE0E6YSPfXxQrHDF/suZnZ3jttu+wHPPPcv73vdefuiHfpiVZrlNbLYJy4Hfm9uSn4jaFF47coScUuvnbd26lccOPsa27eehxXd/JO7LQAZgJRZ84+epZM8JeYwtIaKIRZpGxXNFLTvMIuye2LRxE48++ig7d+5c48/KPffcY5O4+11nvOsj1N/Pz2/ggYe/xaNPPUcTGHc4GLBvz0Vcc8U+VlZXpkrgTCrPrNf71pPPnnC9a6+8gqWlxTUOUx1T/VmfGbphw0buf+gRHn3yudavaMe3/3JWVpZPYOXW+6vX7CYcu9GUpmm47777+OAHP+h4NxYlSdr8gOGOY45TwCpIsRQwxkjqxi7iECCJY3MBj91L8viXKSlFrN7iG6SyrOp1OaVxEAlB1EPFyTzSVCkjmgSp2XGNPALBO2kMy0JW8YhW8VNpODvLp//g03zjG/diCDfeeAN/+8c/yOrqClgOLpZgA8NGKU6vOI0QhMzK8iL/9fOf58orr2QwGJBz5v777+etb/l+jh096rAzCNApbhMqRItTRVKHGBmcF6CYkSUjWlr+pNNrIodiwlNPP8WuXbvWJKoHXew+GAwYjUYnxPS78d9q3EtLi+zfdym3HLiBuVlP1qyurPLakSMsryxPrNfuhnL7hLKFhePs33cpN9/4Jubm58BgeWWFI0eOsLBwfM3i7BrytLrlhYXjXL1/H993043MzsyAwMrKKseOHWNxcWEq6a3PzO0nSFWV0WjE7OwsMzOzLC8teagTQ5w8FVljZ8B6bD/Ig2YkUaz4I1Tx06Sh+E4cxuIZcHdAU8Ak0+T2ihtWzYSj1NThScfhYM4dbne6fVcV8bCx5zpicanvvO2qix+bepSrFMgizM7O8h8/9Z/46p1f4f0f+HEA/ugP/5CVpRU+/KEPsTxa8XAxhpRUM6C+IFViDgqbNp3Tnso153HhhRfyyuGXyGmGOjtJxfliqYbFPX+hpiQKWIoNB1CFQYrTsqGIRLTKT+xk0ChA4Yr9+3ng/vvZu3dvaw+D7mmxsrLCYDBY44TWf3eNsJsPeeWVV9aVdekvvm7Uql88tLq6yksvvzy1sH+aSkh9NU3T+k0iwuLiIouLi+0J2K8zmERP7+Z2qvPdz3EcOnSI6667jtXVZTQZ0pgf81KZrNWgAuNWrlJSSolEWPL9WqWGOt2eJSlaguJhvusnEc/yV0ygRkkpiH+QRSnCScfhnCl1smM44BVIdVnBnnFOEfpMiBVUnMxYeWFZ3FP6/z77x9x5x528//0f4F3vfAdigpbCZ/7wM1yyezdveetbnL8lCbNC5cAUJ7d4SFoSS6Nlrrnmap555ll27tzJcDjk3HPP5eDBg1x2+RU0qytgQol5dNaDopactoLFCVyQLKhCSua+hQTzWD33YwKpcUaA/8ztbBRRs/bk6OPsLkTRoHj3C/Yn1Rv0/ZJJBSarq6troEr3c/XPmvnuQ7FJmfu+sMAkI+/WpPQTndMURGqCr8/6rD8/dOgQ73nPezh27HhEYzzk6Md6pX8bFbAIhonDJKhoxWLXTwFp1NdPY8EgFzT8Dv+AOwbOrjWPgKXKbfLo1CmNo15HPHFmUhgTVQh+lOOWLM641aCFWEtbj+cgyo/+yLvZtnUb3//Wt7G6OkIwfviHb2Xnzgu48c3Xs7K86idNzTGUoLlLxUdOiMwI1159NX/5l3exbdu29jkuLi4yPzvL8dUVSoNDtDjJLKBRI0YmkqXOcEQSFI2cShKkLowSSUlLkU+CZMbi4iLnbt/O8vIyMzMzbkt33nmnTaqK6lZx1aOuX7vcx+yTanq7MKpbfNR1quvu3F8wfQp5d7ev4+v6Al3o0/eX1hMHm1aLPEl8YWFhgZWVZd7+gz/IatOEPzDwya8bdXLoQwnqglR6OBFNcqhDOLbq22dEIiM513iUR8woyZ32XJ3sFDukuPtSKhnxFMbRJgZjx0ymIIM2CWkBO6xS4FNk7cVQC1jia6UNh1rOfgKotgnLFGOWDkFRTZyuUmodSaX1BNoYCF+548vMDGeYn59nZmYGVeXwK4fZef4FqFkEH2owISElnil+X77Ak/PQLBYzYNKQbNDys2rEziJQkFDO2bKVu+6+i71797q9dxNp/d247yfUnMC00Gw3kdNNltXPTitb7VZ91YRQn6zY/96+L1TDq30nvY6l+2fNldSxdU/Mfji3C+1WVlZ45JFHeOtb3sZodTWIbL4raTAKa8UFxTlOTlfxZJRU34DkcXuLRG6p4VdAszu+QZZTBSkOY6zu/MUJWaYRTTuNcfhxlaIOQ+Ik8ARhqZBNPOyMJFLkFDTGX0wpJUCYiI+ztaHY7ASsGRuemS+iZCCqEbiKMKv6ovRxKbccuIWDBw+2lBIR4YVDLzAzHJLQCF1bhzZSPKnZEjiDvqLmi5sCyfMeJpU640466uPT5Pe4PFohDTLD4dARQ3e3rYbdzRB3F0mfqj0pD9CFL12sXiM+1ZDrd9WfdSejv+C6pMWukXezmv3/uhCpe63uoqvjrYuq6WHOetp1v3N+fp65+TnMMpTShjOt3QE9ROvYPI5/83oKlRL1FIrzNSRyAJXFamBNLexzjJ78mqq+YFJxACZ4dvB0xqFBFycpUMhmlBw0k6CxWnJDdlqKnwR+gezcrmD+WkR+tN1/jUJARRM/tSg+1mSU8K80KCGkgiEeoFAfkqkyt2kD8/PzLVlVVbn22mu57YtfYLUUNm7cgBYfmgUb2BduHJfFKBRnAqRIXBZnKIuCNMWTirFo0eKUEwEdGcuLy2MbuP32260LfU6m0zRNm3Q9XdZazDIajRgOh+2C6Auk9X2e9dQpJtU+96HSYDA4IYk5TVh4Te1w+Br9U+PFF1/kyquuYu/eS50KkiQoHtLmCHJEhGosnRrPD6IgOaIl5rAJ8YSYJoWSUSnk5Bwqq5gjJUyLR4tybhm8vkA4rXFIMmiEkqSlswseyclSTxL3XzyRCGLF5QaiZLZSw2t+JuHObaJuAuo8KLF6i/V/Dgu1pk+C1hEOcRLP8D/1zFM89NBDnH/++QyHQy91Hgx44IEHKKUwPz9PaZq4txpVq5WINZIXLoJGwZa4RyZtrNzvQVGSed3LzOwsKQm7du0aEw+7jmyfaDiJRtENuU2Td+z/vMvd6i6++u8uhOpHlyoEqousr3LXvYd+sq7eU9c3miSjWRdJ9WO6i7DuYIcOHeLHP/B+ji0skSWyA6kWKKU2x13LUn3HcuydUoSjgk6NJqwUkNziYMtK1hTwSONKvggk+WJJgbFNGswyScopj6MN+yZjkEAbQwYNlMwwfKKSPN8S9u9JNcmIRj1HkByliEfGRoKm5KzxONMkxpCjTEDw7L1FWUESpWgIX2SLkoKoGMzC/iuu4Mtf/jI7duxobWJ5eZnLLrusjXh2Swb69tO3iYpQuqWw1fftRkyHw+GaIM2gL0ZQv7juntN0nLoZ9a5D3GXdttTfyHr2F0QdcH8xdk+P6kt0F0w3RNyv0OtH37rXn8TA7YsorK6unlBPXEphYWGByy+7jMWlZa+YK8kd5sDqKejfRkNmgBaPubvwgNKUQYxRIZnvxil2VC3+WREnFOILysSDrKoCNAgShU/J687l9MeRygCNYqriTA7PyquzcX0z953fiIRMtnEJbQ7elnrQQHMhaaIBp8cHLPOKkUqV0VYvQsy8ZiVqQ8Tpu2OonmBlZYX9+/dz5MgRtmzZsqaMtm8bw+FwzabaZ23X1+zs7Bok008kT5JYSl0j74ZtR6PRGojV3fFreLOLxfs+S5f+XXfe6mtMKputi6DrVPfpIX1fon5n15/o+g2T9GHrOJaXl9fkbUoprTJJHWddwE3T8MQTT/COH3oXpSmRqnP6tyexvKRUUMQG7luY1GgqiSF5UDynkSzwdZSamkQxj4dXsyWyQE7uvFrUwWrKEIVPOqgV36c/Do3TS6VGsiLWr2PlkAxYKo5zaiYcozHncGlAGEsgJUUdObhn4ZAmp2Acx2JHpBO50tZvMrE2ny1RHKXA277/bRw8eHCNXX237Sd1C4e6cKceMd2sdI3ydJ31SYXsdYDd1djdyfuwqgt3BoPBCSJjNRFZrzccDtes+vWUUvqJwvr+4XC4Jsxcd4+6+6SUGI1GHD16lAcffJD/4e/8HZaPL3nVWXCSPLTpLB1LbqopZGsQT4aliB5pyaTAtwWQQfAhtJCDqaqRlCtBabBhwnKJIiOLTDfQSOQrTn8czsNIHhUL6J0HOGwzJxUWEZJKsDIEy4ZJ9ipDrUojGg67JwuCKxwejuc1LIfJB8YXEY9WRZGXImQN1i+GpuSnWTGWV5b48Ic/zNfvvZejR4+uQTffLfuR27/0pdhCiAL6MUmM4J7Uyq5WmiU0kmqEo2oj1Z9JyLVU3GqRFfU5Cp+ge52uDx+7UJ3kVgFJWPO++pska+Vqqq+FdcbT+S4i4tJqRdXQUCSU3JeTljM1HA64+qorWS4N2VJ8jQYBLpMoQUWHAUKDix9U+ptj/cBI4nymAEvxQBwe+XXjHlJBtdIQ05hwh6JZSPo6xtFm68f3i4IFnZycQhBhnJF3H1yD4hIlsCpjxq6M6+NpqTIhAySKFKfiD5K11A93xI0qFlRTqV42HLkhEyQJDz74wASxD9pn1SGutQteqM+acRBhLBI2wZ7Hw2+t6/lDh2woQhG8drkaazUUBI00ewpqDClR1EXGqiZRq2IR0jE5HM+avZWITzsTMqInEb2oC0BDoCxJ8IoiopCCy+OsS6c1iPiR7xFFI6dQvqhiCjHlLfwQN6Lx/Xssp5iQrBpK5JJbdqrXSYiF1kegDM8ZBDkvplIl5igHLSMoH9XZFIOSa2WdeXVbZGpdWMfxuVRHH39fLFvPVai87nH4JsDaZ6WG5SBFVl6X1PmHsV5QhEQcCZcsAAAWiUlEQVTN/3S+VfIipBosE0FLzWRnf1Z4Vtp9J/WAXcpRvBVUrprIi/vGxpG2yOWf5FkJRdx+Bh6DeN32nCRKFyV2No1Yd12ViguMpZRiB/AEVor4u0VM2+LYN/Hj2LO6cXhGFVjoVDjetnqsBMUnDuVURS1IpOw7TqP12K8Lw5Nm7vA5dUDVs8MSnl8hwpKhzKfqIgWu3RScHgtjSw4l6s6SgtWKuhqHU9OkzbYWMyx1ggPm7FZJyZ1UBIsyToschguG+HcXxZN+kdmuQVdNJRJw1jlVtS2W+k6MQ8W8bDcMMhWjSfgmY8Vza6o+P8Hd0wjFWlQG1mNc8OfqGWev2WgipKzqBuf+T4kyFB9f0TzOktdEqLoWlpl4HQaN86LsVJ+VeaTvO2jPg6B6erRDIIdR13oD/02s+uQTSJvrdfwpUTBjA2sTR9IINlCkyWiuzM/sD0DMSS0mTkqzhKbiANpo2aClEXLc2LhYP7Kfgb/rSSvWtMk2y7G7hbSHVUigtcjIKMUX60iEQQOWa/DU0BIs2ahRdqLOd2aOihZee+UwRYsbQ3a2qmbIxb1hC1U3oQ1ZjRm7GnkFEXKLIYmEn4zRRYp6kXofFYIEydHLB4OK0RmHf5eChOYVY2q81edWhdrCc3B4GBC3as3Fs0rFoaDXllQYowEVfcMiiJh10Yt2TqzkTGE/GeS7OkeDFD5CSfFnOFxSAjRKwKIUxklGvC4TGRSk8aIXk8bLO1NyxuQgao6roYaRWlSEWZhiIlFaAw+tpMANKeHx8Ip5Ww5NPDj1YnpPPDmFuoqMWRz1VfAMgvgnhpVwxIrn5Er2IqEkvjMnySjFT6SUnX/0HZij44tHWVkdccnu3Zx9fe+/Btr4DuvUBW1hjiTfL1IpNAKDyNiqFefN+Kbv8Wp1LaVKoSdi89Iq7/lRlc0jKJqsfW9JNi7cJ3mMPRwlrUzTtoYldokorjZxcKniO4e6DIWvfMVLSXODufU7wcE8yVZq2FDHO3xj1SeSVr0jWUE1ofL65shILC6tsG/fZW3M/ezre/uVkBJVZo5HCacxyDruuJkTzqzSHrK4WFqFKWLkyOWk6kTWLHllZhYP3UXZekRliFj4uHorBSFMzOPdFllaB8w4F0Y8sqJVXdzEaxnCaTXxMkpxBVn/uqSh9FcimuEOutQQRUrOdkU8vBo+kNcCvP45SiI0zejswjiTFodLODaUCJ21YbzgpKSICnn9rbSliCYRprOE5OTOoLg2kJHIUQYq2aMKOVVpRtpoeKoymVLpy0FbSA66UjinxRLJ7RfLGUWcyyMOzCLC6pg4uUaTmKDZa4fropFU2miNk3BaXgdSwqlLige1amVdcvr2654j9zfOvs4gWEVxVW2rNc2iHg7P7qiJiDujppTqtBSw1CDmcXRWidqA8LOtuAYTTlOQKOUZkwIrv8ZFugbqWqzSOulxZBQNOU+HLSkcNi3GAEHzyIPDGkxRF0cKCqpiKaT7i7rwWBX6ipNINbtoQHJGJjmFbEsVFNOWkWq8zjkadRzDs68zBVa5wQ2DgpAkObOsRFSiCsdJxdgZyKHm4OFbBhG4SZW373FzHUR7lKBGWIT2UieLOtTIaUQtmvsblT7txDUlkzRXIqUnk5LnHyQWBknIqDvFklxVQ2sCLBYdCcmGWnJJTvFQoRYhDYKBKhGxyQRPKLVhz29njlxMwDVaObs2zjBYFUmdxqzF3yI1l5DaTKSiaEkgrhhHEmaGmc2bNjM7mHF4o5HOi2qvXEJu3/DC/uAQEU53FokkWxDGUtVX9TLHpDkUx+tWPBYTm8kDl6jJngjy/GotAfUQclRTen11VMah47BdUUgpBJ6DFaCUEAwzJGVmN8yxYdM8m+Y3QM7Vg4kkkTE7nJ06R5VHZHEAnV0bZxysiqysefioiDCIWmQstbyYZMllKkMndX5mA//3b/w//MnnPsett97K//qz/wuriwbZd+IaXUo11m8pdFIjc12MJJGbiOIUzFzvtR1P01bOEUS9lDOPPPQQr7z6Kju2n8cVV1zuSStxaUxyiCfXa5iHgEuQ5VxCMORhUE/IVapQUGFTSqwsL/E7v/uf+eY3v86RI0eYGQ65/PLLee973su1N1xPWVnh2OICn/+jz/P+D3wgAgedOTJXRS8mDCIjXSkjZ19nCqyKrKMUT+J5mt4CK9MamAZRKhnMzczyG//2N3jowQe56aab+PrX7yUxJCWLCJLDnMoZwlwNIqc4naQySR1Mlcp5CQl8SSn8F2lT+W5YnpRqSmHvnktJOfHoY4+ShkFYyzkSSNYqjbcyXuKEEq1Z+6iuz4RAcpw6szNz/Pmf/lf+3k/+JN969GG2bd/Gvn37uPiSSzh+fIGPf/IT/Itf+iWOHDvGRz/yc+Q8OHGOYuJUPNTbWGkTY2dfZ9DiKADFG5aIppYe4KJi2qrsIQ2iwuzcLP/+t/4D9993H9u2bUO1cPPNN6Ml5F5qWNZLgl260Wruo6qMp7arllrxgFHtHyFgxeVUUggwN5W8KL7INm3eiKJs2LQRBQ5+63FyErSx4PxUiFfpGR4CdqFwRTUFT6j4Yo6SycEg8cd//F/49Gf+kBuuvx5B2LZ1G9deey2X7N5N0YZ9+/axuLTEz/7sz7Jnz+4WgnbnyKNmrhiokS23s7DqzINViaalbZQcNGXR0AbKThxIgllhbm6WT/32b3P3XXezY8cOzIwtW7byD3/mH7K4shzdiYxG8IRfKzwfLMiiYeAaxfnFI0ollMilbY4HRaNqLXnmXDJWCkVgzyWX8sSTjzOcmWPzhs0cOX6EJ558kt2790TysJCCJtBUVTypQoBGyRp98ELmrHgTl8OHD/MHf/Bp9u3bx2g04qMf/Qh7du9meWWZLENKafh3/+Hf8/xzz3HFFVcE6zeoJDFHLvDhVBlVF1FGcoSlzxrcmeVz2ABSoYTSRAlYoCl7D4eggc8Mh3zmM3/A7bffwfnnnw/Azp07+djHPkajDefMDUNhI1rwBllNVVlcWvRdNFid3quCwP7aGo5ZioYr3gekcnA8cqWklMMHSly+7woee+IgOQ3YumULh189zLPPPsPFF+9qWxRr66iH6oc60SxriBCrO82ShJQGfPozf8TevXs5duwYv/iLv8imTedw7PhxhEQjixxfXOa+b/4V5+04b1xGGwVHqXK7teZSSnTZqnUTejaSe+YtDu82mkU6HYEyYh5gFVNSHvC5P/kTPv/5P+Oiiy5sDeOhhx7i3e9+d0igyLgntYybtm/cuJFf/79+nXM2nxPKEwnJ2tJKUu0BIerZZIWmKdx11x1ITuOWXLjgGSHfLyS2bN3Cls3nUFTZunUbrx0+zPPPvsCFF1zoY8rR6kqcqGgaogiR6fYwrUfWBnOzPPLwg2zffi6X7buM7du2szJaDSq28OLLr/LRj3yEiy++mKNHj3p8S4RmtQkWLeHZV3GxqvAXGFNbZvnZ15myOEwsIq+1j0EmpdKqSKDG7Pw8n/7MZ9izZ8+a6r9zzz2X8847b90vKKXhi1/8Eu99z4+5+28lEhgS7EpXscgpuzyKKK+8dIiLd+9hkMQ1YtMIs2FIygS1pOo6hR9hZLZu386hFw6x6+JdjJrGe3lHEZEnxx37ayTzarPHJmU2JGNpyWVZLrrgQlaa1SBOehRr1wUX8NnPfg60RPbeN4Dl0QrLxxfbXuKo530oNm4qGYIHdhZXnWGLwxVhnJEq4lDDosREjZShrK5y1VVXsbS0dNpfsLo6YveuXWhxDySJdy8ySSRV1LIr1WlpT565jZs5fuwIaWbW9Y0sk5JGHsPFYES974KKMDDH+0X9NGmaEs0nvejHlFbqsu19h4euNdiBRYW5uVnX2F1aIqsXz2jxSpOl0SrLr7ziaRJlXAVnRm6VA6tgW/FkYuuE51pOefZ1Ri0OCrkMKGmsnySB2ZNAo0JZXuEjH/kon/zkJ9bUY59//vlcffVV3tpM2sLTtrZPzNiydQs33ngTy6tLkSj0uolkng/IOHFPa2mjGlu3biJnf2+tx0gdSYFg/XPs+AJZ1DsUkVhZXuDSSy9DKYg5M9ijYt4FqaiQcnFNpWxYyd5ZVYSiDeeffz5NU7j77rv50E98iIWlBVqhm5JdtsYysxtmKKPG+wCKK3VX9JSTM38tNFqrOksKn+fs68x5ydPPPF116sPochSF+C5emyFIRGQ+8YmPt7W8zz77HH//7/8kb37zAe+akw1TbwxZBbUV7yCkVW81HOycDG0kmh5KW8stVVM1VUHxCO9aFMvgnKnXXn2Nlw4dYtu554IVFldX2Lt7D6Vx/ydngvIuURIqQYyM8leSJzsju52ScMcdt/OlL93O4uIiBw68mb/7d3+C5ZXlqGly3+uVl17iV37lV7nxxhv4n/7B/8xoZTWKZizyi937SO6UR4vjFw49z00HbjprdWdKnsOakFUxjQ6exYnehdDmHtdooIWPfexjlJDc2bXrIn7zN3+Tv/rmN5zuPYrrFHXcrRaG6Ht+MYNSEFXKyHMSpp4LMNShkXmyT83afm+VKFi1/I6+eoRnn3uGrdu3oRiLSyvsufgSmlGlo9decNCkWn9hjKJGo4QAcqNOFUmmFFPe8a53ISJs3ryZ2277Iv/q4/+Kl156iY0bNoHC5z77x/yjX/gFzr/gfP7irr9kNg+pnQHaA7VoKwEKhjVB3bez2fEz7uR48qknLJNbdQ9LtaC4qkDUckZvmSXJM9Sf/OQnWxmUgwcP8lu/9VssLi4g5CASWtCVkq+TWmgURfFAiHpVXaZg9YpHtCza9bbyjeIwaSYP+NrXv8auCy6ClFg8vsieS/d4F9bIp2RxkWLNtLXX0Zpi3M8uKPBaO8DEybi0uMSv/ZtfY252luXlZR5//HEWFhYYDAZccsklbN++nYWFBd73vvdx0803U7Q5YY6INsaVGZ+Sy8+8+PwhDhw4cNbqzqSTo2BRqFOiFtuL8FMIFFA0+jQ03p8tZX7+536e5RWP7uw4b4d/Pqjpg2gmoqqIGk2IhlkqFINGjSZOBFXvEJpKQa2BQqhIBPtcFGu8GaIUb86+aX4TBeP48aPs3rMbbUY0USCF+omgRKticzHjohpL1JeHJqUpTl+36HmtpmyY38A/+6f/hAsvuojRaMT+/fu5+aabuf6GG5ifn2eQB/zMz/wDvu+W76OUZuIcWaijazFUCqWRXlHX2dcZcXI88eTjZpJoJYTa5iJjwYFKwo7MhwscZKGMCnd/7S7edMONbJyb94hTkii2DwVwAaxBZNCWt0rkARSviZBilARZw1hTLcgfh4UsKvEkpPEXFo6zcdNm12K1VjmrrfKr2lOefmg1WECdS+b6JjZuqFgpLHhgYn7DPMeOH+eRRx7m6NGjzM7NcsnFl7D3sr0cO7rg2XCxqXOU1JuqJFwsLQ0yh154nptuOutznDmL44knDPHqORt4Ew/VHPUXIeyg4pSLUK3TkHMPcaiqTeFwJVH14d2g1ZyqHmL1Xq0aelUaurBZooVCrdgLmJNrfTmtTlGKL9boA6HiDUwkh8SPiod9XUCD1EQ31VSbqsQCiSYsYhJtvdplBGY0SRhaFc2JTqbqQoGCYqc4RzUhmtOAF188C6vOLFhFzYr7jq5BIdeooZBUQg3PXD+1lOiyGBhe3dFurGqQatvpE6JKLjXeQ6HVEKoOdpwQxXMY3qXHG40UDGk80lTEe+URkvtaqScWPSrCnyBgVJXsMUtobtqGj973O8iUNCGr0zj3KciNqr7gBhqkkLZ3hYXBW0uzP5U5MhOn47SaT2dfZ8zi0Ej21cahRLzes9niESh1yEEJdZCIHCW1tr2UiF+H6Nmg0RWxrbQTV6zTKmxEkPQ6X1xlHNUKAwnZzuR1TqUEEz3V0m9DdeCD01Atz3jVYTSalOLYvwRd3YoLOlSVESxakdnIGzhqRJWiM5IFrUXR1z1HVb3x7OsMSgIGEhmTG6L/AsGXkoznMGosn+QVdC01PYWyRwqZ+mjxS9u1xHddBMvFdYdLaRuyCDky8jXWFO1QrLiUTklRo+Rqikkt1MktZEejM1UIK9RbkFQV1r1iRC17UZVEaxcpURUYcEqhiPsz0nj0rKr6IfK650gH5ezaONNODqnE1xAIIKIsVVXDosmIR1b94edsnUIoGxtRLm1OoVXwVWtVDnNTF03VeM1eUpqsbdjYRKKvsg0zDmUkKSKlI1Zcuw+NW+VWX8ePIRdSbheLjFwNBD8NBiWa1BOOe/gG5rMShUoBM78Dc+Slv+msxZ1RPkfoQbmYQY3qgI4E1QYzx+Zq3uAU9SyzVawfjd2LetMUxXtEW/SK8B50OT4T6iMaHY5QShVIEPH6h+TizVWlRIMoWFTRIjTi/kkJyCYWbFtTirijXlXNVUucHrX/t2vrWiNOlykuueNhZ1opTO/zEi20NNqhvc450qawYX4Df3XffWsoOGdf38PRqscOPmYpFG1ShlSyc5kyUQvurXSlNBGFicBU1F20WlPquk2VLlLFvzUUsVPrRIdvUCKqU6nudY83acNg1tK9MySvIHRIpeTk6iWErGfkMaM/orcPQ1rdbvdtShrXkVeyjCilqrkXVzqR6NtXhcorn+t1z1HxnNIrr77KyspS9LUIXtkayFUZPbV1g7WdWaPXfCsKYViwVySawXTeYIzJjq3av7Tq7bWPNxEKr+OQWrIs2p6I1umjN+011oSvrSfCyOrvpBaGhSp7R4e3+px0tXbbga+9le/WHMljjx70pHg4qSqCyMhLSU1c87XqzVpoCIbUjSuXgKYQcDbI4vKZskauvmrcgmhGJSRzglflSt/RtsBcMsc0t4TDksbibN4ZKSrwxJCiHnatRVFt96DIrkdttySX1K+ZE4v0dTXmFCdUFonmMcEOiJyMiLbq79+xOZJOo4ToAe6+j7WLX6r5mDe7SUGt8QaQHgk0Fd94skb9irR+XKp6KTIOr0t0lR1InKhrxkGba5LiRNRstZeGz1OTooePpjVtjMfPKuar6kNXKqq6ovugfVZEi4BoU2AaWsUhB0vQ1uJ5EJWX3605annVIkKREp1Ds3cBjRZZIeCHiIuU1V3FzBscinn72kQJ/K2RSIwFIJVHFUVNRNutCN820SvDdbAij5E1yIdGrhQMIWTjSyvCTU7MRqjUhZ4tdi6NZF9oZsVNSLZxf47sLYNTZMyl+hrRMyKpRueMyHN8p+coKqBU1GnuGCWVttNq7R8jql6LbnGaRu9AojamCm1HcUtUZDZutBqSQeoVj2hBtbgGcJETx4GXAljxZ+bs6WjtXIxRSLYq6gvDAqKGwkpSIoEM0gQnwSo1SZgp3tO8RBsJgnemMVduG+NnpbUeJ/Fdn6OBVme0hmKJTp9tljlk4iWq8qLfRirxuTJuQqPRJqgemVrPqugYlELbqf62WHSASuIdf1o2cNDMq9+SQqbexp2anKBo0fsiGMSR3EvW0ERfDRkYTSPef1oEHakLrJVEoYE09Aw+CVd/tKCwZ3IqSBn4Qygh+fnXNEeSBt8T4zj7rMZzNPjKV75KbbLT9idogVhIeNZjrdvaqsrsmESuo9Mjq6NCMq61DvwvXdzr35GihUBtKmNRm60hNh05OMfHMZQkqdN2rYtvg9LRJiSqhm0kO10BoZUBSiYtDBtLhNSuFFVwOnlo+K9xjhLfG+M4+6zGc/T/A8/G/snZpSWJAAAAAElFTkSuQmCC);\n    display: none;\n  }\n  #chrome-mid {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAABICAYAAADRa1RpAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFycE5v9iFQAAAQtJREFUOMvtkjGSWzEMQx/0eYrM3v8k3vgqycalSwlI8Ufyl3OBFMtGIgUCIEd6PB6RBEASqvfONSrJXrDNbNkQ8ywA2y/SmayW+ZIESTsiyQsxo40xmMS2aUmYbheHpCVd0+UqJGGMsey3mUyldoUvlY3D9rIN0K7Wbe/WbZ+y1yWtaVtrp3VJzAEX6ZVjc2p7b2mtnYhNdl6m05rwtfV/ltx7XypJTpXeO7Y5juOlchzHaWxyrJmuhLapqgIJONv05+srThBgiQpBTSRwGOr3rwccgWHUhJ7P5/YNlbd/2XiL78L/WajP240AQUihfnx84EDJjCHKHjTAbkimQDgBjAJ1/3kHAgEk/gL71AHEWVXPGQAAAABJRU5ErkJggg==);\n    display: none;\n  }\n  #chrome-right {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAABICAYAAACaw4eEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFyghKmOqnQAADE1JREFUaN6dmsuyZsdRhb/M2uf07bREYDykPeIleAMibNx92i9BgEPBgyB5xlvgtgI8VDNBI41xhGkpQowERgqw3H0ue1cuBlm1T/3Vu4XNiWj9l12XrMyVK1fWL/v6668lCXdHEt/1Z2YnnyUhCTPbX8dn45pmRkR81z7/XUr59Pz8/K8ePnz47/bVV19pnDhu0t+Pmx0Z+Pv8zWv1/eZnZ2dntw8ePPizZXw4bj5/P3vq6G/eePZiX9fd9/Xng6/reg78/dInzxPG9+/auH83GjEbPUahj6m1Hoa6v1/X9c+XPrlP7INqrfuru7+10WzUkUHvOtTojPF1mPdHSzdqPPXo5vm046bdq0fhGr+bvXZk6OgAM2OZBx7hZD7hnCzbtp149Wid0YOjx+eE6t8tMzb659Ebkg5PPY8ZvXpEQWNCzck2M4H3BWeM1Fr31/6+GziPmTefM3tcYzQoIt4a3+cso2EzhsYTzAAdw9M9M3rviPv683dl/Oi9pdZKKeVk4piVRyDu1NI3mCtARFBKeWeGbtt2yHV9HXdnGUMyGjSfZq4K42ajYbPXx836XjO+jsj3rawcFx5dPgK8bzJ6eGbzI8yO3j4yaMToiWF98fl0c4bNSXBEJ/Ozd1HSEY8BLGOIxlONeCqlnHyWtGNoxteRMX38uP44fkyyPnfpp58zqy/s7jsGj0rOEcvPVaMD/sj4I/zWWllmMB/VviOwHumv+dkRGc9EOtOUu6fHZteOGBtDN/+NeJwPNRsxl54RU3PIO4x827a3wNwfdr45kib92WhAf9+fHem1I7FZa31rr+WIr45kzrjZsixvZWHHYcfqXFHGctM9ta7ridcigmVZWNf1DvyllN2wkatmHIxCby7kYzbPOD2qFCN39efrut55rE8YM3I+8VENHPFVa2VZlkOSdXe2bTuhmHdl+W5ox8T8YCbD/l2t9YQqRiNGjx8l1JEamVXKri56doyTuzfGhWd+OyLJjsNRlo+eHaX63Iy8ldnjQn3hbmA/yagGusfG7JwrxZytcxMyjpnH77VyPEEP65iVs5tntp4ldp8zlrG+x8z2Y9L1f91Jy+zeccGZn0Zv9nFHTH500BGbM6HOojMiWEZQf1cN7Aut68qyLCdeGFN+xuRYJ7tXu5fetU9EZCiPOp8xm8bTzLqpe2jkoDnzxjCOa8/VZByzzG7t8gQ4eT+GdO4Be0kZDTgq5kea/0g0RgS+rushNkbg93o6aqeejUeNR/fcUWmaqWLbtn39MdGWGcRHUrcb17E1jhszq3tvxNCsJuaE6VGZMbeMKTrL6LGelVL2k41jx6zuRbknSS9BI7WMdDRTxLi3z+VkDl3/7vb29oS3xhoZESdZOm4whrW/7/NHT83UtNze3u6c1I06Ozs7wdjc7PaQzsV8JNSOp7k97IDvtDPDYTdsvts6Pz8/MXCsm2PD2g/Tm+Vx0bHZHTNvjMyRyh2pajk/P0cIZEAHLLgXQLg5ckDCAFsKCwtIeHHAQGAmSnEkMAyZMBkin4lc3jBEM4a7MZgo7mBGhLD/+M1/qiCqDJflIjICYbknjlEtQEl81cBDYIaUi3aDwoEQ7mABuFMjcHOMQHLMRLSDhhlFQk4+k9IhLggZBREeVLN+NNwNCAhRwjGMimGyPJlA3owyIwiKEltWjTBHNchIGpLleIS5ITNKQHVDYRiBGUQI/83X/0XUyorhm2EKAsvT1IqFgwusgglCWARV3SuGmdNchwgiRHWQagcHIqCNJ7whJ6AI20AeUJ3A0ilP/vQJ33zzDdvNDbWkO91oAwphrah7wVGG1cHMqSHkggiwDJthmAcgjIIVg5rfWc1h2AZ7AgBLpMElMpQCUyOSX/3rr/j+9/+EGoEQTgKxKnDADRROmCiWySJBeILbMCxENVhwBISCnldm4EBEeiQRk1AJs/Y5ER2q7BX03v17SQnumDeXRqXgDaSA1cSdIExQDM+UgtoArTyMIjABJUPt4S2hRHEIgbdstV5LI4OusDvDMgMNqw3sHqi0HPcMotyRNqp5ArnmRrkLuBm4kHmjDAeEDMICk2PFMwomqjI2xYSHsJIUUnxoeBO7rdQUJ2qeJk8SLfdLGtgWCouEVzFUG7NXMAXVG1YqyDdMhSDgFuTpabUEiUguUw3AiAafbhoR4EtmpJknKArgytMaBHBmIozEIQ41M1dK7ySGEvxQ8NoI1w2WFh0XlsUaFYilJ5zhpuGKwBxXeygIqxlrE6Ih1wKPgi8L799/QGcJo4M5o9oYDfcKUZJmEFdX12zrikh2xwwrQA2KOeqETRlCGaKaUFXLpjQwy5Elu4dzflb4uw8/5MXP/wEsE6ORVX8hbVRzTVcN4ic/ec4HH3zA7XaTC1sQtZUXAm98Z7I7uvjii8+5ePw4pUiwu7TXuogM3cX7j/jhX/yIJz948gf/NPjll1/yy1/+E//z299RCGrL+AxI8krQfhk5Ab+6LmrGyDA1dvfkqOvXNzy7fMonn7w8umjafabmsDuowPPnz3nz5joLiN9VCwIqJDGHweixV59/weNHF4itZSMJbGq61kg3h3N2fs7D9x7jIdTwIzw3tCxrZo560U5U8frNFdu6URWJS8RmRukto3smv07uxwJrMa9uLDJCG1ZKI87AWJBvhEOsG9WEhSVcWBtu1A615da2kboiPaRW4hSRcBGEClhg0cTDycWdJR1XgUdkrN2hRqslGapydo+fffgRL37+Ir1opzrrJHZDAiB49vySv/3gp9zcRiqLCpsrjSLrnpQ27KH8/ItXPHz4PtRbRMoTajrBw6Hk4o8vLvjhj/6SH/w/wf/xx//I629/u9fPjkxLIZfVwmLwWBhQqUqgU1NZlCrkQVRwGW9urrl89pRPXr78gw27vHzO9dVVI2cIOYVIGHkrYXVDUQaPvXrFo4tHbFV7dnkjzGT+5BjXwnK/cPHovcRLI9hME3ZeM2+HtRwQAVdXb1ivr6ldzfYC3sSnPFAUZHW+HE7WtqamZL07avrcnYgKKtR6m/VKQTR9n0JQjZj7KqD2LCLY2h4quqsKNUWA5BQPatjAY1hTpuAO2iqlGLV1EQJ8C87vnfOzjz7ixS8+5vf93y+sFeZnl5f89K//htttw1bAW5d05rAK90awjOD//BUPHtynblmInXStyUHJR3jw3sV7/PjpU548eXJArvZ/gv/Fx7/g9bfftug4NfVKa7byd8pN9ZT5I9rFSM/wSPFXrOn5Tby5vubp0x/z8uU/t1Jx5/H9v3b3/q4YGJfPLrl+c0Pde8lgEWxN0znG1jG6e+zfXnHvwQNETdmMINqlSEeZJ1Dvn93j4uJiL+6jv8TQO9L6lya9f/fta26228wodVwZboFU2gLbqbqglZLarzTbdpvBEhWxNJI1bq5uuV6/SRCHt35AyAwPo5aKZzlIHRb5SqTR1nRSnitQtC4phNlyqvlTppRUlmZEQJizhCErbYSa57J8SNkLRm3s7RV54AHymjK9cYjUyg+wqV8XRCtfdzea+IZiFIoSsFKBEm1SE26SpXZCeDh7g9P64R4SrU2ZkC1btea5TMDsqCJ5UfUuZwO1BlnZ6tkgrWWWqjOgqhJmsLWa2dowsKZK0nuKlMWokWWBoBIeiJpZF6CqhtnMdHSHW6PdZLfijjISu2HX11dEjURrTza3BtymzaLV5NZwEGQYW4ekaLdCkXSDRCkidr2n/XKGUlOKjxc6oXZN0H4ZefXrVxQ3atTsjD1lkJpIDNEwlSCRZ53rp4zViNiQtqwEStHT1YoUOaclSY1MmmjXCelNz2Q1T5L/7LPPYDEePXqYNa0ENHnd7xeKKUFiAO2HBM97DZMoS1prMmQLrqCE8uZHIgVDNAFpFEW7BnGKWQtnYJ6GOmL54+99D0JEzfT1alRzikHtda+1/4nsxk/VqQZmlXXzJMUiqFu7nrJMe8v2LhteteuAvEcrVqk1m+Owdn9h7ZYSE6WAIrkjPCVIFua8s0jhWHfhZ5YZZ6rZNxoplZp3clg2uUSKAcmwYpgqUs1iFI5Z4rr3mliq3IVqVDbwM9CGkao1rN1IR6F4xepCEFht1wAhIKjRNH0Dv6ym5lHrEQw8JSlUtapghHJ+qiK13OyZ6yyf/sunSYqyVuPavVVq3bvSgrKxcKVGU7/s1U5ovXz1W5v9ftPVet68cbSehRo65ZNfUuB/AWHLchVUWJtFAAAAAElFTkSuQmCC);\n    display: none;\n  }\n  </style>\n\n  <div id=\"header\"></div>\n  <input id=\"stacking-distance-slider\" max=\"400\" min=\"1\" step=\"1\" type=\"range\"/>\n  \n  <div id=\"canvas-scroller\">\n    <canvas id=\"canvas\"></canvas>\n  </div>\n  <img id=\"chrome-left\"/>\n  <img id=\"chrome-mid\"/>\n  <img id=\"chrome-right\"/>\n</template><template id=\"tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template\">\n  <style>\n  #input-event {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAMnwAADJ8BPja39wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAyNSURBVHic7Z1PTCPXHcc/4wWWVbJN2cJSLVqiQJuGpoIGEVWReoBNIlIF5RCRSysOK9EbksUeOHLIIQcULbLEEYk7oqduD6gSRoqUEyK7dCOabOHghCiAE/JntQtesHt4fuM3z2+MZzy2x8ZfaTTjN+Px4/fh9/7Pb6xMJkND4VGk2hloyKkGkJCpASRkagAJmRpAQqYGkJCpASRkaqp2BvzKsizf3w1z38sKc+ZUaQCuAFeB57P7q4AF/Kxsj4GnLrfL+6PDYofQAskCaAJ6gJeB6+QAFOvZpwgwPwOHwCNgN5uu/+H252raJHRALMu6ggDwCtALNAf8E88QUL5AAHqSTVcNUTU4oQBiWVYzMIiA0E3lGhtp4CsEnPtACgFDGqXiYKoKxLKsCPAaMIwojlzV1tZGV1cXHR0ddHR00N7ebh93dHQAcHh4aG/JZNI+3tvb4+jo6LzsPAY+QYA5Ix9KBsoPpmpALMt6BXgTaHe7pre3l5GREUZGRujv7/fdsspkMmxtbRGPx4nH4+zs7BS6/HtgHfgvOW9xeE05bVZxIJZldQNvATf1c5FIhMHBQYaHh7l16xbd3d1lyUMikWBtbY319XU2NzdJp9Omy74B1oAEAoa8yIZTDttVDIhlWZeB94Dfm86Pjo4SjUbLBsFNiUSCWCzG6uqq2yVfAv9CNKHTlNlbKgLEsqxrwF+BX+nnhoaGuHPnDv39/WXPRyFtbW1x9+5dNjY2TKePgBXgOwQUFUyg3lJ2IJZl9QAfAK1qek9PD9PT04yMjJT1970qHo8zPz/P7u6ufuoE+CewQw6Kw2OCsGVZgViW9SdgFNGLBqC1tZWZmRnGx8eJRMI5lJZOp1lZWWFubo7j42P1VAZR4W8gWmJn5KBAAEVYWYBkm7PvIvoWtjo7O1lYWKCvry/w3yyHtre3mZqaYn9/Xz/1EPg3ot+iQslQIpTAgWRh/A0x5GFrYGCAWCxGe7trKzeUSiaTRKNRHjx4oJ/6CvgHoigLDEo5yox30WCMjY2xtLRUczAA2tvbWVpaYmxsTD91E3gbMbTTBFxCFM0WYPntMwXqIdk64x3lM9FolMnJycB+o5paXFwkFovplfcniDrlNLvJXr4vTwnMQ7KtqVE1rZ5gAExOThKNRvXkPyMGQaWXlOQpgQDJ9jM+QGlNjY2N1RUMqcnJSb34shClwnVE8aVCAY9QSi6ysj3wv6N0+gYGBlhaWqKlpaWke4dVqVSK27dv6xX9j8AyYpDyGaL4svsqxdo5CA95DwVGZ2cnsVisbmEAtLS0EIvF6OzsVJNfQIzRlVTJlwQkO1Boj021traysLBQk60pr2pvb2dhYYHWVscAxEuI1pcKJYIHKKV6yFvqh5mZmZrp9AWhvr4+ZmZm9OQ3MAMpSr6BZOcz7CH0np4exsfH/d6uZjU+Pk5Pj6PbdR34LT69xBeQbG/8TTVteno6tGNT5VQkEmF6elpPfh24TK7VFaFIKH4t+BrKTN/Q0FDoRm0rqZGREYaGhtSkXyDqVs9Fl2cg2QUJw2ranTt3vN6m7mSwwR8R68dULzm31eXHQwZRFiSMjo5WfXIpDOrv72d01DFQcQXoQ3hI0V7iB8gr9pcjEdNQwoVVNBrV69EXcanccfEST0Cyi9jsSe/BwcGKz4GHWd3d3QwOOqaAOoDnMFfuRnn1kJfV7wwPD3v8ev1Ls4mF+Ac2FVsW5C8aLxpI9ou/U9Nu3brlOcP1LoNNbuJej+R5ihcPaQJ+Iz/09vY2iiuDuru76e3tVZN+jeiTyFHggsWWFyA9KAufL3K/4zxptrkE3MClYkcDUxQQU3HVAOIug226yHlIXvNXrUe8eEiHPGhra2v0PQqov7+ftrY2NekFzEVWSXWI3Rns6uoq6ZGyepdlWXR1dalJrRTwEFVegFyVB3L5f0Pu0mzUirC1CsPoJcUCuYLyGFkDyPnSbBQhB8VUZNm99nOBZC+8qqZdhBnBUmWw0RXMQHx5iOPpprB5yMbGBp999lm1s+GQwUZXKFBUSRULxOEhYQNy//59Hj58WO1sOOQCpGAfBOoESBhVwENMm61in/cOXRt3f3+f09NTAH766SdaWlrY29sDoLm5mevXr1cze25y9QypYoH8rH44PDwsIU/B6KOPPrLzcXBwQCQS4dNPPwXgxo0bfPzxx9XMnslGJ7h7hkX2GZOaBRKLxezjxcVFLl++zMTERBVz5JTBRseGy3zXIaEDEna5eAgENIX7WP2QTCaL/NrFlcFG0kMKLvIttsh6ilg83ATh85D3338/dGNrmo3SiAXYuvLgeImX9Rj4peHHqq5r165VOwt50mx0gjkqhJT92cvgol2P7O3thSa+VBiVyWTsJnhWsv4wBrZR5QWIjfzo6IitrS0vebxQ2tra0oPdPCbfQ4ze4gXII/VDPB73k9cLIYNtDnACUJ9td8gLkF2UiqkBxF2abc6AJOboD3lQzgWi1BWnCCgA7OzskEgk/Oa5bpVIJPTwT9+RCymoe4jvIkt+8Qs1cW1tzVem61kGm8jiKk1+gIE8eV25+Ihc3CjW19c9fr3+pdkkgwCiwsiL+oDyUKhXIE8QISUA2NzcbBRbihKJBJubm2rSD4h4KLLuOMMQRUiVn9XvdrGVTqcdg3wXXbFYTI9Op3qHuqlQHCoKSNadJNH7KGNbq6urjT4Jou+hRaVLIUoTE4zA6hD5Q5+oCXfv3vVxm/qSwQY7iG6C9BAZByWv6auOevgBIr3ke5mwsbFxofsl8XhcDw34BPgaYXg1KI0p6JlDRQPRiq0zRGQ1W/Pz827RPeta6XSa+fl5Pfl/5LxC3QrCAP9P4WYQcW2/kQm7u7usrKz4vF3tamVlRY/P+CPwLTlvcANiDN/kCYjiJXLv6AXNzc2xvb3t5ZY1re3tbebm5vRk2Vc7JReExgTDqFI8JIMIMvylTDw+PmZqaupCzCgmk0mmpqb0IJkHiLpV9Ypn5MA4oJimMDwD0eqSDCLIsD3WvL+/TzQaJZVKeb11zSiVShGNRvXgmE+Az8kVU8+UrSjvgNKCz8jxmaeIIMNyEoYHDx4wOztbwq3DrdnZWT1W1imi5XmCE0YKlyLLbYLPFxDlZhLKd4ggw/aJe/fusbi46Of2odbi4iL37t1TkzLAfxAzqmc4PcPkIQVVqofIfRrREVpXL4jFYnUFRQbB1PQIMZsqYaSUraiWlaqSQvxlV3rIFd2XEIsm/gL8Qb1ubGyMDz/8sGajzKVSKWZnZ3XPANHs/xxh+BSiyDrObifkirCiiisIDogK5TIwjvY6ijoMpHwEbCJAPCMHQIWhxl4sKmxsEEEwwQmlCQHlbeBV9do6CjX+DbBNDobqHSYYRQfCLDnimKEZfJbN0CpiENLOxf7+PhMTEywvL4d6mCWdTrO8vMzExIQOI4Pod31OPowTzHWHpz80kMjWyqpB6SXSU5oRQYbfARwVSA2+ruIU0ZrSK/ATnEBky8oxqlusnQMLNa4VXRa5Sr4JEYdwDPG8tkM18kKXJ+TmgWQ/Q3qDDsNTJa4r6NjvkA/lEsJTnkdEMX3J9N0Qv/LoAFFEyRaTbFFJGPK4ZBhQntdVgDuUZkTr6w2E1zgUspeC/YjoY3yPczgkZdhk568kGFC+F7qAE4qsU2S90owIpfo6ImCkUVV6bd4TxHzGtzgnmNThEN0rHK0pSngFUtleeeQCRa1XmhHN41eBAcRDka6qwIslU4jRhq/Jn8tQh0HUitttWtb3YvRyv4MKck8MyUeCZRGmeosMGPkiIshNpR72yCCW6hwgFiTI1pE0tDS6abDQ87BIMarEW9rAGUFNNot1MHL/HCIs3k1E8K9LAWfpDDEYepDd5Lopdc5b9Qx9r14nx/EgABhQASCQ109RizAdjApH9vhvIOJNvYCIFyJjhhSjNLlm6WMEgCS5tbbqAjbTlKsKwwTCHmCtmfcY2j/khCL3auwPNXyRGqOwifzQRq2IYk7dwDl8cYwwpjoqrRrSDYYKpdCaqpLrC5Oq8S5c+xCzx+hwTJtbEBdT3aMbUBpVXWvrtsnz+op1CNArVFXlbdEu3mICowJS9+cBsR/Exx2IaQG0af1tHggI1itUVft96vahsi/kOabPxQCRe93IaW3TAVQMhFRVgdiZMIORexOgQiDkXv3DdAObPMYIgAqBkAoFECmtJ+4Gp9Ax2rEORe51w+sQ7OOK17FhAqLKBY567AbBTSY4rsfVsktogagqACfvUpd0tz/SkR4GW9QEEFVBhtAI499ec0DqXf8H8f4X10jf2YAAAAAASUVORK5CYII=);\n    display: none;\n  }\n  </style>\n  <img id=\"input-event\"/>\n</template><template id=\"tr-ui-e-chrome-cc-picture-debugger-template\">\n  <left-panel>\n    <picture-info>\n      <div>\n        <span class=\"title\">Skia Picture</span>\n        <span class=\"size\"></span>\n      </div>\n      <div>\n        <input class=\"filename\" type=\"text\" value=\"skpicture.skp\"/>\n        <button class=\"export\">Export</button>\n      </div>\n    </picture-info>\n  </left-panel>\n  <right-panel>\n    <tr-ui-e-chrome-cc-picture-ops-chart-view>\n    </tr-ui-e-chrome-cc-picture-ops-chart-view>\n    <raster-area><canvas></canvas></raster-area>\n  </right-panel>\n</template><dom-module id=\"tr-ui-a-stack-frame\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex: 0 1;\n      flex-direction: column;\n    }\n    #table {\n      flex: 0 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-chrome-cc-raster-task-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #heading {\n      flex: 0 0 auto;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n\n    <div id=\"heading\">\n      Rasterization costs in\n      <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    </div>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-chrome-codesearch\">\n  <template>\n    <style>\n      :host {\n        white-space: nowrap;\n      }\n      #codesearchLink {\n        font-size: x-small;\n        margin-left: 20px;\n        text-decoration: none;\n      }\n    </style>\n    <a id=\"codesearchLink\" on-click=\"onClick\" target=\"_blank\">🔍</a>\n  </template>\n</dom-module><style>\n.tr-ui-e-chrome-gpu-state-snapshot-view{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAEwATABMYqp3KAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB90JCQsBMCH7ZqYAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAUElEQVRYw+3WwQkAIAiF4Vc0hTO5/wiuURvYIcQOv1cRPhDlDXffSsrMsrYiQi/zU80FAACAVX3nt3lWAABA/x+ovnPyAAAA5AHyAAAA3wMOd34Xd+lsglgAAAAASUVORK5CYII=);display:flex;overflow:auto}.tr-ui-e-chrome-gpu-state-snapshot-view img{display:block;margin:16px auto 16px auto}\n</style><dom-module id=\"tr-ui-a-layout-tree-sub-view\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><template id=\"tr-ui-e-img-image-snapshot-view-template\">\n  <style>\n    .image-info {\n      margin-bottom: 5px;\n    }\n\n    .image-info .title {\n      font-weight: bold;\n      margin-left: 5px;\n      margin-right: 5px;\n    }\n\n    .image-info .size {\n      margin-right: 5px;\n    }\n\n    .image-container {\n      min-height: 100px;\n      min-width: 200px;\n      overflow: auto;\n    }\n  </style>\n\n  <div class=\"image-info\">\n    <span class=\"title\">Image</span>\n    <span class=\"size\">(unknown)</span>\n    <span class=\"instructions\">\n      [ Drag with mouse to zoom in and out ]\n    </span>\n  </div>\n  <div class=\"image-container\">\n    <img alt=\"Image snapshot\"/>\n  </div>\n</template><dom-module id=\"tr-ui-e-s-frame-data-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      width: 600px;\n      flex-direction: column;\n    }\n    table-container {\n      display: flex;\n      overflow: auto;\n      font-size: 12px;\n    }\n    </style>\n    <div>\n      Organize by:\n      <select id=\"select\">\n        <option value=\"none\">None</option>\n        <option value=\"tree\">Frame Tree</option>\n      </select>\n    </div>\n    <table-container>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </table-container>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-chart-legend-key\">\n  <template>\n    <style>\n      #checkbox {\n        margin: 0;\n        visibility: hidden;\n        vertical-align: text-top;\n      }\n      #label, #link {\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        overflow: hidden;\n        display: inline-block;\n      }\n    </style>\n\n    <input checked=\"\" id=\"checkbox\" type=\"checkbox\"/>\n    <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    <label id=\"label\"></label>\n  </template>\n</dom-module><template id=\"chart-base-template\">\n  <svg> \n    <g id=\"chart-area\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g class=\"x axis\"></g>\n      <g class=\"y axis\"></g>\n      <text id=\"title\"></text>\n    </g>\n  </svg>\n</template><dom-module id=\"tr-ui-e-s-input-latency-side-panel\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      display: flex;\n    }\n    toolbar {\n      flex: 0 0 auto;\n      border-bottom: 1px solid black;\n      display: flex;\n    }\n    result-area {\n      flex: 1 1 auto;\n      display: block;\n      min-height: 0;\n      overflow-y: auto;\n    }\n    </style>\n\n    <toolbar id=\"toolbar\"></toolbar>\n    <result-area id=\"result_area\"></result-area>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-heading\">\n  <template>\n    <style>\n    :host {\n      background-color: rgb(243, 245, 247);\n      border-right: 1px solid #8e8e8e;\n      display: block;\n      height: 100%;\n      margin: 0;\n      padding: 0 5px 0 0;\n    }\n\n    heading {\n      display: block;\n      overflow-x: hidden;\n      text-align: left;\n      white-space: nowrap;\n    }\n\n    #arrow {\n      flex: 0 0 auto;\n      font-family: sans-serif;\n      margin-left: 5px;\n      margin-right: 5px;\n      width: 8px;\n    }\n\n    #link, #heading_content {\n      display: none;\n    }\n    </style>\n    <heading id=\"heading\" on-click=\"onHeadingDivClicked_\">\n      <span id=\"arrow\"></span>\n      <span id=\"heading_content\"></span>\n      <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    </heading>\n  </template>\n</dom-module><style>\n.track-button{background-color:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);color:rgba(0,0,0,0.2);font-size:10px;height:12px;text-align:center;width:12px}.track-button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.5);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.track-close-button{left:2px;position:absolute;top:2px}.track-collapse-button{left:3px;position:absolute;top:2px}\n</style><style>\n.object-instance-track{height:18px}\n</style><style>\n.tr-ui-e-system-stats-instance-track{height:500px}.tr-ui-e-system-stats-instance-track ul{list-style:none;list-style-position:outside;margin:0;overflow:hidden}\n</style><style>\n.tr-ui-e-system-stats-snapshot-view .subhead{font-size:small;padding-bottom:10px}.tr-ui-e-system-stats-snapshot-view ul{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;font-family:monospace;list-style:none;margin:0;padding-left:15px}.tr-ui-e-system-stats-snapshot-view li{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;list-style:none;margin:0;padding-left:15px}\n</style><dom-module id=\"tr-ui-e-v8-gc-objects-stats-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n    .diff {\n      display: inline-block;\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    </style>\n    <div class=\"diff\" id=\"diffOption\">\n      Diff\n    </div>\n    <tr-ui-b-table id=\"diffTable\"></tr-ui-b-table>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view\">\n  <template>\n    <style>\n    </style>\n    <tr-ui-e-v8-gc-objects-stats-table id=\"gcObjectsStats\">\n    </tr-ui-e-v8-gc-objects-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-v8-ic-stats-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n    #total {\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    #groupOption {\n      display: inline-block;\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    </style>\n    <div style=\"padding-right: 200px\">\n      <div style=\"float:right;  border-style: solid; border-width: 1px; padding:20px\">\n        X no feedback<br/>\n        0 uninitialized<br/>\n        . premonomorphic<br/>\n        1 monomorphic<br/>\n        ^ recompute handler<br/>\n        P polymorphic<br/>\n        N megamorphic<br/>\n        G generic\n      </div>\n    </div>\n    <div id=\"total\">\n    </div>\n    <div id=\"groupOption\">\n      Group Key\n    </div>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-e-v8-ic-stats-table id=\"table\">\n    </tr-ui-e-v8-ic-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-v8-runtime-call-stats-table\">\n  <template>\n    <style>\n    #table, #blink_rcs_table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n\n    #v8_rcs_heading, #blink_rcs_heading {\n        padding-top: 1em;\n        font-size: 18px;\n    }\n    </style>\n    <h1 id=\"v8_rcs_heading\"></h1>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    <h1 id=\"blink_rcs_heading\"></h1>\n    <tr-ui-b-table id=\"blink_rcs_table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-multi-thread-slice-sub-view id=\"content\"></tr-ui-a-multi-thread-slice-sub-view>\n    <tr-ui-e-v8-runtime-call-stats-table id=\"runtimeCallStats\"></tr-ui-e-v8-runtime-call-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-gc-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n    <tr-ui-e-v8-gc-objects-stats-table id=\"gcObjectsStats\"></tr-ui-e-v8-gc-objects-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-ic-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-e-v8-ic-stats-table id=\"table\">\n    </tr-ui-e-v8-ic-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-single-thread-slice-sub-view id=\"content\"></tr-ui-a-single-thread-slice-sub-view>\n    <tr-ui-e-v8-runtime-call-stats-table id=\"runtimeCallStats\"></tr-ui-e-v8-runtime-call-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-alert-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-tab-view\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #selection_description, #tabs {\n        font-size: 12px;\n      }\n\n      #selection_description {\n        display: inline-block;\n        font-weight: bold;\n        margin: 9px 0px 4px 20px;\n      }\n\n      #tabs {\n        flex: 0 0 auto;\n        border-top: 1px solid #8e8e8e;\n        border-bottom: 1px solid #8e8e8e;\n        background-color: #ececec;\n        overflow: hidden;\n        margin: 0;\n      }\n\n      #tabs input[type=radio] {\n        display: none;\n      }\n\n      #tabs tab label {\n        cursor: pointer;\n        display: inline-block;\n        border: 1px solid #ececec;\n        margin: 5px 0px 0px 15px;\n        padding: 3px 10px 3px 10px;\n      }\n\n      #tabs tab label span {\n        font-weight: bold;\n      }\n\n      #tabs:focus input[type=radio]:checked ~ label {\n        outline: dotted 1px #8e8e8e;\n        outline-offset: -2px;\n      }\n\n      #tabs input[type=radio]:checked ~ label {\n        background-color: white;\n        border: 1px solid #8e8e8e;\n        border-bottom: 1px solid white;\n      }\n\n      #subView {\n        flex: 1 1 auto;\n        min-width: 0;\n        display: flex;\n      }\n\n      #subView > * {\n        flex: 1 1 auto;\n        min-width: 0;\n      }\n    </style>\n    <div hidden=\"[[tabsHidden]]\" id=\"tabs\">\n      <label id=\"selection_description\">[[label_]]</label>\n      <template is=\"dom-repeat\" items=\"[[subViews_]]\">\n        <tab>\n          <input checked=\"[[isChecked_(item)]]\" id$=\"[[computeRadioId_(item)]]\" name=\"tabs\" on-change=\"onTabChanged_\" type=\"radio\"/>\n          <label for$=\"[[computeRadioId_(item)]]\">\n            <template if=\"[[item.tabIcon]]\" is=\"dom-if\">\n              <span style$=\"[[item.tabIcon.style]]\">[[item.tabIcon.text]]</span>\n            </template>\n            [[item.tabLabel]]\n          </label>\n        </tab>\n      </template>\n    </div>\n    <div id=\"subView\"></div>\n    <slot>\n    </slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-breakdown-view\">\n  <template>\n    <tr-ui-b-tab-view id=\"tabs\"></tr-ui-b-tab-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-breakdown-view-tab\">\n  <template>\n    <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>\n    <tr-ui-b-info-bar hidden=\"\" id=\"info\"></tr-ui-b-info-bar>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-path-view\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n    </style>\n    <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #header {\n        flex: 0 0 auto;\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n      }\n\n      #label {\n        flex: 1 1 auto;\n        padding: 8px;\n        font-size: 15px;\n        font-weight: bold;\n      }\n\n      #view_mode_container {\n        display: none;\n        flex: 0 0 auto;\n        padding: 5px;\n        font-size: 15px;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #split_view {\n        display: none;  /* Hide until memory allocator dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        flex-direction: row;\n      }\n\n      #path_view {\n        width: 50%;\n      }\n\n      #breakdown_view {\n        flex: 1 1 auto;\n        width: 0;\n      }\n\n      #path_view, #breakdown_view {\n        overflow-x: auto;  /* Show scrollbar if necessary. */\n      }\n    </style>\n    <div id=\"header\">\n      <div id=\"label\">Heap details</div>\n      <div id=\"view_mode_container\">\n        <span>View mode:</span>\n        \n      </div>\n    </div>\n    <div id=\"contents\">\n      <tr-ui-b-info-bar hidden=\"\" id=\"info_bar\">\n      </tr-ui-b-info-bar>\n\n      <div id=\"info_text\">No heap dump selected</div>\n\n      <div id=\"split_view\">\n        <tr-ui-a-memory-dump-heap-details-path-view id=\"path_view\">\n        </tr-ui-a-memory-dump-heap-details-path-view>\n        <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n        <tr-ui-a-memory-dump-heap-details-breakdown-view id=\"breakdown_view\">\n        </tr-ui-a-memory-dump-heap-details-breakdown-view>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-allocator-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory allocator dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <div id=\"label\">Component details</div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory allocator dump selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-vm-regions-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <div id=\"label\">Memory maps</div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory maps selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-color-legend\">\n  <template>\n    <style>\n    :host {\n      display: inline-block;\n    }\n\n    #square {\n      font-size: 150%;  /* Make the square bigger. */\n      line-height: 0%;  /* Prevent the square from increasing legend height. */\n    }\n    </style>\n    <span id=\"square\"></span>\n    <span id=\"label\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-view-specific-brushing-state\">\n  <template></template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-overview-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #label a {\n        font-weight: normal;\n        float: right;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n        overflow: auto;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <tr-ui-b-view-specific-brushing-state id=\"state\" view-id=\"analysis.memory_dump_overview_pane\">\n    </tr-ui-b-view-specific-brushing-state>\n    <div id=\"label\">Overview <a href=\"https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra\">Help</a></div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory memory dumps selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-header-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        background-color: #d0d0d0;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n      }\n\n      #label {\n        flex: 1 1 auto;\n        padding: 6px;\n        font-size: 15px;\n      }\n\n      #aggregation_mode_container {\n        display: none;\n        flex: 0 0 auto;\n        padding: 5px;\n        font-size: 15px;\n      }\n    </style>\n    \n    <div id=\"label\"></div>\n    <div id=\"aggregation_mode_container\">\n      <span>Metric aggregation:</span>\n      \n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-stacked-pane-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n\n    #pane_container > * {\n      flex: 0 0 auto;\n    }\n    </style>\n    <div id=\"pane_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-container-memory-dump-sub-view\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-counter-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-event-summary-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n    \n  </template>\n</dom-module><dom-module id=\"tr-ui-a-selection-summary-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n    \n  </template>\n</dom-module><dom-module id=\"tr-ui-b-radio-picker\">\n  <template>\n    <style>\n    :host([vertical]) #container {\n      flex-direction: column;\n    }\n    :host(:not[vertical]) #container {\n      flex-direction: row;\n    }\n    #container {\n      display: flex;\n    }\n    #container > div {\n      padding-left: 1em;\n      padding-bottom: 0.5em;\n    }\n    </style>\n    <div id=\"container\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-breakdown-span\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table_container {\n      display: flex;\n      flex: 0 0 auto;\n    }\n    #table {\n      max-height: 150px;\n      overflow-y: auto;\n    }\n    </style>\n\n    <div id=\"empty\">(empty)</div>\n    <div id=\"table_container\">\n      <div id=\"container\"></div>\n      <span>\n        <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n      </span>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-collected-related-event-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-date-range-span\">\n  <template>\n    <content></content>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-generic-set-span\">\n  <template>\n    <style>\n      a {\n        display: block;\n      }\n    </style>\n\n    <tr-ui-a-generic-object-view id=\"generic\"></tr-ui-a-generic-object-view>\n\n    <div id=\"links\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-related-event-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-scalar-diagnostic-span\">\n  <template>\n    <tr-v-ui-scalar-span id=\"scalar\"></tr-v-ui-scalar-span>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-unmergeable-diagnostic-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-diagnostic-map-table\">\n  <template>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-map-table\">\n  <template>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-span\">\n  <template>\n    <style>\n    #container {\n      display: flex;\n      flex-direction: row;\n      justify-content: space-between;\n    }\n    #chart {\n      flex-grow: 1;\n      display: none;\n    }\n    #drag_handle, #diagnostics_tab_templates {\n      display: none;\n    }\n    #chart svg {\n      display: block;\n    }\n    #stats_container {\n      overflow-y: auto;\n    }\n    </style>\n\n    <div id=\"container\">\n      <div id=\"chart\"></div>\n      <div id=\"stats_container\">\n        <tr-v-ui-scalar-map-table id=\"stats\"></tr-v-ui-scalar-map-table>\n      </div>\n    </div>\n    <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n\n    <tr-ui-b-tab-view id=\"diagnostics\"></tr-ui-b-tab-view>\n\n    <div id=\"diagnostics_tab_templates\">\n      <tr-v-ui-diagnostic-map-table id=\"metric_diagnostics\"></tr-v-ui-diagnostic-map-table>\n\n      <tr-v-ui-diagnostic-map-table id=\"metadata_diagnostics\"></tr-v-ui-diagnostic-map-table>\n\n      <div id=\"sample_diagnostics_container\">\n        <div id=\"merge_sample_diagnostics_container\">\n          <input checked=\"\" id=\"merge_sample_diagnostics\" on-change=\"updateDiagnostics_\" type=\"checkbox\"/>\n          <label for=\"merge_sample_diagnostics\">Merge Sample Diagnostics</label>\n        </div>\n        <tr-v-ui-diagnostic-map-table id=\"sample_diagnostics\"></tr-v-ui-diagnostic-map-table>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      overflow: auto;\n    }\n    #content {\n      display: flex;\n      flex-direction: column;\n      flex: 0 1 auto;\n      align-self: stretch;\n    }\n    #content > * {\n      flex: 0 0 auto;\n      align-self: stretch;\n    }\n    #histogramContainer {\n      display: flex;\n    }\n\n    tr-ui-a-multi-event-summary-table {\n      border-bottom: 1px solid #aaa;\n    }\n\n    tr-ui-a-selection-summary-table  {\n      margin-top: 1.25em;\n      border-top: 1px solid #aaa;\n      background-color: #eee;\n      font-weight: bold;\n      margin-bottom: 1.25em;\n      border-bottom: 1px solid #aaa;\n    }\n    </style>\n    <div id=\"content\">\n      <tr-ui-a-multi-event-summary-table id=\"eventSummaryTable\">\n      </tr-ui-a-multi-event-summary-table>\n      <tr-ui-a-selection-summary-table id=\"selectionSummaryTable\">\n      </tr-ui-a-selection-summary-table>\n      <tr-ui-b-radio-picker id=\"radioPicker\">\n      </tr-ui-b-radio-picker>\n      <div id=\"histogramContainer\">\n        <tr-v-ui-histogram-span id=\"histogramSpan\">\n        </tr-v-ui-histogram-span>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-related-events\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-async-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #container {\n      display: flex;\n      flex: 1 1 auto;\n    }\n    #events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <div id=\"container\">\n      <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n      <div id=\"events\">\n        <tr-ui-a-related-events id=\"relatedEvents\"></tr-ui-a-related-events>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-cpu-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      flex: 1 1 auto;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-flow-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-instant-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-object-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-frame-power-usage-chart\">\n  <template>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-power-sample-summary-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-power-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #tables {\n      display: flex;\n      flex-direction: column;\n      width: 50%;\n    }\n    #chart {\n      width: 50%;\n    }\n    </style>\n    <div id=\"tables\">\n      <tr-ui-a-power-sample-summary-table id=\"summaryTable\">\n      </tr-ui-a-power-sample-summary-table>\n    </div>\n    <tr-ui-a-frame-power-usage-chart id=\"chart\">\n    </tr-ui-a-frame-power-usage-chart>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-sample-sub-view\">\n  <template>\n    <style>\n    :host { display: block; }\n    #control {\n      background-color: #e6e6e6;\n      background-image: -webkit-gradient(linear, 0 0, 0 100%,\n                                         from(#E5E5E5), to(#D1D1D1));\n      flex: 0 0 auto;\n      overflow-x: auto;\n    }\n    #control::-webkit-scrollbar { height: 0px; }\n    #control {\n      font-size: 12px;\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      margin: 1px;\n      margin-right: 2px;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"control\">\n      Sample View Option\n    </div>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-thread-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      display: flex;\n      flex: 1 1 auto;\n      min-width: 0;\n    }\n    #content > tr-ui-a-related-events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-thread-time-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      flex: 1 1 auto;\n      min-width: 0;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-user-expectation-related-samples-table\">\n  <template>\n    <style>\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-user-expectation-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex: 1 1 auto;\n    }\n    #events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"realView\"></tr-ui-a-multi-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-user-expectation-related-samples-table id=\"relatedSamples\"></tr-ui-a-user-expectation-related-samples-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-async-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display:flex;\n      flex-direction: column;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-related-events id=\"relatedEvents\"></tr-ui-a-related-events>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-cpu-slice-sub-view\">\n  <template>\n    <style>\n    table {\n      border-collapse: collapse;\n      border-width: 0;\n      margin-bottom: 25px;\n      width: 100%;\n    }\n\n    table tr > td:first-child {\n      padding-left: 2px;\n    }\n\n    table tr > td {\n      padding: 2px 4px 2px 4px;\n      vertical-align: text-top;\n      width: 150px;\n    }\n\n    table td td {\n      padding: 0 0 0 0;\n      width: auto;\n    }\n    tr {\n      vertical-align: top;\n    }\n\n    tr:nth-child(2n+0) {\n      background-color: #e2e2e2;\n    }\n    </style>\n    <table>\n      <tbody><tr>\n        <td>Running process:</td><td id=\"process-name\"></td>\n      </tr>\n      <tr>\n        <td>Running thread:</td><td id=\"thread-name\"></td>\n      </tr>\n      <tr>\n        <td>Start:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"start\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Duration:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"duration\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Active slices:</td><td id=\"running-thread\"></td>\n      </tr>\n      <tr>\n        <td>Args:</td>\n        <td>\n          <tr-ui-a-generic-object-view id=\"args\">\n          </tr-ui-a-generic-object-view>\n        </td>\n      </tr>\n    </tbody></table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-flow-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"singleEventSubView\">\n    </tr-ui-a-single-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-frame-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #asv {\n      flex: 0 0 auto;\n      align-self: stretch;\n    }\n    </style>\n    <tr-ui-a-alert-sub-view id=\"asv\">\n    </tr-ui-a-alert-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-instant-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-object-instance-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n\n    #snapshots > * {\n      display: block;\n    }\n\n    :host {\n      overflow: auto;\n      display: block;\n    }\n\n    * {\n      -webkit-user-select: text;\n    }\n\n    .title {\n      border-bottom: 1px solid rgb(128, 128, 128);\n      font-size: 110%;\n      font-weight: bold;\n    }\n\n    td, th {\n      font-family: monospace;\n      vertical-align: top;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-object-snapshot-sub-view\">\n  <template>\n    <style>\n    #args {\n      white-space: pre;\n    }\n\n    :host {\n      overflow: auto;\n      display: flex;\n    }\n\n    ::content * {\n      -webkit-user-select: text;\n    }\n\n    ::content .title {\n      border-bottom: 1px solid rgb(128, 128, 128);\n      font-size: 110%;\n      font-weight: bold;\n    }\n\n    ::content td, th {\n      font-family: monospace;\n      vertical-align: top;\n    }\n    </style>\n    <slot></slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-power-sample-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-power-sample-sub-view\">\n  <template>\n    <style>\n    :host { display: block; }\n    </style>\n    <tr-ui-a-power-sample-table id=\"samplesTable\">\n    </tr-ui-a-power-sample-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-thread-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display: flex;\n      flex-direction: column;\n    }\n    #left-part {\n      float: left;\n      display: flex;\n      width: 50%;\n    }\n    #right-part {\n      float: right;\n      width: 50%;\n    }\n    #codeView {\n      overflow-y: scroll;\n    }\n\n    </style>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.22.0/themes/prism.min.css\" integrity=\"sha512-tN7Ec6zAFaVSG3TpNAKtk4DOHNpSwKHxxrsiw4GHKESGPs5njn/0sMCUMl2svV4wo4BK/rCP7juYz+zx+l6oeQ==\" crossorigin=\"anonymous\" />\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/line-numbers/prism-line-numbers.min.css\" integrity=\"sha512-cbQXwDFK7lj2Fqfkuxbo5iD1dSbLlJGXGpfTDqbggqjHJeyzx88I3rfwjS38WJag/ihH7lzuGlGHpDBymLirZQ==\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/line-numbers/prism-line-numbers.min.js\" integrity=\"sha512-br8H6OngKoLht57WKRU5jz3Vr0vF+Tw4G6yhNN2F3dSDheq4JiaasROPJB1wy7PxPk7kV/+5AIbmoZLxxx7Zow==\" crossorigin=\"anonymous\"></script>\n    <div id=\"left-part\">\n      <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n      <div id=\"events\">\n        <tr-ui-a-related-events id=\"relatedEvents\">\n        </tr-ui-a-related-events>\n      </div>\n    </div>\n    <div id=\"right-part\">\n    <div id=\"codeView\">\n      <pre class=\"language-python line-numbers\" style=\"font-size: 0.75em\">\n<code id=\"code-viewer\" class=\"language-python\">\n\n</code>\n      </pre>\n    </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-thread-time-slice-sub-view\">\n  <template>\n    <style>\n    table {\n      border-collapse: collapse;\n      border-width: 0;\n      margin-bottom: 25px;\n      width: 100%;\n    }\n\n    table tr > td:first-child {\n      padding-left: 2px;\n    }\n\n    table tr > td {\n      padding: 2px 4px 2px 4px;\n      vertical-align: text-top;\n      width: 150px;\n    }\n\n    table td td {\n      padding: 0 0 0 0;\n      width: auto;\n    }\n    tr {\n      vertical-align: top;\n    }\n\n    tr:nth-child(2n+0) {\n      background-color: #e2e2e2;\n    }\n    </style>\n    <table>\n      <tbody><tr>\n        <td>Running process:</td><td id=\"process-name\"></td>\n      </tr>\n      <tr>\n        <td>Running thread:</td><td id=\"thread-name\"></td>\n      </tr>\n      <tr>\n        <td>State:</td>\n        <td><b><span id=\"state\"></span></b></td>\n      </tr>\n      <tr>\n        <td>Start:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"start\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Duration:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"duration\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n\n      <tr>\n        <td>On CPU:</td><td id=\"on-cpu\"></td>\n      </tr>\n\n      <tr>\n        <td>Running instead:</td><td id=\"running-instead\"></td>\n      </tr>\n\n      <tr>\n        <td>Args:</td><td id=\"args\"></td>\n      </tr>\n    </tbody></table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-user-expectation-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display: flex;\n      flex-direction: column;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"realView\"></tr-ui-a-single-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-user-expectation-related-samples-table id=\"relatedSamples\"></tr-ui-a-user-expectation-related-samples-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-analysis-view\">\n  <template>\n    <style>\n      :host {\n        background-color: white;\n        display: flex;\n        flex-direction: column;\n        height: 275px;\n        overflow: auto;\n      }\n\n      :host(.tall-mode) {\n        height: 525px;\n      }\n    </style>\n    <slot></slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-dropdown\">\n  <template>\n    <style>\n    button {\n      @apply --dropdown-button;\n    }\n    button.open {\n      @apply --dropdown-button-open;\n    }\n    dialog {\n      position: absolute;\n      margin: 0;\n      padding: 1em;\n      border: 1px solid darkgrey;\n      @apply --dropdown-dialog;\n    }\n    </style>\n\n    <button id=\"button\" on-tap=\"open\">[[label]]</button>\n\n    <dialog id=\"dialog\" on-cancel=\"close\" on-tap=\"onDialogTap_\">\n      <slot></slot>\n    </dialog>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-info-bar-group\">\n  <template>\n    <style>\n    :host {\n      flex: 0 0 auto;\n      flex-direction: column;\n      display: flex;\n    }\n    </style>\n    <div id=\"messages\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-toolbar-button\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      background-color: #f8f8f8;\n      border: 1px solid rgba(0, 0, 0, 0.5);\n      color: rgba(0,0,0,0.8);\n      justify-content: center;\n      align-self: stretch;\n      min-width: 23px;\n    }\n\n    :host(:hover) {\n      background-color: rgba(255, 255, 255, 1.0);\n      border-color: rgba(0, 0, 0, 0.8);\n      box-shadow: 0 0 .05em rgba(0, 0, 0, 0.4);\n      color: rgba(0, 0, 0, 1);\n    }\n\n    #aligner {\n      display: flex;\n      flex: 0 0 auto;\n      align-self: center;\n    }\n    </style>\n    <div id=\"aligner\">\n      <slot></slot>\n    </div>\n  </template>\n</dom-module><style>\n.drawing-container{display:inline;overflow:auto;overflow-x:hidden;position:relative}.drawing-container-canvas{display:block;pointer-events:none;position:absolute;top:0}\n</style><style>\n.letter-dot-track {\n  height: 18px;\n}\n</style><style>\n.chart-track {\n  height: 30px;\n  position: relative;\n}\n</style><style>\n.cpu-usage-track {\n  height: 90px;\n}\n</style><style>\n.power-series-track {\n  height: 90px;\n}\n</style><style>\n.spacing-track{height:4px}\n</style><style>\n.rect-track{height:18px}\n</style><style>\n.thread-track{flex-direction:column;display:flex;position:relative}\n</style><style>\n.process-track-header{display:flex;flex:0 0 auto;background-image:-webkit-gradient(linear,0 0,100% 0,from(#E5E5E5),to(#D1D1D1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;font-size:75%}.process-track-name{flex-grow:1}.process-track-name:before{content:'\\25B8';padding:0 5px}.process-track-base.expanded .process-track-name:before{content:'\\25BE'}.process-track-close{color:black;border:1px solid transparent;padding:0px 2px}.process-track-close:hover{border:1px solid grey}\n</style><style>\n.model-track {\n  flex-grow: 1;\n}\n</style><style>\n.x-axis-track {\n  height: 12px;\n}\n\n.x-axis-track.tall-mode {\n  height: 30px;\n}\n</style><dom-module id=\"tr-ui-timeline-track-view\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      display: flex;\n      position: relative;\n    }\n\n    :host ::content * {\n      -webkit-user-select: none;\n      cursor: default;\n    }\n\n    #drag_box {\n      background-color: rgba(0, 0, 255, 0.25);\n      border: 1px solid rgb(0, 0, 96);\n      font-size: 75%;\n      position: fixed;\n    }\n\n    #hint_text {\n      position: absolute;\n      bottom: 6px;\n      right: 6px;\n      font-size: 8pt;\n    }\n    </style>\n    <slot></slot>\n\n    <div id=\"drag_box\"></div>\n    <div id=\"hint_text\"></div>\n\n    <tv-ui-b-hotkey-controller id=\"hotkey_controller\">\n    </tv-ui-b-hotkey-controller>\n  </template>\n</dom-module><dom-module id=\"tr-ui-find-control\">\n  <template>\n    <style>\n      :host {\n        -webkit-user-select: none;\n        display: flex;\n        position: relative;\n      }\n      input {\n        -webkit-user-select: auto;\n        background-color: #f8f8f8;\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        box-sizing: border-box;\n        margin: 0;\n        padding: 0;\n        width: 170px;\n      }\n      input:focus {\n        background-color: white;\n      }\n      tr-ui-b-toolbar-button {\n        border-left: none;\n        margin: 0;\n      }\n      #hitCount {\n        left: 0;\n        opacity: 0.25;\n        pointer-events: none;\n        position: absolute;\n        text-align: right;\n        top: 2px;\n        width: 167px;\n        z-index: 1;\n      }\n      #spinner {\n        visibility: hidden;\n        width: 8px;\n        height: 8px;\n        left: 154px;\n        pointer-events: none;\n        position: absolute;\n        top: 4px;\n        z-index: 1;\n\n        border: 2px solid transparent;\n        border-bottom: 2px solid rgba(0, 0, 0, 0.5);\n        border-right: 2px solid rgba(0, 0, 0, 0.5);\n        border-radius: 50%;\n      }\n      @keyframes spin { 100% { transform: rotate(360deg); } }\n    </style>\n\n    <input id=\"filter\" on-blur=\"filterBlur\" on-focus=\"filterFocus\" on-input=\"filterTextChanged\" on-keydown=\"filterKeyDown\" on-mouseup=\"filterMouseUp\" type=\"text\"/>\n    <div id=\"spinner\"></div>\n    <tr-ui-b-toolbar-button on-click=\"findPrevious\">\n      ←\n    </tr-ui-b-toolbar-button>\n    <tr-ui-b-toolbar-button on-click=\"findNext\">\n      →\n    </tr-ui-b-toolbar-button>\n    <div id=\"hitCount\">0 of 0</div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-scripting-control\">\n  <template>\n    <style>\n      :host {\n        flex: 1 1 auto;\n      }\n      .root {\n        font-family: monospace;\n        cursor: text;\n\n        padding: 2px;\n        margin: 2px;\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        background: white;\n\n        height: 100px;\n        overflow-y: auto;\n\n        transition-property: opacity, height, padding, margin;\n        transition-duration: .2s;\n        transition-timing-function: ease-out;\n      }\n      .hidden {\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding-top: 0px;\n        padding-bottom: 0px;\n        height: 0px;\n        opacity: 0;\n      }\n      .focused {\n        outline: auto 5px -webkit-focus-ring-color;\n      }\n      #history {\n        -webkit-user-select: text;\n        color: #777;\n      }\n      #promptContainer {\n        display: flex;\n      }\n      #promptMark {\n        width: 1em;\n        color: #468;\n      }\n      #prompt {\n        flex: 1;\n        width: 100%;\n        border: none !important;\n        background-color: inherit !important;\n        font: inherit !important;\n        text-overflow: clip !important;\n        text-decoration: none !important;\n      }\n      #prompt:focus {\n        outline: none;\n      }\n    </style>\n\n    <div class=\"root hidden\" id=\"root\" on-focus=\"onConsoleFocus\" tabindex=\"0\">\n      <div id=\"history\"></div>\n      <div id=\"promptContainer\">\n        <span id=\"promptMark\">&gt;</span>\n        <input id=\"prompt\" on-blur=\"onConsoleBlur\" on-keydown=\"promptKeyDown\" on-keypress=\"promptKeyPress\" type=\"text\"/>\n       </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-side-panel-container\">\n  <template>\n    <style>\n    :host {\n      align-items: stretch;\n      display: flex;\n      background-color: white;\n    }\n\n    :host([expanded]) > #side_panel_drag_handle,\n    :host([expanded]) > active-panel-container {\n      flex: 1 1 auto;\n      border-left: 1px solid black;\n      display: flex;\n    }\n\n    :host(:not([expanded])) > #side_panel_drag_handle,\n    :host(:not([expanded])) > active-panel-container {\n      display: none;\n    }\n\n    active-panel-container {\n      display: flex;\n    }\n\n    tab-strip {\n      flex: 0 0 auto;\n      flex-direction: column;\n      -webkit-user-select: none;\n      background-color: rgb(236, 236, 236);\n      border-left: 1px solid black;\n      cursor: default;\n      display: flex;\n      min-width: 18px; /* workaround for flexbox and writing-mode mixing bug */\n      padding: 10px 0 10px 0;\n      font-size: 12px;\n    }\n\n    tab-strip > tab-strip-label {\n      flex-shrink: 0;\n      -webkit-writing-mode: vertical-rl;\n      white-space: nowrap;\n      display: inline;\n      margin-right: 1px;\n      min-height: 20px;\n      padding: 15px 3px 15px 1px;\n    }\n\n    tab-strip >\n        tab-strip-label:not([enabled]) {\n      color: rgb(128, 128, 128);\n    }\n\n    tab-strip > tab-strip-label[selected] {\n      background-color: white;\n      border: 1px solid rgb(163, 163, 163);\n      border-left: none;\n      padding: 14px 2px 14px 1px;\n    }\n\n    #active_panel_container {\n      overflow: auto;\n    }\n    </style>\n\n    <tr-ui-b-drag-handle id=\"side_panel_drag_handle\"></tr-ui-b-drag-handle>\n    <active-panel-container id=\"active_panel_container\">\n    </active-panel-container>\n    <tab-strip id=\"tab_strip\"></tab-strip>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view-help-overlay\">\n  <template>\n    <style>\n    :host {\n      flex: 1 1 auto;\n      flex-direction: row;\n      display: flex;\n      width: 700px;\n    }\n    .column {\n      width: 50%;\n    }\n    h2 {\n      font-size: 1.2em;\n      margin: 0;\n      margin-top: 5px;\n      text-align: center;\n    }\n    h3 {\n      margin: 0;\n      margin-left: 126px;\n      margin-top: 10px;\n    }\n    .pair {\n      flex: 1 1 auto;\n      flex-direction: row;\n      display: flex;\n    }\n    .command {\n      font-family: monospace;\n      margin-right: 5px;\n      text-align: right;\n      width: 150px;\n    }\n    .action {\n      font-size: 0.9em;\n      text-align: left;\n      width: 200px;\n    }\n    tr-ui-b-mouse-mode-icon {\n      border: 1px solid #888;\n      border-radius: 3px;\n      box-shadow: inset 0 0 2px rgba(0,0,0,0.3);\n      display: inline-block;\n      margin-right: 1px;\n      position: relative;\n      top: 4px;\n    }\n    .mouse-mode-icon.pan-mode {\n      background-position: -1px -11px;\n    }\n    .mouse-mode-icon.select-mode {\n      background-position: -1px -41px;\n    }\n    .mouse-mode-icon.zoom-mode {\n      background-position: -1px -71px;\n    }\n    .mouse-mode-icon.timing-mode {\n      background-position: -1px -101px;\n    }\n    </style>\n    <div class=\"column left\">\n      <h2>Navigation</h2>\n      <div class=\"pair\">\n        <div class=\"command\">w/s</div>\n        <div class=\"action\">Zoom in/out (+shift: faster)</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">a/d</div>\n        <div class=\"action\">Pan left/right (+shift: faster)</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">→/shift-TAB</div>\n        <div class=\"action\">Select previous event</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">←/TAB</div>\n        <div class=\"action\">Select next event</div>\n      </div>\n\n      <h2>Mouse Controls</h2>\n      <div class=\"pair\">\n        <div class=\"command\">click</div>\n        <div class=\"action\">Select event</div>\n      </div>\n      <div class=\"pair\">\n        <div class=\"command\">alt-mousewheel</div>\n        <div class=\"action\">Zoom in/out</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"SELECTION\"></tr-ui-b-mouse-mode-icon>\n        Select mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Box select</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\"><span class=\"mod\"></span>-click/drag</div>\n        <div class=\"action\">Add events to the current selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">double click</div>\n        <div class=\"action\">Select all events with same title</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"PANSCAN\"></tr-ui-b-mouse-mode-icon>\n        Pan mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Pan the view</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"ZOOM\"></tr-ui-b-mouse-mode-icon>\n        Zoom mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Zoom in/out by dragging up/down</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"TIMING\"></tr-ui-b-mouse-mode-icon>\n        Timing mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Create or move markers</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">double click</div>\n        <div class=\"action\">Set marker range to slice</div>\n      </div>\n    </div>\n\n    <div class=\"column right\">\n      <h2>General</h2>\n      <div class=\"pair\">\n        <div class=\"command\">1-4</div>\n        <div class=\"action\">Switch mouse mode</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">shift</div>\n        <div class=\"action\">Hold for temporary select</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">space</div>\n        <div class=\"action\">Hold for temporary pan</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">/</div>\n        <div class=\"action\">Search</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">enter</div>\n        <div class=\"action\">Step through search results</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">f</div>\n        <div class=\"action\">Zoom into selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">z/0</div>\n        <div class=\"action\">Reset zoom and pan</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">g/G</div>\n        <div class=\"action\">Toggle 60hz grid</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">v</div>\n        <div class=\"action\">Highlight VSync</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">h</div>\n        <div class=\"action\">Toggle low/high details</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">m</div>\n        <div class=\"action\">Mark current selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">p</div>\n        <div class=\"action\">Select power samples over current selection interval</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">`</div>\n        <div class=\"action\">Show or hide the scripting console</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">?</div>\n        <div class=\"action\">Show help</div>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view-metadata-overlay\">\n  <template>\n    <style>\n    :host {\n      width: 700px;\n\n      overflow: auto;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      cursor: default;\n      display: flex;\n      font-family: sans-serif;\n      padding: 0;\n    }\n\n    #control {\n      background-color: #e6e6e6;\n      background-image: -webkit-gradient(linear, 0 0, 0 100%,\n          from(#E5E5E5), to(#D1D1D1));\n      flex: 0 0 auto;\n      overflow-x: auto;\n    }\n\n    #control::-webkit-scrollbar { height: 0px; }\n\n    #control > #bar {\n      font-size: 12px;\n      display: flex;\n      flex-direction: row;\n      margin: 1px;\n    }\n\n    #control > #bar > #title {\n      display: flex;\n      align-items: center;\n      padding-left: 8px;\n      padding-right: 8px;\n      flex: 1 1 auto;\n      overflow: hidden;\n      white-space: nowrap;\n    }\n\n    #control > #bar > #left_controls,\n    #control > #bar > #right_controls {\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      flex-shrink: 0;\n    }\n\n    #control > #bar > #left_controls > * { margin-right: 2px; }\n    #control > #bar > #right_controls > * { margin-left: 2px; }\n    #control > #collapsing_controls { display: flex; }\n\n    middle-container {\n      flex: 1 1 auto;\n      flex-direction: row;\n      border-bottom: 1px solid #8e8e8e;\n      display: flex;\n      min-height: 0;\n    }\n\n    middle-container ::content track-view-container {\n      flex: 1 1 auto;\n      display: flex;\n      min-height: 0;\n      min-width: 0;\n      overflow-x: hidden;\n    }\n\n    middle-container ::content track-view-container > * { flex: 1 1 auto; }\n    middle-container > x-timeline-view-side-panel-container { flex: 0 0 auto; }\n    tr-ui-b-drag-handle { flex: 0 0 auto; }\n    tr-ui-a-analysis-view { flex: 0 0 auto; }\n\n    tr-ui-b-dropdown {\n      --dropdown-button: {\n        -webkit-appearance: none;\n        align-items: normal;\n        background-color: rgb(248, 248, 248);\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        box-sizing: content-box;\n        color: rgba(0, 0, 0, 0.8);\n        font-family: sans-serif;\n        font-size: 12px;\n        padding: 2px 5px;\n      }\n    }\n    </style>\n\n    <tv-ui-b-hotkey-controller id=\"hkc\"></tv-ui-b-hotkey-controller>\n    <div id=\"control\">\n      <div id=\"bar\">\n        <div id=\"left_controls\"></div>\n        <div id=\"title\">^_^</div>\n        <div id=\"right_controls\">\n          <tr-ui-b-dropdown id=\"flow_event_filter_dropdown\" label=\"Flow events\"></tr-ui-b-dropdown>\n          <tr-ui-b-dropdown id=\"process_filter_dropdown\" label=\"Processes\"></tr-ui-b-dropdown>\n          <tr-ui-b-toolbar-button id=\"view_metadata_button\">\n            M\n          </tr-ui-b-toolbar-button>\n          <tr-ui-b-dropdown id=\"view_options_dropdown\" label=\"View Options\"></tr-ui-b-dropdown>\n          <tr-ui-find-control id=\"view_find_control\"></tr-ui-find-control>\n          <tr-ui-b-toolbar-button id=\"view_console_button\">\n            »\n          </tr-ui-b-toolbar-button>\n          <tr-ui-b-toolbar-button id=\"view_help_button\">\n            ?\n          </tr-ui-b-toolbar-button>\n        </div>\n      </div>\n      <div id=\"collapsing_controls\"></div>\n      <tr-ui-b-info-bar-group id=\"import-warnings\">\n      </tr-ui-b-info-bar-group>\n      <tr-ui-b-info-bar-group id=\"polyfill-warning\">\n      </tr-ui-b-info-bar-group>\n    </div>\n    <middle-container>\n      <slot></slot>\n\n      <tr-ui-side-panel-container id=\"side_panel_container\">\n      </tr-ui-side-panel-container>\n    </middle-container>\n    <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n    <tr-ui-a-analysis-view id=\"analysis\"></tr-ui-a-analysis-view>\n\n    <tr-v-ui-preferred-display-unit id=\"display_unit\">\n    </tr-v-ui-preferred-display-unit>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table-groupby-picker\">\n  <template>\n    <style>\n    #container {\n      display: flex;\n    }\n    #container *:not(:first-child) {\n      padding-left: 3px;\n      border-left: 1px solid black;\n      margin-left: 3px;\n    }\n    </style>\n\n    <div id=\"container\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table-groupby-picker-group\">\n  <template>\n    <style>\n    :host {\n      white-space: nowrap;\n    }\n    #left, #right {\n      user-select: none;\n      cursor: pointer;\n    }\n    </style>\n\n    <span id=\"left\" on-click=\"moveLeft_\">◀</span>\n    <input id=\"enabled\" on-change=\"onEnableChanged_\" type=\"checkbox\"/>\n    <label for=\"enabled\" id=\"label\"></label>\n    <span id=\"right\" on-click=\"moveRight_\">▶</span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-sp-file-size-stats-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    toolbar {\n      align-items: center;\n      background-color: rgb(236, 236, 236);\n      border-bottom: 1px solid #8e8e8e;\n      display: flex;\n      flex-direction: row;\n      flex-direction: row;\n      flex: 0 0 auto;\n      font-size: 12px;\n      padding: 0 10px 0 10px;\n    }\n    table-container {\n      display: flex;\n      min-height: 0px;\n      overflow-y: auto;\n    }\n    </style>\n\n    <toolbar>\n      <span><b>Group by:</b></span>\n      <tr-ui-b-grouping-table-groupby-picker id=\"picker\">\n      </tr-ui-b-grouping-table-groupby-picker>\n    </toolbar>\n    <table-container>\n      <tr-ui-b-grouping-table id=\"table\"></tr-ui-b-grouping-table>\n    </table-container>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-controls-export\">\n  <template>\n    <style>\n    :host {\n      display: grid;\n      grid-gap: 1em;\n      grid-template-rows: auto auto;\n      grid-template-columns: auto auto;\n    }\n    button {\n      -webkit-appearance: none;\n      border: 0;\n      font-size: initial;\n      padding: 5px;\n    }\n    </style>\n\n    <button on-tap=\"exportRawCsv_\">raw CSV</button>\n    <button on-tap=\"exportRawJson_\">raw JSON</button>\n    <button on-tap=\"exportMergedCsv_\">merged CSV</button>\n    <button on-tap=\"exportMergedJson_\">merged JSON</button>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-controls\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n\n    #help, #feedback {\n      display: none;\n      margin-left: 20px;\n    }\n\n    #search_container {\n      display: inline-flex;\n      margin-right: 20px;\n      padding-bottom: 1px;\n      border-bottom: 1px solid darkgrey;\n    }\n\n    #search {\n      border: 0;\n      max-width: 20em;\n      outline: none;\n    }\n\n    #clear_search {\n      visibility: hidden;\n      height: 1em;\n      stroke: black;\n      stroke-width: 16;\n    }\n\n    #controls {\n      white-space: nowrap;\n    }\n\n    #show_overview, #hide_overview {\n      height: 1em;\n      margin-right: 20px;\n    }\n\n    #show_overview {\n      stroke: blue;\n      stroke-width: 16;\n    }\n\n    #show_overview:hover {\n      background: blue;\n      stroke: white;\n    }\n\n    #hide_overview {\n      display: none;\n      stroke-width: 18;\n      stroke: black;\n    }\n\n    #hide_overview:hover {\n      background: black;\n      stroke: white;\n    }\n\n    #reference_display_label {\n      display: none;\n      margin-right: 20px;\n    }\n\n    #alpha, #alpha_slider_container {\n      display: none;\n    }\n\n    #alpha {\n      margin-right: 20px;\n    }\n\n    #alpha_slider_container {\n      background: white;\n      border: 1px solid black;\n      flex-direction: column;\n      padding: 0.5em;\n      position: absolute;\n      z-index: 10; /* scalar-span uses z-index :-( */\n    }\n\n    #alpha_slider {\n      -webkit-appearance: slider-vertical;\n      align-self: center;\n      height: 200px;\n      width: 30px;\n    }\n\n    #statistic {\n      display: none;\n      margin-right: 20px;\n    }\n\n    #export {\n      margin-right: 20px;\n    }\n    </style>\n\n    <div id=\"controls\">\n      <span id=\"search_container\">\n        <input id=\"search\" placeholder=\"Find Histogram name\" value=\"{{searchQuery::keyup}}\"/>\n        <svg id=\"clear_search\" on-tap=\"clearSearch_\" viewBox=\"0 0 128 128\">\n          <g>\n          <title>Clear search</title>\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n          </g>\n        </svg>\n      </span>\n\n      <svg id=\"show_overview\" on-tap=\"toggleOverviewLineCharts_\" viewBox=\"0 0 128 128\">\n        <g>\n        <title>Show overview charts</title>\n        <line x1=\"19\" x2=\"49\" y1=\"109\" y2=\"49\"></line>\n        <line x1=\"49\" x2=\"79\" y1=\"49\" y2=\"79\"></line>\n        <line x1=\"79\" x2=\"109\" y1=\"79\" y2=\"19\"></line>\n        </g>\n      </svg>\n      <svg id=\"hide_overview\" on-tap=\"toggleOverviewLineCharts_\" viewBox=\"0 0 128 128\">\n        <g>\n        <title>Hide overview charts</title>\n        <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n        <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </g>\n      </svg>\n\n      <select id=\"reference_display_label\" value=\"{{referenceDisplayLabel::change}}\">\n        <option value=\"\">Select a reference column</option>\n      </select>\n\n      <button id=\"alpha\" on-tap=\"openAlphaSlider_\">α=[[alphaString]]</button>\n      <div id=\"alpha_slider_container\">\n        <input id=\"alpha_slider\" max=\"18\" min=\"0\" on-blur=\"closeAlphaSlider_\" on-input=\"updateAlpha_\" type=\"range\" value=\"{{alphaIndex::change}}\"/>\n      </div>\n\n      <select id=\"statistic\" value=\"{{displayStatisticName::change}}\">\n      </select>\n\n      <tr-ui-b-dropdown label=\"Export\">\n        <tr-v-ui-histogram-set-controls-export>\n        </tr-v-ui-histogram-set-controls-export>\n      </tr-ui-b-dropdown>\n\n      <input checked=\"{{showAll::change}}\" id=\"show_all\" title=\"When unchecked, less important histograms are hidden.\" type=\"checkbox\"/>\n      <label for=\"show_all\" title=\"When unchecked, less important histograms are hidden.\">Show all</label>\n\n      <a id=\"help\">Help</a>\n      <a id=\"feedback\">Feedback</a>\n    </div>\n\n    <tr-ui-b-grouping-table-groupby-picker id=\"picker\">\n    </tr-ui-b-grouping-table-groupby-picker>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table-cell\">\n  <template>\n    <style>\n    #histogram_container {\n      display: flex;\n      flex-direction: row;\n    }\n\n    #missing, #empty, #unmergeable, #scalar {\n      flex-grow: 1;\n    }\n\n    #open_histogram, #close_histogram, #open_histogram svg, #close_histogram svg {\n      height: 1em;\n    }\n\n    #open_histogram svg {\n      margin-left: 4px;\n      stroke-width: 0;\n      stroke: blue;\n      fill: blue;\n    }\n    :host(:hover) #open_histogram svg {\n      background: blue;\n      stroke: white;\n      fill: white;\n    }\n\n    #scalar {\n      flex-grow: 1;\n      white-space: nowrap;\n    }\n\n    #histogram {\n      flex-grow: 1;\n    }\n\n    #close_histogram svg line {\n      stroke-width: 18;\n      stroke: black;\n    }\n    #close_histogram:hover svg {\n      background: black;\n    }\n    #close_histogram:hover svg line {\n      stroke: white;\n    }\n\n    #overview_container {\n      display: none;\n    }\n    </style>\n\n    <div id=\"histogram_container\">\n      <span id=\"missing\">(missing)</span>\n      <span id=\"empty\">(empty)</span>\n      <span id=\"unmergeable\">(unmergeable)</span>\n\n      <tr-v-ui-scalar-span id=\"scalar\" on-click=\"openHistogram_\"></tr-v-ui-scalar-span>\n\n      <span id=\"open_histogram\" on-click=\"openHistogram_\">\n        <svg viewBox=\"0 0 128 128\">\n          <rect height=\"16\" width=\"32\" x=\"16\" y=\"24\"></rect>\n          <rect height=\"16\" width=\"96\" x=\"16\" y=\"56\"></rect>\n          <rect height=\"16\" width=\"64\" x=\"16\" y=\"88\"></rect>\n        </svg>\n      </span>\n\n      <span id=\"histogram\"></span>\n\n      <span id=\"close_histogram\" on-click=\"closeHistogram_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n    </div>\n\n    <div id=\"overview_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table-name-cell\">\n  <template>\n    <style>\n    #name_container {\n      display: flex;\n    }\n\n    #name {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n    }\n\n    #show_overview, #hide_overview, #show_overview svg, #hide_overview svg {\n      height: 1em;\n      margin-left: 5px;\n    }\n\n    #show_overview svg {\n      stroke: blue;\n      stroke-width: 16;\n    }\n\n    #show_overview:hover svg {\n      background: blue;\n      stroke: white;\n    }\n\n    #hide_overview {\n      display: none;\n    }\n\n    #hide_overview svg {\n      stroke-width: 18;\n      stroke: black;\n    }\n\n    #hide_overview:hover svg {\n      background: black;\n      stroke: white;\n    }\n\n    #open_histograms, #close_histograms, #open_histograms svg, #close_histograms svg {\n      height: 1em;\n    }\n\n    #close_histograms {\n      display: none;\n    }\n\n    #open_histograms svg {\n      margin-left: 4px;\n      stroke-width: 0;\n      stroke: blue;\n      fill: blue;\n    }\n    #open_histograms:hover svg {\n      background: blue;\n      stroke: white;\n      fill: white;\n    }\n\n    #close_histograms line {\n      stroke-width: 18;\n      stroke: black;\n    }\n    #close_histograms:hover {\n      background: black;\n    }\n    #close_histograms:hover line {\n      stroke: white;\n    }\n\n    #overview_container {\n      display: none;\n    }\n    </style>\n\n    <div id=\"name_container\">\n      <span id=\"name\"></span>\n\n      <span id=\"show_overview\" on-click=\"showOverview_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"19\" x2=\"49\" y1=\"109\" y2=\"49\"></line>\n          <line x1=\"49\" x2=\"79\" y1=\"49\" y2=\"79\"></line>\n          <line x1=\"79\" x2=\"109\" y1=\"79\" y2=\"19\"></line>\n        </svg>\n      </span>\n\n      <span id=\"hide_overview\" on-click=\"hideOverview_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n\n      <span id=\"open_histograms\" on-click=\"openHistograms_\">\n        <svg viewBox=\"0 0 128 128\">\n          <rect height=\"16\" width=\"32\" x=\"16\" y=\"24\"></rect>\n          <rect height=\"16\" width=\"96\" x=\"16\" y=\"56\"></rect>\n          <rect height=\"16\" width=\"64\" x=\"16\" y=\"88\"></rect>\n        </svg>\n      </span>\n\n      <span id=\"close_histograms\" on-click=\"closeHistograms_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n    </div>\n\n    <div id=\"overview_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table\">\n  <template>\n    <style>\n    :host {\n      min-height: 0px;\n      overflow: auto;\n    }\n    #table {\n      margin-top: 5px;\n    }\n    </style>\n\n    <tr-ui-b-table id=\"table\">\n  </tr-ui-b-table></template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-view\">\n  <template>\n    <style>\n    :host {\n      font-family: sans-serif;\n    }\n\n    #zero {\n      color: red;\n      /* histogram-set-table is used by both metrics-side-panel and results.html.\n       * This font-size rule has no effect in results.html, but improves\n       * legibility in the metrics-side-panel, which sets font-size in order to\n       * make this table denser.\n       */\n      font-size: initial;\n    }\n\n    #container {\n      display: none;\n    }\n\n    </style>\n\n    <div id=\"zero\">zero Histograms</div>\n\n    <div id=\"container\">\n      <tr-v-ui-histogram-set-controls id=\"controls\">\n      </tr-v-ui-histogram-set-controls>\n\n      <tr-v-ui-histogram-set-table id=\"table\"></tr-v-ui-histogram-set-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-sp-metrics-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    div#error {\n      color: red;\n    }\n    #results {\n      font-size: 12px;\n    }\n    </style>\n\n    <top-left-controls id=\"top_left_controls\"></top-left-controls>\n\n    <tr-v-ui-histogram-set-view id=\"results\"></tr-v-ui-histogram-set-view>\n\n    <div id=\"error\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-s-alerts-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      width: 250px;\n    }\n    #content {\n      flex-direction: column;\n      display: flex;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n\n    <div id=\"content\">\n      <toolbar id=\"toolbar\"></toolbar>\n      <result-area id=\"result_area\"></result-area>\n    </div>\n  </template>\n</dom-module><script>\n\n// Copyright 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/* WARNING: This file is auto generated.\n *\n * Do not edit directly.\n */\n\n'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(window.Polymer){throw new Error('Cannot proceed. Polymer already present.');}\nwindow.Polymer={};window.Polymer.dom='shadow';}\n(function(){function resolve(){document.body.removeAttribute('unresolved');}\nif(window.WebComponents){addEventListener('WebComponentsReady',resolve);}else{if(document.readyState==='interactive'||document.readyState==='complete'){resolve();}else{addEventListener('DOMContentLoaded',resolve);}}}());window.Polymer={Settings:function(){var settings=window.Polymer||{};if(!settings.noUrlSettings){var parts=location.search.slice(1).split('&');for(var i=0,o;i<parts.length&&(o=parts[i]);i++){o=o.split('=');o[0]&&(settings[o[0]]=o[1]||true);}}\nsettings.wantShadow=settings.dom==='shadow';settings.hasShadow=Boolean(Element.prototype.createShadowRoot);settings.nativeShadow=settings.hasShadow&&!window.ShadowDOMPolyfill;settings.useShadow=settings.wantShadow&&settings.hasShadow;settings.hasNativeImports=Boolean('import'in document.createElement('link'));settings.useNativeImports=settings.hasNativeImports;settings.useNativeCustomElements=!window.CustomElements||window.CustomElements.useNative;settings.useNativeShadow=settings.useShadow&&settings.nativeShadow;settings.usePolyfillProto=!settings.useNativeCustomElements&&!Object.__proto__;settings.hasNativeCSSProperties=!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/)&&window.CSS&&CSS.supports&&CSS.supports('box-shadow','0 0 0 var(--foo)');settings.useNativeCSSProperties=settings.hasNativeCSSProperties&&settings.lazyRegister&&settings.useNativeCSSProperties;settings.isIE=navigator.userAgent.match('Trident');settings.passiveTouchGestures=settings.passiveTouchGestures||false;return settings;}()};(function(){var userPolymer=window.Polymer;window.Polymer=function(prototype){if(typeof prototype==='function'){prototype=prototype.prototype;}\nif(!prototype){prototype={};}\nprototype=desugar(prototype);var customCtor=prototype===prototype.constructor.prototype?prototype.constructor:null;var options={prototype:prototype};if(prototype.extends){options.extends=prototype.extends;}\nPolymer.telemetry._registrate(prototype);var ctor=document.registerElement(prototype.is,options);return customCtor||ctor;};var desugar=function(prototype){var base=Polymer.Base;if(prototype.extends){base=Polymer.Base._getExtendedPrototype(prototype.extends);}\nprototype=Polymer.Base.chainObject(prototype,base);prototype.registerCallback();return prototype;};if(userPolymer){for(var i in userPolymer){Polymer[i]=userPolymer[i];}}\nPolymer.Class=function(prototype){if(!prototype.factoryImpl){prototype.factoryImpl=function(){};}\nreturn desugar(prototype).constructor;};}());Polymer.telemetry={registrations:[],_regLog:function(prototype){console.log('['+prototype.is+']: registered');},_registrate:function(prototype){this.registrations.push(prototype);Polymer.log&&this._regLog(prototype);},dumpRegistrations:function(){this.registrations.forEach(this._regLog);}};Object.defineProperty(window,'currentImport',{enumerable:true,configurable:true,get:function(){return(document._currentScript||document.currentScript||{}).ownerDocument;}});Polymer.RenderStatus={_ready:false,_callbacks:[],whenReady:function(cb){if(this._ready){cb();}else{this._callbacks.push(cb);}},_makeReady:function(){this._ready=true;for(var i=0;i<this._callbacks.length;i++){this._callbacks[i]();}\nthis._callbacks=[];},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.RenderStatus._makeReady();});},_afterNextRenderQueue:[],_waitingNextRender:false,afterNextRender:function(element,fn,args){this._watchNextRender();this._afterNextRenderQueue.push([element,fn,args]);},hasRendered:function(){return this._ready;},_watchNextRender:function(){if(!this._waitingNextRender){this._waitingNextRender=true;var fn=function(){Polymer.RenderStatus._flushNextRender();};if(!this._ready){this.whenReady(fn);}else{requestAnimationFrame(fn);}}},_flushNextRender:function(){var self=this;setTimeout(function(){self._flushRenderCallbacks(self._afterNextRenderQueue);self._afterNextRenderQueue=[];self._waitingNextRender=false;});},_flushRenderCallbacks:function(callbacks){for(var i=0,h;i<callbacks.length;i++){h=callbacks[i];h[1].apply(h[0],h[2]||Polymer.nar);}}};if(window.HTMLImports){HTMLImports.whenReady(function(){Polymer.RenderStatus._catchFirstRender();});}else{Polymer.RenderStatus._catchFirstRender();}\nPolymer.ImportStatus=Polymer.RenderStatus;Polymer.ImportStatus.whenLoaded=Polymer.ImportStatus.whenReady;(function(){'use strict';var settings=Polymer.Settings;Polymer.Base={__isPolymerInstance__:true,_addFeature:function(feature){this.mixin(this,feature);},registerCallback:function(){if(settings.lazyRegister==='max'){if(this.beforeRegister){this.beforeRegister();}}else{this._desugarBehaviors();for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(this);}}\nif(this.beforeRegister){this.beforeRegister();}}\nthis._registerFeatures();if(!settings.lazyRegister){this.ensureRegisterFinished();}},createdCallback:function(){if(settings.disableUpgradeEnabled){if(this.hasAttribute('disable-upgrade')){this._propertySetter=disableUpgradePropertySetter;this._configValue=null;this.__data__={};return;}else{this.__hasInitialized=true;}}\nthis.__initialize();},__initialize:function(){if(!this.__hasRegisterFinished){this._ensureRegisterFinished(this.__proto__);}\nPolymer.telemetry.instanceCount++;this.root=this;for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.created){b.created.call(this);}}\nif(this.created){this.created();}\nthis._initFeatures();},ensureRegisterFinished:function(){this._ensureRegisterFinished(this);},_ensureRegisterFinished:function(proto){if(proto.__hasRegisterFinished!==proto.is||!proto.is){if(settings.lazyRegister==='max'){proto._desugarBehaviors();for(var i=0,b;i<proto.behaviors.length;i++){b=proto.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(proto);}}}\nproto.__hasRegisterFinished=proto.is;if(proto._finishRegisterFeatures){proto._finishRegisterFeatures();}\nfor(var j=0,pb;j<proto.behaviors.length;j++){pb=proto.behaviors[j];if(pb.registered){pb.registered.call(proto);}}\nif(proto.registered){proto.registered();}\nif(settings.usePolyfillProto&&proto!==this){proto.extend(this,proto);}}},attachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=true;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.attached){b.attached.call(self);}}\nif(self.attached){self.attached();}});},detachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=false;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.detached){b.detached.call(self);}}\nif(self.detached){self.detached();}});},attributeChangedCallback:function(name,oldValue,newValue){this._attributeChangedImpl(name);for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.attributeChanged){b.attributeChanged.call(this,name,oldValue,newValue);}}\nif(this.attributeChanged){this.attributeChanged(name,oldValue,newValue);}},_attributeChangedImpl:function(name){this._setAttributeToProperty(this,name);},extend:function(target,source){if(target&&source){var n$=Object.getOwnPropertyNames(source);for(var i=0,n;i<n$.length&&(n=n$[i]);i++){this.copyOwnProperty(n,source,target);}}\nreturn target||source;},mixin:function(target,source){for(var i in source){target[i]=source[i];}\nreturn target;},copyOwnProperty:function(name,source,target){var pd=Object.getOwnPropertyDescriptor(source,name);if(pd){Object.defineProperty(target,name,pd);}},_logger:function(level,args){if(args.length===1&&Array.isArray(args[0])){args=args[0];}\nswitch(level){case'log':case'warn':case'error':console[level].apply(console,args);break;}},_log:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('log',args);},_warn:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('warn',args);},_error:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('error',args);},_logf:function(){return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0));}};Polymer.Base._logPrefix=function(){var color=window.chrome&&!/edge/i.test(navigator.userAgent)||/firefox/i.test(navigator.userAgent);return color?['%c[%s::%s]:','font-weight: bold; background-color:#EEEE00;']:['[%s::%s]:'];}();Polymer.Base.chainObject=function(object,inherited){if(object&&inherited&&object!==inherited){if(!Object.__proto__){object=Polymer.Base.extend(Object.create(inherited),object);}\nobject.__proto__=inherited;}\nreturn object;};Polymer.Base=Polymer.Base.chainObject(Polymer.Base,HTMLElement.prototype);Polymer.BaseDescriptors={};var disableUpgradePropertySetter;if(settings.disableUpgradeEnabled){disableUpgradePropertySetter=function(property,value){this.__data__[property]=value;};var origAttributeChangedCallback=Polymer.Base.attributeChangedCallback;Polymer.Base.attributeChangedCallback=function(name,oldValue,newValue){if(!this.__hasInitialized&&name==='disable-upgrade'){this.__hasInitialized=true;this._propertySetter=Polymer.Bind._modelApi._propertySetter;this._configValue=Polymer.Base._configValue;this.__initialize();}\norigAttributeChangedCallback.call(this,name,oldValue,newValue);};}\nif(window.CustomElements){Polymer.instanceof=CustomElements.instanceof;}else{Polymer.instanceof=function(obj,ctor){return obj instanceof ctor;};}\nPolymer.isInstance=function(obj){return Boolean(obj&&obj.__isPolymerInstance__);};Polymer.telemetry.instanceCount=0;}());(function(){var modules={};var lcModules={};var findModule=function(id){return modules[id]||lcModules[id.toLowerCase()];};var DomModule=function(){return document.createElement('dom-module');};DomModule.prototype=Object.create(HTMLElement.prototype);Polymer.Base.mixin(DomModule.prototype,{createdCallback:function(){this.register();},register:function(id){id=id||this.id||this.getAttribute('name')||this.getAttribute('is');if(id){this.id=id;modules[id]=this;lcModules[id.toLowerCase()]=this;}},import:function(id,selector){if(id){var m=findModule(id);if(!m){forceDomModulesUpgrade();m=findModule(id);}\nif(m&&selector){m=m.querySelector(selector);}\nreturn m;}}});Object.defineProperty(DomModule.prototype,'constructor',{value:DomModule,configurable:true,writable:true});var cePolyfill=window.CustomElements&&!CustomElements.useNative;document.registerElement('dom-module',DomModule);function forceDomModulesUpgrade(){if(cePolyfill){var script=document._currentScript||document.currentScript;var doc=script&&script.ownerDocument||document;var modules=doc.querySelectorAll('dom-module');for(var i=modules.length-1,m;i>=0&&(m=modules[i]);i--){if(m.__upgraded__){return;}else{CustomElements.upgrade(m);}}}}}());Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var module=(document._currentScript||document.currentScript).parentNode;if(module.localName==='dom-module'){var id=module.id||module.getAttribute('name')||module.getAttribute('is');this.is=id;}}\nif(this.is){this.is=this.is.toLowerCase();}}});Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){if(this.behaviors.length){this.behaviors=this._desugarSomeBehaviors(this.behaviors);}},_desugarSomeBehaviors:function(behaviors){var behaviorSet=[];behaviors=this._flattenBehaviorsList(behaviors);for(var i=behaviors.length-1;i>=0;i--){var b=behaviors[i];if(behaviorSet.indexOf(b)===-1){this._mixinBehavior(b);behaviorSet.unshift(b);}}\nreturn behaviorSet;},_flattenBehaviorsList:function(behaviors){var flat=[];for(var i=0;i<behaviors.length;i++){var b=behaviors[i];if(b instanceof Array){flat=flat.concat(this._flattenBehaviorsList(b));}else if(b){flat.push(b);}else{this._warn(this._logf('_flattenBehaviorsList','behavior is null, check for missing or 404 import'));}}\nreturn flat;},_mixinBehavior:function(b){var n$=Object.getOwnPropertyNames(b);var useAssignment=b._noAccessors;for(var i=0,n;i<n$.length&&(n=n$[i]);i++){if(!Polymer.Base._behaviorProperties[n]&&!this.hasOwnProperty(n)){if(useAssignment){this[n]=b[n];}else{this.copyOwnProperty(n,b,this);}}}},_prepBehaviors:function(){this._prepFlattenedBehaviors(this.behaviors);},_prepFlattenedBehaviors:function(behaviors){for(var i=0,l=behaviors.length;i<l;i++){this._prepBehavior(behaviors[i]);}\nthis._prepBehavior(this);},_marshalBehaviors:function(){for(var i=0;i<this.behaviors.length;i++){this._marshalBehavior(this.behaviors[i]);}\nthis._marshalBehavior(this);}});Polymer.Base._behaviorProperties={hostAttributes:true,beforeRegister:true,registered:true,properties:true,observers:true,listeners:true,created:true,attached:true,detached:true,attributeChanged:true,ready:true,_noAccessors:true};Polymer.Base._addFeature({_getExtendedPrototype:function(tag){return this._getExtendedNativePrototype(tag);},_nativePrototypes:{},_getExtendedNativePrototype:function(tag){var p=this._nativePrototypes[tag];if(!p){p=Object.create(this.getNativePrototype(tag));var p$=Object.getOwnPropertyNames(Polymer.Base);for(var i=0,n;i<p$.length&&(n=p$[i]);i++){if(!Polymer.BaseDescriptors[n]){p[n]=Polymer.Base[n];}}\nObject.defineProperties(p,Polymer.BaseDescriptors);this._nativePrototypes[tag]=p;}\nreturn p;},getNativePrototype:function(tag){return Object.getPrototypeOf(document.createElement(tag));}});Polymer.Base._addFeature({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this.is]:[this.is];var ctor=function(){return this._factory(arguments);};if(this.hasOwnProperty('extends')){ctor.extends=this.extends;}\nObject.defineProperty(this,'constructor',{value:ctor,writable:true,configurable:true});ctor.prototype=this;},_factory:function(args){var elt=document.createElement.apply(document,this._factoryArgs);if(this.factoryImpl){this.factoryImpl.apply(elt,args);}\nreturn elt;}});Polymer.nob=Object.create(null);Polymer.Base._addFeature({getPropertyInfo:function(property){var info=this._getPropertyInfo(property,this.properties);if(!info){for(var i=0;i<this.behaviors.length;i++){info=this._getPropertyInfo(property,this.behaviors[i].properties);if(info){return info;}}}\nreturn info||Polymer.nob;},_getPropertyInfo:function(property,properties){var p=properties&&properties[property];if(typeof p==='function'){p=properties[property]={type:p};}\nif(p){p.defined=true;}\nreturn p;},_prepPropertyInfo:function(){this._propertyInfo={};for(var i=0;i<this.behaviors.length;i++){this._addPropertyInfo(this._propertyInfo,this.behaviors[i].properties);}\nthis._addPropertyInfo(this._propertyInfo,this.properties);this._addPropertyInfo(this._propertyInfo,this._propertyEffects);},_addPropertyInfo:function(target,source){if(source){var t,s;for(var i in source){t=target[i];s=source[i];if(i[0]==='_'&&!s.readOnly){continue;}\nif(!target[i]){target[i]={type:typeof s==='function'?s:s.type,readOnly:s.readOnly,attribute:Polymer.CaseMap.camelToDashCase(i)};}else{if(!t.type){t.type=s.type;}\nif(!t.readOnly){t.readOnly=s.readOnly;}}}}}});(function(){var propertiesDesc={configurable:true,writable:true,enumerable:true,value:{}};Polymer.BaseDescriptors.properties=propertiesDesc;Object.defineProperty(Polymer.Base,'properties',propertiesDesc);}());Polymer.CaseMap={_caseMap:{},_rx:{dashToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(dash){return this._caseMap[dash]||(this._caseMap[dash]=dash.indexOf('-')<0?dash:dash.replace(this._rx.dashToCamel,function(m){return m[1].toUpperCase();}));},camelToDashCase:function(camel){return this._caseMap[camel]||(this._caseMap[camel]=camel.replace(this._rx.camelToDash,'-$1').toLowerCase());}};Polymer.Base._addFeature({_addHostAttributes:function(attributes){if(!this._aggregatedAttributes){this._aggregatedAttributes={};}\nif(attributes){this.mixin(this._aggregatedAttributes,attributes);}},_marshalHostAttributes:function(){if(this._aggregatedAttributes){this._applyAttributes(this,this._aggregatedAttributes);}},_applyAttributes:function(node,attr$){for(var n in attr$){if(!this.hasAttribute(n)&&n!=='class'){var v=attr$[n];this.serializeValueToAttribute(v,n,this);}}},_marshalAttributes:function(){this._takeAttributesToModel(this);},_takeAttributesToModel:function(model){if(this.hasAttributes()){for(var i in this._propertyInfo){var info=this._propertyInfo[i];if(this.hasAttribute(info.attribute)){this._setAttributeToProperty(model,info.attribute,i,info);}}}},_setAttributeToProperty:function(model,attribute,property,info){if(!this._serializing){property=property||Polymer.CaseMap.dashToCamelCase(attribute);info=info||this._propertyInfo&&this._propertyInfo[property];if(info&&!info.readOnly){var v=this.getAttribute(attribute);model[property]=this.deserialize(v,info.type);}}},_serializing:false,reflectPropertyToAttribute:function(property,attribute,value){this._serializing=true;value=value===undefined?this[property]:value;this.serializeValueToAttribute(value,attribute||Polymer.CaseMap.camelToDashCase(property));this._serializing=false;},serializeValueToAttribute:function(value,attribute,node){var str=this.serialize(value);node=node||this;if(str===undefined){node.removeAttribute(attribute);}else{node.setAttribute(attribute,str);}},deserialize:function(value,type){switch(type){case Number:value=Number(value);break;case Boolean:value=value!=null;break;case Object:try{value=JSON.parse(value);}catch(x){}\nbreak;case Array:try{value=JSON.parse(value);}catch(x){value=null;console.warn('Polymer::Attributes: couldn`t decode Array as JSON');}\nbreak;case Date:value=new Date(value);break;case String:default:break;}\nreturn value;},serialize:function(value){switch(typeof value){case'boolean':return value?'':undefined;case'object':if(value instanceof Date){return value.toString();}else if(value){try{return JSON.stringify(value);}catch(x){return'';}}\ndefault:return value!=null?value:undefined;}}});Polymer.version=\"1.11.3\";Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();this._prepBehaviors();this._prepConstructor();this._prepPropertyInfo();},_prepBehavior:function(b){this._addHostAttributes(b.hostAttributes);},_marshalBehavior:function(b){},_initFeatures:function(){this._marshalHostAttributes();this._marshalBehaviors();}});(function(){function resolveCss(cssText,ownerDocument){return cssText.replace(CSS_URL_RX,function(m,pre,url,post){return pre+'\\''+resolve(url.replace(/[\"']/g,''),ownerDocument)+'\\''+post;});}\nfunction resolveAttrs(element,ownerDocument){for(var name in URL_ATTRS){var a$=URL_ATTRS[name];for(var i=0,l=a$.length,a,at,v;i<l&&(a=a$[i]);i++){if(name==='*'||element.localName===name){at=element.attributes[a];v=at&&at.value;if(v&&v.search(BINDING_RX)<0){at.value=a==='style'?resolveCss(v,ownerDocument):resolve(v,ownerDocument);}}}}}\nfunction resolve(url,ownerDocument){if(url&&ABS_URL.test(url)){return url;}\nvar resolver=getUrlResolver(ownerDocument);resolver.href=url;return resolver.href||url;}\nvar tempDoc;var tempDocBase;function resolveUrl(url,baseUri){if(!tempDoc){tempDoc=document.implementation.createHTMLDocument('temp');tempDocBase=tempDoc.createElement('base');tempDoc.head.appendChild(tempDocBase);}\ntempDocBase.href=baseUri;return resolve(url,tempDoc);}\nfunction getUrlResolver(ownerDocument){return ownerDocument.body.__urlResolver||(ownerDocument.body.__urlResolver=ownerDocument.createElement('a'));}\nfunction pathFromUrl(url){return url.substring(0,url.lastIndexOf('/')+1);}\nvar CSS_URL_RX=/(url\\()([^)]*)(\\))/g;var URL_ATTRS={'*':['href','src','style','url'],form:['action']};var ABS_URL=/(^\\/)|(^#)|(^[\\w-\\d]*:)/;var BINDING_RX=/\\{\\{|\\[\\[/;Polymer.ResolveUrl={resolveCss:resolveCss,resolveAttrs:resolveAttrs,resolveUrl:resolveUrl,pathFromUrl:pathFromUrl};Polymer.rootPath=Polymer.Settings.rootPath||pathFromUrl(document.baseURI||window.location.href);}());Polymer.Base._addFeature({_prepTemplate:function(){var module;if(this._template===undefined){module=Polymer.DomModule.import(this.is);this._template=module&&module.querySelector('template');}\nif(module){var assetPath=module.getAttribute('assetpath')||'';var importURL=Polymer.ResolveUrl.resolveUrl(assetPath,module.ownerDocument.baseURI);this._importPath=Polymer.ResolveUrl.pathFromUrl(importURL);}else{this._importPath='';}\nif(this._template&&this._template.hasAttribute('is')){this._warn(this._logf('_prepTemplate','top-level Polymer template '+'must not be a type-extension, found',this._template,'Move inside simple <template>.'));}\nif(this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate){HTMLTemplateElement.decorate(this._template);}},_stampTemplate:function(){if(this._template){this.root=this.instanceTemplate(this._template);}},instanceTemplate:function(template){var dom=document.importNode(template._content||template.content,true);return dom;}});(function(){var baseAttachedCallback=Polymer.Base.attachedCallback;var baseDetachedCallback=Polymer.Base.detachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(host){this.dataHost=host=host||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1];if(host&&host._clients){host._clients.push(this);}\nthis._clients=null;this._clientsReadied=false;},_beginHosting:function(){Polymer.Base._hostStack.push(this);if(!this._clients){this._clients=[];}},_endHosting:function(){Polymer.Base._hostStack.pop();},_tryReady:function(){this._readied=false;if(this._canReady()){this._ready();}},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied;},_ready:function(){this._beforeClientsReady();if(this._template){this._setupRoot();this._readyClients();}\nthis._clientsReadied=true;this._clients=null;this._afterClientsReady();this._readySelf();},_readyClients:function(){this._beginDistribute();var c$=this._clients;if(c$){for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._ready();}}\nthis._finishDistribute();},_readySelf:function(){for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.ready){b.ready.call(this);}}\nif(this.ready){this.ready();}\nthis._readied=true;if(this._attachedPending){this._attachedPending=false;this.attachedCallback();}},_beforeClientsReady:function(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallback:function(){if(this._readied){this._beforeAttached();baseAttachedCallback.call(this);}else{this._attachedPending=true;}},detachedCallback:function(){if(this._readied){baseDetachedCallback.call(this);}else{this._attachedPending=false;}}});}());Polymer.ArraySplice=function(){function newSplice(index,removed,addedCount){return{index:index,removed:removed,addedCount:addedCount};}\nvar EDIT_LEAVE=0;var EDIT_UPDATE=1;var EDIT_ADD=2;var EDIT_DELETE=3;function ArraySplice(){}\nArraySplice.prototype={calcEditDistances:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var rowCount=oldEnd-oldStart+1;var columnCount=currentEnd-currentStart+1;var distances=new Array(rowCount);for(var i=0;i<rowCount;i++){distances[i]=new Array(columnCount);distances[i][0]=i;}\nfor(var j=0;j<columnCount;j++)\ndistances[0][j]=j;for(i=1;i<rowCount;i++){for(j=1;j<columnCount;j++){if(this.equals(current[currentStart+j-1],old[oldStart+i-1]))\ndistances[i][j]=distances[i-1][j-1];else{var north=distances[i-1][j]+1;var west=distances[i][j-1]+1;distances[i][j]=north<west?north:west;}}}\nreturn distances;},spliceOperationsFromEditDistances:function(distances){var i=distances.length-1;var j=distances[0].length-1;var current=distances[i][j];var edits=[];while(i>0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;}\nif(j==0){edits.push(EDIT_DELETE);i--;continue;}\nvar northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west<north)\nmin=west<northWest?west:northWest;else\nmin=north<northWest?north:northWest;if(min==northWest){if(northWest==current){edits.push(EDIT_LEAVE);}else{edits.push(EDIT_UPDATE);current=northWest;}\ni--;j--;}else if(min==west){edits.push(EDIT_DELETE);i--;current=west;}else{edits.push(EDIT_ADD);j--;current=north;}}\nedits.reverse();return edits;},calcSplices:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var prefixCount=0;var suffixCount=0;var minLength=Math.min(currentEnd-currentStart,oldEnd-oldStart);if(currentStart==0&&oldStart==0)\nprefixCount=this.sharedPrefix(current,old,minLength);if(currentEnd==current.length&&oldEnd==old.length)\nsuffixCount=this.sharedSuffix(current,old,minLength-prefixCount);currentStart+=prefixCount;oldStart+=prefixCount;currentEnd-=suffixCount;oldEnd-=suffixCount;if(currentEnd-currentStart==0&&oldEnd-oldStart==0)\nreturn[];if(currentStart==currentEnd){var splice=newSplice(currentStart,[],0);while(oldStart<oldEnd)\nsplice.removed.push(old[oldStart++]);return[splice];}else if(oldStart==oldEnd)\nreturn[newSplice(currentStart,[],currentEnd-currentStart)];var ops=this.spliceOperationsFromEditDistances(this.calcEditDistances(current,currentStart,currentEnd,old,oldStart,oldEnd));splice=undefined;var splices=[];var index=currentStart;var oldIndex=oldStart;for(var i=0;i<ops.length;i++){switch(ops[i]){case EDIT_LEAVE:if(splice){splices.push(splice);splice=undefined;}\nindex++;oldIndex++;break;case EDIT_UPDATE:if(!splice)\nsplice=newSplice(index,[],0);splice.addedCount++;index++;splice.removed.push(old[oldIndex]);oldIndex++;break;case EDIT_ADD:if(!splice)\nsplice=newSplice(index,[],0);splice.addedCount++;index++;break;case EDIT_DELETE:if(!splice)\nsplice=newSplice(index,[],0);splice.removed.push(old[oldIndex]);oldIndex++;break;}}\nif(splice){splices.push(splice);}\nreturn splices;},sharedPrefix:function(current,old,searchLength){for(var i=0;i<searchLength;i++)\nif(!this.equals(current[i],old[i]))\nreturn i;return searchLength;},sharedSuffix:function(current,old,searchLength){var index1=current.length;var index2=old.length;var count=0;while(count<searchLength&&this.equals(current[--index1],old[--index2]))\ncount++;return count;},calculateSplices:function(current,previous){return this.calcSplices(current,0,current.length,previous,0,previous.length);},equals:function(currentValue,previousValue){return currentValue===previousValue;}};return new ArraySplice();}();Polymer.domInnerHTML=function(){var escapeAttrRegExp=/[&\\u00A0\"]/g;var escapeDataRegExp=/[&\\u00A0<>]/g;function escapeReplace(c){switch(c){case'&':return'&amp;';case'<':return'&lt;';case'>':return'&gt;';case'\"':return'&quot;';case'\\xA0':return'&nbsp;';}}\nfunction escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);}\nfunction escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);}\nfunction makeSet(arr){var set={};for(var i=0;i<arr.length;i++){set[arr[i]]=true;}\nreturn set;}\nvar voidElements=makeSet(['area','base','br','col','command','embed','hr','img','input','keygen','link','meta','param','source','track','wbr']);var plaintextParents=makeSet(['style','script','xmp','iframe','noembed','noframes','plaintext','noscript']);function getOuterHTML(node,parentNode,composed){switch(node.nodeType){case Node.ELEMENT_NODE:var tagName=node.localName;var s='<'+tagName;var attrs=node.attributes;for(var i=0,attr;attr=attrs[i];i++){s+=' '+attr.name+'=\"'+escapeAttr(attr.value)+'\"';}\ns+='>';if(voidElements[tagName]){return s;}\nreturn s+getInnerHTML(node,composed)+'</'+tagName+'>';case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName]){return data;}\nreturn escapeData(data);case Node.COMMENT_NODE:return'<!--'+node.data+'-->';default:console.error(node);throw new Error('not implemented');}}\nfunction getInnerHTML(node,composed){if(node instanceof HTMLTemplateElement)\nnode=node.content;var s='';var c$=Polymer.dom(node).childNodes;for(var i=0,l=c$.length,child;i<l&&(child=c$[i]);i++){s+=getOuterHTML(child,node,composed);}\nreturn s;}\nreturn{getInnerHTML:getInnerHTML};}();(function(){'use strict';var nativeInsertBefore=Element.prototype.insertBefore;var nativeAppendChild=Element.prototype.appendChild;var nativeRemoveChild=Element.prototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(parent){var copy=[],i=0;for(var n=parent.firstChild;n;n=n.nextSibling){copy[i++]=n;}\nreturn copy;},arrayCopyChildren:function(parent){var copy=[],i=0;for(var n=parent.firstElementChild;n;n=n.nextElementSibling){copy[i++]=n;}\nreturn copy;},arrayCopy:function(a$){var l=a$.length;var copy=new Array(l);for(var i=0;i<l;i++){copy[i]=a$[i];}\nreturn copy;}};Polymer.TreeApi.Logical={hasParentNode:function(node){return Boolean(node.__dom&&node.__dom.parentNode);},hasChildNodes:function(node){return Boolean(node.__dom&&node.__dom.childNodes!==undefined);},getChildNodes:function(node){return this.hasChildNodes(node)?this._getChildNodes(node):node.childNodes;},_getChildNodes:function(node){if(!node.__dom.childNodes){node.__dom.childNodes=[];for(var n=node.__dom.firstChild;n;n=n.__dom.nextSibling){node.__dom.childNodes.push(n);}}\nreturn node.__dom.childNodes;},getParentNode:function(node){return node.__dom&&node.__dom.parentNode!==undefined?node.__dom.parentNode:node.parentNode;},getFirstChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?node.__dom.firstChild:node.firstChild;},getLastChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?node.__dom.lastChild:node.lastChild;},getNextSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?node.__dom.nextSibling:node.nextSibling;},getPreviousSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?node.__dom.previousSibling:node.previousSibling;},getFirstElementChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?this._getFirstElementChild(node):node.firstElementChild;},_getFirstElementChild:function(node){var n=node.__dom.firstChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;}\nreturn n;},getLastElementChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?this._getLastElementChild(node):node.lastElementChild;},_getLastElementChild:function(node){var n=node.__dom.lastChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;}\nreturn n;},getNextElementSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?this._getNextElementSibling(node):node.nextElementSibling;},_getNextElementSibling:function(node){var n=node.__dom.nextSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;}\nreturn n;},getPreviousElementSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?this._getPreviousElementSibling(node):node.previousElementSibling;},_getPreviousElementSibling:function(node){var n=node.__dom.previousSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;}\nreturn n;},saveChildNodes:function(node){if(!this.hasChildNodes(node)){node.__dom=node.__dom||{};node.__dom.firstChild=node.firstChild;node.__dom.lastChild=node.lastChild;node.__dom.childNodes=[];for(var n=node.firstChild;n;n=n.nextSibling){n.__dom=n.__dom||{};n.__dom.parentNode=node;node.__dom.childNodes.push(n);n.__dom.nextSibling=n.nextSibling;n.__dom.previousSibling=n.previousSibling;}}},recordInsertBefore:function(node,container,ref_node){container.__dom.childNodes=null;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){for(var n=node.firstChild;n;n=n.nextSibling){this._linkNode(n,container,ref_node);}}else{this._linkNode(node,container,ref_node);}},_linkNode:function(node,container,ref_node){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(ref_node){ref_node.__dom=ref_node.__dom||{};}\nnode.__dom.previousSibling=ref_node?ref_node.__dom.previousSibling:container.__dom.lastChild;if(node.__dom.previousSibling){node.__dom.previousSibling.__dom.nextSibling=node;}\nnode.__dom.nextSibling=ref_node||null;if(node.__dom.nextSibling){node.__dom.nextSibling.__dom.previousSibling=node;}\nnode.__dom.parentNode=container;if(ref_node){if(ref_node===container.__dom.firstChild){container.__dom.firstChild=node;}}else{container.__dom.lastChild=node;if(!container.__dom.firstChild){container.__dom.firstChild=node;}}\ncontainer.__dom.childNodes=null;},recordRemoveChild:function(node,container){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(node===container.__dom.firstChild){container.__dom.firstChild=node.__dom.nextSibling;}\nif(node===container.__dom.lastChild){container.__dom.lastChild=node.__dom.previousSibling;}\nvar p=node.__dom.previousSibling;var n=node.__dom.nextSibling;if(p){p.__dom.nextSibling=n;}\nif(n){n.__dom.previousSibling=p;}\nnode.__dom.parentNode=node.__dom.previousSibling=node.__dom.nextSibling=undefined;container.__dom.childNodes=null;}};Polymer.TreeApi.Composed={getChildNodes:function(node){return Polymer.TreeApi.arrayCopyChildNodes(node);},getParentNode:function(node){return node.parentNode;},clearChildNodes:function(node){node.textContent='';},insertBefore:function(parentNode,newChild,refChild){return nativeInsertBefore.call(parentNode,newChild,refChild||null);},appendChild:function(parentNode,newChild){return nativeAppendChild.call(parentNode,newChild);},removeChild:function(parentNode,node){return nativeRemoveChild.call(parentNode,node);}};}());Polymer.DomApi=function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=function(node){this.node=needsToWrap?DomApi.wrap(node):node;};var needsToWrap=Settings.hasShadow&&!Settings.nativeShadow;DomApi.wrap=window.wrap?window.wrap:function(node){return node;};DomApi.prototype={flush:function(){Polymer.dom.flush();},deepContains:function(node){if(this.node.contains(node)){return true;}\nvar n=node;var doc=node.ownerDocument;while(n&&n!==doc&&n!==this.node){n=Polymer.dom(n).parentNode||n.host;}\nreturn n===this.node;},queryDistributedElements:function(selector){var c$=this.getEffectiveChildNodes();var list=[];for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.nodeType===Node.ELEMENT_NODE&&DomApi.matchesSelector.call(c,selector)){list.push(c);}}\nreturn list;},getEffectiveChildNodes:function(){var list=[];var c$=this.childNodes;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.localName===CONTENT){var d$=dom(c).getDistributedNodes();for(var j=0;j<d$.length;j++){list.push(d$[j]);}}else{list.push(c);}}\nreturn list;},observeNodes:function(callback){if(callback){if(!this.observer){this.observer=this.node.localName===CONTENT?new DomApi.DistributedNodesObserver(this):new DomApi.EffectiveNodesObserver(this);}\nreturn this.observer.addListener(callback);}},unobserveNodes:function(handle){if(this.observer){this.observer.removeListener(handle);}},notifyObserver:function(){if(this.observer){this.observer.notify();}},_query:function(matcher,node,halter){node=node||this.node;var list=[];this._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);return list;},_queryElements:function(elements,matcher,halter,list){for(var i=0,l=elements.length,c;i<l&&(c=elements[i]);i++){if(c.nodeType===Node.ELEMENT_NODE){if(this._queryElement(c,matcher,halter,list)){return true;}}}},_queryElement:function(node,matcher,halter,list){var result=matcher(node);if(result){list.push(node);}\nif(halter&&halter(result)){return result;}\nthis._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);}};var CONTENT=DomApi.CONTENT='content';var dom=DomApi.factory=function(node){node=node||document;if(!node.__domApi){node.__domApi=new DomApi.ctor(node);}\nreturn node.__domApi;};DomApi.hasApi=function(node){return Boolean(node.__domApi);};DomApi.ctor=DomApi;Polymer.dom=function(obj,patch){if(obj instanceof Event){return Polymer.EventApi.factory(obj);}else{return DomApi.factory(obj,patch);}};var p=Element.prototype;DomApi.matchesSelector=p.matches||p.matchesSelector||p.mozMatchesSelector||p.msMatchesSelector||p.oMatchesSelector||p.webkitMatchesSelector;return DomApi;}();(function(){'use strict';var Settings=Polymer.Settings;var DomApi=Polymer.DomApi;var dom=DomApi.factory;var TreeApi=Polymer.TreeApi;var getInnerHTML=Polymer.domInnerHTML.getInnerHTML;var CONTENT=DomApi.CONTENT;if(Settings.useShadow){return;}\nvar nativeCloneNode=Element.prototype.cloneNode;var nativeImportNode=Document.prototype.importNode;Polymer.Base.mixin(DomApi.prototype,{_lazyDistribute:function(host){if(host.shadyRoot&&host.shadyRoot._distributionClean){host.shadyRoot._distributionClean=false;Polymer.dom.addDebouncer(host.debounce('_distribute',host._distributeContent));}},appendChild:function(node){return this.insertBefore(node);},insertBefore:function(node,ref_node){if(ref_node&&TreeApi.Logical.getParentNode(ref_node)!==this.node){throw Error('The ref_node to be inserted before is not a child '+'of this node');}\nif(node.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var parent=TreeApi.Logical.getParentNode(node);if(parent){if(DomApi.hasApi(parent)){dom(parent).notifyObserver();}\nthis._removeNode(node);}else{this._removeOwnerShadyRoot(node);}}\nif(!this._addNode(node,ref_node)){if(ref_node){ref_node=ref_node.localName===CONTENT?this._firstComposedNode(ref_node):ref_node;}\nvar container=this.node._isShadyRoot?this.node.host:this.node;if(ref_node){TreeApi.Composed.insertBefore(container,node,ref_node);}else{TreeApi.Composed.appendChild(container,node);}}\nthis.notifyObserver();return node;},_addNode:function(node,ref_node){var root=this.getOwnerRoot();if(root){var ipAdded=this._maybeAddInsertionPoint(node,this.node);if(!root._invalidInsertionPoints){root._invalidInsertionPoints=ipAdded;}\nthis._addNodeToHost(root.host,node);}\nif(TreeApi.Logical.hasChildNodes(this.node)){TreeApi.Logical.recordInsertBefore(node,this.node,ref_node);}\nvar handled=this._maybeDistribute(node)||this.node.shadyRoot;if(handled){if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){while(node.firstChild){TreeApi.Composed.removeChild(node,node.firstChild);}}else{var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}}\nreturn handled;},removeChild:function(node){if(TreeApi.Logical.getParentNode(node)!==this.node){throw Error('The node to be removed is not a child of this node: '+node);}\nif(!this._removeNode(node)){var container=this.node._isShadyRoot?this.node.host:this.node;var parent=TreeApi.Composed.getParentNode(node);if(container===parent){TreeApi.Composed.removeChild(container,node);}}\nthis.notifyObserver();return node;},_removeNode:function(node){var logicalParent=TreeApi.Logical.hasParentNode(node)&&TreeApi.Logical.getParentNode(node);var distributed;var root=this._ownerShadyRootForNode(node);if(logicalParent){distributed=dom(node)._maybeDistributeParent();TreeApi.Logical.recordRemoveChild(node,logicalParent);if(root&&this._removeDistributedChildren(root,node)){root._invalidInsertionPoints=true;this._lazyDistribute(root.host);}}\nthis._removeOwnerShadyRoot(node);if(root){this._removeNodeFromHost(root.host,node);}\nreturn distributed;},replaceChild:function(node,ref_node){this.insertBefore(node,ref_node);this.removeChild(ref_node);return node;},_hasCachedOwnerRoot:function(node){return Boolean(node._ownerShadyRoot!==undefined);},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node);},_ownerShadyRootForNode:function(node){if(!node){return;}\nvar root=node._ownerShadyRoot;if(root===undefined){if(node._isShadyRoot){root=node;}else{var parent=TreeApi.Logical.getParentNode(node);if(parent){root=parent._isShadyRoot?parent:this._ownerShadyRootForNode(parent);}else{root=null;}}\nif(root||document.documentElement.contains(node)){node._ownerShadyRoot=root;}}\nreturn root;},_maybeDistribute:function(node){var fragContent=node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent&&dom(node).querySelector(CONTENT);var wrappedContent=fragContent&&TreeApi.Logical.getParentNode(fragContent).nodeType!==Node.DOCUMENT_FRAGMENT_NODE;var hasContent=fragContent||node.localName===CONTENT;if(hasContent){var root=this.getOwnerRoot();if(root){this._lazyDistribute(root.host);}}\nvar needsDist=this._nodeNeedsDistribution(this.node);if(needsDist){this._lazyDistribute(this.node);}\nreturn needsDist||hasContent&&!wrappedContent;},_maybeAddInsertionPoint:function(node,parent){var added;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent){var c$=dom(node).querySelectorAll(CONTENT);for(var i=0,n,np,na;i<c$.length&&(n=c$[i]);i++){np=TreeApi.Logical.getParentNode(n);if(np===node){np=parent;}\nna=this._maybeAddInsertionPoint(n,np);added=added||na;}}else if(node.localName===CONTENT){TreeApi.Logical.saveChildNodes(parent);TreeApi.Logical.saveChildNodes(node);added=true;}\nreturn added;},_updateInsertionPoints:function(host){var i$=host.shadyRoot._insertionPoints=dom(host.shadyRoot).querySelectorAll(CONTENT);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(TreeApi.Logical.getParentNode(c));}},_nodeNeedsDistribution:function(node){return node&&node.shadyRoot&&DomApi.hasInsertionPoint(node.shadyRoot);},_addNodeToHost:function(host,node){if(host._elementAdd){host._elementAdd(node);}},_removeNodeFromHost:function(host,node){if(host._elementRemove){host._elementRemove(node);}},_removeDistributedChildren:function(root,container){var hostNeedsDist;var ip$=root._insertionPoints;for(var i=0;i<ip$.length;i++){var content=ip$[i];if(this._contains(container,content)){var dc$=dom(content).getDistributedNodes();for(var j=0;j<dc$.length;j++){hostNeedsDist=true;var node=dc$[j];var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}}}\nreturn hostNeedsDist;},_contains:function(container,node){while(node){if(node==container){return true;}\nnode=TreeApi.Logical.getParentNode(node);}},_removeOwnerShadyRoot:function(node){if(this._hasCachedOwnerRoot(node)){var c$=TreeApi.Logical.getChildNodes(node);for(var i=0,l=c$.length,n;i<l&&(n=c$[i]);i++){this._removeOwnerShadyRoot(n);}}\nnode._ownerShadyRoot=undefined;},_firstComposedNode:function(content){var n$=dom(content).getDistributedNodes();for(var i=0,l=n$.length,n,p$;i<l&&(n=n$[i]);i++){p$=dom(n).getDestinationInsertionPoints();if(p$[p$.length-1]===content){return n;}}},querySelector:function(selector){var result=this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node,function(n){return Boolean(n);})[0];return result||null;},querySelectorAll:function(selector){return this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node);},getDestinationInsertionPoints:function(){return this.node._destinationInsertionPoints||[];},getDistributedNodes:function(){return this.node._distributedNodes||[];},_clear:function(){while(this.childNodes.length){this.removeChild(this.childNodes[0]);}},setAttribute:function(name,value){this.node.setAttribute(name,value);this._maybeDistributeParent();},removeAttribute:function(name){this.node.removeAttribute(name);this._maybeDistributeParent();},_maybeDistributeParent:function(){if(this._nodeNeedsDistribution(this.parentNode)){this._lazyDistribute(this.parentNode);return true;}},cloneNode:function(deep){var n=nativeCloneNode.call(this.node,false);if(deep){var c$=this.childNodes;var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(c$[i]).cloneNode(true);d.appendChild(nc);}}\nreturn n;},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;var n=nativeImportNode.call(doc,externalNode,false);if(deep){var c$=TreeApi.Logical.getChildNodes(externalNode);var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(doc).importNode(c$[i],true);d.appendChild(nc);}}\nreturn n;},_getComposedInnerHTML:function(){return getInnerHTML(this.node,true);}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var active=document.activeElement;if(!active){return null;}\nvar isShadyRoot=!!this.node._isShadyRoot;if(this.node!==document){if(!isShadyRoot){return null;}\nif(this.node.host===active||!this.node.host.contains(active)){return null;}}\nvar activeRoot=dom(active).getOwnerRoot();while(activeRoot&&activeRoot!==this.node){active=activeRoot.host;activeRoot=dom(active).getOwnerRoot();}\nif(this.node===document){return activeRoot?null:active;}else{return activeRoot===this.node?active:null;}},configurable:true},childNodes:{get:function(){var c$=TreeApi.Logical.getChildNodes(this.node);return Array.isArray(c$)?c$:TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){if(TreeApi.Logical.hasChildNodes(this.node)){return Array.prototype.filter.call(this.childNodes,function(n){return n.nodeType===Node.ELEMENT_NODE;});}else{return TreeApi.arrayCopyChildren(this.node);}},configurable:true},parentNode:{get:function(){return TreeApi.Logical.getParentNode(this.node);},configurable:true},firstChild:{get:function(){return TreeApi.Logical.getFirstChild(this.node);},configurable:true},lastChild:{get:function(){return TreeApi.Logical.getLastChild(this.node);},configurable:true},nextSibling:{get:function(){return TreeApi.Logical.getNextSibling(this.node);},configurable:true},previousSibling:{get:function(){return TreeApi.Logical.getPreviousSibling(this.node);},configurable:true},firstElementChild:{get:function(){return TreeApi.Logical.getFirstElementChild(this.node);},configurable:true},lastElementChild:{get:function(){return TreeApi.Logical.getLastElementChild(this.node);},configurable:true},nextElementSibling:{get:function(){return TreeApi.Logical.getNextElementSibling(this.node);},configurable:true},previousElementSibling:{get:function(){return TreeApi.Logical.getPreviousElementSibling(this.node);},configurable:true},textContent:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return this.node.textContent;}else{var tc=[];for(var i=0,cn=this.childNodes,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(c.textContent);}}\nreturn tc.join('');}},set:function(text){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){this.node.textContent=text;}else{this._clear();if(text){this.appendChild(document.createTextNode(text));}}},configurable:true},innerHTML:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return null;}else{return getInnerHTML(this.node);}},set:function(text){var nt=this.node.nodeType;if(nt!==Node.TEXT_NODE||nt!==Node.COMMENT_NODE){this._clear();var d=document.createElement('div');d.innerHTML=text;var c$=TreeApi.arrayCopyChildNodes(d);for(var i=0;i<c$.length;i++){this.appendChild(c$[i]);}}},configurable:true}});DomApi.hasInsertionPoint=function(root){return Boolean(root&&root._insertionPoints.length);};}());(function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=Polymer.DomApi;if(!Settings.useShadow){return;}\nPolymer.Base.mixin(DomApi.prototype,{querySelectorAll:function(selector){return TreeApi.arrayCopy(this.node.querySelectorAll(selector));},getOwnerRoot:function(){var n=this.node;while(n){if(n.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&n.host){return n;}\nn=n.parentNode;}},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;return doc.importNode(externalNode,deep);},getDestinationInsertionPoints:function(){var n$=this.node.getDestinationInsertionPoints&&this.node.getDestinationInsertionPoints();return n$?TreeApi.arrayCopy(n$):[];},getDistributedNodes:function(){var n$=this.node.getDistributedNodes&&this.node.getDistributedNodes();return n$?TreeApi.arrayCopy(n$):[];}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var node=DomApi.wrap(this.node);var activeElement=node.activeElement;return node.contains(activeElement)?activeElement:null;},configurable:true},childNodes:{get:function(){return TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){return TreeApi.arrayCopyChildren(this.node);},configurable:true},textContent:{get:function(){return this.node.textContent;},set:function(value){return this.node.textContent=value;},configurable:true},innerHTML:{get:function(){return this.node.innerHTML;},set:function(value){return this.node.innerHTML=value;},configurable:true}});var forwardMethods=function(m$){for(var i=0;i<m$.length;i++){forwardMethod(m$[i]);}};var forwardMethod=function(method){DomApi.prototype[method]=function(){return this.node[method].apply(this.node,arguments);};};forwardMethods(['cloneNode','appendChild','insertBefore','removeChild','replaceChild','setAttribute','removeAttribute','querySelector']);var forwardProperties=function(f$){for(var i=0;i<f$.length;i++){forwardProperty(f$[i]);}};var forwardProperty=function(name){Object.defineProperty(DomApi.prototype,name,{get:function(){return this.node[name];},configurable:true});};forwardProperties(['parentNode','firstChild','lastChild','nextSibling','previousSibling','firstElementChild','lastElementChild','nextElementSibling','previousElementSibling']);}());Polymer.Base.mixin(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebouncer:null,flush:function(){this._flushGuard=0;this._prepareFlush();while(this._debouncers.length&&this._flushGuard<this._FLUSH_MAX){while(this._debouncers.length){this._debouncers.shift().complete();}\nif(this._finishDebouncer){this._finishDebouncer.complete();}\nthis._prepareFlush();this._flushGuard++;}\nif(this._flushGuard>=this._FLUSH_MAX){console.warn('Polymer.dom.flush aborted. Flush may not be complete.');}},_prepareFlush:function(){if(this._needsTakeRecords){CustomElements.takeRecords();}\nfor(var i=0;i<this._staticFlushList.length;i++){this._staticFlushList[i]();}},addStaticFlush:function(fn){this._staticFlushList.push(fn);},removeStaticFlush:function(fn){var i=this._staticFlushList.indexOf(fn);if(i>=0){this._staticFlushList.splice(i,1);}},addDebouncer:function(debouncer){this._debouncers.push(debouncer);this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush);},_finishFlush:function(){Polymer.dom._debouncers=[];}});Polymer.EventApi=function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.Event=function(event){this.event=event;};if(Settings.useShadow){DomApi.Event.prototype={get rootTarget(){return this.event.path[0];},get localTarget(){return this.event.target;},get path(){var path=this.event.path;if(!Array.isArray(path)){path=Array.prototype.slice.call(path);}\nreturn path;}};}else{DomApi.Event.prototype={get rootTarget(){return this.event.target;},get localTarget(){var current=this.event.currentTarget;var currentRoot=current&&Polymer.dom(current).getOwnerRoot();var p$=this.path;for(var i=0;i<p$.length;i++){if(Polymer.dom(p$[i]).getOwnerRoot()===currentRoot){return p$[i];}}},get path(){if(!this.event._path){var path=[];var current=this.rootTarget;while(current){path.push(current);var insertionPoints=Polymer.dom(current).getDestinationInsertionPoints();if(insertionPoints.length){for(var i=0;i<insertionPoints.length-1;i++){path.push(insertionPoints[i]);}\ncurrent=insertionPoints[insertionPoints.length-1];}else{current=Polymer.dom(current).parentNode||current.host;}}\npath.push(window);this.event._path=path;}\nreturn this.event._path;}};}\nvar factory=function(event){if(!event.__eventApi){event.__eventApi=new DomApi.Event(event);}\nreturn event.__eventApi;};return{factory:factory};}();(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var useShadow=Polymer.Settings.useShadow;Object.defineProperty(DomApi.prototype,'classList',{get:function(){if(!this._classList){this._classList=new DomApi.ClassList(this);}\nreturn this._classList;},configurable:true});DomApi.ClassList=function(host){this.domApi=host;this.node=host.node;};DomApi.ClassList.prototype={add:function(){this.node.classList.add.apply(this.node.classList,arguments);this._distributeParent();},remove:function(){this.node.classList.remove.apply(this.node.classList,arguments);this._distributeParent();},toggle:function(){this.node.classList.toggle.apply(this.node.classList,arguments);this._distributeParent();},_distributeParent:function(){if(!useShadow){this.domApi._maybeDistributeParent();}},contains:function(){return this.node.classList.contains.apply(this.node.classList,arguments);}};}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.EffectiveNodesObserver=function(domApi){this.domApi=domApi;this.node=this.domApi.node;this._listeners=[];};DomApi.EffectiveNodesObserver.prototype={addListener:function(callback){if(!this._isSetup){this._setup();this._isSetup=true;}\nvar listener={fn:callback,_nodes:[]};this._listeners.push(listener);this._scheduleNotify();return listener;},removeListener:function(handle){var i=this._listeners.indexOf(handle);if(i>=0){this._listeners.splice(i,1);handle._nodes=[];}\nif(!this._hasListeners()){this._cleanup();this._isSetup=false;}},_setup:function(){this._observeContentElements(this.domApi.childNodes);},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes);},_hasListeners:function(){return Boolean(this._listeners.length);},_scheduleNotify:function(){if(this._debouncer){this._debouncer.stop();}\nthis._debouncer=Polymer.Debounce(this._debouncer,this._notify);this._debouncer.context=this;Polymer.dom.addDebouncer(this._debouncer);},notify:function(){if(this._hasListeners()){this._scheduleNotify();}},_notify:function(){this._beforeCallListeners();this._callListeners();},_beforeCallListeners:function(){this._updateContentElements();},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes);},_observeContentElements:function(elements){for(var i=0,n;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){n.__observeNodesMap=n.__observeNodesMap||new WeakMap();if(!n.__observeNodesMap.has(this)){n.__observeNodesMap.set(this,this._observeContent(n));}}}},_observeContent:function(content){var self=this;var h=Polymer.dom(content).observeNodes(function(){self._scheduleNotify();});h._avoidChangeCalculation=true;return h;},_unobserveContentElements:function(elements){for(var i=0,n,h;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){h=n.__observeNodesMap.get(this);if(h){Polymer.dom(n).unobserveNodes(h);n.__observeNodesMap.delete(this);}}}},_isContent:function(node){return node.localName==='content';},_callListeners:function(){var o$=this._listeners;var nodes=this._getEffectiveNodes();for(var i=0,o;i<o$.length&&(o=o$[i]);i++){var info=this._generateListenerInfo(o,nodes);if(info||o._alwaysNotify){this._callListener(o,info);}}},_getEffectiveNodes:function(){return this.domApi.getEffectiveChildNodes();},_generateListenerInfo:function(listener,newNodes){if(listener._avoidChangeCalculation){return true;}\nvar oldNodes=listener._nodes;var info={target:this.node,addedNodes:[],removedNodes:[]};var splices=Polymer.ArraySplice.calculateSplices(newNodes,oldNodes);for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){info.removedNodes.push(n);}}\nfor(i=0,s;i<splices.length&&(s=splices[i]);i++){for(j=s.index;j<s.index+s.addedCount;j++){info.addedNodes.push(newNodes[j]);}}\nlistener._nodes=newNodes;if(info.addedNodes.length||info.removedNodes.length){return info;}},_callListener:function(listener,info){return listener.fn.call(this.node,info);},enableShadowAttributeTracking:function(){}};if(Settings.useShadow){var baseSetup=DomApi.EffectiveNodesObserver.prototype._setup;var baseCleanup=DomApi.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.mixin(DomApi.EffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var self=this;this._mutationHandler=function(mxns){if(mxns&&mxns.length){self._scheduleNotify();}};this._observer=new MutationObserver(this._mutationHandler);this._boundFlush=function(){self._flush();};Polymer.dom.addStaticFlush(this._boundFlush);this._observer.observe(this.node,{childList:true});}\nbaseSetup.call(this);},_cleanup:function(){this._observer.disconnect();this._observer=null;this._mutationHandler=null;Polymer.dom.removeStaticFlush(this._boundFlush);baseCleanup.call(this);},_flush:function(){if(this._observer){this._mutationHandler(this._observer.takeRecords());}},enableShadowAttributeTracking:function(){if(this._observer){this._makeContentListenersAlwaysNotify();this._observer.disconnect();this._observer.observe(this.node,{childList:true,attributes:true,subtree:true});var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host&&Polymer.dom(host).observer){Polymer.dom(host).observer.enableShadowAttributeTracking();}}},_makeContentListenersAlwaysNotify:function(){for(var i=0,h;i<this._listeners.length;i++){h=this._listeners[i];h._alwaysNotify=h._isContentListener;}}});}}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.DistributedNodesObserver=function(domApi){DomApi.EffectiveNodesObserver.call(this,domApi);};DomApi.DistributedNodesObserver.prototype=Object.create(DomApi.EffectiveNodesObserver.prototype);Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListeners:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedNodes();}});if(Settings.useShadow){Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){if(!this._observer){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){var self=this;this._observer=Polymer.dom(host).observeNodes(function(){self._scheduleNotify();});this._observer._isContentListener=true;if(this._hasAttrSelect()){Polymer.dom(host).observer.enableShadowAttributeTracking();}}}},_hasAttrSelect:function(){var select=this.node.getAttribute('select');return select&&select.match(/[[.]+/);},_cleanup:function(){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){Polymer.dom(host).unobserveNodes(this._observer);}\nthis._observer=null;}});}}());(function(){var DomApi=Polymer.DomApi;var TreeApi=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this._useContent=this._useContent||Boolean(this._template);},_setupShady:function(){this.shadyRoot=null;if(!this.__domApi){this.__domApi=null;}\nif(!this.__dom){this.__dom=null;}\nif(!this._ownerShadyRoot){this._ownerShadyRoot=undefined;}},_poolContent:function(){if(this._useContent){TreeApi.Logical.saveChildNodes(this);}},_setupRoot:function(){if(this._useContent){this._createLocalRoot();if(!this.dataHost){upgradeLogicalChildren(TreeApi.Logical.getChildNodes(this));}}},_createLocalRoot:function(){this.shadyRoot=this.root;this.shadyRoot._distributionClean=false;this.shadyRoot._hasDistributed=false;this.shadyRoot._isShadyRoot=true;this.shadyRoot._dirtyRoots=[];var i$=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll('content'):[];TreeApi.Logical.saveChildNodes(this.shadyRoot);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(c.parentNode);}\nthis.shadyRoot.host=this;},distributeContent:function(updateInsertionPoints){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoints=this.shadyRoot._invalidInsertionPoints||updateInsertionPoints;var host=getTopDistributingHost(this);Polymer.dom(this)._lazyDistribute(host);}},_distributeContent:function(){if(this._useContent&&!this.shadyRoot._distributionClean){if(this.shadyRoot._invalidInsertionPoints){Polymer.dom(this)._updateInsertionPoints(this);this.shadyRoot._invalidInsertionPoints=false;}\nthis._beginDistribute();this._distributeDirtyRoots();this._finishDistribute();}},_beginDistribute:function(){if(this._useContent&&DomApi.hasInsertionPoint(this.shadyRoot)){this._resetDistribution();this._distributePool(this.shadyRoot,this._collectPool());}},_distributeDirtyRoots:function(){var c$=this.shadyRoot._dirtyRoots;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._distributeContent();}\nthis.shadyRoot._dirtyRoots=[];},_finishDistribute:function(){if(this._useContent){this.shadyRoot._distributionClean=true;if(DomApi.hasInsertionPoint(this.shadyRoot)){this._composeTree();notifyContentObservers(this.shadyRoot);}else{if(!this.shadyRoot._hasDistributed){TreeApi.Composed.clearChildNodes(this);this.appendChild(this.shadyRoot);}else{var children=this._composeNode(this);this._updateChildNodes(this,children);}}\nif(!this.shadyRoot._hasDistributed){notifyInitialDistribution(this);}\nthis.shadyRoot._hasDistributed=true;}},elementMatches:function(selector,node){node=node||this;return DomApi.matchesSelector.call(node,selector);},_resetDistribution:function(){var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(child._destinationInsertionPoints){child._destinationInsertionPoints=undefined;}\nif(isInsertionPoint(child)){clearDistributedDestinationInsertionPoints(child);}}\nvar root=this.shadyRoot;var p$=root._insertionPoints;for(var j=0;j<p$.length;j++){p$[j]._distributedNodes=[];}},_collectPool:function(){var pool=[];var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(isInsertionPoint(child)){pool.push.apply(pool,child._distributedNodes);}else{pool.push(child);}}\nreturn pool;},_distributePool:function(node,pool){var p$=node._insertionPoints;for(var i=0,l=p$.length,p;i<l&&(p=p$[i]);i++){this._distributeInsertionPoint(p,pool);maybeRedistributeParent(p,this);}},_distributeInsertionPoint:function(content,pool){var anyDistributed=false;for(var i=0,l=pool.length,node;i<l;i++){node=pool[i];if(!node){continue;}\nif(this._matchesContentSelect(node,content)){distributeNodeInto(node,content);pool[i]=undefined;anyDistributed=true;}}\nif(!anyDistributed){var children=TreeApi.Logical.getChildNodes(content);for(var j=0;j<children.length;j++){distributeNodeInto(children[j],content);}}},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));var p$=this.shadyRoot._insertionPoints;for(var i=0,l=p$.length,p,parent;i<l&&(p=p$[i]);i++){parent=TreeApi.Logical.getParentNode(p);if(!parent._useContent&&parent!==this&&parent!==this.shadyRoot){this._updateChildNodes(parent,this._composeNode(parent));}}},_composeNode:function(node){var children=[];var c$=TreeApi.Logical.getChildNodes(node.shadyRoot||node);for(var i=0;i<c$.length;i++){var child=c$[i];if(isInsertionPoint(child)){var distributedNodes=child._distributedNodes;for(var j=0;j<distributedNodes.length;j++){var distributedNode=distributedNodes[j];if(isFinalDestination(child,distributedNode)){children.push(distributedNode);}}}else{children.push(child);}}\nreturn children;},_updateChildNodes:function(container,children){var composed=TreeApi.Composed.getChildNodes(container);var splices=Polymer.ArraySplice.calculateSplices(children,composed);for(var i=0,d=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){if(TreeApi.Composed.getParentNode(n)===container){TreeApi.Composed.removeChild(container,n);}\ncomposed.splice(s.index+d,1);}\nd-=s.addedCount;}\nfor(var i=0,s,next;i<splices.length&&(s=splices[i]);i++){next=composed[s.index];for(j=s.index,n;j<s.index+s.addedCount;j++){n=children[j];TreeApi.Composed.insertBefore(container,n,next);composed.splice(j,0,n);}}},_matchesContentSelect:function(node,contentElement){var select=contentElement.getAttribute('select');if(!select){return true;}\nselect=select.trim();if(!select){return true;}\nif(!(node instanceof Element)){return false;}\nvar validSelectors=/^(:not\\()?[*.#[a-zA-Z_|]/;if(!validSelectors.test(select)){return false;}\nreturn this.elementMatches(select,node);},_elementAdd:function(){},_elementRemove:function(){}});var domHostDesc={get:function(){var root=Polymer.dom(this).getOwnerRoot();return root&&root.host;},configurable:true};Object.defineProperty(Polymer.Base,'domHost',domHostDesc);Polymer.BaseDescriptors.domHost=domHostDesc;function distributeNodeInto(child,insertionPoint){insertionPoint._distributedNodes.push(child);var points=child._destinationInsertionPoints;if(!points){child._destinationInsertionPoints=[insertionPoint];}else{points.push(insertionPoint);}}\nfunction clearDistributedDestinationInsertionPoints(content){var e$=content._distributedNodes;if(e$){for(var i=0;i<e$.length;i++){var d=e$[i]._destinationInsertionPoints;if(d){d.splice(d.indexOf(content)+1,d.length);}}}}\nfunction maybeRedistributeParent(content,host){var parent=TreeApi.Logical.getParentNode(content);if(parent&&parent.shadyRoot&&DomApi.hasInsertionPoint(parent.shadyRoot)&&parent.shadyRoot._distributionClean){parent.shadyRoot._distributionClean=false;host.shadyRoot._dirtyRoots.push(parent);}}\nfunction isFinalDestination(insertionPoint,node){var points=node._destinationInsertionPoints;return points&&points[points.length-1]===insertionPoint;}\nfunction isInsertionPoint(node){return node.localName=='content';}\nfunction getTopDistributingHost(host){while(host&&hostNeedsRedistribution(host)){host=host.domHost;}\nreturn host;}\nfunction hostNeedsRedistribution(host){var c$=TreeApi.Logical.getChildNodes(host);for(var i=0,c;i<c$.length;i++){c=c$[i];if(c.localName&&c.localName==='content'){return host.domHost;}}}\nfunction notifyContentObservers(root){for(var i=0,c;i<root._insertionPoints.length;i++){c=root._insertionPoints[i];if(DomApi.hasApi(c)){Polymer.dom(c).notifyObserver();}}}\nfunction notifyInitialDistribution(host){if(DomApi.hasApi(host)){Polymer.dom(host).notifyObserver();}}\nvar needsUpgrade=window.CustomElements&&!CustomElements.useNative;function upgradeLogicalChildren(children){if(needsUpgrade&&children){for(var i=0;i<children.length;i++){CustomElements.upgrade(children[i]);}}}}());if(Polymer.Settings.useShadow){Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot();this.shadowRoot.appendChild(this.root);this.root=this.shadowRoot;}});}Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(''),run:function(callback,waitTime){if(waitTime>0){return~setTimeout(callback,waitTime);}else{this._twiddle.textContent=this._twiddleContent++;this._callbacks.push(callback);return this._currVal++;}},cancel:function(handle){if(handle<0){clearTimeout(~handle);}else{var idx=handle-this._lastVal;if(idx>=0){if(!this._callbacks[idx]){throw'invalid async handle: '+handle;}\nthis._callbacks[idx]=null;}}},_atEndOfMicrotask:function(){var len=this._callbacks.length;for(var i=0;i<len;i++){var cb=this._callbacks[i];if(cb){try{cb();}catch(e){i++;this._callbacks.splice(0,i);this._lastVal+=i;this._twiddle.textContent=this._twiddleContent++;throw e;}}}\nthis._callbacks.splice(0,len);this._lastVal+=len;}};new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask();}).observe(Polymer.Async._twiddle,{characterData:true});Polymer.Debounce=function(){var Async=Polymer.Async;var Debouncer=function(context){this.context=context;var self=this;this.boundComplete=function(){self.complete();};};Debouncer.prototype={go:function(callback,wait){var h;this.finish=function(){Async.cancel(h);};h=Async.run(this.boundComplete,wait);this.callback=callback;},stop:function(){if(this.finish){this.finish();this.finish=null;this.callback=null;}},complete:function(){if(this.finish){var callback=this.callback;this.stop();callback.call(this.context);}}};function debounce(debouncer,callback,wait){if(debouncer){debouncer.stop();}else{debouncer=new Debouncer(this);}\ndebouncer.go(callback,wait);return debouncer;}\nreturn debounce;}();Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={};},debounce:function(jobName,callback,wait){return this._debouncers[jobName]=Polymer.Debounce.call(this,this._debouncers[jobName],callback,wait);},isDebouncerActive:function(jobName){var debouncer=this._debouncers[jobName];return!!(debouncer&&debouncer.finish);},flushDebouncer:function(jobName){var debouncer=this._debouncers[jobName];if(debouncer){debouncer.complete();}},cancelDebouncer:function(jobName){var debouncer=this._debouncers[jobName];if(debouncer){debouncer.stop();}}});Polymer.DomModule=document.createElement('dom-module');Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();this._prepBehaviors();this._prepConstructor();this._prepTemplate();this._prepShady();this._prepPropertyInfo();},_prepBehavior:function(b){this._addHostAttributes(b.hostAttributes);},_initFeatures:function(){this._registerHost();if(this._template){this._poolContent();this._beginHosting();this._stampTemplate();this._endHosting();}\nthis._marshalHostAttributes();this._setupDebouncers();this._marshalBehaviors();this._tryReady();},_marshalBehavior:function(b){}});(function(){Polymer.nar=[];var disableUpgradeEnabled=Polymer.Settings.disableUpgradeEnabled;Polymer.Annotations={parseAnnotations:function(template,stripWhiteSpace){var list=[];var content=template._content||template.content;this._parseNodeAnnotations(content,list,stripWhiteSpace||template.hasAttribute('strip-whitespace'));return list;},_parseNodeAnnotations:function(node,list,stripWhiteSpace){return node.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(node,list):this._parseElementAnnotations(node,list,stripWhiteSpace);},_bindingRegex:function(){var IDENT='(?:'+'[a-zA-Z_$][\\\\w.:$\\\\-*]*'+')';var NUMBER='(?:'+'[-+]?[0-9]*\\\\.?[0-9]+(?:[eE][-+]?[0-9]+)?'+')';var SQUOTE_STRING='(?:'+'\\'(?:[^\\'\\\\\\\\]|\\\\\\\\.)*\\''+')';var DQUOTE_STRING='(?:'+'\"(?:[^\"\\\\\\\\]|\\\\\\\\.)*\"'+')';var STRING='(?:'+SQUOTE_STRING+'|'+DQUOTE_STRING+')';var ARGUMENT='(?:'+IDENT+'|'+NUMBER+'|'+STRING+'\\\\s*'+')';var ARGUMENTS='(?:'+ARGUMENT+'(?:,\\\\s*'+ARGUMENT+')*'+')';var ARGUMENT_LIST='(?:'+'\\\\(\\\\s*'+'(?:'+ARGUMENTS+'?'+')'+'\\\\)\\\\s*'+')';var BINDING='('+IDENT+'\\\\s*'+ARGUMENT_LIST+'?'+')';var OPEN_BRACKET='(\\\\[\\\\[|{{)'+'\\\\s*';var CLOSE_BRACKET='(?:]]|}})';var NEGATE='(?:(!)\\\\s*)?';var EXPRESSION=OPEN_BRACKET+NEGATE+BINDING+CLOSE_BRACKET;return new RegExp(EXPRESSION,'g');}(),_parseBindings:function(text){var re=this._bindingRegex;var parts=[];var lastIndex=0;var m;while((m=re.exec(text))!==null){if(m.index>lastIndex){parts.push({literal:text.slice(lastIndex,m.index)});}\nvar mode=m[1][0];var negate=Boolean(m[2]);var value=m[3].trim();var customEvent,notifyEvent,colon;if(mode=='{'&&(colon=value.indexOf('::'))>0){notifyEvent=value.substring(colon+2);value=value.substring(0,colon);customEvent=true;}\nparts.push({compoundIndex:parts.length,value:value,mode:mode,negate:negate,event:notifyEvent,customEvent:customEvent});lastIndex=re.lastIndex;}\nif(lastIndex&&lastIndex<text.length){var literal=text.substring(lastIndex);if(literal){parts.push({literal:literal});}}\nif(parts.length){return parts;}},_literalFromParts:function(parts){var s='';for(var i=0;i<parts.length;i++){var literal=parts[i].literal;s+=literal||'';}\nreturn s;},_parseTextNodeAnnotation:function(node,list){var parts=this._parseBindings(node.textContent);if(parts){node.textContent=this._literalFromParts(parts)||' ';var annote={bindings:[{kind:'text',name:'textContent',parts:parts,isCompound:parts.length!==1}]};list.push(annote);return annote;}},_parseElementAnnotations:function(element,list,stripWhiteSpace){var annote={bindings:[],events:[]};if(element.localName==='content'){list._hasContent=true;}\nthis._parseChildNodesAnnotations(element,annote,list,stripWhiteSpace);if(element.attributes){this._parseNodeAttributeAnnotations(element,annote,list);if(this.prepElement){this.prepElement(element);}}\nif(annote.bindings.length||annote.events.length||annote.id){list.push(annote);}\nreturn annote;},_parseChildNodesAnnotations:function(root,annote,list,stripWhiteSpace){if(root.firstChild){var node=root.firstChild;var i=0;while(node){var next=node.nextSibling;if(node.localName==='template'&&!node.hasAttribute('preserve-content')){this._parseTemplate(node,i,list,annote,stripWhiteSpace);}\nif(node.localName=='slot'){node=this._replaceSlotWithContent(node);}\nif(node.nodeType===Node.TEXT_NODE){var n=next;while(n&&n.nodeType===Node.TEXT_NODE){node.textContent+=n.textContent;next=n.nextSibling;root.removeChild(n);n=next;}\nif(stripWhiteSpace&&!node.textContent.trim()){root.removeChild(node);i--;}}\nif(node.parentNode){var childAnnotation=this._parseNodeAnnotations(node,list,stripWhiteSpace);if(childAnnotation){childAnnotation.parent=annote;childAnnotation.index=i;}}\nnode=next;i++;}}},_replaceSlotWithContent:function(slot){var content=slot.ownerDocument.createElement('content');while(slot.firstChild){content.appendChild(slot.firstChild);}\nvar attrs=slot.attributes;for(var i=0;i<attrs.length;i++){var attr=attrs[i];content.setAttribute(attr.name,attr.value);}\nvar name=slot.getAttribute('name');if(name){content.setAttribute('select','[slot=\\''+name+'\\']');}\nslot.parentNode.replaceChild(content,slot);return content;},_parseTemplate:function(node,index,list,parent,stripWhiteSpace){var content=document.createDocumentFragment();content._notes=this.parseAnnotations(node,stripWhiteSpace);content.appendChild(node.content);list.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:content,parent:parent,index:index});},_parseNodeAttributeAnnotations:function(node,annotation){var attrs=Array.prototype.slice.call(node.attributes);for(var i=attrs.length-1,a;a=attrs[i];i--){var n=a.name;var v=a.value;var b;if(n.slice(0,3)==='on-'){node.removeAttribute(n);annotation.events.push({name:n.slice(3),value:v});}else if(b=this._parseNodeAttributeAnnotation(node,n,v)){annotation.bindings.push(b);}else if(n==='id'){annotation.id=v;}}},_parseNodeAttributeAnnotation:function(node,name,value){var parts=this._parseBindings(value);if(parts){var origName=name;var kind='property';if(name[name.length-1]=='$'){name=name.slice(0,-1);kind='attribute';}\nvar literal=this._literalFromParts(parts);if(literal&&kind=='attribute'){node.setAttribute(name,literal);}\nif(node.localName==='input'&&origName==='value'){node.setAttribute(origName,'');}\nif(disableUpgradeEnabled&&origName==='disable-upgrade$'){node.setAttribute(name,'');}\nnode.removeAttribute(origName);var propertyName=Polymer.CaseMap.dashToCamelCase(name);if(kind==='property'){name=propertyName;}\nreturn{kind:kind,name:name,propertyName:propertyName,parts:parts,literal:literal,isCompound:parts.length!==1};}},findAnnotatedNode:function(root,annote){var parent=annote.parent&&Polymer.Annotations.findAnnotatedNode(root,annote.parent);if(parent){for(var n=parent.firstChild,i=0;n;n=n.nextSibling){if(annote.index===i++){return n;}}}else{return root;}}};}());Polymer.Path={root:function(path){var dotIndex=path.indexOf('.');if(dotIndex===-1){return path;}\nreturn path.slice(0,dotIndex);},isDeep:function(path){return path.indexOf('.')!==-1;},isAncestor:function(base,path){return base.indexOf(path+'.')===0;},isDescendant:function(base,path){return path.indexOf(base+'.')===0;},translate:function(base,newBase,path){return newBase+path.slice(base.length);},matches:function(base,wildcard,path){return base===path||this.isAncestor(base,path)||Boolean(wildcard)&&this.isDescendant(base,path);}};Polymer.Base._addFeature({_prepAnnotations:function(){if(!this._template){this._notes=[];}else{var self=this;Polymer.Annotations.prepElement=function(element){self._prepElement(element);};if(this._template._content&&this._template._content._notes){this._notes=this._template._content._notes;}else{this._notes=Polymer.Annotations.parseAnnotations(this._template);this._processAnnotations(this._notes);}\nPolymer.Annotations.prepElement=null;}},_processAnnotations:function(notes){for(var i=0;i<notes.length;i++){var note=notes[i];for(var j=0;j<note.bindings.length;j++){var b=note.bindings[j];for(var k=0;k<b.parts.length;k++){var p=b.parts[k];if(!p.literal){var signature=this._parseMethod(p.value);if(signature){p.signature=signature;}else{p.model=Polymer.Path.root(p.value);}}}}\nif(note.templateContent){this._processAnnotations(note.templateContent._notes);var pp=note.templateContent._parentProps=this._discoverTemplateParentProps(note.templateContent._notes);var bindings=[];for(var prop in pp){var name='_parent_'+prop;bindings.push({index:note.index,kind:'property',name:name,propertyName:name,parts:[{mode:'{',model:prop,value:prop}]});}\nnote.bindings=note.bindings.concat(bindings);}}},_discoverTemplateParentProps:function(notes){var pp={};for(var i=0,n;i<notes.length&&(n=notes[i]);i++){for(var j=0,b$=n.bindings,b;j<b$.length&&(b=b$[j]);j++){for(var k=0,p$=b.parts,p;k<p$.length&&(p=p$[k]);k++){if(p.signature){var args=p.signature.args;for(var kk=0;kk<args.length;kk++){var model=args[kk].model;if(model){pp[model]=true;}}\nif(p.signature.dynamicFn){pp[p.signature.method]=true;}}else{if(p.model){pp[p.model]=true;}}}}\nif(n.templateContent){var tpp=n.templateContent._parentProps;Polymer.Base.mixin(pp,tpp);}}\nreturn pp;},_prepElement:function(element){Polymer.ResolveUrl.resolveAttrs(element,this._template.ownerDocument);},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){if(this._template){this._marshalIdNodes();this._marshalAnnotatedNodes();this._marshalAnnotatedListeners();}},_configureAnnotationReferences:function(){var notes=this._notes;var nodes=this._nodes;for(var i=0;i<notes.length;i++){var note=notes[i];var node=nodes[i];this._configureTemplateContent(note,node);this._configureCompoundBindings(note,node);}},_configureTemplateContent:function(note,node){if(note.templateContent){node._content=note.templateContent;}},_configureCompoundBindings:function(note,node){var bindings=note.bindings;for(var i=0;i<bindings.length;i++){var binding=bindings[i];if(binding.isCompound){var storage=node.__compoundStorage__||(node.__compoundStorage__={});var parts=binding.parts;var literals=new Array(parts.length);for(var j=0;j<parts.length;j++){literals[j]=parts[j].literal;}\nvar name=binding.name;storage[name]=literals;if(binding.literal&&binding.kind=='property'){if(node._configValue){node._configValue(name,binding.literal);}else{node[name]=binding.literal;}}}}},_marshalIdNodes:function(){this.$={};for(var i=0,l=this._notes.length,a;i<l&&(a=this._notes[i]);i++){if(a.id){this.$[a.id]=this._findAnnotatedNode(this.root,a);}}},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){var r=new Array(this._notes.length);for(var i=0;i<this._notes.length;i++){r[i]=this._findAnnotatedNode(this.root,this._notes[i]);}\nthis._nodes=r;}},_marshalAnnotatedListeners:function(){for(var i=0,l=this._notes.length,a;i<l&&(a=this._notes[i]);i++){if(a.events&&a.events.length){var node=this._findAnnotatedNode(this.root,a);for(var j=0,e$=a.events,e;j<e$.length&&(e=e$[j]);j++){this.listen(node,e.name,e.value);}}}}});Polymer.Base._addFeature({listeners:{},_listenListeners:function(listeners){var node,name,eventName;for(eventName in listeners){if(eventName.indexOf('.')<0){node=this;name=eventName;}else{name=eventName.split('.');node=this.$[name[0]];name=name[1];}\nthis.listen(node,name,listeners[eventName]);}},listen:function(node,eventName,methodName){var handler=this._recallEventHandler(this,eventName,node,methodName);if(!handler){handler=this._createEventHandler(node,eventName,methodName);}\nif(handler._listening){return;}\nthis._listen(node,eventName,handler);handler._listening=true;},_boundListenerKey:function(eventName,methodName){return eventName+':'+methodName;},_recordEventHandler:function(host,eventName,target,methodName,handler){var hbl=host.__boundListeners;if(!hbl){hbl=host.__boundListeners=new WeakMap();}\nvar bl=hbl.get(target);if(!bl){bl={};if(!Polymer.Settings.isIE||target!=window){hbl.set(target,bl);}}\nvar key=this._boundListenerKey(eventName,methodName);bl[key]=handler;},_recallEventHandler:function(host,eventName,target,methodName){var hbl=host.__boundListeners;if(!hbl){return;}\nvar bl=hbl.get(target);if(!bl){return;}\nvar key=this._boundListenerKey(eventName,methodName);return bl[key];},_createEventHandler:function(node,eventName,methodName){var host=this;var handler=function(e){if(host[methodName]){host[methodName](e,e.detail);}else{host._warn(host._logf('_createEventHandler','listener method `'+methodName+'` not defined'));}};handler._listening=false;this._recordEventHandler(host,eventName,node,methodName,handler);return handler;},unlisten:function(node,eventName,methodName){var handler=this._recallEventHandler(this,eventName,node,methodName);if(handler){this._unlisten(node,eventName,handler);handler._listening=false;}},_listen:function(node,eventName,handler){node.addEventListener(eventName,handler);},_unlisten:function(node,eventName,handler){node.removeEventListener(eventName,handler);}});(function(){'use strict';var wrap=Polymer.DomApi.wrap;var HAS_NATIVE_TA=typeof document.head.style.touchAction==='string';var GESTURE_KEY='__polymerGestures';var HANDLED_OBJ='__polymerGesturesHandled';var TOUCH_ACTION='__polymerGesturesTouchAction';var TAP_DISTANCE=25;var TRACK_DISTANCE=5;var TRACK_LENGTH=2;var MOUSE_TIMEOUT=2500;var MOUSE_EVENTS=['mousedown','mousemove','mouseup','click'];var MOUSE_WHICH_TO_BUTTONS=[0,1,4,2];var MOUSE_HAS_BUTTONS=function(){try{return new MouseEvent('test',{buttons:1}).buttons===1;}catch(e){return false;}}();function isMouseEvent(name){return MOUSE_EVENTS.indexOf(name)>-1;}\nvar SUPPORTS_PASSIVE=false;(function(){try{var opts=Object.defineProperty({},'passive',{get:function(){SUPPORTS_PASSIVE=true;}});window.addEventListener('test',null,opts);window.removeEventListener('test',null,opts);}catch(e){}}());function PASSIVE_TOUCH(eventName){if(isMouseEvent(eventName)||eventName==='touchend'){return;}\nif(HAS_NATIVE_TA&&SUPPORTS_PASSIVE&&Polymer.Settings.passiveTouchGestures){return{passive:true};}}\nvar IS_TOUCH_ONLY=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/);var mouseCanceller=function(mouseEvent){var sc=mouseEvent.sourceCapabilities;if(sc&&!sc.firesTouchEvents){return;}\nmouseEvent[HANDLED_OBJ]={skip:true};if(mouseEvent.type==='click'){var path=Polymer.dom(mouseEvent).path;if(path){for(var i=0;i<path.length;i++){if(path[i]===POINTERSTATE.mouse.target){return;}}}\nmouseEvent.preventDefault();mouseEvent.stopPropagation();}};function setupTeardownMouseCanceller(setup){var events=IS_TOUCH_ONLY?['click']:MOUSE_EVENTS;for(var i=0,en;i<events.length;i++){en=events[i];if(setup){document.addEventListener(en,mouseCanceller,true);}else{document.removeEventListener(en,mouseCanceller,true);}}}\nfunction ignoreMouse(ev){if(!POINTERSTATE.mouse.mouseIgnoreJob){setupTeardownMouseCanceller(true);}\nvar unset=function(){setupTeardownMouseCanceller();POINTERSTATE.mouse.target=null;POINTERSTATE.mouse.mouseIgnoreJob=null;};POINTERSTATE.mouse.target=Polymer.dom(ev).rootTarget;POINTERSTATE.mouse.mouseIgnoreJob=Polymer.Debounce(POINTERSTATE.mouse.mouseIgnoreJob,unset,MOUSE_TIMEOUT);}\nfunction hasLeftMouseButton(ev){var type=ev.type;if(!isMouseEvent(type)){return false;}\nif(type==='mousemove'){var buttons=ev.buttons===undefined?1:ev.buttons;if(ev instanceof window.MouseEvent&&!MOUSE_HAS_BUTTONS){buttons=MOUSE_WHICH_TO_BUTTONS[ev.which]||0;}\nreturn Boolean(buttons&1);}else{var button=ev.button===undefined?0:ev.button;return button===0;}}\nfunction isSyntheticClick(ev){if(ev.type==='click'){if(ev.detail===0){return true;}\nvar t=Gestures.findOriginalTarget(ev);var bcr=t.getBoundingClientRect();var x=ev.pageX,y=ev.pageY;return!(x>=bcr.left&&x<=bcr.right&&(y>=bcr.top&&y<=bcr.bottom));}\nreturn false;}\nvar POINTERSTATE={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:false}};function firstTouchAction(ev){var path=Polymer.dom(ev).path;var ta='auto';for(var i=0,n;i<path.length;i++){n=path[i];if(n[TOUCH_ACTION]){ta=n[TOUCH_ACTION];break;}}\nreturn ta;}\nfunction trackDocument(stateObj,movefn,upfn){stateObj.movefn=movefn;stateObj.upfn=upfn;document.addEventListener('mousemove',movefn);document.addEventListener('mouseup',upfn);}\nfunction untrackDocument(stateObj){document.removeEventListener('mousemove',stateObj.movefn);document.removeEventListener('mouseup',stateObj.upfn);stateObj.movefn=null;stateObj.upfn=null;}\ndocument.addEventListener('touchend',ignoreMouse,SUPPORTS_PASSIVE?{passive:true}:false);var Gestures={gestures:{},recognizers:[],deepTargetFind:function(x,y){var node=document.elementFromPoint(x,y);var next=node;while(next&&next.shadowRoot){next=next.shadowRoot.elementFromPoint(x,y);if(next){node=next;}}\nreturn node;},findOriginalTarget:function(ev){if(ev.path){return ev.path[0];}\nreturn ev.target;},handleNative:function(ev){var handled;var type=ev.type;var node=wrap(ev.currentTarget);var gobj=node[GESTURE_KEY];if(!gobj){return;}\nvar gs=gobj[type];if(!gs){return;}\nif(!ev[HANDLED_OBJ]){ev[HANDLED_OBJ]={};if(type.slice(0,5)==='touch'){var t=ev.changedTouches[0];if(type==='touchstart'){if(ev.touches.length===1){POINTERSTATE.touch.id=t.identifier;}}\nif(POINTERSTATE.touch.id!==t.identifier){return;}\nif(!HAS_NATIVE_TA){if(type==='touchstart'||type==='touchmove'){Gestures.handleTouchAction(ev);}}}}\nhandled=ev[HANDLED_OBJ];if(handled.skip){return;}\nvar recognizers=Gestures.recognizers;for(var i=0,r;i<recognizers.length;i++){r=recognizers[i];if(gs[r.name]&&!handled[r.name]){if(r.flow&&r.flow.start.indexOf(ev.type)>-1&&r.reset){r.reset();}}}\nfor(i=0,r;i<recognizers.length;i++){r=recognizers[i];if(gs[r.name]&&!handled[r.name]){handled[r.name]=true;r[type](ev);}}},handleTouchAction:function(ev){var t=ev.changedTouches[0];var type=ev.type;if(type==='touchstart'){POINTERSTATE.touch.x=t.clientX;POINTERSTATE.touch.y=t.clientY;POINTERSTATE.touch.scrollDecided=false;}else if(type==='touchmove'){if(POINTERSTATE.touch.scrollDecided){return;}\nPOINTERSTATE.touch.scrollDecided=true;var ta=firstTouchAction(ev);var prevent=false;var dx=Math.abs(POINTERSTATE.touch.x-t.clientX);var dy=Math.abs(POINTERSTATE.touch.y-t.clientY);if(!ev.cancelable){}else if(ta==='none'){prevent=true;}else if(ta==='pan-x'){prevent=dy>dx;}else if(ta==='pan-y'){prevent=dx>dy;}\nif(prevent){ev.preventDefault();}else{Gestures.prevent('track');}}},add:function(node,evType,handler){node=wrap(node);var recognizer=this.gestures[evType];var deps=recognizer.deps;var name=recognizer.name;var gobj=node[GESTURE_KEY];if(!gobj){node[GESTURE_KEY]=gobj={};}\nfor(var i=0,dep,gd;i<deps.length;i++){dep=deps[i];if(IS_TOUCH_ONLY&&isMouseEvent(dep)&&dep!=='click'){continue;}\ngd=gobj[dep];if(!gd){gobj[dep]=gd={_count:0};}\nif(gd._count===0){node.addEventListener(dep,this.handleNative,PASSIVE_TOUCH(dep));}\ngd[name]=(gd[name]||0)+1;gd._count=(gd._count||0)+1;}\nnode.addEventListener(evType,handler);if(recognizer.touchAction){this.setTouchAction(node,recognizer.touchAction);}},remove:function(node,evType,handler){node=wrap(node);var recognizer=this.gestures[evType];var deps=recognizer.deps;var name=recognizer.name;var gobj=node[GESTURE_KEY];if(gobj){for(var i=0,dep,gd;i<deps.length;i++){dep=deps[i];gd=gobj[dep];if(gd&&gd[name]){gd[name]=(gd[name]||1)-1;gd._count=(gd._count||1)-1;if(gd._count===0){node.removeEventListener(dep,this.handleNative,PASSIVE_TOUCH(dep));}}}}\nnode.removeEventListener(evType,handler);},register:function(recog){this.recognizers.push(recog);for(var i=0;i<recog.emits.length;i++){this.gestures[recog.emits[i]]=recog;}},findRecognizerByEvent:function(evName){for(var i=0,r;i<this.recognizers.length;i++){r=this.recognizers[i];for(var j=0,n;j<r.emits.length;j++){n=r.emits[j];if(n===evName){return r;}}}\nreturn null;},setTouchAction:function(node,value){if(HAS_NATIVE_TA){node.style.touchAction=value;}\nnode[TOUCH_ACTION]=value;},fire:function(target,type,detail){var ev=Polymer.Base.fire(type,detail,{node:target,bubbles:true,cancelable:true});if(ev.defaultPrevented){var preventer=detail.preventer||detail.sourceEvent;if(preventer&&preventer.preventDefault){preventer.preventDefault();}}},prevent:function(evName){var recognizer=this.findRecognizerByEvent(evName);if(recognizer.info){recognizer.info.prevent=true;}},resetMouseCanceller:function(){if(POINTERSTATE.mouse.mouseIgnoreJob){POINTERSTATE.mouse.mouseIgnoreJob.complete();}}};Gestures.register({name:'downup',deps:['mousedown','touchstart','touchend'],flow:{start:['mousedown','touchstart'],end:['mouseup','touchend']},emits:['down','up'],info:{movefn:null,upfn:null},reset:function(){untrackDocument(this.info);},mousedown:function(e){if(!hasLeftMouseButton(e)){return;}\nvar t=Gestures.findOriginalTarget(e);var self=this;var movefn=function movefn(e){if(!hasLeftMouseButton(e)){self.fire('up',t,e);untrackDocument(self.info);}};var upfn=function upfn(e){if(hasLeftMouseButton(e)){self.fire('up',t,e);}\nuntrackDocument(self.info);};trackDocument(this.info,movefn,upfn);this.fire('down',t,e);},touchstart:function(e){this.fire('down',Gestures.findOriginalTarget(e),e.changedTouches[0],e);},touchend:function(e){this.fire('up',Gestures.findOriginalTarget(e),e.changedTouches[0],e);},fire:function(type,target,event,preventer){Gestures.fire(target,type,{x:event.clientX,y:event.clientY,sourceEvent:event,preventer:preventer,prevent:function(e){return Gestures.prevent(e);}});}});Gestures.register({name:'track',touchAction:'none',deps:['mousedown','touchstart','touchmove','touchend'],flow:{start:['mousedown','touchstart'],end:['mouseup','touchend']},emits:['track'],info:{x:0,y:0,state:'start',started:false,moves:[],addMove:function(move){if(this.moves.length>TRACK_LENGTH){this.moves.shift();}\nthis.moves.push(move);},movefn:null,upfn:null,prevent:false},reset:function(){this.info.state='start';this.info.started=false;this.info.moves=[];this.info.x=0;this.info.y=0;this.info.prevent=false;untrackDocument(this.info);},hasMovedEnough:function(x,y){if(this.info.prevent){return false;}\nif(this.info.started){return true;}\nvar dx=Math.abs(this.info.x-x);var dy=Math.abs(this.info.y-y);return dx>=TRACK_DISTANCE||dy>=TRACK_DISTANCE;},mousedown:function(e){if(!hasLeftMouseButton(e)){return;}\nvar t=Gestures.findOriginalTarget(e);var self=this;var movefn=function movefn(e){var x=e.clientX,y=e.clientY;if(self.hasMovedEnough(x,y)){self.info.state=self.info.started?e.type==='mouseup'?'end':'track':'start';if(self.info.state==='start'){Gestures.prevent('tap');}\nself.info.addMove({x:x,y:y});if(!hasLeftMouseButton(e)){self.info.state='end';untrackDocument(self.info);}\nself.fire(t,e);self.info.started=true;}};var upfn=function upfn(e){if(self.info.started){movefn(e);}\nuntrackDocument(self.info);};trackDocument(this.info,movefn,upfn);this.info.x=e.clientX;this.info.y=e.clientY;},touchstart:function(e){var ct=e.changedTouches[0];this.info.x=ct.clientX;this.info.y=ct.clientY;},touchmove:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];var x=ct.clientX,y=ct.clientY;if(this.hasMovedEnough(x,y)){if(this.info.state==='start'){Gestures.prevent('tap');}\nthis.info.addMove({x:x,y:y});this.fire(t,ct);this.info.state='track';this.info.started=true;}},touchend:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];if(this.info.started){this.info.state='end';this.info.addMove({x:ct.clientX,y:ct.clientY});this.fire(t,ct,e);}},fire:function(target,touch,preventer){var secondlast=this.info.moves[this.info.moves.length-2];var lastmove=this.info.moves[this.info.moves.length-1];var dx=lastmove.x-this.info.x;var dy=lastmove.y-this.info.y;var ddx,ddy=0;if(secondlast){ddx=lastmove.x-secondlast.x;ddy=lastmove.y-secondlast.y;}\nreturn Gestures.fire(target,'track',{state:this.info.state,x:touch.clientX,y:touch.clientY,dx:dx,dy:dy,ddx:ddx,ddy:ddy,sourceEvent:touch,preventer:preventer,hover:function(){return Gestures.deepTargetFind(touch.clientX,touch.clientY);}});}});Gestures.register({name:'tap',deps:['mousedown','click','touchstart','touchend'],flow:{start:['mousedown','touchstart'],end:['click','touchend']},emits:['tap'],info:{x:NaN,y:NaN,prevent:false},reset:function(){this.info.x=NaN;this.info.y=NaN;this.info.prevent=false;},save:function(e){this.info.x=e.clientX;this.info.y=e.clientY;},mousedown:function(e){if(hasLeftMouseButton(e)){this.save(e);}},click:function(e){if(hasLeftMouseButton(e)){this.forward(e);}},touchstart:function(e){this.save(e.changedTouches[0],e);},touchend:function(e){this.forward(e.changedTouches[0],e);},forward:function(e,preventer){var dx=Math.abs(e.clientX-this.info.x);var dy=Math.abs(e.clientY-this.info.y);var t=Gestures.findOriginalTarget(e);if(isNaN(dx)||isNaN(dy)||dx<=TAP_DISTANCE&&dy<=TAP_DISTANCE||isSyntheticClick(e)){if(!this.info.prevent){Gestures.fire(t,'tap',{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:preventer});}}}});var DIRECTION_MAP={x:'pan-x',y:'pan-y',none:'none',all:'auto'};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null;},_listen:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.add(node,eventName,handler);}else{node.addEventListener(eventName,handler);}},_unlisten:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.remove(node,eventName,handler);}else{node.removeEventListener(eventName,handler);}},setScrollDirection:function(direction,node){node=node||this;Gestures.setTouchAction(node,DIRECTION_MAP[direction]||'auto');}});Polymer.Gestures=Gestures;}());(function(){'use strict';Polymer.Base._addFeature({$$:function(slctr){return Polymer.dom(this.root).querySelector(slctr);},toggleClass:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.classList.contains(name);}\nif(bool){Polymer.dom(node).classList.add(name);}else{Polymer.dom(node).classList.remove(name);}},toggleAttribute:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.hasAttribute(name);}\nif(bool){Polymer.dom(node).setAttribute(name,'');}else{Polymer.dom(node).removeAttribute(name);}},classFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).classList.remove(name);}\nif(toElement){Polymer.dom(toElement).classList.add(name);}},attributeFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).removeAttribute(name);}\nif(toElement){Polymer.dom(toElement).setAttribute(name,'');}},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes();},getEffectiveChildren:function(){var list=Polymer.dom(this).getEffectiveChildNodes();return list.filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},getEffectiveTextContent:function(){var cn=this.getEffectiveChildNodes();var tc=[];for(var i=0,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(Polymer.dom(c).textContent);}}\nreturn tc.join('');},queryEffectiveChildren:function(slctr){var e$=Polymer.dom(this).queryDistributedElements(slctr);return e$&&e$[0];},queryAllEffectiveChildren:function(slctr){return Polymer.dom(this).queryDistributedElements(slctr);},getContentChildNodes:function(slctr){var content=Polymer.dom(this.root).querySelector(slctr||'content');return content?Polymer.dom(content).getDistributedNodes():[];},getContentChildren:function(slctr){return this.getContentChildNodes(slctr).filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},fire:function(type,detail,options){options=options||Polymer.nob;var node=options.node||this;detail=detail===null||detail===undefined?{}:detail;var bubbles=options.bubbles===undefined?true:options.bubbles;var cancelable=Boolean(options.cancelable);var useCache=options._useCache;var event=this._getEvent(type,bubbles,cancelable,useCache);event.detail=detail;if(useCache){this.__eventCache[type]=null;}\nnode.dispatchEvent(event);if(useCache){this.__eventCache[type]=event;}\nreturn event;},__eventCache:{},_getEvent:function(type,bubbles,cancelable,useCache){var event=useCache&&this.__eventCache[type];if(!event||(event.bubbles!=bubbles||event.cancelable!=cancelable)){event=new Event(type,{bubbles:Boolean(bubbles),cancelable:cancelable});}\nreturn event;},async:function(callback,waitTime){var self=this;return Polymer.Async.run(function(){callback.call(self);},waitTime);},cancelAsync:function(handle){Polymer.Async.cancel(handle);},arrayDelete:function(path,item){var index;if(Array.isArray(path)){index=path.indexOf(item);if(index>=0){return path.splice(index,1);}}else{var arr=this._get(path);index=arr.indexOf(item);if(index>=0){return this.splice(path,index,1);}}},transform:function(transform,node){node=node||this;node.style.webkitTransform=transform;node.style.transform=transform;},translate3d:function(x,y,z,node){node=node||this;this.transform('translate3d('+x+','+y+','+z+')',node);},importHref:function(href,onload,onerror,optAsync){var link=document.createElement('link');link.rel='import';link.href=href;var list=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{};var cached=list[link.href];var imprt=cached||link;var self=this;var loadListener=function(e){e.target.__firedLoad=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onload.call(self,e);};var errorListener=function(e){e.target.__firedError=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onerror.call(self,e);};if(onload){imprt.addEventListener('load',loadListener);}\nif(onerror){imprt.addEventListener('error',errorListener);}\nif(cached){if(cached.__firedLoad){cached.dispatchEvent(new Event('load'));}\nif(cached.__firedError){cached.dispatchEvent(new Event('error'));}}else{list[link.href]=link;optAsync=Boolean(optAsync);if(optAsync){link.setAttribute('async','');}\ndocument.head.appendChild(link);}\nreturn imprt;},create:function(tag,props){var elt=document.createElement(tag);if(props){for(var n in props){elt[n]=props[n];}}\nreturn elt;},isLightDescendant:function(node){return this!==node&&this.contains(node)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(node).getOwnerRoot();},isLocalDescendant:function(node){return this.root===Polymer.dom(node).getOwnerRoot();}});if(!Polymer.Settings.useNativeCustomElements){var importHref=Polymer.Base.importHref;Polymer.Base.importHref=function(href,onload,onerror,optAsync){CustomElements.ready=false;var loadFn=function(e){CustomElements.upgradeDocumentTree(document);CustomElements.ready=true;if(onload){return onload.call(this,e);}};return importHref.call(this,href,loadFn,onerror,optAsync);};}}());Polymer.Bind={prepareModel:function(model){Polymer.Base.mixin(model,this._modelApi);},_modelApi:{_notifyChange:function(source,event,value){value=value===undefined?this[source]:value;event=event||Polymer.CaseMap.camelToDashCase(source)+'-changed';this.fire(event,{value:value},{bubbles:false,cancelable:false,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE});},_propertySetter:function(property,value,effects,fromAbove){var old=this.__data__[property];if(old!==value&&(old===old||value===value)){this.__data__[property]=value;if(typeof value=='object'){this._clearPath(property);}\nif(this._propertyChanged){this._propertyChanged(property,value,old);}\nif(effects){this._effectEffects(property,value,effects,old,fromAbove);}}\nreturn old;},__setProperty:function(property,value,quiet,node){node=node||this;var effects=node._propertyEffects&&node._propertyEffects[property];if(effects){node._propertySetter(property,value,effects,quiet);}else if(node[property]!==value){node[property]=value;}},_effectEffects:function(property,value,effects,old,fromAbove){for(var i=0,l=effects.length,fx;i<l&&(fx=effects[i]);i++){fx.fn.call(this,property,this[property],fx.effect,old,fromAbove);}},_clearPath:function(path){for(var prop in this.__data__){if(Polymer.Path.isDescendant(path,prop)){this.__data__[prop]=undefined;}}}},ensurePropertyEffects:function(model,property){if(!model._propertyEffects){model._propertyEffects={};}\nvar fx=model._propertyEffects[property];if(!fx){fx=model._propertyEffects[property]=[];}\nreturn fx;},addPropertyEffect:function(model,property,kind,effect){var fx=this.ensurePropertyEffects(model,property);var propEffect={kind:kind,effect:effect,fn:Polymer.Bind['_'+kind+'Effect']};fx.push(propEffect);return propEffect;},createBindings:function(model){var fx$=model._propertyEffects;if(fx$){for(var n in fx$){var fx=fx$[n];fx.sort(this._sortPropertyEffects);this._createAccessors(model,n,fx);}}},_sortPropertyEffects:function(){var EFFECT_ORDER={'compute':0,'annotation':1,'annotatedComputation':2,'reflect':3,'notify':4,'observer':5,'complexObserver':6,'function':7};return function(a,b){return EFFECT_ORDER[a.kind]-EFFECT_ORDER[b.kind];};}(),_createAccessors:function(model,property,effects){var defun={get:function(){return this.__data__[property];}};var setter=function(value){this._propertySetter(property,value,effects);};var info=model.getPropertyInfo&&model.getPropertyInfo(property);if(info&&info.readOnly){if(!info.computed){model['_set'+this.upper(property)]=setter;}}else{defun.set=setter;}\nObject.defineProperty(model,property,defun);},upper:function(name){return name[0].toUpperCase()+name.substring(1);},_addAnnotatedListener:function(model,index,property,path,event,negated){if(!model._bindListeners){model._bindListeners=[];}\nvar fn=this._notedListenerFactory(property,path,Polymer.Path.isDeep(path),negated);var eventName=event||Polymer.CaseMap.camelToDashCase(property)+'-changed';model._bindListeners.push({index:index,property:property,path:path,changedFn:fn,event:eventName});},_isEventBogus:function(e,target){return e.path&&e.path[0]!==target;},_notedListenerFactory:function(property,path,isStructured,negated){return function(target,value,targetPath){if(targetPath){var newPath=Polymer.Path.translate(property,path,targetPath);this._notifyPath(newPath,value);}else{value=target[property];if(negated){value=!value;}\nif(!isStructured){this[path]=value;}else{if(this.__data__[path]!=value){this.set(path,value);}}}};},prepareInstance:function(inst){inst.__data__=Object.create(null);},setupBindListeners:function(inst){var b$=inst._bindListeners;for(var i=0,l=b$.length,info;i<l&&(info=b$[i]);i++){var node=inst._nodes[info.index];this._addNotifyListener(node,inst,info.event,info.changedFn);}},_addNotifyListener:function(element,context,event,changedFn){element.addEventListener(event,function(e){return context._notifyListener(changedFn,e);});}};Polymer.Base.mixin(Polymer.Bind,{_shouldAddListener:function(effect){return effect.name&&effect.kind!='attribute'&&effect.kind!='text'&&!effect.isCompound&&effect.parts[0].mode==='{';},_annotationEffect:function(source,value,effect){if(source!=effect.value){value=this._get(effect.value);this.__data__[effect.value]=value;}\nthis._applyEffectValue(effect,value);},_reflectEffect:function(source,value,effect){this.reflectPropertyToAttribute(source,effect.attribute,value);},_notifyEffect:function(source,value,effect,old,fromAbove){if(!fromAbove){this._notifyChange(source,effect.event,value);}},_functionEffect:function(source,value,fn,old,fromAbove){fn.call(this,source,value,old,fromAbove);},_observerEffect:function(source,value,effect,old){var fn=this[effect.method];if(fn){fn.call(this,value,old);}else{this._warn(this._logf('_observerEffect','observer method `'+effect.method+'` not defined'));}},_complexObserverEffect:function(source,value,effect){var fn=this[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){fn.apply(this,args);}}else if(effect.dynamicFn){}else{this._warn(this._logf('_complexObserverEffect','observer method `'+effect.method+'` not defined'));}},_computeEffect:function(source,value,effect){var fn=this[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){var computedvalue=fn.apply(this,args);this.__setProperty(effect.name,computedvalue);}}else if(effect.dynamicFn){}else{this._warn(this._logf('_computeEffect','compute method `'+effect.method+'` not defined'));}},_annotatedComputationEffect:function(source,value,effect){var computedHost=this._rootDataHost||this;var fn=computedHost[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){var computedvalue=fn.apply(computedHost,args);this._applyEffectValue(effect,computedvalue);}}else if(effect.dynamicFn){}else{computedHost._warn(computedHost._logf('_annotatedComputationEffect','compute method `'+effect.method+'` not defined'));}},_marshalArgs:function(model,effect,path,value){var values=[];var args=effect.args;var bailoutEarly=args.length>1||effect.dynamicFn;for(var i=0,l=args.length;i<l;i++){var arg=args[i];var name=arg.name;var v;if(arg.literal){v=arg.value;}else if(path===name){v=value;}else{v=model[name];if(v===undefined&&arg.structured){v=Polymer.Base._get(name,model);}}\nif(bailoutEarly&&v===undefined){return;}\nif(arg.wildcard){var matches=Polymer.Path.isAncestor(path,name);values[i]={path:matches?path:name,value:matches?value:v,base:v};}else{values[i]=v;}}\nreturn values;}});Polymer.Base._addFeature({_addPropertyEffect:function(property,kind,effect){var prop=Polymer.Bind.addPropertyEffect(this,property,kind,effect);prop.pathFn=this['_'+prop.kind+'PathEffect'];},_prepEffects:function(){Polymer.Bind.prepareModel(this);this._addAnnotationEffects(this._notes);},_prepBindings:function(){Polymer.Bind.createBindings(this);},_addPropertyEffects:function(properties){if(properties){for(var p in properties){var prop=properties[p];if(prop.observer){this._addObserverEffect(p,prop.observer);}\nif(prop.computed){prop.readOnly=true;this._addComputedEffect(p,prop.computed);}\nif(prop.notify){this._addPropertyEffect(p,'notify',{event:Polymer.CaseMap.camelToDashCase(p)+'-changed'});}\nif(prop.reflectToAttribute){var attr=Polymer.CaseMap.camelToDashCase(p);if(attr[0]==='-'){this._warn(this._logf('_addPropertyEffects','Property '+p+' cannot be reflected to attribute '+attr+' because \"-\" is not a valid starting attribute name. Use a lowercase first letter for the property instead.'));}else{this._addPropertyEffect(p,'reflect',{attribute:attr});}}\nif(prop.readOnly){Polymer.Bind.ensurePropertyEffects(this,p);}}}},_addComputedEffect:function(name,expression){var sig=this._parseMethod(expression);var dynamicFn=sig.dynamicFn;for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){this._addPropertyEffect(arg.model,'compute',{method:sig.method,args:sig.args,trigger:arg,name:name,dynamicFn:dynamicFn});}\nif(dynamicFn){this._addPropertyEffect(sig.method,'compute',{method:sig.method,args:sig.args,trigger:null,name:name,dynamicFn:dynamicFn});}},_addObserverEffect:function(property,observer){this._addPropertyEffect(property,'observer',{method:observer,property:property});},_addComplexObserverEffects:function(observers){if(observers){for(var i=0,o;i<observers.length&&(o=observers[i]);i++){this._addComplexObserverEffect(o);}}},_addComplexObserverEffect:function(observer){var sig=this._parseMethod(observer);if(!sig){throw new Error('Malformed observer expression \\''+observer+'\\'');}\nvar dynamicFn=sig.dynamicFn;for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){this._addPropertyEffect(arg.model,'complexObserver',{method:sig.method,args:sig.args,trigger:arg,dynamicFn:dynamicFn});}\nif(dynamicFn){this._addPropertyEffect(sig.method,'complexObserver',{method:sig.method,args:sig.args,trigger:null,dynamicFn:dynamicFn});}},_addAnnotationEffects:function(notes){for(var i=0,note;i<notes.length&&(note=notes[i]);i++){var b$=note.bindings;for(var j=0,binding;j<b$.length&&(binding=b$[j]);j++){this._addAnnotationEffect(binding,i);}}},_addAnnotationEffect:function(note,index){if(Polymer.Bind._shouldAddListener(note)){Polymer.Bind._addAnnotatedListener(this,index,note.name,note.parts[0].value,note.parts[0].event,note.parts[0].negate);}\nfor(var i=0;i<note.parts.length;i++){var part=note.parts[i];if(part.signature){this._addAnnotatedComputationEffect(note,part,index);}else if(!part.literal){if(note.kind==='attribute'&&note.name[0]==='-'){this._warn(this._logf('_addAnnotationEffect','Cannot set attribute '+note.name+' because \"-\" is not a valid attribute starting character'));}else{this._addPropertyEffect(part.model,'annotation',{kind:note.kind,index:index,name:note.name,propertyName:note.propertyName,value:part.value,isCompound:note.isCompound,compoundIndex:part.compoundIndex,event:part.event,customEvent:part.customEvent,negate:part.negate});}}}},_addAnnotatedComputationEffect:function(note,part,index){var sig=part.signature;if(sig.static){this.__addAnnotatedComputationEffect('__static__',index,note,part,null);}else{for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){if(!arg.literal){this.__addAnnotatedComputationEffect(arg.model,index,note,part,arg);}}\nif(sig.dynamicFn){this.__addAnnotatedComputationEffect(sig.method,index,note,part,null);}}},__addAnnotatedComputationEffect:function(property,index,note,part,trigger){this._addPropertyEffect(property,'annotatedComputation',{index:index,isCompound:note.isCompound,compoundIndex:part.compoundIndex,kind:note.kind,name:note.name,negate:part.negate,method:part.signature.method,args:part.signature.args,trigger:trigger,dynamicFn:part.signature.dynamicFn});},_parseMethod:function(expression){var m=expression.match(/([^\\s]+?)\\(([\\s\\S]*)\\)/);if(m){var sig={method:m[1],static:true};if(this.getPropertyInfo(sig.method)!==Polymer.nob){sig.static=false;sig.dynamicFn=true;}\nif(m[2].trim()){var args=m[2].replace(/\\\\,/g,'&comma;').split(',');return this._parseArgs(args,sig);}else{sig.args=Polymer.nar;return sig;}}},_parseArgs:function(argList,sig){sig.args=argList.map(function(rawArg){var arg=this._parseArg(rawArg);if(!arg.literal){sig.static=false;}\nreturn arg;},this);return sig;},_parseArg:function(rawArg){var arg=rawArg.trim().replace(/&comma;/g,',').replace(/\\\\(.)/g,'$1');var a={name:arg};var fc=arg[0];if(fc==='-'){fc=arg[1];}\nif(fc>='0'&&fc<='9'){fc='#';}\nswitch(fc){case'\\'':case'\"':a.value=arg.slice(1,-1);a.literal=true;break;case'#':a.value=Number(arg);a.literal=true;break;}\nif(!a.literal){a.model=Polymer.Path.root(arg);a.structured=Polymer.Path.isDeep(arg);if(a.structured){a.wildcard=arg.slice(-2)=='.*';if(a.wildcard){a.name=arg.slice(0,-2);}}}\nreturn a;},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this);if(this._bindListeners){Polymer.Bind.setupBindListeners(this);}},_applyEffectValue:function(info,value){var node=this._nodes[info.index];var property=info.name;value=this._computeFinalAnnotationValue(node,property,value,info);if(info.kind=='attribute'){this.serializeValueToAttribute(value,property,node);}else{var pinfo=node._propertyInfo&&node._propertyInfo[property];if(pinfo&&pinfo.readOnly){return;}\nthis.__setProperty(property,value,Polymer.Settings.suppressBindingNotifications,node);}},_computeFinalAnnotationValue:function(node,property,value,info){if(info.negate){value=!value;}\nif(info.isCompound){var storage=node.__compoundStorage__[property];storage[info.compoundIndex]=value;value=storage.join('');}\nif(info.kind!=='attribute'){if(property==='className'){value=this._scopeElementClass(node,value);}\nif(property==='textContent'||node.localName=='input'&&property=='value'){value=value==undefined?'':value;}}\nreturn value;},_executeStaticEffects:function(){if(this._propertyEffects&&this._propertyEffects.__static__){this._effectEffects('__static__',null,this._propertyEffects.__static__);}}});(function(){var usePolyfillProto=Polymer.Settings.usePolyfillProto;var avoidInstanceProperties=Boolean(Object.getOwnPropertyDescriptor(document.documentElement,'properties'));Polymer.Base._addFeature({_setupConfigure:function(initialConfig){this._config={};this._handlers=[];this._aboveConfig=null;if(initialConfig){for(var i in initialConfig){if(initialConfig[i]!==undefined){this._config[i]=initialConfig[i];}}}},_marshalAttributes:function(){this._takeAttributesToModel(this._config);},_attributeChangedImpl:function(name){var model=this._clientsReadied?this:this._config;this._setAttributeToProperty(model,name);},_configValue:function(name,value){var info=this._propertyInfo[name];if(!info||!info.readOnly){this._config[name]=value;}},_beforeClientsReady:function(){this._configure();},_configure:function(){this._configureAnnotationReferences();this._configureInstanceProperties();this._aboveConfig=this.mixin({},this._config);var config={};for(var i=0;i<this.behaviors.length;i++){this._configureProperties(this.behaviors[i].properties,config);}\nthis._configureProperties(avoidInstanceProperties?this.__proto__.properties:this.properties,config);this.mixin(config,this._aboveConfig);this._config=config;if(this._clients&&this._clients.length){this._distributeConfig(this._config);}},_configureInstanceProperties:function(){for(var i in this._propertyEffects){if(!usePolyfillProto&&this.hasOwnProperty(i)){this._configValue(i,this[i]);delete this[i];}}},_configureProperties:function(properties,config){for(var i in properties){var c=properties[i];if(c.value!==undefined){var value=c.value;if(typeof value=='function'){value=value.call(this,this._config);}\nconfig[i]=value;}}},_distributeConfig:function(config){var fx$=this._propertyEffects;if(fx$){for(var p in config){var fx=fx$[p];if(fx){for(var i=0,l=fx.length,x;i<l&&(x=fx[i]);i++){if(x.kind==='annotation'){var node=this._nodes[x.effect.index];var name=x.effect.propertyName;var isAttr=x.effect.kind=='attribute';var hasEffect=node._propertyEffects&&node._propertyEffects[name];if(node._configValue&&(hasEffect||!isAttr)){var value=p===x.effect.value?config[p]:this._get(x.effect.value,config);value=this._computeFinalAnnotationValue(node,name,value,x.effect);if(isAttr){value=node.deserialize(this.serialize(value),node._propertyInfo[name].type);}\nnode._configValue(name,value);}}}}}}},_afterClientsReady:function(){this.importPath=this._importPath;this.rootPath=Polymer.rootPath;this._executeStaticEffects();this._applyConfig(this._config,this._aboveConfig);this._flushHandlers();},_applyConfig:function(config,aboveConfig){for(var n in config){if(this[n]===undefined){this.__setProperty(n,config[n],n in aboveConfig);}}},_notifyListener:function(fn,e){if(!Polymer.Bind._isEventBogus(e,e.target)){var value,path;if(e.detail){value=e.detail.value;path=e.detail.path;}\nif(!this._clientsReadied){this._queueHandler([fn,e.target,value,path]);}else{return fn.call(this,e.target,value,path);}}},_queueHandler:function(args){this._handlers.push(args);},_flushHandlers:function(){var h$=this._handlers;for(var i=0,l=h$.length,h;i<l&&(h=h$[i]);i++){h[0].call(this,h[1],h[2],h[3]);}\nthis._handlers=[];}});}());(function(){'use strict';var Path=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(path,value,fromAbove){var info={};var v=this._get(path,this,info);if(arguments.length===1){value=v;}\nif(info.path){this._notifyPath(info.path,value,fromAbove);}},_notifyPath:function(path,value,fromAbove){var old=this._propertySetter(path,value);if(old!==value&&(old===old||value===value)){this._pathEffector(path,value);if(!fromAbove){this._notifyPathUp(path,value);}\nreturn true;}},_getPathParts:function(path){if(Array.isArray(path)){var parts=[];for(var i=0;i<path.length;i++){var args=path[i].toString().split('.');for(var j=0;j<args.length;j++){parts.push(args[j]);}}\nreturn parts;}else{return path.toString().split('.');}},set:function(path,value,root){var prop=root||this;var parts=this._getPathParts(path);var array;var last=parts[parts.length-1];if(parts.length>1){for(var i=0;i<parts.length-1;i++){var part=parts[i];if(array&&part[0]=='#'){prop=Polymer.Collection.get(array).getItem(part);}else{prop=prop[part];if(array&&parseInt(part,10)==part){parts[i]=Polymer.Collection.get(array).getKey(prop);}}\nif(!prop){return;}\narray=Array.isArray(prop)?prop:null;}\nif(array){var coll=Polymer.Collection.get(array);var old,key;if(last[0]=='#'){key=last;old=coll.getItem(key);last=array.indexOf(old);coll.setItem(key,value);}else if(parseInt(last,10)==last){old=prop[last];key=coll.getKey(old);parts[i]=key;coll.setItem(key,value);}}\nprop[last]=value;if(!root){this._notifyPath(parts.join('.'),value);}}else{prop[path]=value;}},get:function(path,root){return this._get(path,root);},_get:function(path,root,info){var prop=root||this;var parts=this._getPathParts(path);var array;for(var i=0;i<parts.length;i++){if(!prop){return;}\nvar part=parts[i];if(array&&part[0]=='#'){prop=Polymer.Collection.get(array).getItem(part);}else{prop=prop[part];if(info&&array&&parseInt(part,10)==part){parts[i]=Polymer.Collection.get(array).getKey(prop);}}\narray=Array.isArray(prop)?prop:null;}\nif(info){info.path=parts.join('.');}\nreturn prop;},_pathEffector:function(path,value){var model=Path.root(path);var fx$=this._propertyEffects&&this._propertyEffects[model];if(fx$){for(var i=0,fx;i<fx$.length&&(fx=fx$[i]);i++){var fxFn=fx.pathFn;if(fxFn){fxFn.call(this,path,value,fx.effect);}}}\nif(this._boundPaths){this._notifyBoundPaths(path,value);}},_annotationPathEffect:function(path,value,effect){if(Path.matches(effect.value,false,path)){Polymer.Bind._annotationEffect.call(this,path,value,effect);}else if(!effect.negate&&Path.isDescendant(effect.value,path)){var node=this._nodes[effect.index];if(node&&node._notifyPath){var newPath=Path.translate(effect.value,effect.name,path);node._notifyPath(newPath,value,true);}}},_complexObserverPathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._complexObserverEffect.call(this,path,value,effect);}},_computePathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._computeEffect.call(this,path,value,effect);}},_annotatedComputationPathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._annotatedComputationEffect.call(this,path,value,effect);}},linkPaths:function(to,from){this._boundPaths=this._boundPaths||{};if(from){this._boundPaths[to]=from;}else{this.unlinkPaths(to);}},unlinkPaths:function(path){if(this._boundPaths){delete this._boundPaths[path];}},_notifyBoundPaths:function(path,value){for(var a in this._boundPaths){var b=this._boundPaths[a];if(Path.isDescendant(a,path)){this._notifyPath(Path.translate(a,b,path),value);}else if(Path.isDescendant(b,path)){this._notifyPath(Path.translate(b,a,path),value);}}},_notifyPathUp:function(path,value){var rootName=Path.root(path);var dashCaseName=Polymer.CaseMap.camelToDashCase(rootName);var eventName=dashCaseName+this._EVENT_CHANGED;this.fire(eventName,{path:path,value:value},{bubbles:false,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE});},_EVENT_CHANGED:'-changed',notifySplices:function(path,splices){var info={};var array=this._get(path,this,info);this._notifySplices(array,info.path,splices);},_notifySplices:function(array,path,splices){var change={keySplices:Polymer.Collection.applySplices(array,splices),indexSplices:splices};var splicesPath=path+'.splices';this._notifyPath(splicesPath,change);this._notifyPath(path+'.length',array.length);this.__data__[splicesPath]={keySplices:null,indexSplices:null};},_notifySplice:function(array,path,index,added,removed){this._notifySplices(array,path,[{index:index,addedCount:added,removed:removed,object:array,type:'splice'}]);},push:function(path){var info={};var array=this._get(path,this,info);var args=Array.prototype.slice.call(arguments,1);var len=array.length;var ret=array.push.apply(array,args);if(args.length){this._notifySplice(array,info.path,len,args.length,[]);}\nreturn ret;},pop:function(path){var info={};var array=this._get(path,this,info);var hadLength=Boolean(array.length);var args=Array.prototype.slice.call(arguments,1);var ret=array.pop.apply(array,args);if(hadLength){this._notifySplice(array,info.path,array.length,0,[ret]);}\nreturn ret;},splice:function(path,start){var info={};var array=this._get(path,this,info);if(start<0){start=array.length-Math.floor(-start);}else{start=Math.floor(start);}\nif(!start){start=0;}\nvar args=Array.prototype.slice.call(arguments,1);var ret=array.splice.apply(array,args);var addedCount=Math.max(args.length-2,0);if(addedCount||ret.length){this._notifySplice(array,info.path,start,addedCount,ret);}\nreturn ret;},shift:function(path){var info={};var array=this._get(path,this,info);var hadLength=Boolean(array.length);var args=Array.prototype.slice.call(arguments,1);var ret=array.shift.apply(array,args);if(hadLength){this._notifySplice(array,info.path,0,0,[ret]);}\nreturn ret;},unshift:function(path){var info={};var array=this._get(path,this,info);var args=Array.prototype.slice.call(arguments,1);var ret=array.unshift.apply(array,args);if(args.length){this._notifySplice(array,info.path,0,args.length,[]);}\nreturn ret;},prepareModelNotifyPath:function(model){this.mixin(model,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts});}});}());Polymer.Base._addFeature({resolveUrl:function(url){return Polymer.ResolveUrl.resolveUrl(url,this._importPath);}});Polymer.CssParse=function(){return{parse:function(text){text=this._clean(text);return this._parseCss(this._lex(text),text);},_clean:function(cssText){return cssText.replace(this._rx.comments,'').replace(this._rx.port,'');},_lex:function(text){var root={start:0,end:text.length};var n=root;for(var i=0,l=text.length;i<l;i++){switch(text[i]){case this.OPEN_BRACE:if(!n.rules){n.rules=[];}\nvar p=n;var previous=p.rules[p.rules.length-1];n={start:i+1,parent:p,previous:previous};p.rules.push(n);break;case this.CLOSE_BRACE:n.end=i+1;n=n.parent||root;break;}}\nreturn root;},_parseCss:function(node,text){var t=text.substring(node.start,node.end-1);node.parsedCssText=node.cssText=t.trim();if(node.parent){var ss=node.previous?node.previous.end:node.parent.start;t=text.substring(ss,node.start-1);t=this._expandUnicodeEscapes(t);t=t.replace(this._rx.multipleSpaces,' ');t=t.substring(t.lastIndexOf(';')+1);var s=node.parsedSelector=node.selector=t.trim();node.atRule=s.indexOf(this.AT_START)===0;if(node.atRule){if(s.indexOf(this.MEDIA_START)===0){node.type=this.types.MEDIA_RULE;}else if(s.match(this._rx.keyframesRule)){node.type=this.types.KEYFRAMES_RULE;node.keyframesName=node.selector.split(this._rx.multipleSpaces).pop();}}else{if(s.indexOf(this.VAR_START)===0){node.type=this.types.MIXIN_RULE;}else{node.type=this.types.STYLE_RULE;}}}\nvar r$=node.rules;if(r$){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){this._parseCss(r,text);}}\nreturn node;},_expandUnicodeEscapes:function(s){return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi,function(){var code=arguments[1],repeat=6-code.length;while(repeat--){code='0'+code;}\nreturn'\\\\'+code;});},stringify:function(node,preserveProperties,text){text=text||'';var cssText='';if(node.cssText||node.rules){var r$=node.rules;if(r$&&!this._hasMixinRules(r$)){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){cssText=this.stringify(r,preserveProperties,cssText);}}else{cssText=preserveProperties?node.cssText:this.removeCustomProps(node.cssText);cssText=cssText.trim();if(cssText){cssText='  '+cssText+'\\n';}}}\nif(cssText){if(node.selector){text+=node.selector+' '+this.OPEN_BRACE+'\\n';}\ntext+=cssText;if(node.selector){text+=this.CLOSE_BRACE+'\\n\\n';}}\nreturn text;},_hasMixinRules:function(rules){return rules[0].selector.indexOf(this.VAR_START)===0;},removeCustomProps:function(cssText){cssText=this.removeCustomPropAssignment(cssText);return this.removeCustomPropApply(cssText);},removeCustomPropAssignment:function(cssText){return cssText.replace(this._rx.customProp,'').replace(this._rx.mixinProp,'');},removeCustomPropApply:function(cssText){return cssText.replace(this._rx.mixinApply,'').replace(this._rx.varApply,'');},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1000},OPEN_BRACE:'{',CLOSE_BRACE:'}',_rx:{comments:/\\/\\*[^*]*\\*+([^\\/*][^*]*\\*+)*\\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,mixinProp:/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,mixinApply:/@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,keyframesRule:/^@[^\\s]*keyframes/,multipleSpaces:/\\s+/g},VAR_START:'--',MEDIA_START:'@media',AT_START:'@'};}();Polymer.StyleUtil=function(){var settings=Polymer.Settings;return{unscopedStyleImports:new WeakMap(),SHADY_UNSCOPED_ATTR:'shady-unscoped',NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:'style, link[rel=import][type~=css], template',INCLUDE_ATTR:'include',toCssText:function(rules,callback){if(typeof rules==='string'){rules=this.parser.parse(rules);}\nif(callback){this.forEachRule(rules,callback);}\nreturn this.parser.stringify(rules,this.NATIVE_VARIABLES);},forRulesInStyles:function(styles,styleRuleCallback,keyframesRuleCallback){if(styles){for(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){this.forEachRuleInStyle(s,styleRuleCallback,keyframesRuleCallback);}}},forActiveRulesInStyles:function(styles,styleRuleCallback,keyframesRuleCallback){if(styles){for(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){this.forEachRuleInStyle(s,styleRuleCallback,keyframesRuleCallback,true);}}},rulesForStyle:function(style){if(!style.__cssRules&&style.textContent){style.__cssRules=this.parser.parse(style.textContent);}\nreturn style.__cssRules;},isKeyframesSelector:function(rule){return rule.parent&&rule.parent.type===this.ruleTypes.KEYFRAMES_RULE;},forEachRuleInStyle:function(style,styleRuleCallback,keyframesRuleCallback,onlyActiveRules){var rules=this.rulesForStyle(style);var styleCallback,keyframeCallback;if(styleRuleCallback){styleCallback=function(rule){styleRuleCallback(rule,style);};}\nif(keyframesRuleCallback){keyframeCallback=function(rule){keyframesRuleCallback(rule,style);};}\nthis.forEachRule(rules,styleCallback,keyframeCallback,onlyActiveRules);},forEachRule:function(node,styleRuleCallback,keyframesRuleCallback,onlyActiveRules){if(!node){return;}\nvar skipRules=false;if(onlyActiveRules){if(node.type===this.ruleTypes.MEDIA_RULE){var matchMedia=node.selector.match(this.rx.MEDIA_MATCH);if(matchMedia){if(!window.matchMedia(matchMedia[1]).matches){skipRules=true;}}}}\nif(node.type===this.ruleTypes.STYLE_RULE){styleRuleCallback(node);}else if(keyframesRuleCallback&&node.type===this.ruleTypes.KEYFRAMES_RULE){keyframesRuleCallback(node);}else if(node.type===this.ruleTypes.MIXIN_RULE){skipRules=true;}\nvar r$=node.rules;if(r$&&!skipRules){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){this.forEachRule(r,styleRuleCallback,keyframesRuleCallback,onlyActiveRules);}}},applyCss:function(cssText,moniker,target,contextNode){var style=this.createScopeStyle(cssText,moniker);return this.applyStyle(style,target,contextNode);},applyStyle:function(style,target,contextNode){target=target||document.head;var after=contextNode&&contextNode.nextSibling||target.firstChild;this.__lastHeadApplyNode=style;return target.insertBefore(style,after);},createScopeStyle:function(cssText,moniker){var style=document.createElement('style');if(moniker){style.setAttribute('scope',moniker);}\nstyle.textContent=cssText;return style;},__lastHeadApplyNode:null,applyStylePlaceHolder:function(moniker){var placeHolder=document.createComment(' Shady DOM styles for '+moniker+' ');var after=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null;var scope=document.head;scope.insertBefore(placeHolder,after||scope.firstChild);this.__lastHeadApplyNode=placeHolder;return placeHolder;},cssFromModules:function(moduleIds,warnIfNotFound){var modules=moduleIds.trim().split(/\\s+/);var cssText='';for(var i=0;i<modules.length;i++){cssText+=this.cssFromModule(modules[i],warnIfNotFound);}\nreturn cssText;},cssFromModule:function(moduleId,warnIfNotFound){var m=Polymer.DomModule.import(moduleId);if(m&&!m._cssText){m._cssText=this.cssFromElement(m);}\nif(!m&&warnIfNotFound){console.warn('Could not find style data in module named',moduleId);}\nreturn m&&m._cssText||'';},cssFromElement:function(element){var cssText='';var content=element.content||element;var e$=Polymer.TreeApi.arrayCopy(content.querySelectorAll(this.MODULE_STYLES_SELECTOR));for(var i=0,e;i<e$.length;i++){e=e$[i];if(e.localName==='template'){if(!e.hasAttribute('preserve-content')){cssText+=this.cssFromElement(e);}}else{if(e.localName==='style'){var include=e.getAttribute(this.INCLUDE_ATTR);if(include){cssText+=this.cssFromModules(include,true);}\ne=e.__appliedElement||e;e.parentNode.removeChild(e);var css=this.resolveCss(e.textContent,element.ownerDocument);if(!settings.useNativeShadow&&e.hasAttribute(this.SHADY_UNSCOPED_ATTR)){e.textContent=css;document.head.insertBefore(e,document.head.firstChild);}else{cssText+=css;}}else if(e.import&&e.import.body){var importCss=this.resolveCss(e.import.body.textContent,e.import);if(!settings.useNativeShadow&&e.hasAttribute(this.SHADY_UNSCOPED_ATTR)){if(!this.unscopedStyleImports.has(e.import)){this.unscopedStyleImports.set(e.import,true);var importStyle=document.createElement('style');importStyle.setAttribute(this.SHADY_UNSCOPED_ATTR,'');importStyle.textContent=importCss;document.head.insertBefore(importStyle,document.head.firstChild);}}else{cssText+=importCss;}}}}\nreturn cssText;},styleIncludesToTemplate:function(targetTemplate){var styles=targetTemplate.content.querySelectorAll('style[include]');for(var i=0,s;i<styles.length;i++){s=styles[i];s.parentNode.insertBefore(this._includesToFragment(s.getAttribute('include')),s);}},_includesToFragment:function(styleIncludes){var includeArray=styleIncludes.trim().split(' ');var frag=document.createDocumentFragment();for(var i=0;i<includeArray.length;i++){var t=Polymer.DomModule.import(includeArray[i],'template');if(t){this._addStylesToFragment(frag,t.content);}}\nreturn frag;},_addStylesToFragment:function(frag,source){var s$=source.querySelectorAll('style');for(var i=0,s;i<s$.length;i++){s=s$[i];var include=s.getAttribute('include');if(include){frag.appendChild(this._includesToFragment(include));}\nif(s.textContent){frag.appendChild(s.cloneNode(true));}}},isTargetedBuild:function(buildType){return settings.useNativeShadow?buildType==='shadow':buildType==='shady';},cssBuildTypeForModule:function(module){var dm=Polymer.DomModule.import(module);if(dm){return this.getCssBuildType(dm);}},getCssBuildType:function(element){return element.getAttribute('css-build');},_findMatchingParen:function(text,start){var level=0;for(var i=start,l=text.length;i<l;i++){switch(text[i]){case'(':level++;break;case')':if(--level===0){return i;}\nbreak;}}\nreturn-1;},processVariableAndFallback:function(str,callback){var start=str.indexOf('var(');if(start===-1){return callback(str,'','','');}\nvar end=this._findMatchingParen(str,start+3);var inner=str.substring(start+4,end);var prefix=str.substring(0,start);var suffix=this.processVariableAndFallback(str.substring(end+1),callback);var comma=inner.indexOf(',');if(comma===-1){return callback(prefix,inner.trim(),'',suffix);}\nvar value=inner.substring(0,comma).trim();var fallback=inner.substring(comma+1).trim();return callback(prefix,value,fallback,suffix);},rx:{VAR_ASSIGN:/(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\\s}])|$)/gi,MIXIN_MATCH:/(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi,VAR_CONSUMED:/(--[\\w-]+)\\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\\s*:)|(animation-name\\s*:)/,MEDIA_MATCH:/@media[^(]*(\\([^)]*\\))/,IS_VAR:/^--/,BRACKETED:/\\{[^}]*\\}/g,HOST_PREFIX:'(?:^|[^.#[:])',HOST_SUFFIX:'($|[.:[\\\\s>+~])'},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types};}();Polymer.StyleTransformer=function(){var styleUtil=Polymer.StyleUtil;var settings=Polymer.Settings;var api={dom:function(node,scope,useAttr,shouldRemoveScope){this._transformDom(node,scope||'',useAttr,shouldRemoveScope);},_transformDom:function(node,selector,useAttr,shouldRemoveScope){if(node.setAttribute){this.element(node,selector,useAttr,shouldRemoveScope);}\nvar c$=Polymer.dom(node).childNodes;for(var i=0;i<c$.length;i++){this._transformDom(c$[i],selector,useAttr,shouldRemoveScope);}},element:function(element,scope,useAttr,shouldRemoveScope){if(useAttr){if(shouldRemoveScope){element.removeAttribute(SCOPE_NAME);}else{element.setAttribute(SCOPE_NAME,scope);}}else{if(scope){if(element.classList){if(shouldRemoveScope){element.classList.remove(SCOPE_NAME);element.classList.remove(scope);}else{element.classList.add(SCOPE_NAME);element.classList.add(scope);}}else if(element.getAttribute){var c=element.getAttribute(CLASS);if(shouldRemoveScope){if(c){element.setAttribute(CLASS,c.replace(SCOPE_NAME,'').replace(scope,''));}}else{element.setAttribute(CLASS,(c?c+' ':'')+SCOPE_NAME+' '+scope);}}}}},elementStyles:function(element,callback){var styles=element._styles;var cssText='';var cssBuildType=element.__cssBuild;var passthrough=settings.useNativeShadow||cssBuildType==='shady';var cb;if(passthrough){var self=this;cb=function(rule){rule.selector=self._slottedToContent(rule.selector);rule.selector=rule.selector.replace(ROOT,':host > *');rule.selector=self._dirShadowTransform(rule.selector);if(callback){callback(rule);}};}\nfor(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){var rules=styleUtil.rulesForStyle(s);cssText+=passthrough?styleUtil.toCssText(rules,cb):this.css(rules,element.is,element.extends,callback,element._scopeCssViaAttr)+'\\n\\n';}\nreturn cssText.trim();},css:function(rules,scope,ext,callback,useAttr){var hostScope=this._calcHostScope(scope,ext);scope=this._calcElementScope(scope,useAttr);var self=this;return styleUtil.toCssText(rules,function(rule){if(!rule.isScoped){self.rule(rule,scope,hostScope);rule.isScoped=true;}\nif(callback){callback(rule,scope,hostScope);}});},_calcElementScope:function(scope,useAttr){if(scope){return useAttr?CSS_ATTR_PREFIX+scope+CSS_ATTR_SUFFIX:CSS_CLASS_PREFIX+scope;}else{return'';}},_calcHostScope:function(scope,ext){return ext?'[is='+scope+']':scope;},rule:function(rule,scope,hostScope){this._transformRule(rule,this._transformComplexSelector,scope,hostScope);},_transformRule:function(rule,transformer,scope,hostScope){rule.selector=rule.transformedSelector=this._transformRuleCss(rule,transformer,scope,hostScope);},_splitSelectorList:function(selector){var parts=[];var part='';for(var i=0;i>=0&&i<selector.length;i++){if(selector[i]==='('){var end=styleUtil._findMatchingParen(selector,i);part+=selector.slice(i,end+1);i=end;}else if(selector[i]===COMPLEX_SELECTOR_SEP){parts.push(part);part='';}else{part+=selector[i];}}\nif(part){parts.push(part);}\nif(parts.length===0){parts.push(selector);}\nreturn parts;},_transformRuleCss:function(rule,transformer,scope,hostScope){var p$=this._splitSelectorList(rule.selector);if(!styleUtil.isKeyframesSelector(rule)){for(var i=0,l=p$.length,p;i<l&&(p=p$[i]);i++){p$[i]=transformer.call(this,p,scope,hostScope);}}\nreturn p$.join(COMPLEX_SELECTOR_SEP);},_ensureScopedDir:function(s){var m=s.match(DIR_PAREN);if(m&&m[1]===''&&m[0].length===s.length){s='*'+s;}\nreturn s;},_additionalDirSelectors:function(dir,after,prefix){if(!dir||!after){return'';}\nprefix=prefix||'';return COMPLEX_SELECTOR_SEP+prefix+' '+dir+' '+after;},_transformComplexSelector:function(selector,scope,hostScope){var stop=false;var hostContext=false;var dir=false;var self=this;selector=selector.trim();selector=this._slottedToContent(selector);selector=selector.replace(ROOT,':host > *');selector=selector.replace(CONTENT_START,HOST+' $1');selector=this._ensureScopedDir(selector);selector=selector.replace(SIMPLE_SELECTOR_SEP,function(m,c,s){if(!stop){var info=self._transformCompoundSelector(s,c,scope,hostScope);stop=stop||info.stop;hostContext=hostContext||info.hostContext;dir=dir||info.dir;c=info.combinator;s=info.value;}else{s=s.replace(SCOPE_JUMP,' ');}\nreturn c+s;});if(hostContext){selector=selector.replace(HOST_CONTEXT_PAREN,function(m,pre,paren,post){var replacement=pre+paren+' '+hostScope+post+COMPLEX_SELECTOR_SEP+' '+pre+hostScope+paren+post;if(dir){replacement+=self._additionalDirSelectors(paren,post,hostScope);}\nreturn replacement;});}\nreturn selector;},_transformDir:function(s){s=s.replace(HOST_DIR,HOST_DIR_REPLACE);s=s.replace(DIR_PAREN,DIR_REPLACE);return s;},_transformCompoundSelector:function(selector,combinator,scope,hostScope){var jumpIndex=selector.search(SCOPE_JUMP);var hostContext=false;var dir=false;if(selector.match(DIR_PAREN)){selector=this._transformDir(selector);dir=true;}\nif(selector.indexOf(HOST_CONTEXT)>=0){hostContext=true;}else if(selector.indexOf(HOST)>=0){selector=this._transformHostSelector(selector,hostScope);}else if(jumpIndex!==0){selector=scope?this._transformSimpleSelector(selector,scope):selector;}\nif(selector.indexOf(CONTENT)>=0){combinator='';}\nvar stop;if(jumpIndex>=0){selector=selector.replace(SCOPE_JUMP,' ');stop=true;}\nreturn{value:selector,combinator:combinator,stop:stop,hostContext:hostContext,dir:dir};},_transformSimpleSelector:function(selector,scope){var p$=selector.split(PSEUDO_PREFIX);p$[0]+=scope;return p$.join(PSEUDO_PREFIX);},_transformHostSelector:function(selector,hostScope){var m=selector.match(HOST_PAREN);var paren=m&&m[2].trim()||'';if(paren){if(!paren[0].match(SIMPLE_SELECTOR_PREFIX)){var typeSelector=paren.split(SIMPLE_SELECTOR_PREFIX)[0];if(typeSelector===hostScope){return paren;}else{return SELECTOR_NO_MATCH;}}else{return selector.replace(HOST_PAREN,function(m,host,paren){return hostScope+paren;});}}else{return selector.replace(HOST,hostScope);}},documentRule:function(rule){rule.selector=rule.parsedSelector;this.normalizeRootSelector(rule);if(!settings.useNativeShadow){this._transformRule(rule,this._transformDocumentSelector);}},normalizeRootSelector:function(rule){rule.selector=rule.selector.replace(ROOT,'html');var parts=this._splitSelectorList(rule.selector);parts=parts.filter(function(part){return!part.match(HOST_OR_HOST_GT_STAR);});rule.selector=parts.join(COMPLEX_SELECTOR_SEP);},_transformDocumentSelector:function(selector){return this._transformComplexSelector(selector,SCOPE_DOC_SELECTOR);},_slottedToContent:function(cssText){return cssText.replace(SLOTTED_PAREN,CONTENT+'> $1');},_dirShadowTransform:function(selector){if(!selector.match(/:dir\\(/)){return selector;}\nreturn this._splitSelectorList(selector).map(function(s){s=this._ensureScopedDir(s);s=this._transformDir(s);var m=HOST_CONTEXT_PAREN.exec(s);if(m){s+=this._additionalDirSelectors(m[2],m[3],'');}\nreturn s;},this).join(COMPLEX_SELECTOR_SEP);},SCOPE_NAME:'style-scope'};var SCOPE_NAME=api.SCOPE_NAME;var SCOPE_DOC_SELECTOR=':not(['+SCOPE_NAME+'])'+':not(.'+SCOPE_NAME+')';var COMPLEX_SELECTOR_SEP=',';var SIMPLE_SELECTOR_SEP=/(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=\\[])+)/g;var SIMPLE_SELECTOR_PREFIX=/[[.:#*]/;var HOST=':host';var ROOT=':root';var HOST_PAREN=/(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;var HOST_CONTEXT=':host-context';var HOST_CONTEXT_PAREN=/(.*)(?::host-context)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))(.*)/;var CONTENT='::content';var SCOPE_JUMP=/::content|::shadow|\\/deep\\//;var CSS_CLASS_PREFIX='.';var CSS_ATTR_PREFIX='['+SCOPE_NAME+'~=';var CSS_ATTR_SUFFIX=']';var PSEUDO_PREFIX=':';var CLASS='class';var CONTENT_START=new RegExp('^('+CONTENT+')');var SELECTOR_NO_MATCH='should_not_match';var SLOTTED_PAREN=/(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/g;var HOST_OR_HOST_GT_STAR=/:host(?:\\s*>\\s*\\*)?/;var DIR_PAREN=/(.*):dir\\((ltr|rtl)\\)/;var DIR_REPLACE=':host-context([dir=\"$2\"]) $1';var HOST_DIR=/:host\\(:dir\\((rtl|ltr)\\)\\)/g;var HOST_DIR_REPLACE=':host-context([dir=\"$1\"])';return api;}();Polymer.StyleExtends=function(){var styleUtil=Polymer.StyleUtil;return{hasExtends:function(cssText){return Boolean(cssText.match(this.rx.EXTEND));},transform:function(style){var rules=styleUtil.rulesForStyle(style);var self=this;styleUtil.forEachRule(rules,function(rule){self._mapRuleOntoParent(rule);if(rule.parent){var m;while(m=self.rx.EXTEND.exec(rule.cssText)){var extend=m[1];var extendor=self._findExtendor(extend,rule);if(extendor){self._extendRule(rule,extendor);}}}\nrule.cssText=rule.cssText.replace(self.rx.EXTEND,'');});return styleUtil.toCssText(rules,function(rule){if(rule.selector.match(self.rx.STRIP)){rule.cssText='';}},true);},_mapRuleOntoParent:function(rule){if(rule.parent){var map=rule.parent.map||(rule.parent.map={});var parts=rule.selector.split(',');for(var i=0,p;i<parts.length;i++){p=parts[i];map[p.trim()]=rule;}\nreturn map;}},_findExtendor:function(extend,rule){return rule.parent&&rule.parent.map&&rule.parent.map[extend]||this._findExtendor(extend,rule.parent);},_extendRule:function(target,source){if(target.parent!==source.parent){this._cloneAndAddRuleToParent(source,target.parent);}\ntarget.extends=target.extends||[];target.extends.push(source);source.selector=source.selector.replace(this.rx.STRIP,'');source.selector=(source.selector&&source.selector+',\\n')+target.selector;if(source.extends){source.extends.forEach(function(e){this._extendRule(target,e);},this);}},_cloneAndAddRuleToParent:function(rule,parent){rule=Object.create(rule);rule.parent=parent;if(rule.extends){rule.extends=rule.extends.slice();}\nparent.rules.push(rule);},rx:{EXTEND:/@extends\\(([^)]*)\\)\\s*?;/gim,STRIP:/%[^,]*$/}};}();Polymer.ApplyShim=function(){'use strict';var styleUtil=Polymer.StyleUtil;var MIXIN_MATCH=styleUtil.rx.MIXIN_MATCH;var VAR_ASSIGN=styleUtil.rx.VAR_ASSIGN;var BAD_VAR=/var\\(\\s*(--[^,]*),\\s*(--[^)]*)\\)/g;var APPLY_NAME_CLEAN=/;\\s*/m;var INITIAL_INHERIT=/^\\s*(initial)|(inherit)\\s*$/;var MIXIN_VAR_SEP='_-_';var mixinMap={};function mapSet(name,props){name=name.trim();mixinMap[name]={properties:props,dependants:{}};}\nfunction mapGet(name){name=name.trim();return mixinMap[name];}\nfunction replaceInitialOrInherit(property,value){var match=INITIAL_INHERIT.exec(value);if(match){if(match[1]){value=ApplyShim._getInitialValueForProperty(property);}else{value='apply-shim-inherit';}}\nreturn value;}\nfunction cssTextToMap(text){var props=text.split(';');var property,value;var out={};for(var i=0,p,sp;i<props.length;i++){p=props[i];if(p){sp=p.split(':');if(sp.length>1){property=sp[0].trim();value=replaceInitialOrInherit(property,sp.slice(1).join(':'));out[property]=value;}}}\nreturn out;}\nfunction invalidateMixinEntry(mixinEntry){var currentProto=ApplyShim.__currentElementProto;var currentElementName=currentProto&&currentProto.is;for(var elementName in mixinEntry.dependants){if(elementName!==currentElementName){mixinEntry.dependants[elementName].__applyShimInvalid=true;}}}\nfunction produceCssProperties(matchText,propertyName,valueProperty,valueMixin){if(valueProperty){styleUtil.processVariableAndFallback(valueProperty,function(prefix,value){if(value&&mapGet(value)){valueMixin='@apply '+value+';';}});}\nif(!valueMixin){return matchText;}\nvar mixinAsProperties=consumeCssProperties(valueMixin);var prefix=matchText.slice(0,matchText.indexOf('--'));var mixinValues=cssTextToMap(mixinAsProperties);var combinedProps=mixinValues;var mixinEntry=mapGet(propertyName);var oldProps=mixinEntry&&mixinEntry.properties;if(oldProps){combinedProps=Object.create(oldProps);combinedProps=Polymer.Base.mixin(combinedProps,mixinValues);}else{mapSet(propertyName,combinedProps);}\nvar out=[];var p,v;var needToInvalidate=false;for(p in combinedProps){v=mixinValues[p];if(v===undefined){v='initial';}\nif(oldProps&&!(p in oldProps)){needToInvalidate=true;}\nout.push(propertyName+MIXIN_VAR_SEP+p+': '+v);}\nif(needToInvalidate){invalidateMixinEntry(mixinEntry);}\nif(mixinEntry){mixinEntry.properties=combinedProps;}\nif(valueProperty){prefix=matchText+';'+prefix;}\nreturn prefix+out.join('; ')+';';}\nfunction fixVars(matchText,varA,varB){return'var('+varA+','+'var('+varB+'))';}\nfunction atApplyToCssProperties(mixinName,fallbacks){mixinName=mixinName.replace(APPLY_NAME_CLEAN,'');var vars=[];var mixinEntry=mapGet(mixinName);if(!mixinEntry){mapSet(mixinName,{});mixinEntry=mapGet(mixinName);}\nif(mixinEntry){var currentProto=ApplyShim.__currentElementProto;if(currentProto){mixinEntry.dependants[currentProto.is]=currentProto;}\nvar p,parts,f;for(p in mixinEntry.properties){f=fallbacks&&fallbacks[p];parts=[p,': var(',mixinName,MIXIN_VAR_SEP,p];if(f){parts.push(',',f);}\nparts.push(')');vars.push(parts.join(''));}}\nreturn vars.join('; ');}\nfunction consumeCssProperties(text){var m;while(m=MIXIN_MATCH.exec(text)){var matchText=m[0];var mixinName=m[1];var idx=m.index;var applyPos=idx+matchText.indexOf('@apply');var afterApplyPos=idx+matchText.length;var textBeforeApply=text.slice(0,applyPos);var textAfterApply=text.slice(afterApplyPos);var defaults=cssTextToMap(textBeforeApply);var replacement=atApplyToCssProperties(mixinName,defaults);text=[textBeforeApply,replacement,textAfterApply].join('');MIXIN_MATCH.lastIndex=idx+replacement.length;}\nreturn text;}\nvar ApplyShim={_measureElement:null,_map:mixinMap,_separator:MIXIN_VAR_SEP,transform:function(styles,elementProto){this.__currentElementProto=elementProto;styleUtil.forRulesInStyles(styles,this._boundFindDefinitions);styleUtil.forRulesInStyles(styles,this._boundFindApplications);if(elementProto){elementProto.__applyShimInvalid=false;}\nthis.__currentElementProto=null;},_findDefinitions:function(rule){var cssText=rule.parsedCssText;cssText=cssText.replace(BAD_VAR,fixVars);cssText=cssText.replace(VAR_ASSIGN,produceCssProperties);rule.cssText=cssText;if(rule.selector===':root'){rule.selector=':host > *';}},_findApplications:function(rule){rule.cssText=consumeCssProperties(rule.cssText);},transformRule:function(rule){this._findDefinitions(rule);this._findApplications(rule);},_getInitialValueForProperty:function(property){if(!this._measureElement){this._measureElement=document.createElement('meta');this._measureElement.style.all='initial';document.head.appendChild(this._measureElement);}\nreturn window.getComputedStyle(this._measureElement).getPropertyValue(property);}};ApplyShim._boundTransformRule=ApplyShim.transformRule.bind(ApplyShim);ApplyShim._boundFindDefinitions=ApplyShim._findDefinitions.bind(ApplyShim);ApplyShim._boundFindApplications=ApplyShim._findApplications.bind(ApplyShim);return ApplyShim;}();(function(){var prepElement=Polymer.Base._prepElement;var nativeShadow=Polymer.Settings.useNativeShadow;var styleUtil=Polymer.StyleUtil;var styleTransformer=Polymer.StyleTransformer;var styleExtends=Polymer.StyleExtends;var applyShim=Polymer.ApplyShim;var settings=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(element){if(this._encapsulateStyle&&this.__cssBuild!=='shady'){styleTransformer.element(element,this.is,this._scopeCssViaAttr);}\nprepElement.call(this,element);},_prepStyles:function(){if(this._encapsulateStyle===undefined){this._encapsulateStyle=!nativeShadow;}\nif(!nativeShadow){this._scopeStyle=styleUtil.applyStylePlaceHolder(this.is);}\nthis.__cssBuild=styleUtil.cssBuildTypeForModule(this.is);},_prepShimStyles:function(){if(this._template){var hasTargetedCssBuild=styleUtil.isTargetedBuild(this.__cssBuild);if(settings.useNativeCSSProperties&&this.__cssBuild==='shadow'&&hasTargetedCssBuild){if(settings.preserveStyleIncludes){styleUtil.styleIncludesToTemplate(this._template);}\nreturn;}\nthis._styles=this._styles||this._collectStyles();if(settings.useNativeCSSProperties&&!this.__cssBuild){applyShim.transform(this._styles,this);}\nvar cssText=settings.useNativeCSSProperties&&hasTargetedCssBuild?this._styles.length&&this._styles[0].textContent.trim():styleTransformer.elementStyles(this);this._prepStyleProperties();if(!this._needsStyleProperties()&&cssText){styleUtil.applyCss(cssText,this.is,nativeShadow?this._template.content:null,this._scopeStyle);}}else{this._styles=[];}},_collectStyles:function(){var styles=[];var cssText='',m$=this.styleModules;if(m$){for(var i=0,l=m$.length,m;i<l&&(m=m$[i]);i++){cssText+=styleUtil.cssFromModule(m);}}\ncssText+=styleUtil.cssFromModule(this.is);var p=this._template&&this._template.parentNode;if(this._template&&(!p||p.id.toLowerCase()!==this.is)){cssText+=styleUtil.cssFromElement(this._template);}\nif(cssText){var style=document.createElement('style');style.textContent=cssText;if(styleExtends.hasExtends(style.textContent)){cssText=styleExtends.transform(style);}\nstyles.push(style);}\nreturn styles;},_elementAdd:function(node){if(this._encapsulateStyle){if(node.__styleScoped){node.__styleScoped=false;}else{styleTransformer.dom(node,this.is,this._scopeCssViaAttr);}}},_elementRemove:function(node){if(this._encapsulateStyle){styleTransformer.dom(node,this.is,this._scopeCssViaAttr,true);}},scopeSubtree:function(container,shouldObserve){if(nativeShadow){return;}\nvar self=this;var scopify=function(node){if(node.nodeType===Node.ELEMENT_NODE){var className=node.getAttribute('class');node.setAttribute('class',self._scopeElementClass(node,className));var n$=node.querySelectorAll('*');for(var i=0,n;i<n$.length&&(n=n$[i]);i++){className=n.getAttribute('class');n.setAttribute('class',self._scopeElementClass(n,className));}}};scopify(container);if(shouldObserve){var mo=new MutationObserver(function(mxns){for(var i=0,m;i<mxns.length&&(m=mxns[i]);i++){if(m.addedNodes){for(var j=0;j<m.addedNodes.length;j++){scopify(m.addedNodes[j]);}}}});mo.observe(container,{childList:true,subtree:true});return mo;}}});}());Polymer.StyleProperties=function(){'use strict';var matchesSelector=Polymer.DomApi.matchesSelector;var styleUtil=Polymer.StyleUtil;var styleTransformer=Polymer.StyleTransformer;var IS_IE=navigator.userAgent.match('Trident');var settings=Polymer.Settings;return{decorateStyles:function(styles,scope){var self=this,props={},keyframes=[],ruleIndex=0;var scopeSelector=styleTransformer._calcHostScope(scope.is,scope.extends);styleUtil.forRulesInStyles(styles,function(rule,style){self.decorateRule(rule);rule.index=ruleIndex++;self.whenHostOrRootRule(scope,rule,style,function(info){if(rule.parent.type===styleUtil.ruleTypes.MEDIA_RULE){scope.__notStyleScopeCacheable=true;}\nif(info.isHost){var hostContextOrFunction=info.selector.split(' ').some(function(s){return s.indexOf(scopeSelector)===0&&s.length!==scopeSelector.length;});scope.__notStyleScopeCacheable=scope.__notStyleScopeCacheable||hostContextOrFunction;}});self.collectPropertiesInCssText(rule.propertyInfo.cssText,props);},function onKeyframesRule(rule){keyframes.push(rule);});styles._keyframes=keyframes;var names=[];for(var i in props){names.push(i);}\nreturn names;},decorateRule:function(rule){if(rule.propertyInfo){return rule.propertyInfo;}\nvar info={},properties={};var hasProperties=this.collectProperties(rule,properties);if(hasProperties){info.properties=properties;rule.rules=null;}\ninfo.cssText=this.collectCssText(rule);rule.propertyInfo=info;return info;},collectProperties:function(rule,properties){var info=rule.propertyInfo;if(info){if(info.properties){Polymer.Base.mixin(properties,info.properties);return true;}}else{var m,rx=this.rx.VAR_ASSIGN;var cssText=rule.parsedCssText;var value;var any;while(m=rx.exec(cssText)){value=(m[2]||m[3]).trim();if(value!=='inherit'){properties[m[1].trim()]=value;}\nany=true;}\nreturn any;}},collectCssText:function(rule){return this.collectConsumingCssText(rule.parsedCssText);},collectConsumingCssText:function(cssText){return cssText.replace(this.rx.BRACKETED,'').replace(this.rx.VAR_ASSIGN,'');},collectPropertiesInCssText:function(cssText,props){var m;while(m=this.rx.VAR_CONSUMED.exec(cssText)){var name=m[1];if(m[2]!==':'){props[name]=true;}}},reify:function(props){var names=Object.getOwnPropertyNames(props);for(var i=0,n;i<names.length;i++){n=names[i];props[n]=this.valueForProperty(props[n],props);}},valueForProperty:function(property,props){if(property){if(property.indexOf(';')>=0){property=this.valueForProperties(property,props);}else{var self=this;var fn=function(prefix,value,fallback,suffix){var propertyValue=self.valueForProperty(props[value],props);if(!propertyValue||propertyValue==='initial'){propertyValue=self.valueForProperty(props[fallback]||fallback,props)||fallback;}else if(propertyValue==='apply-shim-inherit'){propertyValue='inherit';}\nreturn prefix+(propertyValue||'')+suffix;};property=styleUtil.processVariableAndFallback(property,fn);}}\nreturn property&&property.trim()||'';},valueForProperties:function(property,props){var parts=property.split(';');for(var i=0,p,m;i<parts.length;i++){if(p=parts[i]){this.rx.MIXIN_MATCH.lastIndex=0;m=this.rx.MIXIN_MATCH.exec(p);if(m){p=this.valueForProperty(props[m[1]],props);}else{var colon=p.indexOf(':');if(colon!==-1){var pp=p.substring(colon);pp=pp.trim();pp=this.valueForProperty(pp,props)||pp;p=p.substring(0,colon)+pp;}}\nparts[i]=p&&p.lastIndexOf(';')===p.length-1?p.slice(0,-1):p||'';}}\nreturn parts.join(';');},applyProperties:function(rule,props){var output='';if(!rule.propertyInfo){this.decorateRule(rule);}\nif(rule.propertyInfo.cssText){output=this.valueForProperties(rule.propertyInfo.cssText,props);}\nrule.cssText=output;},applyKeyframeTransforms:function(rule,keyframeTransforms){var input=rule.cssText;var output=rule.cssText;if(rule.hasAnimations==null){rule.hasAnimations=this.rx.ANIMATION_MATCH.test(input);}\nif(rule.hasAnimations){var transform;if(rule.keyframeNamesToTransform==null){rule.keyframeNamesToTransform=[];for(var keyframe in keyframeTransforms){transform=keyframeTransforms[keyframe];output=transform(input);if(input!==output){input=output;rule.keyframeNamesToTransform.push(keyframe);}}}else{for(var i=0;i<rule.keyframeNamesToTransform.length;++i){transform=keyframeTransforms[rule.keyframeNamesToTransform[i]];input=transform(input);}\noutput=input;}}\nrule.cssText=output;},propertyDataFromStyles:function(styles,element){var props={},self=this;var o=[];styleUtil.forActiveRulesInStyles(styles,function(rule){if(!rule.propertyInfo){self.decorateRule(rule);}\nvar selectorToMatch=rule.transformedSelector||rule.parsedSelector;if(element&&rule.propertyInfo.properties&&selectorToMatch){if(matchesSelector.call(element,selectorToMatch)){self.collectProperties(rule,props);addToBitMask(rule.index,o);}}});return{properties:props,key:o};},_rootSelector:/:root|:host\\s*>\\s*\\*/,_checkRoot:function(hostScope,selector){return Boolean(selector.match(this._rootSelector))||hostScope==='html'&&selector.indexOf('html')>-1;},whenHostOrRootRule:function(scope,rule,style,callback){if(!rule.propertyInfo){self.decorateRule(rule);}\nif(!rule.propertyInfo.properties){return;}\nvar hostScope=scope.is?styleTransformer._calcHostScope(scope.is,scope.extends):'html';var parsedSelector=rule.parsedSelector;var isRoot=this._checkRoot(hostScope,parsedSelector);var isHost=!isRoot&&parsedSelector.indexOf(':host')===0;var cssBuild=scope.__cssBuild||style.__cssBuild;if(cssBuild==='shady'){isRoot=parsedSelector===hostScope+' > *.'+hostScope||parsedSelector.indexOf('html')>-1;isHost=!isRoot&&parsedSelector.indexOf(hostScope)===0;}\nif(!isRoot&&!isHost){return;}\nvar selectorToMatch=hostScope;if(isHost){if(settings.useNativeShadow&&!rule.transformedSelector){rule.transformedSelector=styleTransformer._transformRuleCss(rule,styleTransformer._transformComplexSelector,scope.is,hostScope);}\nselectorToMatch=rule.transformedSelector||rule.parsedSelector;}\nif(isRoot&&hostScope==='html'){selectorToMatch=rule.transformedSelector||rule.parsedSelector;}\ncallback({selector:selectorToMatch,isHost:isHost,isRoot:isRoot});},hostAndRootPropertiesForScope:function(scope){var hostProps={},rootProps={},self=this;styleUtil.forActiveRulesInStyles(scope._styles,function(rule,style){self.whenHostOrRootRule(scope,rule,style,function(info){var element=scope._element||scope;if(matchesSelector.call(element,info.selector)){if(info.isHost){self.collectProperties(rule,hostProps);}else{self.collectProperties(rule,rootProps);}}});});return{rootProps:rootProps,hostProps:hostProps};},transformStyles:function(element,properties,scopeSelector){var self=this;var hostSelector=styleTransformer._calcHostScope(element.is,element.extends);var rxHostSelector=element.extends?'\\\\'+hostSelector.slice(0,-1)+'\\\\]':hostSelector;var hostRx=new RegExp(this.rx.HOST_PREFIX+rxHostSelector+this.rx.HOST_SUFFIX);var keyframeTransforms=this._elementKeyframeTransforms(element,scopeSelector);return styleTransformer.elementStyles(element,function(rule){self.applyProperties(rule,properties);if(!settings.useNativeShadow&&!Polymer.StyleUtil.isKeyframesSelector(rule)&&rule.cssText){self.applyKeyframeTransforms(rule,keyframeTransforms);self._scopeSelector(rule,hostRx,hostSelector,element._scopeCssViaAttr,scopeSelector);}});},_elementKeyframeTransforms:function(element,scopeSelector){var keyframesRules=element._styles._keyframes;var keyframeTransforms={};if(!settings.useNativeShadow&&keyframesRules){for(var i=0,keyframesRule=keyframesRules[i];i<keyframesRules.length;keyframesRule=keyframesRules[++i]){this._scopeKeyframes(keyframesRule,scopeSelector);keyframeTransforms[keyframesRule.keyframesName]=this._keyframesRuleTransformer(keyframesRule);}}\nreturn keyframeTransforms;},_keyframesRuleTransformer:function(keyframesRule){return function(cssText){return cssText.replace(keyframesRule.keyframesNameRx,keyframesRule.transformedKeyframesName);};},_scopeKeyframes:function(rule,scopeId){rule.keyframesNameRx=new RegExp('\\\\b'+rule.keyframesName+'(?!\\\\B|-)','g');rule.transformedKeyframesName=rule.keyframesName+'-'+scopeId;rule.transformedSelector=rule.transformedSelector||rule.selector;rule.selector=rule.transformedSelector.replace(rule.keyframesName,rule.transformedKeyframesName);},_hasDirOrHostContext:function(parsedSelector){return/:host-context|:dir/.test(parsedSelector);},_scopeSelector:function(rule,hostRx,hostSelector,viaAttr,scopeId){rule.transformedSelector=rule.transformedSelector||rule.selector;var selector=rule.transformedSelector;var scope=styleTransformer._calcElementScope(scopeId,viaAttr);var hostScope=styleTransformer._calcElementScope(hostSelector,viaAttr);var parts=selector.split(',');var isDirOrHostContextSelector=this._hasDirOrHostContext(rule.parsedSelector);for(var i=0,l=parts.length,p;i<l&&(p=parts[i]);i++){parts[i]=p.match(hostRx)?p.replace(hostSelector,scope):isDirOrHostContextSelector?p.replace(hostScope,scope+' '+hostScope):scope+' '+p;}\nrule.selector=parts.join(',');},applyElementScopeSelector:function(element,selector,old,viaAttr){var c=viaAttr?element.getAttribute(styleTransformer.SCOPE_NAME):element.getAttribute('class')||'';var v=old?c.replace(old,selector):(c?c+' ':'')+this.XSCOPE_NAME+' '+selector;if(c!==v){if(viaAttr){element.setAttribute(styleTransformer.SCOPE_NAME,v);}else{element.setAttribute('class',v);}}},applyElementStyle:function(element,properties,selector,style){var cssText=style?style.textContent||'':this.transformStyles(element,properties,selector);var s=element._customStyle;if(s&&!settings.useNativeShadow&&s!==style){s._useCount--;if(s._useCount<=0&&s.parentNode){s.parentNode.removeChild(s);}}\nif(settings.useNativeShadow){if(element._customStyle){element._customStyle.textContent=cssText;style=element._customStyle;}else if(cssText){style=styleUtil.applyCss(cssText,selector,element.root,element._scopeStyle);}}else{if(!style){if(cssText){style=styleUtil.applyCss(cssText,selector,null,element._scopeStyle);}}else if(!style.parentNode){if(IS_IE&&cssText.indexOf('@media')>-1){style.textContent=cssText;}\nstyleUtil.applyStyle(style,null,element._scopeStyle);}}\nif(style){style._useCount=style._useCount||0;if(element._customStyle!=style){style._useCount++;}\nelement._customStyle=style;}\nreturn style;},mixinCustomStyle:function(props,customStyle){var v;for(var i in customStyle){v=customStyle[i];if(v||v===0){props[i]=v;}}},updateNativeStyleProperties:function(element,properties){var oldPropertyNames=element.__customStyleProperties;if(oldPropertyNames){for(var i=0;i<oldPropertyNames.length;i++){element.style.removeProperty(oldPropertyNames[i]);}}\nvar propertyNames=[];for(var p in properties){if(properties[p]!==null){element.style.setProperty(p,properties[p]);propertyNames.push(p);}}\nelement.__customStyleProperties=propertyNames;},rx:styleUtil.rx,XSCOPE_NAME:'x-scope'};function addToBitMask(n,bits){var o=parseInt(n/32);var v=1<<n%32;bits[o]=(bits[o]||0)|v;}}();(function(){Polymer.StyleCache=function(){this.cache={};};Polymer.StyleCache.prototype={MAX:100,store:function(is,data,keyValues,keyStyles){data.keyValues=keyValues;data.styles=keyStyles;var s$=this.cache[is]=this.cache[is]||[];s$.push(data);if(s$.length>this.MAX){s$.shift();}},retrieve:function(is,keyValues,keyStyles){var cache=this.cache[is];if(cache){for(var i=cache.length-1,data;i>=0;i--){data=cache[i];if(keyStyles===data.styles&&this._objectsEqual(keyValues,data.keyValues)){return data;}}}},clear:function(){this.cache={};},_objectsEqual:function(target,source){var t,s;for(var i in target){t=target[i],s=source[i];if(!(typeof t==='object'&&t?this._objectsStrictlyEqual(t,s):t===s)){return false;}}\nif(Array.isArray(target)){return target.length===source.length;}\nreturn true;},_objectsStrictlyEqual:function(target,source){return this._objectsEqual(target,source)&&this._objectsEqual(source,target);}};}());Polymer.StyleDefaults=function(){var styleProperties=Polymer.StyleProperties;var StyleCache=Polymer.StyleCache;var nativeVariables=Polymer.Settings.useNativeCSSProperties;var api={_styles:[],_properties:null,customStyle:{},_styleCache:new StyleCache(),_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(style){this._styles.push(style);this._properties=null;},get _styleProperties(){if(!this._properties){styleProperties.decorateStyles(this._styles,this);this._styles._scopeStyleProperties=null;this._properties=styleProperties.hostAndRootPropertiesForScope(this).rootProps;styleProperties.mixinCustomStyle(this._properties,this.customStyle);styleProperties.reify(this._properties);}\nreturn this._properties;},hasStyleProperties:function(){return Boolean(this._properties);},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties;},updateStyles:function(properties){this._properties=null;if(properties){Polymer.Base.mixin(this.customStyle,properties);}\nthis._styleCache.clear();for(var i=0,s;i<this._styles.length;i++){s=this._styles[i];s=s.__importElement||s;s._apply();}\nif(nativeVariables){styleProperties.updateNativeStyleProperties(document.documentElement,this.customStyle);}}};return api;}();(function(){'use strict';var serializeValueToAttribute=Polymer.Base.serializeValueToAttribute;var propertyUtils=Polymer.StyleProperties;var styleTransformer=Polymer.StyleTransformer;var styleDefaults=Polymer.StyleDefaults;var nativeShadow=Polymer.Settings.useNativeShadow;var nativeVariables=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){if(!nativeVariables){this._ownStylePropertyNames=this._styles&&this._styles.length?propertyUtils.decorateStyles(this._styles,this):null;}},customStyle:null,getComputedStyleValue:function(property){if(!nativeVariables&&!this._styleProperties){this._computeStyleProperties();}\nreturn!nativeVariables&&this._styleProperties&&this._styleProperties[property]||getComputedStyle(this).getPropertyValue(property);},_setupStyleProperties:function(){this.customStyle={};this._styleCache=null;this._styleProperties=null;this._scopeSelector=null;this._ownStyleProperties=null;this._customStyle=null;},_needsStyleProperties:function(){return Boolean(!nativeVariables&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length);},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var cssText=styleTransformer.elementStyles(this);if(nativeShadow){var templateStyle=this._template.content.querySelector('style');if(templateStyle){templateStyle.textContent=cssText;}}else{var shadyStyle=this._scopeStyle&&this._scopeStyle.nextSibling;if(shadyStyle){shadyStyle.textContent=cssText;}}}},_beforeAttached:function(){if((!this._scopeSelector||this.__stylePropertiesInvalid)&&this._needsStyleProperties()){this.__stylePropertiesInvalid=false;this._updateStyleProperties();}},_findStyleHost:function(){var e=this,root;while(root=Polymer.dom(e).getOwnerRoot()){if(Polymer.isInstance(root.host)){return root.host;}\ne=root.host;}\nreturn styleDefaults;},_updateStyleProperties:function(){var info,scope=this._findStyleHost();if(!scope._styleProperties){scope._computeStyleProperties();}\nif(!scope._styleCache){scope._styleCache=new Polymer.StyleCache();}\nvar scopeData=propertyUtils.propertyDataFromStyles(scope._styles,this);var scopeCacheable=!this.__notStyleScopeCacheable;if(scopeCacheable){scopeData.key.customStyle=this.customStyle;info=scope._styleCache.retrieve(this.is,scopeData.key,this._styles);}\nvar scopeCached=Boolean(info);if(scopeCached){this._styleProperties=info._styleProperties;}else{this._computeStyleProperties(scopeData.properties);}\nthis._computeOwnStyleProperties();if(!scopeCached){info=styleCache.retrieve(this.is,this._ownStyleProperties,this._styles);}\nvar globalCached=Boolean(info)&&!scopeCached;var style=this._applyStyleProperties(info);if(!scopeCached){style=style&&nativeShadow?style.cloneNode(true):style;info={style:style,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties};if(scopeCacheable){scopeData.key.customStyle={};this.mixin(scopeData.key.customStyle,this.customStyle);scope._styleCache.store(this.is,info,scopeData.key,this._styles);}\nif(!globalCached){styleCache.store(this.is,Object.create(info),this._ownStyleProperties,this._styles);}}},_computeStyleProperties:function(scopeProps){var scope=this._findStyleHost();if(!scope._styleProperties){scope._computeStyleProperties();}\nvar props=Object.create(scope._styleProperties);var hostAndRootProps=propertyUtils.hostAndRootPropertiesForScope(this);this.mixin(props,hostAndRootProps.hostProps);scopeProps=scopeProps||propertyUtils.propertyDataFromStyles(scope._styles,this).properties;this.mixin(props,scopeProps);this.mixin(props,hostAndRootProps.rootProps);propertyUtils.mixinCustomStyle(props,this.customStyle);propertyUtils.reify(props);this._styleProperties=props;},_computeOwnStyleProperties:function(){var props={};for(var i=0,n;i<this._ownStylePropertyNames.length;i++){n=this._ownStylePropertyNames[i];props[n]=this._styleProperties[n];}\nthis._ownStyleProperties=props;},_scopeCount:0,_applyStyleProperties:function(info){var oldScopeSelector=this._scopeSelector;this._scopeSelector=info?info._scopeSelector:this.is+'-'+this.__proto__._scopeCount++;var style=propertyUtils.applyElementStyle(this,this._styleProperties,this._scopeSelector,info&&info.style);if(!nativeShadow){propertyUtils.applyElementScopeSelector(this,this._scopeSelector,oldScopeSelector,this._scopeCssViaAttr);}\nreturn style;},serializeValueToAttribute:function(value,attribute,node){node=node||this;if(attribute==='class'&&!nativeShadow){var host=node===this?this.domHost||this.dataHost:this;if(host){value=host._scopeElementClass(node,value);}}\nnode=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(node):node;serializeValueToAttribute.call(this,value,attribute,node);},_scopeElementClass:function(element,selector){if(!nativeShadow&&!this._scopeCssViaAttr){selector=(selector?selector+' ':'')+SCOPE_NAME+' '+this.is+(element._scopeSelector?' '+XSCOPE_NAME+' '+element._scopeSelector:'');}\nreturn selector;},updateStyles:function(properties){if(properties){this.mixin(this.customStyle,properties);}\nif(nativeVariables){propertyUtils.updateNativeStyleProperties(this,this.customStyle);}else{if(this.isAttached){if(this._needsStyleProperties()){this._updateStyleProperties();}else{this._styleProperties=null;}}else{this.__stylePropertiesInvalid=true;}\nif(this._styleCache){this._styleCache.clear();}\nthis._updateRootStyles();}},_updateRootStyles:function(root){root=root||this.root;var c$=Polymer.dom(root)._query(function(e){return e.shadyRoot||e.shadowRoot;});for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.updateStyles){c.updateStyles();}}}});Polymer.updateStyles=function(properties){styleDefaults.updateStyles(properties);Polymer.Base._updateRootStyles(document);};var styleCache=new Polymer.StyleCache();Polymer.customStyleCache=styleCache;var SCOPE_NAME=styleTransformer.SCOPE_NAME;var XSCOPE_NAME=propertyUtils.XSCOPE_NAME;}());Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();if(this.factoryImpl){this._prepConstructor();}\nthis._prepStyles();},_finishRegisterFeatures:function(){this._prepTemplate();this._prepShimStyles();this._prepAnnotations();this._prepEffects();this._prepBehaviors();this._prepPropertyInfo();this._prepBindings();this._prepShady();},_prepBehavior:function(b){this._addPropertyEffects(b.properties);this._addComplexObserverEffects(b.observers);this._addHostAttributes(b.hostAttributes);},_initFeatures:function(){this._setupGestures();this._setupConfigure(this.__data__);this._setupStyleProperties();this._setupDebouncers();this._setupShady();this._registerHost();if(this._template){this._validateApplyShim();this._poolContent();this._beginHosting();this._stampTemplate();this._endHosting();this._marshalAnnotationReferences();}\nthis._marshalInstanceEffects();this._marshalBehaviors();this._marshalHostAttributes();this._marshalAttributes();this._tryReady();},_marshalBehavior:function(b){if(b.listeners){this._listenListeners(b.listeners);}}});(function(){var propertyUtils=Polymer.StyleProperties;var styleUtil=Polymer.StyleUtil;var cssParse=Polymer.CssParse;var styleDefaults=Polymer.StyleDefaults;var styleTransformer=Polymer.StyleTransformer;var applyShim=Polymer.ApplyShim;var debounce=Polymer.Debounce;var settings=Polymer.Settings;var updateDebouncer;Polymer({is:'custom-style',extends:'style',_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this;this.__cssBuild=styleUtil.getCssBuildType(this);if(this.__appliedElement!==this){this.__appliedElement.__cssBuild=this.__cssBuild;}\nif(this.ownerDocument!==window.document&&this.__appliedElement===this){document.head.appendChild(this);}\nthis._tryApply();},attached:function(){this._tryApply();},_tryApply:function(){if(!this._appliesToDocument){if(this.parentNode&&this.parentNode.localName!=='dom-module'){this._appliesToDocument=true;var e=this.__appliedElement;if(!settings.useNativeCSSProperties){this.__needsUpdateStyles=styleDefaults.hasStyleProperties();styleDefaults.addStyle(e);}\nif(e.textContent||this.include){this._apply(true);}else{var self=this;var observer=new MutationObserver(function(){observer.disconnect();self._apply(true);});observer.observe(e,{childList:true});}}}},_updateStyles:function(){Polymer.updateStyles();},_apply:function(initialApply){var e=this.__appliedElement;if(this.include){e.textContent=styleUtil.cssFromModules(this.include,true)+e.textContent;}\nif(!e.textContent){return;}\nvar buildType=this.__cssBuild;var targetedBuild=styleUtil.isTargetedBuild(buildType);if(settings.useNativeCSSProperties&&targetedBuild){return;}\nvar styleRules=styleUtil.rulesForStyle(e);if(!targetedBuild){styleUtil.forEachRule(styleRules,function(rule){styleTransformer.documentRule(rule);});if(settings.useNativeCSSProperties&&!buildType){applyShim.transform([e]);}}\nif(settings.useNativeCSSProperties){e.textContent=styleUtil.toCssText(styleRules);}else{var self=this;var fn=function fn(){self._flushCustomProperties();};if(initialApply){Polymer.RenderStatus.whenReady(fn);}else{fn();}}},_flushCustomProperties:function(){if(this.__needsUpdateStyles){this.__needsUpdateStyles=false;updateDebouncer=debounce(updateDebouncer,this._updateStyles);}else{this._applyCustomProperties();}},_applyCustomProperties:function(){var element=this.__appliedElement;this._computeStyleProperties();var props=this._styleProperties;var rules=styleUtil.rulesForStyle(element);if(!rules){return;}\nelement.textContent=styleUtil.toCssText(rules,function(rule){var css=rule.cssText=rule.parsedCssText;if(rule.propertyInfo&&rule.propertyInfo.cssText){css=cssParse.removeCustomPropAssignment(css);rule.cssText=propertyUtils.valueForProperties(css,props);}});}});}());Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:'_showHideChildren'}},_instanceProps:Polymer.nob,_parentPropPrefix:'_parent_',templatize:function(template){this._templatized=template;if(!template._content){template._content=template.content;}\nif(template._content._ctor){this.ctor=template._content._ctor;this._prepParentProperties(this.ctor.prototype,template);return;}\nvar archetype=Object.create(Polymer.Base);this._customPrepAnnotations(archetype,template);this._prepParentProperties(archetype,template);archetype._prepEffects();this._customPrepEffects(archetype);archetype._prepBehaviors();archetype._prepPropertyInfo();archetype._prepBindings();archetype._notifyPathUp=this._notifyPathUpImpl;archetype._scopeElementClass=this._scopeElementClassImpl;archetype.listen=this._listenImpl;archetype._showHideChildren=this._showHideChildrenImpl;archetype.__setPropertyOrig=this.__setProperty;archetype.__setProperty=this.__setPropertyImpl;var _constructor=this._constructorImpl;var ctor=function TemplateInstance(model,host){_constructor.call(this,model,host);};ctor.prototype=archetype;archetype.constructor=ctor;template._content._ctor=ctor;this.ctor=ctor;},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost;},_showHideChildrenImpl:function(hide){var c=this._children;for(var i=0;i<c.length;i++){var n=c[i];if(Boolean(hide)!=Boolean(n.__hideTemplateChildren__)){if(n.nodeType===Node.TEXT_NODE){if(hide){n.__polymerTextContent__=n.textContent;n.textContent='';}else{n.textContent=n.__polymerTextContent__;}}else if(n.style){if(hide){n.__polymerDisplay__=n.style.display;n.style.display='none';}else{n.style.display=n.__polymerDisplay__;}}}\nn.__hideTemplateChildren__=hide;}},__setPropertyImpl:function(property,value,fromAbove,node){if(node&&node.__hideTemplateChildren__&&property=='textContent'){property='__polymerTextContent__';}\nthis.__setPropertyOrig(property,value,fromAbove,node);},_debounceTemplate:function(fn){Polymer.dom.addDebouncer(this.debounce('_debounceTemplate',fn));},_flushTemplates:function(){Polymer.dom.flush();},_customPrepEffects:function(archetype){var parentProps=archetype._parentProps;for(var prop in parentProps){archetype._addPropertyEffect(prop,'function',this._createHostPropEffector(prop));}\nfor(prop in this._instanceProps){archetype._addPropertyEffect(prop,'function',this._createInstancePropEffector(prop));}},_customPrepAnnotations:function(archetype,template){var t=archetype._template=document.createElement('template');var c=t._content=template._content;if(!c._notes){var rootDataHost=archetype._rootDataHost;if(rootDataHost){Polymer.Annotations.prepElement=function(){rootDataHost._prepElement();};}\nc._notes=Polymer.Annotations.parseAnnotations(template);Polymer.Annotations.prepElement=null;this._processAnnotations(c._notes);}\narchetype._notes=c._notes;archetype._parentProps=c._parentProps;},_prepParentProperties:function(archetype,template){var parentProps=this._parentProps=archetype._parentProps;if(this._forwardParentProp&&parentProps){var proto=archetype._parentPropProto;var prop;if(!proto){for(prop in this._instanceProps){delete parentProps[prop];}\nproto=archetype._parentPropProto=Object.create(null);if(template!=this){Polymer.Bind.prepareModel(proto);Polymer.Base.prepareModelNotifyPath(proto);}\nfor(prop in parentProps){var parentProp=this._parentPropPrefix+prop;var effects=[{kind:'function',effect:this._createForwardPropEffector(prop),fn:Polymer.Bind._functionEffect},{kind:'notify',fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(parentProp)+'-changed'}}];proto._propertyEffects=proto._propertyEffects||{};proto._propertyEffects[parentProp]=effects;Polymer.Bind._createAccessors(proto,parentProp,effects);}}\nvar self=this;if(template!=this){Polymer.Bind.prepareInstance(template);template._forwardParentProp=function(source,value){self._forwardParentProp(source,value);};}\nthis._extendTemplate(template,proto);template._pathEffector=function(path,value,fromAbove){return self._pathEffectorImpl(path,value,fromAbove);};}},_createForwardPropEffector:function(prop){return function(source,value){this._forwardParentProp(prop,value);};},_createHostPropEffector:function(prop){var prefix=this._parentPropPrefix;return function(source,value){this.dataHost._templatized[prefix+prop]=value;};},_createInstancePropEffector:function(prop){return function(source,value,old,fromAbove){if(!fromAbove){this.dataHost._forwardInstanceProp(this,prop,value);}};},_extendTemplate:function(template,proto){var n$=Object.getOwnPropertyNames(proto);if(proto._propertySetter){template._propertySetter=proto._propertySetter;}\nfor(var i=0,n;i<n$.length&&(n=n$[i]);i++){var val=template[n];if(val&&n=='_propertyEffects'){var pe=Polymer.Base.mixin({},val);template._propertyEffects=Polymer.Base.mixin(pe,proto._propertyEffects);}else{var pd=Object.getOwnPropertyDescriptor(proto,n);Object.defineProperty(template,n,pd);if(val!==undefined){template._propertySetter(n,val);}}}},_showHideChildren:function(hidden){},_forwardInstancePath:function(inst,path,value){},_forwardInstanceProp:function(inst,prop,value){},_notifyPathUpImpl:function(path,value){var dataHost=this.dataHost;var root=Polymer.Path.root(path);dataHost._forwardInstancePath.call(dataHost,this,path,value);if(root in dataHost._parentProps){dataHost._templatized._notifyPath(dataHost._parentPropPrefix+path,value);}},_pathEffectorImpl:function(path,value,fromAbove){if(this._forwardParentPath){if(path.indexOf(this._parentPropPrefix)===0){var subPath=path.substring(this._parentPropPrefix.length);var model=Polymer.Path.root(subPath);if(model in this._parentProps){this._forwardParentPath(subPath,value);}}}\nPolymer.Base._pathEffector.call(this._templatized,path,value,fromAbove);},_constructorImpl:function(model,host){this._rootDataHost=host._getRootDataHost();this._setupConfigure(model);this._registerHost(host);this._beginHosting();this.root=this.instanceTemplate(this._template);this.root.__noContent=!this._notes._hasContent;this.root.__styleScoped=true;this._endHosting();this._marshalAnnotatedNodes();this._marshalInstanceEffects();this._marshalAnnotatedListeners();var children=[];for(var n=this.root.firstChild;n;n=n.nextSibling){children.push(n);n._templateInstance=this;}\nthis._children=children;if(host.__hideTemplateChildren__){this._showHideChildren(true);}\nthis._tryReady();},_listenImpl:function(node,eventName,methodName){var model=this;var host=this._rootDataHost;var handler=host._createEventHandler(node,eventName,methodName);var decorated=function(e){e.model=model;handler(e);};host._listen(node,eventName,decorated);},_scopeElementClassImpl:function(node,value){var host=this._rootDataHost;if(host){return host._scopeElementClass(node,value);}\nreturn value;},stamp:function(model){model=model||{};if(this._parentProps){var templatized=this._templatized;for(var prop in this._parentProps){if(model[prop]===undefined){model[prop]=templatized[this._parentPropPrefix+prop];}}}\nreturn new this.ctor(model,this);},modelForElement:function(el){var model;while(el){if(model=el._templateInstance){if(model.dataHost!=this){el=model.dataHost;}else{return model;}}else{el=el.parentNode;}}}};Polymer({is:'dom-template',extends:'template',_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this);}});Polymer._collections=new WeakMap();Polymer.Collection=function(userArray){Polymer._collections.set(userArray,this);this.userArray=userArray;this.store=userArray.slice();this.initMap();};Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){var omap=this.omap=new WeakMap();var pmap=this.pmap={};var s=this.store;for(var i=0;i<s.length;i++){var item=s[i];if(item&&typeof item=='object'){omap.set(item,i);}else{pmap[item]=i;}}},add:function(item){var key=this.store.push(item)-1;if(item&&typeof item=='object'){this.omap.set(item,key);}else{this.pmap[item]=key;}\nreturn'#'+key;},removeKey:function(key){if(key=this._parseKey(key)){this._removeFromMap(this.store[key]);delete this.store[key];}},_removeFromMap:function(item){if(item&&typeof item=='object'){this.omap.delete(item);}else{delete this.pmap[item];}},remove:function(item){var key=this.getKey(item);this.removeKey(key);return key;},getKey:function(item){var key;if(item&&typeof item=='object'){key=this.omap.get(item);}else{key=this.pmap[item];}\nif(key!=undefined){return'#'+key;}},getKeys:function(){return Object.keys(this.store).map(function(key){return'#'+key;});},_parseKey:function(key){if(key&&key[0]=='#'){return key.slice(1);}},setItem:function(key,item){if(key=this._parseKey(key)){var old=this.store[key];if(old){this._removeFromMap(old);}\nif(item&&typeof item=='object'){this.omap.set(item,key);}else{this.pmap[item]=key;}\nthis.store[key]=item;}},getItem:function(key){if(key=this._parseKey(key)){return this.store[key];}},getItems:function(){var items=[],store=this.store;for(var key in store){items.push(store[key]);}\nreturn items;},_applySplices:function(splices){var keyMap={},key;for(var i=0,s;i<splices.length&&(s=splices[i]);i++){s.addedKeys=[];for(var j=0;j<s.removed.length;j++){key=this.getKey(s.removed[j]);keyMap[key]=keyMap[key]?null:-1;}\nfor(j=0;j<s.addedCount;j++){var item=this.userArray[s.index+j];key=this.getKey(item);key=key===undefined?this.add(item):key;keyMap[key]=keyMap[key]?null:1;s.addedKeys.push(key);}}\nvar removed=[];var added=[];for(key in keyMap){if(keyMap[key]<0){this.removeKey(key);removed.push(key);}\nif(keyMap[key]>0){added.push(key);}}\nreturn[{removed:removed,added:added}];}};Polymer.Collection.get=function(userArray){return Polymer._collections.get(userArray)||new Polymer.Collection(userArray);};Polymer.Collection.applySplices=function(userArray,splices){var coll=Polymer._collections.get(userArray);return coll?coll._applySplices(splices):null;};Polymer({is:'dom-repeat',extends:'template',_template:null,properties:{items:{type:Array},as:{type:String,value:'item'},indexAs:{type:String,value:'index'},sort:{type:Function,observer:'_sortChanged'},filter:{type:Function,observer:'_filterChanged'},observe:{type:String,observer:'_observeChanged'},delay:Number,renderedItemCount:{type:Number,notify:!Polymer.Settings.suppressTemplateNotifications,readOnly:true},initialCount:{type:Number,observer:'_initializeChunking'},targetFramerate:{type:Number,value:20},notifyDomChange:{type:Boolean},_targetFrameTime:{type:Number,computed:'_computeFrameTime(targetFramerate)'}},behaviors:[Polymer.Templatizer],observers:['_itemsChanged(items.*)'],created:function(){this._instances=[];this._pool=[];this._limit=Infinity;var self=this;this._boundRenderChunk=function(){self._renderChunk();};},detached:function(){this.__isDetached=true;for(var i=0;i<this._instances.length;i++){this._detachInstance(i);}},attached:function(){if(this.__isDetached){this.__isDetached=false;var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nvar parent=Polymer.dom(parentNode);for(var i=0;i<this._instances.length;i++){this._attachInstance(i,parent,refNode);}}},ready:function(){this._instanceProps={__key__:true};this._instanceProps[this.as]=true;this._instanceProps[this.indexAs]=true;if(!this.ctor){this.templatize(this);}},_sortChanged:function(sort){var dataHost=this._getRootDataHost();this._sortFn=sort&&(typeof sort=='function'?sort:function(){return dataHost[sort].apply(dataHost,arguments);});this._needFullRefresh=true;if(this.items){this._debounceTemplate(this._render);}},_filterChanged:function(filter){var dataHost=this._getRootDataHost();this._filterFn=filter&&(typeof filter=='function'?filter:function(){return dataHost[filter].apply(dataHost,arguments);});this._needFullRefresh=true;if(this.items){this._debounceTemplate(this._render);}},_computeFrameTime:function(rate){return Math.ceil(1000/rate);},_initializeChunking:function(){if(this.initialCount){this._limit=this.initialCount;this._chunkCount=this.initialCount;this._lastChunkTime=performance.now();}},_tryRenderChunk:function(){if(this.items&&this._limit<this.items.length){this.debounce('renderChunk',this._requestRenderChunk);}},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk);},_renderChunk:function(){var currChunkTime=performance.now();var ratio=this._targetFrameTime/(currChunkTime-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*ratio)||1;this._limit+=this._chunkCount;this._lastChunkTime=currChunkTime;this._debounceTemplate(this._render);},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace('.*','.').split(' ');},_itemsChanged:function(change){if(change.path=='items'){if(Array.isArray(this.items)){this.collection=Polymer.Collection.get(this.items);}else if(!this.items){this.collection=null;}else{this._error(this._logf('dom-repeat','expected array for `items`,'+' found',this.items));}\nthis._keySplices=[];this._indexSplices=[];this._needFullRefresh=true;this._initializeChunking();this._debounceTemplate(this._render);}else if(change.path=='items.splices'){this._keySplices=this._keySplices.concat(change.value.keySplices);this._indexSplices=this._indexSplices.concat(change.value.indexSplices);this._debounceTemplate(this._render);}else{var subpath=change.path.slice(6);this._forwardItemPath(subpath,change.value);this._checkObservedPaths(subpath);}},_checkObservedPaths:function(path){if(this._observePaths){path=path.substring(path.indexOf('.')+1);var paths=this._observePaths;for(var i=0;i<paths.length;i++){if(path.indexOf(paths[i])===0){this._needFullRefresh=true;if(this.delay){this.debounce('render',this._render,this.delay);}else{this._debounceTemplate(this._render);}\nreturn;}}}},render:function(){this._needFullRefresh=true;this._debounceTemplate(this._render);this._flushTemplates();},_render:function(){if(this._needFullRefresh){this._applyFullRefresh();this._needFullRefresh=false;}else if(this._keySplices.length){if(this._sortFn){this._applySplicesUserSort(this._keySplices);}else{if(this._filterFn){this._applyFullRefresh();}else{this._applySplicesArrayOrder(this._indexSplices);}}}else{}\nthis._keySplices=[];this._indexSplices=[];var keyToIdx=this._keyToInstIdx={};for(var i=this._instances.length-1;i>=0;i--){var inst=this._instances[i];if(inst.isPlaceholder&&i<this._limit){inst=this._insertInstance(i,inst.__key__);}else if(!inst.isPlaceholder&&i>=this._limit){inst=this._downgradeInstance(i,inst.__key__);}\nkeyToIdx[inst.__key__]=i;if(!inst.isPlaceholder){inst.__setProperty(this.indexAs,i,true);}}\nthis._pool.length=0;this._setRenderedItemCount(this._instances.length);if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}\nthis._tryRenderChunk();},_applyFullRefresh:function(){var c=this.collection;var keys;if(this._sortFn){keys=c?c.getKeys():[];}else{keys=[];var items=this.items;if(items){for(var i=0;i<items.length;i++){keys.push(c.getKey(items[i]));}}}\nvar self=this;if(this._filterFn){keys=keys.filter(function(a){return self._filterFn(c.getItem(a));});}\nif(this._sortFn){keys.sort(function(a,b){return self._sortFn(c.getItem(a),c.getItem(b));});}\nfor(i=0;i<keys.length;i++){var key=keys[i];var inst=this._instances[i];if(inst){inst.__key__=key;if(!inst.isPlaceholder&&i<this._limit){inst.__setProperty(this.as,c.getItem(key),true);}}else if(i<this._limit){this._insertInstance(i,key);}else{this._insertPlaceholder(i,key);}}\nfor(var j=this._instances.length-1;j>=i;j--){this._detachAndRemoveInstance(j);}},_numericSort:function(a,b){return a-b;},_applySplicesUserSort:function(splices){var c=this.collection;var keyMap={};var key;for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0;j<s.removed.length;j++){key=s.removed[j];keyMap[key]=keyMap[key]?null:-1;}\nfor(j=0;j<s.added.length;j++){key=s.added[j];keyMap[key]=keyMap[key]?null:1;}}\nvar removedIdxs=[];var addedKeys=[];for(key in keyMap){if(keyMap[key]===-1){removedIdxs.push(this._keyToInstIdx[key]);}\nif(keyMap[key]===1){addedKeys.push(key);}}\nif(removedIdxs.length){removedIdxs.sort(this._numericSort);for(i=removedIdxs.length-1;i>=0;i--){var idx=removedIdxs[i];if(idx!==undefined){this._detachAndRemoveInstance(idx);}}}\nvar self=this;if(addedKeys.length){if(this._filterFn){addedKeys=addedKeys.filter(function(a){return self._filterFn(c.getItem(a));});}\naddedKeys.sort(function(a,b){return self._sortFn(c.getItem(a),c.getItem(b));});var start=0;for(i=0;i<addedKeys.length;i++){start=this._insertRowUserSort(start,addedKeys[i]);}}},_insertRowUserSort:function(start,key){var c=this.collection;var item=c.getItem(key);var end=this._instances.length-1;var idx=-1;while(start<=end){var mid=start+end>>1;var midKey=this._instances[mid].__key__;var cmp=this._sortFn(c.getItem(midKey),item);if(cmp<0){start=mid+1;}else if(cmp>0){end=mid-1;}else{idx=mid;break;}}\nif(idx<0){idx=end+1;}\nthis._insertPlaceholder(idx,key);return idx;},_applySplicesArrayOrder:function(splices){for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0;j<s.removed.length;j++){this._detachAndRemoveInstance(s.index);}\nfor(j=0;j<s.addedKeys.length;j++){this._insertPlaceholder(s.index+j,s.addedKeys[j]);}}},_detachInstance:function(idx){var inst=this._instances[idx];if(!inst.isPlaceholder){for(var i=0;i<inst._children.length;i++){var el=inst._children[i];Polymer.dom(inst.root).appendChild(el);}\nreturn inst;}},_attachInstance:function(idx,parent,refNode){var inst=this._instances[idx];if(!inst.isPlaceholder){parent.insertBefore(inst.root,refNode);}},_detachAndRemoveInstance:function(idx){var inst=this._detachInstance(idx);if(inst){this._pool.push(inst);}\nthis._instances.splice(idx,1);},_insertPlaceholder:function(idx,key){this._instances.splice(idx,0,{isPlaceholder:true,__key__:key});},_stampInstance:function(idx,key){var model={__key__:key};model[this.as]=this.collection.getItem(key);model[this.indexAs]=idx;return this.stamp(model);},_insertInstance:function(idx,key){var inst=this._pool.pop();if(inst){inst.__setProperty(this.as,this.collection.getItem(key),true);inst.__setProperty('__key__',key,true);}else{inst=this._stampInstance(idx,key);}\nvar beforeRow=this._instances[idx+1];var beforeNode=beforeRow&&!beforeRow.isPlaceholder?beforeRow._children[0]:this;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){if(beforeNode==this){beforeNode=parentNode;}\nparentNode=Polymer.dom(parentNode).parentNode;}\nPolymer.dom(parentNode).insertBefore(inst.root,beforeNode);this._instances[idx]=inst;return inst;},_downgradeInstance:function(idx,key){var inst=this._detachInstance(idx);if(inst){this._pool.push(inst);}\ninst={isPlaceholder:true,__key__:key};this._instances[idx]=inst;return inst;},_showHideChildren:function(hidden){for(var i=0;i<this._instances.length;i++){if(!this._instances[i].isPlaceholder)\nthis._instances[i]._showHideChildren(hidden);}},_forwardInstanceProp:function(inst,prop,value){if(prop==this.as){var idx;if(this._sortFn||this._filterFn){idx=this.items.indexOf(this.collection.getItem(inst.__key__));}else{idx=inst[this.indexAs];}\nthis.set('items.'+idx,value);}},_forwardInstancePath:function(inst,path,value){if(path.indexOf(this.as+'.')===0){this._notifyPath('items.'+inst.__key__+'.'+path.slice(this.as.length+1),value);}},_forwardParentProp:function(prop,value){var i$=this._instances;for(var i=0,inst;i<i$.length&&(inst=i$[i]);i++){if(!inst.isPlaceholder){inst.__setProperty(prop,value,true);}}},_forwardParentPath:function(path,value){var i$=this._instances;for(var i=0,inst;i<i$.length&&(inst=i$[i]);i++){if(!inst.isPlaceholder){inst._notifyPath(path,value,true);}}},_forwardItemPath:function(path,value){if(this._keyToInstIdx){var dot=path.indexOf('.');var key=path.substring(0,dot<0?path.length:dot);var idx=this._keyToInstIdx[key];var inst=this._instances[idx];if(inst&&!inst.isPlaceholder){if(dot>=0){path=this.as+'.'+path.substring(dot+1);inst._notifyPath(path,value,true);}else{inst.__setProperty(this.as,value,true);}}}},itemForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.as];},keyForElement:function(el){var instance=this.modelForElement(el);return instance&&instance.__key__;},indexForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.indexAs];}});Polymer({is:'array-selector',_template:null,properties:{items:{type:Array,observer:'clearSelection'},multi:{type:Boolean,value:false,observer:'clearSelection'},selected:{type:Object,notify:true},selectedItem:{type:Object,notify:true},toggle:{type:Boolean,value:false}},clearSelection:function(){if(Array.isArray(this.selected)){for(var i=0;i<this.selected.length;i++){this.unlinkPaths('selected.'+i);}}else{this.unlinkPaths('selected');this.unlinkPaths('selectedItem');}\nif(this.multi){if(!this.selected||this.selected.length){this.selected=[];this._selectedColl=Polymer.Collection.get(this.selected);}}else{this.selected=null;this._selectedColl=null;}\nthis.selectedItem=null;},isSelected:function(item){if(this.multi){return this._selectedColl.getKey(item)!==undefined;}else{return this.selected==item;}},deselect:function(item){if(this.multi){if(this.isSelected(item)){var skey=this._selectedColl.getKey(item);this.arrayDelete('selected',item);this.unlinkPaths('selected.'+skey);}}else{this.selected=null;this.selectedItem=null;this.unlinkPaths('selected');this.unlinkPaths('selectedItem');}},select:function(item){var icol=Polymer.Collection.get(this.items);var key=icol.getKey(item);if(this.multi){if(this.isSelected(item)){if(this.toggle){this.deselect(item);}}else{this.push('selected',item);var skey=this._selectedColl.getKey(item);this.linkPaths('selected.'+skey,'items.'+key);}}else{if(this.toggle&&item==this.selected){this.deselect();}else{this.selected=item;this.selectedItem=item;this.linkPaths('selected','items.'+key);this.linkPaths('selectedItem','items.'+key);}}}});Polymer({is:'dom-if',extends:'template',_template:null,properties:{'if':{type:Boolean,value:false,observer:'_queueRender'},restamp:{type:Boolean,value:false,observer:'_queueRender'},notifyDomChange:{type:Boolean}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render);},detached:function(){var parentNode=this.parentNode;if(parentNode&&parentNode.localName==this.is){parentNode=Polymer.dom(parentNode).parentNode;}\nif(!parentNode||parentNode.nodeType==Node.DOCUMENT_FRAGMENT_NODE&&(!Polymer.Settings.hasShadow||!(parentNode instanceof ShadowRoot))){this._teardownInstance();}},attached:function(){if(this.if&&this.ctor){this.async(this._ensureInstance);}},render:function(){this._flushTemplates();},_render:function(){if(this.if){if(!this.ctor){this.templatize(this);}\nthis._ensureInstance();this._showHideChildren();}else if(this.restamp){this._teardownInstance();}\nif(!this.restamp&&this._instance){this._showHideChildren();}\nif(this.if!=this._lastIf){if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}\nthis._lastIf=this.if;}},_ensureInstance:function(){var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode&&parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nif(parentNode){if(!this._instance){this._instance=this.stamp();var root=this._instance.root;Polymer.dom(parentNode).insertBefore(root,refNode);}else{var c$=this._instance._children;if(c$&&c$.length){var lastChild=Polymer.dom(refNode).previousSibling;if(lastChild!==c$[c$.length-1]){for(var i=0,n;i<c$.length&&(n=c$[i]);i++){Polymer.dom(parentNode).insertBefore(n,refNode);}}}}}},_teardownInstance:function(){if(this._instance){var c$=this._instance._children;if(c$&&c$.length){var parent=Polymer.dom(Polymer.dom(c$[0]).parentNode);for(var i=0,n;i<c$.length&&(n=c$[i]);i++){parent.removeChild(n);}}\nthis._instance=null;}},_showHideChildren:function(){var hidden=this.__hideTemplateChildren__||!this.if;if(this._instance){this._instance._showHideChildren(hidden);}},_forwardParentProp:function(prop,value){if(this._instance){this._instance.__setProperty(prop,value,true);}},_forwardParentPath:function(path,value){if(this._instance){this._instance._notifyPath(path,value,true);}}});Polymer({is:'dom-bind',properties:{notifyDomChange:{type:Boolean}},extends:'template',_template:null,created:function(){var self=this;Polymer.RenderStatus.whenReady(function(){if(document.readyState=='loading'){document.addEventListener('DOMContentLoaded',function(){self._markImportsReady();});}else{self._markImportsReady();}});},_ensureReady:function(){if(!this._readied){this._readySelf();}},_markImportsReady:function(){this._importsReady=true;this._ensureReady();},_registerFeatures:function(){this._prepConstructor();},_insertChildren:function(){var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nPolymer.dom(parentNode).insertBefore(this.root,refNode);},_removeChildren:function(){if(this._children){for(var i=0;i<this._children.length;i++){this.root.appendChild(this._children[i]);}}},_initFeatures:function(){},_scopeElementClass:function(element,selector){if(this.dataHost){return this.dataHost._scopeElementClass(element,selector);}else{return selector;}},_configureInstanceProperties:function(){},_prepConfigure:function(){var config={};for(var prop in this._propertyEffects){config[prop]=this[prop];}\nvar setupConfigure=this._setupConfigure;this._setupConfigure=function(){setupConfigure.call(this,config);};},attached:function(){if(this._importsReady){this.render();}},detached:function(){this._removeChildren();},render:function(){this._ensureReady();if(!this._children){this._template=this;this._prepAnnotations();this._prepEffects();this._prepBehaviors();this._prepConfigure();this._prepBindings();this._prepPropertyInfo();Polymer.Base._initFeatures.call(this);this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root);}\nthis._insertChildren();if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}}});'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(!Polymer.Settings.useNativeShadow){tr.showPanic('Polymer error','base should use native shadow when possible.');}}'use strict';const global=this.window||this.global;this.tr=(function(){if(global.tr)return global.tr;function exportPath(name){const parts=name.split('.');let cur=global;for(let part;parts.length&&(part=parts.shift());){if(part in cur){cur=cur[part];}else{cur=cur[part]={};}}\nreturn cur;}\nfunction isExported(name){const parts=name.split('.');let cur=global;for(let part;parts.length&&(part=parts.shift());){if(part in cur){cur=cur[part];}else{return false;}}\nreturn true;}\nfunction isDefined(name){const parts=name.split('.');let curObject=global;for(let i=0;i<parts.length;i++){const partName=parts[i];const nextObject=curObject[partName];if(nextObject===undefined)return false;curObject=nextObject;}\nreturn true;}\nlet panicElement=undefined;const rawPanicMessages=[];function showPanicElementIfNeeded(){if(panicElement)return;const panicOverlay=document.createElement('div');panicOverlay.style.backgroundColor='white';panicOverlay.style.border='3px solid red';panicOverlay.style.boxSizing='border-box';panicOverlay.style.color='black';panicOverlay.style.display='flex';panicOverlay.style.height='100%';panicOverlay.style.left=0;panicOverlay.style.padding='8px';panicOverlay.style.position='fixed';panicOverlay.style.top=0;panicOverlay.style.webkitFlexDirection='column';panicOverlay.style.width='100%';panicElement=document.createElement('div');panicElement.style.webkitFlex='1 1 auto';panicElement.style.overflow='auto';panicOverlay.appendChild(panicElement);if(!document.body){setTimeout(function(){document.body.appendChild(panicOverlay);},150);}else{document.body.appendChild(panicOverlay);}}\nfunction showPanic(panicTitle,panicDetails){if(tr.isHeadless){if(panicDetails instanceof Error)throw panicDetails;throw new Error('Panic: '+panicTitle+':\\n'+panicDetails);}\nif(panicDetails instanceof Error){panicDetails=panicDetails.stack;}\nshowPanicElementIfNeeded();const panicMessageEl=document.createElement('div');panicMessageEl.innerHTML='<h2 id=\"message\"></h2>'+'<pre id=\"details\"></pre>';panicMessageEl.querySelector('#message').textContent=panicTitle;panicMessageEl.querySelector('#details').textContent=panicDetails;panicElement.appendChild(panicMessageEl);rawPanicMessages.push({title:panicTitle,details:panicDetails});}\nfunction hasPanic(){return rawPanicMessages.length!==0;}\nfunction getPanicText(){return rawPanicMessages.map(function(msg){return msg.title;}).join(', ');}\nfunction exportTo(namespace,fn){const obj=exportPath(namespace);const exports=fn();for(const propertyName in exports){const propertyDescriptor=Object.getOwnPropertyDescriptor(exports,propertyName);if(propertyDescriptor){Object.defineProperty(obj,propertyName,propertyDescriptor);}}}\nfunction initialize(){if(global.isVinn){tr.isVinn=true;}else if(global.process&&global.process.versions.node){tr.isNode=true;}else{tr.isVinn=false;tr.isNode=false;tr.doc=document;tr.isMac=/Mac/.test(navigator.platform);tr.isWindows=/Win/.test(navigator.platform);tr.isChromeOS=/CrOS/.test(navigator.userAgent);tr.isLinux=/Linux/.test(navigator.userAgent);}\ntr.isHeadless=tr.isVinn||tr.isNode;}\nreturn{initialize,exportTo,isExported,isDefined,showPanic,hasPanic,getPanicText,};})();tr.initialize();'use strict';tr.exportTo('tr.b',function(){function EventTarget(){}\nEventTarget.decorate=function(target){for(const k in EventTarget.prototype){if(k==='decorate')continue;const v=EventTarget.prototype[k];if(typeof v!=='function')continue;target[k]=v;}};EventTarget.prototype={addEventListener(type,handler){if(!this.listeners_){this.listeners_=Object.create(null);}\nif(!(type in this.listeners_)){this.listeners_[type]=[handler];}else{const handlers=this.listeners_[type];if(handlers.indexOf(handler)<0){handlers.push(handler);}}},removeEventListener(type,handler){if(!this.listeners_)return;if(type in this.listeners_){const handlers=this.listeners_[type];const index=handlers.indexOf(handler);if(index>=0){if(handlers.length===1){delete this.listeners_[type];}else{handlers.splice(index,1);}}}},dispatchEvent(event){if(!this.listeners_)return true;event.__defineGetter__('target',()=>this);const realPreventDefault=event.preventDefault;event.preventDefault=function(){realPreventDefault.call(this);this.rawReturnValue=false;};const type=event.type;let prevented=0;if(type in this.listeners_){const handlers=this.listeners_[type].concat();for(let i=0,handler;handler=handlers[i];i++){if(handler.handleEvent){prevented|=handler.handleEvent.call(handler,event)===false;}else{prevented|=handler.call(this,event)===false;}}}\nreturn!prevented&&event.rawReturnValue;},async dispatchAsync(event){if(!this.listeners_)return true;const listeners=this.listeners_[event.type];if(listeners===undefined)return;await Promise.all(listeners.slice().map(listener=>{if(listener.handleEvent){return listener.handleEvent.call(listener,event);}\nreturn listener.call(this,event);}));},hasEventListener(type){return(this.listeners_!==undefined&&this.listeners_[type]!==undefined);}};return{EventTarget,};});'use strict';tr.exportTo('tr.b',function(){function RegisteredTypeInfo(constructor,metadata){this.constructor=constructor;this.metadata=metadata;}\nconst BASIC_REGISTRY_MODE='BASIC_REGISTRY_MODE';const TYPE_BASED_REGISTRY_MODE='TYPE_BASED_REGISTRY_MODE';const ALL_MODES={BASIC_REGISTRY_MODE:true,TYPE_BASED_REGISTRY_MODE:true};function ExtensionRegistryOptions(mode){if(mode===undefined){throw new Error('Mode is required');}\nif(!ALL_MODES[mode]){throw new Error('Not a mode.');}\nthis.mode_=mode;this.defaultMetadata_={};this.defaultConstructor_=undefined;this.defaultTypeInfo_=undefined;this.frozen_=false;}\nExtensionRegistryOptions.prototype={freeze(){if(this.frozen_){throw new Error('Frozen');}\nthis.frozen_=true;},get mode(){return this.mode_;},get defaultMetadata(){return this.defaultMetadata_;},set defaultMetadata(defaultMetadata){if(this.frozen_){throw new Error('Frozen');}\nthis.defaultMetadata_=defaultMetadata;this.defaultTypeInfo_=undefined;},get defaultConstructor(){return this.defaultConstructor_;},set defaultConstructor(defaultConstructor){if(this.frozen_){throw new Error('Frozen');}\nthis.defaultConstructor_=defaultConstructor;this.defaultTypeInfo_=undefined;},get defaultTypeInfo(){if(this.defaultTypeInfo_===undefined&&this.defaultConstructor_){this.defaultTypeInfo_=new RegisteredTypeInfo(this.defaultConstructor,this.defaultMetadata);}\nreturn this.defaultTypeInfo_;},validateConstructor(constructor){if(!this.mandatoryBaseClass)return;let curProto=constructor.prototype.__proto__;let ok=false;while(curProto){if(curProto===this.mandatoryBaseClass.prototype){ok=true;break;}\ncurProto=curProto.__proto__;}\nif(!ok){throw new Error(constructor+'must be subclass of '+registry);}}};return{BASIC_REGISTRY_MODE,TYPE_BASED_REGISTRY_MODE,ExtensionRegistryOptions,RegisteredTypeInfo,};});'use strict';tr.exportTo('tr.b',function(){let Event;if(tr.isHeadless){function HeadlessEvent(type,opt_bubbles,opt_preventable){this.type=type;this.bubbles=(opt_bubbles!==undefined?!!opt_bubbles:false);this.cancelable=(opt_preventable!==undefined?!!opt_preventable:false);this.defaultPrevented=false;this.cancelBubble=false;}\nHeadlessEvent.prototype={preventDefault(){this.defaultPrevented=true;},stopPropagation(){this.cancelBubble=true;}};Event=HeadlessEvent;}else{function TrEvent(type,opt_bubbles,opt_preventable){const e=tr.doc.createEvent('Event');e.initEvent(type,!!opt_bubbles,!!opt_preventable);e.__proto__=global.Event.prototype;return e;}\nTrEvent.prototype={__proto__:global.Event.prototype};Event=TrEvent;}\nfunction dispatchSimpleEvent(target,type,opt_bubbles,opt_cancelable,opt_fields){const e=new tr.b.Event(type,opt_bubbles,opt_cancelable);Object.assign(e,opt_fields);return target.dispatchEvent(e);}\nasync function dispatchSimpleEventAsync(target,type,opt_fields){const e=new tr.b.Event(type,false,false);Object.assign(e,opt_fields);return await target.dispatchAsync(e);}\nreturn{Event,dispatchSimpleEvent,dispatchSimpleEventAsync,};});'use strict';tr.exportTo('tr.b',function(){const RegisteredTypeInfo=tr.b.RegisteredTypeInfo;const ExtensionRegistryOptions=tr.b.ExtensionRegistryOptions;function decorateBasicExtensionRegistry(registry,extensionRegistryOptions){const savedStateStack=[];registry.registeredTypeInfos_=[];registry.register=function(constructor,opt_metadata){if(registry.findIndexOfRegisteredConstructor(constructor)!==undefined){throw new Error('Handler already registered for '+constructor);}\nextensionRegistryOptions.validateConstructor(constructor);const metadata={};for(const k in extensionRegistryOptions.defaultMetadata){metadata[k]=extensionRegistryOptions.defaultMetadata[k];}\nif(opt_metadata){for(const k in opt_metadata){metadata[k]=opt_metadata[k];}}\nconst typeInfo=new RegisteredTypeInfo(constructor,metadata);let e=new tr.b.Event('will-register');e.typeInfo=typeInfo;registry.dispatchEvent(e);registry.registeredTypeInfos_.push(typeInfo);e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.pushCleanStateBeforeTest=function(){savedStateStack.push(registry.registeredTypeInfos_);registry.registeredTypeInfos_=[];const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.popCleanStateAfterTest=function(){registry.registeredTypeInfos_=savedStateStack[0];savedStateStack.splice(0,1);const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.findIndexOfRegisteredConstructor=function(constructor){for(let i=0;i<registry.registeredTypeInfos_.length;i++){if(registry.registeredTypeInfos_[i].constructor===constructor){return i;}}\nreturn undefined;};registry.unregister=function(constructor){const foundIndex=registry.findIndexOfRegisteredConstructor(constructor);if(foundIndex===undefined){throw new Error(constructor+' not registered');}\nregistry.registeredTypeInfos_.splice(foundIndex,1);const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.getAllRegisteredTypeInfos=function(){return registry.registeredTypeInfos_;};registry.findTypeInfo=function(constructor){const foundIndex=this.findIndexOfRegisteredConstructor(constructor);if(foundIndex!==undefined){return this.registeredTypeInfos_[foundIndex];}\nreturn undefined;};registry.findTypeInfoMatching=function(predicate,opt_this){opt_this=opt_this?opt_this:undefined;for(let i=0;i<registry.registeredTypeInfos_.length;++i){const typeInfo=registry.registeredTypeInfos_[i];if(predicate.call(opt_this,typeInfo)){return typeInfo;}}\nreturn extensionRegistryOptions.defaultTypeInfo;};registry.findTypeInfoWithName=function(name){if(typeof(name)!=='string'){throw new Error('Name is not a string.');}\nconst typeInfo=registry.findTypeInfoMatching(function(ti){return ti.constructor.name===name;});if(typeInfo)return typeInfo;return undefined;};}\nreturn{_decorateBasicExtensionRegistry:decorateBasicExtensionRegistry};});'use strict';tr.exportTo('tr.b',function(){const categoryPartsFor={};function getCategoryParts(category){let parts=categoryPartsFor[category];if(parts!==undefined)return parts;parts=category.split(',');categoryPartsFor[category]=parts;return parts;}\nreturn{getCategoryParts,};});'use strict';tr.exportTo('tr.b',function(){const getCategoryParts=tr.b.getCategoryParts;const RegisteredTypeInfo=tr.b.RegisteredTypeInfo;const ExtensionRegistryOptions=tr.b.ExtensionRegistryOptions;function decorateTypeBasedExtensionRegistry(registry,extensionRegistryOptions){const savedStateStack=[];registry.registeredTypeInfos_=[];registry.categoryPartToTypeInfoMap_=new Map();registry.typeNameToTypeInfoMap_=new Map();registry.register=function(constructor,metadata){extensionRegistryOptions.validateConstructor(constructor);const typeInfo=new RegisteredTypeInfo(constructor,metadata||extensionRegistryOptions.defaultMetadata);typeInfo.typeNames=[];typeInfo.categoryParts=[];if(metadata&&metadata.typeName){typeInfo.typeNames.push(metadata.typeName);}\nif(metadata&&metadata.typeNames){typeInfo.typeNames.push.apply(typeInfo.typeNames,metadata.typeNames);}\nif(metadata&&metadata.categoryParts){typeInfo.categoryParts.push.apply(typeInfo.categoryParts,metadata.categoryParts);}\nif(typeInfo.typeNames.length===0&&typeInfo.categoryParts.length===0){throw new Error('typeName or typeNames must be provided');}\ntypeInfo.typeNames.forEach(function(typeName){if(registry.typeNameToTypeInfoMap_.has(typeName)){throw new Error('typeName '+typeName+' already registered');}});typeInfo.categoryParts.forEach(function(categoryPart){if(registry.categoryPartToTypeInfoMap_.has(categoryPart)){throw new Error('categoryPart '+categoryPart+' already registered');}});let e=new tr.b.Event('will-register');e.typeInfo=typeInfo;registry.dispatchEvent(e);typeInfo.typeNames.forEach(function(typeName){registry.typeNameToTypeInfoMap_.set(typeName,typeInfo);});typeInfo.categoryParts.forEach(function(categoryPart){registry.categoryPartToTypeInfoMap_.set(categoryPart,typeInfo);});registry.registeredTypeInfos_.push(typeInfo);e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.pushCleanStateBeforeTest=function(){savedStateStack.push({registeredTypeInfos:registry.registeredTypeInfos_,typeNameToTypeInfoMap:registry.typeNameToTypeInfoMap_,categoryPartToTypeInfoMap:registry.categoryPartToTypeInfoMap_});registry.registeredTypeInfos_=[];registry.typeNameToTypeInfoMap_=new Map();registry.categoryPartToTypeInfoMap_=new Map();const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.popCleanStateAfterTest=function(){const state=savedStateStack[0];savedStateStack.splice(0,1);registry.registeredTypeInfos_=state.registeredTypeInfos;registry.typeNameToTypeInfoMap_=state.typeNameToTypeInfoMap;registry.categoryPartToTypeInfoMap_=state.categoryPartToTypeInfoMap;const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.unregister=function(constructor){let typeInfoIndex=-1;for(let i=0;i<registry.registeredTypeInfos_.length;i++){if(registry.registeredTypeInfos_[i].constructor===constructor){typeInfoIndex=i;break;}}\nif(typeInfoIndex===-1){throw new Error(constructor+' not registered');}\nconst typeInfo=registry.registeredTypeInfos_[typeInfoIndex];registry.registeredTypeInfos_.splice(typeInfoIndex,1);typeInfo.typeNames.forEach(function(typeName){registry.typeNameToTypeInfoMap_.delete(typeName);});typeInfo.categoryParts.forEach(function(categoryPart){registry.categoryPartToTypeInfoMap_.delete(categoryPart);});const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.getTypeInfo=function(category,typeName){if(category){const categoryParts=getCategoryParts(category);for(let i=0;i<categoryParts.length;i++){const categoryPart=categoryParts[i];const typeInfo=registry.categoryPartToTypeInfoMap_.get(categoryPart);if(typeInfo!==undefined)return typeInfo;}}\nconst typeInfo=registry.typeNameToTypeInfoMap_.get(typeName);if(typeInfo!==undefined)return typeInfo;return extensionRegistryOptions.defaultTypeInfo;};registry.getConstructor=function(category,typeName){const typeInfo=registry.getTypeInfo(category,typeName);if(typeInfo)return typeInfo.constructor;return undefined;};}\nreturn{_decorateTypeBasedExtensionRegistry:decorateTypeBasedExtensionRegistry};});'use strict';tr.exportTo('tr.b',function(){const URL_REGEX=/^(https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b|file:\\/\\/)([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/;function deepCopy(value){if(!(value instanceof Object)){if(value===undefined||value===null)return value;if(typeof value==='string')return value.substring();if(typeof value==='boolean')return value;if(typeof value==='number')return value;throw new Error('Unrecognized: '+typeof value);}\nconst object=value;if(object instanceof Array){const res=new Array(object.length);for(let i=0;i<object.length;i++){res[i]=deepCopy(object[i]);}\nreturn res;}\nif(object.__proto__!==Object.prototype){throw new Error('Can only clone simple types');}\nconst res={};for(const key in object){res[key]=deepCopy(object[key]);}\nreturn res;}\nfunction normalizeException(e){if(e===undefined||e===null){return{typeName:'UndefinedError',message:'Unknown: null or undefined exception',stack:'Unknown'};}\nif(typeof(e)==='string'){return{typeName:'StringError',message:e,stack:[e]};}\nlet typeName;if(e.name){typeName=e.name;}else if(e.constructor){if(e.constructor.name){typeName=e.constructor.name;}else{typeName='AnonymousError';}}else{typeName='ErrorWithNoConstructor';}\nconst msg=e.message?e.message:'Unknown';return{typeName,message:msg,stack:e.stack?e.stack:[msg]};}\nfunction stackTraceAsString(){return new Error().stack+'';}\nfunction stackTrace(){let stack=stackTraceAsString();stack=stack.split('\\n');return stack.slice(2);}\nfunction getUsingPath(path,fromDict){const parts=path.split('.');let cur=fromDict;for(let part;parts.length&&(part=parts.shift());){if(!parts.length){return cur[part];}else if(part in cur){cur=cur[part];}else{return undefined;}}\nreturn undefined;}\nfunction formatDate(date){return date.toISOString().replace('T',' ').slice(0,19);}\nfunction numberToJson(n){if(isNaN(n))return'NaN';if(n===Infinity)return'Infinity';if(n===-Infinity)return'-Infinity';return n;}\nfunction numberFromJson(n){if(n==='NaN'||n===null)return NaN;if(n==='Infinity')return Infinity;if(n==='-Infinity')return-Infinity;return n;}\nfunction runLengthEncoding(ary){const encodedArray=[];for(const element of ary){if(encodedArray.length===0||encodedArray[encodedArray.length-1].value!==element){encodedArray.push({value:element,count:1,});}else{encodedArray[encodedArray.length-1].count+=1;}}\nreturn encodedArray;}\nfunction isUrl(s){return typeof(s)==='string'&&s.match(URL_REGEX)!==null;}\nfunction getOnlyElement(iterable){const iterator=iterable[Symbol.iterator]();const firstIteration=iterator.next();if(firstIteration.done){throw new Error('getOnlyElement was passed an empty iterable.');}\nconst secondIteration=iterator.next();if(!secondIteration.done){throw new Error('getOnlyElement was passed an iterable with multiple elements.');}\nreturn firstIteration.value;}\nfunction getFirstElement(iterable){const iterator=iterable[Symbol.iterator]();const result=iterator.next();if(result.done){throw new Error('getFirstElement was passed an empty iterable.');}\nreturn result.value;}\nfunction compareArrays(x,y,elementCmp){const minLength=Math.min(x.length,y.length);let i;for(i=0;i<minLength;i++){const tmp=elementCmp(x[i],y[i]);if(tmp)return tmp;}\nif(x.length===y.length)return 0;if(x[i]===undefined)return-1;return 1;}\nfunction groupIntoMap(ary,callback,opt_this,opt_arrayConstructor){const arrayConstructor=opt_arrayConstructor||Array;const results=new Map();for(const element of ary){const key=callback.call(opt_this,element);let items=results.get(key);if(items===undefined){items=new arrayConstructor();results.set(key,items);}\nitems.push(element);}\nreturn results;}\nfunction inPlaceFilter(array,predicate,opt_this){opt_this=opt_this||this;let nextPosition=0;for(let i=0;i<array.length;i++){if(!predicate.call(opt_this,array[i],i))continue;if(nextPosition<i){array[nextPosition]=array[i];}\nnextPosition++;}\nif(nextPosition<array.length){array.length=nextPosition;}}\nfunction invertArrayOfDicts(array,opt_dictGetter,opt_this){opt_this=opt_this||this;const result={};for(let i=0;i<array.length;i++){const item=array[i];if(item===undefined)continue;const dict=opt_dictGetter?opt_dictGetter.call(opt_this,item):item;if(dict===undefined)continue;for(const key in dict){let valueList=result[key];if(valueList===undefined){result[key]=valueList=new Array(array.length);}\nvalueList[i]=dict[key];}}\nreturn result;}\nfunction setsEqual(a,b){if(!(a instanceof Set)||!(b instanceof Set))return false;if(a.size!==b.size)return false;for(const x of a){if(!b.has(x))return false;}\nreturn true;}\nfunction findLowIndexInSortedArray(ary,mapFn,loVal){if(ary.length===0)return 1;let low=0;let high=ary.length-1;let i;let comparison;let hitPos=-1;while(low<=high){i=Math.floor((low+high)/2);comparison=mapFn(ary[i])-loVal;if(comparison<0){low=i+1;continue;}else if(comparison>0){high=i-1;continue;}else{hitPos=i;high=i-1;}}\nreturn hitPos!==-1?hitPos:low;}\nfunction findIndexInSortedIntervals(ary,mapLoFn,mapWidthFn,loVal){const first=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(first===0){if(loVal>=mapLoFn(ary[0])&&loVal<mapLoFn(ary[0])+mapWidthFn(ary[0],0)){return 0;}\nreturn-1;}\nif(first<ary.length){if(loVal>=mapLoFn(ary[first])&&loVal<mapLoFn(ary[first])+mapWidthFn(ary[first],first)){return first;}\nif(loVal>=mapLoFn(ary[first-1])&&loVal<mapLoFn(ary[first-1])+\nmapWidthFn(ary[first-1],first-1)){return first-1;}\nreturn ary.length;}\nif(first===ary.length){if(loVal>=mapLoFn(ary[first-1])&&loVal<mapLoFn(ary[first-1])+\nmapWidthFn(ary[first-1],first-1)){return first-1;}\nreturn ary.length;}\nreturn ary.length;}\nfunction findIndexInSortedClosedIntervals(ary,mapLoFn,mapHiFn,val){const i=findLowIndexInSortedArray(ary,mapLoFn,val);if(i===0){if(val>=mapLoFn(ary[0],0)&&val<=mapHiFn(ary[0],0)){return 0;}\nreturn-1;}\nif(i<ary.length){if(val>=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}\nif(val>=mapLoFn(ary[i],i)&&val<=mapHiFn(ary[i],i)){return i;}\nreturn ary.length;}\nif(i===ary.length){if(val>=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}\nreturn ary.length;}\nreturn ary.length;}\nfunction iterateOverIntersectingIntervals(ary,mapLoFn,mapWidthFn,loVal,hiVal,cb){if(ary.length===0)return;if(loVal>hiVal)return;let i=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(i===-1){return;}\nif(i>0){const hi=mapLoFn(ary[i-1])+mapWidthFn(ary[i-1],i-1);if(hi>=loVal){cb(ary[i-1],i-1);}}\nif(i===ary.length){return;}\nfor(let n=ary.length;i<n;i++){const lo=mapLoFn(ary[i]);if(lo>=hiVal)break;cb(ary[i],i);}}\nfunction findClosestElementInSortedArray(ary,mapFn,val,maxDiff){if(ary.length===0)return null;let aftIdx=findLowIndexInSortedArray(ary,mapFn,val);const befIdx=aftIdx>0?aftIdx-1:0;if(aftIdx===ary.length)aftIdx-=1;const befDiff=Math.abs(val-mapFn(ary[befIdx]));const aftDiff=Math.abs(val-mapFn(ary[aftIdx]));if(befDiff>maxDiff&&aftDiff>maxDiff)return null;const idx=befDiff<aftDiff?befIdx:aftIdx;return ary[idx];}\nfunction findClosestIntervalInSortedIntervals(ary,mapLoFn,mapHiFn,val,maxDiff){if(ary.length===0)return null;let idx=findLowIndexInSortedArray(ary,mapLoFn,val);if(idx>0)idx-=1;const hiInt=ary[idx];let loInt=hiInt;if(val>mapHiFn(hiInt)&&idx+1<ary.length){loInt=ary[idx+1];}\nconst loDiff=Math.abs(val-mapLoFn(loInt));const hiDiff=Math.abs(val-mapHiFn(hiInt));if(loDiff>maxDiff&&hiDiff>maxDiff)return null;if(loDiff<hiDiff)return loInt;return hiInt;}\nfunction findFirstTrueIndexInSortedArray(array,test){let i0=0;let i1=array.length;while(i0<i1){const i=Math.trunc((i0+i1)/2);if(test(array[i])){i1=i;}else{i0=i+1;}}\nreturn i1;}\nreturn{compareArrays,deepCopy,findClosestElementInSortedArray,findClosestIntervalInSortedIntervals,findFirstTrueIndexInSortedArray,findIndexInSortedClosedIntervals,findIndexInSortedIntervals,findLowIndexInSortedArray,formatDate,getFirstElement,getOnlyElement,getUsingPath,groupIntoMap,inPlaceFilter,invertArrayOfDicts,isUrl,iterateOverIntersectingIntervals,normalizeException,numberFromJson,numberToJson,runLengthEncoding,setsEqual,stackTrace,stackTraceAsString,};});'use strict';tr.exportTo('tr.b',function(){function decorateExtensionRegistry(registry,registryOptions){if(registry.register){throw new Error('Already has registry');}\nregistryOptions.freeze();if(registryOptions.mode===tr.b.BASIC_REGISTRY_MODE){tr.b._decorateBasicExtensionRegistry(registry,registryOptions);}else if(registryOptions.mode===tr.b.TYPE_BASED_REGISTRY_MODE){tr.b._decorateTypeBasedExtensionRegistry(registry,registryOptions);}else{throw new Error('Unrecognized mode');}\nif(registry.addEventListener===undefined){tr.b.EventTarget.decorate(registry);}}\nreturn{decorateExtensionRegistry,};});'use strict';tr.exportTo('tr.importer',function(){function Importer(){}\nImporter.prototype={__proto__:Object.prototype,get importerName(){return'Importer';},isTraceDataContainer(){return false;},extractSubtraces(){return[];},importClockSyncMarkers(){},importEvents(){},importSampleData(){},finalizeImport(){}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Importer;tr.b.decorateExtensionRegistry(Importer,options);Importer.findImporterFor=function(eventData){const typeInfo=Importer.findTypeInfoMatching(function(ti){return ti.constructor.canImport(eventData);});if(typeInfo){return typeInfo.constructor;}\nreturn undefined;};return{Importer,};});'use strict';tr.exportTo('tr.e.importer.gcloud_trace',function(){function GcloudTraceImporter(model,eventData){this.importPriority=2;this.eventData_=eventData;}\nGcloudTraceImporter.canImport=function(eventData){if(typeof(eventData)!=='string'&&!(eventData instanceof String)){return false;}\nconst normalizedEventData=eventData.slice(0,20).replace(/\\s/g,'');if(normalizedEventData.length<14)return false;return normalizedEventData.slice(0,14)==='{\"projectId\":\"';};GcloudTraceImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GcloudTraceImporter';},extractSubtraces(){const traceEvents=this.createEventsForTrace();return traceEvents?[traceEvents]:[];},createEventsForTrace(){const events=[];const trace=JSON.parse(this.eventData_);const spanLength=trace.spans.length;for(let i=0;i<spanLength;i++){events.push(this.createEventForSpan(trace.traceId,trace.spans[i]));}\nreturn{'traceEvents':events};},createEventForSpan(traceId,span){let newArgs={};if(span.labels){newArgs=JSON.parse(JSON.stringify(span.labels));}\nnewArgs['Span ID']=span.spanId;newArgs['Start Time']=span.startTime;newArgs['End Time']=span.endTime;if(span.parentSpanId){newArgs['Parent Span ID']=span.parentSpanId;}\nreturn{name:span.name,args:newArgs,pid:traceId,ts:Date.parse(span.startTime)*1000,dur:(Date.parse(span.endTime)-Date.parse(span.startTime))*1000,cat:'tracespan',tid:traceId,ph:'X'};}};tr.importer.Importer.register(GcloudTraceImporter);return{GcloudTraceImporter,};});'use strict';tr.exportTo('tr.b.math',function(){function convertEventsToRanges(events){return events.map(function(event){return tr.b.math.Range.fromExplicitRange(event.start,event.end);});}\nfunction mergeRanges(inRanges,mergeThreshold,mergeFunction){const remainingEvents=inRanges.slice();remainingEvents.sort(function(x,y){return x.min-y.min;});if(remainingEvents.length<=1){const merged=[];if(remainingEvents.length===1){merged.push(mergeFunction(remainingEvents));}\nreturn merged;}\nconst mergedEvents=[];let currentMergeBuffer=[];let rightEdge;function beginMerging(){currentMergeBuffer.push(remainingEvents[0]);remainingEvents.splice(0,1);rightEdge=currentMergeBuffer[0].max;}\nfunction flushCurrentMergeBuffer(){if(currentMergeBuffer.length===0)return;mergedEvents.push(mergeFunction(currentMergeBuffer));currentMergeBuffer=[];if(remainingEvents.length!==0)beginMerging();}\nbeginMerging();while(remainingEvents.length){const currentEvent=remainingEvents[0];const distanceFromRightEdge=currentEvent.min-rightEdge;if(distanceFromRightEdge<mergeThreshold){rightEdge=Math.max(rightEdge,currentEvent.max);remainingEvents.splice(0,1);currentMergeBuffer.push(currentEvent);continue;}\nflushCurrentMergeBuffer();}\nflushCurrentMergeBuffer();return mergedEvents;}\nfunction findEmptyRangesBetweenRanges(inRanges,opt_totalRange){if(opt_totalRange&&opt_totalRange.isEmpty)opt_totalRange=undefined;const emptyRanges=[];if(!inRanges.length){if(opt_totalRange)emptyRanges.push(opt_totalRange);return emptyRanges;}\ninRanges=inRanges.slice();inRanges.sort(function(x,y){return x.min-y.min;});if(opt_totalRange&&(opt_totalRange.min<inRanges[0].min)){emptyRanges.push(tr.b.math.Range.fromExplicitRange(opt_totalRange.min,inRanges[0].min));}\ninRanges.forEach(function(range,index){for(let otherIndex=0;otherIndex<inRanges.length;++otherIndex){if(index===otherIndex)continue;const other=inRanges[otherIndex];if(other.min>range.max){emptyRanges.push(tr.b.math.Range.fromExplicitRange(range.max,other.min));return;}\nif(other.max>range.max){return;}}\nif(opt_totalRange&&(range.max<opt_totalRange.max)){emptyRanges.push(tr.b.math.Range.fromExplicitRange(range.max,opt_totalRange.max));}});return emptyRanges;}\nreturn{convertEventsToRanges,findEmptyRangesBetweenRanges,mergeRanges,};});!function(t,n){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=n();else if(\"function\"==typeof define&&define.amd)define(n);else{var r=n();for(var a in r)(\"object\"==typeof exports?exports:t)[a]=r[a]}}(this,function(){return function(t){function n(a){if(r[a])return r[a].exports;var e=r[a]={exports:{},id:a,loaded:!1};return t[a].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}var r={};return n.m=t,n.c=r,n.p=\"\",n(0)}([function(t,n,r){n.glMatrix=r(1),n.mat2=r(2),n.mat2d=r(3),n.mat3=r(4),n.mat4=r(5),n.quat=r(6),n.vec2=r(9),n.vec3=r(7),n.vec4=r(8)},function(t,n,r){var a={};a.EPSILON=1e-6,a.ARRAY_TYPE=\"undefined\"!=typeof Float32Array?Float32Array:Array,a.RANDOM=Math.random,a.setMatrixArrayType=function(t){GLMAT_ARRAY_TYPE=t};var e=Math.PI/180;a.toRadian=function(t){return t*e},t.exports=a},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1];t[1]=n[2],t[2]=r}else t[0]=n[0],t[1]=n[2],t[2]=n[1],t[3]=n[3];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*u-e*a;return o?(o=1/o,t[0]=u*o,t[1]=-a*o,t[2]=-e*o,t[3]=r*o,t):null},e.adjoint=function(t,n){var r=n[0];return t[0]=n[3],t[1]=-n[1],t[2]=-n[2],t[3]=r,t},e.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*i+u*c,t[1]=e*i+o*c,t[2]=a*f+u*s,t[3]=e*f+o*s,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+u*i,t[1]=e*c+o*i,t[2]=a*-i+u*c,t[3]=e*-i+o*c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1];return t[0]=a*i,t[1]=e*i,t[2]=u*c,t[3]=o*c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t},e.str=function(t){return\"mat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},e.LDU=function(t,n,r,a){return t[2]=a[2]/a[0],r[0]=a[0],r[1]=a[1],r[3]=a[3]-t[2]*r[1],[t,n,r]},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(6);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=r*u-a*e;return c?(c=1/c,t[0]=u*c,t[1]=-a*c,t[2]=-e*c,t[3]=r*c,t[4]=(e*i-u*o)*c,t[5]=(a*o-r*i)*c,t):null},e.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1],h=r[2],M=r[3],l=r[4],v=r[5];return t[0]=a*f+u*s,t[1]=e*f+o*s,t[2]=a*h+u*M,t[3]=e*h+o*M,t[4]=a*l+u*v+i,t[5]=e*l+o*v+c,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=Math.sin(r),s=Math.cos(r);return t[0]=a*s+u*f,t[1]=e*s+o*f,t[2]=a*-f+u*s,t[3]=e*-f+o*s,t[4]=i,t[5]=c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a*f,t[1]=e*f,t[2]=u*s,t[3]=o*s,t[4]=i,t[5]=c,t},e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=a*f+u*s+i,t[5]=e*f+o*s+c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t[4]=0,t[5]=0,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t[4]=0,t[5]=0,t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=n[0],t[5]=n[1],t},e.str=function(t){return\"mat2d(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[4],t[4]=n[5],t[5]=n[6],t[6]=n[8],t[7]=n[9],t[8]=n[10],t},e.clone=function(t){var n=new a.ARRAY_TYPE(9);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[5];t[1]=n[3],t[2]=n[6],t[3]=r,t[5]=n[7],t[6]=a,t[7]=e}else t[0]=n[0],t[1]=n[3],t[2]=n[6],t[3]=n[1],t[4]=n[4],t[5]=n[7],t[6]=n[2],t[7]=n[5],t[8]=n[8];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=s*o-i*f,M=-s*u+i*c,l=f*u-o*c,v=r*h+a*M+e*l;return v?(v=1/v,t[0]=h*v,t[1]=(-s*a+e*f)*v,t[2]=(i*a-e*o)*v,t[3]=M*v,t[4]=(s*r-e*c)*v,t[5]=(-i*r+e*u)*v,t[6]=l*v,t[7]=(-f*r+a*c)*v,t[8]=(o*r-a*u)*v,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8];return t[0]=o*s-i*f,t[1]=e*f-a*s,t[2]=a*i-e*o,t[3]=i*c-u*s,t[4]=r*s-e*c,t[5]=e*u-r*i,t[6]=u*f-o*c,t[7]=a*c-r*f,t[8]=r*o-a*u,t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8];return n*(f*u-o*c)+r*(-f*e+o*i)+a*(c*e-u*i)},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1],v=r[2],m=r[3],p=r[4],d=r[5],A=r[6],R=r[7],w=r[8];return t[0]=M*a+l*o+v*f,t[1]=M*e+l*i+v*s,t[2]=M*u+l*c+v*h,t[3]=m*a+p*o+d*f,t[4]=m*e+p*i+d*s,t[5]=m*u+p*c+d*h,t[6]=A*a+R*o+w*f,t[7]=A*e+R*i+w*s,t[8]=A*u+R*c+w*h,t},e.mul=e.multiply,e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=M*a+l*o+f,t[7]=M*e+l*i+s,t[8]=M*u+l*c+h,t},e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=Math.sin(r),l=Math.cos(r);return t[0]=l*a+M*o,t[1]=l*e+M*i,t[2]=l*u+M*c,t[3]=l*o-M*a,t[4]=l*i-M*e,t[5]=l*c-M*u,t[6]=f,t[7]=s,t[8]=h,t},e.scale=function(t,n,r){var a=r[0],e=r[1];return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=e*n[3],t[4]=e*n[4],t[5]=e*n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=n[0],t[7]=n[1],t[8]=1,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=0,t[3]=-r,t[4]=a,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=0,t[4]=n[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat2d=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=0,t[3]=n[2],t[4]=n[3],t[5]=0,t[6]=n[4],t[7]=n[5],t[8]=1,t},e.fromQuat=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r+r,i=a+a,c=e+e,f=r*o,s=a*o,h=a*i,M=e*o,l=e*i,v=e*c,m=u*o,p=u*i,d=u*c;return t[0]=1-h-v,t[3]=s-d,t[6]=M+p,t[1]=s+d,t[4]=1-f-v,t[7]=l-m,t[2]=M-p,t[5]=l+m,t[8]=1-f-h,t},e.normalFromMat4=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(c*P-o*b-f*x)*D,t[2]=(o*T-i*P+f*y)*D,t[3]=(e*T-a*b-u*E)*D,t[4]=(r*b-e*P+u*x)*D,t[5]=(a*P-r*T-u*y)*D,t[6]=(m*g-p*Y+d*q)*D,t[7]=(p*w-v*g-d*R)*D,t[8]=(v*Y-m*w+d*A)*D,t):null},e.str=function(t){return\"mat3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(16);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[3],u=n[6],o=n[7],i=n[11];t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=r,t[6]=n[9],t[7]=n[13],t[8]=a,t[9]=u,t[11]=n[14],t[12]=e,t[13]=o,t[14]=i}else t[0]=n[0],t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=n[1],t[5]=n[5],t[6]=n[9],t[7]=n[13],t[8]=n[2],t[9]=n[6],t[10]=n[10],t[11]=n[14],t[12]=n[3],t[13]=n[7],t[14]=n[11],t[15]=n[15];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(e*T-a*b-u*E)*D,t[2]=(m*g-p*Y+d*q)*D,t[3]=(M*Y-h*g-l*q)*D,t[4]=(c*P-o*b-f*x)*D,t[5]=(r*b-e*P+u*x)*D,t[6]=(p*w-v*g-d*R)*D,t[7]=(s*g-M*w+l*R)*D,t[8]=(o*T-i*P+f*y)*D,t[9]=(a*P-r*T-u*y)*D,t[10]=(v*Y-m*w+d*A)*D,t[11]=(h*w-s*Y-l*A)*D,t[12]=(i*x-o*E-c*y)*D,t[13]=(r*E-a*x+e*y)*D,t[14]=(m*R-v*q-p*A)*D,t[15]=(s*q-h*R+M*A)*D,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15];return t[0]=i*(M*d-l*p)-h*(c*d-f*p)+m*(c*l-f*M),t[1]=-(a*(M*d-l*p)-h*(e*d-u*p)+m*(e*l-u*M)),t[2]=a*(c*d-f*p)-i*(e*d-u*p)+m*(e*f-u*c),t[3]=-(a*(c*l-f*M)-i*(e*l-u*M)+h*(e*f-u*c)),t[4]=-(o*(M*d-l*p)-s*(c*d-f*p)+v*(c*l-f*M)),t[5]=r*(M*d-l*p)-s*(e*d-u*p)+v*(e*l-u*M),t[6]=-(r*(c*d-f*p)-o*(e*d-u*p)+v*(e*f-u*c)),t[7]=r*(c*l-f*M)-o*(e*l-u*M)+s*(e*f-u*c),t[8]=o*(h*d-l*m)-s*(i*d-f*m)+v*(i*l-f*h),t[9]=-(r*(h*d-l*m)-s*(a*d-u*m)+v*(a*l-u*h)),t[10]=r*(i*d-f*m)-o*(a*d-u*m)+v*(a*f-u*i),t[11]=-(r*(i*l-f*h)-o*(a*l-u*h)+s*(a*f-u*i)),t[12]=-(o*(h*p-M*m)-s*(i*p-c*m)+v*(i*M-c*h)),t[13]=r*(h*p-M*m)-s*(a*p-e*m)+v*(a*M-e*h),t[14]=-(r*(i*p-c*m)-o*(a*p-e*m)+v*(a*c-e*i)),t[15]=r*(i*M-c*h)-o*(a*M-e*h)+s*(a*c-e*i),t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8],s=t[9],h=t[10],M=t[11],l=t[12],v=t[13],m=t[14],p=t[15],d=n*o-r*u,A=n*i-a*u,R=n*c-e*u,w=r*i-a*o,q=r*c-e*o,Y=a*c-e*i,g=f*v-s*l,y=f*m-h*l,x=f*p-M*l,P=s*m-h*v,E=s*p-M*v,T=h*p-M*m;return d*T-A*E+R*P+w*x-q*y+Y*g},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],m=n[12],p=n[13],d=n[14],A=n[15],R=r[0],w=r[1],q=r[2],Y=r[3];return t[0]=R*a+w*i+q*h+Y*m,t[1]=R*e+w*c+q*M+Y*p,t[2]=R*u+w*f+q*l+Y*d,t[3]=R*o+w*s+q*v+Y*A,R=r[4],w=r[5],q=r[6],Y=r[7],t[4]=R*a+w*i+q*h+Y*m,t[5]=R*e+w*c+q*M+Y*p,t[6]=R*u+w*f+q*l+Y*d,t[7]=R*o+w*s+q*v+Y*A,R=r[8],w=r[9],q=r[10],Y=r[11],t[8]=R*a+w*i+q*h+Y*m,t[9]=R*e+w*c+q*M+Y*p,t[10]=R*u+w*f+q*l+Y*d,t[11]=R*o+w*s+q*v+Y*A,R=r[12],w=r[13],q=r[14],Y=r[15],t[12]=R*a+w*i+q*h+Y*m,t[13]=R*e+w*c+q*M+Y*p,t[14]=R*u+w*f+q*l+Y*d,t[15]=R*o+w*s+q*v+Y*A,t},e.mul=e.multiply,e.translate=function(t,n,r){var a,e,u,o,i,c,f,s,h,M,l,v,m=r[0],p=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*p+n[8]*d+n[12],t[13]=n[1]*m+n[5]*p+n[9]*d+n[13],t[14]=n[2]*m+n[6]*p+n[10]*d+n[14],t[15]=n[3]*m+n[7]*p+n[11]*d+n[15]):(a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=f,t[7]=s,t[8]=h,t[9]=M,t[10]=l,t[11]=v,t[12]=a*m+i*p+h*d+n[12],t[13]=e*m+c*p+M*d+n[13],t[14]=u*m+f*p+l*d+n[14],t[15]=o*m+s*p+v*d+n[15]),t},e.scale=function(t,n,r){var a=r[0],e=r[1],u=r[2];return t[0]=n[0]*a,t[1]=n[1]*a,t[2]=n[2]*a,t[3]=n[3]*a,t[4]=n[4]*e,t[5]=n[5]*e,t[6]=n[6]*e,t[7]=n[7]*e,t[8]=n[8]*u,t[9]=n[9]*u,t[10]=n[10]*u,t[11]=n[11]*u,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.rotate=function(t,n,r,e){var u,o,i,c,f,s,h,M,l,v,m,p,d,A,R,w,q,Y,g,y,x,P,E,T,b=e[0],D=e[1],L=e[2],_=Math.sqrt(b*b+D*D+L*L);return Math.abs(_)<a.EPSILON?null:(_=1/_,b*=_,D*=_,L*=_,u=Math.sin(r),o=Math.cos(r),i=1-o,c=n[0],f=n[1],s=n[2],h=n[3],M=n[4],l=n[5],v=n[6],m=n[7],p=n[8],d=n[9],A=n[10],R=n[11],w=b*b*i+o,q=D*b*i+L*u,Y=L*b*i-D*u,g=b*D*i-L*u,y=D*D*i+o,x=L*D*i+b*u,P=b*L*i+D*u,E=D*L*i-b*u,T=L*L*i+o,t[0]=c*w+M*q+p*Y,t[1]=f*w+l*q+d*Y,t[2]=s*w+v*q+A*Y,t[3]=h*w+m*q+R*Y,t[4]=c*g+M*y+p*x,t[5]=f*g+l*y+d*x,t[6]=s*g+v*y+A*x,t[7]=h*g+m*y+R*x,t[8]=c*P+M*E+p*T,t[9]=f*P+l*E+d*T,t[10]=s*P+v*E+A*T,t[11]=h*P+m*E+R*T,n!==t&&(t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t)},e.rotateX=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[4],o=n[5],i=n[6],c=n[7],f=n[8],s=n[9],h=n[10],M=n[11];return n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=u*e+f*a,t[5]=o*e+s*a,t[6]=i*e+h*a,t[7]=c*e+M*a,t[8]=f*e-u*a,t[9]=s*e-o*a,t[10]=h*e-i*a,t[11]=M*e-c*a,t},e.rotateY=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[0],o=n[1],i=n[2],c=n[3],f=n[8],s=n[9],h=n[10],M=n[11];return n!==t&&(t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=u*e-f*a,t[1]=o*e-s*a,t[2]=i*e-h*a,t[3]=c*e-M*a,t[8]=u*a+f*e,t[9]=o*a+s*e,t[10]=i*a+h*e,t[11]=c*a+M*e,t},e.rotateZ=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[0],o=n[1],i=n[2],c=n[3],f=n[4],s=n[5],h=n[6],M=n[7];return n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=u*e+f*a,t[1]=o*e+s*a,t[2]=i*e+h*a,t[3]=c*e+M*a,t[4]=f*e-u*a,t[5]=s*e-o*a,t[6]=h*e-i*a,t[7]=M*e-c*a,t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=n[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromRotation=function(t,n,r){var e,u,o,i=r[0],c=r[1],f=r[2],s=Math.sqrt(i*i+c*c+f*f);return Math.abs(s)<a.EPSILON?null:(s=1/s,i*=s,c*=s,f*=s,e=Math.sin(n),u=Math.cos(n),o=1-u,t[0]=i*i*o+u,t[1]=c*i*o+f*e,t[2]=f*i*o-c*e,t[3]=0,t[4]=i*c*o-f*e,t[5]=c*c*o+u,t[6]=f*c*o+i*e,t[7]=0,t[8]=i*f*o+c*e,t[9]=c*f*o-i*e,t[10]=f*f*o+u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},e.fromXRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromYRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromZRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromRotationTranslation=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=a+a,c=e+e,f=u+u,s=a*i,h=a*c,M=a*f,l=e*c,v=e*f,m=u*f,p=o*i,d=o*c,A=o*f;return t[0]=1-(l+m),t[1]=h+A,t[2]=M-d,t[3]=0,t[4]=h-A,t[5]=1-(s+m),t[6]=v+p,t[7]=0,t[8]=M+d,t[9]=v-p,t[10]=1-(s+l),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},e.fromRotationTranslationScale=function(t,n,r,a){var e=n[0],u=n[1],o=n[2],i=n[3],c=e+e,f=u+u,s=o+o,h=e*c,M=e*f,l=e*s,v=u*f,m=u*s,p=o*s,d=i*c,A=i*f,R=i*s,w=a[0],q=a[1],Y=a[2];return t[0]=(1-(v+p))*w,t[1]=(M+R)*w,t[2]=(l-A)*w,t[3]=0,t[4]=(M-R)*q,t[5]=(1-(h+p))*q,t[6]=(m+d)*q,t[7]=0,t[8]=(l+A)*Y,t[9]=(m-d)*Y,t[10]=(1-(h+v))*Y,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},e.fromRotationTranslationScaleOrigin=function(t,n,r,a,e){var u=n[0],o=n[1],i=n[2],c=n[3],f=u+u,s=o+o,h=i+i,M=u*f,l=u*s,v=u*h,m=o*s,p=o*h,d=i*h,A=c*f,R=c*s,w=c*h,q=a[0],Y=a[1],g=a[2],y=e[0],x=e[1],P=e[2];return t[0]=(1-(m+d))*q,t[1]=(l+w)*q,t[2]=(v-R)*q,t[3]=0,t[4]=(l-w)*Y,t[5]=(1-(M+d))*Y,t[6]=(p+A)*Y,t[7]=0,t[8]=(v+R)*g,t[9]=(p-A)*g,t[10]=(1-(M+m))*g,t[11]=0,t[12]=r[0]+y-(t[0]*y+t[4]*x+t[8]*P),t[13]=r[1]+x-(t[1]*y+t[5]*x+t[9]*P),t[14]=r[2]+P-(t[2]*y+t[6]*x+t[10]*P),t[15]=1,t},e.fromQuat=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r+r,i=a+a,c=e+e,f=r*o,s=a*o,h=a*i,M=e*o,l=e*i,v=e*c,m=u*o,p=u*i,d=u*c;return t[0]=1-h-v,t[1]=s+d,t[2]=M-p,t[3]=0,t[4]=s-d,t[5]=1-f-v,t[6]=l+m,t[7]=0,t[8]=M+p,t[9]=l-m,t[10]=1-f-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,n,r,a,e,u,o){var i=1/(r-n),c=1/(e-a),f=1/(u-o);return t[0]=2*u*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*u*c,t[6]=0,t[7]=0,t[8]=(r+n)*i,t[9]=(e+a)*c,t[10]=(o+u)*f,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*u*2*f,t[15]=0,t},e.perspective=function(t,n,r,a,e){var u=1/Math.tan(n/2),o=1/(a-e);return t[0]=u/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(e+a)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*e*a*o,t[15]=0,t},e.perspectiveFromFieldOfView=function(t,n,r,a){var e=Math.tan(n.upDegrees*Math.PI/180),u=Math.tan(n.downDegrees*Math.PI/180),o=Math.tan(n.leftDegrees*Math.PI/180),i=Math.tan(n.rightDegrees*Math.PI/180),c=2/(o+i),f=2/(e+u);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=f,t[6]=0,t[7]=0,t[8]=-((o-i)*c*.5),t[9]=(e-u)*f*.5,t[10]=a/(r-a),t[11]=-1,t[12]=0,t[13]=0,t[14]=a*r/(r-a),t[15]=0,t},e.ortho=function(t,n,r,a,e,u,o){var i=1/(n-r),c=1/(a-e),f=1/(u-o);return t[0]=-2*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(n+r)*i,t[13]=(e+a)*c,t[14]=(o+u)*f,t[15]=1,t},e.lookAt=function(t,n,r,u){var o,i,c,f,s,h,M,l,v,m,p=n[0],d=n[1],A=n[2],R=u[0],w=u[1],q=u[2],Y=r[0],g=r[1],y=r[2];return Math.abs(p-Y)<a.EPSILON&&Math.abs(d-g)<a.EPSILON&&Math.abs(A-y)<a.EPSILON?e.identity(t):(M=p-Y,l=d-g,v=A-y,m=1/Math.sqrt(M*M+l*l+v*v),M*=m,l*=m,v*=m,o=w*v-q*l,i=q*M-R*v,c=R*l-w*M,m=Math.sqrt(o*o+i*i+c*c),m?(m=1/m,o*=m,i*=m,c*=m):(o=0,i=0,c=0),f=l*c-v*i,s=v*o-M*c,h=M*i-l*o,m=Math.sqrt(f*f+s*s+h*h),m?(m=1/m,f*=m,s*=m,h*=m):(f=0,s=0,h=0),t[0]=o,t[1]=f,t[2]=M,t[3]=0,t[4]=i,t[5]=s,t[6]=l,t[7]=0,t[8]=c,t[9]=h,t[10]=v,t[11]=0,t[12]=-(o*p+i*d+c*A),t[13]=-(f*p+s*d+h*A),t[14]=-(M*p+l*d+v*A),t[15]=1,t)},e.str=function(t){return\"mat4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\", \"+t[9]+\", \"+t[10]+\", \"+t[11]+\", \"+t[12]+\", \"+t[13]+\", \"+t[14]+\", \"+t[15]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=e},function(t,n,r){var a=r(1),e=r(4),u=r(7),o=r(8),i={};i.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},i.rotationTo=function(){var t=u.create(),n=u.fromValues(1,0,0),r=u.fromValues(0,1,0);return function(a,e,o){var c=u.dot(e,o);return-.999999>c?(u.cross(t,n,e),u.length(t)<1e-6&&u.cross(t,r,e),u.normalize(t,t),i.setAxisAngle(a,t,Math.PI),a):c>.999999?(a[0]=0,a[1]=0,a[2]=0,a[3]=1,a):(u.cross(t,e,o),a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=1+c,i.normalize(a,a))}}(),i.setAxes=function(){var t=e.create();return function(n,r,a,e){return t[0]=a[0],t[3]=a[1],t[6]=a[2],t[1]=e[0],t[4]=e[1],t[7]=e[2],t[2]=-r[0],t[5]=-r[1],t[8]=-r[2],i.normalize(n,i.fromMat3(n,t))}}(),i.clone=o.clone,i.fromValues=o.fromValues,i.copy=o.copy,i.set=o.set,i.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},i.setAxisAngle=function(t,n,r){r=.5*r;var a=Math.sin(r);return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=Math.cos(r),t},i.add=o.add,i.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*s+o*i+e*f-u*c,t[1]=e*s+o*c+u*i-a*f,t[2]=u*s+o*f+a*c-e*i,t[3]=o*s-a*i-e*c-u*f,t},i.mul=i.multiply,i.scale=o.scale,i.rotateX=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+o*i,t[1]=e*c+u*i,t[2]=u*c-e*i,t[3]=o*c-a*i,t},i.rotateY=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c-u*i,t[1]=e*c+o*i,t[2]=u*c+a*i,t[3]=o*c-e*i,t},i.rotateZ=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+e*i,t[1]=e*c-a*i,t[2]=u*c+o*i,t[3]=o*c-u*i,t},i.calculateW=function(t,n){var r=n[0],a=n[1],e=n[2];return t[0]=r,t[1]=a,t[2]=e,t[3]=Math.sqrt(Math.abs(1-r*r-a*a-e*e)),t},i.dot=o.dot,i.lerp=o.lerp,i.slerp=function(t,n,r,a){var e,u,o,i,c,f=n[0],s=n[1],h=n[2],M=n[3],l=r[0],v=r[1],m=r[2],p=r[3];return u=f*l+s*v+h*m+M*p,0>u&&(u=-u,l=-l,v=-v,m=-m,p=-p),1-u>1e-6?(e=Math.acos(u),o=Math.sin(e),i=Math.sin((1-a)*e)/o,c=Math.sin(a*e)/o):(i=1-a,c=a),t[0]=i*f+c*l,t[1]=i*s+c*v,t[2]=i*h+c*m,t[3]=i*M+c*p,t},i.sqlerp=function(){var t=i.create(),n=i.create();return function(r,a,e,u,o,c){return i.slerp(t,a,o,c),i.slerp(n,e,u,c),i.slerp(r,t,n,2*c*(1-c)),r}}(),i.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u,i=o?1/o:0;return t[0]=-r*i,t[1]=-a*i,t[2]=-e*i,t[3]=u*i,t},i.conjugate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=n[3],t},i.length=o.length,i.len=i.length,i.squaredLength=o.squaredLength,i.sqrLen=i.squaredLength,i.normalize=o.normalize,i.fromMat3=function(t,n){var r,a=n[0]+n[4]+n[8];if(a>0)r=Math.sqrt(a+1),t[3]=.5*r,r=.5/r,t[0]=(n[5]-n[7])*r,t[1]=(n[6]-n[2])*r,t[2]=(n[1]-n[3])*r;else{var e=0;n[4]>n[0]&&(e=1),n[8]>n[3*e+e]&&(e=2);var u=(e+1)%3,o=(e+2)%3;r=Math.sqrt(n[3*e+e]-n[3*u+u]-n[3*o+o]+1),t[e]=.5*r,r=.5/r,t[3]=(n[3*u+o]-n[3*o+u])*r,t[u]=(n[3*u+e]+n[3*e+u])*r,t[o]=(n[3*o+e]+n[3*e+o])*r}return t},i.str=function(t){return\"quat(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},t.exports=i},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(3);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n},e.fromValues=function(t,n,r){var e=new a.ARRAY_TYPE(3);return e[0]=t,e[1]=n,e[2]=r,e},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t},e.set=function(t,n,r,a){return t[0]=n,t[1]=r,t[2]=a,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return Math.sqrt(r*r+a*a+e*e)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return r*r+a*a+e*e},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2];return Math.sqrt(n*n+r*r+a*a)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2];return n*n+r*r+a*a},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=r*r+a*a+e*e;return u>0&&(u=1/Math.sqrt(u),t[0]=n[0]*u,t[1]=n[1]*u,t[2]=n[2]*u),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]},e.cross=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2];return t[0]=e*c-u*i,t[1]=u*o-a*c,t[2]=a*i-e*o,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t},e.hermite=function(t,n,r,a,e,u){var o=u*u,i=o*(2*u-3)+1,c=o*(u-2)+u,f=o*(u-1),s=o*(3-2*u);return t[0]=n[0]*i+r[0]*c+a[0]*f+e[0]*s,t[1]=n[1]*i+r[1]*c+a[1]*f+e[1]*s,t[2]=n[2]*i+r[2]*c+a[2]*f+e[2]*s,t},e.bezier=function(t,n,r,a,e,u){var o=1-u,i=o*o,c=u*u,f=i*o,s=3*u*i,h=3*c*o,M=c*u;return t[0]=n[0]*f+r[0]*s+a[0]*h+e[0]*M,t[1]=n[1]*f+r[1]*s+a[1]*h+e[1]*M,t[2]=n[2]*f+r[2]*s+a[2]*h+e[2]*M,t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI,e=2*a.RANDOM()-1,u=Math.sqrt(1-e*e)*n;return t[0]=Math.cos(r)*u,t[1]=Math.sin(r)*u,t[2]=e*n,t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[3]*a+r[7]*e+r[11]*u+r[15];return o=o||1,t[0]=(r[0]*a+r[4]*e+r[8]*u+r[12])/o,t[1]=(r[1]*a+r[5]*e+r[9]*u+r[13])/o,t[2]=(r[2]*a+r[6]*e+r[10]*u+r[14])/o,t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1],u=n[2];return t[0]=a*r[0]+e*r[3]+u*r[6],t[1]=a*r[1]+e*r[4]+u*r[7],t[2]=a*r[2]+e*r[5]+u*r[8],t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t},e.rotateX=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0],u[1]=e[1]*Math.cos(a)-e[2]*Math.sin(a),u[2]=e[1]*Math.sin(a)+e[2]*Math.cos(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateY=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[2]*Math.sin(a)+e[0]*Math.cos(a),u[1]=e[1],u[2]=e[2]*Math.cos(a)-e[0]*Math.sin(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateZ=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0]*Math.cos(a)-e[1]*Math.sin(a),u[1]=e[0]*Math.sin(a)+e[1]*Math.cos(a),u[2]=e[2],t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=3),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2];return n}}(),e.angle=function(t,n){var r=e.fromValues(t[0],t[1],t[2]),a=e.fromValues(n[0],n[1],n[2]);e.normalize(r,r),e.normalize(a,a);var u=e.dot(r,a);return u>1?0:Math.acos(u)},e.str=function(t){return\"vec3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.fromValues=function(t,n,r,e){var u=new a.ARRAY_TYPE(4);return u[0]=t,u[1]=n,u[2]=r,u[3]=e,u},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.set=function(t,n,r,a,e){return t[0]=n,t[1]=r,t[2]=a,t[3]=e,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t[3]=n[3]+r[3],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t[3]=n[3]-r[3],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t[3]=n[3]*r[3],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t[3]=n[3]/r[3],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t[3]=Math.min(n[3],r[3]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t[3]=Math.max(n[3],r[3]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=n[3]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t[3]=n[3]+r[3]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return Math.sqrt(r*r+a*a+e*e+u*u)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return r*r+a*a+e*e+u*u},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return Math.sqrt(n*n+r*r+a*a+e*e)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return n*n+r*r+a*a+e*e},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=-n[3],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t[3]=1/n[3],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u;return o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=a*o,t[2]=e*o,t[3]=u*o),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3]},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2],i=n[3];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t[3]=i+a*(r[3]-i),t},e.random=function(t,n){return n=n||1,t[0]=a.RANDOM(),t[1]=a.RANDOM(),t[2]=a.RANDOM(),t[3]=a.RANDOM(),e.normalize(t,t),e.scale(t,t,n),t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3];return t[0]=r[0]*a+r[4]*e+r[8]*u+r[12]*o,t[1]=r[1]*a+r[5]*e+r[9]*u+r[13]*o,t[2]=r[2]*a+r[6]*e+r[10]*u+r[14]*o,t[3]=r[3]*a+r[7]*e+r[11]*u+r[15]*o,t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t[3]=n[3],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=4),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],t[3]=n[i+3],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2],n[i+3]=t[3];return n}}(),e.str=function(t){return\"vec4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(2);return n[0]=t[0],n[1]=t[1],n},e.fromValues=function(t,n){var r=new a.ARRAY_TYPE(2);return r[0]=t,r[1]=n,r},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t},e.set=function(t,n,r){return t[0]=n,t[1]=r,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return Math.sqrt(r*r+a*a)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return r*r+a*a},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1];return Math.sqrt(n*n+r*r)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1];return n*n+r*r},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=r*r+a*a;return e>0&&(e=1/Math.sqrt(e),t[0]=n[0]*e,t[1]=n[1]*e),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]},e.cross=function(t,n,r){var a=n[0]*r[1]-n[1]*r[0];return t[0]=t[1]=0,t[2]=a,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI;return t[0]=Math.cos(r)*n,t[1]=Math.sin(r)*n,t},e.transformMat2=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e,t[1]=r[1]*a+r[3]*e,t},e.transformMat2d=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e+r[4],t[1]=r[1]*a+r[3]*e+r[5],t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[3]*e+r[6],t[1]=r[1]*a+r[4]*e+r[7],t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[4]*e+r[12],t[1]=r[1]*a+r[5]*e+r[13],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=2),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],u(t,t,o),n[i]=t[0],n[i+1]=t[1];return n}}(),e.str=function(t){return\"vec2(\"+t[0]+\", \"+t[1]+\")\"},t.exports=e}])});'use strict';(function(global){if(tr.isNode){const glMatrixAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/gl-matrix-min.js');const glMatrixModule=require(glMatrixAbsPath);for(const exportName in glMatrixModule){global[exportName]=glMatrixModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const PREFERRED_NUMBER_SERIES_MULTIPLIERS=[1,2,5,10];function approximately(x,y,delta){if(delta===undefined)delta=1e-9;return Math.abs(x-y)<delta;}\nfunction clamp(x,lo,hi){return Math.min(Math.max(x,lo),hi);}\nfunction lerp(percentage,lo,hi){const range=hi-lo;return lo+percentage*range;}\nfunction normalize(value,lo,hi){return(value-lo)/(hi-lo);}\nfunction deg2rad(deg){return(Math.PI*deg)/180.0;}\nfunction erf(x){const sign=(x>=0)?1:-1;x=Math.abs(x);const a1=0.254829592;const a2=-0.284496736;const a3=1.421413741;const a4=-1.453152027;const a5=1.061405429;const p=0.3275911;const t=1.0/(1.0+p*x);const y=1.0-(((((a5*t+a4)*t)+a3)*t+a2)*t+a1)*t*Math.exp(-x*x);return sign*y;}\nconst tmpVec2=vec2.create();const tmpVec2b=vec2.create();const tmpVec4=vec4.create();const tmpMat2d=mat2d.create();vec2.createFromArray=function(arr){if(arr.length!==2)throw new Error('Should be length 2');const v=vec2.create();vec2.set(v,arr[0],arr[1]);return v;};vec2.createXY=function(x,y){const v=vec2.create();vec2.set(v,x,y);return v;};vec2.toString=function(a){return'['+a[0]+', '+a[1]+']';};vec2.addTwoScaledUnitVectors=function(out,u1,scale1,u2,scale2){vec2.scale(tmpVec2,u1,scale1);vec2.scale(tmpVec2b,u2,scale2);vec2.add(out,tmpVec2,tmpVec2b);};vec2.interpolatePiecewiseFunction=function(points,x){if(x<points[0][0])return points[0][1];for(let i=1;i<points.length;++i){if(x<points[i][0]){const percent=normalize(x,points[i-1][0],points[i][0]);return lerp(percent,points[i-1][1],points[i][1]);}}\nreturn points[points.length-1][1];};vec3.createXYZ=function(x,y,z){const v=vec3.create();vec3.set(v,x,y,z);return v;};vec3.toString=function(a){return'vec3('+a[0]+', '+a[1]+', '+a[2]+')';};mat2d.translateXY=function(out,x,y){vec2.set(tmpVec2,x,y);mat2d.translate(out,out,tmpVec2);};mat2d.scaleXY=function(out,x,y){vec2.set(tmpVec2,x,y);mat2d.scale(out,out,tmpVec2);};vec4.unitize=function(out,a){out[0]=a[0]/a[3];out[1]=a[1]/a[3];out[2]=a[2]/a[3];out[3]=1;return out;};vec2.copyFromVec4=function(out,a){vec4.unitize(tmpVec4,a);vec2.copy(out,tmpVec4);};function logOrLog10(x,base){if(base===10)return Math.log10(x);return Math.log(x)/Math.log(base);}\nfunction lesserPower(x,opt_base){const base=opt_base||10;return Math.pow(base,Math.floor(logOrLog10(x,base)));}\nfunction greaterPower(x,opt_base){const base=opt_base||10;return Math.pow(base,Math.ceil(logOrLog10(x,base)));}\nfunction lesserWholeNumber(x){if(x===0)return 0;const pow10=(x<0)?-lesserPower(-x):lesserPower(x);return pow10*Math.floor(x/pow10);}\nfunction greaterWholeNumber(x){if(x===0)return 0;const pow10=(x<0)?-lesserPower(-x):lesserPower(x);return pow10*Math.ceil(x/pow10);}\nfunction truncate(value,digits){const pow10=Math.pow(10,digits);return Math.round(value*pow10)/pow10;}\nfunction preferredNumberLargerThanMin(min){const absMin=Math.abs(min);const conservativeGuess=tr.b.math.lesserPower(absMin);let minPreferedNumber=undefined;for(const multiplier of PREFERRED_NUMBER_SERIES_MULTIPLIERS){const tightenedGuess=conservativeGuess*multiplier;if(tightenedGuess>=absMin){minPreferedNumber=tightenedGuess;break;}}\nif(minPreferedNumber===undefined){throw new Error('Could not compute preferred number for '+min);}\nif(min<0)minPreferedNumber*=-1;return minPreferedNumber;}\nreturn{approximately,clamp,lerp,normalize,deg2rad,erf,lesserPower,greaterPower,lesserWholeNumber,greaterWholeNumber,preferredNumberLargerThanMin,truncate,};});'use strict';tr.exportTo('tr.b.math',function(){function Range(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;}\nRange.prototype={__proto__:Object.prototype,clone(){if(this.isEmpty)return new Range();return Range.fromExplicitRange(this.min_,this.max_);},reset(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;},get isEmpty(){return this.isEmpty_;},addRange(range){if(range.isEmpty)return;this.addValue(range.min);this.addValue(range.max);},addValue(value){if(this.isEmpty_){this.max_=value;this.min_=value;this.isEmpty_=false;return;}\nthis.max_=Math.max(this.max_,value);this.min_=Math.min(this.min_,value);},set min(min){this.isEmpty_=false;this.min_=min;},get min(){if(this.isEmpty_)return undefined;return this.min_;},get max(){if(this.isEmpty_)return undefined;return this.max_;},set max(max){this.isEmpty_=false;this.max_=max;},get range(){if(this.isEmpty_)return undefined;return this.max_-this.min_;},get center(){return(this.min_+this.max_)*0.5;},get duration(){if(this.isEmpty_)return 0;return this.max_-this.min_;},enclosingPowers(opt_base){if(this.isEmpty)return new Range();return Range.fromExplicitRange(tr.b.math.lesserPower(this.min_,opt_base),tr.b.math.greaterPower(this.max_,opt_base));},normalize(x){return tr.b.math.normalize(x,this.min,this.max);},lerp(x){return tr.b.math.lerp(x,this.min,this.max);},clamp(x){return tr.b.math.clamp(x,this.min,this.max);},equals(that){if(this.isEmpty&&that.isEmpty)return true;if(this.isEmpty!==that.isEmpty)return false;return(tr.b.math.approximately(this.min,that.min)&&tr.b.math.approximately(this.max,that.max));},containsExplicitRangeInclusive(min,max){if(this.isEmpty)return false;return this.min_<=min&&max<=this.max_;},containsExplicitRangeExclusive(min,max){if(this.isEmpty)return false;return this.min_<min&&max<this.max_;},intersectsExplicitRangeInclusive(min,max){if(this.isEmpty)return false;return this.min_<=max&&min<=this.max_;},intersectsExplicitRangeExclusive(min,max){if(this.isEmpty)return false;return this.min_<max&&min<this.max_;},containsRangeInclusive(range){if(range.isEmpty)return false;return this.containsExplicitRangeInclusive(range.min_,range.max_);},containsRangeExclusive(range){if(range.isEmpty)return false;return this.containsExplicitRangeExclusive(range.min_,range.max_);},intersectsRangeInclusive(range){if(range.isEmpty)return false;return this.intersectsExplicitRangeInclusive(range.min_,range.max_);},intersectsRangeExclusive(range){if(range.isEmpty)return false;return this.intersectsExplicitRangeExclusive(range.min_,range.max_);},findExplicitIntersectionDuration(min,max){min=Math.max(this.min,min);max=Math.min(this.max,max);if(max<min)return 0;return max-min;},findIntersection(range){if(this.isEmpty||range.isEmpty)return new Range();const min=Math.max(this.min,range.min);const max=Math.min(this.max,range.max);if(max<min)return new Range();return Range.fromExplicitRange(min,max);},toJSON(){if(this.isEmpty_)return{isEmpty:true};return{isEmpty:false,max:this.max,min:this.min};},filterArray(sortedArray,opt_keyFunc,opt_this){if(this.isEmpty_)return[];const keyFunc=opt_keyFunc||(x=>x);function getValue(obj){return keyFunc.call(opt_this,obj);}\nconst first=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.min_===undefined||this.min_<=getValue(obj));const last=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.max_!==undefined&&this.max_<getValue(obj));return sortedArray.slice(first,last);}};Range.fromDict=function(d){if(d.isEmpty===true)return new Range();if(d.isEmpty===false){const range=new Range();range.min=d.min;range.max=d.max;return range;}\nthrow new Error('Not a range');};Range.fromExplicitRange=function(min,max){const range=new Range();range.min=min;range.max=max;return range;};Range.compareByMinTimes=function(a,b){if(!a.isEmpty&&!b.isEmpty)return a.min_-b.min_;if(a.isEmpty&&!b.isEmpty)return-1;if(!a.isEmpty&&b.isEmpty)return 1;return 0;};Range.findDifference=function(rangeA,rangeB){if(!rangeA||rangeA.duration<0||!rangeB||rangeB.duration<0){throw new Error(`Couldn't subtract ranges`);}\nconst resultRanges=[];if(rangeA.isEmpty)return resultRanges;if(rangeB.isEmpty)return[rangeA.clone()];const intersection=rangeA.findIntersection(rangeB);if(intersection.isEmpty){return[rangeA.clone()];}\nif(rangeA.duration===0&&rangeB.duration===0){if(intersection.empty)return[rangeA.clone()];else if(intersection.duration===0)return resultRanges;throw new Error(`Two points' intersection can only be a point or empty`);}\nconst leftRange=tr.b.math.Range.fromExplicitRange(rangeA.min,intersection.min);if(leftRange.duration>0){resultRanges.push(leftRange);}\nconst rightRange=tr.b.math.Range.fromExplicitRange(intersection.max,rangeA.max);if(rightRange.duration>0){resultRanges.push(rightRange);}\nreturn resultRanges;};Range.PERCENT_RANGE=Range.fromExplicitRange(0,1);Object.freeze(Range.PERCENT_RANGE);return{Range,};});'use strict';(function(exports){var rank={standard:function(array,key){array=array.sort(function(a,b){var x=a[key];var y=b[key];return((x<y)?-1:((x>y)?1:0));});for(var i=1;i<array.length+1;i++){array[i-1]['rank']=i;}\nreturn array;},fractional:function(array,key){array=this.standard(array,key);var pos=0;while(pos<array.length){var sum=0;var i=0;for(i=0;array[pos+i+1]&&(array[pos+i][key]===array[pos+i+1][key]);i++){sum+=array[pos+i]['rank'];}\nsum+=array[pos+i]['rank'];var endPos=pos+i+1;for(pos;pos<endPos;pos++){array[pos]['rank']=sum/(i+1);}\npos=endPos;}\nreturn array;},rank:function(x,y){var nx=x.length,ny=y.length,combined=[],ranked;while(nx--){combined.push({set:'x',val:x[nx]});}\nwhile(ny--){combined.push({set:'y',val:y[ny]});}\nranked=this.fractional(combined,'val');return ranked}};var erf=function erf(x){var cof=[-1.3026537197817094,6.4196979235649026e-1,1.9476473204185836e-2,-9.561514786808631e-3,-9.46595344482036e-4,3.66839497852761e-4,4.2523324806907e-5,-2.0278578112534e-5,-1.624290004647e-6,1.303655835580e-6,1.5626441722e-8,-8.5238095915e-8,6.529054439e-9,5.059343495e-9,-9.91364156e-10,-2.27365122e-10,9.6467911e-11,2.394038e-12,-6.886027e-12,8.94487e-13,3.13092e-13,-1.12708e-13,3.81e-16,7.106e-15,-1.523e-15,-9.4e-17,1.21e-16,-2.8e-17];var j=cof.length-1;var isneg=false;var d=0;var dd=0;var t,ty,tmp,res;if(x<0){x=-x;isneg=true;}\nt=2/(2+x);ty=4*t-2;for(;j>0;j--){tmp=d;d=ty*d-dd+cof[j];dd=tmp;}\nres=t*Math.exp(-x*x+0.5*(cof[0]+ty*d)-dd);return isneg?res-1:1-res;};var dnorm=function(x,mean,std){return 0.5*(1+erf((x-mean)/Math.sqrt(2*std*std)));}\nvar statistic=function(x,y){var ranked=rank.rank(x,y),nr=ranked.length,nx=x.length,ny=y.length,ranksums={x:0,y:0},i=0,t=0,nt=1,tcf,ux,uy;while(i<nr){if(i>0){if(ranked[i].val==ranked[i-1].val){nt++;}else{if(nt>1){t+=Math.pow(nt,3)-nt\nnt=1;}}}\nranksums[ranked[i].set]+=ranked[i].rank\ni++;}\ntcf=1-(t/(Math.pow(nr,3)-nr))\nux=nx*ny+(nx*(nx+1)/2)-ranksums.x;uy=nx*ny-ux;return{tcf:tcf,ux:ux,uy:uy,big:Math.max(ux,uy),small:Math.min(ux,uy)}}\nexports.test=function(x,y,alt,corr){alt=typeof alt!=='undefined'?alt:'two-sided';corr=typeof corr!=='undefined'?corr:true;var nx=x.length,ny=y.length,f=1,u,mu,std,z,p;u=statistic(x,y);if(corr){mu=(nx*ny/2)+0.5;}else{mu=nx*ny/2;}\nstd=Math.sqrt(u.tcf*nx*ny*(nx+ny+1)/12);if(alt=='less'){z=(u.ux-mu)/std;}else if(alt=='greater'){z=(u.uy-mu)/std;}else if(alt=='two-sided'){z=Math.abs((u.big-mu)/std);}else{console.log('Unknown alternative argument');}\nif(alt=='two-sided'){f=2;}\np=dnorm(-z,0,1)*f;return{U:u.small,p:p};}})(typeof exports==='undefined'?this['mannwhitneyu']={}:exports);'use strict';(function(global){if(tr.isNode){const mwuAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/mannwhitneyu.js');const mwuModule=require(mwuAbsPath);for(const exportName in mwuModule){global[exportName]=mwuModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const Statistics={};Statistics.divideIfPossibleOrZero=function(numerator,denominator){if(denominator===0)return 0;return numerator/denominator;};Statistics.sum=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=0;let i=0;for(const elt of ary){ret+=func.call(opt_this,elt,i++);}\nreturn ret;};Statistics.mean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let sum=0;let i=0;for(const elt of ary){sum+=func.call(opt_this,elt,i++);}\nif(i===0)return undefined;return sum/i;};Statistics.geometricMean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let i=0;let logsum=0;for(const elt of ary){const x=func.call(opt_this,elt,i++);if(x<=0)return 0;logsum+=Math.log(Math.abs(x));}\nif(i===0)return 1;return Math.exp(logsum/i);};Statistics.weightedMean=function(ary,weightCallback,opt_valueCallback,opt_this){const valueCallback=opt_valueCallback||(x=>x);let numerator=0;let denominator=0;let i=-1;for(const elt of ary){i++;const value=valueCallback.call(opt_this,elt,i);if(value===undefined)continue;const weight=weightCallback.call(opt_this,elt,i,value);numerator+=weight*value;denominator+=weight;}\nif(denominator===0)return undefined;return numerator/denominator;};Statistics.variance=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;if(ary.length===1)return 0;const func=opt_func||(x=>x);const mean=Statistics.mean(ary,func,opt_this);const sumOfSquaredDistances=Statistics.sum(ary,function(d,i){const v=func.call(this,d,i)-mean;return v*v;},opt_this);return sumOfSquaredDistances/(ary.length-1);};Statistics.stddev=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;return Math.sqrt(Statistics.variance(ary,opt_func,opt_this));};Statistics.max=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=-Infinity;let i=0;for(const elt of ary){ret=Math.max(ret,func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.min=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=Infinity;let i=0;for(const elt of ary){ret=Math.min(ret,func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.range=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);const ret=new tr.b.math.Range();let i=0;for(const elt of ary){ret.addValue(func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.percentile=function(ary,percent,opt_func,opt_this){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}\nconst func=opt_func||(x=>x);const tmp=new Array(ary.length);let i=0;for(const elt of ary){tmp[i]=func.call(opt_this,elt,i++);}\ntmp.sort((a,b)=>a-b);const idx=Math.floor((ary.length-1)*percent);return tmp[idx];};Statistics.normalizeSamples=function(samples){if(samples.length===0){return{normalized_samples:samples,scale:1.0};}\nsamples=samples.slice().sort(function(a,b){return a-b;});const low=Math.min.apply(null,samples);const high=Math.max.apply(null,samples);const newLow=0.5/samples.length;const newHigh=(samples.length-0.5)/samples.length;if(high-low===0.0){samples=Array.apply(null,new Array(samples.length)).map(function(){return 0.5;});return{normalized_samples:samples,scale:1.0};}\nconst scale=(newHigh-newLow)/(high-low);for(let i=0;i<samples.length;i++){samples[i]=(samples[i]-low)*scale+newLow;}\nreturn{normalized_samples:samples,scale};};Statistics.discrepancy=function(samples,opt_locationCount){if(samples.length===0)return 0.0;let maxLocalDiscrepancy=0;const invSampleCount=1.0/samples.length;const locations=[];const countLess=[];const countLessEqual=[];if(opt_locationCount!==undefined){let sampleIndex=0;for(let i=0;i<opt_locationCount;i++){const location=i/(opt_locationCount-1);locations.push(location);while(sampleIndex<samples.length&&samples[sampleIndex]<location){sampleIndex+=1;}\ncountLess.push(sampleIndex);while(sampleIndex<samples.length&&samples[sampleIndex]<=location){sampleIndex+=1;}\ncountLessEqual.push(sampleIndex);}}else{if(samples[0]>0.0){locations.push(0.0);countLess.push(0);countLessEqual.push(0);}\nfor(let i=0;i<samples.length;i++){locations.push(samples[i]);countLess.push(i);countLessEqual.push(i+1);}\nif(samples[-1]<1.0){locations.push(1.0);countLess.push(samples.length);countLessEqual.push(samples.length);}}\nlet maxDiff=0;let minDiff=0;for(let i=1;i<locations.length;i++){const length=locations[i]-locations[i-1];const countClosed=countLessEqual[i]-countLess[i-1];const countOpen=countLess[i]-countLessEqual[i-1];const countClosedIncrement=countLessEqual[i]-countLessEqual[i-1];const countOpenIncrement=countLess[i]-countLess[i-1];maxDiff=Math.max(countClosedIncrement*invSampleCount-length+maxDiff,countClosed*invSampleCount-length);minDiff=Math.min(countOpenIncrement*invSampleCount-length+minDiff,countOpen*invSampleCount-length);maxLocalDiscrepancy=Math.max(maxDiff,-minDiff,maxLocalDiscrepancy);}\nreturn maxLocalDiscrepancy;};Statistics.timestampsDiscrepancy=function(timestamps,opt_absolute,opt_locationCount){if(timestamps.length===0)return 0.0;if(opt_absolute===undefined)opt_absolute=true;if(Array.isArray(timestamps[0])){const rangeDiscrepancies=timestamps.map(function(r){return Statistics.timestampsDiscrepancy(r);});return Math.max.apply(null,rangeDiscrepancies);}\nconst s=Statistics.normalizeSamples(timestamps);const samples=s.normalized_samples;const sampleScale=s.scale;let discrepancy=Statistics.discrepancy(samples,opt_locationCount);const invSampleCount=1.0/samples.length;if(opt_absolute===true){discrepancy/=sampleScale;}else{discrepancy=tr.b.math.clamp((discrepancy-invSampleCount)/(1.0-invSampleCount),0.0,1.0);}\nreturn discrepancy;};Statistics.uniformlySampleArray=function(samples,count){if(samples.length<=count){return samples;}\nwhile(samples.length>count){const i=parseInt(Math.random()*samples.length);samples.splice(i,1);}\nreturn samples;};Statistics.uniformlySampleStream=function(samples,streamLength,newElement,numSamples){if(streamLength<=numSamples){if(samples.length>=streamLength){samples[streamLength-1]=newElement;}else{samples.push(newElement);}\nreturn;}\nconst probToKeep=numSamples/streamLength;if(Math.random()>probToKeep)return;const index=Math.floor(Math.random()*numSamples);samples[index]=newElement;};Statistics.mergeSampledStreams=function(samplesA,streamLengthA,samplesB,streamLengthB,numSamples){if(streamLengthB<numSamples){const nbElements=Math.min(streamLengthB,samplesB.length);for(let i=0;i<nbElements;++i){Statistics.uniformlySampleStream(samplesA,streamLengthA+i+1,samplesB[i],numSamples);}\nreturn;}\nif(streamLengthA<numSamples){const nbElements=Math.min(streamLengthA,samplesA.length);const tempSamples=samplesB.slice();for(let i=0;i<nbElements;++i){Statistics.uniformlySampleStream(tempSamples,streamLengthB+i+1,samplesA[i],numSamples);}\nfor(let i=0;i<tempSamples.length;++i){samplesA[i]=tempSamples[i];}\nreturn;}\nconst nbElements=Math.min(numSamples,samplesB.length);const probOfSwapping=streamLengthB/(streamLengthA+streamLengthB);for(let i=0;i<nbElements;++i){if(Math.random()<probOfSwapping){samplesA[i]=samplesB[i];}}};function Distribution(){}\nDistribution.prototype={computeDensity(x){throw Error('Not implemented');},computePercentile(x){throw Error('Not implemented');},computeComplementaryPercentile(x){return 1-this.computePercentile(x);},get mean(){throw Error('Not implemented');},get mode(){throw Error('Not implemented');},get median(){throw Error('Not implemented');},get standardDeviation(){throw Error('Not implemented');},get variance(){throw Error('Not implemented');}};Statistics.UniformDistribution=function(opt_range){if(!opt_range)opt_range=tr.b.math.Range.fromExplicitRange(0,1);this.range=opt_range;};Statistics.UniformDistribution.prototype={__proto__:Distribution.prototype,computeDensity(x){return 1/this.range.range;},computePercentile(x){return tr.b.math.normalize(x,this.range.min,this.range.max);},get mean(){return this.range.center;},get mode(){return undefined;},get median(){return this.mean;},get standardDeviation(){return Math.sqrt(this.variance);},get variance(){return Math.pow(this.range.range,2)/12;}};Statistics.NormalDistribution=function(opt_mean,opt_variance){this.mean_=opt_mean||0;this.variance_=opt_variance||1;this.standardDeviation_=Math.sqrt(this.variance_);};Statistics.NormalDistribution.prototype={__proto__:Distribution.prototype,computeDensity(x){const scale=(1.0/(this.standardDeviation*Math.sqrt(2.0*Math.PI)));const exponent=-Math.pow(x-this.mean,2)/(2.0*this.variance);return scale*Math.exp(exponent);},computePercentile(x){const standardizedX=((x-this.mean)/Math.sqrt(2.0*this.variance));return(1.0+tr.b.math.erf(standardizedX))/2.0;},get mean(){return this.mean_;},get median(){return this.mean;},get mode(){return this.mean;},get standardDeviation(){return this.standardDeviation_;},get variance(){return this.variance_;}};Statistics.LogNormalDistribution=function(opt_location,opt_shape){this.normalDistribution_=new Statistics.NormalDistribution(opt_location,Math.pow(opt_shape||1,2));};Statistics.LogNormalDistribution.prototype={__proto__:Statistics.NormalDistribution.prototype,computeDensity(x){return this.normalDistribution_.computeDensity(Math.log(x))/x;},computePercentile(x){return this.normalDistribution_.computePercentile(Math.log(x));},get mean(){return Math.exp(this.normalDistribution_.mean+\n(this.normalDistribution_.variance/2));},get variance(){const nm=this.normalDistribution_.mean;const nv=this.normalDistribution_.variance;return(Math.exp(2*(nm+nv))-\nMath.exp(2*nm+nv));},get standardDeviation(){return Math.sqrt(this.variance);},get median(){return Math.exp(this.normalDistribution_.mean);},get mode(){return Math.exp(this.normalDistribution_.mean-\nthis.normalDistribution_.variance);}};Statistics.LogNormalDistribution.fromMedianAndDiminishingReturns=function(median,diminishingReturns){diminishingReturns=Math.log(diminishingReturns/median);const shape=Math.sqrt(1-3*diminishingReturns-\nMath.sqrt(Math.pow(diminishingReturns-3,2)-8))/2;const location=Math.log(median);return new Statistics.LogNormalDistribution(location,shape);};Statistics.DEFAULT_ALPHA=0.01;Statistics.MAX_SUGGESTED_SAMPLE_SIZE=20;Statistics.Significance={SIGNIFICANT:'REJECT',INSIGNIFICANT:'FAIL_TO_REJECT',NEED_MORE_DATA:'NEED_MORE_DATA',DONT_CARE:'DONT_CARE',};class HypothesisTestResult{constructor(p,u,needMoreData,opt_alpha){this.p_=p;this.u_=u;this.needMoreData_=needMoreData;this.compare(opt_alpha);}\nget p(){return this.p_;}\nget U(){return this.u_;}\nget significance(){return this.significance_;}\ncompare(opt_alpha){const alpha=opt_alpha||Statistics.DEFAULT_ALPHA;if(this.p<alpha){this.significance_=Statistics.Significance.SIGNIFICANT;}else if(this.needMoreData_){this.significance_=Statistics.Significance.NEED_MORE_DATA;}else{this.significance_=Statistics.Significance.INSIGNIFICANT;}\nreturn this.significance_;}\nasDict(){return{p:this.p,U:this.U,significance:this.significance,};}}\nStatistics.mwu=function(a,b,opt_alpha,opt_reqSampleSize){const result=mannwhitneyu.test(a,b);const needMoreData=opt_reqSampleSize&&Math.min(a.length,b.length)<opt_reqSampleSize;return new HypothesisTestResult(result.p,result.U,needMoreData,opt_alpha);};return{Statistics,};});'use strict';tr.exportTo('tr.b',function(){const GREEK_SMALL_LETTER_MU=String.fromCharCode(956);const SECONDS_IN_A_MINUTE=60;const SECONDS_IN_AN_HOUR=SECONDS_IN_A_MINUTE*60;const SECONDS_IN_A_DAY=SECONDS_IN_AN_HOUR*24;const SECONDS_IN_A_WEEK=SECONDS_IN_A_DAY*7;const SECONDS_IN_A_YEAR=SECONDS_IN_A_DAY*365.2422;const SECONDS_IN_A_MONTH=SECONDS_IN_A_YEAR/12;const UnitPrefixScale={};const UnitScale={};function defineUnitPrefixScale(name,prefixes){if(UnitPrefixScale[name]!==undefined){throw new Error('Unit prefix scale \\''+name+'\\' already exists');}\nif(prefixes.AUTO!==undefined){throw new Error('The \\'AUTO\\' unit prefix is not supported for unit'+'prefix scales and cannot be added to scale \\''+name+'\\'');}\nUnitPrefixScale[name]=prefixes;}\nUnitScale.defineUnitScale=function(name,unitScale){if(UnitScale[name]!==undefined){throw new Error('Unit scale \\''+name+'\\' already exists');}\nif(unitScale.AUTO!==undefined){throw new Error('\\'AUTO\\' unit scale will be added automatically '+'for unit scale \\''+name+'\\'');}\nunitScale.AUTO=Object.values(unitScale);unitScale.AUTO.sort((a,b)=>a.value-b.value);if(name)UnitScale[name]=unitScale;return unitScale;};function definePrefixScaleFromUnitScale(prefixName,unitScale){if(!unitScale){throw new Error('Cannot create PrefixScale without a unit scale.');}\nconst prefixScale={};for(const[curPrefix,curScale]of Object.entries(unitScale)){if(curPrefix==='AUTO'){continue;}\nif(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot create PrefixScale from malformed unit ${curScale}.`);}\nprefixScale[curPrefix]={value:curScale.value,symbol:curScale.symbol};}\nreturn defineUnitPrefixScale(prefixName,prefixScale);}\nUnitScale.defineUnitScaleFromPrefixScale=function(baseSymbol,baseName,prefixScale,opt_scaleName){if(baseSymbol===undefined){throw new Error('Cannot create UnitScale with undefined baseSymbol.');}\nif(!baseName){throw new Error('Cannot create UnitScale without a baseName.');}\nif(!prefixScale){throw new Error('Cannot create UnitScale without a prefix scale.');}\nconst unitScale={};for(const curPrefix of Object.keys(prefixScale)){const curScale=prefixScale[curPrefix];if(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot convert PrefixScale with malformed prefix ${curScale}.`);}\nconst name=curPrefix==='NONE'?baseName:`${curPrefix}_${baseName}`;unitScale[name]={value:curScale.value,symbol:curScale.symbol+baseSymbol,baseSymbol};}\nreturn UnitScale.defineUnitScale(opt_scaleName,unitScale);};function convertUnit(value,fromScale,toScale){if(value===undefined)return undefined;const fromScaleBase=fromScale.baseSymbol;const toScaleBase=toScale.baseSymbol;if(fromScaleBase!==undefined&&toScaleBase!==undefined&&fromScaleBase!==toScaleBase){throw new Error('Cannot convert between units with different base symbols.');}\nreturn value*(fromScale.value/toScale.value);}\ndefineUnitPrefixScale('BINARY',{NONE:{value:Math.pow(1024,0),symbol:''},KIBI:{value:Math.pow(1024,1),symbol:'Ki'},MEBI:{value:Math.pow(1024,2),symbol:'Mi'},GIBI:{value:Math.pow(1024,3),symbol:'Gi'},TEBI:{value:Math.pow(1024,4),symbol:'Ti'}});defineUnitPrefixScale('METRIC',{NANO:{value:1e-9,symbol:'n'},MICRO:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU},MILLI:{value:1e-3,symbol:'m'},NONE:{value:1,symbol:''},KILO:{value:1e3,symbol:'k'},MEGA:{value:1e6,symbol:'M'},GIGA:{value:1e9,symbol:'G'}});UnitScale.defineUnitScale('TIME',{NANO_SEC:{value:1e-9,symbol:'ns',baseSymbol:'s'},MICRO_SEC:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU+'s',baseSymbol:'s'},MILLI_SEC:{value:1e-3,symbol:'ms',baseSymbol:'s'},SEC:{value:1,symbol:'s',baseSymbol:'s'},MINUTE:{value:SECONDS_IN_A_MINUTE,symbol:'min',baseSymbol:'s'},HOUR:{value:SECONDS_IN_AN_HOUR,symbol:'hr',baseSymbol:'s'},DAY:{value:SECONDS_IN_A_DAY,symbol:'days',baseSymbol:'s'},WEEK:{value:SECONDS_IN_A_WEEK,symbol:'weeks',baseSymbol:'s'},MONTH:{value:SECONDS_IN_A_MONTH,symbol:'months',baseSymbol:'s'},YEAR:{value:SECONDS_IN_A_YEAR,symbol:'years',baseSymbol:'s'}});UnitScale.defineUnitScaleFromPrefixScale('B','BYTE',UnitPrefixScale.BINARY,'MEMORY');definePrefixScaleFromUnitScale('DATA_SIZE',UnitScale.MEMORY);UnitScale.defineUnitScaleFromPrefixScale('/s','SECONDS',UnitPrefixScale.DATA_SIZE,'BANDWIDTH_BYTES');return{UnitPrefixScale,UnitScale,convertUnit,GREEK_SMALL_LETTER_MU,};});'use strict';tr.exportTo('tr.b',function(){const msDisplayMode={scale:1e-3,suffix:'ms',roundedLess(a,b){return Math.round(a*1000)<Math.round(b*1000);},formatSpec:{unitScale:[tr.b.UnitScale.TIME.MILLI_SEC],minimumFractionDigits:3,}};const nsDisplayMode={scale:1e-9,suffix:'ns',roundedLess(a,b){return Math.round(a*1000000)<Math.round(b*1000000);},formatSpec:{unitScale:[tr.b.UnitScale.TIME.NANO_SEC],maximumFractionDigits:0}};const TimeDisplayModes={ns:nsDisplayMode,ms:msDisplayMode};return{TimeDisplayModes,};});'use strict';tr.exportTo('tr.ui.b',function(){function iterateElementDeeplyImpl(element,cb,thisArg,includeElement){if(includeElement&&cb.call(thisArg,element))return true;if(element.root&&element.root!==element&&iterateElementDeeplyImpl(element.root,cb,thisArg,false)){return true;}\nconst children=Polymer.dom(element).children;for(let i=0;i<children.length;i++){if(iterateElementDeeplyImpl(children[i],cb,thisArg,true)){return true;}}\nreturn false;}\nfunction iterateElementDeeply(element,cb,thisArg){iterateElementDeeplyImpl(element,cb,thisArg,false);}\nfunction findDeepElementMatchingPredicate(element,predicate){let foundElement=undefined;function matches(element){const match=predicate(element);if(!match){return false;}\nfoundElement=element;return true;}\niterateElementDeeply(element,matches);return foundElement;}\nfunction findDeepElementsMatchingPredicate(element,predicate){const foundElements=[];function matches(element){const match=predicate(element);if(match){foundElements.push(element);}\nreturn false;}\niterateElementDeeply(element,matches);return foundElements;}\nfunction findDeepElementMatching(element,selector){return findDeepElementMatchingPredicate(element,function(element){return element.matches(selector);});}\nfunction findDeepElementsMatching(element,selector){return findDeepElementsMatchingPredicate(element,function(element){return element.matches(selector);});}\nfunction findDeepElementWithTextContent(element,re){return findDeepElementMatchingPredicate(element,function(element){if(element.children.length!==0)return false;return re.test(Polymer.dom(element).textContent);});}\nreturn{findDeepElementMatching,findDeepElementsMatching,findDeepElementMatchingPredicate,findDeepElementsMatchingPredicate,findDeepElementWithTextContent,};});'use strict';tr.exportTo('tr.b',function(){const TimeDisplayModes=tr.b.TimeDisplayModes;const PLUS_MINUS_SIGN=String.fromCharCode(177);const CACHED_FORMATTERS={};function getNumberFormatter(minSpec,maxSpec,minCtx,maxCtx){const key=minSpec+'-'+maxSpec+'-'+minCtx+'-'+maxCtx;let formatter=CACHED_FORMATTERS[key];if(formatter===undefined){let minimumFractionDigits=minCtx!==undefined?minCtx:minSpec;let maximumFractionDigits=maxCtx!==undefined?maxCtx:maxSpec;if(minimumFractionDigits>maximumFractionDigits){if(minCtx!==undefined&&maxCtx===undefined){maximumFractionDigits=minimumFractionDigits;}else if(minCtx===undefined&&maxCtx!==undefined){minimumFractionDigits=maximumFractionDigits;}}\nformatter=new Intl.NumberFormat(undefined,{minimumFractionDigits,maximumFractionDigits,});CACHED_FORMATTERS[key]=formatter;}\nreturn formatter;}\nfunction max(a,b){if(a===undefined)return b;if(b===undefined)return a;return a.scale>b.scale?a:b;}\nconst ImprovementDirection={DONT_CARE:0,BIGGER_IS_BETTER:1,SMALLER_IS_BETTER:2};function Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,formatSpec){this.unitName=unitName;this.jsonName=jsonName;this.scaleBaseUnit=scaleBaseUnit;this.isDelta=isDelta;this.improvementDirection=improvementDirection;this.formatSpec_=formatSpec;this.baseUnit=undefined;this.correspondingDeltaUnit=undefined;}\nUnit.prototype={asJSON(){return this.jsonName;},asJSON2(){return this.asJSON().replace('_smallerIsBetter','-').replace('_biggerIsBetter','+');},truncate(value){if(typeof value!=='number')return value;if(0===(value%1))return value;if(typeof this.formatSpec_!=='function'&&(!this.formatSpec_.unitScale||((this.formatSpec_.unitScale.length===1)&&(this.formatSpec_.unitScale[0].value===1)))){const digits=this.formatSpec_.maximumFractionDigits||this.formatSpec_.minimumFractionDigits;return tr.b.math.truncate(value,digits+1);}\nconst formatted=this.format(value);let test=Math.round(value);if(formatted===this.format(test))return test;let lo=1;let hi=16;while(lo<hi-1){const digits=parseInt((lo+hi)/2);test=tr.b.math.truncate(value,digits);if(formatted===this.format(test)){hi=digits;}else{lo=digits;}}\ntest=tr.b.math.truncate(value,lo);if(formatted===this.format(test))return test;return tr.b.math.truncate(value,hi);},getUnitScale_(opt_context){let formatSpec=this.formatSpec_;let formatSpecWasFunction=false;if(typeof formatSpec==='function'){formatSpecWasFunction=true;formatSpec=formatSpec();}\nconst context=opt_context||{};let scale=undefined;if(context.unitScale){scale=context.unitScale;}else if(context.unitPrefix){const symbol=formatSpec.baseSymbol?formatSpec.baseSymbol:this.scaleBaseUnit.baseSymbol;scale=tr.b.UnitScale.defineUnitScaleFromPrefixScale(symbol,symbol,[context.unitPrefix]).AUTO;}else{scale=formatSpec.unitScale;if(!scale){scale=[{value:1,symbol:formatSpec.baseSymbol||'',baseSymbol:formatSpec.baseSymbol||''}];if(!formatSpecWasFunction)formatSpec.unitScale=scale;}}\nif(!(scale instanceof Array)){throw new Error('Unit has a malformed unit scale.');}\nreturn scale;},get unitString(){const scale=this.getUnitScale_();if(!scale){throw new Error('A UnitScale could not be found for Unit '+this.unitName);}\nreturn scale[0].symbol;},format(value,opt_context){let signString='';if(value<0){signString='-';value=-value;}else if(this.isDelta){signString=value===0?PLUS_MINUS_SIGN:'+';}\nconst context=opt_context||{};const scale=this.getUnitScale_(context);let deltaValue=context.deltaValue===undefined?value:context.deltaValue;deltaValue=Math.abs(deltaValue)*this.scaleBaseUnit.value;if(deltaValue===0){deltaValue=1;}\nlet i=0;while(i<scale.length-1&&deltaValue/scale[i+1].value>=1){i++;}\nconst selectedSubUnit=scale[i];let formatSpec=this.formatSpec_;if(typeof formatSpec==='function')formatSpec=formatSpec();let unitString='';if(selectedSubUnit.symbol){if(!formatSpec.avoidSpacePrecedingUnit)unitString=' ';unitString+=selectedSubUnit.symbol;}\nvalue=tr.b.convertUnit(value,this.scaleBaseUnit,selectedSubUnit);const numberString=getNumberFormatter(formatSpec.minimumFractionDigits,formatSpec.maximumFractionDigits,context.minimumFractionDigits,context.maximumFractionDigits).format(value);return signString+numberString+unitString;}};Unit.reset=function(){Unit.currentTimeDisplayMode=TimeDisplayModes.ms;};Unit.timestampFromUs=function(us){return tr.b.convertUnit(us,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);};Object.defineProperty(Unit,'currentTimeDisplayMode',{get(){return Unit.currentTimeDisplayMode_;},set(value){if(Unit.currentTimeDisplayMode_===value)return;Unit.currentTimeDisplayMode_=value;Unit.dispatchEvent(new tr.b.Event('display-mode-changed'));}});Unit.didPreferredTimeDisplayUnitChange=function(){let largest=undefined;const els=tr.ui.b.findDeepElementsMatching(document.body,'tr-v-ui-preferred-display-unit');els.forEach(function(el){largest=max(largest,el.preferredTimeDisplayMode);});Unit.currentTimeDisplayMode=largest===undefined?TimeDisplayModes.ms:largest;};Unit.byName={};Unit.byJSONName={};Unit.fromJSON=function(object){if(typeof(object)==='string'){if(object.endsWith('+')){object=object.slice(0,object.length-1)+'_biggerIsBetter';}else if(object.endsWith('-')){object=object.slice(0,object.length-1)+'_smallerIsBetter';}\nconst u=Unit.byJSONName[object];if(u)return u;}\nthrow new Error(`Unrecognized unit \"${object}\"`);};Unit.define=function(params){const definedUnits=[];for(const improvementDirection of Object.values(ImprovementDirection)){const regularUnit=Unit.defineUnitVariant_(params,false,improvementDirection);const deltaUnit=Unit.defineUnitVariant_(params,true,improvementDirection);regularUnit.correspondingDeltaUnit=deltaUnit;deltaUnit.correspondingDeltaUnit=deltaUnit;definedUnits.push(regularUnit,deltaUnit);}\nconst baseUnit=Unit.byName[params.baseUnitName];definedUnits.forEach(u=>u.baseUnit=baseUnit);};Unit.nameSuffixForImprovementDirection=function(improvementDirection){switch(improvementDirection){case ImprovementDirection.DONT_CARE:return'';case ImprovementDirection.BIGGER_IS_BETTER:return'_biggerIsBetter';case ImprovementDirection.SMALLER_IS_BETTER:return'_smallerIsBetter';default:throw new Error('Unknown improvement direction: '+improvementDirection);}};Unit.defineUnitVariant_=function(params,isDelta,improvementDirection){let nameSuffix=isDelta?'Delta':'';nameSuffix+=Unit.nameSuffixForImprovementDirection(improvementDirection);const unitName=params.baseUnitName+nameSuffix;const jsonName=params.baseJsonName+nameSuffix;if(Unit.byName[unitName]!==undefined){throw new Error('Unit \\''+unitName+'\\' already exists');}\nif(Unit.byJSONName[jsonName]!==undefined){throw new Error('JSON unit \\''+jsonName+'\\' alread exists');}\nlet scaleBaseUnit=params.scaleBaseUnit;if(!scaleBaseUnit){let formatSpec=params.formatSpec;if(typeof formatSpec==='function')formatSpec=formatSpec();const baseSymbol=formatSpec.unitScale?formatSpec.unitScale[0].baseSymbol:(formatSpec.baseSymbol||'');scaleBaseUnit={value:1,symbol:baseSymbol,baseSymbol};}\nconst unit=new Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,params.formatSpec);Unit.byName[unitName]=unit;Unit.byJSONName[jsonName]=unit;return unit;};tr.b.EventTarget.decorate(Unit);Unit.reset();Unit.define({baseUnitName:'timeInMsAutoFormat',baseJsonName:'msBestFitFormat',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec:{unitScale:tr.b.UnitScale.TIME.AUTO,minimumFractionDigits:0,maximumFractionDigits:3}});Unit.define({baseUnitName:'timeDurationInMs',baseJsonName:'ms',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'timeStampInMs',baseJsonName:'tsMs',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'normalizedPercentage',baseJsonName:'n%',formatSpec:{unitScale:[{value:0.01,symbol:'%'}],avoidSpacePrecedingUnit:true,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'sizeInBytes',baseJsonName:'sizeInBytes',formatSpec:{unitScale:tr.b.UnitScale.MEMORY.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'bandwidthInBytesPerSecond',baseJsonName:'bytesPerSecond',formatSpec:{unitScale:tr.b.UnitScale.BANDWIDTH_BYTES.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'energyInJoules',baseJsonName:'J',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('J','JOULE',tr.b.UnitPrefixScale.METRIC,'JOULE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'powerInWatts',baseJsonName:'W',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('W','WATT',tr.b.UnitPrefixScale.METRIC,'WATT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricCurrentInAmperes',baseJsonName:'A',formatSpec:{baseSymbol:'A',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('A','AMPERE',tr.b.UnitPrefixScale.METRIC,'AMPERE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'batteryChargeInAmpereHours',baseJsonName:'Ah',formatSpec:{baseSymbol:'Ah',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('Ah','AMPEREHOUR',tr.b.UnitPrefixScale.METRIC,'AMPEREHOUR').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricPotentialInVolts',baseJsonName:'V',formatSpec:{baseSymbol:'V',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('V','VOLT',tr.b.UnitPrefixScale.METRIC,'VOLT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'frequencyInHertz',baseJsonName:'Hz',formatSpec:{baseSymbol:'Hz',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('Hz','HERTZ',tr.b.UnitPrefixScale.METRIC,'HERTZ').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'unitlessNumber',baseJsonName:'unitless',formatSpec:{minimumFractionDigits:3,maximumFractionDigits:3}});Unit.define({baseUnitName:'count',baseJsonName:'count',formatSpec:{minimumFractionDigits:0,maximumFractionDigits:0}});Unit.define({baseUnitName:'sigma',baseJsonName:'sigma',formatSpec:{baseSymbol:String.fromCharCode(963),minimumFractionDigits:1,maximumFractionDigits:1}});return{ImprovementDirection,Unit,};});'use strict';tr.exportTo('tr.b',function(){class Scalar{constructor(unit,value){if(!(unit instanceof tr.b.Unit)){throw new Error('Expected Unit');}\nif(!(typeof(value)==='number')){throw new Error('Expected value to be number');}\nthis.unit=unit;this.value=value;}\nasDict(){return{unit:this.unit.asJSON(),value:tr.b.numberToJson(this.value),};}\ntoString(){return this.unit.format(this.value);}\nstatic fromDict(d){return new Scalar(tr.b.Unit.fromJSON(d.unit),tr.b.numberFromJson(d.value));}}\nreturn{Scalar,};});'use strict';tr.exportTo('tr.c',function(){function Auditor(model){this.model_=model;}\nAuditor.prototype={__proto__:Object.prototype,get model(){return this.model_;},runAnnotate(){},installUserFriendlyCategoryDriverIfNeeded(){},runAudit(){}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Auditor;tr.b.decorateExtensionRegistry(Auditor,options);return{Auditor,};});'use strict';tr.exportTo('tr.b',function(){function clamp01(value){return Math.max(0,Math.min(1,value));}\nfunction Color(opt_r,opt_g,opt_b,opt_a){this.r=Math.floor(opt_r)||0;this.g=Math.floor(opt_g)||0;this.b=Math.floor(opt_b)||0;this.a=opt_a;}\nColor.fromString=function(str){let tmp;let values;if(str.substr(0,4)==='rgb('){tmp=str.substr(4,str.length-5);values=tmp.split(',').map(function(v){return v.replace(/^\\s+/,'','g');});if(values.length!==3){throw new Error('Malformatted rgb-expression');}\nreturn new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]));}\nif(str.substr(0,5)==='rgba('){tmp=str.substr(5,str.length-6);values=tmp.split(',').map(function(v){return v.replace(/^\\s+/,'','g');});if(values.length!==4){throw new Error('Malformatted rgb-expression');}\nreturn new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]),parseFloat(values[3]));}\nif(str[0]==='#'&&str.length===7){return new Color(parseInt(str.substr(1,2),16),parseInt(str.substr(3,2),16),parseInt(str.substr(5,2),16));}\nthrow new Error('Unrecognized string format.');};Color.lerp=function(a,b,percent){if(a.a!==undefined&&b.a!==undefined){return Color.lerpRGBA(a,b,percent);}\nreturn Color.lerpRGB(a,b,percent);};Color.lerpRGB=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b);};Color.lerpRGBA=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b,((b.a-a.a)*percent)+a.a);};Color.fromDict=function(dict){return new Color(dict.r,dict.g,dict.b,dict.a);};Color.fromHSLExplicit=function(h,s,l,a){let r;let g;let b;function hue2rgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p;}\nif(s===0){r=g=b=l;}else{const q=l<0.5?l*(1+s):l+s-l*s;const p=2*l-q;r=hue2rgb(p,q,h+1/3);g=hue2rgb(p,q,h);b=hue2rgb(p,q,h-1/3);}\nreturn new Color(Math.floor(r*255),Math.floor(g*255),Math.floor(b*255),a);};Color.fromHSL=function(hsl){return Color.fromHSLExplicit(hsl.h,hsl.s,hsl.l,hsl.a);};Color.prototype={clone(){const c=new Color();c.r=this.r;c.g=this.g;c.b=this.b;c.a=this.a;return c;},blendOver(bgColor){const oneMinusThisAlpha=1-this.a;const outA=this.a+bgColor.a*oneMinusThisAlpha;const bgBlend=(bgColor.a*oneMinusThisAlpha)/bgColor.a;return new Color(this.r*this.a+bgColor.r*bgBlend,this.g*this.a+bgColor.g*bgBlend,this.b*this.a+bgColor.b*bgBlend,outA);},brighten(opt_k){const k=opt_k||0.45;return new Color(Math.min(255,this.r+Math.floor(this.r*k)),Math.min(255,this.g+Math.floor(this.g*k)),Math.min(255,this.b+Math.floor(this.b*k)),this.a);},lighten(k,opt_maxL){const maxL=opt_maxL!==undefined?opt_maxL:1.0;const hsl=this.toHSL();hsl.l=Math.min(hsl.l+k,maxL);return Color.fromHSL(hsl);},darken(opt_k){let k;if(opt_k!==undefined){k=opt_k;}else{k=0.45;}\nreturn new Color(Math.min(255,this.r-Math.floor(this.r*k)),Math.min(255,this.g-Math.floor(this.g*k)),Math.min(255,this.b-Math.floor(this.b*k)),this.a);},desaturate(opt_desaturateFactor){let desaturateFactor;if(opt_desaturateFactor!==undefined){desaturateFactor=opt_desaturateFactor;}else{desaturateFactor=1;}\nconst hsl=this.toHSL();hsl.s=clamp01(hsl.s*(1-desaturateFactor));return Color.fromHSL(hsl);},withAlpha(a){return new Color(this.r,this.g,this.b,a);},toString(){if(this.a!==undefined){return'rgba('+\nthis.r+','+this.g+','+\nthis.b+','+this.a+')';}\nreturn'rgb('+this.r+','+this.g+','+this.b+')';},toHSL(){const r=this.r/255;const g=this.g/255;const b=this.b/255;const max=Math.max(r,g,b);const min=Math.min(r,g,b);let h;let s;const l=(max+min)/2;if(min===max){h=0;s=0;}else{const delta=max-min;if(l>0.5){s=delta/(2-max-min);}else{s=delta/(max+min);}\nif(r===max){h=(g-b)/delta;if(g<b)h+=6;}else if(g===max){h=2+((b-r)/delta);}else{h=4+((r-g)/delta);}\nh/=6;}\nreturn{h,s,l,a:this.a};},toStringWithAlphaOverride(alpha){return'rgba('+\nthis.r+','+this.g+','+\nthis.b+','+alpha+')';}};return{Color,};});'use strict';tr.exportTo('tr.b',function(){function SinebowColorGenerator(opt_a,opt_brightness){this.a_=(opt_a===undefined)?1:opt_a;this.brightness_=(opt_brightness===undefined)?1:opt_brightness;this.colorIndex_=0;this.keyToColor={};}\nSinebowColorGenerator.prototype={colorForKey(key){if(!this.keyToColor[key]){this.keyToColor[key]=this.nextColor();}\nreturn this.keyToColor[key];},nextColor(){const components=SinebowColorGenerator.nthColor(this.colorIndex_++);return tr.b.Color.fromString(SinebowColorGenerator.calculateColor(components[0],components[1],components[2],this.a_,this.brightness_));}};SinebowColorGenerator.PHI=(1+Math.sqrt(5))/2;SinebowColorGenerator.sinebow=function(h){h+=0.5;h=-h;let r=Math.sin(Math.PI*h);let g=Math.sin(Math.PI*(h+1/3));let b=Math.sin(Math.PI*(h+2/3));r*=r;g*=g;b*=b;const y=2*(0.2989*r+0.5870*g+0.1140*b);r/=y;g/=y;b/=y;return[256*r,256*g,256*b];};SinebowColorGenerator.nthColor=function(n){return SinebowColorGenerator.sinebow(n*this.PHI);};SinebowColorGenerator.calculateColor=function(r,g,b,a,brightness){if(brightness<=1){r*=brightness;g*=brightness;b*=brightness;}else{r=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),r,255);g=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),g,255);b=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),b,255);}\nr=Math.round(r);g=Math.round(g);b=Math.round(b);return'rgba('+r+','+g+','+b+', '+a+')';};return{SinebowColorGenerator,};});'use strict';tr.exportTo('tr.b',function(){const numGeneralPurposeColorIds=23;const generalPurposeColors=new Array(numGeneralPurposeColorIds);const sinebowAlpha=1.0;const sinebowBrightness=1.5;const sinebowColorGenerator=new tr.b.SinebowColorGenerator(sinebowAlpha,sinebowBrightness);for(let i=0;i<numGeneralPurposeColorIds;i++){generalPurposeColors[i]=sinebowColorGenerator.nextColor();}\nconst reservedColorsByName={thread_state_uninterruptible:new tr.b.Color(182,125,143),thread_state_iowait:new tr.b.Color(255,140,0),thread_state_running:new tr.b.Color(126,200,148),thread_state_runnable:new tr.b.Color(133,160,210),thread_state_sleeping:new tr.b.Color(240,240,240),thread_state_unknown:new tr.b.Color(199,155,125),background_memory_dump:new tr.b.Color(0,180,180),light_memory_dump:new tr.b.Color(0,0,180),detailed_memory_dump:new tr.b.Color(180,0,180),vsync_highlight_color:new tr.b.Color(0,0,255),generic_work:new tr.b.Color(125,125,125),good:new tr.b.Color(0,125,0),bad:new tr.b.Color(180,125,0),terrible:new tr.b.Color(180,0,0),black:new tr.b.Color(0,0,0),grey:new tr.b.Color(221,221,221),white:new tr.b.Color(255,255,255),yellow:new tr.b.Color(255,255,0),olive:new tr.b.Color(100,100,0),rail_response:new tr.b.Color(67,135,253),rail_animation:new tr.b.Color(244,74,63),rail_idle:new tr.b.Color(238,142,0),rail_load:new tr.b.Color(13,168,97),startup:new tr.b.Color(230,230,0),heap_dump_stack_frame:new tr.b.Color(128,128,128),heap_dump_object_type:new tr.b.Color(0,0,255),heap_dump_child_node_arrow:new tr.b.Color(204,102,0),cq_build_running:new tr.b.Color(255,255,119),cq_build_passed:new tr.b.Color(153,238,102),cq_build_failed:new tr.b.Color(238,136,136),cq_build_abandoned:new tr.b.Color(187,187,187),cq_build_attempt_runnig:new tr.b.Color(222,222,75),cq_build_attempt_passed:new tr.b.Color(103,218,35),cq_build_attempt_failed:new tr.b.Color(197,81,81)};const numReservedColorIds=Object.keys(reservedColorsByName).length;const numColorsPerVariant=numGeneralPurposeColorIds+numReservedColorIds;function ColorScheme(){}\nconst paletteBase=[];paletteBase.push.apply(paletteBase,generalPurposeColors);paletteBase.push.apply(paletteBase,Object.values(reservedColorsByName));ColorScheme.colors=[];ColorScheme.properties={};ColorScheme.properties={numColorsPerVariant,};function pushVariant(func){const variantColors=paletteBase.map(func);ColorScheme.colors.push.apply(ColorScheme.colors,variantColors);}\npushVariant(function(c){return c;});ColorScheme.properties.brightenedOffsets=[];ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.3,0.8);});ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.48,0.85);});ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.65,0.9);});ColorScheme.properties.dimmedOffsets=[];ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate();});ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate(0.5);});ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate(0.3);});ColorScheme.colorsAsStrings=ColorScheme.colors.map(function(c){return c.toString();});const reservedColorNameToIdMap=(function(){const m=new Map();let i=generalPurposeColors.length;for(const key of Object.keys(reservedColorsByName)){m.set(key,i++);}\nreturn m;})();ColorScheme.getColorIdForReservedName=function(name){const id=reservedColorNameToIdMap.get(name);if(id===undefined){throw new Error('Unrecognized color '+name);}\nreturn id;};ColorScheme.getColorForReservedNameAsString=function(reservedName){const id=ColorScheme.getColorIdForReservedName(reservedName);return ColorScheme.colorsAsStrings[id];};ColorScheme.getStringHash=function(name){let hash=0;for(let i=0;i<name.length;++i){hash=(hash+37*hash+11*name.charCodeAt(i))%0xFFFFFFFF;}\nreturn hash;};const stringColorIdCache=new Map();ColorScheme.getColorIdForGeneralPurposeString=function(string){if(stringColorIdCache.get(string)===undefined){const hash=ColorScheme.getStringHash(string);stringColorIdCache.set(string,hash%numGeneralPurposeColorIds);}\nreturn stringColorIdCache.get(string);};ColorScheme.getAnotherColorId=function(colorId,n){return(colorId+n)%numColorsPerVariant;};ColorScheme.getVariantColorId=function(colorId,offset){return colorId+offset;};return{ColorScheme,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;function EventInfo(title,description,docLinks){this.title=title;this.description=description;this.docLinks=docLinks;this.colorId=ColorScheme.getColorIdForGeneralPurposeString(title);}\nreturn{EventInfo,};});'use strict';tr.exportTo('tr.b',function(){let nextGUID=1;const UUID4_PATTERN='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';const GUID={allocateSimple(){return nextGUID++;},getLastSimpleGuid(){return nextGUID-1;},allocateUUID4(){return UUID4_PATTERN.replace(/[xy]/g,function(c){let r=parseInt(Math.random()*16);if(c==='y')r=(r&3)+8;return r.toString(16);});}};return{GUID,};});'use strict';tr.exportTo('tr.model',function(){function EventRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(EventRegistry,options);EventRegistry.addEventListener('will-register',function(e){const metadata=e.typeInfo.metadata;if(metadata.name===undefined){throw new Error('Registered events must provide name metadata');}\nif(metadata.pluralName===undefined){throw new Error('Registered events must provide pluralName metadata');}\nif(metadata.subTypes===undefined){metadata.subTypes={};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=e.typeInfo.constructor;options.defaultConstructor=e.typeInfo.constructor;tr.b.decorateExtensionRegistry(metadata.subTypes,options);}else{if(!metadata.subTypes.register){throw new Error('metadata.subTypes must be an extension registry.');}}\ne.typeInfo.constructor.subTypes=metadata.subTypes;});let eventsByTypeName=undefined;EventRegistry.getEventTypeInfoByTypeName=function(typeName){if(eventsByTypeName===undefined){eventsByTypeName={};EventRegistry.getAllRegisteredTypeInfos().forEach(function(typeInfo){eventsByTypeName[typeInfo.metadata.name]=typeInfo;});}\nreturn eventsByTypeName[typeName];};EventRegistry.addEventListener('registry-changed',function(){eventsByTypeName=undefined;});function convertCamelCaseToTitleCase(name){let result=name.replace(/[A-Z]/g,' $&');result=result.charAt(0).toUpperCase()+result.slice(1);return result;}\nEventRegistry.getUserFriendlySingularName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.name;return convertCamelCaseToTitleCase(str);};EventRegistry.getUserFriendlyPluralName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.pluralName;return convertCamelCaseToTitleCase(str);};return{EventRegistry,};});'use strict';tr.exportTo('tr.model',function(){const EventRegistry=tr.model.EventRegistry;const RequestSelectionChangeEvent=tr.b.Event.bind(undefined,'requestSelectionChange',true,false);function EventSet(opt_events){this.bounds_=new tr.b.math.Range();this.events_=new Set();this.guid_=tr.b.GUID.allocateSimple();if(opt_events){if(opt_events instanceof Array){for(const event of opt_events){this.push(event);}}else if(opt_events instanceof EventSet){this.addEventSet(opt_events);}else{this.push(opt_events);}}}\nEventSet.prototype={__proto__:Object.prototype,get bounds(){return this.bounds_;},get duration(){if(this.bounds_.isEmpty)return 0;return this.bounds_.max-this.bounds_.min;},get length(){return this.events_.size;},get guid(){return this.guid_;},*[Symbol.iterator](){for(const event of this.events_){yield event;}},clear(){this.bounds_=new tr.b.math.Range();this.events_.clear();},push(...events){let numPushed;for(const event of events){if(event.guid===undefined){throw new Error('Event must have a GUID');}\nif(!this.events_.has(event)){this.events_.add(event);if(event.addBoundsToRange){if(this.bounds_!==undefined){event.addBoundsToRange(this.bounds_);}}}\nnumPushed++;}\nreturn numPushed;},contains(event){if(this.events_.has(event))return event;return undefined;},addEventSet(eventSet){for(const event of eventSet){this.push(event);}},intersectionIsEmpty(otherEventSet){return!this.some(event=>otherEventSet.contains(event));},equals(that){if(this.length!==that.length)return false;return this.every(event=>that.contains(event));},sortEvents(compare){const ary=this.toArray();ary.sort(compare);this.clear();for(const event of ary){this.push(event);}},getEventsOrganizedByBaseType(opt_pruneEmpty){const allTypeInfos=EventRegistry.getAllRegisteredTypeInfos();const events=this.getEventsOrganizedByCallback(function(event){let maxEventIndex=-1;let maxEventTypeInfo=undefined;allTypeInfos.forEach(function(eventTypeInfo,eventIndex){if(!(event instanceof eventTypeInfo.constructor))return;if(eventIndex>maxEventIndex){maxEventIndex=eventIndex;maxEventTypeInfo=eventTypeInfo;}});if(maxEventIndex===-1){throw new Error(`Unrecognized event type: ${event.constructor.name}`);}\nreturn maxEventTypeInfo.metadata.name;});if(!opt_pruneEmpty){allTypeInfos.forEach(function(eventTypeInfo){if(events[eventTypeInfo.metadata.name]===undefined){events[eventTypeInfo.metadata.name]=new EventSet();}});}\nreturn events;},getEventsOrganizedByTitle(){return this.getEventsOrganizedByCallback(function(event){if(event.title===undefined){throw new Error('An event didn\\'t have a title!');}\nreturn event.title;});},getEventsOrganizedByCallback(cb,opt_this){const groupedEvents=tr.b.groupIntoMap(this,cb,opt_this||this);const groupedEventsDict={};for(const[k,events]of groupedEvents){groupedEventsDict[k]=new EventSet(events);}\nreturn groupedEventsDict;},enumEventsOfType(type,func){for(const event of this){if(event instanceof type){func(event);}}},get userFriendlyName(){if(this.length===0){throw new Error('Empty event set');}\nconst eventsByBaseType=this.getEventsOrganizedByBaseType(true);const eventTypeName=Object.keys(eventsByBaseType)[0];if(this.length===1){const tmp=EventRegistry.getUserFriendlySingularName(eventTypeName);return tr.b.getOnlyElement(this.events_).userFriendlyName;}\nconst numEventTypes=Object.keys(eventsByBaseType).length;if(numEventTypes!==1){return this.length+' events of various types';}\nconst tmp=EventRegistry.getUserFriendlyPluralName(eventTypeName);return this.length+' '+tmp;},filter(fn,opt_this){const res=new EventSet();for(const event of this){if(fn.call(opt_this,event)){res.push(event);}}\nreturn res;},toArray(){const ary=[];for(const event of this){ary.push(event);}\nreturn ary;},forEach(fn,opt_this){for(const event of this){fn.call(opt_this,event);}},map(fn,opt_this){const res=[];for(const event of this){res.push(fn.call(opt_this,event));}\nreturn res;},every(fn,opt_this){for(const event of this){if(!fn.call(opt_this,event)){return false;}}\nreturn true;},some(fn,opt_this){for(const event of this){if(fn.call(opt_this,event)){return true;}}\nreturn false;},asDict(){const stableIds=[];for(const event of this){stableIds.push(event.stableId);}\nreturn{'events':stableIds};},asSet(){return this.events_;}};EventSet.IMMUTABLE_EMPTY_SET=(function(){const s=new EventSet();s.push=function(){throw new Error('Cannot push to an immutable event set');};s.addEventSet=function(){throw new Error('Cannot add to an immutable event set');};Object.freeze(s);return s;})();return{EventSet,RequestSelectionChangeEvent,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const SelectionState={NONE:0,SELECTED:ColorScheme.properties.brightenedOffsets[0],HIGHLIGHTED:ColorScheme.properties.brightenedOffsets[1],DIMMED:ColorScheme.properties.dimmedOffsets[0],BRIGHTENED0:ColorScheme.properties.brightenedOffsets[0],BRIGHTENED1:ColorScheme.properties.brightenedOffsets[1],BRIGHTENED2:ColorScheme.properties.brightenedOffsets[2],DIMMED0:ColorScheme.properties.dimmedOffsets[0],DIMMED1:ColorScheme.properties.dimmedOffsets[1],DIMMED2:ColorScheme.properties.dimmedOffsets[2]};const brighteningLevels=[SelectionState.NONE,SelectionState.BRIGHTENED0,SelectionState.BRIGHTENED1,SelectionState.BRIGHTENED2];SelectionState.getFromBrighteningLevel=function(level){return brighteningLevels[level];};const dimmingLevels=[SelectionState.DIMMED0,SelectionState.DIMMED1,SelectionState.DIMMED2];SelectionState.getFromDimmingLevel=function(level){return dimmingLevels[level];};return{SelectionState,};});'use strict';tr.exportTo('tr.model',function(){const SelectionState=tr.model.SelectionState;function SelectableItem(modelItem){this.modelItem_=modelItem;}\nSelectableItem.prototype={get modelItem(){return this.modelItem_;},get selected(){return this.selectionState===SelectionState.SELECTED;},addToSelection(selection){const modelItem=this.modelItem_;if(!modelItem)return;selection.push(modelItem);},addToTrackMap(eventToTrackMap,track){const modelItem=this.modelItem_;if(!modelItem)return;eventToTrackMap.addEvent(modelItem,track);}};return{SelectableItem,};});'use strict';tr.exportTo('tr.model',function(){const SelectableItem=tr.model.SelectableItem;const SelectionState=tr.model.SelectionState;const IMMUTABLE_EMPTY_SET=tr.model.EventSet.IMMUTABLE_EMPTY_SET;function Event(){SelectableItem.call(this,this);this.guid_=tr.b.GUID.allocateSimple();this.selectionState=SelectionState.NONE;this.info=undefined;}\nEvent.prototype={__proto__:SelectableItem.prototype,get guid(){return this.guid_;},get stableId(){return undefined;},get range(){const range=new tr.b.math.Range();this.addBoundsToRange(range);return range;},associatedAlerts:IMMUTABLE_EMPTY_SET,addAssociatedAlert(alert){if(this.associatedAlerts===IMMUTABLE_EMPTY_SET){this.associatedAlerts=new tr.model.EventSet();}\nthis.associatedAlerts.push(alert);},addBoundsToRange(range){}};return{Event,};});'use strict';tr.exportTo('tr.model',function(){function TimedEvent(start){tr.model.Event.call(this);this.start=start;this.duration=0;this.cpuStart=undefined;this.cpuDuration=undefined;this.contexts=Object.freeze([]);}\nTimedEvent.prototype={__proto__:tr.model.Event.prototype,get end(){return this.start+this.duration;},get boundsRange(){return tr.b.math.Range.fromExplicitRange(this.start,this.end);},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);},bounds(that,opt_precisionUnit){if(opt_precisionUnit===undefined){opt_precisionUnit=tr.b.TimeDisplayModes.ms;}\nconst startsBefore=opt_precisionUnit.roundedLess(that.start,this.start);const endsAfter=opt_precisionUnit.roundedLess(this.end,that.end);return!startsBefore&&!endsAfter;}};return{TimedEvent,};});'use strict';tr.exportTo('tr.model',function(){function Alert(info,start,opt_associatedEvents,opt_args){tr.model.TimedEvent.call(this,start);this.info=info;this.args=opt_args||{};this.associatedEvents=new tr.model.EventSet(opt_associatedEvents);this.associatedEvents.forEach(function(event){event.addAssociatedAlert(this);},this);}\nAlert.prototype={__proto__:tr.model.TimedEvent.prototype,get title(){return this.info.title;},get colorId(){return this.info.colorId;},get userFriendlyName(){return'Alert '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);}};tr.model.EventRegistry.register(Alert,{name:'alert',pluralName:'alerts'});return{Alert,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const Statistics=tr.b.math.Statistics;const FRAME_PERF_CLASS={GOOD:'good',BAD:'bad',TERRIBLE:'terrible',NEUTRAL:'generic_work'};function Frame(associatedEvents,threadTimeRanges,opt_args){tr.model.Event.call(this);this.threadTimeRanges=threadTimeRanges;this.associatedEvents=new tr.model.EventSet(associatedEvents);this.args=opt_args||{};this.title='Frame';this.start=Statistics.min(threadTimeRanges,function(x){return x.start;});this.end=Statistics.max(threadTimeRanges,function(x){return x.end;});this.totalDuration=Statistics.sum(threadTimeRanges,function(x){return x.end-x.start;});this.perfClass=FRAME_PERF_CLASS.NEUTRAL;}\nFrame.prototype={__proto__:tr.model.Event.prototype,set perfClass(perfClass){this.colorId=ColorScheme.getColorIdForReservedName(perfClass);this.perfClass_=perfClass;},get perfClass(){return this.perfClass_;},shiftTimestampsForward(amount){this.start+=amount;this.end+=amount;for(let i=0;i<this.threadTimeRanges.length;i++){this.threadTimeRanges[i].start+=amount;this.threadTimeRanges[i].end+=amount;}},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);}};tr.model.EventRegistry.register(Frame,{name:'frame',pluralName:'frames'});return{Frame,FRAME_PERF_CLASS,};});'use strict';tr.exportTo('tr.model.helpers',function(){const Frame=tr.model.Frame;const Statistics=tr.b.math.Statistics;const UI_DRAW_TYPE={NONE:'none',LEGACY:'legacy',MARSHMALLOW:'marshmallow'};const UI_THREAD_DRAW_NAMES={'performTraversals':UI_DRAW_TYPE.LEGACY,'Choreographer#doFrame':UI_DRAW_TYPE.MARSHMALLOW};const RENDER_THREAD_DRAW_NAME='DrawFrame';const RENDER_THREAD_INDEP_DRAW_NAME='doFrame';const RENDER_THREAD_QUEUE_NAME='queueBuffer';const RENDER_THREAD_SWAP_NAME='eglSwapBuffers';const THREAD_SYNC_NAME='syncFrameState';function getSlicesForThreadTimeRanges(threadTimeRanges){const ret=[];threadTimeRanges.forEach(function(threadTimeRange){const slices=[];threadTimeRange.thread.sliceGroup.iterSlicesInTimeRange(function(slice){slices.push(slice);},threadTimeRange.start,threadTimeRange.end);ret.push.apply(ret,slices);});return ret;}\nfunction makeFrame(threadTimeRanges,surfaceFlinger){const args={};if(surfaceFlinger&&surfaceFlinger.hasVsyncs){const start=Statistics.min(threadTimeRanges,function(threadTimeRanges){return threadTimeRanges.start;});args.deadline=surfaceFlinger.getFrameDeadline(start);args.frameKickoff=surfaceFlinger.getFrameKickoff(start);}\nconst events=getSlicesForThreadTimeRanges(threadTimeRanges);return new Frame(events,threadTimeRanges,args);}\nfunction findOverlappingDrawFrame(renderThread,uiDrawSlice){if(!renderThread)return undefined;let overlappingDrawFrame;const slices=tr.b.iterateOverIntersectingIntervals(renderThread.sliceGroup.slices,function(range){return range.start;},function(range){return range.end;},uiDrawSlice.start,uiDrawSlice.end,function(rtDrawSlice){if(rtDrawSlice.title===RENDER_THREAD_DRAW_NAME){const rtSyncSlice=rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME);if(rtSyncSlice&&rtSyncSlice.start>=uiDrawSlice.start&&rtSyncSlice.end<=uiDrawSlice.end){overlappingDrawFrame=rtDrawSlice;}}});return overlappingDrawFrame;}\nfunction getPreTraversalWorkRanges(uiThread){if(!uiThread)return[];const preFrameEvents=[];uiThread.sliceGroup.slices.forEach(function(slice){if(slice.title==='obtainView'||slice.title==='setupListItem'||slice.title==='deliverInputEvent'||slice.title==='RV Scroll'){preFrameEvents.push(slice);}});uiThread.asyncSliceGroup.slices.forEach(function(slice){if(slice.title==='deliverInputEvent'){preFrameEvents.push(slice);}});return tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(preFrameEvents),3,function(events){return{start:events[0].min,end:events[events.length-1].max};});}\nfunction getFrameStartTime(traversalStart,preTraversalWorkRanges){const preTraversalWorkRange=tr.b.findClosestIntervalInSortedIntervals(preTraversalWorkRanges,function(range){return range.start;},function(range){return range.end;},traversalStart,3);if(preTraversalWorkRange){return preTraversalWorkRange.start;}\nreturn traversalStart;}\nfunction getRtFrameEndTime(rtDrawSlice){const rtQueueSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_QUEUE_NAME);if(rtQueueSlice){return rtQueueSlice.end;}\nconst rtSwapSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_SWAP_NAME);if(rtSwapSlice){return rtSwapSlice.end;}\nreturn rtDrawSlice.end;}\nfunction getUiThreadDrivenFrames(app){if(!app.uiThread)return[];let preTraversalWorkRanges=[];if(app.uiDrawType===UI_DRAW_TYPE.LEGACY){preTraversalWorkRanges=getPreTraversalWorkRanges(app.uiThread);}\nconst frames=[];app.uiThread.sliceGroup.slices.forEach(function(slice){if(!(slice.title in UI_THREAD_DRAW_NAMES)){return;}\nconst threadTimeRanges=[];const uiThreadTimeRange={thread:app.uiThread,start:getFrameStartTime(slice.start,preTraversalWorkRanges),end:slice.end};threadTimeRanges.push(uiThreadTimeRange);const rtDrawSlice=findOverlappingDrawFrame(app.renderThread,slice);if(rtDrawSlice){const rtSyncSlice=rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME);if(rtSyncSlice){uiThreadTimeRange.end=Math.min(uiThreadTimeRange.end,rtSyncSlice.start);}\nthreadTimeRanges.push({thread:app.renderThread,start:rtDrawSlice.start,end:getRtFrameEndTime(rtDrawSlice)});}\nframes.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;}\nfunction getRenderThreadDrivenFrames(app){if(!app.renderThread)return[];const frames=[];app.renderThread.sliceGroup.getSlicesOfName(RENDER_THREAD_INDEP_DRAW_NAME).forEach(function(slice){const threadTimeRanges=[{thread:app.renderThread,start:slice.start,end:slice.end}];frames.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;}\nfunction getUiDrawType(uiThread){if(!uiThread){return UI_DRAW_TYPE.NONE;}\nconst slices=uiThread.sliceGroup.slices;for(let i=0;i<slices.length;i++){if(slices[i].title in UI_THREAD_DRAW_NAMES){return UI_THREAD_DRAW_NAMES[slices[i].title];}}\nreturn UI_DRAW_TYPE.NONE;}\nfunction getInputSamples(process){let samples=undefined;for(const counterName in process.counters){if(/^android\\.aq\\:pending/.test(counterName)&&process.counters[counterName].numSeries===1){samples=process.counters[counterName].series[0].samples;break;}}\nif(!samples)return[];const inputSamples=[];let lastValue=0;samples.forEach(function(sample){if(sample.value>lastValue){inputSamples.push(sample);}\nlastValue=sample.value;});return inputSamples;}\nfunction getAnimationAsyncSlices(uiThread){if(!uiThread)return[];const slices=[];for(const slice of uiThread.asyncSliceGroup.getDescendantEvents()){if(/^animator\\:/.test(slice.title)){slices.push(slice);}}\nreturn slices;}\nfunction AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType){this.process=process;this.uiThread=uiThread;this.renderThread=renderThread;this.surfaceFlinger=surfaceFlinger;this.uiDrawType=uiDrawType;this.frames_=undefined;this.inputs_=undefined;}\nAndroidApp.createForProcessIfPossible=function(process,surfaceFlinger){let uiThread=process.getThread(process.pid);const uiDrawType=getUiDrawType(uiThread);if(uiDrawType===UI_DRAW_TYPE.NONE){uiThread=undefined;}\nconst renderThreads=process.findAllThreadsNamed('RenderThread');const renderThread=(renderThreads.length===1?renderThreads[0]:undefined);if(uiThread||renderThread){return new AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType);}};AndroidApp.prototype={getFrames(){if(!this.frames_){const uiFrames=getUiThreadDrivenFrames(this);const rtFrames=getRenderThreadDrivenFrames(this);this.frames_=uiFrames.concat(rtFrames);this.frames_.sort(function(a,b){a.end-b.end;});}\nreturn this.frames_;},getInputSamples(){if(!this.inputs_){this.inputs_=getInputSamples(this.process);}\nreturn this.inputs_;},getAnimationAsyncSlices(){if(!this.animations_){this.animations_=getAnimationAsyncSlices(this.uiThread);}\nreturn this.animations_;}};return{AndroidApp,};});'use strict';tr.exportTo('tr.model.helpers',function(){const findLowIndexInSortedArray=tr.b.findLowIndexInSortedArray;const VSYNC_SF_NAME='android.VSYNC-sf';const VSYNC_APP_NAME='android.VSYNC-app';const VSYNC_FALLBACK_NAME='android.VSYNC';const TIMESTAMP_FUDGE_MS=0.01;function getVsyncTimestamps(process,counterName){let vsync=process.counters[counterName];if(!vsync){vsync=process.counters[VSYNC_FALLBACK_NAME];}\nif(vsync&&vsync.numSeries===1&&vsync.numSamples>1){return vsync.series[0].timestamps;}\nreturn undefined;}\nfunction AndroidSurfaceFlinger(process,thread){this.process=process;this.thread=thread;this.appVsync_=undefined;this.sfVsync_=undefined;this.appVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_APP_NAME);this.sfVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_SF_NAME);this.deadlineDelayMs_=this.appVsyncTimestamps_!==this.sfVsyncTimestamps_?5:TIMESTAMP_FUDGE_MS;}\nAndroidSurfaceFlinger.createForProcessIfPossible=function(process){const mainThread=process.getThread(process.pid);if(mainThread&&mainThread.name&&/surfaceflinger/.test(mainThread.name)){return new AndroidSurfaceFlinger(process,mainThread);}\nconst primaryThreads=process.findAllThreadsNamed('SurfaceFlinger');if(primaryThreads.length===1){return new AndroidSurfaceFlinger(process,primaryThreads[0]);}\nreturn undefined;};AndroidSurfaceFlinger.prototype={get hasVsyncs(){return!!this.appVsyncTimestamps_&&!!this.sfVsyncTimestamps_;},getFrameKickoff(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');}\nconst firstGreaterIndex=findLowIndexInSortedArray(this.appVsyncTimestamps_,function(x){return x;},timestamp+TIMESTAMP_FUDGE_MS);if(firstGreaterIndex<1)return undefined;return this.appVsyncTimestamps_[firstGreaterIndex-1];},getFrameDeadline(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');}\nconst firstGreaterIndex=findLowIndexInSortedArray(this.sfVsyncTimestamps_,function(x){return x;},timestamp+this.deadlineDelayMs_);if(firstGreaterIndex>=this.sfVsyncTimestamps_.length){return undefined;}\nreturn this.sfVsyncTimestamps_[firstGreaterIndex];}};return{AndroidSurfaceFlinger,};});'use strict';tr.exportTo('tr.model.helpers',function(){const AndroidApp=tr.model.helpers.AndroidApp;const AndroidSurfaceFlinger=tr.model.helpers.AndroidSurfaceFlinger;const IMPORTANT_SURFACE_FLINGER_SLICES={'doComposition':true,'updateTexImage':true,'postFramebuffer':true};const IMPORTANT_UI_THREAD_SLICES={'Choreographer#doFrame':true,'performTraversals':true,'deliverInputEvent':true};const IMPORTANT_RENDER_THREAD_SLICES={'doFrame':true};function iterateImportantThreadSlices(thread,important,callback){if(!thread)return;thread.sliceGroup.slices.forEach(function(slice){if(slice.title in important){callback(slice);}});}\nfunction AndroidModelHelper(model){this.model=model;this.apps=[];this.surfaceFlinger=undefined;const processes=model.getAllProcesses();for(let i=0;i<processes.length&&!this.surfaceFlinger;i++){this.surfaceFlinger=AndroidSurfaceFlinger.createForProcessIfPossible(processes[i]);}\nmodel.getAllProcesses().forEach(function(process){const app=AndroidApp.createForProcessIfPossible(process,this.surfaceFlinger);if(app){this.apps.push(app);}},this);}\nAndroidModelHelper.guid=tr.b.GUID.allocateSimple();AndroidModelHelper.supportsModel=function(model){return true;};AndroidModelHelper.prototype={iterateImportantSlices(callback){if(this.surfaceFlinger){iterateImportantThreadSlices(this.surfaceFlinger.thread,IMPORTANT_SURFACE_FLINGER_SLICES,callback);}\nthis.apps.forEach(function(app){iterateImportantThreadSlices(app.uiThread,IMPORTANT_UI_THREAD_SLICES,callback);iterateImportantThreadSlices(app.renderThread,IMPORTANT_RENDER_THREAD_SLICES,callback);});}};return{AndroidModelHelper,};});'use strict';tr.exportTo('tr.model',function(){function Slice(category,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId){if(new.target){throw new Error('Can\\'t instantiate pure virtual class Slice');}\ntr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.args=args;this.startStackFrame=undefined;this.endStackFrame=undefined;this.didNotFinish=false;this.inFlowEvents=[];this.outFlowEvents=[];this.subSlices=[];this.selfTime=undefined;this.cpuSelfTime=undefined;this.important=false;this.parentContainer=undefined;this.argsStripped=false;this.bind_id_=opt_bindId;this.parentSlice=undefined;this.isTopLevel=false;if(opt_duration!==undefined){this.duration=opt_duration;}\nif(opt_cpuStart!==undefined){this.cpuStart=opt_cpuStart;}\nif(opt_cpuDuration!==undefined){this.cpuDuration=opt_cpuDuration;}\nif(opt_argsStripped!==undefined){this.argsStripped=true;}}\nSlice.prototype={__proto__:tr.model.TimedEvent.prototype,get analysisTypeName(){return this.title;},get userFriendlyName(){return'Slice '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){const parentSliceGroup=this.parentContainer.sliceGroup;return parentSliceGroup.stableId+'.'+\nparentSliceGroup.slices.indexOf(this);},get bindId(){return this.bind_id_;},findDescendentSlice(targetTitle){if(!this.subSlices){return undefined;}\nfor(let i=0;i<this.subSlices.length;i++){if(this.subSlices[i].title===targetTitle){return this.subSlices[i];}\nconst slice=this.subSlices[i].findDescendentSlice(targetTitle);if(slice)return slice;}\nreturn undefined;},get mostTopLevelSlice(){if(!this.parentSlice)return this;return this.parentSlice.mostTopLevelSlice;},getProcess(){const thread=this.parentContainer;if(thread&&thread.getProcess){return thread.getProcess();}\nreturn undefined;},get model(){const process=this.getProcess();if(process!==undefined){return this.getProcess().model;}\nreturn undefined;},*findTopmostSlicesRelativeToThisSlice(eventPredicate){if(eventPredicate(this)){yield this;return;}\nfor(const s of this.subSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},iterateAllSubsequentSlices(callback,opt_this){const parentStack=[];let started=false;const topmostSlice=this.mostTopLevelSlice;parentStack.push(topmostSlice);while(parentStack.length!==0){const curSlice=parentStack.pop();if(started){callback.call(opt_this,curSlice);}else{started=(curSlice.guid===this.guid);}\nfor(let i=curSlice.subSlices.length-1;i>=0;i--){parentStack.push(curSlice.subSlices[i]);}}},get subsequentSlices(){const res=[];this.iterateAllSubsequentSlices(function(subseqSlice){res.push(subseqSlice);});return res;},*enumerateAllAncestors(){let curSlice=this.parentSlice;while(curSlice){yield curSlice;curSlice=curSlice.parentSlice;}},get ancestorSlices(){return Array.from(this.enumerateAllAncestors());},iterateEntireHierarchy(callback,opt_this){const mostTopLevelSlice=this.mostTopLevelSlice;callback.call(opt_this,mostTopLevelSlice);mostTopLevelSlice.iterateAllSubsequentSlices(callback,opt_this);},get entireHierarchy(){const res=[];this.iterateEntireHierarchy(function(slice){res.push(slice);});return res;},get ancestorAndSubsequentSlices(){const res=[];res.push(this);for(const aSlice of this.enumerateAllAncestors()){res.push(aSlice);}\nthis.iterateAllSubsequentSlices(function(sSlice){res.push(sSlice);});return res;},*enumerateAllDescendents(){for(const slice of this.subSlices){yield slice;}\nfor(const slice of this.subSlices){yield*slice.enumerateAllDescendents();}},get descendentSlices(){const res=[];for(const slice of this.enumerateAllDescendents()){res.push(slice);}\nreturn res;}};return{Slice,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;const SCHEDULING_STATE={DEBUG:'Debug',EXIT_DEAD:'Exit Dead',RUNNABLE:'Runnable',RUNNING:'Running',SLEEPING:'Sleeping',STOPPED:'Stopped',TASK_DEAD:'Task Dead',UNINTR_SLEEP:'Uninterruptible Sleep',UNINTR_SLEEP_WAKE_KILL:'Uninterruptible Sleep | WakeKill',UNINTR_SLEEP_WAKING:'Uninterruptible Sleep | Waking',UNINTR_SLEEP_IO:'Uninterruptible Sleep - Block I/O',UNINTR_SLEEP_WAKE_KILL_IO:'Uninterruptible Sleep | WakeKill - Block I/O',UNINTR_SLEEP_WAKING_IO:'Uninterruptible Sleep | Waking - Block I/O',UNKNOWN:'UNKNOWN',WAKE_KILL:'Wakekill',WAKING:'Waking',ZOMBIE:'Zombie'};function ThreadTimeSlice(thread,schedulingState,cat,start,args,opt_duration){Slice.call(this,cat,schedulingState,this.getColorForState_(schedulingState),start,args,opt_duration);this.thread=thread;this.schedulingState=schedulingState;this.cpuOnWhichThreadWasRunning=undefined;}\nThreadTimeSlice.prototype={__proto__:Slice.prototype,getColorForState_(state){const getColorIdForReservedName=tr.b.ColorScheme.getColorIdForReservedName;switch(state){case SCHEDULING_STATE.RUNNABLE:return getColorIdForReservedName('thread_state_runnable');case SCHEDULING_STATE.RUNNING:return getColorIdForReservedName('thread_state_running');case SCHEDULING_STATE.SLEEPING:return getColorIdForReservedName('thread_state_sleeping');case SCHEDULING_STATE.DEBUG:case SCHEDULING_STATE.EXIT_DEAD:case SCHEDULING_STATE.STOPPED:case SCHEDULING_STATE.TASK_DEAD:case SCHEDULING_STATE.UNINTR_SLEEP:case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL:case SCHEDULING_STATE.UNINTR_SLEEP_WAKING:case SCHEDULING_STATE.UNKNOWN:case SCHEDULING_STATE.WAKE_KILL:case SCHEDULING_STATE.WAKING:case SCHEDULING_STATE.ZOMBIE:return getColorIdForReservedName('thread_state_uninterruptible');case SCHEDULING_STATE.UNINTR_SLEEP_IO:case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO:case SCHEDULING_STATE.UNINTR_SLEEP_WAKING_IO:return getColorIdForReservedName('thread_state_iowait');default:return getColorIdForReservedName('thread_state_unknown');}},get analysisTypeName(){return'tr.ui.analysis.ThreadTimeSlice';},getAssociatedCpuSlice(){if(!this.cpuOnWhichThreadWasRunning)return undefined;const cpuSlices=this.cpuOnWhichThreadWasRunning.slices;for(let i=0;i<cpuSlices.length;i++){const cpuSlice=cpuSlices[i];if(cpuSlice.start!==this.start)continue;if(cpuSlice.duration!==this.duration)continue;return cpuSlice;}\nreturn undefined;},getCpuSliceThatTookCpu(){if(this.cpuOnWhichThreadWasRunning)return undefined;let curIndex=this.thread.indexOfTimeSlice(this);let cpuSliceWhenLastRunning;while(curIndex>=0){const curSlice=this.thread.timeSlices[curIndex];if(!curSlice.cpuOnWhichThreadWasRunning){curIndex--;continue;}\ncpuSliceWhenLastRunning=curSlice.getAssociatedCpuSlice();break;}\nif(!cpuSliceWhenLastRunning)return undefined;const cpu=cpuSliceWhenLastRunning.cpu;const indexOfSliceOnCpuWhenLastRunning=cpu.indexOf(cpuSliceWhenLastRunning);const nextRunningSlice=cpu.slices[indexOfSliceOnCpuWhenLastRunning+1];if(!nextRunningSlice)return undefined;if(Math.abs(nextRunningSlice.start-cpuSliceWhenLastRunning.end)<0.00001){return nextRunningSlice;}\nreturn undefined;}};tr.model.EventRegistry.register(ThreadTimeSlice,{name:'threadTimeSlice',pluralName:'threadTimeSlices'});return{ThreadTimeSlice,SCHEDULING_STATE,};});'use strict';tr.exportTo('tr.model',function(){const CompoundEventSelectionState={NOT_SELECTED:0,EVENT_SELECTED:0x1,SOME_ASSOCIATED_EVENTS_SELECTED:0x2,ALL_ASSOCIATED_EVENTS_SELECTED:0x4,EVENT_AND_SOME_ASSOCIATED_SELECTED:0x1|0x2,EVENT_AND_ALL_ASSOCIATED_SELECTED:0x1|0x4};return{CompoundEventSelectionState,};});'use strict';tr.exportTo('tr.model.um',function(){const CompoundEventSelectionState=tr.model.CompoundEventSelectionState;function UserExpectation(parentModel,initiatorType,start,duration){tr.model.TimedEvent.call(this,start);this.associatedEvents=new tr.model.EventSet();this.duration=duration;this.initiatorType_=initiatorType;this.parentModel=parentModel;this.typeInfo_=undefined;this.sourceEvents=new tr.model.EventSet();}\nconst INITIATOR_TYPE={KEYBOARD:'Keyboard',MOUSE:'Mouse',MOUSE_WHEEL:'MouseWheel',TAP:'Tap',PINCH:'Pinch',FLING:'Fling',TOUCH:'Touch',SCROLL:'Scroll',CSS:'CSS',WEBGL:'WebGL',VIDEO:'Video',VR:'VR',};UserExpectation.prototype={__proto__:tr.model.TimedEvent.prototype,computeCompoundEvenSelectionState(selection){let cess=CompoundEventSelectionState.NOT_SELECTED;if(selection.contains(this)){cess|=CompoundEventSelectionState.EVENT_SELECTED;}\nif(this.associatedEvents.intersectionIsEmpty(selection)){return cess;}\nconst allContained=this.associatedEvents.every(function(event){return selection.contains(event);});if(allContained){cess|=CompoundEventSelectionState.ALL_ASSOCIATED_EVENTS_SELECTED;}else{cess|=CompoundEventSelectionState.SOME_ASSOCIATED_EVENTS_SELECTED;}\nreturn cess;},get associatedSamples(){const samples=new tr.model.EventSet();this.associatedEvents.forEach(function(event){if(event instanceof tr.model.ThreadSlice){samples.addEventSet(event.overlappingSamples);}});return samples;},get userFriendlyName(){return this.title+' User Expectation at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){return('UserExpectation.'+this.guid);},get typeInfo(){if(!this.typeInfo_){this.typeInfo_=UserExpectation.subTypes.findTypeInfo(this.constructor);}\nif(!this.typeInfo_){throw new Error('Unregistered UserExpectation');}\nreturn this.typeInfo_;},get colorId(){return this.typeInfo.metadata.colorId;},get stageTitle(){return this.typeInfo.metadata.stageTitle;},get initiatorType(){return this.initiatorType_;},get title(){if(!this.initiatorType){return this.stageTitle;}\nreturn this.initiatorType+' '+this.stageTitle;},get totalCpuMs(){let cpuMs=0;this.associatedEvents.forEach(function(event){if(event.cpuSelfTime){cpuMs+=event.cpuSelfTime;}});return cpuMs;}};const subTypes={};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(subTypes,options);subTypes.addEventListener('will-register',function(e){const metadata=e.typeInfo.metadata;if(metadata.stageTitle===undefined){throw new Error('Registered UserExpectations must provide '+'stageTitle');}\nif(metadata.colorId===undefined){throw new Error('Registered UserExpectations must provide '+'colorId');}});tr.model.EventRegistry.register(UserExpectation,{name:'userExpectation',pluralName:'userExpectations',subTypes});return{UserExpectation,INITIATOR_TYPE,};});'use strict';tr.exportTo('tr.model.um',function(){function ResponseExpectation(parentModel,initiatorTitle,start,duration,opt_isAnimationBegin){tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.isAnimationBegin=opt_isAnimationBegin||false;}\nResponseExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:ResponseExpectation};tr.model.um.UserExpectation.subTypes.register(ResponseExpectation,{stageTitle:'Response',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_response')});return{ResponseExpectation,};});'use strict';tr.exportTo('tr.e.audits',function(){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;const Auditor=tr.c.Auditor;const AndroidModelHelper=tr.model.helpers.AndroidModelHelper;const ColorScheme=tr.b.ColorScheme;const Statistics=tr.b.math.Statistics;const FRAME_PERF_CLASS=tr.model.FRAME_PERF_CLASS;const Alert=tr.model.Alert;const EventInfo=tr.model.EventInfo;const Scalar=tr.b.Scalar;const timeDurationInMs=tr.b.Unit.byName.timeDurationInMs;const EXPECTED_FRAME_TIME_MS=16.67;function getStart(e){return e.start;}\nfunction getDuration(e){return e.duration;}\nfunction getCpuDuration(e){return(e.cpuDuration!==undefined)?e.cpuDuration:e.duration;}\nfunction frameIsActivityStart(frame){return frame.associatedEvents.any(x=>x.title==='activityStart');}\nfunction frameMissedDeadline(frame){return frame.args.deadline&&frame.args.deadline<frame.end;}\nfunction DocLinkBuilder(){this.docLinks=[];}\nDocLinkBuilder.prototype={addAppVideo(name,videoId){this.docLinks.push({label:'Video Link',textContent:('Android Performance Patterns: '+name),href:'https://www.youtube.com/watch?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE&v='+videoId});return this;},addDacRef(name,link){this.docLinks.push({label:'Doc Link',textContent:(name+' documentation'),href:'https://developer.android.com/reference/'+link});return this;},build(){return this.docLinks;}};function AndroidAuditor(model){Auditor.call(this,model);const helper=model.getOrCreateHelper(AndroidModelHelper);if(helper.apps.length||helper.surfaceFlinger){this.helper=helper;}}\nAndroidAuditor.viewAlphaAlertInfo_=new EventInfo('Inefficient View alpha usage','Setting an alpha between 0 and 1 has significant performance costs, if one of the fast alpha paths is not used.',new DocLinkBuilder().addAppVideo('Hidden Cost of Transparency','wIy8g8yNhNk').addDacRef('View#setAlpha()','android/view/View.html#setAlpha(float)').build());AndroidAuditor.saveLayerAlertInfo_=new EventInfo('Expensive rendering with Canvas#saveLayer()','Canvas#saveLayer() incurs extremely high rendering cost. They disrupt the rendering pipeline when drawn, forcing a flush of drawing content. Instead use View hardware layers, or static Bitmaps. This enables the offscreen buffers to be reused in between frames, and avoids the disruptive render target switch.',new DocLinkBuilder().addAppVideo('Hidden Cost of Transparency','wIy8g8yNhNk').addDacRef('Canvas#saveLayerAlpha()','android/graphics/Canvas.html#saveLayerAlpha(android.graphics.RectF, int, int)').build());AndroidAuditor.getSaveLayerAlerts_=function(frame){const badAlphaRegEx=/^(.+) alpha caused (unclipped )?saveLayer (\\d+)x(\\d+)$/;const saveLayerRegEx=/^(unclipped )?saveLayer (\\d+)x(\\d+)$/;const ret=[];const events=[];frame.associatedEvents.forEach(function(slice){const match=badAlphaRegEx.exec(slice.title);if(match){const args={'view name':match[1],'width':parseInt(match[3]),'height':parseInt(match[4])};ret.push(new Alert(AndroidAuditor.viewAlphaAlertInfo_,slice.start,[slice],args));}else if(saveLayerRegEx.test(slice.title)){events.push(slice);}},this);if(events.length>ret.length){const unclippedSeen=Statistics.sum(events,function(slice){return saveLayerRegEx.exec(slice.title)[1]?1:0;});const clippedSeen=events.length-unclippedSeen;const earliestStart=Statistics.min(events,function(slice){return slice.start;});const args={'Unclipped saveLayer count (especially bad!)':unclippedSeen,'Clipped saveLayer count':clippedSeen};events.push(frame);ret.push(new Alert(AndroidAuditor.saveLayerAlertInfo_,earliestStart,events,args));}\nreturn ret;};AndroidAuditor.pathAlertInfo_=new EventInfo('Path texture churn','Paths are drawn with a mask texture, so when a path is modified / newly drawn, that texture must be generated and uploaded to the GPU. Ensure that you cache paths between frames and do not unnecessarily call Path#reset(). You can cut down on this cost by sharing Path object instances between drawables/views.');AndroidAuditor.getPathAlert_=function(frame){const uploadRegEx=/^Generate Path Texture$/;const events=frame.associatedEvents.filter(function(event){return event.title==='Generate Path Texture';});const start=Statistics.min(events,getStart);const duration=Statistics.sum(events,getDuration);if(duration<3)return undefined;events.push(frame);return new Alert(AndroidAuditor.pathAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.uploadAlertInfo_=new EventInfo('Expensive Bitmap uploads','Bitmaps that have been modified / newly drawn must be uploaded to the GPU. Since this is expensive if the total number of pixels uploaded is large, reduce the amount of Bitmap churn in this animation/context, per frame.');AndroidAuditor.getUploadAlert_=function(frame){const uploadRegEx=/^Upload (\\d+)x(\\d+) Texture$/;const events=[];let start=Number.POSITIVE_INFINITY;let duration=0;let pixelsUploaded=0;frame.associatedEvents.forEach(function(event){const match=uploadRegEx.exec(event.title);if(match){events.push(event);start=Math.min(start,event.start);duration+=event.duration;pixelsUploaded+=parseInt(match[1])*parseInt(match[2]);}});if(events.length===0||duration<3)return undefined;const mPixels=(pixelsUploaded/1000000).toFixed(2)+' million';const args={'Pixels uploaded':mPixels,'Time spent':new Scalar(timeDurationInMs,duration)};events.push(frame);return new Alert(AndroidAuditor.uploadAlertInfo_,start,events,args);};AndroidAuditor.ListViewInflateAlertInfo_=new EventInfo('Inflation during ListView recycling','ListView item recycling involved inflating views. Ensure your Adapter#getView() recycles the incoming View, instead of constructing a new one.');AndroidAuditor.ListViewBindAlertInfo_=new EventInfo('Inefficient ListView recycling/rebinding','ListView recycling taking too much time per frame. Ensure your Adapter#getView() binds data efficiently.');AndroidAuditor.getListViewAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='obtainView'||event.title==='setupListItem';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;let hasInflation=false;for(const event of events){if(event.findDescendentSlice('inflate')){hasInflation=true;}}\nconst start=Statistics.min(events,getStart);const args={'Time spent':new Scalar(timeDurationInMs,duration)};args['ListView items '+(hasInflation?'inflated':'rebound')]=events.length/2;const eventInfo=hasInflation?AndroidAuditor.ListViewInflateAlertInfo_:AndroidAuditor.ListViewBindAlertInfo_;events.push(frame);return new Alert(eventInfo,start,events,args);};AndroidAuditor.measureLayoutAlertInfo_=new EventInfo('Expensive measure/layout pass','Measure/Layout took a significant time, contributing to jank. Avoid triggering layout during animations.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').build());AndroidAuditor.getMeasureLayoutAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='measure'||event.title==='layout';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.measureLayoutAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.viewDrawAlertInfo_=new EventInfo('Long View#draw()','Recording the drawing commands of invalidated Views took a long time. Avoid significant work in View or Drawable custom drawing, especially allocations or drawing to Bitmaps.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getViewDrawAlert_=function(frame){let slice=undefined;for(const event of frame.associatedEvents){if(event.title==='getDisplayList'||event.title==='Record View#draw()'){slice=event;break;}}\nif(!slice||getCpuDuration(slice)<3)return undefined;return new Alert(AndroidAuditor.viewDrawAlertInfo_,slice.start,[slice,frame],{'Time spent':new Scalar(timeDurationInMs,getCpuDuration(slice))});};AndroidAuditor.blockingGcAlertInfo_=new EventInfo('Blocking Garbage Collection','Blocking GCs are caused by object churn, and made worse by having large numbers of objects in the heap. Avoid allocating objects during animations/scrolling, and recycle Bitmaps to avoid triggering garbage collection.',new DocLinkBuilder().addAppVideo('Garbage Collection in Android','pzfzz50W5Uo').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getBlockingGcAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='DVM Suspend'||event.title==='GC: Wait For Concurrent';});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.blockingGcAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.lockContentionAlertInfo_=new EventInfo('Lock contention','UI thread lock contention is caused when another thread holds a lock that the UI thread is trying to use. UI thread progress is blocked until the lock is released. Inspect locking done within the UI thread, and ensure critical sections are short.');AndroidAuditor.getLockContentionAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return/^Lock Contention on /.test(event.title);});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<1)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.lockContentionAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.schedulingAlertInfo_=new EventInfo('Scheduling delay','Work to produce this frame was descheduled for several milliseconds, contributing to jank. Ensure that code on the UI thread doesn\\'t block on work being done on other threads, and that background threads (doing e.g. network or bitmap loading) are running at android.os.Process#THREAD_PRIORITY_BACKGROUND or lower so they are less likely to interrupt the UI thread. These background threads should show up with a priority number of 130 or higher in the scheduling section under the Kernel process.');AndroidAuditor.getSchedulingAlert_=function(frame){let totalDuration=0;const totalStats={};for(const ttr of frame.threadTimeRanges){const stats=ttr.thread.getSchedulingStatsForRange(ttr.start,ttr.end);for(const[key,value]of Object.entries(stats)){if(!(key in totalStats)){totalStats[key]=0;}\ntotalStats[key]+=value;totalDuration+=value;}}\nif(!(SCHEDULING_STATE.RUNNING in totalStats)||totalDuration===0||totalDuration-totalStats[SCHEDULING_STATE.RUNNING]<3){return;}\nconst args={};for(const[key,value]of Object.entries(totalStats)){let newKey=key;if(key===SCHEDULING_STATE.RUNNABLE){newKey='Not scheduled, but runnable';}else if(key===SCHEDULING_STATE.UNINTR_SLEEP){newKey='Blocking I/O delay';}\nargs[newKey]=new Scalar(timeDurationInMs,value);}\nreturn new Alert(AndroidAuditor.schedulingAlertInfo_,frame.start,[frame],args);};AndroidAuditor.prototype={__proto__:Auditor.prototype,renameAndSort_(){this.model.kernel.important=false;this.model.getAllProcesses().forEach(function(process){if(this.helper.surfaceFlinger&&process===this.helper.surfaceFlinger.process){if(!process.name){process.name='SurfaceFlinger';}\nprocess.sortIndex=Number.NEGATIVE_INFINITY;process.important=false;return;}\nconst uiThread=process.getThread(process.pid);if(!process.name&&uiThread&&uiThread.name){if(/^ndroid\\./.test(uiThread.name)){uiThread.name='a'+uiThread.name;}\nprocess.name=uiThread.name;uiThread.name='UI Thread';}\nprocess.sortIndex=0;for(const tid in process.threads){process.sortIndex-=process.threads[tid].sliceGroup.slices.length;}},this);this.model.getAllThreads().forEach(function(thread){if(thread.tid===thread.parent.pid){thread.sortIndex=-3;}\nif(thread.name==='RenderThread'){thread.sortIndex=-2;}\nif(/^hwuiTask/.test(thread.name)){thread.sortIndex=-1;}});},pushFramesAndJudgeJank_(){let badFramesObserved=0;let framesObserved=0;const surfaceFlinger=this.helper.surfaceFlinger;this.helper.apps.forEach(function(app){app.process.frames=app.getFrames();app.process.frames.forEach(function(frame){if(frame.totalDuration>EXPECTED_FRAME_TIME_MS*2){badFramesObserved+=2;frame.perfClass=FRAME_PERF_CLASS.TERRIBLE;}else if(frame.totalDuration>EXPECTED_FRAME_TIME_MS||frameMissedDeadline(frame)){badFramesObserved++;frame.perfClass=FRAME_PERF_CLASS.BAD;}else{frame.perfClass=FRAME_PERF_CLASS.GOOD;}});framesObserved+=app.process.frames.length;});if(framesObserved){const portionBad=badFramesObserved/framesObserved;if(portionBad>0.3){this.model.faviconHue='red';}else if(portionBad>0.05){this.model.faviconHue='yellow';}else{this.model.faviconHue='green';}}},pushEventInfo_(){const appAnnotator=new AppAnnotator();this.helper.apps.forEach(function(app){if(app.uiThread){appAnnotator.applyEventInfos(app.uiThread.sliceGroup);}\nif(app.renderThread){appAnnotator.applyEventInfos(app.renderThread.sliceGroup);}});},runAnnotate(){if(!this.helper)return;this.renameAndSort_();this.pushFramesAndJudgeJank_();this.pushEventInfo_();this.helper.iterateImportantSlices(function(slice){slice.important=true;});},runAudit(){if(!this.helper)return;const alerts=this.model.alerts;this.helper.apps.forEach(function(app){app.getFrames().forEach(function(frame){alerts.push.apply(alerts,AndroidAuditor.getSaveLayerAlerts_(frame));if(frame.perfClass===FRAME_PERF_CLASS.NEUTRAL||frame.perfClass===FRAME_PERF_CLASS.GOOD){return;}\nlet alert=AndroidAuditor.getPathAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getUploadAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getListViewAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getMeasureLayoutAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getViewDrawAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getBlockingGcAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getLockContentionAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getSchedulingAlert_(frame);if(alert)alerts.push(alert);});},this);this.addRenderingInteractionRecords();this.addInputInteractionRecords();},addRenderingInteractionRecords(){const events=[];this.helper.apps.forEach(function(app){events.push.apply(events,app.getAnimationAsyncSlices());events.push.apply(events,app.getFrames());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Rendering',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(events),30,mergerFunction);},addInputInteractionRecords(){const inputSamples=[];this.helper.apps.forEach(function(app){inputSamples.push.apply(inputSamples,app.getInputSamples());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Input',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);const inputRanges=inputSamples.map(function(sample){return tr.b.math.Range.fromExplicitRange(sample.timestamp,sample.timestamp);});tr.b.math.mergeRanges(inputRanges,30,mergerFunction);}};Auditor.register(AndroidAuditor);function AppAnnotator(){this.titleInfoLookup=new Map();this.titleParentLookup=new Map();this.build_();}\nAppAnnotator.prototype={build_(){const registerEventInfo=function(dict){this.titleInfoLookup.set(dict.title,new EventInfo(dict.title,dict.description,dict.docLinks));if(dict.parents){this.titleParentLookup.set(dict.title,dict.parents);}}.bind(this);registerEventInfo({title:'inflate',description:'Constructing a View hierarchy from pre-processed XML via LayoutInflater#layout. This includes constructing all of the View objects in the hierarchy, and applying styled attributes.'});registerEventInfo({title:'obtainView',description:'Adapter#getView() called to bind content to a recycled View that is being presented.'});registerEventInfo({title:'setupListItem',description:'Attached a newly-bound, recycled View to its parent ListView.'});registerEventInfo({title:'setupGridItem',description:'Attached a newly-bound, recycled View to its parent GridView.'});const choreographerLinks=new DocLinkBuilder().addDacRef('Choreographer','android/view/Choreographer.html').build();registerEventInfo({title:'Choreographer#doFrame',docLinks:choreographerLinks,description:'Choreographer executes frame callbacks for inputs, animations, and rendering traversals. When this work is done, a frame will be presented to the user.'});registerEventInfo({title:'input',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Input callbacks are processed. This generally encompasses dispatching input to Views, as well as any work the Views do to process this input/gesture.'});registerEventInfo({title:'animation',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Animation callbacks are processed. This is generally minimal work, as animations determine progress for the frame, and push new state to animated objects (such as setting View properties).'});registerEventInfo({title:'traversals',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Primary draw traversals. This is the primary traversal of the View hierarchy, including layout and draw passes.'});const traversalParents=['Choreographer#doFrame','performTraversals'];const layoutLinks=new DocLinkBuilder().addDacRef('View#Layout','android/view/View.html#Layout').build();registerEventInfo({title:'performTraversals',description:'A drawing traversal of the View hierarchy, comprised of all layout and drawing needed to produce the frame.'});registerEventInfo({title:'measure',parents:traversalParents,docLinks:layoutLinks,description:'First of two phases in view hierarchy layout. Views are asked to size themselves according to constraints supplied by their parent. Some ViewGroups may measure a child more than once to help satisfy their own constraints. Nesting ViewGroups that measure children more than once can lead to excessive and repeated work.'});registerEventInfo({title:'layout',parents:traversalParents,docLinks:layoutLinks,description:'Second of two phases in view hierarchy layout, repositioning content and child Views into their new locations.'});const drawString='Draw pass over the View hierarchy. Every invalidated View will have its drawing commands recorded. On Android versions prior to Lollipop, this would also include the issuing of draw commands to the GPU. Starting with Lollipop, it only includes the recording of commands, and syncing that information to the RenderThread.';registerEventInfo({title:'draw',parents:traversalParents,description:drawString});const recordString='Every invalidated View\\'s drawing commands are recorded. Each will have View#draw() called, and is passed a Canvas that will record and store its drawing commands until it is next invalidated/rerecorded.';registerEventInfo({title:'getDisplayList',parents:['draw'],description:recordString});registerEventInfo({title:'Record View#draw()',parents:['draw'],description:recordString});registerEventInfo({title:'drawDisplayList',parents:['draw'],description:'Execution of recorded draw commands to generate a frame. This represents the actual formation and issuing of drawing commands to the GPU. On Android L and higher devices, this work is done on a dedicated RenderThread, instead of on the UI Thread.'});registerEventInfo({title:'DrawFrame',description:'RenderThread portion of the standard UI/RenderThread split frame. This represents the actual formation and issuing of drawing commands to the GPU.'});registerEventInfo({title:'doFrame',description:'RenderThread animation frame. Represents drawing work done by the RenderThread on a frame where the UI thread did not produce new drawing content.'});registerEventInfo({title:'syncFrameState',description:'Sync stage between the UI thread and the RenderThread, where the UI thread hands off a frame (including information about modified Views). Time in this method primarily consists of uploading modified Bitmaps to the GPU. After this sync is completed, the UI thread is unblocked, and the RenderThread starts to render the frame.'});registerEventInfo({title:'flush drawing commands',description:'Issuing the now complete drawing commands to the GPU.'});registerEventInfo({title:'eglSwapBuffers',description:'Complete GPU rendering of the frame.'});registerEventInfo({title:'RV Scroll',description:'RecyclerView is calculating a scroll. If there are too many of these in Systrace, some Views inside RecyclerView might be causing it. Try to avoid using EditText, focusable views or handle them with care.'});registerEventInfo({title:'RV OnLayout',description:'OnLayout has been called by the View system. If this shows up too many times in Systrace, make sure the children of RecyclerView do not update themselves directly. This will cause a full re-layout but when it happens via the Adapter notifyItemChanged, RecyclerView can avoid full layout calculation.'});registerEventInfo({title:'RV FullInvalidate',description:'NotifyDataSetChanged or equal has been called. If this is taking a long time, try sending granular notify adapter changes instead of just calling notifyDataSetChanged or setAdapter / swapAdapter. Adding stable ids to your adapter might help.'});registerEventInfo({title:'RV PartialInvalidate',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV OnBindView',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV CreateView',description:'RecyclerView is creating a new View. If too many of these are present: 1) There might be a problem in Recycling (e.g. custom Animations that set transient state and prevent recycling or ItemAnimator not implementing the contract properly. See Adapter#onFailedToRecycleView(ViewHolder). 2) There may be too many item view types. Try merging them. 3) There might be too many itemChange animations and not enough space in RecyclerPool. Try increasing your pool size and item cache size.'});registerEventInfo({title:'eglSwapBuffers',description:'The CPU has finished producing drawing commands, and is flushing drawing work to the GPU, and posting that buffer to the consumer (which is often SurfaceFlinger window composition). Once this is completed, the GPU can produce the frame content without any involvement from the CPU.'});},applyEventInfosRecursive_(parentNames,slice){const checkExpectedParentNames=function(expectedParentNames){if(!expectedParentNames)return true;return expectedParentNames.some(function(name){return parentNames.has(name);});};if(this.titleInfoLookup.has(slice.title)){if(checkExpectedParentNames(this.titleParentLookup.get(slice.title))){slice.info=this.titleInfoLookup.get(slice.title);}}\nif(slice.subSlices.length>0){if(!parentNames.has(slice.title)){parentNames.set(slice.title,0);}\nparentNames.set(slice.title,parentNames.get(slice.title)+1);slice.subSlices.forEach(function(subSlice){this.applyEventInfosRecursive_(parentNames,subSlice);},this);parentNames.set(slice.title,parentNames.get(slice.title)-1);if(parentNames.get(slice.title)===0){delete parentNames[slice.title];}}},applyEventInfos(sliceGroup){sliceGroup.topLevelSlices.forEach(function(slice){this.applyEventInfosRecursive_(new Map(),slice);},this);}};return{AndroidAuditor,};});'use strict';tr.exportTo('tr.model',function(){function ObjectSnapshot(objectInstance,ts,args){tr.model.Event.call(this);this.objectInstance=objectInstance;this.ts=ts;this.args=args;}\nObjectSnapshot.prototype={__proto__:tr.model.Event.prototype,preInitialize(){},initialize(){},referencedAt(item,object,field){},addBoundsToRange(range){range.addValue(this.ts);},get userFriendlyName(){return'Snapshot of '+this.objectInstance.userFriendlyName+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(this.ts);}};tr.model.EventRegistry.register(ObjectSnapshot,{name:'objectSnapshot',pluralName:'objectSnapshots'});return{ObjectSnapshot,};});'use strict';tr.exportTo('tr.model',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectInstance(parent,scopedId,category,name,creationTs,opt_baseTypeName){tr.model.Event.call(this);this.parent=parent;this.scopedId=scopedId;this.category=category;this.baseTypeName=opt_baseTypeName?opt_baseTypeName:name;this.name=name;this.creationTs=creationTs;this.creationTsWasExplicit=false;this.deletionTs=Number.MAX_VALUE;this.deletionTsWasExplicit=false;this.colorId=0;this.bounds=new tr.b.math.Range();this.snapshots=[];this.hasImplicitSnapshots=false;}\nObjectInstance.prototype={__proto__:tr.model.Event.prototype,get typeName(){return this.name;},addBoundsToRange(range){range.addRange(this.bounds);},addSnapshot(ts,args,opt_name,opt_baseTypeName){if(ts<this.creationTs){throw new Error('Snapshots must be >= instance.creationTs');}\nif(ts>=this.deletionTs){throw new Error('Snapshots cannot be added after '+'an objects deletion timestamp.');}\nlet lastSnapshot;if(this.snapshots.length>0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts===ts){throw new Error('Snapshots already exists at this time!');}\nif(ts<lastSnapshot.ts){throw new Error('Snapshots must be added in increasing timestamp order');}}\nif(opt_name&&(this.name!==opt_name)){if(!opt_baseTypeName){throw new Error('Must provide base type name for name update');}\nif(this.baseTypeName!==opt_baseTypeName){throw new Error('Cannot update type name: base types dont match');}\nthis.name=opt_name;}\nconst snapshotConstructor=tr.model.ObjectSnapshot.subTypes.getConstructor(this.category,this.name);const snapshot=new snapshotConstructor(this,ts,args);this.snapshots.push(snapshot);return snapshot;},wasDeleted(ts){let lastSnapshot;if(this.snapshots.length>0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts>ts){throw new Error('Instance cannot be deleted at ts='+\nts+'. A snapshot exists that is older.');}}\nthis.deletionTs=ts;this.deletionTsWasExplicit=true;},preInitialize(){for(let i=0;i<this.snapshots.length;i++){this.snapshots[i].preInitialize();}},initialize(){for(let i=0;i<this.snapshots.length;i++){this.snapshots[i].initialize();}},isAliveAt(ts){if(ts<this.creationTs&&this.creationTsWasExplicit){return false;}\nif(ts>this.deletionTs){return false;}\nreturn true;},getSnapshotAt(ts){if(ts<this.creationTs){if(this.creationTsWasExplicit){throw new Error('ts must be within lifetime of this instance');}\nreturn this.snapshots[0];}\nif(ts>this.deletionTs){throw new Error('ts must be within lifetime of this instance');}\nconst snapshots=this.snapshots;const i=tr.b.findIndexInSortedIntervals(snapshots,function(snapshot){return snapshot.ts;},function(snapshot,i){if(i===snapshots.length-1){return snapshots[i].objectInstance.deletionTs;}\nreturn snapshots[i+1].ts-snapshots[i].ts;},ts);if(i<0){return this.snapshots[0];}\nif(i>=this.snapshots.length){return this.snapshots[this.snapshots.length-1];}\nreturn this.snapshots[i];},updateBounds(){this.bounds.reset();this.bounds.addValue(this.creationTs);if(this.deletionTs!==Number.MAX_VALUE){this.bounds.addValue(this.deletionTs);}else if(this.snapshots.length>0){this.bounds.addValue(this.snapshots[this.snapshots.length-1].ts);}},shiftTimestampsForward(amount){this.creationTs+=amount;if(this.deletionTs!==Number.MAX_VALUE){this.deletionTs+=amount;}\nthis.snapshots.forEach(function(snapshot){snapshot.ts+=amount;});},get userFriendlyName(){return this.typeName+' object '+this.scopedId;}};tr.model.EventRegistry.register(ObjectInstance,{name:'objectInstance',pluralName:'objectInstances'});return{ObjectInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function BlameContextSnapshot(){ObjectSnapshot.apply(this,arguments);}\nBlameContextSnapshot.prototype={__proto__:ObjectSnapshot.prototype,get parentContext(){if(this.args.parent instanceof BlameContextSnapshot){return this.args.parent;}\nreturn undefined;},get userFriendlyName(){return'BlameContext';}};function BlameContextInstance(){ObjectInstance.apply(this,arguments);}\nBlameContextInstance.prototype={__proto__:ObjectInstance.prototype,get blameContextType(){throw new Error('Not implemented');}};return{BlameContextSnapshot,BlameContextInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function FrameTreeNodeSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nFrameTreeNodeSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get renderFrame(){if(this.args.renderFrame instanceof tr.e.chrome.RenderFrameSnapshot){return this.args.renderFrame;}\nreturn undefined;},get url(){return this.args.url;},get userFriendlyName(){return'FrameTreeNode';}};tr.model.ObjectSnapshot.subTypes.register(FrameTreeNodeSnapshot,{typeName:'FrameTreeNode'});function FrameTreeNodeInstance(){BlameContextInstance.apply(this,arguments);}\nFrameTreeNodeInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(FrameTreeNodeInstance,{typeName:'FrameTreeNode'});return{FrameTreeNodeSnapshot,FrameTreeNodeInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function RenderFrameSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nRenderFrameSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,referencedAt(item,object,field){if(item instanceof tr.e.chrome.FrameTreeNodeSnapshot&&object===item.args&&field==='renderFrame'){this.args.frameTreeNode=item;}},get frameTreeNode(){if(this.args.frameTreeNode instanceof\ntr.e.chrome.FrameTreeNodeSnapshot){return this.args.frameTreeNode;}\nreturn undefined;},get url(){if(this.frameTreeNode){return this.frameTreeNode.url;}\nreturn undefined;},get userFriendlyName(){return'RenderFrame';}};tr.model.ObjectSnapshot.subTypes.register(RenderFrameSnapshot,{typeName:'RenderFrame'});function RenderFrameInstance(){BlameContextInstance.apply(this,arguments);}\nRenderFrameInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(RenderFrameInstance,{typeName:'RenderFrame'});return{RenderFrameSnapshot,RenderFrameInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function TopLevelSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nTopLevelSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get userFriendlyName(){return'TopLevel';}};tr.model.ObjectSnapshot.subTypes.register(TopLevelSnapshot,{typeName:'TopLevel'});function TopLevelInstance(){BlameContextInstance.apply(this,arguments);}\nTopLevelInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'TopLevel';}};tr.model.ObjectInstance.subTypes.register(TopLevelInstance,{typeName:'TopLevel'});return{TopLevelSnapshot,TopLevelInstance,};});'use strict';tr.exportTo('tr.model',function(){function AsyncSlice(category,title,colorId,start,args,duration,opt_isTopLevel,opt_cpuStart,opt_cpuDuration,opt_argsStripped){tr.model.TimedEvent.call(this,start);this.category=category||'';this.originalTitle=title;this.title=title;this.colorId=colorId;this.args=args;this.startStackFrame=undefined;this.endStackFrame=undefined;this.didNotFinish=false;this.important=false;this.subSlices=[];this.parentContainer_=undefined;this.id=undefined;this.startThread=undefined;this.endThread=undefined;this.cpuStart=undefined;this.cpuDuration=undefined;this.argsStripped=false;this.startStackFrame=undefined;this.endStackFrame=undefined;this.duration=duration;this.isTopLevel=(opt_isTopLevel===true);if(opt_cpuStart!==undefined){this.cpuStart=opt_cpuStart;}\nif(opt_cpuDuration!==undefined){this.cpuDuration=opt_cpuDuration;}\nif(opt_argsStripped!==undefined){this.argsStripped=opt_argsStripped;}}\nAsyncSlice.prototype={__proto__:tr.model.TimedEvent.prototype,get analysisTypeName(){return this.title;},get parentContainer(){return this.parentContainer_;},set parentContainer(parentContainer){this.parentContainer_=parentContainer;for(let i=0;i<this.subSlices.length;i++){const subSlice=this.subSlices[i];if(subSlice.parentContainer===undefined){subSlice.parentContainer=parentContainer;}}},get viewSubGroupTitle(){return this.title;},get viewSubGroupGroupingKey(){return undefined;},get userFriendlyName(){return'Async slice '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){const parentAsyncSliceGroup=this.parentContainer.asyncSliceGroup;return parentAsyncSliceGroup.stableId+'.'+\nparentAsyncSliceGroup.slices.indexOf(this);},*findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this){if(eventPredicate(this)){yield this;return;}\nfor(const s of this.subSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},findDescendentSlice(targetTitle){if(!this.subSlices)return undefined;for(let i=0;i<this.subSlices.length;i++){if(this.subSlices[i].title===targetTitle){return this.subSlices[i];}\nconst slice=this.subSlices[i].findDescendentSlice(targetTitle);if(slice)return slice;}\nreturn undefined;},*enumerateAllDescendents(){for(const slice of this.subSlices){yield slice;}\nfor(const slice of this.subSlices){if(slice.enumerateAllDescendents!==undefined){yield*slice.enumerateAllDescendents();}}},compareTo(that){return this.title.localeCompare(that.title);}};tr.model.EventRegistry.register(AsyncSlice,{name:'asyncSlice',pluralName:'asyncSlices'});return{AsyncSlice,};});'use strict';tr.exportTo('tr.e.blink',function(){class BlinkSchedulerAsyncSlice extends tr.model.AsyncSlice{get viewSubGroupGroupingKey(){if(this.title.startsWith('FrameScheduler.')){return'Frame'+this.id;}\nif(this.title.startsWith('Scheduler.')){return'Renderer Scheduler';}\nreturn undefined;}\nget viewSubGroupTitle(){if(this.title.startsWith('FrameScheduler.')){return this.title.substring(15);}\nif(this.title.startsWith('Scheduler.')){return this.title.substring(10);}\nreturn this.title;}}\ntr.model.AsyncSlice.subTypes.register(BlinkSchedulerAsyncSlice,{categoryParts:['renderer.scheduler','disabled-by-default-renderer.scheduler','disabled-by-default-renderer.scheduler.debug',]});return{BlinkSchedulerAsyncSlice,};});'use strict';tr.exportTo('tr.model.helpers',function(){const MAIN_FRAMETIME_TYPE='main_frametime_type';const IMPL_FRAMETIME_TYPE='impl_frametime_type';const MAIN_RENDERING_STATS='BenchmarkInstrumentation::MainThreadRenderingStats';const IMPL_RENDERING_STATS='BenchmarkInstrumentation::ImplThreadRenderingStats';function getSlicesIntersectingRange(rangeOfInterest,slices){const slicesInFilterRange=[];for(let i=0;i<slices.length;i++){const slice=slices[i];if(rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end)){slicesInFilterRange.push(slice);}}\nreturn slicesInFilterRange;}\nfunction ChromeProcessHelper(modelHelper,process){this.modelHelper=modelHelper;this.process=process;this.telemetryInternalRanges_=undefined;}\nChromeProcessHelper.prototype={get pid(){return this.process.pid;},isTelemetryInternalEvent(slice){if(this.telemetryInternalRanges_===undefined){this.findTelemetryInternalRanges_();}\nfor(const range of this.telemetryInternalRanges_){if(range.containsExplicitRangeInclusive(slice.start,slice.end)){return true;}}\nreturn false;},findTelemetryInternalRanges_(){this.telemetryInternalRanges_=[];let start=0;for(const thread of Object.values(this.process.threads)){for(const slice of thread.asyncSliceGroup.getDescendantEvents()){if(/^telemetry\\.internal\\..*\\.start$/.test(slice.title)){start=slice.start;}else if(/^telemetry\\.internal\\..*\\.end$/.test(slice.title)&&start!==undefined){this.telemetryInternalRanges_.push(tr.b.math.Range.fromExplicitRange(start,slice.end));start=undefined;}}}},getFrameEventsInRange(frametimeType,range){const titleToGet=(frametimeType===MAIN_FRAMETIME_TYPE?MAIN_RENDERING_STATS:IMPL_RENDERING_STATS);const frameEvents=[];for(const event of this.process.getDescendantEvents()){if(event.title===titleToGet){if(range.intersectsExplicitRangeInclusive(event.start,event.end)){frameEvents.push(event);}}}\nframeEvents.sort(function(a,b){return a.start-b.start;});return frameEvents;}};function getFrametimeDataFromEvents(frameEvents){const frametimeData=[];for(let i=1;i<frameEvents.length;i++){const diff=frameEvents[i].start-frameEvents[i-1].start;frametimeData.push({'x':frameEvents[i].start,'frametime':diff});}\nreturn frametimeData;}\nreturn{ChromeProcessHelper,MAIN_FRAMETIME_TYPE,IMPL_FRAMETIME_TYPE,MAIN_RENDERING_STATS,IMPL_RENDERING_STATS,getSlicesIntersectingRange,getFrametimeDataFromEvents,};});'use strict';tr.exportTo('tr.model.helpers',function(){function ChromeBrowserHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);this.mainThread_=process.findAtMostOneThreadNamed('CrBrowserMain');if(!process.name){process.name=ChromeBrowserHelper.PROCESS_NAME;}}\nChromeBrowserHelper.PROCESS_NAME='Browser';ChromeBrowserHelper.isBrowserProcess=function(process){return!!process.findAtMostOneThreadNamed('CrBrowserMain');};ChromeBrowserHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype,get browserName(){const hasInProcessRendererThread=this.process.findAllThreadsNamed('Chrome_InProcRendererThread').length>0;return hasInProcessRendererThread?'webview':'chrome';},get mainThread(){return this.mainThread_;},get rendererHelpers(){return this.modelHelper.rendererHelpers;},getLoadingEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title.indexOf('WebContentsImpl Loading')===0&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getCommitProvisionalLoadEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title==='RenderFrameImpl::didCommitProvisionalLoad'&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},get hasLatencyEvents(){let hasLatency=false;for(const thread of this.modelHelper.model.getAllThreads()){for(const event of thread.getDescendantEvents()){if(!event.isTopLevel)continue;if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){continue;}\nhasLatency=true;}}\nreturn hasLatency;},getLatencyEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return(slice.title.indexOf('InputLatency')===0)&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getAllAsyncSlicesMatching(pred,opt_this){const events=[];this.iterAllThreads(function(thread){for(const slice of thread.getDescendantEvents()){if(pred.call(opt_this,slice)){events.push(slice);}}});return events;},iterAllThreads(func,opt_this){for(const thread of Object.values(this.process.threads)){func.call(opt_this,thread);}\nfor(const rendererHelper of Object.values(this.rendererHelpers)){const rendererProcess=rendererHelper.process;for(const thread of Object.values(rendererProcess.threads)){func.call(opt_this,thread);}}}};return{ChromeBrowserHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function ChromeGpuHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);if(!process.name){process.name=ChromeGpuHelper.PROCESS_NAME;}}\nChromeGpuHelper.PROCESS_NAME='GPU Process';ChromeGpuHelper.isGpuProcess=function(process){if(process.findAtMostOneThreadNamed('CrBrowserMain')||process.findAtMostOneThreadNamed('CrRendererMain')){return false;}\nreturn process.findAllThreadsNamed('CrGpuMain').length>0;};ChromeGpuHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype};return{ChromeGpuHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const NET_CATEGORIES=new Set(['net','netlog','disabled-by-default-netlog','disabled-by-default-network']);class ChromeThreadHelper{constructor(thread){this.thread=thread;}\ngetNetworkEvents(){const networkEvents=[];for(const slice of this.thread.asyncSliceGroup.slices){const categories=tr.b.getCategoryParts(slice.category);const isNetEvent=category=>NET_CATEGORIES.has(category);if(categories.filter(isNetEvent).length===0)continue;networkEvents.push(slice);}\nreturn networkEvents;}}\nreturn{ChromeThreadHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const ChromeThreadHelper=tr.model.helpers.ChromeThreadHelper;function ChromeRendererHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);this.mainThread_=process.findAtMostOneThreadNamed('CrRendererMain')||process.findAtMostOneThreadNamed('Chrome_InProcRendererThread');this.compositorThread_=process.findAtMostOneThreadNamed('Compositor');this.rasterWorkerThreads_=process.findAllThreadsMatching(function(t){if(t.name===undefined)return false;if(t.name.startsWith('CompositorTileWorker'))return true;if(t.name.startsWith('CompositorRasterWorker'))return true;return false;});this.dedicatedWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('DedicatedWorker');});this.foregroundWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('ThreadPoolForegroundWorker');});if(!process.name){process.name=ChromeRendererHelper.PROCESS_NAME;}}\nChromeRendererHelper.PROCESS_NAME='Renderer';ChromeRendererHelper.isRenderProcess=function(process){if(process.findAtMostOneThreadNamed('CrRendererMain'))return true;if(process.findAtMostOneThreadNamed('Compositor'))return true;return false;};ChromeRendererHelper.isTracingProcess=function(process){return process.labels!==undefined&&process.labels.length===1&&process.labels[0]==='chrome://tracing';};ChromeRendererHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype,get mainThread(){return this.mainThread_;},get compositorThread(){return this.compositorThread_;},get rasterWorkerThreads(){return this.rasterWorkerThreads_;},get dedicatedWorkerThreads(){return this.dedicatedWorkerThreads_;},get foregroundWorkerThreads(){return this.foregroundWorkerThreads_;},get isChromeTracingUI(){return ChromeRendererHelper.isTracingProcess(this.process);},};return{ChromeRendererHelper,};});'use strict';tr.exportTo('tr.model.um',function(){class Segment extends tr.model.TimedEvent{constructor(start,duration){super(start);this.duration=duration;this.expectations_=[];}\nget expectations(){return this.expectations_;}\nclone(){const clone=new Segment(this.start,this.duration);clone.expectations.push(...this.expectations);return clone;}\naddSegment(other){this.duration+=other.duration;this.expectations.push(...other.expectations);}}\nreturn{Segment,};});'use strict';tr.exportTo('tr.model.helpers',function(){const GESTURE_EVENT='SyntheticGestureController::running';const IR_REG_EXP=/Interaction\\.([^/]+)(\\/[^/]*)?$/;const ChromeRendererHelper=tr.model.helpers.ChromeRendererHelper;class TelemetryHelper{constructor(modelHelper){this.modelHelper=modelHelper;this.renderersWithIR_=undefined;this.irSegments_=undefined;this.uiSegments_=undefined;this.animationSegments_=undefined;}\nget renderersWithIR(){this.findIRs_();return this.renderersWithIR_;}\nget irSegments(){this.findIRs_();return this.irSegments_;}\nget uiSegments(){this.findIRs_();return this.uiSegments_;}\nget animationSegments(){if(this.animationSegments_===undefined){const model=this.modelHelper.model;this.animationSegments_=model.userModel.segments.filter(segment=>segment.expectations.find(ue=>ue instanceof tr.model.um.AnimationExpectation));this.animationSegments_.sort((x,y)=>x.start-y.start);}\nreturn this.animationSegments_;}\nfindIRs_(){if(this.irSegments_!==undefined)return;this.renderersWithIR_=[];const gestureEvents=[];const interactionRecords=[];const processes=Object.values(this.modelHelper.rendererHelpers).concat(this.modelHelper.browserHelpers).map(processHelper=>processHelper.process);for(const process of processes){let foundIR=false;for(const thread of Object.values(process.threads)){for(const slice of thread.asyncSliceGroup.slices){if(slice.title===GESTURE_EVENT){gestureEvents.push(slice);}else if(IR_REG_EXP.test(slice.title)){interactionRecords.push(slice);foundIR=true;}}}\nif(foundIR&&ChromeRendererHelper.isRenderProcess(process)&&!ChromeRendererHelper.isTracingProcess(process)){this.renderersWithIR_.push(new ChromeRendererHelper(this.modelHelper,process));}}\nthis.irSegments_=[];this.uiSegments_=[];for(const ir of interactionRecords){const parts=IR_REG_EXP.exec(ir.title);let gestureEventFound=false;if(parts[1].startsWith('Gesture_')){for(const gestureEvent of gestureEvents){if(ir.boundsRange.intersectsRangeInclusive(gestureEvent.boundsRange)){this.irSegments_.push(new tr.model.um.Segment(gestureEvent.start,gestureEvent.duration));gestureEventFound=true;break;}}}else if(parts[1].startsWith('ui_')){this.uiSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}\nif(!gestureEventFound){this.irSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}}\nthis.irSegments_.sort((x,y)=>x.start-y.start);this.uiSegments_.sort((x,y)=>x.start-y.start);}}\nreturn{TelemetryHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function findChromeBrowserProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeBrowserHelper.isBrowserProcess);}\nfunction findChromeRenderProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeRendererHelper.isRenderProcess);}\nfunction findChromeGpuProcess(model){const gpuProcesses=model.getAllProcesses(tr.model.helpers.ChromeGpuHelper.isGpuProcess);if(gpuProcesses.length!==1)return undefined;return gpuProcesses[0];}\nfunction findTelemetrySurfaceFlingerProcess(model){const surfaceFlingerProcesses=model.getAllProcesses(process=>(process.name==='SurfaceFlinger'));if(surfaceFlingerProcesses.length!==1)return undefined;return surfaceFlingerProcesses[0];}\nfunction ChromeModelHelper(model){this.model_=model;const browserProcesses=findChromeBrowserProcesses(model);this.browserHelpers_=browserProcesses.map(p=>new tr.model.helpers.ChromeBrowserHelper(this,p));const gpuProcess=findChromeGpuProcess(model);if(gpuProcess){this.gpuHelper_=new tr.model.helpers.ChromeGpuHelper(this,gpuProcess);}else{this.gpuHelper_=undefined;}\nconst rendererProcesses_=findChromeRenderProcesses(model);this.rendererHelpers_={};rendererProcesses_.forEach(function(renderProcess){const rendererHelper=new tr.model.helpers.ChromeRendererHelper(this,renderProcess);this.rendererHelpers_[rendererHelper.pid]=rendererHelper;},this);this.surfaceFlingerProcess_=findTelemetrySurfaceFlingerProcess(model);this.chromeBounds_=undefined;this.telemetryHelper_=new tr.model.helpers.TelemetryHelper(this);}\nChromeModelHelper.guid=tr.b.GUID.allocateSimple();ChromeModelHelper.supportsModel=function(model){if(findChromeBrowserProcesses(model).length)return true;if(findChromeRenderProcesses(model).length)return true;return false;};ChromeModelHelper.prototype={get pid(){throw new Error('woah');},get process(){throw new Error('woah');},get model(){return this.model_;},get browserProcess(){if(this.browserHelper===undefined)return undefined;return this.browserHelper.process;},get browserHelper(){return this.browserHelpers_[0];},get browserHelpers(){return this.browserHelpers_;},get gpuHelper(){return this.gpuHelper_;},get rendererHelpers(){return this.rendererHelpers_;},get surfaceFlingerProcess(){return this.surfaceFlingerProcess_;},get chromeBounds(){if(!this.chromeBounds_){this.chromeBounds_=new tr.b.math.Range();for(const browserHelper of Object.values(this.browserHelpers)){this.chromeBounds_.addRange(browserHelper.process.bounds);}\nfor(const rendererHelper of Object.values(this.rendererHelpers)){this.chromeBounds_.addRange(rendererHelper.process.bounds);}\nif(this.gpuHelper){this.chromeBounds_.addRange(this.gpuHelper.process.bounds);}}\nif(this.chromeBounds_.isEmpty){return undefined;}\nreturn this.chromeBounds_;},get telemetryHelper(){return this.telemetryHelper_;}};return{ChromeModelHelper,};});'use strict';tr.exportTo('tr.e.cc',function(){const AsyncSlice=tr.model.AsyncSlice;const EventSet=tr.model.EventSet;const UI_COMP_NAME='INPUT_EVENT_LATENCY_UI_COMPONENT';const ORIGINAL_COMP_NAME='INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT';const BEGIN_COMP_NAME='INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT';const END_COMP_NAME='INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT';const LEGACY_END_COMP_NAME='INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT';const MAIN_RENDERER_THREAD_NAME='CrRendererMain';const COMPOSITOR_THREAD_NAME='Compositor';const OLD_IPC_FLOW_EVENT='disabled-by-default-ipc.flow';const OLD_POSTTASK_FLOW_EVENT='disabled-by-default-toplevel.flow';const NEW_POSTTASK_FLOW_EVENT='toplevel.flow';const INPUT_EVENT_TYPE_NAMES={CHAR:'Char',CLICK:'GestureClick',CONTEXT_MENU:'ContextMenu',FLING_CANCEL:'GestureFlingCancel',FLING_START:'GestureFlingStart',KEY_DOWN:'KeyDown',KEY_DOWN_RAW:'RawKeyDown',KEY_UP:'KeyUp',LATENCY_SCROLL_UPDATE:'ScrollUpdate',MOUSE_DOWN:'MouseDown',MOUSE_ENTER:'MouseEnter',MOUSE_LEAVE:'MouseLeave',MOUSE_MOVE:'MouseMove',MOUSE_UP:'MouseUp',MOUSE_WHEEL:'MouseWheel',PINCH_BEGIN:'GesturePinchBegin',PINCH_END:'GesturePinchEnd',PINCH_UPDATE:'GesturePinchUpdate',SCROLL_BEGIN:'GestureScrollBegin',SCROLL_END:'GestureScrollEnd',SCROLL_UPDATE:'GestureScrollUpdate',SCROLL_UPDATE_RENDERER:'ScrollUpdate',SHOW_PRESS:'GestureShowPress',TAP:'GestureTap',TAP_CANCEL:'GestureTapCancel',TAP_DOWN:'GestureTapDown',TOUCH_CANCEL:'TouchCancel',TOUCH_END:'TouchEnd',TOUCH_MOVE:'TouchMove',TOUCH_START:'TouchStart',UNKNOWN:'UNKNOWN'};function InputLatencyAsyncSlice(){AsyncSlice.apply(this,arguments);this.associatedEvents_=new EventSet();this.typeName_=undefined;if(!this.isLegacyEvent){this.determineModernTypeName_();}}\nInputLatencyAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get isLegacyEvent(){return this.title==='InputLatency';},get typeName(){if(!this.typeName_){this.determineLegacyTypeName_();}\nreturn this.typeName_;},checkTypeName_(){if(!this.typeName_){throw new Error('Unable to determine typeName');}\nlet found=false;for(const typeName in INPUT_EVENT_TYPE_NAMES){if(this.typeName===INPUT_EVENT_TYPE_NAMES[typeName]){found=true;break;}}\nif(!found){this.typeName_=INPUT_EVENT_TYPE_NAMES.UNKNOWN;}},determineModernTypeName_(){const lastColonIndex=this.title.lastIndexOf(':');if(lastColonIndex<0)return;const characterAfterLastColonIndex=lastColonIndex+1;this.typeName_=this.title.slice(characterAfterLastColonIndex);this.checkTypeName_();},determineLegacyTypeName_(){for(const subSlice of this.enumerateAllDescendents()){const subSliceIsAInputLatencyAsyncSlice=(subSlice instanceof InputLatencyAsyncSlice);if(!subSliceIsAInputLatencyAsyncSlice)continue;if(!subSlice.typeName)continue;if(this.typeName_&&subSlice.typeName_){const subSliceHasDifferentTypeName=(this.typeName_!==subSlice.typeName_);if(subSliceHasDifferentTypeName){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() '+' found multiple typeNames');}}\nthis.typeName_=subSlice.typeName_;}\nif(!this.typeName_){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() failed');}\nthis.checkTypeName_();},getRendererHelper(sourceSlices){const traceModel=this.startThread.parent.model;const modelHelper=traceModel.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper)return undefined;let mainThread=undefined;let compositorThread=undefined;for(const i in sourceSlices){if(sourceSlices[i].parentContainer.name===MAIN_RENDERER_THREAD_NAME){mainThread=sourceSlices[i].parentContainer;}else if(sourceSlices[i].parentContainer.name===COMPOSITOR_THREAD_NAME){compositorThread=sourceSlices[i].parentContainer;}\nif(mainThread&&compositorThread)break;}\nconst rendererHelpers=modelHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(let i=0;i<pids.length;i++){const pid=pids[i];const rendererHelper=rendererHelpers[pid];if(rendererHelper.mainThread===mainThread||rendererHelper.compositorThread===compositorThread){return rendererHelper;}}\nreturn undefined;},addEntireSliceHierarchy(slice){this.associatedEvents_.push(slice);slice.iterateAllSubsequentSlices(function(subsequentSlice){this.associatedEvents_.push(subsequentSlice);},this);},addDirectlyAssociatedEvents(flowEvents){const slices=[];flowEvents.forEach(function(flowEvent){this.associatedEvents_.push(flowEvent);const newSource=flowEvent.startSlice.mostTopLevelSlice;if(slices.indexOf(newSource)===-1){slices.push(newSource);}},this);const lastFlowEvent=flowEvents[flowEvents.length-1];const lastSource=lastFlowEvent.endSlice.mostTopLevelSlice;if(slices.indexOf(lastSource)===-1){slices.push(lastSource);}\nreturn slices;},belongToOtherInputs(slice,flowEvents){let fromOtherInputs=false;slice.iterateEntireHierarchy(function(subsequentSlice){if(fromOtherInputs)return;subsequentSlice.inFlowEvents.forEach(function(inflow){if(fromOtherInputs)return;if(inflow.category.indexOf('input')>-1){if(flowEvents.indexOf(inflow)===-1){fromOtherInputs=true;}}},this);},this);return fromOtherInputs;},triggerOtherInputs(event,flowEvents){if(event.outFlowEvents===undefined||event.outFlowEvents.length===0){return false;}\nconst flow=event.outFlowEvents[0];const isPostTask=flow.category===NEW_POSTTASK_FLOW_EVENT||flow.category===OLD_POSTTASK_FLOW_EVENT;if(!isPostTask||!flow.endSlice){return false;}\nconst endSlice=flow.endSlice;if(this.belongToOtherInputs(endSlice.mostTopLevelSlice,flowEvents)){return true;}\nreturn false;},followSubsequentSlices(event,queue,visited,flowEvents){let stopFollowing=false;let inputAck=false;event.iterateAllSubsequentSlices(function(slice){if(stopFollowing)return;if(slice.title==='TaskQueueManager::RunTask')return;if(slice.title==='ThreadProxy::ScheduledActionSendBeginMainFrame'){return;}\nif(slice.title==='Scheduler::ScheduleBeginImplFrameDeadline'){if(this.triggerOtherInputs(slice,flowEvents))return;}\nif(slice.title==='CompositorImpl::PostComposite'){if(this.triggerOtherInputs(slice,flowEvents))return;}\nif(slice.title==='InputRouterImpl::ProcessInputEventAck'){inputAck=true;}\nif(inputAck&&slice.title==='InputRouterImpl::FilterAndSendWebInputEvent'){stopFollowing=true;}\nthis.followCurrentSlice(slice,queue,visited);},this);},followCurrentSlice(event,queue,visited){event.outFlowEvents.forEach(function(outflow){if((outflow.category===NEW_POSTTASK_FLOW_EVENT||outflow.category===OLD_POSTTASK_FLOW_EVENT||outflow.category===OLD_IPC_FLOW_EVENT)&&outflow.endSlice){this.associatedEvents_.push(outflow);const nextEvent=outflow.endSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);queue.push(nextEvent);}}},this);},backtraceFromDraw(beginImplFrame,visited){const pendingEventQueue=[];pendingEventQueue.push(beginImplFrame.mostTopLevelSlice);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);event.inFlowEvents.forEach(function(inflow){if(inflow.category===POSTTASK_FLOW_EVENT&&inflow.startSlice){const nextEvent=inflow.startSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);pendingEventQueue.push(nextEvent);}}},this);}},sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices){rasterWorkerThreads.forEach(function(rasterizer){Array.prototype.push.apply(sortedRasterizerSlices,rasterizer.sliceGroup.slices);},this);sortedRasterizerSlices.sort(function(a,b){if(a.start!==b.start){return a.start-b.start;}\nreturn a.guid-b.guid;});},addRasterizationEvents(prepareTiles,rendererHelper,visited,flowEvents,sortedRasterizerSlices){if(!prepareTiles.args.prepare_tiles_id)return;if(!rendererHelper||!rendererHelper.rasterWorkerThreads){return;}\nconst rasterWorkerThreads=rendererHelper.rasterWorkerThreads;const prepareTileId=prepareTiles.args.prepare_tiles_id;const pendingEventQueue=[];if(sortedRasterizerSlices.length===0){this.sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices);}\nlet numFinishedTasks=0;const RASTER_TASK_TITLE='RasterizerTaskImpl::RunOnWorkerThread';const IMAGEDECODE_TASK_TITLE='ImageDecodeTaskImpl::RunOnWorkerThread';const FINISHED_TASK_TITLE='TaskSetFinishedTaskImpl::RunOnWorkerThread';for(let i=0;i<sortedRasterizerSlices.length;i++){const task=sortedRasterizerSlices[i];if(task.title===RASTER_TASK_TITLE||task.title===IMAGEDECODE_TASK_TITLE){if(task.args.source_prepare_tiles_id===prepareTileId){this.addEntireSliceHierarchy(task.mostTopLevelSlice);}}else if(task.title===FINISHED_TASK_TITLE){if(task.start>prepareTiles.start){pendingEventQueue.push(task.mostTopLevelSlice);if(++numFinishedTasks===3)break;}}}\nwhile(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followSubsequentSlices(event,pendingEventQueue,visited,flowEvents);}},addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents,sortedRasterizerSlices){const pendingEventQueue=[];const visitedEvents=new EventSet();let beginImplFrame=undefined;let prepareTiles=undefined;sortedRasterizerSlices=[];sourceSlices.forEach(function(sourceSlice){if(!visitedEvents.contains(sourceSlice)){visitedEvents.push(sourceSlice);pendingEventQueue.push(sourceSlice);}},this);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followCurrentSlice(event,pendingEventQueue,visitedEvents);this.followSubsequentSlices(event,pendingEventQueue,visitedEvents,flowEvents);const COMPOSITOR_PREPARE_TILES='TileManager::PrepareTiles';prepareTiles=event.findDescendentSlice(COMPOSITOR_PREPARE_TILES);if(prepareTiles){this.addRasterizationEvents(prepareTiles,rendererHelper,visitedEvents,flowEvents,sortedRasterizerSlices);}\nconst COMPOSITOR_ON_BIFD='Scheduler::OnBeginImplFrameDeadline';beginImplFrame=event.findDescendentSlice(COMPOSITOR_ON_BIFD);if(beginImplFrame){this.backtraceFromDraw(beginImplFrame,visitedEvents);}}},get associatedEvents(){if(this.associatedEvents_.length!==0){return this.associatedEvents_;}\nconst modelIndices=this.startThread.parent.model.modelIndices;const flowEvents=modelIndices.getFlowEventsWithId(this.id);if(flowEvents.length===0){return this.associatedEvents_;}\nconst sourceSlices=this.addDirectlyAssociatedEvents(flowEvents);const rendererHelper=this.getRendererHelper(sourceSlices);this.addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents);return this.associatedEvents_;},get inputLatency(){if(!('data'in this.args))return undefined;const data=this.args.data;const endTimeComp=data[END_COMP_NAME]||data[LEGACY_END_COMP_NAME];if(endTimeComp===undefined)return undefined;let latency=0;const endTime=endTimeComp.time;if(ORIGINAL_COMP_NAME in data){latency=endTime-data[ORIGINAL_COMP_NAME].time;}else if(UI_COMP_NAME in data){latency=endTime-data[UI_COMP_NAME].time;}else if(BEGIN_COMP_NAME in data){latency=endTime-data[BEGIN_COMP_NAME].time;}else{throw new Error('No valid begin latency component');}\nreturn latency;}};const eventTypeNames=['Char','ContextMenu','GestureClick','GestureFlingCancel','GestureFlingStart','GestureScrollBegin','GestureScrollEnd','GestureScrollUpdate','GestureShowPress','GestureTap','GestureTapCancel','GestureTapDown','GesturePinchBegin','GesturePinchEnd','GesturePinchUpdate','KeyDown','KeyUp','MouseDown','MouseEnter','MouseLeave','MouseMove','MouseUp','MouseWheel','RawKeyDown','ScrollUpdate','TouchCancel','TouchEnd','TouchMove','TouchStart'];const allTypeNames=['InputLatency'];eventTypeNames.forEach(function(eventTypeName){allTypeNames.push('InputLatency:'+eventTypeName);allTypeNames.push('InputLatency::'+eventTypeName);});AsyncSlice.subTypes.register(InputLatencyAsyncSlice,{typeNames:allTypeNames,categoryParts:['latencyInfo']});return{InputLatencyAsyncSlice,INPUT_EVENT_TYPE_NAMES,};});'use strict';tr.exportTo('tr.e.chrome',function(){const SAME_AS_PARENT='same-as-parent';const TITLES_FOR_USER_FRIENDLY_CATEGORY={composite:['CompositingInputsUpdater::update','ThreadProxy::SetNeedsUpdateLayers','LayerTreeHost::DoUpdateLayers','LayerTreeHost::UpdateLayers::BuildPropertyTrees','LocalFrameView::pushPaintArtifactToCompositor','LocalFrameView::updateCompositedSelectionIfNeeded','LocalFrameView::RunCompositingLifecyclePhase','UpdateLayerTree',],gc:['minorGC','majorGC','MajorGC','MinorGC','V8.GCScavenger','V8.GCIncrementalMarking','V8.GCIdleNotification','V8.GCContext','V8.GCCompactor','V8GCController::traceDOMWrappers',],iframe_creation:['WebLocalFrameImpl::createChildframe',],imageDecode:['Decode Image','ImageFrameGenerator::decode','ImageFrameGenerator::decodeAndScale','ImageFrameGenerator::decodeToYUV','ImageResourceContent::updateImage',],input:['HitTest','ScrollableArea::scrollPositionChanged','EventHandler::handleMouseMoveEvent',],layout:['IntersectionObserverController::computeTrackedIntersectionObservations','LocalFrameView::invalidateTree','LocalFrameView::layout','LocalFrameView::performLayout','LocalFrameView::performPostLayoutTasks','LocalFrameView::performPreLayoutTasks','LocalFrameView::RunStyleAndLayoutCompositingPhases','Layout','PaintLayer::updateLayerPositionsAfterLayout','ResourceLoadPriorityOptimizer::updateAllImageResourcePriorities','WebViewImpl::updateAllLifecyclePhases','WebViewImpl::beginFrame',],parseHTML:['BackgroundHTMLParser::pumpTokenizer','BackgroundHTMLParser::sendTokensToMainThread','HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser','HTMLDocumentParser::documentElementAvailable','HTMLDocumentParser::notifyPendingTokenizedChunks','HTMLDocumentParser::processParsedChunkFromBackgroundParser','HTMLDocumentParser::processTokenizedChunkFromBackgroundParser','ParseHTML',],raster:['DisplayListRasterSource::PerformSolidColorAnalysis','Picture::Raster','RasterBufferImpl::Playback','RasterTask','RasterizerTaskImpl::RunOnWorkerThread','SkCanvas::drawImageRect()','SkCanvas::drawPicture()','SkCanvas::drawTextBlob()','TileTaskWorkerPool::PlaybackToMemory',],record:['Canvas2DLayerBridge::flushRecordingOnly','CompositingInputsUpdater::update','CompositingRequirementsUpdater::updateRecursive','ContentLayerDelegate::paintContents','DisplayItemList::Finalize','LocalFrameView::RunPaintLifecyclePhase','LocalFrameView::RunPrePaintLifecyclePhase','Paint','PaintController::commitNewDisplayItems','PaintLayerCompositor::updateIfNeededRecursive','Picture::Record','PictureLayer::Update',],style:['CSSParserImpl::parseStyleSheet.parse','CSSParserImpl::parseStyleSheet.tokenize','Document::rebuildLayoutTree','Document::recalcStyle','Document::updateActiveStyle','Document::updateStyle','Document::updateStyleInvalidationIfNeeded','LocalFrameView::updateStyleAndLayoutIfNeededRecursive','ParseAuthorStyleSheet','RuleSet::addRulesFromSheet','StyleElement::processStyleSheet','StyleEngine::createResolver','StyleEngine::updateActiveStyleSheets','StyleSheetContents::parseAuthorStyleSheet','UpdateLayoutTree',],script_parse_and_compile:['V8.CompileFullCode','V8.NewContext','V8.Parse','V8.ParseLazy','V8.RecompileSynchronous','V8.ScriptCompiler','v8.compile','v8.parseOnBackground',],script_execute:['EvaluateScript','FunctionCall','HTMLParserScriptRunner ExecuteScript','V8.Execute','V8.RunMicrotasks','V8.Task','WindowProxy::initialize','v8.callFunction','v8.run',],resource_loading:['RenderFrameImpl::didFinishDocumentLoad','RenderFrameImpl::didFinishLoad','Resource::appendData','ResourceDispatcher::OnReceivedData','ResourceDispatcher::OnReceivedResponse','ResourceDispatcher::OnRequestComplete','ResourceFetcher::requestResource','WebURLLoaderImpl::Context::Cancel','WebURLLoaderImpl::Context::OnCompletedRequest','WebURLLoaderImpl::Context::OnReceivedData','WebURLLoaderImpl::Context::OnReceivedRedirect','WebURLLoaderImpl::Context::OnReceivedResponse','WebURLLoaderImpl::Context::Start','WebURLLoaderImpl::loadAsynchronously','WebURLLoaderImpl::loadSynchronously','content::mojom::URLLoaderClient',],renderer_misc:['DecodeFont','ThreadState::completeSweep',],v8_runtime:[],[SAME_AS_PARENT]:['SyncChannel::Send',]};const COLOR_FOR_USER_FRIENDLY_CATEGORY=new tr.b.SinebowColorGenerator();const USER_FRIENDLY_CATEGORY_FOR_TITLE=new Map();for(const category in TITLES_FOR_USER_FRIENDLY_CATEGORY){TITLES_FOR_USER_FRIENDLY_CATEGORY[category].forEach(function(title){USER_FRIENDLY_CATEGORY_FOR_TITLE.set(title,category);});}\nconst USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY={netlog:'net',overhead:'overhead',startup:'startup',gpu:'gpu',};function ChromeUserFriendlyCategoryDriver(){}\nChromeUserFriendlyCategoryDriver.fromEvent=function(event){let userFriendlyCategory=USER_FRIENDLY_CATEGORY_FOR_TITLE.get(event.title);if(userFriendlyCategory){if(userFriendlyCategory===SAME_AS_PARENT){if(event.parentSlice){return ChromeUserFriendlyCategoryDriver.fromEvent(event.parentSlice);}}else{return userFriendlyCategory;}}\nconst eventCategoryParts=tr.b.getCategoryParts(event.category);for(let i=0;i<eventCategoryParts.length;++i){const eventCategory=eventCategoryParts[i];userFriendlyCategory=USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY[eventCategory];if(userFriendlyCategory){return userFriendlyCategory;}}\nreturn'other';};ChromeUserFriendlyCategoryDriver.getColor=function(ufc){return COLOR_FOR_USER_FRIENDLY_CATEGORY.colorForKey(ufc);};ChromeUserFriendlyCategoryDriver.ALL_TITLES=['other'];for(const category in TITLES_FOR_USER_FRIENDLY_CATEGORY){if(category===SAME_AS_PARENT)continue;ChromeUserFriendlyCategoryDriver.ALL_TITLES.push(category);}\nfor(const category of Object.values(USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY)){ChromeUserFriendlyCategoryDriver.ALL_TITLES.push(category);}\nChromeUserFriendlyCategoryDriver.ALL_TITLES.sort();for(const category of ChromeUserFriendlyCategoryDriver.ALL_TITLES){ChromeUserFriendlyCategoryDriver.getColor(category);}\nreturn{ChromeUserFriendlyCategoryDriver,};});'use strict';tr.exportTo('tr.model',function(){return{BROWSER_PROCESS_PID_REF:-1,OBJECT_DEFAULT_SCOPE:'ptr',LOCAL_ID_PHASES:new Set(['N','D','O','(',')'])};});'use strict';tr.exportTo('tr.e.audits',function(){const Auditor=tr.c.Auditor;const Alert=tr.model.Alert;const EventInfo=tr.model.EventInfo;function ChromeAuditor(model){Auditor.call(this,model);const modelHelper=this.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper&&modelHelper.browserHelper){this.modelHelper=modelHelper;}else{this.modelHelper=undefined;}}\nfunction getMissedFrameAlerts(rendererHelpers){const alerts=[];for(const rendererHelper of rendererHelpers){if(!rendererHelper.compositorThread)continue;const thread=rendererHelper.compositorThread;const asyncSlices=Object.values(thread.asyncSliceGroup.slices);for(const slice of asyncSlices){if(slice.title==='PipelineReporter'&&slice.args.chrome_frame_reporter&&slice.args.chrome_frame_reporter.state==='STATE_DROPPED'){const alertSlices=[slice].concat(slice.subSlices);alerts.push(new Alert(new EventInfo('Dropped Frame','Frame was dropped (i.e. not produced/presented).'),slice.start,alertSlices));}}}\nreturn alerts;}\nChromeAuditor.prototype={__proto__:Auditor.prototype,runAnnotate(){if(!this.modelHelper)return;for(const pid in this.modelHelper.rendererHelpers){const rendererHelper=this.modelHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI){rendererHelper.process.important=false;}}},installUserFriendlyCategoryDriverIfNeeded(){this.model.addUserFriendlyCategoryDriver(tr.e.chrome.ChromeUserFriendlyCategoryDriver);},runAudit(){if(!this.modelHelper)return;this.model.replacePIDRefsInPatchups(tr.model.BROWSER_PROCESS_PID_REF,this.modelHelper.browserProcess.pid);this.model.applyObjectRefPatchups();const alerts=getMissedFrameAlerts(Object.values(this.modelHelper.rendererHelpers));this.model.alerts=this.model.alerts.concat(alerts);}};Auditor.register(ChromeAuditor);return{ChromeAuditor,};});'use strict';tr.exportTo('tr.e.chrome',function(){const KNOWN_PROPERTIES={absX:1,absY:1,address:1,anonymous:1,childNeeds:1,children:1,classNames:1,col:1,colSpan:1,float:1,height:1,htmlId:1,name:1,posChildNeeds:1,positioned:1,positionedMovement:1,relX:1,relY:1,relativePositioned:1,row:1,rowSpan:1,selfNeeds:1,stickyPositioned:1,tag:1,width:1};function LayoutObject(snapshot,args){this.snapshot_=snapshot;this.id_=args.address;this.name_=args.name;this.childLayoutObjects_=[];this.otherProperties_={};this.tag_=args.tag;this.relativeRect_=tr.b.math.Rect.fromXYWH(args.relX,args.relY,args.width,args.height);this.absoluteRect_=tr.b.math.Rect.fromXYWH(args.absX,args.absY,args.width,args.height);this.isFloat_=args.float;this.isStickyPositioned_=args.stickyPositioned;this.isPositioned_=args.positioned;this.isRelativePositioned_=args.relativePositioned;this.isAnonymous_=args.anonymous;this.htmlId_=args.htmlId;this.classNames_=args.classNames;this.needsLayoutReasons_=[];if(args.selfNeeds){this.needsLayoutReasons_.push('self');}\nif(args.childNeeds){this.needsLayoutReasons_.push('child');}\nif(args.posChildNeeds){this.needsLayoutReasons_.push('positionedChild');}\nif(args.positionedMovement){this.needsLayoutReasons_.push('positionedMovement');}\nthis.tableRow_=args.row;this.tableCol_=args.col;this.tableRowSpan_=args.rowSpan;this.tableColSpan_=args.colSpan;if(args.children){args.children.forEach(function(child){this.childLayoutObjects_.push(new LayoutObject(snapshot,child));}.bind(this));}\nfor(const property in args){if(!KNOWN_PROPERTIES[property]){this.otherProperties_[property]=args[property];}}}\nLayoutObject.prototype={get snapshot(){return this.snapshot_;},get id(){return this.id_;},get name(){return this.name_;},get tag(){return this.tag_;},get relativeRect(){return this.relativeRect_;},get absoluteRect(){return this.absoluteRect_;},get isPositioned(){return this.isPositioned_;},get isFloat(){return this.isFloat_;},get isStickyPositioned(){return this.isStickyPositioned_;},get isRelativePositioned(){return this.isRelativePositioned_;},get isAnonymous(){return this.isAnonymous_;},get tableRow(){return this.tableRow_;},get tableCol(){return this.tableCol_;},get tableRowSpan(){return this.tableRowSpan_;},get tableColSpan(){return this.tableColSpan_;},get htmlId(){return this.htmlId_;},get classNames(){return this.classNames_;},get needsLayoutReasons(){return this.needsLayoutReasons_;},get hasChildLayoutObjects(){return this.childLayoutObjects_.length>0;},get childLayoutObjects(){return this.childLayoutObjects_;},traverseTree(cb,opt_this){cb.call(opt_this,this);if(!this.hasChildLayoutObjects)return;this.childLayoutObjects.forEach(function(child){child.traverseTree(cb,opt_this);});},get otherPropertyNames(){const names=[];for(const name in this.otherProperties_){names.push(name);}\nreturn names;},getProperty(name){return this.otherProperties_[name];},get previousSnapshotLayoutObject(){if(!this.snapshot.previousSnapshot)return undefined;return this.snapshot.previousSnapshot.getLayoutObjectById(this.id);},get nextSnapshotLayoutObject(){if(!this.snapshot.nextSnapshot)return undefined;return this.snapshot.nextSnapshot.getLayoutObjectById(this.id);}};return{LayoutObject,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function LayoutTreeInstance(){ObjectInstance.apply(this,arguments);}\nLayoutTreeInstance.prototype={__proto__:ObjectInstance.prototype,};ObjectInstance.subTypes.register(LayoutTreeInstance,{typeName:'LayoutTree'});function LayoutTreeSnapshot(){ObjectSnapshot.apply(this,arguments);this.rootLayoutObject=new tr.e.chrome.LayoutObject(this,this.args);}\nLayoutTreeSnapshot.prototype={__proto__:ObjectSnapshot.prototype,};ObjectSnapshot.subTypes.register(LayoutTreeSnapshot,{typeName:'LayoutTree'});return{LayoutTreeInstance,LayoutTreeSnapshot,};});'use strict';tr.exportTo('tr.model',function(){function EventContainer(){this.guid_=tr.b.GUID.allocateSimple();this.important=true;this.bounds_=new tr.b.math.Range();}\nEventContainer.prototype={get guid(){return this.guid_;},get stableId(){throw new Error('Not implemented');},get bounds(){return this.bounds_;},updateBounds(){throw new Error('Not implemented');},shiftTimestampsForward(amount){throw new Error('Not implemented');},*childEvents(){},*getDescendantEvents(){yield*this.childEvents();for(const container of this.childEventContainers()){yield*container.getDescendantEvents();}},*childEventContainers(){},*getDescendantEventContainers(){yield this;for(const container of this.childEventContainers()){yield*container.getDescendantEventContainers();}},*getDescendantEventsInSortedRanges(ranges,opt_containerPredicate){if(opt_containerPredicate===undefined||opt_containerPredicate(this)){for(const event of this.childEvents()){const i=tr.b.findFirstTrueIndexInSortedArray(ranges,range=>event.start<=range.max);if(i<ranges.length&&event.end>=ranges[i].min)yield event;}}\nfor(const container of this.childEventContainers()){yield*container.getDescendantEventsInSortedRanges(ranges,opt_containerPredicate);}},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){},*findTopmostSlices(eventPredicate){for(const ec of this.getDescendantEventContainers()){yield*ec.findTopmostSlicesInThisContainer(eventPredicate);}},*findTopmostSlicesNamed(name){yield*this.findTopmostSlices(e=>e.title===name);}};return{EventContainer,};});'use strict';tr.exportTo('tr.model',function(){const Event=tr.model.Event;const EventRegistry=tr.model.EventRegistry;class ResourceUsageSample extends Event{constructor(series,start,usage){super();this.series_=series;this.start_=start;this.usage_=usage;}\nget series(){return this.series_;}\nget start(){return this.start_;}\nset start(value){this.start_=value;}\nget usage(){return this.usage_;}\nset usage(value){this.usage_=value;}\naddBoundsToRange(range){range.addValue(this.start);}}\nEventRegistry.register(ResourceUsageSample,{name:'resourceUsageSample',pluralName:'resourceUsageSamples'});return{ResourceUsageSample,};});'use strict';tr.exportTo('tr.model',function(){const ResourceUsageSample=tr.model.ResourceUsageSample;class ResourceUsageSeries extends tr.model.EventContainer{constructor(device){super();this.device_=device;this.samples_=[];}\nget device(){return this.device_;}\nget samples(){return this.samples_;}\nget stableId(){return this.device_.stableId+'.ResourceUsageSeries';}\naddUsageSample(ts,val){const sample=new ResourceUsageSample(this,ts,val);this.samples_.push(sample);return sample;}\ncomputeResourceTimeConsumedInMs(start,end){const measurementRange=tr.b.math.Range.fromExplicitRange(start,end);let resourceTimeInMs=0;let startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0)startIndex=0;for(let i=startIndex;i<endIndex;i++){const sample=this.samples[i];const nextSample=this.samples[i+1];const sampleRange=new tr.b.math.Range();sampleRange.addValue(sample.start);sampleRange.addValue(nextSample?nextSample.start:sample.start);const intersectionRangeInMs=measurementRange.findIntersection(sampleRange);resourceTimeInMs+=intersectionRangeInMs.duration*sample.usage;}\nreturn resourceTimeInMs;}\ngetSamplesWithinRange(start,end){const startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);}\nshiftTimestampsForward(amount){for(let i=0;i<this.samples_.length;++i){this.samples_[i].start+=amount;}}\nupdateBounds(){this.bounds.reset();if(this.samples_.length===0)return;this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].start);}*childEvents(){yield*this.samples_;}}\nreturn{ResourceUsageSeries,};});'use strict';tr.exportTo('tr.e.audits',function(){class CpuUsageAuditor extends tr.c.Auditor{constructor(model){super();this.model_=model;}\nrunAnnotate(){this.model_.device.cpuUsageSeries=this.computeCpuUsageSeries_(this.model_.bounds.min,this.model_.bounds.max,this.computeCpuUsage_());}\ncomputeBinSize_(start,end){const MIN_BIN_SIZE_MS=1.0;const MAX_NUM_BINS=100000;const interval=end-start;let binSize=MIN_BIN_SIZE_MS;while(binSize*MAX_NUM_BINS<interval)binSize*=2;return binSize;}\ncomputeCpuUsageSeries_(start,end,usageRecords){const series=new tr.model.ResourceUsageSeries();if(start===undefined||usageRecords.length===0)return series;const binSize=this.computeBinSize_(start,end);const numBins=Math.ceil((end-start)/binSize);const arr=new Array(numBins).fill(0);for(const record of usageRecords){const firstIndex=Math.ceil((record.start-start)/binSize);const lastIndex=Math.floor((record.end-start)/binSize);for(let i=firstIndex;i<=lastIndex;i++)arr[i]+=record.usage;}\nfor(let i=0;i<numBins;i++){series.addUsageSample(start+(i*binSize),arr[i]);}\nreturn series;}\ncomputeCpuUsage_(){const model=this.model_;const result=[];for(const pid in model.processes){for(const e of model.processes[pid].getDescendantEvents()){if(!(e instanceof tr.model.ThreadSlice)||e.duration===0||e.cpuDuration===undefined){continue;}\nif(e.selfTime===0||e.selfTime===undefined||e.cpuSelfTime===undefined){continue;}\nconst usage=tr.b.math.clamp(e.cpuSelfTime/e.selfTime,0,1);let lastTime=e.start;for(const subslice of e.subSlices){result.push({usage,start:lastTime,end:subslice.start});lastTime=subslice.end;}\nresult.push({usage,start:lastTime,end:e.end});}}\nreturn result;}}\ntr.c.Auditor.register(CpuUsageAuditor);return{CpuUsageAuditor};});'use strict';tr.exportTo('tr.e.img',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function ImageSnapshot(){ObjectSnapshot.apply(this,arguments);}\nImageSnapshot.prototype={__proto__:ObjectSnapshot.prototype,initialize(){this.data_=this.args.data;this.type_=this.args.params.type;},get data(){return this.data_;},get type(){return this.type_;},};ObjectSnapshot.subTypes.register(ImageSnapshot,{typeNames:['gfx::Image']});return{ImageSnapshot,};});'use strict';tr.exportTo('tr.b',function(){function Base64(){}\nfunction b64ToUint6(nChr){if(nChr>64&&nChr<91)return nChr-65;if(nChr>96&&nChr<123)return nChr-71;if(nChr>47&&nChr<58)return nChr+4;if(nChr===43)return 62;if(nChr===47)return 63;return 0;}\nBase64.getDecodedBufferLength=function(input){let pad=0;if(input.substr(-2)==='=='){pad=2;}else if(input.substr(-1)==='='){pad=1;}\nreturn((input.length*3+1)>>2)-pad;};Base64.EncodeArrayBufferToString=function(input){let binary='';const bytes=new Uint8Array(input);const len=bytes.byteLength;for(let i=0;i<len;i++){binary+=String.fromCharCode(bytes[i]);}\nreturn btoa(binary);};Base64.DecodeToTypedArray=function(input,output){const nInLen=input.length;const nOutLen=Base64.getDecodedBufferLength(input);let nMod3=0;let nMod4=0;let nUint24=0;let nOutIdx=0;if(nOutLen>output.byteLength){throw new Error('Output buffer too small to decode.');}\nfor(let nInIdx=0;nInIdx<nInLen;nInIdx++){nMod4=nInIdx&3;nUint24|=b64ToUint6(input.charCodeAt(nInIdx))<<18-6*nMod4;if(nMod4===3||nInLen-nInIdx===1){for(nMod3=0;nMod3<3&&nOutIdx<nOutLen;nMod3++,nOutIdx++){output.setUint8(nOutIdx,nUint24>>>(16>>>nMod3&24)&255);}\nnUint24=0;}}\nreturn nOutLen;};Base64.btoa=function(input){return btoa(input);};Base64.atob=function(input){return atob(input);};return{Base64,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){function Parser(importer){this.importer=importer;this.model=importer.model;}\nParser.prototype={__proto__:Object.prototype};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.mandatoryBaseClass=Parser;tr.b.decorateExtensionRegistry(Parser,options);return{Parser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='68FDD900-4A3E-11D1-84F4-0000F80464E3';const kEventTraceHeaderOpcode=0;function EventTraceParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kEventTraceHeaderOpcode,EventTraceParser.prototype.decodeHeader.bind(this));}\nEventTraceParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version!==2){throw new Error('Incompatible EventTrace event version.');}\nconst bufferSize=decoder.decodeUInt32();const version=decoder.decodeUInt32();const providerVersion=decoder.decodeUInt32();const numberOfProcessors=decoder.decodeUInt32();const endTime=decoder.decodeUInt64ToString();const timerResolution=decoder.decodeUInt32();const maxFileSize=decoder.decodeUInt32();const logFileMode=decoder.decodeUInt32();const buffersWritten=decoder.decodeUInt32();const startBuffers=decoder.decodeUInt32();const pointerSize=decoder.decodeUInt32();const eventsLost=decoder.decodeUInt32();const cpuSpeed=decoder.decodeUInt32();const loggerName=decoder.decodeUInteger(header.is64);const logFileName=decoder.decodeUInteger(header.is64);const timeZoneInformation=decoder.decodeTimeZoneInformation();const padding=decoder.decodeUInt32();const bootTime=decoder.decodeUInt64ToString();const perfFreq=decoder.decodeUInt64ToString();const startTime=decoder.decodeUInt64ToString();const reservedFlags=decoder.decodeUInt32();const buffersLost=decoder.decodeUInt32();const sessionNameString=decoder.decodeW16String();const logFileNameString=decoder.decodeW16String();return{bufferSize,version,providerVersion,numberOfProcessors,endTime,timerResolution,maxFileSize,logFileMode,buffersWritten,startBuffers,pointerSize,eventsLost,cpuSpeed,loggerName,logFileName,timeZoneInformation,bootTime,perfFreq,startTime,reservedFlags,buffersLost,sessionNameString,logFileNameString};},decodeHeader(header,decoder){const fields=this.decodeFields(header,decoder);return true;}};Parser.register(EventTraceParser);return{EventTraceParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='3D6FA8D0-FE05-11D0-9DDA-00C04FD7BA7C';const kProcessStartOpcode=1;const kProcessEndOpcode=2;const kProcessDCStartOpcode=3;const kProcessDCEndOpcode=4;const kProcessDefunctOpcode=39;function ProcessParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kProcessStartOpcode,ProcessParser.prototype.decodeStart.bind(this));importer.registerEventHandler(guid,kProcessEndOpcode,ProcessParser.prototype.decodeEnd.bind(this));importer.registerEventHandler(guid,kProcessDCStartOpcode,ProcessParser.prototype.decodeDCStart.bind(this));importer.registerEventHandler(guid,kProcessDCEndOpcode,ProcessParser.prototype.decodeDCEnd.bind(this));importer.registerEventHandler(guid,kProcessDefunctOpcode,ProcessParser.prototype.decodeDefunct.bind(this));}\nProcessParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version>5){throw new Error('Incompatible Process event version.');}\nlet pageDirectoryBase;if(header.version===1){pageDirectoryBase=decoder.decodeUInteger(header.is64);}\nlet uniqueProcessKey;if(header.version>=2){uniqueProcessKey=decoder.decodeUInteger(header.is64);}\nconst processId=decoder.decodeUInt32();const parentId=decoder.decodeUInt32();let sessionId;let exitStatus;if(header.version>=1){sessionId=decoder.decodeUInt32();exitStatus=decoder.decodeInt32();}\nlet directoryTableBase;if(header.version>=3){directoryTableBase=decoder.decodeUInteger(header.is64);}\nlet flags;if(header.version>=4){flags=decoder.decodeUInt32();}\nconst userSID=decoder.decodeSID(header.is64);let imageFileName;if(header.version>=1){imageFileName=decoder.decodeString();}\nlet commandLine;if(header.version>=2){commandLine=decoder.decodeW16String();}\nlet packageFullName;let applicationId;if(header.version>=4){packageFullName=decoder.decodeW16String();applicationId=decoder.decodeW16String();}\nlet exitTime;if(header.version===5&&header.opcode===kProcessDefunctOpcode){exitTime=decoder.decodeUInt64ToString();}\nreturn{pageDirectoryBase,uniqueProcessKey,processId,parentId,sessionId,exitStatus,directoryTableBase,flags,userSID,imageFileName,commandLine,packageFullName,applicationId,exitTime};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');}\nprocess.name=fields.imageFileName;return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');}\nprocess.name=fields.imageFileName;return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDefunct(header,decoder){const fields=this.decodeFields(header,decoder);return true;}};Parser.register(ProcessParser);return{ProcessParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadStartOpcode=1;const kThreadEndOpcode=2;const kThreadDCStartOpcode=3;const kThreadDCEndOpcode=4;const kThreadCSwitchOpcode=36;function ThreadParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kThreadStartOpcode,ThreadParser.prototype.decodeStart.bind(this));importer.registerEventHandler(guid,kThreadEndOpcode,ThreadParser.prototype.decodeEnd.bind(this));importer.registerEventHandler(guid,kThreadDCStartOpcode,ThreadParser.prototype.decodeDCStart.bind(this));importer.registerEventHandler(guid,kThreadDCEndOpcode,ThreadParser.prototype.decodeDCEnd.bind(this));importer.registerEventHandler(guid,kThreadCSwitchOpcode,ThreadParser.prototype.decodeCSwitch.bind(this));}\nThreadParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version>3){throw new Error('Incompatible Thread event version '+\nheader.version+'.');}\nconst processId=decoder.decodeUInt32();const threadId=decoder.decodeUInt32();let stackBase;let stackLimit;let userStackBase;let userStackLimit;let affinity;let startAddr;let win32StartAddr;let tebBase;let subProcessTag;let basePriority;let pagePriority;let ioPriority;let threadFlags;let waitMode;if(header.version===1){if(header.opcode===kThreadStartOpcode||header.opcode===kThreadDCStartOpcode){stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);startAddr=decoder.decodeUInteger(header.is64);win32StartAddr=decoder.decodeUInteger(header.is64);waitMode=decoder.decodeInt8();decoder.skip(3);}}else{stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);if(header.version===2){startAddr=decoder.decodeUInteger(header.is64);}else{affinity=decoder.decodeUInteger(header.is64);}\nwin32StartAddr=decoder.decodeUInteger(header.is64);tebBase=decoder.decodeUInteger(header.is64);subProcessTag=decoder.decodeUInt32();if(header.version===3){basePriority=decoder.decodeUInt8();pagePriority=decoder.decodeUInt8();ioPriority=decoder.decodeUInt8();threadFlags=decoder.decodeUInt8();}}\nreturn{processId,threadId,stackBase,stackLimit,userStackBase,userStackLimit,affinity,startAddr,win32StartAddr,tebBase,subProcessTag,waitMode,basePriority,pagePriority,ioPriority,threadFlags};},decodeCSwitchFields(header,decoder){if(header.version<2||header.version>4){throw new Error('Incompatible cswitch event version '+\nheader.version+'.');}\nconst newThreadId=decoder.decodeUInt32();const oldThreadId=decoder.decodeUInt32();const newThreadPriority=decoder.decodeInt8();const oldThreadPriority=decoder.decodeInt8();const previousCState=decoder.decodeUInt8();const spareByte=decoder.decodeInt8();const oldThreadWaitReason=decoder.decodeInt8();const oldThreadWaitMode=decoder.decodeInt8();const oldThreadState=decoder.decodeInt8();const oldThreadWaitIdealProcessor=decoder.decodeInt8();const newThreadWaitTime=decoder.decodeUInt32();const reserved=decoder.decodeUInt32();return{newThreadId,oldThreadId,newThreadPriority,oldThreadPriority,previousCState,spareByte,oldThreadWaitReason,oldThreadWaitMode,oldThreadState,oldThreadWaitIdealProcessor,newThreadWaitTime,reserved};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeCSwitch(header,decoder){const fields=this.decodeCSwitchFields(header,decoder);const cpu=this.importer.getOrCreateCpu(header.cpu);const newThread=this.importer.getThreadFromWindowsTid(fields.newThreadId);let newThreadName;if(newThread&&newThread.userFriendlyName){newThreadName=newThread.userFriendlyName;}else{const newProcessId=this.importer.getPidFromWindowsTid(fields.newThreadId);const newProcess=this.model.getProcess(newProcessId);let newProcessName;if(newProcess){newProcessName=newProcess.name;}else{newProcessName='Unknown process';}\nnewThreadName=newProcessName+' (tid '+fields.newThreadId+')';}\ncpu.switchActiveThread(header.timestamp,{},fields.newThreadId,newThreadName,fields);return true;}};Parser.register(ThreadParser);return{ThreadParser,};});'use strict';tr.exportTo('tr.b',function(){function max(a,b){if(a===undefined)return b;if(b===undefined)return a;return Math.max(a,b);}\nfunction IntervalTree(beginPositionCb,endPositionCb){this.beginPositionCb_=beginPositionCb;this.endPositionCb_=endPositionCb;this.root_=undefined;this.size_=0;}\nIntervalTree.prototype={insert(datum){const startPosition=this.beginPositionCb_(datum);const endPosition=this.endPositionCb_(datum);const node=new IntervalTreeNode(datum,startPosition,endPosition);this.size_++;this.root_=this.insertNode_(this.root_,node);this.root_.colour=Colour.BLACK;return datum;},insertNode_(root,node){if(root===undefined)return node;if(root.leftNode&&root.leftNode.isRed&&root.rightNode&&root.rightNode.isRed){this.flipNodeColour_(root);}\nif(node.key<root.key){root.leftNode=this.insertNode_(root.leftNode,node);}else if(node.key===root.key){root.merge(node);}else{root.rightNode=this.insertNode_(root.rightNode,node);}\nif(root.rightNode&&root.rightNode.isRed&&(root.leftNode===undefined||!root.leftNode.isRed)){root=this.rotateLeft_(root);}\nif(root.leftNode&&root.leftNode.isRed&&root.leftNode.leftNode&&root.leftNode.leftNode.isRed){root=this.rotateRight_(root);}\nreturn root;},rotateRight_(node){const sibling=node.leftNode;node.leftNode=sibling.rightNode;sibling.rightNode=node;sibling.colour=node.colour;node.colour=Colour.RED;return sibling;},rotateLeft_(node){const sibling=node.rightNode;node.rightNode=sibling.leftNode;sibling.leftNode=node;sibling.colour=node.colour;node.colour=Colour.RED;return sibling;},flipNodeColour_(node){node.colour=this.flipColour_(node.colour);node.leftNode.colour=this.flipColour_(node.leftNode.colour);node.rightNode.colour=this.flipColour_(node.rightNode.colour);},flipColour_(colour){return colour===Colour.RED?Colour.BLACK:Colour.RED;},updateHighValues(){this.updateHighValues_(this.root_);},updateHighValues_(node){if(node===undefined)return undefined;node.maxHighLeft=this.updateHighValues_(node.leftNode);node.maxHighRight=this.updateHighValues_(node.rightNode);return max(max(node.maxHighLeft,node.highValue),node.maxHighRight);},validateFindArguments_(queryLow,queryHigh){if(queryLow===undefined||queryHigh===undefined){throw new Error('queryLow and queryHigh must be defined');}\nif((typeof queryLow!=='number')||(typeof queryHigh!=='number')){throw new Error('queryLow and queryHigh must be numbers');}},findIntersection(queryLow,queryHigh){this.validateFindArguments_(queryLow,queryHigh);if(this.root_===undefined)return[];const ret=[];this.root_.appendIntersectionsInto_(ret,queryLow,queryHigh);return ret;},get size(){return this.size_;},get root(){return this.root_;},dump_(){if(this.root_===undefined)return[];return this.root_.dump();}};const Colour={RED:'red',BLACK:'black'};function IntervalTreeNode(datum,lowValue,highValue){this.lowValue_=lowValue;this.data_=[{datum,high:highValue,low:lowValue}];this.colour_=Colour.RED;this.parentNode_=undefined;this.leftNode_=undefined;this.rightNode_=undefined;this.maxHighLeft_=undefined;this.maxHighRight_=undefined;}\nIntervalTreeNode.prototype={appendIntersectionsInto_(ret,queryLow,queryHigh){if(this.lowValue_>=queryHigh){if(!this.leftNode_)return;return this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}\nif(this.maxHighLeft_>queryLow){this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}\nif(this.highValue>queryLow){for(let i=(this.data.length-1);i>=0;--i){if(this.data[i].high<queryLow)break;ret.push(this.data[i].datum);}}\nif(this.rightNode_){this.rightNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}},get colour(){return this.colour_;},set colour(colour){this.colour_=colour;},get key(){return this.lowValue_;},get lowValue(){return this.lowValue_;},get highValue(){return this.data_[this.data_.length-1].high;},set leftNode(left){this.leftNode_=left;},get leftNode(){return this.leftNode_;},get hasLeftNode(){return this.leftNode_!==undefined;},set rightNode(right){this.rightNode_=right;},get rightNode(){return this.rightNode_;},get hasRightNode(){return this.rightNode_!==undefined;},set parentNode(parent){this.parentNode_=parent;},get parentNode(){return this.parentNode_;},get isRootNode(){return this.parentNode_===undefined;},set maxHighLeft(high){this.maxHighLeft_=high;},get maxHighLeft(){return this.maxHighLeft_;},set maxHighRight(high){this.maxHighRight_=high;},get maxHighRight(){return this.maxHighRight_;},get data(){return this.data_;},get isRed(){return this.colour_===Colour.RED;},merge(node){for(let i=0;i<node.data.length;i++){this.data_.push(node.data[i]);}\nthis.data_.sort(function(a,b){return a.high-b.high;});},dump(){const ret={};if(this.leftNode_){ret.left=this.leftNode_.dump();}\nret.data=this.data_.map(function(d){return[d.low,d.high];});if(this.rightNode_){ret.right=this.rightNode_.dump();}\nreturn ret;}};return{IntervalTree,};});'use strict';tr.exportTo('tr.b.math',function(){const tmpVec2s=[];for(let i=0;i<8;i++){tmpVec2s[i]=vec2.create();}\nconst tmpVec2a=vec4.create();const tmpVec4a=vec4.create();const tmpVec4b=vec4.create();const tmpMat4=mat4.create();const tmpMat4b=mat4.create();const p00=vec2.createXY(0,0);const p10=vec2.createXY(1,0);const p01=vec2.createXY(0,1);const p11=vec2.createXY(1,1);const lerpingVecA=vec2.create();const lerpingVecB=vec2.create();function lerpVec2(out,a,b,amt){vec2.scale(lerpingVecA,a,amt);vec2.scale(lerpingVecB,b,1-amt);vec2.add(out,lerpingVecA,lerpingVecB);vec2.normalize(out,out);return out;}\nfunction Quad(){this.p1=vec2.create();this.p2=vec2.create();this.p3=vec2.create();this.p4=vec2.create();}\nQuad.fromXYWH=function(x,y,w,h){const q=new Quad();vec2.set(q.p1,x,y);vec2.set(q.p2,x+w,y);vec2.set(q.p3,x+w,y+h);vec2.set(q.p4,x,y+h);return q;};Quad.fromRect=function(r){return new Quad.fromXYWH(r.x,r.y,r.width,r.height);};Quad.from4Vecs=function(p1,p2,p3,p4){const q=new Quad();vec2.set(q.p1,p1[0],p1[1]);vec2.set(q.p2,p2[0],p2[1]);vec2.set(q.p3,p3[0],p3[1]);vec2.set(q.p4,p4[0],p4[1]);return q;};Quad.from8Array=function(arr){if(arr.length!==8){throw new Error('Array must be 8 long');}\nconst q=new Quad();q.p1[0]=arr[0];q.p1[1]=arr[1];q.p2[0]=arr[2];q.p2[1]=arr[3];q.p3[0]=arr[4];q.p3[1]=arr[5];q.p4[0]=arr[6];q.p4[1]=arr[7];return q;};Quad.prototype={pointInside(point){return pointInImplicitQuad(point,this.p1,this.p2,this.p3,this.p4);},boundingRect(){const x0=Math.min(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y0=Math.min(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);const x1=Math.max(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y1=Math.max(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);return new tr.b.math.Rect.fromXYWH(x0,y0,x1-x0,y1-y0);},clone(){const q=new Quad();vec2.copy(q.p1,this.p1);vec2.copy(q.p2,this.p2);vec2.copy(q.p3,this.p3);vec2.copy(q.p4,this.p4);return q;},scale(s){const q=new Quad();this.scaleFast(q,s);return q;},scaleFast(dstQuad,s){vec2.copy(dstQuad.p1,this.p1,s);vec2.copy(dstQuad.p2,this.p2,s);vec2.copy(dstQuad.p3,this.p3,s);vec2.copy(dstQuad.p3,this.p3,s);},isRectangle(){const bounds=this.boundingRect();return(bounds.x===this.p1[0]&&bounds.y===this.p1[1]&&bounds.width===this.p2[0]-this.p1[0]&&bounds.y===this.p2[1]&&bounds.width===this.p3[0]-this.p1[0]&&bounds.height===this.p3[1]-this.p2[1]&&bounds.x===this.p4[0]&&bounds.height===this.p4[1]-this.p2[1]);},projectUnitRect(rect){const q=new Quad();this.projectUnitRectFast(q,rect);return q;},projectUnitRectFast(dstQuad,rect){const v12=tmpVec2s[0];const v14=tmpVec2s[1];const v23=tmpVec2s[2];const v43=tmpVec2s[3];vec2.sub(v12,this.p2,this.p1);const l12=vec2.length(v12);vec2.scale(v12,v12,1/l12);vec2.sub(v14,this.p4,this.p1);const l14=vec2.length(v14);vec2.scale(v14,v14,1/l14);vec2.sub(v23,this.p3,this.p2);const l23=vec2.length(v23);vec2.scale(v23,v23,1/l23);vec2.sub(v43,this.p3,this.p4);const l43=vec2.length(v43);vec2.scale(v43,v43,1/l43);const b12=tmpVec2s[0];const b14=tmpVec2s[1];const b23=tmpVec2s[2];const b43=tmpVec2s[3];lerpVec2(b12,v12,v43,rect.y);lerpVec2(b43,v12,v43,1-rect.bottom);lerpVec2(b14,v14,v23,rect.x);lerpVec2(b23,v14,v23,1-rect.right);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*rect.x,b14,l14*rect.y);vec2.add(dstQuad.p1,this.p1,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*-(1.0-rect.right),b23,l23*rect.y);vec2.add(dstQuad.p2,this.p2,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*-(1.0-rect.right),b23,l23*-(1.0-rect.bottom));vec2.add(dstQuad.p3,this.p3,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*rect.left,b14,l14*-(1.0-rect.bottom));vec2.add(dstQuad.p4,this.p4,tmpVec2a);},toString(){return'Quad('+\nvec2.toString(this.p1)+', '+\nvec2.toString(this.p2)+', '+\nvec2.toString(this.p3)+', '+\nvec2.toString(this.p4)+')';}};function sign(p1,p2,p3){return(p1[0]-p3[0])*(p2[1]-p3[1])-\n(p2[0]-p3[0])*(p1[1]-p3[1]);}\nfunction pointInTriangle2(pt,p1,p2,p3){const b1=sign(pt,p1,p2)<0.0;const b2=sign(pt,p2,p3)<0.0;const b3=sign(pt,p3,p1)<0.0;return((b1===b2)&&(b2===b3));}\nfunction pointInImplicitQuad(point,p1,p2,p3,p4){return pointInTriangle2(point,p1,p2,p3)||pointInTriangle2(point,p1,p3,p4);}\nreturn{pointInTriangle2,pointInImplicitQuad,Quad,};});'use strict';tr.exportTo('tr.b',function(){const ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS=10;const REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS=100;const recordRAFStacks=false;let pendingPreAFs=[];let pendingRAFs=[];const pendingIdleCallbacks=[];let currentRAFDispatchList=undefined;let rafScheduled=false;let idleWorkScheduled=false;function scheduleRAF(){if(rafScheduled)return;rafScheduled=true;if(tr.isHeadless){Promise.resolve().then(function(){processRequests(false,0);},function(e){throw e;});}else{if(window.requestAnimationFrame){window.requestAnimationFrame(processRequests.bind(this,false));}else{const delta=Date.now()-window.performance.now();window.webkitRequestAnimationFrame(function(domTimeStamp){processRequests(false,domTimeStamp-delta);});}}}\nfunction nativeRequestIdleCallbackSupported(){return!tr.isHeadless&&window.requestIdleCallback;}\nfunction scheduleIdleWork(){if(idleWorkScheduled)return;if(!nativeRequestIdleCallbackSupported()){scheduleRAF();return;}\nidleWorkScheduled=true;window.requestIdleCallback(function(deadline,didTimeout){processIdleWork(false,deadline);},{timeout:REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS});}\nfunction onAnimationFrameError(e,opt_stack){console.log(e.stack);if(tr.isHeadless)throw e;if(opt_stack)console.log(opt_stack);if(e.message){console.error(e.message,e.stack);}else{console.error(e);}}\nfunction runTask(task,frameBeginTime){try{task.callback.call(task.context,frameBeginTime);}catch(e){tr.b.onAnimationFrameError(e,task.stack);}}\nfunction processRequests(forceAllTasksToRun,frameBeginTime){rafScheduled=false;const currentPreAFs=pendingPreAFs;currentRAFDispatchList=pendingRAFs;pendingPreAFs=[];pendingRAFs=[];const hasRAFTasks=currentPreAFs.length||currentRAFDispatchList.length;for(let i=0;i<currentPreAFs.length;i++){runTask(currentPreAFs[i],frameBeginTime);}\nwhile(currentRAFDispatchList.length>0){runTask(currentRAFDispatchList.shift(),frameBeginTime);}\ncurrentRAFDispatchList=undefined;if((!hasRAFTasks&&!nativeRequestIdleCallbackSupported())||forceAllTasksToRun){const rafCompletionDeadline=frameBeginTime+ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS;processIdleWork(forceAllTasksToRun,{timeRemaining(){return rafCompletionDeadline-window.performance.now();}});}\nif(pendingIdleCallbacks.length>0)scheduleIdleWork();}\nfunction processIdleWork(forceAllTasksToRun,deadline){idleWorkScheduled=false;while(pendingIdleCallbacks.length>0){runTask(pendingIdleCallbacks.shift());if(!forceAllTasksToRun&&(tr.isHeadless||deadline.timeRemaining()<=0)){break;}}\nif(pendingIdleCallbacks.length>0)scheduleIdleWork();}\nfunction getStack_(){if(!recordRAFStacks)return'';const stackLines=tr.b.stackTrace();stackLines.shift();return stackLines.join('\\n');}\nfunction requestPreAnimationFrame(callback,opt_this){pendingPreAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}\nfunction requestAnimationFrameInThisFrameIfPossible(callback,opt_this){if(!currentRAFDispatchList){requestAnimationFrame(callback,opt_this);return;}\ncurrentRAFDispatchList.push({callback,context:opt_this||global,stack:getStack_()});return;}\nfunction requestAnimationFrame(callback,opt_this){pendingRAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}\nfunction animationFrame(){return new Promise(resolve=>requestAnimationFrame(resolve));}\nfunction requestIdleCallback(callback,opt_this){pendingIdleCallbacks.push({callback,context:opt_this||global,stack:getStack_()});scheduleIdleWork();}\nfunction forcePendingRAFTasksToRun(frameBeginTime){if(!rafScheduled)return;processRequests(false,frameBeginTime);}\nfunction forceAllPendingTasksToRunForTest(){if(!rafScheduled&&!idleWorkScheduled)return;processRequests(true,0);}\nfunction timeout(ms){return new Promise(resolve=>window.setTimeout(resolve,ms));}\nfunction idle(){return new Promise(resolve=>requestIdleCallback(resolve));}\nreturn{animationFrame,forceAllPendingTasksToRunForTest,forcePendingRAFTasksToRun,idle,onAnimationFrameError,requestAnimationFrame,requestAnimationFrameInThisFrameIfPossible,requestIdleCallback,requestPreAnimationFrame,timeout,};});'use strict';tr.exportTo('tr.b',function(){class Mark{constructor(groupName,functionName,opt_timestamp){if(tr.isHeadless)return;this.groupName_=groupName;this.functionName_=functionName;const guid=tr.b.GUID.allocateSimple();this.measureName_=`${groupName} ${functionName}`;if(opt_timestamp){this.startMark_={startTime:opt_timestamp};}else{this.startMarkName_=`${this.measureName} ${guid} start`;}\nthis.endMark_=undefined;this.endMarkName_=`${this.measureName} ${guid} end`;window.performance.mark(this.startMarkName_);}\nget groupName(){return this.groupName_;}\nget functionName(){return this.functionName_;}\nget measureName(){return this.measureName_;}\nget startMark(){return this.startMark_||tr.b.getOnlyElement(window.performance.getEntriesByName(this.startMarkName_));}\nget endMark(){return this.endMark_||tr.b.getOnlyElement(window.performance.getEntriesByName(this.endMarkName_));}\nget durationMs(){return this.endMark.startTime-this.startMark.startTime;}\nend(opt_timestamp){if(tr.isHeadless)return;if(opt_timestamp){this.endMark_={startTime:opt_timestamp};}else{window.performance.mark(this.endMarkName_);}\nif(!this.startMark_&&!this.endMark_){window.performance.measure(this.measureName_,this.startMarkName_,this.endMarkName_);}else if(Timing.logVoidMarks&&!(window.ga instanceof Function)){console.log('void mark',this.groupName,this.functionName,this.durationMs);}\nif(!(window.ga instanceof Function))return;ga('send',{hitType:'event',eventCategory:this.groupName,eventAction:this.functionName,eventValue:this.durationMs,});}}\nclass Timing{static mark(groupName,functionName,opt_timestamp){return new Mark(groupName,functionName,opt_timestamp);}\nstatic instant(groupName,functionName,opt_value){const valueString=opt_value===undefined?'':' '+opt_value;if(console&&console.timeStamp){console.timeStamp(`${groupName} ${functionName}${valueString}`);}\nif(window&&window.ga instanceof Function){ga('send',{hitType:'event',eventCategory:groupName,eventAction:functionName,eventValue:opt_value,});}}\nstatic getCurrentTimeMs(){try{return performance.now();}catch(error){}\nreturn 0;}}\nTiming.logVoidMarks=false;return{Timing,};});'use strict';tr.exportTo('tr.b',function(){const Timing=tr.b.Timing;function Task(runCb,thisArg){if(runCb!==undefined&&thisArg===undefined&&runCb.prototype!==undefined){throw new Error('Almost certainly you meant to pass a bound callback '+'or thisArg.');}\nthis.runCb_=runCb;this.thisArg_=thisArg;this.afterTask_=undefined;this.subTasks_=[];this.updatesUi_=false;}\nTask.prototype={get name(){return this.runCb_.name;},set updatesUi(value){this.updatesUi_=value;},subTask(cb,thisArg){if(cb instanceof Task){this.subTasks_.push(cb);}else{this.subTasks_.push(new Task(cb,thisArg));}\nreturn this.subTasks_[this.subTasks_.length-1];},run(){if(this.runCb_!==undefined)this.runCb_.call(this.thisArg_,this);const subTasks=this.subTasks_;this.subTasks_=undefined;if(!subTasks.length)return this.afterTask_;for(let i=1;i<subTasks.length;i++){subTasks[i-1].afterTask_=subTasks[i];}\nsubTasks[subTasks.length-1].afterTask_=this.afterTask_;return subTasks[0];},after(cb,thisArg){if(this.afterTask_){throw new Error('Has an after task already');}\nif(cb instanceof Task){this.afterTask_=cb;}else{this.afterTask_=new Task(cb,thisArg);}\nreturn this.afterTask_;},enqueue(cb,thisArg){if(!this.afterTask_)return this.after(cb,thisArg);return this.afterTask_.enqueue(cb,thisArg);}};Task.RunSynchronously=function(task){let curTask=task;while(curTask){curTask=curTask.run();}};Task.RunWhenIdle=function(task){return new Promise(function(resolve,reject){let curTask=task;function runAnother(){try{curTask=curTask.run();}catch(e){reject(e);return;}\nif(curTask){if(curTask.updatesUi_){tr.b.requestAnimationFrameInThisFrameIfPossible(runAnother);}else{tr.b.requestIdleCallback(runAnother);}\nreturn;}\nresolve();}\ntr.b.requestIdleCallback(runAnother);});};return{Task,};});'use strict';tr.exportTo('tr.c',function(){function makeCaseInsensitiveRegex(pattern){pattern=pattern.replace(/[.*+?^${}()|[\\]\\\\]/g,'\\\\$&');return new RegExp(pattern,'i');}\nfunction Filter(){}\nFilter.prototype={__proto__:Object.prototype,matchCounter(counter){return true;},matchCpu(cpu){return true;},matchProcess(process){return true;},matchSlice(slice){return true;},matchThread(thread){return true;}};function TitleOrCategoryFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);if(!text.length){throw new Error('Filter text is empty.');}}\nTitleOrCategoryFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){if(slice.title===undefined&&slice.category===undefined){return false;}\nreturn this.regex_.test(slice.title)||(!!slice.category&&this.regex_.test(slice.category));}};function ExactTitleFilter(text){Filter.call(this);this.text_=text;if(!text.length){throw new Error('Filter text is empty.');}}\nExactTitleFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){return slice.title===this.text_;}};function FullTextFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);this.titleOrCategoryFilter_=new TitleOrCategoryFilter(text);}\nFullTextFilter.prototype={__proto__:Filter.prototype,matchObject_(obj){for(const key in obj){if(!obj.hasOwnProperty(key))continue;if(this.regex_.test(key))return true;if(this.regex_.test(obj[key]))return true;}\nreturn false;},matchSlice(slice){if(this.titleOrCategoryFilter_.matchSlice(slice))return true;return this.matchObject_(slice.args);}};return{Filter,TitleOrCategoryFilter,ExactTitleFilter,FullTextFilter,};});'use strict';tr.exportTo('tr.model',function(){const ClockDomainId={BATTOR:'BATTOR',UNKNOWN_CHROME_LEGACY:'UNKNOWN_CHROME_LEGACY',LINUX_CLOCK_MONOTONIC:'LINUX_CLOCK_MONOTONIC',LINUX_FTRACE_GLOBAL:'LINUX_FTRACE_GLOBAL',MAC_MACH_ABSOLUTE_TIME:'MAC_MACH_ABSOLUTE_TIME',WIN_ROLLOVER_PROTECTED_TIME_GET_TIME:'WIN_ROLLOVER_PROTECTED_TIME_GET_TIME',WIN_QPC:'WIN_QPC',SYSTRACE:'SYSTRACE',TELEMETRY:'TELEMETRY'};const POSSIBLE_CHROME_CLOCK_DOMAINS=new Set([ClockDomainId.UNKNOWN_CHROME_LEGACY,ClockDomainId.LINUX_CLOCK_MONOTONIC,ClockDomainId.MAC_MACH_ABSOLUTE_TIME,ClockDomainId.WIN_ROLLOVER_PROTECTED_TIME_GET_TIME,ClockDomainId.WIN_QPC]);const BATTOR_FAST_SYNC_THRESHOLD_MS=3;function ClockSyncManager(){this.domainsSeen_=new Set();this.markersBySyncId_=new Map();this.transformerMapByDomainId_={};}\nClockSyncManager.prototype={addClockSyncMarker(domainId,syncId,startTs,opt_endTs){this.onDomainSeen_(domainId);if(Object.values(ClockDomainId).indexOf(domainId)<0){throw new Error('\"'+domainId+'\" is not in the list of known '+'clock domain IDs.');}\nif(this.modelDomainId_){throw new Error('Cannot add new clock sync markers after getting '+'a model time transformer.');}\nconst marker=new ClockSyncMarker(domainId,startTs,opt_endTs);if(!this.markersBySyncId_.has(syncId)){this.markersBySyncId_.set(syncId,[marker]);return;}\nconst markers=this.markersBySyncId_.get(syncId);if(markers.length===2){throw new Error('Clock sync with ID \"'+syncId+'\" is already '+'complete - cannot add a third clock sync marker to it.');}\nif(markers[0].domainId===domainId){throw new Error('A clock domain cannot sync with itself.');}\nmarkers.push(marker);this.onSyncCompleted_(markers[0],marker);},get completeSyncIds(){const completeSyncIds=[];for(const[syncId,markers]of this.markersBySyncId){if(markers.length===2)completeSyncIds.push(syncId);}\nreturn completeSyncIds;},get markersBySyncId(){return this.markersBySyncId_;},get domainsSeen(){return this.domainsSeen_;},getModelTimeTransformer(domainId){this.onDomainSeen_(domainId);if(!this.modelDomainId_){this.selectModelDomainId_();}\nreturn this.getTimeTransformerRaw_(domainId,this.modelDomainId_).fn;},getTimeTransformerError(fromDomainId,toDomainId){this.onDomainSeen_(fromDomainId);this.onDomainSeen_(toDomainId);return this.getTimeTransformerRaw_(fromDomainId,toDomainId).error;},getTimeTransformerRaw_(fromDomainId,toDomainId){const transformer=this.getTransformerBetween_(fromDomainId,toDomainId);if(!transformer){throw new Error('No clock sync markers exist pairing clock domain \"'+\nfromDomainId+'\" '+'with target clock domain \"'+\ntoDomainId+'\".');}\nreturn transformer;},getTransformerBetween_(fromDomainId,toDomainId){const visitedDomainIds=new Set();const queue=[{domainId:fromDomainId,transformer:Transformer.IDENTITY}];while(queue.length>0){queue.sort((domain1,domain2)=>domain1.transformer.error-domain2.transformer.error);const current=queue.shift();if(current.domainId===toDomainId){return current.transformer;}\nif(visitedDomainIds.has(current.domainId)){continue;}\nvisitedDomainIds.add(current.domainId);const outgoingTransformers=this.transformerMapByDomainId_[current.domainId];if(!outgoingTransformers)continue;for(const outgoingDomainId in outgoingTransformers){const toNextDomainTransformer=outgoingTransformers[outgoingDomainId];const toCurrentDomainTransformer=current.transformer;queue.push({domainId:outgoingDomainId,transformer:Transformer.compose(toNextDomainTransformer,toCurrentDomainTransformer)});}}\nreturn undefined;},selectModelDomainId_(){this.ensureAllDomainsAreConnected_();for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(this.domainsSeen_.has(chromeDomainId)){this.modelDomainId_=chromeDomainId;return;}}\nconst domainsSeenArray=Array.from(this.domainsSeen_);domainsSeenArray.sort();this.modelDomainId_=domainsSeenArray[0];},ensureAllDomainsAreConnected_(){let firstDomainId=undefined;for(const domainId of this.domainsSeen_){if(!firstDomainId){firstDomainId=domainId;continue;}\nif(!this.getTransformerBetween_(firstDomainId,domainId)){throw new Error('Unable to select a master clock domain because no '+'path can be found from \"'+firstDomainId+'\" to \"'+domainId+'\".');}}\nreturn true;},onDomainSeen_(domainId){if(domainId===ClockDomainId.UNKNOWN_CHROME_LEGACY&&!this.domainsSeen_.has(ClockDomainId.UNKNOWN_CHROME_LEGACY)){for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(chromeDomainId===ClockDomainId.UNKNOWN_CHROME_LEGACY){continue;}\nthis.collapseDomains_(ClockDomainId.UNKNOWN_CHROME_LEGACY,chromeDomainId);}}\nthis.domainsSeen_.add(domainId);},onSyncCompleted_(marker1,marker2){const forwardTransformer=Transformer.fromMarkers(marker1,marker2);const backwardTransformer=Transformer.fromMarkers(marker2,marker1);const existingTransformer=this.getOrCreateTransformerMap_(marker1.domainId)[marker2.domainId];if(!existingTransformer||forwardTransformer.error<existingTransformer.error){this.getOrCreateTransformerMap_(marker1.domainId)[marker2.domainId]=forwardTransformer;this.getOrCreateTransformerMap_(marker2.domainId)[marker1.domainId]=backwardTransformer;}},collapseDomains_(domain1Id,domain2Id){this.getOrCreateTransformerMap_(domain1Id)[domain2Id]=this.getOrCreateTransformerMap_(domain2Id)[domain1Id]=Transformer.IDENTITY;},getOrCreateTransformerMap_(domainId){if(!this.transformerMapByDomainId_[domainId]){this.transformerMapByDomainId_[domainId]={};}\nreturn this.transformerMapByDomainId_[domainId];},computeDotGraph(){let dotString='graph {\\n';const domainsSeen=[...this.domainsSeen_].sort();for(const domainId of domainsSeen){dotString+=`  ${domainId}[shape=box]\\n`;}\nconst markersBySyncIdEntries=[...this.markersBySyncId_.entries()].sort(([syncId1,markers1],[syncId2,markers2])=>syncId1.localeCompare(syncId2));for(const[syncId,markers]of markersBySyncIdEntries){const sortedMarkers=markers.sort((a,b)=>a.domainId.localeCompare(b.domainId));for(const m of markers){dotString+=`  \"${syncId}\" -- ${m.domainId} `;dotString+=`[label=\"[${m.startTs}, ${m.endTs}]\"]\\n`;}}\ndotString+='}';return dotString;}};function ClockSyncMarker(domainId,startTs,opt_endTs){this.domainId=domainId;this.startTs=startTs;this.endTs=opt_endTs===undefined?startTs:opt_endTs;}\nClockSyncMarker.prototype={get duration(){return this.endTs-this.startTs;},get ts(){return this.startTs+this.duration/2;}};function Transformer(fn,error){this.fn=fn;this.error=error;}\nTransformer.IDENTITY=new Transformer((x=>x),0);Transformer.compose=function(aToB,bToC){return new Transformer((ts)=>bToC.fn(aToB.fn(ts)),aToB.error+bToC.error);};Transformer.fromMarkers=function(fromMarker,toMarker){let fromTs=fromMarker.ts;let toTs=toMarker.ts;if(fromMarker.domainId===ClockDomainId.BATTOR&&toMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){toTs=toMarker.startTs;}else if(toMarker.domainId===ClockDomainId.BATTOR&&fromMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){fromTs=fromMarker.startTs;}\nconst tsShift=toTs-fromTs;return new Transformer((ts)=>ts+tsShift,fromMarker.duration+toMarker.duration);};return{ClockDomainId,ClockSyncManager,};});'use strict';tr.exportTo('tr.model',function(){function CounterSample(series,timestamp,value){tr.model.Event.call(this);this.series_=series;this.timestamp_=timestamp;this.value_=value;}\nCounterSample.groupByTimestamp=function(samples){const samplesByTimestamp=tr.b.groupIntoMap(samples,s=>s.timestamp);const timestamps=Array.from(samplesByTimestamp.keys());timestamps.sort();const groups=[];for(const ts of timestamps){const group=samplesByTimestamp.get(ts);group.sort((x,y)=>x.series.seriesIndex-y.series.seriesIndex);groups.push(group);}\nreturn groups;};CounterSample.prototype={__proto__:tr.model.Event.prototype,get series(){return this.series_;},get timestamp(){return this.timestamp_;},get value(){return this.value_;},set timestamp(timestamp){this.timestamp_=timestamp;},addBoundsToRange(range){range.addValue(this.timestamp);},getSampleIndex(){return tr.b.findLowIndexInSortedArray(this.series.timestamps,function(x){return x;},this.timestamp_);},get userFriendlyName(){return'Counter sample from '+this.series_.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.timestamp);}};tr.model.EventRegistry.register(CounterSample,{name:'counterSample',pluralName:'counterSamples'});return{CounterSample,};});'use strict';tr.exportTo('tr.model',function(){const CounterSample=tr.model.CounterSample;function CounterSeries(name,color){tr.model.EventContainer.call(this);this.name_=name;this.color_=color;this.timestamps_=[];this.samples_=[];this.counter=undefined;this.seriesIndex=undefined;}\nCounterSeries.prototype={__proto__:tr.model.EventContainer.prototype,get length(){return this.timestamps_.length;},get name(){return this.name_;},get color(){return this.color_;},get samples(){return this.samples_;},get timestamps(){return this.timestamps_;},getSample(idx){return this.samples_[idx];},getTimestamp(idx){return this.timestamps_[idx];},addCounterSample(ts,val){const sample=new CounterSample(this,ts,val);this.addSample(sample);return sample;},addSample(sample){this.timestamps_.push(sample.timestamp);this.samples_.push(sample);},getStatistics(sampleIndices){let sum=0;let min=Number.MAX_VALUE;let max=-Number.MAX_VALUE;for(let i=0;i<sampleIndices.length;++i){const sample=this.getSample(sampleIndices[i]).value;sum+=sample;min=Math.min(sample,min);max=Math.max(sample,max);}\nreturn{min,max,avg:(sum/sampleIndices.length),start:this.getSample(sampleIndices[0]).value,end:this.getSample(sampleIndices.length-1).value};},shiftTimestampsForward(amount){for(let i=0;i<this.timestamps_.length;++i){this.timestamps_[i]+=amount;this.samples_[i].timestamp=this.timestamps_[i];}},*childEvents(){yield*this.samples_;},*childEventContainers(){}};return{CounterSeries,};});'use strict';tr.exportTo('tr.model',function(){function Counter(parent,id,category,name){tr.model.EventContainer.call(this);this.parent_=parent;this.id_=id;this.category_=category||'';this.name_=name;this.series_=[];this.totals=[];}\nCounter.prototype={__proto__:tr.model.EventContainer.prototype,get parent(){return this.parent_;},get id(){return this.id_;},get category(){return this.category_;},get name(){return this.name_;},*childEvents(){},*childEventContainers(){yield*this.series;},set timestamps(arg){throw new Error('Bad counter API. No cookie.');},set seriesNames(arg){throw new Error('Bad counter API. No cookie.');},set seriesColors(arg){throw new Error('Bad counter API. No cookie.');},set samples(arg){throw new Error('Bad counter API. No cookie.');},addSeries(series){series.counter=this;series.seriesIndex=this.series_.length;this.series_.push(series);return series;},getSeries(idx){return this.series_[idx];},get series(){return this.series_;},get numSeries(){return this.series_.length;},get numSamples(){if(this.series_.length===0)return 0;return this.series_[0].length;},get timestamps(){if(this.series_.length===0)return[];return this.series_[0].timestamps;},getSampleStatistics(sampleIndices){sampleIndices.sort();const ret=[];this.series_.forEach(function(series){ret.push(series.getStatistics(sampleIndices));});return ret;},shiftTimestampsForward(amount){for(let i=0;i<this.series_.length;++i){this.series_[i].shiftTimestampsForward(amount);}},updateBounds(){this.totals=[];this.maxTotal=0;this.bounds.reset();if(this.series_.length===0)return;const firstSeries=this.series_[0];const lastSeries=this.series_[this.series_.length-1];this.bounds.addValue(firstSeries.getTimestamp(0));this.bounds.addValue(lastSeries.getTimestamp(lastSeries.length-1));const numSeries=this.numSeries;this.maxTotal=-Infinity;for(let i=0;i<firstSeries.length;++i){let total=0;this.series_.forEach(function(series){total+=series.getSample(i).value;this.totals.push(total);}.bind(this));this.maxTotal=Math.max(total,this.maxTotal);}}};Counter.compare=function(x,y){let tmp=x.parent.compareTo(y.parent);if(tmp!==0)return tmp;tmp=x.name.localeCompare(y.name);if(tmp===0)return x.tid-y.tid;return tmp;};return{Counter,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function CpuSlice(cat,title,colorId,start,args,opt_duration){Slice.apply(this,arguments);this.threadThatWasRunning=undefined;this.cpu=undefined;}\nCpuSlice.prototype={__proto__:Slice.prototype,get analysisTypeName(){return'tr.ui.analysis.CpuSlice';},getAssociatedTimeslice(){if(!this.threadThatWasRunning){return undefined;}\nconst timeSlices=this.threadThatWasRunning.timeSlices;for(let i=0;i<timeSlices.length;i++){const timeSlice=timeSlices[i];if(timeSlice.start!==this.start){continue;}\nif(timeSlice.duration!==this.duration){continue;}\nreturn timeSlice;}\nreturn undefined;}};tr.model.EventRegistry.register(CpuSlice,{name:'cpuSlice',pluralName:'cpuSlices'});return{CpuSlice,};});'use strict';tr.exportTo('tr.model',function(){function TimeToObjectInstanceMap(createObjectInstanceFunction,parent,scopedId){this.createObjectInstanceFunction_=createObjectInstanceFunction;this.parent=parent;this.scopedId=scopedId;this.instances=[];}\nTimeToObjectInstanceMap.prototype={idWasCreated(category,name,ts){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts));this.instances[0].creationTsWasExplicit=true;return this.instances[0];}\nlet lastInstance=this.instances[this.instances.length-1];if(ts<lastInstance.deletionTs){throw new Error('Mutation of the TimeToObjectInstanceMap must be '+'done in ascending timestamp order.');}\nlastInstance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts);lastInstance.creationTsWasExplicit=true;this.instances.push(lastInstance);return lastInstance;},addSnapshot(category,name,ts,args,opt_baseTypeName){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts,opt_baseTypeName));}\nconst i=tr.b.findIndexInSortedIntervals(this.instances,function(inst){return inst.creationTs;},function(inst){return inst.deletionTs-inst.creationTs;},ts);let instance;if(i<0){instance=this.instances[0];if(ts>instance.deletionTs||instance.creationTsWasExplicit){throw new Error('At the provided timestamp, no instance was still alive');}\nif(instance.snapshots.length!==0){throw new Error('Cannot shift creationTs forward, '+'snapshots have been added. First snap was at ts='+\ninstance.snapshots[0].ts+' and creationTs was '+\ninstance.creationTs);}\ninstance.creationTs=ts;}else if(i>=this.instances.length){instance=this.instances[this.instances.length-1];if(ts>=instance.deletionTs){instance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts,opt_baseTypeName);this.instances.push(instance);}else{let lastValidIndex;for(let i=this.instances.length-1;i>=0;i--){const tmp=this.instances[i];if(ts>=tmp.deletionTs)break;if(tmp.creationTsWasExplicit===false&&tmp.snapshots.length===0){lastValidIndex=i;}}\nif(lastValidIndex===undefined){throw new Error('Cannot add snapshot. No instance was alive that was mutable.');}\ninstance=this.instances[lastValidIndex];instance.creationTs=ts;}}else{instance=this.instances[i];}\nreturn instance.addSnapshot(ts,args,name,opt_baseTypeName);},get lastInstance(){if(this.instances.length===0)return undefined;return this.instances[this.instances.length-1];},idWasDeleted(category,name,ts){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts));}\nlet lastInstance=this.instances[this.instances.length-1];if(ts<lastInstance.creationTs){throw new Error('Cannot delete an id before it was created');}\nif(lastInstance.deletionTs===Number.MAX_VALUE){lastInstance.wasDeleted(ts);return lastInstance;}\nif(ts<lastInstance.deletionTs){throw new Error('id was already deleted earlier.');}\nlastInstance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts);this.instances.push(lastInstance);lastInstance.wasDeleted(ts);return lastInstance;},getInstanceAt(ts){const i=tr.b.findIndexInSortedIntervals(this.instances,function(inst){return inst.creationTs;},function(inst){return inst.deletionTs-inst.creationTs;},ts);if(i<0){if(this.instances[0].creationTsWasExplicit){return undefined;}\nreturn this.instances[0];}else if(i>=this.instances.length){return undefined;}\nreturn this.instances[i];}};return{TimeToObjectInstanceMap,};});'use strict';tr.exportTo('tr.model',function(){const ObjectInstance=tr.model.ObjectInstance;const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectCollection(parent){tr.model.EventContainer.call(this);this.parent=parent;this.instanceMapsByScopedId_={};this.instancesByTypeName_={};this.createObjectInstance_=this.createObjectInstance_.bind(this);}\nObjectCollection.prototype={__proto__:tr.model.EventContainer.prototype,*childEvents(){for(const instance of this.getAllObjectInstances()){yield instance;yield*instance.snapshots;}},createObjectInstance_(parent,scopedId,category,name,creationTs,opt_baseTypeName){const constructor=tr.model.ObjectInstance.subTypes.getConstructor(category,name);const instance=new constructor(parent,scopedId,category,name,creationTs,opt_baseTypeName);const typeName=instance.typeName;let instancesOfTypeName=this.instancesByTypeName_[typeName];if(!instancesOfTypeName){instancesOfTypeName=[];this.instancesByTypeName_[typeName]=instancesOfTypeName;}\ninstancesOfTypeName.push(instance);return instance;},getOrCreateInstanceMap_(scopedId){let dict;if(scopedId.scope in this.instanceMapsByScopedId_){dict=this.instanceMapsByScopedId_[scopedId.scope];}else{dict={};this.instanceMapsByScopedId_[scopedId.scope]=dict;}\nlet instanceMap=dict[scopedId.id];if(instanceMap)return instanceMap;instanceMap=new tr.model.TimeToObjectInstanceMap(this.createObjectInstance_,this.parent,scopedId);dict[scopedId.id]=instanceMap;return instanceMap;},idWasCreated(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);return instanceMap.idWasCreated(category,name,ts);},addSnapshot(scopedId,category,name,ts,args,opt_baseTypeName){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const snapshot=instanceMap.addSnapshot(category,name,ts,args,opt_baseTypeName);if(snapshot.objectInstance.category!==category){const msg='Added snapshot name='+name+' with cat='+category+' impossible. It instance was created/snapshotted with cat='+\nsnapshot.objectInstance.category+' name='+\nsnapshot.objectInstance.name;throw new Error(msg);}\nif(opt_baseTypeName&&snapshot.objectInstance.baseTypeName!==opt_baseTypeName){throw new Error('Could not add snapshot with baseTypeName='+\nopt_baseTypeName+'. It '+'was previously created with name='+\nsnapshot.objectInstance.baseTypeName);}\nif(snapshot.objectInstance.name!==name){throw new Error('Could not add snapshot with name='+name+'. It '+'was previously created with name='+\nsnapshot.objectInstance.name);}\nreturn snapshot;},idWasDeleted(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const deletedInstance=instanceMap.idWasDeleted(category,name,ts);if(!deletedInstance)return;if(deletedInstance.category!==category){const msg='Deleting object '+deletedInstance.name+' with a different category '+'than when it was created. It previous had cat='+\ndeletedInstance.category+' but the delete command '+'had cat='+category;throw new Error(msg);}\nif(deletedInstance.baseTypeName!==name){throw new Error('Deletion requested for name='+\nname+' could not proceed: '+'An existing object with baseTypeName='+\ndeletedInstance.baseTypeName+' existed.');}},autoDeleteObjects(maxTimestamp){for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){const lastInstance=i2imap.lastInstance;if(lastInstance.deletionTs!==Number.MAX_VALUE)continue;i2imap.idWasDeleted(lastInstance.category,lastInstance.name,maxTimestamp);lastInstance.deletionTsWasExplicit=false;}}},getObjectInstanceAt(scopedId,ts){let instanceMap;if(scopedId.scope in this.instanceMapsByScopedId_){instanceMap=this.instanceMapsByScopedId_[scopedId.scope][scopedId.id];}\nif(!instanceMap)return undefined;return instanceMap.getInstanceAt(ts);},getSnapshotAt(scopedId,ts){const instance=this.getObjectInstanceAt(scopedId,ts);if(!instance)return undefined;return instance.getSnapshotAt(ts);},iterObjectInstances(iter,opt_this){opt_this=opt_this||this;for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){i2imap.instances.forEach(iter,opt_this);}}},getAllObjectInstances(){const instances=[];this.iterObjectInstances(function(i){instances.push(i);});return instances;},getAllInstancesNamed(name){return this.instancesByTypeName_[name];},getAllInstancesByTypeName(){return this.instancesByTypeName_;},preInitializeAllObjects(){this.iterObjectInstances(function(instance){instance.preInitialize();});},initializeAllObjects(){this.iterObjectInstances(function(instance){instance.initialize();});},initializeInstances(){this.iterObjectInstances(function(instance){instance.initialize();});},updateBounds(){this.bounds.reset();this.iterObjectInstances(function(instance){instance.updateBounds();this.bounds.addRange(instance.bounds);},this);},shiftTimestampsForward(amount){this.iterObjectInstances(function(instance){instance.shiftTimestampsForward(amount);});},addCategoriesToDict(categoriesDict){this.iterObjectInstances(function(instance){categoriesDict[instance.category]=true;});}};return{ObjectCollection,};});'use strict';tr.exportTo('tr.model',function(){class AsyncSliceGroup extends tr.model.EventContainer{constructor(parentContainer,opt_name){super();this.parentContainer_=parentContainer;this.name_=opt_name;this.slices=[];this.viewSubGroups_=undefined;this.nestedLevel_=0;this.hasNestedSubGroups_=true;this.title_=undefined;}\nget parentContainer(){return this.parentContainer_;}\nget model(){return this.parentContainer_.parent.model;}\nget stableId(){return this.parentContainer_.stableId+'.AsyncSliceGroup';}\nget title(){if(this.nested_level_===0){return'<root>';}\nreturn this.title_;}\ngetSettingsKey(){if(this.name_===undefined){return undefined;}\nconst parentKey=this.parentContainer_.getSettingsKey();if(parentKey===undefined){return undefined;}\nreturn parentKey+'.'+this.name_;}\npush(slice){if(this.viewSubGroups_!==undefined){throw new Error('No new slices are allowed when view sub-groups already formed.');}\nslice.parentContainer=this.parentContainer;this.slices.push(slice);return slice;}\nget length(){return this.slices.length;}\nshiftTimestampsForward(amount){for(const slice of this.childEvents()){slice.start+=amount;}}\nupdateBounds(){this.bounds.reset();for(let i=0;i<this.slices.length;i++){this.bounds.addValue(this.slices[i].start);this.bounds.addValue(this.slices[i].end);}}\nautoCloseOpenSlices(){const maxTimestamp=this.parentContainer_.parent.model.bounds.max;for(const slice of this.childEvents()){if(slice.didNotFinish){slice.duration=maxTimestamp-slice.start;}}}\nget viewSubGroups(){if(!this.hasNestedSubGroups_||this.nestedLevel_===2){return[];}\nif(this.viewSubGroups_!==undefined){return this.viewSubGroups_;}\nconst subGroupsByTitle=new Map();for(const slice of this.slices){let subGroupTitle=slice.viewSubGroupTitle;let hasNestedSubGroups=false;if(this.nestedLevel_===0&&slice.viewSubGroupGroupingKey!==undefined){subGroupTitle=slice.viewSubGroupGroupingKey;hasNestedSubGroups=true;}\nlet subGroup=subGroupsByTitle.get(subGroupTitle);if(subGroup===undefined){let name;if(this.name_!==undefined){name=this.name_+'.'+subGroupTitle;}else{name=subGroupTitle;}\nsubGroup=new AsyncSliceGroup(this.parentContainer_,name);subGroup.title_=subGroupTitle;subGroup.hasNestedSubGroups_=hasNestedSubGroups;subGroup.nestedLevel_=this.nestedLevel_+1;subGroupsByTitle.set(subGroupTitle,subGroup);}\nsubGroup.push(slice);}\nthis.viewSubGroups_=Array.from(subGroupsByTitle.values());this.viewSubGroups_.sort((a,b)=>a.title.localeCompare(b.title));return this.viewSubGroups_;}*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const slice of this.slices){if(slice.isTopLevel){yield*slice.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}}}*childEvents(){for(const slice of this.slices){yield slice;yield*slice.enumerateAllDescendents();}}*childEventContainers(){}}\nreturn{AsyncSliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function ThreadSlice(cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId){Slice.call(this,cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId);this.subSlices=[];}\nThreadSlice.prototype={__proto__:Slice.prototype,get overlappingSamples(){const samples=new tr.model.EventSet();if(!this.parentContainer||!this.parentContainer.samples){return samples;}\nthis.parentContainer.samples.forEach(function(sample){if(this.start<=sample.start&&sample.start<=this.end){samples.push(sample);}},this);return samples;}};tr.model.EventRegistry.register(ThreadSlice,{name:'slice',pluralName:'slices'});return{ThreadSlice,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const ThreadSlice=tr.model.ThreadSlice;function getSliceLo(s){return s.start;}\nfunction getSliceHi(s){return s.end;}\nfunction SliceGroup(parentContainer,opt_sliceConstructor,opt_name){tr.model.EventContainer.call(this);this.parentContainer_=parentContainer;const sliceConstructor=opt_sliceConstructor||ThreadSlice;this.sliceConstructor=sliceConstructor;this.sliceConstructorSubTypes=this.sliceConstructor.subTypes;if(!this.sliceConstructorSubTypes){throw new Error('opt_sliceConstructor must have a subtype registry.');}\nthis.openPartialSlices_=[];this.slices=[];this.topLevelSlices=[];this.haveTopLevelSlicesBeenBuilt=false;this.name_=opt_name;if(this.model===undefined){throw new Error('SliceGroup must have model defined.');}}\nSliceGroup.prototype={__proto__:tr.model.EventContainer.prototype,get parentContainer(){return this.parentContainer_;},get model(){return this.parentContainer_.model;},get stableId(){return this.parentContainer_.stableId+'.SliceGroup';},getSettingsKey(){if(!this.name_)return undefined;const parentKey=this.parentContainer_.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},get length(){return this.slices.length;},pushSlice(slice){this.haveTopLevelSlicesBeenBuilt=false;slice.parentContainer=this.parentContainer_;this.slices.push(slice);return slice;},pushSlices(slices){this.haveTopLevelSlicesBeenBuilt=false;slices.forEach(function(slice){slice.parentContainer=this.parentContainer_;this.slices.push(slice);},this);},beginSlice(category,title,ts,opt_args,opt_tts,opt_argsStripped,opt_colorId,opt_bindId){const colorId=opt_colorId||ColorScheme.getColorIdForGeneralPurposeString(title);const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(category,title);const slice=new sliceType(category,title,colorId,ts,opt_args?opt_args:{},null,opt_tts,undefined,opt_argsStripped,opt_bindId);this.openPartialSlices_.push(slice);slice.didNotFinish=true;this.pushSlice(slice);return slice;},isTimestampValidForBeginOrEnd(ts){if(!this.openPartialSlices_.length)return true;const top=this.openPartialSlices_[this.openPartialSlices_.length-1];return ts>=top.start;},get openSliceCount(){return this.openPartialSlices_.length;},get mostRecentlyOpenedPartialSlice(){if(!this.openPartialSlices_.length)return undefined;return this.openPartialSlices_[this.openPartialSlices_.length-1];},endSlice(ts,opt_tts,opt_colorId){if(!this.openSliceCount){throw new Error('endSlice called without an open slice');}\nconst slice=this.openPartialSlices_[this.openSliceCount-1];this.openPartialSlices_.splice(this.openSliceCount-1,1);if(ts<slice.start){throw new Error('Slice '+slice.title+' end time is before its start.');}\nslice.duration=ts-slice.start;slice.didNotFinish=false;slice.colorId=opt_colorId||slice.colorId;if(opt_tts&&slice.cpuStart!==undefined){slice.cpuDuration=opt_tts-slice.cpuStart;}\nreturn slice;},pushCompleteSlice(category,title,ts,duration,tts,cpuDuration,opt_args,opt_argsStripped,opt_colorId,opt_bindId){const colorId=opt_colorId||ColorScheme.getColorIdForGeneralPurposeString(title);const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(category,title);const slice=new sliceType(category,title,colorId,ts,opt_args?opt_args:{},duration,tts,cpuDuration,opt_argsStripped,opt_bindId);if(duration===undefined){slice.didNotFinish=true;}\nthis.pushSlice(slice);return slice;},autoCloseOpenSlices(){this.updateBounds();const maxTimestamp=this.bounds.max;for(let sI=0;sI<this.slices.length;sI++){const slice=this.slices[sI];if(slice.didNotFinish){slice.duration=maxTimestamp-slice.start;}}\nthis.openPartialSlices_=[];},shiftTimestampsForward(amount){for(let sI=0;sI<this.slices.length;sI++){const slice=this.slices[sI];slice.start=(slice.start+amount);}},updateBounds(){this.bounds.reset();for(let i=0;i<this.slices.length;i++){this.bounds.addValue(this.slices[i].start);this.bounds.addValue(this.slices[i].end);}},copySlice(slice){const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(slice.category,slice.title);const newSlice=new sliceType(slice.category,slice.title,slice.colorId,slice.start,slice.args,slice.duration,slice.cpuStart,slice.cpuDuration);newSlice.didNotFinish=slice.didNotFinish;return newSlice;},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){if(!this.haveTopLevelSlicesBeenBuilt){throw new Error('Nope');}\nfor(const s of this.topLevelSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},*childEvents(){yield*this.slices;},*childEventContainers(){},*getDescendantEventsInSortedRanges(ranges,opt_containerPredicate){if(ranges.length===0||(opt_containerPredicate!==undefined&&!opt_containerPredicate(this))){return;}\nlet rangeIndex=0;let range=ranges[rangeIndex];for(const event of this.childEvents()){while(event.start>range.max){rangeIndex++;if(rangeIndex>=ranges.length)return;range=ranges[rangeIndex];}\nif(event.end>=range.min)yield event;}},getSlicesOfName(title){const slices=[];for(let i=0;i<this.slices.length;i++){if(this.slices[i].title===title){slices.push(this.slices[i]);}}\nreturn slices;},iterSlicesInTimeRange(callback,start,end){const ret=[];tr.b.iterateOverIntersectingIntervals(this.topLevelSlices,function(s){return s.start;},function(s){return s.duration;},start,end,function(topLevelSlice){callback(topLevelSlice);for(const slice of topLevelSlice.enumerateAllDescendents()){callback(slice);}});return ret;},findFirstSlice(){if(!this.haveTopLevelSlicesBeenBuilt){throw new Error('Nope');}\nif(0===this.slices.length)return undefined;return this.slices[0];},findSliceAtTs(ts){if(!this.haveTopLevelSlicesBeenBuilt)throw new Error('Nope');let i=tr.b.findIndexInSortedClosedIntervals(this.topLevelSlices,getSliceLo,getSliceHi,ts);if(i===-1||i===this.topLevelSlices.length){return undefined;}\nlet curSlice=this.topLevelSlices[i];while(true){i=tr.b.findIndexInSortedClosedIntervals(curSlice.subSlices,getSliceLo,getSliceHi,ts);if(i===-1||i===curSlice.subSlices.length){return curSlice;}\ncurSlice=curSlice.subSlices[i];}},findNextSliceAfter(ts,refGuid){let i=tr.b.findLowIndexInSortedArray(this.slices,getSliceLo,ts);if(i===this.slices.length){return undefined;}\nfor(;i<this.slices.length;i++){const slice=this.slices[i];if(slice.start>ts)return slice;if(slice.guid<=refGuid)continue;return slice;}\nreturn undefined;},hasCpuDuration_(){if(this.slices.some(function(slice){return slice.cpuDuration!==undefined;}))return true;return false;},createSubSlices(){this.haveTopLevelSlicesBeenBuilt=true;this.createSubSlicesImpl_();if(!this.hasCpuDuration_()&&this.parentContainer.timeSlices){this.addCpuTimeToSubslices_(this.parentContainer.timeSlices);}\nthis.slices.forEach(function(slice){let selfTime=slice.duration;for(let i=0;i<slice.subSlices.length;i++){selfTime-=slice.subSlices[i].duration;}\nslice.selfTime=selfTime;if(slice.cpuDuration===undefined)return;let cpuSelfTime=slice.cpuDuration;for(let i=0;i<slice.subSlices.length;i++){if(slice.subSlices[i].cpuDuration!==undefined){cpuSelfTime-=slice.subSlices[i].cpuDuration;}}\nslice.cpuSelfTime=cpuSelfTime;});},createSubSlicesImpl_(){const precisionUnit=this.model.intrinsicTimeUnit;function addSliceIfBounds(parent,child){if(parent.bounds(child,precisionUnit)){child.parentSlice=parent;if(parent.subSlices===undefined){parent.subSlices=[];}\nparent.subSlices.push(child);return true;}\nreturn false;}\nif(!this.slices.length)return;const ops=[];for(let i=0;i<this.slices.length;i++){if(this.slices[i].subSlices){this.slices[i].subSlices.splice(0,this.slices[i].subSlices.length);}\nops.push(i);}\nconst originalSlices=this.slices;ops.sort(function(ix,iy){const x=originalSlices[ix];const y=originalSlices[iy];if(x.start!==y.start){return x.start-y.start;}\nreturn ix-iy;});const slices=new Array(this.slices.length);for(let i=0;i<ops.length;i++){slices[i]=originalSlices[ops[i]];}\nlet rootSlice=slices[0];this.topLevelSlices=[];this.topLevelSlices.push(rootSlice);rootSlice.isTopLevel=true;for(let i=1;i<slices.length;i++){const slice=slices[i];while(rootSlice!==undefined&&(!addSliceIfBounds(rootSlice,slice))){rootSlice=rootSlice.parentSlice;}\nif(rootSlice===undefined){this.topLevelSlices.push(slice);slice.isTopLevel=true;}\nrootSlice=slice;}\nthis.slices=slices;},addCpuTimeToSubslices_(timeSlices){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;let sliceIdx=0;timeSlices.forEach(function(timeSlice){if(timeSlice.schedulingState===SCHEDULING_STATE.RUNNING){while(sliceIdx<this.topLevelSlices.length){if(this.addCpuTimeToSubslice_(this.topLevelSlices[sliceIdx],timeSlice)){sliceIdx++;}else{break;}}}},this);},addCpuTimeToSubslice_(slice,timeSlice){if(slice.start>timeSlice.end||slice.end<timeSlice.start){return slice.end<=timeSlice.end;}\nlet duration=timeSlice.duration;if(slice.start>timeSlice.start){duration-=slice.start-timeSlice.start;}\nif(timeSlice.end>slice.end){duration-=timeSlice.end-slice.end;}\nif(slice.cpuDuration){slice.cpuDuration+=duration;}else{slice.cpuDuration=duration;}\nfor(let i=0;i<slice.subSlices.length;i++){this.addCpuTimeToSubslice_(slice.subSlices[i],timeSlice);}\nreturn slice.end<=timeSlice.end;}};SliceGroup.merge=function(groupA,groupB){if(groupA.openPartialSlices_.length>0){throw new Error('groupA has open partial slices');}\nif(groupB.openPartialSlices_.length>0){throw new Error('groupB has open partial slices');}\nif(groupA.parentContainer!==groupB.parentContainer){throw new Error('Different parent threads. Cannot merge');}\nif(groupA.sliceConstructor!==groupB.sliceConstructor){throw new Error('Different slice constructors. Cannot merge');}\nconst result=new SliceGroup(groupA.parentContainer,groupA.sliceConstructor,groupA.name_);const slicesA=groupA.slices;const slicesB=groupB.slices;let idxA=0;let idxB=0;const openA=[];const openB=[];const splitOpenSlices=function(when){for(let i=0;i<openB.length;i++){const oldSlice=openB[i];const oldEnd=oldSlice.end;if(when<oldSlice.start||oldEnd<when){throw new Error('slice should not be split');}\nconst newSlice=result.copySlice(oldSlice);newSlice.start=when;newSlice.duration=oldEnd-when;if(newSlice.title.indexOf(' (cont.)')===-1){newSlice.title+=' (cont.)';}\noldSlice.duration=when-oldSlice.start;openB[i]=newSlice;result.pushSlice(newSlice);}};const closeOpenSlices=function(upTo){while(openA.length>0||openB.length>0){const nextA=openA[openA.length-1];const nextB=openB[openB.length-1];const endA=nextA&&nextA.end;const endB=nextB&&nextB.end;if((endA===undefined||endA>upTo)&&(endB===undefined||endB>upTo)){return;}\nif(endB===undefined||endA<endB){splitOpenSlices(endA);openA.pop();}else{openB.pop();}}};while(idxA<slicesA.length||idxB<slicesB.length){const sA=slicesA[idxA];const sB=slicesB[idxB];let nextSlice;let isFromB;if(sA===undefined||(sB!==undefined&&sA.start>sB.start)){nextSlice=result.copySlice(sB);isFromB=true;idxB++;}else{nextSlice=result.copySlice(sA);isFromB=false;idxA++;}\ncloseOpenSlices(nextSlice.start);result.pushSlice(nextSlice);if(isFromB){openB.push(nextSlice);}else{splitOpenSlices(nextSlice.start);openA.push(nextSlice);}}\ncloseOpenSlices();return result;};return{SliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const AsyncSlice=tr.model.AsyncSlice;const AsyncSliceGroup=tr.model.AsyncSliceGroup;const SliceGroup=tr.model.SliceGroup;const ThreadSlice=tr.model.ThreadSlice;const ThreadTimeSlice=tr.model.ThreadTimeSlice;function Thread(parent,tid){if(!parent){throw new Error('Parent must be provided.');}\ntr.model.EventContainer.call(this);this.parent=parent;this.sortIndex=0;this.tid=tid;this.name=undefined;this.samples_=undefined;this.sliceGroup=new SliceGroup(this,ThreadSlice,'slices');this.timeSlices=undefined;this.kernelSliceGroup=new SliceGroup(this,ThreadSlice,'kernel-slices');this.asyncSliceGroup=new AsyncSliceGroup(this,'async-slices');}\nThread.prototype={__proto__:tr.model.EventContainer.prototype,get model(){return this.parent.model;},get stableId(){return this.parent.stableId+'.'+this.tid;},compareTo(that){return Thread.compare(this,that);},*childEventContainers(){if(this.sliceGroup.length){yield this.sliceGroup;}\nif(this.kernelSliceGroup.length){yield this.kernelSliceGroup;}\nif(this.asyncSliceGroup.length){yield this.asyncSliceGroup;}},*childEvents(){if(this.timeSlices){yield*this.timeSlices;}},iterateAllPersistableObjects(cb){cb(this);if(this.sliceGroup.length){cb(this.sliceGroup);}\nthis.asyncSliceGroup.viewSubGroups.forEach(cb);},shiftTimestampsForward(amount){this.sliceGroup.shiftTimestampsForward(amount);if(this.timeSlices){for(let i=0;i<this.timeSlices.length;i++){const slice=this.timeSlices[i];slice.start+=amount;}}\nthis.kernelSliceGroup.shiftTimestampsForward(amount);this.asyncSliceGroup.shiftTimestampsForward(amount);},get isEmpty(){if(this.sliceGroup.length)return false;if(this.sliceGroup.openSliceCount)return false;if(this.timeSlices&&this.timeSlices.length)return false;if(this.kernelSliceGroup.length)return false;if(this.asyncSliceGroup.length)return false;if(this.samples_.length)return false;return true;},updateBounds(){this.bounds.reset();this.sliceGroup.updateBounds();this.bounds.addRange(this.sliceGroup.bounds);this.kernelSliceGroup.updateBounds();this.bounds.addRange(this.kernelSliceGroup.bounds);this.asyncSliceGroup.updateBounds();this.bounds.addRange(this.asyncSliceGroup.bounds);if(this.timeSlices&&this.timeSlices.length){this.bounds.addValue(this.timeSlices[0].start);this.bounds.addValue(this.timeSlices[this.timeSlices.length-1].end);}\nif(this.samples_&&this.samples_.length){this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].end);}},addCategoriesToDict(categoriesDict){for(let i=0;i<this.sliceGroup.length;i++){categoriesDict[this.sliceGroup.slices[i].category]=true;}\nfor(let i=0;i<this.kernelSliceGroup.length;i++){categoriesDict[this.kernelSliceGroup.slices[i].category]=true;}\nfor(let i=0;i<this.asyncSliceGroup.length;i++){categoriesDict[this.asyncSliceGroup.slices[i].category]=true;}\nif(this.samples_){for(let i=0;i<this.samples_.length;i++){categoriesDict[this.samples_[i].category]=true;}}},autoCloseOpenSlices(){this.sliceGroup.autoCloseOpenSlices();this.asyncSliceGroup.autoCloseOpenSlices();this.kernelSliceGroup.autoCloseOpenSlices();},mergeKernelWithUserland(){if(this.kernelSliceGroup.length>0){const newSlices=SliceGroup.merge(this.sliceGroup,this.kernelSliceGroup);this.sliceGroup.slices=newSlices.slices;this.kernelSliceGroup=new SliceGroup(this);this.updateBounds();}},createSubSlices(){this.sliceGroup.createSubSlices();this.samples_=this.parent.model.samples.filter(sample=>sample.thread===this);},get userFriendlyName(){return this.name||this.tid;},get userFriendlyDetails(){return'tid: '+this.tid+\n(this.name?', name: '+this.name:'');},getSettingsKey(){if(!this.name)return undefined;const parentKey=this.parent.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},getProcess(){return this.parent;},indexOfTimeSlice(timeSlice){const i=tr.b.findLowIndexInSortedArray(this.timeSlices,function(slice){return slice.start;},timeSlice.start);if(this.timeSlices[i]!==timeSlice)return undefined;return i;},sumOverToplevelSlicesInRange(range,func){let sum=0;tr.b.iterateOverIntersectingIntervals(this.sliceGroup.topLevelSlices,slice=>slice.start,slice=>slice.end,range.min,range.max,slice=>{let fractionOfSliceInsideRangeOfInterest=1;if(slice.duration>0){const intersection=range.findIntersection(slice.range);fractionOfSliceInsideRangeOfInterest=intersection.duration/slice.duration;}\nsum+=func(slice)*fractionOfSliceInsideRangeOfInterest;});return sum;},getCpuTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.cpuDuration||0);},getNumToplevelSlicesForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>1);},getWallTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.duration||0);},getSchedulingStatsForRange(start,end){const stats={};if(!this.timeSlices)return stats;function addStatsForSlice(threadTimeSlice){const overlapStart=Math.max(threadTimeSlice.start,start);const overlapEnd=Math.min(threadTimeSlice.end,end);const schedulingState=threadTimeSlice.schedulingState;if(!(schedulingState in stats))stats[schedulingState]=0;stats[schedulingState]+=overlapEnd-overlapStart;}\ntr.b.iterateOverIntersectingIntervals(this.timeSlices,function(x){return x.start;},function(x){return x.end;},start,end,addStatsForSlice);return stats;},get samples(){return this.samples_;},get type(){const re=/^[^0-9|\\/]+/;const matches=re.exec(this.name);if(matches&&matches[0])return matches[0];throw new Error('Could not determine thread type for thread name '+\nthis.name);}};Thread.compare=function(x,y){let tmp=x.parent.compareTo(y.parent);if(tmp)return tmp;tmp=x.sortIndex-y.sortIndex;if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}\nif(tmp)return tmp;return x.tid-y.tid;};return{Thread,};});'use strict';tr.exportTo('tr.model',function(){const Thread=tr.model.Thread;const Counter=tr.model.Counter;function ProcessBase(model){if(!model){throw new Error('Must provide a model');}\ntr.model.EventContainer.call(this);this.model=model;this.threads={};this.counters={};this.objects=new tr.model.ObjectCollection(this);this.sortIndex=0;}\nProcessBase.compare=function(x,y){return x.sortIndex-y.sortIndex;};ProcessBase.prototype={__proto__:tr.model.EventContainer.prototype,get stableId(){throw new Error('Not implemented');},*childEventContainers(){yield*Object.values(this.threads);yield*Object.values(this.counters);yield this.objects;},iterateAllPersistableObjects(cb){cb(this);for(const tid in this.threads){this.threads[tid].iterateAllPersistableObjects(cb);}},get numThreads(){let n=0;for(const p in this.threads){n++;}\nreturn n;},shiftTimestampsForward(amount){for(const child of this.childEventContainers()){child.shiftTimestampsForward(amount);}},autoCloseOpenSlices(){for(const tid in this.threads){const thread=this.threads[tid];thread.autoCloseOpenSlices();}},autoDeleteObjects(maxTimestamp){this.objects.autoDeleteObjects(maxTimestamp);},preInitializeObjects(){this.objects.preInitializeAllObjects();},initializeObjects(){this.objects.initializeAllObjects();},mergeKernelWithUserland(){for(const tid in this.threads){const thread=this.threads[tid];thread.mergeKernelWithUserland();}},updateBounds(){this.bounds.reset();for(const tid in this.threads){this.threads[tid].updateBounds();this.bounds.addRange(this.threads[tid].bounds);}\nfor(const id in this.counters){this.counters[id].updateBounds();this.bounds.addRange(this.counters[id].bounds);}\nthis.objects.updateBounds();this.bounds.addRange(this.objects.bounds);},addCategoriesToDict(categoriesDict){for(const tid in this.threads){this.threads[tid].addCategoriesToDict(categoriesDict);}\nfor(const id in this.counters){categoriesDict[this.counters[id].category]=true;}\nthis.objects.addCategoriesToDict(categoriesDict);},findAllThreadsMatching(predicate,opt_this){const threads=[];for(const tid in this.threads){const thread=this.threads[tid];if(predicate.call(opt_this,thread)){threads.push(thread);}}\nreturn threads;},findAllThreadsNamed(name){const threads=this.findAllThreadsMatching(function(thread){if(!thread.name)return false;return thread.name===name;});return threads;},findAtMostOneThreadNamed(name){const threads=this.findAllThreadsNamed(name);if(threads.length===0)return undefined;if(threads.length>1){throw new Error('Expected no more than one '+name);}\nreturn threads[0];},pruneEmptyContainers(){const threadsToKeep={};for(const tid in this.threads){const thread=this.threads[tid];if(!thread.isEmpty){threadsToKeep[tid]=thread;}}\nthis.threads=threadsToKeep;},getThread(tid){return this.threads[tid];},getOrCreateThread(tid){if(!this.threads[tid]){this.threads[tid]=new Thread(this,tid);}\nreturn this.threads[tid];},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}\nreturn this.counters[id];},getSettingsKey(){throw new Error('Not implemented');},createSubSlices(){for(const tid in this.threads){this.threads[tid].createSubSlices();}}};return{ProcessBase,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const Counter=tr.model.Counter;const CpuSlice=tr.model.CpuSlice;function Cpu(kernel,number){if(kernel===undefined||number===undefined){throw new Error('Missing arguments');}\nthis.kernel=kernel;this.cpuNumber=number;this.slices=[];this.counters={};this.bounds_=new tr.b.math.Range();this.samples_=undefined;this.lastActiveTimestamp_=undefined;this.lastActiveThread_=undefined;this.lastActiveName_=undefined;this.lastActiveArgs_=undefined;}\nCpu.prototype={__proto__:tr.model.EventContainer.prototype,get samples(){return this.samples_;},get userFriendlyName(){return'CPU '+this.cpuNumber;},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const s of this.slices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}},*childEvents(){yield*this.slices;if(this.samples_){yield*this.samples_;}},*childEventContainers(){yield*Object.values(this.counters);},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}\nreturn this.counters[id];},getCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){return undefined;}\nreturn this.counters[id];},shiftTimestampsForward(amount){for(let sI=0;sI<this.slices.length;sI++){this.slices[sI].start=(this.slices[sI].start+amount);}\nfor(const id in this.counters){this.counters[id].shiftTimestampsForward(amount);}},updateBounds(){this.bounds_.reset();if(this.slices.length){this.bounds_.addValue(this.slices[0].start);this.bounds_.addValue(this.slices[this.slices.length-1].end);}\nfor(const id in this.counters){this.counters[id].updateBounds();this.bounds_.addRange(this.counters[id].bounds);}\nif(this.samples_&&this.samples_.length){this.bounds_.addValue(this.samples_[0].start);this.bounds_.addValue(this.samples_[this.samples_.length-1].end);}},createSubSlices(){this.samples_=this.kernel.model.samples.filter(function(sample){return sample.cpu===this;},this);},addCategoriesToDict(categoriesDict){for(let i=0;i<this.slices.length;i++){categoriesDict[this.slices[i].category]=true;}\nfor(const id in this.counters){categoriesDict[this.counters[id].category]=true;}\nfor(let i=0;i<this.samples_.length;i++){categoriesDict[this.samples_[i].category]=true;}},indexOf(cpuSlice){const i=tr.b.findLowIndexInSortedArray(this.slices,function(slice){return slice.start;},cpuSlice.start);if(this.slices[i]!==cpuSlice)return undefined;return i;},closeActiveThread(endTimestamp,args){if(this.lastActiveThread_===undefined||this.lastActiveThread_===0){return;}\nif(endTimestamp<this.lastActiveTimestamp_){throw new Error('The end timestamp of a thread running on CPU '+\nthis.cpuNumber+' is before its start timestamp.');}\nfor(const key in args){this.lastActiveArgs_[key]=args[key];}\nconst duration=endTimestamp-this.lastActiveTimestamp_;const slice=new tr.model.CpuSlice('',this.lastActiveName_,ColorScheme.getColorIdForGeneralPurposeString(this.lastActiveName_),this.lastActiveTimestamp_,this.lastActiveArgs_,duration);slice.cpu=this;this.slices.push(slice);this.lastActiveTimestamp_=undefined;this.lastActiveThread_=undefined;this.lastActiveName_=undefined;this.lastActiveArgs_=undefined;},switchActiveThread(timestamp,oldThreadArgs,newThreadId,newThreadName,newThreadArgs){this.closeActiveThread(timestamp,oldThreadArgs);this.lastActiveTimestamp_=timestamp;this.lastActiveThread_=newThreadId;this.lastActiveName_=newThreadName;this.lastActiveArgs_=newThreadArgs;},getFreqStatsForRange(range){const stats={};function addStatsForFreq(freqSample,index){const freqEnd=(index<freqSample.series_.length-1)?freqSample.series_.samples_[index+1].timestamp:range.max;const freqRange=tr.b.math.Range.fromExplicitRange(freqSample.timestamp,freqEnd);const intersection=freqRange.findIntersection(range);if(!(freqSample.value in stats)){stats[freqSample.value]=0;}\nstats[freqSample.value]+=intersection.duration;}\nconst freqCounter=this.getCounter('','Clock Frequency');if(freqCounter!==undefined){const freqSeries=freqCounter.getSeries(0);if(!freqSeries)return;tr.b.iterateOverIntersectingIntervals(freqSeries.samples_,function(x){return x.timestamp;},function(x,index){if(index<freqSeries.length-1){return freqSeries.samples_[index+1].timestamp;}\nreturn range.max;},range.min,range.max,addStatsForFreq);}\nreturn stats;}};Cpu.compare=function(x,y){return x.cpuNumber-y.cpuNumber;};return{Cpu,};});'use strict';tr.exportTo('tr.model',function(){const Event=tr.model.Event;const EventRegistry=tr.model.EventRegistry;function PowerSample(series,start,powerInW){Event.call(this);this.series_=series;this.start_=parseFloat(start);this.powerInW_=parseFloat(powerInW);}\nPowerSample.prototype={__proto__:Event.prototype,get series(){return this.series_;},get start(){return this.start_;},set start(value){this.start_=value;},get powerInW(){return this.powerInW_;},set powerInW(value){this.powerInW_=value;},addBoundsToRange(range){range.addValue(this.start);}};EventRegistry.register(PowerSample,{name:'powerSample',pluralName:'powerSamples'});return{PowerSample,};});'use strict';tr.exportTo('tr.model',function(){const PowerSample=tr.model.PowerSample;function PowerSeries(device){tr.model.EventContainer.call(this);this.device_=device;this.samples_=[];}\nPowerSeries.prototype={__proto__:tr.model.EventContainer.prototype,get device(){return this.device_;},get samples(){return this.samples_;},get stableId(){return this.device_.stableId+'.PowerSeries';},addPowerSample(ts,val){const sample=new PowerSample(this,ts,val);this.samples_.push(sample);return sample;},getEnergyConsumedInJ(start,end){const measurementRange=tr.b.math.Range.fromExplicitRange(start,end);let energyConsumedInJ=0;let startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0){startIndex=0;}\nfor(let i=startIndex;i<endIndex;i++){const sample=this.samples[i];const nextSample=this.samples[i+1];const sampleRange=new tr.b.math.Range();sampleRange.addValue(sample.start);sampleRange.addValue(nextSample?nextSample.start:sample.start);const intersectionRangeInMs=measurementRange.findIntersection(sampleRange);const durationInS=tr.b.convertUnit(intersectionRangeInMs.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);energyConsumedInJ+=durationInS*sample.powerInW;}\nreturn energyConsumedInJ;},getSamplesWithinRange(start,end){const startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);},shiftTimestampsForward(amount){for(let i=0;i<this.samples_.length;++i){this.samples_[i].start+=amount;}},updateBounds(){this.bounds.reset();if(this.samples_.length===0)return;this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].start);},*childEvents(){yield*this.samples_;},};return{PowerSeries,};});'use strict';tr.exportTo('tr.model',function(){function Device(model){if(!model){throw new Error('Must provide a model.');}\ntr.model.EventContainer.call(this);this.powerSeries_=undefined;this.cpuUsageSeries_=undefined;this.vSyncTimestamps_=[];}\nDevice.compare=function(x,y){return x.guid-y.guid;};Device.prototype={__proto__:tr.model.EventContainer.prototype,compareTo(that){return Device.compare(this,that);},get userFriendlyName(){return'Device';},get userFriendlyDetails(){return'Device';},get stableId(){return'Device';},getSettingsKey(){return'device';},get powerSeries(){return this.powerSeries_;},set powerSeries(powerSeries){this.powerSeries_=powerSeries;},get cpuUsageSeries(){return this.cpuUsageSeries_;},set cpuUsageSeries(cpuUsageSeries){this.cpuUsageSeries_=cpuUsageSeries;},get vSyncTimestamps(){return this.vSyncTimestamps_;},set vSyncTimestamps(value){this.vSyncTimestamps_=value;},updateBounds(){this.bounds.reset();for(const child of this.childEventContainers()){child.updateBounds();this.bounds.addRange(child.bounds);}},shiftTimestampsForward(amount){for(const child of this.childEventContainers()){child.shiftTimestampsForward(amount);}\nfor(let i=0;i<this.vSyncTimestamps_.length;i++){this.vSyncTimestamps_[i]+=amount;}},addCategoriesToDict(categoriesDict){},*childEventContainers(){if(this.powerSeries_){yield this.powerSeries_;}\nif(this.cpuUsageSeries_){yield this.cpuUsageSeries_;}}};return{Device,};});'use strict';tr.exportTo('tr.model',function(){function FlowEvent(category,id,title,colorId,start,args,opt_duration){tr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.start=start;this.args=args;this.id=id;this.startSlice=undefined;this.endSlice=undefined;this.startStackFrame=undefined;this.endStackFrame=undefined;if(opt_duration!==undefined){this.duration=opt_duration;}}\nFlowEvent.prototype={__proto__:tr.model.TimedEvent.prototype,get userFriendlyName(){return'Flow event named '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.timestamp);}};tr.model.EventRegistry.register(FlowEvent,{name:'flowEvent',pluralName:'flowEvents'});return{FlowEvent,};});'use strict';tr.exportTo('tr.model',function(){function ContainerMemoryDump(start){tr.model.TimedEvent.call(this,start);this.levelOfDetail=undefined;this.memoryAllocatorDumps_=undefined;this.memoryAllocatorDumpsByFullName_=undefined;}\nContainerMemoryDump.LevelOfDetail={BACKGROUND:0,LIGHT:1,DETAILED:2};ContainerMemoryDump.prototype={__proto__:tr.model.TimedEvent.prototype,shiftTimestampsForward(amount){this.start+=amount;},get memoryAllocatorDumps(){return this.memoryAllocatorDumps_;},set memoryAllocatorDumps(memoryAllocatorDumps){this.memoryAllocatorDumps_=memoryAllocatorDumps;this.forceRebuildingMemoryAllocatorDumpByFullNameIndex();},getMemoryAllocatorDumpByFullName(fullName){if(this.memoryAllocatorDumps_===undefined)return undefined;if(this.memoryAllocatorDumpsByFullName_===undefined){const index={};function addDumpsToIndex(dumps){dumps.forEach(function(dump){index[dump.fullName]=dump;addDumpsToIndex(dump.children);});}\naddDumpsToIndex(this.memoryAllocatorDumps_);this.memoryAllocatorDumpsByFullName_=index;}\nreturn this.memoryAllocatorDumpsByFullName_[fullName];},forceRebuildingMemoryAllocatorDumpByFullNameIndex(){this.memoryAllocatorDumpsByFullName_=undefined;},iterateRootAllocatorDumps(fn,opt_this){if(this.memoryAllocatorDumps===undefined)return;this.memoryAllocatorDumps.forEach(fn,opt_this||this);}};return{ContainerMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){function MemoryAllocatorDump(containerMemoryDump,fullName,opt_guid){this.fullName=fullName;this.parent=undefined;this.children=[];this.numerics={};this.diagnostics={};this.containerMemoryDump=containerMemoryDump;this.owns=undefined;this.ownedBy=[];this.ownedBySiblingSizes=new Map();this.retains=[];this.retainedBy=[];this.weak=false;this.infos=[];this.guid=opt_guid;}\nMemoryAllocatorDump.SIZE_NUMERIC_NAME='size';MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME='effective_size';MemoryAllocatorDump.RESIDENT_SIZE_NUMERIC_NAME='resident_size';MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME=MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME;MemoryAllocatorDump.prototype={get name(){return this.fullName.substring(this.fullName.lastIndexOf('/')+1);},get quantifiedName(){return'\\''+this.fullName+'\\' in '+\nthis.containerMemoryDump.containerName;},getDescendantDumpByFullName(fullName){return this.containerMemoryDump.getMemoryAllocatorDumpByFullName(this.fullName+'/'+fullName);},isDescendantOf(otherDump){if(this===otherDump)return true;if(this.parent===undefined)return false;return this.parent.isDescendantOf(otherDump);},addNumeric(name,numeric){if(!(numeric instanceof tr.b.Scalar)){throw new Error('Numeric value must be an instance of Scalar.');}\nif(name in this.numerics){throw new Error('Duplicate numeric name: '+name+'.');}\nthis.numerics[name]=numeric;},addDiagnostic(name,text){if(typeof text!=='string'){throw new Error('Diagnostic text must be a string.');}\nif(name in this.diagnostics){throw new Error('Duplicate diagnostic name: '+name+'.');}\nthis.diagnostics[name]=text;},aggregateNumericsRecursively(opt_model){const numericNames=new Set();this.children.forEach(function(child){child.aggregateNumericsRecursively(opt_model);for(const[item,value]of Object.entries(child.numerics)){numericNames.add(item,value);}},this);numericNames.forEach(function(numericName){if(numericName===MemoryAllocatorDump.SIZE_NUMERIC_NAME||numericName===MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME||this.numerics[numericName]!==undefined){return;}\nthis.numerics[numericName]=MemoryAllocatorDump.aggregateNumerics(this.children.map(function(child){return child.numerics[numericName];}),opt_model);},this);}};MemoryAllocatorDump.aggregateNumerics=function(numerics,opt_model){let shouldLogWarning=!!opt_model;let aggregatedUnit=undefined;let aggregatedValue=0;numerics.forEach(function(numeric){if(numeric===undefined)return;const unit=numeric.unit;if(aggregatedUnit===undefined){aggregatedUnit=unit;}else if(aggregatedUnit!==unit){if(shouldLogWarning){opt_model.importWarning({type:'numeric_parse_error',message:'Multiple units provided for numeric: \\''+\naggregatedUnit.unitName+'\\' and \\''+unit.unitName+'\\'.'});shouldLogWarning=false;}\naggregatedUnit=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;}\naggregatedValue+=numeric.value;},this);if(aggregatedUnit===undefined)return undefined;return new tr.b.Scalar(aggregatedUnit,aggregatedValue);};function MemoryAllocatorDumpLink(source,target,opt_importance){this.source=source;this.target=target;this.importance=opt_importance;this.size=undefined;}\nconst MemoryAllocatorDumpInfoType={PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN:0,PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER:1};return{MemoryAllocatorDump,MemoryAllocatorDumpLink,MemoryAllocatorDumpInfoType,};});'use strict';tr.exportTo('tr.model',function(){function GlobalMemoryDump(model,start){tr.model.ContainerMemoryDump.call(this,start);this.model=model;this.processMemoryDumps={};}\nconst SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME;const EFFECTIVE_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME;const MemoryAllocatorDumpInfoType=tr.model.MemoryAllocatorDumpInfoType;const PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN;const PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER;function getSize(dump){const numeric=dump.numerics[SIZE_NUMERIC_NAME];if(numeric===undefined)return 0;return numeric.value;}\nfunction hasSize(dump){return dump.numerics[SIZE_NUMERIC_NAME]!==undefined;}\nfunction optional(value,defaultValue){if(value===undefined)return defaultValue;return value;}\nGlobalMemoryDump.prototype={__proto__:tr.model.ContainerMemoryDump.prototype,get stableId(){return'memory.'+this.model.globalMemoryDumps.indexOf(this);},get userFriendlyName(){return'Global memory dump at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get containerName(){return'global space';},finalizeGraph(){this.removeWeakDumps();this.setUpTracingOverheadOwnership();this.aggregateNumerics();this.calculateSizes();this.calculateEffectiveSizes();this.discountTracingOverheadFromVmRegions();this.forceRebuildingMemoryAllocatorDumpByFullNameIndices();},removeWeakDumps(){this.traverseAllocatorDumpsInDepthFirstPreOrder(function(dump){if(dump.weak)return;if((dump.owns!==undefined&&dump.owns.target.weak)||(dump.parent!==undefined&&dump.parent.weak)){dump.weak=true;}});function removeWeakDumpsFromListRecursively(dumps){tr.b.inPlaceFilter(dumps,function(dump){if(dump.weak){return false;}\nremoveWeakDumpsFromListRecursively(dump.children);tr.b.inPlaceFilter(dump.ownedBy,function(ownershipLink){return!ownershipLink.source.weak;});return true;});}\nthis.iterateContainerDumps(function(containerDump){const memoryAllocatorDumps=containerDump.memoryAllocatorDumps;if(memoryAllocatorDumps!==undefined){removeWeakDumpsFromListRecursively(memoryAllocatorDumps);}});},calculateSizes(){this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateMemoryAllocatorDumpSize_.bind(this));},calculateMemoryAllocatorDumpSize_(dump){let shouldDefineSize=false;function getDependencySize(dependencyDump){const numeric=dependencyDump.numerics[SIZE_NUMERIC_NAME];if(numeric===undefined)return 0;shouldDefineSize=true;return numeric.value;}\nconst sizeNumeric=dump.numerics[SIZE_NUMERIC_NAME];let size=0;let checkDependencySizeIsConsistent=function(){};if(sizeNumeric!==undefined){size=sizeNumeric.value;shouldDefineSize=true;if(sizeNumeric.unit!==tr.b.Unit.byName.sizeInBytes_smallerIsBetter){this.model.importWarning({type:'memory_dump_parse_error',message:'Invalid unit of \\'size\\' numeric of memory allocator '+'dump '+dump.quantifiedName+': '+\nsizeNumeric.unit.unitName+'.'});}\ncheckDependencySizeIsConsistent=function(dependencySize,dependencyInfoType,dependencyName){if(size>=dependencySize)return;this.model.importWarning({type:'memory_dump_parse_error',message:'Size provided by memory allocator dump \\''+\ndump.fullName+'\\''+\ntr.b.Unit.byName.sizeInBytes.format(size)+') is less than '+dependencyName+' ('+\ntr.b.Unit.byName.sizeInBytes.format(dependencySize)+').'});dump.infos.push({type:dependencyInfoType,providedSize:size,dependencySize});}.bind(this);}\nlet aggregatedChildrenSize=0;const allOverlaps={};dump.children.forEach(function(childDump){function aggregateDescendantDump(descendantDump){const ownedDumpLink=descendantDump.owns;if(ownedDumpLink!==undefined&&ownedDumpLink.target.isDescendantOf(dump)){let ownedChildDump=ownedDumpLink.target;while(ownedChildDump.parent!==dump){ownedChildDump=ownedChildDump.parent;}\nif(childDump!==ownedChildDump){const ownedBySiblingSize=getDependencySize(descendantDump);if(ownedBySiblingSize>0){const previousTotalOwnedBySiblingSize=ownedChildDump.ownedBySiblingSizes.get(childDump)||0;const updatedTotalOwnedBySiblingSize=previousTotalOwnedBySiblingSize+ownedBySiblingSize;ownedChildDump.ownedBySiblingSizes.set(childDump,updatedTotalOwnedBySiblingSize);}}\nreturn;}\nif(descendantDump.children.length===0){aggregatedChildrenSize+=getDependencySize(descendantDump);return;}\ndescendantDump.children.forEach(aggregateDescendantDump);}\naggregateDescendantDump(childDump);});checkDependencySizeIsConsistent(aggregatedChildrenSize,PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN,'the aggregated size of its children');let largestOwnerSize=0;dump.ownedBy.forEach(function(ownershipLink){const owner=ownershipLink.source;const ownerSize=getDependencySize(owner);largestOwnerSize=Math.max(largestOwnerSize,ownerSize);});checkDependencySizeIsConsistent(largestOwnerSize,PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER,'the size of its largest owner');if(!shouldDefineSize){delete dump.numerics[SIZE_NUMERIC_NAME];return;}\nsize=Math.max(size,aggregatedChildrenSize,largestOwnerSize);dump.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size);if(aggregatedChildrenSize<size&&dump.children!==undefined&&dump.children.length>0){const virtualChild=new tr.model.MemoryAllocatorDump(dump.containerMemoryDump,dump.fullName+'/<unspecified>');virtualChild.parent=dump;dump.children.unshift(virtualChild);virtualChild.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size-aggregatedChildrenSize);}},calculateEffectiveSizes(){this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpSubSizes_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPreOrder(this.calculateDumpCumulativeOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpEffectiveSize_.bind(this));},calculateDumpSubSizes_(dump){if(!hasSize(dump))return;if(dump.children===undefined||dump.children.length===0){const size=getSize(dump);dump.notOwningSubSize_=size;dump.notOwnedSubSize_=size;return;}\nlet notOwningSubSize=0;dump.children.forEach(function(childDump){if(childDump.owns!==undefined)return;notOwningSubSize+=optional(childDump.notOwningSubSize_,0);});dump.notOwningSubSize_=notOwningSubSize;let notOwnedSubSize=0;dump.children.forEach(function(childDump){if(childDump.ownedBy.length===0){notOwnedSubSize+=optional(childDump.notOwnedSubSize_,0);return;}\nlet largestChildOwnerSize=0;childDump.ownedBy.forEach(function(ownershipLink){largestChildOwnerSize=Math.max(largestChildOwnerSize,getSize(ownershipLink.source));});notOwnedSubSize+=getSize(childDump)-largestChildOwnerSize;});dump.notOwnedSubSize_=notOwnedSubSize;},calculateDumpOwnershipCoefficient_(dump){if(!hasSize(dump))return;if(dump.ownedBy.length===0)return;const owners=dump.ownedBy.map(function(ownershipLink){return{dump:ownershipLink.source,importance:optional(ownershipLink.importance,0),notOwningSubSize:optional(ownershipLink.source.notOwningSubSize_,0)};});owners.sort(function(a,b){if(a.importance===b.importance){return a.notOwningSubSize-b.notOwningSubSize;}\nreturn b.importance-a.importance;});let currentImportanceStartPos=0;let alreadyAttributedSubSize=0;while(currentImportanceStartPos<owners.length){const currentImportance=owners[currentImportanceStartPos].importance;let nextImportanceStartPos=currentImportanceStartPos+1;while(nextImportanceStartPos<owners.length&&owners[nextImportanceStartPos].importance===currentImportance){nextImportanceStartPos++;}\nlet attributedNotOwningSubSize=0;for(let pos=currentImportanceStartPos;pos<nextImportanceStartPos;pos++){const owner=owners[pos];const notOwningSubSize=owner.notOwningSubSize;if(notOwningSubSize>alreadyAttributedSubSize){attributedNotOwningSubSize+=(notOwningSubSize-alreadyAttributedSubSize)/(nextImportanceStartPos-pos);alreadyAttributedSubSize=notOwningSubSize;}\nlet owningCoefficient=0;if(notOwningSubSize!==0){owningCoefficient=attributedNotOwningSubSize/notOwningSubSize;}\nowner.dump.owningCoefficient_=owningCoefficient;}\ncurrentImportanceStartPos=nextImportanceStartPos;}\nconst notOwnedSubSize=optional(dump.notOwnedSubSize_,0);const remainderSubSize=notOwnedSubSize-alreadyAttributedSubSize;let ownedCoefficient=0;if(notOwnedSubSize!==0){ownedCoefficient=remainderSubSize/notOwnedSubSize;}\ndump.ownedCoefficient_=ownedCoefficient;},calculateDumpCumulativeOwnershipCoefficient_(dump){if(!hasSize(dump))return;let cumulativeOwnedCoefficient=optional(dump.ownedCoefficient_,1);const parent=dump.parent;if(dump.parent!==undefined){cumulativeOwnedCoefficient*=dump.parent.cumulativeOwnedCoefficient_;}\ndump.cumulativeOwnedCoefficient_=cumulativeOwnedCoefficient;let cumulativeOwningCoefficient;if(dump.owns!==undefined){cumulativeOwningCoefficient=dump.owningCoefficient_*dump.owns.target.cumulativeOwningCoefficient_;}else if(dump.parent!==undefined){cumulativeOwningCoefficient=dump.parent.cumulativeOwningCoefficient_;}else{cumulativeOwningCoefficient=1;}\ndump.cumulativeOwningCoefficient_=cumulativeOwningCoefficient;},calculateDumpEffectiveSize_(dump){if(!hasSize(dump)){delete dump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME];return;}\nlet effectiveSize;if(dump.children===undefined||dump.children.length===0){effectiveSize=getSize(dump)*dump.cumulativeOwningCoefficient_*dump.cumulativeOwnedCoefficient_;}else{effectiveSize=0;dump.children.forEach(function(childDump){if(!hasSize(childDump))return;effectiveSize+=childDump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME].value;});}\ndump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,effectiveSize);},aggregateNumerics(){this.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);});this.iterateRootAllocatorDumps(this.propagateNumericsAndDiagnosticsRecursively);for(const processMemoryDump of Object.values(this.processMemoryDumps)){processMemoryDump.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);},this);}},propagateNumericsAndDiagnosticsRecursively(globalAllocatorDump){['numerics','diagnostics'].forEach(function(field){for(const[name,value]of\nObject.entries(globalAllocatorDump[field])){globalAllocatorDump.ownedBy.forEach(function(ownershipLink){const processAllocatorDump=ownershipLink.source;if(processAllocatorDump[field][name]!==undefined){return;}\nprocessAllocatorDump[field][name]=value;});}});globalAllocatorDump.children.forEach(this.propagateNumericsAndDiagnosticsRecursively,this);},setUpTracingOverheadOwnership(){for(const dump of Object.values(this.processMemoryDumps)){dump.setUpTracingOverheadOwnership(this.model);}},discountTracingOverheadFromVmRegions(){for(const dump of Object.values(this.processMemoryDumps)){dump.discountTracingOverheadFromVmRegions(this.model);}},forceRebuildingMemoryAllocatorDumpByFullNameIndices(){this.iterateContainerDumps(function(containerDump){containerDump.forceRebuildingMemoryAllocatorDumpByFullNameIndex();});},iterateContainerDumps(fn){fn.call(this,this);for(const processDump of Object.values(this.processMemoryDumps)){fn.call(this,processDump);}},iterateAllRootAllocatorDumps(fn){this.iterateContainerDumps(function(containerDump){containerDump.iterateRootAllocatorDumps(fn,this);});},traverseAllocatorDumpsInDepthFirstPostOrder(fn){const visitedDumps=new WeakSet();const openDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(openDumps.has(dump)){throw new Error(dump.userFriendlyName+' contains a cycle');}\nopenDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);fn.call(this,dump);visitedDumps.add(dump);openDumps.delete(dump);}\nthis.iterateAllRootAllocatorDumps(visit);},traverseAllocatorDumpsInDepthFirstPreOrder(fn){const visitedDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(dump.owns!==undefined&&!visitedDumps.has(dump.owns.target)){return;}\nif(dump.parent!==undefined&&!visitedDumps.has(dump.parent)){return;}\nfn.call(this,dump);visitedDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);}\nthis.iterateAllRootAllocatorDumps(visit);}};tr.model.EventRegistry.register(GlobalMemoryDump,{name:'globalMemoryDump',pluralName:'globalMemoryDumps'});return{GlobalMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const InstantEventType={GLOBAL:1,PROCESS:2};function InstantEvent(category,title,colorId,start,args,parent){tr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.args=args;this.parent_=parent;this.type=undefined;}\nInstantEvent.prototype={__proto__:tr.model.TimedEvent.prototype,};function GlobalInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.GLOBAL;}\nGlobalInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Global instant event '+this.title+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return'instant.'+this.parent_.instantEvents.indexOf(this);},};function ProcessInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.PROCESS;}\nProcessInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Process-level instant event '+this.title+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return this.parent_.stableId+'.instant.'+\nthis.parent_.instantEvents.indexOf(this);},};tr.model.EventRegistry.register(InstantEvent,{name:'instantEvent',pluralName:'instantEvents'});return{GlobalInstantEvent,ProcessInstantEvent,InstantEventType,InstantEvent,};});'use strict';tr.exportTo('tr.model',function(){const Cpu=tr.model.Cpu;const ProcessBase=tr.model.ProcessBase;function Kernel(model){ProcessBase.call(this,model);this.cpus={};this.softwareMeasuredCpuCount_=undefined;}\nKernel.compare=function(x,y){return 0;};Kernel.prototype={__proto__:ProcessBase.prototype,compareTo(that){return Kernel.compare(this,that);},get userFriendlyName(){return'Kernel';},get userFriendlyDetails(){return'Kernel';},get stableId(){return'Kernel';},getOrCreateCpu(cpuNumber){if(!this.cpus[cpuNumber]){this.cpus[cpuNumber]=new Cpu(this,cpuNumber);}\nreturn this.cpus[cpuNumber];},get softwareMeasuredCpuCount(){return this.softwareMeasuredCpuCount_;},set softwareMeasuredCpuCount(softwareMeasuredCpuCount){if(this.softwareMeasuredCpuCount_!==undefined&&this.softwareMeasuredCpuCount_!==softwareMeasuredCpuCount){throw new Error('Cannot change the softwareMeasuredCpuCount once it is set');}\nthis.softwareMeasuredCpuCount_=softwareMeasuredCpuCount;},get bestGuessAtCpuCount(){const realCpuCount=Object.keys(this.cpus).length;if(realCpuCount!==0){return realCpuCount;}\nreturn this.softwareMeasuredCpuCount;},updateBounds(){ProcessBase.prototype.updateBounds.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.updateBounds();this.bounds.addRange(cpu.bounds);}},createSubSlices(){ProcessBase.prototype.createSubSlices.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.createSubSlices();}},addCategoriesToDict(categoriesDict){ProcessBase.prototype.addCategoriesToDict.call(this,categoriesDict);for(const cpuNumber in this.cpus){this.cpus[cpuNumber].addCategoriesToDict(categoriesDict);}},getSettingsKey(){return'kernel';},*childEventContainers(){yield*ProcessBase.prototype.childEventContainers.call(this);yield*Object.values(this.cpus);},};return{Kernel,};});'use strict';tr.exportTo('tr.model',function(){function ModelIndices(model){this.flowEventsById_={};model.flowEvents.forEach(function(fe){if(fe.id!==undefined){if(!this.flowEventsById_.hasOwnProperty(fe.id)){this.flowEventsById_[fe.id]=[];}\nthis.flowEventsById_[fe.id].push(fe);}},this);}\nModelIndices.prototype={addEventWithId(id,event){if(!this.flowEventsById_.hasOwnProperty(id)){this.flowEventsById_[id]=[];}\nthis.flowEventsById_[id].push(event);},getFlowEventsWithId(id){if(!this.flowEventsById_.hasOwnProperty(id)){return[];}\nreturn this.flowEventsById_[id];}};return{ModelIndices,};});'use strict';tr.exportTo('tr.model',function(){function ModelStats(){this.traceEventCountsByKey_=new Map();this.allTraceEventStats_=[];this.traceEventStatsInTimeIntervals_=new Map();this.allTraceEventStatsInTimeIntervals_=[];this.hasEventSizesinBytes_=false;this.traceImportDurationMs_=undefined;}\nModelStats.prototype={TIME_INTERVAL_SIZE_IN_MS:100,willProcessBasicTraceEvent(phase,category,title,ts,opt_eventSizeinBytes){const key=phase+'/'+category+'/'+title;let eventStats=this.traceEventCountsByKey_.get(key);if(eventStats===undefined){eventStats={phase,category,title,numEvents:0,totalEventSizeinBytes:0};this.traceEventCountsByKey_.set(key,eventStats);this.allTraceEventStats_.push(eventStats);}\neventStats.numEvents++;const timeIntervalKey=Math.floor(tr.b.Unit.timestampFromUs(ts)/this.TIME_INTERVAL_SIZE_IN_MS);let eventStatsByTimeInverval=this.traceEventStatsInTimeIntervals_.get(timeIntervalKey);if(eventStatsByTimeInverval===undefined){eventStatsByTimeInverval={timeInterval:timeIntervalKey,numEvents:0,totalEventSizeinBytes:0};this.traceEventStatsInTimeIntervals_.set(timeIntervalKey,eventStatsByTimeInverval);this.allTraceEventStatsInTimeIntervals_.push(eventStatsByTimeInverval);}\neventStatsByTimeInverval.numEvents++;if(opt_eventSizeinBytes!==undefined){this.hasEventSizesinBytes_=true;eventStats.totalEventSizeinBytes+=opt_eventSizeinBytes;eventStatsByTimeInverval.totalEventSizeinBytes+=opt_eventSizeinBytes;}},get allTraceEventStats(){return this.allTraceEventStats_;},get allTraceEventStatsInTimeIntervals(){return this.allTraceEventStatsInTimeIntervals_;},get hasEventSizesinBytes(){return this.hasEventSizesinBytes_;},get traceImportDurationMs(){return this.traceImportDurationMs_;},set traceImportDurationMs(traceImportDurationMs){this.traceImportDurationMs_=traceImportDurationMs;}};return{ModelStats,};});'use strict';tr.exportTo('tr.model',function(){function VMRegion(startAddress,sizeInBytes,protectionFlags,mappedFile,byteStats){this.startAddress=startAddress;this.sizeInBytes=sizeInBytes;this.protectionFlags=protectionFlags;this.mappedFile=mappedFile||'';this.byteStats=byteStats||{};}\nVMRegion.PROTECTION_FLAG_READ=4;VMRegion.PROTECTION_FLAG_WRITE=2;VMRegion.PROTECTION_FLAG_EXECUTE=1;VMRegion.PROTECTION_FLAG_MAYSHARE=128;VMRegion.prototype={get uniqueIdWithinProcess(){return this.mappedFile+'#'+this.startAddress;},get protectionFlagsToString(){if(this.protectionFlags===undefined)return undefined;return((this.protectionFlags&VMRegion.PROTECTION_FLAG_READ?'r':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_WRITE?'w':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_EXECUTE?'x':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_MAYSHARE?'s':'p'));}};VMRegion.fromDict=function(dict){return new VMRegion(dict.startAddress,dict.sizeInBytes,dict.protectionFlags,dict.mappedFile,dict.byteStats);};function VMRegionClassificationNode(opt_rule){this.rule_=opt_rule||VMRegionClassificationNode.CLASSIFICATION_RULES;this.hasRegions=false;this.sizeInBytes=undefined;this.byteStats={};this.children_=undefined;this.regions_=[];}\nVMRegionClassificationNode.CLASSIFICATION_RULES={name:'Total',children:[{name:'Android',file:/^\\/dev\\/ashmem(?!\\/libc malloc)/,children:[{name:'Java runtime',file:/^\\/dev\\/ashmem\\/dalvik-/,children:[{name:'Spaces',file:/\\/dalvik-(alloc|main|large object|non moving|zygote) space/,children:[{name:'Normal',file:/\\/dalvik-(alloc|main)/},{name:'Large',file:/\\/dalvik-large object/},{name:'Zygote',file:/\\/dalvik-zygote/},{name:'Non-moving',file:/\\/dalvik-non moving/}]},{name:'Linear Alloc',file:/\\/dalvik-LinearAlloc/},{name:'Indirect Reference Table',file:/\\/dalvik-indirect.ref/},{name:'Cache',file:/\\/dalvik-jit-code-cache/},{name:'Accounting'}]},{name:'Cursor',file:/\\/CursorWindow/},{name:'Ashmem'}]},{name:'Native heap',file:/^((\\[heap\\])|(\\[anon:)|(\\/dev\\/ashmem\\/libc malloc)|(\\[discounted tracing overhead\\])|$)/},{name:'Stack',file:/^\\[stack/},{name:'Files',file:/\\.((((jar)|(apk)|(ttf)|(odex)|(oat)|(art))$)|(dex)|(so))/,children:[{name:'so',file:/\\.so/},{name:'jar',file:/\\.jar$/},{name:'apk',file:/\\.apk$/},{name:'ttf',file:/\\.ttf$/},{name:'dex',file:/\\.((dex)|(odex$))/},{name:'oat',file:/\\.oat$/},{name:'art',file:/\\.art$/}]},{name:'Devices',file:/(^\\/dev\\/)|(anon_inode:dmabuf)/,children:[{name:'GPU',file:/\\/((nv)|(mali)|(kgsl))/},{name:'DMA',file:/anon_inode:dmabuf/}]}]};VMRegionClassificationNode.OTHER_RULE={name:'Other'};VMRegionClassificationNode.fromRegions=function(regions,opt_rules){const tree=new VMRegionClassificationNode(opt_rules);tree.regions_=regions;for(let i=0;i<regions.length;i++){tree.addStatsFromRegion_(regions[i]);}\nreturn tree;};VMRegionClassificationNode.prototype={get title(){return this.rule_.name;},get children(){if(this.isLeafNode){return undefined;}\nif(this.children_===undefined){this.buildTree_();}\nreturn this.children_;},get regions(){if(!this.isLeafNode){return undefined;}\nreturn this.regions_;},get allRegionsForTesting(){if(this.regions_!==undefined){if(this.children_!==undefined){throw new Error('Internal error: a VM region classification node '+'cannot have both regions and children');}\nreturn this.regions_;}\nlet regions=[];this.children_.forEach(function(childNode){regions=regions.concat(childNode.allRegionsForTesting);});return regions;},get isLeafNode(){const children=this.rule_.children;return children===undefined||children.length===0;},addRegion(region){this.addRegionRecursively_(region,true);},someRegion(fn,opt_this){if(this.regions_!==undefined){return this.regions_.some(fn,opt_this);}\nreturn this.children_.some(function(childNode){return childNode.someRegion(fn,opt_this);});},addRegionRecursively_(region,addStatsToThisNode){if(addStatsToThisNode){this.addStatsFromRegion_(region);}\nif(this.regions_!==undefined){if(this.children_!==undefined){throw new Error('Internal error: a VM region classification node '+'cannot have both regions and children');}\nthis.regions_.push(region);return;}\nfunction regionRowMatchesChildNide(child){const fileRegExp=child.rule_.file;if(fileRegExp===undefined)return true;return fileRegExp.test(region.mappedFile);}\nlet matchedChild=this.children_.find(regionRowMatchesChildNide);if(matchedChild===undefined){if(this.children_.length!==this.rule_.children.length){throw new Error('Internal error');}\nmatchedChild=new VMRegionClassificationNode(VMRegionClassificationNode.OTHER_RULE);this.children_.push(matchedChild);}\nmatchedChild.addRegionRecursively_(region,true);},buildTree_(){const cachedRegions=this.regions_;this.regions_=undefined;this.buildChildNodesRecursively_();for(let i=0;i<cachedRegions.length;i++){this.addRegionRecursively_(cachedRegions[i],false);}},buildChildNodesRecursively_(){if(this.children_!==undefined){throw new Error('Internal error: Classification node already has children');}\nif(this.regions_!==undefined&&this.regions_.length!==0){throw new Error('Internal error: Classification node should have no regions');}\nif(this.isLeafNode){return;}\nthis.regions_=undefined;this.children_=this.rule_.children.map(function(childRule){const child=new VMRegionClassificationNode(childRule);child.buildChildNodesRecursively_();return child;});},addStatsFromRegion_(region){this.hasRegions=true;const regionSizeInBytes=region.sizeInBytes;if(regionSizeInBytes!==undefined){this.sizeInBytes=(this.sizeInBytes||0)+regionSizeInBytes;}\nconst thisByteStats=this.byteStats;const regionByteStats=region.byteStats;for(const byteStatName in regionByteStats){const regionByteStatValue=regionByteStats[byteStatName];if(regionByteStatValue===undefined)continue;thisByteStats[byteStatName]=(thisByteStats[byteStatName]||0)+regionByteStatValue;}\nif(region.mappedFile.includes('/base.odex')||region.mappedFile.includes('/base.vdex')){if(region.byteStats.proportionalResident!==undefined){thisByteStats.javaBasePss=(thisByteStats.javaBasePss||0)+\nregion.byteStats.proportionalResident;}\nif(region.byteStats.privateCleanResident!==undefined){thisByteStats.javaBaseCleanResident=(thisByteStats.javaBaseCleanResident||0)+\nregion.byteStats.privateCleanResident;}\nif(region.byteStats.sharedCleanResident!==undefined){thisByteStats.javaBaseCleanResident=(thisByteStats.javaBaseCleanResident||0)+\nregion.byteStats.sharedCleanResident;}}\nconst textProtectionFlags=(VMRegion.PROTECTION_FLAG_READ|VMRegion.PROTECTION_FLAG_EXECUTE);if((region.protectionFlags===textProtectionFlags)&&(region.mappedFile.includes('/base.apk')||region.mappedFile.includes('/libchrome.so'))){if(regionSizeInBytes!==undefined){this.nativeLibrarySizeInBytes=(this.nativeLibrarySizeInBytes||0)+regionSizeInBytes;}\nif(region.byteStats.privateCleanResident!==undefined){thisByteStats.nativeLibraryPrivateCleanResident=(thisByteStats.nativeLibraryPrivateCleanResident||0)+\nregion.byteStats.privateCleanResident;}\nif(region.byteStats.sharedCleanResident!==undefined){thisByteStats.nativeLibrarySharedCleanResident=(thisByteStats.nativeLibrarySharedCleanResident||0)+\nregion.byteStats.sharedCleanResident;}\nif(region.byteStats.proportionalResident!==undefined){thisByteStats.nativeLibraryProportionalResident=(thisByteStats.nativeLibraryProportionalResident||0)+\nregion.byteStats.proportionalResident;}}}};return{VMRegion,VMRegionClassificationNode,};});'use strict';tr.exportTo('tr.model',function(){const DISCOUNTED_ALLOCATOR_NAMES=['winheap','malloc'];const TRACING_OVERHEAD_PATH=['allocated_objects','tracing_overhead'];const SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME;const RESIDENT_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.RESIDENT_SIZE_NUMERIC_NAME;function getSizeNumericValue(dump,sizeNumericName){const sizeNumeric=dump.numerics[sizeNumericName];if(sizeNumeric===undefined)return 0;return sizeNumeric.value;}\nfunction ProcessMemoryDump(globalMemoryDump,process,start){tr.model.ContainerMemoryDump.call(this,start);this.process=process;this.globalMemoryDump=globalMemoryDump;this.totals=undefined;this.vmRegions=undefined;this.heapDumps=undefined;this.tracingOverheadOwnershipSetUp_=false;this.tracingOverheadDiscountedFromVmRegions_=false;}\nProcessMemoryDump.prototype={__proto__:tr.model.ContainerMemoryDump.prototype,get stableId(){return this.process.stableId+'.memory.'+\nthis.process.memoryDumps.indexOf(this);},get userFriendlyName(){return'Process memory dump at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get containerName(){return this.process.userFriendlyName;},get processMemoryDumps(){const dumps={};dumps[this.process.pid]=this;return dumps;},get hasOwnVmRegions(){return this.vmRegions!==undefined;},setUpTracingOverheadOwnership(opt_model){if(this.tracingOverheadOwnershipSetUp_)return;this.tracingOverheadOwnershipSetUp_=true;const tracingDump=this.getMemoryAllocatorDumpByFullName('tracing');if(tracingDump===undefined||tracingDump.owns!==undefined){return;}\nif(tracingDump.owns!==undefined)return;const hasDiscountedFromAllocatorDumps=DISCOUNTED_ALLOCATOR_NAMES.some(function(allocatorName){const allocatorDump=this.getMemoryAllocatorDumpByFullName(allocatorName);if(allocatorDump===undefined){return false;}\nlet nextPathIndex=0;let currentDump=allocatorDump;let currentFullName=allocatorName;for(;nextPathIndex<TRACING_OVERHEAD_PATH.length;nextPathIndex++){const childFullName=currentFullName+'/'+\nTRACING_OVERHEAD_PATH[nextPathIndex];const childDump=this.getMemoryAllocatorDumpByFullName(childFullName);if(childDump===undefined)break;currentDump=childDump;currentFullName=childFullName;}\nfor(;nextPathIndex<TRACING_OVERHEAD_PATH.length;nextPathIndex++){const childFullName=currentFullName+'/'+\nTRACING_OVERHEAD_PATH[nextPathIndex];const childDump=new tr.model.MemoryAllocatorDump(currentDump.containerMemoryDump,childFullName);childDump.parent=currentDump;currentDump.children.push(childDump);currentFullName=childFullName;currentDump=childDump;}\nconst ownershipLink=new tr.model.MemoryAllocatorDumpLink(tracingDump,currentDump);tracingDump.owns=ownershipLink;currentDump.ownedBy.push(ownershipLink);return true;},this);if(hasDiscountedFromAllocatorDumps){this.forceRebuildingMemoryAllocatorDumpByFullNameIndex();}},discountTracingOverheadFromVmRegions(opt_model){if(this.tracingOverheadDiscountedFromVmRegions_)return;this.tracingOverheadDiscountedFromVmRegions_=true;const tracingDump=this.getMemoryAllocatorDumpByFullName('tracing');if(tracingDump===undefined)return;const discountedSize=getSizeNumericValue(tracingDump,SIZE_NUMERIC_NAME);const discountedResidentSize=getSizeNumericValue(tracingDump,RESIDENT_SIZE_NUMERIC_NAME);if(discountedSize<=0&&discountedResidentSize<=0)return;if(this.totals!==undefined){if(this.totals.residentBytes!==undefined){this.totals.residentBytes-=discountedResidentSize;}\nif(this.totals.peakResidentBytes!==undefined){this.totals.peakResidentBytes-=discountedResidentSize;}}\nif(this.vmRegions!==undefined){const hasSizeInBytes=this.vmRegions.sizeInBytes!==undefined;const hasPrivateDirtyResident=this.vmRegions.byteStats.privateDirtyResident!==undefined;const hasProportionalResident=this.vmRegions.byteStats.proportionalResident!==undefined;if((hasSizeInBytes&&discountedSize>0)||((hasPrivateDirtyResident||hasProportionalResident)&&discountedResidentSize>0)){const byteStats={};if(hasPrivateDirtyResident){byteStats.privateDirtyResident=-discountedResidentSize;}\nif(hasProportionalResident){byteStats.proportionalResident=-discountedResidentSize;}\nthis.vmRegions.addRegion(tr.model.VMRegion.fromDict({mappedFile:'[discounted tracing overhead]',sizeInBytes:hasSizeInBytes?-discountedSize:undefined,byteStats}));}}}};ProcessMemoryDump.hookUpMostRecentVmRegionsLinks=function(processDumps){let mostRecentVmRegions=undefined;processDumps.forEach(function(processDump){if(processDump.vmRegions!==undefined){mostRecentVmRegions=processDump.vmRegions;}\nprocessDump.mostRecentVmRegions=mostRecentVmRegions;});};tr.model.EventRegistry.register(ProcessMemoryDump,{name:'processMemoryDump',pluralName:'processMemoryDumps'});return{ProcessMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const ProcessBase=tr.model.ProcessBase;const ProcessInstantEvent=tr.model.ProcessInstantEvent;const Frame=tr.model.Frame;const ProcessMemoryDump=tr.model.ProcessMemoryDump;function Process(model,pid){if(model===undefined){throw new Error('model must be provided');}\nif(pid===undefined){throw new Error('pid must be provided');}\ntr.model.ProcessBase.call(this,model);this.pid=pid;this.name=undefined;this.labels=[];this.uptime_seconds=0;this.instantEvents=[];this.memoryDumps=[];this.frames=[];this.activities=[];}\nProcess.compare=function(x,y){let tmp=tr.model.ProcessBase.compare(x,y);if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}\nif(tmp)return tmp;tmp=tr.b.compareArrays(x.labels,y.labels,function(x,y){return x.localeCompare(y);});if(tmp)return tmp;return x.pid-y.pid;};Process.prototype={__proto__:tr.model.ProcessBase.prototype,get stableId(){return this.pid;},compareTo(that){return Process.compare(this,that);},*childEvents(){yield*ProcessBase.prototype.childEvents.call(this);yield*this.instantEvents;yield*this.frames;yield*this.memoryDumps;},addLabelIfNeeded(labelName){for(let i=0;i<this.labels.length;i++){if(this.labels[i]===labelName)return;}\nthis.labels.push(labelName);},get userFriendlyName(){let res;if(this.name){res=this.name+' (pid '+this.pid+')';}else{res='Process '+this.pid;}\nif(this.labels.length){res+=': '+this.labels.join(', ');}\nif(this.uptime_seconds){res+=', uptime:'+this.uptime_seconds+'s';}\nreturn res;},get userFriendlyDetails(){if(this.name){return this.name+' (pid '+this.pid+')';}\nreturn'pid: '+this.pid;},getSettingsKey(){if(!this.name)return undefined;if(!this.labels.length)return'processes.'+this.name;return'processes.'+this.name+'.'+this.labels.join('.');},shiftTimestampsForward(amount){for(let i=0;i<this.instantEvents.length;i++){this.instantEvents[i].start+=amount;}\nfor(let i=0;i<this.frames.length;i++){this.frames[i].shiftTimestampsForward(amount);}\nfor(let i=0;i<this.memoryDumps.length;i++){this.memoryDumps[i].shiftTimestampsForward(amount);}\nfor(let i=0;i<this.activities.length;i++){this.activities[i].shiftTimestampsForward(amount);}\ntr.model.ProcessBase.prototype.shiftTimestampsForward.apply(this,arguments);},updateBounds(){tr.model.ProcessBase.prototype.updateBounds.apply(this);for(let i=0;i<this.frames.length;i++){this.frames[i].addBoundsToRange(this.bounds);}\nfor(let i=0;i<this.memoryDumps.length;i++){this.memoryDumps[i].addBoundsToRange(this.bounds);}\nfor(let i=0;i<this.activities.length;i++){this.activities[i].addBoundsToRange(this.bounds);}},sortMemoryDumps(){this.memoryDumps.sort(function(x,y){return x.start-y.start;});tr.model.ProcessMemoryDump.hookUpMostRecentVmRegionsLinks(this.memoryDumps);}};return{Process,};});'use strict';tr.exportTo('tr.model',function(){function Sample(start,title,leafNode,thread,opt_cpu,opt_weight,opt_args){tr.model.TimedEvent.call(this,start);this.start_=start;this.title_=title;this.leafNode_=leafNode;this.thread_=thread;this.colorId_=leafNode.colorId;this.cpu_=opt_cpu;this.weight_=opt_weight;this.args=opt_args||{};}\nSample.prototype={__proto__:tr.model.TimedEvent.prototype,get title(){return this.title_;},get colorId(){return this.colorId_;},get thread(){return this.thread_;},get leafNode(){return this.leafNode_;},get userFriendlyName(){return'Sample at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get userFriendlyStack(){return this.leafNode_.userFriendlyStack;},getNodesAsArray(){const nodes=[];let node=this.leafNode_;while(node!==undefined){nodes.push(node);node=node.parentNode;}\nreturn nodes;},get cpu(){return this.cpu_;},get weight(){return this.weight_;},};tr.model.EventRegistry.register(Sample,{name:'Sample',pluralName:'Samples'});return{Sample,};});'use strict';tr.exportTo('tr.model',function(){function StackFrame(parentFrame,id,title,colorId,opt_sourceInfo){if(id===undefined){throw new Error('id must be given');}\nthis.parentFrame_=parentFrame;this.id=id;this.title_=title;this.colorId=colorId;this.children=[];this.sourceInfo_=opt_sourceInfo;if(this.parentFrame_){this.parentFrame_.addChild(this);}}\nStackFrame.prototype={get parentFrame(){return this.parentFrame_;},get title(){if(this.sourceInfo_){const src=this.sourceInfo_.toString();return this.title_+(src===''?'':' '+src);}\nreturn this.title_;},get domain(){let result='unknown';if(this.sourceInfo_&&this.sourceInfo_.domain){result=this.sourceInfo_.domain;}\nif(result==='unknown'&&this.parentFrame){result=this.parentFrame.domain;}\nreturn result;},get sourceInfo(){return this.sourceInfo_;},set parentFrame(parentFrame){if(this.parentFrame_){Polymer.dom(this.parentFrame_).removeChild(this);}\nthis.parentFrame_=parentFrame;if(this.parentFrame_){this.parentFrame_.addChild(this);}},addChild(child){this.children.push(child);},removeChild(child){const i=this.children.indexOf(child.id);if(i===-1){throw new Error('omg');}\nthis.children.splice(i,1);},removeAllChildren(){for(let i=0;i<this.children.length;i++){this.children[i].parentFrame_=undefined;}\nthis.children.splice(0,this.children.length);},get stackTrace(){const stack=[this];let cur=this.parentFrame;while(cur){stack.push(cur);cur=cur.parentFrame;}\nreturn stack;},getUserFriendlyStackTrace(){return this.stackTrace.map(function(x){return x.title;});}};return{StackFrame,};});'use strict';tr.exportTo('tr.model.um',function(){class UserModel extends tr.model.EventContainer{constructor(parentModel){super();this.parentModel_=parentModel;this.expectations_=new tr.model.EventSet();this.segments_=[];}\nget stableId(){return'UserModel';}\nget parentModel(){return this.parentModel_;}\nsortExpectations(){this.expectations_.sortEvents((x,y)=>(x.start-y.start));}\nget expectations(){return this.expectations_;}\nshiftTimestampsForward(amount){}\naddCategoriesToDict(categoriesDict){}\nget segments(){return this.segments_;}*childEvents(){yield*this.expectations;}*childEventContainers(){}\nupdateBounds(){this.bounds.reset();for(const expectation of this.expectations){expectation.addBoundsToRange(this.bounds);}}\nresegment(getKeyForSegment){const newSegments=[];let prevKey=undefined;let prevSegment=undefined;for(let i=0;i<this.segments.length;++i){const segment=this.segments[i];const key=getKeyForSegment(segment,i);if(prevSegment!==undefined&&key===prevKey){prevSegment.addSegment(segment);}else{prevSegment=segment.clone();newSegments.push(prevSegment);}\nprevKey=key;}\nreturn newSegments;}}\nreturn{UserModel,};});'use strict';tr.exportTo('tr',function(){const Process=tr.model.Process;const Device=tr.model.Device;const Kernel=tr.model.Kernel;const GlobalMemoryDump=tr.model.GlobalMemoryDump;const GlobalInstantEvent=tr.model.GlobalInstantEvent;const FlowEvent=tr.model.FlowEvent;const Alert=tr.model.Alert;const Sample=tr.model.Sample;function Model(){tr.model.EventContainer.call(this);tr.b.EventTarget.decorate(this);this.timestampShiftToZeroAmount_=0;this.faviconHue='blue';this.device=new Device(this);this.kernel=new Kernel(this);this.processes={};this.metadata=[];this.categories=[];this.instantEvents=[];this.flowEvents=[];this.clockSyncManager=new tr.model.ClockSyncManager();this.intrinsicTimeUnit_=undefined;this.stackFrames={};this.samples=[];this.alerts=[];this.userModel=new tr.model.um.UserModel(this);this.flowIntervalTree=new tr.b.IntervalTree((f)=>f.start,(f)=>f.end);this.globalMemoryDumps=[];this.userFriendlyCategoryDrivers_=[];this.annotationsByGuid_={};this.modelIndices=undefined;this.stats=new tr.model.ModelStats();this.importWarnings_=[];this.reportedImportWarnings_={};this.isTimeHighResolution_=true;this.patchupsToApply_=[];this.doesHelperGUIDSupportThisModel_={};this.helpersByConstructorGUID_={};this.eventsByStableId_=undefined;}\nModel.prototype={__proto__:tr.model.EventContainer.prototype,getEventByStableId(stableId){if(this.eventsByStableId_===undefined){this.eventsByStableId_={};for(const event of this.getDescendantEvents()){this.eventsByStableId_[event.stableId]=event;}}\nreturn this.eventsByStableId_[stableId];},getOrCreateHelper(constructor){if(!constructor.guid){throw new Error('Helper constructors must have GUIDs');}\nif(this.helpersByConstructorGUID_[constructor.guid]===undefined){if(this.doesHelperGUIDSupportThisModel_[constructor.guid]===undefined){this.doesHelperGUIDSupportThisModel_[constructor.guid]=constructor.supportsModel(this);}\nif(!this.doesHelperGUIDSupportThisModel_[constructor.guid]){return undefined;}\nthis.helpersByConstructorGUID_[constructor.guid]=new constructor(this);}\nreturn this.helpersByConstructorGUID_[constructor.guid];},*childEvents(){yield*this.globalMemoryDumps;yield*this.instantEvents;yield*this.flowEvents;yield*this.alerts;yield*this.samples;},*childEventContainers(){yield this.userModel;yield this.device;yield this.kernel;yield*Object.values(this.processes);},iterateAllPersistableObjects(callback){this.kernel.iterateAllPersistableObjects(callback);for(const pid in this.processes){this.processes[pid].iterateAllPersistableObjects(callback);}},updateBounds(){this.bounds.reset();const bounds=this.bounds;for(const ec of this.childEventContainers()){ec.updateBounds();bounds.addRange(ec.bounds);}\nfor(const event of this.childEvents()){event.addBoundsToRange(bounds);}},shiftWorldToZero(){const shiftAmount=-this.bounds.min;this.timestampShiftToZeroAmount_=shiftAmount;for(const ec of this.childEventContainers()){ec.shiftTimestampsForward(shiftAmount);}\nfor(const event of this.childEvents()){event.start+=shiftAmount;}\nthis.updateBounds();},convertTimestampToModelTime(sourceClockDomainName,ts){if(sourceClockDomainName!=='traceEventClock'){throw new Error('Only traceEventClock is supported.');}\nreturn tr.b.Unit.timestampFromUs(ts)+\nthis.timestampShiftToZeroAmount_;},get numProcesses(){let n=0;for(const p in this.processes){n++;}\nreturn n;},getProcess(pid){return this.processes[pid];},getOrCreateProcess(pid){if(!this.processes[pid]){this.processes[pid]=new Process(this,pid);}\nreturn this.processes[pid];},addStackFrame(stackFrame){if(this.stackFrames[stackFrame.id]){throw new Error('Stack frame already exists');}\nthis.stackFrames[stackFrame.id]=stackFrame;return stackFrame;},updateCategories_(){const categoriesDict={};this.userModel.addCategoriesToDict(categoriesDict);this.device.addCategoriesToDict(categoriesDict);this.kernel.addCategoriesToDict(categoriesDict);for(const pid in this.processes){this.processes[pid].addCategoriesToDict(categoriesDict);}\nthis.categories=[];for(const category in categoriesDict){if(category!==''){this.categories.push(category);}}},getAllThreads(){const threads=[];for(const tid in this.kernel.threads){threads.push(process.threads[tid]);}\nfor(const pid in this.processes){const process=this.processes[pid];for(const tid in process.threads){threads.push(process.threads[tid]);}}\nreturn threads;},getAllProcesses(opt_predicate){const processes=[];for(const pid in this.processes){const process=this.processes[pid];if(opt_predicate===undefined||opt_predicate(process)){processes.push(process);}}\nreturn processes;},getAllCounters(){const counters=[];counters.push.apply(counters,Object.values(this.device.counters||{}));counters.push.apply(counters,Object.values(this.kernel.counters||{}));for(const pid in this.processes){const process=this.processes[pid];for(const tid in process.counters){counters.push(process.counters[tid]);}}\nreturn counters;},getAnnotationByGUID(guid){return this.annotationsByGuid_[guid];},addAnnotation(annotation){if(!annotation.guid){throw new Error('Annotation with undefined guid given');}\nthis.annotationsByGuid_[annotation.guid]=annotation;tr.b.dispatchSimpleEvent(this,'annotationChange');},removeAnnotation(annotation){this.annotationsByGuid_[annotation.guid].onRemove();delete this.annotationsByGuid_[annotation.guid];tr.b.dispatchSimpleEvent(this,'annotationChange');},getAllAnnotations(){return Object.values(this.annotationsByGuid_);},addUserFriendlyCategoryDriver(ufcd){this.userFriendlyCategoryDrivers_.push(ufcd);},getUserFriendlyCategoryFromEvent(event){for(let i=0;i<this.userFriendlyCategoryDrivers_.length;i++){const ufc=this.userFriendlyCategoryDrivers_[i].fromEvent(event);if(ufc!==undefined)return ufc;}\nreturn undefined;},findAllThreadsNamed(name){const namedThreads=[];namedThreads.push.apply(namedThreads,this.kernel.findAllThreadsNamed(name));for(const pid in this.processes){namedThreads.push.apply(namedThreads,this.processes[pid].findAllThreadsNamed(name));}\nreturn namedThreads;},get importOptions(){return this.importOptions_;},set importOptions(options){this.importOptions_=options;},get intrinsicTimeUnit(){if(this.intrinsicTimeUnit_===undefined){return tr.b.TimeDisplayModes.ms;}\nreturn this.intrinsicTimeUnit_;},set intrinsicTimeUnit(value){if(this.intrinsicTimeUnit_===value)return;if(this.intrinsicTimeUnit_!==undefined){throw new Error('Intrinsic time unit already set');}\nthis.intrinsicTimeUnit_=value;},get isTimeHighResolution(){return this.isTimeHighResolution_;},set isTimeHighResolution(value){this.isTimeHighResolution_=value;},get canonicalUrl(){return this.canonicalUrl_;},set canonicalUrl(value){if(this.canonicalUrl_===value)return;if(this.canonicalUrl_!==undefined){throw new Error('canonicalUrl already set');}\nthis.canonicalUrl_=value;},importWarning(data){data.showToUser=!!data.showToUser;this.importWarnings_.push(data);if(this.reportedImportWarnings_[data.type]===true)return;this.reportedImportWarnings_[data.type]=true;},get hasImportWarnings(){return(this.importWarnings_.length>0);},get importWarnings(){return this.importWarnings_;},get importWarningsThatShouldBeShownToUser(){return this.importWarnings_.filter(function(warning){return warning.showToUser;});},autoCloseOpenSlices(){this.samples.sort(function(x,y){return x.start-y.start;});this.updateBounds();this.kernel.autoCloseOpenSlices();for(const pid in this.processes){this.processes[pid].autoCloseOpenSlices();}},createSubSlices(){this.kernel.createSubSlices();for(const pid in this.processes){this.processes[pid].createSubSlices();}},preInitializeObjects(){for(const pid in this.processes){this.processes[pid].preInitializeObjects();}},initializeObjects(){for(const pid in this.processes){this.processes[pid].initializeObjects();}},pruneEmptyContainers(){this.kernel.pruneEmptyContainers();for(const pid in this.processes){this.processes[pid].pruneEmptyContainers();}},mergeKernelWithUserland(){for(const pid in this.processes){this.processes[pid].mergeKernelWithUserland();}},computeWorldBounds(shiftWorldToZero){this.updateBounds();this.updateCategories_();if(shiftWorldToZero){this.shiftWorldToZero();}},buildFlowEventIntervalTree(){for(let i=0;i<this.flowEvents.length;++i){const flowEvent=this.flowEvents[i];this.flowIntervalTree.insert(flowEvent);}\nthis.flowIntervalTree.updateHighValues();},cleanupUndeletedObjects(){for(const pid in this.processes){this.processes[pid].autoDeleteObjects(this.bounds.max);}},sortMemoryDumps(){this.globalMemoryDumps.sort(function(x,y){return x.start-y.start;});for(const pid in this.processes){this.processes[pid].sortMemoryDumps();}},finalizeMemoryGraphs(){this.globalMemoryDumps.forEach(function(dump){dump.finalizeGraph();});},buildEventIndices(){this.modelIndices=new tr.model.ModelIndices(this);},sortAlerts(){this.alerts.sort(function(x,y){return x.start-y.start;});},applyObjectRefPatchups(){const unresolved=[];this.patchupsToApply_.forEach(function(patchup){if(patchup.pidRef in this.processes){const snapshot=this.processes[patchup.pidRef].objects.getSnapshotAt(patchup.scopedId,patchup.ts);if(snapshot){patchup.object[patchup.field]=snapshot;snapshot.referencedAt(patchup.item,patchup.object,patchup.field);return;}}\nunresolved.push(patchup);},this);this.patchupsToApply_=unresolved;},replacePIDRefsInPatchups(oldPidRef,newPidRef){this.patchupsToApply_.forEach(function(patchup){if(patchup.pidRef===oldPidRef){patchup.pidRef=newPidRef;}});},joinRefs(){this.joinObjectRefs_();this.applyObjectRefPatchups();},joinObjectRefs_(){for(const[pid,process]of Object.entries(this.processes)){this.joinObjectRefsForProcess_(pid,process);}},joinObjectRefsForProcess_(pid,process){for(const thread of Object.values(process.threads)){thread.asyncSliceGroup.slices.forEach(function(item){this.searchItemForIDRefs_(pid,'start',item);},this);thread.sliceGroup.slices.forEach(function(item){this.searchItemForIDRefs_(pid,'start',item);},this);}\nprocess.objects.iterObjectInstances(function(instance){instance.snapshots.forEach(function(item){this.searchItemForIDRefs_(pid,'ts',item);},this);},this);},searchItemForIDRefs_(pid,itemTimestampField,item){if(!item.args&&!item.contexts)return;const patchupsToApply=this.patchupsToApply_;function handleField(object,fieldName,fieldValue){if(!fieldValue||(!fieldValue.id_ref&&!fieldValue.idRef)){return;}\nconst scope=fieldValue.scope||tr.model.OBJECT_DEFAULT_SCOPE;const idRef=fieldValue.id_ref||fieldValue.idRef;const scopedId=new tr.model.ScopedId(scope,idRef);const pidRef=fieldValue.pid_ref||fieldValue.pidRef||pid;const ts=item[itemTimestampField];patchupsToApply.push({item,object,field:fieldName,pidRef,scopedId,ts});}\nfunction iterObjectFieldsRecursively(object){if(!(object instanceof Object))return;if((object instanceof tr.model.ObjectSnapshot)||(object instanceof Float32Array)||(object instanceof tr.b.math.Quad)){return;}\nif(object instanceof Array){for(let i=0;i<object.length;i++){handleField(object,i,object[i]);iterObjectFieldsRecursively(object[i]);}\nreturn;}\nfor(const key in object){const value=object[key];handleField(object,key,value);iterObjectFieldsRecursively(value);}}\niterObjectFieldsRecursively(item.args);iterObjectFieldsRecursively(item.contexts);}};return{Model,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const kThreadGuid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadDCStartOpcode=3;function Decoder(){this.payload_=new DataView(new ArrayBuffer(256));}\nDecoder.prototype={__proto__:Object.prototype,reset(base64Payload){const decodedSize=tr.b.Base64.getDecodedBufferLength(base64Payload);if(decodedSize>this.payload_.byteLength){this.payload_=new DataView(new ArrayBuffer(decodedSize));}\ntr.b.Base64.DecodeToTypedArray(base64Payload,this.payload_);this.position_=0;},skip(length){this.position_+=length;},decodeUInt8(){const result=this.payload_.getUint8(this.position_,true);this.position_+=1;return result;},decodeUInt16(){const result=this.payload_.getUint16(this.position_,true);this.position_+=2;return result;},decodeUInt32(){const result=this.payload_.getUint32(this.position_,true);this.position_+=4;return result;},decodeUInt64ToString(){const low=this.decodeUInt32();const high=this.decodeUInt32();const lowStr=('0000000'+low.toString(16)).substr(-8);const highStr=('0000000'+high.toString(16)).substr(-8);const result=highStr+lowStr;return result;},decodeInt8(){const result=this.payload_.getInt8(this.position_,true);this.position_+=1;return result;},decodeInt16(){const result=this.payload_.getInt16(this.position_,true);this.position_+=2;return result;},decodeInt32(){const result=this.payload_.getInt32(this.position_,true);this.position_+=4;return result;},decodeInt64ToString(){return this.decodeUInt64ToString();},decodeUInteger(is64){if(is64){return this.decodeUInt64ToString();}\nreturn this.decodeUInt32();},decodeString(){let str='';while(true){const c=this.decodeUInt8();if(!c)return str;str=str+String.fromCharCode(c);}},decodeW16String(){let str='';while(true){const c=this.decodeUInt16();if(!c)return str;str=str+String.fromCharCode(c);}},decodeFixedW16String(length){const oldPosition=this.position_;let str='';for(let i=0;i<length;i++){const c=this.decodeUInt16();if(!c)break;str=str+String.fromCharCode(c);}\nthis.position_=oldPosition+2*length;return str;},decodeBytes(length){const bytes=[];for(let i=0;i<length;++i){const c=this.decodeUInt8();bytes.push(c);}\nreturn bytes;},decodeSID(is64){const pSid=this.decodeUInteger(is64);const attributes=this.decodeUInt32();if(is64){this.decodeUInt32();}\nconst revision=this.decodeUInt8();const subAuthorityCount=this.decodeUInt8();this.decodeUInt16();this.decodeUInt32();if(revision!==1){throw new Error('Invalid SID revision: could not decode the SID structure.');}\nconst sid=this.decodeBytes(4*subAuthorityCount);return{pSid,attributes,sid};},decodeSystemTime(){const wYear=this.decodeInt16();const wMonth=this.decodeInt16();const wDayOfWeek=this.decodeInt16();const wDay=this.decodeInt16();const wHour=this.decodeInt16();const wMinute=this.decodeInt16();const wSecond=this.decodeInt16();const wMilliseconds=this.decodeInt16();return{wYear,wMonth,wDayOfWeek,wDay,wHour,wMinute,wSecond,wMilliseconds};},decodeTimeZoneInformation(){const bias=this.decodeUInt32();const standardName=this.decodeFixedW16String(32);const standardDate=this.decodeSystemTime();const standardBias=this.decodeUInt32();const daylightName=this.decodeFixedW16String(32);const daylightDate=this.decodeSystemTime();const daylightBias=this.decodeUInt32();return{bias,standardName,standardDate,standardBias,daylightName,daylightDate,daylightBias};}};function EtwImporter(model,events){this.importPriority=3;this.model_=model;this.events_=events;this.handlers_={};this.decoder_=new Decoder();this.walltime_=undefined;this.ticks_=undefined;this.is64bit_=undefined;this.tidsToPid_={};const allTypeInfos=tr.e.importer.etw.Parser.getAllRegisteredTypeInfos();this.parsers_=allTypeInfos.map(function(typeInfo){return new typeInfo.constructor(this);},this);}\nEtwImporter.canImport=function(events){if(!events.hasOwnProperty('name')||!events.hasOwnProperty('content')||events.name!=='ETW'){return false;}\nreturn true;};EtwImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'EtwImporter';},get model(){return this.model_;},createThreadIfNeeded(pid,tid){this.tidsToPid_[tid]=pid;},removeThreadIfPresent(tid){this.tidsToPid_[tid]=undefined;},getPidFromWindowsTid(tid){if(tid===0)return 0;const pid=this.tidsToPid_[tid];if(pid===undefined){return 0;}\nreturn pid;},getThreadFromWindowsTid(tid){const pid=this.getPidFromWindowsTid(tid);const process=this.model_.getProcess(pid);if(!process)return undefined;return process.getThread(tid);},getOrCreateCpu(cpuNumber){const cpu=this.model_.kernel.getOrCreateCpu(cpuNumber);return cpu;},importEvents(){this.events_.content.forEach(this.parseInfo.bind(this));if(this.walltime_===undefined||this.ticks_===undefined){throw Error('Cannot find clock sync information in the system trace.');}\nif(this.is64bit_===undefined){throw Error('Cannot determine pointer size of the system trace.'+'Consider deselecting \"System tracing\" or disabling the \"Paging '+'Executive\" feature of Windows');}\nthis.events_.content.forEach(this.parseEvent.bind(this));},importTimestamp(timestamp){const ts=parseInt(timestamp,16);return(ts-this.walltime_+this.ticks_)/1000.;},parseInfo(event){if(event.hasOwnProperty('guid')&&event.hasOwnProperty('walltime')&&event.hasOwnProperty('tick')&&event.guid==='ClockSync'){this.walltime_=parseInt(event.walltime,16);this.ticks_=parseInt(event.tick,16);}\nif(this.is64bit_===undefined&&event.hasOwnProperty('guid')&&event.hasOwnProperty('op')&&event.hasOwnProperty('ver')&&event.hasOwnProperty('payload')&&event.guid===kThreadGuid&&event.op===kThreadDCStartOpcode){const decodedSize=tr.b.Base64.getDecodedBufferLength(event.payload);if(event.ver===1){if(decodedSize>=52){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===2){if(decodedSize>=64){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===3){if(decodedSize>=60){this.is64bit_=true;}else{this.is64bit_=false;}}}\nreturn true;},parseEvent(event){if(!event.hasOwnProperty('guid')||!event.hasOwnProperty('op')||!event.hasOwnProperty('ver')||!event.hasOwnProperty('cpu')||!event.hasOwnProperty('ts')||!event.hasOwnProperty('payload')){return false;}\nconst timestamp=this.importTimestamp(event.ts);const header={guid:event.guid,opcode:event.op,version:event.ver,cpu:event.cpu,timestamp,is64:this.is64bit_};const decoder=this.decoder_;decoder.reset(event.payload);const handler=this.getEventHandler(header.guid,header.opcode);if(!handler)return false;if(!handler(header,decoder)){this.model_.importWarning({type:'parse_error',message:'Malformed '+header.guid+' event ('+event.payload+')'});return false;}\nreturn true;},registerEventHandler(guid,opcode,handler){if(this.handlers_[guid]===undefined){this.handlers_[guid]=[];}\nthis.handlers_[guid][opcode]=handler;},getEventHandler(guid,opcode){if(this.handlers_[guid]===undefined){return undefined;}\nreturn this.handlers_[guid][opcode];}};tr.importer.Importer.register(EtwImporter);return{EtwImporter,};});'use strict';tr.exportTo('tr.b',function(){class TraceStream{static get HEADER_SIZE(){return Math.pow(2,10);}\nstatic get CHUNK_SIZE(){return Math.pow(2,20);}\nget isBinary(){throw new Error('Not implemented');}\nget hasData(){throw new Error('Not implemented');}\nget header(){throw new Error('Not implemented');}\nreadUntilDelimiter(delim){throw new Error('Not implemented');}\nreadNumBytes(opt_size){throw new Error('Not implemented');}\nrewind(){throw new Error('Not implemented');}\nsubstream(offset,opt_length,opt_headerSize){throw new Error('Not implemented');}}\nreturn{TraceStream,};});'use strict';tr.exportTo('tr.e.importer.fuchsia',function(){const IMPORT_PRIORITY=0;const IDLE_THREAD_THRESHOLD=6444000000;const ZX_THREAD_STATE_NEW=0;const ZX_THREAD_STATE_RUNNING=1;const ZX_THREAD_STATE_SUSPENDED=2;const ZX_THREAD_STATE_BLOCKED=3;const ZX_THREAD_STATE_DYING=4;const ZX_THREAD_STATE_DEAD=5;class FuchsiaImporter extends tr.importer.Importer{constructor(model,eventData){super(model,eventData);this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=eventData.events;this.parsers_=[];this.threadInfo_=new Map();this.processNames_=new Map();this.threadStates_=new Map();}\nstatic canImport(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;}\nif(eventData instanceof Object&&eventData.type==='fuchsia'){return true;}\nreturn false;}\nget importerName(){return'FuchsiaImporter';}\nget model(){return this.model_;}\nimportClockSyncMarkers(){}\nfinalizeImport(){}\nisIdleThread(prio,tid){if(prio===undefined){return tid>IDLE_THREAD_THRESHOLD;}\nreturn prio===0;}\nrecordThreadState_(tid,timestamp,state,prio){if(this.isIdleThread(prio,tid)){return;}\nconst states=this.threadStates_.has(tid)?this.threadStates_.get(tid):[];states.push({'ts':timestamp,state});this.threadStates_.set(tid,states);}\nprocessContextSwitchEvent_(event){let tid=event.in.tid;let threadName=tid.toString();let procName='';const prio=event.in.prio;if(this.threadInfo_.has(tid)){const threadInfo=this.threadInfo_.get(tid);threadName=threadInfo.name;const pid=threadInfo.pid;if(this.processNames_.has(pid)){procName=this.processNames_.get(pid)+':';}}\nconst name=procName+threadName;if(this.isIdleThread(prio,tid)){tid=undefined;}\nconst cpu=this.model_.kernel.getOrCreateCpu(event.cpu);const timestamp=tr.b.Unit.timestampFromUs(event.ts);cpu.switchActiveThread(timestamp,{},tid,name,tid);const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;this.recordThreadState_(tid,timestamp,SCHEDULING_STATE.RUNNING,prio);let outState=SCHEDULING_STATE.UNKNOWN;switch(event.out.state){case ZX_THREAD_STATE_NEW:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_RUNNING:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_BLOCKED:outState=SCHEDULING_STATE.SLEEPING;break;case ZX_THREAD_STATE_SUSPENDED:outState=SCHEDULING_STATE.STOPPED;break;case ZX_THREAD_STATE_DEAD:outState=SCHEDULING_STATE.TASK_DEAD;break;}\nthis.recordThreadState_(event.out.tid,timestamp,outState,event.out.prio);}\nprocessProcessInfoEvent_(event){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.name;this.processNames_.set(event.pid,event.name);if('sort_index'in event){process.sortIndex=event.sort_index;}}\nprocessThreadInfoEvent_(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.name=event.name;this.threadInfo_.set(event.tid,{'name':event.name,'pid':event.pid});if('sort_index'in event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.sortIndex=event.sort_index;}}\nprocessEvent_(event){switch(event.ph){case'k':this.processContextSwitchEvent_(event);break;case'p':this.processProcessInfoEvent_(event);break;case't':this.processThreadInfoEvent_(event);break;}}\npostProcessStates_(){for(const[tid,states]of this.threadStates_){if(!this.threadInfo_.has(tid)){continue;}\nconst pid=this.threadInfo_.get(tid).pid;const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const slices=[];for(let i=0;i<states.length-1;i++){slices.push(new tr.model.ThreadTimeSlice(thread,states[i].state,'',states[i].ts,{},states[i+1].ts-states[i].ts));}\nthread.timeSlices=slices;}}\nimportEvents(){for(const event of this.events_){this.processEvent_(event);}\nthis.postProcessStates_();}}\ntr.importer.Importer.register(FuchsiaImporter);return{FuchsiaImporter,IMPORT_PRIORITY,};});'use strict';tr.exportTo('tr.b',function(){const MAX_FUNCTION_ARGS_COUNT=Math.pow(2,15)-1;class InMemoryTraceStream extends tr.b.TraceStream{constructor(buffer,isBinary,opt_headerSize){super();if(!buffer instanceof Uint8Array){throw new Error('buffer should be a Uint8Array');}\nconst headerSize=opt_headerSize||tr.b.TraceStream.HEADER_SIZE;this.data_=buffer;this.isBinary_=isBinary;this.header_=InMemoryTraceStream.uint8ArrayToString_(this.data_.subarray(0,headerSize));this.cursor_=0;}\nget isBinary(){return this.isBinary_;}\nget hasData(){return this.cursor_<this.data_.length;}\nget header(){return this.header_;}\nget data(){return this.data_;}\ntoString(){this.rewind();return this.readNumBytes(Number.MAX_VALUE);}\nreadUntilDelimiter(delim){if(delim.length!==1){throw new Error('delim must be exactly one character');}\nconst offset=this.data_.indexOf(delim.charCodeAt(0),this.cursor_)+1;return this.readToOffset_(offset>0?Math.min(offset,this.data_.length):this.data_.length);}\nreadNumBytes(opt_size){if(opt_size!==undefined&&opt_size<=0){throw new Error(`readNumBytes expects a positive size (${opt_size} given)`);}\nconst size=opt_size||tr.b.TraceStream.CHUNK_SIZE;const offset=Math.min(this.cursor_+size,this.data_.length);return this.readToOffset_(offset);}\nrewind(){this.cursor_=0;}\nsubstream(startOffset,opt_endOffset,opt_headerSize){return new InMemoryTraceStream(this.data_.subarray(startOffset,opt_endOffset),this.isBinary_,opt_headerSize);}\nreadToOffset_(offset){const out=InMemoryTraceStream.uint8ArrayToString_(this.data_.subarray(this.cursor_,offset));this.cursor_=offset;return out;}\nstatic uint8ArrayToString_(arr){if(typeof TextDecoder!=='undefined'){const decoder=new TextDecoder('utf-8');return decoder.decode(arr);}\nconst c=[];for(let i=0;i<arr.length;i+=MAX_FUNCTION_ARGS_COUNT){c.push(String.fromCharCode(...arr.subarray(i,i+MAX_FUNCTION_ARGS_COUNT)));}\nreturn c.join('');}}\nreturn{InMemoryTraceStream,};});!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).pako=t()}}(function(){return function t(e,a,i){function n(s,o){if(!a[s]){if(!e[s]){var l=\"function\"==typeof require&&require;if(!o&&l)return l(s,!0);if(r)return r(s,!0);var h=new Error(\"Cannot find module '\"+s+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var d=a[s]={exports:{}};e[s][0].call(d.exports,function(t){var a=e[s][1][t];return n(a||t)},d,d.exports,t,e,a,i)}return a[s].exports}for(var r=\"function\"==typeof require&&require,s=0;s<i.length;s++)n(i[s]);return n}({1:[function(t,e,a){\"use strict\";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({level:_,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var a=r.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==f)throw new Error(l[a]);if(e.header&&r.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(n=\"string\"==typeof e.dictionary?o.string2buf(e.dictionary):\"[object ArrayBuffer]\"===d.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=r.deflateSetDictionary(this.strm,n))!==f)throw new Error(l[a]);this._dict_set=!0}}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||l[a.err];return a.result}var r=t(\"./zlib/deflate\"),s=t(\"./utils/common\"),o=t(\"./utils/strings\"),l=t(\"./zlib/messages\"),h=t(\"./zlib/zstream\"),d=Object.prototype.toString,f=0,_=-1,u=0,c=8;i.prototype.push=function(t,e){var a,i,n=this.strm,l=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,\"string\"==typeof t?n.input=o.string2buf(t):\"[object ArrayBuffer]\"===d.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new s.Buf8(l),n.next_out=0,n.avail_out=l),1!==(a=r.deflate(n,i))&&a!==f)return this.onEnd(a),this.ended=!0,!1;0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||(\"string\"===this.options.to?this.onData(o.buf2binstring(s.shrinkBuf(n.output,n.next_out))):this.onData(s.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||0===n.avail_out)&&1!==a);return 4===i?(a=r.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===f):2!==i||(this.onEnd(f),n.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===f&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=i,a.deflate=n,a.deflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.gzip=function(t,e){return e=e||{},e.gzip=!0,n(t,e)}},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/deflate\":8,\"./zlib/messages\":13,\"./zlib/zstream\":15}],2:[function(t,e,a){\"use strict\";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var a=r.inflateInit2(this.strm,e.windowBits);if(a!==l.Z_OK)throw new Error(h[a]);this.header=new f,r.inflateGetHeader(this.strm,this.header)}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||h[a.err];return a.result}var r=t(\"./zlib/inflate\"),s=t(\"./utils/common\"),o=t(\"./utils/strings\"),l=t(\"./zlib/constants\"),h=t(\"./zlib/messages\"),d=t(\"./zlib/zstream\"),f=t(\"./zlib/gzheader\"),_=Object.prototype.toString;i.prototype.push=function(t,e){var a,i,n,h,d,f,u=this.strm,c=this.options.chunkSize,b=this.options.dictionary,g=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?l.Z_FINISH:l.Z_NO_FLUSH,\"string\"==typeof t?u.input=o.binstring2buf(t):\"[object ArrayBuffer]\"===_.call(t)?u.input=new Uint8Array(t):u.input=t,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new s.Buf8(c),u.next_out=0,u.avail_out=c),(a=r.inflate(u,l.Z_NO_FLUSH))===l.Z_NEED_DICT&&b&&(f=\"string\"==typeof b?o.string2buf(b):\"[object ArrayBuffer]\"===_.call(b)?new Uint8Array(b):b,a=r.inflateSetDictionary(this.strm,f)),a===l.Z_BUF_ERROR&&!0===g&&(a=l.Z_OK,g=!1),a!==l.Z_STREAM_END&&a!==l.Z_OK)return this.onEnd(a),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&a!==l.Z_STREAM_END&&(0!==u.avail_in||i!==l.Z_FINISH&&i!==l.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(n=o.utf8border(u.output,u.next_out),h=u.next_out-n,d=o.buf2string(u.output,n),u.next_out=h,u.avail_out=c-h,h&&s.arraySet(u.output,u.output,n,h,0),this.onData(d)):this.onData(s.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(g=!0)}while((u.avail_in>0||0===u.avail_out)&&a!==l.Z_STREAM_END);return a===l.Z_STREAM_END&&(i=l.Z_FINISH),i===l.Z_FINISH?(a=r.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===l.Z_OK):i!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),u.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===l.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=i,a.inflate=n,a.inflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.ungzip=n},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/constants\":6,\"./zlib/gzheader\":9,\"./zlib/inflate\":11,\"./zlib/messages\":13,\"./zlib/zstream\":15}],3:[function(t,e,a){\"use strict\";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;a.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(var n in a)i(a,n)&&(t[n]=a[n])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(i=0,e=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),n=0,e=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},s={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};a.setTyped=function(t){t?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,r)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,s))},a.setTyped(n)},{}],4:[function(t,e,a){\"use strict\";function i(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&r))return String.fromCharCode.apply(null,n.shrinkBuf(t,e));for(var a=\"\",i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a}var n=t(\"./common\"),r=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(t){r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){s=!1}for(var o=new n.Buf8(256),l=0;l<256;l++)o[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;o[254]=o[254]=1,a.string2buf=function(t){var e,a,i,r,s,o=t.length,l=0;for(r=0;r<o;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new n.Buf8(l),s=0,r=0;s<l;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},a.buf2binstring=function(t){return i(t,t.length)},a.binstring2buf=function(t){for(var e=new n.Buf8(t.length),a=0,i=e.length;a<i;a++)e[a]=t.charCodeAt(a);return e},a.buf2string=function(t,e){var a,n,r,s,l=e||t.length,h=new Array(2*l);for(n=0,a=0;a<l;)if((r=t[a++])<128)h[n++]=r;else if((s=o[r])>4)h[n++]=65533,a+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&a<l;)r=r<<6|63&t[a++],s--;s>1?h[n++]=65533:r<65536?h[n++]=r:(r-=65536,h[n++]=55296|r>>10&1023,h[n++]=56320|1023&r)}return i(h,n)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;a>=0&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+o[t[a]]>e?a:e}},{\"./common\":3}],5:[function(t,e,a){\"use strict\";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(n=n+e[i++]|0)|0}while(--s);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){\"use strict\";var i=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,n){var r=i,s=n+a;t^=-1;for(var o=n;o<s;o++)t=t>>>8^r[255&(t^e[o])];return-1^t}},{}],8:[function(t,e,a){\"use strict\";function i(t,e){return t.msg=A[e],e}function n(t){return(t<<1)-(t>4?9:0)}function r(t){for(var e=t.length;--e>=0;)t[e]=0}function s(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(z.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function o(t,e){B._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,s(t.strm)}function l(t,e){t.pending_buf[t.pending++]=e}function h(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function d(t,e,a,i){var n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,z.arraySet(e,t.input,t.next_in,n,a),1===t.state.wrap?t.adler=S(t.adler,e,n,a):2===t.state.wrap&&(t.adler=E(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)}function f(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-it?t.strstart-(t.w_size-it):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+at,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=at-(_-r),r=_-at,i>s){if(t.match_start=e,s=i,i>=o)break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function _(t){var e,a,i,n,r,s=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-it)){z.arraySet(t.window,t.window,s,s,0),t.match_start-=s,t.strstart-=s,t.block_start-=s,e=a=t.hash_size;do{i=t.head[--e],t.head[e]=i>=s?i-s:0}while(--a);e=a=s;do{i=t.prev[--e],t.prev[e]=i>=s?i-s:0}while(--a);n+=s}if(0===t.strm.avail_in)break;if(a=d(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=a,t.lookahead+t.insert>=et)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+et-1])&t.hash_mask,t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<et)););}while(t.lookahead<it&&0!==t.strm.avail_in)}function u(t,e){for(var a,i;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a)),t.match_length>=et)if(i=B._tr_tally(t,t.strstart-t.match_start,t.match_length-et),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=et){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function c(t,e){for(var a,i,n;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=et-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a),t.match_length<=5&&(t.strategy===H||t.match_length===et&&t.strstart-t.match_start>4096)&&(t.match_length=et-1)),t.prev_length>=et&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-et,i=B._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-et),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=et-1,t.strstart++,i&&(o(t,!1),0===t.strm.avail_out))return _t}else if(t.match_available){if((i=B._tr_tally(t,0,t.window[t.strstart-1]))&&o(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return _t}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=B._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function b(t,e){for(var a,i,n,r,s=t.window;;){if(t.lookahead<=at){if(_(t),t.lookahead<=at&&e===Z)return _t;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=et&&t.strstart>0&&(n=t.strstart-1,(i=s[n])===s[++n]&&i===s[++n]&&i===s[++n])){r=t.strstart+at;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<r);t.match_length=at-(r-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=et?(a=B._tr_tally(t,1,t.match_length-et),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function g(t,e){for(var a;;){if(0===t.lookahead&&(_(t),0===t.lookahead)){if(e===Z)return _t;break}if(t.match_length=0,a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function m(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function w(t){t.window_size=2*t.w_size,r(t.head),t.max_lazy_match=x[t.level].max_lazy,t.good_match=x[t.level].good_length,t.nice_match=x[t.level].nice_length,t.max_chain_length=x[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=et-1,t.match_available=0,t.ins_h=0}function p(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new z.Buf16(2*$),this.dyn_dtree=new z.Buf16(2*(2*Q+1)),this.bl_tree=new z.Buf16(2*(2*V+1)),r(this.dyn_ltree),r(this.dyn_dtree),r(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new z.Buf16(tt+1),this.heap=new z.Buf16(2*J+1),r(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new z.Buf16(2*J+1),r(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=Y,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?rt:dt,t.adler=2===e.wrap?0:1,e.last_flush=Z,B._tr_init(e),D):i(t,U)}function k(t){var e=v(t);return e===D&&w(t.state),e}function y(t,e,a,n,r,s){if(!t)return U;var o=1;if(e===L&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),r<1||r>G||a!==q||n<8||n>15||e<0||e>9||s<0||s>M)return i(t,U);8===n&&(n=9);var l=new p;return t.state=l,l.strm=t,l.wrap=o,l.gzhead=null,l.w_bits=n,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=r+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+et-1)/et),l.window=new z.Buf8(2*l.w_size),l.head=new z.Buf16(l.hash_size),l.prev=new z.Buf16(l.w_size),l.lit_bufsize=1<<r+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new z.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=s,l.method=a,k(t)}var x,z=t(\"../utils/common\"),B=t(\"./trees\"),S=t(\"./adler32\"),E=t(\"./crc32\"),A=t(\"./messages\"),Z=0,R=1,C=3,N=4,O=5,D=0,I=1,U=-2,T=-3,F=-5,L=-1,H=1,j=2,K=3,M=4,P=0,Y=2,q=8,G=9,X=15,W=8,J=286,Q=30,V=19,$=2*J+1,tt=15,et=3,at=258,it=at+et+1,nt=32,rt=42,st=69,ot=73,lt=91,ht=103,dt=113,ft=666,_t=1,ut=2,ct=3,bt=4,gt=3;x=[new m(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(_(t),0===t.lookahead&&e===Z)return _t;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,o(t,!1),0===t.strm.avail_out))return _t;if(t.strstart-t.block_start>=t.w_size-it&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):(t.strstart>t.block_start&&(o(t,!1),t.strm.avail_out),_t)}),new m(4,4,8,4,u),new m(4,5,16,8,u),new m(4,6,32,32,u),new m(4,4,16,16,c),new m(8,16,32,32,c),new m(8,16,128,128,c),new m(8,32,128,256,c),new m(32,128,258,1024,c),new m(32,258,258,4096,c)],a.deflateInit=function(t,e){return y(t,e,q,X,W,P)},a.deflateInit2=y,a.deflateReset=k,a.deflateResetKeep=v,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?U:(t.state.gzhead=e,D):U},a.deflate=function(t,e){var a,o,d,f;if(!t||!t.state||e>O||e<0)return t?i(t,U):U;if(o=t.state,!t.output||!t.input&&0!==t.avail_in||o.status===ft&&e!==N)return i(t,0===t.avail_out?F:U);if(o.strm=t,a=o.last_flush,o.last_flush=e,o.status===rt)if(2===o.wrap)t.adler=0,l(o,31),l(o,139),l(o,8),o.gzhead?(l(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),l(o,255&o.gzhead.time),l(o,o.gzhead.time>>8&255),l(o,o.gzhead.time>>16&255),l(o,o.gzhead.time>>24&255),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(l(o,255&o.gzhead.extra.length),l(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(t.adler=E(t.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=st):(l(o,0),l(o,0),l(o,0),l(o,0),l(o,0),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,gt),o.status=dt);else{var _=q+(o.w_bits-8<<4)<<8;_|=(o.strategy>=j||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(_|=nt),_+=31-_%31,o.status=dt,h(o,_),0!==o.strstart&&(h(o,t.adler>>>16),h(o,65535&t.adler)),t.adler=1}if(o.status===st)if(o.gzhead.extra){for(d=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending!==o.pending_buf_size));)l(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=ot)}else o.status=ot;if(o.status===ot)if(o.gzhead.name){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.name.length?255&o.gzhead.name.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.gzindex=0,o.status=lt)}else o.status=lt;if(o.status===lt)if(o.gzhead.comment){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.comment.length?255&o.gzhead.comment.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.status=ht)}else o.status=ht;if(o.status===ht&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&s(t),o.pending+2<=o.pending_buf_size&&(l(o,255&t.adler),l(o,t.adler>>8&255),t.adler=0,o.status=dt)):o.status=dt),0!==o.pending){if(s(t),0===t.avail_out)return o.last_flush=-1,D}else if(0===t.avail_in&&n(e)<=n(a)&&e!==N)return i(t,F);if(o.status===ft&&0!==t.avail_in)return i(t,F);if(0!==t.avail_in||0!==o.lookahead||e!==Z&&o.status!==ft){var u=o.strategy===j?g(o,e):o.strategy===K?b(o,e):x[o.level].func(o,e);if(u!==ct&&u!==bt||(o.status=ft),u===_t||u===ct)return 0===t.avail_out&&(o.last_flush=-1),D;if(u===ut&&(e===R?B._tr_align(o):e!==O&&(B._tr_stored_block(o,0,0,!1),e===C&&(r(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),s(t),0===t.avail_out))return o.last_flush=-1,D}return e!==N?D:o.wrap<=0?I:(2===o.wrap?(l(o,255&t.adler),l(o,t.adler>>8&255),l(o,t.adler>>16&255),l(o,t.adler>>24&255),l(o,255&t.total_in),l(o,t.total_in>>8&255),l(o,t.total_in>>16&255),l(o,t.total_in>>24&255)):(h(o,t.adler>>>16),h(o,65535&t.adler)),s(t),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?D:I)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==rt&&e!==st&&e!==ot&&e!==lt&&e!==ht&&e!==dt&&e!==ft?i(t,U):(t.state=null,e===dt?i(t,T):D):U},a.deflateSetDictionary=function(t,e){var a,i,n,s,o,l,h,d,f=e.length;if(!t||!t.state)return U;if(a=t.state,2===(s=a.wrap)||1===s&&a.status!==rt||a.lookahead)return U;for(1===s&&(t.adler=S(t.adler,e,f,0)),a.wrap=0,f>=a.w_size&&(0===s&&(r(a.head),a.strstart=0,a.block_start=0,a.insert=0),d=new z.Buf8(a.w_size),z.arraySet(d,e,f-a.w_size,a.w_size,0),e=d,f=a.w_size),o=t.avail_in,l=t.next_in,h=t.input,t.avail_in=f,t.next_in=0,t.input=e,_(a);a.lookahead>=et;){i=a.strstart,n=a.lookahead-(et-1);do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+et-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++}while(--n);a.strstart=i,a.lookahead=et-1,_(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=et-1,a.match_available=0,t.next_in=l,t.input=h,t.avail_in=o,a.wrap=s,D},a.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./messages\":13,\"./trees\":14}],9:[function(t,e,a){\"use strict\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],10:[function(t,e,a){\"use strict\";e.exports=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,f=a.wnext,_=a.window,u=a.hold,c=a.bits,b=a.lencode,g=a.distcode,m=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=b[u&m];e:for(;;){if(v=p>>>24,u>>>=v,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<<v)-1)];continue e}if(32&v){a.mode=12;break t}t.msg=\"invalid literal/length code\",a.mode=30;break t}k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&w];a:for(;;){if(v=p>>>24,u>>>=v,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<<v)-1)];continue a}t.msg=\"invalid distance code\",a.mode=30;break t}if(y=65535&p,v&=15,c<v&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),(y+=u&(1<<v)-1)>l){t.msg=\"invalid distance too far back\",a.mode=30;break t}if(u>>>=v,c-=v,v=r-s,y>v){if((v=y-v)>d&&a.sane){t.msg=\"invalid distance too far back\",a.mode=30;break t}if(x=0,z=_,0===f){if(x+=h-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}else if(f<v){if(x+=h+f-v,(v-=f)<k){k-=v;do{S[r++]=_[x++]}while(--v);if(x=0,f<k){k-=v=f;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}}else if(x+=f-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}for(;k>2;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],k>1&&(S[r++]=z[x++]))}else{x=r-y;do{S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],k-=3}while(k>2);k&&(S[r++]=S[x++],k>1&&(S[r++]=S[x++]))}break}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},{}],11:[function(t,e,a){\"use strict\";function i(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function n(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function r(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=N,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new u.Buf32(dt),e.distcode=e.distdyn=new u.Buf32(ft),e.sane=1,e.back=-1,z):E}function s(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,r(t)):E}function o(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?E:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,s(t))):E}function l(t,e){var a,i;return t?(i=new n,t.state=i,i.window=null,(a=o(t,e))!==z&&(t.state=null),a):E}function h(t){if(ut){var e;for(f=new u.Buf32(512),_=new u.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(m(p,t.lens,0,288,f,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;m(v,t.lens,0,32,_,0,t.work,{bits:5}),ut=!1}t.lencode=f,t.lenbits=9,t.distcode=_,t.distbits=5}function d(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new u.Buf8(r.wsize)),i>=r.wsize?(u.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>i&&(n=i),u.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(u.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}var f,_,u=t(\"../utils/common\"),c=t(\"./adler32\"),b=t(\"./crc32\"),g=t(\"./inffast\"),m=t(\"./inftrees\"),w=0,p=1,v=2,k=4,y=5,x=6,z=0,B=1,S=2,E=-2,A=-3,Z=-4,R=-5,C=8,N=1,O=2,D=3,I=4,U=5,T=6,F=7,L=8,H=9,j=10,K=11,M=12,P=13,Y=14,q=15,G=16,X=17,W=18,J=19,Q=20,V=21,$=22,tt=23,et=24,at=25,it=26,nt=27,rt=28,st=29,ot=30,lt=31,ht=32,dt=852,ft=592,_t=15,ut=!0;a.inflateReset=s,a.inflateReset2=o,a.inflateResetKeep=r,a.inflateInit=function(t){return l(t,_t)},a.inflateInit2=l,a.inflate=function(t,e){var a,n,r,s,o,l,f,_,dt,ft,_t,ut,ct,bt,gt,mt,wt,pt,vt,kt,yt,xt,zt,Bt,St=0,Et=new u.Buf8(4),At=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return E;(a=t.state).mode===M&&(a.mode=P),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,ft=l,_t=f,xt=z;t:for(;;)switch(a.mode){case N:if(0===a.wrap){a.mode=P;break}for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(2&a.wrap&&35615===_){a.check=0,Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0),_=0,dt=0,a.mode=O;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&_)<<8)+(_>>8))%31){t.msg=\"incorrect header check\",a.mode=ot;break}if((15&_)!==C){t.msg=\"unknown compression method\",a.mode=ot;break}if(_>>>=4,dt-=4,yt=8+(15&_),0===a.wbits)a.wbits=yt;else if(yt>a.wbits){t.msg=\"invalid window size\",a.mode=ot;break}a.dmax=1<<yt,t.adler=a.check=1,a.mode=512&_?j:M,_=0,dt=0;break;case O:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.flags=_,(255&a.flags)!==C){t.msg=\"unknown compression method\",a.mode=ot;break}if(57344&a.flags){t.msg=\"unknown header flags set\",a.mode=ot;break}a.head&&(a.head.text=_>>8&1),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=D;case D:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.time=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,Et[2]=_>>>16&255,Et[3]=_>>>24&255,a.check=b(a.check,Et,4,0)),_=0,dt=0,a.mode=I;case I:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.xflags=255&_,a.head.os=_>>8),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=U;case U:if(1024&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length=_,a.head&&(a.head.extra_len=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0}else a.head&&(a.head.extra=null);a.mode=T;case T:if(1024&a.flags&&((ut=a.length)>l&&(ut=l),ut&&(a.head&&(yt=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),u.arraySet(a.head.extra,n,s,ut,yt)),512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,a.length-=ut),a.length))break t;a.length=0,a.mode=F;case F:if(2048&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.name+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=L;case L:if(4096&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.comment+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.comment=null);a.mode=H;case H:if(512&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(65535&a.check)){t.msg=\"header crc mismatch\",a.mode=ot;break}_=0,dt=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=M;break;case j:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}t.adler=a.check=i(_),_=0,dt=0,a.mode=K;case K:if(0===a.havedict)return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,S;t.adler=a.check=1,a.mode=M;case M:if(e===y||e===x)break t;case P:if(a.last){_>>>=7&dt,dt-=7&dt,a.mode=nt;break}for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}switch(a.last=1&_,_>>>=1,dt-=1,3&_){case 0:a.mode=Y;break;case 1:if(h(a),a.mode=Q,e===x){_>>>=2,dt-=2;break t}break;case 2:a.mode=X;break;case 3:t.msg=\"invalid block type\",a.mode=ot}_>>>=2,dt-=2;break;case Y:for(_>>>=7&dt,dt-=7&dt;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if((65535&_)!=(_>>>16^65535)){t.msg=\"invalid stored block lengths\",a.mode=ot;break}if(a.length=65535&_,_=0,dt=0,a.mode=q,e===x)break t;case q:a.mode=G;case G:if(ut=a.length){if(ut>l&&(ut=l),ut>f&&(ut=f),0===ut)break t;u.arraySet(r,n,s,ut,o),l-=ut,s+=ut,f-=ut,o+=ut,a.length-=ut;break}a.mode=M;break;case X:for(;dt<14;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.nlen=257+(31&_),_>>>=5,dt-=5,a.ndist=1+(31&_),_>>>=5,dt-=5,a.ncode=4+(15&_),_>>>=4,dt-=4,a.nlen>286||a.ndist>30){t.msg=\"too many length or distance symbols\",a.mode=ot;break}a.have=0,a.mode=W;case W:for(;a.have<a.ncode;){for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.lens[At[a.have++]]=7&_,_>>>=3,dt-=3}for(;a.have<19;)a.lens[At[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,zt={bits:a.lenbits},xt=m(w,a.lens,0,19,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg=\"invalid code lengths set\",a.mode=ot;break}a.have=0,a.mode=J;case J:for(;a.have<a.nlen+a.ndist;){for(;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(wt<16)_>>>=gt,dt-=gt,a.lens[a.have++]=wt;else{if(16===wt){for(Bt=gt+2;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_>>>=gt,dt-=gt,0===a.have){t.msg=\"invalid bit length repeat\",a.mode=ot;break}yt=a.lens[a.have-1],ut=3+(3&_),_>>>=2,dt-=2}else if(17===wt){for(Bt=gt+3;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=3+(7&(_>>>=gt)),_>>>=3,dt-=3}else{for(Bt=gt+7;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=11+(127&(_>>>=gt)),_>>>=7,dt-=7}if(a.have+ut>a.nlen+a.ndist){t.msg=\"invalid bit length repeat\",a.mode=ot;break}for(;ut--;)a.lens[a.have++]=yt}}if(a.mode===ot)break;if(0===a.lens[256]){t.msg=\"invalid code -- missing end-of-block\",a.mode=ot;break}if(a.lenbits=9,zt={bits:a.lenbits},xt=m(p,a.lens,0,a.nlen,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg=\"invalid literal/lengths set\",a.mode=ot;break}if(a.distbits=6,a.distcode=a.distdyn,zt={bits:a.distbits},xt=m(v,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,zt),a.distbits=zt.bits,xt){t.msg=\"invalid distances set\",a.mode=ot;break}if(a.mode=Q,e===x)break t;case Q:a.mode=V;case V:if(l>=6&&f>=258){t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,g(t,_t),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,a.mode===M&&(a.back=-1);break}for(a.back=0;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(mt&&0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.lencode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,a.length=wt,0===mt){a.mode=it;break}if(32&mt){a.back=-1,a.mode=M;break}if(64&mt){t.msg=\"invalid literal/length code\",a.mode=ot;break}a.extra=15&mt,a.mode=$;case $:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=tt;case tt:for(;St=a.distcode[_&(1<<a.distbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.distcode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,64&mt){t.msg=\"invalid distance code\",a.mode=ot;break}a.offset=wt,a.extra=15&mt,a.mode=et;case et:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.offset+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\"invalid distance too far back\",a.mode=ot;break}a.mode=at;case at:if(0===f)break t;if(ut=_t-f,a.offset>ut){if((ut=a.offset-ut)>a.whave&&a.sane){t.msg=\"invalid distance too far back\",a.mode=ot;break}ut>a.wnext?(ut-=a.wnext,ct=a.wsize-ut):ct=a.wnext-ut,ut>a.length&&(ut=a.length),bt=a.window}else bt=r,ct=o-a.offset,ut=a.length;ut>f&&(ut=f),f-=ut,a.length-=ut;do{r[o++]=bt[ct++]}while(--ut);0===a.length&&(a.mode=V);break;case it:if(0===f)break t;r[o++]=a.length,f--,a.mode=V;break;case nt:if(a.wrap){for(;dt<32;){if(0===l)break t;l--,_|=n[s++]<<dt,dt+=8}if(_t-=f,t.total_out+=_t,a.total+=_t,_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,o-_t):c(a.check,r,_t,o-_t)),_t=f,(a.flags?_:i(_))!==a.check){t.msg=\"incorrect data check\",a.mode=ot;break}_=0,dt=0}a.mode=rt;case rt:if(a.wrap&&a.flags){for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(4294967295&a.total)){t.msg=\"incorrect length check\",a.mode=ot;break}_=0,dt=0}a.mode=st;case st:xt=B;break t;case ot:xt=A;break t;case lt:return Z;case ht:default:return E}return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,(a.wsize||_t!==t.avail_out&&a.mode<ot&&(a.mode<nt||e!==k))&&d(t,t.output,t.next_out,_t-t.avail_out)?(a.mode=lt,Z):(ft-=t.avail_in,_t-=t.avail_out,t.total_in+=ft,t.total_out+=_t,a.total+=_t,a.wrap&&_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,t.next_out-_t):c(a.check,r,_t,t.next_out-_t)),t.data_type=a.bits+(a.last?64:0)+(a.mode===M?128:0)+(a.mode===Q||a.mode===q?256:0),(0===ft&&0===_t||e===k)&&xt===z&&(xt=R),xt)},a.inflateEnd=function(t){if(!t||!t.state)return E;var e=t.state;return e.window&&(e.window=null),t.state=null,z},a.inflateGetHeader=function(t,e){var a;return t&&t.state?0==(2&(a=t.state).wrap)?E:(a.head=e,e.done=!1,z):E},a.inflateSetDictionary=function(t,e){var a,i,n=e.length;return t&&t.state?0!==(a=t.state).wrap&&a.mode!==K?E:a.mode===K&&(i=1,(i=c(i,e,n,0))!==a.check)?A:d(t,e,n,n)?(a.mode=lt,Z):(a.havedict=1,z):E},a.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./inffast\":10,\"./inftrees\":12}],12:[function(t,e,a){\"use strict\";var i=t(\"../utils/common\"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,a,l,h,d,f,_){var u,c,b,g,m,w,p,v,k,y=_.bits,x=0,z=0,B=0,S=0,E=0,A=0,Z=0,R=0,C=0,N=0,O=null,D=0,I=new i.Buf16(16),U=new i.Buf16(16),T=null,F=0;for(x=0;x<=15;x++)I[x]=0;for(z=0;z<l;z++)I[e[a+z]]++;for(E=y,S=15;S>=1&&0===I[S];S--);if(E>S&&(E=S),0===S)return h[d++]=20971520,h[d++]=20971520,_.bits=1,0;for(B=1;B<S&&0===I[B];B++);for(E<B&&(E=B),R=1,x=1;x<=15;x++)if(R<<=1,(R-=I[x])<0)return-1;if(R>0&&(0===t||1!==S))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+I[x];for(z=0;z<l;z++)0!==e[a+z]&&(f[U[e[a+z]]++]=z);if(0===t?(O=T=f,w=19):1===t?(O=n,D-=257,T=r,F-=257,w=256):(O=s,T=o,w=-1),N=0,z=0,x=B,m=d,A=E,Z=0,b=-1,C=1<<E,g=C-1,1===t&&C>852||2===t&&C>592)return 1;for(;;){p=x-Z,f[z]<w?(v=0,k=f[z]):f[z]>w?(v=T[F+f[z]],k=O[D+f[z]]):(v=96,k=0),u=1<<x-Z,B=c=1<<A;do{h[m+(N>>Z)+(c-=u)]=p<<24|v<<16|k|0}while(0!==c);for(u=1<<x-1;N&u;)u>>=1;if(0!==u?(N&=u-1,N+=u):N=0,z++,0==--I[x]){if(x===S)break;x=e[a+f[z]]}if(x>E&&(N&g)!==b){for(0===Z&&(Z=E),m+=B,R=1<<(A=x-Z);A+Z<S&&!((R-=I[A+Z])<=0);)A++,R<<=1;if(C+=1<<A,1===t&&C>852||2===t&&C>592)return 1;h[b=N&g]=E<<24|A<<16|m-d|0}}return 0!==N&&(h[m+N]=x-Z<<24|64<<16|0),_.bits=E,0}},{\"../utils/common\":3}],13:[function(t,e,a){\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],14:[function(t,e,a){\"use strict\";function i(t){for(var e=t.length;--e>=0;)t[e]=0}function n(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function s(t){return t<256?et[t]:et[256+(t>>>7)]}function o(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function l(t,e,a){t.bi_valid>M-a?(t.bi_buf|=e<<t.bi_valid&65535,o(t,t.bi_buf),t.bi_buf=e>>M-t.bi_valid,t.bi_valid+=a-M):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function h(t,e,a){l(t,a[2*e],a[2*e+1])}function d(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1}function f(t){16===t.bi_valid?(o(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function _(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=K;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<j;a++)(r=l[2*l[2*(i=t.heap[a])+1]+1]+1)>c&&(r=c,b++),l[2*i+1]=r,i>h||(t.bl_count[r]++,s=0,i>=u&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(b>0);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)(n=t.heap[--a])>h||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}function u(t,e,a){var i,n,r=new Array(K+1),s=0;for(i=1;i<=K;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=d(r[o]++,o))}}function c(){var t,e,a,i,r,s=new Array(K+1);for(a=0,i=0;i<U-1;i++)for(it[i]=a,t=0;t<1<<W[i];t++)at[a++]=i;for(at[a-1]=i,r=0,i=0;i<16;i++)for(nt[i]=r,t=0;t<1<<J[i];t++)et[r++]=i;for(r>>=7;i<L;i++)for(nt[i]=r<<7,t=0;t<1<<J[i]-7;t++)et[256+r++]=i;for(e=0;e<=K;e++)s[e]=0;for(t=0;t<=143;)$[2*t+1]=8,t++,s[8]++;for(;t<=255;)$[2*t+1]=9,t++,s[9]++;for(;t<=279;)$[2*t+1]=7,t++,s[7]++;for(;t<=287;)$[2*t+1]=8,t++,s[8]++;for(u($,F+1,s),t=0;t<L;t++)tt[2*t+1]=5,tt[2*t]=d(t,5);rt=new n($,W,T+1,F,K),st=new n(tt,J,0,L,K),ot=new n(new Array(0),Q,0,H,P)}function b(t){var e;for(e=0;e<F;e++)t.dyn_ltree[2*e]=0;for(e=0;e<L;e++)t.dyn_dtree[2*e]=0;for(e=0;e<H;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*Y]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function g(t){t.bi_valid>8?o(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function m(t,e,a,i){g(t),i&&(o(t,a),o(t,~a)),A.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}function w(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function p(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&w(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!w(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function v(t,e,a){var i,n,r,o,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],n=t.pending_buf[t.l_buf+d],d++,0===i?h(t,n,e):(h(t,(r=at[n])+T+1,e),0!==(o=W[r])&&l(t,n-=it[r],o),h(t,r=s(--i),a),0!==(o=J[r])&&l(t,i-=nt[r],o))}while(d<t.last_lit);h(t,Y,e)}function k(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,l=e.stat_desc.elems,h=-1;for(t.heap_len=0,t.heap_max=j,a=0;a<l;a++)0!==r[2*a]?(t.heap[++t.heap_len]=h=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=h<2?++h:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=h,a=t.heap_len>>1;a>=1;a--)p(t,r,a);n=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],p(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,p(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],_(t,e),u(r,h,t.bl_count)}function y(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<l&&n===s||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[2*q]++):o<=10?t.bl_tree[2*G]++:t.bl_tree[2*X]++,o=0,r=n,0===s?(l=138,h=3):n===s?(l=6,h=3):(l=7,h=4))}function x(t,e,a){var i,n,r=-1,s=e[1],o=0,d=7,f=4;for(0===s&&(d=138,f=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<d&&n===s)){if(o<f)do{h(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==r&&(h(t,n,t.bl_tree),o--),h(t,q,t.bl_tree),l(t,o-3,2)):o<=10?(h(t,G,t.bl_tree),l(t,o-3,3)):(h(t,X,t.bl_tree),l(t,o-11,7));o=0,r=n,0===s?(d=138,f=3):n===s?(d=6,f=3):(d=7,f=4)}}function z(t){var e;for(y(t,t.dyn_ltree,t.l_desc.max_code),y(t,t.dyn_dtree,t.d_desc.max_code),k(t,t.bl_desc),e=H-1;e>=3&&0===t.bl_tree[2*V[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function B(t,e,a,i){var n;for(l(t,e-257,5),l(t,a-1,5),l(t,i-4,4),n=0;n<i;n++)l(t,t.bl_tree[2*V[n]+1],3);x(t,t.dyn_ltree,e-1),x(t,t.dyn_dtree,a-1)}function S(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return R;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return C;for(e=32;e<T;e++)if(0!==t.dyn_ltree[2*e])return C;return R}function E(t,e,a,i){l(t,(O<<1)+(i?1:0),3),m(t,e,a,!0)}var A=t(\"../utils/common\"),Z=4,R=0,C=1,N=2,O=0,D=1,I=2,U=29,T=256,F=T+1+U,L=30,H=19,j=2*F+1,K=15,M=16,P=7,Y=256,q=16,G=17,X=18,W=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],J=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Q=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],V=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],$=new Array(2*(F+2));i($);var tt=new Array(2*L);i(tt);var et=new Array(512);i(et);var at=new Array(256);i(at);var it=new Array(U);i(it);var nt=new Array(L);i(nt);var rt,st,ot,lt=!1;a._tr_init=function(t){lt||(c(),lt=!0),t.l_desc=new r(t.dyn_ltree,rt),t.d_desc=new r(t.dyn_dtree,st),t.bl_desc=new r(t.bl_tree,ot),t.bi_buf=0,t.bi_valid=0,b(t)},a._tr_stored_block=E,a._tr_flush_block=function(t,e,a,i){var n,r,s=0;t.level>0?(t.strm.data_type===N&&(t.strm.data_type=S(t)),k(t,t.l_desc),k(t,t.d_desc),s=z(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?E(t,e,a,i):t.strategy===Z||r===n?(l(t,(D<<1)+(i?1:0),3),v(t,$,tt)):(l(t,(I<<1)+(i?1:0),3),B(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),v(t,t.dyn_ltree,t.dyn_dtree)),b(t),i&&g(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(at[a]+T+1)]++,t.dyn_dtree[2*s(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){l(t,D<<1,3),h(t,Y,$),f(t)}},{\"../utils/common\":3}],15:[function(t,e,a){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],\"/\":[function(t,e,a){\"use strict\";var i={};(0,t(\"./lib/utils/common\").assign)(i,t(\"./lib/deflate\"),t(\"./lib/inflate\"),t(\"./lib/zlib/constants\")),e.exports=i},{\"./lib/deflate\":1,\"./lib/inflate\":2,\"./lib/utils/common\":3,\"./lib/zlib/constants\":6}]},{},[])(\"/\")});'use strict';tr.exportTo('tr.e.importer',function(){const GZIP_MEMBER_HEADER_ID_SIZE=3;const GZIP_HEADER_ID1=0x1f;const GZIP_HEADER_ID2=0x8b;const GZIP_DEFLATE_COMPRESSION=8;function _stringToUInt8Array(str){const array=new Uint8Array(str.length);for(let i=0;i<str.length;++i){array[i]=str.charCodeAt(i);}\nreturn array;}\nfunction GzipImporter(model,eventData){this.inflateAsTraceStream=false;if(typeof(eventData)==='string'||eventData instanceof String){eventData=_stringToUInt8Array(eventData);}else if(eventData instanceof ArrayBuffer){eventData=new Uint8Array(eventData);}else if(eventData instanceof tr.b.InMemoryTraceStream){eventData=eventData.data;this.inflateAsTraceStream_=true;}else{throw new Error('Unknown gzip data format');}\nthis.model_=model;this.gzipData_=eventData;}\nGzipImporter.canImport=function(eventData){if(eventData instanceof tr.b.InMemoryTraceStream){eventData=eventData.header;}\nlet header;if(eventData instanceof ArrayBuffer){header=new Uint8Array(eventData.slice(0,GZIP_MEMBER_HEADER_ID_SIZE));}else if(typeof(eventData)==='string'||eventData instanceof String){header=eventData.substring(0,GZIP_MEMBER_HEADER_ID_SIZE);header=_stringToUInt8Array(header);}else{return false;}\nreturn header[0]===GZIP_HEADER_ID1&&header[1]===GZIP_HEADER_ID2&&header[2]===GZIP_DEFLATE_COMPRESSION;};GzipImporter.inflateGzipData_=function(data){let position=0;function getByte(){if(position>=data.length){throw new Error('Unexpected end of gzip data');}\nreturn data[position++];}\nfunction getWord(){const low=getByte();const high=getByte();return(high<<8)+low;}\nfunction skipBytes(amount){position+=amount;}\nfunction skipZeroTerminatedString(){while(getByte()!==0){}}\nconst id1=getByte();const id2=getByte();if(id1!==GZIP_HEADER_ID1||id2!==GZIP_HEADER_ID2){throw new Error('Not gzip data');}\nconst compressionMethod=getByte();if(compressionMethod!==GZIP_DEFLATE_COMPRESSION){throw new Error('Unsupported compression method: '+compressionMethod);}\nconst flags=getByte();const haveHeaderCrc=flags&(1<<1);const haveExtraFields=flags&(1<<2);const haveFileName=flags&(1<<3);const haveComment=flags&(1<<4);skipBytes(4+1+1);if(haveExtraFields){const bytesToSkip=getWord();skipBytes(bytesToSkip);}\nif(haveFileName)skipZeroTerminatedString();if(haveComment)skipZeroTerminatedString();if(haveHeaderCrc)getWord();const inflatedData=pako.inflateRaw(data.subarray(position));if(this.inflateAsTraceStream_){return GzipImporter.transformToStream(inflatedData);}\nlet string;try{string=GzipImporter.transformToString(inflatedData);}catch(err){return GzipImporter.transformToStream(inflatedData);}\nif(inflatedData.length>0&&string.length===0){return GzipImporter.transformToStream(inflatedData);}\nreturn string;};GzipImporter.transformToStream=function(data){if(data instanceof Uint8Array){return new tr.b.InMemoryTraceStream(data,false);}\nthrow new Error(`Cannot transform ${type} to TraceStream.`);};GzipImporter.transformToString=function(data){if(typeof(data)==='string')return data;if(typeof TextDecoder==='undefined'){if(data instanceof ArrayBuffer){data=new Uint8Array(data);}\nconst result=[];let chunk=65536;let k=0;const len=data.length;while(k<len&&chunk>1){try{const chunklen=Math.min(k+chunk,len);let dataslice;if(data instanceof Array){dataslice=data.slice(k,chunklen);}else{dataslice=data.subarray(k,chunklen);}\nresult.push(String.fromCharCode.apply(null,dataslice));k+=chunk;}catch(e){chunk=Math.floor(chunk/2);}}\nreturn result.join('');}\nif(data instanceof Array){data=new Uint8Array(data);}\nreturn new TextDecoder('utf-8').decode(data);};GzipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GzipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const eventData=GzipImporter.inflateGzipData_(this.gzipData_);return eventData?[eventData]:[];}};tr.importer.Importer.register(GzipImporter);return{GzipImporter,};});'use strict';tr.exportTo('tr.importer',function(){class SimpleLineReader{constructor(text){this.data_=text instanceof tr.b.TraceStream?text:text.split(new RegExp('\\r?\\n'));this.curLine_=0;this.readLastLine_=false;this.savedLines_=undefined;}*[Symbol.iterator](){let lastLine=undefined;while(this.hasData_){if(this.readLastLine_){this.curLine_++;this.readLastLine_=false;}else if(this.data_ instanceof tr.b.TraceStream){this.curLine_++;const line=this.data_.readUntilDelimiter('\\n');if(line.endsWith('\\r\\n')){lastLine=line.slice(0,-2);}else if(line.endsWith('\\n')){lastLine=line.slice(0,-1);}else{lastLine=line;}}else{this.curLine_++;lastLine=this.data_[this.curLine_-1];}\nyield lastLine;}}\nget curLineNumber(){return this.curLine_;}\nget hasData_(){if(this.data_ instanceof tr.b.TraceStream)return this.data_.hasData;return this.curLine_<this.data_.length;}\nadvanceToLineMatching(regex){for(const line of this){if(this.savedLines_!==undefined)this.savedLines_.push(line);if(regex.test(line)){this.goBack_();return true;}}\nreturn false;}\ngoBack_(){if(this.readLastLine_){throw new Error('There should be at least one nextLine call between '+'any two goBack calls.');}\nif(this.curLine_===0){throw new Error('There should be at least one nextLine call before '+'the first goBack call.');}\nthis.readLastLine_=true;this.curLine_--;}\nbeginSavingLines(){this.savedLines_=[];}\nendSavingLinesAndGetResult(){const tmp=this.savedLines_;this.savedLines_=undefined;return tmp;}}\nreturn{SimpleLineReader,};});'use strict';tr.exportTo('tr.e.importer',function(){function Trace2HTMLImporter(model,events){this.importPriority=0;}\nTrace2HTMLImporter.subtraces_=[];function _extractEventsFromHTML(text){Trace2HTMLImporter.subtraces_=[];const r=new tr.importer.SimpleLineReader(text);while(true){if(!r.advanceToLineMatching(new RegExp('^<\\s*script id=\"viewer-data\" '+'type=\"(application\\/json|text\\/plain)\">\\r?$'))){break;}\nr.beginSavingLines();if(!r.advanceToLineMatching(/^<\\/\\s*script>\\r?$/))return;let rawEvents=r.endSavingLinesAndGetResult();rawEvents=rawEvents.slice(1,rawEvents.length-1);const data64=rawEvents.join('\\n');const buffer=new ArrayBuffer(tr.b.Base64.getDecodedBufferLength(data64));const len=tr.b.Base64.DecodeToTypedArray(data64,new DataView(buffer));Trace2HTMLImporter.subtraces_.push(buffer.slice(0,len));}}\nfunction _canImportFromHTML(text){if(!/^<!DOCTYPE html>/.test(text))return false;_extractEventsFromHTML(text);if(Trace2HTMLImporter.subtraces_.length===0)return false;return true;}\nTrace2HTMLImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)return false;return _canImportFromHTML(events);};Trace2HTMLImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'Trace2HTMLImporter';},isTraceDataContainer(){return true;},extractSubtraces(){return Trace2HTMLImporter.subtraces_;},importEvents(){}};tr.importer.Importer.register(Trace2HTMLImporter);return{Trace2HTMLImporter,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function SplayTree(){}\nSplayTree.prototype.root_=null;SplayTree.prototype.isEmpty=function(){return!this.root_;};SplayTree.prototype.insert=function(key,value){if(this.isEmpty()){this.root_=new SplayTree.Node(key,value);return;}\nthis.splay_(key);if(this.root_.key===key){return;}\nconst node=new SplayTree.Node(key,value);if(key>this.root_.key){node.left=this.root_;node.right=this.root_.right;this.root_.right=null;}else{node.right=this.root_;node.left=this.root_.left;this.root_.left=null;}\nthis.root_=node;};SplayTree.prototype.remove=function(key){if(this.isEmpty()){throw Error('Key not found: '+key);}\nthis.splay_(key);if(this.root_.key!==key){throw Error('Key not found: '+key);}\nconst removed=this.root_;if(!this.root_.left){this.root_=this.root_.right;}else{const right=this.root_.right;this.root_=this.root_.left;this.splay_(key);this.root_.right=right;}\nreturn removed;};SplayTree.prototype.find=function(key){if(this.isEmpty())return null;this.splay_(key);return this.root_.key===key?this.root_:null;};SplayTree.prototype.findMin=function(){if(this.isEmpty())return null;let current=this.root_;while(current.left){current=current.left;}\nreturn current;};SplayTree.prototype.findMax=function(opt_startNode){if(this.isEmpty())return null;let current=opt_startNode||this.root_;while(current.right){current=current.right;}\nreturn current;};SplayTree.prototype.findGreatestLessThan=function(key){if(this.isEmpty())return null;this.splay_(key);if(this.root_.key<=key){return this.root_;}\nif(this.root_.left){return this.findMax(this.root_.left);}\nreturn null;};SplayTree.prototype.exportKeysAndValues=function(){const result=[];this.traverse_(function(node){result.push([node.key,node.value]);});return result;};SplayTree.prototype.exportValues=function(){const result=[];this.traverse_(function(node){result.push(node.value);});return result;};SplayTree.prototype.splay_=function(key){if(this.isEmpty())return;const dummy=new SplayTree.Node(null,null);let left=dummy;let right=dummy;let current=this.root_;while(true){if(key<current.key){if(!current.left){break;}\nif(key<current.left.key){const tmp=current.left;current.left=tmp.right;tmp.right=current;current=tmp;if(!current.left){break;}}\nright.left=current;right=current;current=current.left;}else if(key>current.key){if(!current.right){break;}\nif(key>current.right.key){const tmp=current.right;current.right=tmp.left;tmp.left=current;current=tmp;if(!current.right){break;}}\nleft.right=current;left=current;current=current.right;}else{break;}}\nleft.right=current.left;right.left=current.right;current.left=dummy.right;current.right=dummy.left;this.root_=current;};SplayTree.prototype.traverse_=function(f){const nodesToVisit=[this.root_];while(nodesToVisit.length>0){const node=nodesToVisit.shift();if(node===null)continue;f(node);nodesToVisit.push(node.left);nodesToVisit.push(node.right);}};SplayTree.Node=function(key,value){this.key=key;this.value=value;};SplayTree.Node.prototype.left=null;SplayTree.Node.prototype.right=null;return{SplayTree,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CodeMap(){this.dynamics_=new tr.e.importer.v8.SplayTree();this.dynamicsNameGen_=new tr.e.importer.v8.CodeMap.NameGenerator();this.statics_=new tr.e.importer.v8.SplayTree();this.libraries_=new tr.e.importer.v8.SplayTree();this.pages_=[];}\nCodeMap.PAGE_ALIGNMENT=12;CodeMap.PAGE_SIZE=1<<CodeMap.PAGE_ALIGNMENT;CodeMap.prototype.addCode=function(start,codeEntry){this.deleteAllCoveredNodes_(this.dynamics_,start,start+codeEntry.size);this.dynamics_.insert(start,codeEntry);};CodeMap.prototype.moveCode=function(from,to){const removedNode=this.dynamics_.remove(from);this.deleteAllCoveredNodes_(this.dynamics_,to,to+removedNode.value.size);this.dynamics_.insert(to,removedNode.value);};CodeMap.prototype.deleteCode=function(start){const removedNode=this.dynamics_.remove(start);};CodeMap.prototype.addLibrary=function(start,codeEntry){this.markPages_(start,start+codeEntry.size);this.libraries_.insert(start,codeEntry);};CodeMap.prototype.addStaticCode=function(start,codeEntry){this.statics_.insert(start,codeEntry);};CodeMap.prototype.markPages_=function(start,end){for(let addr=start;addr<=end;addr+=CodeMap.PAGE_SIZE){this.pages_[addr>>>CodeMap.PAGE_ALIGNMENT]=1;}};CodeMap.prototype.deleteAllCoveredNodes_=function(tree,start,end){const toDelete=[];let addr=end-1;while(addr>=start){const node=tree.findGreatestLessThan(addr);if(!node)break;const start2=node.key;const end2=start2+node.value.size;if(start2<end&&start<end2)toDelete.push(start2);addr=start2-1;}\nfor(let i=0,l=toDelete.length;i<l;++i)tree.remove(toDelete[i]);};CodeMap.prototype.isAddressBelongsTo_=function(addr,node){return addr>=node.key&&addr<(node.key+node.value.size);};CodeMap.prototype.findInTree_=function(tree,addr){const node=tree.findGreatestLessThan(addr);return node&&this.isAddressBelongsTo_(addr,node)?node.value:null;};CodeMap.prototype.findEntryInLibraries=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.libraries_,addr);}\nreturn undefined;};CodeMap.prototype.findEntry=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.statics_,addr)||this.findInTree_(this.libraries_,addr);}\nconst min=this.dynamics_.findMin();const max=this.dynamics_.findMax();if(max!==null&&addr<(max.key+max.value.size)&&addr>=min.key){const dynaEntry=this.findInTree_(this.dynamics_,addr);if(dynaEntry===null)return null;if(!dynaEntry.nameUpdated_){dynaEntry.name=this.dynamicsNameGen_.getName(dynaEntry.name);dynaEntry.nameUpdated_=true;}\nreturn dynaEntry;}\nreturn null;};CodeMap.prototype.findDynamicEntryByStartAddress=function(addr){const node=this.dynamics_.find(addr);return node?node.value:null;};CodeMap.prototype.getAllDynamicEntries=function(){return this.dynamics_.exportValues();};CodeMap.prototype.getAllDynamicEntriesWithAddresses=function(){return this.dynamics_.exportKeysAndValues();};CodeMap.prototype.getAllStaticEntries=function(){return this.statics_.exportValues();};CodeMap.prototype.getAllLibrariesEntries=function(){return this.libraries_.exportValues();};CodeMap.CodeState={COMPILED:0,OPTIMIZABLE:1,OPTIMIZED:2};CodeMap.CodeEntry=function(size,opt_name,opt_type){this.id=tr.b.GUID.allocateSimple();this.size=size;this.name_=opt_name||'';this.type=opt_type||'';this.nameUpdated_=false;};CodeMap.CodeEntry.prototype={__proto__:Object.prototype,get name(){return this.name_;},set name(value){this.name_=value;},toString(){this.name_+': '+this.size.toString(16);}};CodeMap.CodeEntry.TYPE={SHARED_LIB:'SHARED_LIB',CPP:'CPP'};CodeMap.DynamicFuncCodeEntry=function(size,type,func,state){CodeMap.CodeEntry.call(this,size,'',type);this.func=func;this.state=state;};CodeMap.DynamicFuncCodeEntry.STATE_PREFIX=['','~','*'];CodeMap.DynamicFuncCodeEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){return CodeMap.DynamicFuncCodeEntry.STATE_PREFIX[this.state]+\nthis.func.name;},set name(value){this.name_=value;},getRawName(){return this.func.getName();},isJSFunction(){return true;},toString(){return this.type+': '+this.name+': '+this.size.toString(16);}};CodeMap.FunctionEntry=function(name){CodeMap.CodeEntry.call(this,0,name);};CodeMap.FunctionEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){let name=this.name_;if(name.length===0){name='<anonymous>';}else if(name.charAt(0)===' '){name='<anonymous>'+name;}\nreturn name;},set name(value){this.name_=value;}};CodeMap.NameGenerator=function(){this.knownNames_={};};CodeMap.NameGenerator.prototype.getName=function(name){if(!(name in this.knownNames_)){this.knownNames_[name]=0;return name;}\nconst count=++this.knownNames_[name];return name+' {'+count+'}';};return{CodeMap,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CsvParser(){}\nCsvParser.CSV_FIELD_RE_=/^\"((?:[^\"]|\"\")*)\"|([^,]*)/;CsvParser.DOUBLE_QUOTE_RE_=/\"\"/g;CsvParser.prototype.parseLine=function(line){const fieldRe=CsvParser.CSV_FIELD_RE_;const doubleQuoteRe=CsvParser.DOUBLE_QUOTE_RE_;let pos=0;const endPos=line.length;const fields=[];if(endPos>0){do{const fieldMatch=fieldRe.exec(line.substr(pos));if(typeof fieldMatch[1]==='string'){const field=fieldMatch[1];pos+=field.length+3;fields.push(field.replace(doubleQuoteRe,'\"'));}else{const field=fieldMatch[2];pos+=field.length+1;fields.push(field);}}while(pos<=endPos);}\nreturn fields;};function LogReader(dispatchTable){this.dispatchTable_=dispatchTable;this.lineNum_=0;this.csvParser_=new CsvParser();}\nLogReader.prototype.printError=function(str){};LogReader.prototype.processLogChunk=function(chunk){this.processLog_(chunk.split('\\n'));};LogReader.prototype.processLogLine=function(line){this.processLog_([line]);};LogReader.prototype.processStack=function(pc,func,stack){const fullStack=func?[pc,func]:[pc];let prevFrame=pc;for(let i=0,n=stack.length;i<n;++i){const frame=stack[i];const firstChar=frame.charAt(0);if(firstChar==='+'||firstChar==='-'){prevFrame+=parseInt(frame,16);fullStack.push(prevFrame);}else if(firstChar!=='o'){fullStack.push(parseInt(frame,16));}}\nreturn fullStack;};LogReader.prototype.skipDispatch=function(dispatch){return false;};LogReader.prototype.dispatchLogRow_=function(fields){const command=fields[0];if(!(command in this.dispatchTable_))return;const dispatch=this.dispatchTable_[command];if(dispatch===null||this.skipDispatch(dispatch)){return;}\nconst parsedFields=[];for(let i=0;i<dispatch.parsers.length;++i){const parser=dispatch.parsers[i];if(parser===null){parsedFields.push(fields[1+i]);}else if(typeof parser==='function'){parsedFields.push(parser(fields[1+i]));}else{parsedFields.push(fields.slice(1+i));break;}}\ndispatch.processor.apply(this,parsedFields);};LogReader.prototype.processLog_=function(lines){for(let i=0,n=lines.length;i<n;++i,++this.lineNum_){const line=lines[i];if(!line){continue;}\ntry{const fields=this.csvParser_.parseLine(line);this.dispatchLogRow_(fields);}catch(e){this.printError('line '+(this.lineNum_+1)+': '+\n(e.message||e));}}};return{LogReader,};});'use strict';tr.exportTo('tr.model',function(){function ProfileNode(id,title,parentNode){this.id_=id;this.title_=title;this.parentNode_=parentNode;this.colorId_=-1;this.userFriendlyStack_=[];}\nProfileNode.prototype={__proto__:Object.prototype,get title(){return this.title_;},get parentNode(){return this.parentNode_;},set parentNode(value){this.parentNode_=value;},get id(){return this.id_;},get colorId(){return this.colorId_;},set colorId(value){this.colorId_=value;},get userFriendlyName(){return this.title_;},get userFriendlyStack(){if(this.userFriendlyStack_.length===0){this.userFriendlyStack_=[this.userFriendlyName];if(this.parentNode_!==undefined){this.userFriendlyStack_=this.userFriendlyStack_.concat(this.parentNode_.userFriendlyStack);}}\nreturn this.userFriendlyStack_;},get sampleTitle(){throw new Error('Not implemented.');}};tr.model.EventRegistry.register(ProfileNode,{name:'Node',pluralName:'Nodes'});return{ProfileNode,};});'use strict';tr.exportTo('tr.e.v8',function(){const ProfileNode=tr.model.ProfileNode;function V8CpuProfileNode(id,callFrame,parentNode){ProfileNode.call(this,id,callFrame.functionName,parentNode);this.callFrame_=tr.b.deepCopy(callFrame);this.deoptReason_='';this.colorId_=tr.b.ColorScheme.getColorIdForGeneralPurposeString(callFrame.functionName);}\nV8CpuProfileNode.prototype={__proto__:ProfileNode.prototype,get functionName(){return this.callFrame_.functionName;},get scriptId(){return this.callFrame_.scriptId;},get url(){if(!this.callFrame_.url){return'unknown';}\nlet url=this.callFrame_.url;if(this.callFrame_.lineNumber===undefined){return url;}\nurl=url+':'+this.callFrame_.lineNumber;if(this.callFrame_.columnNumber===undefined){return url;}\nurl=url+':'+this.callFrame_.columnNumber;return url;},get deoptReason(){return this.deoptReason_;},set deoptReason(value){this.deoptReason_=value;},get userFriendlyName(){const name=this.functionName+' url: '+this.url;return!this.deoptReason_?name:name+' Deoptimized reason: '+this.deoptReason_;},get sampleTitle(){return'V8 Sample';}};V8CpuProfileNode.constructFromObject=function(profileTree,node){const nodeId=node.id;if(nodeId===1){return undefined;}\nconst parentNode=profileTree.getNode(node.parent);const profileNode=new V8CpuProfileNode(nodeId,node.callFrame,parentNode);if(node.deoptReason!==undefined){profileNode.deoptReason=node.deoptReason;}\nreturn profileNode;};ProfileNode.subTypes.register(V8CpuProfileNode,{typeName:'cpuProfile',name:'v8 cpu profile node',pluralName:'v8 cpu profile nodes'});ProfileNode.subTypes.register(V8CpuProfileNode,{typeName:'legacySample',name:'v8 cpu profile node',pluralName:'v8 cpu profile nodes'});return{ProfileNode,};});'use strict';tr.exportTo('tr.model',function(){function ProfileTree(){this.startTime_=undefined;this.endTime_=undefined;this.tree_=new Map();this.pid_=-1;this.tid_=-1;}\nProfileTree.prototype={__proto__:Object.prototype,get pid(){return this.pid_;},set pid(value){this.pid_=value;},get tid(){return this.tid_;},set tid(value){this.tid_=value;},get tree(){return this.tree_;},get startTime(){return this.startTime_;},set startTime(value){this.startTime_=value;this.endTime_=value;},get endTime(){return this.endTime_;},set endTime(value){this.endTime_=value;},add(node){if(this.tree_.has(node.id)){throw new Error('Conflict id in the profile tree.');}\nthis.tree_.set(node.id,node);return node;},getNode(nodeId){return this.tree_.get(nodeId);}};return{ProfileTree,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){const CodeEntry=tr.e.importer.v8.CodeMap.CodeEntry;const CodeMap=tr.e.importer.v8.CodeMap;const ColorScheme=tr.b.ColorScheme;const DynamicFuncCodeEntry=tr.e.importer.v8.CodeMap.DynamicFuncCodeEntry;const FunctionEntry=tr.e.importer.v8.CodeMap.FunctionEntry;const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');function V8LogImporter(model,eventData){this.importPriority=3;this.model_=model;this.logData_=eventData;this.code_map_=new CodeMap();this.v8_timer_thread_=undefined;this.v8_thread_=undefined;this.profileTree_=new tr.model.ProfileTree();this.profileTree_.add(new ProfileNodeType(-1,{url:'',functionName:'unknown'}));this.v8_stack_timeline_=[];}\nconst kV8BinarySuffixes=['/d8','/libv8.so'];const TimerEventDefaultArgs={'V8.Execute':{pause:false,no_execution:false},'V8.External':{pause:false,no_execution:true},'V8.CompileFullCode':{pause:true,no_execution:true},'V8.RecompileSynchronous':{pause:true,no_execution:true},'V8.RecompileParallel':{pause:false,no_execution:false},'V8.CompileEval':{pause:true,no_execution:true},'V8.Parse':{pause:true,no_execution:true},'V8.PreParse':{pause:true,no_execution:true},'V8.ParseLazy':{pause:true,no_execution:true},'V8.GCScavenger':{pause:true,no_execution:true},'V8.GCCompactor':{pause:true,no_execution:true},'V8.GCContext':{pause:true,no_execution:true}};V8LogImporter.canImport=function(eventData){if(typeof(eventData)!=='string'&&!(eventData instanceof String)){return false;}\nreturn eventData.substring(0,11)==='v8-version,'||eventData.substring(0,12)==='timer-event,'||eventData.substring(0,5)==='tick,'||eventData.substring(0,15)==='shared-library,'||eventData.substring(0,9)==='profiler,'||eventData.substring(0,14)==='code-creation,';};V8LogImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'V8LogImporter';},processTimerEvent_(name,startInUs,lengthInUs){const args=TimerEventDefaultArgs[name];if(args===undefined)return;const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);const lengthInMs=tr.b.convertUnit(lengthInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);const colorId=ColorScheme.getColorIdForGeneralPurposeString(name);const slice=new tr.model.ThreadSlice('v8',name,colorId,startInMs,args,lengthInMs);this.v8_timer_thread_.sliceGroup.pushSlice(slice);},processTimerEventStart_(name,startInUs){const args=TimerEventDefaultArgs[name];if(args===undefined)return;const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);this.v8_timer_thread_.sliceGroup.beginSlice('v8',name,startInMs,args);},processTimerEventEnd_(name,endInUs){const endInMs=tr.b.convertUnit(endInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);this.v8_timer_thread_.sliceGroup.endSlice(endInMs);},processCodeCreateEvent_(type,kind,address,size,name,maybeFunc){function parseState(s){switch(s){case'':return CodeMap.CodeState.COMPILED;case'~':return CodeMap.CodeState.OPTIMIZABLE;case'*':return CodeMap.CodeState.OPTIMIZED;}\nthrow new Error('unknown code state: '+s);}\nif(maybeFunc.length){const funcAddr=parseInt(maybeFunc[0]);const state=parseState(maybeFunc[1]);let func=this.code_map_.findDynamicEntryByStartAddress(funcAddr);if(!func){func=new FunctionEntry(name);func.kind=kind;this.code_map_.addCode(funcAddr,func);}else if(func.name!==name){func.name=name;}\nlet entry=this.code_map_.findDynamicEntryByStartAddress(address);if(entry){if(entry.size===size&&entry.func===func){entry.state=state;}}else{entry=new DynamicFuncCodeEntry(size,type,func,state);entry.kind=kind;this.code_map_.addCode(address,entry);}}else{const codeEntry=new CodeEntry(size,name);codeEntry.kind=kind;this.code_map_.addCode(address,codeEntry);}},processCodeMoveEvent_(from,to){this.code_map_.moveCode(from,to);},processCodeDeleteEvent_(address){this.code_map_.deleteCode(address);},processSharedLibrary_(name,start,end){const codeEntry=new CodeEntry(end-start,name,CodeEntry.TYPE.SHARED_LIB);codeEntry.kind=-3;for(let i=0;i<kV8BinarySuffixes.length;i++){const suffix=kV8BinarySuffixes[i];if(name.indexOf(suffix,name.length-suffix.length)>=0){codeEntry.kind=-1;break;}}\nthis.code_map_.addLibrary(start,codeEntry);},processCppSymbol_(address,size,name){const codeEntry=new CodeEntry(size,name,CodeEntry.TYPE.CPP);codeEntry.kind=-1;this.code_map_.addStaticCode(address,codeEntry);},processTickEvent_(pc,startInUs,isExternalCallback,tosOrExternalCallback,vmstate,stack){const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);function findChildWithEntryID(stackFrame,entryID){for(let i=0;i<stackFrame.children.length;i++){if(stackFrame.children[i].entryID===entryID){return stackFrame.children[i];}}\nreturn undefined;}\nfunction processStack(pc,func,stack){const fullStack=func?[pc,func]:[pc];let prevFrame=pc;for(let i=0,n=stack.length;i<n;++i){const frame=stack[i];const firstChar=frame.charAt(0);if(firstChar==='+'||firstChar==='-'){prevFrame+=parseInt(frame,16);fullStack.push(prevFrame);}else if(firstChar!=='o'){fullStack.push(parseInt(frame,16));}}\nreturn fullStack;}\nif(isExternalCallback){pc=tosOrExternalCallback;tosOrExternalCallback=0;}else if(tosOrExternalCallback){const funcEntry=this.code_map_.findEntry(tosOrExternalCallback);if(!funcEntry||!funcEntry.isJSFunction||!funcEntry.isJSFunction()){tosOrExternalCallback=0;}}\nlet processedStack=processStack(pc,tosOrExternalCallback,stack);let node=undefined;let lastNode=undefined;processedStack=processedStack.reverse();for(let i=0,n=processedStack.length;i<n;i++){const frame=processedStack[i];if(!frame)break;const entry=this.code_map_.findEntry(frame);if(!entry&&i!==0){continue;}\nlet sourceInfo=undefined;if(entry&&entry.type===CodeEntry.TYPE.CPP){const libEntry=this.code_map_.findEntryInLibraries(frame);if(libEntry){sourceInfo={file:libEntry.name};}}\nconst entryId=entry?entry.id:-1;node=this.profileTree_.getNode(entryId);if(node===undefined){node=this.profileTree_.add(new ProfileNodeType(entryId,{functionName:entry.name,url:sourceInfo?sourceInfo.file:'',lineNumber:sourceInfo?sourceInfo.line:undefined,columnNumber:sourceInfo?sourceInfo.column:undefined,scriptId:sourceInfo?sourceInfo.scriptId:undefined},lastNode));}\nlastNode=node;}\nthis.model_.samples.push(new tr.model.Sample(startInMs,'V8 PC',node,this.v8_thread_,undefined,1));},processDistortion_(distortionInPicoseconds){},processPlotRange_(start,end){},processV8Version_(major,minor,build,patch,candidate){},importEvents(){const logreader=new tr.e.importer.v8.LogReader({'timer-event':{parsers:[null,parseInt,parseInt],processor:this.processTimerEvent_.bind(this)},'shared-library':{parsers:[null,parseInt,parseInt],processor:this.processSharedLibrary_.bind(this)},'timer-event-start':{parsers:[null,parseInt],processor:this.processTimerEventStart_.bind(this)},'timer-event-end':{parsers:[null,parseInt],processor:this.processTimerEventEnd_.bind(this)},'code-creation':{parsers:[null,parseInt,parseInt,parseInt,null,'var-args'],processor:this.processCodeCreateEvent_.bind(this)},'code-move':{parsers:[parseInt,parseInt],processor:this.processCodeMoveEvent_.bind(this)},'code-delete':{parsers:[parseInt],processor:this.processCodeDeleteEvent_.bind(this)},'cpp':{parsers:[parseInt,parseInt,null],processor:this.processCppSymbol_.bind(this)},'tick':{parsers:[parseInt,parseInt,parseInt,parseInt,parseInt,'var-args'],processor:this.processTickEvent_.bind(this)},'distortion':{parsers:[parseInt],processor:this.processDistortion_.bind(this)},'plot-range':{parsers:[parseInt,parseInt],processor:this.processPlotRange_.bind(this)},'v8-version':{parsers:[parseInt,parseInt,parseInt,parseInt,parseInt],processor:this.processV8Version_.bind(this)}});this.v8_timer_thread_=this.model_.getOrCreateProcess(-32).getOrCreateThread(1);this.v8_timer_thread_.name='V8 Timers';this.v8_thread_=this.model_.getOrCreateProcess(-32).getOrCreateThread(2);this.v8_thread_.name='V8';const lines=this.logData_.split('\\n');for(let i=0;i<lines.length;i++){logreader.processLogLine(lines[i]);}\nfunction addSlices(slices,thread){for(let i=0;i<slices.length;i++){const duration=slices[i].end-slices[i].start;const slice=new tr.model.ThreadSlice('v8',slices[i].name,ColorScheme.getColorIdForGeneralPurposeString(slices[i].name),slices[i].start,{},duration);thread.sliceGroup.pushSlice(slice);addSlices(slices[i].children,thread);}}\naddSlices(this.v8_stack_timeline_,this.v8_thread_);}};tr.importer.Importer.register(V8LogImporter);return{V8LogImporter,};});'use strict';if(tr.isVinn){global.window={};}\n!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\x00\\x00\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\x00\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\x00\",w+=p||q?\"\\x00\\b\":\"\\x00\\x00\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\x00\"+w+s(o.length,2)+\"\\x00\\x00\\x00\\x00\"+(j===!0?\"\u0010\\x00\\x00\\x00\":\"\\x00\\x00\\x00\\x00\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\x00\\x00\\x00\\x00\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob(\"application/zip\").size}catch(d){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k=\"\",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(b){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;return e.append(a),e.getBlob(\"application/zip\")}catch(b){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=16&this.externalFileAttributes?!0:!1},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=lb;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg=\"invalid window size\",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid code lengths set\",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid literal/lengths set\",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg=\"invalid distances set\",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg=\"invalid literal/length code\",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg=\"invalid distance code\",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});'use strict';if(tr.isVinn){global.JSZip=global.window.JSZip;global.window=undefined;}else if(tr.isNode){const jsZipAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/jszip.min.js');const jsZipModule=require(jsZipAbsPath);global.JSZip=jsZipModule;}'use strict';tr.exportTo('tr.e.importer',function(){function ZipImporter(model,eventData){if(eventData instanceof ArrayBuffer){eventData=new Uint8Array(eventData);}\nthis.model_=model;this.eventData_=eventData;}\nZipImporter.canImport=function(eventData){let header;if(eventData instanceof ArrayBuffer){header=new Uint8Array(eventData.slice(0,2));}else if(typeof(eventData)==='string'||eventData instanceof String){header=[eventData.charCodeAt(0),eventData.charCodeAt(1)];}else{return false;}\nreturn header[0]==='P'.charCodeAt(0)&&header[1]==='K'.charCodeAt(0);};ZipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'ZipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const zip=new JSZip(this.eventData_);const subtraces=[];for(const idx in zip.files){subtraces.push(zip.files[idx].asBinary());}\nreturn subtraces;}};tr.importer.Importer.register(ZipImporter);return{ZipImporter,};});'use strict';tr.exportTo('tr.model',function(){function HeapEntry(heapDump,leafStackFrame,objectTypeName,size,count,valuesAreTotals){this.heapDump=heapDump;this.leafStackFrame=leafStackFrame;this.objectTypeName=objectTypeName;this.size=size;this.count=count;this.valuesAreTotals=valuesAreTotals;}\nfunction HeapDump(processMemoryDump,allocatorName,isComplete){this.processMemoryDump=processMemoryDump;this.allocatorName=allocatorName;this.isComplete=isComplete;this.entries=[];}\nHeapDump.prototype={addEntry(leafStackFrame,objectTypeName,size,count,opt_valuesAreTotals){if(opt_valuesAreTotals===undefined)opt_valuesAreTotals=true;const valuesAreTotals=opt_valuesAreTotals;const entry=new HeapEntry(this,leafStackFrame,objectTypeName,size,count,valuesAreTotals);this.entries.push(entry);return entry;}};return{HeapEntry,HeapDump,};});'use strict';tr.exportTo('tr.e.importer',function(){function HeapDumpTraceEventImporter(heapProfileExpander,stackFrames,processMemoryDump,idPrefix,model){this.expander=heapProfileExpander;this.stackFrames=stackFrames;this.processMemoryDump=processMemoryDump;this.idPrefix=idPrefix;this.model=model;}\nHeapDumpTraceEventImporter.prototype={getLeafStackFrame(stackFrameId){if(stackFrameId==='')return undefined;const parentId=this.idPrefix+stackFrameId;const id=parentId+':self';if(!this.stackFrames[id]){const parentStackFrame=this.stackFrames[parentId];const stackFrame=new tr.model.StackFrame(parentStackFrame,id,'<self>',undefined);this.model.addStackFrame(stackFrame);}\nreturn this.stackFrames[id];},parseEntry(entry,heapDump){const size=entry.size;const count=entry.count;const leafStackFrame=this.getLeafStackFrame(entry.node.id);const objectTypeName=entry.type.name;const valuesAreTotals=false;if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+typeId+')',});}\nheapDump.addEntry(leafStackFrame,objectTypeName,size,count,valuesAreTotals);},parse(){const heapDumps={};const inflated=this.expander.inflated;for(const[allocatorName,entries]of Object.entries(inflated)){const heapDump=new tr.model.HeapDump(this.processMemoryDump,allocatorName);for(const entry of entries){this.parseEntry(entry,heapDump);}\nheapDump.isComplete=true;heapDumps[allocatorName]=heapDump;}\nreturn heapDumps;},};return{HeapDumpTraceEventImporter,};});'use strict';tr.exportTo('tr.e.importer',function(){function LegacyHeapDumpTraceEventImporter(model,processMemoryDump,processObjectTypeNameMap,idPrefix,dumpId,rawHeapDumps){this.model_=model;this.processObjectTypeNameMap_=processObjectTypeNameMap;this.idPrefix_=idPrefix;this.processMemoryDump_=processMemoryDump;this.pid_=this.processMemoryDump_.process.pid;this.dumpId_=dumpId;this.rawHeapDumps_=rawHeapDumps;}\nLegacyHeapDumpTraceEventImporter.prototype={parseRawHeapDump(rawHeapDump,allocatorName){const model=this.model_;const processMemoryDump=this.processMemoryDump_;const heapDump=new tr.model.HeapDump(processMemoryDump,allocatorName);const entries=rawHeapDump.entries;if(entries===undefined||entries.length===0){this.model_.importWarning({type:'memory_dump_parse_error',message:'No heap entries in a '+allocatorName+' heap dump for PID='+this.pid_+' and dump ID='+this.dumpId_+'.'});return undefined;}\nconst isOldFormat=entries[0].bt===undefined;if(!isOldFormat&&this.processObjectTypeNameMap_===undefined){return undefined;}\nfor(let i=0;i<entries.length;i++){const entry=entries[i];const size=parseInt(entry.size,16);const leafStackFrameIndex=entry.bt;let leafStackFrame;if(isOldFormat){if(leafStackFrameIndex===undefined){leafStackFrame=undefined;}else{let leafStackFrameId=this.idPrefix_+leafStackFrameIndex;if(leafStackFrameIndex===''){leafStackFrame=undefined;}else{leafStackFrame=model.stackFrames[leafStackFrameId];if(leafStackFrame===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing leaf stack frame (ID '+\nleafStackFrameId+') of heap entry '+i+' (size '+\nsize+') in a '+allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}\nleafStackFrameId+=':self';if(model.stackFrames[leafStackFrameId]!==undefined){leafStackFrame=model.stackFrames[leafStackFrameId];}else{leafStackFrame=new tr.model.StackFrame(leafStackFrame,leafStackFrameId,'<self>',undefined);model.addStackFrame(leafStackFrame);}}}else{if(leafStackFrameIndex===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing stack frame ID of heap entry '+i+' (size '+size+') in a '+allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}\nconst leafStackFrameId=this.idPrefix_+leafStackFrameIndex;if(leafStackFrameIndex===''){leafStackFrame=undefined;}else{leafStackFrame=model.stackFrames[leafStackFrameId];if(leafStackFrame===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing leaf stack frame (ID '+leafStackFrameId+') of heap entry '+i+' (size '+size+') in a '+\nallocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}}\nconst objectTypeId=entry.type;let objectTypeName;if(objectTypeId===undefined){objectTypeName=undefined;}else if(this.processObjectTypeNameMap_===undefined){continue;}else{objectTypeName=this.processObjectTypeNameMap_[objectTypeId];if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+objectTypeId+') of heap entry '+i+' (size '+size+') in a '+\nallocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}\nconst count=entry.count===undefined?undefined:parseInt(entry.count,16);heapDump.addEntry(leafStackFrame,objectTypeName,size,count);}\nreturn heapDump;},parse(){const heapDumps={};for(const allocatorName in this.rawHeapDumps_){const rawHeapDump=this.rawHeapDumps_[allocatorName];const heapDump=this.parseRawHeapDump(rawHeapDump,allocatorName);if(heapDump!==undefined&&heapDump.entries.length>0){heapDumps[allocatorName]=heapDump;}}\nreturn heapDumps;},};return{LegacyHeapDumpTraceEventImporter,};});'use strict';if(tr.isHeadless){global.window={};}\n(function(window,Object,Array,Error,JSON,undefined){var partialComplete=varArgs(function(fn,args){var numBoundArgs=args.length;return varArgs(function(callArgs){for(var i=0;i<callArgs.length;i++){args[numBoundArgs+i]=callArgs[i];}\nargs.length=numBoundArgs+callArgs.length;return fn.apply(this,args);});}),compose=varArgs(function(fns){var fnsList=arrayAsList(fns);function next(params,curFn){return[apply(params,curFn)];}\nreturn varArgs(function(startParams){return foldR(next,startParams,fnsList)[0];});});function compose2(f1,f2){return function(){return f1.call(this,f2.apply(this,arguments));}}\nfunction attr(key){return function(o){return o[key];};}\nvar lazyUnion=varArgs(function(fns){return varArgs(function(params){var maybeValue;for(var i=0;i<len(fns);i++){maybeValue=apply(params,fns[i]);if(maybeValue){return maybeValue;}}});});function apply(args,fn){return fn.apply(undefined,args);}\nfunction varArgs(fn){var numberOfFixedArguments=fn.length-1,slice=Array.prototype.slice;if(numberOfFixedArguments==0){return function(){return fn.call(this,slice.call(arguments));}}else if(numberOfFixedArguments==1){return function(){return fn.call(this,arguments[0],slice.call(arguments,1));}}\nvar argsHolder=Array(fn.length);return function(){for(var i=0;i<numberOfFixedArguments;i++){argsHolder[i]=arguments[i];}\nargsHolder[numberOfFixedArguments]=slice.call(arguments,numberOfFixedArguments);return fn.apply(this,argsHolder);}}\nfunction flip(fn){return function(a,b){return fn(b,a);}}\nfunction lazyIntersection(fn1,fn2){return function(param){return fn1(param)&&fn2(param);};}\nfunction noop(){}\nfunction always(){return true}\nfunction functor(val){return function(){return val;}}\nfunction isOfType(T,maybeSomething){return maybeSomething&&maybeSomething.constructor===T;}\nvar len=attr('length'),isString=partialComplete(isOfType,String);function defined(value){return value!==undefined;}\nfunction hasAllProperties(fieldList,o){return(o instanceof Object)&&all(function(field){return(field in o);},fieldList);}\nfunction cons(x,xs){return[x,xs];}\nvar emptyList=null,head=attr(0),tail=attr(1);function arrayAsList(inputArray){return reverseList(inputArray.reduce(flip(cons),emptyList));}\nvar list=varArgs(arrayAsList);function listAsArray(list){return foldR(function(arraySoFar,listItem){arraySoFar.unshift(listItem);return arraySoFar;},[],list);}\nfunction map(fn,list){return list?cons(fn(head(list)),map(fn,tail(list))):emptyList;}\nfunction foldR(fn,startValue,list){return list?fn(foldR(fn,startValue,tail(list)),head(list)):startValue;}\nfunction foldR1(fn,list){return tail(list)?fn(foldR1(fn,tail(list)),head(list)):head(list);}\nfunction without(list,test,removedFn){return withoutInner(list,removedFn||noop);function withoutInner(subList,removedFn){return subList?(test(head(subList))?(removedFn(head(subList)),tail(subList)):cons(head(subList),withoutInner(tail(subList),removedFn))):emptyList;}}\nfunction all(fn,list){return!list||(fn(head(list))&&all(fn,tail(list)));}\nfunction applyEach(fnList,args){if(fnList){head(fnList).apply(null,args);applyEach(tail(fnList),args);}}\nfunction reverseList(list){function reverseInner(list,reversedAlready){if(!list){return reversedAlready;}\nreturn reverseInner(tail(list),cons(head(list),reversedAlready))}\nreturn reverseInner(list,emptyList);}\nfunction first(test,list){return list&&(test(head(list))?head(list):first(test,tail(list)));}\nfunction clarinet(eventBus){\"use strict\";var\nemitSaxKey=eventBus(SAX_KEY).emit,emitValueOpen=eventBus(SAX_VALUE_OPEN).emit,emitValueClose=eventBus(SAX_VALUE_CLOSE).emit,emitFail=eventBus(FAIL_EVENT).emit,MAX_BUFFER_LENGTH=64*1024,stringTokenPattern=/[\\\\\"\\n]/g,_n=0,BEGIN=_n++,VALUE=_n++,OPEN_OBJECT=_n++,CLOSE_OBJECT=_n++,OPEN_ARRAY=_n++,CLOSE_ARRAY=_n++,STRING=_n++,OPEN_KEY=_n++,CLOSE_KEY=_n++,TRUE=_n++,TRUE2=_n++,TRUE3=_n++,FALSE=_n++,FALSE2=_n++,FALSE3=_n++,FALSE4=_n++,NULL=_n++,NULL2=_n++,NULL3=_n++,NUMBER_DECIMAL_POINT=_n++,NUMBER_DIGIT=_n,bufferCheckPosition=MAX_BUFFER_LENGTH,latestError,c,p,textNode=undefined,numberNode=\"\",slashed=false,closed=false,state=BEGIN,stack=[],unicodeS=null,unicodeI=0,depth=0,position=0,column=0,line=1;function checkBufferLength(){var maxActual=0;if(textNode!==undefined&&textNode.length>MAX_BUFFER_LENGTH){emitError(\"Max buffer length exceeded: textNode\");maxActual=Math.max(maxActual,textNode.length);}\nif(numberNode.length>MAX_BUFFER_LENGTH){emitError(\"Max buffer length exceeded: numberNode\");maxActual=Math.max(maxActual,numberNode.length);}\nbufferCheckPosition=(MAX_BUFFER_LENGTH-maxActual)\n+position;}\neventBus(STREAM_DATA).on(handleData);eventBus(STREAM_END).on(handleStreamEnd);function emitError(errorString){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nlatestError=Error(errorString+\"\\nLn: \"+line+\"\\nCol: \"+column+\"\\nChr: \"+c);emitFail(errorReport(undefined,undefined,latestError));}\nfunction handleStreamEnd(){if(state==BEGIN){emitValueOpen({});emitValueClose();closed=true;return;}\nif(state!==VALUE||depth!==0)\nemitError(\"Unexpected end\");if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nclosed=true;}\nfunction whitespace(c){return c=='\\r'||c=='\\n'||c==' '||c=='\\t';}\nfunction handleData(chunk){if(latestError)\nreturn;if(closed){return emitError(\"Cannot write after close\");}\nvar i=0;c=chunk[0];while(c){p=c;c=chunk[i++];if(!c)break;position++;if(c==\"\\n\"){line++;column=0;}else column++;switch(state){case BEGIN:if(c===\"{\")state=OPEN_OBJECT;else if(c===\"[\")state=OPEN_ARRAY;else if(!whitespace(c))\nreturn emitError(\"Non-whitespace before {[.\");continue;case OPEN_KEY:case OPEN_OBJECT:if(whitespace(c))continue;if(state===OPEN_KEY)stack.push(CLOSE_KEY);else{if(c==='}'){emitValueOpen({});emitValueClose();state=stack.pop()||VALUE;continue;}else stack.push(CLOSE_OBJECT);}\nif(c==='\"')\nstate=STRING;else\nreturn emitError(\"Malformed object key should start with \\\" \");continue;case CLOSE_KEY:case CLOSE_OBJECT:if(whitespace(c))continue;if(c===':'){if(state===CLOSE_OBJECT){stack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen({});emitSaxKey(textNode);textNode=undefined;}\ndepth++;}else{if(textNode!==undefined){emitSaxKey(textNode);textNode=undefined;}}\nstate=VALUE;}else if(c==='}'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nemitValueClose();depth--;state=stack.pop()||VALUE;}else if(c===','){if(state===CLOSE_OBJECT)\nstack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nstate=OPEN_KEY;}else\nreturn emitError('Bad object');continue;case OPEN_ARRAY:case VALUE:if(whitespace(c))continue;if(state===OPEN_ARRAY){emitValueOpen([]);depth++;state=VALUE;if(c===']'){emitValueClose();depth--;state=stack.pop()||VALUE;continue;}else{stack.push(CLOSE_ARRAY);}}\nif(c==='\"')state=STRING;else if(c==='{')state=OPEN_OBJECT;else if(c==='[')state=OPEN_ARRAY;else if(c==='t')state=TRUE;else if(c==='f')state=FALSE;else if(c==='n')state=NULL;else if(c==='-'){numberNode+=c;}else if(c==='0'){numberNode+=c;state=NUMBER_DIGIT;}else if('123456789'.indexOf(c)!==-1){numberNode+=c;state=NUMBER_DIGIT;}else\nreturn emitError(\"Bad value\");continue;case CLOSE_ARRAY:if(c===','){stack.push(CLOSE_ARRAY);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nstate=VALUE;}else if(c===']'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nemitValueClose();depth--;state=stack.pop()||VALUE;}else if(whitespace(c))\ncontinue;else\nreturn emitError('Bad array');continue;case STRING:if(textNode===undefined){textNode=\"\";}\nvar starti=i-1;STRING_BIGLOOP:while(true){while(unicodeI>0){unicodeS+=c;c=chunk.charAt(i++);if(unicodeI===4){textNode+=String.fromCharCode(parseInt(unicodeS,16));unicodeI=0;starti=i-1;}else{unicodeI++;}\nif(!c)break STRING_BIGLOOP;}\nif(c==='\"'&&!slashed){state=stack.pop()||VALUE;textNode+=chunk.substring(starti,i-1);break;}\nif(c==='\\\\'&&!slashed){slashed=true;textNode+=chunk.substring(starti,i-1);c=chunk.charAt(i++);if(!c)break;}\nif(slashed){slashed=false;if(c==='n'){textNode+='\\n';}\nelse if(c==='r'){textNode+='\\r';}\nelse if(c==='t'){textNode+='\\t';}\nelse if(c==='f'){textNode+='\\f';}\nelse if(c==='b'){textNode+='\\b';}\nelse if(c==='u'){unicodeI=1;unicodeS='';}else{textNode+=c;}\nc=chunk.charAt(i++);starti=i-1;if(!c)break;else continue;}\nstringTokenPattern.lastIndex=i;var reResult=stringTokenPattern.exec(chunk);if(!reResult){i=chunk.length+1;textNode+=chunk.substring(starti,i-1);break;}\ni=reResult.index+1;c=chunk.charAt(reResult.index);if(!c){textNode+=chunk.substring(starti,i-1);break;}}\ncontinue;case TRUE:if(!c)continue;if(c==='r')state=TRUE2;else\nreturn emitError('Invalid true started with t'+c);continue;case TRUE2:if(!c)continue;if(c==='u')state=TRUE3;else\nreturn emitError('Invalid true started with tr'+c);continue;case TRUE3:if(!c)continue;if(c==='e'){emitValueOpen(true);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid true started with tru'+c);continue;case FALSE:if(!c)continue;if(c==='a')state=FALSE2;else\nreturn emitError('Invalid false started with f'+c);continue;case FALSE2:if(!c)continue;if(c==='l')state=FALSE3;else\nreturn emitError('Invalid false started with fa'+c);continue;case FALSE3:if(!c)continue;if(c==='s')state=FALSE4;else\nreturn emitError('Invalid false started with fal'+c);continue;case FALSE4:if(!c)continue;if(c==='e'){emitValueOpen(false);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid false started with fals'+c);continue;case NULL:if(!c)continue;if(c==='u')state=NULL2;else\nreturn emitError('Invalid null started with n'+c);continue;case NULL2:if(!c)continue;if(c==='l')state=NULL3;else\nreturn emitError('Invalid null started with nu'+c);continue;case NULL3:if(!c)continue;if(c==='l'){emitValueOpen(null);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid null started with nul'+c);continue;case NUMBER_DECIMAL_POINT:if(c==='.'){numberNode+=c;state=NUMBER_DIGIT;}else\nreturn emitError('Leading zero not followed by .');continue;case NUMBER_DIGIT:if('0123456789'.indexOf(c)!==-1)numberNode+=c;else if(c==='.'){if(numberNode.indexOf('.')!==-1)\nreturn emitError('Invalid number has two dots');numberNode+=c;}else if(c==='e'||c==='E'){if(numberNode.indexOf('e')!==-1||numberNode.indexOf('E')!==-1)\nreturn emitError('Invalid number has two exponential');numberNode+=c;}else if(c===\"+\"||c===\"-\"){if(!(p==='e'||p==='E'))\nreturn emitError('Invalid symbol in number');numberNode+=c;}else{if(numberNode){emitValueOpen(parseFloat(numberNode));emitValueClose();numberNode=\"\";}\ni--;state=stack.pop()||VALUE;}\ncontinue;default:return emitError(\"Unknown state: \"+state);}}\nif(position>=bufferCheckPosition)\ncheckBufferLength();}}\nfunction ascentManager(oboeBus,handlers){\"use strict\";var listenerId={},ascent;function stateAfter(handler){return function(param){ascent=handler(ascent,param);}}\nfor(var eventName in handlers){oboeBus(eventName).on(stateAfter(handlers[eventName]),listenerId);}\noboeBus(NODE_SWAP).on(function(newNode){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));parentNode[key]=newNode;}});oboeBus(NODE_DROP).on(function(){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));delete parentNode[key];}});oboeBus(ABORTING).on(function(){for(var eventName in handlers){oboeBus(eventName).un(listenerId);}});}\nfunction parseResponseHeaders(headerStr){var headers={};headerStr&&headerStr.split('\\u000d\\u000a').forEach(function(headerPair){var index=headerPair.indexOf('\\u003a\\u0020');headers[headerPair.substring(0,index)]=headerPair.substring(index+2);});return headers;}\nfunction isCrossOrigin(pageLocation,ajaxHost){function defaultPort(protocol){return{'http:':80,'https:':443}[protocol];}\nfunction portOf(location){return location.port||defaultPort(location.protocol||pageLocation.protocol);}\nreturn!!((ajaxHost.protocol&&(ajaxHost.protocol!=pageLocation.protocol))||(ajaxHost.host&&(ajaxHost.host!=pageLocation.host))||(ajaxHost.host&&(portOf(ajaxHost)!=portOf(pageLocation))));}\nfunction parseUrlOrigin(url){var URL_HOST_PATTERN=/(\\w+:)?(?:\\/\\/)([\\w.-]+)?(?::(\\d+))?\\/?/,urlHostMatch=URL_HOST_PATTERN.exec(url)||[];return{protocol:urlHostMatch[1]||'',host:urlHostMatch[2]||'',port:urlHostMatch[3]||''};}\nfunction httpTransport(){return new XMLHttpRequest();}\nfunction streamingHttp(oboeBus,xhr,method,url,data,headers,withCredentials){\"use strict\";var emitStreamData=oboeBus(STREAM_DATA).emit,emitFail=oboeBus(FAIL_EVENT).emit,numberOfCharsAlreadyGivenToCallback=0,stillToSendStartEvent=true;oboeBus(ABORTING).on(function(){xhr.onreadystatechange=null;xhr.abort();});function handleProgress(){var textSoFar=xhr.responseText,newText=textSoFar.substr(numberOfCharsAlreadyGivenToCallback);if(newText){emitStreamData(newText);}\nnumberOfCharsAlreadyGivenToCallback=len(textSoFar);}\nif('onprogress'in xhr){xhr.onprogress=handleProgress;}\nxhr.onreadystatechange=function(){function sendStartIfNotAlready(){try{stillToSendStartEvent&&oboeBus(HTTP_START).emit(xhr.status,parseResponseHeaders(xhr.getAllResponseHeaders()));stillToSendStartEvent=false;}catch(e){}}\nswitch(xhr.readyState){case 2:case 3:return sendStartIfNotAlready();case 4:sendStartIfNotAlready();var successful=String(xhr.status)[0]==2;if(successful){handleProgress();oboeBus(STREAM_END).emit();}else{emitFail(errorReport(xhr.status,xhr.responseText));}}};try{xhr.open(method,url,true);for(var headerName in headers){xhr.setRequestHeader(headerName,headers[headerName]);}\nif(!isCrossOrigin(window.location,parseUrlOrigin(url))){xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');}\nxhr.withCredentials=withCredentials;xhr.send(data);}catch(e){window.setTimeout(partialComplete(emitFail,errorReport(undefined,undefined,e)),0);}}\nvar jsonPathSyntax=(function(){var\nregexDescriptor=function regexDescriptor(regex){return regex.exec.bind(regex);},jsonPathClause=varArgs(function(componentRegexes){componentRegexes.unshift(/^/);return regexDescriptor(RegExp(componentRegexes.map(attr('source')).join('')));}),possiblyCapturing=/(\\$?)/,namedNode=/([\\w-_]+|\\*)/,namePlaceholder=/()/,nodeInArrayNotation=/\\[\"([^\"]+)\"\\]/,numberedNodeInArrayNotation=/\\[(\\d+|\\*)\\]/,fieldList=/{([\\w ]*?)}/,optionalFieldList=/(?:{([\\w ]*?)})?/\n,jsonPathNamedNodeInObjectNotation=jsonPathClause(possiblyCapturing,namedNode,optionalFieldList),jsonPathNamedNodeInArrayNotation=jsonPathClause(possiblyCapturing,nodeInArrayNotation,optionalFieldList),jsonPathNumberedNodeInArrayNotation=jsonPathClause(possiblyCapturing,numberedNodeInArrayNotation,optionalFieldList),jsonPathPureDuckTyping=jsonPathClause(possiblyCapturing,namePlaceholder,fieldList),jsonPathDoubleDot=jsonPathClause(/\\.\\./),jsonPathDot=jsonPathClause(/\\./),jsonPathBang=jsonPathClause(possiblyCapturing,/!/),emptyString=jsonPathClause(/$/);return function(fn){return fn(lazyUnion(jsonPathNamedNodeInObjectNotation,jsonPathNamedNodeInArrayNotation,jsonPathNumberedNodeInArrayNotation,jsonPathPureDuckTyping),jsonPathDoubleDot,jsonPathDot,jsonPathBang,emptyString);};}());function namedNode(key,node){return{key:key,node:node};}\nvar keyOf=attr('key');var nodeOf=attr('node');var ROOT_PATH={};function incrementalContentBuilder(oboeBus){var emitNodeOpened=oboeBus(NODE_OPENED).emit,emitNodeClosed=oboeBus(NODE_CLOSED).emit,emitRootOpened=oboeBus(ROOT_PATH_FOUND).emit,emitRootClosed=oboeBus(ROOT_NODE_FOUND).emit;function arrayIndicesAreKeys(possiblyInconsistentAscent,newDeepestNode){var parentNode=nodeOf(head(possiblyInconsistentAscent));return isOfType(Array,parentNode)?keyFound(possiblyInconsistentAscent,len(parentNode),newDeepestNode):possiblyInconsistentAscent;}\nfunction nodeOpened(ascent,newDeepestNode){if(!ascent){emitRootOpened(newDeepestNode);return keyFound(ascent,ROOT_PATH,newDeepestNode);}\nvar arrayConsistentAscent=arrayIndicesAreKeys(ascent,newDeepestNode),ancestorBranches=tail(arrayConsistentAscent),previouslyUnmappedName=keyOf(head(arrayConsistentAscent));appendBuiltContent(ancestorBranches,previouslyUnmappedName,newDeepestNode);return cons(namedNode(previouslyUnmappedName,newDeepestNode),ancestorBranches);}\nfunction appendBuiltContent(ancestorBranches,key,node){nodeOf(head(ancestorBranches))[key]=node;}\nfunction keyFound(ascent,newDeepestName,maybeNewDeepestNode){if(ascent){appendBuiltContent(ascent,newDeepestName,maybeNewDeepestNode);}\nvar ascentWithNewPath=cons(namedNode(newDeepestName,maybeNewDeepestNode),ascent);emitNodeOpened(ascentWithNewPath);return ascentWithNewPath;}\nfunction nodeClosed(ascent){emitNodeClosed(ascent);return tail(ascent)||emitRootClosed(nodeOf(head(ascent)));}\nvar contentBuilderHandlers={};contentBuilderHandlers[SAX_VALUE_OPEN]=nodeOpened;contentBuilderHandlers[SAX_VALUE_CLOSE]=nodeClosed;contentBuilderHandlers[SAX_KEY]=keyFound;return contentBuilderHandlers;}\nvar jsonPathCompiler=jsonPathSyntax(function(pathNodeSyntax,doubleDotSyntax,dotSyntax,bangSyntax,emptySyntax){var CAPTURING_INDEX=1;var NAME_INDEX=2;var FIELD_LIST_INDEX=3;var headKey=compose2(keyOf,head),headNode=compose2(nodeOf,head);function nameClause(previousExpr,detection){var name=detection[NAME_INDEX],matchesName=(!name||name=='*')?always:function(ascent){return headKey(ascent)==name};return lazyIntersection(matchesName,previousExpr);}\nfunction duckTypeClause(previousExpr,detection){var fieldListStr=detection[FIELD_LIST_INDEX];if(!fieldListStr)\nreturn previousExpr;var hasAllrequiredFields=partialComplete(hasAllProperties,arrayAsList(fieldListStr.split(/\\W+/))),isMatch=compose2(hasAllrequiredFields,headNode);return lazyIntersection(isMatch,previousExpr);}\nfunction capture(previousExpr,detection){var capturing=!!detection[CAPTURING_INDEX];if(!capturing)\nreturn previousExpr;return lazyIntersection(previousExpr,head);}\nfunction skip1(previousExpr){if(previousExpr==always){return always;}\nfunction notAtRoot(ascent){return headKey(ascent)!=ROOT_PATH;}\nreturn lazyIntersection(notAtRoot,compose2(previousExpr,tail));}\nfunction skipMany(previousExpr){if(previousExpr==always){return always;}\nvar\nterminalCaseWhenArrivingAtRoot=rootExpr(),terminalCaseWhenPreviousExpressionIsSatisfied=previousExpr,recursiveCase=skip1(function(ascent){return cases(ascent);}),cases=lazyUnion(terminalCaseWhenArrivingAtRoot,terminalCaseWhenPreviousExpressionIsSatisfied,recursiveCase);return cases;}\nfunction rootExpr(){return function(ascent){return headKey(ascent)==ROOT_PATH;};}\nfunction statementExpr(lastClause){return function(ascent){var exprMatch=lastClause(ascent);return exprMatch===true?head(ascent):exprMatch;};}\nfunction expressionsReader(exprs,parserGeneratedSoFar,detection){return foldR(function(parserGeneratedSoFar,expr){return expr(parserGeneratedSoFar,detection);},parserGeneratedSoFar,exprs);}\nfunction generateClauseReaderIfTokenFound(tokenDetector,clauseEvaluatorGenerators,jsonPath,parserGeneratedSoFar,onSuccess){var detected=tokenDetector(jsonPath);if(detected){var compiledParser=expressionsReader(clauseEvaluatorGenerators,parserGeneratedSoFar,detected),remainingUnparsedJsonPath=jsonPath.substr(len(detected[0]));return onSuccess(remainingUnparsedJsonPath,compiledParser);}}\nfunction clauseMatcher(tokenDetector,exprs){return partialComplete(generateClauseReaderIfTokenFound,tokenDetector,exprs);}\nvar clauseForJsonPath=lazyUnion(clauseMatcher(pathNodeSyntax,list(capture,duckTypeClause,nameClause,skip1)),clauseMatcher(doubleDotSyntax,list(skipMany)),clauseMatcher(dotSyntax,list()),clauseMatcher(bangSyntax,list(capture,rootExpr)),clauseMatcher(emptySyntax,list(statementExpr)),function(jsonPath){throw Error('\"'+jsonPath+'\" could not be tokenised')});function returnFoundParser(_remainingJsonPath,compiledParser){return compiledParser}\nfunction compileJsonPathToFunction(uncompiledJsonPath,parserGeneratedSoFar){var onFind=uncompiledJsonPath?compileJsonPathToFunction:returnFoundParser;return clauseForJsonPath(uncompiledJsonPath,parserGeneratedSoFar,onFind);}\nreturn function(jsonPath){try{return compileJsonPathToFunction(jsonPath,always);}catch(e){throw Error('Could not compile \"'+jsonPath+'\" because '+e.message);}}});function singleEventPubSub(eventType,newListener,removeListener){var listenerTupleList,listenerList;function hasId(id){return function(tuple){return tuple.id==id;};}\nreturn{on:function(listener,listenerId){var tuple={listener:listener,id:listenerId||listener};if(newListener){newListener.emit(eventType,listener,tuple.id);}\nlistenerTupleList=cons(tuple,listenerTupleList);listenerList=cons(listener,listenerList);return this;},emit:function(){applyEach(listenerList,arguments);},un:function(listenerId){var removed;listenerTupleList=without(listenerTupleList,hasId(listenerId),function(tuple){removed=tuple;});if(removed){listenerList=without(listenerList,function(listener){return listener==removed.listener;});if(removeListener){removeListener.emit(eventType,removed.listener,removed.id);}}},listeners:function(){return listenerList;},hasListener:function(listenerId){var test=listenerId?hasId(listenerId):always;return defined(first(test,listenerTupleList));}};}\nfunction pubSub(){var singles={},newListener=newSingle('newListener'),removeListener=newSingle('removeListener');function newSingle(eventName){return singles[eventName]=singleEventPubSub(eventName,newListener,removeListener);}\nfunction pubSubInstance(eventName){return singles[eventName]||newSingle(eventName);}\n['emit','on','un'].forEach(function(methodName){pubSubInstance[methodName]=varArgs(function(eventName,parameters){apply(parameters,pubSubInstance(eventName)[methodName]);});});return pubSubInstance;}\nvar\n_S=1,NODE_OPENED=_S++,NODE_CLOSED=_S++,NODE_SWAP=_S++,NODE_DROP=_S++,FAIL_EVENT='fail',ROOT_NODE_FOUND=_S++,ROOT_PATH_FOUND=_S++,HTTP_START='start',STREAM_DATA='data',STREAM_END='end',ABORTING=_S++,SAX_KEY=_S++,SAX_VALUE_OPEN=_S++,SAX_VALUE_CLOSE=_S++;function errorReport(statusCode,body,error){try{var jsonBody=JSON.parse(body);}catch(e){}\nreturn{statusCode:statusCode,body:body,jsonBody:jsonBody,thrown:error};}\nfunction patternAdapter(oboeBus,jsonPathCompiler){var predicateEventMap={node:oboeBus(NODE_CLOSED),path:oboeBus(NODE_OPENED)};function emitMatchingNode(emitMatch,node,ascent){var descent=reverseList(ascent);emitMatch(node,listAsArray(tail(map(keyOf,descent))),listAsArray(map(nodeOf,descent)));}\nfunction addUnderlyingListener(fullEventName,predicateEvent,compiledJsonPath){var emitMatch=oboeBus(fullEventName).emit;predicateEvent.on(function(ascent){var maybeMatchingMapping=compiledJsonPath(ascent);if(maybeMatchingMapping!==false){emitMatchingNode(emitMatch,nodeOf(maybeMatchingMapping),ascent);}},fullEventName);oboeBus('removeListener').on(function(removedEventName){if(removedEventName==fullEventName){if(!oboeBus(removedEventName).listeners()){predicateEvent.un(fullEventName);}}});}\noboeBus('newListener').on(function(fullEventName){var match=/(node|path):(.*)/.exec(fullEventName);if(match){var predicateEvent=predicateEventMap[match[1]];if(!predicateEvent.hasListener(fullEventName)){addUnderlyingListener(fullEventName,predicateEvent,jsonPathCompiler(match[2]));}}})}\nfunction instanceApi(oboeBus,contentSource){var oboeApi,fullyQualifiedNamePattern=/^(node|path):./,rootNodeFinishedEvent=oboeBus(ROOT_NODE_FOUND),emitNodeDrop=oboeBus(NODE_DROP).emit,emitNodeSwap=oboeBus(NODE_SWAP).emit,addListener=varArgs(function(eventId,parameters){if(oboeApi[eventId]){apply(parameters,oboeApi[eventId]);}else{var event=oboeBus(eventId),listener=parameters[0];if(fullyQualifiedNamePattern.test(eventId)){addForgettableCallback(event,listener);}else{event.on(listener);}}\nreturn oboeApi;}),removeListener=function(eventId,p2,p3){if(eventId=='done'){rootNodeFinishedEvent.un(p2);}else if(eventId=='node'||eventId=='path'){oboeBus.un(eventId+':'+p2,p3);}else{var listener=p2;oboeBus(eventId).un(listener);}\nreturn oboeApi;};function addProtectedCallback(eventName,callback){oboeBus(eventName).on(protectedCallback(callback),callback);return oboeApi;}\nfunction addForgettableCallback(event,callback,listenerId){listenerId=listenerId||callback;var safeCallback=protectedCallback(callback);event.on(function(){var discard=false;oboeApi.forget=function(){discard=true;};apply(arguments,safeCallback);delete oboeApi.forget;if(discard){event.un(listenerId);}},listenerId);return oboeApi;}\nfunction protectedCallback(callback){return function(){try{return callback.apply(oboeApi,arguments);}catch(e){setTimeout(function(){throw new Error(e.message);});}}}\nfunction fullyQualifiedPatternMatchEvent(type,pattern){return oboeBus(type+':'+pattern);}\nfunction wrapCallbackToSwapNodeIfSomethingReturned(callback){return function(){var returnValueFromCallback=callback.apply(this,arguments);if(defined(returnValueFromCallback)){if(returnValueFromCallback==oboe.drop){emitNodeDrop();}else{emitNodeSwap(returnValueFromCallback);}}}}\nfunction addSingleNodeOrPathListener(eventId,pattern,callback){var effectiveCallback;if(eventId=='node'){effectiveCallback=wrapCallbackToSwapNodeIfSomethingReturned(callback);}else{effectiveCallback=callback;}\naddForgettableCallback(fullyQualifiedPatternMatchEvent(eventId,pattern),effectiveCallback,callback);}\nfunction addMultipleNodeOrPathListeners(eventId,listenerMap){for(var pattern in listenerMap){addSingleNodeOrPathListener(eventId,pattern,listenerMap[pattern]);}}\nfunction addNodeOrPathListenerApi(eventId,jsonPathOrListenerMap,callback){if(isString(jsonPathOrListenerMap)){addSingleNodeOrPathListener(eventId,jsonPathOrListenerMap,callback);}else{addMultipleNodeOrPathListeners(eventId,jsonPathOrListenerMap);}\nreturn oboeApi;}\noboeBus(ROOT_PATH_FOUND).on(function(rootNode){oboeApi.root=functor(rootNode);});oboeBus(HTTP_START).on(function(_statusCode,headers){oboeApi.header=function(name){return name?headers[name]:headers;}});return oboeApi={on:addListener,addListener:addListener,removeListener:removeListener,emit:oboeBus.emit,node:partialComplete(addNodeOrPathListenerApi,'node'),path:partialComplete(addNodeOrPathListenerApi,'path'),done:partialComplete(addForgettableCallback,rootNodeFinishedEvent),start:partialComplete(addProtectedCallback,HTTP_START),fail:oboeBus(FAIL_EVENT).on,abort:oboeBus(ABORTING).emit,write:oboeBus(STREAM_DATA).emit,finish:oboeBus(STREAM_END).emit,header:noop,root:noop,source:contentSource};}\nfunction wire(httpMethodName,contentSource,body,headers,withCredentials){var oboeBus=pubSub();if(contentSource){streamingHttp(oboeBus,httpTransport(),httpMethodName,contentSource,body,headers,withCredentials);}\nclarinet(oboeBus);ascentManager(oboeBus,incrementalContentBuilder(oboeBus));patternAdapter(oboeBus,jsonPathCompiler);return instanceApi(oboeBus,contentSource);}\nfunction applyDefaults(passthrough,url,httpMethodName,body,headers,withCredentials,cached){headers=headers?JSON.parse(JSON.stringify(headers)):{};if(body){if(!isString(body)){body=JSON.stringify(body);headers['Content-Type']=headers['Content-Type']||'application/json';}}else{body=null;}\nfunction modifiedUrl(baseUrl,cached){if(cached===false){if(baseUrl.indexOf('?')==-1){baseUrl+='?';}else{baseUrl+='&';}\nbaseUrl+='_='+new Date().getTime();}\nreturn baseUrl;}\nreturn passthrough(httpMethodName||'GET',modifiedUrl(url,cached),body,headers,withCredentials||false);}\nfunction oboe(arg1){var nodeStreamMethodNames=list('resume','pause','pipe'),isStream=partialComplete(hasAllProperties,nodeStreamMethodNames);if(arg1){if(isStream(arg1)||isString(arg1)){return applyDefaults(wire,arg1);}else{return applyDefaults(wire,arg1.url,arg1.method,arg1.body,arg1.headers,arg1.withCredentials,arg1.cached);}}else{return wire();}}\noboe.drop=function(){return oboe.drop;};if(typeof define===\"function\"&&define.amd){define(\"oboe\",[],function(){return oboe;});}else if(typeof exports==='object'){module.exports=oboe;}else{window.oboe=oboe;}})((function(){try{return window;}catch(e){return self;}}()),Object,Array,Error,JSON);'use strict';if(tr.isVinn){global.oboe=global.window.oboe;global.window=undefined;}else if(tr.isNode){global.window=undefined;const path=HTMLImportsLoader.hrefToAbsolutePath('/oboe/dist/oboe-node.js');global.oboe=require(path);}'use strict';tr.exportTo('tr.e.importer',function(){const STRING_ID_SUFFIX='_sid';const PLURAL_STRING_ID_SUFFIX='_sids';function isStringReference(s){return s.endsWith(STRING_ID_SUFFIX)||s.endsWith(PLURAL_STRING_ID_SUFFIX);}\nfunction getStringReferenceName(name){if(name.endsWith(PLURAL_STRING_ID_SUFFIX)){return name.slice(0,-PLURAL_STRING_ID_SUFFIX.length);}\nreturn name.slice(0,-STRING_ID_SUFFIX.length);}\nfunction deferenceStrings(idToString,o){const clone=Object.assign({},o);for(const[key,value]of Object.entries(clone)){if(isStringReference(key)){const name=getStringReferenceName(key);clone[name]=idToString(value);}}\nreturn clone;}\nfunction singularize(word){if(word.endsWith('s')){return word.slice(0,-1);}\nreturn word;}\nfunction getMetadataPairs(dataJson){const isMetadata=v=>typeof v!=='object'||Array.isArray(v);const pairs=Object.entries(dataJson);const metadataPairs=pairs.filter(([_,v])=>isMetadata(v));return metadataPairs;}\nfunction getGroupPairs(dataJson){const pairs=Object.entries(dataJson);const nonMapPairs=pairs.filter(([k,_])=>k!=='maps');const groupPairs=nonMapPairs.filter(([_,v])=>typeof v==='object');return groupPairs;}\nfunction createMap(mapJson){const map=new Map();for(const entry of mapJson){if(entry.id===undefined){throw new Error('Missing required key \"id\" in streaming event.');}\nmap.set(entry.id,entry);}\nreturn map;}\nfunction createMaps(mapsJson){const maps=new Map();for(const[name,mapJson]of Object.entries(mapsJson)){maps.set(name,createMap(mapJson));}\nreturn maps;}\nfunction createGroup(groupJson,opt_startTime){const entries=[];const n=Object.values(groupJson)[0].length;for(let i=0;i<n;i++){const entry={};for(const name in groupJson){entry[name]=groupJson[name][i];}\nentries.push(entry);}\nconst timeDelta=groupJson.timeDelta;if(opt_startTime===undefined&&timeDelta!==undefined){throw new Error('Missing required key \"startTime\" in streaming event.');}\nif(opt_startTime){let delta=0;for(const entry of entries){delta+=entry.timeDelta?entry.timeDelta:0;entry.time=opt_startTime+delta;}}\nreturn entries;}\nfunction createGroups(groupsJson,opt_startTime){const groups=new Map();for(const[name,groupJson]of Object.entries(groupsJson)){groups.set(name,createGroup(groupJson,opt_startTime));}\nreturn groups;}\nfunction createMetadata(metadataPairs){const metadata=new Map();for(const[name,value]of metadataPairs){metadata.set(name,value);}\nif(metadata.get('version')===undefined){throw new Error('Missing required key \"version\" in streaming event.');}\nreturn metadata;}\nclass ProfilingDictionaryReader{constructor(opt_metadata,opt_maps,opt_groups,opt_parent){this.metadata=opt_metadata||new Map();this.maps=opt_maps||new Map();this.groups=opt_groups||new Map();this.parent_=opt_parent||undefined;this.inflated_=undefined;this.raw_=undefined;this.boundGetString_=this.getString.bind(this);this.deferenceStrings_=o=>deferenceStrings(this.boundGetString_,o);}\nstatic empty(){return new ProfilingDictionaryReader();}\nget parent(){return this.parent_;}\nget raw(){if(this.raw_)return this.raw_;this.raw_={};for(const[name,group]of this.groups.entries()){this.raw_[name]=group;}\nreturn this.raw_;}\nget inflated(){if(this.inflated_)return this.inflated_;this.inflated_={};for(const[name,group]of this.groups.entries()){this.inflated_[name]=this.inflateGroup(group);}\nreturn this.inflated_;}\ngetNewMap(name){return this.maps.get(name)||new Map();}\ngetMapValue(mapName,id){let value=this.getNewMap(mapName).get(id);if(value===undefined&&this.parent){value=this.parent.getMapValue(mapName,id);}\nreturn value;}\ngetString(id){const value=this.getMapValue('strings',id);if(value===undefined)return undefined;return value.string;}\nhasMap(name){if(this.maps.has(name))return true;if(this.parent===undefined)return false;return this.parent.hasMap(name);}\ninflateGroup(group){return group.map(this.inflateEntry.bind(this));}\ninflateEntry(entry){const inflatedEntry={};for(const[name,value]of Object.entries(entry)){let inflatedValue;if(this.hasMap(name)){const id=value;inflatedValue=this.deferenceStrings_(this.getMapValue(name,id));}else{inflatedValue=value;}\ninflatedEntry[singularize(name)]=inflatedValue;}\nreturn this.deferenceStrings_(inflatedEntry);}\nexpandData(data){const mapsJson=data.maps||{};const groupsJson=data.allocators||{};const metadataPairs=getMetadataPairs(data);const metadata=createMetadata(metadataPairs);const opt_startTime=metadata.get('startTime');const maps=createMaps(mapsJson);const groups=createGroups(groupsJson,opt_startTime);return new ProfilingDictionaryReader(metadata,maps,groups,this);}\nexpandEvent(event){return this.expandData(event.args.data);}}\nreturn{ProfilingDictionaryReader,singularize,deferenceStringsForTest:deferenceStrings,};});'use strict';tr.exportTo('tr.model.source_info',function(){function SourceInfo(file,opt_line,opt_column){this.file_=file;this.line_=opt_line||-1;this.column_=opt_column||-1;}\nSourceInfo.prototype={get file(){return this.file_;},get line(){return this.line_;},get column(){return this.column_;},get domain(){if(!this.file_)return undefined;const domain=this.file_.match(/(.*:\\/\\/[^:\\/]*)/i);return domain?domain[1]:undefined;},toString(){let str='';if(this.file_){str+=this.file_;}\nif(this.line_>0){str+=':'+this.line_;}\nif(this.column_>0){str+=':'+this.column_;}\nreturn str;}};return{SourceInfo,};});'use strict';tr.exportTo('tr.model.source_info',function(){function JSSourceInfo(file,line,column,isNative,scriptId,state){tr.model.source_info.SourceInfo.call(this,file,line,column);this.isNative_=isNative;this.scriptId_=scriptId;this.state_=state;}\nJSSourceInfo.prototype={__proto__:tr.model.source_info.SourceInfo.prototype,get state(){return this.state_;},get isNative(){return this.isNative_;},get scriptId(){return this.scriptId_;},toString(){const str=this.isNative_?'[native v8] ':'';return str+\ntr.model.source_info.SourceInfo.prototype.toString.call(this);}};const JSSourceState={COMPILED:'compiled',OPTIMIZABLE:'optimizable',OPTIMIZED:'optimized',UNKNOWN:'unknown',};return{JSSourceInfo,JSSourceState,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeEntry(address,size,name,scriptId){this.id_=tr.b.GUID.allocateSimple();this.address_=address;this.size_=size;const rePrefix=/^(\\w*:)?([*~]?)(.*)$/m;const tokens=rePrefix.exec(name);const prefix=tokens[1];let state=tokens[2];const body=tokens[3];if(state==='*'){state=tr.model.source_info.JSSourceState.OPTIMIZED;}else if(state==='~'){state=tr.model.source_info.JSSourceState.OPTIMIZABLE;}else if(state===''){state=tr.model.source_info.JSSourceState.COMPILED;}else{state=tr.model.source_info.JSSourceState.UNKNOWN;}\nlet rawName;let rawUrl;if(prefix==='Script:'){rawName='';rawUrl=body;}else{const spacePos=body.lastIndexOf(' ');rawName=spacePos!==-1?body.substr(0,spacePos):body;rawUrl=spacePos!==-1?body.substr(spacePos+1):'';}\nfunction splitLineAndColumn(url){const lineColumnRegEx=/(?::(\\d+))?(?::(\\d+))?$/;const lineColumnMatch=lineColumnRegEx.exec(url);let lineNumber;let columnNumber;if(typeof(lineColumnMatch[1])==='string'){lineNumber=parseInt(lineColumnMatch[1],10);lineNumber=isNaN(lineNumber)?undefined:lineNumber-1;}\nif(typeof(lineColumnMatch[2])==='string'){columnNumber=parseInt(lineColumnMatch[2],10);columnNumber=isNaN(columnNumber)?undefined:columnNumber-1;}\nreturn{url:url.substring(0,url.length-lineColumnMatch[0].length),lineNumber,columnNumber};}\nconst nativeSuffix=' native';const isNative=rawName.endsWith(nativeSuffix);this.name_=isNative?rawName.slice(0,-nativeSuffix.length):rawName;const urlData=splitLineAndColumn(rawUrl);const url=urlData.url||'';const line=urlData.lineNumber||0;const column=urlData.columnNumber||0;this.sourceInfo_=new tr.model.source_info.JSSourceInfo(url,line,column,isNative,scriptId,state);}\nTraceCodeEntry.prototype={get id(){return this.id_;},get sourceInfo(){return this.sourceInfo_;},get name(){return this.name_;},set address(address){this.address_=address;},get address(){return this.address_;},set size(size){this.size_=size;},get size(){return this.size_;}};return{TraceCodeEntry,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeMap(){this.banks_=new Map();}\nTraceCodeMap.prototype={addEntry(addressHex,size,name,scriptId){const entry=new tr.e.importer.TraceCodeEntry(this.getAddress_(addressHex),size,name,scriptId);this.addEntry_(addressHex,entry);},moveEntry(oldAddressHex,newAddressHex,size){const entry=this.getBank_(oldAddressHex).removeEntry(this.getAddress_(oldAddressHex));if(!entry)return;entry.address=this.getAddress_(newAddressHex);entry.size=size;this.addEntry_(newAddressHex,entry);},lookupEntry(addressHex){return this.getBank_(addressHex).lookupEntry(this.getAddress_(addressHex));},addEntry_(addressHex,entry){this.getBank_(addressHex).addEntry(entry);},getAddress_(addressHex){const bankSizeHexDigits=13;addressHex=addressHex.slice(2);return parseInt(addressHex.slice(-bankSizeHexDigits),16);},getBank_(addressHex){addressHex=addressHex.slice(2);const bankSizeHexDigits=13;const maxHexDigits=16;const bankName=addressHex.slice(-maxHexDigits,-bankSizeHexDigits);let bank=this.banks_.get(bankName);if(!bank){bank=new TraceCodeBank();this.banks_.set(bankName,bank);}\nreturn bank;}};function TraceCodeBank(){this.entries_=[];}\nTraceCodeBank.prototype={removeEntry(address){if(this.entries_.length===0)return undefined;const index=tr.b.findLowIndexInSortedArray(this.entries_,function(entry){return entry.address;},address);const entry=this.entries_[index];if(!entry||entry.address!==address)return undefined;this.entries_.splice(index,1);return entry;},lookupEntry(address){const index=tr.b.findFirstTrueIndexInSortedArray(this.entries_,e=>(address<e.address))-1;const entry=this.entries_[index];return entry&&address<entry.address+entry.size?entry:undefined;},addEntry(newEntry){if(this.entries_.length===0){this.entries_.push(newEntry);}\nconst endAddress=newEntry.address+newEntry.size;const lastIndex=tr.b.findLowIndexInSortedArray(this.entries_,function(entry){return entry.address;},endAddress);let index;for(index=lastIndex-1;index>=0;--index){const entry=this.entries_[index];const entryEndAddress=entry.address+entry.size;if(entryEndAddress<=newEntry.address)break;}\n++index;this.entries_.splice(index,lastIndex-index,newEntry);}};return{TraceCodeMap,};});'use strict';tr.exportTo('tr.e.measure',function(){const AsyncSlice=tr.model.AsyncSlice;const MEASURE_NAME_REGEX=/([^\\/:]+):(.*?)(?:\\/([A-Za-z0-9+/]+=?=?))?$/;function MeasureAsyncSlice(){this.groupTitle_='Ungrouped Measure';const matched=MEASURE_NAME_REGEX.exec(arguments[1]);if(matched!==null){arguments[1]=matched[2];this.groupTitle_=matched[1];}\nAsyncSlice.apply(this,arguments);}\nMeasureAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){return this.groupTitle_;},get title(){return this.title_;},set title(title){this.title_=title;}};AsyncSlice.subTypes.register(MeasureAsyncSlice,{categoryParts:['blink.user_timing']});return{MEASURE_NAME_REGEX,MeasureAsyncSlice,};});'use strict';tr.exportTo('tr.importer',function(){function ContextProcessor(model){this.model_=model;this.activeContexts_=[];this.stackPerType_={};this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.seenSnapshots_={};}\nContextProcessor.prototype={enterContext(contextType,scopedId){const newActiveContexts=[this.getOrCreateContext_(contextType,scopedId),];for(const oldContext of this.activeContexts_){if(oldContext.type===contextType){this.pushContext_(oldContext);}else{newActiveContexts.push(oldContext);}}\nthis.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},leaveContext(contextType,scopedId){this.leaveContextImpl_(context=>context.type===contextType&&context.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},destroyContext(scopedId){for(const stack of Object.values(this.stackPerType_)){let newLength=0;for(let i=0;i<stack.length;++i){if(stack[i].snapshot.scope!==scopedId.scope||stack[i].snapshot.idRef!==scopedId.id){stack[newLength++]=stack[i];}}\nstack.length=newLength;}\nthis.leaveContextImpl_(context=>context.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},leaveContextImpl_(predicate){const newActiveContexts=[];for(const oldContext of this.activeContexts_){if(predicate(oldContext)){const previousContext=this.popContext_(oldContext.type);if(previousContext){newActiveContexts.push(previousContext);}}else{newActiveContexts.push(oldContext);}}\nthis.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},getOrCreateContext_(contextType,scopedId){const context={type:contextType,snapshot:{scope:scopedId.scope,idRef:scopedId.id}};const key=this.getContextKey_(context);if(key in this.contextCache_){return this.contextCache_[key];}\nthis.contextCache_[key]=context;const snapshotKey=this.getSnapshotKey_(scopedId);this.seenSnapshots_[snapshotKey]=true;return context;},pushContext_(context){if(!(context.type in this.stackPerType_)){this.stackPerType_[context.type]=[];}\nthis.stackPerType_[context.type].push(context);},popContext_(contextType){if(!(contextType in this.stackPerType_)){return undefined;}\nreturn this.stackPerType_[contextType].pop();},getContextKey_(context){return[context.type,context.snapshot.scope,context.snapshot.idRef].join('\\x00');},getSnapshotKey_(scopedId){return[scopedId.scope,scopedId.idRef].join('\\x00');},get activeContexts(){if(this.cachedEntryForActiveContexts_===undefined){let key=[];for(const context of this.activeContexts_){key.push(this.getContextKey_(context));}\nkey.sort();key=key.join('\\x00');if(key in this.contextSetCache_){this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}else{this.activeContexts_.sort(function(a,b){const keyA=this.getContextKey_(a);const keyB=this.getContextKey_(b);if(keyA<keyB){return-1;}\nif(keyA>keyB){return 1;}\nreturn 0;}.bind(this));this.contextSetCache_[key]=Object.freeze(this.activeContexts_);this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}}\nreturn this.cachedEntryForActiveContexts_;},invalidateContextCacheForSnapshot(scopedId){const snapshotKey=this.getSnapshotKey_(scopedId);if(!(snapshotKey in this.seenSnapshots_))return;this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.activeContexts_=this.activeContexts_.map(function(context){if(context.snapshot.scope!==scopedId.scope||context.snapshot.idRef!==scopedId.id){return context;}\nreturn{type:context.type,snapshot:{scope:context.snapshot.scope,idRef:context.snapshot.idRef}};});this.seenSnapshots_={};},};return{ContextProcessor,};});'use strict';tr.exportTo('tr.model',function(){function Annotation(){this.guid_=tr.b.GUID.allocateSimple();this.view_=undefined;}\nAnnotation.fromDictIfPossible=function(args){if(args.typeName===undefined){throw new Error('Missing typeName argument');}\nconst typeInfo=Annotation.findTypeInfoMatching(function(typeInfo){return typeInfo.metadata.typeName===args.typeName;});if(typeInfo===undefined)return undefined;return typeInfo.constructor.fromDict(args);};Annotation.fromDict=function(){throw new Error('Not implemented');};Annotation.prototype={get guid(){return this.guid_;},onRemove(){},toDict(){throw new Error('Not implemented');},getOrCreateView(viewport){if(!this.view_){this.view_=this.createView_(viewport);}\nreturn this.view_;},createView_(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(Annotation,options);Annotation.addEventListener('will-register',function(e){if(!e.typeInfo.constructor.hasOwnProperty('fromDict')){throw new Error('Must have fromDict method');}\nif(!e.typeInfo.metadata.typeName){throw new Error('Registered Annotations must provide typeName');}});return{Annotation,};});'use strict';tr.exportTo('tr.model',function(){function YComponent(stableId,yPercentOffset){this.stableId=stableId;this.yPercentOffset=yPercentOffset;}\nYComponent.prototype={toDict(){return{stableId:this.stableId,yPercentOffset:this.yPercentOffset};}};function Location(xWorld,yComponents){this.xWorld_=xWorld;this.yComponents_=yComponents;}\nLocation.fromViewCoordinates=function(viewport,viewX,viewY){const dt=viewport.currentDisplayTransform;const xWorld=dt.xViewToWorld(viewX);const yComponents=[];let elem=document.elementFromPoint(viewX+viewport.modelTrackContainer.canvas.offsetLeft,viewY+viewport.modelTrackContainer.canvas.offsetTop);while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(viewY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}\nelem=elem.parentElement;}\nif(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.fromStableIdAndTimestamp=function(viewport,stableId,ts){const xWorld=ts;const yComponents=[];const containerToTrack=viewport.containerToTrackMap;let elem=containerToTrack.getTrackByStableId(stableId);if(!elem)return;const firstY=elem.getBoundingClientRect().top;while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(firstY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}\nelem=elem.parentElement;}\nif(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.prototype={get xWorld(){return this.xWorld_;},getContainingTrack(viewport){const containerToTrack=viewport.containerToTrackMap;for(const i in this.yComponents_){const yComponent=this.yComponents_[i];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined)return track;}},toViewCoordinates(viewport){const dt=viewport.currentDisplayTransform;const containerToTrack=viewport.containerToTrackMap;const viewX=dt.xWorldToView(this.xWorld_);let viewY=-1;for(const index in this.yComponents_){const yComponent=this.yComponents_[index];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined){const boundRect=track.getBoundingClientRect();viewY=yComponent.yPercentOffset*boundRect.height+boundRect.top;break;}}\nreturn{viewX,viewY};},toDict(){return{xWorld:this.xWorld_,yComponents:this.yComponents_};}};return{Location,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function AnnotationView(viewport,annotation){}\nAnnotationView.prototype={draw(ctx){throw new Error('Not implemented');}};return{AnnotationView,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function RectAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;}\nRectAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,draw(ctx){const dt=this.viewport_.currentDisplayTransform;const startCoords=this.annotation_.startLocation.toViewCoordinates(this.viewport_);const endCoords=this.annotation_.endLocation.toViewCoordinates(this.viewport_);let startY=startCoords.viewY-ctx.canvas.getBoundingClientRect().top;const sizeY=endCoords.viewY-startCoords.viewY;if(startY+sizeY<0){startY=sizeY;}else if(startY<0){startY=0;}\nctx.fillStyle=this.annotation_.fillStyle;ctx.fillRect(startCoords.viewX,startY,endCoords.viewX-startCoords.viewX,sizeY);}};return{RectAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function RectAnnotation(start,end){tr.model.Annotation.apply(this,arguments);this.startLocation_=start;this.endLocation_=end;this.fillStyle='rgba(255, 180, 0, 0.3)';}\nRectAnnotation.fromDict=function(dict){const args=dict.args;const startLoc=new tr.model.Location(args.start.xWorld,args.start.yComponents);const endLoc=new tr.model.Location(args.end.xWorld,args.end.yComponents);return new tr.model.RectAnnotation(startLoc,endLoc);};RectAnnotation.prototype={__proto__:tr.model.Annotation.prototype,get startLocation(){return this.startLocation_;},get endLocation(){return this.endLocation_;},toDict(){return{typeName:'rect',args:{start:this.startLocation.toDict(),end:this.endLocation.toDict()}};},createView_(viewport){return new tr.ui.annotations.RectAnnotationView(viewport,this);}};tr.model.Annotation.register(RectAnnotation,{typeName:'rect'});return{RectAnnotation,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function CommentBoxAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;this.textArea_=undefined;this.styleWidth=250;this.styleHeight=50;this.fontSize=10;this.rightOffset=50;this.topOffset=25;}\nCommentBoxAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,removeTextArea(){Polymer.dom(Polymer.dom(this.textArea_).parentNode).removeChild(this.textArea_);},draw(ctx){const coords=this.annotation_.location.toViewCoordinates(this.viewport_);if(coords.viewX<0){if(this.textArea_){this.textArea_.style.visibility='hidden';}\nreturn;}\nif(!this.textArea_){this.textArea_=document.createElement('textarea');this.textArea_.style.position='absolute';this.textArea_.readOnly=true;this.textArea_.value=this.annotation_.text;this.textArea_.style.zIndex=1;Polymer.dom(Polymer.dom(ctx.canvas).parentNode).appendChild(this.textArea_);}\nthis.textArea_.style.width=this.styleWidth+'px';this.textArea_.style.height=this.styleHeight+'px';this.textArea_.style.fontSize=this.fontSize+'px';this.textArea_.style.visibility='visible';this.textArea_.style.left=coords.viewX+ctx.canvas.getBoundingClientRect().left+\nthis.rightOffset+'px';this.textArea_.style.top=coords.viewY-ctx.canvas.getBoundingClientRect().top-\nthis.topOffset+'px';ctx.strokeStyle='rgb(0, 0, 0)';ctx.lineWidth=2;ctx.beginPath();tr.ui.b.drawLine(ctx,coords.viewX,coords.viewY-ctx.canvas.getBoundingClientRect().top,coords.viewX+this.rightOffset,coords.viewY-this.topOffset-\nctx.canvas.getBoundingClientRect().top);ctx.stroke();}};return{CommentBoxAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function CommentBoxAnnotation(location,text){tr.model.Annotation.apply(this,arguments);this.location=location;this.text=text;}\nCommentBoxAnnotation.fromDict=function(dict){const args=dict.args;const location=new tr.model.Location(args.location.xWorld,args.location.yComponents);return new tr.model.CommentBoxAnnotation(location,args.text);};CommentBoxAnnotation.prototype={__proto__:tr.model.Annotation.prototype,onRemove(){this.view_.removeTextArea();},toDict(){return{typeName:'comment_box',args:{text:this.text,location:this.location.toDict()}};},createView_(viewport){return new tr.ui.annotations.CommentBoxAnnotationView(viewport,this);}};tr.model.Annotation.register(CommentBoxAnnotation,{typeName:'comment_box'});return{CommentBoxAnnotation,};});'use strict';tr.exportTo('tr.model',function(){function ScopedId(scope,id,pid){if(scope===undefined){throw new Error('Scope should be defined. Use \\''+\ntr.model.OBJECT_DEFAULT_SCOPE+'\\' as the default scope.');}\nthis.scope=scope;this.id=id;this.pid=pid;}\nScopedId.prototype={toString(){const pidStr=this.pid===undefined?'':'pid: '+this.pid+', ';return'{'+pidStr+'scope: '+this.scope+', id: '+this.id+'}';},toStringWithDelimiter(delim){return(this.pid===undefined?'':this.pid)+delim+\nthis.scope+delim+this.id;}};return{ScopedId,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function XMarkerAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;}\nXMarkerAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,draw(ctx){const dt=this.viewport_.currentDisplayTransform;const viewX=dt.xWorldToView(this.annotation_.timestamp);ctx.beginPath();tr.ui.b.drawLine(ctx,viewX,0,viewX,ctx.canvas.height);ctx.strokeStyle=this.annotation_.strokeStyle;ctx.stroke();}};return{XMarkerAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function XMarkerAnnotation(timestamp){tr.model.Annotation.apply(this,arguments);this.timestamp=timestamp;this.strokeStyle='rgba(0, 0, 255, 0.5)';}\nXMarkerAnnotation.fromDict=function(dict){return new XMarkerAnnotation(dict.args.timestamp);};XMarkerAnnotation.prototype={__proto__:tr.model.Annotation.prototype,toDict(){return{typeName:'xmarker',args:{timestamp:this.timestamp}};},createView_(viewport){return new tr.ui.annotations.XMarkerAnnotationView(viewport,this);}};tr.model.Annotation.register(XMarkerAnnotation,{typeName:'xmarker'});return{XMarkerAnnotation,};});'use strict';tr.exportTo('tr.e.importer',function(){const Base64=tr.b.Base64;const deepCopy=tr.b.deepCopy;const ColorScheme=tr.b.ColorScheme;const HeapDumpTraceEventImporter=tr.e.importer.HeapDumpTraceEventImporter;const LegacyHeapDumpTraceEventImporter=tr.e.importer.LegacyHeapDumpTraceEventImporter;const StreamingEventExpander=tr.e.importer.StreamingEventExpander;const ProfilingDictionaryReader=tr.e.importer.ProfilingDictionaryReader;const MEASURE_NAME_REGEX=tr.e.measure.MEASURE_NAME_REGEX;function getEventColor(event,opt_customName){if(event.cname){return ColorScheme.getColorIdForReservedName(event.cname);}else if(opt_customName||event.name){return ColorScheme.getColorIdForGeneralPurposeString(opt_customName||event.name);}}\nfunction isLegacyChromeClockSyncEvent(event){return event.name!==undefined&&event.name.startsWith(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX)&&((event.ph==='S')||(event.ph==='F'));}\nconst PRODUCER='producer';const CONSUMER='consumer';const STEP='step';const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER=[undefined,BACKGROUND,LIGHT,DETAILED];const GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX='global/';const LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX='ClockSyncEvent.';const BYTE_STAT_NAME_MAP={'pc':'privateCleanResident','pd':'privateDirtyResident','sc':'sharedCleanResident','sd':'sharedDirtyResident','pss':'proportionalResident','sw':'swapped'};const WEAK_MEMORY_ALLOCATOR_DUMP_FLAG=1<<0;const OBJECT_TYPE_NAME_PATTERNS=[{prefix:'const char *WTF::getStringWithTypeName() [T = ',suffix:']'},{prefix:'const char* WTF::getStringWithTypeName() [with T = ',suffix:']'},{prefix:'const char *__cdecl WTF::getStringWithTypeName<',suffix:'>(void)'}];const SUBTRACE_FIELDS=new Set(['powerTraceAsString','systemTraceEvents','androidProcessDump','cgroupDump',]);const NON_METADATA_FIELDS=new Set(['displayTimeUnit','samples','stackFrames','traceAnnotations','traceEvents',...SUBTRACE_FIELDS]);function TraceEventImporter(model,eventData){this.hasEvents_=undefined;this.importPriority=1;this.model_=model;this.events_=undefined;this.sampleEvents_=undefined;this.stackFrameEvents_=undefined;this.stackFrameTree_=new tr.model.ProfileTree();this.subtraces_=[];this.eventsWereFromString_=false;this.softwareMeasuredCpuCount_=undefined;this.allAsyncEvents_=[];this.allFlowEvents_=[];this.allObjectEvents_=[];this.contextProcessorPerThread={};this.traceEventSampleStackFramesByName_={};this.v8ProcessCodeMaps_={};this.v8ProcessRootStackFrame_={};this.v8SamplingData_=[];this.profileTrees_=new Map();this.profileInfo_=new Map();this.legacyChromeClockSyncStartEvent_=undefined;this.legacyChromeClockSyncFinishEvent_=undefined;this.allMemoryDumpEvents_={};this.heapProfileExpander=new ProfilingDictionaryReader();this.objectTypeNameMap_={};this.clockDomainId_=tr.model.ClockDomainId.UNKNOWN_CHROME_LEGACY;this.toModelTime_=undefined;if(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();if(eventData[0]==='['){eventData=eventData.replace(/\\s*,\\s*$/,'');if(eventData[eventData.length-1]!==']'){eventData=eventData+']';}}\nthis.events_=JSON.parse(eventData);this.eventsWereFromString_=true;}else{this.events_=eventData;}\nif(this.events_.traceEvents){const container=this.events_;this.events_=this.events_.traceEvents;for(const subtraceField of SUBTRACE_FIELDS){if(container[subtraceField]){this.storeSubtrace_(container[subtraceField]);}}\nthis.storeSamples_(container.samples);this.storeStackFrames_(container.stackFrames);this.storeDisplayTimeUnit_(container.displayTimeUnit);this.storeTraceAnnotations_(container.traceAnnotations);this.storeMetadata_(container);}else if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',function(e){return oboe.drop;}).node('!.powerTraceAsString',this.storeSubtrace_.bind(this)).node('!.systemTraceEvents',this.storeSubtrace_.bind(this)).node('!.samples',this.storeSamples_.bind(this)).node('!.stackFrames',this.storeStackFrames_.bind(this)).node('!.displayTimeUnit',this.storeDisplayTimeUnit_.bind(this)).node('!.traceAnnotations',this.storeTraceAnnotations_.bind(this)).done(this.storeMetadata_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}}\nTraceEventImporter.canImport=function(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;}\nif(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();return eventData[0]==='{'||eventData[0]==='[';}\nif(eventData instanceof Array&&eventData.length&&eventData[0].ph){return true;}\nif(eventData.traceEvents){if(eventData.traceEvents instanceof Array){if(eventData.traceEvents.length&&eventData.traceEvents[0].ph){return true;}\nif(eventData.samples&&eventData.samples.length&&eventData.stackFrames!==undefined){return true;}}}\nreturn false;};TraceEventImporter.scopedIdForEvent_=function(event){const scope=event.scope||tr.model.OBJECT_DEFAULT_SCOPE;let pid=undefined;if(event.id!==undefined){if(event.id2!==undefined){throw new Error('Event has both id and id2');}\npid=tr.model.LOCAL_ID_PHASES.has(event.ph)?event.pid:undefined;return new tr.model.ScopedId(scope,event.id,pid);}else if(event.id2!==undefined){if(event.id2.global!==undefined){return new tr.model.ScopedId(scope,event.id2.global);}else if(event.id2.local!==undefined){return new tr.model.ScopedId(scope,event.id2.local,event.pid);}\nthrow new Error('Event that uses id2 must have either a global or local ID');}\nreturn undefined;};TraceEventImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'TraceEventImporter';},extractSubtraces(){const subtraces=this.subtraces_;this.subtraces_=[];return subtraces;},deepCopyIfNeeded_(obj){if(obj===undefined)obj={};if(this.eventsWereFromString_)return obj;return deepCopy(obj);},deepCopyAlways_(obj){if(obj===undefined)obj={};return deepCopy(obj);},processAsyncEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allAsyncEvents_.push({sequenceNumber:this.allAsyncEvents_.length,event,thread});},processFlowEvent(event,opt_slice){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allFlowEvents_.push({refGuid:tr.b.GUID.getLastSimpleGuid(),sequenceNumber:this.allFlowEvents_.length,event,slice:opt_slice,thread});},processCounterEvent(event){let ctrName;if(event.id!==undefined){ctrName=event.name+'['+event.id+']';}else{ctrName=event.name;}\nconst ctr=this.model_.getOrCreateProcess(event.pid).getOrCreateCounter(event.cat,ctrName);const reservedColorId=event.cname?getEventColor(event):undefined;if(ctr.numSeries===0){for(const seriesName in event.args){const colorId=reservedColorId||getEventColor(event,ctr.name+'.'+seriesName);ctr.addSeries(new tr.model.CounterSeries(seriesName,colorId));}\nif(ctr.numSeries===0){this.model_.importWarning({type:'counter_parse_error',message:'Expected counter '+event.name+' to have at least one argument to use as a value.'});delete ctr.parent.counters[ctr.name];return;}}\nconst ts=this.toModelTimeFromUs_(event.ts);ctr.series.forEach(function(series){const val=event.args[series.name]?event.args[series.name]:0;series.addCounterSample(ts,val);});},processObjectEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allObjectEvents_.push({sequenceNumber:this.allObjectEvents_.length,event,thread});if(thread.guid in this.contextProcessorPerThread){const processor=this.contextProcessorPerThread[thread.guid];const scopedId=TraceEventImporter.scopedIdForEvent_(event);if(event.ph==='D'){processor.destroyContext(scopedId);}\nprocessor.invalidateContextCacheForSnapshot(scopedId);}},processContextEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(!(thread.guid in this.contextProcessorPerThread)){this.contextProcessorPerThread[thread.guid]=new tr.importer.ContextProcessor(this.model_);}\nconst scopedId=TraceEventImporter.scopedIdForEvent_(event);const contextType=event.name;const processor=this.contextProcessorPerThread[thread.guid];if(event.ph==='('){processor.enterContext(contextType,scopedId);}else if(event.ph===')'){processor.leaveContext(contextType,scopedId);}else{this.model_.importWarning({type:'unknown_context_phase',message:'Unknown context event phase: '+event.ph+'.'});}},setContextsFromThread_(thread,slice){if(thread.guid in this.contextProcessorPerThread){slice.contexts=this.contextProcessorPerThread[thread.guid].activeContexts;}},processDurationEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);const ts=this.toModelTimeFromUs_(event.ts);if(event.dur===0&&!thread.sliceGroup.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'duration_parse_error',message:'Timestamps are moving backward.'});return;}\nif(event.ph==='B'){const slice=thread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);this.setContextsFromThread_(thread,slice);}else if(event.ph==='I'||event.ph==='i'||event.ph==='R'){if(event.s!==undefined&&event.s!=='t'){throw new Error('This should never happen');}\nthread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);const slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts));slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=undefined;}else{if(!thread.sliceGroup.openSliceCount){this.model_.importWarning({type:'duration_parse_error',message:'E phase event without a matching B phase event.'});return;}\nconst slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts),getEventColor(event));if(event.name&&slice.title!==event.name){this.model_.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+\nslice.title+' in openSlice, and is '+\nevent.name+' in endSlice'});}\nslice.endStackFrame=this.getStackFrameForEvent_(event);this.mergeArgsInto_(slice.args,event.args,slice.title);}},mergeArgsInto_(dstArgs,srcArgs,eventName){for(const arg in srcArgs){if(dstArgs[arg]!==undefined){this.model_.importWarning({type:'arg_merge_error',message:'Different phases of '+eventName+' provided values for argument '+arg+'.'+' The last provided value will be used.'});}\ndstArgs[arg]=this.deepCopyIfNeeded_(srcArgs[arg]);}},processCompleteEvent(event){if(event.cat!==undefined&&event.cat.indexOf('trace_event_overhead')>-1){return undefined;}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(event.flow_out){if(event.flow_in){event.flowPhase=STEP;}else{event.flowPhase=PRODUCER;}}else if(event.flow_in){event.flowPhase=CONSUMER;}\nconst slice=thread.sliceGroup.pushCompleteSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.durationFromUs_(event.dur),this.maybeToModelTimeFromUs_(event.tts),this.durationFromUs_(event.tdur),this.deepCopyIfNeeded_(event.args),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=this.getStackFrameForEvent_(event,true);this.setContextsFromThread_(thread,slice);return slice;},processJitCodeEvent(event){if(this.v8ProcessCodeMaps_[event.pid]===undefined){this.v8ProcessCodeMaps_[event.pid]=new tr.e.importer.TraceCodeMap();}\nconst map=this.v8ProcessCodeMaps_[event.pid];const data=event.args.data;if(event.name==='JitCodeMoved'){map.moveEntry(data.code_start,data.new_code_start,data.code_len);}else{map.addEntry(data.code_start,data.code_len,data.name,data.script_id);}},processMetadataEvent(event){if(event.name==='JitCodeAdded'||event.name==='JitCodeMoved'){this.v8SamplingData_.push(event);return;}\nif(event.argsStripped)return;if(event.name==='process_name'){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.args.name;}else if(event.name==='process_labels'){const process=this.model_.getOrCreateProcess(event.pid);const stackFrames=event.args.stackFrames;if(event.args.labels===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No labels found in a \\''+event.name+'\\' metadata event'});}else{const labels=event.args.labels.split(',');for(let i=0;i<labels.length;i++){process.addLabelIfNeeded(labels[i]);}}}else if(event.name==='process_uptime_seconds'){const process=this.model_.getOrCreateProcess(event.pid);process.uptime_seconds=event.args.uptime;}else if(event.name==='process_sort_index'){const process=this.model_.getOrCreateProcess(event.pid);process.sortIndex=event.args.sort_index;}else if(event.name==='thread_name'){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.name=event.args.name;}else if(event.name==='thread_sort_index'){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.sortIndex=event.args.sort_index;}else if(event.name==='num_cpus'){let n=event.args.number;if(this.softwareMeasuredCpuCount_!==undefined){n=Math.max(n,this.softwareMeasuredCpuCount_);}\nthis.softwareMeasuredCpuCount_=n;}else if(event.name==='stackFrames'){const stackFrames=event.args.stackFrames;if(stackFrames===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No stack frames found in a \\''+event.name+'\\' metadata event'});}else{this.importStackFrames_(stackFrames,'p'+event.pid+':');}}else if(event.name==='typeNames'){const objectTypeNameMap=event.args.typeNames;if(objectTypeNameMap===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No mapping from object type IDs to names found in a \\''+\nevent.name+'\\' metadata event'});}else{this.importObjectTypeNameMap_(objectTypeNameMap,event.pid);}}else if(event.name==='TraceConfig'){this.model_.metadata.push({name:'TraceConfig',value:event.args.value});}else{this.model_.importWarning({type:'metadata_parse_error',message:'Unrecognized metadata name: '+event.name});}},processInstantEvent(event){if(event.name==='JitCodeAdded'||event.name==='JitCodeMoved'){this.v8SamplingData_.push(event);return;}\nif(event.s==='t'||event.s===undefined){this.processDurationEvent(event);return;}\nlet constructor;let parent;switch(event.s){case'g':constructor=tr.model.GlobalInstantEvent;parent=this.model_;break;case'p':constructor=tr.model.ProcessInstantEvent;parent=this.model_.getOrCreateProcess(event.pid);break;default:this.model_.importWarning({type:'instant_parse_error',message:'I phase event with unknown \"s\" field value.'});return;}\nconst instantEvent=new constructor(event.cat,event.name,getEventColor(event),this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),parent);parent.instantEvents.push(instantEvent);},getOrCreateProfileTree_(sampleType,id){if(!this.profileTrees_.has(sampleType)){this.profileTrees_.set(sampleType,new Map());}\nconst profileTreeMap=this.profileTrees_.get(sampleType);if(profileTreeMap.has(id)){return profileTreeMap.get(id);}\nconst profileTree=new tr.model.ProfileTree();profileTreeMap.set(id,profileTree);const info=this.profileInfo_.get(id);if(info!==undefined){profileTree.startTime=info.startTime;profileTree.pid=info.pid;profileTree.tid=info.tid;}\nreturn profileTree;},processSample(event){if(event.args===undefined||event.args.data===undefined){return;}\nif(event.id===undefined){throw new Error('No event ID in sample');}\nconst data=event.args.data;if(data.startTime!==undefined){this.profileInfo_.set(event.id,{startTime:data.startTime,pid:event.pid,tid:event.tid});}\nconst timeDeltas=data.timeDeltas;for(const sampleType in data){if(sampleType==='timeDeltas'||sampleType==='startTime'){continue;}\nif(data[sampleType].samples&&timeDeltas&&data[sampleType].samples.length!==timeDeltas.length){throw new Error('samples and timeDeltas array should have same length');}\nconst profileTree=this.getOrCreateProfileTree_(sampleType,event.id);const nodes=data[sampleType].nodes;const samples=data[sampleType].samples;if(nodes!==undefined){for(const node of nodes){const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,sampleType);const profileNode=ProfileNodeType.constructFromObject(profileTree,node);if(profileNode===undefined){continue;}\nprofileTree.add(profileNode);}}\nif(samples!==undefined){const thread=this.model_.getOrCreateProcess(profileTree.pid).getOrCreateThread(profileTree.tid);for(let i=0,len=samples.length;i<len;++i){const node=profileTree.getNode(samples[i]);profileTree.endTime+=timeDeltas[i];if(node===undefined)continue;const start=this.toModelTimeFromUs_(profileTree.endTime);this.model_.samples.push(new tr.model.Sample(start,node.sampleTitle,node,thread));}}}},processLegacyV8Sample(event){const data=event.args.data;const sampleType='legacySample';const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,sampleType);if(data.vm_state==='js'&&!data.stack.length)return;const profileTree=this.getOrCreateProfileTree_(sampleType,event.pid);if(profileTree.getNode(-1)===undefined){profileTree.add(new ProfileNodeType(-1,{url:'',scriptId:-1,functionName:'unknown'},undefined));}\nlet node=undefined;if(data.stack.length>0&&this.v8ProcessCodeMaps_[event.pid]){const map=this.v8ProcessCodeMaps_[event.pid];data.stack.reverse();let parentNode=undefined;for(let i=0;i<data.stack.length;i++){const entry=map.lookupEntry(data.stack[i]);if(entry===undefined){node=profileTree.getNode(-1);}else{node=profileTree.getNode(entry.id);if(node===undefined){const sourceInfo=entry.sourceInfo;node=new ProfileNodeType(entry.id,{functionName:entry.name,url:entry.sourceInfo.file,lineNumber:sourceInfo.line!==-1?sourceInfo.line:undefined,columnNumber:sourceInfo.column!==-1?sourceInfo.column:undefined,scriptid:entry.sourceInfo.scriptId},parentNode);profileTree.add(node);}}\nparentNode=node;}}else{node=profileTree.getNode(data.vm_state);if(node===undefined){node=new ProfileNodeType(data.vm_state,{url:'',functionName:data.vm_state},undefined);profileTree.add(node);}}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.model_.samples.push(new tr.model.Sample(this.toModelTimeFromUs_(event.ts),node.sampleTitle,node,thread));},processTraceSampleEvent(event){if(event.name==='V8Sample'||event.name.startsWith('Profile')){this.v8SamplingData_.push(event);return;}\nlet node=this.stackFrameTree_.getNode(event.name);if(node===undefined&&event.sf!==undefined){node=this.stackFrameTree_.getNode('g'+event.sf);}\nif(node===undefined){let id=event.name;if(event.sf){id='g'+event.sf;}\nconst ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');node=this.stackFrameTree_.add(new ProfileNodeType(id,{functionName:event.name},undefined));}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);const sample=new tr.model.Sample(this.toModelTimeFromUs_(event.ts),'Trace Event Sample',node,thread,undefined,1,this.deepCopyIfNeeded_(event.args));this.setContextsFromThread_(thread,sample);this.model_.samples.push(sample);},processMemoryDumpEvent(event){if(event.ph!=='v'){throw new Error('Invalid memory dump event phase \"'+event.ph+'\".');}\nconst dumpId=event.id;if(dumpId===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory dump event (phase \\''+event.ph+'\\') without a dump ID.'});return;}\nconst pid=event.pid;if(pid===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory dump event (phase\\''+event.ph+'\\', dump ID \\''+\ndumpId+'\\') without a PID.'});return;}\nconst allEvents=this.allMemoryDumpEvents_;let dumpIdEvents=allEvents[dumpId];if(dumpIdEvents===undefined){allEvents[dumpId]=dumpIdEvents={};}\nlet processEvents=dumpIdEvents[pid];if(processEvents===undefined){dumpIdEvents[pid]=processEvents=[];}\nprocessEvents.push(event);},processClockSyncEvent(event){if(event.ph!=='c'){throw new Error('Invalid clock sync event phase \"'+event.ph+'\".');}\nconst syncId=event.args.sync_id;if(syncId===undefined){this.model_.importWarning({type:'clock_sync_parse_error',message:'Clock sync at time '+event.ts+' without an ID.'});return;}\nif(event.args&&event.args.issue_ts!==undefined){this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,syncId,tr.b.Unit.timestampFromUs(event.args.issue_ts),tr.b.Unit.timestampFromUs(event.ts));}else{this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,syncId,tr.b.Unit.timestampFromUs(event.ts));}},processLegacyChromeClockSyncEvent(event){if(event.ph==='S'){this.legacyChromeClockSyncStartEvent_=event;}else if(event.ph==='F'){this.legacyChromeClockSyncFinishEvent_=event;}\nif(this.legacyChromeClockSyncStartEvent_===undefined||this.legacyChromeClockSyncFinishEvent_===undefined){return;}\nconst startSyncId=this.legacyChromeClockSyncStartEvent_.name.substring(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX.length);const finishSyncId=this.legacyChromeClockSyncFinishEvent_.name.substring(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX.length);if(startSyncId!==finishSyncId){throw new Error('Inconsistent clock sync ID of legacy Chrome clock sync events');}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,startSyncId,tr.b.Unit.timestampFromUs(this.legacyChromeClockSyncStartEvent_.ts),tr.b.Unit.timestampFromUs(this.legacyChromeClockSyncFinishEvent_.ts));},processV8Events(){this.v8SamplingData_.sort(function(a,b){if(a.ts!==b.ts)return a.ts-b.ts;if(a.ph==='M'||a.ph==='I'){return-1;}else if(b.ph==='M'||b.ph==='I'){return 1;}\nreturn 0;});const length=this.v8SamplingData_.length;for(let i=0;i<length;++i){const event=this.v8SamplingData_[i];if(event.ph==='M'||event.ph==='I'){this.processJitCodeEvent(event);}else if(event.ph==='P'){if(event.name.startsWith('Profile')){this.processSample(event);}else{this.processLegacyV8Sample(event);}}}},importClockSyncMarkers(){if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',this.importClockSyncMarker_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}else{for(let i=0;i<this.events_.length;i++){this.importClockSyncMarker_(this.events_[i]);}}},importClockSyncMarker_(event){const isLegacyChromeClockSync=isLegacyChromeClockSyncEvent(event);if(event.ph!=='c'&&!isLegacyChromeClockSync)return;const eventSizeInBytes=this.model_.importOptions.trackDetailedModelStats?JSON.stringify(event).length:undefined;this.model_.stats.willProcessBasicTraceEvent('clock_sync',event.cat,event.name,event.ts,eventSizeInBytes);if(isLegacyChromeClockSync){this.processLegacyChromeClockSyncEvent(event);}else{this.processClockSyncEvent(event);}},importEvents(){this.hasEvents_=false;if(this.stackFrameEvents_){this.importStackFrames_(this.stackFrameEvents_,'g');}\nif(this.traceAnnotations_)this.importAnnotations_();if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',this.processEvent_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}else{for(let eI=0;eI<this.events_.length;eI++){this.processEvent_(this.events_[eI]);}}\nthis.createAsyncSlices_();this.processV8Events();for(const frame of Object.values(this.v8ProcessRootStackFrame_)){frame.removeAllChildren();}},storeSubtrace_(subtrace){this.subtraces_.push(subtrace);return oboe.drop;},storeSamples_(samples){this.sampleEvents_=samples;return oboe.drop;},storeStackFrames_(stackFrames){this.stackFrameEvents_=stackFrames;return oboe.drop;},storeDisplayTimeUnit_(unitName){if(!unitName)return;const unit=tr.b.TimeDisplayModes[unitName];if(unit===undefined){throw new Error('Unit '+unitName+' is not supported.');}\nthis.model_.intrinsicTimeUnit=unit;return oboe.drop;},storeTraceAnnotations_(traceAnnotations){this.traceAnnotations_=traceAnnotations;return oboe.drop;},storeMetadata_(container){for(const fieldName of Object.keys(container)){if(NON_METADATA_FIELDS.has(fieldName))continue;this.model_.metadata.push({name:fieldName,value:container[fieldName]});if(fieldName!=='metadata')continue;const metadata=container[fieldName];if(metadata['highres-ticks']){this.model_.isTimeHighResolution=metadata['highres-ticks'];}\nif(metadata['clock-domain']){this.clockDomainId_=metadata['clock-domain'];}}\nreturn oboe.drop;},processEvent_(event){this.hasEvents_=true;const importOptions=this.model_.importOptions;const trackDetailedModelStats=importOptions.trackDetailedModelStats;const modelStats=this.model_.stats;if(event.args==='__stripped__'){event.argsStripped=true;event.args=undefined;}\nlet eventSizeInBytes=undefined;if(trackDetailedModelStats){eventSizeInBytes=JSON.stringify(event).length;}\nswitch(event.ph){case'B':case'E':modelStats.willProcessBasicTraceEvent('begin_end (non-compact)',event.cat,event.name,event.ts,eventSizeInBytes);this.processDurationEvent(event);break;case'X':{modelStats.willProcessBasicTraceEvent('begin_end (compact)',event.cat,event.name,event.ts,eventSizeInBytes);const slice=this.processCompleteEvent(event);if(slice!==undefined&&event.bind_id!==undefined){this.processFlowEvent(event,slice);}\nbreak;}\ncase'b':case'e':case'n':case'S':case'F':case'T':case'p':modelStats.willProcessBasicTraceEvent('async',event.cat,event.name,event.ts,eventSizeInBytes);this.processAsyncEvent(event);break;case'I':case'i':case'R':modelStats.willProcessBasicTraceEvent('instant',event.cat,event.name,event.ts,eventSizeInBytes);this.processInstantEvent(event);break;case'P':modelStats.willProcessBasicTraceEvent('samples',event.cat,event.name,event.ts,eventSizeInBytes);this.processTraceSampleEvent(event);break;case'C':modelStats.willProcessBasicTraceEvent('counters',event.cat,event.name,event.ts,eventSizeInBytes);this.processCounterEvent(event);break;case'M':modelStats.willProcessBasicTraceEvent('metadata',event.cat,event.name,event.ts,eventSizeInBytes);this.processMetadataEvent(event);break;case'N':case'D':case'O':modelStats.willProcessBasicTraceEvent('objects',event.cat,event.name,event.ts,eventSizeInBytes);this.processObjectEvent(event);break;case's':case't':case'f':modelStats.willProcessBasicTraceEvent('flows',event.cat,event.name,event.ts,eventSizeInBytes);this.processFlowEvent(event);break;case'v':modelStats.willProcessBasicTraceEvent('memory_dumps',event.cat,event.name,event.ts,eventSizeInBytes);this.processMemoryDumpEvent(event);break;case'(':case')':this.processContextEvent(event);break;case'c':break;default:modelStats.willProcessBasicTraceEvent('unknown',event.cat,event.name,event.ts,eventSizeInBytes);this.model_.importWarning({type:'parse_error',message:'Unrecognized event phase: '+\nevent.ph+' ('+event.name+')'});}\nreturn oboe.drop;},importStackFrames_(rawStackFrames,idPrefix){const model=this.model_;for(const id in rawStackFrames){const rawStackFrame=rawStackFrames[id];const fullId=idPrefix+id;const textForColor=rawStackFrame.category?rawStackFrame.category:rawStackFrame.name;const stackFrame=new tr.model.StackFrame(undefined,fullId,rawStackFrame.name,ColorScheme.getColorIdForGeneralPurposeString(textForColor));model.addStackFrame(stackFrame);}\nfor(const id in rawStackFrames){const fullId=idPrefix+id;const stackFrame=model.stackFrames[fullId];if(stackFrame===undefined){throw new Error('Internal error');}\nconst rawStackFrame=rawStackFrames[id];const parentId=rawStackFrame.parent;let parentStackFrame;if(parentId===undefined){parentStackFrame=undefined;}else{const parentFullId=idPrefix+parentId;parentStackFrame=model.stackFrames[parentFullId];if(parentStackFrame===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'Missing parent frame with ID '+parentFullId+' for stack frame \\''+stackFrame.name+'\\' (ID '+fullId+').'});}}\nstackFrame.parentFrame=parentStackFrame;}\nconst ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');if(idPrefix==='g'){for(const id in rawStackFrames){const rawStackFrame=rawStackFrames[id];const textForColor=rawStackFrame.category?rawStackFrame.category:rawStackFrame.name;const node=this.stackFrameTree_.add(new ProfileNodeType('g'+id,{functionName:rawStackFrame.name},undefined));node.colorId=ColorScheme.getColorIdForGeneralPurposeString(textForColor);node.parentId=rawStackFrame.parent;}\nfor(const id in rawStackFrames){const node=this.stackFrameTree_.getNode('g'+id);const parentId=node.parentId;let parentNode=undefined;if(parentId!==undefined){parentNode=this.stackFrameTree_.getNode('g'+parentId);if(parentNode===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'Missing parent frame with ID '+parentId+' for stack frame \\''+node.name+'\\' (ID '+node.id+').'});}\nnode.parentNode=parentNode;}}}},importObjectTypeNameMap_(rawObjectTypeNameMap,pid){if(pid in this.objectTypeNameMap_){this.model_.importWarning({type:'metadata_parse_error',message:'Mapping from object type IDs to names provided for pid='+\npid+' multiple times.'});return;}\nlet objectTypeNamePrefix=undefined;let objectTypeNameSuffix=undefined;const objectTypeNameMap={};for(const objectTypeId in rawObjectTypeNameMap){const rawObjectTypeName=rawObjectTypeNameMap[objectTypeId];if(objectTypeNamePrefix===undefined){for(let i=0;i<OBJECT_TYPE_NAME_PATTERNS.length;i++){const pattern=OBJECT_TYPE_NAME_PATTERNS[i];if(rawObjectTypeName.startsWith(pattern.prefix)&&rawObjectTypeName.endsWith(pattern.suffix)){objectTypeNamePrefix=pattern.prefix;objectTypeNameSuffix=pattern.suffix;break;}}}\nif(objectTypeNamePrefix!==undefined&&rawObjectTypeName.startsWith(objectTypeNamePrefix)&&rawObjectTypeName.endsWith(objectTypeNameSuffix)){objectTypeNameMap[objectTypeId]=rawObjectTypeName.substring(objectTypeNamePrefix.length,rawObjectTypeName.length-objectTypeNameSuffix.length);}else{objectTypeNameMap[objectTypeId]=rawObjectTypeName;}}\nthis.objectTypeNameMap_[pid]=objectTypeNameMap;},importAnnotations_(){for(const id in this.traceAnnotations_){const annotation=tr.model.Annotation.fromDictIfPossible(this.traceAnnotations_[id]);if(!annotation){this.model_.importWarning({type:'annotation_warning',message:'Unrecognized traceAnnotation typeName \\\"'+\nthis.traceAnnotations_[id].typeName+'\\\"'});continue;}\nthis.model_.addAnnotation(annotation);}},finalizeImport(){if(this.softwareMeasuredCpuCount_!==undefined){this.model_.kernel.softwareMeasuredCpuCount=this.softwareMeasuredCpuCount_;}\nthis.createFlowSlices_();this.createExplicitObjects_();this.createImplicitObjects_();this.createMemoryDumps_();},getStackFrameForEvent_(event,opt_lookForEndEvent){let sf;let stack;if(opt_lookForEndEvent){sf=event.esf;stack=event.estack;}else{sf=event.sf;stack=event.stack;}\nif(stack!==undefined&&sf!==undefined){this.model_.importWarning({type:'stack_frame_and_stack_error',message:'Event at '+event.ts+' cannot have both a stack and a stackframe.'});return undefined;}\nif(stack!==undefined){return this.model_.resolveStackToStackFrame_(event.pid,stack);}\nif(sf===undefined)return undefined;const stackFrame=this.model_.stackFrames['g'+sf];if(stackFrame===undefined){this.model_.importWarning({type:'sample_import_error',message:'No frame for '+sf});return;}\nreturn stackFrame;},resolveStackToStackFrame_(pid,stack){return undefined;},importSampleData(){if(!this.sampleEvents_)return;const m=this.model_;const events=this.sampleEvents_;if(this.hasEvents_===undefined){throw new Error('importEvents is not run before importSampleData');}else if(!this.hasEvents_){for(let i=0;i<events.length;i++){const event=events[i];m.getOrCreateProcess(event.tid).getOrCreateThread(event.tid);}}\nconst threadsByTid={};m.getAllThreads().forEach(function(t){threadsByTid[t.tid]=t;});for(let i=0;i<events.length;i++){const event=events[i];const thread=threadsByTid[event.tid];if(thread===undefined){m.importWarning({type:'sample_import_error',message:'Thread '+events.tid+'not found'});continue;}\nlet cpu;if(event.cpu!==undefined){cpu=m.kernel.getOrCreateCpu(event.cpu);}\nconst leafNode=this.stackFrameTree_.getNode('g'+event.sf);const sample=new tr.model.Sample(this.toModelTimeFromUs_(event.ts),event.name,leafNode,thread,cpu,event.weight);m.samples.push(sample);}},createAsyncSlices_(){if(this.allAsyncEvents_.length===0)return;this.allAsyncEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const legacyEvents=[];const nestableAsyncEventsByKey={};const nestableMeasureAsyncEventsByKey={};for(let i=0;i<this.allAsyncEvents_.length;i++){const asyncEventState=this.allAsyncEvents_[i];const event=asyncEventState.event;if(event.ph==='S'||event.ph==='F'||event.ph==='T'||event.ph==='p'){legacyEvents.push(asyncEventState);continue;}\nif(event.cat===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require a '+'cat parameter.'});continue;}\nif(event.name===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require a '+'name parameter.'});continue;}\nconst id=TraceEventImporter.scopedIdForEvent_(event);if(id===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require an '+'id parameter.'});continue;}\nif(event.cat==='blink.user_timing'){const matched=MEASURE_NAME_REGEX.exec(event.name);if(matched!==null){const key=matched[1]+':'+event.cat;try{event.args=JSON.parse(Base64.atob(matched[3])||'{}');}catch(e){}\nif(nestableMeasureAsyncEventsByKey[key]===undefined){nestableMeasureAsyncEventsByKey[key]=[];}\nnestableMeasureAsyncEventsByKey[key].push(asyncEventState);continue;}}\nconst key=event.cat+':'+id.toStringWithDelimiter(':');if(nestableAsyncEventsByKey[key]===undefined){nestableAsyncEventsByKey[key]=[];}\nnestableAsyncEventsByKey[key].push(asyncEventState);}\nthis.createLegacyAsyncSlices_(legacyEvents);this.createNestableAsyncSlices_(nestableMeasureAsyncEventsByKey);this.createNestableAsyncSlices_(nestableAsyncEventsByKey);},createLegacyAsyncSlice_(events){const asyncEventState=events[events.length-1];const event=asyncEventState.event;const name=event.name;const id=TraceEventImporter.scopedIdForEvent_(event);const key=id.toStringWithDelimiter(':');const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(events[0].event.cat,name);let duration;if(event.ts!==undefined){duration=this.toModelTimeFromUs_(event.ts-events[0].event.ts);}\nconst slice=new asyncSliceConstructor(events[0].event.cat,name,getEventColor(events[0].event),this.toModelTimeFromUs_(events[0].event.ts),Object.assign({},events[0].event.args,event.args),duration||0,true,undefined,undefined,events[0].event.argsStripped);if(duration===undefined){slice.didNotFinish=true;slice.error='Slice has no matching END. End time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Legacy async BEGIN event at '+\nevents[0].event.ts+' with name=\"'+\nname+'\" and id='+key+' was unmatched.'});}\nslice.startThread=events[0].thread;slice.endThread=asyncEventState.thread;slice.id=key;const stepType=events[1].event.ph;let isValid=true;for(let j=1;j<events.length-1;++j){if(events[j].event.ph==='T'||events[j].event.ph==='p'){isValid=this.assertStepTypeMatches_(stepType,events[j]);if(!isValid)break;}\nif(events[j].event.ph==='S'){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+events[j].event.ts+', a slice named \"'+\nname+'\" with id='+id+' had a step before the start event.'});continue;}\nif(events[j].event.ph==='F'){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+events[j].event.ts+', a slice named '+\nname+' with id='+id+' had a step after the finish event.'});continue;}\nconst startIndex=j+(stepType==='T'?0:-1);const endIndex=startIndex+1;let subName=name;if(!events[j].event.argsStripped&&(events[j].event.ph==='T'||events[j].event.ph==='p')){subName=events[j].event.args.step;}\nconst asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(events[0].event.cat,subName);let duration;if(events[endIndex].event.ts!==undefined){duration=this.toModelTimeFromUs_(events[endIndex].event.ts-events[startIndex].event.ts);}\nconst subSlice=new asyncSliceConstructor(events[0].event.cat,subName,getEventColor(events[0].event,subName+j),this.toModelTimeFromUs_(events[startIndex].event.ts),this.deepCopyIfNeeded_(events[j].event.args),duration||0,undefined,undefined,events[startIndex].event.argsStripped);if(duration===undefined){subSlice.didNotFinish=true;subSlice.error='Slice has no matching END. End time has been adjusted.';}\nsubSlice.startThread=events[startIndex].thread;subSlice.endThread=events[endIndex].thread;subSlice.id=key;slice.subSlices.push(subSlice);}\nif(isValid){slice.startThread.asyncSliceGroup.push(slice);}},createLegacyAsyncSlices_(legacyEvents){if(legacyEvents.length===0)return;legacyEvents.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const asyncEventStatesByNameThenID={};for(let i=0;i<legacyEvents.length;i++){const asyncEventState=legacyEvents[i];const event=asyncEventState.event;const name=event.name;if(name===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Async events (ph: S, T, p, or F) require a name '+' parameter.'});continue;}\nconst id=TraceEventImporter.scopedIdForEvent_(event);if(id===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Async events (ph: S, T, p, or F) require an id parameter.'});continue;}\nconst key=id.toStringWithDelimiter(':');if(event.ph==='S'){if(asyncEventStatesByNameThenID[name]===undefined){asyncEventStatesByNameThenID[name]={};}\nif(asyncEventStatesByNameThenID[name][key]){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+event.ts+', a slice of the same id '+id+' was alrady open.'});continue;}\nasyncEventStatesByNameThenID[name][key]=[];asyncEventStatesByNameThenID[name][key].push(asyncEventState);}else{if(asyncEventStatesByNameThenID[name]===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:`At ${event.ts}, no slice named \"${name}\" was open.`,});continue;}\nif(asyncEventStatesByNameThenID[name][key]===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:`At ${event.ts}, no slice named \"${name}\" with id=${id} was `+'open.',});continue;}\nconst events=asyncEventStatesByNameThenID[name][key];events.push(asyncEventState);if(event.ph==='F'){this.createLegacyAsyncSlice_(events);delete asyncEventStatesByNameThenID[name][key];}}}\nfor(const[name,statesByID]of\nObject.entries(asyncEventStatesByNameThenID)){for(const[id,states]of Object.entries(statesByID)){const startEvent=states[0].event;states.push({sequenceNumber:1+states[states.length-1].sequenceNumber,event:{ph:'F',name,id:startEvent.id,id2:startEvent.id2,scope:startEvent.scope,pid:startEvent.pid,tid:startEvent.tid,cat:startEvent.cat,args:{},},thread:this.model_.getOrCreateProcess(startEvent.pid).getOrCreateThread(startEvent.tid),});this.createLegacyAsyncSlice_(states);}}},createNestableAsyncSlices_(nestableEventsByKey){for(const key in nestableEventsByKey){const eventStateEntries=nestableEventsByKey[key];const parentStack=[];for(let i=0;i<eventStateEntries.length;++i){const eventStateEntry=eventStateEntries[i];if(eventStateEntry.event.ph==='e'){let parentIndex=-1;for(let k=parentStack.length-1;k>=0;--k){if(parentStack[k].event.name===eventStateEntry.event.name){parentIndex=k;break;}}\nif(parentIndex===-1){eventStateEntry.finished=false;}else{parentStack[parentIndex].end=eventStateEntry;while(parentIndex<parentStack.length){parentStack.pop();}}}\nif(parentStack.length>0){eventStateEntry.parentEntry=parentStack[parentStack.length-1];}\nif(eventStateEntry.event.ph==='b'){parentStack.push(eventStateEntry);}}\nconst topLevelSlices=[];for(let i=0;i<eventStateEntries.length;++i){const eventStateEntry=eventStateEntries[i];if(eventStateEntry.event.ph==='e'&&eventStateEntry.finished===undefined){continue;}\nlet startState=undefined;let endState=undefined;let sliceArgs=eventStateEntry.event.args||{};let sliceError=undefined;const id=TraceEventImporter.scopedIdForEvent_(eventStateEntry.event);if(eventStateEntry.event.ph==='n'){startState=eventStateEntry;endState=eventStateEntry;}else if(eventStateEntry.event.ph==='b'){if(eventStateEntry.end===undefined){eventStateEntry.end=eventStateEntries[eventStateEntries.length-1];sliceError='Slice has no matching END. End time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async BEGIN event at '+\neventStateEntry.event.ts+' with name=\"'+\neventStateEntry.event.name+'\" and id='+id+' was unmatched.'});}else{function concatenateArguments(args1,args2){if(args1.params===undefined||args2.params===undefined){return Object.assign({},args1,args2);}\nconst args3={};args3.params=Object.assign({},args1.params,args2.params);return Object.assign({},args1,args2,args3);}\nconst endArgs=eventStateEntry.end.event.args||{};sliceArgs=concatenateArguments(sliceArgs,endArgs);}\nstartState=eventStateEntry;endState=eventStateEntry.end;}else{sliceError='Slice has no matching BEGIN. Start time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async END event at '+\neventStateEntry.event.ts+' with name='+\neventStateEntry.event.name+' and id='+id+' was unmatched.'});startState=eventStateEntries[0];endState=eventStateEntry;}\nconst isTopLevel=(eventStateEntry.parentEntry===undefined);const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(eventStateEntry.event.cat,eventStateEntry.event.name);let threadStart=undefined;let threadDuration=undefined;if(startState.event.tts&&startState.event.use_async_tts){threadStart=this.toModelTimeFromUs_(startState.event.tts);if(endState.event.tts){const threadEnd=this.toModelTimeFromUs_(endState.event.tts);threadDuration=threadEnd-threadStart;}}\nconst slice=new asyncSliceConstructor(eventStateEntry.event.cat,eventStateEntry.event.name,getEventColor(endState.event),this.toModelTimeFromUs_(startState.event.ts),sliceArgs,this.toModelTimeFromUs_(endState.event.ts-startState.event.ts),isTopLevel,threadStart,threadDuration,startState.event.argsStripped);slice.startThread=startState.thread;slice.endThread=endState.thread;slice.startStackFrame=this.getStackFrameForEvent_(startState.event);slice.endStackFrame=this.getStackFrameForEvent_(endState.event);slice.id=key;if(sliceError!==undefined){slice.error=sliceError;}\neventStateEntry.slice=slice;if(isTopLevel){topLevelSlices.push(slice);}else if(eventStateEntry.parentEntry.slice!==undefined){eventStateEntry.parentEntry.slice.subSlices.push(slice);}}\nfor(let si=0;si<topLevelSlices.length;si++){topLevelSlices[si].startThread.asyncSliceGroup.push(topLevelSlices[si]);}}},assertStepTypeMatches_(stepType,event){if(stepType!==event.event.ph){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+event.event.ts+', a slice named '+\nevent.event.name+' with id='+\nTraceEventImporter.scopedIdForEvent_(event.event)+' had both begin and end steps, which is not allowed.'});return false;}\nreturn true;},validateFlowEvent_(event){if(event.name===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow events (ph: s, t or f) require a name parameter.'});return false;}\nif(event.ph==='s'||event.ph==='f'||event.ph==='t'){if(event.id===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow events (ph: s, t or f) require an id parameter.'});return false;}\nreturn true;}\nif(event.bind_id){if(event.flow_in===undefined&&event.flow_out===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow producer or consumer require flow_in or flow_out.'});return false;}\nreturn true;}\nreturn false;},createFlowSlices_(){if(this.allFlowEvents_.length===0)return;const createFlowEvent=function(thread,event,opt_slice){let startSlice;let flowId;let flowStartTs;if(event.bind_id){startSlice=opt_slice;flowId=event.bind_id;flowStartTs=this.toModelTimeFromUs_(event.ts+event.dur);}else{const ts=this.toModelTimeFromUs_(event.ts);startSlice=thread.sliceGroup.findSliceAtTs(ts);if(startSlice===undefined)return undefined;flowId=event.id;flowStartTs=ts;}\nconst flowEvent=new tr.model.FlowEvent(event.cat,flowId,event.name,getEventColor(event),flowStartTs,this.deepCopyAlways_(event.args));flowEvent.startSlice=startSlice;flowEvent.startStackFrame=this.getStackFrameForEvent_(event);flowEvent.endStackFrame=undefined;startSlice.outFlowEvents.push(flowEvent);return flowEvent;}.bind(this);const finishFlowEventWith=function(flowEvent,thread,event,refGuid,bindToParent,opt_slice){let endSlice;if(event.bind_id){endSlice=opt_slice;}else{const ts=this.toModelTimeFromUs_(event.ts);if(bindToParent){endSlice=thread.sliceGroup.findSliceAtTs(ts);}else{endSlice=thread.sliceGroup.findNextSliceAfter(ts,refGuid);}\nif(endSlice===undefined)return false;}\nendSlice.inFlowEvents.push(flowEvent);flowEvent.endSlice=endSlice;flowEvent.duration=this.toModelTimeFromUs_(event.ts)-flowEvent.start;flowEvent.endStackFrame=this.getStackFrameForEvent_(event);this.mergeArgsInto_(flowEvent.args,event.args,flowEvent.title);return true;}.bind(this);const processFlowConsumer=function(flowIdToEvent,sliceGuidToEvent,event,slice){let flowEvent=flowIdToEvent[event.bind_id];if(flowEvent===undefined){this.model_.importWarning({type:'flow_slice_ordering_error',message:'Flow consumer '+event.bind_id+' does not have '+'a flow producer'});return false;}else if(flowEvent.endSlice){const flowProducer=flowEvent.startSlice;flowEvent=createFlowEvent(undefined,sliceGuidToEvent[flowProducer.guid],flowProducer);}\nconst refGuid=undefined;const ok=finishFlowEventWith(flowEvent,undefined,event,refGuid,undefined,slice);if(ok){this.model_.flowEvents.push(flowEvent);}else{this.model_.importWarning({type:'flow_slice_end_error',message:'Flow consumer '+event.bind_id+' does not end '+'at an actual slice, so cannot be created.'});return false;}\nreturn true;}.bind(this);const processFlowProducer=function(flowIdToEvent,flowStatus,event,slice){if(flowIdToEvent[event.bind_id]&&flowStatus[event.bind_id]){this.model_.importWarning({type:'flow_slice_start_error',message:'Flow producer '+event.bind_id+' already seen'});return false;}\nconst flowEvent=createFlowEvent(undefined,event,slice);if(!flowEvent){this.model_.importWarning({type:'flow_slice_start_error',message:'Flow producer '+event.bind_id+' does not start'+'a flow'});return false;}\nflowIdToEvent[event.bind_id]=flowEvent;}.bind(this);this.allFlowEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const flowIdToEvent={};const sliceGuidToEvent={};const flowStatus={};for(let i=0;i<this.allFlowEvents_.length;++i){const data=this.allFlowEvents_[i];const refGuid=data.refGuid;const event=data.event;const thread=data.thread;if(!this.validateFlowEvent_(event))continue;if(event.bind_id){const slice=data.slice;sliceGuidToEvent[slice.guid]=event;if(event.flowPhase===PRODUCER){if(!processFlowProducer(flowIdToEvent,flowStatus,event,slice)){continue;}\nflowStatus[event.bind_id]=true;}else{if(!processFlowConsumer(flowIdToEvent,sliceGuidToEvent,event,slice)){continue;}\nflowStatus[event.bind_id]=false;if(event.flowPhase===STEP){if(!processFlowProducer(flowIdToEvent,flowStatus,event,slice)){continue;}\nflowStatus[event.bind_id]=true;}}\ncontinue;}\nconst fullFlowId=JSON.stringify({id:event.id,cat:event.cat,name:event.name});let flowEvent;if(event.ph==='s'){if(flowIdToEvent[fullFlowId]){this.model_.importWarning({type:'flow_slice_start_error',message:'event id '+event.id+' already seen when '+'encountering start of flow event.'});continue;}\nflowEvent=createFlowEvent(thread,event);if(!flowEvent){this.model_.importWarning({type:'flow_slice_start_error',message:'event id '+event.id+' does not start '+'at an actual slice, so cannot be created.'});continue;}\nflowIdToEvent[fullFlowId]=flowEvent;}else if(event.ph==='t'||event.ph==='f'){flowEvent=flowIdToEvent[fullFlowId];if(flowEvent===undefined){this.model_.importWarning({type:'flow_slice_ordering_error',message:'Found flow phase '+event.ph+' for id: '+event.id+' but no flow start found.'});continue;}\nlet bindToParent=event.ph==='t';if(event.ph==='f'){if(event.bp===undefined){if(event.cat.indexOf('input')>-1){bindToParent=true;}else if(event.cat.indexOf('ipc.flow')>-1){bindToParent=true;}}else{if(event.bp!=='e'){this.model_.importWarning({type:'flow_slice_bind_point_error',message:'Flow event with invalid binding point (event.bp).'});continue;}\nbindToParent=true;}}\nconst ok=finishFlowEventWith(flowEvent,thread,event,refGuid,bindToParent);if(ok){this.model_.flowEvents.push(flowEvent);}else{this.model_.importWarning({type:'flow_slice_end_error',message:'event id '+event.id+' does not end '+'at an actual slice, so cannot be created.'});}\nflowIdToEvent[fullFlowId]=undefined;if(ok&&event.ph==='t'){flowEvent=createFlowEvent(thread,event);flowIdToEvent[fullFlowId]=flowEvent;}}}},createExplicitObjects_(){if(this.allObjectEvents_.length===0)return;const processEvent=function(objectEventState){const event=objectEventState.event;const scopedId=TraceEventImporter.scopedIdForEvent_(event);const thread=objectEventState.thread;if(event.name===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an name parameter.'});}\nif(scopedId===undefined||scopedId.id===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an id parameter.'});}\nconst process=thread.parent;const ts=this.toModelTimeFromUs_(event.ts);let instance;if(event.ph==='N'){try{instance=process.objects.idWasCreated(scopedId,event.cat,event.name,ts);}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing create of '+\nscopedId+' at ts='+ts+': '+e});return;}}else if(event.ph==='O'){if(event.args.snapshot===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+scopedId+' at ts='+ts+': '+'Snapshots must have args: {snapshot: ...}'});return;}\nlet snapshot;try{const args=this.deepCopyIfNeeded_(event.args.snapshot);let cat;if(args.cat){cat=args.cat;delete args.cat;}else{cat=event.cat;}\nlet baseTypename;if(args.base_type){baseTypename=args.base_type;delete args.base_type;}else{baseTypename=undefined;}\nsnapshot=process.objects.addSnapshot(scopedId,cat,event.name,ts,args,baseTypename);snapshot.snapshottedOnThread=thread;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing snapshot of '+\nscopedId+' at ts='+ts+': '+e});return;}\ninstance=snapshot.objectInstance;}else if(event.ph==='D'){try{process.objects.idWasDeleted(scopedId,event.cat,event.name,ts);const instanceMap=process.objects.getOrCreateInstanceMap_(scopedId);instance=instanceMap.lastInstance;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing delete of '+\nscopedId+' at ts='+ts+': '+e});return;}}\nif(instance){instance.colorId=getEventColor(event,instance.typeName);}}.bind(this);this.allObjectEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const allObjectEvents=this.allObjectEvents_;for(let i=0;i<allObjectEvents.length;i++){const objectEventState=allObjectEvents[i];try{processEvent.call(this,objectEventState);}catch(e){this.model_.importWarning({type:'object_parse_error',message:e.message});}}},createImplicitObjects_(){for(const proc of Object.values(this.model_.processes)){this.createImplicitObjectsForProcess_(proc);}},createImplicitObjectsForProcess_(process){function processField(referencingObject,referencingObjectFieldName,referencingObjectFieldValue,containingSnapshot){if(!referencingObjectFieldValue)return;if(referencingObjectFieldValue instanceof\ntr.model.ObjectSnapshot){return null;}\nif(referencingObjectFieldValue.id===undefined)return;const implicitSnapshot=referencingObjectFieldValue;const rawId=implicitSnapshot.id;const m=/(.+)\\/(.+)/.exec(rawId);if(!m){throw new Error('Implicit snapshots must have names.');}\ndelete implicitSnapshot.id;const name=m[1];const id=m[2];let res;let cat;if(implicitSnapshot.cat!==undefined){cat=implicitSnapshot.cat;}else{cat=containingSnapshot.objectInstance.category;}\nlet baseTypename;if(implicitSnapshot.base_type){baseTypename=implicitSnapshot.base_type;}else{baseTypename=undefined;}\nconst scope=containingSnapshot.objectInstance.scopedId.scope;try{res=process.objects.addSnapshot(new tr.model.ScopedId(scope,id),cat,name,containingSnapshot.ts,implicitSnapshot,baseTypename);}catch(e){this.model_.importWarning({type:'object_snapshot_parse_error',message:'While processing implicit snapshot of '+\nrawId+' at ts='+containingSnapshot.ts+': '+e});return;}\nres.objectInstance.hasImplicitSnapshots=true;res.containingSnapshot=containingSnapshot;res.snapshottedOnThread=containingSnapshot.snapshottedOnThread;referencingObject[referencingObjectFieldName]=res;if(!(res instanceof tr.model.ObjectSnapshot)){throw new Error('Created object must be instanceof snapshot');}\nreturn res.args;}\nfunction iterObject(object,func,containingSnapshot,thisArg){if(!(object instanceof Object))return;if(object instanceof Array){for(let i=0;i<object.length;i++){const res=func.call(thisArg,object,i,object[i],containingSnapshot);if(res===null)continue;if(res){iterObject(res,func,containingSnapshot,thisArg);}else{iterObject(object[i],func,containingSnapshot,thisArg);}}\nreturn;}\nfor(const key in object){const res=func.call(thisArg,object,key,object[key],containingSnapshot);if(res===null)continue;if(res){iterObject(res,func,containingSnapshot,thisArg);}else{iterObject(object[key],func,containingSnapshot,thisArg);}}}\nprocess.objects.iterObjectInstances(function(instance){instance.snapshots.forEach(function(snapshot){if(snapshot.args.id!==undefined){throw new Error('args cannot have an id field inside it');}\niterObject(snapshot.args,processField,snapshot,this);},this);},this);},minimalTimestampInPidToEvents_(pidToEvents){let smallestTs=Infinity;for(const events of Object.values(pidToEvents)){for(const event of events){if(event.ts<smallestTs){smallestTs=event.ts;}}}\nreturn smallestTs;},createMemoryDumps_(){const pairs=Object.entries(this.allMemoryDumpEvents_);const key=x=>this.minimalTimestampInPidToEvents_(x);pairs.sort((x,y)=>key(x[1])-key(y[1]));for(const[dumpId,pidToEvents]of pairs){this.createGlobalMemoryDump_(pidToEvents,dumpId);}},createGlobalMemoryDump_(dumpIdEvents,dumpId){const globalRange=new tr.b.math.Range();for(const pid in dumpIdEvents){const processEvents=dumpIdEvents[pid];for(let i=0;i<processEvents.length;i++){globalRange.addValue(this.toModelTimeFromUs_(processEvents[i].ts));}}\nif(globalRange.isEmpty){throw new Error('Internal error: Global memory dump without events');}\nconst globalMemoryDump=new tr.model.GlobalMemoryDump(this.model_,globalRange.min);globalMemoryDump.duration=globalRange.range;this.model_.globalMemoryDumps.push(globalMemoryDump);const globalMemoryAllocatorDumpsByFullName={};const levelsOfDetail={};const allMemoryAllocatorDumpsByGuid={};for(const pid in dumpIdEvents){this.createProcessMemoryDump_(globalMemoryDump,globalMemoryAllocatorDumpsByFullName,levelsOfDetail,allMemoryAllocatorDumpsByGuid,dumpIdEvents[pid],pid,dumpId);}\nglobalMemoryDump.levelOfDetail=levelsOfDetail.global;globalMemoryDump.memoryAllocatorDumps=this.inferMemoryAllocatorDumpTree_(globalMemoryAllocatorDumpsByFullName);this.parseMemoryDumpAllocatorEdges_(allMemoryAllocatorDumpsByGuid,dumpIdEvents,dumpId);},createProcessMemoryDump_(globalMemoryDump,globalMemoryAllocatorDumpsByFullName,levelsOfDetail,allMemoryAllocatorDumpsByGuid,processEvents,pid,dumpId){const processRange=new tr.b.math.Range();for(let i=0;i<processEvents.length;i++){processRange.addValue(this.toModelTimeFromUs_(processEvents[i].ts));}\nif(processRange.isEmpty){throw new Error('Internal error: Process memory dump without events');}\nconst process=this.model_.getOrCreateProcess(pid);const processMemoryDump=new tr.model.ProcessMemoryDump(globalMemoryDump,process,processRange.min);processMemoryDump.duration=processRange.range;process.memoryDumps.push(processMemoryDump);globalMemoryDump.processMemoryDumps[pid]=processMemoryDump;const processMemoryAllocatorDumpsByFullName={};for(let i=0;i<processEvents.length;i++){const processEvent=processEvents[i];const dumps=processEvent.args.dumps;if(dumps===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'\\'dumps\\' field not found in a process memory dump'+' event for PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nthis.parseMemoryDumpTotals_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpVmRegions_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpHeapDumps_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpLevelOfDetail_(levelsOfDetail,dumps,pid,dumpId);this.parseMemoryDumpAllocatorDumps_(processMemoryDump,globalMemoryDump,processMemoryAllocatorDumpsByFullName,globalMemoryAllocatorDumpsByFullName,allMemoryAllocatorDumpsByGuid,dumps,pid,dumpId);}\nif(levelsOfDetail.process===undefined){levelsOfDetail.process=processMemoryDump.vmRegions?DETAILED:LIGHT;}\nif(!this.updateMemoryDumpLevelOfDetail_(levelsOfDetail,'global',levelsOfDetail.process)){this.model_.importWarning({type:'memory_dump_parse_error',message:'diffent levels of detail provided for global memory'+' dump (dump ID='+dumpId+').'});}\nprocessMemoryDump.levelOfDetail=levelsOfDetail.process;delete levelsOfDetail.process;processMemoryDump.memoryAllocatorDumps=this.inferMemoryAllocatorDumpTree_(processMemoryAllocatorDumpsByFullName);},parseMemoryDumpTotals_(processMemoryDump,dumps,pid,dumpId){const rawTotals=dumps.process_totals;if(rawTotals===undefined)return;if(processMemoryDump.totals!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Process totals provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nconst totals={};let platformSpecificTotals=undefined;for(const rawTotalName in rawTotals){const rawTotalValue=rawTotals[rawTotalName];if(rawTotalValue===undefined)continue;if(rawTotalName==='resident_set_bytes'){totals.residentBytes=parseInt(rawTotalValue,16);continue;}\nif(rawTotalName==='peak_resident_set_bytes'){totals.peakResidentBytes=parseInt(rawTotalValue,16);continue;}\nif(rawTotalName==='is_peak_rss_resetable'){totals.arePeakResidentBytesResettable=!!rawTotalValue;continue;}\nif(rawTotalName==='private_footprint_bytes'){totals.privateFootprintBytes=parseInt(rawTotalValue,16);continue;}\nif(platformSpecificTotals===undefined){platformSpecificTotals={};totals.platformSpecific=platformSpecificTotals;}\nplatformSpecificTotals[rawTotalName]=parseInt(rawTotalValue,16);}\nif(totals.peakResidentBytes===undefined&&totals.arePeakResidentBytesResettable!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Optional field peak_resident_set_bytes found'+' but is_peak_rss_resetable not found in'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});}\nif(totals.arePeakResidentBytesResettable!==undefined&&totals.peakResidentBytes===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Optional field is_peak_rss_resetable found'+' but peak_resident_set_bytes not found in'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});}\nprocessMemoryDump.totals=totals;},parseMemoryDumpVmRegions_(processMemoryDump,dumps,pid,dumpId){const rawProcessMmaps=dumps.process_mmaps;if(rawProcessMmaps===undefined)return;const rawVmRegions=rawProcessMmaps.vm_regions;if(rawVmRegions===undefined)return;if(processMemoryDump.vmRegions!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'VM regions provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nconst vmRegions=new Array(rawVmRegions.length);for(let i=0;i<rawVmRegions.length;i++){const rawVmRegion=rawVmRegions[i];const byteStats={};const rawByteStats=rawVmRegion.bs;for(const rawByteStatName in rawByteStats){const rawByteStatValue=rawByteStats[rawByteStatName];if(rawByteStatValue===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Byte stat \\''+rawByteStatName+'\\' of VM region '+\ni+' ('+rawVmRegion.mf+') in process memory dump for '+'PID='+pid+' and dump ID='+dumpId+' does not have a value.'});continue;}\nconst byteStatName=BYTE_STAT_NAME_MAP[rawByteStatName];if(byteStatName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Unknown byte stat name \\''+rawByteStatName+'\\' ('+\nrawByteStatValue+') of VM region '+i+' ('+\nrawVmRegion.mf+') in process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nbyteStats[byteStatName]=parseInt(rawByteStatValue,16);if(byteStatName==='proportionalResident'&&byteStats[byteStatName]===0){byteStats[byteStatName]=undefined;}}\nvmRegions[i]=new tr.model.VMRegion(parseInt(rawVmRegion.sa,16),parseInt(rawVmRegion.sz,16),rawVmRegion.pf,rawVmRegion.mf,byteStats);}\nprocessMemoryDump.vmRegions=tr.model.VMRegionClassificationNode.fromRegions(vmRegions);},parseMemoryDumpHeapDumps_(processMemoryDump,dumps,pid,dumpId){const idPrefix='p'+pid+':';let importer;if(dumps.heaps){const processTypeMap=this.objectTypeNameMap_[pid];if(processTypeMap===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing mapping from object type IDs to names.'});}\nimporter=new LegacyHeapDumpTraceEventImporter(this.model_,processMemoryDump,processTypeMap,idPrefix,dumpId,dumps.heaps);}else if(dumps.heaps_v2){const data=dumps.heaps_v2;this.heapProfileExpander=this.heapProfileExpander.expandData(data);this.addNewStackFramesFromExpander_(this.heapProfileExpander,idPrefix);importer=new HeapDumpTraceEventImporter(this.heapProfileExpander,this.model_.stackFrames,processMemoryDump,idPrefix,this.model_);}\nif(!importer)return;const heapDumps=importer.parse();if(!heapDumps)return;if(processMemoryDump.heapDumps!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Heap dumps provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nif(Object.keys(heapDumps).length>0){processMemoryDump.heapDumps=heapDumps;}},addNewStackFramesFromExpander_(expander,idPrefix){const nodeMap=expander.getNewMap('nodes');const newStackFrames={};for(const[id,stackFrame]of nodeMap.entries()){if(!this.model_.stackFrames[idPrefix+id]){newStackFrames[id]={id,name:expander.getString(stackFrame.name_sid),};if(stackFrame.parent)newStackFrames[id].parent=stackFrame.parent;}}\nthis.importStackFrames_(newStackFrames,idPrefix);},parseMemoryDumpLevelOfDetail_(levelsOfDetail,dumps,pid,dumpId){const rawLevelOfDetail=dumps.level_of_detail;let level;switch(rawLevelOfDetail){case'background':level=BACKGROUND;break;case'light':level=LIGHT;break;case'detailed':level=DETAILED;break;case undefined:level=undefined;break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'unknown raw level of detail \\''+rawLevelOfDetail+'\\' of process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nif(!this.updateMemoryDumpLevelOfDetail_(levelsOfDetail,'process',level)){this.model_.importWarning({type:'memory_dump_parse_error',message:'diffent levels of detail provided for process memory'+' dump for PID='+pid+' (dump ID='+dumpId+').'});}},updateMemoryDumpLevelOfDetail_(levelsOfDetail,scope,level){if(!(scope in levelsOfDetail)||level===levelsOfDetail[scope]){levelsOfDetail[scope]=level;return true;}\nif(MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(level)>MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(levelsOfDetail[scope])){levelsOfDetail[scope]=level;}\nreturn false;},parseMemoryDumpAllocatorDumps_(processMemoryDump,globalMemoryDump,processMemoryAllocatorDumpsByFullName,globalMemoryAllocatorDumpsByFullName,allMemoryAllocatorDumpsByGuid,dumps,pid,dumpId){const rawAllocatorDumps=dumps.allocators;if(rawAllocatorDumps===undefined)return;for(let fullName in rawAllocatorDumps){const rawAllocatorDump=rawAllocatorDumps[fullName];const guid=rawAllocatorDump.guid;if(guid===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' for PID='+pid+' and dump ID='+dumpId+' does not have a GUID.'});}\nconst flags=rawAllocatorDump.flags||0;const isWeakDump=!!(flags&WEAK_MEMORY_ALLOCATOR_DUMP_FLAG);let containerMemoryDump;let dstIndex;if(fullName.startsWith(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX)){fullName=fullName.substring(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX.length);containerMemoryDump=globalMemoryDump;dstIndex=globalMemoryAllocatorDumpsByFullName;}else{containerMemoryDump=processMemoryDump;dstIndex=processMemoryAllocatorDumpsByFullName;}\nlet allocatorDump=allMemoryAllocatorDumpsByGuid[guid];if(allocatorDump===undefined){if(fullName in dstIndex){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple GUIDs provided for'+' memory allocator dump '+fullName+': '+\ndstIndex[fullName].guid+', '+guid+' (ignored) for'+' PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nallocatorDump=new tr.model.MemoryAllocatorDump(containerMemoryDump,fullName,guid);allocatorDump.weak=isWeakDump;dstIndex[fullName]=allocatorDump;if(guid!==undefined){allMemoryAllocatorDumpsByGuid[guid]=allocatorDump;}}else{if(allocatorDump.containerMemoryDump!==containerMemoryDump){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+' dumped in different contexts.'});continue;}\nif(allocatorDump.fullName!==fullName){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump with GUID='+guid+' for PID='+\npid+' and dump ID='+dumpId+' has multiple names: '+\nallocatorDump.fullName+', '+fullName+' (ignored).'});continue;}\nif(!isWeakDump){allocatorDump.weak=false;}}\nlet attributes=rawAllocatorDump.attrs;if(attributes===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+' does not have attributes.'});attributes={};}\nfor(const attrName in attributes){const attrArgs=attributes[attrName];const attrType=attrArgs.type;const attrValue=attrArgs.value;switch(attrType){case'scalar':{if(attrName in allocatorDump.numerics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for scalar attribute '+\nattrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+'.'});break;}\nconst unit=attrArgs.units==='bytes'?tr.b.Unit.byName.sizeInBytes_smallerIsBetter:tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const value=parseInt(attrValue,16);allocatorDump.addNumeric(attrName,new tr.b.Scalar(unit,value));break;}\ncase'string':if(attrName in allocatorDump.diagnostics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for string attribute '+\nattrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+'.'});break;}\nallocatorDump.addDiagnostic(attrName,attrValue);break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'Unknown type provided for attribute '+attrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+': '+\nattrType});break;}}}},inferMemoryAllocatorDumpTree_(memoryAllocatorDumpsByFullName){const rootAllocatorDumps=[];const fullNames=Object.keys(memoryAllocatorDumpsByFullName);fullNames.sort();for(let i=0;i<fullNames.length;i++){let fullName=fullNames[i];let allocatorDump=memoryAllocatorDumpsByFullName[fullName];while(true){const lastSlashIndex=fullName.lastIndexOf('/');if(lastSlashIndex===-1){rootAllocatorDumps.push(allocatorDump);break;}\nconst parentFullName=fullName.substring(0,lastSlashIndex);let parentAllocatorDump=memoryAllocatorDumpsByFullName[parentFullName];let parentAlreadyExisted=true;if(parentAllocatorDump===undefined){parentAlreadyExisted=false;parentAllocatorDump=new tr.model.MemoryAllocatorDump(allocatorDump.containerMemoryDump,parentFullName);if(allocatorDump.weak!==false){parentAllocatorDump.weak=undefined;}\nmemoryAllocatorDumpsByFullName[parentFullName]=parentAllocatorDump;}\nallocatorDump.parent=parentAllocatorDump;parentAllocatorDump.children.push(allocatorDump);if(parentAlreadyExisted){if(!allocatorDump.weak){while(parentAllocatorDump!==undefined&&parentAllocatorDump.weak===undefined){parentAllocatorDump.weak=false;parentAllocatorDump=parentAllocatorDump.parent;}}\nbreak;}\nfullName=parentFullName;allocatorDump=parentAllocatorDump;}}\nfor(const fullName in memoryAllocatorDumpsByFullName){const allocatorDump=memoryAllocatorDumpsByFullName[fullName];if(allocatorDump.weak===undefined){allocatorDump.weak=true;}}\nreturn rootAllocatorDumps;},parseMemoryDumpAllocatorEdges_(allMemoryAllocatorDumpsByGuid,dumpIdEvents,dumpId){for(const pid in dumpIdEvents){const processEvents=dumpIdEvents[pid];for(let i=0;i<processEvents.length;i++){const processEvent=processEvents[i];const dumps=processEvent.args.dumps;if(dumps===undefined)continue;const rawEdges=dumps.allocators_graph;if(rawEdges===undefined)continue;for(let j=0;j<rawEdges.length;j++){const rawEdge=rawEdges[j];const sourceGuid=rawEdge.source;const sourceDump=allMemoryAllocatorDumpsByGuid[sourceGuid];if(sourceDump===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Edge for PID='+pid+' and dump ID='+dumpId+' is missing source memory allocator dump (GUID='+\nsourceGuid+').'});continue;}\nconst targetGuid=rawEdge.target;const targetDump=allMemoryAllocatorDumpsByGuid[targetGuid];if(targetDump===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Edge for PID='+pid+' and dump ID='+dumpId+' is missing target memory allocator dump (GUID='+\ntargetGuid+').'});continue;}\nconst importance=rawEdge.importance;const edge=new tr.model.MemoryAllocatorDumpLink(sourceDump,targetDump,importance);switch(rawEdge.type){case'ownership':if(sourceDump.owns!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+sourceDump.fullName+' (GUID='+sourceGuid+') already owns a memory'+' allocator dump ('+\nsourceDump.owns.target.fullName+').'});}else{sourceDump.owns=edge;targetDump.ownedBy.push(edge);}\nbreak;case'retention':sourceDump.retains.push(edge);targetDump.retainedBy.push(edge);break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'Invalid edge type: '+rawEdge.type+' (PID='+pid+', dump ID='+dumpId+', source='+sourceGuid+', target='+targetGuid+', importance='+importance+').'});}}}}},toModelTimeFromUs_(ts){if(!this.toModelTime_){this.toModelTime_=this.model_.clockSyncManager.getModelTimeTransformer(this.clockDomainId_);}\nreturn this.toModelTime_(tr.b.Unit.timestampFromUs(ts));},maybeToModelTimeFromUs_(ts){if(ts===undefined){return undefined;}\nreturn this.toModelTimeFromUs_(ts);},durationFromUs_(dur){if(dur===undefined){return undefined;}\nreturn tr.b.Unit.timestampFromUs(dur);}};tr.importer.Importer.register(TraceEventImporter);return{TraceEventImporter,};});'use strict';tr.exportTo('tr.e.net',function(){const AsyncSlice=tr.model.AsyncSlice;function NetAsyncSlice(){AsyncSlice.apply(this,arguments);this.url_=undefined;this.byteCount_=undefined;this.isTitleComputed_=false;this.isUrlComputed_=false;}\nNetAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){return'NetLog';},get title(){if(this.isTitleComputed_||!this.isTopLevel){return this.title_;}\nif(this.url!==undefined&&this.url.length>0){this.title_=this.url;}else if(this.args!==undefined&&this.args.source_type!==undefined){this.title_=this.args.source_type;}\nthis.isTitleComputed_=true;return this.title_;},set title(title){this.title_=title;},get url(){if(this.isUrlComputed_){return this.url_;}\nif(this.args!==undefined&&this.args.params!==undefined&&this.args.params.url!==undefined){this.url_=this.args.params.url;}else if(this.subSlices!==undefined&&this.subSlices.length>0){for(let i=0;i<this.subSlices.length&&!this.url_;i++){if(this.subSlices[i].url!==undefined){this.url_=this.subSlices[i].url;}}}\nthis.isUrlComputed_=true;return this.url_;},get byteCount(){if(this.byteCount_!==undefined){return this.byteCount_;}\nthis.byteCount_=0;if((this.originalTitle==='URL_REQUEST_JOB_FILTERED_BYTES_READ'||this.originalTitle==='URL_REQUEST_JOB_BYTES_READ')&&this.args!==undefined&&this.args.params!==undefined&&this.args.params.byte_count!==undefined){this.byteCount_=this.args.params.byte_count;}\nfor(let i=0;i<this.subSlices.length;i++){this.byteCount_+=this.subSlices[i].byteCount;}\nreturn this.byteCount_;}};AsyncSlice.subTypes.register(NetAsyncSlice,{categoryParts:['netlog','disabled-by-default-netlog']});return{NetAsyncSlice,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){function Parser(importer){this.importer=importer;this.model=importer.model;}\nParser.prototype={__proto__:Object.prototype};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.mandatoryBaseClass=Parser;tr.b.decorateExtensionRegistry(Parser,options);return{Parser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function AndroidParser(importer){Parser.call(this,importer);importer.registerEventHandler('tracing_mark_write:android',AndroidParser.prototype.traceMarkWriteAndroidEvent.bind(this));importer.registerEventHandler('0:android',AndroidParser.prototype.traceMarkWriteAndroidEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nfunction parseArgs(argsString){const args={};if(argsString){const argsArray=argsString.split(';');for(let i=0;i<argsArray.length;++i){const parts=argsArray[i].split('=');if(parts[0]){args[parts.shift()]=parts.join('=');}}}\nreturn args;}\nAndroidParser.prototype={__proto__:Parser.prototype,openAsyncSlice(thread,category,name,cookie,ts,args){const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(category,name);const slice=new asyncSliceConstructor(category,name,ColorScheme.getColorIdForGeneralPurposeString(name),ts,args);const key=category+':'+name+':'+cookie;slice.id=cookie;slice.startThread=thread;if(!this.openAsyncSlices){this.openAsyncSlices={};}\nthis.openAsyncSlices[key]=slice;},closeAsyncSlice(thread,category,name,cookie,ts,args){if(!this.openAsyncSlices){return;}\nconst key=category+':'+name+':'+cookie;const slice=this.openAsyncSlices[key];if(!slice){return;}\nfor(const arg in args){if(slice.args[arg]!==undefined){this.model_.importWarning({type:'parse_error',message:'Both the S and F events of '+slice.title+' provided values for argument '+arg+'.'+' The value of the F event will be used.'});}\nslice.args[arg]=args[arg];}\nslice.endThread=thread;slice.duration=ts-slice.start;slice.startThread.asyncSliceGroup.push(slice);delete this.openAsyncSlices[key];},traceMarkWriteAndroidEvent(eventName,cpuNumber,pid,ts,eventBase){const eventData=eventBase.details.split('|');switch(eventData[0]){case'B':{const ppid=parseInt(eventData[1]);const title=eventData[2];const args=parseArgs(eventData[3]);let category=eventData[4];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;if(!thread.sliceGroup.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nthis.ppids_[pid]=ppid;thread.sliceGroup.beginSlice(category,title,ts,args);break;}\ncase'E':{const ppid=this.ppids_[pid];if(ppid===undefined){break;}\nconst thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);if(!thread.sliceGroup.openSliceCount){break;}\nconst slice=thread.sliceGroup.endSlice(ts);const args=parseArgs(eventData[3]);for(const arg in args){if(slice.args[arg]!==undefined){this.model_.importWarning({type:'parse_error',message:'Both the B and E events of '+slice.title+' provided values for argument '+arg+'.'+' The value of the E event will be used.'});}\nslice.args[arg]=args[arg];}\nbreak;}\ncase'C':{const ppid=parseInt(eventData[1]);const name=eventData[2];const value=parseInt(eventData[3]);let category=eventData[4];if(category===undefined)category='android';const ctr=this.model_.getOrCreateProcess(ppid).getOrCreateCounter(category,name);if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries(value,ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,value);});break;}\ncase'S':{const ppid=parseInt(eventData[1]);const name=eventData[2];const cookie=parseInt(eventData[3]);const args=parseArgs(eventData[4]);let category=eventData[5];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;this.ppids_[pid]=ppid;this.openAsyncSlice(thread,category,name,cookie,ts,args);break;}\ncase'F':{const ppid=parseInt(eventData[1]);const name=eventData[2];const cookie=parseInt(eventData[3]);const args=parseArgs(eventData[4]);let category=eventData[5];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;this.ppids_[pid]=ppid;this.closeAsyncSlice(thread,category,name,cookie,ts,args);break;}\ndefault:return false;}\nreturn true;}};Parser.register(AndroidParser);return{AndroidParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;const binderTransRE=new RegExp('transaction=(\\\\d+) dest_node=(\\\\d+) '+'dest_proc=(\\\\d+) dest_thread=(\\\\d+) '+'reply=(\\\\d+) flags=(0x[0-9a-fA-F]+) '+'code=(0x[0-9a-fA-F]+)');const binderAllocRE=new RegExp('transaction=(\\\\d+) data_size=(\\\\d+) '+'offsets_size=(\\\\d+)');const binderTransReceivedRE=/transaction=(\\d+)/;function isBinderThread(name){return(name.indexOf('Binder')>-1);}\nconst TF_ONE_WAY=0x01;const TF_ROOT_OBJECT=0x04;const TF_STATUS_CODE=0x08;const TF_ACCEPT_FDS=0x10;const NO_FLAGS=0;function binderFlagsToHuman(num){const flag=parseInt(num,16);let str='';if(flag&TF_ONE_WAY){str+='this is a one-way call: async, no return; ';}\nif(flag&TF_ROOT_OBJECT){str+='contents are the components root object; ';}\nif(flag&TF_STATUS_CODE){str+='contents are a 32-bit status code; ';}\nif(flag&TF_ACCEPT_FDS){str+='allow replies with file descriptors; ';}\nif(flag===NO_FLAGS){str+='No Flags Set';}\nreturn str;}\nfunction isReplyToOrigin(calling,called){return(called.dest_proc===calling.calling_pid||called.dest_thread===calling.calling_pid);}\nfunction binderCodeToHuman(code){return'Java Layer Dependent';}\nfunction doInternalSlice(trans,slice,ts){if(slice.subSlices.length!==0){slice.subSlices[0].start=ts;return slice.subSlices[0];}\nconst kthread=trans.calling_kthread.thread;const internalSlice=kthread.sliceGroup.pushCompleteSlice('binder',slice.title,ts,.001,0,0,slice.args);internalSlice.title=slice.title;internalSlice.id=slice.id;internalSlice.colorId=slice.colorId;slice.subSlices.push(internalSlice);return internalSlice;}\nfunction generateBinderArgsForSlice(trans,cThreadName){return{'Transaction Id':trans.transaction_key,'Destination Node':trans.dest_node,'Destination Process':trans.dest_proc,'Destination Thread':trans.dest_thread,'Destination Name':cThreadName,'Reply transaction?':trans.is_reply_transaction,'Flags':trans.flags+' '+\nbinderFlagsToHuman(trans.flags),'Code':trans.code+' '+\nbinderCodeToHuman(trans.code),'Calling PID':trans.calling_pid,'Calling tgid':trans.calling_kthread.thread.parent.pid};}\nfunction BinderTransaction(events,callingPid,callingTs,callingKthread){this.transaction_key=parseInt(events[1]);this.dest_node=parseInt(events[2]);this.dest_proc=parseInt(events[3]);this.dest_thread=parseInt(events[4]);this.is_reply_transaction=parseInt(events[5])===1?true:false;this.expect_reply=((this.is_reply_transaction===false)&&(parseInt(events[6],16)&TF_ONE_WAY)===0);this.flags=events[6];this.code=events[7];this.calling_pid=callingPid;this.calling_ts=callingTs;this.calling_kthread=callingKthread;}\nfunction BinderParser(importer){Parser.call(this,importer);importer.registerEventHandler('binder_locked',BinderParser.prototype.binderLocked.bind(this));importer.registerEventHandler('binder_unlock',BinderParser.prototype.binderUnlock.bind(this));importer.registerEventHandler('binder_lock',BinderParser.prototype.binderLock.bind(this));importer.registerEventHandler('binder_transaction',BinderParser.prototype.binderTransaction.bind(this));importer.registerEventHandler('binder_transaction_received',BinderParser.prototype.binderTransactionReceived.bind(this));importer.registerEventHandler('binder_transaction_alloc_buf',BinderParser.prototype.binderTransactionAllocBuf.bind(this));this.model_=importer.model;this.kthreadlookup={};this.importer_=importer;this.transWaitingRecv={};this.syncTransWaitingCompletion={};this.recursiveSyncTransWaitingCompletion_ByPID={};this.receivedTransWaitingConversion={};}\nBinderParser.prototype={__proto__:Parser.prototype,binderLock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventName.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);kthread.binderAttemptLockTS=ts;kthread.binderOpenTsA=ts;return true;},binderLocked(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const binderThread=isBinderThread(eventBase.threadName);const name=eventBase.threadName;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);this.doNameMappings(pid,tgid,name);const rthread=kthread.thread;kthread.binderLockAquiredTS=ts;if(kthread.binderAttemptLockTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,name,kthread);rthread.sliceGroup.pushCompleteSlice('binder','binder lock waiting',kthread.binderAttemptLockTS,ts-kthread.binderAttemptLockTS,0,0,args);kthread.binderAttemptLockTS=undefined;return true;},binderUnlock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);if(kthread.binderLockAquiredTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,eventBase.threadName,kthread);kthread.thread.sliceGroup.pushCompleteSlice('binder','binder lock held',kthread.binderLockAquiredTS,ts-kthread.binderLockAquiredTS,0,0,args);kthread.binderLockAquiredTS=undefined;return true;},binderTransaction(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventBase.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const trans=new BinderTransaction(event,pid,ts,kthread);const args=generateBinderArgsForSlice(trans,eventBase.threadName);const priorReceive=this.getPriorReceiveOnPID(pid);if(priorReceive!==false){return this.modelPriorReceive(priorReceive,ts,pid,tgid,kthread,trans,args,event);}\nconst recursiveTrans=this.getRecursiveTransactionNeedingCompletion(pid);if(recursiveTrans!==false){return this.modelRecursiveTransactions(recursiveTrans,ts,pid,kthread,trans,args);}\nconst slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',ts,.03,0,0,args);slice.colorId=ColorScheme.getColorIdForGeneralPurposeString(ts.toString());trans.slice=slice;if(trans.expect_reply){slice.title='binder transaction';}else{slice.title='binder transaction async';}\nthis.addTransactionWaitingForRecv(trans.transaction_key,trans);return true;},binderTransactionReceived(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransReceivedRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const transactionkey=parseInt(event[1]);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const syncComplete=this.getSyncTransNeedsCompletion(transactionkey);if(syncComplete!==false){const syncTrans=syncComplete[0];const syncSlice=syncTrans.slice;const responseTrans=syncComplete[1];const responseSlice=responseTrans.slice;syncSlice.duration=ts-syncSlice.start;const syncInternal=doInternalSlice(syncTrans,syncSlice,ts);const responseTs=responseSlice.start+responseSlice.duration;const responseInternal=doInternalSlice(responseTrans,responseSlice,responseTs);if(responseSlice.outFlowEvents.length===0||syncSlice.inFlowEvents.length===0){const flow=this.generateFlow(responseInternal,syncInternal,responseTrans,syncTrans);syncSlice.inFlowEvents.push(flow);responseSlice.outFlowEvents.push(flow);this.model_.flowEvents.push(flow);}\nfor(let i=1;i<syncSlice.inFlowEvents.length;i++){syncSlice.inFlowEvents[i].duration=ts-syncSlice.inFlowEvents[i].start;}\nreturn true;}\nconst trForRecv=this.getTransactionWaitingForRecv(transactionkey);if(trForRecv!==false){if(!trForRecv.expect_reply){const args=generateBinderArgsForSlice(trForRecv,eventBase.threadName);const slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','binder Async recv',ts,.03,0,0,args);const fakeEvent=[0,0,0,0,0,0,0];const fakeTrans=new BinderTransaction(fakeEvent,pid,ts,kthread);const flow=this.generateFlow(trForRecv.slice,slice,trForRecv,fakeTrans);this.model_.flowEvents.push(flow);trForRecv.slice.title='binder transaction async';trForRecv.slice.duration=.03;return true;}\ntrForRecv.slice.title='binder transaction';this.setCurrentReceiveOnPID(pid,[ts,trForRecv]);return true;}\nreturn false;},binderTransactionAllocBuf(eventName,cpuNumber,pid,ts,eventBase){const event=binderAllocRE.exec(eventBase.details);if(event===null)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const transactionkey=parseInt(event[1]);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const trans=this.peekTransactionWaitingForRecv(transactionkey);if(trans&&trans.slice){trans.slice.args['Data Size']=parseInt(event[2]);trans.slice.args['Offsets Size']=parseInt(event[3]);return true;}\nreturn false;},modelRecursiveTransactions(recursiveTrans,ts,pid,kthread,trans,args){const recursiveSlice=recursiveTrans[1].slice;const origSlice=recursiveTrans[0].slice;recursiveSlice.duration=ts-recursiveSlice.start;recursiveSlice.args=args;trans.slice=recursiveSlice;if(trans.is_reply_transaction){origSlice.duration=ts-origSlice.start;this.addSyncTransNeedingCompletion(trans.transaction_key,recursiveTrans);if(isReplyToOrigin(recursiveTrans[0],trans)){this.removeRecursiveTransaction(pid);}}else{const slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',ts,.03,0,0,args);trans.slice=slice;this.addTransactionWaitingForRecv(trans.transaction_key,trans);}\nreturn true;},modelPriorReceive(priorReceive,ts,pid,tgid,kthread,trans,args,event){const calleeSlice=priorReceive[1].slice;const calleeTrans=priorReceive[1];const recvTs=priorReceive[0];let slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',recvTs,ts-recvTs,0,0);const flow=this.generateFlow(calleeSlice,slice,calleeTrans,trans);this.model_.flowEvents.push(flow);trans.slice=slice;if(trans.is_reply_transaction){slice.title='binder reply';slice.args=args;this.addSyncTransNeedingCompletion(trans.transaction_key,[calleeTrans,trans]);}else{slice.title='binder reply';const trans1=new BinderTransaction(event,pid,ts,kthread);slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','binder transaction',recvTs,(ts-recvTs),0,0,args);if(!trans.expect_reply){slice.title='binder transaction async';slice.duration=.03;}else{}\ntrans1.slice=slice;this.addRecursiveSyncTransNeedingCompletion(pid,[calleeTrans,trans]);this.addTransactionWaitingForRecv(trans.transaction_key,trans1);}\nreturn true;},getRecursiveTransactionNeedingCompletion(pid){if(this.recursiveSyncTransWaitingCompletion_ByPID[pid]===undefined){return false;}\nconst len=this.recursiveSyncTransWaitingCompletion_ByPID[pid].length;if(len===0)return false;return this.recursiveSyncTransWaitingCompletion_ByPID[pid][len-1];},addRecursiveSyncTransNeedingCompletion(pid,tuple){if(this.recursiveSyncTransWaitingCompletion_ByPID[pid]===undefined){this.recursiveSyncTransWaitingCompletion_ByPID[pid]=[];}\nthis.recursiveSyncTransWaitingCompletion_ByPID[pid].push(tuple);},removeRecursiveTransaction(pid){const len=this.recursiveSyncTransWaitingCompletion_ByPID[pid].length;if(len===0){delete this.recursiveSyncTransWaitingCompletion_ByPID[pid];return;}\nthis.recursiveSyncTransWaitingCompletion_ByPID[pid].splice(len-1,1);},setCurrentReceiveOnPID(pid,tuple){if(this.receivedTransWaitingConversion[pid]===undefined){this.receivedTransWaitingConversion[pid]=[];}\nthis.receivedTransWaitingConversion[pid].push(tuple);},getPriorReceiveOnPID(pid){if(this.receivedTransWaitingConversion[pid]===undefined){return false;}\nconst len=this.receivedTransWaitingConversion[pid].length;if(len===0)return false;return this.receivedTransWaitingConversion[pid].splice(len-1,1)[0];},addSyncTransNeedingCompletion(transactionkey,tuple){const dict=this.syncTransWaitingCompletion;dict[transactionkey]=tuple;},getSyncTransNeedsCompletion(transactionkey){const ret=this.syncTransWaitingCompletion[transactionkey];if(ret===undefined)return false;delete this.syncTransWaitingCompletion[transactionkey];return ret;},getTransactionWaitingForRecv(transactionkey){const ret=this.transWaitingRecv[transactionkey];if(ret===undefined)return false;delete this.transWaitingRecv[transactionkey];return ret;},peekTransactionWaitingForRecv(transactionkey){const ret=this.transWaitingRecv[transactionkey];if(ret===undefined)return false;return ret;},addTransactionWaitingForRecv(transactionkey,transaction){this.transWaitingRecv[transactionkey]=transaction;},generateFlow(from,to,fromTrans,toTrans){const title='Transaction from : '+\nthis.pid2name(fromTrans.calling_pid)+' From PID: '+fromTrans.calling_pid+' to pid: '+\ntoTrans.calling_pid+' Thread Name: '+this.pid2name(toTrans.calling_pid);const ts=from.start;const flow=new tr.model.FlowEvent('binder','binder',title,1,ts,[]);flow.startSlice=from;flow.endSlice=to;flow.start=from.start;flow.duration=to.start-ts;from.outFlowEvents.push(flow);to.inFlowEvents.push(flow);return flow;},generateArgsForSlice(tgid,pid,name,kthread){return{'Thread Name':name,pid,'gid':tgid};},pid2name(pid){return this.kthreadlookup[pid];},doNameMappings(pid,tgid,name){this.registerPidName(pid,name);this.registerPidName(tgid,name);},registerPidName(pid,name){if(this.pid2name(pid)===undefined){this.kthreadlookup[pid]=name;}}};Parser.register(BinderParser);return{BinderParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function BusParser(importer){Parser.call(this,importer);importer.registerEventHandler('memory_bus_usage',BusParser.prototype.traceMarkWriteBusEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nBusParser.prototype={__proto__:Parser.prototype,traceMarkWriteBusEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const re=new RegExp('bus=(\\\\S+) rw_bytes=(\\\\d+) r_bytes=(\\\\d+) '+'w_bytes=(\\\\d+) cycles=(\\\\d+) ns=(\\\\d+)');const event=re.exec(eventBase.details);const name=event[1];const rwBytes=parseInt(event[2]);const rBytes=parseInt(event[3]);const wBytes=parseInt(event[4]);const cycles=parseInt(event[5]);const ns=parseInt(event[6]);const sec=tr.b.convertUnit(ns,tr.b.UnitPrefixScale.METRIC.NANO,tr.b.UnitPrefixScale.METRIC.NONE);const readBandwidthInBps=rBytes/sec;const readBandwidthInMiBps=tr.b.convertUnit(readBandwidthInBps,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI);const writeBandwidthInBps=wBytes/sec;const writeBandwidthInMiBps=tr.b.convertUnit(writeBandwidthInBps,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI);let ctr=this.model_.kernel.getOrCreateCounter(null,'bus '+name+' read');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,readBandwidthInMiBps);});ctr=this.model_.kernel.getOrCreateCounter(null,'bus '+name+' write');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,writeBandwidthInMiBps);});return true;}};Parser.register(BusParser);return{BusParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ClockParser(importer){Parser.call(this,importer);importer.registerEventHandler('clock_set_rate',ClockParser.prototype.traceMarkWriteClockEvent.bind(this));importer.registerEventHandler('clk_set_rate',ClockParser.prototype.traceMarkWriteClkEvent.bind(this));importer.registerEventHandler('clock_enable',ClockParser.prototype.traceMarkWriteClockOnOffEvent.bind(this));importer.registerEventHandler('clock_disable',ClockParser.prototype.traceMarkWriteClockOnOffEvent.bind(this));importer.registerEventHandler('clk_enable',ClockParser.prototype.traceMarkWriteClkOnEvent.bind(this));importer.registerEventHandler('clk_disable',ClockParser.prototype.traceMarkWriteClkOffEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nClockParser.prototype={__proto__:Parser.prototype,clockMark(name,subName,value,ts){const ctr=this.model_.kernel.getOrCreateCounter(null,name+' '+subName);if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,value);});},traceMarkWriteClockEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) state=(\\d+)/.exec(eventBase.details);const name=event[1];const rate=parseInt(event[2]);this.clockMark(name,'Frequency',rate,ts);return true;},traceMarkWriteClkEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) (\\d+)/.exec(eventBase.details);const name=event[1];const rate=parseInt(event[2]);this.clockMark(name,'Frequency',rate,ts);return true;},traceMarkWriteClockOnOffEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) state=(\\d+)/.exec(eventBase.details);const name=event[1];const state=parseInt(event[2]);this.clockMark(name,'State',state,ts);return true;},traceMarkWriteClkOnEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/\\S+/.exec(eventBase.details);const name=event[0];this.clockMark(name,'State',1,ts);return true;},traceMarkWriteClkOffEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/\\S+/.exec(eventBase.details);const name=event[0];this.clockMark(name,'State',0,ts);return true;}};Parser.register(ClockParser);return{ClockParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function CpufreqParser(importer){Parser.call(this,importer);importer.registerEventHandler('cpufreq_interactive_up',CpufreqParser.prototype.cpufreqUpDownEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_down',CpufreqParser.prototype.cpufreqUpDownEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_already',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_notyet',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_setspeed',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_target',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_boost',CpufreqParser.prototype.cpufreqBoostUnboostEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_unboost',CpufreqParser.prototype.cpufreqBoostUnboostEvent.bind(this));}\nfunction splitData(input){const data={};const args=input.split(/\\s+/);const len=args.length;for(let i=0;i<len;i++){const item=args[i].split('=');data[item[0]]=parseInt(item[1]);}\nreturn data;}\nCpufreqParser.prototype={__proto__:Parser.prototype,cpufreqSlice(ts,eventName,cpu,args){const kthread=this.importer.getOrCreatePseudoThread('cpufreq');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},cpufreqBoostSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('cpufreq_boost');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},cpufreqUpDownEvent(eventName,cpuNumber,pid,ts,eventBase){const data=splitData(eventBase.details);this.cpufreqSlice(ts,eventName,data.cpu,data);return true;},cpufreqTargetEvent(eventName,cpuNumber,pid,ts,eventBase){const data=splitData(eventBase.details);this.cpufreqSlice(ts,eventName,data.cpu,data);return true;},cpufreqBoostUnboostEvent(eventName,cpuNumber,pid,ts,eventBase){this.cpufreqBoostSlice(ts,eventName,{type:eventBase.details});return true;}};Parser.register(CpufreqParser);return{CpufreqParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DiskParser(importer){Parser.call(this,importer);importer.registerEventHandler('f2fs_write_begin',DiskParser.prototype.f2fsWriteBeginEvent.bind(this));importer.registerEventHandler('f2fs_write_end',DiskParser.prototype.f2fsWriteEndEvent.bind(this));importer.registerEventHandler('f2fs_sync_file_enter',DiskParser.prototype.f2fsSyncFileEnterEvent.bind(this));importer.registerEventHandler('f2fs_sync_file_exit',DiskParser.prototype.f2fsSyncFileExitEvent.bind(this));importer.registerEventHandler('ext4_sync_file_enter',DiskParser.prototype.ext4SyncFileEnterEvent.bind(this));importer.registerEventHandler('ext4_sync_file_exit',DiskParser.prototype.ext4SyncFileExitEvent.bind(this));importer.registerEventHandler('ext4_da_write_begin',DiskParser.prototype.ext4WriteBeginEvent.bind(this));importer.registerEventHandler('ext4_da_write_end',DiskParser.prototype.ext4WriteEndEvent.bind(this));importer.registerEventHandler('block_rq_issue',DiskParser.prototype.blockRqIssueEvent.bind(this));importer.registerEventHandler('block_rq_complete',DiskParser.prototype.blockRqCompleteEvent.bind(this));}\nDiskParser.prototype={__proto__:Parser.prototype,openAsyncSlice(ts,category,threadName,pid,key,name){const kthread=this.importer.getOrCreateKernelThread(category+':'+threadName,pid);const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(category,name);const slice=new asyncSliceConstructor(category,name,ColorScheme.getColorIdForGeneralPurposeString(name),ts);slice.startThread=kthread.thread;if(!kthread.openAsyncSlices){kthread.openAsyncSlices={};}\nkthread.openAsyncSlices[key]=slice;},closeAsyncSlice(ts,category,threadName,pid,key,args){const kthread=this.importer.getOrCreateKernelThread(category+':'+threadName,pid);if(kthread.openAsyncSlices){const slice=kthread.openAsyncSlices[key];if(slice){slice.duration=ts-slice.start;slice.args=args;slice.endThread=kthread.thread;slice.subSlices=[new tr.model.AsyncSlice(category,slice.title,slice.colorId,slice.start,slice.args,slice.duration)];kthread.thread.asyncSliceGroup.push(slice);delete kthread.openAsyncSlices[key];}}},f2fsWriteBeginEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev = \\((\\d+,\\d+)\\), ino = (\\d+), pos = (\\d+), len = (\\d+), flags = (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const key=device+'-'+inode+'-'+pos+'-'+len;this.openAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,'f2fs_write');return true;},f2fsWriteEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev = \\((\\d+,\\d+)\\), ino = (\\d+), pos = (\\d+), len = (\\d+), copied = (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const error=parseInt(event[5])!==len;const key=device+'-'+inode+'-'+pos+'-'+len;this.closeAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},ext4WriteBeginEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) pos (\\d+) len (\\d+) flags (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const key=device+'-'+inode+'-'+pos+'-'+len;this.openAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,'ext4_write');return true;},ext4WriteEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) pos (\\d+) len (\\d+) copied (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const error=parseInt(event[5])!==len;const key=device+'-'+inode+'-'+pos+'-'+len;this.closeAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},f2fsSyncFileEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('dev = \\\\((\\\\d+,\\\\d+)\\\\), ino = (\\\\d+), pino = (\\\\d+), i_mode = (\\\\S+), '+'i_size = (\\\\d+), i_nlink = (\\\\d+), i_blocks = (\\\\d+), i_advise = (\\\\d+)').exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const key=device+'-'+inode;this.openAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,'fsync');return true;},f2fsSyncFileExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('dev = \\\\((\\\\d+,\\\\d+)\\\\), ino = (\\\\d+), checkpoint is (\\\\S+), '+'datasync = (\\\\d+), ret = (\\\\d+)').exec(eventBase.details.replace('not needed','not_needed'));if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const error=parseInt(event[5]);const key=device+'-'+inode;this.closeAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},ext4SyncFileEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) parent (\\d+) datasync (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const datasync=(event[4]==='1')||(event[4]===1);const key=device+'-'+inode;const action=datasync?'fdatasync':'fsync';this.openAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,action);return true;},ext4SyncFileExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) ret (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const error=parseInt(event[3]);const key=device+'-'+inode;this.closeAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},blockRqIssueEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('(\\\\d+,\\\\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? '+'\\\\d+ \\\\(.*\\\\) (\\\\d+) \\\\+ (\\\\d+) \\\\[.*\\\\]').exec(eventBase.details);if(!event)return false;let action;switch(event[3]){case'D':action='discard';break;case'W':action='write';break;case'R':action='read';break;case'N':action='none';break;default:action='unknown';break;}\nif(event[2]){action+=' flush';}\nif(event[4]==='F'){action+=' fua';}\nif(event[5]==='A'){action+=' ahead';}\nif(event[6]==='S'){action+=' sync';}\nif(event[7]==='M'){action+=' meta';}\nconst device=event[1];const sector=parseInt(event[8]);const numSectors=parseInt(event[9]);const key=device+'-'+sector+'-'+numSectors;this.openAsyncSlice(ts,'block',eventBase.threadName,eventBase.pid,key,action);return true;},blockRqCompleteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('(\\\\d+,\\\\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? '+'\\\\(.*\\\\) (\\\\d+) \\\\+ (\\\\d+) \\\\[(.*)\\\\]').exec(eventBase.details);if(!event)return false;const device=event[1];const sector=parseInt(event[8]);const numSectors=parseInt(event[9]);const error=parseInt(event[10]);const key=device+'-'+sector+'-'+numSectors;this.closeAsyncSlice(ts,'block',eventBase.threadName,eventBase.pid,key,{device,sector,numSectors,error});return true;}};Parser.register(DiskParser);return{DiskParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DmaFenceParser(importer){Parser.call(this,importer);this.model_=importer.model_;importer.registerEventHandler('dma_fence_init',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('dma_fence_emit',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('dma_fence_destroy',DmaFenceParser.prototype.fenceDestroyEvent.bind(this));importer.registerEventHandler('dma_fence_enable_signal',DmaFenceParser.prototype.fenceEnableSignalEvent.bind(this));importer.registerEventHandler('dma_fence_signaled',DmaFenceParser.prototype.fenceSignaledEvent.bind(this));importer.registerEventHandler('dma_fence_wait_start',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('dma_fence_wait_end',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('fence_init',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('fence_emit',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('fence_destroy',DmaFenceParser.prototype.fenceDestroyEvent.bind(this));importer.registerEventHandler('fence_enable_signal',DmaFenceParser.prototype.fenceEnableSignalEvent.bind(this));importer.registerEventHandler('fence_signaled',DmaFenceParser.prototype.fenceSignaledEvent.bind(this));importer.registerEventHandler('fence_wait_start',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('fence_wait_end',DmaFenceParser.prototype.fenceWaitEvent.bind(this));this.model_=importer.model_;}\nconst fenceRE=/driver=(\\S+) timeline=(\\S+) context=(\\d+) seqno=(\\d+)/;DmaFenceParser.prototype={__proto__:Parser.prototype,initEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);thread.lastActiveTs=ts;return true;},fenceDestroyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_destroy('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;},fenceEnableSignalEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_enable('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;},fenceSignaledEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_signal('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;return true;},fenceWaitEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined)return false;const event=fenceRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst name='dma_fence_wait(\"'+event[2]+'\")';if(eventName.endsWith('start')){const slice=slices.beginSlice(null,name,ts,{driver:event[1],context:event[3],seqno:event[4],});}else{if(slices.openSliceCount>0){slices.endSlice(ts);}}\nreturn true;},};Parser.register(DmaFenceParser);return{DmaFenceParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DrmParser(importer){Parser.call(this,importer);importer.registerEventHandler('drm_vblank_event',DrmParser.prototype.vblankEvent.bind(this));}\nDrmParser.prototype={__proto__:Parser.prototype,drmVblankSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('drm_vblank');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},vblankEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/crtc=(\\d+), seq=(\\d+)/.exec(eventBase.details);if(!event)return false;const crtc=parseInt(event[1]);const seq=parseInt(event[2]);this.drmVblankSlice(ts,'vblank:'+crtc,{crtc,seq});return true;}};Parser.register(DrmParser);return{DrmParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ExynosParser(importer){Parser.call(this,importer);importer.registerEventHandler('exynos_busfreq_target_int',ExynosParser.prototype.busfreqTargetIntEvent.bind(this));importer.registerEventHandler('exynos_busfreq_target_mif',ExynosParser.prototype.busfreqTargetMifEvent.bind(this));importer.registerEventHandler('exynos_page_flip_state',ExynosParser.prototype.pageFlipStateEvent.bind(this));}\nExynosParser.prototype={__proto__:Parser.prototype,exynosBusfreqSample(name,ts,frequency){const targetCpu=this.importer.getOrCreateCpu(0);const counter=targetCpu.getOrCreateCounter('',name);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries('frequency',ColorScheme.getColorIdForGeneralPurposeString(counter.name+'.'+'frequency')));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,frequency);});},busfreqTargetIntEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('INT Frequency',ts,parseInt(event[1]));return true;},busfreqTargetMifEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('MIF Frequency',ts,parseInt(event[1]));return true;},exynosPageFlipStateOpenSlice(ts,pipe,fb,state){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');kthread.openSliceTS=ts;kthread.openSlice=state;},exynosPageFlipStateCloseSlice(ts,pipe,fb,args){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;},pageFlipStateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/pipe=(\\d+), fb=(\\d+), state=(.*)/.exec(eventBase.details);if(!event)return false;const pipe=parseInt(event[1]);const fb=parseInt(event[2]);const state=event[3];this.exynosPageFlipStateCloseSlice(ts,pipe,fb,{pipe,fb});if(state!=='flipped'){this.exynosPageFlipStateOpenSlice(ts,pipe,fb,state);}\nreturn true;}};Parser.register(ExynosParser);return{ExynosParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function GestureParser(importer){Parser.call(this,importer);importer.registerEventHandler('tracing_mark_write:log',GestureParser.prototype.logEvent.bind(this));importer.registerEventHandler('tracing_mark_write:SyncInterpret',GestureParser.prototype.syncEvent.bind(this));importer.registerEventHandler('tracing_mark_write:HandleTimer',GestureParser.prototype.timerEvent.bind(this));}\nGestureParser.prototype={__proto__:Parser.prototype,gestureOpenSlice(title,ts,opt_args){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;thread.sliceGroup.beginSlice('touchpad_gesture',title,ts,opt_args);},gestureCloseSlice(title,ts){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;if(thread.sliceGroup.openSliceCount){const slice=thread.sliceGroup.mostRecentlyOpenedPartialSlice;if(slice.title!==title){this.importer.model.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+\nslice.title+' in openSlice, and is '+\ntitle+' in endSlice'});}else{thread.sliceGroup.endSlice(ts);}}},logEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('GestureLog',ts,{name:innerEvent[2]});break;case'end':this.gestureCloseSlice('GestureLog',ts);}\nreturn true;},syncEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('SyncInterpret',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('SyncInterpret',ts);}\nreturn true;},timerEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('HandleTimer',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('HandleTimer',ts);}\nreturn true;}};Parser.register(GestureParser);return{GestureParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I2cParser(importer){Parser.call(this,importer);importer.registerEventHandler('i2c_write',I2cParser.prototype.i2cWriteEvent.bind(this));importer.registerEventHandler('i2c_read',I2cParser.prototype.i2cReadEvent.bind(this));importer.registerEventHandler('i2c_reply',I2cParser.prototype.i2cReplyEvent.bind(this));importer.registerEventHandler('i2c_result',I2cParser.prototype.i2cResultEvent.bind(this));}\nconst i2cWriteReplyRE=new RegExp('i2c-(\\\\d+) #(\\\\d+) a=([\\\\da-fA-F]+) f=([\\\\da-fA-F]+) l=(\\\\d+) '+'(\\\\[[\\\\da-fA-F\\\\-]+\\\\])');const i2cReadRE=/i2c-(\\d+) #(\\d+) a=([\\da-fA-F]+) f=([\\da-fA-F]+) l=(\\d+)/;const i2cResultRE=/i2c-(\\d+) n=(\\d+) ret=(\\d+)/;I2cParser.prototype={__proto__:Parser.prototype,i2cWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c write';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cReadEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cReadRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c read';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength};return true;},i2cReplyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c reply';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cResultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cResultRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const numMessages=event[2];const ret=event[3];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);const args=thread.lastEntryArgs;if(args!==undefined){args['Number of messages']=numMessages;args.Return=ret;}\npushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle=undefined;thread.lastEntryTs=undefined;thread.lastEntryArgs=undefined;return true;},};function pushLastSliceIfNeeded(thread,id,currentTs){if(thread.lastEntryTs!==undefined){const duration=currentTs-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.lastEntryTitle,ColorScheme.getColorIdForGeneralPurposeString(id),thread.lastEntryTs,thread.lastEntryArgs,duration);thread.thread.sliceGroup.pushSlice(slice);}}\nParser.register(I2cParser);return{I2cParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I915Parser(importer){Parser.call(this,importer);importer.registerEventHandler('i915_gem_object_create',I915Parser.prototype.gemObjectCreateEvent.bind(this));importer.registerEventHandler('i915_gem_object_bind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_unbind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_change_domain',I915Parser.prototype.gemObjectChangeDomainEvent.bind(this));importer.registerEventHandler('i915_gem_object_pread',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_pwrite',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_fault',I915Parser.prototype.gemObjectFaultEvent.bind(this));importer.registerEventHandler('i915_gem_object_clflush',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_object_destroy',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_ring_dispatch',I915Parser.prototype.gemRingDispatchEvent.bind(this));importer.registerEventHandler('i915_gem_ring_flush',I915Parser.prototype.gemRingFlushEvent.bind(this));importer.registerEventHandler('i915_gem_request',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_add',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_complete',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_retire',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_begin',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_end',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_begin',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_end',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_reg_rw',I915Parser.prototype.regRWEvent.bind(this));importer.registerEventHandler('i915_flip_request',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('i915_flip_complete',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('intel_gpu_freq_change',I915Parser.prototype.gpuFrequency.bind(this));}\nI915Parser.prototype={__proto__:Parser.prototype,i915FlipOpenSlice(ts,obj,plane){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');kthread.openSliceTS=ts;kthread.openSlice='flip:'+obj+'/'+plane;},i915FlipCloseSlice(ts,args){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;},i915GemObjectSlice(ts,eventName,obj,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem');kthread.openSlice=eventName+':'+obj;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915GemRingSlice(ts,eventName,dev,ring,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem_ring');kthread.openSlice=eventName+':'+dev+'.'+ring;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915RegSlice(ts,eventName,reg,args){const kthread=this.importer.getOrCreatePseudoThread('i915_reg');kthread.openSlice=eventName+':'+reg;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915FreqChangeSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gpu_freq');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},gemObjectCreateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), size=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const size=parseInt(event[2]);this.i915GemObjectSlice(ts,eventName,obj,{obj,size});return true;},gemObjectBindEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), offset=(\\w+), size=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=event[2];const size=parseInt(event[3]);this.i915ObjectGemSlice(ts,eventName+':'+obj,{obj,offset,size});return true;},gemObjectChangeDomainEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), read=(\\w+=>\\w+), write=(\\w+=>\\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const read=event[2];const write=event[3];this.i915GemObjectSlice(ts,eventName,obj,{obj,read,write});return true;},gemObjectPreadWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), offset=(\\d+), len=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=parseInt(event[2]);const len=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,offset,len});return true;},gemObjectFaultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), (\\w+) index=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const type=event[2];const index=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,type,index});return true;},gemObjectDestroyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];this.i915GemObjectSlice(ts,eventName,obj,{obj});return true;},gemRingDispatchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+), seqno=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingFlushEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\w+), invalidate=(\\w+), flush=(\\w+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const invalidate=event[3];const flush=event[4];this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,invalidate,flush});return true;},gemRequestEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+), seqno=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring});return true;},regRWEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/(\\w+) reg=(\\w+), len=(\\d+), val=(\\(\\w+, \\w+\\))/.exec(eventBase.details);if(!event)return false;const rw=event[1];const reg=event[2];const len=event[3];const data=event[3];this.i915RegSlice(ts,rw,reg,{rw,reg,len,data});return true;},flipEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/plane=(\\d+), obj=(\\w+)/.exec(eventBase.details);if(!event)return false;const plane=parseInt(event[1]);const obj=event[2];if(eventName==='i915_flip_request'){this.i915FlipOpenSlice(ts,obj,plane);}else{this.i915FlipCloseSlice(ts,{obj,plane});}\nreturn true;},gpuFrequency(eventName,cpuNumver,pid,ts,eventBase){const event=/new_freq=(\\d+)/.exec(eventBase.details);if(!event)return false;const freq=parseInt(event[1]);this.i915FreqChangeSlice(ts,eventName,{freq});return true;}};Parser.register(I915Parser);return{I915Parser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IonHeapParser(importer){Parser.call(this,importer);importer.registerEventHandler('ion_heap_shrink',IonHeapParser.prototype.traceIonHeapShrink.bind(this));importer.registerEventHandler('ion_heap_grow',IonHeapParser.prototype.traceIonHeapGrow.bind(this));this.model_=importer.model_;}\nconst TestExports={};const ionHeapRE=new RegExp('heap_name=(\\\\S+), len=(\\\\d+), total_allocated=(\\\\d+)');TestExports.ionHeapRE=ionHeapRE;IonHeapParser.prototype={__proto__:Parser.prototype,traceIonHeapShrink(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;},traceIonHeapGrow(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;}};Parser.register(IonHeapParser);return{IonHeapParser,_IonHeapParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IrqParser(importer){Parser.call(this,importer);importer.registerEventHandler('irq_handler_entry',IrqParser.prototype.irqHandlerEntryEvent.bind(this));importer.registerEventHandler('irq_handler_exit',IrqParser.prototype.irqHandlerExitEvent.bind(this));importer.registerEventHandler('softirq_raise',IrqParser.prototype.softirqRaiseEvent.bind(this));importer.registerEventHandler('softirq_entry',IrqParser.prototype.softirqEntryEvent.bind(this));importer.registerEventHandler('softirq_exit',IrqParser.prototype.softirqExitEvent.bind(this));importer.registerEventHandler('ipi_entry',IrqParser.prototype.ipiEntryEvent.bind(this));importer.registerEventHandler('ipi_exit',IrqParser.prototype.ipiExitEvent.bind(this));importer.registerEventHandler('preempt_disable',IrqParser.prototype.preemptStartEvent.bind(this));importer.registerEventHandler('preempt_enable',IrqParser.prototype.preemptEndEvent.bind(this));importer.registerEventHandler('irq_disable',IrqParser.prototype.irqoffStartEvent.bind(this));importer.registerEventHandler('irq_enable',IrqParser.prototype.irqoffEndEvent.bind(this));}\nconst irqHandlerEntryRE=/irq=(\\d+) name=(.+)/;const irqHandlerExitRE=/irq=(\\d+) ret=(.+)/;const softirqRE=/vec=(\\d+) \\[action=(.+)\\]/;const ipiHandlerExitRE=/\\((.+)\\)/;const preemptirqRE=/caller=(.+) parent=(.+)/;IrqParser.prototype={__proto__:Parser.prototype,irqHandlerEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerEntryRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const name=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqName=name;return true;},irqHandlerExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerExitRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const ret=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IRQ ('+thread.irqName+')',ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{ret},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;thread.irqName=undefined;return true;},softirqRaiseEvent(eventName,cpuNumber,pid,ts,eventBase){return true;},softirqEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},softirqExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const vec=parseInt(event[1]);const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',action,ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{vec},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},ipiEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},ipiExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=ipiHandlerExitRE.exec(eventBase.details);if(!event)return false;const ipiName=event[1];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IPI ('+ipiName+')',ColorScheme.getColorIdForGeneralPurposeString(ipiName),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},preemptStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.lastEntryTs=ts;thread.preemptStartCaller=event[1];thread.preemptStartParent=event[2];return true;},preemptEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.preemptEndCaller=event[1];thread.preemptEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.preemptStartParent+': '+thread.preemptStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.preemptEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},irqoffStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqoffStartCaller=event[1];thread.irqoffStartParent=event[2];return true;},irqoffEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.irqoffEndCaller=event[1];thread.irqoffEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.irqoffStartParent+': '+thread.irqoffStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.irqoffEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;}};Parser.register(IrqParser);return{IrqParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const LinuxPerfParser=tr.e.importer.linux_perf.Parser;function KernelFuncParser(importer){LinuxPerfParser.call(this,importer);importer.registerEventHandler('graph_ent',KernelFuncParser.prototype.traceKernelFuncEnterEvent.bind(this));importer.registerEventHandler('graph_ret',KernelFuncParser.prototype.traceKernelFuncReturnEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nconst TestExports={};const funcEnterRE=new RegExp('func=(.+)');TestExports.funcEnterRE=funcEnterRE;KernelFuncParser.prototype={__proto__:LinuxPerfParser.prototype,traceKernelFuncEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const eventData=funcEnterRE.exec(eventBase.details);if(!eventData)return false;if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const name=eventData[1];const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst slice=slices.beginSlice(null,name,ts,{});return true;},traceKernelFuncReturnEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nif(slices.openSliceCount>0){slices.endSlice(ts);}\nreturn true;}};LinuxPerfParser.register(KernelFuncParser);return{KernelFuncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function MaliParser(importer){Parser.call(this,importer);importer.registerEventHandler('mali_dvfs_event',MaliParser.prototype.dvfsEventEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_clock',MaliParser.prototype.dvfsSetClockEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_voltage',MaliParser.prototype.dvfsSetVoltageEvent.bind(this));this.addJMCounter('mali_hwc_MESSAGES_SENT','Messages Sent');this.addJMCounter('mali_hwc_MESSAGES_RECEIVED','Messages Received');this.addJMCycles('mali_hwc_GPU_ACTIVE','GPU Active');this.addJMCycles('mali_hwc_IRQ_ACTIVE','IRQ Active');for(let i=0;i<7;i++){const jobStr='JS'+i;const jobHWCStr='mali_hwc_'+jobStr;this.addJMCounter(jobHWCStr+'_JOBS',jobStr+' Jobs');this.addJMCounter(jobHWCStr+'_TASKS',jobStr+' Tasks');this.addJMCycles(jobHWCStr+'_ACTIVE',jobStr+' Active');this.addJMCycles(jobHWCStr+'_WAIT_READ',jobStr+' Wait Read');this.addJMCycles(jobHWCStr+'_WAIT_ISSUE',jobStr+' Wait Issue');this.addJMCycles(jobHWCStr+'_WAIT_DEPEND',jobStr+' Wait Depend');this.addJMCycles(jobHWCStr+'_WAIT_FINISH',jobStr+' Wait Finish');}\nthis.addTilerCounter('mali_hwc_TRIANGLES','Triangles');this.addTilerCounter('mali_hwc_QUADS','Quads');this.addTilerCounter('mali_hwc_POLYGONS','Polygons');this.addTilerCounter('mali_hwc_POINTS','Points');this.addTilerCounter('mali_hwc_LINES','Lines');this.addTilerCounter('mali_hwc_VCACHE_HIT','VCache Hit');this.addTilerCounter('mali_hwc_VCACHE_MISS','VCache Miss');this.addTilerCounter('mali_hwc_FRONT_FACING','Front Facing');this.addTilerCounter('mali_hwc_BACK_FACING','Back Facing');this.addTilerCounter('mali_hwc_PRIM_VISIBLE','Prim Visible');this.addTilerCounter('mali_hwc_PRIM_CULLED','Prim Culled');this.addTilerCounter('mali_hwc_PRIM_CLIPPED','Prim Clipped');this.addTilerCounter('mali_hwc_WRBUF_HIT','Wrbuf Hit');this.addTilerCounter('mali_hwc_WRBUF_MISS','Wrbuf Miss');this.addTilerCounter('mali_hwc_WRBUF_LINE','Wrbuf Line');this.addTilerCounter('mali_hwc_WRBUF_PARTIAL','Wrbuf Partial');this.addTilerCounter('mali_hwc_WRBUF_STALL','Wrbuf Stall');this.addTilerCycles('mali_hwc_ACTIVE','Tiler Active');this.addTilerCycles('mali_hwc_INDEX_WAIT','Index Wait');this.addTilerCycles('mali_hwc_INDEX_RANGE_WAIT','Index Range Wait');this.addTilerCycles('mali_hwc_VERTEX_WAIT','Vertex Wait');this.addTilerCycles('mali_hwc_PCACHE_WAIT','Pcache Wait');this.addTilerCycles('mali_hwc_WRBUF_WAIT','Wrbuf Wait');this.addTilerCycles('mali_hwc_BUS_READ','Bus Read');this.addTilerCycles('mali_hwc_BUS_WRITE','Bus Write');this.addTilerCycles('mali_hwc_TILER_UTLB_STALL','Tiler UTLB Stall');this.addTilerCycles('mali_hwc_TILER_UTLB_HIT','Tiler UTLB Hit');this.addFragCycles('mali_hwc_FRAG_ACTIVE','Active');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES','Primitives');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES_DROPPED','Primitives Dropped');this.addFragCycles('mali_hwc_FRAG_CYCLE_DESC','Descriptor Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_PLR','PLR Processing??');this.addFragCycles('mali_hwc_FRAG_CYCLES_VERT','Vertex Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_TRISETUP','Triangle Setup');this.addFragCycles('mali_hwc_FRAG_CYCLES_RAST','Rasterization???');this.addFragCounter('mali_hwc_FRAG_THREADS','Threads');this.addFragCounter('mali_hwc_FRAG_DUMMY_THREADS','Dummy Threads');this.addFragCounter('mali_hwc_FRAG_QUADS_RAST','Quads Rast');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_TEST','Quads EZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_KILLED','Quads EZS Killed');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_TEST','Quads LZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_KILLED','Quads LZS Killed');this.addFragCycles('mali_hwc_FRAG_CYCLE_NO_TILE','No Tiles');this.addFragCounter('mali_hwc_FRAG_NUM_TILES','Tiles');this.addFragCounter('mali_hwc_FRAG_TRANS_ELIM','Transactions Eliminated');this.addComputeCycles('mali_hwc_COMPUTE_ACTIVE','Active');this.addComputeCounter('mali_hwc_COMPUTE_TASKS','Tasks');this.addComputeCounter('mali_hwc_COMPUTE_THREADS','Threads Started');this.addComputeCycles('mali_hwc_COMPUTE_CYCLES_DESC','Waiting for Descriptors');this.addTripipeCycles('mali_hwc_TRIPIPE_ACTIVE','Active');this.addArithCounter('mali_hwc_ARITH_WORDS','Instructions (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_REG','Reg scheduling stalls (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_L0','L0 cache miss stalls (/Pipes)');this.addArithCounter('mali_hwc_ARITH_FRAG_DEPEND','Frag dep check failures (/Pipes)');this.addLSCounter('mali_hwc_LS_WORDS','Instruction Words Completed');this.addLSCounter('mali_hwc_LS_ISSUES','Full Pipeline Issues');this.addLSCounter('mali_hwc_LS_RESTARTS','Restarts (unpairable insts)');this.addLSCounter('mali_hwc_LS_REISSUES_MISS','Pipeline reissue (cache miss/uTLB)');this.addLSCounter('mali_hwc_LS_REISSUES_VD','Pipeline reissue (varying data)');this.addLSCounter('mali_hwc_LS_REISSUE_ATTRIB_MISS','Pipeline reissue (attribute cache miss)');this.addLSCounter('mali_hwc_LS_REISSUE_NO_WB','Writeback not used');this.addTexCounter('mali_hwc_TEX_WORDS','Words');this.addTexCounter('mali_hwc_TEX_BUBBLES','Bubbles');this.addTexCounter('mali_hwc_TEX_WORDS_L0','Words L0');this.addTexCounter('mali_hwc_TEX_WORDS_DESC','Words Desc');this.addTexCounter('mali_hwc_TEX_THREADS','Threads');this.addTexCounter('mali_hwc_TEX_RECIRC_FMISS','Recirc due to Full Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_DESC','Recirc due to Desc Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_MULTI','Recirc due to Multipass');this.addTexCounter('mali_hwc_TEX_RECIRC_PMISS','Recirc due to Partial Cache Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_CONF','Recirc due to Cache Conflict');this.addLSCCounter('mali_hwc_LSC_READ_HITS','Read Hits');this.addLSCCounter('mali_hwc_LSC_READ_MISSES','Read Misses');this.addLSCCounter('mali_hwc_LSC_WRITE_HITS','Write Hits');this.addLSCCounter('mali_hwc_LSC_WRITE_MISSES','Write Misses');this.addLSCCounter('mali_hwc_LSC_ATOMIC_HITS','Atomic Hits');this.addLSCCounter('mali_hwc_LSC_ATOMIC_MISSES','Atomic Misses');this.addLSCCounter('mali_hwc_LSC_LINE_FETCHES','Line Fetches');this.addLSCCounter('mali_hwc_LSC_DIRTY_LINE','Dirty Lines');this.addLSCCounter('mali_hwc_LSC_SNOOPS','Snoops');this.addAXICounter('mali_hwc_AXI_TLB_STALL','Address channel stall');this.addAXICounter('mali_hwc_AXI_TLB_MISS','Cache Miss');this.addAXICounter('mali_hwc_AXI_TLB_TRANSACTION','Transactions');this.addAXICounter('mali_hwc_LS_TLB_MISS','LS Cache Miss');this.addAXICounter('mali_hwc_LS_TLB_HIT','LS Cache Hit');this.addAXICounter('mali_hwc_AXI_BEATS_READ','Read Beats');this.addAXICounter('mali_hwc_AXI_BEATS_WRITE','Write Beats');this.addMMUCounter('mali_hwc_MMU_TABLE_WALK','Page Table Walks');this.addMMUCounter('mali_hwc_MMU_REPLAY_MISS','Cache Miss from Replay Buffer');this.addMMUCounter('mali_hwc_MMU_REPLAY_FULL','Replay Buffer Full');this.addMMUCounter('mali_hwc_MMU_NEW_MISS','Cache Miss on New Request');this.addMMUCounter('mali_hwc_MMU_HIT','Cache Hit');this.addMMUCycles('mali_hwc_UTLB_STALL','UTLB Stalled');this.addMMUCycles('mali_hwc_UTLB_REPLAY_MISS','UTLB Replay Miss');this.addMMUCycles('mali_hwc_UTLB_REPLAY_FULL','UTLB Replay Full');this.addMMUCycles('mali_hwc_UTLB_NEW_MISS','UTLB New Miss');this.addMMUCycles('mali_hwc_UTLB_HIT','UTLB Hit');this.addL2Counter('mali_hwc_L2_READ_BEATS','Read Beats');this.addL2Counter('mali_hwc_L2_WRITE_BEATS','Write Beats');this.addL2Counter('mali_hwc_L2_ANY_LOOKUP','Any Lookup');this.addL2Counter('mali_hwc_L2_READ_LOOKUP','Read Lookup');this.addL2Counter('mali_hwc_L2_SREAD_LOOKUP','Shareable Read Lookup');this.addL2Counter('mali_hwc_L2_READ_REPLAY','Read Replayed');this.addL2Counter('mali_hwc_L2_READ_SNOOP','Read Snoop');this.addL2Counter('mali_hwc_L2_READ_HIT','Read Cache Hit');this.addL2Counter('mali_hwc_L2_CLEAN_MISS','CleanUnique Miss');this.addL2Counter('mali_hwc_L2_WRITE_LOOKUP','Write Lookup');this.addL2Counter('mali_hwc_L2_SWRITE_LOOKUP','Shareable Write Lookup');this.addL2Counter('mali_hwc_L2_WRITE_REPLAY','Write Replayed');this.addL2Counter('mali_hwc_L2_WRITE_SNOOP','Write Snoop');this.addL2Counter('mali_hwc_L2_WRITE_HIT','Write Cache Hit');this.addL2Counter('mali_hwc_L2_EXT_READ_FULL','ExtRD with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_READ_HALF','ExtRD with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_FULL','ExtWR with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_HALF','ExtWR with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_READ','External Read (ExtRD)');this.addL2Counter('mali_hwc_L2_EXT_READ_LINE','ExtRD (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE','External Write (ExtWR)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_LINE','ExtWR (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_SMALL','ExtWR (burst size <64B)');this.addL2Counter('mali_hwc_L2_EXT_BARRIER','External Barrier');this.addL2Counter('mali_hwc_L2_EXT_AR_STALL','Address Read stalls');this.addL2Counter('mali_hwc_L2_EXT_R_BUF_FULL','Response Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_RD_BUF_FULL','Read Data Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_R_RAW','RAW hazard stalls');this.addL2Counter('mali_hwc_L2_EXT_W_STALL','Write Data stalls');this.addL2Counter('mali_hwc_L2_EXT_W_BUF_FULL','Write Data Buffer full');this.addL2Counter('mali_hwc_L2_EXT_R_W_HAZARD','WAW or WAR hazard stalls');this.addL2Counter('mali_hwc_L2_TAG_HAZARD','Tag hazard replays');this.addL2Cycles('mali_hwc_L2_SNOOP_FULL','Snoop buffer full');this.addL2Cycles('mali_hwc_L2_REPLAY_FULL','Replay buffer full');importer.registerEventHandler('tracing_mark_write:mali_driver',MaliParser.prototype.maliDDKEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_start',MaliParser.prototype.maliJobEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_stop',MaliParser.prototype.maliJobEvent.bind(this));this.model_=importer.model_;this.deferredJobs_={};}\nMaliParser.prototype={__proto__:Parser.prototype,maliDDKOpenSlice(pid,tid,ts,func,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const funcArgs=/^([\\w\\d_]*)(?:\\(\\))?:?\\s*(.*)$/.exec(func);thread.sliceGroup.beginSlice('gpu-driver',funcArgs[1],ts,{'args':funcArgs[2],blockinfo});},maliDDKCloseSlice(pid,tid,ts,args,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);if(!thread.sliceGroup.openSliceCount){return;}\nthread.sliceGroup.endSlice(ts);},autoDetectLineRE(line){const lineREWithThread=/^\\s*\\(([\\w\\-]*)\\)\\s*(\\w+):\\s*([\\w\\\\\\/\\.\\-]*@\\d*):?\\s*(.*)$/;if(lineREWithThread.test(line)){return lineREWithThread;}\nconst lineRENoThread=/^s*()(\\w+):\\s*([\\w\\\\\\/.\\-]*):?\\s*(.*)$/;if(lineRENoThread.test(line)){return lineRENoThread;}\nreturn null;},lineRE:null,maliDDKEvent(eventName,cpuNumber,pid,ts,eventBase){if(this.lineRE===null){this.lineRE=this.autoDetectLineRE(eventBase.details);if(this.lineRE===null)return false;}\nconst maliEvent=this.lineRE.exec(eventBase.details);const tid=(maliEvent[1]===''?'mali':maliEvent[1]);switch(maliEvent[2]){case'cros_trace_print_enter':this.maliDDKOpenSlice(pid,tid,ts,maliEvent[4],maliEvent[3]);break;case'cros_trace_print_exit':this.maliDDKCloseSlice(pid,tid,ts,[],maliEvent[3]);}\nreturn true;},maliJobEvent(eventName,cpuNumber,pid,ts,eventBase){const jobEventRE=/^.*tracing_mark_write: (S|F)\\|(\\d+)\\|(\\w+)-job\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|([a-z0-9]+)\\|(\\d+)$/;const jobEvent=jobEventRE.exec(eventBase.details);if(!jobEvent){this.model_.importWarning({type:'parse_error',args:'unexpected mali_job_systrace_event_* event syntax'});return;}\nconst jobType=jobEvent[3];const jobId=jobEvent[4];const thread=this.importer.model_.getOrCreateProcess(0).getOrCreateThread('mali:'+jobType);switch(jobEvent[1]){case'S':{const args={ctx:jobEvent[9],pid:parseInt(jobEvent[2],10),dep0:parseInt(jobEvent[5],10),dep1:parseInt(jobEvent[7],10)};if(thread.sliceGroup.openSliceCount){if(!(jobType in this.deferredJobs_)){this.deferredJobs_[jobType]=[];}\nthis.deferredJobs_[jobType].push({id:jobId,args});}else{thread.sliceGroup.beginSlice(null,jobId,ts,args);}}break;case'F':{if(!thread.sliceGroup.openSliceCount){return;}\nif(thread.sliceGroup.mostRecentlyOpenedPartialSlice.title!==jobId){this.model_.importWarning({type:'invalid event nesting',message:'non-sequential jobs in same mali job slot'});}\nthread.sliceGroup.endSlice(ts);const deferredJobs=this.deferredJobs_[jobType];if(deferredJobs&&deferredJobs.length){const job=deferredJobs.shift();thread.sliceGroup.beginSlice(null,job.id,ts,job.args);}}break;}\nreturn true;},dvfsSample(counterName,seriesName,ts,s){const value=parseInt(s);const counter=this.model_.kernel.getOrCreateCounter('DVFS',counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,value);});},dvfsEventEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/utilization=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Utilization','utilization',ts,event[1]);return true;},dvfsSetClockEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Frequency','frequency',ts,event[1]);return true;},dvfsSetVoltageEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/voltage=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Voltage','voltage',ts,event[1]);return true;},hwcSample(cat,counterName,seriesName,ts,eventBase){const event=/val=(\\d+)/.exec(eventBase.details);if(!event)return false;const value=parseInt(event[1]);const counter=this.model_.kernel.getOrCreateCounter(cat,counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,value);});return true;},jmSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:jm','JM: '+ctrName,seriesName,ts,eventBase);},addJMCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addJMCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},tilerSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:tiler','Tiler: '+ctrName,seriesName,ts,eventBase);},addTilerCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTilerCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},fragSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:fragment','Fragment: '+ctrName,seriesName,ts,eventBase);},addFragCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addFragCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},computeSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:compute','Compute: '+ctrName,seriesName,ts,eventBase);},addComputeCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addComputeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTripipeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:shader','Tripipe: '+hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},arithSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:arith','Arith: '+ctrName,seriesName,ts,eventBase);},addArithCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addArithCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:ls','LS: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},textureSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:texture','Texture: '+ctrName,seriesName,ts,eventBase);},addTexCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.textureSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:lsc','LSC: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addAXICounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:axi','AXI: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},mmuSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:mmu','MMU: '+ctrName,seriesName,ts,eventBase);},addMMUCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addMMUCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},l2Sample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:l2','L2: '+ctrName,seriesName,ts,eventBase);},addL2Counter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addL2Cycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));}};Parser.register(MaliParser);return{MaliParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function MemReclaimParser(importer){Parser.call(this,importer);importer.registerEventHandler('mm_vmscan_kswapd_wake',MemReclaimParser.prototype.kswapdWake.bind(this));importer.registerEventHandler('mm_vmscan_kswapd_sleep',MemReclaimParser.prototype.kswapdSleep.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_begin',MemReclaimParser.prototype.reclaimBegin.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_end',MemReclaimParser.prototype.reclaimEnd.bind(this));importer.registerEventHandler('lowmemory_kill',MemReclaimParser.prototype.lowmemoryKill.bind(this));}\nconst kswapdWakeRE=/nid=(\\d+) order=(\\d+)/;const kswapdSleepRE=/nid=(\\d+)/;const reclaimBeginRE=/order=(\\d+) may_writepage=\\d+ gfp_flags=(.+)/;const reclaimEndRE=/nr_reclaimed=(\\d+)/;const lowmemoryRE=/([^ ]+) \\((\\d+)\\), page cache (\\d+)kB \\(limit (\\d+)kB\\), free (-?\\d+)Kb/;MemReclaimParser.prototype={__proto__:Parser.prototype,kswapdWake(eventName,cpuNumber,pid,ts,eventBase){const event=kswapdWakeRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const nid=parseInt(event[1]);const order=parseInt(event[2]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.openSliceTS){if(order>kthread.order){kthread.order=order;}}else{kthread.openSliceTS=ts;kthread.order=order;}\nkthread.waitingFor='kswapSleep';return true;},kswapdSleep(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='kswapSleep')return false;kthread.waitingFor=undefined;if(kthread.openSliceTS){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim',eventBase.threadName,kthread.openSliceTS,ts-kthread.openSliceTS,0,0,{order:kthread.order});}\nkthread.openSliceTS=undefined;kthread.order=undefined;return true;},reclaimBegin(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimBeginRE.exec(eventBase.details);if(!event)return false;const order=parseInt(event[1]);const gfp=event[2];const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.openMemReclaimSliceTS=ts;kthread.order=order;kthread.gfp=gfp;kthread.waitingFor='reclaimEnd';return true;},reclaimEnd(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimEndRE.exec(eventBase.details);if(!event)return false;const nrReclaimed=parseInt(event[1]);const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='reclaimEnd')return false;kthread.waitingFor=undefined;if(kthread.openMemReclaimSliceTS!==undefined){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim','direct reclaim',kthread.openMemReclaimSliceTS,ts-kthread.openMemReclaimSliceTS,0,0,{order:kthread.order,gfp:kthread.gfp,nr_reclaimed:nrReclaimed});kthread.openMemReclaimSliceTS=undefined;kthread.order=undefined;kthread.gfp=undefined;return true;}\nreturn false;},lowmemoryKill(eventName,cpuNumber,pid,ts,eventBase){const event=lowmemoryRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const killedName=event[1];const killedPid=parseInt(event[2]);const cache=parseInt(event[3]);const free=parseInt(event[5]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.thread.sliceGroup.pushCompleteSlice('lowmemory','low memory kill',ts,0,0,0,{killed_name:killedName,killed_pid:killedPid,cache,free});return true;}};Parser.register(MemReclaimParser);return{MemReclaimParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function PowerParser(importer){Parser.call(this,importer);importer.registerEventHandler('power_start',PowerParser.prototype.powerStartEvent.bind(this));importer.registerEventHandler('power_frequency',PowerParser.prototype.powerFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency',PowerParser.prototype.cpuFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency_limits',PowerParser.prototype.cpuFrequencyLimitsEvent.bind(this));importer.registerEventHandler('cpu_idle',PowerParser.prototype.cpuIdleEvent.bind(this));}\nPowerParser.prototype={__proto__:Parser.prototype,cpuStateSlice(ts,targetCpuNumber,eventType,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);if(eventType!=='1'){this.importer.model.importWarning({type:'parse_error',message:'Don\\'t understand power_start events of '+'type '+eventType});return;}\nconst powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));}\npowerCounter.series.forEach(function(series){series.addCounterSample(ts,cpuState);});},cpuIdleSlice(ts,targetCpuNumber,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name)));}\nconst val=(cpuState!==4294967295?cpuState+1:0);powerCounter.series.forEach(function(series){series.addCounterSample(ts,val);});},cpuFrequencySlice(ts,targetCpuNumber,powerState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));}\npowerCounter.series.forEach(function(series){series.addCounterSample(ts,powerState);});},cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency Limits');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('Min Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Min Frequency')));powerCounter.addSeries(new tr.model.CounterSeries('Max Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Max Frequency')));}\npowerCounter.series.forEach(function(series){if(series.name==='Min Frequency'){series.addCounterSample(ts,minFreq);}\nif(series.name==='Max Frequency'){series.addCounterSample(ts,maxFreq);}});},powerStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\\d+) state=(\\d) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const cpuState=parseInt(event[2]);this.cpuStateSlice(ts,targetCpuNumber,event[1],cpuState);return true;},powerFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\\d+) state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const powerState=parseInt(event[2]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const powerState=parseInt(event[1]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyLimitsEvent(eventName,cpu,pid,ts,eventBase){const event=/min=(\\d+) max=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const minFreq=parseInt(event[1]);const maxFreq=parseInt(event[2]);this.cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq);return true;},cpuIdleEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const cpuState=parseInt(event[1]);this.cpuIdleSlice(ts,targetCpuNumber,cpuState);return true;}};Parser.register(PowerParser);return{PowerParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function RegulatorParser(importer){Parser.call(this,importer);importer.registerEventHandler('regulator_enable',RegulatorParser.prototype.regulatorEnableEvent.bind(this));importer.registerEventHandler('regulator_enable_delay',RegulatorParser.prototype.regulatorEnableDelayEvent.bind(this));importer.registerEventHandler('regulator_enable_complete',RegulatorParser.prototype.regulatorEnableCompleteEvent.bind(this));importer.registerEventHandler('regulator_disable',RegulatorParser.prototype.regulatorDisableEvent.bind(this));importer.registerEventHandler('regulator_disable_complete',RegulatorParser.prototype.regulatorDisableCompleteEvent.bind(this));importer.registerEventHandler('regulator_set_voltage',RegulatorParser.prototype.regulatorSetVoltageEvent.bind(this));importer.registerEventHandler('regulator_set_voltage_complete',RegulatorParser.prototype.regulatorSetVoltageCompleteEvent.bind(this));this.model_=importer.model_;}\nconst regulatorEnableRE=/name=(.+)/;const regulatorDisableRE=/name=(.+)/;const regulatorSetVoltageCompleteRE=/name=(\\S+), val=(\\d+)/;RegulatorParser.prototype={__proto__:Parser.prototype,getCtr_(ctrName,valueName){const ctr=this.model_.kernel.getOrCreateCounter(null,'vreg '+ctrName+' '+valueName);if(ctr.series[0]===undefined){ctr.addSeries(new tr.model.CounterSeries(valueName,ColorScheme.getColorIdForGeneralPurposeString(ctrName+'.'+valueName)));}\nreturn ctr;},regulatorEnableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorEnableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,1);return true;},regulatorEnableDelayEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorEnableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorDisableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorDisableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,0);return true;},regulatorDisableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageCompleteEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorSetVoltageCompleteRE.exec(eventBase.details);if(!event)return false;const name=event[1];const voltage=parseInt(event[2]);const ctr=this.getCtr_(name,'voltage');ctr.series[0].addCounterSample(ts,voltage);return true;}};Parser.register(RegulatorParser);return{RegulatorParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function RssParser(importer){Parser.call(this,importer);importer.registerEventHandler('rss_stat',RssParser.prototype.rssStat.bind(this));}\nconst TestExports={};const rssStatRE=new RegExp('member=(\\\\d+) size=(\\\\d+)');TestExports.rssStatRE=rssStatRE;const unknownThreadName='<...>';RssParser.prototype={__proto__:Parser.prototype,rssStat(eventName,cpuNumber,pid,ts,eventBase){const event=rssStatRE.exec(eventBase.details);if(!event)return false;const member=parseInt(event[1]);const size=parseInt(event[2]);if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);let subTitle='';if(member===0){subTitle=' (file pages)';}else if(member===1){subTitle=' (anon)';}\nconst rssCounter=process.getOrCreateCounter('RSS','RSS '+member+subTitle);if(rssCounter.numSeries===0){rssCounter.addSeries(new tr.model.CounterSeries('RSS',tr.b.ColorScheme.getColorIdForGeneralPurposeString(rssCounter.name)));}\nrssCounter.series.forEach(function(series){series.addCounterSample(ts,size);});return true;},};Parser.register(RssParser);return{RssParser,_RssParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function SchedParser(importer){Parser.call(this,importer);importer.registerEventHandler('sched_switch',SchedParser.prototype.schedSwitchEvent.bind(this));importer.registerEventHandler('sched_wakeup',SchedParser.prototype.schedWakeupEvent.bind(this));importer.registerEventHandler('sched_blocked_reason',SchedParser.prototype.schedBlockedEvent.bind(this));importer.registerEventHandler('sched_cpu_hotplug',SchedParser.prototype.schedCpuHotplugEvent.bind(this));}\nconst TestExports={};const schedSwitchRE=new RegExp('prev_comm=(.+) prev_pid=(\\\\d+) prev_prio=(\\\\d+) '+'prev_state=(\\\\S\\\\+?|\\\\S\\\\|\\\\S) ==> '+'next_comm=(.+) next_pid=(\\\\d+) next_prio=(\\\\d+)');const schedBlockedRE=new RegExp('pid=(\\\\d+) iowait=(\\\\d) caller=(.+)');TestExports.schedSwitchRE=schedSwitchRE;const schedWakeupRE=/comm=(.+) pid=(\\d+) prio=(\\d+)(?: success=\\d+)? target_cpu=(\\d+)/;TestExports.schedWakeupRE=schedWakeupRE;const unknownThreadName='<...>';SchedParser.prototype={__proto__:Parser.prototype,schedSwitchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedSwitchRE.exec(eventBase.details);if(!event)return false;const prevState=event[4];const nextComm=event[5];const nextPid=parseInt(event[6]);const nextPrio=parseInt(event[7]);if(eventBase.tgid!==undefined){const tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);const storedThread=process.getThread(pid);if(!storedThread){const thread=process.getOrCreateThread(pid);thread.name=eventBase.threadName;}else if(storedThread.name===unknownThreadName){storedThread.name=eventBase.threadName;}}\nconst nextThread=this.importer.threadsByLinuxPid[nextPid];let nextName;if(nextThread){nextName=nextThread.userFriendlyName;}else{nextName=nextComm;}\nconst cpu=this.importer.getOrCreateCpu(cpuNumber);cpu.switchActiveThread(ts,{stateWhenDescheduled:prevState},nextPid,nextName,{comm:nextComm,tid:nextPid,prio:nextPrio});return true;},schedWakeupEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedWakeupRE.exec(eventBase.details);if(!event)return false;const fromPid=pid;const comm=event[1];pid=parseInt(event[2]);const prio=parseInt(event[3]);this.importer.markPidRunnable(ts,pid,comm,prio,fromPid);return true;},schedCpuHotplugEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/cpu (\\d+) (.+) error=(\\d+)/.exec(eventBase.details);if(!event)return false;cpuNumber=event[1];const state=event[2];const targetCpu=this.importer.getOrCreateCpu(cpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Cpu Hotplug');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('State',tr.b.ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'State')));}\npowerCounter.series.forEach(function(series){if(series.name==='State'){series.addCounterSample(ts,state.localeCompare('offline')?0:1);}});return true;},schedBlockedEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedBlockedRE.exec(eventBase.details);if(!event)return false;pid=parseInt(event[1]);const iowait=parseInt(event[2]);const caller=event[3];this.importer.addPidBlockedReason(ts,pid,iowait,caller);return true;}};Parser.register(SchedParser);return{SchedParser,_SchedParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function SyncParser(importer){Parser.call(this,importer);importer.registerEventHandler('sync_timeline',SyncParser.prototype.timelineEvent.bind(this));importer.registerEventHandler('sync_wait',SyncParser.prototype.syncWaitEvent.bind(this));importer.registerEventHandler('sync_pt',SyncParser.prototype.syncPtEvent.bind(this));this.model_=importer.model_;}\nconst syncTimelineRE=/name=(\\S+) value=(\\S*)/;const syncWaitRE=/(\\S+) name=(\\S+) state=(\\d+)/;const syncPtRE=/name=(\\S+) value=(\\S*)/;SyncParser.prototype={__proto__:Parser.prototype,timelineEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncTimelineRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread(event[1]);if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;let value=thread.lastActiveValue;if(value===undefined)value=' ';const slice=new tr.model.ThreadSlice('',value,ColorScheme.getColorIdForGeneralPurposeString(value),thread.lastActiveTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastActiveTs=ts;thread.lastActiveValue=event[2];return true;},syncWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncWaitRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst name='fence_wait(\"'+event[2]+'\")';if(event[1]==='begin'){const slice=slices.beginSlice(null,name,ts,{'Start state':event[3]});}else if(event[1]==='end'){if(slices.openSliceCount>0){slices.endSlice(ts);}}else{return false;}\nreturn true;},syncPtEvent(eventName,cpuNumber,pid,ts,eventBase){return!!syncPtRE.exec(eventBase.details);}};Parser.register(SyncParser);return{SyncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ThermalParser(importer){Parser.call(this,importer);importer.registerEventHandler('thermal_temperature',ThermalParser.prototype.traceMarkWriteTemperatureEvent.bind(this));importer.registerEventHandler('cdev_update',ThermalParser.prototype.traceMarkWriteCdevEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nThermalParser.prototype={__proto__:Parser.prototype,thermalMark(name,subName,value,ts){const ctr=this.model_.kernel.getOrCreateCounter(null,name+' '+subName);if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,value);});},traceMarkWriteTemperatureEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/thermal_zone=(\\S+) id=(\\d+) temp_prev=(\\d+) temp=(\\d+)/.exec(eventBase.details);const name=event[1];const temp=parseInt(event[4]);this.thermalMark(name,'Temperature',temp,ts);return true;},traceMarkWriteCdevEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/type=(\\S+) target=(\\d+)/.exec(eventBase.details);const name=event[1];const rate=parseInt(event[2]);this.thermalMark(name,'CoolingDevice',rate,ts);return true;}};Parser.register(ThermalParser);return{ThermalParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function WorkqueueParser(importer){Parser.call(this,importer);importer.registerEventHandler('workqueue_execute_start',WorkqueueParser.prototype.executeStartEvent.bind(this));importer.registerEventHandler('workqueue_execute_end',WorkqueueParser.prototype.executeEndEvent.bind(this));importer.registerEventHandler('workqueue_queue_work',WorkqueueParser.prototype.executeQueueWork.bind(this));importer.registerEventHandler('workqueue_activate_work',WorkqueueParser.prototype.executeActivateWork.bind(this));}\nconst workqueueExecuteStartRE=/work struct (.+): function (\\S+)/;const workqueueExecuteEndRE=/work struct (.+)/;WorkqueueParser.prototype={__proto__:Parser.prototype,executeStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteStartRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);kthread.openSliceTS=ts;kthread.openSlice=event[2];return true;},executeEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteEndRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,{},ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;return true;},executeQueueWork(eventName,cpuNumber,pid,ts,eventBase){return true;},executeActivateWork(eventName,cpuNumber,pid,ts,eventBase){return true;}};Parser.register(WorkqueueParser);return{WorkqueueParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID='linux_clock_monotonic_to_ftrace_global';const IMPORT_PRIORITY=2;function FTraceImporter(model,events){this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=events;this.wakeups_=[];this.blockedReasons_=[];this.kernelThreadStates_={};this.buildMapFromLinuxPidsToThreads_();this.lines_=[];this.pseudoThreadCounter=1;this.parsers_=[];this.eventHandlers_={};this.haveClockSyncedMonotonicToGlobal_=false;this.clockDomainId_=tr.model.ClockDomainId.LINUX_FTRACE_GLOBAL;}\nconst TestExports={};const lineREWithTGID=new RegExp('^\\\\s*(.+)-(\\\\d+)\\\\s+\\\\(\\\\s*(\\\\d+|-+)\\\\)\\\\s\\\\[(\\\\d+)\\\\]'+'\\\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\\\s+(\\\\d+\\\\.\\\\d+):\\\\s+(\\\\S+):\\\\s(.*)$');const lineParserWithTGID=function(line){const groups=lineREWithTGID.exec(line);if(!groups)return groups;let tgid=groups[3];if(tgid[0]==='-')tgid=undefined;return{threadName:groups[1],pid:groups[2],tgid,cpuNumber:groups[4],timestamp:groups[5],eventName:groups[6],details:groups[7]};};TestExports.lineParserWithTGID=lineParserWithTGID;const lineREWithIRQInfo=new RegExp('^\\\\s*(.+)-(\\\\d+)\\\\s+\\\\[(\\\\d+)\\\\]'+'\\\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\\\s+(\\\\d+\\\\.\\\\d+):\\\\s+(\\\\S+):\\\\s(.*)$');const lineParserWithIRQInfo=function(line){const groups=lineREWithIRQInfo.exec(line);if(!groups)return groups;return{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithIRQInfo=lineParserWithIRQInfo;const lineREWithLegacyFmt=/^\\s*(.+)-(\\d+)\\s+\\[(\\d+)\\]\\s*(\\d+\\.\\d+):\\s+(\\S+):\\s(.*)$/;const lineParserWithLegacyFmt=function(line){const groups=lineREWithLegacyFmt.exec(line);if(!groups){return groups;}\nreturn{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithLegacyFmt=lineParserWithLegacyFmt;const traceEventClockSyncRE=/trace_event_clock_sync: parent_ts=(\\d+\\.?\\d*)/;TestExports.traceEventClockSyncRE=traceEventClockSyncRE;const realTimeClockSyncRE=/trace_event_clock_sync: realtime_ts=(\\d+)/;const genericClockSyncRE=/trace_event_clock_sync: name=([\\w\\-]+)/;const pseudoKernelPID=0;function autoDetectLineParser(line){if(line[0]==='{')return false;if(lineREWithTGID.test(line))return lineParserWithTGID;if(lineREWithIRQInfo.test(line))return lineParserWithIRQInfo;if(lineREWithLegacyFmt.test(line))return lineParserWithLegacyFmt;return undefined;}\nTestExports.autoDetectLineParser=autoDetectLineParser;FTraceImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)events=events.header;if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(FTraceImporter._extractEventsFromSystraceHTML(events,false).ok){return true;}\nif(FTraceImporter._extractEventsFromSystraceMultiHTML(events,false).ok){return true;}\nif(/^# tracer:/.test(events))return true;const lineBreakIndex=events.indexOf('\\n');if(lineBreakIndex>-1)events=events.substring(0,lineBreakIndex);if(autoDetectLineParser(events))return true;return false;};FTraceImporter._extractEventsFromSystraceHTML=function(incomingEvents,produceResult){const failure={ok:false};if(produceResult===undefined)produceResult=true;const header=incomingEvents instanceof tr.b.TraceStream?incomingEvents.header:incomingEvents;if(!/^<!DOCTYPE html>/.test(header))return failure;const r=new tr.importer.SimpleLineReader(incomingEvents);if(!r.advanceToLineMatching(/^  <script>$/))return failure;if(!r.advanceToLineMatching(/^  var linuxPerfData = \"\\\\$/))return failure;const eventsBeginAtLine=r.curLineNumber+1;r.beginSavingLines();if(!r.advanceToLineMatching(/^  <\\/script>$/))return failure;let rawEvents=r.endSavingLinesAndGetResult();rawEvents=rawEvents.slice(1,rawEvents.length-1);if(!r.advanceToLineMatching(/^<\\/body>$/))return failure;if(!r.advanceToLineMatching(/^<\\/html>$/))return failure;function endsWith(str,suffix){return str.indexOf(suffix,str.length-suffix.length)!==-1;}\nfunction stripSuffix(str,suffix){if(!endsWith(str,suffix))return str;return str.substring(str,str.length-suffix.length);}\nlet events=[];if(produceResult){for(let i=0;i<rawEvents.length;i++){let event=rawEvents[i];event=stripSuffix(event,'\\\\n\\\\');events.push(event);}}else{events=[rawEvents[rawEvents.length-1]];}\nconst oldLastEvent=events[events.length-1];const newLastEvent=stripSuffix(oldLastEvent,'\\\\n\";');if(newLastEvent===oldLastEvent)return failure;events[events.length-1]=newLastEvent;return{ok:true,lines:produceResult?events:undefined,eventsBeginAtLine};};FTraceImporter._extractEventsFromSystraceMultiHTML=function(incomingEvents,produceResult){const failure={ok:false};if(produceResult===undefined)produceResult=true;const header=incomingEvents instanceof tr.b.TraceStream?incomingEvents.header:incomingEvents;if(!(new RegExp('^<!DOCTYPE HTML>','i').test(header)))return failure;const r=new tr.importer.SimpleLineReader(incomingEvents);let events=[];let eventsBeginAtLine;while(!/^# tracer:/.test(events)){if(!r.advanceToLineMatching(/^  <script class=\"trace-data\" type=\"application\\/text\">$/)){return failure;}\neventsBeginAtLine=r.curLineNumber+1;r.beginSavingLines();if(!r.advanceToLineMatching(/^  <\\/script>$/))return failure;events=r.endSavingLinesAndGetResult();events=events.slice(1,events.length-1);}\nif(!r.advanceToLineMatching(/^<\\/body>$/))return failure;if(!r.advanceToLineMatching(/^<\\/html>$/))return failure;return{ok:true,lines:produceResult?events:undefined,eventsBeginAtLine,};};FTraceImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'FTraceImporter';},get model(){return this.model_;},importClockSyncMarkers(){this.lazyInit_();this.forEachLine_(function(text,eventBase,cpuNumber,pid,ts){const eventName=eventBase.eventName;if(eventName!=='tracing_mark_write'&&eventName!=='0')return;if(traceEventClockSyncRE.exec(eventBase.details)||genericClockSyncRE.exec(eventBase.details)){this.traceClockSyncEvent_(eventName,cpuNumber,pid,ts,eventBase);}else if(realTimeClockSyncRE.exec(eventBase.details)){const match=realTimeClockSyncRE.exec(eventBase.details);this.model_.realtime_to_monotonic_offset_ms=ts-match[1];}}.bind(this));},importEvents(){if(this.lines_.length===0)return;const modelTimeTransformer=this.model_.clockSyncManager.getModelTimeTransformer(this.clockDomainId_);this.importCpuData_(modelTimeTransformer);this.buildMapFromLinuxPidsToThreads_();this.buildPerThreadCpuSlicesFromCpuState_();},registerEventHandler(eventName,handler){this.eventHandlers_[eventName]=handler;},getOrCreateCpu(cpuNumber){return this.model_.kernel.getOrCreateCpu(cpuNumber);},getOrCreateKernelThread(kernelThreadName,pid,tid){if(!this.kernelThreadStates_[kernelThreadName]){const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);thread.name=kernelThreadName;this.kernelThreadStates_[kernelThreadName]={pid,thread,openSlice:undefined,openSliceTS:undefined};this.threadsByLinuxPid[tid]=thread;}\nreturn this.kernelThreadStates_[kernelThreadName];},getOrCreateBinderKernelThread(kernelThreadName,pid,tid){const key=kernelThreadName+pid+tid;if(!this.kernelThreadStates_[key]){const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);thread.name=kernelThreadName;this.kernelThreadStates_[key]={pid,thread,openSlice:undefined,openSliceTS:undefined};this.threadsByLinuxPid[tid]=thread;}\nreturn this.kernelThreadStates_[key];},getOrCreatePseudoThread(threadName){let thread=this.kernelThreadStates_[threadName];if(!thread){thread=this.getOrCreateKernelThread(threadName,pseudoKernelPID,this.pseudoThreadCounter);this.pseudoThreadCounter++;}\nreturn thread;},markPidRunnable(ts,pid,comm,prio,fromPid){this.wakeups_.push({ts,tid:pid,fromTid:fromPid});},addPidBlockedReason(ts,pid,iowait,caller){this.blockedReasons_.push({ts,tid:pid,iowait,caller});},buildMapFromLinuxPidsToThreads_(){this.threadsByLinuxPid={};this.model_.getAllThreads().forEach(function(thread){this.threadsByLinuxPid[thread.tid]=thread;}.bind(this));},buildPerThreadCpuSlicesFromCpuState_(){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;for(const cpuNumber in this.model_.kernel.cpus){const cpu=this.model_.kernel.cpus[cpuNumber];for(let i=0;i<cpu.slices.length;i++){const cpuSlice=cpu.slices[i];const thread=this.threadsByLinuxPid[cpuSlice.args.tid];if(!thread)continue;cpuSlice.threadThatWasRunning=thread;if(!thread.tempCpuSlices){thread.tempCpuSlices=[];}\nthread.tempCpuSlices.push(cpuSlice);}}\nfor(const i in this.wakeups_){const wakeup=this.wakeups_[i];const thread=this.threadsByLinuxPid[wakeup.tid];if(!thread)continue;thread.tempWakeups=thread.tempWakeups||[];thread.tempWakeups.push(wakeup);}\nfor(const i in this.blockedReasons_){const reason=this.blockedReasons_[i];const thread=this.threadsByLinuxPid[reason.tid];if(!thread)continue;thread.tempBlockedReasons=thread.tempBlockedReasons||[];thread.tempBlockedReasons.push(reason);}\nthis.model_.getAllThreads().forEach(function(thread){if(thread.tempCpuSlices===undefined)return;const origSlices=thread.tempCpuSlices;delete thread.tempCpuSlices;origSlices.sort(function(x,y){return x.start-y.start;});const wakeups=thread.tempWakeups||[];delete thread.tempWakeups;wakeups.sort(function(x,y){return x.ts-y.ts;});const reasons=thread.tempBlockedReasons||[];delete thread.tempBlockedReasons;reasons.sort(function(x,y){return x.ts-y.ts;});const slices=[];if(origSlices.length){const slice=origSlices[0];if(wakeups.length&&wakeups[0].ts<slice.start){const wakeup=wakeups.shift();const wakeupDuration=slice.start-wakeup.ts;const args={'wakeup from tid':wakeup.fromTid};slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',wakeup.ts,args,wakeupDuration));}\nconst runningSlice=new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNING,'',slice.start,{},slice.duration);runningSlice.cpuOnWhichThreadWasRunning=slice.cpu;slices.push(runningSlice);}\nfor(let i=1;i<origSlices.length;i++){let wakeup=undefined;const prevSlice=origSlices[i-1];const nextSlice=origSlices[i];let midDuration=nextSlice.start-prevSlice.end;while(wakeups.length&&wakeups[0].ts<nextSlice.start){const w=wakeups.shift();if(wakeup===undefined&&w.ts>prevSlice.end){wakeup=w;}}\nlet blockedReason=undefined;while(reasons.length&&reasons[0].ts<prevSlice.end){const r=reasons.shift();}\nif(wakeup!==undefined&&reasons.length&&reasons[0].ts<wakeup.ts){blockedReason=reasons.shift();}\nconst pushSleep=function(state){if(wakeup!==undefined){midDuration=wakeup.ts-prevSlice.end;}\nif(blockedReason!==undefined){const args={'kernel callsite when blocked:':blockedReason.caller};if(blockedReason.iowait){switch(state){case SCHEDULING_STATE.UNINTR_SLEEP:state=SCHEDULING_STATE.UNINTR_SLEEP_IO;break;case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL:state=SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO;break;case SCHEDULING_STATE.UNINTR_SLEEP_WAKING:state=SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO;break;default:}}\nslices.push(new tr.model.ThreadTimeSlice(thread,state,'',prevSlice.end,args,midDuration));}else{slices.push(new tr.model.ThreadTimeSlice(thread,state,'',prevSlice.end,{},midDuration));}\nif(wakeup!==undefined){const wakeupDuration=nextSlice.start-wakeup.ts;const args={'wakeup from tid':wakeup.fromTid};slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',wakeup.ts,args,wakeupDuration));wakeup=undefined;}};if(prevSlice.args.stateWhenDescheduled==='S'){pushSleep(SCHEDULING_STATE.SLEEPING);}else if(prevSlice.args.stateWhenDescheduled==='R'||prevSlice.args.stateWhenDescheduled==='R+'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='D'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP);}else if(prevSlice.args.stateWhenDescheduled==='T'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.STOPPED,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='t'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.DEBUG,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='Z'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.ZOMBIE,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='X'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.EXIT_DEAD,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='x'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.TASK_DEAD,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='K'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.WAKE_KILL,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='W'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.WAKING,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='D|K'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL);}else if(prevSlice.args.stateWhenDescheduled==='D|W'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP_WAKING);}else{slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.UNKNOWN,'',prevSlice.end,{},midDuration));this.model_.importWarning({type:'parse_error',message:'Unrecognized sleep state: '+\nprevSlice.args.stateWhenDescheduled});}\nconst runningSlice=new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNING,'',nextSlice.start,{},nextSlice.duration);runningSlice.cpuOnWhichThreadWasRunning=prevSlice.cpu;slices.push(runningSlice);}\nthread.timeSlices=slices;},this);},createParsers_(){const allTypeInfos=tr.e.importer.linux_perf.Parser.getAllRegisteredTypeInfos();const parsers=allTypeInfos.map(function(typeInfo){return new typeInfo.constructor(this);},this);return parsers;},registerDefaultHandlers_(){this.registerEventHandler('tracing_mark_write',FTraceImporter.prototype.traceMarkingWriteEvent_.bind(this));this.registerEventHandler('0',FTraceImporter.prototype.traceMarkingWriteEvent_.bind(this));this.registerEventHandler('tracing_mark_write:trace_event_clock_sync',function(){return true;});this.registerEventHandler('0:trace_event_clock_sync',function(){return true;});},traceClockSyncEvent_(eventName,cpuNumber,pid,ts,eventBase){let event=/name=(\\w+?)\\s(.+)/.exec(eventBase.details);if(event){const name=event[1];const pieces=event[2].split(' ');const args={perfTs:ts};for(let i=0;i<pieces.length;i++){const parts=pieces[i].split('=');if(parts.length!==2){throw new Error('omgbbq');}\nargs[parts[0]]=parts[1];}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,name,ts);return true;}\nevent=/name=([\\w\\-]+)/.exec(eventBase.details);if(event){this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,event[1],ts);return true;}\nevent=/parent_ts=(\\d+\\.?\\d*)/.exec(eventBase.details);if(!event)return false;let monotonicTs=event[1]*1000;if(monotonicTs===0)monotonicTs=ts;if(this.haveClockSyncedMonotonicToGlobal_){return true;}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID,ts);this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.LINUX_CLOCK_MONOTONIC,MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID,monotonicTs);this.haveClockSyncedMonotonicToGlobal_=true;return true;},traceMarkingWriteEvent_(eventName,cpuNumber,pid,ts,eventBase,threadName){eventBase.details=eventBase.details.replace(/\\\\n.*$/,'');const event=/^\\s*(\\w+):\\s*(.*)$/.exec(eventBase.details);if(!event){const tag=eventBase.details.substring(0,2);if(tag==='B|'||tag==='E'||tag==='E|'||tag==='X|'||tag==='C|'||tag==='S|'||tag==='F|'){eventBase.subEventName='android';}else{return false;}}else{eventBase.subEventName=event[1];eventBase.details=event[2];}\nconst writeEventName=eventName+':'+eventBase.subEventName;const handler=this.eventHandlers_[writeEventName];if(!handler){this.model_.importWarning({type:'parse_error',message:'Unknown trace_marking_write event '+writeEventName});return true;}\nreturn handler(writeEventName,cpuNumber,pid,ts,eventBase,threadName);},importCpuData_(modelTimeTransformer){this.forEachLine_(function(text,eventBase,cpuNumber,pid,ts){const eventName=eventBase.eventName;const handler=this.eventHandlers_[eventName];if(!handler){this.model_.importWarning({type:'parse_error',message:'Unknown event '+eventName+' ('+text+')'});return;}\nts=modelTimeTransformer(ts);if(!handler(eventName,cpuNumber,pid,ts,eventBase)){this.model_.importWarning({type:'parse_error',message:'Malformed '+eventName+' event ('+text+')'});}}.bind(this));},parseLines_(){let extractResult=FTraceImporter._extractEventsFromSystraceHTML(this.events_,true);if(!extractResult.ok){extractResult=FTraceImporter._extractEventsFromSystraceMultiHTML(this.events_,true);}\nlet lineParser=undefined;if(extractResult.ok){for(const line of extractResult.lines){lineParser=this.parseLine_(line,lineParser);}}else{const r=new tr.importer.SimpleLineReader(this.events_);for(const line of r){lineParser=this.parseLine_(line,lineParser);}}},parseLine_(line,lineParser){line=line.trim();if(line.length===0)return lineParser;if(/^#/.test(line)){const clockType=/^# clock_type=([A-Z_]+)$/.exec(line);if(clockType){this.clockDomainId_=clockType[1];}\nreturn lineParser;}\nif(!lineParser){lineParser=autoDetectLineParser(line);if(!lineParser){this.model_.importWarning({type:'parse_error',message:'Cannot parse line: '+line});return lineParser;}}\nconst eventBase=lineParser(line);if(!eventBase){this.model_.importWarning({type:'parse_error',message:'Unrecognized line: '+line});return lineParser;}\nthis.lines_.push([line,eventBase,parseInt(eventBase.cpuNumber),parseInt(eventBase.pid),parseFloat(eventBase.timestamp)*1000]);return lineParser;},forEachLine_(handler){for(let i=0;i<this.lines_.length;++i){const line=this.lines_[i];handler.apply(this,line);}},lazyInit_(){this.parsers_=this.createParsers_();this.registerDefaultHandlers_();this.parseLines_();}};tr.importer.Importer.register(FTraceImporter);return{FTraceImporter,_FTraceImporterTestExports:TestExports,IMPORT_PRIORITY,};});'use strict';tr.exportTo('tr.e.importer.android.atrace_process_dump',function(){const IMPORT_PRIORITY=tr.e.importer.linux_perf.IMPORT_PRIORITY+1;const HEADER='ATRACE_PROCESS_DUMP';const PROTECTION_FLAG_LETTERS={'-':0,'r':tr.model.VMRegion.PROTECTION_FLAG_READ,'w':tr.model.VMRegion.PROTECTION_FLAG_WRITE,'x':tr.model.VMRegion.PROTECTION_FLAG_EXECUTE,'s':tr.model.VMRegion.PROTECTION_FLAG_MAYSHARE,};class AtraceProcessDumpImporter extends tr.importer.Importer{constructor(model,data){super(model,data);this.importPriority=IMPORT_PRIORITY;this.model_=model;this.raw_data_=data;this.clock_sync_markers_={};this.snapshots_=[];this.processes_={};}\nstatic canImport(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nreturn events.startsWith(HEADER);}\nget importerName(){return'AtraceProcessDumpImporter';}\nget model(){return this.model_;}\nlazyParseData(){if(this.raw_data_===undefined){return;}\nconst dump=JSON.parse(this.raw_data_.slice(HEADER.length+1));this.clock_sync_markers_=dump.clock_sync_markers;this.snapshots_=dump.dump.snapshots;this.processes_=dump.dump.processes;this.raw_data_=undefined;}\nimportClockSyncMarkers(){this.lazyParseData();for(const syncId in this.clock_sync_markers_){const ts=parseInt(this.clock_sync_markers_[syncId]);this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.LINUX_CLOCK_MONOTONIC,syncId,ts);}}\nsetProcessMemoryDumpTotals_(pmd,processInfo){pmd.totals={'residentBytes':processInfo.rss*1024,'platformSpecific':{'vm':processInfo.vm*1024}};const totals=pmd.totals.platformSpecific;function importGpuMetric(name){if(processInfo[name]!==undefined&&processInfo[name]>0){totals[name]=processInfo[name]*1024;totals[name+'_pss']=processInfo[name+'_pss']*1024;}}\nimportGpuMetric('gpu_egl');importGpuMetric('gpu_gl');importGpuMetric('gpu_etc');if(processInfo.pss!==undefined){totals.pss=processInfo.pss*1024;totals.swp=processInfo.swp*1024;totals.pc=processInfo.pc*1024;totals.pd=processInfo.pd*1024;totals.sc=processInfo.sc*1024;totals.sd=processInfo.sd*1024;}}\nsetProcessMemoryDumpVmRegions_(pmd,processInfo){if(processInfo.mmaps===undefined){return;}\nconst vmRegions=[];for(const memoryMap of processInfo.mmaps){const addr=memoryMap.vm.split('-').map(x=>parseInt(x,16));let flags=0;for(const letter of memoryMap.flags){flags|=PROTECTION_FLAG_LETTERS[letter];}\nconst totals={'proportionalResident':memoryMap.pss*1024,'privateCleanResident':memoryMap.pc*1024,'privateDirtyResident':memoryMap.pd*1024,'sharedCleanResident':memoryMap.sc*1024,'sharedDirtyResident':memoryMap.sd*1024,'swapped':memoryMap.swp*1024,};vmRegions.push(new tr.model.VMRegion(addr[0],addr[1]-addr[0],flags,memoryMap.file,totals));}\npmd.vmRegions=tr.model.VMRegionClassificationNode.fromRegions(vmRegions);}\nimportEvents(){this.lazyParseData();for(const[pid,process]of Object.entries(this.processes_)){const modelProcess=this.model_.getProcess(pid);if(modelProcess===undefined){continue;}\nmodelProcess.name=process.name;const threads=process.threads;if(threads===undefined){continue;}\nfor(const[tid,thread]of Object.entries(threads)){const modelThread=modelProcess.threads[tid];if(modelThread===undefined){continue;}\nmodelThread.name=thread.name;}}\nconst memCounter=this.model_.kernel.getOrCreateCounter('global','SystemMemory');const memUsedSeries=new tr.model.CounterSeries('Used (KB)',0);const memSwappedSeries=new tr.model.CounterSeries('Swapped (KB)',0);memCounter.addSeries(memUsedSeries);memCounter.addSeries(memSwappedSeries);for(const snapshot of this.snapshots_){const ts=parseInt(snapshot.ts);const memoryDump=snapshot.memdump;if(memoryDump===undefined){const memInfo=snapshot.meminfo;if(memInfo===undefined){continue;}\nconst memCaches=memInfo.Buffers+memInfo.Cached-memInfo.Mapped;const memUsed=memInfo.MemTotal-memInfo.MemFree-memCaches;const memSwapped=memInfo.SwapTotal-memInfo.SwapFree;memUsedSeries.addCounterSample(ts,memUsed);memSwappedSeries.addCounterSample(ts,memSwapped);continue;}\nconst gmd=new tr.model.GlobalMemoryDump(this.model_,ts);this.model_.globalMemoryDumps.push(gmd);for(const[pid,processInfo]of Object.entries(memoryDump)){if(processInfo.rss===undefined){continue;}\nconst modelProcess=this.model_.getProcess(pid);if(modelProcess===undefined){continue;}\nconst pmd=new tr.model.ProcessMemoryDump(gmd,modelProcess,ts);gmd.processMemoryDumps[pid]=pmd;modelProcess.memoryDumps.push(pmd);this.setProcessMemoryDumpTotals_(pmd,processInfo);this.setProcessMemoryDumpVmRegions_(pmd,processInfo);}}}}\ntr.importer.Importer.register(AtraceProcessDumpImporter);return{AtraceProcessDumpImporter,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;function Activity(name,category,range,args){tr.model.TimedEvent.call(this,range.min);this.title=name;this.category=category;this.colorId=ColorScheme.getColorIdForGeneralPurposeString(name);this.duration=range.duration;this.args=args;this.name=name;}\nActivity.prototype={__proto__:tr.model.TimedEvent.prototype,shiftTimestampsForward(amount){this.start+=amount;},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);}};return{Activity,};});'use strict';tr.exportTo('tr.e.importer.android',function(){const Importer=tr.importer.Importer;const ACTIVITY_STATE={NONE:'none',CREATED:'created',STARTED:'started',RESUMED:'resumed',PAUSED:'paused',STOPPED:'stopped',DESTROYED:'destroyed'};const activityMap={};function EventLogImporter(model,events){this.model_=model;this.events_=events;this.importPriority=3;}\nconst eventLogActivityRE=new RegExp('(\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+)'+'\\\\s+(\\\\d+)\\\\s+(\\\\d+)\\\\s+([A-Z])\\\\s*'+'(am_\\\\w+)\\\\s*:(.*)');const amCreateRE=new RegExp('\\s*\\\\[.*,.*,.*,(.*),.*,.*,.*,.*\\\\]');const amFocusedRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amProcStartRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,\\\\d+,.*,activity,(.*)\\\\]');const amOnResumeRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amOnPauseRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amLaunchTimeRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,(.*),(\\\\d+),(\\\\d+)');const amDestroyRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,\\\\d+,(.*)\\\\]');EventLogImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(/^<!DOCTYPE html>/.test(events))return false;return eventLogActivityRE.test(events);};EventLogImporter.prototype={__proto__:Importer.prototype,get importerName(){return'EventLogImporter';},get model(){return this.model_;},getFullActivityName(component){const componentSplit=component.split('/');if(componentSplit[1].startsWith('.')){return componentSplit[0]+componentSplit[1];}\nreturn componentSplit[1];},getProcName(component){const componentSplit=component.split('/');return componentSplit[0];},findOrCreateActivity(activityName){if(activityName in activityMap){return activityMap[activityName];}\nconst activity={state:ACTIVITY_STATE.NONE,name:activityName};activityMap[activityName]=activity;return activity;},deleteActivity(activityName){delete activityMap[activityName];},handleCreateActivity(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.CREATED;activity.createdTs=ts;},handleFocusActivity(ts,procName,activityName){const activity=this.findOrCreateActivity(activityName);activity.lastFocusedTs=ts;},handleProcStartForActivity(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.procStartTs=ts;},handleOnResumeCalled(ts,pid,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.RESUMED;activity.lastResumeTs=ts;activity.pid=pid;},handleOnPauseCalled(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.PAUSED;activity.lastPauseTs=ts;if(ts>this.model_.bounds.min&&ts<this.model_.bounds.max){this.addActivityToProcess(activity);}},handleLaunchTime(ts,activityName,launchTime){const activity=this.findOrCreateActivity(activityName);activity.launchTime=launchTime;},handleDestroyActivity(ts,activityName){this.deleteActivity(activityName);},addActivityToProcess(activity){if(activity.pid===undefined)return;const process=this.model_.getOrCreateProcess(activity.pid);const range=tr.b.math.Range.fromExplicitRange(Math.max(this.model_.bounds.min,activity.lastResumeTs),activity.lastPauseTs);const newActivity=new tr.model.Activity(activity.name,'Android Activity',range,{created:activity.createdTs,procstart:activity.procStartTs,lastfocus:activity.lastFocusedTs});process.activities.push(newActivity);},parseAmLine_(line){let match=eventLogActivityRE.exec(line);if(!match)return;const firstRealtimeTs=this.model_.bounds.min-\nthis.model_.realtime_to_monotonic_offset_ms;const year=new Date(firstRealtimeTs).getFullYear();const ts=match[1].substring(0,5)+'-'+year+' '+\nmatch[1].substring(5,match[1].length);const monotonicTs=Date.parse(ts)+\nthis.model_.realtime_to_monotonic_offset_ms;const pid=match[2];const action=match[5];const data=match[6];if(action==='am_create_activity'){match=amCreateRE.exec(data);if(match&&match.length>=2){this.handleCreateActivity(monotonicTs,this.getFullActivityName(match[1]));}}else if(action==='am_focused_activity'){match=amFocusedRE.exec(data);if(match&&match.length>=2){this.handleFocusActivity(monotonicTs,this.getProcName(match[1]),this.getFullActivityName(match[1]));}}else if(action==='am_proc_start'){match=amProcStartRE.exec(data);if(match&&match.length>=2){this.handleProcStartForActivity(monotonicTs,this.getFullActivityName(match[1]));}}else if(action==='am_on_resume_called'){match=amOnResumeRE.exec(data);if(match&&match.length>=2){this.handleOnResumeCalled(monotonicTs,pid,match[1]);}}else if(action==='am_on_paused_called'){match=amOnPauseRE.exec(data);if(match&&match.length>=2){this.handleOnPauseCalled(monotonicTs,match[1]);}}else if(action==='am_activity_launch_time'){match=amLaunchTimeRE.exec(data);this.handleLaunchTime(monotonicTs,this.getFullActivityName(match[1]),match[2]);}else if(action==='am_destroy_activity'){match=amDestroyRE.exec(data);if(match&&match.length===2){this.handleDestroyActivity(monotonicTs,this.getFullActivityName(match[1]));}}},importEvents(){if(isNaN(this.model_.realtime_to_monotonic_offset_ms)){this.model_.importWarning({type:'eveng_log_clock_sync',message:'Need a trace_event_clock_sync to map realtime to import.'});return;}\nthis.model_.updateBounds();const lines=this.events_.split('\\n');lines.forEach(this.parseAmLine_,this);for(const activityName in activityMap){const activity=activityMap[activityName];if(activity.state===ACTIVITY_STATE.RESUMED){activity.lastPauseTs=this.model_.bounds.max;this.addActivityToProcess(activity);}}}};Importer.register(EventLogImporter);return{EventLogImporter,};});'use strict';tr.exportTo('tr.e.importer.android.process_data',function(){const Importer=tr.importer.Importer;const PROCESS_DUMP_HEADER='PROCESS DUMP';function ProcessDataImporter(model,processData){this.model_=model;this.processDataLines=processData.split('\\n');this.importPriority=3;}\nProcessDataImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(events.split('\\n')[0]===PROCESS_DUMP_HEADER){return true;}\nreturn false;};ProcessDataImporter.prototype={__proto__:Importer.prototype,get importerName(){return'ProcessDataImporter';},get model(){return this.model_;},parseEventData(data){const allDumpedProcesses={};let parseProcesses=false;let parseThreads=false;let legacy=false;for(let i=1;i<data.length;i++){const cols=data[i].split(/\\s+/);if(cols[0].startsWith('USER')){if(parseProcesses){parseProcesses=false;parseThreads=true;}else{parseThreads=false;parseProcesses=true;}\nconst colCount=cols.length;if(parseProcesses&&colCount===9){legacy=false;}else if(parseProcesses&&colCount===8){legacy=true;}\ncontinue;}\nif(parseProcesses){const pid=Number(cols[1]);if(allDumpedProcesses[pid]===undefined){allDumpedProcesses[pid]={};}\nallDumpedProcesses[pid]={'name':cols[8],pid,'comm':cols[9]};continue;}\nif(parseThreads){let pid;let tid;let name;if(legacy){pid=Number(cols[1]);if(allDumpedProcesses[pid]!==undefined){tid=pid;}else{tid=pid;pid=Number(cols[2]);}\nname=cols.slice(8).join(' ');}else{pid=Number(cols[1]);tid=Number(cols[2]);name=cols.slice(3).join(' ');}\nif(allDumpedProcesses[pid]===undefined)continue;if(allDumpedProcesses[pid].threads===undefined){allDumpedProcesses[pid].threads={};}\nallDumpedProcesses[pid].threads[tid]={tid,name};continue;}}\nreturn allDumpedProcesses;},importEvents(){const allDumpedProcesses=this.parseEventData(this.processDataLines);const modelProcesses=this.model_.getAllProcesses();for(let i=0;i<modelProcesses.length;i++){const modelProcess=modelProcesses[i];const pid=modelProcess.pid;const dumpedProcess=allDumpedProcesses[pid];if(dumpedProcess===undefined){continue;}\nmodelProcess.name=dumpedProcess.name;const processDumpThreads=dumpedProcess.threads;if(processDumpThreads!==undefined){for(const tid in modelProcess.threads){const modelThread=modelProcess.threads[tid];if(Number(pid)===Number(tid)){modelThread.name='UI thread';}else if(modelThread.name==='<...>'){if(processDumpThreads[tid]!==undefined){modelThread.name=processDumpThreads[tid].name;}}}}}}};Importer.register(ProcessDataImporter);return{ProcessDataImporter,};});'use strict';tr.exportTo('tr.e.importer.battor',function(){function BattorImporter(model,events){this.importPriority=3;this.model_=model;this.samples_=[];this.syncTimestampsById_=new Map();this.parseTrace_(events);}\nconst battorDataLineRE=new RegExp('^(-?\\\\d+\\\\.\\\\d+)\\\\s+(-?\\\\d+\\\\.\\\\d+)\\\\s+(-?\\\\d+\\\\.\\\\d+)'+'(?:\\\\s+<(\\\\S+)>)?$');const battorHeaderLineRE=/^# BattOr/;BattorImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nreturn battorHeaderLineRE.test(events);};BattorImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'BattorImporter';},get model(){return this.model_;},importClockSyncMarkers(){for(const[syncId,ts]of this.syncTimestampsById_){this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.BATTOR,syncId,ts);}},importEvents(){if(this.model_.device.powerSeries){this.model_.importWarning({type:'import_error',message:'Power counter exists, can not import BattOr power trace.'});return;}\nconst modelTimeTransformer=this.model_.clockSyncManager.getModelTimeTransformer(tr.model.ClockDomainId.BATTOR);const powerSeries=this.model_.device.powerSeries=new tr.model.PowerSeries(this.model_.device);for(let i=0;i<this.samples_.length;i++){const sample=this.samples_[i];powerSeries.addPowerSample(modelTimeTransformer(sample.ts),sample.powerInW);}},parseTrace_(trace){const lines=trace.split('\\n');for(let line of lines){line=line.trim();if(line.length===0)continue;if(line.startsWith('#'))continue;const groups=battorDataLineRE.exec(line);if(!groups){this.model_.importWarning({type:'parse_error',message:'Unrecognized line in BattOr trace: '+line});continue;}\nconst ts=parseFloat(groups[1]);const voltageInV=tr.b.convertUnit(parseFloat(groups[2]),tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const currentInA=tr.b.convertUnit(parseFloat(groups[3]),tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const syncId=groups[4];if(syncId){this.syncTimestampsById_.set(syncId,ts);}\nif(voltageInV<0||currentInA<0){this.model_.importWarning({type:'parse_error',message:'The following line in the BattOr trace has a negative '+'voltage or current, neither of which are allowed: '+line+'. A common cause of this is that the device is charging '+'while the trace is being recorded.'});continue;}\nthis.samples_.push(new Sample(ts,voltageInV,currentInA));}}};function Sample(ts,voltageInV,currentInA){this.ts=ts;this.voltageInV=voltageInV;this.currentInA=currentInA;}\nSample.prototype={get powerInW(){return this.voltageInV*this.currentInA;}};tr.importer.Importer.register(BattorImporter);return{BattorImporter,};});'use strict';tr.exportTo('tr.e.importer.ddms',function(){const kPid=0;const kCategory='java';const kMethodLutEndMarker='\\n*end\\n';const kThreadsStart='\\n*threads\\n';const kMethodsStart='\\n*methods\\n';const kTraceMethodEnter=0x00;const kTraceMethodExit=0x01;const kTraceUnroll=0x02;const kTraceMethodActionMask=0x03;const kTraceHeaderLength=32;const kTraceMagicValue=0x574f4c53;const kTraceVersionSingleClock=2;const kTraceVersionDualClock=3;const kTraceRecordSizeSingleClock=10;const kTraceRecordSizeDualClock=14;function Reader(stringPayload){this.position_=0;this.data_=new Uint8Array(stringPayload.length);for(let i=0;i<stringPayload.length;++i){this.data_[i]=stringPayload.charCodeAt(i);}}\nReader.prototype={__proto__:Object.prototype,uint8(){const result=this.data_[this.position_];this.position_+=1;return result;},uint16(){let result=0;result+=this.uint8();result+=this.uint8()<<8;return result;},uint32(){let result=0;result+=this.uint8();result+=this.uint8()<<8;result+=this.uint8()<<16;result+=this.uint8()<<24;return result;},uint64(){const low=this.uint32();const high=this.uint32();const lowStr=('0000000'+low.toString(16)).substr(-8);const highStr=('0000000'+high.toString(16)).substr(-8);const result=highStr+lowStr;return result;},seekTo(position){this.position_=position;},hasMore(){return this.position_<this.data_.length;}};function DdmsImporter(model,data){this.importPriority=3;this.model_=model;this.data_=data;}\nDdmsImporter.canImport=function(data){if(typeof(data)==='string'||data instanceof String){const header=data.slice(0,1000);return header.startsWith('*version\\n')&&header.indexOf('\\nvm=')>=0&&header.indexOf(kThreadsStart)>=0;}\nreturn false;};DdmsImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'DdmsImporter';},get model(){return this.model_;},importEvents(){const divider=this.data_.indexOf(kMethodLutEndMarker)+\nkMethodLutEndMarker.length;this.metadata_=this.data_.slice(0,divider);this.methods_={};this.parseThreads();this.parseMethods();const traceReader=new Reader(this.data_.slice(divider));const magic=traceReader.uint32();if(magic!==kTraceMagicValue){throw Error('Failed to match magic value');}\nthis.version_=traceReader.uint16();if(this.version_!==kTraceVersionDualClock){throw Error('Unknown version');}\nconst dataOffest=traceReader.uint16();const startDateTime=traceReader.uint64();const recordSize=traceReader.uint16();traceReader.seekTo(dataOffest);while(traceReader.hasMore()){this.parseTraceEntry(traceReader);}},parseTraceEntry(reader){const tid=reader.uint16();const methodPacked=reader.uint32();const cpuSinceStart=reader.uint32();const wallClockSinceStart=reader.uint32();let method=methodPacked&~kTraceMethodActionMask;const action=methodPacked&kTraceMethodActionMask;const thread=this.getTid(tid);method=this.getMethodName(method);if(action===kTraceMethodEnter){thread.sliceGroup.beginSlice(kCategory,method,wallClockSinceStart,undefined,cpuSinceStart);}else if(thread.sliceGroup.openSliceCount){thread.sliceGroup.endSlice(wallClockSinceStart,cpuSinceStart);}},parseThreads(){let threads=this.metadata_.slice(this.metadata_.indexOf(kThreadsStart)+\nkThreadsStart.length);threads=threads.slice(0,threads.indexOf('\\n*'));threads=threads.split('\\n');threads.forEach(this.parseThread.bind(this));},parseThread(threadLine){const tid=threadLine.slice(0,threadLine.indexOf('\\t'));const thread=this.getTid(parseInt(tid));thread.name=threadLine.slice(threadLine.indexOf('\\t')+1);},getTid(tid){return this.model_.getOrCreateProcess(kPid).getOrCreateThread(tid);},parseMethods(){let methods=this.metadata_.slice(this.metadata_.indexOf(kMethodsStart)+\nkMethodsStart.length);methods=methods.slice(0,methods.indexOf('\\n*'));methods=methods.split('\\n');methods.forEach(this.parseMethod.bind(this));},parseMethod(methodLine){const data=methodLine.split('\\t');const methodId=parseInt(data[0]);const methodName=data[1]+'.'+data[2]+data[3];this.addMethod(methodId,methodName);},addMethod(methodId,methodName){this.methods_[methodId]=methodName;},getMethodName(methodId){return this.methods_[methodId];}};tr.importer.Importer.register(DdmsImporter);return{DdmsImporter,};});'use strict';tr.exportTo('tr.e.audits',function(){class LowMemoryAuditor extends tr.c.Auditor{constructor(model){super();this.model_=model;}\nrunAnnotate(){this.model_.device.lowMemoryEvents=this.getLowMemoryEvents_();}\ngetLowMemoryEvents_(){const model=this.model_;const result=[];for(const process of model.getAllProcesses()){for(const e of process.getDescendantEvents()){if(!(e instanceof tr.model.ThreadSlice)||e.duration!==0){continue;}\nif(e.category!=='lowmemory'){continue;}\nresult.push(e);}}\nreturn result;}}\ntr.c.Auditor.register(LowMemoryAuditor);return{LowMemoryAuditor};});'use strict';function filterDuplicateTimestamps(timestamps){const dedupedTimestamps=[];let lastTs=0;for(const ts of timestamps){if(ts-lastTs>=1){dedupedTimestamps.push(ts);lastTs=ts;}}\nreturn dedupedTimestamps;}\ntr.exportTo('tr.e.audits',function(){const VSYNC_COUNTER_PRECISIONS={'android.VSYNC-app':15,'android.VSYNC':15};const VSYNC_SLICE_PRECISIONS={'RenderWidgetHostViewAndroid::OnVSync':5,'VSYNC':10,'vblank':10,'DisplayLinkMac::GetVSyncParameters':5};const BEGIN_FRAME_SLICE_PRECISION={'DisplayScheduler::BeginFrame':10};function VSyncAuditor(model){tr.c.Auditor.call(this,model);}\nVSyncAuditor.prototype={__proto__:tr.c.Auditor.prototype,runAnnotate(){this.model.device.vSyncTimestamps=this.findVSyncTimestamps(this.model);},findVSyncTimestamps(model){let times=[];let maxPrecision=Number.NEGATIVE_INFINITY;let maxTitle=undefined;function useInstead(title,precisions){const precision=precisions[title];if(precision===undefined)return false;if(title===maxTitle)return true;if(precision<=maxPrecision){if(precision===maxPrecision){model.importWarning({type:'VSyncAuditor',message:'Encountered two different VSync events ('+\nmaxTitle+', '+title+') with the same precision, '+'ignoring the newer one ('+title+')',showToUser:false,});}\nreturn false;}\nmaxPrecision=precision;maxTitle=title;times=[];return true;}\nfor(const pid in model.processes){const process=model.processes[pid];for(const cid in process.counters){if(useInstead(cid,VSYNC_COUNTER_PRECISIONS)){const counter=process.counters[cid];for(let i=0;i<counter.series.length;i++){const series=counter.series[i];Array.prototype.push.apply(times,series.timestamps);}}}\nfor(const tid in process.threads){const thread=process.threads[tid];for(let i=0;i<thread.sliceGroup.slices.length;i++){const slice=thread.sliceGroup.slices[i];if(useInstead(slice.title,VSYNC_SLICE_PRECISIONS)){times.push(slice.start);}else if(useInstead(slice.title,BEGIN_FRAME_SLICE_PRECISION)&&slice.args.args&&slice.args.args.frame_time_us){times.push(slice.args.args.frame_time_us/1000.0);}}}}\ntimes.sort(function(x,y){return x-y;});return filterDuplicateTimestamps(times);}};tr.c.Auditor.register(VSyncAuditor);return{VSyncAuditor,};});'use strict';tr.exportTo('tr.importer',function(){function EmptyImporter(events){this.importPriority=0;}\nEmptyImporter.canImport=function(eventData){if(eventData instanceof Array&&eventData.length===0){return true;}\nif(typeof(eventData)==='string'||eventData instanceof String){return eventData.length===0;}\nreturn false;};EmptyImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'EmptyImporter';}};tr.importer.Importer.register(EmptyImporter);return{EmptyImporter,};});'use strict';tr.exportTo('tr.model.um',function(){function AnimationExpectation(parentModel,initiatorTitle,start,duration){tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.frameEvents_=undefined;}\nAnimationExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:AnimationExpectation,get frameEvents(){if(this.frameEvents_){return this.frameEvents_;}\nthis.frameEvents_=new tr.model.EventSet();this.associatedEvents.forEach(function(event){if(event.title===tr.model.helpers.IMPL_RENDERING_STATS){this.frameEvents_.push(event);}},this);return this.frameEvents_;}};tr.model.um.UserExpectation.subTypes.register(AnimationExpectation,{stageTitle:'Animation',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_animation')});return{AnimationExpectation,};});'use strict';tr.exportTo('tr.importer',function(){function ProtoExpectation(type,initiatorType){this.type=type;this.initiatorType=initiatorType;this.start=Infinity;this.end=-Infinity;this.associatedEvents=new tr.model.EventSet();this.isAnimationBegin=false;}\nProtoExpectation.RESPONSE_TYPE='r';ProtoExpectation.ANIMATION_TYPE='a';ProtoExpectation.IGNORED_TYPE='ignored';const INITIATOR_HIERARCHY=[tr.model.um.INITIATOR_TYPE.PINCH,tr.model.um.INITIATOR_TYPE.FLING,tr.model.um.INITIATOR_TYPE.MOUSE_WHEEL,tr.model.um.INITIATOR_TYPE.SCROLL,tr.model.um.INITIATOR_TYPE.VR,tr.model.um.INITIATOR_TYPE.VIDEO,tr.model.um.INITIATOR_TYPE.WEBGL,tr.model.um.INITIATOR_TYPE.CSS,tr.model.um.INITIATOR_TYPE.MOUSE,tr.model.um.INITIATOR_TYPE.KEYBOARD,tr.model.um.INITIATOR_TYPE.TAP,tr.model.um.INITIATOR_TYPE.TOUCH];function combineInitiatorTypes(title1,title2){for(const item of INITIATOR_HIERARCHY){if(title1===item||title2===item)return item;}\nthrow new Error('Invalid titles in combineInitiatorTypes');}\nProtoExpectation.prototype={get isValid(){return this.end>this.start;},containsTypeNames(typeNames){return this.associatedEvents.some(x=>typeNames.indexOf(x.typeName)>=0);},containsSliceTitle(title){return this.associatedEvents.some(x=>title===x.title);},createInteractionRecord(model){if(this.type!==ProtoExpectation.IGNORED_TYPE&&!this.isValid){model.importWarning({type:'ProtoExpectation',message:'Please file a bug with this trace. '+this.debug(),showToUser:true});return undefined;}\nconst duration=this.end-this.start;let ir=undefined;switch(this.type){case ProtoExpectation.RESPONSE_TYPE:ir=new tr.model.um.ResponseExpectation(model,this.initiatorType,this.start,duration,this.isAnimationBegin);break;case ProtoExpectation.ANIMATION_TYPE:ir=new tr.model.um.AnimationExpectation(model,this.initiatorType,this.start,duration);break;}\nif(!ir)return undefined;ir.sourceEvents.addEventSet(this.associatedEvents);function pushAssociatedEvents(event){ir.associatedEvents.push(event);if(event.associatedEvents){ir.associatedEvents.addEventSet(event.associatedEvents);}}\nthis.associatedEvents.forEach(function(event){pushAssociatedEvents(event);if(event.subSlices){event.subSlices.forEach(pushAssociatedEvents);}});return ir;},merge(other){this.initiatorType=combineInitiatorTypes(this.initiatorType,other.initiatorType);this.associatedEvents.addEventSet(other.associatedEvents);this.start=Math.min(this.start,other.start);this.end=Math.max(this.end,other.end);if(other.isAnimationBegin){this.isAnimationBegin=true;}},pushEvent(event){this.start=Math.min(this.start,event.start);this.end=Math.max(this.end,event.end);this.associatedEvents.push(event);},pushSample(sample){this.start=Math.min(this.start,sample.timestamp);this.end=Math.max(this.end,sample.timestamp);this.associatedEvents.push(sample);},containsTimestampInclusive(timestamp){return(this.start<=timestamp)&&(timestamp<=this.end);},intersects(other){return(other.start<this.end)&&(other.end>this.start);},isNear(event,threshold){return(this.end+threshold)>event.start;},debug(){let debugString=this.type+'(';debugString+=parseInt(this.start)+' ';debugString+=parseInt(this.end);this.associatedEvents.forEach(function(event){debugString+=' '+event.typeName;});return debugString+')';}};return{ProtoExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const ProtoExpectation=tr.importer.ProtoExpectation;const INITIATOR_TYPE=tr.model.um.INITIATOR_TYPE;const INPUT_TYPE=tr.e.cc.INPUT_EVENT_TYPE_NAMES;const KEYBOARD_TYPE_NAMES=[INPUT_TYPE.CHAR,INPUT_TYPE.KEY_DOWN_RAW,INPUT_TYPE.KEY_DOWN,INPUT_TYPE.KEY_UP];const MOUSE_RESPONSE_TYPE_NAMES=[INPUT_TYPE.CLICK,INPUT_TYPE.CONTEXT_MENU];const MOUSE_WHEEL_TYPE_NAMES=[INPUT_TYPE.MOUSE_WHEEL];const MOUSE_DRAG_TYPE_NAMES=[INPUT_TYPE.MOUSE_DOWN,INPUT_TYPE.MOUSE_MOVE,INPUT_TYPE.MOUSE_UP];const TAP_TYPE_NAMES=[INPUT_TYPE.TAP,INPUT_TYPE.TAP_CANCEL,INPUT_TYPE.TAP_DOWN];const PINCH_TYPE_NAMES=[INPUT_TYPE.PINCH_BEGIN,INPUT_TYPE.PINCH_END,INPUT_TYPE.PINCH_UPDATE];const FLING_TYPE_NAMES=[INPUT_TYPE.FLING_CANCEL,INPUT_TYPE.FLING_START];const TOUCH_TYPE_NAMES=[INPUT_TYPE.TOUCH_END,INPUT_TYPE.TOUCH_MOVE,INPUT_TYPE.TOUCH_START];const SCROLL_TYPE_NAMES=[INPUT_TYPE.SCROLL_BEGIN,INPUT_TYPE.SCROLL_END,INPUT_TYPE.SCROLL_UPDATE];const ALL_HANDLED_TYPE_NAMES=[].concat(KEYBOARD_TYPE_NAMES,MOUSE_RESPONSE_TYPE_NAMES,MOUSE_WHEEL_TYPE_NAMES,MOUSE_DRAG_TYPE_NAMES,PINCH_TYPE_NAMES,TAP_TYPE_NAMES,FLING_TYPE_NAMES,TOUCH_TYPE_NAMES,SCROLL_TYPE_NAMES);const RENDERER_FLING_TITLE='InputHandlerProxy::HandleGestureFling::started';const PLAYBACK_EVENT_TITLE='VideoPlayback';const CSS_ANIMATION_TITLE='Animation';const VR_COUNTER_NAMES=['gpu.WebVR FPS','gpu.WebVR frame time (ms)','gpu.WebVR pose prediction (ms)','gpu.WebXR FPS',];const VR_EXPECTATION_EVENTS={'Vr.AcquireGvrFrame':{'histogramName':'acquire_frame','description':'Duration acquire a frame from GVR','hasCpuTime':true,},'Vr.DrawFrame':{'histogramName':'draw_frame','description':'Duration to render one frame','hasCpuTime':true,},'Vr.PostSubmitDrawOnGpu':{'histogramName':'post_submit_draw_on_gpu','description':'Duration to draw a frame on GPU post submit to '+'GVR. Note this duration may include time spent on '+'reprojection','hasCpuTime':false,},'Vr.ProcessControllerInput':{'histogramName':'update_controller','description':'Duration to query input from the controller','hasCpuTime':true,},'Vr.ProcessControllerInputForWebXr':{'histogramName':'update_controller_webxr','description':'Duration to query input from the controller for WebXR','hasCpuTime':true,},'Vr.SubmitFrameNow':{'histogramName':'submit_frame','description':'Duration to submit a frame to GVR','hasCpuTime':true,}};const WEBXR_INSTANT_EVENTS={'WebXR frame time (ms)':{'javascript':{'histogramName':'webxr_frame_time_javascript','description':'WebXR frame time spent on JavaScript',},'rendering':{'histogramName':'webxr_frame_time_rendering','description':'WebXR frame time spent on rendering'}},'WebXR pose prediction':{'milliseconds':{'histogramName':'webxr_pose_prediction','description':'WebXR pose prediction in ms',},},};const XR_DEVICE_SERVICE_PROCESS='Service: xr_device_service';function isXrDeviceServiceProcess(process){if(process.name===XR_DEVICE_SERVICE_PROCESS)return true;return false;}\nconst VR_RESPONSE_MS=1000;const INPUT_MERGE_THRESHOLD_MS=200;const ANIMATION_MERGE_THRESHOLD_MS=32;const MOUSE_WHEEL_THRESHOLD_MS=40;const MOUSE_MOVE_THRESHOLD_MS=40;function compareEvents(x,y){if(x.start!==y.start){return x.start-y.start;}\nif(x.end!==y.end){return x.end-y.end;}\nif(x.guid&&y.guid){return x.guid-y.guid;}\nreturn 0;}\nfunction forEventTypesIn(events,typeNames,cb,opt_this){events.forEach(function(event){if(typeNames.indexOf(event.typeName)>=0){cb.call(opt_this,event);}});}\nfunction causedFrame(event){return event.associatedEvents.some(isImplFrameEvent);}\nfunction getSortedFrameEventsByProcess(modelHelper){const frameEventsByPid={};for(const[pid,rendererHelper]of\nObject.entries(modelHelper.rendererHelpers)){frameEventsByPid[pid]=rendererHelper.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds);}\nreturn frameEventsByPid;}\nfunction getSortedInputEvents(modelHelper){const inputEvents=[];const browserProcess=modelHelper.browserHelper.process;const mainThread=browserProcess.findAtMostOneThreadNamed('CrBrowserMain');for(const slice of mainThread.asyncSliceGroup.getDescendantEvents()){if(!slice.isTopLevel)continue;if(!(slice instanceof tr.e.cc.InputLatencyAsyncSlice))continue;if(isNaN(slice.start)||isNaN(slice.duration)||isNaN(slice.end)){continue;}\ninputEvents.push(slice);}\nreturn inputEvents.sort(compareEvents);}\nfunction findProtoExpectations(modelHelper,sortedInputEvents,warn){const protoExpectations=[];const handlers=[handleKeyboardEvents,handleMouseResponseEvents,handleMouseWheelEvents,handleMouseDragEvents,handleTapResponseEvents,handlePinchEvents,handleFlingEvents,handleTouchEvents,handleScrollEvents,handleCSSAnimations,handleWebGLAnimations,handleVideoAnimations,handleVrAnimations,];handlers.forEach(function(handler){protoExpectations.push.apply(protoExpectations,handler(modelHelper,sortedInputEvents,warn));});protoExpectations.sort(compareEvents);return protoExpectations;}\nfunction handleKeyboardEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,KEYBOARD_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.KEYBOARD);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}\nfunction handleMouseResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,MOUSE_RESPONSE_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}\nfunction handleMouseWheelEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let prevEvent_=undefined;forEventTypesIn(sortedInputEvents,MOUSE_WHEEL_TYPE_NAMES,function(event){const prevEvent=prevEvent_;prevEvent_=event;if(currentPE&&(prevEvent.start+MOUSE_WHEEL_THRESHOLD_MS)>=event.start){if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn;}\ncurrentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);});return protoExpectations;}\nfunction handleMouseDragEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let mouseDownEvent=undefined;forEventTypesIn(sortedInputEvents,MOUSE_DRAG_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.MOUSE_DOWN:if(causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);}else{mouseDownEvent=event;}\nbreak;case INPUT_TYPE.MOUSE_MOVE:if(!causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}else if(!currentPE||!currentPE.isNear(event,MOUSE_MOVE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);mouseDownEvent=undefined;}\nprotoExpectations.push(currentPE);}else{if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}\nbreak;case INPUT_TYPE.MOUSE_UP:if(!mouseDownEvent){const pe=new ProtoExpectation(causedFrame(event)?ProtoExpectation.RESPONSE_TYPE:ProtoExpectation.IGNORED_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);}\ncurrentPE.pushEvent(event);protoExpectations.push(currentPE);}\nmouseDownEvent=undefined;currentPE=undefined;break;}});if(mouseDownEvent){currentPE=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);currentPE.pushEvent(mouseDownEvent);protoExpectations.push(currentPE);}\nreturn protoExpectations;}\nfunction handleTapResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;forEventTypesIn(sortedInputEvents,TAP_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TAP_DOWN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;case INPUT_TYPE.TAP:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\ncurrentPE=undefined;break;case INPUT_TYPE.TAP_CANCEL:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handlePinchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;const modelBounds=modelHelper.model.bounds;forEventTypesIn(sortedInputEvents,PINCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.PINCH_BEGIN:if(currentPE&&currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);break;}\ncurrentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.PINCH_UPDATE:if(!currentPE||((currentPE.type===ProtoExpectation.RESPONSE_TYPE)&&sawFirstUpdate)||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstUpdate=true;}\nbreak;case INPUT_TYPE.PINCH_END:if(currentPE){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handleFlingEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;function isRendererFling(event){return event.title===RENDERER_FLING_TITLE;}\nconst browserHelper=modelHelper.browserHelper;const flingEvents=browserHelper.getAllAsyncSlicesMatching(isRendererFling);forEventTypesIn(sortedInputEvents,FLING_TYPE_NAMES,function(event){flingEvents.push(event);});flingEvents.sort(compareEvents);flingEvents.forEach(function(event){if(event.title===RENDERER_FLING_TITLE){if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn;}\nswitch(event.typeName){case INPUT_TYPE.FLING_START:if(currentPE){warn({type:'UserModelBuilder',message:'Unexpected FlingStart',showToUser:false,});currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);currentPE.end=0;protoExpectations.push(currentPE);}\nbreak;case INPUT_TYPE.FLING_CANCEL:if(currentPE){currentPE.pushEvent(event);currentPE.end=event.start;currentPE=undefined;}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\nbreak;}});if(currentPE&&!currentPE.end){currentPE.end=modelHelper.model.bounds.max;}\nreturn protoExpectations;}\nfunction handleTouchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstMove=false;forEventTypesIn(sortedInputEvents,TOUCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TOUCH_START:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstMove=false;}\nbreak;case INPUT_TYPE.TOUCH_MOVE:if(!currentPE){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;}\nif((sawFirstMove&&(currentPE.type===ProtoExpectation.RESPONSE_TYPE))||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){const prevEnd=currentPE.end;currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.start=prevEnd;protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstMove=true;}\nbreak;case INPUT_TYPE.TOUCH_END:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handleScrollEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;forEventTypesIn(sortedInputEvents,SCROLL_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.SCROLL_BEGIN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.SCROLL_UPDATE:if(currentPE){if(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)&&((currentPE.type===ProtoExpectation.ANIMATION_TYPE)||!sawFirstUpdate)){currentPE.pushEvent(event);sawFirstUpdate=true;}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nbreak;case INPUT_TYPE.SCROLL_END:if(!currentPE){warn({type:'UserModelBuilder',message:'Unexpected ScrollEnd',showToUser:false,});const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\ncurrentPE.pushEvent(event);break;}});return protoExpectations;}\nfunction handleVideoAnimations(modelHelper,sortedInputEvents,warn){const events=[];for(const pid in modelHelper.rendererHelpers){for(const tid in modelHelper.rendererHelpers[pid].process.threads){for(const asyncSlice of\nmodelHelper.rendererHelpers[pid].process.threads[tid].asyncSliceGroup.slices){if(asyncSlice.title===PLAYBACK_EVENT_TITLE){events.push(asyncSlice);}}}}\nevents.sort(tr.importer.compareEvents);const protoExpectations=[];for(const event of events){const currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VIDEO);currentPE.start=event.start;currentPE.end=event.end;currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn protoExpectations;}\nfunction handleVrAnimations(modelHelper,sortedInputEvents,warn){const events=[];const processes=[];if(typeof modelHelper.gpuHelper!=='undefined'){processes.push(modelHelper.gpuHelper.process);}\nfor(const helper of Object.values(modelHelper.rendererHelpers)){processes.push(helper.process);}\nfor(const helper of Object.values(modelHelper.browserHelpers)){processes.push(helper.process);}\nfor(const service of modelHelper.model.getAllProcesses(isXrDeviceServiceProcess)){processes.push(service);}\nlet vrCounterStart=Number.MAX_SAFE_INTEGER;let vrEventStart=Number.MAX_SAFE_INTEGER;for(const proc of processes){for(const[counterName,counterSeries]of\nObject.entries(proc.counters)){if(VR_COUNTER_NAMES.includes(counterName)){for(const series of counterSeries.series){for(const sample of series.samples){events.push(sample);vrCounterStart=Math.min(vrCounterStart,sample.timestamp);}}}}\nfor(const thread of Object.values(proc.threads)){for(const container of thread.childEventContainers()){for(const slice of container.slices){if(slice.title in VR_EXPECTATION_EVENTS||slice.title in WEBXR_INSTANT_EVENTS){events.push(slice);vrEventStart=Math.min(vrEventStart,slice.start);}}}}}\nif(events.length===0){return[];}\nevents.sort(function(x,y){if(x.range.min!==y.range.min){return x.range.min-y.range.min;}\nreturn x.guid-y.guid;});vrCounterStart=(vrCounterStart===Number.MAX_SAFE_INTEGER)?0:vrCounterStart;vrEventStart=(vrEventStart===Number.MAX_SAFE_INTEGER)?0:vrEventStart;const vrAnimationStart=Math.max(vrCounterStart,vrEventStart)+\nVR_RESPONSE_MS;const responsePE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.VR);const animationPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VR);let lastResponseEvent;for(const event of events){if(event.range.min<vrAnimationStart){if(event instanceof tr.model.CounterSample){responsePE.pushSample(event);}else{responsePE.pushEvent(event);}\nlastResponseEvent=event;}else{if(event instanceof tr.model.CounterSample){animationPE.pushSample(event);}else{animationPE.pushEvent(event);}}}\nif(lastResponseEvent instanceof tr.model.CounterSample){animationPE.pushSample(lastResponseEvent);}else{animationPE.pushEvent(lastResponseEvent);}\nreturn[responsePE,animationPE];}\nfunction handleCSSAnimations(modelHelper,sortedInputEvents,warn){const animationEvents=modelHelper.browserHelper.getAllAsyncSlicesMatching(function(event){return((event.title===CSS_ANIMATION_TITLE)&&event.isTopLevel&&(event.duration>0));});const animationRanges=[];function pushAnimationRange(start,end,animation){const range=tr.b.math.Range.fromExplicitRange(start,end);range.animation=animation;animationRanges.push(range);}\nanimationEvents.forEach(function(animation){if(animation.subSlices.length===0){pushAnimationRange(animation.start,animation.end,animation);}else{let start=undefined;animation.subSlices.forEach(function(sub){if((sub.args.data.state==='running')&&(start===undefined)){start=sub.start;}else if((sub.args.data.state==='paused')||(sub.args.data.state==='idle')||(sub.args.data.state==='finished')){if(start===undefined){start=modelHelper.model.bounds.min;}\npushAnimationRange(start,sub.start,animation);start=undefined;}});if(start!==undefined){pushAnimationRange(start,animation.end,animation);}}});return animationRanges.map(function(range){const protoExpectation=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.CSS);protoExpectation.start=range.min;protoExpectation.end=range.max;protoExpectation.associatedEvents.push(range.animation);return protoExpectation;});}\nfunction findWebGLEvents(modelHelper,mailboxEvents,animationEvents){for(const event of modelHelper.model.getDescendantEvents()){if(event.title==='DrawingBuffer::prepareMailbox'){mailboxEvents.push(event);}else if(event.title==='PageAnimator::serviceScriptedAnimations'){animationEvents.push(event);}}}\nfunction findMailboxEventsNearAnimationEvents(mailboxEvents,animationEvents){if(animationEvents.length===0)return[];mailboxEvents.sort(compareEvents);animationEvents.sort(compareEvents);const animationIterator=animationEvents[Symbol.iterator]();let animationEvent=animationIterator.next().value;const filteredEvents=[];for(const event of mailboxEvents){while(animationEvent&&(animationEvent.start<(event.start-ANIMATION_MERGE_THRESHOLD_MS))){animationEvent=animationIterator.next().value;}\nif(!animationEvent)break;if(animationEvent.start<(event.start+ANIMATION_MERGE_THRESHOLD_MS)){filteredEvents.push(event);}}\nreturn filteredEvents;}\nfunction createProtoExpectationsFromMailboxEvents(mailboxEvents){const protoExpectations=[];let currentPE=undefined;for(const event of mailboxEvents){if(currentPE===undefined||!currentPE.isNear(event,ANIMATION_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.WEBGL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);}}\nreturn protoExpectations;}\nfunction handleWebGLAnimations(modelHelper,sortedInputEvents,warn){const prepareMailboxEvents=[];const scriptedAnimationEvents=[];findWebGLEvents(modelHelper,prepareMailboxEvents,scriptedAnimationEvents);const webGLMailboxEvents=findMailboxEventsNearAnimationEvents(prepareMailboxEvents,scriptedAnimationEvents);return createProtoExpectationsFromMailboxEvents(webGLMailboxEvents);}\nfunction postProcessProtoExpectations(modelHelper,protoExpectations){protoExpectations=findFrameEventsForAnimations(modelHelper,protoExpectations);protoExpectations=mergeIntersectingResponses(protoExpectations);protoExpectations=mergeIntersectingAnimations(protoExpectations);protoExpectations=fixResponseAnimationStarts(protoExpectations);protoExpectations=fixTapResponseTouchAnimations(protoExpectations);return protoExpectations;}\nfunction mergeIntersectingResponses(protoExpectations){const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);if(pe.type!==ProtoExpectation.RESPONSE_TYPE)continue;for(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(otherPE.type!==pe.type)continue;if(!otherPE.intersects(pe))continue;const typeNames=pe.associatedEvents.map(function(event){return event.typeName;});if(otherPE.containsTypeNames(typeNames))continue;pe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction mergeIntersectingAnimations(protoExpectations){const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);if(pe.type!==ProtoExpectation.ANIMATION_TYPE)continue;const isCSS=pe.initiatorType===INITIATOR_TYPE.CSS;const isFling=pe.containsTypeNames([INPUT_TYPE.FLING_START]);const isVideo=pe.initiatorType===INITIATOR_TYPE.VIDEO;for(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(otherPE.type!==pe.type)continue;if((isCSS&&otherPE.initiatorType!==INITIATOR_TYPE.CSS)||isFling!==otherPE.containsTypeNames([INPUT_TYPE.FLING_START])||isVideo&&otherPE.initiatorType!==INITIATOR_TYPE.VIDEO||otherPE.initiatorType===INITIATOR_TYPE.VR){continue;}\nif(isCSS){if(!pe.isNear(otherPE,ANIMATION_MERGE_THRESHOLD_MS)){continue;}}else if(!otherPE.intersects(pe)){continue;}\npe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction fixResponseAnimationStarts(protoExpectations){protoExpectations.forEach(function(ape){if(ape.type!==ProtoExpectation.ANIMATION_TYPE){return;}\nprotoExpectations.forEach(function(rpe){if(rpe.type!==ProtoExpectation.RESPONSE_TYPE){return;}\nif(!ape.containsTimestampInclusive(rpe.end)){return;}\nif(ape.containsTimestampInclusive(rpe.start)){return;}\nape.start=rpe.end;if(ape.associatedEvents!==undefined){ape.associatedEvents=ape.associatedEvents.filter(e=>(!isImplFrameEvent(e)||e.start>=ape.start));}});});return protoExpectations;}\nfunction isImplFrameEvent(event){return event.title===tr.model.helpers.IMPL_RENDERING_STATS;}\nfunction fixTapResponseTouchAnimations(protoExpectations){function isTapResponse(pe){return(pe.type===ProtoExpectation.RESPONSE_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TAP]);}\nfunction isTouchAnimation(pe){return(pe.type===ProtoExpectation.ANIMATION_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TOUCH_MOVE])&&!pe.containsTypeNames([INPUT_TYPE.SCROLL_UPDATE,INPUT_TYPE.PINCH_UPDATE]);}\nconst newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);const peIsTapResponse=isTapResponse(pe);const peIsTouchAnimation=isTouchAnimation(pe);if(!peIsTapResponse&&!peIsTouchAnimation){continue;}\nfor(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(!otherPE.intersects(pe))continue;if(peIsTapResponse&&!isTouchAnimation(otherPE))continue;if(peIsTouchAnimation&&!isTapResponse(otherPE))continue;pe.type=ProtoExpectation.RESPONSE_TYPE;pe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction findFrameEventsForAnimations(modelHelper,protoExpectations){const newPEs=[];const frameEventsByPid=getSortedFrameEventsByProcess(modelHelper);for(const pe of protoExpectations){if(pe.type!==ProtoExpectation.ANIMATION_TYPE){newPEs.push(pe);continue;}\nconst frameEvents=[];for(const pid of Object.keys(modelHelper.rendererHelpers)){const range=tr.b.math.Range.fromExplicitRange(pe.start,pe.end);frameEvents.push.apply(frameEvents,range.filterArray(frameEventsByPid[pid],e=>e.start));}\nif(frameEvents.length===0&&!(pe.initiatorType===INITIATOR_TYPE.WEBGL||pe.initiatorType===INITIATOR_TYPE.VR)){pe.type=ProtoExpectation.IGNORED_TYPE;newPEs.push(pe);continue;}\npe.associatedEvents.addEventSet(frameEvents);newPEs.push(pe);}\nreturn newPEs;}\nfunction checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn){const handledEvents=[];protoExpectations.forEach(function(protoExpectation){protoExpectation.associatedEvents.forEach(function(event){if((event.title===CSS_ANIMATION_TITLE)&&(event.subSlices.length>0)){return;}\nif((handledEvents.indexOf(event)>=0)&&(!isImplFrameEvent(event))){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});return;}\nhandledEvents.push(event);});});sortedInputEvents.forEach(function(event){if(handledEvents.indexOf(event)<0){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});}});}\nfunction findInputExpectations(modelHelper){let warning;function warn(w){if(warning)return;warning=w;}\nconst sortedInputEvents=getSortedInputEvents(modelHelper);let protoExpectations=findProtoExpectations(modelHelper,sortedInputEvents,warn);protoExpectations=postProcessProtoExpectations(modelHelper,protoExpectations);checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn);if(warning)modelHelper.model.importWarning(warning);const expectations=[];protoExpectations.forEach(function(protoExpectation){const ir=protoExpectation.createInteractionRecord(modelHelper.model);if(ir){expectations.push(ir);}});return expectations;}\nreturn{findInputExpectations,compareEvents,CSS_ANIMATION_TITLE,VR_EXPECTATION_EVENTS,WEBXR_INSTANT_EVENTS,};});'use strict';tr.exportTo('tr.b',function(){class FixedColorScheme{constructor(namesToColors){this.namesToColors_=namesToColors;}\nstatic fromNames(names){const namesToColors=new Map();const generator=new tr.b.SinebowColorGenerator();for(const name of names){namesToColors.set(name,generator.colorForKey(name));}\nreturn new FixedColorScheme(namesToColors);}\ngetColor(name){const color=this.namesToColors_.get(name);if(color===undefined)throw new Error('Unknown color: '+name);return color;}}\nconst MemoryColumnColorScheme=new FixedColorScheme(new Map([['used_memory_column',new tr.b.Color(0,0,255)],['older_used_memory_column',new tr.b.Color(153,204,255)],['tracing_memory_column',new tr.b.Color(153,153,153)]]));function FixedColorSchemeRegistry(){}\nFixedColorSchemeRegistry.lookUp=function(name){const info=this.findTypeInfoMatching(info=>info.metadata.name===name);if(!info)return undefined;return info.constructor();};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(FixedColorSchemeRegistry,options);return{MemoryColumnColorScheme,FixedColorScheme,FixedColorSchemeRegistry,};});'use strict';tr.exportTo('tr.e.chrome.chrome_processes',function(){const CHROME_PROCESS_NAMES={BROWSER:'browser_process',RENDERER:'renderer_processes',ALL:'all_processes',GPU:'gpu_process',PPAPI:'ppapi_process',UNKNOWN:'unknown_processes',};const PROCESS_COLOR_SCHEME_NAME='ChromeProcessNames';const PROCESS_COLOR_SCHEME=tr.b.FixedColorScheme.fromNames(Object.values(CHROME_PROCESS_NAMES));tr.b.FixedColorSchemeRegistry.register(()=>PROCESS_COLOR_SCHEME,{name:PROCESS_COLOR_SCHEME_NAME,});function canonicalizeName(name){return name.toLowerCase().replace(' ','_');}\nfunction canonicalizeProcessName(rawProcessName){if(!rawProcessName)return CHROME_PROCESS_NAMES.UNKNOWN;const baseCanonicalName=canonicalizeName(rawProcessName);switch(baseCanonicalName){case'renderer':return CHROME_PROCESS_NAMES.RENDERER;case'browser':return CHROME_PROCESS_NAMES.BROWSER;}\nif(Object.values(CHROME_PROCESS_NAMES).includes(baseCanonicalName)){return baseCanonicalName;}\nreturn CHROME_PROCESS_NAMES.UNKNOWN;}\nreturn{CHROME_PROCESS_NAMES,PROCESS_COLOR_SCHEME,PROCESS_COLOR_SCHEME_NAME,canonicalizeName,canonicalizeProcessName,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function perceptualBlend(ir,index,score){return Math.exp(1-score);}\nfunction filterExpectationsByRange(irs,opt_range){const filteredExpectations=[];irs.forEach(function(ir){if(!(ir instanceof tr.model.um.UserExpectation))return;if(!opt_range||opt_range.intersectsExplicitRangeInclusive(ir.start,ir.end)){filteredExpectations.push(ir);}});return filteredExpectations;}\nfunction splitGlobalDumpsByBrowserName(model,opt_rangeOfInterest){const chromeModelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const browserNameToGlobalDumps=new Map();const globalDumpToBrowserHelper=new WeakMap();if(chromeModelHelper){chromeModelHelper.browserHelpers.forEach(function(helper){const globalDumps=skipDumpsThatDoNotIntersectRange(helper.process.memoryDumps.map(d=>d.globalMemoryDump),opt_rangeOfInterest);globalDumps.forEach(function(globalDump){const existingHelper=globalDumpToBrowserHelper.get(globalDump);if(existingHelper!==undefined){throw new Error('Memory dump ID clash across multiple browsers '+'with PIDs: '+existingHelper.pid+' and '+helper.pid);}\nglobalDumpToBrowserHelper.set(globalDump,helper);});makeKeyUniqueAndSet(browserNameToGlobalDumps,tr.e.chrome.chrome_processes.canonicalizeName(helper.browserName),globalDumps);});}\nconst unclassifiedGlobalDumps=skipDumpsThatDoNotIntersectRange(model.globalMemoryDumps.filter(g=>!globalDumpToBrowserHelper.has(g)),opt_rangeOfInterest);if(unclassifiedGlobalDumps.length>0){makeKeyUniqueAndSet(browserNameToGlobalDumps,'unknown_browser',unclassifiedGlobalDumps);}\nreturn browserNameToGlobalDumps;}\nfunction makeKeyUniqueAndSet(map,key,value){let uniqueKey=key;let nextIndex=2;while(map.has(uniqueKey)){uniqueKey=key+nextIndex;nextIndex++;}\nmap.set(uniqueKey,value);}\nfunction skipDumpsThatDoNotIntersectRange(dumps,opt_range){if(!opt_range)return dumps;return dumps.filter(d=>opt_range.intersectsExplicitRangeInclusive(d.start,d.end));}\nfunction hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nreturn{hasCategoryAndName,filterExpectationsByRange,perceptualBlend,splitGlobalDumpsByBrowserName};});'use strict';tr.exportTo('tr.e.chrome',function(){const CHROME_INTERNAL_URLS=['','about:blank','data:text/html,pluginplaceholderdata','chrome-error://chromewebdata/'];const SCHEDULER_TOP_LEVEL_TASK_TITLE='ThreadControllerImpl::RunTask';const SCHEDULER_TOP_LEVEL_TASKS=new Set([SCHEDULER_TOP_LEVEL_TASK_TITLE,'ThreadControllerImpl::DoWork','TaskQueueManager::ProcessTaskFromWorkQueue']);class EventFinderUtils{static hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nstatic*getMainThreadEvents(rendererHelper,eventTitle,eventCategory){if(!rendererHelper.mainThread)return;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(rendererHelper.isTelemetryInternalEvent(ev))continue;if(!this.hasCategoryAndName(ev,eventCategory,eventTitle)){continue;}\nyield ev;}}\nstatic getNetworkEventsInRange(process,range){const networkEvents=[];for(const thread of Object.values(process.threads)){const threadHelper=new tr.model.helpers.ChromeThreadHelper(thread);const events=threadHelper.getNetworkEvents();for(const event of events){if(range.intersectsExplicitRangeInclusive(event.start,event.end)){networkEvents.push(event);}}}\nreturn networkEvents;}\nstatic getSortedMainThreadEventsByFrame(rendererHelper,eventTitle,eventCategory){const eventsByFrame=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;if(!eventsByFrame.has(frameIdRef)){eventsByFrame.set(frameIdRef,[]);}\neventsByFrame.get(frameIdRef).push(ev);}\nreturn eventsByFrame;}\nstatic getSortedMainThreadEventsByNavId(rendererHelper,eventTitle,eventCategory){const eventsByNavId=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){if(ev.args.data===undefined)continue;const navIdRef=ev.args.data.navigationId;if(navIdRef===undefined)continue;eventsByNavId.set(navIdRef,ev);}\nreturn eventsByNavId;}\nstatic findLastEventStartingOnOrBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}\nstatic findLastEventStartingBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}\nstatic findNextEventStartingOnOrAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}\nreturn sortedEvents[firstIndexOnOrAfterTimestamp];}\nstatic findNextEventStartingAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}\nreturn sortedEvents[firstIndexOnOrAfterTimestamp];}\nstatic findToplevelSchedulerTasks(mainThread){const tasks=[];for(const task of mainThread.findTopmostSlices(slice=>slice.category==='toplevel'&&SCHEDULER_TOP_LEVEL_TASKS.has(slice.title))){tasks.push(task);}\nreturn tasks;}}\nreturn{EventFinderUtils,CHROME_INTERNAL_URLS,SCHEDULER_TOP_LEVEL_TASK_TITLE,};});'use strict';tr.exportTo('tr.e.chrome',function(){const TIME_TO_INTERACTIVE_WINDOW_SIZE_MS=5000;const ACTIVE_REQUEST_TOLERANCE=2;const FCI_MIN_CLUSTER_SEPARATION_MS=1000;const TASK_CLUSTER_HEAVINESS_THRESHOLD_MS=250;const ENDPOINT_TYPES={LONG_TASK_START:'LONG_TASK_START',LONG_TASK_END:'LONG_TASK_END',REQUEST_START:'REQUEST_START',REQUEST_END:'REQUEST_END'};function getEndpoints_(events,startType,endType){const endpoints=[];for(const event of events){endpoints.push({time:event.start,type:startType});endpoints.push({time:event.end,type:endType});}\nreturn endpoints;}\nfunction reachedTTIQuiscence_(timestamp,networkQuietWindowStart,mainThreadQuietWindowStart){if(networkQuietWindowStart===undefined||mainThreadQuietWindowStart===undefined){return false;}\nconst mainThreadQuietForLongEnough=timestamp-mainThreadQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;const networkQuietForLongEnough=timestamp-networkQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;return mainThreadQuietForLongEnough&&networkQuietForLongEnough;}\nfunction findInteractiveTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow,networkRequests){const longTaskEndpoints=getEndpoints_(longTasksInWindow,ENDPOINT_TYPES.LONG_TASK_START,ENDPOINT_TYPES.LONG_TASK_END);const networkRequestEndpoints=getEndpoints_(networkRequests,ENDPOINT_TYPES.REQUEST_START,ENDPOINT_TYPES.REQUEST_END);const endpoints=longTaskEndpoints.concat(networkRequestEndpoints);endpoints.sort((a,b)=>a.time-b.time);let networkQuietWindowStart=searchBegin;let mainThreadQuietWindowStart=searchBegin;let interactiveCandidate=undefined;let activeRequests=0;for(const endpoint of endpoints){if(reachedTTIQuiscence_(endpoint.time,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;break;}\nswitch(endpoint.type){case ENDPOINT_TYPES.LONG_TASK_START:mainThreadQuietWindowStart=undefined;break;case ENDPOINT_TYPES.LONG_TASK_END:mainThreadQuietWindowStart=endpoint.time;break;case ENDPOINT_TYPES.REQUEST_START:activeRequests++;if(activeRequests>ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=undefined;}\nbreak;case ENDPOINT_TYPES.REQUEST_END:activeRequests--;if(activeRequests===ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=endpoint.time;}\nbreak;default:throw new Error('Internal Error: Unhandled endpoint type.');}}\nif(interactiveCandidate===undefined&&reachedTTIQuiscence_(searchEnd,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;}\nif(interactiveCandidate===undefined)return undefined;return Math.max(interactiveCandidate,domContentLoadedEnd);}\nfunction requiredFCIWindowSizeMs(timeSinceSearchBeginMs){const timeCoefficient=1/15*Math.log(2);const timeSinceSearchBeginSeconds=tr.b.convertUnit(timeSinceSearchBeginMs,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const windowSizeSeconds=4*Math.exp(-timeCoefficient*timeSinceSearchBeginSeconds)+1;return tr.b.convertUnit(windowSizeSeconds,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);}\nclass TaskCluster{constructor(tasksInClusterSorted){if(tasksInClusterSorted.length===0){throw new Error('Internal Error: TaskCluster must have non zero tasks');}\nfor(let i=0;i<tasksInClusterSorted.length-1;i++){const durationBetweenTasks=tasksInClusterSorted[i+1].start-\ntasksInClusterSorted[i].end;if(durationBetweenTasks>=FCI_MIN_CLUSTER_SEPARATION_MS){throw new Error('Internal Error: Tasks in a TaskCluster cannot be '+'more than '+FCI_MIN_CLUSTER_SEPARATION_MS+' miliseconds apart');}\nif(durationBetweenTasks<-1e7){throw new Error('Internal Error: List of tasks used to construct '+'TaskCluster must be sorted.');}}\nthis._clusterTasks=tasksInClusterSorted;}\nget start(){return this._clusterTasks[0].start;}\nget end(){return this._clusterTasks[this._clusterTasks.length-1].end;}\nisHeavy(){return this.end-this.start>TASK_CLUSTER_HEAVINESS_THRESHOLD_MS;}}\nfunction findFCITaskClusters(sortedLongTasks){const clusters=[];if(sortedLongTasks.length===0)return clusters;const firstTask=sortedLongTasks[0];const restOfTasks=sortedLongTasks.slice(1);let currentClusterTasks=[firstTask];for(const currTask of restOfTasks){const prevTask=currentClusterTasks[currentClusterTasks.length-1];if(currTask.start-prevTask.end<FCI_MIN_CLUSTER_SEPARATION_MS){currentClusterTasks.push(currTask);}else{clusters.push(new TaskCluster(currentClusterTasks));currentClusterTasks=[currTask];}}\nclusters.push(new TaskCluster(currentClusterTasks));return clusters;}\nfunction reachedFCIQuiescence_(timestamp,mainThreadQuietWindowStart,searchBegin){const quietWindowSize=timestamp-mainThreadQuietWindowStart;const timeSinceSearchBegin=mainThreadQuietWindowStart-searchBegin;const requiredWindowSize=requiredFCIWindowSizeMs(timeSinceSearchBegin);return quietWindowSize>requiredWindowSize;}\nfunction findFirstCpuIdleTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow){const sortedLongTasks=longTasksInWindow.sort((a,b)=>a.start-b.start);const taskClusters=findFCITaskClusters(sortedLongTasks);const heavyTaskClusters=taskClusters.filter(cluster=>cluster.isHeavy());let quietWindowBegin=searchBegin;let fiCandidate=undefined;for(const cluster of heavyTaskClusters){if(reachedFCIQuiescence_(cluster.start,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;break;}\nquietWindowBegin=cluster.end;}\nif(fiCandidate===undefined){if(reachedFCIQuiescence_(searchEnd,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;}else{return undefined;}}\nreturn Math.max(fiCandidate,domContentLoadedEnd);}\nreturn{findInteractiveTime,findFirstCpuIdleTime,requiredFCIWindowSizeMs,findFCITaskClusters,};});'use strict';tr.exportTo('tr.model.um',function(){const LOAD_SUBTYPE_NAMES={SUCCESSFUL:'Successful',FAILED:'Failed',};const DOES_LOAD_SUBTYPE_NAME_EXIST={};for(const key in LOAD_SUBTYPE_NAMES){DOES_LOAD_SUBTYPE_NAME_EXIST[LOAD_SUBTYPE_NAMES[key]]=true;}\nfunction LoadExpectation(parentModel,initiatorTitle,start,duration,renderer,navigationStart,fmpEvent,fcpEvent,dclEndEvent,cpuIdleTime,timeToInteractive,totalBlockingTime,url,frameId){if(!DOES_LOAD_SUBTYPE_NAME_EXIST[initiatorTitle]){throw new Error(initiatorTitle+' is not in LOAD_SUBTYPE_NAMES');}\ntr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.renderProcess=renderer;this.renderMainThread=undefined;this.routingId=undefined;this.parentRoutingId=undefined;this.loadFinishedEvent=undefined;this.navigationStart=navigationStart;this.fmpEvent=fmpEvent;this.fcpEvent=fcpEvent;this.domContentLoadedEndEvent=dclEndEvent;this.firstCpuIdleTime=cpuIdleTime;this.timeToInteractive=timeToInteractive;this.totalBlockingTime=totalBlockingTime;this.url=url;this.frameId=frameId;}\nLoadExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:LoadExpectation};tr.model.um.UserExpectation.subTypes.register(LoadExpectation,{stageTitle:'Load',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_load')});return{LOAD_SUBTYPE_NAMES,LoadExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const LONG_TASK_THRESHOLD_MS=50;const IGNORE_URLS=['','about:blank',];function findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,ts){const objects=rendererHelper.process.objects;const frameLoaderInstances=objects.instancesByTypeName_.FrameLoader;if(frameLoaderInstances===undefined)return undefined;let snapshot;for(const instance of frameLoaderInstances){if(!instance.isAliveAt(ts))continue;const maybeSnapshot=instance.getSnapshotAt(ts);if(frameIdRef!==maybeSnapshot.args.frame.id_ref)continue;snapshot=maybeSnapshot;}\nreturn snapshot;}\nfunction findFirstMeaningfulPaintCandidates(rendererHelper){const candidatesForFrameId={};for(const ev of rendererHelper.process.getDescendantEvents()){if(!tr.e.chrome.EventFinderUtils.hasCategoryAndName(ev,'loading','firstMeaningfulPaintCandidate')){continue;}\nif(rendererHelper.isTelemetryInternalEvent(ev))continue;const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;let list=candidatesForFrameId[frameIdRef];if(list===undefined){candidatesForFrameId[frameIdRef]=list=[];}\nlist.push(ev);}\nreturn candidatesForFrameId;}\nfunction computeTotalBlockingTime_(fcpTime,interactiveTime,topLevelTasks){let sumBlockingTime=0;for(const event of topLevelTasks){if(event.duration<LONG_TASK_THRESHOLD_MS)continue;if(event.end<fcpTime)continue;if(event.start>interactiveTime)continue;const clippedStart=Math.max(event.start,fcpTime);const clippedEnd=Math.min(event.end,interactiveTime);const clippedDuration=clippedEnd-clippedStart;if(clippedDuration<LONG_TASK_THRESHOLD_MS)continue;sumBlockingTime+=(clippedDuration-LONG_TASK_THRESHOLD_MS);}\nreturn sumBlockingTime;}\nfunction computeInteractivityMetricSample_(rendererHelper,navigationStart,fcpEvent,domContentLoadedEndEvent,searchWindowEnd){if(domContentLoadedEndEvent===undefined||fcpEvent===undefined){return{interactiveTime:undefined,firstCpuIdleTime:undefined,totalBlockingTime:undefined};}\nconst firstContentfulPaintTime=fcpEvent.start;const mainThreadTasks=tr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread);const longTasks=mainThreadTasks.filter(task=>task.duration>=LONG_TASK_THRESHOLD_MS);const longTasksInWindow=longTasks.filter(task=>task.range.intersectsExplicitRangeInclusive(firstContentfulPaintTime,searchWindowEnd));const resourceLoadEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd));const firstCpuIdleTime=tr.e.chrome.findFirstCpuIdleTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow);const interactiveTime=resourceLoadEvents.length>0?tr.e.chrome.findInteractiveTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow,resourceLoadEvents):undefined;const totalBlockingTime=interactiveTime?computeTotalBlockingTime_(fcpEvent.start,interactiveTime,longTasks):undefined;return{interactiveTime,firstCpuIdleTime,totalBlockingTime};}\nfunction constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpEvent,searchWindowEnd,url,frameId){const searchRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd);const dclTimesForFrame=frameToDomContentLoadedEndEvents.get(frameId)||[];const dclTimesInWindow=searchRange.filterArray(dclTimesForFrame,event=>event.start);let domContentLoadedEndEvent=undefined;if(dclTimesInWindow.length!==0){domContentLoadedEndEvent=dclTimesInWindow[dclTimesInWindow.length-1];}\nconst fcpForFrame=frameToFcpEvents.get(frameId)||[];const fcpInWindow=searchRange.filterArray(fcpForFrame,event=>event.start);const fcpEvent=fcpInWindow[0];const{interactiveTime,firstCpuIdleTime,totalBlockingTime}=computeInteractivityMetricSample_(rendererHelper,navigationStart,fcpEvent,domContentLoadedEndEvent,searchWindowEnd);const duration=(interactiveTime===undefined)?searchWindowEnd-navigationStart.start:interactiveTime-navigationStart.start;return new tr.model.um.LoadExpectation(rendererHelper.modelHelper.model,tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL,navigationStart.start,duration,rendererHelper.process,navigationStart,fmpEvent,fcpEvent,domContentLoadedEndEvent,firstCpuIdleTime,interactiveTime,totalBlockingTime,url,frameId);}\nfunction collectLoadExpectationsForRenderer(rendererHelper){const samples=[];const frameToNavStartEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const frameToDomContentLoadedEndEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'domContentLoadedEventEnd','blink.user_timing');const frameToFcpEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'firstContentfulPaint','loading');function addSamples(frameIdRef,navigationStart,fmpCandidateEvents,searchWindowEnd,url){let fmpMarkerEvent=tr.e.chrome.EventFinderUtils.findLastEventStartingOnOrBeforeTimestamp(fmpCandidateEvents,searchWindowEnd);if(fmpMarkerEvent!==undefined&&navigationStart.start>fmpMarkerEvent.start){fmpMarkerEvent=undefined;}\nsamples.push(constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpMarkerEvent,searchWindowEnd,url,frameIdRef));}\nconst candidatesForFrameId=findFirstMeaningfulPaintCandidates(rendererHelper);for(const[frameIdRef,navStartEvents]of frameToNavStartEvents){const fmpCandidateEvents=candidatesForFrameId[frameIdRef]||[];let prevNavigation={navigationEvent:undefined,url:undefined};for(let index=0;index<navStartEvents.length;index++){const currNavigation=navStartEvents[index];let url;let isLoadingMainFrame=false;if(currNavigation.args.data){url=currNavigation.args.data.documentLoaderURL;isLoadingMainFrame=currNavigation.args.data.isLoadingMainFrame;}else{const snapshot=findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,currNavigation.start);if(snapshot){url=snapshot.args.documentLoaderURL;isLoadingMainFrame=snapshot.args.isLoadingMainFrame;}}\nif(!isLoadingMainFrame)continue;if(url===undefined||IGNORE_URLS.includes(url))continue;if(prevNavigation.navigationEvent!==undefined){addSamples(frameIdRef,prevNavigation.navigationEvent,fmpCandidateEvents,currNavigation.start,prevNavigation.url);}\nprevNavigation={navigationEvent:currNavigation,url};}\nif(prevNavigation.navigationEvent!==undefined){addSamples(frameIdRef,prevNavigation.navigationEvent,fmpCandidateEvents,rendererHelper.modelHelper.chromeBounds.max,prevNavigation.url);}}\nreturn samples;}\nfunction findLoadExpectations(modelHelper){const loads=[];const chromeHelper=modelHelper.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;loads.push.apply(loads,collectLoadExpectationsForRenderer(rendererHelper));}\nreturn loads;}\nreturn{findLoadExpectations,};});'use strict';tr.exportTo('tr.model.um',function(){function StartupExpectation(parentModel,start,duration){tr.model.um.UserExpectation.call(this,parentModel,'',start,duration);}\nStartupExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:StartupExpectation};tr.model.um.UserExpectation.subTypes.register(StartupExpectation,{stageTitle:'Startup',colorId:tr.b.ColorScheme.getColorIdForReservedName('startup')});return{StartupExpectation,};});'use strict';tr.exportTo('tr.importer',function(){function getAllFrameEvents(modelHelper){const frameEvents=[];frameEvents.push.apply(frameEvents,modelHelper.browserHelper.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds));for(const renderer of Object.values(modelHelper.rendererHelpers)){frameEvents.push.apply(frameEvents,renderer.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds));}\nreturn frameEvents.sort(tr.importer.compareEvents);}\nfunction getStartupEvents(modelHelper){function isStartupSlice(slice){return slice.title==='BrowserMainLoop::CreateThreads';}\nconst events=modelHelper.browserHelper.getAllAsyncSlicesMatching(isStartupSlice);const deduper=new tr.model.EventSet();events.forEach(function(event){const sliceGroup=event.parentContainer.sliceGroup;const slice=sliceGroup&&sliceGroup.findFirstSlice();if(slice){deduper.push(slice);}});return deduper.toArray();}\nfunction findStartupExpectations(modelHelper){const openingEvents=getStartupEvents(modelHelper);const closingEvents=getAllFrameEvents(modelHelper);const startups=[];openingEvents.forEach(function(openingEvent){closingEvents.forEach(function(closingEvent){if(openingEvent.closingEvent)return;if(closingEvent.openingEvent)return;if(closingEvent.start<=openingEvent.start)return;if(openingEvent.parentContainer.parent.pid!==closingEvent.parentContainer.parent.pid){return;}\nopeningEvent.closingEvent=closingEvent;closingEvent.openingEvent=openingEvent;const se=new tr.model.um.StartupExpectation(modelHelper.model,openingEvent.start,closingEvent.end-openingEvent.start);se.associatedEvents.push(openingEvent);se.associatedEvents.push(closingEvent);startups.push(se);});});return startups;}\nreturn{findStartupExpectations,};});'use strict';tr.exportTo('tr.model',function(){function getAssociatedEvents(irs){const allAssociatedEvents=new tr.model.EventSet();irs.forEach(function(ir){ir.associatedEvents.forEach(function(event){if(event instanceof tr.model.FlowEvent)return;allAssociatedEvents.push(event);});});return allAssociatedEvents;}\nfunction getUnassociatedEvents(model,associatedEvents){const unassociatedEvents=new tr.model.EventSet();for(const proc of model.getAllProcesses()){for(const thread of Object.values(proc.threads)){for(const event of thread.sliceGroup.getDescendantEvents()){if(!associatedEvents.contains(event)){unassociatedEvents.push(event);}}}}\nreturn unassociatedEvents;}\nfunction getTotalCpuDuration(events){let cpuMs=0;events.forEach(function(event){if(event.cpuSelfTime){cpuMs+=event.cpuSelfTime;}});return cpuMs;}\nfunction getIRCoverageFromModel(model){const associatedEvents=getAssociatedEvents(model.userModel.expectations);if(!associatedEvents.length)return undefined;const unassociatedEvents=getUnassociatedEvents(model,associatedEvents);const associatedCpuMs=getTotalCpuDuration(associatedEvents);const unassociatedCpuMs=getTotalCpuDuration(unassociatedEvents);const totalEventCount=associatedEvents.length+unassociatedEvents.length;const totalCpuMs=associatedCpuMs+unassociatedCpuMs;let coveredEventsCpuTimeRatio=undefined;if(totalCpuMs!==0){coveredEventsCpuTimeRatio=associatedCpuMs/totalCpuMs;}\nreturn{associatedEventsCount:associatedEvents.length,unassociatedEventsCount:unassociatedEvents.length,associatedEventsCpuTimeMs:associatedCpuMs,unassociatedEventsCpuTimeMs:unassociatedCpuMs,coveredEventsCountRatio:associatedEvents.length/totalEventCount,coveredEventsCpuTimeRatio};}\nreturn{getIRCoverageFromModel,getAssociatedEvents,getUnassociatedEvents,};});'use strict';tr.exportTo('tr.model.um',function(){function IdleExpectation(parentModel,start,duration){const initiatorTitle='';tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);}\nIdleExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:IdleExpectation};tr.model.um.UserExpectation.subTypes.register(IdleExpectation,{stageTitle:'Idle',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_idle')});return{IdleExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const INSIGNIFICANT_MS=1;class UserModelBuilder{constructor(model){this.model=model;this.modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);}\nstatic supportsModelHelper(modelHelper){return modelHelper.browserHelper!==undefined;}\nbuildUserModel(){if(!this.modelHelper||!this.modelHelper.browserHelper)return;try{for(const ue of this.findUserExpectations()){this.model.userModel.expectations.push(ue);}\nthis.model.userModel.segments.push(...this.findSegments());}catch(error){this.model.importWarning({type:'UserModelBuilder',message:error,showToUser:true});}}\nfindSegments(){let timestamps=new Set();for(const expectation of this.model.userModel.expectations){timestamps.add(expectation.start);timestamps.add(expectation.end);}\ntimestamps=[...timestamps];timestamps.sort((x,y)=>x-y);const segments=[];for(let i=0;i<timestamps.length-1;++i){const segment=new tr.model.um.Segment(timestamps[i],timestamps[i+1]-timestamps[i]);segments.push(segment);const segmentRange=tr.b.math.Range.fromExplicitRange(segment.start,segment.end);for(const expectation of this.model.userModel.expectations){const expectationRange=tr.b.math.Range.fromExplicitRange(expectation.start,expectation.end);if(segmentRange.intersectsRangeExclusive(expectationRange)){segment.expectations.push(expectation);}}}\nreturn segments;}\nfindUserExpectations(){const expectations=[];expectations.push.apply(expectations,tr.importer.findStartupExpectations(this.modelHelper));expectations.push.apply(expectations,tr.importer.findLoadExpectations(this.modelHelper));expectations.push.apply(expectations,tr.importer.findInputExpectations(this.modelHelper));expectations.push.apply(expectations,this.findIdleExpectations(expectations));this.collectUnassociatedEvents_(expectations);return expectations;}\ncollectUnassociatedEvents_(expectations){const vacuumUEs=[];for(const expectation of expectations){if(expectation instanceof tr.model.um.IdleExpectation||expectation instanceof tr.model.um.LoadExpectation||expectation instanceof tr.model.um.StartupExpectation){vacuumUEs.push(expectation);}}\nif(vacuumUEs.length===0)return;const allAssociatedEvents=tr.model.getAssociatedEvents(expectations);const unassociatedEvents=tr.model.getUnassociatedEvents(this.model,allAssociatedEvents);for(const event of unassociatedEvents){if(!(event instanceof tr.model.ThreadSlice))continue;if(!event.isTopLevel)continue;for(let index=0;index<vacuumUEs.length;++index){const expectation=vacuumUEs[index];if((event.start>=expectation.start)&&(event.start<expectation.end)){expectation.associatedEvents.addEventSet(event.entireHierarchy);break;}}}}\nfindIdleExpectations(otherUEs){if(this.model.bounds.isEmpty)return;const emptyRanges=tr.b.math.findEmptyRangesBetweenRanges(tr.b.math.convertEventsToRanges(otherUEs),this.model.bounds);const expectations=[];const model=this.model;for(const range of emptyRanges){if(range.max<(range.min+INSIGNIFICANT_MS))continue;expectations.push(new tr.model.um.IdleExpectation(model,range.min,range.max-range.min));}\nreturn expectations;}}\nfunction createCustomizeModelLinesFromModel(model){const modelLines=[];modelLines.push('      audits.addEvent(model.browserMain,');modelLines.push('          {title: \\'model start\\', start: 0, end: 1});');const typeNames={};for(const typeName in tr.e.cc.INPUT_EVENT_TYPE_NAMES){typeNames[tr.e.cc.INPUT_EVENT_TYPE_NAMES[typeName]]=typeName;}\nlet modelEvents=new tr.model.EventSet();for(const ue of model.userModel.expectations){modelEvents.addEventSet(ue.sourceEvents);}\nmodelEvents=modelEvents.toArray();modelEvents.sort(tr.importer.compareEvents);for(const event of modelEvents){const startAndEnd='start: '+parseInt(event.start)+', '+'end: '+parseInt(event.end)+'});';if(event instanceof tr.e.cc.InputLatencyAsyncSlice){modelLines.push('      audits.addInputEvent(model, INPUT_TYPE.'+\ntypeNames[event.typeName]+',');}else if(event.title==='RenderFrameImpl::didCommitProvisionalLoad'){modelLines.push('      audits.addCommitLoadEvent(model,');}else if(event.title==='InputHandlerProxy::HandleGestureFling::started'){modelLines.push('      audits.addFlingAnimationEvent(model,');}else if(event.title===tr.model.helpers.IMPL_RENDERING_STATS){modelLines.push('      audits.addFrameEvent(model,');}else if(event.title===tr.importer.CSS_ANIMATION_TITLE){modelLines.push('      audits.addEvent(model.rendererMain, {');modelLines.push('        title: \\'Animation\\', '+startAndEnd);return;}else{throw new Error('You must extend createCustomizeModelLinesFromModel()'+'to support this event:\\n'+event.title+'\\n');}\nmodelLines.push('          {'+startAndEnd);}\nmodelLines.push('      audits.addEvent(model.browserMain,');modelLines.push('          {'+'title: \\'model end\\', '+'start: '+(parseInt(model.bounds.max)-1)+', '+'end: '+parseInt(model.bounds.max)+'});');return modelLines;}\nfunction createExpectedUELinesFromModel(model){const expectedLines=[];const ueCount=model.userModel.expectations.length;for(let index=0;index<ueCount;++index){const expectation=model.userModel.expectations[index];let ueString='      {';ueString+='title: \\''+expectation.title+'\\', ';ueString+='start: '+parseInt(expectation.start)+', ';ueString+='end: '+parseInt(expectation.end)+', ';ueString+='eventCount: '+expectation.sourceEvents.length;ueString+='}';if(index<(ueCount-1))ueString+=',';expectedLines.push(ueString);}\nreturn expectedLines;}\nfunction createUEFinderTestCaseStringFromModel(model){const filename=window.location.hash.substr(1);let testName=filename.substr(filename.lastIndexOf('/')+1);testName=testName.substr(0,testName.indexOf('.'));try{const testLines=[];testLines.push('  /*');testLines.push('    This test was generated from');testLines.push('    '+filename+'');testLines.push('   */');testLines.push('  test(\\''+testName+'\\', function() {');testLines.push('    const verifier = new UserExpectationVerifier();');testLines.push('    verifier.customizeModelCallback = function(model) {');testLines.push.apply(testLines,createCustomizeModelLinesFromModel(model));testLines.push('    };');testLines.push('    verifier.expectedUEs = [');testLines.push.apply(testLines,createExpectedUELinesFromModel(model));testLines.push('    ];');testLines.push('    verifier.verify();');testLines.push('  });');return testLines.join('\\n');}catch(error){return error;}}\nreturn{UserModelBuilder,createUEFinderTestCaseStringFromModel,};});'use strict';tr.exportTo('tr.ui.b',function(){function decorate(source,constr){let elements;if(typeof source==='string'){elements=Polymer.dom(tr.doc).querySelectorAll(source);}else{elements=[source];}\nfor(let i=0,el;el=elements[i];i++){if(!(el instanceof constr)){constr.decorate(el);}}}\nfunction define(className,opt_parentConstructor,opt_tagNS){if(typeof className==='function'){throw new Error('Passing functions as className is deprecated. Please '+'use (className, opt_parentConstructor) to subclass');}\nclassName=className.toLowerCase();if(opt_parentConstructor&&!opt_parentConstructor.tagName){throw new Error('opt_parentConstructor was not '+'created by tr.ui.b.define');}\nlet tagName=className;let tagNS=undefined;if(opt_parentConstructor){if(opt_tagNS){throw new Error('Must not specify tagNS if parentConstructor is given');}\nlet parent=opt_parentConstructor;while(parent&&parent.tagName){tagName=parent.tagName;tagNS=parent.tagNS;parent=parent.parentConstructor;}}else{tagNS=opt_tagNS;}\nfunction f(){if(opt_parentConstructor&&f.prototype.__proto__!==opt_parentConstructor.prototype){throw new Error(className+' prototye\\'s __proto__ field is messed up. '+'It MUST be the prototype of '+opt_parentConstructor.tagName);}\nlet el;if(tagNS===undefined){el=tr.doc.createElement(tagName);}else{el=tr.doc.createElementNS(tagNS,tagName);}\nf.decorate.call(this,el,arguments);return el;}\nf.decorate=function(el){el.__proto__=f.prototype;el.decorate.apply(el,arguments[1]);el.constructor=f;};f.className=className;f.tagName=tagName;f.tagNS=tagNS;f.parentConstructor=(opt_parentConstructor?opt_parentConstructor:undefined);f.toString=function(){if(!f.parentConstructor){return f.tagName;}\nreturn f.parentConstructor.toString()+'::'+f.className;};return f;}\nfunction elementIsChildOf(el,potentialParent){if(el===potentialParent)return false;let cur=el;while(Polymer.dom(cur).parentNode){if(cur===potentialParent)return true;cur=Polymer.dom(cur).parentNode;}\nreturn false;}\nreturn{decorate,define,elementIsChildOf,};});'use strict';tr.exportTo('tr.b.math',function(){function Rect(){this.x=0;this.y=0;this.width=0;this.height=0;}\nRect.fromXYWH=function(x,y,w,h){const rect=new Rect();rect.x=x;rect.y=y;rect.width=w;rect.height=h;return rect;};Rect.fromArray=function(ary){if(ary.length!==4){throw new Error('ary.length must be 4');}\nconst rect=new Rect();rect.x=ary[0];rect.y=ary[1];rect.width=ary[2];rect.height=ary[3];return rect;};Rect.prototype={__proto__:Object.prototype,get left(){return this.x;},get top(){return this.y;},get right(){return this.x+this.width;},get bottom(){return this.y+this.height;},toString(){return'Rect('+this.x+', '+this.y+', '+\nthis.width+', '+this.height+')';},toArray(){return[this.x,this.y,this.width,this.height];},clone(){const rect=new Rect();rect.x=this.x;rect.y=this.y;rect.width=this.width;rect.height=this.height;return rect;},enlarge(pad){const rect=new Rect();this.enlargeFast(rect,pad);return rect;},enlargeFast(out,pad){out.x=this.x-pad;out.y=this.y-pad;out.width=this.width+2*pad;out.height=this.height+2*pad;return out;},size(){return{width:this.width,height:this.height};},scale(s){const rect=new Rect();this.scaleFast(rect,s);return rect;},scaleSize(s){return Rect.fromXYWH(this.x,this.y,this.width*s,this.height*s);},scaleFast(out,s){out.x=this.x*s;out.y=this.y*s;out.width=this.width*s;out.height=this.height*s;return out;},translate(v){const rect=new Rect();this.translateFast(rect,v);return rect;},translateFast(out,v){out.x=this.x+v[0];out.y=this.x+v[1];out.width=this.width;out.height=this.height;return out;},asUVRectInside(containingRect){const rect=new Rect();rect.x=(this.x-containingRect.x)/containingRect.width;rect.y=(this.y-containingRect.y)/containingRect.height;rect.width=this.width/containingRect.width;rect.height=this.height/containingRect.height;return rect;},intersects(that){let ok=true;ok&=this.x<that.right;ok&=this.right>that.x;ok&=this.y<that.bottom;ok&=this.bottom>that.y;return ok;},equalTo(rect){return rect&&(this.x===rect.x)&&(this.y===rect.y)&&(this.width===rect.width)&&(this.height===rect.height);}};return{Rect,};});'use strict';tr.exportTo('tr.ui.b',function(){function instantiateTemplate(selector,doc){doc=doc||document;const el=Polymer.dom(doc).querySelector(selector);if(!el){throw new Error('Element not found: '+selector);}\nreturn doc.importNode(el.content,true);}\nfunction windowRectForElement(element){const position=[element.offsetLeft,element.offsetTop];const size=[element.offsetWidth,element.offsetHeight];let node=element.offsetParent;while(node){position[0]+=node.offsetLeft;position[1]+=node.offsetTop;node=node.offsetParent;}\nreturn tr.b.math.Rect.fromXYWH(position[0],position[1],size[0],size[1]);}\nfunction scrollIntoViewIfNeeded(el){const pr=el.parentElement.getBoundingClientRect();const cr=el.getBoundingClientRect();if(cr.top<pr.top){el.scrollIntoView(true);}else if(cr.bottom>pr.bottom){el.scrollIntoView(false);}}\nfunction extractUrlString(url){let extracted=url.replace(/url\\((.*)\\)/,'$1');extracted=extracted.replace(/\\\"(.*)\\\"/,'$1');return extracted;}\nfunction toThreeDigitLocaleString(value){return value.toLocaleString(undefined,{minimumFractionDigits:3,maximumFractionDigits:3});}\nfunction isUnknownElementName(name){return document.createElement(name)instanceof HTMLUnknownElement;}\nreturn{isUnknownElementName,toThreeDigitLocaleString,instantiateTemplate,windowRectForElement,scrollIntoViewIfNeeded,extractUrlString,};});'use strict';tr.exportTo('tr.ui.b',function(){if(tr.isHeadless)return{};const THIS_DOC=document._currentScript.ownerDocument;const Overlay=tr.ui.b.define('overlay');Overlay.prototype={__proto__:HTMLDivElement.prototype,decorate(){Polymer.dom(this).classList.add('overlay');this.parentEl_=this.ownerDocument.body;this.visible_=false;this.userCanClose_=true;this.onKeyDown_=this.onKeyDown_.bind(this);this.onClick_=this.onClick_.bind(this);this.onFocusIn_=this.onFocusIn_.bind(this);this.onDocumentClick_=this.onDocumentClick_.bind(this);this.onClose_=this.onClose_.bind(this);this.addEventListener('visible-change',tr.ui.b.Overlay.prototype.onVisibleChange_.bind(this),true);const createShadowRoot=this.createShadowRoot||this.webkitCreateShadowRoot;this.shadow_=createShadowRoot.call(this);Polymer.dom(this.shadow_).appendChild(tr.ui.b.instantiateTemplate('#overlay-template',THIS_DOC));this.closeBtn_=Polymer.dom(this.shadow_).querySelector('close-button');this.closeBtn_.addEventListener('click',this.onClose_);Polymer.dom(this.shadow_).querySelector('overlay-frame').addEventListener('click',this.onClick_);this.observer_=new MutationObserver(this.didButtonBarMutate_.bind(this));this.observer_.observe(Polymer.dom(this.shadow_).querySelector('button-bar'),{childList:true});Object.defineProperty(this,'title',{get(){return Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent;},set(title){Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent=title;}});},set userCanClose(userCanClose){this.userCanClose_=userCanClose;this.closeBtn_.style.display=userCanClose?'block':'none';},get buttons(){return Polymer.dom(this.shadow_).querySelector('button-bar');},get visible(){return this.visible_;},set visible(newValue){if(this.visible_===newValue)return;this.visible_=newValue;const e=new tr.b.Event('visible-change');this.dispatchEvent(e);},onVisibleChange_(){this.visible_?this.show_():this.hide_();},show_(){Polymer.dom(this.parentEl_).appendChild(this);if(this.userCanClose_){this.addEventListener('keydown',this.onKeyDown_.bind(this));this.addEventListener('click',this.onDocumentClick_.bind(this));this.closeBtn_.addEventListener('click',this.onClose_);}\nthis.parentEl_.addEventListener('focusin',this.onFocusIn_);this.tabIndex=0;const elList=Polymer.dom(this).querySelectorAll('button, input, list, select, a');if(elList.length>0){if(elList[0]===this.closeBtn_){if(elList.length>1)return elList[1].focus();}else{return elList[0].focus();}}\nthis.focus();},hide_(){Polymer.dom(this.parentEl_).removeChild(this);this.parentEl_.removeEventListener('focusin',this.onFocusIn_);if(this.closeBtn_){this.closeBtn_.removeEventListener('click',this.onClose_);}\ndocument.removeEventListener('keydown',this.onKeyDown_);document.removeEventListener('click',this.onDocumentClick_);},onClose_(e){this.visible=false;if((e.type!=='keydown')||(e.type==='keydown'&&e.keyCode===27)){e.stopPropagation();}\ne.preventDefault();tr.b.dispatchSimpleEvent(this,'closeclick');},onFocusIn_(e){let node=e.target;while(node){if(node===this){return;}\nnode=node.parentNode;}\ntr.b.timeout(0).then(()=>this.focus());e.preventDefault();e.stopPropagation();},didButtonBarMutate_(e){const hasButtons=this.buttons.children.length>0;if(hasButtons){Polymer.dom(this.shadow_).querySelector('button-bar').style.display=undefined;}else{Polymer.dom(this.shadow_).querySelector('button-bar').style.display='none';}},onKeyDown_(e){if(e.keyCode===9&&e.shiftKey&&e.target===this){e.preventDefault();return;}\nif(e.keyCode!==27)return;this.onClose_(e);},onClick_(e){e.stopPropagation();},onDocumentClick_(e){if(!this.userCanClose_)return;this.onClose_(e);}};Overlay.showError=function(msg,opt_err){const o=new Overlay();o.title='Error';Polymer.dom(o).textContent=msg;if(opt_err){const e=tr.b.normalizeException(opt_err);const stackDiv=document.createElement('pre');Polymer.dom(stackDiv).textContent=e.stack;stackDiv.style.paddingLeft='8px';stackDiv.style.margin=0;Polymer.dom(o).appendChild(stackDiv);}\nconst b=document.createElement('button');Polymer.dom(b).textContent='OK';b.addEventListener('click',function(){o.visible=false;});Polymer.dom(o.buttons).appendChild(b);o.visible=true;return o;};return{Overlay,};});'use strict';tr.exportTo('tr.importer',function(){const Timing=tr.b.Timing;function ImportOptions(){this.shiftWorldToZero=true;this.pruneEmptyContainers=true;this.showImportWarnings=true;this.trackDetailedModelStats=false;this.customizeModelCallback=undefined;const auditorTypes=tr.c.Auditor.getAllRegisteredTypeInfos();this.auditorConstructors=auditorTypes.map(function(typeInfo){return typeInfo.constructor;});}\nfunction Import(model,opt_options){if(model===undefined){throw new Error('Must provide model to import into.');}\nthis.importing_=false;this.importOptions_=opt_options||new ImportOptions();this.model_=model;this.model_.importOptions=this.importOptions_;}\nImport.prototype={__proto__:Object.prototype,importTraces(traces){const progressMeter={update(msg){}};tr.b.Task.RunSynchronously(this.createImportTracesTask(progressMeter,traces));},importTracesWithProgressDialog(traces){if(tr.isHeadless){throw new Error('Cannot use this method in headless mode.');}\nconst overlay=tr.ui.b.Overlay();overlay.title='Importing...';overlay.userCanClose=false;overlay.msgEl=document.createElement('div');Polymer.dom(overlay).appendChild(overlay.msgEl);overlay.msgEl.style.margin='20px';overlay.update=function(msg){Polymer.dom(this.msgEl).textContent=msg;};overlay.visible=true;const promise=tr.b.Task.RunWhenIdle(this.createImportTracesTask(overlay,traces));promise.then(function(){overlay.visible=false;},function(err){overlay.visible=false;});return promise;},createImportTracesTask(progressMeter,traces){const importStartTimeMs=tr.b.Timing.getCurrentTimeMs();if(this.importing_){throw new Error('Already importing.');}\nthis.importing_=true;const importTask=new tr.b.Task(function prepareImport(){progressMeter.update('I will now import your traces for you...');},this);let lastTask=importTask;const importers=[];function addImportStage(title,callback){lastTask=lastTask.after(()=>progressMeter.update(title));lastTask.updatesUi=true;lastTask=lastTask.after(callback);}\nfunction addStageForEachImporter(title,callback){lastTask=lastTask.after((task)=>{importers.forEach((importer,index)=>{const uiSubTask=task.subTask(()=>{progressMeter.update(`${title} ${index + 1} of ${importers.length}`);});uiSubTask.updatesUi=true;task.subTask(()=>callback(importer));});});}\naddImportStage('Creating importers...',()=>{traces=traces.slice(0);progressMeter.update('Creating importers...');for(let i=0;i<traces.length;++i){importers.push(this.createImporter_(traces[i]));}\nfor(let i=0;i<importers.length;i++){const subtraces=importers[i].extractSubtraces();for(let j=0;j<subtraces.length;j++){try{traces.push(subtraces[j]);importers.push(this.createImporter_(subtraces[j]));}catch(error){this.model_.importWarning({type:error.name,message:error.message,showToUser:true,});continue;}}}\nif(traces.length&&!this.hasEventDataDecoder_(importers)){throw new Error('Could not find an importer for the provided eventData.');}\nimporters.sort(function(x,y){return x.importPriority-y.importPriority;});});addStageForEachImporter('Importing clock sync markers',importer=>importer.importClockSyncMarkers());addStageForEachImporter('Importing',importer=>importer.importEvents());if(this.importOptions_.customizeModelCallback){addImportStage('Customizing',()=>{this.importOptions_.customizeModelCallback(this.model_);});}\naddStageForEachImporter('Importing sample data',importer=>importer.importSampleData());addImportStage('Autoclosing open slices...',()=>{this.model_.autoCloseOpenSlices();this.model_.createSubSlices();});addStageForEachImporter('Finalizing import',importer=>importer.finalizeImport());addImportStage('Initializing objects (step 1/2)...',()=>this.model_.preInitializeObjects());if(this.importOptions_.pruneEmptyContainers){addImportStage('Pruning empty containers...',()=>this.model_.pruneEmptyContainers());}\naddImportStage('Merging kernel with userland...',()=>this.model_.mergeKernelWithUserland());let auditors=[];addImportStage('Adding arbitrary data to model...',()=>{auditors=this.importOptions_.auditorConstructors.map(auditorConstructor=>new auditorConstructor(this.model_));auditors.forEach((auditor)=>{auditor.runAnnotate();auditor.installUserFriendlyCategoryDriverIfNeeded();});});addImportStage('Computing final world bounds...',()=>{this.model_.computeWorldBounds(this.importOptions_.shiftWorldToZero);});addImportStage('Building flow event map...',()=>this.model_.buildFlowEventIntervalTree());addImportStage('Joining object refs...',()=>this.model_.joinRefs());addImportStage('Cleaning up undeleted objects...',()=>this.model_.cleanupUndeletedObjects());addImportStage('Sorting memory dumps...',()=>this.model_.sortMemoryDumps());addImportStage('Finalizing memory dump graphs...',()=>this.model_.finalizeMemoryGraphs());addImportStage('Initializing objects (step 2/2)...',()=>this.model_.initializeObjects());addImportStage('Building event indices...',()=>this.model_.buildEventIndices());addImportStage('Building UserModel...',()=>{const userModelBuilder=new tr.importer.UserModelBuilder(this.model_);userModelBuilder.buildUserModel();});addImportStage('Sorting user expectations...',()=>this.model_.userModel.sortExpectations());addImportStage('Running auditors...',()=>{auditors.forEach(auditor=>auditor.runAudit());});addImportStage('Updating alerts...',()=>this.model_.sortAlerts());addImportStage('Update bounds...',()=>this.model_.updateBounds());addImportStage('Looking for warnings...',()=>{if(!this.model_.isTimeHighResolution){this.model_.importWarning({type:'low_resolution_timer',message:'Trace time is low resolution, trace may be unusable.',showToUser:true});}});lastTask.after(()=>{this.importing_=false;this.model_.stats.traceImportDurationMs=tr.b.Timing.getCurrentTimeMs()-importStartTimeMs;});return importTask;},createImporter_(eventData){const importerConstructor=tr.importer.Importer.findImporterFor(eventData);if(!importerConstructor){throw new Error('Couldn\\'t create an importer for the provided '+'eventData.');}\nreturn new importerConstructor(this.model_,eventData);},hasEventDataDecoder_(importers){for(let i=0;i<importers.length;++i){if(!importers[i].isTraceDataContainer())return true;}\nreturn false;}};return{ImportOptions,Import,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8GCStatsThreadSlice(){ThreadSlice.apply(this,arguments);this.liveObjects_=JSON.parse(this.args.live);delete this.args.live;this.deadObjects_=JSON.parse(this.args.dead);delete this.args.dead;}\nV8GCStatsThreadSlice.prototype={__proto__:ThreadSlice.prototype,get liveObjects(){return this.liveObjects_;},get deadObjects(){return this.deadObjects_;}};ThreadSlice.subTypes.register(V8GCStatsThreadSlice,{categoryParts:['disabled-by-default-v8.gc_stats'],name:'v8 gc stats slice',pluralName:'v8 gc stats slices'});return{V8GCStatsThreadSlice,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8ICStatsThreadSlice(){ThreadSlice.apply(this,arguments);this.icStats_=undefined;if(this.args['ic-stats']){this.icStats_=this.args['ic-stats'].data;delete this.args['ic-stats'];}}\nV8ICStatsThreadSlice.prototype={__proto__:ThreadSlice.prototype,get icStats(){return this.icStats_;}};ThreadSlice.subTypes.register(V8ICStatsThreadSlice,{categoryParts:['disabled-by-default-v8.ic_stats'],name:'v8 ic stats slice',pluralName:'v8 ic stats slices'});return{V8ICStatsThreadSlice,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8ThreadSlice(){ThreadSlice.apply(this,arguments);this.runtimeCallStats_=undefined;}\nV8ThreadSlice.prototype={__proto__:ThreadSlice.prototype,get runtimeCallStats(){if('runtime-call-stats'in this.args){this.runtimeCallStats_=this.args['runtime-call-stats'];delete this.args['runtime-call-stats'];}\nreturn this.runtimeCallStats_;}};ThreadSlice.subTypes.register(V8ThreadSlice,{categoryParts:['v8','disabled-by-default-v8.runtime_stats'],name:'v8 slice',pluralName:'v8 slices'});return{V8ThreadSlice,};});'use strict';tr.exportTo('tr.e.cc',function(){function PictureAsImageData(picture,errorOrImageData){this.picture_=picture;if(errorOrImageData instanceof ImageData){this.error_=undefined;this.imageData_=errorOrImageData;}else{this.error_=errorOrImageData;this.imageData_=undefined;}}\nPictureAsImageData.Pending=function(picture){return new PictureAsImageData(picture,undefined);};PictureAsImageData.prototype={get picture(){return this.picture_;},get error(){return this.error_;},get imageData(){return this.imageData_;},isPending(){return this.error_===undefined&&this.imageData_===undefined;},asCanvas(){if(!this.imageData_)return;const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=this.imageData_.width;canvas.height=this.imageData_.height;ctx.putImageData(this.imageData_,0,0);return canvas;}};return{PictureAsImageData,};});'use strict';tr.exportTo('tr.e.cc',function(){const convertedNameCache={};function convertNameToJSConvention(name){if(name in convertedNameCache){return convertedNameCache[name];}\nif(name[0]==='_'||name[name.length-1]==='_'){convertedNameCache[name]=name;return name;}\nconst words=name.split('_');if(words.length===1){convertedNameCache[name]=words[0];return words[0];}\nfor(let i=1;i<words.length;i++){words[i]=words[i][0].toUpperCase()+words[i].substring(1);}\nconvertedNameCache[name]=words.join('');return convertedNameCache[name];}\nfunction moveRequiredFieldsFromArgsToToplevel(object,fields){for(let i=0;i<fields.length;i++){const key=fields[i];if(object.args[key]===undefined){throw Error('Expected field '+key+' not found in args');}\nif(object[key]!==undefined){throw Error('Field '+key+' already in object');}\nobject[key]=object.args[key];delete object.args[key];}}\nfunction moveOptionalFieldsFromArgsToToplevel(object,fields){for(let i=0;i<fields.length;i++){const key=fields[i];if(object.args[key]===undefined)continue;if(object[key]!==undefined){throw Error('Field '+key+' already in object');}\nobject[key]=object.args[key];delete object.args[key];}}\nfunction preInitializeObject(object){preInitializeObjectInner(object.args,false);}\nfunction preInitializeObjectInner(object,hasRecursed){if(!(object instanceof Object))return;if(object instanceof Array){for(let i=0;i<object.length;i++){preInitializeObjectInner(object[i],true);}\nreturn;}\nif(hasRecursed&&(object instanceof tr.model.ObjectSnapshot||object instanceof tr.model.ObjectInstance)){return;}\nfor(let key in object){const newKey=convertNameToJSConvention(key);if(newKey!==key){const value=object[key];delete object[key];object[newKey]=value;key=newKey;}\nif(/Quad$/.test(key)&&!(object[key]instanceof tr.b.math.Quad)){let q;try{q=tr.b.math.Quad.from8Array(object[key]);}catch(e){}\nobject[key]=q;continue;}\nif(/Rect$/.test(key)&&!(object[key]instanceof tr.b.math.Rect)){let r;try{r=tr.b.math.Rect.fromArray(object[key]);}catch(e){}\nobject[key]=r;}\npreInitializeObjectInner(object[key],true);}}\nreturn{preInitializeObject,convertNameToJSConvention,moveRequiredFieldsFromArgsToToplevel,moveOptionalFieldsFromArgsToToplevel,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const PictureCount=0;const OPS_TIMING_ITERATIONS=3;function Picture(skp64,layerRect){this.skp64_=skp64;this.layerRect_=layerRect;this.guid_=tr.b.GUID.allocateSimple();}\nPicture.prototype={get canSave(){return true;},get layerRect(){return this.layerRect_;},get guid(){return this.guid_;},getBase64SkpData(){return this.skp64_;},getOps(){if(!PictureSnapshot.CanGetOps()){console.error(PictureSnapshot.HowToEnablePictureDebugging());return undefined;}\nconst ops=window.chrome.skiaBenchmarking.getOps({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}});if(!ops){console.error('Failed to get picture ops.');}\nreturn ops;},getOpTimings(){if(!PictureSnapshot.CanGetOpTimings()){console.error(PictureSnapshot.HowToEnablePictureDebugging());return undefined;}\nconst opTimings=window.chrome.skiaBenchmarking.getOpTimings({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}});if(!opTimings){console.error('Failed to get picture op timings.');}\nreturn opTimings;},tagOpsWithTimings(ops){const opTimings=[];for(let iteration=0;iteration<OPS_TIMING_ITERATIONS;iteration++){opTimings[iteration]=this.getOpTimings();if(!opTimings[iteration]||!opTimings[iteration].cmd_times){return ops;}\nif(opTimings[iteration].cmd_times.length!==ops.length){return ops;}}\nfor(let opIndex=0;opIndex<ops.length;opIndex++){let min=Number.MAX_VALUE;for(let i=0;i<OPS_TIMING_ITERATIONS;i++){min=Math.min(min,opTimings[i].cmd_times[opIndex]);}\nops[opIndex].cmd_time=min;}\nreturn ops;},rasterize(params,rasterCompleteCallback){if(!PictureSnapshot.CanRasterize()||!PictureSnapshot.CanGetOps()){rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,tr.e.cc.PictureSnapshot.HowToEnablePictureDebugging()));return;}\nif(!this.layerRect_.width||!this.layerRect_.height){rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,null));return;}\nconst raster=window.chrome.skiaBenchmarking.rasterize({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}},{stop:params.stopIndex===undefined?-1:params.stopIndex,overdraw:!!params.showOverdraw,params:{}});if(raster){const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=raster.width;canvas.height=raster.height;const imageData=ctx.createImageData(raster.width,raster.height);imageData.data.set(new Uint8ClampedArray(raster.data));rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,imageData));}else{const error='Failed to rasterize picture. '+'Your recording may be from an old Chrome version. '+'The SkPicture format is not backward compatible.';rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,error));}}};function LayeredPicture(pictures){this.guid_=tr.b.GUID.allocateSimple();this.pictures_=pictures;this.layerRect_=undefined;}\nLayeredPicture.prototype={__proto__:Picture.prototype,get canSave(){return false;},get typeName(){return'cc::LayeredPicture';},get layerRect(){if(this.layerRect_!==undefined){return this.layerRect_;}\nthis.layerRect_={x:0,y:0,width:0,height:0};for(let i=0;i<this.pictures_.length;++i){const rect=this.pictures_[i].layerRect;this.layerRect_.x=Math.min(this.layerRect_.x,rect.x);this.layerRect_.y=Math.min(this.layerRect_.y,rect.y);this.layerRect_.width=Math.max(this.layerRect_.width,rect.x+rect.width);this.layerRect_.height=Math.max(this.layerRect_.height,rect.y+rect.height);}\nreturn this.layerRect_;},get guid(){return this.guid_;},getBase64SkpData(){throw new Error('Not available with a LayeredPicture.');},getOps(){let ops=[];for(let i=0;i<this.pictures_.length;++i){ops=ops.concat(this.pictures_[i].getOps());}\nreturn ops;},getOpTimings(){const opTimings=this.pictures_[0].getOpTimings();for(let i=1;i<this.pictures_.length;++i){const timings=this.pictures_[i].getOpTimings();opTimings.cmd_times=opTimings.cmd_times.concat(timings.cmd_times);opTimings.total_time+=timings.total_time;}\nreturn opTimings;},tagOpsWithTimings(ops){const opTimings=[];for(let iteration=0;iteration<OPS_TIMING_ITERATIONS;iteration++){opTimings[iteration]=this.getOpTimings();if(!opTimings[iteration]||!opTimings[iteration].cmd_times){return ops;}}\nfor(let opIndex=0;opIndex<ops.length;opIndex++){let min=Number.MAX_VALUE;for(let i=0;i<OPS_TIMING_ITERATIONS;i++){min=Math.min(min,opTimings[i].cmd_times[opIndex]);}\nops[opIndex].cmd_time=min;}\nreturn ops;},rasterize(params,rasterCompleteCallback){this.picturesAsImageData_=[];const rasterCallback=function(pictureAsImageData){this.picturesAsImageData_.push(pictureAsImageData);if(this.picturesAsImageData_.length!==this.pictures_.length){return;}\nconst canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=this.layerRect.width;canvas.height=this.layerRect.height;for(let i=0;i<this.picturesAsImageData_.length;++i){ctx.putImageData(this.picturesAsImageData_[i].imageData,this.pictures_[i].layerRect.x,this.pictures_[i].layerRect.y);}\nthis.picturesAsImageData_=[];rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,ctx.getImageData(this.layerRect.x,this.layerRect.y,this.layerRect.width,this.layerRect.height)));}.bind(this);for(let i=0;i<this.pictures_.length;++i){this.pictures_[i].rasterize(params,rasterCallback);}}};function PictureSnapshot(){ObjectSnapshot.apply(this,arguments);}\nPictureSnapshot.HasSkiaBenchmarking=function(){return tr.isExported('chrome.skiaBenchmarking');};PictureSnapshot.CanRasterize=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.rasterize){return false;}\nreturn true;};PictureSnapshot.CanGetOps=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getOps){return false;}\nreturn true;};PictureSnapshot.CanGetOpTimings=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getOpTimings){return false;}\nreturn true;};PictureSnapshot.CanGetInfo=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getInfo){return false;}\nreturn true;};PictureSnapshot.HowToEnablePictureDebugging=function(){if(tr.isHeadless){return'Pictures only work in chrome';}\nconst usualReason=['For pictures to show up, the Chrome browser displaying the trace ','needs to be running with --enable-skia-benchmarking. Please restart ','chrome with this flag and try loading the trace again.'].join('');if(!PictureSnapshot.HasSkiaBenchmarking()){return usualReason;}\nif(!PictureSnapshot.CanRasterize()){return'Your chrome is old: chrome.skipBenchmarking.rasterize not found';}\nif(!PictureSnapshot.CanGetOps()){return'Your chrome is old: chrome.skiaBenchmarking.getOps not found';}\nif(!PictureSnapshot.CanGetOpTimings()){return'Your chrome is old: '+'chrome.skiaBenchmarking.getOpTimings not found';}\nif(!PictureSnapshot.CanGetInfo()){return'Your chrome is old: chrome.skiaBenchmarking.getInfo not found';}\nreturn undefined;};PictureSnapshot.CanDebugPicture=function(){return PictureSnapshot.HowToEnablePictureDebugging()===undefined;};PictureSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.rasterResult_=undefined;},initialize(){if(this.args.alias){this.args=this.args.alias.args;}\nif(!this.args.params.layerRect){throw new Error('Missing layer rect');}\nthis.layerRect_=this.args.params.layerRect;this.picture_=new Picture(this.args.skp64,this.args.params.layerRect);},set picture(picture){this.picture_=picture;},get canSave(){return this.picture_.canSave;},get layerRect(){return this.layerRect_?this.layerRect_:this.picture_.layerRect;},get guid(){return this.picture_.guid;},getBase64SkpData(){return this.picture_.getBase64SkpData();},getOps(){return this.picture_.getOps();},getOpTimings(){return this.picture_.getOpTimings();},tagOpsWithTimings(ops){return this.picture_.tagOpsWithTimings(ops);},rasterize(params,rasterCompleteCallback){this.picture_.rasterize(params,rasterCompleteCallback);}};ObjectSnapshot.subTypes.register(PictureSnapshot,{typeNames:['cc::Picture']});return{PictureSnapshot,Picture,LayeredPicture,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function DisplayItemList(skp64,layerRect){tr.e.cc.Picture.apply(this,arguments);}\nDisplayItemList.prototype={__proto__:tr.e.cc.Picture.prototype};function DisplayItemListSnapshot(){tr.e.cc.PictureSnapshot.apply(this,arguments);}\nDisplayItemListSnapshot.prototype={__proto__:tr.e.cc.PictureSnapshot.prototype,initialize(){tr.e.cc.PictureSnapshot.prototype.initialize.call(this);this.displayItems_=this.args.params.items;},get items(){return this.displayItems_;}};ObjectSnapshot.subTypes.register(DisplayItemListSnapshot,{typeNames:['cc::DisplayItemList']});return{DisplayItemListSnapshot,DisplayItemList,};});'use strict';tr.exportTo('tr.b.math',function(){function BBox2(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;}\nBBox2.prototype={__proto__:Object.prototype,reset(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;},get isEmpty(){return this.isEmpty_;},addBBox2(bbox2){if(bbox2.isEmpty)return;this.addVec2(bbox2.min_);this.addVec2(bbox2.max_);},clone(){const bbox=new BBox2();bbox.addBBox2(this);return bbox;},addXY(x,y){if(this.isEmpty_){this.max_=vec2.create();this.min_=vec2.create();vec2.set(this.max_,x,y);vec2.set(this.min_,x,y);this.isEmpty_=false;return;}\nthis.max_[0]=Math.max(this.max_[0],x);this.max_[1]=Math.max(this.max_[1],y);this.min_[0]=Math.min(this.min_[0],x);this.min_[1]=Math.min(this.min_[1],y);},addVec2(value){if(this.isEmpty_){this.max_=vec2.create();this.min_=vec2.create();vec2.set(this.max_,value[0],value[1]);vec2.set(this.min_,value[0],value[1]);this.isEmpty_=false;return;}\nthis.max_[0]=Math.max(this.max_[0],value[0]);this.max_[1]=Math.max(this.max_[1],value[1]);this.min_[0]=Math.min(this.min_[0],value[0]);this.min_[1]=Math.min(this.min_[1],value[1]);},addQuad(quad){this.addVec2(quad.p1);this.addVec2(quad.p2);this.addVec2(quad.p3);this.addVec2(quad.p4);},get minVec2(){if(this.isEmpty_)return undefined;return this.min_;},get maxVec2(){if(this.isEmpty_)return undefined;return this.max_;},get sizeAsVec2(){if(this.isEmpty_){throw new Error('Empty BBox2 has no size');}\nconst size=vec2.create();vec2.subtract(size,this.max_,this.min_);return size;},get size(){if(this.isEmpty_){throw new Error('Empty BBox2 has no size');}\nreturn{width:this.max_[0]-this.min_[0],height:this.max_[1]-this.min_[1]};},get width(){if(this.isEmpty_){throw new Error('Empty BBox2 has no width');}\nreturn this.max_[0]-this.min_[0];},get height(){if(this.isEmpty_){throw new Error('Empty BBox2 has no width');}\nreturn this.max_[1]-this.min_[1];},toString(){if(this.isEmpty_)return'empty';return'min=('+this.min_[0]+','+this.min_[1]+') '+'max=('+this.max_[0]+','+this.max_[1]+')';},asRect(){return tr.b.math.Rect.fromXYWH(this.min_[0],this.min_[1],this.max_[0]-this.min_[0],this.max_[1]-this.min_[1]);}};return{BBox2,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants={};constants.ACTIVE_TREE=0;constants.PENDING_TREE=1;constants.HIGH_PRIORITY_BIN=0;constants.LOW_PRIORITY_BIN=1;constants.SEND_BEGIN_FRAME_EVENT='ThreadProxy::ScheduledActionSendBeginMainFrame';constants.BEGIN_MAIN_FRAME_EVENT='ThreadProxy::BeginMainFrame';return{constants};});'use strict';tr.exportTo('tr.e.cc',function(){function Region(){this.rects=[];}\nRegion.fromArray=function(array){if(array.length%4!==0){throw new Error('Array must consist be a multiple of 4 in length');}\nconst r=new Region();for(let i=0;i<array.length;i+=4){r.rects.push(tr.b.math.Rect.fromXYWH(array[i],array[i+1],array[i+2],array[i+3]));}\nreturn r;};Region.fromArrayOrUndefined=function(array){if(array===undefined)return new Region();return Region.fromArray(array);};Region.prototype={__proto__:Region.prototype,rectIntersects(r){for(let i=0;i<this.rects.length;i++){if(this.rects[i].intersects(r))return true;}\nreturn false;},addRect(r){this.rects.push(r);}};return{Region,};});'use strict';tr.exportTo('tr.e.cc',function(){function TileCoverageRect(rect,tile){this.geometryRect=rect;this.tile=tile;}\nreturn{TileCoverageRect,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;function LayerImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.layerTreeImpl_=undefined;this.parentLayer=undefined;},initialize(){this.invalidation=new tr.e.cc.Region();this.unrecordedRegion=new tr.e.cc.Region();this.pictures=[];tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['layerId','layerQuad']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['children','maskLayer','replicaLayer','idealContentsScale','geometryContentsScale','layoutRects','usingGpuRasterization']);this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;this.bounds=tr.b.math.Rect.fromXYWH(0,0,this.args.bounds.width,this.args.bounds.height);if(this.args.animationBounds){this.animationBoundsRect=tr.b.math.Rect.fromXYWH(this.args.animationBounds[0],this.args.animationBounds[1],this.args.animationBounds[3],this.args.animationBounds[4]);}\nif(this.children){for(let i=0;i<this.children.length;i++){this.children[i].parentLayer=this;}}\nif(this.maskLayer){this.maskLayer.parentLayer=this;}\nif(this.replicaLayer){this.replicaLayer.parentLayer=this;}\nif(!this.geometryContentsScale){this.geometryContentsScale=1.0;}\nif(!this.idealContentsScale){this.idealContentsScale=1.0;}\nthis.touchEventHandlerRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.touchEventHandlerRegion);this.wheelEventHandlerRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.wheelEventHandlerRegion);this.nonFastScrollableRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.nonFastScrollableRegion);},get layerTreeImpl(){if(this.layerTreeImpl_){return this.layerTreeImpl_;}\nif(this.parentLayer){return this.parentLayer.layerTreeImpl;}\nreturn undefined;},set layerTreeImpl(layerTreeImpl){this.layerTreeImpl_=layerTreeImpl;},get activeLayer(){if(this.layerTreeImpl.whichTree===constants.ACTIVE_TREE){return this;}\nconst activeTree=this.layerTreeImpl.layerTreeHostImpl.activeTree;return activeTree.findLayerWithId(this.layerId);},get pendingLayer(){if(this.layerTreeImpl.whichTree===constants.PENDING_TREE){return this;}\nconst pendingTree=this.layerTreeImpl.layerTreeHostImpl.pendingTree;return pendingTree.findLayerWithId(this.layerId);}};function PictureLayerImplSnapshot(){LayerImplSnapshot.apply(this,arguments);}\nPictureLayerImplSnapshot.prototype={__proto__:LayerImplSnapshot.prototype,initialize(){LayerImplSnapshot.prototype.initialize.call(this);if(this.args.debugInfo){for(const i in this.args.debugInfo){this.args[i]=this.args.debugInfo[i];}\ndelete this.args.debugInfo;}\nif(this.args.annotatedInvalidationRects){this.invalidation=new tr.e.cc.Region();for(const annotatedRect of this.args.annotatedInvalidationRects){const rect=annotatedRect.geometryRect;rect.reason=annotatedRect.reason;rect.client=annotatedRect.client;this.invalidation.addRect(rect);}\ndelete this.args.annotatedInvalidationRects;}else if(this.args.invalidation){this.invalidation=tr.e.cc.Region.fromArray(this.args.invalidation);}\ndelete this.args.invalidation;if(this.args.unrecordedRegion){this.unrecordedRegion=tr.e.cc.Region.fromArray(this.args.unrecordedRegion);delete this.args.unrecordedRegion;}\nif(this.args.pictures){this.pictures=this.args.pictures;this.pictures.sort(function(a,b){return a.ts-b.ts;});}\nthis.tileCoverageRects=[];if(this.args.coverageTiles){for(let i=0;i<this.args.coverageTiles.length;++i){const rect=this.args.coverageTiles[i].geometryRect.scale(this.idealContentsScale);const tile=this.args.coverageTiles[i].tile;this.tileCoverageRects.push(new tr.e.cc.TileCoverageRect(rect,tile));}\ndelete this.args.coverageTiles;}}};ObjectSnapshot.subTypes.register(PictureLayerImplSnapshot,{typeName:'cc::PictureLayerImpl'});ObjectSnapshot.subTypes.register(LayerImplSnapshot,{typeNames:['cc::LayerImpl','cc::DelegatedRendererLayerImpl','cc::HeadsUpDisplayLayerImpl','cc::IOSurfaceLayerImpl','cc::NinePatchLayerImpl','cc::PictureImageLayerImpl','cc::ScrollbarLayerImpl','cc::SolidColorLayerImpl','cc::SolidColorScrollbarLayerImpl','cc::SurfaceLayerImpl','cc::TextureLayerImpl','cc::TiledLayerImpl','cc::VideoLayerImpl','cc::PaintedScrollbarLayerImpl','ClankPatchLayer','TabBorderLayer','CounterLayer']});return{LayerImplSnapshot,PictureLayerImplSnapshot,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;function LayerTreeImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerTreeImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.layerTreeHostImpl=undefined;this.whichTree=undefined;this.sourceFrameNumber=undefined;},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['renderSurfaceLayerList']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['rootLayer','layers']);if(this.args.sourceFrameNumber){this.sourceFrameNumber=this.args.sourceFrameNumber;}\nif(this.rootLayer){this.rootLayer.layerTreeImpl=this;}else{for(let i=0;i<this.layers.length;i++){this.layers[i].layerTreeImpl=this;}}\nif(this.args.swapPromiseTraceIds&&this.args.swapPromiseTraceIds.length){this.tracedInputLatencies=[];const ownProcess=this.objectInstance.parent;const modelHelper=ownProcess.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper){this._initializeTracedInputLatencies(modelHelper);}}},_initializeTracedInputLatencies(modelHelper){const latencyEvents=modelHelper.browserHelper.getLatencyEventsInRange(modelHelper.model.bounds);latencyEvents.forEach(function(event){for(let i=0;i<this.args.swapPromiseTraceIds.length;i++){if(!event.args.data||!event.args.data.trace_id){continue;}\nif(parseInt(event.args.data.trace_id)===this.args.swapPromiseTraceIds[i]){this.tracedInputLatencies.push(event);}}},this);},get hasSourceFrameBeenDrawnBefore(){if(this.whichTree===tr.e.cc.constants.PENDING_TREE){return false;}\nif(this.sourceFrameNumber===undefined)return;const thisLTHI=this.layerTreeHostImpl;const thisLTHIIndex=thisLTHI.objectInstance.snapshots.indexOf(thisLTHI);const prevLTHIIndex=thisLTHIIndex-1;if(prevLTHIIndex<0||prevLTHIIndex>=thisLTHI.objectInstance.snapshots.length){return false;}\nconst prevLTHI=thisLTHI.objectInstance.snapshots[prevLTHIIndex];if(!prevLTHI.activeTree)return false;if(prevLTHI.activeTree.sourceFrameNumber===undefined)return;return prevLTHI.activeTree.sourceFrameNumber===this.sourceFrameNumber;},get otherTree(){const other=this.whichTree===constants.ACTIVE_TREE?constants.PENDING_TREE:constants.ACTIVE_TREE;return this.layerTreeHostImpl.getTree(other);},get gpuMemoryUsageInBytes(){let totalBytes=0;this.iterLayers(function(layer){if(layer.gpuMemoryUsageInBytes!==undefined){totalBytes+=layer.gpuMemoryUsageInBytes;}});return totalBytes;},iterLayers(func,thisArg){const visitedLayers={};function visitLayer(layer,depth,isMask,isReplica){if(visitedLayers[layer.layerId])return;visitedLayers[layer.layerId]=true;func.call(thisArg,layer,depth,isMask,isReplica);if(layer.children){for(let i=0;i<layer.children.length;i++){visitLayer(layer.children[i],depth+1);}}\nif(layer.maskLayer){visitLayer(layer.maskLayer,depth+1,true,false);}\nif(layer.replicaLayer){visitLayer(layer.replicaLayer,depth+1,false,true);}}\nif(this.rootLayer){visitLayer(this.rootLayer,0,false,false);}else{for(let i=0;i<this.layers.length;i++){visitLayer(this.layers[i],0,false,false);}}},findLayerWithId(id){let foundLayer=undefined;function visitLayer(layer){if(layer.layerId===id){foundLayer=layer;}}\nthis.iterLayers(visitLayer);return foundLayer;}};ObjectSnapshot.subTypes.register(LayerTreeImplSnapshot,{typeName:'cc::LayerTreeImpl'});return{LayerTreeImplSnapshot,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function LayerTreeHostImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerTreeHostImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['deviceViewportSize','activeTree']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['pendingTree']);if(this.args.activeTiles!==undefined){this.activeTiles=this.args.activeTiles;delete this.args.activeTiles;}else if(this.args.tiles!==undefined){this.activeTiles=this.args.tiles;delete this.args.tiles;}\nif(!this.activeTiles){this.activeTiles=[];}\nthis.activeTree.layerTreeHostImpl=this;this.activeTree.whichTree=constants.ACTIVE_TREE;if(this.pendingTree){this.pendingTree.layerTreeHostImpl=this;this.pendingTree.whichTree=constants.PENDING_TREE;}},getContentsScaleNames(){const scales={};for(let i=0;i<this.activeTiles.length;++i){const tile=this.activeTiles[i];scales[tile.contentsScale]=tile.resolution;}\nreturn scales;},getTree(whichTree){if(whichTree===constants.ACTIVE_TREE){return this.activeTree;}\nif(whichTree===constants.PENDING_TREE){return this.pendingTree;}\nthrow new Exception('Unknown tree type + '+whichTree);},get tilesHaveGpuMemoryUsageInfo(){if(this.tilesHaveGpuMemoryUsageInfo_!==undefined){return this.tilesHaveGpuMemoryUsageInfo_;}\nfor(let i=0;i<this.activeTiles.length;i++){if(this.activeTiles[i].gpuMemoryUsageInBytes===undefined){continue;}\nthis.tilesHaveGpuMemoryUsageInfo_=true;return true;}\nthis.tilesHaveGpuMemoryUsageInfo_=false;return false;},get gpuMemoryUsageInBytes(){if(!this.tilesHaveGpuMemoryUsageInfo)return;let usage=0;for(let i=0;i<this.activeTiles.length;i++){const u=this.activeTiles[i].gpuMemoryUsageInBytes;if(u!==undefined)usage+=u;}\nreturn usage;},get userFriendlyName(){let frameNumber;if(!this.activeTree){frameNumber=this.objectInstance.snapshots.indexOf(this);}else{if(this.activeTree.sourceFrameNumber===undefined){frameNumber=this.objectInstance.snapshots.indexOf(this);}else{frameNumber=this.activeTree.sourceFrameNumber;}}\nreturn'cc::LayerTreeHostImpl frame '+frameNumber;}};ObjectSnapshot.subTypes.register(LayerTreeHostImplSnapshot,{typeName:'cc::LayerTreeHostImpl'});function LayerTreeHostImplInstance(){ObjectInstance.apply(this,arguments);this.allLayersBBox_=undefined;}\nLayerTreeHostImplInstance.prototype={__proto__:ObjectInstance.prototype,get allContentsScales(){if(this.allContentsScales_){return this.allContentsScales_;}\nconst scales={};for(const tileID in this.allTileHistories_){const tileHistory=this.allTileHistories_[tileID];scales[tileHistory.contentsScale]=true;}\nthis.allContentsScales_=Object.keys(scales);return this.allContentsScales_;},get allLayersBBox(){if(this.allLayersBBox_){return this.allLayersBBox_;}\nconst bbox=new tr.b.math.BBox2();function handleTree(tree){tree.renderSurfaceLayerList.forEach(function(layer){bbox.addQuad(layer.layerQuad);});}\nthis.snapshots.forEach(function(lthi){handleTree(lthi.activeTree);if(lthi.pendingTree){handleTree(lthi.pendingTree);}});this.allLayersBBox_=bbox;return this.allLayersBBox_;}};ObjectInstance.subTypes.register(LayerTreeHostImplInstance,{typeName:'cc::LayerTreeHostImpl'});return{LayerTreeHostImplSnapshot,LayerTreeHostImplInstance,};});'use strict';tr.exportTo('tr.e.cc',function(){const tileTypes={highRes:'highRes',lowRes:'lowRes',extraHighRes:'extraHighRes',extraLowRes:'extraLowRes',missing:'missing',culled:'culled',solidColor:'solidColor',picture:'picture',directPicture:'directPicture',unknown:'unknown'};const tileBorder={highRes:{color:'rgba(80, 200, 200, 0.7)',width:1},lowRes:{color:'rgba(212, 83, 192, 0.7)',width:2},extraHighRes:{color:'rgba(239, 231, 20, 0.7)',width:2},extraLowRes:{color:'rgba(93, 186, 18, 0.7)',width:2},missing:{color:'rgba(255, 0, 0, 0.7)',width:1},culled:{color:'rgba(160, 100, 0, 0.8)',width:1},solidColor:{color:'rgba(128, 128, 128, 0.7)',width:1},picture:{color:'rgba(64, 64, 64, 0.7)',width:1},directPicture:{color:'rgba(127, 255, 0, 1.0)',width:1},unknown:{color:'rgba(0, 0, 0, 1.0)',width:2}};return{tileTypes,tileBorder};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function TileSnapshot(){ObjectSnapshot.apply(this,arguments);}\nTileSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['layerId','contentsScale','contentRect']);if(this.args.managedState){this.resolution=this.args.managedState.resolution;this.isSolidColor=this.args.managedState.isSolidColor;this.isUsingGpuMemory=this.args.managedState.isUsingGpuMemory;this.hasResource=this.args.managedState.hasResource;this.scheduledPriority=this.args.scheduledPriority;this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;}else{this.resolution=this.args.resolution;this.isSolidColor=this.args.drawInfo.isSolidColor;this.isUsingGpuMemory=this.args.isUsingGpuMemory;this.hasResource=this.args.hasResource;this.scheduledPriority=this.args.scheduledPriority;this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;}\nif(this.contentRect){this.layerRect=this.contentRect.scale(1.0/this.contentsScale);}\nif(this.isSolidColor){this.type_=tr.e.cc.tileTypes.solidColor;}else if(!this.hasResource){this.type_=tr.e.cc.tileTypes.missing;}else if(this.resolution==='HIGH_RESOLUTION'){this.type_=tr.e.cc.tileTypes.highRes;}else if(this.resolution==='LOW_RESOLUTION'){this.type_=tr.e.cc.tileTypes.lowRes;}else{this.type_=tr.e.cc.tileTypes.unknown;}},getTypeForLayer(layer){let type=this.type_;if(type===tr.e.cc.tileTypes.unknown){if(this.contentsScale<layer.idealContentsScale){type=tr.e.cc.tileTypes.extraLowRes;}else if(this.contentsScale>layer.idealContentsScale){type=tr.e.cc.tileTypes.extraHighRes;}}\nreturn type;}};ObjectSnapshot.subTypes.register(TileSnapshot,{typeName:'cc::Tile'});return{TileSnapshot,};});'use strict';tr.exportTo('tr.ui.b',function(){const Location=tr.model.Location;function UIState(location,scaleX){this.location_=location;this.scaleX_=scaleX;}\nUIState.fromUserFriendlyString=function(model,viewport,stateString){const navByFinderPattern=/^(-?\\d+(\\.\\d+)?)@(.+)x(\\d+(\\.\\d+)?)$/g;const match=navByFinderPattern.exec(stateString);if(!match)return;const timestamp=parseFloat(match[1]);const stableId=match[3];const scaleX=parseFloat(match[4]);if(scaleX<=0){throw new Error('Invalid ScaleX value in UI State string.');}\nif(!viewport.containerToTrackMap.getTrackByStableId(stableId)){throw new Error('Invalid StableID given in UI State String.');}\nconst loc=tr.model.Location.fromStableIdAndTimestamp(viewport,stableId,timestamp);return new UIState(loc,scaleX);};UIState.prototype={get location(){return this.location_;},get scaleX(){return this.scaleX_;},toUserFriendlyString(viewport){const timestamp=this.location_.xWorld;const stableId=this.location_.getContainingTrack(viewport).eventContainer.stableId;const scaleX=this.scaleX_;return timestamp.toFixed(5)+'@'+stableId+'x'+scaleX.toFixed(5);},toDict(){return{location:this.location_.toDict(),scaleX:this.scaleX_};}};return{UIState,};});'use strict';tr.exportTo('tr.ui.b',function(){const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;function BrushingState(){this.guid_=tr.b.GUID.allocateSimple();this.selection_=new EventSet();this.findMatches_=new EventSet();this.analysisViewRelatedEvents_=new EventSet();this.analysisLinkHoveredEvents_=new EventSet();this.appliedToModel_=undefined;this.viewSpecificBrushingStates_={};}\nBrushingState.prototype={get guid(){return this.guid_;},clone(){const that=new BrushingState();that.selection_=this.selection_;that.findMatches_=this.findMatches_;that.analysisViewRelatedEvents_=this.analysisViewRelatedEvents_;that.analysisLinkHoveredEvents_=this.analysisLinkHoveredEvents_;that.viewSpecificBrushingStates_=this.viewSpecificBrushingStates_;return that;},equals(that){if(!this.selection_.equals(that.selection_)){return false;}\nif(!this.findMatches_.equals(that.findMatches_)){return false;}\nif(!this.analysisViewRelatedEvents_.equals(that.analysisViewRelatedEvents_)){return false;}\nif(!this.analysisLinkHoveredEvents_.equals(that.analysisLinkHoveredEvents_)){return false;}\nreturn true;},get selectionOfInterest(){if(this.selection_.length){return this.selection_;}\nif(this.highlight_.length){return this.highlight_;}\nif(this.analysisViewRelatedEvents_.length){return this.analysisViewRelatedEvents_;}\nif(this.analysisLinkHoveredEvents_.length){return this.analysisLinkHoveredEvents_;}\nreturn this.selection_;},get selection(){return this.selection_;},set selection(selection){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(selection===undefined){selection=new EventSet();}\nthis.selection_=selection;},get findMatches(){return this.findMatches_;},set findMatches(findMatches){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(findMatches===undefined){findMatches=new EventSet();}\nthis.findMatches_=findMatches;},get analysisViewRelatedEvents(){return this.analysisViewRelatedEvents_;},set analysisViewRelatedEvents(analysisViewRelatedEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(!(analysisViewRelatedEvents instanceof EventSet)){analysisViewRelatedEvents=new EventSet();}\nthis.analysisViewRelatedEvents_=analysisViewRelatedEvents;},get analysisLinkHoveredEvents(){return this.analysisLinkHoveredEvents_;},set analysisLinkHoveredEvents(analysisLinkHoveredEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(!(analysisLinkHoveredEvents instanceof EventSet)){analysisLinkHoveredEvents=new EventSet();}\nthis.analysisLinkHoveredEvents_=analysisLinkHoveredEvents;},get isAppliedToModel(){return this.appliedToModel_!==undefined;},get viewSpecificBrushingStates(){return this.viewSpecificBrushingStates_;},set viewSpecificBrushingStates(viewSpecificBrushingStates){this.viewSpecificBrushingStates_=viewSpecificBrushingStates;},get defaultState_(){const standoutEventExists=(this.analysisLinkHoveredEvents_.length>0||this.analysisViewRelatedEvents_.length>0||this.findMatches_.length>0);return(standoutEventExists?SelectionState.DIMMED0:SelectionState.NONE);},get brightenedEvents_(){const brightenedEvents=new EventSet();brightenedEvents.addEventSet(this.findMatches);brightenedEvents.addEventSet(this.analysisViewRelatedEvents_);brightenedEvents.addEventSet(this.selection_);brightenedEvents.addEventSet(this.analysisLinkHoveredEvents_);return brightenedEvents;},applyToEventSelectionStates(model){this.appliedToModel_=model;if(model){const newDefaultState=this.defaultState_;const currentDefaultState=tr.b.getFirstElement(model.getDescendantEvents()).selectionState;if(currentDefaultState!==newDefaultState){for(const e of model.getDescendantEvents()){e.selectionState=newDefaultState;}}}\nlet level;for(const e of this.brightenedEvents_){level=0;if(this.analysisViewRelatedEvents_.contains(e)||this.findMatches_.contains(e)){level++;}\nif(this.analysisLinkHoveredEvents_.contains(e)){level++;}\nif(this.selection_.contains(e)){level++;}\ne.selectionState=SelectionState.getFromBrighteningLevel(level);}},transferModelOwnershipToClone(that){if(!this.appliedToModel_){throw new Error('Not applied');}\nthat.appliedToModel_=this.appliedToModel_;this.appliedToModel_=undefined;},unapplyFromEventSelectionStates(){if(!this.appliedToModel_){throw new Error('Not applied');}\nconst model=this.appliedToModel_;this.appliedToModel_=undefined;const defaultState=this.defaultState_;for(const e of this.brightenedEvents_){e.selectionState=defaultState;}\nreturn defaultState;}};return{BrushingState,};});'use strict';tr.exportTo('tr.ui.b',function(){function Animation(){}\nAnimation.prototype={canTakeOverFor(existingAnimation){throw new Error('Not implemented');},takeOverFor(existingAnimation,newStartTimestamp,target){throw new Error('Not implemented');},start(timestamp,target){throw new Error('Not implemented');},didStopEarly(timestamp,target,willBeTakenOverByAnotherAnimation){},tick(timestamp,target){throw new Error('Not implemented');}};return{Animation,};});'use strict';tr.exportTo('tr.ui.b',function(){function AnimationController(){tr.b.EventTarget.call(this);this.target_=undefined;this.activeAnimation_=undefined;this.tickScheduled_=false;}\nAnimationController.prototype={__proto__:tr.b.EventTarget.prototype,get target(){return this.target_;},set target(target){if(this.activeAnimation_){throw new Error('Cannot change target while animation is running.');}\nif(target.cloneAnimationState===undefined||typeof target.cloneAnimationState!=='function'){throw new Error('target must have a cloneAnimationState function');}\nthis.target_=target;},get activeAnimation(){return this.activeAnimation_;},get hasActiveAnimation(){return!!this.activeAnimation_;},queueAnimation(animation,opt_now){if(this.target_===undefined){throw new Error('Cannot queue animations without a target');}\nlet now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}\nif(this.activeAnimation_){const done=this.activeAnimation_.tick(now,this.target_);if(done){this.activeAnimation_=undefined;}}\nif(this.activeAnimation_){if(animation.canTakeOverFor(this.activeAnimation_)){this.activeAnimation_.didStopEarly(now,this.target_,true);animation.takeOverFor(this.activeAnimation_,now,this.target_);}else{this.activeAnimation_.didStopEarly(now,this.target_,false);}}\nthis.activeAnimation_=animation;this.activeAnimation_.start(now,this.target_);if(this.tickScheduled_)return;this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);},cancelActiveAnimation(opt_now){if(!this.activeAnimation_)return;let now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}\nthis.activeAnimation_.didStopEarly(now,this.target_,false);this.activeAnimation_=undefined;},tickActiveAnimation_(frameBeginTime){this.tickScheduled_=false;if(!this.activeAnimation_)return;if(this.target_===undefined){this.activeAnimation_.didStopEarly(frameBeginTime,this.target_,false);return;}\nconst oldTargetState=this.target_.cloneAnimationState();const done=this.activeAnimation_.tick(frameBeginTime,this.target_);if(done){this.activeAnimation_=undefined;}\nif(this.activeAnimation_){this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);}\nif(oldTargetState){const e=new tr.b.Event('didtick');e.oldTargetState=oldTargetState;this.dispatchEvent(e,false,false);}}};return{AnimationController,};});'use strict';tr.exportTo('tr.b',function(){function Settings(){return Settings;}\nif(tr.b.unittest&&tr.b.unittest.TestRunner){tr.b.unittest.TestRunner.addEventListener('tr-unittest-will-run',function(){if(tr.isHeadless){Settings.setAlternativeStorageInstance(new HeadlessStorage());}else{Settings.setAlternativeStorageInstance(global.sessionStorage);global.sessionStorage.clear();}});}\nfunction SessionSettings(){return SessionSettings;}\nfunction AddStaticStorageFunctionsToClass_(inputClass,storage){inputClass.storage_=storage;inputClass.get=function(key,opt_default,opt_namespace){key=inputClass.namespace_(key,opt_namespace);const rawVal=inputClass.storage_.getItem(key);if(rawVal===null||rawVal===undefined){return opt_default;}\ntry{return JSON.parse(rawVal).value;}catch(e){inputClass.storage_.removeItem(key);return opt_default;}};inputClass.set=function(key,value,opt_namespace){if(value===undefined){throw new Error('Settings.set: value must not be undefined');}\nconst v=JSON.stringify({value});inputClass.storage_.setItem(inputClass.namespace_(key,opt_namespace),v);};inputClass.keys=function(opt_namespace){const result=[];opt_namespace=opt_namespace||'';for(let i=0;i<inputClass.storage_.length;i++){const key=inputClass.storage_.key(i);if(inputClass.isnamespaced_(key,opt_namespace)){result.push(inputClass.unnamespace_(key,opt_namespace));}}\nreturn result;};inputClass.isnamespaced_=function(key,opt_namespace){return key.indexOf(inputClass.normalize_(opt_namespace))===0;};inputClass.namespace_=function(key,opt_namespace){return inputClass.normalize_(opt_namespace)+key;};inputClass.unnamespace_=function(key,opt_namespace){return key.replace(inputClass.normalize_(opt_namespace),'');};inputClass.normalize_=function(opt_namespace){return inputClass.NAMESPACE+(opt_namespace?opt_namespace+'.':'');};inputClass.setAlternativeStorageInstance=function(instance){inputClass.storage_=instance;};inputClass.getAlternativeStorageInstance=function(){if(!tr.isHeadless&&inputClass.storage_===localStorage){return undefined;}\nreturn inputClass.storage_;};inputClass.NAMESPACE='trace-viewer';}\nfunction HeadlessStorage(){this.length=0;this.hasItem_={};this.items_={};this.itemsAsArray_=undefined;}\nHeadlessStorage.prototype={key(index){return this.itemsAsArray[index];},get itemsAsArray(){if(this.itemsAsArray_!==undefined){return this.itemsAsArray_;}\nconst itemsAsArray=[];for(const k in this.items_){itemsAsArray.push(k);}\nthis.itemsAsArray_=itemsAsArray;return this.itemsAsArray_;},getItem(key){if(!this.hasItem_[key]){return null;}\nreturn this.items_[key];},removeItem(key){if(!this.hasItem_[key]){return;}\nconst value=this.items_[key];delete this.hasItem_[key];delete this.items_[key];this.length--;this.itemsAsArray_=undefined;return value;},setItem(key,value){if(this.hasItem_[key]){this.items_[key]=value;return;}\nthis.items_[key]=value;this.hasItem_[key]=true;this.length++;this.itemsAsArray_=undefined;return value;}};if(tr.isHeadless){AddStaticStorageFunctionsToClass_(Settings,new HeadlessStorage());AddStaticStorageFunctionsToClass_(SessionSettings,new HeadlessStorage());}else{AddStaticStorageFunctionsToClass_(Settings,localStorage);AddStaticStorageFunctionsToClass_(SessionSettings,sessionStorage);}\nreturn{Settings,SessionSettings,};});'use strict';tr.exportTo('tr.ui.b',function(){function createSpan(opt_dictionary){let ownerDocument=document;if(opt_dictionary&&opt_dictionary.ownerDocument){ownerDocument=opt_dictionary.ownerDocument;}\nconst spanEl=ownerDocument.createElement('span');if(opt_dictionary){if(opt_dictionary.className){spanEl.className=opt_dictionary.className;}\nif(opt_dictionary.textContent){Polymer.dom(spanEl).textContent=opt_dictionary.textContent;}\nif(opt_dictionary.tooltip){spanEl.title=opt_dictionary.tooltip;}\nif(opt_dictionary.parent){Polymer.dom(opt_dictionary.parent).appendChild(spanEl);}\nif(opt_dictionary.bold){spanEl.style.fontWeight='bold';}\nif(opt_dictionary.italic){spanEl.style.fontStyle='italic';}\nif(opt_dictionary.marginLeft){spanEl.style.marginLeft=opt_dictionary.marginLeft;}\nif(opt_dictionary.marginRight){spanEl.style.marginRight=opt_dictionary.marginRight;}\nif(opt_dictionary.backgroundColor){spanEl.style.backgroundColor=opt_dictionary.backgroundColor;}\nif(opt_dictionary.color){spanEl.style.color=opt_dictionary.color;}}\nreturn spanEl;}\nfunction createLink(opt_args){let ownerDocument=document;if(opt_args&&opt_args.ownerDocument){ownerDocument=opt_args.ownerDocument;}\nconst linkEl=ownerDocument.createElement('a');if(opt_args){if(opt_args.href){linkEl.href=opt_args.href;linkEl.target='_blank';}\nif(opt_args.tooltip)linkEl.title=opt_args.tooltip;if(opt_args.color)linkEl.style.color=opt_args.color;if(opt_args.bold)linkEl.style.fontWeight='bold';if(opt_args.italic)linkEl.style.fontStyle='italic';if(opt_args.className)linkEl.className=opt_args.className;if(opt_args.parent)Polymer.dom(opt_args.parent).appendChild(linkEl);if(opt_args.marginLeft)linkEl.style.marginLeft=opt_args.marginLeft;if(opt_args.marginRight)linkEl.style.marginRight=opt_args.marginRight;if(opt_args.backgroundColor){linkEl.style.backgroundColor=opt_args.backgroundColor;}\nif(opt_args.textContent){Polymer.dom(linkEl).textContent=opt_args.textContent;}}\nreturn linkEl;}\nfunction createDiv(opt_dictionary){const divEl=document.createElement('div');if(opt_dictionary){if(opt_dictionary.className){divEl.className=opt_dictionary.className;}\nif(opt_dictionary.parent){Polymer.dom(opt_dictionary.parent).appendChild(divEl);}\nif(opt_dictionary.textContent){Polymer.dom(divEl).textContent=opt_dictionary.textContent;}\nif(opt_dictionary.maxWidth){divEl.style.maxWidth=opt_dictionary.maxWidth;}}\nreturn divEl;}\nfunction createScopedStyle(styleContent){const styleEl=document.createElement('style');styleEl.scoped=true;Polymer.dom(styleEl).innerHTML=styleContent;return styleEl;}\nfunction valuesEqual(a,b){if(a instanceof Array&&b instanceof Array){return a.length===b.length&&JSON.stringify(a)===JSON.stringify(b);}\nreturn a===b;}\nfunction createSelector(targetEl,targetElProperty,settingsKey,defaultValue,items,opt_namespace){let defaultValueIndex;for(let i=0;i<items.length;i++){const item=items[i];if(valuesEqual(item.value,defaultValue)){defaultValueIndex=i;break;}}\nif(defaultValueIndex===undefined){throw new Error('defaultValue must be in the items list');}\nconst selectorEl=document.createElement('select');selectorEl.addEventListener('change',onChange);for(let i=0;i<items.length;i++){const item=items[i];const optionEl=document.createElement('option');Polymer.dom(optionEl).textContent=item.label;optionEl.targetPropertyValue=item.value;optionEl.item=item;Polymer.dom(selectorEl).appendChild(optionEl);}\nfunction onChange(e){const value=selectorEl.selectedValue;tr.b.Settings.set(settingsKey,value,opt_namespace);targetEl[targetElProperty]=value;}\nconst oldSetter=targetEl.__lookupSetter__('selectedIndex');selectorEl.__defineGetter__('selectedValue',function(v){return selectorEl.children[selectorEl.selectedIndex].targetPropertyValue;});selectorEl.__defineGetter__('selectedItem',function(v){return selectorEl.children[selectorEl.selectedIndex].item;});selectorEl.__defineSetter__('selectedValue',function(v){for(let i=0;i<selectorEl.children.length;i++){const value=selectorEl.children[i].targetPropertyValue;if(valuesEqual(value,v)){const changed=selectorEl.selectedIndex!==i;if(changed){selectorEl.selectedIndex=i;onChange();}\nreturn;}}\nthrow new Error('Not a valid value');});const initialValue=tr.b.Settings.get(settingsKey,defaultValue,opt_namespace);let didSet=false;for(let i=0;i<selectorEl.children.length;i++){if(valuesEqual(selectorEl.children[i].targetPropertyValue,initialValue)){didSet=true;targetEl[targetElProperty]=initialValue;selectorEl.selectedIndex=i;break;}}\nif(!didSet){selectorEl.selectedIndex=defaultValueIndex;targetEl[targetElProperty]=defaultValue;}\nreturn selectorEl;}\nfunction createEditCategorySpan(optionGroupEl,targetEl){const spanEl=createSpan({className:'edit-categories'});Polymer.dom(spanEl).textContent='Edit categories';Polymer.dom(spanEl).classList.add('labeled-option');spanEl.addEventListener('click',function(){targetEl.onClickEditCategories();});return spanEl;}\nfunction createOptionGroup(targetEl,targetElProperty,settingsKey,defaultValue,items){function onChange(){let value=[];if(this.value.length){value=this.value.split(',');}\ntr.b.Settings.set(settingsKey,value);targetEl[targetElProperty]=value;}\nconst optionGroupEl=createSpan({className:'labeled-option-group'});const initialValue=tr.b.Settings.get(settingsKey,defaultValue);for(let i=0;i<items.length;++i){const item=items[i];const id='category-preset-'+item.label.replace(/ /g,'-');const radioEl=document.createElement('input');radioEl.type='radio';Polymer.dom(radioEl).setAttribute('id',id);Polymer.dom(radioEl).setAttribute('name','category-presets-group');Polymer.dom(radioEl).setAttribute('value',item.value);radioEl.addEventListener('change',onChange.bind(radioEl,targetEl,targetElProperty,settingsKey));if(valuesEqual(initialValue,item.value)){radioEl.checked=true;}\nconst labelEl=document.createElement('label');Polymer.dom(labelEl).textContent=item.label;Polymer.dom(labelEl).setAttribute('for',id);const spanEl=createSpan({className:'labeled-option'});Polymer.dom(spanEl).appendChild(radioEl);Polymer.dom(spanEl).appendChild(labelEl);spanEl.__defineSetter__('checked',function(opt_bool){const changed=radioEl.checked!==(!!opt_bool);if(!changed)return;radioEl.checked=!!opt_bool;onChange();});spanEl.__defineGetter__('checked',function(){return radioEl.checked;});Polymer.dom(optionGroupEl).appendChild(spanEl);}\nPolymer.dom(optionGroupEl).appendChild(createEditCategorySpan(optionGroupEl,targetEl));if(!initialValue.length){Polymer.dom(optionGroupEl).classList.add('categories-expanded');}\ntargetEl[targetElProperty]=initialValue;return optionGroupEl;}\nlet nextCheckboxId=1;function createCheckBox(targetEl,targetElProperty,settingsKey,defaultValue,label,opt_changeCb){const buttonEl=document.createElement('input');buttonEl.type='checkbox';let initialValue=defaultValue;if(settingsKey!==undefined){initialValue=tr.b.Settings.get(settingsKey,defaultValue);buttonEl.checked=!!initialValue;}\nif(targetEl){targetEl[targetElProperty]=initialValue;}\nfunction onChange(){if(settingsKey!==undefined){tr.b.Settings.set(settingsKey,buttonEl.checked);}\nif(targetEl){targetEl[targetElProperty]=buttonEl.checked;}\nif(opt_changeCb){opt_changeCb.call();}}\nbuttonEl.addEventListener('change',onChange);const id='#checkbox-'+nextCheckboxId++;const spanEl=createSpan();spanEl.style.display='flex';spanEl.style.whiteSpace='nowrap';Polymer.dom(buttonEl).setAttribute('id',id);const labelEl=document.createElement('label');Polymer.dom(labelEl).textContent=label;Polymer.dom(labelEl).setAttribute('for',id);Polymer.dom(spanEl).appendChild(buttonEl);Polymer.dom(spanEl).appendChild(labelEl);spanEl.__defineSetter__('checked',function(opt_bool){const changed=buttonEl.checked!==(!!opt_bool);if(!changed)return;buttonEl.checked=!!opt_bool;onChange();});spanEl.__defineGetter__('checked',function(){return buttonEl.checked;});return spanEl;}\nfunction createButton(label,opt_callback,opt_this){const buttonEl=document.createElement('input');buttonEl.type='button';buttonEl.value=label;function onClick(){opt_callback.call(opt_this||buttonEl);}\nif(opt_callback){buttonEl.addEventListener('click',onClick);}\nreturn buttonEl;}\nfunction createTextInput(targetEl,targetElProperty,settingsKey,defaultValue){const initialValue=tr.b.Settings.get(settingsKey,defaultValue);const el=document.createElement('input');el.type='text';function onChange(e){tr.b.Settings.set(settingsKey,el.value);targetEl[targetElProperty]=el.value;}\nel.addEventListener('input',onChange);el.value=initialValue;targetEl[targetElProperty]=initialValue;return el;}\nfunction isElementAttachedToDocument(el){let cur=el;while(Polymer.dom(cur).parentNode){cur=Polymer.dom(cur).parentNode;}\nreturn(cur===el.ownerDocument||cur.nodeName==='#document-fragment');}\nfunction asHTMLOrTextNode(value,opt_ownerDocument){if(value instanceof Node){return value;}\nconst ownerDocument=opt_ownerDocument||document;return ownerDocument.createTextNode(value);}\nreturn{createSpan,createLink,createDiv,createScopedStyle,createSelector,createOptionGroup,createCheckBox,createButton,createTextInput,isElementAttachedToDocument,asHTMLOrTextNode,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCacheDict=new Map();const elidedTitleCache=new ElidedTitleCache();function ElidedTitleCache(){this.textWidthMap=new Map();}\nElidedTitleCache.prototype={get(ctx,pixWidth,title,width,sliceDuration){let elidedDict=elidedTitleCacheDict.get(title);if(!elidedDict){elidedDict=new Map();elidedTitleCacheDict.set(title,elidedDict);}\nlet elidedDictForPixWidth=elidedDict.get(pixWidth);if(!elidedDictForPixWidth){elidedDict.set(pixWidth,new Map());elidedDictForPixWidth=elidedDict.get(pixWidth);}\nlet stringWidthPair=elidedDictForPixWidth.get(sliceDuration);if(stringWidthPair===undefined){let newtitle=title;let elided=false;while(this.labelWidthWorld(ctx,newtitle,pixWidth)>sliceDuration){if(newtitle.length*0.75<1)break;newtitle=newtitle.substring(0,newtitle.length*0.75);elided=true;}\nif(elided&&newtitle.length>3){newtitle=newtitle.substring(0,newtitle.length-3)+'...';}\nstringWidthPair=new ElidedStringWidthPair(newtitle,this.labelWidth(ctx,newtitle));elidedDictForPixWidth.set(sliceDuration,stringWidthPair);}\nreturn stringWidthPair;},quickMeasureText_(ctx,text){let w=this.textWidthMap.get(text);if(!w){w=ctx.measureText(text).width;this.textWidthMap.set(text,w);}\nreturn w;},labelWidth(ctx,title){return this.quickMeasureText_(ctx,title)+2;},labelWidthWorld(ctx,title,pixWidth){return this.labelWidth(ctx,title)*pixWidth;}};function ElidedStringWidthPair(string,width){this.string=string;this.width=width;}\nreturn{ElidedTitleCache,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColorScheme=tr.b.ColorScheme;const colors=ColorScheme.colors;const colorsAsStrings=ColorScheme.colorsAsStrings;const SelectionState=tr.model.SelectionState;const EventPresenter={getSelectableItemColorAsString(item){const offset=this.getColorIdOffset_(item);const colorId=ColorScheme.getVariantColorId(item.colorId,offset);return colorsAsStrings[colorId];},getColorIdOffset_(event){return event.selectionState;},getTextColor(event){if(event.selectionState===SelectionState.DIMMED){return'rgb(60,60,60)';}\nreturn'rgb(0,0,0)';},getSliceColorId(slice){const offset=this.getColorIdOffset_(slice);return ColorScheme.getVariantColorId(slice.colorId,offset);},getSliceAlpha(slice,async){let alpha=1;if(async){alpha*=0.3;}\nreturn alpha;},getInstantSliceColor(instant){const offset=this.getColorIdOffset_(instant);const colorId=ColorScheme.getVariantColorId(instant.colorId,offset);return colors[colorId].toStringWithAlphaOverride(1.0);},getObjectInstanceColor(instance){const offset=this.getColorIdOffset_(instance);const colorId=ColorScheme.getVariantColorId(instance.colorId,offset);return colors[colorId].toStringWithAlphaOverride(0.25);},getObjectSnapshotColor(snapshot){const offset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getVariantColorId(colorId,offset);return colors[colorId];},getCounterSeriesColor(colorId,selectionState,opt_alphaMultiplier){const event={selectionState};const offset=this.getColorIdOffset_(event);const c=colors[ColorScheme.getVariantColorId(colorId,offset)];return c.toStringWithAlphaOverride(opt_alphaMultiplier!==undefined?opt_alphaMultiplier:1.0);},getBarSnapshotColor(snapshot,offset){const snapshotOffset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getAnotherColorId(colorId,offset);colorId=ColorScheme.getVariantColorId(colorId,snapshotOffset);return colors[colorId].toStringWithAlphaOverride(1.0);}};return{EventPresenter,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCache=new tr.ui.b.ElidedTitleCache();const ColorScheme=tr.b.ColorScheme;const colorsAsStrings=ColorScheme.colorsAsStrings;const EventPresenter=tr.ui.b.EventPresenter;const blackColorId=ColorScheme.getColorIdForReservedName('black');const THIN_SLICE_HEIGHT=4;const SLICE_WAITING_WIDTH_DRAW_THRESHOLD=3;const SLICE_ACTIVE_WIDTH_DRAW_THRESHOLD=1;const SHOULD_ELIDE_TEXT=true;function drawLine(ctx,x1,y1,x2,y2){ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);}\nfunction drawTriangle(ctx,x1,y1,x2,y2,x3,y3){ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.closePath();}\nfunction drawArrow(ctx,x1,y1,x2,y2,arrowLength,arrowWidth){const dx=x2-x1;const dy=y2-y1;const len=Math.sqrt(dx*dx+dy*dy);const perc=(len-arrowLength)/len;const bx=x1+perc*dx;const by=y1+perc*dy;const ux=dx/len;const uy=dy/len;const ax=uy*arrowWidth;const ay=-ux*arrowWidth;ctx.beginPath();drawLine(ctx,x1,y1,x2,y2);ctx.stroke();drawTriangle(ctx,bx+ax,by+ay,x2,y2,bx-ax,by-ay);ctx.fill();}\nfunction drawSlices(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,async){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;const viewL=dt.xWorldToView(viewLWorld);const viewR=dt.xWorldToView(viewRWorld);let darkRectHeight=THIN_SLICE_HEIGHT*pixelRatio;if(height<darkRectHeight){darkRectHeight=0;}\nconst lightRectHeight=height-darkRectHeight;ctx.save();const rect=new tr.ui.b.FastRectRenderer(ctx,viewL,viewR,2,2,colorsAsStrings);rect.setYandH(0,height);const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start+slice.duration;},viewLWorld);let hadTopLevel=false;for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}\nconst colorId=EventPresenter.getSliceColorId(slice);const alpha=EventPresenter.getSliceAlpha(slice,async);const lightAlpha=alpha*0.70;if(async&&slice.isTopLevel){rect.setYandH(3,height-3);hadTopLevel=true;}else{rect.setYandH(0,height);}\nif(!slice.cpuDuration){rect.fillRect(xView,wView,colorId,alpha);continue;}\nlet activeWidth=wView*(slice.cpuDuration/slice.duration);let waitingWidth=wView-activeWidth;if(activeWidth<SLICE_ACTIVE_WIDTH_DRAW_THRESHOLD){activeWidth=0;waitingWidth=wView;}\nif(waitingWidth<SLICE_WAITING_WIDTH_DRAW_THRESHOLD){activeWidth=wView;waitingWidth=0;}\nif(activeWidth>0){rect.fillRect(xView,activeWidth,colorId,alpha);}\nif(waitingWidth>0){rect.setYandH(0,lightRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,lightAlpha);rect.setYandH(lightRectHeight,darkRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,alpha);rect.setYandH(0,height);}}\nrect.flush();if(async&&hadTopLevel){rect.setYandH(2,1);for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;if(!slice.isTopLevel)continue;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}\nrect.fillRect(xView,wView,blackColorId,0.7);}\nrect.flush();}\nctx.restore();}\nfunction drawInstantSlicesAsLines(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,lineWidthInPixels){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;ctx.save();ctx.lineWidth=lineWidthInPixels*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start;},viewLWorld);for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;ctx.strokeStyle=EventPresenter.getInstantSliceColor(slice);const xView=dt.xWorldToView(x);ctx.beginPath();ctx.moveTo(xView,0);ctx.lineTo(xView,height);ctx.stroke();}\nctx.restore();}\nfunction drawLabels(ctx,dt,viewLWorld,viewRWorld,slices,async,fontSize,yOffset){const pixelRatio=window.devicePixelRatio||1;const pixWidth=dt.xViewVectorToWorld(1);ctx.save();ctx.textAlign='center';ctx.textBaseline='top';ctx.font=(fontSize*pixelRatio)+'px sans-serif';if(async){ctx.font='italic '+ctx.font;}\nconst cY=yOffset*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start+slice.duration;},viewLWorld);const quickDiscardThreshold=pixWidth*20;for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];if(slice.start>viewRWorld)break;if(slice.duration<=quickDiscardThreshold)continue;const xLeftClipped=Math.max(slice.start,viewLWorld);const xRightClipped=Math.min(slice.start+slice.duration,viewRWorld);const visibleWidth=xRightClipped-xLeftClipped;const title=slice.title+\n(slice.didNotFinish?' (Did Not Finish)':'');let drawnTitle=title;let drawnWidth=elidedTitleCache.labelWidth(ctx,drawnTitle);const fullLabelWidth=elidedTitleCache.labelWidthWorld(ctx,drawnTitle,pixWidth);if(SHOULD_ELIDE_TEXT&&fullLabelWidth>visibleWidth){const elidedValues=elidedTitleCache.get(ctx,pixWidth,drawnTitle,drawnWidth,visibleWidth);drawnTitle=elidedValues.string;drawnWidth=elidedValues.width;}\nif(drawnWidth*pixWidth<visibleWidth){ctx.fillStyle=EventPresenter.getTextColor(slice);const cX=dt.xWorldToView((xLeftClipped+xRightClipped)/2);ctx.fillText(drawnTitle,cX,cY,drawnWidth);}}\nctx.restore();}\nreturn{drawSlices,drawInstantSlicesAsLines,drawLabels,drawLine,drawTriangle,drawArrow,elidedTitleCache_:elidedTitleCache,THIN_SLICE_HEIGHT,};});'use strict';tr.exportTo('tr.ui',function(){function TimelineDisplayTransform(opt_that){if(opt_that){this.set(opt_that);return;}\nthis.scaleX=1;this.panX=0;this.panY=0;}\nTimelineDisplayTransform.prototype={set(that){this.scaleX=that.scaleX;this.panX=that.panX;this.panY=that.panY;},clone(){return new TimelineDisplayTransform(this);},equals(that){let eq=true;if(that===undefined||that===null){return false;}\neq&=this.panX===that.panX;eq&=this.panY===that.panY;eq&=this.scaleX===that.scaleX;return!!eq;},almostEquals(that){let eq=true;if(that===undefined||that===null){return false;}\neq&=Math.abs(this.panX-that.panX)<0.001;eq&=Math.abs(this.panY-that.panY)<0.001;eq&=Math.abs(this.scaleX-that.scaleX)<0.001;return!!eq;},incrementPanXInViewUnits(xDeltaView){this.panX+=this.xViewVectorToWorld(xDeltaView);},xPanWorldPosToViewPos(worldX,viewX,viewWidth){if(typeof viewX==='string'){if(viewX==='left'){viewX=0;}else if(viewX==='center'){viewX=viewWidth/2;}else if(viewX==='right'){viewX=viewWidth-1;}else{throw new Error('viewX must be left|center|right or number.');}}\nthis.panX=(viewX/this.scaleX)-worldX;},xPanWorldBoundsIntoView(worldMin,worldMax,viewWidth){if(this.xWorldToView(worldMin)<0){this.xPanWorldPosToViewPos(worldMin,'left',viewWidth);}else if(this.xWorldToView(worldMax)>viewWidth){this.xPanWorldPosToViewPos(worldMax,'right',viewWidth);}},xSetWorldBounds(worldMin,worldMax,viewWidth){const worldWidth=worldMax-worldMin;const scaleX=viewWidth/worldWidth;const panX=-worldMin;this.setPanAndScale(panX,scaleX);},setPanAndScale(p,s){this.scaleX=s;this.panX=p;},xWorldToView(x){return(x+this.panX)*this.scaleX;},xWorldVectorToView(x){return x*this.scaleX;},xViewToWorld(x){return(x/this.scaleX)-this.panX;},xViewVectorToWorld(x){return x/this.scaleX;}};return{TimelineDisplayTransform,};});'use strict';tr.exportTo('tr.ui',function(){function SnapIndicator(y,height){this.y=y;this.height=height;}\nfunction TimelineInterestRange(vp){this.viewport_=vp;this.range_=new tr.b.math.Range();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;}\nTimelineInterestRange.prototype={get isEmpty(){return this.range_.isEmpty;},reset(){this.range_.reset();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;this.viewport_.dispatchChangeEvent();},get min(){return this.range_.min;},set min(min){this.range_.min=min;this.viewport_.dispatchChangeEvent();},get max(){return this.range_.max;},set max(max){this.range_.max=max;this.viewport_.dispatchChangeEvent();},set(range){this.range_.reset();this.range_.addRange(range);this.viewport_.dispatchChangeEvent();},setMinAndMax(min,max){this.range_.min=min;this.range_.max=max;this.viewport_.dispatchChangeEvent();},get range(){return this.range_.range;},asRangeObject(){const range=new tr.b.math.Range();range.addRange(this.range_);return range;},get leftSelected(){return this.leftSelected_;},set leftSelected(leftSelected){if(this.leftSelected_===leftSelected)return;this.leftSelected_=leftSelected;this.viewport_.dispatchChangeEvent();},get rightSelected(){return this.rightSelected_;},set rightSelected(rightSelected){if(this.rightSelected_===rightSelected)return;this.rightSelected_=rightSelected;this.viewport_.dispatchChangeEvent();},get leftSnapIndicator(){return this.leftSnapIndicator_;},set leftSnapIndicator(leftSnapIndicator){this.leftSnapIndicator_=leftSnapIndicator;this.viewport_.dispatchChangeEvent();},get rightSnapIndicator(){return this.rightSnapIndicator_;},set rightSnapIndicator(rightSnapIndicator){this.rightSnapIndicator_=rightSnapIndicator;this.viewport_.dispatchChangeEvent();},draw(ctx,viewLWorld,viewRWorld,viewHeight){if(this.range_.isEmpty)return;const dt=this.viewport_.currentDisplayTransform;const markerLWorld=this.min;const markerRWorld=this.max;const markerLView=Math.round(dt.xWorldToView(markerLWorld));const markerRView=Math.round(dt.xWorldToView(markerRWorld));ctx.fillStyle='rgba(0, 0, 0, 0.2)';if(markerLWorld>viewLWorld){ctx.fillRect(dt.xWorldToView(viewLWorld),0,markerLView,viewHeight);}\nif(markerRWorld<viewRWorld){ctx.fillRect(markerRView,0,dt.xWorldToView(viewRWorld),viewHeight);}\nconst pixelRatio=window.devicePixelRatio||1;ctx.lineWidth=Math.round(pixelRatio);if(this.range_.range>0){this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_);this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.max,this.rightSelected_);}else{this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_||this.rightSelected_);}\nctx.lineWidth=1;},drawLine_(ctx,viewLWorld,viewRWorld,height,ts,selected){if(ts<viewLWorld||ts>=viewRWorld)return;const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(ts));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();tr.ui.b.drawLine(ctx,viewX,0,viewX,height);if(selected){ctx.strokeStyle='rgb(255, 0, 0)';}else{ctx.strokeStyle='rgb(0, 0, 0)';}\nctx.stroke();ctx.restore();},drawIndicators(ctx,viewLWorld,viewRWorld){if(this.leftSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.min,this.leftSnapIndicator_,this.leftSelected_);}\nif(this.rightSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.max,this.rightSnapIndicator_,this.rightSelected_);}},drawIndicator_(ctx,viewLWorld,viewRWorld,xWorld,si,selected){const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(xWorld));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);const pixelRatio=window.devicePixelRatio||1;const viewY=si.y*devicePixelRatio;const viewHeight=si.height*devicePixelRatio;const arrowSize=4*pixelRatio;if(selected){ctx.fillStyle='rgb(255, 0, 0)';}else{ctx.fillStyle='rgb(0, 0, 0)';}\ntr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY,viewX+arrowSize*0.75,viewY,viewX,viewY+arrowSize);ctx.fill();tr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY+viewHeight,viewX+arrowSize*0.75,viewY+viewHeight,viewX,viewY+viewHeight-arrowSize);ctx.fill();ctx.restore();}};return{SnapIndicator,TimelineInterestRange,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ContainerToTrackMap(){this.stableIdToTrackMap_={};}\nContainerToTrackMap.prototype={addContainer(container,track){if(!track){throw new Error('Must provide a track.');}\nthis.stableIdToTrackMap_[container.stableId]=track;},clear(){this.stableIdToTrackMap_={};},getTrackByStableId(stableId){return this.stableIdToTrackMap_[stableId];}};return{ContainerToTrackMap,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function EventToTrackMap(){}\nEventToTrackMap.prototype={addEvent(event,track){if(!track){throw new Error('Must provide a track.');}\nthis[event.guid]=track;}};return{EventToTrackMap,};});'use strict';tr.exportTo('tr.ui',function(){const TimelineDisplayTransform=tr.ui.TimelineDisplayTransform;const TimelineInterestRange=tr.ui.TimelineInterestRange;const IDEAL_MAJOR_MARK_DISTANCE_PX=150;const MAJOR_MARK_ROUNDING_FACTOR=100000;class AnimationControllerProxy{constructor(target){this.target_=target;}\nget panX(){return this.target_.currentDisplayTransform_.panX;}\nset panX(panX){this.target_.currentDisplayTransform_.panX=panX;}\nget panY(){return this.target_.currentDisplayTransform_.panY;}\nset panY(panY){this.target_.currentDisplayTransform_.panY=panY;}\nget scaleX(){return this.target_.currentDisplayTransform_.scaleX;}\nset scaleX(scaleX){this.target_.currentDisplayTransform_.scaleX=scaleX;}\ncloneAnimationState(){return this.target_.currentDisplayTransform_.clone();}\nxPanWorldPosToViewPos(xWorld,xView){this.target_.currentDisplayTransform_.xPanWorldPosToViewPos(xWorld,xView,this.target_.modelTrackContainer_.canvas.clientWidth);}}\nfunction TimelineViewport(parentEl){this.parentEl_=parentEl;this.modelTrackContainer_=undefined;this.currentDisplayTransform_=new TimelineDisplayTransform();this.initAnimationController_();this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highDetails_=false;this.gridTimebase_=0;this.gridStep_=1000/60;this.gridEnabled_=false;this.hasCalledSetupFunction_=false;this.onResize_=this.onResize_.bind(this);this.onModelTrackControllerScroll_=this.onModelTrackControllerScroll_.bind(this);this.timeMode_=TimelineViewport.TimeMode.TIME_IN_MS;this.majorMarkWorldPositions_=[];this.majorMarkUnit_=undefined;this.interestRange_=new TimelineInterestRange(this);this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.containerToTrackMap=new tr.ui.tracks.ContainerToTrackMap();this.dispatchChangeEvent=this.dispatchChangeEvent.bind(this);}\nTimelineViewport.TimeMode={TIME_IN_MS:0,REVISIONS:1};TimelineViewport.prototype={__proto__:tr.b.EventTarget.prototype,get isAttachedToDocumentOrInTestMode(){if(this.parentEl_===undefined)return;return tr.ui.b.isElementAttachedToDocument(this.parentEl_);},onResize_(){this.dispatchChangeEvent();},dispatchChangeEvent(){tr.b.dispatchSimpleEvent(this,'change');},detach(){window.removeEventListener('resize',this.dispatchChangeEvent);},initAnimationController_(){this.dtAnimationController_=new tr.ui.b.AnimationController();this.dtAnimationController_.addEventListener('didtick',function(e){this.onCurentDisplayTransformChange_(e.oldTargetState);}.bind(this));this.dtAnimationController_.target=new AnimationControllerProxy(this);},get currentDisplayTransform(){return this.currentDisplayTransform_;},setDisplayTransformImmediately(displayTransform){this.dtAnimationController_.cancelActiveAnimation();const oldDisplayTransform=this.dtAnimationController_.target.cloneAnimationState();this.currentDisplayTransform_.set(displayTransform);this.onCurentDisplayTransformChange_(oldDisplayTransform);},queueDisplayTransformAnimation(animation){if(!(animation instanceof tr.ui.b.Animation)){throw new Error('animation must be instanceof tr.ui.b.Animation');}\nthis.dtAnimationController_.queueAnimation(animation);},onCurentDisplayTransformChange_(oldDisplayTransform){if(this.modelTrackContainer_){this.currentDisplayTransform.panY=tr.b.math.clamp(this.currentDisplayTransform.panY,0,this.modelTrackContainer_.scrollHeight-\nthis.modelTrackContainer_.clientHeight);}\nconst changed=!this.currentDisplayTransform.equals(oldDisplayTransform);const yChanged=this.currentDisplayTransform.panY!==oldDisplayTransform.panY;if(yChanged){this.modelTrackContainer_.scrollTop=this.currentDisplayTransform.panY;}\nif(changed){this.dispatchChangeEvent();}},onModelTrackControllerScroll_(e){if(this.dtAnimationController_.activeAnimation&&this.dtAnimationController_.activeAnimation.affectsPanY){this.dtAnimationController_.cancelActiveAnimation();}\nconst panY=this.modelTrackContainer_.scrollTop;this.currentDisplayTransform_.panY=panY;},get modelTrackContainer(){return this.modelTrackContainer_;},set modelTrackContainer(m){if(this.modelTrackContainer_){this.modelTrackContainer_.removeEventListener('scroll',this.onModelTrackControllerScroll_);}\nthis.modelTrackContainer_=m;this.modelTrackContainer_.addEventListener('scroll',this.onModelTrackControllerScroll_);},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;this.dispatchChangeEvent();},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;this.dispatchChangeEvent();},get highDetails(){return this.highDetails_;},set highDetails(highDetails){this.highDetails_=highDetails;this.dispatchChangeEvent();},get gridEnabled(){return this.gridEnabled_;},set gridEnabled(enabled){if(this.gridEnabled_===enabled)return;this.gridEnabled_=enabled&&true;this.dispatchChangeEvent();},get gridTimebase(){return this.gridTimebase_;},set gridTimebase(timebase){if(this.gridTimebase_===timebase)return;this.gridTimebase_=timebase;this.dispatchChangeEvent();},get gridStep(){return this.gridStep_;},get interestRange(){return this.interestRange_;},get majorMarkWorldPositions(){return this.majorMarkWorldPositions_;},get majorMarkUnit(){switch(this.timeMode_){case TimelineViewport.TimeMode.TIME_IN_MS:return tr.b.Unit.byName.timeInMsAutoFormat;case TimelineViewport.TimeMode.REVISIONS:return tr.b.Unit.byName.count;default:throw new Error('Cannot get Unit for unsupported time mode '+this.timeMode_);}},get timeMode(){return this.timeMode_;},set timeMode(mode){this.timeMode_=mode;this.dispatchChangeEvent();},updateMajorMarkData(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const dt=this.currentDisplayTransform;const idealMajorMarkDistancePix=IDEAL_MAJOR_MARK_DISTANCE_PX*pixelRatio;const idealMajorMarkDistanceWorld=dt.xViewVectorToWorld(idealMajorMarkDistancePix);const majorMarkDistanceWorld=tr.b.math.preferredNumberLargerThanMin(idealMajorMarkDistanceWorld);const firstMajorMark=Math.floor(viewLWorld/majorMarkDistanceWorld)*majorMarkDistanceWorld;this.majorMarkWorldPositions_=[];if(firstMajorMark/majorMarkDistanceWorld>1e15)return;for(let curX=firstMajorMark;curX<viewRWorld;curX+=majorMarkDistanceWorld){this.majorMarkWorldPositions_.push(Math.floor(MAJOR_MARK_ROUNDING_FACTOR*curX)/MAJOR_MARK_ROUNDING_FACTOR);}},drawMajorMarkLines(ctx,viewHeight){ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();for(const majorMark of this.majorMarkWorldPositions_){const x=this.currentDisplayTransform.xWorldToView(majorMark);tr.ui.b.drawLine(ctx,x,0,x,viewHeight);}\nctx.strokeStyle='#ddd';ctx.stroke();ctx.restore();},drawGridLines(ctx,viewLWorld,viewRWorld,viewHeight){if(!this.gridEnabled)return;const dt=this.currentDisplayTransform;let x=this.gridTimebase;ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();while(x<viewRWorld){if(x>=viewLWorld){const vx=Math.floor(dt.xWorldToView(x));tr.ui.b.drawLine(ctx,vx,0,vx,viewHeight);}\nx+=this.gridStep;}\nctx.strokeStyle='rgba(255, 0, 0, 0.25)';ctx.stroke();ctx.restore();},getShiftedSelection(selection,offset){const newSelection=new tr.model.EventSet();for(const event of selection){if(event instanceof tr.model.FlowEvent){if(offset>0){newSelection.push(event.endSlice);}else if(offset<0){newSelection.push(event.startSlice);}else{}\ncontinue;}\nconst track=this.trackForEvent(event);track.addEventNearToProvidedEventToSelection(event,offset,newSelection);}\nif(newSelection.length===0)return undefined;return newSelection;},rebuildEventToTrackMap(){this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.modelTrackContainer_.addEventsToTrackMap(this.eventToTrackMap_);},rebuildContainerToTrackMap(){this.containerToTrackMap.clear();this.modelTrackContainer_.addContainersToTrackMap(this.containerToTrackMap);},trackForEvent(event){return this.eventToTrackMap_[event.guid];}};return{TimelineViewport,};});'use strict';tr.exportTo('tr.c',function(){const BrushingState=tr.ui.b.BrushingState;const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;const Viewport=tr.ui.TimelineViewport;function BrushingStateController(timelineView){tr.b.EventTarget.call(this);this.timelineView_=timelineView;this.currentBrushingState_=new BrushingState();this.onPopState_=this.onPopState_.bind(this);this.historyEnabled_=false;this.selections_={};}\nBrushingStateController.prototype={__proto__:tr.b.EventTarget.prototype,dispatchChangeEvent_(){const e=new tr.b.Event('change',false,false);this.dispatchEvent(e);},get model(){if(!this.timelineView_){return undefined;}\nreturn this.timelineView_.model;},get trackView(){if(!this.timelineView_){return undefined;}\nreturn this.timelineView_.trackView;},get viewport(){if(!this.timelineView_){return undefined;}\nif(!this.timelineView_.trackView){return undefined;}\nreturn this.timelineView_.trackView.viewport;},get historyEnabled(){return this.historyEnabled_;},set historyEnabled(historyEnabled){this.historyEnabled_=!!historyEnabled;if(historyEnabled){window.addEventListener('popstate',this.onPopState_);}else{window.removeEventListener('popstate',this.onPopState_);}},modelWillChange(){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}},modelDidChange(){this.selections_={};this.currentBrushingState_=new BrushingState();this.currentBrushingState_.applyToEventSelectionStates(this.model);const e=new tr.b.Event('model-changed',false,false);this.dispatchEvent(e);this.dispatchChangeEvent_();},onUserInitiatedSelectionChange_(){const selection=this.selection;if(this.historyEnabled){this.selections_[selection.guid]=selection;const state={selection_guid:selection.guid};window.history.pushState(state,document.title);}},onPopState_(e){if(e.state===null)return;const selection=this.selections_[e.state.selection_guid];if(selection){const newState=this.currentBrushingState_.clone();newState.selection=selection;this.currentBrushingState=newState;}\ne.stopPropagation();},get selection(){return this.currentBrushingState_.selection;},get findMatches(){return this.currentBrushingState_.findMatches;},get selectionOfInterest(){return this.currentBrushingState_.selectionOfInterest;},get currentBrushingState(){return this.currentBrushingState_;},set currentBrushingState(newBrushingState){if(newBrushingState.isAppliedToModel){throw new Error('Cannot apply this state, it is applied');}\nconst hasValueChanged=!this.currentBrushingState_.equals(newBrushingState);if(newBrushingState!==this.currentBrushingState_&&!hasValueChanged){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.transferModelOwnershipToClone(newBrushingState);}\nthis.currentBrushingState_=newBrushingState;return;}\nif(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}\nthis.currentBrushingState_=newBrushingState;this.currentBrushingState_.applyToEventSelectionStates(this.model);this.dispatchChangeEvent_();},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const timelineView=this.timelineView_.trackView;if(!timelineView){return new tr.b.Task();}\nreturn timelineView.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);},findTextChangedTo(allPossibleMatches){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.findMatches=allPossibleMatches;this.currentBrushingState=newBrushingState;},findFocusChangedTo(currentFocus){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=currentFocus;this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},findTextCleared(){if(this.xNavStringMarker_!==undefined){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;}\nif(this.guideLineAnnotation_!==undefined){this.model.removeAnnotation(this.guideLineAnnotation_);this.guideLineAnnotation_=undefined;}\nconst newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=new EventSet();newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},uiStateFromString(string){return tr.ui.b.UIState.fromUserFriendlyString(this.model,this.viewport,string);},navToPosition(uiState,showNavLine){this.trackView.navToPosition(uiState,showNavLine);},changeSelectionFromTimeline(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},showScriptControlSelection(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;},changeSelectionFromRequestSelectionChangeEvent(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},changeAnalysisViewRelatedEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisViewRelatedEvents=eventSet;this.currentBrushingState=newBrushingState;},changeAnalysisLinkHoveredEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisLinkHoveredEvents=eventSet;this.currentBrushingState=newBrushingState;},getViewSpecificBrushingState(viewId){return this.currentBrushingState.viewSpecificBrushingStates[viewId];},changeViewSpecificBrushingState(viewId,newState){const oldStates=this.currentBrushingState_.viewSpecificBrushingStates;const newStates={};for(const id in oldStates){newStates[id]=oldStates[id];}\nif(newState===undefined){delete newStates[viewId];}else{newStates[viewId]=newState;}\nconst newBrushingState=this.currentBrushingState_.clone();newBrushingState.viewSpecificBrushingStates=newStates;this.currentBrushingState=newBrushingState;}};BrushingStateController.getControllerForElement=function(element){if(tr.isHeadless){throw new Error('Unsupported');}\nlet currentElement=element;while(currentElement){if(currentElement.brushingStateController){return currentElement.brushingStateController;}\nif(currentElement.parentElement){currentElement=currentElement.parentElement;continue;}\nlet currentNode=currentElement;while(Polymer.dom(currentNode).parentNode){currentNode=Polymer.dom(currentNode).parentNode;}\ncurrentElement=currentNode.host;}\nreturn undefined;};return{BrushingStateController,};});'use strict';Polymer({is:'tr-ui-a-analysis-link',properties:{href:{type:String}},listeners:{'click':'onClicked_','mouseenter':'onMouseEnter_','mouseleave':'onMouseLeave_'},ready(){this.selection_=undefined;},attached(){this.controller_=tr.c.BrushingStateController.getControllerForElement(this);},detached(){this.clearHighlight_();this.controller_=undefined;},set color(c){this.style.color=c;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;Polymer.dom(this).textContent=selection.userFriendlyName;},setSelectionAndContent(selection,opt_textContent){this.selection_=selection;if(opt_textContent){Polymer.dom(this).textContent=opt_textContent;}},getCurrentSelection_(){if(typeof this.selection_==='function'){return this.selection_();}\nreturn this.selection_;},setHighlight_(opt_eventSet){if(this.controller_){this.controller_.changeAnalysisLinkHoveredEvents(opt_eventSet);}},clearHighlight_(opt_eventSet){this.setHighlight_();},onClicked_(clickEvent){if(!this.selection_)return;clickEvent.stopPropagation();const event=new tr.model.RequestSelectionChangeEvent();event.selection=this.getCurrentSelection_();this.dispatchEvent(event);},onMouseEnter_(){this.setHighlight_(this.getCurrentSelection_());},onMouseLeave_(){this.clearHighlight_();}});'use strict';tr.exportTo('tr.ui.b',function(){const TableFormat={};TableFormat.SelectionMode={NONE:0,ROW:1,CELL:2};TableFormat.HighlightStyle={DEFAULT:0,NONE:1,LIGHT:2,DARK:3};TableFormat.ColumnAlignment={LEFT:0,RIGHT:1};return{TableFormat,};});'use strict';(function(){const RIGHT_ARROW=String.fromCharCode(0x25b6);const UNSORTED_ARROW=String.fromCharCode(0x25BF);const ASCENDING_ARROW=String.fromCharCode(0x25B4);const DESCENDING_ARROW=String.fromCharCode(0x25BE);const SelectionMode=tr.ui.b.TableFormat.SelectionMode;const SelectionModeValues=new Set(Object.values(SelectionMode));const HighlightStyle=tr.ui.b.TableFormat.HighlightStyle;const HighlightStyleValues=new Set(Object.values(HighlightStyle));const ColumnAlignment=tr.ui.b.TableFormat.ColumnAlignment;const ColumnAlignmentValues=new Set(Object.values(ColumnAlignment));Polymer({is:'tr-ui-b-table',created(){this.selectionMode_=SelectionMode.NONE;this.rowHighlightStyle_=HighlightStyle.DEFAULT;this.cellHighlightStyle_=HighlightStyle.DEFAULT;this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;this.tableColumns_=[];this.tableRows_=[];this.tableRowsInfo_=new WeakMap();this.tableFooterRows_=[];this.tableFooterRowsInfo_=new WeakMap();this.sortColumnIndex_=undefined;this.sortDescending_=false;this.columnsWithExpandButtons_=[];this.headerCells_=[];this.showHeader_=true;this.emptyValue_=undefined;this.subRowsPropertyName_='subRows';this.customizeTableRowCallback_=undefined;this.defaultExpansionStateCallback_=undefined;this.userCanModifySortOrder_=true;this.computedFontSizePx_=undefined;},ready(){this.$.body.addEventListener('keydown',this.onKeyDown_.bind(this),true);this.$.body.addEventListener('focus',this.onFocus_.bind(this),true);},clear(){this.selectionMode_=SelectionMode.NONE;this.rowHighlightStyle_=HighlightStyle.DEFAULT;this.cellHighlightStyle_=HighlightStyle.DEFAULT;this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;Polymer.dom(this).textContent='';this.tableColumns_=[];this.tableRows_=[];this.tableRowsInfo_=new WeakMap();this.tableFooterRows_=[];this.tableFooterRowsInfo_=new WeakMap();this.sortColumnIndex_=undefined;this.sortDescending_=false;this.columnsWithExpandButtons_=[];this.headerCells_=[];this.showHeader_=true;this.emptyValue_=undefined;this.subRowsPropertyName_='subRows';this.defaultExpansionStateCallback_=undefined;this.userCanModifySortOrder_=true;},set zebra(zebra){if(zebra){this.setAttribute('zebra',true);}else{this.removeAttribute('zebra');}},get zebra(){return this.getAttribute('zebra');},get showHeader(){return this.showHeader_;},set showHeader(showHeader){this.showHeader_=showHeader;this.scheduleRebuildHeaders_();},set subRowsPropertyName(name){this.subRowsPropertyName_=name;},set defaultExpansionStateCallback(cb){this.defaultExpansionStateCallback_=cb;this.scheduleRebuildBody_();},set customizeTableRowCallback(cb){this.customizeTableRowCallback_=cb;this.scheduleRebuildBody_();},get emptyValue(){return this.emptyValue_;},set emptyValue(emptyValue){const previousEmptyValue=this.emptyValue_;this.emptyValue_=emptyValue;if(this.tableRows_.length===0&&emptyValue!==previousEmptyValue){this.scheduleRebuildBody_();}},set tableColumns(columns){let columnsWithExpandButtons=[];for(let i=0;i<columns.length;i++){if(columns[i].showExpandButtons){columnsWithExpandButtons.push(i);}}\nif(columnsWithExpandButtons.length===0){columnsWithExpandButtons=[0];}\nfor(let i=0;i<columns.length;i++){const colInfo=columns[i];if(colInfo.width===undefined)continue;const hasExpandButton=columnsWithExpandButtons.includes(i);const w=colInfo.width;if(w){if(/\\d+px/.test(w)){continue;}else if(/\\d+%/.test(w)){if(hasExpandButton){throw new Error('Columns cannot be %-sized and host '+' an expand button');}}else{throw new Error('Unrecognized width string');}}}\nlet sortIndex=undefined;const currentSortColumn=this.tableColumns[this.sortColumnIndex_];if(currentSortColumn){for(const[i,column]of columns.entries()){if(currentSortColumn.title===column.title){sortIndex=i;break;}}}\nthis.tableColumns_=columns;this.headerCells_=[];this.columnsWithExpandButtons_=columnsWithExpandButtons;this.scheduleRebuildHeaders_();this.sortColumnIndex=sortIndex;this.tableRows=this.tableRows_;},get tableColumns(){return this.tableColumns_;},set tableRows(rows){this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;this.tableRows_=rows;this.tableRowsInfo_=new WeakMap();this.scheduleRebuildBody_();},get tableRows(){return this.tableRows_;},set footerRows(rows){this.tableFooterRows_=rows;this.tableFooterRowsInfo_=new WeakMap();this.scheduleRebuildFooter_();},get footerRows(){return this.tableFooterRows_;},get userCanModifySortOrder(){return this.userCanModifySortOrder_;},set userCanModifySortOrder(userCanModifySortOrder){const newUserCanModifySortOrder=!!userCanModifySortOrder;if(newUserCanModifySortOrder===this.userCanModifySortOrder_){return;}\nthis.userCanModifySortOrder_=newUserCanModifySortOrder;this.scheduleRebuildHeaders_();},set sortColumnIndex(number){if(number===this.sortColumnIndex_)return;if(number!==undefined){if(this.tableColumns_.length<=number){throw new Error('Column number '+number+' is out of bounds.');}\nif(!this.tableColumns_[number].cmp){throw new Error('Column '+number+' does not have a comparator.');}}\nthis.sortColumnIndex_=number;this.updateHeaderArrows_();this.scheduleRebuildBody_();this.dispatchSortingChangedEvent_();},get sortColumnIndex(){return this.sortColumnIndex_;},set sortDescending(value){const newValue=!!value;if(newValue!==this.sortDescending_){this.sortDescending_=newValue;this.updateHeaderArrows_();this.scheduleRebuildBody_();this.dispatchSortingChangedEvent_();}},get sortDescending(){return this.sortDescending_;},updateHeaderArrows_(){for(let i=0;i<this.headerCells_.length;i++){const headerCell=this.headerCells_[i];const isColumnCurrentlySorted=i===this.sortColumnIndex_;if(!this.tableColumns_[i].cmp||(!this.userCanModifySortOrder_&&!isColumnCurrentlySorted)){headerCell.sideContent='';continue;}\nif(!isColumnCurrentlySorted){headerCell.sideContent=UNSORTED_ARROW;headerCell.sideContentDisabled=false;continue;}\nheaderCell.sideContent=this.sortDescending_?DESCENDING_ARROW:ASCENDING_ARROW;headerCell.sideContentDisabled=!this.userCanModifySortOrder_;}},generateHeaderColumns_(){const selectedTableColumnIndex=this.selectedTableColumnIndex;Polymer.dom(this.$.cols).textContent='';for(let i=0;i<this.tableColumns_.length;++i){const colElement=document.createElement('col');if(i===selectedTableColumnIndex){colElement.setAttribute('selected',true);}\nPolymer.dom(this.$.cols).appendChild(colElement);}\nthis.headerCells_=[];Polymer.dom(this.$.head).textContent='';if(!this.showHeader_)return;const tr=this.appendNewElement_(this.$.head,'tr');for(let i=0;i<this.tableColumns_.length;i++){const td=this.appendNewElement_(tr,'td');const headerCell=document.createElement('tr-ui-b-table-header-cell');headerCell.column=this.tableColumns_[i];if(this.tableColumns_[i].cmp){const isColumnCurrentlySorted=i===this.sortColumnIndex_;if(isColumnCurrentlySorted){headerCell.sideContent=this.sortDescending_?DESCENDING_ARROW:ASCENDING_ARROW;if(!this.userCanModifySortOrder_){headerCell.sideContentDisabled=true;}}\nif(this.userCanModifySortOrder_){Polymer.dom(td).classList.add('sensitive');if(!isColumnCurrentlySorted){headerCell.sideContent=UNSORTED_ARROW;}\nheaderCell.tapCallback=this.createSortCallback_(i);}}\nPolymer.dom(td).appendChild(headerCell);this.headerCells_.push(headerCell);}},applySizes_(){if(this.tableRows_.length===0&&!this.showHeader)return;let rowToRemoveSizing;let rowToSize;if(this.showHeader){rowToSize=Polymer.dom(this.$.head).children[0];rowToRemoveSizing=Polymer.dom(this.$.body).children[0];}else{rowToSize=Polymer.dom(this.$.body).children[0];rowToRemoveSizing=Polymer.dom(this.$.head).children[0];}\nfor(let i=0;i<this.tableColumns_.length;i++){if(rowToRemoveSizing&&Polymer.dom(rowToRemoveSizing).children[i]){const tdToRemoveSizing=Polymer.dom(rowToRemoveSizing).children[i];tdToRemoveSizing.style.minWidth='';tdToRemoveSizing.style.width='';}\nconst td=Polymer.dom(rowToSize).children[i];let delta;if(this.columnsWithExpandButtons_.includes(i)){td.style.paddingLeft=this.basicIndentation_+'px';delta=this.basicIndentation_+'px';}else{delta=undefined;}\nfunction calc(base,delta){if(delta){return'calc('+base+' - '+delta+')';}\nreturn base;}\nconst w=this.tableColumns_[i].width;if(w){if(/\\d+px/.test(w)){td.style.minWidth=calc(w,delta);}else if(/\\d+%/.test(w)){td.style.width=w;}else{throw new Error('Unrecognized width string: '+w);}}}},createSortCallback_(columnNumber){return function(){if(!this.userCanModifySortOrder_)return;const previousIndex=this.sortColumnIndex;this.sortColumnIndex=columnNumber;if(previousIndex!==columnNumber){this.sortDescending=false;}else{this.sortDescending=!this.sortDescending;}}.bind(this);},generateTableRowNodes_(tableSection,userRows,rowInfoMap,indentation,lastAddedRow,parentRowInfo){if(this.sortColumnIndex_!==undefined&&tableSection===this.$.body){userRows=userRows.slice();userRows.sort(function(rowA,rowB){let c=this.tableColumns_[this.sortColumnIndex_].cmp(rowA,rowB);if(this.sortDescending_){c=-c;}\nreturn c;}.bind(this));}\nfor(let i=0;i<userRows.length;i++){const userRow=userRows[i];const rowInfo=this.getOrCreateRowInfoFor_(rowInfoMap,userRow,parentRowInfo);const htmlNode=this.getHTMLNodeForRowInfo_(tableSection,rowInfo,rowInfoMap,indentation);if(lastAddedRow===undefined){Polymer.dom(tableSection).insertBefore(htmlNode,Polymer.dom(tableSection).firstChild);}else{const nextSiblingOfLastAdded=Polymer.dom(lastAddedRow).nextSibling;Polymer.dom(tableSection).insertBefore(htmlNode,nextSiblingOfLastAdded);}\nlastAddedRow=htmlNode;if(!rowInfo.isExpanded)continue;lastAddedRow=this.generateTableRowNodes_(tableSection,userRow[this.subRowsPropertyName_],rowInfoMap,indentation+1,lastAddedRow,rowInfo);}\nreturn lastAddedRow;},getOrCreateRowInfoFor_(rowInfoMap,userRow,parentRowInfo){let rowInfo=undefined;if(rowInfoMap.has(userRow)){rowInfo=rowInfoMap.get(userRow);}else{rowInfo={userRow,htmlNode:undefined,parentRowInfo};rowInfoMap.set(userRow,rowInfo);}\nrowInfo.isExpanded=this.getExpandedForUserRow_(userRow);return rowInfo;},customizeTableRow_(userRow,trElement){if(!this.customizeTableRowCallback_)return;this.customizeTableRowCallback_(userRow,trElement);},get basicIndentation_(){if(this.computedFontSizePx_===undefined){this.computedFontSizePx_=parseInt(getComputedStyle(this).fontSize)||16;}\nreturn this.computedFontSizePx_-2;},getHTMLNodeForRowInfo_(tableSection,rowInfo,rowInfoMap,indentation){if(rowInfo.htmlNode){this.customizeTableRow_(rowInfo.userRow,rowInfo.htmlNode);return rowInfo.htmlNode;}\nconst INDENT_SPACE=indentation*16;const INDENT_SPACE_NO_BUTTON=indentation*16+this.basicIndentation_;const trElement=this.ownerDocument.createElement('tr');rowInfo.htmlNode=trElement;rowInfo.indentation=indentation;trElement.rowInfo=rowInfo;this.customizeTableRow_(rowInfo.userRow,trElement);const isBodyRow=tableSection===this.$.body;const isExpandableRow=rowInfo.userRow[this.subRowsPropertyName_]&&rowInfo.userRow[this.subRowsPropertyName_].length;for(let i=0;i<this.tableColumns_.length;){const td=this.appendNewElement_(trElement,'td');td.columnIndex=i;const column=this.tableColumns_[i];const value=column.value(rowInfo.userRow);const colSpan=column.colSpan?column.colSpan:1;td.style.colSpan=colSpan;switch(column.align){case undefined:case ColumnAlignment.LEFT:break;case ColumnAlignment.RIGHT:td.style.textAlign='right';break;default:throw new Error('Invalid alignment of column at index='+i+': '+column.align);}\nif(this.doesColumnIndexSupportSelection(i)){Polymer.dom(td).classList.add('supports-selection');}\nif(this.columnsWithExpandButtons_.includes(i)){if(rowInfo.userRow[this.subRowsPropertyName_]&&rowInfo.userRow[this.subRowsPropertyName_].length>0){td.style.paddingLeft=INDENT_SPACE+'px';td.style.display='flex';const expandButton=this.appendNewElement_(td,'expand-button');Polymer.dom(expandButton).textContent=RIGHT_ARROW;if(rowInfo.isExpanded){Polymer.dom(expandButton).classList.add('button-expanded');}}else{td.style.paddingLeft=INDENT_SPACE_NO_BUTTON+'px';}}\nif(value!==undefined){Polymer.dom(td).appendChild(tr.ui.b.asHTMLOrTextNode(value,this.ownerDocument));}\ntd.addEventListener('click',function(i,clickEvent){clickEvent.preventDefault();if(!isBodyRow&&!isExpandableRow)return;clickEvent.stopPropagation();if(clickEvent.target.tagName==='EXPAND-BUTTON'){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);return;}\nif(isBodyRow&&this.selectionMode_!==SelectionMode.NONE){let shouldSelect=false;let shouldFocus=false;switch(this.selectionMode_){case SelectionMode.ROW:shouldSelect=this.selectedTableRowInfo_!==rowInfo;shouldFocus=true;break;case SelectionMode.CELL:if(this.doesColumnIndexSupportSelection(i)){shouldSelect=this.selectedTableRowInfo_!==rowInfo||this.selectedColumnIndex_!==i;shouldFocus=true;}\nbreak;default:throw new Error('Invalid selection mode '+\nthis.selectionMode_);}\nif(shouldFocus){this.focus();}\nif(shouldSelect){this.didTableRowInfoGetClicked_(rowInfo,i);return;}}\nif(isExpandableRow){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);}}.bind(this,i));if(isBodyRow){td.addEventListener('dblclick',function(i,e){e.stopPropagation();this.dispatchStepIntoEvent_(rowInfo,i);}.bind(this,i));}\ni+=colSpan;}\nreturn rowInfo.htmlNode;},removeSubNodes_(tableSection,rowInfo,rowInfoMap){if(rowInfo.userRow[this.subRowsPropertyName_]===undefined)return;for(let i=0;i<rowInfo.userRow[this.subRowsPropertyName_].length;i++){const subRow=rowInfo.userRow[this.subRowsPropertyName_][i];const subRowInfo=rowInfoMap.get(subRow);if(!subRowInfo)continue;const subNode=subRowInfo.htmlNode;if(subNode&&Polymer.dom(subNode).parentNode===tableSection){Polymer.dom(tableSection).removeChild(subNode);this.removeSubNodes_(tableSection,subRowInfo,rowInfoMap);}}},scheduleRebuildHeaders_(){this.headerDirty_=true;this.scheduleRebuild_();},scheduleRebuildBody_(){this.bodyDirty_=true;this.scheduleRebuild_();},scheduleRebuildFooter_(){this.footerDirty_=true;this.scheduleRebuild_();},scheduleRebuild_(){if(this.rebuildPending_)return;this.rebuildPending_=true;setTimeout(function(){this.rebuildPending_=false;this.rebuild();}.bind(this),0);},rebuildIfNeeded_(){this.rebuild();},rebuild(){const wasBodyOrHeaderDirty=this.headerDirty_||this.bodyDirty_;if(this.headerDirty_){this.generateHeaderColumns_();this.headerDirty_=false;}\nif(this.bodyDirty_){Polymer.dom(this.$.body).textContent='';this.generateTableRowNodes_(this.$.body,this.tableRows_,this.tableRowsInfo_,0,undefined,undefined);if(this.tableRows_.length===0&&this.emptyValue_!==undefined){const trElement=this.ownerDocument.createElement('tr');Polymer.dom(this.$.body).appendChild(trElement);Polymer.dom(trElement).classList.add('empty-row');const td=this.ownerDocument.createElement('td');Polymer.dom(trElement).appendChild(td);td.colSpan=this.tableColumns_.length;const emptyValue=this.emptyValue_;Polymer.dom(td).appendChild(tr.ui.b.asHTMLOrTextNode(emptyValue,this.ownerDocument));}\nthis.bodyDirty_=false;}\nif(wasBodyOrHeaderDirty)this.applySizes_();if(this.footerDirty_){Polymer.dom(this.$.foot).textContent='';this.generateTableRowNodes_(this.$.foot,this.tableFooterRows_,this.tableFooterRowsInfo_,0,undefined,undefined);if(this.tableFooterRowsInfo_.length){Polymer.dom(this.$.body).classList.add('has-footer');}else{Polymer.dom(this.$.body).classList.remove('has-footer');}\nthis.footerDirty_=false;}},appendNewElement_(parent,tagName){const element=parent.ownerDocument.createElement(tagName);Polymer.dom(parent).appendChild(element);return element;},getExpandedForTableRow(userRow){this.rebuildIfNeeded_();const rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nreturn rowInfo.isExpanded;},getExpandedForUserRow_(userRow){if(userRow[this.subRowsPropertyName_]===undefined){return false;}\nif(userRow[this.subRowsPropertyName_].length===0){return false;}\nif(userRow.isExpanded){return true;}\nif((userRow.isExpanded!==undefined)&&(userRow.isExpanded===false)){return false;}\nconst rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo&&rowInfo.isExpanded){return true;}\nif(this.defaultExpansionStateCallback_===undefined){return false;}\nlet parentUserRow=undefined;if(rowInfo&&rowInfo.parentRowInfo){parentUserRow=rowInfo.parentRowInfo.userRow;}\nreturn this.defaultExpansionStateCallback_(userRow,parentUserRow);},setExpandedForTableRow(userRow,expanded){this.rebuildIfNeeded_();const rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nreturn this.setExpandedForUserRow_(this.$.body,this.tableRowsInfo_,userRow,expanded);},setExpandedForUserRow_(tableSection,rowInfoMap,userRow,expanded){this.rebuildIfNeeded_();const rowInfo=rowInfoMap.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nconst wasExpanded=rowInfo.isExpanded;rowInfo.isExpanded=!!expanded;if(rowInfo.htmlNode===undefined)return;if(rowInfo.htmlNode.parentElement!==tableSection){return;}\nconst expandButton=Polymer.dom(rowInfo.htmlNode).querySelector('expand-button');if(rowInfo.isExpanded){Polymer.dom(expandButton).classList.add('button-expanded');const lastAddedRow=rowInfo.htmlNode;if(rowInfo.userRow[this.subRowsPropertyName_]){this.generateTableRowNodes_(tableSection,rowInfo.userRow[this.subRowsPropertyName_],rowInfoMap,rowInfo.indentation+1,lastAddedRow,rowInfo);}}else{Polymer.dom(expandButton).classList.remove('button-expanded');this.removeSubNodes_(tableSection,rowInfo,rowInfoMap);}\nif(wasExpanded!==rowInfo.isExpanded){const e=new tr.b.Event('row-expanded-changed');e.row=rowInfo.userRow;this.dispatchEvent(e);}\nthis.maybeUpdateSelectedRow_();},get selectionMode(){return this.selectionMode_;},set selectionMode(selectionMode){if(!SelectionModeValues.has(selectionMode)){throw new Error('Invalid selection mode '+selectionMode);}\nthis.rebuildIfNeeded_();this.selectionMode_=selectionMode;this.didSelectionStateChange_();},get rowHighlightStyle(){return this.rowHighlightStyle_;},set rowHighlightStyle(rowHighlightStyle){if(!HighlightStyleValues.has(rowHighlightStyle)){throw new Error('Invalid row highlight style '+rowHighlightStyle);}\nthis.rebuildIfNeeded_();this.rowHighlightStyle_=rowHighlightStyle;this.didSelectionStateChange_();},get resolvedRowHighlightStyle(){if(this.rowHighlightStyle_!==HighlightStyle.DEFAULT){return this.rowHighlightStyle_;}\nswitch(this.selectionMode_){case SelectionMode.NONE:return HighlightStyle.NONE;case SelectionMode.ROW:return HighlightStyle.DARK;case SelectionMode.CELL:return HighlightStyle.LIGHT;default:throw new Error('Invalid selection mode '+selectionMode);}},get cellHighlightStyle(){return this.cellHighlightStyle_;},set cellHighlightStyle(cellHighlightStyle){if(!HighlightStyleValues.has(cellHighlightStyle)){throw new Error('Invalid cell highlight style '+cellHighlightStyle);}\nthis.rebuildIfNeeded_();this.cellHighlightStyle_=cellHighlightStyle;this.didSelectionStateChange_();},get resolvedCellHighlightStyle(){if(this.cellHighlightStyle_!==HighlightStyle.DEFAULT){return this.cellHighlightStyle_;}\nswitch(this.selectionMode_){case SelectionMode.NONE:case SelectionMode.ROW:return HighlightStyle.NONE;case SelectionMode.CELL:return HighlightStyle.DARK;default:throw new Error('Invalid selection mode '+selectionMode);}},setHighlightStyle_(highlightAttribute,resolvedHighlightStyle){switch(resolvedHighlightStyle){case HighlightStyle.NONE:Polymer.dom(this.$.body).removeAttribute(highlightAttribute);break;case HighlightStyle.LIGHT:Polymer.dom(this.$.body).setAttribute(highlightAttribute,'light');break;case HighlightStyle.DARK:Polymer.dom(this.$.body).setAttribute(highlightAttribute,'dark');break;default:throw new Error('Invalid resolved highlight style '+\nresolvedHighlightStyle);}},didSelectionStateChange_(){this.setHighlightStyle_('row-highlight-style',this.resolvedRowHighlightStyle);this.setHighlightStyle_('cell-highlight-style',this.resolvedCellHighlightStyle);this.removeSelectedState_();switch(this.selectionMode_){case SelectionMode.ROW:Polymer.dom(this.$.body).setAttribute('selection-mode','row');Polymer.dom(this.$.body).setAttribute('tabindex',0);this.selectedColumnIndex_=undefined;break;case SelectionMode.CELL:Polymer.dom(this.$.body).setAttribute('selection-mode','cell');Polymer.dom(this.$.body).setAttribute('tabindex',0);if(this.selectedTableRowInfo_&&this.selectedColumnIndex_===undefined){const i=this.getFirstSelectableColumnIndex_();if(i===-1){this.selectedTableRowInfo_=undefined;}else{this.selectedColumnIndex_=i;}}\nbreak;case SelectionMode.NONE:Polymer.dom(this.$.body).removeAttribute('selection-mode');Polymer.dom(this.$.body).removeAttribute('tabindex');this.$.body.blur();this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;break;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\nthis.maybeUpdateSelectedRow_();},maybeUpdateSelectedRow_(){if(this.selectedTableRowInfo_===undefined)return;function isVisible(rowInfo){if(!rowInfo.htmlNode)return false;return!!rowInfo.htmlNode.parentElement;}\nif(isVisible(this.selectedTableRowInfo_)){this.updateSelectedState_();return;}\nthis.removeSelectedState_();let curRowInfo=this.selectedTableRowInfo_;while(curRowInfo&&!isVisible(curRowInfo)){curRowInfo=curRowInfo.parentRowInfo;}\nthis.selectedTableRowInfo_=curRowInfo;if(this.selectedTableRowInfo_){this.updateSelectedState_();}else{this.selectedColumnIndex_=undefined;}},didTableRowInfoGetClicked_(rowInfo,columnIndex){switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.CELL:if(!this.doesColumnIndexSupportSelection(columnIndex)){return;}\nif(this.selectedColumnIndex!==columnIndex){this.selectedColumnIndex=columnIndex;}\ncase SelectionMode.ROW:if(this.selectedTableRowInfo_!==rowInfo){this.selectedTableRow=rowInfo.userRow;}}},dispatchStepIntoEvent_(rowInfo,columnIndex){const e=new tr.b.Event('step-into');e.tableRow=rowInfo.userRow;e.tableColumn=this.tableColumns_[columnIndex];e.columnIndex=columnIndex;this.dispatchEvent(e);},get selectedCell(){const row=this.selectedTableRow;const columnIndex=this.selectedColumnIndex;if(row===undefined||columnIndex===undefined||this.tableColumns_.length<=columnIndex){return undefined;}\nconst column=this.tableColumns_[columnIndex];return{row,column,value:column.value(row)};},get selectedTableColumnIndex(){const cols=Polymer.dom(this.$.cols).children;for(let i=0;i<cols.length;++i){if(cols[i].getAttribute('selected')){return i;}}\nreturn undefined;},set selectedTableColumnIndex(selectedIndex){const cols=Polymer.dom(this.$.cols).children;for(let i=0;i<cols.length;++i){if(i===selectedIndex){cols[i].setAttribute('selected',true);}else{cols[i].removeAttribute('selected');}}},get selectedTableRow(){if(!this.selectedTableRowInfo_)return undefined;return this.selectedTableRowInfo_.userRow;},set selectedTableRow(userRow){this.rebuildIfNeeded_();if(this.selectionMode_===SelectionMode.NONE){throw new Error('Selection is off.');}\nlet rowInfo;if(userRow===undefined){rowInfo=undefined;}else{rowInfo=this.tableRowsInfo_.get(userRow);if(!rowInfo){throw new Error('Row has not been seen, must expand its parents.');}}\nconst e=this.prepareToChangeSelection_();if(!rowInfo){this.selectedColumnIndex_=undefined;}else{switch(this.selectionMode_){case SelectionMode.ROW:this.selectedColumnIndex_=undefined;break;case SelectionMode.CELL:if(this.selectedColumnIndex_===undefined){const i=this.getFirstSelectableColumnIndex_();if(i===-1){throw new Error('Cannot find a selectable column.');}\nthis.selectedColumnIndex_=i;}\nbreak;default:throw new Error('Invalid selection mode '+this.selectionMode_);}}\nthis.selectedTableRowInfo_=rowInfo;this.updateSelectedState_();this.dispatchEvent(e);},prepareToChangeSelection_(){const e=new tr.b.Event('selection-changed');const previousSelectedRowInfo=this.selectedTableRowInfo_;if(previousSelectedRowInfo){e.previousSelectedTableRow=previousSelectedRowInfo.userRow;}else{e.previousSelectedTableRow=undefined;}\nthis.removeSelectedState_();return e;},removeSelectedState_(){this.setSelectedState_(false);},updateSelectedState_(){this.setSelectedState_(true);},setSelectedState_(select){if(this.selectedTableRowInfo_===undefined)return;const rowNode=this.selectedTableRowInfo_.htmlNode;if(select){Polymer.dom(rowNode).setAttribute('selected',true);}else{Polymer.dom(rowNode).removeAttribute('selected');}\nconst cellNode=Polymer.dom(rowNode).children[this.selectedColumnIndex_];if(!cellNode)return;if(select){Polymer.dom(cellNode).setAttribute('selected',true);}else{Polymer.dom(cellNode).removeAttribute('selected');}},doesColumnIndexSupportSelection(columnIndex){const columnInfo=this.tableColumns_[columnIndex];const scs=columnInfo.supportsCellSelection;if(scs===false)return false;return true;},getFirstSelectableColumnIndex_(){for(let i=0;i<this.tableColumns_.length;i++){if(this.doesColumnIndexSupportSelection(i)){return i;}}\nreturn-1;},getSelectableNodeGivenTableRowNode_(htmlNode){switch(this.selectionMode_){case SelectionMode.ROW:return htmlNode;case SelectionMode.CELL:return Polymer.dom(htmlNode).children[this.selectedColumnIndex_];default:throw new Error('Invalid selection mode '+this.selectionMode_);}},get selectedColumnIndex(){if(this.selectionMode_!==SelectionMode.CELL){return undefined;}\nreturn this.selectedColumnIndex_;},set selectedColumnIndex(selectedColumnIndex){this.rebuildIfNeeded_();if(this.selectionMode_===SelectionMode.NONE){throw new Error('Selection is off.');}\nif(selectedColumnIndex<0||selectedColumnIndex>=this.tableColumns_.length){throw new Error('Invalid index');}\nif(!this.doesColumnIndexSupportSelection(selectedColumnIndex)){throw new Error('Selection is not supported on this column');}\nconst e=this.prepareToChangeSelection_();if(this.selectedColumnIndex_===undefined){this.selectedTableRowInfo_=undefined;}else if(!this.selectedTableRowInfo_){if(this.tableRows_.length===0){throw new Error('No available row to be selected');}\nthis.selectedTableRowInfo_=this.tableRowsInfo_.get(this.tableRows_[0]);}\nthis.selectedColumnIndex_=selectedColumnIndex;this.updateSelectedState_();this.dispatchEvent(e);},onKeyDown_(e){if(this.selectionMode_===SelectionMode.NONE)return;const CODE_TO_COMMAND_NAMES={13:'ENTER',32:'SPACE',37:'ARROW_LEFT',38:'ARROW_UP',39:'ARROW_RIGHT',40:'ARROW_DOWN'};const cmdName=CODE_TO_COMMAND_NAMES[e.keyCode];if(cmdName===undefined)return;e.stopPropagation();e.preventDefault();this.performKeyCommand_(cmdName);},onFocus_(e){if(this.selectionMode_===SelectionMode.NONE||this.selectedTableRow||this.tableRows_.length===0){return;}\nif(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\nthis.selectedTableRow=this.tableRows_[0];},focus(){this.$.body.focus();this.onFocus_();},blur(){this.$.body.blur();},get isFocused(){return this.root.activeElement===this.$.body;},performKeyCommand_(cmdName){this.rebuildIfNeeded_();switch(cmdName){case'ARROW_UP':this.selectPreviousOrFirstRowIfPossible_();return;case'ARROW_DOWN':this.selectNextOrFirstRowIfPossible_();return;case'ARROW_RIGHT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.expandRowAndSelectChildRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheRightIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\ncase'ARROW_LEFT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.collapseRowOrSelectParentRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheLeftIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\ncase'SPACE':this.toggleRowExpansionStateIfPossible_();return;case'ENTER':this.stepIntoSelectionIfPossible_();return;default:throw new Error('Unrecognized command '+cmdName);}},selectPreviousOrFirstRowIfPossible_(){const prev=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.previousElementSibling:this.$.body.firstChild;if(!prev)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\ntr.ui.b.scrollIntoViewIfNeeded(prev);this.selectedTableRow=prev.rowInfo.userRow;},selectNextOrFirstRowIfPossible_(){this.getFirstSelectableColumnIndex_;const next=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.nextElementSibling:this.$.body.firstChild;if(!next)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\ntr.ui.b.scrollIntoViewIfNeeded(next);this.selectedTableRow=next.rowInfo.userRow;},expandRowAndSelectChildRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}\nif(!selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,true);}\nthis.selectedTableRow=selectedRowInfo.htmlNode.nextElementSibling.rowInfo.userRow;},collapseRowOrSelectParentRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo)return;if(selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,false);}else{const parentRowInfo=selectedRowInfo.parentRowInfo;if(parentRowInfo){this.selectedTableRow=parentRowInfo.userRow;}}},selectNextSelectableCellToTheRightIfPossible_(){if(!this.selectedTableRowInfo_||this.selectedColumnIndex_===undefined){return;}\nfor(let i=this.selectedColumnIndex_+1;i<this.tableColumns_.length;i++){if(this.doesColumnIndexSupportSelection(i)){this.selectedColumnIndex=i;return;}}},selectNextSelectableCellToTheLeftIfPossible_(){if(!this.selectedTableRowInfo_||this.selectedColumnIndex_===undefined){return;}\nfor(let i=this.selectedColumnIndex_-1;i>=0;i--){if(this.doesColumnIndexSupportSelection(i)){this.selectedColumnIndex=i;return;}}},toggleRowExpansionStateIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}\nthis.setExpandedForTableRow(selectedRowInfo.userRow,!selectedRowInfo.isExpanded);},stepIntoSelectionIfPossible_(){if(!this.selectedTableRowInfo_)return;this.dispatchStepIntoEvent_(this.selectedTableRowInfo_,this.selectedColumnIndex_);},dispatchSortingChangedEvent_(){const e=new tr.b.Event('sort-column-changed');e.sortColumnIndex=this.sortColumnIndex_;e.sortDescending=this.sortDescending_;this.dispatchEvent(e);}});})();'use strict';const ColumnAlignment=tr.ui.b.TableFormat.ColumnAlignment;Polymer({is:'tr-ui-b-table-header-cell',created(){this.tapCallback_=undefined;this.cellTitle_='';this.align_=undefined;this.selectable_=false;this.column_=undefined;},ready(){this.addEventListener('click',this.onTap_.bind(this));},set column(column){this.column_=column;this.align=column.align;this.cellTitle=column.title;},get column(){return this.column_;},set cellTitle(value){this.cellTitle_=value;const titleNode=tr.ui.b.asHTMLOrTextNode(this.cellTitle_,this.ownerDocument);this.$.title.innerText='';Polymer.dom(this.$.title).appendChild(titleNode);},get cellTitle(){return this.cellTitle_;},set align(align){switch(align){case undefined:case ColumnAlignment.LEFT:this.style.justifyContent='';break;case ColumnAlignment.RIGHT:this.style.justifyContent='flex-end';break;default:throw new Error('Invalid alignment of column (title=\\''+\nthis.cellTitle_+'\\'): '+align);}\nthis.align_=align;},get align(){return this.align_;},clearSideContent(){Polymer.dom(this.$.side).textContent='';},set sideContent(content){Polymer.dom(this.$.side).textContent=content;this.$.side.style.display=content?'inline':'none';},get sideContent(){return Polymer.dom(this.$.side).textContent;},set sideContentDisabled(sideContentDisabled){this.$.side.classList.toggle('disabled',sideContentDisabled);},get sideContentDisabled(){return this.$.side.classList.contains('disabled');},set tapCallback(callback){this.style.cursor='pointer';this.tapCallback_=callback;},get tapCallback(){return this.tapCallback_;},onTap_(){if(this.tapCallback_){this.tapCallback_();}}});'use strict';tr.exportTo('tr.b.math',function(){class RunningStatistics{constructor(){this.mean_=0;this.count_=0;this.max_=-Infinity;this.min_=Infinity;this.sum_=0;this.variance_=0;this.meanlogs_=0;}\nget count(){return this.count_;}\nget geometricMean(){if(this.meanlogs_===undefined)return 0;return Math.exp(this.meanlogs_);}\nget mean(){if(this.count_===0)return undefined;return this.mean_;}\nget max(){return this.max_;}\nget min(){return this.min_;}\nget sum(){return this.sum_;}\nget variance(){if(this.count_===0)return undefined;if(this.count_===1)return 0;return this.variance_/(this.count_-1);}\nget stddev(){if(this.count_===0)return undefined;return Math.sqrt(this.variance);}\nadd(x){this.count_++;this.max_=Math.max(this.max_,x);this.min_=Math.min(this.min_,x);this.sum_+=x;if(x<=0){this.meanlogs_=undefined;}else if(this.meanlogs_!==undefined){this.meanlogs_+=(Math.log(Math.abs(x))-this.meanlogs_)/this.count;}\nif(this.count_===1){this.mean_=x;this.variance_=0;}else{const oldMean=this.mean_;const oldVariance=this.variance_;if(oldMean===Infinity||oldMean===-Infinity){this.mean_=this.sum_/this.count_;}else{this.mean_=oldMean+(x-oldMean)/this.count_;}\nthis.variance_=oldVariance+(x-oldMean)*(x-this.mean_);}}\nmerge(other){const result=new RunningStatistics();result.count_=this.count_+other.count_;result.sum_=this.sum_+other.sum_;result.min_=Math.min(this.min_,other.min_);result.max_=Math.max(this.max_,other.max_);if(result.count===0){result.mean_=0;result.variance_=0;result.meanlogs_=0;}else{result.mean_=result.sum/result.count;const deltaMean=(this.mean||0)-(other.mean||0);result.variance_=this.variance_+other.variance_+\n(this.count*other.count*deltaMean*deltaMean/result.count);if(this.meanlogs_===undefined||other.meanlogs_===undefined){result.meanlogs_=undefined;}else{result.meanlogs_=(this.count*this.meanlogs_+\nother.count*other.meanlogs_)/result.count;}}\nreturn result;}\ntruncate(unit){this.max_=unit.truncate(this.max_);if(this.meanlogs_!==undefined){const formatted=unit.format(this.geometricMean);let lo=1;let hi=16;while(lo<hi-1){const digits=parseInt((lo+hi)/2);const test=tr.b.math.truncate(this.meanlogs_,digits);if(formatted===unit.format(Math.exp(test))){hi=digits;}else{lo=digits;}}\nconst test=tr.b.math.truncate(this.meanlogs_,lo);if(formatted===unit.format(Math.exp(test))){this.meanlogs_=test;}else{this.meanlogs_=tr.b.math.truncate(this.meanlogs_,hi);}}\nthis.mean_=unit.truncate(this.mean_);this.min_=unit.truncate(this.min_);this.sum_=unit.truncate(this.sum_);this.variance_=unit.truncate(this.variance_);}\nasDict(){if(!this.count){return[];}\nreturn[this.count_,this.max_,this.meanlogs_,this.mean_,this.min_,this.sum_,this.variance_,];}\nstatic fromDict(dict){const result=new RunningStatistics();if(dict.length!==7){return result;}\n[result.count_,result.max_,result.meanlogs_,result.mean_,result.min_,result.sum_,result.variance_,]=dict;return result;}}\nreturn{RunningStatistics,};});'use strict';tr.exportTo('tr.v.d',function(){class Diagnostic{constructor(){this.guid_=undefined;}\nclone(){return new this.constructor();}\ncanAddDiagnostic(otherDiagnostic){return false;}\naddDiagnostic(otherDiagnostic){throw new Error('Abstract virtual method: subclasses must override '+'this method if they override canAddDiagnostic');}\nget guid(){if(this.guid_===undefined){this.guid_=tr.b.GUID.allocateUUID4();}\nreturn this.guid_;}\nset guid(guid){if(this.guid_!==undefined){throw new Error('Cannot reset guid');}\nthis.guid_=guid;}\nget hasGuid(){return this.guid_!==undefined;}\nasDictOrReference(){if(this.guid_!==undefined){return this.guid_;}\nreturn this.asDict();}\nasDict(){const result={type:this.constructor.name};if(this.guid_!==undefined){result.guid=this.guid_;}\nthis.asDictInto_(result);return result;}\nasDictInto_(d){throw new Error('Abstract virtual method: subclasses must override '+'this method if they override canAddDiagnostic');}\nstatic fromDict(d){const typeInfo=Diagnostic.findTypeInfoWithName(d.type);if(!typeInfo){throw new Error('Unrecognized diagnostic type: '+d.type);}\nconst diagnostic=typeInfo.constructor.fromDict(d);if(d.guid!==undefined)diagnostic.guid=d.guid;return diagnostic;}\nstatic deserialize(type,d,deserializer){const typeInfo=Diagnostic.findTypeInfoWithName(type);if(!typeInfo){throw new Error('Unrecognized diagnostic type: '+type);}\nreturn typeInfo.constructor.deserialize(d,deserializer);}}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Diagnostic;tr.b.decorateExtensionRegistry(Diagnostic,options);Diagnostic.addEventListener('will-register',function(e){const constructor=e.typeInfo.constructor;if(!(constructor.deserialize instanceof Function)||(constructor.deserialize===Diagnostic.deserialize)||(constructor.deserialize.length!==2)){throw new Error(`Please define ${constructor.name}.deserialize(data, deserializer)`);}\nif(!(constructor.fromDict instanceof Function)||(constructor.fromDict===Diagnostic.fromDict)||(constructor.fromDict.length!==1)){throw new Error(`Please define ${constructor.name}.fromDict(d)`);}\nif(!(constructor.prototype.serialize instanceof Function)||(constructor.prototype.serialize===Diagnostic.prototype.serialize)||(constructor.prototype.serialize.length!==1)){throw new Error(`Please define ${constructor.name}.serialize(serializer)`);}});return{Diagnostic,};});'use strict';tr.exportTo('tr.v.d',function(){class Breakdown extends tr.v.d.Diagnostic{constructor(){super();this.values_=new Map();this.colorScheme='';}\ntruncate(unit){for(const[name,value]of this){this.values_.set(name,unit.truncate(value));}}\nclone(){const clone=new Breakdown();clone.colorScheme=this.colorScheme;clone.addDiagnostic(this);return clone;}\nequals(other){if(this.colorScheme!==other.colorScheme)return false;if(this.values_.size!==other.values_.size)return false;for(const[k,v]of this){if(v!==other.get(k))return false;}\nreturn true;}\ncanAddDiagnostic(otherDiagnostic){return((otherDiagnostic instanceof Breakdown)&&(otherDiagnostic.colorScheme===this.colorScheme));}\naddDiagnostic(otherDiagnostic){for(const[name,value]of otherDiagnostic){this.set(name,this.get(name)+value);}\nreturn this;}\nset(name,value){if(typeof name!=='string'||typeof value!=='number'){throw new Error('Breakdown maps from strings to numbers');}\nthis.values_.set(name,value);}\nget(name){return this.values_.get(name)||0;}*[Symbol.iterator](){for(const pair of this.values_){yield pair;}}\nget size(){return this.values_.size;}\nserialize(serializer){const keys=[...this.values_.keys()];keys.sort();return[serializer.getOrAllocateId(this.colorScheme),serializer.getOrAllocateId(keys.map(k=>serializer.getOrAllocateId(k))),...keys.map(k=>this.get(k)),];}\nasDictInto_(d){d.values={};for(const[name,value]of this){d.values[name]=tr.b.numberToJson(value);}\nif(this.colorScheme){d.colorScheme=this.colorScheme;}}\nstatic fromEntries(entries){const breakdown=new Breakdown();for(const[name,value]of entries){breakdown.set(name,value);}\nreturn breakdown;}\nstatic deserialize(data,deserializer){const breakdown=new Breakdown();breakdown.colorScheme=deserializer.getObject(data[0]);const keys=deserializer.getObject(data[1]);for(let i=0;i<keys.length;++i){breakdown.set(deserializer.getObject(keys[i]),tr.b.numberFromJson(data[i+2]));}\nreturn breakdown;}\nstatic fromDict(d){const breakdown=new Breakdown();for(const[name,value]of Object.entries(d.values)){breakdown.set(name,tr.b.numberFromJson(value));}\nif(d.colorScheme){breakdown.colorScheme=d.colorScheme;}\nreturn breakdown;}}\ntr.v.d.Diagnostic.register(Breakdown,{elementName:'tr-v-ui-breakdown-span'});return{Breakdown,};});'use strict';tr.exportTo('tr.v.d',function(){class CollectedRelatedEventSet extends tr.v.d.Diagnostic{constructor(){super();this.eventSetsByCanonicalUrl_=new Map();}\nasDictInto_(d){d.events={};for(const[canonicalUrl,eventSet]of this){d.events[canonicalUrl]=[];for(const event of eventSet){d.events[canonicalUrl].push({stableId:event.stableId,title:event.title,start:event.start,duration:event.duration});}}}\nstatic deserialize(events,deserializer){return CollectedRelatedEventSet.fromDict({events});}\nserialize(serializer){const d={};this.asDictInto(d);return d.events;}\nstatic fromDict(d){const result=new CollectedRelatedEventSet();for(const[canonicalUrl,events]of Object.entries(d.events)){result.eventSetsByCanonicalUrl_.set(canonicalUrl,events.map(e=>new tr.v.d.EventRef(e)));}\nreturn result;}\nget size(){return this.eventSetsByCanonicalUrl_.size;}\nget(canonicalUrl){return this.eventSetsByCanonicalUrl_.get(canonicalUrl);}*[Symbol.iterator](){for(const[canonicalUrl,eventSet]of this.eventSetsByCanonicalUrl_){yield[canonicalUrl,eventSet];}}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof tr.v.d.RelatedEventSet||otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet;}\naddEventSetForCanonicalUrl(canonicalUrl,events){let myEventSet=this.eventSetsByCanonicalUrl_.get(canonicalUrl);if(myEventSet===undefined){myEventSet=new Set();this.eventSetsByCanonicalUrl_.set(canonicalUrl,myEventSet);}\nfor(const event of events){myEventSet.add(event);}}\naddDiagnostic(otherDiagnostic){if(otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet){for(const[canonicalUrl,otherEventSet]of otherDiagnostic){this.addEventSetForCanonicalUrl(canonicalUrl,otherEventSet);}\nreturn;}\nif(!otherDiagnostic.canonicalUrl)return;this.addEventSetForCanonicalUrl(otherDiagnostic.canonicalUrl,otherDiagnostic);}}\ntr.v.d.Diagnostic.register(CollectedRelatedEventSet,{elementName:'tr-v-ui-collected-related-event-set-span'});return{CollectedRelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class DateRange extends tr.v.d.Diagnostic{constructor(ms){super();this.range_=new tr.b.math.Range();this.range_.addValue(ms);}\nget minTimestamp(){return this.range_.min;}\nget maxTimestamp(){return this.range_.max;}\nget minDate(){return new Date(this.range_.min);}\nget maxDate(){return new Date(this.range_.max);}\nget durationMs(){return this.range_.duration;}\nclone(){const clone=new tr.v.d.DateRange(this.range_.min);clone.addDiagnostic(this);return clone;}\nequals(other){if(!(other instanceof DateRange))return false;return this.range_.equals(other.range_);}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof DateRange;}\naddDiagnostic(other){this.range_.addRange(other.range_);}\ntoString(){const minDate=tr.b.formatDate(this.minDate);if(this.durationMs===0)return minDate;const maxDate=tr.b.formatDate(this.maxDate);return`${minDate} - ${maxDate}`;}\nserialize(serializer){if(this.durationMs===0)return this.range_.min;return[this.range_.min,this.range_.max];}\nasDictInto_(d){d.min=this.range_.min;if(this.durationMs===0)return;d.max=this.range_.max;}\nstatic deserialize(data,deserializer){if(data instanceof Array){const dr=new DateRange(data[0]);dr.range_.addValue(data[1]);return dr;}\nreturn new DateRange(data);}\nstatic fromDict(d){const dateRange=new DateRange(d.min);if(d.max!==undefined)dateRange.range_.addValue(d.max);return dateRange;}}\ntr.v.d.Diagnostic.register(DateRange,{elementName:'tr-v-ui-date-range-span'});return{DateRange,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticRef{constructor(guid){this.guid=guid;}\nasDict(){return this.guid;}\nasDictOrReference(){return this.asDict();}}\nreturn{DiagnosticRef,};});'use strict';tr.exportTo('tr.v.d',function(){function stableStringify(obj){let replacer;if(!(obj instanceof Array)&&obj!==null){replacer=Object.keys(obj).sort();}\nreturn JSON.stringify(obj,replacer);}\nclass GenericSet extends tr.v.d.Diagnostic{constructor(values){super();if(typeof values[Symbol.iterator]!=='function'){throw new Error('GenericSet must be constructed from an interable.');}\nthis.values_=new Set(values);this.has_objects_=false;for(const value of values){if(typeof value==='object'){this.has_objects_=true;}}}\nget size(){return this.values_.size;}\nget length(){return this.values_.size;}*[Symbol.iterator](){for(const value of this.values_){yield value;}}\nhas(value){if(typeof value!=='object')return this.values_.has(value);const json=JSON.stringify(value);for(const x of this){if(typeof x!=='object')continue;if(json===JSON.stringify(x))return true;}\nreturn false;}\nequals(other){if(!(other instanceof GenericSet))return false;if(this.size!==other.size)return false;for(const value of this){if(!other.has(value))return false;}\nreturn true;}\nget hashKey(){if(this.has_objects_)return undefined;if(this.hash_key_!==undefined){return this.hash_key_;}\nlet key='';for(const value of Array.from(this.values_.values()).sort()){key+=value;}\nthis.hash_key_=key;return key;}\nserialize(serializer){const i=[...this].map(x=>serializer.getOrAllocateId(x));return(i.length===1)?i[0]:i;}\nasDictInto_(d){d.values=Array.from(this);}\nstatic deserialize(data,deserializer){if(!(data instanceof Array)){data=[data];}\nreturn new GenericSet(data.map(datum=>deserializer.getObject(datum)));}\nstatic fromDict(d){return new GenericSet(d.values);}\nclone(){return new GenericSet(this.values_);}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof GenericSet;}\naddDiagnostic(otherDiagnostic){const jsons=new Set();for(const value of this){if(typeof value!=='object')continue;jsons.add(stableStringify(value));}\nfor(const value of otherDiagnostic){if(typeof value==='object'){if(jsons.has(stableStringify(value))){continue;}\nthis.has_objects_=true;}\nthis.values_.add(value);}}}\ntr.v.d.Diagnostic.register(GenericSet,{elementName:'tr-v-ui-generic-set-span'});return{GenericSet,};});'use strict';tr.exportTo('tr.v.d',function(){class EventRef{constructor(event){this.stableId=event.stableId;this.title=event.title;this.start=event.start;this.duration=event.duration;this.end=this.start+this.duration;this.guid=tr.b.GUID.allocateSimple();}}\nreturn{EventRef,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedEventSet extends tr.v.d.Diagnostic{constructor(opt_events){super();this.eventsByStableId_=new Map();this.canonicalUrl_=undefined;if(opt_events){if(opt_events instanceof tr.model.EventSet||opt_events instanceof Array){for(const event of opt_events){this.add(event);}}else{this.add(opt_events);}}}\nclone(){const clone=new tr.v.d.CollectedRelatedEventSet();clone.addDiagnostic(this);return clone;}\nequals(other){if(this.length!==other.length)return false;for(const event of this){if(!other.has(event))return false;}\nreturn true;}\nadd(event){this.eventsByStableId_.set(event.stableId,event);}\nhas(event){return this.eventsByStableId_.has(event.stableId);}\nget length(){return this.eventsByStableId_.size;}*[Symbol.iterator](){for(const event of this.eventsByStableId_.values()){yield event;}}\nget canonicalUrl(){return this.canonicalUrl_;}\nresolve(model,opt_required){for(const[stableId,value]of this.eventsByStableId_){if(!(value instanceof tr.v.d.EventRef))continue;const event=model.getEventByStableId(stableId);if(event instanceof tr.model.Event){this.eventsByStableId_.set(stableId,event);}else if(opt_required){throw new Error('Unable to find Event '+stableId);}}}\nserialize(serializer){return[...this].map(event=>[event.stableId,serializer.getOrAllocateId(event.title),event.start,event.duration,]);}\nasDictInto_(d){d.events=[];for(const event of this){d.events.push({stableId:event.stableId,title:event.title,start:tr.b.Unit.byName.timeStampInMs.truncate(event.start),duration:tr.b.Unit.byName.timeDurationInMs.truncate(event.duration),});}}\nstatic deserialize(data,deserializer){return new RelatedEventSet(data.map(event=>new tr.v.d.EventRef({stableId:event[0],title:deserializer.getObject(event[1]),start:event[2],duration:event[3],})));}\nstatic fromDict(d){return new RelatedEventSet(d.events.map(event=>new tr.v.d.EventRef(event)));}}\ntr.v.d.Diagnostic.register(RelatedEventSet,{elementName:'tr-v-ui-related-event-set-span'});return{RelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedNameMap extends tr.v.d.Diagnostic{constructor(opt_info){super();this.map_=new Map();if(opt_info){for(const[key,name]of Object.entries(opt_info)){this.set(key,name);}}}\nclone(){const clone=new RelatedNameMap();clone.addDiagnostic(this);return clone;}\nequals(other){if(!(other instanceof RelatedNameMap))return false;const keys1=new Set(this.map_.keys());const keys2=new Set(other.map_.keys());if(!tr.b.setsEqual(keys1,keys2))return false;for(const[key,name]of this){if(name!==other.get(key))return false;}\nreturn true;}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof RelatedNameMap;}\naddDiagnostic(otherDiagnostic){for(const[key,name]of otherDiagnostic){const existing=this.get(key);if(existing===undefined){this.set(key,name);}else if(existing!==name){throw new Error('Histogram names differ: '+`\"${existing}\" != \"${name}\"`);}}}\nserialize(serializer){const keys=[...this.map_.keys()];keys.sort();const names=keys.map(k=>serializer.getOrAllocateId(this.get(k)));const keysId=serializer.getOrAllocateId(keys.map(k=>serializer.getOrAllocateId(k)));return[keysId,...names];}\nasDictInto_(d){d.names={};for(const[key,name]of this)d.names[key]=name;}\nset(key,name){this.map_.set(key,name);}\nget(key){return this.map_.get(key);}*[Symbol.iterator](){for(const pair of this.map_)yield pair;}*values(){for(const value of this.map_.values())yield value;}\nstatic fromEntries(entries){const names=new RelatedNameMap();for(const[key,name]of entries){names.set(key,name);}\nreturn names;}\nstatic deserialize(data,deserializer){const names=new RelatedNameMap();const keys=deserializer.getObject(data[0]);for(let i=0;i<keys.length;++i){names.set(deserializer.getObject(keys[i]),deserializer.getObject(data[i+1]));}\nreturn names;}\nstatic fromDict(d){return RelatedNameMap.fromEntries(Object.entries(d.names||{}));}}\ntr.v.d.Diagnostic.register(RelatedNameMap,{elementName:'tr-v-ui-related-name-map-span',});return{RelatedNameMap,};});'use strict';tr.exportTo('tr.v.d',function(){class Scalar extends tr.v.d.Diagnostic{constructor(value){super();if(!(value instanceof tr.b.Scalar)){throw new Error('expected Scalar');}\nthis.value=value;}\nclone(){return new Scalar(this.value);}\nserialize(serializer){return this.value.asDict();}\nasDictInto_(d){d.value=this.value.asDict();}\nstatic deserialize(value,deserializer){return Scalar.fromDict({value});}\nstatic fromDict(d){return new Scalar(tr.b.Scalar.fromDict(d.value));}}\ntr.v.d.Diagnostic.register(Scalar,{elementName:'tr-v-ui-scalar-diagnostic-span'});return{Scalar,};});'use strict';tr.exportTo('tr.v.d',function(){class UnmergeableDiagnosticSet extends tr.v.d.Diagnostic{constructor(diagnostics){super();this._diagnostics=diagnostics;}\nclone(){const clone=new tr.v.d.UnmergeableDiagnosticSet();clone.addDiagnostic(this);return clone;}\ncanAddDiagnostic(otherDiagnostic){return true;}\naddDiagnostic(otherDiagnostic){if(otherDiagnostic instanceof UnmergeableDiagnosticSet){for(const subOtherDiagnostic of otherDiagnostic){const clone=subOtherDiagnostic.clone();this.addDiagnostic(clone);}\nreturn;}\nfor(let i=0;i<this._diagnostics.length;++i){if(this._diagnostics[i].canAddDiagnostic(otherDiagnostic)){this._diagnostics[i].addDiagnostic(otherDiagnostic);return;}}\nconst clone=otherDiagnostic.clone();this._diagnostics.push(clone);}\nget length(){return this._diagnostics.length;}*[Symbol.iterator](){for(const diagnostic of this._diagnostics)yield diagnostic;}\nasDictInto_(d){d.diagnostics=this._diagnostics.map(d=>d.asDictOrReference());}\nstatic deserialize(data,deserializer){return new UnmergeableDiagnosticSet(d.map(i=>deserializer.getDiagnostic(i).diagnostic));}\nserialize(serializer){return this._diagnostics.map(d=>serializer.getOrAllocateDiagnosticId('',d));}\nstatic fromDict(d){return new UnmergeableDiagnosticSet(d.diagnostics.map(d=>((typeof d==='string')?new tr.v.d.DiagnosticRef(d):tr.v.d.Diagnostic.fromDict(d))));}}\ntr.v.d.Diagnostic.register(UnmergeableDiagnosticSet,{elementName:'tr-v-ui-unmergeable-diagnostic-set-span'});return{UnmergeableDiagnosticSet,};});'use strict';tr.exportTo('tr.v.d',function(){const RESERVED_INFOS={ANGLE_REVISIONS:{name:'angleRevisions',type:tr.v.d.GenericSet},ARCHITECTURES:{name:'architectures',type:tr.v.d.GenericSet},BENCHMARKS:{name:'benchmarks',type:tr.v.d.GenericSet},BENCHMARK_START:{name:'benchmarkStart',type:tr.v.d.DateRange},BENCHMARK_DESCRIPTIONS:{name:'benchmarkDescriptions',type:tr.v.d.GenericSet},BOTS:{name:'bots',type:tr.v.d.GenericSet},BUG_COMPONENTS:{name:'bugComponents',type:tr.v.d.GenericSet},BUILDS:{name:'builds',type:tr.v.d.GenericSet},CATAPULT_REVISIONS:{name:'catapultRevisions',type:tr.v.d.GenericSet},CHROMIUM_COMMIT_POSITIONS:{name:'chromiumCommitPositions',type:tr.v.d.GenericSet},CHROMIUM_REVISIONS:{name:'chromiumRevisions',type:tr.v.d.GenericSet},DESCRIPTION:{name:'description',type:tr.v.d.GenericSet},DEVICE_IDS:{name:'deviceIds',type:tr.v.d.GenericSet},DOCUMENTATION_URLS:{name:'documentationUrls',type:tr.v.d.GenericSet},INFO_BLURB:{name:'infoBlurb',type:tr.v.d.GenericSet},FUCHSIA_GARNET_REVISIONS:{name:'fuchsiaGarnetRevisions',type:tr.v.d.GenericSet},FUCHSIA_PERIDOT_REVISIONS:{name:'fuchsiaPeridotRevisions',type:tr.v.d.GenericSet},FUCHSIA_TOPAZ_REVISIONS:{name:'fuchsiaTopazRevisions',type:tr.v.d.GenericSet},FUCHSIA_ZIRCON_REVISIONS:{name:'fuchsiaZirconRevisions',type:tr.v.d.GenericSet},GPUS:{name:'gpus',type:tr.v.d.GenericSet},IS_REFERENCE_BUILD:{name:'isReferenceBuild',type:tr.v.d.GenericSet},LABELS:{name:'labels',type:tr.v.d.GenericSet},LOG_URLS:{name:'logUrls',type:tr.v.d.GenericSet},MASTERS:{name:'masters',type:tr.v.d.GenericSet},MEMORY_AMOUNTS:{name:'memoryAmounts',type:tr.v.d.GenericSet},OS_NAMES:{name:'osNames',type:tr.v.d.GenericSet},OS_VERSIONS:{name:'osVersions',type:tr.v.d.GenericSet},OWNERS:{name:'owners',type:tr.v.d.GenericSet},POINT_ID:{name:'pointId',type:tr.v.d.GenericSet},PRODUCT_VERSIONS:{name:'productVersions',type:tr.v.d.GenericSet},REVISION_TIMESTAMPS:{name:'revisionTimestamps',type:tr.v.d.DateRange},SKIA_REVISIONS:{name:'skiaRevisions',type:tr.v.d.GenericSet},STATISTICS_NAMES:{name:'statisticsNames',type:tr.v.d.GenericSet},STORIES:{name:'stories',type:tr.v.d.GenericSet},STORYSET_REPEATS:{name:'storysetRepeats',type:tr.v.d.GenericSet},STORY_TAGS:{name:'storyTags',type:tr.v.d.GenericSet},SUMMARY_KEYS:{name:'summaryKeys',type:tr.v.d.GenericSet},TEST_PATH:{name:'testPath',type:tr.v.d.GenericSet},TRACE_START:{name:'traceStart',type:tr.v.d.DateRange},TRACE_URLS:{name:'traceUrls',type:tr.v.d.GenericSet},V8_COMMIT_POSITIONS:{name:'v8CommitPositions',type:tr.v.d.DateRange},V8_REVISIONS:{name:'v8Revisions',type:tr.v.d.GenericSet},WEBRTC_REVISIONS:{name:'webrtcRevisions',type:tr.v.d.GenericSet},WEBRTC_INTERNAL_REVISIONS:{name:'webrtcInternalRevisions',type:tr.v.d.GenericSet},};const RESERVED_NAMES={};const RESERVED_NAMES_TO_TYPES=new Map();for(const[codename,info]of Object.entries(RESERVED_INFOS)){RESERVED_NAMES[codename]=info.name;if(RESERVED_NAMES_TO_TYPES.has(info.name)){throw new Error(`Duplicate reserved name \"${info.name}\"`);}\nRESERVED_NAMES_TO_TYPES.set(info.name,info.type);}\nconst RESERVED_NAMES_SET=new Set(Object.values(RESERVED_NAMES));return{RESERVED_INFOS,RESERVED_NAMES,RESERVED_NAMES_SET,RESERVED_NAMES_TO_TYPES,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticMap extends Map{constructor(opt_allowReservedNames){super();if(opt_allowReservedNames===undefined){opt_allowReservedNames=true;}\nthis.allowReservedNames_=opt_allowReservedNames;}\nset(name,diagnostic){if(typeof(name)!=='string'){throw new Error(`name must be string, not ${name}`);}\nif(!(diagnostic instanceof tr.v.d.Diagnostic)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){throw new Error(`Must be instanceof Diagnostic: ${diagnostic}`);}\nif(!this.allowReservedNames_&&tr.v.d.RESERVED_NAMES_SET.has(name)&&!(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){const type=tr.v.d.RESERVED_NAMES_TO_TYPES.get(name);if(type&&!(diagnostic instanceof type)){throw new Error(`Diagnostics named \"${name}\" must be ${type.name}, `+`not ${diagnostic.constructor.name}`);}}\nMap.prototype.set.call(this,name,diagnostic);}\ndelete(name){if(name===undefined)throw new Error('missing name');Map.prototype.delete.call(this,name);}\ndeserializeAdd(data,deserializer){for(const id of data){const{name,diagnostic}=deserializer.getDiagnostic(id);this.set(name,diagnostic);}}\naddDicts(dict){for(const[name,diagnosticDict]of Object.entries(dict)){if(name==='tagmap')continue;if(typeof diagnosticDict==='string'){this.set(name,new tr.v.d.DiagnosticRef(diagnosticDict));}else if(diagnosticDict.type!=='RelatedHistogramMap'&&diagnosticDict.type!=='RelatedHistogramBreakdown'&&diagnosticDict.type!=='TagMap'){this.set(name,tr.v.d.Diagnostic.fromDict(diagnosticDict));}}}\nresolveSharedDiagnostics(histograms,opt_required){for(const[name,value]of this){if(!(value instanceof tr.v.d.DiagnosticRef)){continue;}\nconst guid=value.guid;const diagnostic=histograms.lookupDiagnostic(guid);if(diagnostic instanceof tr.v.d.Diagnostic){this.set(name,diagnostic);}else if(opt_required){throw new Error('Unable to find shared Diagnostic '+guid);}}}\nserialize(serializer){const data=[];for(const[name,diagnostic]of this){data.push(serializer.getOrAllocateDiagnosticId(name,diagnostic));}\nreturn data;}\nasDict(){const dict={};for(const[name,diagnostic]of this){dict[name]=diagnostic.asDictOrReference();}\nreturn dict;}\nstatic deserialize(data,deserializer){const diagnostics=new DiagnosticMap();diagnostics.deserializeAdd(data,deserializer);return diagnostics;}\nstatic fromDict(d){const diagnostics=new DiagnosticMap();diagnostics.addDicts(d);return diagnostics;}\nstatic fromObject(obj){const diagnostics=new DiagnosticMap();if(!(obj instanceof Map))obj=Object.entries(obj);for(const[name,diagnostic]of obj){if(!diagnostic)continue;diagnostics.set(name,diagnostic);}\nreturn diagnostics;}\naddDiagnostics(other){for(const[name,otherDiagnostic]of other){const myDiagnostic=this.get(name);if(myDiagnostic!==undefined&&myDiagnostic.canAddDiagnostic(otherDiagnostic)){myDiagnostic.addDiagnostic(otherDiagnostic);continue;}\nconst clone=otherDiagnostic.clone();if(myDiagnostic===undefined){this.set(name,clone);continue;}\nthis.set(name,new tr.v.d.UnmergeableDiagnosticSet([myDiagnostic,clone]));}}}\nreturn{DiagnosticMap};});'use strict';tr.exportTo('tr.v',function(){const MAX_DIAGNOSTIC_MAPS=16;const DEFAULT_SAMPLE_VALUES_PER_BIN=10;const DEFAULT_REBINNED_COUNT=40;const DEFAULT_BOUNDARIES_FOR_UNIT=new Map();const DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING=500;const DELTA=String.fromCharCode(916);const Z_SCORE_NAME='z-score';const P_VALUE_NAME='p-value';const U_STATISTIC_NAME='U';function percentToString(percent,opt_force3){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}\nif(percent===0)return'000';if(percent===1)return'100';let str=percent.toString();if(str[1]!=='.'){throw new Error('Unexpected percent');}\nstr=str+'0'.repeat(Math.max(4-str.length,0));if(str.length>4){if(opt_force3){str=str.slice(0,4);}else{str=str.slice(0,4)+'_'+str.slice(4);}}\nreturn'0'+str.slice(2);}\nfunction percentFromString(s){return parseFloat(s[0]+'.'+s.substr(1).replace(/_/g,''));}\nclass HistogramBin{constructor(range){this.range=range;this.count=0;this.diagnosticMaps=[];}\naddSample(value){this.count+=1;}\naddDiagnosticMap(diagnostics){tr.b.math.Statistics.uniformlySampleStream(this.diagnosticMaps,this.count,diagnostics,MAX_DIAGNOSTIC_MAPS);}\naddBin(other){if(!this.range.equals(other.range)){throw new Error('Merging incompatible Histogram bins.');}\ntr.b.math.Statistics.mergeSampledStreams(this.diagnosticMaps,this.count,other.diagnosticMaps,other.count,MAX_DIAGNOSTIC_MAPS);this.count+=other.count;}\ndeserialize(data,deserializer){if(!(data instanceof Array)){this.count=data;return;}\nthis.count=data[0];for(const sample of data.slice(1)){if(!(sample instanceof Array))continue;this.diagnosticMaps.push(tr.v.d.DiagnosticMap.deserialize(sample.slice(1),deserializer));}}\nfromDict(dict){this.count=dict[0];if(dict.length>1){for(const map of dict[1]){this.diagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}}\nserialize(serializer){if(!this.diagnosticMaps.length){return this.count;}\nreturn[this.count,...this.diagnosticMaps.map(d=>[undefined,...d.serialize(serializer)])];}\nasDict(){if(!this.diagnosticMaps.length){return[this.count];}\nreturn[this.count,this.diagnosticMaps.map(d=>d.asDict())];}}\nconst DEFAULT_SUMMARY_OPTIONS=new Map([['avg',true],['count',true],['geometricMean',false],['max',true],['min',true],['nans',false],['std',true],['sum',true],]);class Histogram{constructor(name,unit,opt_binBoundaries){if(!(unit instanceof tr.b.Unit)){throw new Error('unit must be a Unit: '+unit);}\nlet binBoundaries=opt_binBoundaries;if(!binBoundaries){const baseUnit=unit.baseUnit?unit.baseUnit:unit;binBoundaries=DEFAULT_BOUNDARIES_FOR_UNIT.get(baseUnit.unitName);}\nthis.binBoundariesDict_=binBoundaries.asDict();this.allBins=binBoundaries.bins.slice();this.description='';const allowReservedNames=false;this.diagnostics_=new tr.v.d.DiagnosticMap(allowReservedNames);this.maxNumSampleValues_=this.defaultMaxNumSampleValues_;this.name_=name;this.nanDiagnosticMaps=[];this.numNans=0;this.running_=undefined;this.sampleValues_=[];this.sampleMeans_=[];this.summaryOptions=new Map(DEFAULT_SUMMARY_OPTIONS);this.summaryOptions.set('percentile',[]);this.summaryOptions.set('iprs',[]);this.summaryOptions.set('ci',[]);this.unit=unit;}\nstatic create(name,unit,samples,opt_options){const options=opt_options||{};const hist=new Histogram(name,unit,options.binBoundaries);if(options.description)hist.description=options.description;if(options.summaryOptions){let summaryOptions=options.summaryOptions;if(!(summaryOptions instanceof Map)){summaryOptions=Object.entries(summaryOptions);}\nfor(const[name,value]of summaryOptions){hist.summaryOptions.set(name,value);}}\nif(options.diagnostics!==undefined){let diagnostics=options.diagnostics;if(!(diagnostics instanceof Map)){diagnostics=Object.entries(diagnostics);}\nfor(const[name,diagnostic]of diagnostics){if(!diagnostic)continue;hist.diagnostics.set(name,diagnostic);}}\nif(!(samples instanceof Array))samples=[samples];for(const sample of samples){if(typeof sample==='object'){hist.addSample(sample.value,sample.diagnostics);}else{hist.addSample(sample);}}\nreturn hist;}\nget diagnostics(){return this.diagnostics_;}\nget running(){return this.running_;}\nget maxNumSampleValues(){return this.maxNumSampleValues_;}\nset maxNumSampleValues(n){this.maxNumSampleValues_=n;tr.b.math.Statistics.uniformlySampleArray(this.sampleValues_,this.maxNumSampleValues_);}\nget name(){return this.name_;}\ndeserializeStatistics_(){const statisticsNames=this.diagnostics.get(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES);if(!statisticsNames)return;for(const statName of statisticsNames){if(statName.startsWith('pct_')){const percent=percentFromString(statName.substr(4));this.summaryOptions.get('percentile').push(percent);}else if(statName.startsWith('ipr_')){const lower=percentFromString(statName.substr(4,3));const upper=percentFromString(statName.substr(8));this.summaryOptions.get('iprs').push(tr.b.math.Range.fromExplicitRange(lower,upper));}else if(statName.startsWith('ci_')){const percent=percentFromString(statName.replace('_lower','').replace('_upper','').substr(3));if(!this.summaryOptions.get('ci').includes(percent)){this.summaryOptions.get('ci').push(percent);}}}\nfor(const statName of this.summaryOptions.keys()){if(statName==='percentile'||statName==='iprs'||statName==='ci'){continue;}\nthis.summaryOptions.set(statName,statisticsNames.has(statName));}}\ndeserializeBin_(i,bin,deserializer){this.allBins[i]=new HistogramBin(this.allBins[i].range);this.allBins[i].deserialize(bin,deserializer);if(!(bin instanceof Array))return;for(let sample of bin.slice(1)){if(sample instanceof Array){sample=sample[0];}\nthis.sampleValues_.push(sample);}}\ndeserializeBins_(bins,deserializer){if(bins instanceof Array){for(let i=0;i<bins.length;++i){this.deserializeBin_(i,bins[i],deserializer);}}else{for(const[i,binData]of Object.entries(bins)){this.deserializeBin_(i,binData,deserializer);}}}\nstatic deserialize(data,deserializer){const[name,unit,boundaries,diagnostics,running,bins,nanBin]=data;const hist=new Histogram(deserializer.getObject(name),tr.b.Unit.fromJSON(unit),HistogramBinBoundaries.fromDict(deserializer.getObject(boundaries)));hist.diagnostics.deserializeAdd(diagnostics,deserializer);const description=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.DESCRIPTION);if(description&&description.length){hist.description=[...description][0];}\nhist.deserializeStatistics_();if(running){hist.running_=tr.b.math.RunningStatistics.fromDict(running);}\nif(bins){hist.deserializeBins_(bins,deserializer);}\nif(nanBin){if(!(nanBin instanceof Array)){hist.numNans=nanBin;}else{hist.numNans=nanBin[0];for(const sample of nanBin.slice(1)){if(!(sample instanceof Array))continue;hist.nanDiagnosticMaps.push(tr.v.d.DiagnosticMap.deserialize(sample.slice(1),deserializer));}}}\nreturn hist;}\nstatic fromDict(dict){const hist=new Histogram(dict.name,tr.b.Unit.fromJSON(dict.unit),HistogramBinBoundaries.fromDict(dict.binBoundaries));if(dict.description){hist.description=dict.description;}\nif(dict.diagnostics){hist.diagnostics.addDicts(dict.diagnostics);}\nif(dict.allBins){if(dict.allBins.length!==undefined){for(let i=0;i<dict.allBins.length;++i){hist.allBins[i]=new HistogramBin(hist.allBins[i].range);hist.allBins[i].fromDict(dict.allBins[i]);}}else{for(const[i,binDict]of Object.entries(dict.allBins)){if(i>=hist.allBins.length||i<0){throw new Error('Invalid index \"'+i+'\" out of bounds of [0..'+hist.allBins.length+')');}\nhist.allBins[i]=new HistogramBin(hist.allBins[i].range);hist.allBins[i].fromDict(binDict);}}}\nif(dict.running){hist.running_=tr.b.math.RunningStatistics.fromDict(dict.running);}\nif(dict.summaryOptions){if(dict.summaryOptions.iprs){dict.summaryOptions.iprs=dict.summaryOptions.iprs.map(r=>tr.b.math.Range.fromExplicitRange(r[0],r[1]));}\nhist.customizeSummaryOptions(dict.summaryOptions);}\nif(dict.maxNumSampleValues!==undefined){hist.maxNumSampleValues=dict.maxNumSampleValues;}\nif(dict.sampleValues){hist.sampleValues_=dict.sampleValues;}\nif(dict.numNans){hist.numNans=dict.numNans;}\nif(dict.nanDiagnostics){for(const map of dict.nanDiagnostics){hist.nanDiagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}\nreturn hist;}\nget numValues(){return this.running_?this.running_.count:0;}\nget average(){return this.running_?this.running_.mean:undefined;}\nget standardDeviation(){return this.running_?this.running_.stddev:undefined;}\nget geometricMean(){return this.running_?this.running_.geometricMean:0;}\nget sum(){return this.running_?this.running_.sum:0;}\nget min(){return this.running_?this.running_.min:Infinity;}\nget max(){return this.running_?this.running_.max:-Infinity;}\ngetDifferenceSignificance(other,opt_alpha){if(this.unit!==other.unit){throw new Error('Cannot compare Histograms with different units');}\nif(this.unit.improvementDirection===tr.b.ImprovementDirection.DONT_CARE){return tr.b.math.Statistics.Significance.DONT_CARE;}\nif(!(other instanceof Histogram)){throw new Error('Unable to compute a p-value');}\nconst testResult=tr.b.math.Statistics.mwu(this.sampleValues,other.sampleValues,opt_alpha);return testResult.significance;}\ngetApproximatePercentile(percent){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}\nif(this.numValues===0)return undefined;if(this.allBins.length===1){const sortedSampleValues=this.sampleValues.slice().sort((x,y)=>x-y);return sortedSampleValues[Math.floor((sortedSampleValues.length-1)*percent)];}\nlet valuesToSkip=Math.floor((this.numValues-1)*percent);for(const bin of this.allBins){valuesToSkip-=bin.count;if(valuesToSkip>=0)continue;if(bin.range.min===-Number.MAX_VALUE){return bin.range.max;}\nif(bin.range.max===Number.MAX_VALUE){return bin.range.min;}\nreturn bin.range.center;}\nreturn this.allBins[this.allBins.length-1].range.min;}\ngetBinIndexForValue(value){const i=tr.b.findFirstTrueIndexInSortedArray(this.allBins,b=>value<b.range.max);if(0<=i&&i<this.allBins.length)return i;return this.allBins.length-1;}\ngetBinForValue(value){return this.allBins[this.getBinIndexForValue(value)];}\naddSample(value,opt_diagnostics){if(opt_diagnostics){if(!(opt_diagnostics instanceof tr.v.d.DiagnosticMap)){opt_diagnostics=tr.v.d.DiagnosticMap.fromObject(opt_diagnostics);}\nfor(const[name,diag]of opt_diagnostics){if(diag instanceof tr.v.d.Breakdown){diag.truncate(this.unit);}}}\nif(typeof(value)!=='number'||isNaN(value)){this.numNans++;if(opt_diagnostics){tr.b.math.Statistics.uniformlySampleStream(this.nanDiagnosticMaps,this.numNans,opt_diagnostics,MAX_DIAGNOSTIC_MAPS);}}else{if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nthis.sampleMeans_=[];this.running_.add(value);value=this.unit.truncate(value);const binIndex=this.getBinIndexForValue(value);let bin=this.allBins[binIndex];if(bin.count===0){bin=new HistogramBin(bin.range);this.allBins[binIndex]=bin;}\nbin.addSample(value);if(opt_diagnostics){bin.addDiagnosticMap(opt_diagnostics);}}\ntr.b.math.Statistics.uniformlySampleStream(this.sampleValues_,this.numValues+this.numNans,value,this.maxNumSampleValues);}\nresampleMean_(percent){const filteredSamples=this.sampleValues_.filter(value=>typeof(value)==='number'&&!isNaN(value));const sampleCount=filteredSamples.length;if(sampleCount===0||percent<=0.0||percent>=1.0){return[undefined,undefined];}else if(sampleCount===1){return[filteredSamples[0],filteredSamples[0]];}\nconst iterations=DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING;if(this.sampleMeans_.length!==iterations){this.sampleMeans_=[];for(let i=0;i<iterations;i++){let tempSum=0.0;for(let j=0;j<sampleCount;j++){tempSum+=filteredSamples[Math.floor(Math.random()*sampleCount)];}\nthis.sampleMeans_.push(tempSum/sampleCount);}\nthis.sampleMeans_.sort((a,b)=>a-b);}\nreturn[this.sampleMeans_[Math.floor((iterations-1)*(0.5-percent/2))],this.sampleMeans_[Math.ceil((iterations-1)*(0.5+percent/2))],];}\nsampleValuesInto(samples){for(const sampleValue of this.sampleValues){samples.push(sampleValue);}}\ncanAddHistogram(other){if(this.unit!==other.unit){return false;}\nif(this.binBoundariesDict_===other.binBoundariesDict_){return true;}\nif(!this.binBoundariesDict_||!other.binBoundariesDict_){return true;}\nif(this.binBoundariesDict_.length!==other.binBoundariesDict_.length){return false;}\nfor(let i=0;i<this.binBoundariesDict_.length;++i){const slice=this.binBoundariesDict_[i];const otherSlice=other.binBoundariesDict_[i];if(slice instanceof Array){if(!(otherSlice instanceof Array)){return false;}\nif(slice[0]!==otherSlice[0]||!tr.b.math.approximately(slice[1],otherSlice[1])||slice[2]!==otherSlice[2]){return false;}}else{if(otherSlice instanceof Array){return false;}\nif(!tr.b.math.approximately(slice,otherSlice)){return false;}}}\nreturn true;}\naddHistogram(other){if(!this.canAddHistogram(other)){throw new Error('Merging incompatible Histograms');}\nif(!!this.binBoundariesDict_===!!other.binBoundariesDict_){for(let i=0;i<this.allBins.length;++i){let bin=this.allBins[i];if(bin.count===0){bin=new HistogramBin(bin.range);this.allBins[i]=bin;}\nbin.addBin(other.allBins[i]);}}else{const[multiBin,singleBin]=this.binBoundariesDict_?[this,other]:[other,this];for(const value of singleBin.sampleValues){if(typeof(value)!=='number'||isNaN(value)){continue;}\nconst binIndex=multiBin.getBinIndexForValue(value);let bin=multiBin.allBins[binIndex];if(bin.count===0){bin=new HistogramBin(bin.range);multiBin.allBins[binIndex]=bin;}\nbin.addSample(value);}}\ntr.b.math.Statistics.mergeSampledStreams(this.nanDiagnosticMaps,this.numNans,other.nanDiagnosticMaps,other.numNans,MAX_DIAGNOSTIC_MAPS);tr.b.math.Statistics.mergeSampledStreams(this.sampleValues,this.numValues+this.numNans,other.sampleValues,other.numValues+other.numNans,(this.maxNumSampleValues+other.maxNumSampleValues)/2);this.numNans+=other.numNans;if(other.running_!==undefined){if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nthis.running_=this.running_.merge(other.running_);}\nthis.sampleMeans_=[];this.diagnostics.addDiagnostics(other.diagnostics);for(const[stat,option]of other.summaryOptions){if(stat==='percentile'){const percentiles=this.summaryOptions.get(stat);for(const percent of option){if(!percentiles.includes(percent))percentiles.push(percent);}}else if(stat==='iprs'){const thisIprs=this.summaryOptions.get(stat);for(const ipr of option){let found=false;for(const thisIpr of thisIprs){found=ipr.equals(thisIpr);if(found)break;}\nif(!found)thisIprs.push(ipr);}}else if(stat==='ci'){const CIs=this.summaryOptions.get(stat);for(const CI of option){if(!CIs.includes(CI))CIs.push(CI);}}else if(option&&!this.summaryOptions.get(stat)){this.summaryOptions.set(stat,true);}}}\ncustomizeSummaryOptions(summaryOptions){for(const[key,value]of Object.entries(summaryOptions)){this.summaryOptions.set(key,value);}}\ngetStatisticScalar(statName,opt_referenceHistogram,opt_mwu){if(statName==='avg'){if(typeof(this.average)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.average);}\nif(statName==='std'){if(typeof(this.standardDeviation)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.standardDeviation);}\nif(statName==='geometricMean'){if(typeof(this.geometricMean)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.geometricMean);}\nif(statName==='min'||statName==='max'||statName==='sum'){if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nif(typeof(this.running_[statName])!=='number')return undefined;return new tr.b.Scalar(this.unit,this.running_[statName]);}\nif(statName==='nans'){return new tr.b.Scalar(tr.b.Unit.byName.count_smallerIsBetter,this.numNans);}\nif(statName==='count'){return new tr.b.Scalar(tr.b.Unit.byName.count_smallerIsBetter,this.numValues);}\nif(statName.substr(0,4)==='pct_'){if(this.numValues===0)return undefined;const percent=percentFromString(statName.substr(4));const percentile=this.getApproximatePercentile(percent);if(typeof(percentile)!=='number')return undefined;return new tr.b.Scalar(this.unit,percentile);}\nif(statName.substr(0,3)==='ci_'){const percent=percentFromString(statName.substr(3,3));const[lowCI,highCI]=this.resampleMean_(percent);if(statName.substr(7)==='lower'){if(typeof(lowCI)!=='number')return undefined;return new tr.b.Scalar(this.unit,lowCI);}else if(statName.substr(7)==='upper'){if(typeof(highCI)!=='number')return undefined;return new tr.b.Scalar(this.unit,highCI);}\nif(typeof(highCI)!=='number'||typeof(lowCI)!=='number'){return undefined;}\nreturn new tr.b.Scalar(this.unit,highCI-lowCI);}\nif(statName.substr(0,4)==='ipr_'){let lower=percentFromString(statName.substr(4,3));let upper=percentFromString(statName.substr(8));if(lower>=upper){throw new Error('Invalid inter-percentile range: '+statName);}\nlower=this.getApproximatePercentile(lower);upper=this.getApproximatePercentile(upper);const ipr=upper-lower;if(typeof(ipr)!=='number')return undefined;return new tr.b.Scalar(this.unit,ipr);}\nif(!this.canCompare(opt_referenceHistogram)){throw new Error('Cannot compute '+statName+' when histograms are not comparable');}\nconst suffix=tr.b.Unit.nameSuffixForImprovementDirection(this.unit.improvementDirection);const deltaIndex=statName.indexOf(DELTA);if(deltaIndex>=0){const baseStatName=statName.substr(deltaIndex+1);const thisStat=this.getStatisticScalar(baseStatName);const otherStat=opt_referenceHistogram.getStatisticScalar(baseStatName);const deltaValue=thisStat.value-otherStat.value;if(statName[0]==='%'){return new tr.b.Scalar(tr.b.Unit.byName['normalizedPercentageDelta'+suffix],deltaValue/otherStat.value);}\nreturn new tr.b.Scalar(thisStat.unit.correspondingDeltaUnit,deltaValue);}\nif(statName===Z_SCORE_NAME){return new tr.b.Scalar(tr.b.Unit.byName['sigmaDelta'+suffix],(this.average-opt_referenceHistogram.average)/opt_referenceHistogram.standardDeviation);}\nconst mwu=opt_mwu||tr.b.math.Statistics.mwu(this.sampleValues,opt_referenceHistogram.sampleValues);if(statName===P_VALUE_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.p);}\nif(statName===U_STATISTIC_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.U);}\nthrow new Error('Unrecognized statistic name: '+statName);}\nget statisticsNames(){const statisticsNames=new Set();for(const[statName,option]of this.summaryOptions){if(statName==='percentile'){for(const pctile of option){statisticsNames.add('pct_'+tr.v.percentToString(pctile));}}else if(statName==='iprs'){for(const range of option){statisticsNames.add('ipr_'+tr.v.percentToString(range.min,true)+'_'+tr.v.percentToString(range.max,true));}}else if(statName==='ci'){for(const CIpctile of option){const CIpctStr=tr.v.percentToString(CIpctile);statisticsNames.add('ci_'+CIpctStr+'_lower');statisticsNames.add('ci_'+CIpctStr+'_upper');statisticsNames.add('ci_'+CIpctStr);}}else if(option){statisticsNames.add(statName);}}\nreturn statisticsNames;}\ncanCompare(other){return other instanceof Histogram&&this.unit===other.unit&&this.numValues>0&&other.numValues>0;}\ngetAvailableStatisticName(statName,opt_referenceHist){if(this.canCompare(opt_referenceHist))return statName;if(statName===Z_SCORE_NAME||statName===P_VALUE_NAME||statName===U_STATISTIC_NAME){return'avg';}\nconst deltaIndex=statName.indexOf(DELTA);if(deltaIndex<0)return statName;return statName.substr(deltaIndex+1);}\nstatic getDeltaStatisticsNames(statNames){const deltaNames=[];for(const statName of statNames){deltaNames.push(`${DELTA}${statName}`);deltaNames.push(`%${DELTA}${statName}`);}\nreturn deltaNames.concat([Z_SCORE_NAME,P_VALUE_NAME,U_STATISTIC_NAME]);}\nget statisticsScalars(){const results=new Map();for(const statName of this.statisticsNames){const scalar=this.getStatisticScalar(statName);if(scalar===undefined)continue;results.set(statName,scalar);}\nreturn results;}\nget sampleValues(){return this.sampleValues_;}\nclone(){const binBoundaries=HistogramBinBoundaries.fromDict(this.binBoundariesDict_);const hist=new Histogram(this.name,this.unit,binBoundaries);for(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='iprs'||stat==='ci'){hist.summaryOptions.set(stat,Array.from(option));}else{hist.summaryOptions.set(stat,option);}}\nhist.addHistogram(this);return hist;}\nrebin(newBoundaries){const rebinned=new tr.v.Histogram(this.name,this.unit,newBoundaries);rebinned.description=this.description;for(const sample of this.sampleValues){rebinned.addSample(sample);}\nrebinned.running_=this.running_;for(const[name,diagnostic]of this.diagnostics){rebinned.diagnostics.set(name,diagnostic);}\nfor(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='ci'){rebinned.summaryOptions.set(stat,Array.from(option));}else{rebinned.summaryOptions.set(stat,option);}}\nreturn rebinned;}\nserialize(serializer){let nanBin=this.numNans;if(this.nanDiagnosticMaps.length){nanBin=[nanBin,...this.nanDiagnosticMaps.map(dm=>[undefined,...dm.serialize(serializer)])];}\nthis.diagnostics.set(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES,new tr.v.d.GenericSet([...this.statisticsNames].sort()));this.diagnostics.set(tr.v.d.RESERVED_NAMES.DESCRIPTION,new tr.v.d.GenericSet([this.description].sort()));return[serializer.getOrAllocateId(this.name),this.unit.asJSON2(),serializer.getOrAllocateId(this.binBoundariesDict_),this.diagnostics.serialize(serializer),this.running_?this.running_.asDict():0,this.serializeBins_(serializer),nanBin,];}\nasDict(){const dict={};dict.name=this.name;dict.unit=this.unit.asJSON();if(this.binBoundariesDict_!==undefined){dict.binBoundaries=this.binBoundariesDict_;}\nif(this.description){dict.description=this.description;}\nif(this.diagnostics.size){dict.diagnostics=this.diagnostics.asDict();}\nif(this.maxNumSampleValues!==this.defaultMaxNumSampleValues_){dict.maxNumSampleValues=this.maxNumSampleValues;}\nif(this.numNans){dict.numNans=this.numNans;}\nif(this.nanDiagnosticMaps.length){dict.nanDiagnostics=this.nanDiagnosticMaps.map(dm=>dm.asDict());}\nif(this.numValues){dict.sampleValues=this.sampleValues.slice();this.running.truncate(this.unit);dict.running=this.running_.asDict();dict.allBins=this.allBinsAsDict_();}\nconst summaryOptions={};let anyOverriddenSummaryOptions=false;for(const[name,value]of this.summaryOptions){let option;if(name==='percentile'){if(value.length===0)continue;option=Array.from(value);}else if(name==='iprs'){if(value.length===0)continue;option=value.map(r=>[r.min,r.max]);}else if(name==='ci'){if(value.length===0)continue;option=Array.from(value);}else if(value===DEFAULT_SUMMARY_OPTIONS.get(name)){continue;}else{option=value;}\nsummaryOptions[name]=option;anyOverriddenSummaryOptions=true;}\nif(anyOverriddenSummaryOptions){dict.summaryOptions=summaryOptions;}\nreturn dict;}\nserializeBins_(serializer){const numBins=this.allBins.length;let emptyBins=0;for(let i=0;i<numBins;++i){if(this.allBins[i].count===0){++emptyBins;}}\nif(emptyBins===numBins){return 0;}\nif(emptyBins>(numBins/2)){const allBinsDict={};for(let i=0;i<numBins;++i){const bin=this.allBins[i];if(bin.count>0){allBinsDict[i]=bin.serialize(serializer);}}\nreturn allBinsDict;}\nconst allBinsArray=[];for(let i=0;i<numBins;++i){allBinsArray.push(this.allBins[i].serialize(serializer));}\nreturn allBinsArray;}\nallBinsAsDict_(){const numBins=this.allBins.length;let emptyBins=0;for(let i=0;i<numBins;++i){if(this.allBins[i].count===0){++emptyBins;}}\nif(emptyBins===numBins){return undefined;}\nif(emptyBins>(numBins/2)){const allBinsDict={};for(let i=0;i<numBins;++i){const bin=this.allBins[i];if(bin.count>0){allBinsDict[i]=bin.asDict();}}\nreturn allBinsDict;}\nconst allBinsArray=[];for(let i=0;i<numBins;++i){allBinsArray.push(this.allBins[i].asDict());}\nreturn allBinsArray;}\nget defaultMaxNumSampleValues_(){return DEFAULT_SAMPLE_VALUES_PER_BIN*Math.max(this.allBins.length,DEFAULT_REBINNED_COUNT);}}\nHistogram.AVERAGE_ONLY_SUMMARY_OPTIONS={count:false,max:false,min:false,std:false,sum:false,};const HISTOGRAM_BIN_BOUNDARIES_CACHE=new Map();class HistogramBinBoundaries{static createLinear(min,max,numBins){return new HistogramBinBoundaries(min).addLinearBins(max,numBins);}\nstatic createExponential(min,max,numBins){return new HistogramBinBoundaries(min).addExponentialBins(max,numBins);}\nstatic createWithBoundaries(binBoundaries){const builder=new HistogramBinBoundaries(binBoundaries[0]);for(const boundary of binBoundaries.slice(1)){builder.addBinBoundary(boundary);}\nreturn builder;}\nconstructor(minBinBoundary){this.builder_=[minBinBoundary];this.range_=new tr.b.math.Range();this.range_.addValue(minBinBoundary);this.binRanges_=undefined;this.bins_=undefined;}\nget range(){return this.range_;}\nasDict(){if(this.builder_.length===1&&this.builder_[0]===Number.MAX_VALUE){return undefined;}\nreturn this.builder_;}\npushBuilderSlice_(slice){this.builder_.push(slice);this.builder_=this.builder_.slice();}\nstatic fromDict(dict){if(dict===undefined){return HistogramBinBoundaries.SINGULAR;}\nconst cacheKey=JSON.stringify(dict);if(HISTOGRAM_BIN_BOUNDARIES_CACHE.has(cacheKey)){return HISTOGRAM_BIN_BOUNDARIES_CACHE.get(cacheKey);}\nconst binBoundaries=new HistogramBinBoundaries(dict[0]);for(const slice of dict.slice(1)){if(!(slice instanceof Array)){binBoundaries.addBinBoundary(slice);continue;}\nswitch(slice[0]){case HistogramBinBoundaries.SLICE_TYPE.LINEAR:binBoundaries.addLinearBins(slice[1],slice[2]);break;case HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL:binBoundaries.addExponentialBins(slice[1],slice[2]);break;default:throw new Error('Unrecognized HistogramBinBoundaries slice type');}}\nHISTOGRAM_BIN_BOUNDARIES_CACHE.set(cacheKey,binBoundaries);return binBoundaries;}\nget bins(){if(this.bins_===undefined){this.buildBins_();}\nreturn this.bins_;}\nbuildBins_(){this.bins_=this.binRanges.map(r=>new HistogramBin(r));}\nget binRanges(){if(this.binRanges_===undefined){this.buildBinRanges_();}\nreturn this.binRanges_;}\nbuildBinRanges_(){if(typeof this.builder_[0]!=='number'){throw new Error('Invalid start of builder_');}\nthis.binRanges_=[];let prevBoundary=this.builder_[0];if(prevBoundary>-Number.MAX_VALUE){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(-Number.MAX_VALUE,prevBoundary));}\nfor(const slice of this.builder_.slice(1)){if(!(slice instanceof Array)){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,slice));prevBoundary=slice;continue;}\nconst nextMaxBinBoundary=slice[1];const binCount=slice[2];const sliceMinBinBoundary=prevBoundary;switch(slice[0]){case HistogramBinBoundaries.SLICE_TYPE.LINEAR:{const binWidth=(nextMaxBinBoundary-prevBoundary)/binCount;for(let i=1;i<binCount;i++){const boundary=sliceMinBinBoundary+i*binWidth;this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,boundary));prevBoundary=boundary;}\nbreak;}\ncase HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL:{const binExponentWidth=Math.log(nextMaxBinBoundary/prevBoundary)/binCount;for(let i=1;i<binCount;i++){const boundary=sliceMinBinBoundary*Math.exp(i*binExponentWidth);this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,boundary));prevBoundary=boundary;}\nbreak;}\ndefault:throw new Error('Unrecognized HistogramBinBoundaries slice type');}\nthis.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,nextMaxBinBoundary));prevBoundary=nextMaxBinBoundary;}\nif(prevBoundary<Number.MAX_VALUE){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,Number.MAX_VALUE));}}\naddBinBoundary(nextMaxBinBoundary){if(nextMaxBinBoundary<=this.range.max){throw new Error('The added max bin boundary must be larger than '+'the current max boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_(nextMaxBinBoundary);this.range.addValue(nextMaxBinBoundary);return this;}\naddLinearBins(nextMaxBinBoundary,binCount){if(binCount<=0){throw new Error('Bin count must be positive');}\nif(nextMaxBinBoundary<=this.range.max){throw new Error('The new max bin boundary must be greater than '+'the previous max bin boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_([HistogramBinBoundaries.SLICE_TYPE.LINEAR,nextMaxBinBoundary,binCount]);this.range.addValue(nextMaxBinBoundary);return this;}\naddExponentialBins(nextMaxBinBoundary,binCount){if(binCount<=0){throw new Error('Bin count must be positive');}\nif(this.range.max<=0){throw new Error('Current max bin boundary must be positive');}\nif(this.range.max>=nextMaxBinBoundary){throw new Error('The last added max boundary must be greater than '+'the current max boundary boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_([HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL,nextMaxBinBoundary,binCount]);this.range.addValue(nextMaxBinBoundary);return this;}}\nHistogramBinBoundaries.SLICE_TYPE={LINEAR:0,EXPONENTIAL:1,};HistogramBinBoundaries.SINGULAR=new HistogramBinBoundaries(Number.MAX_VALUE);DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeDurationInMs.unitName,HistogramBinBoundaries.createExponential(1e-3,1e6,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeInMsAutoFormat.unitName,new HistogramBinBoundaries(0).addBinBoundary(1).addExponentialBins(1e3,3).addBinBoundary(tr.b.convertUnit(2,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(5,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(10,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(30,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(5*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(10*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(30*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(6*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(12*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.DAY.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.WEEK.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MONTH.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.YEAR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeStampInMs.unitName,HistogramBinBoundaries.createLinear(0,1e10,1e3));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.normalizedPercentage.unitName,HistogramBinBoundaries.createLinear(0,1.0,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sizeInBytes.unitName,HistogramBinBoundaries.createExponential(1,1e12,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.energyInJoules.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.powerInWatts.unitName,HistogramBinBoundaries.createExponential(1e-3,1,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.unitlessNumber.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.count.unitName,HistogramBinBoundaries.createExponential(1,1e3,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sigma.unitName,HistogramBinBoundaries.createLinear(-5,5,50));return{DEFAULT_REBINNED_COUNT,DELTA,Histogram,HistogramBinBoundaries,P_VALUE_NAME,U_STATISTIC_NAME,Z_SCORE_NAME,percentFromString,percentToString,};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-context-controller',created(){this.host_=undefined;this.groupToContext_=new Map();this.dirtyGroups_=new Set();},attached(){if(this.host_){throw new Error('Scalar context controller is already attached to a host');}\nconst host=findParentOrHost(this);if(host.__scalarContextController){throw new Error('Multiple scalar context controllers attached to this host');}\nhost.__scalarContextController=this;this.host_=host;},detached(){if(!this.host_){throw new Error('Scalar context controller is not attached to a host');}\nif(this.host_.__scalarContextController!==this){throw new Error('Scalar context controller is not attached to its host');}\ndelete this.host_.__scalarContextController;this.host_=undefined;},getContext(group){return this.groupToContext_.get(group);},onScalarSpanAdded(group,span){let context=this.groupToContext_.get(group);if(context===undefined){context={spans:new Set(),range:new tr.b.math.Range()};this.groupToContext_.set(group,context);}\nif(context.spans.has(span)){throw new Error('Scalar span already registered with group: '+group);}\ncontext.spans.add(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanRemoved(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}\ncontext.spans.delete(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanUpdated(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}\nthis.markGroupDirtyAndScheduleUpdate_(group);},markGroupDirtyAndScheduleUpdate_(group){const alreadyDirty=this.dirtyGroups_.size>0;this.dirtyGroups_.add(group);if(!alreadyDirty){tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContext,this);}},updateContext(){const groups=this.dirtyGroups_;if(groups.size===0)return;this.dirtyGroups_=new Set();for(const group of groups){this.updateGroup_(group);}\nconst event=new tr.b.Event('context-updated');event.groups=groups;this.dispatchEvent(event);},updateGroup_(group){const context=this.groupToContext_.get(group);if(context.spans.size===0){this.groupToContext_.delete(group);return;}\ncontext.range.reset();for(const span of context.spans){context.range.addValue(span.value);}}});function getScalarContextControllerForElement(element){while(element){if(element.__scalarContextController){return element.__scalarContextController;}\nelement=findParentOrHost(element);}\nreturn undefined;}\nfunction findParentOrHost(node){if(node.parentElement){return node.parentElement;}\nwhile(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}\nreturn node.host;}\nreturn{getScalarContextControllerForElement,};});'use strict';tr.exportTo('tr.v.ui',function(){function createScalarSpan(value,opt_config){if(value===undefined)return'';const config=opt_config||{};const ownerDocument=config.ownerDocument||document;const span=unwrap(ownerDocument).createElement('tr-v-ui-scalar-span');let numericValue;if(value instanceof tr.b.Scalar){span.value=value;numericValue=value.value;}else if(value instanceof tr.v.Histogram){numericValue=value.average;if(numericValue===undefined)return'';span.setValueAndUnit(numericValue,value.unit);}else{const unit=config.unit;if(unit===undefined){throw new Error('Unit must be provided in config when value is a number');}\nspan.setValueAndUnit(value,unit);numericValue=value;}\nif(config.context){span.context=config.context;}\nif(config.customContextRange){span.customContextRange=config.customContextRange;}\nif(config.leftAlign){span.leftAlign=true;}\nif(config.inline){span.inline=true;}\nif(config.significance!==undefined){span.significance=config.significance;}\nif(config.contextGroup!==undefined){span.contextGroup=config.contextGroup;}\nreturn span;}\nreturn{createScalarSpan,};});'use strict';Polymer({is:'tr-v-ui-scalar-span',properties:{contextGroup:{type:String,reflectToAttribute:true,observer:'contextGroupChanged_'}},created(){this.value_=undefined;this.unit_=undefined;this.context_=undefined;this.warning_=undefined;this.significance_=tr.b.math.Statistics.Significance.DONT_CARE;this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;this.onContextUpdated_=this.onContextUpdated_.bind(this);this.updateContents_=this.updateContents_.bind(this);this.customContextRange_=undefined;},get significance(){return this.significance_;},set significance(s){this.significance_=s;this.updateContents_();},set contentTextDecoration(deco){this.$.content.style.textDecoration=deco;},get value(){return this.value_;},set value(value){if(value instanceof tr.b.Scalar){this.value_=value.value;this.unit_=value.unit;}else{this.value_=value;}\nthis.updateContents_();if(this.hasContext_(this.contextGroup)){this.contextController_.onScalarSpanUpdated(this.contextGroup,this);}else{this.updateSparkline_();}},get contextController_(){if(this.shouldSearchForContextController_){this.lazyContextController_=tr.v.ui.getScalarContextControllerForElement(this);this.shouldSearchForContextController_=false;}\nreturn this.lazyContextController_;},hasContext_(contextGroup){return!!(contextGroup&&this.contextController_);},contextGroupChanged_(newContextGroup,oldContextGroup){this.detachFromContextControllerIfPossible_(oldContextGroup);if(!this.attachToContextControllerIfPossible_(newContextGroup)){this.onContextUpdated_();}},attachToContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return false;this.contextController_.addEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanAdded(contextGroup,this);return true;},detachFromContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return;this.contextController_.removeEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanRemoved(contextGroup,this);},attached(){tr.b.Unit.addEventListener('display-mode-changed',this.updateContents_);this.shouldSearchForContextController_=true;this.attachToContextControllerIfPossible_(this.contextGroup);},detached(){tr.b.Unit.removeEventListener('display-mode-changed',this.updateContents_);this.detachFromContextControllerIfPossible_(this.contextGroup);this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;},onContextUpdated_(){this.updateSparkline_();},get context(){return this.context_;},set context(context){this.context_=context;this.updateContents_();},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();this.updateSparkline_();},setValueAndUnit(value,unit){this.value_=value;this.unit_=unit;this.updateContents_();},get customContextRange(){return this.customContextRange_;},set customContextRange(customContextRange){this.customContextRange_=customContextRange;this.updateSparkline_();},get inline(){return Polymer.dom(this).classList.contains('inline');},set inline(inline){if(inline){Polymer.dom(this).classList.add('inline');}else{Polymer.dom(this).classList.remove('inline');}},get leftAlign(){return Polymer.dom(this).classList.contains('left-align');},set leftAlign(leftAlign){if(leftAlign){Polymer.dom(this).classList.add('left-align');}else{Polymer.dom(this).classList.remove('left-align');}},updateSparkline_(){Polymer.dom(this.$.sparkline).classList.remove('positive');Polymer.dom(this.$.sparkline).classList.remove('better');Polymer.dom(this.$.sparkline).classList.remove('worse');Polymer.dom(this.$.sparkline).classList.remove('same');this.$.sparkline.style.display='none';this.$.sparkline.style.left='0';this.$.sparkline.style.width='0';let range=this.customContextRange_;if(!range&&this.hasContext_(this.contextGroup)){const context=this.contextController_.getContext(this.contextGroup);if(context){range=context.range;}}\nif(!range||range.isEmpty)return;const leftPoint=Math.min(range.min,0);const rightPoint=Math.max(range.max,0);const pointDistance=rightPoint-leftPoint;if(pointDistance===0){return;}\nthis.$.sparkline.style.display='block';let left;let width;if(this.value>0){width=Math.min(this.value,rightPoint);left=-leftPoint;Polymer.dom(this.$.sparkline).classList.add('positive');}else if(this.value<=0){width=-Math.max(this.value,leftPoint);left=(-leftPoint)-width;}\nthis.$.sparkline.style.left=this.buildSparklineStyle_(left/pointDistance,false);this.$.sparkline.style.width=this.buildSparklineStyle_(width/pointDistance,true);const changeClass=this.changeClassName_;if(changeClass){Polymer.dom(this.$.sparkline).classList.add(changeClass);}},buildSparklineStyle_(ratio,isWidth){let position='calc('+ratio+' * (100% - 1px)';if(isWidth){position+=' + 1px';}\nposition+=')';return position;},updateContents_(){Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).classList.remove('better');Polymer.dom(this.$.content).classList.remove('worse');Polymer.dom(this.$.content).classList.remove('same');this.$.insignificant.style.display='';this.$.significantly_better.style.display='';this.$.significantly_worse.style.display='';if(this.unit_===undefined)return;this.$.content.title='';Polymer.dom(this.$.content).textContent=this.unit_.format(this.value,this.context);this.updateDelta_();},updateDelta_(){let changeClass=this.changeClassName_;if(!changeClass){this.$.significance.style.display='none';return;}\nthis.$.significance.style.display='inline';let title;switch(changeClass){case'better':title='improvement';break;case'worse':title='regression';break;case'same':title='no change';break;default:throw new Error('Unknown change class: '+changeClass);}\nPolymer.dom(this.$.content).classList.add(changeClass);switch(this.significance){case tr.b.math.Statistics.Significance.DONT_CARE:break;case tr.b.math.Statistics.Significance.INSIGNIFICANT:if(changeClass!=='same')title='insignificant '+title;this.$.insignificant.style.display='inline';changeClass='same';break;case tr.b.math.Statistics.Significance.SIGNIFICANT:if(changeClass==='same'){throw new Error('How can no change be significant?');}\nthis.$['significantly_'+changeClass].style.display='inline';title='significant '+title;break;default:throw new Error('Unknown significance '+this.significance);}\nthis.$.significance.title=title;this.$.content.title=title;},get changeClassName_(){if(!this.unit_||!this.unit_.isDelta)return undefined;switch(this.unit_.improvementDirection){case tr.b.ImprovementDirection.DONT_CARE:return undefined;case tr.b.ImprovementDirection.BIGGER_IS_BETTER:if(this.value===0)return'same';return this.value>0?'better':'worse';case tr.b.ImprovementDirection.SMALLER_IS_BETTER:if(this.value===0)return'same';return this.value<0?'better':'worse';default:throw new Error('Unknown improvement direction: '+\nthis.unit_.improvementDirection);}},get warning(){return this.warning_;},set warning(warning){this.warning_=warning;const warningEl=this.$.warning;if(this.warning_){warningEl.title=warning;warningEl.style.display='inline';}else{warningEl.title='';warningEl.style.display='';}},get timestamp(){return this.value;},set timestamp(timestamp){if(timestamp instanceof tr.b.u.TimeStamp){this.value=timestamp;return;}\nthis.setValueAndUnit(timestamp,tr.b.u.Units.timeStampInMs);},get duration(){return this.value;},set duration(duration){if(duration instanceof tr.b.u.TimeDuration){this.value=duration;return;}\nthis.setValueAndUnit(duration,tr.b.u.Units.timeDurationInMs);}});'use strict';function isTable(object){if(!(object instanceof Array)||(object.length<2))return false;for(const colName in object[0]){if(typeof colName!=='string')return false;}\nfor(let i=0;i<object.length;++i){if(!(object[i]instanceof Object))return false;for(const colName in object[i]){if(i&&(object[0][colName]===undefined))return false;const cellType=typeof object[i][colName];if(cellType!=='string'&&cellType!=='number')return false;}\nif(i){for(const colName in object[0]){if(object[i][colName]===undefined)return false;}}}\nreturn true;}\nPolymer({is:'tr-ui-a-generic-object-view',ready(){this.object_=undefined;},get object(){return this.object_;},set object(object){this.object_=object;this.updateContents_();},updateContents_(){Polymer.dom(this.$.content).textContent='';this.appendElementsForType_('',this.object_,0,0,5,'');},appendElementsForType_(label,object,indent,depth,maxDepth,suffix){if(depth>maxDepth){this.appendSimpleText_(label,indent,'<recursion limit reached>',suffix);return;}\nif(object===undefined){this.appendSimpleText_(label,indent,'undefined',suffix);return;}\nif(object===null){this.appendSimpleText_(label,indent,'null',suffix);return;}\nif(!(object instanceof Object)){const type=typeof object;if(type!=='string'){return this.appendSimpleText_(label,indent,object,suffix);}\nlet objectReplaced=false;if((object[0]==='{'&&object[object.length-1]==='}')||(object[0]==='['&&object[object.length-1]===']')){try{object=JSON.parse(object);objectReplaced=true;}catch(e){}}\nif(!objectReplaced){if(object.includes('\\n')){const lines=object.split('\\n');lines.forEach(function(line,i){let text;let ioff;let ll;let ss;if(i===0){text='\"'+line;ioff=0;ll=label;ss='';}else if(i<lines.length-1){text=line;ioff=1;ll='';ss='';}else{text=line+'\"';ioff=1;ll='';ss=suffix;}\nconst el=this.appendSimpleText_(ll,indent+ioff*label.length+ioff,text,ss);el.style.whiteSpace='pre';return el;},this);return;}\nif(tr.b.isUrl(object)){const link=document.createElement('a');link.href=object;link.textContent=object;this.appendElementWithLabel_(label,indent,link,suffix);return;}\nthis.appendSimpleText_(label,indent,'\"'+object+'\"',suffix);return;}}\nif(object instanceof tr.model.ObjectSnapshot){const link=document.createElement('tr-ui-a-analysis-link');link.selection=new tr.model.EventSet(object);this.appendElementWithLabel_(label,indent,link,suffix);return;}\nif(object instanceof tr.model.ObjectInstance){const link=document.createElement('tr-ui-a-analysis-link');link.selection=new tr.model.EventSet(object);this.appendElementWithLabel_(label,indent,link,suffix);return;}\nif(object instanceof tr.b.math.Rect){this.appendSimpleText_(label,indent,object.toString(),suffix);return;}\nif(object instanceof tr.b.Scalar){const el=this.ownerDocument.createElement('tr-v-ui-scalar-span');el.value=object;el.inline=true;this.appendElementWithLabel_(label,indent,el,suffix);return;}\nif(object instanceof Array){this.appendElementsForArray_(label,object,indent,depth,maxDepth,suffix);return;}\nthis.appendElementsForObject_(label,object,indent,depth,maxDepth,suffix);},appendElementsForArray_(label,object,indent,depth,maxDepth,suffix){if(object.length===0){this.appendSimpleText_(label,indent,'[]',suffix);return;}\nif(isTable(object)){const table=document.createElement('tr-ui-b-table');const columns=[];for(const colName of Object.keys(object[0])){let allStrings=true;let allNumbers=true;for(let i=0;i<object.length;++i){if(typeof(object[i][colName])!=='string'){allStrings=false;}\nif(typeof(object[i][colName])!=='number'){allNumbers=false;}\nif(!allStrings&&!allNumbers)break;}\nconst column={title:colName};column.value=function(row){return row[colName];};if(allStrings){column.cmp=function(x,y){return x[colName].localeCompare(y[colName]);};}else if(allNumbers){column.cmp=function(x,y){return x[colName]-y[colName];};}\ncolumns.push(column);}\ntable.tableColumns=columns;table.tableRows=object;this.appendElementWithLabel_(label,indent,table,suffix);table.rebuild();return;}\nthis.appendElementsForType_(label+'[',object[0],indent,depth+1,maxDepth,object.length>1?',':']'+suffix);for(let i=1;i<object.length;i++){this.appendElementsForType_('',object[i],indent+label.length+1,depth+1,maxDepth,i<object.length-1?',':']'+suffix);}\nreturn;},appendElementsForObject_(label,object,indent,depth,maxDepth,suffix){const keys=Object.keys(object);if(keys.length===0){this.appendSimpleText_(label,indent,'{}',suffix);return;}\nthis.appendElementsForType_(label+'{'+keys[0]+': ',object[keys[0]],indent,depth,maxDepth,keys.length>1?',':'}'+suffix);for(let i=1;i<keys.length;i++){this.appendElementsForType_(keys[i]+': ',object[keys[i]],indent+label.length+1,depth+1,maxDepth,i<keys.length-1?',':'}'+suffix);}},appendElementWithLabel_(label,indent,dataElement,suffix){const row=document.createElement('div');const indentSpan=document.createElement('span');indentSpan.style.whiteSpace='pre';for(let i=0;i<indent;i++){Polymer.dom(indentSpan).textContent+=' ';}\nPolymer.dom(row).appendChild(indentSpan);const labelSpan=document.createElement('span');Polymer.dom(labelSpan).textContent=label;Polymer.dom(row).appendChild(labelSpan);Polymer.dom(row).appendChild(dataElement);const suffixSpan=document.createElement('span');Polymer.dom(suffixSpan).textContent=suffix;Polymer.dom(row).appendChild(suffixSpan);row.dataElement=dataElement;Polymer.dom(this.$.content).appendChild(row);},appendSimpleText_(label,indent,text,suffix){const el=this.ownerDocument.createElement('span');Polymer.dom(el).textContent=text;this.appendElementWithLabel_(label,indent,el,suffix);return el;}});'use strict';Polymer({is:'tr-ui-a-generic-object-view-with-label',ready(){this.labelEl_=document.createElement('div');this.genericObjectView_=document.createElement('tr-ui-a-generic-object-view');Polymer.dom(this.root).appendChild(this.labelEl_);Polymer.dom(this.root).appendChild(this.genericObjectView_);},get label(){return Polymer.dom(this.labelEl_).textContent;},set label(label){Polymer.dom(this.labelEl_).textContent=label;},get object(){return this.genericObjectView_.object;},set object(object){this.genericObjectView_.object=object;}});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectSnapshotView=tr.ui.b.define('object-snapshot-view');ObjectSnapshotView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectSnapshot_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectSnapshot=obj;},get modelEvent(){return this.objectSnapshot;},get objectSnapshot(){return this.objectSnapshot_;},set objectSnapshot(i){this.objectSnapshot_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectSnapshotView;options.defaultMetadata={showInstances:true,showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectSnapshotView,options);return{ObjectSnapshotView,};});'use strict';Polymer({is:'tr-ui-b-drag-handle',created(){this.lastMousePos_=0;this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.target_=undefined;this.horizontal=true;this.observer_=new MutationObserver(this.didTargetMutate_.bind(this));this.targetSizesByModeKey_={};this.currentDraggingSize_=undefined;},get modeKey_(){return this.target_.className===''?'.':this.target_.className;},get target(){return this.target_;},set target(target){this.observer_.disconnect();this.target_=target;if(!this.target_)return;this.observer_.observe(this.target_,{attributes:true,attributeFilter:['class']});},get horizontal(){return this.horizontal_;},set horizontal(h){this.horizontal_=h;if(this.horizontal_){this.className='horizontal-drag-handle';}else{this.className='vertical-drag-handle';}},get vertical(){return!this.horizontal_;},set vertical(v){this.horizontal=!v;},forceMutationObserverFlush_(){const records=this.observer_.takeRecords();if(records.length){this.didTargetMutate_(records);}},didTargetMutate_(e){const modeSize=this.targetSizesByModeKey_[this.modeKey_];if(modeSize!==undefined){this.setTargetSize_(modeSize);return;}\nthis.target_.style[this.targetStyleKey_]='';},get targetStyleKey_(){return this.horizontal_?'height':'width';},getTargetSize_(){const size=parseInt(window.getComputedStyle(this.target_)[this.targetStyleKey_]);this.targetSizesByModeKey_[this.modeKey_]=size;return size;},setTargetSize_(s){this.target_.style[this.targetStyleKey_]=s+'px';this.targetSizesByModeKey_[this.modeKey_]=this.getTargetSize_();tr.b.dispatchSimpleEvent(this,'drag-handle-resize',true,false);resizeCodeSection();},applyDelta_(delta){if(this.target_===this.nextElementSibling){this.currentDraggingSize_+=delta;}else{this.currentDraggingSize_-=delta;}\nthis.setTargetSize_(this.currentDraggingSize_);},onMouseMove_(e){const curMousePos=this.horizontal_?e.clientY:e.clientX;const delta=this.lastMousePos_-curMousePos;this.applyDelta_(delta);this.lastMousePos_=curMousePos;e.preventDefault();return true;},onMouseDown_(e){if(!this.target_)return;this.forceMutationObserverFlush_();this.currentDraggingSize_=this.getTargetSize_();this.lastMousePos_=this.horizontal_?e.clientY:e.clientX;document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);e.preventDefault();return true;},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);e.preventDefault();this.currentDraggingSize_=undefined;}});'use strict';tr.exportTo('tr.ui.b',function(){function HotKey(dict){if(dict.eventType===undefined){throw new Error('eventType must be given');}\nif(dict.keyCode===undefined&&dict.keyCodes===undefined){throw new Error('keyCode or keyCodes must be given');}\nif(dict.keyCode!==undefined&&dict.keyCodes!==undefined){throw new Error('Only keyCode or keyCodes can be given');}\nif(dict.callback===undefined){throw new Error('callback must be given');}\nthis.eventType_=dict.eventType;this.keyCodes_=[];if(dict.keyCode){this.pushKeyCode_(dict.keyCode);}else if(dict.keyCodes){dict.keyCodes.forEach(this.pushKeyCode_,this);}\nthis.useCapture_=!!dict.useCapture;this.callback_=dict.callback;this.thisArg_=dict.thisArg!==undefined?dict.thisArg:undefined;this.helpText_=dict.helpText!==undefined?dict.helpText:undefined;}\nHotKey.prototype={get eventType(){return this.eventType_;},get keyCodes(){return this.keyCodes_;},get helpText(){return this.helpText_;},call(e){this.callback_.call(this.thisArg_,e);},pushKeyCode_(keyCode){this.keyCodes_.push(keyCode);}};return{HotKey,};});'use strict';Polymer({is:'tv-ui-b-hotkey-controller',created(){this.isAttached_=false;this.globalMode_=false;this.slavedToParentController_=undefined;this.curHost_=undefined;this.childControllers_=[];this.bubblingKeyDownHotKeys_={};this.capturingKeyDownHotKeys_={};this.bubblingKeyPressHotKeys_={};this.capturingKeyPressHotKeys_={};this.onBubblingKeyDown_=this.onKey_.bind(this,false);this.onCapturingKeyDown_=this.onKey_.bind(this,true);this.onBubblingKeyPress_=this.onKey_.bind(this,false);this.onCapturingKeyPress_=this.onKey_.bind(this,true);},attached(){this.isAttached_=true;const host=this.findHost_();if(host.__hotkeyController){throw new Error('Multiple hotkey controllers attached to this host');}\nhost.__hotkeyController=this;this.curHost_=host;let parentElement;if(host.parentElement){parentElement=host.parentElement;}else{parentElement=Polymer.dom(host).parentNode.host;}\nconst parentController=tr.b.getHotkeyControllerForElement(parentElement);if(parentController){this.slavedToParentController_=parentController;parentController.addChildController_(this);return;}\nhost.addEventListener('keydown',this.onBubblingKeyDown_,false);host.addEventListener('keydown',this.onCapturingKeyDown_,true);host.addEventListener('keypress',this.onBubblingKeyPress_,false);host.addEventListener('keypress',this.onCapturingKeyPress_,true);},detached(){this.isAttached_=false;const host=this.curHost_;if(!host)return;delete host.__hotkeyController;this.curHost_=undefined;if(this.slavedToParentController_){this.slavedToParentController_.removeChildController_(this);this.slavedToParentController_=undefined;return;}\nhost.removeEventListener('keydown',this.onBubblingKeyDown_,false);host.removeEventListener('keydown',this.onCapturingKeyDown_,true);host.removeEventListener('keypress',this.onBubblingKeyPress_,false);host.removeEventListener('keypress',this.onCapturingKeyPress_,true);},addChildController_(controller){const i=this.childControllers_.indexOf(controller);if(i!==-1){throw new Error('Controller already registered');}\nthis.childControllers_.push(controller);},removeChildController_(controller){const i=this.childControllers_.indexOf(controller);if(i===-1){throw new Error('Controller not registered');}\nthis.childControllers_.splice(i,1);return controller;},getKeyMapForEventType_(eventType,useCapture){if(eventType==='keydown'){if(!useCapture){return this.bubblingKeyDownHotKeys_;}\nreturn this.capturingKeyDownHotKeys_;}\nif(eventType==='keypress'){if(!useCapture){return this.bubblingKeyPressHotKeys_;}\nreturn this.capturingKeyPressHotKeys_;}\nthrow new Error('Unsupported key event');},addHotKey(hotKey){if(!(hotKey instanceof tr.ui.b.HotKey)){throw new Error('hotKey must be a tr.ui.b.HotKey');}\nconst keyMap=this.getKeyMapForEventType_(hotKey.eventType,hotKey.useCapture);for(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];if(keyMap[keyCode]){throw new Error('Key is already bound for keyCode='+keyCode);}}\nfor(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];keyMap[keyCode]=hotKey;}\nreturn hotKey;},removeHotKey(hotKey){if(!(hotKey instanceof tr.ui.b.HotKey)){throw new Error('hotKey must be a tr.ui.b.HotKey');}\nconst keyMap=this.getKeyMapForEventType_(hotKey.eventType,hotKey.useCapture);for(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];if(!keyMap[keyCode]){throw new Error('Key is not bound for keyCode='+keyCode);}\nkeyMap[keyCode]=hotKey;}\nfor(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];delete keyMap[keyCode];}\nreturn hotKey;},get globalMode(){return this.globalMode_;},set globalMode(globalMode){const wasAttached=this.isAttached_;if(wasAttached){this.detached();}\nthis.globalMode_=!!globalMode;if(wasAttached){this.attached();}},get topmostConroller_(){if(this.slavedToParentController_){return this.slavedToParentController_.topmostConroller_;}\nreturn this;},childRequestsGeneralFocus(child){const topmost=this.topmostConroller_;if(topmost.curHost_){if(topmost.curHost_.hasAttribute('tabIndex')){topmost.curHost_.focus();}else{if(document.activeElement){document.activeElement.blur();}}}else{if(document.activeElement){document.activeElement.blur();}}},childRequestsBlur(child){child.blur();const topmost=this.topmostConroller_;if(topmost.curHost_){topmost.curHost_.focus();}},findHost_(){if(this.globalMode_)return wrap(document.body);if(this.parentElement)return this.parentElement;if(!Polymer.dom(this).parentNode)return this.host;let node=this.parentNode;while(Polymer.dom(node).parentNode)node=Polymer.dom(node).parentNode;return node.host;},appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e){const localKeyMap=this.getKeyMapForEventType_(e.type,useCapture);const localHotKey=localKeyMap[e.keyCode];if(localHotKey){matchedHotKeys.push(localHotKey);}\nfor(let i=0;i<this.childControllers_.length;i++){const controller=this.childControllers_[i];controller.appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e);}},onKey_(useCapture,e){if(!useCapture&&e.path[0].tagName==='INPUT')return;let sortedControllers;const matchedHotKeys=[];this.appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e);if(matchedHotKeys.length===0)return false;if(matchedHotKeys.length>1){throw new Error('More than one hotKey is currently unsupported');}\nconst hotKey=matchedHotKeys[0];let prevented=0;prevented|=hotKey.call(e);return!prevented&&e.defaultPrevented;}});'use strict';tr.exportTo('tr.b',function(){function getHotkeyControllerForElement(refElement){let curElement=refElement;while(curElement){if(curElement.tagName==='tv-ui-b-hotkey-controller'){return curElement;}\nif(curElement.__hotkeyController){return curElement.__hotkeyController;}\nif(curElement.parentElement){curElement=curElement.parentElement;continue;}\ncurElement=findHost(curElement);}\nreturn undefined;}\nfunction findHost(initialNode){let node=initialNode;while(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}\nreturn node.host;}\nreturn{getHotkeyControllerForElement,};});'use strict';Polymer({is:'tr-ui-b-info-bar',ready(){this.messageEl_=this.$.message;this.buttonsEl_=this.$.buttons;this.message='';},get message(){return Polymer.dom(this.messageEl_).textContent;},set message(message){Polymer.dom(this.messageEl_).textContent=message;},get visible(){return!this.hidden;},set visible(visible){this.hidden=!visible;},removeAllButtons(){Polymer.dom(this.buttonsEl_).textContent='';},addButton(text,clickCallback){const button=document.createElement('button');Polymer.dom(button).textContent=text;button.addEventListener('click',event=>clickCallback(event,this));Polymer.dom(this.buttonsEl_).appendChild(button);return button;}});'use strict';tr.exportTo('tr.ui.b',function(){const ContainerThatDecoratesItsChildren=tr.ui.b.define('div');ContainerThatDecoratesItsChildren.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.observer_=new MutationObserver(this.didMutate_.bind(this));this.observer_.observe(this,{childList:true});Object.defineProperty(this,'textContent',{get:undefined,set:this.onSetTextContent_});},appendChild(x){HTMLDivElement.prototype.appendChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},insertBefore(x,y){HTMLDivElement.prototype.insertBefore.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},removeChild(x){HTMLDivElement.prototype.removeChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},replaceChild(x,y){HTMLDivElement.prototype.replaceChild.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},onSetTextContent_(textContent){if(textContent!==''){throw new Error('textContent can only be set to \\'\\'.');}\nthis.clear();},clear(){while(Polymer.dom(this).lastChild){HTMLDivElement.prototype.removeChild.call(this,Polymer.dom(this).lastChild);}\nthis.didMutate_(this.observer_.takeRecords());},didMutate_(records){this.beginDecorating_();for(let i=0;i<records.length;i++){const addedNodes=records[i].addedNodes;if(addedNodes){for(let j=0;j<addedNodes.length;j++){this.decorateChild_(addedNodes[j]);}}\nconst removedNodes=records[i].removedNodes;if(removedNodes){for(let j=0;j<removedNodes.length;j++){this.undecorateChild_(removedNodes[j]);}}}\nthis.doneDecoratingForNow_();},decorateChild_(child){throw new Error('Not implemented');},undecorateChild_(child){throw new Error('Not implemented');},beginDecorating_(){},doneDecoratingForNow_(){}};return{ContainerThatDecoratesItsChildren,};});'use strict';tr.exportTo('tr.ui.b',function(){const ListView=tr.ui.b.define('x-list-view',tr.ui.b.ContainerThatDecoratesItsChildren);ListView.prototype={__proto__:tr.ui.b.ContainerThatDecoratesItsChildren.prototype,decorate(){tr.ui.b.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);Polymer.dom(this).classList.add('x-list-view');this.style.display='block';this.style.userSelect='none';this.style.outline='none';this.onItemClicked_=this.onItemClicked_.bind(this);this.onKeyDown_=this.onKeyDown_.bind(this);this.tabIndex=0;this.addEventListener('keydown',this.onKeyDown_);this.selectionChanged_=false;},decorateChild_(item){Polymer.dom(item).classList.add('list-item');item.style.paddingTop='2px';item.style.paddingRight='4px';item.style.paddingBottom='2px';item.style.paddingLeft='4px';item.addEventListener('click',this.onItemClicked_,true);Object.defineProperty(item,'selected',{configurable:true,get:()=>item.hasAttribute('selected'),set:value=>{const oldSelection=this.selectedElement;if(oldSelection&&oldSelection!==item&&value){Polymer.dom(this.selectedElement).removeAttribute('selected');}\nif(value){Polymer.dom(item).setAttribute('selected','selected');item.style.backgroundColor='rgb(171, 217, 202)';item.style.outline='1px dotted rgba(0,0,0,0.1)';item.style.outlineOffset=0;}else{Polymer.dom(item).removeAttribute('selected');item.style.backgroundColor='';}\nconst newSelection=this.selectedElement;if(newSelection!==oldSelection){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},});},undecorateChild_(item){this.selectionChanged_|=item.selected;Polymer.dom(item).classList.remove('list-item');item.removeEventListener('click',this.onItemClicked_);delete item.selected;},beginDecorating_(){this.selectionChanged_=false;},doneDecoratingForNow_(){if(this.selectionChanged_){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},get selectedElement(){const el=Polymer.dom(this).querySelector('.list-item[selected]');if(!el)return undefined;return el;},set selectedElement(el){if(!el){if(this.selectedElement){this.selectedElement.selected=false;}\nreturn;}\nif(el.parentElement!==this){throw new Error('Can only select elements that are children of this list view');}\nel.selected=true;},getElementByIndex(index){return Polymer.dom(this).querySelector('.list-item:nth-child('+index+')');},clear(){const changed=this.selectedElement!==undefined;tr.ui.b.ContainerThatDecoratesItsChildren.prototype.clear.call(this);if(changed){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},onItemClicked_(e){const currentSelectedElement=this.selectedElement;if(currentSelectedElement){Polymer.dom(currentSelectedElement).removeAttribute('selected');}\nlet element=e.target;while(element.parentElement!==this){element=element.parentElement;}\nif(element!==currentSelectedElement){Polymer.dom(element).setAttribute('selected','selected');}\ntr.b.dispatchSimpleEvent(this,'selection-changed',false);},onKeyDown_(e){if(this.selectedElement===undefined)return;if(e.keyCode===38){const prev=Polymer.dom(this.selectedElement).previousSibling;if(prev){prev.selected=true;tr.ui.b.scrollIntoViewIfNeeded(prev);e.preventDefault();return true;}}else if(e.keyCode===40){const next=Polymer.dom(this.selectedElement).nextSibling;if(next){next.selected=true;tr.ui.b.scrollIntoViewIfNeeded(next);e.preventDefault();return true;}}},addItem(textContent){const item=document.createElement('div');Polymer.dom(item).textContent=textContent;Polymer.dom(this).appendChild(item);item.style.userSelect='none';return item;}};return{ListView,};});'use strict';tr.exportTo('tr.ui.b',function(){const MOUSE_SELECTOR_MODE={};MOUSE_SELECTOR_MODE.SELECTION=0x1;MOUSE_SELECTOR_MODE.PANSCAN=0x2;MOUSE_SELECTOR_MODE.ZOOM=0x4;MOUSE_SELECTOR_MODE.TIMING=0x8;MOUSE_SELECTOR_MODE.ROTATE=0x10;MOUSE_SELECTOR_MODE.ALL_MODES=0x1F;const MOUSE_SELECTOR_MODE_INFOS={};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.PANSCAN]={name:'PANSCAN',mode:MOUSE_SELECTOR_MODE.PANSCAN,title:'pan',eventNames:{enter:'enterpan',begin:'beginpan',update:'updatepan',end:'endpan',exit:'exitpan'},activeBackgroundPosition:'-30px -10px',defaultBackgroundPosition:'0 -10px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.SELECTION]={name:'SELECTION',mode:MOUSE_SELECTOR_MODE.SELECTION,title:'selection',eventNames:{enter:'enterselection',begin:'beginselection',update:'updateselection',end:'endselection',exit:'exitselection'},activeBackgroundPosition:'-30px -40px',defaultBackgroundPosition:'0 -40px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.ZOOM]={name:'ZOOM',mode:MOUSE_SELECTOR_MODE.ZOOM,title:'zoom',eventNames:{enter:'enterzoom',begin:'beginzoom',update:'updatezoom',end:'endzoom',exit:'exitzoom'},activeBackgroundPosition:'-30px -70px',defaultBackgroundPosition:'0 -70px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.TIMING]={name:'TIMING',mode:MOUSE_SELECTOR_MODE.TIMING,title:'timing',eventNames:{enter:'entertiming',begin:'begintiming',update:'updatetiming',end:'endtiming',exit:'exittiming'},activeBackgroundPosition:'-30px -100px',defaultBackgroundPosition:'0 -100px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.ROTATE]={name:'ROTATE',mode:MOUSE_SELECTOR_MODE.ROTATE,title:'rotate',eventNames:{enter:'enterrotate',begin:'beginrotate',update:'updaterotate',end:'endrotate',exit:'exitrotate'},activeBackgroundPosition:'-30px -130px',defaultBackgroundPosition:'0 -130px'};return{MOUSE_SELECTOR_MODE_INFOS,MOUSE_SELECTOR_MODE,};});'use strict';Polymer({is:'tr-ui-b-mouse-mode-icon',properties:{modeName:{type:String,reflectToAttribute:true,observer:'modeNameChanged'},},created(){this.active_=false;this.acceleratorKey_=undefined;},ready(){this.updateContents_();},get mode(){return tr.ui.b.MOUSE_SELECTOR_MODE[this.modeName];},set mode(mode){const modeInfo=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS[mode];if(modeInfo===undefined){throw new Error('Unknown mode');}\nthis.modeName=modeInfo.name;},modeNameChanged(){this.updateContents_();},get active(){return this.active_;},set active(active){this.active_=!!active;if(this.active_){Polymer.dom(this).classList.add('active');}else{Polymer.dom(this).classList.remove('active');}\nthis.updateContents_();},get acceleratorKey(){return this.acceleratorKey_;},set acceleratorKey(acceleratorKey){this.acceleratorKey_=acceleratorKey;this.updateContents_();},updateContents_(){if(this.modeName===undefined)return;const mode=this.mode;if(mode===undefined){throw new Error('Invalid mode');}\nconst modeInfo=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS[mode];if(!modeInfo){throw new Error('Invalid mode');}\nlet title=modeInfo.title;if(this.acceleratorKey_){title=title+' ('+this.acceleratorKey_+')';}\nthis.title=title;let bp;if(this.active_){bp=modeInfo.activeBackgroundPosition;}else{bp=modeInfo.defaultBackgroundPosition;}\nthis.style.backgroundPosition=bp;}});'use strict';tr.exportTo('tr.ui.b',function(){function MouseTracker(opt_targetElement){this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.targetElement=opt_targetElement;}\nMouseTracker.prototype={get targetElement(){return this.targetElement_;},set targetElement(targetElement){if(this.targetElement_){this.targetElement_.removeEventListener('mousedown',this.onMouseDown_);}\nthis.targetElement_=targetElement;if(this.targetElement_){this.targetElement_.addEventListener('mousedown',this.onMouseDown_);}},onMouseDown_(e){if(e.button!==0)return true;e=this.remakeEvent_(e,'mouse-tracker-start');this.targetElement_.dispatchEvent(e);document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);this.targetElement_.addEventListener('blur',this.onMouseUp_);this.savePreviousUserSelect_=document.body.style['-webkit-user-select'];document.body.style['-webkit-user-select']='none';e.preventDefault();return true;},onMouseMove_(e){e=this.remakeEvent_(e,'mouse-tracker-move');this.targetElement_.dispatchEvent(e);},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);this.targetElement_.removeEventListener('blur',this.onMouseUp_);document.body.style['-webkit-user-select']=this.savePreviousUserSelect_;e=this.remakeEvent_(e,'mouse-tracker-end');this.targetElement_.dispatchEvent(e);},remakeEvent_(e,newType){const remade=new tr.b.Event(newType,true,true);remade.x=e.x;remade.y=e.y;remade.offsetX=e.offsetX;remade.offsetY=e.offsetY;remade.clientX=e.clientX;remade.clientY=e.clientY;return remade;}};function trackMouseMovesUntilMouseUp(mouseMoveHandler,opt_mouseUpHandler,opt_keyUpHandler){function cleanupAndDispatchToMouseUp(e){document.removeEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.removeEventListener('keyup',opt_keyUpHandler);}\ndocument.removeEventListener('mouseup',cleanupAndDispatchToMouseUp);if(opt_mouseUpHandler){opt_mouseUpHandler(e);}}\ndocument.addEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.addEventListener('keyup',opt_keyUpHandler);}\ndocument.addEventListener('mouseup',cleanupAndDispatchToMouseUp);}\nreturn{MouseTracker,trackMouseMovesUntilMouseUp,};});'use strict';tr.exportTo('tr.ui.b',function(){const MOUSE_SELECTOR_MODE=tr.ui.b.MOUSE_SELECTOR_MODE;const MOUSE_SELECTOR_MODE_INFOS=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS;const MIN_MOUSE_SELECTION_DISTANCE=4;const MODIFIER={SHIFT:0x1,SPACE:0x2,CMD_OR_CTRL:0x4};function isCmdOrCtrlPressed(event){if(tr.isMac)return event.metaKey;return event.ctrlKey;}\nPolymer({is:'tr-ui-b-mouse-mode-selector',created(){this.supportedModeMask_=MOUSE_SELECTOR_MODE.ALL_MODES;this.initialRelativeMouseDownPos_={x:0,y:0};this.defaultMode_=MOUSE_SELECTOR_MODE.PANSCAN;this.settingsKey_=undefined;this.mousePos_={x:0,y:0};this.mouseDownPos_={x:0,y:0};this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.onKeyDown_=this.onKeyDown_.bind(this);this.onKeyUp_=this.onKeyUp_.bind(this);this.mode_=undefined;this.modeToKeyCodeMap_={};this.modifierToModeMap_={};this.targetElement_=undefined;this.modeBeforeAlternativeModeActivated_=null;this.isInteracting_=false;this.isClick_=false;},ready(){this.buttonsEl_=Polymer.dom(this.root).querySelector('.buttons');this.dragHandleEl_=Polymer.dom(this.root).querySelector('.drag-handle');this.supportedModeMask=MOUSE_SELECTOR_MODE.ALL_MODES;this.dragHandleEl_.addEventListener('mousedown',this.onDragHandleMouseDown_.bind(this));this.buttonsEl_.addEventListener('mouseup',this.onButtonMouseUp_);this.buttonsEl_.addEventListener('mousedown',this.onButtonMouseDown_);this.buttonsEl_.addEventListener('click',this.onButtonPress_.bind(this));},attached(){document.addEventListener('keydown',this.onKeyDown_);document.addEventListener('keyup',this.onKeyUp_);},detached(){document.removeEventListener('keydown',this.onKeyDown_);document.removeEventListener('keyup',this.onKeyUp_);},get targetElement(){return this.targetElement_;},set targetElement(target){if(this.targetElement_){this.targetElement_.removeEventListener('mousedown',this.onMouseDown_);}\nthis.targetElement_=target;if(this.targetElement_){this.targetElement_.addEventListener('mousedown',this.onMouseDown_);}},get defaultMode(){return this.defaultMode_;},set defaultMode(defaultMode){this.defaultMode_=defaultMode;},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){this.settingsKey_=settingsKey;if(!this.settingsKey_)return;let mode=tr.b.Settings.get(this.settingsKey_+'.mode',undefined);if(MOUSE_SELECTOR_MODE_INFOS[mode]===undefined){mode=undefined;}\nif((mode&this.supportedModeMask_)===0){mode=undefined;}\nif(!mode)mode=this.defaultMode_;this.mode=mode;const pos=tr.b.Settings.get(this.settingsKey_+'.pos',undefined);if(pos)this.pos=pos;},get supportedModeMask(){return this.supportedModeMask_;},set supportedModeMask(supportedModeMask){if(this.mode&&(supportedModeMask&this.mode)===0){throw new Error('supportedModeMask must include current mode.');}\nfunction createButtonForMode(mode){return button;}\nthis.supportedModeMask_=supportedModeMask;Polymer.dom(this.buttonsEl_).textContent='';for(const modeName in MOUSE_SELECTOR_MODE){if(modeName==='ALL_MODES')continue;const mode=MOUSE_SELECTOR_MODE[modeName];if((this.supportedModeMask_&mode)===0)continue;const button=document.createElement('tr-ui-b-mouse-mode-icon');button.mode=mode;Polymer.dom(button).classList.add('tool-button');Polymer.dom(this.buttonsEl_).appendChild(button);}},getButtonForMode_(mode){for(let i=0;i<this.buttonsEl_.children.length;i++){const buttonEl=this.buttonsEl_.children[i];if(buttonEl.mode===mode){return buttonEl;}}\nreturn undefined;},get mode(){return this.currentMode_;},set mode(newMode){if(newMode!==undefined){if(typeof newMode!=='number'){throw new Error('Mode must be a number');}\nif((newMode&this.supportedModeMask_)===0){throw new Error('Cannot switch to this mode, it is not supported');}\nif(MOUSE_SELECTOR_MODE_INFOS[newMode]===undefined){throw new Error('Unrecognized mode');}}\nlet modeInfo;if(this.currentMode_===newMode)return;if(this.currentMode_){const buttonEl=this.getButtonForMode_(this.currentMode_);if(buttonEl)buttonEl.active=false;if(this.isInteracting_){const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.end);this.dispatchEvent(mouseEvent);}\nmodeInfo=MOUSE_SELECTOR_MODE_INFOS[this.currentMode_];tr.b.dispatchSimpleEvent(this,modeInfo.eventNames.exit,true);}\nthis.currentMode_=newMode;if(this.currentMode_){const buttonEl=this.getButtonForMode_(this.currentMode_);if(buttonEl)buttonEl.active=true;this.mouseDownPos_.x=this.mousePos_.x;this.mouseDownPos_.y=this.mousePos_.y;modeInfo=MOUSE_SELECTOR_MODE_INFOS[this.currentMode_];if(!this.isInAlternativeMode_){tr.b.dispatchSimpleEvent(this,modeInfo.eventNames.enter,true);}\nif(this.isInteracting_){const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.begin);this.dispatchEvent(mouseEvent);}}\nif(this.settingsKey_&&!this.isInAlternativeMode_){tr.b.Settings.set(this.settingsKey_+'.mode',this.mode);}},setKeyCodeForMode(mode,keyCode){if((mode&this.supportedModeMask_)===0){throw new Error('Mode not supported');}\nthis.modeToKeyCodeMap_[mode]=keyCode;if(!this.buttonsEl_)return;const buttonEl=this.getButtonForMode_(mode);if(buttonEl){buttonEl.acceleratorKey=String.fromCharCode(keyCode);}},setCurrentMousePosFromEvent_(e){this.mousePos_.x=e.clientX;this.mousePos_.y=e.clientY;},createEvent_(eventName,sourceEvent){const event=new tr.b.Event(eventName,true);event.clientX=this.mousePos_.x;event.clientY=this.mousePos_.y;event.deltaX=this.mousePos_.x-this.mouseDownPos_.x;event.deltaY=this.mousePos_.y-this.mouseDownPos_.y;event.mouseDownX=this.mouseDownPos_.x;event.mouseDownY=this.mouseDownPos_.y;event.didPreventDefault=false;event.preventDefault=function(){event.didPreventDefault=true;if(sourceEvent){sourceEvent.preventDefault();}};event.stopPropagation=function(){sourceEvent.stopPropagation();};event.stopImmediatePropagation=function(){throw new Error('Not implemented');};return event;},onMouseDown_(e){if(e.button!==0)return;this.setCurrentMousePosFromEvent_(e);const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.begin,e);if(this.mode===MOUSE_SELECTOR_MODE.SELECTION){mouseEvent.appendSelection=isCmdOrCtrlPressed(e);}\nthis.dispatchEvent(mouseEvent);this.isInteracting_=true;this.isClick_=true;tr.ui.b.trackMouseMovesUntilMouseUp(this.onMouseMove_,this.onMouseUp_);},onMouseMove_(e){this.setCurrentMousePosFromEvent_(e);const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.update,e);this.dispatchEvent(mouseEvent);if(this.isInteracting_){this.checkIsClick_(e);}},onMouseUp_(e){if(e.button!==0)return;const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.end,e);mouseEvent.isClick=this.isClick_;this.dispatchEvent(mouseEvent);if(this.isClick_&&!mouseEvent.didPreventDefault){this.dispatchClickEvents_(e);}\nthis.isInteracting_=false;this.updateAlternativeModeState_(e);},onButtonMouseDown_(e){e.preventDefault();e.stopImmediatePropagation();},onButtonMouseUp_(e){e.preventDefault();e.stopImmediatePropagation();},onButtonPress_(e){this.modeBeforeAlternativeModeActivated_=undefined;this.mode=e.target.mode;e.preventDefault();},onKeyDown_(e){if(e.path[0].tagName==='INPUT')return;if(e.keyCode===' '.charCodeAt(0)){this.spacePressed_=true;}\nthis.updateAlternativeModeState_(e);},onKeyUp_(e){if(e.path[0].tagName==='INPUT')return;if(e.keyCode===' '.charCodeAt(0)){this.spacePressed_=false;}\nlet didHandleKey=false;for(const[modeStr,keyCode]of Object.entries(this.modeToKeyCodeMap_)){if(e.keyCode===keyCode){this.modeBeforeAlternativeModeActivated_=undefined;const mode=parseInt(modeStr);this.mode=mode;didHandleKey=true;}}\nif(didHandleKey){e.preventDefault();e.stopPropagation();return;}\nthis.updateAlternativeModeState_(e);},updateAlternativeModeState_(e){const shiftPressed=e.shiftKey;const spacePressed=this.spacePressed_;const cmdOrCtrlPressed=isCmdOrCtrlPressed(e);const smm=this.supportedModeMask_;let newMode;let isNewModeAnAlternativeMode=false;if(shiftPressed&&(this.modifierToModeMap_[MODIFIER.SHIFT]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.SHIFT];isNewModeAnAlternativeMode=true;}else if(spacePressed&&(this.modifierToModeMap_[MODIFIER.SPACE]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.SPACE];isNewModeAnAlternativeMode=true;}else if(cmdOrCtrlPressed&&(this.modifierToModeMap_[MODIFIER.CMD_OR_CTRL]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.CMD_OR_CTRL];isNewModeAnAlternativeMode=true;}else{if(this.isInAlternativeMode_){newMode=this.modeBeforeAlternativeModeActivated_;isNewModeAnAlternativeMode=false;}else{newMode=undefined;}}\nif(this.mode===newMode||newMode===undefined)return;if(isNewModeAnAlternativeMode){this.modeBeforeAlternativeModeActivated_=this.mode;}\nthis.mode=newMode;},get isInAlternativeMode_(){return!!this.modeBeforeAlternativeModeActivated_;},setModifierForAlternateMode(mode,modifier){this.modifierToModeMap_[modifier]=mode;},get pos(){return{x:parseInt(this.style.left),y:parseInt(this.style.top)};},set pos(pos){pos=this.constrainPositionToBounds_(pos);this.style.left=pos.x+'px';this.style.top=pos.y+'px';if(this.settingsKey_){tr.b.Settings.set(this.settingsKey_+'.pos',this.pos);}},constrainPositionToBounds_(pos){const parent=this.offsetParent||document.body;const parentRect=tr.ui.b.windowRectForElement(parent);const top=0;const bottom=parentRect.height-this.offsetHeight;const left=0;const right=parentRect.width-this.offsetWidth;const res={};res.x=Math.max(pos.x,left);res.x=Math.min(res.x,right);res.y=Math.max(pos.y,top);res.y=Math.min(res.y,bottom);return res;},onDragHandleMouseDown_(e){e.preventDefault();e.stopImmediatePropagation();const mouseDownPos={x:e.clientX-this.offsetLeft,y:e.clientY-this.offsetTop};tr.ui.b.trackMouseMovesUntilMouseUp(function(e){const pos={};pos.x=e.clientX-mouseDownPos.x;pos.y=e.clientY-mouseDownPos.y;this.pos=pos;}.bind(this));},checkIsClick_(e){if(!this.isInteracting_||!this.isClick_)return;const deltaX=this.mousePos_.x-this.mouseDownPos_.x;const deltaY=this.mousePos_.y-this.mouseDownPos_.y;const minDist=MIN_MOUSE_SELECTION_DISTANCE;if(deltaX*deltaX+deltaY*deltaY>minDist*minDist){this.isClick_=false;}},dispatchClickEvents_(e){if(!this.isClick_)return;const modeInfo=MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.SELECTION];const eventNames=modeInfo.eventNames;let mouseEvent=this.createEvent_(eventNames.begin);mouseEvent.appendSelection=isCmdOrCtrlPressed(e);this.dispatchEvent(mouseEvent);mouseEvent=this.createEvent_(eventNames.end);this.dispatchEvent(mouseEvent);}});return{MIN_MOUSE_SELECTION_DISTANCE,MODIFIER,};});'use strict';(function(){const DETAILS_SPLIT_REGEX=/^(\\S*)\\s*([\\S\\s]*)$/;Polymer({is:'tr-ui-e-chrome-cc-display-item-list-item',created(){Polymer.dom(this).setAttribute('name','');Polymer.dom(this).setAttribute('rawDetails','');Polymer.dom(this).setAttribute('richDetails',undefined);Polymer.dom(this).setAttribute('data_',undefined);},get data(){return this.data_;},set data(data){this.data_=data;if(!data){this.name='DATA MISSING';this.rawDetails='';this.richDetails=undefined;}else if(typeof data==='string'){const match=data.match(DETAILS_SPLIT_REGEX);this.name=match[1];this.rawDetails=match[2];this.richDetails=undefined;}else{this.name=data.name;this.rawDetails='';this.richDetails=data;}},stopPropagation(e){e.stopPropagation();},_computeIfSKP(richDetails){return richDetails&&richDetails.skp64;},_computeHref(richDetails){return'data:application/octet-stream;base64,'+richDetails.skp64;}});})();'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){function Selection(){this.selectionToSetIfClicked=undefined;}\nSelection.prototype={get specicifity(){throw new Error('Not implemented');},get associatedLayerId(){throw new Error('Not implemented');},get associatedRenderPassId(){throw new Error('Not implemented');},get highlightsByLayerId(){return{};},createAnalysis(){throw new Error('Not implemented');},findEquivalent(lthi){throw new Error('Not implemented');}};function RenderPassSelection(renderPass,renderPassId){if(!renderPass||(renderPassId===undefined)){throw new Error('Render pass (with id) is required');}\nthis.renderPass_=renderPass;this.renderPassId_=renderPassId;}\nRenderPassSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 1;},get associatedLayerId(){return undefined;},get associatedRenderPassId(){return this.renderPassId_;},get renderPass(){return this.renderPass_;},createAnalysis(){const dataView=document.createElement('tr-ui-a-generic-object-view-with-label');dataView.label='RenderPass '+this.renderPassId_;dataView.object=this.renderPass_.args;return dataView;},get title(){return this.renderPass_.objectInstance.typeName;}};function LayerSelection(layer){if(!layer){throw new Error('Layer is required');}\nthis.layer_=layer;}\nLayerSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 1;},get associatedLayerId(){return this.layer_.layerId;},get associatedRenderPassId(){return undefined;},get layer(){return this.layer_;},createAnalysis(){const dataView=document.createElement('tr-ui-a-generic-object-view-with-label');dataView.label='Layer '+this.layer_.layerId;if(this.layer_.usingGpuRasterization){dataView.label+=' (GPU-rasterized)';}\ndataView.object=this.layer_.args;return dataView;},get title(){return this.layer_.objectInstance.typeName;},findEquivalent(lthi){const layer=lthi.activeTree.findLayerWithId(this.layer_.layerId)||lthi.pendingTree.findLayerWithId(this.layer_.layerId);if(!layer)return undefined;return new LayerSelection(layer);}};function TileSelection(tile,opt_data){this.tile_=tile;this.data_=opt_data||{};}\nTileSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 2;},get associatedLayerId(){return this.tile_.layerId;},get highlightsByLayerId(){const highlights={};highlights[this.tile_.layerId]=[{colorKey:this.tile_.objectInstance.typeName,rect:this.tile_.layerRect}];return highlights;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label='Tile '+this.tile_.objectInstance.id+' on layer '+\nthis.tile_.layerId;if(this.data_){analysis.object={moreInfo:this.data_,tileArgs:this.tile_.args};}else{analysis.object=this.tile_.args;}\nreturn analysis;},findEquivalent(lthi){const tileInstance=this.tile_.tileInstance;if(lthi.ts<tileInstance.creationTs||lthi.ts>=tileInstance.deletionTs){return undefined;}\nconst tileSnapshot=tileInstance.getSnapshotAt(lthi.ts);if(!tileSnapshot)return undefined;return new TileSelection(tileSnapshot);}};function LayerRectSelection(layer,rectType,rect,opt_data){this.layer_=layer;this.rectType_=rectType;this.rect_=rect;this.data_=opt_data!==undefined?opt_data:rect;}\nLayerRectSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 2;},get associatedLayerId(){return this.layer_.layerId;},get highlightsByLayerId(){const highlights={};highlights[this.layer_.layerId]=[{colorKey:this.rectType_,rect:this.rect_}];return highlights;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label=this.rectType_+' on layer '+this.layer_.layerId;analysis.object=this.data_;return analysis;},findEquivalent(lthi){return undefined;}};function AnimationRectSelection(layer,rect){this.layer_=layer;this.rect_=rect;}\nAnimationRectSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 0;},get associatedLayerId(){return this.layer_.layerId;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label='Animation Bounds of layer '+this.layer_.layerId;analysis.object=this.rect_;return analysis;}};return{Selection,RenderPassSelection,LayerSelection,TileSelection,LayerRectSelection,AnimationRectSelection,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const OPS_TIMING_ITERATIONS=3;const ANNOTATION='Comment';const BEGIN_ANNOTATION='BeginCommentGroup';const END_ANNOTATION='EndCommentGroup';const ANNOTATION_ID='ID: ';const ANNOTATION_CLASS='CLASS: ';const ANNOTATION_TAG='TAG: ';const constants=tr.e.cc.constants;const PictureOpsListView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-list-view');PictureOpsListView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.borderTop='1px solid grey';this.style.overflow='auto';this.opsList_=new tr.ui.b.ListView();Polymer.dom(this).appendChild(this.opsList_);this.selectedOp_=undefined;this.selectedOpIndex_=undefined;this.opsList_.addEventListener('selection-changed',this.onSelectionChanged_.bind(this));this.picture_=undefined;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.updateContents_();},updateContents_(){this.opsList_.clear();if(!this.picture_)return;let ops=this.picture_.getOps();if(!ops)return;ops=this.picture_.tagOpsWithTimings(ops);ops=this.opsTaggedWithAnnotations_(ops);for(let i=0;i<ops.length;i++){const op=ops[i];const item=document.createElement('div');item.opIndex=op.opIndex;Polymer.dom(item).textContent=i+') '+op.cmd_string;if(op.elementInfo.tag||op.elementInfo.id||op.elementInfo.class){const elementInfo=document.createElement('span');Polymer.dom(elementInfo).classList.add('elementInfo');elementInfo.style.color='purple';elementInfo.style.fontSize='small';elementInfo.style.fontWeight='bold';elementInfo.style.color='#777';const tag=op.elementInfo.tag?op.elementInfo.tag:'unknown';const id=op.elementInfo.id?'id='+op.elementInfo.id:undefined;const className=op.elementInfo.class?'class='+\nop.elementInfo.class:undefined;Polymer.dom(elementInfo).textContent='<'+tag+(id?' ':'')+\n(id?id:'')+(className?' ':'')+\n(className?className:'')+'>';Polymer.dom(item).appendChild(elementInfo);}\nif(op.info.length>0){const infoItem=document.createElement('div');Polymer.dom(infoItem).textContent=JSON.stringify(op.info);infoItem.style.fontSize='x-small';infoItem.style.color='#777';Polymer.dom(item).appendChild(infoItem);}\nif(op.cmd_time&&op.cmd_time>=0.0001){const time=document.createElement('span');Polymer.dom(time).classList.add('time');const rounded=op.cmd_time.toFixed(4);Polymer.dom(time).textContent='('+rounded+'ms)';time.style.fontSize='x-small';time.style.color='rgb(136, 0, 0)';Polymer.dom(item).appendChild(time);}\nitem.style.borderBottom='1px solid #555';item.style.fontSize='small';item.style.fontWeight='bold';item.style.paddingBottom='5px';item.style.paddingLeft='5px';item.style.cursor='pointer';for(const child of item.children){child.style.fontWeight='normal';child.style.marginLeft='1em';child.style.maxWidth='300px';}\nPolymer.dom(this.opsList_).appendChild(item);}},onSelectionChanged_(e){let beforeSelectedOp=true;if(this.opsList_.selectedElement===this.selectedOp_){this.opsList_.selectedElement=undefined;beforeSelectedOp=false;this.selectedOpIndex_=undefined;}\nthis.selectedOp_=this.opsList_.selectedElement;const ops=this.opsList_.children;for(let i=0;i<ops.length;i++){const op=ops[i];if(op===this.selectedOp_){beforeSelectedOp=false;this.selectedOpIndex_=op.opIndex;}else if(beforeSelectedOp){Polymer.dom(op).setAttribute('beforeSelection','beforeSelection');op.style.backgroundColor='rgb(103, 199, 165)';}else{Polymer.dom(op).removeAttribute('beforeSelection');op.style.backgroundColor='';}}\ntr.b.dispatchSimpleEvent(this,'selection-changed',false);},get numOps(){return this.opsList_.children.length;},get selectedOpIndex(){return this.selectedOpIndex_;},set selectedOpIndex(s){this.selectedOpIndex_=s;if(s===undefined){this.opsList_.selectedElement=this.selectedOp_;this.onSelectionChanged_();}else{if(s<0)throw new Error('Invalid index');if(s>=this.numOps)throw new Error('Invalid index');this.opsList_.selectedElement=this.opsList_.getElementByIndex(s+1);tr.ui.b.scrollIntoViewIfNeeded(this.opsList_.selectedElement);}},opsTaggedWithAnnotations_(ops){const annotationGroups=[];const opsWithoutAnnotations=[];for(let opIndex=0;opIndex<ops.length;opIndex++){const op=ops[opIndex];op.opIndex=opIndex;switch(op.cmd_string){case BEGIN_ANNOTATION:annotationGroups.push([]);break;case END_ANNOTATION:annotationGroups.pop();break;case ANNOTATION:annotationGroups[annotationGroups.length-1].push(op);break;default:{const annotations=[];let elementInfo={};annotationGroups.forEach(function(annotationGroup){elementInfo={};annotationGroup.forEach(function(annotation){annotation.info.forEach(function(info){if(info.includes(ANNOTATION_TAG)){elementInfo.tag=info.substring(info.indexOf(ANNOTATION_TAG)+\nANNOTATION_TAG.length).toLowerCase();}else if(info.includes(ANNOTATION_ID)){elementInfo.id=info.substring(info.indexOf(ANNOTATION_ID)+\nANNOTATION_ID.length);}else if(info.includes(ANNOTATION_CLASS)){elementInfo.class=info.substring(info.indexOf(ANNOTATION_CLASS)+\nANNOTATION_CLASS.length);}\nannotations.push(info);});});});op.annotations=annotations;op.elementInfo=elementInfo;opsWithoutAnnotations.push(op);}}}\nreturn opsWithoutAnnotations;}};return{PictureOpsListView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const THIS_DOC=document.currentScript.ownerDocument;const DisplayItemDebugger=tr.ui.b.define('tr-ui-e-chrome-cc-display-item-debugger');DisplayItemDebugger.prototype={__proto__:HTMLDivElement.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-display-item-debugger-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.display='flex';this.style.minWidth=0;this.pictureAsImageData_=undefined;this.zoomScaleValue_=1;this.sizeInfo_=Polymer.dom(this).querySelector('.size');this.rasterArea_=Polymer.dom(this).querySelector('raster-area');this.rasterArea_.style.flexGrow=1;this.rasterArea_.style.flexShrink=1;this.rasterArea_.style.flexBasis='auto';this.rasterArea_.style.backgroundColor='#ddd';this.rasterArea_.style.minHeight='200px';this.rasterArea_.style.minWidth='200px';this.rasterArea_.style.paddingLeft='5px';this.rasterArea_.style.display='flex';this.rasterArea_.style.flexDirection='column';this.rasterCanvas_=Polymer.dom(this.rasterArea_).querySelector('canvas');this.rasterCtx_=this.rasterCanvas_.getContext('2d');const canvasScroller=Polymer.dom(this).querySelector('canvas-scroller');canvasScroller.style.flexGrow=1;canvasScroller.style.flexShrink=1;canvasScroller.style.flexBasis='auto';canvasScroller.style.minWidth=0;canvasScroller.style.minHeight=0;canvasScroller.style.overflow='auto';this.trackMouse_();this.displayItemInfo_=Polymer.dom(this).querySelector('display-item-info');this.displayItemInfo_.addEventListener('click',this.onDisplayItemInfoClick_.bind(this),false);this.displayItemListView_=new tr.ui.b.ListView();this.displayItemListView_.addEventListener('selection-changed',this.onDisplayItemListSelection_.bind(this));Polymer.dom(this.displayItemInfo_).appendChild(this.displayItemListView_);this.displayListFilename_=Polymer.dom(this).querySelector('.dlfilename');this.displayListExportButton_=Polymer.dom(this).querySelector('.dlexport');this.displayListExportButton_.addEventListener('click',this.onExportDisplayListClicked_.bind(this));this.skpFilename_=Polymer.dom(this).querySelector('.skpfilename');this.skpExportButton_=Polymer.dom(this).querySelector('.skpexport');this.skpExportButton_.addEventListener('click',this.onExportSkPictureClicked_.bind(this));const leftPanel=Polymer.dom(this).querySelector('left-panel');leftPanel.style.flexGrow=0;leftPanel.style.flexShrink=0;leftPanel.style.flexBasis='auto';leftPanel.style.minWidth='200px';leftPanel.style.overflow='auto';leftPanel.children[0].paddingTop='2px';leftPanel.children[0].children[0].style.borderBottom='1px solid #555';const leftPanelTitle=leftPanel.querySelector('.title');leftPanelTitle.style.fontWeight='bold';leftPanelTitle.style.marginLeft='5px';leftPanelTitle.style.marginright='5px';for(const div of leftPanel.querySelectorAll('.export')){div.style.margin='5px';}\nconst middleDragHandle=document.createElement('tr-ui-b-drag-handle');middleDragHandle.style.flexGrow=0;middleDragHandle.style.flexShrink=0;middleDragHandle.style.flexBasis='auto';middleDragHandle.horizontal=false;middleDragHandle.target=leftPanel;const rightPanel=Polymer.dom(this).querySelector('right-panel');rightPanel.style.display='flex';rightPanel.style.flexGrow=1;rightPanel.style.flexShrink=1;rightPanel.style.flexBasis='auto';rightPanel.style.minWidth=0;this.infoBar_=document.createElement('tr-ui-b-info-bar');Polymer.dom(this.rasterArea_).insertBefore(this.infoBar_,canvasScroller);Polymer.dom(this).insertBefore(middleDragHandle,rightPanel);this.picture_=undefined;this.pictureOpsListView_=new tr.ui.e.chrome.cc.PictureOpsListView();this.pictureOpsListView_.style.flexGrow=0;this.pictureOpsListView_.style.flexShrink=0;this.pictureOpsListView_.style.flexBasis='auto';this.pictureOpsListView_.style.overflow='auto';this.pictureOpsListView_.style.minWidth='100px';Polymer.dom(rightPanel).insertBefore(this.pictureOpsListView_,this.rasterArea_);this.pictureOpsListDragHandle_=document.createElement('tr-ui-b-drag-handle');this.pictureOpsListDragHandle_.horizontal=false;this.pictureOpsListDragHandle_.target=this.pictureOpsListView_;Polymer.dom(rightPanel).insertBefore(this.pictureOpsListDragHandle_,this.rasterArea_);},get picture(){return this.picture_;},set displayItemList(displayItemList){this.displayItemList_=displayItemList;this.picture=this.displayItemList_;this.displayItemListView_.clear();this.displayItemList_.items.forEach(function(item){const listItem=document.createElement('tr-ui-e-chrome-cc-display-item-list-item');listItem.data=item;Polymer.dom(this.displayItemListView_).appendChild(listItem);}.bind(this));},set picture(picture){this.picture_=picture;const showOpsList=picture&&picture!==this.displayItemList_;this.updateDrawOpsList_(showOpsList);if(picture){const size=this.getRasterCanvasSize_();this.rasterCanvas_.width=size.width;this.rasterCanvas_.height=size.height;}\nconst bounds=this.rasterArea_.getBoundingClientRect();const selectorBounds=this.mouseModeSelector_.getBoundingClientRect();this.mouseModeSelector_.pos={x:(bounds.right-selectorBounds.width-10),y:bounds.top};this.rasterize_();this.scheduleUpdateContents_();},getRasterCanvasSize_(){const style=window.getComputedStyle(this.rasterArea_);let width=parseInt(style.width);let height=parseInt(style.height);if(this.picture_){width=Math.max(width,this.picture_.layerRect.width);height=Math.max(height,this.picture_.layerRect.height);}\nreturn{width,height};},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_.bind(this));},updateContents_(){this.updateContentsPending_=false;if(this.picture_){Polymer.dom(this.sizeInfo_).textContent='('+\nthis.picture_.layerRect.width+' x '+\nthis.picture_.layerRect.height+')';}\nif(!this.pictureAsImageData_)return;this.infoBar_.visible=false;this.infoBar_.removeAllButtons();if(this.pictureAsImageData_.error){this.infoBar_.message='Cannot rasterize...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=this.pictureAsImageData_.error;overlay.visible=true;e.stopPropagation();return false;}.bind(this));this.infoBar_.visible=true;}\nthis.drawPicture_();},drawPicture_(){const size=this.getRasterCanvasSize_();if(size.width!==this.rasterCanvas_.width){this.rasterCanvas_.width=size.width;}\nif(size.height!==this.rasterCanvas_.height){this.rasterCanvas_.height=size.height;}\nthis.rasterCtx_.clearRect(0,0,size.width,size.height);if(!this.picture_||!this.pictureAsImageData_.imageData)return;const imgCanvas=this.pictureAsImageData_.asCanvas();const w=imgCanvas.width;const h=imgCanvas.height;this.rasterCtx_.drawImage(imgCanvas,0,0,w,h,0,0,w*this.zoomScaleValue_,h*this.zoomScaleValue_);},rasterize_(){if(this.picture_){this.picture_.rasterize({showOverdraw:false},this.onRasterComplete_.bind(this));}},onRasterComplete_(pictureAsImageData){this.pictureAsImageData_=pictureAsImageData;this.scheduleUpdateContents_();},onDisplayItemListSelection_(e){const selected=this.displayItemListView_.selectedElement;if(!selected){this.picture=this.displayItemList_;return;}\nconst index=Array.prototype.indexOf.call(this.displayItemListView_.children,selected);const displayItem=this.displayItemList_.items[index];if(displayItem&&displayItem.skp64){this.picture=new tr.e.cc.Picture(displayItem.skp64,this.displayItemList_.layerRect);}else{this.picture=undefined;}},onDisplayItemInfoClick_(e){if(e&&e.target===this.displayItemInfo_){this.displayItemListView_.selectedElement=undefined;}},updateDrawOpsList_(showOpsList){if(showOpsList){this.pictureOpsListView_.picture=this.picture_;if(this.pictureOpsListView_.numOps>0){this.pictureOpsListView_.style.display='block';this.pictureOpsListDragHandle_.style.display='block';}}else{this.pictureOpsListView_.style.display='none';this.pictureOpsListDragHandle_.style.display='none';}},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.rasterArea_;Polymer.dom(this.rasterArea_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.rasterArea_.offsetLeft,y:e.clientY-this.rasterArea_.offsetTop};},saveFile_(filename,rawData){if(!rawData)return;const length=rawData.length;const arrayBuffer=new ArrayBuffer(length);const uint8Array=new Uint8Array(arrayBuffer);for(let c=0;c<length;c++){uint8Array[c]=rawData.charCodeAt(c);}\nconst blob=new Blob([uint8Array],{type:'application/octet-binary'});const blobUrl=window.URL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;link.download=filename;const event=document.createEvent('MouseEvents');event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);link.dispatchEvent(event);},onExportDisplayListClicked_(){const rawData=JSON.stringify(this.displayItemList_.items);this.saveFile_(this.displayListFilename_.value,rawData);},onExportSkPictureClicked_(){const rawData=tr.b.Base64.atob(this.picture_.getBase64SkpData());this.saveFile_(this.skpFilename_.value,rawData);}};return{DisplayItemDebugger,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const DisplayItemSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-display-item-list-view',tr.ui.analysis.ObjectSnapshotView);DisplayItemSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){this.style.display='flex';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.displayItemDebugger_=new tr.ui.e.chrome.cc.DisplayItemDebugger();this.displayItemDebugger_.style.flexGrow=1;this.displayItemDebugger_.style.flexShrink=1;this.displayItemDebugger_.style.flexBasis='auto';this.displayItemDebugger_.style.minWidth=0;Polymer.dom(this).appendChild(this.displayItemDebugger_);},updateContents(){if(this.objectSnapshot_&&this.displayItemDebugger_){this.displayItemDebugger_.displayItemList=this.objectSnapshot_;}}};tr.ui.analysis.ObjectSnapshotView.register(DisplayItemSnapshotView,{typeNames:['cc::DisplayItemList'],showInstances:false});return{DisplayItemSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const constants=tr.e.cc.constants;const RENDER_PASS_QUADS=Math.max(constants.ACTIVE_TREE,constants.PENDING_TREE)+1;const LayerPicker=tr.ui.b.define('tr-ui-e-chrome-cc-layer-picker');LayerPicker.prototype={__proto__:HTMLUnknownElement.prototype,decorate(){this.lthi_=undefined;this.controls_=document.createElement('top-controls');this.renderPassQuads_=false;this.style.display='flex';this.style.flexDirection='column';this.controls_.style.flexGrow=0;this.controls_.style.flexShrink=0;this.controls_.style.flexBasis='auto';this.controls_.style.backgroundImage='-webkit-gradient(linear, 0 0, 100% 0, from(#E5E5E5), to(#D1D1D1))';this.controls_.style.borderBottom='1px solid #8e8e8e';this.controls_.style.borderTop='1px solid white';this.controls_.style.display='inline';this.controls_.style.fontSize='14px';this.controls_.style.paddingLeft='2px';this.itemList_=new tr.ui.b.ListView();this.itemList_.style.flexGrow=1;this.itemList_.style.flexShrink=1;this.itemList_.style.flexBasis='auto';this.itemList_.style.fontFamily='monospace';this.itemList_.style.overflow='auto';Polymer.dom(this).appendChild(this.controls_);Polymer.dom(this).appendChild(this.itemList_);this.itemList_.addEventListener('selection-changed',this.onItemSelectionChanged_.bind(this));Polymer.dom(this.controls_).appendChild(tr.ui.b.createSelector(this,'whichTree','layerPicker.whichTree',constants.ACTIVE_TREE,[{label:'Active tree',value:constants.ACTIVE_TREE},{label:'Pending tree',value:constants.PENDING_TREE},{label:'Render pass quads',value:RENDER_PASS_QUADS}]));this.showPureTransformLayers_=false;const showPureTransformLayers=tr.ui.b.createCheckBox(this,'showPureTransformLayers','layerPicker.showPureTransformLayers',false,'Transform layers');Polymer.dom(showPureTransformLayers).classList.add('show-transform-layers');showPureTransformLayers.title='When checked, pure transform layers are shown';Polymer.dom(this.controls_).appendChild(showPureTransformLayers);},get lthiSnapshot(){return this.lthiSnapshot_;},set lthiSnapshot(lthiSnapshot){this.lthiSnapshot_=lthiSnapshot;this.updateContents_();},get whichTree(){return this.renderPassQuads_?constants.ACTIVE_TREE:this.whichTree_;},set whichTree(whichTree){this.whichTree_=whichTree;this.renderPassQuads_=(whichTree===RENDER_PASS_QUADS);this.updateContents_();tr.b.dispatchSimpleEvent(this,'selection-change',false);},get layerTreeImpl(){if(this.lthiSnapshot===undefined)return undefined;return this.lthiSnapshot.getTree(this.whichTree);},get isRenderPassQuads(){return this.renderPassQuads_;},get showPureTransformLayers(){return this.showPureTransformLayers_;},set showPureTransformLayers(show){if(this.showPureTransformLayers_===show)return;this.showPureTransformLayers_=show;this.updateContents_();},getRenderPassInfos_(){if(!this.lthiSnapshot_)return[];const renderPassInfo=[];if(!this.lthiSnapshot_.args.frame||!this.lthiSnapshot_.args.frame.renderPasses){return renderPassInfo;}\nconst renderPasses=this.lthiSnapshot_.args.frame.renderPasses;for(let i=0;i<renderPasses.length;++i){const info={renderPass:renderPasses[i],depth:0,id:i,name:'cc::RenderPass'};renderPassInfo.push(info);}\nreturn renderPassInfo;},getLayerInfos_(){if(!this.lthiSnapshot_)return[];const tree=this.lthiSnapshot_.getTree(this.whichTree_);if(!tree)return[];const layerInfos=[];const showPureTransformLayers=this.showPureTransformLayers_;const visitedLayers={};function visitLayer(layer,depth,isMask,isReplica){if(visitedLayers[layer.layerId])return;visitedLayers[layer.layerId]=true;const info={layer,depth};if(layer.args.drawsContent){info.name=layer.objectInstance.name;}else{info.name='cc::LayerImpl';}\nif(layer.usingGpuRasterization){info.name+=' (G)';}\ninfo.isMaskLayer=isMask;info.replicaLayer=isReplica;if(showPureTransformLayers||layer.args.drawsContent){layerInfos.push(info);}}\ntree.iterLayers(visitLayer);return layerInfos;},updateContents_(){if(this.renderPassQuads_){this.updateRenderPassContents_();}else{this.updateLayerContents_();}},updateRenderPassContents_(){this.itemList_.clear();let selectedRenderPassId;if(this.selection_&&this.selection_.associatedRenderPassId){selectedRenderPassId=this.selection_.associatedRenderPassId;}\nconst renderPassInfos=this.getRenderPassInfos_();renderPassInfos.forEach(function(renderPassInfo){const renderPass=renderPassInfo.renderPass;const id=renderPassInfo.id;const item=this.createElementWithDepth_(renderPassInfo.depth);const labelEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());Polymer.dom(labelEl).textContent=renderPassInfo.name+' '+id;item.renderPass=renderPass;item.renderPassId=id;Polymer.dom(this.itemList_).appendChild(item);if(id===selectedRenderPassId){renderPass.selectionState=tr.model.SelectionState.SELECTED;}},this);},updateLayerContents_(){this.changingItemSelection_=true;try{this.itemList_.clear();let selectedLayerId;if(this.selection_&&this.selection_.associatedLayerId){selectedLayerId=this.selection_.associatedLayerId;}\nconst layerInfos=this.getLayerInfos_();layerInfos.forEach(function(layerInfo){const layer=layerInfo.layer;const id=layer.layerId;const item=this.createElementWithDepth_(layerInfo.depth);const labelEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());Polymer.dom(labelEl).textContent=layerInfo.name+' '+id;const notesEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());if(layerInfo.isMaskLayer){Polymer.dom(notesEl).textContent+='(mask)';}\nif(layerInfo.isReplicaLayer){Polymer.dom(notesEl).textContent+='(replica)';}\nif((layer.gpuMemoryUsageInBytes!==undefined)&&(layer.gpuMemoryUsageInBytes>0)){const gpuUsageStr=tr.b.Unit.byName.sizeInBytes.format(layer.gpuMemoryUsageInBytes);Polymer.dom(notesEl).textContent+=' ('+gpuUsageStr+' MiB)';}\nitem.layer=layer;Polymer.dom(this.itemList_).appendChild(item);if(layer.layerId===selectedLayerId){layer.selectionState=tr.model.SelectionState.SELECTED;item.selected=true;}},this);}finally{this.changingItemSelection_=false;}},createElementWithDepth_(depth){const item=document.createElement('div');const indentEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());indentEl.style.whiteSpace='pre';for(let i=0;i<depth;i++){Polymer.dom(indentEl).textContent=Polymer.dom(indentEl).textContent+' ';}\nreturn item;},onItemSelectionChanged_(e){if(this.changingItemSelection_)return;if(this.renderPassQuads_){this.onRenderPassSelected_(e);}else{this.onLayerSelected_(e);}\ntr.b.dispatchSimpleEvent(this,'selection-change',false);},onRenderPassSelected_(e){let selectedRenderPass;let selectedRenderPassId;if(this.itemList_.selectedElement){selectedRenderPass=this.itemList_.selectedElement.renderPass;selectedRenderPassId=this.itemList_.selectedElement.renderPassId;}\nif(selectedRenderPass){this.selection_=new tr.ui.e.chrome.cc.RenderPassSelection(selectedRenderPass,selectedRenderPassId);}else{this.selection_=undefined;}},onLayerSelected_(e){let selectedLayer;if(this.itemList_.selectedElement){selectedLayer=this.itemList_.selectedElement.layer;}\nif(selectedLayer){this.selection_=new tr.ui.e.chrome.cc.LayerSelection(selectedLayer);}else{this.selection_=undefined;}},get selection(){return this.selection_;},set selection(selection){if(this.selection_===selection)return;this.selection_=selection;this.updateContents_();}};return{LayerPicker,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function RenderPassSnapshot(){ObjectSnapshot.apply(this,arguments);}\nRenderPassSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['quadList']);}};ObjectSnapshot.subTypes.register(RenderPassSnapshot,{typeName:'cc::RenderPass'});return{RenderPassSnapshot,};});'use strict';tr.exportTo('tr.ui.b',function(){const deg2rad=tr.b.math.deg2rad;const constants={DEFAULT_SCALE:0.5,DEFAULT_EYE_DISTANCE:10000,MINIMUM_DISTANCE:1000,MAXIMUM_DISTANCE:100000,FOV:15,RESCALE_TIMEOUT_MS:200,MAXIMUM_TILT:80,SETTINGS_NAMESPACE:'tr.ui_camera'};const Camera=tr.ui.b.define('camera');Camera.prototype={__proto__:HTMLUnknownElement.prototype,decorate(eventSource){this.eventSource_=eventSource;this.eventSource_.addEventListener('beginpan',this.onPanBegin_.bind(this));this.eventSource_.addEventListener('updatepan',this.onPanUpdate_.bind(this));this.eventSource_.addEventListener('endpan',this.onPanEnd_.bind(this));this.eventSource_.addEventListener('beginzoom',this.onZoomBegin_.bind(this));this.eventSource_.addEventListener('updatezoom',this.onZoomUpdate_.bind(this));this.eventSource_.addEventListener('endzoom',this.onZoomEnd_.bind(this));this.eventSource_.addEventListener('beginrotate',this.onRotateBegin_.bind(this));this.eventSource_.addEventListener('updaterotate',this.onRotateUpdate_.bind(this));this.eventSource_.addEventListener('endrotate',this.onRotateEnd_.bind(this));this.eye_=[0,0,constants.DEFAULT_EYE_DISTANCE];this.gazeTarget_=[0,0,0];this.rotation_=[0,0];this.pixelRatio_=window.devicePixelRatio||1;},get modelViewMatrix(){const mvMatrix=mat4.create();mat4.lookAt(mvMatrix,this.eye_,this.gazeTarget_,[0,1,0]);return mvMatrix;},get projectionMatrix(){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);const aspectRatio=rect.width/rect.height;const matrix=mat4.create();mat4.perspective(matrix,deg2rad(constants.FOV),aspectRatio,1,100000);return matrix;},set canvas(c){this.canvas_=c;},set deviceRect(rect){this.deviceRect_=rect;},get stackingDistanceDampening(){const gazeVector=[this.gazeTarget_[0]-this.eye_[0],this.gazeTarget_[1]-this.eye_[1],this.gazeTarget_[2]-this.eye_[2]];vec3.normalize(gazeVector,gazeVector);return 1+gazeVector[2];},loadCameraFromSettings(settings){this.eye_=settings.get('eye',this.eye_,constants.SETTINGS_NAMESPACE);this.gazeTarget_=settings.get('gaze_target',this.gazeTarget_,constants.SETTINGS_NAMESPACE);this.rotation_=settings.get('rotation',this.rotation_,constants.SETTINGS_NAMESPACE);this.dispatchRenderEvent_();},saveCameraToSettings(settings){settings.set('eye',this.eye_,constants.SETTINGS_NAMESPACE);settings.set('gaze_target',this.gazeTarget_,constants.SETTINGS_NAMESPACE);settings.set('rotation',this.rotation_,constants.SETTINGS_NAMESPACE);},resetCamera(){this.eye_=[0,0,constants.DEFAULT_EYE_DISTANCE];this.gazeTarget_=[0,0,0];this.rotation_=[0,0];const settings=tr.b.SessionSettings();const keys=settings.keys(constants.SETTINGS_NAMESPACE);if(keys.length!==0){this.loadCameraFromSettings(settings);return;}\nif(this.deviceRect_){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);this.eye_[0]=this.deviceRect_.width/2;this.eye_[1]=this.deviceRect_.height/2;this.gazeTarget_[0]=this.deviceRect_.width/2;this.gazeTarget_[1]=this.deviceRect_.height/2;}\nthis.saveCameraToSettings(settings);this.dispatchRenderEvent_();},updatePanByDelta(delta){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);const eyeVector=[this.eye_[0]-this.gazeTarget_[0],this.eye_[1]-this.gazeTarget_[1],this.eye_[2]-this.gazeTarget_[2]];const length=vec3.length(eyeVector);vec3.normalize(eyeVector,eyeVector);const halfFov=constants.FOV/2;const multiplier=2.0*length*Math.tan(deg2rad(halfFov))/rect.height;const up=[0,1,0];const rotMatrix=mat4.create();mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[1]),[0,1,0]);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[0]),[1,0,0]);vec3.transformMat4(up,up,rotMatrix);const right=[0,0,0];vec3.cross(right,eyeVector,up);vec3.normalize(right,right);for(let i=0;i<3;++i){this.gazeTarget_[i]+=delta[0]*multiplier*right[i]-delta[1]*multiplier*up[i];this.eye_[i]=this.gazeTarget_[i]+length*eyeVector[i];}\nif(Math.abs(this.gazeTarget_[2])>1e-6){const gazeVector=[-eyeVector[0],-eyeVector[1],-eyeVector[2]];const newLength=tr.b.math.clamp(-this.eye_[2]/gazeVector[2],constants.MINIMUM_DISTANCE,constants.MAXIMUM_DISTANCE);for(let i=0;i<3;++i){this.gazeTarget_[i]=this.eye_[i]+newLength*gazeVector[i];}}\nthis.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},updateZoomByDelta(delta){let deltaY=delta[1];deltaY=tr.b.math.clamp(deltaY,-50,50);let scale=1.0-deltaY/100.0;const eyeVector=[0,0,0];vec3.subtract(eyeVector,this.eye_,this.gazeTarget_);const length=vec3.length(eyeVector);if(length*scale<constants.MINIMUM_DISTANCE){scale=constants.MINIMUM_DISTANCE/length;}else if(length*scale>constants.MAXIMUM_DISTANCE){scale=constants.MAXIMUM_DISTANCE/length;}\nvec3.scale(eyeVector,eyeVector,scale);vec3.add(this.eye_,this.gazeTarget_,eyeVector);this.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},updateRotateByDelta(delta){delta[0]*=0.5;delta[1]*=0.5;if(Math.abs(this.rotation_[0]+delta[1])>constants.MAXIMUM_TILT){return;}\nif(Math.abs(this.rotation_[1]-delta[0])>constants.MAXIMUM_TILT){return;}\nconst eyeVector=[0,0,0,0];vec3.subtract(eyeVector,this.eye_,this.gazeTarget_);const rotMatrix=mat4.create();mat4.rotate(rotMatrix,rotMatrix,-deg2rad(this.rotation_[0]),[1,0,0]);mat4.rotate(rotMatrix,rotMatrix,-deg2rad(this.rotation_[1]),[0,1,0]);vec4.transformMat4(eyeVector,eyeVector,rotMatrix);this.rotation_[0]+=delta[1];this.rotation_[1]-=delta[0];mat4.identity(rotMatrix);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[1]),[0,1,0]);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[0]),[1,0,0]);vec4.transformMat4(eyeVector,eyeVector,rotMatrix);vec3.add(this.eye_,this.gazeTarget_,eyeVector);this.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},onPanBegin_(e){this.panning_=true;this.lastMousePosition_=this.getMousePosition_(e);},onPanUpdate_(e){if(!this.panning_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updatePanByDelta(delta);},onPanEnd_(e){this.panning_=false;},onZoomBegin_(e){this.zooming_=true;const p=this.getMousePosition_(e);this.lastMousePosition_=p;this.zoomPoint_=p;},onZoomUpdate_(e){if(!this.zooming_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updateZoomByDelta(delta);},onZoomEnd_(e){this.zooming_=false;this.zoomPoint_=undefined;},onRotateBegin_(e){this.rotating_=true;this.lastMousePosition_=this.getMousePosition_(e);},onRotateUpdate_(e){if(!this.rotating_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updateRotateByDelta(delta);},onRotateEnd_(e){this.rotating_=false;},getMousePosition_(e){const rect=tr.ui.b.windowRectForElement(this.canvas_);return[(e.clientX-rect.x)*this.pixelRatio_,(e.clientY-rect.y)*this.pixelRatio_];},getMouseDelta_(e,p){const newP=this.getMousePosition_(e);return[newP[0]-p[0],newP[1]-p[1]];},dispatchRenderEvent_(){tr.b.dispatchSimpleEvent(this,'renderrequired',false,false);}};return{Camera,};});'use strict';tr.exportTo('tr.ui.b',function(){const THIS_DOC=document.currentScript.ownerDocument;const constants={};constants.IMAGE_LOAD_RETRY_TIME_MS=500;constants.SUBDIVISION_MINIMUM=1;constants.SUBDIVISION_RECURSION_DEPTH=3;constants.SUBDIVISION_DEPTH_THRESHOLD=100;constants.FAR_PLANE_DISTANCE=10000;function drawTexturedTriangle(ctx,img,p0,p1,p2,t0,t1,t2){const tmpP0=[p0[0],p0[1]];const tmpP1=[p1[0],p1[1]];const tmpP2=[p2[0],p2[1]];const tmpT0=[t0[0],t0[1]];const tmpT1=[t1[0],t1[1]];const tmpT2=[t2[0],t2[1]];ctx.beginPath();ctx.moveTo(tmpP0[0],tmpP0[1]);ctx.lineTo(tmpP1[0],tmpP1[1]);ctx.lineTo(tmpP2[0],tmpP2[1]);ctx.closePath();tmpP1[0]-=tmpP0[0];tmpP1[1]-=tmpP0[1];tmpP2[0]-=tmpP0[0];tmpP2[1]-=tmpP0[1];tmpT1[0]-=tmpT0[0];tmpT1[1]-=tmpT0[1];tmpT2[0]-=tmpT0[0];tmpT2[1]-=tmpT0[1];const det=1/(tmpT1[0]*tmpT2[1]-tmpT2[0]*tmpT1[1]);const a=(tmpT2[1]*tmpP1[0]-tmpT1[1]*tmpP2[0])*det;const b=(tmpT2[1]*tmpP1[1]-tmpT1[1]*tmpP2[1])*det;const c=(tmpT1[0]*tmpP2[0]-tmpT2[0]*tmpP1[0])*det;const d=(tmpT1[0]*tmpP2[1]-tmpT2[0]*tmpP1[1])*det;const e=tmpP0[0]-a*tmpT0[0]-c*tmpT0[1];const f=tmpP0[1]-b*tmpT0[0]-d*tmpT0[1];ctx.save();ctx.transform(a,b,c,d,e,f);ctx.clip();ctx.drawImage(img,0,0);ctx.restore();}\nfunction drawTriangleSub(ctx,img,p0,p1,p2,t0,t1,t2,opt_recursionDepth){const depth=opt_recursionDepth||0;let subdivisionIndex=0;if(depth<constants.SUBDIVISION_MINIMUM){subdivisionIndex=7;}else if(depth<constants.SUBDIVISION_RECURSION_DEPTH){if(Math.abs(p0[2]-p1[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=1;}\nif(Math.abs(p0[2]-p2[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=2;}\nif(Math.abs(p1[2]-p2[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=4;}}\nconst p01=vec4.create();const p02=vec4.create();const p12=vec4.create();const t01=vec2.create();const t02=vec2.create();const t12=vec2.create();for(let i=0;i<2;++i){p0[i]*=p0[2];p1[i]*=p1[2];p2[i]*=p2[2];}\nfor(let i=0;i<4;++i){p01[i]=(p0[i]+p1[i])/2;p02[i]=(p0[i]+p2[i])/2;p12[i]=(p1[i]+p2[i])/2;}\nfor(let i=0;i<2;++i){p0[i]/=p0[2];p1[i]/=p1[2];p2[i]/=p2[2];p01[i]/=p01[2];p02[i]/=p02[2];p12[i]/=p12[2];}\nfor(let i=0;i<2;++i){t01[i]=(t0[i]+t1[i])/2;t02[i]=(t0[i]+t2[i])/2;t12[i]=(t1[i]+t2[i])/2;}\nswitch(subdivisionIndex){case 1:drawTriangleSub(ctx,img,p0,p01,p2,t0,t01,t2,depth+1);drawTriangleSub(ctx,img,p01,p1,p2,t01,t1,t2,depth+1);break;case 2:drawTriangleSub(ctx,img,p0,p1,p02,t0,t1,t02,depth+1);drawTriangleSub(ctx,img,p1,p02,p2,t1,t02,t2,depth+1);break;case 3:drawTriangleSub(ctx,img,p0,p01,p02,t0,t01,t02,depth+1);drawTriangleSub(ctx,img,p02,p01,p2,t02,t01,t2,depth+1);drawTriangleSub(ctx,img,p01,p1,p2,t01,t1,t2,depth+1);break;case 4:drawTriangleSub(ctx,img,p0,p12,p2,t0,t12,t2,depth+1);drawTriangleSub(ctx,img,p0,p1,p12,t0,t1,t12,depth+1);break;case 5:drawTriangleSub(ctx,img,p0,p01,p2,t0,t01,t2,depth+1);drawTriangleSub(ctx,img,p2,p01,p12,t2,t01,t12,depth+1);drawTriangleSub(ctx,img,p01,p1,p12,t01,t1,t12,depth+1);break;case 6:drawTriangleSub(ctx,img,p0,p12,p02,t0,t12,t02,depth+1);drawTriangleSub(ctx,img,p0,p1,p12,t0,t1,t12,depth+1);drawTriangleSub(ctx,img,p02,p12,p2,t02,t12,t2,depth+1);break;case 7:drawTriangleSub(ctx,img,p0,p01,p02,t0,t01,t02,depth+1);drawTriangleSub(ctx,img,p01,p12,p02,t01,t12,t02,depth+1);drawTriangleSub(ctx,img,p01,p1,p12,t01,t1,t12,depth+1);drawTriangleSub(ctx,img,p02,p12,p2,t02,t12,t2,depth+1);break;default:drawTexturedTriangle(ctx,img,p0,p1,p2,t0,t1,t2);break;}}\nconst tmpVec4=vec4.create();function transform(transformed,point,matrix,viewport){vec4.set(tmpVec4,point[0],point[1],0,1);vec4.transformMat4(tmpVec4,tmpVec4,matrix);let w=tmpVec4[3];if(w<1e-6)w=1e-6;transformed[0]=((tmpVec4[0]/w)+1)*viewport.width/2;transformed[1]=((tmpVec4[1]/w)+1)*viewport.height/2;transformed[2]=w;}\nfunction drawProjectedQuadBackgroundToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){if(quad.imageData){quadCanvas.width=quad.imageData.width;quadCanvas.height=quad.imageData.height;quadCanvas.getContext('2d').putImageData(quad.imageData,0,0);const quadBBox=new tr.b.math.BBox2();quadBBox.addQuad(quad);const iw=quadCanvas.width;const ih=quadCanvas.height;drawTriangleSub(ctx,quadCanvas,p1,p2,p4,[0,0],[iw,0],[0,ih]);drawTriangleSub(ctx,quadCanvas,p2,p3,p4,[iw,0],[iw,ih],[0,ih]);}\nif(quad.backgroundColor){ctx.fillStyle=quad.backgroundColor;ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.fill();}}\nfunction drawProjectedQuadOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.save();if(quad.borderColor){ctx.strokeStyle=quad.borderColor;}else{ctx.strokeStyle='rgb(128,128,128)';}\nif(quad.shadowOffset){ctx.shadowColor='rgb(0, 0, 0)';ctx.shadowOffsetX=quad.shadowOffset[0];ctx.shadowOffsetY=quad.shadowOffset[1];if(quad.shadowBlur){ctx.shadowBlur=quad.shadowBlur;}}\nif(quad.borderWidth){ctx.lineWidth=quad.borderWidth;}else{ctx.lineWidth=1;}\nctx.stroke();ctx.restore();}\nfunction drawProjectedQuadSelectionOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){if(!quad.upperBorderColor)return;ctx.lineWidth=8;ctx.strokeStyle=quad.upperBorderColor;ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.stroke();}\nfunction drawProjectedQuadToContext(passNumber,quad,p1,p2,p3,p4,ctx,quadCanvas){if(passNumber===0){drawProjectedQuadBackgroundToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else if(passNumber===1){drawProjectedQuadOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else if(passNumber===2){drawProjectedQuadSelectionOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else{throw new Error('Invalid pass number');}}\nconst tmpP1=vec3.create();const tmpP2=vec3.create();const tmpP3=vec3.create();const tmpP4=vec3.create();function transformAndProcessQuads(matrix,viewport,quads,numPasses,handleQuadFunc,opt_arg1,opt_arg2){for(let passNumber=0;passNumber<numPasses;passNumber++){for(let i=0;i<quads.length;i++){const quad=quads[i];transform(tmpP1,quad.p1,matrix,viewport);transform(tmpP2,quad.p2,matrix,viewport);transform(tmpP3,quad.p3,matrix,viewport);transform(tmpP4,quad.p4,matrix,viewport);handleQuadFunc(passNumber,quad,tmpP1,tmpP2,tmpP3,tmpP4,opt_arg1,opt_arg2);}}}\nconst QuadStackView=tr.ui.b.define('quad-stack-view');QuadStackView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.className='quad-stack-view';this.style.display='flex';this.style.position='relative';const node=tr.ui.b.instantiateTemplate('#quad-stack-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.updateHeaderVisibility_();const header=Polymer.dom(this).querySelector('#header');header.style.position='absolute';header.style.fontSize='70%';header.style.top='10px';header.style.left='10px';header.style.right='150px';const scroller=Polymer.dom(this).querySelector('#canvas-scroller');scroller.style.flexGrow=1;scroller.style.flexShrink=1;scroller.style.flexBasis='auto';scroller.style.minWidth=0;scroller.style.minHeight=0;scroller.style.overflow='auto';this.canvas_=Polymer.dom(this).querySelector('#canvas');this.chromeImages_={left:Polymer.dom(this).querySelector('#chrome-left'),mid:Polymer.dom(this).querySelector('#chrome-mid'),right:Polymer.dom(this).querySelector('#chrome-right')};const stackingDistanceSlider=Polymer.dom(this).querySelector('#stacking-distance-slider');stackingDistanceSlider.style.position='absolute';stackingDistanceSlider.style.fontSize='70%';stackingDistanceSlider.style.top='10px';stackingDistanceSlider.style.right='10px';stackingDistanceSlider.value=tr.b.Settings.get('quadStackView.stackingDistance',45);stackingDistanceSlider.addEventListener('change',this.onStackingDistanceChange_.bind(this));stackingDistanceSlider.addEventListener('input',this.onStackingDistanceChange_.bind(this));this.trackMouse_();this.camera_=new tr.ui.b.Camera(this.mouseModeSelector_);this.camera_.addEventListener('renderrequired',this.onRenderRequired_.bind(this));this.cameraWasReset_=false;this.camera_.canvas=this.canvas_;this.viewportRect_=tr.b.math.Rect.fromXYWH(0,0,0,0);this.pixelRatio_=window.devicePixelRatio||1;},updateHeaderVisibility_(){if(this.headerText){Polymer.dom(this).querySelector('#header').style.display='';}else{Polymer.dom(this).querySelector('#header').style.display='none';}},get headerText(){return Polymer.dom(this).querySelector('#header').textContent;},set headerText(headerText){Polymer.dom(this).querySelector('#header').textContent=headerText;this.updateHeaderVisibility_();},onStackingDistanceChange_(e){tr.b.Settings.set('quadStackView.stackingDistance',this.stackingDistance);this.scheduleRender();e.stopPropagation();},get stackingDistance(){return Polymer.dom(this).querySelector('#stacking-distance-slider').value;},get mouseModeSelector(){return this.mouseModeSelector_;},get camera(){return this.camera_;},set quads(q){this.quads_=q;this.scheduleRender();},set deviceRect(rect){if(!rect||rect.equalTo(this.deviceRect_))return;this.deviceRect_=rect;this.camera_.deviceRect=rect;this.chromeQuad_=undefined;},resize(){if(!this.offsetParent)return true;const width=parseInt(window.getComputedStyle(this.offsetParent).width);const height=parseInt(window.getComputedStyle(this.offsetParent).height);const rect=tr.b.math.Rect.fromXYWH(0,0,width,height);if(rect.equalTo(this.viewportRect_))return false;this.viewportRect_=rect;this.canvas_.style.width=width+'px';this.canvas_.style.height=height+'px';this.canvas_.width=this.pixelRatio_*width;this.canvas_.height=this.pixelRatio_*height;if(!this.cameraWasReset_){this.camera_.resetCamera();this.cameraWasReset_=true;}\nreturn true;},readyToDraw(){if(!this.chromeImages_.left.src){let leftContent=window.getComputedStyle(this.chromeImages_.left).backgroundImage;leftContent=tr.ui.b.extractUrlString(leftContent);let midContent=window.getComputedStyle(this.chromeImages_.mid).backgroundImage;midContent=tr.ui.b.extractUrlString(midContent);let rightContent=window.getComputedStyle(this.chromeImages_.right).backgroundImage;rightContent=tr.ui.b.extractUrlString(rightContent);this.chromeImages_.left.src=leftContent;this.chromeImages_.mid.src=midContent;this.chromeImages_.right.src=rightContent;}\nreturn(this.chromeImages_.left.height>0)&&(this.chromeImages_.mid.height>0)&&(this.chromeImages_.right.height>0);},get chromeQuad(){if(this.chromeQuad_)return this.chromeQuad_;const chromeCanvas=document.createElement('canvas');const offsetY=this.chromeImages_.left.height;chromeCanvas.width=this.deviceRect_.width;chromeCanvas.height=this.deviceRect_.height+offsetY;const leftWidth=this.chromeImages_.left.width;const midWidth=this.chromeImages_.mid.width;const rightWidth=this.chromeImages_.right.width;const chromeCtx=chromeCanvas.getContext('2d');chromeCtx.drawImage(this.chromeImages_.left,0,0);chromeCtx.save();chromeCtx.translate(leftWidth,0);const s=(this.deviceRect_.width-leftWidth-rightWidth)/midWidth;chromeCtx.scale(s,1);chromeCtx.drawImage(this.chromeImages_.mid,0,0);chromeCtx.restore();chromeCtx.drawImage(this.chromeImages_.right,leftWidth+s*midWidth,0);const chromeRect=tr.b.math.Rect.fromXYWH(this.deviceRect_.x,this.deviceRect_.y-offsetY,this.deviceRect_.width,this.deviceRect_.height+offsetY);const chromeQuad=tr.b.math.Quad.fromRect(chromeRect);chromeQuad.stackingGroupId=this.maxStackingGroupId_+1;chromeQuad.imageData=chromeCtx.getImageData(0,0,chromeCanvas.width,chromeCanvas.height);chromeQuad.shadowOffset=[0,0];chromeQuad.shadowBlur=5;chromeQuad.borderWidth=3;this.chromeQuad_=chromeQuad;return this.chromeQuad_;},scheduleRender(){if(this.redrawScheduled_)return false;this.redrawScheduled_=true;tr.b.requestAnimationFrame(this.render,this);},onRenderRequired_(e){this.scheduleRender();},stackTransformAndProcessQuads_(numPasses,handleQuadFunc,includeChromeQuad,opt_arg1,opt_arg2){const mv=this.camera_.modelViewMatrix;const p=this.camera_.projectionMatrix;const viewport=tr.b.math.Rect.fromXYWH(0,0,this.canvas_.width,this.canvas_.height);const quadStacks=[];for(let i=0;i<this.quads_.length;++i){const quad=this.quads_[i];const stackingId=quad.stackingGroupId||0;while(stackingId>=quadStacks.length){quadStacks.push([]);}\nquadStacks[stackingId].push(quad);}\nconst mvp=mat4.create();this.maxStackingGroupId_=quadStacks.length;const effectiveStackingDistance=this.stackingDistance*this.camera_.stackingDistanceDampening;mat4.multiply(mvp,p,mv);for(let i=0;i<quadStacks.length;++i){transformAndProcessQuads(mvp,viewport,quadStacks[i],numPasses,handleQuadFunc,opt_arg1,opt_arg2);mat4.translate(mv,mv,[0,0,effectiveStackingDistance]);mat4.multiply(mvp,p,mv);}\nif(includeChromeQuad&&this.deviceRect_){transformAndProcessQuads(mvp,viewport,[this.chromeQuad],numPasses,drawProjectedQuadToContext,opt_arg1,opt_arg2);}},render(){this.redrawScheduled_=false;if(!this.readyToDraw()){setTimeout(this.scheduleRender.bind(this),constants.IMAGE_LOAD_RETRY_TIME_MS);return;}\nif(!this.quads_)return;const canvasCtx=this.canvas_.getContext('2d');if(!this.resize()){canvasCtx.clearRect(0,0,this.canvas_.width,this.canvas_.height);}\nconst quadCanvas=document.createElement('canvas');this.stackTransformAndProcessQuads_(3,drawProjectedQuadToContext,true,canvasCtx,quadCanvas);quadCanvas.width=0;},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.canvas_;this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION|tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN|tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM|tr.ui.b.MOUSE_SELECTOR_MODE.ROTATE;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN;this.mouseModeSelector_.pos={x:0,y:100};Polymer.dom(this).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.settingsKey='quadStackView.mouseModeSelector';this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.ROTATE,tr.ui.b.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN,tr.ui.b.MODIFIER.SPACE);this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM,tr.ui.b.MODIFIER.CMD_OR_CTRL);this.mouseModeSelector_.addEventListener('updateselection',this.onSelectionUpdate_.bind(this));this.mouseModeSelector_.addEventListener('endselection',this.onSelectionUpdate_.bind(this));},extractRelativeMousePosition_(e){const br=this.canvas_.getBoundingClientRect();return[this.pixelRatio_*(e.clientX-this.canvas_.offsetLeft-br.left),this.pixelRatio_*(e.clientY-this.canvas_.offsetTop-br.top)];},onSelectionUpdate_(e){const mousePos=this.extractRelativeMousePosition_(e);const res=[];function handleQuad(passNumber,quad,p1,p2,p3,p4){if(tr.b.math.pointInImplicitQuad(mousePos,p1,p2,p3,p4)){res.push(quad);}}\nthis.stackTransformAndProcessQuads_(1,handleQuad,false);e=new tr.b.Event('selectionchange');e.quads=res;this.dispatchEvent(e);}};return{QuadStackView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const ColorScheme=tr.b.ColorScheme;const THIS_DOC=document.currentScript.ownerDocument;const TILE_HEATMAP_TYPE={};TILE_HEATMAP_TYPE.NONE='none';TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY='scheduledPriority';TILE_HEATMAP_TYPE.USING_GPU_MEMORY='usingGpuMemory';const cc=tr.ui.e.chrome.cc;function createTileRectsSelectorBaseOptions(){return[{label:'None',value:'none'},{label:'Coverage Rects',value:'coverage'}];}\nconst LayerTreeQuadStackView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-tree-quad-stack-view');LayerTreeQuadStackView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.flexDirection='column';this.style.minHeight=0;this.style.display='flex';this.isRenderPassQuads_=false;this.pictureAsImageData_={};this.messages_=[];this.controls_=document.createElement('top-controls');this.controls_.style.flexGrow=0;this.controls_.style.flexShrink=0;this.controls_.style.flexBasis='auto';this.controls_.style.backgroundImage='-webkit-gradient(linear, 0 0, 100% 0, from(#E5E5E5), to(#D1D1D1))';this.controls_.style.borderBottom='1px solid #8e8e8e';this.controls_.style.borderTop='1px solid white';this.controls_.style.display='flex';this.controls_.style.flexDirection='row';this.controls_.style.flexWrap='wrap';this.controls_.style.fontSize='14px';this.controls_.style.paddingLeft='2px';this.controls_.style.overflow='hidden';this.infoBar_=document.createElement('tr-ui-b-info-bar');this.quadStackView_=new tr.ui.b.QuadStackView();this.quadStackView_.addEventListener('selectionchange',this.onQuadStackViewSelectionChange_.bind(this));this.quadStackView_.style.flexGrow=1;this.quadStackView_.style.flexShrink=1;this.quadStackView_.style.flexBasis='auto';this.quadStackView_.style.minWidth='200px';this.extraHighlightsByLayerId_=undefined;this.inputEventImageData_=undefined;const m=tr.ui.b.MOUSE_SELECTOR_MODE;const mms=this.quadStackView_.mouseModeSelector;mms.settingsKey='tr.e.cc.layerTreeQuadStackView.mouseModeSelector';mms.setKeyCodeForMode(m.SELECTION,'Z'.charCodeAt(0));mms.setKeyCodeForMode(m.PANSCAN,'X'.charCodeAt(0));mms.setKeyCodeForMode(m.ZOOM,'C'.charCodeAt(0));mms.setKeyCodeForMode(m.ROTATE,'V'.charCodeAt(0));const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);Polymer.dom(this).appendChild(this.controls_);Polymer.dom(this).appendChild(this.infoBar_);Polymer.dom(this).appendChild(this.quadStackView_);this.tileRectsSelector_=tr.ui.b.createSelector(this,'howToShowTiles','layerView.howToShowTiles','none',createTileRectsSelectorBaseOptions());Polymer.dom(this.controls_).appendChild(this.tileRectsSelector_);const tileHeatmapText=tr.ui.b.createSpan({textContent:'Tile heatmap:'});Polymer.dom(this.controls_).appendChild(tileHeatmapText);const tileHeatmapSelector=tr.ui.b.createSelector(this,'tileHeatmapType','layerView.tileHeatmapType',TILE_HEATMAP_TYPE.NONE,[{label:'None',value:TILE_HEATMAP_TYPE.NONE},{label:'Scheduled Priority',value:TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY},{label:'Is using GPU memory',value:TILE_HEATMAP_TYPE.USING_GPU_MEMORY}]);Polymer.dom(this.controls_).appendChild(tileHeatmapSelector);const showOtherLayersCheckbox=tr.ui.b.createCheckBox(this,'showOtherLayers','layerView.showOtherLayers',true,'Other layers/passes');showOtherLayersCheckbox.title='When checked, show all layers, selected or not.';Polymer.dom(this.controls_).appendChild(showOtherLayersCheckbox);const showInvalidationsCheckbox=tr.ui.b.createCheckBox(this,'showInvalidations','layerView.showInvalidations',true,'Invalidations');showInvalidationsCheckbox.title='When checked, compositing invalidations are highlighted in red';Polymer.dom(this.controls_).appendChild(showInvalidationsCheckbox);const showUnrecordedRegionCheckbox=tr.ui.b.createCheckBox(this,'showUnrecordedRegion','layerView.showUnrecordedRegion',true,'Unrecorded area');showUnrecordedRegionCheckbox.title='When checked, unrecorded areas are highlighted in yellow';Polymer.dom(this.controls_).appendChild(showUnrecordedRegionCheckbox);const showBottlenecksCheckbox=tr.ui.b.createCheckBox(this,'showBottlenecks','layerView.showBottlenecks',true,'Bottlenecks');showBottlenecksCheckbox.title='When checked, scroll bottlenecks are highlighted';Polymer.dom(this.controls_).appendChild(showBottlenecksCheckbox);const showLayoutRectsCheckbox=tr.ui.b.createCheckBox(this,'showLayoutRects','layerView.showLayoutRects',false,'Layout rects');showLayoutRectsCheckbox.title='When checked, shows rects for regions where layout happened';Polymer.dom(this.controls_).appendChild(showLayoutRectsCheckbox);const showContentsCheckbox=tr.ui.b.createCheckBox(this,'showContents','layerView.showContents',true,'Contents');showContentsCheckbox.title='When checked, show the rendered contents inside the layer outlines';Polymer.dom(this.controls_).appendChild(showContentsCheckbox);const showAnimationBoundsCheckbox=tr.ui.b.createCheckBox(this,'showAnimationBounds','layerView.showAnimationBounds',false,'Animation Bounds');showAnimationBoundsCheckbox.title='When checked, show a border around'+' a layer showing the extent of its animation.';Polymer.dom(this.controls_).appendChild(showAnimationBoundsCheckbox);const showInputEventsCheckbox=tr.ui.b.createCheckBox(this,'showInputEvents','layerView.showInputEvents',true,'Input events');showInputEventsCheckbox.title='When checked, input events are '+'displayed as circles.';Polymer.dom(this.controls_).appendChild(showInputEventsCheckbox);this.whatRasterizedLink_=document.createElement('tr-ui-a-analysis-link');this.whatRasterizedLink_.style.position='absolute';this.whatRasterizedLink_.style.bottom='15px';this.whatRasterizedLink_.style.left='10px';this.whatRasterizedLink_.selection=this.getWhatRasterizedEventSet_.bind(this);Polymer.dom(this.quadStackView_).appendChild(this.whatRasterizedLink_);},get layerTreeImpl(){return this.layerTreeImpl_;},set isRenderPassQuads(newValue){this.isRenderPassQuads_=newValue;},set layerTreeImpl(layerTreeImpl){if(this.layerTreeImpl_===layerTreeImpl)return;this.layerTreeImpl_=layerTreeImpl;this.selection=undefined;},get extraHighlightsByLayerId(){return this.extraHighlightsByLayerId_;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.extraHighlightsByLayerId_=extraHighlightsByLayerId;this.scheduleUpdateContents_();},get showOtherLayers(){return this.showOtherLayers_;},set showOtherLayers(show){this.showOtherLayers_=show;this.updateContents_();},get showAnimationBounds(){return this.showAnimationBounds_;},set showAnimationBounds(show){this.showAnimationBounds_=show;this.updateContents_();},get showInputEvents(){return this.showInputEvents_;},set showInputEvents(show){this.showInputEvents_=show;this.updateContents_();},get showContents(){return this.showContents_;},set showContents(show){this.showContents_=show;this.updateContents_();},get showInvalidations(){return this.showInvalidations_;},set showInvalidations(show){this.showInvalidations_=show;this.updateContents_();},get showUnrecordedRegion(){return this.showUnrecordedRegion_;},set showUnrecordedRegion(show){this.showUnrecordedRegion_=show;this.updateContents_();},get showBottlenecks(){return this.showBottlenecks_;},set showBottlenecks(show){this.showBottlenecks_=show;this.updateContents_();},get showLayoutRects(){return this.showLayoutRects_;},set showLayoutRects(show){this.showLayoutRects_=show;this.updateContents_();},get howToShowTiles(){return this.howToShowTiles_;},set howToShowTiles(val){if(val!=='none'&&val!=='coverage'&&isNaN(parseFloat(val))){throw new Error('howToShowTiles requires \"none\" or \"coverage\" or a number');}\nthis.howToShowTiles_=val;this.updateContents_();},get tileHeatmapType(){return this.tileHeatmapType_;},set tileHeatmapType(val){this.tileHeatmapType_=val;this.updateContents_();},get selection(){return this.selection_;},set selection(selection){if(this.selection===selection)return;this.selection_=selection;tr.b.dispatchSimpleEvent(this,'selection-change');this.updateContents_();},regenerateContent(){this.updateTilesSelector_();this.updateContents_();},loadDataForImageElement_(image,callback){const imageContent=window.getComputedStyle(image).backgroundImage;if(!imageContent){this.scheduleUpdateContents_();return;}\nimage.src=tr.ui.b.extractUrlString(imageContent);image.onload=function(){const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=image.width;canvas.height=image.height;ctx.drawImage(image,0,0);const imageData=ctx.getImageData(0,0,canvas.width,canvas.height);callback(imageData);};},onQuadStackViewSelectionChange_(e){const selectableQuads=e.quads.filter(function(q){return q.selectionToSetIfClicked!==undefined;});if(selectableQuads.length===0){this.selection=undefined;return;}\nselectableQuads.sort(function(x,y){const z=x.stackingGroupId-y.stackingGroupId;if(z!==0)return z;return x.selectionToSetIfClicked.specicifity-\ny.selectionToSetIfClicked.specicifity;});const quadToSelect=selectableQuads[selectableQuads.length-1];this.selection=quadToSelect.selectionToSetIfClicked;},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_,this);},updateContents_(){if(!this.layerTreeImpl_){this.quadStackView_.headerText='No tree';this.quadStackView_.quads=[];return;}\nconst status=this.computePictureLoadingStatus_();if(!status.picturesComplete)return;const lthi=this.layerTreeImpl_.layerTreeHostImpl;const lthiInstance=lthi.objectInstance;const worldViewportRect=tr.b.math.Rect.fromXYWH(0,0,lthi.deviceViewportSize.width,lthi.deviceViewportSize.height);this.quadStackView_.deviceRect=worldViewportRect;if(this.isRenderPassQuads_){this.quadStackView_.quads=this.generateRenderPassQuads();}else{this.quadStackView_.quads=this.generateLayerQuads();}\nthis.updateWhatRasterizedLinkState_();let message='';if(lthi.tilesHaveGpuMemoryUsageInfo){const thisTreeUsageInBytes=this.layerTreeImpl_.gpuMemoryUsageInBytes;const otherTreeUsageInBytes=lthi.gpuMemoryUsageInBytes-\nthisTreeUsageInBytes;message+=tr.b.convertUnit(thisTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on this tree';if(otherTreeUsageInBytes){message+=', '+\ntr.b.convertUnit(otherTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on the other tree';}}else{if(this.layerTreeImpl_){const thisTreeUsageInBytes=this.layerTreeImpl_.gpuMemoryUsageInBytes;message+=tr.b.convertUnit(thisTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on this tree';if(this.layerTreeImpl_.otherTree){message+=', ??? MiB on other tree. ';}}}\nif(lthi.args.tileManagerBasicState){const tmgs=lthi.args.tileManagerBasicState.globalState;message+=' (softMax='+\ntr.b.convertUnit(tmgs.softMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, hardMax='+\ntr.b.convertUnit(tmgs.hardMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, '+\ntmgs.memoryLimitPolicy+')';}else{const thread=lthi.snapshottedOnThread;const didManageTilesSlices=thread.sliceGroup.slices.filter(s=>{if(s.category!=='tr.e.cc')return false;if(s.title!=='DidManage')return false;if(s.end>lthi.ts)return false;return true;});didManageTilesSlices.sort(function(x,y){return x.end-y.end;});if(didManageTilesSlices.length>0){const newest=didManageTilesSlices[didManageTilesSlices.length-1];const tmgs=newest.args.state.global_state;message+=' (softMax='+\ntr.b.convertUnit(tmgs.softMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, hardMax='+\ntr.b.convertUnit(tmgs.hardMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, '+\ntmgs.memoryLimitPolicy+')';}}\nif(this.layerTreeImpl_.otherTree){message+=' (Another tree exists)';}\nif(message.length){this.quadStackView_.headerText=message;}else{this.quadStackView_.headerText=undefined;}\nthis.updateInfoBar_(status.messages);},updateTilesSelector_(){const data=createTileRectsSelectorBaseOptions();if(this.layerTreeImpl_){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const scaleNames=lthi.getContentsScaleNames();for(const scale in scaleNames){data.push({label:'Scale '+scale+' ('+scaleNames[scale]+')',value:scale});}}\nconst newSelector=tr.ui.b.createSelector(this,'howToShowTiles','layerView.howToShowTiles','none',data);this.controls_.replaceChild(newSelector,this.tileRectsSelector_);this.tileRectsSelector_=newSelector;},computePictureLoadingStatus_(){const layers=this.layers;const status={messages:[],picturesComplete:true};if(this.showContents){let hasPendingRasterizeImage=false;let firstPictureError=undefined;let hasMissingLayerRect=false;let hasUnresolvedPictureRef=false;for(let i=0;i<layers.length;i++){const layer=layers[i];for(let ir=0;ir<layer.pictures.length;++ir){const picture=layer.pictures[ir];if(picture.idRef){hasUnresolvedPictureRef=true;continue;}\nif(!picture.layerRect){hasMissingLayerRect=true;continue;}\nconst pictureAsImageData=this.pictureAsImageData_[picture.guid];if(!pictureAsImageData){hasPendingRasterizeImage=true;this.pictureAsImageData_[picture.guid]=tr.e.cc.PictureAsImageData.Pending(this);picture.rasterize({stopIndex:undefined},function(pictureImageData){const picture_=pictureImageData.picture;this.pictureAsImageData_[picture_.guid]=pictureImageData;this.scheduleUpdateContents_();}.bind(this));continue;}\nif(pictureAsImageData.isPending()){hasPendingRasterizeImage=true;continue;}\nif(pictureAsImageData.error){if(!firstPictureError){firstPictureError=pictureAsImageData.error;}\nbreak;}}}\nif(hasPendingRasterizeImage){status.picturesComplete=false;}else{if(hasUnresolvedPictureRef){status.messages.push({header:'Missing picture',details:'Your trace didn\\'t have pictures for every layer. '+'Old chrome versions had this problem'});}\nif(hasMissingLayerRect){status.messages.push({header:'Missing layer rect',details:'Your trace may be corrupt or from a very old '+'Chrome revision.'});}\nif(firstPictureError){status.messages.push({header:'Cannot rasterize',details:firstPictureError});}}}\nif(this.showInputEvents&&this.layerTreeImpl.tracedInputLatencies&&this.inputEventImageData_===undefined){const image=Polymer.dom(this).querySelector('#input-event');if(!image.src){this.loadDataForImageElement_(image,function(imageData){this.inputEventImageData_=imageData;this.updateContentsPending_=false;this.scheduleUpdateContents_();}.bind(this));}\nstatus.picturesComplete=false;}\nreturn status;},get selectedRenderPass(){if(this.selection){return this.selection.renderPass_;}},get selectedLayer(){if(this.selection){const selectedLayerId=this.selection.associatedLayerId;return this.layerTreeImpl_.findLayerWithId(selectedLayerId);}},get renderPasses(){let renderPasses=this.layerTreeImpl.layerTreeHostImpl.args.frame.renderPasses;if(!this.showOtherLayers){const selectedRenderPass=this.selectedRenderPass;if(selectedRenderPass){renderPasses=[selectedRenderPass];}}\nreturn renderPasses;},get layers(){let layers=this.layerTreeImpl.renderSurfaceLayerList;if(!this.showOtherLayers){const selectedLayer=this.selectedLayer;if(selectedLayer){layers=[selectedLayer];}}\nreturn layers;},appendImageQuads_(quads,layer,layerQuad){for(let ir=0;ir<layer.pictures.length;++ir){const picture=layer.pictures[ir];if(!picture.layerRect)continue;const unitRect=picture.layerRect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);const pictureData=this.pictureAsImageData_[picture.guid];if(this.showContents&&pictureData&&pictureData.imageData){iq.imageData=pictureData.imageData;iq.borderColor='rgba(0,0,0,0)';}else{iq.imageData=undefined;}\niq.stackingGroupId=layerQuad.stackingGroupId;quads.push(iq);}},appendAnimationQuads_(quads,layer,layerQuad){if(!layer.animationBoundsRect)return;const rect=layer.animationBoundsRect;const abq=tr.b.math.Quad.fromRect(rect);abq.backgroundColor='rgba(164,191,48,0.5)';abq.borderColor='rgba(205,255,0,0.75)';abq.borderWidth=3.0;abq.stackingGroupId=layerQuad.stackingGroupId;abq.selectionToSetIfClicked=new cc.AnimationRectSelection(layer,rect);quads.push(abq);},appendInvalidationQuads_(quads,layer,layerQuad){if(layer.layerTreeImpl.hasSourceFrameBeenDrawnBefore)return;for(const rect of layer.invalidation.rects){const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor='rgba(0, 255, 0, 0.1)';if(rect.reason==='appeared'){iq.backgroundColor='rgba(0, 255, 128, 0.1)';}\niq.borderColor='rgba(0, 255, 0, 1)';iq.stackingGroupId=layerQuad.stackingGroupId;let message='Invalidation rect';if(rect.reason){message+=' ('+rect.reason+')';}\nif(rect.client){message+=' for '+rect.client;}\niq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,message,rect,rect);quads.push(iq);}},appendUnrecordedRegionQuads_(quads,layer,layerQuad){for(let ir=0;ir<layer.unrecordedRegion.rects.length;ir++){const rect=layer.unrecordedRegion.rects[ir];const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor='rgba(240, 230, 140, 0.3)';iq.borderColor='rgba(240, 230, 140, 1)';iq.stackingGroupId=layerQuad.stackingGroupId;iq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,'Unrecorded area',rect,rect);quads.push(iq);}},appendBottleneckQuads_(quads,layer,layerQuad,stackingGroupId){function processRegion(region,label,borderColor){const backgroundColor=borderColor.clone();backgroundColor.a=0.4*(borderColor.a||1.0);if(!region||!region.rects)return;for(let ir=0;ir<region.rects.length;ir++){const rect=region.rects[ir];const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor=backgroundColor.toString();iq.borderColor=borderColor.toString();iq.borderWidth=4.0;iq.stackingGroupId=stackingGroupId;iq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect,rect);quads.push(iq);}}\nprocessRegion(layer.touchEventHandlerRegion,'Touch listener',tr.b.Color.fromString('rgb(228, 226, 27)'));processRegion(layer.wheelEventHandlerRegion,'Wheel listener',tr.b.Color.fromString('rgb(176, 205, 29)'));processRegion(layer.nonFastScrollableRegion,'Repaints on scroll',tr.b.Color.fromString('rgb(213, 134, 32)'));},appendTileCoverageRectQuads_(quads,layer,layerQuad,heatmapType){if(!layer.tileCoverageRects)return;const tiles=[];for(let ct=0;ct<layer.tileCoverageRects.length;++ct){const tile=layer.tileCoverageRects[ct].tile;if(tile!==undefined)tiles.push(tile);}\nconst lthi=this.layerTreeImpl_.layerTreeHostImpl;const minMax=this.getMinMaxForHeatmap_(lthi.activeTiles,heatmapType);const heatmapResult=this.computeHeatmapColors_(tiles,minMax,heatmapType);let heatIndex=0;for(let ct=0;ct<layer.tileCoverageRects.length;++ct){let rect=layer.tileCoverageRects[ct].geometryRect;rect=rect.scale(1.0/layer.geometryContentsScale);const tile=layer.tileCoverageRects[ct].tile;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;let type=tr.e.cc.tileTypes.missing;if(tile){type=tile.getTypeForLayer(layer);quad.backgroundColor=heatmapResult[heatIndex].color;++heatIndex;}\nquad.borderColor=tr.e.cc.tileBorder[type].color;quad.borderWidth=tr.e.cc.tileBorder[type].width;let label;if(tile){label='coverageRect';}else{label='checkerboard coverageRect';}\nquad.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect,layer.tileCoverageRects[ct]);quads.push(quad);}},appendLayoutRectQuads_(quads,layer,layerQuad){if(!layer.layoutRects){return;}\nfor(let ct=0;ct<layer.layoutRects.length;++ct){let rect=layer.layoutRects[ct].geometryRect;rect=rect.scale(1.0/layer.geometryContentsScale);const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;quad.borderColor='rgba(0, 0, 200, 0.7)';quad.borderWidth=2;const label='Layout rect';quad.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect);quads.push(quad);}},getValueForHeatmap_(tile,heatmapType){if(heatmapType===TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY){return tile.scheduledPriority===0?undefined:tile.scheduledPriority;}else if(heatmapType===TILE_HEATMAP_TYPE.USING_GPU_MEMORY){if(tile.isSolidColor)return 0.5;return tile.isUsingGpuMemory?0:1;}},getMinMaxForHeatmap_(tiles,heatmapType){const range=new tr.b.math.Range();if(heatmapType===TILE_HEATMAP_TYPE.USING_GPU_MEMORY){range.addValue(0);range.addValue(1);return range;}\nfor(let i=0;i<tiles.length;++i){const value=this.getValueForHeatmap_(tiles[i],heatmapType);if(value===undefined)continue;range.addValue(value);}\nif(range.range===0){range.addValue(1);}\nreturn range;},computeHeatmapColors_(tiles,minMax,heatmapType){const min=minMax.min;const max=minMax.max;const color=function(value){let hue=120*(1-(value-min)/(max-min));if(hue<0)hue=0;return'hsla('+hue+', 100%, 50%, 0.5)';};const values=[];for(let i=0;i<tiles.length;++i){const tile=tiles[i];const value=this.getValueForHeatmap_(tile,heatmapType);const res={value,color:value!==undefined?color(value):undefined};values.push(res);}\nreturn values;},appendTilesWithScaleQuads_(quads,layer,layerQuad,scale,heatmapType){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const tiles=[];for(let i=0;i<lthi.activeTiles.length;++i){const tile=lthi.activeTiles[i];if(Math.abs(tile.contentsScale-scale)>1e-6){continue;}\nif(layer.layerId!==tile.layerId)continue;tiles.push(tile);}\nconst minMax=this.getMinMaxForHeatmap_(lthi.activeTiles,heatmapType);const heatmapResult=this.computeHeatmapColors_(tiles,minMax,heatmapType);for(let i=0;i<tiles.length;++i){const tile=tiles[i];const rect=tile.layerRect;if(!tile.layerRect)continue;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;const type=tile.getTypeForLayer(layer);quad.borderColor=tr.e.cc.tileBorder[type].color;quad.borderWidth=tr.e.cc.tileBorder[type].width;quad.backgroundColor=heatmapResult[i].color;const data={tileType:type};if(heatmapType!==TILE_HEATMAP_TYPE.NONE){data[heatmapType]=heatmapResult[i].value;}\nquad.selectionToSetIfClicked=new cc.TileSelection(tile,data);quads.push(quad);}},appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights){highlights.forEach(function(highlight){const rect=highlight.rect;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);let colorId=ColorScheme.getColorIdForGeneralPurposeString(highlight.colorKey);const offset=ColorScheme.properties.brightenedOffsets[0];colorId=ColorScheme.getVariantColorId(colorId,offset);const color=ColorScheme.colors[colorId];const quadForDrawing=quad.clone();quadForDrawing.backgroundColor=color.withAlpha(0.5).toString();quadForDrawing.borderColor=color.withAlpha(1.0).darken().toString();quadForDrawing.stackingGroupId=layerQuad.stackingGroupId;quads.push(quadForDrawing);},this);},generateRenderPassQuads(){if(!this.layerTreeImpl.layerTreeHostImpl.args.frame)return[];const renderPasses=this.renderPasses;if(!renderPasses)return[];const quads=[];for(let i=0;i<renderPasses.length;++i){const quadList=renderPasses[i].quadList;for(let j=0;j<quadList.length;++j){const drawQuad=quadList[j];const quad=drawQuad.rectAsTargetSpaceQuad.clone();quad.borderColor='rgb(170, 204, 238)';quad.borderWidth=2;quad.stackingGroupId=i;quads.push(quad);}}\nreturn quads;},generateLayerQuads(){this.updateContentsPending_=false;const layers=this.layers;const quads=[];let nextStackingGroupId=0;const alreadyVisitedLayerIds={};let selectionHighlightsByLayerId;if(this.selection){selectionHighlightsByLayerId=this.selection.highlightsByLayerId;}else{selectionHighlightsByLayerId={};}\nconst extraHighlightsByLayerId=this.extraHighlightsByLayerId||{};for(let i=1;i<=layers.length;i++){const layer=layers[layers.length-i];alreadyVisitedLayerIds[layer.layerId]=true;if(layer.objectInstance.name==='cc::NinePatchLayerImpl'){continue;}\nconst layerQuad=layer.layerQuad.clone();if(layer.usingGpuRasterization){const pixelRatio=window.devicePixelRatio||1;layerQuad.borderWidth=2.0*pixelRatio;layerQuad.borderColor='rgba(154,205,50,0.75)';}else{layerQuad.borderColor='rgba(0,0,0,0.75)';}\nlayerQuad.stackingGroupId=nextStackingGroupId++;layerQuad.selectionToSetIfClicked=new cc.LayerSelection(layer);layerQuad.layer=layer;if(this.showOtherLayers&&this.selectedLayer===layer){layerQuad.upperBorderColor='rgb(156,189,45)';}\nif(this.showAnimationBounds){this.appendAnimationQuads_(quads,layer,layerQuad);}\nthis.appendImageQuads_(quads,layer,layerQuad);quads.push(layerQuad);if(this.showInvalidations){this.appendInvalidationQuads_(quads,layer,layerQuad);}\nif(this.showUnrecordedRegion){this.appendUnrecordedRegionQuads_(quads,layer,layerQuad);}\nif(this.showBottlenecks){this.appendBottleneckQuads_(quads,layer,layerQuad,layerQuad.stackingGroupId);}\nif(this.showLayoutRects){this.appendLayoutRectQuads_(quads,layer,layerQuad);}\nif(this.howToShowTiles==='coverage'){this.appendTileCoverageRectQuads_(quads,layer,layerQuad,this.tileHeatmapType);}else if(this.howToShowTiles!=='none'){this.appendTilesWithScaleQuads_(quads,layer,layerQuad,this.howToShowTiles,this.tileHeatmapType);}\nlet highlights;highlights=extraHighlightsByLayerId[layer.layerId];if(highlights){this.appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights);}\nhighlights=selectionHighlightsByLayerId[layer.layerId];if(highlights){this.appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights);}}\nthis.layerTreeImpl.iterLayers(function(layer,depth,isMask,isReplica){if(!this.showOtherLayers&&this.selectedLayer!==layer)return;if(alreadyVisitedLayerIds[layer.layerId])return;const layerQuad=layer.layerQuad;const stackingGroupId=nextStackingGroupId++;if(this.showBottlenecks){this.appendBottleneckQuads_(quads,layer,layerQuad,stackingGroupId);}},this);const tracedInputLatencies=this.layerTreeImpl.tracedInputLatencies;if(this.showInputEvents&&tracedInputLatencies){for(let i=0;i<tracedInputLatencies.length;i++){const coordinatesArray=tracedInputLatencies[i].args.data.coordinates;for(let j=0;j<coordinatesArray.length;j++){const inputQuad=tr.b.math.Quad.fromXYWH(coordinatesArray[j].x-25,coordinatesArray[j].y-25,50,50);inputQuad.borderColor='rgba(0, 0, 0, 0)';inputQuad.imageData=this.inputEventImageData_;quads.push(inputQuad);}}}\nreturn quads;},updateInfoBar_(infoBarMessages){if(infoBarMessages.length){this.infoBar_.removeAllButtons();this.infoBar_.message='Some problems were encountered...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent='';infoBarMessages.forEach(function(message){const title=document.createElement('h3');Polymer.dom(title).textContent=message.header;const details=document.createElement('div');Polymer.dom(details).textContent=message.details;Polymer.dom(overlay).appendChild(title);Polymer.dom(overlay).appendChild(details);});overlay.visible=true;e.stopPropagation();return false;});this.infoBar_.visible=true;}else{this.infoBar_.removeAllButtons();this.infoBar_.message='';this.infoBar_.visible=false;}},getWhatRasterized_(){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const renderProcess=lthi.objectInstance.parent;const tasks=[];for(const event of renderProcess.getDescendantEvents()){if(!(event instanceof tr.model.Slice))continue;const tile=tr.e.cc.getTileFromRasterTaskSlice(event);if(tile===undefined)continue;if(tile.containingSnapshot===lthi){tasks.push(event);}}\nreturn tasks;},updateWhatRasterizedLinkState_(){const tasks=this.getWhatRasterized_();if(tasks.length){Polymer.dom(this.whatRasterizedLink_).textContent=tasks.length+' raster tasks';this.whatRasterizedLink_.style.display='';}else{Polymer.dom(this.whatRasterizedLink_).textContent='';this.whatRasterizedLink_.style.display='none';}},getWhatRasterizedEventSet_(){return new tr.model.EventSet(this.getWhatRasterized_());}};return{LayerTreeQuadStackView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const constants=tr.e.cc.constants;const LayerView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-view');LayerView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexDirection='column';this.style.display='flex';this.layerTreeQuadStackView_=new tr.ui.e.chrome.cc.LayerTreeQuadStackView();this.dragBar_=document.createElement('tr-ui-b-drag-handle');this.analysisEl_=document.createElement('tr-ui-e-chrome-cc-layer-view-analysis');this.analysisEl_.style.flexGrow=0;this.analysisEl_.style.flexShrink=0;this.analysisEl_.style.flexBasis='auto';this.analysisEl_.style.height='150px';this.analysisEl_.style.overflow='auto';this.analysisEl_.addEventListener('requestSelectionChange',this.onRequestSelectionChangeFromAnalysisEl_.bind(this));this.dragBar_.target=this.analysisEl_;Polymer.dom(this).appendChild(this.layerTreeQuadStackView_);Polymer.dom(this).appendChild(this.dragBar_);Polymer.dom(this).appendChild(this.analysisEl_);this.layerTreeQuadStackView_.addEventListener('selection-change',function(){this.layerTreeQuadStackViewSelectionChanged_();}.bind(this));this.layerTreeQuadStackViewSelectionChanged_();},get layerTreeImpl(){return this.layerTreeQuadStackView_.layerTreeImpl;},set layerTreeImpl(newValue){return this.layerTreeQuadStackView_.layerTreeImpl=newValue;},set isRenderPassQuads(newValue){return this.layerTreeQuadStackView_.isRenderPassQuads=newValue;},get selection(){return this.layerTreeQuadStackView_.selection;},set selection(newValue){this.layerTreeQuadStackView_.selection=newValue;},regenerateContent(){this.layerTreeQuadStackView_.regenerateContent();},layerTreeQuadStackViewSelectionChanged_(){const selection=this.layerTreeQuadStackView_.selection;if(selection){this.dragBar_.style.display='';this.analysisEl_.style.display='';Polymer.dom(this.analysisEl_).textContent='';const layer=selection.layer;if(tr.e.cc.PictureSnapshot.CanDebugPicture()&&layer&&layer.args&&layer.args.pictures&&layer.args.pictures.length){Polymer.dom(this.analysisEl_).appendChild(this.createPictureBtn_(layer.args.pictures));}\nconst analysis=selection.createAnalysis();Polymer.dom(this.analysisEl_).appendChild(analysis);for(const child of this.analysisEl_.children){child.style.userSelect='text';}}else{this.dragBar_.style.display='none';this.analysisEl_.style.display='none';const analysis=Polymer.dom(this.analysisEl_).firstChild;if(analysis){Polymer.dom(this.analysisEl_).removeChild(analysis);}\nthis.layerTreeQuadStackView_.style.height=window.getComputedStyle(this).height;}\ntr.b.dispatchSimpleEvent(this,'selection-change');},createPictureBtn_(pictures){if(!(pictures instanceof Array)){pictures=[pictures];}\nconst link=document.createElement('tr-ui-a-analysis-link');link.selection=function(){const layeredPicture=new tr.e.cc.LayeredPicture(pictures);const snapshot=new tr.e.cc.PictureSnapshot(layeredPicture);snapshot.picture=layeredPicture;const selection=new tr.model.EventSet();selection.push(snapshot);return selection;};Polymer.dom(link).textContent='View in Picture Debugger';return link;},onRequestSelectionChangeFromAnalysisEl_(e){if(!(e.selection instanceof tr.ui.e.chrome.cc.Selection)){return;}\ne.stopPropagation();this.selection=e.selection;},get extraHighlightsByLayerId(){return this.layerTreeQuadStackView_.extraHighlightsByLayerId;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.layerTreeQuadStackView_.extraHighlightsByLayerId=extraHighlightsByLayerId;}};return{LayerView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const LayerTreeHostImplSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-tree-host-impl-snapshot-view',tr.ui.analysis.ObjectSnapshotView);LayerTreeHostImplSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-lthi-s-view');this.style.display='flex';this.style.flexDirection='row';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.selection_=undefined;this.layerPicker_=new tr.ui.e.chrome.cc.LayerPicker();this.layerPicker_.style.flexGrow=0;this.layerPicker_.style.flexShrink=0;this.layerPicker_.style.flexBasis='auto';this.layerPicker_.style.minWidth='200px';this.layerPicker_.addEventListener('selection-change',this.onLayerPickerSelectionChanged_.bind(this));this.layerView_=new tr.ui.e.chrome.cc.LayerView();this.layerView_.addEventListener('selection-change',this.onLayerViewSelectionChanged_.bind(this));this.layerView_.style.flexGrow=1;this.layerView_.style.flexShrink=1;this.layerView_.style.flexBasis='auto';this.layerView_.style.minWidth=0;this.dragHandle_=document.createElement('tr-ui-b-drag-handle');this.dragHandle_.style.flexGrow=0;this.dragHandle_.style.flexShrink=0;this.dragHandle_.style.flexBasis='auto';this.dragHandle_.horizontal=false;this.dragHandle_.target=this.layerPicker_;Polymer.dom(this).appendChild(this.layerPicker_);Polymer.dom(this).appendChild(this.dragHandle_);Polymer.dom(this).appendChild(this.layerView_);this.onLayerViewSelectionChanged_();this.onLayerPickerSelectionChanged_();},get objectSnapshot(){return this.objectSnapshot_;},set objectSnapshot(objectSnapshot){this.objectSnapshot_=objectSnapshot;const lthi=this.objectSnapshot;let layerTreeImpl;if(lthi){layerTreeImpl=lthi.getTree(this.layerPicker_.whichTree);}\nthis.layerPicker_.lthiSnapshot=lthi;this.layerView_.layerTreeImpl=layerTreeImpl;this.layerView_.regenerateContent();if(!this.selection_)return;this.selection=this.selection_.findEquivalent(lthi);},get selection(){return this.selection_;},set selection(selection){if(this.selection_===selection)return;this.selection_=selection;this.layerPicker_.selection=selection;this.layerView_.selection=selection;tr.b.dispatchSimpleEvent(this,'cc-selection-change');},onLayerPickerSelectionChanged_(){this.selection_=this.layerPicker_.selection;this.layerView_.selection=this.selection;this.layerView_.layerTreeImpl=this.layerPicker_.layerTreeImpl;this.layerView_.isRenderPassQuads=this.layerPicker_.isRenderPassQuads;this.layerView_.regenerateContent();tr.b.dispatchSimpleEvent(this,'cc-selection-change');},onLayerViewSelectionChanged_(){this.selection_=this.layerView_.selection;this.layerPicker_.selection=this.selection;tr.b.dispatchSimpleEvent(this,'cc-selection-change');},get extraHighlightsByLayerId(){return this.layerView_.extraHighlightsByLayerId;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.layerView_.extraHighlightsByLayerId=extraHighlightsByLayerId;}};tr.ui.analysis.ObjectSnapshotView.register(LayerTreeHostImplSnapshotView,{typeName:'cc::LayerTreeHostImpl'});return{LayerTreeHostImplSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const OPS_TIMING_ITERATIONS=3;const CHART_PADDING_LEFT=65;const CHART_PADDING_RIGHT=40;const AXIS_PADDING_LEFT=60;const AXIS_PADDING_RIGHT=35;const AXIS_PADDING_TOP=25;const AXIS_PADDING_BOTTOM=45;const AXIS_LABEL_PADDING=5;const AXIS_TICK_SIZE=10;const LABEL_PADDING=5;const LABEL_INTERLEAVE_OFFSET=15;const BAR_PADDING=5;const VERTICAL_TICKS=5;const HUE_CHAR_CODE_ADJUSTMENT=5.7;const PictureOpsChartSummaryView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-chart-summary-view');PictureOpsChartSummaryView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexGrow=0;this.style.flexShrink=0;this.style.flexBasis='auto';this.style.fontSize=0;this.style.margin=0;this.style.minHeight='200px';this.style.minWidth='200px';this.style.overflow='hidden';this.style.padding=0;this.picture_=undefined;this.pictureDataProcessed_=false;this.chartScale_=window.devicePixelRatio;this.chart_=document.createElement('canvas');this.chartCtx_=this.chart_.getContext('2d');Polymer.dom(this).appendChild(this.chart_);this.opsTimingData_=[];this.chartWidth_=0;this.chartHeight_=0;this.requiresRedraw_=true;this.currentBarMouseOverTarget_=null;this.chart_.addEventListener('mousemove',this.onMouseMove_.bind(this));try{new ResizeObserver(this.onResize_.bind(this)).observe(this);}catch(e){}},get requiresRedraw(){return this.requiresRedraw_;},set requiresRedraw(requiresRedraw){this.requiresRedraw_=requiresRedraw;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.pictureDataProcessed_=false;if(Polymer.dom(this).classList.contains('hidden'))return;this.processPictureData_();this.requiresRedraw=true;this.updateChartContents();},hide(){Polymer.dom(this).classList.add('hidden');this.style.display='none';},show(){Polymer.dom(this).classList.remove('hidden');this.style.display='';if(!this.pictureDataProcessed_){this.processPictureData_();}\nthis.requiresRedraw=true;this.updateChartContents();},onMouseMove_(e){const lastBarMouseOverTarget=this.currentBarMouseOverTarget_;this.currentBarMouseOverTarget_=null;const x=e.offsetX;const y=e.offsetY;const chartLeft=CHART_PADDING_LEFT;const chartRight=this.chartWidth_-CHART_PADDING_RIGHT;const chartTop=AXIS_PADDING_TOP;const chartBottom=this.chartHeight_-AXIS_PADDING_BOTTOM;const chartInnerWidth=chartRight-chartLeft;if(x>chartLeft&&x<chartRight&&y>chartTop&&y<chartBottom){this.currentBarMouseOverTarget_=Math.floor((x-chartLeft)/chartInnerWidth*this.opsTimingData_.length);this.currentBarMouseOverTarget_=tr.b.math.clamp(this.currentBarMouseOverTarget_,0,this.opsTimingData_.length-1);}\nif(this.currentBarMouseOverTarget_===lastBarMouseOverTarget)return;this.drawChartContents_();},onResize_(){this.requiresRedraw=true;this.updateChartContents();},updateChartContents(){if(this.requiresRedraw){this.updateChartDimensions_();}\nthis.drawChartContents_();},updateChartDimensions_(){this.chartWidth_=this.offsetWidth;this.chartHeight_=this.offsetHeight;this.chart_.width=this.chartWidth_*this.chartScale_;this.chart_.height=this.chartHeight_*this.chartScale_;this.chart_.style.width=this.chartWidth_+'px';this.chart_.style.height=this.chartHeight_+'px';this.chartCtx_.scale(this.chartScale_,this.chartScale_);},processPictureData_(){this.resetOpsTimingData_();this.pictureDataProcessed_=true;if(!this.picture_)return;let ops=this.picture_.getOps();if(!ops)return;ops=this.picture_.tagOpsWithTimings(ops);if(ops[0].cmd_time===undefined)return;this.collapseOpsToTimingBuckets_(ops);},drawChartContents_(){this.clearChartContents_();if(this.opsTimingData_.length===0){this.showNoTimingDataMessage_();return;}\nthis.drawChartAxes_();this.drawBars_();this.drawLineAtBottomOfChart_();if(this.currentBarMouseOverTarget_===null)return;this.drawTooltip_();},drawLineAtBottomOfChart_(){this.chartCtx_.strokeStyle='#AAA';this.chartCtx_.moveTo(0,this.chartHeight_-0.5);this.chartCtx_.lineTo(this.chartWidth_,this.chartHeight_-0.5);this.chartCtx_.stroke();},drawTooltip_(){const tooltipData=this.opsTimingData_[this.currentBarMouseOverTarget_];const tooltipTitle=tooltipData.cmd_string;const tooltipTime=tooltipData.cmd_time.toFixed(4);const tooltipWidth=110;const tooltipHeight=40;const chartInnerWidth=this.chartWidth_-CHART_PADDING_RIGHT-\nCHART_PADDING_LEFT;const barWidth=chartInnerWidth/this.opsTimingData_.length;const tooltipOffset=Math.round((tooltipWidth-barWidth)*0.5);const left=CHART_PADDING_LEFT+this.currentBarMouseOverTarget_*barWidth-tooltipOffset;const top=Math.round((this.chartHeight_-tooltipHeight)*0.5);this.chartCtx_.save();this.chartCtx_.shadowOffsetX=0;this.chartCtx_.shadowOffsetY=5;this.chartCtx_.shadowBlur=4;this.chartCtx_.shadowColor='rgba(0,0,0,0.4)';this.chartCtx_.strokeStyle='#888';this.chartCtx_.fillStyle='#EEE';this.chartCtx_.fillRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.shadowColor='transparent';this.chartCtx_.translate(0.5,0.5);this.chartCtx_.strokeRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.restore();this.chartCtx_.fillStyle='#222';this.chartCtx_.textBaseline='top';this.chartCtx_.font='800 12px Arial';this.chartCtx_.fillText(tooltipTitle,left+8,top+8);this.chartCtx_.fillStyle='#555';this.chartCtx_.textBaseline='top';this.chartCtx_.font='400 italic 10px Arial';this.chartCtx_.fillText('Total: '+tooltipTime+'ms',left+8,top+22);},drawBars_(){const len=this.opsTimingData_.length;const max=this.opsTimingData_[0].cmd_time;const min=this.opsTimingData_[len-1].cmd_time;const width=this.chartWidth_-CHART_PADDING_LEFT-CHART_PADDING_RIGHT;const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const barWidth=Math.floor(width/len);let opData;let opTiming;let opHeight;let opLabel;let barLeft;for(let b=0;b<len;b++){opData=this.opsTimingData_[b];opTiming=opData.cmd_time/max;opHeight=Math.round(Math.max(1,opTiming*height));opLabel=opData.cmd_string;barLeft=CHART_PADDING_LEFT+b*barWidth;this.chartCtx_.fillStyle=this.getOpColor_(opLabel);this.chartCtx_.fillRect(barLeft+BAR_PADDING,AXIS_PADDING_TOP+\nheight-opHeight,barWidth-2*BAR_PADDING,opHeight);}},getOpColor_(opName){const characters=opName.split('');const hue=characters.reduce(this.reduceNameToHue,0)%360;return'hsl('+hue+', 30%, 50%)';},reduceNameToHue(previousValue,currentValue,index,array){return Math.round(previousValue+currentValue.charCodeAt(0)*HUE_CHAR_CODE_ADJUSTMENT);},drawChartAxes_(){const len=this.opsTimingData_.length;const max=this.opsTimingData_[0].cmd_time;const min=this.opsTimingData_[len-1].cmd_time;const width=this.chartWidth_-AXIS_PADDING_LEFT-AXIS_PADDING_RIGHT;const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const totalBarWidth=this.chartWidth_-CHART_PADDING_LEFT-\nCHART_PADDING_RIGHT;const barWidth=Math.floor(totalBarWidth/len);const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;const tickValInterval=(max-min)/(VERTICAL_TICKS-1);let tickVal=0;this.chartCtx_.fillStyle='#333';this.chartCtx_.strokeStyle='#777';this.chartCtx_.save();this.chartCtx_.translate(0.5,0.5);this.chartCtx_.save();this.chartCtx_.translate(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.moveTo(0,0);this.chartCtx_.lineTo(0,height);this.chartCtx_.lineTo(width,height);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='right';this.chartCtx_.textBaseline='middle';for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);tickVal=(max-t*tickValInterval).toFixed(4);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(-AXIS_TICK_SIZE,tickYPosition);this.chartCtx_.fillText(tickVal,-AXIS_TICK_SIZE-AXIS_LABEL_PADDING,tickYPosition);}\nthis.chartCtx_.stroke();this.chartCtx_.restore();this.chartCtx_.save();this.chartCtx_.translate(CHART_PADDING_LEFT+Math.round(barWidth*0.5),AXIS_PADDING_TOP+height+LABEL_PADDING);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='top';let labelTickLeft;let labelTickBottom;for(let l=0;l<len;l++){labelTickLeft=Math.round(l*barWidth);labelTickBottom=l%2*LABEL_INTERLEAVE_OFFSET;this.chartCtx_.save();this.chartCtx_.moveTo(labelTickLeft,-LABEL_PADDING);this.chartCtx_.lineTo(labelTickLeft,labelTickBottom);this.chartCtx_.stroke();this.chartCtx_.restore();this.chartCtx_.fillText(this.opsTimingData_[l].cmd_string,labelTickLeft,labelTickBottom);}\nthis.chartCtx_.restore();this.chartCtx_.restore();},clearChartContents_(){this.chartCtx_.clearRect(0,0,this.chartWidth_,this.chartHeight_);},showNoTimingDataMessage_(){this.chartCtx_.font='800 italic 14px Arial';this.chartCtx_.fillStyle='#333';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='middle';this.chartCtx_.fillText('No timing data available.',this.chartWidth_*0.5,this.chartHeight_*0.5);},collapseOpsToTimingBuckets_(ops){const opsTimingDataIndexHash_={};const timingData=this.opsTimingData_;let op;let opIndex;for(let i=0;i<ops.length;i++){op=ops[i];if(op.cmd_time===undefined)continue;opIndex=opsTimingDataIndexHash_[op.cmd_string]||null;if(opIndex===null){timingData.push({cmd_time:0,cmd_string:op.cmd_string});opIndex=timingData.length-1;opsTimingDataIndexHash_[op.cmd_string]=opIndex;}\ntimingData[opIndex].cmd_time+=op.cmd_time;}\ntimingData.sort(this.sortTimingBucketsByOpTimeDescending_);this.collapseTimingBucketsToOther_(4);},collapseTimingBucketsToOther_(count){const timingData=this.opsTimingData_;const otherSource=timingData.splice(count,timingData.length-count);let otherDestination=null;if(!otherSource.length)return;timingData.push({cmd_time:0,cmd_string:'Other'});otherDestination=timingData[timingData.length-1];for(let i=0;i<otherSource.length;i++){otherDestination.cmd_time+=otherSource[i].cmd_time;}},sortTimingBucketsByOpTimeDescending_(a,b){return b.cmd_time-a.cmd_time;},resetOpsTimingData_(){this.opsTimingData_.length=0;}};return{PictureOpsChartSummaryView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const BAR_PADDING=1;const BAR_WIDTH=5;const CHART_PADDING_LEFT=65;const CHART_PADDING_RIGHT=30;const CHART_PADDING_BOTTOM=35;const CHART_PADDING_TOP=20;const AXIS_PADDING_LEFT=55;const AXIS_PADDING_RIGHT=30;const AXIS_PADDING_BOTTOM=35;const AXIS_PADDING_TOP=20;const AXIS_TICK_SIZE=5;const AXIS_LABEL_PADDING=5;const VERTICAL_TICKS=5;const HUE_CHAR_CODE_ADJUSTMENT=5.7;const PictureOpsChartView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-chart-view');PictureOpsChartView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.display='block';this.style.height='180px';this.style.margin=0;this.style.padding=0;this.style.position='relative';this.picture_=undefined;this.pictureOps_=undefined;this.opCosts_=undefined;this.chartScale_=window.devicePixelRatio;this.chart_=document.createElement('canvas');this.chartCtx_=this.chart_.getContext('2d');Polymer.dom(this).appendChild(this.chart_);this.selectedOpIndex_=undefined;this.chartWidth_=0;this.chartHeight_=0;this.dimensionsHaveChanged_=true;this.currentBarMouseOverTarget_=undefined;this.ninetyFifthPercentileCost_=0;this.totalOpCost_=0;this.chart_.addEventListener('click',this.onClick_.bind(this));this.chart_.addEventListener('mousemove',this.onMouseMove_.bind(this));try{new ResizeObserver(this.onResize_.bind(this)).observe(this);}catch(e){}\nthis.usePercentileScale_=false;this.usePercentileScaleCheckbox_=tr.ui.b.createCheckBox(this,'usePercentileScale','PictureOpsChartView.usePercentileScale',false,'Limit to 95%-ile');Polymer.dom(this.usePercentileScaleCheckbox_).classList.add('use-percentile-scale');this.usePercentileScaleCheckbox_.style.position='absolute';this.usePercentileScaleCheckbox_.style.left=0;this.usePercentileScaleCheckbox_.style.top=0;Polymer.dom(this).appendChild(this.usePercentileScaleCheckbox_);},get dimensionsHaveChanged(){return this.dimensionsHaveChanged_;},set dimensionsHaveChanged(dimensionsHaveChanged){this.dimensionsHaveChanged_=dimensionsHaveChanged;},get usePercentileScale(){return this.usePercentileScale_;},set usePercentileScale(usePercentileScale){this.usePercentileScale_=usePercentileScale;this.drawChartContents_();},get numOps(){return this.opCosts_.length;},get selectedOpIndex(){return this.selectedOpIndex_;},set selectedOpIndex(selectedOpIndex){if(selectedOpIndex<0)throw new Error('Invalid index');if(selectedOpIndex>=this.numOps)throw new Error('Invalid index');this.selectedOpIndex_=selectedOpIndex;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.pictureOps_=picture.tagOpsWithTimings(picture.getOps());this.currentBarMouseOverTarget_=undefined;this.processPictureData_();this.dimensionsHaveChanged=true;},processPictureData_(){if(this.pictureOps_===undefined)return;let totalOpCost=0;this.opCosts_=this.pictureOps_.map(function(op){totalOpCost+=op.cmd_time;return op.cmd_time;});this.opCosts_.sort();const ninetyFifthPercentileCostIndex=Math.floor(this.opCosts_.length*0.95);this.ninetyFifthPercentileCost_=this.opCosts_[ninetyFifthPercentileCostIndex];this.maxCost_=this.opCosts_[this.opCosts_.length-1];this.totalOpCost_=totalOpCost;},extractBarIndex_(e){let index=undefined;if(this.pictureOps_===undefined||this.pictureOps_.length===0){return index;}\nconst x=e.offsetX;const y=e.offsetY;const totalBarWidth=(BAR_WIDTH+BAR_PADDING)*this.pictureOps_.length;const chartLeft=CHART_PADDING_LEFT;const chartTop=0;const chartBottom=this.chartHeight_-CHART_PADDING_BOTTOM;const chartRight=chartLeft+totalBarWidth;if(x<chartLeft||x>chartRight||y<chartTop||y>chartBottom){return index;}\nindex=Math.floor((x-chartLeft)/totalBarWidth*this.pictureOps_.length);index=tr.b.math.clamp(index,0,this.pictureOps_.length-1);return index;},onClick_(e){const barClicked=this.extractBarIndex_(e);if(barClicked===undefined)return;if(barClicked===this.selectedOpIndex){this.selectedOpIndex=undefined;}else{this.selectedOpIndex=barClicked;}\ne.preventDefault();tr.b.dispatchSimpleEvent(this,'selection-changed',false);},onMouseMove_(e){const lastBarMouseOverTarget=this.currentBarMouseOverTarget_;this.currentBarMouseOverTarget_=this.extractBarIndex_(e);if(this.currentBarMouseOverTarget_===lastBarMouseOverTarget){return;}\nthis.drawChartContents_();},onResize_(){this.dimensionsHaveChanged=true;this.updateChartContents();},scrollSelectedItemIntoViewIfNecessary(){if(this.selectedOpIndex===undefined){return;}\nconst width=this.offsetWidth;const left=this.scrollLeft;const right=left+width;const targetLeft=CHART_PADDING_LEFT+\n(BAR_WIDTH+BAR_PADDING)*this.selectedOpIndex;if(targetLeft>left&&targetLeft<right){return;}\nthis.scrollLeft=(targetLeft-width*0.5);},updateChartContents(){if(this.dimensionsHaveChanged){this.updateChartDimensions_();}\nthis.drawChartContents_();},updateChartDimensions_(){if(!this.pictureOps_)return;let width=CHART_PADDING_LEFT+CHART_PADDING_RIGHT+\n((BAR_WIDTH+BAR_PADDING)*this.pictureOps_.length);if(width<this.offsetWidth){width=this.offsetWidth;}\nthis.chartWidth_=width;this.chartHeight_=this.getBoundingClientRect().height;this.chart_.width=this.chartWidth_*this.chartScale_;this.chart_.height=this.chartHeight_*this.chartScale_;this.chart_.style.width=this.chartWidth_+'px';this.chart_.style.height=this.chartHeight_+'px';this.chartCtx_.scale(this.chartScale_,this.chartScale_);this.dimensionsHaveChanged=false;},drawChartContents_(){this.clearChartContents_();if(this.pictureOps_===undefined||this.pictureOps_.length===0||this.pictureOps_[0].cmd_time===undefined){this.showNoTimingDataMessage_();return;}\nthis.drawSelection_();this.drawBars_();this.drawChartAxes_();this.drawLinesAtTickMarks_();this.drawLineAtBottomOfChart_();if(this.currentBarMouseOverTarget_===undefined){return;}\nthis.drawTooltip_();},drawSelection_(){if(this.selectedOpIndex===undefined){return;}\nconst width=(BAR_WIDTH+BAR_PADDING)*this.selectedOpIndex;this.chartCtx_.fillStyle='rgb(223, 235, 230)';this.chartCtx_.fillRect(CHART_PADDING_LEFT,CHART_PADDING_TOP,width,this.chartHeight_-CHART_PADDING_TOP-CHART_PADDING_BOTTOM);},drawChartAxes_(){const min=this.opCosts_[0];const max=this.opCosts_[this.opCosts_.length-1];const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;const tickValInterval=(max-min)/(VERTICAL_TICKS-1);let tickVal=0;this.chartCtx_.fillStyle='#333';this.chartCtx_.strokeStyle='#777';this.chartCtx_.save();this.chartCtx_.translate(0.5,0.5);this.chartCtx_.beginPath();this.chartCtx_.moveTo(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.lineTo(AXIS_PADDING_LEFT,this.chartHeight_-\nAXIS_PADDING_BOTTOM);this.chartCtx_.lineTo(this.chartWidth_-AXIS_PADDING_RIGHT,this.chartHeight_-AXIS_PADDING_BOTTOM);this.chartCtx_.stroke();this.chartCtx_.closePath();this.chartCtx_.translate(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='right';this.chartCtx_.textBaseline='middle';this.chartCtx_.beginPath();for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);tickVal=(max-t*tickValInterval).toFixed(4);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(-AXIS_TICK_SIZE,tickYPosition);this.chartCtx_.fillText(tickVal,-AXIS_TICK_SIZE-AXIS_LABEL_PADDING,tickYPosition);}\nthis.chartCtx_.stroke();this.chartCtx_.closePath();this.chartCtx_.restore();},drawLinesAtTickMarks_(){const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const width=this.chartWidth_-AXIS_PADDING_LEFT-AXIS_PADDING_RIGHT;const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;this.chartCtx_.save();this.chartCtx_.translate(AXIS_PADDING_LEFT+0.5,AXIS_PADDING_TOP+0.5);this.chartCtx_.beginPath();this.chartCtx_.strokeStyle='rgba(0,0,0,0.05)';for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(width,tickYPosition);this.chartCtx_.stroke();}\nthis.chartCtx_.restore();this.chartCtx_.closePath();},drawLineAtBottomOfChart_(){this.chartCtx_.strokeStyle='#AAA';this.chartCtx_.beginPath();this.chartCtx_.moveTo(0,this.chartHeight_-0.5);this.chartCtx_.lineTo(this.chartWidth_,this.chartHeight_-0.5);this.chartCtx_.stroke();this.chartCtx_.closePath();},drawTooltip_(){const tooltipData=this.pictureOps_[this.currentBarMouseOverTarget_];const tooltipTitle=tooltipData.cmd_string;const tooltipTime=tooltipData.cmd_time.toFixed(4);const toolTipTimePercentage=((tooltipData.cmd_time/this.totalOpCost_)*100).toFixed(2);const tooltipWidth=120;const tooltipHeight=40;const chartInnerWidth=this.chartWidth_-CHART_PADDING_RIGHT-\nCHART_PADDING_LEFT;const barWidth=BAR_WIDTH+BAR_PADDING;const tooltipOffset=Math.round((tooltipWidth-barWidth)*0.5);const left=CHART_PADDING_LEFT+this.currentBarMouseOverTarget_*barWidth-tooltipOffset;const top=Math.round((this.chartHeight_-tooltipHeight)*0.5);this.chartCtx_.save();this.chartCtx_.shadowOffsetX=0;this.chartCtx_.shadowOffsetY=5;this.chartCtx_.shadowBlur=4;this.chartCtx_.shadowColor='rgba(0,0,0,0.4)';this.chartCtx_.strokeStyle='#888';this.chartCtx_.fillStyle='#EEE';this.chartCtx_.fillRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.shadowColor='transparent';this.chartCtx_.translate(0.5,0.5);this.chartCtx_.strokeRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.restore();this.chartCtx_.fillStyle='#222';this.chartCtx_.textAlign='left';this.chartCtx_.textBaseline='top';this.chartCtx_.font='800 12px Arial';this.chartCtx_.fillText(tooltipTitle,left+8,top+8);this.chartCtx_.fillStyle='#555';this.chartCtx_.font='400 italic 10px Arial';this.chartCtx_.fillText(tooltipTime+'ms ('+\ntoolTipTimePercentage+'%)',left+8,top+22);},drawBars_(){let op;let opColor=0;let opHeight=0;const opWidth=BAR_WIDTH+BAR_PADDING;let opHover=false;const bottom=this.chartHeight_-CHART_PADDING_BOTTOM;const maxHeight=this.chartHeight_-CHART_PADDING_BOTTOM-\nCHART_PADDING_TOP;let maxValue;if(this.usePercentileScale){maxValue=this.ninetyFifthPercentileCost_;}else{maxValue=this.maxCost_;}\nfor(let b=0;b<this.pictureOps_.length;b++){op=this.pictureOps_[b];opHeight=Math.round((op.cmd_time/maxValue)*maxHeight);opHeight=Math.max(opHeight,1);opHover=(b===this.currentBarMouseOverTarget_);opColor=this.getOpColor_(op.cmd_string,opHover);if(b===this.selectedOpIndex){this.chartCtx_.fillStyle='#FFFF00';}else{this.chartCtx_.fillStyle=opColor;}\nthis.chartCtx_.fillRect(CHART_PADDING_LEFT+b*opWidth,bottom-opHeight,BAR_WIDTH,opHeight);}},getOpColor_(opName,hover){const characters=opName.split('');const hue=characters.reduce(this.reduceNameToHue,0)%360;const saturation=30;const lightness=hover?'75%':'50%';return'hsl('+hue+', '+saturation+'%, '+lightness+'%)';},reduceNameToHue(previousValue,currentValue,index,array){return Math.round(previousValue+currentValue.charCodeAt(0)*HUE_CHAR_CODE_ADJUSTMENT);},clearChartContents_(){this.chartCtx_.clearRect(0,0,this.chartWidth_,this.chartHeight_);},showNoTimingDataMessage_(){this.chartCtx_.font='800 italic 14px Arial';this.chartCtx_.fillStyle='#333';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='middle';this.chartCtx_.fillText('No timing data available.',this.chartWidth_*0.5,this.chartHeight_*0.5);}};return{PictureOpsChartView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const THIS_DOC=document._currentScript.ownerDocument;const PictureDebugger=tr.ui.b.define('tr-ui-e-chrome-cc-picture-debugger');PictureDebugger.prototype={__proto__:HTMLDivElement.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-picture-debugger-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.style.display='flex';this.style.flexDirection='row';const title=this.querySelector('.title');title.style.fontWeight='bold';title.style.marginLeft='5px';title.style.marginRight='5px';this.pictureAsImageData_=undefined;this.showOverdraw_=false;this.zoomScaleValue_=1;this.sizeInfo_=Polymer.dom(this).querySelector('.size');this.rasterArea_=Polymer.dom(this).querySelector('raster-area');this.rasterArea_.style.backgroundColor='#ddd';this.rasterArea_.style.minHeight='100px';this.rasterArea_.style.minWidth='200px';this.rasterArea_.style.overflow='auto';this.rasterArea_.style.paddingLeft='5px';this.rasterCanvas_=Polymer.dom(this.rasterArea_).querySelector('canvas');this.rasterCtx_=this.rasterCanvas_.getContext('2d');this.filename_=Polymer.dom(this).querySelector('.filename');this.filename_.style.userSelect='text';this.filename_.style.marginLeft='5px';this.drawOpsChartSummaryView_=new tr.ui.e.chrome.cc.PictureOpsChartSummaryView();this.drawOpsChartView_=new tr.ui.e.chrome.cc.PictureOpsChartView();this.drawOpsChartView_.addEventListener('selection-changed',this.onChartBarClicked_.bind(this));this.exportButton_=Polymer.dom(this).querySelector('.export');this.exportButton_.addEventListener('click',this.onSaveAsSkPictureClicked_.bind(this));this.trackMouse_();const overdrawCheckbox=tr.ui.b.createCheckBox(this,'showOverdraw','pictureView.showOverdraw',false,'Show overdraw');const chartCheckbox=tr.ui.b.createCheckBox(this,'showSummaryChart','pictureView.showSummaryChart',false,'Show timing summary');const pictureInfo=Polymer.dom(this).querySelector('picture-info');pictureInfo.style.flexGrow=0;pictureInfo.style.flexShrink=0;pictureInfo.style.flexBasis='auto';pictureInfo.style.paddingTop='2px';Polymer.dom(pictureInfo).appendChild(overdrawCheckbox);Polymer.dom(pictureInfo).appendChild(chartCheckbox);this.drawOpsView_=new tr.ui.e.chrome.cc.PictureOpsListView();this.drawOpsView_.flexGrow=1;this.drawOpsView_.flexShrink=1;this.drawOpsView_.flexBasis='auto';this.drawOpsView_.addEventListener('selection-changed',this.onChangeDrawOps_.bind(this));const leftPanel=Polymer.dom(this).querySelector('left-panel');leftPanel.style.flexDirection='column';leftPanel.style.display='flex';leftPanel.style.flexGrow=0;leftPanel.style.flexShrink=0;leftPanel.style.flexBasis='auto';leftPanel.style.minWidth='200px';leftPanel.style.overflow='auto';Polymer.dom(leftPanel).appendChild(this.drawOpsChartSummaryView_);Polymer.dom(leftPanel).appendChild(this.drawOpsView_);const middleDragHandle=document.createElement('tr-ui-b-drag-handle');middleDragHandle.style.flexGrow=0;middleDragHandle.style.flexShrink=0;middleDragHandle.style.flexBasis='auto';middleDragHandle.horizontal=false;middleDragHandle.target=leftPanel;const rightPanel=Polymer.dom(this).querySelector('right-panel');rightPanel.style.flexGrow=1;rightPanel.style.flexShrink=1;rightPanel.style.flexBasis='auto';rightPanel.style.minWidth=0;rightPanel.style.flexDirection='column';rightPanel.style.display='flex';const chartView=Polymer.dom(rightPanel).querySelector('tr-ui-e-chrome-cc-picture-ops-chart-view');this.drawOpsChartView_.style.flexGrow=0;this.drawOpsChartView_.style.flexShrink=0;this.drawOpsChartView_.style.flexBasis='auto';this.drawOpsChartView_.style.minWidth=0;this.drawOpsChartView_.style.overflowX='auto';this.drawOpsChartView_.style.overflowY='hidden';rightPanel.replaceChild(this.drawOpsChartView_,chartView);this.infoBar_=document.createElement('tr-ui-b-info-bar');Polymer.dom(this.rasterArea_).appendChild(this.infoBar_);Polymer.dom(this).insertBefore(middleDragHandle,rightPanel);this.picture_=undefined;const hkc=document.createElement('tv-ui-b-hotkey-controller');hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',thisArg:this,keyCode:'h'.charCodeAt(0),callback(e){this.moveSelectedOpBy(-1);e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',thisArg:this,keyCode:'l'.charCodeAt(0),callback(e){this.moveSelectedOpBy(1);e.stopPropagation();}}));Polymer.dom(this).appendChild(hkc);},onSaveAsSkPictureClicked_(){const rawData=tr.b.Base64.atob(this.picture_.getBase64SkpData());const length=rawData.length;const arrayBuffer=new ArrayBuffer(length);const uint8Array=new Uint8Array(arrayBuffer);for(let c=0;c<length;c++){uint8Array[c]=rawData.charCodeAt(c);}\nconst blob=new Blob([uint8Array],{type:'application/octet-binary'});const blobUrl=window.webkitURL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;link.download=this.filename_.value;const event=document.createEvent('MouseEvents');event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);link.dispatchEvent(event);},get picture(){return this.picture_;},set picture(picture){this.drawOpsView_.picture=picture;this.drawOpsChartView_.picture=picture;this.drawOpsChartSummaryView_.picture=picture;this.picture_=picture;this.exportButton_.disabled=!this.picture_.canSave;if(picture){const size=this.getRasterCanvasSize_();this.rasterCanvas_.width=size.width;this.rasterCanvas_.height=size.height;}\nconst bounds=this.rasterArea_.getBoundingClientRect();const selectorBounds=this.mouseModeSelector_.getBoundingClientRect();this.mouseModeSelector_.pos={x:(bounds.right-selectorBounds.width-10),y:bounds.top};this.rasterize_();this.scheduleUpdateContents_();},getRasterCanvasSize_(){const style=window.getComputedStyle(this.rasterArea_);const width=Math.max(parseInt(style.width),this.picture_.layerRect.width);const height=Math.max(parseInt(style.height),this.picture_.layerRect.height);return{width,height};},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_.bind(this));},updateContents_(){this.updateContentsPending_=false;if(this.picture_){Polymer.dom(this.sizeInfo_).textContent='('+\nthis.picture_.layerRect.width+' x '+\nthis.picture_.layerRect.height+')';}\nthis.drawOpsChartView_.updateChartContents();this.drawOpsChartView_.scrollSelectedItemIntoViewIfNecessary();if(!this.pictureAsImageData_)return;this.infoBar_.visible=false;this.infoBar_.removeAllButtons();if(this.pictureAsImageData_.error){this.infoBar_.message='Cannot rasterize...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=this.pictureAsImageData_.error;overlay.visible=true;e.stopPropagation();return false;}.bind(this));this.infoBar_.visible=true;}\nthis.drawPicture_();},drawPicture_(){const size=this.getRasterCanvasSize_();if(size.width!==this.rasterCanvas_.width){this.rasterCanvas_.width=size.width;}\nif(size.height!==this.rasterCanvas_.height){this.rasterCanvas_.height=size.height;}\nthis.rasterCtx_.clearRect(0,0,size.width,size.height);if(!this.pictureAsImageData_.imageData)return;const imgCanvas=this.pictureAsImageData_.asCanvas();const w=imgCanvas.width;const h=imgCanvas.height;this.rasterCtx_.drawImage(imgCanvas,0,0,w,h,0,0,w*this.zoomScaleValue_,h*this.zoomScaleValue_);},rasterize_(){if(this.picture_){this.picture_.rasterize({stopIndex:this.drawOpsView_.selectedOpIndex,showOverdraw:this.showOverdraw_},this.onRasterComplete_.bind(this));}},onRasterComplete_(pictureAsImageData){this.pictureAsImageData_=pictureAsImageData;this.scheduleUpdateContents_();},moveSelectedOpBy(increment){if(this.selectedOpIndex===undefined){this.selectedOpIndex=0;return;}\nthis.selectedOpIndex=tr.b.math.clamp(this.selectedOpIndex+increment,0,this.numOps);},get numOps(){return this.drawOpsView_.numOps;},get selectedOpIndex(){return this.drawOpsView_.selectedOpIndex;},set selectedOpIndex(index){this.drawOpsView_.selectedOpIndex=index;this.drawOpsChartView_.selectedOpIndex=index;},onChartBarClicked_(e){this.drawOpsView_.selectedOpIndex=this.drawOpsChartView_.selectedOpIndex;},onChangeDrawOps_(e){this.rasterize_();this.scheduleUpdateContents_();this.drawOpsChartView_.selectedOpIndex=this.drawOpsView_.selectedOpIndex;},set showOverdraw(v){this.showOverdraw_=v;this.rasterize_();},set showSummaryChart(chartShouldBeVisible){if(chartShouldBeVisible){this.drawOpsChartSummaryView_.show();}else{this.drawOpsChartSummaryView_.hide();}},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.rasterArea_;Polymer.dom(this.rasterArea_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.rasterArea_.offsetLeft,y:e.clientY-this.rasterArea_.offsetTop};}};return{PictureDebugger,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const PictureSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-snapshot-view',tr.ui.analysis.ObjectSnapshotView);PictureSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-picture-snapshot-view');this.style.display='flex';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.pictureDebugger_=new tr.ui.e.chrome.cc.PictureDebugger();this.pictureDebugger_.style.flexGrow=1;this.pictureDebugger_.style.flexShrink=1;this.pictureDebugger_.style.flexBasis='auto';this.pictureDebugger_.style.minWidth=0;Polymer.dom(this).appendChild(this.pictureDebugger_);},updateContents(){if(this.objectSnapshot_&&this.pictureDebugger_){this.pictureDebugger_.picture=this.objectSnapshot_;}}};tr.ui.analysis.ObjectSnapshotView.register(PictureSnapshotView,{typeNames:['cc::Picture','cc::LayeredPicture'],showInstances:false});return{PictureSnapshotView,};});'use strict';tr.exportTo('tr.e.cc',function(){const knownRasterTaskNames=['TileManager::RunRasterTask','RasterWorkerPoolTaskImpl::RunRasterOnThread','RasterWorkerPoolTaskImpl::Raster','RasterTaskImpl::Raster','cc::RasterTask','RasterTask'];const knownAnalysisTaskNames=['TileManager::RunAnalyzeTask','RasterWorkerPoolTaskImpl::RunAnalysisOnThread','RasterWorkerPoolTaskImpl::Analyze','RasterTaskImpl::Analyze','cc::AnalyzeTask','AnalyzeTask'];function getTileFromRasterTaskSlice(slice){if(!(isSliceDoingRasterization(slice)||isSliceDoingAnalysis(slice))){return undefined;}\nlet tileData;if(slice.args.data){tileData=slice.args.data;}else{tileData=slice.args.tileData;}\nif(tileData===undefined)return undefined;if(tileData.tile_id)return tileData.tile_id;const tile=tileData.tileId;if(!(tile instanceof tr.e.cc.TileSnapshot)){return undefined;}\nreturn tileData.tileId;}\nfunction isSliceDoingRasterization(slice){return knownRasterTaskNames.includes(slice.title);}\nfunction isSliceDoingAnalysis(slice){return knownAnalysisTaskNames.includes(slice.title);}\nreturn{getTileFromRasterTaskSlice,isSliceDoingRasterization,isSliceDoingAnalysis};});'use strict';tr.exportTo('tr.ui.analysis',function(){const AnalysisSubView={set tabLabel(label){Polymer.dom(this).setAttribute('tab-label',label);},get tabLabel(){return this.getAttribute('tab-label');},get requiresTallView(){return false;},get relatedEventsToHighlight(){return undefined;},set selection(selection){throw new Error('Not implemented!');},get selection(){throw new Error('Not implemented!');}};const allTypeInfosByEventProto=new Map();let onlyRootTypeInfosByEventProto=undefined;let eventProtoToRootTypeInfoMap=undefined;function AnalysisSubViewTypeInfo(eventConstructor,options){if(options.multi===undefined){throw new Error('missing field: multi');}\nif(options.title===undefined){throw new Error('missing field: title');}\nthis.eventConstructor=eventConstructor;this.singleTagName=undefined;this.singleTitle=undefined;this.multiTagName=undefined;this.multiTitle=undefined;this.childrenTypeInfos_=undefined;}\nAnalysisSubViewTypeInfo.prototype={get childrenTypeInfos(){return this.childrenTypeInfos_;},resetchildrenTypeInfos(){this.childrenTypeInfos_=[];}};AnalysisSubView.register=function(tagName,eventConstructor,options){let typeInfo=allTypeInfosByEventProto.get(eventConstructor.prototype);if(typeInfo===undefined){typeInfo=new AnalysisSubViewTypeInfo(eventConstructor,options);allTypeInfosByEventProto.set(typeInfo.eventConstructor.prototype,typeInfo);onlyRootTypeInfosByEventProto=undefined;}\nif(!options.multi){if(typeInfo.singleTagName!==undefined){throw new Error('SingleTagName already set');}\ntypeInfo.singleTagName=tagName;typeInfo.singleTitle=options.title;}else{if(typeInfo.multiTagName!==undefined){throw new Error('MultiTagName already set');}\ntypeInfo.multiTagName=tagName;typeInfo.multiTitle=options.title;}\nreturn typeInfo;};function rebuildRootSubViewTypeInfos(){onlyRootTypeInfosByEventProto=new Map();allTypeInfosByEventProto.forEach(function(typeInfo){typeInfo.resetchildrenTypeInfos();});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let lastEventProto=eventPrototype;let curEventProto=eventPrototype.__proto__;while(true){if(!allTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=allTypeInfosByEventProto.get(lastEventProto);const rootEventProto=lastEventProto;const isNew=onlyRootTypeInfosByEventProto.has(rootEventProto);onlyRootTypeInfosByEventProto.set(rootEventProto,rootTypeInfo);break;}\nlastEventProto=curEventProto;curEventProto=curEventProto.__proto__;}});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;const parentEventProto=eventPrototype.__proto__;const parentTypeInfo=allTypeInfosByEventProto.get(parentEventProto);if(!parentTypeInfo)return;parentTypeInfo.childrenTypeInfos.push(typeInfo);});eventProtoToRootTypeInfoMap=new Map();allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let curEventProto=eventPrototype;while(true){if(onlyRootTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=onlyRootTypeInfosByEventProto.get(curEventProto);eventProtoToRootTypeInfoMap.set(eventPrototype,rootTypeInfo);break;}\ncurEventProto=curEventProto.__proto__;}});}\nfunction findLowestTypeInfoForEvents(thisTypeInfo,events){if(events.length===0)return thisTypeInfo;const event0=tr.b.getFirstElement(events);let candidateSubTypeInfo;for(let i=0;i<thisTypeInfo.childrenTypeInfos.length;i++){const childTypeInfo=thisTypeInfo.childrenTypeInfos[i];if(event0 instanceof childTypeInfo.eventConstructor){candidateSubTypeInfo=childTypeInfo;break;}}\nif(!candidateSubTypeInfo)return thisTypeInfo;let allMatch=true;for(const event of events){if(event instanceof candidateSubTypeInfo.eventConstructor)continue;allMatch=false;break;}\nif(!allMatch){return thisTypeInfo;}\nreturn findLowestTypeInfoForEvents(candidateSubTypeInfo,events);}\nconst primaryEventProtoToTypeInfoMap=new Map();function getRootTypeInfoForEvent(event){const curProto=event.__proto__;const typeInfo=primaryEventProtoToTypeInfoMap.get(curProto);if(typeInfo)return typeInfo;return getRootTypeInfoForEventSlow(event);}\nfunction getRootTypeInfoForEventSlow(event){let typeInfo;let curProto=event.__proto__;while(true){if(curProto===Object.prototype){throw new Error('No view registered for '+event.toString());}\ntypeInfo=onlyRootTypeInfosByEventProto.get(curProto);if(typeInfo){primaryEventProtoToTypeInfoMap.set(event.__proto__,typeInfo);return typeInfo;}\ncurProto=curProto.__proto__;}}\nAnalysisSubView.getEventsOrganizedByTypeInfo=function(selection){if(onlyRootTypeInfosByEventProto===undefined){rebuildRootSubViewTypeInfos();}\nconst eventsByRootTypeInfo=tr.b.groupIntoMap(selection,function(event){return getRootTypeInfoForEvent(event);},this,tr.model.EventSet);const eventsByLowestTypeInfo=new Map();eventsByRootTypeInfo.forEach(function(events,typeInfo){const lowestTypeInfo=findLowestTypeInfoForEvents(typeInfo,events);eventsByLowestTypeInfo.set(lowestTypeInfo,events);});return eventsByLowestTypeInfo;};return{AnalysisSubView,AnalysisSubViewTypeInfo,};});Polymer({is:'tr-ui-a-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView]});'use strict';Polymer({is:'tr-ui-a-stack-frame',ready(){this.stackFrame_=undefined;this.$.table.tableColumns=[];this.$.table.showHeader=true;},get stackFrame(){return this.stackFrame_;},set stackFrame(stackFrame){const table=this.$.table;this.stackFrame_=stackFrame;if(stackFrame===undefined){table.tableColumns=[];table.tableRows=[];table.rebuild();return;}\nlet hasName=false;let hasTitle=false;table.tableRows=stackFrame.stackTrace;table.tableRows.forEach(function(row){hasName|=row.name!==undefined;hasTitle|=row.title!==undefined;});const cols=[];if(hasName){cols.push({title:'Name',value(row){return row.name;}});}\nif(hasTitle){cols.push({title:'Title',value(row){return row.title;}});}\ntable.tableColumns=cols;table.rebuild();},tableForTesting(){return this.$.table;}});'use strict';Polymer({is:'tr-ui-a-single-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],properties:{isFlow:{type:Boolean,value:false}},ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}\nthis.setSelectionWithoutErrorChecks(selection);},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;this.updateContents_();},getFlowEventRows_(event){const rows=this.getEventRowsHelper_(event);rows.splice(0,0,{name:'ID',value:event.id});function createLinkTo(slice){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(slice);});Polymer.dom(linkEl).textContent=slice.userFriendlyName;return linkEl;}\nrows.push({name:'From',value:createLinkTo(event.startSlice)});rows.push({name:'To',value:createLinkTo(event.endSlice)});return rows;},getEventRowsHelper_(event){const rows=[];if(event.error){rows.push({name:'Error',value:event.error});}\nif(event.title){let title=event.title;if(tr.isExported('tr-ui-e-chrome-codesearch')){const container=document.createElement('div');container.appendChild(document.createTextNode(title));const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=title;container.appendChild(link);title=container;}\nrows.push({name:'Title',value:title});}\nif(event.category){rows.push({name:'Category',value:event.category});}\nif(event.model!==undefined){const ufc=event.model.getUserFriendlyCategoryFromEvent(event);if(ufc!==undefined){rows.push({name:'User Friendly Category',value:ufc});}}\nif(event.name){rows.push({name:'Name',value:event.name});}\nrows.push({name:'Start',value:tr.v.ui.createScalarSpan(event.start,{unit:tr.b.Unit.byName.timeStampInMs})});if(event.duration){rows.push({name:'Wall Duration',value:tr.v.ui.createScalarSpan(event.duration,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.cpuDuration){rows.push({name:'CPU Duration',value:tr.v.ui.createScalarSpan(event.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.subSlices!==undefined&&event.subSlices.length!==0){if(event.selfTime){rows.push({name:'Self Time',value:tr.v.ui.createScalarSpan(event.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.cpuSelfTime){const cpuSelfTimeEl=tr.v.ui.createScalarSpan(event.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs});if(event.cpuSelfTime>event.selfTime){cpuSelfTimeEl.warning=' Note that CPU Self Time is larger than Self Time. '+'This is a known limitation of this system, which occurs '+'due to several subslices, rounding issues, and imprecise '+'time at which we get cpu- and real-time.';}\nrows.push({name:'CPU Self Time',value:cpuSelfTimeEl});}}\nif(event.durationInUserTime){rows.push({name:'Duration (U)',value:tr.v.ui.createScalarSpan(event.durationInUserTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nfunction createStackFrameEl(sf){const sfEl=document.createElement('tr-ui-a-stack-frame');sfEl.stackFrame=sf;return sfEl;}\nif(event.startStackFrame&&event.endStackFrame){if(event.startStackFrame===event.endStackFrame){rows.push({name:'Start+End Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else{rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}}else if(event.startStackFrame){rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else if(event.endStackFrame){rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}\nif(event.info){const descriptionEl=tr.ui.b.createDiv({textContent:event.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(event.info.docLinks){event.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}}\nif(event.associatedAlerts.length){const alertSubRows=[];event.associatedAlerts.forEach(function(alert){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(alert);},alert.info.description);alertSubRows.push({name:alert.title,value:linkEl});});rows.push({name:'Alerts',value:'',isExpanded:true,subRows:alertSubRows});}\nreturn rows;},getEventRows_(event){if(this.isFlow){return this.getFlowEventRows_(event);}\nreturn this.getEventRowsHelper_(event);},addArgsToRows_(rows,args){let n=0;for(const argName in args){n+=1;}\nif(n>0){const subRows=[];for(const argName in args){n+=1;}\nif(n>0){const subRows=[];for(const argName in args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=args[argName];subRows.push({name:argName,value:argView});}\nrows.push({name:'Args',value:'',isExpanded:true,subRows});}}},addContextsToRows_(rows,contexts){if(contexts.length){const subRows=contexts.map(function(context){const contextView=document.createElement('tr-ui-a-generic-object-view');contextView.object=context;return{name:'Context',value:contextView};});rows.push({name:'Contexts',value:'',isExpanded:true,subRows});}},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}\nconst event=tr.b.getOnlyElement(this.currentSelection_);const rows=this.getEventRows_(event);if(event.argsStripped){rows.push({name:'Args',value:'Stripped'});}else{this.addArgsToRows_(rows,event.args);}\nthis.addContextsToRows_(rows,event.contexts);const customizeRowsEvent=new tr.b.Event('customize-rows');customizeRowsEvent.rows=rows;this.dispatchEvent(customizeRowsEvent);this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-e-chrome-cc-raster-task-view',created(){this.selection_=undefined;},set selection(selection){this.selection_=selection;this.updateContents_();},updateColumns_(hadCpuDurations){const timeSpanConfig={unit:tr.b.Unit.byName.timeDurationInMs,ownerDocument:this.ownerDocument};const columns=[{title:'Layer',value(row){if(row.isTotals)return'Totals';if(row.layer){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.ui.e.chrome.cc.LayerSelection(row.layer);},'Layer '+row.layerId);return linkEl;}\nreturn'Layer '+row.layerId;},width:'250px'},{title:'Num Tiles',value(row){return row.numTiles;},cmp(a,b){return a.numTiles-b.numTiles;}},{title:'Num Analysis Tasks',value(row){return row.numAnalysisTasks;},cmp(a,b){return a.numAnalysisTasks-b.numAnalysisTasks;}},{title:'Num Raster Tasks',value(row){return row.numRasterTasks;},cmp(a,b){return a.numRasterTasks-b.numRasterTasks;}},{title:'Wall Duration (ms)',value(row){return tr.v.ui.createScalarSpan(row.duration,timeSpanConfig);},cmp(a,b){return a.duration-b.duration;}}];if(hadCpuDurations){columns.push({title:'CPU Duration (ms)',value(row){return tr.v.ui.createScalarSpan(row.cpuDuration,timeSpanConfig);},cmp(a,b){return a.cpuDuration-b.cpuDuration;}});}\nlet colWidthPercentage;if(columns.length===1){colWidthPercentage='100%';}else{colWidthPercentage=(100/(columns.length-1)).toFixed(3)+'%';}\nfor(let i=1;i<columns.length;i++){columns[i].width=colWidthPercentage;}\nthis.$.content.tableColumns=columns;this.$.content.sortColumnIndex=columns.length-1;},updateContents_(){const table=this.$.content;if(this.selection_.length===0){this.$.link.setSelectionAndContent(undefined,'');table.tableRows=[];table.footerRows=[];table.rebuild();return;}\nconst lthi=tr.e.cc.getTileFromRasterTaskSlice(tr.b.getFirstElement(this.selection_)).containingSnapshot;this.$.link.setSelectionAndContent(function(){return new tr.model.EventSet(lthi);},lthi.userFriendlyName);const costsByLayerId={};function getCurrentCostsForLayerId(tile){const layerId=tile.layerId;const lthi=tile.containingSnapshot;let layer;if(lthi.activeTree){layer=lthi.activeTree.findLayerWithId(layerId);}\nif(layer===undefined&&lthi.pendingTree){layer=lthi.pendingTree.findLayerWithId(layerId);}\nif(costsByLayerId[layerId]===undefined){costsByLayerId[layerId]={layerId,layer,numTiles:0,numAnalysisTasks:0,numRasterTasks:0,duration:0,cpuDuration:0};}\nreturn costsByLayerId[layerId];}\nlet totalDuration=0;let totalCpuDuration=0;let totalNumAnalyzeTasks=0;let totalNumRasterizeTasks=0;let hadCpuDurations=false;const tilesThatWeHaveSeen={};this.selection_.forEach(function(slice){const tile=tr.e.cc.getTileFromRasterTaskSlice(slice);const curCosts=getCurrentCostsForLayerId(tile);if(!tilesThatWeHaveSeen[tile.objectInstance.id]){tilesThatWeHaveSeen[tile.objectInstance.id]=true;curCosts.numTiles+=1;}\nif(tr.e.cc.isSliceDoingAnalysis(slice)){curCosts.numAnalysisTasks+=1;totalNumAnalyzeTasks+=1;}else{curCosts.numRasterTasks+=1;totalNumRasterizeTasks+=1;}\ncurCosts.duration+=slice.duration;totalDuration+=slice.duration;if(slice.cpuDuration!==undefined){curCosts.cpuDuration+=slice.cpuDuration;totalCpuDuration+=slice.cpuDuration;hadCpuDurations=true;}});this.updateColumns_(hadCpuDurations);table.tableRows=Object.values(costsByLayerId);table.rebuild();table.footerRows=[{isTotals:true,numTiles:Object.keys(tilesThatWeHaveSeen).length,numAnalysisTasks:totalNumAnalyzeTasks,numRasterTasks:totalNumRasterizeTasks,duration:totalDuration,cpuDuration:totalCpuDuration}];}});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){function RasterTaskSelection(selection){tr.ui.e.chrome.cc.Selection.call(this);const whySupported=RasterTaskSelection.whySuported(selection);if(!whySupported.ok){throw new Error('Fail: '+whySupported.why);}\nthis.slices_=Array.from(selection);this.tiles_=this.slices_.map(function(slice){const tile=tr.e.cc.getTileFromRasterTaskSlice(slice);if(tile===undefined){throw new Error('This should never happen due to .supports check.');}\nreturn tile;});}\nRasterTaskSelection.whySuported=function(selection){if(!(selection instanceof tr.model.EventSet)){return{ok:false,why:'Must be selection'};}\nif(selection.length===0){return{ok:false,why:'Selection must be non empty'};}\nlet referenceSnapshot=undefined;for(const event of selection){if(!(event instanceof tr.model.Slice)){return{ok:false,why:'Not a slice'};}\nconst tile=tr.e.cc.getTileFromRasterTaskSlice(event);if(tile===undefined){return{ok:false,why:'No tile found'};}\nif(!referenceSnapshot){referenceSnapshot=tile.containingSnapshot;}else{if(tile.containingSnapshot!==referenceSnapshot){return{ok:false,why:'Raster tasks are from different compositor instances'};}}}\nreturn{ok:true};};RasterTaskSelection.supports=function(selection){return RasterTaskSelection.whySuported(selection).ok;};RasterTaskSelection.prototype={__proto__:tr.ui.e.chrome.cc.Selection.prototype,get specicifity(){return 3;},get associatedLayerId(){const tile0=this.tiles_[0];const allSameLayer=this.tiles_.every(function(tile){tile.layerId===tile0.layerId;});if(allSameLayer){return tile0.layerId;}\nreturn undefined;},get extraHighlightsByLayerId(){const highlights={};this.tiles_.forEach(function(tile,i){if(highlights[tile.layerId]===undefined){highlights[tile.layerId]=[];}\nconst slice=this.slices_[i];highlights[tile.layerId].push({colorKey:slice.title,rect:tile.layerRect});},this);return highlights;},createAnalysis(){const sel=new tr.model.EventSet();this.slices_.forEach(function(slice){sel.push(slice);});let analysis;if(sel.length===1){analysis=document.createElement('tr-ui-a-single-event-sub-view');}else{analysis=document.createElement('tr-ui-e-chrome-cc-raster-task-view');}\nanalysis.selection=sel;return analysis;},findEquivalent(lthi){return undefined;},get containingSnapshot(){return this.tiles_[0].containingSnapshot;}};return{RasterTaskSelection,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const TileSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-tile-snapshot-view',tr.ui.analysis.ObjectSnapshotView);TileSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-tile-snapshot-view');this.layerTreeView_=new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();Polymer.dom(this).appendChild(this.layerTreeView_);},updateContents(){const tile=this.objectSnapshot_;const layerTreeHostImpl=tile.containingSnapshot;if(!layerTreeHostImpl)return;this.layerTreeView_.objectSnapshot=layerTreeHostImpl;this.layerTreeView_.selection=new tr.ui.e.chrome.cc.TileSelection(tile);}};tr.ui.analysis.ObjectSnapshotView.register(TileSnapshotView,{typeName:'cc::Tile',showInTrackView:false});return{TileSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome',function(){Polymer({is:'tr-ui-e-chrome-codesearch',set searchPhrase(phrase){const link=Polymer.dom(this.$.codesearchLink);const codeSearchURL='https://cs.chromium.org/search/?sq=package:chromium&type=cs&q=';link.setAttribute('href',codeSearchURL+encodeURIComponent(phrase));},onClick(clickEvent){clickEvent.stopPropagation();}});return{};});'use strict';tr.exportTo('tr.e.gpu',function(){const AsyncSlice=tr.model.AsyncSlice;function GpuAsyncSlice(){AsyncSlice.apply(this,arguments);}\nGpuAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){if(this.args.channel){if(this.category==='disabled-by-default-gpu.device'){return'Device.'+this.args.channel;}\nreturn'Service.'+this.args.channel;}\nreturn this.title;}};AsyncSlice.subTypes.register(GpuAsyncSlice,{categoryParts:['disabled-by-default-gpu.device','disabled-by-default-gpu.service']});return{GpuAsyncSlice,};});'use strict';tr.exportTo('tr.e.gpu',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function StateSnapshot(){ObjectSnapshot.apply(this,arguments);}\nStateSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){this.screenshot_=undefined;},initialize(){if(this.args.screenshot){this.screenshot_=this.args.screenshot;}},get screenshot(){return this.screenshot_;}};ObjectSnapshot.subTypes.register(StateSnapshot,{typeName:'gpu::State'});return{StateSnapshot,};});'use strict';tr.exportTo('tr.ui.e.chrome.gpu',function(){const StateSnapshotView=tr.ui.b.define('tr-ui-e-chrome-gpu-state-snapshot-view',tr.ui.analysis.ObjectSnapshotView);StateSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-gpu-state-snapshot-view');this.screenshotImage_=document.createElement('img');Polymer.dom(this).appendChild(this.screenshotImage_);},updateContents(){if(this.objectSnapshot_&&this.objectSnapshot_.screenshot){this.screenshotImage_.src='data:image/png;base64,'+\nthis.objectSnapshot_.screenshot;}}};tr.ui.analysis.ObjectSnapshotView.register(StateSnapshotView,{typeName:'gpu::State'});return{StateSnapshotView,};});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-layout-tree-sub-view',behaviors:['tr-ui-a-sub-view'],set selection(selection){this.currentSelection_=selection;this.updateContents_();},get selection(){return this.currentSelection_;},updateContents_(){this.set('$.content.textContent','');if(!this.currentSelection_)return;const columns=[{title:'Tag/Name',value(layoutObject){return layoutObject.tag||':'+layoutObject.name;}},{title:'htmlId',value(layoutObject){return layoutObject.htmlId||'';}},{title:'classNames',value(layoutObject){return layoutObject.classNames||'';}},{title:'reasons',value(layoutObject){return layoutObject.needsLayoutReasons.join(', ');}},{title:'width',value(layoutObject){return layoutObject.absoluteRect.width;}},{title:'height',value(layoutObject){return layoutObject.absoluteRect.height;}},{title:'absX',value(layoutObject){return layoutObject.absoluteRect.left;}},{title:'absY',value(layoutObject){return layoutObject.absoluteRect.top;}},{title:'relX',value(layoutObject){return layoutObject.relativeRect.left;}},{title:'relY',value(layoutObject){return layoutObject.relativeRect.top;}},{title:'float',value(layoutObject){return layoutObject.isFloat?'float':'';}},{title:'positioned',value(layoutObject){return layoutObject.isPositioned?'positioned':'';}},{title:'relative',value(layoutObject){return layoutObject.isRelativePositioned?'relative':'';}},{title:'sticky',value(layoutObject){return layoutObject.isStickyPositioned?'sticky':'';}},{title:'anonymous',value(layoutObject){return layoutObject.isAnonymous?'anonymous':'';}},{title:'row',value(layoutObject){if(layoutObject.tableRow===undefined){return'';}\nreturn layoutObject.tableRow;}},{title:'col',value(layoutObject){if(layoutObject.tableCol===undefined){return'';}\nreturn layoutObject.tableCol;}},{title:'rowSpan',value(layoutObject){if(layoutObject.tableRowSpan===undefined){return'';}\nreturn layoutObject.tableRowSpan;}},{title:'colSpan',value(layoutObject){if(layoutObject.tableColSpan===undefined){return'';}\nreturn layoutObject.tableColSpan;}},{title:'address',value(layoutObject){return layoutObject.id.toString(16);}}];const table=this.ownerDocument.createElement('tr-ui-b-table');table.defaultExpansionStateCallback=function(layoutObject,parentLayoutObject){return true;};table.subRowsPropertyName='childLayoutObjects';table.tableColumns=columns;table.tableRows=this.currentSelection_.map(function(snapshot){return snapshot.rootLayoutObject;});table.rebuild();Polymer.dom(this.$.content).appendChild(table);},});return{};});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-layout-tree-sub-view',tr.e.chrome.LayoutTreeSnapshot,{multi:false,title:'Layout Tree',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-layout-tree-sub-view',tr.e.chrome.LayoutTreeSnapshot,{multi:true,title:'Layout Trees',});'use strict';tr.exportTo('tr.ui.e.img',function(){const THIS_DOC=document.currentScript.ownerDocument;const ImageSnapshotView=tr.ui.b.define('tr-ui-e-img-image-snapshot-view',tr.ui.analysis.ObjectSnapshotView);ImageSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-img-image-snapshot-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);const info=Polymer.dom(this).querySelector('.image-info');this.sizeInfo_=Polymer.dom(info).querySelector('.size');this.imageContainer_=Polymer.dom(this).querySelector('.image-container');this.image_=Polymer.dom(this.imageContainer_).querySelector('img');this.zoomScaleValue_=1;this.trackMouse_();},updateContents(){if(this.objectSnapshot_&&this.objectSnapshot_.data&&this.objectSnapshot_.type){this.image_.onload=this.drawPicture_.bind(this);this.image_.src=`data:image/${this.objectSnapshot_.type};`+`base64,${this.objectSnapshot_.data}`;}\nthis.drawPicture_();},drawPicture_(){if(!this.image_.complete)return;const naturalWidth=this.image_.naturalWidth;const naturalHeight=this.image_.naturalHeight;this.sizeInfo_.textContent=`(${naturalWidth} x ${naturalHeight})`;this.image_.width=naturalWidth*this.zoomScaleValue_;this.image_.height=naturalHeight*this.zoomScaleValue_;},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.imageContainer_;Polymer.dom(this.imageContainer_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.imageContainer_.offsetLeft,y:e.clientY-this.imageContainer_.offsetTop};},};tr.ui.analysis.ObjectSnapshotView.register(ImageSnapshotView,{typeName:'gfx::Image'});return{ImageSnapshotView,};});'use strict';tr.exportTo('tr.ui.behaviors',function(){const SidePanel={get rangeOfInterest(){throw new Error('Not implemented');},set rangeOfInterest(rangeOfInterest){throw new Error('Not implemented');},get selection(){throw new Error('Not implemented');},set selection(selection){throw new Error('Not implemented');},get model(){throw new Error('Not implemented');},set model(model){throw new Error('Not implemented');},supportsModel(m){throw new Error('Not implemented');}};return{SidePanel,};});'use strict';tr.exportTo('tr.ui.side_panel',function(){function SidePanelRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(SidePanelRegistry,options);return{SidePanelRegistry,};});'use strict';tr.exportTo('tr.ui.e.s',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const FrameTreeNodeSnapshot=tr.e.chrome.FrameTreeNodeSnapshot;const RenderFrameSnapshot=tr.e.chrome.RenderFrameSnapshot;const TopLevelSnapshot=tr.e.chrome.TopLevelSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;const FrameTreeNodeInstance=tr.e.chrome.FrameTreeNodeInstance;const RenderFrameInstance=tr.e.chrome.RenderFrameInstance;const TopLevelInstance=tr.e.chrome.TopLevelInstance;function Row(context){this.subRows=undefined;this.contexts=[];this.type=undefined;this.renderer='N/A';this.url=undefined;this.time=0;this.eventsOfInterest=new tr.model.EventSet();if(context===undefined)return;this.type=context.objectInstance.blameContextType;this.contexts.push(context);if(context instanceof FrameTreeNodeSnapshot){if(context.renderFrame){this.contexts.push(context.renderFrame);this.renderer=context.renderFrame.objectInstance.parent.pid;}}else if(context instanceof RenderFrameSnapshot){if(context.frameTreeNode){this.contexts.push(context.frameTreeNode);}\nthis.renderer=context.objectInstance.parent.pid;}else if(context instanceof TopLevelSnapshot){this.renderer=context.objectInstance.parent.pid;}else{throw new Error('Unknown context type');}\nthis.eventsOfInterest.addEventSet(this.contexts);this.url=context.url;}\nconst groupFunctions={none:rows=>rows,tree(rows,rowMap){const getParentRow=function(row){let pivot;row.contexts.forEach(function(context){if(context instanceof tr.e.chrome.FrameTreeNodeSnapshot){pivot=context;}});if(pivot&&pivot.parentContext){return rowMap[pivot.parentContext.guid];}\nreturn undefined;};const rootRows=[];rows.forEach(function(row){const parentRow=getParentRow(row);if(parentRow===undefined){rootRows.push(row);return;}\nif(parentRow.subRows===undefined){parentRow.subRows=[];}\nparentRow.subRows.push(row);});const aggregateAllDescendants=function(row){if(!row.subRows){if(getParentRow(row)){row.type='Subframe';}\nreturn row;}\nconst result=new Row();result.type='Frame Tree';result.renderer=row.renderer;result.url=row.url;result.subRows=[row];row.subRows.forEach(subRow=>result.subRows.push(aggregateAllDescendants(subRow)));result.subRows.forEach(function(subRow){result.time+=subRow.time;result.eventsOfInterest.addEventSet(subRow.eventsOfInterest);});row.subRows=undefined;return result;};return rootRows.map(rootRow=>aggregateAllDescendants(rootRow));}};Polymer({is:'tr-ui-e-s-frame-data-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.rangeOfInterest_=new tr.b.math.Range();this.$.table.showHeader=true;this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.tableColumns=this.createFrameDataTableColumns_();this.$.table.addEventListener('selection-changed',function(e){this.selectEventSet_(this.$.table.selectedTableRow.eventsOfInterest);}.bind(this));this.$.select.addEventListener('change',function(e){this.updateContents_();}.bind(this));},selectEventSet_(eventSet){const event=new tr.model.RequestSelectionChangeEvent();event.selection=eventSet;this.dispatchEvent(event);},createFrameDataTableColumns_(){return[{title:'Renderer',value:row=>row.renderer,cmp:(a,b)=>a.renderer-b.renderer},{title:'Type',value:row=>row.type},{title:'Time',value:row=>tr.v.ui.createScalarSpan(row.time,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument}),cmp:(a,b)=>a.time-b.time},{title:'URL',value:row=>row.url,cmp:(a,b)=>(a.url||'').localeCompare(b.url||'')}];},createFrameDataTableRows_(){if(!this.model_)return[];const rows=[];const rowMap={};for(const proc of Object.values(this.model_.processes)){proc.objects.iterObjectInstances(function(objectInstance){if(!(objectInstance instanceof BlameContextInstance)){return;}\nobjectInstance.snapshots.forEach(function(snapshot){if(rowMap[snapshot.guid])return;const row=new Row(snapshot);row.contexts.forEach(context=>rowMap[context.guid]=row);rows.push(row);},this);},this);}\nfor(const proc of Object.values(this.model_.processes)){for(const thread of Object.values(proc.threads)){thread.sliceGroup.iterSlicesInTimeRange(function(topLevelSlice){topLevelSlice.contexts.forEach(function(context){if(!context.snapshot.guid||!rowMap[context.snapshot.guid]){return;}\nconst row=rowMap[context.snapshot.guid];row.eventsOfInterest.push(topLevelSlice);row.time+=topLevelSlice.selfTime||0;});},this.currentRangeOfInterest.min,this.currentRangeOfInterest.max);}}\nconst select=this.$.select;const groupOption=select.options[select.selectedIndex].value;const groupFunction=groupFunctions[groupOption];return groupFunction(rows,rowMap);},updateContents_(){this.$.table.tableRows=this.createFrameDataTableRows_();this.$.table.rebuild();},supportsModel(m){if(!m){return{supported:false,reason:'No model available.'};}\nconst ans={supported:false};for(const proc of Object.values(m.processes)){proc.objects.iterObjectInstances(function(instance){if(instance instanceof BlameContextInstance){ans.supported=true;}});}\nif(!ans.supported){ans.reason='No frame data available';}\nreturn ans;},get currentRangeOfInterest(){if(this.rangeOfInterest_.isEmpty){return this.model_.bounds;}\nreturn this.rangeOfInterest_;},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;this.updateContents_();},get selection(){},set selection(_){},get textLabel(){return'Frame Data';},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-frame-data-side-panel');});});'use strict';Polymer({is:'tr-ui-b-chart-legend-key',ready(){this.$.checkbox.addEventListener('change',this.onCheckboxChange_.bind(this));},onCheckboxChange_(){tr.b.dispatchSimpleEvent(this,tr.ui.b.DataSeriesEnableChangeEventType,true,false,{key:Polymer.dom(this).textContent,enabled:this.enabled});},set textContent(t){Polymer.dom(this.$.label).textContent=t;Polymer.dom(this.$.link).textContent=t;this.updateContents_();},set width(w){w-=20;this.$.link.style.width=w+'px';this.$.label.style.width=w+'px';},get textContent(){return Polymer.dom(this.$.label).textContent;},set optional(optional){this.$.checkbox.style.visibility=optional?'visible':'hidden';},get optional(){return this.$.checkbox.style.visibility==='visible';},set enabled(enabled){this.$.checkbox.checked=enabled?'checked':'';},get enabled(){return this.$.checkbox.checked;},set color(c){this.$.label.style.color=c;this.$.link.color=c;},set target(target){this.$.link.setSelectionAndContent(target,Polymer.dom(this.$.label).textContent);this.updateContents_();},get target(){return this.$.link.selection;},set title(title){this.$.link.title=title;},updateContents_(){this.$.link.style.display=this.target?'':'none';this.$.label.style.display=this.target?'none':'';this.$.label.htmlFor=this.optional?'checkbox':'';}});'use strict';(function(window){window.define=function(x){window.d3=x;};window.define.amd=true;})(this);!function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(n){return aa+n in this}function o(n){return n=aa+n,n in this&&delete this[n]}function a(){var n=[];return this.forEach(function(t){n.push(t)}),n}function c(){var n=0;for(var t in this)t.charCodeAt(0)===ca&&++n;return n}function s(){for(var n in this)if(n.charCodeAt(0)===ca)return!1;return!0}function l(){}function f(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function h(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=sa.length;r>e;++e){var u=sa[e]+t;if(u in n)return u}}function g(){}function p(){}function v(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new u;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function d(){Xo.event.preventDefault()}function m(){for(var n,t=Xo.event;n=t.sourceEvent;)t=n;return t}function y(n){for(var t=new p,e=0,r=arguments.length;++e<r;)t[arguments[e]]=v(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=Xo.event;u.target=n,Xo.event=u,t[u.type].apply(e,r)}finally{Xo.event=i}}},t}function x(n){return fa(n,da),n}function M(n){return\"function\"==typeof n?n:function(){return ha(n,this)}}function _(n){return\"function\"==typeof n?n:function(){return ga(n,this)}}function b(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=Xo.ns.qualify(n),null==t?n.local?r:e:\"function\"==typeof t?n.local?a:o:n.local?i:u}function w(n){return n.trim().replace(/\\s+/g,\" \")}function S(n){return new RegExp(\"(?:^|\\\\s+)\"+Xo.requote(n)+\"(?:\\\\s+|$)\",\"g\")}function k(n){return n.trim().split(/^|\\s+/)}function E(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=k(n).map(A);var u=n.length;return\"function\"==typeof t?r:e}function A(n){var t=S(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute(\"class\")||\"\";r?(t.lastIndex=0,t.test(u)||e.setAttribute(\"class\",w(u+\" \"+n))):e.setAttribute(\"class\",w(u.replace(t,\" \")))}}function C(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:\"function\"==typeof t?i:u}function N(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:\"function\"==typeof t?u:r}function L(n){return\"function\"==typeof n?n:(n=Xo.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function T(n){return{__data__:n}}function q(n){return function(){return va(this,n)}}function z(n){return arguments.length||(n=Xo.ascending),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function R(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function D(n){return fa(n,ya),n}function P(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function U(){var n=this.__transition__;n&&++n.active}function j(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,Bo(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp(\"^__on([^.]+)\"+Xo.requote(n)+\"$\");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o=\"__on\"+n,a=n.indexOf(\".\"),c=H;a>0&&(n=n.substring(0,a));var s=Ma.get(n);return s&&(n=s,c=F),a?t?u:r:t?g:i}function H(n,t){return function(e){var r=Xo.event;Xo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Xo.event=r}}}function F(n,t){var e=H(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function O(){var n=\".dragsuppress-\"+ ++ba,t=\"click\"+n,e=Xo.select(Go).on(\"touchmove\"+n,d).on(\"dragstart\"+n,d).on(\"selectstart\"+n,d);if(_a){var r=Jo.style,u=r[_a];r[_a]=\"none\"}return function(i){function o(){e.on(t,null)}e.on(n,null),_a&&(r[_a]=u),i&&(e.on(t,function(){d(),o()},!0),setTimeout(o,0))}}function Y(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>wa&&(Go.scrollX||Go.scrollY)){e=Xo.select(\"body\").append(\"svg\").style({position:\"absolute\",top:0,left:0,margin:0,padding:0,border:\"none\"},\"important\");var u=e[0][0].getScreenCTM();wa=!(u.f||u.e),e.remove()}return wa?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function I(n){return n>0?1:0>n?-1:0}function Z(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function V(n){return n>1?0:-1>n?Sa:Math.acos(n)}function X(n){return n>1?Ea:-1>n?-Ea:Math.asin(n)}function $(n){return((n=Math.exp(n))-1/n)/2}function B(n){return((n=Math.exp(n))+1/n)/2}function W(n){return((n=Math.exp(2*n))-1)/(n+1)}function J(n){return(n=Math.sin(n/2))*n}function G(){}function K(n,t,e){return new Q(n,t,e)}function Q(n,t,e){this.h=n,this.s=t,this.l=e}function nt(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,gt(u(n+120),u(n),u(n-120))}function tt(n,t,e){return new et(n,t,e)}function et(n,t,e){this.h=n,this.c=t,this.l=e}function rt(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),ut(e,Math.cos(n*=Na)*t,Math.sin(n)*t)}function ut(n,t,e){return new it(n,t,e)}function it(n,t,e){this.l=n,this.a=t,this.b=e}function ot(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=ct(u)*Fa,r=ct(r)*Oa,i=ct(i)*Ya,gt(lt(3.2404542*u-1.5371385*r-.4985314*i),lt(-.969266*u+1.8760108*r+.041556*i),lt(.0556434*u-.2040259*r+1.0572252*i))}function at(n,t,e){return n>0?tt(Math.atan2(e,t)*La,Math.sqrt(t*t+e*e),n):tt(0/0,0/0,n)}function ct(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function st(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function lt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ft(n){return gt(n>>16,255&n>>8,255&n)}function ht(n){return ft(n)+\"\"}function gt(n,t,e){return new pt(n,t,e)}function pt(n,t,e){this.r=n,this.g=t,this.b=e}function vt(n){return 16>n?\"0\"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function dt(n,t,e){var r,u,i,o,a=0,c=0,s=0;if(u=/([a-z]+)\\((.*)\\)/i.exec(n))switch(i=u[2].split(\",\"),u[1]){case\"hsl\":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case\"rgb\":return t(Mt(i[0]),Mt(i[1]),Mt(i[2]))}return(o=Va.get(n))?t(o.r,o.g,o.b):(null!=n&&\"#\"===n.charAt(0)&&(r=parseInt(n.substring(1),16),isNaN(r)||(4===n.length?(a=(3840&r)>>4,a=a>>4|a,c=240&r,c=c>>4|c,s=15&r,s=s<<4|s):7===n.length&&(a=(16711680&r)>>16,c=(65280&r)>>8,s=255&r))),t(a,c,s))}function mt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),K(r,u,c)}function yt(n,t,e){n=xt(n),t=xt(t),e=xt(e);var r=st((.4124564*n+.3575761*t+.1804375*e)/Fa),u=st((.2126729*n+.7151522*t+.072175*e)/Oa),i=st((.0193339*n+.119192*t+.9503041*e)/Ya);return ut(116*u-16,500*(r-u),200*(u-i))}function xt(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Mt(n){var t=parseFloat(n);return\"%\"===n.charAt(n.length-1)?Math.round(2.55*t):t}function _t(n){return\"function\"==typeof n?n:function(){return n}}function bt(n){return n}function wt(n){return function(t,e,r){return 2===arguments.length&&\"function\"==typeof e&&(r=e,e=null),St(t,e,n,r)}}function St(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Xo.dispatch(\"beforesend\",\"progress\",\"load\",\"error\"),a={},c=new XMLHttpRequest,s=null;return!Go.XDomainRequest||\"withCredentials\"in c||!/^(http(s)?:)?\\/\\//.test(n)||(c=new XDomainRequest),\"onload\"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Xo.event;Xo.event=n;try{o.progress.call(i,c)}finally{Xo.event=t}},i.header=function(n,t){return n=(n+\"\").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+\"\",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+\"\",i):t},i.responseType=function(n){return arguments.length?(s=n,i):s},i.response=function(n){return e=n,i},[\"get\",\"post\"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Bo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&\"function\"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||\"accept\"in a||(a.accept=t+\",*/*\"),c.setRequestHeader)for(var l in a)c.setRequestHeader(l,a[l]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=s&&(c.responseType=s),null!=u&&i.on(\"error\",u).on(\"load\",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Xo.rebind(i,o,\"on\"),null==r?i:i.get(kt(r))}function kt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Et(){var n=At(),t=Ct()-n;t>24?(isFinite(t)&&(clearTimeout(Wa),Wa=setTimeout(Et,t)),Ba=0):(Ba=1,Ga(Et))}function At(){var n=Date.now();for(Ja=Xa;Ja;)n>=Ja.t&&(Ja.f=Ja.c(n-Ja.t)),Ja=Ja.n;return n}function Ct(){for(var n,t=Xa,e=1/0;t;)t.f?t=n?n.n=t.n:Xa=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return $a=n,e}function Nt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Lt(n,t){var e=Math.pow(10,3*oa(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Tt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];t>0&&o>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:bt;return function(n){var e=Qa.exec(n),r=e[1]||\" \",o=e[2]||\">\",a=e[3]||\"\",c=e[4]||\"\",s=e[5],l=+e[6],f=e[7],h=e[8],g=e[9],p=1,v=\"\",d=\"\",m=!1;switch(h&&(h=+h.substring(1)),(s||\"0\"===r&&\"=\"===o)&&(s=r=\"0\",o=\"=\",f&&(l-=Math.floor((l-1)/4))),g){case\"n\":f=!0,g=\"g\";break;case\"%\":p=100,d=\"%\",g=\"f\";break;case\"p\":p=100,d=\"%\",g=\"r\";break;case\"b\":case\"o\":case\"x\":case\"X\":\"#\"===c&&(v=\"0\"+g.toLowerCase());case\"c\":case\"d\":m=!0,h=0;break;case\"s\":p=-1,g=\"r\"}\"$\"===c&&(v=u[0],d=u[1]),\"r\"!=g||h||(g=\"g\"),null!=h&&(\"g\"==g?h=Math.max(1,Math.min(21,h)):(\"e\"==g||\"f\"==g)&&(h=Math.max(0,Math.min(20,h)))),g=nc.get(g)||qt;var y=s&&f;return function(n){var e=d;if(m&&n%1)return\"\";var u=0>n||0===n&&0>1/n?(n=-n,\"-\"):a;if(0>p){var c=Xo.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf(\".\"),M=0>x?n:n.substring(0,x),_=0>x?\"\":t+n.substring(x+1);!s&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=l>b?new Array(b=l-b+1).join(r):\"\";return y&&(M=i(w+M)),u+=v,n=M+_,(\"<\"===o?u+n+w:\">\"===o?w+u+n:\"^\"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function qt(n){return n+\"\"}function zt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Rt(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new ec(e-1)),1),e}function i(n,e){return t(n=new ec(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{ec=zt;var r=new zt;return r._=n,o(r,t,e)}finally{ec=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Dt(n);return c.floor=c,c.round=Dt(r),c.ceil=Dt(u),c.offset=Dt(i),c.range=a,n}function Dt(n){return function(t,e){try{ec=zt;var r=new zt;return r._=t,n(r,e)._}finally{ec=Date}}}function Pt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.substring(c,a)),null!=(u=uc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=C[e])&&(e=i(t,null==u?\"e\"===e?\" \":\"0\":u)),o.push(e),c=a+1);return o.push(n.substring(c,a)),o.join(\"\")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;\"p\"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&ec!==zt,o=new(i?zt:ec);return\"j\"in r?o.setFullYear(r.y,0,r.j):\"w\"in r&&(\"W\"in r||\"U\"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,\"W\"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+Math.floor(r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,s=e.length;c>a;){if(r>=s)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=N[o in uc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.substring(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.substring(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.substring(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.substring(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,C.c.toString(),t,r)}function c(n,t,r){return e(n,C.x.toString(),t,r)}function s(n,t,r){return e(n,C.X.toString(),t,r)}function l(n,t,e){var r=x.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{ec=zt;var t=new ec;return t._=n,r(t)}finally{ec=Date}}var r=t(n);return e.parse=function(n){try{ec=zt;var t=r.parse(n);return t&&t._}finally{ec=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ee;var x=Xo.map(),M=jt(v),_=Ht(v),b=jt(d),w=Ht(d),S=jt(m),k=Ht(m),E=jt(y),A=Ht(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var C={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Ut(n.getDate(),t,2)},e:function(n,t){return Ut(n.getDate(),t,2)},H:function(n,t){return Ut(n.getHours(),t,2)},I:function(n,t){return Ut(n.getHours()%12||12,t,2)},j:function(n,t){return Ut(1+tc.dayOfYear(n),t,3)},L:function(n,t){return Ut(n.getMilliseconds(),t,3)},m:function(n,t){return Ut(n.getMonth()+1,t,2)},M:function(n,t){return Ut(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Ut(n.getSeconds(),t,2)},U:function(n,t){return Ut(tc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Ut(tc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Ut(n.getFullYear()%100,t,2)},Y:function(n,t){return Ut(n.getFullYear()%1e4,t,4)},Z:ne,\"%\":function(){return\"%\"}},N={a:r,A:u,b:i,B:o,c:a,d:Bt,e:Bt,H:Jt,I:Jt,j:Wt,L:Qt,m:$t,M:Gt,p:l,S:Kt,U:Ot,w:Ft,W:Yt,x:c,X:s,y:Zt,Y:It,Z:Vt,\"%\":te};return t}function Ut(n,t,e){var r=0>n?\"-\":\"\",u=(r?-n:n)+\"\",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function jt(n){return new RegExp(\"^(?:\"+n.map(Xo.requote).join(\"|\")+\")\",\"i\")}function Ht(n){for(var t=new u,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Ft(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Ot(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Yt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function It(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Zt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.y=Xt(+r[0]),e+r[0].length):-1}function Vt(n,t,e){return/^[+-]\\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Xt(n){return n+(n>68?1900:2e3)}function $t(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Bt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Wt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function Jt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Gt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function Kt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function Qt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ne(n){var t=n.getTimezoneOffset(),e=t>0?\"-\":\"+\",r=~~(oa(t)/60),u=oa(t)%60;return e+Ut(r,\"0\",2)+Ut(u,\"0\",2)}function te(n,t,e){oc.lastIndex=0;var r=oc.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function ee(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function re(){}function ue(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function ie(n,t){n&&lc.hasOwnProperty(n.type)&&lc[n.type](n,t)}function oe(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ae(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)oe(n[e],t,1);t.polygonEnd()}function ce(){function n(n,t){n*=Na,t=t*Na/2+Sa/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),s=Math.sin(t),l=i*s,f=u*c+l*Math.cos(a),h=l*o*Math.sin(a);hc.add(Math.atan2(h,f)),r=n,u=c,i=s}var t,e,r,u,i;gc.point=function(o,a){gc.point=n,r=(t=o)*Na,u=Math.cos(a=(e=a)*Na/2+Sa/4),i=Math.sin(a)},gc.lineEnd=function(){n(t,e)}}function se(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function le(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function fe(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function he(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ge(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function pe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function ve(n){return[Math.atan2(n[1],n[0]),X(n[2])]}function de(n,t){return oa(n[0]-t[0])<Aa&&oa(n[1]-t[1])<Aa}function me(n,t){n*=Na;var e=Math.cos(t*=Na);ye(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function ye(n,t,e){++pc,dc+=(n-dc)/pc,mc+=(t-mc)/pc,yc+=(e-yc)/pc}function xe(){function n(n,u){n*=Na;var i=Math.cos(u*=Na),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),s=Math.atan2(Math.sqrt((s=e*c-r*a)*s+(s=r*o-t*c)*s+(s=t*a-e*o)*s),t*o+e*a+r*c);vc+=s,xc+=s*(t+(t=o)),Mc+=s*(e+(e=a)),_c+=s*(r+(r=c)),ye(t,e,r)}var t,e,r;kc.point=function(u,i){u*=Na;var o=Math.cos(i*=Na);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),kc.point=n,ye(t,e,r)}}function Me(){kc.point=me}function _e(){function n(n,t){n*=Na;var e=Math.cos(t*=Na),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),s=u*c-i*a,l=i*o-r*c,f=r*a-u*o,h=Math.sqrt(s*s+l*l+f*f),g=r*o+u*a+i*c,p=h&&-V(g)/h,v=Math.atan2(h,g);bc+=p*s,wc+=p*l,Sc+=p*f,vc+=v,xc+=v*(r+(r=o)),Mc+=v*(u+(u=a)),_c+=v*(i+(i=c)),ye(r,u,i)}var t,e,r,u,i;kc.point=function(o,a){t=o,e=a,kc.point=n,o*=Na;var c=Math.cos(a*=Na);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),ye(r,u,i)},kc.lineEnd=function(){n(t,e),kc.lineEnd=Me,kc.point=me}}function be(){return!0}function we(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(de(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new ke(e,n,null,!0),s=new ke(e,null,c,!1);c.o=s,i.push(c),o.push(s),c=new ke(r,n,null,!1),s=new ke(r,null,c,!0),c.o=s,i.push(c),o.push(s)}}),o.sort(t),Se(i),Se(o),i.length){for(var a=0,c=e,s=o.length;s>a;++a)o[a].e=c=!c;for(var l,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;l=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,s=l.length;s>a;++a)u.point((f=l[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){l=g.p.z;for(var a=l.length-1;a>=0;--a)u.point((f=l[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,l=g.z,p=!p}while(!g.v);u.lineEnd()}}}function Se(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function ke(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Ee(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function s(){y.point=o,d.lineEnd()}function l(n,t){v.push([n,t]);var e=u(n,t);M.point(e[0],e[1])}function f(){M.lineStart(),v=[]}function h(){l(v[0][0],v[0][1]),M.lineEnd();var n,t=M.clean(),e=x.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r){if(1&t){n=e[0];var u,r=n.length-1,o=-1;for(i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);return i.lineEnd(),void 0}r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Ae))}}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:s,polygonStart:function(){y.point=l,y.lineStart=f,y.lineEnd=h,g=[],p=[],i.polygonStart()},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=s,g=Xo.merge(g);var n=Le(m,p);g.length?we(g,Ne,n,e,i):n&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=Ce(),M=t(x);return y}}function Ae(n){return n.length>1}function Ce(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:g,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ne(n,t){return((n=n.x)[0]<0?n[1]-Ea-Aa:Ea-n[1])-((t=t.x)[0]<0?t[1]-Ea-Aa:Ea-t[1])}function Le(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;hc.reset();for(var a=0,c=t.length;c>a;++a){var s=t[a],l=s.length;if(l)for(var f=s[0],h=f[0],g=f[1]/2+Sa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===l&&(d=0),n=s[d];var m=n[0],y=n[1]/2+Sa/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>Sa,k=p*x;if(hc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*ka:_,S^h>=e^m>=e){var E=fe(se(f),se(n));pe(E);var A=fe(u,E);pe(A);var C=(S^_>=0?-1:1)*X(A[2]);(r>C||r===C&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-Aa>i||Aa>i&&0>hc)^1&o}function Te(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Sa:-Sa,c=oa(i-e);oa(c-Sa)<Aa?(n.point(e,r=(r+o)/2>0?Ea:-Ea),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Sa&&(oa(e-u)<Aa&&(e-=u*Aa),oa(i-a)<Aa&&(i-=a*Aa),r=qe(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function qe(n,t,e,r){var u,i,o=Math.sin(n-e);return oa(o)>Aa?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function ze(n,t,e,r){var u;if(null==n)u=e*Ea,r.point(-Sa,u),r.point(0,u),r.point(Sa,u),r.point(Sa,0),r.point(Sa,-u),r.point(0,-u),r.point(-Sa,-u),r.point(-Sa,0),r.point(-Sa,u);else if(oa(n[0]-t[0])>Aa){var i=n[0]<t[0]?Sa:-Sa;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function Re(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,s,l;return{lineStart:function(){s=c=!1,l=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Sa:-Sa),h):0;if(!e&&(s=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(de(e,g)||de(p,g))&&(p[0]+=Aa,p[1]+=Aa,v=t(p[0],p[1]))),v!==c)l=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(l=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&de(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return l|(s&&c)<<1}}}function r(n,t,e){var r=se(n),u=se(t),o=[1,0,0],a=fe(r,u),c=le(a,a),s=a[0],l=c-s*s;if(!l)return!e&&n;var f=i*c/l,h=-i*s/l,g=fe(o,a),p=ge(o,f),v=ge(a,h);he(p,v);var d=g,m=le(p,d),y=le(d,d),x=m*m-y*(le(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=ge(d,(-m-M)/y);if(he(_,p),_=ve(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,C=oa(A-Sa)<Aa,N=C||Aa>A;if(!C&&k>E&&(b=k,k=E,E=b),N?C?k+E>0^_[1]<(oa(_[0]-w)<Aa?k:E):k<=_[1]&&_[1]<=E:A>Sa^(w<=_[0]&&_[0]<=S)){var L=ge(d,(-m+M)/y);return he(L,p),[_,ve(L)]}}}function u(t,e){var r=o?n:Sa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=oa(i)>Aa,c=cr(n,6*Na);return Ee(t,e,c,o?[0,-n]:[-Sa,n-Sa])}function De(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,s=o.y,l=a.x,f=a.y,h=0,g=1,p=l-c,v=f-s;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-s,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-s,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:s+h*v}),1>g&&(u.b={x:c+g*p,y:s+g*v}),u}}}}}}function Pe(n,t,e,r){function u(r,u){return oa(r[0]-n)<Aa?u>0?0:3:oa(r[0]-e)<Aa?u>0?2:1:oa(r[1]-t)<Aa?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,s=a[0];c>o;++o)i=a[o],s[1]<=r?i[1]>r&&Z(s,i,n)>0&&++t:i[1]<=r&&Z(s,i,n)<0&&--t,s=i;return 0!==t}function s(i,a,c,s){var l=0,f=0;if(null==i||(l=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do s.point(0===l||3===l?n:e,l>1?r:t);while((l=(l+c+4)%4)!==f)}else s.point(a[0],a[1])}function l(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){l(n,t)&&a.point(n,t)}function h(){N.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&A.rejoin(),v.push(A.buffer())),N.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Ac,Math.min(Ac,n)),t=Math.max(-Ac,Math.min(Ac,t));var e=l(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};C(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,A=Ce(),C=De(n,t,e,r),N={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Xo.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),s(null,null,1,a),a.lineEnd()),u&&we(v,i,t,s,a),a.polygonEnd()),v=d=m=null}};return N}}function Ue(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function je(n){var t=0,e=Sa/3,r=nr(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Sa/180,e=n[1]*Sa/180):[180*(t/Sa),180*(e/Sa)]},u}function He(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,X((i-(n*n+e*e)*u*u)/(2*u))]},e}function Fe(){function n(n,t){Nc+=u*n-r*t,r=n,u=t}var t,e,r,u;Rc.point=function(i,o){Rc.point=n,t=r=i,e=u=o},Rc.lineEnd=function(){n(t,e)}}function Oe(n,t){Lc>n&&(Lc=n),n>qc&&(qc=n),Tc>t&&(Tc=t),t>zc&&(zc=t)}function Ye(){function n(n,t){o.push(\"M\",n,\",\",t,i)}function t(n,t){o.push(\"M\",n,\",\",t),a.point=e}function e(n,t){o.push(\"L\",n,\",\",t)}function r(){a.point=n}function u(){o.push(\"Z\")}var i=Ie(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Ie(n),a},result:function(){if(o.length){var n=o.join(\"\");return o=[],n}}};return a}function Ie(n){return\"m0,\"+n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+-2*n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+2*n+\"z\"}function Ze(n,t){dc+=n,mc+=t,++yc}function Ve(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);xc+=o*(t+n)/2,Mc+=o*(e+r)/2,_c+=o,Ze(t=n,e=r)}var t,e;Pc.point=function(r,u){Pc.point=n,Ze(t=r,e=u)}}function Xe(){Pc.point=Ze}function $e(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);xc+=o*(r+n)/2,Mc+=o*(u+t)/2,_c+=o,o=u*n-r*t,bc+=o*(r+n),wc+=o*(u+t),Sc+=3*o,Ze(r=n,u=t)}var t,e,r,u;Pc.point=function(i,o){Pc.point=n,Ze(t=r=i,e=u=o)},Pc.lineEnd=function(){n(t,e)}}function Be(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,ka)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:g};return a}function We(n){function t(n){return(a?r:e)(n)}function e(t){return Ke(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=se([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=s,S.lineEnd=l}function s(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function l(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,s,l,f,h,g,p,v,d,m){var y=l-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=s+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=oa(oa(w)-1)<Aa||oa(r-h)<Aa?(r+h)/2:Math.atan2(b,_),A=n(E,k),C=A[0],N=A[1],L=C-t,T=N-e,q=x*L-y*T;(q*q/M>i||oa((y*L+x*T)/M-.5)>.3||o>a*g+c*p+s*v)&&(u(t,e,r,a,c,s,C,N,E,_/=S,b/=S,w,d,m),m.point(C,N),u(C,N,E,_,b,w,l,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Na),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function Je(n){var t=We(function(t,e){return n([t*La,e*La])});return function(n){return tr(t(n))}}function Ge(n){this.stream=n}function Ke(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function Qe(n){return nr(function(){return n})()}function nr(n){function t(n){return n=a(n[0]*Na,n[1]*Na),[n[0]*h+c,s-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*La,n[1]*La]}function r(){a=Ue(o=ur(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,s=p+n[1]*h,u()}function u(){return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=We(function(n,t){return n=i(n,t),[n[0]*h+c,s-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Ec,_=bt,b=null,w=null;return t.stream=function(n){return l&&(l.valid=!1),l=tr(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,Ec):Re((b=+n)*Na),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?Pe(n[0][0],n[0][1],n[1][0],n[1][1]):bt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Na,d=n[1]%360*Na,r()):[v*La,d*La]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Na,y=n[1]%360*Na,x=n.length>2?n[2]%360*Na:0,r()):[m*La,y*La,x*La]},Xo.rebind(t,f,\"precision\"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function tr(n){return Ke(n,function(t,e){n.point(t*Na,e*Na)})}function er(n,t){return[n,t]}function rr(n,t){return[n>Sa?n-ka:-Sa>n?n+ka:n,t]}function ur(n,t,e){return n?t||e?Ue(or(n),ar(t,e)):or(n):t||e?ar(t,e):rr}function ir(n){return function(t,e){return t+=n,[t>Sa?t-ka:-Sa>t?t+ka:t,e]}}function or(n){var t=ir(n);return t.invert=ir(-n),t}function ar(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;return[Math.atan2(c*i-l*o,a*r-s*u),X(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;return[Math.atan2(c*i+s*o,a*r+l*u),X(l*r-a*u)]},e}function cr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=sr(e,u),i=sr(e,i),(o>0?i>u:u>i)&&(u+=o*ka)):(u=n+o*ka,i=n-.5*c);for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=ve([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}function sr(n,t){var e=se(t);e[0]-=n,pe(e);var r=V(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Aa)%(2*Math.PI)}function lr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function fr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function hr(n){return n.source}function gr(n){return n.target}function pr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(J(r-t)+u*o*J(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*l,u=e*s+t*f,o=e*i+t*a;return[Math.atan2(u,r)*La,Math.atan2(o,Math.sqrt(r*r+u*u))*La]}:function(){return[n*La,t*La]};return p.distance=h,p}function vr(){function n(n,u){var i=Math.sin(u*=Na),o=Math.cos(u),a=oa((n*=Na)-t),c=Math.cos(a);Uc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;jc.point=function(u,i){t=u*Na,e=Math.sin(i*=Na),r=Math.cos(i),jc.point=n},jc.lineEnd=function(){jc.point=jc.lineEnd=g}}function dr(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function mr(n,t){function e(n,t){var e=oa(oa(t)-Ea)<Aa?0:o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Sa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=I(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ea]},e):xr}function yr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return oa(u)<Aa?er:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-I(u)*Math.sqrt(n*n+e*e)]},e)}function xr(n,t){return[n,Math.log(Math.tan(Sa/4+t/2))]}function Mr(n){var t,e=Qe(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Sa*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function _r(n,t){return[Math.log(Math.tan(Sa/4+t/2)),-n]}function br(n){return n[0]}function wr(n){return n[1]}function Sr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Z(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function kr(n,t){return n[0]-t[0]||n[1]-t[1]}function Er(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Ar(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);return[u+h*o,c+h*l]}function Cr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Nr(){Jr(this),this.edge=this.site=this.circle=null}function Lr(n){var t=Jc.pop()||new Nr;return t.site=n,t}function Tr(n){Or(n),$c.remove(n),Jc.push(n),Jr(n)}function qr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Tr(n);for(var c=i;c.circle&&oa(e-c.circle.x)<Aa&&oa(r-c.circle.cy)<Aa;)i=c.P,a.unshift(c),Tr(c),c=i;a.unshift(c),Or(c);for(var s=o;s.circle&&oa(e-s.circle.x)<Aa&&oa(r-s.circle.cy)<Aa;)o=s.N,a.push(s),Tr(s),s=o;a.push(s),Or(s);var l,f=a.length;for(l=1;f>l;++l)s=a[l],c=a[l-1],$r(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Vr(c.site,s.site,null,u),Fr(c),Fr(s)}function zr(n){for(var t,e,r,u,i=n.x,o=n.y,a=$c._;a;)if(r=Rr(a,o)-i,r>Aa)a=a.L;else{if(u=i-Dr(a,o),!(u>Aa)){r>-Aa?(t=a.P,e=a):u>-Aa?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Lr(n);if($c.insert(t,c),t||e){if(t===e)return Or(t),e=Lr(t.site),$c.insert(c,e),c.edge=e.edge=Vr(t.site,c.site),Fr(t),Fr(e),void 0;if(!e)return c.edge=Vr(t.site,c.site),void 0;Or(t),Or(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};$r(e.edge,s,p,M),c.edge=Vr(s,n,null,M),e.edge=Vr(n,p,null,M),Fr(t),Fr(e)}}function Rr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;if(!s)return a;var l=a-r,f=1/i-1/s,h=l/s;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}function Dr(n,t){var e=n.N;if(e)return Rr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Pr(n){this.site=n,this.edges=[]}function Ur(n){for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Xc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(oa(r-t)>Aa||oa(u-e)>Aa)&&(a.splice(o,0,new Br(Xr(i.site,l,oa(r-f)<Aa&&p-u>Aa?{x:f,y:oa(t-f)<Aa?e:p}:oa(u-p)<Aa&&h-r>Aa?{x:oa(e-p)<Aa?t:h,y:p}:oa(r-h)<Aa&&u-g>Aa?{x:h,y:oa(t-h)<Aa?e:g}:oa(u-g)<Aa&&r-f>Aa?{x:oa(e-g)<Aa?t:f,y:g}:null),i.site,null)),++c)}function jr(n,t){return t.angle-n.angle}function Hr(){Jr(this),this.x=this.y=this.arc=this.site=this.cy=null}function Fr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,s=r.y-a,l=i.x-o,f=i.y-a,h=2*(c*f-s*l);if(!(h>=-Ca)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=Gc.pop()||new Hr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=Wc._;x;)if(m.y<x.y||m.y===x.y&&m.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}Wc.insert(y,m),y||(Bc=m)}}}}function Or(n){var t=n.circle;t&&(t.P||(Bc=t.N),Wc.remove(t),Gc.push(t),Jr(t),n.circle=null)}function Yr(n){for(var t,e=Vc,r=De(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Ir(t,n)||!r(t)||oa(t.a.x-t.b.x)<Aa&&oa(t.a.y-t.b.y)<Aa)&&(t.a=t.b=null,e.splice(u,1))}function Ir(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],s=t[1][1],l=n.l,f=n.r,h=l.x,g=l.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=s)return}else i={x:d,y:c};e={x:d,y:s}}else{if(i){if(i.y<c)return}else i={x:d,y:s};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=s)return}else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}else{if(i){if(i.y<c)return}else i={x:(s-u)/r,y:s};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Zr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Vr(n,t,e,r){var u=new Zr(n,t);return Vc.push(u),e&&$r(u,n,t,e),r&&$r(u,t,n,r),Xc[n.i].edges.push(new Br(u,n,t)),Xc[t.i].edges.push(new Br(u,t,n)),u}function Xr(n,t,e){var r=new Zr(n,null);return r.a=t,r.b=e,Vc.push(r),r}function $r(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function Br(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function Wr(){this._=null}function Jr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function Gr(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function Kr(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function Qr(n){for(;n.L;)n=n.L;return n}function nu(n,t){var e,r,u,i=n.sort(tu).pop();for(Vc=[],Xc=new Array(n.length),$c=new Wr,Wc=new Wr;;)if(u=Bc,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Xc[i.i]=new Pr(i),zr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;qr(u.arc)}t&&(Yr(t),Ur(t));var o={cells:Xc,edges:Vc};return $c=Wc=Vc=Xc=null,o}function tu(n,t){return t.y-n.y||t.x-n.x}function eu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function ru(n){return n.x}function uu(n){return n.y}function iu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function ou(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&ou(n,c[0],e,r,o,a),c[1]&&ou(n,c[1],o,r,u,a),c[2]&&ou(n,c[2],e,a,o,i),c[3]&&ou(n,c[3],o,a,u,i)}}function au(n,t){n=Xo.rgb(n),t=Xo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return\"#\"+vt(Math.round(e+i*n))+vt(Math.round(r+o*n))+vt(Math.round(u+a*n))}}function cu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=fu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function su(n,t){return t-=n=+n,function(e){return n+t*e}}function lu(n,t){var e,r,u,i,o,a=0,c=0,s=[],l=[];for(n+=\"\",t+=\"\",Qc.lastIndex=0,r=0;e=Qc.exec(t);++r)e.index&&s.push(t.substring(a,c=e.index)),l.push({i:s.length,x:e[0]}),s.push(null),a=Qc.lastIndex;for(a<t.length&&s.push(t.substring(a)),r=0,i=l.length;(e=Qc.exec(n))&&i>r;++r)if(o=l[r],o.x==e[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),u=r+1;i>u;++u)l[u].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),u=r+1;i>u;++u)l[u].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),u=r+1;i>u;++u)l[u].i--;l.splice(r,1),i--,r--}else o.x=su(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=l.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),i--;return 1===s.length?null==s[0]?(o=l[0].x,function(n){return o(n)+\"\"}):function(){return t}:function(n){for(r=0;i>r;++r)s[(o=l[r]).i]=o.x(n);return s.join(\"\")}}function fu(n,t){for(var e,r=Xo.interpolators.length;--r>=0&&!(e=Xo.interpolators[r](n,t)););return e}function hu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(fu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function gu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function pu(n){return function(t){return 1-n(1-t)}}function vu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function du(n){return n*n}function mu(n){return n*n*n}function yu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function xu(n){return function(t){return Math.pow(t,n)}}function Mu(n){return 1-Math.cos(n*Ea)}function _u(n){return Math.pow(2,10*(n-1))}function bu(n){return 1-Math.sqrt(1-n*n)}function wu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/ka*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*ka/t)}}function Su(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function ku(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Eu(n,t){n=Xo.hcl(n),t=Xo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return rt(e+i*n,r+o*n,u+a*n)+\"\"}}function Au(n,t){n=Xo.hsl(n),t=Xo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return nt(e+i*n,r+o*n,u+a*n)+\"\"}}function Cu(n,t){n=Xo.lab(n),t=Xo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ot(e+i*n,r+o*n,u+a*n)+\"\"}}function Nu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Lu(n){var t=[n.a,n.b],e=[n.c,n.d],r=qu(t),u=Tu(t,e),i=qu(zu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*La,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*La:0}function Tu(n,t){return n[0]*t[0]+n[1]*t[1]}function qu(n){var t=Math.sqrt(Tu(n,n));return t&&(n[0]/=t,n[1]/=t),t}function zu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ru(n,t){var e,r=[],u=[],i=Xo.transform(n),o=Xo.transform(t),a=i.translate,c=o.translate,s=i.rotate,l=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push(\"translate(\",null,\",\",null,\")\"),u.push({i:1,x:su(a[0],c[0])},{i:3,x:su(a[1],c[1])})):c[0]||c[1]?r.push(\"translate(\"+c+\")\"):r.push(\"\"),s!=l?(s-l>180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+\"rotate(\",null,\")\")-2,x:su(s,l)})):l&&r.push(r.pop()+\"rotate(\"+l+\")\"),f!=h?u.push({i:r.push(r.pop()+\"skewX(\",null,\")\")-2,x:su(f,h)}):h&&r.push(r.pop()+\"skewX(\"+h+\")\"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+\"scale(\",null,\",\",null,\")\"),u.push({i:e-4,x:su(g[0],p[0])},{i:e-2,x:su(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+\"scale(\"+p+\")\"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join(\"\")}}function Du(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Pu(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function Uu(n){for(var t=n.source,e=n.target,r=Hu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function ju(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Hu(n,t){if(n===t)return n;for(var e=ju(n),r=ju(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function Fu(n){n.fixed|=2}function Ou(n){n.fixed&=-7}function Yu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Iu(n){n.fixed&=-5}function Zu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Zu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var s=t*e[n.point.index];n.charge+=n.pointCharge=s,r+=s*n.point.x,u+=s*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Vu(n,t){return Xo.rebind(n,t,\"sort\",\"children\",\"value\"),n.nodes=n,n.links=Wu,n}function Xu(n){return n.children}function $u(n){return n.value}function Bu(n,t){return t.value-n.value}function Wu(n){return Xo.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function Ju(n){return n.x}function Gu(n){return n.y}function Ku(n,t,e){n.y0=t,n.y=e}function Qu(n){return Xo.range(n.length)}function ni(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function ti(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function ei(n){return n.reduce(ri,0)}function ri(n,t){return n+t[1]}function ui(n,t){return ii(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ii(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function oi(n){return[Xo.min(n),Xo.max(n)]}function ai(n,t){return n.parent==t.parent?1:2}function ci(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function si(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function li(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i<u;)t(r=li(e[i],t),n)>0&&(n=r);return n}function fi(n,t){return n.x-t.x}function hi(n,t){return t.x-n.x}function gi(n,t){return n.depth-t.depth}function pi(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c<o;)i=u[c],e(i,a),a=i;t(n,r)}e(n,null)}function vi(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function di(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function mi(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function yi(n,t){return n.value-t.value}function xi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Mi(n,t){n._pack_next=t,t._pack_prev=n}function _i(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function bi(n){function t(n){l=Math.min(n.x-n.r,l),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(wi),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))for(i=e[2],Ei(r,u,i),t(i),xi(r,i),r._pack_prev=i,xi(i,u),u=r._pack_next,o=3;s>o;o++){Ei(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(_i(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!_i(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?Mi(r,u=a):Mi(r=c,u),o--):(xi(r,i),u=i,t(i))}var m=(l+f)/2,y=(h+g)/2,x=0;for(o=0;s>o;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(Si)}}function wi(n){n._pack_next=n._pack_prev=n}function Si(n){delete n._pack_next,delete n._pack_prev}function ki(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)ki(u[i],t,e,r)}function Ei(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),s=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+s*i,e.y=n.y+c*i-s*u}else e.x=n.x+r,e.y=n.y}function Ai(n){return 1+Xo.max(n,function(n){return n.y})}function Ci(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ni(n){var t=n.children;return t&&t.length?Ni(t[0]):n}function Li(n){var t,e=n.children;return e&&(t=e.length)?Li(e[t-1]):n}function Ti(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function qi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function zi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ri(n){return n.rangeExtent?n.rangeExtent():zi(n.range())}function Di(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Pi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Ui(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ls}function ji(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=Xo.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Hi(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?ji:Di,c=r?Pu:Du;return o=u(n,t,c,e),a=u(t,n,c,fu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Nu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Ii(n,t)},i.tickFormat=function(t,e){return Zi(n,t,e)},i.nice=function(t){return Oi(n,t),u()},i.copy=function(){return Hi(n,t,e,r)},u()}function Fi(n,t){return Xo.rebind(n,t,\"range\",\"rangeRound\",\"interpolate\",\"clamp\")}function Oi(n,t){return Pi(n,Ui(Yi(n,t)[2]))}function Yi(n,t){null==t&&(t=10);var e=zi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Ii(n,t){return Xo.range.apply(Xo,Yi(n,t))}function Zi(n,t,e){var r=Yi(n,t);return Xo.format(e?e.replace(Qa,function(n,t,e,u,i,o,a,c,s,l){return[t,e,u,i,o,a,c,s||\".\"+Xi(l,r),l].join(\"\")}):\",.\"+Vi(r[2])+\"f\")}function Vi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Xi(n,t){var e=Vi(t[2]);return n in fs?Math.abs(e-Vi(Math.max(Math.abs(t[0]),Math.abs(t[1]))))+ +(\"e\"!==n):e-2*(\"%\"===n)}function $i(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Pi(r.map(u),e?Math:gs);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=zi(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(l-s)){if(e){for(;l>s;s++)for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}else for(o.push(i(s));s++<l;)for(var h=f-1;h>0;h--)o.push(i(s)*h);for(s=0;o[s]<a;s++);for(l=o.length;o[l-1]>c;l--);o=o.slice(s,l)}return o},o.tickFormat=function(n,t){if(!arguments.length)return hs;arguments.length<2?t=hs:\"function\"!=typeof t&&(t=Xo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):\"\"}},o.copy=function(){return $i(n.copy(),t,e,r)},Fi(o,n)}function Bi(n,t,e){function r(t){return n(u(t))}var u=Wi(t),i=Wi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Ii(e,n)},r.tickFormat=function(n,t){return Zi(e,n,t)},r.nice=function(n){return r.domain(Oi(e,n))},r.exponent=function(o){return arguments.length?(u=Wi(t=o),i=Wi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Bi(n.copy(),t,e)},Fi(r,n)}function Wi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Ji(n,t){function e(e){return o[((i.get(e)||\"range\"===t.t&&i.set(e,n.push(e)))-1)%o.length]}function r(t,e){return Xo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++a<c;)i.has(o=r[a])||i.set(o,n.push(o));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(o=n,a=0,t={t:\"range\",a:arguments},e):o},e.rangePoints=function(u,i){arguments.length<2&&(i=0);var c=u[0],s=u[1],l=(s-c)/(Math.max(1,n.length-1)+i);return o=r(n.length<2?(c+s)/2:c+l*i/2,l),a=0,t={t:\"rangePoints\",a:arguments},e},e.rangeBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=(f-l)/(n.length-i+2*c);return o=r(l+h*c,h),s&&o.reverse(),a=h*(1-i),t={t:\"rangeBands\",a:arguments},e},e.rangeRoundBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=Math.floor((f-l)/(n.length-i+2*c)),g=f-l-(n.length-i)*h;return o=r(l+Math.round(g/2),h),s&&o.reverse(),a=Math.round(h*(1-i)),t={t:\"rangeRoundBands\",a:arguments},e},e.rangeBand=function(){return a},e.rangeExtent=function(){return zi(t.a[0])},e.copy=function(){return Ji(n,t)},e.domain(n)}function Gi(n,t){function e(){var e=0,i=t.length;for(u=[];++e<i;)u[e-1]=Xo.quantile(n,e/i);return r}function r(n){return isNaN(n=+n)?void 0:t[Xo.bisect(u,n)]}var u;return r.domain=function(t){return arguments.length?(n=t.filter(function(n){return!isNaN(n)}).sort(Xo.ascending),e()):n},r.range=function(n){return arguments.length?(t=n,e()):t},r.quantiles=function(){return u},r.invertExtent=function(e){return e=t.indexOf(e),0>e?[0/0,0/0]:[e>0?u[e-1]:n[0],e<u.length?u[e]:n[n.length-1]]},r.copy=function(){return Gi(n,t)},e()}function Ki(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Ki(n,t,e)},u()}function Qi(n,t){function e(e){return e>=e?t[Xo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Qi(n,t)},e}function no(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Ii(n,t)},t.tickFormat=function(t,e){return Zi(n,t,e)},t.copy=function(){return no(n)},t}function to(n){return n.innerRadius}function eo(n){return n.outerRadius}function ro(n){return n.startAngle}function uo(n){return n.endAngle}function io(n){function t(t){function o(){s.push(\"M\",i(n(l),a))}for(var c,s=[],l=[],f=-1,h=t.length,g=_t(e),p=_t(r);++f<h;)u.call(this,c=t[f],f)?l.push([+g.call(this,c,f),+p.call(this,c,f)]):l.length&&(o(),l=[]);return l.length&&o(),s.length?s.join(\"\"):null}var e=br,r=wr,u=be,i=oo,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o=\"function\"==typeof n?i=n:(i=Ms.get(n)||oo).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function oo(n){return n.join(\"L\")}function ao(n){return oo(n)+\"Z\"}function co(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r[0]+(r=n[t])[0])/2,\"V\",r[1]);return e>1&&u.push(\"H\",r[0]),u.join(\"\")}function so(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"V\",(r=n[t])[1],\"H\",r[0]);return u.join(\"\")}function lo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r=n[t])[0],\"V\",r[1]);return u.join(\"\")}function fo(n,t){return n.length<4?oo(n):n[1]+po(n.slice(1,n.length-1),vo(n,t))}function ho(n,t){return n.length<3?oo(n):n[0]+po((n.push(n[0]),n),vo([n[n.length-2]].concat(n,[n[1]]),t))}function go(n,t){return n.length<3?oo(n):n[0]+po(n,vo(n,t))}function po(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return oo(n);var e=n.length!=t.length,r=\"\",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+=\"Q\"+(i[0]-2*o[0]/3)+\",\"+(i[1]-2*o[1]/3)+\",\"+i[0]+\",\"+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+=\"C\"+(u[0]+o[0])+\",\"+(u[1]+o[1])+\",\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1];for(var s=2;s<t.length;s++,c++)i=n[c],a=t[s],r+=\"S\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1]}if(e){var l=n[c];r+=\"Q\"+(i[0]+2*a[0]/3)+\",\"+(i[1]+2*a[1]/3)+\",\"+l[0]+\",\"+l[1]}return r}function vo(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function mo(n){if(n.length<3)return oo(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,\",\",i,\"L\",_o(ws,o),\",\",_o(ws,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),bo(c,o,a);return n.pop(),c.push(\"L\",r),c.join(\"\")}function yo(n){if(n.length<4)return oo(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(_o(ws,i)+\",\"+_o(ws,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),bo(e,i,o);return e.join(\"\")}function xo(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[_o(ws,o),\",\",_o(ws,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),bo(t,o,a);return t.join(\"\")}function Mo(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,s=-1;++s<=e;)r=n[s],u=s/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return mo(n)}function _o(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function bo(n,t,e){n.push(\"C\",_o(_s,t),\",\",_o(_s,e),\",\",_o(bs,t),\",\",_o(bs,e),\",\",_o(ws,t),\",\",_o(ws,e))}function wo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function So(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=wo(u,i);++t<e;)r[t]=(o+(o=wo(u=i,i=n[t+1])))/2;return r[t]=o,r}function ko(n){for(var t,e,r,u,i=[],o=So(n),a=-1,c=n.length-1;++a<c;)t=wo(n[a],n[a+1]),oa(t)<Aa?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Eo(n){return n.length<3?oo(n):n[0]+po(n,ko(n))}function Ao(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]+ys,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Co(n){function t(t){function c(){v.push(\"M\",a(n(m),f),l,s(n(d.reverse()),f),\"Z\")}for(var h,g,p,v=[],d=[],m=[],y=-1,x=t.length,M=_t(e),_=_t(u),b=e===r?function(){return g}:_t(r),w=u===i?function(){return p}:_t(i);++y<x;)o.call(this,h=t[y],y)?(d.push([g=+M.call(this,h,y),p=+_.call(this,h,y)]),m.push([+b.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(\"\"):null}var e=br,r=br,u=0,i=wr,o=be,a=oo,c=a.key,s=a,l=\"L\",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c=\"function\"==typeof n?a=n:(a=Ms.get(n)||oo).key,s=a.reverse||a,l=a.closed?\"M\":\"L\",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function No(n){return n.radius}function Lo(n){return[n.x,n.y]}function To(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]+ys;return[e*Math.cos(r),e*Math.sin(r)]}}function qo(){return 64}function zo(){return\"circle\"}function Ro(n){var t=Math.sqrt(n/Sa);return\"M0,\"+t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+-t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+t+\"Z\"}function Do(n,t){return fa(n,Ns),n.id=t,n}function Po(n,t,e,r){var u=n.id;return R(n,\"function\"==typeof e?function(n,i,o){n.__transition__[u].tween.set(t,r(e.call(n,n.__data__,i,o)))}:(e=r(e),function(n){n.__transition__[u].tween.set(t,e)}))}function Uo(n){return null==n&&(n=\"\"),function(){this.textContent=n}}function jo(n,t,e,r){var i=n.__transition__||(n.__transition__={active:0,count:0}),o=i[e];if(!o){var a=r.time;o=i[e]={tween:new u,time:a,ease:r.ease,delay:r.delay,duration:r.duration},++i.count,Xo.timer(function(r){function u(r){return i.active>e?s():(i.active=e,o.event&&o.event.start.call(n,l,t),o.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Xo.timer(function(){return p.c=c(r||1)?be:c,1},0,a),void 0)}function c(r){if(i.active!==e)return s();for(var u=r/g,a=f(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,l,t),s()):void 0}function s(){return--i.count?delete i[e]:delete n.__transition__,1}var l=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=Ja,v=[];return p.t=h+a,r>=h?u(r-h):(p.c=u,void 0)},0,a)}}function Ho(n,t){n.attr(\"transform\",function(n){return\"translate(\"+t(n)+\",0)\"})}function Fo(n,t){n.attr(\"transform\",function(n){return\"translate(0,\"+t(n)+\")\"})}function Oo(n){return n.toISOString()}function Yo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Xo.bisect(js,u);return i==js.length?[t.year,Yi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/js[i-1]<js[i]/u?i-1:i]:[Os,Yi(n,e)[2]]}return r.invert=function(t){return Io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Io(+e+1),t).length}var i=r.domain(),o=zi(i),a=null==n?u(o,10):\"number\"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Pi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=zi(r.domain()),i=null==n?u(e,10):\"number\"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Yo(n.copy(),t,e)},Fi(r,n)}function Io(n){return new Date(n)}function Zo(n){return JSON.parse(n.responseText)}function Vo(n){var t=Wo.createRange();return t.selectNode(Wo.body),t.createContextualFragment(n.responseText)}var Xo={version:\"3.4.3\"};Date.now||(Date.now=function(){return+new Date});var $o=[].slice,Bo=function(n){return $o.call(n)},Wo=document,Jo=Wo.documentElement,Go=window;try{Bo(Jo.childNodes)[0].nodeType}catch(Ko){Bo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{Wo.createElement(\"div\").style.setProperty(\"opacity\",0,\"\")}catch(Qo){var na=Go.Element.prototype,ta=na.setAttribute,ea=na.setAttributeNS,ra=Go.CSSStyleDeclaration.prototype,ua=ra.setProperty;na.setAttribute=function(n,t){ta.call(this,n,t+\"\")},na.setAttributeNS=function(n,t,e){ea.call(this,n,t,e+\"\")},ra.setProperty=function(n,t,e){ua.call(this,n,t+\"\",e)}}Xo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},Xo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Xo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},Xo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},Xo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o&&!(null!=(e=u=n[i])&&e>=e);)e=u=void 0;for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o&&!(null!=(e=u=t.call(n,n[i],i))&&e>=e);)e=void 0;for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},Xo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i<u;)isNaN(e=+n[i])||(r+=e);else for(;++i<u;)isNaN(e=+t.call(n,n[i],i))||(r+=e);return r},Xo.mean=function(t,e){var r,u=t.length,i=0,o=-1,a=0;if(1===arguments.length)for(;++o<u;)n(r=t[o])&&(i+=(r-i)/++a);else for(;++o<u;)n(r=e.call(t,t[o],o))&&(i+=(r-i)/++a);return a?i:void 0},Xo.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},Xo.median=function(t,e){return arguments.length>1&&(t=t.map(e)),t=t.filter(n),t.length?Xo.quantile(t.sort(Xo.ascending),.5):void 0},Xo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)<e?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;e<n.call(t,t[i],i)?u=i:r=i+1}return r}}};var ia=Xo.bisector(function(n){return n});Xo.bisectLeft=ia.left,Xo.bisect=Xo.bisectRight=ia.right,Xo.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},Xo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Xo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Xo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=Xo.min(arguments,t),r=new Array(e);++n<e;)for(var u,i=-1,o=r[n]=new Array(u);++i<u;)o[i]=arguments[i][n];return r},Xo.transpose=function(n){return Xo.zip.apply(Xo,n)},Xo.keys=function(n){var t=[];for(var e in n)t.push(e);return t},Xo.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},Xo.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},Xo.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var oa=Math.abs;Xo.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw new Error(\"infinite range\");var u,i=[],o=e(oa(r)),a=-1;if(n*=o,t*=o,r*=o,0>r)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)<t;)i.push(u/o);return i},Xo.map=function(n){var t=new u;if(n instanceof u)n.forEach(function(n,e){t.set(n,e)});else for(var e in n)t.set(e,n[e]);return t},r(u,{has:i,get:function(n){return this[aa+n]},set:function(n,t){return this[aa+n]=t},remove:o,keys:a,values:function(){var n=[];return this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return this.forEach(function(t,e){n.push({key:t,value:e})}),n},size:c,empty:s,forEach:function(n){for(var t in this)t.charCodeAt(0)===ca&&n.call(this,t.substring(1),this[t])}});var aa=\"\\x00\",ca=aa.charCodeAt(0);Xo.nest=function(){function n(t,a,c){if(c>=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var s,l,f,h,g=-1,p=a.length,v=o[c++],d=new u;++g<p;)(h=d.get(s=v(l=a[g])))?h.push(l):d.set(s,[l]);return t?(l=t(),f=function(e,r){l.set(e,n(t,r,c))}):(l={},f=function(e,r){l[e]=n(t,r,c)}),d.forEach(f),l}function t(n,e){if(e>=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(Xo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},Xo.set=function(n){var t=new l;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(l,{has:i,add:function(n){return this[aa+n]=!0,n},remove:function(n){return n=aa+n,n in this&&delete this[n]},values:a,size:c,empty:s,forEach:function(n){for(var t in this)t.charCodeAt(0)===ca&&n.call(this,t.substring(1))}}),Xo.behavior={},Xo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=f(n,t,t[e]);return n};var sa=[\"webkit\",\"ms\",\"moz\",\"Moz\",\"o\",\"O\"];Xo.dispatch=function(){for(var n=new p,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=v(n);return n},p.prototype.on=function(n,t){var e=n.indexOf(\".\"),r=\"\";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Xo.event=null,Xo.requote=function(n){return n.replace(la,\"\\\\$&\")};var la=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g,fa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ha=function(n,t){return t.querySelector(n)},ga=function(n,t){return t.querySelectorAll(n)},pa=Jo[h(Jo,\"matchesSelector\")],va=function(n,t){return pa.call(n,t)};\"function\"==typeof Sizzle&&(ha=function(n,t){return Sizzle(n,t)[0]||null},ga=Sizzle,va=Sizzle.matchesSelector),Xo.selection=function(){return xa};var da=Xo.selection.prototype=[];da.select=function(n){var t,e,r,u,i=[];n=M(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,s=r.length;++c<s;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&\"__data__\"in u&&(e.__data__=u.__data__)):t.push(null)}return x(i)},da.selectAll=function(n){var t,e,r=[];n=_(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=Bo(n.call(e,e.__data__,a,u))),t.parentNode=e);return x(r)};var ma={svg:\"http://www.w3.org/2000/svg\",xhtml:\"http://www.w3.org/1999/xhtml\",xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};Xo.ns={prefix:ma,qualify:function(n){var t=n.indexOf(\":\"),e=n;return t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),ma.hasOwnProperty(e)?{space:ma[e],local:n}:n}},da.attr=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node();return n=Xo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(b(t,n[t]));return this}return this.each(b(n,t))},da.classed=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node(),r=(n=k(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute(\"class\");++u<r;)if(!S(n[u]).test(t))return!1;return!0}for(t in n)this.each(E(t,n[t]));return this}return this.each(E(n,t))},da.style=function(n,t,e){var r=arguments.length;if(3>r){if(\"string\"!=typeof n){2>r&&(t=\"\");for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return Go.getComputedStyle(this.node(),null).getPropertyValue(n);e=\"\"}return this.each(C(n,t,e))},da.property=function(n,t){if(arguments.length<2){if(\"string\"==typeof n)return this.node()[n];for(t in n)this.each(N(t,n[t]));return this}return this.each(N(n,t))},da.text=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?\"\":t}:null==n?function(){this.textContent=\"\"}:function(){this.textContent=n}):this.node().textContent},da.html=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?\"\":t}:null==n?function(){this.innerHTML=\"\"}:function(){this.innerHTML=n}):this.node().innerHTML},da.append=function(n){return n=L(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},da.insert=function(n,t){return n=L(n),t=M(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},da.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},da.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new u,y=new u,x=[];for(r=-1;++r<a;)d=t.call(i=n[r],i.__data__,r),m.has(d)?v[r]=i:m.set(d,i),x.push(d);for(r=-1;++r<f;)d=t.call(e,o=e[r],r),(i=m.get(d))?(g[r]=i,i.__data__=o):y.has(d)||(p[r]=T(o)),y.set(d,o),m.remove(d);for(r=-1;++r<a;)m.has(x[r])&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],o=e[r],i?(i.__data__=o,g[r]=i):p[r]=T(o);for(;f>r;++r)p[r]=T(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.push(v)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++o<a;)(i=r[o])&&(n[o]=i.__data__);return n}var c=D([]),s=x([]),l=x([]);if(\"function\"==typeof n)for(;++o<a;)e(r=this[o],n.call(r,r.parentNode.__data__,o));else for(;++o<a;)e(r=this[o],n);return s.enter=function(){return c},s.exit=function(){return l},s},da.datum=function(n){return arguments.length?this.property(\"__data__\",n):this.property(\"__data__\")},da.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=q(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return x(u)},da.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},da.sort=function(n){n=z.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},da.each=function(n){return R(this,function(t,e,r){n.call(t,t.__data__,e,r)})},da.call=function(n){var t=Bo(arguments);return n.apply(t[0]=this,t),this},da.empty=function(){return!this.node()},da.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},da.size=function(){var n=0;return this.each(function(){++n}),n};var ya=[];Xo.selection.enter=D,Xo.selection.enter.prototype=ya,ya.append=da.append,ya.empty=da.empty,ya.node=da.node,ya.call=da.call,ya.size=da.size,ya.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var s=-1,l=u.length;++s<l;)(i=u[s])?(t.push(r[s]=e=n.call(u.parentNode,i.__data__,s,a)),e.__data__=i.__data__):t.push(null)}return x(o)},ya.insert=function(n,t){return arguments.length<2&&(t=P(this)),da.insert.call(this,n,t)},da.transition=function(){for(var n,t,e=ks||++Ls,r=[],u=Es||{time:Date.now(),ease:yu,delay:0,duration:250},i=-1,o=this.length;++i<o;){r.push(n=[]);for(var a=this[i],c=-1,s=a.length;++c<s;)(t=a[c])&&jo(t,c,e,u),n.push(t)}return Do(r,e)},da.interrupt=function(){return this.each(U)},Xo.select=function(n){var t=[\"string\"==typeof n?ha(n,Wo):n];return t.parentNode=Jo,x([t])},Xo.selectAll=function(n){var t=Bo(\"string\"==typeof n?ga(n,Wo):n);return t.parentNode=Jo,x([t])};var xa=Xo.select(Jo);da.on=function(n,t,e){var r=arguments.length;if(3>r){if(\"string\"!=typeof n){2>r&&(t=!1);for(e in n)this.each(j(e,n[e],t));return this}if(2>r)return(r=this.node()[\"__on\"+n])&&r._;e=!1}return this.each(j(n,t,e))};var Ma=Xo.map({mouseenter:\"mouseover\",mouseleave:\"mouseout\"});Ma.forEach(function(n){\"on\"+n in Wo&&Ma.remove(n)});var _a=\"onselectstart\"in Wo?null:h(Jo.style,\"userSelect\"),ba=0;Xo.mouse=function(n){return Y(n,m())};var wa=/WebKit/.test(Go.navigator.userAgent)?-1:0;Xo.touches=function(n,t){return arguments.length<2&&(t=m().touches),t?Bo(t).map(function(t){var e=Y(n,t);return e.identifier=t.identifier,e}):[]},Xo.behavior.drag=function(){function n(){this.on(\"mousedown.drag\",o).on(\"touchstart.drag\",a)}function t(){return Xo.event.changedTouches[0].identifier}function e(n,t){return Xo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){var n=t(l,g),e=n[0]-v[0],r=n[1]-v[1];d|=e|r,v=n,f({type:\"drag\",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+\".\"+p,null).on(r+\".\"+p,null),y(d&&Xo.event.target===h),f({type:\"dragend\"})}var c,s=this,l=s.parentNode,f=u.of(s,arguments),h=Xo.event.target,g=n(),p=null==g?\"drag\":\"drag-\"+g,v=t(l,g),d=0,m=Xo.select(Go).on(e+\".\"+p,o).on(r+\".\"+p,a),y=O();i?(c=i.apply(s,arguments),c=[c.x-v[0],c.y-v[1]]):c=[0,0],f({type:\"dragstart\"})}}var u=y(n,\"drag\",\"dragstart\",\"dragend\"),i=null,o=r(g,Xo.mouse,\"mousemove\",\"mouseup\"),a=r(t,e,\"touchmove\",\"touchend\");return n.origin=function(t){return arguments.length?(i=t,n):i},Xo.rebind(n,u,\"on\")};var Sa=Math.PI,ka=2*Sa,Ea=Sa/2,Aa=1e-6,Ca=Aa*Aa,Na=Sa/180,La=180/Sa,Ta=Math.SQRT2,qa=2,za=4;Xo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=B(v),o=i/(qa*h)*(e*W(Ta*t+v)-$(v));return[r+o*s,u+o*l,i*e/B(Ta*t+v)]}return[r+n*s,u+n*l,i*Math.exp(Ta*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+za*f)/(2*i*qa*h),p=(c*c-i*i-za*f)/(2*c*qa*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ta;return e.duration=1e3*y,e},Xo.behavior.zoom=function(){function n(n){n.on(A,s).on(Pa+\".zoom\",f).on(C,h).on(\"dblclick.zoom\",g).on(L,l)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(M.range().map(function(n){return(n-S.x)/S.k}).map(M.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:\"zoomstart\"})}function a(n){i(),n({type:\"zoom\",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:\"zoomend\"})}function s(){function n(){l=1,u(Xo.mouse(r),g),a(i)}function e(){f.on(C,Go===r?h:null).on(N,null),p(l&&Xo.event.target===s),c(i)}var r=this,i=T.of(r,arguments),s=Xo.event.target,l=0,f=Xo.select(Go).on(C,n).on(N,e),g=t(Xo.mouse(r)),p=O();U.call(r),o(i)}function l(){function n(){var n=Xo.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=Xo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-x){var s=o[0],l=v[s.identifier];r(2*S.k),u(s,l),d(),a(p)}x=c}else if(o.length>1){var s=o[0],f=o[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function i(){for(var n,t,e,i,o=Xo.touches(g),c=0,s=o.length;s>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=m&&Math.sqrt(l/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}x=null,u(n,t),a(p)}function f(){if(Xo.event.touches.length){for(var t=Xo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}b.on(M,null).on(_,null),w.on(A,s).on(L,l),k(),c(p)}var h,g=this,p=T.of(g,arguments),v={},m=0,y=Xo.event.changedTouches[0].identifier,M=\"touchmove.zoom-\"+y,_=\"touchend.zoom-\"+y,b=Xo.select(Go).on(M,i).on(_,f),w=Xo.select(g).on(A,null).on(L,e),k=O();U.call(g),e(),o(p)}function f(){var n=T.of(this,arguments);m?clearTimeout(m):(U.call(this),o(n)),m=setTimeout(function(){m=null,c(n)},50),d();var e=v||Xo.mouse(this);p||(p=t(e)),r(Math.pow(2,.002*Ra())*S.k),u(e,p),a(n)}function h(){p=null}function g(){var n=T.of(this,arguments),e=Xo.mouse(this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Xo.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var p,v,m,x,M,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=Da,A=\"mousedown.zoom\",C=\"mousemove.zoom\",N=\"mouseup.zoom\",L=\"touchstart.zoom\",T=y(n,\"zoomstart\",\"zoom\",\"zoomend\");return n.event=function(n){n.each(function(){var n=T.of(this,arguments),t=S;ks?Xo.select(this).transition().each(\"start.zoom\",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween(\"zoom:zoom\",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Xo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each(\"end.zoom\",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?Da:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,M=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Xo.rebind(n,T,\"on\")};var Ra,Da=[0,1/0],Pa=\"onwheel\"in Wo?(Ra=function(){return-Xo.event.deltaY*(Xo.event.deltaMode?120:1)},\"wheel\"):\"onmousewheel\"in Wo?(Ra=function(){return Xo.event.wheelDelta},\"mousewheel\"):(Ra=function(){return-Xo.event.detail},\"MozMousePixelScroll\");G.prototype.toString=function(){return this.rgb()+\"\"},Xo.hsl=function(n,t,e){return 1===arguments.length?n instanceof Q?K(n.h,n.s,n.l):dt(\"\"+n,mt,K):K(+n,+t,+e)};var Ua=Q.prototype=new G;Ua.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,this.l/n)},Ua.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,n*this.l)},Ua.rgb=function(){return nt(this.h,this.s,this.l)},Xo.hcl=function(n,t,e){return 1===arguments.length?n instanceof et?tt(n.h,n.c,n.l):n instanceof it?at(n.l,n.a,n.b):at((n=yt((n=Xo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):tt(+n,+t,+e)};var ja=et.prototype=new G;ja.brighter=function(n){return tt(this.h,this.c,Math.min(100,this.l+Ha*(arguments.length?n:1)))},ja.darker=function(n){return tt(this.h,this.c,Math.max(0,this.l-Ha*(arguments.length?n:1)))},ja.rgb=function(){return rt(this.h,this.c,this.l).rgb()},Xo.lab=function(n,t,e){return 1===arguments.length?n instanceof it?ut(n.l,n.a,n.b):n instanceof et?rt(n.l,n.c,n.h):yt((n=Xo.rgb(n)).r,n.g,n.b):ut(+n,+t,+e)};var Ha=18,Fa=.95047,Oa=1,Ya=1.08883,Ia=it.prototype=new G;Ia.brighter=function(n){return ut(Math.min(100,this.l+Ha*(arguments.length?n:1)),this.a,this.b)},Ia.darker=function(n){return ut(Math.max(0,this.l-Ha*(arguments.length?n:1)),this.a,this.b)},Ia.rgb=function(){return ot(this.l,this.a,this.b)},Xo.rgb=function(n,t,e){return 1===arguments.length?n instanceof pt?gt(n.r,n.g,n.b):dt(\"\"+n,gt,nt):gt(~~n,~~t,~~e)};var Za=pt.prototype=new G;Za.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),gt(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):gt(u,u,u)},Za.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),gt(~~(n*this.r),~~(n*this.g),~~(n*this.b))},Za.hsl=function(){return mt(this.r,this.g,this.b)},Za.toString=function(){return\"#\"+vt(this.r)+vt(this.g)+vt(this.b)};var Va=Xo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Va.forEach(function(n,t){Va.set(n,ft(t))}),Xo.functor=_t,Xo.xhr=wt(bt),Xo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=St(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'\"'+n.replace(/\\\"/g,'\"\"')+'\"':n}var a=new RegExp('[\"'+n+\"\\n]\"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function(\"d\",\"return {\"+n.map(function(n,t){return JSON.stringify(n)+\": d[\"+t+\"]\"}).join(\",\")+\"}\");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++<s;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}l=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++l):10===r&&(u=!0),n.substring(t+1,e).replace(/\"\"/g,'\"')}for(;s>l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new l,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join(\"\\n\")},e.formatRows=function(n){return n.map(i).join(\"\\n\")},e},Xo.csv=Xo.dsv(\",\",\"text/csv\"),Xo.tsv=Xo.dsv(\"\t\",\"text/tab-separated-values\");var Xa,$a,Ba,Wa,Ja,Ga=Go[h(Go,\"requestAnimationFrame\")]||function(n){setTimeout(n,17)};Xo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};$a?$a.n=i:Xa=i,$a=i,Ba||(Wa=clearTimeout(Wa),Ba=1,Ga(Et))},Xo.timer.flush=function(){At(),Ct()},Xo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ka=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"].map(Lt);Xo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Xo.round(n,Nt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),Ka[8+e/3]};var Qa=/(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i,nc=Xo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Xo.round(n,Nt(n,t))).toFixed(Math.max(0,Math.min(20,Nt(n*(1+1e-15),t))))}}),tc=Xo.time={},ec=Date;zt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){rc.setUTCDate.apply(this._,arguments)},setDay:function(){rc.setUTCDay.apply(this._,arguments)},setFullYear:function(){rc.setUTCFullYear.apply(this._,arguments)},setHours:function(){rc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){rc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){rc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){rc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){rc.setUTCSeconds.apply(this._,arguments)},setTime:function(){rc.setTime.apply(this._,arguments)}};var rc=Date.prototype;tc.year=Rt(function(n){return n=tc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),tc.years=tc.year.range,tc.years.utc=tc.year.utc.range,tc.day=Rt(function(n){var t=new ec(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),tc.days=tc.day.range,tc.days.utc=tc.day.utc.range,tc.dayOfYear=function(n){var t=tc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"].forEach(function(n,t){t=7-t;var e=tc[n]=Rt(function(n){return(n=tc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});tc[n+\"s\"]=e.range,tc[n+\"s\"].utc=e.utc.range,tc[n+\"OfYear\"]=function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)}}),tc.week=tc.sunday,tc.weeks=tc.sunday.range,tc.weeks.utc=tc.sunday.utc.range,tc.weekOfYear=tc.sundayOfYear;var uc={\"-\":\"\",_:\" \",0:\"0\"},ic=/^\\s*\\d+/,oc=/^%/;Xo.locale=function(n){return{numberFormat:Tt(n),timeFormat:Pt(n)}};var ac=Xo.locale({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],dateTime:\"%a %b %e %X %Y\",date:\"%m/%d/%Y\",time:\"%H:%M:%S\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});Xo.format=ac.numberFormat,Xo.geo={},re.prototype={s:0,t:0,add:function(n){ue(n,this.t,cc),ue(cc.s,this.s,this),this.s?this.t+=cc.t:this.s=cc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cc=new re;Xo.geo.stream=function(n,t){n&&sc.hasOwnProperty(n.type)?sc[n.type](n,t):ie(n,t)};var sc={Feature:function(n,t){ie(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)ie(e[r].geometry,t)}},lc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){oe(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)oe(e[r],t,0)},Polygon:function(n,t){ae(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ae(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)ie(e[r],t)}};Xo.geo.area=function(n){return fc=0,Xo.geo.stream(n,gc),fc};var fc,hc=new re,gc={sphere:function(){fc+=4*Sa},point:g,lineStart:g,lineEnd:g,polygonStart:function(){hc.reset(),gc.lineStart=ce},polygonEnd:function(){var n=2*hc;fc+=0>n?4*Sa+n:n,gc.lineStart=gc.lineEnd=gc.point=g}};Xo.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=se([t*Na,e*Na]);if(m){var u=fe(m,r),i=[u[1],-u[0],0],o=fe(i,u);pe(o),o=ve(o);var c=t-p,s=c>0?1:-1,v=o[0]*La*s,d=oa(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*La;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*La;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=oa(r)>180?r+(r>0?360:-360):r}else v=n,d=e;gc.point(n,e),t(n,e)}function i(){gc.lineStart()}function o(){u(v,d),gc.lineEnd(),oa(y)>Aa&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var l,f,h,g,p,v,d,m,y,x,M,_={point:n,lineStart:e,lineEnd:r,polygonStart:function(){_.point=u,_.lineStart=i,_.lineEnd=o,y=0,gc.polygonStart()},polygonEnd:function(){gc.polygonEnd(),_.point=n,_.lineStart=e,_.lineEnd=r,0>hc?(l=-(h=180),f=-(g=90)):y>Aa?g=90:-Aa>y&&(f=-90),M[0]=l,M[1]=h}};return function(n){g=h=-(l=f=1/0),x=[],Xo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,l=e[0],h=u[1])}return x=M=null,1/0===l||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[l,f],[h,g]]}}(),Xo.geo.centroid=function(n){pc=vc=dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,kc);var t=bc,e=wc,r=Sc,u=t*t+e*e+r*r;return Ca>u&&(t=xc,e=Mc,r=_c,Aa>vc&&(t=dc,e=mc,r=yc),u=t*t+e*e+r*r,Ca>u)?[0/0,0/0]:[Math.atan2(e,t)*La,X(r/Math.sqrt(u))*La]};var pc,vc,dc,mc,yc,xc,Mc,_c,bc,wc,Sc,kc={sphere:g,point:me,lineStart:xe,lineEnd:Me,polygonStart:function(){kc.lineStart=_e},polygonEnd:function(){kc.lineStart=xe}},Ec=Ee(be,Te,ze,[-Sa,-Sa/2]),Ac=1e9;Xo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Pe(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Xo.geo.conicEqualArea=function(){return je(He)}).raw=He,Xo.geo.albers=function(){return Xo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Xo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Xo.geo.albers(),o=Xo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Xo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var s=i.scale(),l=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[l-.455*s,f-.238*s],[l+.455*s,f+.238*s]]).stream(c).point,r=o.translate([l-.307*s,f+.201*s]).clipExtent([[l-.425*s+Aa,f+.12*s+Aa],[l-.214*s-Aa,f+.234*s-Aa]]).stream(c).point,u=a.translate([l-.205*s,f+.212*s]).clipExtent([[l-.214*s+Aa,f+.166*s+Aa],[l-.115*s-Aa,f+.234*s-Aa]]).stream(c).point,n},n.scale(1070)};var Cc,Nc,Lc,Tc,qc,zc,Rc={point:g,lineStart:g,lineEnd:g,polygonStart:function(){Nc=0,Rc.lineStart=Fe},polygonEnd:function(){Rc.lineStart=Rc.lineEnd=Rc.point=g,Cc+=oa(Nc/2)}},Dc={point:Oe,lineStart:g,lineEnd:g,polygonStart:g,polygonEnd:g},Pc={point:Ze,lineStart:Ve,lineEnd:Xe,polygonStart:function(){Pc.lineStart=$e},polygonEnd:function(){Pc.point=Ze,Pc.lineStart=Ve,Pc.lineEnd=Xe}};Xo.geo.path=function(){function n(n){return n&&(\"function\"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Xo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Cc=0,Xo.geo.stream(n,u(Rc)),Cc},n.centroid=function(n){return dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,u(Pc)),Sc?[bc/Sc,wc/Sc]:_c?[xc/_c,Mc/_c]:yc?[dc/yc,mc/yc]:[0/0,0/0]},n.bounds=function(n){return qc=zc=-(Lc=Tc=1/0),Xo.geo.stream(n,u(Dc)),[[Lc,Tc],[qc,zc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Je(n):bt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Ye:new Be(n),\"function\"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a=\"function\"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Xo.geo.albersUsa()).context(null)},Xo.geo.transform=function(n){return{stream:function(t){var e=new Ge(t);for(var r in n)e[r]=n[r];return e}}},Ge.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Xo.geo.projection=Qe,Xo.geo.projectionMutator=nr,(Xo.geo.equirectangular=function(){return Qe(er)}).raw=er.invert=er,Xo.geo.rotation=function(n){function t(t){return t=n(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t}return n=ur(n[0]%360*Na,n[1]*Na,n.length>2?n[2]*Na:0),t.invert=function(t){return t=n.invert(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t},t},rr.invert=er,Xo.geo.circle=function(){function n(){var n=\"function\"==typeof r?r.apply(this,arguments):r,t=ur(-n[0]*Na,-n[1]*Na,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=La,n[1]*=La}}),{type:\"Polygon\",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=cr((t=+r)*Na,u*Na),n):t},n.precision=function(r){return arguments.length?(e=cr(t*Na,(u=+r)*Na),n):u},n.angle(90)},Xo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Na,u=n[1]*Na,i=t[1]*Na,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),s=Math.cos(u),l=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=s*l-c*f*a)*e),c*l+s*f*a)},Xo.geo.graticule=function(){function n(){return{type:\"MultiLineString\",coordinates:t()}}function t(){return Xo.range(Math.ceil(i/d)*d,u,d).map(h).concat(Xo.range(Math.ceil(s/m)*m,c,m).map(g)).concat(Xo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return oa(n%d)>Aa}).map(l)).concat(Xo.range(Math.ceil(a/v)*v,o,v).filter(function(n){return oa(n%m)>Aa}).map(f))}var e,r,u,i,o,a,c,s,l,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:\"LineString\",coordinates:n}})},n.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(s).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],s=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),s>c&&(t=s,s=c,c=t),n.precision(y)):[[i,s],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,l=lr(a,o,90),f=fr(r,e,y),h=lr(s,c,90),g=fr(i,u,y),n):y},n.majorExtent([[-180,-90+Aa],[180,90-Aa]]).minorExtent([[-180,-80-Aa],[180,80+Aa]])},Xo.geo.greatArc=function(){function n(){return{type:\"LineString\",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=hr,u=gr;return n.distance=function(){return Xo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t=\"function\"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e=\"function\"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Xo.geo.interpolate=function(n,t){return pr(n[0]*Na,n[1]*Na,t[0]*Na,t[1]*Na)},Xo.geo.length=function(n){return Uc=0,Xo.geo.stream(n,jc),Uc};var Uc,jc={sphere:g,point:g,lineStart:vr,lineEnd:g,polygonStart:g,polygonEnd:g},Hc=dr(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Xo.geo.azimuthalEqualArea=function(){return Qe(Hc)}).raw=Hc;var Fc=dr(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},bt);(Xo.geo.azimuthalEquidistant=function(){return Qe(Fc)}).raw=Fc,(Xo.geo.conicConformal=function(){return je(mr)}).raw=mr,(Xo.geo.conicEquidistant=function(){return je(yr)}).raw=yr;var Oc=dr(function(n){return 1/n},Math.atan);(Xo.geo.gnomonic=function(){return Qe(Oc)}).raw=Oc,xr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ea]},(Xo.geo.mercator=function(){return Mr(xr)}).raw=xr;var Yc=dr(function(){return 1},Math.asin);(Xo.geo.orthographic=function(){return Qe(Yc)}).raw=Yc;var Ic=dr(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Xo.geo.stereographic=function(){return Qe(Ic)}).raw=Ic,_r.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ea]},(Xo.geo.transverseMercator=function(){var n=Mr(_r),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[-n[1],n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},n.rotate([0,0])}).raw=_r,Xo.geom={},Xo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=_t(e),i=_t(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(kr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var s=Sr(a),l=Sr(c),f=l[0]===s[0],h=l[l.length-1]===s[s.length-1],g=[];for(t=s.length-1;t>=0;--t)g.push(n[a[s[t]][2]]);for(t=+f;t<l.length-h;++t)g.push(n[a[l[t]][2]]);return g}var e=br,r=wr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},Xo.geom.polygon=function(n){return fa(n,Zc),n};var Zc=Xo.geom.polygon.prototype=[];Zc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},Zc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},Zc.clip=function(n){for(var t,e,r,u,i,o,a=Cr(n),c=-1,s=this.length-Cr(this),l=this[s-1];++c<s;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Er(o,l,u)?(Er(i,l,u)||n.push(Ar(i,o,l,u)),n.push(o)):Er(i,l,u)&&n.push(Ar(i,o,l,u)),i=o;a&&n.push(n[0]),l=u}return n};var Vc,Xc,$c,Bc,Wc,Jc=[],Gc=[];Pr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(jr),t.length},Br.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},Wr.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=Qr(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(Gr(this,e),n=e,e=n.U),e.C=!1,r.C=!0,Kr(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(Kr(this,e),n=e,e=n.U),e.C=!1,r.C=!0,Gr(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?Qr(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,Gr(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,Kr(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,Gr(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,Kr(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,Gr(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,Kr(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},Xo.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return nu(e(n),a).cells.forEach(function(e,a){var c=e.edges,s=e.site,l=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):s.x>=r&&s.x<=i&&s.y>=u&&s.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];l.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Aa)*Aa,y:Math.round(o(n,t)/Aa)*Aa,i:t}})}var r=br,u=wr,i=r,o=u,a=Kc;return n?t(n):(t.links=function(n){return nu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return nu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(jr),c=-1,s=a.length,l=a[s-1].edge,f=l.l===o?l.r:l.l;++c<s;)u=l,i=f,l=a[c].edge,f=l.l===o?l.r:l.l,r<i.i&&r<f.i&&eu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=_t(r=n),t):r},t.y=function(n){return arguments.length?(o=_t(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?Kc:n,t):a===Kc?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===Kc?null:a&&a[1]},t)};var Kc=[[-1e6,-1e6],[1e6,1e6]];Xo.geom.delaunay=function(n){return Xo.geom.voronoi().triangles(n)},Xo.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,l=n.y;if(null!=c)if(oa(c-e)+oa(l-r)<.01)s(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,s(n,f,c,l,u,i,o,a),s(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else s(n,t,e,r,u,i,o,a)}function s(n,t,e,r,u,o,a,c){var s=.5*(u+a),l=.5*(o+c),f=e>=s,h=r>=l,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=iu()),f?u=s:a=s,h?o=l:c=l,i(n,t,e,r,u,o,a,c)}var l,f,h,g,p,v,d,m,y,x=_t(a),M=_t(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)l=n[g],l.x<v&&(v=l.x),l.y<d&&(d=l.y),l.x>m&&(m=l.x),l.y>y&&(y=l.y),f.push(l.x),h.push(l.y);else for(g=0;p>g;++g){var _=+x(l=n[g],g),b=+M(l,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=iu();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){ou(n,k,v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=l=null,k}var o,a=br,c=wr;return(o=arguments.length)?(a=ru,c=uu,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},Xo.interpolateRgb=au,Xo.interpolateObject=cu,Xo.interpolateNumber=su,Xo.interpolateString=lu;var Qc=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;Xo.interpolate=fu,Xo.interpolators=[function(n,t){var e=typeof t;return(\"string\"===e?Va.has(t)||/^(#|rgb\\(|hsl\\()/.test(t)?au:lu:t instanceof G?au:\"object\"===e?Array.isArray(t)?hu:cu:su)(n,t)}],Xo.interpolateArray=hu;var ns=function(){return bt},ts=Xo.map({linear:ns,poly:xu,quad:function(){return du},cubic:function(){return mu},sin:function(){return Mu},exp:function(){return _u},circle:function(){return bu},elastic:wu,back:Su,bounce:function(){return ku}}),es=Xo.map({\"in\":bt,out:pu,\"in-out\":vu,\"out-in\":function(n){return vu(pu(n))}});Xo.ease=function(n){var t=n.indexOf(\"-\"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):\"in\";return e=ts.get(e)||ns,r=es.get(r)||bt,gu(r(e.apply(null,$o.call(arguments,1))))},Xo.interpolateHcl=Eu,Xo.interpolateHsl=Au,Xo.interpolateLab=Cu,Xo.interpolateRound=Nu,Xo.transform=function(n){var t=Wo.createElementNS(Xo.ns.prefix.svg,\"g\");return(Xo.transform=function(n){if(null!=n){t.setAttribute(\"transform\",n);var e=t.transform.baseVal.consolidate()}return new Lu(e?e.matrix:rs)})(n)},Lu.prototype.toString=function(){return\"translate(\"+this.translate+\")rotate(\"+this.rotate+\")skewX(\"+this.skew+\")scale(\"+this.scale+\")\"};var rs={a:1,b:0,c:0,d:1,e:0,f:0};Xo.interpolateTransform=Ru,Xo.layout={},Xo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Uu(n[e]));return t}},Xo.layout.chord=function(){function n(){var n,s,f,h,g,p={},v=[],d=Xo.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(s=0,g=-1;++g<i;)s+=u[h][g];v.push(s),m.push(Xo.range(i)),n+=s}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(ka-l*i)/n,s=0,h=-1;++h<i;){for(f=s,g=-1;++g<i;){var y=d[h],x=m[y][g],M=u[y][x],_=s,b=s+=M*n;p[y+\"-\"+x]={index:y,subindex:x,startAngle:_,endAngle:b,value:M}}r[y]={index:y,startAngle:f,endAngle:s,value:(s-f)/n},s+=l}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+\"-\"+g],S=p[g+\"-\"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,s={},l=0;return s.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,s):u},s.padding=function(n){return arguments.length?(l=n,e=r=null,s):l},s.sortGroups=function(n){return arguments.length?(o=n,e=r=null,s):o},s.sortSubgroups=function(n){return arguments.length?(a=n,e=null,s):a},s.sortChords=function(n){return arguments.length?(c=n,e&&t(),s):c},s.chords=function(){return e||n(),e},s.groups=function(){return r||n(),r},s},Xo.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var s=t.charge/c;n.px-=i*s,n.py-=o*s}return!0}if(t.point&&c&&p>c){var s=t.pointCharge/c;n.px-=i*s,n.py-=o*s}}return!t.charge}}function t(n){n.px=Xo.event.x,n.py=Xo.event.y,a.resume()}var e,r,u,i,o,a={},c=Xo.dispatch(\"start\",\"tick\",\"end\"),s=[1,1],l=.9,f=us,h=is,g=-30,p=os,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:\"end\",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=s[0]/2,M=s[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Zu(t=Xo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*l,a.y-=(a.py-(a.py=a.y))*l);c.tick({type:\"tick\",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(s=n,a):s},a.linkDistance=function(n){return arguments.length?(f=\"function\"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h=\"function\"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(l=+n,a):l},a.charge=function(n){return arguments.length?(g=\"function\"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:\"start\",alpha:r=n}),Xo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,s=o.length;++a<s;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,l=y.length,p=s[0],v=s[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;l>t;++t)r=y[t],\"number\"==typeof r.source&&(r.source=m[r.source]),\"number\"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n(\"x\",p)),isNaN(r.y)&&(r.y=n(\"y\",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],\"function\"==typeof f)for(t=0;l>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;l>t;++t)u[t]=f;if(i=[],\"function\"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;l>t;++t)i[t]=h;if(o=[],\"function\"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Xo.behavior.drag().origin(bt).on(\"dragstart.force\",Fu).on(\"drag.force\",t).on(\"dragend.force\",Ou)),arguments.length?(this.on(\"mouseover.force\",Yu).on(\"mouseout.force\",Iu).call(e),void 0):e},Xo.rebind(a,c,\"on\")};var us=20,is=1,os=1/0;Xo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(s=c.length)){for(var s,l,f=-1,h=t.children=new Array(s),g=0,p=o+1;++f<s;)l=h[f]=n(c[f],p,a),l.parent=t,g+=l.value;r&&h.sort(r),i&&(t.value=g)}else delete t.children,i&&(t.value=+i.call(e,t,o)||0);return t}function t(n,r){var u=n.children,o=0;if(u&&(a=u.length))for(var a,c=-1,s=r+1;++c<a;)o+=t(u[c],s);else i&&(o=+i.call(e,n,r)||0);return i&&(n.value=o),o}function e(t){var e=[];return n(t,0,e),e}var r=Bu,u=Xu,i=$u;return e.sort=function(n){return arguments.length?(r=n,e):r},e.children=function(n){return arguments.length?(u=n,e):u},e.value=function(n){return arguments.length?(i=n,e):i},e.revalue=function(n){return t(n,0),n},e},Xo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,s=-1;for(r=t.value?r/t.value:0;++s<o;)n(a=i[s],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=Xo.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Vu(e,r)},Xo.layout.pie=function(){function n(i){var o=i.map(function(e,r){return+t.call(n,e,r)}),a=+(\"function\"==typeof r?r.apply(this,arguments):r),c=((\"function\"==typeof u?u.apply(this,arguments):u)-a)/Xo.sum(o),s=Xo.range(i.length);null!=e&&s.sort(e===as?function(n,t){return o[t]-o[n]}:function(n,t){return e(i[n],i[t])});var l=[];return s.forEach(function(n){var t;l[n]={data:i[n],value:t=o[n],startAngle:a,endAngle:a+=t*c}}),l}var t=Number,e=as,r=0,u=ka;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n};var as={};Xo.layout.stack=function(){function n(a,c){var s=a.map(function(e,r){return t.call(n,e,r)}),l=s.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,l,c);s=Xo.permute(s,f),l=Xo.permute(l,f);var h,g,p,v=r.call(n,l,c),d=s.length,m=s[0].length;for(g=0;m>g;++g)for(u.call(n,s[0][g],p=v[g],l[0][g][1]),h=1;d>h;++h)u.call(n,s[h][g],p+=l[h-1][g][1],l[h][g][1]);return a}var t=bt,e=Qu,r=ni,u=Ku,i=Ju,o=Gu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e=\"function\"==typeof t?t:cs.get(t)||Qu,n):e},n.offset=function(t){return arguments.length?(r=\"function\"==typeof t?t:ss.get(t)||ni,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var cs=Xo.map({\"inside-out\":function(n){var t,e,r=n.length,u=n.map(ti),i=n.map(ei),o=Xo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,s=[],l=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],s.push(e)):(c+=i[e],l.push(e));return l.reverse().concat(s)},reverse:function(n){return Xo.range(n.length).reverse()},\"default\":Qu}),ss=Xo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,s,l=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=s=0,e=1;h>e;++e){for(t=0,u=0;l>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];l>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,s>c&&(s=c)}for(e=0;h>e;++e)g[e]-=s;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ni});Xo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],s=n.map(e,this),l=r.call(this,s,i),f=u.call(this,l,s,i),i=-1,h=s.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=s[i],a>=l[0]&&a<=l[1]&&(o=c[Xo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=oi,u=ui;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=_t(t),n):r},n.bins=function(t){return arguments.length?(u=\"number\"==typeof t?function(n){return ii(n,t)}:_t(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Xo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,s,l=r[0],f=l,h=-1;++h<i;)s=r[h],o(s,a),f=c(s,a,f),a=s;vi(n);var g=.5*(l._tree.prelim+s._tree.prelim);t?(u.prelim=t._tree.prelim+e(n,t),u.mod=u.prelim-g):u.prelim=g}else t&&(u.prelim=t._tree.prelim+e(n,t))}function a(n,t){n.x=n._tree.prelim+t;var e=n.children;if(e&&(r=e.length)){var r,u=-1;for(t+=n._tree.mod;++u<r;)a(e[u],t)}}function c(n,t,r){if(t){for(var u,i=n,o=n,a=t,c=n.parent.children[0],s=i._tree.mod,l=o._tree.mod,f=a._tree.mod,h=c._tree.mod;a=si(a),i=ci(i),a&&i;)c=ci(c),o=si(o),o._tree.ancestor=n,u=a._tree.prelim+f-i._tree.prelim-s+e(a,i),u>0&&(di(mi(a,n,r),n,u),s+=u,l+=u),f+=a._tree.mod,s+=i._tree.mod,h+=c._tree.mod,l+=o._tree.mod;a&&!si(o)&&(o._tree.thread=a,o._tree.mod+=f-l),i&&!ci(c)&&(c._tree.thread=i,c._tree.mod+=s-h,r=n)}return r}var s=t.call(this,n,i),l=s[0];pi(l,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(l),a(l,-l._tree.prelim);var f=li(l,hi),h=li(l,fi),g=li(l,gi),p=f.x-e(f,h)/2,v=h.x+e(h,f)/2,d=g.depth||1;return pi(l,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(v-p)*r[0],n.y=n.depth/d*r[1],delete n._tree}),s}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],s=u[1],l=null==t?Math.sqrt:\"function\"==typeof t?t:function(){return t};if(a.x=a.y=0,pi(a,function(n){n.r=+l(n.value)}),pi(a,bi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/s))/2;pi(a,function(n){n.r+=f}),pi(a,bi),pi(a,function(n){n.r-=f})}return ki(a,c/2,s/2,t?1:1/Math.max(2*a.r/c,2*a.r/s)),o}var t,e=Xo.layout.hierarchy().sort(yi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||\"function\"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Vu(n,e)},Xo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],s=0;pi(c,function(n){var t=n.children;t&&t.length?(n.x=Ci(t),n.y=Ai(t)):(n.x=o?s+=e(n,o):0,n.y=0,o=n)});var l=Ni(c),f=Li(c),h=l.x-e(l,f)/2,g=f.x+e(f,l)/2;return pi(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,s=f(e),l=[],h=i.slice(),p=1/0,v=\"slice\"===g?s.dx:\"dice\"===g?s.dy:\"slice-dice\"===g?1&e.depth?s.dy:s.dx:Math.min(s.dx,s.dy);for(n(h,s.dx*s.dy/e.value),l.area=0;(c=h.length)>0;)l.push(o=h[c-1]),l.area+=o.area,\"squarify\"!==g||(a=r(l,v))<=p?(h.pop(),p=a):(l.area-=l.pop().area,u(l,v,s,!1),v=Math.min(s.dx,s.dy),l.length=l.area=0,p=1/0);l.length&&(u(l,v,s,!0),l.length=l.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,s=e.y,l=t?c(n.area/t):0;if(t==e.dx){for((r||l>e.dy)&&(l=e.dy);++i<o;)u=n[i],u.x=a,u.y=s,u.dy=l,a+=u.dx=Math.min(e.x+e.dx-a,l?c(u.area/l):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=l,e.dy-=l}else{for((r||l>e.dx)&&(l=e.dx);++i<o;)u=n[i],u.x=a,u.y=s,u.dx=l,s+=u.dy=Math.min(e.y+e.dy-s,l?c(u.area/l):0);u.z=!1,u.dy+=e.y+e.dy-s,e.x+=l,e.dx-=l}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=s[0],i.dy=s[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=Xo.layout.hierarchy(),c=Math.round,s=[1,1],l=null,f=Ti,h=!1,g=\"squarify\",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(s=n,i):s},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Ti(t):qi(t,\"number\"==typeof e?[e,e,e,e]:e)}function e(t){return qi(t,n)}if(!arguments.length)return l;var r;return f=null==(l=n)?Ti:\"function\"==(r=typeof n)?t:\"number\"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+\"\",i):g},Vu(i,a)},Xo.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Xo.random.normal.apply(Xo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Xo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Xo.scale={};var ls={floor:bt,ceil:bt};Xo.scale.linear=function(){return Hi([0,1],[0,1],fu,!1)};var fs={s:1,g:1,p:1,r:1,e:1};Xo.scale.log=function(){return $i(Xo.scale.linear().domain([0,1]),10,!0,[1,10])};var hs=Xo.format(\".0e\"),gs={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Xo.scale.pow=function(){return Bi(Xo.scale.linear(),1,[0,1])},Xo.scale.sqrt=function(){return Xo.scale.pow().exponent(.5)},Xo.scale.ordinal=function(){return Ji([],{t:\"range\",a:[[]]})},Xo.scale.category10=function(){return Xo.scale.ordinal().range(ps)},Xo.scale.category20=function(){return Xo.scale.ordinal().range(vs)},Xo.scale.category20b=function(){return Xo.scale.ordinal().range(ds)},Xo.scale.category20c=function(){return Xo.scale.ordinal().range(ms)};var ps=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(ht),vs=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(ht),ds=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(ht),ms=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(ht);Xo.scale.quantile=function(){return Gi([],[])},Xo.scale.quantize=function(){return Ki(0,1,[0,1])},Xo.scale.threshold=function(){return Qi([.5],[0,1])},Xo.scale.identity=function(){return no([0,1])},Xo.svg={},Xo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+ys,a=u.apply(this,arguments)+ys,c=(o>a&&(c=o,o=a,a=c),a-o),s=Sa>c?\"0\":\"1\",l=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=xs?n?\"M0,\"+i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+-i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+i+\"M0,\"+n+\"A\"+n+\",\"+n+\" 0 1,0 0,\"+-n+\"A\"+n+\",\"+n+\" 0 1,0 0,\"+n+\"Z\":\"M0,\"+i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+-i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+i+\"Z\":n?\"M\"+i*l+\",\"+i*f+\"A\"+i+\",\"+i+\" 0 \"+s+\",1 \"+i*h+\",\"+i*g+\"L\"+n*h+\",\"+n*g+\"A\"+n+\",\"+n+\" 0 \"+s+\",0 \"+n*l+\",\"+n*f+\"Z\":\"M\"+i*l+\",\"+i*f+\"A\"+i+\",\"+i+\" 0 \"+s+\",1 \"+i*h+\",\"+i*g+\"L0,0\"+\"Z\"}var t=to,e=eo,r=ro,u=uo;return n.innerRadius=function(e){return arguments.length?(t=_t(e),n):t},n.outerRadius=function(t){return arguments.length?(e=_t(t),n):e},n.startAngle=function(t){return arguments.length?(r=_t(t),n):r},n.endAngle=function(t){return arguments.length?(u=_t(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+ys;return[Math.cos(i)*n,Math.sin(i)*n]},n};var ys=-Ea,xs=ka-Aa;Xo.svg.line=function(){return io(bt)};var Ms=Xo.map({linear:oo,\"linear-closed\":ao,step:co,\"step-before\":so,\"step-after\":lo,basis:mo,\"basis-open\":yo,\"basis-closed\":xo,bundle:Mo,cardinal:go,\"cardinal-open\":fo,\"cardinal-closed\":ho,monotone:Eo});Ms.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var _s=[0,2/3,1/3,0],bs=[0,1/3,2/3,0],ws=[0,1/6,2/3,1/6];Xo.svg.line.radial=function(){var n=io(Ao);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},so.reverse=lo,lo.reverse=so,Xo.svg.area=function(){return Co(bt)},Xo.svg.area.radial=function(){var n=Co(Ao);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Xo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),s=t(this,o,n,a);return\"M\"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,s)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,s.r,s.p0)+r(s.r,s.p1,s.a1-s.a0)+u(s.r,s.p1,c.r,c.p0))+\"Z\"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+ys,l=s.call(n,u,r)+ys;return{r:i,a0:o,a1:l,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(l),i*Math.sin(l)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return\"A\"+n+\",\"+n+\" 0 \"+ +(e>Sa)+\",1 \"+t}function u(n,t,e,r){return\"Q 0,0 \"+r}var i=hr,o=gr,a=No,c=ro,s=uo;return n.radius=function(t){return arguments.length?(a=_t(t),n):a},n.source=function(t){return arguments.length?(i=_t(t),n):i},n.target=function(t){return arguments.length?(o=_t(t),n):o},n.startAngle=function(t){return arguments.length?(c=_t(t),n):c},n.endAngle=function(t){return arguments.length?(s=_t(t),n):s},n},Xo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),\"M\"+c[0]+\"C\"+c[1]+\" \"+c[2]+\" \"+c[3]}var t=hr,e=gr,r=Lo;return n.source=function(e){return arguments.length?(t=_t(e),n):t},n.target=function(t){return arguments.length?(e=_t(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Xo.svg.diagonal.radial=function(){var n=Xo.svg.diagonal(),t=Lo,e=n.projection;return n.projection=function(n){return arguments.length?e(To(t=n)):t},n},Xo.svg.symbol=function(){function n(n,r){return(Ss.get(t.call(this,n,r))||Ro)(e.call(this,n,r))}var t=zo,e=qo;return n.type=function(e){return arguments.length?(t=_t(e),n):t},n.size=function(t){return arguments.length?(e=_t(t),n):e},n};var Ss=Xo.map({circle:Ro,cross:function(n){var t=Math.sqrt(n/5)/2;return\"M\"+-3*t+\",\"+-t+\"H\"+-t+\"V\"+-3*t+\"H\"+t+\"V\"+-t+\"H\"+3*t+\"V\"+t+\"H\"+t+\"V\"+3*t+\"H\"+-t+\"V\"+t+\"H\"+-3*t+\"Z\"},diamond:function(n){var t=Math.sqrt(n/(2*Cs)),e=t*Cs;return\"M0,\"+-t+\"L\"+e+\",0\"+\" 0,\"+t+\" \"+-e+\",0\"+\"Z\"},square:function(n){var t=Math.sqrt(n)/2;return\"M\"+-t+\",\"+-t+\"L\"+t+\",\"+-t+\" \"+t+\",\"+t+\" \"+-t+\",\"+t+\"Z\"},\"triangle-down\":function(n){var t=Math.sqrt(n/As),e=t*As/2;return\"M0,\"+e+\"L\"+t+\",\"+-e+\" \"+-t+\",\"+-e+\"Z\"},\"triangle-up\":function(n){var t=Math.sqrt(n/As),e=t*As/2;return\"M0,\"+-e+\"L\"+t+\",\"+e+\" \"+-t+\",\"+e+\"Z\"}});Xo.svg.symbolTypes=Ss.keys();var ks,Es,As=Math.sqrt(3),Cs=Math.tan(30*Na),Ns=[],Ls=0;Ns.call=da.call,Ns.empty=da.empty,Ns.node=da.node,Ns.size=da.size,Xo.transition=function(n){return arguments.length?ks?n.transition():n:xa.transition()},Xo.transition.prototype=Ns,Ns.select=function(n){var t,e,r,u=this.id,i=[];n=M(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]);for(var c=this[o],s=-1,l=c.length;++s<l;)(r=c[s])&&(e=n.call(r,r.__data__,s,o))?(\"__data__\"in r&&(e.__data__=r.__data__),jo(e,s,u,r.__transition__[u]),t.push(e)):t.push(null)}return Do(i,u)},Ns.selectAll=function(n){var t,e,r,u,i,o=this.id,a=[];n=_(n);for(var c=-1,s=this.length;++c<s;)for(var l=this[c],f=-1,h=l.length;++f<h;)if(r=l[f]){i=r.__transition__[o],e=n.call(r,r.__data__,f,c),a.push(t=[]);for(var g=-1,p=e.length;++g<p;)(u=e[g])&&jo(u,g,o,i),t.push(u)}return Do(a,o)},Ns.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=q(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Do(u,this.id)},Ns.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):R(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Ns.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+=\"\",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+=\"\",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o=\"transform\"==n?Ru:fu,a=Xo.ns.qualify(n);return Po(this,\"attr.\"+n,t,a.local?i:u)},Ns.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Xo.ns.qualify(n);return this.tween(\"attr.\"+n,u.local?r:e)},Ns.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+=\"\",function(){var r,u=Go.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=fu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if(\"string\"!=typeof n){2>i&&(t=\"\");for(e in n)this.style(e,n[e],t);return this}e=\"\"}return Po(this,\"style.\"+n,t,u)},Ns.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,Go.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=\"\"),this.tween(\"style.\"+n,r)},Ns.text=function(n){return Po(this,\"text\",n,Uo)},Ns.remove=function(){return this.each(\"end.transition\",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Ns.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:(\"function\"!=typeof n&&(n=Xo.ease.apply(Xo,arguments)),R(this,function(e){e.__transition__[t].ease=n}))},Ns.delay=function(n){var t=this.id;return R(this,\"function\"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Ns.duration=function(n){var t=this.id;return R(this,\"function\"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Ns.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Es,u=ks;ks=e,R(this,function(t,r,u){Es=t.__transition__[e],n.call(t,t.__data__,r,u)}),Es=r,ks=u}else R(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Xo.dispatch(\"start\",\"end\"))).on(n,t)});return this},Ns.transition=function(){for(var n,t,e,r,u=this.id,i=++Ls,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],s=0,l=t.length;l>s;s++)(e=t[s])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,jo(e,s,i,r)),n.push(e)}return Do(o,i)},Xo.svg.axis=function(){function n(n){n.each(function(){var n,s=Xo.select(this),l=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):bt:t,p=s.selectAll(\".tick\").data(h,f),v=p.enter().insert(\"g\",\".domain\").attr(\"class\",\"tick\").style(\"opacity\",Aa),d=Xo.transition(p.exit()).style(\"opacity\",Aa).remove(),m=Xo.transition(p).style(\"opacity\",1),y=Ri(f),x=s.selectAll(\".domain\").data([0]),M=(x.enter().append(\"path\").attr(\"class\",\"domain\"),Xo.transition(x));v.append(\"line\"),v.append(\"text\");var _=v.select(\"line\"),b=m.select(\"line\"),w=p.select(\"text\").text(g),S=v.select(\"text\"),k=m.select(\"text\");switch(r){case\"bottom\":n=Ho,_.attr(\"y2\",u),S.attr(\"y\",Math.max(u,0)+o),b.attr(\"x2\",0).attr(\"y2\",u),k.attr(\"x\",0).attr(\"y\",Math.max(u,0)+o),w.attr(\"dy\",\".71em\").style(\"text-anchor\",\"middle\"),M.attr(\"d\",\"M\"+y[0]+\",\"+i+\"V0H\"+y[1]+\"V\"+i);break;case\"top\":n=Ho,_.attr(\"y2\",-u),S.attr(\"y\",-(Math.max(u,0)+o)),b.attr(\"x2\",0).attr(\"y2\",-u),k.attr(\"x\",0).attr(\"y\",-(Math.max(u,0)+o)),w.attr(\"dy\",\"0em\").style(\"text-anchor\",\"middle\"),M.attr(\"d\",\"M\"+y[0]+\",\"+-i+\"V0H\"+y[1]+\"V\"+-i);break;case\"left\":n=Fo,_.attr(\"x2\",-u),S.attr(\"x\",-(Math.max(u,0)+o)),b.attr(\"x2\",-u).attr(\"y2\",0),k.attr(\"x\",-(Math.max(u,0)+o)).attr(\"y\",0),w.attr(\"dy\",\".32em\").style(\"text-anchor\",\"end\"),M.attr(\"d\",\"M\"+-i+\",\"+y[0]+\"H0V\"+y[1]+\"H\"+-i);break;case\"right\":n=Fo,_.attr(\"x2\",u),S.attr(\"x\",Math.max(u,0)+o),b.attr(\"x2\",u).attr(\"y2\",0),k.attr(\"x\",Math.max(u,0)+o).attr(\"y\",0),w.attr(\"dy\",\".32em\").style(\"text-anchor\",\"start\"),M.attr(\"d\",\"M\"+i+\",\"+y[0]+\"H0V\"+y[1]+\"H\"+i)}if(f.rangeBand){var E=f,A=E.rangeBand()/2;l=f=function(n){return E(n)+A}}else l.rangeBand?l=f:d.call(n,f);v.call(n,l),m.call(n,f)})}var t,e=Xo.scale.linear(),r=Ts,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in qs?t+\"\":Ts,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ts=\"bottom\",qs={top:1,right:1,bottom:1,left:1};Xo.svg.brush=function(){function n(i){i.each(function(){var i=Xo.select(this).style(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush\",u).on(\"touchstart.brush\",u),o=i.selectAll(\".background\").data([0]);o.enter().append(\"rect\").attr(\"class\",\"background\").style(\"visibility\",\"hidden\").style(\"cursor\",\"crosshair\"),i.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\",\"extent\").style(\"cursor\",\"move\");var a=i.selectAll(\".resize\").data(p,bt);a.exit().remove(),a.enter().append(\"g\").attr(\"class\",function(n){return\"resize \"+n}).style(\"cursor\",function(n){return zs[n]}).append(\"rect\").attr(\"x\",function(n){return/[ew]$/.test(n)?-3:null}).attr(\"y\",function(n){return/^[ns]/.test(n)?-3:null}).attr(\"width\",6).attr(\"height\",6).style(\"visibility\",\"hidden\"),a.style(\"display\",n.empty()?\"none\":null);var l,f=Xo.transition(i),h=Xo.transition(o);c&&(l=Ri(c),h.attr(\"x\",l[0]).attr(\"width\",l[1]-l[0]),e(f)),s&&(l=Ri(s),h.attr(\"y\",l[0]).attr(\"height\",l[1]-l[0]),r(f)),t(f)})}function t(n){n.selectAll(\".resize\").attr(\"transform\",function(n){return\"translate(\"+l[+/e$/.test(n)]+\",\"+f[+/^s/.test(n)]+\")\"})}function e(n){n.select(\".extent\").attr(\"x\",l[0]),n.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\",l[1]-l[0])}function r(n){n.select(\".extent\").attr(\"y\",f[0]),n.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\",f[1]-f[0])}function u(){function u(){32==Xo.event.keyCode&&(C||(x=null,L[0]-=l[1],L[1]-=f[1],C=2),d())}function p(){32==Xo.event.keyCode&&2==C&&(L[0]+=l[1],L[1]+=f[1],C=0,d())}function v(){var n=Xo.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(Xo.event.altKey?(x||(x=[(l[0]+l[1])/2,(f[0]+f[1])/2]),L[0]=l[+(n[0]<x[0])],L[1]=f[+(n[1]<x[1])]):x=null),E&&m(n,c,0)&&(e(S),u=!0),A&&m(n,s,1)&&(r(S),u=!0),u&&(t(S),w({type:\"brush\",mode:C?\"move\":\"resize\"}))}function m(n,t,e){var r,u,a=Ri(t),c=a[0],s=a[1],p=L[e],v=e?f:l,d=v[1]-v[0];return C&&(c-=p,s-=d+p),r=(e?g:h)?Math.max(c,Math.min(s,n[e])):n[e],C?u=(r+=p)+d:(x&&(p=Math.max(c,Math.min(s,2*x[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function y(){v(),S.style(\"pointer-events\",\"all\").selectAll(\".resize\").style(\"display\",n.empty()?\"none\":null),Xo.select(\"body\").style(\"cursor\",null),T.on(\"mousemove.brush\",null).on(\"mouseup.brush\",null).on(\"touchmove.brush\",null).on(\"touchend.brush\",null).on(\"keydown.brush\",null).on(\"keyup.brush\",null),N(),w({type:\"brushend\"})}var x,M,_=this,b=Xo.select(Xo.event.target),w=a.of(_,arguments),S=Xo.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&s,C=b.classed(\"extent\"),N=O(),L=Xo.mouse(_),T=Xo.select(Go).on(\"keydown.brush\",u).on(\"keyup.brush\",p);if(Xo.event.changedTouches?T.on(\"touchmove.brush\",v).on(\"touchend.brush\",y):T.on(\"mousemove.brush\",v).on(\"mouseup.brush\",y),S.interrupt().selectAll(\"*\").interrupt(),C)L[0]=l[0]-L[0],L[1]=f[0]-L[1];else if(k){var q=+/w$/.test(k),z=+/^n/.test(k);M=[l[1-q]-L[0],f[1-z]-L[1]],L[0]=l[q],L[1]=f[z]}else Xo.event.altKey&&(x=L.slice());S.style(\"pointer-events\",\"none\").selectAll(\".resize\").style(\"display\",null),Xo.select(\"body\").style(\"cursor\",b.style(\"cursor\")),w({type:\"brushstart\"}),v()}var i,o,a=y(n,\"brushstart\",\"brush\",\"brushend\"),c=null,s=null,l=[0,0],f=[0,0],h=!0,g=!0,p=Rs[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:l,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,ks?Xo.select(this).transition().each(\"start.brush\",function(){i=e.i,o=e.j,l=e.x,f=e.y,n({type:\"brushstart\"})}).tween(\"brush:brush\",function(){var e=hu(l,t.x),r=hu(f,t.y);return i=o=null,function(u){l=t.x=e(u),f=t.y=r(u),n({type:\"brush\",mode:\"resize\"})}}).each(\"end.brush\",function(){i=t.i,o=t.j,n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"})}):(n({type:\"brushstart\"}),n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"}))})},n.x=function(t){return arguments.length?(c=t,p=Rs[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,p=Rs[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(h=!!t[0],g=!!t[1]):c?h=!!t:s&&(g=!!t),n):c&&s?[h,g]:c?h:s?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=l[0]||r!=l[1])&&(l=[e,r])),s&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],s.invert&&(u=s(u),a=s(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=l[0],r=l[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),s&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],s.invert&&(u=s.invert(u),a=s.invert(a)),u>a&&(h=u,u=a,a=h))),c&&s?[[e,u],[r,a]]:c?[e,r]:s&&[u,a])},n.clear=function(){return n.empty()||(l=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&l[0]==l[1]||!!s&&f[0]==f[1]},Xo.rebind(n,a,\"on\")};var zs={n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Rs=[[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"],[\"e\",\"w\"],[\"n\",\"s\"],[]],Ds=tc.format=ac.timeFormat,Ps=Ds.utc,Us=Ps(\"%Y-%m-%dT%H:%M:%S.%LZ\");Ds.iso=Date.prototype.toISOString&&+new Date(\"2000-01-01T00:00:00.000Z\")?Oo:Us,Oo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Oo.toString=Us.toString,tc.second=Rt(function(n){return new ec(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),tc.seconds=tc.second.range,tc.seconds.utc=tc.second.utc.range,tc.minute=Rt(function(n){return new ec(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),tc.minutes=tc.minute.range,tc.minutes.utc=tc.minute.utc.range,tc.hour=Rt(function(n){var t=n.getTimezoneOffset()/60;return new ec(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),tc.hours=tc.hour.range,tc.hours.utc=tc.hour.utc.range,tc.month=Rt(function(n){return n=tc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),tc.months=tc.month.range,tc.months.utc=tc.month.utc.range;var js=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Hs=[[tc.second,1],[tc.second,5],[tc.second,15],[tc.second,30],[tc.minute,1],[tc.minute,5],[tc.minute,15],[tc.minute,30],[tc.hour,1],[tc.hour,3],[tc.hour,6],[tc.hour,12],[tc.day,1],[tc.day,2],[tc.week,1],[tc.month,1],[tc.month,3],[tc.year,1]],Fs=Ds.multi([[\".%L\",function(n){return n.getMilliseconds()}],[\":%S\",function(n){return n.getSeconds()}],[\"%I:%M\",function(n){return n.getMinutes()}],[\"%I %p\",function(n){return n.getHours()}],[\"%a %d\",function(n){return n.getDay()&&1!=n.getDate()}],[\"%b %d\",function(n){return 1!=n.getDate()}],[\"%B\",function(n){return n.getMonth()}],[\"%Y\",be]]),Os={range:function(n,t,e){return Xo.range(Math.ceil(n/e)*e,+t,e).map(Io)},floor:bt,ceil:bt};Hs.year=tc.year,tc.scale=function(){return Yo(Xo.scale.linear(),Hs,Fs)};var Ys=Hs.map(function(n){return[n[0].utc,n[1]]}),Is=Ps.multi([[\".%L\",function(n){return n.getUTCMilliseconds()}],[\":%S\",function(n){return n.getUTCSeconds()}],[\"%I:%M\",function(n){return n.getUTCMinutes()}],[\"%I %p\",function(n){return n.getUTCHours()}],[\"%a %d\",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[\"%b %d\",function(n){return 1!=n.getUTCDate()}],[\"%B\",function(n){return n.getUTCMonth()}],[\"%Y\",be]]);Ys.year=tc.year.utc,tc.scale.utc=function(){return Yo(Xo.scale.linear(),Ys,Is)},Xo.text=wt(function(n){return n.responseText}),Xo.json=function(n,t){return St(n,\"application/json\",Zo,t)},Xo.html=function(n,t){return St(n,\"text/html\",Vo,t)},Xo.xml=wt(function(n){return n.responseXML}),\"function\"==typeof define&&define.amd?define(Xo):\"object\"==typeof module&&module.exports?module.exports=Xo:this.d3=Xo}();'use strict';(function(window){window.define=undefined;}).call(this,this);'use strict';tr.exportTo('tr.ui.b',function(){const DataSeriesEnableChangeEventType='data-series-enabled-change';const THIS_DOC=document._currentScript.ownerDocument;const svgNS='http://www.w3.org/2000/svg';const ColorScheme=tr.b.ColorScheme;function getColorOfKey(key,selected){let id=ColorScheme.getColorIdForGeneralPurposeString(key);if(selected){id+=ColorScheme.properties.brightenedOffsets[0];}\nreturn ColorScheme.colorsAsStrings[id];}\nfunction getSVGTextSize(parentNode,text,opt_callback,opt_this){const textNode=document.createElementNS('http://www.w3.org/2000/svg','text');textNode.setAttributeNS(null,'x',0);textNode.setAttributeNS(null,'y',0);textNode.setAttributeNS(null,'fill','black');textNode.appendChild(document.createTextNode(text));parentNode.appendChild(textNode);if(opt_callback){opt_callback.call(opt_this||parentNode,textNode);}\nconst width=textNode.getComputedTextLength();const height=textNode.getBBox().height;parentNode.removeChild(textNode);return{width,height};}\nfunction DataSeries(key){this.key_=key;this.target_=undefined;this.title_='';this.optional_=false;this.enabled_=true;this.color_=getColorOfKey(key,false);this.highlightedColor_=getColorOfKey(key,true);}\nDataSeries.prototype={get key(){return this.key_;},get title(){return this.title_;},set title(t){this.title_=t;},get color(){return this.color_;},set color(c){this.color_=c;},get highlightedColor(){return this.highlightedColor_;},set highlightedColor(c){this.highlightedColor_=c;},get optional(){return this.optional_;},set optional(optional){this.optional_=optional;},get enabled(){return this.enabled_;},set enabled(enabled){if(!this.optional&&!enabled){this.optional=true;}\nthis.enabled_=enabled;},get target(){return this.target_;},set target(t){this.target_=t;}};const ChartBase=tr.ui.b.define('svg',undefined,svgNS);ChartBase.prototype={__proto__:HTMLUnknownElement.prototype,getDataSeries(key){if(!this.seriesByKey_.has(key)){this.seriesByKey_.set(key,new DataSeries(key));}\nreturn this.seriesByKey_.get(key);},decorate(){Polymer.dom(this).classList.add('chart-base');this.setAttribute('style','cursor: default; user-select: none;');this.chartTitle_=undefined;this.seriesByKey_=new Map();this.graphWidth_=undefined;this.graphHeight_=undefined;this.margin={top:0,right:0,bottom:0,left:0,};this.hideLegend_=false;this.showTitleInLegend_=false;this.titleHeight_='16pt';const template=Polymer.dom(THIS_DOC).querySelector('#chart-base-template');const svgEl=Polymer.dom(template.content).querySelector('svg');for(let i=0;i<Polymer.dom(svgEl).children.length;i++){Polymer.dom(this).appendChild(Polymer.dom(svgEl.children[i]).cloneNode(true));}\nthis.addEventListener(DataSeriesEnableChangeEventType,this.onDataSeriesEnableChange_.bind(this));},get hideLegend(){return this.hideLegend_;},set hideLegend(h){this.hideLegend_=h;this.updateContents_();},get showTitleInLegend(){return this.showTitleInLegend_;},set showTitleInLegend(s){this.showTitleInLegend_=s;this.updateContents_();},isSeriesEnabled(key){return this.getDataSeries(key).enabled;},onDataSeriesEnableChange_(event){this.getDataSeries(event.key).enabled=event.enabled;this.updateContents_();},get chartTitle(){return this.chartTitle_;},set chartTitle(chartTitle){this.chartTitle_=chartTitle;this.updateContents_();},get chartAreaElement(){return Polymer.dom(this).querySelector('#chart-area');},get graphWidth(){if(this.graphWidth_===undefined)return this.defaultGraphWidth;return this.graphWidth_;},set graphWidth(width){this.graphWidth_=width;this.updateContents_();},get defaultGraphWidth(){return 0;},get graphHeight(){if(this.graphHeight_===undefined)return this.defaultGraphHeight;return this.graphHeight_;},set graphHeight(height){this.graphHeight_=height;this.updateContents_();},get titleHeight(){return this.titleHeight_;},set titleHeight(height){this.titleHeight_=height;this.updateContents_();},get defaultGraphHeight(){return 0;},get totalWidth(){return this.margin.left+this.graphWidth+this.margin.right;},get totalHeight(){return this.margin.top+this.graphHeight+this.margin.bottom;},updateMargins_(){const legendSize=this.computeLegendSize_();this.margin.right=Math.max(this.margin.right,legendSize.width);this.margin.bottom=Math.max(this.margin.bottom,legendSize.height-this.graphHeight);if(this.chartTitle_){const titleSize=getSVGTextSize(this,this.chartTitle_,textNode=>{textNode.style.fontSize='16pt';});this.margin.top=Math.max(this.margin.top,titleSize.height+15);const horizontalOverhangPx=(titleSize.width-this.graphWidth)/2;this.margin.left=Math.max(this.margin.left,horizontalOverhangPx);this.margin.right=Math.max(this.margin.right,horizontalOverhangPx);}},computeLegendSize_(){let width=0;let height=0;if(this.hideLegend)return{width,height};let series=[...this.seriesByKey_.values()];if(this.showTitleInLegend){series=series.filter(series=>series.title!=='');}\nfor(const seriesEntry of series){const legendText=this.showTitleInLegend?seriesEntry.title:seriesEntry.key;const textSize=getSVGTextSize(this,legendText);width=Math.max(width,textSize.width+30);height+=textSize.height;}\nreturn{width,height};},updateDimensions_(){const thisSel=d3.select(this);thisSel.attr('width',this.totalWidth);thisSel.attr('height',this.totalHeight);d3.select(this.chartAreaElement).attr('transform','translate('+this.margin.left+', '+this.margin.top+')');},updateContents_(){this.updateMargins_();this.updateDimensions_();this.updateTitle_();this.updateLegend_();},updateTitle_(){const titleSel=d3.select(this.chartAreaElement).select('#title');if(!this.chartTitle_){titleSel.style('display','none');return;}\ntitleSel.attr('transform','translate('+this.graphWidth*0.5+',-15)').style('display',undefined).style('text-anchor','middle').style('font-size',this.titleHeight).attr('class','title').attr('width',this.graphWidth).text(this.chartTitle_);},updateLegend_(){const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.legend').remove();if(this.hideLegend)return;let series;let seriesText;if(this.showTitleInLegend){series=[...this.seriesByKey_.values()].filter(series=>series.title!=='').filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.title;}else{series=[...this.seriesByKey_.values()].filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.key;}\nconst legendEntriesSel=chartAreaSel.selectAll('.legend').data(series);legendEntriesSel.enter().append('foreignObject').attr('class','legend').attr('x',this.graphWidth+2).attr('width',this.margin.right).attr('height',18).attr('transform',(series,i)=>'translate(0,'+i*18+')').append('xhtml:body').style('margin',0).append('tr-ui-b-chart-legend-key').property('color',series=>((this.currentHighlightedLegendKey===series.key)?series.highlightedColor:series.color)).property('width',this.margin.right).property('target',series=>series.target).property('title',series=>series.title).property('optional',series=>series.optional).property('enabled',series=>series.enabled).text(seriesText);legendEntriesSel.exit().remove();},get highlightedLegendKey(){return this.highlightedLegendKey_;},set highlightedLegendKey(highlightedLegendKey){this.highlightedLegendKey_=highlightedLegendKey;this.updateHighlight_();},get currentHighlightedLegendKey(){if(this.tempHighlightedLegendKey_){return this.tempHighlightedLegendKey_;}\nreturn this.highlightedLegendKey_;},pushTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_){throw new Error('push cannot nest');}\nthis.tempHighlightedLegendKey_=key;this.updateHighlight_();},popTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_!==key){throw new Error('pop cannot happen');}\nthis.tempHighlightedLegendKey_=undefined;this.updateHighlight_();},updateHighlight_(){const chartAreaSel=d3.select(this.chartAreaElement);const legendEntriesSel=chartAreaSel.selectAll('.legend');const getDataSeries=chart.getDataSeries.bind(chart);const currentHighlightedLegendKey=chart.currentHighlightedLegendKey;legendEntriesSel.each(function(key){const dataSeries=getDataSeries(key);if(key===currentHighlightedLegendKey){this.style.fill=dataSeries.highlightedColor;this.style.fontWeight='bold';}else{this.style.fill=dataSeries.color;this.style.fontWeight='';}});}};return{ChartBase,DataSeriesEnableChangeEventType,getColorOfKey,getSVGTextSize,};});'use strict';tr.exportTo('tr.ui.b',function(){const D3_Y_AXIS_WIDTH_PX=9;const D3_X_AXIS_HEIGHT_PX=23;function sanitizePower(x,defaultValue){if(!isNaN(x)&&isFinite(x)&&(x!==0))return x;return defaultValue;}\nconst ChartBase2D=tr.ui.b.define('chart-base-2d',tr.ui.b.ChartBase);ChartBase2D.prototype={__proto__:tr.ui.b.ChartBase.prototype,decorate(){super.decorate();Polymer.dom(this).classList.add('chart-base-2d');this.xScale_=d3.scale.linear();this.yScale_=d3.scale.linear();this.isYLogScale_=false;this.yLogScaleBase_=10;this.yLogScaleMin_=undefined;this.autoDataRange_=new tr.b.math.Range();this.overrideDataRange_=undefined;this.hideXAxis_=false;this.hideYAxis_=false;this.data_=[];this.xAxisLabel_='';this.yAxisLabel_='';this.textHeightPx_=0;this.unit_=undefined;d3.select(this.chartAreaElement).append('g').attr('id','brushes');d3.select(this.chartAreaElement).append('g').attr('id','series');this.addEventListener('mousedown',this.onMouseDown_.bind(this));},get yLogScaleBase(){return this.yLogScaleBase_;},set yLogScaleBase(b){this.yLogScaleBase_=b;},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();},get xAxisLabel(){return this.xAxisLabel_;},set xAxisLabel(label){this.xAxisLabel_=label;},get yAxisLabel(){return this.yAxisLabel_;},set yAxisLabel(label){this.yAxisLabel_=label;},get hideXAxis(){return this.hideXAxis_;},set hideXAxis(h){this.hideXAxis_=h;this.updateContents_();},get hideYAxis(){return this.hideYAxis_;},set hideYAxis(h){this.hideYAxis_=h;this.updateContents_();},get data(){return this.data_;},set data(data){if(data===undefined){throw new Error('data must be an Array');}\nthis.data_=data;this.updateSeriesKeys_();this.updateDataRange_();this.updateContents_();},set isYLogScale(logScale){if(logScale){this.yScale_=d3.scale.log().base(this.yLogScaleBase);}else{this.yScale_=d3.scale.linear();}\nthis.isYLogScale_=logScale;},getYScaleMin_(){return this.isYLogScale_?this.yLogScaleMin_:0;},getYScaleDomain_(minValue,maxValue){if(this.overrideDataRange_!==undefined){return[this.dataRange.min,this.dataRange.max];}\nif(this.isYLogScale_){return[this.getYScaleMin_(),maxValue];}\nreturn[Math.min(minValue,this.getYScaleMin_()),maxValue];},getSampleWidth_(data,index,leftSide){let leftIndex;let rightIndex;if(leftSide){leftIndex=Math.max(index-1,0);rightIndex=index;}else{leftIndex=index;rightIndex=Math.min(index+1,data.length-1);}\nconst leftWidth=this.getXForDatum_(data[index],index)-\nthis.getXForDatum_(data[leftIndex],leftIndex);const rightWidth=this.getXForDatum_(data[rightIndex],rightIndex)-\nthis.getXForDatum_(data[index],index);return tr.b.math.Statistics.mean([leftWidth,rightWidth]);},updateSeriesKeys_(){this.data_.forEach(function(datum){Object.keys(datum).forEach(function(key){if(this.isDatumFieldSeries_(key)){this.getDataSeries(key);}},this);},this);},isDatumFieldSeries_(fieldName){return fieldName!=='x';},getXForDatum_(datum,index){return datum.x;},updateMargins_(){this.margin.left=this.hideYAxis?0:this.yAxisWidth;this.margin.bottom=this.hideXAxis?0:this.xAxisHeight;if(this.hideXAxis&&!this.hideYAxis){this.margin.bottom=10;}\nif(this.hideYAxis&&!this.hideXAxis){this.margin.left=10;}\nthis.margin.top=this.hideYAxis?0:10;if(this.yAxisLabel){this.margin.top+=this.textHeightPx_;}\nif(this.xAxisLabel){this.margin.right=Math.max(this.margin.right,16+tr.ui.b.getSVGTextSize(this,this.xAxisLabel).width);}\nsuper.updateMargins_();},get xAxisHeight(){return D3_X_AXIS_HEIGHT_PX;},computeScaleTickWidth_(scale){if(this.data.length===0)return 0;let tickValues=scale.ticks();let tickFormat=scale.tickFormat();if(this.isYLogScale_){const enclosingPowers=this.dataRange.enclosingPowers();tickValues=[];const maxPower=sanitizePower(enclosingPowers.max,this.yLogScaleBase);for(let power=sanitizePower(enclosingPowers.min,1);power<=maxPower;power*=this.yLogScaleBase){tickValues.push(power);}\ntickFormat=v=>v.toString();}\nif(this.unit){tickFormat=v=>this.unit.format(v);}\nlet maxTickWidth=0;for(const tickValue of tickValues){maxTickWidth=Math.max(maxTickWidth,tr.ui.b.getSVGTextSize(this,tickFormat(tickValue)).width);}\nreturn D3_Y_AXIS_WIDTH_PX+maxTickWidth;},get yAxisWidth(){return this.computeScaleTickWidth_(this.yScale_);},updateScales_(){if(this.data_.length===0)return;this.xScale_.range([0,this.graphWidth]);this.xScale_.domain(d3.extent(this.data_,this.getXForDatum_.bind(this)));this.yScale_.range([this.graphHeight,0]);this.yScale_.domain([this.dataRange.min,this.dataRange.max]);},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();},updateXAxis_(xAxis){xAxis.selectAll('*').remove();xAxis[0][0].style.opacity=0;if(this.hideXAxis)return;this.drawXAxis_(xAxis);const label=xAxis.append('text').attr('class','label');this.drawXAxisTicks_(xAxis);this.drawXAxisLabel_(label);xAxis[0][0].style.opacity=1;},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.xScale_).orient('bottom'));},drawXAxisLabel_(label){label.attr('x',this.graphWidth+16).attr('y',8).text(this.xAxisLabel);},drawXAxisTicks_(xAxis){let previousRight=undefined;xAxis.selectAll('.tick')[0].forEach(function(tick){const currentLeft=tick.transform.baseVal[0].matrix.e;if((previousRight===undefined)||(currentLeft>(previousRight+3))){const currentWidth=tick.getBBox().width;previousRight=currentLeft+currentWidth;}else{tick.style.opacity=0;}});},set overrideDataRange(range){this.overrideDataRange_=range;},get dataRange(){if(this.overrideDataRange_!==undefined){return this.overrideDataRange_;}\nreturn this.autoDataRange_;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;const dataBySeriesKey=this.getDataBySeriesKey_();this.autoDataRange_.reset();for(const[series,values]of Object.entries(dataBySeriesKey)){for(let i=0;i<values.length;i++){this.autoDataRange_.addValue(values[i][series]);}}\nthis.yLogScaleMin_=undefined;if(this.autoDataRange_.min!==undefined){let minValue=this.autoDataRange_.min;if(minValue===0){minValue=1;}\nconst onePowerLess=tr.b.math.lesserPower(minValue/this.yLogScaleBase);this.yLogScaleMin_=onePowerLess;}},updateYAxis_(yAxis){yAxis.selectAll('*').remove();yAxis[0][0].style.opacity=0;if(this.hideYAxis)return;this.drawYAxis_(yAxis);this.drawYAxisTicks_(yAxis);const label=yAxis.append('text').attr('class','label');this.drawYAxisLabel_(label);},drawYAxis_(yAxis){let axisModifier=d3.svg.axis().scale(this.yScale_).orient('left');let tickFormat;if(this.isYLogScale_){if(this.yLogScaleMin_===undefined)return;const tickValues=[];const enclosingPowers=this.dataRange.enclosingPowers();const maxPower=sanitizePower(enclosingPowers.max,this.yLogScaleBase);for(let power=sanitizePower(enclosingPowers.min,1);power<=maxPower;power*=this.yLogScaleBase){tickValues.push(power);}\naxisModifier=axisModifier.tickValues(tickValues);tickFormat=v=>v.toString();}\nif(this.unit){tickFormat=v=>this.unit.format(v);}\nif(tickFormat){axisModifier=axisModifier.tickFormat(tickFormat);}\nyAxis.call(axisModifier);},drawYAxisLabel_(label){const labelWidthPx=Math.ceil(tr.ui.b.getSVGTextSize(this.chartAreaElement,this.yAxisLabel).width);label.attr('x',-labelWidthPx).attr('y',-8).text(this.yAxisLabel);},drawYAxisTicks_(yAxis){let previousTop=undefined;yAxis.selectAll('.tick')[0].forEach(function(tick){const bbox=tick.getBBox();const currentTop=tick.transform.baseVal[0].matrix.f;const currentBottom=currentTop+bbox.height;if((previousTop===undefined)||(previousTop>(currentBottom+3))){previousTop=currentTop;}else{tick.style.opacity=0;}});yAxis[0][0].style.opacity=1;},updateContents_(){if(this.textHeightPx_===0){this.textHeightPx_=tr.ui.b.getSVGTextSize(this,'Ay').height;}\nthis.updateScales_();super.updateContents_();const chartAreaSel=d3.select(this.chartAreaElement);this.updateXAxis_(chartAreaSel.select('.x.axis'));this.updateYAxis_(chartAreaSel.select('.y.axis'));for(const child of Array.from(this.querySelectorAll('.axis path, .axis line'))){child.style.fill='none';child.style.shapeRendering='crispEdges';child.style.stroke='black';}\nthis.updateBrushContents_(chartAreaSel.select('#brushes'));this.updateDataContents_(chartAreaSel.select('#series'));},updateDataContents_(seriesSel){throw new Error('Not implemented');},getDataBySeriesKey_(){const dataBySeriesKey={};for(const[key,series]of this.seriesByKey_){dataBySeriesKey[key]=[];}\nthis.data_.forEach(function(multiSeriesDatum,index){const x=this.getXForDatum_(multiSeriesDatum,index);d3.keys(multiSeriesDatum).forEach(function(seriesKey){if(seriesKey==='x')return;if(multiSeriesDatum[seriesKey]===undefined)return;if(!this.isDatumFieldSeries_(seriesKey))return;const singleSeriesDatum={x};singleSeriesDatum[seriesKey]=multiSeriesDatum[seriesKey];dataBySeriesKey[seriesKey].push(singleSeriesDatum);},this);},this);return dataBySeriesKey;},getChartPointAtClientPoint_(clientPoint){const rect=this.getBoundingClientRect();return{x:clientPoint.x-rect.left-this.margin.left,y:clientPoint.y-rect.top-this.margin.top};},getDataPointAtChartPoint_(chartPoint){return{x:tr.b.math.clamp(this.xScale_.invert(chartPoint.x),this.xScale_.domain()[0],this.xScale_.domain()[1]),y:tr.b.math.clamp(this.yScale_.invert(chartPoint.y),this.yScale_.domain()[0],this.yScale_.domain()[1])};},getDataPointAtClientPoint_(clientX,clientY){const chartPoint=this.getChartPointAtClientPoint_({x:clientX,y:clientY});return this.getDataPointAtChartPoint_(chartPoint);},prepareDataEvent_(mouseEvent,dataEvent){const dataPoint=this.getDataPointAtClientPoint_(mouseEvent.clientX,mouseEvent.clientY);dataEvent.x=dataPoint.x;dataEvent.y=dataPoint.y;},onMouseDown_(mouseEvent){tr.ui.b.trackMouseMovesUntilMouseUp(this.onMouseMove_.bind(this,mouseEvent.button),this.onMouseUp_.bind(this,mouseEvent.button));mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mousedown');dataEvent.button=mouseEvent.button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseMove_(button,mouseEvent){if(mouseEvent.buttons!==undefined){mouseEvent.preventDefault();mouseEvent.stopPropagation();}\nconst dataEvent=new tr.b.Event('item-mousemove');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseUp_(button,mouseEvent){mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mouseup');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(213, 236, 229)');}}};return{ChartBase2D,};});'use strict';tr.exportTo('tr.ui.b',function(){const ChartBase2D=tr.ui.b.ChartBase2D;const ChartBase2DBrushX=tr.ui.b.define('chart-base-2d-brush-1d',ChartBase2D);ChartBase2DBrushX.prototype={__proto__:ChartBase2D.prototype,decorate(){super.decorate();this.brushedRange_=new tr.b.math.Range();},set brushedRange(range){this.brushedRange_.reset();this.brushedRange_.addRange(range);this.updateContents_();},get brushedRange(){return tr.b.math.Range.fromDict(this.brushedRange_.toJSON());},computeBrushRangeFromIndices(indexA,indexB){indexA=tr.b.math.clamp(indexA,0,this.data_.length-1);indexB=tr.b.math.clamp(indexB,0,this.data_.length-1);const leftIndex=Math.min(indexA,indexB);const rightIndex=Math.max(indexA,indexB);const brushRange=new tr.b.math.Range();brushRange.addValue(this.getXForDatum_(this.data_[leftIndex],leftIndex)-\nthis.getSampleWidth_(this.data_,leftIndex,true));brushRange.addValue(this.getXForDatum_(this.data_[rightIndex],rightIndex)+\nthis.getSampleWidth_(this.data_,rightIndex,false));return brushRange;},getDataIndex_(dataX){if(this.data.length===0)return undefined;const bisect=d3.bisector(this.getXForDatum_.bind(this)).right;return bisect(this.data_,dataX)-1;},prepareDataEvent_(mouseEvent,dataEvent){ChartBase2D.prototype.prepareDataEvent_.call(this,mouseEvent,dataEvent);dataEvent.index=this.getDataIndex_(dataEvent.x);if(dataEvent.index!==undefined){dataEvent.data=this.data_[dataEvent.index];}},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();const brushes=this.brushedRange_.isEmpty?[]:[this.brushedRange_];const brushRectsSel=brushSel.selectAll('rect').data(brushes);brushRectsSel.enter().append('rect');brushRectsSel.exit().remove();this.drawBrush_(brushRectsSel);},drawBrush_(brushRectsSel){brushRectsSel.attr('x',d=>this.xScale_(d.min)).attr('y',0).attr('width',d=>this.xScale_(d.max)-this.xScale_(d.min)).attr('height',this.graphHeight).attr('fill','rgb(213, 236, 229)');}};return{ChartBase2DBrushX,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColumnChart=tr.ui.b.define('column-chart',tr.ui.b.ChartBase2DBrushX);ColumnChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.xCushion_=1;this.isStacked_=false;this.isGrouped_=false;this.enableHoverBox=true;this.displayXInHover=false;this.enableToolTip=false;this.toolTipCallBack_=()=>{};},set toolTipCallBack(callback){this.toolTipCallBack_=callback;},get toolTipCallBack(){return this.toolTipCallBack_;},set isGrouped(grouped){this.isGrouped_=grouped;if(grouped){this.getDataSeries('group').color='transparent';}\nthis.updateContents_();},get isGrouped(){return this.isGrouped_;},set isStacked(stacked){this.isStacked_=true;this.updateContents_();},get isStacked(){return this.isStacked_;},get defaultGraphHeight(){return 100;},get defaultGraphWidth(){return 10*this.data_.length;},updateScales_(){if(this.data_.length===0)return;let xDifferences=0;let currentX=undefined;let previousX=undefined;this.data_.forEach(function(datum,index){previousX=currentX;currentX=this.getXForDatum_(datum,index);if(previousX!==undefined){xDifferences+=currentX-previousX;}},this);this.xScale_.range([0,this.graphWidth]);const domain=d3.extent(this.data_,this.getXForDatum_.bind(this));if(this.data_.length>1){this.xCushion_=xDifferences/(this.data_.length-1);}\nthis.xScale_.domain([domain[0],domain[1]+this.xCushion_]);this.yScale_.range([this.graphHeight,0]);this.yScale_.domain(this.getYScaleDomain_(this.dataRange.min,this.dataRange.max));},updateDataRange_(){if(!this.isStacked){super.updateDataRange_();return;}\nthis.autoDataRange_.reset();this.autoDataRange_.addValue(0);for(const datum of this.data_){let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined){continue;}else if(this.isGrouped&&key==='group'){continue;}\nsum+=datum[key];}\nthis.autoDataRange_.addValue(sum);}},getStackedRectsForDatum_(datum,index){const stacks=[];let bottom=this.yScale_.range()[0];let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}else if(this.isGrouped&&key==='group'){continue;}\nsum+=this.dataRange.clamp(datum[key]);const heightPx=bottom-this.yScale_(sum);bottom-=heightPx;stacks.push({key,value:datum[key],color:this.getDataSeries(key).color,heightPx,topPx:bottom,underflow:sum<this.dataRange.min,overflow:sum>this.dataRange.max,});}\nreturn stacks;},getRectsForDatum_(datum,index){if(this.isStacked){return this.getStackedRectsForDatum_(datum,index);}\nconst stacks=[];for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}\nconst clampedValue=this.dataRange.clamp(datum[key]);const topPx=this.yScale_(Math.max(clampedValue,this.getYScaleMin_()));stacks.push({key,value:datum[key],topPx,heightPx:this.yScale_.range()[0]-topPx,color:this.getDataSeries(key).color,underflow:datum[key]<this.dataRange.min,overflow:datum[key]>this.dataRange.max,});}\nstacks.sort(function(a,b){return b.topPx-a.topPx;});return stacks;},drawToolTip_(rect){if(!this.enableToolTip)return;const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.tooltip').remove();const labelText='View Breakdown';const labelWidth=tr.ui.b.getSVGTextSize(this.chartAreaElement,labelText).width+5;const labelHeight=this.textHeightPx_;const toolTipLeftPx=rect.leftPx+(rect.widthPx/2);const toolTipTopPx=rect.topPx;chartAreaSel.append('rect').attr('class','tooltip').attr('fill','white').attr('opacity',0.8).attr('stroke','black').attr('x',toolTipLeftPx).attr('y',toolTipTopPx).attr('width',labelWidth+5).attr('height',labelHeight+10);chartAreaSel.append('text').style('cursor','pointer').attr('class','tooltip').on('mousedown',()=>this.toolTipCallBack_(rect)).attr('fill','blue').attr('x',toolTipLeftPx+4).attr('y',toolTipTopPx+labelHeight).attr('text-decoration','underline').text(labelText);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox)return;const seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width+5;keyHeightPx=this.textHeightPx_;}\nlet xLabelWidthPx=0;let xLabelHeightPx=0;if(this.displayXInHover){xLabelWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.x).width+5;xLabelHeightPx=this.textHeightPx_;}\nlet groupWidthPx=0;let groupHeightPx=0;if(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width+5;groupHeightPx=this.textHeightPx_;}\nlet value=rect.value;if(this.unit)value=this.unit.format(value);const valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,value).width+5;const valueHeightPx=this.textHeightPx_;const hoverWidthPx=Math.max(keyWidthPx,valueWidthPx,xLabelWidthPx,groupWidthPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);const hoverHeightPx=keyHeightPx+valueHeightPx+\nxLabelHeightPx+groupHeightPx+2;const topOffSetPx=this.isGrouped?36:12;let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-\nhoverHeightPx-topOffSetPx);chartAreaSel.append('rect').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill','white').attr('stroke','black').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',hoverHeightPx);if(seriesKeys.length>1&&!this.isGrouped){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-2).text(rect.key);}\nif(this.displayXInHover){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xLabelHeightPx-2).text(rect.datum.x);}\nif(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+\nxLabelHeightPx+groupHeightPx-2).text(rect.datum.group);}\nchartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+hoverHeightPx-2).text(value);},clearHoverValueBox_(rect){const event=window.event;if(event.relatedTarget&&Array.from(event.relatedTarget.classList).includes('hover')){return;}\nconst rectHoverEvent=new tr.b.Event('rect-mouseleave');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);d3.select(this.chartAreaElement).selectAll('.hover').remove();},drawRect_(rect,sel){sel=sel.data([rect]);sel.enter().append('rect').attr('fill',rect.color).attr('x',rect.leftPx).attr('y',rect.topPx).attr('width',rect.widthPx).attr('height',rect.heightPx).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawUnderflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',this.graphHeight).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',0);sel.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const chartAreaSel=d3.select(this.chartAreaElement);const seriesKeys=[...this.seriesByKey_.keys()];const rectsSel=dataSel.selectAll('path');this.data_.forEach(function(datum,index){const currentX=this.getXForDatum_(datum,index);let width=undefined;if(index<(this.data_.length-1)){const nextX=this.getXForDatum_(this.data_[index+1],index+1);width=nextX-currentX;}else{width=this.xCushion_;}\nfor(const rect of this.getRectsForDatum_(datum,index)){rect.datum=datum;rect.index=index;rect.leftPx=this.xScale_(currentX);rect.rightPx=this.xScale_(currentX+width);rect.widthPx=rect.rightPx-rect.leftPx;this.drawRect_(rect,rectsSel);if(rect.underflow){this.drawUnderflow_(rect,rectsSel);}\nif(rect.overflow){this.drawOverflow_(rect,rectsSel);}}},this);}};return{ColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.define('line-chart',tr.ui.b.ChartBase2DBrushX);LineChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.enableHoverBox=true;this.displayXInHover=false;},get defaultGraphWidth(){return 20*this.data_.length;},get defaultGraphHeight(){return 100;},drawHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.drawHoverValueBox_.call(this,circle);},clearHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.clearHoverValueBox_.call(this,circle);},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const dataBySeriesKey=this.getDataBySeriesKey_();const seriesKeys=[...this.seriesByKey_.keys()];const pathsSel=dataSel.selectAll('path').data(seriesKeys);pathsSel.enter().append('path').style('fill','none').style('stroke-width','1.5px').style('stroke',key=>this.getDataSeries(key).color).attr('d',key=>{const line=d3.svg.line().x(d=>this.xScale_(d.x)).y(d=>this.yScale_(this.dataRange.clamp(d[key])));return line(dataBySeriesKey[key]);});pathsSel.exit().remove();if(this.enableHoverBox){for(let index=0;index<this.data_.length;++index){const datum=this.data_[index];const x=this.getXForDatum_(datum,index);for(const[key,value]of Object.entries(datum)){if(key==='x')continue;if(value===undefined)continue;const color=this.getDataSeries(key).color;const circle=document.createElementNS('http://www.w3.org/2000/svg','circle');circle.setAttribute('cx',this.xScale_(x));circle.setAttribute('cy',this.yScale_(this.dataRange.clamp(value)));circle.setAttribute('r',5);circle.style.fill=color;circle.datum=datum;circle.key=key;circle.value=datum[key];circle.leftPx=this.xScale_(x);circle.widthPx=0;circle.color=color;circle.topPx=this.yScale_(this.dataRange.clamp(value));circle.heightPx=0;circle.addEventListener('mouseenter',()=>this.drawHoverValueBox_(circle));circle.addEventListener('mouseleave',()=>this.clearHoverValueBox_(circle));dataSel[0][0].appendChild(circle);}}}}};return{LineChart,};});'use strict';Polymer({is:'tr-ui-e-s-input-latency-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.rangeOfInterest_=new tr.b.math.Range();this.frametimeType_=tr.model.helpers.IMPL_FRAMETIME_TYPE;this.latencyChart_=undefined;this.frametimeChart_=undefined;this.selectedProcessId_=undefined;this.mouseDownIndex_=undefined;this.curMouseIndex_=undefined;},get model(){return this.model_;},set model(model){this.model_=model;if(this.model_){this.modelHelper_=this.model_.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);}else{this.modelHelper_=undefined;}\nthis.updateToolbar_();this.updateContents_();},get frametimeType(){return this.frametimeType_;},set frametimeType(type){if(this.frametimeType_===type)return;this.frametimeType_=type;this.updateContents_();},get selectedProcessId(){return this.selectedProcessId_;},set selectedProcessId(process){if(this.selectedProcessId_===process)return;this.selectedProcessId_=process;this.updateContents_();},set selection(selection){if(this.latencyChart_===undefined)return;this.latencyChart_.brushedRange=selection.bounds;},setBrushedIndices(mouseDownIndex,curIndex){this.mouseDownIndex_=mouseDownIndex;this.curMouseIndex_=curIndex;this.updateBrushedRange_();},updateBrushedRange_(){if(this.latencyChart_===undefined)return;let r=new tr.b.math.Range();if(this.mouseDownIndex_===undefined){this.latencyChart_.brushedRange=r;return;}\nr=this.latencyChart_.computeBrushRangeFromIndices(this.mouseDownIndex_,this.curMouseIndex_);this.latencyChart_.brushedRange=r;let latencySlices=[];for(const thread of this.model_.getAllThreads()){for(const event of thread.getDescendantEvents()){if(event.title.indexOf('InputLatency:')===0){latencySlices.push(event);}}}\nlatencySlices=tr.model.helpers.getSlicesIntersectingRange(r,latencySlices);const event=new tr.model.RequestSelectionChangeEvent();event.selection=new tr.model.EventSet(latencySlices);this.latencyChart_.dispatchEvent(event);},registerMouseEventForLatencyChart_(){this.latencyChart_.addEventListener('item-mousedown',function(e){this.mouseDownIndex_=e.index;this.curMouseIndex_=e.index;this.updateBrushedRange_();}.bind(this));this.latencyChart_.addEventListener('item-mousemove',function(e){if(e.button===undefined)return;this.curMouseIndex_=e.index;this.updateBrushedRange_();}.bind(this));this.latencyChart_.addEventListener('item-mouseup',function(e){this.curMouseIndex=e.index;this.updateBrushedRange_();}.bind(this));},updateToolbar_(){const browserProcess=this.modelHelper_.browserProcess;const labels=[];if(browserProcess!==undefined){const labelStr='Browser: '+browserProcess.pid;labels.push({label:labelStr,value:browserProcess.pid});}\nfor(const rendererHelper of\nObject.values(this.modelHelper_.rendererHelpers)){const rendererProcess=rendererHelper.process;const labelStr='Renderer: '+rendererProcess.userFriendlyName;labels.push({label:labelStr,value:rendererProcess.userFriendlyName});}\nif(labels.length===0)return;this.selectedProcessId_=labels[0].value;const toolbarEl=this.$.toolbar;Polymer.dom(toolbarEl).appendChild(tr.ui.b.createSelector(this,'frametimeType','inputLatencySidePanel.frametimeType',this.frametimeType_,[{label:'Main Thread Frame Times',value:tr.model.helpers.MAIN_FRAMETIME_TYPE},{label:'Impl Thread Frame Times',value:tr.model.helpers.IMPL_FRAMETIME_TYPE}]));Polymer.dom(toolbarEl).appendChild(tr.ui.b.createSelector(this,'selectedProcessId','inputLatencySidePanel.selectedProcessId',this.selectedProcessId_,labels));},get currentRangeOfInterest(){if(this.rangeOfInterest_.isEmpty){return this.model_.bounds;}\nreturn this.rangeOfInterest_;},createLatencyLineChart(data,title,parentNode){const chart=new tr.ui.b.LineChart();Polymer.dom(parentNode).appendChild(chart);let width=600;if(document.body.clientWidth!==undefined){width=document.body.clientWidth*0.5;}\nchart.graphWidth=width;chart.chartTitle=title;chart.data=data;return chart;},updateContents_(){const resultArea=this.$.result_area;this.latencyChart_=undefined;this.frametimeChart_=undefined;Polymer.dom(resultArea).textContent='';if(this.modelHelper_===undefined)return;const rangeOfInterest=this.currentRangeOfInterest;let chromeProcess;if(this.modelHelper_.rendererHelpers[this.selectedProcessId_]){chromeProcess=this.modelHelper_.rendererHelpers[this.selectedProcessId_];}else{chromeProcess=this.modelHelper_.browserHelper;}\nconst frameEvents=chromeProcess.getFrameEventsInRange(this.frametimeType,rangeOfInterest);const frametimeData=tr.model.helpers.getFrametimeDataFromEvents(frameEvents);const averageFrametime=tr.b.math.Statistics.mean(frametimeData,d=>d.frametime);const latencyEvents=this.modelHelper_.browserHelper.getLatencyEventsInRange(rangeOfInterest);const latencyData=[];latencyEvents.forEach(function(event){if(event.inputLatency===undefined)return;latencyData.push({x:event.start,latency:event.inputLatency/1000});});const averageLatency=tr.b.math.Statistics.mean(latencyData,function(d){return d.latency;});const latencySummaryText=document.createElement('div');Polymer.dom(latencySummaryText).appendChild(tr.ui.b.createSpan({textContent:'Average Latency '+averageLatency+' ms',bold:true}));Polymer.dom(resultArea).appendChild(latencySummaryText);const frametimeSummaryText=document.createElement('div');Polymer.dom(frametimeSummaryText).appendChild(tr.ui.b.createSpan({textContent:'Average Frame Time '+averageFrametime+' ms',bold:true}));Polymer.dom(resultArea).appendChild(frametimeSummaryText);if(latencyData.length!==0){this.latencyChart_=this.createLatencyLineChart(latencyData,'Latency Over Time',resultArea);this.registerMouseEventForLatencyChart_();}\nif(frametimeData.length!==0){this.frametimeChart_=this.createLatencyLineChart(frametimeData,'Frame Times',resultArea);}},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;this.updateContents_();},supportsModel(m){if(m===undefined){return{supported:false,reason:'Unknown tracing model'};}\nif(!tr.model.helpers.ChromeModelHelper.supportsModel(m)){return{supported:false,reason:'No Chrome browser or renderer process found'};}\nconst modelHelper=m.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper.browserHelper&&modelHelper.browserHelper.hasLatencyEvents){return{supported:true};}\nreturn{supported:false,reason:'No InputLatency events trace. Consider enabling '+'benchmark\" and \"input\" category when recording the trace'};},get textLabel(){return'Input Latency';}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-input-latency-side-panel');});'use strict';tr.exportTo('tr.e.system_stats',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function SystemStatsSnapshot(objectInstance,ts,args){ObjectSnapshot.apply(this,arguments);this.objectInstance=objectInstance;this.ts=ts;this.args=args;this.stats_=args;}\nSystemStatsSnapshot.prototype={__proto__:ObjectSnapshot.prototype,initialize(){if(this.args.length===0){throw new Error('No system stats snapshot data.');}\nthis.stats_=this.args;},getStats(){return this.stats_;},setStats(stats){this.stats_=stats;}};ObjectSnapshot.subTypes.register(SystemStatsSnapshot,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsSnapshot,};});'use strict';tr.exportTo('tr.ui.b',function(){const constants={HEADING_WIDTH:250};return{constants,};});'use strict';Polymer({is:'tr-ui-b-heading',DOWN_ARROW:String.fromCharCode(0x25BE),RIGHT_ARROW:String.fromCharCode(0x25B8),ready(viewport){this.style.width=(tr.ui.b.constants.HEADING_WIDTH-6)+'px';this.heading_='';this.expanded_=true;this.arrowVisible_=false;this.selectionGenerator_=undefined;this.updateContents_();},get heading(){return this.heading_;},set heading(text){if(this.heading_===text)return;this.heading_=text;this.updateContents_();},set arrowVisible(val){if(this.arrowVisible_===val)return;this.arrowVisible_=!!val;this.updateContents_();},set tooltip(text){this.$.heading.title=text;},set selectionGenerator(generator){if(this.selectionGenerator_===generator)return;this.selectionGenerator_=generator;this.updateContents_();},get expanded(){return this.expanded_;},set expanded(expanded){if(this.expanded_===expanded)return;this.expanded_=!!expanded;this.updateContents_();},onHeadingDivClicked_(){this.dispatchEvent(new tr.b.Event('heading-clicked',true));},updateContents_(){if(this.arrowVisible_){this.$.arrow.style.display='';}else{this.$.arrow.style.display='none';this.$.heading.style.display=this.expanded_?'':'none';}\nif(this.arrowVisible_){Polymer.dom(this.$.arrow).textContent=this.expanded_?this.DOWN_ARROW:this.RIGHT_ARROW;}\nthis.$.link.style.display='none';this.$.heading_content.style.display='none';if(this.selectionGenerator_){this.$.link.style.display='inline-block';this.$.link.selection=this.selectionGenerator_;Polymer.dom(this.$.link).textContent=this.heading_;}else{this.$.heading_content.style.display='inline-block';Polymer.dom(this.$.heading_content).textContent=this.heading_;}}});'use strict';tr.exportTo('tr.ui.tracks',function(){const Track=tr.ui.b.define('track',tr.ui.b.ContainerThatDecoratesItsChildren);Track.prototype={__proto__:tr.ui.b.ContainerThatDecoratesItsChildren.prototype,decorate(viewport){tr.ui.b.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);if(viewport===undefined){throw new Error('viewport is required when creating a Track.');}\nthis.viewport_=viewport;Polymer.dom(this).classList.add('track');},get viewport(){return this.viewport_;},get drawingContainer(){if(this instanceof tr.ui.tracks.DrawingContainer)return this;let cur=this.parentElement;while(cur){if(cur instanceof tr.ui.tracks.DrawingContainer)return cur;cur=cur.parentElement;}\nreturn undefined;},get eventContainer(){},invalidateDrawingContainer(){const dc=this.drawingContainer;if(dc)dc.invalidate();},context(){if(!Polymer.dom(this).parentNode)return undefined;if(!Polymer.dom(this).parentNode.context){throw new Error('Parent container does not support context() method.');}\nreturn Polymer.dom(this).parentNode.context();},decorateChild_(childTrack){},undecorateChild_(childTrack){if(childTrack.detach){childTrack.detach();}},updateContents_(){},drawTrack(type){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;this.draw(type,viewLWorld,viewRWorld,viewHeight);ctx.restore();},draw(type,viewLWorld,viewRWorld,viewHeight){},addEventsToTrackMap(eventToTrackMap){},addContainersToTrackMap(containerToTrackMap){},addIntersectingEventsInRangeToSelection(loVX,hiVX,loVY,hiVY,selection){const pixelRatio=window.devicePixelRatio||1;const dt=this.viewport.currentDisplayTransform;const viewPixWidthWorld=dt.xViewVectorToWorld(1);const loWX=dt.xViewToWorld(loVX*pixelRatio);const hiWX=dt.xViewToWorld(hiVX*pixelRatio);const clientRect=this.getBoundingClientRect();const a=Math.max(loVY,clientRect.top);const b=Math.min(hiVY,clientRect.bottom);if(a>b)return;this.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){},addClosestInstantEventToSelection(instantEvents,worldX,worldMaxDist,selection){const instantEvent=tr.b.findClosestElementInSortedArray(instantEvents,function(x){return x.start;},worldX,worldMaxDist);if(!instantEvent)return;selection.push(instantEvent);}};return{Track,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SelectionState=tr.model.SelectionState;const EventPresenter=tr.ui.b.EventPresenter;const ObjectInstanceTrack=tr.ui.b.define('object-instance-track',tr.ui.tracks.Track);ObjectInstanceTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('object-instance-track');this.objectInstances_=[];this.objectSnapshots_=[];this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get objectInstances(){return this.objectInstances_;},set objectInstances(objectInstances){if(!objectInstances||objectInstances.length===0){this.heading='';this.objectInstances_=[];this.objectSnapshots_=[];return;}\nthis.heading=objectInstances[0].baseTypeName;this.objectInstances_=objectInstances;this.objectSnapshots_=[];this.objectInstances_.forEach(function(instance){this.objectSnapshots_.push.apply(this.objectSnapshots_,instance.snapshots);},this);this.objectSnapshots_.sort(function(a,b){return a.ts-b.ts;});},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},get snapshotRadiusView(){return 7*(window.devicePixelRatio||1);},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawObjectInstances_(viewLWorld,viewRWorld);break;}},drawObjectInstances_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const height=bounds.height*pixelRatio;const halfHeight=height*0.5;const twoPi=Math.PI*2;const dt=this.viewport.currentDisplayTransform;const snapshotRadiusView=this.snapshotRadiusView;const snapshotRadiusWorld=dt.xViewVectorToWorld(height);const objectInstances=this.objectInstances_;let loI=tr.b.findLowIndexInSortedArray(objectInstances,function(instance){return instance.deletionTs;},viewLWorld);ctx.save();ctx.strokeStyle='rgb(0,0,0)';for(let i=loI;i<objectInstances.length;++i){const instance=objectInstances[i];const x=instance.creationTs;if(x>viewRWorld)break;const right=instance.deletionTs===Number.MAX_VALUE?viewRWorld:instance.deletionTs;const xView=dt.xWorldToView(x);const widthView=dt.xWorldVectorToView(right-x);ctx.fillStyle=EventPresenter.getObjectInstanceColor(instance);ctx.fillRect(xView,pixelRatio,widthView,height-2*pixelRatio);}\nctx.restore();const objectSnapshots=this.objectSnapshots_;loI=tr.b.findLowIndexInSortedArray(objectSnapshots,function(snapshot){return snapshot.ts+snapshotRadiusWorld;},viewLWorld);for(let i=loI;i<objectSnapshots.length;++i){const snapshot=objectSnapshots[i];const x=snapshot.ts;if(x-snapshotRadiusWorld>viewRWorld)break;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getObjectSnapshotColor(snapshot);ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView,0,twoPi);ctx.fill();if(snapshot.selected){ctx.lineWidth=5;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView-1,0,twoPi);ctx.lineWidth=2;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();}}\nctx.lineWidth=1;let selectionState=SelectionState.NONE;if(objectInstances.length&&objectInstances[0].selectionState===SelectionState.DIMMED){selectionState=SelectionState.DIMMED;}\nif(selectionState===SelectionState.DIMMED){const width=bounds.width*pixelRatio;ctx.fillStyle='rgba(255,255,255,0.5)';ctx.fillRect(0,0,width,height);ctx.restore();}},addEventsToTrackMap(eventToTrackMap){if(this.objectInstance_!==undefined){this.objectInstance_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);}\nif(this.objectSnapshots_!==undefined){this.objectSnapshots_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);}},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){let foundSnapshot=false;function onSnapshot(snapshot){selection.push(snapshot);foundSnapshot=true;}\nconst snapshotRadiusView=this.snapshotRadiusView;const snapshotRadiusWorld=viewPixWidthWorld*snapshotRadiusView;tr.b.iterateOverIntersectingIntervals(this.objectSnapshots_,function(x){return x.ts-snapshotRadiusWorld;},function(x){return 2*snapshotRadiusWorld;},loWX,hiWX,onSnapshot);if(foundSnapshot)return;tr.b.iterateOverIntersectingIntervals(this.objectInstances_,function(x){return x.creationTs;},function(x){return x.deletionTs-x.creationTs;},loWX,hiWX,(value)=>{selection.push(value);});},addEventNearToProvidedEventToSelection(event,offset,selection){let events;if(event instanceof tr.model.ObjectSnapshot){events=this.objectSnapshots_;}else if(event instanceof tr.model.ObjectInstance){events=this.objectInstances_;}else{throw new Error('Unrecognized event');}\nconst index=events.indexOf(event);const newIndex=index+offset;if(newIndex>=0&&newIndex<events.length){selection.push(events[newIndex]);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const snapshot=tr.b.findClosestElementInSortedArray(this.objectSnapshots_,function(x){return x.ts;},worldX,worldMaxDist);if(!snapshot)return;selection.push(snapshot);}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);tr.b.decorateExtensionRegistry(ObjectInstanceTrack,options);return{ObjectInstanceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const StackedBarsTrack=tr.ui.b.define('stacked-bars-track',tr.ui.tracks.Track);StackedBarsTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('stacked-bars-track');this.objectInstance_=null;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},addEventsToTrackMap(eventToTrackMap){const objectSnapshots=this.objectInstance_.snapshots;objectSnapshots.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onSnapshot(snapshot){selection.push(snapshot);}\nconst snapshots=this.objectInstance_.snapshots;const maxBounds=this.objectInstance_.parent.model.bounds.max;tr.b.iterateOverIntersectingIntervals(snapshots,function(x){return x.ts;},function(x,i){if(i===snapshots.length-1){if(snapshots.length===1){return maxBounds;}\nreturn snapshots[i].ts-snapshots[i-1].ts;}\nreturn snapshots[i+1].ts-snapshots[i].ts;},loWX,hiWX,onSnapshot);},addEventNearToProvidedEventToSelection(event,offset,selection){if(!(event instanceof tr.model.ObjectSnapshot)){throw new Error('Unrecognized event');}\nconst objectSnapshots=this.objectInstance_.snapshots;const index=objectSnapshots.indexOf(event);const newIndex=index+offset;if(newIndex>=0&&newIndex<objectSnapshots.length){selection.push(objectSnapshots[newIndex]);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const snapshot=tr.b.findClosestElementInSortedArray(this.objectInstance_.snapshots,function(x){return x.ts;},worldX,worldMaxDist);if(!snapshot)return;selection.push(snapshot);}};return{StackedBarsTrack,};});'use strict';tr.exportTo('tr.ui.e.system_stats',function(){const EventPresenter=tr.ui.b.EventPresenter;let statCount;const excludedStats={'meminfo':{'pswpin':0,'pswpout':0,'pgmajfault':0},'diskinfo':{'io':0,'io_time':0,'read_time':0,'reads':0,'reads_merged':0,'sectors_read':0,'sectors_written':0,'weighted_io_time':0,'write_time':0,'writes':0,'writes_merged':0},'swapinfo':{},'perfinfo':{'idle_time':0,'read_transfer_count':0,'write_transfer_count':0,'other_transfer_count':0,'read_operation_count':0,'write_operation_count':0,'other_operation_count':0,'pagefile_pages_written':0,'pagefile_pages_write_ios':0,'available_pages':0,'pages_read':0,'page_read_ios':0}};const SystemStatsInstanceTrack=tr.ui.b.define('tr-ui-e-system-stats-instance-track',tr.ui.tracks.StackedBarsTrack);const kPageSizeWindows=4096;SystemStatsInstanceTrack.prototype={__proto__:tr.ui.tracks.StackedBarsTrack.prototype,decorate(viewport){tr.ui.tracks.StackedBarsTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('tr-ui-e-system-stats-instance-track');this.objectInstance_=null;},set objectInstances(objectInstances){if(!objectInstances){this.objectInstance_=[];return;}\nif(objectInstances.length!==1){throw new Error('Bad object instance count.');}\nthis.objectInstance_=objectInstances[0];if(this.objectInstance_!==null){this.computeRates_(this.objectInstance_.snapshots);this.maxStats_=this.computeMaxStats_(this.objectInstance_.snapshots);}},computeRates_(snapshots){for(let i=0;i<snapshots.length;i++){const snapshot=snapshots[i];const stats=snapshot.getStats();let prevSnapshot;if(i===0){prevSnapshot=snapshots[0];}else{prevSnapshot=snapshots[i-1];}\nconst prevStats=prevSnapshot.getStats();let timeIntervalSeconds=(snapshot.ts-prevSnapshot.ts)/1000;if(timeIntervalSeconds===0){timeIntervalSeconds=1;}\nthis.computeRatesRecursive_(prevStats,stats,timeIntervalSeconds);}},computeRatesRecursive_(prevStats,stats,timeIntervalSeconds){for(const statName in stats){if(stats[statName]instanceof Object){this.computeRatesRecursive_(prevStats[statName],stats[statName],timeIntervalSeconds);}else{if(statName==='sectors_read'){stats.bytes_read_per_sec=(stats.sectors_read-\nprevStats.sectors_read)*512/timeIntervalSeconds;}\nif(statName==='sectors_written'){stats.bytes_written_per_sec=(stats.sectors_written-\nprevStats.sectors_written)*512/timeIntervalSeconds;}\nif(statName==='pgmajfault'){stats.pgmajfault_per_sec=(stats.pgmajfault-\nprevStats.pgmajfault)/timeIntervalSeconds;}\nif(statName==='pswpin'){stats.bytes_swpin_per_sec=(stats.pswpin-\nprevStats.pswpin)*1000/timeIntervalSeconds;}\nif(statName==='pswpout'){stats.bytes_swpout_per_sec=(stats.pswpout-\nprevStats.pswpout)*1000/timeIntervalSeconds;}\nif(statName==='idle_time'){const units=tr.b.convertUnit(100.,tr.b.UnitScale.TIME.NANO_SEC,tr.b.UnitScale.TIME.SEC);const idleTile=(stats.idle_time-prevStats.idle_time)*units;stats.idle_time_per_sec=idleTile/timeIntervalSeconds;}\nif(statName==='read_transfer_count'){const bytesRead=stats.read_transfer_count-\nprevStats.read_transfer_count;stats.bytes_read_per_sec=bytesRead/timeIntervalSeconds;}\nif(statName==='write_transfer_count'){const bytesWritten=stats.write_transfer_count-\nprevStats.write_transfer_count;stats.bytes_written_per_sec=bytesWritten/timeIntervalSeconds;}\nif(statName==='other_transfer_count'){const bytesTransfer=stats.other_transfer_count-\nprevStats.other_transfer_count;stats.bytes_other_per_sec=bytesTransfer/timeIntervalSeconds;}\nif(statName==='read_operation_count'){const readOperation=stats.read_operation_count-\nprevStats.read_operation_count;stats.read_operation_per_sec=readOperation/timeIntervalSeconds;}\nif(statName==='write_operation_count'){const writeOperation=stats.write_operation_count-\nprevStats.write_operation_count;stats.write_operation_per_sec=writeOperation/timeIntervalSeconds;}\nif(statName==='other_operation_count'){const otherOperation=stats.other_operation_count-\nprevStats.other_operation_count;stats.other_operation_per_sec=otherOperation/timeIntervalSeconds;}\nif(statName==='pagefile_pages_written'){const pageFileBytesWritten=(stats.pagefile_pages_written-\nprevStats.pagefile_pages_written)*kPageSizeWindows;stats.pagefile_bytes_written_per_sec=pageFileBytesWritten/timeIntervalSeconds;}\nif(statName==='pagefile_pages_write_ios'){const pagefileWriteOperation=stats.pagefile_pages_write_ios-\nprevStats.pagefile_pages_write_ios;stats.pagefile_write_operation_per_sec=pagefileWriteOperation/timeIntervalSeconds;}\nif(statName==='available_pages'){stats.available_pages_in_bytes=stats.available_pages*kPageSizeWindows;}\nif(statName==='pages_read'){const pagesBytesRead=(stats.pages_read-prevStats.pages_read)*kPageSizeWindows;stats.bytes_read_per_sec=pagesBytesRead/timeIntervalSeconds;}\nif(statName==='page_read_ios'){const pagesBytesReadOperations=stats.page_read_ios-prevStats.page_read_ios;stats.pagefile_write_operation_per_sec=pagesBytesReadOperations/timeIntervalSeconds;}}}},computeMaxStats_(snapshots){const maxStats={};statCount=0;for(let i=0;i<snapshots.length;i++){const snapshot=snapshots[i];const stats=snapshot.getStats();this.computeMaxStatsRecursive_(stats,maxStats,excludedStats);}\nreturn maxStats;},computeMaxStatsRecursive_(stats,maxStats,excludedStats){for(const statName in stats){if(stats[statName]instanceof Object){if(!(statName in maxStats)){maxStats[statName]={};}\nlet excludedNested;if(excludedStats&&statName in excludedStats){excludedNested=excludedStats[statName];}else{excludedNested=null;}\nthis.computeMaxStatsRecursive_(stats[statName],maxStats[statName],excludedNested);}else{if(excludedStats&&statName in excludedStats){continue;}\nif(!(statName in maxStats)){maxStats[statName]=0;statCount++;}\nif(stats[statName]>maxStats[statName]){maxStats[statName]=stats[statName];}}}},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawStatBars_(viewLWorld,viewRWorld);break;}},drawStatBars_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const width=bounds.width*pixelRatio;const height=(bounds.height*pixelRatio)/statCount;const vp=this.viewport.currentDisplayTransform;const maxStats=this.maxStats_;const objectSnapshots=this.objectInstance_.snapshots;let lowIndex=tr.b.findLowIndexInSortedArray(objectSnapshots,function(snapshot){return snapshot.ts;},viewLWorld);if(lowIndex>0)lowIndex-=1;for(let i=lowIndex;i<objectSnapshots.length;++i){const snapshot=objectSnapshots[i];const trace=snapshot.getStats();const currentY=height;const left=snapshot.ts;if(left>viewRWorld)break;let leftView=vp.xWorldToView(left);if(leftView<0)leftView=0;let right;if(i!==objectSnapshots.length-1){right=objectSnapshots[i+1].ts;}else{if(objectSnapshots.length>1){right=objectSnapshots[i].ts+(objectSnapshots[i].ts-\nobjectSnapshots[i-1].ts);}else{right=this.objectInstance_.parent.model.bounds.max;}}\nlet rightView=vp.xWorldToView(right);if(rightView>width){rightView=width;}\nleftView=Math.floor(leftView);rightView=Math.floor(rightView);this.drawStatBarsRecursive_(snapshot,leftView,rightView,height,trace,maxStats,currentY);if(i===lowIndex){this.drawStatNames_(leftView,height,currentY,'',maxStats);}}\nctx.lineWidth=1;},drawStatBarsRecursive_(snapshot,leftView,rightView,height,stats,maxStats,currentY){const ctx=this.context();for(const statName in maxStats){if(stats[statName]instanceof Object){currentY=this.drawStatBarsRecursive_(snapshot,leftView,rightView,height,stats[statName],maxStats[statName],currentY);}else{const maxStat=maxStats[statName];ctx.fillStyle=EventPresenter.getBarSnapshotColor(snapshot,Math.round(currentY/height));let barHeight;if(maxStat>0){barHeight=height*Math.max(stats[statName],0)/maxStat;}else{barHeight=0;}\nctx.fillRect(leftView,currentY-barHeight,Math.max(rightView-leftView,1),barHeight);currentY+=height;}}\nreturn currentY;},drawStatNames_(leftView,height,currentY,prefix,maxStats){const ctx=this.context();ctx.textAlign='end';ctx.font='12px Arial';ctx.fillStyle='#000000';for(const statName in maxStats){if(maxStats[statName]instanceof Object){currentY=this.drawStatNames_(leftView,height,currentY,statName,maxStats[statName]);}else{let fullname=statName;if(prefix!==''){fullname=prefix+' :: '+statName;}\nctx.fillText(fullname,leftView-10,currentY-height/4);currentY+=height;}}\nreturn currentY;}};tr.ui.tracks.ObjectInstanceTrack.register(SystemStatsInstanceTrack,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsInstanceTrack,};});'use strict';tr.exportTo('tr.ui.e.system_stats',function(){const SystemStatsSnapshotView=tr.ui.b.define('tr-ui-e-system-stats-snapshot-view',tr.ui.analysis.ObjectSnapshotView);SystemStatsSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-system-stats-snapshot-view');},updateContents(){const snapshot=this.objectSnapshot_;if(!snapshot||!snapshot.getStats()){Polymer.dom(this).textContent='No system stats snapshot found.';return;}\nPolymer.dom(this).textContent='';const stats=snapshot.getStats();Polymer.dom(this).appendChild(this.buildList_(stats));},isFloat(n){return typeof n==='number'&&n%1!==0;},buildList_(stats){const statList=document.createElement('ul');for(const statName in stats){const statText=document.createElement('li');Polymer.dom(statText).textContent=''+statName+': ';Polymer.dom(statList).appendChild(statText);if(stats[statName]instanceof Object){Polymer.dom(statList).appendChild(this.buildList_(stats[statName]));}else{if(this.isFloat(stats[statName])){Polymer.dom(statText).textContent+=stats[statName].toFixed(2);}else{Polymer.dom(statText).textContent+=stats[statName];}}}\nreturn statList;}};tr.ui.analysis.ObjectSnapshotView.register(SystemStatsSnapshotView,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.v8',function(){const IGNORED_ENTRIES={match:full=>full.startsWith('*CODE_AGE_')};const INSTANCE_TYPE_GROUPS={FIXED_ARRAY_TYPE:{match:full=>full.startsWith('*FIXED_ARRAY_'),realEntry:'FIXED_ARRAY_TYPE',keyToName:key=>key.slice('*FIXED_ARRAY_'.length).slice(0,-('_SUB_TYPE'.length)),nameToKey:name=>'*FIXED_ARRAY_'+name+'_SUB_TYPE'},CODE_TYPE:{match:full=>full.startsWith('*CODE_'),realEntry:'CODE_TYPE',keyToName:key=>key.slice('*CODE_'.length),nameToKey:name=>'*CODE_'+name},JS_OBJECTS:{match:full=>full.startsWith('JS_'),keyToName:key=>key,nameToKey:name=>name},Strings:{match:full=>full.endsWith('STRING_TYPE'),keyToName:key=>key,nameToKey:name=>name},Maps:{match:full=>full.startsWith('MAP_')&&full.endsWith('_TYPE'),keyToName:key=>key,nameToKey:name=>name},DescriptorArrays:{match:full=>full.endsWith('DESCRIPTOR_ARRAY_TYPE'),keyToName:key=>key,nameToKey:name=>name}};const DIFF_COLOR={GREEN:'#64DD17',RED:'#D50000'};function computePercentage(valueA,valueB){if(valueA===0)return 0;return valueA/valueB*100;}\nclass DiffEntry{constructor(originalEntry,diffEntry){this.originalEntry_=originalEntry;this.diffEntry_=diffEntry;}\nget title(){return this.diffEntry_.title;}\nget overall(){return this.diffEntry_.overall;}\nget overAllocated(){return this.diffEntry_.overAllocated;}\nget count(){return this.diffEntry_.count;}\nget overallPercent(){return this.diffEntry_.overallPercent;}\nget overAllocatedPercent(){return this.diffEntry_.overAllocatedPercent;}\nget origin(){return this.originalEntry_;}\nget diff(){return this.diffEntry_;}\nget subRows(){return this.diffEntry_.subRows;}}\nclass Entry{constructor(title,count,overall,overAllocated,histogram,overAllocatedHistogram){this.title_=title;this.overall_=overall;this.count_=count;this.overAllocated_=overAllocated;this.histogram_=histogram;this.overAllocatedHistogram_=overAllocatedHistogram;this.bucketSize_=this.histogram_.length;this.overallPercent_=100;this.overAllocatedPercent_=100;}\nget title(){return this.title_;}\nget overall(){return this.overall_;}\nget count(){return this.count_;}\nget overAllocated(){return this.overAllocated_;}\nget histogram(){return this.histogram_;}\nget overAllocatedHistogram(){return this.overAllocatedHistogram_;}\nget bucketSize(){return this.bucketSize_;}\nget overallPercent(){return this.overallPercent_;}\nset overallPercent(value){this.overallPercent_=value;}\nget overAllocatedPercent(){return this.overAllocatedPercent_;}\nset overAllocatedPercent(value){this.overAllocatedPercent_=value;}\nsetFromObject(obj){this.count_=obj.count;this.overall_=obj.overall/1024;this.overAllocated_=obj.over_allocated/1024;this.histogram_=obj.histogram;this.overAllocatedHistogram_=obj.over_allocated_histogram;}\ndiff(other){const entry=new Entry(this.title_,other.count_-this.count,other.overall_-this.overall,other.overAllocated_-this.overAllocated,[],[]);entry.overallPercent=computePercentage(entry.overall,this.overall);entry.overAllocatedPercent=computePercentage(entry.overAllocated,this.overAllocated);return new DiffEntry(this,entry);}}\nclass GroupedEntry extends Entry{constructor(title,count,overall,overAllocated,histogram,overAllocatedHistogram){super(title,count,overall,overAllocated,histogram,overAllocatedHistogram);this.histogram_.fill(0);this.overAllocatedHistogram_.fill(0);this.entries_=new Map();}\nget title(){return this.title_;}\nset title(value){this.title_=value;}\nget subRows(){return Array.from(this.entries_.values());}\ngetEntryFromTitle(title){return this.entries_.get(title);}\nadd(entry){this.count_+=entry.count;this.overall_+=entry.overall;this.overAllocated_+=entry.overAllocated;if(this.bucketSize_===entry.bucketSize){for(let i=0;i<this.bucketSize_;++i){this.histogram_[i]+=entry.histogram[i];this.overAllocatedHistogram_[i]+=entry.overAllocatedHistogram[i];}}\nthis.entries_.set(entry.title,entry);}\naccumulateUnknown(title){let unknownCount=this.count_;let unknownOverall=this.overall_;let unknownOverAllocated=this.overAllocated_;const unknownHistogram=tr.b.deepCopy(this.histogram_);const unknownOverAllocatedHistogram=tr.b.deepCopy(this.overAllocatedHistogram_);for(const entry of this.entries_.values()){unknownCount-=entry.count;unknownOverall-=entry.overall;unknownOverAllocated-=entry.overAllocated;for(let i=0;i<this.bucketSize_;++i){unknownHistogram[i]-=entry.histogram[i];unknownOverAllocatedHistogram[i]-=entry.overAllocatedHistogram[i];}}\nunknownOverAllocated=unknownOverAllocated<0?0:unknownOverAllocated;this.entries_.set(title,new Entry(title,unknownCount,unknownOverall,unknownOverAllocated,unknownHistogram,unknownOverAllocatedHistogram));}\ncalculatePercentage(){for(const entry of this.entries_.values()){entry.overallPercent=computePercentage(entry.overall,this.overall_);entry.overAllocatedPercent=computePercentage(entry.overAllocated,this.overAllocated_);if(entry instanceof GroupedEntry)entry.calculatePercentage();}}\ndiff(other){let newTitle='';if(this.title_.startsWith('Isolate')){newTitle='Total';}else{newTitle=this.title_;}\nconst result=new GroupedEntry(newTitle,0,0,0,[],[]);for(const entry of this.entries_){const otherEntry=other.getEntryFromTitle(entry[0]);if(otherEntry===undefined)continue;result.add(entry[1].diff(otherEntry));}\nresult.overallPercent=computePercentage(result.overall,this.overall);result.overAllocatedPercent=computePercentage(result.overAllocated,this.overAllocated);return new DiffEntry(this,result);}}\nfunction createSelector(targetEl,defaultValue,items,callback){const selectorEl=document.createElement('select');selectorEl.addEventListener('change',callback.bind(targetEl));const defaultOptionEl=document.createElement('option');for(let i=0;i<items.length;i++){const item=items[i];const optionEl=document.createElement('option');Polymer.dom(optionEl).textContent=item.label;optionEl.targetPropertyValue=item.value;optionEl.item=item;Polymer.dom(selectorEl).appendChild(optionEl);}\nselectorEl.__defineGetter__('selectedValue',function(v){if(selectorEl.children[selectorEl.selectedIndex]===undefined){return undefined;}\nreturn selectorEl.children[selectorEl.selectedIndex].targetPropertyValue;});selectorEl.__defineGetter__('selectedItem',function(v){if(selectorEl.children[selectorEl.selectedIndex]===undefined){return undefined;}\nreturn selectorEl.children[selectorEl.selectedIndex].item;});selectorEl.__defineSetter__('selectedValue',function(v){for(let i=0;i<selectorEl.children.length;i++){const value=selectorEl.children[i].targetPropertyValue;if(value===v){const changed=selectorEl.selectedIndex!==i;if(changed){selectorEl.selectedIndex=i;callback();}\nreturn;}}\nthrow new Error('Not a valid value');});selectorEl.selectedIndex=-1;return selectorEl;}\nfunction plusMinus(value,toFixed=3){return(value>0?'+':'')+value.toFixed(toFixed);}\nfunction addArrow(value){if(value===0)return value;if(value===Number.NEGATIVE_INFINITY)return'\\u2193\\u221E';if(value===Number.POSITIVE_INFINITY)return'\\u2191\\u221E';return(value>0?'\\u2191':'\\u2193')+Math.abs(value.toFixed(3));}\nPolymer({is:'tr-ui-e-v8-gc-objects-stats-table',ready(){this.$.diffOption.style.display='none';this.isolateEntries_=[];this.selector1_=undefined;this.selector2_=undefined;},constructDiffTable_(table){this.$.diffTable.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.diffTable.tableColumns=[{title:'Component',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.title;return typeEl;},showExpandButtons:true},{title:'Overall Memory(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.overall.toFixed(3);return spanEl;},cmp(a,b){return a.origin.overall-b.origin.overall;}},{title:'diff(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.overall);if(row.overall>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overall<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overall-b.overall;}},{title:'diff(%)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=addArrow(row.overallPercent);if(row.overall>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overall<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Over Allocated Memory(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.overAllocated.toFixed(3);return spanEl;},cmp(a,b){return a.origin.overAllocated-b.origin.overAllocated;}},{title:'diff(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.overAllocated);if(row.overAllocated>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overAllocated<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'diff(%)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=addArrow(row.overAllocatedPercent);if(row.overAllocated>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overAllocated<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'Count',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.count;return spanEl;},cmp(a,b){return a.origin.count-b.origin.count;}},{title:'diff',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.count,0);if(row.count>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.count<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.count-b.count;}},];},buildOptions_(){const items=[];for(const isolateEntry of this.isolateEntries_){items.push({label:isolateEntry.title,value:isolateEntry});}\nthis.$.diffOption.style.display='inline-block';this.selector1_=createSelector(this,'',items,this.diffOptionChanged_);Polymer.dom(this.$.diffOption).appendChild(this.selector1_);const spanEl=tr.ui.b.createSpan();spanEl.innerText=' VS ';Polymer.dom(this.$.diffOption).appendChild(spanEl);this.selector2_=createSelector(this,'',items,this.diffOptionChanged_);Polymer.dom(this.$.diffOption).appendChild(this.selector2_);},diffOptionChanged_(){const isolateEntry1=this.selector1_.selectedValue;const isolateEntry2=this.selector2_.selectedValue;if(isolateEntry1===undefined||isolateEntry2===undefined){return;}\nif(isolateEntry1===isolateEntry2){this.$.diffTable.tableRows=[];this.$.diffTable.rebuild();return;}\nthis.$.diffTable.tableRows=[isolateEntry1.diff(isolateEntry2)];this.$.diffTable.rebuild();},constructTable_(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.tableColumns=[{title:'Component',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.title;return typeEl;},showExpandButtons:true},{title:'Overall Memory (KB)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overall.toFixed(3);return typeEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Over Allocated Memory (KB)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overAllocated.toFixed(3);return typeEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'Overall Count',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.count;return typeEl;},cmp(a,b){return a.count-b.count;}},{title:'Overall Memory Percent',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overallPercent.toFixed(3)+'%';return typeEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Overall Allocated Memory Percent',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overAllocatedPercent.toFixed(3)+'%';return typeEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}}];this.$.table.sortColumnIndex=1;this.$.table.sortDescending=true;},buildSubEntry_(objects,groupEntry,keyToName){const typeGroup=INSTANCE_TYPE_GROUPS[groupEntry.title];for(const instanceType of typeGroup){const e=objects[instanceType];if(e===undefined)continue;delete objects[instanceType];let title=instanceType;if(keyToName!==undefined)title=keyToName(title);groupEntry.add(new Entry(title,e.count,e.overall/1024,e.over_allocated/1024,e.histogram,e.over_allocated_histogram));}},buildUnGroupedEntries_(objects,objectEntry,bucketSize){for(const title of Object.getOwnPropertyNames(objects)){const obj=objects[title];const groupedEntry=new GroupedEntry(title,0,0,0,new Array(bucketSize),new Array(bucketSize));groupedEntry.setFromObject(obj);objectEntry.add(groupedEntry);}},createGroupEntries_(groupEntries,objects,bucketSize){for(const groupName of Object.getOwnPropertyNames(INSTANCE_TYPE_GROUPS)){const groupEntry=new GroupedEntry(groupName,0,0,0,new Array(bucketSize),new Array(bucketSize));if(INSTANCE_TYPE_GROUPS[groupName].realEntry!==undefined){groupEntry.savedRealEntry=objects[INSTANCE_TYPE_GROUPS[groupName].realEntry];delete objects[INSTANCE_TYPE_GROUPS[groupName].realEntry];}\ngroupEntries[groupName]=groupEntry;}},buildGroupEntries_(groupEntries,objectEntry){for(const groupName of Object.getOwnPropertyNames(groupEntries)){const groupEntry=groupEntries[groupName];if(groupEntry.savedRealEntry!==undefined){groupEntry.setFromObject(groupEntry.savedRealEntry);groupEntry.accumulateUnknown('UNKNOWN');delete groupEntry.savedRealEntry;}\nobjectEntry.add(groupEntry);}},buildSubEntriesForGroups_(groupEntries,objects){for(const instanceType of Object.getOwnPropertyNames(objects)){if(IGNORED_ENTRIES.match(instanceType)){delete objects[instanceType];continue;}\nconst e=objects[instanceType];for(const name of Object.getOwnPropertyNames(INSTANCE_TYPE_GROUPS)){const group=INSTANCE_TYPE_GROUPS[name];if(group.match(instanceType)){groupEntries[name].add(new Entry(group.keyToName(instanceType),e.count,e.overall/1024,e.over_allocated/1024,e.histogram,e.over_allocated_histogram));delete objects[instanceType];}}}},build_(objects,objectEntry,bucketSize){delete objects.END;const groupEntries={};this.createGroupEntries_(groupEntries,objects,bucketSize);this.buildSubEntriesForGroups_(groupEntries,objects);this.buildGroupEntries_(groupEntries,objectEntry);this.buildUnGroupedEntries_(objects,objectEntry,bucketSize);},set selection(slices){slices.sortEvents(function(a,b){return b.start-a.start;});const previous=undefined;for(const slice of slices){if(!slice instanceof tr.e.v8.V8GCStatsThreadSlice)continue;const liveObjects=slice.liveObjects;const deadObjects=slice.deadObjects;const isolate=liveObjects.isolate;const isolateEntry=new GroupedEntry('Isolate_'+isolate+' at '+slice.start.toFixed(3)+' ms',0,0,0,[],[]);const liveEntry=new GroupedEntry('live objects',0,0,0,[],[]);const deadEntry=new GroupedEntry('dead objects',0,0,0,[],[]);const liveBucketSize=liveObjects.bucket_sizes.length;const deadBucketSize=deadObjects.bucket_sizes.length;this.build_(tr.b.deepCopy(liveObjects.type_data),liveEntry,liveBucketSize);isolateEntry.add(liveEntry);this.build_(tr.b.deepCopy(deadObjects.type_data),deadEntry,deadBucketSize);isolateEntry.add(deadEntry);isolateEntry.calculatePercentage();this.isolateEntries_.push(isolateEntry);}\nthis.updateTable_();if(slices.length>1){this.buildOptions_();this.constructDiffTable_();}},updateTable_(){this.constructTable_();this.$.table.tableRows=this.isolateEntries_;this.$.table.rebuild();},});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.gcObjectsStats.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view',tr.e.v8.V8GCStatsThreadSlice,{multi:true,title:'V8 GC Stats slices'});'use strict';tr.exportTo('tr.e.v8',function(){const IC_STATS_PROPERTIES=['type','category','scriptName','filePosition','state','isNative','map','propertiesMode','numberOfOwnProperties','instanceType'];class ICStatsEntry{constructor(obj){this.type_=obj.type;if(this.type_.includes('Store')){this.category_='Store';}else if(this.type_.includes('Load')){this.category_='Load';}\nthis.state_=obj.state;if(obj.functionName){this.functionName_=obj.optimized?'*':'~';this.functionName_+=obj.functionName.length===0?'(anonymous function)':obj.functionName;}\nthis.offset_=obj.offset;this.scriptName_=obj.scriptName?obj.scriptName:'unknown';this.isNative_=obj.scriptName&&obj.scriptName.includes('native');this.lineNum_=obj.lineNum?obj.lineNum:'unknown';this.filePosition_=this.scriptName_+':'+this.lineNum_;if(this.functionName_){this.filePosition_+=' '+this.functionName_+'+'+this.offset_;}\nthis.constructor_=obj.constructor?false:true;this.map_=obj.map;if(this.map_){this.propertiesMode_=obj.dict===1?'slow':'fast';}else{this.propertiesMode_='unknown';}\nthis.numberOfOwnProperties_=obj.own;this.instanceType_=obj.instanceType;this.key_=obj.key;}\nget type(){return this.type_;}\nget category(){return this.category_;}\nget state(){return this.state_;}\nget functionName(){return this.functionName_;}\nget offset(){return this.offset_;}\nget scriptName(){return this.scriptName_;}\nget isNative(){return this.isNative_;}\nget lineNumber(){return this.lineNum_;}\nget isConstructor(){return this.constructor_;}\nget map(){return this.map_;}\nget propertiesMode(){return this.propertiesMode_;}\nget numberOfOwnProperties(){return this.numberOfOwnProperties_;}\nget instanceType(){return this.instanceType_;}\nget filePosition(){return this.filePosition_;}}\nclass ICStatsEntryGroup{constructor(property,key){this.property_=property;this.key_=key;this.percentage_=0;this.entries_=[];this.subGroup_=undefined;}\nstatic groupBy(groups,entries,property){for(const entry of entries){const key=entry[property];let group=groups.get(key);if(!group){group=new ICStatsEntryGroup(property,key);groups.set(key,group);}\ngroup.add(entry);}\nfor(const group of groups.values()){group.percentage=group.length/entries.length;}}\nadd(entry){this.entries_.push(entry);}\ncreateSubGroup(){if(this.subGroup_)return this.subGroup_;this.subGroup_=new Map();for(const property of IC_STATS_PROPERTIES){if(property===this.property_)continue;const groups=new Map();this.subGroup_.set(property,groups);ICStatsEntryGroup.groupBy(groups,this.entries_,property);}\nreturn this.subGroup_;}\nget entries(){return this.entries_;}\nget key(){return this.key_;}\nget length(){return this.entries_.length;}\nget percentage(){return this.percentage_;}\nset percentage(value){this.percentage_=value;}}\nclass ICStatsCollection{constructor(){this.entries_=[];this.groupedEntries_=new Map();}\nadd(entry){this.entries_.push(entry);}\ngroupBy(property){if(this.groupedEntries_.has(property)){return Array.from(this.groupedEntries_.get(property).values());}\nconst groups=new Map();this.groupedEntries_.set(property,groups);ICStatsEntryGroup.groupBy(groups,this.entries_,property);return Array.from(groups.values());}\nget entries(){return this.entries_;}\nget length(){return this.entries_.length;}}\nreturn{IC_STATS_PROPERTIES,ICStatsEntry,ICStatsEntryGroup,ICStatsCollection,};});'use strict';tr.exportTo('tr.ui.e.v8',function(){const PROPERTIES=tr.e.v8.IC_STATS_PROPERTIES.map(x=>{return{label:x,value:x};});const ICStatsEntry=tr.e.v8.ICStatsEntry;const ICStatsEntryGroup=tr.e.v8.ICStatsEntryGroup;const ICStatsCollection=tr.e.v8.ICStatsCollection;Polymer({is:'tr-ui-e-v8-ic-stats-table',ready(){this.icStatsCollection_=new ICStatsCollection();this.groupKey_=PROPERTIES[0].value;this.selector_=tr.ui.b.createSelector(this,'groupKey','v8ICStatsGroupKey',this.groupKey_,PROPERTIES);Polymer.dom(this.$.groupOption).appendChild(this.selector_);},get groupKey(){return this.groupKey_;},set groupKey(key){this.groupKey_=key;if(this.icStatsCollection_.length===0)return;this.updateTable_(this.groupKey_);},constructTable_(table,groupKey){table.tableColumns=[{title:'',value:row=>{let expanded=false;const buttonEl=tr.ui.b.createButton('details',function(){const previousSibling=Polymer.dom(this).parentNode.parentNode;const parentNode=previousSibling.parentNode;if(expanded){const trEls=parentNode.getElementsByClassName('subTable');Array.from(trEls).map(x=>x.parentNode.removeChild(x));expanded=false;return;}\nexpanded=true;const subGroups=row.createSubGroup();const tr=document.createElement('tr');tr.classList.add('subTable');tr.appendChild(document.createElement('td'));const td=document.createElement('td');td.colSpan=3;for(const subGroup of subGroups){const property=subGroup[0];const all=Array.from(subGroup[1].values());const group=all.slice(0,20);const divEl=document.createElement('div');const spanEl=document.createElement('span');const subTableEl=document.createElement('tr-ui-b-table');spanEl.innerText=`Top 20 out of ${all.length}`;spanEl.style.fontWeight='bold';spanEl.style.fontSize='14px';divEl.appendChild(spanEl);this.constructTable_(subTableEl,property);subTableEl.tableRows=group;subTableEl.rebuild();divEl.appendChild(subTableEl);td.appendChild(divEl);}\ntr.appendChild(td);parentNode.insertBefore(tr,previousSibling.nextSibling);});return buttonEl;}},{title:'Percentage',value(row){const spanEl=document.createElement('span');spanEl.innerText=(row.percentage*100).toFixed(3)+'%';return spanEl;},cmp:(a,b)=>a.percentage-b.percentage},{title:'Count',value(row){const spanEl=document.createElement('span');spanEl.innerText=row.length;return spanEl;},cmp:(a,b)=>a.length-b.length},{title:groupKey,value(row){const spanEl=document.createElement('span');spanEl.innerText=row.key?row.key:'';return spanEl;}}];table.sortColumnIndex=1;table.sortDescending=true;},updateTable_(groupKey){this.constructTable_(this.$.table,groupKey);this.$.table.tableRows=this.icStatsCollection_.groupBy(groupKey);this.$.table.rebuild();},set selection(slices){for(const slice of slices){for(const icStatsObj of slice.icStats){const entry=new ICStatsEntry(icStatsObj);this.icStatsCollection_.add(entry);}}\nthis.$.total.innerText='Total items: '+this.icStatsCollection_.length;this.updateTable_(this.selector_.selectedValue);}});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.table.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view',tr.e.v8.V8ICStatsThreadSlice,{multi:true,title:'V8 IC stats slices'});'use strict';tr.exportTo('tr.e.v8',function(){class RuntimeStatsEntry{constructor(name,count,time){this.name_=name;this.count_=count;this.time_=time;}\nget name(){return this.name_;}\nget count(){return this.count_;}\nget time(){return this.time_;}\naddSample(count,time){this.count_+=count;this.time_+=time;}}\nclass RuntimeStatsGroup extends RuntimeStatsEntry{constructor(name,matchRegex){super(name,0,0);this.regex_=matchRegex;this.entries_=new Map();}\nmatch(name){return this.regex_&&name.match(this.regex_);}\nadd(entry){const value=this.entries_.get(entry.name);if(value!==undefined){value.addSample(entry.count,entry.time);}else{this.entries_.set(entry.name,entry);}\nthis.count_+=entry.count;this.time_+=entry.time;}\nget values(){return Array.from(this.entries_.values());}}\nclass RuntimeStatsGroupCollection{constructor(){this.blink_cpp_group_=new RuntimeStatsGroup('Blink C++',/.*Callback.*/);this.api_group_=new RuntimeStatsGroup('API',/.*API.*/);this.groups_=[new RuntimeStatsGroup('Total'),new RuntimeStatsGroup('IC',/.*IC_.*/),new RuntimeStatsGroup('Optimize-Background',/(.*OptimizeBackground.*)|RecompileConcurrent.*/),new RuntimeStatsGroup('Optimize',/StackGuard|.*Optimize.*|.*Deoptimize.*|Recompile.*/),new RuntimeStatsGroup('Compile-Background',/(.*CompileBackground.*)/),new RuntimeStatsGroup('Compile',/(^Compile.*)|(.*_Compile.*)/),new RuntimeStatsGroup('Parse-Background',/.*ParseBackground.*/),new RuntimeStatsGroup('Parse',/.*Parse.*/),this.blink_cpp_group_,this.api_group_,new RuntimeStatsGroup('GC-Background-Marking',/.*GC.MC.BACKGROUND.*MARKING.*/),new RuntimeStatsGroup('GC-Background-Sweeping',/.*GC.MC.BACKGROUND.*SWEEPING.*/),new RuntimeStatsGroup('GC-Background-Scavenger',/.*GC.SCAVENGER.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MinorMC',/.*GC.MINOR_MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MajorMC',/.*GC.MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-Other',/.*GC.*BACKGROUND.*/),new RuntimeStatsGroup('GC',/GC|AllocateInTargetSpace/),new RuntimeStatsGroup('JavaScript',/JS_Execution/),new RuntimeStatsGroup('V8 C++',/.*/)];this.blink_group_collection_=null;}\naddSlices(slices){const blinkEntries=[];for(const slice of slices){if(!(slice instanceof tr.e.v8.V8ThreadSlice))return;let runtimeCallStats;try{runtimeCallStats=JSON.parse(slice.runtimeCallStats);}catch(e){runtimeCallStats=slice.runtimeCallStats;}\nif(runtimeCallStats===undefined)continue;for(const[name,stat]of Object.entries(runtimeCallStats)){if(name.match(/Blink_.*/)){if(name==='Blink_V8')continue;const entry=new RuntimeStatsEntry(name,stat[0],stat[1]);blinkEntries.push(entry);continue;}\nfor(let i=1;i<this.groups_.length;++i){if(this.groups_[i].match(name)){if(stat.length!==2)break;const entry=new RuntimeStatsEntry(name,stat[0],stat[1]);this.groups_[0].addSample(stat[0],stat[1]);this.groups_[i].add(entry);break;}}}}\nthis.blink_group_collection_=new BlinkRuntimeStatsGroupCollection(blinkEntries);}\nget totalTime(){return this.groups_[0].time;}\nget totalCount(){return this.groups_[0].count;}\nget runtimeGroups(){return this.groups_;}\nget blinkRCSGroupCollection(){return this.blink_group_collection_;}\nget blinkCppTotalTime(){return this.blink_cpp_group_.time+this.api_group_.time;}}\nclass BlinkRuntimeStatsGroupCollection{constructor(entries){this.groups_=[new RuntimeStatsGroup('Blink_Bindings',/^Blink_Bindings_(.*)/),new RuntimeStatsGroup('Blink_GC',/^Blink_GC_(.*)/),new RuntimeStatsGroup('Blink_Layout',/^Blink_Layout_(.*)/),new RuntimeStatsGroup('Blink_Parsing',/^Blink_Parsing_(.*)/),new RuntimeStatsGroup('Blink_Style',/^Blink_Style_(.*)/),new RuntimeStatsGroup('Blink_Callbacks',/^Blink_(.*)/)];this.total_group_=new RuntimeStatsGroup('Blink_Total',/.*/);for(const entry of entries){for(const group of this.groups_){if(group.match(entry.name)){const newEntry=new RuntimeStatsEntry('Blink_'+group.match(entry.name)[1],entry.count,entry.time);group.add(newEntry);this.total_group_.addSample(entry.count,entry.time);break;}}}}\nget runtimeGroups(){return this.groups_.concat(this.total_group_);}\nget values(){return this.groups_.reduce((values,group)=>values.concat(group.values),[]);}\nget totalTime(){return this.total_group_.time;}\nget totalCount(){return this.total_group_.count;}}\nreturn{BlinkRuntimeStatsGroupCollection,RuntimeStatsEntry,RuntimeStatsGroup,RuntimeStatsGroupCollection,};});'use strict';tr.exportTo('tr.ui.e.v8',function(){const codeSearchURL_='https://cs.chromium.org/search/?sq=package:chromium&type=cs&q=';function removeBlinkPrefix_(name){if(name.startsWith('Blink_'))name=name.substring(6);return name;}\nfunction handleCodeSearchForV8_(event){if(event.target.parentNode===undefined)return;let name=event.target.parentNode.entryName;if(name.startsWith('API_'))name=name.substring(4);const url=codeSearchURL_+encodeURIComponent(name)+'+file:src/v8/src';window.open(url,'_blank');}\nfunction handleCodeSearchForBlink_(event){if(event.target.parentNode===undefined)return;const name=event.target.parentNode.entryName;const url=codeSearchURL_+\nencodeURIComponent('RuntimeCallStats::CounterId::k'+name)+'+file:src/third_party/WebKit/|src/out/Debug/';window.open(url,'_blank');}\nfunction createCodeSearchEl_(handleCodeSearch){const codeSearchEl=document.createElement('span');codeSearchEl.innerText='?';codeSearchEl.style.float='right';codeSearchEl.style.borderRadius='5px';codeSearchEl.style.backgroundColor='#EEE';codeSearchEl.addEventListener('click',handleCodeSearch.bind(this));return codeSearchEl;}\nconst timeColumn_={title:'Time',value(row){const typeEl=document.createElement('span');typeEl.innerText=(row.time/1000.0).toFixed(3)+' ms';return typeEl;},width:'100px',cmp(a,b){return a.time-b.time;}};const countColumn_={title:'Count',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.count;return typeEl;},width:'100px',cmp(a,b){return a.count-b.count;}};function percentColumn_(title,totalTime){return{title,value(row){const typeEl=document.createElement('span');typeEl.innerText=(row.time/totalTime*100).toFixed(3)+'%';return typeEl;},width:'100px',cmp(a,b){return a.time-b.time;}};}\nfunction nameColumn_(handleCodeSearch,modifyName){return{title:'Name',value(row){const typeEl=document.createElement('span');let name=row.name;if(modifyName)name=modifyName(name);typeEl.innerText=name;if(!(row instanceof tr.e.v8.RuntimeStatsGroup)){typeEl.title='click ? for code search';typeEl.entryName=name;const codeSearchEl=createCodeSearchEl_(handleCodeSearch);typeEl.appendChild(codeSearchEl);}\nreturn typeEl;},width:'200px',showExpandButtons:true};}\nfunction initializeCommonOptions_(table){table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.sortColumnIndex=1;table.sortDescending=true;table.subRowsPropertyName='values';}\nPolymer({is:'tr-ui-e-v8-runtime-call-stats-table',ready(){this.table_=this.$.table;this.blink_rcs_table_=this.$.blink_rcs_table;this.totalTime_=0;},constructV8RCSTable_(totalTime){this.table_.tableColumns=[nameColumn_(handleCodeSearchForV8_),timeColumn_,countColumn_,percentColumn_('Percent',totalTime)];initializeCommonOptions_(this.table_);},constructBlinkRCSTable_(blinkCppTotalTime){this.blink_rcs_table_.tableColumns=[nameColumn_(handleCodeSearchForBlink_,removeBlinkPrefix_),timeColumn_,countColumn_,percentColumn_('Percent (of \\'Blink C++\\' + \\'API\\')',blinkCppTotalTime)];initializeCommonOptions_(this.blink_rcs_table_);},set slices(slices){const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(slices);if(runtimeGroupCollection.totalTime>0){this.$.v8_rcs_heading.textContent='V8 Runtime Call Stats';this.constructV8RCSTable_(runtimeGroupCollection.totalTime);this.table_.tableRows=runtimeGroupCollection.runtimeGroups;this.table_.rebuild();}\nconst blinkRCSGroupCollection=runtimeGroupCollection.blinkRCSGroupCollection;if(runtimeGroupCollection.blinkCppTotalTime>0&&blinkRCSGroupCollection.totalTime>0){this.$.blink_rcs_heading.textContent='Blink Runtime Call Stats';this.constructBlinkRCSTable_(runtimeGroupCollection.blinkCppTotalTime);this.blink_rcs_table_.tableRows=blinkRCSGroupCollection.runtimeGroups;this.blink_rcs_table_.rebuild();}}});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.runtimeCallStats.slices=selection;this.$.content.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-thread-slice-sub-view',tr.e.v8.V8ThreadSlice,{multi:true,title:'V8 slices'});'use strict';Polymer({is:'tr-ui-e-single-v8-gc-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.gcObjectsStats.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-gc-stats-thread-slice-sub-view',tr.e.v8.V8GCStatsThreadSlice,{multi:false,title:'V8 GC stats slice'});'use strict';Polymer({is:'tr-ui-e-single-v8-ic-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.table.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-ic-stats-thread-slice-sub-view',tr.e.v8.V8ICStatsThreadSlice,{multi:false,title:'V8 IC stats slice'});'use strict';Polymer({is:'tr-ui-e-single-v8-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.runtimeCallStats.slices=selection;this.$.content.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-thread-slice-sub-view',tr.e.v8.V8ThreadSlice,{multi:false,title:'V8 slice'});'use strict';tr.exportTo('tr.c',function(){function ScriptingObject(){}\nScriptingObject.prototype={onModelChanged(model){}};return{ScriptingObject,};});'use strict';tr.exportTo('tr.c',function(){function ScriptingController(brushingStateController){this.brushingStateController_=brushingStateController;this.scriptObjectNames_=[];this.scriptObjectValues_=[];this.brushingStateController.addEventListener('model-changed',this.onModelChanged_.bind(this));const typeInfos=ScriptingObjectRegistry.getAllRegisteredTypeInfos();typeInfos.forEach(function(typeInfo){this.addScriptObject(typeInfo.metadata.name,typeInfo.constructor);global[typeInfo.metadata.name]=typeInfo.constructor;},this);}\nfunction ScriptingObjectRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(ScriptingObjectRegistry,options);ScriptingController.prototype={get brushingStateController(){return this.brushingStateController_;},onModelChanged_(){this.scriptObjectValues_.forEach(function(v){if(v.onModelChanged){v.onModelChanged(this.brushingStateController.model);}},this);},addScriptObject(name,value){this.scriptObjectNames_.push(name);this.scriptObjectValues_.push(value);},executeCommand(command){const f=new Function(this.scriptObjectNames_,'return eval('+command+')');return f.apply(null,this.scriptObjectValues_);}};return{ScriptingController,ScriptingObjectRegistry,};});'use strict';tr.exportTo('tr.metrics',function(){function MetricRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};tr.b.decorateExtensionRegistry(MetricRegistry,options);function camelCaseToHackerString(camelCase){let hackerString='';for(const c of camelCase){const lowered=c.toLocaleLowerCase();if(lowered===c){hackerString+=c;}else{hackerString+='_'+lowered;}}\nreturn hackerString;}\nfunction getCallStack(){try{throw new Error();}catch(error){return error.stack;}}\nfunction getPathsFromStack(stack){return stack.split('\\n').map(line=>{line=line.replace(/^ */,'').split(':');if(line.length<4)return'';return line[line.length-3].split('/');}).filter(x=>x);}\nMetricRegistry.checkFilename=function(metricName,opt_metricPathForTest){if(metricName==='runtimeStatsTotalMetric'||metricName==='v8AndMemoryMetrics'){return;}\nconst expectedFilename=camelCaseToHackerString(metricName)+'.html';const stack=getCallStack();let metricPath=opt_metricPathForTest;if(metricPath===undefined){const paths=getPathsFromStack(stack);const METRIC_STACK_INDEX=5;if(paths.length<=METRIC_STACK_INDEX||paths[METRIC_STACK_INDEX].join('/')===paths[0].join('/')){return;}\nmetricPath=paths[METRIC_STACK_INDEX].slice(paths[METRIC_STACK_INDEX].length-2);}\nif(!metricPath[1].endsWith('_test.html')&&!metricPath[1].endsWith('_test.html.js')&&metricPath[1]!==expectedFilename&&metricPath[1]!==expectedFilename+'.js'&&metricPath.join('_')!==expectedFilename&&metricPath.join('_')!==expectedFilename+'.js'){throw new Error('Expected '+metricName+' to be in a file named '+\nexpectedFilename+'; actual: '+metricPath.join('/')+'; stack: '+stack.replace(/\\n/g,'\\n  '));}};MetricRegistry.addEventListener('will-register',function(e){const metric=e.typeInfo.constructor;if(!(metric instanceof Function)){throw new Error('Metrics must be functions.');}\nif(!metric.name.endsWith('Metric')&&!metric.name.endsWith('Metrics')){throw new Error('Metric names must end with \"Metric\" or \"Metrics\".');}\nif(metric.length<2){throw new Error('Metrics take a HistogramSet and a Model and '+'optionally an options dictionary.');}\nMetricRegistry.checkFilename(metric.name);});return{MetricRegistry,};});'use strict';tr.exportTo('tr.metrics',function(){function accessibilityMetric(histograms,model){const browserAccessibilityEventsHist=new tr.v.Histogram('browser_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);browserAccessibilityEventsHist.description='Browser accessibility events time';const renderAccessibilityEventsHist=new tr.v.Histogram('render_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityEventsHist.description='Render accessibility events time';const renderAccessibilityLocationsHist=new tr.v.Histogram('render_accessibility_locations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityLocationsHist.description='Render accessibility locations time';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return;for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const mainThread=rendererHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(!(slice instanceof tr.model.ThreadSlice))continue;if(slice.title==='RenderAccessibilityImpl::SendPendingAccessibilityEvents'){renderAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}\nif(slice.title==='RenderAccessibilityImpl::SendLocationChanges'){renderAccessibilityLocationsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}\nfor(const browserHelper of Object.values(chromeHelper.browserHelpers)){const mainThread=browserHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(slice.title==='BrowserAccessibilityManager::OnAccessibilityEvents'){browserAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}\nhistograms.addHistogram(browserAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityLocationsHist);}\ntr.metrics.MetricRegistry.register(accessibilityMetric);return{accessibilityMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const MESSAGE_LOOP_EVENT_NAME='Startup.BrowserMessageLoopStartTime';const CONTENT_START_EVENT_NAME='content::Start';const NAVIGATION_EVENT_NAME='Navigation StartToCommit';const FIRST_CONTENTFUL_PAINT_EVENT_NAME='firstContentfulPaint';function androidStartupMetric(histograms,model){let messageLoopStartEvents=[];let navigationEvents=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;for(const helper of chromeHelper.browserHelpers){for(const ev of helper.mainThread.asyncSliceGroup.childEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}}}\nlet contentStartEvents=[];let firstContentfulPaintEvents=[];const rendererHelpers=chromeHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(!rendererHelper.mainThread)continue;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}}\nlet totalBrowserStarts=messageLoopStartEvents.length;let totalContentStartEvents=contentStartEvents.length;let totalFcpEvents=firstContentfulPaintEvents.length;let totalNavigations=navigationEvents.length;if(totalFcpEvents!==totalBrowserStarts||totalNavigations!==totalBrowserStarts||totalContentStartEvents!==totalBrowserStarts||totalBrowserStarts===0){messageLoopStartEvents=[];contentStartEvents=[];navigationEvents=[];firstContentfulPaintEvents=[];for(const proc of Object.values(model.processes)){for(const ev of proc.getDescendantEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}\nfor(const ev of proc.getDescendantEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}}}\ntotalBrowserStarts=messageLoopStartEvents.length;totalContentStartEvents=contentStartEvents.length;totalNavigations=navigationEvents.length;totalFcpEvents=firstContentfulPaintEvents.length;}\nfunction orderEvents(event1,event2){return event1.start-event2.start;}\nmessageLoopStartEvents.sort(orderEvents);contentStartEvents.sort(orderEvents);navigationEvents.sort(orderEvents);firstContentfulPaintEvents.sort(orderEvents);if(totalFcpEvents<totalBrowserStarts){throw new Error('Found fewer FCP events ('+totalFcpEvents+') than browser starts ('+totalBrowserStarts+')');}\nconst messageLoopStartHistogram=histograms.createHistogram('messageloop_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const contentStartHistogram=histograms.createHistogram('experimental_content_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const navigationStartHistogram=histograms.createHistogram('experimental_navigation_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const navigationCommitHistogram=histograms.createHistogram('navigation_commit_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const firstContentfulPaintHistogram=histograms.createHistogram('first_contentful_paint_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);let contentIndex=0;let navIndex=0;let fcpIndex=0;for(let loopStartIndex=0;loopStartIndex<totalBrowserStarts;){const startEvent=messageLoopStartEvents[loopStartIndex];if(fcpIndex===totalFcpEvents){break;}\nconst contentStartEvent=contentIndex<contentStartEvents.length?contentStartEvents[contentIndex]:null;if(contentStartEvent&&contentStartEvent.start<startEvent.start){contentIndex++;continue;}\nconst navEvent=navIndex<navigationEvents.length?navigationEvents[navIndex]:null;if(navEvent&&navEvent.start<startEvent.start){navIndex++;continue;}\nconst fcpEvent=firstContentfulPaintEvents[fcpIndex];if(fcpEvent.start<startEvent.start){fcpIndex++;continue;}\nloopStartIndex++;if(fcpIndex<2){continue;}\nmessageLoopStartHistogram.addSample(startEvent.duration,{events:new tr.v.d.RelatedEventSet([startEvent])});if(contentStartEvent){contentStartHistogram.addSample(contentStartEvent.start-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,contentStartEvent])});}\nif(navEvent){navigationStartHistogram.addSample(navEvent.start-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,navEvent])});navigationCommitHistogram.addSample(navEvent.end-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,navEvent])});}\nfirstContentfulPaintHistogram.addSample(fcpEvent.end-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,fcpEvent])});}}\ntr.metrics.MetricRegistry.register(androidStartupMetric);return{androidStartupMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const MAX_INPUT_EVENT_TO_STARTUP_DELAY_IN_MS=2000;const MIN_DRAW_DELAY_IN_MS=80;const MAX_DRAW_DELAY_IN_MS=2000;function findProcess(processName,model){for(const pid in model.processes){const process=model.processes[pid];if(process.name===processName){return process;}}\nreturn undefined;}\nfunction findThreads(process,threadPrefix){if(process===undefined)return undefined;const threads=[];for(const tid in process.threads){const thread=process.threads[tid];if(thread.name.startsWith(threadPrefix)){threads.push(thread);}}\nreturn threads;}\nfunction findUIThread(process){if(process===undefined)return undefined;const threads=findThreads(process,'UI Thread');if(threads!==undefined&&threads.length===1){return threads[0];}\nreturn process.threads[process.pid];}\nfunction findLaunchSlices(model){const launches=[];const binders=findThreads(findProcess('system_server',model),'Binder');for(const binderId in binders){const binder=binders[binderId];for(const sliceId in binder.asyncSliceGroup.slices){const slice=binder.asyncSliceGroup.slices[sliceId];if(slice.title.startsWith('launching:')){launches.push(slice);}}}\nreturn launches;}\nfunction findDrawSlice(appName,startNotBefore,model){let drawSlice=undefined;const thread=findUIThread(findProcess(appName,model));if(thread===undefined)return undefined;for(const sliceId in thread.sliceGroup.slices){const slice=thread.sliceGroup.slices[sliceId];if(slice.start<startNotBefore+MIN_DRAW_DELAY_IN_MS||slice.start>startNotBefore+MAX_DRAW_DELAY_IN_MS)continue;if(slice.title!=='draw')continue;if(drawSlice===undefined||slice.start<drawSlice.start){drawSlice=slice;}}\nreturn drawSlice;}\nfunction findInputEventSlice(endNotAfter,model){const endNotBefore=endNotAfter-MAX_INPUT_EVENT_TO_STARTUP_DELAY_IN_MS;let inputSlice=undefined;const systemUi=findUIThread(findProcess('com.android.systemui',model));if(systemUi===undefined)return undefined;for(const sliceId in systemUi.asyncSliceGroup.slices){const slice=systemUi.asyncSliceGroup.slices[sliceId];if(slice.end>endNotAfter||slice.end<endNotBefore)continue;if(slice.title!=='deliverInputEvent')continue;if(inputSlice===undefined||slice.end>inputSlice.end){inputSlice=slice;}}\nreturn inputSlice;}\nfunction computeStartupTimeInMs(appName,launchSlice,model){let startupStart=launchSlice.start;let startupEnd=launchSlice.end;const drawSlice=findDrawSlice(appName,launchSlice.end,model);if(drawSlice!==undefined){startupEnd=drawSlice.end;}\nconst inputSlice=findInputEventSlice(launchSlice.start,model);if(inputSlice!==undefined){startupStart=inputSlice.start;}\nreturn startupEnd-startupStart;}\nfunction measureStartup(histograms,model){const launches=findLaunchSlices(model);for(const sliceId in launches){const launchSlice=launches[sliceId];const appName=launchSlice.title.split(': ')[1];const startupMs=computeStartupTimeInMs(appName,launchSlice,model);histograms.createHistogram(`android:systrace:startup:${appName}`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,startupMs);}}\nfunction measureThreadStates(histograms,model,rangeOfInterest){for(const pid in model.processes){const process=model.processes[pid];if(process.name===undefined)continue;let hasSlices=false;let timeRunning=0;let timeRunnable=0;let timeSleeping=0;let timeUninterruptible=0;let timeBlockIO=0;let timeUnknown=0;for(const tid in process.threads){const thread=process.threads[tid];if(thread.timeSlices===undefined)continue;for(const sliceId in thread.timeSlices){const slice=thread.timeSlices[sliceId];const sliceRange=tr.b.math.Range.fromExplicitRange(slice.start,slice.end);const intersection=rangeOfInterest.findIntersection(sliceRange);const duration=intersection.duration;if(duration===0)continue;hasSlices=true;if(slice.title==='Running'){timeRunning+=duration;}else if(slice.title==='Runnable'){timeRunnable+=duration;}else if(slice.title==='Sleeping'){timeSleeping+=duration;}else if(slice.title.startsWith('Uninterruptible')){timeUninterruptible+=duration;if(slice.title.includes('Block I/O'))timeBlockIO+=duration;}else{timeUnknown+=duration;}}}\nif(hasSlices){const wall=rangeOfInterest.max-rangeOfInterest.min;histograms.createHistogram(`android:systrace:threadtime:${process.name}:running`,tr.b.Unit.byName.normalizedPercentage,timeRunning/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:runnable`,tr.b.Unit.byName.normalizedPercentage,timeRunnable/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:sleeping`,tr.b.Unit.byName.normalizedPercentage,timeSleeping/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:blockio`,tr.b.Unit.byName.normalizedPercentage,timeBlockIO/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:uninterruptible`,tr.b.Unit.byName.normalizedPercentage,timeUninterruptible/wall);if(timeUnknown>0){histograms.createHistogram(`android:systrace:threadtime:${process.name}:unknown`,tr.b.Unit.byName.normalizedPercentage,timeUnknown/wall);}}}}\nfunction androidSystraceMetric(histograms,model,options){let rangeOfInterest=model.bounds;if(options!==undefined&&options.rangeOfInterest!==undefined){rangeOfInterest=options.rangeOfInterest;}\nmeasureStartup(histograms,model);measureThreadStates(histograms,model,rangeOfInterest);}\ntr.metrics.MetricRegistry.register(androidSystraceMetric,{supportsRangeOfInterest:true});return{androidSystraceMetric,};});'use strict';tr.exportTo('tr.b.math',function(){const PERCENTILE_PRECISION=1e-7;function PiecewiseLinearFunction(){this.pieces=[];}\nPiecewiseLinearFunction.prototype={push(x1,y1,x2,y2){if(x1>=x2){throw new Error('Invalid segment');}\nif(this.pieces.length>0&&this.pieces[this.pieces.length-1].x2>x1){throw new Error('Potentially overlapping segments');}\nif(x1<x2){this.pieces.push(new Piece(x1,y1,x2,y2));}},partBelow(y){return this.pieces.reduce((acc,p)=>(acc+p.partBelow(y)),0);},get min(){return this.pieces.reduce((acc,p)=>Math.min(acc,p.min),Infinity);},get max(){return this.pieces.reduce((acc,p)=>Math.max(acc,p.max),-Infinity);},get average(){let weightedSum=0;let totalWeight=0;this.pieces.forEach(function(piece){weightedSum+=piece.width*piece.average;totalWeight+=piece.width;});if(totalWeight===0)return 0;return weightedSum/totalWeight;},percentile(percent){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}\nlet lower=this.min;let upper=this.max;const total=this.partBelow(upper);if(total===0)return 0;while(upper-lower>PERCENTILE_PRECISION){const middle=(lower+upper)/2;const below=this.partBelow(middle);if(below/total<percent){lower=middle;}else{upper=middle;}}\nreturn(lower+upper)/2;}};function Piece(x1,y1,x2,y2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;}\nPiece.prototype={partBelow(y){const width=this.width;if(width===0)return 0;const minY=this.min;const maxY=this.max;if(y>=maxY)return width;if(y<minY)return 0;return(y-minY)/(maxY-minY)*width;},get min(){return Math.min(this.y1,this.y2);},get max(){return Math.max(this.y1,this.y2);},get average(){return(this.y1+this.y2)/2;},get width(){return this.x2-this.x1;}};return{PiecewiseLinearFunction,};});'use strict';tr.exportTo('tr.metrics.v8.utils',function(){const IDLE_TASK_EVENT='SingleThreadIdleTaskRunner::RunTask';const V8_EXECUTE='V8.Execute';const GC_EVENT_PREFIX='V8.GC';const FULL_GC_EVENT='V8.GCCompactor';const LOW_MEMORY_EVENT='V8.GCLowMemoryNotification';const MAJOR_GC_EVENT='MajorGC';const MINOR_GC_EVENT='MinorGC';const TOP_GC_EVENTS={'V8.GCCompactor':'v8-gc-full-mark-compactor','V8.GCFinalizeMC':'v8-gc-latency-mark-compactor','V8.GCFinalizeMCReduceMemory':'v8-gc-memory-mark-compactor','V8.GCIncrementalMarking':'v8-gc-incremental-step','V8.GCIncrementalMarkingFinalize':'v8-gc-incremental-finalize','V8.GCIncrementalMarkingStart':'v8-gc-incremental-start','V8.GCPhantomHandleProcessingCallback':'v8-gc-phantom-handle-callback','V8.GCScavenger':'v8-gc-scavenger'};const MARK_COMPACTOR_EVENTS=new Set(['V8.GCCompactor','V8.GCFinalizeMC','V8.GCFinalizeMCReduceMemory','V8.GCIncrementalMarking','V8.GCIncrementalMarkingFinalize','V8.GCIncrementalMarkingStart','V8.GCPhantomHandleProcessingCallback']);const LOW_MEMORY_MARK_COMPACTOR='v8-gc-low-memory-mark-compactor';function findParent(event,predicate){let parent=event.parentSlice;while(parent){if(predicate(parent)){return parent;}\nparent=parent.parentSlice;}\nreturn null;}\nfunction isIdleTask(event){return event.title===IDLE_TASK_EVENT;}\nfunction isLowMemoryEvent(event){return event.title===LOW_MEMORY_EVENT;}\nfunction isV8Event(event){return event.title.startsWith('V8.');}\nfunction isV8ExecuteEvent(event){return event.title===V8_EXECUTE;}\nfunction isTopV8ExecuteEvent(event){return isV8ExecuteEvent(event)&&findParent(isV8ExecuteEvent)===null;}\nfunction isGarbageCollectionEvent(event){return event.title&&event.title.startsWith(GC_EVENT_PREFIX)&&event.title!==LOW_MEMORY_EVENT;}\nfunction isTopGarbageCollectionEvent(event){return event.title in TOP_GC_EVENTS;}\nfunction isForcedGarbageCollectionEvent(event){return findParent(event,isLowMemoryEvent)!==null;}\nfunction isSubGarbageCollectionEvent(event){return isGarbageCollectionEvent(event)&&event.parentSlice&&(isTopGarbageCollectionEvent(event.parentSlice)||event.parentSlice.title===MAJOR_GC_EVENT||event.parentSlice.title===MINOR_GC_EVENT);}\nfunction isNotForcedTopGarbageCollectionEvent(event){return tr.metrics.v8.utils.isTopGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isNotForcedSubGarbageCollectionEvent(event){return tr.metrics.v8.utils.isSubGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isFullMarkCompactorEvent(event){return event.title==='V8.GCCompactor';}\nfunction isMarkCompactorSummaryEvent(event){return event.title==='V8.GCMarkCompactorSummary';}\nfunction isMarkCompactorMarkingSummaryEvent(event){return event.title==='V8.GCMarkCompactorMarkingSummary';}\nfunction isScavengerStackScanningEvent(event){return event.title==='V8.GCScavengerStackScanning';}\nfunction isIncrementalMarkingEvent(event){return event.title.startsWith('V8.GCIncrementalMarking');}\nfunction isLatencyMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMC';}\nfunction isMemoryMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMCReduceMemory';}\nfunction isScavengerEvent(event){return event.title==='V8.GCScavenger';}\nfunction isCompileOptimizeRCSCategory(name){return name==='Optimize';}\nfunction isCompileUnoptimizeRCSCategory(name){return name==='Compile';}\nfunction isCompileParseRCSCategory(name){return name==='Parse';}\nfunction isCompileRCSCategory(name){return name==='Compile'||name==='Optimize'||name==='Parse';}\nfunction isV8RCSEvent(event){return event instanceof tr.e.v8.V8ThreadSlice;}\nfunction isMarkCompactorEvent(event){return MARK_COMPACTOR_EVENTS.has(event.title);}\nfunction isNotForcedMarkCompactorEvent(event){return!isForcedGarbageCollectionEvent(event)&&isMarkCompactorEvent(event);}\nfunction forcedGCEventName(){return LOW_MEMORY_EVENT;}\nfunction topGarbageCollectionEventName(event){if(event.title===FULL_GC_EVENT){if(findParent(event,isLowMemoryEvent)){return LOW_MEMORY_MARK_COMPACTOR;}}\nreturn TOP_GC_EVENTS[event.title];}\nfunction topGarbageCollectionEventNames(){return Object.values(TOP_GC_EVENTS);}\nfunction subGarbageCollectionEventName(event){const topEvent=findParent(event,isTopGarbageCollectionEvent);const prefix=topEvent?topGarbageCollectionEventName(topEvent):'unknown';const name=event.title.replace('V8.GC_MC_','').replace('V8.GC_SCAVENGER_','').replace('V8.GC_','').replace(/_/g,'-').toLowerCase();return prefix+'-'+name;}\nfunction jsExecutionThreads(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let threads=[];for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.isChromeTracingUI)continue;threads.push(rendererHelper.mainThread);threads=threads.concat(rendererHelper.dedicatedWorkerThreads);threads=threads.concat(rendererHelper.foregroundWorkerThreads);}\nreturn threads;}\nfunction groupAndProcessEvents(model,filterCallback,groupCallback,processCallback,groups){const groupToEvents={};if(groups){for(const group of groups){groupToEvents[group]=[];}}\nconst threads=jsExecutionThreads(model);for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;const group=groupCallback(event);if(groups&&!(group in groupToEvents)){continue;}\ngroupToEvents[group]=groupToEvents[group]||[];groupToEvents[group].push(event);}}\nfor(const[group,events]of Object.entries(groupToEvents)){processCallback(group,events);}}\nfunction filterEvents(model,filterCallback){const threads=jsExecutionThreads(model);const events=[];for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;events.push(event);}}\nreturn events;}\nfunction filterAndOrderEvents(model,filterCallback,keyCallback){const threads=jsExecutionThreads(model);const events={};for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;const key=keyCallback(event);if(events[key]){events[key].push(event);}else{events[key]=[event];}}}\nreturn events;}\nfunction unionOfIntervals(intervals){if(intervals.length===0)return[];return tr.b.math.mergeRanges(intervals.map(x=>{return{min:x.start,max:x.end};}),1e-6,function(ranges){return{start:ranges.reduce((acc,x)=>Math.min(acc,x.min),ranges[0].min),end:ranges.reduce((acc,x)=>Math.max(acc,x.max),ranges[0].max)};});}\nfunction hasV8Stats(globalMemoryDump){let v8stats=undefined;globalMemoryDump.iterateContainerDumps(function(dump){v8stats=v8stats||dump.getMemoryAllocatorDumpByFullName('v8');});return!!v8stats;}\nfunction rangeForMemoryDumps(model){const startOfFirstDumpWithV8=model.globalMemoryDumps.filter(hasV8Stats).reduce((start,dump)=>Math.min(start,dump.start),Infinity);if(startOfFirstDumpWithV8===Infinity)return new tr.b.math.Range();return tr.b.math.Range.fromExplicitRange(startOfFirstDumpWithV8,Infinity);}\nclass WindowEndpoint{constructor(start,points){this.points=points;this.lastIndex=-1;this.position=start;this.distanceUntilNextPoint=points[0].position-start;this.cummulativePause=0;this.stackDepth=0;}\nadvance(delta){if(delta<this.distanceUntilNextPoint){this.position+=delta;this.cummulativePause+=this.stackDepth>0?delta:0;this.distanceUntilNextPoint=this.points[this.lastIndex+1].position-this.position;}else{this.position+=this.distanceUntilNextPoint;this.cummulativePause+=this.stackDepth>0?this.distanceUntilNextPoint:0;this.distanceUntilNextPoint=0;this.lastIndex++;if(this.lastIndex<this.points.length){this.stackDepth+=this.points[this.lastIndex].delta;if(this.lastIndex+1<this.points.length){this.distanceUntilNextPoint=this.points[this.lastIndex+1].position-this.position;}}}}}\nfunction mutatorUtilization(start,end,timeWindow,intervals){const mu=new tr.b.math.PiecewiseLinearFunction();if(end-start<=timeWindow){return mu;}\nif(intervals.length===0){mu.push(start,1.0,end-timeWindow,1.0);return mu;}\nintervals=unionOfIntervals(intervals);const points=[];for(const interval of intervals){points.push({position:interval.start,delta:1});points.push({position:interval.end,delta:-1});}\npoints.sort((a,b)=>a.position-b.position);points.push({position:end,delta:0});const left=new WindowEndpoint(start,points);const right=new WindowEndpoint(start,points);const EPSILON=1e-6;while(right.position-left.position<timeWindow-EPSILON){right.advance(timeWindow-(right.position-left.position));}\nwhile(right.lastIndex<points.length){const distanceUntilNextPoint=Math.min(left.distanceUntilNextPoint,right.distanceUntilNextPoint);const position1=left.position;const value1=right.cummulativePause-left.cummulativePause;left.advance(distanceUntilNextPoint);right.advance(distanceUntilNextPoint);if(distanceUntilNextPoint>0){const position2=left.position;const value2=right.cummulativePause-left.cummulativePause;mu.push(position1,1.0-value1/timeWindow,position2,1.0-value2/timeWindow);}}\nreturn mu;}\nfunction addMutatorUtilization(metricName,eventFilter,timeWindows,rendererHelpers,histograms){const histogramMap=new Map();for(const timeWindow of timeWindows){const summaryOptions={avg:false,count:false,max:false,min:true,std:false,sum:false};const description=`The minimum mutator utilization in ${timeWindow}ms time window`;const histogram=histograms.createHistogram(`${metricName}-${timeWindow}ms_window`,tr.b.Unit.byName.normalizedPercentage_biggerIsBetter,[],{summaryOptions,description});histogramMap.set(timeWindow,histogram);}\nfor(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;const pauses=[];for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){if(eventFilter(event)&&event.end>event.start){pauses.push({start:event.start,end:event.end});}}\npauses.sort((a,b)=>a.start-b.start);const start=rendererHelper.mainThread.bounds.min;const end=rendererHelper.mainThread.bounds.max;for(const timeWindow of timeWindows){const mu=mutatorUtilization(start,end,timeWindow,pauses);histogramMap.get(timeWindow).addSample(mu.min);}}}\nreturn{addMutatorUtilization,findParent,forcedGCEventName,filterEvents,filterAndOrderEvents,groupAndProcessEvents,isForcedGarbageCollectionEvent,isFullMarkCompactorEvent,isGarbageCollectionEvent,isIdleTask,isIncrementalMarkingEvent,isLatencyMarkCompactorEvent,isLowMemoryEvent,isMarkCompactorSummaryEvent,isMarkCompactorMarkingSummaryEvent,isMemoryMarkCompactorEvent,isNotForcedMarkCompactorEvent,isNotForcedTopGarbageCollectionEvent,isNotForcedSubGarbageCollectionEvent,isScavengerEvent,isScavengerStackScanningEvent,isSubGarbageCollectionEvent,isTopGarbageCollectionEvent,isTopV8ExecuteEvent,isV8Event,isV8ExecuteEvent,isV8RCSEvent,isCompileRCSCategory,isCompileOptimizeRCSCategory,isCompileUnoptimizeRCSCategory,isCompileParseRCSCategory,mutatorUtilization,rangeForMemoryDumps,subGarbageCollectionEventName,topGarbageCollectionEventName,topGarbageCollectionEventNames,unionOfIntervals,};});'use strict';tr.exportTo('tr.metrics.blink',function(){const BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP={'BlinkGC.AtomicPauseMarkEpilogue':'blink-gc-atomic-pause-mark-epilogue','BlinkGC.AtomicPauseMarkPrologue':'blink-gc-atomic-pause-mark-prologue','BlinkGC.AtomicPauseMarkRoots':'blink-gc-atomic-pause-mark-roots','BlinkGC.IncrementalMarkingStartMarking':'blink-gc-incremental-start','BlinkGC.IncrementalMarkingStep':'blink-gc-incremental-step','BlinkGC.UnifiedMarkingStep':'blink-gc-unified-marking-by-v8','BlinkGC.CompleteSweep':'blink-gc-complete-sweep','BlinkGC.LazySweepInIdle':'blink-gc-sweep-task-foreground','BlinkGC.LazySweepOnAllocation':'blink-gc-sweep-allocation','BlinkGC.AtomicPauseSweepAndCompact':'blink-gc-atomic-pause-sweep-and-compact'};const BLINK_TOP_GC_ROOTS_MARKING_EVENTS=['BlinkGC.VisitRoots'];const BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure'];const BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.IncrementalMarkingStep','BlinkGC.UnifiedMarkingStep'];const BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.IncrementalMarkingStartMarking',].concat(BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS);const BLINK_GC_FORCED_FOREGROUND_MARKING_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.IncrementalMarkingStartMarking','BlinkGC.MarkBailOutObjects','BlinkGC.MarkFlushV8References','BlinkGC.MarkFlushEphemeronPairs',];const BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS=['BlinkGC.ConcurrentMarkingStep'];const BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS=['BlinkGC.CompleteSweep','BlinkGC.LazySweepInIdle','BlinkGC.LazySweepOnAllocation'];const BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS=['BlinkGC.ConcurrentSweepingStep'];const BLINK_TOP_GC_EVENTS=Object.keys(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP).concat(BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS);const ATOMIC_PAUSE_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.AtomicPauseSweepAndCompact'];function blinkGarbageCollectionEventName(event){return BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP[event.title];}\nfunction blinkGarbageCollectionEventNames(){return Object.values(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP);}\nfunction isNonForcedEvent(event){return(!event.args||!event.args.forced)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionEvent(event){return BLINK_TOP_GC_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedNonAggregatedBlinkGarbageCollectionEvent(event){return event.title in BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionAtomicPauseEvent(event){return ATOMIC_PAUSE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionRootsMarkingEvent(event){return BLINK_TOP_GC_ROOTS_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction\nisNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent(event){return BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction\nisNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent(event){return BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionForegroundMarkingEvent(event){return BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionForcedForegroundMarkEvent(event){return BLINK_GC_FORCED_FOREGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent(event){return BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionForegroundSweepingEvent(event){return BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent(event){return BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonNestedNonForcedBlinkGarbageCollectionEvent(event){return isNonForcedBlinkGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isGarbageCollectionEvent);}\nfunction blinkGcMetric(histograms,model){addDurationOfTopEvents(histograms,model);addDurationOfAtomicPause(histograms,model);addDurationOfAtomicPauseTransitiveClosure(histograms,model);addTotalDurationOfTopEvents(histograms,model);addTotalDurationOfBlinkAndV8TopEvents(histograms,model);addTotalDurationOfRootsMarking(histograms,model);addTotalDurationOfMarkingTransitiveClosure(histograms,model);addTotalDurationOfForegroundMarking(histograms,model);addTotalDurationOfForcedForegroundMarking(histograms,model);addTotalDurationOfBackgroundMarking(histograms,model);addTotalDurationOfForegroundSweeping(histograms,model);addTotalDurationOfBackgroundSweeping(histograms,model);}\ntr.metrics.MetricRegistry.register(blinkGcMetric);const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,20,200).addExponentialBins(200,100);function createNumericForTopEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:true,max:true,min:false,std:true,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForTotalEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:false,min:false,std:false,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForUnifiedEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:true,min:false,std:false,sum:true,percentile:[0.90]});return n;}\nfunction addDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedNonAggregatedBlinkGarbageCollectionEvent,blinkGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForTopEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},blinkGarbageCollectionEventNames());}\nfunction addDurationOfAtomicPause(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}\nfunction addDurationOfAtomicPauseTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause-mark-transitive-closure');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}\nfunction addTotalDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionEvent,event=>'blink-gc-total',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-total']);}\nfunction addTotalDurationOfRootsMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionRootsMarkingEvent,event=>'blink-gc-mark-roots',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-roots']);}\nfunction addTotalDurationOfMarkingTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent,event=>'blink-gc-mark-transitive-closure',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-transitive-closure']);}\nfunction addTotalDurationOfForegroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundMarkingEvent,event=>'blink-gc-mark-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-foreground']);}\nfunction addTotalDurationOfForcedForegroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForcedForegroundMarkEvent,event=>'blink-gc-mark-foreground-forced',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-foreground-forced']);}\nfunction addTotalDurationOfBackgroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent,event=>'blink-gc-mark-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-background']);}\nfunction addTotalDurationOfForegroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundSweepingEvent,event=>'blink-gc-sweep-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-sweep-foreground']);}\nfunction addTotalDurationOfBackgroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent,event=>'blink-gc-sweep-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-sweep-background']);}\nfunction isV8OrBlinkTopLevelGarbageCollectionEvent(event){return tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent(event)||isNonNestedNonForcedBlinkGarbageCollectionEvent(event);}\nfunction addTotalDurationOfBlinkAndV8TopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8OrBlinkTopLevelGarbageCollectionEvent,event=>'unified-gc-total',function(name,events){const cpuDuration=createNumericForUnifiedEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['unified-gc-total']);}\nreturn{blinkGcMetric,};});'use strict';tr.exportTo('tr.metrics.blink',function(){function leakDetectionMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper===undefined){throw new Error('Chrome is not present.');}\nconst rendererHelpers=modelHelper.rendererHelpers;if(Object.keys(rendererHelpers).length===0){throw new Error('Renderer process is not present.');}\nconst pids=Object.keys(rendererHelpers);const chromeDumps=tr.metrics.sh.splitGlobalDumpsByBrowserName(model,undefined).get('chrome');const sumCounter=new Map();for(const pid of pids){for(const[key,count]of countLeakedBlinkObjects(chromeDumps,pid)){sumCounter.set(key,(sumCounter.get(key)||0)+count);}}\nfor(const[key,count]of sumCounter){histograms.createHistogram('Leaked '+key,tr.b.Unit.byName.count_smallerIsBetter,count);}\nfor(const[key,count]of sumCounter){if(count>0){throw new Error('Memory leak is found.');}}}\ntr.metrics.MetricRegistry.register(leakDetectionMetric);function countLeakedBlinkObjects(dumps,pid){if(dumps===undefined||dumps.length<2){throw new Error('Expected at least two memory dumps.');}\nconst firstCounter=countBlinkObjects(dumps[0],pid);const lastCounter=countBlinkObjects(dumps[dumps.length-1],pid);const diffCounter=new Map();for(const[key,lastCount]of lastCounter){diffCounter.set(key,lastCount-firstCounter.get(key));}\nreturn diffCounter;}\nfunction countBlinkObjects(dump,pid){const counter=new Map();const processesMemoryDumps=dump.processMemoryDumps;if(processesMemoryDumps[pid]===undefined)return counter;const blinkObjectsDump=processesMemoryDumps[pid].memoryAllocatorDumps.find(dump=>dump.fullName==='blink_objects');for(const v of blinkObjectsDump.children){counter.set(v.name,v.numerics.object_count.value);}\nreturn counter;}\nreturn{leakDetectionMetric,};});'use strict';tr.exportTo('tr.metrics.console',function(){const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e4,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const SOURCES=['all','js','network'];function consoleErrorMetric(histograms,model){const counts={};for(const source of SOURCES){counts[source]={count:0,details:[]};}\nfor(const slice of model.getDescendantEvents()){if(slice.category==='blink.console'&&slice.title==='ConsoleMessage::Error'){const source=slice.args.source.toLowerCase();counts.all.count++;if(slice.args.message){counts.all.details.push({pid:slice.getProcess().pid,...slice.args.message});}\nif(source in counts){counts[source].count++;if(slice.args.message){counts[source].details.push({pid:slice.getProcess().pid,...slice.args.message});}}}\nif(slice.category==='v8.console'&&(slice.title==='V8ConsoleMessage::Exception'||slice.title==='V8ConsoleMessage::Error'||slice.title==='V8ConsoleMessage::Assert')){counts.all.count++;counts.js.count++;}}\nfor(const source of SOURCES){const hist=histograms.createHistogram(`console:error:${source}`,tr.b.Unit.byName.count_smallerIsBetter,{value:counts[source].count,diagnostics:{details:new tr.v.d.GenericSet(counts[source].details)}},{description:`Number of ${source} console error messages`,summaryOptions:SUMMARY_OPTIONS,});}}\ntr.metrics.MetricRegistry.register(consoleErrorMetric);return{consoleErrorMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function getCpuSnapshotsFromModel(model){const snapshots=[];for(const pid in model.processes){const snapshotInstances=model.processes[pid].objects.getAllInstancesNamed('CPUSnapshots');if(!snapshotInstances)continue;for(const object of snapshotInstances[0].snapshots){snapshots.push(object.args.processes);}}\nreturn snapshots;}\nfunction getProcessSumsFromSnapshot(snapshot){const processSums=new Map();for(const processData of snapshot){const processName=processData.name;if(!(processSums.has(processName))){processSums.set(processName,{sum:0.0,paths:new Set()});}\nprocessSums.get(processName).sum+=parseFloat(processData.pCpu);if(processData.path){processSums.get(processName).paths.add(processData.path);}}\nreturn processSums;}\nfunction buildNumericsFromSnapshots(snapshots){const processNumerics=new Map();for(const snapshot of snapshots){const processSums=getProcessSumsFromSnapshot(snapshot);for(const[processName,processData]of processSums.entries()){if(!(processNumerics.has(processName))){processNumerics.set(processName,{numeric:new tr.v.Histogram('cpu:percent:'+processName,tr.b.Unit.byName.normalizedPercentage_smallerIsBetter),paths:new Set()});}\nprocessNumerics.get(processName).numeric.addSample(processData.sum/100.0);for(const path of processData.paths){processNumerics.get(processName).paths.add(path);}}}\nreturn processNumerics;}\nfunction cpuProcessMetric(histograms,model){const snapshots=getCpuSnapshotsFromModel(model);const processNumerics=buildNumericsFromSnapshots(snapshots);for(const[processName,processData]of processNumerics){const numeric=processData.numeric;const missingSnapshotCount=snapshots.length-numeric.numValues;for(let i=0;i<missingSnapshotCount;i++){numeric.addSample(0);}\nnumeric.diagnostics.set('paths',new\ntr.v.d.GenericSet([...processData.paths]));histograms.addHistogram(numeric);}}\ntr.metrics.MetricRegistry.register(cpuProcessMetric);return{cpuProcessMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function mediaMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return;for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const mainThread=rendererHelper.mainThread;if(mainThread===undefined)continue;const videoThreads=rendererHelper.process.findAllThreadsMatching(thread=>(thread.name?thread.name.startsWith('ThreadPoolSingleThreadSharedForegroundBlocking'):false));const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){videoThreads.push(compositorThread);}\nconst audioThreads=rendererHelper.process.findAllThreadsNamed('AudioOutputDevice');if(audioThreads.length===0&&videoThreads.length===0)continue;const processData=new PerProcessData();processData.recordPlayStarts(mainThread);if(!processData.hasPlaybacks)continue;if(videoThreads.length!==0){processData.calculateTimeToVideoPlays(videoThreads);processData.calculateDroppedFrameCounts(videoThreads);}\nif(audioThreads.length!==0){processData.calculateTimeToAudioPlays(audioThreads);}\nprocessData.calculateSeekTimes(mainThread);processData.calculateBufferingTimes(mainThread);processData.addMetricToHistograms(histograms);}}\nclass PerProcessData{constructor(){this.playbackIdToDataMap_=new Map();}\nrecordPlayStarts(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoLoad'){const id=event.args.id;if(this.playbackIdToDataMap_.has(id)){throw new Error('Unexpected multiple initialization of a media playback');}\nthis.playbackIdToDataMap_.set(id,new PerPlaybackData(event.start));}}}\nget hasPlaybacks(){return this.playbackIdToDataMap_.size>0;}\ncalculateTimeToVideoPlays(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processVideoRenderTime(event.start);}}}}\ncalculateTimeToAudioPlays(audioThreads){for(const audioThread of audioThreads){for(const event of audioThread.sliceGroup.getDescendantEvents()){if(event.title==='AudioRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processAudioRenderTime(event.start);}}}}\ncalculateSeekTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoSeek'){this.getPerPlaybackObject_(event.args.id).processDoSeek(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::OnPipelineSeeked'){this.getPerPlaybackObject_(event.args.id).processOnPipelineSeeked(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::BufferingHaveEnough'){this.getPerPlaybackObject_(event.args.id).processBufferingHaveEnough(event.start);}}}\ncalculateBufferingTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::OnEnded'){this.getPerPlaybackObject_(event.args.id).processOnEnded(event.start,event.args.duration);}}}\ncalculateDroppedFrameCounts(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoFramesDropped'){this.getPerPlaybackObject_(event.args.id).processVideoFramesDropped(event.args.count);}}}}\naddMetricToHistograms(histograms){for(const[id,playbackData]of this.playbackIdToDataMap_){playbackData.addMetricToHistograms(histograms);}}\ngetPerPlaybackObject_(playbackId){let perPlaybackObject=this.playbackIdToDataMap_.get(playbackId);if(perPlaybackObject===undefined){perPlaybackObject=new PerPlaybackData(undefined);this.playbackIdToDataMap_.set(playbackId,perPlaybackObject);}\nreturn perPlaybackObject;}}\nclass PerPlaybackData{constructor(playStartTime){this.playStart_=playStartTime;this.timeToVideoPlay_=undefined;this.timeToAudioPlay_=undefined;this.bufferingTime_=undefined;this.droppedFrameCount_=0;this.seekError_=false;this.seekTimes_=new Map();this.currentSeek_=undefined;}\nget timeToVideoPlay(){return this.timeToVideoPlay_;}\nget timeToAudioPlay(){return this.timeToAudioPlay_;}\nget bufferingTime(){return this.bufferingTime_;}\nget droppedFrameCount(){return(this.timeToVideoPlay_!==undefined)?this.droppedFrameCount_:undefined;}\nget seekTimes(){if(this.seekError_||this.currentSeek_!==undefined)return new Map();return this.seekTimes_;}\nprocessVideoRenderTime(videoRenderTime){if(this.playStart_!==undefined&&this.timeToVideoPlay_===undefined){this.timeToVideoPlay_=videoRenderTime-this.playStart_;}}\nprocessAudioRenderTime(audioRenderTime){if(this.playStart_!==undefined&&this.timeToAudioPlay_===undefined){this.timeToAudioPlay_=audioRenderTime-this.playStart_;}}\nprocessVideoFramesDropped(count){this.droppedFrameCount_+=count;}\nprocessDoSeek(target,startTime){if(this.currentSeek_!==undefined){this.seekError_=true;return;}\nthis.currentSeek_={target,startTime};this.seekTimes_.set(target,this.currentSeek_);}\nprocessOnPipelineSeeked(target,time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}\nif(currentSeek.target!==target){this.seekError_=true;return;}\nif(currentSeek.pipelineSeekTime!==undefined){this.seekError_=true;return;}\ncurrentSeek.pipelineSeekTime=time-currentSeek.startTime;}\nprocessBufferingHaveEnough(time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}\nif(currentSeek.pipelineSeekTime===undefined){return;}\ncurrentSeek.seekTime=time-currentSeek.startTime;this.currentSeek_=undefined;}\nprocessOnEnded(playEndTime,duration){if(this.playStart_===undefined)return;if(this.seekTimes_.size!==0||this.seekError_)return;if(this.bufferingTime_!==undefined)return;duration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);const playTime=playEndTime-this.playStart_;if(this.timeToVideoPlay_!==undefined){this.bufferingTime_=playTime-duration-this.timeToVideoPlay_;}else if(this.timeToAudioPlay!==undefined){this.bufferingTime_=playTime-duration-this.timeToAudioPlay_;}}\naddMetricToHistograms(histograms){this.addSample_(histograms,'time_to_video_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToVideoPlay);this.addSample_(histograms,'time_to_audio_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToAudioPlay);this.addSample_(histograms,'dropped_frame_count',tr.b.Unit.byName.count_smallerIsBetter,this.droppedFrameCount);for(const[key,value]of this.seekTimes.entries()){const keyString=key.toString().replace('.','_');this.addSample_(histograms,'pipeline_seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.pipelineSeekTime);this.addSample_(histograms,'seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.seekTime);}\nthis.addSample_(histograms,'buffering_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.bufferingTime);}\naddSample_(histograms,name,unit,sample){if(sample===undefined)return;const histogram=histograms.getHistogramNamed(name);if(histogram===undefined){histograms.createHistogram(name,unit,sample);}else{histogram.addSample(sample);}}}\ntr.metrics.MetricRegistry.register(mediaMetric);return{mediaMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function memoryAblationMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper.gpuHelper)return;const gpuProcess=modelHelper.gpuHelper.process;const events=[...gpuProcess.findTopmostSlicesNamed('Memory.GPU.PeakMemoryUsage.AblationTimes')];const allocHistogram=histograms.createHistogram('Ablation Alloc',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,10000,20),description:'The amount of time spent allocating the ablation '+'memory',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const deallocHistogram=histograms.createHistogram('Ablation Dealloc',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,10000,20),description:'The amount of time spent deallocating the ablation '+'memory',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});for(let i=0;i<events.length;i++){allocHistogram.addSample(events[i].args.alloc);deallocHistogram.addSample(events[i].args.dealloc);}}\ntr.metrics.MetricRegistry.register(memoryAblationMetric,{requiredCategories:['gpu.memory'],});return{memoryAblationMetric,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const UNKNOWN_THREAD_NAME='Unknown';const CATEGORY_THREAD_MAP=new Map();CATEGORY_THREAD_MAP.set('total_all',[/.*/]);CATEGORY_THREAD_MAP.set('browser',[/^Browser Compositor$/,/^CrBrowserMain$/]);CATEGORY_THREAD_MAP.set('display_compositor',[/^VizCompositorThread$/]);CATEGORY_THREAD_MAP.set('GPU',[/^Chrome_InProcGpuThread$/,/^CrGpuMain$/]);CATEGORY_THREAD_MAP.set('IO',[/IOThread/]);CATEGORY_THREAD_MAP.set('raster',[/CompositorTileWorker/]);CATEGORY_THREAD_MAP.set('renderer_compositor',[/^Compositor$/]);CATEGORY_THREAD_MAP.set('renderer_main',[/^CrRendererMain$/]);CATEGORY_THREAD_MAP.set('total_rendering',[/^Browser Compositor$/,/^Chrome_InProcGpuThread$/,/^Compositor$/,/CompositorTileWorker/,/^CrBrowserMain$/,/^CrGpuMain$/,/^CrRendererMain$/,/IOThread/,/^VizCompositorThread$/]);const ALL_CATEGORIES=[...CATEGORY_THREAD_MAP.keys(),'other'];function addValueToMap_(map,key,value){const oldValue=map.get(key)||0;map.set(key,oldValue+value);}\nfunction addToArrayInMap_(map,key,value){const arr=map.get(key)||[];arr.push(value);map.set(key,arr);}\nfunction*getCategories_(threadName){let isOther=true;for(const[category,regexps]of CATEGORY_THREAD_MAP){for(const regexp of regexps){if(regexp.test(threadName)){if(category!=='total_all')isOther=false;yield category;break;}}}\nif(isOther)yield'other';}\nfunction addCpuUtilizationHistograms(histograms,model,segments,segmentCostFunc,histogramNameFunc,description){const categoryValues=new Map();for(const segment of segments){const threadValues=new Map();for(const thread of model.getAllThreads()){addValueToMap_(threadValues,thread.name||UNKNOWN_THREAD_NAME,segmentCostFunc(thread,segment));}\nfor(const[threadName,coresPerSec]of threadValues){for(const category of getCategories_(threadName)){addToArrayInMap_(categoryValues,category,coresPerSec);}}}\nconst unit=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;for(const category of ALL_CATEGORIES){const values=categoryValues.get(category)||0;if(!values)continue;const avg=values.reduce((sum,e)=>sum+e,0)/segments.length;histograms.createHistogram(histogramNameFunc(category),unit,avg,{description,summaryOptions:{},});}}\nconst SUMMARY_OPTIONS={percentile:[0.90,0.95],ci:[0.95],};return{addCpuUtilizationHistograms,SUMMARY_OPTIONS,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const PRESENT_EVENT='Display::FrameDisplayed';const DISPLAY_EVENT='BenchmarkInstrumentation::DisplayRenderingStats';const DRM_EVENT='DrmEventFlipComplete';const SURFACE_FLINGER_EVENT='vsync_before';const COMPOSITOR_FRAME_PRESENTED_EVENT='FramePresented';const MIN_FRAME_LENGTH=0.5;const MIN_FRAME_COUNT=10;const PAUSE_THRESHOLD=20;const ASH_ENVIRONMENT='ash';const BROWSER_ENVIRONMENT='browser';class FrameEvent{constructor(event){this.event_=event;}\nget eventStart(){return this.event_.start;}\nget frameStart(){if(this.event_.title!==DRM_EVENT)return this.event_.start;const data=this.event_.args.data;const TIME=tr.b.UnitScale.TIME;return tr.b.convertUnit(data['vblank.tv_sec'],TIME.SEC,TIME.MILLI_SEC)+\ntr.b.convertUnit(data['vblank.tv_usec'],TIME.MICRO_SEC,TIME.MILLI_SEC);}\nget event(){return this.event_;}}\nclass FrameSegment{constructor(frameEvent,duration){this.frameEvent_=frameEvent;this.duration_=duration;this.segment_=new tr.model.um.Segment(frameEvent.eventStart,duration);this.length_=undefined;}\nupdateLength(refreshPeriod){this.length_=this.duration_/refreshPeriod;}\nget segment(){return this.segment_;}\nget boundsRange(){return this.segment_.boundsRange;}\nget length(){return this.length_;}\nget duration(){return this.duration_;}\nget event(){return this.frameEvent_.event;}}\nfunction getDisplayCompositorPresentationEventsExp_(modelHelper){if(!modelHelper)return[];function findEventsFromProcess(process){const events=[];for(const event of process.findTopmostSlicesNamed(PRESENT_EVENT)){events.push(event);}\nreturn events;}\nif(modelHelper.gpuHelper){const events=findEventsFromProcess(modelHelper.gpuHelper.process);if(events.length>0)return events;}\nif(!modelHelper.browserProcess)return[];return findEventsFromProcess(modelHelper.browserProcess);}\nfunction getDisplayCompositorPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];let events=[];if(modelHelper.surfaceFlingerProcess){events=[...modelHelper.surfaceFlingerProcess.findTopmostSlicesNamed(SURFACE_FLINGER_EVENT)];if(events.length>0)return events;}\nif(modelHelper.gpuHelper){const gpuProcess=modelHelper.gpuHelper.process;events=[...gpuProcess.findTopmostSlicesNamed(DRM_EVENT)];if(events.length>0)return events;events=[...gpuProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];if(events.length>0)return events;}\nreturn[...modelHelper.browserProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];}\nfunction getUIPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];const legacyEvents=[];const eventsByEnvironment={};eventsByEnvironment[ASH_ENVIRONMENT]=[];eventsByEnvironment[BROWSER_ENVIRONMENT]=[];for(const event of modelHelper.browserProcess.findTopmostSlicesNamed(COMPOSITOR_FRAME_PRESENTED_EVENT)){if(!('environment'in event.args)){legacyEvents.push(event);}else{eventsByEnvironment[event.args.environment].push(event);}}\nif(eventsByEnvironment[ASH_ENVIRONMENT].length>0){return eventsByEnvironment[ASH_ENVIRONMENT];}\nif(eventsByEnvironment[BROWSER_ENVIRONMENT].length>0){return eventsByEnvironment[BROWSER_ENVIRONMENT];}\nreturn legacyEvents;}\nfunction computeFrameSegments_(events,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const frameEvents=events.map(e=>new FrameEvent(e));const frameSegments=[];for(const segment of segments){const filtered=segment.boundsRange.filterArray(frameEvents,x=>x.eventStart);if(filtered.length<minFrameCount)continue;for(let i=1;i<filtered.length;i++){const duration=filtered[i].frameStart-filtered[i-1].frameStart;frameSegments.push(new FrameSegment(filtered[i-1],duration));}}\nreturn frameSegments;}\nfunction addBasicFrameTimeHistograms_(histograms,frameSegments,prefix){const frameTimes=(frameSegments.length===0)?[0]:frameSegments.map(x=>x.duration);histograms.createHistogram(`${prefix}frame_times`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,frameTimes,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,50,20),description:'Raw frame times.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram(`${prefix}percentage_smooth`,tr.b.Unit.byName.unitlessNumber_biggerIsBetter,100*tr.b.math.Statistics.sum(frameTimes,(x=>(x<17?1:0)))/frameTimes.length,{description:'Percentage of frames that were hitting 60 FPS.',summaryOptions:{},});}\nfunction addFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const events=getDisplayCompositorPresentationEvents_(modelHelper);if(!events)return;addFrameTimeHistogramsHelper(histograms,model,segments,events,'',true,minFrameCount);const eventsExp=getDisplayCompositorPresentationEventsExp_(modelHelper);if(eventsExp&&eventsExp.length>0){addFrameTimeHistogramsHelper(histograms,model,segments,eventsExp,'exp_',false,minFrameCount);}}\nfunction addFrameTimeHistogramsHelper(histograms,model,segments,events,prefix,addCpuMetrics,minFrameCount){const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,prefix+'');if(addCpuMetrics){tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getCpuTimeForRange(segment.boundsRange),category=>`thread_${category}_cpu_time_per_frame`,'CPU cores of a thread group per frame');tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getNumToplevelSlicesForRange(segment.boundsRange),category=>`tasks_per_frame_${category}`,'Number of tasks of a thread group per frame');let totalWallTime=0;let totalCpuTime=0;for(const segment of frameSegments){for(const thread of model.getAllThreads()){totalCpuTime+=thread.getCpuTimeForRange(segment.boundsRange);totalWallTime+=thread.getWallTimeForRange(segment.boundsRange);}}\nhistograms.createHistogram('cpu_wall_time_ratio',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,totalCpuTime/totalWallTime,{description:'Ratio of total cpu-time vs. wall-time.',summaryOptions:{},});}\nconst refreshPeriod=getRefreshPeriod(model,frameSegments.map(fs=>fs.boundsRange));frameSegments.forEach(fs=>fs.updateLength(refreshPeriod));const validFrames=frameSegments.filter(fs=>fs.length>=MIN_FRAME_LENGTH);const totalFrameDuration=tr.b.math.Statistics.sum(frameSegments,fs=>fs.duration);addJankCountHistograms(histograms,validFrames,prefix);const frameLengths=validFrames.map(frame=>frame.length);histograms.createHistogram(prefix+'frame_lengths',tr.b.Unit.byName.unitlessNumber_smallerIsBetter,frameLengths,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,5,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Frame times in vsyncs.'});histograms.createHistogram(prefix+'avg_surface_fps',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,frameLengths.length/tr.b.convertUnit(totalFrameDuration,tr.b.UnitScale.TIME.MILLI_SEC,tr.b.UnitScale.TIME.SEC),{description:'Average frames per second.',summaryOptions:{},});}\nfunction addUIFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const events=getUIPresentationEvents_(model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper));if(events.length===0)return;const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,'ui_');}\nfunction addJankCountHistograms(histograms,validFrames,prefix){const jankEvents=[];for(let i=1;i<validFrames.length;i++){const change=Math.round((validFrames[i].length-validFrames[i-1].length));if(change>0&&change<PAUSE_THRESHOLD){jankEvents.push(validFrames[i].event);}}\nconst jankCount=jankEvents.length;const diagnostics=new tr.v.d.DiagnosticMap();diagnostics.set('events',new tr.v.d.RelatedEventSet(jankEvents));diagnostics.set('timestamps',new tr.v.d.GenericSet(jankEvents.map(e=>e.start)));const histogram=histograms.createHistogram(prefix+'jank_count',tr.b.Unit.byName.count_smallerIsBetter,{value:jankCount,diagnostics},{description:'Number of changes in frame rate.',summaryOptions:{},});}\nfunction getRefreshPeriod(model,ranges){for(const metadata of model.metadata){if(metadata.value&&metadata.value.surface_flinger){return metadata.value.surface_flinger.refresh_period;}}\nconst FRAME_LENGTH=1000.0/60;const BEGIN_FRAME_ARGS='Scheduler::BeginFrame';const FRAME_INTERVAL='interval_us';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==BEGIN_FRAME_ARGS)continue;const data=slice.args.args;if(!(FRAME_INTERVAL in data)){throw new Error(`${FRAME_INTERVAL} is missing`);}\nreturn tr.b.convertUnit(data[FRAME_INTERVAL],tr.b.UnitScale.TIME.MICRO_SEC,tr.b.UnitScale.TIME.MILLI_SEC);}}\nreturn FRAME_LENGTH;}\nreturn{addFrameTimeHistograms,addUIFrameTimeHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const RGB_DECODE_EVENT='ImageFrameGenerator::decode';const YUV_DECODE_EVENT='ImageFrameGenerator::decodeToYUV';const BLINK_GPU_RASTER_DECODE_EVENT='GpuImageDecodeCache::DecodeImage';const BLINK_SOFTWARE_RASTER_DECODE_EVENT='SoftwareImageDecodeCache::'+'DecodeImageInTask';function getImageDecodingEvents_(modelHelper,ranges){if(!modelHelper||!modelHelper.rendererHelpers)return[];const events=[];for(const renderer of Object.values(modelHelper.rendererHelpers)){for(const thread of renderer.rasterWorkerThreads){const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title===RGB_DECODE_EVENT||slice.title===YUV_DECODE_EVENT||slice.title===BLINK_GPU_RASTER_DECODE_EVENT||slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT){events.push(slice);}}}}\nreturn events;}\nfunction addImageDecodeTimeHistograms(histograms,model,segments){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const decodeEvents=getImageDecodingEvents_(modelHelper,segments.map(s=>s.boundsRange));if(!decodeEvents)return;histograms.createHistogram('rgb_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===RGB_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink RGB decoding path for a chunk '+'of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('yuv_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===YUV_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink YUV decoding path for a '+'chunk of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_gpu_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_GPU_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'GpuImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_software_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'SoftwareImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});}\nreturn{addImageDecodeTimeHistograms};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const IMPL_THREAD_RENDERING_STATS_EVENT='BenchmarkInstrumentation::ImplThreadRenderingStats';const VISIBLE_CONTENT_DATA='visible_content_area';const APPROXIMATED_VISIBLE_CONTENT_DATA='approximated_visible_content_area';const CHECKERBOARDED_VISIBLE_CONTENT_DATA='checkerboarded_visible_content_area';function addPixelsHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;const approximatedPixelPercentages=[];const checkerboardedPixelPercentages=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==IMPL_THREAD_RENDERING_STATS_EVENT)continue;const data=slice.args.data;if(!(VISIBLE_CONTENT_DATA in data)){throw new Error(`${VISIBLE_CONTENT_DATA} is missing`);}\nconst visibleContentArea=data[VISIBLE_CONTENT_DATA];if(visibleContentArea===0){continue;}\nif(APPROXIMATED_VISIBLE_CONTENT_DATA in data){approximatedPixelPercentages.push(data[APPROXIMATED_VISIBLE_CONTENT_DATA]/visibleContentArea);}\nif(CHECKERBOARDED_VISIBLE_CONTENT_DATA in data){checkerboardedPixelPercentages.push(data[CHECKERBOARDED_VISIBLE_CONTENT_DATA]/visibleContentArea);}}}\nhistograms.createHistogram('mean_pixels_approximated',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(approximatedPixelPercentages),{description:'Percentage of pixels that were approximated '+'(checkerboarding, low-resolution tiles, etc.).',summaryOptions:{},});histograms.createHistogram('mean_pixels_checkerboarded',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(checkerboardedPixelPercentages),{description:'Percentage of pixels that were checkerboarded.',summaryOptions:{},});}\nreturn{addPixelsHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const BEGIN_MAIN_FRAME_EVENT='ThreadProxy::BeginMainFrame';const SEND_BEGIN_FRAME_EVENT='ThreadProxy::ScheduledActionSendBeginMainFrame';function getEventTimesByBeginFrameId_(thread,title,ranges){const out=new Map();const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==title)continue;const id=slice.args.begin_frame_id;if(id===undefined)throw new Error('Event is missing begin_frame_id');if(out.has(id))throw new Error(`There must be exactly one ${title}`);out.set(id,slice.start);}\nreturn out;}\nfunction addQueueingDurationHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let targetRenderers=chromeHelper.telemetryHelper.renderersWithIR;if(targetRenderers.length===0){targetRenderers=Object.values(chromeHelper.rendererHelpers);}\nconst queueingDurations=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of targetRenderers){const mainThread=rendererHelper.mainThread;const compositorThread=rendererHelper.compositorThread;if(mainThread===undefined||compositorThread===undefined)continue;const beginMainFrameTimes=getEventTimesByBeginFrameId_(mainThread,BEGIN_MAIN_FRAME_EVENT,ranges);const sendBeginFrameTimes=getEventTimesByBeginFrameId_(compositorThread,SEND_BEGIN_FRAME_EVENT,ranges);for(const[id,time]of sendBeginFrameTimes){queueingDurations.push(beginMainFrameTimes.get(id)-time);}}\nhistograms.createHistogram('queueing_durations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,queueingDurations,{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(0.01,2,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Time between ScheduledActionSendBeginMainFrame in '+'the compositor thread and the corresponding '+'BeginMainFrame in the main thread.'});}\nreturn{addQueueingDurationHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const GESTURE_EVENT='SyntheticGestureController::running';function renderingMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let segments=chromeHelper.telemetryHelper.irSegments;if(segments.length===0){segments=chromeHelper.telemetryHelper.animationSegments;}\nif(segments.length>0){tr.metrics.rendering.addFrameTimeHistograms(histograms,model,segments);tr.metrics.rendering.addImageDecodeTimeHistograms(histograms,model,segments);tr.metrics.rendering.addPixelsHistograms(histograms,model,segments);tr.metrics.rendering.addQueueingDurationHistograms(histograms,model,segments);}\nconst uiSegments=chromeHelper.telemetryHelper.uiSegments;if(uiSegments.length>0){tr.metrics.rendering.addUIFrameTimeHistograms(histograms,model,chromeHelper.telemetryHelper.uiSegments);}}\ntr.metrics.MetricRegistry.register(renderingMetric,{requiredCategories:['benchmark','toplevel'],});return{renderingMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_smallerIsBetter=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(80e3,30);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function reportedByPageMetric(histograms,model){const timeToViewable=histograms.createHistogram('reported_by_page:time_to_viewable',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start'+'to telemetry:reported_by_page:viewable',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractive=histograms.createHistogram('reported_by_page:time_to_interactive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start '+'to telemetry:reported_by_page:interactive',summaryOptions:SUMMARY_OPTIONS,});const benchmarkTime=histograms.createHistogram('reported_by_page:benchmark_time',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from telemetry:reported_by_page:benchmark_begin '+'to telemetry:reported_by_page:benchmark_end',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:viewable',timeToViewable);measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:interactive',timeToInteractive);measureUserTime(rendererHelper,'telemetry:reported_by_page:benchmark_begin','telemetry:reported_by_page:benchmark_end',benchmarkTime);}}\nfunction measureUserTime(rendererHelper,startName,endName,histogram){const startEventByNavId=new Map();for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){const navId=getNavigationId(event);if(!navId)continue;if(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',startName)){startEventByNavId.set(navId,event);}\nif(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',endName)){if(!startEventByNavId.has(navId)){throw Error(`Missing ${startName} for ${endName} at {event.start}`);}\nconst range=tr.b.math.Range.fromExplicitRange(startEventByNavId.get(navId).start,event.start);histogram.addSample(range.duration);startEventByNavId.delete(navId);}}}\nfunction getNavigationId(event){return event.args.data&&event.args.data.navigationId;}\ntr.metrics.MetricRegistry.register(reportedByPageMetric);return{reportedByPageMetric};});'use strict';tr.exportTo('tr.metrics',function(){function sampleExceptionMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}\nconst chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}\nhistograms.addHistogram(hist);throw new Error('There was an error');}\ntr.metrics.MetricRegistry.register(sampleExceptionMetric);return{sampleExceptionMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function sampleMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}\nconst chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}\nhistograms.addHistogram(hist);}\ntr.metrics.MetricRegistry.register(sampleMetric);return{sampleMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const HANDLE_INPUT_EVENT_TITLE='WebViewImpl::handleInputEvent';function findPrecedingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndex<eventsB.length;eventsBIndex++){if(eventsB[eventsBIndex].start>eventA.start)break;}\nif(eventsBIndex>0){events.set(eventA,eventsB[eventsBIndex-1]);}}\nreturn events;}\nfunction findFollowingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndex<eventsB.length;eventsBIndex++){if(eventsB[eventsBIndex].start>=eventA.start)break;}\nif(eventsBIndex>=0&&eventsBIndex<eventsB.length){events.set(eventA,eventsB[eventsBIndex]);}}\nreturn events;}\nfunction getSpaNavigationStartCandidates_(rendererHelper,browserHelper){const isNavStartEvent=e=>{if(e.title===HANDLE_INPUT_EVENT_TITLE&&e.args.type==='MouseUp'){return true;}\nreturn e.title==='NavigationControllerImpl::GoToIndex';};return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents(),...browserHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavStartEvent);}\nfunction getSpaNavigationEvents_(rendererHelper){const isNavEvent=e=>e.category==='blink'&&e.title==='FrameLoader::updateForSameDocumentNavigation';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavEvent);}\nfunction getInputLatencyEvents_(browserHelper){const isInputLatencyEvent=e=>e.title==='InputLatency::MouseUp';return browserHelper.getAllAsyncSlicesMatching(isInputLatencyEvent);}\nfunction getInputLatencyEventByBindIdMap_(browserHelper){const inputLatencyEventByBindIdMap=new Map();for(const event of getInputLatencyEvents_(browserHelper)){inputLatencyEventByBindIdMap.set(event.args.data.trace_id,event);}\nreturn inputLatencyEventByBindIdMap;}\nfunction getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper){const mainThread=rendererHelper.mainThread;const spaNavEvents=getSpaNavigationEvents_(rendererHelper);const navStartCandidates=getSpaNavigationStartCandidates_(rendererHelper,browserHelper).sort(tr.importer.compareEvents);const spaNavEventToNavStartCandidateMap=findPrecedingEvents_(spaNavEvents,navStartCandidates);const inputLatencyEventByBindIdMap=getInputLatencyEventByBindIdMap_(browserHelper);const spaNavEventToNavStartEventMap=new Map();for(const[spaNavEvent,navStartCandidate]of\nspaNavEventToNavStartCandidateMap){if(navStartCandidate.title===HANDLE_INPUT_EVENT_TITLE){const inputLatencySlice=inputLatencyEventByBindIdMap.get(Number(navStartCandidate.parentSlice.bindId));if(inputLatencySlice){spaNavEventToNavStartEventMap.set(spaNavEvent,inputLatencySlice);}}else{spaNavEventToNavStartEventMap.set(spaNavEvent,navStartCandidate);}}\nreturn spaNavEventToNavStartEventMap;}\nfunction getFirstPaintEvents_(rendererHelper){const isFirstPaintEvent=e=>e.category==='blink'&&e.title==='PaintLayerCompositor::updateIfNeededRecursive';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isFirstPaintEvent);}\nfunction getSpaNavigationEventToFirstPaintEventMap_(rendererHelper){const spaNavEvents=getSpaNavigationEvents_(rendererHelper).sort(tr.importer.compareEvents);const firstPaintEvents=getFirstPaintEvents_(rendererHelper).sort(tr.importer.compareEvents);return findFollowingEvents_(spaNavEvents,firstPaintEvents);}\nfunction findSpaNavigationsOnRenderer(rendererHelper,browserHelper){const spaNavEventToNavStartMap=getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper);const spaNavEventToFirstPaintEventMap=getSpaNavigationEventToFirstPaintEventMap_(rendererHelper);const spaNavigations=[];for(const[spaNavEvent,navStartEvent]of\nspaNavEventToNavStartMap){if(spaNavEventToFirstPaintEventMap.has(spaNavEvent)){const firstPaintEvent=spaNavEventToFirstPaintEventMap.get(spaNavEvent);const isNavStartAsyncSlice=navStartEvent instanceof tr.model.AsyncSlice;spaNavigations.push({navStartCandidates:{inputLatencyAsyncSlice:isNavStartAsyncSlice?navStartEvent:undefined,goToIndexSlice:isNavStartAsyncSlice?undefined:navStartEvent},firstPaintEvent,url:spaNavEvent.args.url});}}\nreturn spaNavigations;}\nreturn{findSpaNavigationsOnRenderer,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function getWallClockSelfTime_(event,rangeOfInterest){if(event.duration===0)return 0;const selfTimeRanges=[rangeOfInterest.findIntersection(event.range)];for(const subSlice of event.subSlices){if(selfTimeRanges.length===0)return 0;const lastRange=selfTimeRanges.pop();selfTimeRanges.push(...tr.b.math.Range.findDifference(lastRange,subSlice.range));}\nreturn tr.b.math.Statistics.sum(selfTimeRanges,r=>r.duration);}\nfunction getCPUSelfTime_(event,rangeOfInterest){if(event.duration===0||event.selfTime===0)return 0;if(event.cpuSelfTime===undefined)return 0;const cpuTimeDensity=event.cpuSelfTime/event.selfTime;return getWallClockSelfTime_(event,rangeOfInterest)*cpuTimeDensity;}\nfunction generateTimeBreakdownTree(mainThread,rangeOfInterest,getEventSelfTime){if(mainThread===null)return;const breakdownTree={};for(const title of\ntr.e.chrome.ChromeUserFriendlyCategoryDriver.ALL_TITLES){breakdownTree[title]={total:0,events:{}};}\nfor(const event of mainThread.sliceGroup.childEvents()){if(!rangeOfInterest.intersectsRangeExclusive(event.range))continue;const eventSelfTime=getEventSelfTime(event,rangeOfInterest);const title=tr.e.chrome.ChromeUserFriendlyCategoryDriver.fromEvent(event);breakdownTree[title].total+=eventSelfTime;if(breakdownTree[title].events[event.title]===undefined){breakdownTree[title].events[event.title]=0;}\nbreakdownTree[title].events[event.title]+=eventSelfTime;let timeIntersectionRatio=0;if(event.duration>0){timeIntersectionRatio=rangeOfInterest.findExplicitIntersectionDuration(event.start,event.end)/event.duration;}\nconst v8Runtime=event.args['runtime-call-stat'];if(v8Runtime!==undefined){const v8RuntimeObject=JSON.parse(v8Runtime);for(const runtimeCall in v8RuntimeObject){if(v8RuntimeObject[runtimeCall].length===2){if(breakdownTree.v8_runtime.events[runtimeCall]===undefined){breakdownTree.v8_runtime.events[runtimeCall]=0;}\nconst runtimeTime=tr.b.Unit.timestampFromUs(v8RuntimeObject[runtimeCall][1]*timeIntersectionRatio);breakdownTree.v8_runtime.total+=runtimeTime;breakdownTree.v8_runtime.events[runtimeCall]+=runtimeTime;}}}}\nreturn breakdownTree;}\nfunction addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEvents,networkEvents,rangeOfInterest){const mainThreadEventRanges=tr.b.math.convertEventsToRanges(mainThreadEvents);const networkEventRanges=tr.b.math.convertEventsToRanges(networkEvents);const eventRanges=mainThreadEventRanges.concat(networkEventRanges);const idleRanges=tr.b.math.findEmptyRangesBetweenRanges(eventRanges,rangeOfInterest);const totalFreeDuration=tr.b.math.Statistics.sum(idleRanges,range=>range.duration);breakdownTree.idle={total:totalFreeDuration,events:{}};let totalBlockedDuration=rangeOfInterest.duration;for(const[title,component]of Object.entries(breakdownTree)){if(title==='v8_runtime')continue;totalBlockedDuration-=component.total;}\nbreakdownTree.blocked_on_network={total:Math.max(totalBlockedDuration,0),events:{}};}\nfunction generateWallClockTimeBreakdownTree(mainThread,networkEvents,rangeOfInterest){const breakdownTree=generateTimeBreakdownTree(mainThread,rangeOfInterest,getWallClockSelfTime_);const mainThreadEventsInRange=tr.model.helpers.getSlicesIntersectingRange(rangeOfInterest,mainThread.sliceGroup.topLevelSlices);addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEventsInRange,networkEvents,rangeOfInterest);return breakdownTree;}\nfunction generateCpuTimeBreakdownTree(mainThread,rangeOfInterest){return generateTimeBreakdownTree(mainThread,rangeOfInterest,getCPUSelfTime_);}\nreturn{generateTimeBreakdownTree,generateWallClockTimeBreakdownTree,generateCpuTimeBreakdownTree,};});'use strict';tr.exportTo('tr.e.chrome',function(){const LCP_CANDIDATE_EVENT_TITLE='NavStartToLargestContentfulPaint::Candidate::AllFrames::UKM';const LCP_INVALIDATE_EVENT_TITLE='NavStartToLargestContentfulPaint::Invalidate::AllFrames::UKM';class LcpEvent{constructor(event){if(!LcpInvalidateEvent.isLcpInvalidateEvent(event)&&!LcpCandidateEvent.isLcpCandidateEvent(event)){throw new Error('The LCP event should be either a candidate event or'+'an invalidate event.');}\nif(event.start===undefined||event.args.main_frame_tree_node_id===undefined){throw new Error('The LCP event is in unexpected format.');}\nthis.start=event.start;this.mainFrameTreeNodeId=event.args.main_frame_tree_node_id;}}\nclass LcpCandidateEvent extends LcpEvent{constructor(event){super(event);const{durationInMilliseconds,size,type,inMainFrame}=event.args.data;if(durationInMilliseconds===undefined||size===undefined||type===undefined||inMainFrame===undefined||event.args.main_frame_tree_node_id===undefined||!LcpCandidateEvent.isLcpCandidateEvent(event)){throw new Error('The LCP candidate event is in unexpected format.');}\nthis.durationInMilliseconds=durationInMilliseconds;this.size=size;this.type=type;this.inMainFrame=inMainFrame;}\nstatic isLcpCandidateEvent(event){return event.title===LCP_CANDIDATE_EVENT_TITLE;}}\nclass LcpInvalidateEvent extends LcpEvent{constructor(event){super(event);if(!LcpInvalidateEvent.isLcpInvalidateEvent(event)){throw new Error('The LCP invalidate event is in unexpected format.');}}\nstatic isLcpInvalidateEvent(event){return event.title===LCP_INVALIDATE_EVENT_TITLE;}}\nclass LargestContentfulPaint{constructor(allBrowserEvents){this.allBrowserEvents=allBrowserEvents;}\nfindCandidates(){const finalLcpEvents=this.findFinalLcpEventOfEachNavigation(this.allBrowserEvents);const finalCandidates=finalLcpEvents.filter(finalLcpEvent=>!LcpInvalidateEvent.isLcpInvalidateEvent(finalLcpEvent));return finalCandidates;}\nfindFinalLcpEventOfEachNavigation(allBrowserEvents){const lcpEvents=[];for(const lcpEvent of allBrowserEvents){if(LcpCandidateEvent.isLcpCandidateEvent(lcpEvent)){lcpEvents.push(new LcpCandidateEvent(lcpEvent));}else if(LcpInvalidateEvent.isLcpInvalidateEvent(lcpEvent)){lcpEvents.push(new LcpInvalidateEvent(lcpEvent));}}\nconst lcpEventsGroupedByNavigation=new Map();for(const e of lcpEvents){const key=e.mainFrameTreeNodeId;if(!lcpEventsGroupedByNavigation.has(key)){lcpEventsGroupedByNavigation.set(key,[]);}\nlcpEventsGroupedByNavigation.get(key).push(e);}\nconst finalLcpEventOfEachNavigation=[];for(const lcpEventList of lcpEventsGroupedByNavigation.values()){lcpEventList.sort((a,b)=>a.start-b.start);finalLcpEventOfEachNavigation.push(lcpEventList[lcpEventList.length-1]);}\nreturn finalLcpEventOfEachNavigation;}}\nreturn{LCP_CANDIDATE_EVENT_TITLE,LCP_INVALIDATE_EVENT_TITLE,LargestContentfulPaint,};});'use strict';tr.exportTo('tr.b.math',function(){function earthMoversDistance(firstHistogram,secondHistogram){const buckets=firstHistogram.length;if(secondHistogram.length!==buckets){throw new Error('Histograms have a different number of bins.');}\nconst arrSum=arr=>arr.reduce((a,b)=>a+b,0);if(arrSum(firstHistogram)!==arrSum(secondHistogram)){throw new Error('The histograms\\' sizes don\\'t match.');}\nlet total=0;let remainder=0;for(let bucket=0;bucket<buckets;bucket++){remainder+=secondHistogram[bucket]-\nfirstHistogram[bucket];total+=Math.abs(remainder);}\nreturn total;}\nreturn{earthMoversDistance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const earthMoversDistance=tr.b.math.earthMoversDistance;class SpeedIndex{static getSnapshotsProgress_(timestampedColorHistograms){const numberOfScreenshots=timestampedColorHistograms.length;const firstHistogram=timestampedColorHistograms[0].colorHistogram;const lastHistogram=timestampedColorHistograms[numberOfScreenshots-1].colorHistogram;const totalDistance=earthMoversDistance(firstHistogram[0],lastHistogram[0])+\nearthMoversDistance(firstHistogram[1],lastHistogram[1])+\nearthMoversDistance(firstHistogram[2],lastHistogram[2]);if(totalDistance===0){return[{value:1,ts:timestampedColorHistograms[0].ts}];}\nconst snapshotsProgress=new Array(numberOfScreenshots);for(let i=0;i<numberOfScreenshots;i++){const histogram=timestampedColorHistograms[i].colorHistogram;const distance=earthMoversDistance(histogram[0],lastHistogram[0])+\nearthMoversDistance(histogram[1],lastHistogram[1])+\nearthMoversDistance(histogram[2],lastHistogram[2]);const moved=Math.max(totalDistance-distance,0);snapshotsProgress[i]={value:(moved/totalDistance),ts:timestampedColorHistograms[i].ts};}\nreturn snapshotsProgress;}\nstatic speedIndexFromSnapshotsProgress_(snapshotsProgress){if(snapshotsProgress.length===0){throw new Error('No snapshots were provided.');}\nlet prevSnapshotTimeTaken=0;let prevSnapshotProgress=0;let speedIndex=0;const numberOfScreenshots=snapshotsProgress.length;for(let i=0;i<numberOfScreenshots;i++){const elapsed=snapshotsProgress[i].ts-prevSnapshotTimeTaken;speedIndex+=elapsed*(1.0-prevSnapshotProgress);prevSnapshotTimeTaken=snapshotsProgress[i].ts;prevSnapshotProgress=snapshotsProgress[i].value;}\nreturn Math.round(speedIndex);}\nstatic createColorHistogram(imagePixelValues){const n=imagePixelValues.length;const histogram=new Array(3);for(let j=0;j<3;j++){histogram[j]=new Array(256).fill(0);}\nfor(let i=0;i<n;i+=4){const r=imagePixelValues[i];const g=imagePixelValues[i+1];const b=imagePixelValues[i+2];histogram[0][r]++;histogram[1][g]++;histogram[2][b]++;}\nreturn histogram;}\nstatic calculateSpeedIndex(timestampedColorHistograms){const snapshotsProgress=SpeedIndex.getSnapshotsProgress_(timestampedColorHistograms);return SpeedIndex.speedIndexFromSnapshotsProgress_(snapshotsProgress);}\nstatic lineSweep(lineSweepRects,viewport){const verticalSweepEdges=[];const horizontalSweepEdges=[];for(let i=0;i<lineSweepRects.length;i++){const rect=lineSweepRects[i];let left=rect.left;let right=rect.right;let top=rect.top;let bottom=rect.bottom;if(left>viewport.x+viewport.width)continue;if(right<viewport.x)continue;if(top>viewport.y+viewport.height)continue;if(bottom<viewport.y)continue;left=Math.max(left,viewport.y);right=Math.min(right,viewport.y+viewport.width);top=Math.max(top,viewport.y);bottom=Math.min(bottom,viewport.y+viewport.height);verticalSweepEdges.push({id:i,value:left,type:'left'},{id:i,value:right,type:'right'});horizontalSweepEdges.push({id:i,value:top,type:'top'},{id:i,value:bottom,type:'bottom'});}\nif(verticalSweepEdges.length===0||horizontalSweepEdges.length===0){return 0;}\nverticalSweepEdges.sort((a,b)=>a.value-b.value);horizontalSweepEdges.sort((a,b)=>a.value-b.value);const active=new Array(lineSweepRects.length).fill(false);let area=0;active[verticalSweepEdges[0].id]=true;for(let i=1;i<verticalSweepEdges.length;i++){const currentLine=verticalSweepEdges[i];const previousLine=verticalSweepEdges[i-1];const deltaX=currentLine.value-previousLine.value;if(deltaX===0)continue;let count=0;let firstRect;for(let j=0;j<horizontalSweepEdges.length;j++){if(active[horizontalSweepEdges[j].id]===true){if(horizontalSweepEdges[j].type==='top'){if(count===0){firstRect=j;}\ncount++;}else{if(count===1){const deltaY=horizontalSweepEdges[j].value-\nhorizontalSweepEdges[firstRect].value;area+=deltaX*deltaY;}\ncount--;}}}\nactive[currentLine.id]=(currentLine.type==='left');}\nreturn area;}\nstatic quadToRect(quad){const left=Math.min(quad[0],quad[2],quad[4]);const right=Math.max(quad[0],quad[2],quad[4]);const top=Math.min(quad[1],quad[3],quad[5]);const bottom=Math.max(quad[1],quad[3],quad[5]);return{left,right,top,bottom};}\nstatic calculateRectsBasedSpeedIndex(timestampedPaintRects,viewport){const numberOfRects=timestampedPaintRects.length;if(numberOfRects===0){throw new Error('Can\\'t calculate speed index without any paint '+'rectangles.');}\nconst areaAddedAtTimestamp=new Array(numberOfRects);const rects=[];let previousAreaOfUnion=0;let totalAreaOfUnion=0;for(let i=numberOfRects-1;i>=0;i--){rects.push(timestampedPaintRects[i].rect);const currentAreaOfUnion=SpeedIndex.lineSweep(rects,viewport);areaAddedAtTimestamp[i]={value:currentAreaOfUnion-previousAreaOfUnion,ts:timestampedPaintRects[i].ts};totalAreaOfUnion+=areaAddedAtTimestamp[i].value;previousAreaOfUnion=currentAreaOfUnion;}\nconst paintProgressAtTimestamp=new Array(numberOfRects);let lastProgressRecorded=0;for(let i=0;i<numberOfRects;i++){paintProgressAtTimestamp[i]={value:areaAddedAtTimestamp[i].value/totalAreaOfUnion+\nlastProgressRecorded,ts:areaAddedAtTimestamp[i].ts};lastProgressRecorded=paintProgressAtTimestamp[i].value;}\nreturn SpeedIndex.speedIndexFromSnapshotsProgress_(paintProgressAtTimestamp);}}\nreturn{SpeedIndex,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const SpeedIndex=tr.e.chrome.SpeedIndex;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function addRectsBasedSpeedIndexSample(samples,rendererHelper,navigationStart,loadDuration,frameID){let viewport;for(const event of EventFinderUtils.getMainThreadEvents(rendererHelper,'viewport','loading')){if(event.args.data.frameID===frameID&&event.start<(navigationStart+loadDuration)){viewport=event.args.data;}}\nif(!viewport)return;const timestampedPaintRects=[];for(const event of EventFinderUtils.getMainThreadEvents(rendererHelper,'PaintTimingVisualizer::LayoutObjectPainted','loading')){if(event.start>=navigationStart&&event.start<navigationStart+loadDuration){const paintRect=event.args.data.rect;if(!paintRect)continue;timestampedPaintRects.push({rect:SpeedIndex.quadToRect(paintRect),ts:event.start});}}\nconst numberOfRects=timestampedPaintRects.length;if(numberOfRects===0)return;samples.push({value:SpeedIndex.calculateRectsBasedSpeedIndex(timestampedPaintRects,viewport)-navigationStart});}\nfunction collectRectsBasedSpeedIndexSamplesFromLoadExpectations(model,chromeHelper){const rectsBasedSpeedIndexSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];addRectsBasedSpeedIndexSample(rectsBasedSpeedIndexSamples,rendererHelper,expectation.navigationStart.start,expectation.duration,expectation.navigationStart.args.frame);}\nreturn rectsBasedSpeedIndexSamples;}\nfunction rectsBasedSpeedIndexMetric(histograms,model){const rectsBasedSpeedIndexHistogram=histograms.createHistogram('rectsBasedSpeedIndex',timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,description:' the average time at which visible parts of the'+' page are displayed (in ms).',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const samples=collectRectsBasedSpeedIndexSamplesFromLoadExpectations(model,chromeHelper);for(const sample of samples){rectsBasedSpeedIndexHistogram.addSample(sample.value);}}\ntr.metrics.MetricRegistry.register(rectsBasedSpeedIndexMetric);return{rectsBasedSpeedIndexMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LONG_TASK_THRESHOLD_MS=50;const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_smallerIsBetter=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const RelatedEventSet=tr.v.d.RelatedEventSet;const hasCategoryAndName=tr.metrics.sh.hasCategoryAndName;const EventFinderUtils=tr.e.chrome.EventFinderUtils;function createBreakdownDiagnostic(breakdownTree){const breakdownDiagnostic=new tr.v.d.Breakdown();breakdownDiagnostic.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const label in breakdownTree){breakdownDiagnostic.set(label,breakdownTree[label].total);}\nreturn breakdownDiagnostic;}\nconst LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const TIME_TO_INTERACTIVE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,40e3,35).addExponentialBins(80e3,15);const LAYOUT_SHIFT_SCORE_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,50,25);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,ts){const objects=rendererHelper.process.objects;const frameLoaderInstances=objects.instancesByTypeName_.FrameLoader;if(frameLoaderInstances===undefined)return undefined;let snapshot;for(const instance of frameLoaderInstances){if(!instance.isAliveAt(ts))continue;const maybeSnapshot=instance.getSnapshotAt(ts);if(frameIdRef!==maybeSnapshot.args.frame.id_ref)continue;snapshot=maybeSnapshot;}\nreturn snapshot;}\nfunction findAllEvents(rendererHelper,category,title){const targetEvents=[];for(const ev of rendererHelper.process.getDescendantEvents()){if(!hasCategoryAndName(ev,category,title))continue;targetEvents.push(ev);}\nreturn targetEvents;}\nfunction getMostRecentValidEvent(rendererHelper,category,title){const targetEvents=findAllEvents(rendererHelper,category,title);let validEvent;for(const targetEvent of targetEvents){if(rendererHelper.isTelemetryInternalEvent(targetEvent))continue;if(validEvent===undefined){validEvent=targetEvent;}else{if(validEvent.start<targetEvent.start){validEvent=targetEvent;}}}\nreturn validEvent;}\nfunction getFirstViewportReadySamples(rendererHelper,navIdToNavStartEvents){const samples=[];const pcEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','pc');if(pcEvent===undefined)return samples;if(rendererHelper.isTelemetryInternalEvent(pcEvent))return samples;const navigationStartEvent=navIdToNavStartEvents.get(pcEvent.args.data.navigationId);if(navigationStartEvent===undefined)return samples;const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,pcEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventRange);if(rendererHelper.mainThread===undefined)return samples;const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventRange);samples.push({value:navStartToEventRange.duration,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),Start:new RelatedEventSet(navigationStartEvent),End:new RelatedEventSet(pcEvent)}});return samples;}\nfunction getAboveTheFoldLoadedToVisibleSamples(rendererHelper){const samples=[];const pcEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','pc');const visibleEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','visible');if(pcEvent!==undefined&&visibleEvent!==undefined){samples.push({value:Math.max(0.0,pcEvent.start-visibleEvent.start),diagnostics:{Start:new RelatedEventSet(visibleEvent),End:new RelatedEventSet(pcEvent)}});}\nreturn samples;}\nfunction findTimeToXEntries(category,eventName,rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const targetEvents=findAllEvents(rendererHelper,category,eventName);const entries=[];for(const targetEvent of targetEvents){if(rendererHelper.isTelemetryInternalEvent(targetEvent))continue;const frameIdRef=targetEvent.args.frame;const snapshot=findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,targetEvent.start);if(snapshot===undefined||!snapshot.args.isLoadingMainFrame)continue;const url=snapshot.args.documentLoaderURL;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(url))continue;let navigationStartEvent;if(targetEvent.args.data===undefined||targetEvent.args.data.navigationId===undefined){navigationStartEvent=EventFinderUtils.findLastEventStartingOnOrBeforeTimestamp(frameToNavStartEvents.get(frameIdRef)||[],targetEvent.start);}else{navigationStartEvent=navIdToNavStartEvents.get(targetEvent.args.data.navigationId);}\nif(navigationStartEvent===undefined)continue;entries.push({navigationStartEvent,targetEvent,url,});}\nreturn entries;}\nfunction collectTimeToEvent(rendererHelper,timeToXEntries){const samples=[];for(const{targetEvent,navigationStartEvent,url}of timeToXEntries){const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,targetEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventRange);samples.push({value:navStartToEventRange.duration,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),url:new tr.v.d.GenericSet([url]),Start:new RelatedEventSet(navigationStartEvent),End:new RelatedEventSet(targetEvent)}});}\nreturn samples;}\nfunction collectTimeToEventInCpuTime(rendererHelper,timeToXEntries){const samples=[];for(const{targetEvent,navigationStartEvent,url}of timeToXEntries){const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,targetEvent.start);const mainThreadCpuTime=rendererHelper.mainThread.getCpuTimeForRange(navStartToEventRange);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,navStartToEventRange);samples.push({value:mainThreadCpuTime,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStartEvent),end:new RelatedEventSet(targetEvent),infos:new tr.v.d.GenericSet([{pid:rendererHelper.pid,start:navigationStartEvent.start,event:targetEvent.start,}]),}});}\nreturn samples;}\nfunction findLayoutShiftSamples(rendererHelper){let sample;EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'LayoutShift','loading').forEach((events)=>{const evData=events.pop().args.data;if(evData.is_main_frame){sample={value:evData.cumulative_score};}});return sample?[sample]:[];}\nfunction addFirstMeaningfulPaintSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToFMPRange);const timeToFirstMeaningfulPaint=navStartToFMPRange.duration;const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToFMPRange);samples.push({value:timeToFirstMeaningfulPaint,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}\nfunction addFirstMeaningfulPaintCpuTimeSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const mainThreadCpuTime=rendererHelper.mainThread.getCpuTimeForRange(navStartToFMPRange);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,navStartToFMPRange);samples.push({value:mainThreadCpuTime,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}\nfunction decorateInteractivitySampleWithDiagnostics_(rendererHelper,eventTimestamp,navigationStartEvent,firstContentfulPaintTime,domContentLoadedEndTime,url){if(eventTimestamp===undefined)return undefined;const navigationStartTime=navigationStartEvent.start;const navStartToEventTimeRange=tr.b.math.Range.fromExplicitRange(navigationStartTime,eventTimestamp);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventTimeRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventTimeRange);const breakdownDiagnostic=createBreakdownDiagnostic(breakdownTree);return{value:navStartToEventTimeRange.duration,diagnostics:tr.v.d.DiagnosticMap.fromObject({'Start':new RelatedEventSet(navigationStartEvent),'Navigation infos':new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,navigationStartTime,firstContentfulPaintTime,domContentLoadedEndTime,eventTimestamp,}]),'Breakdown of [navStart, eventTimestamp]':breakdownDiagnostic,}),};}\nfunction getCandidateIndex(entry){return entry.targetEvent.args.data.candidateIndex;}\nfunction findLastCandidateForEachNavigation(timeToXEntries){const entryMap=new Map();for(const e of timeToXEntries){const navStartEvent=e.navigationStartEvent;if(!entryMap.has(navStartEvent)){entryMap.set(navStartEvent,[]);}\nentryMap.get(navStartEvent).push(e);}\nconst lastCandidates=[];for(const timeToXEntriesByNavigation of entryMap.values()){let lastCandidate=timeToXEntriesByNavigation.shift();for(const entry of timeToXEntriesByNavigation){if(getCandidateIndex(entry)>getCandidateIndex(lastCandidate)){lastCandidate=entry;}}\nlastCandidates.push(lastCandidate);}\nreturn lastCandidates;}\nfunction findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestTextPaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestTextPaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestTextPaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}\nfunction findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestImagePaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestImagePaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestImagePaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}\nfunction findLargestContentfulPaintHistogramSamples(allBrowserEvents){const lcp=new tr.e.chrome.LargestContentfulPaint(allBrowserEvents);const lcpSamples=lcp.findCandidates().map(candidate=>{const{durationInMilliseconds,size,type,inMainFrame,mainFrameTreeNodeId}=candidate;return{value:durationInMilliseconds,diagnostics:{size:new tr.v.d.GenericSet([size]),type:new tr.v.d.GenericSet([type]),inMainFrame:new tr.v.d.GenericSet([inMainFrame]),mainFrameTreeNodeId:new tr.v.d.GenericSet([mainFrameTreeNodeId]),},};});return lcpSamples;}\nfunction collectLoadingMetricsForRenderer(rendererHelper){const frameToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const navIdToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByNavId(rendererHelper,'navigationStart','blink.user_timing');const firstPaintSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('loading','firstPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const timeToFCPEntries=findTimeToXEntries('loading','firstContentfulPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const firstContentfulPaintSamples=collectTimeToEvent(rendererHelper,timeToFCPEntries);const firstContentfulPaintCpuTimeSamples=collectTimeToEventInCpuTime(rendererHelper,timeToFCPEntries);const onLoadSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('blink.user_timing','loadEventStart',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const aboveTheFoldLoadedToVisibleSamples=getAboveTheFoldLoadedToVisibleSamples(rendererHelper);const firstViewportReadySamples=getFirstViewportReadySamples(rendererHelper,navIdToNavStartEvents);const largestImagePaintSamples=findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const largestTextPaintSamples=findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const layoutShiftSamples=findLayoutShiftSamples(rendererHelper);const navigationStartSamples=timeToFCPEntries.map(entry=>{return{value:entry.navigationStartEvent.start};});return{frameToNavStartEvents,firstPaintSamples,firstContentfulPaintSamples,firstContentfulPaintCpuTimeSamples,onLoadSamples,aboveTheFoldLoadedToVisibleSamples,firstViewportReadySamples,largestImagePaintSamples,largestTextPaintSamples,layoutShiftSamples,navigationStartSamples,};}\nfunction collectMetricsFromLoadExpectations(model,chromeHelper){const interactiveSamples=[];const firstCpuIdleSamples=[];const firstMeaningfulPaintSamples=[];const firstMeaningfulPaintCpuTimeSamples=[];const totalBlockingTimeSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(expectation.fmpEvent!==undefined){addFirstMeaningfulPaintSample(firstMeaningfulPaintSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);addFirstMeaningfulPaintCpuTimeSample(firstMeaningfulPaintCpuTimeSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);}\nif(expectation.firstCpuIdleTime!==undefined){firstCpuIdleSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.firstCpuIdleTime,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}\nif(expectation.timeToInteractive!==undefined){interactiveSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.timeToInteractive,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}\nif(expectation.totalBlockingTime!==undefined){totalBlockingTimeSamples.push({value:expectation.totalBlockingTime,diagnostics:{url:new tr.v.d.GenericSet([expectation.url]),navigationStart:new RelatedEventSet(expectation.navigationStart),firstContentfulPaint:new RelatedEventSet(expectation.fcpEvent),interactiveTime:new tr.v.d.GenericSet([expectation.timeToInteractive]),}});}}\nreturn{firstMeaningfulPaintSamples,firstMeaningfulPaintCpuTimeSamples,firstCpuIdleSamples,interactiveSamples,totalBlockingTimeSamples,};}\nfunction addSamplesToHistogram(samples,histogram,histograms){for(const sample of samples){histogram.addSample(sample.value,sample.diagnostics);if(histogram.name!=='timeToFirstContentfulPaint')continue;if(!sample.breakdownTree)continue;for(const[category,breakdown]of Object.entries(sample.breakdownTree)){const relatedName=`${histogram.name}:${category}`;let relatedHist=histograms.getHistogramsNamed(relatedName)[0];if(!relatedHist){relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}\nrelatedNames.set(category,relatedName);}\nrelatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}}\nfunction loadingMetric(histograms,model){const firstPaintHistogram=histograms.createHistogram('timeToFirstPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintHistogram=histograms.createHistogram('timeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const onLoadHistogram=histograms.createHistogram('timeToOnload',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to onload. '+'This is temporary metric used for PCv1/v2 sanity checking',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintHistogram=histograms.createHistogram('timeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractiveHistogram=histograms.createHistogram('timeToInteractive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to Interactive',summaryOptions:SUMMARY_OPTIONS,});const totalBlockingTimeHistogram=histograms.createHistogram('totalBlockingTime',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Total Blocking Time',summaryOptions:SUMMARY_OPTIONS,});const timeToFirstCpuIdleHistogram=histograms.createHistogram('timeToFirstCpuIdle',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to First CPU Idle',summaryOptions:SUMMARY_OPTIONS,});const aboveTheFoldLoadedToVisibleHistogram=histograms.createHistogram('aboveTheFoldLoadedToVisible',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from first visible to load for AMP pages only.',summaryOptions:SUMMARY_OPTIONS,});const firstViewportReadyHistogram=histograms.createHistogram('timeToFirstViewportReady',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from navigation to load for AMP pages only. ',summaryOptions:SUMMARY_OPTIONS,});const largestImagePaintHistogram=histograms.createHistogram('largestImagePaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Image Paint',summaryOptions:SUMMARY_OPTIONS,});const largestTextPaintHistogram=histograms.createHistogram('largestTextPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Text Paint',summaryOptions:SUMMARY_OPTIONS,});const largestContentfulPaintHistogram=histograms.createHistogram('largestContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Contentful Paint',summaryOptions:SUMMARY_OPTIONS,});const layoutShiftHistogram=histograms.createHistogram('mainFrameCumulativeLayoutShift',unitlessNumber_smallerIsBetter,[],{binBoundaries:LAYOUT_SHIFT_SCORE_BOUNDARIES,description:'Main Frame Document Cumulative Layout Shift Score',summaryOptions:SUMMARY_OPTIONS,});const navigationStartHistogram=histograms.createHistogram('navigationStart',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'navigationStart',summaryOptions:SUMMARY_OPTIONS,});tr.metrics.sh.rectsBasedSpeedIndexMetric(histograms,model);const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;const samplesSet=collectLoadingMetricsForRenderer(rendererHelper);const lcpSamples=findLargestContentfulPaintHistogramSamples(chromeHelper.browserHelper.mainThread.sliceGroup.slices);addSamplesToHistogram(lcpSamples,largestContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstPaintSamples,firstPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintSamples,firstContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintCpuTimeSamples,firstContentfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.onLoadSamples,onLoadHistogram,histograms);addSamplesToHistogram(samplesSet.aboveTheFoldLoadedToVisibleSamples,aboveTheFoldLoadedToVisibleHistogram,histograms);addSamplesToHistogram(samplesSet.firstViewportReadySamples,firstViewportReadyHistogram,histograms);addSamplesToHistogram(samplesSet.largestImagePaintSamples,largestImagePaintHistogram,histograms);addSamplesToHistogram(samplesSet.largestTextPaintSamples,largestTextPaintHistogram,histograms);addSamplesToHistogram(samplesSet.layoutShiftSamples,layoutShiftHistogram,histograms);addSamplesToHistogram(samplesSet.navigationStartSamples,navigationStartHistogram,histograms);}\nconst samplesSet=collectMetricsFromLoadExpectations(model,chromeHelper);addSamplesToHistogram(samplesSet.firstMeaningfulPaintSamples,firstMeaningfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstMeaningfulPaintCpuTimeSamples,firstMeaningfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.interactiveSamples,timeToInteractiveHistogram,histograms);addSamplesToHistogram(samplesSet.firstCpuIdleSamples,timeToFirstCpuIdleHistogram,histograms);addSamplesToHistogram(samplesSet.totalBlockingTimeSamples,totalBlockingTimeHistogram,histograms);}\ntr.metrics.MetricRegistry.register(loadingMetric);return{loadingMetric,createBreakdownDiagnostic};});'use strict';tr.exportTo('tr.metrics',function(){const SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY=tr.v.HistogramBinBoundaries.createExponential(1,1000,50);function spaNavigationMetric(histograms,model){const histogram=new tr.v.Histogram('spaNavigationStartToFpDuration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY);histogram.description='Latency between the input event causing'+' a SPA navigation and the first paint event after it';histogram.customizeSummaryOptions({count:false,sum:false,});const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper){return;}\nconst rendererHelpers=modelHelper.rendererHelpers;if(!rendererHelpers){return;}\nconst browserHelper=modelHelper.browserHelper;for(const rendererHelper of Object.values(rendererHelpers)){const spaNavigations=tr.metrics.findSpaNavigationsOnRenderer(rendererHelper,browserHelper);for(const spaNav of spaNavigations){let beginTs=0;if(spaNav.navStartCandidates.inputLatencyAsyncSlice){const beginData=spaNav.navStartCandidates.inputLatencyAsyncSlice.args.data;beginTs=model.convertTimestampToModelTime('traceEventClock',beginData.INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT.time);}else{beginTs=spaNav.navStartCandidates.goToIndexSlice.start;}\nconst rangeOfInterest=tr.b.math.Range.fromExplicitRange(beginTs,spaNav.firstPaintEvent.start);const networkEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,rangeOfInterest);const breakdownDict=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,rangeOfInterest);const breakdownDiagnostic=new tr.v.d.Breakdown();breakdownDiagnostic.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const label in breakdownDict){breakdownDiagnostic.set(label,parseInt(breakdownDict[label].total*1e3)/1e3);}\nhistogram.addSample(rangeOfInterest.duration,{'Breakdown of [navStart, firstPaint]':breakdownDiagnostic,'Start':new tr.v.d.RelatedEventSet(spaNav.navigationStart),'End':new tr.v.d.RelatedEventSet(spaNav.firstPaintEvent),'Navigation infos':new tr.v.d.GenericSet([{url:spaNav.url,pid:rendererHelper.pid,navStart:beginTs,firstPaint:spaNav.firstPaintEvent.start}]),});}}\nhistograms.addHistogram(histogram);}\ntr.metrics.MetricRegistry.register(spaNavigationMetric);return{spaNavigationMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LATENCY_BOUNDS=tr.v.HistogramBinBoundaries.createLinear(0,20,100);function clockSyncLatencyMetric(values,model){const domains=Array.from(model.clockSyncManager.domainsSeen).sort();for(let i=0;i<domains.length;i++){for(let j=i+1;j<domains.length;j++){const latency=model.clockSyncManager.getTimeTransformerError(domains[i],domains[j]);const hist=new tr.v.Histogram('clock_sync_latency_'+\ndomains[i].toLowerCase()+'_to_'+domains[j].toLowerCase(),tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,LATENCY_BOUNDS);hist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false,});hist.description='Clock sync latency for domain '+domains[i]+' to domain '+domains[j];hist.addSample(latency);values.addHistogram(hist);}}}\ntr.metrics.MetricRegistry.register(clockSyncLatencyMetric);return{clockSyncLatencyMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CPU_TIME_PERCENTAGE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.01,50,200);function cpuTimeMetric(histograms,model,opt_options){let rangeOfInterest=model.bounds;if(opt_options&&opt_options.rangeOfInterest){rangeOfInterest=opt_options.rangeOfInterest;}else{const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper){const chromeBounds=chromeHelper.chromeBounds;if(chromeBounds){rangeOfInterest=chromeBounds;}}}\nlet allProcessCpuTime=0;for(const pid in model.processes){const process=model.processes[pid];if(tr.model.helpers.ChromeRendererHelper.isTracingProcess(process)){continue;}\nlet processCpuTime=0;for(const tid in process.threads){const thread=process.threads[tid];processCpuTime+=thread.getCpuTimeForRange(rangeOfInterest);}\nallProcessCpuTime+=processCpuTime;}\nlet normalizedAllProcessCpuTime=0;if(rangeOfInterest.duration>0){normalizedAllProcessCpuTime=allProcessCpuTime/rangeOfInterest.duration;}\nconst unit=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const cpuTimeHist=new tr.v.Histogram('cpu_time_percentage',unit,CPU_TIME_PERCENTAGE_BOUNDARIES);cpuTimeHist.description='Percent CPU utilization, normalized against a single core. Can be '+'greater than 100% if machine has multiple cores.';cpuTimeHist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false});cpuTimeHist.addSample(normalizedAllProcessCpuTime);histograms.addHistogram(cpuTimeHist);}\ntr.metrics.MetricRegistry.register(cpuTimeMetric,{supportsRangeOfInterest:true});return{cpuTimeMetric,};});'use strict';tr.exportTo('tr.v',function(){class HistogramDeserializer{static deserialize(data){const deserializer=new HistogramDeserializer(data[0],data[1]);return data.slice(2).map(datum=>tr.v.Histogram.deserialize(datum,deserializer));}\nconstructor(objects,diagnostics){this.objects_=objects;this.diagnostics_=[];for(const[type,diagnosticsByName]of Object.entries(diagnostics||{})){for(const[name,diagnosticsById]of Object.entries(diagnosticsByName)){for(const[id,data]of Object.entries(diagnosticsById)){const diagnostic=tr.v.d.Diagnostic.deserialize(type,data,this);this.diagnostics_[parseInt(id)]={name,diagnostic};}}}}\ngetObject(id){return this.objects_[id];}\ngetDiagnostic(id){return this.diagnostics_[parseInt(id)];}}\nreturn{HistogramDeserializer};});'use strict';tr.exportTo('tr.v',function(){class HistogramGrouping{constructor(key,callback){this.key_=key;this.callback_=callback;HistogramGrouping.BY_KEY.set(key,this);}\nget key(){return this.key_;}\nget callback(){return this.callback_;}\nget label(){return this.key;}\nstatic buildFromTags(tags,diagnosticName){const booleanTags=new Set();const keyValueTags=new Set();for(const tag of tags){if(tag.includes(':')){const key=tag.split(':')[0];if(booleanTags.has(key)){throw new Error(`Tag \"${key}\" cannot be both boolean and key-value`);}\nkeyValueTags.add(key);}else{if(keyValueTags.has(tag)){throw new Error(`Tag \"${tag}\" cannot be both boolean and key-value`);}\nbooleanTags.add(tag);}}\nconst groupings=[];for(const tag of booleanTags){groupings.push(HistogramGrouping.buildBooleanTagGrouping_(tag,diagnosticName));}\nfor(const tag of keyValueTags){groupings.push(HistogramGrouping.buildKeyValueTagGrouping_(tag,diagnosticName));}\nreturn groupings;}\nstatic buildBooleanTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined||!tags.has(tag))return`~${tag}`;return tag;});}\nstatic buildKeyValueTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined)return`~${tag}`;const values=new Set();for(const value of tags){const kvp=value.split(':');if(kvp.length<2||kvp[0]!==tag)continue;values.add(kvp[1]);}\nif(values.size===0)return`~${tag}`;const sortedValues=Array.from(values);sortedValues.sort();return sortedValues.join(',');},`${tag} tag`);}}\nHistogramGrouping.BY_KEY=new Map();HistogramGrouping.HISTOGRAM_NAME=new HistogramGrouping('name',h=>h.name);HistogramGrouping.DISPLAY_LABEL=new HistogramGrouping('displayLabel',hist=>{const labels=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.LABELS);if(labels!==undefined&&labels.size>0){return Array.from(labels).join(',');}\nconst benchmarks=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARKS);const start=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);if(benchmarks===undefined){if(start===undefined)return'Value';return start.toString();}\nconst benchmarksStr=Array.from(benchmarks).join('\\n');if(start===undefined)return benchmarksStr;return benchmarksStr+'\\n'+start.toString();});class GenericSetGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}\ncompute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';const parts=Array.from(diag);parts.sort();return parts.join(',');}}\nGenericSetGrouping.NAMES=[tr.v.d.RESERVED_NAMES.ARCHITECTURES,tr.v.d.RESERVED_NAMES.BENCHMARKS,tr.v.d.RESERVED_NAMES.BOTS,tr.v.d.RESERVED_NAMES.BUILDS,tr.v.d.RESERVED_NAMES.DEVICE_IDS,tr.v.d.RESERVED_NAMES.MASTERS,tr.v.d.RESERVED_NAMES.MEMORY_AMOUNTS,tr.v.d.RESERVED_NAMES.OS_NAMES,tr.v.d.RESERVED_NAMES.OS_VERSIONS,tr.v.d.RESERVED_NAMES.PRODUCT_VERSIONS,tr.v.d.RESERVED_NAMES.STORIES,tr.v.d.RESERVED_NAMES.STORYSET_REPEATS,tr.v.d.RESERVED_NAMES.STORY_TAGS,tr.v.d.RESERVED_NAMES.TEST_PATH,];for(const name of GenericSetGrouping.NAMES){new GenericSetGrouping(name);}\nclass DateRangeGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}\ncompute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';return diag.toString();}}\nDateRangeGrouping.NAMES=[tr.v.d.RESERVED_NAMES.BENCHMARK_START,tr.v.d.RESERVED_NAMES.TRACE_START,];for(const name of DateRangeGrouping.NAMES){new DateRangeGrouping(name);}\nreturn{HistogramGrouping,GenericSetGrouping,DateRangeGrouping,};});'use strict';tr.exportTo('tr.v',function(){class HistogramSet{constructor(opt_histograms){this.histograms_=new Set();this.sharedDiagnosticsByGuid_=new Map();if(opt_histograms!==undefined){for(const hist of opt_histograms){this.addHistogram(hist);}}}\nhas(hist){return this.histograms_.has(hist);}\ncreateHistogram(name,unit,samples,opt_options){const hist=tr.v.Histogram.create(name,unit,samples,opt_options);this.addHistogram(hist);return hist;}\naddHistogram(hist,opt_diagnostics){if(this.has(hist)){throw new Error('Cannot add same Histogram twice');}\nif(opt_diagnostics!==undefined){if(!(opt_diagnostics instanceof Map)){opt_diagnostics=Object.entries(opt_diagnostics);}\nfor(const[name,diagnostic]of opt_diagnostics){hist.diagnostics.set(name,diagnostic);}}\nthis.histograms_.add(hist);}\naddSharedDiagnosticToAllHistograms(name,diagnostic){this.addSharedDiagnostic(diagnostic);for(const hist of this){hist.diagnostics.set(name,diagnostic);}}\naddSharedDiagnostic(diagnostic){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}\nget length(){return this.histograms_.size;}*[Symbol.iterator](){for(const hist of this.histograms_){yield hist;}}\ngetHistogramsNamed(name){return[...this].filter(h=>h.name===name);}\ngetHistogramNamed(name){const histograms=this.getHistogramsNamed(name);if(histograms.length===0)return undefined;if(histograms.length>1){throw new Error(`Unexpectedly found multiple histograms named \"${name}\"`);}\nreturn histograms[0];}\nlookupDiagnostic(guid){return this.sharedDiagnosticsByGuid_.get(guid);}\ndeserialize(data){for(const hist of tr.v.HistogramDeserializer.deserialize(data)){this.addHistogram(hist);}}\nimportDicts(dicts){if((dicts instanceof Array)&&(dicts.length>2)&&(dicts[0]instanceof Array)){this.deserialize(dicts);return;}\nfor(const dict of dicts){this.importLegacyDict(dict);}}\nimportLegacyDict(dict){if(dict.type!==undefined){if(dict.type==='TagMap')return;if(!tr.v.d.Diagnostic.findTypeInfoWithName(dict.type)){throw new Error('Unrecognized shared diagnostic type '+dict.type);}\nthis.sharedDiagnosticsByGuid_.set(dict.guid,tr.v.d.Diagnostic.fromDict(dict));}else{const hist=tr.v.Histogram.fromDict(dict);this.addHistogram(hist);hist.diagnostics.resolveSharedDiagnostics(this,true);}}\nasDicts(){const dicts=[];for(const diagnostic of this.sharedDiagnosticsByGuid_.values()){dicts.push(diagnostic.asDict());}\nfor(const hist of this){dicts.push(hist.asDict());}\nreturn dicts;}\nget sourceHistograms(){const diagnosticNames=new Set();for(const hist of this){for(const diagnostic of hist.diagnostics.values()){if(!(diagnostic instanceof tr.v.d.RelatedNameMap))continue;for(const name of diagnostic.values()){diagnosticNames.add(name);}}}\nconst sourceHistograms=new HistogramSet;for(const hist of this){if(!diagnosticNames.has(hist.name)){sourceHistograms.addHistogram(hist);}}\nreturn sourceHistograms;}\ngroupHistogramsRecursively(groupings,opt_skipGroupingCallback){function recurse(histograms,level){if(level===groupings.length){return histograms;}\nconst grouping=groupings[level];const groupedHistograms=tr.b.groupIntoMap(histograms,grouping.callback);if(opt_skipGroupingCallback&&opt_skipGroupingCallback(grouping,groupedHistograms)){return recurse(histograms,level+1);}\nfor(const[key,group]of groupedHistograms){groupedHistograms.set(key,recurse(group,level+1));}\nreturn groupedHistograms;}\nreturn recurse([...this],0);}\ndeduplicateDiagnostics(){const namesToCandidates=new Map();const diagnosticsToHistograms=new Map();const keysToDiagnostics=new Map();for(const hist of this){for(const[name,candidate]of hist.diagnostics){if(candidate.equals===undefined){this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);continue;}\nconst hashKey=candidate.hashKey;if(candidate.hashKey!==undefined){if(keysToDiagnostics.has(hashKey)){hist.diagnostics.set(name,keysToDiagnostics.get(hashKey));}else{keysToDiagnostics.set(hashKey,candidate);this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);}\ncontinue;}\nif(diagnosticsToHistograms.get(candidate)===undefined){diagnosticsToHistograms.set(candidate,[hist]);}else{diagnosticsToHistograms.get(candidate).push(hist);}\nif(!namesToCandidates.has(name)){namesToCandidates.set(name,new Set());}\nnamesToCandidates.get(name).add(candidate);}}\nfor(const[name,candidates]of namesToCandidates){const deduplicatedDiagnostics=new Set();for(const candidate of candidates){let found=false;for(const test of deduplicatedDiagnostics){if(candidate.equals(test)){const hists=diagnosticsToHistograms.get(candidate);for(const hist of hists){hist.diagnostics.set(name,test);}\nfound=true;break;}}\nif(!found){deduplicatedDiagnostics.add(candidate);}\nfor(const diagnostic of deduplicatedDiagnostics){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}}}}\nbuildGroupingsFromTags(names){const tags=new Map();for(const hist of this){for(const name of names){if(!hist.diagnostics.has(name))continue;if(!tags.has(name))tags.set(name,new Set());for(const tag of hist.diagnostics.get(name)){tags.get(name).add(tag);}}}\nconst groupings=[];for(const[name,values]of tags){const built=tr.v.HistogramGrouping.buildFromTags(values,name);for(const grouping of built){groupings.push(grouping);}}\nreturn groupings;}}\nreturn{HistogramSet};});'use strict';tr.exportTo('tr.e.chrome',function(){function hasTitleAndCategory(event,title,category){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nfunction getNavStartTimestamps(rendererHelper){const navStartTimestamps=[];for(const e of rendererHelper.mainThread.sliceGroup.childEvents()){if(hasTitleAndCategory(e,'navigationStart','blink.user_timing')){navStartTimestamps.push(e.start);}}\nreturn navStartTimestamps;}\nfunction getInteractiveTimestamps(model){const interactiveTimestampsMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const timestamps=[];interactiveTimestampsMap.set(rendererHelper.pid,timestamps);}\nfor(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nif(expectation.timeToInteractive===undefined)continue;if(interactiveTimestampsMap.get(expectation.renderProcess.pid)===undefined){interactiveTimestampsMap.set(expectation.renderProcess.pid,[]);}\ninteractiveTimestampsMap.get(expectation.renderProcess.pid).push(expectation.timeToInteractive);}\nreturn interactiveTimestampsMap;}\nfunction getPostInteractiveTaskWindows(interactiveTimestamps,navStartTimestamps,traceEndTimestamp){let navStartTsIndex=0;let lastTaskWindowEndTs=undefined;const taskWindows=[];for(const currTTI of interactiveTimestamps){while(navStartTsIndex<navStartTimestamps.length&&navStartTimestamps[navStartTsIndex]<currTTI){navStartTsIndex++;}\nconst taskWindowEndTs=navStartTsIndex<navStartTimestamps.length?navStartTimestamps[navStartTsIndex]:traceEndTimestamp;if(taskWindowEndTs===lastTaskWindowEndTs){throw Error('Encountered two consecutive interactive timestamps '+'with no navigationStart between them. '+'PostInteractiveTaskWindow is not well defined in this case.');}\ntaskWindows.push(tr.b.math.Range.fromExplicitRange(currTTI,taskWindowEndTs));lastTaskWindowEndTs=taskWindowEndTs;}\nreturn taskWindows;}\nfunction contributionToEQT(window,task){const startInWindow=Math.max(window.min,task.start);const endInWindow=Math.min(window.max,task.end);const durationInWindow=endInWindow-startInWindow;if(durationInWindow<=0)return 0;const probabilityOfTask=durationInWindow/(window.max-window.min);const minQueueingTime=task.end-endInWindow;const maxQueueingTime=task.end-startInWindow;const expectedQueueingTimeDueToTask=(maxQueueingTime+minQueueingTime)/2;return probabilityOfTask*expectedQueueingTimeDueToTask;}\nfunction weightedExpectedQueueingTime(window,weightedTasks){let result=0;for(const task of weightedTasks){result+=contributionToEQT(window,task)*task.weight;}\nreturn result;}\nfunction expectedQueueingTime(window,tasks){return weightedExpectedQueueingTime(window,tasks.map(function(task){return{start:task.start,end:task.end,weight:1};}));}\nclass SlidingWindow{constructor(startTime,windowSize,sortedTasks){this.windowSize_=windowSize;this.sortedTasks_=sortedTasks;this.range_=tr.b.math.Range.fromExplicitRange(startTime,startTime+windowSize);this.firstTaskIndex_=sortedTasks.findIndex(task=>startTime<task.end);if(this.firstTaskIndex_===-1){this.firstTaskIndex_=sortedTasks.length;}\nthis.lastTaskIndex_=-1;while(this.lastTaskIndex_+1<sortedTasks.length&&sortedTasks[this.lastTaskIndex_+1].start<startTime+windowSize){this.lastTaskIndex_++;}\nthis.innerEQT_=0;for(let i=this.firstTaskIndex_+1;i<this.lastTaskIndex_;i++){this.innerEQT_+=contributionToEQT(this.range_,sortedTasks[i]);}}\nget getEQT(){let firstTaskEQT=0;if(this.firstTaskIndex_<this.sortedTasks_.length){firstTaskEQT=contributionToEQT(this.range_,this.sortedTasks_[this.firstTaskIndex_]);}\nlet lastTaskEQT=0;if(this.firstTaskIndex_<this.lastTaskIndex_){lastTaskEQT=contributionToEQT(this.range_,this.sortedTasks_[this.lastTaskIndex_]);}\nreturn firstTaskEQT+this.innerEQT_+lastTaskEQT;}\nslide(t){this.range_=tr.b.math.Range.fromExplicitRange(t,t+this.windowSize_);if(this.firstTaskIndex_<this.sortedTasks_.length&&this.sortedTasks_[this.firstTaskIndex_].end<=t){this.firstTaskIndex_++;if(this.firstTaskIndex_<this.lastTaskIndex_){this.innerEQT_-=contributionToEQT(this.range_,this.sortedTasks_[this.firstTaskIndex_]);}}\nif(this.lastTaskIndex_+1<this.sortedTasks_.length&&this.sortedTasks_[this.lastTaskIndex_+1].start<t+this.windowSize_){if(this.firstTaskIndex_<this.lastTaskIndex_){this.innerEQT_+=contributionToEQT(this.range_,this.sortedTasks_[this.lastTaskIndex_]);}\nthis.lastTaskIndex_++;}}}\nfunction maxExpectedQueueingTimeInSlidingWindow(startTime,endTime,windowSize,tasks){if(windowSize<=0){throw Error('The window size must be positive number');}\nif(startTime+windowSize>endTime){throw Error('The sliding window must fit in the specified time range');}\nconst sortedTasks=tasks.slice().sort((a,b)=>a.start-b.start);for(let i=1;i<sortedTasks.length;i++){if(sortedTasks[i-1].end>sortedTasks[i].start){const midpoint=(sortedTasks[i-1].end+sortedTasks[i].start)/2;sortedTasks[i-1].end=midpoint;sortedTasks[i].start=midpoint;}}\nlet endpoints=[];endpoints.push(startTime);endpoints.push(endTime-windowSize);for(const task of tasks){endpoints.push(task.start-windowSize);endpoints.push(task.start);endpoints.push(task.end-windowSize);endpoints.push(task.end);}\nendpoints=endpoints.filter(x=>(startTime<=x&&x+windowSize<=endTime));endpoints.sort((a,b)=>a-b);const slidingWindow=new SlidingWindow(endpoints[0],windowSize,sortedTasks);let maxEQT=0;for(const t of endpoints){slidingWindow.slide(t);maxEQT=Math.max(maxEQT,slidingWindow.getEQT);}\nreturn maxEQT;}\nreturn{getPostInteractiveTaskWindows,getNavStartTimestamps,getInteractiveTimestamps,expectedQueueingTime,maxExpectedQueueingTimeInSlidingWindow,weightedExpectedQueueingTime};});'use strict';tr.exportTo('tr.metrics.sh',function(){const WINDOW_SIZE_MS=500;const EQT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.01,WINDOW_SIZE_MS,50);function containsForcedGC_(slice){return slice.findTopmostSlicesRelativeToThisSlice(tr.metrics.v8.utils.isForcedGarbageCollectionEvent).length>0;}\nfunction getOrCreateHistogram_(histograms,name,description){return histograms.getHistogramNamed(name)||histograms.createHistogram(name,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:EQT_BOUNDARIES,description,summaryOptions:{avg:false,count:false,max:true,min:false,std:false,sum:false,},});}\nfunction expectedQueueingTimeMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);addExpectedQueueingTimeMetric_('renderer_eqt',event=>{return{start:event.start,duration:event.duration};},false,rendererHelpers,histograms,model);}\nfunction addExpectedQueueingTimeMetric_(eqtName,getEventTimes,isCpuTime,rendererHelpers,histograms,model){function getTasks(rendererHelper){const tasks=[];for(const slice of\ntr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread)){const times=getEventTimes(slice);if(times.duration>0&&!containsForcedGC_(slice)){tasks.push({start:times.start,end:times.start+times.duration});}}\nreturn tasks;}\nconst totalHistogram=getOrCreateHistogram_(histograms,`total:${WINDOW_SIZE_MS}ms_window:${eqtName}`,`The maximum EQT in a ${WINDOW_SIZE_MS}ms sliding window`+' for a given renderer');for(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;if(rendererHelper.mainThread.bounds.duration<WINDOW_SIZE_MS)continue;const tasks=getTasks(rendererHelper);const totalBreakdown=getV8Contribution_(eqtName,getEventTimes,isCpuTime,totalHistogram,histograms,rendererHelper,model);totalHistogram.addSample(tr.e.chrome.maxExpectedQueueingTimeInSlidingWindow(rendererHelper.mainThread.bounds.min,rendererHelper.mainThread.bounds.max,WINDOW_SIZE_MS,tasks),{v8:totalBreakdown});}}\nfunction getV8Contribution_(eqtName,getEventTimes,isCpuTime,totalEqtHistogram,histograms,rendererHelper,model){if(!model.categories.includes('v8'))return null;const totalBreakdown=new tr.v.d.Breakdown();const eventNamesWithTaskExtractors=getV8EventNamesWithTaskExtractors_(getEventTimes);if(!isCpuTime){const taskExtractorsUsingRCS=getV8EventNamesWithTaskExtractorsUsingRCS_(getEventTimes);for(const[eventName,getTasks]of taskExtractorsUsingRCS){eventNamesWithTaskExtractors.set(eventName,getTasks);}}\nlet totalNames=totalEqtHistogram.diagnostics.get('v8');if(!totalNames){totalNames=new tr.v.d.RelatedNameMap();totalEqtHistogram.diagnostics.set('v8',totalNames);}\nfor(const[eventName,getTasks]of eventNamesWithTaskExtractors){const totalHistogram=getOrCreateHistogram_(histograms,`total:${WINDOW_SIZE_MS}ms_window:${eqtName}:${eventName}`,`Contribution to the expected queueing time by ${eventName}`+' for a given renderer. It is computed as the maximum EQT in'+` a ${WINDOW_SIZE_MS}ms sliding window after shrinking top-level`+` tasks to contain only ${eventName} subevents`);const tasks=getTasks(rendererHelper);const totalSample=tr.e.chrome.maxExpectedQueueingTimeInSlidingWindow(rendererHelper.mainThread.bounds.min,rendererHelper.mainThread.bounds.max,WINDOW_SIZE_MS,tasks);totalHistogram.addSample(totalSample);totalBreakdown.set(eventName,totalSample);totalNames.set(eventName,totalHistogram.name);}\nreturn totalBreakdown;}\nfunction getV8EventNamesWithTaskExtractors_(getEventTimes,cpuMetrics){function durationOfTopmostSubSlices(slice,predicate,excludePredicate){let duration=0;for(const sub of slice.findTopmostSlicesRelativeToThisSlice(predicate)){duration+=getEventTimes(sub).duration;if(excludePredicate!==null&&excludePredicate!==undefined){duration-=durationOfTopmostSubSlices(sub,excludePredicate);}}\nreturn duration;}\nfunction taskExtractor(predicate,excludePredicate){return function(rendererHelper){const slices=tr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread);const result=[];for(const slice of slices){const times=getEventTimes(slice);if(times.duration>0&&!containsForcedGC_(slice)){const duration=durationOfTopmostSubSlices(slice,predicate,excludePredicate);result.push({start:times.start,end:times.start+duration});}}\nreturn result;};}\nreturn new Map([['v8',taskExtractor(tr.metrics.v8.utils.isV8Event)],['v8:execute',taskExtractor(tr.metrics.v8.utils.isV8ExecuteEvent)],['v8:gc',taskExtractor(tr.metrics.v8.utils.isGarbageCollectionEvent)]]);}\nfunction extractTaskRCS(getEventTimes,predicate,rendererHelper){const result=[];for(const topSlice of\nrendererHelper.mainThread.sliceGroup.topLevelSlices){const times=getEventTimes(topSlice);if(times.duration<=0||containsForcedGC_(topSlice)){continue;}\nconst v8ThreadSlices=[];for(const slice of topSlice.descendentSlices){if(tr.metrics.v8.utils.isV8RCSEvent(slice)){v8ThreadSlices.push(slice);}}\nconst runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8ThreadSlices);let duration=0;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){if(predicate(runtimeGroup.name)){duration+=runtimeGroup.time;}}\nduration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);result.push({start:times.start,end:times.start+duration});}\nreturn result;}\nfunction getV8EventNamesWithTaskExtractorsUsingRCS_(getEventTimes){const extractors=new Map();extractors.set('v8:compile_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileRCSCategory,rendererHelper));extractors.set('v8:compile:optimize_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileOptimizeRCSCategory,rendererHelper));return extractors;}\ntr.metrics.MetricRegistry.register(expectedQueueingTimeMetric);return{expectedQueueingTimeMetric,};});'use strict';tr.exportTo('tr.b',function(){function MultiDimensionalViewNode(title,valueCount){this.title=title;const dimensions=title.length;this.children=new Array(dimensions);for(let i=0;i<dimensions;i++){this.children[i]=new Map();}\nthis.values=new Array(valueCount);for(let v=0;v<valueCount;v++){this.values[v]={self:0,total:0,totalState:NOT_PROVIDED};}}\nMultiDimensionalViewNode.TotalState={NOT_PROVIDED:0,LOWER_BOUND:1,EXACT:2};const NOT_PROVIDED=MultiDimensionalViewNode.TotalState.NOT_PROVIDED;const LOWER_BOUND=MultiDimensionalViewNode.TotalState.LOWER_BOUND;const EXACT=MultiDimensionalViewNode.TotalState.EXACT;MultiDimensionalViewNode.prototype={get subRows(){return Array.from(this.children[0].values());}};function MultiDimensionalViewBuilder(dimensions,valueCount){if(typeof(dimensions)!=='number'||dimensions<0){throw new Error('Dimensions must be a non-negative number');}\nthis.dimensions_=dimensions;if(typeof(valueCount)!=='number'||valueCount<0){throw new Error('Number of values must be a non-negative number');}\nthis.valueCount_=valueCount;this.buildRoot_=this.createRootNode_();this.topDownTreeViewRoot_=undefined;this.topDownHeavyViewRoot_=undefined;this.bottomUpHeavyViewNode_=undefined;this.complete_=false;this.maxDimensionDepths_=new Array(dimensions);for(let d=0;d<dimensions;d++){this.maxDimensionDepths_[d]=0;}}\nMultiDimensionalViewBuilder.ValueKind={SELF:0,TOTAL:1};MultiDimensionalViewBuilder.ViewType={TOP_DOWN_TREE_VIEW:0,TOP_DOWN_HEAVY_VIEW:1,BOTTOM_UP_HEAVY_VIEW:2};MultiDimensionalViewBuilder.prototype={addPath(path,values,valueKind){if(this.buildRoot_===undefined){throw new Error('Paths cannot be added after either view has been built');}\nif(path.length!==this.dimensions_){throw new Error('Path must be '+this.dimensions_+'-dimensional');}\nif(values.length!==this.valueCount_){throw new Error('Must provide '+this.valueCount_+' values');}\nlet isTotal;switch(valueKind){case MultiDimensionalViewBuilder.ValueKind.SELF:isTotal=false;break;case MultiDimensionalViewBuilder.ValueKind.TOTAL:isTotal=true;break;default:throw new Error('Invalid value kind: '+valueKind);}\nlet node=this.buildRoot_;for(let d=0;d<path.length;d++){const singleDimensionPath=path[d];const singleDimensionPathLength=singleDimensionPath.length;this.maxDimensionDepths_[d]=Math.max(this.maxDimensionDepths_[d],singleDimensionPathLength);for(let i=0;i<singleDimensionPathLength;i++){node=this.getOrCreateChildNode_(node,d,singleDimensionPath[i]);}}\nfor(let v=0;v<this.valueCount_;v++){const addedValue=values[v];if(addedValue===undefined)continue;const nodeValue=node.values[v];if(isTotal){nodeValue.total+=addedValue;nodeValue.totalState=EXACT;}else{nodeValue.self+=addedValue;nodeValue.totalState=Math.max(nodeValue.totalState,LOWER_BOUND);}}},get complete(){return this.complete_;},set complete(isComplete){if(this.buildRoot_===undefined){throw new Error('Can\\'t set complete after any view has been built.');}\nthis.complete_=isComplete;},buildView(viewType){switch(viewType){case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW:return this.buildTopDownTreeView();case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW:return this.buildTopDownHeavyView();case MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW:return this.buildBottomUpHeavyView();default:throw new Error('Unknown multi-dimensional view type: '+viewType);}},buildTopDownTreeView(){if(this.topDownTreeViewRoot_===undefined){const treeViewRoot=this.buildRoot_;this.buildRoot_=undefined;this.setUpMissingChildRelationships_(treeViewRoot,0);this.finalizeTotalValues_(treeViewRoot,0,new WeakMap());this.topDownTreeViewRoot_=treeViewRoot;}\nreturn this.topDownTreeViewRoot_;},buildTopDownHeavyView(){if(this.topDownHeavyViewRoot_===undefined){this.topDownHeavyViewRoot_=this.buildGenericHeavyView_(this.addDimensionToTopDownHeavyViewNode_.bind(this));}\nreturn this.topDownHeavyViewRoot_;},buildBottomUpHeavyView(){if(this.bottomUpHeavyViewNode_===undefined){this.bottomUpHeavyViewNode_=this.buildGenericHeavyView_(this.addDimensionToBottomUpHeavyViewNode_.bind(this));}\nreturn this.bottomUpHeavyViewNode_;},createRootNode_(){return new MultiDimensionalViewNode(new Array(this.dimensions_),this.valueCount_);},getOrCreateChildNode_(parentNode,dimension,childDimensionTitle){if(dimension<0||dimension>=this.dimensions_){throw new Error('Invalid dimension');}\nconst dimensionChildren=parentNode.children[dimension];let childNode=dimensionChildren.get(childDimensionTitle);if(childNode!==undefined){return childNode;}\nconst childTitle=parentNode.title.slice();childTitle[dimension]=childDimensionTitle;childNode=new MultiDimensionalViewNode(childTitle,this.valueCount_);dimensionChildren.set(childDimensionTitle,childNode);return childNode;},setUpMissingChildRelationships_(node,firstDimensionToSetUp){for(let d=firstDimensionToSetUp;d<this.dimensions_;d++){const currentDimensionChildTitles=new Set(node.children[d].keys());for(let i=0;i<d;i++){for(const previousDimensionChildNode of node.children[i].values()){for(const previousDimensionGrandChildTitle of\npreviousDimensionChildNode.children[d].keys()){currentDimensionChildTitles.add(previousDimensionGrandChildTitle);}}}\nfor(const currentDimensionChildTitle of currentDimensionChildTitles){const currentDimensionChildNode=this.getOrCreateChildNode_(node,d,currentDimensionChildTitle);for(let i=0;i<d;i++){for(const previousDimensionChildNode of\nnode.children[i].values()){const previousDimensionGrandChildNode=previousDimensionChildNode.children[d].get(currentDimensionChildTitle);if(previousDimensionGrandChildNode!==undefined){currentDimensionChildNode.children[i].set(previousDimensionChildNode.title[i],previousDimensionGrandChildNode);}}}\nthis.setUpMissingChildRelationships_(currentDimensionChildNode,d);}}},finalizeTotalValues_(node,firstDimensionToFinalize,dimensionalSelfSumsMap){const dimensionalSelfSums=new Array(this.dimensions_);const minResidual=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++)minResidual[v]=0;const nodeValues=node.values;const nodeSelfSums=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++){nodeSelfSums[v]=nodeValues[v].self;}\nfor(let d=0;d<this.dimensions_;d++){const childResidualSums=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++){childResidualSums[v]=0;}\nfor(const childNode of node.children[d].values()){if(d>=firstDimensionToFinalize){this.finalizeTotalValues_(childNode,d,dimensionalSelfSumsMap);}\nconst childNodeSelfSums=dimensionalSelfSumsMap.get(childNode);const childNodeValues=childNode.values;for(let v=0;v<this.valueCount_;v++){nodeSelfSums[v]+=childNodeSelfSums[d][v];const residual=childNodeValues[v].total-\nchildNodeSelfSums[this.dimensions_-1][v];childResidualSums[v]+=residual;if(this.complete){nodeValues[v].totalState=EXACT;}else if(childNodeValues[v].totalState>NOT_PROVIDED){nodeValues[v].totalState=Math.max(nodeValues[v].totalState,LOWER_BOUND);}}}\ndimensionalSelfSums[d]=nodeSelfSums.slice();for(let v=0;v<this.valueCount_;v++){minResidual[v]=Math.max(minResidual[v],childResidualSums[v]);}}\nfor(let v=0;v<this.valueCount_;v++){nodeValues[v].total=Math.max(nodeValues[v].total,nodeSelfSums[v]+minResidual[v]);}\nif(dimensionalSelfSumsMap.has(node)){throw new Error('Internal error: Node finalized more than once');}\ndimensionalSelfSumsMap.set(node,dimensionalSelfSums);},buildGenericHeavyView_(treeViewNodeHandler){const treeViewRoot=this.buildTopDownTreeView();const heavyViewRoot=this.createRootNode_();heavyViewRoot.values=treeViewRoot.values;const recursionDepthTrackers=new Array(this.dimensions_);for(let d=0;d<this.dimensions_;d++){recursionDepthTrackers[d]=new RecursionDepthTracker(this.maxDimensionDepths_[d],d);}\nthis.addDimensionsToGenericHeavyViewNode_(treeViewRoot,heavyViewRoot,0,recursionDepthTrackers,false,treeViewNodeHandler);this.setUpMissingChildRelationships_(heavyViewRoot,0);return heavyViewRoot;},addDimensionsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,startDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler){for(let d=startDimension;d<this.dimensions_;d++){this.addDimensionDescendantsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,d,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler);}},addDimensionDescendantsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler){const treeViewChildren=treeViewParentNode.children[currentDimension];const recursionDepthTracker=recursionDepthTrackers[currentDimension];for(const treeViewChildNode of treeViewChildren.values()){recursionDepthTracker.push(treeViewChildNode);treeViewNodeHandler(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive);this.addDimensionDescendantsToGenericHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler);recursionDepthTracker.pop();}},addDimensionToTopDownHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive){this.addDimensionToTopDownHeavyViewNodeRecursively_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,1);},addDimensionToTopDownHeavyViewNodeRecursively_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,subTreeDepth){const recursionDepthTracker=recursionDepthTrackers[currentDimension];const currentDimensionRecursive=subTreeDepth<=recursionDepthTracker.recursionDepth;const currentOrPreviousDimensionsRecursive=currentDimensionRecursive||previousDimensionsRecursive;const dimensionTitle=treeViewChildNode.title[currentDimension];const heavyViewChildNode=this.getOrCreateChildNode_(heavyViewParentNode,currentDimension,dimensionTitle);this.addNodeValues_(treeViewChildNode,heavyViewChildNode,!currentOrPreviousDimensionsRecursive);this.addDimensionsToGenericHeavyViewNode_(treeViewChildNode,heavyViewChildNode,currentDimension+1,recursionDepthTrackers,currentOrPreviousDimensionsRecursive,this.addDimensionToTopDownHeavyViewNode_.bind(this));for(const treeViewGrandChildNode of\ntreeViewChildNode.children[currentDimension].values()){recursionDepthTracker.push(treeViewGrandChildNode);this.addDimensionToTopDownHeavyViewNodeRecursively_(treeViewGrandChildNode,heavyViewChildNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,subTreeDepth+1);recursionDepthTracker.pop();}},addDimensionToBottomUpHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive){const recursionDepthTracker=recursionDepthTrackers[currentDimension];const bottomIndex=recursionDepthTracker.bottomIndex;const topIndex=recursionDepthTracker.topIndex;const firstNonRecursiveIndex=bottomIndex+recursionDepthTracker.recursionDepth;const viewNodePath=recursionDepthTracker.viewNodePath;const trackerAncestorNode=recursionDepthTracker.trackerAncestorNode;let heavyViewDescendantNode=heavyViewParentNode;for(let i=bottomIndex;i<topIndex;i++){const treeViewAncestorNode=viewNodePath[i];const dimensionTitle=treeViewAncestorNode.title[currentDimension];heavyViewDescendantNode=this.getOrCreateChildNode_(heavyViewDescendantNode,currentDimension,dimensionTitle);const currentDimensionRecursive=i<firstNonRecursiveIndex;const currentOrPreviousDimensionsRecursive=currentDimensionRecursive||previousDimensionsRecursive;this.addNodeValues_(treeViewChildNode,heavyViewDescendantNode,!currentOrPreviousDimensionsRecursive);this.addDimensionsToGenericHeavyViewNode_(treeViewChildNode,heavyViewDescendantNode,currentDimension+1,recursionDepthTrackers,currentOrPreviousDimensionsRecursive,this.addDimensionToBottomUpHeavyViewNode_.bind(this));}},addNodeValues_(sourceNode,targetNode,addTotal){const targetNodeValues=targetNode.values;const sourceNodeValues=sourceNode.values;for(let v=0;v<this.valueCount_;v++){const targetNodeValue=targetNodeValues[v];const sourceNodeValue=sourceNodeValues[v];targetNodeValue.self+=sourceNodeValue.self;if(addTotal){targetNodeValue.total+=sourceNodeValue.total;if(this.complete){targetNodeValue.totalState=EXACT;}else if(sourceNodeValue.totalState>NOT_PROVIDED){targetNodeValue.totalState=Math.max(targetNodeValue.totalState,LOWER_BOUND);}}}}};function RecursionDepthTracker(maxDepth,dimension){this.titlePath=new Array(maxDepth);this.viewNodePath=new Array(maxDepth);this.bottomIndex=this.topIndex=maxDepth;this.dimension_=dimension;this.currentTrackerNode_=this.createNode_(0,undefined);}\nRecursionDepthTracker.prototype={push(viewNode){if(this.bottomIndex===0){throw new Error('Cannot push to a full tracker');}\nconst title=viewNode.title[this.dimension_];this.bottomIndex--;this.titlePath[this.bottomIndex]=title;this.viewNodePath[this.bottomIndex]=viewNode;let childTrackerNode=this.currentTrackerNode_.children.get(title);if(childTrackerNode!==undefined){this.currentTrackerNode_=childTrackerNode;return;}\nconst maxLengths=zFunction(this.titlePath,this.bottomIndex);let recursionDepth=0;for(let i=0;i<maxLengths.length;i++){recursionDepth=Math.max(recursionDepth,maxLengths[i]);}\nchildTrackerNode=this.createNode_(recursionDepth,this.currentTrackerNode_);this.currentTrackerNode_.children.set(title,childTrackerNode);this.currentTrackerNode_=childTrackerNode;},pop(){if(this.bottomIndex===this.topIndex){throw new Error('Cannot pop from an empty tracker');}\nthis.titlePath[this.bottomIndex]=undefined;this.viewNodePath[this.bottomIndex]=undefined;this.bottomIndex++;this.currentTrackerNode_=this.currentTrackerNode_.parent;},get recursionDepth(){return this.currentTrackerNode_.recursionDepth;},createNode_(recursionDepth,parent){return{recursionDepth,parent,children:new Map()};}};function zFunction(list,startIndex){const n=list.length-startIndex;if(n===0)return[];const z=new Array(n);z[0]=0;for(let i=1,left=0,right=0;i<n;++i){let maxLength;if(i<=right){maxLength=Math.min(right-i+1,z[i-left]);}else{maxLength=0;}\nwhile(i+maxLength<n&&list[startIndex+maxLength]===list[startIndex+i+maxLength]){++maxLength;}\nif(i+maxLength-1>right){left=i;right=i+maxLength-1;}\nz[i]=maxLength;}\nreturn z;}\nreturn{MultiDimensionalViewBuilder,MultiDimensionalViewNode,RecursionDepthTracker,zFunction,};});'use strict';tr.exportTo('tr.e.chrome',function(){class CpuTime{static getStageToInitiatorToSegmentBounds(segments,rangeOfInterest){const stageToInitiatorToRanges=new Map();stageToInitiatorToRanges.set('all_stages',new Map([['all_initiators',new Set()]]));const allRanges=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const segment of segments){if(!rangeOfInterest.intersectsRangeInclusive(segment.range))continue;const intersectingRange=rangeOfInterest.findIntersection(segment.range);allRanges.add(intersectingRange);for(const expectation of segment.expectations){const stageTitle=expectation.stageTitle;if(!stageToInitiatorToRanges.has(stageTitle)){stageToInitiatorToRanges.set(stageTitle,new Map([['all_initiators',new Set()]]));}\nconst initiatorToRanges=stageToInitiatorToRanges.get(stageTitle);initiatorToRanges.get('all_initiators').add(intersectingRange);const initiatorType=expectation.initiatorType;if(initiatorType){if(!initiatorToRanges.has(initiatorType)){initiatorToRanges.set(initiatorType,new Set());}\ninitiatorToRanges.get(initiatorType).add(intersectingRange);}}}\nreturn stageToInitiatorToRanges;}\nstatic constructMultiDimensionalView(model,rangeOfInterest){const mdvBuilder=new tr.b.MultiDimensionalViewBuilder(3,2);const stageToInitiatorToRanges=CpuTime.getStageToInitiatorToSegmentBounds(model.userModel.segments,rangeOfInterest);const allSegmentBoundsInRange=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const[pid,process]of Object.entries(model.processes)){const processType=tr.e.chrome.chrome_processes.canonicalizeProcessName(process.name);for(const[tid,thread]of Object.entries(process.threads)){const rangeToCpuTime=new Map();for(const range of allSegmentBoundsInRange){rangeToCpuTime.set(range,thread.getCpuTimeForRange(range));}\nfor(const[stage,initiatorToRanges]of stageToInitiatorToRanges){for(const[initiator,ranges]of initiatorToRanges){const cpuTime=tr.b.math.Statistics.sum(ranges,range=>rangeToCpuTime.get(range));const duration=tr.b.math.Statistics.sum(ranges,range=>range.duration);const cpuTimePerSecond=cpuTime/duration;mdvBuilder.addPath([[processType],[thread.type],[stage,initiator]],[cpuTimePerSecond,cpuTime],tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);}}}}\nreturn mdvBuilder.buildTopDownTreeView();}}\nreturn{CpuTime,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CPU_PERCENTAGE_UNIT=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const CPU_TIME_UNIT=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;function clonePath_(previousPath){return previousPath.map(subPath=>subPath.map(x=>x));}\nfunction decodePath_(path){return{processType:path[0][0],threadType:path[1][0],railStage:path[2][0],initiatorType:path[2][1]};}\nfunction stringifyPathName_(path){const decodedPath=decodePath_(path);return[decodedPath.processType,decodedPath.threadType,decodedPath.railStage,decodedPath.initiatorType].join(':');}\nclass CpuTimeTreeDataReporter{constructor(){this.visitedSet_=new Set();}\nreportValuesFromNode_(node,path){const decodedPath=decodePath_(path);const processType=decodedPath.processType||'all_processes';const threadType=decodedPath.threadType||'all_threads';if(!decodedPath.railStage||!decodedPath.initiatorType)return;const{railStage,initiatorType}=decodedPath;const serializedPathName=[processType,threadType,railStage,initiatorType].join(':');const cpuPercentageValue=node.values[0].total;const cpuTimeValue=node.values[1].total;this.histogramSet_.createHistogram(`cpuPercentage:${serializedPathName}`,CPU_PERCENTAGE_UNIT,cpuPercentageValue);this.histogramSet_.createHistogram(`cpuTime:${serializedPathName}`,CPU_TIME_UNIT,cpuTimeValue);}\nreportDataFromTree_(root,rootPath){const rootPathString=stringifyPathName_(rootPath);if(this.visitedSet_.has(rootPathString))return;this.visitedSet_.add(rootPathString);this.reportValuesFromNode_(root,rootPath);for(let dimension=0;dimension<root.children.length;dimension++){const children=root.children[dimension];for(const[name,node]of children){const childPath=clonePath_(rootPath);childPath[dimension].push(name);this.reportDataFromTree_(node,childPath);}}}\naddTreeValuesToHistogramSet(rootNode,histogramSet){const rootPath=[[],[],[]];this.rootNode_=rootNode;this.histogramSet_=histogramSet;this.reportDataFromTree_(this.rootNode_,rootPath);}\nstatic reportToHistogramSet(rootNode,histogramSet){const reporter=new CpuTimeTreeDataReporter();reporter.addTreeValuesToHistogramSet(rootNode,histogramSet);}}\nreturn{CpuTimeTreeDataReporter,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function newCpuTimeMetric(histograms,model,opt_options){const rangeOfInterest=opt_options&&opt_options.rangeOfInterest?opt_options.rangeOfInterest:model.bounds;const rootNode=tr.e.chrome.CpuTime.constructMultiDimensionalView(model,rangeOfInterest);tr.metrics.sh.CpuTimeTreeDataReporter.reportToHistogramSet(rootNode,histograms);}\ntr.metrics.MetricRegistry.register(newCpuTimeMetric,{supportsRangeOfInterest:true});return{newCpuTimeMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const includeHistogramNames=['cpuTime:all_processes:all_threads:all_stages:all_initiators','cpuPercentage:all_processes:all_threads:all_stages:all_initiators','cpuTime:browser_process:all_threads:all_stages:all_initiators','cpuPercentage:browser_process:all_threads:all_stages:all_initiators','cpuTime:renderer_processes:all_threads:all_stages:all_initiators','cpuPercentage:renderer_processes:all_threads:all_stages:all_initiators','cpuTime:gpu_process:all_threads:all_stages:all_initiators','cpuPercentage:gpu_process:all_threads:all_stages:all_initiators','cpuTime:renderer_processes:CrRendererMain:all_stages:all_initiators','cpuPercentage:renderer_processes:CrRendererMain:all_stages:all_initiators','cpuTime:browser_process:CrBrowserMain:all_stages:all_initiators','cpuPercentage:browser_process:CrBrowserMain:all_stages:all_initiators','cpuTime:all_processes:all_threads:Load:Successful','cpuPercentage:all_processes:all_threads:Load:Successful',];function limitedCpuTimeMetric(histograms,model,opt_options){const allCpuHistograms=new tr.v.HistogramSet();tr.metrics.sh.newCpuTimeMetric(allCpuHistograms,model,opt_options);for(const histogramName of includeHistogramNames){const histogram=allCpuHistograms.getHistogramNamed(histogramName);if(histogram)histograms.addHistogram(histogram);}}\ntr.metrics.MetricRegistry.register(limitedCpuTimeMetric,{supportsRangeOfInterest:true});return{limitedCpuTimeMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LONG_TASK_MS=50;const LONGEST_TASK_MS=1000;function iterateLongTopLevelTasksOnThreadInRange(thread,opt_range,cb,opt_this){thread.sliceGroup.topLevelSlices.forEach(function(slice){if(opt_range&&!opt_range.intersectsExplicitRangeInclusive(slice.start,slice.end)){return;}\nif(slice.duration<LONG_TASK_MS)return;cb.call(opt_this,slice);});}\nfunction iterateRendererMainThreads(model,cb,opt_this){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper!==undefined){Object.values(modelHelper.rendererHelpers).forEach(function(rendererHelper){if(!rendererHelper.mainThread)return;cb.call(opt_this,rendererHelper.mainThread);});}}\nconst BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(LONG_TASK_MS,LONGEST_TASK_MS,40);function longTasksMetric(histograms,model,opt_options){const rangeOfInterest=opt_options?opt_options.rangeOfInterest:undefined;const longTaskHist=histograms.createHistogram('longTasks',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,description:'durations of long tasks',});const relatedNames=new tr.v.d.RelatedNameMap();longTaskHist.diagnostics.set('categories',relatedNames);iterateRendererMainThreads(model,function(thread){iterateLongTopLevelTasksOnThreadInRange(thread,rangeOfInterest,function(task){const breakdown=new tr.v.d.Breakdown();breakdown.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const slice of task.descendentSlices){const sample=slice.cpuSelfTime;if(sample===undefined)continue;const category=model.getUserFriendlyCategoryFromEvent(slice);const histName='longTasks:'+category;let hist=histograms.getHistogramNamed(histName);if(hist===undefined){hist=histograms.createHistogram(histName,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,});relatedNames.set(category,hist.name);}\nhist.addSample(sample,{events:new tr.v.d.RelatedEventSet([slice]),});breakdown.set(category,sample+breakdown.get(category));}\nlongTaskHist.addSample(task.duration,{events:new tr.v.d.RelatedEventSet([task]),categories:breakdown,});});});}\ntr.metrics.MetricRegistry.register(longTasksMetric,{supportsRangeOfInterest:true,requiredCategories:['toplevel'],});return{longTasksMetric,iterateLongTopLevelTasksOnThreadInRange,iterateRendererMainThreads,LONG_TASK_MS,LONGEST_TASK_MS,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const LEVEL_OF_DETAIL_NAMES=new Map();LEVEL_OF_DETAIL_NAMES.set(BACKGROUND,'background');LEVEL_OF_DETAIL_NAMES.set(LIGHT,'light');LEVEL_OF_DETAIL_NAMES.set(DETAILED,'detailed');const HEAP_PROFILER_DETAIL_NAME='heap_profiler';const BOUNDARIES_FOR_UNIT_MAP=new WeakMap();BOUNDARIES_FOR_UNIT_MAP.set(count_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,20,20));BOUNDARIES_FOR_UNIT_MAP.set(sizeInBytes_smallerIsBetter,new tr.v.HistogramBinBoundaries(0).addBinBoundary(1024).addExponentialBins(16*1024*1024*1024,4*24));const CHROME_PROCESS_NAMES=tr.e.chrome.chrome_processes.CHROME_PROCESS_NAMES;function memoryMetric(values,model,opt_options){const rangeOfInterest=opt_options?opt_options.rangeOfInterest:undefined;const browserNameToGlobalDumps=tr.metrics.sh.splitGlobalDumpsByBrowserName(model,rangeOfInterest);addGeneralMemoryDumpValues(browserNameToGlobalDumps,values);addDetailedMemoryDumpValues(browserNameToGlobalDumps,values);addMemoryDumpCountValues(browserNameToGlobalDumps,values);}\nconst USER_FRIENDLY_BROWSER_NAMES={'chrome':'Chrome','webview':'WebView','unknown_browser':'an unknown browser'};function convertBrowserNameToUserFriendlyName(browserName){for(const baseName in USER_FRIENDLY_BROWSER_NAMES){if(!browserName.startsWith(baseName))continue;const userFriendlyBaseName=USER_FRIENDLY_BROWSER_NAMES[baseName];const suffix=browserName.substring(baseName.length);if(suffix.length===0){return userFriendlyBaseName;}else if(/^\\d+$/.test(suffix)){return userFriendlyBaseName+'('+suffix+')';}}\nreturn'\\''+browserName+'\\' browser';}\nfunction convertProcessNameToUserFriendlyName(processName,opt_requirePlural){switch(processName){case CHROME_PROCESS_NAMES.BROWSER:return opt_requirePlural?'browser processes':'the browser process';case CHROME_PROCESS_NAMES.RENDERER:return'renderer processes';case CHROME_PROCESS_NAMES.GPU:return opt_requirePlural?'GPU processes':'the GPU process';case CHROME_PROCESS_NAMES.PPAPI:return opt_requirePlural?'PPAPI processes':'the PPAPI process';case CHROME_PROCESS_NAMES.ALL:return'all processes';case CHROME_PROCESS_NAMES.UNKNOWN:return'unknown processes';default:return'\\''+processName+'\\' processes';}}\nfunction addGeneralMemoryDumpValues(browserNameToGlobalDumps,values){addMemoryDumpValues(browserNameToGlobalDumps,gmd=>true,function(processDump,addProcessScalar){addProcessScalar({source:'process_count',property:PROCESS_COUNT,value:1});if(processDump.totals!==undefined){addProcessScalar({source:'reported_by_os',property:RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.residentBytes});addProcessScalar({source:'reported_by_os',property:PEAK_RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.peakResidentBytes});addProcessScalar({source:'reported_by_os',property:PRIVATE_FOOTPRINT_SIZE,component:['system_memory'],value:processDump.totals.privateFootprintBytes,});}\nif(processDump.memoryAllocatorDumps===undefined)return;processDump.memoryAllocatorDumps.forEach(function(rootAllocatorDump){CHROME_VALUE_PROPERTIES.forEach(function(property){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property,value:rootAllocatorDump.numerics[property.name]});});if(rootAllocatorDump.numerics.allocated_objects_size===undefined){const allocatedObjectsDump=rootAllocatorDump.getDescendantDumpByFullName('allocated_objects');if(allocatedObjectsDump!==undefined){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property:ALLOCATED_OBJECTS_SIZE,value:allocatedObjectsDump.numerics.size});}}});addTopHeapDumpCategoryValue(processDump,addProcessScalar);addV8MemoryDumpValues(processDump,addProcessScalar);},function(componentTree){const tracingNode=componentTree.children[1].get('tracing');if(tracingNode===undefined)return;for(let i=0;i<componentTree.values.length;i++){componentTree.values[i].total-=tracingNode.values[i].total;}},values);}\nfunction addTopHeapDumpCategoryValue(processDump,addProcessScalar){if(!processDump.heapDumps){return;}\nfor(const allocatorName in processDump.heapDumps){const heapDump=processDump.heapDumps[allocatorName];if(heapDump.entries===undefined||heapDump.entries.length===0){return;}\nconst typeToSize={};for(let i=0;i<heapDump.entries.length;i+=1){const entry=heapDump.entries[i];if(!entry.objectTypeName||entry.leafStackFrame){continue;}\nif(!typeToSize[entry.objectTypeName]){typeToSize[entry.objectTypeName]=0;}\ntypeToSize[entry.objectTypeName]+=entry.size;}\nlet largestValue=0;let largestType='';for(const key in typeToSize){if(largestValue<typeToSize[key]){largestValue=typeToSize[key];largestType=key;}}\naddProcessScalar({source:'reported_by_chrome',component:[allocatorName,largestType],property:HEAP_CATEGORY_SIZE,value:largestValue});}}\nfunction addV8MemoryDumpValues(processDump,addProcessScalar){const v8Dump=processDump.getMemoryAllocatorDumpByFullName('v8');if(v8Dump===undefined)return;const sharedDump=v8Dump.getDescendantDumpByFullName('shared');if(sharedDump!==undefined){addV8ComponentValues(sharedDump,['v8','shared'],addProcessScalar);sharedDump.children.forEach(function(subDump){addV8ComponentValues(subDump,['v8','shared',subDump.name],addProcessScalar);});}\nv8Dump.children.forEach(function(isolateDump){const mallocDump=isolateDump.getDescendantDumpByFullName('malloc');if(mallocDump!==undefined){addV8ComponentValues(mallocDump,['v8','allocated_by_malloc'],addProcessScalar);}\nlet heapDump=isolateDump.getDescendantDumpByFullName('heap');if(heapDump===undefined){heapDump=isolateDump.getDescendantDumpByFullName('heap_spaces');}\nif(heapDump!==undefined){addV8ComponentValues(heapDump,['v8','heap'],addProcessScalar);heapDump.children.forEach(function(spaceDump){if(spaceDump.name==='other_spaces')return;addV8ComponentValues(spaceDump,['v8','heap',spaceDump.name],addProcessScalar);});}});addProcessScalar({source:'reported_by_chrome',component:['v8'],property:CODE_AND_METADATA_SIZE,value:v8Dump.numerics.code_and_metadata_size});addProcessScalar({source:'reported_by_chrome',component:['v8'],property:CODE_AND_METADATA_SIZE,value:v8Dump.numerics.bytecode_and_metadata_size});}\nfunction addV8ComponentValues(componentDump,componentPath,addProcessScalar){CHROME_VALUE_PROPERTIES.forEach(function(property){addProcessScalar({source:'reported_by_chrome',component:componentPath,property,value:componentDump.numerics[property.name]});});}\nconst PROCESS_COUNT={unit:count_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){if(componentPath.length>0){throw new Error('Unexpected process count non-empty component path: '+\ncomponentPath.join(':'));}\nreturn'total number of '+convertProcessNameToUserFriendlyName(processName,true);}};const EFFECTIVE_SIZE={name:'effective_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'effective size',componentPreposition:'of'});}};const ALLOCATED_OBJECTS_SIZE={name:'allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated',totalUserFriendlyPropertyName:'size of all allocated objects',componentPreposition:'by'});}};const SHIM_ALLOCATED_OBJECTS_SIZE={name:'shim_allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated through shim',totalUserFriendlyPropertyName:'size of all allocated objects through shim',componentPreposition:'by'});}};const LOCKED_SIZE={name:'locked_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'locked (pinned) size',componentPreposition:'of'});}};const PEAK_SIZE={name:'peak_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'peak size',componentPreposition:'of'});}};const HEAP_CATEGORY_SIZE={name:'heap_category_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'heap profiler category size',componentPreposition:'for'});}};const CODE_AND_METADATA_SIZE={name:'code_and_metadata_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyNamePrefix:'size of',userFriendlyPropertyName:'code and metadata'});}};const CHROME_VALUE_PROPERTIES=[EFFECTIVE_SIZE,ALLOCATED_OBJECTS_SIZE,SHIM_ALLOCATED_OBJECTS_SIZE,LOCKED_SIZE,PEAK_SIZE];function buildChromeValueDescriptionPrefix(componentPath,processName,formatSpec){const nameParts=[];if(componentPath.length===0){nameParts.push('total');if(formatSpec.totalUserFriendlyPropertyName){nameParts.push(formatSpec.totalUserFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(formatSpec.userFriendlyPropertyName);}\nnameParts.push('reported by Chrome for');}else{if(formatSpec.componentPreposition===undefined){if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(componentPath.join(':'));nameParts.push(formatSpec.userFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(formatSpec.userFriendlyPropertyName);nameParts.push(formatSpec.componentPreposition);if(componentPath[componentPath.length-1]==='allocated_by_malloc'){nameParts.push('objects allocated by malloc for');nameParts.push(componentPath.slice(0,componentPath.length-1).join(':'));}else{nameParts.push(componentPath.join(':'));}}\nnameParts.push('in');}\nnameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}\nconst RESIDENT_SIZE={name:'resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'resident set size (RSS)');}};const PEAK_RESIDENT_SIZE={name:'peak_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'peak resident set size');}};const PROPORTIONAL_RESIDENT_SIZE={name:'proportional_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'proportional resident size (PSS)');}};const PRIVATE_DIRTY_SIZE={name:'private_dirty_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private dirty size');}};const PRIVATE_FOOTPRINT_SIZE={name:'private_footprint_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private footprint size');}};const JAVA_BASE_CLEAN_RESIDENT={name:'java_base_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex total clean resident size');}};const JAVA_BASE_PSS={name:'java_base_pss',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex proportional resident size');}};const NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT={name:'native_library_private_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library private clean resident size');}};const NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT={name:'native_library_shared_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library shared clean resident size');}};const NATIVE_LIBRARY_PROPORTIONAL_RESIDENT={name:'native_library_proportional_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library proportional resident size');}};function buildOsValueDescriptionPrefix(componentPath,processName,userFriendlyPropertyName){if(componentPath.length>2){throw new Error('OS value component path for \\''+\nuserFriendlyPropertyName+'\\' too long: '+componentPath.join(':'));}\nconst nameParts=[];if(componentPath.length<2){nameParts.push('total');}\nnameParts.push(userFriendlyPropertyName);if(componentPath.length>0){switch(componentPath[0]){case'system_memory':if(componentPath.length>1){const userFriendlyComponentName=SYSTEM_VALUE_COMPONENTS[componentPath[1]].userFriendlyName;if(userFriendlyComponentName===undefined){throw new Error('System value sub-component for \\''+\nuserFriendlyPropertyName+'\\' unknown: '+\ncomponentPath.join(':'));}\nnameParts.push('of',userFriendlyComponentName,'in');}else{nameParts.push('of system memory (RAM) used by');}\nbreak;case'gpu_memory':if(componentPath.length>1){nameParts.push('of the',componentPath[1]);nameParts.push('Android memtrack component in');}else{nameParts.push('of GPU memory (Android memtrack) used by');}\nbreak;default:throw new Error('OS value component for \\''+\nuserFriendlyPropertyName+'\\' unknown: '+\ncomponentPath.join(':'));}}else{nameParts.push('reported by the OS for');}\nnameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}\nfunction addDetailedMemoryDumpValues(browserNameToGlobalDumps,values){addMemoryDumpValues(browserNameToGlobalDumps,g=>g.levelOfDetail===DETAILED,function(processDump,addProcessScalar){for(const[componentName,componentSpec]of\nObject.entries(SYSTEM_VALUE_COMPONENTS)){const node=getDescendantVmRegionClassificationNode(processDump.vmRegions,componentSpec.classificationPath);const componentPath=['system_memory'];if(componentName)componentPath.push(componentName);addProcessScalar({source:'reported_by_os',component:componentPath,property:PROPORTIONAL_RESIDENT_SIZE,value:node===undefined?0:(node.byteStats.proportionalResident||0)});addProcessScalar({source:'reported_by_os',component:componentPath,property:PRIVATE_DIRTY_SIZE,value:node===undefined?0:(node.byteStats.privateDirtyResident||0)});if(node){if(node.byteStats.javaBasePss){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_PSS,value:node.byteStats.javaBasePss});}\nif(node.byteStats.javaBaseCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_CLEAN_RESIDENT,value:node.byteStats.javaBaseCleanResident});}}\nif(node){if(node.byteStats.nativeLibraryPrivateCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT,value:node.byteStats.nativeLibraryPrivateCleanResident});}\nif(node.byteStats.nativeLibrarySharedCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT,value:node.byteStats.nativeLibrarySharedCleanResident});}\nif(node.byteStats.nativeLibraryProportionalResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PROPORTIONAL_RESIDENT,value:node.byteStats.nativeLibraryProportionalResident});}}}\nconst memtrackDump=processDump.getMemoryAllocatorDumpByFullName('gpu/android_memtrack');if(memtrackDump!==undefined){memtrackDump.children.forEach(function(memtrackChildDump){addProcessScalar({source:'reported_by_os',component:['gpu_memory',memtrackChildDump.name],property:PROPORTIONAL_RESIDENT_SIZE,value:memtrackChildDump.numerics.memtrack_pss});});}},function(componentTree){},values);}\nconst SYSTEM_VALUE_COMPONENTS={'':{classificationPath:[],},'java_heap':{classificationPath:['Android','Java runtime','Spaces'],userFriendlyName:'the Java heap'},'ashmem':{classificationPath:['Android','Ashmem'],userFriendlyName:'ashmem'},'native_heap':{classificationPath:['Native heap'],userFriendlyName:'the native heap'},'stack':{classificationPath:['Stack'],userFriendlyName:'the thread stacks'}};function getDescendantVmRegionClassificationNode(node,path){for(let i=0;i<path.length;i++){if(node===undefined)break;node=node.children.find(c=>c.title===path[i]);}\nreturn node;}\nfunction addMemoryDumpCountValues(browserNameToGlobalDumps,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){let totalDumpCount=0;const levelOfDetailNameToDumpCount={};LEVEL_OF_DETAIL_NAMES.forEach(function(levelOfDetailName){levelOfDetailNameToDumpCount[levelOfDetailName]=0;});levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]=0;globalDumps.forEach(function(globalDump){totalDumpCount++;const levelOfDetailName=LEVEL_OF_DETAIL_NAMES.get(globalDump.levelOfDetail);if(levelOfDetailName===undefined){return;}\nlevelOfDetailNameToDumpCount[levelOfDetailName]++;if(globalDump.levelOfDetail===DETAILED){if(detectHeapProfilerInMemoryDump(globalDump)){levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]++;}}});reportMemoryDumpCountAsValue(browserName,undefined,totalDumpCount,values);for(const[levelOfDetailName,levelOfDetailDumpCount]of\nObject.entries(levelOfDetailNameToDumpCount)){reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values);}});}\nfunction detectHeapProfilerInMemoryDump(globalDump){for(const processDump of Object.values(globalDump.processMemoryDumps)){if(processDump.heapDumps&&processDump.heapDumps.malloc){const mallocDump=processDump.heapDumps.malloc;if(mallocDump.entries&&mallocDump.entries.length>0){return true;}}}\nreturn false;}\nfunction reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values){const nameParts=['memory',browserName,'all_processes','dump_count'];if(levelOfDetailName!==undefined){nameParts.push(levelOfDetailName);}\nconst name=nameParts.join(':');const histogram=new tr.v.Histogram(name,count_smallerIsBetter,BOUNDARIES_FOR_UNIT_MAP.get(count_smallerIsBetter));histogram.addSample(levelOfDetailDumpCount);const userFriendlyLevelOfDetail=(levelOfDetailName||'all').replace('_',' ');histogram.description=['total number of',userFriendlyLevelOfDetail,'memory dumps added by',convertBrowserNameToUserFriendlyName(browserName),'to the trace'].join(' ');values.addHistogram(histogram);}\nfunction addMemoryDumpValues(browserNameToGlobalDumps,customGlobalDumpFilter,customProcessDumpValueExtractor,customComponentTreeModifier,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){const filteredGlobalDumps=globalDumps.filter(customGlobalDumpFilter);const sourceToPropertyToBuilder=extractDataFromGlobalDumps(filteredGlobalDumps,customProcessDumpValueExtractor);reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values);});}\nfunction extractDataFromGlobalDumps(globalDumps,customProcessDumpValueExtractor){const sourceToPropertyToBuilder=new Map();const dumpCount=globalDumps.length;globalDumps.forEach(function(globalDump,dumpIndex){for(const processDump of Object.values(globalDump.processMemoryDumps)){extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor);}});return sourceToPropertyToBuilder;}\nfunction extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor){const rawProcessName=processDump.process.name;const processNamePath=[tr.e.chrome.chrome_processes.canonicalizeProcessName(rawProcessName)];customProcessDumpValueExtractor(processDump,function addProcessScalar(spec){if(spec.value===undefined)return;const component=spec.component||[];function createDetailsForErrorMessage(){return['source=',spec.source,', property=',spec.property.name||'(undefined)',', component=',component.length===0?'(empty)':component.join(':'),' in ',processDump.process.userFriendlyName].join('');}\nlet value;if(spec.value instanceof tr.b.Scalar){value=spec.value.value;if(spec.value.unit!==spec.property.unit){throw new Error('Scalar unit for '+\ncreateDetailsForErrorMessage()+' ('+\nspec.value.unit.unitName+') doesn\\'t match the unit of the property ('+\nspec.property.unit.unitName+')');}}else{value=spec.value;}\nlet propertyToBuilder=sourceToPropertyToBuilder.get(spec.source);if(propertyToBuilder===undefined){propertyToBuilder=new Map();sourceToPropertyToBuilder.set(spec.source,propertyToBuilder);}\nlet builder=propertyToBuilder.get(spec.property);if(builder===undefined){builder=new tr.b.MultiDimensionalViewBuilder(2,dumpCount),propertyToBuilder.set(spec.property,builder);}\nconst values=new Array(dumpCount);values[dumpIndex]=value;builder.addPath([processNamePath,component],values,tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);});}\nfunction reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values){sourceToPropertyToBuilder.forEach(function(propertyToBuilder,sourceName){propertyToBuilder.forEach(function(builders,property){const tree=builders.buildTopDownTreeView();reportComponentDataAsValues(browserName,sourceName,property,[],[],tree,values,customComponentTreeModifier);});});}\nfunction reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,tree,values,customComponentTreeModifier,opt_cachedHistograms){const cachedHistograms=opt_cachedHistograms||new Map();function recurse(processPath,componentPath,node){return reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,node,values,customComponentTreeModifier,cachedHistograms);}\nfunction buildHistogram(processPath,componentPath,node){return buildNamedMemoryNumericFromNode(browserName,sourceName,property,processPath.length===0?'all_processes':processPath[0],componentPath,node);}\ncustomComponentTreeModifier(tree);const histogram=buildHistogram(processPath,componentPath,tree);if(cachedHistograms.has(histogram.name)){return cachedHistograms.get(histogram.name);}\ncachedHistograms.set(histogram.name,histogram);const processNames=new tr.v.d.RelatedNameMap();for(const[childProcessName,childProcessNode]of tree.children[0]){processPath.push(childProcessName);const childProcessHistogram=recurse(processPath,componentPath,childProcessNode);processNames.set(childProcessName,childProcessHistogram.name);processPath.pop();}\nconst componentNames=new tr.v.d.RelatedNameMap();for(const[childComponentName,childComponentNode]of tree.children[1]){componentPath.push(childComponentName);const childComponentHistogram=recurse(processPath,componentPath,childComponentNode);componentNames.set(childComponentName,childComponentHistogram.name);componentPath.pop();}\nvalues.addHistogram(histogram);if(tree.children[0].size>0){histogram.diagnostics.set('processes',processNames);}\nif(tree.children[1].size>0){histogram.diagnostics.set('components',componentNames);}\nreturn histogram;}\nfunction getNumericName(browserName,sourceName,propertyName,processName,componentPath){const nameParts=['memory',browserName,processName,sourceName].concat(componentPath);if(propertyName!==undefined)nameParts.push(propertyName);return nameParts.join(':');}\nfunction getNumericDescription(property,browserName,processName,componentPath){return[property.buildDescriptionPrefix(componentPath,processName),'in',convertBrowserNameToUserFriendlyName(browserName)].join(' ');}\nfunction buildNamedMemoryNumericFromNode(browserName,sourceName,property,processName,componentPath,node){const name=getNumericName(browserName,sourceName,property.name,processName,componentPath);const description=getNumericDescription(property,browserName,processName,componentPath);const numeric=buildMemoryNumericFromNode(name,node,property.unit);numeric.description=description;return numeric;}\nfunction buildSampleDiagnostics(value,node){if(node.children.length<2)return undefined;const diagnostics=new Map();const i=node.values.indexOf(value);const processBreakdown=new tr.v.d.Breakdown();processBreakdown.colorScheme=tr.e.chrome.chrome_processes.PROCESS_COLOR_SCHEME_NAME;for(const[name,subNode]of node.children[0]){processBreakdown.set(name,subNode.values[i].total);}\nif(processBreakdown.size>0){diagnostics.set('processes',processBreakdown);}\nconst componentBreakdown=new tr.v.d.Breakdown();for(const[name,subNode]of node.children[1]){componentBreakdown.set(name,subNode.values[i].total);}\nif(componentBreakdown.size>0){diagnostics.set('components',componentBreakdown);}\nif(diagnostics.size===0)return undefined;return diagnostics;}\nfunction buildMemoryNumericFromNode(name,node,unit){const histogram=new tr.v.Histogram(name,unit,BOUNDARIES_FOR_UNIT_MAP.get(unit));node.values.forEach(v=>histogram.addSample(v.total,buildSampleDiagnostics(v,node)));return histogram;}\ntr.metrics.MetricRegistry.register(memoryMetric,{supportsRangeOfInterest:true});return{memoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,1e2);function nativeCodeResidentMemoryMetric(histograms,model){const histogram=new tr.v.Histogram('NativeCodeResidentMemory',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);for(const slice of model.getDescendantEvents()){if(slice.category==='disabled-by-default-memory-infra'&&slice.title==='ReportGlobalNativeCodeResidentMemoryKb'&&slice.args.NativeCodeResidentMemory){histogram.addSample(slice.args.NativeCodeResidentMemory);}}\nhistograms.addHistogram(histogram);}\ntr.metrics.MetricRegistry.register(nativeCodeResidentMemoryMetric);return{nativeCodeResidentMemoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:false,min:false,std:false,sum:false,};function addSamplesToHistogram(pairInfo,breakdownTree,histogram,histograms,diagnostics){histogram.addSample(pairInfo.end-pairInfo.start,diagnostics);if(!breakdownTree){return;}\nfor(const[category,breakdown]of Object.entries(breakdownTree)){const relatedName=`${histogram.name}:${category}`;if(!histograms.getHistogramNamed(relatedName)){const relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});}\nconst relatedHist=histograms.getHistogramNamed(relatedName);let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}\nrelatedNames.set(category,relatedName);relatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}\nfunction splitOneRangeIntoPerSecondRanges(startTime,endTime){const results=[];for(let i=0;startTime+(i+1)*1000<=endTime;i+=1){const start=i*1000;const end=(i+1)*1000;results.push({start,end,});}\nreturn results;}\nfunction getNavigationInfos(model){const navigationInfos=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(rendererHelper.mainThread===undefined)continue;navigationInfos.push({navigationStart:expectation.navigationStart,rendererHelper,url:expectation.url});}\nnavigationInfos.forEach((navInfo,i)=>{if(i===navigationInfos.length-1){navInfo.navigationEndTime=model.bounds.max;}else{navInfo.navigationEndTime=navigationInfos[i+1].navigationStart.start;}});return navigationInfos;}\nfunction getWallTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,startEndRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,startEndRange);return breakdownTree;}\nfunction getCpuTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,startEndRange);return breakdownTree;}\nfunction persecondMetric(histograms,model){const navigationInfos=getNavigationInfos(model);if(navigationInfos.length===0){return;}\nnavigationInfos.forEach(navInfo=>{const navigationStart=navInfo.navigationStart.start;const navigationEnd=navInfo.navigationEndTime;const startEndPairs=splitOneRangeIntoPerSecondRanges(navigationStart,navigationEnd);const breakdownList=startEndPairs.map(p=>{const wallHistogramName=`wall_${p.start}_to_${p.end}`;const wallHistogramDescription=`Wall-clock time ${p.start} to ${p.end} breakdown`;const cpuHistogramName=`cpu_${p.start}_to_${p.end}`;const cpuHistogramDescription=`CPU time ${p.start} to ${p.end} breakdown`;const pid=navInfo.rendererHelper.pid;const breakdownTree=getWallTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const cpuBreakdownTree=getCpuTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const diagnostics={'Navigation infos':new tr.v.d.GenericSet([{url:navInfo.url,pid:navInfo.rendererHelper.pid,navStart:navigationStart,frameIdRef:navInfo.navigationStart.args.frame}]),'breakdown':tr.metrics.sh.createBreakdownDiagnostic(breakdownTree),};return Object.assign(p,{breakdownTree,cpuBreakdownTree,wallHistogramName,wallHistogramDescription,cpuHistogramName,cpuHistogramDescription,diagnostics,});});breakdownList.forEach(p=>{if(!histograms.getHistogramNamed(p.wallHistogramName)){histograms.createHistogram(p.wallHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.wallHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}\nconst wallHistogram=histograms.getHistogramNamed(p.wallHistogramName);addSamplesToHistogram(p,p.breakdownTree,wallHistogram,histograms,p.diagnostics);if(!histograms.getHistogramNamed(p.cpuHistogramName)){histograms.createHistogram(p.cpuHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.cpuHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}\nconst cpuHistogram=histograms.getHistogramNamed(p.cpuHistogramName);addSamplesToHistogram(p,p.cpuBreakdownTree,cpuHistogram,histograms,p.diagnostics);});});}\ntr.metrics.MetricRegistry.register(persecondMetric);return{persecondMetric,splitOneRangeIntoPerSecondRanges};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CHROME_POWER_GRACE_PERIOD_MS=1;function createEmptyHistogram_(interval,histograms){if(interval.perSecond){return{perSecond:true,energy:histograms.createHistogram(`${interval.name}:power`,tr.b.Unit.byName.powerInWatts_smallerIsBetter,[],{description:`Energy consumption rate for ${interval.description}`,summaryOptions:{avg:true,count:false,max:true,min:true,std:false,sum:false,},}),};}\nreturn{perSecond:false,energy:histograms.createHistogram(`${interval.name}:energy`,tr.b.Unit.byName.energyInJoules_smallerIsBetter,[],{description:`Energy consumed in ${interval.description}`,summaryOptions:{avg:false,count:false,max:true,min:true,std:false,sum:true,},}),};}\nfunction createHistograms_(data,interval,histograms){if(data.histograms[interval.name]===undefined){data.histograms[interval.name]=createEmptyHistogram_(interval,histograms);}\nif(data.histograms[interval.name].perSecond){for(const sample of data.model.device.powerSeries.getSamplesWithinRange(interval.bounds.min,interval.bounds.max)){data.histograms[interval.name].energy.addSample(sample.powerInW);}}else{const energyInJ=data.model.device.powerSeries.getEnergyConsumedInJ(interval.bounds.min,interval.bounds.max);data.histograms[interval.name].energy.addSample(energyInJ);}}\nfunction getNavigationTTIIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const intervals=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nif(expectation.timeToInteractive!==undefined){intervals.push(tr.b.math.Range.fromExplicitRange(expectation.navigationStart.start,expectation.timeToInteractive));}}\nreturn intervals.sort((x,y)=>x.min-y.min);}\nfunction*computeTimeIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const powerSeries=model.device.powerSeries;if(powerSeries===undefined||powerSeries.samples.length===0){return;}\nyield{bounds:model.bounds,name:'story',description:'user story',perSecond:true};const chromeBounds=computeChromeBounds_(model);if(chromeBounds.isEmpty)return;const powerSeriesBoundsWithGracePeriod=tr.b.math.Range.fromExplicitRange(powerSeries.bounds.min-CHROME_POWER_GRACE_PERIOD_MS,powerSeries.bounds.max+CHROME_POWER_GRACE_PERIOD_MS);if(!powerSeriesBoundsWithGracePeriod.containsRangeExclusive(chromeBounds)){return;}\nfor(const interval of getRailStageIntervals_(model)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}\nfor(const interval of getLoadingIntervals_(model,chromeBounds)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}}\nfunction*getRailStageIntervals_(model){for(const exp of model.userModel.expectations){const histogramName=exp.title.toLowerCase().replace(' ','_');const energyHist=undefined;if(histogramName.includes('response')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:false};}else if(histogramName.includes('animation')||histogramName.includes('idle')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:true};}}}\nfunction*getLoadingIntervals_(model,chromeBounds){const ttiIntervals=getNavigationTTIIntervals_(model);for(const ttiInterval of ttiIntervals){yield{bounds:ttiInterval,name:'load',description:'page loads',perSecond:false};}}\nfunction computeChromeBounds_(model){const chromeBounds=new tr.b.math.Range();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return chromeBounds;for(const helper of chromeHelper.browserHelpers){if(helper.mainThread){chromeBounds.addRange(helper.mainThread.bounds);}}\nfor(const pid in chromeHelper.rendererHelpers){if(chromeHelper.rendererHelpers[pid].mainThread){chromeBounds.addRange(chromeHelper.rendererHelpers[pid].mainThread.bounds);}}\nreturn chromeBounds;}\nfunction powerMetric(histograms,model){const data={model,histograms:{}};for(const interval of computeTimeIntervals_(model)){createHistograms_(data,interval,histograms);}}\ntr.metrics.MetricRegistry.register(powerMetric);return{powerMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){function computeAnimationThroughput(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+\nanimationExpectation.stableId);}\nconst durationInS=tr.b.convertUnit(animationExpectation.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return animationExpectation.frameEvents.length/durationInS;}\nfunction computeAnimationframeTimeDiscrepancy(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+\nanimationExpectation.stableId);}\nlet frameTimestamps=animationExpectation.frameEvents;frameTimestamps=frameTimestamps.toArray().map(function(event){return event.start;});const absolute=true;return tr.b.math.Statistics.timestampsDiscrepancy(frameTimestamps,absolute);}\nfunction responsivenessMetric(histograms,model,opt_options){const responseNumeric=new tr.v.Histogram('response latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(100,1e3,50));const throughputNumeric=new tr.v.Histogram('animation throughput',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,tr.v.HistogramBinBoundaries.createLinear(10,60,10));const frameTimeDiscrepancyNumeric=new tr.v.Histogram('animation frameTimeDiscrepancy',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,1e3,50).addExponentialBins(1e4,10));const latencyNumeric=new tr.v.Histogram('animation latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,300,60));model.userModel.expectations.forEach(function(ue){if(opt_options&&opt_options.rangeOfInterest&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){return;}\nconst sampleDiagnosticMap=tr.v.d.DiagnosticMap.fromObject({relatedEvents:new tr.v.d.RelatedEventSet([ue])});if(ue instanceof tr.model.um.IdleExpectation){return;}else if(ue instanceof tr.model.um.StartupExpectation){return;}else if(ue instanceof tr.model.um.LoadExpectation){}else if(ue instanceof tr.model.um.ResponseExpectation){responseNumeric.addSample(ue.duration,sampleDiagnosticMap);}else if(ue instanceof tr.model.um.AnimationExpectation){if(ue.frameEvents===undefined||ue.frameEvents.length===0){return;}\nconst throughput=computeAnimationThroughput(ue);if(throughput===undefined){throw new Error('Missing throughput for '+\nue.stableId);}\nthroughputNumeric.addSample(throughput,sampleDiagnosticMap);const frameTimeDiscrepancy=computeAnimationframeTimeDiscrepancy(ue);if(frameTimeDiscrepancy===undefined){throw new Error('Missing frameTimeDiscrepancy for '+\nue.stableId);}\nframeTimeDiscrepancyNumeric.addSample(frameTimeDiscrepancy,sampleDiagnosticMap);ue.associatedEvents.forEach(function(event){if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){return;}\nlatencyNumeric.addSample(event.duration,sampleDiagnosticMap);});}else{throw new Error('Unrecognized stage for '+ue.stableId);}});[responseNumeric,throughputNumeric,frameTimeDiscrepancyNumeric,latencyNumeric].forEach(function(numeric){numeric.customizeSummaryOptions({avg:true,max:true,min:true,std:true});});histograms.addHistogram(responseNumeric);histograms.addHistogram(throughputNumeric);histograms.addHistogram(frameTimeDiscrepancyNumeric);histograms.addHistogram(latencyNumeric);}\ntr.metrics.MetricRegistry.register(responsivenessMetric,{supportsRangeOfInterest:true,requiredCategories:['rail'],});return{responsivenessMetric,};});var JpegImage=(function jpegImage(){\"use strict\";var dctZigZag=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);var dctCos1=4017\nvar dctSin1=799\nvar dctCos3=3406\nvar dctSin3=2276\nvar dctCos6=1567\nvar dctSin6=3784\nvar dctSqrt2=5793\nvar dctSqrt1d2=2896\nfunction constructor(){}\nfunction buildHuffmanTable(codeLengths,values){var k=0,code=[],i,j,length=16;while(length>0&&!codeLengths[length-1])\nlength--;code.push({children:[],index:0});var p=code[0],q;for(i=0;i<length;i++){for(j=0;j<codeLengths[i];j++){p=code.pop();p.children[p.index]=values[k];while(p.index>0){p=code.pop();}\np.index++;code.push(p);while(code.length<=i){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q;}\nk++;}\nif(i+1<length){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q;}}\nreturn code[0].children;}\nfunction decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successivePrev,successive){var precision=frame.precision;var samplesPerLine=frame.samplesPerLine;var scanLines=frame.scanLines;var mcusPerLine=frame.mcusPerLine;var progressive=frame.progressive;var maxH=frame.maxH,maxV=frame.maxV;var startOffset=offset,bitsData=0,bitsCount=0;function readBit(){if(bitsCount>0){bitsCount--;return(bitsData>>bitsCount)&1;}\nbitsData=data[offset++];if(bitsData==0xFF){var nextByte=data[offset++];if(nextByte){throw new Error(\"unexpected marker: \"+((bitsData<<8)|nextByte).toString(16));}}\nbitsCount=7;return bitsData>>>7;}\nfunction decodeHuffman(tree){var node=tree,bit;while((bit=readBit())!==null){node=node[bit];if(typeof node==='number')\nreturn node;if(typeof node!=='object')\nthrow new Error(\"invalid huffman sequence\");}\nreturn null;}\nfunction receive(length){var n=0;while(length>0){var bit=readBit();if(bit===null)return;n=(n<<1)|bit;length--;}\nreturn n;}\nfunction receiveAndExtend(length){var n=receive(length);if(n>=1<<(length-1))\nreturn n;return n+(-1<<length)+1;}\nfunction decodeBaseline(component,zz){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:receiveAndExtend(t);zz[0]=(component.pred+=diff);var k=1;while(k<64){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15)\nbreak;k+=16;continue;}\nk+=r;var z=dctZigZag[k];zz[z]=receiveAndExtend(s);k++;}}\nfunction decodeDCFirst(component,zz){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:(receiveAndExtend(t)<<successive);zz[0]=(component.pred+=diff);}\nfunction decodeDCSuccessive(component,zz){zz[0]|=readBit()<<successive;}\nvar eobrun=0;function decodeACFirst(component,zz){if(eobrun>0){eobrun--;return;}\nvar k=spectralStart,e=spectralEnd;while(k<=e){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<<r)-1;break;}\nk+=16;continue;}\nk+=r;var z=dctZigZag[k];zz[z]=receiveAndExtend(s)*(1<<successive);k++;}}\nvar successiveACState=0,successiveACNextValue;function decodeACSuccessive(component,zz){var k=spectralStart,e=spectralEnd,r=0;while(k<=e){var z=dctZigZag[k];var direction=zz[z]<0?-1:1;switch(successiveACState){case 0:var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<<r);successiveACState=4;}else{r=16;successiveACState=1;}}else{if(s!==1)\nthrow new Error(\"invalid ACn encoding\");successiveACNextValue=receiveAndExtend(s);successiveACState=r?2:3;}\ncontinue;case 1:case 2:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;else{r--;if(r===0)\nsuccessiveACState=successiveACState==2?3:0;}\nbreak;case 3:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;else{zz[z]=successiveACNextValue<<successive;successiveACState=0;}\nbreak;case 4:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;break;}\nk++;}\nif(successiveACState===4){eobrun--;if(eobrun===0)\nsuccessiveACState=0;}}\nfunction decodeMcu(component,decode,mcu,row,col){var mcuRow=(mcu/mcusPerLine)|0;var mcuCol=mcu%mcusPerLine;var blockRow=mcuRow*component.v+row;var blockCol=mcuCol*component.h+col;decode(component,component.blocks[blockRow][blockCol]);}\nfunction decodeBlock(component,decode,mcu){var blockRow=(mcu/component.blocksPerLine)|0;var blockCol=mcu%component.blocksPerLine;decode(component,component.blocks[blockRow][blockCol]);}\nvar componentsLength=components.length;var component,i,j,k,n;var decodeFn;if(progressive){if(spectralStart===0)\ndecodeFn=successivePrev===0?decodeDCFirst:decodeDCSuccessive;else\ndecodeFn=successivePrev===0?decodeACFirst:decodeACSuccessive;}else{decodeFn=decodeBaseline;}\nvar mcu=0,marker;var mcuExpected;if(componentsLength==1){mcuExpected=components[0].blocksPerLine*components[0].blocksPerColumn;}else{mcuExpected=mcusPerLine*frame.mcusPerColumn;}\nif(!resetInterval)resetInterval=mcuExpected;var h,v;while(mcu<mcuExpected){for(i=0;i<componentsLength;i++)\ncomponents[i].pred=0;eobrun=0;if(componentsLength==1){component=components[0];for(n=0;n<resetInterval;n++){decodeBlock(component,decodeFn,mcu);mcu++;}}else{for(n=0;n<resetInterval;n++){for(i=0;i<componentsLength;i++){component=components[i];h=component.h;v=component.v;for(j=0;j<v;j++){for(k=0;k<h;k++){decodeMcu(component,decodeFn,mcu,j,k);}}}\nmcu++;if(mcu===mcuExpected)break;}}\nbitsCount=0;marker=(data[offset]<<8)|data[offset+1];if(marker<0xFF00){throw new Error(\"marker was not found\");}\nif(marker>=0xFFD0&&marker<=0xFFD7){offset+=2;}\nelse\nbreak;}\nreturn offset-startOffset;}\nfunction buildComponentData(frame,component){var lines=[];var blocksPerLine=component.blocksPerLine;var blocksPerColumn=component.blocksPerColumn;var samplesPerLine=blocksPerLine<<3;var R=new Int32Array(64),r=new Uint8Array(64);function quantizeAndInverse(zz,dataOut,dataIn){var qt=component.quantizationTable;var v0,v1,v2,v3,v4,v5,v6,v7,t;var p=dataIn;var i;for(i=0;i<64;i++)\np[i]=zz[i]*qt[i];for(i=0;i<8;++i){var row=8*i;if(p[1+row]==0&&p[2+row]==0&&p[3+row]==0&&p[4+row]==0&&p[5+row]==0&&p[6+row]==0&&p[7+row]==0){t=(dctSqrt2*p[0+row]+512)>>10;p[0+row]=t;p[1+row]=t;p[2+row]=t;p[3+row]=t;p[4+row]=t;p[5+row]=t;p[6+row]=t;p[7+row]=t;continue;}\nv0=(dctSqrt2*p[0+row]+128)>>8;v1=(dctSqrt2*p[4+row]+128)>>8;v2=p[2+row];v3=p[6+row];v4=(dctSqrt1d2*(p[1+row]-p[7+row])+128)>>8;v7=(dctSqrt1d2*(p[1+row]+p[7+row])+128)>>8;v5=p[3+row]<<4;v6=p[5+row]<<4;t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+128)>>8;v2=(v2*dctCos6-v3*dctSin6+128)>>8;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0+row]=v0+v7;p[7+row]=v0-v7;p[1+row]=v1+v6;p[6+row]=v1-v6;p[2+row]=v2+v5;p[5+row]=v2-v5;p[3+row]=v3+v4;p[4+row]=v3-v4;}\nfor(i=0;i<8;++i){var col=i;if(p[1*8+col]==0&&p[2*8+col]==0&&p[3*8+col]==0&&p[4*8+col]==0&&p[5*8+col]==0&&p[6*8+col]==0&&p[7*8+col]==0){t=(dctSqrt2*dataIn[i+0]+8192)>>14;p[0*8+col]=t;p[1*8+col]=t;p[2*8+col]=t;p[3*8+col]=t;p[4*8+col]=t;p[5*8+col]=t;p[6*8+col]=t;p[7*8+col]=t;continue;}\nv0=(dctSqrt2*p[0*8+col]+2048)>>12;v1=(dctSqrt2*p[4*8+col]+2048)>>12;v2=p[2*8+col];v3=p[6*8+col];v4=(dctSqrt1d2*(p[1*8+col]-p[7*8+col])+2048)>>12;v7=(dctSqrt1d2*(p[1*8+col]+p[7*8+col])+2048)>>12;v5=p[3*8+col];v6=p[5*8+col];t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+2048)>>12;v2=(v2*dctCos6-v3*dctSin6+2048)>>12;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0*8+col]=v0+v7;p[7*8+col]=v0-v7;p[1*8+col]=v1+v6;p[6*8+col]=v1-v6;p[2*8+col]=v2+v5;p[5*8+col]=v2-v5;p[3*8+col]=v3+v4;p[4*8+col]=v3-v4;}\nfor(i=0;i<64;++i){var sample=128+((p[i]+8)>>4);dataOut[i]=sample<0?0:sample>0xFF?0xFF:sample;}}\nvar i,j;for(var blockRow=0;blockRow<blocksPerColumn;blockRow++){var scanLine=blockRow<<3;for(i=0;i<8;i++)\nlines.push(new Uint8Array(samplesPerLine));for(var blockCol=0;blockCol<blocksPerLine;blockCol++){quantizeAndInverse(component.blocks[blockRow][blockCol],r,R);var offset=0,sample=blockCol<<3;for(j=0;j<8;j++){var line=lines[scanLine+j];for(i=0;i<8;i++)\nline[sample+i]=r[offset++];}}}\nreturn lines;}\nfunction clampTo8bit(a){return a<0?0:a>255?255:a;}\nconstructor.prototype={load:function load(path){var xhr=new XMLHttpRequest();xhr.open(\"GET\",path,true);xhr.responseType=\"arraybuffer\";xhr.onload=(function(){var data=new Uint8Array(xhr.response||xhr.mozResponseArrayBuffer);this.parse(data);if(this.onload)\nthis.onload();}).bind(this);xhr.send(null);},parse:function parse(data){var offset=0,length=data.length;function readUint16(){var value=(data[offset]<<8)|data[offset+1];offset+=2;return value;}\nfunction readDataBlock(){var length=readUint16();var array=data.subarray(offset,offset+length-2);offset+=array.length;return array;}\nfunction prepareComponents(frame){var maxH=0,maxV=0;var component,componentId;for(componentId in frame.components){if(frame.components.hasOwnProperty(componentId)){component=frame.components[componentId];if(maxH<component.h)maxH=component.h;if(maxV<component.v)maxV=component.v;}}\nvar mcusPerLine=Math.ceil(frame.samplesPerLine/8/maxH);var mcusPerColumn=Math.ceil(frame.scanLines/8/maxV);for(componentId in frame.components){if(frame.components.hasOwnProperty(componentId)){component=frame.components[componentId];var blocksPerLine=Math.ceil(Math.ceil(frame.samplesPerLine/8)*component.h/maxH);var blocksPerColumn=Math.ceil(Math.ceil(frame.scanLines/8)*component.v/maxV);var blocksPerLineForMcu=mcusPerLine*component.h;var blocksPerColumnForMcu=mcusPerColumn*component.v;var blocks=[];for(var i=0;i<blocksPerColumnForMcu;i++){var row=[];for(var j=0;j<blocksPerLineForMcu;j++)\nrow.push(new Int32Array(64));blocks.push(row);}\ncomponent.blocksPerLine=blocksPerLine;component.blocksPerColumn=blocksPerColumn;component.blocks=blocks;}}\nframe.maxH=maxH;frame.maxV=maxV;frame.mcusPerLine=mcusPerLine;frame.mcusPerColumn=mcusPerColumn;}\nvar jfif=null;var adobe=null;var pixels=null;var frame,resetInterval;var quantizationTables=[],frames=[];var huffmanTablesAC=[],huffmanTablesDC=[];var fileMarker=readUint16();if(fileMarker!=0xFFD8){throw new Error(\"SOI not found\");}\nfileMarker=readUint16();while(fileMarker!=0xFFD9){var i,j,l;switch(fileMarker){case 0xFF00:break;case 0xFFE0:case 0xFFE1:case 0xFFE2:case 0xFFE3:case 0xFFE4:case 0xFFE5:case 0xFFE6:case 0xFFE7:case 0xFFE8:case 0xFFE9:case 0xFFEA:case 0xFFEB:case 0xFFEC:case 0xFFED:case 0xFFEE:case 0xFFEF:case 0xFFFE:var appData=readDataBlock();if(fileMarker===0xFFE0){if(appData[0]===0x4A&&appData[1]===0x46&&appData[2]===0x49&&appData[3]===0x46&&appData[4]===0){jfif={version:{major:appData[5],minor:appData[6]},densityUnits:appData[7],xDensity:(appData[8]<<8)|appData[9],yDensity:(appData[10]<<8)|appData[11],thumbWidth:appData[12],thumbHeight:appData[13],thumbData:appData.subarray(14,14+3*appData[12]*appData[13])};}}\nif(fileMarker===0xFFEE){if(appData[0]===0x41&&appData[1]===0x64&&appData[2]===0x6F&&appData[3]===0x62&&appData[4]===0x65&&appData[5]===0){adobe={version:appData[6],flags0:(appData[7]<<8)|appData[8],flags1:(appData[9]<<8)|appData[10],transformCode:appData[11]};}}\nbreak;case 0xFFDB:var quantizationTablesLength=readUint16();var quantizationTablesEnd=quantizationTablesLength+offset-2;while(offset<quantizationTablesEnd){var quantizationTableSpec=data[offset++];var tableData=new Int32Array(64);if((quantizationTableSpec>>4)===0){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=data[offset++];}}else if((quantizationTableSpec>>4)===1){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=readUint16();}}else\nthrow new Error(\"DQT: invalid table spec\");quantizationTables[quantizationTableSpec&15]=tableData;}\nbreak;case 0xFFC0:case 0xFFC1:case 0xFFC2:readUint16();frame={};frame.extended=(fileMarker===0xFFC1);frame.progressive=(fileMarker===0xFFC2);frame.precision=data[offset++];frame.scanLines=readUint16();frame.samplesPerLine=readUint16();frame.components={};frame.componentsOrder=[];var componentsCount=data[offset++],componentId;var maxH=0,maxV=0;for(i=0;i<componentsCount;i++){componentId=data[offset];var h=data[offset+1]>>4;var v=data[offset+1]&15;var qId=data[offset+2];frame.componentsOrder.push(componentId);frame.components[componentId]={h:h,v:v,quantizationIdx:qId};offset+=3;}\nprepareComponents(frame);frames.push(frame);break;case 0xFFC4:var huffmanLength=readUint16();for(i=2;i<huffmanLength;){var huffmanTableSpec=data[offset++];var codeLengths=new Uint8Array(16);var codeLengthSum=0;for(j=0;j<16;j++,offset++)\ncodeLengthSum+=(codeLengths[j]=data[offset]);var huffmanValues=new Uint8Array(codeLengthSum);for(j=0;j<codeLengthSum;j++,offset++)\nhuffmanValues[j]=data[offset];i+=17+codeLengthSum;((huffmanTableSpec>>4)===0?huffmanTablesDC:huffmanTablesAC)[huffmanTableSpec&15]=buildHuffmanTable(codeLengths,huffmanValues);}\nbreak;case 0xFFDD:readUint16();resetInterval=readUint16();break;case 0xFFDA:var scanLength=readUint16();var selectorsCount=data[offset++];var components=[],component;for(i=0;i<selectorsCount;i++){component=frame.components[data[offset++]];var tableSpec=data[offset++];component.huffmanTableDC=huffmanTablesDC[tableSpec>>4];component.huffmanTableAC=huffmanTablesAC[tableSpec&15];components.push(component);}\nvar spectralStart=data[offset++];var spectralEnd=data[offset++];var successiveApproximation=data[offset++];var processed=decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successiveApproximation>>4,successiveApproximation&15);offset+=processed;break;case 0xFFFF:if(data[offset]!==0xFF){offset--;}\nbreak;default:if(data[offset-3]==0xFF&&data[offset-2]>=0xC0&&data[offset-2]<=0xFE){offset-=3;break;}\nthrow new Error(\"unknown JPEG marker \"+fileMarker.toString(16));}\nfileMarker=readUint16();}\nif(frames.length!=1)\nthrow new Error(\"only single frame JPEGs supported\");for(var i=0;i<frames.length;i++){var cp=frames[i].components;for(var j in cp){cp[j].quantizationTable=quantizationTables[cp[j].quantizationIdx];delete cp[j].quantizationIdx;}}\nthis.width=frame.samplesPerLine;this.height=frame.scanLines;this.jfif=jfif;this.adobe=adobe;this.components=[];for(var i=0;i<frame.componentsOrder.length;i++){var component=frame.components[frame.componentsOrder[i]];this.components.push({lines:buildComponentData(frame,component),scaleX:component.h/frame.maxH,scaleY:component.v/frame.maxV});}},getData:function getData(width,height){var scaleX=this.width/width,scaleY=this.height/height;var component1,component2,component3,component4;var component1Line,component2Line,component3Line,component4Line;var x,y;var offset=0;var Y,Cb,Cr,K,C,M,Ye,R,G,B;var colorTransform;var dataLength=width*height*this.components.length;var data=new Uint8Array(dataLength);switch(this.components.length){case 1:component1=this.components[0];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];for(x=0;x<width;x++){Y=component1Line[0|(x*component1.scaleX*scaleX)];data[offset++]=Y;}}\nbreak;case 2:component1=this.components[0];component2=this.components[1];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];for(x=0;x<width;x++){Y=component1Line[0|(x*component1.scaleX*scaleX)];data[offset++]=Y;Y=component2Line[0|(x*component2.scaleX*scaleX)];data[offset++]=Y;}}\nbreak;case 3:colorTransform=true;if(this.adobe&&this.adobe.transformCode)\ncolorTransform=true;else if(typeof this.colorTransform!=='undefined')\ncolorTransform=!!this.colorTransform;component1=this.components[0];component2=this.components[1];component3=this.components[2];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];component3Line=component3.lines[0|(y*component3.scaleY*scaleY)];for(x=0;x<width;x++){if(!colorTransform){R=component1Line[0|(x*component1.scaleX*scaleX)];G=component2Line[0|(x*component2.scaleX*scaleX)];B=component3Line[0|(x*component3.scaleX*scaleX)];}else{Y=component1Line[0|(x*component1.scaleX*scaleX)];Cb=component2Line[0|(x*component2.scaleX*scaleX)];Cr=component3Line[0|(x*component3.scaleX*scaleX)];R=clampTo8bit(Y+1.402*(Cr-128));G=clampTo8bit(Y-0.3441363*(Cb-128)-0.71413636*(Cr-128));B=clampTo8bit(Y+1.772*(Cb-128));}\ndata[offset++]=R;data[offset++]=G;data[offset++]=B;}}\nbreak;case 4:if(!this.adobe)\nthrow new Error('Unsupported color mode (4 components)');colorTransform=false;if(this.adobe&&this.adobe.transformCode)\ncolorTransform=true;else if(typeof this.colorTransform!=='undefined')\ncolorTransform=!!this.colorTransform;component1=this.components[0];component2=this.components[1];component3=this.components[2];component4=this.components[3];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];component3Line=component3.lines[0|(y*component3.scaleY*scaleY)];component4Line=component4.lines[0|(y*component4.scaleY*scaleY)];for(x=0;x<width;x++){if(!colorTransform){C=component1Line[0|(x*component1.scaleX*scaleX)];M=component2Line[0|(x*component2.scaleX*scaleX)];Ye=component3Line[0|(x*component3.scaleX*scaleX)];K=component4Line[0|(x*component4.scaleX*scaleX)];}else{Y=component1Line[0|(x*component1.scaleX*scaleX)];Cb=component2Line[0|(x*component2.scaleX*scaleX)];Cr=component3Line[0|(x*component3.scaleX*scaleX)];K=component4Line[0|(x*component4.scaleX*scaleX)];C=255-clampTo8bit(Y+1.402*(Cr-128));M=255-clampTo8bit(Y-0.3441363*(Cb-128)-0.71413636*(Cr-128));Ye=255-clampTo8bit(Y+1.772*(Cb-128));}\ndata[offset++]=255-C;data[offset++]=255-M;data[offset++]=255-Ye;data[offset++]=255-K;}}\nbreak;default:throw new Error('Unsupported color mode');}\nreturn data;},copyToImageData:function copyToImageData(imageData){var width=imageData.width,height=imageData.height;var imageDataArray=imageData.data;var data=this.getData(width,height);var i=0,j=0,x,y;var Y,K,C,M,R,G,B;switch(this.components.length){case 1:for(y=0;y<height;y++){for(x=0;x<width;x++){Y=data[i++];imageDataArray[j++]=Y;imageDataArray[j++]=Y;imageDataArray[j++]=Y;imageDataArray[j++]=255;}}\nbreak;case 3:for(y=0;y<height;y++){for(x=0;x<width;x++){R=data[i++];G=data[i++];B=data[i++];imageDataArray[j++]=R;imageDataArray[j++]=G;imageDataArray[j++]=B;imageDataArray[j++]=255;}}\nbreak;case 4:for(y=0;y<height;y++){for(x=0;x<width;x++){C=data[i++];M=data[i++];Y=data[i++];K=data[i++];R=255-clampTo8bit(C*(1-K/255)+K);G=255-clampTo8bit(M*(1-K/255)+K);B=255-clampTo8bit(Y*(1-K/255)+K);imageDataArray[j++]=R;imageDataArray[j++]=G;imageDataArray[j++]=B;imageDataArray[j++]=255;}}\nbreak;default:throw new Error('Unsupported color mode');}}};return constructor;})();global.jpegDecode=decode;function decode(jpegData,opts){var defaultOpts={useTArray:false,colorTransform:true};if(opts){if(typeof opts==='object'){opts={useTArray:(typeof opts.useTArray==='undefined'?defaultOpts.useTArray:opts.useTArray),colorTransform:(typeof opts.colorTransform==='undefined'?defaultOpts.colorTransform:opts.colorTransform)};}else{opts=defaultOpts;opts.useTArray=true;}}else{opts=defaultOpts;}\nvar arr=new Uint8Array(jpegData);var decoder=new JpegImage();decoder.parse(arr);decoder.colorTransform=opts.colorTransform;var image={width:decoder.width,height:decoder.height,data:opts.useTArray?new Uint8Array(decoder.width*decoder.height*4):new Buffer(decoder.width*decoder.height*4)};decoder.copyToImageData(image);return image;}'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const SpeedIndex=tr.e.chrome.SpeedIndex;const LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function addSpeedIndexScreenshotsBasedSample(samples,navigationStart,loadDuration,browserHelper){const screenshotObjects=browserHelper.process.objects.getAllInstancesNamed('Screenshot');if(!screenshotObjects)return;for(let i=0;i<screenshotObjects.length;i++){const snapshots=screenshotObjects[i].snapshots;const timestampedColorHistograms=[];snapshots.map(snapshot=>{if(snapshot.ts>=navigationStart.start&&snapshot.ts<navigationStart.start+loadDuration){timestampedColorHistograms.push({colorHistogram:SpeedIndex.createColorHistogram(getPixelData(snapshot.args)),ts:snapshot.ts});}});samples.push({value:SpeedIndex.calculateSpeedIndex(timestampedColorHistograms)-\nnavigationStart.start});}}\nfunction getPixelData(base64JpegImage){const binaryString=atob(base64JpegImage);const bytes=new DataView(new ArrayBuffer(base64JpegImage.length));tr.b.Base64.DecodeToTypedArray(base64JpegImage,bytes);const rawImageData=jpegDecode(bytes.buffer,{useTArray:true});return rawImageData.data;}\nfunction collectSpeedIndexSamplesFromLoadExpectations(model,chromeHelper){const speedIndexScreenshotsBasedSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];addSpeedIndexScreenshotsBasedSample(speedIndexScreenshotsBasedSamples,expectation.navigationStart,expectation.duration,chromeHelper.browserHelper);}\nreturn speedIndexScreenshotsBasedSamples;}\nfunction screenshotsBasedSpeedIndexMetric(histograms,model){const speedIndexScreenshotsBasedHistogram=histograms.createHistogram('speedIndexScreenshotsBased',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'The average time at which visible parts of the'+' page are displayed.',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const samples=collectSpeedIndexSamplesFromLoadExpectations(model,chromeHelper);for(const sample of samples){speedIndexScreenshotsBasedHistogram.addSample(sample.value);}}\ntr.metrics.MetricRegistry.register(screenshotsBasedSpeedIndexMetric);return{screenshotsBasedSpeedIndexMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){function webviewStartupMetric(histograms,model){const startupWallHist=new tr.v.Histogram('webview_startup_wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);startupWallHist.description='WebView startup wall time';const startupCPUHist=new tr.v.Histogram('webview_startup_cpu_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);startupCPUHist.description='WebView startup CPU time';const loadWallHist=new tr.v.Histogram('webview_url_load_wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);loadWallHist.description='WebView blank URL load wall time';const loadCPUHist=new tr.v.Histogram('webview_url_load_cpu_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);loadCPUHist.description='WebView blank URL load CPU time';for(const slice of model.getDescendantEvents()){if(!(slice instanceof tr.model.ThreadSlice))continue;if(slice.title==='WebViewStartupInterval'){startupWallHist.addSample(slice.duration);startupCPUHist.addSample(slice.cpuDuration);}\nif(slice.title==='WebViewBlankUrlLoadInterval'){loadWallHist.addSample(slice.duration);loadCPUHist.addSample(slice.cpuDuration);}}\nhistograms.addHistogram(startupWallHist);histograms.addHistogram(startupCPUHist);histograms.addHistogram(loadWallHist);histograms.addHistogram(loadCPUHist);}\ntr.metrics.MetricRegistry.register(webviewStartupMetric);return{webviewStartupMetric,};});'use strict';tr.exportTo('tr.metrics.tabs',function(){function tabsMetric(histograms,model,opt_options){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper){return;}\nconst tabSwitchRequestDelays=[];const TAB_SWITCHING_REQUEST_TITLE='TabSwitchVisibilityRequest';let startTabSwitchVisibilityRequest=Number.MAX_SAFE_INTEGER;for(const helper of chromeHelper.browserHelpers){if(!helper.mainThread)continue;for(const slice of helper.mainThread.asyncSliceGroup.slices){if(slice.title===TAB_SWITCHING_REQUEST_TITLE&&!slice.error){tabSwitchRequestDelays.push(slice.duration);if(slice.start<startTabSwitchVisibilityRequest){startTabSwitchVisibilityRequest=slice.start;}}}}\nhistograms.createHistogram('tab_switching_request_delay',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tabSwitchRequestDelays,{description:'Delay before tab-request is made',summaryOptions:{sum:false}});const tabSwitchLatencies=[];const TAB_SWITCHING_SLICE_TITLE='TabSwitching::Latency';function extractLatencyFromHelpers(helpers,legacy){for(const helper of helpers){if(!helper.mainThread){continue;}\nconst thread=helper.mainThread;for(const slice of thread.asyncSliceGroup.slices){if(slice.title===TAB_SWITCHING_SLICE_TITLE&&(legacy||slice.args.latency)&&slice.start>startTabSwitchVisibilityRequest){tabSwitchLatencies.push(legacy?slice.duration:slice.args.latency);}}}}\nextractLatencyFromHelpers(chromeHelper.browserHelpers);extractLatencyFromHelpers(Object.values(chromeHelper.rendererHelpers));if(tabSwitchLatencies.length===0){extractLatencyFromHelpers(chromeHelper.browserHelpers,true);}\nhistograms.createHistogram('tab_switching_latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tabSwitchLatencies,{description:'Tab switching time in ms',summaryOptions:{sum:false}});}\ntr.metrics.MetricRegistry.register(tabsMetric,{supportsRangeOfInterest:false,});return{tabsMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const MEMORY_INFRA_TRACING_CATEGORY='disabled-by-default-memory-infra';const TIME_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1e-3,1e5,30);const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,30);const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e5,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;function addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes){const memoryDumpCount=model.globalMemoryDumps.length;if(memoryDumpCount===0)return;let totalOverhead=0;let nonMemoryInfraThreadOverhead=0;const overheadByProvider={};for(const process of Object.values(model.processes)){for(const thread of Object.values(process.threads)){for(const slice of Object.values(thread.sliceGroup.slices)){if(slice.category!==MEMORY_INFRA_TRACING_CATEGORY)continue;totalOverhead+=slice.duration;if(thread.name!=='MemoryInfra'){nonMemoryInfraThreadOverhead+=slice.duration;}\nif(slice.args&&slice.args['dump_provider.name']){const providerName=slice.args['dump_provider.name'];let durationAndCount=overheadByProvider[providerName];if(durationAndCount===undefined){overheadByProvider[providerName]=durationAndCount={duration:0,count:0};}\ndurationAndCount.duration+=slice.duration;durationAndCount.count++;}}}}\nhistograms.createHistogram('memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,totalOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on all threads per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('nonmemory_thread_memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,nonMemoryInfraThreadOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on non-memory-infra threads '+'per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});for(const[providerName,overhead]of Object.entries(overheadByProvider)){histograms.createHistogram(`${providerName}_memory_dump_cpu_overhead`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,overhead.duration/overhead.count,{binBoundaries:TIME_BOUNDARIES,description:`Average CPU overhead of ${providerName} per OnMemoryDump call`,summaryOptions:SUMMARY_OPTIONS,});}\nconst memoryInfraEventsSize=categoryNamesToTotalEventSizes.get(MEMORY_INFRA_TRACING_CATEGORY);const memoryInfraTraceBytesValue=new tr.v.Histogram('total_memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);memoryInfraTraceBytesValue.description='Total trace size of memory-infra dumps in bytes';memoryInfraTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);memoryInfraTraceBytesValue.addSample(memoryInfraEventsSize);histograms.addHistogram(memoryInfraTraceBytesValue);const traceBytesPerDumpValue=new tr.v.Histogram('memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);traceBytesPerDumpValue.description='Average trace size of memory-infra dumps in bytes';traceBytesPerDumpValue.customizeSummaryOptions(SUMMARY_OPTIONS);traceBytesPerDumpValue.addSample(memoryInfraEventsSize/memoryDumpCount);histograms.addHistogram(traceBytesPerDumpValue);}\nfunction tracingMetric(histograms,model){if(!model.stats.hasEventSizesinBytes)return;const eventStats=model.stats.allTraceEventStatsInTimeIntervals;eventStats.sort((a,b)=>a.timeInterval-b.timeInterval);const totalTraceBytes=eventStats.reduce((a,b)=>a+b.totalEventSizeinBytes,0);let maxEventCountPerSec=0;let maxEventBytesPerSec=0;const INTERVALS_PER_SEC=Math.floor(1000/model.stats.TIME_INTERVAL_SIZE_IN_MS);let runningEventNumPerSec=0;let runningEventBytesPerSec=0;let start=0;let end=0;while(end<eventStats.length){runningEventNumPerSec+=eventStats[end].numEvents;runningEventBytesPerSec+=eventStats[end].totalEventSizeinBytes;end++;while((eventStats[end-1].timeInterval-\neventStats[start].timeInterval)>=INTERVALS_PER_SEC){runningEventNumPerSec-=eventStats[start].numEvents;runningEventBytesPerSec-=eventStats[start].totalEventSizeinBytes;start++;}\nmaxEventCountPerSec=Math.max(maxEventCountPerSec,runningEventNumPerSec);maxEventBytesPerSec=Math.max(maxEventBytesPerSec,runningEventBytesPerSec);}\nconst stats=model.stats.allTraceEventStats;const categoryNamesToTotalEventSizes=(stats.reduce((map,stat)=>(map.set(stat.category,((map.get(stat.category)||0)+\nstat.totalEventSizeinBytes))),new Map()));const maxCatNameAndBytes=Array.from(categoryNamesToTotalEventSizes.entries()).reduce((a,b)=>((b[1]>=a[1])?b:a));const maxEventBytesPerCategory=maxCatNameAndBytes[1];const categoryWithMaxEventBytes=maxCatNameAndBytes[0];const maxEventCountPerSecValue=new tr.v.Histogram('peak_event_rate',tr.b.Unit.byName.count_smallerIsBetter,COUNT_BOUNDARIES);maxEventCountPerSecValue.description='Max number of events per second';maxEventCountPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventCountPerSecValue.addSample(maxEventCountPerSec);const maxEventBytesPerSecValue=new tr.v.Histogram('peak_event_size_rate',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);maxEventBytesPerSecValue.description='Max event size in bytes per second';maxEventBytesPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventBytesPerSecValue.addSample(maxEventBytesPerSec);const totalTraceBytesValue=new tr.v.Histogram('trace_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);totalTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);totalTraceBytesValue.addSample(totalTraceBytes);const biggestCategory={name:categoryWithMaxEventBytes,size_in_bytes:maxEventBytesPerCategory};totalTraceBytesValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(totalTraceBytesValue);maxEventCountPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventCountPerSecValue);maxEventBytesPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventBytesPerSecValue);addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes);}\ntr.metrics.MetricRegistry.register(tracingMetric);return{tracingMetric,MEMORY_INFRA_TRACING_CATEGORY,};});'use strict';tr.exportTo('tr.metrics',function(){function parseBuckets_(event,processName){const len=tr.b.Base64.getDecodedBufferLength(event.args.buckets);const buffer=new ArrayBuffer(len);const dataView=new DataView(buffer);tr.b.Base64.DecodeToTypedArray(event.args.buckets,dataView);const decoded=new Uint32Array(buffer);const sum=decoded[1]+decoded[2]*0x100000000;const bins=[];let position=4;while(position<=decoded.length-4){const min=decoded[position++];const max=decoded[position++]+decoded[position++]*0x100000000;const count=decoded[position++];const processes=new tr.v.d.Breakdown();processes.set(processName,count);const events=new tr.v.d.RelatedEventSet([event]);bins.push({min,max,count,processes,events});}\nreturn{sum,bins};}\nfunction mergeBins_(x,y){x.sum+=y.sum;const allBins=[...x.bins,...y.bins];allBins.sort((a,b)=>a.min-b.min);x.bins=[];let last=undefined;for(const bin of allBins){if(last!==undefined&&bin.min===last.min){if(last.max!==bin.max)throw new Error('Incompatible bins');if(bin.count===0)continue;last.count+=bin.count;for(const event of bin.events){last.events.add(event);}\nlast.processes.addDiagnostic(bin.processes);}else{if(last!==undefined&&bin.min<last.max){throw new Error('Incompatible bins');}\nx.bins.push(bin);last=bin;}}}\nfunction subtractBins_(x,y){x.sum-=y.sum;let p1=0;let p2=0;while(p2<y.bins.length){while(p1<x.bins.length&&x.bins[p1].min!==y.bins[p2].min){p1++;}\nif(p1===x.bins.length)throw new Error('Cannot subtract');if(x.bins[p1].max!==y.bins[p2].max){throw new Error('Incompatible bins');}\nif(x.bins[p1].count<y.bins[p2].count){throw new Error('Cannot subtract');}\nx.bins[p1].count-=y.bins[p2].count;for(const event of y.bins[p2].events){x.bins[p1].events.add(event);}\nconst processName=tr.b.getOnlyElement(x.bins[p1].processes)[0];x.bins[p1].processes.set(processName,x.bins[p1].count);p2++;}}\nfunction getHistogramUnit_(name){return tr.b.Unit.byName.unitlessNumber_smallerIsBetter;}\nfunction getHistogramBoundaries_(name){if(name.startsWith('Event.Latency.Scroll')){return tr.v.HistogramBinBoundaries.createExponential(1e3,1e5,50);}\nif(name.startsWith('Graphics.Smoothness.Throughput')){return tr.v.HistogramBinBoundaries.createLinear(0,100,101);}\nif(name.startsWith('Memory.Memory.GPU.PeakMemoryUsage')){return tr.v.HistogramBinBoundaries.createLinear(0,1e6,100);}\nreturn tr.v.HistogramBinBoundaries.createExponential(1e-3,1e3,50);}\nfunction umaMetric(histograms,model){const histogramValues=new Map();const nameCounts=new Map();for(const process of model.getAllProcesses()){const histogramEvents=new Map();for(const event of process.instantEvents){if(event.title!=='UMAHistogramSamples')continue;const name=event.args.name;const events=histogramEvents.get(name)||[];if(!histogramEvents.has(name))histogramEvents.set(name,events);events.push(event);}\nlet processName=tr.e.chrome.chrome_processes.canonicalizeProcessName(process.name);nameCounts.set(processName,(nameCounts.get(processName)||0)+1);processName=`${processName}_${nameCounts.get(processName)}`;for(const[name,events]of histogramEvents){const values=histogramValues.get(name)||{sum:0,bins:[]};if(!histogramValues.has(name))histogramValues.set(name,values);const endValues=parseBuckets_(events[events.length-1],processName);if(events.length===1){mergeBins_(values,endValues);}else if(events.length===2){subtractBins_(endValues,parseBuckets_(events[0],processName));mergeBins_(values,endValues);}else{throw new Error('There should be at most two snapshots of an UMA '+'histogram in each process');}}}\nfor(const[name,values]of histogramValues){const histogram=new tr.v.Histogram(name,getHistogramUnit_(name),getHistogramBoundaries_(name));let sumOfMiddles=0;let sumOfBinLengths=0;for(const bin of values.bins){sumOfMiddles+=bin.count*(bin.min+bin.max)/2;sumOfBinLengths+=bin.count*(bin.max-bin.min);}\nconst shift=(values.sum-sumOfMiddles)/sumOfBinLengths;if(Math.abs(shift)>0.5)throw new Error('Samples sum is wrong');for(const bin of values.bins){if(bin.count===0)continue;const shiftedValue=(bin.min+bin.max)/2+shift*(bin.max-bin.min);for(const[processName,count]of bin.processes){bin.processes.set(processName,shiftedValue*count/bin.count);}\nfor(let i=0;i<bin.count;i++){histogram.addSample(shiftedValue,{processes:bin.processes,events:bin.events});}}\nhistograms.addHistogram(histogram);}}\ntr.metrics.MetricRegistry.register(umaMetric,{requiredCategories:['benchmark'],});return{umaMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(4,200,100);function computeExecuteMetrics(histograms,model){const cpuTotalExecution=new tr.v.Histogram('v8_execution_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalExecution.description='cpu total time spent in script execution';const wallTotalExecution=new tr.v.Histogram('v8_execution_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalExecution.description='wall total time spent in script execution';const cpuSelfExecution=new tr.v.Histogram('v8_execution_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfExecution.description='cpu self time spent in script execution';const wallSelfExecution=new tr.v.Histogram('v8_execution_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfExecution.description='wall self time spent in script execution';for(const e of model.findTopmostSlicesNamed('V8.Execute')){cpuTotalExecution.addSample(e.cpuDuration);wallTotalExecution.addSample(e.duration);cpuSelfExecution.addSample(e.cpuSelfTime);wallSelfExecution.addSample(e.selfTime);}\nhistograms.addHistogram(cpuTotalExecution);histograms.addHistogram(wallTotalExecution);histograms.addHistogram(cpuSelfExecution);histograms.addHistogram(wallSelfExecution);}\nfunction computeParseLazyMetrics(histograms,model){const cpuSelfParseLazy=new tr.v.Histogram('v8_parse_lazy_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfParseLazy.description='cpu self time spent performing lazy parsing';const wallSelfParseLazy=new tr.v.Histogram('v8_parse_lazy_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfParseLazy.description='wall self time spent performing lazy parsing';for(const e of model.findTopmostSlicesNamed('V8.ParseLazyMicroSeconds')){cpuSelfParseLazy.addSample(e.cpuSelfTime);wallSelfParseLazy.addSample(e.selfTime);}\nfor(const e of model.findTopmostSlicesNamed('V8.ParseLazy')){cpuSelfParseLazy.addSample(e.cpuSelfTime);wallSelfParseLazy.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfParseLazy);histograms.addHistogram(wallSelfParseLazy);}\nfunction computeCompileFullCodeMetrics(histograms,model){const cpuSelfCompileFullCode=new tr.v.Histogram('v8_compile_full_code_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfCompileFullCode.description='cpu self time spent performing compiling full code';const wallSelfCompileFullCode=new tr.v.Histogram('v8_compile_full_code_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfCompileFullCode.description='wall self time spent performing compiling full code';for(const e of model.findTopmostSlicesNamed('V8.CompileFullCode')){cpuSelfCompileFullCode.addSample(e.cpuSelfTime);wallSelfCompileFullCode.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfCompileFullCode);histograms.addHistogram(wallSelfCompileFullCode);}\nfunction computeCompileIgnitionMetrics(histograms,model){const cpuSelfCompileIgnition=new tr.v.Histogram('v8_compile_ignition_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfCompileIgnition.description='cpu self time spent in compile ignition';const wallSelfCompileIgnition=new tr.v.Histogram('v8_compile_ignition_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfCompileIgnition.description='wall self time spent in compile ignition';for(const e of model.findTopmostSlicesNamed('V8.CompileIgnition')){cpuSelfCompileIgnition.addSample(e.cpuSelfTime);wallSelfCompileIgnition.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfCompileIgnition);histograms.addHistogram(wallSelfCompileIgnition);}\nfunction computeRecompileMetrics(histograms,model){const cpuTotalRecompileSynchronous=new tr.v.Histogram('v8_recompile_synchronous_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileSynchronous.description='cpu total time spent in synchronous recompilation';const wallTotalRecompileSynchronous=new tr.v.Histogram('v8_recompile_synchronous_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileSynchronous.description='wall total time spent in synchronous recompilation';const cpuTotalRecompileConcurrent=new tr.v.Histogram('v8_recompile_concurrent_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileConcurrent.description='cpu total time spent in concurrent recompilation';const wallTotalRecompileConcurrent=new tr.v.Histogram('v8_recompile_concurrent_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileConcurrent.description='wall total time spent in concurrent recompilation';const cpuTotalRecompileOverall=new tr.v.Histogram('v8_recompile_overall_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileOverall.description='cpu total time spent in synchronous or concurrent recompilation';const wallTotalRecompileOverall=new tr.v.Histogram('v8_recompile_overall_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileOverall.description='wall total time spent in synchronous or concurrent recompilation';for(const e of model.findTopmostSlicesNamed('V8.RecompileSynchronous')){cpuTotalRecompileSynchronous.addSample(e.cpuDuration);wallTotalRecompileSynchronous.addSample(e.duration);cpuTotalRecompileOverall.addSample(e.cpuDuration);wallTotalRecompileOverall.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalRecompileSynchronous);histograms.addHistogram(wallTotalRecompileSynchronous);for(const e of model.findTopmostSlicesNamed('V8.RecompileConcurrent')){cpuTotalRecompileConcurrent.addSample(e.cpuDuration);wallTotalRecompileConcurrent.addSample(e.duration);cpuTotalRecompileOverall.addSample(e.cpuDuration);wallTotalRecompileOverall.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalRecompileConcurrent);histograms.addHistogram(wallTotalRecompileConcurrent);histograms.addHistogram(cpuTotalRecompileOverall);histograms.addHistogram(wallTotalRecompileOverall);}\nfunction computeOptimizeCodeMetrics(histograms,model){const cpuTotalOptimizeCode=new tr.v.Histogram('v8_optimize_code_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalOptimizeCode.description='cpu total time spent in code optimization';const wallTotalOptimizeCode=new tr.v.Histogram('v8_optimize_code_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalOptimizeCode.description='wall total time spent in code optimization';for(const e of model.findTopmostSlicesNamed('V8.OptimizeCode')){cpuTotalOptimizeCode.addSample(e.cpuDuration);wallTotalOptimizeCode.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalOptimizeCode);histograms.addHistogram(wallTotalOptimizeCode);}\nfunction computeDeoptimizeCodeMetrics(histograms,model){const cpuTotalDeoptimizeCode=new tr.v.Histogram('v8_deoptimize_code_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalDeoptimizeCode.description='cpu total time spent in code deoptimization';const wallTotalDeoptimizeCode=new tr.v.Histogram('v8_deoptimize_code_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalDeoptimizeCode.description='wall total time spent in code deoptimization';for(const e of model.findTopmostSlicesNamed('V8.DeoptimizeCode')){cpuTotalDeoptimizeCode.addSample(e.cpuDuration);wallTotalDeoptimizeCode.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalDeoptimizeCode);histograms.addHistogram(wallTotalDeoptimizeCode);}\nfunction executionMetric(histograms,model){computeExecuteMetrics(histograms,model);computeParseLazyMetrics(histograms,model);computeCompileIgnitionMetrics(histograms,model);computeCompileFullCodeMetrics(histograms,model);computeRecompileMetrics(histograms,model);computeOptimizeCodeMetrics(histograms,model);computeDeoptimizeCodeMetrics(histograms,model);}\ntr.metrics.MetricRegistry.register(executionMetric);return{executionMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const TARGET_FPS=60;const MS_PER_SECOND=1000;const WINDOW_SIZE_MS=MS_PER_SECOND/TARGET_FPS;function gcMetric(histograms,model,options){options=options||{};addDurationOfTopEvents(histograms,model);addTotalDurationOfTopEvents(histograms,model);if(options.include_sub_events){addDurationOfSubEvents(histograms,model);}\naddPercentageInV8ExecuteOfTopEvents(histograms,model);addTotalPercentageInV8Execute(histograms,model);addMarkCompactorMutatorUtilization(histograms,model);addTotalMarkCompactorTime(histograms,model);addTotalMarkCompactorMarkingTime(histograms,model);addScavengerSurvivedFromStackEvents(histograms,model);}\ntr.metrics.MetricRegistry.register(gcMetric);const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const percentage_biggerIsBetter=tr.b.Unit.byName.normalizedPercentage_biggerIsBetter;const percentage_smallerIsBetter=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const bytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,20,200).addExponentialBins(200,100);function createNumericForTopEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:true,max:true,min:false,std:true,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForSubEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:false,std:false,sum:false,percentile:[0.90]});return n;}\nfunction createNumericForIdleTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:false,std:false,sum:true,percentile:[]});return n;}\nfunction createPercentage(name,numerator,denominator,unit){const hist=new tr.v.Histogram(name,unit);if(denominator===0){hist.addSample(0);}else{hist.addSample(numerator/denominator);}\nhist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false,percentile:[]});return hist;}\nfunction addDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,tr.metrics.v8.utils.topGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForTopEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);},tr.metrics.v8.utils.topGarbageCollectionEventNames());}\nfunction addTotalDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,event=>'v8-gc-total',function(name,events){const cpuDuration=createNumericForTopEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);},['v8-gc-total']);}\nfunction isV8MarkCompactorSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorSummaryEvent(event);}\nfunction isV8MarkCompactorMarkingSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorMarkingSummaryEvent(event);}\nfunction createHistogramFromSummary(histograms,name,events){const foregroundDuration=createNumericForTopEventTime(name+'-foreground');const backgroundDuration=createNumericForTopEventTime(name+'-background');const totalDuration=createNumericForTopEventTime(name+'-total');const relatedNames=new tr.v.d.RelatedNameMap();relatedNames.set('foreground',foregroundDuration.name);relatedNames.set('background',backgroundDuration.name);for(const event of events){foregroundDuration.addSample(event.args.duration);backgroundDuration.addSample(event.args.background_duration);const breakdownForTotal=new tr.v.d.Breakdown();breakdownForTotal.set('foreground',event.args.duration);breakdownForTotal.set('background',event.args.background_duration);totalDuration.addSample(event.args.duration+event.args.background_duration,{breakdown:breakdownForTotal});}\nhistograms.addHistogram(foregroundDuration);histograms.addHistogram(backgroundDuration);histograms.addHistogram(totalDuration,{breakdown:relatedNames});}\nfunction addTotalMarkCompactorTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorSummary,event=>'v8-gc-mark-compactor',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor']);}\nfunction addTotalMarkCompactorMarkingTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorMarkingSummary,event=>'v8-gc-mark-compactor-marking',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor-marking']);}\nfunction createNumericForTotalBytes(name){const n=new tr.v.Histogram(name,bytes_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:false,max:false,min:false,std:false,sum:true,percentile:[]});return n;}\nfunction createNumericForSampledPercent(name){const n=new tr.v.Histogram(name,percentage_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:true,std:true,sum:false,percentile:[]});return n;}\nfunction addScavengerSurvivedFromStackEvents(histograms,model){const baseName='v8-gc-scavenger-survived';tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isScavengerStackScanningEvent,event=>baseName,function(name,events){const sampledPercentage=createNumericForSampledPercent(baseName+'-percentage-from-stack');let survivedWithoutStack=0;let survivedWithStack=0;events.forEach(function(event){const bytesBefore=event.args.survived_bytes_before;const bytesAfter=event.args.survived_bytes_after;sampledPercentage.addSample((bytesAfter>0)?(bytesAfter-bytesBefore)/bytesAfter:0);survivedWithoutStack+=bytesBefore;survivedWithStack+=bytesAfter;});histograms.addHistogram(sampledPercentage);const totalBytesSurvivedWithoutStack=createNumericForTotalBytes(baseName+'-total-bytes-without-stack');totalBytesSurvivedWithoutStack.addSample(survivedWithoutStack);histograms.addHistogram(totalBytesSurvivedWithoutStack);const totalBytesSurvivedWithStack=createNumericForTotalBytes(baseName+'-total-bytes-with-stack');totalBytesSurvivedWithStack.addSample(survivedWithStack);histograms.addHistogram(totalBytesSurvivedWithStack);const overallPercentage=createPercentage(baseName+'-total-percentage-from-stack',survivedWithStack-survivedWithoutStack,survivedWithStack,percentage_smallerIsBetter);histograms.addHistogram(overallPercentage);},[baseName]);}\nfunction addDurationOfSubEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedSubGarbageCollectionEvent,tr.metrics.v8.utils.subGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForSubEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);});}\nfunction addPercentageInV8ExecuteOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,tr.metrics.v8.utils.topGarbageCollectionEventName,function(name,events){addPercentageInV8Execute(histograms,model,name,events);},tr.metrics.v8.utils.topGarbageCollectionEventNames());}\nfunction addTotalPercentageInV8Execute(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,event=>'v8-gc-total',function(name,events){addPercentageInV8Execute(histograms,model,name,events);},['v8-gc-total']);}\nfunction addPercentageInV8Execute(histograms,model,name,events){let cpuDurationInV8Execute=0;let cpuDurationTotal=0;events.forEach(function(event){const v8Execute=tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isV8ExecuteEvent);if(v8Execute){cpuDurationInV8Execute+=event.cpuDuration;}\ncpuDurationTotal+=event.cpuDuration;});const percentage=createPercentage(name+'_percentage_in_v8_execute',cpuDurationInV8Execute,cpuDurationTotal,percentage_smallerIsBetter);histograms.addHistogram(percentage);}\nfunction addMarkCompactorMutatorUtilization(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);tr.metrics.v8.utils.addMutatorUtilization('v8-gc-mark-compactor-mmu',tr.metrics.v8.utils.isNotForcedMarkCompactorEvent,[100],rendererHelpers,histograms);}\nreturn{gcMetric,WINDOW_SIZE_MS,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const COUNT_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1000000,50);const DURATION_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.1,10000,50);const SUMMARY_OPTIONS={std:false,count:false,sum:false,min:false,max:false,};function convertMicroToMilli_(time){return tr.b.convertUnit(time,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);}\nfunction addDurationHistogram(histogramName,time,histograms){const value=convertMicroToMilli_(time);histograms.createHistogram(`${histogramName}:duration`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,{value},{binBoundaries:DURATION_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS,});}\nfunction addCountHistogram(histogramName,value,histograms){histograms.createHistogram(`${histogramName}:count`,tr.b.Unit.byName.count_smallerIsBetter,{value},{binBoundaries:COUNT_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS});}\nfunction runtimeStatsTotalMetric(histograms,model){const v8Slices=tr.metrics.v8.utils.filterEvents(model,ev=>ev instanceof tr.e.v8.V8ThreadSlice);const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8Slices);let overallV8Time=runtimeGroupCollection.totalTime;let overallV8Count=runtimeGroupCollection.totalCount;let mainThreadTime=runtimeGroupCollection.totalTime;let mainThreadCount=runtimeGroupCollection.totalCount;let mainThreadV8Time=runtimeGroupCollection.totalTime;let mainThreadV8Count=runtimeGroupCollection.totalCount;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){addDurationHistogram(runtimeGroup.name,runtimeGroup.time,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Time-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}else if(runtimeGroup.name.includes('Background')){mainThreadTime-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}\naddCountHistogram(runtimeGroup.name,runtimeGroup.count,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Count-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}else if(runtimeGroup.name.includes('Background')){mainThreadCount-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}}\nif(runtimeGroupCollection.blinkRCSGroupCollection.totalTime>0){const blinkRCSGroupCollection=runtimeGroupCollection.blinkRCSGroupCollection;for(const group of blinkRCSGroupCollection.runtimeGroups){addDurationHistogram(group.name,group.time,histograms);addCountHistogram(group.name,group.count,histograms);}}\naddDurationHistogram('V8-Only',overallV8Time,histograms);addCountHistogram('V8-Only',overallV8Count,histograms);addDurationHistogram('Total-Main-Thread',mainThreadTime,histograms);addCountHistogram('Total-Main-Thread',mainThreadCount,histograms);addDurationHistogram('V8-Only-Main-Thread',mainThreadV8Time,histograms);addCountHistogram('V8-Only-Main-Thread',mainThreadV8Count,histograms);}\ntr.metrics.MetricRegistry.register(runtimeStatsTotalMetric);return{runtimeStatsTotalMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){function v8AndMemoryMetrics(histograms,model){tr.metrics.v8.executionMetric(histograms,model);tr.metrics.v8.gcMetric(histograms,model);tr.metrics.sh.memoryMetric(histograms,model,{rangeOfInterest:tr.metrics.v8.utils.rangeForMemoryDumps(model)});}\ntr.metrics.MetricRegistry.register(v8AndMemoryMetrics);return{v8AndMemoryMetrics,};});'use strict';tr.exportTo('tr.metrics.v8',function(){function computeSyncInstantiationTimeMetric(histograms,wasmEvents){if(!wasmEvents.hasOwnProperty('wasm.SyncInstantiate'))return;const wasmSyncInstantiationTimeCPU=new tr.v.Histogram('v8:wasm:sync_instantiate:cpu_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);wasmSyncInstantiationTimeCPU.description='cpu time spent instantiating a WebAssembly module';const wasmSyncInstantiationTimeWall=new tr.v.Histogram('v8:wasm:sync_instantiate:wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);wasmSyncInstantiationTimeWall.description='wall time spent instantiating a WebAssembly module';for(const e of wasmEvents['wasm.SyncInstantiate']){wasmSyncInstantiationTimeCPU.addSample(e.cpuDuration);wasmSyncInstantiationTimeWall.addSample(e.duration);}\nhistograms.addHistogram(wasmSyncInstantiationTimeCPU);histograms.addHistogram(wasmSyncInstantiationTimeWall);}\nfunction computeStreamingBaselineCompileTimeMetric(histograms,wasmEvents){if(!wasmEvents.hasOwnProperty('wasm.StartStreamingCompilation')||!wasmEvents.hasOwnProperty('wasm.BaselineFinished')){return;}\nconst histogram=new tr.v.Histogram('v8:wasm:streaming_baseline_compilation:wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);const compilationStart=wasmEvents['wasm.StartStreamingCompilation'][0].start;const compilationEnd=wasmEvents['wasm.BaselineFinished'][0].end;histogram.addSample(compilationEnd-compilationStart);histograms.addHistogram(histogram);}\nfunction computeCompilationTierupWallTimeMetric(histograms,wasmEvents){if(!wasmEvents.hasOwnProperty('wasm.BaselineFinished')||!wasmEvents.hasOwnProperty('wasm.TopTierFinished')){return;}\nconst histogram=new tr.v.Histogram('v8:wasm:compilation_tierup:wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);const tierupStart=wasmEvents['wasm.BaselineFinished'][0].start;const tierupEnd=wasmEvents['wasm.TopTierFinished'][0].end;histogram.addSample(tierupEnd-tierupStart);histograms.addHistogram(histogram);}\nfunction collectWasmEvents(model){const wasmEvents=tr.metrics.v8.utils.filterAndOrderEvents(model,event=>event.title.startsWith('wasm.'),event=>event.title);return wasmEvents;}\nfunction wasmMetric(histograms,model){const wasmEvents=collectWasmEvents(model);computeSyncInstantiationTimeMetric(histograms,wasmEvents);computeStreamingBaselineCompileTimeMetric(histograms,wasmEvents);computeCompilationTierupWallTimeMetric(histograms,wasmEvents);}\ntr.metrics.MetricRegistry.register(wasmMetric);return{wasmMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){const VR_GL_THREAD_NAME='VrShellGL';function createHistograms(histograms,name,options,hasCpuTime){const createdHistograms={wall:histograms.createHistogram(name+'_wall',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options)};if(hasCpuTime){createdHistograms.cpu=histograms.createHistogram(name+'_cpu',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options);}\nreturn createdHistograms;}\nfunction frameCycleDurationMetric(histograms,model,opt_options){const histogramsByEventTitle=new Map();const expectationEvents=tr.importer.VR_EXPECTATION_EVENTS;for(const eventName in expectationEvents){const extraInfo=expectationEvents[eventName];histogramsByEventTitle.set(eventName,createHistograms(histograms,extraInfo.histogramName,{description:extraInfo.description},extraInfo.hasCpuTime));}\nhistogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateAnimationsAndOpacity',createHistograms(histograms,'update_animations_and_opacity',{description:'Duration to apply animation and opacity changes'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateBindings',createHistograms(histograms,'update_bindings',{description:'Duration to push binding values'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateLayout',createHistograms(histograms,'update_layout',{description:'Duration to compute element sizes, layout and textures'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateWorldSpaceTransform',createHistograms(histograms,'update_world_space_transforms',{description:'Duration to calculate element transforms in world space'},true));histogramsByEventTitle.set('UiRenderer::DrawUiView',createHistograms(histograms,'draw_ui',{description:'Duration to draw the UI'},true));histogramsByEventTitle.set('UiElementRenderer::DrawTexturedQuad',createHistograms(histograms,'draw_textured_quad',{description:'Duration to draw a textured element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientQuad',createHistograms(histograms,'draw_gradient_quad',{description:'Duration to draw a gradient element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientGridQuad',createHistograms(histograms,'draw_gradient_grid_quad',{description:'Duration to draw a gradient grid element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawController',createHistograms(histograms,'draw_controller',{description:'Duration to draw the controller'},true));histogramsByEventTitle.set('UiElementRenderer::DrawLaser',createHistograms(histograms,'draw_laser',{description:'Duration to draw the laser'},true));histogramsByEventTitle.set('UiElementRenderer::DrawReticle',createHistograms(histograms,'draw_reticle',{description:'Duration to draw the reticle'},true));histogramsByEventTitle.set('UiElementRenderer::DrawShadow',createHistograms(histograms,'draw_shadow',{description:'Duration to draw a shadow element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawStars',createHistograms(histograms,'draw_stars',{description:'Duration to draw the stars'},true));histogramsByEventTitle.set('UiElementRenderer::DrawBackground',createHistograms(histograms,'draw_background',{description:'Duration to draw the textured background'},true));histogramsByEventTitle.set('UiElementRenderer::DrawKeyboard',createHistograms(histograms,'draw_keyboard',{description:'Duration to draw the keyboard'},true));const drawUiSubSlicesMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let rangeOfInterest=model.bounds;const userExpectationsOfInterest=[tr.model.um.AnimationExpectation];if(opt_options&&opt_options.rangeOfInterest){rangeOfInterest=opt_options.rangeOfInterest;userExpectationsOfInterest.push(tr.model.um.ResponseExpectation);}\nfor(const ue of model.userModel.expectations){if(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR){continue;}\nif(!userExpectationsOfInterest.some(function(ueOfInterest){return ue instanceof ueOfInterest;})){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nfor(const helper of chromeHelper.browserHelpers){const glThreads=helper.process.findAllThreadsNamed(VR_GL_THREAD_NAME);for(const glThread of glThreads){for(const event of glThread.getDescendantEvents()){if(!(histogramsByEventTitle.has(event.title))){continue;}\nif(event.start<ue.start||event.end>ue.end){continue;}\nif(event.start<rangeOfInterest.min||event.end>rangeOfInterest.max){continue;}\nif(event.parentSlice&&event.parentSlice.title==='UiRenderer::DrawUiView'){const guid=event.parentSlice.guid;if(!drawUiSubSlicesMap.has(guid)){drawUiSubSlicesMap.set(guid,[]);}\ndrawUiSubSlicesMap.get(guid).push(event);continue;}\nconst{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(event.title);wallHist.addSample(event.duration);if(cpuHist!==undefined){cpuHist.addSample(event.cpuDuration);}}}}}\nfor(const subSlices of drawUiSubSlicesMap.values()){const eventMap=new Map();for(const event of subSlices){if(!eventMap.has(event.title)){eventMap.set(event.title,{wall:0,cpu:0});}\neventMap.get(event.title).wall+=event.duration;eventMap.get(event.title).cpu+=event.cpuDuration;}\nfor(const[title,values]of eventMap.entries()){const{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(title);wallHist.addSample(values.wall);if(cpuHist!==undefined){cpuHist.addSample(values.cpu);}}}}\ntr.metrics.MetricRegistry.register(frameCycleDurationMetric,{supportsRangeOfInterest:true,});return{frameCycleDurationMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webvrMetric(histograms,model,opt_options){const WEBVR_COUNTERS=new Map([['gpu.WebVR FPS',{name:'webvr_fps',unit:tr.b.Unit.byName.count_biggerIsBetter,samples:{},options:{description:'WebVR frame per second',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR frame time (ms)',{name:'webvr_frame_time',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR frame time in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR pose prediction (ms)',{name:'webvr_pose_prediction',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR pose prediction in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],]);for(const ue of model.userModel.expectations){const rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;if(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nif(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}\nfor(const counter of model.getAllCounters()){if(!(WEBVR_COUNTERS.has(counter.id)))continue;for(const series of counter.series){if(!(series.name in WEBVR_COUNTERS.get(counter.id).samples)){WEBVR_COUNTERS.get(counter.id).samples[series.name]=[];}\nfor(const sample of series.samples){if(sample.timestamp<ue.start||sample.timestamp>=ue.end){continue;}\nif(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}\nWEBVR_COUNTERS.get(counter.id).samples[series.name].push(sample.value);}}}}\nif(!('value'in WEBVR_COUNTERS.get('gpu.WebVR FPS').samples)){WEBVR_COUNTERS.get('gpu.WebVR FPS').samples.value=[0];}\nfor(const[key,value]of WEBVR_COUNTERS){for(const[seriesName,samples]of Object.entries(value.samples)){let histogramName=value.name;if(seriesName!=='value'){histogramName=`${histogramName}_${seriesName}`;}\nhistograms.createHistogram(histogramName,value.unit,samples,value.options);}}}\ntr.metrics.MetricRegistry.register(webvrMetric,{supportsRangeOfInterest:true,});return{webvrMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webxrMetric(histograms,model,opt_options){const DEFAULT_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(20,120,25);const counterHistogramsByTitle=new Map();counterHistogramsByTitle.set('gpu.WebXR FPS',histograms.createHistogram('webxr_fps',tr.b.Unit.byName.count_biggerIsBetter,[],{description:'WebXR frames per second',binBoundaries:DEFAULT_BIN_BOUNDARIES,}));const instantHistogramsByTitle=new Map();const expectationEvents=tr.importer.WEBXR_INSTANT_EVENTS;for(const[eventName,eventData]of Object.entries(expectationEvents)){const argsToHistograms={};for(const[argName,argData]of Object.entries(eventData)){argsToHistograms[argName]=histograms.createHistogram(argData.histogramName,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:argData.description,binBoundaries:DEFAULT_BIN_BOUNDARIES,});}\ninstantHistogramsByTitle.set(eventName,argsToHistograms);}\nconst rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;const rangeOfInterest=(rangeOfInterestEnabled?opt_options.rangeOfInterest:tr.b.math.Range.fromExplicitRange(-Infinity,Infinity));for(const ue of model.userModel.expectations){if(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nif(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}\nfor(const counter of model.getAllCounters()){if(!(counterHistogramsByTitle.has(counter.id)))continue;for(const series of counter.series){for(const sample of series.samples){if(sample.timestamp<ue.start||sample.timestamp>=ue.end){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}\ncounterHistogramsByTitle.get(counter.id).addSample(sample.value);}}}\nfor(const event of ue.associatedEvents.asSet()){if(!(instantHistogramsByTitle.has(event.title))){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(event.start,event.start)){continue;}\nconst eventHistograms=instantHistogramsByTitle.get(event.title);for(const[key,value]of Object.entries(event.args)){if(key in eventHistograms){eventHistograms[key].addSample(value,{event:new tr.v.d.RelatedEventSet(event)});}}}}\nif(counterHistogramsByTitle.get('gpu.WebXR FPS').numValues===0){counterHistogramsByTitle.get('gpu.WebXR FPS').addSample(0);}}\ntr.metrics.MetricRegistry.register(webxrMetric,{supportsRangeOfInterest:true,});return{webxrMetric,};});'use strict';tr.exportTo('tr.metrics.webrtc',function(){const DISPLAY_HERTZ=60.0;const VSYNC_DURATION_US=1e6/DISPLAY_HERTZ;const SEVERITY=3;const FROZEN_FRAME_VSYNC_COUNT_THRESHOLD=6;const WEB_MEDIA_PLAYER_UPDATE_TITLE='UpdateCurrentFrame';const IDEAL_RENDER_INSTANT_NAME='Ideal Render Instant';const ACTUAL_RENDER_BEGIN_NAME='Actual Render Begin';const ACTUAL_RENDER_END_NAME='Actual Render End';const STREAM_ID_NAME='Serial';const REQUIRED_EVENT_ARGS_NAMES=[IDEAL_RENDER_INSTANT_NAME,ACTUAL_RENDER_BEGIN_NAME,ACTUAL_RENDER_END_NAME,STREAM_ID_NAME];const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const percentage_biggerIsBetter=tr.b.Unit.byName.normalizedPercentage_biggerIsBetter;const percentage_smallerIsBetter=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_biggerIsBetter=tr.b.Unit.byName.unitlessNumber_biggerIsBetter;function isValidEvent(event){if(event.title!==WEB_MEDIA_PLAYER_UPDATE_TITLE||!event.args){return false;}\nfor(const parameter of REQUIRED_EVENT_ARGS_NAMES){if(!(parameter in event.args)){return false;}}\nreturn true;}\nfunction webrtcRenderingMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let webMediaPlayerMSEvents=[];for(const rendererPid in modelHelper.rendererHelpers){const rendererHelper=modelHelper.rendererHelpers[rendererPid];const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){webMediaPlayerMSEvents=webMediaPlayerMSEvents.concat(compositorThread.sliceGroup.slices.filter(isValidEvent));}}\nconst eventsByStreamName=tr.b.groupIntoMap(webMediaPlayerMSEvents,event=>event.args[STREAM_ID_NAME]);for(const[streamName,events]of eventsByStreamName){getTimeStats(histograms,streamName,events);}}\ntr.metrics.MetricRegistry.register(webrtcRenderingMetric);function getTimeStats(histograms,streamName,events){const frameHist=getFrameDistribution(histograms,events);addFpsFromFrameDistribution(histograms,frameHist);addFreezingScore(histograms,frameHist);const driftTimeStats=getDriftStats(events);histograms.createHistogram('WebRTCRendering_drift_time',timeDurationInMs_smallerIsBetter,driftTimeStats.driftTime,{summaryOptions:{count:false,min:false,percentile:[0.75,0.9],},});histograms.createHistogram('WebRTCRendering_rendering_length_error',percentage_smallerIsBetter,driftTimeStats.renderingLengthError,{summaryOptions:SUMMARY_OPTIONS,});const smoothnessStats=getSmoothnessStats(driftTimeStats.driftTime);histograms.createHistogram('WebRTCRendering_percent_badly_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentBadlyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_percent_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_smoothness_score',percentage_biggerIsBetter,smoothnessStats.smoothnessScore,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_out_of_sync',count_smallerIsBetter,smoothnessStats.framesOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_badly_out_of_sync',count_smallerIsBetter,smoothnessStats.framesSeverelyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});}\nconst FRAME_DISTRIBUTION_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(1,50,49);function getFrameDistribution(histograms,events){const cadence=tr.b.runLengthEncoding(events.map(e=>e.args[IDEAL_RENDER_INSTANT_NAME]));return histograms.createHistogram('WebRTCRendering_frame_distribution',count_smallerIsBetter,cadence.map(ticks=>ticks.count),{binBoundaries:FRAME_DISTRIBUTION_BIN_BOUNDARIES,summaryOptions:{percentile:[0.75,0.9],},});}\nfunction addFpsFromFrameDistribution(histograms,frameHist){let numberFrames=0;let numberVsyncs=0;for(let ticks=1;ticks<frameHist.allBins.length;++ticks){const count=frameHist.allBins[ticks].count;numberFrames+=count;numberVsyncs+=ticks*count;}\nconst meanRatio=numberVsyncs/numberFrames;histograms.createHistogram('WebRTCRendering_fps',unitlessNumber_biggerIsBetter,DISPLAY_HERTZ/meanRatio,{summaryOptions:SUMMARY_OPTIONS,});}\nfunction frozenPenaltyWeight(numberFrozenFrames){const penalty={5:1,6:5,7:15,8:25};return penalty[numberFrozenFrames]||(8*(numberFrozenFrames-4));}\nfunction addFreezingScore(histograms,frameHist){let numberVsyncs=0;let freezingScore=0;let frozenFramesCount=0;for(let ticks=1;ticks<frameHist.allBins.length;++ticks){const count=frameHist.allBins[ticks].count;numberVsyncs+=ticks*count;if(ticks>=FROZEN_FRAME_VSYNC_COUNT_THRESHOLD){frozenFramesCount+=count*(ticks-1);freezingScore+=count*frozenPenaltyWeight(ticks-1);}}\nfreezingScore=1-freezingScore/numberVsyncs;if(freezingScore<0){freezingScore=0;}\nhistograms.createHistogram('WebRTCRendering_frozen_frames_count',count_smallerIsBetter,frozenFramesCount,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_freezing_score',percentage_biggerIsBetter,freezingScore,{summaryOptions:SUMMARY_OPTIONS,});}\nfunction getDriftStats(events){const driftTime=[];const discrepancy=[];let oldIdealRender=0;let expectedIdealRender=0;for(const event of events){const currentIdealRender=event.args[IDEAL_RENDER_INSTANT_NAME];expectedIdealRender+=VSYNC_DURATION_US;if(currentIdealRender===oldIdealRender){continue;}\nconst actualRenderBegin=event.args[ACTUAL_RENDER_BEGIN_NAME];driftTime.push(actualRenderBegin-currentIdealRender);discrepancy.push(Math.abs(currentIdealRender-expectedIdealRender));expectedIdealRender=currentIdealRender;oldIdealRender=currentIdealRender;}\nconst discrepancySum=tr.b.math.Statistics.sum(discrepancy)-\ndiscrepancy[0];const lastIdealRender=events[events.length-1].args[IDEAL_RENDER_INSTANT_NAME];const firstIdealRender=events[0].args[IDEAL_RENDER_INSTANT_NAME];const idealRenderSpan=lastIdealRender-firstIdealRender;const renderingLengthError=discrepancySum/idealRenderSpan;return{driftTime,renderingLengthError};}\nfunction getSmoothnessStats(driftTimes){const meanDriftTime=tr.b.math.Statistics.mean(driftTimes);const normDriftTimes=driftTimes.map(driftTime=>Math.abs(driftTime-meanDriftTime));const framesSeverelyOutOfSync=normDriftTimes.filter(driftTime=>driftTime>2*VSYNC_DURATION_US).length;const framesOutOfSync=normDriftTimes.filter(driftTime=>driftTime>VSYNC_DURATION_US).length;const percentBadlyOutOfSync=framesSeverelyOutOfSync/driftTimes.length;const percentOutOfSync=framesOutOfSync/driftTimes.length;const framesOutOfSyncOnlyOnce=framesOutOfSync-framesSeverelyOutOfSync;let smoothnessScore=1-(framesOutOfSyncOnlyOnce+\nSEVERITY*framesSeverelyOutOfSync)/driftTimes.length;if(smoothnessScore<0){smoothnessScore=0;}\nreturn{framesOutOfSync,framesSeverelyOutOfSync,percentBadlyOutOfSync,percentOutOfSync,smoothnessScore};}\nreturn{webrtcRenderingMetric,};});'use strict';Polymer({is:'tr-ui-a-alert-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},getRowsForSingleAlert_(alert){const rows=[];for(const argName in alert.args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=alert.args[argName];rows.push({name:argName,value:argView});}\nif(alert.associatedEvents.length){alert.associatedEvents.forEach(function(event,i){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.title);let valueString='';if(event instanceof tr.model.TimedEvent){valueString='took '+event.duration.toFixed(2)+'ms';}\nrows.push({name:linkEl,value:valueString});});}\nconst descriptionEl=tr.ui.b.createDiv({textContent:alert.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(alert.info.docLinks){alert.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}\nreturn rows;},getRowsForAlerts_(alerts){if(alerts.length===1){const rows=[{name:'Alert',value:tr.b.getOnlyElement(alerts).title}];const detailRows=this.getRowsForSingleAlert_(tr.b.getOnlyElement(alerts));rows.push.apply(rows,detailRows);return rows;}\nreturn alerts.map(function(alert){return{name:'Alert',value:alert.title,isExpanded:alerts.size<10,subRows:this.getRowsForSingleAlert_(alert)};},this);},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}\nconst alerts=this.currentSelection_;this.$.table.tableRows=this.getRowsForAlerts_(alerts);this.$.table.rebuild();},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const result=new tr.model.EventSet();for(const event of this.currentSelection_){result.addEventSet(event.associatedEvents);}\nreturn result;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:false,title:'Alert',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:true,title:'Alerts',});'use strict';tr.exportTo('tr.ui.analysis',function(){const NO_BREAK_SPACE=String.fromCharCode(160);const RIGHTWARDS_ARROW=String.fromCharCode(8594);const COLLATOR=new Intl.Collator(undefined,{numeric:true});function TitleColumn(title){this.title=title;}\nTitleColumn.prototype={supportsCellSelection:false,value(row){const formattedTitle=this.formatTitle(row);const contexts=row.contexts;if(contexts===undefined||contexts.length===0){return formattedTitle;}\nconst firstContext=contexts[0];const lastContext=contexts[contexts.length-1];let changeDefinedContextCount=0;for(let i=1;i<contexts.length;i++){if((contexts[i]===undefined)!==(contexts[i-1]===undefined)){changeDefinedContextCount++;}}\nlet color=undefined;let prefix=undefined;if(!firstContext&&lastContext){color='red';prefix='+++';}else if(firstContext&&!lastContext){color='green';prefix='---';}\nif(changeDefinedContextCount>1){color='purple';}\nif(color===undefined&&prefix===undefined){return formattedTitle;}\nconst titleEl=document.createElement('span');if(prefix!==undefined){const prefixEl=tr.ui.b.createSpan({textContent:prefix});prefixEl.style.fontFamily='monospace';Polymer.dom(titleEl).appendChild(prefixEl);Polymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(NO_BREAK_SPACE));}\nif(color!==undefined){titleEl.style.color=color;}\nPolymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(formattedTitle));return titleEl;},formatTitle(row){return row.title;},cmp(rowA,rowB){return COLLATOR.compare(rowA.title,rowB.title);}};function MemoryColumn(name,cellPath,aggregationMode){this.name=name;this.cellPath=cellPath;this.shouldSetContextGroup=false;this.aggregationMode=aggregationMode;}\nMemoryColumn.fromRows=function(rows,config){const cellNames=new Set();function gatherCellNames(rows){rows.forEach(function(row){if(row===undefined)return;const fieldCells=row[config.cellKey];if(fieldCells!==undefined){for(const[fieldName,fieldCell]of Object.entries(fieldCells)){if(fieldCell===undefined||fieldCell.fields===undefined){continue;}\ncellNames.add(fieldName);}}\nconst subRows=row.subRows;if(subRows!==undefined){gatherCellNames(subRows);}});}\ngatherCellNames(rows);const positions=[];cellNames.forEach(function(cellName){const cellPath=[config.cellKey,cellName];const matchingRule=MemoryColumn.findMatchingRule(cellName,config.rules);const constructor=matchingRule.columnConstructor;const column=new constructor(cellName,cellPath,config.aggregationMode);column.shouldSetContextGroup=!!config.shouldSetContextGroup;positions.push({importance:matchingRule.importance,column});});positions.sort(function(a,b){if(a.importance===b.importance){return COLLATOR.compare(a.column.name,b.column.name);}\nreturn b.importance-a.importance;});return positions.map(function(position){return position.column;});};MemoryColumn.spaceEqually=function(columns){const columnWidth=(100/columns.length).toFixed(3)+'%';columns.forEach(function(column){column.width=columnWidth;});};MemoryColumn.findMatchingRule=function(name,rules){for(let i=0;i<rules.length;i++){const rule=rules[i];if(MemoryColumn.nameMatchesCondition(name,rule.condition)){return rule;}}\nreturn undefined;};MemoryColumn.nameMatchesCondition=function(name,condition){if(condition===undefined)return true;if(typeof(condition)==='string')return name===condition;return condition.test(name);};MemoryColumn.AggregationMode={DIFF:0,MAX:1};MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER='at some selected timestamps';MemoryColumn.prototype={get title(){return this.name;},cell(row){let cell=row;const cellPath=this.cellPath;for(let i=0;i<cellPath.length;i++){if(cell===undefined)return undefined;cell=cell[cellPath[i]];}\nreturn cell;},aggregateCells(row,subRows){},fields(row){const cell=this.cell(row);if(cell===undefined)return undefined;return cell.fields;},value(row){const fields=this.fields(row);if(this.hasAllRelevantFieldsUndefined(fields))return'';const contexts=row.contexts;const color=this.color(fields,contexts);const infos=[];this.addInfos(fields,contexts,infos);const formattedFields=this.formatFields(fields);if((color===undefined||formattedFields==='')&&infos.length===0){return formattedFields;}\nconst fieldEl=document.createElement('span');fieldEl.style.display='flex';fieldEl.style.alignItems='center';fieldEl.style.justifyContent='flex-end';Polymer.dom(fieldEl).appendChild(tr.ui.b.asHTMLOrTextNode(formattedFields));infos.forEach(function(info){const infoEl=document.createElement('span');infoEl.style.paddingLeft='4px';infoEl.style.cursor='help';infoEl.style.fontWeight='bold';Polymer.dom(infoEl).textContent=info.icon;if(info.color!==undefined){infoEl.style.color=info.color;}\ninfoEl.title=info.message;Polymer.dom(fieldEl).appendChild(infoEl);},this);if(color!==undefined){fieldEl.style.color=color;}\nreturn fieldEl;},hasAllRelevantFieldsUndefined(fields){if(fields===undefined)return true;switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return fields[0]===undefined&&fields[fields.length-1]===undefined;case MemoryColumn.AggregationMode.MAX:default:return fields.every(function(field){return field===undefined;});}},color(fields,contexts){return undefined;},formatFields(fields){if(fields.length===1){return this.formatSingleField(fields[0]);}\nreturn this.formatMultipleFields(fields);},formatSingleField(field){throw new Error('Not implemented');},formatMultipleFields(fields){switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return this.formatMultipleFieldsDiff(fields[0],fields[fields.length-1]);case MemoryColumn.AggregationMode.MAX:return this.formatMultipleFieldsMax(fields);default:return tr.ui.b.createSpan({textContent:'(unsupported aggregation mode)',italic:true});}},formatMultipleFieldsDiff(firstField,lastField){throw new Error('Not implemented');},formatMultipleFieldsMax(fields){return this.formatSingleField(this.getMaxField(fields));},cmp(rowA,rowB){const fieldsA=this.fields(rowA);const fieldsB=this.fields(rowB);if(fieldsA!==undefined&&fieldsB!==undefined&&fieldsA.length!==fieldsB.length){throw new Error('Different number of fields');}\nconst undefinedA=this.hasAllRelevantFieldsUndefined(fieldsA);const undefinedB=this.hasAllRelevantFieldsUndefined(fieldsB);if(undefinedA&&undefinedB)return 0;if(undefinedA)return-1;if(undefinedB)return 1;return this.compareFields(fieldsA,fieldsB);},compareFields(fieldsA,fieldsB){if(fieldsA.length===1){return this.compareSingleFields(fieldsA[0],fieldsB[0]);}\nreturn this.compareMultipleFields(fieldsA,fieldsB);},compareSingleFields(fieldA,fieldB){throw new Error('Not implemented');},compareMultipleFields(fieldsA,fieldsB){switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return this.compareMultipleFieldsDiff(fieldsA[0],fieldsA[fieldsA.length-1],fieldsB[0],fieldsB[fieldsB.length-1]);case MemoryColumn.AggregationMode.MAX:return this.compareMultipleFieldsMax(fieldsA,fieldsB);default:return 0;}},compareMultipleFieldsDiff(firstFieldA,lastFieldA,firstFieldB,lastFieldB){throw new Error('Not implemented');},compareMultipleFieldsMax(fieldsA,fieldsB){return this.compareSingleFields(this.getMaxField(fieldsA),this.getMaxField(fieldsB));},getMaxField(fields){return fields.reduce(function(accumulator,field){if(field===undefined){return accumulator;}\nif(accumulator===undefined||this.compareSingleFields(field,accumulator)>0){return field;}\nreturn accumulator;}.bind(this),undefined);},addInfos(fields,contexts,infos){},getImportance(importanceRules){if(importanceRules.length===0)return 0;const matchingRule=MemoryColumn.findMatchingRule(this.name,importanceRules);if(matchingRule!==undefined){return matchingRule.importance;}\nlet minImportance=importanceRules[0].importance;for(let i=1;i<importanceRules.length;i++){minImportance=Math.min(minImportance,importanceRules[i].importance);}\nreturn minImportance-1;}};function StringMemoryColumn(name,cellPath,aggregationMode){MemoryColumn.call(this,name,cellPath,aggregationMode);}\nStringMemoryColumn.prototype={__proto__:MemoryColumn.prototype,formatSingleField(string){return string;},formatMultipleFieldsDiff(firstString,lastString){if(firstString===undefined){const spanEl=tr.ui.b.createSpan({color:'red'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode('+'));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(lastString)));return spanEl;}else if(lastString===undefined){const spanEl=tr.ui.b.createSpan({color:'green'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode('-'));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(firstString)));return spanEl;}else if(firstString===lastString){return this.formatSingleField(firstString);}\nconst spanEl=tr.ui.b.createSpan({color:'DarkOrange'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(firstString)));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(' '+RIGHTWARDS_ARROW+' '));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(lastString)));return spanEl;},compareSingleFields(stringA,stringB){return COLLATOR.compare(stringA,stringB);},compareMultipleFieldsDiff(firstStringA,lastStringA,firstStringB,lastStringB){if(firstStringA===undefined&&firstStringB!==undefined){return 1;}\nif(firstStringA!==undefined&&firstStringB===undefined){return-1;}\nif(firstStringA===undefined&&firstStringB===undefined){return this.compareSingleFields(lastStringA,lastStringB);}\nif(lastStringA===undefined&&lastStringB!==undefined){return-1;}\nif(lastStringA!==undefined&&lastStringB===undefined){return 1;}\nif(lastStringA===undefined&&lastStringB===undefined){return this.compareSingleFields(firstStringB,firstStringA);}\nconst areStringsAEqual=firstStringA===lastStringA;const areStringsBEqual=firstStringB===lastStringB;if(areStringsAEqual&&areStringsBEqual)return 0;if(areStringsAEqual)return-1;if(areStringsBEqual)return 1;return 0;}};function NumericMemoryColumn(name,cellPath,aggregationMode){MemoryColumn.call(this,name,cellPath,aggregationMode);}\nNumericMemoryColumn.DIFF_EPSILON=0.0001;NumericMemoryColumn.prototype={__proto__:MemoryColumn.prototype,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,aggregateCells(row,subRows){const subRowCells=subRows.map(this.cell,this);let hasDefinedSubRowNumeric=false;let timestampCount=undefined;subRowCells.forEach(function(subRowCell){if(subRowCell===undefined)return;const subRowNumerics=subRowCell.fields;if(subRowNumerics===undefined)return;if(timestampCount===undefined){timestampCount=subRowNumerics.length;}else if(timestampCount!==subRowNumerics.length){throw new Error('Sub-rows have different numbers of timestamps');}\nif(hasDefinedSubRowNumeric){return;}\nhasDefinedSubRowNumeric=subRowNumerics.some(function(numeric){return numeric!==undefined;});});if(!hasDefinedSubRowNumeric){return;}\nconst cellPath=this.cellPath;let rowCell=row;for(let i=0;i<cellPath.length;i++){const nextStepName=cellPath[i];let nextStep=rowCell[nextStepName];if(nextStep===undefined){if(i<cellPath.length-1){nextStep={};}else{nextStep=new MemoryCell(undefined);}\nrowCell[nextStepName]=nextStep;}\nrowCell=nextStep;}\nif(rowCell.fields===undefined){rowCell.fields=new Array(timestampCount);}else if(rowCell.fields.length!==timestampCount){throw new Error('Row has a different number of timestamps than sub-rows');}\nfor(let i=0;i<timestampCount;i++){if(rowCell.fields[i]!==undefined)continue;rowCell.fields[i]=tr.model.MemoryAllocatorDump.aggregateNumerics(subRowCells.map(function(subRowCell){if(subRowCell===undefined||subRowCell.fields===undefined){return undefined;}\nreturn subRowCell.fields[i];}));}},formatSingleField(numeric){return tr.v.ui.createScalarSpan(numeric,{context:this.getFormattingContext(numeric.unit),contextGroup:this.shouldSetContextGroup?this.name:undefined,inline:true,});},getFormattingContext(unit){return undefined;},formatMultipleFieldsDiff(firstNumeric,lastNumeric){return this.formatSingleField(this.getDiffField_(firstNumeric,lastNumeric));},compareSingleFields(numericA,numericB){return numericA.value-numericB.value;},compareMultipleFieldsDiff(firstNumericA,lastNumericA,firstNumericB,lastNumericB){return this.getDiffFieldValue_(firstNumericA,lastNumericA)-\nthis.getDiffFieldValue_(firstNumericB,lastNumericB);},getDiffField_(firstNumeric,lastNumeric){const definedNumeric=firstNumeric||lastNumeric;return new tr.b.Scalar(definedNumeric.unit.correspondingDeltaUnit,this.getDiffFieldValue_(firstNumeric,lastNumeric));},getDiffFieldValue_(firstNumeric,lastNumeric){const firstValue=firstNumeric===undefined?0:firstNumeric.value;const lastValue=lastNumeric===undefined?0:lastNumeric.value;const diff=lastValue-firstValue;return Math.abs(diff)<NumericMemoryColumn.DIFF_EPSILON?0:diff;}};function MemoryCell(fields){this.fields=fields;}\nMemoryCell.extractFields=function(cell){if(cell===undefined)return undefined;return cell.fields;};const RECURSIVE_EXPANSION_MAX_VISIBLE_ROW_COUNT=10;function expandTableRowsRecursively(table){let currentLevelRows=table.tableRows;let totalVisibleRowCount=currentLevelRows.length;while(currentLevelRows.length>0){let nextLevelRowCount=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;nextLevelRowCount+=subRows.length;});if(totalVisibleRowCount+nextLevelRowCount>RECURSIVE_EXPANSION_MAX_VISIBLE_ROW_COUNT){break;}\nconst nextLevelRows=new Array(nextLevelRowCount);let nextLevelRowIndex=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;table.setExpandedForTableRow(currentLevelRow,true);subRows.forEach(function(subRow){nextLevelRows[nextLevelRowIndex++]=subRow;});});totalVisibleRowCount+=nextLevelRowCount;currentLevelRows=nextLevelRows;}}\nfunction aggregateTableRowCellsRecursively(row,columns,opt_predicate){const subRows=row.subRows;if(subRows===undefined||subRows.length===0)return;subRows.forEach(function(subRow){aggregateTableRowCellsRecursively(subRow,columns,opt_predicate);});if(opt_predicate===undefined||opt_predicate(row.contexts)){aggregateTableRowCells(row,subRows,columns);}}\nfunction aggregateTableRowCells(row,subRows,columns){columns.forEach(function(column){if(!(column instanceof MemoryColumn))return;column.aggregateCells(row,subRows);});}\nfunction createCells(timeToValues,valueFieldsGetter,opt_this){opt_this=opt_this||this;const fieldNameToFields=tr.b.invertArrayOfDicts(timeToValues,valueFieldsGetter,opt_this);const result={};for(const[fieldName,fields]of Object.entries(fieldNameToFields)){result[fieldName]=new tr.ui.analysis.MemoryCell(fields);}\nreturn result;}\nfunction createWarningInfo(message){return{message,icon:String.fromCharCode(9888),color:'red'};}\nfunction DetailsNumericMemoryColumn(name,cellPath,aggregationMode){NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nDetailsNumericMemoryColumn.prototype={__proto__:NumericMemoryColumn.prototype,getFormattingContext(unit){if(unit.baseUnit===tr.b.Unit.byName.sizeInBytes){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.KIBI};}\nreturn undefined;}};return{TitleColumn,MemoryColumn,StringMemoryColumn,NumericMemoryColumn,MemoryCell,expandTableRowsRecursively,aggregateTableRowCellsRecursively,aggregateTableRowCells,createCells,createWarningInfo,DetailsNumericMemoryColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const LATIN_SMALL_LETTER_F_WITH_HOOK=String.fromCharCode(0x0192);const CIRCLED_LATIN_CAPITAL_LETTER_T=String.fromCharCode(0x24C9);const HeapDetailsRowDimension={ROOT:{},STACK_FRAME:{label:'Stack frame',symbol:LATIN_SMALL_LETTER_F_WITH_HOOK,color:'heap_dump_stack_frame'},OBJECT_TYPE:{label:'Object type',symbol:CIRCLED_LATIN_CAPITAL_LETTER_T,color:'heap_dump_object_type'}};function HeapDetailsTitleColumn(title){tr.ui.analysis.TitleColumn.call(this,title);}\nHeapDetailsTitleColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.dimension===HeapDetailsRowDimension.ROOT){return row.title;}\nconst symbolEl=document.createElement('span');Polymer.dom(symbolEl).textContent=row.dimension.symbol;symbolEl.title=row.dimension.label;symbolEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString(row.dimension.color);symbolEl.style.paddingRight='4px';symbolEl.style.cursor='help';symbolEl.style.fontWeight='bold';const titleEl=document.createElement('span');Polymer.dom(titleEl).appendChild(symbolEl);Polymer.dom(titleEl).appendChild(document.createTextNode(row.title));return titleEl;}};function AllocationCountColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nAllocationCountColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,getFormattingContext(unit){return{minimumFractionDigits:0};}};const HEAP_DETAILS_COLUMN_RULES=[{condition:'Size',importance:2,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Count',importance:1,columnConstructor:AllocationCountColumn},{importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];return{HeapDetailsRowDimension,HeapDetailsTitleColumn,AllocationCountColumn,HEAP_DETAILS_COLUMN_RULES,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const RebuildableBehavior={rebuild(){if(!this.paneDirty_){return;}\nthis.paneDirty_=false;this.onRebuild_();},scheduleRebuild_(){if(this.paneDirty_)return;this.paneDirty_=true;tr.b.requestAnimationFrame(this.rebuild.bind(this));},onRebuild_(){}};return{RebuildableBehavior,};});'use strict';Polymer({is:'tr-ui-b-tab-view',properties:{label_:{type:String,value:()=>''},selectedSubView_:Object,subViews_:{type:Array,value:()=>[]},tabsHidden:{type:Boolean,value:false,observer:'tabsHiddenChanged_'}},ready(){this.$.tabs.addEventListener('keydown',this.onKeyDown_.bind(this),true);this.updateFocusability_();},set label(newLabel){this.set('label_',newLabel);},get tabs(){return this.get('subViews_');},get selectedSubView(){return this.selectedSubView_;},set selectedSubView(subView){if(subView===this.selectedSubView_)return;if(this.selectedSubView_){Polymer.dom(this.$.subView).removeChild(this.selectedSubView_);const oldInput=this.root.getElementById(this.computeRadioId_(this.selectedSubView_));if(oldInput){oldInput.checked=false;}}\nthis.set('selectedSubView_',subView);if(subView){Polymer.dom(this.$.subView).appendChild(subView);const newInput=this.root.getElementById(this.computeRadioId_(subView));if(newInput){newInput.checked=true;}}\nthis.fire('selected-tab-change');},clearSubViews(){this.splice('subViews_',0,this.subViews_.length);this.selectedSubView=undefined;this.updateFocusability_();},addSubView(subView){this.push('subViews_',subView);if(!this.selectedSubView_)this.selectedSubView=subView;this.updateFocusability_();},get subViews(){return this.subViews_;},resetSubViews(subViews){this.splice('subViews_',0,this.subViews_.length);if(subViews.length){for(const subView of subViews){this.push('subViews_',subView);}\nthis.selectedSubView=subViews[0];}else{this.selectedSubView=undefined;}\nthis.updateFocusability_();},onTabChanged_(event){this.selectedSubView=event.model.item;},isChecked_(subView){return this.selectedSubView_===subView;},tabsHiddenChanged_(){this.updateFocusability_();},onKeyDown_(e){if(this.tabsHidden)return;let keyHandled=false;switch(e.keyCode){case 37:keyHandled=this.selectPreviousTabIfPossible();break;case 39:keyHandled=this.selectNextTabIfPossible();break;}\nif(!keyHandled)return;e.stopPropagation();e.preventDefault();},selectNextTabIfPossible(){return this.selectTabByOffsetIfPossible_(1);},selectPreviousTabIfPossible(){return this.selectTabByOffsetIfPossible_(-1);},selectTabByOffsetIfPossible_(offset){if(!this.selectedSubView_)return false;const currentIndex=this.subViews_.indexOf(this.selectedSubView_);const newSubView=this.tabs[currentIndex+offset];if(!newSubView)return false;this.selectedSubView=newSubView;return true;},shouldBeFocusable_(){return!this.tabsHidden&&this.subViews_.length>0;},updateFocusability_(){if(this.shouldBeFocusable_()){Polymer.dom(this.$.tabs).setAttribute('tabindex',0);}else{Polymer.dom(this.$.tabs).removeAttribute('tabindex');}},computeRadioId_(subView){return subView.tagName+'-'+subView.tabLabel.replace(/ /g,'-');}});'use strict';tr.exportTo('tr.ui.analysis',function(){const RESONABLE_NUMBER_OF_ROWS=200;const TabUiState={NO_LONG_TAIL:0,HIDING_LONG_TAIL:1,SHOWING_LONG_TAIL:2,};function EmptyFillerColumn(){}\nEmptyFillerColumn.prototype={title:'',value(){return'';},};Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.displayedNode_=undefined;this.dimensionToTab_=new Map();},ready(){this.scheduleRebuild_();this.root.addEventListener('keydown',this.onKeyDown_.bind(this),true);},get displayedNode(){return this.displayedNode_;},set displayedNode(node){this.displayedNode_=node;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;for(const tab of this.$.tabs.tabs){tab.aggregationMode=aggregationMode;}},onRebuild_(){const previouslySelectedTab=this.$.tabs.selectedSubView;let previouslySelectedTabFocused=false;let previouslySelectedDimension=undefined;if(previouslySelectedTab){previouslySelectedTabFocused=previouslySelectedTab.isFocused;previouslySelectedDimension=previouslySelectedTab.dimension;}\nfor(const tab of this.$.tabs.tabs){tab.nodes=undefined;}\nthis.$.tabs.clearSubViews();if(this.displayedNode_===undefined){this.$.tabs.label='No heap node provided.';return;}\nfor(const[dimension,children]of this.displayedNode_.childNodes){if(!this.dimensionToTab_.has(dimension)){this.dimensionToTab_.set(dimension,document.createElement('tr-ui-a-memory-dump-heap-details-breakdown-view-tab'));}\nconst tab=this.dimensionToTab_.get(dimension);tab.aggregationMode=this.aggregationMode_;tab.dimension=dimension;tab.nodes=children;this.$.tabs.addSubView(tab);tab.rebuild();if(dimension===previouslySelectedDimension){this.$.tabs.selectedSubView=tab;if(previouslySelectedTabFocused){tab.focus();}}}\nif(this.$.tabs.tabs.length>0){this.$.tabs.label='Break selected node further by:';}else{this.$.tabs.label='Selected node cannot be broken down any further.';}},onKeyDown_(keyEvent){if(!this.displayedNode_)return;let keyHandled=false;switch(keyEvent.keyCode){case 8:{if(!this.displayedNode_.parentNode)break;const viewEvent=new tr.b.Event('enter-node');viewEvent.node=this.displayedNode_.parentNode;this.dispatchEvent(viewEvent);keyHandled=true;break;}\ncase 37:case 39:{const wasFocused=this.$.tabs.selectedSubView.isFocused;keyHandled=keyEvent.keyCode===37?this.$.tabs.selectPreviousTabIfPossible():this.$.tabs.selectNextTabIfPossible();if(wasFocused&&keyHandled){this.$.tabs.selectedSubView.focus();}}}\nif(!keyHandled)return;keyEvent.stopPropagation();keyEvent.preventDefault();}});Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view-tab',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.dimension_=undefined;this.nodes_=undefined;this.aggregationMode_=undefined;this.displayLongTail_=false;},ready(){this.$.table.addEventListener('step-into',function(tableEvent){const viewEvent=new tr.b.Event('enter-node');viewEvent.node=tableEvent.tableRow;this.dispatchEvent(viewEvent);}.bind(this));},get displayLongTail(){return this.displayLongTail_;},set displayLongTail(newValue){if(this.displayLongTail===newValue)return;this.displayLongTail_=newValue;this.scheduleRebuild_();},get dimension(){return this.dimension_;},set dimension(dimension){this.dimension_=dimension;this.scheduleRebuild_();},get nodes(){return this.nodes_;},set nodes(nodes){this.nodes_=nodes;this.scheduleRebuild_();},get nodes(){return this.nodes_||[];},get dimensionLabel_(){if(this.dimension_===undefined)return'(undefined)';return this.dimension_.label;},get tabLabel(){let nodeCount=0;if(this.nodes_){nodeCount=this.nodes_.length;}\nreturn this.dimensionLabel_+' ('+nodeCount+')';},get tabIcon(){if(this.dimension_===undefined||this.dimension_===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return undefined;}\nreturn{text:this.dimension_.symbol,style:'color: '+tr.b.ColorScheme.getColorForReservedNameAsString(this.dimension_.color)+';'};},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},focus(){this.$.table.focus();},blur(){this.$.table.blur();},get isFocused(){return this.$.table.isFocused;},onRebuild_(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.emptyValue='Cannot break down by '+\nthis.dimensionLabel_.toLowerCase()+' any further.';const[state,rows]=this.getRows_();const total=this.nodes.length;const displayed=rows.length;const hidden=total-displayed;this.updateInfoBar_(state,[total,displayed,hidden]);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);if(this.$.table.sortColumnIndex===undefined){this.$.table.sortColumnIndex=0;this.$.table.sortDescending=false;}\nthis.$.table.rebuild();},createColumns_(rows){const titleColumn=new tr.ui.analysis.HeapDetailsTitleColumn(this.dimensionLabel_);titleColumn.width='400px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});if(numericColumns.length===0){numericColumns.push(new EmptyFillerColumn());}\ntr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);const columns=[titleColumn].concat(numericColumns);return columns;},getRows_(){let rows=this.nodes;if(rows.length<=RESONABLE_NUMBER_OF_ROWS){return[TabUiState.NO_LONG_TAIL,rows];}else if(this.displayLongTail){return[TabUiState.SHOWING_LONG_TAIL,rows];}\nconst absSize=row=>Math.max(row.cells.Size.fields[0].value);rows.sort((a,b)=>absSize(b)-absSize(a));rows=rows.slice(0,RESONABLE_NUMBER_OF_ROWS);return[TabUiState.HIDING_LONG_TAIL,rows];},updateInfoBar_(state,rowStats){if(state===TabUiState.SHOWING_LONG_TAIL){this.longTailVisibleInfoBar_(rowStats);}else if(state===TabUiState.HIDING_LONG_TAIL){this.longTailHiddenInfoBar_(rowStats);}else{this.hideInfoBar_();}},longTailVisibleInfoBar_(rowStats){const[total,visible,hidden]=rowStats;const couldHide=total-RESONABLE_NUMBER_OF_ROWS;this.$.info.message='Showing '+total+' rows. This may be slow.';this.$.info.removeAllButtons();const buttonText='Hide '+couldHide+' rows.';this.$.info.addButton(buttonText,()=>this.displayLongTail=false);this.$.info.visible=true;},longTailHiddenInfoBar_(rowStats){const[total,visible,hidden]=rowStats;this.$.info.message='Hiding the smallest '+hidden+' rows.';this.$.info.removeAllButtons();this.$.info.addButton('Show all.',()=>this.displayLongTail=true);this.$.info.visible=true;},hideInfoBar_(){this.$.info.visible=false;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS=String.fromCharCode(0x21B3);function HeapDetailsPathColumn(title){tr.ui.analysis.HeapDetailsTitleColumn.call(this,title);}\nHeapDetailsPathColumn.prototype={__proto__:tr.ui.analysis.HeapDetailsTitleColumn.prototype,formatTitle(row){const title=tr.ui.analysis.HeapDetailsTitleColumn.prototype.formatTitle.call(this,row);if(row.dimension===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return title;}\nconst arrowEl=document.createElement('span');Polymer.dom(arrowEl).textContent=DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS;arrowEl.style.paddingRight='2px';arrowEl.style.fontWeight='bold';arrowEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString('heap_dump_child_node_arrow');const rowEl=document.createElement('span');Polymer.dom(rowEl).appendChild(arrowEl);Polymer.dom(rowEl).appendChild(tr.ui.b.asHTMLOrTextNode(title));return rowEl;}};Polymer({is:'tr-ui-a-memory-dump-heap-details-path-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.selectedNode_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.addEventListener('selection-changed',function(event){this.selectedNode_=this.$.table.selectedTableRow;this.didSelectedNodeChange_();}.bind(this));},didSelectedNodeChange_(){this.dispatchEvent(new tr.b.Event('selected-node-changed'));},get selectedNode(){return this.selectedNode_;},set selectedNode(node){this.selectedNode_=node;this.didSelectedNodeChange_();this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},onRebuild_(){if(this.selectedNode_===undefined){this.$.table.clear();return;}\nif(this.$.table.tableRows.includes(this.selectedNode_)){this.$.table.selectedTableRow=this.selectedNode_;return;}\nthis.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.userCanModifySortOrder=false;const rows=this.createRows_(this.selectedNode_);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);this.$.table.selectedTableRow=rows[rows.length-1];},createRows_(node){const rows=[];while(node){rows.push(node);node=node.parentNode;}\nrows.reverse();return rows;},createColumns_(rows){const titleColumn=new HeapDetailsPathColumn('Current path');titleColumn.width='200px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});tr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);return[titleColumn].concat(numericColumns);}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const StackedPaneImpl={set childPaneBuilder(childPaneBuilder){this.childPaneBuilder_=childPaneBuilder;this.dispatchEvent(new tr.b.Event('request-child-pane-change'));},get childPaneBuilder(){return this.childPaneBuilder_;},appended(){this.rebuild();}};const StackedPane=[tr.ui.analysis.RebuildableBehavior,StackedPaneImpl];return{StackedPane,};});Polymer({is:'tr-ui-a-stacked-pane',behaviors:[tr.ui.analysis.StackedPane]});'use strict';tr.exportTo('tr.ui.analysis',function(){const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;const TotalState=tr.b.MultiDimensionalViewNode.TotalState;function HeapDumpTreeNode(stackFrameNodes,dimension,title,heavyView,parentNode){this.dimension=dimension;this.title=title;this.parentNode=parentNode;this.heavyView_=heavyView;this.stackFrameNodes_=stackFrameNodes;this.lazyCells_=undefined;this.lazyChildNodes_=undefined;}\nHeapDumpTreeNode.prototype={get minDisplayedTotalState_(){if(this.heavyView_){return TotalState.LOWER_BOUND;}\nreturn TotalState.EXACT;},get childNodes(){if(!this.lazyChildNodes_){this.lazyChildNodes_=new Map();this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.STACK_FRAME,0);this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.OBJECT_TYPE,1);this.releaseStackFrameNodesIfPossible_();}\nreturn this.lazyChildNodes_;},get cells(){if(!this.lazyCells_){this.addCells_();this.releaseStackFrameNodesIfPossible_();}\nreturn this.lazyCells_;},releaseStackFrameNodesIfPossible_(){if(this.lazyCells_&&this.lazyChildNodes_){this.stackFrameNodes_=undefined;}},addDimensionChildNodes_(dimension,dimensionIndex){const dimensionChildTitleToStackFrameNodes=tr.b.invertArrayOfDicts(this.stackFrameNodes_,node=>this.convertStackFrameNodeDimensionToChildDict_(node,dimensionIndex));const dimensionChildNodes=[];for(const[childTitle,childStackFrameNodes]of\nObject.entries(dimensionChildTitleToStackFrameNodes)){dimensionChildNodes.push(new HeapDumpTreeNode(childStackFrameNodes,dimension,childTitle,this.heavyView_,this));}\nthis.lazyChildNodes_.set(dimension,dimensionChildNodes);},convertStackFrameNodeDimensionToChildDict_(stackFrameNode,dimensionIndex){const childDict={};let displayedChildrenTotalSize=0;let displayedChildrenTotalCount=0;let hasDisplayedChildren=false;let allDisplayedChildrenHaveDisplayedCounts=true;for(const child of stackFrameNode.children[dimensionIndex].values()){if(child.values[0].totalState<this.minDisplayedTotalState_){continue;}\nif(child.values[1].totalState<this.minDisplayedTotalState_){allDisplayedChildrenHaveDisplayedCounts=false;}\nchildDict[child.title[dimensionIndex]]=child;displayedChildrenTotalSize+=child.values[0].total;displayedChildrenTotalCount+=child.values[1].total;hasDisplayedChildren=true;}\nconst nodeTotalSize=stackFrameNode.values[0].total;const nodeTotalCount=stackFrameNode.values[1].total;const hasUnclassifiedSizeOrCount=displayedChildrenTotalSize<nodeTotalSize||displayedChildrenTotalCount<nodeTotalCount;if(!this.heavyView_&&hasUnclassifiedSizeOrCount&&hasDisplayedChildren){const otherTitle=stackFrameNode.title.slice();otherTitle[dimensionIndex]='<other>';const otherNode=new tr.b.MultiDimensionalViewNode(otherTitle,2);childDict[otherTitle[dimensionIndex]]=otherNode;otherNode.values[0].total=nodeTotalSize-displayedChildrenTotalSize;otherNode.values[0].totalState=this.minDisplayedTotalState_;otherNode.values[1].total=nodeTotalCount-displayedChildrenTotalCount;otherNode.values[1].totalState=allDisplayedChildrenHaveDisplayedCounts?this.minDisplayedTotalState_:TotalState.NOT_PROVIDED;}\nreturn childDict;},addCells_(){this.lazyCells_=tr.ui.analysis.createCells(this.stackFrameNodes_,function(stackFrameNode){const size=stackFrameNode.values[0].total;const numerics={'Size':new Scalar(sizeInBytes_smallerIsBetter,size)};const countValue=stackFrameNode.values[1];if(countValue.totalState>=this.minDisplayedTotalState_){const count=countValue.total;numerics.Count=new Scalar(count_smallerIsBetter,count);}\nreturn numerics;},this);}};Polymer({is:'tr-ui-a-memory-dump-heap-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.heapDumps_=undefined;this.viewMode_=undefined;this.aggregationMode_=undefined;this.cachedBuilders_=new Map();},ready(){this.$.info_bar.message='Note: Values displayed in the heavy view '+'are lower bounds (except for the root).';Polymer.dom(this.$.view_mode_container).appendChild(tr.ui.b.createSelector(this,'viewMode','memoryDumpHeapDetailsPane.viewMode',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]));this.$.drag_handle.target=this.$.path_view;this.$.drag_handle.horizontal=false;this.$.path_view.addEventListener('selected-node-changed',(function(e){this.$.breakdown_view.displayedNode=this.$.path_view.selectedNode;}).bind(this));this.$.breakdown_view.addEventListener('enter-node',(function(e){this.$.path_view.selectedNode=e.node;}).bind(this));},set heapDumps(heapDumps){this.heapDumps_=heapDumps;this.scheduleRebuild_();},get heapDumps(){return this.heapDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.$.path_view.aggregationMode=aggregationMode;this.$.breakdown_view.aggregationMode=aggregationMode;},get aggregationMode(){return this.aggregationMode_;},set viewMode(viewMode){this.viewMode_=viewMode;this.scheduleRebuild_();},get viewMode(){return this.viewMode_;},get heavyView(){switch(this.viewMode){case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW:case MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW:return true;default:return false;}},onRebuild_(){if(this.heapDumps_===undefined||this.heapDumps_.length===0){this.$.info_text.style.display='block';this.$.split_view.style.display='none';this.$.view_mode_container.style.display='none';this.$.info_bar.hidden=true;this.$.path_view.selectedNode=undefined;return;}\nthis.$.info_text.style.display='none';this.$.split_view.style.display='flex';this.$.view_mode_container.style.display='block';this.$.info_bar.hidden=!this.heavyView;this.$.path_view.selectedNode=this.createHeapTree_();this.$.path_view.rebuild();this.$.breakdown_view.rebuild();},createHeapTree_(){const definedHeapDump=this.heapDumps_.find(x=>x);if(definedHeapDump===undefined)return undefined;const rootRowTitle=definedHeapDump.allocatorName;const stackFrameTrees=this.createStackFrameTrees_(this.heapDumps_);return new HeapDumpTreeNode(stackFrameTrees,tr.ui.analysis.HeapDetailsRowDimension.ROOT,rootRowTitle,this.heavyView);},createStackFrameTrees_(heapDumps){const builders=heapDumps.map(heapDump=>this.createBuilder_(heapDump));const views=builders.map(builder=>{if(builder===undefined)return undefined;return builder.buildView(this.viewMode);});return views;},createBuilder_(heapDump){if(heapDump===undefined)return undefined;if(this.cachedBuilders_.has(heapDump)){return this.cachedBuilders_.get(heapDump);}\nconst dimensions=2;const valueCount=2;const builder=new MultiDimensionalViewBuilder(dimensions,valueCount);for(const entry of heapDump.entries){const leafStackFrame=entry.leafStackFrame;const stackTracePath=leafStackFrame===undefined?[]:leafStackFrame.getUserFriendlyStackTrace().reverse();const objectTypeName=entry.objectTypeName;const objectTypeNamePath=objectTypeName===undefined?[]:[objectTypeName];const valueKind=entry.valuesAreTotals?MultiDimensionalViewBuilder.ValueKind.TOTAL:MultiDimensionalViewBuilder.ValueKind.SELF;builder.addPath([stackTracePath,objectTypeNamePath],[entry.size,entry.count],valueKind);}\nbuilder.complete=heapDump.isComplete;this.cachedBuilders_.set(heapDump,builder);return builder;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const URL_TO_SIZE_VS_EFFECTIVE_SIZE='https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/README.md#effective_size-vs_size';const SUBALLOCATION_CONTEXT=true;const MemoryAllocatorDumpInfoType=tr.model.MemoryAllocatorDumpInfoType;const PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN;const PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER;const LEFTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FD);const RIGHTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FE);const EN_DASH=String.fromCharCode(0x2013);const CIRCLED_LATIN_SMALL_LETTER_I=String.fromCharCode(0x24D8);function AllocatorDumpNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Component');}\nAllocatorDumpNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(!row.suballocation){return row.title;}\nreturn tr.ui.b.createSpan({textContent:row.title,italic:true,tooltip:row.fullNames===undefined?undefined:row.fullNames.join(', ')});}};function getAndUpdateEntry(map,name,createdCallback){let entry=map.get(name);if(entry===undefined){entry={count:0};createdCallback(entry);map.set(name,entry);}\nentry.count++;return entry;}\nfunction SizeInfoMessageBuilder(){this.parts_=[];this.indent_=0;}\nSizeInfoMessageBuilder.prototype={append(){this.parts_.push.apply(this.parts_,Array.prototype.slice.apply(arguments));},appendMap(map,hasPluralSuffix,emptyText,itemCallback,opt_this){opt_this=opt_this||this;if(map.size===0){if(emptyText){this.append(emptyText);}}else if(map.size===1){this.parts_.push(' ');const key=map.keys().next().value;itemCallback.call(opt_this,key,map.get(key));}else{if(hasPluralSuffix){this.parts_.push('s');}\nthis.parts_.push(':');this.indent_++;for(const key of map.keys()){this.parts_.push('\\n',' '.repeat(3*(this.indent_-1)),' - ');itemCallback.call(opt_this,key,map.get(key));}\nthis.indent_--;}},appendImportanceRange(range){this.append(' (importance: ');if(range.min===range.max){this.append(range.min);}else{this.append(range.min,EN_DASH,range.max);}\nthis.append(')');},appendSizeIfDefined(size){if(size!==undefined){this.append(' (',tr.b.Unit.byName.sizeInBytes.format(size),')');}},appendSomeTimestampsQuantifier(){this.append(' ',tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER);},build(){return this.parts_.join('');}};function EffectiveSizeColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nEffectiveSizeColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,get title(){return tr.ui.b.createLink({textContent:this.name,tooltip:'Memory used by this component',href:URL_TO_SIZE_VS_EFFECTIVE_SIZE});},addInfos(numerics,memoryAllocatorDumps,infos){if(memoryAllocatorDumps===undefined)return;const ownerNameToEntry=new Map();const ownedNameToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\ndump.ownedBy.forEach(function(ownerLink){const ownerDump=ownerLink.source;this.getAndUpdateOwnershipEntry_(ownerNameToEntry,ownerDump,ownerLink);},this);const ownedLink=dump.owns;if(ownedLink!==undefined){const ownedDump=ownedLink.target;const ownedEntry=this.getAndUpdateOwnershipEntry_(ownedNameToEntry,ownedDump,ownedLink,true);const sharerNameToEntry=ownedEntry.sharerNameToEntry;ownedDump.ownedBy.forEach(function(sharerLink){const sharerDump=sharerLink.source;if(sharerDump===dump)return;this.getAndUpdateOwnershipEntry_(sharerNameToEntry,sharerDump,sharerLink);},this);}}\nif(ownerNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shared by');messageBuilder.appendMap(ownerNameToEntry,false,undefined,function(ownerName,ownerEntry){messageBuilder.append(ownerName);if(ownerEntry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(ownerEntry.importanceRange);},this);infos.push({message:messageBuilder.build(),icon:LEFTWARDS_OPEN_HEADED_ARROW,color:'green'});}\nif(ownedNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shares');messageBuilder.appendMap(ownedNameToEntry,false,undefined,function(ownedName,ownedEntry){messageBuilder.append(ownedName);const ownedCount=ownedEntry.count;if(ownedCount<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(ownedEntry.importanceRange);messageBuilder.append(' with');messageBuilder.appendMap(ownedEntry.sharerNameToEntry,false,' no other dumps',function(sharerName,sharerEntry){messageBuilder.append(sharerName);if(sharerEntry.count<ownedCount){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(sharerEntry.importanceRange);},this);},this);infos.push({message:messageBuilder.build(),icon:RIGHTWARDS_OPEN_HEADED_ARROW,color:'green'});}},getAndUpdateOwnershipEntry_(map,dump,link,opt_withSharerNameToEntry){const entry=getAndUpdateEntry(map,dump.quantifiedName,function(newEntry){newEntry.importanceRange=new tr.b.math.Range();if(opt_withSharerNameToEntry){newEntry.sharerNameToEntry=new Map();}});entry.importanceRange.addValue(link.importance||0);return entry;}};function SizeColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nSizeColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,get title(){return tr.ui.b.createLink({textContent:this.name,tooltip:'Memory requested by this component',href:URL_TO_SIZE_VS_EFFECTIVE_SIZE});},addInfos(numerics,memoryAllocatorDumps,infos){if(memoryAllocatorDumps===undefined)return;this.addOverlapInfo_(numerics,memoryAllocatorDumps,infos);this.addProvidedSizeWarningInfos_(numerics,memoryAllocatorDumps,infos);},addOverlapInfo_(numerics,memoryAllocatorDumps,infos){const siblingNameToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\nconst ownedBySiblingSizes=dump.ownedBySiblingSizes;for(const siblingDump of ownedBySiblingSizes.keys()){const siblingName=siblingDump.name;getAndUpdateEntry(siblingNameToEntry,siblingName,function(newEntry){if(numerics.length===1){newEntry.size=ownedBySiblingSizes.get(siblingDump);}});}}\nif(siblingNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('overlaps with its sibling');messageBuilder.appendMap(siblingNameToEntry,true,undefined,function(siblingName,siblingEntry){messageBuilder.append('\\'',siblingName,'\\'');messageBuilder.appendSizeIfDefined(siblingEntry.size);if(siblingEntry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}},this);infos.push({message:messageBuilder.build(),icon:CIRCLED_LATIN_SMALL_LETTER_I,color:'blue'});}},addProvidedSizeWarningInfos_(numerics,memoryAllocatorDumps,infos){const infoTypeToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\ndump.infos.forEach(function(dumpInfo){getAndUpdateEntry(infoTypeToEntry,dumpInfo.type,function(newEntry){if(numerics.length===1){newEntry.providedSize=dumpInfo.providedSize;newEntry.dependencySize=dumpInfo.dependencySize;}});});}\nfor(const infoType of infoTypeToEntry.keys()){const entry=infoTypeToEntry.get(infoType);const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('provided size');messageBuilder.appendSizeIfDefined(entry.providedSize);let dependencyName;switch(infoType){case PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN:dependencyName='the aggregated size of the children';break;case PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER:dependencyName='the size of the largest owner';break;default:dependencyName='an unknown dependency';break;}\nmessageBuilder.append(' was less than ',dependencyName);messageBuilder.appendSizeIfDefined(entry.dependencySize);if(entry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\ninfos.push(tr.ui.analysis.createWarningInfo(messageBuilder.build()));}}};const NUMERIC_COLUMN_RULES=[{condition:tr.model.MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME,importance:10,columnConstructor:EffectiveSizeColumn},{condition:tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME,importance:9,columnConstructor:SizeColumn},{condition:'page_size',importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:/size/,importance:5,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];const DIAGNOSTIC_COLUMN_RULES=[{importance:0,columnConstructor:tr.ui.analysis.StringMemoryColumn}];Polymer({is:'tr-ui-a-memory-dump-allocator-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.memoryAllocatorDumps_=undefined;this.heapDumps_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},set memoryAllocatorDumps(memoryAllocatorDumps){this.memoryAllocatorDumps_=memoryAllocatorDumps;this.scheduleRebuild_();},get memoryAllocatorDumps(){return this.memoryAllocatorDumps_;},set heapDumps(heapDumps){this.heapDumps_=heapDumps;this.scheduleRebuild_();},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){if(this.memoryAllocatorDumps_===undefined||this.memoryAllocatorDumps_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();this.childPaneBuilder=undefined;return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_();const columns=this.createColumns_(rows);rows.forEach(function(rootRow){tr.ui.analysis.aggregateTableRowCellsRecursively(rootRow,columns,function(contexts){return contexts!==undefined&&contexts.some(function(context){return context===SUBALLOCATION_CONTEXT;});});});this.$.table.tableRows=rows;this.$.table.tableColumns=columns;this.$.table.rebuild();tr.ui.analysis.expandTableRowsRecursively(this.$.table);if(this.heapDumps_===undefined){this.childPaneBuilder=undefined;}else{this.childPaneBuilder=function(){const pane=document.createElement('tr-ui-a-memory-dump-heap-details-pane');pane.heapDumps=this.heapDumps_;pane.aggregationMode=this.aggregationMode_;return pane;}.bind(this);}},createRows_(){return[this.createAllocatorRowRecursively_(this.memoryAllocatorDumps_)];},createAllocatorRowRecursively_(dumps){const definedDump=dumps.find(x=>x);const title=definedDump.name;const fullName=definedDump.fullName;const numericCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.numerics;});const diagnosticCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.diagnostics;});let suballocatedBy=undefined;if(title.startsWith('__')){for(let i=0;i<dumps.length;i++){const dump=dumps[i];if(dump===undefined||dump.ownedBy.length===0){continue;}\nconst ownerDump=dump.ownedBy[0].source;if(dump.ownedBy.length>1||dump.children.length>0||ownerDump.containerMemoryDump!==dump.containerMemoryDump){suballocatedBy=undefined;break;}\nif(suballocatedBy===undefined){suballocatedBy=ownerDump.fullName;}else if(suballocatedBy!==ownerDump.fullName){suballocatedBy=undefined;break;}}}\nconst row={title,fullNames:[fullName],contexts:dumps,numericCells,diagnosticCells,suballocatedBy};const childDumpNameToDumps=tr.b.invertArrayOfDicts(dumps,function(dump){const results={};for(const child of dump.children){results[child.name]=child;}\nreturn results;});const subRows=[];let suballocationClassificationRootNode=undefined;for(const childDumps of Object.values(childDumpNameToDumps)){const childRow=this.createAllocatorRowRecursively_(childDumps);if(childRow.suballocatedBy===undefined){subRows.push(childRow);}else{suballocationClassificationRootNode=this.classifySuballocationRow_(childRow,suballocationClassificationRootNode);}}\nif(suballocationClassificationRootNode!==undefined){const suballocationRow=this.createSuballocationRowRecursively_('suballocations',suballocationClassificationRootNode);subRows.push(suballocationRow);}\nif(subRows.length>0){row.subRows=subRows;}\nreturn row;},classifySuballocationRow_(suballocationRow,rootNode){if(rootNode===undefined){rootNode={children:{},row:undefined};}\nconst suballocationLevels=suballocationRow.suballocatedBy.split('/');let currentNode=rootNode;for(let i=0;i<suballocationLevels.length;i++){const suballocationLevel=suballocationLevels[i];let nextNode=currentNode.children[suballocationLevel];if(nextNode===undefined){currentNode.children[suballocationLevel]=nextNode={children:{},row:undefined};}\ncurrentNode=nextNode;}\nconst existingRow=currentNode.row;if(existingRow!==undefined){for(let i=0;i<suballocationRow.contexts.length;i++){const newContext=suballocationRow.contexts[i];if(newContext===undefined)continue;if(existingRow.contexts[i]!==undefined){throw new Error('Multiple suballocations with the same owner name');}\nexistingRow.contexts[i]=newContext;['numericCells','diagnosticCells'].forEach(function(cellKey){const suballocationCells=suballocationRow[cellKey];if(suballocationCells===undefined)return;for(const[cellName,cell]of Object.entries(suballocationCells)){if(cell===undefined)continue;const fields=cell.fields;if(fields===undefined)continue;const field=fields[i];if(field===undefined)continue;let existingCells=existingRow[cellKey];if(existingCells===undefined){existingCells={};existingRow[cellKey]=existingCells;}\nlet existingCell=existingCells[cellName];if(existingCell===undefined){existingCell=new tr.ui.analysis.MemoryCell(new Array(fields.length));existingCells[cellName]=existingCell;}\nexistingCell.fields[i]=field;}});}\nexistingRow.fullNames.push.apply(existingRow.fullNames,suballocationRow.fullNames);}else{currentNode.row=suballocationRow;}\nreturn rootNode;},createSuballocationRowRecursively_(name,node){const childCount=Object.keys(node.children).length;if(childCount===0){if(node.row===undefined){throw new Error('Suballocation node must have a row or children');}\nconst row=node.row;row.title=name;row.suballocation=true;return row;}\nconst subRows=[];for(const[subName,subNode]of Object.entries(node.children)){subRows.push(this.createSuballocationRowRecursively_(subName,subNode));}\nif(node.row!==undefined){const row=node.row;row.title='<unspecified>';row.suballocation=true;subRows.unshift(row);}\nconst contexts=new Array(subRows[0].contexts.length);for(let i=0;i<subRows.length;i++){subRows[i].contexts.forEach(function(subContext,index){if(subContext!==undefined){contexts[index]=SUBALLOCATION_CONTEXT;}});}\nreturn{title:name,suballocation:true,contexts,subRows};},createColumns_(rows){const titleColumn=new AllocatorDumpNameColumn();titleColumn.width='200px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'numericCells',aggregationMode:this.aggregationMode_,rules:NUMERIC_COLUMN_RULES});const diagnosticColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'diagnosticCells',aggregationMode:this.aggregationMode_,rules:DIAGNOSTIC_COLUMN_RULES});const fieldColumns=numericColumns.concat(diagnosticColumns);tr.ui.analysis.MemoryColumn.spaceEqually(fieldColumns);const columns=[titleColumn].concat(fieldColumns);return columns;}});return{SUBALLOCATION_CONTEXT,AllocatorDumpNameColumn,EffectiveSizeColumn,SizeColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const CONSTANT_COLUMN_RULES=[{condition:'Start address',importance:0,columnConstructor:tr.ui.analysis.StringMemoryColumn}];const VARIABLE_COLUMN_RULES=[{condition:'Virtual size',importance:7,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Protection flags',importance:6,columnConstructor:tr.ui.analysis.StringMemoryColumn},{condition:'PSS',importance:5,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Private dirty',importance:4,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Private clean',importance:3,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Shared dirty',importance:2,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Shared clean',importance:1,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Swapped',importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];const BYTE_STAT_COLUMN_MAP={'proportionalResident':'PSS','privateDirtyResident':'Private dirty','privateCleanResident':'Private clean','sharedDirtyResident':'Shared dirty','sharedCleanResident':'Shared clean','swapped':'Swapped'};function hexString(address,is64BitAddress){if(address===undefined)return undefined;const hexPadding=is64BitAddress?'0000000000000000':'00000000';return(hexPadding+address.toString(16)).substr(-hexPadding.length);}\nfunction pruneEmptyRuleRows(row){if(row.subRows===undefined||row.subRows.length===0)return;if(row.subRows[0].rule===undefined){return;}\nrow.subRows.forEach(pruneEmptyRuleRows);row.subRows=row.subRows.filter(function(subRow){return subRow.subRows.length>0;});}\nPolymer({is:'tr-ui-a-memory-dump-vm-regions-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.vmRegions_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},set vmRegions(vmRegions){this.vmRegions_=vmRegions;this.scheduleRebuild_();},get vmRegions(){return this.vmRegions_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){if(this.vmRegions_===undefined||this.vmRegions_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_(this.vmRegions_);const columns=this.createColumns_(rows);this.$.table.tableRows=rows;this.$.table.tableColumns=columns;this.$.table.rebuild();tr.ui.analysis.expandTableRowsRecursively(this.$.table);},createRows_(timeToVmRegionTree){const is64BitAddress=timeToVmRegionTree.some(function(vmRegionTree){if(vmRegionTree===undefined)return false;return vmRegionTree.someRegion(function(region){if(region.startAddress===undefined)return false;return region.startAddress>=4294967296;});});return[this.createClassificationNodeRow(timeToVmRegionTree,is64BitAddress)];},createClassificationNodeRow(timeToNode,is64BitAddress){const definedNode=timeToNode.find(x=>x);const childNodeIdToTimeToNode=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const children=node.children;if(children===undefined)return undefined;const childMap={};children.forEach(function(childNode){if(!childNode.hasRegions)return;childMap[childNode.title]=childNode;});return childMap;}));const childNodeSubRows=childNodeIdToTimeToNode.map(function(timeToChildNode){return this.createClassificationNodeRow(timeToChildNode,is64BitAddress);},this);const regionIdToTimeToRegion=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const regions=node.regions;if(regions===undefined)return undefined;const results={};for(const region of regions){results[region.uniqueIdWithinProcess]=region;}\nreturn results;}));const regionSubRows=regionIdToTimeToRegion.map(function(timeToRegion){return this.createRegionRow_(timeToRegion,is64BitAddress);},this);const subRows=childNodeSubRows.concat(regionSubRows);return{title:definedNode.title,contexts:timeToNode,variableCells:this.createVariableCells_(timeToNode),subRows};},createRegionRow_(timeToRegion,is64BitAddress){const definedRegion=timeToRegion.find(x=>x);return{title:definedRegion.mappedFile,contexts:timeToRegion,constantCells:this.createConstantCells_(definedRegion,is64BitAddress),variableCells:this.createVariableCells_(timeToRegion)};},createConstantCells_(definedRegion,is64BitAddress){return tr.ui.analysis.createCells([definedRegion],function(region){const startAddress=region.startAddress;if(startAddress===undefined)return undefined;return{'Start address':hexString(startAddress,is64BitAddress)};});},createVariableCells_(timeToRegion){return tr.ui.analysis.createCells(timeToRegion,function(region){const fields={};const sizeInBytes=region.sizeInBytes;if(sizeInBytes!==undefined){fields['Virtual size']=new Scalar(sizeInBytes_smallerIsBetter,sizeInBytes);}\nconst protectionFlags=region.protectionFlagsToString;if(protectionFlags!==undefined){fields['Protection flags']=protectionFlags;}\nfor(const[byteStatName,columnName]of\nObject.entries(BYTE_STAT_COLUMN_MAP)){const byteStat=region.byteStats[byteStatName];if(byteStat===undefined)continue;fields[columnName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}\nreturn fields;});},createColumns_(rows){const titleColumn=new tr.ui.analysis.TitleColumn('Mapped file');titleColumn.width='200px';const constantColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'constantCells',aggregationMode:undefined,rules:CONSTANT_COLUMN_RULES});const variableColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'variableCells',aggregationMode:this.aggregationMode_,rules:VARIABLE_COLUMN_RULES});const fieldColumns=constantColumns.concat(variableColumns);tr.ui.analysis.MemoryColumn.spaceEqually(fieldColumns);const columns=[titleColumn].concat(fieldColumns);return columns;}});return{};});'use strict';Polymer({is:'tr-ui-b-color-legend',ready(){const blackSquareCharCode=9632;this.$.square.innerText=String.fromCharCode(blackSquareCharCode);this.label_=undefined;this.compoundEventSelectionState_=tr.model.CompoundEventSelectionState.NOT_SELECTED;},set compoundEventSelectionState(compoundEventSelectionState){this.compoundEventSelectionState_=compoundEventSelectionState;},get label(){return this.label_;},set label(label){if(label===undefined){this.setLabelAndColorId(undefined,undefined);return;}\nconst colorId=tr.b.ColorScheme.getColorIdForGeneralPurposeString(label);this.setLabelAndColorId(label,colorId);},setLabelAndColorId(label,colorId){this.label_=label;Polymer.dom(this.$.label).textContent='';Polymer.dom(this.$.label).appendChild(tr.ui.b.asHTMLOrTextNode(label));if(colorId===undefined){this.$.square.style.color='initial';}else{this.$.square.style.color=tr.b.ColorScheme.colorsAsStrings[colorId];}}});'use strict';Polymer({is:'tr-ui-b-view-specific-brushing-state',get viewId(){return this.getAttribute('view-id');},set viewId(viewId){Polymer.dom(this).setAttribute('view-id',viewId);},get(){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}\nconst brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return undefined;return brushingStateController.getViewSpecificBrushingState(viewId);},set(state){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}\nconst brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return;brushingStateController.changeViewSpecificBrushingState(viewId,state);}});'use strict';tr.exportTo('tr.ui.analysis',function(){const MemoryColumnColorScheme=tr.b.MemoryColumnColorScheme;const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX='_bytes';const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const SOME_TIMESTAMPS_INFO_QUANTIFIER=tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER;const RIGHTWARDS_ARROW_WITH_HOOK=String.fromCharCode(0x21AA);const RIGHTWARDS_ARROW_FROM_BAR=String.fromCharCode(0x21A6);const GREATER_THAN_OR_EQUAL_TO=String.fromCharCode(0x2265);const UNMARRIED_PARTNERSHIP_SYMBOL=String.fromCharCode(0x26AF);const TRIGRAM_FOR_HEAVEN=String.fromCharCode(0x2630);function lazyMap(list,fn,opt_this){opt_this=opt_this||this;let result=undefined;list.forEach(function(item,index){const value=fn.call(opt_this,item,index);if(value===undefined)return;if(result===undefined){result=new Array(list.length);}\nresult[index]=value;});return result;}\nfunction ProcessNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Process');}\nProcessNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.contexts===undefined){return row.title;}\nconst titleEl=document.createElement('tr-ui-b-color-legend');titleEl.label=row.title;return titleEl;}};function UsedMemoryColumn(name,cellPath,aggregationMode){tr.ui.analysis.NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nUsedMemoryColumn.COLOR=MemoryColumnColorScheme.getColor('used_memory_column').toString();UsedMemoryColumn.OLDER_COLOR=MemoryColumnColorScheme.getColor('older_used_memory_column').toString();UsedMemoryColumn.prototype={__proto__:tr.ui.analysis.NumericMemoryColumn.prototype,get title(){return tr.ui.b.createSpan({textContent:this.name,color:UsedMemoryColumn.COLOR});},getFormattingContext(unit){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.MEBI};},color(numerics,processMemoryDumps){return UsedMemoryColumn.COLOR;},getChildPaneBuilder(processMemoryDumps){if(processMemoryDumps===undefined)return undefined;const vmRegions=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined)return undefined;return pmd.mostRecentVmRegions;});if(vmRegions===undefined)return undefined;return function(){const pane=document.createElement('tr-ui-a-memory-dump-vm-regions-details-pane');pane.vmRegions=vmRegions;pane.aggregationMode=this.aggregationMode;return pane;}.bind(this);}};function PeakMemoryColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}\nPeakMemoryColumn.prototype={__proto__:UsedMemoryColumn.prototype,addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let resettableValueCount=0;let nonResettableValueCount=0;for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;if(processMemoryDumps[i].arePeakResidentBytesResettable){resettableValueCount++;}else{nonResettableValueCount++;}}\nif(resettableValueCount>0&&nonResettableValueCount>0){infos.push(tr.ui.analysis.createWarningInfo('Both resettable and '+'non-resettable peak RSS values were provided by the process'));}else if(resettableValueCount>0){infos.push({icon:RIGHTWARDS_ARROW_WITH_HOOK,message:'Peak RSS since previous memory dump.'});}else{infos.push({icon:RIGHTWARDS_ARROW_FROM_BAR,message:'Peak RSS since process startup. Finer grained '+'peaks require a Linux kernel version '+\nGREATER_THAN_OR_EQUAL_TO+' 4.0.'});}}};function ByteStatColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}\nByteStatColumn.prototype={__proto__:UsedMemoryColumn.prototype,color(numerics,processMemoryDumps){if(processMemoryDumps===undefined){return UsedMemoryColumn.COLOR;}\nconst allOlderValues=processMemoryDumps.every(function(processMemoryDump){if(processMemoryDump===undefined)return true;return!processMemoryDump.hasOwnVmRegions;});if(allOlderValues){return UsedMemoryColumn.OLDER_COLOR;}\nreturn UsedMemoryColumn.COLOR;},addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let olderValueCount=0;for(let i=0;i<numerics.length;i++){const processMemoryDump=processMemoryDumps[i];if(processMemoryDump!==undefined&&!processMemoryDump.hasOwnVmRegions){olderValueCount++;}}\nif(olderValueCount===0){return;}\nconst infoQuantifier=olderValueCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push({message:'Older value'+infoQuantifier+' (only heavy (purple) memory dumps contain memory maps).',icon:UNMARRIED_PARTNERSHIP_SYMBOL});}};UsedMemoryColumn.RULES=[{condition:'Total resident',importance:10,columnConstructor:UsedMemoryColumn},{condition:'Peak total resident',importance:9,columnConstructor:PeakMemoryColumn},{condition:'PSS',importance:8,columnConstructor:ByteStatColumn},{condition:'Private dirty',importance:7,columnConstructor:ByteStatColumn},{condition:'Swapped',importance:6,columnConstructor:ByteStatColumn},{importance:0,columnConstructor:UsedMemoryColumn}];UsedMemoryColumn.TOTALS_MAP={'residentBytes':'Total resident','peakResidentBytes':'Peak total resident','privateFootprintBytes':'Private footprint',};UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP={'vm':'Total virtual','swp':'Swapped','pc':'Private clean','pd':'Private dirty','sc':'Shared clean','sd':'Shared dirty','gpu_egl':'GPU EGL','gpu_egl_pss':'GPU EGL PSS','gpu_gl':'GPU GL','gpu_gl_pss':'GPU GL PSS','gpu_etc':'GPU Other','gpu_etc_pss':'GPU Other PSS',};UsedMemoryColumn.BYTE_STAT_MAP={'proportionalResident':'PSS','privateDirtyResident':'Private dirty','swapped':'Swapped'};function AllocatorColumn(name,cellPath,aggregationMode){tr.ui.analysis.NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nAllocatorColumn.prototype={__proto__:tr.ui.analysis.NumericMemoryColumn.prototype,get title(){const titleEl=document.createElement('tr-ui-b-color-legend');titleEl.label=this.name;return titleEl;},getFormattingContext(unit){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.MEBI};},addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let heapDumpCount=0;let missingSizeCount=0;for(let i=0;i<processMemoryDumps.length;i++){const processMemoryDump=processMemoryDumps[i];if(processMemoryDump===undefined)continue;const heapDumps=processMemoryDump.heapDumps;if(heapDumps!==undefined&&heapDumps[this.name]!==undefined){heapDumpCount++;}\nconst allocatorDump=processMemoryDump.getMemoryAllocatorDumpByFullName(this.name);if(allocatorDump!==undefined&&allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME]===undefined){missingSizeCount++;}}\nif(heapDumpCount>0){const infoQuantifier=heapDumpCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push({message:'Heap dump provided'+infoQuantifier+'.',icon:TRIGRAM_FOR_HEAVEN});}\nif(missingSizeCount>0){const infoQuantifier=missingSizeCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push(tr.ui.analysis.createWarningInfo('Size was not provided'+infoQuantifier+'.'));}},getChildPaneBuilder(processMemoryDumps){if(processMemoryDumps===undefined)return undefined;const memoryAllocatorDumps=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined)return undefined;return pmd.getMemoryAllocatorDumpByFullName(this.name);},this);if(memoryAllocatorDumps===undefined)return undefined;const heapDumps=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined||pmd.heapDumps===undefined)return undefined;return pmd.heapDumps[this.name];},this);return function(){const pane=document.createElement('tr-ui-a-memory-dump-allocator-details-pane');pane.memoryAllocatorDumps=memoryAllocatorDumps;pane.heapDumps=heapDumps;pane.aggregationMode=this.aggregationMode;return pane;}.bind(this);}};function TracingColumn(name,cellPath,aggregationMode){AllocatorColumn.call(this,name,cellPath,aggregationMode);}\nTracingColumn.COLOR=MemoryColumnColorScheme.getColor('tracing_memory_column').toString();TracingColumn.prototype={__proto__:AllocatorColumn.prototype,get title(){return tr.ui.b.createSpan({textContent:this.name,color:TracingColumn.COLOR});},color(numerics,processMemoryDumps){return TracingColumn.COLOR;}};AllocatorColumn.RULES=[{condition:'tracing',importance:0,columnConstructor:TracingColumn},{importance:1,columnConstructor:AllocatorColumn}];Polymer({is:'tr-ui-a-memory-dump-overview-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.processMemoryDumps_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.CELL;this.$.table.addEventListener('selection-changed',function(tableEvent){tableEvent.stopPropagation();this.changeChildPane_();}.bind(this));},set processMemoryDumps(processMemoryDumps){this.processMemoryDumps_=processMemoryDumps;this.scheduleRebuild_();},get processMemoryDumps(){return this.processMemoryDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},get selectedMemoryCell(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){return undefined;}\nconst selectedTableRow=this.$.table.selectedTableRow;if(!selectedTableRow)return undefined;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex===undefined)return undefined;const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];const selectedMemoryCell=selectedColumn.cell(selectedTableRow);return selectedMemoryCell;},changeChildPane_(){this.storeSelection_();this.childPaneBuilder=this.determineChildPaneBuilderFromSelection_();},determineChildPaneBuilderFromSelection_(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){return undefined;}\nconst selectedTableRow=this.$.table.selectedTableRow;if(!selectedTableRow)return undefined;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex===undefined)return undefined;const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];return selectedColumn.getChildPaneBuilder(selectedTableRow.contexts);},onRebuild_(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_();const columns=this.createColumns_(rows);const footerRows=this.createFooterRows_(rows,columns);this.$.table.tableRows=rows;this.$.table.footerRows=footerRows;this.$.table.tableColumns=columns;this.$.table.rebuild();this.restoreSelection_();},createRows_(){const timeToPidToProcessMemoryDump=this.processMemoryDumps_;const pidToTimeToProcessMemoryDump=tr.b.invertArrayOfDicts(timeToPidToProcessMemoryDump);const rows=[];for(const[pid,timeToDump]of\nObject.entries(pidToTimeToProcessMemoryDump)){const process=timeToDump.find(x=>x).process;const usedMemoryCells=tr.ui.analysis.createCells(timeToDump,function(dump){const sizes={};const totals=dump.totals;if(totals!==undefined){for(const[totalName,cellName]of\nObject.entries(UsedMemoryColumn.TOTALS_MAP)){const total=totals[totalName];if(total===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,total);}\nconst platformSpecific=totals.platformSpecific;if(platformSpecific!==undefined){for(const[name,size]of Object.entries(platformSpecific)){let newName=name;if(UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name]===undefined){if(name.endsWith(PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX)){newName=name.substring(0,name.length-\nPLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX.length);}\nnewName=newName.replace('_',' ').trim();newName=newName.charAt(0).toUpperCase()+newName.slice(1);}else{newName=UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name];}\nsizes[newName]=new Scalar(sizeInBytes_smallerIsBetter,size);}}}\nconst vmRegions=dump.mostRecentVmRegions;if(vmRegions!==undefined){for(const[byteStatName,cellName]of\nObject.entries(UsedMemoryColumn.BYTE_STAT_MAP)){const byteStat=vmRegions.byteStats[byteStatName];if(byteStat===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}}\nreturn sizes;});const allocatorCells=tr.ui.analysis.createCells(timeToDump,function(dump){const memoryAllocatorDumps=dump.memoryAllocatorDumps;if(memoryAllocatorDumps===undefined)return undefined;const sizes={};memoryAllocatorDumps.forEach(function(allocatorDump){let rootDisplayedSizeNumeric=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(rootDisplayedSizeNumeric===undefined){rootDisplayedSizeNumeric=new Scalar(sizeInBytes_smallerIsBetter,0);}\nsizes[allocatorDump.fullName]=rootDisplayedSizeNumeric;});return sizes;});rows.push({title:process.userFriendlyName,contexts:timeToDump,usedMemoryCells,allocatorCells});}\nreturn rows;},createFooterRows_(rows,columns){if(rows.length<=1)return[];const totalRow={title:'Total'};tr.ui.analysis.aggregateTableRowCells(totalRow,rows,columns);return[totalRow];},createColumns_(rows){const titleColumn=new ProcessNameColumn();titleColumn.width='200px';const usedMemorySizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'usedMemoryCells',aggregationMode:this.aggregationMode_,rules:UsedMemoryColumn.RULES});const allocatorSizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'allocatorCells',aggregationMode:this.aggregationMode_,rules:AllocatorColumn.RULES});const sizeColumns=usedMemorySizeColumns.concat(allocatorSizeColumns);tr.ui.analysis.MemoryColumn.spaceEqually(sizeColumns);const columns=[titleColumn].concat(sizeColumns);return columns;},storeSelection_(){let selectedRowTitle;const selectedRow=this.$.table.selectedTableRow;if(selectedRow!==undefined){selectedRowTitle=selectedRow.title;}\nlet selectedColumnName;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex!==undefined){const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];selectedColumnName=selectedColumn.name;}\nthis.$.state.set({rowTitle:selectedRowTitle,columnName:selectedColumnName});},restoreSelection_(){const settings=this.$.state.get();if(settings===undefined||settings.rowTitle===undefined||settings.columnName===undefined){return;}\nconst selectedColumnIndex=this.$.table.tableColumns.findIndex(col=>col.name===settings.columnName);if(selectedColumnIndex===-1)return;const selectedRowTitle=settings.rowTitle;const selectedRow=this.$.table.tableRows.find(row=>row.title===selectedRowTitle);if(selectedRow===undefined)return;this.$.table.selectedTableRow=selectedRow;this.$.table.selectedColumnIndex=selectedColumnIndex;}});return{ProcessNameColumn,UsedMemoryColumn,PeakMemoryColumn,ByteStatColumn,AllocatorColumn,TracingColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-memory-dump-header-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.containerMemoryDumps_=undefined;},ready(){Polymer.dom(this.$.aggregation_mode_container).appendChild(tr.ui.b.createSelector(this,'aggregationMode','memoryDumpHeaderPane.aggregationMode',tr.ui.analysis.MemoryColumn.AggregationMode.DIFF,[{label:'Diff',value:tr.ui.analysis.MemoryColumn.AggregationMode.DIFF},{label:'Max',value:tr.ui.analysis.MemoryColumn.AggregationMode.MAX}]));},set containerMemoryDumps(containerMemoryDumps){this.containerMemoryDumps_=containerMemoryDumps;this.scheduleRebuild_();},get containerMemoryDumps(){return this.containerMemoryDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){this.updateLabel_();this.updateAggregationModeSelector_();this.changeChildPane_();},updateLabel_(){Polymer.dom(this.$.label).textContent='';if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){Polymer.dom(this.$.label).textContent='No memory dumps selected';return;}\nconst containerDumpCount=this.containerMemoryDumps_.length;const isMultiSelection=containerDumpCount>1;Polymer.dom(this.$.label).appendChild(document.createTextNode('Selected '+containerDumpCount+' memory dump'+\n(isMultiSelection?'s':'')+' in '+this.containerMemoryDumps_[0].containerName+' at '));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[0].start)));if(isMultiSelection){const ELLIPSIS=String.fromCharCode(8230);Polymer.dom(this.$.label).appendChild(document.createTextNode(ELLIPSIS));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[containerDumpCount-1].start)));}},updateAggregationModeSelector_(){let displayStyle;if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=1){displayStyle='none';}else{displayStyle='initial';}\nthis.$.aggregation_mode_container.style.display=displayStyle;},changeChildPane_(){this.childPaneBuilder=function(){if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){return undefined;}\nconst overviewPane=document.createElement('tr-ui-a-memory-dump-overview-pane');overviewPane.processMemoryDumps=this.containerMemoryDumps_.map(function(containerDump){return containerDump.processMemoryDumps;});overviewPane.aggregationMode=this.aggregationMode;return overviewPane;}.bind(this);}});return{};});'use strict';Polymer({is:'tr-ui-a-stacked-pane-view',setPaneBuilder(paneBuilder,opt_parentPane){const paneContainer=this.$.pane_container;if(opt_parentPane){if(!(opt_parentPane instanceof HTMLElement)){throw new Error('Parent pane must be an HTML element');}\nif(opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane must be a child of the pane container');}}\nwhile(Polymer.dom(paneContainer).lastElementChild!==null&&Polymer.dom(paneContainer).lastElementChild!==opt_parentPane){const removedPane=Polymer.dom(this.$.pane_container).lastElementChild;const listener=this.listeners_.get(removedPane);if(listener===undefined){throw new Error('No listener associated with pane');}\nthis.listeners_.delete(removedPane);removedPane.removeEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).removeChild(removedPane);}\nif(opt_parentPane&&opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane was removed from the pane container');}\nif(!paneBuilder)return;const pane=paneBuilder();if(!pane)return;if(!(pane instanceof HTMLElement)){throw new Error('Pane must be an HTML element');}\nconst listener=function(event){this.setPaneBuilder(pane.childPaneBuilder,pane);}.bind(this);if(!this.listeners_){this.listeners_=new WeakMap();}\nthis.listeners_.set(pane,listener);pane.addEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).appendChild(pane);pane.appended();},rebuild(){let currentPane=Polymer.dom(this.$.pane_container).firstElementChild;while(currentPane){currentPane.rebuild();currentPane=currentPane.nextElementSibling;}},get panesForTesting(){const panes=[];let currentChild=Polymer.dom(this.$.pane_container).firstElementChild;while(currentChild){panes.push(currentChild);currentChild=currentChild.nextElementSibling;}\nreturn panes;}});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-container-memory-dump-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],set selection(selection){if(selection===undefined){this.currentSelection_=undefined;this.dumpsByContainerName_=undefined;this.updateContents_();return;}\nselection.forEach(function(event){if(!(event instanceof tr.model.ContainerMemoryDump)){throw new Error('Memory dump sub-view only supports container memory dumps');}});this.currentSelection_=selection;this.dumpsByContainerName_=tr.b.groupIntoMap(this.currentSelection_.toArray(),dump=>dump.containerName);for(const dumps of this.dumpsByContainerName_.values()){dumps.sort((a,b)=>a.start-b.start);}\nthis.updateContents_();},get selection(){return this.currentSelection_;},get requiresTallView(){return true;},updateContents_(){Polymer.dom(this.$.content).textContent='';if(this.dumpsByContainerName_===undefined)return;const containerNames=Array.from(this.dumpsByContainerName_.keys());if(containerNames.length===0)return;if(containerNames.length>1){this.buildViewForMultipleContainerNames_();}else{this.buildViewForSingleContainerName_();}},buildViewForSingleContainerName_(){const containerMemoryDumps=tr.b.getFirstElement(this.dumpsByContainerName_.values());const dumpView=unwrap(this.ownerDocument).createElement('tr-ui-a-stacked-pane-view');Polymer.dom(this.$.content).appendChild(dumpView);dumpView.setPaneBuilder(function(){const headerPane=document.createElement('tr-ui-a-memory-dump-header-pane');headerPane.containerMemoryDumps=containerMemoryDumps;return headerPane;});},buildViewForMultipleContainerNames_(){const ownerDocument=this.ownerDocument;const rows=[];for(const[containerName,dumps]of this.dumpsByContainerName_){rows.push({containerName,subRows:dumps,isExpanded:true,});}\nrows.sort(function(a,b){return a.containerName.localeCompare(b.containerName);});const columns=[{title:'Dump',value(row){if(row.subRows===undefined){return this.singleDumpValue_(row);}\nreturn this.groupedDumpValue_(row);},singleDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet([row]));Polymer.dom(linkEl).appendChild(tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument}));return linkEl;},groupedDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(row.subRows));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.subRows.length+' memory dump'+\n(row.subRows.length===1?'':'s')+' in '}));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.containerName,bold:true}));return linkEl;}}];const table=unwrap(this.ownerDocument).createElement('tr-ui-b-table');table.tableColumns=columns;table.tableRows=rows;table.showHeader=false;table.rebuild();Polymer.dom(this.$.content).appendChild(table);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:false,title:'Global Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:true,title:'Global Memory Dumps',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:false,title:'Process Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:true,title:'Process Memory Dumps',});return{};});'use strict';(function(){const COUNTER_SAMPLE_TABLE_COLUMNS=[{title:'Counter',width:'150px',value(row){return row.counter;}},{title:'Series',width:'150px',value(row){return row.series;}},{title:'Time',width:'150px',value(row){return row.start;}},{title:'Value',width:'100%',value(row){return row.value;}}];Polymer({is:'tr-ui-a-counter-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=COUNTER_SAMPLE_TABLE_COLUMNS;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){this.$.table.tableRows=this.selection?this.getRows_(this.selection.toArray()):[];this.$.table.rebuild();},getRows_(samples){const samplesByCounter=tr.b.groupIntoMap(samples,sample=>sample.series.counter.guid);const rows=[];for(const counterSamples of samplesByCounter.values()){const samplesBySeries=tr.b.groupIntoMap(counterSamples,sample=>sample.series.guid);for(const seriesSamples of samplesBySeries.values()){const seriesRows=this.getRowsForSamples_(seriesSamples);seriesRows[0].counter=seriesSamples[0].series.counter.name;seriesRows[0].series=seriesSamples[0].series.name;if(seriesRows.length>1){seriesRows[0].subRows=seriesRows.slice(1);seriesRows[0].isExpanded=true;}\nrows.push(seriesRows[0]);}}\nreturn rows;},getRowsForSamples_(samples){return samples.map(function(sample){return{start:sample.timestamp,value:sample.value};});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:false,title:'Counter Sample',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:true,title:'Counter Samples',});})();'use strict';tr.exportTo('tr.ui.analysis',function(){function MultiEventSummary(title,events){this.title=title;this.duration_=undefined;this.selfTime_=undefined;this.events_=events;this.cpuTimesComputed_=false;this.cpuSelfTime_=undefined;this.cpuDuration_=undefined;this.maxDuration_=undefined;this.maxCpuDuration_=undefined;this.maxSelfTime_=undefined;this.maxCpuSelfTime_=undefined;this.untotallableArgs_=[];this.totalledArgs_=undefined;}\nMultiEventSummary.prototype={set title(title){if(title==='Totals'){this.totalsRow=true;}\nthis.title_=title;},get title(){return this.title_;},get duration(){if(this.duration_===undefined){this.duration_=tr.b.math.Statistics.sum(this.events_,function(event){return event.duration;});}\nreturn this.duration_;},get cpuSelfTime(){this.computeCpuTimesIfNeeded_();return this.cpuSelfTime_;},get cpuDuration(){this.computeCpuTimesIfNeeded_();return this.cpuDuration_;},computeCpuTimesIfNeeded_(){if(this.cpuTimesComputed_)return;this.cpuTimesComputed_=true;let cpuSelfTime=0;let cpuDuration=0;let hasCpuData=false;for(const event of this.events_){if(event.cpuDuration!==undefined){cpuDuration+=event.cpuDuration;hasCpuData=true;}\nif(event.cpuSelfTime!==undefined){cpuSelfTime+=event.cpuSelfTime;hasCpuData=true;}}\nif(hasCpuData){this.cpuDuration_=cpuDuration;this.cpuSelfTime_=cpuSelfTime;}},get selfTime(){if(this.selfTime_===undefined){this.selfTime_=0;for(const event of this.events_){if(event.selfTime!==undefined){this.selfTime_+=event.selfTime;}}}\nreturn this.selfTime_;},get events(){return this.events_;},get numEvents(){return this.events_.length;},get numAlerts(){if(this.numAlerts_===undefined){this.numAlerts_=tr.b.math.Statistics.sum(this.events_,event=>event.associatedAlerts.length);}\nreturn this.numAlerts_;},get untotallableArgs(){this.updateArgsIfNeeded_();return this.untotallableArgs_;},get totalledArgs(){this.updateArgsIfNeeded_();return this.totalledArgs_;},get maxDuration(){if(this.maxDuration_===undefined){this.maxDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.duration;});}\nreturn this.maxDuration_;},get maxCpuDuration(){if(this.maxCpuDuration_===undefined){this.maxCpuDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuDuration;});}\nreturn this.maxCpuDuration_;},get maxSelfTime(){if(this.maxSelfTime_===undefined){this.maxSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.selfTime;});}\nreturn this.maxSelfTime_;},get maxCpuSelfTime(){if(this.maxCpuSelfTime_===undefined){this.maxCpuSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuSelfTime;});}\nreturn this.maxCpuSelfTime_;},updateArgsIfNeeded_(){if(this.totalledArgs_!==undefined)return;const untotallableArgs={};const totalledArgs={};for(const event of this.events_){for(const argName in event.args){const argVal=event.args[argName];const type=typeof argVal;if(type!=='number'){untotallableArgs[argName]=true;delete totalledArgs[argName];continue;}\nif(untotallableArgs[argName]){continue;}\nif(totalledArgs[argName]===undefined){totalledArgs[argName]=0;}\ntotalledArgs[argName]+=argVal;}}\nthis.untotallableArgs_=Object.keys(untotallableArgs);this.totalledArgs_=totalledArgs;}};return{MultiEventSummary,};});'use strict';Polymer({is:'tr-ui-a-multi-event-summary-table',ready(){this.showTotals_=false;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;this.eventsByTitle_=undefined;},updateTableColumns_(rows,maxValues){let hasCpuData=false;let hasAlerts=false;rows.forEach(function(row){if(row.cpuDuration!==undefined){hasCpuData=true;}\nif(row.cpuSelfTime!==undefined){hasCpuData=true;}\nif(row.numAlerts){hasAlerts=true;}});const ownerDocument=this.ownerDocument;const columns=[];columns.push({title:'Name',value(row){if(row.title==='Totals')return'Totals';const container=document.createElement('div');const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(row.events);},row.title);container.appendChild(linkEl);if(tr.isExported('tr-ui-e-chrome-codesearch')){const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=row.title;container.appendChild(link);}\nreturn container;},width:'350px',cmp(rowA,rowB){return rowA.title.localeCompare(rowB.title);}});if(this.eventsHaveDuration_){columns.push({title:'Wall Duration',value(row){return tr.v.ui.createScalarSpan(row.duration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.duration-rowB.duration;}});}\nif(this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Duration',value(row){return tr.v.ui.createScalarSpan(row.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuDuration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.cpuDuration-rowB.cpuDuration;}});}\nif(this.eventsHaveSubRows_&&this.eventsHaveDuration_){columns.push({title:'Self time',value(row){return tr.v.ui.createScalarSpan(row.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.selfTime),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.selfTime-rowB.selfTime;}});}\nif(this.eventsHaveSubRows_&&this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Self Time',value(row){return tr.v.ui.createScalarSpan(row.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuSelfTime),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.cpuSelfTime-rowB.cpuSelfTime;}});}\nif(this.eventsHaveDuration_){columns.push({title:'Average '+(hasCpuData?'CPU':'Wall')+' Duration',value(row){const totalDuration=hasCpuData?row.cpuDuration:row.duration;return tr.v.ui.createScalarSpan(totalDuration/row.numEvents,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){if(hasCpuData){return rowA.cpuDuration/rowA.numEvents-\nrowB.cpuDuration/rowB.numEvents;}\nreturn rowA.duration/rowA.numEvents-\nrowB.duration/rowB.numEvents;}});}\ncolumns.push({title:'Occurrences',value(row){return row.numEvents;},width:'<upated further down>',cmp(rowA,rowB){return rowA.numEvents-rowB.numEvents;}});let alertsColumnIndex;if(hasAlerts){columns.push({title:'Num Alerts',value(row){return row.numAlerts;},width:'<upated further down>',cmp(rowA,rowB){return rowA.numAlerts-rowB.numAlerts;}});alertsColumnIndex=columns.length-1;}\nlet colWidthPercentage;if(columns.length===1){colWidthPercentage='100%';}else{colWidthPercentage=(100/(columns.length-1)).toFixed(3)+'%';}\nfor(let i=1;i<columns.length;i++){columns[i].width=colWidthPercentage;}\nthis.$.table.tableColumns=columns;if(hasAlerts){this.$.table.sortColumnIndex=alertsColumnIndex;this.$.table.sortDescending=true;}},configure(config){if(config.eventsByTitle===undefined){throw new Error('Required: eventsByTitle');}\nif(config.showTotals!==undefined){this.showTotals_=config.showTotals;}else{this.showTotals_=true;}\nif(config.eventsHaveDuration!==undefined){this.eventsHaveDuration_=config.eventsHaveDuration;}else{this.eventsHaveDuration_=true;}\nif(config.eventsHaveSubRows!==undefined){this.eventsHaveSubRows_=config.eventsHaveSubRows;}else{this.eventsHaveSubRows_=true;}\nthis.eventsByTitle_=config.eventsByTitle;this.updateContents_();},get showTotals(){return this.showTotals_;},set showTotals(showTotals){this.showTotals_=showTotals;this.updateContents_();},get eventsHaveDuration(){return this.eventsHaveDuration_;},set eventsHaveDuration(eventsHaveDuration){this.eventsHaveDuration_=eventsHaveDuration;this.updateContents_();},get eventsHaveSubRows(){return this.eventsHaveSubRows_;},set eventsHaveSubRows(eventsHaveSubRows){this.eventsHaveSubRows_=eventsHaveSubRows;this.updateContents_();},get eventsByTitle(){return this.eventsByTitle_;},set eventsByTitle(eventsByTitle){this.eventsByTitle_=eventsByTitle;this.updateContents_();},get selectionBounds(){return this.selectionBounds_;},set selectionBounds(selectionBounds){this.selectionBounds_=selectionBounds;this.updateContents_();},updateContents_(){let eventsByTitle;if(this.eventsByTitle_!==undefined){eventsByTitle=this.eventsByTitle_;}else{eventsByTitle=[];}\nconst allEvents=new tr.model.EventSet();const rows=[];for(const[title,eventsOfSingleTitle]of Object.entries(eventsByTitle)){for(const event of eventsOfSingleTitle)allEvents.push(event);const row=new tr.ui.analysis.MultiEventSummary(title,eventsOfSingleTitle);rows.push(row);}\nthis.updateTableColumns_(rows);this.$.table.tableRows=rows;const maxValues={duration:undefined,selfTime:undefined,cpuSelfTime:undefined,cpuDuration:undefined};if(this.eventsHaveDuration){for(const column in maxValues){maxValues[column]=tr.b.math.Statistics.max(rows,function(event){return event[column];});}}\nconst footerRows=[];if(this.showTotals_){const multiEventSummary=new tr.ui.analysis.MultiEventSummary('Totals',allEvents);footerRows.push(multiEventSummary);}\nthis.updateTableColumns_(rows,maxValues);this.$.table.tableRows=rows;this.$.table.footerRows=footerRows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-selection-summary-table',created(){this.selection_=new tr.b.math.Range();},ready(){this.$.table.showHeader=false;this.$.table.tableColumns=[{title:'Name',value(row){return row.title;},width:'350px'},{title:'Value',width:'100%',value(row){return row.value;}}];},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;this.updateContents_();},updateContents_(){const selection=this.selection_;const rows=[];let hasRange;if(this.selection_&&(!selection.bounds.isEmpty)){hasRange=true;}else{hasRange=false;}\nrows.push({title:'Selection start',value:hasRange?tr.v.ui.createScalarSpan(selection.bounds.min,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument}):'<empty>'});rows.push({title:'Selection extent',value:hasRange?tr.v.ui.createScalarSpan(selection.bounds.range,{unit:tr.b.Unit.byName.timeDurationInMs,ownerDocument:this.ownerDocument}):'<empty>'});this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-b-radio-picker',created(){this.needsInit_=true;this.settingsKey_=undefined;this.isReady_=false;this.radioButtons_=undefined;this.selectedKey_=undefined;},ready(){this.isReady_=true;this.maybeInit_();this.maybeRenderRadioButtons_();},get vertical(){return this.getAttribute('vertical');},set vertical(vertical){if(vertical){this.setAttribute('vertical',true);}else{this.removeAttribute('vertical');}},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){if(!this.needsInit_){throw new Error('Already initialized.');}\nthis.settingsKey_=settingsKey;this.maybeInit_();},maybeInit_(){if(!this.needsInit_)return;if(this.settingsKey_===undefined)return;this.needsInit_=false;this.select(tr.b.Settings.get(this.settingsKey_));},set items(items){this.radioButtons_={};items.forEach(function(e){if(e.key in this.radioButtons_){throw new Error(e.key+' already exists');}\nconst radioButton=document.createElement('div');const input=document.createElement('input');const label=document.createElement('label');input.type='radio';input.id=e.label;input.addEventListener('click',function(){this.select(e.key);}.bind(this));Polymer.dom(label).innerHTML=e.label;label.htmlFor=e.label;label.style.display='inline';Polymer.dom(radioButton).appendChild(input);Polymer.dom(radioButton).appendChild(label);this.radioButtons_[e.key]=input;}.bind(this));this.maybeInit_();this.maybeRenderRadioButtons_();},maybeRenderRadioButtons_(){if(!this.isReady_)return;if(this.radioButtons_===undefined)return;for(const key in this.radioButtons_){Polymer.dom(this.$.container).appendChild(this.radioButtons_[key].parentElement);}\nif(this.selectedKey_!==undefined){this.select(this.selectedKey_);}},select(key){if(key===undefined||key===this.selectedKey_){return;}\nif(this.radioButtons_===undefined){this.selectedKey_=key;return;}\nif(!(key in this.radioButtons_)){throw new Error(key+' does not exists');}\nif(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=false;}\nthis.selectedKey_=key;tr.b.Settings.set(this.settingsKey_,this.selectedKey_);if(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=true;}\nthis.dispatchEvent(new tr.b.Event('change',false));},get selectedKey(){return this.selectedKey_;},});'use strict';tr.exportTo('tr.ui.b',function(){const MIN_GUIDELINE_HEIGHT_PX=3;const CHECKBOX_WIDTH_PX=18;const NameColumnChart=tr.ui.b.define('name-column-chart',tr.ui.b.ColumnChart);NameColumnChart.prototype={__proto__:tr.ui.b.ColumnChart.prototype,get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},updateMargins_(){super.updateMargins_();let xAxisTickOverhangPx=0;for(let i=0;i<this.data_.length;++i){const datum=this.data_[i];xAxisTickOverhangPx=Math.max(xAxisTickOverhangPx,this.xScale_(i)+tr.ui.b.getSVGTextSize(this,datum.x).width-\nthis.graphWidth);}\nthis.margin.right=Math.max(this.margin.right,xAxisTickOverhangPx);},getXForDatum_(datum,index){return index;},get xAxisTickOffset(){return 0.5;},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;const nameTexts=xAxis.selectAll('text').data(this.data_);nameTexts.enter().append('text').attr('transform',(d,index)=>'translate(0, '+\nthis.textHeightPx_*(this.data_.length-index)+')').attr('x',(d,index)=>this.xScale_(index)).attr('y',d=>this.graphHeight).text(d=>d.x);nameTexts.exit().remove();const guideLines=xAxis.selectAll('line.guide').data(this.data_);guideLines.enter().append('line').attr('x1',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('x2',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('y1',()=>this.graphHeight).attr('y2',(d,index)=>this.graphHeight+Math.max(MIN_GUIDELINE_HEIGHT_PX,(this.textHeightPx_*(this.data_.length-index-1))));}};return{NameColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.LineChart;const NameLineChart=tr.ui.b.define('name-line-chart',LineChart);NameLineChart.prototype={__proto__:LineChart.prototype,getXForDatum_(datum,index){return index;},get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},get xAxisTickOffset(){return 0;},updateMargins_(){tr.ui.b.NameColumnChart.prototype.updateMargins_.call(this);},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length-1)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();}};return{NameLineChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const BoxChart=tr.ui.b.define('box-chart',tr.ui.b.NameLineChart);BoxChart.prototype={__proto__:tr.ui.b.NameLineChart.prototype,get hideLegend(){return true;},updateDataRange_(){if(this.overrideDataRange_!==undefined){return;}\nthis.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateScales_(){super.updateScales_();this.xScale_.domain([0,this.data_.length]);},get xAxisTickOffset(){return 0.5;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;this.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const boxesSel=dataSel.selectAll('path');for(let index=0;index<this.data_.length;++index){const datum=this.data_[index];const color=datum.color||'black';let sel=boxesSel.data([datum]);sel.enter().append('rect').attr('fill',color).attr('x',this.xScale_(index+0.2)).attr('width',this.xScale_(index+0.8)-this.xScale_(index+0.2)).attr('y',this.yScale_(datum.percentile_75)).attr('height',this.yScale_(datum.percentile_25)-\nthis.yScale_(datum.percentile_75));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index)).attr('x2',this.xScale_(index+1)).attr('y1',this.yScale_(datum.percentile_50)).attr('y2',this.yScale_(datum.percentile_50));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.4)).attr('x2',this.xScale_(index+0.6)).attr('y1',this.yScale_(datum.percentile_0)).attr('y2',this.yScale_(datum.percentile_0));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.4)).attr('x2',this.xScale_(index+0.6)).attr('y1',this.yScale_(datum.percentile_100)).attr('y2',this.yScale_(datum.percentile_100));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.5)).attr('x2',this.xScale_(index+0.5)).attr('y1',this.yScale_(datum.percentile_100)).attr('y2',this.yScale_(datum.percentile_0));sel.exit().remove();}}};return{BoxChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const BarChart=tr.ui.b.define('bar-chart',tr.ui.b.ColumnChart);BarChart.prototype={__proto__:tr.ui.b.ColumnChart.prototype,decorate(){super.decorate();this.verticalScale_=undefined;this.horizontalScale_=undefined;this.isWaterfall_=false;},updateScales_(){super.updateScales_();this.yScale_.range([this.graphWidth,0]);this.xScale_.range([0,this.graphHeight]);this.verticalScale_=this.isYLogScale_?d3.scale.log(10):d3.scale.linear();this.verticalScale_.domain(this.xScale_.domain());this.verticalScale_.range([this.graphHeight,0]);this.horizontalScale_=d3.scale.linear();this.horizontalScale_.domain(this.yScale_.domain());this.horizontalScale_.range([0,this.graphWidth]);},set isWaterfall(waterfall){this.isWaterfall_=waterfall;if(waterfall){this.getDataSeries('hide').color='transparent';}\nthis.updateContents_();},get isWaterfall(){return this.isWaterfall_;},get defaultGraphHeight(){return Math.max(20,10*this.data_.length);},get defaultGraphWidth(){return 100;},get barHeight(){return this.graphHeight/this.data.length;},drawBrush_(brushRectsSel){brushRectsSel.attr('x',0).attr('width',this.graphWidth).attr('y',d=>this.verticalScale_(d.max)).attr('height',d=>this.verticalScale_(d.min)-this.verticalScale_(d.max)).attr('fill','rgb(213, 236, 229)');},getDataPointAtChartPoint_(chartPoint){const flippedPoint={x:this.graphHeight-chartPoint.y,y:this.graphWidth-chartPoint.x};return super.getDataPointAtChartPoint_(flippedPoint);},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.horizontalScale_).orient('bottom'));},get yAxisWidth(){return this.computeScaleTickWidth_(this.verticalScale_);},drawYAxis_(yAxis){const axisModifier=d3.svg.axis().scale(this.verticalScale_).orient('left');yAxis.call(axisModifier);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox||(this.isWaterfall_&&rect.key==='hide')){return;}\nconst seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;let xWidthPx=0;let xHeightPx=0;let groupWidthPx=0;let groupHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width;keyHeightPx=this.textHeightPx_;}\nif(this.data.length>1&&!this.isWaterfall_){xWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,''+rect.datum.x).width;xHeightPx=this.textHeightPx_;}\nif(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width;groupHeightPx=this.textHeightPx_;}\nconst valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.value).width;const valueHeightPx=this.textHeightPx_;const maxWidthPx=Math.max(keyWidthPx,xWidthPx,groupWidthPx,valueWidthPx)+5;const hoverWidthPx=this.isGrouped?maxWidthPx:Math.min(maxWidthPx,Math.max(50,rect.widthPx));let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-\nvalueHeightPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);chartAreaSel.append('rect').attr('class','hover').attr('fill','white').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',keyHeightPx+xHeightPx+\nvalueHeightPx+groupHeightPx);if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-3).text(rect.key);}\nif(this.data.length>1&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+valueHeightPx-3).text(''+rect.datum.x);}\nif(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').on('mouseleave',()=>this.clearHoverValueBox_(rect)).attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xHeightPx+groupHeightPx-3).text(rect.datum.group);}\nchartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+xHeightPx+keyHeightPx+\ngroupHeightPx+valueHeightPx-3).text(rect.value);},flipRect_(rect){return{datum:rect.datum,index:rect.index,key:rect.key,value:rect.value,color:rect.color,topPx:this.graphHeight-rect.leftPx-rect.widthPx,leftPx:this.graphWidth-rect.topPx-rect.heightPx,widthPx:rect.heightPx,heightPx:rect.widthPx,underflow:rect.underflow,overflow:rect.overflow,};},drawRect_(rect,sel){super.drawRect_(this.flipRect_(rect),sel);},drawUnderflow_(rect,rectsSel){let sel=rectsSel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',0).attr('y',this.graphHeight-rect.leftPx+\n3+(rect.widthPx/2));sel.exit().remove();sel=rectsSel.data([rect]);sel.enter().append('rect').attr('fill','rgba(0, 0, 0, 0)').attr('x',0).attr('y',this.graphHeight-rect.leftPx-rect.widthPx).attr('width',10).attr('height',rect.widthPx).on('mouseenter',()=>this.drawHoverValueBox_(this.flipRect_(rect))).on('mouseleave',()=>this.clearHoverValueBox_(rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',this.graphWidth).attr('y',this.graphHeight-rect.leftPx+\n3+(rect.widthPx/2));sel.exit().remove();}};return{BarChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const NameBarChart=tr.ui.b.define('name-bar-chart',tr.ui.b.BarChart);const Y_AXIS_PADDING=2;NameBarChart.prototype={__proto__:tr.ui.b.BarChart.prototype,getDataPointAtChartPoint_(chartPoint){return{x:tr.ui.b.BarChart.prototype.getDataPointAtChartPoint_.call(this,chartPoint).x,y:parseInt(Math.floor((this.graphHeight-chartPoint.y)/this.barHeight))};},getXForDatum_(datum,index){return index;},get yAxisWidth(){if(this.data.length===0)return 0;return Y_AXIS_PADDING+tr.b.math.Statistics.max(this.data_,d=>tr.ui.b.getSVGTextSize(this,d.x).width);},get defaultGraphHeight(){return(3+this.textHeightPx_)*this.data.length;},updateYAxis_(yAxis){if(tr.ui.b.getSVGTextSize(this,'test').width===0){tr.b.requestAnimationFrame(()=>this.updateYAxis_(yAxis));return;}\nyAxis.selectAll('*').remove();if(this.hideYAxis)return;const nameTexts=yAxis.selectAll('text').data(this.data_);nameTexts.enter().append('text').attr('x',d=>-(tr.ui.b.getSVGTextSize(this,d.x).width+Y_AXIS_PADDING)).attr('y',(d,index)=>this.verticalScale_(index)).text(d=>d.x);nameTexts.exit().remove();let previousTop=undefined;for(const text of nameTexts[0]){const bbox=text.getBBox();if((previousTop===undefined)||(previousTop>(bbox.y+bbox.height))){previousTop=bbox.y;}else{text.style.opacity=0;}}}};return{NameBarChart,};});'use strict';tr.exportTo('tr.v.ui',function(){const DIAGNOSTIC_SPAN_BEHAVIOR={created(){this.diagnostic_=undefined;this.name_=undefined;this.histogram_=undefined;},attached(){if(this.diagnostic_)this.updateContents_();},get diagnostic(){return this.diagnostic_;},build(diagnostic,name,histogram){this.diagnostic_=diagnostic;this.name_=name;this.histogram_=histogram;if(this.isAttached)this.updateContents_();},updateContents_(){throw new Error('dom-modules must override updateContents_()');}};return{DIAGNOSTIC_SPAN_BEHAVIOR,};});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_COLOR_SCHEME=new tr.b.SinebowColorGenerator();function getHistogramName(histogram,diagnosticName,key){if(histogram===undefined)return undefined;const nameMap=histogram.diagnostics.get(diagnosticName);if(nameMap===undefined)return undefined;return nameMap.get(key);}\nclass BreakdownTableSummaryRow{constructor(displayElement,histogramNames){this.displayElement_=displayElement;this.histogramNames_=histogramNames;this.keySpan_=undefined;}\nget numberValue(){return undefined;}\nget keySpan(){if(this.keySpan_===undefined){if(this.histogramNames_.length){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent(this.histogramNames_,'Select All');}else{this.keySpan_='Sum';}}\nreturn this.keySpan_;}\nget name(){return'Sum';}\nget displayElement(){return this.displayElement_;}\nget stringPercent(){return'100%';}}\nclass BreakdownTableRow{constructor(name,value,histogramName,unit,color){this.name_=name;this.value_=value;this.histogramName_=histogramName;this.unit_=unit;if(typeof value!=='number'){throw new Error('unsupported value '+value);}\nthis.tableSum_=undefined;this.keySpan_=undefined;this.color_=color;const hsl=this.color.toHSL();hsl.l*=0.85;this.highlightedColor_=tr.b.Color.fromHSL(hsl);if(this.unit_){this.displayElement_=tr.v.ui.createScalarSpan(this.numberValue,{unit:this.unit_,});}else{this.displayElement_=tr.ui.b.createSpan({textContent:this.stringValue,});}}\nget name(){return this.name_;}\nget color(){return this.color_;}\nget highlightedColor(){return this.highlightedColor_;}\nget keySpan(){if(this.keySpan_===undefined){if(this.histogramName_){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent([this.histogramName_],this.name);this.keySpan_.color=this.color;this.keySpan_.title=this.histogramName_;}else{this.keySpan_=document.createElement('span');this.keySpan_.innerText=this.name;this.keySpan_.style.color=this.color;}}\nreturn this.keySpan_;}\nget numberValue(){if(!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)&&(this.value_>0))return this.value_;return undefined;}\nget stringValue(){if((this.unit_!==undefined)&&!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)){return this.unit_.format(this.value_);}\nreturn this.value_.toString();}\nset tableSum(s){this.tableSum_=s;}\nget stringPercent(){if(this.tableSum_===undefined)return'';const num=this.numberValue;if(num===undefined)return'';return Math.floor(num*100.0/this.tableSum_)+'%';}\nget displayElement(){return this.displayElement_;}\ncompare(other){if(this.numberValue===undefined){if(other.numberValue===undefined){return this.name.localeCompare(other.name);}\nreturn 1;}\nif(other.numberValue===undefined){return-1;}\nif(this.numberValue===other.numberValue){return this.name.localeCompare(other.name);}\nreturn other.numberValue-this.numberValue;}}\nPolymer({is:'tr-v-ui-breakdown-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],created(){this.chart_=new tr.ui.b.ColumnChart();this.chart_.graphHeight=130;this.chart_.isStacked=true;this.chart_.hideXAxis=true;this.chart_.hideLegend=true;this.chart_.enableHoverBox=false;this.chart_.addEventListener('rect-mouseenter',event=>this.onRectMouseEnter_(event));this.chart_.addEventListener('rect-mouseleave',event=>this.onRectMouseLeave_(event));},onRectMouseEnter_(event){for(const row of this.$.table.tableRows){if(row.name===event.rect.key){row.displayElement.style.background=event.rect.color;row.keySpan.scrollIntoViewIfNeeded();}else{row.displayElement.style.background='';}}},onRectMouseLeave_(event){for(const row of this.$.table.tableRows){row.displayElement.style.background='';}},ready(){Polymer.dom(this.$.container).appendChild(this.chart_);this.$.table.zebra=true;this.$.table.showHeader=false;this.$.table.tableColumns=[{value:row=>row.keySpan,},{value:row=>row.displayElement,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},{value:row=>row.stringPercent,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},];},updateContents_(){this.$.container.style.display='none';this.$.table.style.display='none';this.$.empty.style.display='block';if(!this.diagnostic_){this.chart_.data=[];return;}\nif(this.histogram_)this.chart_.unit=this.histogram_.unit;let colorScheme=undefined;if(this.diagnostic.colorScheme===tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER){colorScheme=(name)=>{let cat=name.split(' ');cat=cat[cat.length-1];return tr.e.chrome.ChromeUserFriendlyCategoryDriver.getColor(cat);};}else if(this.diagnostic.colorScheme){colorScheme=(name)=>tr.b.FixedColorSchemeRegistry.lookUp(this.diagnostic.colorScheme).getColor(name);}else{colorScheme=(name)=>DEFAULT_COLOR_SCHEME.colorForKey(name);}\nconst tableRows=[];let tableSum=0;const histogramNames=[];for(const[key,value]of this.diagnostic){const histogramName=getHistogramName(this.histogram_,this.name_,key);const row=new BreakdownTableRow(key,value,histogramName,this.chart_.unit,colorScheme(key));tableRows.push(row);if(row.numberValue!==undefined)tableSum+=row.numberValue;if(histogramName){histogramNames.push(histogramName);}}\ntableRows.sort((x,y)=>x.compare(y));if(tableSum>0){let summaryDisplayElement=tableSum;if(this.chart_.unit!==undefined){summaryDisplayElement=this.chart_.unit.format(tableSum);}\nsummaryDisplayElement=tr.ui.b.createSpan({textContent:summaryDisplayElement,});tableRows.unshift(new BreakdownTableSummaryRow(summaryDisplayElement,histogramNames));}\nconst chartData={x:0};for(const row of tableRows){if(row.numberValue===undefined)continue;row.tableSum=tableSum;chartData[row.name]=row.numberValue;const dataSeries=this.chart_.getDataSeries(row.name);dataSeries.color=row.color;dataSeries.highlightedColor=row.highlightedColor;}\nif(tableRows.length>0){this.$.table.style.display='block';this.$.empty.style.display='none';this.$.table.tableRows=tableRows;this.$.table.rebuild();}\nif(Object.keys(chartData).length>1){this.$.container.style.display='block';this.$.empty.style.display='none';this.chart_.data=[chartData];}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-collected-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const[canonicalUrl,events]of this.diagnostic){const link=document.createElement('a');if(events.length===1){const event=tr.b.getOnlyElement(events);link.textContent=event.title+' '+\ntr.b.Unit.byName.timeDurationInMs.format(event.duration);}else{link.textContent=events.length+' events';}\nlink.href=canonicalUrl;Polymer.dom(this).appendChild(link);Polymer.dom(this).appendChild(document.createElement('br'));}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-date-range-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){if(this.diagnostic===undefined){Polymer.dom(this).textContent='';return;}\nPolymer.dom(this).textContent=this.diagnostic.toString();}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){function isLinkTuple(value){return((value instanceof Array)&&(value.length===2)&&(typeof value[0]==='string')&&tr.b.isUrl(value[1]));}\nPolymer({is:'tr-v-ui-generic-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){this.$.generic.style.display='none';this.$.links.textContent='';if(this.diagnostic===undefined)return;const values=Array.from(this.diagnostic);let areAllStrings=true;let areAllNumbers=true;for(const value of values){if(typeof value!=='number'){areAllNumbers=false;if(typeof value!=='string'&&!isLinkTuple(value)){areAllStrings=false;break;}}}\nif(!areAllStrings){this.$.generic.style.display='';this.$.generic.object=values;return;}\nif(areAllNumbers){values.sort((x,y)=>x-y);}else{values.sort();}\nfor(const value of values){const link={textContent:''+value};if(isLinkTuple(value)){link.textContent=value[0];link.href=value[1];}else if(tr.b.isUrl(value)){link.href=value;}\nif(this.name_===tr.v.d.RESERVED_NAMES.TRACE_URLS){link.textContent=value.substr(1+value.lastIndexOf('/'));}\nconst linkEl=tr.ui.b.createLink(link);if(link.href){linkEl.target='_blank';linkEl.addEventListener('click',e=>e.stopPropagation());}\nthis.$.links.appendChild(linkEl);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';const events=new tr.model.EventSet([...this.diagnostic]);const link=document.createElement('tr-ui-a-analysis-link');let label=events.length+' events';if(events.length===1){const event=tr.b.getOnlyElement(events);label=event.title+' ';label+=tr.b.Unit.byName.timeDurationInMs.format(event.duration);}\nlink.setSelectionAndContent(events,label);Polymer.dom(this).appendChild(link);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-diagnostic-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){this.$.scalar.setValueAndUnit(this.diagnostic.value.value,this.diagnostic.value.unit);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-unmergeable-diagnostic-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const diagnostic of this.diagnostic){if(diagnostic instanceof tr.v.d.RelatedNameMap)continue;const div=document.createElement('div');div.appendChild(tr.v.ui.createDiagnosticSpan(diagnostic,this.name_,this.histogram_));Polymer.dom(this).appendChild(div);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){function findElementNameForDiagnostic(diagnostic){let typeInfo=undefined;let curProto=diagnostic.constructor.prototype;while(curProto){typeInfo=tr.v.d.Diagnostic.findTypeInfo(curProto.constructor);if(typeInfo&&typeInfo.metadata.elementName)break;typeInfo=undefined;curProto=curProto.__proto__;}\nif(typeInfo===undefined){throw new Error(diagnostic.constructor.name+' or a base class must have a registered elementName');}\nconst tagName=typeInfo.metadata.elementName;if(tr.ui.b.isUnknownElementName(tagName)){throw new Error('Element not registered: '+tagName);}\nreturn tagName;}\nfunction createDiagnosticSpan(diagnostic,name,histogram){const tagName=findElementNameForDiagnostic(diagnostic);const span=document.createElement(tagName);if(span.build===undefined)throw new Error(tagName);span.build(diagnostic,name,histogram);return span;}\nreturn{createDiagnosticSpan,};});'use strict';tr.exportTo('tr.v.ui',function(){function makeColumn(title,histogram){return{title,value(map){const diagnostic=map.get(title);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,title,histogram);}};}\nPolymer({is:'tr-v-ui-diagnostic-map-table',created(){this.diagnosticMaps_=undefined;this.histogram_=undefined;this.isMetadata_=false;},set histogram(h){this.histogram_=h;},set isMetadata(m){this.isMetadata_=m;this.$.table.showHeader=!this.isMetadata_;},set diagnosticMaps(maps){this.diagnosticMaps_=maps;this.updateContents_();},get diagnosticMaps(){return this.diagnosticMaps_;},updateContents_(){if(this.isMetadata_&&this.diagnosticMaps_.length!==1){throw new Error('Metadata diagnostic-map-tables require exactly 1 DiagnosticMap');}\nif(this.diagnosticMaps_===undefined||this.diagnosticMaps_.length===0){this.$.table.tableRows=[];this.$.table.tableColumns=[];return;}\nlet names=new Set();for(const map of this.diagnosticMaps_){for(const[name,diagnostic]of map){if(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)continue;if(diagnostic instanceof tr.v.d.CollectedRelatedEventSet)continue;names.add(name);}}\nnames=Array.from(names).sort();const histogram=this.histogram_;if(this.isMetadata_){const diagnosticMap=this.diagnosticMaps_[0];this.$.table.tableColumns=[{value(name){return name.name;}},{value(name){const diagnostic=diagnosticMap.get(name.name);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,name.name,histogram);}},];this.$.table.tableRows=names.map(name=>{return{name};});}else{this.$.table.tableColumns=names.map(name=>makeColumn(name,histogram));this.$.table.tableRows=this.diagnosticMaps_;}\nthis.$.table.rebuild();}});return{};});'use strict';tr.exportTo('tr.b',function(){class Serializable{constructor(){Object.defineProperty(this,'properties_',{configurable:false,enumerable:false,value:new Map(),});}\ndefine(name,initialValue){if(this[name]!==undefined){throw new Error(`\"${name}\" is already defined.`);}\nif(name[name.length-1]==='_'){throw new Error(`\"${name}\" cannot end with an underscore.`);}\nthis.properties_.set(name,initialValue);Object.defineProperty(this,name,{configurable:false,enumerable:true,get:()=>this.properties_.get(name),set:value=>this.setProperty_(name,value),});}\nsetProperty_(name,value){this.properties_.set(name,value);}\nclone(){return Serializable.fromDict(this.asDict());}\nasDict(){function visit(obj){if(obj instanceof Serializable)return obj.asDict();if(obj instanceof Set)return Array.from(obj);if(obj instanceof Array)return obj.map(visit);if(!(obj instanceof Map))return obj;const result={};for(const[name,value]of obj){result[name]=visit(value);}\nreturn result;}\nconst dict={type:this.constructor.name};for(const[name,value]of this.properties_){dict[name.replace(/_$/,'')]=visit(value);}\nreturn dict;}\nstatic fromDict(dict){function visit(d){if(d instanceof Array)return d.map(visit);if(!(d instanceof Object))return d;if(typeof d.type==='string')return Serializable.fromDict(d);const result=new Map();for(const[name,value]of Object.entries(d)){result.set(name,visit(value));}\nreturn result;}\nconst typeInfo=Serializable.findTypeInfoWithName(dict.type);const result=new typeInfo.constructor();for(const[name,value]of Object.entries(dict)){result[name]=visit(value);}\nreturn result;}}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Serializable;tr.b.decorateExtensionRegistry(Serializable,options);return{Serializable,};});'use strict';tr.exportTo('tr.b',function(){class ViewState extends tr.b.Serializable{constructor(){super();tr.b.EventTarget.decorate(this);}\nsetProperty_(name,value){this.update(new Map([[name,value]]));}\nasync updateFromViewState(other){await this.update(other.properties_);}\nasync update(delta){if(!(delta instanceof Map))delta=new Map(Object.entries(delta));const actualDelta={};for(const[name,current]of delta){const previous=this[name];if(previous===current)continue;actualDelta[name]={previous,current};tr.b.Serializable.prototype.setProperty_.call(this,name,current);}\nif(Object.keys(actualDelta).length===0)return;await tr.b.dispatchSimpleEventAsync(this,this.updateEventName_,{delta:actualDelta});}\nget updateEventName_(){return this.constructor.name+'.update';}\naddUpdateListener(listener){this.addEventListener(this.updateEventName_,listener);}\nremoveUpdateListener(listener){this.removeEventListener(this.updateEventName_,listener);}}\nreturn{ViewState,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetViewState extends tr.b.ViewState{constructor(){super();this.define('searchQuery','');this.define('referenceDisplayLabel','');this.define('displayStatisticName','');this.define('showAll',true);this.define('groupings',[]);this.define('sortColumnIndex',0);this.define('sortDescending',false);this.define('constrainNameColumn',true);this.define('tableRowStates',new Map());this.define('alpha',0.01);}}\ntr.b.ViewState.register(HistogramSetViewState);class HistogramSetTableRowState extends tr.b.ViewState{constructor(){super();this.define('isExpanded',false);this.define('isOverviewed',false);this.define('cells',new Map());this.define('subRows',new Map());this.define('diagnosticsTab','');}\nasCompactDict(){const result={};if(this.isExpanded)result.e='1';if(this.isOverviewed)result.o='1';if(this.diagnosticsTab)result.d=this.diagnosticsTab;const cells={};for(const[name,cell]of this.cells){const cellDict=cell.asCompactDict();if(cellDict===undefined)continue;cells[name]=cellDict;}\nif(Object.keys(cells).length>0)result.c=cells;const subRows={};for(const[name,row]of this.subRows){const rowDict=row.asCompactDict();if(rowDict===undefined)continue;subRows[name]=rowDict;}\nif(Object.keys(subRows).length>0)result.r=subRows;if(Object.keys(result).length===0)return undefined;return result;}\nasync updateFromCompactDict(dict){await this.update({isExpanded:dict.e==='1',isOverviewed:dict.o==='1',diagnosticsTab:dict.d||'',});for(const[name,cellDict]of Object.entries(dict.c||{})){const cell=this.cells.get(name);if(cell===undefined)continue;await cell.updateFromCompactDict(cellDict);}\nfor(const[name,subRowDict]of Object.entries(dict.r||{})){const subRow=this.subRows.get(name);if(subRow===undefined)continue;await subRow.updateFromCompactDict(subRowDict);}}*walk(){yield this;for(const row of this.subRows.values())yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}}\ntr.b.ViewState.register(HistogramSetTableRowState);class HistogramSetTableCellState extends tr.b.ViewState{constructor(){super();this.define('isOpen',false);this.define('brushedBinRange',new tr.b.math.Range());this.define('mergeSampleDiagnostics',true);}\nasCompactDict(){const result={};if(this.isOpen)result.o='1';if(!this.mergeSampleDiagnostics)result.m='0';if(!this.brushedBinRange.isEmpty){result.b=this.brushedBinRange.min+'_'+this.brushedBinRange.max;}\nif(Object.keys(result).length===0)return undefined;return result;}\nasync updateFromCompactDict(dict){let binRange=this.brushedBinRange;if(dict.b){let[bMin,bMax]=dict.b.split('_');bMin=parseInt(bMin);bMax=parseInt(bMax);if(bMin!==binRange.min||bMax!==binRange.max){binRange=tr.b.math.Range.fromExplicitRange(bMin,bMax);}}\nawait this.update({isOpen:dict.o==='1',brushedBinRange:binRange,mergeSampleDiagnostics:dict.m!=='0',});}}\ntr.b.ViewState.register(HistogramSetTableCellState);return{HistogramSetTableCellState,HistogramSetTableRowState,HistogramSetViewState,};});'use strict';Polymer({is:'tr-v-ui-scalar-map-table',created(){this.scalarMap_=new Map();this.significance_=new Map();},ready(){this.$.table.showHeader=false;this.$.table.tableColumns=[{value(row){return row.name;}},{value(row){const span=tr.v.ui.createScalarSpan(row.value);if(row.significance!==undefined){span.significance=row.significance;}else if(row.anyRowsHaveSignificance){span.style.marginRight='18px';}\nspan.style.whiteSpace='nowrap';return span;}}];},get scalarMap(){return this.scalarMap_;},set scalarMap(map){this.scalarMap_=map;this.updateContents_();},setSignificanceForKey(key,significance){this.significance_.set(key,significance);this.updateContents_();},updateContents_(){const rows=[];for(const[key,scalar]of this.scalarMap){rows.push({name:key,value:scalar,significance:this.significance_.get(key),anyRowsHaveSignificance:(this.significance_.size>0)});}\nthis.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_BAR_HEIGHT_PX=5;const TRUNCATE_BIN_MARGIN=0.15;const IGNORE_DELTA_STATISTICS_NAMES=[`${tr.v.DELTA}min`,`%${tr.v.DELTA}min`,`${tr.v.DELTA}max`,`%${tr.v.DELTA}max`,`${tr.v.DELTA}sum`,`%${tr.v.DELTA}sum`,`${tr.v.DELTA}count`,`%${tr.v.DELTA}count`,];Polymer({is:'tr-v-ui-histogram-span',created(){this.viewStateListener_=this.onViewStateUpdate_.bind(this);this.viewState=new tr.v.ui.HistogramSetTableCellState();this.rowStateListener_=this.onRowStateUpdate_.bind(this);this.rowState=new tr.v.ui.HistogramSetTableRowState();this.rootStateListener_=this.onRootStateUpdate_.bind(this);this.rootState=new tr.v.ui.HistogramSetViewState();this.histogram_=undefined;this.referenceHistogram_=undefined;this.graphWidth_=undefined;this.graphHeight_=undefined;this.mouseDownBin_=undefined;this.prevBrushedBinRange_=new tr.b.math.Range();this.anySampleDiagnostics_=false;this.canMergeSampleDiagnostics_=true;this.mwuResult_=undefined;},get rowState(){return this.rowState_;},set rowState(rs){if(this.rowState){this.rowState.removeUpdateListener(this.rowStateListener_);}\nthis.rowState_=rs;this.rowState.addUpdateListener(this.rowStateListener_);if(this.isAttached)this.updateContents_();},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState){this.viewState.removeUpdateListener(this.viewStateListener_);}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.viewStateListener_);if(this.isAttached)this.updateContents_();},get rootState(){return this.rootState_;},set rootState(vs){if(this.rootState){this.rootState.removeUpdateListener(this.rootStateListener_);}\nthis.rootState_=vs;this.rootState.addUpdateListener(this.rootStateListener_);if(this.isAttached)this.updateContents_();},build(histogram,opt_referenceHistogram){this.histogram_=histogram;this.$.metric_diagnostics.histogram=histogram;this.$.sample_diagnostics.histogram=histogram;this.referenceHistogram_=opt_referenceHistogram;if(this.histogram.canCompare(this.referenceHistogram)){this.mwuResult_=tr.b.math.Statistics.mwu(this.histogram.sampleValues,this.referenceHistogram.sampleValues,this.rootState.alpha);}\nthis.anySampleDiagnostics_=false;for(const bin of this.histogram.allBins){if(bin.diagnosticMaps.length>0){this.anySampleDiagnostics_=true;break;}}\nif(this.isAttached)this.updateContents_();},onViewStateUpdate_(event){if(event.delta.brushedBinRange){if(this.chart_!==undefined){this.chart_.brushedRange=this.viewState.brushedBinRange;}\nthis.updateDiagnostics_();}\nif(event.delta.mergeSampleDiagnostics&&(this.viewState.mergeSampleDiagnostics!==this.$.merge_sample_diagnostics.checked)){this.$.merge_sample_diagnostics.checked=this.canMergeSampleDiagnostics&&this.viewState.mergeSampleDiagnostics;this.updateDiagnostics_();}},updateSignificance_(){if(!this.mwuResult_)return;this.$.stats.setSignificanceForKey(`${tr.v.DELTA}avg`,this.mwuResult_.significance);},onRootStateUpdate_(event){if(event.delta.alpha&&this.mwuResult_){this.mwuResult_.compare(this.rootState.alpha);this.updateSignificance_();}},onRowStateUpdate_(event){if(event.delta.diagnosticsTab){if(this.rowState.diagnosticsTab===this.$.sample_diagnostics_container.tabLabel){this.updateDiagnostics_();}else{for(const tab of this.$.diagnostics.subViews){if(this.rowState.diagnosticsTab===tab.tabLabel){this.$.diagnostics.selectedSubView=tab;break;}}}}},ready(){this.$.metric_diagnostics.tabLabel='histogram diagnostics';this.$.sample_diagnostics_container.tabLabel='sample diagnostics';this.$.metadata_diagnostics.tabLabel='metadata';this.$.metadata_diagnostics.isMetadata=true;this.$.diagnostics.addEventListener('selected-tab-change',this.onSelectedDiagnosticsChanged_.bind(this));this.$.drag_handle.target=this.$.container;this.$.drag_handle.addEventListener('drag-handle-resize',this.onResize_.bind(this));},attached(){if(this.histogram_!==undefined)this.updateContents_();},get canMergeSampleDiagnostics(){return this.canMergeSampleDiagnostics_;},set canMergeSampleDiagnostics(merge){this.canMergeSampleDiagnostics_=merge;if(!merge)this.viewState.mergeSampleDiagnostics=false;this.$.merge_sample_diagnostics_container.style.display=(merge?'':'none');},onResize_(event){event.stopPropagation();let heightPx=parseInt(this.$.container.style.height);if(heightPx<this.defaultGraphHeight){heightPx=this.defaultGraphHeight;this.$.container.style.height=this.defaultGraphHeight+'px';}\nthis.chart_.graphHeight=heightPx-(this.chart_.margin.top+\nthis.chart_.margin.bottom);this.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';},get graphWidth(){return this.graphWidth_||this.defaultGraphWidth;},set graphWidth(width){this.graphWidth_=width;},get graphHeight(){return this.graphHeight_||this.defaultGraphHeight;},set graphHeight(height){this.graphHeight_=height;},get barHeight(){return this.chart_.barHeight;},set barHeight(px){this.graphHeight=this.computeChartHeight_(px);},computeChartHeight_(barHeightPx){return(this.chart_.margin.top+\nthis.chart_.margin.bottom+\n(barHeightPx*this.histogram.allBins.length));},get defaultGraphHeight(){if(this.histogram&&this.histogram.allBins.length===1){return 150;}\nreturn this.computeChartHeight_(DEFAULT_BAR_HEIGHT_PX);},get defaultGraphWidth(){if(this.histogram.allBins.length===1){return 100;}\nreturn 300;},get brushedBins(){const bins=[];if(this.histogram&&!this.viewState.brushedBinRange.isEmpty){for(let i=this.viewState.brushedBinRange.min;i<this.viewState.brushedBinRange.max;++i){bins.push(this.histogram.allBins[i]);}}\nreturn bins;},async updateBrushedRange_(binIndex){const brushedBinRange=new tr.b.math.Range();brushedBinRange.addValue(tr.b.math.clamp(this.mouseDownBinIndex_,0,this.histogram.allBins.length-1));brushedBinRange.addValue(tr.b.math.clamp(binIndex,0,this.histogram.allBins.length-1));brushedBinRange.max+=1;await this.viewState.update({brushedBinRange});},onMouseDown_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.prevBrushedBinRange_=this.viewState.brushedBinRange;this.mouseDownBinIndex_=chartEvent.y;this.updateBrushedRange_(chartEvent.y);},onMouseMove_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.updateBrushedRange_(chartEvent.y);},onMouseUp_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.updateBrushedRange_(chartEvent.y);if(this.prevBrushedBinRange_.range===1&&this.viewState.brushedBinRange.range===1&&(this.prevBrushedBinRange_.min===this.viewState.brushedBinRange.min)){tr.b.Timing.instant('histogram-span','clearBrushedBins');this.viewState.update({brushedBinRange:new tr.b.math.Range()});}else{tr.b.Timing.instant('histogram-span','brushBins');}\nthis.mouseDownBinIndex_=undefined;},async onSelectedDiagnosticsChanged_(){await this.rowState.update({diagnosticsTab:this.$.diagnostics.selectedSubView.tabLabel,});if((this.$.diagnostics.selectedSubView===this.$.sample_diagnostics_container)&&this.histogram&&this.viewState.brushedBinRange.isEmpty){const brushedBinRange=tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length);await this.viewState.update({brushedBinRange});this.updateDiagnostics_();}},updateDiagnostics_(){let maps=[];for(const bin of this.brushedBins){for(const map of bin.diagnosticMaps){maps.push(map);}}\nif(this.$.merge_sample_diagnostics.checked!==this.viewState.mergeSampleDiagnostics){this.viewState.update({mergeSampleDiagnostics:this.$.merge_sample_diagnostics.checked});}\nif(this.viewState.mergeSampleDiagnostics){const merged=new tr.v.d.DiagnosticMap();for(const map of maps){merged.addDiagnostics(map);}\nmaps=[merged];}\nconst mark=tr.b.Timing.mark('histogram-span',(this.viewState.mergeSampleDiagnostics?'merge':'split')+'SampleDiagnostics');this.$.sample_diagnostics.diagnosticMaps=maps;mark.end();if(this.anySampleDiagnostics_){this.$.diagnostics.selectedSubView=this.$.sample_diagnostics_container;}},get histogram(){return this.histogram_;},get referenceHistogram(){return this.referenceHistogram_;},getDeltaScalars_(statNames,scalarMap){if(!this.histogram.canCompare(this.referenceHistogram))return;for(const deltaStatName of tr.v.Histogram.getDeltaStatisticsNames(statNames)){if(IGNORE_DELTA_STATISTICS_NAMES.includes(deltaStatName))continue;const scalar=this.histogram.getStatisticScalar(deltaStatName,this.referenceHistogram,this.mwuResult_);if(scalar===undefined)continue;scalarMap.set(deltaStatName,scalar);}},set isYLogScale(logScale){this.chart_.isYLogScale=logScale;},async updateContents_(){this.$.chart.style.display='none';this.$.drag_handle.style.display='none';this.$.container.style.justifyContent='';while(Polymer.dom(this.$.chart).lastChild){Polymer.dom(this.$.chart).removeChild(Polymer.dom(this.$.chart).lastChild);}\nif(!this.histogram)return;this.$.container.style.display='';const scalarMap=new Map();this.getDeltaScalars_(this.histogram.statisticsNames,scalarMap);for(const[name,scalar]of this.histogram.statisticsScalars){scalarMap.set(name,scalar);}\nthis.$.stats.scalarMap=scalarMap;this.updateSignificance_();const metricDiagnosticMap=new tr.v.d.DiagnosticMap();const metadataDiagnosticMap=new tr.v.d.DiagnosticMap();for(const[key,diagnostic]of this.histogram.diagnostics){if(diagnostic instanceof tr.v.d.RelatedNameMap)continue;if(tr.v.d.RESERVED_NAMES_SET.has(key)){metadataDiagnosticMap.set(key,diagnostic);}else{metricDiagnosticMap.set(key,diagnostic);}}\nconst diagnosticTabs=[];if(metricDiagnosticMap.size){this.$.metric_diagnostics.diagnosticMaps=[metricDiagnosticMap];diagnosticTabs.push(this.$.metric_diagnostics);}\nif(this.anySampleDiagnostics_){diagnosticTabs.push(this.$.sample_diagnostics_container);}\nif(metadataDiagnosticMap.size){this.$.metadata_diagnostics.diagnosticMaps=[metadataDiagnosticMap];diagnosticTabs.push(this.$.metadata_diagnostics);}\nthis.$.diagnostics.resetSubViews(diagnosticTabs);this.$.diagnostics.set('tabsHidden',diagnosticTabs.length<2);if(this.histogram.numValues<=1){await this.viewState.update({brushedBinRange:tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length)});this.$.container.style.justifyContent='flex-end';return;}\nthis.$.chart.style.display='block';this.$.drag_handle.style.display='block';if(this.histogram.allBins.length===1){if(this.histogram.min!==this.histogram.max){this.chart_=new tr.ui.b.BoxChart();Polymer.dom(this.$.chart).appendChild(this.chart_);this.chart_.graphWidth=this.graphWidth;this.chart_.graphHeight=this.graphHeight;this.chart_.hideXAxis=true;this.chart_.data=[{x:'',color:'blue',percentile_0:this.histogram.running.min,percentile_25:this.histogram.getApproximatePercentile(0.25),percentile_50:this.histogram.getApproximatePercentile(0.5),percentile_75:this.histogram.getApproximatePercentile(0.75),percentile_100:this.histogram.running.max,}];}\nthis.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';await this.viewState.update({brushedBinRange:tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length)});return;}\nthis.chart_=new tr.ui.b.NameBarChart();Polymer.dom(this.$.chart).appendChild(this.chart_);this.chart_.graphWidth=this.graphWidth;this.chart_.graphHeight=this.graphHeight;this.chart_.addEventListener('item-mousedown',this.onMouseDown_.bind(this));this.chart_.addEventListener('item-mousemove',this.onMouseMove_.bind(this));this.chart_.addEventListener('item-mouseup',this.onMouseUp_.bind(this));this.chart_.hideLegend=true;this.chart_.getDataSeries('y').color='blue';this.chart_.xAxisLabel='#';this.chart_.brushedRange=this.viewState.brushedBinRange;if(!this.viewState.brushedBinRange.isEmpty){this.updateDiagnostics_();}\nconst chartData=[];const binCounts=[];for(const bin of this.histogram.allBins){let x=bin.range.min;if(x===-Number.MAX_VALUE){x='<'+new tr.b.Scalar(this.histogram.unit,bin.range.max).toString();}else{x=new tr.b.Scalar(this.histogram.unit,x).toString();}\nchartData.push({x,y:bin.count});binCounts.push(bin.count);}\nbinCounts.sort((x,y)=>y-x);const dataRange=tr.b.math.Range.fromExplicitRange(0,binCounts[0]);if(binCounts[1]>0&&binCounts[0]>(binCounts[1]*2)){dataRange.max=binCounts[1]*(1+TRUNCATE_BIN_MARGIN);}\nif(binCounts[2]>0&&binCounts[1]>(binCounts[2]*2)){dataRange.max=binCounts[2]*(1+TRUNCATE_BIN_MARGIN);}\nthis.chart_.overrideDataRange=dataRange;this.chart_.data=chartData;this.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';}});});'use strict';tr.exportTo('tr.ui.analysis',function(){const EVENT_FIELD=[{key:'start',label:'Start'},{key:'cpuDuration',label:'CPU Duration'},{key:'duration',label:'Duration'},{key:'cpuSelfTime',label:'CPU Self Time'},{key:'selfTime',label:'Self Time'}];function buildDiagnostics_(slice){const diagnostics={};for(const item of EVENT_FIELD){const fieldName=item.key;if(slice[fieldName]===undefined)continue;diagnostics[fieldName]=new tr.v.d.Scalar(new tr.b.Scalar(tr.b.Unit.byName.timeDurationInMs,slice[fieldName]));}\ndiagnostics.args=new tr.v.d.GenericSet([slice.args]);diagnostics.event=new tr.v.d.RelatedEventSet(slice);return diagnostics;}\nPolymer({is:'tr-ui-a-multi-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;},ready(){this.$.radioPicker.style.display='none';this.$.radioPicker.items=EVENT_FIELD;this.$.radioPicker.select('cpuSelfTime');this.$.radioPicker.addEventListener('change',()=>{if(this.isAttached)this.updateContents_();});this.$.histogramSpan.graphWidth=400;this.$.histogramSpan.canMergeSampleDiagnostics=false;this.$.histogramContainer.style.display='none';},attached(){if(this.currentSelection_!==undefined)this.updateContents_();},set selection(selection){if(selection.length<=1){throw new Error('Only supports multiple items');}\nthis.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;if(this.isAttached)this.updateContents_();},get eventsHaveDuration(){return this.eventsHaveDuration_;},set eventsHaveDuration(eventsHaveDuration){this.eventsHaveDuration_=eventsHaveDuration;if(this.isAttached)this.updateContents_();},get eventsHaveSubRows(){return this.eventsHaveSubRows_;},set eventsHaveSubRows(eventsHaveSubRows){this.eventsHaveSubRows_=eventsHaveSubRows;if(this.isAttached)this.updateContents_();},buildHistogram_(selectedKey){let leftBoundary=Number.MAX_VALUE;let rightBoundary=tr.b.math.Statistics.percentile(this.currentSelection_,0.95,function(value){leftBoundary=Math.min(leftBoundary,value[selectedKey]);return value[selectedKey];});if(leftBoundary===rightBoundary)rightBoundary+=1;const histogram=new tr.v.Histogram('',tr.b.Unit.byName.timeDurationInMs,tr.v.HistogramBinBoundaries.createLinear(leftBoundary,rightBoundary,Math.ceil(Math.sqrt(this.currentSelection_.length))));histogram.customizeSummaryOptions({sum:false,percentile:[0.5,0.9],});for(const slice of this.currentSelection_){histogram.addSample(slice[selectedKey],buildDiagnostics_(slice));}\nreturn histogram;},updateContents_(){const selection=this.currentSelection_;if(!selection)return;const eventsByTitle=selection.getEventsOrganizedByTitle();const numTitles=Object.keys(eventsByTitle).length;this.$.eventSummaryTable.configure({showTotals:numTitles>1,eventsByTitle,eventsHaveDuration:this.eventsHaveDuration_,eventsHaveSubRows:this.eventsHaveSubRows_});this.$.selectionSummaryTable.selection=this.currentSelection_;if(numTitles===1){this.$.radioPicker.style.display='block';this.$.histogramContainer.style.display='flex';this.$.histogramSpan.build(this.buildHistogram_(this.$.radioPicker.selectedKey));if(this.$.histogramSpan.histogram.numValues===0){this.$.histogramContainer.style.display='none';}}else{this.$.radioPicker.style.display='none';this.$.histogramContainer.style.display='none';}}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const FLOW_IN=0x1;const FLOW_OUT=0x2;const FLOW_IN_OUT=FLOW_IN|FLOW_OUT;function FlowClassifier(){this.numEvents_=0;this.eventsByGUID_={};}\nFlowClassifier.prototype={getFS_(event){let fs=this.eventsByGUID_[event.guid];if(fs===undefined){this.numEvents_++;fs={state:0,event};this.eventsByGUID_[event.guid]=fs;}\nreturn fs;},addInFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_IN;return event;},addOutFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_OUT;return event;},hasEvents(){return this.numEvents_>0;},get inFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN){selection.push(fs.event);}}\nreturn selection;},get outFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_OUT){selection.push(fs.event);}}\nreturn selection;},get internalFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN_OUT){selection.push(fs.event);}}\nreturn selection;}};return{FlowClassifier,};});'use strict';function*getEventInFlowEvents(event){if(!event.inFlowEvents)return;yield*event.inFlowEvents;}\nfunction*getEventOutFlowEvents(event){if(!event.outFlowEvents)return;yield*event.outFlowEvents;}\nfunction*getEventAncestors(event){if(!event.enumerateAllAncestors)return;yield*event.enumerateAllAncestors();}\nfunction*getEventDescendents(event){if(!event.enumerateAllDescendents)return;yield*event.enumerateAllDescendents();}\nPolymer({is:'tr-ui-a-related-events',ready(){this.eventGroups_=[];this.cancelFunctions_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}\nreturn typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}\nreturn linkEl;}}];},hasRelatedEvents(){return(this.eventGroups_&&this.eventGroups_.length>0);},setRelatedEvents(eventSet){this.cancelAllTasks_();this.eventGroups_=[];this.addRuntimeCallStats_(eventSet);this.addOverlappingV8ICStats_(eventSet);this.addV8GCObjectStats_(eventSet);this.addV8Slices_(eventSet);this.addConnectedFlows_(eventSet);this.addConnectedEvents_(eventSet);this.addOverlappingSamples_(eventSet);this.updateContents_();},addConnectedFlows_(eventSet){const classifier=new tr.ui.analysis.FlowClassifier();eventSet.forEach(function(slice){if(slice.inFlowEvents){slice.inFlowEvents.forEach(function(flow){classifier.addInFlow(flow);});}\nif(slice.outFlowEvents){slice.outFlowEvents.forEach(function(flow){classifier.addOutFlow(flow);});}});if(!classifier.hasEvents())return;const addToEventGroups=function(type,flowEvent){this.eventGroups_.push({type,selection:new tr.model.EventSet(flowEvent),name:flowEvent.title});};classifier.inFlowEvents.forEach(addToEventGroups.bind(this,'Incoming flow'));classifier.outFlowEvents.forEach(addToEventGroups.bind(this,'Outgoing flow'));classifier.internalFlowEvents.forEach(addToEventGroups.bind(this,'Internal flow'));},cancelAllTasks_(){this.cancelFunctions_.forEach(function(cancelFunction){cancelFunction();});this.cancelFunctions_=[];},addConnectedEvents_(eventSet){this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Preceding events','Add all events that have led to the selected one(s), connected by '+'flow arrows or by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventAncestors(event);if(event.startSlice){yield event.startSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Following events','Add all events that have been caused by the selected one(s), '+'connected by flow arrows or by call stack.',eventSet,function*(event){yield*getEventOutFlowEvents(event);yield*getEventDescendents(event);if(event.endSlice){yield event.endSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('All connected events','Add all events connected to the selected one(s) by flow arrows or '+'by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventOutFlowEvents(event);yield*getEventAncestors(event);yield*getEventDescendents(event);if(event.startSlice){yield event.startSlice;}\nif(event.endSlice){yield event.endSlice;}}.bind(this)));},createEventsLinkIfNeeded_(title,tooltip,events,connectedFn){events=new tr.model.EventSet(events);const eventsToProcess=new Set(events);let wasChanged=false;let task;let isCanceled=false;function addEventsUntilTimeout(){if(isCanceled)return;const timeout=window.performance.now()+8;while(eventsToProcess.size>0&&window.performance.now()<=timeout){const nextEvent=tr.b.getFirstElement(eventsToProcess);eventsToProcess.delete(nextEvent);for(const eventToAdd of connectedFn(nextEvent)){if(!events.contains(eventToAdd)){events.push(eventToAdd);eventsToProcess.add(eventToAdd);wasChanged=true;}}}\nif(eventsToProcess.size>0){const newTask=new tr.b.Task(addEventsUntilTimeout.bind(this),this);task.after(newTask);task=newTask;return;}\nif(!wasChanged)return;this.eventGroups_.push({type:title,tooltip,selection:events});this.updateContents_();}\nfunction cancelTask(){isCanceled=true;}\ntask=new tr.b.Task(addEventsUntilTimeout.bind(this),this);tr.b.Task.RunWhenIdle(task);return cancelTask;},addOverlappingSamples_(eventSet){const samples=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.samples){continue;}\nconst candidates=slice.parentContainer.samples;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSamples=range.filterArray(candidates,function(value){return value.start;});for(const sample of filteredSamples){samples.push(sample);}}\nif(samples.length>0){this.eventGroups_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected slice(s).',selection:samples});}},addV8Slices_(eventSet){const v8Slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.category==='v8'){v8Slices.push(slice);}}\nif(v8Slices.length>0){this.eventGroups_.push({type:'V8 Slices',tooltip:'All V8 slices in the selected slice(s).',selection:v8Slices});}},addRuntimeCallStats_(eventSet){const slices=eventSet.filter(function(slice){return(slice.category==='v8'||slice.category==='disabled-by-default-v8.runtime_stats')&&slice.runtimeCallStats;});if(slices.length>0){this.eventGroups_.push({type:'Runtime call stats table',tooltip:'All V8 slices containing runtime call stats table in the selected slice(s).',selection:slices});}},addV8GCObjectStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.title==='V8.GC_Objects_Stats'){slices.push(slice);}}\nif(slices.length>0){this.eventGroups_.push({type:'V8 GC stats table',tooltip:'All V8 GC statistics slices in the selected set.',selection:slices});}},addOverlappingV8ICStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.sliceGroup){continue;}\nconst sliceGroup=slice.parentContainer.sliceGroup.slices;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSlices=range.filterArray(sliceGroup,value=>value.start);const icSlices=filteredSlices.filter(x=>x.title==='V8.ICStats');for(const icSlice of icSlices){slices.push(icSlice);}}\nif(slices.length>0){this.eventGroups_.push({type:'Overlapping V8 IC stats',tooltip:'All V8 IC statistics overlapping the selected set.',selection:slices});}},updateContents_(){const table=this.$.table;if(this.eventGroups_===undefined){table.tableRows=[];}else{table.tableRows=this.eventGroups_.slice();}\ntable.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},get relatedEventsToHighlight(){if(!this.$.content.selection)return undefined;const selection=new tr.model.EventSet();this.$.content.selection.forEach(function(asyncEvent){if(!asyncEvent.associatedEvents)return;asyncEvent.associatedEvents.forEach(function(event){selection.push(event);});});if(selection.length)return selection;return undefined;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-async-slice-sub-view',tr.model.AsyncSlice,{multi:true,title:'Async Slices',});'use strict';Polymer({is:'tr-ui-a-multi-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-cpu-slice-sub-view',tr.model.CpuSlice,{multi:true,title:'CPU Slices',});'use strict';Polymer({is:'tr-ui-a-multi-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveDuration=false;this.$.content.eventsHaveSubRows=false;},set selection(selection){this.$.content.selection=selection;},get selection(){return this.$.content.selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-flow-event-sub-view',tr.model.FlowEvent,{multi:true,title:'Flow Events',});'use strict';Polymer({is:'tr-ui-a-multi-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(frameEvent){frameEvent.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-frame-sub-view',tr.model.Frame,{multi:true,title:'Frames',});'use strict';Polymer({is:'tr-ui-a-multi-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this.$.content).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});'use strict';Polymer({is:'tr-ui-a-multi-object-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;const objectEvents=Array.from(selection).sort(tr.b.math.Range.compareByMinTimes);const timeSpanConfig={unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument};const table=this.$.content;table.tableColumns=[{title:'First',value(event){if(event instanceof tr.model.ObjectSnapshot){return tr.v.ui.createScalarSpan(event.ts,timeSpanConfig);}\nconst spanEl=document.createElement('span');Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.creationTs,timeSpanConfig));Polymer.dom(spanEl).appendChild(tr.ui.b.createSpan({textContent:'-',marginLeft:'4px',marginRight:'4px'}));if(event.deletionTs!==Number.MAX_VALUE){Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.deletionTs,timeSpanConfig));}\nreturn spanEl;},width:'200px'},{title:'Second',value(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(event);},event.userFriendlyName);return linkEl;},width:'100%'}];table.tableRows=objectEvents;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectInstance,{multi:true,title:'Object Instances',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectSnapshot,{multi:true,title:'Object Snapshots',});'use strict';const EventSet=tr.model.EventSet;const CHART_TITLE='Power (W) by ms since vertical sync';Polymer({is:'tr-ui-a-frame-power-usage-chart',ready(){this.chart_=undefined;this.samples_=new EventSet();this.vSyncTimestamps_=[];},attached(){if(this.samples_)this.updateContents_();},get chart(){return this.chart_;},get samples(){return this.samples_;},get vSyncTimestamps(){return this.vSyncTimestamps_;},setData(samples,vSyncTimestamps){this.samples_=(samples===undefined)?new EventSet():samples;this.vSyncTimestamps_=(vSyncTimestamps===undefined)?[]:vSyncTimestamps;if(this.isAttached)this.updateContents_();},updateContents_(){this.clearChart_();const data=this.getDataForLineChart_();if(data.length===0)return;this.chart_=new tr.ui.b.LineChart();Polymer.dom(this.$.content).appendChild(this.chart_);this.chart_.chartTitle=CHART_TITLE;this.chart_.data=data;},clearChart_(){const content=this.$.content;while(Polymer.dom(content).firstChild){Polymer.dom(content).removeChild(Polymer.dom(content).firstChild);}\nthis.chart_=undefined;},getDataForLineChart_(){const sortedSamples=this.sortSamplesByTimestampAscending_(this.samples);const vSyncTimestamps=this.vSyncTimestamps.slice();let lastVSyncTimestamp=undefined;const points=[];let frameNumber=0;sortedSamples.forEach(function(sample){while(vSyncTimestamps.length>0&&vSyncTimestamps[0]<=sample.start){lastVSyncTimestamp=vSyncTimestamps.shift();frameNumber++;}\nif(lastVSyncTimestamp===undefined)return;const point={x:sample.start-lastVSyncTimestamp};point['f'+frameNumber]=sample.powerInW;points.push(point);});return points;},sortSamplesByTimestampAscending_(samples){return samples.toArray().sort(function(smpl1,smpl2){return smpl1.start-smpl2.start;});}});'use strict';Polymer({is:'tr-ui-a-power-sample-summary-table',ready(){this.$.table.tableColumns=[{title:'Min power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.min);}},{title:'Max power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.max);}},{title:'Time-weighted average',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.timeWeightedAverageInW);}},{title:'Energy consumed',width:'100px',value(row){return tr.b.Unit.byName.energyInJoules.format(row.energyConsumedInJ);}},{title:'Sample count',width:'100%',value(row){return row.sampleCount;}}];this.samples=new tr.model.EventSet();},get samples(){return this.samples_;},set samples(samples){if(samples===this.samples)return;this.samples_=(samples===undefined)?new tr.model.EventSet():samples;this.updateContents_();},updateContents_(){if(this.samples.length===0){this.$.table.tableRows=[];}else{this.$.table.tableRows=[{min:this.getMin(),max:this.getMax(),timeWeightedAverageInW:this.getTimeWeightedAverageInW(),energyConsumedInJ:this.getEnergyConsumedInJ(),sampleCount:this.samples.length}];}\nthis.$.table.rebuild();},getMin(){return Math.min.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getMax(){return Math.max.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getTimeWeightedAverageInW(){const energyConsumedInJ=this.getEnergyConsumedInJ();if(energyConsumedInJ==='N/A')return'N/A';const durationInS=tr.b.convertUnit(this.samples.bounds.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return energyConsumedInJ/durationInS;},getEnergyConsumedInJ(){if(this.samples.length<2)return'N/A';const bounds=this.samples.bounds;const series=tr.b.getFirstElement(this.samples).series;return series.getEnergyConsumedInJ(bounds.min,bounds.max);}});'use strict';Polymer({is:'tr-ui-a-multi-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){const samples=this.selection;const vSyncTimestamps=(!samples?[]:tr.b.getFirstElement(samples).series.device.vSyncTimestamps);this.$.summaryTable.samples=samples;this.$.chart.setData(this.selection,vSyncTimestamps);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-power-sample-sub-view',tr.model.PowerSample,{multi:true,title:'Power Samples',});'use strict';(function(){const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;Polymer({is:'tr-ui-a-multi-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.viewOption_=undefined;this.selection_=undefined;},ready(){const viewSelector=tr.ui.b.createSelector(this,'viewOption','tracing.ui.analysis.multi_sample_sub_view',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]);Polymer.dom(this.$.control).appendChild(viewSelector);this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;this.updateContents_();},get viewOption(){return this.viewOption_;},set viewOption(viewOption){this.viewOption_=viewOption;this.updateContents_();},createSamplingSummary_(selection,viewOption){const builder=new MultiDimensionalViewBuilder(1,1);const samples=selection.filter(event=>event instanceof tr.model.Sample);samples.forEach(function(sample){builder.addPath([sample.userFriendlyStack.reverse()],[1],MultiDimensionalViewBuilder.ValueKind.SELF);});return builder.buildView(viewOption);},processSampleRows_(rows){for(const row of rows){let title=row.title[0];let results=/(.*) (Deoptimized reason: .*)/.exec(title);if(results!==null){row.deoptReason=results[2];title=results[1];}\nresults=/(.*) url: (.*)/.exec(title);if(results!==null){row.functionName=results[1];row.url=results[2];if(row.functionName===''){row.functionName='(anonymous function)';}\nif(row.url===''){row.url='unknown';}}else{row.functionName=title;row.url='unknown';}\nthis.processSampleRows_(row.subRows);}},updateContents_(){if(this.selection===undefined){this.$.table.tableColumns=[];this.$.table.tableRows=[];this.$.table.rebuild();return;}\nconst samplingData=this.createSamplingSummary_(this.selection,this.viewOption);const total=samplingData.values[0].total;const columns=[this.createPercentColumn_('Total',total),this.createSamplesColumn_('Total'),this.createPercentColumn_('Self',total),this.createSamplesColumn_('Self'),{title:'Function Name',value(row){if(row.deoptReason!==undefined){const spanEl=tr.ui.b.createSpan({italic:true,color:'#F44336',tooltip:row.deoptReason});spanEl.innerText=row.functionName;return spanEl;}\nreturn row.functionName;},width:'150px',cmp:(a,b)=>a.functionName.localeCompare(b.functionName),showExpandButtons:true},{title:'Location',value(row){return row.url;},width:'250px',cmp:(a,b)=>a.url.localeCompare(b.url),}];this.processSampleRows_(samplingData.subRows);this.$.table.tableColumns=columns;this.$.table.sortColumnIndex=1;this.$.table.sortDescending=true;this.$.table.tableRows=samplingData.subRows;this.$.table.rebuild();},createPercentColumn_(title,samplingDataTotal){const field=title.toLowerCase();return{title:title+' percent',value(row){return tr.v.ui.createScalarSpan(row.values[0][field]/samplingDataTotal,{customContextRange:tr.b.math.Range.PERCENT_RANGE,unit:tr.b.Unit.byName.normalizedPercentage,context:{minimumFractionDigits:2,maximumFractionDigits:2},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};},createSamplesColumn_(title){const field=title.toLowerCase();return{title:title+' samples',value(row){return tr.v.ui.createScalarSpan(row.values[0][field],{unit:tr.b.Unit.byName.unitlessNumber,context:{maximumFractionDigits:0},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-sample-sub-view',tr.model.Sample,{multi:true,title:'Samples',});})();'use strict';Polymer({is:'tr-ui-a-multi-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.selection_=undefined;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;if(tr.isExported('tr.ui.e.chrome.cc.RasterTaskSelection')){if(tr.ui.e.chrome.cc.RasterTaskSelection.supports(selection)){const ltvSelection=new tr.ui.e.chrome.cc.RasterTaskSelection(selection);const ltv=new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();ltv.objectSnapshot=ltvSelection.containingSnapshot;ltv.selection=ltvSelection;ltv.extraHighlightsByLayerId=ltvSelection.extraHighlightsByLayerId;Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).appendChild(ltv);this.requiresTallView_=true;return;}}\nPolymer.dom(this.$.content).textContent='';const mesv=document.createElement('tr-ui-a-multi-event-sub-view');mesv.selection=selection;Polymer.dom(this.$.content).appendChild(mesv);const relatedEvents=document.createElement('tr-ui-a-related-events');relatedEvents.setRelatedEvents(selection);if(relatedEvents.hasRelatedEvents()){Polymer.dom(this.$.content).appendChild(relatedEvents);}},get requiresTallView(){if(this.$.content.children.length===0)return false;const childTagName=this.$.content.children[0].tagName;if(childTagName==='TR-UI-A-MULTI-EVENT-SUB-VIEW'){return false;}\nreturn true;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-slice-sub-view',tr.model.ThreadSlice,{multi:true,title:'Slices',});'use strict';Polymer({is:'tr-ui-a-multi-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:true,title:'Thread Timeslices',});'use strict';Polymer({is:'tr-ui-a-user-expectation-related-samples-table',ready(){this.samples_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}\nreturn typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}\nreturn linkEl;}}];},hasRelatedSamples(){return(this.samples_&&this.samples_.length>0);},set selection(eventSet){this.samples_=[];const samples=new tr.model.EventSet;eventSet.forEach(function(ue){samples.addEventSet(ue.associatedSamples);}.bind(this));if(samples.length>0){this.samples_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected user expectation(s).',selection:samples});}\nthis.updateContents_();},updateContents_(){const table=this.$.table;if(this.samples_&&this.samples_.length>0){table.tableRows=this.samples_.slice();}else{table.tableRows=[];}\ntable.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-interaction-record-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(ir){ir.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:true,title:'User Expectations',});'use strict';Polymer({is:'tr-ui-a-single-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}\nthis.$.content.setSelectionWithoutErrorChecks(selection);this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},getEventRows_(event){const rows=this.__proto__.__proto__.getEventRows_(event);rows.splice(0,0,{name:'ID',value:event.id});return rows;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-async-slice-sub-view',tr.model.AsyncSlice,{multi:false,title:'Async Slice',});'use strict';Polymer({is:'tr-ui-a-single-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const cpuSlice=tr.b.getOnlyElement(selection);if(!(cpuSlice instanceof tr.model.CpuSlice)){throw new Error('Only supports thread time slices');}\nthis.currentSelection_=selection;const thread=cpuSlice.threadThatWasRunning;const root=Polymer.dom(this.root);if(thread){Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;}else{root.querySelector('#process-name').parentElement.style.display='none';Polymer.dom(root.querySelector('#thread-name')).textContent=cpuSlice.title;}\nroot.querySelector('#start').setValueAndUnit(cpuSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(cpuSlice.duration,tr.b.Unit.byName.timeDurationInMs);const runningThreadEl=root.querySelector('#running-thread');const timeSlice=cpuSlice.getAssociatedTimeslice();if(!timeSlice){runningThreadEl.parentElement.style.display='none';}else{const threadLink=document.createElement('tr-ui-a-analysis-link');threadLink.selection=new tr.model.EventSet(timeSlice);Polymer.dom(threadLink).textContent='Click to select';runningThreadEl.parentElement.style.display='';Polymer.dom(runningThreadEl).textContent='';Polymer.dom(runningThreadEl).appendChild(threadLink);}\nroot.querySelector('#args').object=cpuSlice.args;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-cpu-slice-sub-view',tr.model.CpuSlice,{multi:false,title:'CPU Slice',});'use strict';function createAnalysisLinkTo(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.userFriendlyName);return linkEl;}\nPolymer({is:'tr-ui-a-single-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],listeners:{'singleEventSubView.customize-rows':'onCustomizeRows_'},set selection(selection){this.currentSelection_=selection;this.$.singleEventSubView.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},onCustomizeRows_(e){const event=tr.b.getOnlyElement(this.currentSelection_);const rows=e.rows;rows.unshift({name:'ID',value:event.id});rows.push({name:'From',value:createAnalysisLinkTo(event.startSlice)});rows.push({name:'To',value:createAnalysisLinkTo(event.endSlice)});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-flow-event-sub-view',tr.model.FlowEvent,{multi:false,title:'Flow Event',});'use strict';Polymer({is:'tr-ui-a-single-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.$.asv.selection=tr.b.getOnlyElement(selection).associatedAlerts;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-frame-sub-view',tr.model.Frame,{multi:false,title:'Frame',});'use strict';Polymer({is:'tr-ui-a-single-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-single-event-sub-view');realView.setSelectionWithoutErrorChecks(selection);Polymer.dom(this.$.content).appendChild(realView);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-instant-event-sub-view',tr.model.InstantEvent,{multi:false,title:'Instant Event',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-instant-event-sub-view',tr.model.InstantEvent,{multi:true,title:'Instant Events',});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectInstanceView=tr.ui.b.define('object-instance-view');ObjectInstanceView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectInstance_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectInstance=obj;},get modelEvent(){return this.objectInstance;},get objectInstance(){return this.objectInstance_;},set objectInstance(i){this.objectInstance_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectInstanceView;options.defaultMetadata={showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectInstanceView,options);return{ObjectInstanceView,};});'use strict';Polymer({is:'tr-ui-a-single-object-instance-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.$.content.children.length===0){return false;}\nif(this.$.content.children[0]instanceof\ntr.ui.analysis.ObjectInstanceView){return this.$.content.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const instance=tr.b.getOnlyElement(selection);if(!(instance instanceof tr.model.ObjectInstance)){throw new Error('Only supports object instances');}\nPolymer.dom(this.$.content).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectInstanceView.getTypeInfo(instance.category,instance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this.$.content).appendChild(customView);customView.modelEvent=instance;}else{this.appendGenericAnalysis_(instance);}},appendGenericAnalysis_(instance){let html='';html+='<div class=\"title\">'+\ninstance.typeName+' '+\ninstance.id+'</div>\\n';html+='<table>';html+='<tr>';html+='<tr><td>creationTs:</td><td>'+\ninstance.creationTs+'</td></tr>\\n';if(instance.deletionTs!==Number.MAX_VALUE){html+='<tr><td>deletionTs:</td><td>'+\ninstance.deletionTs+'</td></tr>\\n';}else{html+='<tr><td>deletionTs:</td><td>not deleted</td></tr>\\n';}\nhtml+='<tr><td>snapshots:</td><td id=\"snapshots\"></td></tr>\\n';html+='</table>';Polymer.dom(this.$.content).innerHTML=html;const snapshotsEl=Polymer.dom(this.$.content).querySelector('#snapshots');instance.snapshots.forEach(function(snapshot){const snapshotLink=document.createElement('tr-ui-a-analysis-link');snapshotLink.selection=new tr.model.EventSet(snapshot);Polymer.dom(snapshotsEl).appendChild(snapshotLink);});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-instance-sub-view',tr.model.ObjectInstance,{multi:false,title:'Object Instance',});'use strict';Polymer({is:'tr-ui-a-single-object-snapshot-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.children.length===0){return false;}\nif(this.children[0]instanceof tr.ui.analysis.ObjectSnapshotView){return this.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const snapshot=tr.b.getOnlyElement(selection);if(!(snapshot instanceof tr.model.ObjectSnapshot)){throw new Error('Only supports object instances');}\nPolymer.dom(this).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectSnapshotView.getTypeInfo(snapshot.objectInstance.category,snapshot.objectInstance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this).appendChild(customView);customView.modelEvent=snapshot;}else{this.appendGenericAnalysis_(snapshot);}},appendGenericAnalysis_(snapshot){const instance=snapshot.objectInstance;Polymer.dom(this).textContent='';const titleEl=document.createElement('div');Polymer.dom(titleEl).classList.add('title');Polymer.dom(titleEl).appendChild(document.createTextNode('Snapshot of '));Polymer.dom(this).appendChild(titleEl);const instanceLinkEl=document.createElement('tr-ui-a-analysis-link');instanceLinkEl.selection=new tr.model.EventSet(instance);Polymer.dom(titleEl).appendChild(instanceLinkEl);Polymer.dom(titleEl).appendChild(document.createTextNode(' @ '));Polymer.dom(titleEl).appendChild(tr.v.ui.createScalarSpan(snapshot.ts,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument,inline:true,}));const tableEl=document.createElement('table');Polymer.dom(this).appendChild(tableEl);const rowEl=document.createElement('tr');Polymer.dom(tableEl).appendChild(rowEl);const labelEl=document.createElement('td');Polymer.dom(labelEl).textContent='args:';Polymer.dom(rowEl).appendChild(labelEl);const argsEl=document.createElement('td');argsEl.id='args';Polymer.dom(rowEl).appendChild(argsEl);const objectViewEl=document.createElement('tr-ui-a-generic-object-view');objectViewEl.object=snapshot.args;Polymer.dom(argsEl).appendChild(objectViewEl);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-snapshot-sub-view',tr.model.ObjectSnapshot,{multi:false,title:'Object Snapshot',});'use strict';Polymer({is:'tr-ui-a-power-sample-table',ready(){this.$.table.tableColumns=[{title:'Time',width:'100px',value(row){return tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs});}},{title:'Power',width:'100%',value(row){return tr.v.ui.createScalarSpan(row.powerInW,{unit:tr.b.Unit.byName.powerInWatts});}}];this.sample=undefined;},get sample(){return this.sample_;},set sample(sample){this.sample_=sample;this.updateContents_();},updateContents_(){if(this.sample===undefined){this.$.table.tableRows=[];}else{this.$.table.tableRows=[this.sample];}\nthis.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-single-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){if(this.selection.length!==1){throw new Error('Cannot pass multiple samples to sample table.');}\nthis.$.samplesTable.sample=tr.b.getOnlyElement(this.selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-power-sample-sub-view',tr.model.PowerSample,{multi:false,title:'Power Sample',});'use strict';Polymer({is:'tr-ui-a-single-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.tableColumns=[{title:'',value:row=>row.title,width:'100px'},{title:'',value:row=>row.value,width:'100%'}];this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;if(this.currentSelection_===undefined){this.$.content.tableRows=[];return;}\nconst sample=tr.b.getOnlyElement(this.currentSelection_);const table=this.$.content;const rows=[];rows.push({title:'Title',value:sample.title});rows.push({title:'Sample time',value:tr.v.ui.createScalarSpan(sample.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument})});const callStackTableEl=document.createElement('tr-ui-b-table');callStackTableEl.tableRows=sample.getNodesAsArray().reverse();callStackTableEl.tableColumns=[{title:'function name',value:row=>row.functionName||'(anonymous function)'},{title:'location',value:row=>row.url}];callStackTableEl.rebuild();rows.push({title:'Call stack',value:callStackTableEl});table.tableRows=rows;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-sample-sub-view',tr.model.Sample,{multi:false,title:'Sample',});'use strict';Polymer({is:'tr-ui-a-single-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-slice-sub-view',tr.model.ThreadSlice,{multi:false,title:'Slice',});'use strict';Polymer({is:'tr-ui-a-single-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const timeSlice=tr.b.getOnlyElement(selection);if(!(timeSlice instanceof tr.model.ThreadTimeSlice)){throw new Error('Only supports thread time slices');}\nthis.currentSelection_=selection;const thread=timeSlice.thread;const root=Polymer.dom(this.root);Polymer.dom(root.querySelector('#state')).textContent=timeSlice.title;const stateColor=tr.b.ColorScheme.colorsAsStrings[timeSlice.colorId];root.querySelector('#state').style.backgroundColor=stateColor;Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;root.querySelector('#start').setValueAndUnit(timeSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(timeSlice.duration,tr.b.Unit.byName.timeDurationInMs);const onCpuEl=root.querySelector('#on-cpu');Polymer.dom(onCpuEl).textContent='';const runningInsteadEl=root.querySelector('#running-instead');if(timeSlice.cpuOnWhichThreadWasRunning){Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(timeSlice.getAssociatedCpuSlice());Polymer.dom(cpuLink).textContent=timeSlice.cpuOnWhichThreadWasRunning.userFriendlyName;Polymer.dom(onCpuEl).appendChild(cpuLink);}else{Polymer.dom(onCpuEl.parentElement).removeChild(onCpuEl);const cpuSliceThatTookCpu=timeSlice.getCpuSliceThatTookCpu();if(cpuSliceThatTookCpu){const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(cpuSliceThatTookCpu);if(cpuSliceThatTookCpu.thread){Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.thread.userFriendlyName;}else{Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.title;}\nPolymer.dom(runningInsteadEl).appendChild(cpuLink);}else{Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);}}\nconst argsEl=root.querySelector('#args');if(Object.keys(timeSlice.args).length>0){const argsView=document.createElement('tr-ui-a-generic-object-view');argsView.object=timeSlice.args;argsEl.parentElement.style.display='';Polymer.dom(argsEl).textContent='';Polymer.dom(argsEl).appendChild(argsView);}else{argsEl.parentElement.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:false,title:'Thread Timeslice',});'use strict';Polymer({is:'tr-ui-a-single-user-expectation-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.$.realView.addEventListener('customize-rows',this.onCustomizeRows_.bind(this));this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;},onCustomizeRows_(event){const ue=tr.b.getOnlyElement(this.selection);if(ue.rawCpuMs){event.rows.push({name:'Total CPU',value:tr.v.ui.createScalarSpan(ue.totalCpuMs,{unit:tr.b.Unit.byName.timeDurationInMs})});}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:false,title:'User Expectation',});'use strict';(function(){const EventRegistry=tr.model.EventRegistry;function getTabStripLabel(numEvents){if(numEvents===0){return'Nothing selected. Tap stuff.';}else if(numEvents===1){return'1 item selected.';}\nreturn numEvents+' items selected.';}\nfunction createSubView(subViewTypeInfo,selection){let tagName;if(selection.length===1){tagName=subViewTypeInfo.singleTagName;}else{tagName=subViewTypeInfo.multiTagName;}\nif(tagName===undefined){throw new Error('No view registered for '+\nsubViewTypeInfo.eventConstructor.name);}\nconst subView=document.createElement(tagName);let title;if(selection.length===1){title=subViewTypeInfo.singleTitle;}else{title=subViewTypeInfo.multiTitle;}\ntitle+=' ('+selection.length+')';subView.tabLabel=title;subView.selection=selection;return subView;}\nPolymer({is:'tr-ui-a-analysis-view',ready(){this.brushingStateController_=undefined;this.lastSelection_=undefined;this.tabView_=document.createElement('tr-ui-b-tab-view');this.tabView_.addEventListener('selected-tab-change',this.onSelectedSubViewChanged_.bind(this));Polymer.dom(this).appendChild(this.tabView_);},set tallMode(value){Polymer.dom(this).classList.toggle('tall-mode',value);},get tallMode(){return Polymer.dom(this).classList.contains('tall-mode');},get tabView(){return this.tabView_;},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_.bind(this));}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_.bind(this));}\nthis.onSelectionChanged_();},get selection(){return this.brushingStateController_.selection;},onSelectionChanged_(e){if(this.lastSelection_&&this.selection.equals(this.lastSelection_)){return;}\nthis.lastSelection_=this.selection;this.tallMode=false;this.tabView_.label=getTabStripLabel(this.selection.length);const eventsByBaseTypeName=this.selection.getEventsOrganizedByBaseType(true);const ASV=tr.ui.analysis.AnalysisSubView;const eventsByTagName=ASV.getEventsOrganizedByTypeInfo(this.selection);const newSubViews=[];eventsByTagName.forEach(function(events,typeInfo){newSubViews.push(createSubView(typeInfo,events));});this.tabView_.resetSubViews(newSubViews);},onSelectedSubViewChanged_(){const selectedSubView=this.tabView_.selectedSubView;if(!selectedSubView){this.tallMode=false;this.maybeChangeRelatedEvents_(undefined);return;}\nthis.tallMode=selectedSubView.requiresTallView;this.maybeChangeRelatedEvents_(selectedSubView.relatedEventsToHighlight);updateCodeSection()},maybeChangeRelatedEvents_(events){if(this.brushingStateController){this.brushingStateController.changeAnalysisViewRelatedEvents(events);}}});})();'use strict';tr.exportTo('tr.ui.b',function(){Polymer({is:'tr-ui-b-dropdown',properties:{label:{type:String,value:'',},},open(){if(this.isOpen)return;Polymer.dom(this.$.button).classList.add('open');const buttonRect=this.$.button.getBoundingClientRect();this.$.dialog.style.top=buttonRect.bottom-1+'px';this.$.dialog.style.left=buttonRect.left+'px';this.$.dialog.showModal();const dialogRect=this.$.dialog.getBoundingClientRect();if(dialogRect.right>window.innerWidth){this.$.dialog.style.left=Math.max(0,buttonRect.right-\ndialogRect.width)+'px';}},onDialogTap_(event){if(event.detail.sourceEvent.srcElement!==unwrap(this.$.dialog))return;const dialogRect=this.$.dialog.getBoundingClientRect();let inside=true;inside&=event.detail.x>=dialogRect.left;inside&=event.detail.x<dialogRect.right;inside&=event.detail.y>=dialogRect.top;inside&=event.detail.y<dialogRect.bottom;if(inside)return;event.preventDefault();this.close();},close(){if(!this.isOpen)return;this.$.dialog.close();Polymer.dom(this.$.button).classList.remove('open');this.$.button.focus();},get isOpen(){return this.$.button.classList.contains('open');}});return{};});'use strict';tr.exportTo('tr.ui.b',function(){const FaviconsByHue={blue:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAlrklEQVR4Ae2dCXwdVb3H5265yc3SpEk3ukEXCqVUBLT4Wm19oFKtaN0fKijy9CMguPBarIJsIiA8qsjTh7SllAoFeVBaEARkLV1ooXtL0yRdkqZp9u3uy/v/5uY/OZm75y659+acdnLOnP385zv/+58zZ2YMinTplIAhzsoDceaT2RKUQLwHIMFqh0V2ll0kn4XA6byv9/Vw834kX19e7keRQCzhRyk6bJJYRvD1YTXuhRdeqDj77LPPtNls400mU7HRaCzFFggEVJ/iSqhsicFgKIXUKL6bvB6fz9fj9/u7Kb4bPjaK67Xb7Q0HDhw49IUvfKEd2XUb7WpxHIYvXRgJ8AELkzRso1gmKrwkBfjG7373u5Zly5ZNKS8vn2G1Ws80m83YphPI0wnQUemQFp0IzQR9tdfrxXbI5XId6ujo+PCuu+6qXbNmjYfa9NMmngDoBmt+hIe944M53AUhwqwCvXTp0qJrr732opKSkk8XFhZ+imC+gIAryAZB0QnlJuB3OJ3Ot3p6el5/6KGHttxzzz0O6pse+GEP+3AGnKE2EhgG0tAFt99++4WkoT9tsVgW0DaH4guzAeg4+uD0eDxbaXuDNPzrt9xyy3bS8G4qB8BF6OOoKr+yDDfAB0B91VVXFf72t7+9lLT05QUFBZfQoYWtnA+ux+12v0ra/W+/+tWvXlq5cqWTBjUsYR8OgDPU8KGtjR9++OHHx4wZ8+2ioqKv0X4lbfnsWh0Ox9+bmprWzpgxYxsNFBpd1Op5bcbkM+AMtgr11q1bTz/zzDP/gy4Qv02zGtPzmehIY6MZmmq6UF176NChJ+bMmXOkD3QR9khFczY+HwEXwTbV1NTMI229FCYIXSTm43gTho8uUgMwYUir3zN16tR3qAIfbXkJej4dcIxF1dbkm44ePfqZqqqqpTT7MZf2pYsgAZqN2dTS0nLP5MmTX6EsDDrDHqFU7kTnA+Aa2BMmTDBv2bLliyNHjlxCZsgFuXMYhr6nZL7saGtru/eiiy7aUF9f76UeAfKcBz2XAUffVbgJbAuB/Y3KysoldONl5tDjkrs9oBtL+1tbWwH6UwS6/mZSzg0sVwHXTJG9e/deOGXKlOWksS/MOelncYdJo2+vra396axZs7ZTN0XTJYt7Hdq1XANc1dg0DNOqVatGLl68+DZa/3E1XTwCeOn6JLCly6ncU9+mNLnBZRLOYPAHHI5H2l5/8TdHbl3SRjUx6DkztZgrgKOfDLf5xIkT36moqLiLzJG0rAFJAomsKDp1W51S74IZnSIX8DcrXV3LlK/Oe5xqZPsckGc96LkAOPpowrZ79+5ZNK31BzkzQtKI4qxvV0dJTSLJ592kHKu7QfnPxXupFmhzbFkNeTb/tGsae/bs2Va6wr/lrLPO2izhTgLQZIuaaMp1yvTNyvNbb1HomFB1ZtrAUNYqymztGMNt2rhx44T58+evohs1n0r2+AyX8mnT4KIAvZ63lA82f1/55TX1FJ21tnk2As4zJObq6urP0BTgCmlri2TFDmcEcHQDtnlz4w+Uyz+Hm0Rsm2PuPGtcNpkomtZesGBBYXNz8210d+05CXfWsBLaEQNd5I+e8JyyYettCh0zyoBrpawyWbJFg2twv/jiixPnzZu3mhZFzQ2VqIyJRwIZ0+BiZzyeTcqebVcqS350nKKzxmTJBsDRB3WWZN++fXPpps060tpVouxkODEJDAng6GIg0KI0Hv+mcsXnN9FeVsyyDLWJwnCbadXfomnTpm2UcCcGc1blNhiqlNMmblT+9soi6hdmWKC4hlSJDiXgaBsCsNDKvysnTpz4JIWLaJMupyVgKFLGjHtSefrNK2kYFtpwjIeMs6FqWIOb7kr+Yty4cX+m2+0446XLBwkESHuPrPqz8uymX9BwhhTyoQBchZseQiigdcj30grAO+SDCPlAtW4MeLikdMQdyvqt9yp0rCl1SDR5pgFX4V64cGERvdhmRWlp6XU6scjdfJNAcfF1ysqNK5Q5C2F+ZhzyTF4AqHCPGjXKSjdwHqUHfr+ab8cyW8YzZLMo0QTgcj2jfO/S7ynNzS7KxtOI0UqkJC1TGlyFm3pccPDgwfsk3Ck5drlVidX6VWXFxvvAAG0Z0+SZAJzhtjQ2Ni6ld5D8KLeOjOxtyiRgK/6R8uy7S6m+jF14phtwmEBow3L8+PGr6FnJm1MmLFlRbkqgtOxm5am3rgITtIGNtJrJ6QQcHcdPkYUuKL9MsybLKSydlICijKxcrjz+0pdJFKzJ0wZ5ugBnuM27du2aT7ffV9JUIGCXTkqAJEAsjJ2wQlm1fj7tpPWOZzoAB9yo1/zSSy/NoLdJraMwFsdLJyUgSqBQGX/GOuX+FTMoEpCDmZRr8nQBbqIHgovnzp27mtaWlImjkmEpAU0CYGPmR1crF19cTHH4hU854KmuECcMOmo9derUAyNGjLiawtJlWAJZOQ8eTQb27keUyz7xM8qS8jnyVGpwNk0s+/fv/4qEO9oRlWkDJGArvVpZ89JXKC7lMyupApzhNm/YsGH6GWec8eCAAcgdKYFYEhhz2oPK3X+ZTtlSao+nEnDzxWRL0eNmj0q7O9bRlOkhEoA9ft6cR5WPq/Y4IE+J+ZyKSjS7m56jvK+srEzeqQw5epmNyDkbXBRPT8//Kl++6EaKSok9nqwG10yTHTt2fJpWB0q4xYMlw4lLoJhu5z/y3KepYEpMlWQBV7U3mSXFNN99H71YPfEByRJSAqIEwND4yfcpFyzgqcOkGE2mMGtvy2OPPXY9vZjnTLGfMiwlMGgJWCxnKktv/QmVT3pWZbCAM9zmxx9//IzRo0fj0STppARSJ4HykTcqN//3GVRhUqZKMoCrC6no6Zy7yTSxpW5ksiYpAZKA0WhTPj73dxRKakHWYABn7W3Zs2cPvjH5eXlApATSIoGi4i8oK56/tA9ysAr2EnKDARxlzJdddlkJ3dC5N6HWZGYpgUQlMH7SvbRWpYSKsamSUA2JAs7a2/ynP/3pOvrc9eSEWpOZpQQSlYDZPFn54a/xcDoDnpAWTxRw5DfRJ7DL6HUPP060rzK/lMCgJFA+8sfKZd/CqlRc9yXEbCKZWXtbli1b9gN6EX3loDorC0kJJCoBk6lS+ebVP6BiCU8bJgI48ppxU2fs2LHXJNpHmV9KICkJVFZdo3zsY7j5w6ZKXNXFCzhrb/PDDz/8HbK9x8ZVu8wkJZAqCZjNY5Wf3vkdqo4Bj8sWjxdw5DPRt3KKTjvtNNxhkk5KIPMSqBz1E2Xq7ITekBUP4Ky9LevWrfsGae9JmR+ZbFFKgCRgLpik3HL3NygUty0eD+Cq9h4/fnwBbTdIQUsJDKkERo+9QSkr47ubMfmNlQHaG5v56aef/ndaUDVtSAcnG5cSMFumKXc/fDGYpI35jCiXeADH3KOZ7lp+Sy6HjShHmZApCWA57dgJ3wKTtIFNQB7RxQIc6abLL7+cniEesTBiLTJBSiCTEiguWah8/isjqEkAHpXhaIk4M5BuXrp06ZfoOUtcvUonJTD0EjCaipSvff9L1JGYU4bRAEeaCjh9P+fr0jwZ+uMqe9AnAZgpo0Z/nfYY8IgcR0qA9sZmeuCBBybZbLZ/66taelIC2SEBKzF5zTJMWbMdDl5DXDTAVe29aNGib5D2jpQvpEIZISWQEQkYicm5C0QtnjDg6uwJPY72tYx0WDYiJZCoBMorGXDW4iE1hNPMOBMQb1qzZs0MmvueHlJKRmS1BCZYYZoOA2exTFd+dT/eTsuzKSFaPJwkNMDPO++8+fLiMvdA+Z8JJcqPN+9RGnocoZ0PBELjFF2cbjdYIEykvq4wWehd4APb05dBari4gaWCe/p8AT+uFOdT4j7aoJTB7oAGowFurqqqmicBV5QPmgLKX3b7lVbHANmRLLPVVSjnGT6hzFRa44dHHEqIHhQThXC8+YQiqQ66K9rnvakoD1O9DPiAJvSAo8vYjMXFxWZ6U9VFA3IP052fv+5VGntzBW4+SCYl4KtQ/L3tpCBJ0+WpC/hKLgKrvb29DDj41Q4WIvUOcaZHH310lslkGqlPHI77uQd38CgZTBbSVBVKXk+CGYwjS758/ywwS1sIz/oI1uCmmTNnflKaJ7l/OmuQG3migQ9xnvg0W2gaN/2TfYDzoLQDFw5wVYOT/T1XAq7JKacDKuS2csVg1B/unB6W2nkwaiiumEs7rMEBueZEG5zpN9Gt+QKyv+douWQg5yXAkPvtHYO78MxiCZisJXNsVRML7C3HndRN5li1w/WnNPaNDz744Ll0ZpRm8Zhk1wYhAYacjPJBlM7eIgHFUFryxZvPpR6q/Io9DavBJ0yYcJY0T0Qx5U84CDnNrtjb82dQZHqZysefRQPaRltEDc4JRlr7PS1/Ri9HopeAwWRWjLYKQiF/NLnBWgpmocGZY3XYoomCBOybaPXgNKnBVfnk7R8V8qLyvIAcrBoLiqaCXdoYcvXYMeB8KmPfSIBPUVPln7yWQD/kjEEOD7fABsBVfvtGoTIdYoOPHDnSXFhYODmHhyq7noAEgpCPUPyOTiql3QBMoIbsyGo0F04uInYdbW3RTZRbb711AnXZmh3dlr3IhAQYcpooz0RzaWmDTk1r0YLrwS4GwRaJuoMGmXrjOeecI5fHQiLDzKmQF9ILXFXIGYfc8q2jZ4JdBlyFnE9ZHolx1KhR8gJzmMHNw9Ugz8U7nrijWToyZCZFtMEBu7GoqGgiD1j6w08CKuTWUsXv6s65O56GApVdlWM+cnoNbqB3D+JzEdINYwkw5DlnkxvNYJetEdVEETU4Ioy0RLZEzoEPY7r7hh6EvIQ0eQ/FZP/sCpilPgNwKG0VbgyFdzTqCXC8ZFw6KQEAoxgLS3NoPbkR7GosIyxqcBxSgwQcYpCOJWDAOnIrKUbS5AH9M5GcKUt8OiEZcK1HbIMjQiVfAq7JRgb6JADIDQR5tpuuAaMGuGaisAbXIiTgkutwEujX5L2UnJ02uSEIOHdfZVpqcBaH9GNKIKjJQ6yAmOUylYHsa+6cprBZg3MfpA3OkpB+WAkENXmxEnDbs2+e3KABrvU9RINTih56LbMMSAlAAqomL7BRQFOU2SGYgMouOqV1jGHWIrxer50+8iofV8uOQ5a1vVA1OUEecOPtWdlhkxsUH/2saE5lmufBtVifz4erCOmkBGJKIKjJ8V0ETT/GLJPODAG/X8+uOg+O0087BaHB09kJWXd+SSCoyYuUgIceaB/qeXL/AA2uci3a4JB8QGrw/AIwE6NRNbmlcMht8oBftT40ZY2xsw2OsJogAYcopEtUAqomt5Am9w6dJg8ENPNagzysBs/2W7KJCl/mz4wE8OYsg3loNLnKbNAG1+DGqFmDI1LdpA2eGRjytRX19XAEecDr6kMqcyM1BNTrR41ltCxqcAYc6yOlkxIYtASCmhyP9WZ2doVmUXhtL1hWHWtw3lccDkcb1H22L6zROiwDWSmBoCa39mnyDHSRmPV7nG36lliDs1r3t7e31+kzyX0pgcFIQNPkGbrj6be3gV287Z95Vk0U7MCpkdXV1bXyIjMoEPk3eQmokJsKglOIAD1tm6J4Wo7UMsd9PQ+wBse+CvgzzzwjAe+TjvRSIwGGnB4qS02F4WohE8W58zk94CGzKP6XX3652+VyNdN6lFHh6pFxUgKDkQAgDygWxeDzDKZ47DJeV3PvvtfpVQChJgoKs80C+8Xf09NzRJopEIt0qZQAIFfou0GpXoUIVv0uxxHqq8ov+cxzyDShmsFut9elcmCyLikBloAKuZEm71Jsi/vdKrMi4GqTbIMz8cjgw0yK1OB8SKSfagkMgDwVlZMGDzg6oJR9tIFh5lmzwdEMR/pPnjxZiwjppATSJQHVJg/QRaffm3wT9Gvg624GswPgRsXhNLh//fr1u2nRFYCXTkogbRJQbybCXEl2diXgCzh2bthNFQHwAZAz4BgEgEaijz4C29zZ2VkjzRSIRbp0SiAIOT7MgCnExDeyThS/s7uma+vaZqpANFHUbusBZ8i9ra2tWyXgqozknzRLQIMcF56JOiLc19O6lYrB1hmgvVGVCDj2VQ1Ovq+mpmaLBBwikS4TElAhx7vJE55dIWhb6rZQH6G9WYNrXRYBh/ZmDe5buXLlVj85LacMSAmkWQIa5Im0Q4x2bXkUGpzhZo7VWsIBrp4JGzZsaCc7/KDU4olIW+ZNVgL9kMe2x4P2d+dB+86X8NFP1uARAUffWIPDnvHSdOE2CTjEIl0mJRCEPA57nAj3dzXj468qr+SzDa51V9TgiGTAcTZ4yQ7fLAHXZCUDGZSABnlUm5wgba3dDFZpE00Uraf6Bx5YveNM8C5fvnzbJZdc4iwuLqYH7Yavq+ytURq70rRIKIvEGlmZAYswDjZCRBchLUJ0ULeGqYzaQL8AfEj/PA5nz8u/Zw3O2ntAC+EAR0bVnnn33Xe7Gxsb35gyZcqlxhR9mGj/oU7liWfrlPZOd5jRZGfUbK9bmUnPGIYIeEB3B8i1PyUKBHTo+vPFEYrcfpR6orYfR6NZmiUQ8Cs9XU1vbDiyEysI2f5myLVe6wFHAqSlanDyPTt37nz+9NNPTxngv/3DHqW5lV4tkGPO67ErPi+9pgw/mYAGfjyO8zJo+vL6dH2dmc6vb1/fP31/9Pn1+7HK69P15fXt9eUP+LxKR/OB5yk7flrFOfABNehtcCSKgHuvu+66t2n5bGtk7TGgvpg7uQg3BmW22BSTGa8pIwehx+s4L3wxzOXFOM4j+sjHecSwmEcMi3nEsJhHDIt5ENY75IXjMhxWI+P4E6u8Pp3bYV/fHsWDRb/f1Vq3b9XblBzxAhNFowEOte+hlYWO+vr6f6QKcDSaq06F3FQYdeUEow9fDGfLmMU+ieFI/RPziOFU5Y9UT/T4gOJ2tP/D7e7Bmz+hwcNeYKKOcIAjHiaKZqa8+uqr6+l9KYgf9g6QG/sgxwHXbxAQgyCG9fmGal/skxiO1B8xjxhOVf5I9USLV8j+7mjd/Rz1RzRPwGuIiwQ4zBScFaDas3Tp0r0dHR2HpRYPyo8hD+7Jv5mUABj0eeyHjx58Yh+1y4CDVTAb4qIBzpCjEjfNiW+Qd+775dcPeTRdI9NCf+OSlQl98M3RvAFM0sbmCVhNCHAcSah8TYuvXr16PT2MjAql65OAapPjXXzRnP4iCnk5Llw5ToMvhsPlzYU4cQxiOFLfxTxiuC+/3+/xNB9/cz3tito7rHmCIpE0ONJwRrAd7l61alXjkSNHXpBaHKLpd5hZMfELJ3FA9Buy8oESw/p8vC/mEcOcnmu+OAYxHGkcYh4xTPlx38DtaHnhZP3rjZQEDR5xehBF4eIFXDVT1q5d+whp8YhnS7DK4fdXhdyEd/FJl04J+ANef3PDpkeoDTZPkgIcfR2gxe+7776aY8eO/VNq8dDD2A95sjamLE8/eSTggRsuLj2Otn821D5fQ4lxaW8cpWgaHOnQ1pqZQmHXU0899VePxxPWoEeB4ewYchwadhzmw4V4jhPDnJ6oL9YhhuOtRywjhuMtr88n1iGGOZ8YJ4Y5PZKv+H2BthOb/0pl8F5mEfCoFkUswNEHVICLTdVMufPOOw+QFn9TanGIJtTBHjeSucIHCjkQZsfhSOmcL14/2fqSLa/vZ6z6YqXr68M+1p24nK1vHq3++wHaZfMETEaFG2XjARzaWgOcwq4XX3zxYdLiKC9dGAkw5Pqf2czso0OMkRhGXG5u9N5vpb3p/YdpAKy9AR+YjGlJxAs4a3GcPa4lS5bsOnHixGapxUkaEVwQcnqrasYdw80wowMcl/HOJN0gtLfb1bH5yMHHd1FlDDhr75QAjk6yFsdVKyB3bty48UE5owLRRHYa5JgSY8dhniZDPMeJYU5P1BfrEMOR6hHzIBzLcV8j1aePR31cRgxzPjFODPel+xWvv6N5x4OUhCWoYA8MxqW9KV9cJgryAXBocQbcdeONN+6kd4k/J9eoQDyRnQq5se+Fk3yg2UcxDvcdULUmjotcbeQULhtvffr8XC6Sj5a5TORe9KdwXq5PXz5KOn0WUHH2nnyudt/qnVSMtXfMqcH+xuMHHGVYi6sXm2jwpptuWk4PJrfLNSqiSEPDGuShSTImggTUNSdee/uxA2uXUxaGO27bm6uNxwbnvKzF8fOABp2vvfZa89atW/8oLzhZRJF9zVyJnEWmCBKgb14qPZ01f2xv3o03VsE8AXNx295cVSKAo4yoxVXIFy9e/Aw91rZLXnCySCP7Jpo+NNLnPMQvHXAYfjz/UDuXEcNcVowTw5yeal9sQwxHakfMI4bF/HhiyuPq2LV/293PUB6GO2HtjfoHA7g4o4LGnWvWrLnL6XT6pKkCkUZ3gNxAL4HnA4rcCMfrOG+k8rHS420n3nyJthcrPxgK+D2+5oa37qI+qHyRj4vLhLU3xpAo4CjDgOOMUrX4HXfcse/AgQPr6I20SJcuhgQYcvVijS++pN938RpQHD0n1h378Cms99Zrb7CXkBsM4GiAIVenDGnfccMNNzzU0tLSKE2V+OSvmiuYXZFOkwDmvD2e7saa/X99iCLxOBoAF7W3ljfewGABZ1ucpw2d7733XusTTzxxE33+xCNNlfjED3vcqELON2WGr0+WCS03cXtaTmy6qbutppUkyHAnNO+tl/xgAUc9DLmmxWnacAeB/hDdANK3I/cjSCAIebi3d0QokKfRZHcrvZ01D9XtW72DhqjX3mBtUC5ZwGGqaFqcws5LL7109dGjR9+WN4DiPx7DHXLc0HE5Wt7es/m21WCob4PiTOimTjiJJwM46gPg2PiCE2ee/Wc/+9lvyB5vkvY4SSNO12+uxFkgT7LB7vZ6uptq9678DQ3JThsYggkAppgvCg7OJQs4WkUnMH2CMw6dc9ANoJNPPvnkL8ke90p7nCQSpzPS9CFscryHbzhsEEvA7/a2NLzzy46WXSdpV+WH/KQuLFEvu1QAzrY4mypqJ+lVE9u3bdv2Z9jjEnIWd2wfkBsM+W+T9813093K6j/X7l+9nSQjwp3UhaUo5VQAjvoY8gGmysKFC1fSgqxX3G6ckNLFKwEVcu3rY/k5swK729Hb9Mqed29fSXLRmyawCAZ9YSnKOVWAo06GHDTjQgGdti9atOjXdNH5noScpJGAU00VI74+ln+OXv2gOJ0t7x3cduevaXQqJ+TztGDK4IbkUg24aI+rkNNXIrquuOKKG+kBiYNyURZEHr/LR8j99OFXt6v94KH377/R4WjtImkAcBFuMJQS7Q1Jp0NFoHNiBw0Eube2tnbT/PnzFzz3UtMIA76mJV1cEjAYcIhInLgTkuMOZonH3XW8dvdff9zZur+JhtNLGwMO8zal2hviSgfgqBduAOhki7u6u7u3NHWO+yxNidkk5EEhxfM3CHmfSHN0zQq98Fjxunta6w+v+9GphneO0Wj0cKdUc7Nc0wW4qG608AcffNBrMlvfLx0x5XMGo7lAQs6HIbbfLytNnLELZUkOrO2mF2b2nDz64rX1hzccpG7p4YbmBuApd+kCHB3lI8G+2vnOlr0dBYVV+4tKxl1MswWW/gOX8rHlXYUsq+C8ChaeZv8/vOqYvo5hb2l48+d1+9fiNrwId8rmuyMd7HQCLrYJyDXQ20/tOGUxF+6wlU1aYDQWFPGBEwvIcHgJ9MtKE2f4jFkQq9rcnu72xrp//OTIgccx181wY8477XBDBJkGXAO9o2VPm+JzbioZMXWewVRQ2n/g0C3poklgoKyyc57cTxeUXnfHCVrXfU1D7fr9NJ4e2gA4w530OpNoMuK0TAGO9ljlaJB3tVd3u1yNb5ZVzPy40Wyt7L+Y4u5JP5IE+iFnsUbKmfl4zHN7nG3VdXtWXNvU8GYd9QBgZxxujDyTgKM9OAZc9e1dDY6ejoOvl1fNnm0yFY1TaApR/QhoMK/8G0UCGuQGEmUWKHK83jhA89z0gvoPDu1cfn1b864T1H29WZIRzc1iyzTgA+CmTqj7Lkeru6156xsVoy+cQk+fn44DJyHnQxTd1yBXRRk9bzpTsSrQ7/MoLvvJN/a/d9uSno5jLdQew40bOVghmFG4Md5MA4424UJA97rtvub6f71VPupcq9lSNttgNBLj8oZQUFzR/w6UU+ZVOeD2eV2B3u7ax/a9e/PvXI7OTuqxCDcuKDMON6Q2VICjbYacJ/jpHYte/8mjr35gtVUdLCwaPYfmyunDlFKbQ1ixXBByiDRzTl0RGPBiPXd7S8Pbyw68d+/TdAz5YlK8QzkkcEMSQwk42mfI4Wugt53c3uB0nHyttHz6THo4dywOnjRZIK7ojiHPxOw4lg4EYJI4mnfW7V95ff3h9bupd9DarLlhkohTgZk9+/pElS2AA27eVOjt3fW9p4699kr5qFkmc0HZR6TJ0nfEYngDzZUYmQeZrN6ZhEnSeXj1nk2/vr2nsw5vn4LGZrj1i6cG2VLyxYYacIyAz2zW4hro9HPnO3nstZ2FhZX7Cm1j5tCDAEWkyqU2j3HctV+7FJvjWE+CWRKvt6utpeGtX+7f/vv/6zNJGG7McfPFZNpuv8cY/oDkbAAcHRIhF0FXw21N2084HfWv2UonjaHPhEwJaikJ+oAjqdvRINfFD2ZXfSILF5I+Fz2kUP/akT0rlhyv2bCX6mKNDcD1N3CgqIbc4RzPJof+YOoEJx7eioNPl+FDlHSxqdgQnj77h5+oGPeJXxQUlE3Cg7qZ+EmmdnPWYYYjGRec/nMrbnfnsbaT2+6v2f3wZqoPJghDzVOAvNwVDbLCSqbplJTNNsAxKP5hBeR4OBGfSQDkDHpRYWFFyYzzf/Gd4oqpV5JGt+IZxlRqLGorr1zwmdjEmOMZEp/X4erpqFld/f4Djzud7ZghgabGBrDZ1sYsCa/lTqwhKphOly0min6MLCT42KAV2Kbzeb1Ob9Pxf+32utteLSqZOJ4++jRJmi16Efbv95/8rDsi++pzFX3mCM1kvXPkw7X/Vbd31eskc3H6D9pbhBvHJ7mfiv7upjSUjRpcHCD6xyYLa3PW6DBbVM0+4/yffKq88iPXmq0jJuOdf/J2vyjC/nBQk/fviyHRzva6u462N+96qHrng29RHtbUrLUx9cc3bljpsEISq8yKcLYDzkIC5Aw6bHNAzva5CrnZbC6c/pHrLykbefYVZmv5NAk6iy66PwBsV8fhrrYDj1Xv+uOr9GYyBpt9ntcWbe2s1NriiHMFcPSZtTlAhzZn0AE4ww7fOuP86z45ovLcKyzWkecEL0RN0kYnwYguaGP78MJLetl8277O1j2Pffj+n96mPAAZG8BmHxobYPMdSYCdtVqb+qa5XAKcO40+49qBQYc2Z42uAk77qj919tUfqxh1wZXWosrz6cEKslxQbPhOLwZNFKz4I7D9broL2fp+e/OO1TW7H3mPBMNgi75ojgBqvpCkYG64XAQckkW/sYlmCzQ6Ty2KoBeccc53Z5eP/uiXrIWjFpjNRTaD+no0FM1/2DWo6cIRb3D1eh12l7P5jY5TH6yv27cGt9cBsQg1wtDWvIl2dk5obeq75nIVcB4AQ86gs+nCoLNmV7V8YcnY4ikzvr3ANuKMz1mLqi4k0E3q+7nVu6OoIn+cOv9NUyJ4+ACfBKG3t263d9a9XPvh2jecPSdxg4a1M4BmyBlqnvaD1s4ZcyTc0ct1wHlMetBhi7CNziYM+6qmrzrtwtHjJi/6rK1k/OfoiblpAJ1hz0XNzpoai6AANTafu/uwvafh5cajG//ZcmL7KZIJA8xwiz7SoK1ZY+c02DQO1eUL4OJ4grZH0E6HRmetDsAZetE3T5q6eHr5mPPmWQurzjcXls8i0K20VFcx4iWYeA9JFpoyA4CmJatYI0JQu7zOjr0uZ8v7HU073zlW82w1dR7aGPAC5nA+0llj8z2HnDNFaAxhXb4BzoMMUtlvo0Ojs1bXA69qdEqHby4sLLeOm7p4Vln5tAsshRXnFxSMOJseirbgAhXPjAZvmrDYgn7/jRRuPjV+EGLUxbzRBSKWqdJ7RnChGKBPftAt9AMeZ/v7XR2HdzTWPLvX6eyAycFQA2jeGHBOY23NGhuNcEMUzA/HRyo/RhM6ChF0aHbRVhe1O0POceybiovH28ZNW/SR4pJJ55oLiieZzLZJJottPFY2BoHHWnWAT1Wr0owkUn18JJYoHv9xUQiQNd/roJfnNPi89mNed++x3p5jexoPb9zV29uAu4qAlDUx+ww2fI6Dz0CL9nWkzlD23HZ6qef2aKL3HmNl84VBZ83OQEfyOR98lDWOnjB3dFnFOZOttjGTLIWlk81m20RaMlBpUEw2Ay2QoRPARg1SffQXF7F9vtpFaOEgxbSrhuhDAV57gBZ+BBSf3e9ztXq99uMeZ/dRl73pWFf7vqOn6jfBhmYoRe0rwhsuLOZlu5p9tTv5/Gc4Ac7HEWMWN4ZW9AE6Q83Q8z6fHKKvQq+r10DmjrmoZEKx1Ta6yGItK7aYy7AiUvF4u+weV1evy37K4eip7yWzAmBCi4obwwyfta7oI8xAM8TYF/NwWbHevNXWNPYQNxwBF4Uggo4wg8q+CL0IuAg350Ec18H1oi0xjH3RMXiI4zBrVwZcDyxDy1DzPudnn+tjX2x32IQhfOmCEmBZMJDwGXQxLMYBbqSxz5AjDg4+b7wPH9DBMXz6fUCKOEAs+gwv+0gTw9jHBsd+cG+Y/uUDMUyHH3XYLBsGNJIvQq3PgwbEesQGGUDRR1i/Mez6eHEf9WJfOp0EWPi6aLkbQQIsLwYZ2aLFiekRqhwAJkPK8KJMtLhIdcr4PgnwwZECSU4Cejnq91G7Po7BFVvWx+n3xbwyHIcE/h9VLWRYHWXC/QAAAABJRU5ErkJggg==',green:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAltklEQVR4Ae2dCXQcxZnHR3NoNDp8SD7kU7bxFXCchBhMYoLNmhCcOBBykGw2gYTkPV6AhGXD2sTZJQcJG3jsgw3hscuCsTEsOAQW1sbY+MAHxpYtHzI+5EOy5UMStnWPZkZzab9/j75WTWt6NKO5Z6r82lVdXV1d9e/ffPq6uro7zyBDIhXIi7DyngjLyWJRKhDpCYiy2pwoztrpxSwCb+d1bayFm9f1Yu3+cj2MAgOJH2bXnNnEGiHWppW8d999d/inPvWp6YWFheNMJlOR0WgswdLT06PElFdM+xbn5eWVQDXK76TI7vP57H6/v5PyOxFjobwuh8Nx4dixYye+9rWvtaK4ZqFVNY/TiGUIoQCfsBCbcjaLNVHgJRUQG3/4wx9ali1bNmXYsGEzrFbrdLPZjGUagTyNAB2ZCLXoh3CJoD/p9XqxnOju7j7R1tZ2/LHHHqtbtWqVh47pp0X8AaAZbPmRzvnAJzPXhRBhVoBeunSp7b777ruuuLj4xoKCghsI5s8TcPnpIBT9oNwE/D6Xy7Xdbrd/8Oyzz+5+/PHHndQ2LfA5D3suA85QGwmMPLLQ+b///e/nkIW+0WKxLKBlLuUXpAPQEbTB5fF4KmnZShb+g0ceeaSKLLyb9gPgIvQRVJVdRXIN8CCo77777oI//vGPt5CV/n5+fv5NdGrhK2dDsLvd7k1k3f/n17/+9frly5e7qFM5CXsuAM5QI4a1Nh4/fvza0aNH/4PNZvs2rZfRks2h2el0/u2TTz55dcaMGXuoo7DoolXPajcmmwFnsBWoKysrJ02fPv3v6QLxH2hUY1o2E63XNxqhOUkXqq+eOHHitblz557pBV2EXW/XjM3PRsBFsE21tbXXk7VeCheELhKzsb9Rw0cXqT1wYciqP37FFVd8SBX4aMlK0LPphKMvirWm2FRfX//lESNGLKXRj3m0LoOOAjQas/Py5cuPV1RUbKQiDDrDrrNX5mRnA+Aq2OPHjzfv3r3766WlpUvIDfl85pyG1LeU3Jd9LS0tT1x33XVrzp8/76UWAfKMBz2TAUfbFbgJbAuBfUdZWdkSuvFyZepxydwW0I2lo83NzQD9rwS69mZSxnUsUwFXXZHDhw/PmTJlytNksedknPpp3GCy6FV1dXX/OGvWrCpqpui6pHGr+zct0wBXLDZ1w/TSSy+V3n777b+j+R8/pYtHAC9DrwIO9xHD5c5XDF5fS0ya0MWo3+nwvrBx47nfLLlvKypj0DNmaDFTAEc7GW5zQ0PDD4YPH/4YuSMJmQMSExVpsPPxhjsMHt/FuLWkp8dwqb3dt2zhnD2vUKXsnwPytAc9EwBHG01YDh06NIuGtf5DjoyQGmHC4XMLwmwd/Caft2fnmXr3A3d8Zf9hqgXWHEtaQ57Of9pViz179mwrXeE/MnPmzF0S7sEDGuueJnPevCuusO76sPq6R2bPHm2l+sy0gKG0NZTp2jCG27R27drx8+fPf4lu1NwQ6wnKlf0TZcFF/bwe//Z9uxw/vvfuj89Tftr65ukIOI+QmE+ePPllGgJ8UfraIloDp5MBOFoB37zxQvdPvr5gP24SsW+OsfO0CenkoqhWe8GCBQWXLl36Hd1de1vCnTas9GtIXp5h5LgJ1re3H7z2dwsWjMTUYlwrpZXLki4WXIV73bp1E66//vqVNClK3mLvh1RkGcmy4GJr3B7/zkOVXXfd86PD5yg/bVyWdAAcbVBGSY4cOTKPbtqsJqs9QhRPpqNTIBWAo4U0l+1yw1nXd29duH8nrabFKEuqXRSG20yz/hZPnTp1rYQ7OpjTqTRNUhwxtsK69t3tcxZTuzDCAsOVUiOaSsBxbAhgoZl/d02YMOF1SttokSGDFSCabeVj819/v3LOXdQNCy04xynjLFUHVuGmu5K/HDNmzHN0ux2/eBmyQoEe84gRluc2V13zS+pOSiFPBeAK3PQQQj7NQ36CZgA+Kh9EyAqqgzpBQ4h5w4aZH6URlidwrmljSix5sgFX4F60aJGNXmzzYklJyf1BqsiVrFOgqNh0/5ubJr24aFEp3M+kQ57MCwAF7pEjR1rpBs4KeuD3W1l3NtOkQ6kaRQnXfZfL/+Y3bqz7Ed3f6KZyPIwYbpe4bEuWBVfgphbn19TUPCnhjsu5y6hKCgqM33pr4+QnwQAtSbPkyQCc4bY0NjYupXeQ3JNRZ0Y2Nm4KFBab7tlSdc1SqjBpF56JBhwuEI5hOXfu3N30rOS/xk0tWVFGKjB0mPlfN1bOuRtM0AI2EuomJxJwNBx/iix0QfkNupJ+mtIySAUMpSPyn16z5fPfICnYkicM8kQBznCbq6ur59Pt9+U0FAjYZZAK4J6+aczE/BffWn/1fJIjoXc8EwE44Ea95vXr18+gt0mtpjQmx8sgFVAVIEgKJkzJX/2fq66aQZmAHMzE3ZInCnATPRBcNG/evJU0t2SI2iuZkAoIChiNeUM+O6d45cLbxxVRNv7Cxx3weFeIHwwaar148eJTQ4cO/SmlZUiyAuk4Dh5Ogs5O3wsLPrfnQSoT9zHyeFpw/FhQn+Xo0aPflHCHO6Vym6hASYnpp29v+dw3wQ4tYChuhjdegDPc5jVr1kybPHnyM2IHZFoqMJAC48Zbn/nzi1dNo3Jx9cfjCbh54cKFRfS42Qrpdw90OuV2rQLwx6/9QvGKhQsVfxyQx8WKx6MS/EgUv5vmGTw5ZMgQeadSe/aSvJ5pPrgoj73D91/zr97zEOXFxR+P1YKrrsm+fftupNmBEm7xbMl01AoUlRjvWb1u9o20Y1xclVgBV6w3uSVFNN79JL3LLuoOyR2kAqICYKhisu3JBQvG8tBhTIzGsjNbb8vLL7/8C3oxz3SxoTItFRisAhaLcfqyP435Oe0f86jKYAFnuM2vvPLK5FGjRuHRJBmkAnFToLTM8tCfnpk5mSqMyVWJBXBcWFro6Zw/0Z+Vwrj1TFYkFSAFwNQX5w/5N0rGNCFrMICz9bZ8/PHH+MbkV+UZkQokQoGiQtPX/rb+M7f0Qg5WwV5UYTCAYx/zrbfeWkw3dJ6I6miysFQgSgXGV9ieWHjrqGLajV2VqGqIFnC23ua//OUv99PnriuiOposLBWIUgGLJa9iya8q8HA6Ax6VFY8WcJQ30Sewh9DrHn4WZVtlcanAoBQYXmr62fe+NwGzUnHdFxWz0RRm621ZtmzZT+hF9GWDaq3cSSoQpQImU17ZnfeO+gntFvWwYTSAo6wZN3XKy8vvjbKNsrhUICYFykZa7r1mwUjc/GFXJaL6IgWcrbf5+eef/wH53uUR1S4LSQXipIDZklf+m99N/AFVx4BH5ItHCjjKmehbObaxY8fiDpMMUoGkK0BW/OezZxdH9YasSABn621ZvXr1HWS9Jya9Z/KAUgFSID8/b+KjT02/g5IR++KRAK5Y73HjxuXT8oBUWiqQSgVGlVseoCnZfHdzQH4HKgDrjcX8xhtv/B1NqJqays7JY0sFLPl5U59bVbEQTNLCfOoKEwngGHs0013L78npsLo6yg1JUgAMjhlb8D0wSQvYBOS6YSDAsd30/e9/n54hHrpItxa5QSqQRAWKh5gWffWbY4bSIQF4WIbDbcQvA9vNS5cuvY2es8TVqwxSgZQrYDQabHffU34bNWTAIcNwgGObAjh9P+c70j1J+XmVDehVACyOLs//Dq0y4Loc621g59301FNPTSwsLPyiVFcqkE4K2ArzvvjPv52GIWv2w0P64uEAV6z34sWL76BfjF65dOqzbEsOKQAm5/9diWjFowZcGT2hx9G+nUO6ya5mkAL0WBsDzla8X+tDWWa+uDStWrVqBo19T+u3l8xIawUsplFp3b54NY7mik/703/MxNtpeTSlnxWHk64NKuCf/exn58uLS6086b8+3Pqg4WDNHw0O5yf9Gkuf9+sX6N3twXmaVWwMkUWv+Q7eLVShHk1mv310Kg9Vrt/h/PStQoN/PlVxhBYYa7AbVCwc4PQxzxHXS8ANhkZ7jaGq8W8Gh6ed9MuM4C2ebrD7Jhp6CIJsDr481/UGw4nnqY8MeFB3tYDjF6BY8KKiIjO9qeq6oNI5urL+1L8bOt2XM673PrPf4OjwZDXk/p6e68BqV1cXAx5kxUP54MgzrVixYpbJZCrNuLOagAZnItyQwWQ2GgppXlKeEec8OwON75V+/YErZlHv2A8P6qieBTddeeWVX5LuSZBWGbnCkDs7PQa/PyO7EL7RZI5HTCj+EhXaTwt7IKpfprXgintCBU3kf8+TgIfXNlO2AnJbicVAt7izLoBR2xDLPOoYW/CgP1eiBWf6TXRrPp/877lZp0YOd4ghhyUPNUKRydJYbaa5IyYU5l8+53BRP5hjxYprf9NYNz7zzDOfpl9GSSZ3Wra9vwIMORm9rArUn5Kbfzzt09QphV+xcyEt+Pjx42dK90SUKXvSDDksedYEwnrYyIKZ1J89tOhacN5gpLnfU7Om87Ij/RRgyLPJiFlsZjALC84cK/1GBgdswLqJZg9OzabOcwdl3KcAIC8oNuMtrn2ZGZpCHyxW0xXU/H4Xmgw49xLrRgJ8Sob2VTY7CgVUyLNgnLwXcIXfXgkUpvv54KWlpeaCgoKKKHSSRTNYAQXyIrPB1eXVzOLIrE5ZrcaK0lKbuaXFCbDZYCsuCfcEmcbf/va34ym2cqaMs18BhjyTZ/3TmKB17ncngV1Y8X6AM/XGq65SPsaZ/WdV9jBIAUBuLSSfnPFgIjIoHj2pCFO7xR6oFpy7YRw5cqS8wAw69bmz0gc5cMiwQE0uKrH0G0kRfXDFQbfZbBMyrGuyuXFUQIGc3p/Q7fSRT65O6YjjERJXVX6hCewqHPNRsILAFjyP3j2Iz0XIkMMKBCA3ZdwQosloBLsqyziFogXHBiNNkS3OhrFRdE6GwSsAyPPJkrvJkmeCHVeYNeUBcPbBlc7ziko9AY6XjMsgFVDmkysXnqAjAwIN54NdlWWkRQuOLuRJwCGDDKyA0ZRnsNrM5JOn/zi5yZzHgHPz1VEUZCjkS8BVbWSiVwGGXCEkjVUxGlXA1b85bMHVDAl4Gp/BFDaNIXe7vGk7uEL+iOheK0zzKAqkkxY8hQBlwqEBeX4BJmilZ2uNRuX6UeGYW8gWnNelD85KyDikAgy5uzv9xslNRvUiU217PwtOW7TQq4VlQioABRTIrTQzNc1MeU9eD9gNacHVPzper9dBH3mVj6tJlsMqwJB7yJKnyzg5vTXAITRaYZrHwdV8n8/Xpa7IhFQgjAKAnOZhp83gSo/foGVXGQfHD1D9EcKCh+mT3CQVCFKAIfe6yZKrFAUVSdqK39cjsqtwLfrgaEiPtOBJOx9ZcyBAbs7H3JUUd8mnWPCgn5l4QalskICn+CRl6OEVyMld8brp9VkpMuU9fj+7KCrkIS14v9fpZqjostnJVYDuJJIlJ6RSYMrBrK9HAVyFG71nC45MZZE+eHKhyLajMeQ+jz/phtzvy4MPrrIMbUULzoDbs0102Z/kKgDITRZj0g253+8Huwy40mm24KoCTqezBeZezglXJZGJQSgAyA0EOSx5MgLcfp+7p0V7LLbgTL2/tbX1tLaQXJcKDEYBtuSD2Xcw+zg6u8EuflHMs+KiYAVByTx58mSdvMgMCCL/j12BpEFO9Laed9Yxx70t72ELjnUF8DfffFMC3quOjOKjAEOeyMEVfOyqevtFLeD9RlH8GzZs6Ozu7r5E81FGxqd7shapAI1mwCen5zz93sT45H5Pz6UTey52ktb9XBTor1jv3o1+u91+RropkEWGeCoAyI0EebyHV8Bqt8t7htoKuEMCjn4AcqWAw+E4jQwZpALxVkCBnG7tK5DDZ4nT4nb5wawIuNJ09sFFC+7DSIq04PE+tbI+VoAhj5dPjiHCbrsXgNNTGMEWXBwHVyFvamqq48bIWCqQCAUAeQ8ZcJoBGHP1+KF0NHvALCw4c6zUG8qC+995551DNOkq9iPH3HRZQTYrgJuJmKQVa6CvOffUfNhwiOoRXRSFXwYcx0AGCvjoI7CX2tvba6WbAllkSKQCsUKuXGB2eWsr37twidopuihKs7WAM+Te5ubmSgl4Ik+trJsVYMgHMz0E/ndXm6eS6qI3E+m7KHwsxYLTiq+2tna3BJxlkXGiFQDceDe5EiMd6UIPzLU0OneD2d4FDKtBz4L7li9fXkmzs4IKq3vJhFQgAQow5NFUTYT696w5DwsuuieK/416QgGu/BLWrFnTSn54jbTi0cgty8aqgAo5rj0HWHB7vtvhqTnyUVMrlWYLDrhDAo62YQOsNvwZLw0X7pGAkxIyJFWBgHsy8CHhf9tb3Pj4q8IrxWBXhRs1iBYc6ww4fg1e8sN3ScAhiwzJVoAhJ1dc/2YnNaq5oWsXRQBcdFHU5oo3epAJwBly79NPP73npptuchUVFRWoe+RgwnXRZmh3YBQqu4OuMQuyiX0a6GQHCuhs1D1GX7VBKVhp7APgtfvSS4dcm1bUsQVn6x105FCAo6Diz3z00UedjY2NW6dMmXKL0ag19kHtiHil9nyj4b2dVYaOLvEVFhHvnpKCXs9XDUa3m44dpF1QW7TiB23UWdHdR+cw8DlDBlCgE/S30A5h9tOpLubsaG/r6JWnJ+gNrtbmrRdO7sYMQva/GXK1nVrAsQGaoCDMvufgwYP/N2nSpLgB/sJb6w0tHWhTZgV3t4teidBNjYbkkEhPem2/uCyjpt1fu127f7LLa4+vbZ+2Pdry2vWB9tdu1+6vPV6gvN/vMzTUHv8/Ku2hBaz2gxs1hTLLqIEB995///07aPpss661QS1RhEyEG93LtxbQKxH4+7gQPdLAZRGLad5fzOMyYoxyXEZMi2XEtFhGTItlxLRYBmltQFkE3ofTSmYE/w20v3Y7H4dj7fECrorP42mu2rZhB23VvcDEnuEAh9n30MxC5/nz59+LF+A4aKaGAOT5wbxpO6M9X9jOedqyqVjntujxo21Tostrjxfheldnx3tuu91JxWHBQ15goqpQgCMfFpytuGfTpk3v0PtSkJ/zAZBbLL2QMyRiDIUYCjEtlkllWmyTmNZrk1hGTMervF49YfL99JbNpvrat6k5onsCXvsFPcDhpuBXofjhS5cuPdzW1nZKWvGAfhaGvJ+cMiPRCoBBj8t16tCOTUfoWAw4WAWz/UKoi0wUQmGGHJW4aUx8TVlZ2YP0DR9sz/kAyBG8HsgjQ7IUAOD2jvY1dDwMa0F8hjsk4HoWHO2FyVet+MqVK9+hh5Hl2YQyvQGQm/PJXQkXcKcCge9YcFrJDPFftOVDVJFWWdH2Z4Dy9PpjT92R/e9QH8EiPAwwGtI9oXxdHxzb8ItgP9z90ksvNZ45c+ZdOf8K0vQFC42sKJAzwNoYRfmkiWltOV4Xy4hp3p5psdgHMa3XD7GMmKbyALKrs/3dMx8faKQkLDgAB6MhrTflRww4fi3uV1999QWy4rq/FlSYi0GB3GLJxa4ntc9+r9d/5tjHL9BB2T2JCXA0PsiKP/nkk7Vnz559X1rx/ueVIQ9z8a+OJMsygYGmaHTAXVdnZ+f7x/bsqO0FfEC4cZbC+eDYDmutuimU7v7rX//63x6PR/dPAnbK1QDITcoQYq/fDSHwp5hjMR3I7b9d70+3Xj7XPdj6Yt1f266B6htou7a+3nW6c9lTf/Lwf9PuuJ0suidhPYqBAEdzUAEcecVN+cMf/nCMrPg2acUhTf9goYtOk5ncFT5RKII0B07rbedykcax1hfr/tp2DlTfQNu19dE6Rk4c9o5th3d+cIxW2T0Je3HJ1UQCOKy1Cjilu9etW/c8WXGuQ8YaBVTINflydXAK+H007+TUyedpb7begA9MDuhJRAo4W3H8erqXLFlS3dDQsEtacVJDJ0jIdYSJMhvW29nVuevAtvXVtCsDztY7LoCjSWzF4dgDctfatWufkSMqkEY/AHIzja5gLjMHTgcm9AfyOQ9lOM3bo43FOsS0Xj1iGaQHCtG2D/XxPmKa2yPmiWne3uP3+Zvqjj9D21y0gD0wGJH1pnIDXmSiDAIAD7rYfOihhw7Su8TflnNUFH10/zPTRafJbFZOMp9ojrETp/mEinm6lYbZEG192vLcDr042vZp69fuH247psR2tDS/XbVl/UHaj613RKMnLFEkLgqXZSuuXGzigA8//PDT9GByK/6MyKCvAEOuX0Ju0SoAprzd3a3VO9Y/TdsY7oh9b64vWsDZF8cBXZs3b75UWVn5Z3nByXLqxwHI5c0gfYWCt8B6Nzde+HPj6dN4VhDuCZiL2Pfm2qIBHPuIVlyB/Pbbb3+THmurlhecLKl+DH9cHULkYuyfI45kwX68j5jmfcU8Mc3b4x2LxxDTescRy4hpoTwezXN1dVVvfeuVN6kIwx219Ub1gwGcrbhysYkGrFq16jGXy+WTrgokDR8UyE00iZNPKIojHWngsnr7D7Q90uNEWi7a4w1QHgz5vF5f3ZEDj1ETADdfXEZtvdGFaAHHPgw4flGKFX/00UePHDt2bDW9kRbbZRhAAYYcWMslWAMDPcxgb768mm7qYL631nqDvajCYADHARhytuLOBx544NnLly83SlclMv0BuZFGV2ToU6CH4HY7nI37Nr/3LOXicTSt9e4rHGFqsICzL66Oi+/du7f5tddee5g+f+KRrkpk6pvplr4CObsbORwDKBpy9pyuqX74YkN9M60y3FGNe2uVHyzgqIchV604DRvuI9CfpRtA2uPIdR0FFMjlU1L0pQcvjZo0PHvggw37SCqt9QZrgwqxAg5XRbXilHbdcsstK+vr63fIG0CRnw+GPFf9cbpbaejqaNuxZfXylWCod+G7lmAsJYDjDOLgWPiCE788x4MPPvgb8sc/kf44qRFhCECeez45/O5up/OTqo3v/oakwuvOwBBcADDFfFFycCEWC85HRCMwfIJfHBrnpBtATa+//vqvyB/3Sn+cFIkw4Ja+URxCzHKfHGaZ/tJ76SmdX9FrIJpoVeGHYrDEw4KUHHyIB+BoJxrDrorSSHrVRNWePXuegz8uIY/8BCmQG7P/zQVgAn735aYLz+3fsq6KFBLhjunCUlQ7HoCjPoY8yFVZtGjRcpqQtdGtvLhSPKxMh1MgYMkBefZ65TRJ0NDZ1rpxy2vLl1NHta4JDCaYijnEC3A0hCHnURU02rF48eJ/oYvOvRLy6M6ViVwVoymepye64yeytI8sd1dH+94tb6z4FzDSu/CwYNzgRh/iqSAAF/1xNNhBX4nouPPOOx+iByRq5KQsSB55YMizyRXHiEm3vbNm99o3HnJ2dHSQGgBchBsMxcV6Q+lEOHtonNjAPILcW1dXt3P+/PkLPth/eGgePqclQ0QK4L3synvBs2BKMmYIuhz2c/s2rf1ZY33tJyRAFy0MONzbuFpvCJwIwFEvQhDo5It3d3Z27naYCm6mGXWFPNE9UFT+H04B/vhAgPHM9Mv9fvpglNPZfGjnpntOHzl0lvqrhTuulpv1TBTgogVX0wcOHOiix7j2Dx899is0HJYvIefTMHCc1/uFjUwckcL9EHphpv34gY/uq9nzUU0IuGG5AXjcQ6IAR0MZbI6VxjfV17UVlQw5OqR0xEKah2GRkEd+TlXIIW2GGHK86tjtcjnqjx74pwNb38dteNFyx228W0/FRAIuHhOQq6BfqD1+0WIp2Dds1KgFNCRmkz65KFX4tAp5Bvjk8LndDkfriQN7fn5g6waMdTPcGPNOONxQMtmAq6DTnasWn8e1s7R8wvVkyEv4xKFRMoRXQDUIiiGnz16n4b8eGud2d9kbqnd+cC+9bu0o9chOCwBnuHEzJyF+N9WrhmQBjgOyBVchv9xwobOro3XbqPGTrjVZLGV8MaW2TiZ0FQhATlKyqrolk78B49z0HsGT+zatua/uyMHT1AKAnXS40fNkAo7jITDgStx++aKz+cLZD8onTZ1NryEeA59c+uUBoQb6X4UcBdPAJ8dwJt5CRTMDD+xY88YvGs+caqCWad2SpFhu1i7ZgAfBTY1Q1umdz+7zp45uHXfFjCn0AstJeUYJOZ+ggWLVXUmxKcesQHqWkm6/t2zd+saKJW0Xmy5T2xlu3MjBDMGkwg3tkg04jonQD3S60vbVVh/cPmbyFGu+rXA2+eRkyGGWZBhIAdYpYMST75H30Bg3fcqlp62p4eWNry7/N3rVWju1WYQbF5RJhxu6pQpwHJsh5wsN+nit13+quupA4ZChNSVDh881mkw0wiKtOcQaKEAnCJrMoMwIpJESj6Orlaa8Ltv2v6++QeeQLybFO5QpgRtapBJwHJ8hR6yCfuFUzQX6U7d5RPn4K8kvL5cuC6QaOKiQJ8EfJ2/bgItJR3vbwb1b1v3iaOX2Q9RCWG223HBJxKHAZP/+FMHSBXDAzYsCPV18dp06eGBjecVkk7Ww6DPSZVHO14D/sbsyYMEYCuDOpNfj7mlpOL9yw6oXf996sQFvn4LFZri1k6diOFpsu6YacLSef9lsxVXQ6c+d79ShqoN05/NI0TByWYxwWWjAQPrmYc96nz7xNeWBhxRofNvpbDl7rPpX2/73f97qdUkYboxx88Vkwm6/h+28ZmM6AI4miZCLoCvp86eON9ibWzYPHVk+mlyWKXBZMC7WdyI1vZKrvdqwrLEJArAxSoJvgna0XNpctXntkqOVHx6mWtliA3DtDRwYqpQHkJJOAe3BXFr88PCmSist+OKqjZZCpK+55bYvVEy78pcFRcUT8eRL3zAZbZWhnwIAM5bAw3/dXfaz9SeO/vve99fsovrggjDUPATI011xwPj8smJpeO++6QY4mhUwzwHI8Zg5vrQKyBl0W0FJSfENt/39D0pHj73LYrVayXWR1pwE0guBGYjRMaeOkNBDtc1NDSs/XLP6FVdnJ0ZIYKmxAGz2tTFKwnO5ozsQ7ZjIkC4uiraPLBJiLLAK7NP5vG63t/bQvkMOR8emoWWjx9Fr0CZKt0UrYd96nyvHtkM/xhwudkfsra0fHtz6/j/v2/zuB6S5OPwH6y3CjfMT25+KvubGNZWOFlzsINrHLgtbc7bocFsUyz7vq9+6oXzK9PsKCgsraE6L4rb0nVSxutxOByx5aA3Yz/aRn+1yOOobT598dte6N7dTabbUbLUx9Mc3btjosEEKXXkKc9MdcJYGkDPo8M0BOfvnCuRms7lg7uJv31Q+ruJOa1HxVLzcEv65BJ0lDB0z2LiAJD/7VNOF+pcr1/5tE72uhMHmmMe1RV87La222NNMARxtZmsO0GHNGXQAzrAjtn5x0Te/VD556p0FxSVX4Y1RmIorQSdlhKCAjfFsL1lse+eRptOnXv7ovbd2UBGAjAVgcwyLDbD5jiTATlurTW1TQyYBzo1Gm3HtwKDDmrNFVwCndSW+5uavXzNu8oy7CocMuRpfVgi8hiF3hxcDLgpm/GFilMfg6OjYf+H08ZU0MrKXNGOwxVh0RwA1X0hSMjNCJgIOZdFuLKLbAovOQ4si6PlXz7959tipM28rKhm2wGzNL8TrGHLlopShxoQo3Fr3drsdXZ1tWxtO1byzf9v7uL0OiEWokYa15kX0szPCalPb1ZCpgHMHGHIGnV0XBp0tu2Lli4eNKPrc/C8vKC0v/0phybA5NI5uogldivuSbePpGAkB3JifjU+CODrbqlqamjYc2LZxq73tMm7QsHUG0Aw5Q83DfrDaGeOOMBRinOmAc1+0oPONInZfxFix9BOmXjVq+py5Nw8rG/kVmp47lV+XFvDVM8+NUS11H9R0S91xqq350oYTVZXvnzt15CKJxQAz3GKMbbDWbLEzGmwRDE5nQ8ygIwbksOhs1QE54NbG5qu+cMO0cZOmXW8bMvTqgsLiWQS7FW95hc+ersAHA+1XXmRJlrqbXqxz2NnRvv/CmZMfHtm1/ST1F9YY8ALmUDG2s8WGC5IVYFM/lJAtFpz7wzH6xbADdF4AuBZ4xaJTvrKtoLjYOuvaL80qGzPx8wVDSq622Yo/ZTSbLLhbqjwzqsxPp9JKCMiXqBGaAMQ4UMD1xU0Y8jsMmM2HJ9ZpLprH6bQfc3V07m9uPLvv8J4dh112O1wOhhpA88KA8za21myxldqpfFaFbAWcT5IIOvx00VcXrTtDznkcm4aWlRXOuGbeZ4aXjfm0xVYwMT/fOtFsLRhnwsMYyvCjUQG/76KVD62NtVIHoNWWUiAmoHFRCJAVX5pi+oKdk+zzBbe7+6zH6Trb2tz48fG9O6vbm5txVxGQsiXmmMFGzHmIGWjRvw7dGCqc6UGreqb3J1z70VcAzjFbddGVYbC1sVhW+aFUzPzMqNETJ1YUDyubaLUVVeRbrRNMFnOZyWguzAvAj9fToZ6AmwPLjxUKCk1EMltoir30OJOjhyD2+b0On8fb7O7uPtft7Kq3tzWf/eTs2fr6mmr40AylaH1FeEOlxbLsfnCstCeb/2PNs7mP2r6hz+ICeNmycwwwGWqGnde5jBgjjUWsN4/cHfPQ0lFF9PidzVpUWFRgK8KMSIPL2eXo7qLRuvZWZ3vLxS5yKwAmuwgcM8yI2eqKMdIMNEOMdbEM78t1ckzFciPkIuDimQ0CkjYwqByL8IuAY7u4jcujPqS5XkoGpbEuBhE4TrN1ZcC1wDK0DDWvc3mOuT6OxePmTDrXARdPNGvBcCLWgsvrDDEgRzmOOT9UXTgW5wM6BIZPuw5IkQeIxZjh5RjbxDTWsSBwHFjL0f9Z8BztfthuszaIwy0i1NpyOIBYj3hABlCMkdYuDLs2X1xHvViXQaMAi6/Jlqs6CrBeDDKKhcsTt+tUGQQmQ8rwYp9weXp1yvxeBfjkSEFiU0Cro3YdtWvzGFzxyNo87bpYVqYjUOD/AZrbm7Ts1rpFAAAAAElFTkSuQmCC',red:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAk/0lEQVR4Ae2dCZxUxZ3Hq8/pnhkGmOEQuQS5VCTxWHEDBlyNkciakMMkxujGuOvHO24IKCae0UQlKwmyroocoqtozGpA4oFiVAQU5IaRcchwDsPczNF39/5/b+bfVL/p7ume6bur+DyqXt31r2//5//q1XvPIJRLpgQMMVYeiDGfyhanBGKdgDirzYvsLLtIPguB0/lc7+vh5vNIvr68Oo8ige6EH6Vo3iSxjODrw1rcm2++2f+MM84YV1hYONRkMhUZjcY+OAKBgOZTXDGVLTYYDH0gNYpvIa/V5/O1+v3+FopvgY+D4tra29uP7N27d98VV1zRiOy6g06DcRyGr1wYCfCEhUnK2yiWiQYvSQG+8ac//all3rx5o/v16ze+oKBgnNlsxjGWQB5LgA5MhrToh1BL0Fd4vV4c+1wu176mpqYvHnnkkf0rVqzwUJt+OuQfALrBmh/hvHc8mfkuCBlmDei5c+fab7nllguLi4svttlsXyeYzyPgrJkgKPpBuQn4LU6n88PW1tZ1ixYt2vjoo486qG964PMe9nwGnKE2EhgG0tDWBx988HzS0BdbLJbpdEymeFsmAB1DH5wej2cTHR+Qhl937733biYN76ZyAFyGPoaqcitLvgEeAvX1119ve/jhhy8nLX211Wq9lKYWtnIuuFa3272WtPv/3nPPPW8tWbLESYPKS9jzAXCGGj60tfGLL764YPDgwT+x2+3fp/MyOnLZ1Tscjj/X1NS8OH78+E9poNDoslbPaTMmlwFnsDWoN23adNq4ceN+TBeIP6FVjbG5THSksdEKTQVdqL64b9++lyZPnlzVCboMe6SiWRufi4DLYJsqKyunkraeCxOELhJzcbxxw0cXqQGYMKTVHz399NM/pgp8dOQk6Lk04RiLpq3JNx04cOAbAwYMmEurH1PoXLkIEqDVmPV1dXWPjhw58l3KwqAz7BFKZU90LgAeBHvYsGHmjRs3/mtpaekcMkPOy55pSH9PyXzZ0tDQ8NiFF1646vDhw17qESDPetCzGXD0XYObwLYQ2FeVlZXNoRsvZ6Yfl+ztAd1Y2lNfXw/QXyHQ9TeTsm5g2Qp40BTZtWvX+aNHj15AGvv8rJN+BneYNPrm/fv3/2LixImbqZuy6ZLBve7atWwDXNPYNAzT0qVLS2fNmvUA7f+4gS4eAbxynRIwHN8ozDseFQZHTW9l4m/3BBa/8nnDfT97vKqBKmPQs2ZpMVsARz8ZbvPRo0ev6d+//yNkjiRlD0hvqUh3ecsrpwtD2+GEdcMfELUNbWLewNniBaqU7XNAnvGgZwPg6KMJx44dOybSstYf1coISSOKsy4tiJLa8ySPX6wvrxN3TLpX7KJaoM1xZDTkmfynPaixJ02aVEBX+PdOmDBhg4K754D2tqTFKKacPVhsOPEnce+kSQK/IjMdYChjFWWmdozhNq1evXrYtGnTltKNmq/3doLypXyyNLgsP49XfPhOpfjZzCcEbKGMtc0zEXBeITFXVFR8g5YAn1O2toxW9+FUAI5ewDY/UC9+PvrXAjeJ2DbH2nnGuEwyUYJae/r06bba2toH6O7a6wrujGGlS0eMBjFw1ADxetMT4oHpZ2lbi3GtlFEmS6Zo8CDca9asGT516tTltClK3WLvglRsEanS4HJvXF6x/v0vxHXfWigOUXzGmCyZADj6oK2S7N69ewrdtFlJWnuALDwVjk8C6QAcPSSTpa6iTvxwwm/EejrNiFWWdJsoDLeZdv3NHDNmzGoFd3wwZ1JuMlkGjBsoVlf9TsykfmGFBYorrUo0nYCjbQjAQjv/rhs+fPjLFLbToVwWS4Boto/sL14++ri4joZhoQNznDbO0tVwEG66K/nLIUOGPEW32/GLVy43JGAeUiKeqvsv8UsaTlohTwfgGtz0EIKV9iE/RjsAH1IPIuQG1SGjCAhDWaF4qHmBeGzwYIG3EaRFk6cacA3uGTNm2OnFNs/16dPn1hChqJOck0CJTdxaeY94bsZkzfxMOeSpvADQ4B44cGAB3cBZRg/8fi/nZjNDBpSuVZRow3d4xGsjHxT/VlsrXJSPlxGjFUlIWqo0uAY39dhaXl4+X8GdkLnLqkrsFvE90uTzwQAdKdPkqQCc4bZUV1fPpXeQ3JhVM6M6mzAJ9LGJG+v/IOZShSm78Ew24DCB0Ibl0KFD19Ozkr9JmLRURVkpgdIi8Zvqx8X1YIIOsJFUMzmZgKPj+FNkoQvK79CqyQIKK6ckIE4pEQsqHxbfIVGwJk8a5MkCnOE2b9++fRrdfl9CS4GAXTklATwiYRpVJp7bfb+YRuJI6h3PZAAOuFGv+a233hpPb5NaSeHkPGJCFSuXnRIgSGwTBomVb/2nGE8jAORgJuGaPFmAm+iB4KIpU6Ysp70lJdk5BarXyZaA0ShKLh4tls+6QBRRW/gLn3DAE10hfjDoaMHx48ef6Nu37w0UVi7FEsjEdfBoImh2iMX97hR3Up6Er5EnUoPjx4L6LHv27PmugjvalKo0WQJ97eKGLx8U3wU7dIChhCneRAHOcJtXrVo1dtSoUQvlAaiwkkB3EqAngxauuk2MpXwJtccTCbj5kksuKaLHzZYpu7u76VTpegnAHr9svFh2yQTNHgfkCdHiiagEPxLN7qbnKOeXlJSoO5X62UvxebbZ4LJ4yB5/muzx2RSXEHu8txo8aJps2bLlYtodqOCWZ0uF45YA7T68cfu94mIqmBBTpbeAa9qbzJIiWu+eTy9Wj3tAqoCSgCwBIETr4/OnjwsuHfaK0d4UZu1tef7552+nF/OMkzuqwkoCPZWA1SzGvXS9uI3K93pVpaeAM9zmF154YdSgQYPwaJJySgIJk8DgvmL2C/8hRlGFvTJVegM4Liwt9HTO78k0KUzYyFRFSgIkATJVCq88S/yOgr3akNUTwFl7W3bu3IlvTH5LzYiSQDIk0KdAXEEbsi7vhBysgr24XE8ARxnzlVdeWUw3dB6LqzWVWUkgTgmMHSgeu3Ky9oFeNlXiqiFewFl7m5988slb6XPXI+NqTWVWEohTAhaTGPnMLIGH0xnwuLR4vIAjv4k+gV1Cr3u4Kc6+quxKAj2SwIA+4qbrpwjsSsV1X1zMxpOZtbdl3rx5P6cX0Zf1qLeqkJJAnBIwmUTZ/TPFz6lY3MuG8QCOvGbc1DnllFNujrOPKruSQK8kQG/Kuple0Yx942yqxFRfrICz9jY/88wz15DtfUpMtatMSgIJkoDZJE5Z9mNxDVXHgMdki8cKOPKZ6Fs59lNPPRV3mJRTEki5BIb0FbdNOj2+N2TFAjhrb8vKlSuvIu09IuUjUw0qCZAErBYx4i/XiasoGLMtHgvgmvYeOnSolY47lKSVBNIpgWH9xR0lJcG7m93y210GaG8c5ldfffVfaEPVmHQOTrWtJEAbsca8f7O4BEzSwXxGFEwsgGPt0Ux3LX+ktsNGlKNKSJEEsJ121CDxIzBJB9gE5BFdd4Aj3XT11VfTM8R9Z0SsRSUoCaRQAn0LxIyrvyb6UpMAPCrD0RLxy0C6ee7cud+m5yzV50VIGMqlXwL0/Kb9nsvEt6kn3S4ZRgMcaRrg9P2cHyjzJP0Tq3rQIQGYKSP6iR/QGQMekeNICdDeOExPPPHEiMLCwq91VK3+VxLIDAkUWcXXnrhaYMma7XDw2sVFA1zT3jNnzryKtHekfF0qVBFKAqmQABFpnDUxRIvHDbi2ekKPo30/FR1WbSgJxCuBwcVBwFmLd6kinGbGLwHxphUrVoynte+xXUqpiIyWQKBoWEb3L1GdozXxsS/9u/Z2Wl5N6aLFYaTrXRDwr371q9PUxaVePJl/3nzef4uaN28S7hNHunQ2EOgSRa/r1rkuEXild1enr6unecJVHktd9OlwaOJp1LPddEApg92QotEANw8YMGCqApwktmen8K9cIURTI8kv810BdXGI72JR73LR9+ND5jvzOx9nD80u11QhVj1DxRjwkBr0gOMXoGnwoqIiM72p6sKQ3Hl64nv0fhGoPZ5Vo8ff7P5+v2jw+Eil5S7kfQKBC8FqW1sbAx6ixRGpd4gzLVu2bKLJZCrVJ+bjebbBzXNkoTsipfRQo0HTWRybWz7BWvqHkYMn0qjYDg8ZoB5w1uCmM8888yJlnoTIKitPGHIj3R3hyc0lHwCPLbRdRB4A56EF5yoc4Igzkf09RQEelFNWBwB5f3okJhfnE2MqNZumgFk6wC4gDzoZcKbfRLfmrWR/Tw7mUoGsl0Ao5DzVueEXmUyThxcW8heUeVDanMmAIwLnxoULF55Nv4w+Wg71X85IgCE3AoEccjScPr8ZderZNCSNX3lo8ioKk28aNmzYhFz8cyYPPF/DHZAbRKPXmzNrK6B6qM0ygbxP6WCOtaUjWYNzgpH2fo/JVwDyYdxmUuH9zWZN3eXKePuYjGAWPDPH2tD0GhwZTLR7cIzS4Jp8cvY/QN6PIG/KAU0OVouMxtPBLh0MuTZ3rMFBPRzOjQT4aO1M/ZfTEmDIc8Emt5s0wDV+OydNY5oBR5ym2ktLS802m21kTs+sGlxQAoC8r4nMFZp9DQAGIct8m9EwstRuh0XCw9DGqAfceP/992MrGrYzKJcnEjgJOdjIUhcQBbcPHQx2wXRwIGyDM/XGs846S22PzdI57k23AXkJmbAnfNm5dwUAn1mkbe3+ohNwRAVYgwcBHzhwoLrA7A0pWVxWg5xe5Wo8qQCzZjQAuNRs7rKSwhocAwHsRrvdPhwnyuWnBAB5H9LkLZomzy4ZFJmNYFfjmHuu1+AGevdgMScqPz8loEGuafLsGr/ZYAC7bI3A1x6751EgwkhbZIvVGjiLJH99QF5Mmrw1SzQ5mKVFcAAOpa3BjdnjkyD1BDheMq6ckoDQNDntQsQSYjY4ghzsBllGWLbBMQaDAhxiUI4lYCLNWEzmiqbJM/zBIKvByIBz9zUNzica+QpwFofyWQIMObGe0c4kAgx4sKeswYMRCvCMnsO0dY4hb/P5M/YZT7NJ0+AsI41pXkVBJCKUicLiUX4XCQDyIhNWyYP6sEuedEZE0+DcLwU4S0L5YSXAkLdrmjxslrRFGmOxwal3bLakraOq4cyWACAv1DR5ZvWTVlHArmaJcM/YRAn+zfF6ve2cqHwlgUgSYMi7rDNTASYs1b7PH5DZ1Zjm/gXH4fP52oInKqAkEEUCgJz2YWeMRU6Xv3p2NZWO1c3gCqfS4FFmVCV1kQBD7qS3aKX7LXE+v1/W4BrXbKJwxwNKg7MolB+rBAC5jd69Ql5anS8goMGDyhqdkS8otQQFeFrnKGsb1zQ5Qa5p8jSNwm8ImihByMNq8EC6/9akSUCq2d5JAK+H0zR576rpUWkwSyuXETW4Zq9QzQFlg/dIvqpQpwQYche9vDvVb7X1BgRs8CDL6JKswbUEAry1s6/KUxLokQQAeQFtQUz1HU96FzrYZcC1vss2uBbhcDgaoO7VnvAeza0q1CmBDsiFcPlTIxJQ7aTXoetbYw3O1PsbGxv/oc+kzpUEeiKBk5q8J6XjL9Pk9YBd/KSYZ81EwQmcFllRUbFfXWR2CET933sJAHKrZq4k9w4nelrldOwnLwg3wqzBka4lvPbaawpwSEO5hEkgCHkS18kB72v1zXrAg+vgTL3/7bffbnG5XLVms3lgwkaoKsp7CQByC0nBo+nRxIvD7ffXrjve1EI1dzFR0FoQcGRobW2tUmYKxKJcIiWgQU6gJ1qRg9U2X6CK+gq4wwKOcQByLUN7e/s/EKGckkCiJQDI6fUOCd9x2O7zgVkZcK3rbIPLGtyHlRSlwRM9tao+loAMOcf1xge8TT4vAPfREaLB5XXwIOTHjh3b35sGVVklge4kAMhhqngTsC0E9dR6fGA2BG70IZwG97/xxhs7aNMVgFdOSSBpEsDNxA5zpXdWuY/MjVW1zTuoowA8BHIGHIMA0Ej00Udga5ubmyuVmQKxKJdMCQByE/ENfd6Tf6C2xR+ofPFITS31UzZRtG7rAWfIvfX19ZsU4MmcWlU3SyAIeQ8UOYCt93g3keelI0R7o34ZcJxrGpx8X2Vl5UYFOESiXCokAMgBI3lxHTDkqxyujVQU2ps1eLDLMuD4MbAG9y1ZsmSTn1wwpwooCSRZAgx5PM3Qg3L+JTX10OAMN3OsVRMOcO2XsGrVqkayw8uVFo9H3CpvbyXAkMNa6e7AQ6DNXl/5W8fqGyk7a/CIgKNvrMFhz3hpufBTBTjEolwqJQDIAXd3DrDWuj34+KvGK/lsgweLyhockQw4fg1essM3KMCDslKBFEqAIY+mxdGdynbPBvIAuGyiIElz8o0eRLB6xy/Bu2DBgk8vvfRSZ1FRkU3Lnaf/VRaVCM/xmpwffSRlBijCuUjxyBsxLUJCpMfbkB39AvD6/jn8fufjh46wBmftHdJCOMCRUbNnPvnkk5bq6uoPRo8efbmRnphOhGvbWiGO/c9fhaeuORHVpaQOt+8rwlmCb7uHyC6k7UgpUctEKBStTEijnSf6iZfzRGhCyxJvO3K96Q7T42mi2nnig21N5dhByPY3Qx7snh5wJEAmmgYn37Nt27a/nnbaaQkDfP+dTwp3dT3aySrn9HtEu9+r2YYQUCw2IgbIeRk0lOO4cOmIk12q88ttI8x9jdR/fX79eXfl9en68pHG7w34xW5nzV8pv4cOeQ08pIpwahltMuDeW2+99SPaPlsfTUuE1NjNSTbCjSEVGS2i0NihD2KFG+U4L3w5jDQ4OY7zyL6cRw7LeeSwnEcOy3nksJwHYb1DXjguw2EtMob/uiuvT+d22Ne3h3iw6Az46he37PyITiNeYKJsNMCh9j20s9Bx+PDhvyUKcDSarQ6Q2wnyaNf4nMa3nTFWjsuEcXNfYu1fsvP3RCbQwLU+598a3W4HBaHBw15gou5wgCMeGpy1uGft2rVv0OskEJ/3DpDbjCYNWoZE9iEghkIOy3nSGZb7JIcj9UnOI4cTlT9SPdHiAeZ2Z93r5MnmCaK7uEiA40eCXwWo9sydO3dXU1PTl0qLd8iPIe84U/+nUgJgsC3g+XJJ8+7d1C4DDlbBbBcX7iITmZCZIUclbloTX1VWVnYnfcMH6XnvADmcKwDZKpcqCUBN13jbVpHnpoPNE+a1SzciaXBkRF1BLb58+fI36GFkVKhcpwQ0Td7lS4xKPMmUgFv4PG+3HXmD2pC1d1jzBP2IBjh+FSgIM8W9dOnS6qqqqjfV/iuShuSwsmJTkEsSSV4Qa9+1Pseb77ZWVVMr0OBgE4yC1bAuVsA1M+XFF19cTFo84q8lbAt5EKkgT80kuwMB/7q2I4upNTZPegU4eh2ixefPn1958ODBd5QW7zqhDHm0q3+V1nMJkPIW9f72d149UVHZCXi3cGOWomlwpENbB80UCrteeeWVZz0eT8Q/CSiUr64DciwhnnQcjnbjArk5PV6fy3KL+va6q6+35fX1d1dfd+n6+vjcL/yBjx3Vz1J5Fx2yeRLVougOcPQHFeBiUzNTfvvb3+4lLf53pcUhmq4ON4IKDB2QY3Lg2JfDPHFyHMLxOq67p/X1try+v93V1126vj6cd9jezr+vaCrfS6dsnoDJqHCjbCyAQ1sHAaewa82aNc+QFkd55cJIQA85w5cKH91hiORwKtpOVhs+4nij89gzNB7W3oAPTHZrScQKOGtx/Hpcc+bM2X706NENSouTNCI4QG4lTZ5qx3AzbGif41Ldl0S0B+1d73dtWNy4ezvVx4Cz9k4I4Ogna3EY9oDcuXr16oVqRQWiiexOavKTiOEyC44vtzisRXbGcxznicfnsrHWp8/P5SL5+v531zd9/fry3aV7aOVkk+P4QsrnpAPsgcGYtDfli8lEQT4ADi3OgLtmz569jd4l/rraowLxRHY2TZPjY6kd/5CTJ1kOR0qPXHP4FK471vr0+blcJF/uc/gehMbq69eXj5buoy2xR31trz/duGMblWPtHdPqCfciFhOF87IW1y420eBdd921gB5MblR7VFhE4X2GPHyqig0ngY49J97GxU27FlA6wx2z7c11xgs42+Jo0Pnee+/Vbtq06U/qgpPFGdkH5FhdUS42CeD5qb2exj997qzFG6tgnoC5mG1vbiUewFFG1uIa5LNmzXqNHmvbri44WaSR/QLaZstLiJyLrXP4sRwox2XkMJeV4+Qwpyfal9uQw5HakfPIYTk/tHej37X9vuMbX6M8DHfc2hv19wRw1uLaxSY6sGLFikecTifegYg6lYsiAUCO1RWeUGRFOFbHeSOV7y491nZizRdve93lB0Nu+qD8O22HH6E+AG6+uIxbe2MM8QKOMgw4flGaFn/ooYd27927dyW9kRbpynUjgSDkeP+HOkJkEKBfwCF/68oXmvdgv7dee4O9uFxPAEcDDDlrcccdd9yxqK6urlqZKrHJH5BbeqRfYqs/G3NhzftEwF39ZNPORdR/PI6m195xD6ungLMtzsuGzs8++6z+pZdeuos+f0JLl8pUiWUmGHL82c73A69hcwm/5/3WQ3eVOxrw2gWGO651b73cewo46mHIg1qclg23EOiL6AaQvh11HkECgNysNDltdPKLfe6GRU837d5CotJr7x5rzN4CDlMlqMUp7Lz88suXHzhw4CN1AygC0WGi8x1y3NCp8To++lXN+uVgqPPgu5ZgLC2AY6rQOA6+4MQvr/3OO++8j+zxGmWPkzRidJq5YuiNvomxoQzLBru72e+pWdS46z7qWjsdYAgmAJhivijYM5cIiaITWD7BLw6dc9ANoGMvv/zy3WSP0zeGevzjo6ryy2H50EKQR7pNnmvx0MvugN/7vuPw3Vucx47RbGv8kA+WeFmwVxAkAnAQjM6wqaJ1kl41sfnTTz99Cva4gjz2OQLk+DBTrjswAbt7r6fhqacbdm6m8cpw9+rCUpZdIgBHfQx5iKkyY8aMJbQh6123Gz9I5WKVwElNnrurK16C+4i39d05NeuXkFz0pgkUZkL+9CcKcMwdQw6acaGATrfPnDnz13TR+ZmCnKQRh4OpYs5Rm9yjXVS2f3ZX3YZfk0g0TsjnZcGEwQ1xJxpw2R7XIKevRJy49tprZ9MDEuVqUxZEHrtjyHNpjRwrJvU+R/nDjZtn13scJ0gaAFyGGwwlRHtD0snY3obOyR00EOTe/fv3r582bdr0pmXv9MVXbpWLTQImklWHQGWRxlY203IB7kaf69CC5p037XDU4osCbXQw4DBvE6q9Mf5kAI564UJAJ1vc1dLSsnFUZctltKOuUEHeIaRY/gfkcBBotq6k+KnzJwKe+mUnym9c13roIA1FD3dCNTfkBZcswGV1Ewxv3bq1rcBk+Xycpd836c+vVUHeMQmx/M+yCgozlkIZkoe2mYrWgKf19ROVt/y55cty6pYebmhuAJ5wlyzA0VGeC/a1zm9z1jaVme17hluKL6HVAgtPXMJHloMVsqxCBJrh4+yA292+tv3Ifz7btAu34WW4E7beHUkMyQRcbhNzEpyXTY5jx+kJly2jrSXTSZPbeeLkAiocXgIsq6Aww2fLiFjY3Cf8nsbX2/bf9mzjLqx1M9xY80463BBCqgEPgr7VWdvQbvCuH28tnUo2eR+eOHRKuegSCMqKTHOY55l44F0mDQHn0eXNX9z8yomKPTSiVjoAOMONmzlJsbup3qBLFeBokJVOEPJyV2PLUW/738+2DbjAZjCV8cVUsHcqEFECgDwoyIi50pOAde46n6NiYePuW9a2HfgH9QJgpxxujD6VgKM9OJ4XzT/gOeHY7W5Yd65t0CS70TRE24nRuWrQkV39H0kCDHmmrK1gZnH7/ZjXsfWRhs23b3HUHKW+682SlGhullmqAQ+Bmzqhndd6He5PHDUfTC48ZXShwXyagpynp3ufzRUIMp0OuwLpWUq6/d72wd21G+fsdzfVUX8YbtzIwQ7BlMINeaQacLQJ1wX0Fr/b9zfnwQ/PKxhUUGKyTjIJo4Enr6OI+j+SBGQ5YcU81Qfgdga8gQpP0/O/qP/4d41eB77yK8ONC8qUww15pQtwtM2Q84VGwEsbyN9srdo60FRYPsRin2wxmOzYS4AHc5WLLoGT5kr0fIlMxY5AvL+k2e9ufK/98Lz7aje9SnPIF5PyHcq0wI2xphNwtM+Qww+CvsFRfaTa2/beuILSM+0G0ynKZIGounephJxNkhpf+7aFjTtvp5WSHdRDaG3W3DBJ5KVAzHHKXaYADrj50KCv8rS0rXFUvXtOwSBTX5P1K8pkiY0NNleSSRNu3sAkKfc0L7+j9sMH97ua8fYpaGyGW795KrbOJyFXugHHkHgu4DPkmjanP3e+Na1V2waa7buHmAsn0/ZRu7YXQ5ksUVE4adIlducKcU0mCW7euBvWOo7c/UDtxr90miQMN9a4+WIyabffow5el5gJgKNLMuQy6Fp4g+PY0cNksoyylgymz4SM7nioS9nmurkMOT0JeUh0j05ga/toiuj78OKQr/W9RY3b57x64stdVBlrbACuv4EDJZV2l2lXb+gPrivxw8OXVgvosNFhp6MQ4TvKzvnni+yn/rLUaB2BJ1/4TzKlKRdGArCVe+PY1m70uw9+7Kz+wx/rt26g+mCCMNS8BMjbXbW/vr1pM5FlMw1wjA19wgHI8SVmKx2AnEG39zfbiu8vu+CasdZ+19HHWAvM2ESqzBYSUXgHDRwv5rxC0ub3uCrI1n6w/tMXGr1OrJBAU+MA2GxrY5WE93LH2xQVTZ7LFBNFP0IWEnwc0Aps0/mcfq/3rbYDO+r9zrUjLMVDaePWCGW26EV48px//Kw5ovl4wxSbI/Ty+Y+fa97zq0WNO9aRzOXlP2hvGW7MT0aYJCdH3RHCWDPZoX9ssrA2Z40Os0XT7HMGnP/1C2yDbulrtI7E64nx7lae1EweXKr7Bq0cybGd7SI7m9a1D3zmqln0WN3nH1J+1tSstbH0xzduWOlErjhSgymKz3TAWQyAnEGHbQ7I2T7XIDebzba7+p1z6STbgGv7GwvGKNBZdNF9GWx6J/eXO5x1z/++aetaejMZg80+r2vLtnZGam15xNkCOPrM2hygQ5sz6ACcYYdf8Kuy8y86zz7g2jKj7SwFOkkkjJPBJlNv9xZH3fOP12/+iLICZBwAm31obIDNdyQBdsZqbepb0GUT4Nxp9BnXDgw6tDlrdA1wOtf828rO+afJtkHXDTLZz7XiNQxUBIXz1XwB1KASa9n0Rilx3Of4fJPz+PKF9Vs/o2gGW/ZlcwRQ84UkBbPDZSPgkKzGKfmy2QKNzkuLMujWG0rPmnRhwZBvDzbbp9sN5kLAni8XpQy1n9AG1I6At51edPnBRlf1G4sbduP2OiCWoUYY2poP2c7OCq1NfQ+6bAWcB4D+A3IGnU0XBp01u6blh5qLi27od8b0Mdb+3xxosp9PoJvwch3Anmvr6Vi/BtRegprA9tX6HJu/dDe+vbhp7wf0RincoGHtDKAZcoaal/2gtbPGHKG+dnHZDjgPSA86TBi20dmEYV/T9FMKTx00q3j0ZSOsfb5ZYrCO0UyYLNbssqbuhBpfS/jyoLvl7f9r3f/O+vajx0kmDDDDLftIg7ZmjZ3VYNM4NJcrgMvjgTbHuAA5NDprdQDO0Mu++Yf9xo2dXDB4Kmn1c/uZCibShWkBPi+CR+gy1ZSRgcbmJzxJQ0t8riafaxdp6883uWo+Xtm0r4LGDG0MeAFzOB/prLFhguQE2DQOzeUa4PK4WKsDdD4Ath54TaNTvJbWz2wr+FHfsRMnWErPG2iyndvfVHAGwW7BBSqA7/jX0QwLL1kXrYAYjg1f+LhMBNC4UCSoPfSmqL21Pufn5Z6GLS83V+xq8jphcjDUAJoPBpzTWFuzxu6ongrkkuM5yqUxyWPB+Bh0va0ua3eGnOPYNw21FRX+oHDcV06zlpxdQvtfCg2mEYVGy1CrMNpZw7Mvwy93AmG9oBlafT6GGPYzQGbfLfyOdr/nSHvAd5B28x2scp/Y+Wr7vu1HnG24qwhIWROzz2DD5zj4DLRsX0fqDmXPbqeXe3aPJnrvGXT2WavLpgyDrfflvNoP5eLiYYMmWctGDjEVj+hrtowsMliG01cayugppEK6k2qnbWCFlNGMxhh81vRsXkAbgywizUuvWWinW+QOT8DX7vL76tsCnkPNXs+Bal/rwR3u+gPrWg/DhmYoZe0rwxsuLOdl84P96BLLgdR8Apynq4O5DqWKMOAFtLIPwBlqhp3P9Xk14DvrCKmbzB3zSGtx0RBjob2fuaCoj8GKHZGiJeBub/K62qr97Y4D7tY2MisAZofyPukzzPBZ68o+wgw0Q4xzOQ+X1ddN2fLD5SPg8syGAEkJMqx6kGXA9WlcDvUhzPWiLTmMc9kxeIjjMGtXBlwPLEPLUPM552ef62NfbjdvwhC+ch0SYFkwkPD14PI5QwzokY99jg9XF1rheEAHx/DpzwEp4gCx7DO87CNNDuMcBxz7HWd5+j8LPE+HH3XYLBv40Q4Zan0+NCDXIzfIAMo+wvqDYdfHy+eoF+fK6STAwtdFq9MIEmB5McjIFi1OTo9QZQiYDCnDizLR4iLVqeI7JcCTowTSOwno5ag/R+36OAZXblkfpz+X86pwDBL4fwN/IZwMBwH5AAAAAElFTkSuQmCC',yellow:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAAC4CAYAAAChOH1KAAAlaElEQVR4Ae2dCZhUxbXHTy+zL8ywDDsSVhEVJQoCkoSIIr4kvohLxO2ZfC8an0mQrCQm+uJ7qHkv5hE/xSQaNokBogkxigaUuLDIpsiOMA4MOwyz7zPd7/yLOZfqnu7p7umeXut83+2qW7du3apTv3v63Lr31rWRkUhowOZViPc6Nutpbq/8WPVO8173sYtJ6kgDusI7yme2nYdTdIZQj0NH1vrgwYNtc+bMyb344otzCgsL87KysnLT0tKym5ub6+rr62vKy8urd+7cWfv444/XlJSUAGSB2VfoKw3HM9KBBqQzOsiSspsEXgmhCMTtDGT2TTfdNDwvL28kQzvC6XSOcDgcQ2w2Wzfenme323M5nuN2uwPql/O5OF+dy+Wq4X2rOV7Z2tpa3NLSsp9Pgv3V1dX7XnnllU/4RKnj7S5edNARl4WjRnQNBFS+njnJ4wKxHtp37NgxpG/fvlPY6l7CAI/kZTgv/YMBN1L64hPAzcAf5eUTXvax9d9x/PjxtZdcckkxH0OAF8gljNThE7acVIdbQLZzDyJuX7du3YChQ4dOycnJ+QJb5M+zFR4Qr73L1v4IW/h3amtr/3nw4MG1kyZNOsJ1FdglBOwpKakItwfQTz31VN4dd9wxnd2LL7J1/hzDPCxRSWDYD7BVf5fdmbeXLl26avbs2dXcFsCdkqCnCtwCNEL7gAEDnBs2bPh8QUHBnenp6TdyWi4vySY1TU1NKysqKl6cMGHCO0eOHGnhBuqQJ71FT3a4FczcqQgdu3btGtWvX787MzMzv8YWun+y0eyvPWzRjzY0NPzp2LFjL44ePXoP52vlRbfo/nZN6PRkhdvyoX/7299245GNe9iHvoMvBC9P6N6KQOX5gvRD9tGX8gjMovvuu6+SixRrjjCpJJngRluwAGz78uXLu0+dOvXbDPW3eL2QFyOeGihnyOevWbPm6VtvvfUsbwLcAnpSuCzJALcH1KtXr+4zduzYWbm5uf/OnZWMvrQnouGv1bD8ftu2bf937bXXnmgDPCkgT3S4lZXmDrGvX79+0EUXXTSbRz3u5fXM8Ps85Upo4FGWBbt3735q4sSJh7n1YskRJqQkKtyoN8B2vPzyyz2uueaaX2RnZ9/NN1bSE7IX4qjSfMOoqa6ubvFbb7318xkzZpRx1XDxKZY8jmoauCqJBjfqi8WB4bzNmzf/W/fu3R/j9R6Bm5o6OWyuErK1fMiKwuhfJ8VNZWUVtT/77MTHFrYNI8oIS8L444kEt7ggju3bt182bNiweXwHcXwnuy5pdwPYzrofMdiR8SaaW9wffFLc+N3RE/7xEStNrHhkCu/iXkgEuFFHBfb8+fMLb7vttkf4YvGb7II4u1g3CVm8vXEpORtfiGzdbbaWmpqW3724ou4/v/WDj8u5cMAd965KvMMt1tp56NCh24qKip7gmy99IttzyVWao3ERYekKcbnpxKmy5h/3HbVpGZcvdzzj1ooDnngUnHQOLI8++mhBZWXlC3369FlowI5tV9lt1KdPz7SFdaUTXnj00REF0kccxqWRjMdKWWBv2rTpUn7YfwnfWRwZ225NnKN3peXWtdDion0799TedfkXPvqY0+GLywWnni2m8Xiz3KgPLLbz6NGj3xgzZsw7BuyY8uH34E47jRxzUc47J/eN/wb6ixf0W1zxFC+VEWvtnDt3biE/ybagZ8+ez7CysngxEqcasNkoq6i785m6w1ctmDt3GB5xEMjjwiOIh0qgDjjJMG49hp9ae5Gt9fA47c+4r1a03BJvRbS43J/s3FN3R5ubIhebMR0Tj7XlFoudtm/fvmsuvfTSNQZsb2wSY91ptw0fMzrnrYObr7iGa5zGC9yUmBrPWMItYGOY7xZ+W/wvrIw8XowkqAa4Q/M+MzjjL0d2jL+FmxBzFyVWcOO4OLPT+AH6b/ELuAs5bp4LYSUkujDg6f37Ohee3ncVHjUWCx4TzmJxUAE7/eTJk4/06NHjKb7bGIt6JDpH8Vt/N9l7dnc8dfaTcY9wJWG0YjKSEm2oFNh80ZhRVlb2NL/D+KP47SFTs3A1UFiQ9qOakglPjx7dKyMWgEcTbgX2+PHjs3j6hCX8fMjXw1We2T/+NZCTY//65jeGLRk/vjuGdaNqwaN1NavA5salnz179jl+9evO+O+WxKxhrIYCA2mrtq71xdwLNt7P+Zp4kacLA+0W1vZoWG4BO4197McM2GH1V8LunJPtuLP84FWPcQOidpHZ1XCjfCxppaWl32Ef+6GE7R1T8bA1UJDveOjUnvHfAQ+8CBthl+uvgK6EGy6PAru4uPj23r17z/VXCZOeOhro1cs5t3T7uNu5xQJ4l7nGXQU3KqzGsfmF0+v79+8/P5oTR6YOKgnYUjfZ+vdLm7/vg7HXtwEOTroE8K6AWyy2kx9ZHTdkyJAlbY1IwJ4wVe4KDTAgacMHZy3Z9vbl47h83MkEhxEHvCvgRpnOefPmFfF49lLMU83rRowGPDRgs1POpRdlLZ33xJAi3iCAe+QJdyXSZ4sCmyuVwY+truA5RKaFW0Gzf2gaiNehQH+tqKt3vZkzaAOeRWnkRZ4m9Jc9pPRIWm6cKMrPPnz48HcN2CH1Q8pmzs6yTzux+8rvsgJkiDBiBjdScAvY8LOv4hd58UyBEaOBoDRQ1DPtEfa/r+LMEX2SMFJwoxzHE0880Yv97AXsZ6OSRowGgtIAeLl0VNaCJx4d0ot3wL9/RLiMxF8AKgKY4WcvY3dkOseNxEgDieZz62qqq29dlTNo422cFhH/O9wzBCeHgptfOHjAgK13lYmHqoHsLMf0ozvHPcD7yehJWMY3HLgtsBcvXnwB34F8ONTGmPxGA94a6FuU9vDiZy6+gNPDBjxcuNXoyA033PA4+01mLmzvnjLrIWuA36jP/dcb8h7nHcMePeks3JbV3rp167X8sVF8NMmI0UBENJCXa7/xo3fGXsuFhWW9Ows39nNed911uRdeeOEvI9IiU4jRgKaBi0Zk/vK663rDGxDAta3BRTsDt2W1n3/++Vk8jfDQ4A5lchkNBK+BNKdt6OJfD5rFewjcIV9chgq3BTZ/UGkY36wxz2cH318mZ4ga4Js7Dy1fMHpYZwHvDNzqIpI/1fEkX0Sab8+E2GEme/AasNltmdO/kP8k79Gpi8tQ4Las9rvvvjuBXxe7LvhqmpxGA53TQE6O7bp1r4+RW/PgNWj3JFS4ldXmW+zfY6vdudqavYwGQtAAOONb89/nXUK23sHCbVnt119//TKelmFqCPUzWY0GwtJAbq596j9eueQyLiSki8tQ4IbVdl555ZWzOTRmO6zuMjuHpgGbbfxlOeAOcIPDoPgLBm7LavM3H0fl5+d/KbSKmdxGA+FrID/P/qWXXxw1iksK2noHC7ey2pMnT8bQXzD7hN8aU4LRgIcGbPYpV3UDf0Fb70CgitV2LFq0aAhb7RkexzMrRgNR1ADPezJj0fyLhvAhYWzBbofuSbBwO6dOnfogX7miUCNGAzHRAA+cOP5lSt6DfPCgXJNg4HawO5LDs0XdFJMWmYMaDWgaKChw3DR5ck/MqBDwwrIjuMUlwTQN0/lzHvjuoBGjgZhqwG6ngmfnDsTbXgGtd0dwY5u6kBwwYMCt5qZNTPvUHLxNA+BwYP/0W3lVLiz9MuxvA6w2FsecOXN68fPaX2wr2wRGAzHXQF6O44tzZlsvEwur7erVEdzY5rz77rtv5s9S49anEaOBuNCA3W5L+/rt3W/mynTomnQEt3JJ+JvrmA3IiNFAXGmgX1FawC+m+YJbzLxjyZIlI/mNdtzTN2I0EFcayMqyXfbS7y4cyZWSURNw6yH+4MYOjokTJ95iLiQ99BX3K271Tx331Qy7guBy0vg8WG/FKoft4IbP4i3IpPztwsLCz3tvNOvxrYEW23iqKPs9VxKfnUlc4fncPSrvtUpYb2lygU+/frc33JZLcs899xSwS3KpxxFSdMVWv4dsle+Qzd0c9xqAGevm/AJVVBSTy+ViCDwhQQN8JLVLc1P7/bz39VXOuTye+/rK5zvNcz+U1ZG4XO5Lb5teWbBs1QHMUCXsWoV4w42yYLUd99133yQ2/dBVSoutbhc5997MmkscS4hOK2hxU1mlb7h9daj3f7r3uq99Yp3GJ67jnqktk5atopVcF3Dr0UnecKNNCu5+/fpNNv42m4PyN8jWdDTW/Rjy8TF22yPLTWeriFyWLQu5mLjeAbD26eaezMHfeQG3SLJaiwRdsK7g5icAJ+kbUjVuc+OziYkpPD0Cdc/nDk0EM9xJFedn2ybyrvizEnatknS4oQIsjlmzZvXMzs6+0MplIgmrAQHcwT0tHZxMYXaGe9QDX03vCW55kaap/vIFt33mzJlXt2VUmcxPYmsAgBfmsWkD4Nz9SbbYvnq1G7yC5Q7hRgYH35W82vjbiQ20d+11wL23JfI6OO1TSIBbXBMArsTbciu4eU4Sc1dSNJREoQKcZ9+DBY+U4F8AIv8GEleJUfrJyiTw2g5uGS0R2hXcPL79mSjVyxwmyhpwwkXJdVNFTeRGUQRwNEXiEkajedkZBF4FblUN/nHr5zDi9p/85Cd92NSzh2YkWTUAwAtgwcWkJXhD+UTKm3VLWh9uhmJYmiNwo5lY7Pw8yXDZaMLk1YAArkZRuOdhaRN5mXSxDdyCZ2FZrUgPKrj55s1QczEpKknuEIB347cRYcGFiEQMUf++3V1DubcEbtVx7Sw3v3UzLLm71LRO14AADqudyJKbaQO3ArdqjQ434naeB3CIsdyJ3M2h110Aj+QoSui16Pwe4DUnm4ZwCYphDhXcGC2Rcxahg0dKkMlIimkAgOdnu6mqzvdTg/Gujqx0G7jFiInFM0iHIME+atSo9MzMzAEqxfyknAbOAc4gMBWJdnGZke4eMOozmengmBcFuA63bdq0aYV4jDDletU02NIAAM/LOge3lZgYEceUMa2FXFWAbcEtKzaen4RHP42kugYE8M6Mg8uFqVh+6FLSfOlVtnU2v+yHcFCRG/xaPOt3KG29evUyN2989UAKpgHwXH4evKZee0A6SD0IsMgucQl9FaFvk7iEgfLr27vnucGvwK38E9lu42FAY7lFGyYkZcGz2YkFLgkg+TkOsdyqtjJaomjnZ7gN3AnQidGsosOhWXDrHZdo1iC4YwHgzEzfbglKsBm4g1NkquUSwGsb4neYEG5MTjp5WG6P0RIeBswxN3BSDd3g2gvAc/irox35wsGV1DW5UK/0DDemNlZeCI5ijQkikT91jY1GjAZ8asAX4AI7Qj3us4BOJOpl6nFfRaU77AI3Ntv00RK+gDBw+1KaSTuvgXOAu6mOZwqRuUcEOuSSuITn9+x8TC9L4hLqpTqdynIjCdbbc+6t1tbWFiQaMRroSAMAnF/MpXoA3lHGKG9rddk8+BWfG9WwNTU11fqaoSjKdTSHSwANAPCsjDYTGQf1xb9IYzPVclWU1UaVdLipoaEBG40YDQSlAR1wuYrzDlGQRZuPUmWb937+1r3L0/fnuQM9+NXhdhu4fWjfJHWoAQtwocwrtyQHC6vX7u1WvctDBkmrb7YBbstTErhVQl1dHb82asRoIDQNAHA8j+frIi+0ksLLzRe5wq/iGaMlQrq7oqLCw6yHdyizdypp4JwFd1MDzz4noyjRbD9OrMpaD8vtlqFAAO4uLy8X8qNZL3OsJNEAf6uGLfg5wKPdJMBdXuMCv4plHF/cElWX06dPV5vREqUK89NJDZwDPPouCv4tTpVTtV5tgVvRvnv37hoDt64eE++MBgB4Bs+hDGvqvaA8pIlIXPIhXdIkjx7KNskvIa4q9xyyA24Py40ViHvlypXVPNbNMzobMRoITwMW4F7FeMOJzZKmxwVa71DPg7hIczNVvba+SdwSJFszTgntbh4xKTHWW1RmwnA0AMDTYcG5kK5ccAXLIyUlfBiLY9Rb3BLEscFVW1tbghUjRgOR0IAFuOaKRKJc7zJqG2wlnObiRTwRBbfQjg0uHg781Fhu1oSRiGkAgKfxuJy3ixGpdVS0qtb9KQeKYQ4V02K5BXA3j5gUI7MRo4FIakAAj2SZelmnKuggr1scYxvg1hNaecTkoLHcUI2RSGtAAI+UxZZyUM89h1wwyviamcWzWG5sVyZ94cKFn/L3CxE3YjQQcQ0AcCfPjAMwIyVMq2vhasenXJ5iWMoVuIV2165duxp4xOSYZDCh0UCkNaADLtY3nLC+yXZs14EmfsPTuqAEz9ZoiQU3p7XW1NQY1wTaMdJlGsC7urDg4Qpc6JoGN/xtuCSw3MKyB9xi0l0nTpzYbPzucNVu9g+kAQE8lDFwlOnh0TDKJ8tsmznZ4pfjHpYb+yABGVq3bNmywbjdUImRrtYAAHeE4IML2HJC4OvIW/e3buB66pZbVbudz41MP/3pT3fziwvmNnxX96wpX2kAgHd2ZtnGFqr68QuO3eCWF59uCQ5iWe7q6uqms2fPbjWuCdRiJBoaEMBDORb4LKugLYwrvmGuw62KEcuNFQtujrccO3bsAwO30pH5iZIGBPBgR05QrWNltk0c4K33gHADcGRq2bBhw3rjd7MmjERVAwAccAcj8LfX7Wxdz3kFbvCLRYleDOIYnOEX9tWca93OnDmznmd+7aFypuiP48jjhMVIdDUQjNdQVecuK7iheSLXrJIXPO7KM6ko46wAl9fMOE0Rj0Q1YsJhC8O9mT+Vfb09Ub8EhFaFKc2taVReYRmDMEszu4eigY4Ad7HZPnyKMAQoVtvjYhLH0eHGusCNHVr27du3euDAgRGF21axm2zH1pLN3Yzjxb3YG89Qel02PzIM3bUXf9jjtSdf4i8def3s4veFW39l+StHHaODjaGW5zd/R8fw08pQy2ppddOuva2rGVPFKrdN4EYzlehuCRKwDuB5Pk/KGzlyZM/169e/z5/vi8gXFwC28x9fZrDh1ieOVNW7cBcscSqcAjWtbXRXf/l/K6/ed6rpDDcXr5fh9jtAtzrKl+XGRtDXzJa77siRI6tHjBhxUyRcE9vhV8lWe4SLTizJR3XZLtRiwMlIzDWAx/qOn6HV+04Rf1iQ4AKAV3Brgc1x6/Y74iIw71hwFjTxqMlKniBTtoUV2lyJS0c+f+GLJzc3EgcaYI+EthyilVwVAAVOhVmP2unj3LJBLLfyZe6///5NVVVVRzty7mXHZA8BeC6PJcF3M0tsdADbzF94OPq9P5OMb4NTsdweCPqDWwCHyW8uKSl5zcB9Tm95fDWSg8FSIzHRAC48SyvoNT64YpNDARvMeogvuJEBZh474axo5ikf/trM784bOacBATzYO2kmH1t5/quLxNLCCK/aSX8Fl7yI1Qav7cQf3DgLLL/7ySefLC4rK9turPd5/QHwbOODn1dIFGKw2uW1tP3/3qZiPpzub7ez2qhOMHDj7GjasWPHSy1qSBG7GYEGlAVnwI3/HR0dtLK53XWCXmLVC9hgE0Y4JLg5v9oBO8L8N82cOfM1nvah1FhvqOa85BoLfl4ZXRiD1a6sp9L7lil/G3CDS79goyr+LDe24Wyw/G5+9axh+/btf4jUsCAOkCwigEfCpzRl+PbN8ZDUzhP0h5oadbNG97d9Wm2wFQhuAVxZ729+85t/raysPGmsd/vTEoBn8dRhRiKvAWW1G+jk7OXqQlKstt9REqlBR3AjD8w+CgHcjUePHq3duXPnImO9WRs+xFhw31Y33H8jWO29J2jR0Qr1QSc8+QcewSX49CuB4IblRgHqopLDxm9/+9sr+E2dMmO9fesUY+DGgvvWTWdSYbVrmqjsxytpBfjjRS4mO/S3caxAcCOPWG8FOD9vUrVnz54XjfWGanyLAG5GUcIfRcFzJPtP0ov7jhPe6RWwA1pt9EwwcIv1Vn4379M4Z86cl9h6VxrrDRX6FgW4GQf3rZwgU2G1qxup8ud/V8N/YrXBYUCrjUMEAzfyifVWvvfGjRvLN2/e/LS5awnV+Bfc5MnCOHiE7s6lWjktTN22Unp6awmVs5aD9rWlR4KF29t6N8yYMWMFT96z07xnKar0HQLwTDOK4ls5HaTCHTlVTTvvWqR8bTyrLaMkQVltFB0s3MjrYb358yL1y5Ytm8vzm7iMewL1+BcB3PjgwfnguMPC85G4Xt5Gc3nShnrWbMhWG70RCtztrPfDDz/88f79+/9sLi79gy1bBHBZN6F/DeA2+4Ez9OdfvE4fc65OWW2UHgrcyC/WG38ROJsavv/97/+Gb8ufNdYb6ulY4H/DRUk13zmU9kKDlY109sd/pd9wFGDLhWRQIyTYXyRUuGG9cRAMC+Kg9e+9914ZX2D+mt0UXjUSSAMAPMP75b5AO6XQ9iama0sJ/XrjQSrjZotLAt7AHfgLWkKFGwUL4GrkhNfr+eJyJd+93Gbck+D0LoCHYtFSIS/uRJ6oom23v6BeIROwwVnIYKMnOgs33BPrriXHG+bNm/cIv45WY0ZPoNbAIoAHznk+By5IIXJhKnGV2JYuaXpe2R4o1PfR4/720/PocX/5O0rH6EhlA9U88096hPPp7gg4A28hWW0cqzNwYz/xvS3r/dxzzx1cvXr1L3j0hOfZCLkeKDPlBP43XBSAEcwCBQlEelz21dP0uGwPFOr76HF/++l59Li//P7S20ZHaO0++sXv31cfbvK22uAtZOks3DgQDijWG2da/V133fXm3r17l5ubO1BPcALA01PcB29mp4OnaVj+jcX0JmsNYMsIiVjt4JTplSscuGGeAbhYb1So7pZbbvnV8ePH9xr/20vTHaxaFpxNWyr41nob4WefrKG9dy6kX4EfXsQlAVfgq9NuQAS+SsKHPy829rt5gquWDydMmPCVjIyMdMzaKWI/8S5hMdJeA+r7MNyN6GwR0Zy/v/NIp+O4ckw9LsfR0/S4bA81xAx1VQ1U+8s19K1/7qVjXGYtL7Dc8oCUpg0cMTQJx3LjSDi4t3tSN3/+fPjfjxn/O7TOyGAXJQ2f0ODdsEAkPLfWtb9yLH/HD7Q9lNrhsqyBnY639tJjv39X+dlitQXssKw26hIu3ChDABf3BGdeHfvfq/jR2BVm/BsqCl4E8OD3SMycGM/ec4JW3LuYVnELADa4wb2TsN0RLkNJJOBGQTjLMBbpAfj06dOfLC4uft8ADhUFLwAcF5m6b5pMcVxAlpyl9298jp5krXiDDY7AU9gSKbhREVhwffSkjt+3rLn55pt/WFpa+rEZQQmtrwA3XJRkE4B9pJw+/trz9MPKOjVhvLc7Ao4iIpGGW/xv/L2o0ZMDBw5U8HyDD/HjscUteEDXSNAaEMCTxWrjgaiT1VT84Ev00IFTVMGKELDBiwz7RQzurrYNqqKHDh1q4tvzGyZfmHVNbsUHufz5byNBasDRZn7kvpiuOokj9LXgEJJHj/vKK/kk7Ex+7KOLlIUQdyBP19CJOa/Q/W/soSOchJERwB1RP5vLs6Qr4PZ55vHFZb2r1b1lXNHRa/muXKYB3OqDgBFfgOvg+CtAz6PHuyo/jqEvOA7WYbF5GrSKX71NDyzaQAc4SYb88O+O67SI+dlcliVdATcKB+CyyMFsH+w6WsnTAO+8pD9dx4CnGcBFNYFDAVwfBw+8V+xzAGyeKar+D+vpu798k7ZzjWCtxR3Rh/0iXtmugluvqECO0MbPD5zpmUs7RvamKQx4Rgp/S0rXUVBxAVwpkk1ivPviAPtsPVUv2Uizfvaq+jgToBarDbBhsdGcLpFowo0GqIas3kOnud0fjBlAk/nWc450Wpe0MMkKFV3BB9ddgHiLtzC27GOfmvcWPTj3DfqIuwFQY4ErolvshIab22KdnWiIasyGYqrkZwreu/ICmsivYBVIpyGzkY41IP92cpHZce7ob23icY/jVXToZ3+jB55fR59wDfCNSN1iR3xkxFcro2G55bhyhlqAf3yEanccp7WfG05j+XszRQAcf7VGAmsgHgHHyQawedqzXQ8up/949WNrVEQHO2J3IANpKZpwS10EbhV+eoYaV++lt68dRaPyM2mAAVzUFDgUwJEz1v436oBb6p+W0cZbX6CHNn1KpzkJUMPP1h+GYo/U+ifnaNdJtOHWwZZGus/UUMufPqS114+mfvkZNNxpLHjQPS6Ax9JFwRh2Hdtjnqzy9WnP0k9Ky9QNmpiCDQVGG27pNB1yxF31jeT63Xu07ooLqLx3N7oy3UFO6TjZyYS+NaAPqUbbgquhvkZq5FGwX13/ND3L/YgPnsLH9jXch76OmsQKbjRQQd0WWrAv30r7bXbaOLIPXZHppG7GTQmOBQ/AeZeuHj1B7/HEOXSikg4/vZZmzV5Ba/mwsNbiX8uoiNygQR9HVWIJtzQUjYaLYrkp6w5QOfvhb04aSn3YDx9m3BRRVcehAN7VFCk3hAfz9p6kN29fQD9Y+REd4poJ2GKx9TuPXV0ln4qJNdxotPeiQD9dTc3sprw39gI60zufxsFNkb9cny0xiUoDMtrUFTTBr1e30huo8e399D/TfkPPcj9V8oF1/1qeFRGLHbOeiTXcaLj0g1hvPXSv2EqfuG20bngRXc43fAod/H8rHRgzrcX5gS39tOlKjEI4IcDGmzPHKql43ts0i7/g+y6rQe44yoiIgC19GFNNwTWLF0FdcLJh4cf1Cd/p5Q9SqyW7ex7lLL2X7vjsILq3WyZ/vIBzWZ3ImYy01wDch3AFUOMZbJ5TpH7rYVrAs64uPVvtYan1N2hgrbGIwQr38GHtHw+WW28AlCKLnP0IW+ubyLX0A9pxqIzWXNib+vLk7oPlYtNArqvwfDwcvYgLUsu2eP9pemfOSvrBwyvpHe4HuCAyGgKwvZ/siwuwoYV4styojwieYsaCGT14dj1lxfl7YZYlz3j2drr6Xy6m2T3zqD+PqpAZNmTt+BGAiiVYgcWHC8L3H46+toOeenAZvc/7wuUAzAI01vVnRCLwP8ElRlDiFW40EXUTwAVyAG4tA3tR3oI76J4xA+mOvHTKgKtiIIfq2kswcANquCDVTdTIj0YsvXcpLSo9rcatYZ31RaDmU8Aa5Wp/0BinxDPcUA3qhwXuEwCHLw5LbgGO+MyraNCDk+nuEb1pOrsr6TyyYiBnxXiLP8ABNW6dswvStP8UrXrmPVr8x410mPfXgUYcUGOID1CLbx3CfwLvFUWJd7hFFagnrLhALq4KLjoF9IyvXkb9Zk+lmSOK6Cv8XfZMfl7cQC4a9BECatyIqW6gBob6b0+toT/+5SM1OQ5cDgEbcd0FAdRwQeIWaq6bkkSBG5VFXQVyWHFxVQC4QK7iU4ZTr4e/RLeN7kdfzcugXAU57xnOBRYfIykE1htv8yioG6lm1zH6y3/9nZat/UQ96CQgA2yJ+3JB4h5sdFYiwS1wCeDe/jjAFosOa57+2c9Q4X9/mW4Z3Zdm8J3OQszJJ3c7Uwl0AI0Fkw80sFPBU5iV7zpOL//0VVqx9VP1pTAALEAjrltq8asTwlpz3S1JRLil8gI5XBUs8MdlfFwgV8AX5lHW4zfSxCsG0vUDu9NEfnY8Xax5Ml+Awu0QK13bRE2lZ2n9llJ6g4f11pdXW4+h6hYacfjUcus8YVwQrnM7SWS40RjUXyAXn1wgB+ACucTTxw2mbj+cRlNH9aZp/QroYobcpmZ3QkFcUiJbdLHQ8Bnw0gC7Hu5jFbRzDz8Dwi/nrtlUom6VwzLLIhYa6zrUsNJiqRPCBeH6tpNEh1sa5AtyfXQFcAN6gVydAHdNoAF3j6PpQ3rQlIIcGoxRFoCubg5x5niHXYcZz3wAaIx6VNRSSXEZrV28iVYt2UBHuCkCrkCNdT0O10OsdMJDzW1Rkixw6+0R0MVd0V0WuQgV0MXKO798CRV9bRxdMbQHje3TjS7n0Za+cF0wdq7DjgPFwroDZIgCmkPAjDHpttGO4/zo6YcHy2jbnzbRlld30CnOAmB1qAVoPR1Ay4IjyMLRxJdkg1vvEbQNroq4KwI7ABeovUNsQz7nzHHU78YxdMWQnjSWn0q8LDuNemIObVyQAnbrwpQzQ3Tg9fi5rYF/BV7klLgijX9wIQiYEeKtcn7r5czJKvqo+AxtW7mdtvxxkxq+E+urwytwSyh5BGgu0XI/AlcywXIkM9zSFWLJBXSEFsQcB+BYF+glriBvS7dPGU6FUy+iwcOKaFBRPg3qlkUD89NpIFv4fmzdnQAez1OLK6POLK91bBPLq0IGFxd8AjHSsN5mlVt4/PlYVROV8qQ2paeq6DDPr3d4zW4q4WE7fAsdYAJWAVbiANk7DpiRJjAjVIflMGkFfZAqgrbqC+AF6Ahl8QU20mS7vo86WXIzyfm1K6jfZQNpQEEm5fP0w1lZaZTNw47Z7L9ns4XPZl8+i61+NsOdwQA3svWtY9+4ni1xHfvJdTw8V1fPS2Mz1Vc0UNVHpXTkT1voWE2DB5AAFFCK1RVgBWR9Xc8j+wjMEnJRyS2pBLfekzrkiCtQOdThFaB9wS0nhYRShne5so5jIy4CwCACmncolhWQCpwIJS7wAmyJ+8rrXS5nTx3RFZ46rfZsqQCohwK7Hgr4HaXpZUgcR9PjWBfo9LikIRSQBWZ93V8a0vUyJI5jpKRA6UY8NSAgeoeAGmmBQu/9UDrSvAXwQQRCPRRQA4X6PhI/V6r59al0oxZPDQisSPUVlzQ9lLx6iLi3AEiIHgqk3qHk886rCjA/7TWADjESugZ0vUncO5RSJV3W9VBAlTRZ9w6xXdIkrwkDaKAjxQfY1WwOoIFQdGvADaDMzmz+f6SMYEX4z7hMAAAAAElFTkSuQmCC'};return{FaviconsByHue,};});'use strict';Polymer({is:'tr-ui-b-info-bar-group',ready(){this.messages_=[];},get messageCount(){return this.messages_.length;},clearMessages(){this.messages_=[];this.updateContents_();},addMessage(text,opt_buttons){opt_buttons=opt_buttons||[];for(let i=0;i<opt_buttons.length;i++){if(opt_buttons[i].buttonText===undefined){throw new Error('buttonText must be provided');}\nif(opt_buttons[i].onClick===undefined){throw new Error('onClick must be provided');}}\nthis.messages_.push({text,buttons:opt_buttons||[]});this.updateContents_();},updateContents_(){Polymer.dom(this.$.messages).textContent='';this.messages_.forEach(function(message){const bar=document.createElement('tr-ui-b-info-bar');bar.message=message.text;bar.visible=true;message.buttons.forEach(function(button){bar.addButton(button.buttonText,button.onClick);},this);Polymer.dom(this.$.messages).appendChild(bar);},this);}});'use strict';Polymer({is:'tr-ui-b-toolbar-button'});'use strict';tr.exportTo('tr.ui',function(){const Task=tr.b.Task;function FindController(brushingStateController){this.brushingStateController_=brushingStateController;this.filterHits_=[];this.currentHitIndex_=-1;this.activePromise_=Promise.resolve();this.activeTask_=undefined;}\nFindController.prototype={__proto__:Object.prototype,get model(){return this.brushingStateController_.model;},get brushingStateController(){return this.brushingStateController_;},enqueueOperation_(operation){let task;if(operation instanceof tr.b.Task){task=operation;}else{task=new tr.b.Task(operation,this);}\nif(this.activeTask_){this.activeTask_=this.activeTask_.enqueue(task);}else{this.activeTask_=task;this.activePromise_=Task.RunWhenIdle(this.activeTask_);this.activePromise_.then(function(){this.activePromise_=undefined;this.activeTask_=undefined;}.bind(this));}},startFiltering(filterText){const sc=this.brushingStateController_;if(!sc)return;this.enqueueOperation_(function(){this.filterHits_=[];this.currentHitIndex_=-1;}.bind(this));let stateFromString;try{stateFromString=sc.uiStateFromString(filterText);}catch(e){this.enqueueOperation_(function(){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=e.message;overlay.title='UI State Navigation Error';overlay.visible=true;});return this.activePromise_;}\nif(stateFromString!==undefined){this.enqueueOperation_(sc.navToPosition.bind(this,stateFromString,true));}else{if(filterText.length===0){this.enqueueOperation_(sc.findTextCleared.bind(sc));}else{const filter=new tr.c.FullTextFilter(filterText);const filterHitSet=new tr.model.EventSet();this.enqueueOperation_(sc.addAllEventsMatchingFilterToSelectionAsTask(filter,filterHitSet));this.enqueueOperation_(function(){this.filterHits_=filterHitSet.toArray();sc.findTextChangedTo(filterHitSet);}.bind(this));}}\nreturn this.activePromise_;},get filterHits(){return this.filterHits_;},get currentHitIndex(){return this.currentHitIndex_;},find_(dir){const firstHit=this.currentHitIndex_===-1;if(firstHit&&dir<0){this.currentHitIndex_=0;}\nconst N=this.filterHits.length;this.currentHitIndex_=(this.currentHitIndex_+dir+N)%N;if(!this.brushingStateController_)return;this.brushingStateController_.findFocusChangedTo(new tr.model.EventSet(this.filterHits[this.currentHitIndex]));},findNext(){this.find_(1);},findPrevious(){this.find_(-1);}};return{FindController,};});'use strict';tr.exportTo('tr.ui.b',function(){function TimingTool(viewport,targetElement){this.viewport_=viewport;this.onMouseMove_=this.onMouseMove_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.targetElement_=targetElement;this.isMovingLeftEdge_=false;}\nTimingTool.prototype={onEnterTiming(e){this.targetElement_.addEventListener('mousemove',this.onMouseMove_);this.targetElement_.addEventListener('dblclick',this.onDblClick_);},onBeginTiming(e){if(!this.isTouchPointInsideTrackBounds_(e.clientX,e.clientY)){return;}\nconst pt=this.getSnappedToEventPosition_(e);this.mouseDownAt_(pt.x,pt.y);this.updateSnapIndicators_(pt);},updateSnapIndicators_(pt){if(!pt.snapped)return;const ir=this.viewport_.interestRange;if(ir.min===pt.x){ir.leftSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);}\nif(ir.max===pt.x){ir.rightSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);}},onUpdateTiming(e){const pt=this.getSnappedToEventPosition_(e);this.mouseMoveAt_(pt.x,pt.y,true);this.updateSnapIndicators_(pt);},onEndTiming(e){this.mouseUp_();},onExitTiming(e){this.targetElement_.removeEventListener('mousemove',this.onMouseMove_);this.targetElement_.removeEventListener('dblclick',this.onDblClick_);},onMouseMove_(e){if(e.button)return;const worldX=this.getWorldXFromEvent_(e);this.mouseMoveAt_(worldX,e.clientY,false);},onDblClick_(e){},isTouchPointInsideTrackBounds_(clientX,clientY){if(!this.viewport_||!this.viewport_.modelTrackContainer||!this.viewport_.modelTrackContainer.canvas){return false;}\nconst canvas=this.viewport_.modelTrackContainer.canvas;const canvasRect=canvas.getBoundingClientRect();if(clientX>=canvasRect.left&&clientX<=canvasRect.right&&clientY>=canvasRect.top&&clientY<=canvasRect.bottom){return true;}\nreturn false;},mouseDownAt_(worldX,y){const ir=this.viewport_.interestRange;const dt=this.viewport_.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const nearnessThresholdWorld=dt.xViewVectorToWorld(6*pixelRatio);if(ir.isEmpty){ir.setMinAndMax(worldX,worldX);ir.rightSelected=true;this.isMovingLeftEdge_=false;return;}\nif(Math.abs(worldX-ir.min)<nearnessThresholdWorld){ir.leftSelected=true;ir.min=worldX;this.isMovingLeftEdge_=true;return;}\nif(Math.abs(worldX-ir.max)<nearnessThresholdWorld){ir.rightSelected=true;ir.max=worldX;this.isMovingLeftEdge_=false;return;}\nir.setMinAndMax(worldX,worldX);ir.rightSelected=true;this.isMovingLeftEdge_=false;},mouseMoveAt_(worldX,y,mouseDown){if(mouseDown){this.updateMovingEdge_(worldX);return;}\nconst ir=this.viewport_.interestRange;const dt=this.viewport_.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const nearnessThresholdWorld=dt.xViewVectorToWorld(6*pixelRatio);if(Math.abs(worldX-ir.min)<nearnessThresholdWorld){ir.leftSelected=true;ir.rightSelected=false;return;}\nif(Math.abs(worldX-ir.max)<nearnessThresholdWorld){ir.leftSelected=false;ir.rightSelected=true;return;}\nir.leftSelected=false;ir.rightSelected=false;return;},updateMovingEdge_(newWorldX){const ir=this.viewport_.interestRange;let a=ir.min;let b=ir.max;if(this.isMovingLeftEdge_){a=newWorldX;}else{b=newWorldX;}\nif(a<=b){ir.setMinAndMax(a,b);}else{ir.setMinAndMax(b,a);}\nif(ir.min===newWorldX){this.isMovingLeftEdge_=true;ir.leftSelected=true;ir.rightSelected=false;}else{this.isMovingLeftEdge_=false;ir.leftSelected=false;ir.rightSelected=true;}},mouseUp_(){const dt=this.viewport_.currentDisplayTransform;const ir=this.viewport_.interestRange;ir.leftSelected=false;ir.rightSelected=false;const pixelRatio=window.devicePixelRatio||1;const minWidthValue=dt.xViewVectorToWorld(2*pixelRatio);if(ir.range<minWidthValue){ir.reset();}},getWorldXFromEvent_(e){const pixelRatio=window.devicePixelRatio||1;const canvas=this.viewport_.modelTrackContainer.canvas;const worldOffset=canvas.getBoundingClientRect().left;const viewX=(e.clientX-worldOffset)*pixelRatio;return this.viewport_.currentDisplayTransform.xViewToWorld(viewX);},getSnappedToEventPosition_(e){const pixelRatio=window.devicePixelRatio||1;const EVENT_SNAP_RANGE=16*pixelRatio;const modelTrackContainer=this.viewport_.modelTrackContainer;const modelTrackContainerRect=modelTrackContainer.getBoundingClientRect();const viewport=this.viewport_;const dt=viewport.currentDisplayTransform;const worldMaxDist=dt.xViewVectorToWorld(EVENT_SNAP_RANGE);const worldX=this.getWorldXFromEvent_(e);const mouseY=e.clientY;const selection=new tr.model.EventSet();modelTrackContainer.addClosestEventToSelection(worldX,worldMaxDist,mouseY,mouseY,selection);if(!selection.length){modelTrackContainer.addClosestEventToSelection(worldX,worldMaxDist,modelTrackContainerRect.top,modelTrackContainerRect.bottom,selection);}\nlet minDistX=worldMaxDist;let minDistY=Infinity;const pixWidth=dt.xViewVectorToWorld(1);const result={x:worldX,y:mouseY-modelTrackContainerRect.top,height:0,snapped:false};const eventBounds=new tr.b.math.Range();for(const event of selection){const track=viewport.trackForEvent(event);const trackRect=track.getBoundingClientRect();eventBounds.reset();event.addBoundsToRange(eventBounds);let eventX;if(Math.abs(eventBounds.min-worldX)<Math.abs(eventBounds.max-worldX)){eventX=eventBounds.min;}else{eventX=eventBounds.max;}\nconst distX=eventX-worldX;const eventY=trackRect.top;const eventHeight=trackRect.height;const distY=Math.abs(eventY+eventHeight/2-mouseY);if((distX<=minDistX||Math.abs(distX-minDistX)<pixWidth)&&distY<minDistY){minDistX=distX;minDistY=distY;result.x=eventX;result.y=eventY+\nmodelTrackContainer.scrollTop-modelTrackContainerRect.top;result.height=eventHeight;result.snapped=true;}}\nreturn result;}};return{TimingTool,};});'use strict';tr.exportTo('tr.ui',function(){const kDefaultPanAnimationDurationMs=100.0;const lerp=tr.b.math.lerp;function TimelineDisplayTransformPanAnimation(deltaX,deltaY,opt_durationMs){this.deltaX=deltaX;this.deltaY=deltaY;if(opt_durationMs===undefined){this.durationMs=kDefaultPanAnimationDurationMs;}else{this.durationMs=opt_durationMs;}\nthis.startPanX=undefined;this.startPanY=undefined;this.startTimeMs=undefined;}\nTimelineDisplayTransformPanAnimation.prototype={__proto__:tr.ui.b.Animation.prototype,get affectsPanY(){return this.deltaY!==0;},canTakeOverFor(existingAnimation){return existingAnimation instanceof TimelineDisplayTransformPanAnimation;},takeOverFor(existing,timestamp,target){const remainingDeltaXOnExisting=existing.goalPanX-target.panX;const remainingDeltaYOnExisting=existing.goalPanY-target.panY;let remainingTimeOnExisting=timestamp-(existing.startTimeMs+existing.durationMs);remainingTimeOnExisting=Math.max(remainingTimeOnExisting,0);this.deltaX+=remainingDeltaXOnExisting;this.deltaY+=remainingDeltaYOnExisting;this.durationMs+=remainingTimeOnExisting;},start(timestamp,target){this.startTimeMs=timestamp;this.startPanX=target.panX;this.startPanY=target.panY;},tick(timestamp,target){let percentDone=(timestamp-this.startTimeMs)/this.durationMs;percentDone=tr.b.math.clamp(percentDone,0,1);target.panX=lerp(percentDone,this.startPanX,this.goalPanX);if(this.affectsPanY){target.panY=lerp(percentDone,this.startPanY,this.goalPanY);}\nreturn timestamp>=this.startTimeMs+this.durationMs;},get goalPanX(){return this.startPanX+this.deltaX;},get goalPanY(){return this.startPanY+this.deltaY;}};function TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,goalFocalPointY,zoomInRatioX,opt_durationMs){this.goalFocalPointXWorld=goalFocalPointXWorld;this.goalFocalPointXView=goalFocalPointXView;this.goalFocalPointY=goalFocalPointY;this.zoomInRatioX=zoomInRatioX;if(opt_durationMs===undefined){this.durationMs=kDefaultPanAnimationDurationMs;}else{this.durationMs=opt_durationMs;}\nthis.startTimeMs=undefined;this.startScaleX=undefined;this.goalScaleX=undefined;this.startPanY=undefined;}\nTimelineDisplayTransformZoomToAnimation.prototype={__proto__:tr.ui.b.Animation.prototype,get affectsPanY(){return this.startPanY!==this.goalFocalPointY;},canTakeOverFor(existingAnimation){return false;},takeOverFor(existingAnimation,timestamp,target){this.goalScaleX=target.scaleX*this.zoomInRatioX;},start(timestamp,target){this.startTimeMs=timestamp;this.startScaleX=target.scaleX;this.goalScaleX=this.zoomInRatioX*target.scaleX;this.startPanY=target.panY;},tick(timestamp,target){let percentDone=(timestamp-this.startTimeMs)/this.durationMs;percentDone=tr.b.math.clamp(percentDone,0,1);target.scaleX=lerp(percentDone,this.startScaleX,this.goalScaleX);if(this.affectsPanY){target.panY=lerp(percentDone,this.startPanY,this.goalFocalPointY);}\ntarget.xPanWorldPosToViewPos(this.goalFocalPointXWorld,this.goalFocalPointXView);return timestamp>=this.startTimeMs+this.durationMs;}};return{TimelineDisplayTransformPanAnimation,TimelineDisplayTransformZoomToAnimation,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const DrawType={GENERAL_EVENT:1,INSTANT_EVENT:2,BACKGROUND:3,GRID:4,FLOW_ARROWS:5,MARKERS:6,HIGHLIGHTS:7,ANNOTATIONS:8};const MAX_OVERSIZE_MULTIPLE=3.0;const REDRAW_SLOP=(MAX_OVERSIZE_MULTIPLE-1)/2;const DrawingContainer=tr.ui.b.define('drawing-container',tr.ui.tracks.Track);DrawingContainer.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('drawing-container');this.canvas_=document.createElement('canvas');this.canvas_.className='drawing-container-canvas';this.canvas_.style.left=tr.ui.b.constants.HEADING_WIDTH+'px';Polymer.dom(this).appendChild(this.canvas_);this.ctx_=this.canvas_.getContext('2d');this.offsetY_=0;this.viewportChange_=this.viewportChange_.bind(this);this.viewport.addEventListener('change',this.viewportChange_);window.addEventListener('resize',this.windowResized_.bind(this));this.addEventListener('scroll',this.scrollChanged_.bind(this));},get canvas(){return this.canvas_;},context(){return this.ctx_;},viewportChange_(){this.invalidate();},windowResized_(){this.invalidate();},scrollChanged_(){if(this.updateOffsetY_()){this.invalidate();}},invalidate(){if(this.rafPending_)return;this.rafPending_=true;tr.b.requestPreAnimationFrame(this.preDraw_,this);},preDraw_(){this.rafPending_=false;this.updateCanvasSizeIfNeeded_();tr.b.requestAnimationFrameInThisFrameIfPossible(this.draw_,this);},draw_(){this.ctx_.clearRect(0,0,this.canvas_.width,this.canvas_.height);const typesToDraw=[DrawType.BACKGROUND,DrawType.HIGHLIGHTS,DrawType.GRID,DrawType.INSTANT_EVENT,DrawType.GENERAL_EVENT,DrawType.MARKERS,DrawType.ANNOTATIONS,DrawType.FLOW_ARROWS];const children=this.children;for(const idx in typesToDraw){for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nchildren[i].drawTrack(typesToDraw[idx]);}}\nconst pixelRatio=window.devicePixelRatio||1;const bounds=this.canvas_.getBoundingClientRect();const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(bounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;this.viewport.drawGridLines(this.ctx_,viewLWorld,viewRWorld,viewHeight);},updateOffsetY_(){const maxYDelta=window.innerHeight*REDRAW_SLOP;let newOffset=this.scrollTop-maxYDelta;if(Math.abs(newOffset-this.offsetY_)<=maxYDelta)return false;const maxOffset=this.scrollHeight-\nthis.canvas_.getBoundingClientRect().height;newOffset=Math.max(0,Math.min(newOffset,maxOffset));if(newOffset!==this.offsetY_){this.offsetY_=newOffset;return true;}\nreturn false;},updateCanvasSizeIfNeeded_(){const visibleChildTracks=Array.from(this.children).filter(this.visibleFilter_);if(visibleChildTracks.length===0){return;}\nconst thisBounds=this.getBoundingClientRect();const firstChildTrackBounds=visibleChildTracks[0].getBoundingClientRect();const lastChildTrackBounds=visibleChildTracks[visibleChildTracks.length-1].getBoundingClientRect();const innerWidth=firstChildTrackBounds.width-\ntr.ui.b.constants.HEADING_WIDTH;const innerHeight=Math.min(lastChildTrackBounds.bottom-firstChildTrackBounds.top,Math.floor(window.innerHeight*MAX_OVERSIZE_MULTIPLE));const pixelRatio=window.devicePixelRatio||1;if(this.canvas_.width!==innerWidth*pixelRatio){this.canvas_.width=innerWidth*pixelRatio;this.canvas_.style.width=innerWidth+'px';}\nif(this.canvas_.height!==innerHeight*pixelRatio){this.canvas_.height=innerHeight*pixelRatio;this.canvas_.style.height=innerHeight+'px';}\nif(this.canvas_.top!==this.offsetY_){this.canvas_.top=this.offsetY_;this.canvas_.style.top=this.offsetY_+'px';}},visibleFilter_(element){if(!(element instanceof tr.ui.tracks.Track))return false;return window.getComputedStyle(element).display!=='none';},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const children=this.children;for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nconst trackClientRect=children[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){children[i].addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments);},addEventsToTrackMap(eventToTrackMap){const children=this.children;for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nchildren[i].addEventsToTrackMap(eventToTrackMap);}}};return{DrawingContainer,DrawType,};});'use strict';tr.exportTo('tr.model',function(){const SelectableItem=tr.model.SelectableItem;const SelectionState=tr.model.SelectionState;function ProxySelectableItem(modelItem){SelectableItem.call(this,modelItem);}\nProxySelectableItem.prototype={__proto__:SelectableItem.prototype,get selectionState(){const modelItem=this.modelItem_;if(modelItem===undefined){return SelectionState.NONE;}\nreturn modelItem.selectionState;}};return{ProxySelectableItem,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const EventPresenter=tr.ui.b.EventPresenter;const SelectionState=tr.model.SelectionState;const LetterDotTrack=tr.ui.b.define('letter-dot-track',tr.ui.tracks.Track);LetterDotTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('letter-dot-track');this.items_=undefined;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get items(){return this.items_;},set items(items){this.items_=items;this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},get dumpRadiusView(){return 7*(window.devicePixelRatio||1);},draw(type,viewLWorld,viewRWorld,viewHeight){if(this.items_===undefined)return;switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawLetterDots_(viewLWorld,viewRWorld);break;}},drawLetterDots_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const height=bounds.height*pixelRatio;const halfHeight=height*0.5;const twoPi=Math.PI*2;const dt=this.viewport.currentDisplayTransform;const dumpRadiusView=this.dumpRadiusView;const itemRadiusWorld=dt.xViewVectorToWorld(height);const items=this.items_;const loI=tr.b.findLowIndexInSortedArray(items,function(item){return item.start;},viewLWorld);const oldFont=ctx.font;ctx.font='400 '+Math.floor(9*pixelRatio)+'px Arial';ctx.strokeStyle='rgb(0,0,0)';ctx.textBaseline='middle';ctx.textAlign='center';const drawItems=function(selected){for(let i=loI;i<items.length;++i){const item=items[i];const x=item.start;if(x-itemRadiusWorld>viewRWorld)break;if(item.selected!==selected)continue;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getSelectableItemColorAsString(item);ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView+0.5,0,twoPi);ctx.fill();if(item.selected){ctx.lineWidth=3;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView,0,twoPi);ctx.lineWidth=1.5;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();}\nctx.fillStyle='rgb(255, 255, 255)';ctx.fillText(item.dotLetter,xView,halfHeight);}};drawItems(false);drawItems(true);ctx.lineWidth=1;ctx.font=oldFont;},addEventsToTrackMap(eventToTrackMap){if(this.items_===undefined)return;this.items_.forEach(function(item){item.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){if(this.items_===undefined)return;const itemRadiusWorld=viewPixWidthWorld*this.dumpRadiusView;tr.b.iterateOverIntersectingIntervals(this.items_,function(x){return x.start-itemRadiusWorld;},function(x){return 2*itemRadiusWorld;},loWX,hiWX,function(item){item.addToSelection(selection);}.bind(this));},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.items_===undefined)return;const index=this.items_.findIndex(item=>item.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex>=0&&newIndex<this.items_.length){this.items_[newIndex].addToSelection(selection);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){if(this.items_===undefined)return;const item=tr.b.findClosestElementInSortedArray(this.items_,function(x){return x.start;},worldX,worldMaxDist);if(!item)return;item.addToSelection(selection);}};function LetterDot(modelItem,dotLetter,colorId,start){tr.model.ProxySelectableItem.call(this,modelItem);this.dotLetter=dotLetter;this.colorId=colorId;this.start=start;}\nLetterDot.prototype={__proto__:tr.model.ProxySelectableItem.prototype};return{LetterDotTrack,LetterDot,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const AlertTrack=tr.ui.b.define('alert-track',tr.ui.tracks.LetterDotTrack);AlertTrack.prototype={__proto__:tr.ui.tracks.LetterDotTrack.prototype,decorate(viewport){tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this,viewport);this.heading='Alerts';this.alerts_=undefined;},get alerts(){return this.alerts_;},set alerts(alerts){this.alerts_=alerts;if(alerts===undefined){this.items=undefined;return;}\nthis.items=this.alerts_.map(function(alert){return new tr.ui.tracks.LetterDot(alert,String.fromCharCode(9888),alert.colorId,alert.start);});}};return{AlertTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Task=tr.b.Task;const ContainerTrack=tr.ui.b.define('container-track',tr.ui.tracks.Track);ContainerTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);},detach(){Polymer.dom(this).textContent='';},get tracks_(){const tracks=[];const children=this.children;for(let i=0;i<children.length;i++){if(children[i]instanceof tr.ui.tracks.Track){tracks.push(children[i]);}}\nreturn tracks;},drawTrack(type){this.tracks_.forEach(function(track){track.drawTrack(type);});},addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){const trackClientRect=tracks[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){tracks[i].addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addIntersectingEventsInRangeToSelection.apply(this,arguments);},addEventsToTrackMap(eventToTrackMap){for(const track of this.tracks_){track.addEventsToTrackMap(eventToTrackMap);}},addAllEventsMatchingFilterToSelection(filter,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){tracks[i].addAllEventsMatchingFilterToSelection(filter,selection);}},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const task=new Task();const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){task.subTask(function(i){return function(){tracks[i].addAllEventsMatchingFilterToSelection(filter,selection);};}(i),this);}\nreturn task;},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){const trackClientRect=tracks[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){tracks[i].addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments);},addContainersToTrackMap(containerToTrackMap){this.tracks_.forEach(function(track){track.addContainersToTrackMap(containerToTrackMap);});},clearTracks_(){this.tracks_.forEach(function(track){Polymer.dom(this).removeChild(track);},this);}};return{ContainerTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ChartPoint(modelItem,x,y,opt_yBase){tr.model.ProxySelectableItem.call(this,modelItem);this.x=x;this.y=y;this.dotLetter=undefined;this.yBase=opt_yBase;}\nChartPoint.prototype={__proto__:tr.model.ProxySelectableItem.prototype,};return{ChartPoint,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const EventPresenter=tr.ui.b.EventPresenter;const SelectionState=tr.model.SelectionState;const ChartSeriesType={LINE:0,AREA:1};const DEFAULT_RENDERING_CONFIG={chartType:ChartSeriesType.LINE,selectedPointSize:4,unselectedPointSize:3,solidSelectedDots:false,colorId:0,lineWidth:1,skipDistance:1,unselectedPointDensityTransparent:0.10,unselectedPointDensityOpaque:0.05,backgroundOpacity:0.5,stepGraph:true};const LAST_POINT_WIDTH=16;const DOT_LETTER_RADIUS_PX=7;const DOT_LETTER_RADIUS_PADDING_PX=0.5;const DOT_LETTER_SELECTED_OUTLINE_WIDTH_PX=3;const DOT_LETTER_SELECTED_OUTLINE_DETAIL_WIDTH_PX=1.5;const DOT_LETTER_UNSELECTED_OUTLINE_WIDTH_PX=1;const DOT_LETTER_FONT_WEIGHT=400;const DOT_LETTER_FONT_SIZE_PX=9;const DOT_LETTER_FONT='Arial';const ChartSeriesComponent={BACKGROUND:0,LINE:1,DOTS:2};function ChartSeries(points,seriesYAxis,opt_renderingConfig){this.points=points;this.seriesYAxis=seriesYAxis;this.useRenderingConfig_(opt_renderingConfig);}\nChartSeries.prototype={useRenderingConfig_(opt_renderingConfig){const config=opt_renderingConfig||{};for(const[key,defaultValue]of\nObject.entries(DEFAULT_RENDERING_CONFIG)){let value=config[key];if(value===undefined){value=defaultValue;}\nthis[key+'_']=value;}\nthis.topPadding=this.bottomPadding=Math.max(this.selectedPointSize_,this.unselectedPointSize_)/2;},get range(){const range=new tr.b.math.Range();this.points.forEach(function(point){range.addValue(point.y);},this);return range;},draw(ctx,transform,highDetails){if(this.points===undefined||this.points.length===0){return;}\nif(this.chartType_===ChartSeriesType.AREA){this.drawComponent_(ctx,transform,ChartSeriesComponent.BACKGROUND,highDetails);}\nif(this.chartType_===ChartSeriesType.LINE||highDetails){this.drawComponent_(ctx,transform,ChartSeriesComponent.LINE,highDetails);}\nthis.drawComponent_(ctx,transform,ChartSeriesComponent.DOTS,highDetails);},drawComponent_(ctx,transform,component,highDetails){let extraPixels=0;if(component===ChartSeriesComponent.DOTS){extraPixels=Math.max(this.selectedPointSize_,this.unselectedPointSize_);}\nconst pixelRatio=transform.pixelRatio;const leftViewX=transform.leftViewX-extraPixels*pixelRatio;const rightViewX=transform.rightViewX+extraPixels*pixelRatio;const leftTimestamp=transform.leftTimestamp-extraPixels;const rightTimestamp=transform.rightTimestamp+extraPixels;const firstVisibleIndex=tr.b.findLowIndexInSortedArray(this.points,function(point){return point.x;},leftTimestamp);let lastVisibleIndex=tr.b.findLowIndexInSortedArray(this.points,function(point){return point.x;},rightTimestamp);if(lastVisibleIndex>=this.points.length||this.points[lastVisibleIndex].x>rightTimestamp){lastVisibleIndex--;}\nconst viewSkipDistance=this.skipDistance_*pixelRatio;let selectedCircleRadius;let letterDotRadius;let squareSize;let squareHalfSize;let squareOpacity;let unselectedSeriesColor;let currentStateSeriesColor;ctx.save();ctx.font=DOT_LETTER_FONT_WEIGHT+' '+\nMath.floor(DOT_LETTER_FONT_SIZE_PX*pixelRatio)+'px '+\nDOT_LETTER_FONT;ctx.textBaseline='middle';ctx.textAlign='center';switch(component){case ChartSeriesComponent.DOTS:{selectedCircleRadius=(this.selectedPointSize_/2)*pixelRatio;letterDotRadius=Math.max(selectedCircleRadius,DOT_LETTER_RADIUS_PX*pixelRatio);squareSize=this.unselectedPointSize_*pixelRatio;squareHalfSize=squareSize/2;unselectedSeriesColor=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);if(!highDetails){squareOpacity=0;break;}\nconst visibleIndexRange=lastVisibleIndex-firstVisibleIndex;if(visibleIndexRange<=0){squareOpacity=1;break;}\nconst visibleViewXRange=transform.worldXToViewX(this.points[lastVisibleIndex].x)-\ntransform.worldXToViewX(this.points[firstVisibleIndex].x);if(visibleViewXRange===0){squareOpacity=1;break;}\nconst density=visibleIndexRange/visibleViewXRange;const clampedDensity=tr.b.math.clamp(density,this.unselectedPointDensityOpaque_,this.unselectedPointDensityTransparent_);const densityRange=this.unselectedPointDensityTransparent_-\nthis.unselectedPointDensityOpaque_;squareOpacity=(this.unselectedPointDensityTransparent_-clampedDensity)/densityRange;break;}\ncase ChartSeriesComponent.LINE:ctx.strokeStyle=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);ctx.lineWidth=this.lineWidth_*pixelRatio;break;case ChartSeriesComponent.BACKGROUND:break;default:throw new Error('Invalid component: '+component);}\nlet previousViewX=undefined;let previousViewY=undefined;let previousViewYBase=undefined;let lastSelectionState=undefined;let baseSteps=undefined;const startIndex=Math.max(firstVisibleIndex-1,0);let currentViewX;for(let i=startIndex;i<this.points.length;i++){const currentPoint=this.points[i];currentViewX=transform.worldXToViewX(currentPoint.x);if(currentViewX>rightViewX){if(previousViewX!==undefined){previousViewX=currentViewX=rightViewX;if(component===ChartSeriesComponent.BACKGROUND||component===ChartSeriesComponent.LINE){ctx.lineTo(currentViewX,previousViewY);}}\nbreak;}\nif(i+1<this.points.length){const nextPoint=this.points[i+1];const nextViewX=transform.worldXToViewX(nextPoint.x);if(previousViewX!==undefined&&nextViewX-previousViewX<=viewSkipDistance&&nextViewX<rightViewX){continue;}\nif(currentViewX<leftViewX){currentViewX=leftViewX;}}\nif(previousViewX!==undefined&&currentViewX-previousViewX<viewSkipDistance){currentViewX=previousViewX+viewSkipDistance;}\nconst currentViewY=Math.round(transform.worldYToViewY(currentPoint.y));let currentViewYBase;if(currentPoint.yBase===undefined){currentViewYBase=transform.outerBottomViewY;}else{currentViewYBase=Math.round(transform.worldYToViewY(currentPoint.yBase));}\nconst currentSelectionState=currentPoint.selectionState;if(currentSelectionState!==lastSelectionState){const opacity=currentSelectionState===SelectionState.SELECTED?1:squareOpacity;currentStateSeriesColor=EventPresenter.getCounterSeriesColor(this.colorId_,currentSelectionState,opacity);}\nswitch(component){case ChartSeriesComponent.DOTS:if(currentPoint.dotLetter){ctx.fillStyle=unselectedSeriesColor;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.beginPath();ctx.arc(currentViewX,currentViewY,letterDotRadius+DOT_LETTER_RADIUS_PADDING_PX,0,2*Math.PI);ctx.fill();if(currentSelectionState===SelectionState.SELECTED){ctx.lineWidth=DOT_LETTER_SELECTED_OUTLINE_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('olive');ctx.stroke();ctx.beginPath();ctx.arc(currentViewX,currentViewY,letterDotRadius,0,2*Math.PI);ctx.lineWidth=DOT_LETTER_SELECTED_OUTLINE_DETAIL_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('yellow');ctx.stroke();}else{ctx.lineWidth=DOT_LETTER_UNSELECTED_OUTLINE_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.stroke();}\nctx.fillStyle=ColorScheme.getColorForReservedNameAsString('white');ctx.fillText(currentPoint.dotLetter,currentViewX,currentViewY);}else{ctx.strokeStyle=unselectedSeriesColor;ctx.lineWidth=pixelRatio;if(currentSelectionState===SelectionState.SELECTED){if(this.solidSelectedDots_){ctx.fillStyle=ctx.strokeStyle;}else{ctx.fillStyle=currentStateSeriesColor;}\nctx.beginPath();ctx.arc(currentViewX,currentViewY,selectedCircleRadius,0,2*Math.PI);ctx.fill();ctx.stroke();}else if(squareOpacity>0){ctx.fillStyle=currentStateSeriesColor;ctx.fillRect(currentViewX-squareHalfSize,currentViewY-squareHalfSize,squareSize,squareSize);}}\nbreak;case ChartSeriesComponent.LINE:if(previousViewX===undefined){ctx.beginPath();ctx.moveTo(currentViewX,currentViewY);}else if(this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);}\nctx.lineTo(currentViewX,currentViewY);break;case ChartSeriesComponent.BACKGROUND:if(previousViewX!==undefined&&this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);}else{ctx.lineTo(currentViewX,currentViewY);}\nif(currentSelectionState!==lastSelectionState){if(previousViewX!==undefined){let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;}\nctx.closePath();ctx.fill();}\nctx.beginPath();ctx.fillStyle=EventPresenter.getCounterSeriesColor(this.colorId_,currentSelectionState,this.backgroundOpacity_);ctx.moveTo(currentViewX,currentViewYBase);baseSteps=[];}\nif(currentViewYBase!==previousViewYBase||currentSelectionState!==lastSelectionState){baseSteps.push({viewX:currentViewX,viewY:currentViewYBase});}\nctx.lineTo(currentViewX,currentViewY);break;default:throw new Error('Not reachable');}\npreviousViewX=currentViewX;previousViewY=currentViewY;previousViewYBase=currentViewYBase;lastSelectionState=currentSelectionState;}\nif(previousViewX!==undefined){switch(component){case ChartSeriesComponent.DOTS:break;case ChartSeriesComponent.LINE:ctx.stroke();break;case ChartSeriesComponent.BACKGROUND:{let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;}\nctx.closePath();ctx.fill();break;}\ndefault:throw new Error('Not reachable');}}\nctx.restore();},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){const points=this.points;function getPointWidth(point,i){if(i===points.length-1){return LAST_POINT_WIDTH*viewPixWidthWorld;}\nconst nextPoint=points[i+1];return nextPoint.x-point.x;}\nfunction selectPoint(point){point.addToSelection(selection);}\ntr.b.iterateOverIntersectingIntervals(this.points,function(point){return point.x;},getPointWidth,loWX,hiWX,selectPoint);},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.points===undefined)return false;const index=this.points.findIndex(point=>point.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.points.length)return false;this.points[newIndex].addToSelection(selection);return true;},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){if(this.points===undefined)return;const item=tr.b.findClosestElementInSortedArray(this.points,function(point){return point.x;},worldX,worldMaxDist);if(!item)return;item.addToSelection(selection);}};return{ChartSeries,ChartSeriesType,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const IDEAL_MAJOR_MARK_HEIGHT_PX=30;const AXIS_LABLE_MARGIN_PX=10;const AXIS_LABLE_FONT_SIZE_PX=9;const AXIS_LABLE_FONT='Arial';function ChartSeriesYAxis(opt_min,opt_max){this.guid_=tr.b.GUID.allocateSimple();this.bounds=new tr.b.math.Range();if(opt_min!==undefined)this.bounds.addValue(opt_min);if(opt_max!==undefined)this.bounds.addValue(opt_max);}\nChartSeriesYAxis.prototype={get guid(){return this.guid_;},valueToUnitRange(value){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');}\nconst bounds=this.bounds;if(bounds.range===0)return 0;return(value-bounds.min)/bounds.range;},unitRangeToValue(unitRange){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');}\nreturn unitRange*this.bounds.range+this.bounds.min;},autoSetFromSeries(series,opt_config){const range=new tr.b.math.Range();series.forEach(function(s){range.addRange(s.range);},this);this.autoSetFromRange(range,opt_config);},autoSetFromRange(range,opt_config){if(range.isEmpty)return;const bounds=this.bounds;if(bounds.isEmpty){bounds.addRange(range);return;}\nif(!opt_config)return;const useRangeMin=(opt_config.expandMin&&range.min<bounds.min||opt_config.shrinkMin&&range.min>bounds.min);const useRangeMax=(opt_config.expandMax&&range.max>bounds.max||opt_config.shrinkMax&&range.max<bounds.max);if(!useRangeMin&&!useRangeMax)return;if(useRangeMin&&useRangeMax){bounds.min=range.min;bounds.max=range.max;return;}\nif(useRangeMin){bounds.min=Math.min(range.min,bounds.max);}else{bounds.max=Math.max(range.max,bounds.min);}},majorMarkHeightWorld_(transform,pixelRatio){const idealMajorMarkHeightPx=IDEAL_MAJOR_MARK_HEIGHT_PX*pixelRatio;const idealMajorMarkHeightWorld=transform.vectorToWorldDistance(idealMajorMarkHeightPx);return tr.b.math.preferredNumberLargerThanMin(idealMajorMarkHeightWorld);},draw(ctx,transform,showYAxisLabels,showYGridLines){if(!showYAxisLabels&&!showYGridLines)return;const pixelRatio=transform.pixelRatio;const viewTop=transform.outerTopViewY;const worldTop=transform.viewYToWorldY(viewTop);const viewBottom=transform.outerBottomViewY;const viewHeight=viewBottom-viewTop;const viewLeft=transform.leftViewX;const viewRight=transform.rightViewX;const labelLeft=transform.leftYLabel;ctx.save();ctx.lineWidth=pixelRatio;ctx.fillStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.textAlign='left';ctx.textBaseline='center';ctx.font=(AXIS_LABLE_FONT_SIZE_PX*pixelRatio)+'px '+AXIS_LABLE_FONT;ctx.beginPath();ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');tr.ui.b.drawLine(ctx,viewLeft,viewTop,viewLeft,viewBottom,viewLeft);ctx.stroke();ctx.closePath();ctx.beginPath();ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('grey');const majorMarkHeight=this.majorMarkHeightWorld_(transform,pixelRatio);const maxMajorMark=Math.max(transform.viewYToWorldY(viewTop),Math.abs(transform.viewYToWorldY(viewBottom)));for(let curWorldY=0;curWorldY<=maxMajorMark;curWorldY+=majorMarkHeight){const roundedUnitValue=Math.floor(curWorldY*1000000)/1000000;const curViewYPositive=transform.worldYToViewY(curWorldY);if(curViewYPositive>=viewTop){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYPositive-AXIS_LABLE_MARGIN_PX);}\nif(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYPositive,viewRight,curViewYPositive);}}\nconst curViewYNegative=transform.worldYToViewY(-1*curWorldY);if(curViewYNegative<=viewBottom){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYNegative-AXIS_LABLE_MARGIN_PX);}\nif(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYNegative,viewRight,curViewYNegative);}}}\nctx.stroke();ctx.restore();}};return{ChartSeriesYAxis,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ChartTransform(displayTransform,axis,trackWidth,trackHeight,topPadding,bottomPadding,pixelRatio){this.pixelRatio=pixelRatio;this.leftViewX=0;this.rightViewX=trackWidth;this.leftTimestamp=displayTransform.xViewToWorld(this.leftViewX);this.rightTimestamp=displayTransform.xViewToWorld(this.rightViewX);this.displayTransform_=displayTransform;this.outerTopViewY=0;this.innerTopViewY=topPadding;this.innerBottomViewY=trackHeight-bottomPadding;this.outerBottomViewY=trackHeight;this.axis_=axis;this.innerHeight_=this.innerBottomViewY-this.innerTopViewY;}\nChartTransform.prototype={worldXToViewX(worldX){return this.displayTransform_.xWorldToView(worldX);},viewXToWorldX(viewX){return this.displayTransform_.xViewToWorld(viewX);},vectorToWorldDistance(viewY){return this.axis_.bounds.range*Math.abs(viewY/this.innerHeight_);},viewYToWorldY(viewY){return this.axis_.unitRangeToValue(1-(viewY-this.innerTopViewY)/this.innerHeight_);},worldYToViewY(worldY){const innerHeightCoefficient=1-this.axis_.valueToUnitRange(worldY);return innerHeightCoefficient*this.innerHeight_+this.innerTopViewY;}};return{ChartTransform,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ChartTrack=tr.ui.b.define('chart-track',tr.ui.tracks.Track);ChartTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('chart-track');this.series_=undefined;this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;this.showYAxisLabels_=undefined;this.showGridLines_=undefined;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get series(){return this.series_;},set series(series){this.series_=series;this.calculateAxisDataAndPadding_();this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;this.invalidateDrawingContainer();},get showYAxisLabels(){return this.showYAxisLabels_;},set showYAxisLabels(showYAxisLabels){this.showYAxisLabels_=showYAxisLabels;this.invalidateDrawingContainer();},get showGridLines(){return this.showGridLines_;},set showGridLines(showGridLines){this.showGridLines_=showGridLines;this.invalidateDrawingContainer();},get hasVisibleContent(){return!!this.series&&this.series.length>0;},calculateAxisDataAndPadding_(){if(!this.series_){this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;return;}\nconst axisGuidToAxisData={};let topPadding=0;let bottomPadding=0;this.series_.forEach(function(series){const seriesYAxis=series.seriesYAxis;const axisGuid=seriesYAxis.guid;if(!(axisGuid in axisGuidToAxisData)){axisGuidToAxisData[axisGuid]={axis:seriesYAxis,series:[]};if(!this.axes_)this.axes_=[];this.axes_.push(seriesYAxis);}\naxisGuidToAxisData[axisGuid].series.push(series);topPadding=Math.max(topPadding,series.topPadding);bottomPadding=Math.max(bottomPadding,series.bottomPadding);},this);this.axisGuidToAxisData_=axisGuidToAxisData;this.topPadding_=topPadding;this.bottomPadding_=bottomPadding;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawChart_(viewLWorld,viewRWorld);break;}},drawChart_(viewLWorld,viewRWorld){if(!this.series_)return;const ctx=this.context();const displayTransform=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const highDetails=this.viewport.highDetails;const width=bounds.width*pixelRatio;const height=bounds.height*pixelRatio;const topPadding=this.topPadding_*pixelRatio;const bottomPadding=this.bottomPadding_*pixelRatio;ctx.save();ctx.beginPath();ctx.rect(0,0,width,height);ctx.clip();if(this.axes_){if((this.showGridLines_||this.showYAxisLabels_)&&this.axes_.length>1){throw new Error('Only one axis allowed when showing grid lines.');}\nfor(const yAxis of this.axes_){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,yAxis,width,height,topPadding,bottomPadding,pixelRatio);yAxis.draw(ctx,chartTransform,this.showYAxisLabels_,this.showGridLines_);}}\nfor(const series of this.series){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,series.seriesYAxis,width,height,topPadding,bottomPadding,pixelRatio);series.draw(ctx,chartTransform,highDetails);}\nctx.restore();},addEventsToTrackMap(eventToTrackMap){this.series_.forEach(function(series){series.points.forEach(function(point){point.addToTrackMap(eventToTrackMap,this);},this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){this.series_.forEach(function(series){series.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},this);},addEventNearToProvidedEventToSelection(event,offset,selection){let foundItem=false;this.series_.forEach(function(series){foundItem=foundItem||series.addEventNearToProvidedEventToSelection(event,offset,selection);},this);return foundItem;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.series_.forEach(function(series){series.addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);},this);},autoSetAllAxes(opt_config){for(const axisData of Object.values(this.axisGuidToAxisData_)){const seriesYAxis=axisData.axis;const series=axisData.series;seriesYAxis.autoSetFromSeries(series,opt_config);}},autoSetAxis(seriesYAxis,opt_config){const series=this.axisGuidToAxisData_[seriesYAxis.guid].series;seriesYAxis.autoSetFromSeries(series,opt_config);}};return{ChartTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ChartTrack=tr.ui.tracks.ChartTrack;const CpuUsageTrack=tr.ui.b.define('cpu-usage-track',ChartTrack);CpuUsageTrack.prototype={__proto__:ChartTrack.prototype,decorate(viewport){ChartTrack.prototype.decorate.call(this,viewport);this.classList.add('cpu-usage-track');this.heading='CPU usage';this.cpuUsageSeries_=undefined;},initialize(model){if(model!==undefined){this.cpuUsageSeries_=model.device.cpuUsageSeries;}else{this.cpuUsageSeries_=undefined;}\nthis.series=this.buildChartSeries_();this.autoSetAllAxes({expandMax:true});},get hasVisibleContent(){return!!this.cpuUsageSeries_&&this.cpuUsageSeries_.samples.length>0;},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.series_,this);},buildChartSeries_(yAxis,color){if(!this.hasVisibleContent)return[];yAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const usageSamples=this.cpuUsageSeries_.samples;const pts=new Array(usageSamples.length+1);for(let i=0;i<usageSamples.length;i++){pts[i]=new tr.ui.tracks.ChartPoint(undefined,usageSamples[i].start,usageSamples[i].usage);}\npts[usageSamples.length]=new tr.ui.tracks.ChartPoint(undefined,usageSamples[usageSamples.length-1].start,0);const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:color};return[new tr.ui.tracks.ChartSeries(pts,yAxis,renderingConfig)];},};return{CpuUsageTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ChartTrack=tr.ui.tracks.ChartTrack;const PowerSeriesTrack=tr.ui.b.define('power-series-track',ChartTrack);PowerSeriesTrack.prototype={__proto__:ChartTrack.prototype,decorate(viewport){ChartTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('power-series-track');this.heading='Power';this.powerSeries_=undefined;},set powerSeries(powerSeries){this.powerSeries_=powerSeries;this.series=this.buildChartSeries_();this.autoSetAllAxes({expandMax:true});},get hasVisibleContent(){return(this.powerSeries_&&this.powerSeries_.samples.length>0);},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.powerSeries_,this);},buildChartSeries_(){if(!this.hasVisibleContent)return[];const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const pts=this.powerSeries_.samples.map(function(smpl){return new tr.ui.tracks.ChartPoint(smpl,smpl.start,smpl.powerInW);});const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString(this.heading)};return[new tr.ui.tracks.ChartSeries(pts,seriesYAxis,renderingConfig)];}};return{PowerSeriesTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SpacingTrack=tr.ui.b.define('spacing-track',tr.ui.tracks.Track);SpacingTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('spacing-track');this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},addAllEventsMatchingFilterToSelection(filter,selection){}};return{SpacingTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ContainerTrack=tr.ui.tracks.ContainerTrack;const DeviceTrack=tr.ui.b.define('device-track',ContainerTrack);DeviceTrack.prototype={__proto__:ContainerTrack.prototype,decorate(viewport){ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('device-track');this.device_=undefined;this.powerSeriesTrack_=undefined;},get device(){return this.device_;},set device(device){this.device_=device;this.updateContents_();},get powerSeriesTrack(){return this.powerSeriesTrack_;},get hasVisibleContent(){return(this.powerSeriesTrack_&&this.powerSeriesTrack_.hasVisibleContent);},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.device,this);},addEventsToTrackMap(eventToTrackMap){this.tracks_.forEach(function(track){track.addEventsToTrackMap(eventToTrackMap);});},appendPowerSeriesTrack_(){this.powerSeriesTrack_=new tr.ui.tracks.PowerSeriesTrack(this.viewport);this.powerSeriesTrack_.powerSeries=this.device.powerSeries;if(this.powerSeriesTrack_.hasVisibleContent){Polymer.dom(this).appendChild(this.powerSeriesTrack_);Polymer.dom(this).appendChild(new tr.ui.tracks.SpacingTrack(this.viewport));}},updateContents_(){this.clearTracks_();this.appendPowerSeriesTrack_();}};return{DeviceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const SYSTEM_MEMORY_CHART_RENDERING_CONFIG={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString('systemMemory'),backgroundOpacity:0.8};const SYSTEM_MEMORY_SERIES_NAMES=['Used (KB)','Swapped (KB)'];function extractGlobalMemoryDumpUsedSizes(globalMemoryDump,addSize){for(const[pid,pmd]of\nObject.entries(globalMemoryDump.processMemoryDumps)){const mostRecentVmRegions=pmd.mostRecentVmRegions;if(mostRecentVmRegions===undefined)continue;addSize(pid,mostRecentVmRegions.byteStats.proportionalResident||0,pmd.process.userFriendlyName);}}\nfunction extractProcessMemoryDumpAllocatorSizes(processMemoryDump,addSize){const allocatorDumps=processMemoryDump.memoryAllocatorDumps;if(allocatorDumps===undefined)return;allocatorDumps.forEach(function(allocatorDump){if(allocatorDump.fullName==='tracing')return;const allocatorSize=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(allocatorSize===undefined)return;const allocatorSizeValue=allocatorSize.value;if(allocatorSizeValue===undefined)return;addSize(allocatorDump.fullName,allocatorSizeValue);});}\nfunction extractGlobalMemoryDumpAllocatorSizes(globalMemoryDump,addSize){for(const pmd of Object.values(globalMemoryDump.processMemoryDumps)){extractProcessMemoryDumpAllocatorSizes(pmd,addSize);}}\nfunction buildMemoryChartSeries(memoryDumps,dumpSizeExtractor){const dumpCount=memoryDumps.length;const idToTimestampToPoint={};const idToName={};memoryDumps.forEach(function(dump,index){dumpSizeExtractor(dump,function addSize(id,size,opt_name){let timestampToPoint=idToTimestampToPoint[id];if(timestampToPoint===undefined){idToTimestampToPoint[id]=timestampToPoint=new Array(dumpCount);for(let i=0;i<dumpCount;i++){const modelItem=memoryDumps[i];timestampToPoint[i]=new tr.ui.tracks.ChartPoint(modelItem,modelItem.start,0);}}\ntimestampToPoint[index].y+=size;if(opt_name!==undefined)idToName[id]=opt_name;});});const ids=Object.keys(idToTimestampToPoint);if(ids.length===0)return undefined;ids.sort();for(let i=0;i<dumpCount;i++){let baseSize=0;for(let j=ids.length-1;j>=0;j--){const point=idToTimestampToPoint[ids[j]][i];point.yBase=baseSize;point.y+=baseSize;baseSize=point.y;}}\nconst seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0);const series=ids.map(function(id){const colorId=ColorScheme.getColorIdForGeneralPurposeString(idToName[id]||id);const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId,backgroundOpacity:0.8};return new tr.ui.tracks.ChartSeries(idToTimestampToPoint[id],seriesYAxis,renderingConfig);});series.reverse();return series;}\nfunction buildMemoryLetterDots(memoryDumps){const backgroundMemoryColorId=ColorScheme.getColorIdForReservedName('background_memory_dump');const lightMemoryColorId=ColorScheme.getColorIdForReservedName('light_memory_dump');const detailedMemoryColorId=ColorScheme.getColorIdForReservedName('detailed_memory_dump');return memoryDumps.map(function(memoryDump){let memoryColorId;switch(memoryDump.levelOfDetail){case BACKGROUND:memoryColorId=backgroundMemoryColorId;break;case DETAILED:memoryColorId=detailedMemoryColorId;break;case LIGHT:default:memoryColorId=lightMemoryColorId;}\nreturn new tr.ui.tracks.LetterDot(memoryDump,'M',memoryColorId,memoryDump.start);});}\nfunction buildGlobalUsedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpUsedSizes);}\nfunction buildProcessAllocatedMemoryChartSeries(processMemoryDumps){return buildMemoryChartSeries(processMemoryDumps,extractProcessMemoryDumpAllocatorSizes);}\nfunction buildGlobalAllocatedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpAllocatorSizes);}\nfunction buildSystemMemoryChartSeries(model){if(model.kernel.counters===undefined)return;const memoryCounter=model.kernel.counters['global.SystemMemory'];if(memoryCounter===undefined)return;const tracks=[];for(const name of SYSTEM_MEMORY_SERIES_NAMES){const series=memoryCounter.series.find(series=>series.name===name);if(series===undefined||series.samples.length===0)return;const chartPoints=[];const valueRange=new tr.b.math.Range();for(const sample of series.samples){chartPoints.push(new tr.ui.tracks.ChartPoint(sample,sample.timestamp,sample.value,0));valueRange.addValue(sample.value);}\nconst baseLine=Math.max(0,valueRange.min-valueRange.range);const axisY=new tr.ui.tracks.ChartSeriesYAxis(baseLine,valueRange.max);const chartSeries=[new tr.ui.tracks.ChartSeries(chartPoints,axisY,SYSTEM_MEMORY_CHART_RENDERING_CONFIG)];tracks.push({name:'System Memory '+name,series:chartSeries});}\nreturn tracks;}\nreturn{buildMemoryLetterDots,buildGlobalUsedMemoryChartSeries,buildProcessAllocatedMemoryChartSeries,buildGlobalAllocatedMemoryChartSeries,buildSystemMemoryChartSeries,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const USED_MEMORY_TRACK_HEIGHT=50;const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const GlobalMemoryDumpTrack=tr.ui.b.define('global-memory-dump-track',tr.ui.tracks.ContainerTrack);GlobalMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendDumpDotsTrack_();this.appendUsedMemoryTrack_();this.appendAllocatedMemoryTrack_();},appendDumpDotsTrack_(){const items=tr.ui.tracks.buildMemoryLetterDots(this.memoryDumps_);if(!items)return;const track=new tr.ui.tracks.LetterDotTrack(this.viewport);track.heading='Memory Dumps';track.items=items;Polymer.dom(this).appendChild(track);},appendUsedMemoryTrack_(){const tracks=[];const perProcessSeries=tr.ui.tracks.buildGlobalUsedMemoryChartSeries(this.memoryDumps_);if(perProcessSeries!==undefined){tracks.push({name:'Memory per process',series:perProcessSeries});}else{tracks.push.apply(tracks,tr.ui.tracks.buildSystemMemoryChartSeries(this.memoryDumps_[0].model));}\nfor(const{name,series}of tracks){const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading=name;track.height=USED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{GlobalMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.b',function(){function FastRectRenderer(ctx,xMin,xMax,minRectSize,maxMergeDist,palette){this.ctx_=ctx;this.xMin_=xMin;this.xMax_=xMax;this.minRectSize_=minRectSize;this.maxMergeDist_=maxMergeDist;this.palette_=palette;}\nFastRectRenderer.prototype={y_:0,h_:0,merging_:false,mergeStartX_:0,mergeCurRight_:0,mergedColorId_:0,mergedAlpha_:0,setYandH(y,h){if(this.y_===y&&this.h_===h){return;}\nthis.flush();this.y_=y;this.h_=h;},fillRect(x,w,colorId,alpha){const r=x+w;if(w<this.minRectSize_){if(r-this.mergeStartX_>this.maxMergeDist_){this.flush();}\nif(!this.merging_){this.merging_=true;this.mergeStartX_=x;this.mergeCurRight_=r;this.mergedColorId_=colorId;this.mergedAlpha_=alpha;}else{this.mergeCurRight_=r;if(this.mergedAlpha_<alpha||(this.mergedAlpha_===alpha&&this.mergedColorId_<colorId)){this.mergedAlpha_=alpha;this.mergedColorId_=colorId;}}}else{if(this.merging_){this.flush();}\nthis.ctx_.fillStyle=this.palette_[colorId];this.ctx_.globalAlpha=alpha;const xLeft=Math.max(x,this.xMin_);const xRight=Math.min(r,this.xMax_);if(xLeft<xRight){this.ctx_.fillRect(xLeft,this.y_,xRight-xLeft,this.h_);}}},flush(){if(this.merging_){this.ctx_.fillStyle=this.palette_[this.mergedColorId_];this.ctx_.globalAlpha=this.mergedAlpha_;const xLeft=Math.max(this.mergeStartX_,this.xMin_);const xRight=Math.min(this.mergeCurRight_,this.xMax_);if(xLeft<xRight){this.ctx_.fillRect(xLeft,this.y_,xRight-xLeft,this.h_);}\nthis.merging_=false;}}};return{FastRectRenderer,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const RectTrack=tr.ui.b.define('rect-track',tr.ui.tracks.Track);RectTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('rect-track');this.asyncStyle_=false;this.rects_=null;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},set selectionGenerator(generator){this.heading_.selectionGenerator=generator;},set expanded(expanded){this.heading_.expanded=!!expanded;},set arrowVisible(arrowVisible){this.heading_.arrowVisible=!!arrowVisible;},get expanded(){return this.heading_.expanded;},get asyncStyle(){return this.asyncStyle_;},set asyncStyle(v){this.asyncStyle_=!!v;},get rects(){return this.rects_;},set rects(rects){this.rects_=rects||[];this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;this.invalidateDrawingContainer();},get hasVisibleContent(){return this.rects_.length>0;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawRects_(viewLWorld,viewRWorld);break;}},drawRects_(viewLWorld,viewRWorld){const ctx=this.context();ctx.save();const bounds=this.getBoundingClientRect();tr.ui.b.drawSlices(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.rects_,this.asyncStyle_);ctx.restore();if(bounds.height<=6)return;let fontSize;let yOffset;if(bounds.height<15){fontSize=6;yOffset=1.0;}else{fontSize=10;yOffset=2.5;}\ntr.ui.b.drawLabels(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,this.rects_,this.asyncStyle_,fontSize,yOffset);},addEventsToTrackMap(eventToTrackMap){if(this.rects_===undefined||this.rects_===null){return;}\nthis.rects_.forEach(function(rect){rect.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onRect(rect){rect.addToSelection(selection);}\nonRect=onRect.bind(this);const instantEventWidth=2*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.rects_,function(x){return x.start;},function(x){return x.duration===0?x.duration+instantEventWidth:x.duration;},loWX,hiWX,onRect);},addEventNearToProvidedEventToSelection(event,offset,selection){const index=this.rects_.findIndex(rect=>rect.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.rects_.length)return false;this.rects_[newIndex].addToSelection(selection);return true;},addAllEventsMatchingFilterToSelection(filter,selection){for(let i=0;i<this.rects_.length;++i){const modelItem=this.rects_[i].modelItem;if(!modelItem)continue;if(filter.matchSlice(modelItem)){selection.push(modelItem);}}},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const rect=tr.b.findClosestIntervalInSortedIntervals(this.rects_,function(x){return x.start;},function(x){return x.end;},worldX,worldMaxDist);if(!rect)return;rect.addToSelection(selection);}};function Rect(modelItem,title,colorId,start,duration){tr.model.ProxySelectableItem.call(this,modelItem);this.title=title;this.colorId=colorId;this.start=start;this.duration=duration;this.end=start+duration;}\nRect.prototype={__proto__:tr.model.ProxySelectableItem.prototype};return{RectTrack,Rect,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SliceTrack=tr.ui.b.define('slice-track',tr.ui.tracks.RectTrack);SliceTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get slices(){return this.rects;},set slices(slices){this.rects=slices;}};return{SliceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const CpuTrack=tr.ui.b.define('cpu-track',tr.ui.tracks.ContainerTrack);CpuTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('cpu-track');this.detailedMode_=true;},get cpu(){return this.cpu_;},set cpu(cpu){this.cpu_=cpu;this.updateContents_();},get detailedMode(){return this.detailedMode_;},set detailedMode(detailedMode){this.detailedMode_=detailedMode;this.updateContents_();},get tooltip(){return this.tooltip_;},set tooltip(value){this.tooltip_=value;this.updateContents_();},get hasVisibleContent(){if(this.cpu_===undefined)return false;const cpu=this.cpu_;if(cpu.slices.length)return true;if(cpu.samples&&cpu.samples.length)return true;if(Object.keys(cpu.counters).length>0)return true;return false;},updateContents_(){this.detach();if(!this.cpu_)return;const slices=this.cpu_.slices;if(slices.length){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;track.heading=this.cpu_.userFriendlyName+':';Polymer.dom(this).appendChild(track);}\nif(this.detailedMode_){this.appendSamplesTracks_();for(const counterName in this.cpu_.counters){const counter=this.cpu_.counters[counterName];const track=new tr.ui.tracks.CounterTrack(this.viewport);track.heading=this.cpu_.userFriendlyName+' '+\ncounter.name+':';track.counter=counter;Polymer.dom(this).appendChild(track);}}},appendSamplesTracks_(){const samples=this.cpu_.samples;if(samples===undefined||samples.length===0){return;}\nconst samplesByTitle={};samples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];}\nsamplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SliceTrack(this.viewport);samplesTrack.group=this.cpu_;samplesTrack.slices=samples;samplesTrack.heading=this.cpu_.userFriendlyName+': '+\nsampleTitle;samplesTrack.tooltip=this.cpu_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;i<samplesTrack.slices.length;i++){selection.push(samplesTrack.slices[i]);}\nreturn selection;};Polymer.dom(this).appendChild(samplesTrack);},this);}};return{CpuTrack,};});'use strict';tr.exportTo('tr.model',function(){const Settings=tr.b.Settings;function ModelSettings(model){this.model=model;this.objectsByKey_=[];this.nonuniqueKeys_=[];this.buildObjectsByKeyMap_();this.removeNonuniqueKeysFromSettings_();this.ephemeralSettingsByGUID_={};}\nModelSettings.prototype={buildObjectsByKeyMap_(){const objects=[];this.model.iterateAllPersistableObjects(function(o){objects.push(o);});const objectsByKey={};const NONUNIQUE_KEY='nonuniqueKey';for(let i=0;i<objects.length;i++){const object=objects[i];const objectKey=object.getSettingsKey();if(!objectKey)continue;if(objectsByKey[objectKey]===undefined){objectsByKey[objectKey]=object;continue;}\nobjectsByKey[objectKey]=NONUNIQUE_KEY;}\nconst nonuniqueKeys={};Object.keys(objectsByKey).forEach(function(objectKey){if(objectsByKey[objectKey]!==NONUNIQUE_KEY){return;}\ndelete objectsByKey[objectKey];nonuniqueKeys[objectKey]=true;});this.nonuniqueKeys=nonuniqueKeys;this.objectsByKey_=objectsByKey;},removeNonuniqueKeysFromSettings_(){const settings=Settings.get('trace_model_settings',{});let settingsChanged=false;Object.keys(settings).forEach(function(objectKey){if(!this.nonuniqueKeys[objectKey]){return;}\nsettingsChanged=true;delete settings[objectKey];},this);if(settingsChanged){Settings.set('trace_model_settings',settings);}},hasUniqueSettingKey(object){const objectKey=object.getSettingsKey();if(!objectKey)return false;return this.objectsByKey_[objectKey]!==undefined;},getSettingFor(object,objectLevelKey,defaultValue){const objectKey=object.getSettingsKey();if(!objectKey||!this.objectsByKey_[objectKey]){const settings=this.getEphemeralSettingsFor_(object);const ephemeralValue=settings[objectLevelKey];if(ephemeralValue!==undefined){return ephemeralValue;}\nreturn defaultValue;}\nconst settings=Settings.get('trace_model_settings',{});if(!settings[objectKey]){settings[objectKey]={};}\nconst value=settings[objectKey][objectLevelKey];if(value!==undefined){return value;}\nreturn defaultValue;},setSettingFor(object,objectLevelKey,value){const objectKey=object.getSettingsKey();if(!objectKey||!this.objectsByKey_[objectKey]){this.getEphemeralSettingsFor_(object)[objectLevelKey]=value;return;}\nconst settings=Settings.get('trace_model_settings',{});if(!settings[objectKey]){settings[objectKey]={};}\nif(settings[objectKey][objectLevelKey]===value){return;}\nsettings[objectKey][objectLevelKey]=value;Settings.set('trace_model_settings',settings);},getEphemeralSettingsFor_(object){if(object.guid===undefined){throw new Error('Only objects with GUIDs can be persisted');}\nif(this.ephemeralSettingsByGUID_[object.guid]===undefined){this.ephemeralSettingsByGUID_[object.guid]={};}\nreturn this.ephemeralSettingsByGUID_[object.guid];}};return{ModelSettings,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const CounterTrack=tr.ui.b.define('counter-track',tr.ui.tracks.ChartTrack);CounterTrack.prototype={__proto__:tr.ui.tracks.ChartTrack.prototype,decorate(viewport){tr.ui.tracks.ChartTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('counter-track');},get counter(){return this.chart;},set counter(counter){this.heading=counter.name+': ';this.series=CounterTrack.buildChartSeriesFromCounter(counter);this.autoSetAllAxes({expandMax:true});},getModelEventFromItem(chartValue){return chartValue;}};CounterTrack.buildChartSeriesFromCounter=function(counter){const numSeries=counter.series.length;const totals=counter.totals;const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const chartSeries=counter.series.map(function(series,seriesIndex){const chartPoints=series.samples.map(function(sample,sampleIndex){const total=totals[sampleIndex*numSeries+seriesIndex];return new tr.ui.tracks.ChartPoint(sample,sample.timestamp,total);});const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:series.color};return new tr.ui.tracks.ChartSeries(chartPoints,seriesYAxis,renderingConfig);});chartSeries.reverse();return chartSeries;};return{CounterTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const startCompare=function(x,y){return x.start-y.start;};const FrameTrack=tr.ui.b.define('frame-track',tr.ui.tracks.LetterDotTrack);FrameTrack.prototype={__proto__:tr.ui.tracks.LetterDotTrack.prototype,decorate(viewport){tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this,viewport);this.heading='Frames';this.frames_=undefined;this.items=undefined;},get frames(){return this.frames_;},set frames(frames){this.frames_=frames;if(frames===undefined)return;this.frames_=this.frames_.slice();this.frames_.sort(startCompare);this.items=this.frames_.map(function(frame){return new FrameDot(frame);});}};function FrameDot(frame){tr.ui.tracks.LetterDot.call(this,frame,'F',frame.colorId,frame.start);}\nFrameDot.prototype={__proto__:tr.ui.tracks.LetterDot.prototype};return{FrameTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const MultiRowTrack=tr.ui.b.define('multi-row-track',tr.ui.tracks.ContainerTrack);MultiRowTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.tooltip_='';this.heading_='';this.groupingSource_=undefined;this.itemsToGroup_=undefined;this.defaultToCollapsedWhenSubRowCountMoreThan=1;this.currentSubRowsWithHeadings_=undefined;this.expanded_=true;},get itemsToGroup(){return this.itemsToGroup_;},setItemsToGroup(itemsToGroup,opt_groupingSource){this.itemsToGroup_=itemsToGroup;this.groupingSource_=opt_groupingSource;this.currentSubRowsWithHeadings_=undefined;this.updateContents_();this.updateExpandedStateFromGroupingSource_();},setPrebuiltSubRows(groupingSource,subRowsWithHeadings){this.itemsToGroup_=undefined;this.groupingSource_=groupingSource;this.currentSubRowsWithHeadings_=subRowsWithHeadings;this.updateContents_();this.updateExpandedStateFromGroupingSource_();},get heading(){return this.heading_;},set heading(h){this.heading_=h;this.updateHeadingAndTooltip_();},get tooltip(){return this.tooltip_;},set tooltip(t){this.tooltip_=t;this.updateHeadingAndTooltip_();},get subRows(){return this.currentSubRowsWithHeadings_.map(elem=>elem.row);},get hasVisibleContent(){return this.children.length>0;},get expanded(){return this.expanded_;},set expanded(expanded){if(this.expanded_===expanded)return;this.expanded_=expanded;this.expandedStateChanged_();},onHeadingClicked_(e){if(this.subRows.length<=1)return;this.expanded=!this.expanded;if(this.groupingSource_){const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);modelSettings.setSettingFor(this.groupingSource_,'expanded',this.expanded);}\ne.stopPropagation();},updateExpandedStateFromGroupingSource_(){if(this.groupingSource_){const numSubRows=this.subRows.length;const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);if(numSubRows>1){let defaultExpanded;if(numSubRows>this.defaultToCollapsedWhenSubRowCountMoreThan){defaultExpanded=false;}else{defaultExpanded=true;}\nthis.expanded=modelSettings.getSettingFor(this.groupingSource_,'expanded',defaultExpanded);}else{this.expanded=undefined;}}},expandedStateChanged_(){const children=this.children;const minH=Math.max(2,Math.ceil(18/children.length));const h=(this.expanded_?18:minH)+'px';for(let i=0;i<children.length;i++){children[i].height=h;if(i===0){children[i].arrowVisible=true;}\nchildren[i].expanded=this.expanded;}\nif(children.length===1){children[0].expanded=true;children[0].arrowVisible=false;}},updateContents_(){tr.ui.tracks.ContainerTrack.prototype.updateContents_.call(this);this.detach();if(this.currentSubRowsWithHeadings_===undefined){if(this.itemsToGroup_===undefined){return;}\nconst subRows=this.buildSubRows_(this.itemsToGroup_);this.currentSubRowsWithHeadings_=subRows.map(row=>{return{row,heading:undefined};});}\nif(this.currentSubRowsWithHeadings_===undefined||this.currentSubRowsWithHeadings_.length===0){return;}\nconst addSubTrackEx=(items,opt_heading)=>{const track=this.addSubTrack_(items);if(opt_heading!==undefined){track.heading=opt_heading;}\ntrack.addEventListener('heading-clicked',this.onHeadingClicked_.bind(this));};if(this.currentSubRowsWithHeadings_[0].heading!==undefined&&this.currentSubRowsWithHeadings_[0].heading!==this.heading_){addSubTrackEx([]);}\nfor(const subRowWithHeading of this.currentSubRowsWithHeadings_){const subRow=subRowWithHeading.row;if(subRow.length===0){continue;}\naddSubTrackEx(subRow,subRowWithHeading.heading);}\nthis.updateHeadingAndTooltip_();this.expandedStateChanged_();},updateHeadingAndTooltip_(){if(!Polymer.dom(this).firstChild)return;Polymer.dom(this).firstChild.heading=this.heading_;Polymer.dom(this).firstChild.tooltip=this.tooltip_;},buildSubRows_(itemsToGroup){throw new Error('Not implemented');},addSubTrack_(subRowItems){throw new Error('Not implemented');},areArrayContentsSame_(a,b){if(!a||!b)return false;if(!a.length||!b.length)return false;if(a.length!==b.length)return false;for(let i=0;i<a.length;++i){if(a[i]!==b[i])return false;}\nreturn true;}};return{MultiRowTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ObjectInstanceGroupTrack=tr.ui.b.define('object-instance-group-track',tr.ui.tracks.MultiRowTrack);ObjectInstanceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('object-instance-group-track');this.objectInstances_=undefined;},get objectInstances(){return this.itemsToGroup;},set objectInstances(objectInstances){this.setItemsToGroup(objectInstances);},addSubTrack_(objectInstances){const hasMultipleRows=this.subRows.length>1;const track=new tr.ui.tracks.ObjectInstanceTrack(this.viewport);track.objectInstances=objectInstances;Polymer.dom(this).appendChild(track);return track;},buildSubRows_(objectInstances){objectInstances.sort(function(x,y){return x.creationTs-y.creationTs;});const subRows=[];for(let i=0;i<objectInstances.length;i++){const objectInstance=objectInstances[i];let found=false;for(let j=0;j<subRows.length;j++){const subRow=subRows[j];const lastItemInSubRow=subRow[subRow.length-1];if(objectInstance.creationTs>=lastItemInSubRow.deletionTs){found=true;subRow.push(objectInstance);break;}}\nif(!found){subRows.push([objectInstance]);}}\nreturn subRows;},updateHeadingAndTooltip_(){}};return{ObjectInstanceGroupTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const AsyncSliceGroupTrack=tr.ui.b.define('async-slice-group-track',tr.ui.tracks.MultiRowTrack);AsyncSliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('async-slice-group-track');this.group_=undefined;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);track.asyncStyle=true;return track;},get group(){return this.group_;},set group(group){this.group_=group;this.buildAndSetSubRows_();},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildAndSetSubRows_(){if(this.group_.viewSubGroups.length<=1){const rows=groupAsyncSlicesIntoSubRows(this.group_.slices);const rowsWithHeadings=rows.map(row=>{return{row,heading:undefined};});this.setPrebuiltSubRows(this.group_,rowsWithHeadings);return;}\nconst rowsWithHeadings=[];for(const subGroup of this.group_.viewSubGroups){const subGroupRows=groupAsyncSlicesIntoSubRows(subGroup.slices);if(subGroupRows.length===0){continue;}\nfor(let i=0;i<subGroupRows.length;i++){rowsWithHeadings.push({row:subGroupRows[i],heading:(i===0?subGroup.title:'')});}}\nthis.setPrebuiltSubRows(this.group_,rowsWithHeadings);}};function stripSlice_(slice){if(slice.subSlices!==undefined&&slice.subSlices.length===1){const subSlice=slice.subSlices[0];if(tr.b.math.approximately(subSlice.start,slice.start,1)&&tr.b.math.approximately(subSlice.duration,slice.duration,1)){return subSlice;}}\nreturn slice;}\nfunction makeLevelSubRows_(slices){const rows=[];const putSlice=(slice,level)=>{while(rows.length<=level){rows.push([]);}\nrows[level].push(slice);};const putSliceRecursively=(slice,level)=>{putSlice(slice,level);if(slice.subSlices!==undefined){for(const subSlice of slice.subSlices){putSliceRecursively(subSlice,level+1);}}};for(const slice of slices){putSliceRecursively(stripSlice_(slice),0);}\nreturn rows;}\nfunction groupAsyncSlicesIntoSubRows(slices,opt_skipSort){if(!opt_skipSort){slices.sort((x,y)=>x.start-y.start);}\nconst rows=[];let slicesLeft=slices;while(slicesLeft.length!==0){const fit=[];const unfit=[];let levelEndTime=-1;for(const slice of slicesLeft){if(slice.start>=levelEndTime){levelEndTime=slice.end;fit.push(slice);}else{unfit.push(slice);}}\nrows.push(...makeLevelSubRows_(fit));slicesLeft=unfit;}\nreturn rows;}\nreturn{AsyncSliceGroupTrack,groupAsyncSlicesIntoSubRows,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SampleTrack=tr.ui.b.define('sample-track',tr.ui.tracks.RectTrack);SampleTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get samples(){return this.rects;},set samples(samples){this.rects=samples;}};return{SampleTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SliceGroupTrack=tr.ui.b.define('slice-group-track',tr.ui.tracks.MultiRowTrack);SliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('slice-group-track');this.group_=undefined;this.defaultToCollapsedWhenSubRowCountMoreThan=100;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);return track;},get group(){return this.group_;},set group(group){this.group_=group;this.setItemsToGroup(this.group_.slices,this.group_);},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildSubRows_(slices){const precisionUnit=this.group.model.intrinsicTimeUnit;if(!slices.length)return[];const ops=[];for(let i=0;i<slices.length;i++){if(slices[i].subSlices){slices[i].subSlices.splice(0,slices[i].subSlices.length);}\nops.push(i);}\nops.sort(function(ix,iy){const x=slices[ix];const y=slices[iy];if(x.start!==y.start)return x.start-y.start;return ix-iy;});const subRows=[[]];this.badSlices_=[];for(let i=0;i<ops.length;i++){const op=ops[i];const slice=slices[op];let inserted=false;for(let j=subRows.length-1;j>=0;j--){if(subRows[j].length===0)continue;const insertedSlice=subRows[j][subRows[j].length-1];if(slice.start<insertedSlice.start){this.badSlices_.push(slice);inserted=true;}\nif(insertedSlice.bounds(slice,precisionUnit)){while(subRows.length<=j+1){subRows.push([]);}\nsubRows[j+1].push(slice);if(insertedSlice.subSlices){insertedSlice.subSlices.push(slice);}\ninserted=true;break;}}\nif(inserted)continue;subRows[0].push(slice);}\nreturn subRows;}};return{SliceGroupTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ThreadTrack=tr.ui.b.define('thread-track',tr.ui.tracks.ContainerTrack);ThreadTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('thread-track');this.heading_=document.createElement('tr-ui-b-heading');},get thread(){return this.thread_;},set thread(thread){this.thread_=thread;this.updateContents_();},get hasVisibleContent(){return this.tracks_.length>0;},get hasSlices(){return this.thread_.asyncSliceGroup.length>0||this.thread_.sliceGroup.length>0;},get hasTimeSlices(){return this.thread_.timeSlices;},get eventContainer(){return this.thread;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.thread,this);},updateContents_(){this.detach();if(!this.thread_)return;this.heading_.heading=this.thread_.userFriendlyName;this.heading_.tooltip=this.thread_.userFriendlyDetails;if(this.thread_.asyncSliceGroup.length){this.appendAsyncSliceTracks_();}\nthis.appendThreadSamplesTracks_();let needsHeading=false;if(this.thread_.timeSlices){const timeSlicesTrack=new tr.ui.tracks.SliceTrack(this.viewport);timeSlicesTrack.heading='';timeSlicesTrack.height=tr.ui.b.THIN_SLICE_HEIGHT+'px';timeSlicesTrack.slices=this.thread_.timeSlices;if(timeSlicesTrack.hasVisibleContent){needsHeading=true;Polymer.dom(this).appendChild(timeSlicesTrack);}}\nif(this.thread_.sliceGroup.length){const track=new tr.ui.tracks.SliceGroupTrack(this.viewport);track.heading=this.thread_.userFriendlyName;track.tooltip=this.thread_.userFriendlyDetails;track.group=this.thread_.sliceGroup;if(track.hasVisibleContent){needsHeading=false;Polymer.dom(this).appendChild(track);}}\nif(needsHeading){Polymer.dom(this).appendChild(this.heading_);}},appendAsyncSliceTracks_(){const subGroups=this.thread_.asyncSliceGroup.viewSubGroups;subGroups.forEach(function(subGroup){const asyncTrack=new tr.ui.tracks.AsyncSliceGroupTrack(this.viewport);asyncTrack.group=subGroup;asyncTrack.heading=subGroup.title;if(asyncTrack.hasVisibleContent){Polymer.dom(this).appendChild(asyncTrack);}},this);},appendThreadSamplesTracks_(){const threadSamples=this.thread_.samples;if(threadSamples===undefined||threadSamples.length===0){return;}\nconst samplesByTitle={};threadSamples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];}\nsamplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SampleTrack(this.viewport);samplesTrack.group=this.thread_;samplesTrack.samples=samples;samplesTrack.heading=this.thread_.userFriendlyName+': '+\nsampleTitle;samplesTrack.tooltip=this.thread_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;i<samplesTrack.samples.length;i++){selection.push(samplesTrack.samples[i]);}\nreturn selection;};Polymer.dom(this).appendChild(samplesTrack);},this);},collapsedDidChange(collapsed){if(collapsed){let h=parseInt(this.tracks[0].height);for(let i=0;i<this.tracks.length;++i){if(h>2){this.tracks[i].height=Math.floor(h)+'px';}else{this.tracks[i].style.display='none';}\nh=h*0.5;}}else{for(let i=0;i<this.tracks.length;++i){this.tracks[i].height=this.tracks[0].height;this.tracks[i].style.display='';}}}};return{ThreadTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const OtherThreadsTrack=tr.ui.b.define('other-threads-track',tr.ui.tracks.OtherThreadsTrack);const SpacingTrack=tr.ui.tracks.SpacingTrack;OtherThreadsTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.header_=document.createElement('tr-ui-b-heading');this.header_.addEventListener('click',this.onHeaderClick_.bind(this));this.header_.heading='Other Threads';this.header_.tooltip='Threads with only scheduling information';this.header_.arrowVisible=true;this.threads_=[];this.expanded=false;this.collapsible_=true;},set threads(threads){this.threads_=threads;this.updateContents_();},set collapsible(collapsible){this.collapsible_=collapsible;this.updateContents_();},onHeaderClick_(e){e.stopPropagation();e.preventDefault();this.expanded=!this.expanded;},get expanded(){return this.header_.expanded;},set expanded(expanded){expanded=!!expanded;if(this.expanded===expanded)return;this.header_.expanded=expanded;this.viewport_.dispatchChangeEvent();this.updateContents_();},updateContents_(){this.detach();if(this.collapsible_){Polymer.dom(this).appendChild(this.header_);}\nif(this.expanded||!this.collapsible_){for(const thread of this.threads_){const track=new tr.ui.tracks.ThreadTrack(this.viewport);track.thread=thread;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}}}};return{OtherThreadsTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ProcessSummaryTrack=tr.ui.b.define('process-summary-track',tr.ui.tracks.RectTrack);ProcessSummaryTrack.buildRectsFromProcess=function(process){if(!process)return[];const ops=[];const pushOp=function(isStart,time,slice){ops.push({isStart,time,slice});};for(const tid in process.threads){const sliceGroup=process.threads[tid].sliceGroup;sliceGroup.topLevelSlices.forEach(function(slice){pushOp(true,slice.start,undefined);pushOp(false,slice.end,undefined);});sliceGroup.slices.forEach(function(slice){if(slice.important){pushOp(true,slice.start,slice);pushOp(false,slice.end,slice);}});}\nops.sort(function(a,b){return a.time-b.time;});const rects=[];const genericColorId=ColorScheme.getColorIdForReservedName('generic_work');const pushRect=function(start,end,slice){rects.push(new tr.ui.tracks.Rect(slice,slice?slice.title:'',slice?slice.colorId:genericColorId,start,end-start));};let depth=0;let currentSlice=undefined;let lastStart=undefined;ops.forEach(function(op){depth+=op.isStart?1:-1;if(currentSlice){if(!op.isStart&&op.slice===currentSlice){pushRect(lastStart,op.time,currentSlice);lastStart=depth>=1?op.time:undefined;currentSlice=undefined;}}else{if(op.isStart){if(depth===1){lastStart=op.time;currentSlice=op.slice;}else if(op.slice){if(op.time!==lastStart){pushRect(lastStart,op.time,undefined);lastStart=op.time;}\ncurrentSlice=op.slice;}}else{if(depth===0){pushRect(lastStart,op.time,undefined);lastStart=undefined;}}}});return rects;};ProcessSummaryTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get process(){return this.process_;},set process(process){this.process_=process;this.rects=ProcessSummaryTrack.buildRectsFromProcess(process);}};return{ProcessSummaryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ObjectSnapshotView=tr.ui.analysis.ObjectSnapshotView;const ObjectInstanceView=tr.ui.analysis.ObjectInstanceView;const SpacingTrack=tr.ui.tracks.SpacingTrack;const ProcessTrackBase=tr.ui.b.define('process-track-base',tr.ui.tracks.ContainerTrack);ProcessTrackBase.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.processBase_=undefined;Polymer.dom(this).classList.add('process-track-base');Polymer.dom(this).classList.add('expanded');this.processNameEl_=tr.ui.b.createSpan();Polymer.dom(this.processNameEl_).classList.add('process-track-name');this.closeEl_=tr.ui.b.createSpan();Polymer.dom(this.closeEl_).classList.add('process-track-close');this.closeEl_.textContent='X';this.headerEl_=tr.ui.b.createDiv({className:'process-track-header'});Polymer.dom(this.headerEl_).appendChild(this.processNameEl_);Polymer.dom(this.headerEl_).appendChild(this.closeEl_);this.headerEl_.addEventListener('click',this.onHeaderClick_.bind(this));Polymer.dom(this).appendChild(this.headerEl_);},get processBase(){return this.processBase_;},set processBase(processBase){this.processBase_=processBase;if(this.processBase_){const modelSettings=new tr.model.ModelSettings(this.processBase_.model);const defaultValue=this.processBase_.important;this.expanded=modelSettings.getSettingFor(this.processBase_,'expanded',defaultValue);}\nthis.updateContents_();},get expanded(){return Polymer.dom(this).classList.contains('expanded');},set expanded(expanded){expanded=!!expanded;if(this.expanded===expanded)return;Polymer.dom(this).classList.toggle('expanded');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;const modelSettings=new tr.model.ModelSettings(this.processBase_.model);modelSettings.setSettingFor(this.processBase_,'expanded',expanded);this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},set visible(visible){if(visible===this.visible)return;this.hidden=!visible;tr.b.dispatchSimpleEvent(this,'visibility');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},get visible(){return!this.hidden;},get hasVisibleContent(){if(this.expanded){return this.children.length>1;}\nreturn true;},onHeaderClick_(e){e.stopPropagation();e.preventDefault();if(e.target===this.closeEl_){this.visible=false;}else{this.expanded=!this.expanded;}},updateContents_(){this.clearTracks_();if(!this.processBase_)return;if(!this.visible)return;Polymer.dom(this.processNameEl_).textContent=this.processBase_.userFriendlyName;this.headerEl_.title=this.processBase_.userFriendlyDetails;this.willAppendTracks_();if(this.expanded){this.appendMemoryDumpTrack_();this.appendObjectInstanceTracks_();this.appendCounterTracks_();this.appendFrameTrack_();this.appendThreadTracks_();}else{this.appendSummaryTrack_();}\nthis.didAppendTracks_();},willAppendTracks_(){},didAppendTracks_(){},appendMemoryDumpTrack_(){},appendSummaryTrack_(){const track=new tr.ui.tracks.ProcessSummaryTrack(this.viewport);track.process=this.process;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendFrameTrack_(){const frames=this.process?this.process.frames:undefined;if(!frames||!frames.length)return;const track=new tr.ui.tracks.FrameTrack(this.viewport);track.frames=frames;Polymer.dom(this).appendChild(track);},appendObjectInstanceTracks_(){const instancesByTypeName=this.processBase_.objects.getAllInstancesByTypeName();const instanceTypeNames=Object.keys(instancesByTypeName);instanceTypeNames.sort();let didAppendAtLeastOneTrack=false;instanceTypeNames.forEach(function(typeName){const allInstances=instancesByTypeName[typeName];let instanceViewInfo=ObjectInstanceView.getTypeInfo(undefined,typeName);let snapshotViewInfo=ObjectSnapshotView.getTypeInfo(undefined,typeName);if(instanceViewInfo&&!instanceViewInfo.metadata.showInTrackView){instanceViewInfo=undefined;}\nif(snapshotViewInfo&&!snapshotViewInfo.metadata.showInTrackView){snapshotViewInfo=undefined;}\nconst hasViewInfo=instanceViewInfo||snapshotViewInfo;const visibleInstances=[];for(let i=0;i<allInstances.length;i++){const instance=allInstances[i];if(instance.snapshots.length===0)continue;if(instance.hasImplicitSnapshots&&!hasViewInfo)continue;visibleInstances.push(instance);}\nif(visibleInstances.length===0)return;let trackConstructor=tr.ui.tracks.ObjectInstanceTrack.getConstructor(undefined,typeName);if(!trackConstructor){snapshotViewInfo=ObjectSnapshotView.getTypeInfo(undefined,typeName);if(snapshotViewInfo&&snapshotViewInfo.metadata.showInstances){trackConstructor=tr.ui.tracks.ObjectInstanceGroupTrack;}else{trackConstructor=tr.ui.tracks.ObjectInstanceTrack;}}\nconst track=new trackConstructor(this.viewport);track.objectInstances=visibleInstances;Polymer.dom(this).appendChild(track);didAppendAtLeastOneTrack=true;},this);if(didAppendAtLeastOneTrack){Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}},appendCounterTracks_(){const counters=Object.values(this.processBase.counters);counters.sort(tr.model.Counter.compare);counters.forEach(function(counter){const track=new tr.ui.tracks.CounterTrack(this.viewport);track.counter=counter;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}.bind(this));},appendThreadTracks_(){const threads=Object.values(this.processBase.threads);threads.sort(tr.model.Thread.compare);const otherThreads=[];let hasVisibleThreads=false;threads.forEach(function(thread){const track=new tr.ui.tracks.ThreadTrack(this.viewport);track.thread=thread;if(!track.hasVisibleContent)return;if(track.hasSlices){hasVisibleThreads=true;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}else if(track.hasTimeSlices){otherThreads.push(thread);}}.bind(this));if(otherThreads.length>0){const track=new tr.ui.tracks.OtherThreadsTrack(this.viewport);track.threads=otherThreads;track.collapsible=otherThreads.length>1&&hasVisibleThreads;Polymer.dom(this).appendChild(track);}}};return{ProcessTrackBase,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Cpu=tr.model.Cpu;const CpuTrack=tr.ui.tracks.cpu_track;const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const SpacingTrack=tr.ui.tracks.SpacingTrack;const KernelTrack=tr.ui.b.define('kernel-track',ProcessTrackBase);KernelTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){ProcessTrackBase.prototype.decorate.call(this,viewport);},set kernel(kernel){this.processBase=kernel;},get kernel(){return this.processBase;},get eventContainer(){return this.kernel;},get hasVisibleContent(){return this.children.length>1;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.kernel,this);},willAppendTracks_(){const cpus=Object.values(this.kernel.cpus);cpus.sort(tr.model.Cpu.compare);let didAppendAtLeastOneTrack=false;for(let i=0;i<cpus.length;++i){const cpu=cpus[i];const track=new tr.ui.tracks.CpuTrack(this.viewport);track.detailedMode=this.expanded;track.cpu=cpu;if(!track.hasVisibleContent)continue;Polymer.dom(this).appendChild(track);didAppendAtLeastOneTrack=true;}\nif(didAppendAtLeastOneTrack){Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}}};return{KernelTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const InteractionTrack=tr.ui.b.define('interaction-track',tr.ui.tracks.MultiRowTrack);InteractionTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);this.heading='Interactions';this.subRows_=[];},set model(model){this.setItemsToGroup(model.userModel.expectations,{guid:tr.b.GUID.allocateSimple(),model,getSettingsKey(){return undefined;}});},buildSubRows_(slices){if(this.subRows_.length){return this.subRows_;}\nthis.subRows_.push(...tr.ui.tracks.groupAsyncSlicesIntoSubRows(slices,true));return this.subRows_;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);return track;}};return{InteractionTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const LetterDotTrack=tr.ui.tracks.LetterDotTrack;const MemoryTrack=tr.ui.b.define('memory-track',LetterDotTrack);MemoryTrack.prototype={__proto__:LetterDotTrack.prototype,decorate(viewport){LetterDotTrack.prototype.decorate.call(this,viewport);this.classList.add('memory-track');this.heading='Memory Events';this.lowMemoryEvents_=undefined;},initialize(model){if(model!==undefined){this.lowMemoryEvents_=model.device.lowMemoryEvents;}else{this.lowMemoryEvents_=undefined;}\nif(this.hasVisibleContent){this.items=this.buildMemoryLetterDots_(this.lowMemoryEvents_);}},get hasVisibleContent(){return!!this.lowMemoryEvents_&&this.lowMemoryEvents_.length!==0;},buildMemoryLetterDots_(memoryEvents){return memoryEvents.map(memoryEvent=>new tr.ui.tracks.LetterDot(memoryEvent,'K',ColorScheme.getColorIdForReservedName('background_memory_dump'),memoryEvent.start));},};return{MemoryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const ProcessMemoryDumpTrack=tr.ui.b.define('process-memory-dump-track',tr.ui.tracks.ContainerTrack);ProcessMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendAllocatedMemoryTrack_();},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{ProcessMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const ProcessTrack=tr.ui.b.define('process-track',ProcessTrackBase);ProcessTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){tr.ui.tracks.ProcessTrackBase.prototype.decorate.call(this,viewport);},drawTrack(type){switch(type){case tr.ui.tracks.DrawType.INSTANT_EVENT:{if(!this.processBase.instantEvents||this.processBase.instantEvents.length===0){break;}\nconst ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);tr.ui.b.drawInstantSlicesAsLines(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.processBase.instantEvents,2);ctx.restore();break;}\ncase tr.ui.tracks.DrawType.BACKGROUND:this.drawBackground_();return;}\ntr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this,type);},drawBackground_(){const ctx=this.context();const canvasBounds=ctx.canvas.getBoundingClientRect();const pixelRatio=window.devicePixelRatio||1;const children=this.children;let draw=false;ctx.fillStyle='#eee';for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)||(children[i]instanceof tr.ui.tracks.SpacingTrack)){continue;}\ndraw=!draw;if(!draw)continue;const bounds=children[i].getBoundingClientRect();ctx.fillRect(0,pixelRatio*(bounds.top-canvasBounds.top),ctx.canvas.width,pixelRatio*bounds.height);}},set process(process){this.processBase=process;},get process(){return this.processBase;},get eventContainer(){return this.process;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.process,this);},appendMemoryDumpTrack_(){const processMemoryDumps=this.process.memoryDumps;if(processMemoryDumps.length){const pmdt=new tr.ui.tracks.ProcessMemoryDumpTrack(this.viewport_);pmdt.memoryDumps=processMemoryDumps;Polymer.dom(this).appendChild(pmdt);}},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onPickHit(instantEvent){selection.push(instantEvent);}\nconst instantEventWidth=2*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.processBase.instantEvents,function(x){return x.start;},function(x){return x.duration+instantEventWidth;},loWX,hiWX,onPickHit.bind(this));tr.ui.tracks.ContainerTrack.prototype.addIntersectingEventsInRangeToSelectionInWorldSpace.apply(this,arguments);},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.addClosestInstantEventToSelection(this.processBase.instantEvents,worldX,worldMaxDist,selection);tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,arguments);}};return{ProcessTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SelectionState=tr.model.SelectionState;const ColorScheme=tr.b.ColorScheme;const EventPresenter=tr.ui.b.EventPresenter;const ModelTrack=tr.ui.b.define('model-track',tr.ui.tracks.ContainerTrack);ModelTrack.VSYNC_HIGHLIGHT_ALPHA=0.1;ModelTrack.VSYNC_DENSITY_TRANSPARENT=0.20;ModelTrack.VSYNC_DENSITY_OPAQUE=0.10;ModelTrack.VSYNC_DENSITY_RANGE=ModelTrack.VSYNC_DENSITY_TRANSPARENT-ModelTrack.VSYNC_DENSITY_OPAQUE;ModelTrack.generateStripes_=function(times,minTime,maxTime){if(times.length===0)return[];const lowIndex=tr.b.findLowIndexInSortedArray(times,(x=>x),minTime);let highIndex=lowIndex-1;while(times[highIndex+1]<=maxTime){highIndex++;}\nconst stripes=[];for(let i=lowIndex-(lowIndex%2);i<=highIndex;i+=2){const left=i<lowIndex?minTime:times[i];const right=i+1>highIndex?maxTime:times[i+1];stripes.push(tr.b.math.Range.fromExplicitRange(left,right));}\nreturn stripes;};ModelTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('model-track');this.upperMode_=false;this.annotationViews_=[];this.vSyncTimes_=[];},get processViews(){return Polymer.dom(this).querySelectorAll('.process-track-base');},get upperMode(){return this.upperMode_;},set upperMode(upperMode){this.upperMode_=upperMode;this.updateContents_();},detach(){tr.ui.tracks.ContainerTrack.prototype.detach.call(this);},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();this.model_.addEventListener('annotationChange',this.updateAnnotations_.bind(this));},get hasVisibleContent(){return this.children.length>0;},updateContents_(){Polymer.dom(this).textContent='';if(!this.model_)return;if(this.upperMode_){this.updateContentsForUpperMode_();}else{this.updateContentsForLowerMode_();}},updateContentsForUpperMode_(){},updateContentsForLowerMode_(){if(this.model_.userModel.expectations.length>1){const mrt=new tr.ui.tracks.InteractionTrack(this.viewport_);mrt.model=this.model_;Polymer.dom(this).appendChild(mrt);}\nif(this.model_.alerts.length){const at=new tr.ui.tracks.AlertTrack(this.viewport_);at.alerts=this.model_.alerts;Polymer.dom(this).appendChild(at);}\nif(this.model_.globalMemoryDumps.length){const gmdt=new tr.ui.tracks.GlobalMemoryDumpTrack(this.viewport_);gmdt.memoryDumps=this.model_.globalMemoryDumps;Polymer.dom(this).appendChild(gmdt);}\nthis.appendDeviceTrack_();this.appendCpuUsageTrack_();this.appendMemoryTrack_();this.appendKernelTrack_();const processes=this.model_.getAllProcesses();processes.sort(tr.model.Process.compare);for(let i=0;i<processes.length;++i){const process=processes[i];const track=new tr.ui.tracks.ProcessTrack(this.viewport);track.process=process;if(!track.hasVisibleContent)continue;Polymer.dom(this).appendChild(track);}\nthis.viewport_.rebuildEventToTrackMap();this.viewport_.rebuildContainerToTrackMap();this.vSyncTimes_=this.model_.device.vSyncTimestamps;this.updateAnnotations_();},getContentBounds(){return this.model.bounds;},addAnnotation(annotation){this.model.addAnnotation(annotation);},removeAnnotation(annotation){this.model.removeAnnotation(annotation);},updateAnnotations_(){this.annotationViews_=[];const annotations=this.model_.getAllAnnotations();for(let i=0;i<annotations.length;i++){this.annotationViews_.push(annotations[i].getOrCreateView(this.viewport_));}\nthis.invalidateDrawingContainer();},addEventsToTrackMap(eventToTrackMap){if(!this.model_)return;const tracks=this.children;for(let i=0;i<tracks.length;++i){tracks[i].addEventsToTrackMap(eventToTrackMap);}\nif(this.instantEvents===undefined)return;const vp=this.viewport_;this.instantEvents.forEach(function(ev){eventToTrackMap.addEvent(ev,this);}.bind(this));},appendDeviceTrack_(){const device=this.model.device;const track=new tr.ui.tracks.DeviceTrack(this.viewport);track.device=this.model.device;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendKernelTrack_(){const kernel=this.model.kernel;const track=new tr.ui.tracks.KernelTrack(this.viewport);track.kernel=this.model.kernel;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendCpuUsageTrack_(){const track=new tr.ui.tracks.CpuUsageTrack(this.viewport);track.initialize(this.model);if(!track.hasVisibleContent)return;this.appendChild(track);},appendMemoryTrack_(){const track=new tr.ui.tracks.MemoryTrack(this.viewport);track.initialize(this.model);if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},drawTrack(type){const ctx=this.context();if(!this.model_)return;const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;switch(type){case tr.ui.tracks.DrawType.GRID:this.viewport.drawMajorMarkLines(ctx,viewHeight);ctx.restore();return;case tr.ui.tracks.DrawType.FLOW_ARROWS:if(this.model_.flowIntervalTree.size===0){ctx.restore();return;}\nthis.drawFlowArrows_(viewLWorld,viewRWorld);ctx.restore();return;case tr.ui.tracks.DrawType.INSTANT_EVENT:if(!this.model_.instantEvents||this.model_.instantEvents.length===0){break;}\ntr.ui.b.drawInstantSlicesAsLines(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.model_.instantEvents,4);break;case tr.ui.tracks.DrawType.MARKERS:if(!this.viewport.interestRange.isEmpty){this.viewport.interestRange.draw(ctx,viewLWorld,viewRWorld,viewHeight);this.viewport.interestRange.drawIndicators(ctx,viewLWorld,viewRWorld);}\nctx.restore();return;case tr.ui.tracks.DrawType.HIGHLIGHTS:this.drawVSyncHighlight(ctx,dt,viewLWorld,viewRWorld,viewHeight);ctx.restore();return;case tr.ui.tracks.DrawType.ANNOTATIONS:for(let i=0;i<this.annotationViews_.length;i++){this.annotationViews_[i].draw(ctx);}\nctx.restore();return;}\nctx.restore();tr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this,type);},drawFlowArrows_(viewLWorld,viewRWorld){const ctx=this.context();ctx.strokeStyle='rgba(0, 0, 0, 0.4)';ctx.fillStyle='rgba(0, 0, 0, 0.4)';ctx.lineWidth=1;const events=this.model_.flowIntervalTree.findIntersection(viewLWorld,viewRWorld);const canvasBounds=ctx.canvas.getBoundingClientRect();for(let i=0;i<events.length;++i){const onlyHighlighted=!tr.b.getCategoryParts(events[i].category).some((x)=>this.viewport.selectedFlowEvents.has(x));if(onlyHighlighted&&events[i].selectionState!==SelectionState.SELECTED&&events[i].selectionState!==SelectionState.HIGHLIGHTED){continue;}\nthis.drawFlowArrow_(ctx,events[i],canvasBounds);}},drawFlowArrow_(ctx,flowEvent,canvasBounds){const dt=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const startTrack=this.viewport.trackForEvent(flowEvent.startSlice);const endTrack=this.viewport.trackForEvent(flowEvent.endSlice);if(startTrack===undefined||endTrack===undefined)return;const startBounds=startTrack.getBoundingClientRect();const endBounds=endTrack.getBoundingClientRect();if(flowEvent.selectionState===SelectionState.SELECTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.HIGHLIGHTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.DIMMED){ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}else{let hasBoost=false;const startSlice=flowEvent.startSlice;hasBoost|=startSlice.selectionState===SelectionState.SELECTED;hasBoost|=startSlice.selectionState===SelectionState.HIGHLIGHTED;const endSlice=flowEvent.endSlice;hasBoost|=endSlice.selectionState===SelectionState.SELECTED;hasBoost|=endSlice.selectionState===SelectionState.HIGHLIGHTED;if(hasBoost){ctx.shadowBlur=1;ctx.shadowColor='rgba(255, 0, 0, 0.4)';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else{ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}}\nconst startSize=startBounds.left+startBounds.top+\nstartBounds.bottom+startBounds.right;const endSize=endBounds.left+endBounds.top+\nendBounds.bottom+endBounds.right;if(startSize===0&&endSize===0)return;const startY=this.calculateTrackY_(startTrack,canvasBounds);const endY=this.calculateTrackY_(endTrack,canvasBounds);const worldOffset=this.getBoundingClientRect().top-canvasBounds.top;const pixelStartY=pixelRatio*(startY-worldOffset);const pixelEndY=pixelRatio*(endY-worldOffset);const startXView=dt.xWorldToView(flowEvent.start);const endXView=dt.xWorldToView(flowEvent.end);const midXView=(startXView+endXView)/2;ctx.beginPath();ctx.moveTo(startXView,pixelStartY);ctx.bezierCurveTo(midXView,pixelStartY,midXView,pixelEndY,endXView,pixelEndY);ctx.stroke();const arrowWidth=5*pixelRatio;const distance=endXView-startXView;if(distance<=(2*arrowWidth))return;const tipX=endXView;const tipY=pixelEndY;const arrowHeight=(endBounds.height/4)*pixelRatio;tr.ui.b.drawTriangle(ctx,tipX,tipY,tipX-arrowWidth,tipY-arrowHeight,tipX-arrowWidth,tipY+arrowHeight);ctx.fill();},drawVSyncHighlight(ctx,dt,viewLWorld,viewRWorld,viewHeight){if(!this.viewport_.highlightVSync){return;}\nconst stripes=ModelTrack.generateStripes_(this.vSyncTimes_,viewLWorld,viewRWorld);if(stripes.length===0){return;}\nconst vSyncHighlightColor=new tr.b.Color(ColorScheme.getColorForReservedNameAsString('vsync_highlight_color'));const stripeRange=stripes[stripes.length-1].max-stripes[0].min;const stripeDensity=stripeRange?stripes.length/(dt.scaleX*stripeRange):0;const clampedStripeDensity=tr.b.math.clamp(stripeDensity,ModelTrack.VSYNC_DENSITY_OPAQUE,ModelTrack.VSYNC_DENSITY_TRANSPARENT);const opacity=(ModelTrack.VSYNC_DENSITY_TRANSPARENT-clampedStripeDensity)/ModelTrack.VSYNC_DENSITY_RANGE;if(opacity===0){return;}\nctx.fillStyle=vSyncHighlightColor.toStringWithAlphaOverride(ModelTrack.VSYNC_HIGHLIGHT_ALPHA*opacity);for(let i=0;i<stripes.length;i++){const xLeftView=dt.xWorldToView(stripes[i].min);const xRightView=dt.xWorldToView(stripes[i].max);ctx.fillRect(xLeftView,0,xRightView-xLeftView,viewHeight);}},calculateTrackY_(track,canvasBounds){const bounds=track.getBoundingClientRect();const size=bounds.left+bounds.top+bounds.bottom+bounds.right;if(size===0){return this.calculateTrackY_(Polymer.dom(track).parentNode,canvasBounds);}\nreturn bounds.top-canvasBounds.top+(bounds.height/2);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onPickHit(instantEvent){selection.push(instantEvent);}\nconst instantEventWidth=3*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.model_.instantEvents,function(x){return x.start;},function(x){return x.duration+instantEventWidth;},loWX,hiWX,onPickHit.bind(this));tr.ui.tracks.ContainerTrack.prototype.addIntersectingEventsInRangeToSelectionInWorldSpace.apply(this,arguments);},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.addClosestInstantEventToSelection(this.model_.instantEvents,worldX,worldMaxDist,selection);tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,arguments);}};return{ModelTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const XAxisTrack=tr.ui.b.define('x-axis-track',tr.ui.tracks.Track);XAxisTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('x-axis-track');this.strings_secs_=[];this.strings_msecs_=[];this.strings_usecs_=[];this.strings_nsecs_=[];this.viewportChange_=this.viewportChange_.bind(this);viewport.addEventListener('change',this.viewportChange_);const heading=document.createElement('tr-ui-b-heading');heading.arrowVisible=false;Polymer.dom(this).appendChild(heading);},detach(){tr.ui.tracks.Track.prototype.detach.call(this);this.viewport.removeEventListener('change',this.viewportChange_);},viewportChange_(){if(this.viewport.interestRange.isEmpty){Polymer.dom(this).classList.remove('tall-mode');}else{Polymer.dom(this).classList.add('tall-mode');}},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GRID:this.drawGrid_(viewLWorld,viewRWorld);break;case tr.ui.tracks.DrawType.MARKERS:this.drawMarkers_(viewLWorld,viewRWorld);break;}},drawGrid_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const canvasBounds=ctx.canvas.getBoundingClientRect();const trackBounds=this.getBoundingClientRect();const width=canvasBounds.width*pixelRatio;const height=trackBounds.height*pixelRatio;const hasInterestRange=!this.viewport.interestRange.isEmpty;const xAxisHeightPx=hasInterestRange?(height*2)/5:height;const vp=this.viewport;const dt=vp.currentDisplayTransform;vp.updateMajorMarkData(viewLWorld,viewRWorld);const majorMarkDistanceWorld=vp.majorMarkWorldPositions.length>1?vp.majorMarkWorldPositions[1]-vp.majorMarkWorldPositions[0]:0;const numTicksPerMajor=5;const minorMarkDistanceWorld=majorMarkDistanceWorld/numTicksPerMajor;const minorMarkDistancePx=dt.xWorldVectorToView(minorMarkDistanceWorld);const minorTickHeight=Math.floor(xAxisHeightPx*0.25);ctx.save();ctx.lineWidth=Math.round(pixelRatio);const crispLineCorrection=(ctx.lineWidth%2)/2;ctx.translate(crispLineCorrection,-crispLineCorrection);ctx.fillStyle='rgb(0, 0, 0)';ctx.strokeStyle='rgb(0, 0, 0)';ctx.textAlign='left';ctx.textBaseline='top';ctx.font=(9*pixelRatio)+'px sans-serif';const tickLabels=[];ctx.beginPath();for(let i=0;i<vp.majorMarkWorldPositions.length;i++){const curXWorld=vp.majorMarkWorldPositions[i];const curXView=dt.xWorldToView(curXWorld);const displayText=vp.majorMarkUnit.format(curXWorld,{deltaValue:majorMarkDistanceWorld});ctx.fillText(displayText,curXView+(2*pixelRatio),0);tr.ui.b.drawLine(ctx,curXView,0,curXView,xAxisHeightPx);if(minorMarkDistancePx){for(let j=1;j<numTicksPerMajor;++j){const xView=Math.floor(curXView+minorMarkDistancePx*j);tr.ui.b.drawLine(ctx,xView,xAxisHeightPx-minorTickHeight,xView,xAxisHeightPx);}}}\nctx.strokeStyle='rgb(0, 0, 0)';tr.ui.b.drawLine(ctx,0,height,width,height);ctx.stroke();if(!hasInterestRange)return;tr.ui.b.drawLine(ctx,0,xAxisHeightPx,width,xAxisHeightPx);ctx.stroke();let displayDistance;const displayTextColor='rgb(0,0,0)';const arrowSpacing=10*pixelRatio;const arrowColor='rgb(128,121,121)';const arrowPosY=xAxisHeightPx*1.75;const arrowWidthView=3*pixelRatio;const arrowLengthView=10*pixelRatio;const spaceForArrowsView=2*(arrowWidthView+arrowSpacing);ctx.textBaseline='middle';ctx.font=(14*pixelRatio)+'px sans-serif';const textPosY=arrowPosY;const interestRange=vp.interestRange;if(interestRange.range===0){const markerWorld=interestRange.min;const markerView=dt.xWorldToView(markerWorld);const textToDraw=vp.majorMarkUnit.format(markerWorld);let textLeftView=markerView+4*pixelRatio;const textWidthView=ctx.measureText(textToDraw).width;if(textLeftView+textWidthView>width){textLeftView=markerView-4*pixelRatio-textWidthView;}\nctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);return;}\nconst leftMarker=interestRange.min;const rightMarker=interestRange.max;const leftMarkerView=dt.xWorldToView(leftMarker);const rightMarkerView=dt.xWorldToView(rightMarker);const distanceBetweenMarkers=interestRange.range;const distanceBetweenMarkersView=dt.xWorldVectorToView(distanceBetweenMarkers);const positionInMiddleOfMarkersView=leftMarkerView+(distanceBetweenMarkersView/2);const textToDraw=vp.majorMarkUnit.format(distanceBetweenMarkers);const textWidthView=ctx.measureText(textToDraw).width;const spaceForArrowsAndTextView=textWidthView+spaceForArrowsView+arrowSpacing;let textLeftView=positionInMiddleOfMarkersView-textWidthView/2;const textRightView=textLeftView+textWidthView;if(spaceForArrowsAndTextView>distanceBetweenMarkersView){textLeftView=rightMarkerView+2*arrowSpacing;if(textLeftView+textWidthView>width){textLeftView=leftMarkerView-2*arrowSpacing-textWidthView;}\nctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);ctx.strokeStyle=arrowColor;ctx.beginPath();tr.ui.b.drawLine(ctx,leftMarkerView,arrowPosY,rightMarkerView,arrowPosY);ctx.stroke();ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftMarkerView-1.5*arrowSpacing,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightMarkerView+1.5*arrowSpacing,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);}else if(spaceForArrowsView<=distanceBetweenMarkersView){let leftArrowStart;let rightArrowStart;if(spaceForArrowsAndTextView<=distanceBetweenMarkersView){ctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);leftArrowStart=textLeftView-arrowSpacing;rightArrowStart=textRightView+arrowSpacing;}else{leftArrowStart=positionInMiddleOfMarkersView;rightArrowStart=positionInMiddleOfMarkersView;}\nctx.strokeStyle=arrowColor;ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftArrowStart,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightArrowStart,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);}\nctx.restore();},drawMarkers_(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const trackBounds=this.getBoundingClientRect();const viewHeight=trackBounds.height*pixelRatio;if(!this.viewport.interestRange.isEmpty){this.viewport.interestRange.draw(this.context(),viewLWorld,viewRWorld,viewHeight);}},addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection){},addAllEventsMatchingFilterToSelection(filter,selection){}};return{XAxisTrack,};});'use strict';Polymer({is:'tr-ui-timeline-track-view',ready(){this.displayTransform_=new tr.ui.TimelineDisplayTransform();this.model_=undefined;this.timelineView_=undefined;this.pollIfViewportAttachedInterval_=undefined;this.viewport_=new tr.ui.TimelineViewport(this);this.viewportDisplayTransformAtMouseDown_=undefined;this.brushingStateController_=undefined;this.rulerTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.rulerTrackContainer_);this.rulerTrackContainer_.invalidate();this.rulerTrackContainer_.style.overflowY='hidden';this.rulerTrackContainer_.style.flexShrink='0';this.rulerTrack_=new tr.ui.tracks.XAxisTrack(this.viewport_);Polymer.dom(this.rulerTrackContainer_).appendChild(this.rulerTrack_);this.upperModelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);this.upperModelTrack_.upperMode=true;Polymer.dom(this.rulerTrackContainer_).appendChild(this.upperModelTrack_);this.modelTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.modelTrackContainer_);this.modelTrackContainer_.style.display='block';this.modelTrackContainer_.style.flexGrow='1';this.modelTrackContainer_.invalidate();this.viewport_.modelTrackContainer=this.modelTrackContainer_;this.modelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);Polymer.dom(this.modelTrackContainer_).appendChild(this.modelTrack_);this.timingTool_=new tr.ui.b.TimingTool(this.viewport_,this);this.initMouseModeSelector();this.hideDragBox_();this.initHintText_();this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.addEventListener('dblclick',this.onDblClick_);this.onMouseWheel_=this.onMouseWheel_.bind(this);this.addEventListener('mousewheel',this.onMouseWheel_);this.onMouseDown_=this.onMouseDown_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.onMouseMove_=this.onMouseMove_.bind(this);this.addEventListener('mousemove',this.onMouseMove_);this.onTouchStart_=this.onTouchStart_.bind(this);this.addEventListener('touchstart',this.onTouchStart_);this.onTouchMove_=this.onTouchMove_.bind(this);this.addEventListener('touchmove',this.onTouchMove_);this.onTouchEnd_=this.onTouchEnd_.bind(this);this.addEventListener('touchend',this.onTouchEnd_);this.addHotKeys_();this.mouseViewPosAtMouseDown_={x:0,y:0};this.lastMouseViewPos_={x:0,y:0};this.lastTouchViewPositions_=[];this.alert_=undefined;this.isPanningAndScanning_=false;this.isZooming_=false;},initMouseModeSelector(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this;Polymer.dom(this).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.addEventListener('beginpan',this.onBeginPanScan_.bind(this));this.mouseModeSelector_.addEventListener('updatepan',this.onUpdatePanScan_.bind(this));this.mouseModeSelector_.addEventListener('endpan',this.onEndPanScan_.bind(this));this.mouseModeSelector_.addEventListener('beginselection',this.onBeginSelection_.bind(this));this.mouseModeSelector_.addEventListener('updateselection',this.onUpdateSelection_.bind(this));this.mouseModeSelector_.addEventListener('endselection',this.onEndSelection_.bind(this));this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));this.mouseModeSelector_.addEventListener('entertiming',this.timingTool_.onEnterTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('begintiming',this.timingTool_.onBeginTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('updatetiming',this.timingTool_.onUpdateTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('endtiming',this.timingTool_.onEndTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('exittiming',this.timingTool_.onExitTiming.bind(this.timingTool_));const m=tr.ui.b.MOUSE_SELECTOR_MODE;this.mouseModeSelector_.supportedModeMask=m.SELECTION|m.PANSCAN|m.ZOOM|m.TIMING;this.mouseModeSelector_.settingsKey='timelineTrackView.mouseModeSelector';this.mouseModeSelector_.setKeyCodeForMode(m.PANSCAN,'2'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.SELECTION,'1'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.ZOOM,'3'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.TIMING,'4'.charCodeAt(0));this.mouseModeSelector_.setModifierForAlternateMode(m.SELECTION,tr.ui.b.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(m.PANSCAN,tr.ui.b.MODIFIER.SPACE);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController_){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);}},set timelineView(view){this.timelineView_=view;},get processViews(){return this.modelTrack_.processViews;},onSelectionChanged_(){this.showHintText_('Press \\'m\\' to mark current selection');this.viewport_.dispatchChangeEvent();},set selection(selection){throw new Error('DO NOT CALL THIS');},set highlight(highlight){throw new Error('DO NOT CALL THIS');},detach(){this.modelTrack_.detach();this.upperModelTrack_.detach();if(this.pollIfViewportAttachedInterval_){window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;}\nthis.viewport_.detach();},get viewport(){return this.viewport_;},get model(){return this.model_;},set model(model){if(!model){throw new Error('Model cannot be undefined');}\nconst modelInstanceChanged=this.model_!==model;this.model_=model;this.modelTrack_.model=model;this.upperModelTrack_.model=model;if(modelInstanceChanged){this.pollIfViewportAttachedInterval_=window.setInterval(this.pollIfViewportAttached_.bind(this),250);}},get hasVisibleContent(){return this.modelTrack_.hasVisibleContent||this.upperModelTrack_.hasVisibleContent;},pollIfViewportAttached_(){if(!this.viewport_.isAttachedToDocumentOrInTestMode||this.viewport_.clientWidth===0){return;}\nwindow.addEventListener('resize',this.viewport_.dispatchChangeEvent);window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;this.setInitialViewport_();},setInitialViewport_(){this.modelTrackContainer_.updateCanvasSizeIfNeeded_();const w=this.modelTrackContainer_.canvas.width;let min;let range;if(this.model_.bounds.isEmpty){min=0;range=1000;}else if(this.model_.bounds.range===0){min=this.model_.bounds.min;range=1000;}else{min=this.model_.bounds.min;range=this.model_.bounds.range;}\nconst boost=range*0.15;this.displayTransform_.set(this.viewport_.currentDisplayTransform);this.displayTransform_.xSetWorldBounds(min-boost,min+range+boost,w);this.viewport_.setDisplayTransformImmediately(this.displayTransform_);},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const modelTrack=this.modelTrack_;const firstT=modelTrack.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);const lastT=firstT.after(function(){this.upperModelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);},this);return firstT;},onMouseMove_(e){if(this.isZooming_)return;this.storeLastMousePos_(e);},onTouchStart_(e){this.storeLastTouchPositions_(e);this.focusElements_();},onTouchMove_(e){e.preventDefault();this.onUpdateTransformForTouch_(e);},onTouchEnd_(e){this.storeLastTouchPositions_(e);this.focusElements_();},addHotKeys_(){this.addKeyDownHotKeys_();this.addKeyPressHotKeys_();},addKeyPressHotKey(dict){dict.eventType='keypress';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);},addKeyPressHotKeys_(){this.addKeyPressHotKey({keyCodes:['w'.charCodeAt(0),','.charCodeAt(0)],callback(e){this.zoomBy_(1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['s'.charCodeAt(0),'o'.charCodeAt(0)],callback(e){this.zoomBy_(1/1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'g'.charCodeAt(0),callback(e){this.onGridToggle_(true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'G'.charCodeAt(0),callback(e){this.onGridToggle_(false);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['W'.charCodeAt(0),'<'.charCodeAt(0)],callback(e){this.zoomBy_(10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['S'.charCodeAt(0),'O'.charCodeAt(0)],callback(e){this.zoomBy_(1/10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'a'.charCodeAt(0),callback(e){this.queueSmoothPan_(this.viewWidth_*0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['d'.charCodeAt(0),'e'.charCodeAt(0)],callback(e){this.queueSmoothPan_(this.viewWidth_*-0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'A'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'D'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*-0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'0'.charCodeAt(0),callback(e){this.setInitialViewport_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'f'.charCodeAt(0),callback(e){this.zoomToSelection();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'m'.charCodeAt(0),callback(e){this.setCurrentSelectionAsInterestRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'p'.charCodeAt(0),callback(e){this.selectPowerSamplesInCurrentTimeRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'h'.charCodeAt(0),callback(e){this.toggleHighDetails_();e.stopPropagation();}});},get viewWidth_(){return this.modelTrackContainer_.canvas.clientWidth;},addKeyDownHotKeys_(){const addBinding=function(dict){dict.eventType='keydown';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);}.bind(this);addBinding({keyCode:37,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,-1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(this.viewWidth_*0.3,0);}\ne.preventDefault();e.stopPropagation();}});addBinding({keyCode:39,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(-this.viewWidth_*0.3,0);}\ne.preventDefault();e.stopPropagation();}});},onDblClick_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;}\nconst curSelection=this.brushingStateController_.selection;if(!curSelection.length||!tr.b.getOnlyElement(curSelection).title){return;}\nconst selection=new tr.model.EventSet();const filter=new tr.c.ExactTitleFilter(tr.b.getOnlyElement(curSelection).title);this.modelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);this.brushingStateController.changeSelectionFromTimeline(selection);},onMouseWheel_(e){if(!e.altKey)return;const delta=e.wheelDelta/120;const zoomScale=Math.pow(1.5,delta);this.zoomBy_(zoomScale);e.preventDefault();},onMouseDown_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;}\nif(e.target!==this.rulerTrack_)return;this.dragBeginEvent_=undefined;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;}\nconst dt=this.viewport_.currentDisplayTransform;tr.ui.b.trackMouseMovesUntilMouseUp(function(e){if(e.target===this.rulerTrack_)return;const relativePosition=this.extractRelativeMousePosition_(e);const loc=tr.model.Location.fromViewCoordinates(this.viewport_,relativePosition.x,relativePosition.y);if(!loc)return;if(this.guideLineAnnotation_===undefined){this.guideLineAnnotation_=new tr.model.XMarkerAnnotation(loc.xWorld);this.model.addAnnotation(this.guideLineAnnotation_);}else{this.guideLineAnnotation_.timestamp=loc.xWorld;this.modelTrackContainer_.invalidate();}\nconst state=new tr.ui.b.UIState(loc,this.viewport_.currentDisplayTransform.scaleX);this.timelineView_.setFindCtlText(state.toUserFriendlyString(this.viewport_));}.bind(this),undefined,function onKeyUpDuringDrag(){if(this.dragBeginEvent_){this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_);}}.bind(this));},queueSmoothPan_(viewDeltaX,deltaY){const deltaX=this.viewport_.currentDisplayTransform.xViewVectorToWorld(viewDeltaX);const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,deltaY);this.viewport_.queueDisplayTransformAnimation(animation);},zoomBy_(scale,smooth){if(scale<=0){return;}\nsmooth=!!smooth;const vp=this.viewport_;const pixelRatio=window.devicePixelRatio||1;const goalFocalPointXView=this.lastMouseViewPos_.x*pixelRatio;const goalFocalPointXWorld=vp.currentDisplayTransform.xViewToWorld(goalFocalPointXView);if(smooth){const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,vp.currentDisplayTransform.panY,scale);vp.queueDisplayTransformAnimation(animation);}else{this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=scale;this.displayTransform_.xPanWorldPosToViewPos(goalFocalPointXWorld,goalFocalPointXView,this.viewWidth_);vp.setDisplayTransformImmediately(this.displayTransform_);}},zoomToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;if(!bounds.range)return;const worldCenter=bounds.center;const viewCenter=this.modelTrackContainer_.canvas.width/2;const adjustedWorldRange=bounds.range*1.25;const newScale=this.modelTrackContainer_.canvas.width/adjustedWorldRange;const zoomInRatio=newScale/this.viewport_.currentDisplayTransform.scaleX;const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);},panToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;const worldCenter=bounds.center;const viewWidth=this.viewWidth_;const dt=this.viewport_.currentDisplayTransform;if(false&&!bounds.range){if(dt.xWorldToView(bounds.center)<0||dt.xWorldToView(bounds.center)>viewWidth){this.displayTransform_.set(dt);this.displayTransform_.xPanWorldPosToViewPos(worldCenter,'center',viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);}\nreturn;}\nthis.displayTransform_.set(dt);this.displayTransform_.xPanWorldBoundsIntoView(bounds.min,bounds.max,viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);},navToPosition(uiState,showNavLine){const location=uiState.location;const scaleX=uiState.scaleX;const track=location.getContainingTrack(this.viewport_);const worldCenter=location.xWorld;const viewCenter=this.modelTrackContainer_.canvas.width/5;const zoomInRatio=scaleX/this.viewport_.currentDisplayTransform.scaleX;track.scrollIntoViewIfNeeded();const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);if(!showNavLine)return;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);}\nthis.xNavStringMarker_=new tr.model.XMarkerAnnotation(worldCenter);this.model.addAnnotation(this.xNavStringMarker_);},selectPowerSamplesInCurrentTimeRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(this.model.device.powerSeries&&!selectionBounds.empty){const events=this.model.device.powerSeries.getSamplesWithinRange(selectionBounds.min,selectionBounds.max);const selection=new tr.model.EventSet(events);this.brushingStateController_.changeSelectionFromTimeline(selection);}},setCurrentSelectionAsInterestRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(selectionBounds.empty){this.viewport_.interestRange.reset();return;}\nif(this.viewport_.interestRange.min===selectionBounds.min&&this.viewport_.interestRange.max===selectionBounds.max){this.viewport_.interestRange.reset();}else{this.viewport_.interestRange.set(selectionBounds);}},toggleHighDetails_(){this.viewport_.highDetails=!this.viewport_.highDetails;},hideDragBox_(){this.$.drag_box.style.left='-1000px';this.$.drag_box.style.top='-1000px';this.$.drag_box.style.width=0;this.$.drag_box.style.height=0;},setDragBoxPosition_(xStart,yStart,xEnd,yEnd){const loY=Math.min(yStart,yEnd);const hiY=Math.max(yStart,yEnd);const loX=Math.min(xStart,xEnd);const hiX=Math.max(xStart,xEnd);const modelTrackRect=this.modelTrack_.getBoundingClientRect();const dragRect={left:loX,top:loY,width:hiX-loX,height:hiY-loY};dragRect.right=dragRect.left+dragRect.width;dragRect.bottom=dragRect.top+dragRect.height;const modelTrackContainerRect=this.modelTrackContainer_.getBoundingClientRect();const clipRect={left:modelTrackContainerRect.left,top:modelTrackContainerRect.top,right:modelTrackContainerRect.right,bottom:modelTrackContainerRect.bottom};const headingWidth=window.getComputedStyle(Polymer.dom(this).querySelector('tr-ui-b-heading')).width;const trackTitleWidth=parseInt(headingWidth);clipRect.left=clipRect.left+trackTitleWidth;const intersectRect_=function(r1,r2){if(r2.left>r1.right||r2.right<r1.left||r2.top>r1.bottom||r2.bottom<r1.top){return false;}\nconst results={};results.left=Math.max(r1.left,r2.left);results.top=Math.max(r1.top,r2.top);results.right=Math.min(r1.right,r2.right);results.bottom=Math.min(r1.bottom,r2.bottom);results.width=results.right-results.left;results.height=results.bottom-results.top;return results;};const finalDragBox=intersectRect_(clipRect,dragRect);this.$.drag_box.style.left=finalDragBox.left+'px';this.$.drag_box.style.width=finalDragBox.width+'px';this.$.drag_box.style.top=finalDragBox.top+'px';this.$.drag_box.style.height=finalDragBox.height+'px';this.$.drag_box.style.whiteSpace='nowrap';const pixelRatio=window.devicePixelRatio||1;const canv=this.modelTrackContainer_.canvas;const dt=this.viewport_.currentDisplayTransform;const loWX=dt.xViewToWorld((loX-canv.offsetLeft)*pixelRatio);const hiWX=dt.xViewToWorld((hiX-canv.offsetLeft)*pixelRatio);Polymer.dom(this.$.drag_box).textContent=tr.b.Unit.byName.timeDurationInMs.format(hiWX-loWX);const e=new tr.b.Event('selectionChanging');e.loWX=loWX;e.hiWX=hiWX;this.dispatchEvent(e);},onGridToggle_(left){const selection=this.brushingStateController_.selection;const tb=left?selection.bounds.min:selection.bounds.max;if(this.viewport_.gridEnabled&&this.viewport_.gridSide===left&&this.viewport_.gridInitialTimebase===tb){this.viewport_.gridside=undefined;this.viewport_.gridEnabled=false;this.viewport_.gridInitialTimebase=undefined;return;}\nconst numIntervalsSinceStart=Math.ceil((tb-this.model_.bounds.min)/this.viewport_.gridStep_);this.viewport_.gridEnabled=true;this.viewport_.gridSide=left;this.viewport_.gridInitialTimebase=tb;this.viewport_.gridTimebase=tb-\n(numIntervalsSinceStart+1)*this.viewport_.gridStep_;},storeLastMousePos_(e){this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);},storeLastTouchPositions_(e){this.lastTouchViewPositions_=this.extractRelativeTouchPositions_(e);},extractRelativeMousePosition_(e){const canv=this.modelTrackContainer_.canvas;return{x:e.clientX-canv.offsetLeft,y:e.clientY-canv.offsetTop};},extractRelativeTouchPositions_(e){const canv=this.modelTrackContainer_.canvas;const touches=[];for(let i=0;i<e.touches.length;++i){touches.push({x:e.touches[i].clientX-canv.offsetLeft,y:e.touches[i].clientY-canv.offsetTop});}\nreturn touches;},storeInitialMouseDownPos_(e){const position=this.extractRelativeMousePosition_(e);this.mouseViewPosAtMouseDown_.x=position.x;this.mouseViewPosAtMouseDown_.y=position.y;},focusElements_(){this.$.hotkey_controller.childRequestsGeneralFocus(this);},storeInitialInteractionPositionsAndFocus_(e){this.storeInitialMouseDownPos_(e);this.storeLastMousePos_(e);this.focusElements_();},onBeginPanScan_(e){const vp=this.viewport_;this.viewportDisplayTransformAtMouseDown_=vp.currentDisplayTransform.clone();this.isPanningAndScanning_=true;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdatePanScan_(e){if(!this.isPanningAndScanning_)return;const viewWidth=this.viewWidth_;const pixelRatio=window.devicePixelRatio||1;const xDeltaView=pixelRatio*(this.lastMouseViewPos_.x-\nthis.mouseViewPosAtMouseDown_.x);const yDelta=this.lastMouseViewPos_.y-\nthis.mouseViewPosAtMouseDown_.y;this.displayTransform_.set(this.viewportDisplayTransformAtMouseDown_);this.displayTransform_.incrementPanXInViewUnits(xDeltaView);this.displayTransform_.panY-=yDelta;this.viewport_.setDisplayTransformImmediately(this.displayTransform_);e.preventDefault();e.stopPropagation();this.storeLastMousePos_(e);},onEndPanScan_(e){this.isPanningAndScanning_=false;this.storeLastMousePos_(e);if(!e.isClick){e.preventDefault();}},onBeginSelection_(e){const canv=this.modelTrackContainer_.canvas;const rect=this.modelTrack_.getBoundingClientRect();const canvRect=canv.getBoundingClientRect();const inside=rect&&e.clientX>=rect.left&&e.clientX<rect.right&&e.clientY>=rect.top&&e.clientY<rect.bottom&&e.clientX>=canvRect.left&&e.clientX<canvRect.right;if(!inside)return;this.dragBeginEvent_=e;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdateSelection_(e){if(!this.dragBeginEvent_)return;this.dragBoxXStart_=this.dragBeginEvent_.clientX;this.dragBoxXEnd_=e.clientX;this.dragBoxYStart_=this.dragBeginEvent_.clientY;this.dragBoxYEnd_=e.clientY;this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_);},onEndSelection_(e){e.preventDefault();if(!this.dragBeginEvent_)return;this.hideDragBox_();const eDown=this.dragBeginEvent_;this.dragBeginEvent_=undefined;const loY=Math.min(eDown.clientY,e.clientY);const hiY=Math.max(eDown.clientY,e.clientY);const loX=Math.min(eDown.clientX,e.clientX);const hiX=Math.max(eDown.clientX,e.clientX);const canv=this.modelTrackContainer_.canvas;const worldOffset=canv.getBoundingClientRect().left;const loVX=loX-worldOffset;const hiVX=hiX-worldOffset;const selection=new tr.model.EventSet();if(eDown.appendSelection){const previousSelection=this.brushingStateController_.selection;if(previousSelection!==undefined){selection.addEventSet(previousSelection);}}\nthis.modelTrack_.addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection);this.brushingStateController_.changeSelectionFromTimeline(selection);},onBeginZoom_(e){this.isZooming_=true;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const newPosition=this.extractRelativeMousePosition_(e);const zoomScaleValue=1+(this.lastMouseViewPos_.y-\nnewPosition.y)*0.01;this.zoomBy_(zoomScaleValue,false);this.storeLastMousePos_(e);},onEndZoom_(e){this.isZooming_=false;if(!e.isClick){e.preventDefault();}},computeTouchCenter_(positions){let xSum=0;let ySum=0;for(let i=0;i<positions.length;++i){xSum+=positions[i].x;ySum+=positions[i].y;}\nreturn{x:xSum/positions.length,y:ySum/positions.length};},computeTouchSpan_(positions){let xMin=Number.MAX_VALUE;let yMin=Number.MAX_VALUE;let xMax=Number.MIN_VALUE;let yMax=Number.MIN_VALUE;for(let i=0;i<positions.length;++i){xMin=Math.min(xMin,positions[i].x);yMin=Math.min(yMin,positions[i].y);xMax=Math.max(xMax,positions[i].x);yMax=Math.max(yMax,positions[i].y);}\nreturn Math.sqrt((xMin-xMax)*(xMin-xMax)+\n(yMin-yMax)*(yMin-yMax));},onUpdateTransformForTouch_(e){const newPositions=this.extractRelativeTouchPositions_(e);const currentPositions=this.lastTouchViewPositions_;const newCenter=this.computeTouchCenter_(newPositions);const currentCenter=this.computeTouchCenter_(currentPositions);const newSpan=this.computeTouchSpan_(newPositions);const currentSpan=this.computeTouchSpan_(currentPositions);const vp=this.viewport_;const viewWidth=this.viewWidth_;const pixelRatio=window.devicePixelRatio||1;const xDelta=pixelRatio*(newCenter.x-currentCenter.x);const yDelta=newCenter.y-currentCenter.y;const zoomScaleValue=currentSpan>10?newSpan/currentSpan:1;const viewFocus=pixelRatio*newCenter.x;const worldFocus=vp.currentDisplayTransform.xViewToWorld(viewFocus);this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=zoomScaleValue;this.displayTransform_.xPanWorldPosToViewPos(worldFocus,viewFocus,viewWidth);this.displayTransform_.incrementPanXInViewUnits(xDelta);this.displayTransform_.panY-=yDelta;vp.setDisplayTransformImmediately(this.displayTransform_);this.storeLastTouchPositions_(e);},initHintText_(){this.$.hint_text.style.display='none';this.pendingHintTextClearTimeout_=undefined;},showHintText_(text){if(this.pendingHintTextClearTimeout_){window.clearTimeout(this.pendingHintTextClearTimeout_);this.pendingHintTextClearTimeout_=undefined;}\nthis.pendingHintTextClearTimeout_=setTimeout(this.hideHintText_.bind(this),1000);Polymer.dom(this.$.hint_text).textContent=text;this.$.hint_text.style.display='';},hideHintText_(){this.pendingHintTextClearTimeout_=undefined;this.$.hint_text.style.display='none';}});'use strict';Polymer({is:'tr-ui-find-control',filterKeyDown(e){if(e.keyCode===27){const hkc=tr.b.getHotkeyControllerForElement(this);if(hkc){hkc.childRequestsBlur(this);}else{this.blur();}\ne.preventDefault();e.stopPropagation();return;}else if(e.keyCode===13){if(e.shiftKey){this.findPrevious();}else{this.findNext();}}},filterBlur(e){this.updateHitCountEl();},filterFocus(e){this.$.filter.select();},filterMouseUp(e){e.preventDefault();},get controller(){return this.controller_;},set controller(c){this.controller_=c;this.updateHitCountEl();},focus(){this.$.filter.focus();},get hasFocus(){return this===document.activeElement;},filterTextChanged(){Polymer.dom(this.$.hitCount).textContent='';this.$.spinner.style.visibility='visible';this.$.spinner.style.animation='spin 1s linear infinite';this.controller.startFiltering(this.$.filter.value).then(function(){this.$.spinner.style.visibility='hidden';this.$.spinner.style.animation='';this.updateHitCountEl();}.bind(this));},findNext(){if(this.controller){this.controller.findNext();}\nthis.updateHitCountEl();},findPrevious(){if(this.controller){this.controller.findPrevious();}\nthis.updateHitCountEl();},updateHitCountEl(){if(!this.controller||this.$.filter.value.length===0){Polymer.dom(this.$.hitCount).textContent='';return;}\nconst n=this.controller.filterHits.length;const i=n===0?-1:this.controller.currentHitIndex;Polymer.dom(this.$.hitCount).textContent=(i+1)+' of '+n;},setText(string){this.$.filter.value=string;}});'use strict';tr.exportTo('tr.e.tquery',function(){function Context(){this.event=undefined;this.ancestors=[];}\nContext.prototype={push(event){const ctx=new Context();ctx.ancestors=this.ancestors.slice();ctx.ancestors.push(event);return ctx;},pop(event){const ctx=new Context();ctx.event=this.ancestors[this.ancestors.length-1];ctx.ancestors=this.ancestors.slice(0,this.ancestors.length-1);return ctx;}};return{Context,};});'use strict';tr.exportTo('tr.e.tquery',function(){function Filter(){tr.c.ScriptingObject.call(this);}\nFilter.normalizeFilterExpression=function(filterExpression){if(filterExpression instanceof String||typeof(filterExpression)==='string'||filterExpression instanceof RegExp){const filter=new tr.e.tquery.FilterHasTitle(filterExpression);return filter;}\nreturn filterExpression;};Filter.prototype={__proto__:tr.c.ScriptingObject.prototype,evaluate(context){throw new Error('Not implemented');},matchValue_(value,expected){if(expected instanceof RegExp){return expected.test(value);}else if(expected instanceof Function){return expected(value);}\nreturn value===expected;}};return{Filter,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterAllOf(opt_subExpressions){tr.e.tquery.Filter.call(this);this.subExpressions=opt_subExpressions||[];}\nFilterAllOf.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpressions(exprs){this.subExpressions_=[];for(let i=0;i<exprs.length;i++){this.subExpressions_.push(tr.e.tquery.Filter.normalizeFilterExpression(exprs[i]));}},get subExpressions(){return this.subExpressions_;},evaluate(context){if(!this.subExpressions.length)return true;for(let i=0;i<this.subExpressions.length;i++){if(!this.subExpressions[i].evaluate(context)){return false;}}\nreturn true;}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=[];for(let i=0;i<arguments.length;i++){exprs.push(arguments[i]);}\nreturn new FilterAllOf(exprs);},{name:'allOf'});return{FilterAllOf,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterNot(subExpression){tr.e.tquery.Filter.call(this);this.subExpression=subExpression;}\nFilterNot.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){return!this.subExpression.evaluate(context);}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);if(exprs.length!==1){throw new Error('not() must have exactly one subexpression');}\nreturn new FilterNot(exprs[0]);},{name:'not'});return{FilterNot,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterAnyOf(opt_subExpressions){tr.e.tquery.Filter.call(this);this.subExpressions=opt_subExpressions||[];}\nFilterAnyOf.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpressions(exprs){this.subExpressions_=[];for(let i=0;i<exprs.length;i++){this.subExpressions_.push(tr.e.tquery.Filter.normalizeFilterExpression(exprs[i]));}},get subExpressions(){return this.subExpressions_;},evaluate(context){if(!this.subExpressions.length)return true;for(let i=0;i<this.subExpressions.length;i++){if(this.subExpressions[i].evaluate(context))return true;}\nreturn false;}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);return new FilterAnyOf(exprs);},{name:'anyOf'});tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);return new tr.e.tquery.FilterNot(new FilterAnyOf(exprs));},{name:'noneOf'});return{FilterAnyOf,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasAncestor(opt_subExpression){this.subExpression=opt_subExpression;}\nFilterHasAncestor.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){if(!this.subExpression){return context.ancestors.length>0;}\nwhile(context.ancestors.length){context=context.pop();if(this.subExpression.evaluate(context))return true;}\nreturn false;}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterHasAncestor(subExpression);},{name:'hasAncestor'});return{FilterHasAncestor,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasDuration(minValueOrExpected,opt_maxValue){if(minValueOrExpected!==undefined&&opt_maxValue!==undefined){this.minValue=minValueOrExpected;this.maxValue=opt_maxValue;}else{this.expected=minValueOrExpected;}}\nFilterHasDuration.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){if(context.event.duration===undefined)return false;if(this.minValue!==undefined&&this.maxValue!==undefined){return context.event.duration>=this.minValue&&context.event.duration<=this.maxValue;}\nreturn this.matchValue_(context.event.duration,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(minValueOrExpected,opt_maxValue){return new FilterHasDuration(minValueOrExpected,opt_maxValue);},{name:'hasDuration'});return{FilterHasDuration,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasTitle(expected){tr.e.tquery.Filter.call(this);this.expected=expected;}\nFilterHasTitle.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){return this.matchValue_(context.event.title,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(expected){const filter=new tr.e.tquery.FilterHasTitle(expected);return filter;},{name:'hasTitle'});return{FilterHasTitle,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterIsTopLevel(opt_subExpression){this.subExpression=opt_subExpression;}\nFilterIsTopLevel.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){if(context.ancestors.length>0)return false;if(!this.subExpression)return true;return this.subExpression.evaluate(context);}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterIsTopLevel(subExpression);},{name:'isTopLevel'});return{FilterIsTopLevel,};});'use strict';tr.exportTo('tr.e.tquery',function(){function addEventTreeToSelection(selection,event){selection.push(event);if(!event.subSlices)return;event.subSlices.forEach(addEventTreeToSelection.bind(undefined,selection));}\nfunction TQuery(model){tr.c.ScriptingObject.call(this);this.model_=model;this.parent_=undefined;this.filterExpression_=undefined;this.selection_=undefined;}\nTQuery.prototype={__proto__:tr.c.ScriptingObject.prototype,onModelChanged(model){this.model_=model;this.selection_=undefined;},get brushingStateController(){return this.brushingStateController_;},filter(filterExpression){const result=new TQuery(this.model_);result.parent_=this;result.filterExpression_=tr.e.tquery.Filter.normalizeFilterExpression(filterExpression);return result;},createFilterTaskGraph_(){const nodes=[this];while(nodes[nodes.length-1].parent_){nodes.push(nodes[nodes.length-1].parent_);}\nconst rootTask=new tr.b.Task();let lastTask=rootTask;let node;for(let i=nodes.length-1;i>=0;i--){node=nodes[i];if(node.selection_!==undefined)continue;node.selection_=new tr.model.EventSet();if(node.parent_===undefined){lastTask=lastTask.after(this.selectEverythingAsTask_(node.selection_));}else{const prevNode=nodes[i+1];lastTask=this.createFilterTaskForNode_(lastTask,node,prevNode);}}\nreturn{rootTask,lastTask,lastNode:node};},createFilterTaskForNode_(lastTask,node,prevNode){return lastTask.after(function(){node.evaluateFilterExpression_(prevNode.selection_,node.selection_);},this);},evaluateFilterExpression_(inputSelection,outputSelection){const seenEvents={};inputSelection.forEach(function(event){const context=new tr.e.tquery.Context();context.event=event;this.evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents);}.bind(this));},evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents){const event=context.event;if(inputSelection.contains(event)&&!seenEvents[event.guid]){seenEvents[event.guid]=true;if(!this.filterExpression_||this.filterExpression_.evaluate(context)){outputSelection.push(event);}}\nif(!event.subSlices)return;context=context.push(event);for(let i=0;i<event.subSlices.length;i++){context.event=event.subSlices[i];this.evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents);}},selectEverythingAsTask_(selection){const filterTask=new tr.b.Task();for(const container of this.model_.getDescendantEventContainers()){filterTask.subTask(()=>{for(const event of container.childEvents()){addEventTreeToSelection(selection,event);}},this);}\nreturn filterTask;},ready(){return new Promise(function(resolve,reject){const graph=this.createFilterTaskGraph_();graph.lastTask=graph.lastTask.after(function(){resolve(this.selection_);},this);tr.b.Task.RunWhenIdle(graph.rootTask);}.bind(this));},get selection(){if(this.selection_===undefined){const graph=this.createFilterTaskGraph_();tr.b.Task.RunSynchronously(graph.rootTask);}\nreturn this.selection_;}};tr.c.ScriptingObjectRegistry.register(new TQuery(),{name:'$t'});return{TQuery,};});'use strict';Polymer({is:'tr-ui-scripting-control',isEnterKey_(event){return event.keyCode!==229&&(event.key==='Enter'||event.keyIdentifier==='Enter');},setFocus_(focused){const promptEl=this.$.prompt;if(focused){promptEl.focus();Polymer.dom(this.$.root).classList.add('focused');if(promptEl.value.length>0){const sel=window.getSelection();sel.collapse(Polymer.dom(promptEl).firstChild,promptEl.value.length);}}else{promptEl.blur();Polymer.dom(this.$.root).classList.remove('focused');const parent=promptEl.parentElement;const nextEl=Polymer.dom(promptEl).nextSibling;promptEl.remove();Polymer.dom(parent).insertBefore(promptEl,nextEl);}},onConsoleFocus(e){e.stopPropagation();this.setFocus_(true);},onConsoleBlur(e){e.stopPropagation();this.setFocus_(false);},promptKeyDown(e){e.stopPropagation();if(!this.isEnterKey_(e))return;e.preventDefault();const promptEl=this.$.prompt;const command=promptEl.value;if(command.length===0)return;promptEl.value='';this.addLine_(String.fromCharCode(187)+' '+command);let result;try{result=this.controller_.executeCommand(command);}catch(e){result=e.stack||e.stackTrace;}\nif(result instanceof tr.e.tquery.TQuery){result.ready().then(function(selection){this.addLine_(selection.length+' matches');this.controller_.brushingStateController.showScriptControlSelection(selection);}.bind(this));}else{this.addLine_(result);}\npromptEl.scrollIntoView();},addLine_(line){const historyEl=this.$.history;if(historyEl.innerText.length!==0){historyEl.innerText+='\\n';}\nhistoryEl.innerText+=line;},promptKeyPress(e){e.stopPropagation();},toggleVisibility(){const root=this.$.root;if(!this.visible){Polymer.dom(root).classList.remove('hidden');this.setFocus_(true);}else{Polymer.dom(root).classList.add('hidden');this.setFocus_(false);}},get hasFocus(){return this===document.activeElement;},get visible(){const root=this.$.root;return!Polymer.dom(root).classList.contains('hidden');},get controller(){return this.controller_;},set controller(c){this.controller_=c;}});'use strict';Polymer({is:'tr-ui-side-panel-container',ready(){this.activePanelContainer_=this.$.active_panel_container;this.tabStrip_=this.$.tab_strip;this.dragHandle_=this.$.side_panel_drag_handle;this.dragHandle_.horizontal=false;this.dragHandle_.target=this.activePanelContainer_;this.rangeOfInterest_=new tr.b.math.Range();this.brushingStateController_=undefined;this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onModelChanged_=this.onModelChanged_.bind(this);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);this.brushingStateController_.removeEventListener('model-changed',this.onModelChanged_);}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);this.brushingStateController_.addEventListener('model-changed',this.onModelChanged_);if(this.model){this.onModelChanged_();}}},onSelectionChanged_(){if(this.activePanel){this.activePanel.selection=this.selection;}},get model(){return this.brushingStateController_.model;},onModelChanged_(){this.activePanelType_=undefined;this.updateContents_();},get expanded(){this.hasAttribute('expanded');},get activePanel(){return this.activePanelContainer_.children[0];},get activePanelType(){return this.activePanelType_;},set activePanelType(panelType){if(this.model===undefined){throw new Error('Cannot activate panel without a model');}\nlet panel=undefined;if(panelType){panel=document.createElement(panelType);}\nif(panel!==undefined&&!panel.supportsModel(this.model)){throw new Error('Cannot activate panel: does not support this model');}\nif(this.activePanelType){Polymer.dom(this.getLabelElementForPanelType_(this.activePanelType)).removeAttribute('selected');}\nif(this.activePanelType){this.getLabelElementForPanelType_(this.activePanelType).removeAttribute('selected');}\nif(this.activePanel){this.activePanelContainer_.removeChild(this.activePanel);}\nif(panelType===undefined){Polymer.dom(this).removeAttribute('expanded');this.activePanelType_=undefined;return;}\nPolymer.dom(this.getLabelElementForPanelType_(panelType)).setAttribute('selected',true);Polymer.dom(this).setAttribute('expanded',true);Polymer.dom(this.activePanelContainer_).appendChild(panel);panel.rangeOfInterest=this.rangeOfInterest_;panel.selection=this.selection_;panel.model=this.model;this.activePanelType_=panelType;},getPanelTypeForConstructor_(constructor){for(let i=0;i<this.tabStrip_.children.length;i++){if(this.tabStrip_.children[i].panelType.constructor===constructor){return this.tabStrip_.children[i].panelType;}}},getLabelElementForPanelType_(panelType){for(let i=0;i<this.tabStrip_.children.length;i++){if(this.tabStrip_.children[i].panelType===panelType){return this.tabStrip_.children[i];}}\nreturn undefined;},updateContents_(){const previouslyActivePanelType=this.activePanelType;Polymer.dom(this.tabStrip_).textContent='';const supportedPanelTypes=[];const panelTypeInfos=tr.ui.side_panel.SidePanelRegistry.getAllRegisteredTypeInfos();const unsupportedLabelEls=[];for(const panelTypeInfo of panelTypeInfos){const labelEl=document.createElement('tab-strip-label');const panel=panelTypeInfo.constructor();const panelType=panel.tagName;Polymer.dom(labelEl).textContent=panel.textLabel;labelEl.panelType=panelType;const supported=panel.supportsModel(this.model);if(this.model&&supported.supported){supportedPanelTypes.push(panelType);Polymer.dom(labelEl).setAttribute('enabled',true);labelEl.addEventListener('click',function(panelType){this.activePanelType=this.activePanelType===panelType?undefined:panelType;}.bind(this,panelType));Polymer.dom(this.tabStrip_).appendChild(labelEl);}else{if(this.activePanel){this.activePanelContainer_.removeChild(this.activePanel);}\nthis.removeAttribute('expanded');unsupportedLabelEls.push(labelEl);}}\nfor(const labelEl of unsupportedLabelEls){Polymer.dom(this.tabStrip_).appendChild(labelEl);}\nif(previouslyActivePanelType&&supportedPanelTypes.includes(previouslyActivePanelType)){this.activePanelType=previouslyActivePanelType;Polymer.dom(this).setAttribute('expanded',true);}else{if(this.activePanel){Polymer.dom(this.activePanelContainer_).removeChild(this.activePanel);}\nPolymer.dom(this).removeAttribute('expanded');}},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(range){if(range===undefined){throw new Error('Must not be undefined');}\nthis.rangeOfInterest_=range;if(this.activePanel){this.activePanel.rangeOfInterest=range;}}});'use strict';Polymer({is:'tr-ui-timeline-view-help-overlay',ready(){const mod=tr.isMac?'cmd ':'ctrl';const spans=Polymer.dom(this.root).querySelectorAll('span.mod');for(let i=0;i<spans.length;i++){Polymer.dom(spans[i]).textContent=mod;}}});'use strict';Polymer({is:'tr-ui-timeline-view-metadata-overlay',created(){this.metadata_=undefined;},ready(){this.$.table.tableColumns=[{title:'name',value:d=>d.name,},{title:'value',value:d=>{const gov=document.createElement('tr-ui-a-generic-object-view');gov.object=d.value;return gov;},}];},get metadata(){return this.metadata_;},set metadata(metadata){this.metadata_=metadata;this.$.table.tableRows=this.metadata_;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-v-ui-preferred-display-unit',ready(){this.preferredTimeDisplayMode_=undefined;},attached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},detached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},get preferredTimeDisplayMode(){return this.preferredTimeDisplayMode_;},set preferredTimeDisplayMode(v){if(this.preferredTimeDisplayMode_===v)return;this.preferredTimeDisplayMode_=v;tr.b.Unit.didPreferredTimeDisplayUnitChange();}});'use strict';const POLYFILL_WARNING_MESSAGE='Trace Viewer is running with WebComponentsV0 polyfill, and some '+'features may be broken. As a workaround, you may try running chrome '+'with \"--enable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports\" '+'flag. See crbug.com/1036492.';Polymer({is:'tr-ui-timeline-view',created(){this.trackViewContainer_=undefined;this.queuedModel_=undefined;this.builtPromise_=undefined;this.doneBuilding_=undefined;},attached(){this.async(function(){this.trackViewContainer_=Polymer.dom(this).querySelector('#track_view_container');if(!this.trackViewContainer_){throw new Error('missing trackviewContainer');}\nif(this.queuedModel_)this.updateContents_();});},ready(){this.tabIndex=0;this.polyfillWarnedOnce_=false;this.titleEl_=this.$.title;this.leftControlsEl_=this.$.left_controls;this.rightControlsEl_=this.$.right_controls;this.collapsingControlsEl_=this.$.collapsing_controls;this.sidePanelContainer_=this.$.side_panel_container;this.brushingStateController_=new tr.c.BrushingStateController(this);this.findCtl_=this.$.view_find_control;this.findCtl_.controller=new tr.ui.FindController(this.brushingStateController_);this.scriptingCtl_=document.createElement('tr-ui-scripting-control');this.scriptingCtl_.controller=new tr.c.ScriptingController(this.brushingStateController_);this.sidePanelContainer_.brushingStateController=this.brushingStateController_;if(window.tr.metrics&&window.tr.metrics.sh&&window.tr.metrics.sh.SystemHealthMetric){this.railScoreSpan_=document.createElement('tr-metrics-ui-sh-system-health-span');Polymer.dom(this.rightControls).appendChild(this.railScoreSpan_);}else{this.railScoreSpan_=undefined;}\nthis.flowEventFilter_=this.$.flow_event_filter_dropdown;this.processFilter_=this.$.process_filter_dropdown;this.optionsDropdown_=this.$.view_options_dropdown;this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highlightVSyncCheckbox_=tr.ui.b.createCheckBox(this,'highlightVSync','tr.ui.TimelineView.highlightVSync',false,'Highlight VSync');Polymer.dom(this.optionsDropdown_).appendChild(this.highlightVSyncCheckbox_);this.initMetadataButton_();this.initConsoleButton_();this.initHelpButton_();Polymer.dom(this.collapsingControls).appendChild(this.scriptingCtl_);this.dragEl_=this.$.drag_handle;this.analysisEl_=this.$.analysis;this.analysisEl_.brushingStateController=this.brushingStateController_;this.addEventListener('requestSelectionChange',function(e){const sc=this.brushingStateController_;sc.changeSelectionFromRequestSelectionChangeEvent(e.selection);}.bind(this));this.onViewportChanged_=this.onViewportChanged_.bind(this);this.bindKeyListeners_();this.dragEl_.target=this.analysisEl_;},get globalMode(){return this.hotkeyController.globalMode;},set globalMode(globalMode){globalMode=!!globalMode;this.brushingStateController_.historyEnabled=globalMode;this.hotkeyController.globalMode=globalMode;},get hotkeyController(){return this.$.hkc;},warnPolyfill(){if(this.polyfillWarnedOnce_)return;console.warn(POLYFILL_WARNING_MESSAGE);this.polyfillWarnedOnce_=true;if(!window.__hideTraceViewerPolyfillWarning){const polyfillWarningsEl=Polymer.dom(this.root).querySelector('#polyfill-warning');polyfillWarningsEl.addMessage(POLYFILL_WARNING_MESSAGE,[{buttonText:'Hide',onClick:()=>polyfillWarningsEl.clearMessages()}]);}},updateDocumentFavicon(){let hue;if(!this.model){hue='blue';}else{hue=this.model.faviconHue;}\nlet faviconData=tr.ui.b.FaviconsByHue[hue];if(faviconData===undefined){faviconData=tr.ui.b.FaviconsByHue.blue;}\nlet link=Polymer.dom(document.head).querySelector('link[rel=\"shortcut icon\"]');if(!link){link=document.createElement('link');link.rel='shortcut icon';Polymer.dom(document.head).appendChild(link);}\nlink.href=faviconData;},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;if(!this.trackView_)return;this.trackView_.viewport.highlightVSync=highlightVSync;},initHelpButton_(){const helpButtonEl=this.$.view_help_button;const dlg=new tr.ui.b.Overlay();dlg.title='Chrome Tracing Help';dlg.visible=false;dlg.appendChild(document.createElement('tr-ui-timeline-view-help-overlay'));function onClick(e){dlg.visible=!dlg.visible;e.stopPropagation();}\nhelpButtonEl.addEventListener('click',onClick.bind(this));},initConsoleButton_(){const toggleEl=this.$.view_console_button;function onClick(e){this.scriptingCtl_.toggleVisibility();e.stopPropagation();return false;}\ntoggleEl.addEventListener('click',onClick.bind(this));},initMetadataButton_(){const showEl=this.$.view_metadata_button;function onClick(e){const dlg=new tr.ui.b.Overlay();dlg.title='Metadata for trace';const metadataOverlay=document.createElement('tr-ui-timeline-view-metadata-overlay');metadataOverlay.metadata=this.model.metadata;Polymer.dom(dlg).appendChild(metadataOverlay);dlg.visible=true;e.stopPropagation();return false;}\nshowEl.addEventListener('click',onClick.bind(this));this.updateMetadataButtonVisibility_();},updateMetadataButtonVisibility_(){const showEl=this.$.view_metadata_button;showEl.style.display=(this.model&&this.model.metadata.length)?'':'none';},updateFlowEventList_(){const dropdown=Polymer.dom(this.flowEventFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);}\nif(!this.model)return;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));const categories=new Set();for(const event of this.model.flowEvents){for(const category of tr.b.getCategoryParts(event.category)){categories.add(category);}}\nconst sortedCategories=[...categories].sort((a,b)=>a.localeCompare(b,'en',{sensitivity:'base'}));for(const category of sortedCategories){const cbox=tr.ui.b.createCheckBox(undefined,undefined,'tr.ui.TimelineView.selectedFlowEvents.'+category,false,category,()=>{if(cbox.checked){this.selectedFlowEvents.add(category);}else{this.selectedFlowEvents.delete(category);}\nif(this.trackView_){this.trackView_.viewport.dispatchChangeEvent();}});if(cbox.checked){this.selectedFlowEvents.add(category);}\ncboxes.push(cbox);dropdown.appendChild(cbox);}},updateProcessList_(){const dropdown=Polymer.dom(this.processFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);}\nif(!this.model)return;const trackView=this.trackViewContainer_.querySelector('tr-ui-timeline-track-view');const processViews=trackView.processViews;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));for(const view of processViews){const cbox=tr.ui.b.createCheckBox(undefined,undefined,undefined,true,view.processBase.userFriendlyName,()=>view.visible=cbox.checked);cbox.checked=view.visible;cboxes.push(cbox);view.addEventListener('visibility',()=>cbox.checked=view.visible);dropdown.appendChild(cbox);}},get leftControls(){return this.leftControlsEl_;},get rightControls(){return this.rightControlsEl_;},get collapsingControls(){return this.collapsingControlsEl_;},get viewTitle(){return Polymer.dom(this.titleEl_).textContent.substring(Polymer.dom(this.titleEl_).textContent.length-2);},set viewTitle(text){if(text===undefined){Polymer.dom(this.titleEl_).textContent='';this.titleEl_.hidden=true;return;}\nthis.titleEl_.hidden=false;Polymer.dom(this.titleEl_).textContent=text;},get model(){if(this.trackView_){return this.trackView_.model;}\nreturn undefined;},set model(model){this.build(model);},async build(model){this.queuedModel_=model;this.builtPromise_=new Promise((resolve,reject)=>{this.doneBuilding_=resolve;});if(this.trackViewContainer_)await this.updateContents_();},get builtPromise(){return this.builtPromise_;},async updateContents_(){if(this.trackViewContainer_===undefined){throw new Error('timeline-view.updateContents_ requires trackViewContainer_');}\nconst model=this.queuedModel_;this.queuedModel_=undefined;const modelInstanceChanged=model!==this.model;const modelValid=model&&!model.bounds.isEmpty;const importWarningsEl=Polymer.dom(this.root).querySelector('#import-warnings');Polymer.dom(importWarningsEl).textContent='';if(modelInstanceChanged){if(this.railScoreSpan_){this.railScoreSpan_.model=undefined;}\nPolymer.dom(this.trackViewContainer_).textContent='';if(this.trackView_){this.trackView_.viewport.removeEventListener('change',this.onViewportChanged_);this.trackView_.brushingStateController=undefined;this.trackView_.detach();this.trackView_=undefined;}\nthis.brushingStateController_.modelWillChange();}\nif(modelValid&&!this.trackView_){this.trackView_=document.createElement('tr-ui-timeline-track-view');this.trackView_.timelineView=this;this.trackView.brushingStateController=this.brushingStateController_;Polymer.dom(this.trackViewContainer_).appendChild(this.trackView_);this.trackView_.viewport.addEventListener('change',this.onViewportChanged_);}\nif(modelValid){this.trackView_.model=model;this.trackView_.viewport.selectedFlowEvents=this.selectedFlowEvents;this.trackView_.viewport.highlightVSync=this.highlightVSync;if(this.railScoreSpan_){this.railScoreSpan_.model=model;}\nthis.$.display_unit.preferredTimeDisplayMode=model.intrinsicTimeUnit;}\nif(window.CustomElements&&!window.CustomElements.hasNative){this.warnPolyfill();}\nif(model){for(const warning of model.importWarningsThatShouldBeShownToUser){importWarningsEl.addMessage(`Import Warning: ${warning.type}: ${warning.message}`,[{buttonText:'Dismiss',onClick(event,infobar){infobar.visible=false;}}]);}}\nif(modelInstanceChanged){this.updateFlowEventList_();this.updateProcessList_();this.updateMetadataButtonVisibility_();this.brushingStateController_.modelDidChange();this.onViewportChanged_();}\nthis.doneBuilding_();},get brushingStateController(){return this.brushingStateController_;},get trackView(){return this.trackView_;},get settings(){if(!this.settings_){this.settings_=new tr.b.Settings();}\nreturn this.settings_;},set focusElement(value){throw new Error('This is deprecated. Please set globalMode to true.');},bindKeyListeners_(){const hkc=this.hotkeyController;hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'`'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){this.scriptingCtl_.toggleVisibility();if(!this.scriptingCtl_.hasFocus){this.focus();}\ne.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'/'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){if(this.scriptingCtl_.hasFocus)return;if(this.findCtl_.hasFocus){this.focus();}else{this.findCtl_.focus();}\ne.preventDefault();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'?'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.$.view_help_button.click();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'v'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.toggleHighlightVSync_();e.stopPropagation();}}));},onViewportChanged_(e){const spc=this.sidePanelContainer_;if(!this.trackView_){spc.rangeOfInterest.reset();return;}\nconst vr=this.trackView_.viewport.interestRange.asRangeObject();if(!spc.rangeOfInterest.equals(vr)){spc.rangeOfInterest=vr;}\nif(this.railScoreSpan_&&this.model){this.railScoreSpan_.model=this.model;}},toggleHighlightVSync_(){this.highlightVSyncCheckbox_.checked=!this.highlightVSyncCheckbox_.checked;},setFindCtlText(string){this.findCtl_.setText(string);}});'use strict';tr.exportTo('tr.ui.b',function(){function Row(title,data,groupingKeyFuncs,rowStatsConstructor){this.title=title;this.data_=data;if(groupingKeyFuncs===undefined){groupingKeyFuncs=[];}\nthis.groupingKeyFuncs_=groupingKeyFuncs;this.rowStatsConstructor_=rowStatsConstructor;this.subRowsBuilt_=false;this.subRows_=undefined;this.rowStats_=undefined;}\nRow.prototype={getCurrentGroupingKeyFunc_(){if(this.groupingKeyFuncs_.length===0)return undefined;return this.groupingKeyFuncs_[0];},get data(){return this.data_;},get rowStats(){if(this.rowStats_===undefined){this.rowStats_=new this.rowStatsConstructor_(this);}\nreturn this.rowStats_;},rebuildSubRowsIfNeeded_(){if(this.subRowsBuilt_)return;this.subRowsBuilt_=true;const groupingKeyFunc=this.getCurrentGroupingKeyFunc_();if(groupingKeyFunc===undefined){this.subRows_=undefined;return;}\nconst dataByKey={};let hasValues=false;this.data_.forEach(function(datum){const key=groupingKeyFunc(datum);hasValues=hasValues||(key!==undefined);if(dataByKey[key]===undefined){dataByKey[key]=[];}\ndataByKey[key].push(datum);});if(!hasValues){this.subRows_=undefined;return;}\nthis.subRows_=[];for(const key in dataByKey){const row=new Row(key,dataByKey[key],this.groupingKeyFuncs_.slice(1),this.rowStatsConstructor_);this.subRows_.push(row);}},get isExpanded(){return(this.subRows&&(this.subRows.length>0)&&(this.subRows.length<5));},get subRows(){this.rebuildSubRowsIfNeeded_();return this.subRows_;}};Polymer({is:'tr-ui-b-grouping-table',created(){this.dataToGroup_=undefined;this.groupBy_=undefined;this.rowStatsConstructor_=undefined;},get tableColumns(){return this.$.table.tableColumns;},set tableColumns(tableColumns){this.$.table.tableColumns=tableColumns;},get tableRows(){return this.$.table.tableRows;},get sortColumnIndex(){return this.$.table.sortColumnIndex;},set sortColumnIndex(sortColumnIndex){this.$.table.sortColumnIndex=sortColumnIndex;},get sortDescending(){return this.$.table.sortDescending;},set sortDescending(sortDescending){this.$.table.sortDescending=sortDescending;},get selectionMode(){return this.$.table.selectionMode;},set selectionMode(selectionMode){this.$.table.selectionMode=selectionMode;},get rowHighlightStyle(){return this.$.table.rowHighlightStyle;},set rowHighlightStyle(rowHighlightStyle){this.$.table.rowHighlightStyle=rowHighlightStyle;},get cellHighlightStyle(){return this.$.table.cellHighlightStyle;},set cellHighlightStyle(cellHighlightStyle){this.$.table.cellHighlightStyle=cellHighlightStyle;},get selectedColumnIndex(){return this.$.table.selectedColumnIndex;},set selectedColumnIndex(selectedColumnIndex){this.$.table.selectedColumnIndex=selectedColumnIndex;},get selectedTableRow(){return this.$.table.selectedTableRow;},set selectedTableRow(selectedTableRow){this.$.table.selectedTableRow=selectedTableRow;},get groupBy(){return this.groupBy_;},set groupBy(groupBy){this.groupBy_=groupBy;this.updateContents_();},get dataToGroup(){return this.dataToGroup_;},set dataToGroup(dataToGroup){this.dataToGroup_=dataToGroup;this.updateContents_();},get rowStatsConstructor(){return this.rowStatsConstructor_;},set rowStatsConstructor(rowStatsConstructor){this.rowStatsConstructor_=rowStatsConstructor;this.updateContents_();},rebuild(){this.$.table.rebuild();},updateContents_(){const groupBy=this.groupBy_||[];const dataToGroup=this.dataToGroup_||[];const rowStatsConstructor=this.rowStatsConstructor_||function(){};const superRow=new Row('',dataToGroup,groupBy,rowStatsConstructor);this.$.table.tableRows=superRow.subRows||[];}});return{};});'use strict';tr.exportTo('tr.ui.b',function(){const THIS_DOC=document.currentScript.ownerDocument;Polymer({is:'tr-ui-b-grouping-table-groupby-picker-group',created(){this.picker_=undefined;this.group_=undefined;},get picker(){return this.picker_;},set picker(picker){this.picker_=picker;},get group(){return this.group_;},set group(g){this.group_=g;this.$.label.textContent=g.label;},get enabled(){return this.$.enabled.checked;},set enabled(enabled){this.$.enabled.checked=enabled;if(!this.enabled){this.$.left.style.display='none';this.$.right.style.display='none';}},set isFirst(isFirst){this.$.left.style.display=(!this.enabled||isFirst)?'none':'inline';},set isLast(isLast){this.$.right.style.display=(!this.enabled||isLast)?'none':'inline';},moveLeft_(){this.picker.moveLeft_(this);},moveRight_(){this.picker.moveRight_(this);},onEnableChanged_(){if(!this.enabled){this.$.left.style.display='none';this.$.right.style.display='none';}\nthis.picker.onEnableChanged_(this);}});Polymer({is:'tr-ui-b-grouping-table-groupby-picker',created(){this.settingsKey_=undefined;},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){this.settingsKey_=settingsKey;if(this.$.container.children.length){this.restoreSetting_();}},restoreSetting_(){if(this.settingsKey_===undefined)return;this.currentGroupKeys=tr.b.Settings.get(this.settingsKey_,this.currentGroupKeys);},get possibleGroups(){return Array.from(this.$.container.children).map(groupEl=>groupEl.group);},set possibleGroups(possibleGroups){Polymer.dom(this.$.container).textContent='';for(let i=0;i<possibleGroups.length;++i){const groupEl=document.createElement('tr-ui-b-grouping-table-groupby-picker-group');groupEl.picker=this;groupEl.group=possibleGroups[i];Polymer.dom(this.$.container).appendChild(groupEl);}\nthis.restoreSetting_();this.updateFirstLast_();},updateFirstLast_(){const groupEls=Array.from(this.$.container.children);const enabledGroupEls=groupEls.filter(el=>el.enabled);for(let i=0;i<enabledGroupEls.length;++i){enabledGroupEls[i].isFirst=i===0;enabledGroupEls[i].isLast=i===enabledGroupEls.length-1;}},get currentGroupKeys(){return this.currentGroups.map(group=>group.key);},get currentGroups(){const groups=[];for(const groupEl of Array.from(this.$.container.children)){if(groupEl.enabled){groups.push(groupEl.group);}}\nreturn groups;},set currentGroupKeys(newKeys){if(!tr.b.compareArrays(this.currentGroupKeys,newKeys,(x,y)=>x.localeCompare(y))){return;}\nconst possibleGroups=new Map();for(const group of this.possibleGroups){possibleGroups.set(group.key,group);}\nconst groupEls=this.$.container.children;let i=0;for(i=0;i<newKeys.length;++i){const group=possibleGroups.get(newKeys[i]);if(group===undefined){newKeys.splice(i,1);--i;continue;}\ngroupEls[i].group=group;groupEls[i].enabled=true;possibleGroups.delete(newKeys[i]);}\nfor(const group of possibleGroups.values()){groupEls[i].group=group;groupEls[i].enabled=false;++i;}\nthis.updateFirstLast_();this.onCurrentGroupsChanged_();},moveLeft_(groupEl){const reference=groupEl.previousSibling;Polymer.dom(this.$.container).removeChild(groupEl);Polymer.dom(this.$.container).insertBefore(groupEl,reference);this.updateFirstLast_();if(groupEl.enabled){this.onCurrentGroupsChanged_();}},moveRight_(groupEl){const reference=groupEl.nextSibling.nextSibling;Polymer.dom(this.$.container).removeChild(groupEl);if(reference){Polymer.dom(this.$.container).insertBefore(groupEl,reference);}else{Polymer.dom(this.$.container).appendChild(groupEl);}\nthis.updateFirstLast_();if(groupEl.enabled){this.onCurrentGroupsChanged_();}},onCurrentGroupsChanged_(){this.dispatchEvent(new tr.b.Event('current-groups-changed'));tr.b.Settings.set(this.settingsKey_,this.currentGroupKeys);},onEnableChanged_(groupEl){this.updateFirstLast_();this.onCurrentGroupsChanged_();}});return{};});'use strict';(function(){Polymer({is:'tr-ui-sp-file-size-stats-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.selection_=new tr.model.EventSet();this.$.picker.settingsKey='tr-ui-sp-file-size-stats-side-panel-picker';this.$.picker.possibleGroups=[{key:'phase',label:'Event Type',dataFn(eventStat){return eventStat.phase;}},{key:'category',label:'Category',dataFn(eventStat){return eventStat.category;}},{key:'title',label:'Title',dataFn(eventStat){return eventStat.title;}}];if(this.$.picker.currentGroupKeys.length===0){this.$.picker.currentGroupKeys=['phase','title'];}\nthis.$.picker.addEventListener('current-groups-changed',this.updateContents_.bind(this));},get textLabel(){return'File Size Stats';},supportsModel(m){if(!m){return{supported:false,reason:'No stats were collected for this file.'};}\nif(m.stats.allTraceEventStats.length===0){return{supported:false,reason:'No stats were collected for this file.'};}\nreturn{supported:true};},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;},createColumns_(stats){const columns=[{title:'Title',value(row){const titleEl=document.createElement('span');Polymer.dom(titleEl).textContent=row.title;titleEl.style.textOverflow='ellipsis';return titleEl;},cmp(a,b){return a.title.localeCompare(b.title);},width:'400px'},{title:'Num Events',align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,value(row){return row.rowStats.numEvents;},cmp(a,b){return a.rowStats.numEvents-b.rowStats.numEvents;},width:'80px'}];if(stats&&stats.hasEventSizesinBytes){columns.push({title:'Bytes',value(row){const value=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes,row.rowStats.totalEventSizeinBytes);const spanEl=tr.v.ui.createScalarSpan(value);return spanEl;},cmp(a,b){return a.rowStats.totalEventSizeinBytes-\nb.rowStats.totalEventSizeinBytes;},width:'80px'});}\nreturn columns;},updateContents_(){const table=this.$.table;const columns=this.createColumns_(this.model.stats);table.rowStatsConstructor=function ModelStatsRowStats(row){const sum=tr.b.math.Statistics.sum(row.data,function(x){return x.numEvents;});const totalEventSizeinBytes=tr.b.math.Statistics.sum(row.data,x=>x.totalEventSizeinBytes);return{numEvents:sum,totalEventSizeinBytes};};table.tableColumns=columns;table.sortColumnIndex=1;table.sortDescending=true;table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.groupBy=this.$.picker.currentGroups.map(function(group){return group.dataFn;});if(!this.model){table.dataToGroup=[];}else{table.dataToGroup=this.model.stats.allTraceEventStats;}\nthis.$.table.rebuild();}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-sp-file-size-stats-side-panel');});})();'use strict';tr.exportTo('tr.mre',function(){function Failure(job,functionHandleString,traceCanonicalUrl,failureTypeName,description,stack){this.job=job;this.functionHandleString=functionHandleString;this.traceCanonicalUrl=traceCanonicalUrl;this.failureTypeName=failureTypeName;this.description=description;this.stack=stack;}\nFailure.prototype={asDict(){return{function_handle_string:this.functionHandleString,trace_canonical_url:this.traceCanonicalUrl,type:this.failureTypeName,description:this.description,stack:this.stack};}};Failure.fromDict=function(failureDict){return new Failure(undefined,failureDict.function_handle_string,failureDict.trace_canonical_url,failureDict.type,failureDict.description,failureDict.stack);};return{Failure,};});'use strict';tr.exportTo('tr.mre',function(){const FunctionRegistry={allFunctions_:[],allFunctionsByName_:{},get allFunctions(){return this.allFunctions_;},get allFunctionsByName(){return this.allFunctionsByName_;}};FunctionRegistry.getFunction=function(name){return this.allFunctionsByName_[name];};FunctionRegistry.register=function(func){if(func.name===''){throw new Error('Registered functions must not be anonymous');}\nif(this.allFunctionsByName[func.name]!==undefined){throw new Error('Function named '+func.name+'is already registered.');}\nthis.allFunctionsByName[func.name]=func;this.allFunctions.push(func);};function ModuleToLoad(href,filename){if((href!==undefined)?(filename!==undefined):(filename===undefined)){throw new Error('ModuleToLoad must specify exactly one of href or '+'filename');}\nthis.href=href;this.filename=filename;}\nModuleToLoad.prototype={asDict(){if(this.href!==undefined){return{'href':this.href};}\nreturn{'filename':this.filename};},toString(){if(this.href!==undefined){return'ModuleToLoad(href=\"'+this.href+'\")';}\nreturn'ModuleToLoad(filename=\"'+this.filename+'\")';}};ModuleToLoad.fromDict=function(moduleDict){return new ModuleToLoad(moduleDict.href,moduleDict.filename);};function FunctionHandle(modulesToLoad,functionName,opt_options){if(!(modulesToLoad instanceof Array)){throw new Error('modulesToLoad in FunctionHandle must be an array');}\nif(typeof(functionName)!=='string'){throw new Error('functionName in FunctionHandle must be a string');}\nthis.modulesToLoad=modulesToLoad;this.functionName=functionName;this.options_=opt_options;}\nFunctionHandle.prototype={get options(){return this.options_;},asDict(){return{'modules_to_load':this.modulesToLoad.map(function(m){return m.asDict();}),'function_name':this.functionName,'options':this.options_};},asUserFriendlyString(){const parts=this.modulesToLoad.map(mtl=>mtl.filename);parts.push(this.functionName);parts.push(JSON.stringify(this.options_));return parts.join(',');},hasHrefs(){for(const module in this.modulesToLoad){if(this.modulesToLoad[module].href!==undefined){return true;}}\nreturn false;},load(){if(this.hasHrefs()){const err=new Error('FunctionHandle named '+this.functionName+' specifies hrefs, which cannot be loaded.');err.name='FunctionLoadingError';throw err;}\nfor(const module in this.modulesToLoad){const filename=this.modulesToLoad[module].filename;try{HTMLImportsLoader.loadHTMLFile(filename);}catch(err){err.name='FunctionLoadingError';throw err;}}\nconst func=FunctionRegistry.getFunction(this.functionName);if(func===undefined){const err=new Error('No registered function named '+this.functionName);err.name='FunctionNotDefinedError';throw err;}\nreturn func;},toString(){const modulesToLoadStr=this.modulesToLoad.map(function(module){return module.toString();});return'FunctionHandle(modulesToLoad=['+modulesToLoadStr+'], '+'functionName=\"'+this.functionName+'\", options=\"'+\nJSON.stringify(this.options_)+'\")';}};FunctionHandle.loadFromFilename_=function(filename){try{const numFunctionsBefore=FunctionRegistry.allFunctions.length;HTMLImportsLoader.loadHTMLFile(filename);}catch(err){err.name='FunctionLoadingError';throw err;}\nconst numFunctionsNow=FunctionRegistry.allFunctions.length;if(numFunctionsNow!==(numFunctionsBefore+1)){const err=new Error(filename+' didn\\'t call FunctionRegistry.register');err.name='FunctionNotDefinedError';throw err;}\nreturn FunctionRegistry.allFunctions[numFunctionsNow-1];};FunctionHandle.fromDict=function(handleDict){const options=handleDict.options;let modulesToLoad;if(handleDict.modules_to_load!==undefined){modulesToLoad=handleDict.modules_to_load.map(function(module){return ModuleToLoad.fromDict(module);});}\nreturn new FunctionHandle(modulesToLoad,handleDict.function_name,options);};return{FunctionHandle,ModuleToLoad,FunctionRegistry,};});'use strict';tr.exportTo('tr.metrics',function(){function runMetrics(model,options,addFailureCb){if(options===undefined){throw new Error('Options are required.');}\nconst metricNames=options.metrics;if(!metricNames){throw new Error('Metric names should be specified.');}\nconst allMetricsStart=new Date();const durationBreakdown=new tr.v.d.Breakdown();const categories=getTraceCategories(model);const histograms=new tr.v.HistogramSet();histograms.createHistogram('trace_import_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,model.stats.traceImportDurationMs,{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(1e-3,1e5,30),description:'Duration that trace viewer required to import the trace',summaryOptions:tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS,});for(const metricName of metricNames){const metricStart=new Date();const metric=tr.metrics.MetricRegistry.findTypeInfoWithName(metricName);if(metric===undefined){throw new Error(`\"${metricName}\" is not a registered metric.`);}\nvalidateTraceCategories(metric.metadata.requiredCategories,categories);try{metric.constructor(histograms,model,options);}catch(e){const err=tr.b.normalizeException(e);addFailureCb(new tr.mre.Failure(undefined,'metricMapFunction',model.canonicalUrl,err.typeName,err.message,err.stack));}\nconst metricMs=new Date()-metricStart;histograms.createHistogram(metricName+'_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[metricMs]);durationBreakdown.set(metricName,metricMs);}\nvalidateDiagnosticNames(histograms);const allMetricsMs=new Date()-allMetricsStart+\nmodel.stats.traceImportDurationMs;durationBreakdown.set('traceImport',model.stats.traceImportDurationMs);durationBreakdown.set('other',allMetricsMs-tr.b.math.Statistics.sum(durationBreakdown,([metricName,metricMs])=>metricMs));const breakdownNames=tr.v.d.RelatedNameMap.fromEntries(new Map(metricNames.map(metricName=>[metricName,metricName+'_duration'])));breakdownNames.set('traceImport','trace_import_duration');histograms.createHistogram('metrics_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[{value:allMetricsMs,diagnostics:{breakdown:durationBreakdown},},],{diagnostics:{breakdown:breakdownNames},});return histograms;}\nfunction getTraceCategories(model){for(const metadata of model.metadata){let config;if(metadata.name==='TraceConfig'&&metadata.value){config=metadata.value;}\nif(metadata.name==='metadata'&&metadata.value&&metadata.value['trace-config']&&metadata.value['trace-config']!=='__stripped__'){config=JSON.parse(metadata.value['trace-config']);}\nif(config){return{excluded:config.excluded_categories||[],included:config.included_categories||[],};}}}\nfunction validateTraceCategories(requiredCategories,categories){if(!requiredCategories)return;if(!categories)throw new Error('Missing trace config metadata');for(const cat of requiredCategories){const isDisabledByDefault=(cat.indexOf('disabled-by-default')===0);let missing=false;if(isDisabledByDefault){if(!categories.included.includes(cat)){missing=true;}}else if(categories.excluded.includes(cat)){missing=true;}\nif(missing){throw new Error(`Trace is missing required category \"${cat}\"`);}}}\nfunction validateDiagnosticNames(histograms){for(const hist of histograms){for(const name of hist.diagnostics.keys()){if(tr.v.d.RESERVED_NAMES_SET.has(name)){throw new Error(`Illegal diagnostic name \"${name}\" on Histogram \"${hist.name}\"`);}}}}\nfunction addTelemetryInfo(histograms,model){for(const metadata of model.metadata){if(!metadata.value||!metadata.value.telemetry)continue;for(const[name,value]of Object.entries(metadata.value.telemetry)){const type=tr.v.d.RESERVED_NAMES_TO_TYPES.get(name);if(type===undefined){throw new Error(`Unexpected telemetry.${name}`);}\nhistograms.addSharedDiagnosticToAllHistograms(name,new type(value));}}}\nfunction metricMapFunction(result,model,options){const histograms=runMetrics(model,options,result.addFailure.bind(result));addTelemetryInfo(histograms,model);if(model.canonicalUrl!==undefined){const info=tr.v.d.RESERVED_INFOS.TRACE_URLS;histograms.addSharedDiagnosticToAllHistograms(info.name,new info.type([model.canonicalUrl]));}\nresult.addPair('histograms',histograms.asDicts());const scalarDicts=[];for(const value of histograms){for(const[statName,scalar]of value.statisticsScalars){scalarDicts.push({name:value.name+'_'+statName,numeric:scalar.asDict(),description:value.description,});}}\nresult.addPair('scalars',scalarDicts);}\ntr.mre.FunctionRegistry.register(metricMapFunction);return{metricMapFunction,runMetrics,};});'use strict';tr.exportTo('tr.mre',function(){class MreResult{constructor(failures,pairs){if(failures===undefined){failures=[];}\nif(pairs===undefined){pairs={};}\nthis.failures=failures;this.pairs=pairs;}\naddFailure(failure){this.failures.push(failure);}\naddPair(key,value){if(key in this.pairs){throw new Error('Key '+key+' already exists in result.');}\nthis.pairs[key]=value;}\nasDict(){const d={pairs:this.pairs};if(this.failures){d.failures=this.failures.map(function(f){return f.asDict();});}\nreturn d;}\nhadFailures(){return this.failures.length>0;}\nstatic fromDict(resultDict){const failures=(resultDict.failures!==undefined)?resultDict.failures.map(tr.mre.Failure.fromDict):undefined;const pairs=resultDict.pairs;return new MreResult(failures,pairs);}}\nreturn{MreResult,};});'use strict';tr.exportTo('tr.ui',function(){class NullBrushingStateController extends tr.c.BrushingStateController{constructor(){super(undefined);this.parentController=undefined;}\ndispatchChangeEvent_(){if(this.parentController)this.parentController.dispatchChangeEvent_();}\nget model(){if(!this.parentController)return undefined;return this.parentController.model;}\nget trackView(){if(!this.parentController)return undefined;return this.parentController.trackView;}\nget viewport(){if(!this.parentController)return undefined;return this.parentController.viewport;}\nget historyEnabled(){if(!this.parentController)return undefined;return this.parentController.historyEnabled;}\nset historyEnabled(historyEnabled){if(this.parentController){this.parentController.historyEnabled=historyEnabled;}}\nmodelWillChange(){if(this.parentController)this.parentController.modelWillChange();}\nmodelDidChange(){if(this.parentController)this.parentController.modelDidChange();}\nonUserInitiatedSelectionChange_(){if(this.parentController){this.parentController.onUserInitiatedSelectionChange_();}}\nonPopState_(e){if(this.parentController)this.parentController.onPopState_(e);}\nget selection(){if(!this.parentController)return undefined;return this.parentController.selection;}\nget findMatches(){if(!this.parentController)return undefined;return this.parentController.findMatches;}\nget selectionOfInterest(){if(!this.parentController)return undefined;return this.parentController.selectionOfInterest;}\nget currentBrushingState(){if(!this.parentController)return undefined;return this.parentController.currentBrushingState;}\nset currentBrushingState(newBrushingState){if(this.parentController){this.parentController.currentBrushingState=newBrushingState;}}\naddAllEventsMatchingFilterToSelectionAsTask(filter,selection){if(this.parentController){this.parentController.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);}}\nfindTextChangedTo(allPossibleMatches){if(this.parentController){this.parentController.findTextChangedTo(allPossibleMatches);}}\nfindFocusChangedTo(currentFocus){if(this.parentController){this.parentController.findFocusChangedTo(currentFocus);}}\nfindTextCleared(){if(this.parentController){this.parentController.findTextCleared();}}\nuiStateFromString(string){if(this.parentController){this.parentController.uiStateFromString(string);}}\nnavToPosition(uiState,showNavLine){if(this.parentController){this.parentController.navToPosition(uiState,showNavLine);}}\nchangeSelectionFromTimeline(selection){if(this.parentController){this.parentController.changeSelectionFromTimeline(selection);}}\nshowScriptControlSelection(selection){if(this.parentController){this.parentController.showScriptControlSelection(selection);}}\nchangeSelectionFromRequestSelectionChangeEvent(selection){if(this.parentController){this.parentController.changeSelectionFromRequestSelectionChangeEvent(selection);}}\nchangeAnalysisViewRelatedEvents(eventSet){if(this.parentController&&(eventSet instanceof tr.model.EventSet)){this.parentController.changeAnalysisViewRelatedEvents(eventSet);}}\nchangeAnalysisLinkHoveredEvents(eventSet){if(this.parentController&&(eventSet instanceof tr.model.EventSet)){this.parentController.changeAnalysisLinkHoveredEvents(eventSet);}}\ngetViewSpecificBrushingState(viewId){if(this.parentController){this.parentController.getViewSpecificBrushingState(viewId);}}\nchangeViewSpecificBrushingState(viewId,newState){if(this.parentController){this.parentController.changeViewSpecificBrushingState(viewId,newState);}}}\nreturn{NullBrushingStateController,};});'use strict';tr.exportTo('tr.v',function(){const IGNORE_GROUPING_KEYS=['name','storyTags','testPath',];class CSVBuilder{constructor(histograms){this.histograms_=histograms;this.table_=[];this.statisticsNames_=new Set();this.groupings_=[];}\nbuild(){this.prepare_();this.buildHeader_();this.buildTable_();}\nprepare_(){for(const[key,grouping]of tr.v.HistogramGrouping.BY_KEY){if(IGNORE_GROUPING_KEYS.includes(key))continue;this.groupings_.push(grouping);}\nthis.groupings_.push(new tr.v.GenericSetGrouping(tr.v.d.RESERVED_NAMES.TRACE_URLS));this.groupings_.sort((a,b)=>a.key.localeCompare(b.key));for(const hist of this.histograms_){for(const name of hist.statisticsNames){this.statisticsNames_.add(name);}}\nthis.statisticsNames_=Array.from(this.statisticsNames_);this.statisticsNames_.sort();}\nbuildHeader_(){const header=['name','unit'];for(const name of this.statisticsNames_){header.push(name);}\nfor(const grouping of this.groupings_){header.push(grouping.key);}\nthis.table_.push(header);}\nbuildTable_(){for(const hist of this.histograms_){const row=[hist.name,hist.unit.unitString];this.table_.push(row);for(const name of this.statisticsNames_){const stat=hist.getStatisticScalar(name);if(stat){row.push(stat.value);}else{row.push('');}}\nfor(const grouping of this.groupings_){row.push(grouping.callback(hist));}}}\ntoString(){let str='';for(const row of this.table_){for(let i=0;i<row.length;++i){if(i>0){str+=',';}\nlet cell=''+row[i];cell=cell.replace(/\\n/g,' ');if(cell.indexOf(',')>=0||cell.indexOf('\"')>=0){cell='\"'+cell.replace(/\"/g,'\"\"')+'\"';}\nstr+=cell;}\nstr+='\\n';}\nreturn str;}}\nreturn{CSVBuilder,};});'use strict';tr.exportTo('tr.v',function(){const getDisplayLabel=tr.v.HistogramGrouping.DISPLAY_LABEL.callback;const DEFAULT_POSSIBLE_GROUPS=[];const EXCLUDED_GROUPING_KEYS=[tr.v.HistogramGrouping.DISPLAY_LABEL.key,];for(const group of tr.v.HistogramGrouping.BY_KEY.values()){if(EXCLUDED_GROUPING_KEYS.includes(group.key))continue;DEFAULT_POSSIBLE_GROUPS.push(group);}\nclass HistogramParameterCollector{constructor(){this.statisticNames_=new Set(['avg']);this.labelsToStartTimes_=new Map();this.keysToGroupings_=new Map(DEFAULT_POSSIBLE_GROUPS.map(g=>[g.key,g]));this.keysToValues_=new Map(DEFAULT_POSSIBLE_GROUPS.map(g=>[g.key,new Set()]));this.keysToValues_.delete(tr.v.HistogramGrouping.HISTOGRAM_NAME.key);}\nprocess(histograms){const allStoryTags=new Set();let maxSampleCount=0;for(const hist of histograms){maxSampleCount=Math.max(maxSampleCount,hist.numValues);for(const statName of hist.statisticsNames){this.statisticNames_.add(statName);}\nlet startTime=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);if(startTime!==undefined)startTime=startTime.minDate.getTime();const displayLabel=getDisplayLabel(hist);if(this.labelsToStartTimes_.has(displayLabel)){startTime=Math.min(startTime,this.labelsToStartTimes_.get(displayLabel));}\nthis.labelsToStartTimes_.set(displayLabel,startTime);for(const[groupingKey,values]of this.keysToValues_){const grouping=this.keysToGroupings_.get(groupingKey);const value=grouping.callback(hist);if(!value)continue;values.add(value);if(values.size>1){this.keysToValues_.delete(groupingKey);}}\nconst storyTags=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.STORY_TAGS);for(const tag of(storyTags||[])){allStoryTags.add(tag);}}\ntr.b.Timing.instant('HistogramParameterCollector','maxSampleCount',maxSampleCount);for(const tagGrouping of tr.v.HistogramGrouping.buildFromTags(allStoryTags,tr.v.d.RESERVED_NAMES.STORY_TAGS)){const values=new Set();for(const hist of histograms){values.add(tagGrouping.callback(hist));}\nif(values.size>1){this.keysToGroupings_.set(tagGrouping.key,tagGrouping);this.keysToValues_.set(tagGrouping.key,values);}}\nthis.statisticNames_.add('pct_090');}\nget statisticNames(){return Array.from(this.statisticNames_);}\nget labels(){const displayLabels=Array.from(this.labelsToStartTimes_.keys());displayLabels.sort((x,y)=>this.labelsToStartTimes_.get(x)-this.labelsToStartTimes_.get(y));return displayLabels;}\nget possibleGroupings(){for(const[key,values]of this.keysToValues_){if(values.size>=2)continue;this.keysToGroupings_.delete(key);}\nreturn Array.from(this.keysToGroupings_.values());}}\nreturn{HistogramParameterCollector,};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-controls-export',exportRawCsv_(){this.export_(false,'csv');},exportRawJson_(){this.export_(false,'json');},exportMergedCsv_(){this.export_(true,'csv');},exportMergedJson_(){this.export_(true,'json');},export_(merged,format){tr.b.dispatchSimpleEvent(this,'export',true,true,{merged,format});},});return{};});'use strict';tr.exportTo('tr.v.ui',function(){const ALPHA_OPTIONS=[];for(let i=1;i<10;++i)ALPHA_OPTIONS.push(i*1e-3);for(let i=1;i<10;++i)ALPHA_OPTIONS.push(i*1e-2);ALPHA_OPTIONS.push(0.1);Polymer({is:'tr-v-ui-histogram-set-controls',properties:{searchQuery:{type:String,value:'',observer:'onSearchQueryChange_',},showAll:{type:Boolean,value:true,observer:'onUserChange_',},referenceDisplayLabel:{type:String,value:'',observer:'onUserChange_',},displayStatisticName:{type:String,value:'',observer:'onUserChange_',},alphaString:{type:String,computed:'getAlphaString_(alphaIndex)',},alphaIndex:{type:Number,value:9,observer:'onUserChange_',},},created(){this.viewState_=undefined;this.rowListener_=this.onRowViewStateUpdate_.bind(this);this.baseStatisticNames_=[];this.isInOnViewStateUpdate_=false;this.searchQueryDebounceMs=200;},ready(){this.$.picker.addEventListener('current-groups-changed',this.onGroupsChanged_.bind(this));},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState_){throw new Error('viewState must be set exactly once.');}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));},async onSearchQueryChange_(){if(this.searchQueryDebounceMs===0)return this.onUserChange_();this.debounce('onSearchQueryDebounce',this.onUserChange_,this.searchQueryDebounceMs);},async onUserChange_(){if(!this.viewState)return;if(this.isInOnViewStateUpdate_)return;const marks=[];if(this.searchQuery!==this.viewState.searchQuery){marks.push(tr.b.Timing.mark('histogram-set-controls','search'));}\nif(this.showAll!==this.viewState.showAll){marks.push(tr.b.Timing.mark('histogram-set-controls','showAll'));}\nif(this.referenceDisplayLabel!==this.viewState.referenceDisplayLabel){marks.push(tr.b.Timing.mark('histogram-set-controls','referenceColumn'));}\nif(this.displayStatisticName!==this.viewState.displayStatisticName){marks.push(tr.b.Timing.mark('histogram-set-controls','statistic'));}\nif(parseInt(this.alphaIndex)!==this.getAlphaIndexFromViewState_()){marks.push(tr.b.Timing.mark('histogram-set-controls','alpha'));}\nthis.$.clear_search.style.visibility=this.searchQuery?'visible':'hidden';let displayStatisticName=this.displayStatisticName;if(this.viewState.referenceDisplayLabel===''&&this.referenceDisplayLabel!==''&&this.baseStatisticNames.length){displayStatisticName=`%${tr.v.DELTA}${this.displayStatisticName}`;}\nif(this.referenceDisplayLabel===''&&this.viewState.referenceDisplayLabel!==''&&this.baseStatisticNames.length){const deltaIndex=displayStatisticName.indexOf(tr.v.DELTA);if(deltaIndex>=0){displayStatisticName=displayStatisticName.slice(deltaIndex+1);}else if(!this.baseStatisticNames.includes(displayStatisticName)){displayStatisticName='avg';}}\nawait this.viewState.update({searchQuery:this.searchQuery,showAll:this.showAll,referenceDisplayLabel:this.referenceDisplayLabel,displayStatisticName,alpha:ALPHA_OPTIONS[this.alphaIndex],});if(this.referenceDisplayLabel&&this.statisticNames.length===this.baseStatisticNames.length){this.statisticNames=this.baseStatisticNames.concat(tr.v.Histogram.getDeltaStatisticsNames(this.baseStatisticNames));}else if(!this.referenceDisplayLabel&&this.statisticNames.length>this.baseStatisticNames.length){this.statisticNames=this.baseStatisticNames;}\nfor(const mark of marks)mark.end();},onViewStateUpdate_(event){this.isInOnViewStateUpdate_=true;if(event.delta.searchQuery){this.searchQuery=this.viewState.searchQuery;}\nif(event.delta.showAll)this.showAll=this.viewState.showAll;if(event.delta.displayStatisticName){this.displayStatisticName=this.viewState.displayStatisticName;}\nif(event.delta.referenceDisplayLabel){this.referenceDisplayLabel=this.viewState.referenceDisplayLabel;this.$.alpha.style.display=this.referenceDisplayLabel?'inline':'';}\nif(event.delta.groupings){this.$.picker.currentGroupKeys=this.viewState.groupings.map(g=>g.key);}\nif(event.delta.tableRowStates){for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){row.addUpdateListener(this.rowListener_);}\nconst anyShowing=this.anyOverviewCharts_;this.$.hide_overview.style.display=anyShowing?'inline':'none';this.$.show_overview.style.display=anyShowing?'none':'inline';}\nif(event.delta.alpha){this.alphaIndex=this.getAlphaIndexFromViewState_();}\nthis.isInOnViewStateUpdate_=false;this.onUserChange_();},onRowViewStateUpdate_(event){if(event.delta.isOverviewed){const anyShowing=event.delta.isOverviewed.current||this.anyOverviewCharts_;this.$.hide_overview.style.display=anyShowing?'inline':'none';this.$.show_overview.style.display=anyShowing?'none':'inline';}\nif(event.delta.subRows){for(const subRow of event.delta.subRows.previous){subRow.removeUpdateListener(this.rowListener_);}\nfor(const subRow of event.delta.subRows.current){subRow.addUpdateListener(this.rowListener_);}}},onGroupsChanged_(){if(this.$.picker.currentGroups.length===0&&this.$.picker.possibleGroups.length>0){this.$.picker.currentGroupKeys=[this.$.picker.possibleGroups[0].key];}\nthis.viewState.groupings=this.$.picker.currentGroups;},set showAllEnabled(enable){if(!enable)this.$.show_all.checked=true;this.$.show_all.disabled=!enable;},set possibleGroupings(groupings){this.$.picker.possibleGroups=groupings;this.$.picker.style.display=(groupings.length<2)?'none':'block';this.onGroupsChanged_();},set displayLabels(labels){this.$.reference_display_label.style.display=(labels.length<2)?'none':'inline';while(this.$.reference_display_label.children.length>1){this.$.reference_display_label.removeChild(this.$.reference_display_label.lastChild);}\nfor(const displayLabel of labels){const option=document.createElement('option');option.textContent=displayLabel;option.value=displayLabel;this.$.reference_display_label.appendChild(option);}\nif(labels.includes(this.viewState.referenceDisplayLabel)){this.referenceDisplayLabel=this.viewState.referenceDisplayLabel;}else{this.viewState.referenceDisplayLabel='';}},get baseStatisticNames(){return this.baseStatisticNames_;},set baseStatisticNames(names){this.baseStatisticNames_=names;this.statisticNames=names;},get statisticNames(){return Array.from(this.$.statistic.options).map(o=>o.value);},set statisticNames(names){this.$.statistic.style.display=(names.length<2)?'none':'inline';while(this.$.statistic.children.length){this.$.statistic.removeChild(this.$.statistic.lastChild);}\nfor(const name of names){const option=document.createElement('option');option.textContent=name;this.$.statistic.appendChild(option);}\nif(names.includes(this.viewState.displayStatisticName)){this.displayStatisticName=this.viewState.displayStatisticName;this.$.statistic.value=this.displayStatisticName;}else{this.viewState.displayStatisticName=names[0]||'';}},get anyOverviewCharts_(){for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){if(row.isOverviewed)return true;}\nreturn false;},async toggleOverviewLineCharts_(){const showOverviews=!this.anyOverviewCharts_;const mark=tr.b.Timing.mark('histogram-set-controls',(showOverviews?'show':'hide')+'OverviewCharts');for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){await row.update({isOverviewed:showOverviews});}\nthis.$.hide_overview.style.display=showOverviews?'inline':'none';this.$.show_overview.style.display=showOverviews?'none':'inline';await tr.b.animationFrame();mark.end();},set helpHref(href){this.$.help.href=href;this.$.help.style.display='inline';},set feedbackHref(href){this.$.feedback.href=href;this.$.feedback.style.display='inline';},clearSearch_(){this.set('searchQuery','');this.$.search.focus();},getAlphaString_(alphaIndex){return(''+ALPHA_OPTIONS[alphaIndex]).substr(0,5);},openAlphaSlider_(){const alphaButtonRect=this.$.alpha.getBoundingClientRect();this.$.alpha_slider_container.style.display='flex';this.$.alpha_slider_container.style.top=alphaButtonRect.bottom+'px';this.$.alpha_slider_container.style.left=alphaButtonRect.left+'px';this.$.alpha_slider.focus();},closeAlphaSlider_(){this.$.alpha_slider_container.style.display='';},updateAlpha_(){this.alphaIndex=this.$.alpha_slider.value;},getAlphaIndexFromViewState_(){for(let i=0;i<ALPHA_OPTIONS.length;++i){if(ALPHA_OPTIONS[i]>=this.viewState.alpha)return i;}\nreturn ALPHA_OPTIONS.length-1;},});return{};});'use strict';tr.exportTo('tr.v',function(){class HistogramSetHierarchy{constructor(name){this.name=name;this.description='';this.depth=0;this.subRows=[];this.columns=new Map();}*walk(){yield this;for(const row of this.subRows)yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}\nstatic build(histogramArrayMap){const rootRows=[];HistogramSetHierarchy.buildInternal_(histogramArrayMap,[],rootRows);const histograms=new tr.v.HistogramSet();for(const row of HistogramSetHierarchy.walkAll(rootRows)){for(const hist of row.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;histograms.addHistogram(hist);}}\nhistograms.deduplicateDiagnostics();for(const row of HistogramSetHierarchy.walkAll(rootRows)){row.maybeRebin_();}\nreturn rootRows;}\nmaybeRebin_(){const dataRange=new tr.b.math.Range();for(const hist of this.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;if(hist.allBins.length>1)return;if(hist.numValues===0)continue;dataRange.addValue(hist.min);dataRange.addValue(hist.max);}\ndataRange.addValue(tr.b.math.lesserWholeNumber(dataRange.min));dataRange.addValue(tr.b.math.greaterWholeNumber(dataRange.max));if(dataRange.min===dataRange.max)return;const boundaries=tr.v.HistogramBinBoundaries.createLinear(dataRange.min,dataRange.max,tr.v.DEFAULT_REBINNED_COUNT);for(const[name,hist]of this.columns){if(!(hist instanceof tr.v.Histogram))continue;this.columns.set(name,hist.rebin(boundaries));}}\nstatic mergeHistogramDownHierarchy_(histogram,hierarchy,columnName){for(const row of hierarchy){if(!row.description){row.description=histogram.description;}\nconst existing=row.columns.get(columnName);if(existing===undefined){row.columns.set(columnName,histogram.clone());continue;}\nif(existing instanceof tr.v.HistogramSet){existing.addHistogram(histogram);continue;}\nif(!existing.canAddHistogram(histogram)){const unmergeableHistograms=new tr.v.HistogramSet([histogram]);row.columns.set(columnName,unmergeableHistograms);continue;}\nexisting.addHistogram(histogram);}}\nstatic buildInternal_(histogramArrayMap,hierarchy,rootRows){for(const[name,histograms]of histogramArrayMap){if(histograms instanceof Array){for(const histogram of histograms){HistogramSetHierarchy.mergeHistogramDownHierarchy_(histogram,hierarchy,name);}}else if(histograms instanceof Map){const row=new HistogramSetHierarchy(name);row.depth=hierarchy.length;hierarchy.push(row);HistogramSetHierarchy.buildInternal_(histograms,hierarchy,rootRows);hierarchy.pop();if(hierarchy.length===0){rootRows.push(row);}else{const parentRow=hierarchy[hierarchy.length-1];parentRow.subRows.push(row);}}}}}\nreturn{HistogramSetHierarchy};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-table-cell',created(){this.viewState_=undefined;this.rootListener_=this.onRootStateUpdate_.bind(this);this.row_=undefined;this.displayLabel_='';this.histogram_=undefined;this.histogramSpan_=undefined;this.overviewChart_=undefined;this.mwuResult_=undefined;},ready(){this.addEventListener('click',this.onClick_.bind(this));},attached(){if(this.row){this.row.rootViewState.addUpdateListener(this.rootListener_);}},detached(){this.row.rootViewState.removeUpdateListener(this.rootListener_);},updateMwu_(){const referenceHistogram=this.referenceHistogram;this.mwuResult_=undefined;if(!(this.histogram instanceof tr.v.Histogram))return;if(!this.histogram.canCompare(referenceHistogram))return;this.mwuResult_=tr.b.math.Statistics.mwu(this.histogram.sampleValues,referenceHistogram.sampleValues,this.row.rootViewState.alpha);},build(row,displayLabel,viewState){this.row_=row;this.displayLabel_=displayLabel;this.viewState_=viewState;this.histogram_=this.row.columns.get(displayLabel);if(this.viewState){this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));}\nthis.row.viewState.addUpdateListener(this.onRowStateUpdate_.bind(this));if(this.isAttached){this.row.rootViewState.addUpdateListener(this.rootListener_);}\nthis.updateMwu_();this.updateContents_();},updateSignificance_(){if(!this.mwuResult_)return;this.$.scalar.significance=this.mwuResult_.significance;},get viewState(){return this.viewState_;},get row(){return this.row_;},get histogram(){return this.histogram_;},get referenceHistogram(){const referenceDisplayLabel=this.row.rootViewState.referenceDisplayLabel;if(!referenceDisplayLabel)return undefined;if(referenceDisplayLabel===this.displayLabel_)return undefined;return this.row.columns.get(referenceDisplayLabel);},get isHistogramOpen(){return(this.histogramSpan_!==undefined)&&(this.$.histogram.style.display==='block');},set isHistogramOpen(open){if(!(this.histogram instanceof tr.v.Histogram)||(this.histogram.numValues===0)){return;}\nthis.$.scalar.style.display=open?'none':'flex';this.$.open_histogram.style.display=open?'none':'block';this.$.close_histogram.style.display=open?'block':'none';this.$.histogram.style.display=open?'block':'none';if(open&&this.histogramSpan_===undefined){this.histogramSpan_=document.createElement('tr-v-ui-histogram-span');this.histogramSpan_.viewState=this.viewState;this.histogramSpan_.rowState=this.row.viewState;this.histogramSpan_.rootState=this.row.rootViewState;this.histogramSpan_.build(this.histogram,this.referenceHistogram);this.$.histogram.appendChild(this.histogramSpan_);}\nthis.viewState.isOpen=open;},onViewStateUpdate_(event){if(event.delta.isOpen){this.isHistogramOpen=this.viewState.isOpen;}},onRowStateUpdate_(event){if(event.delta.isOverviewed===undefined)return;if(this.row.viewState.isOverviewed){this.showOverview();}else{this.hideOverview();}},onRootStateUpdate_(event){if(event.delta.referenceDisplayLabel&&this.histogramSpan_){this.histogramSpan_.build(this.histogram,this.referenceHistogram);}\nif(event.delta.displayStatisticName||event.delta.referenceDisplayLabel){this.updateMwu_();this.updateContents_();}else if(event.delta.alpha&&this.mwuResult_){this.mwuResult_.compare(this.row.rootViewState.alpha);this.updateSignificance_();}\nif(this.row.viewState.isOverviewed&&(event.delta.sortColumnIndex||event.delta.sortDescending||event.delta.displayStatisticName||event.delta.referenceDisplayLabel)){if(this.overviewChart_!==undefined){this.$.overview_container.removeChild(this.overviewChart_);this.overviewChart_=undefined;}\nthis.showOverview();}},onClick_(event){event.stopPropagation();},openHistogram_(){this.isHistogramOpen=true;tr.b.Timing.instant('histogram-set-table-cell','open');},closeHistogram_(){this.isHistogramOpen=false;tr.b.Timing.instant('histogram-set-table-cell','close');},updateContents_(){const isOpen=this.isHistogramOpen;this.$.empty.style.display='none';this.$.unmergeable.style.display='none';this.$.scalar.style.display='none';this.$.histogram.style.display='none';this.$.close_histogram.style.display='none';this.$.open_histogram.style.visibility='hidden';if(!this.histogram){this.$.missing.style.display='block';return;}\nthis.$.missing.style.display='none';if(this.histogram instanceof tr.v.HistogramSet){this.$.unmergeable.style.display='block';return;}\nif(!(this.histogram instanceof tr.v.Histogram)){throw new Error('Invalid Histogram: '+this.histogram);}\nif(this.histogram.numValues===0){this.$.empty.style.display='block';return;}\nthis.$.open_histogram.style.display='block';this.$.open_histogram.style.visibility='visible';this.$.scalar.style.display='flex';this.updateSignificance_();const referenceHistogram=this.referenceHistogram;const statName=this.histogram.getAvailableStatisticName(this.row.rootViewState.displayStatisticName,referenceHistogram);const statisticScalar=this.histogram.getStatisticScalar(statName,referenceHistogram);this.$.scalar.setValueAndUnit(statisticScalar.value,statisticScalar.unit);this.isHistogramOpen=isOpen;},showOverview(){this.$.overview_container.style.display='block';if(this.overviewChart_!==undefined)return;this.row.sortSubRows();let referenceDisplayLabel=this.row.rootViewState.referenceDisplayLabel;if(referenceDisplayLabel===this.displayLabel_){referenceDisplayLabel=undefined;}\nconst displayStatisticName=this.row.rootViewState.displayStatisticName;const data=[];let unit;for(const subRow of this.row.subRows){const subHist=subRow.columns.get(this.displayLabel_);if(!(subHist instanceof tr.v.Histogram))continue;if(unit===undefined){unit=subHist.unit;}else if(unit!==subHist.unit){data.splice(0);break;}\nconst refHist=subRow.columns.get(referenceDisplayLabel);const statName=subHist.getAvailableStatisticName(displayStatisticName,refHist);const statScalar=subHist.getStatisticScalar(statName,refHist);if(statScalar!==undefined){data.push({x:subRow.name,y:statScalar.value,});}}\nif(data.length<2)return;this.overviewChart_=new tr.ui.b.NameLineChart();this.$.overview_container.appendChild(this.overviewChart_);this.overviewChart_.displayXInHover=true;this.overviewChart_.hideLegend=true;this.overviewChart_.unit=unit;this.overviewChart_.overrideDataRange=this.row.overviewDataRange;this.overviewChart_.data=data;},hideOverview(){this.$.overview_container.style.display='none';}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){const NAME_COLUMN_WIDTH_PX=300;Polymer({is:'tr-v-ui-histogram-set-table-name-cell',created(){this.row_=undefined;this.overviewChart_=undefined;this.cellListener_=this.onCellStateUpdate_.bind(this);this.rootListener_=this.onRootStateUpdate_.bind(this);},attached(){if(this.row){this.row.rootViewState.addUpdateListener(this.rootListener_);}},detached(){this.row.rootViewState.removeUpdateListener(this.rootListener_);},get row(){return this.row_;},build(row){if(this.row_!==undefined){throw new Error('row must be set exactly once.');}\nthis.row_=row;this.row.viewState.addUpdateListener(this.onRowStateUpdate_.bind(this));this.constrainWidth=this.row.rootViewState.constrainNameColumn;if(this.isAttached){this.row.rootViewState.addUpdateListener(this.rootListener_);}\nfor(const cellState of this.row.viewState.cells.values()){cellState.addUpdateListener(this.cellListener_);}\nPolymer.dom(this.$.name).textContent=this.row.name;this.title=this.row.name;if(this.row.description){this.title+='\\n'+this.row.description;}\nif(this.row.overviewDataRange.isEmpty||this.row.overviewDataRange.min===this.row.overviewDataRange.max){this.$.show_overview.style.display='none';}\nlet histogramCount=0;for(const cell of this.row.columns.values()){if(cell instanceof tr.v.Histogram&&cell.numValues>0){++histogramCount;}}\nif(histogramCount<=1){this.$.open_histograms.style.display='none';}},set constrainWidth(constrain){this.$.name.style.maxWidth=constrain?(this.nameWidthPx+'px'):'none';},get nameWidthPx(){return NAME_COLUMN_WIDTH_PX-(16*this.row.depth);},get isOverflowing(){return this.$.name.style.maxWidth!=='none'&&this.$.name.getBoundingClientRect().width===this.nameWidthPx;},get isOverviewed(){return this.$.overview_container.style.display==='block';},set isOverviewed(isOverviewed){if(isOverviewed===this.isOverviewed)return;if(isOverviewed){this.showOverview_();}else{this.hideOverview_();}},hideOverview_(opt_event){this.$.overview_container.style.display='none';this.$.hide_overview.style.display='none';this.$.show_overview.style.display='block';if(opt_event!==undefined){opt_event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','hideOverview');this.row.viewState.isOverviewed=this.isOverviewed;}},showOverview_(opt_event){if(opt_event!==undefined){opt_event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','showOverview');this.row.viewState.isOverviewed=true;}\nthis.$.overview_container.style.display='block';this.$.hide_overview.style.display='block';this.$.show_overview.style.display='none';if(this.overviewChart_===undefined){const displayStatisticName=this.row.rootViewState.displayStatisticName;const data=[];let unit;for(const[displayLabel,hist]of this.row.sortedColumns()){if(!(hist instanceof tr.v.Histogram))continue;if(unit===undefined){unit=hist.unit;}else if(unit!==hist.unit){data.splice(0);break;}\nconst statName=hist.getAvailableStatisticName(displayStatisticName);const statScalar=hist.getStatisticScalar(statName);if(statScalar!==undefined){data.push({x:displayLabel,y:statScalar.value,});}}\nif(data.length<2){return;}\nthis.overviewChart_=new tr.ui.b.NameLineChart();this.$.overview_container.appendChild(this.overviewChart_);this.overviewChart_.displayXInHover=true;this.overviewChart_.hideLegend=true;this.overviewChart_.unit=unit;this.overviewChart_.overrideDataRange=this.row.overviewDataRange;this.overviewChart_.data=data;}},openHistograms_(event){event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','openHistograms');for(const cell of this.row.cells.values()){cell.isHistogramOpen=true;}\nthis.$.close_histograms.style.display='block';this.$.open_histograms.style.display='none';},closeHistograms_(event){event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','closeHistograms');for(const cell of this.row.cells.values()){cell.isHistogramOpen=false;}\nthis.$.open_histograms.style.display='block';this.$.close_histograms.style.display='none';},onRootStateUpdate_(event){if(event.delta.constrainNameColumn){this.constrainWidth=this.row.rootViewState.constrainNameColumn;}\nif(this.row.viewState.isOverviewed&&event.delta.displayStatisticName){this.row.resetOverviewDataRange();if(this.overviewChart_!==undefined){this.$.overview_container.removeChild(this.overviewChart_);this.overviewChart_=undefined;}\nthis.showOverview_();}},onRowStateUpdate_(event){if(event.delta.isOverviewed){this.isOverviewed=this.row.viewState.isOverviewed;}},onCellStateUpdate_(event){if(!event.delta.isOpen)return;let cellCount=0;let openCellCount=0;for(const cell of this.row.cells.values()){if(!(cell.histogram instanceof tr.v.Histogram)||(cell.histogram.numValues===0)){continue;}\n++cellCount;if(cell.isHistogramOpen)++openCellCount;}\nif(cellCount<=1)return;const mostlyOpen=openCellCount>(cellCount/2);this.$.open_histograms.style.display=mostlyOpen?'none':'block';this.$.close_histograms.style.display=mostlyOpen?'block':'none';}});return{NAME_COLUMN_WIDTH_PX,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetTableRow{constructor(hierarchy,baseTable,rootViewState){this.hierarchy_=hierarchy;this.baseTable_=baseTable;this.rootViewState_=rootViewState;this.viewState_=new tr.v.ui.HistogramSetTableRowState();this.viewState_.addUpdateListener(this.onViewStateUpdate_.bind(this));this.overviewDataRange_=undefined;this.nameCell_=undefined;this.cells_=new Map();this.subRows_=[];for(const subHierarchy of hierarchy.subRows){const subRow=new HistogramSetTableRow(subHierarchy,baseTable,rootViewState);this.subRows_.push(subRow);this.viewState.subRows.set(subRow.name,subRow.viewState);}\nfor(const columnName of this.columns.keys()){this.viewState.cells.set(columnName,new tr.v.ui.HistogramSetTableCellState());}}\nget name(){return this.hierarchy_.name;}\nget depth(){return this.hierarchy_.depth;}\nget description(){return this.hierarchy_.description;}\nget columns(){return this.hierarchy_.columns;}*sortedColumns(){for(const col of this.baseTable_.tableColumns){yield[col.displayLabel,this.hierarchy_.columns.get(col.displayLabel),];}}\nget overviewDataRange(){if(this.overviewDataRange_===undefined){this.overviewDataRange_=new tr.b.math.Range();const displayStatisticName=this.rootViewState.displayStatisticName;const referenceDisplayLabel=this.rootViewState.referenceDisplayLabel;for(const[displayLabel,hist]of this.columns){if(hist instanceof tr.v.Histogram){const statName=hist.getAvailableStatisticName(displayStatisticName);const statScalar=hist.getStatisticScalar(statName);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}\nfor(const subRow of this.subRows){const subHist=subRow.columns.get(displayLabel);if(!(subHist instanceof tr.v.Histogram))continue;const refHist=subRow.columns.get(referenceDisplayLabel);const statName=subHist.getAvailableStatisticName(displayStatisticName,refHist);const statScalar=subHist.getStatisticScalar(statName,refHist);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}}}\nreturn this.overviewDataRange_;}\nresetOverviewDataRange(){this.overviewDataRange_=undefined;}\nget rootViewState(){return this.rootViewState_;}\nget cells(){return this.cells_;}\nget subRows(){return this.subRows_;}\nget viewState(){return this.viewState_;}*walk(){yield this;for(const row of this.subRows)yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}\nget nameCell(){if(this.nameCell_===undefined){this.nameCell_=document.createElement('tr-v-ui-histogram-set-table-name-cell');this.nameCell_.build(this);}\nreturn this.nameCell_;}\ngetCell(columnName){if(this.cells.has(columnName))return this.cells.get(columnName);const cell=document.createElement('tr-v-ui-histogram-set-table-cell');cell.build(this,columnName,this.viewState.cells.get(columnName));this.cells.set(columnName,cell);return cell;}\ncompareNames(other){return this.name.localeCompare(other.name);}\ncompareCells(other,displayLabel){const referenceDisplayLabel=this.rootViewState.referenceDisplayLabel;let referenceCellA;let referenceCellB;if(referenceDisplayLabel&&referenceDisplayLabel!==displayLabel){referenceCellA=this.columns.get(referenceDisplayLabel);referenceCellB=other.columns.get(referenceDisplayLabel);}\nconst cellA=this.columns.get(displayLabel);let valueA=0;if(cellA instanceof tr.v.Histogram){const statisticA=cellA.getAvailableStatisticName(this.rootViewState.displayStatisticName,referenceCellA);const scalarA=cellA.getStatisticScalar(statisticA,referenceCellA);if(scalarA){valueA=scalarA.value;}}\nconst cellB=other.columns.get(displayLabel);let valueB=0;if(cellB instanceof tr.v.Histogram){const statisticB=cellB.getAvailableStatisticName(this.rootViewState.displayStatisticName,referenceCellB);const scalarB=cellB.getStatisticScalar(statisticB,referenceCellB);if(scalarB){valueB=scalarB.value;}}\nreturn valueA-valueB;}\nonViewStateUpdate_(event){if(event.delta.isExpanded){this.baseTable_.setExpandedForTableRow(this,this.viewState.isExpanded);}\nif(event.delta.subRows){throw new Error('HistogramSetTableRow.subRows must not be reassigned.');}\nif(event.delta.cells){for(const[displayLabel,cell]of this.cells){if(cell.viewState!==this.viewState.cells.get(displayLabel)){throw new Error('Only HistogramSetTableRow may update cells');}}}}\nasync restoreState(vs){await this.viewState.update({isExpanded:vs.isExpanded,isOverviewed:vs.isOverviewed,});for(const[displayLabel,cell]of this.cells){const previousState=vs.cells.get(displayLabel);if(!previousState)continue;await cell.viewState.updateFromViewState(previousState);}\nfor(const row of this.subRows){const previousState=vs.subRows.get(row.name);if(!previousState)continue;await row.restoreState(previousState);}}\nsortSubRows(){const sortColumn=this.baseTable_.tableColumns[this.rootViewState_.sortColumnIndex];if(sortColumn===undefined)return;this.subRows_.sort(sortColumn.cmp);if(this.rootViewState_.sortDescending){this.subRows_.reverse();}}}\nreturn{HistogramSetTableRow,};});'use strict';tr.exportTo('tr.v.ui',function(){const MIDLINE_HORIZONTAL_ELLIPSIS=String.fromCharCode(0x22ef);function escapeRegExp(str){return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,'\\\\$&');}\nPolymer({is:'tr-v-ui-histogram-set-table',created(){this.viewState_=undefined;this.progress_=()=>Promise.resolve();this.nameColumnTitle_=undefined;this.displayLabels_=[];this.histograms_=undefined;this.sourceHistograms_=undefined;this.filteredHistograms_=undefined;this.groupedHistograms_=undefined;this.hierarchies_=undefined;this.tableRows_=undefined;this.sortColumnChangedListener_=e=>this.onSortColumnChanged_(e);},ready(){this.$.table.zebra=true;this.addEventListener('sort-column-changed',this.sortColumnChangedListener_);this.addEventListener('requestSelectionChange',this.onRequestSelectionChange_.bind(this));this.addEventListener('row-expanded-changed',this.onRowExpandedChanged_.bind(this));},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState_){throw new Error('viewState must be set exactly once.');}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));},get histograms(){return this.histograms_;},async build(histograms,sourceHistograms,displayLabels,opt_progress){this.histograms_=histograms;this.sourceHistograms_=sourceHistograms;this.filteredHistograms_=undefined;this.groupedHistograms_=undefined;this.displayLabels_=displayLabels;if(opt_progress!==undefined)this.progress_=opt_progress;if(histograms.length===0){throw new Error('histogram-set-table requires non-empty HistogramSet.');}\nawait this.progress_('Building columns...');this.$.table.tableColumns=[{title:this.buildNameColumnTitle_(),value:row=>row.nameCell,cmp:(a,b)=>a.compareNames(b),}].concat(displayLabels.map(l=>this.buildColumn_(l)));tr.b.Timing.instant('histogram-set-table','columnCount',this.$.table.tableColumns.length);await this.updateContents_();this.fire('display-ready');this.progress_=()=>Promise.resolve();this.checkNameColumnOverflow_(tr.v.ui.HistogramSetTableRow.walkAll(this.$.table.tableRows));},buildNameColumnTitle_(){this.nameColumnTitle_=document.createElement('span');this.nameColumnTitle_.style.display='inline-flex';const nameEl=document.createElement('span');nameEl.textContent='Name';this.nameColumnTitle_.appendChild(nameEl);const toggleWidthEl=document.createElement('span');toggleWidthEl.style.fontWeight='bold';toggleWidthEl.style.background='#bbb';toggleWidthEl.style.color='#333';toggleWidthEl.style.padding='0px 3px';toggleWidthEl.style.marginRight='8px';toggleWidthEl.style.display='none';toggleWidthEl.textContent=MIDLINE_HORIZONTAL_ELLIPSIS;toggleWidthEl.addEventListener('click',this.toggleNameColumnWidth_.bind(this));this.nameColumnTitle_.appendChild(toggleWidthEl);return this.nameColumnTitle_;},toggleNameColumnWidth_(opt_event){this.viewState.update({constrainNameColumn:!this.viewState.constrainNameColumn,});if(opt_event!==undefined){opt_event.stopPropagation();opt_event.preventDefault();tr.b.Timing.instant('histogram-set-table','nameColumn'+\n(this.viewState.constrainNameColumn?'Constrained':'Unconstrained'));}},buildColumn_(displayLabel){const title=document.createElement('span');title.textContent=displayLabel;title.style.whiteSpace='pre';return{displayLabel,title,value:row=>row.getCell(displayLabel),cmp:(rowA,rowB)=>rowA.compareCells(rowB,displayLabel),};},async updateContents_(){const previousRowStates=this.viewState.tableRowStates;if(!this.filteredHistograms_){await this.progress_('Filtering rows...');this.filteredHistograms_=this.viewState.showAll?this.histograms:this.sourceHistograms_;if(this.viewState.searchQuery){let query;try{query=new RegExp(this.viewState.searchQuery);}catch(e){}\nif(query!==undefined){this.filteredHistograms_=new tr.v.HistogramSet([...this.filteredHistograms_].filter(hist=>hist.name.match(query)));if(this.filteredHistograms_.length===0&&!this.viewState.showAll){await this.viewState.update({showAll:true});return;}}}\nthis.groupedHistograms_=undefined;}\nif(!this.groupedHistograms_){await this.progress_('Grouping Histograms...');this.groupHistograms_();}\nif(!this.hierarchies_){await this.progress_('Merging Histograms...');this.hierarchies_=tr.v.HistogramSetHierarchy.build(this.groupedHistograms_);this.tableRows_=undefined;}\nconst tableRowsDirty=this.tableRows_===undefined;if(tableRowsDirty){this.tableRows_=this.hierarchies_.map(hierarchy=>new tr.v.ui.HistogramSetTableRow(hierarchy,this.$.table,this.viewState));tr.b.Timing.instant('histogram-set-table','rootRowCount',this.tableRows_.length);const namesToRowStates=new Map();for(const row of this.tableRows_){namesToRowStates.set(row.name,row.viewState);}\nawait this.viewState.update({tableRowStates:namesToRowStates});}\nawait this.progress_('Configuring table...');this.nameColumnTitle_.children[1].style.filter=this.viewState.constrainNameColumn?'invert(100%)':'';const referenceDisplayLabelIndex=this.displayLabels_.indexOf(this.viewState.referenceDisplayLabel);this.$.table.selectedTableColumnIndex=(referenceDisplayLabelIndex<0)?undefined:(1+referenceDisplayLabelIndex);this.removeEventListener('sort-column-changed',this.sortColumnChangedListener_);this.$.table.sortColumnIndex=this.viewState.sortColumnIndex;this.$.table.sortDescending=this.viewState.sortDescending;this.addEventListener('sort-column-changed',this.sortColumnChangedListener_);if(tableRowsDirty){await this.progress_('Building DOM...');this.$.table.tableRows=this.tableRows_;for(const row of this.tableRows_){const previousState=previousRowStates.get(row.name);if(!previousState)continue;await row.restoreState(previousState);}}\nthis.$.table.rebuild();},async onRowExpandedChanged_(event){event.row.viewState.isExpanded=this.$.table.getExpandedForTableRow(event.row);tr.b.Timing.instant('histogram-set-table','row'+(event.row.viewState.isExpanded?'Expanded':'Collapsed'));if(this.nameColumnTitle_.children[1].style.display==='block')return;await tr.b.animationFrame();this.checkNameColumnOverflow_(event.row.subRows);},checkNameColumnOverflow_(rows){for(const row of rows){if(!row.nameCell.isOverflowing)continue;const[nameSpan,dots]=Array.from(this.nameColumnTitle_.children);dots.style.display='block';const labelWidthPx=tr.v.ui.NAME_COLUMN_WIDTH_PX-\ndots.getBoundingClientRect().width;nameSpan.style.width=labelWidthPx+'px';return;}},groupHistograms_(){const groupings=this.viewState.groupings.slice();groupings.push(tr.v.HistogramGrouping.DISPLAY_LABEL);function canSkipGrouping(grouping,groupedHistograms){if(groupedHistograms.size>1)return false;if(grouping.key===groupings[0].key)return false;if(grouping.key===tr.v.HistogramGrouping.DISPLAY_LABEL.key){return false;}\nreturn true;}\nthis.groupedHistograms_=this.filteredHistograms_.groupHistogramsRecursively(groupings,canSkipGrouping);this.hierarchies_=undefined;},async onViewStateUpdate_(event){if(this.histograms_===undefined)return;if(event.delta.searchQuery!==undefined||event.delta.showAll!==undefined){this.filteredHistograms_=undefined;}\nif(event.delta.groupings!==undefined){this.groupedHistograms_=undefined;}\nif(event.delta.displayStatistic!==undefined&&this.$.table.sortColumnIndex>0){this.$.table.sortColumnIndex=undefined;}\nif(event.delta.referenceDisplayLabel!==undefined||event.delta.displayStatisticName!==undefined){this.$.table.tableRows=this.$.table.tableRows;}\nif(event.delta.tableRowStates){if(this.tableRows_.length!==this.viewState.tableRowStates.size){throw new Error('Only histogram-set-table may update tableRowStates');}\nfor(const row of this.tableRows_){if(this.viewState.tableRowStates.get(row.name)!==row.viewState){throw new Error('Only histogram-set-table may update tableRowStates');}}\nreturn;}\nawait this.updateContents_();},onSortColumnChanged_(event){tr.b.Timing.instant('histogram-set-table','sortColumn');this.viewState.update({sortColumnIndex:event.sortColumnIndex,sortDescending:event.sortDescending,});},onRequestSelectionChange_(event){if(event.selection instanceof tr.model.EventSet)return;event.stopPropagation();tr.b.Timing.instant('histogram-set-table','selectHistogramNames');let histogramNames=event.selection;histogramNames.sort();histogramNames=histogramNames.map(escapeRegExp).join('|');this.viewState.update({showAll:true,searchQuery:`^(${histogramNames})$`,});},get leafHistograms(){const histograms=new tr.v.HistogramSet();for(const row of\ntr.v.ui.HistogramSetTableRow.walkAll(this.$.table.tableRows)){if(row.subRows.length)continue;for(const hist of row.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;histograms.addHistogram(hist);}}\nreturn histograms;}});return{MIDLINE_HORIZONTAL_ELLIPSIS,};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-view',listeners:{export:'onExport_',},created(){this.brushingStateController_=new tr.ui.NullBrushingStateController();this.viewState_=new tr.v.ui.HistogramSetViewState();},ready(){this.$.table.viewState=this.viewState;this.$.controls.viewState=this.viewState;},attached(){this.brushingStateController.parentController=tr.c.BrushingStateController.getControllerForElement(this.parentNode);},get brushingStateController(){return this.brushingStateController_;},get viewState(){return this.viewState_;},get histograms(){return this.$.table.histograms;},async build(histograms,opt_options){const options=opt_options||{};const progress=options.progress||(()=>Promise.resolve());if(options.helpHref)this.$.controls.helpHref=options.helpHref;if(options.feedbackHref){this.$.controls.feedbackHref=options.feedbackHref;}\nif(histograms===undefined||histograms.length===0){this.$.container.style.display='none';this.$.zero.style.display='block';this.style.display='block';return;}\nthis.$.zero.style.display='none';this.$.container.style.display='block';this.$.container.style.maxHeight=(window.innerHeight-16)+'px';const buildMark=tr.b.Timing.mark('histogram-set-view','build');await progress('Finding important Histograms...');const sourceHistogramsMark=tr.b.Timing.mark('histogram-set-view','sourceHistograms');const sourceHistograms=histograms.sourceHistograms;sourceHistogramsMark.end();this.$.controls.showAllEnabled=(sourceHistograms.length!==histograms.length);await progress('Collecting parameters...');const collectParametersMark=tr.b.Timing.mark('histogram-set-view','collectParameters');const parameterCollector=new tr.v.HistogramParameterCollector();parameterCollector.process(histograms);this.$.controls.baseStatisticNames=parameterCollector.statisticNames;this.$.controls.possibleGroupings=parameterCollector.possibleGroupings;const displayLabels=parameterCollector.labels;this.$.controls.displayLabels=displayLabels;collectParametersMark.end();await this.$.table.build(histograms,sourceHistograms,displayLabels,progress);buildMark.end();},onExport_(event){const mark=tr.b.Timing.mark('histogram-set-view','export'+\n(event.merged?'Merged':'Raw')+event.format.toUpperCase());const histograms=event.merged?this.$.table.leafHistograms:this.histograms;let blob;if(event.format==='csv'){const csv=new tr.v.CSVBuilder(histograms);csv.build();blob=new window.Blob([csv.toString()],{type:'text/csv'});}else if(event.format==='json'){blob=new window.Blob([JSON.stringify(histograms.asDicts())],{type:'text/json'});}else{throw new Error(`Unable to export format \"${event.format}\"`);}\nconst path=window.location.pathname.split('/');const basename=path[path.length-1].split('.')[0]||'histograms';const anchor=document.createElement('a');anchor.download=`${basename}.${event.format}`;anchor.href=window.URL.createObjectURL(blob);anchor.click();mark.end();},});return{};});'use strict';tr.exportTo('tr.ui',function(){Polymer({is:'tr-ui-sp-metrics-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.rangeOfInterest_=undefined;this.metricLatenciesMs_=[];this.metrics_=[];tr.metrics.MetricRegistry.getAllRegisteredTypeInfos().forEach(function(m){if(m.constructor.name==='sampleMetric')return;this.metrics_.push({label:m.constructor.name,value:m.constructor.name});},this);this.metrics_.sort((x,y)=>x.label.localeCompare(y.label));this.settingsKey_='metrics-side-panel-metric-name';this.currentMetricName_='responsivenessMetric';const metricSelector=tr.ui.b.createSelector(this,'currentMetricName_',this.settingsKey_,this.currentMetricName_,this.metrics_);Polymer.dom(this.$.top_left_controls).appendChild(metricSelector);metricSelector.addEventListener('change',this.onMetricChange_.bind(this));this.currentMetricTypeInfo_=tr.metrics.MetricRegistry.findTypeInfoWithName(this.currentMetricName_);this.recomputeButton_=tr.ui.b.createButton('Recompute',this.onRecompute_,this);Polymer.dom(this.$.top_left_controls).appendChild(this.recomputeButton_);this.$.results.addEventListener('display-ready',()=>{this.$.results.style.display='';});},async build(model){this.model_=model;await this.updateContents_();},get metricLatencyMs(){return tr.b.math.Statistics.mean(this.metricLatenciesMs_);},onMetricChange_(){this.currentMetricTypeInfo_=tr.metrics.MetricRegistry.findTypeInfoWithName(this.currentMetricName_);this.metricLatenciesMs_=[];this.updateContents_();},onRecompute_(){this.updateContents_();},get textLabel(){return'Metrics';},supportsModel(m){if(!m){return{supported:false,reason:'No model available'};}\nreturn{supported:true};},get model(){return this.model_;},set model(model){this.build(model);},get selection(){},set selection(_){},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(range){this.rangeOfInterest_=range;if(this.currentMetricTypeInfo_&&this.currentMetricTypeInfo_.metadata.supportsRangeOfInterest){if((this.metricLatencyMs===undefined)||(this.metricLatencyMs<100)){this.updateContents_();}else{this.recomputeButton_.style.background='red';}}},async updateContents_(){Polymer.dom(this.$.error).textContent='';this.$.results.style.display='none';if(!this.model_){Polymer.dom(this.$.error).textContent='Missing model';return;}\nconst options={metrics:[this.currentMetricName_]};if(this.currentMetricTypeInfo_&&this.currentMetricTypeInfo_.metadata.supportsRangeOfInterest&&this.rangeOfInterest&&!this.rangeOfInterest.isEmpty){options.rangeOfInterest=this.rangeOfInterest;}\nconst startDate=new Date();const addFailureCb=failure=>{Polymer.dom(this.$.error).textContent=failure.description;};const histograms=tr.metrics.runMetrics(this.model_,options,addFailureCb);this.metricLatenciesMs_.push(new Date()-startDate);while(this.metricLatenciesMs_.length>20){this.metricLatenciesMs_.shift();}\nthis.recomputeButton_.style.background='';await this.$.results.build(histograms);}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-sp-metrics-side-panel');});return{};});'use strict';Polymer({is:'tr-ui-e-s-alerts-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.rangeOfInterest_=new tr.b.math.Range();this.selection_=undefined;},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();},set selection(selection){},set rangeOfInterest(rangeOfInterest){},selectAlertsOfType(alertTypeString){const alertsOfType=this.model_.alerts.filter(function(alert){return alert.title===alertTypeString;});const event=new tr.model.RequestSelectionChangeEvent();event.selection=new tr.model.EventSet(alertsOfType);this.dispatchEvent(event);},alertsByType_(alerts){const alertsByType={};alerts.forEach(function(alert){if(!alertsByType[alert.title]){alertsByType[alert.title]=[];}\nalertsByType[alert.title].push(alert);});return alertsByType;},alertsTableRows_(alertsByType){return Object.keys(alertsByType).map(function(key){return{alertType:key,count:alertsByType[key].length};});},alertsTableColumns_(){return[{title:'Alert type',value(row){return row.alertType;},width:'180px'},{title:'Count',width:'100%',value(row){return row.count;}}];},createAlertsTable_(alerts){const alertsByType=this.alertsByType_(alerts);const table=document.createElement('tr-ui-b-table');table.tableColumns=this.alertsTableColumns_();table.tableRows=this.alertsTableRows_(alertsByType);table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.addEventListener('selection-changed',function(e){const row=table.selectedTableRow;if(row){this.selectAlertsOfType(row.alertType);}}.bind(this));return table;},updateContents_(){Polymer.dom(this.$.result_area).textContent='';if(this.model_===undefined)return;const panel=this.createAlertsTable_(this.model_.alerts);Polymer.dom(this.$.result_area).appendChild(panel);},supportsModel(m){if(m===undefined){return{supported:false,reason:'Unknown tracing model'};}else if(m.alerts.length===0){return{supported:false,reason:'No alerts in tracing model'};}\nreturn{supported:true};},get textLabel(){return'Alerts';}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-alerts-side-panel');});\n</script>\n</head>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "src/viztracer/main.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport argparse\nimport atexit\nimport base64\nimport builtins\nimport io\nimport json\nimport multiprocessing.util  # type: ignore\nimport os\nimport platform\nimport signal\nimport sys\nimport tempfile\nimport threading\nimport time\nimport types\nfrom types import CodeType\nfrom typing import Any\n\nfrom . import __version__\nfrom .code_monkey import CodeMonkey\nfrom .report_builder import ReportBuilder\nfrom .util import (\n    color_print,\n    frame_stack_has_func,\n    pid_exists,\n    same_line_print,\n    time_str_to_us,\n    unique_file_name,\n)\nfrom .viztracer import VizTracer\n\n# For all the procedures in VizUI, return a tuple as the result\n# The first element bool indicates whether the procedure succeeds\n# The second element is the error message if it fails.\nVizProcedureResult = tuple[bool, str | None]\n\n\nclass VizUI:\n    def __init__(self) -> None:\n        self.tracer: VizTracer | None = None\n        self.parser: argparse.ArgumentParser = self.create_parser()\n        self.verbose: int = 1\n        self.ofile: str = \"result.json\"\n        self.options: argparse.Namespace = argparse.Namespace()\n        self.args: list[str] = []\n        self._exiting: bool = False\n        self.multiprocess_output_dir: str = tempfile.mkdtemp()\n        self.cwd: str = os.getcwd()\n\n    def create_parser(self) -> argparse.ArgumentParser:\n        parser = argparse.ArgumentParser(prog=\"python -m viztracer\")\n        parser.add_argument(\n            \"--version\",\n            action=\"version\",\n            version=__version__,\n            help=\"show version of viztracer\",\n        )\n        parser.add_argument(\n            \"-c\",\n            \"--cmd_string\",\n            nargs=\"?\",\n            default=None,\n            help=\"program passed in as string\",\n        )\n        parser.add_argument(\n            \"--rcfile\", nargs=\"?\", default=None, help=\"specify rcfile for viztracer\"\n        )\n        parser.add_argument(\n            \"--tracer_entries\",\n            nargs=\"?\",\n            type=int,\n            default=1000000,\n            help=\"size of circular buffer. How many entries can it store\",\n        )\n        filename_group = parser.add_mutually_exclusive_group()\n        filename_group.add_argument(\n            \"--output_file\",\n            \"-o\",\n            nargs=\"?\",\n            default=None,\n            help=\"output file path. End with .json or .html or .gz\",\n        )\n        filename_group.add_argument(\n            \"--unique_output_file\",\n            \"-u\",\n            action=\"store_true\",\n            default=False,\n            help=\"Use a unique file name for each run\",\n        )\n        parser.add_argument(\n            \"--output_dir\",\n            nargs=\"?\",\n            default=None,\n            help=\"output directory. Should only be used when --pid_suffix is used\",\n        )\n        parser.add_argument(\n            \"--file_info\", action=\"store_true\", default=False, help=argparse.SUPPRESS\n        )\n        parser.add_argument(\n            \"--quiet\",\n            action=\"store_true\",\n            default=False,\n            help=\"stop VizTracer from printing anything\",\n        )\n        parser.add_argument(\n            \"--trace_self\", action=\"store_true\", default=False, help=argparse.SUPPRESS\n        )\n        parser.add_argument(\n            \"--plugins\", nargs=\"*\", default=[], help=\"specify plugins for VizTracer\"\n        )\n        parser.add_argument(\n            \"--max_stack_depth\",\n            nargs=\"?\",\n            type=int,\n            default=-1,\n            help=\"maximum stack depth you want to trace.\",\n        )\n        parser.add_argument(\n            \"--min_duration\",\n            nargs=\"?\",\n            default=\"0\",\n            help=\"minimum duration of function to log\",\n        )\n        parser.add_argument(\n            \"--exclude_files\",\n            nargs=\"*\",\n            default=None,\n            help=(\n                \"specify the files(directories) you want to exclude from tracing. \"\n                \"Can't be used with --include_files\"\n            ),\n        )\n        parser.add_argument(\n            \"--include_files\",\n            nargs=\"*\",\n            default=None,\n            help=(\n                \"specify the only files(directories) you want to include from tracing. \"\n                \"Can't be used with --exclude_files\"\n            ),\n        )\n        parser.add_argument(\n            \"--ignore_c_function\",\n            action=\"store_true\",\n            default=False,\n            help=\"ignore all c functions including most builtin functions and libraries\",\n        )\n        parser.add_argument(\n            \"--ignore_frozen\",\n            action=\"store_true\",\n            default=False,\n            help=\"ignore all functions that are frozen(like import)\",\n        )\n        parser.add_argument(\n            \"--log_exit\",\n            action=\"store_true\",\n            default=False,\n            help=\"log functions in exit functions like atexit\",\n        )\n        parser.add_argument(\n            \"--log_func_retval\",\n            action=\"store_true\",\n            default=False,\n            help=\"log return value of the function in the report\",\n        )\n        parser.add_argument(\n            \"--log_func_with_objprint\",\n            action=\"store_true\",\n            default=False,\n            help=\"use objprint for function argument and return value\",\n        )\n        parser.add_argument(\n            \"--log_print\",\n            action=\"store_true\",\n            default=False,\n            help=\"replace all print() function to adding an event to the result\",\n        )\n        parser.add_argument(\n            \"--log_sparse\",\n            action=\"store_true\",\n            default=False,\n            help=\"log only selected functions with @log_sparse\",\n        )\n        parser.add_argument(\n            \"--log_func_args\",\n            action=\"store_true\",\n            default=False,\n            help=\"log all function arguments, this will introduce large overhead\",\n        )\n        parser.add_argument(\n            \"--log_gc\",\n            action=\"store_true\",\n            default=False,\n            help=\"log ref cycle garbage collection operations\",\n        )\n        parser.add_argument(\n            \"--log_torch\",\n            action=\"store_true\",\n            default=False,\n            help=\"log all the supported torch events together with the trace\",\n        )\n        parser.add_argument(\n            \"--log_var\",\n            nargs=\"*\",\n            default=None,\n            help=\"log variable with specified names\",\n        )\n        parser.add_argument(\n            \"--log_number\",\n            nargs=\"*\",\n            default=None,\n            help=\"log variable with specified names as a number(using VizCounter)\",\n        )\n        parser.add_argument(\n            \"--log_attr\",\n            nargs=\"*\",\n            default=None,\n            help=\"log attribute with specified names\",\n        )\n        parser.add_argument(\n            \"--log_audit\",\n            nargs=\"*\",\n            default=None,\n            help=\"log audit when audit event is raised, takes regex\",\n        )\n        parser.add_argument(\n            \"--log_func_exec\",\n            nargs=\"*\",\n            default=None,\n            help=\"log execution of function with specified names\",\n        )\n        parser.add_argument(\n            \"--log_func_entry\",\n            nargs=\"*\",\n            default=None,\n            help=\"log entry of the function with specified names\",\n        )\n        parser.add_argument(\n            \"--log_exception\",\n            action=\"store_true\",\n            default=False,\n            help=\"log all exception when it's raised\",\n        )\n        parser.add_argument(\n            \"--log_subprocess\",\n            action=\"store_true\",\n            default=False,\n            help=argparse.SUPPRESS,\n        )\n        parser.add_argument(\n            \"--report_endpoint\",\n            default=None,\n            help=\"The endpoint to report the trace data to, in the format of host:port\",\n        )\n        parser.add_argument(\n            \"--dump_raw\", action=\"store_true\", default=False, help=argparse.SUPPRESS\n        )\n        parser.add_argument(\n            \"--sanitize_function_name\",\n            action=\"store_true\",\n            default=False,\n            help=\"Sanitize logged function names to enforce utf-8 encoding\",\n        )\n        parser.add_argument(\n            \"--log_multiprocess\",\n            action=\"store_true\",\n            default=False,\n            help=argparse.SUPPRESS,\n        )\n        parser.add_argument(\n            \"--log_async\",\n            action=\"store_true\",\n            default=False,\n            help=\"log as async format\",\n        )\n        parser.add_argument(\n            \"--ignore_multiprocess\",\n            action=\"store_true\",\n            default=False,\n            help=\"Do not log any process other than the main process\",\n        )\n        parser.add_argument(\n            \"--magic_comment\",\n            action=\"store_true\",\n            default=False,\n            help=\"Process VizTracer specific comments\",\n        )\n        parser.add_argument(\n            \"--minimize_memory\",\n            action=\"store_true\",\n            default=False,\n            help=\"Use json.dump to dump chunks to file to save memory\",\n        )\n        parser.add_argument(\n            \"--pid_suffix\",\n            action=\"store_true\",\n            default=False,\n            help=(\n                \"append pid to file name. \"\n                \"This should be used when you try to trace multi process programs. \"\n                \"Will by default generate json files\"\n            ),\n        )\n        parser.add_argument(\n            \"--module\", \"-m\", nargs=\"?\", default=None, help=\"run module with VizTracer\"\n        )\n        parser.add_argument(\n            \"--patch_only\", action=\"store_true\", default=False, help=argparse.SUPPRESS\n        )\n        parser.add_argument(\n            \"--compress\",\n            nargs=\"?\",\n            default=None,\n            help=\"Compress a json report to a compact cvf format\",\n        )\n        parser.add_argument(\n            \"--decompress\",\n            nargs=\"?\",\n            default=None,\n            help=\"Decompress a compressed cvf file to a json format\",\n        )\n        parser.add_argument(\n            \"--combine\",\n            nargs=\"*\",\n            default=[],\n            help=(\n                \"combine all json reports to a single report. \"\n                \"Specify all the json reports you want to combine\"\n            ),\n        )\n        parser.add_argument(\n            \"--align_combine\",\n            nargs=\"*\",\n            default=[],\n            help=(\n                \"combine all json reports to a single report and align them from the start \"\n                \"Specify all the json reports you want to combine\"\n            ),\n        )\n        parser.add_argument(\n            \"--open\",\n            action=\"store_true\",\n            default=False,\n            help=\"open the report in browser after saving\",\n        )\n        parser.add_argument(\n            \"--report_server\",\n            nargs=\"?\",\n            default=None,\n            const=\"\",\n            help=\"start a report server to collect reports from multiple VizTracer instances\",\n        )\n        parser.add_argument(\n            \"--attach\",\n            type=int,\n            nargs=\"?\",\n            default=-1,\n            help=\"pid of Python process to trace\",\n        )\n        parser.add_argument(\n            \"--attach_installed\",\n            type=int,\n            nargs=\"?\",\n            default=-1,\n            help=\"pid of Python process with VizTracer installed\",\n        )\n        parser.add_argument(\n            \"--uninstall\",\n            type=int,\n            nargs=\"?\",\n            default=-1,\n            help=\"pid of Python process with VizTracer to be uninstalled\",\n        )\n        parser.add_argument(\n            \"-t\",\n            type=float,\n            nargs=\"?\",\n            default=-1,\n            help=\"time you want to trace the process\",\n        )\n        return parser\n\n    def load_config_file(self, filename: str = \".viztracerrc\") -> argparse.Namespace:\n        ret = argparse.Namespace()\n        if os.path.exists(filename):\n            import configparser\n\n            cfg_parser = configparser.ConfigParser()\n            cfg_parser.read(filename)\n            if \"default\" not in cfg_parser:\n                raise ValueError(\"Config file does not contain [default] section\")\n            for action in self.parser._actions:\n                if hasattr(action, \"dest\") and action.dest in cfg_parser[\"default\"]:\n                    convert = action.type if action.type is not None else str\n                    if not callable(convert):\n                        # This only happens when action.type is not None but not a callable\n                        # This should not happen in normal case\n                        raise ValueError(\n                            f\"Invalid action type {action.type}\"\n                        )  # pragma: no cover\n                    if action.nargs == 0:\n                        setattr(ret, action.dest, action.const)\n                    elif action.nargs is None or action.nargs == \"?\":\n                        if action.type is bool:  # pragma: no cover\n                            # VizTracer does not have any option that belongs to this case\n                            # store_true/store_false has nargs == 0, this only happens\n                            # when it's a store, but with type == bool\n                            setattr(\n                                ret,\n                                action.dest,\n                                cfg_parser[\"default\"].getboolean(action.dest),\n                            )\n                        else:\n                            setattr(\n                                ret,\n                                action.dest,\n                                convert(cfg_parser[\"default\"][action.dest]),\n                            )\n                    else:\n                        setattr(\n                            ret,\n                            action.dest,\n                            [\n                                convert(val)\n                                for val in cfg_parser[\"default\"][action.dest]\n                                .strip()\n                                .split()\n                            ],\n                        )\n        else:\n            if filename != \".viztracerrc\":\n                # User specified name, raise error\n                raise FileNotFoundError(f\"{filename} does not exist\")\n        return ret\n\n    def parse(self, argv: list[str]) -> VizProcedureResult:\n        # If -- or --run exists, all the commands after --/--run are the commands we need to run\n        # We need to filter those out, they might conflict with our arguments\n        idx: int | None = None\n        if \"--\" in argv[1:]:\n            idx = argv.index(\"--\")\n        elif \"--run\" in argv[1:]:\n            idx = argv.index(\"--run\")\n\n        rcfile_parser = argparse.ArgumentParser(add_help=False)\n        rcfile_parser.add_argument(\"--rcfile\", nargs=\"?\", default=\".viztracerrc\")\n        rc_options, _ = rcfile_parser.parse_known_args(argv[1:])\n        default_namespace = self.load_config_file(rc_options.rcfile)\n\n        if idx is not None:\n            options, command = (\n                self.parser.parse_args(argv[1:idx], namespace=default_namespace),\n                argv[idx + 1 :],\n            )\n            self.args = argv[1:idx]\n        else:\n            options, command = self.parser.parse_known_args(\n                argv[1:], namespace=default_namespace\n            )\n            self.args = [elem for elem in argv[1:] if elem not in command]\n\n        if options.quiet:\n            self.verbose = 0\n\n        if options.unique_output_file:\n            exec_name = \"python\"\n            if options.module:\n                exec_name = options.module\n            elif command:\n                exec_name = command[0]\n            self.ofile = unique_file_name(exec_name)\n        if options.output_file:\n            if not options.compress and not options.output_file.endswith(\n                (\".json\", \".html\", \".gz\")\n            ):\n                return False, \"Only html, json and gz are supported\"\n            self.ofile = options.output_file\n        elif options.pid_suffix:\n            self.ofile = \"result.json\"\n\n        if options.output_dir:\n            if not os.path.exists(options.output_dir):\n                os.mkdir(options.output_dir)\n            self.ofile = os.path.join(options.output_dir, self.ofile)\n\n        if options.log_multiprocess or options.log_subprocess:  # pragma: no cover\n            color_print(\n                \"WARNING\",\n                \"--log_multiprocess and --log_subprocess are no longer needed to trace multi-process program\",\n            )\n\n        try:\n            min_duration = time_str_to_us(options.min_duration)\n        except ValueError:\n            return (\n                False,\n                f\"Can't convert {options.min_duration} to time. Format should be 0.3ms or 13us\",\n            )\n\n        if options.log_torch:\n            try:\n                import torch  # type: ignore  # noqa: F401\n            except ImportError:\n                return False, \"torch is not installed\"\n\n        if options.report_server is not None:\n            configs = []\n            if \"|\" in options.report_server:\n                endpoint, config_str = options.report_server.split(\"|\")\n                if config_str:\n                    configs = config_str.split(\",\")\n            else:\n                endpoint = options.report_server\n\n            if endpoint and \":\" not in endpoint:\n                return False, \"report_server endpoint should be in host:port format\"\n\n            for config in configs:\n                if config not in [\"append_newline\"]:\n                    return False, f\"Unknown report_server config: {config}\"\n\n        self.options, self.command = options, command\n        self.init_kwargs = {\n            \"tracer_entries\": options.tracer_entries,\n            \"verbose\": self.verbose,\n            \"output_file\": self.ofile,\n            \"max_stack_depth\": options.max_stack_depth,\n            \"exclude_files\": options.exclude_files,\n            \"include_files\": options.include_files,\n            \"ignore_c_function\": options.ignore_c_function,\n            \"ignore_frozen\": options.ignore_frozen,\n            \"ignore_multiprocess\": options.ignore_multiprocess,\n            \"log_func_retval\": options.log_func_retval,\n            \"log_func_args\": options.log_func_args,\n            \"log_func_with_objprint\": options.log_func_with_objprint,\n            \"log_print\": options.log_print,\n            \"log_gc\": options.log_gc,\n            \"log_sparse\": options.log_sparse,\n            \"log_async\": options.log_async,\n            \"log_audit\": options.log_audit,\n            \"log_torch\": options.log_torch,\n            \"pid_suffix\": options.pid_suffix,\n            \"file_info\": False,\n            \"register_global\": True,\n            \"report_endpoint\": options.report_endpoint,\n            \"plugins\": options.plugins,\n            \"trace_self\": options.trace_self,\n            \"min_duration\": min_duration,\n            \"sanitize_function_name\": options.sanitize_function_name,\n            \"dump_raw\": True,\n            \"minimize_memory\": options.minimize_memory,\n            \"process_name\": None,\n        }\n\n        return True, None\n\n    def search_file(self, file_name: str) -> str | None:\n        if os.path.isfile(file_name):\n            return file_name\n\n        # search file in $PATH\n        if \"PATH\" in os.environ:\n            if sys.platform in [\"linux\", \"linux2\", \"darwin\"]:\n                path_sep = \":\"\n            elif sys.platform in [\"win32\"]:\n                path_sep = \";\"\n            else:  # pragma: no cover\n                return None\n\n            for dir_name in os.environ[\"PATH\"].split(path_sep):\n                candidate = os.path.join(dir_name, file_name)\n                if os.path.isfile(candidate):\n                    return candidate\n\n        return None\n\n    def run(self) -> VizProcedureResult:\n        if self.options.attach > 0:\n            return self.attach()\n        elif self.options.attach_installed > 0:\n            return self.attach_installed()\n        elif self.options.uninstall > 0:\n            return self.uninstall()\n        elif self.options.report_server is not None:\n            return self.run_report_server()\n        elif self.options.cmd_string is not None:\n            return self.run_string()\n        elif self.options.module is not None:\n            return self.run_module()\n        elif self.command:\n            return self.run_command()\n        elif self.options.compress:\n            return self.run_compress()\n        elif self.options.decompress:\n            return self.run_decompress()\n        elif self.options.combine:\n            return self.run_combine(files=self.options.combine)\n        elif self.options.align_combine:\n            return self.run_combine(files=self.options.align_combine, align=True)\n        else:\n            self.parser.print_help()\n            return True, None\n\n    def run_report_server(self) -> VizProcedureResult:\n        from .report_server import ReportServer\n\n        server = ReportServer(\n            output_file=self.ofile,\n            minimize_memory=self.options.minimize_memory,\n            verbose=self.verbose,\n            endpoint=self.options.report_server,\n        )\n        server.run()\n        return True, None\n\n    def run_code(\n        self, code: CodeType | str, global_dict: dict[str, Any]\n    ) -> VizProcedureResult:\n        options = self.options\n        self.parent_pid = os.getpid()\n\n        if options.report_endpoint is not None:\n            if options.cmd_string is not None:\n                self.init_kwargs[\"process_name\"] = \"python -c\"\n            else:\n                self.init_kwargs[\"process_name\"] = sys.argv[0]\n\n        tracer = VizTracer(**self.init_kwargs)\n        self.tracer = tracer\n\n        if options.patch_only:\n            from .patch import install_all_hooks\n\n            install_all_hooks(tracer)\n            exec(code, global_dict)\n            return True, None\n\n        def term_handler(signalnum, frame):\n            # Exit if we are not already doing exit routine\n            if not frame_stack_has_func(\n                frame,\n                (\n                    self.exit_routine,\n                    tracer.exit_routine,\n                    multiprocessing.util._exit_function,\n                ),\n            ):\n                sys.exit(0)\n\n        signal.signal(signal.SIGTERM, term_handler)\n\n        multiprocessing.util.Finalize(self, self.exit_routine, exitpriority=-1)\n\n        tracer.start()\n\n        exec(code, global_dict)\n\n        if not options.log_exit:\n            tracer.stop(stop_option=\"flush_as_finish\")\n\n        # issue141 - concurrent.future requires a proper release by executing\n        # threading._threading_atexits or it will deadlock if not explicitly\n        # release the resource in the code\n        # Python 3.9+ has this issue\n        if threading._threading_atexits:  # type: ignore\n            for atexit_call in reversed(threading._threading_atexits):  # type: ignore\n                atexit_call()\n            threading._threading_atexits = []  # type: ignore\n\n        return True, None\n\n    def run_module(self) -> VizProcedureResult:\n        import runpy\n\n        code = \"run_module(modname, run_name='__main__', alter_sys=True)\"\n        global_dict = {\n            \"run_module\": runpy.run_module,\n            \"modname\": self.options.module,\n        }\n        sys.argv = [self.options.module] + self.command[:]\n        sys.path.insert(0, os.getcwd())\n        return self.run_code(code, global_dict)\n\n    def run_string(self) -> VizProcedureResult:\n        cmd_string = self.options.cmd_string\n        main_mod = types.ModuleType(\"__main__\")\n        setattr(main_mod, \"__file__\", \"<string>\")\n        setattr(main_mod, \"__builtins__\", globals()[\"__builtins__\"])\n\n        # __mp_main__ should be a duplicate of __main__ for pickle\n        sys.modules[\"__main__\"] = sys.modules[\"__mp_main__\"] = main_mod\n        code = compile(cmd_string, \"<string>\", \"exec\")\n        sys.argv = [\"-c\"] + self.command[:]\n        return self.run_code(code, main_mod.__dict__)\n\n    def run_command(self) -> VizProcedureResult:\n        command = self.command\n        options = self.options\n        file_name = command[0]\n        search_result = self.search_file(file_name)\n        if not search_result:\n            return False, f\"No such file as {file_name}\"\n        if file_name.endswith(\".json\"):\n            return (\n                False,\n                f'viztracer can\\'t run json file, did you mean \"vizviewer {file_name}\"?',\n            )\n        file_name = search_result\n\n        with io.open_code(file_name) as f:\n            code_string = f.read()\n        if (\n            options.magic_comment\n            or options.log_var\n            or options.log_number\n            or options.log_attr\n            or options.log_func_exec\n            or options.log_exception\n            or options.log_func_entry\n        ):\n            monkey = CodeMonkey(file_name)\n            if options.magic_comment:\n                monkey.add_source_processor()\n            if options.log_var:\n                monkey.add_instrument(\"log_var\", {\"varnames\": options.log_var})\n            if options.log_number:\n                monkey.add_instrument(\"log_number\", {\"varnames\": options.log_number})\n            if options.log_attr:\n                monkey.add_instrument(\"log_attr\", {\"varnames\": options.log_attr})\n            if options.log_func_exec:\n                monkey.add_instrument(\n                    \"log_func_exec\", {\"funcnames\": options.log_func_exec}\n                )\n            if options.log_func_entry:\n                monkey.add_instrument(\n                    \"log_func_entry\", {\"funcnames\": options.log_func_entry}\n                )\n            if options.log_exception:\n                monkey.add_instrument(\"log_exception\", {})\n            builtins.compile = monkey.compile  # type: ignore\n\n        main_mod = types.ModuleType(\"__main__\")\n        setattr(main_mod, \"__file__\", os.path.abspath(file_name))\n        setattr(main_mod, \"__builtins__\", globals()[\"__builtins__\"])\n\n        # __mp_main__ should be a duplicate of __main__ for pickle\n        sys.modules[\"__main__\"] = sys.modules[\"__mp_main__\"] = main_mod\n        code = compile(code_string, os.path.abspath(file_name), \"exec\")\n        sys.path.insert(0, os.path.dirname(file_name))\n        sys.argv = command[:]\n        return self.run_code(code, main_mod.__dict__)\n\n    def run_compress(self):\n        file_to_compress = self.options.compress\n        if not file_to_compress or not os.path.exists(file_to_compress):\n            return False, f\"Unable to find file {file_to_compress}\"\n\n        if not file_to_compress.endswith(\".json\"):\n            return False, \"Only support compressing json report\"\n\n        if not self.options.output_file:\n            output_file = \"result.cvf\"\n        else:\n            output_file = self.options.output_file\n\n        from viztracer.vcompressor import VCompressor\n\n        compressor = VCompressor()\n\n        with open(file_to_compress) as f:\n            data = json.load(f)\n            compressor.compress(data, output_file)\n\n        return True, None\n\n    def run_decompress(self):\n        file_to_decompress = self.options.decompress\n        if not file_to_decompress or not os.path.exists(file_to_decompress):\n            return False, f\"Unable to find file {file_to_decompress}\"\n\n        if not self.options.output_file:\n            output_file = \"result.json\"\n        else:\n            output_file = self.options.output_file\n\n        from viztracer.vcompressor import VCompressor\n\n        compressor = VCompressor()\n\n        data = compressor.decompress(file_to_decompress)\n\n        with open(output_file, \"w\") as f:\n            json.dump(data, f)\n\n        return True, None\n\n    def run_combine(self, files: list[str], align: bool = False) -> VizProcedureResult:\n        options = self.options\n        builder = ReportBuilder(\n            files, align=align, minimize_memory=options.minimize_memory\n        )\n        if options.output_file:\n            ofile = options.output_file\n        else:\n            ofile = \"result.json\"\n        builder.save(output_file=ofile)\n\n        return True, None\n\n    def _check_attach_availability(self) -> tuple[bool, str | None]:\n        if sys.platform == \"win32\":\n            return False, \"VizTracer does not support this feature on Windows\"\n\n        if sys.platform == \"darwin\" and \"arm\" in platform.processor():\n            return False, \"VizTracer does not support this feature on Apple Silicon\"\n\n        if sys.platform == \"darwin\" and sys.version_info >= (3, 11):\n            color_print(\n                \"WARNING\",\n                \"Warning: attach may not work on 3.11+ on Mac due to hardened runtime\",\n            )\n\n        return True, None\n\n    def attach(self) -> VizProcedureResult:\n        from .attach_process.add_code_to_python_process import (  # type: ignore\n            run_python_code,\n        )\n\n        pid = self.options.attach\n        interval = self.options.t\n\n        success, err_msg = self._check_attach_availability()\n\n        if not success:\n            return False, err_msg\n\n        if not pid_exists(pid):\n            return False, f\"pid {pid} does not exist!\"\n\n        # If we are doing attach, we need to clean init_kwargs first\n        self.init_kwargs.update(\n            {\n                \"output_file\": os.path.abspath(self.ofile),\n                \"pid_suffix\": False,\n                \"file_info\": True,\n                \"register_global\": True,\n                \"dump_raw\": False,\n                \"verbose\": 1 if self.verbose != 0 else 0,\n            }\n        )\n        b64s = base64.urlsafe_b64encode(\n            json.dumps(self.init_kwargs).encode(\"ascii\")\n        ).decode(\"ascii\")\n        start_code = (\n            f'import viztracer.attach; viztracer.attach.start_attach(\\\\\"{b64s}\\\\\")'\n        )\n        stop_code = \"viztracer.attach.stop_attach()\"\n        (\n            retcode,\n            _,\n            _,\n        ) = run_python_code(pid, start_code)\n        if retcode != 0:  # pragma: no cover\n            return False, f\"Failed to inject code [err {retcode}]\"\n\n        self._wait_attach(interval)\n\n        retcode, _, _ = run_python_code(pid, stop_code)\n        if retcode != 0:  # pragma: no cover\n            return False, f\"Failed to inject code [err {retcode}]\"\n\n        print(\"Use the following command to open the report:\")\n        color_print(\"OKGREEN\", f\"vizviewer {self.init_kwargs['output_file']}\")\n\n        return True, None\n\n    def uninstall(self) -> VizProcedureResult:\n        from .attach_process.add_code_to_python_process import (  # type: ignore\n            run_python_code,\n        )\n\n        pid = self.options.uninstall\n\n        success, err_msg = self._check_attach_availability()\n\n        if not success:\n            return False, err_msg\n\n        if not pid_exists(pid):\n            return False, f\"pid {pid} does not exist!\"\n\n        stop_code = \"import viztracer.attach; viztracer.attach.uninstall_attach()\"\n\n        retcode, _, _ = run_python_code(pid, stop_code)\n        if retcode != 0:  # pragma: no cover\n            return False, f\"Failed to inject code [err {retcode}]\"\n\n        return True, None\n\n    def attach_installed(self) -> VizProcedureResult:\n        success, err_msg = self._check_attach_availability()\n\n        if not success:\n            return False, err_msg\n\n        pid = self.options.attach_installed\n        interval = self.options.t\n        try:\n            os.kill(pid, signal.SIGUSR1)\n        except OSError:\n            return False, f\"pid {pid} does not exist\"\n\n        self._wait_attach(interval)\n\n        try:\n            os.kill(pid, signal.SIGUSR2)\n        except OSError:  # pragma: no cover\n            return False, f\"pid {pid} already finished\"\n\n        return True, None\n\n    def _wait_attach(self, interval: float) -> None:\n        # interval == 0 means waiting for CTRL+C\n        try:\n            if interval > 0:\n                print(f\"Attach success, collect trace after {interval}s\", flush=True)\n                time.sleep(interval)\n            else:\n                print(\n                    \"Attach success, press CTRL+C to stop and save report\", flush=True\n                )\n                while True:\n                    time.sleep(0.1)\n        except KeyboardInterrupt:\n            pass\n\n    def exit_routine(self) -> None:\n        if self.tracer is not None:\n            if not self._exiting:\n                self._exiting = True\n                if self.verbose > 0:\n                    same_line_print(\"Saving trace data, this could take a while\")\n                self.tracer.exit_routine()\n                if self.options.open:  # pragma: no cover\n                    import subprocess\n\n                    subprocess.run(\n                        [\n                            sys.executable,\n                            \"-m\",\n                            \"viztracer.viewer\",\n                            \"--once\",\n                            os.path.abspath(self.ofile),\n                        ]\n                    )\n\n\ndef main():\n    ui = VizUI()\n    success, err_msg = ui.parse(sys.argv)\n    if not success:\n        print(err_msg)\n        sys.exit(1)\n    try:\n        success, err_msg = ui.run()\n        if not success:\n            print(err_msg)\n            sys.exit(1)\n    finally:\n        atexit._run_exitfuncs()\n"
  },
  {
    "path": "src/viztracer/modules/eventnode.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#include <Python.h>\n#include <stdio.h>\n\n#include \"pythoncapi_compat.h\"\n#include \"eventnode.h\"\n\nvoid\nclear_node(struct EventNode* node) {\n    switch (node->ntype) {\n    case FEE_NODE:\n        if (node->data.fee.type == PyTrace_CALL || node->data.fee.type == PyTrace_RETURN) {\n            Py_CLEAR(node->data.fee.code);\n            Py_CLEAR(node->data.fee.args);\n            Py_CLEAR(node->data.fee.retval);\n        } else {\n            node->data.fee.ml_name = NULL;\n            if (node->data.fee.m_module) {\n                // The function belongs to a module\n                Py_CLEAR(node->data.fee.m_module);\n            } else {\n                // The function is a class method\n                if (node->data.fee.tp_name) {\n                    // It's not a static method, has __self__\n                    node->data.fee.tp_name = NULL;\n                }\n            }\n        }\n        Py_CLEAR(node->data.fee.asyncio_task);\n        break;\n    case INSTANT_NODE:\n        Py_CLEAR(node->data.instant.name);\n        Py_CLEAR(node->data.instant.args);\n        Py_CLEAR(node->data.instant.scope);\n        break;\n    case COUNTER_NODE:\n        Py_CLEAR(node->data.counter.name);\n        Py_CLEAR(node->data.counter.args);\n        break;\n    case OBJECT_NODE:\n        Py_CLEAR(node->data.object.ph);\n        Py_CLEAR(node->data.object.id);\n        Py_CLEAR(node->data.object.name);\n        Py_CLEAR(node->data.object.args);\n        break;\n    case RAW_NODE:\n        Py_CLEAR(node->data.raw);\n        break;\n    default:\n        printf(\"Unknown Node Type When Clearing!\\n\");\n        exit(1);\n    }\n}\n\n// This will return a PyUnicode object to the caller\n// The caller is responsible to decrease the reference\n//   name_set is an initialized set to keep\n//   formatted names to save memory\nPyObject*\nget_name_from_fee_node(struct EventNode* node, PyObject* name_dict)\n{\n    assert(PyDict_Check(name_dict));\n\n    PyObject* name = NULL;\n    PyObject* ret = NULL;\n\n    // We create the name first. However, this name might already exists\n    // before. To save memory usage, we check if this name exists in name_dict\n    // If it does, we use the one in name_dict and delete this one.\n    // This way, for entries that has the same name, we won't create multiple\n    // string instances\n    if (node->data.fee.type == PyTrace_CALL || node->data.fee.type == PyTrace_RETURN) {\n        name = PyUnicode_FromFormat(\n            \"%s (%s:%d)\",\n#if PY_VERSION_HEX >= 0x030B0000\n            PyUnicode_Check(node->data.fee.code->co_qualname) ?\n                PyUnicode_AsUTF8(node->data.fee.code->co_qualname): \"<unknown>\",\n#else\n            PyUnicode_Check(node->data.fee.code->co_name) ?\n                PyUnicode_AsUTF8(node->data.fee.code->co_name): \"<unknown>\",\n#endif\n            PyUnicode_Check(node->data.fee.code->co_filename) ?\n                PyUnicode_AsUTF8(node->data.fee.code->co_filename): \"<unknown>\",\n            node->data.fee.code->co_firstlineno);\n    } else {\n        if (node->data.fee.m_module) {\n            // The function belongs to a module\n            name = PyUnicode_FromFormat(\n                \"%s.%s\",\n                PyUnicode_Check(node->data.fee.m_module) ?\n                    PyUnicode_AsUTF8(node->data.fee.m_module) : \"<unknown>\",\n                node->data.fee.ml_name);\n        } else {\n            // The function is a class method\n            if (node->data.fee.tp_name) {\n                // It's not a static method, has __self__\n                name = PyUnicode_FromFormat(\"%s.%s\",\n                       node->data.fee.tp_name,\n                       node->data.fee.ml_name);\n            } else {\n                // It's a static method, does not have __self__\n                name = PyUnicode_FromFormat(\"%s\",\n                       node->data.fee.ml_name);\n            }\n        }\n    }\n\n    if (PyDict_Contains(name_dict, name)) {\n        ret = Py_NewRef(PyDict_GetItem(name_dict, name));\n        Py_DECREF(name);\n    } else {\n        // return name, so don't DECREF it\n        PyDict_SetItem(name_dict, name, name);\n        ret = name;\n    }\n\n    return ret;\n}\n\nstatic void\nfputs_escape(const char* s, FILE* fptr)\n{\n    while (*s != 0) {\n        if (*s == '\\\\' || *s == '\\\"') {\n            fputc('\\\\', fptr);\n        }\n        fputc(*s, fptr);\n        s++;\n    }\n}\n\nvoid\nfprintfeename(FILE* fptr, struct EventNode* node, uint8_t sanitize_function_name)\n{\n    if (node->data.fee.type == PyTrace_CALL || node->data.fee.type == PyTrace_RETURN) {\n#if PY_VERSION_HEX >= 0x030B0000\n    if (PyUnicode_Check(node->data.fee.code->co_qualname)) {\n        fputs(PyUnicode_AsUTF8(node->data.fee.code->co_qualname), fptr);\n    } else {\n        fputs(\"<unknown>\", fptr);\n    }\n#else\n    if (PyUnicode_Check(node->data.fee.code->co_name)) {\n        fputs(PyUnicode_AsUTF8(node->data.fee.code->co_name), fptr);\n    } else {\n        fputs(\"<unknown>\", fptr);\n    }\n#endif\n        fputs(\" (\", fptr);\n        if (PyUnicode_Check(node->data.fee.code->co_filename)) {\n            fputs_escape(PyUnicode_AsUTF8(node->data.fee.code->co_filename), fptr);\n        } else {\n            fputs(\"<unknown>\", fptr);\n        }\n        fprintf(fptr, \":%d)\", node->data.fee.code->co_firstlineno);\n    } else {\n        const char* ml_name = node->data.fee.ml_name;\n\n        if (sanitize_function_name) {\n            const char *c = ml_name;\n            while (*c != '\\0') {\n                if(!Py_UNICODE_ISPRINTABLE(*c)) {\n                    ml_name = NULL;\n                    break;\n                }\n                c ++;\n            }\n        }\n        if (node->data.fee.m_module) {\n            // The function belongs to a module\n            if (PyUnicode_Check(node->data.fee.m_module)) {\n                fputs(PyUnicode_AsUTF8(node->data.fee.m_module), fptr);\n            } else {\n                fputs(\"<unknown>\", fptr);\n            }\n            fputc('.', fptr);\n        } else {\n            // The function is a class method\n            if (node->data.fee.tp_name) {\n                // It's not a static method, has __self__\n                fputs(node->data.fee.tp_name, fptr);\n                fputc('.', fptr);\n            } else {\n                // It's a static method, does not have __self__\n            }\n        }\n        // We will have to put ml_name at the end anyway.\n        if (ml_name) {\n            fputs(ml_name, fptr);\n        }\n    }\n}\n"
  },
  {
    "path": "src/viztracer/modules/eventnode.h",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#ifndef __EVENTNODE_H__\n#define __EVENTNODE_H__\n\n#include <Python.h>\n\ntypedef enum _NodeType {\n    EVENT_NODE = 0,\n    FEE_NODE = 1,\n    INSTANT_NODE = 2,\n    COUNTER_NODE = 3,\n    OBJECT_NODE = 4,\n    RAW_NODE = 5\n} NodeType;\n\nstruct FEEData {\n    PyObject* args;\n    PyObject* retval;\n    union {\n        struct {\n            PyObject* m_module;\n            const char* ml_name;\n            const char* tp_name;\n        };\n        PyCodeObject* code;\n    };\n    int type;\n    int64_t dur;\n    PyObject* asyncio_task;\n};\n\nstruct InstantData {\n    PyObject* name;\n    PyObject* args;\n    PyObject* scope;\n};\n\nstruct CounterData {\n    PyObject* name;\n    PyObject* args;\n};\n\nstruct ObjectData {\n    PyObject* name;\n    PyObject* args;\n    PyObject* id;\n    PyObject* ph;\n};\n\nstruct EventNode {\n    NodeType ntype;\n    int64_t ts;\n    unsigned long tid;\n    union {\n        struct FEEData fee;\n        struct InstantData instant;\n        struct CounterData counter;\n        struct ObjectData object;\n        PyObject* raw;\n    } data;\n};\n\n// ==== Functions ====\n\n// Clear the node, release reference \nvoid clear_node(struct EventNode* node);\n\n// get name from FEE node, passing in a dictionary for name cache\nPyObject* get_name_from_fee_node(struct EventNode* node, PyObject* name_dict);\nvoid fprintfeename(FILE*, struct EventNode* node, uint8_t sanitize_function_name);\n#endif\n"
  },
  {
    "path": "src/viztracer/modules/pythoncapi_compat.h",
    "content": "// Header file providing new C API functions to old Python versions.\n//\n// File distributed under the Zero Clause BSD (0BSD) license.\n// Copyright Contributors to the pythoncapi_compat project.\n//\n// Homepage:\n// https://github.com/python/pythoncapi_compat\n//\n// Latest version:\n// https://raw.githubusercontent.com/python/pythoncapi-compat/main/pythoncapi_compat.h\n//\n// SPDX-License-Identifier: 0BSD\n\n#ifndef PYTHONCAPI_COMPAT\n#define PYTHONCAPI_COMPAT\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#include <Python.h>\n\n// Python 3.11.0b4 added PyFrame_Back() to Python.h\n#if PY_VERSION_HEX < 0x030b00B4 && !defined(PYPY_VERSION)\n#  include \"frameobject.h\"        // PyFrameObject, PyFrame_GetBack()\n#endif\n\n\n#ifndef _Py_CAST\n#  define _Py_CAST(type, expr) ((type)(expr))\n#endif\n\n// Static inline functions should use _Py_NULL rather than using directly NULL\n// to prevent C++ compiler warnings. On C23 and newer and on C++11 and newer,\n// _Py_NULL is defined as nullptr.\n#if (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L) \\\n        || (defined(__cplusplus) && __cplusplus >= 201103)\n#  define _Py_NULL nullptr\n#else\n#  define _Py_NULL NULL\n#endif\n\n// Cast argument to PyObject* type.\n#ifndef _PyObject_CAST\n#  define _PyObject_CAST(op) _Py_CAST(PyObject*, op)\n#endif\n\n#ifndef Py_BUILD_ASSERT\n#  define Py_BUILD_ASSERT(cond) \\\n        do { \\\n            (void)sizeof(char [1 - 2 * !(cond)]); \\\n        } while(0)\n#endif\n\n\n// bpo-42262 added Py_NewRef() to Python 3.10.0a3\n#if PY_VERSION_HEX < 0x030A00A3 && !defined(Py_NewRef)\nstatic inline PyObject* _Py_NewRef(PyObject *obj)\n{\n    Py_INCREF(obj);\n    return obj;\n}\n#define Py_NewRef(obj) _Py_NewRef(_PyObject_CAST(obj))\n#endif\n\n\n// bpo-42262 added Py_XNewRef() to Python 3.10.0a3\n#if PY_VERSION_HEX < 0x030A00A3 && !defined(Py_XNewRef)\nstatic inline PyObject* _Py_XNewRef(PyObject *obj)\n{\n    Py_XINCREF(obj);\n    return obj;\n}\n#define Py_XNewRef(obj) _Py_XNewRef(_PyObject_CAST(obj))\n#endif\n\n\n// bpo-39573 added Py_SET_REFCNT() to Python 3.9.0a4\n#if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_REFCNT)\nstatic inline void _Py_SET_REFCNT(PyObject *ob, Py_ssize_t refcnt)\n{\n    ob->ob_refcnt = refcnt;\n}\n#define Py_SET_REFCNT(ob, refcnt) _Py_SET_REFCNT(_PyObject_CAST(ob), refcnt)\n#endif\n\n\n// Py_SETREF() and Py_XSETREF() were added to Python 3.5.2.\n// It is excluded from the limited C API.\n#if (PY_VERSION_HEX < 0x03050200 && !defined(Py_SETREF)) && !defined(Py_LIMITED_API)\n#define Py_SETREF(dst, src)                                     \\\n    do {                                                        \\\n        PyObject **_tmp_dst_ptr = _Py_CAST(PyObject**, &(dst)); \\\n        PyObject *_tmp_dst = (*_tmp_dst_ptr);                   \\\n        *_tmp_dst_ptr = _PyObject_CAST(src);                    \\\n        Py_DECREF(_tmp_dst);                                    \\\n    } while (0)\n\n#define Py_XSETREF(dst, src)                                    \\\n    do {                                                        \\\n        PyObject **_tmp_dst_ptr = _Py_CAST(PyObject**, &(dst)); \\\n        PyObject *_tmp_dst = (*_tmp_dst_ptr);                   \\\n        *_tmp_dst_ptr = _PyObject_CAST(src);                    \\\n        Py_XDECREF(_tmp_dst);                                   \\\n    } while (0)\n#endif\n\n\n// bpo-43753 added Py_Is(), Py_IsNone(), Py_IsTrue() and Py_IsFalse()\n// to Python 3.10.0b1.\n#if PY_VERSION_HEX < 0x030A00B1 && !defined(Py_Is)\n#  define Py_Is(x, y) ((x) == (y))\n#endif\n#if PY_VERSION_HEX < 0x030A00B1 && !defined(Py_IsNone)\n#  define Py_IsNone(x) Py_Is(x, Py_None)\n#endif\n#if (PY_VERSION_HEX < 0x030A00B1 || defined(PYPY_VERSION)) && !defined(Py_IsTrue)\n#  define Py_IsTrue(x) Py_Is(x, Py_True)\n#endif\n#if (PY_VERSION_HEX < 0x030A00B1 || defined(PYPY_VERSION)) && !defined(Py_IsFalse)\n#  define Py_IsFalse(x) Py_Is(x, Py_False)\n#endif\n\n\n// bpo-39573 added Py_SET_TYPE() to Python 3.9.0a4\n#if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_TYPE)\nstatic inline void _Py_SET_TYPE(PyObject *ob, PyTypeObject *type)\n{\n    ob->ob_type = type;\n}\n#define Py_SET_TYPE(ob, type) _Py_SET_TYPE(_PyObject_CAST(ob), type)\n#endif\n\n\n// bpo-39573 added Py_SET_SIZE() to Python 3.9.0a4\n#if PY_VERSION_HEX < 0x030900A4 && !defined(Py_SET_SIZE)\nstatic inline void _Py_SET_SIZE(PyVarObject *ob, Py_ssize_t size)\n{\n    ob->ob_size = size;\n}\n#define Py_SET_SIZE(ob, size) _Py_SET_SIZE((PyVarObject*)(ob), size)\n#endif\n\n\n// bpo-40421 added PyFrame_GetCode() to Python 3.9.0b1\n#if PY_VERSION_HEX < 0x030900B1 || defined(PYPY_VERSION)\nstatic inline PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)\n{\n    assert(frame != _Py_NULL);\n    assert(frame->f_code != _Py_NULL);\n    return _Py_CAST(PyCodeObject*, Py_NewRef(frame->f_code));\n}\n#endif\n\nstatic inline PyCodeObject* _PyFrame_GetCodeBorrow(PyFrameObject *frame)\n{\n    PyCodeObject *code = PyFrame_GetCode(frame);\n    Py_DECREF(code);\n    return code;\n}\n\n\n// bpo-40421 added PyFrame_GetBack() to Python 3.9.0b1\n#if PY_VERSION_HEX < 0x030900B1 && !defined(PYPY_VERSION)\nstatic inline PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)\n{\n    assert(frame != _Py_NULL);\n    return _Py_CAST(PyFrameObject*, Py_XNewRef(frame->f_back));\n}\n#endif\n\n#if !defined(PYPY_VERSION)\nstatic inline PyFrameObject* _PyFrame_GetBackBorrow(PyFrameObject *frame)\n{\n    PyFrameObject *back = PyFrame_GetBack(frame);\n    Py_XDECREF(back);\n    return back;\n}\n#endif\n\n\n// bpo-40421 added PyFrame_GetLocals() to Python 3.11.0a7\n#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyFrame_GetLocals(PyFrameObject *frame)\n{\n#if PY_VERSION_HEX >= 0x030400B1\n    if (PyFrame_FastToLocalsWithError(frame) < 0) {\n        return NULL;\n    }\n#else\n    PyFrame_FastToLocals(frame);\n#endif\n    return Py_NewRef(frame->f_locals);\n}\n#endif\n\n\n// bpo-40421 added PyFrame_GetGlobals() to Python 3.11.0a7\n#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyFrame_GetGlobals(PyFrameObject *frame)\n{\n    return Py_NewRef(frame->f_globals);\n}\n#endif\n\n\n// bpo-40421 added PyFrame_GetBuiltins() to Python 3.11.0a7\n#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyFrame_GetBuiltins(PyFrameObject *frame)\n{\n    return Py_NewRef(frame->f_builtins);\n}\n#endif\n\n\n// bpo-40421 added PyFrame_GetLasti() to Python 3.11.0b1\n#if PY_VERSION_HEX < 0x030B00B1 && !defined(PYPY_VERSION)\nstatic inline int PyFrame_GetLasti(PyFrameObject *frame)\n{\n#if PY_VERSION_HEX >= 0x030A00A7\n    // bpo-27129: Since Python 3.10.0a7, f_lasti is an instruction offset,\n    // not a bytes offset anymore. Python uses 16-bit \"wordcode\" (2 bytes)\n    // instructions.\n    if (frame->f_lasti < 0) {\n        return -1;\n    }\n    return frame->f_lasti * 2;\n#else\n    return frame->f_lasti;\n#endif\n}\n#endif\n\n\n// gh-91248 added PyFrame_GetVar() to Python 3.12.0a2\n#if PY_VERSION_HEX < 0x030C00A2 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyFrame_GetVar(PyFrameObject *frame, PyObject *name)\n{\n    PyObject *locals, *value;\n\n    locals = PyFrame_GetLocals(frame);\n    if (locals == NULL) {\n        return NULL;\n    }\n#if PY_VERSION_HEX >= 0x03000000\n    value = PyDict_GetItemWithError(locals, name);\n#else\n    value = _PyDict_GetItemWithError(locals, name);\n#endif\n    Py_DECREF(locals);\n\n    if (value == NULL) {\n        if (PyErr_Occurred()) {\n            return NULL;\n        }\n#if PY_VERSION_HEX >= 0x03000000\n        PyErr_Format(PyExc_NameError, \"variable %R does not exist\", name);\n#else\n        PyErr_SetString(PyExc_NameError, \"variable does not exist\");\n#endif\n        return NULL;\n    }\n    return Py_NewRef(value);\n}\n#endif\n\n\n// gh-91248 added PyFrame_GetVarString() to Python 3.12.0a2\n#if PY_VERSION_HEX < 0x030C00A2 && !defined(PYPY_VERSION)\nstatic inline PyObject*\nPyFrame_GetVarString(PyFrameObject *frame, const char *name)\n{\n    PyObject *name_obj, *value;\n#if PY_VERSION_HEX >= 0x03000000\n    name_obj = PyUnicode_FromString(name);\n#else\n    name_obj = PyString_FromString(name);\n#endif\n    if (name_obj == NULL) {\n        return NULL;\n    }\n    value = PyFrame_GetVar(frame, name_obj);\n    Py_DECREF(name_obj);\n    return value;\n}\n#endif\n\n\n// bpo-39947 added PyThreadState_GetInterpreter() to Python 3.9.0a5\n#if PY_VERSION_HEX < 0x030900A5 || defined(PYPY_VERSION)\nstatic inline PyInterpreterState *\nPyThreadState_GetInterpreter(PyThreadState *tstate)\n{\n    assert(tstate != _Py_NULL);\n    return tstate->interp;\n}\n#endif\n\n\n// bpo-40429 added PyThreadState_GetFrame() to Python 3.9.0b1\n#if PY_VERSION_HEX < 0x030900B1 && !defined(PYPY_VERSION)\nstatic inline PyFrameObject* PyThreadState_GetFrame(PyThreadState *tstate)\n{\n    assert(tstate != _Py_NULL);\n    return _Py_CAST(PyFrameObject *, Py_XNewRef(tstate->frame));\n}\n#endif\n\n#if !defined(PYPY_VERSION)\nstatic inline PyFrameObject*\n_PyThreadState_GetFrameBorrow(PyThreadState *tstate)\n{\n    PyFrameObject *frame = PyThreadState_GetFrame(tstate);\n    Py_XDECREF(frame);\n    return frame;\n}\n#endif\n\n\n// bpo-39947 added PyInterpreterState_Get() to Python 3.9.0a5\n#if PY_VERSION_HEX < 0x030900A5 || defined(PYPY_VERSION)\nstatic inline PyInterpreterState* PyInterpreterState_Get(void)\n{\n    PyThreadState *tstate;\n    PyInterpreterState *interp;\n\n    tstate = PyThreadState_GET();\n    if (tstate == _Py_NULL) {\n        Py_FatalError(\"GIL released (tstate is NULL)\");\n    }\n    interp = tstate->interp;\n    if (interp == _Py_NULL) {\n        Py_FatalError(\"no current interpreter\");\n    }\n    return interp;\n}\n#endif\n\n\n// bpo-39947 added PyInterpreterState_Get() to Python 3.9.0a6\n#if 0x030700A1 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x030900A6 && !defined(PYPY_VERSION)\nstatic inline uint64_t PyThreadState_GetID(PyThreadState *tstate)\n{\n    assert(tstate != _Py_NULL);\n    return tstate->id;\n}\n#endif\n\n// bpo-43760 added PyThreadState_EnterTracing() to Python 3.11.0a2\n#if PY_VERSION_HEX < 0x030B00A2 && !defined(PYPY_VERSION)\nstatic inline void PyThreadState_EnterTracing(PyThreadState *tstate)\n{\n    tstate->tracing++;\n#if PY_VERSION_HEX >= 0x030A00A1\n    tstate->cframe->use_tracing = 0;\n#else\n    tstate->use_tracing = 0;\n#endif\n}\n#endif\n\n// bpo-43760 added PyThreadState_LeaveTracing() to Python 3.11.0a2\n#if PY_VERSION_HEX < 0x030B00A2 && !defined(PYPY_VERSION)\nstatic inline void PyThreadState_LeaveTracing(PyThreadState *tstate)\n{\n    int use_tracing = (tstate->c_tracefunc != _Py_NULL\n                       || tstate->c_profilefunc != _Py_NULL);\n    tstate->tracing--;\n#if PY_VERSION_HEX >= 0x030A00A1\n    tstate->cframe->use_tracing = use_tracing;\n#else\n    tstate->use_tracing = use_tracing;\n#endif\n}\n#endif\n\n\n// bpo-37194 added PyObject_CallNoArgs() to Python 3.9.0a1\n// PyObject_CallNoArgs() added to PyPy 3.9.16-v7.3.11\n#if !defined(PyObject_CallNoArgs) && PY_VERSION_HEX < 0x030900A1\nstatic inline PyObject* PyObject_CallNoArgs(PyObject *func)\n{\n    return PyObject_CallFunctionObjArgs(func, NULL);\n}\n#endif\n\n\n// bpo-39245 made PyObject_CallOneArg() public (previously called\n// _PyObject_CallOneArg) in Python 3.9.0a4\n// PyObject_CallOneArg() added to PyPy 3.9.16-v7.3.11\n#if !defined(PyObject_CallOneArg) && PY_VERSION_HEX < 0x030900A4\nstatic inline PyObject* PyObject_CallOneArg(PyObject *func, PyObject *arg)\n{\n    return PyObject_CallFunctionObjArgs(func, arg, NULL);\n}\n#endif\n\n\n// bpo-1635741 added PyModule_AddObjectRef() to Python 3.10.0a3\n#if PY_VERSION_HEX < 0x030A00A3\nstatic inline int\nPyModule_AddObjectRef(PyObject *module, const char *name, PyObject *value)\n{\n    int res;\n\n    if (!value && !PyErr_Occurred()) {\n        // PyModule_AddObject() raises TypeError in this case\n        PyErr_SetString(PyExc_SystemError,\n                        \"PyModule_AddObjectRef() must be called \"\n                        \"with an exception raised if value is NULL\");\n        return -1;\n    }\n\n    Py_XINCREF(value);\n    res = PyModule_AddObject(module, name, value);\n    if (res < 0) {\n        Py_XDECREF(value);\n    }\n    return res;\n}\n#endif\n\n\n// bpo-40024 added PyModule_AddType() to Python 3.9.0a5\n#if PY_VERSION_HEX < 0x030900A5\nstatic inline int PyModule_AddType(PyObject *module, PyTypeObject *type)\n{\n    const char *name, *dot;\n\n    if (PyType_Ready(type) < 0) {\n        return -1;\n    }\n\n    // inline _PyType_Name()\n    name = type->tp_name;\n    assert(name != _Py_NULL);\n    dot = strrchr(name, '.');\n    if (dot != _Py_NULL) {\n        name = dot + 1;\n    }\n\n    return PyModule_AddObjectRef(module, name, _PyObject_CAST(type));\n}\n#endif\n\n\n// bpo-40241 added PyObject_GC_IsTracked() to Python 3.9.0a6.\n// bpo-4688 added _PyObject_GC_IS_TRACKED() to Python 2.7.0a2.\n#if PY_VERSION_HEX < 0x030900A6 && !defined(PYPY_VERSION)\nstatic inline int PyObject_GC_IsTracked(PyObject* obj)\n{\n    return (PyObject_IS_GC(obj) && _PyObject_GC_IS_TRACKED(obj));\n}\n#endif\n\n// bpo-40241 added PyObject_GC_IsFinalized() to Python 3.9.0a6.\n// bpo-18112 added _PyGCHead_FINALIZED() to Python 3.4.0 final.\n#if PY_VERSION_HEX < 0x030900A6 && PY_VERSION_HEX >= 0x030400F0 && !defined(PYPY_VERSION)\nstatic inline int PyObject_GC_IsFinalized(PyObject *obj)\n{\n    PyGC_Head *gc = _Py_CAST(PyGC_Head*, obj) - 1;\n    return (PyObject_IS_GC(obj) && _PyGCHead_FINALIZED(gc));\n}\n#endif\n\n\n// bpo-39573 added Py_IS_TYPE() to Python 3.9.0a4\n#if PY_VERSION_HEX < 0x030900A4 && !defined(Py_IS_TYPE)\nstatic inline int _Py_IS_TYPE(PyObject *ob, PyTypeObject *type) {\n    return Py_TYPE(ob) == type;\n}\n#define Py_IS_TYPE(ob, type) _Py_IS_TYPE(_PyObject_CAST(ob), type)\n#endif\n\n\n// bpo-46906 added PyFloat_Pack2() and PyFloat_Unpack2() to Python 3.11a7.\n// bpo-11734 added _PyFloat_Pack2() and _PyFloat_Unpack2() to Python 3.6.0b1.\n// Python 3.11a2 moved _PyFloat_Pack2() and _PyFloat_Unpack2() to the internal\n// C API: Python 3.11a2-3.11a6 versions are not supported.\n#if 0x030600B1 <= PY_VERSION_HEX && PY_VERSION_HEX <= 0x030B00A1 && !defined(PYPY_VERSION)\nstatic inline int PyFloat_Pack2(double x, char *p, int le)\n{ return _PyFloat_Pack2(x, (unsigned char*)p, le); }\n\nstatic inline double PyFloat_Unpack2(const char *p, int le)\n{ return _PyFloat_Unpack2((const unsigned char *)p, le); }\n#endif\n\n\n// bpo-46906 added PyFloat_Pack4(), PyFloat_Pack8(), PyFloat_Unpack4() and\n// PyFloat_Unpack8() to Python 3.11a7.\n// Python 3.11a2 moved _PyFloat_Pack4(), _PyFloat_Pack8(), _PyFloat_Unpack4()\n// and _PyFloat_Unpack8() to the internal C API: Python 3.11a2-3.11a6 versions\n// are not supported.\n#if PY_VERSION_HEX <= 0x030B00A1 && !defined(PYPY_VERSION)\nstatic inline int PyFloat_Pack4(double x, char *p, int le)\n{ return _PyFloat_Pack4(x, (unsigned char*)p, le); }\n\nstatic inline int PyFloat_Pack8(double x, char *p, int le)\n{ return _PyFloat_Pack8(x, (unsigned char*)p, le); }\n\nstatic inline double PyFloat_Unpack4(const char *p, int le)\n{ return _PyFloat_Unpack4((const unsigned char *)p, le); }\n\nstatic inline double PyFloat_Unpack8(const char *p, int le)\n{ return _PyFloat_Unpack8((const unsigned char *)p, le); }\n#endif\n\n\n// gh-92154 added PyCode_GetCode() to Python 3.11.0b1\n#if PY_VERSION_HEX < 0x030B00B1 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyCode_GetCode(PyCodeObject *code)\n{\n    return Py_NewRef(code->co_code);\n}\n#endif\n\n\n// gh-95008 added PyCode_GetVarnames() to Python 3.11.0rc1\n#if PY_VERSION_HEX < 0x030B00C1 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyCode_GetVarnames(PyCodeObject *code)\n{\n    return Py_NewRef(code->co_varnames);\n}\n#endif\n\n// gh-95008 added PyCode_GetFreevars() to Python 3.11.0rc1\n#if PY_VERSION_HEX < 0x030B00C1 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyCode_GetFreevars(PyCodeObject *code)\n{\n    return Py_NewRef(code->co_freevars);\n}\n#endif\n\n// gh-95008 added PyCode_GetCellvars() to Python 3.11.0rc1\n#if PY_VERSION_HEX < 0x030B00C1 && !defined(PYPY_VERSION)\nstatic inline PyObject* PyCode_GetCellvars(PyCodeObject *code)\n{\n    return Py_NewRef(code->co_cellvars);\n}\n#endif\n\n\n// Py_UNUSED() was added to Python 3.4.0b2.\n#if PY_VERSION_HEX < 0x030400B2 && !defined(Py_UNUSED)\n#  if defined(__GNUC__) || defined(__clang__)\n#    define Py_UNUSED(name) _unused_ ## name __attribute__((unused))\n#  else\n#    define Py_UNUSED(name) _unused_ ## name\n#  endif\n#endif\n\n\n// gh-105922 added PyImport_AddModuleRef() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A0\nstatic inline PyObject* PyImport_AddModuleRef(const char *name)\n{\n    return Py_XNewRef(PyImport_AddModule(name));\n}\n#endif\n\n\n// gh-105927 added PyWeakref_GetRef() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D0000\nstatic inline int PyWeakref_GetRef(PyObject *ref, PyObject **pobj)\n{\n    PyObject *obj;\n    if (ref != NULL && !PyWeakref_Check(ref)) {\n        *pobj = NULL;\n        PyErr_SetString(PyExc_TypeError, \"expected a weakref\");\n        return -1;\n    }\n    obj = PyWeakref_GetObject(ref);\n    if (obj == NULL) {\n        // SystemError if ref is NULL\n        *pobj = NULL;\n        return -1;\n    }\n    if (obj == Py_None) {\n        *pobj = NULL;\n        return 0;\n    }\n    *pobj = Py_NewRef(obj);\n    return (*pobj != NULL);\n}\n#endif\n\n\n// bpo-36974 added PY_VECTORCALL_ARGUMENTS_OFFSET to Python 3.8b1\n#ifndef PY_VECTORCALL_ARGUMENTS_OFFSET\n#  define PY_VECTORCALL_ARGUMENTS_OFFSET (_Py_CAST(size_t, 1) << (8 * sizeof(size_t) - 1))\n#endif\n\n// bpo-36974 added PyVectorcall_NARGS() to Python 3.8b1\n#if PY_VERSION_HEX < 0x030800B1\nstatic inline Py_ssize_t PyVectorcall_NARGS(size_t n)\n{\n    return n & ~PY_VECTORCALL_ARGUMENTS_OFFSET;\n}\n#endif\n\n\n// gh-105922 added PyObject_Vectorcall() to Python 3.9.0a4\n#if PY_VERSION_HEX < 0x030900A4\nstatic inline PyObject*\nPyObject_Vectorcall(PyObject *callable, PyObject *const *args,\n                     size_t nargsf, PyObject *kwnames)\n{\n#if PY_VERSION_HEX >= 0x030800B1 && !defined(PYPY_VERSION)\n    // bpo-36974 added _PyObject_Vectorcall() to Python 3.8.0b1\n    return _PyObject_Vectorcall(callable, args, nargsf, kwnames);\n#else\n    PyObject *posargs = NULL, *kwargs = NULL;\n    PyObject *res;\n    Py_ssize_t nposargs, nkwargs, i;\n\n    if (nargsf != 0 && args == NULL) {\n        PyErr_BadInternalCall();\n        goto error;\n    }\n    if (kwnames != NULL && !PyTuple_Check(kwnames)) {\n        PyErr_BadInternalCall();\n        goto error;\n    }\n\n    nposargs = (Py_ssize_t)PyVectorcall_NARGS(nargsf);\n    if (kwnames) {\n        nkwargs = PyTuple_GET_SIZE(kwnames);\n    }\n    else {\n        nkwargs = 0;\n    }\n\n    posargs = PyTuple_New(nposargs);\n    if (posargs == NULL) {\n        goto error;\n    }\n    if (nposargs) {\n        for (i=0; i < nposargs; i++) {\n            PyTuple_SET_ITEM(posargs, i, Py_NewRef(*args));\n            args++;\n        }\n    }\n\n    if (nkwargs) {\n        kwargs = PyDict_New();\n        if (kwargs == NULL) {\n            goto error;\n        }\n\n        for (i = 0; i < nkwargs; i++) {\n            PyObject *key = PyTuple_GET_ITEM(kwnames, i);\n            PyObject *value = *args;\n            args++;\n            if (PyDict_SetItem(kwargs, key, value) < 0) {\n                goto error;\n            }\n        }\n    }\n    else {\n        kwargs = NULL;\n    }\n\n    res = PyObject_Call(callable, posargs, kwargs);\n    Py_DECREF(posargs);\n    Py_XDECREF(kwargs);\n    return res;\n\nerror:\n    Py_DECREF(posargs);\n    Py_XDECREF(kwargs);\n    return NULL;\n#endif\n}\n#endif\n\n\n// gh-106521 added PyObject_GetOptionalAttr() and\n// PyObject_GetOptionalAttrString() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyObject_GetOptionalAttr(PyObject *obj, PyObject *attr_name, PyObject **result)\n{\n    // bpo-32571 added _PyObject_LookupAttr() to Python 3.7.0b1\n#if PY_VERSION_HEX >= 0x030700B1 && !defined(PYPY_VERSION)\n    return _PyObject_LookupAttr(obj, attr_name, result);\n#else\n    *result = PyObject_GetAttr(obj, attr_name);\n    if (*result != NULL) {\n        return 1;\n    }\n    if (!PyErr_Occurred()) {\n        return 0;\n    }\n    if (PyErr_ExceptionMatches(PyExc_AttributeError)) {\n        PyErr_Clear();\n        return 0;\n    }\n    return -1;\n#endif\n}\n\nstatic inline int\nPyObject_GetOptionalAttrString(PyObject *obj, const char *attr_name, PyObject **result)\n{\n    PyObject *name_obj;\n    int rc;\n#if PY_VERSION_HEX >= 0x03000000\n    name_obj = PyUnicode_FromString(attr_name);\n#else\n    name_obj = PyString_FromString(attr_name);\n#endif\n    if (name_obj == NULL) {\n        *result = NULL;\n        return -1;\n    }\n    rc = PyObject_GetOptionalAttr(obj, name_obj, result);\n    Py_DECREF(name_obj);\n    return rc;\n}\n#endif\n\n\n// gh-106307 added PyObject_GetOptionalAttr() and\n// PyMapping_GetOptionalItemString() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyMapping_GetOptionalItem(PyObject *obj, PyObject *key, PyObject **result)\n{\n    *result = PyObject_GetItem(obj, key);\n    if (*result) {\n        return 1;\n    }\n    if (!PyErr_ExceptionMatches(PyExc_KeyError)) {\n        return -1;\n    }\n    PyErr_Clear();\n    return 0;\n}\n\nstatic inline int\nPyMapping_GetOptionalItemString(PyObject *obj, const char *key, PyObject **result)\n{\n    PyObject *key_obj;\n    int rc;\n#if PY_VERSION_HEX >= 0x03000000\n    key_obj = PyUnicode_FromString(key);\n#else\n    key_obj = PyString_FromString(key);\n#endif\n    if (key_obj == NULL) {\n        *result = NULL;\n        return -1;\n    }\n    rc = PyMapping_GetOptionalItem(obj, key_obj, result);\n    Py_DECREF(key_obj);\n    return rc;\n}\n#endif\n\n// gh-108511 added PyMapping_HasKeyWithError() and\n// PyMapping_HasKeyStringWithError() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyMapping_HasKeyWithError(PyObject *obj, PyObject *key)\n{\n    PyObject *res;\n    int rc = PyMapping_GetOptionalItem(obj, key, &res);\n    Py_XDECREF(res);\n    return rc;\n}\n\nstatic inline int\nPyMapping_HasKeyStringWithError(PyObject *obj, const char *key)\n{\n    PyObject *res;\n    int rc = PyMapping_GetOptionalItemString(obj, key, &res);\n    Py_XDECREF(res);\n    return rc;\n}\n#endif\n\n\n// gh-108511 added PyObject_HasAttrWithError() and\n// PyObject_HasAttrStringWithError() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyObject_HasAttrWithError(PyObject *obj, PyObject *attr)\n{\n    PyObject *res;\n    int rc = PyObject_GetOptionalAttr(obj, attr, &res);\n    Py_XDECREF(res);\n    return rc;\n}\n\nstatic inline int\nPyObject_HasAttrStringWithError(PyObject *obj, const char *attr)\n{\n    PyObject *res;\n    int rc = PyObject_GetOptionalAttrString(obj, attr, &res);\n    Py_XDECREF(res);\n    return rc;\n}\n#endif\n\n\n// gh-106004 added PyDict_GetItemRef() and PyDict_GetItemStringRef()\n// to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyDict_GetItemRef(PyObject *mp, PyObject *key, PyObject **result)\n{\n#if PY_VERSION_HEX >= 0x03000000\n    PyObject *item = PyDict_GetItemWithError(mp, key);\n#else\n    PyObject *item = _PyDict_GetItemWithError(mp, key);\n#endif\n    if (item != NULL) {\n        *result = Py_NewRef(item);\n        return 1;  // found\n    }\n    if (!PyErr_Occurred()) {\n        *result = NULL;\n        return 0;  // not found\n    }\n    *result = NULL;\n    return -1;\n}\n\nstatic inline int\nPyDict_GetItemStringRef(PyObject *mp, const char *key, PyObject **result)\n{\n    int res;\n#if PY_VERSION_HEX >= 0x03000000\n    PyObject *key_obj = PyUnicode_FromString(key);\n#else\n    PyObject *key_obj = PyString_FromString(key);\n#endif\n    if (key_obj == NULL) {\n        *result = NULL;\n        return -1;\n    }\n    res = PyDict_GetItemRef(mp, key_obj, result);\n    Py_DECREF(key_obj);\n    return res;\n}\n#endif\n\n\n// gh-106307 added PyModule_Add() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyModule_Add(PyObject *mod, const char *name, PyObject *value)\n{\n    int res = PyModule_AddObjectRef(mod, name, value);\n    Py_XDECREF(value);\n    return res;\n}\n#endif\n\n\n// gh-108014 added Py_IsFinalizing() to Python 3.13.0a1\n// bpo-1856 added _Py_Finalizing to Python 3.2.1b1.\n// _Py_IsFinalizing() was added to PyPy 7.3.0.\n#if (0x030201B1 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x030D00A1) \\\n        && (!defined(PYPY_VERSION_NUM) || PYPY_VERSION_NUM >= 0x7030000)\nstatic inline int Py_IsFinalizing(void)\n{\n#if PY_VERSION_HEX >= 0x030700A1\n    // _Py_IsFinalizing() was added to Python 3.7.0a1.\n    return _Py_IsFinalizing();\n#else\n    return (_Py_Finalizing != NULL);\n#endif\n}\n#endif\n\n\n// gh-108323 added PyDict_ContainsString() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int PyDict_ContainsString(PyObject *op, const char *key)\n{\n    PyObject *key_obj = PyUnicode_FromString(key);\n    if (key_obj == NULL) {\n        return -1;\n    }\n    int res = PyDict_Contains(op, key_obj);\n    Py_DECREF(key_obj);\n    return res;\n}\n#endif\n\n\n// gh-108445 added PyLong_AsInt() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int PyLong_AsInt(PyObject *obj)\n{\n#ifdef PYPY_VERSION\n    long value = PyLong_AsLong(obj);\n    if (value == -1 && PyErr_Occurred()) {\n        return -1;\n    }\n    if (value < (long)INT_MIN || (long)INT_MAX < value) {\n        PyErr_SetString(PyExc_OverflowError,\n                        \"Python int too large to convert to C int\");\n        return -1;\n    }\n    return (int)value;\n#else\n    return _PyLong_AsInt(obj);\n#endif\n}\n#endif\n\n\n// gh-107073 added PyObject_VisitManagedDict() to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyObject_VisitManagedDict(PyObject *obj, visitproc visit, void *arg)\n{\n    PyObject **dict = _PyObject_GetDictPtr(obj);\n    if (*dict == NULL) {\n        return -1;\n    }\n    Py_VISIT(*dict);\n    return 0;\n}\n\nstatic inline void\nPyObject_ClearManagedDict(PyObject *obj)\n{\n    PyObject **dict = _PyObject_GetDictPtr(obj);\n    if (*dict == NULL) {\n        return;\n    }\n    Py_CLEAR(*dict);\n}\n#endif\n\n// gh-108867 added PyThreadState_GetUnchecked() to Python 3.13.0a1\n// Python 3.5.2 added _PyThreadState_UncheckedGet().\n#if PY_VERSION_HEX >= 0x03050200 && PY_VERSION_HEX < 0x030D00A1\nstatic inline PyThreadState*\nPyThreadState_GetUnchecked(void)\n{\n    return _PyThreadState_UncheckedGet();\n}\n#endif\n\n// gh-110289 added PyUnicode_EqualToUTF8() and PyUnicode_EqualToUTF8AndSize()\n// to Python 3.13.0a1\n#if PY_VERSION_HEX < 0x030D00A1\nstatic inline int\nPyUnicode_EqualToUTF8AndSize(PyObject *unicode, const char *str, Py_ssize_t str_len)\n{\n    Py_ssize_t len;\n    const void *utf8;\n    PyObject *exc_type, *exc_value, *exc_tb;\n    int res;\n\n    // API cannot report errors so save/restore the exception\n    PyErr_Fetch(&exc_type, &exc_value, &exc_tb);\n\n    // Python 3.3.0a1 added PyUnicode_AsUTF8AndSize()\n#if PY_VERSION_HEX >= 0x030300A1\n    if (PyUnicode_IS_ASCII(unicode)) {\n        utf8 = PyUnicode_DATA(unicode);\n        len = PyUnicode_GET_LENGTH(unicode);\n    }\n    else {\n        utf8 = PyUnicode_AsUTF8AndSize(unicode, &len);\n        if (utf8 == NULL) {\n            // Memory allocation failure. The API cannot report error,\n            // so ignore the exception and return 0.\n            res = 0;\n            goto done;\n        }\n    }\n\n    if (len != str_len) {\n        res = 0;\n        goto done;\n    }\n    res = (memcmp(utf8, str, (size_t)len) == 0);\n#else\n    PyObject *bytes = PyUnicode_AsUTF8String(unicode);\n    if (bytes == NULL) {\n        // Memory allocation failure. The API cannot report error,\n        // so ignore the exception and return 0.\n        res = 0;\n        goto done;\n    }\n\n#if PY_VERSION_HEX >= 0x03000000\n    len = PyBytes_GET_SIZE(bytes);\n    utf8 = PyBytes_AS_STRING(bytes);\n#else\n    len = PyString_GET_SIZE(bytes);\n    utf8 = PyString_AS_STRING(bytes);\n#endif\n    if (len != str_len) {\n        Py_DECREF(bytes);\n        res = 0;\n        goto done;\n    }\n\n    res = (memcmp(utf8, str, (size_t)len) == 0);\n    Py_DECREF(bytes);\n#endif\n\ndone:\n    PyErr_Restore(exc_type, exc_value, exc_tb);\n    return res;\n}\n\nstatic inline int\nPyUnicode_EqualToUTF8(PyObject *unicode, const char *str)\n{\n    return PyUnicode_EqualToUTF8AndSize(unicode, str, (Py_ssize_t)strlen(str));\n}\n#endif\n\n\n// gh-111138 added PyList_Extend() and PyList_Clear() to Python 3.13.0a2\n#if PY_VERSION_HEX < 0x030D00A2\nstatic inline int\nPyList_Extend(PyObject *list, PyObject *iterable)\n{\n    return PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable);\n}\n\nstatic inline int\nPyList_Clear(PyObject *list)\n{\n    return PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL);\n}\n#endif\n\n// gh-111262 added PyDict_Pop() and PyDict_PopString() to Python 3.13.0a2\n#if PY_VERSION_HEX < 0x030D00A2\nstatic inline int\nPyDict_Pop(PyObject *dict, PyObject *key, PyObject **result)\n{\n    PyObject *value;\n\n    if (!PyDict_Check(dict)) {\n        PyErr_BadInternalCall();\n        if (result) {\n            *result = NULL;\n        }\n        return -1;\n    }\n\n    // bpo-16991 added _PyDict_Pop() to Python 3.5.0b2.\n    // Python 3.6.0b3 changed _PyDict_Pop() first argument type to PyObject*.\n    // Python 3.13.0a1 removed _PyDict_Pop().\n#if defined(PYPY_VERSION) || PY_VERSION_HEX < 0x030500b2 || PY_VERSION_HEX >= 0x030D0000\n    value = PyObject_CallMethod(dict, \"pop\", \"O\", key);\n#elif PY_VERSION_HEX < 0x030600b3\n    value = _PyDict_Pop(_Py_CAST(PyDictObject*, dict), key, NULL);\n#else\n    value = _PyDict_Pop(dict, key, NULL);\n#endif\n    if (value == NULL) {\n        if (result) {\n            *result = NULL;\n        }\n        if (PyErr_Occurred() && !PyErr_ExceptionMatches(PyExc_KeyError)) {\n            return -1;\n        }\n        PyErr_Clear();\n        return 0;\n    }\n    if (result) {\n        *result = value;\n    }\n    else {\n        Py_DECREF(value);\n    }\n    return 1;\n}\n\nstatic inline int\nPyDict_PopString(PyObject *dict, const char *key, PyObject **result)\n{\n    PyObject *key_obj = PyUnicode_FromString(key);\n    if (key_obj == NULL) {\n        if (result != NULL) {\n            *result = NULL;\n        }\n        return -1;\n    }\n\n    int res = PyDict_Pop(dict, key_obj, result);\n    Py_DECREF(key_obj);\n    return res;\n}\n#endif\n\n\n#if PY_VERSION_HEX < 0x030200A4\n// Python 3.2.0a4 added Py_hash_t type\ntypedef Py_ssize_t Py_hash_t;\n#endif\n\n\n// gh-111545 added Py_HashPointer() to Python 3.13.0a3\n#if PY_VERSION_HEX < 0x030D00A3\nstatic inline Py_hash_t Py_HashPointer(const void *ptr)\n{\n#if PY_VERSION_HEX >= 0x030900A4 && !defined(PYPY_VERSION)\n    return _Py_HashPointer(ptr);\n#else\n    return _Py_HashPointer(_Py_CAST(void*, ptr));\n#endif\n}\n#endif\n\n\n// Python 3.13a4 added a PyTime API.\n// Use the private API added to Python 3.5.\n#if PY_VERSION_HEX < 0x030D00A4 && PY_VERSION_HEX  >= 0x03050000\ntypedef _PyTime_t PyTime_t;\n#define PyTime_MIN _PyTime_MIN\n#define PyTime_MAX _PyTime_MAX\n\nstatic inline double PyTime_AsSecondsDouble(PyTime_t t)\n{ return _PyTime_AsSecondsDouble(t); }\n\nstatic inline int PyTime_Monotonic(PyTime_t *result)\n{ return _PyTime_GetMonotonicClockWithInfo(result, NULL); }\n\nstatic inline int PyTime_Time(PyTime_t *result)\n{ return _PyTime_GetSystemClockWithInfo(result, NULL); }\n\nstatic inline int PyTime_PerfCounter(PyTime_t *result)\n{\n#if PY_VERSION_HEX >= 0x03070000 && !defined(PYPY_VERSION)\n    return _PyTime_GetPerfCounterWithInfo(result, NULL);\n#elif PY_VERSION_HEX >= 0x03070000\n    // Call time.perf_counter_ns() and convert Python int object to PyTime_t.\n    // Cache time.perf_counter_ns() function for best performance.\n    static PyObject *func = NULL;\n    if (func == NULL) {\n        PyObject *mod = PyImport_ImportModule(\"time\");\n        if (mod == NULL) {\n            return -1;\n        }\n\n        func = PyObject_GetAttrString(mod, \"perf_counter_ns\");\n        Py_DECREF(mod);\n        if (func == NULL) {\n            return -1;\n        }\n    }\n\n    PyObject *res = PyObject_CallNoArgs(func);\n    if (res == NULL) {\n        return -1;\n    }\n    long long value = PyLong_AsLongLong(res);\n    Py_DECREF(res);\n\n    if (value == -1 && PyErr_Occurred()) {\n        return -1;\n    }\n\n    Py_BUILD_ASSERT(sizeof(value) >= sizeof(PyTime_t));\n    *result = (PyTime_t)value;\n    return 0;\n#else\n    // Call time.perf_counter() and convert C double to PyTime_t.\n    // Cache time.perf_counter() function for best performance.\n    static PyObject *func = NULL;\n    if (func == NULL) {\n        PyObject *mod = PyImport_ImportModule(\"time\");\n        if (mod == NULL) {\n            return -1;\n        }\n\n        func = PyObject_GetAttrString(mod, \"perf_counter\");\n        Py_DECREF(mod);\n        if (func == NULL) {\n            return -1;\n        }\n    }\n\n    PyObject *res = PyObject_CallNoArgs(func);\n    if (res == NULL) {\n        return -1;\n    }\n    double d = PyFloat_AsDouble(res);\n    Py_DECREF(res);\n\n    if (d == -1.0 && PyErr_Occurred()) {\n        return -1;\n    }\n\n    // Avoid floor() to avoid having to link to libm\n    *result = (PyTime_t)(d * 1e9);\n    return 0;\n#endif\n}\n\n#endif\n\n// gh-111389 added hash constants to Python 3.13.0a5. These constants were\n// added first as private macros to Python 3.4.0b1 and PyPy 7.3.8.\n#if (!defined(PyHASH_BITS) \\\n     && ((!defined(PYPY_VERSION) && PY_VERSION_HEX >= 0x030400B1) \\\n         || (defined(PYPY_VERSION) && PY_VERSION_HEX >= 0x03070000 \\\n             && PYPY_VERSION_NUM >= 0x07030800)))\n#  define PyHASH_BITS _PyHASH_BITS\n#  define PyHASH_MODULUS _PyHASH_MODULUS\n#  define PyHASH_INF _PyHASH_INF\n#  define PyHASH_IMAG _PyHASH_IMAG\n#endif\n\n\n// gh-111545 added Py_GetConstant() and Py_GetConstantBorrowed()\n// to Python 3.13.0a6\n#if PY_VERSION_HEX < 0x030D00A6 && !defined(Py_CONSTANT_NONE)\n\n#define Py_CONSTANT_NONE 0\n#define Py_CONSTANT_FALSE 1\n#define Py_CONSTANT_TRUE 2\n#define Py_CONSTANT_ELLIPSIS 3\n#define Py_CONSTANT_NOT_IMPLEMENTED 4\n#define Py_CONSTANT_ZERO 5\n#define Py_CONSTANT_ONE 6\n#define Py_CONSTANT_EMPTY_STR 7\n#define Py_CONSTANT_EMPTY_BYTES 8\n#define Py_CONSTANT_EMPTY_TUPLE 9\n\nstatic inline PyObject* Py_GetConstant(unsigned int constant_id)\n{\n    static PyObject* constants[Py_CONSTANT_EMPTY_TUPLE + 1] = {NULL};\n\n    if (constants[Py_CONSTANT_NONE] == NULL) {\n        constants[Py_CONSTANT_NONE] = Py_None;\n        constants[Py_CONSTANT_FALSE] = Py_False;\n        constants[Py_CONSTANT_TRUE] = Py_True;\n        constants[Py_CONSTANT_ELLIPSIS] = Py_Ellipsis;\n        constants[Py_CONSTANT_NOT_IMPLEMENTED] = Py_NotImplemented;\n\n        constants[Py_CONSTANT_ZERO] = PyLong_FromLong(0);\n        if (constants[Py_CONSTANT_ZERO] == NULL) {\n            goto fatal_error;\n        }\n\n        constants[Py_CONSTANT_ONE] = PyLong_FromLong(1);\n        if (constants[Py_CONSTANT_ONE] == NULL) {\n            goto fatal_error;\n        }\n\n        constants[Py_CONSTANT_EMPTY_STR] = PyUnicode_FromStringAndSize(\"\", 0);\n        if (constants[Py_CONSTANT_EMPTY_STR] == NULL) {\n            goto fatal_error;\n        }\n\n        constants[Py_CONSTANT_EMPTY_BYTES] = PyBytes_FromStringAndSize(\"\", 0);\n        if (constants[Py_CONSTANT_EMPTY_BYTES] == NULL) {\n            goto fatal_error;\n        }\n\n        constants[Py_CONSTANT_EMPTY_TUPLE] = PyTuple_New(0);\n        if (constants[Py_CONSTANT_EMPTY_TUPLE] == NULL) {\n            goto fatal_error;\n        }\n        // goto dance to avoid compiler warnings about Py_FatalError()\n        goto init_done;\n\nfatal_error:\n        // This case should never happen\n        Py_FatalError(\"Py_GetConstant() failed to get constants\");\n    }\n\ninit_done:\n    if (constant_id <= Py_CONSTANT_EMPTY_TUPLE) {\n        return Py_NewRef(constants[constant_id]);\n    }\n    else {\n        PyErr_BadInternalCall();\n        return NULL;\n    }\n}\n\nstatic inline PyObject* Py_GetConstantBorrowed(unsigned int constant_id)\n{\n    PyObject *obj = Py_GetConstant(constant_id);\n    Py_XDECREF(obj);\n    return obj;\n}\n#endif\n\n\n// gh-114329 added PyList_GetItemRef() to Python 3.13.0a4\n#if PY_VERSION_HEX < 0x030D00A4\nstatic inline PyObject *\nPyList_GetItemRef(PyObject *op, Py_ssize_t index)\n{\n    PyObject *item = PyList_GetItem(op, index);\n    Py_XINCREF(item);\n    return item;\n}\n#endif\n\n\n// gh-114329 added PyList_GetItemRef() to Python 3.13.0a4\n#if PY_VERSION_HEX < 0x030D00A4\nstatic inline int\nPyDict_SetDefaultRef(PyObject *d, PyObject *key, PyObject *default_value,\n                     PyObject **result)\n{\n    PyObject *value;\n    if (PyDict_GetItemRef(d, key, &value) < 0) {\n        // get error\n        if (result) {\n            *result = NULL;\n        }\n        return -1;\n    }\n    if (value != NULL) {\n        // present\n        if (result) {\n            *result = value;\n        }\n        else {\n            Py_DECREF(value);\n        }\n        return 1;\n    }\n\n    // missing: set the item\n    if (PyDict_SetItem(d, key, default_value) < 0) {\n        // set error\n        if (result) {\n            *result = NULL;\n        }\n        return -1;\n    }\n    if (result) {\n        *result = Py_NewRef(default_value);\n    }\n    return 0;\n}\n#endif\n\n#if PY_VERSION_HEX < 0x030D00B3\n#  define Py_BEGIN_CRITICAL_SECTION(op) {\n#  define Py_END_CRITICAL_SECTION() }\n#  define Py_BEGIN_CRITICAL_SECTION2(a, b) {\n#  define Py_END_CRITICAL_SECTION2() }\n#endif\n\n#if PY_VERSION_HEX < 0x030E0000 && PY_VERSION_HEX >= 0x03060000 && !defined(PYPY_VERSION)\ntypedef struct PyUnicodeWriter PyUnicodeWriter;\n\nstatic inline void PyUnicodeWriter_Discard(PyUnicodeWriter *writer)\n{\n    _PyUnicodeWriter_Dealloc((_PyUnicodeWriter*)writer);\n    PyMem_Free(writer);\n}\n\nstatic inline PyUnicodeWriter* PyUnicodeWriter_Create(Py_ssize_t length)\n{\n    if (length < 0) {\n        PyErr_SetString(PyExc_ValueError,\n                        \"length must be positive\");\n        return NULL;\n    }\n\n    const size_t size = sizeof(_PyUnicodeWriter);\n    PyUnicodeWriter *pub_writer = (PyUnicodeWriter *)PyMem_Malloc(size);\n    if (pub_writer == _Py_NULL) {\n        PyErr_NoMemory();\n        return _Py_NULL;\n    }\n    _PyUnicodeWriter *writer = (_PyUnicodeWriter *)pub_writer;\n\n    _PyUnicodeWriter_Init(writer);\n    if (_PyUnicodeWriter_Prepare(writer, length, 127) < 0) {\n        PyUnicodeWriter_Discard(pub_writer);\n        return NULL;\n    }\n    writer->overallocate = 1;\n    return pub_writer;\n}\n\nstatic inline PyObject* PyUnicodeWriter_Finish(PyUnicodeWriter *writer)\n{\n    PyObject *str = _PyUnicodeWriter_Finish((_PyUnicodeWriter*)writer);\n    assert(((_PyUnicodeWriter*)writer)->buffer == NULL);\n    PyMem_Free(writer);\n    return str;\n}\n\nstatic inline int\nPyUnicodeWriter_WriteChar(PyUnicodeWriter *writer, Py_UCS4 ch)\n{\n    if (ch > 0x10ffff) {\n        PyErr_SetString(PyExc_ValueError,\n                        \"character must be in range(0x110000)\");\n        return -1;\n    }\n\n    return _PyUnicodeWriter_WriteChar((_PyUnicodeWriter*)writer, ch);\n}\n\nstatic inline int\nPyUnicodeWriter_WriteStr(PyUnicodeWriter *writer, PyObject *obj)\n{\n    PyObject *str = PyObject_Str(obj);\n    if (str == NULL) {\n        return -1;\n    }\n\n    int res = _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, str);\n    Py_DECREF(str);\n    return res;\n}\n\nstatic inline int\nPyUnicodeWriter_WriteRepr(PyUnicodeWriter *writer, PyObject *obj)\n{\n    PyObject *str = PyObject_Repr(obj);\n    if (str == NULL) {\n        return -1;\n    }\n\n    int res = _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, str);\n    Py_DECREF(str);\n    return res;\n}\n\nstatic inline int\nPyUnicodeWriter_WriteUTF8(PyUnicodeWriter *writer,\n                          const char *str, Py_ssize_t size)\n{\n    if (size < 0) {\n        size = (Py_ssize_t)strlen(str);\n    }\n\n    PyObject *str_obj = PyUnicode_FromStringAndSize(str, size);\n    if (str_obj == _Py_NULL) {\n        return -1;\n    }\n\n    int res = _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, str_obj);\n    Py_DECREF(str_obj);\n    return res;\n}\n\nstatic inline int\nPyUnicodeWriter_WriteWideChar(PyUnicodeWriter *writer,\n                              const wchar_t *str, Py_ssize_t size)\n{\n    if (size < 0) {\n        size = (Py_ssize_t)wcslen(str);\n    }\n\n    PyObject *str_obj = PyUnicode_FromWideChar(str, size);\n    if (str_obj == _Py_NULL) {\n        return -1;\n    }\n\n    int res = _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, str_obj);\n    Py_DECREF(str_obj);\n    return res;\n}\n\nstatic inline int\nPyUnicodeWriter_WriteSubstring(PyUnicodeWriter *writer, PyObject *str,\n                               Py_ssize_t start, Py_ssize_t end)\n{\n    if (!PyUnicode_Check(str)) {\n        PyErr_Format(PyExc_TypeError, \"expect str, not %T\", str);\n        return -1;\n    }\n    if (start < 0 || start > end) {\n        PyErr_Format(PyExc_ValueError, \"invalid start argument\");\n        return -1;\n    }\n    if (end > PyUnicode_GET_LENGTH(str)) {\n        PyErr_Format(PyExc_ValueError, \"invalid end argument\");\n        return -1;\n    }\n\n    return _PyUnicodeWriter_WriteSubstring((_PyUnicodeWriter*)writer, str,\n                                           start, end);\n}\n\nstatic inline int\nPyUnicodeWriter_Format(PyUnicodeWriter *writer, const char *format, ...)\n{\n    va_list vargs;\n    va_start(vargs, format);\n    PyObject *str = PyUnicode_FromFormatV(format, vargs);\n    va_end(vargs);\n    if (str == _Py_NULL) {\n        return -1;\n    }\n\n    int res = _PyUnicodeWriter_WriteStr((_PyUnicodeWriter*)writer, str);\n    Py_DECREF(str);\n    return res;\n}\n#endif  // PY_VERSION_HEX < 0x030E0000\n\n// gh-116560 added PyLong_GetSign() to Python 3.14.0a0\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline int PyLong_GetSign(PyObject *obj, int *sign)\n{\n    if (!PyLong_Check(obj)) {\n        PyErr_Format(PyExc_TypeError, \"expect int, got %s\", Py_TYPE(obj)->tp_name);\n        return -1;\n    }\n\n    *sign = _PyLong_Sign(obj);\n    return 0;\n}\n#endif\n\n// gh-126061 added PyLong_IsPositive/Negative/Zero() to Python in 3.14.0a2\n#if PY_VERSION_HEX < 0x030E00A2\nstatic inline int PyLong_IsPositive(PyObject *obj)\n{\n    if (!PyLong_Check(obj)) {\n        PyErr_Format(PyExc_TypeError, \"expected int, got %s\", Py_TYPE(obj)->tp_name);\n        return -1;\n    }\n    return _PyLong_Sign(obj) == 1;\n}\n\nstatic inline int PyLong_IsNegative(PyObject *obj)\n{\n    if (!PyLong_Check(obj)) {\n        PyErr_Format(PyExc_TypeError, \"expected int, got %s\", Py_TYPE(obj)->tp_name);\n        return -1;\n    }\n    return _PyLong_Sign(obj) == -1;\n}\n\nstatic inline int PyLong_IsZero(PyObject *obj)\n{\n    if (!PyLong_Check(obj)) {\n        PyErr_Format(PyExc_TypeError, \"expected int, got %s\", Py_TYPE(obj)->tp_name);\n        return -1;\n    }\n    return _PyLong_Sign(obj) == 0;\n}\n#endif\n\n\n// gh-124502 added PyUnicode_Equal() to Python 3.14.0a0\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline int PyUnicode_Equal(PyObject *str1, PyObject *str2)\n{\n    if (!PyUnicode_Check(str1)) {\n        PyErr_Format(PyExc_TypeError, \"first argument must be str, not %s\",\n                     Py_TYPE(str1)->tp_name);\n        return -1;\n    }\n    if (!PyUnicode_Check(str2)) {\n        PyErr_Format(PyExc_TypeError, \"second argument must be str, not %s\",\n                     Py_TYPE(str2)->tp_name);\n        return -1;\n    }\n\n#if PY_VERSION_HEX >= 0x030d0000 && !defined(PYPY_VERSION)\n    PyAPI_FUNC(int) _PyUnicode_Equal(PyObject *str1, PyObject *str2);\n\n    return _PyUnicode_Equal(str1, str2);\n#elif PY_VERSION_HEX >= 0x03060000 && !defined(PYPY_VERSION)\n    return _PyUnicode_EQ(str1, str2);\n#elif PY_VERSION_HEX >= 0x03090000 && defined(PYPY_VERSION)\n    return _PyUnicode_EQ(str1, str2);\n#else\n    return (PyUnicode_Compare(str1, str2) == 0);\n#endif\n}\n#endif\n\n\n// gh-121645 added PyBytes_Join() to Python 3.14.0a0\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline PyObject* PyBytes_Join(PyObject *sep, PyObject *iterable)\n{\n    return _PyBytes_Join(sep, iterable);\n}\n#endif\n\n\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline Py_hash_t Py_HashBuffer(const void *ptr, Py_ssize_t len)\n{\n#if PY_VERSION_HEX >= 0x03000000 && !defined(PYPY_VERSION)\n    PyAPI_FUNC(Py_hash_t) _Py_HashBytes(const void *src, Py_ssize_t len);\n\n    return _Py_HashBytes(ptr, len);\n#else\n    Py_hash_t hash;\n    PyObject *bytes = PyBytes_FromStringAndSize((const char*)ptr, len);\n    if (bytes == NULL) {\n        return -1;\n    }\n    hash = PyObject_Hash(bytes);\n    Py_DECREF(bytes);\n    return hash;\n#endif\n}\n#endif\n\n\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline int PyIter_NextItem(PyObject *iter, PyObject **item)\n{\n    iternextfunc tp_iternext;\n\n    assert(iter != NULL);\n    assert(item != NULL);\n\n    tp_iternext = Py_TYPE(iter)->tp_iternext;\n    if (tp_iternext == NULL) {\n        *item = NULL;\n        PyErr_Format(PyExc_TypeError, \"expected an iterator, got '%s'\",\n                     Py_TYPE(iter)->tp_name);\n        return -1;\n    }\n\n    if ((*item = tp_iternext(iter))) {\n        return 1;\n    }\n    if (!PyErr_Occurred()) {\n        return 0;\n    }\n    if (PyErr_ExceptionMatches(PyExc_StopIteration)) {\n        PyErr_Clear();\n        return 0;\n    }\n    return -1;\n}\n#endif\n\n\n#if PY_VERSION_HEX < 0x030E00A0\nstatic inline PyObject* PyLong_FromInt32(int32_t value)\n{\n    Py_BUILD_ASSERT(sizeof(long) >= 4);\n    return PyLong_FromLong(value);\n}\n\nstatic inline PyObject* PyLong_FromInt64(int64_t value)\n{\n    Py_BUILD_ASSERT(sizeof(long long) >= 8);\n    return PyLong_FromLongLong(value);\n}\n\nstatic inline PyObject* PyLong_FromUInt32(uint32_t value)\n{\n    Py_BUILD_ASSERT(sizeof(unsigned long) >= 4);\n    return PyLong_FromUnsignedLong(value);\n}\n\nstatic inline PyObject* PyLong_FromUInt64(uint64_t value)\n{\n    Py_BUILD_ASSERT(sizeof(unsigned long long) >= 8);\n    return PyLong_FromUnsignedLongLong(value);\n}\n\nstatic inline int PyLong_AsInt32(PyObject *obj, int32_t *pvalue)\n{\n    Py_BUILD_ASSERT(sizeof(int) == 4);\n    int value = PyLong_AsInt(obj);\n    if (value == -1 && PyErr_Occurred()) {\n        return -1;\n    }\n    *pvalue = (int32_t)value;\n    return 0;\n}\n\nstatic inline int PyLong_AsInt64(PyObject *obj, int64_t *pvalue)\n{\n    Py_BUILD_ASSERT(sizeof(long long) == 8);\n    long long value = PyLong_AsLongLong(obj);\n    if (value == -1 && PyErr_Occurred()) {\n        return -1;\n    }\n    *pvalue = (int64_t)value;\n    return 0;\n}\n\nstatic inline int PyLong_AsUInt32(PyObject *obj, uint32_t *pvalue)\n{\n    Py_BUILD_ASSERT(sizeof(long) >= 4);\n    unsigned long value = PyLong_AsUnsignedLong(obj);\n    if (value == (unsigned long)-1 && PyErr_Occurred()) {\n        return -1;\n    }\n#if SIZEOF_LONG > 4\n    if ((unsigned long)UINT32_MAX < value) {\n        PyErr_SetString(PyExc_OverflowError,\n                        \"Python int too large to convert to C uint32_t\");\n        return -1;\n    }\n#endif\n    *pvalue = (uint32_t)value;\n    return 0;\n}\n\nstatic inline int PyLong_AsUInt64(PyObject *obj, uint64_t *pvalue)\n{\n    Py_BUILD_ASSERT(sizeof(long long) == 8);\n    unsigned long long value = PyLong_AsUnsignedLongLong(obj);\n    if (value == (unsigned long long)-1 && PyErr_Occurred()) {\n        return -1;\n    }\n    *pvalue = (uint64_t)value;\n    return 0;\n}\n#endif\n\n\n#ifdef __cplusplus\n}\n#endif\n#endif  // PYTHONCAPI_COMPAT\n"
  },
  {
    "path": "src/viztracer/modules/quicktime.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\n#include <Python.h>\n#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <stdbool.h>\n#include <time.h>\n\n#include \"quicktime.h\"\n\n#if _WIN32\n#include <windows.h>\nLARGE_INTEGER qpc_freq;\n#elif defined(__APPLE__)\n#include <mach/mach_time.h>\nmach_timebase_info_data_t timebase_info;\n#endif\n\n\n#define CALIBRATE_SIZE 1000\n\ndouble ts_to_ns_factor = 1.0;\nint64_t system_base_time = 0;\nint64_t system_base_ts = 0;\nint64_t* start_ts = NULL;\nint64_t* start_ns = NULL;\nint64_t t0_ts = 0;\nint64_t t0_ns = 0;\nbool calibrated = false;\n\nstatic int\ncompare_double(const void *a, const void *b)\n{\n    return (*(double *)a - *(double *)b);\n}\n\nstatic int\ncompare_int64(const void *a, const void *b)\n{\n    return (*(int64_t *)a - *(int64_t *)b);\n}\n\nstatic void\ncalibrate_quicktime()\n{\n    int64_t end_ts[CALIBRATE_SIZE] = {0};\n    int64_t end_ns[CALIBRATE_SIZE] = {0};\n    double factors[CALIBRATE_SIZE] = {0};\n\n    for (int i = 0; i < CALIBRATE_SIZE; i++)\n    {\n        int64_t end_before = get_system_ts();\n        end_ns[i] = get_system_ns();\n        int64_t end_after = get_system_ts();\n        end_ts[i] = end_before + (end_after - end_before) / 2;\n    }\n\n    for (int i = 0; i < CALIBRATE_SIZE; i++)\n    {\n        factors[i] = (double)(end_ns[i] - start_ns[i]) / (end_ts[i] - start_ts[i]);\n    }\n\n    qsort(factors, CALIBRATE_SIZE, sizeof(double), compare_double);\n\n    ts_to_ns_factor = factors[CALIBRATE_SIZE / 2];\n}\n\ndouble\nsystem_ts_to_us(int64_t ts)\n{\n    if (!calibrated)\n    {\n        calibrate_quicktime();\n        calibrated = true;\n    }\n    return system_ts_to_ns(ts) / 1000.0;\n}\n\nint64_t\nsystem_ts_to_ns(int64_t ts)\n{\n    if (!calibrated)\n    {\n        calibrate_quicktime();\n        calibrated = true;\n    }\n    return t0_ns + (ts - t0_ts) * ts_to_ns_factor;\n}\n\ndouble\ndur_ts_to_us(int64_t dur)\n{\n    if (!calibrated)\n    {\n        calibrate_quicktime();\n        calibrated = true;\n    }\n    return (double)dur * ts_to_ns_factor / 1000;\n}\n\nint64_t\ndur_ts_to_ns(int64_t dur)\n{\n    if (!calibrated)\n    {\n        calibrate_quicktime();\n        calibrated = true;\n    }\n    return dur * ts_to_ns_factor;\n}\n\nvoid\nquicktime_free()\n{\n    free(start_ts);\n    free(start_ns);\n}\n\nvoid\nquicktime_init()\n{\n#if _WIN32\n    QueryPerformanceFrequency(&qpc_freq);\n#elif defined(__APPLE__)\n    mach_timebase_info(&timebase_info);\n#endif\n\n    start_ts = (int64_t*)malloc(sizeof(int64_t) * CALIBRATE_SIZE);\n    start_ns = (int64_t*)malloc(sizeof(int64_t) * CALIBRATE_SIZE);\n\n    int64_t diff_ns[CALIBRATE_SIZE] = {0};\n\n    t0_ts = 0;\n    t0_ns = 0;\n\n    for (int i = 0; i < CALIBRATE_SIZE; i++)\n    {\n        int64_t start_before = get_system_ts();\n        start_ns[i] = get_system_ns();\n        int64_t start_after = get_system_ts();\n        start_ts[i] = start_before + (start_after - start_before) / 2;\n    }\n\n    // Do the expensive average calculation outside the measurement loop\n    int64_t ts_remainder = 0;\n    int64_t ns_remainder = 0;\n    for (int i = 0; i < CALIBRATE_SIZE; i++)\n    {\n        // Divide by CALIBRATE_SIZE at each step instead of accumulate-and-divide to avoid overflow\n        t0_ts += start_ts[i] / CALIBRATE_SIZE;\n        t0_ns += start_ns[i] / CALIBRATE_SIZE;\n\n        // Also accumulate the remainders, which are unlikely to overflow\n        ts_remainder += start_ts[i] % CALIBRATE_SIZE;\n        ns_remainder += start_ns[i] % CALIBRATE_SIZE;\n    }\n    // Then finally add the average remainder\n    t0_ts += ts_remainder / CALIBRATE_SIZE;\n    t0_ns += ns_remainder / CALIBRATE_SIZE;\n\n    // Now let's find the base time\n\n    for (int i = 0; i < CALIBRATE_SIZE; i++)\n    {\n        int64_t start_before = get_system_ns();\n        diff_ns[i] = get_system_epoch_ns();\n        int64_t start_after = get_system_ns();\n        diff_ns[i] -= start_before + (start_after - start_before) / 2;\n    }\n\n    qsort(diff_ns, CALIBRATE_SIZE, sizeof(int64_t), compare_int64);\n\n    system_base_time = diff_ns[CALIBRATE_SIZE / 2];\n}\n"
  },
  {
    "path": "src/viztracer/modules/quicktime.h",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\n#ifndef __SNAPTRACE_QUICKTIME_H__\n#define __SNAPTRACE_QUICKTIME_H__\n\n#include <Python.h>\n#include <stdint.h>\n#include <time.h>\n\n#if _WIN32\n#include <windows.h>\nextern LARGE_INTEGER qpc_freq;\n#elif defined(__APPLE__)\n#include <mach/mach_time.h>\nextern mach_timebase_info_data_t timebase_info;\n#endif\n\n#if defined(__i386__) || defined(__x86_64__) || defined(__amd64__)\n#define QUICKTIME_RDTSC\n#if defined(_MSC_VER)\n#include <intrin.h>\n#elif defined(__clang__)\n// `__rdtsc` is available by default.\n// NB: This has to be first, because Clang will also define `__GNUC__`\n#elif defined(__GNUC__)\n#include <x86intrin.h>\n#else\n#undef QUICKTIME_RDTSC\n#endif\n#endif\n\nextern double ts_to_ns_factor;\nextern int64_t system_base_time;\n\nvoid quicktime_init();\nvoid quicktime_free();\ndouble system_ts_to_us(int64_t ts);\nint64_t system_ts_to_ns(int64_t ts);\ndouble dur_ts_to_us(int64_t dur);\nint64_t dur_ts_to_ns(int64_t dur);\n\ninline int64_t\nget_base_time_ns(void)\n{\n    return system_base_time;\n};\n\ninline int64_t\nget_system_ts(void)\n{\n#if defined(QUICKTIME_RDTSC)\n    return __rdtsc();\n#else\n#if _WIN32\n    LARGE_INTEGER counter = {0};\n    QueryPerformanceCounter(&counter);\n    return counter.QuadPart;\n#elif defined(__APPLE__)\n    return clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW);\n#else\n    struct timespec t;\n    clock_gettime(CLOCK_MONOTONIC, &t);\n    return (int64_t)(t.tv_sec * 1e9 + t.tv_nsec);\n#endif\n#endif\n}\n\ninline int64_t\nget_system_ns(void)\n{\n#if _WIN32\n    LARGE_INTEGER counter = {0};\n    QueryPerformanceCounter(&counter);\n    return counter.QuadPart * 1e9 / qpc_freq.QuadPart;\n#elif defined(__APPLE__)\n    return clock_gettime_nsec_np(CLOCK_MONOTONIC_RAW);\n#else\n    struct timespec t;\n    clock_gettime(CLOCK_MONOTONIC, &t);\n    return (int64_t)(t.tv_sec * 1e9 + t.tv_nsec);\n#endif\n}\n\n\ninline int64_t\nget_system_epoch_ns(void)\n{\n#if _WIN32\n    FILETIME ft;\n    ULARGE_INTEGER ui;\n    GetSystemTimePreciseAsFileTime(&ft);\n    ui.LowPart = ft.dwLowDateTime;\n    ui.HighPart = ft.dwHighDateTime;\n    return (ui.QuadPart - 116444736000000000ULL) * 100;\n#else\n    struct timespec t;\n    clock_gettime(CLOCK_REALTIME, &t);\n    return (int64_t)t.tv_sec * 1e9 + t.tv_nsec;\n#endif\n}\n\n#endif\n"
  },
  {
    "path": "src/viztracer/modules/snaptrace.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include <stdlib.h>\n#include <frameobject.h>\n#if _WIN32\n#include <windows.h>\n#elif defined(__APPLE__)\n#include <pthread.h>\n#elif defined(__FreeBSD__)\n#include <pthread_np.h>\n#else\n#include <pthread.h>\n#include <sys/syscall.h>\n#endif\n\n#include \"pythoncapi_compat.h\"\n#include \"snaptrace.h\"\n#include \"quicktime.h\"\n#include \"util.h\"\n#include \"eventnode.h\"\n\n\nTracerObject* curr_tracer = NULL;\nPyObject* threading_module = NULL;\nPyObject* multiprocessing_module = NULL;\nPyObject* json_module = NULL;\nPyObject* asyncio_module = NULL;\nPyObject* asyncio_tasks_module = NULL;\nPyObject* trio_module = NULL;\nPyObject* trio_lowlevel_module = NULL;\nPyObject* sys_module = NULL;\nPyObject* sys_monitoring_missing = NULL;\n\nPyObject* curr_task_getters[2] = {0};\n\n// =============================================================================\n// Utility function\n// =============================================================================\n\nint64_t prev_ts = 0;\n\nstatic inline int64_t\nget_ts()\n{\n#if defined(QUICKTIME_RDTSC)\n    return get_system_ts();\n#else\n    int64_t curr_ts = get_system_ts();\n    if (curr_ts <= prev_ts) {\n        // We use artificial timestamp to avoid timestamp conflict.\n        // 20 ns should be a safe granularity because that's normally\n        // how long clock_gettime() takes.\n        // It's possible to have three same timestamp in a row so we\n        // need to check if curr_ts <= prev_ts instead of ==\n#if !defined(_WIN32)\n        // Win32's time unit is too coarse, we can't even add 1.\n        curr_ts = prev_ts + 20;\n#endif\n    }\n    prev_ts = curr_ts;\n    return curr_ts;\n#endif\n}\n\nstatic inline struct EventNode*\nget_next_node(TracerObject* self)\n{\n    struct EventNode* node = NULL;\n\n    SNAPTRACE_THREAD_PROTECT_START(self);\n    node = self->buffer + self->buffer_tail_idx;\n    // This is actually faster than modulo\n    self->buffer_tail_idx = self->buffer_tail_idx + 1;\n    if (self->buffer_tail_idx >= self->buffer_size) {\n        self->buffer_tail_idx = 0;\n    }\n    if (self->buffer_tail_idx == self->buffer_head_idx) {\n        self->buffer_head_idx = self->buffer_head_idx + 1;\n        if (self->buffer_head_idx >= self->buffer_size) {\n            self->buffer_head_idx = 0;\n        }\n        clear_node(self->buffer + self->buffer_tail_idx);\n    } else {\n        self->total_entries += 1;\n    }\n    SNAPTRACE_THREAD_PROTECT_END(self);\n\n    return node;\n}\n\nstatic void\nlog_func_args(struct FunctionNode* node, PyFrameObject* frame, PyObject* log_func_repr)\n{\n    PyObject* func_arg_dict = PyDict_New();\n    PyCodeObject* code = PyFrame_GetCode(frame);\n    PyObject* names = PyCode_GetVarnames(code);\n\n#if PY_VERSION_HEX >= 0x030D0000\n    PyObject* locals = PyEval_GetFrameLocals();\n#else\n    PyObject* locals = PyEval_GetLocals();\n#endif\n\n    int idx = 0;\n    if (!node->args) {\n        node->args = PyDict_New();\n    }\n\n    int name_length = code->co_argcount + code->co_kwonlyargcount;\n    if (code->co_flags & CO_VARARGS) {\n        name_length ++;\n    }\n\n    if (code->co_flags & CO_VARKEYWORDS) {\n        name_length ++;\n    }\n\n    while (idx < name_length) {\n        // Borrowed\n        PyObject* name = PyTuple_GET_ITEM(names, idx);\n        PyObject* repr = NULL;\n        // New\n        if (log_func_repr) {\n            repr = PyObject_CallOneArg(log_func_repr, PyDict_GetItem(locals, name));\n        } else {\n            repr = PyObject_Repr(PyDict_GetItem(locals, name));\n        }\n        if (!repr) {\n            repr = PyUnicode_FromString(\"Not Displayable\");\n            PyErr_Clear();\n        }\n        PyDict_SetItem(func_arg_dict, name, repr);\n        Py_DECREF(repr);\n        idx++;\n    }\n\n#if PY_VERSION_HEX >= 0x030D0000\n    Py_DECREF(locals);\n#endif\n\n    PyDict_SetItemString(node->args, \"func_args\", func_arg_dict);\n    Py_DECREF(func_arg_dict);\n\n    Py_XDECREF(code);\n    Py_XDECREF(names);\n}\n\nstatic void\nverbose_printf(TracerObject* self, int v, const char* fmt, ...)\n{\n    va_list args;\n    if (self->verbose >= v) {\n        va_start(args, fmt);\n        vprintf(fmt, args);\n        va_end(args);\n        fflush(stdout);\n    }\n}\n\nvoid\nclear_stack(struct FunctionNode** stack_top) {\n    Py_CLEAR((*stack_top)->args);\n    Py_CLEAR((*stack_top)->func);\n    while ((*stack_top)->prev) {\n        (*stack_top) = (*stack_top) -> prev;\n        Py_CLEAR((*stack_top)->args);\n        Py_CLEAR((*stack_top)->func);\n    }\n}\n\n// =============================================================================\n// Thread info related functions\n// =============================================================================\n\nstatic struct ThreadInfo*\nsnaptrace_createthreadinfo(TracerObject* self) {\n    struct ThreadInfo* info = PyMem_Calloc(1, sizeof(struct ThreadInfo));\n    info->stack_top = (struct FunctionNode*) PyMem_Calloc(1, sizeof(struct FunctionNode));\n\n#if _WIN32  \n    info->tid = GetCurrentThreadId();\n#elif defined(__APPLE__)\n    __uint64_t tid = 0;\n    if (pthread_threadid_np(NULL, &tid)) {\n        info->tid = (unsigned long)pthread_self();\n    } else {\n        info->tid = tid;\n    }\n#elif defined(__FreeBSD__)\n    info->tid = pthread_getthreadid_np();\n#else\n    info->tid = syscall(SYS_gettid);\n#endif\n\n#if _WIN32\n    TlsSetValue(self->dwTlsIndex, info);\n#else\n    pthread_setspecific(self->thread_key, info);\n#endif\n\n    PyGILState_STATE state = PyGILState_Ensure();\n    SNAPTRACE_THREAD_PROTECT_START(self);\n\n    PyObject* current_thread = PyObject_CallMethod(threading_module, \"current_thread\", \"\");\n    if (!current_thread) {\n        PyErr_SetString(PyExc_RuntimeError, \"Failed to get current thread\");\n        goto cleanup;\n    }\n    PyObject* thread_name = PyObject_GetAttrString(current_thread, \"name\");\n    if (!thread_name) {\n        // It's okay not having a name\n        PyErr_Clear();\n        thread_name = PyUnicode_FromString(\"Unknown\");\n    }\n\n    Py_DECREF(current_thread);\n\n    // Check for existing node for the same tid first\n    struct MetadataNode* node = self->metadata_head;\n    int found_node = 0;\n\n    while (node) {\n        if (node->tid == info->tid) {\n            Py_DECREF(node->name);\n            node->name = thread_name;\n            node->thread_info = info;\n            info->metadata_node = node;\n            found_node = 1;\n            break;\n        }\n        node = node->next;\n    }\n\n    if (!found_node) {\n        node = (struct MetadataNode*) PyMem_Calloc(1, sizeof(struct MetadataNode));\n        if (!node) {\n            PyErr_SetString(PyExc_RuntimeError, \"Out of memory!\");\n            info = NULL;\n            goto cleanup;\n        }\n        node->name = thread_name;\n        node->tid = info->tid;\n        node->thread_info = info;\n        info->metadata_node = node;\n        node->next = self->metadata_head;\n        self->metadata_head = node;\n    }\n\n    info->curr_task = NULL;\n    info->curr_task_frame = NULL;\n\ncleanup:\n\n    SNAPTRACE_THREAD_PROTECT_END(self);\n    PyGILState_Release(state);\n\n    return info;\n}\n\nstatic struct ThreadInfo*\nget_thread_info(TracerObject* self)\n{\n    // self is non-NULL value\n    struct ThreadInfo* info = NULL;\n#if _WIN32\n    info = TlsGetValue(self->dwTlsIndex);\n#else\n    info = pthread_getspecific(self->thread_key);\n#endif\n    if (!info) {\n        info = snaptrace_createthreadinfo(self);\n    }\n    return info;\n}\n\nstatic void\nsnaptrace_threaddestructor(void* key) {\n    struct ThreadInfo* info = key;\n    struct FunctionNode* tmp = NULL;\n    if (info) {\n        PyGILState_STATE state = PyGILState_Ensure();\n        info->paused = 0;\n        info->curr_stack_depth = 0;\n        info->ignore_stack_depth = 0;\n        info->tid = 0;\n        if (info->stack_top) {\n            while (info->stack_top->prev) {\n                info->stack_top = info->stack_top->prev;\n            }\n            while (info->stack_top) {\n                tmp = info->stack_top;\n                Py_CLEAR(tmp->args);\n                Py_CLEAR(tmp->func);\n                info->stack_top = info->stack_top->next;\n                PyMem_FREE(tmp);\n            }\n        }\n        info->stack_top = NULL;\n        Py_CLEAR(info->curr_task);\n        Py_CLEAR(info->curr_task_frame);\n        info->metadata_node->thread_info = NULL;\n        PyMem_FREE(info);\n        PyGILState_Release(state);\n    }\n}\n\n// =============================================================================\n// Tracing function, triggered when FEE\n// =============================================================================\n\n// This function is called before we actually start tracing.\n//   * Prepare the thread info and create one if not exist\n//   * Check if we should trace based on all the flags\n//     * -1: Error\n//     * 0: Not trace\n//     * 1: Trace\nint\nprepare_before_trace(TracerObject* self, int is_call, struct ThreadInfo** info_out) {\n\n    if (!self->collecting) {\n        return 0;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        self->collecting = 0;\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to create thread info. This should not happen.\");\n        return -1;\n    }\n\n    *info_out = info;\n\n    if (info->paused) {\n        return 0;\n    }\n\n    if (info->ignore_stack_depth > 0) {\n        return 0;\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_MAX_STACK_DEPTH)) {\n        if (is_call) {\n            if (info->curr_stack_depth >= self->max_stack_depth) {\n                return 0;\n            }\n        } else {\n            if (info->curr_stack_depth > 0) {\n                if (info->curr_stack_depth > self->max_stack_depth) {\n                    return 0;\n                }\n            }\n        }\n    }\n\n    return 1;\n}\n\nint\ntracer_pycall_callback(TracerObject* self, PyCodeObject* code)\n{\n    struct ThreadInfo* info = NULL;\n\n    if (prepare_before_trace(self, 1, &info) <= 0) {\n        // For now we think -1 and 0 should both return because we should not\n        // have the -1 case.\n        goto cleanup_ignore;\n    }\n\n    PyObject* co_filename = code->co_filename;\n\n    if (!CHECK_FLAG(self->check_flags, SNAPTRACE_TRACE_SELF)) {\n        if (self->lib_file_path && co_filename && PyUnicode_Check(co_filename) &&\n                startswith(PyUnicode_AsUTF8(co_filename), self->lib_file_path)) {\n            goto cleanup_ignore;\n        }\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_INCLUDE_FILES | SNAPTRACE_EXCLUDE_FILES)) {\n        if (info->ignore_stack_depth == 0) {\n            PyObject* files = NULL;\n            int record = 0;\n            int is_include = CHECK_FLAG(self->check_flags, SNAPTRACE_INCLUDE_FILES);\n            if (is_include) {\n                files = self->include_files;\n                record = 0;\n            } else {\n                files = self->exclude_files;\n                record = 1;\n            }\n            Py_ssize_t length = PyList_GET_SIZE(files);\n            for (int i = 0; i < length; i++) {\n                PyObject* f = PyList_GET_ITEM(files, i);\n                if (startswith(PyUnicode_AsUTF8(co_filename), PyUnicode_AsUTF8(f))) {\n                    record = 1 - record;\n                    break;\n                }\n            }\n            if (record == 0) {\n                goto cleanup_ignore;\n            }\n        } else {\n            goto cleanup_ignore;\n        }\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_FROZEN)) {\n        if (startswith(PyUnicode_AsUTF8(co_filename), \"<frozen\")) {\n            goto cleanup_ignore;\n        }\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC) &&\n            info->curr_task == NULL &&\n            (code->co_flags & CO_COROUTINE) != 0) {\n        PyObject* curr_task = Py_None;\n        info->paused = 1;\n        for (size_t i = 0; i < sizeof(curr_task_getters)/sizeof(curr_task_getters[0]); i++) {\n            if (curr_task_getters[i] != NULL) {\n                curr_task = PyObject_CallNoArgs(curr_task_getters[i]);\n                if (!curr_task) {\n                    PyErr_Clear();  // RuntimeError, probably\n                    curr_task = Py_None;\n                } else if (curr_task != Py_None) {\n                    break;  // got a valid task\n                }\n            }\n        }\n        info->paused = 0;\n        info->curr_task = Py_NewRef(curr_task);\n        info->curr_task_frame = (PyFrameObject*)Py_NewRef(PyEval_GetFrame());\n    }\n\n    // If it's a call, we need a new node, and we need to update the stack\n    if (!info->stack_top->next) {\n        info->stack_top->next = (struct FunctionNode*) PyMem_Calloc(1, sizeof(struct FunctionNode));\n        info->stack_top->next->prev = info->stack_top;\n    }\n    info->stack_top = info->stack_top->next;\n    info->stack_top->ts = get_ts();\n    info->stack_top->func = Py_NewRef(code);\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_FUNCTION_ARGS)) {\n        log_func_args(info->stack_top, PyEval_GetFrame(), self->log_func_repr);\n    }\n\n    info->curr_stack_depth += 1;\n\n    return 0;\n\ncleanup_ignore:\n\n    if (info) {\n        info->ignore_stack_depth += 1;\n        info->curr_stack_depth += 1;\n    }\n\n    return 0;\n}\n\nint\ntracer_ccall_callback(TracerObject* self, PyCodeObject* code, PyObject* arg)\n{\n    struct ThreadInfo* info = NULL;\n\n    if (prepare_before_trace(self, 1, &info) <= 0) {\n        // For now we think -1 and 0 should both return because we should not\n        // have the -1 case.\n        goto cleanup_ignore;\n    }\n\n    PyCFunctionObject* cfunc = (PyCFunctionObject*) arg;\n\n    if (cfunc->m_self == (PyObject*)self) {\n        goto cleanup_ignore;\n    }\n\n    // If it's a call, we need a new node, and we need to update the stack\n    if (!info->stack_top->next) {\n        info->stack_top->next = (struct FunctionNode*) PyMem_Calloc(1, sizeof(struct FunctionNode));\n        info->stack_top->next->prev = info->stack_top;\n    }\n    info->stack_top = info->stack_top->next;\n    info->stack_top->ts = get_ts();\n    info->stack_top->func = Py_NewRef(arg);\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_FUNCTION_ARGS)) {\n        log_func_args(info->stack_top, PyEval_GetFrame(), self->log_func_repr);\n    }\n\n    info->curr_stack_depth += 1;\n\n    return 0;\n\ncleanup_ignore:\n\n    if (info) {\n        info->ignore_stack_depth += 1;\n        info->curr_stack_depth += 1;\n    }\n\n    return 0;\n}\n\nint\ntracer_pyreturn_callback(TracerObject* self, PyCodeObject* code, PyObject* arg)\n{\n    struct ThreadInfo* info = NULL;\n\n    if (prepare_before_trace(self, 0, &info) <= 0) {\n        // For now we think -1 and 0 should both return because we should not\n        // have the -1 case.\n        goto cleanup_ignore;\n    }\n\n    struct FunctionNode* stack_top = info->stack_top;\n    if (stack_top->prev) {\n        // if stack_top has prev, it's not the fake node so it's at least root\n        int64_t dur = get_ts() - info->stack_top->ts;\n        int log_this_entry = self->min_duration == 0 || dur_ts_to_ns(dur) >= self->min_duration;\n\n        if (log_this_entry) {\n            PyCodeObject* call_code = (PyCodeObject*) stack_top->func;\n\n            if (!PyCode_Check(call_code) || call_code != code) {\n                self->collecting = 0;\n                PyErr_WarnEx(PyExc_RuntimeWarning,\n                    \"VizTracer: Unexpected function return, tracing is stopped\", 1);\n                return 0;\n            }\n\n            struct EventNode* node = get_next_node(self);\n\n            node->ntype = FEE_NODE;\n            node->ts = info->stack_top->ts;\n            node->data.fee.dur = dur;\n            node->tid = info->tid;\n            node->data.fee.type = PyTrace_RETURN;\n            node->data.fee.code = (PyCodeObject*)Py_NewRef(code);\n            // steal the reference when return\n            node->data.fee.args = Py_XNewRef(stack_top->args);\n            if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_RETURN_VALUE)) {\n                PyObject* repr = NULL;\n                if (self->log_func_repr) {\n                    repr = PyObject_CallOneArg(self->log_func_repr, arg);\n                } else {\n                    repr = PyObject_Repr(arg);\n                }\n                if (!repr) {\n                    repr = PyUnicode_FromString(\"Not Displayable\");\n                    PyErr_Clear();\n                }\n                node->data.fee.retval = repr;\n            }\n\n            if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n                node->data.fee.asyncio_task = Py_XNewRef(info->curr_task);\n            }\n        }\n        // Finish return whether to log the data\n        info->stack_top = info->stack_top->prev;\n\n        Py_CLEAR(stack_top->args);\n        Py_CLEAR(stack_top->func);\n\n        if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC) &&\n                info->curr_task &&\n                PyEval_GetFrame() == info->curr_task_frame) {\n            Py_CLEAR(info->curr_task);\n            Py_CLEAR(info->curr_task_frame);\n        }\n    }\n\n    if (info->curr_stack_depth > 0) {\n        info->curr_stack_depth -= 1;\n    } \n\n    return 0;\n\ncleanup_ignore:\n\n    if (info) {\n        if (info->curr_stack_depth > 0) {\n            info->curr_stack_depth -= 1;\n        }\n\n        if (info->ignore_stack_depth > 0) {\n            info->ignore_stack_depth -= 1;\n        }\n    }\n\n    return 0;\n}\n\nint\ntracer_creturn_callback(TracerObject* self, PyCodeObject* code, PyObject* arg)\n{\n    struct ThreadInfo* info = NULL;\n\n    if (prepare_before_trace(self, 0, &info) <= 0) {\n        // For now we think -1 and 0 should both return because we should not\n        // have the -1 case.\n        goto cleanup_ignore;\n    }\n\n    struct FunctionNode* stack_top = info->stack_top;\n    if (stack_top->prev) {\n        // if stack_top has prev, it's not the fake node so it's at least root\n        int64_t dur = get_ts() - info->stack_top->ts;\n        int log_this_entry = self->min_duration == 0 || dur_ts_to_ns(dur) >= self->min_duration;\n\n        if (log_this_entry) {\n            PyCFunctionObject* cfunc = (PyCFunctionObject*) stack_top->func;\n\n            if (!PyCFunction_Check(cfunc)) {\n                self->collecting = 0;\n                PyErr_WarnEx(PyExc_RuntimeWarning,\n                    \"VizTracer: Unexpected function return, tracing is stopped\", 1);\n                return 0;\n            }\n\n            struct EventNode* node = get_next_node(self);\n\n            node->ntype = FEE_NODE;\n            node->ts = info->stack_top->ts;\n            node->data.fee.dur = dur;\n            node->tid = info->tid;\n            node->data.fee.type = PyTrace_C_RETURN;\n            node->data.fee.ml_name = cfunc->m_ml->ml_name;\n            if (cfunc->m_module) {\n                // The function belongs to a module\n                node->data.fee.m_module = Py_NewRef(cfunc->m_module);\n            } else {\n                // The function is a class method\n                node->data.fee.m_module = NULL;\n                if (cfunc->m_self) {\n                    // It's not a static method, has __self__\n                    node->data.fee.tp_name = cfunc->m_self->ob_type->tp_name;\n                } else {\n                    // It's a static method, does not have __self__\n                    node->data.fee.tp_name = NULL;\n                }\n            }\n\n            if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n                node->data.fee.asyncio_task = Py_XNewRef(info->curr_task);\n            }\n        }\n        // Finish return whether to log the data\n        info->stack_top = info->stack_top->prev;\n\n        Py_CLEAR(stack_top->args);\n        Py_CLEAR(stack_top->func);\n    }\n\n\n    if (info->curr_stack_depth > 0) {\n        info->curr_stack_depth -= 1;\n    }\n\n    return 0;\n\ncleanup_ignore:\n\n    if (info) {\n        if (info->curr_stack_depth > 0) {\n            info->curr_stack_depth -= 1;\n        }\n\n        if (info->ignore_stack_depth > 0) {\n            info->ignore_stack_depth -= 1;\n        }\n    }\n\n    return 0;\n}\n\n// sys.setprofile mechanism\n\nint\ntracer_tracefunc(PyObject* obj, PyFrameObject* frame, int what, PyObject* arg)\n{\n    TracerObject* self = (TracerObject*) obj;\n    int ret = 0;\n    \n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION) &&\n            (what == PyTrace_C_CALL || what == PyTrace_C_RETURN || what == PyTrace_C_EXCEPTION)) {\n        return 0;\n    }\n\n    PyCodeObject* code = PyFrame_GetCode(frame);\n\n    switch (what) {\n    case PyTrace_CALL:\n        ret = tracer_pycall_callback(self, code);\n        break;\n    case PyTrace_C_CALL:\n        ret = tracer_ccall_callback(self, code, arg);\n        break;\n    case PyTrace_RETURN:\n        ret = tracer_pyreturn_callback(self, code, arg);\n        break;\n    case PyTrace_C_RETURN:\n    case PyTrace_C_EXCEPTION:\n        ret = tracer_creturn_callback(self, code, arg);\n        break;\n    default:\n        return 0;\n    }\n\n    Py_DECREF(code);\n\n    return ret;\n}\n\nstatic PyObject*\ntracer_threadtracefunc(PyObject* obj, PyObject* args) \n{\n    PyFrameObject* frame = NULL;\n    char* event = NULL;\n    PyObject* trace_args = NULL;\n    int what = 0;\n    if (!PyArg_ParseTuple(args, \"OsO\", &frame, &event, &trace_args)) {\n        printf(\"Error when parsing arguments!\\n\");\n        exit(1);\n    }\n    PyEval_SetProfile(tracer_tracefunc, obj);\n    if (!strcmp(event, \"call\")) {\n        what = PyTrace_CALL;\n    } else if (!strcmp(event, \"c_call\")) {\n        what = PyTrace_C_CALL;\n    } else if (!strcmp(event, \"return\")) {\n        what = PyTrace_RETURN;\n    } else if (!strcmp(event, \"c_return\")) {\n        what = PyTrace_C_RETURN;\n    } else if (!strcmp(event, \"c_exception\")) {\n        what = PyTrace_C_EXCEPTION;\n    } else {\n        printf(\"Unexpected event type: %s\\n\", event);\n    }\n    tracer_tracefunc(obj, frame, what, trace_args);\n    Py_RETURN_NONE;\n}\n\n// sys.monitoring mechanism\n\nPyObject* get_cfunc_from_callable(PyObject* callable, PyObject* self_arg)\n{\n    // return a new reference\n    if (PyCFunction_Check(callable)) {\n        Py_INCREF(callable);\n        return (PyObject*)((PyCFunctionObject*)callable);\n    }\n    if (Py_TYPE(callable) == &PyMethodDescr_Type) {\n        /* For backwards compatibility need to\n         * convert to builtin method */\n\n        /* If no arg, skip */\n        if (self_arg == sys_monitoring_missing) {\n            return NULL;\n        }\n        PyObject* meth = Py_TYPE(callable)->tp_descr_get(\n            callable, self_arg, (PyObject*)Py_TYPE(self_arg));\n        if (meth == NULL) {\n            return NULL;\n        }\n        if (PyCFunction_Check(meth)) {\n            return (PyObject*)((PyCFunctionObject*)meth);\n        }\n    } else if (Py_TYPE(callable) == &PyMethod_Type) {\n        PyObject* func = PyMethod_GET_FUNCTION(callable);\n        if (func && PyCFunction_Check(func)) {\n            Py_INCREF(func);\n            return func;\n        }\n    }\n    return NULL;\n}\n\nPyObject*\n_pystart_callback(PyObject* self, PyObject *const *args, Py_ssize_t nargs)\n{\n    PyCodeObject* code = (PyCodeObject*)args[0];\n    int ret = tracer_pycall_callback((TracerObject*)self, code);\n    if (ret != 0) {\n        return NULL;\n    }\n    Py_RETURN_NONE;\n}\n\nPyObject*\n_pyreturn_callback(PyObject* self, PyObject *const *args, Py_ssize_t nargs)\n{\n    PyCodeObject* code = (PyCodeObject*)args[0];\n    PyObject* arg = args[2];\n    int ret = tracer_pyreturn_callback((TracerObject*)self, code, arg);\n    if (ret != 0) {\n        return NULL;\n    }\n    Py_RETURN_NONE;\n}\n\nPyObject*\n_ccall_callback(PyObject* self, PyObject *const *args, Py_ssize_t nargs)\n{\n    PyCodeObject* code = (PyCodeObject*)args[0];\n    PyObject* cfunc = get_cfunc_from_callable(args[2], args[3]);\n    if (!cfunc) {\n        Py_RETURN_NONE;\n    }\n    int ret = tracer_ccall_callback((TracerObject*)self, code, cfunc);\n    Py_DECREF(cfunc);\n    if (ret != 0) {\n        return NULL;\n    }\n    Py_RETURN_NONE;\n}\n\nPyObject*\n_creturn_callback(PyObject* self, PyObject *const *args, Py_ssize_t nargs)\n{\n    PyCodeObject* code = (PyCodeObject*)args[0];\n    PyObject* cfunc = get_cfunc_from_callable(args[2], args[3]);\n    if (!cfunc) {\n        Py_RETURN_NONE;\n    }\n    int ret = tracer_creturn_callback((TracerObject*)self, code, cfunc);\n    Py_DECREF(cfunc);\n    if (ret != 0) {\n        return NULL;\n    }\n    Py_RETURN_NONE;\n}\n\nstatic struct {\n    unsigned int event;\n    PyMethodDef callback_method;\n} callback_table[] = {\n    {PY_MONITORING_EVENT_PY_START,\n        {\"_pystart_callback\", (PyCFunction)_pystart_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_PY_RESUME,\n        {\"_pystart_callback\", (PyCFunction)_pystart_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_PY_THROW,\n        {\"_pystart_callback\", (PyCFunction)_pystart_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_PY_RETURN,\n        {\"_pyreturn_callback\", (PyCFunction)_pyreturn_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_PY_YIELD,\n        {\"_pyreturn_callback\", (PyCFunction)_pyreturn_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_PY_UNWIND,\n        {\"_pyreturn_callback\", (PyCFunction)_pyreturn_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_CALL,\n        {\"_ccall_callback\", (PyCFunction)_ccall_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_C_RETURN,\n        {\"_creturn_callback\", (PyCFunction)_creturn_callback, METH_FASTCALL, NULL}},\n    {PY_MONITORING_EVENT_C_RAISE,\n        {\"_creturn_callback\", (PyCFunction)_creturn_callback, METH_FASTCALL, NULL}},\n    {0,\n        {NULL, NULL, 0, NULL}}\n};\n\nint\nenable_monitoring(TracerObject* self)\n{\n    unsigned int all_events = 0;\n    PyObject* monitoring = PyObject_GetAttrString(sys_module, \"monitoring\");\n    if (!monitoring) {\n        PyErr_SetString(PyExc_RuntimeError, \"Failed to access sys.monitoring\");\n        goto cleanup;\n    }\n\n    PyObject* ret = PyObject_CallMethod(monitoring, \"use_tool_id\",\n                                        \"is\", SNAPTRACE_TOOL_ID, \"viztracer\");\n    if (!ret) {\n        PyErr_Clear();\n        PyObject_CallMethod(monitoring, \"free_tool_id\", \"i\", SNAPTRACE_TOOL_ID);\n        ret = PyObject_CallMethod(monitoring, \"use_tool_id\",\n                                  \"is\", SNAPTRACE_TOOL_ID, \"viztracer\");\n        if (!ret) {\n            goto cleanup;\n        }\n    }\n    Py_DECREF(ret);\n\n    for (int i = 0; callback_table[i].callback_method.ml_meth != 0; i++) {\n        if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION) && \n                (callback_table[i].event == PY_MONITORING_EVENT_CALL ||\n                 callback_table[i].event == PY_MONITORING_EVENT_C_RETURN ||\n                 callback_table[i].event == PY_MONITORING_EVENT_C_RAISE)) {\n            continue;\n        }\n        unsigned int event = (1 << callback_table[i].event);\n        PyObject* callback = PyCFunction_New(&callback_table[i].callback_method, (PyObject*)self);\n\n        PyObject* regsiter_result = PyObject_CallMethod(monitoring, \"register_callback\",\n                                                        \"iiO\", SNAPTRACE_TOOL_ID, event, callback);\n        Py_DECREF(callback);\n\n        if (!regsiter_result) {\n            goto cleanup;\n        }\n        Py_DECREF(regsiter_result);\n        all_events |= event;\n    }\n\n    PyObject* event_result = PyObject_CallMethod(monitoring, \"set_events\",\n                                                 \"ii\", SNAPTRACE_TOOL_ID, all_events);\n    if (!event_result) {\n        goto cleanup;\n    }\n    Py_DECREF(event_result);\n\ncleanup:\n\n    Py_XDECREF(monitoring);\n\n    if (PyErr_Occurred()) {\n        return -1;\n    }\n\n    return 0;\n}\n\nint disable_monitoring(TracerObject* self)\n{\n    PyObject* monitoring = PyObject_GetAttrString(sys_module, \"monitoring\");\n    if (!monitoring) {\n        PyErr_SetString(PyExc_RuntimeError, \"Failed to access sys.monitoring\");\n        goto cleanup;\n    }\n\n    PyObject* curr_tool = PyObject_CallMethod(monitoring, \"get_tool\", \"i\", SNAPTRACE_TOOL_ID);\n\n    if (!curr_tool) {\n        goto cleanup;\n    }\n\n    if (curr_tool == Py_None) {\n        // No current tool, nothing to do\n        Py_DECREF(curr_tool);\n        goto cleanup;\n    }\n\n    PyObject* event_result = PyObject_CallMethod(monitoring, \"set_events\",\n                                                 \"ii\", SNAPTRACE_TOOL_ID, 0);\n    if (!event_result) {\n        goto cleanup;\n    }\n    Py_DECREF(event_result);\n\n    for (int i = 0; callback_table[i].callback_method.ml_meth != 0; i++) {\n        if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION) && \n                (callback_table[i].event == PY_MONITORING_EVENT_CALL ||\n                 callback_table[i].event == PY_MONITORING_EVENT_C_RETURN ||\n                 callback_table[i].event == PY_MONITORING_EVENT_C_RAISE)) {\n            continue;\n        }\n        unsigned int event = (1 << callback_table[i].event);\n\n        PyObject* regsiter_result = PyObject_CallMethod(monitoring, \"register_callback\",\n                                                        \"iiO\", SNAPTRACE_TOOL_ID, event, Py_None);\n        if (!regsiter_result) {\n            goto cleanup;\n        }\n        Py_DECREF(regsiter_result);\n    }\n\n    PyObject* ret = PyObject_CallMethod(monitoring, \"free_tool_id\",\n                                        \"i\", SNAPTRACE_TOOL_ID);\n    if (!ret) {\n        goto cleanup;\n    }\n    Py_DECREF(ret);\n\ncleanup:\n\n    Py_XDECREF(monitoring);\n\n    if (PyErr_Occurred()) {\n        return -1;\n    }\n\n    return 0;\n}\n\n// =============================================================================\n// snaptrace.Tracer methods\n// =============================================================================\n\nstatic void\ntracer__flush_unfinished(TracerObject* self, int flush_as_finish)\n{\n    SNAPTRACE_THREAD_PROTECT_START(self);\n\n    struct MetadataNode* meta_node = self->metadata_head;\n    while(meta_node) {\n        struct ThreadInfo* info = meta_node->thread_info;\n\n        if (info == NULL) {\n            meta_node = meta_node->next;\n            continue;\n        }\n\n        struct FunctionNode* func_node = info->stack_top;\n\n        while (func_node->prev && info->curr_stack_depth > 0) {\n            // Fake a FEE node to get the name\n            struct EventNode* fee_node = get_next_node(self);\n\n            fee_node->ntype = FEE_NODE;\n            fee_node->ts = func_node->ts;\n            fee_node->tid = meta_node->tid;\n\n            if (flush_as_finish) {\n                fee_node->data.fee.dur = get_ts() - func_node->ts;\n            } else {\n                fee_node->data.fee.dur = 0;\n            }\n\n            if (PyCode_Check(func_node->func)) {\n                PyCodeObject* code = (PyCodeObject*) func_node->func;\n                if (flush_as_finish) {\n                    fee_node->data.fee.type = PyTrace_RETURN;\n                } else {\n                    fee_node->data.fee.type = PyTrace_CALL;\n                }\n                fee_node->data.fee.code = (PyCodeObject*)Py_NewRef(code);\n            } else if (PyCFunction_Check(func_node->func)) {\n                PyCFunctionObject* cfunc = (PyCFunctionObject*) func_node->func;\n                if (flush_as_finish) {\n                    fee_node->data.fee.type = PyTrace_C_RETURN;\n                } else {\n                    fee_node->data.fee.type = PyTrace_C_CALL;\n                }\n                fee_node->data.fee.ml_name = cfunc->m_ml->ml_name;\n                if (cfunc->m_module) {\n                    // The function belongs to a module\n                    fee_node->data.fee.m_module = Py_NewRef(cfunc->m_module);\n                } else {\n                    // The function is a class method\n                    fee_node->data.fee.m_module = NULL;\n                    if (cfunc->m_self) {\n                        // It's not a static method, has __self__\n                        fee_node->data.fee.tp_name = cfunc->m_self->ob_type->tp_name;\n                    } else {\n                        // It's a static method, does not have __self__\n                        fee_node->data.fee.tp_name = NULL;\n                    }\n                }\n            }\n\n            // Clean up the node\n            Py_CLEAR(func_node->args);\n            Py_CLEAR(func_node->func);\n\n            func_node = func_node->prev;\n            info->curr_stack_depth -= 1;\n        }\n        info->stack_top = func_node;\n        meta_node = meta_node->next;\n    }\n\n    SNAPTRACE_THREAD_PROTECT_END(self);\n}\n\nstatic PyObject*\ntracer_start(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    if (curr_tracer) {\n        printf(\"Warning! Overwrite tracer! You should not have two VizTracer recording at the same time!\\n\");\n    } else {\n        curr_tracer = self;\n    }\n\n    self->collecting = 1;\n#if PY_VERSION_HEX >= 0x030C0000\n    if (enable_monitoring(self) != 0) {\n        return NULL;\n    };\n#else\n    // Python: threading.setprofile(tracefunc)\n    {\n        static PyMethodDef ml = {\"threadtracefunc\", (PyCFunction)tracer_threadtracefunc, METH_VARARGS, \"trace function\"};\n        PyObject* handler = PyCFunction_New(&ml, (PyObject*)self);\n\n        if (PyObject_CallMethod(threading_module, \"setprofile\", \"N\", handler) == NULL) {\n            perror(\"Failed to call threading.setprofile() properly\");\n            exit(-1);\n        }\n    }\n    PyEval_SetProfile(tracer_tracefunc, (PyObject*)self);\n#endif\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_stop(TracerObject* self, PyObject* stop_option)\n{\n    if (self) {\n        struct ThreadInfo* info = get_thread_info(self);\n        if (!info) {\n            self->collecting = 0;\n            PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n            return NULL;\n        }\n        self->collecting = 0;\n\n        if (PyUnicode_CheckExact(stop_option) &&\n                strcmp(PyUnicode_AsUTF8(stop_option), \"flush_as_finish\") == 0) {\n            tracer__flush_unfinished(self, 1);\n        } else {\n            tracer__flush_unfinished(self, 0);\n        }\n        info->curr_stack_depth = 0;\n        info->ignore_stack_depth = 0;\n        info->paused = 0;\n    }\n\n    curr_tracer = NULL;\n#if PY_VERSION_HEX >= 0x030C0000\n    if (disable_monitoring(self) != 0) {\n        return NULL;\n    }\n#else\n    PyEval_SetProfile(NULL, NULL);\n    // threading.setprofile(None)\n    PyObject* result = PyObject_CallMethod(threading_module, \"setprofile\", \"O\", Py_None);\n    if (result != NULL) {\n        Py_DECREF(result);\n    }\n#endif\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_pause(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    if (self->collecting) {\n        struct ThreadInfo* info = get_thread_info((TracerObject*)self);\n        if (!info) {\n            self->collecting = 0;\n            PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n            return NULL;\n        }\n\n        if (!info->paused) {\n            // When we enter this function, tracer.pause has been called.\n            // We need to reduce the ignore_stack_depth to simulate the\n            // returns from these two functions\n            info->ignore_stack_depth -= 1;\n            info->paused = 1;\n#if PY_VERSION_HEX >= 0x030C0000\n            if (disable_monitoring(self) != 0) {\n                return NULL;\n            }\n#else\n            PyEval_SetProfile(NULL, NULL);\n#endif\n        }\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_resume(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    if (self->collecting) {\n        struct ThreadInfo* info = get_thread_info(self);\n        if (!info) {\n            self->collecting = 0;\n            PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n            return NULL;\n        }\n\n        if (info->paused) {\n            info->paused = 0;\n#if PY_VERSION_HEX >= 0x030C0000\n            if (enable_monitoring(self) != 0) {\n                return NULL;\n            }\n#else\n            PyEval_SetProfile(tracer_tracefunc, (PyObject*)self);\n#endif\n        }\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_load(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    PyObject* lst = PyList_New(0);\n\n    SNAPTRACE_THREAD_PROTECT_START(self);\n    struct EventNode* curr = self->buffer + self->buffer_head_idx;\n    PyObject* pid = NULL;\n    PyObject* cat_fee = PyUnicode_FromString(\"FEE\");\n    PyObject* cat_instant = PyUnicode_FromString(\"INSTANT\");\n    PyObject* ph_B = PyUnicode_FromString(\"B\");\n    PyObject* ph_i = PyUnicode_FromString(\"i\");\n    PyObject* ph_X = PyUnicode_FromString(\"X\");\n    PyObject* ph_C = PyUnicode_FromString(\"C\");\n    PyObject* ph_M = PyUnicode_FromString(\"M\");\n\n    PyObject* key_ph = PyUnicode_FromString(\"ph\");\n    PyObject* key_cat = PyUnicode_FromString(\"cat\");\n    PyObject* key_pid = PyUnicode_FromString(\"pid\");\n    PyObject* key_tid = PyUnicode_FromString(\"tid\");\n    PyObject* key_ts = PyUnicode_FromString(\"ts\");\n    PyObject* key_dur = PyUnicode_FromString(\"dur\");\n    PyObject* key_name = PyUnicode_FromString(\"name\");\n    PyObject* key_args = PyUnicode_FromString(\"args\");\n    PyObject* key_s = PyUnicode_FromString(\"s\");\n    PyObject* key_id = PyUnicode_FromString(\"id\");\n    PyObject* key_return_value = PyUnicode_FromString(\"return_value\");\n\n    unsigned long counter = 0;\n    unsigned long prev_counter = 0;\n    struct MetadataNode* metadata_node = NULL;\n    PyObject* task_dict = NULL;\n    PyObject* func_name_dict = PyDict_New();\n\n    if (self->fix_pid > 0) {\n        pid = PyLong_FromLong(self->fix_pid);\n    } else {\n#if _WIN32\n        pid = PyLong_FromLong(GetCurrentProcessId());\n#else\n        pid = PyLong_FromLong(getpid());\n#endif\n    }\n\n    // == Load the metadata first ==\n    //    Process Name\n    {\n        PyObject* dict = PyDict_New();\n        PyObject* args = PyDict_New();\n        PyObject* process_name_string = PyUnicode_FromString(\"process_name\");\n        PyObject* process_name = NULL;\n\n        if (self->process_name) {\n            process_name = Py_NewRef(self->process_name);\n        } else {\n            PyObject* current_process_method = PyObject_GetAttrString(multiprocessing_module, \"current_process\");\n            if (!current_process_method) {\n                perror(\"Failed to access multiprocessing.current_process()\");\n                exit(-1);\n            }\n            PyObject* current_process = PyObject_CallNoArgs(current_process_method);\n            if (!current_process_method) {\n                perror(\"Failed to access multiprocessing.current_process()\");\n                exit(-1);\n            }\n            process_name = PyObject_GetAttrString(current_process, \"name\");\n            Py_DECREF(current_process_method);\n            Py_DECREF(current_process);\n        }\n        \n        PyDict_SetItem(dict, key_ph, ph_M);\n        PyDict_SetItem(dict, key_pid, pid);\n        PyDict_SetItem(dict, key_tid, pid);\n        PyDict_SetItem(dict, key_name, process_name_string);\n        Py_DECREF(process_name_string);\n        PyDict_SetItem(args, key_name, process_name);\n        PyDict_SetItem(dict, key_args, args);\n        Py_DECREF(args);\n        Py_DECREF(process_name);\n        PyList_Append(lst, dict);\n        Py_DECREF(dict);\n    }\n\n    \n    //    Thread Name\n    metadata_node = self->metadata_head;\n    while (metadata_node) {\n        PyObject* dict = PyDict_New();\n        PyObject* args = PyDict_New();\n        PyObject* tid = PyLong_FromLong(metadata_node->tid);\n        PyObject* thread_name_string = PyUnicode_FromString(\"thread_name\");\n\n        PyDict_SetItem(dict, key_ph, ph_M);\n        PyDict_SetItem(dict, key_pid, pid);\n        PyDict_SetItem(dict, key_tid, tid);\n        Py_DECREF(tid);\n        PyDict_SetItem(dict, key_name, thread_name_string);\n        Py_DECREF(thread_name_string);\n        PyDict_SetItem(args, key_name, metadata_node->name);\n        PyDict_SetItem(dict, key_args, args);\n        Py_DECREF(args);\n        metadata_node = metadata_node->next;\n        PyList_Append(lst, dict);\n        Py_DECREF(dict);\n    }\n\n    // Task Name if using LOG_ASYNC\n    // We need to make up some thread id for the task\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n        task_dict = PyDict_New();\n    }\n\n    while (curr != self->buffer + self->buffer_tail_idx) {\n        struct EventNode* node = curr;\n        PyObject* dict = PyDict_New();\n        PyObject* name = NULL;\n        PyObject* tid = PyLong_FromLong(node->tid);\n        PyObject* ts = PyFloat_FromDouble(system_ts_to_us(node->ts));\n\n        PyDict_SetItem(dict, key_pid, pid);\n        if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n            if (curr->data.fee.asyncio_task == NULL) {\n                PyDict_SetItem(dict, key_tid, tid);\n            } else {\n                PyObject* task_id = PyLong_FromUnsignedLongLong(((uintptr_t)curr->data.fee.asyncio_task) & 0xffffff);\n                PyDict_SetItem(dict, key_tid, task_id);\n                if (!PyDict_Contains(task_dict, task_id)) {\n                    PyObject* task_name = NULL;\n                    if (PyObject_HasAttrString(curr->data.fee.asyncio_task, \"get_name\")) {\n                        PyObject* task_name_method = PyObject_GetAttrString(curr->data.fee.asyncio_task, \"get_name\");\n                        task_name = PyObject_CallNoArgs(task_name_method);\n                        Py_DECREF(task_name_method);\n                    } else if (PyObject_HasAttrString(curr->data.fee.asyncio_task, \"name\")) {\n                        task_name = PyObject_GetAttrString(curr->data.fee.asyncio_task, \"name\");\n                    } else {\n                        task_name = PyUnicode_FromString(\"Task\");\n                    }\n                    PyDict_SetItem(task_dict, task_id, task_name);\n                    Py_DECREF(task_name);\n                }\n                Py_DECREF(task_id);\n            }\n        } else {\n            PyDict_SetItem(dict, key_tid, tid);\n        }\n        Py_DECREF(tid);\n        PyDict_SetItem(dict, key_ts, ts);\n        Py_DECREF(ts);\n\n        switch (node->ntype) {\n        case FEE_NODE:\n            name = get_name_from_fee_node(node, func_name_dict);\n\n            if (node->data.fee.type == PyTrace_CALL || node->data.fee.type == PyTrace_C_CALL) {\n                PyDict_SetItem(dict, key_ph, ph_B);\n            } else {\n                PyDict_SetItem(dict, key_ph, ph_X);\n                PyObject* dur = PyFloat_FromDouble(dur_ts_to_us(node->data.fee.dur));\n                PyDict_SetItem(dict, key_dur, dur);\n                Py_DECREF(dur);\n            }\n            PyDict_SetItem(dict, key_name, name);\n            Py_DECREF(name);\n\n            PyObject* arg_dict = Py_XNewRef(node->data.fee.args);\n            if (node->data.fee.retval) {\n                if (!arg_dict) {\n                    arg_dict = PyDict_New();\n                }\n                PyDict_SetItem(arg_dict, key_return_value, node->data.fee.retval);\n            }\n            if (arg_dict) {\n                PyDict_SetItem(dict, key_args, arg_dict);\n                Py_DECREF(arg_dict);\n            }\n\n            PyDict_SetItem(dict, key_cat, cat_fee);\n            break;\n        case INSTANT_NODE:\n            PyDict_SetItem(dict, key_ph, ph_i);\n            PyDict_SetItem(dict, key_cat, cat_instant);\n            PyDict_SetItem(dict, key_name, node->data.instant.name);\n            PyDict_SetItem(dict, key_args, node->data.instant.args);\n            PyDict_SetItem(dict, key_s, node->data.instant.scope);\n            break;\n        case COUNTER_NODE:\n            PyDict_SetItem(dict, key_ph, ph_C);\n            PyDict_SetItem(dict, key_name, node->data.counter.name);\n            PyDict_SetItem(dict, key_args, node->data.counter.args);\n            break;\n        case OBJECT_NODE:\n            PyDict_SetItem(dict, key_ph, node->data.object.ph);\n            PyDict_SetItem(dict, key_id, node->data.object.id);\n            PyDict_SetItem(dict, key_name, node->data.object.name);\n            if (!(node->data.object.args == Py_None)) {\n                PyDict_SetItem(dict, key_args, node->data.object.args);\n            }\n            break;\n        case RAW_NODE:\n            // We still need to tid from node and we need the pid\n            tid = PyLong_FromLong(node->tid);\n\n            Py_DECREF(dict);\n            dict = node->data.raw;\n\n            PyDict_SetItem(dict, key_pid, pid);\n            PyDict_SetItem(dict, key_tid, tid);\n            Py_DECREF(tid);\n\n            Py_INCREF(dict);\n            break;\n        default:\n            printf(\"Unknown Node Type!\\n\");\n            exit(1);\n        }\n        clear_node(node);\n        PyList_Append(lst, dict);\n        Py_DECREF(dict);\n        curr = curr + 1;\n        if (curr == self->buffer + self->buffer_size) {\n            curr = self->buffer;\n        }\n\n        counter += 1;\n        if (counter - prev_counter > 10000 && (counter - prev_counter) / ((1 + self->total_entries)/100) > 0) {\n            verbose_printf(self, 1, \"Loading data, %lu / %lu\\r\", counter, self->total_entries);\n            prev_counter = counter;\n        }\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n        Py_ssize_t pos = 0;\n        PyObject* key = NULL;\n        PyObject* value = NULL;\n        while (PyDict_Next(task_dict, &pos, &key, &value)) {\n            PyObject* dict = PyDict_New();\n            PyObject* args = PyDict_New();\n            PyObject* tid = key;\n            PyObject* thread_name_string = PyUnicode_FromString(\"thread_name\");\n\n            PyDict_SetItem(dict, key_ph, ph_M);\n            PyDict_SetItem(dict, key_pid, pid);\n            PyDict_SetItem(dict, key_tid, tid);\n            PyDict_SetItem(dict, key_name, thread_name_string);\n            Py_DECREF(thread_name_string);\n            PyDict_SetItem(args, key_name, value);\n            PyDict_SetItem(dict, key_args, args);\n            Py_DECREF(args);\n            PyList_Append(lst, dict);\n        }\n    }\n\n    verbose_printf(self, 1, \"Loading finish                                        \\n\");\n    Py_DECREF(pid);\n    Py_DECREF(cat_fee);\n    Py_DECREF(cat_instant);\n    Py_DECREF(ph_B);\n    Py_DECREF(ph_i);\n    Py_DECREF(ph_X);\n    Py_DECREF(ph_C);\n    Py_DECREF(ph_M);\n    Py_DECREF(func_name_dict);\n\n    Py_DECREF(key_ph);\n    Py_DECREF(key_cat);\n    Py_DECREF(key_pid);\n    Py_DECREF(key_tid);\n    Py_DECREF(key_ts);\n    Py_DECREF(key_dur);\n    Py_DECREF(key_name);\n    Py_DECREF(key_args);\n    Py_DECREF(key_s);\n    Py_DECREF(key_id);\n    Py_DECREF(key_return_value);\n\n    self->buffer_tail_idx = self->buffer_head_idx;\n    SNAPTRACE_THREAD_PROTECT_END(self);\n    return lst;\n}\n\nstatic PyObject*\ntracer_dump(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    const char* filename = NULL;\n    int sanitize_function_name = 0;\n    static char* kwlist[] = {\"filename\", \"sanitize_function_name\", NULL};\n    FILE* fptr = NULL;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"s|p\", kwlist,\n                                     &filename, &sanitize_function_name)) {\n        return NULL;\n    }\n    fptr = fopen(filename, \"w\");\n    if (!fptr) {\n        PyErr_Format(PyExc_ValueError, \"Can't open file %s to write\", filename);\n        return NULL;\n    }\n\n    fprintf(fptr, \"{\\\"traceEvents\\\":[\");\n\n    SNAPTRACE_THREAD_PROTECT_START(self);\n    struct EventNode* curr = self->buffer + self->buffer_head_idx;\n    unsigned long pid = 0;\n    uint8_t overflowed = ((self->buffer_tail_idx + 1) % self->buffer_size) == self->buffer_head_idx;\n    struct MetadataNode* metadata_node = NULL;\n    PyObject* task_dict = NULL;\n\n    if (self->fix_pid > 0) {\n        pid = self->fix_pid;\n    } else {\n#if _WIN32\n        pid = GetCurrentProcessId();\n#else\n        pid = getpid();\n#endif\n    }\n\n    // == Load the metadata first ==\n    //    Process Name\n    {\n        PyObject* process_name = NULL;\n        if (self->process_name) {\n            process_name = Py_NewRef(self->process_name);\n        } else {\n            PyObject* current_process_method = PyObject_GetAttrString(multiprocessing_module, \"current_process\");\n            if (!current_process_method) {\n                perror(\"Failed to access multiprocessing.current_process()\");\n                exit(-1);\n            }\n            PyObject* current_process = PyObject_CallNoArgs(current_process_method);\n            if (!current_process_method) {\n                perror(\"Failed to access multiprocessing.current_process()\");\n                exit(-1);\n            }\n            process_name = PyObject_GetAttrString(current_process, \"name\");\n            Py_DECREF(current_process_method);\n            Py_DECREF(current_process);\n        }\n\n        fprintf(fptr, \"{\\\"ph\\\":\\\"M\\\",\\\"pid\\\":%lu,\\\"tid\\\":%lu,\\\"name\\\":\\\"process_name\\\",\\\"args\\\":{\\\"name\\\":\\\"\",\n                pid, pid);\n        fprint_escape(fptr, PyUnicode_AsUTF8(process_name));\n        fprintf(fptr, \"\\\"}},\");\n        Py_DECREF(process_name);\n    }\n\n    //    Thread Name\n    metadata_node = self->metadata_head;\n    while (metadata_node) {\n        fprintf(fptr, \"{\\\"ph\\\":\\\"M\\\",\\\"pid\\\":%lu,\\\"tid\\\":%lu,\\\"name\\\":\\\"thread_name\\\",\\\"args\\\":{\\\"name\\\":\\\"\",\n                pid, metadata_node->tid);\n        fprint_escape(fptr, PyUnicode_AsUTF8(metadata_node->name));\n        fprintf(fptr, \"\\\"}},\");\n        metadata_node = metadata_node->next;\n    }\n\n    // Task Name if using LOG_ASYNC\n    // We need to make up some thread id for the task\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n        task_dict = PyDict_New();\n    }\n\n    while (curr != self->buffer + self->buffer_tail_idx) {\n        struct EventNode* node = curr;\n        long long ts_long = system_ts_to_ns(node->ts);\n        unsigned long tid = node->tid;\n\n        if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n            if (curr->data.fee.asyncio_task != NULL) {\n                tid = (unsigned long)(((uintptr_t)curr->data.fee.asyncio_task) & 0xffffff);\n                PyObject* task_id = PyLong_FromLong(tid);\n                if (!PyDict_Contains(task_dict, task_id)) {\n                    PyObject* task_name = NULL;\n                    if (PyObject_HasAttrString(curr->data.fee.asyncio_task, \"get_name\")) {\n                        PyObject* task_name_method = PyObject_GetAttrString(curr->data.fee.asyncio_task, \"get_name\");\n                        task_name = PyObject_CallNoArgs(task_name_method);\n                        Py_DECREF(task_name_method);\n                    } else if (PyObject_HasAttrString(curr->data.fee.asyncio_task, \"name\")) {\n                        task_name = PyObject_GetAttrString(curr->data.fee.asyncio_task, \"name\");\n                    } else {\n                        task_name = PyUnicode_FromString(\"Task\");\n                    }\n                    PyDict_SetItem(task_dict, task_id, task_name);\n                    Py_DECREF(task_name);\n                }\n                Py_DECREF(task_id);\n            }\n        }\n        if (node->ntype != RAW_NODE) {\n            // printf(\"%f\") is about 10x slower than print(\"%d\")\n            fprintf(fptr, \"{\\\"pid\\\":%lu,\\\"tid\\\":%lu,\\\"ts\\\":%lld.%03lld,\", pid, tid, ts_long / 1000, ts_long % 1000);\n        }\n\n        switch (node->ntype) {\n        case FEE_NODE:\n            ;\n            long long dur_long = dur_ts_to_ns(node->data.fee.dur);\n            char ph = 'X';\n            if (node->data.fee.type == PyTrace_CALL || node->data.fee.type == PyTrace_C_CALL) {\n                ph = 'B';\n            }\n            fprintf(fptr, \"\\\"ph\\\":\\\"%c\\\",\\\"cat\\\":\\\"fee\\\",\\\"dur\\\":%lld.%03lld,\\\"name\\\":\\\"\", ph, dur_long / 1000, dur_long % 1000);\n            fprintfeename(fptr, node, sanitize_function_name);\n            fputc('\\\"', fptr);\n\n            PyObject* arg_dict = NULL;\n            if (node->data.fee.args) {\n                arg_dict = node->data.fee.args;\n                Py_INCREF(arg_dict);\n            }\n            if (node->data.fee.retval) {\n                if (!arg_dict) {\n                    arg_dict = PyDict_New();\n                }\n                PyDict_SetItemString(arg_dict, \"return_value\", node->data.fee.retval);\n            }\n            if (arg_dict) {\n                fprintf(fptr, \",\\\"args\\\":\");\n                fprintjson(fptr, arg_dict);\n                Py_DECREF(arg_dict);\n            }\n            break;\n        case INSTANT_NODE:\n            fprintf(fptr, \"\\\"ph\\\":\\\"i\\\",\\\"cat\\\":\\\"instant\\\",\\\"name\\\":\\\"\");\n            fprint_escape(fptr, PyUnicode_AsUTF8(node->data.instant.name));\n            if (node->data.instant.args == Py_None) {\n                fprintf(fptr, \"\\\",\\\"s\\\":\\\"%s\\\"\", PyUnicode_AsUTF8(node->data.instant.scope));\n            } else {\n                fprintf(fptr, \"\\\",\\\"s\\\":\\\"%s\\\",\\\"args\\\":\", PyUnicode_AsUTF8(node->data.instant.scope));\n                fprintjson(fptr, node->data.instant.args);\n            }\n            break;\n        case COUNTER_NODE:\n            fprintf(fptr, \"\\\"ph\\\":\\\"C\\\",\\\"name\\\":\\\"\");\n            fprint_escape(fptr, PyUnicode_AsUTF8(node->data.counter.name));\n            fprintf(fptr, \"\\\",\\\"args\\\":\");\n            fprintjson(fptr, node->data.counter.args);\n            break;\n        case OBJECT_NODE:\n            fprintf(fptr, \"\\\"ph\\\":\\\"%s\\\",\\\"id\\\":\\\"%s\\\",\\\"name\\\":\\\"\",\n                    PyUnicode_AsUTF8(node->data.object.ph), PyUnicode_AsUTF8(node->data.object.id));\n            fprint_escape(fptr, PyUnicode_AsUTF8(node->data.object.name));\n            fputc('\\\"', fptr);\n            if (!(node->data.object.args == Py_None)) {\n                fprintf(fptr, \",\\\"args\\\":\");\n                fprintjson(fptr, node->data.object.args);\n            }\n            break;\n        case RAW_NODE:\n            // We still need to tid from node and we need the pid\n            ;\n            PyObject* py_pid = PyLong_FromLong(pid);\n            PyObject* py_tid = PyLong_FromLong(node->tid);\n            PyObject* dict = node->data.raw;\n\n            PyDict_SetItemString(dict, \"pid\", py_pid);\n            PyDict_SetItemString(dict, \"tid\", py_tid);\n            fprintjson(fptr, dict);\n            fputc(',', fptr);\n            Py_DECREF(py_pid);\n            Py_DECREF(py_tid);\n            break;\n        default:\n            printf(\"Unknown Node Type!\\n\");\n            exit(1);\n        }\n        if (node->ntype != RAW_NODE) {\n            fputs(\"},\", fptr);\n        }\n        clear_node(node);\n        curr = curr + 1;\n        if (curr == self->buffer + self->buffer_size) {\n            curr = self->buffer;\n        }\n    }\n\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n        Py_ssize_t pos = 0;\n        PyObject* key = NULL;\n        PyObject* value = NULL;\n        while (PyDict_Next(task_dict, &pos, &key, &value)) {\n            PyObject* tid_repr = PyObject_Repr(key);\n            fprintf(fptr, \"{\\\"ph\\\":\\\"M\\\",\\\"pid\\\":%lu,\\\"tid\\\":%s,\\\"name\\\":\\\"thread_name\\\",\\\"args\\\":{\\\"name\\\":\\\"%s\\\"}},\",\n                    pid, PyUnicode_AsUTF8(tid_repr), PyUnicode_AsUTF8(value));\n            Py_DECREF(tid_repr);\n        }\n        Py_DECREF(task_dict);\n    }\n\n    self->buffer_tail_idx = self->buffer_head_idx;\n    fseek(fptr, -1, SEEK_CUR);\n    fprintf(fptr, \"], \\\"viztracer_metadata\\\": {\\\"overflow\\\":%s\", overflowed? \"true\": \"false\");\n\n    if (self->sync_marker > 0)\n    {\n        long long ts_sync_marker = system_ts_to_ns(self->sync_marker);\n        fprintf(fptr, \",\\\"sync_marker\\\":%lld.%03lld\", ts_sync_marker / 1000, ts_sync_marker % 1000);\n    }\n\n    fprintf(fptr, \"}}\");\n    fclose(fptr);\n    SNAPTRACE_THREAD_PROTECT_END(self);\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_clear(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    struct EventNode* curr = self->buffer + self->buffer_head_idx;\n    while (curr != self->buffer + self->buffer_tail_idx) {\n        struct EventNode* node = curr;\n        clear_node(node);\n        curr = curr + 1;\n        if (curr == self->buffer + self->buffer_size) {\n            curr = self->buffer;\n        }\n    }\n    self->buffer_tail_idx = self->buffer_head_idx;\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject* \ntracer_setpid(TracerObject* self, PyObject* args)\n{\n    long input_pid = -1;\n    if (!PyArg_ParseTuple(args, \"|l\", &input_pid)) {\n        printf(\"Parsing error on setpid\\n\");\n    }\n\n    if (input_pid >= 0) {\n        self->fix_pid = input_pid;\n    } else {\n#if _WIN32\n        self->fix_pid = GetCurrentProcessId();\n#else\n        self->fix_pid = getpid();\n#endif\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_getts(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    int64_t ts = get_ts();\n    double us = system_ts_to_us(ts);\n\n    return PyFloat_FromDouble(us);\n}\n\nstatic PyObject*\ntracer_getbasetime(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    return PyLong_FromLongLong(get_base_time_ns());\n}\n\nstatic PyObject*\ntracer_resetstack(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    struct ThreadInfo* info = get_thread_info(self);\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    info->curr_stack_depth = 0;\n    info->ignore_stack_depth = 0;\n\n    struct FunctionNode* stack_top = info->stack_top;\n    clear_stack(&stack_top);\n    info->stack_top = stack_top;\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_addinstant(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    PyObject* name = NULL;\n    PyObject* instant_args = NULL;\n    PyObject* scope = NULL;\n    struct EventNode* node = NULL;\n    static char* kwlist[] = {\"name\", \"args\", \"scope\", NULL};\n    const char* allowed_scope[] = {\"g\", \"p\", \"t\"};\n\n    if (!self->collecting) {\n        Py_RETURN_NONE;\n    }\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"O|OO\", kwlist,\n                                     &name, &instant_args, &scope)) {\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    if (!instant_args) {\n        instant_args = Py_None;\n    }\n\n    if (!scope) {\n        scope = PyUnicode_FromString(\"g\");\n    } else {\n        if (!PyUnicode_CheckExact(scope)) {\n            PyErr_SetString(PyExc_TypeError, \"Scope must be a string\");\n            return NULL;\n        }\n        for (int i = 0; i < 3; i++) {\n            if (strcmp(PyUnicode_AsUTF8(scope), allowed_scope[i]) == 0) {\n                break;\n            }\n            if (i == 2) {\n                PyErr_SetString(PyExc_ValueError, \"Scope must be one of 'g', 'p', 't'\");\n                return NULL;\n            }\n        }\n        Py_INCREF(scope);\n    }\n\n    node = get_next_node(self);\n    node->ntype = INSTANT_NODE;\n    node->tid = info->tid;\n    node->ts = get_ts();\n    node->data.instant.name = Py_NewRef(name);\n    node->data.instant.args = Py_NewRef(instant_args);\n    node->data.instant.scope = scope;\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_addfunctionarg(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    PyObject* key = NULL;\n    PyObject* value = NULL;\n    static char* kwlist[] = {\"key\", \"value\", NULL};\n\n    if (!self->collecting) {\n        Py_RETURN_NONE;\n    }\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"OO\", kwlist, &key, &value)) {\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    struct FunctionNode* fnode = info->stack_top;\n    if (!fnode->args) {\n        fnode->args = PyDict_New();\n    }\n\n    PyDict_SetItem(fnode->args, key, value);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_addcounter(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    PyObject* name = NULL;\n    PyObject* counter_args = NULL;\n    static char* kwlist[] = {\"name\", \"args\", NULL};\n    struct EventNode* node = NULL;\n\n    if (!self->collecting) {\n        Py_RETURN_NONE;\n    }\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"OO\", kwlist,\n                                     &name, &counter_args)) {\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    node = get_next_node(self);\n    node->ntype = COUNTER_NODE;\n    node->tid = info->tid;\n    node->ts = get_ts();\n    node->data.counter.name = Py_NewRef(name);\n    node->data.counter.args = Py_NewRef(counter_args);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_addobject(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    PyObject* ph = NULL;\n    PyObject* id = NULL;\n    PyObject* name = NULL;\n    PyObject* object_args = NULL;\n    static char* kwlist[] = {\"ph\", \"obj_id\", \"name\", \"args\", NULL};\n    struct EventNode* node = NULL;\n\n    if (!self->collecting) {\n        Py_RETURN_NONE;\n    }\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"OOO|O\", kwlist,\n                                     &ph, &id, &name, &object_args)) {\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    if (!object_args) {\n        object_args = Py_None;\n    }\n\n    node = get_next_node(self);\n    node->ntype = OBJECT_NODE;\n    node->tid = info->tid;\n    node->ts = get_ts();\n    node->data.object.ph = Py_NewRef(ph);\n    node->data.object.id = Py_NewRef(id);\n    node->data.object.name = Py_NewRef(name);\n    node->data.object.args = Py_NewRef(object_args);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_addraw(TracerObject* self, PyObject* args, PyObject* kw)\n{\n    PyObject* raw = NULL;\n    static char* kwlist[] = {\"raw\", NULL};\n    struct EventNode* node = NULL;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kw, \"O\", kwlist, &raw)) {\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    node = get_next_node(self);\n    node->tid = info->tid;\n    node->ntype = RAW_NODE;\n    node->data.raw = Py_NewRef(raw);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_setignorestackcounter(TracerObject* self, PyObject* value)\n{\n    int current_value = 0;\n\n    if (!PyLong_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"value must be an integer\");\n        return NULL;\n    }\n\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    current_value = info->ignore_stack_depth;\n    // +1 to compensate for this call so when it returns, the value is correct\n    info->ignore_stack_depth = PyLong_AsLong(value) + 1;\n\n    // -1 is the actual ignore stack depth before this call\n    return Py_BuildValue(\"i\", current_value - 1);\n}\n\nstatic PyObject*\ntracer_getfunctionarg(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    struct ThreadInfo* info = get_thread_info(self);\n\n    if (!info) {\n        PyErr_SetString(PyExc_RuntimeError, \"VizTracer: Failed to get thread info. This should not happen.\");\n        return NULL;\n    }\n\n    struct FunctionNode* fnode = info->stack_top;\n    if (!fnode->args) {\n        Py_RETURN_NONE;\n    }\n\n    return Py_NewRef(fnode->args);\n}\n\nstatic PyObject*\ntracer_set_sync_marker(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    if (self->sync_marker != 0)\n    {\n        PyErr_WarnFormat(PyExc_RuntimeWarning, 1, \"Synchronization marker already set\");\n    }\n    self->sync_marker = get_ts();\n    Py_RETURN_NONE;\n}\n\nstatic PyObject*\ntracer_get_sync_marker(TracerObject* self, PyObject* Py_UNUSED(unused))\n{\n    if (self->sync_marker == 0)\n    {\n        Py_RETURN_NONE;\n    }\n\n    double ts_sync_marker = system_ts_to_us(self->sync_marker);\n    return PyFloat_FromDouble(ts_sync_marker);\n}\n\nstatic PyMethodDef Tracer_methods[] = {\n    {\"threadtracefunc\", (PyCFunction)tracer_threadtracefunc, METH_VARARGS, \"trace function\"},\n    {\"start\", (PyCFunction)tracer_start, METH_NOARGS, \"start profiling\"},\n    {\"stop\", (PyCFunction)tracer_stop, METH_O, \"stop profiling\"},\n    {\"load\", (PyCFunction)tracer_load, METH_NOARGS, \"load buffer\"},\n    {\"dump\", (PyCFunction)tracer_dump, METH_VARARGS|METH_KEYWORDS, \"dump buffer to file\"},\n    {\"clear\", (PyCFunction)tracer_clear, METH_NOARGS, \"clear buffer\"},\n    {\"setpid\", (PyCFunction)tracer_setpid, METH_VARARGS, \"set fixed pid\"},\n    {\"add_instant\", (PyCFunction)tracer_addinstant, METH_VARARGS|METH_KEYWORDS, \"add instant event\"},\n    {\"add_counter\", (PyCFunction)tracer_addcounter, METH_VARARGS|METH_KEYWORDS, \"add counter event\"},\n    {\"add_object\", (PyCFunction)tracer_addobject, METH_VARARGS|METH_KEYWORDS, \"add object event\"},\n    {\"add_raw\", (PyCFunction)tracer_addraw, METH_VARARGS|METH_KEYWORDS, \"add raw event\"},\n    {\"add_func_args\", (PyCFunction)tracer_addfunctionarg, METH_VARARGS|METH_KEYWORDS, \"add function arg\"},\n    {\"get_func_args\", (PyCFunction)tracer_getfunctionarg, METH_NOARGS, \"get current function arg\"},\n    {\"getts\", (PyCFunction)tracer_getts, METH_NOARGS, \"get timestamp\"},\n    {\"get_base_time\", (PyCFunction)tracer_getbasetime, METH_NOARGS, \"get base time in nanoseconds\"},\n    {\"reset_stack\", (PyCFunction)tracer_resetstack, METH_NOARGS, \"reset stack\"},\n    {\"pause\", (PyCFunction)tracer_pause, METH_NOARGS, \"pause profiling\"},\n    {\"resume\", (PyCFunction)tracer_resume, METH_NOARGS, \"resume profiling\"},\n    {\"setignorestackcounter\", (PyCFunction)tracer_setignorestackcounter, METH_O, \"reset ignore stack depth\"},\n    {\"set_sync_marker\", (PyCFunction)tracer_set_sync_marker, METH_NOARGS, \"set current timestamp to synchronization marker\"},\n    {\"get_sync_marker\", (PyCFunction)tracer_get_sync_marker, METH_NOARGS, \"get synchronization marker or None if not set\"},\n    {NULL, NULL, 0, NULL}\n};\n\n// ===========================================================================\n// snaptrace.Tracer internals\n// ===========================================================================\n\nstatic PyObject* \nTracer_New(PyTypeObject* type, PyObject* args, PyObject* kwargs)\n{\n    TracerObject* self = (TracerObject*) type->tp_alloc(type, 0);\n    if (self) {\n        self->collecting = 0;\n        self->fix_pid = 0;\n        self->total_entries = 0;\n        self->check_flags = 0;\n        self->verbose = 0;\n        self->lib_file_path = NULL;\n        self->max_stack_depth = 0;\n        self->include_files = NULL;\n        self->exclude_files = NULL;\n        self->min_duration = 0;\n        self->buffer = NULL;\n        self->buffer_head_idx = 0;\n        self->buffer_tail_idx = 0;\n        self->sync_marker = 0;\n        self->metadata_head = NULL;\n    }\n\n    return (PyObject*) self;\n}\n\nstatic int\nTracer_Init(TracerObject* self, PyObject* args, PyObject* kwargs)\n{\n    if (!PyArg_ParseTuple(args, \"l\", &self->buffer_size)) {\n        PyErr_SetString(PyExc_TypeError, \"You need to specify buffer size when initializing Tracer\");\n        return -1;\n    }\n\n    // We need an extra slot for circular buffer\n    self->buffer_size += 1;\n    self->buffer = (struct EventNode*) PyMem_Calloc(self->buffer_size, sizeof(struct EventNode));\n    if (!self->buffer) {\n        PyErr_NoMemory();\n        return -1;\n    }\n\n#if _WIN32\n    if ((self->dwTlsIndex = TlsAlloc()) == TLS_OUT_OF_INDEXES) {\n        printf(\"Error on TLS!\\n\");\n        exit(-1);\n    }\n#else\n    if (pthread_key_create(&self->thread_key, snaptrace_threaddestructor)) {\n        perror(\"Failed to create Tss_Key\");\n        exit(-1);\n    }\n#endif\n\n    return 0;\n}\n\nstatic void\nTracer_dealloc(TracerObject* self)\n{\n    tracer_clear(self, NULL);\n    if (self->lib_file_path) {\n        PyMem_FREE(self->lib_file_path);\n    }\n    Py_XDECREF(self->include_files);\n    Py_XDECREF(self->exclude_files);\n    PyMem_FREE(self->buffer);\n\n    struct MetadataNode* node = self->metadata_head;\n    struct MetadataNode* prev = NULL;\n    while (node) {\n        prev = node;\n        Py_CLEAR(node->name);\n        node = node->next;\n        PyMem_FREE(prev);\n    }\n\n    Py_TYPE(self)->tp_free((PyObject*) self);\n}\n\n// ================================================================\n// snaptrace.Tracer Definition\n// ================================================================\n\n// We define getsetters in another file\nextern PyGetSetDef Tracer_getsetters[];\n\nstatic PyTypeObject TracerType = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"snaptrace.Tracer\",\n    .tp_doc = \"Tracer\",\n    .tp_basicsize = sizeof(TracerObject),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = Tracer_New,\n    .tp_init = (initproc) Tracer_Init,\n    .tp_dealloc = (destructor) Tracer_dealloc,\n    .tp_methods = Tracer_methods,\n    .tp_getset = Tracer_getsetters,\n};\n\n// ================================================================\n// snaptrace Module Functions\n// ================================================================\n\nvoid\nsnaptrace_free(void* Py_UNUSED(unused)) {\n    quicktime_free();\n    Py_CLEAR(threading_module);\n    Py_CLEAR(multiprocessing_module);\n    Py_CLEAR(asyncio_module);\n    Py_CLEAR(asyncio_tasks_module);\n    Py_CLEAR(curr_task_getters[0]);\n    Py_CLEAR(trio_lowlevel_module);\n    Py_CLEAR(curr_task_getters[1]);\n    Py_CLEAR(json_module);\n    Py_CLEAR(sys_module);\n}\n\n// ================================================================\n// snaptrace Module Definition\n// ================================================================\n\nstatic struct PyModuleDef snaptracemodule = {\n    .m_base = PyModuleDef_HEAD_INIT,\n    .m_name = \"viztracer.snaptrace\",\n    .m_size = -1,\n    .m_free = snaptrace_free,\n};\n\n// ================================================================\n// Python Interface\n// ================================================================\n\nPyMODINIT_FUNC\nPyInit_snaptrace(void) \n{\n    // Tracer Module\n    PyObject* m = NULL;\n\n    if (PyType_Ready(&TracerType) < 0) {\n        return NULL;\n    }\n\n    m = PyModule_Create(&snaptracemodule);\n\n    if (!m) {\n        return NULL;\n    }\n\n#ifdef Py_GIL_DISABLED\n    PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);\n#endif\n\n    Py_INCREF(&TracerType);\n    if (PyModule_AddObject(m, \"Tracer\", (PyObject*) &TracerType) < 0) {\n        Py_DECREF(&TracerType);\n        Py_DECREF(m);\n        return NULL;\n    }\n\n    threading_module = PyImport_ImportModule(\"threading\");\n    multiprocessing_module = PyImport_ImportModule(\"multiprocessing\");\n    if ((trio_module = PyImport_ImportModule(\"trio\"))) {\n        trio_lowlevel_module = PyImport_AddModule(\"trio.lowlevel\");\n        curr_task_getters[1] = PyObject_GetAttrString(trio_lowlevel_module, \"current_task\");\n    } else {\n        PyErr_Clear();\n    }\n    json_module = PyImport_ImportModule(\"json\");\n\n#if PY_VERSION_HEX >= 0x030C0000\n    sys_module = PyImport_ImportModule(\"sys\");\n    PyObject* monitoring = PyObject_GetAttrString(sys_module, \"monitoring\");\n    sys_monitoring_missing = PyObject_GetAttrString(monitoring, \"MISSING\");\n    Py_DECREF(monitoring);\n#endif\n\n    quicktime_init();\n\n    return m;\n}\n"
  },
  {
    "path": "src/viztracer/modules/snaptrace.h",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#ifndef __SNAPTRACE_H__\n#define __SNAPTRACE_H__\n\n#include <Python.h>\n#include <frameobject.h>\n#if _WIN32\n#include <windows.h>\n#else\n#include <pthread.h>\n#endif\n\n#ifdef Py_GIL_DISABLED\n// The free threading implementation of SNAPTRACE_THREAD_PROTECT_START/END uses\n// a per-tracer mutex. The mutex is acquired in SNAPTRACE_THREAD_PROTECT_START\n// and released in SNAPTRACE_THREAD_PROTECT_END.\n// NOTE: these macros delimit a C scope so any variables accessed after\n// a SNAPTRACE_THREAD_PROTECT_END need to be declared before\n// SNAPTRACE_THREAD_PROTECT_START.\n#define SNAPTRACE_THREAD_PROTECT_START(self) Py_BEGIN_CRITICAL_SECTION(self)\n#define SNAPTRACE_THREAD_PROTECT_END(self) Py_END_CRITICAL_SECTION()\n#else\n// The default implementation is a no-op.\n#define SNAPTRACE_THREAD_PROTECT_START(self)\n#define SNAPTRACE_THREAD_PROTECT_END(self)\n#endif\n\n#ifndef Py_MONITORING_H\n// monitoring.h is only available after 3.13, this is a fix\n// to support the following events on 3.12 \n#define PY_MONITORING_EVENT_PY_START 0\n#define PY_MONITORING_EVENT_PY_RESUME 1\n#define PY_MONITORING_EVENT_PY_RETURN 2\n#define PY_MONITORING_EVENT_PY_YIELD 3\n#define PY_MONITORING_EVENT_CALL 4\n#define PY_MONITORING_EVENT_LINE 5\n#define PY_MONITORING_EVENT_INSTRUCTION 6\n#define PY_MONITORING_EVENT_JUMP 7\n#define PY_MONITORING_EVENT_BRANCH 8\n#define PY_MONITORING_EVENT_STOP_ITERATION 9\n#define PY_MONITORING_EVENT_RAISE 10\n#define PY_MONITORING_EVENT_EXCEPTION_HANDLED 11\n#define PY_MONITORING_EVENT_PY_UNWIND 12\n#define PY_MONITORING_EVENT_PY_THROW 13\n#define PY_MONITORING_EVENT_RERAISE 14\n#define PY_MONITORING_EVENT_C_RETURN 15\n#define PY_MONITORING_EVENT_C_RAISE 16\n#endif\n\n\n#define SNAPTRACE_MAX_STACK_DEPTH (1 << 0)\n#define SNAPTRACE_INCLUDE_FILES (1 << 1)\n#define SNAPTRACE_EXCLUDE_FILES (1 << 2)\n#define SNAPTRACE_IGNORE_C_FUNCTION (1 << 3)\n#define SNAPTRACE_LOG_RETURN_VALUE (1 << 4)\n#define SNAPTRACE_LOG_FUNCTION_ARGS (1 << 6)\n#define SNAPTRACE_IGNORE_FROZEN (1 << 7)\n#define SNAPTRACE_LOG_ASYNC (1 << 8)\n#define SNAPTRACE_TRACE_SELF (1 << 9)\n\n#define SET_FLAG(reg, flag) ((reg) |= (flag))\n#define UNSET_FLAG(reg, flag) ((reg) &= (~(flag)))\n\n#define CHECK_FLAG(reg, flag) (((reg) & (flag)) != 0) \n\n#define SNAPTRACE_TOOL_ID 2\n\nstruct FunctionNode {\n    struct FunctionNode* next;\n    struct FunctionNode* prev;\n    int64_t ts;\n    PyObject* args;\n    // PyCodeObject* for Python function, PyCFunctionObject* for C function\n    PyObject* func;\n};\n\nstruct ThreadInfo {\n    int paused;\n    int curr_stack_depth;\n    int ignore_stack_depth;\n    unsigned long tid;\n    struct FunctionNode* stack_top;\n    PyObject* curr_task;\n    PyFrameObject* curr_task_frame;\n    struct MetadataNode* metadata_node;\n};\n\nstruct MetadataNode {\n    struct MetadataNode* next;\n    unsigned long tid;\n    PyObject* name;\n    struct ThreadInfo* thread_info;\n};\n\ntypedef struct {\n    PyObject_HEAD\n#if _WIN32\n    DWORD dwTlsIndex;\n#else\n    pthread_key_t thread_key;\n#endif\n    int collecting;\n    // When we do fork_save(), we want to keep the pid. This is a \n    // mechanism for child process to keep the parent's pid. If \n    // this value is 0, then the program gets pid before parsing,\n    // otherwise it uses this pid\n    long fix_pid;\n    unsigned long total_entries;\n    unsigned int check_flags;\n    int verbose;\n    char* lib_file_path;\n    int max_stack_depth;\n    PyObject* process_name;\n    PyObject* include_files;\n    PyObject* exclude_files;\n    PyObject* log_func_repr;\n    double min_duration;\n    struct EventNode* buffer;\n    long buffer_size;\n    long buffer_head_idx;\n    long buffer_tail_idx;\n    int64_t sync_marker;\n    struct MetadataNode* metadata_head;\n} TracerObject;\n\nextern PyObject* threading_module;\nextern PyObject* multiprocessing_module;\nextern PyObject* json_module;\nextern PyObject* asyncio_module;\nextern PyObject* asyncio_tasks_module;\n\n#endif\n"
  },
  {
    "path": "src/viztracer/modules/snaptrace_member.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#include \"pythoncapi_compat.h\"\n#include \"snaptrace.h\"\n\nextern PyObject* asyncio_module;\nextern PyObject* asyncio_tasks_module;\nextern PyObject* curr_task_getters[2];\n\n// ================================================================\n// Tracer members\n// ================================================================\n\nstatic int\nTracer_max_stack_depth_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyLong_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"max_stack_depth must be an integer\");\n        return -1;\n    }\n\n    self->max_stack_depth = PyLong_AsLong(value);\n\n    if (self->max_stack_depth >= 0) {\n        SET_FLAG(self->check_flags, SNAPTRACE_MAX_STACK_DEPTH);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_MAX_STACK_DEPTH);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_max_stack_depth_getter(TracerObject* self, void* closure)\n{\n    return PyLong_FromLong(self->max_stack_depth);\n}\n\nstatic int\nTracer_include_files_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyList_Check(value) && value != Py_None) {\n        PyErr_SetString(PyExc_TypeError, \"include_files must be a list or None\");\n        return -1;\n    }\n\n    Py_XDECREF(self->include_files);\n    if (value == Py_None || PyList_Size(value) == 0) {\n        self->include_files = NULL;\n        UNSET_FLAG(self->check_flags, SNAPTRACE_INCLUDE_FILES);\n    } else {\n        self->include_files = Py_NewRef(value);\n        SET_FLAG(self->check_flags, SNAPTRACE_INCLUDE_FILES);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_include_files_getter(TracerObject* self, void* closure)\n{\n    if (self->include_files) {\n        return Py_NewRef(self->include_files);\n    } else {\n        Py_RETURN_NONE;\n    }\n}\n\nstatic int\nTracer_exclude_files_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyList_Check(value) && value != Py_None) {\n        PyErr_SetString(PyExc_TypeError, \"exclude_files must be a list or None\");\n        return -1;\n    }\n\n    Py_XDECREF(self->exclude_files);\n    if (value == Py_None || PyList_Size(value) == 0) {\n        self->exclude_files = NULL;\n        UNSET_FLAG(self->check_flags, SNAPTRACE_EXCLUDE_FILES);\n    } else {\n        self->exclude_files = Py_NewRef(value);\n        SET_FLAG(self->check_flags, SNAPTRACE_EXCLUDE_FILES);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_exclude_files_getter(TracerObject* self, void* closure)\n{\n    if (self->exclude_files) {\n        return Py_NewRef(self->exclude_files);\n    } else {\n        Py_RETURN_NONE;\n    }\n}\n\nstatic int\nTracer_ignore_c_function_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"ignore_c_function must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        SET_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_ignore_c_function_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_C_FUNCTION)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_ignore_frozen_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"ignore_frozen must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        SET_FLAG(self->check_flags, SNAPTRACE_IGNORE_FROZEN);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_IGNORE_FROZEN);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_ignore_frozen_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_IGNORE_FROZEN)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_verbose_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyLong_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"verbose must be an integer\");\n        return -1;\n    }\n\n    self->verbose = PyLong_AsLong(value);\n    return 0;\n}\n\nstatic PyObject*\nTracer_verbose_getter(TracerObject* self, void* closure)\n{\n    return PyLong_FromLong(self->verbose);\n}\n\nstatic int\nTracer_lib_file_path_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyUnicode_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"lib_file_path must be a string\");\n        return -1;\n    }\n\n    // Obviously we need to copy the string here or it would fail on\n    // MacOS + python3.8\n    // The documentation did not say whether the value persists on \"s\"\n    // so we should copy it anyway. \n\n    const char* lib_file_path = PyUnicode_AsUTF8(value);\n\n    if (self->lib_file_path) {\n        PyMem_FREE(self->lib_file_path);\n    }\n    self->lib_file_path = PyMem_Calloc((strlen(lib_file_path) + 1), sizeof(char));\n    if (!self->lib_file_path) {\n        PyErr_NoMemory();\n        return -1;\n    }\n    strcpy(self->lib_file_path, lib_file_path);\n\n    return 0;\n}\n\nstatic PyObject*\nTracer_lib_file_path_getter(TracerObject* self, void* closure)\n{\n    return PyUnicode_FromString(self->lib_file_path);\n}\n\nstatic int\nTracer_process_name_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (value == Py_None) {\n        Py_CLEAR(self->process_name);\n        return 0;\n    }\n\n    if (!PyUnicode_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"process_name must be a string\");\n        return -1;\n    }\n\n    Py_INCREF(value);\n    Py_XSETREF(self->process_name, value);\n    return 0;\n}\n\nstatic PyObject*\nTracer_process_name_getter(TracerObject* self, void* closure)\n{\n    if (self->process_name == NULL) {\n        Py_RETURN_NONE;\n    }\n    return Py_NewRef(self->process_name);\n}\n\nstatic int\nTracer_min_duration_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (PyFloat_Check(value)) {\n        self->min_duration = PyFloat_AsDouble(value);\n    } else if (PyLong_Check(value)) {\n        self->min_duration = PyLong_AsDouble(value);\n    } else {\n        PyErr_SetString(PyExc_TypeError, \"min_duration must be a float or an integer\");\n        return -1;\n    }\n\n    if (self->min_duration < 0) {\n        self->min_duration = 0;\n    }\n\n    // In Python code the default unit is us\n    // Convert to ns which is what c Code uses\n    self->min_duration *= 1000;\n\n    return 0;\n}\n\nstatic PyObject*\nTracer_min_duration_getter(TracerObject* self, void* closure)\n{\n    return PyFloat_FromDouble(self->min_duration);\n}\n\nstatic int\nTracer_log_func_args_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"log_func_args must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        SET_FLAG(self->check_flags, SNAPTRACE_LOG_FUNCTION_ARGS);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_LOG_FUNCTION_ARGS);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_log_func_args_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_FUNCTION_ARGS)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_log_func_retval_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"log_func_retval must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        SET_FLAG(self->check_flags, SNAPTRACE_LOG_RETURN_VALUE);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_LOG_RETURN_VALUE);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_log_func_retval_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_RETURN_VALUE)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_log_async_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"log_async must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        // Lazy import asyncio because it's slow\n        if (asyncio_module == NULL) {\n            asyncio_module = PyImport_ImportModule(\"asyncio\");\n            asyncio_tasks_module = PyImport_AddModule(\"asyncio.tasks\");\n            if (PyObject_HasAttrString(asyncio_tasks_module, \"current_task\")) {\n                curr_task_getters[0] = PyObject_GetAttrString(asyncio_tasks_module, \"current_task\");\n            }\n        }\n        SET_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_log_async_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_LOG_ASYNC)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_trace_self_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (!PyBool_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"trace_self must be a boolean\");\n        return -1;\n    }\n\n    if (value == Py_True) {\n        SET_FLAG(self->check_flags, SNAPTRACE_TRACE_SELF);\n    } else {\n        UNSET_FLAG(self->check_flags, SNAPTRACE_TRACE_SELF);\n    }\n    return 0;\n}\n\nstatic PyObject*\nTracer_trace_self_getter(TracerObject* self, void* closure)\n{\n    if (CHECK_FLAG(self->check_flags, SNAPTRACE_TRACE_SELF)) {\n        Py_RETURN_TRUE;\n    } else {\n        Py_RETURN_FALSE;\n    }\n}\n\nstatic int\nTracer_log_func_repr_setter(TracerObject* self, PyObject* value, void* closure)\n{\n    if (value == NULL) {\n        PyErr_SetString(PyExc_AttributeError, \"Cannot delete the attribute\");\n        return -1;\n    }\n\n    if (value == Py_None) {\n        Py_CLEAR(self->log_func_repr);\n        return 0;\n    }\n\n    if (!PyCallable_Check(value)) {\n        PyErr_SetString(PyExc_TypeError, \"log_func_repr must be a boolean\");\n        return -1;\n    }\n\n    Py_INCREF(value);\n    Py_XSETREF(self->log_func_repr, value);\n\n    return 0;\n}\n\nstatic PyObject*\nTracer_log_func_repr_getter(TracerObject* self, void* closure)\n{\n    if (self->log_func_repr == NULL) {\n        Py_RETURN_NONE;\n    }\n    return Py_NewRef(self->log_func_repr);\n}\n\nPyGetSetDef Tracer_getsetters[] = {\n    {\"max_stack_depth\", (getter)Tracer_max_stack_depth_getter, (setter)Tracer_max_stack_depth_setter, \"max_stack_depth\", NULL},\n    {\"include_files\", (getter)Tracer_include_files_getter, (setter)Tracer_include_files_setter, \"include_files\", NULL},\n    {\"exclude_files\", (getter)Tracer_exclude_files_getter, (setter)Tracer_exclude_files_setter, \"exclude_files\", NULL},\n    {\"ignore_c_function\", (getter)Tracer_ignore_c_function_getter, (setter)Tracer_ignore_c_function_setter, \"ignore_c_function\", NULL},\n    {\"ignore_frozen\", (getter)Tracer_ignore_frozen_getter, (setter)Tracer_ignore_frozen_setter, \"ignore_frozen\", NULL},\n    {\"verbose\", (getter)Tracer_verbose_getter, (setter)Tracer_verbose_setter, \"verbose\", NULL},\n    {\"lib_file_path\", (getter)Tracer_lib_file_path_getter, (setter)Tracer_lib_file_path_setter, \"lib_file_path\", NULL},\n    {\"process_name\", (getter)Tracer_process_name_getter, (setter)Tracer_process_name_setter, \"process_name\", NULL},\n    {\"min_duration\", (getter)Tracer_min_duration_getter, (setter)Tracer_min_duration_setter, \"min_duration\", NULL},\n    {\"log_func_retval\", (getter)Tracer_log_func_retval_getter, (setter)Tracer_log_func_retval_setter, \"log_func_retval\", NULL},\n    {\"log_func_args\", (getter)Tracer_log_func_args_getter, (setter)Tracer_log_func_args_setter, \"log_func_args\", NULL},\n    {\"log_async\", (getter)Tracer_log_async_getter, (setter)Tracer_log_async_setter, \"log_async\", NULL},\n    {\"trace_self\", (getter)Tracer_trace_self_getter, (setter)Tracer_trace_self_setter, \"trace_self\", NULL},\n    {\"log_func_repr\", (getter)Tracer_log_func_repr_getter, (setter)Tracer_log_func_repr_setter, \"log_func_repr\", NULL},\n    {NULL}\n};\n"
  },
  {
    "path": "src/viztracer/modules/util.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#include <Python.h>\n#include <time.h>\n#include \"snaptrace.h\"\n\n\n// Utility functions\n\nvoid\nPrint_Py(PyObject* o)\n{\n    PyObject* repr = PyObject_Repr(o);\n    printf(\"%s\\n\", PyUnicode_AsUTF8(repr));\n    Py_DECREF(repr);\n}\n\nvoid\nfprintjson(FILE* fptr, PyObject* obj)\n{\n    PyObject* json_dumps = PyObject_GetAttrString(json_module, \"dumps\");\n    PyObject* args_str = PyObject_CallOneArg(json_dumps, obj);\n    fprintf(fptr, \"%s\", PyUnicode_AsUTF8(args_str));\n    Py_DECREF(json_dumps);\n    Py_DECREF(args_str);\n}\n\nvoid\nfprint_escape(FILE *fptr, const char *s)\n{\n    while (*s != 0) {\n        switch (*s) {\n            case '\\\\': fputc('\\\\', fptr); fputc(*s, fptr); break;\n            case '\"':  fputc('\\\\', fptr); fputc(*s, fptr); break;\n            case '\\b': fputc('\\\\', fptr); fputc('b', fptr); break;\n            case '\\f': fputc('\\\\', fptr); fputc('f', fptr); break;\n            case '\\n': fputc('\\\\', fptr); fputc('n', fptr); break;\n            case '\\r': fputc('\\\\', fptr); fputc('r', fptr); break;\n            case '\\t': fputc('\\\\', fptr); fputc('t', fptr); break;\n            default: fputc(*s, fptr);\n        }\n        s++;\n    }\n}\n"
  },
  {
    "path": "src/viztracer/modules/util.h",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\n#ifndef __SNAPTRACE_UTIL_H__\n#define __SNAPTRACE_UTIL_H__\n\n#include <Python.h>\n#include <string.h>\n\nvoid Print_Py(PyObject* o);\nvoid fprintjson(FILE* fptr, PyObject* obj);\nvoid fprint_escape(FILE *fptr, const char *s);\n\n// target and prefix has to be NULL-terminated\ninline int startswith(const char* target, const char* prefix)\n{\n    size_t len = strlen(prefix);\n    return strncmp(target, prefix, len) == 0;\n}\n\n#endif\n"
  },
  {
    "path": "src/viztracer/modules/vcompressor/README.md",
    "content": "# VizTracer log compressor/decompressor\n\n## Format\n\n### Data Type\n\n#### header\n\nA one-byte header indicating the following data type\n\n0x00 - Reserved\n0x01 - FEE\n0x02 - Process name\n0x03 - Thread name\n0x04 - count event\n0x05 - non-frequent event\n0x11 - File info\n0x21 - counter arg unknown\n0x22 - counter arg is the same with last timestamp\n0x23 - counter arg is long type and not overflowed\n0x24 - counter arg is float type\n0x25 - counter arg is long type and overflowed\n\n\n#### str\n\nA null-ended cstring encoded in utf8\n\n#### pid/tid\n\nuint64\n\n#### ts\n\nA variant length variable for the timestamp.\n\n### Process/Thread name\n\nheader(header) - pid(pid) - tid(tid) - name(str)\n\n### FEE\n\nheader(header) - pid(pid) - tid(tid) - name(str) - count(uint64) - args offset - [start(ts) - dur(ts)]* - args list (if args offset is not 0)\n\n### File info\n\nheader(header) - compressed size(uint64) - uncompressed size(uint64) - compressed content\n\n### Count Event\n\nheader(header) - pid(pid) - tid(tid) - name(str) - key count - [ keys ]* - timestamp count -[ts - variables]*\n\n#### variables\n[header - value]*\nthe order of variables is corresponding to the order of keys.\nif header means value didn't change compared to last timestamp, value will be null.\nif header means long or float, the value is int64_t or double type\nif header means a long and the value overflows, the value is string type\n\n### Non-frequent Events\n\nWe just directly use json dumps and compress the data because they will be only a very small part of the trace. Except FEE, counter event, thread name, process name, the left events are treated as non-frequent events\n"
  },
  {
    "path": "src/viztracer/modules/vcompressor/vc_dump.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#include <Python.h>\n#include \"vcompressor.h\"\n#include \"vc_dump.h\"\n\n#define STRING_BUFFER_SIZE 512\n\n// Not sure if we need to compress the whole file using zlib.\n// Use this flag to control if we need to compress json data.\n// This is for test for now\n#define NEED_COMPRESS_IN_FILE 1\n\n#define READ_DATA(ptr, type, fptr)                                           \\\n{                                                                            \\\n    size_t s = fread(ptr, sizeof(type), 1, fptr);                            \\\n    if (s != 1) {                                                            \\\n        PyErr_SetString(PyExc_ValueError, \"file is corrupted\");              \\\n        goto clean_exit;                                                     \\\n    }                                                                        \\\n}\n\n#define PyDict_SetItemStringULL(dct, key, val)                               \\\n{                                                                            \\\n    PyObject* o = PyLong_FromUnsignedLongLong(val);                          \\\n    PyDict_SetItemString(dct, key, o);                                       \\\n    Py_DECREF(o);                                                            \\\n}\n\n#define PyDict_SetItemStringDouble(dct, key, val)                            \\\n{                                                                            \\\n    PyObject* o = PyFloat_FromDouble(val);                                   \\\n    PyDict_SetItemString(dct, key, o);                                       \\\n    Py_DECREF(o);                                                            \\\n}\n\n// The input line has to be null-terminated\n// This function will write the line and append a null terminator after it\n#define fwritestr(line, fptr)                                                \\\n{                                                                            \\\n    fwrite(line, sizeof(char), strlen(line), fptr);                          \\\n    fputc('\\0', fptr);                                                       \\\n}\n\n#define PEEK_DATA(ptr, type, fptr)                                           \\\n{                                                                            \\\n    size_t s = fread(ptr, sizeof(type), 1, fptr);                            \\\n    if (s != 1) {                                                            \\\n        PyErr_SetString(PyExc_ValueError, \"file is corrupted\");              \\\n        goto clean_exit;                                                     \\\n    } else {                                                                 \\\n        fseek(fptr, -sizeof(type), SEEK_CUR);                                \\\n    }                                                                        \\\n}\n\n/*\n * The write_encoded_int and read_encoded_int functions are used to compress\n * and decompress timestamp. For a trace file, most of the data are ts and dur.\n * So we sort the timestamp and only record diff of two between two contiguous\n * timestamp. \n * \n * We use a 2-bit flag to indicate how many bytes can uint64_t data be fit in.\n * For Windows, Mac and most of the Linux, the byte order is little-endian, \n * which means if we want to record 0X12345678. The data in file would be:\n * 78 56 34 12\n * To make it simple, we just move the data left 2 bits and put the flag at \n * the lowest position of the timestamp.\n * \n * And the parsed timestamp is always less than 0x3FFFFFFFFFFFFFFF\n*/\nstatic inline void\nwrite_encoded_int(uint64_t num, FILE* fptr)\n{\n    if (num == (num & 0x3F)) {\n        uint8_t encoded_num = (num << 2) | TS_6_BIT;\n        fwrite(&encoded_num, sizeof(uint8_t), 1, fptr);\n    } else if (num == (num & 0x3FFF)) {\n        uint16_t encoded_num = (num << 2) | TS_14_BIT;\n        fwrite(&encoded_num, sizeof(uint16_t), 1, fptr);\n    } else if (num == (num & 0x3FFFFFFF)) {\n        uint32_t encoded_num = (num << 2) | TS_30_BIT;\n        fwrite(&encoded_num, sizeof(uint32_t), 1, fptr);\n    } else {\n        uint64_t encoded_num = (num << 2) | TS_62_BIT;\n        fwrite(&encoded_num, sizeof(uint64_t), 1, fptr);\n    }\n}\n\nstatic inline int\nread_encoded_int(uint64_t *num, FILE* fptr)\n{\n    uint8_t flag;\n    uint8_t encoded_num_8_bit = 0;\n    uint16_t encoded_num_16_bit = 0;\n    uint32_t encoded_num_32_bit = 0;\n    uint64_t encoded_num_64_bit = 0;\n    PEEK_DATA(&flag, uint8_t, fptr)\n    switch (flag & 0x03)\n    {\n        case TS_6_BIT:\n            READ_DATA(&encoded_num_8_bit, uint8_t, fptr)\n            (*num) = encoded_num_8_bit >> 2;\n            break;\n        case TS_14_BIT:\n            READ_DATA(&encoded_num_16_bit, uint16_t, fptr)\n            (*num) = encoded_num_16_bit >> 2;\n            break;        \n        case TS_30_BIT:\n            READ_DATA(&encoded_num_32_bit, uint32_t, fptr)\n            (*num) = encoded_num_32_bit >> 2;\n            break;\n        case TS_62_BIT:\n            READ_DATA(&encoded_num_64_bit, uint64_t, fptr)\n            (*num) = encoded_num_64_bit >> 2;\n            break;\n        default:\n            break;\n    }\nclean_exit:\n    if (PyErr_Occurred()) {\n        return 1;\n    }\n    return 0;\n}\n\n\nint\nfreadstrn(char* buffer, int n, FILE* fptr) \n{\n    int c;\n    int idx = 0;\n    while (1) {\n        c = fgetc(fptr);\n        if (c == EOF || c == '\\0') {\n            buffer[idx++] = '\\0';\n            break;\n        } else {\n            buffer[idx++] = c;\n        }\n        if (idx == n) {\n            break;\n        }\n    }\n    return idx;\n}\n\nchar*\nfreadstr(FILE* fptr)\n{\n    char* str = NULL;\n    int c = 0;\n    size_t len = 256;\n    size_t idx = 0;\n    str = malloc(len * sizeof(char));\n    if (str == NULL) {\n        return NULL;\n    }\n    while ((c = fgetc(fptr)) != EOF && c != '\\0') {\n        str[idx++] = c;\n        if (idx == len) {\n            len *= 2;\n            str = realloc(str, len * sizeof(char));\n            if (str == NULL) {\n                return NULL;\n            }\n        }\n    }\n    str[idx++] = '\\0';\n    return str;\n}\n\nint\ndump_metadata(FILE* fptr)\n{\n    uint64_t version = VCOMPRESSOR_VERSION;\n    if (!fptr) {\n        return -1;\n    }\n\n    fwrite(&version, 1, sizeof(uint64_t), fptr);\n\n    return 0;\n}\n\n\nPyObject*\njson_dumps_to_bytes(PyObject* json_data)\n{\n    PyObject* json_ret      = NULL;\n    PyObject* bytes_data    = NULL;\n    PyObject* dumps_func    = NULL;\n\n    if (!json_data) {\n        PyErr_SetString(PyExc_ValueError, \"json_data can not be NULL\");\n        goto clean_exit;\n    }\n    dumps_func = PyObject_GetAttrString(json_module, \"dumps\");\n    if (!dumps_func) {\n        goto clean_exit;\n    }\n\n    // json dumps json_data\n    json_ret = PyObject_CallOneArg(dumps_func, json_data);\n    if (!json_ret) {\n        goto clean_exit;\n    }\n\n    // convert string to bytes\n    bytes_data = PyObject_CallMethod(json_ret, \"encode\", NULL);\n    Py_DECREF(json_ret);\n    if (!bytes_data) {\n        goto clean_exit;\n    }\n    if (!PyBytes_Check(bytes_data)) {\n        // need to release bytes_data here, bytes_data will not release after clean_exit\n        Py_DECREF(bytes_data);\n        PyErr_SetString(PyExc_ValueError, \"Failed to convert string to bytes\");\n        goto clean_exit;\n    }\n\nclean_exit:\n    Py_XDECREF(dumps_func);\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return bytes_data;\n}\n\n\nPyObject*\njson_loads_from_bytes(PyObject* bytes_data)\n{\n    PyObject* loads_func    = NULL;\n    PyObject* string_data   = NULL;\n    PyObject* json_data     = NULL;\n\n    if (!PyBytes_Check(bytes_data)) {\n        Py_DECREF(bytes_data);\n        PyErr_SetString(PyExc_ValueError, \"expect a bytes object to decode\");\n        goto clean_exit;\n    }\n\n    loads_func = PyObject_GetAttrString(json_module, \"loads\");\n    if (!loads_func) {\n        goto clean_exit;\n    }\n\n    // decode depressed bytes to string\n    string_data = PyObject_CallMethod(bytes_data, \"decode\", NULL);\n    if (!string_data) {\n        goto clean_exit;\n    }\n\n    // convert string to json\n    json_data = PyObject_CallOneArg(loads_func, string_data);\n    if (!json_data) {\n        goto clean_exit;\n    }\n\nclean_exit:\n    Py_XDECREF(loads_func);\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return json_data;\n}\n\n\nPyObject*\ncompress_bytes(PyObject* bytes_data)\n{\n    PyObject* compress_func     = NULL;\n    PyObject* compressed_data   = NULL;\n\n    if (!PyBytes_Check(bytes_data)) {\n        Py_DECREF(bytes_data);\n        PyErr_SetString(PyExc_ValueError, \"expect a bytes object to compress\");\n        goto clean_exit;\n    }\n\n    compress_func = PyObject_GetAttrString(zlib_module, \"compress\");\n    if (!compress_func) {\n        goto clean_exit;\n    }\n\n    compressed_data = PyObject_CallOneArg(compress_func, bytes_data);\n    if (!compressed_data) {\n        goto clean_exit;\n    }\n    if (!PyBytes_Check(compressed_data)) {\n        Py_DECREF(compressed_data);\n        PyErr_SetString(PyExc_ValueError, \"zlib.compress() returns a none bytes object\");\n        goto clean_exit;\n    }\n\nclean_exit:\n    Py_XDECREF(compress_func);\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return compressed_data;\n}\n\n\nPyObject*\ndecompress_bytes(PyObject* bytes_data)\n{\n    // decompress data\n    PyObject* decompressed_data = NULL;\n    PyObject* decompress_func = NULL;\n\n    if (!PyBytes_Check(bytes_data)) {\n        Py_DECREF(bytes_data);\n        PyErr_SetString(PyExc_ValueError, \"expect a bytes object to decompress\");\n        goto clean_exit;\n    }\n\n    decompress_func = PyObject_GetAttrString(zlib_module, \"decompress\");\n    if (!decompress_func) {\n        goto clean_exit;\n    }\n\n    decompressed_data = PyObject_CallOneArg(decompress_func, bytes_data);\n    if (!decompressed_data) {\n        goto clean_exit;\n    }\n    if (!PyBytes_Check(decompressed_data)) {\n        Py_DECREF(decompressed_data);\n        PyErr_SetString(PyExc_ValueError, \"zlib.decompress() returns a none bytes object\");\n        goto clean_exit;\n    }\nclean_exit:\n    Py_XDECREF(decompress_func);\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return decompressed_data;\n}\n\n\nint\njson_dumps_and_compress_to_file(PyObject* json_data, FILE* fptr)\n{\n    char* buffer;\n    uint64_t uncompressed_size = 0;\n    uint64_t compressed_size = 0;\n    PyObject* bytes_data = NULL;\n    PyObject* compressed_data = NULL;\n\n    bytes_data = json_dumps_to_bytes(json_data);\n    if (!bytes_data) {\n        goto clean_exit;\n    }\n    uncompressed_size = PyBytes_Size(bytes_data);\n    if (NEED_COMPRESS_IN_FILE) {\n        compressed_data = compress_bytes(bytes_data);\n        if (!compressed_data) {\n            goto clean_exit;\n        }\n        compressed_size = PyBytes_Size(compressed_data);\n        buffer = PyBytes_AsString(compressed_data);\n        fwrite(&uncompressed_size, sizeof(uint64_t), 1, fptr);\n        fwrite(&compressed_size, sizeof(uint64_t), 1, fptr);\n        fwrite(buffer, sizeof(char), compressed_size, fptr);\n        Py_DECREF(compressed_data);\n    } else {\n        buffer = PyBytes_AsString(bytes_data);\n        fwrite(&uncompressed_size, sizeof(uint64_t), 1, fptr);\n        fwrite(buffer, sizeof(char), uncompressed_size, fptr);\n    }\n    \nclean_exit:\n    Py_DECREF(bytes_data);\n    if (PyErr_Occurred()) {\n        return 1;\n    }\n    return 0;\n}\n\n\nPyObject*\njson_loads_and_decompress_from_file(FILE* fptr)\n{\n    char* buffer = NULL;\n    uint64_t compressed_size = 0;\n    uint64_t uncompressed_size = 0;\n    uint64_t read_length = 0;\n    PyObject* json_data = NULL;\n    PyObject* compressed_data = NULL;\n    PyObject* bytes_data = NULL;\n\n    if (NEED_COMPRESS_IN_FILE) {\n        READ_DATA(&uncompressed_size, uint64_t, fptr)\n        READ_DATA(&compressed_size, uint64_t, fptr)\n        buffer = (char *)malloc(sizeof(char)*compressed_size);\n        if (!buffer) {\n            PyErr_Format(PyExc_RuntimeError, \"Failed to malloc memory size %lld\", compressed_size);\n            goto clean_exit;\n        }\n        read_length = fread(buffer, sizeof(char), compressed_size, fptr);\n        if (read_length != compressed_size) {\n            PyErr_Format(PyExc_ValueError, \"file is corrupted\");\n            free(buffer);\n            goto clean_exit;\n        }\n        compressed_data = PyBytes_FromStringAndSize(buffer, compressed_size);\n        free(buffer);\n        if (!compressed_data) {\n            goto clean_exit;\n        }\n        bytes_data = decompress_bytes(compressed_data);\n        Py_DECREF(compressed_data);\n    } else {\n        READ_DATA(&uncompressed_size, uint64_t, fptr)\n        buffer = (char *)malloc(sizeof(char)*uncompressed_size);\n        if (!buffer) {\n            PyErr_Format(PyExc_RuntimeError, \"Failed to malloc memory size %lld\", uncompressed_size);\n            goto clean_exit;\n        }\n        read_length = fread(buffer, sizeof(char), uncompressed_size, fptr);\n        if (read_length != uncompressed_size) {\n            PyErr_Format(PyExc_ValueError, \"file is corrupted\");\n            free(buffer);\n            goto clean_exit;\n        }\n        bytes_data = PyBytes_FromStringAndSize(buffer, uncompressed_size);\n        free(buffer);\n    }\n\n    if (!bytes_data) {\n        goto clean_exit;\n    }\n    json_data = json_loads_from_bytes(bytes_data);\n    Py_DECREF(bytes_data);\n    if (!json_data) {\n        goto clean_exit;\n    }\n\nclean_exit:\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n    return json_data;\n}\n\n\nint\ndump_parsed_trace_events(PyObject* trace_events, FILE* fptr)\n{\n    // Dump process and thread names\n    PyObject* process_names  = PyDict_GetItemString(trace_events, \"process_names\");\n    PyObject* thread_names   = PyDict_GetItemString(trace_events, \"thread_names\");\n    PyObject* fee_events     = PyDict_GetItemString(trace_events, \"fee_events\");\n    PyObject* counter_events = PyDict_GetItemString(trace_events, \"counter_events\");\n    PyObject* other_events   = PyDict_GetItemString(trace_events, \"other_events\");\n    Py_ssize_t ppos = 0;\n    PyObject* key   = NULL;\n    PyObject* value = NULL;\n\n    // Iterate through process names\n    ppos = 0;\n    while (PyDict_Next(process_names, &ppos, &key, &value)) {\n        uint64_t pid = PyLong_AsLong(PyTuple_GetItem(key, 0));\n        uint64_t tid = PyLong_AsLong(PyTuple_GetItem(key, 1));\n        const char* name = PyUnicode_AsUTF8(value);\n        fputc(VC_HEADER_PROCESS_NAME, fptr);\n        fwrite(&pid, sizeof(uint64_t), 1, fptr);\n        fwrite(&tid, sizeof(uint64_t), 1, fptr);\n        fwritestr(name, fptr);\n    }\n\n    // Iterate through thread names\n    ppos = 0;\n    while (PyDict_Next(thread_names, &ppos, &key, &value)) {\n        uint64_t pid = PyLong_AsLong(PyTuple_GetItem(key, 0));\n        uint64_t tid = PyLong_AsLong(PyTuple_GetItem(key, 1));\n        const char* name = PyUnicode_AsUTF8(value);\n        fputc(VC_HEADER_THREAD_NAME, fptr);\n        fwrite(&pid, sizeof(uint64_t), 1, fptr);\n        fwrite(&tid, sizeof(uint64_t), 1, fptr);\n        fwritestr(name, fptr);\n    }\n\n    // Iterate through fee events\n    ppos = 0;\n    while (PyDict_Next(fee_events, &ppos, &key, &value)) {\n        if (write_fee_events(key, value, fptr) != 0){\n            goto clean_exit;\n        }\n    }\n\n    // Iterate through counter events\n    ppos = 0;\n    while (PyDict_Next(counter_events, &ppos, &key, &value)) {\n        uint64_t pid = PyLong_AsLong(PyTuple_GetItem(key, 0));\n        uint64_t tid = PyLong_AsLong(PyTuple_GetItem(key, 1));\n        const char* name = PyUnicode_AsUTF8(PyTuple_GetItem(key, 2));\n        fputc(VC_HEADER_COUNTER_EVENTS, fptr);\n        fwrite(&pid, sizeof(uint64_t), 1, fptr);\n        fwrite(&tid, sizeof(uint64_t), 1, fptr);\n        fwritestr(name, fptr);\n        if (diff_and_write_counter_args(value, fptr) != 0) {\n            goto clean_exit;\n        }\n    }\n\n    // just write other events\n    fputc(VC_HEADER_OTHER_EVENTS, fptr);\n    if (json_dumps_and_compress_to_file(other_events, fptr) != 0) {\n        goto clean_exit;\n    }\nclean_exit:\n    if (PyErr_Occurred()) {\n        return 1;\n    }\n\n    return 0;\n}\n\n\nint\nwrite_fee_events(PyObject* fee_key, PyObject* fee_value, FILE* fptr) {\n    PyObject* args_list = NULL;\n    uint64_t pid = PyLong_AsLong(PyTuple_GetItem(fee_key, 0));\n    uint64_t tid = PyLong_AsLong(PyTuple_GetItem(fee_key, 1));\n    uint64_t ts_size = PyList_GET_SIZE(fee_value);\n    uint64_t args_offset = 0;\n    int64_t last_ts = 0;\n    const char* name = PyUnicode_AsUTF8(PyTuple_GetItem(fee_key, 2));\n    int place_holder = 0;\n    fputc(VC_HEADER_FEE, fptr);\n    fwrite(&pid, sizeof(uint64_t), 1, fptr);\n    fwrite(&tid, sizeof(uint64_t), 1, fptr);\n    fwritestr(name, fptr);\n    fwrite(&ts_size, sizeof(uint64_t), 1, fptr);\n    if (!PyObject_CallMethod(fee_value, \"sort\", NULL)) {\n        goto clean_exit;\n    }\n    // write place holder for args offset\n    place_holder = ftell(fptr);\n    fwrite(&args_offset, sizeof(uint64_t), 1, fptr);\n    if (PyTuple_GetItem(fee_key, 3) == Py_True) {\n        args_list = PyList_New(0);\n    }\n    for (Py_ssize_t idx = 0; idx < (Py_ssize_t)ts_size; idx++) {\n        PyObject * event_ts_tuple = PyList_GET_ITEM(fee_value, idx);\n        double ts = PyFloat_AsDouble(PyTuple_GET_ITEM(event_ts_tuple, 0));\n        double dur = PyFloat_AsDouble(PyTuple_GET_ITEM(event_ts_tuple, 1));\n        int64_t ts64 = ts * 100;\n        uint64_t dur64 = dur * 100;\n        uint64_t delta_ts = ts64 - last_ts;\n        last_ts = ts64;\n        if (idx == 0) {\n            // write the first timestamp as int64_t, for timestamp on windows may be negative\n            fwrite(&ts64, sizeof(int64_t), 1, fptr);\n        } else {\n            write_encoded_int(delta_ts, fptr);\n        }\n        write_encoded_int(dur64, fptr);\n        if (args_list) {\n            PyList_Append(args_list, PyTuple_GET_ITEM(event_ts_tuple, 2));\n        }\n    }\n\n    if (args_list) {\n        args_offset = ftell(fptr);\n        fseek(fptr, place_holder, SEEK_SET);\n        fwrite(&args_offset, sizeof(args_offset), 1, fptr);\n        fseek(fptr, args_offset, SEEK_SET);\n        if (json_dumps_and_compress_to_file(args_list, fptr) != 0) {\n            goto clean_exit;\n        }\n    }\n\nclean_exit:\n    Py_XDECREF(args_list);\n\n    if (PyErr_Occurred()) {\n        return 1;\n    }\n    return 0;\n}\n\n\nPyObject*\nload_fee_events(FILE* fptr) {\n    uint64_t pid    = 0;\n    uint64_t tid    = 0;\n    uint64_t count  = 0;\n    uint64_t dur    = 0;\n    uint64_t delta_ts     = 0;\n    uint64_t args_offset  = 0;\n    uint64_t place_holder_ts  = 0;\n    uint64_t place_holder_end = 0;\n    int64_t last_ts = 0;\n    char buffer[STRING_BUFFER_SIZE] = {0};\n    PyObject* fee_events_list   = PyList_New(0);\n    PyObject* event             = NULL;\n    PyObject* name              = NULL;\n    PyObject* args_list         = NULL;\n    PyObject* unicode_X         = PyUnicode_FromString(\"X\");\n    PyObject* unicode_FEE       = PyUnicode_FromString(\"FEE\");\n\n    READ_DATA(&pid, uint64_t, fptr);\n    READ_DATA(&tid, uint64_t, fptr);\n    freadstrn(buffer, STRING_BUFFER_SIZE - 1, fptr);\n    READ_DATA(&count, uint64_t, fptr);\n    name = PyUnicode_FromString(buffer);\n    READ_DATA(&args_offset, uint64_t, fptr);\n    if (args_offset != 0) {\n        // read fee args\n        place_holder_ts = ftell(fptr);\n        if (fseek(fptr, args_offset, SEEK_SET) != 0) {\n            PyErr_SetString(PyExc_ValueError, \"seek to args offset failed!\");\n            goto clean_exit;\n        }\n        args_list = json_loads_and_decompress_from_file(fptr);\n        if (!args_list) {\n            goto clean_exit;\n        }\n        // There's error checking in PyList_Size\n        if (PyList_Size(args_list) != (Py_ssize_t)count) {\n            PyErr_SetString(PyExc_ValueError, \"args length is not equal to count!\");\n            goto clean_exit;\n        }\n        place_holder_end = ftell(fptr);\n        fseek(fptr, place_holder_ts, SEEK_SET);\n    }\n\n    for (uint64_t i = 0; i < count; i++) {\n        if (i == 0) {\n            READ_DATA(&last_ts, int64_t, fptr);\n        } else {\n            if (read_encoded_int(&delta_ts, fptr) != 0) {\n                goto clean_exit;\n            }\n        }\n        if (read_encoded_int(&dur, fptr) != 0) {\n            goto clean_exit;\n        }\n        event = PyDict_New();\n        PyDict_SetItemString(event, \"ph\", unicode_X);\n        PyDict_SetItemString(event, \"name\", name);\n        PyDict_SetItemString(event, \"cat\", unicode_FEE);\n        PyDict_SetItemStringULL(event, \"pid\", pid);\n        PyDict_SetItemStringULL(event, \"tid\", tid);\n        last_ts = delta_ts + last_ts;\n        PyDict_SetItemStringDouble(event, \"ts\", (double)last_ts / 100);\n        PyDict_SetItemStringDouble(event, \"dur\", (double)dur / 100);\n        if (args_list) {\n            PyDict_SetItemString(event, \"args\", PyList_GET_ITEM(args_list, i));\n        }\n        PyList_Append(fee_events_list, event);\n        Py_DECREF(event);\n    }\n    if (args_list) {\n        fseek(fptr, place_holder_end, SEEK_SET);\n    }\n    \nclean_exit:\n    Py_XDECREF(name);\n    Py_XDECREF(args_list);\n    Py_DECREF(unicode_X);\n    Py_DECREF(unicode_FEE);\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return fee_events_list;\n}\n\n\nint\ndiff_and_write_counter_args(PyObject* counter_args, FILE* fptr) {\n    /* there may be several args in a counter, log them all may take more spaces\n    *  so this step is to do diffing between two contiguous timestamp\n    *  and finally we only log those changed args\n    *  Here's a counter_args example that we parsed\n    *  {\n    *      1.1: {\"a\": 20, \"b\": 10}\n    *      2.2: {\"a\": 30, \"b\": 10}\n    *  }\n    *  In this case, \"b\" value is not changed, so we only need to log\n    *  {\n    *      1.1: {\"a\": 20, \"b\": 10}\n    *      2.2: {\"a\": 30}\n    *  }\n    */\n    PyObject* cached_args_dict = PyDict_New();\n    PyObject* diffed_args = PyDict_New();\n    PyObject* ts_keys = PyDict_Keys(counter_args);\n    PyObject* ts = NULL;\n    PyObject* cur_diffed_arg = NULL;\n    PyObject* cur_counter_arg = NULL;\n    PyObject* arg_key_list = NULL;\n    PyObject* counter_arg_key = NULL;\n    PyObject* counter_arg_value = NULL;\n    PyObject* cached_arg_value = NULL;\n    PyObject* overflowed_num_string = NULL;\n    Py_ssize_t ppos = 0;\n    uint64_t ts_key_count = 0;\n    uint64_t arg_nums = 0;\n    // sort the args by timestamp so we can diff\n    if (!ts_keys || !PyList_Check(ts_keys)) {\n        PyErr_SetString(PyExc_ValueError, \"failed to get timestamp list\");\n        goto clean_exit;\n    }\n    ts_key_count = PyList_GET_SIZE(ts_keys);\n    if (PyList_Sort(ts_keys) == -1) {\n        goto clean_exit;\n    }\n    /* Do diffing between two timestamps and store the result.\n    *  In this for loop, we iterate all the counter_args by the sort of timestamp.\n    *  And we mainly have three variables used to do the diffing:\n    *      cur_counter_arg: the full args of this timestamp\n    *      cached_args_dict: the full args of last timestamp\n    *      cur_diffed_arg: diffed result between cached_args_dict and cur_counter_arg\n    */\n    for (uint64_t i = 0; i < ts_key_count; i++) {\n        ts = PyList_GET_ITEM(ts_keys, i);\n        cur_counter_arg = PyDict_GetItem(counter_args, ts);\n        cur_diffed_arg = PyDict_New();\n        ppos = 0;\n        /*  This while statement is to find the different arg between cur_counter_arg and cached_args_dict.\n        *   It will iterate the arg value of cur_counter_arg, and compare with the value in cached_args_dict.\n        *   If the value is same, just ignore this value\n        *   If the value is different, then store it in cur_diffed_arg and update it in cached_args_dict.\n        */\n        while (PyDict_Next(cur_counter_arg, &ppos, &counter_arg_key, &counter_arg_value)) {\n            cached_arg_value = PyDict_GetItem(cached_args_dict, counter_arg_key);\n            if (!cached_arg_value) {\n                PyDict_SetItem(cached_args_dict, counter_arg_key, counter_arg_value);\n                PyDict_SetItem(cur_diffed_arg, counter_arg_key, counter_arg_value);\n            } else {\n                int compare_result = PyObject_RichCompareBool(cached_arg_value, counter_arg_value, Py_EQ);\n                if (compare_result == -1) {\n                    // compare error \n                    goto clean_exit;\n                } else if (compare_result == 0) {\n                    // if value is not equal in last timestamp, store the newest value\n                    PyDict_SetItem(cached_args_dict, counter_arg_key, counter_arg_value);\n                    PyDict_SetItem(cur_diffed_arg, counter_arg_key, counter_arg_value);\n                }\n            }\n        }\n        ppos = 0;\n        /*  This while statement is to find the arg that is in cached_args_dict but not in cur_counter_arg.\n        *   Considering the situation that an arg is deleted at some timestamp, for example:\n        *      {\n        *          1.1: {\"a\": 20, \"b\": 10}\n        *          2.2: {\"a\": 20}\n        *      }\n        *   In this case, we need to mark b value as UNKNOWN at timestamp 2.2\n        *   This step is to iterate arg in cached_args_dict and determine if the arg is in cur_counter_arg\n        *   Normally, the value of counter_arg is always numeric\n        *   So we use Py_None to mark the value as UNKNOWN\n        */\n        while (PyDict_Next(cached_args_dict, &ppos, &counter_arg_key, &cached_arg_value)) {\n            counter_arg_value = PyDict_GetItem(cur_counter_arg, counter_arg_key);\n            if (!counter_arg_value && cached_arg_value != Py_None) {\n                PyDict_SetItem(cached_args_dict, counter_arg_key, Py_None);\n                PyDict_SetItem(cur_diffed_arg, counter_arg_key, Py_None);\n            }\n        }\n        PyDict_SetItem(diffed_args, ts, cur_diffed_arg);\n        Py_DECREF(cur_diffed_arg);\n    }\n    // write all the arg keys\n    // write the number of timestamp of this counter\n    arg_nums = PyDict_Size(cached_args_dict);\n    fwrite(&arg_nums, sizeof(uint64_t), 1, fptr);\n    arg_key_list = PyDict_Keys(cached_args_dict);\n    if (!arg_key_list) {\n        PyErr_SetString(PyExc_ValueError, \"failed to get arg name list\");\n        goto clean_exit;\n    }\n    // write all the name for all arguments appeared\n    for (uint64_t i = 0; i < arg_nums; i++) {\n        const char * key_name = NULL;\n        counter_arg_key = PyList_GetItem(arg_key_list, i);\n        key_name = PyUnicode_AsUTF8(counter_arg_key);\n        fwritestr(key_name, fptr);\n    }\n    // write [timestamp - values] * ts_key_count\n    fwrite(&ts_key_count, sizeof(uint64_t), 1, fptr);\n    for (uint64_t i = 0; i < ts_key_count; i++) {\n        double ts_double = 0;\n        int64_t ts_64 = 0;\n        ts = PyList_GET_ITEM(ts_keys, i);\n        cur_diffed_arg = PyDict_GetItem(diffed_args, ts);\n        ts_double = PyFloat_AsDouble(ts);\n        ts_64 = ts_double * 1000;\n        fwrite(&ts_64, sizeof(int64_t), 1, fptr);\n        for (uint64_t j = 0; j < arg_nums; j++) {\n            counter_arg_value = PyDict_GetItem(cur_diffed_arg, PyList_GET_ITEM(arg_key_list, j));\n            if (!counter_arg_value) {\n                fputc(VC_HEADER_COUNTER_ARG_SAME, fptr);\n            } else if (PyLong_CheckExact(counter_arg_value)) {\n                // if PyLongObject is overflowed, just store the string \n                int overflow = 0;\n                int64_t counter_value_int64 = PyLong_AsLongLongAndOverflow(counter_arg_value, &overflow);\n                if (overflow == 0) {\n                    fputc(VC_HEADER_COUNTER_ARG_LONG, fptr);\n                    fwrite(&counter_value_int64, sizeof(int64_t), 1, fptr);\n                } else {\n                    const char * num_string = NULL;\n                    overflowed_num_string = PyObject_Repr(counter_arg_value);\n                    num_string = PyUnicode_AsUTF8(overflowed_num_string);\n                    fputc(VC_HEADER_COUNTER_ARG_LONG_STRING, fptr);\n                    fwritestr(num_string, fptr);\n                    Py_DECREF(overflowed_num_string);\n                }\n            } else if (PyFloat_CheckExact(counter_arg_value)) {\n                double counter_value_double = PyFloat_AsDouble(counter_arg_value);\n                fputc(VC_HEADER_COUNTER_ARG_FLOAT, fptr);\n                fwrite(&counter_value_double, sizeof(double), 1, fptr);\n            } else if (counter_arg_value == Py_None) {\n                fputc(VC_HEADER_COUNTER_ARG_UNKNOWN, fptr);\n            } else {\n                PyErr_SetString(PyExc_ValueError, \"Counter can only take numeric values\");\n                goto clean_exit;\n            }\n        }\n    }\n\nclean_exit:\n    Py_XDECREF(arg_key_list);\n    Py_XDECREF(ts_keys);\n    Py_DECREF(cached_args_dict);\n    Py_DECREF(diffed_args);\n\n    if (PyErr_Occurred()) {\n        return 1;\n    }\n\n    return 0;\n}\n\nPyObject*\nload_counter_event(FILE* fptr)\n{\n    PyObject* counter_events_list = PyList_New(0);\n    PyObject* arg_key_list = PyList_New(0);\n    PyObject* cached_args = PyDict_New();\n    PyObject* counter_ph = PyUnicode_FromString(\"C\");\n    PyObject* counter_event = NULL;\n    PyObject* current_arg = NULL;\n    PyObject* counter_arg_key = NULL;\n    PyObject* counter_arg_value = NULL;\n    PyObject* counter_name = NULL;\n    PyObject* counter_pid = NULL;\n    PyObject* counter_tid = NULL;\n    uint64_t pid = 0;\n    uint64_t tid = 0;\n    uint64_t arg_key_count = 0;\n    uint64_t counter_event_count = 0;\n    int64_t ts_64 = 0;\n    uint8_t header = 0;\n    int64_t value_longlong = 0;\n    double value_double = 0;\n    char buffer[STRING_BUFFER_SIZE] = {0};\n    char* string_value = NULL;\n    char* name = NULL;\n\n    // read pid, tid, name and keys\n    READ_DATA(&pid, uint64_t, fptr);\n    READ_DATA(&tid, uint64_t, fptr);\n    name = freadstr(fptr);\n    READ_DATA(&arg_key_count, uint64_t, fptr);\n    counter_name = PyUnicode_FromString(name);\n    free(name);\n    counter_pid = PyLong_FromUnsignedLongLong(pid);\n    counter_tid = PyLong_FromUnsignedLongLong(tid);\n    for (uint64_t i = 0; i < arg_key_count; i++) {\n        freadstrn(buffer, STRING_BUFFER_SIZE - 1, fptr);\n        counter_arg_key = PyUnicode_FromString(buffer);\n        PyList_Append(arg_key_list, counter_arg_key);\n        Py_DECREF(counter_arg_key);\n    }\n\n    // read counter events\n    // cached_args stores the newest value\n    // current_arg stores the counter arg of current timestamp\n    READ_DATA(&counter_event_count, uint64_t, fptr);\n    for (uint64_t i = 0; i < counter_event_count; i++) {\n        current_arg = PyDict_New();\n        READ_DATA(&ts_64, int64_t, fptr);\n        for (uint64_t j = 0; j < arg_key_count; j++) {\n            READ_DATA(&header, uint8_t, fptr);\n            counter_arg_key = PyList_GetItem(arg_key_list, j);\n            // counter arg not change means current value is same with it in last arg\n            // so we need to read it from cached_args \n            // other state means current value is different from it in last arg\n            // so we need to read it from file and save it in cached_args\n            switch (header)\n            {\n                case VC_HEADER_COUNTER_ARG_UNKNOWN:\n                    PyDict_SetItem(cached_args, counter_arg_key, Py_None);\n                    break;\n                case VC_HEADER_COUNTER_ARG_SAME:\n                    counter_arg_value = PyDict_GetItem(cached_args, counter_arg_key);\n                    if (counter_arg_value && counter_arg_value != Py_None) {\n                        PyDict_SetItem(current_arg, counter_arg_key, counter_arg_value);\n                    }\n                    break;\n                case VC_HEADER_COUNTER_ARG_LONG:\n                    READ_DATA(&value_longlong, int64_t, fptr);\n                    counter_arg_value = PyLong_FromLongLong(value_longlong);\n                    PyDict_SetItem(current_arg, counter_arg_key, counter_arg_value);\n                    PyDict_SetItem(cached_args, counter_arg_key, counter_arg_value);\n                    Py_DECREF(counter_arg_value);\n                    break;\n                case VC_HEADER_COUNTER_ARG_FLOAT:\n                    READ_DATA(&value_double, double, fptr);\n                    counter_arg_value = PyFloat_FromDouble(value_double);\n                    PyDict_SetItem(current_arg, counter_arg_key, counter_arg_value);\n                    PyDict_SetItem(cached_args, counter_arg_key, counter_arg_value);\n                    Py_DECREF(counter_arg_value);\n                    break;\n                case VC_HEADER_COUNTER_ARG_LONG_STRING:\n                    string_value = freadstr(fptr);\n                    counter_arg_value = PyLong_FromString(string_value, NULL, 0);\n                    free(string_value);\n                    PyDict_SetItem(current_arg, counter_arg_key, counter_arg_value);\n                    PyDict_SetItem(cached_args, counter_arg_key, counter_arg_value);\n                    Py_DECREF(counter_arg_value);\n                    break;\n                default:\n                    PyErr_SetString(PyExc_ValueError, \"counter arg header error!\");\n                    goto clean_exit;\n            }\n        }\n        counter_event = PyDict_New();\n        PyList_Append(counter_events_list, counter_event);\n        Py_DECREF(counter_event);\n        PyDict_SetItemString(counter_event, \"name\", counter_name);\n        PyDict_SetItemString(counter_event, \"pid\", counter_pid);\n        PyDict_SetItemString(counter_event, \"tid\", counter_tid);\n        PyDict_SetItemString(counter_event, \"ph\", counter_ph);\n        PyDict_SetItemString(counter_event, \"args\", current_arg);\n        Py_DECREF(current_arg);\n        PyDict_SetItemStringDouble(counter_event, \"ts\", (double)ts_64 / 1000);\n    }\n\nclean_exit:\n    if (counter_name) {\n        Py_DECREF(counter_name);\n    }\n    if (counter_pid) {\n        Py_DECREF(counter_pid);\n    }\n    if (counter_tid) {\n        Py_DECREF(counter_tid);\n    }\n    \n    Py_DECREF(counter_ph);\n    Py_DECREF(arg_key_list);\n    Py_DECREF(cached_args);\n\n    if (PyErr_Occurred()) {\n        Py_DECREF(counter_events_list);\n        return NULL; \n    }\n\n    return counter_events_list;\n}\n\nPyObject*\nload_events_from_file(FILE* fptr)\n{\n    uint64_t version = 0;\n    uint8_t header = 0;\n    PyObject* parsed_events = PyDict_New();\n    PyObject* trace_events = PyList_New(0);\n    PyObject* file_info = NULL;\n    PyObject* name = NULL;\n    PyObject* event = NULL;\n    PyObject* counter_events = NULL;\n    PyObject* fee_events     = NULL;\n    PyObject* other_events   = NULL;\n    uint64_t pid = 0;\n    uint64_t tid = 0;\n    PyObject* args = NULL;\n    PyObject* unicode_X = PyUnicode_FromString(\"X\");\n    PyObject* unicode_M = PyUnicode_FromString(\"M\");\n    PyObject* unicode_FEE = PyUnicode_FromString(\"FEE\");\n    PyObject* unicode_process_name = PyUnicode_FromString(\"process_name\");\n    PyObject* unicode_thread_name = PyUnicode_FromString(\"thread_name\");\n\n    char buffer[STRING_BUFFER_SIZE] = {0};\n\n    READ_DATA(&version, uint64_t, fptr);\n    if (version != VCOMPRESSOR_VERSION) {\n        Py_DECREF(trace_events);\n        PyErr_SetString(PyExc_ValueError, \"VCompressor does not support this version of file\");\n        goto clean_exit;\n    }\n\n    PyDict_SetItemString(parsed_events, \"traceEvents\", trace_events);\n    Py_DECREF(trace_events);\n\n    while (fread(&header, sizeof(uint8_t), 1, fptr)) {\n        switch (header) {\n            case VC_HEADER_PROCESS_NAME:\n                event = PyDict_New();\n                READ_DATA(&pid, uint64_t, fptr);\n                READ_DATA(&tid, uint64_t, fptr);\n                freadstrn(buffer, STRING_BUFFER_SIZE - 1, fptr);\n                name = PyUnicode_FromString(buffer);\n                event = PyDict_New();\n                args = PyDict_New();\n                PyDict_SetItemString(event, \"ph\", unicode_M);\n                PyDict_SetItemString(event, \"name\", unicode_process_name);\n                PyDict_SetItemStringULL(event, \"pid\", pid);\n                PyDict_SetItemStringULL(event, \"tid\", tid);\n                PyDict_SetItemString(event, \"args\", args);\n                PyDict_SetItemString(args, \"name\", name);\n                PyList_Append(trace_events, event);\n                Py_DECREF(name);\n                Py_DECREF(event);\n                Py_DECREF(args);\n                break;\n            case VC_HEADER_THREAD_NAME:\n                event = PyDict_New();\n                READ_DATA(&pid, uint64_t, fptr);\n                READ_DATA(&tid, uint64_t, fptr);\n                freadstrn(buffer, STRING_BUFFER_SIZE - 1, fptr);\n                name = PyUnicode_FromString(buffer);\n                event = PyDict_New();\n                args = PyDict_New();\n                PyDict_SetItemString(event, \"ph\", unicode_M);\n                PyDict_SetItemString(event, \"name\", unicode_thread_name);\n                PyDict_SetItemStringULL(event, \"pid\", pid);\n                PyDict_SetItemStringULL(event, \"tid\", tid);\n                PyDict_SetItemString(event, \"args\", args);\n                PyDict_SetItemString(args, \"name\", name);\n                PyList_Append(trace_events, event);\n                Py_DECREF(name);\n                Py_DECREF(event);\n                Py_DECREF(args);\n                break;\n            case VC_HEADER_FEE:\n                fee_events = load_fee_events(fptr);\n                if (!fee_events) {\n                    goto clean_exit;\n                }\n                PyObject_CallMethod(trace_events, \"extend\", \"O\", fee_events);\n                Py_DECREF(fee_events);\n                if (PyErr_Occurred()) {\n                    goto clean_exit;\n                }\n                break;\n            case VC_HEADER_FILE_INFO:\n                file_info = load_file_info(fptr);\n                if (!file_info) {\n                    goto clean_exit;\n                }\n                PyDict_SetItemString(parsed_events, \"file_info\", file_info);\n                Py_DECREF(file_info);\n                break;\n            case VC_HEADER_COUNTER_EVENTS:\n                counter_events = load_counter_event(fptr);\n                if (!counter_events) {\n                    goto clean_exit;\n                }\n                PyObject_CallMethod(trace_events, \"extend\", \"O\", counter_events);\n                Py_DECREF(counter_events);\n                if (PyErr_Occurred()) {\n                    goto clean_exit;\n                }\n                break;\n            case VC_HEADER_OTHER_EVENTS:\n                other_events = json_loads_and_decompress_from_file(fptr);\n                if (!other_events) {\n                    goto clean_exit;\n                }\n                PyObject_CallMethod(trace_events, \"extend\", \"O\", other_events);\n                Py_DECREF(other_events);\n                if (PyErr_Occurred()) {\n                    goto clean_exit;\n                }\n                break;\n            default:\n                printf(\"wrong header %d\\n\", header);\n        }\n    }\n\nclean_exit:\n    Py_DECREF(unicode_X);\n    Py_DECREF(unicode_M);\n    Py_DECREF(unicode_FEE);\n    Py_DECREF(unicode_process_name);\n    Py_DECREF(unicode_thread_name);\n\n    if (PyErr_Occurred()) {\n        Py_DECREF(parsed_events);\n        return NULL;\n    }\n    return parsed_events;\n\n}\n\n\nint\ndump_file_info(PyObject* file_info, FILE* fptr)\n{\n    // write data\n    fputc(VC_HEADER_FILE_INFO, fptr);\n    if (json_dumps_and_compress_to_file(file_info, fptr) == 0){\n        return 0;\n    } else {\n        return 1;\n    }\n}\n\nPyObject*\nload_file_info(FILE* fptr)\n{\n    return json_loads_and_decompress_from_file(fptr);\n}\n"
  },
  {
    "path": "src/viztracer/modules/vcompressor/vc_dump.h",
    "content": "#ifndef __VC_DUMP_H__\n#define __VC_DUMP_H__\n\n#include <Python.h>\n\n#define VC_HEADER_RESERVED 0x00\n#define VC_HEADER_FEE 0x01\n#define VC_HEADER_PROCESS_NAME 0x02\n#define VC_HEADER_THREAD_NAME 0x03\n#define VC_HEADER_COUNTER_EVENTS 0x04\n#define VC_HEADER_OTHER_EVENTS 0x05\n#define VC_HEADER_FILE_INFO 0x11\n#define VC_HEADER_COUNTER_ARG_UNKNOWN 0x21\n#define VC_HEADER_COUNTER_ARG_SAME 0x22\n#define VC_HEADER_COUNTER_ARG_LONG 0x23\n#define VC_HEADER_COUNTER_ARG_FLOAT 0x24\n#define VC_HEADER_COUNTER_ARG_LONG_STRING 0x25\n\n#define TS_6_BIT   0x00\n#define TS_14_BIT  0x01\n#define TS_30_BIT  0x02\n#define TS_62_BIT  0x03\n\nPyObject* decompress_bytes(PyObject* bytes_data);\nPyObject* compress_bytes(PyObject* bytes_data);\nPyObject* json_loads_from_bytes(PyObject* bytes_data);\nPyObject* json_dumps_to_bytes(PyObject* json_data);\nPyObject* json_loads_and_decompress_from_file(FILE* fptr);\nint json_dumps_and_compress_to_file(PyObject* json_data, FILE* fptr);\n\nint dump_metadata(FILE* fptr);\n\nint dump_parsed_trace_events(PyObject* trace_events, FILE* fptr);\n\nint dump_file_info(PyObject* file_info, FILE* fptr);\n\nint diff_and_write_counter_args(PyObject* counter_args, FILE* fptr);\n\nint write_fee_events(PyObject* fee_key, PyObject* fee_value, FILE* fptr);\n\nPyObject* load_events_from_file(FILE* fptr);\n\nPyObject* load_file_info(FILE* fptr);\n\nPyObject* load_counter_event(FILE* fptr);\n\nPyObject * load_fee_events(FILE* fptr);\n\n#endif\n"
  },
  {
    "path": "src/viztracer/modules/vcompressor/vcompressor.c",
    "content": "// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n// For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n#include <Python.h>\n#include \"vcompressor.h\"\n#include \"vc_dump.h\"\n\nPyObject* json_module = NULL;\nPyObject* zlib_module = NULL;\n\nstatic PyObject* \nvcompressor_new(PyTypeObject* type, PyObject* args, PyObject* kwargs)\n{\n    PyObject* self = PyType_GenericNew(type, args, kwargs);\n    return (PyObject*)self;\n}\n\nstatic void \nvcompressor_dealloc(VcompressorObject* self)\n{\n    Py_TYPE(self)->tp_free((PyObject*) self);\n}\n\nstatic PyObject*\nparse_trace_events(PyObject* trace_events)\n{\n    PyObject* parsed_events  = NULL;\n    PyObject* fee_events     = NULL;\n    PyObject* counter_events = NULL;\n    PyObject* other_events   = NULL;\n    PyObject* process_names  = NULL;\n    PyObject* thread_names   = NULL;\n    PyObject* key = NULL;\n\n    if (!PyList_CheckExact(trace_events)) {\n        return NULL;\n    }\n\n    // Initialize the event holder\n    parsed_events = PyDict_New();\n    fee_events = PyDict_New();\n    counter_events = PyDict_New();\n    process_names = PyDict_New();\n    thread_names = PyDict_New();\n    other_events = PyList_New(0);\n    PyDict_SetItemString(parsed_events, \"fee_events\", fee_events);\n    PyDict_SetItemString(parsed_events, \"process_names\", process_names);\n    PyDict_SetItemString(parsed_events, \"thread_names\", thread_names);\n    PyDict_SetItemString(parsed_events, \"counter_events\", counter_events);\n    PyDict_SetItemString(parsed_events, \"other_events\", other_events);\n    Py_DECREF(fee_events);\n    Py_DECREF(process_names);\n    Py_DECREF(thread_names);\n    Py_DECREF(counter_events);\n    Py_DECREF(other_events);\n\n    for (Py_ssize_t i = 0; i < PyList_GET_SIZE(trace_events); i++) {\n        PyObject* event = PyList_GetItem(trace_events, i);\n        PyObject* ph = NULL;\n        PyObject* name = NULL;\n        PyObject* args_name = NULL;\n        PyObject* pid = NULL;\n        PyObject* tid = NULL;\n        PyObject* ts = NULL;\n        PyObject* dur = NULL;\n        PyObject* fee_args = NULL;\n        PyObject* counter_args = NULL;\n        PyObject* ts_dur_tuple = NULL;\n        PyObject* event_ts_list = NULL;\n        PyObject* counter_event_dict = NULL;\n        if (PyErr_Occurred() || !PyDict_CheckExact(event)) {\n            PyErr_SetString(PyExc_ValueError, \"event format failure\");\n            goto clean_exit;\n        }\n        ph = PyDict_GetItemString(event, \"ph\");\n        if (!ph || !PyUnicode_CheckExact(ph)) {\n            PyErr_SetString(PyExc_ValueError, \"event format failure\");\n            goto clean_exit;\n        }\n        switch (PyUnicode_AsUTF8(ph)[0]) {\n            case 'X':\n                name = PyDict_GetItemString(event, \"name\");\n                ts = PyDict_GetItemString(event, \"ts\");\n                dur = PyDict_GetItemString(event, \"dur\");\n                pid = PyDict_GetItemString(event, \"pid\");\n                tid = PyDict_GetItemString(event, \"tid\");\n                if (!ts || !dur || !pid || !tid) {\n                    PyErr_SetString(PyExc_ValueError, \"event format failure\");\n                    goto clean_exit;\n                }\n                // Prepare the tuple key\n                key = PyTuple_New(4);\n\n                // PyTuple_SetItem steals reference\n                Py_INCREF(pid);\n                Py_INCREF(tid);\n                Py_INCREF(name);\n                PyTuple_SET_ITEM(key, 0, pid);\n                PyTuple_SET_ITEM(key, 1, tid);\n                PyTuple_SET_ITEM(key, 2, name);\n\n                // This indicates that if there's args in fee\n                fee_args = PyDict_GetItemString(event, \"args\");\n                if (fee_args) {\n                    PyTuple_SET_ITEM(key, 3, Py_True);\n                    Py_INCREF(Py_True);\n                } else {\n                    PyTuple_SET_ITEM(key, 3, Py_False);\n                    Py_INCREF(Py_False);\n                }\n\n                if (!PyDict_Contains(fee_events, key)) {\n                    event_ts_list = PyList_New(0);\n                    PyDict_SetItem(fee_events, key, event_ts_list);\n                    Py_DECREF(event_ts_list);\n                } else {\n                    event_ts_list = PyDict_GetItem(fee_events, key);\n                }\n                Py_DECREF(key);\n                \n                if (fee_args) {\n                    ts_dur_tuple = PyTuple_New(3);\n                } else {\n                    ts_dur_tuple = PyTuple_New(2);\n                }\n                \n                Py_INCREF(ts);\n                Py_INCREF(dur);\n                PyTuple_SET_ITEM(ts_dur_tuple, 0, ts);\n                PyTuple_SET_ITEM(ts_dur_tuple, 1, dur);\n\n                if (fee_args) {\n                    PyTuple_SET_ITEM(ts_dur_tuple, 2, fee_args);\n                    Py_INCREF(fee_args);\n                }\n                \n                PyList_Append(event_ts_list, ts_dur_tuple);\n                Py_DECREF(ts_dur_tuple);\n                break;\n            case 'M':\n                name = PyDict_GetItemString(event, \"name\");\n                pid = PyDict_GetItemString(event, \"pid\");\n                tid = PyDict_GetItemString(event, \"tid\");\n                if (!name || !pid || !tid) {\n                    PyErr_SetString(PyExc_ValueError, \"event format failure\");\n                    goto clean_exit;\n                }\n                args_name = PyDict_GetItemString(\n                    PyDict_GetItemString(event, \"args\"),\n                    \"name\"\n                );\n                PyObject* id_key = PyTuple_New(2);\n\n                // PyTuple_SetItem steals reference\n                Py_INCREF(pid);\n                Py_INCREF(tid);\n                PyTuple_SET_ITEM(id_key, 0, pid);\n                PyTuple_SET_ITEM(id_key, 1, tid);\n\n                if (PyUnicode_CompareWithASCIIString(name, \"process_name\") == 0) {\n                    PyDict_SetItem(process_names, id_key, args_name);\n                } else if (PyUnicode_CompareWithASCIIString(name, \"thread_name\") == 0) {\n                    PyDict_SetItem(thread_names, id_key, args_name);\n                } else {\n                    PyErr_SetString(PyExc_ValueError, \"event format failure\");\n                    Py_DECREF(id_key);\n                    goto clean_exit;\n                }\n                Py_DECREF(id_key);\n                break;\n            // Counter Event\n            // {\"pid\": 852, \"tid\": 852, \"ts\": 358802972.1, \"ph\": \"C\", \"name\": \"counter name\", \"args\": {\"a\": 20, \"b\": 10}}\n            case 'C':\n                name = PyDict_GetItemString(event, \"name\");\n                pid = PyDict_GetItemString(event, \"pid\");\n                tid = PyDict_GetItemString(event, \"tid\");\n                ts = PyDict_GetItemString(event, \"ts\");\n                if (!ts || !name || !pid || !tid) {\n                    PyErr_SetString(PyExc_ValueError, \"event format failure\");\n                    goto clean_exit;\n                }\n                counter_args = PyDict_GetItemString(event, \"args\");\n                PyObject* counter_id_key = PyTuple_New(3);\n                // counter_id_key steals the reference, so we need to call Py_INCREF here\n                Py_INCREF(name);\n                Py_INCREF(pid);\n                Py_INCREF(tid);\n                PyTuple_SET_ITEM(counter_id_key, 0, pid);\n                PyTuple_SET_ITEM(counter_id_key, 1, tid);\n                PyTuple_SET_ITEM(counter_id_key, 2, name);\n                if (!PyDict_Contains(counter_events, counter_id_key)){\n                    counter_event_dict = PyDict_New();\n                    PyDict_SetItem(counter_events, counter_id_key, counter_event_dict);\n                    Py_DECREF(counter_event_dict);\n                } else {\n                    counter_event_dict = PyDict_GetItem(counter_events, counter_id_key);\n                }\n                Py_DECREF(counter_id_key);\n                if (PyDict_Contains(counter_event_dict, ts)) {\n                    PyErr_SetString(PyExc_ValueError, \"event format failure, reason: same counter event timestamp\");\n                    goto clean_exit;\n                }\n                PyDict_SetItem(counter_event_dict, ts, counter_args);\n                break;\n            // Other Events, such as instant events, VizObject and user defined events\n            default:\n                PyList_Append(other_events, event);\n                break;\n        }\n    }\n\nclean_exit:\n\n    if (PyErr_Occurred()) {\n        if (parsed_events) {\n            Py_DECREF(parsed_events);\n        }\n        return NULL;\n    }\n\n    return parsed_events;\n}\n\nstatic PyObject* vcompressor_compress(VcompressorObject* self, PyObject* args)\n{\n    PyObject* raw_data = NULL;\n    PyObject* trace_events = NULL;\n    PyObject* parsed_events = NULL;\n    PyObject* file_info = NULL;\n    const char* filename = NULL;\n    FILE* fptr = NULL;\n\n    if (!PyArg_ParseTuple(args, \"Os\", &raw_data, &filename)) {\n        PyErr_SetString(PyExc_ValueError, \"Can't parse the argument correctly\");\n        goto clean_exit;\n    }\n\n    if (!PyDict_CheckExact(raw_data)) {\n        PyErr_SetString(PyExc_ValueError, \"You need to pass in a dict\");\n        goto clean_exit;\n    }\n\n    trace_events = PyDict_GetItemString(raw_data, \"traceEvents\");\n\n    if (!trace_events || !PyList_CheckExact(trace_events)) {\n        PyErr_SetString(PyExc_ValueError, \"Unable to find traceEvents\");\n        goto clean_exit;\n    }\n\n    fptr = fopen(filename, \"wb\");\n    if (!fptr) {\n        PyErr_Format(PyExc_ValueError, \"Can't open file %s to write\", filename);\n        goto clean_exit;\n    }\n\n    dump_metadata(fptr);\n\n    parsed_events = parse_trace_events(trace_events);\n\n    if (!parsed_events) {\n        PyErr_SetString(PyExc_ValueError, \"Unable to find traceEvents\");\n        goto clean_exit;\n    } \n    Py_INCREF(parsed_events);\n\n    if (dump_parsed_trace_events(parsed_events, fptr) != 0) {\n        goto clean_exit;\n    }\n\n    // file_info here is a borrowed reference\n    file_info = PyDict_GetItemString(raw_data, \"file_info\");\n    if (file_info != NULL) {\n        if (dump_file_info(file_info, fptr) != 0) {\n            goto clean_exit;\n        }\n    }\n\nclean_exit:\n\n    if (parsed_events) {\n        Py_DECREF(parsed_events);\n    }\n\n    if (fptr) {\n        fclose(fptr);\n    }\n\n    if (PyErr_Occurred()) {\n        return NULL;\n    }\n\n    return parsed_events;\n\n    // Py_RETURN_NONE;\n}\n\nstatic PyObject*\nvcompressor_decompress(VcompressorObject* self, PyObject* args) {\n    PyObject* parsed_events = NULL;\n    const char* filename = NULL;\n    FILE* fptr = NULL;\n\n    if (!PyArg_ParseTuple(args, \"s\", &filename)) {\n        return NULL;\n    }\n\n    fptr = fopen(filename, \"rb\");\n    if (!fptr) {\n        PyErr_Format(PyExc_ValueError, \"Can't open file %s to write\", filename);\n        goto clean_exit;\n    }\n\n    parsed_events = load_events_from_file(fptr);\n\nclean_exit:\n\n    if (fptr) {\n        fclose(fptr);\n    }\n\n    if (PyErr_Occurred()) {\n        if (parsed_events) {\n            Py_DECREF(parsed_events);\n        }\n\n        return NULL;\n    }\n\n    return parsed_events;\n}\n\n\n// ================================================================\n// Python interface\n// ================================================================\n\nstatic PyMethodDef Vcompressor_methods[] = {\n    {\"compress\", (PyCFunction)vcompressor_compress, METH_VARARGS, \"compress function\"},\n    {\"decompress\", (PyCFunction)vcompressor_decompress, METH_VARARGS, \"decompress function\"},\n    {NULL, NULL, 0, NULL}\n};\n\nstatic struct PyModuleDef compressormodule = {\n    PyModuleDef_HEAD_INIT,\n    \"viztracer.vcompressor\",\n    NULL,\n    -1,\n    Vcompressor_methods\n};\n\nstatic PyTypeObject VcompressorType = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"viztracer.Vcompressor\",\n    .tp_doc = \"Vcompressor\",\n    .tp_basicsize = sizeof(VcompressorObject),\n    .tp_itemsize = 0,\n    .tp_dict = NULL,\n    .tp_flags = Py_TPFLAGS_DEFAULT,\n    .tp_new = vcompressor_new,\n    .tp_dealloc = (destructor) vcompressor_dealloc,\n    .tp_methods = Vcompressor_methods\n};\n\nPyMODINIT_FUNC\nPyInit_vcompressor(void) \n{\n    // Tracer Module\n    PyObject* m = NULL;\n\n    if (PyType_Ready(&VcompressorType) < 0) {\n        return NULL;\n    }\n\n    m = PyModule_Create(&compressormodule);\n\n    if (!m) {\n        return NULL;\n    }\n\n#ifdef Py_GIL_DISABLED\n    PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);\n#endif\n\n    Py_INCREF(&VcompressorType);\n\n    if (PyModule_AddObject(m, \"VCompressor\", (PyObject*) &VcompressorType) < 0) {\n        Py_DECREF(&VcompressorType);\n        Py_DECREF(m);\n        return NULL;\n    }\n\n    zlib_module = PyImport_ImportModule(\"zlib\");\n    json_module = PyImport_ImportModule(\"json\");\n\n    return m;\n}\n"
  },
  {
    "path": "src/viztracer/modules/vcompressor/vcompressor.h",
    "content": "#ifndef __VCOMPRESSOR_H__\n#define __VCOMPRESSOR_H__\n\n#include <Python.h>\n\n#define VCOMPRESSOR_VERSION 1\n\ntypedef struct {\n    PyObject_HEAD\n} VcompressorObject;\n\nextern PyObject* json_module;\nextern PyObject* zlib_module;\n\n#endif\n"
  },
  {
    "path": "src/viztracer/patch.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom __future__ import annotations\n\nimport functools\nimport multiprocessing.spawn\nimport multiprocessing.util\nimport os\nimport re\nimport shutil\nimport subprocess\nimport sys\nimport textwrap\nimport weakref\nfrom multiprocessing import Process\nfrom typing import TYPE_CHECKING, Any, Callable, Sequence, no_type_check\n\nif TYPE_CHECKING:\n    from .viztracer import VizTracer\n\n\ndef patch_subprocess(viz_args: list[str]) -> None:\n    import shlex\n    import subprocess\n\n    # Try to detect the end of the python argument list and parse out various invocation patterns:\n    # `file.py args` | - args | `-- file.py args` | `-cprint(5) args` | `-Esm mod args`\n    py_arg_pat = re.compile(\"([^-].+)|-$|(--)$|-([a-z]+)?(c|m)(.+)?\", re.IGNORECASE)\n    # Note: viztracer doesn't really work in interactive mode and arg handling is weird.\n    # Unlikely to be used in practice anyway so we just skip wrapping interactive python processes.\n    interactive_pat = re.compile(\"-[A-Za-z]*?i[A-Za-z]*$\")\n\n    def build_command(args: Sequence[str]) -> list[str] | None:\n        py_args: list[str] = []\n        mode: list[str] | None = []\n        script = None\n        args_iter = iter(args[1:])\n        for arg in args_iter:\n            if interactive_pat.match(arg):\n                return None\n\n            match = py_arg_pat.match(arg)\n            if match:\n                file, ddash, cm_py_args, cm, cm_arg = match.groups()\n                if file:\n                    # file.py [script args]\n                    script = file\n                elif ddash:\n                    # -- file.py [script args]\n                    script = next(args_iter, None)\n                elif cm:\n                    # -m mod [script args]\n                    if cm_py_args:\n                        # \"-[pyopts]m\"\n                        py_args.append(f\"-{cm_py_args}\")\n                    mode = [f\"-{cm}\"]\n                    # -m mod | -mmod\n                    cm_arg = cm_arg or next(args_iter, None)\n                    if cm_arg is not None:\n                        if cm_arg.split(\".\")[0] == \"viztracer\":\n                            # Avoid tracing viztracer subprocess\n                            # This is mainly used to avoid tracing --open\n                            return None\n                        mode.append(cm_arg)\n                    else:\n                        mode = None\n                break\n\n            # -pyopts\n            py_args.append(arg)\n            if arg in (\"-X\", \"-W\", \"--check-hash-based-pycs\"):\n                arg_next = next(args_iter, None)\n                if arg_next is not None:\n                    py_args.append(arg_next)\n                else:\n                    return None\n\n        if script:\n            return [\n                sys.executable,\n                *py_args,\n                \"-m\",\n                \"viztracer\",\n                \"--quiet\",\n                *viz_args,\n                \"--\",\n                script,\n                *args_iter,\n            ]\n        elif mode:\n            return [\n                sys.executable,\n                *py_args,\n                \"-m\",\n                \"viztracer\",\n                \"--quiet\",\n                *viz_args,\n                *mode,\n                \"--\",\n                *args_iter,\n            ]\n        return None\n\n    def is_python_entry(path: str) -> bool:\n        real_path = shutil.which(path)\n        if real_path is None:\n            return False\n        try:\n            with open(real_path, \"rb\") as f:\n                if f.read(2) == b\"#!\":\n                    executable = f.readline().decode(\"utf-8\").strip()\n                    if \"python\" in executable.split(\"/\")[-1]:\n                        return True\n        except Exception:  # pragma: no cover\n            pass\n        return False\n\n    @functools.wraps(subprocess.Popen.__init__)\n    def subprocess_init(\n        self: subprocess.Popen[Any], args: str | Sequence[Any] | Any, **kwargs: Any\n    ) -> None:\n        new_args = args\n        if isinstance(new_args, str):\n            new_args = shlex.split(new_args, posix=sys.platform != \"win32\")\n        if isinstance(new_args, Sequence):\n            if \"python\" in os.path.basename(new_args[0]):\n                new_args = build_command(new_args)\n            elif is_python_entry(new_args[0]):\n                new_args = [\n                    \"python\",\n                    \"-m\",\n                    \"viztracer\",\n                    \"--quiet\",\n                    *viz_args,\n                    \"--\",\n                    *new_args,\n                ]\n            else:\n                new_args = None\n            if new_args is not None and kwargs.get(\"shell\") and isinstance(args, str):\n                # For shell=True, we should convert the commands back to string\n                # if it was passed as string\n                # This is mostly for Unix shell\n                new_args = \" \".join(new_args)\n\n        if new_args is None:\n            new_args = args\n        assert hasattr(subprocess_init, \"__wrapped__\")  # for mypy\n        subprocess_init.__wrapped__(self, new_args, **kwargs)\n\n    setattr(subprocess.Popen, \"__originit__\", subprocess.Popen.__init__)\n    setattr(subprocess.Popen, \"__init__\", subprocess_init)\n\n\ndef patch_multiprocessing(tracer: VizTracer, viz_args: list[str]) -> None:\n    tracer_ref = weakref.ref(tracer)\n\n    # For fork process\n    def func_after_fork(tracer: VizTracer):\n        # This is the callback specifically for multiprocessing\n        # We have to re-register exit handler here because multiprocessing clears it\n        # We also want to reset the stack so it believes the current frame is the root\n        tracer.register_exit()\n        tracer.clear()\n        tracer.reset_stack()\n\n        tracer.connect_report_server()\n\n        if tracer._afterfork_cb:\n            tracer._afterfork_cb(\n                tracer, *tracer._afterfork_args, **tracer._afterfork_kwargs\n            )\n\n    from multiprocessing.util import register_after_fork  # type: ignore\n\n    register_after_fork(tracer, func_after_fork)\n\n    if sys.platform == \"win32\":\n        # For spawn process on Windows\n        @functools.wraps(multiprocessing.spawn.get_command_line)\n        def get_command_line(**kwds) -> list[str]:\n            \"\"\"\n            Returns prefix of command line used for spawning a child process\n            \"\"\"\n            if getattr(sys, \"frozen\", False):  # pragma: no cover\n                return [sys.executable, \"--multiprocessing-fork\"] + [\n                    \"%s=%r\" % item for item in kwds.items()\n                ]\n            else:\n                if (tracer := tracer_ref()) is None:\n                    prog = (\n                        \"from multiprocessing.spawn import spawn_main; spawn_main(%s)\"\n                    )\n                else:\n                    prog = textwrap.dedent(f\"\"\"\n                        from multiprocessing.spawn import spawn_main;\n                        from viztracer.patch import patch_spawned_process;\n                        patch_spawned_process({tracer.init_kwargs}, {viz_args});\n                        spawn_main(%s)\n                    \"\"\")\n                prog %= \", \".join(\"%s=%r\" % item for item in kwds.items())\n                opts = multiprocessing.util._args_from_interpreter_flags()  # type: ignore\n                return (\n                    [multiprocessing.spawn._python_exe]\n                    + opts\n                    + [\"-c\", prog, \"--multiprocessing-fork\"]\n                )  # type: ignore\n\n        multiprocessing.spawn.get_command_line_orig = (\n            multiprocessing.spawn.get_command_line\n        )\n        multiprocessing.spawn.get_command_line = get_command_line\n    else:\n        # POSIX\n        # For forkserver process and spawned process\n        # We patch spawnv_passfds to trace forkserver parent process so the forked\n        # children can be traced\n        _spawnv_passfds = multiprocessing.util.spawnv_passfds\n\n        @functools.wraps(_spawnv_passfds)\n        def spawnv_passfds(path, args, passfds):\n            if \"-c\" in args:\n                idx = args.index(\"-c\")\n                cmd = args[idx + 1]\n                if \"forkserver\" in cmd:\n                    # forkserver will not end before main process, avoid deadlock by --patch_only\n                    args = (\n                        args[:idx]\n                        + [\"-m\", \"viztracer\", \"--patch_only\", *viz_args]\n                        + args[idx:]\n                    )\n                elif \"resource_tracker\" not in cmd:\n                    # We don't trace resource_tracker as it does not quit before the main process\n                    # This is a normal spawned process. Only one of spawnv_passfds and spawn._main\n                    # can be patched. forkserver process will use spawn._main after forking a child,\n                    # so on POSIX we patch spawnv_passfds which has a similar effect on spawned processes.\n                    args = args[:idx] + [\"-m\", \"viztracer\", *viz_args] + args[idx:]\n            ret = _spawnv_passfds(path, args, passfds)\n            return ret\n\n        multiprocessing.util.spawnv_passfds_orig = multiprocessing.util.spawnv_passfds  # type: ignore\n        multiprocessing.util.spawnv_passfds = spawnv_passfds  # type: ignore\n\n\nclass SpawnProcess:\n    def __init__(\n        self,\n        viztracer_kwargs: dict[str, Any],\n        run: Callable,\n        target: Callable,\n        args: list[Any],\n        kwargs: dict[str, Any],\n        cmdline_args: list[str],\n    ):\n        self._viztracer_kwargs = viztracer_kwargs\n        self._run = run\n        self._target = target\n        self._args = args\n        self._kwargs = kwargs\n        self._cmdline_args = cmdline_args\n        self._exiting = False\n\n    def run(self) -> None:\n        import viztracer\n\n        tracer = viztracer.VizTracer(**self._viztracer_kwargs)\n        tracer.register_exit()\n        tracer.start()\n        self._run()\n\n\ndef patch_spawned_process(viztracer_kwargs: dict[str, Any], cmdline_args: list[str]):\n    from multiprocessing import process, reduction  # type: ignore\n    from multiprocessing.spawn import prepare\n\n    @no_type_check\n    @functools.wraps(multiprocessing.spawn._main)\n    def _main(fd, parent_sentinel) -> Any:\n        with os.fdopen(fd, \"rb\", closefd=True) as from_parent:\n            process.current_process()._inheriting = True\n            try:\n                preparation_data = reduction.pickle.load(from_parent)\n                prepare(preparation_data)\n                self: Process = reduction.pickle.load(from_parent)\n                sp = SpawnProcess(\n                    viztracer_kwargs,\n                    self.run,\n                    self._target,\n                    self._args,\n                    self._kwargs,\n                    cmdline_args,\n                )\n                self.run = sp.run\n            finally:\n                del process.current_process()._inheriting\n        return self._bootstrap(parent_sentinel)\n\n    multiprocessing.spawn._main_orig = multiprocessing.spawn._main  # type: ignore\n    multiprocessing.spawn._main = _main  # type: ignore\n\n\nclass HookManager:\n    _instance = None\n\n    def __new__(cls):\n        if cls._instance is None:\n            cls._instance = super().__new__(cls)\n            cls._tracer = None\n            cls._installed = False\n        return cls._instance\n\n    def set_tracer(self, tracer: VizTracer | None) -> None:\n        self._tracer = weakref.ref(tracer) if tracer is not None else None\n        self.install_hooks()\n\n    def install_hooks(self):\n        if not self._installed:\n            if hasattr(os, \"register_at_fork\"):\n                os.register_at_fork(after_in_child=self._after_fork)\n            sys.addaudithook(self._audit_callback)\n            self._installed = True\n\n    def _after_fork(self):\n        if (\n            self._tracer\n            and (tracer := self._tracer())\n            and not tracer.ignore_multiprocess\n        ):\n            if tracer.report_server_process is not None:\n                tracer.report_server_process = None\n            if tracer.report_socket_file is not None:\n                # Reconnect to report server in the forked child process\n                # otherwise it conflicts with the parent's connection\n                tracer.connect_report_server()\n            tracer.register_exit()\n            tracer.start()\n\n    def _audit_callback(self, event: str, args: Any) -> None:  # pragma: no cover\n        if (\n            self._tracer\n            and (tracer := self._tracer())\n            and not tracer.ignore_multiprocess\n        ):\n            if event == \"os.exec\":\n                tracer.exit_routine()\n\n            if tracer.log_audit is not None:\n                audit_regex_list = [re.compile(regex) for regex in tracer.log_audit]\n                if len(audit_regex_list) == 0 or any(\n                    (regex.fullmatch(event) for regex in audit_regex_list)\n                ):\n                    tracer.log_instant(event, args={\"args\": [str(arg) for arg in args]})\n\n\ndef install_all_hooks(tracer: VizTracer) -> None:\n    uninstall_all_hooks()\n\n    args = tracer.get_args()\n\n    # multiprocess hook\n    if not tracer.ignore_multiprocess:\n        patch_multiprocessing(tracer, args)\n        patch_subprocess(args)\n\n    HookManager().set_tracer(tracer)\n\n\ndef uninstall_all_hooks() -> None:\n    HookManager().set_tracer(None)\n\n    if hasattr(subprocess.Popen, \"__originit__\"):\n        setattr(subprocess.Popen, \"__init__\", subprocess.Popen.__originit__)  # type: ignore\n        delattr(subprocess.Popen, \"__originit__\")\n\n    if hasattr(multiprocessing.spawn, \"_main_orig\"):\n        setattr(multiprocessing.spawn, \"_main\", multiprocessing.spawn._main_orig)\n        delattr(multiprocessing.spawn, \"_main_orig\")\n\n    if hasattr(multiprocessing.spawn, \"get_command_line_orig\"):\n        setattr(\n            multiprocessing.spawn,\n            \"get_command_line\",\n            multiprocessing.spawn.get_command_line_orig,\n        )\n        delattr(multiprocessing.spawn, \"get_command_line_orig\")\n\n    if hasattr(multiprocessing.util, \"spawnv_passfds_orig\"):\n        setattr(\n            multiprocessing.util,\n            \"spawnv_passfds\",\n            multiprocessing.util.spawnv_passfds_orig,\n        )\n        delattr(multiprocessing.util, \"spawnv_passfds_orig\")\n"
  },
  {
    "path": "src/viztracer/report_builder.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\ntry:\n    import orjson as json  # type: ignore\nexcept ImportError:\n    import json  # type: ignore\n\nimport gzip\nimport importlib\nimport os\nimport re\nimport tokenize\nfrom string import Template\nfrom typing import Any, Sequence, TextIO\n\nfrom . import __version__\nfrom .util import color_print, same_line_print\n\n\ndef get_json(data: dict[str, Any] | str | tuple[str, dict]) -> dict[str, Any]:\n    # This function will return a json object if data is already json object\n    # or a opened file or a file path\n    if isinstance(data, dict):\n        # This is an object already\n        return data\n    elif isinstance(data, str):\n        with open(data, encoding=\"utf-8\") as f:\n            json_str = f.read()\n    elif isinstance(data, tuple):\n        path, args = data\n        if args[\"type\"] == \"torch\":\n            with open(path, encoding=\"utf-8\") as f:\n                json_str = f.read()\n            ret = json.loads(json_str)\n            base_offset = args[\"base_offset\"]\n            # torch 2.4.0+ uses baseTimeNanoseconds to store the offset\n            # before that they simply use the absolute timestamp which is\n            # equivalent to baseTimeNanoseconds = 0\n            torch_offset = ret.get(\"baseTimeNanoseconds\", 0)\n            # convert to us\n            offset_diff = (torch_offset - base_offset) / 1000\n\n            for event in ret[\"traceEvents\"]:\n                if \"ts\" in event:\n                    event[\"ts\"] += offset_diff\n                if event[\"ph\"] == \"M\":\n                    # Pop metadata timestamp so it won't overwrite\n                    # process and thread names\n                    event.pop(\"ts\", None)\n\n            ret.pop(\"baseTimeNanoseconds\", None)\n            ret.pop(\"displayTimeUnit\", None)\n            ret.pop(\"traceName\")\n            ret.pop(\"deviceProperties\")\n            ret.pop(\"schemaVersion\")\n\n            ret[\"viztracer_metadata\"] = {}\n\n            return ret\n\n    return json.loads(json_str)\n\n\nclass ReportBuilder:\n    def __init__(\n        self,\n        data: Sequence[str | dict | tuple[str, dict]] | dict[str, Any],\n        verbose: int = 1,\n        align: bool = False,\n        minimize_memory: bool = False,\n        base_time: int | None = None,\n    ) -> None:\n        self.data = data\n        self.verbose = verbose\n        self.combined_json: dict = {}\n        self.entry_number_threshold = 4000000\n        self.align = align\n        self.minimize_memory = minimize_memory\n        self.jsons: list[dict] = []\n        self.invalid_json_paths: list[str] = []\n        self.json_loaded = False\n        self.base_time = base_time\n        self.final_messages: list[tuple[str, dict]] = []\n        if not isinstance(data, (dict, list, tuple)):\n            raise TypeError(\"Invalid data type for ReportBuilder\")\n        if isinstance(data, (list, tuple)):\n            for path in data:\n                if isinstance(path, dict):\n                    continue\n                if isinstance(path, tuple):\n                    path = path[0]\n                if not isinstance(path, str):\n                    raise TypeError(\"Path should be a string\")\n                if not os.path.exists(path):\n                    raise ValueError(f\"{path} does not exist\")\n                if not path.endswith(\".json\"):\n                    raise ValueError(f\"{path} is not a json file\")\n\n    def load_jsons(self) -> None:\n        if not self.json_loaded:\n            self.json_loaded = True\n            if isinstance(self.data, dict):\n                self.jsons = [get_json(self.data)]\n            elif isinstance(self.data, (list, tuple)):\n                self.jsons = []\n                self.invalid_json_paths = []\n                for idx, j in enumerate(self.data):\n                    if self.verbose > 0:\n                        same_line_print(\n                            f\"Loading trace data from processes {idx}/{len(self.data)}\"\n                        )\n                    try:\n                        self.jsons.append(get_json(j))\n                    except json.JSONDecodeError:\n                        assert isinstance(j, str)\n                        self.invalid_json_paths.append(j)\n                if len(self.invalid_json_paths) > 0:\n                    self.final_messages.append(\n                        (\"invalid_json\", {\"paths\": self.invalid_json_paths})\n                    )\n\n    def combine_json(self) -> None:\n        if self.verbose > 0:\n            same_line_print(\"Combining trace data\")\n        if self.combined_json:\n            return\n        if not self.jsons:\n            if self.invalid_json_paths:\n                raise ValueError(\"No valid json files found\")\n            else:\n                raise ValueError(\"Can't get report of nothing\")\n        if self.align:\n            for one in self.jsons:\n                self.align_events(\n                    one[\"traceEvents\"],\n                    one[\"viztracer_metadata\"].get(\"sync_marker\", None),\n                )\n        self.combined_json = self.jsons[0]\n        if \"viztracer_metadata\" not in self.combined_json:\n            self.combined_json[\"viztracer_metadata\"] = {}\n        for one in self.jsons[1:]:\n            if \"traceEvents\" in one:\n                self.combined_json[\"traceEvents\"].extend(one[\"traceEvents\"])\n            if one.get(\"viztracer_metadata\", {}).get(\"overflow\", False):\n                self.combined_json[\"viztracer_metadata\"][\"overflow\"] = True\n            if one.get(\"viztracer_metadata\", {}).get(\"baseTimeNanoseconds\") is not None:\n                self.combined_json[\"viztracer_metadata\"][\"baseTimeNanoseconds\"] = one[\n                    \"viztracer_metadata\"\n                ][\"baseTimeNanoseconds\"]\n            if \"file_info\" in one:\n                if \"file_info\" not in self.combined_json:\n                    self.combined_json[\"file_info\"] = {\"files\": {}, \"functions\": {}}\n                self.combined_json[\"file_info\"][\"files\"].update(\n                    one[\"file_info\"][\"files\"]\n                )\n                self.combined_json[\"file_info\"][\"functions\"].update(\n                    one[\"file_info\"][\"functions\"]\n                )\n\n    def align_events(\n        self, original_events: list[dict[str, Any]], sync_marker: float | None = None\n    ) -> list[dict[str, Any]]:\n        \"\"\"\n        Apply an offset to all the trace events, making the start timestamp 0\n        This is useful when comparing multiple runs of the same script\n\n        If sync_marker is not None then sync_marker  be used as an offset\n\n        This function will change the timestamp in place, and return the original list\n        \"\"\"\n        if sync_marker is None:\n            offset_ts = min((event[\"ts\"] for event in original_events if \"ts\" in event))\n        else:\n            offset_ts = sync_marker\n\n        for event in original_events:\n            if \"ts\" in event:\n                event[\"ts\"] -= offset_ts\n        return original_events\n\n    def prepare_json(\n        self, file_info: bool = True, display_time_unit: str | None = None\n    ) -> None:\n        # This will prepare self.combined_json to be ready to output\n        self.load_jsons()\n        self.combine_json()\n        if self.verbose > 0:\n            entries = len(self.combined_json[\"traceEvents\"])\n            same_line_print(f\"Dumping trace data, total entries: {entries}\")\n            self.final_messages.append((\"total_entries\", {\"total_entries\": entries}))\n            if self.combined_json[\"viztracer_metadata\"].get(\"overflow\", False):\n                self.final_messages.append((\"overflow\", {}))\n\n        if display_time_unit is not None:\n            self.combined_json[\"displayTimeUnit\"] = display_time_unit\n\n        self.combined_json[\"viztracer_metadata\"][\"version\"] = __version__\n\n        if self.base_time is not None:\n            self.combined_json[\"viztracer_metadata\"][\"baseTimeNanoseconds\"] = (\n                self.base_time\n            )\n\n        if file_info:\n            if \"file_info\" not in self.combined_json:\n                self.combined_json[\"file_info\"] = {\"files\": {}, \"functions\": {}}\n            pattern = re.compile(r\".*\\((.*):([0-9]*)\\)\")\n            file_dict = self.combined_json[\"file_info\"][\"files\"]\n            func_dict = self.combined_json[\"file_info\"][\"functions\"]\n            for event in self.combined_json[\"traceEvents\"]:\n                if event[\"ph\"] == \"X\":\n                    if event[\"name\"] not in func_dict:\n                        func_dict[event[\"name\"]] = None\n                        m = pattern.match(event[\"name\"])\n                        if m is not None:\n                            file_name = m.group(1)\n                            lineno = int(m.group(2))\n                            if file_name not in file_dict:\n                                content = self.get_source_from_filename(file_name)\n                                if content is None:\n                                    continue\n                                file_dict[file_name] = [content, content.count(\"\\n\")]\n                            func_dict[event[\"name\"]] = [file_name, lineno]\n            unknown_func_dict = set(\n                func for func in func_dict if func_dict[func] is None\n            )\n            for func in unknown_func_dict:\n                del func_dict[func]\n\n    @classmethod\n    def get_source_from_filename(cls, filename: str) -> str | None:\n        if filename.startswith(\"<frozen \"):\n            m = re.match(r\"<frozen (.*)>\", filename)\n            if not m:\n                return None\n            module_name = m.group(1)\n            try:\n                module = importlib.import_module(module_name)\n            except ImportError:\n                return None\n            if hasattr(module, \"__file__\") and module.__file__ is not None:\n                filename = module.__file__\n            else:\n                return None\n        try:\n            with tokenize.open(filename) as f:\n                return f.read()\n        except Exception:\n            return None\n\n    def generate_report(\n        self, output_file: TextIO, output_format: str, file_info: bool = True\n    ) -> None:\n        sub = {}\n        if output_format == \"html\":\n            self.prepare_json(file_info=file_info, display_time_unit=\"ns\")\n            with open(\n                os.path.join(\n                    os.path.dirname(__file__), \"html/trace_viewer_embedder.html\"\n                ),\n                encoding=\"utf-8\",\n            ) as f:\n                tmpl = f.read()\n            with open(\n                os.path.join(os.path.dirname(__file__), \"html/trace_viewer_full.html\"),\n                encoding=\"utf-8\",\n            ) as f:\n                sub[\"trace_viewer_full\"] = f.read()\n            if json.__name__ == \"orjson\":\n                sub[\"json_data\"] = (\n                    json.dumps(self.combined_json)\n                    .decode(\"utf-8\")\n                    .replace(\"</script>\", \"<\\\\/script>\")\n                )\n            else:\n                sub[\"json_data\"] = json.dumps(self.combined_json).replace(\n                    \"</script>\", \"<\\\\/script>\"\n                )  # type: ignore\n            output_file.write(Template(tmpl).substitute(sub))\n        elif output_format == \"json\":\n            self.prepare_json(file_info=file_info)\n            if json.__name__ == \"orjson\":\n                output_file.write(json.dumps(self.combined_json).decode(\"utf-8\"))\n            else:\n                if self.minimize_memory:\n                    json.dump(self.combined_json, output_file)  # type: ignore\n                else:\n                    output_file.write(json.dumps(self.combined_json))  # type: ignore\n\n    def save(\n        self, output_file: str | TextIO = \"result.html\", file_info: bool = True\n    ) -> None:\n        if isinstance(output_file, str):\n            output_file = os.path.abspath(output_file)\n            if not os.path.isdir(os.path.dirname(output_file)):\n                os.makedirs(os.path.dirname(output_file), exist_ok=True)\n\n            file_type = output_file.split(\".\")[-1]\n\n            if file_type == \"html\":\n                with open(output_file, \"w\", encoding=\"utf-8\") as f:\n                    self.generate_report(f, output_format=\"html\", file_info=file_info)\n            elif file_type == \"json\":\n                with open(output_file, \"w\", encoding=\"utf-8\") as f:\n                    self.generate_report(f, output_format=\"json\", file_info=file_info)\n            elif file_type == \"gz\":\n                with gzip.open(output_file, \"wt\") as f:\n                    self.generate_report(f, output_format=\"json\", file_info=file_info)\n            else:\n                raise Exception(\"Only html, json and gz are supported\")\n        else:\n            self.generate_report(output_file, output_format=\"json\", file_info=file_info)\n\n        if isinstance(output_file, str):\n            self.final_messages.append(\n                (\"view_command\", {\"output_file\": os.path.abspath(output_file)})\n            )\n\n        self.print_messages()\n\n    def print_messages(self):\n        if self.verbose > 0:\n            same_line_print(\"\")\n            for msg_type, msg_args in self.final_messages:\n                if msg_type == \"overflow\":\n                    print(\"\")\n                    color_print(\n                        \"WARNING\",\n                        (\n                            \"Circular buffer is full, you lost some early data, \"\n                            \"but you still have the most recent data.\"\n                        ),\n                    )\n                    color_print(\n                        \"WARNING\",\n                        '    If you need more buffer, use \"viztracer --tracer_entries <entry_number>\"',\n                    )\n                    color_print(\n                        \"WARNING\",\n                        \"    Or, you can try the filter options to filter out some data you don't need\",\n                    )\n                    color_print(\"WARNING\", \"    use --quiet to shut me up\")\n                    print(\"\")\n                elif msg_type == \"total_entries\":\n                    print(f\"Total Entries: {msg_args['total_entries']}\")\n                elif msg_type == \"view_command\":\n                    report_abspath = os.path.abspath(msg_args[\"output_file\"])\n                    print(\"Use the following command to open the report:\")\n                    if \" \" in report_abspath:\n                        color_print(\"OKGREEN\", f'vizviewer \"{report_abspath}\"')\n                    else:\n                        color_print(\"OKGREEN\", f\"vizviewer {report_abspath}\")\n                elif msg_type == \"invalid_json\":\n                    print(\"\")\n                    color_print(\n                        \"WARNING\",\n                        \"Found and ignored invalid json file, you may lost some process data.\",\n                    )\n                    color_print(\"WARNING\", \"Invalid json file:\")\n                    for msg in msg_args[\"paths\"]:\n                        color_print(\"WARNING\", f\"    {msg}\")\n                    print(\"\")\n"
  },
  {
    "path": "src/viztracer/report_server.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport json\nimport os\nimport selectors\nimport shutil\nimport socket\nimport subprocess\nimport sys\nimport tempfile\nimport zlib\n\nfrom .report_builder import ReportBuilder\nfrom .util import same_line_print\n\n\nclass ReportServer:\n    def __init__(\n        self,\n        output_file: str,\n        minimize_memory: bool = False,\n        verbose: int = 1,\n        endpoint: str | None = None,\n    ) -> None:\n        self._host = None\n        self._port = None\n        self.payloads: list[dict] = []\n        self.output_file = output_file\n        self.minimize_memory = minimize_memory\n        self.verbose = verbose\n        self.report_directory: str | None = tempfile.mkdtemp(prefix=\"viztracer_report_\")\n        self._socket: socket.socket | None = socket.socket(\n            socket.AF_INET, socket.SOCK_STREAM\n        )\n        self._finish = False\n        configs = []\n        if endpoint is not None:\n            if \"|\" in endpoint:\n                endpoint, config_str = endpoint.split(\"|\")\n                if config_str:\n                    configs = config_str.split(\",\")\n\n        if endpoint or (\n            (endpoint := os.getenv(\"VIZTRACER_REPORT_SERVER_ENDPOINT\")) is not None\n        ):\n            self._host, port_str = endpoint.split(\":\")[:2]\n            self._port = int(port_str)\n        else:\n            self._host, self._port = \"127.0.0.1\", 0\n\n        if \"append_newline\" in configs:\n            # If ReportServer is started in a subprocess, make sure the parent process\n            # can read each same_line_print in real time.\n            from .util import set_same_line_print_end\n\n            set_same_line_print_end(\"\\n\")\n\n    @classmethod\n    def start_process(\n        cls,\n        output_file: str,\n        minimize_memory: bool = False,\n        verbose: int = 1,\n        report_endpoint: str | None = None,\n    ) -> tuple[\"subprocess.Popen\", str]:\n        args = [sys.executable, \"-u\", \"-m\", \"viztracer\", \"-o\", output_file]\n\n        if report_endpoint is not None:\n            args.extend([\"--report_server\", report_endpoint])\n        else:\n            args.append(\"--report_server\")\n\n        if minimize_memory:\n            args.append(\"--minimize_memory\")\n        if verbose == 0:\n            args.append(\"--quiet\")\n\n        proc = subprocess.Popen(\n            args, bufsize=0, stdout=subprocess.PIPE, stderr=subprocess.STDOUT\n        )\n        assert proc.stdout is not None\n        line = proc.stdout.readline().strip()\n        endpoint = line.decode().split()[-1]\n        return proc, endpoint\n\n    def __del__(self) -> None:\n        self.clear()\n\n    def run(self) -> None:\n        if self._socket is None:\n            raise RuntimeError(\"ReportServer has been cleared\")\n        self._socket.bind((self._host, self._port))\n        self._host, self._port = self._socket.getsockname()\n        self.collect()\n        self.save()\n\n    def clear(self) -> None:\n        if self._socket is not None:\n            self._socket.close()\n            self._socket = None\n        if self.report_directory and os.path.exists(self.report_directory):\n            try:\n                shutil.rmtree(self.report_directory)\n            except Exception:  # pragma: no cover\n                pass\n        self.report_directory = None\n\n    @property\n    def endpoint(self) -> str:\n        return f\"{self._host}:{self._port}\"\n\n    def collect(self):\n        self._socket.listen()\n        print(f\"Report server started at {self.endpoint}\", flush=True)\n        sel = selectors.DefaultSelector()\n        sel.register(self._socket, selectors.EVENT_READ)\n        if sys.platform != \"win32\":\n            try:\n                sel.register(sys.stdin, selectors.EVENT_READ)\n            except Exception:\n                # sys.stdin may be some piped fd that we don't have permission to read\n                pass\n        const_count = len(sel.get_map())\n\n        started = False\n        unfinished_children = 0\n\n        try:\n            while True:\n                if started:\n                    if len(sel.get_map()) == const_count:\n                        # No active connections\n                        break\n                    else:\n                        if (\n                            len(sel.get_map()) - const_count != unfinished_children\n                            and self.verbose > 0\n                        ):\n                            unfinished_children = len(sel.get_map()) - const_count\n                            same_line_print(\n                                f\"Waiting for {unfinished_children} connections to send reports. \"\n                                \"Ctrl+C to ignore and dump now.\"\n                            )\n                events = sel.select()\n                for key, _ in events:\n                    if key.fileobj is self._socket:\n                        conn, _ = self._socket.accept()\n                        sel.register(conn, selectors.EVENT_READ)\n                        conn.sendall((self.report_directory + \"\\n\").encode())\n                        started = True\n                    elif key.fileobj is sys.stdin:\n                        # On Unix, we can use stdin to break the loop\n                        data = key.fileobj.readline()\n                        if data == \"\\n\":\n                            raise KeyboardInterrupt()\n                    else:\n                        try:\n                            self._recv_info(key.fileobj)\n                        except KeyboardInterrupt:  # pragma: no cover\n                            raise\n                        except Exception:\n                            pass\n                        finally:\n                            sel.unregister(key.fileobj)\n                            key.fileobj.close()\n        except KeyboardInterrupt:\n            pass\n        finally:\n            if self.verbose > 0:\n                same_line_print(\"\")\n            sel.close()\n\n    def _recv_info(self, conn: socket.socket) -> None:\n        buffer = bytearray()\n        conn.settimeout(10)\n        while d := conn.recv(1 << 20):\n            buffer += d\n        try:\n            data = json.loads(zlib.decompress(buffer).decode().strip())\n            if \"output_file\" in data:\n                self.output_file = data[\"output_file\"]\n            if \"payload\" in data:\n                self.payloads.append(json.loads(data[\"payload\"]))\n        except Exception as exc:  # pragma: no cover\n            if self.verbose > 0:\n                print(f\"Failed to receive report data: {exc}\")\n\n    def save(self) -> None:\n        if not self.payloads:\n            if self.verbose > 0:\n                print(\"No reports collected, nothing to save.\")\n            return\n        builder = ReportBuilder(\n            self.payloads, minimize_memory=self.minimize_memory, verbose=self.verbose\n        )\n\n        builder.save(output_file=self.output_file)\n"
  },
  {
    "path": "src/viztracer/snaptrace.pyi",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom typing import Any, Callable, Literal\n\nclass Tracer:\n    threadtracefunc: Callable\n\n    include_files: list[str] | None\n    exclude_files: list[str] | None\n\n    def __init__(self, tracer_entries: int, /) -> None: ...\n    def start(self) -> None: ...\n    def stop(self, stop_option: str | None) -> None: ...\n    def resume(self) -> None: ...\n    def pause(self) -> None: ...\n    def clear(self) -> None: ...\n    def load(self) -> dict[str, Any]: ...\n    def dump(self, filename: str, sanitize_function_name: bool = False) -> None: ...\n    def setignorestackcounter(self, value: int) -> int: ...\n    def reset_stack(self) -> None: ...\n    def getts(self) -> float: ...\n    def get_base_time(self) -> int: ...\n    def setpid(self, pid: int = -1, /) -> None: ...\n    def add_func_args(self, key: str, value: Any) -> None: ...\n    def get_func_args(self) -> dict[str, Any] | None: ...\n    def add_raw(self, raw: dict[str, Any]) -> None: ...\n    def add_object(\n        self, ph: str, obj_id: str, name: str, args: dict[str, Any] | None = None\n    ) -> None: ...\n    def add_counter(self, name: str, args: dict[str, Any]) -> None: ...\n    def add_instant(\n        self, name: str, args: Any = None, scope: Literal[\"g\", \"p\", \"t\"] = \"g\"\n    ) -> None: ...\n    def set_sync_marker(self) -> None:\n        \"\"\"set current timestamp to synchronization marker\"\"\"\n        ...\n\n    def get_sync_marker(self) -> float | None:\n        \"\"\"get synchronization marker or None if not set\"\"\"\n        ...\n"
  },
  {
    "path": "src/viztracer/util.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport datetime\nimport errno\nimport os\nimport re\nimport sys\nimport tempfile\n\n# Windows macros\nSTILL_ACTIVE = 0x103\nERROR_ACCESS_DENIED = 0x5\nPROCESS_QUERY_LIMITED_INFORMATION = 0x1000\n\n\ndef size_fmt(num: int | float, suffix: str = \"B\") -> str:\n    for unit in [\"\", \"Ki\", \"Mi\", \"Gi\"]:\n        if abs(num) < 1024.0:\n            return f\"{num:3.1f}{unit}{suffix}\"\n        num /= 1024.0\n    return f\"{num:.1f}{'Ti'}{suffix}\"\n\n\nclass _bcolors:\n    HEADER = \"\\033[95m\"\n    OKBLUE = \"\\033[94m\"\n    OKGREEN = \"\\033[92m\"\n    WARNING = \"\\033[93m\"\n    FAIL = \"\\033[91m\"\n    ENDC = \"\\033[0m\"\n    BOLD = \"\\033[1m\"\n    UNDERLINE = \"\\033[4m\"\n\n\nbcolors = _bcolors()\n\n\ncolor_support = True\n\n\nif sys.platform == \"win32\":\n    try:\n        # https://stackoverflow.com/questions/36760127/...\n        # how-to-use-the-new-support-for-ansi-escape-sequences-in-the-windows-10-console\n        from ctypes import windll\n\n        kernel32 = windll.kernel32\n        kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)\n    except Exception:  # pragma: no cover\n        color_support = False\n\n\ndef color_print(color, s: str, **kwargs) -> None:\n    if color_support:\n        print(bcolors.__getattribute__(color) + s + bcolors.ENDC, **kwargs)\n    else:  # pragma: no cover\n        print(s)\n\n\n_same_line_print_end = \"\"\n\n\ndef set_same_line_print_end(end: str) -> None:\n    global _same_line_print_end\n    _same_line_print_end = end\n\n\ndef same_line_print(s: str, width: int = 80, **kwargs) -> None:\n    print(f\"\\r{'':<{width}}\", end=\"\")  # clear the line\n    print(f\"\\r{s}\", end=_same_line_print_end, flush=True, **kwargs)\n\n\ndef unique_file_name(exec_name: str) -> str:\n    # Get the base name of the executable\n    filename = os.path.basename(exec_name)\n\n    # Remove the extension\n    filename = filename.split(\".\")[0]\n\n    d = datetime.datetime.now()\n    return \"_\".join(\n        [\n            f\"{filename}\",\n            f\"{d.year}{d.month:02d}{d.day:02d}\",\n            f\"{d.hour:02d}{d.minute:02d}{d.second:02d}\",\n            f\"{os.getpid()}.json\",\n        ]\n    )\n\n\ndef unique_path(directory: str, suffix=\".json\") -> str | None:\n    \"\"\"Generate a unique file path in the specified directory.\"\"\"\n    try:\n        with tempfile.NamedTemporaryFile(dir=directory, suffix=suffix) as f:\n            return f.name\n    except FileNotFoundError:\n        return None\n\n\ndef compare_version(ver1: str, ver2: str) -> int:\n    # assuming ver1, ver2 are both str and in a pattern of\n    # major.minor.micro with only numbers\n    # return 1 if ver1 > ver2\n    # return 0 if ver1 == ver2\n    # return -1 if ver1 < ver2\n    tuple1 = tuple((int(v) for v in ver1.split(\".\")))\n    tuple2 = tuple((int(v) for v in ver2.split(\".\")))\n\n    if tuple1 > tuple2:\n        return 1\n    elif tuple1 == tuple2:\n        return 0\n    else:\n        return -1\n\n\ndef time_str_to_us(t_s: str) -> float:\n    # t_s is a string representing a time\n    # Should be [0-9\\.]+([mun]?s)?\n    #   ex. 300ns 23.5 .2ms\n    # (This is not a perfect match, but enough for us to duck parse)\n    # We need to convert it to us\n    m = re.match(r\"([0-9\\.]+)([mun]?s)?\", t_s)\n    if m:\n        try:\n            val = float(m.group(1))\n        except ValueError:\n            raise ValueError(f\"Can't convert {t_s} to time\")\n        unit = m.group(2)\n        if unit == \"s\":\n            val *= 1e6\n        elif unit == \"ms\":\n            val *= 1e3\n        elif unit == \"ns\":\n            val *= 1e-3\n        return val\n    else:\n        raise ValueError(f\"Can't convert {t_s} to time\")\n\n\n# https://github.com/giampaolo/psutil\ndef pid_exists(pid):\n    \"\"\"Check whether pid exists in the current process table.\"\"\"\n    if pid < 0:\n        return False\n    if pid == 0:\n        # According to \"man 2 kill\" PID 0 refers to every process\n        # in the process group of the calling process.\n        # On certain systems 0 is a valid PID but we have no way\n        # to know that in a portable fashion.\n        # On Windows, 0 is an idle process buw we don't need to\n        # check it here\n        raise ValueError(\"invalid PID 0\")\n    if sys.platform == \"win32\":\n        # Windows\n        import ctypes\n\n        kernel32 = ctypes.windll.kernel32\n\n        process = kernel32.OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, 0, pid)\n        if not process:\n            if kernel32.GetLastError() == ERROR_ACCESS_DENIED:\n                # Access is denied, which means there's a process.\n                # Usually it's impossible to run here in viztracer.\n                return True  # pragma: no cover\n            else:\n                return False\n\n        exit_code = ctypes.c_ulong()\n        out = kernel32.GetExitCodeProcess(process, ctypes.byref(exit_code))\n        kernel32.CloseHandle(process)\n        # nonzero return value means the funtion succeeds\n        if out:\n            if exit_code.value == STILL_ACTIVE:\n                # According to documents of GetExitCodeProcess.\n                # If a thread returns STILL_ACTIVE (259) as an error code,\n                # then applications that test for that value could interpret\n                # it to mean that the thread is still running, and continue\n                # to test for the completion of the thread after the thread\n                # has terminated, which could put the application into an\n                # infinite loop.\n                return True\n            else:\n                return False\n        else:  # pragma: no cover\n            if kernel32.GetLastError() == ERROR_ACCESS_DENIED:\n                # Access is denied, which means there's a process.\n                # Usually it's impossible to run here in viztracer.\n                return True\n        return False  # pragma: no cover\n    else:\n        # UNIX\n        try:\n            os.kill(pid, 0)\n        except OSError as err:\n            if err.errno == errno.ESRCH:\n                # ESRCH == No such process\n                return False\n            elif err.errno == errno.EPERM:\n                # EPERM clearly means there's a process to deny access to\n                return True\n            else:  # pragma: no cover\n                # According to \"man 2 kill\" possible error values are\n                # (EINVAL, EPERM, ESRCH)\n                raise\n        else:\n            return True\n\n\ndef frame_stack_has_func(frame, funcs):\n    while frame:\n        if any(frame.f_code == func.__code__ for func in funcs):\n            return True\n        frame = frame.f_back\n    return False\n"
  },
  {
    "path": "src/viztracer/vcompressor.pyi",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nclass VCompressor:\n    def compress(self, raw_data: dict, filename: str) -> dict: ...\n    def decompress(self, filename: str) -> dict: ...\n"
  },
  {
    "path": "src/viztracer/viewer.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport argparse\nimport atexit\nimport contextlib\nimport functools\nimport gzip\nimport html\nimport http.server\nimport io\nimport json\nimport os\nimport socket\nimport socketserver\nimport subprocess\nimport sys\nimport threading\nimport time\nimport traceback\nimport urllib.parse\nfrom http import HTTPStatus\nfrom typing import Any, Callable\n\ndir_lock = threading.Lock()\n\n\n@contextlib.contextmanager\ndef chdir_temp(d: str):\n    with dir_lock:\n        curr_cwd = os.getcwd()\n        os.chdir(d)\n        try:\n            yield\n        finally:\n            os.chdir(curr_cwd)\n\n\nclass HttpHandler(http.server.SimpleHTTPRequestHandler):\n    def end_headers(self):\n        self.send_header(\"Access-Control-Allow-Origin\", \"*\")\n        self.send_header(\"Cache-Control\", \"no-store\")\n        return super().end_headers()\n\n    def log_message(self, format, *args):\n        # To quiet the http server\n        pass\n\n\nclass ExternalProcessorHandler(HttpHandler):\n    def __init__(self, server_thread: \"ServerThread\", *args, **kwargs) -> None:\n        self.server_thread = server_thread\n        super().__init__(*args, **kwargs)\n\n    def do_GET(self):\n        self.server.last_request = self.path\n        self.server_thread.notify_active()\n        self.directory = os.path.join(os.path.dirname(__file__), \"web_dist\")\n        with chdir_temp(self.directory):\n            return super().do_GET()\n\n\nclass PerfettoHandler(HttpHandler):\n    def __init__(self, server_thread: \"ServerThread\", *args, **kwargs) -> None:\n        self.server_thread = server_thread\n        super().__init__(*args, **kwargs)\n\n    def do_GET(self):\n        self.server.last_request = self.path\n        self.server_thread.notify_active()\n        if self.path.endswith(\"vizviewer_info\"):\n            info = {}\n            self.send_response(200)\n            self.send_header(\"Content-type\", \"application/json\")\n            self.end_headers()\n            self.wfile.write(json.dumps(info).encode(\"utf-8\"))\n            self.wfile.flush()\n        elif self.path.endswith(\"file_info\"):\n            self.send_response(200)\n            self.send_header(\"Content-type\", \"application/json\")\n            self.end_headers()\n            self.wfile.write(json.dumps(self.server_thread.file_info).encode(\"utf-8\"))\n            self.wfile.flush()\n            # Since v1.1, file_info is the last request from the frontend\n            self.server.trace_served = True\n        elif self.path.endswith(\"localtrace\"):\n            # self.directory is used after 3.8\n            # os.getcwd() is used on 3.6\n            self.directory = os.path.dirname(self.server_thread.path)\n            with chdir_temp(self.directory):\n                filename = os.path.basename(self.server_thread.path)\n                self.path = f\"/{filename}\"\n                return super().do_GET()\n        else:\n            self.directory = os.path.join(os.path.dirname(__file__), \"web_dist\")\n            with chdir_temp(self.directory):\n                return super().do_GET()\n\n\nclass HtmlHandler(HttpHandler):\n    def __init__(self, server_thread: \"ServerThread\", *args, **kwargs) -> None:\n        self.server_thread = server_thread\n        super().__init__(*args, **kwargs)\n\n    def do_GET(self):\n        self.directory = os.path.dirname(self.server_thread.path)\n        with chdir_temp(self.directory):\n            filename = os.path.basename(self.server_thread.path)\n            self.path = f\"/{filename}\"\n            self.server.trace_served = True\n            return super().do_GET()\n\n\nclass DirectoryHandler(HttpHandler):\n    def __init__(self, directory_viewer: \"DirectoryViewer\", *args, **kwargs) -> None:\n        self.directory_viewer = directory_viewer\n        kwargs[\"directory\"] = directory_viewer.base_path\n        super().__init__(*args, **kwargs)\n\n    def do_GET(self):\n        if self.path.endswith(\"json\"):\n            # self.path starts with '/', we need to remove it\n            self.send_response(302)\n            self.send_header(\"Location\", self.directory_viewer.get_link(self.path[1:]))\n            self.end_headers()\n        else:\n            with chdir_temp(self.directory):\n                super().do_GET()\n\n    def send_head(self):  # pragma: no cover\n        \"\"\"\n        Return list_directory even if there's an index.html in the dir\n        \"\"\"\n        path = self.translate_path(self.path)\n        if os.path.isdir(path):\n            parts = urllib.parse.urlsplit(self.path)\n            if not parts.path.endswith(\"/\"):\n                # redirect browser - doing basically what apache does\n                self.send_response(HTTPStatus.MOVED_PERMANENTLY)\n                new_parts = (parts[0], parts[1], parts[2] + \"/\", parts[3], parts[4])\n                new_url = urllib.parse.urlunsplit(new_parts)\n                self.send_header(\"Location\", new_url)\n                self.send_header(\"Content-Length\", \"0\")\n                self.end_headers()\n                return None\n            else:\n                return self.list_directory(path)\n        return super().send_head()\n\n    def list_directory(self, path):  # pragma: no cover\n        \"\"\"\n        Almost the same as SimpleHTTPRequestHandler.list_directory, but\n            * Does not display file that does not end with json\n            * Created a new tab when click\n        \"\"\"\n        try:\n            list = os.listdir(path)\n        except OSError:\n            self.send_error(HTTPStatus.NOT_FOUND, \"No permission to list directory\")\n            return None\n        list.sort(key=lambda a: a.lower())\n        r = []\n        try:\n            displaypath = urllib.parse.unquote(self.path, errors=\"surrogatepass\")\n        except UnicodeDecodeError:\n            displaypath = urllib.parse.unquote(path)\n        displaypath = html.escape(displaypath, quote=False)\n        enc = sys.getfilesystemencoding()\n        title = f\"Directory listing for {displaypath}\"\n        r.append(\n            '<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" '\n            '\"http://www.w3.org/TR/html4/strict.dtd\">'\n        )\n        r.append(\"<html>\\n<head>\")\n        r.append(\n            '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=%s\">' % enc\n        )\n        r.append(f\"<title>{title}</title>\\n</head>\")\n        r.append(f\"<body>\\n<h1>{title}</h1>\")\n        r.append(\"<hr>\\n<ul>\")\n        for name in list:\n            fullname = os.path.join(path, name)\n            displayname = linkname = name\n            # Append / for directories or @ for symbolic links\n            if os.path.isdir(fullname):\n                displayname = name + \"/\"\n                linkname = name + \"/\"\n            elif not name.endswith(\"json\") and not name.endswith(\"html\"):\n                # Do not display files that we can't handle\n                continue\n            if os.path.islink(fullname):\n                displayname = name + \"@\"\n                # Note: a link to a directory displays with @ and links with /\n            if os.path.isdir(fullname):\n                r.append(\n                    '<li><a href=\"%s\">%s</a></li>'\n                    % (\n                        urllib.parse.quote(linkname, errors=\"surrogatepass\"),\n                        html.escape(displayname, quote=False),\n                    )\n                )\n            else:\n                # Open a new tab\n                r.append(\n                    '<li><a href=\"%s\" target=\"_blank\">%s</a></li>'\n                    % (\n                        urllib.parse.quote(linkname, errors=\"surrogatepass\"),\n                        html.escape(displayname, quote=False),\n                    )\n                )\n        r.append(\"</ul>\\n<hr>\\n</body>\\n</html>\\n\")\n        encoded = \"\\n\".join(r).encode(enc, \"surrogateescape\")\n        f = io.BytesIO()\n        f.write(encoded)\n        f.seek(0)\n        self.send_response(HTTPStatus.OK)\n        self.send_header(\"Content-type\", f\"text/html; charset={enc}\")\n        self.send_header(\"Content-Length\", str(len(encoded)))\n        self.end_headers()\n        return f\n\n\nclass ExternalProcessorProcess:\n    trace_processor_path = os.path.join(\n        os.path.dirname(__file__), \"web_dist\", \"trace_processor\"\n    )\n\n    def __init__(self, path: str) -> None:\n        self.path = path\n        self._process = subprocess.Popen(\n            [\n                sys.executable,\n                self.trace_processor_path,\n                self.path,\n                \"-D\",\n            ],\n            stderr=subprocess.PIPE,\n        )\n        atexit.register(self.stop)\n        self._wait_start()\n\n    def _wait_start(self):\n        print(\"Loading and parsing trace data, this could take a while...\")\n        assert self._process.stderr is not None\n        while True:\n            line = self._process.stderr.readline().decode(\"utf-8\")\n            if \"This server can be used\" in line:\n                break\n\n    def stop(self):\n        self._process.terminate()\n        try:\n            self._process.wait(timeout=2)\n        except subprocess.TimeoutExpired:  # pragma: no cover\n            self._process.kill()\n        atexit.unregister(self.stop)\n\n\nclass VizViewerTCPServer(socketserver.TCPServer):\n    def handle_timeout(self) -> None:\n        self.trace_served = True\n        return super().handle_timeout()\n\n\nclass ServerThread(threading.Thread):\n    def __init__(\n        self,\n        path: str,\n        port: int = 9001,\n        once: bool = False,\n        use_external_processor: bool = False,\n        timeout: float = 10,\n        quiet: bool = False,\n    ) -> None:\n        self.path = path\n        self.port = port\n        self.once = once\n        self.timeout = timeout\n        self.quiet = quiet\n        self.link = f\"http://127.0.0.1:{self.port}\"\n        self.use_external_procesor = use_external_processor\n        self.externel_processor_process: ExternalProcessorProcess | None = None\n        self.fg_data: list[dict[str, Any]] | None = None\n        self.file_info = None\n        self.httpd: VizViewerTCPServer | None = None\n        self.last_active = time.time()\n        self.retcode: int | None = None\n        self.ready = threading.Event()\n        self.ready.clear()\n        super().__init__(daemon=True)\n\n    def run(self) -> None:\n        try:\n            self.retcode = self.view()\n        except Exception:\n            self.retcode = 1\n            traceback.print_exc()\n        finally:\n            # If it returns from view(), also set ready\n            self.ready.set()\n\n    def view(self) -> int:\n        # Get file data\n        filename = os.path.basename(self.path)\n\n        Handler: Callable[..., HttpHandler]\n        if filename.endswith(\"json\") or filename.endswith(\"gz\"):\n            trace_data = None\n            if self.use_external_procesor:\n                Handler = functools.partial(ExternalProcessorHandler, self)\n                self.externel_processor_process = ExternalProcessorProcess(self.path)\n            else:\n                if filename.endswith(\"gz\"):\n                    with gzip.open(\n                        self.path, \"rt\", encoding=\"utf-8\", errors=\"ignore\"\n                    ) as f:\n                        trace_data = json.load(f)\n                else:\n                    with open(self.path, encoding=\"utf-8\", errors=\"ignore\") as f:\n                        trace_data = json.load(f)\n                self.file_info = trace_data.get(\"file_info\", {})\n                Handler = functools.partial(PerfettoHandler, self)\n        elif filename.endswith(\"html\"):\n            Handler = functools.partial(HtmlHandler, self)\n        else:\n            print(f\"Do not support file type {filename}\")\n            return 1\n\n        if self.is_port_in_use():\n            print(\n                f'Error! Port {self.port} is already in use, try another port with \"--port\"'\n            )\n            return 1\n\n        socketserver.TCPServer.allow_reuse_address = True\n        with VizViewerTCPServer((\"0.0.0.0\", self.port), Handler) as self.httpd:\n            if not self.once and not self.quiet:\n                print(\"Running vizviewer\")\n                print(f\"You can also view your trace on http://localhost:{self.port}\")\n                print(\"Press Ctrl+C to quit\", flush=True)\n            self.ready.set()\n            if self.once:\n                self.httpd.timeout = self.timeout\n                while not self.httpd.__dict__.get(\"trace_served\", False):\n                    self.httpd.handle_request()\n            else:\n                self.httpd.serve_forever()\n\n        if self.externel_processor_process is not None:\n            self.externel_processor_process.stop()\n\n        return 0\n\n    def notify_active(self) -> None:\n        self.last_active = time.time()\n\n    def is_port_in_use(self) -> bool:\n        with contextlib.closing(\n            socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n        ) as sock:\n            return sock.connect_ex((\"127.0.0.1\", self.port)) == 0\n\n\nclass DirectoryViewer:\n    def __init__(\n        self,\n        path: str,\n        port: int,\n        server_only: bool,\n        timeout: int,\n        use_external_processor: bool,\n    ) -> None:\n        self.base_path = os.path.abspath(path)\n        self.port = port\n        self.server_only = server_only\n        self.timeout = timeout\n        self.use_external_processor = use_external_processor\n        self.max_port_number = 10\n        self.servers: dict[str, ServerThread] = {}\n\n    def get_link(self, path: str) -> str:\n        path = os.path.join(self.base_path, path)\n        if path not in self.servers:\n            self.servers[path] = self.create_server(path)\n\n        server = self.servers[path]\n        return server.link\n\n    def create_server(self, path: str) -> ServerThread:\n        max_port_number = self.max_port_number\n        ports_used = set((serv.port for serv in self.servers.values()))\n        if len(ports_used) == max_port_number:\n            self.clean_servers(force=True)\n        else:\n            self.clean_servers(force=False)\n        ports_used = set((serv.port for serv in self.servers.values()))\n        for port in range(self.port + 1, self.port + max_port_number + 1):\n            if port not in ports_used:\n                t = ServerThread(\n                    path,\n                    port=port,\n                    use_external_processor=self.use_external_processor,\n                    quiet=True,\n                )\n                t.start()\n                t.ready.wait()\n                return t\n        assert False, \"Should always have a port available\"  # pragma: no cover\n\n    def clean_servers(self, force: bool = False) -> None:\n        curr_time = time.time()\n        removed_path = []\n        for path, server in self.servers.items():\n            if curr_time - server.last_active > self.timeout:\n                if server.httpd is not None:\n                    server.httpd.shutdown()\n                removed_path.append(path)\n                server.join()\n        for path in removed_path:\n            self.servers.pop(path)\n        if len(removed_path) == 0 and force:\n            max_idle_time, max_idle_path = max(\n                (curr_time - server.last_active, path)\n                for path, server in self.servers.items()\n            )\n            server = self.servers.pop(max_idle_path)\n            if server.httpd:\n                server.httpd.shutdown()\n            server.join()\n\n    def run(self) -> int:\n        Handler = functools.partial(DirectoryHandler, self)\n        socketserver.TCPServer.allow_reuse_address = True\n        with VizViewerTCPServer((\"0.0.0.0\", self.port), Handler) as httpd:\n            print(\"Running vizviewer\")\n            print(f\"You can also view your trace on http://localhost:{self.port}\")\n            print(\"Press Ctrl+C to quit\", flush=True)\n            if not self.server_only:\n                # import webbrowser only if necessary\n                import webbrowser\n\n                webbrowser.open_new_tab(f\"http://127.0.0.1:{self.port}\")\n            try:\n                httpd.serve_forever()\n            except KeyboardInterrupt:\n                for server in self.servers.values():\n                    if server.httpd:\n                        server.httpd.shutdown()\n                    server.join()\n                self.servers = {}\n        return 0\n\n\ndef viewer_main() -> int:\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"file\", nargs=1, help=\"html/json/gz file to open\")\n    parser.add_argument(\n        \"--server_only\",\n        \"-s\",\n        default=False,\n        action=\"store_true\",\n        help=\"Only start the server, do not open webpage\",\n    )\n    parser.add_argument(\n        \"--port\",\n        \"-p\",\n        nargs=\"?\",\n        type=int,\n        default=9001,\n        help=\"Specify the port vizviewer will use\",\n    )\n    parser.add_argument(\n        \"--once\",\n        default=False,\n        action=\"store_true\",\n        help=\"Only serve trace data once, then exit.\",\n    )\n    parser.add_argument(\n        \"--timeout\",\n        nargs=\"?\",\n        type=int,\n        default=10,\n        help=\"Timeout in seconds to stop the server without trace data requests\",\n    )\n    parser.add_argument(\n        \"--flamegraph\", default=False, action=\"store_true\", help=argparse.SUPPRESS\n    )\n    parser.add_argument(\n        \"--use_external_processor\",\n        default=False,\n        action=\"store_true\",\n        help=\"Use the more powerful external trace processor instead of WASM\",\n    )\n\n    options = parser.parse_args(sys.argv[1:])\n    f = options.file[0]\n\n    if options.flamegraph:\n        print(\n            \"--flamegraph is removed because the front-end supports native flamegraph now.\"\n        )\n        print(\"You can select slices in the UI and do 'Slice Flamegraph'.\")\n        return 1\n\n    if options.use_external_processor:\n        # Perfetto trace processor only accepts requests from localhost:10000\n        options.port = 10000\n        # external trace process won't work with once or directory\n        if options.once:\n            print(\"You can't use --once with --use_external_processor\")\n            return 1\n        if os.path.isdir(f):\n            print(\"You can't use --use_external_processor on a directory\")\n            return 1\n\n    if os.path.isdir(f):\n        cwd = os.getcwd()\n        try:\n            directory_viewer = DirectoryViewer(\n                path=f,\n                port=options.port,\n                server_only=options.server_only,\n                timeout=options.timeout,\n                use_external_processor=options.use_external_processor,\n            )\n            directory_viewer.run()\n        finally:\n            os.chdir(cwd)\n    elif os.path.exists(f):\n        path = os.path.abspath(options.file[0])\n        cwd = os.getcwd()\n        try:\n            server = ServerThread(\n                path,\n                port=options.port,\n                once=options.once,\n                timeout=options.timeout,\n                use_external_processor=options.use_external_processor,\n            )\n            server.start()\n            server.ready.wait()\n            if server.retcode is not None:\n                return server.retcode\n            if not options.server_only:\n                # import webbrowser only if necessary\n                import webbrowser\n\n                webbrowser.open_new_tab(f\"http://127.0.0.1:{options.port}\")\n            while server.is_alive():\n                server.join(timeout=1)\n        except KeyboardInterrupt:\n            if server.httpd is not None:\n                server.httpd.shutdown()\n            server.join(timeout=2)\n        finally:\n            os.chdir(cwd)\n    else:\n        print(f\"File {f} does not exist!\")\n        return 1\n\n    return 0\n\n\nif __name__ == \"__main__\":\n    sys.exit(viewer_main())\n"
  },
  {
    "path": "src/viztracer/vizcounter.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom .event_base import _EventBase\n\n\nclass VizCounter(_EventBase):\n    def _viztracer_log(self) -> None:\n        if not self._viztracer_tracer:\n            return\n        d = {}\n        for attr in self._viztracer_get_attr_list():\n            if hasattr(self, attr):\n                val = self.__getattribute__(attr)\n                if not callable(val):\n                    if type(val) is int or type(val) is float:\n                        d[attr] = val\n                    else:\n                        raise Exception(\"Counter can only take numeric values\")\n        self._viztracer_tracer.add_counter(self._viztracer_name, d)\n"
  },
  {
    "path": "src/viztracer/vizevent.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nfrom typing import TYPE_CHECKING\n\nif TYPE_CHECKING:\n    from .viztracer import VizTracer  # pragma: no cover\n\n\nclass VizEvent:\n    def __init__(\n        self, tracer: \"VizTracer\", event_name: str, file_name: str, lineno: int\n    ) -> None:\n        self._tracer = tracer\n        self.event_name = event_name\n        self.file_name = file_name\n        self.lineno = lineno\n        self.start = 0.0\n\n    def __enter__(self) -> None:\n        self.start = self._tracer.getts()\n\n    def __exit__(self, type, value, trace) -> None:\n        dur = self._tracer.getts() - self.start\n        raw_data = {\n            \"ph\": \"X\",\n            \"name\": f\"{self.event_name} ({self.file_name}:{self.lineno})\",\n            \"ts\": self.start,\n            \"dur\": dur,\n            \"cat\": \"FEE\",\n        }\n        self._tracer.add_raw(raw_data)\n"
  },
  {
    "path": "src/viztracer/vizlogging.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom logging import Handler, LogRecord\n\nfrom .viztracer import VizTracer\n\n\nclass VizLoggingHandler(Handler):\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n        self._tracer: VizTracer | None = None\n\n    def emit(self, record: LogRecord) -> None:\n        if not self._tracer:\n            return\n        self._tracer.add_instant(f\"logging - {self.format(record)}\", scope=\"p\")\n\n    def setTracer(self, tracer: VizTracer) -> None:\n        self._tracer = tracer\n"
  },
  {
    "path": "src/viztracer/vizobject.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom .event_base import _EventBase\nfrom .viztracer import VizTracer\n\n\nclass VizObject(_EventBase):\n    def __init__(self, tracer: VizTracer, name: str, **kwargs) -> None:\n        super().__init__(tracer, name, **kwargs)\n        self._viztracer_id = str(id(self))\n        if self._viztracer_tracer:\n            self._viztracer_tracer.add_object(\n                \"N\", self._viztracer_id, self._viztracer_name\n            )\n\n    def __del__(self) -> None:\n        if self._viztracer_tracer:\n            self._viztracer_tracer.add_object(\n                \"D\", self._viztracer_id, self._viztracer_name\n            )\n\n    def _viztracer_log(self, ph: str = \"O\") -> None:\n        if not self._viztracer_tracer:\n            return\n        d = {}\n        for attr in self._viztracer_get_attr_list():\n            if hasattr(self, attr):\n                val = self.__getattribute__(attr)\n                if (\n                    type(val) is list\n                    or type(val) is dict\n                    or type(val) is int\n                    or type(val) is float\n                    or type(val) is str\n                ):\n                    d[attr] = val\n        self._viztracer_tracer.add_object(\n            ph, self._viztracer_id, self._viztracer_name, {\"snapshot\": d}\n        )\n"
  },
  {
    "path": "src/viztracer/vizplugin.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport sys\nimport weakref\nfrom typing import TYPE_CHECKING, Sequence\n\nfrom . import __version__\nfrom .util import color_print, compare_version\n\nif TYPE_CHECKING:\n    from .viztracer import VizTracer  # pragma: no cover\n\n\nclass VizPluginError(Exception):\n    pass\n\n\n# A third party developer who wants to develop based on VizTracer can do a plugin\n# Simply inherit VizPluginBase class and finish the methods. Then you can load it\n# by VizTracer(plugins=[YourVizPlugin()])\n\n\nclass VizPluginBase:\n    def __init__(self) -> None:\n        pass\n\n    def support_version(self) -> str:\n        # You have to overload this to return the latest version of viztracer\n        # your plugin supports. This is for API backward compatibility.\n        # Simply return the version string\n        # For example:\n        #     return \"0.10.5\"\n        raise NotImplementedError(\n            \"Plugin of viztracer has to implement support_version method\"\n        )\n\n    def message(self, m_type: str, payload: dict) -> dict:\n        \"\"\"\n        This is the only logical interface with VizTracer. To make it simple and flexible,\n        we use m_type for message type, and the payload could be any json compatible\n        data. This is more extensible in the future\n        :param m_type str: the message type VizPlugin is receiving\n        :param payload dict: payload of the message\n\n        :return dict: always return a dict. Return None if nothing needs to be done\n                      by VizTracer. Otherwise refer to the docs\n        \"\"\"\n        if m_type == \"command\":\n            if payload[\"cmd_type\"] == \"terminate\":\n                return {\"success\": True}\n\n        return {}\n\n\nclass VizPluginManager:\n    def __init__(\n        self, tracer: \"VizTracer\", plugins: Sequence[VizPluginBase | str] | None\n    ):\n        self._tracer_ref = weakref.ref(tracer)\n        self._plugins = []\n        if plugins:\n            for plugin in plugins:\n                if isinstance(plugin, VizPluginBase):\n                    plugin_instance = plugin\n                elif isinstance(plugin, str):\n                    plugin_instance = self._get_plugin_from_string(plugin)\n                else:\n                    raise TypeError(\"Invalid plugin!\")\n                self._plugins.append(plugin_instance)\n\n                support_version = plugin_instance.support_version()\n                if compare_version(support_version, __version__) > 0:\n                    color_print(\n                        \"WARNING\",\n                        \"The plugin support version is higher than \"\n                        \"viztracer version. Consider update your viztracer\",\n                    )\n                self._send_message(plugin_instance, \"event\", {\"when\": \"initialize\"})\n\n    def _get_plugin_from_string(self, plugin: str) -> VizPluginBase:\n        args = plugin.split()\n        module = args[0]\n        try:\n            package = __import__(module)\n        except ImportError:\n            print(f\"There's no module named {module}, maybe you need to install it\")\n            sys.exit(1)\n\n        m = package\n        if \".\" in module:\n            # package.module\n            names = module.split(\".\")\n\n            try:\n                for mod in names[1:]:\n                    m = m.__getattribute__(mod)\n            except AttributeError:  # pragma: no cover\n                # This in theory should never happen\n                raise ImportError(f\"Unable to import {module}, wrong path\")\n        try:\n            m = m.__getattribute__(\"get_vizplugin\")\n        except AttributeError:\n            print(f\"Unable to find get_vizplugin in {module}. Incorrect plugin.\")\n            sys.exit(1)\n\n        if callable(m):\n            return m(plugin)\n        else:\n            print(\n                f\"Unable to find get_vizplugin as a callable in {module}. Incorrect plugin.\"\n            )\n            sys.exit(1)\n\n    def _send_message(self, plugin: VizPluginBase, m_type: str, payload: dict) -> None:\n        # this is the only interface to communicate with vizplugin\n        # in the future we may need to do version compatibility\n        # here\n        support_version = plugin.support_version()\n\n        ret = plugin.message(m_type, payload)\n        if m_type == \"command\":\n            self.assert_success(plugin, payload, ret)\n        else:\n            self.resolve(support_version, ret)\n\n    @property\n    def has_plugin(self) -> bool:\n        return len(self._plugins) > 0\n\n    def event(self, when: str) -> None:\n        for plugin in self._plugins:\n            self._send_message(plugin, \"event\", {\"when\": when})\n\n    def command(self, cmd: dict) -> None:\n        for plugin in self._plugins:\n            self._send_message(plugin, \"command\", cmd)\n\n    def terminate(self) -> None:\n        self.command({\"cmd_type\": \"terminate\"})\n        for plugin in self._plugins:\n            del plugin\n        self._plugins = []\n\n    def assert_success(\n        self, plugin: VizPluginBase, cmd: dict, ret: dict | None\n    ) -> None:\n        if not ret or \"success\" not in ret or not ret[\"success\"]:\n            raise VizPluginError(f\"{plugin} failed to process {cmd}\")\n\n    def resolve(self, version: str, ret: dict) -> None:\n        if not ret or \"action\" not in ret:\n            return\n        tracer = self._tracer_ref()\n        if tracer is not None:\n            if ret[\"action\"] == \"handle_data\":\n                ret[\"handler\"](tracer.data)\n"
  },
  {
    "path": "src/viztracer/viztracer.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport builtins\nimport gc\nimport inspect\nimport io\nimport json\nimport multiprocessing\nimport os\nimport platform\nimport signal\nimport socket\nimport subprocess\nimport sys\nimport warnings\nimport zlib\nfrom typing import Any, Callable, Literal, Sequence, TextIO\n\nfrom viztracer.snaptrace import Tracer\n\nfrom . import __version__\nfrom .patch import install_all_hooks, uninstall_all_hooks\nfrom .report_builder import ReportBuilder\nfrom .report_server import ReportServer\nfrom .util import frame_stack_has_func, unique_path\nfrom .vizevent import VizEvent\nfrom .vizplugin import VizPluginBase, VizPluginManager\n\n\n# This is the interface of the package. Almost all user should use this\n# class for the functions\nclass VizTracer(Tracer):\n    def __init__(\n        self,\n        tracer_entries: int = 1000000,\n        verbose: int = 1,\n        max_stack_depth: int = -1,\n        include_files: list[str] | None = None,\n        exclude_files: list[str] | None = None,\n        ignore_c_function: bool = False,\n        ignore_frozen: bool = False,\n        log_func_retval: bool = False,\n        log_func_args: bool = False,\n        log_func_repr: Callable[..., str] | None = None,\n        log_func_with_objprint: bool = False,\n        log_print: bool = False,\n        log_gc: bool = False,\n        log_sparse: bool = False,\n        log_async: bool = False,\n        log_torch: bool = False,\n        log_audit: Sequence[str] | None = None,\n        ignore_multiprocess: bool = True,\n        pid_suffix: bool = False,\n        file_info: bool = True,\n        register_global: bool = True,\n        report_endpoint: str | None = None,\n        trace_self: bool = False,\n        min_duration: float = 0,\n        minimize_memory: bool = False,\n        dump_raw: bool = False,\n        sanitize_function_name: bool = False,\n        process_name: str | None = None,\n        output_file: str = \"result.json\",\n        plugins: Sequence[VizPluginBase | str] | None = None,\n    ) -> None:\n        super().__init__(tracer_entries)\n\n        # Members of C Tracer object\n        self.verbose = verbose\n        self.max_stack_depth = max_stack_depth\n        self.ignore_c_function = ignore_c_function\n        self.ignore_frozen = ignore_frozen\n        self.log_func_args = log_func_args\n        self.log_func_retval = log_func_retval\n        self.log_async = log_async\n        self.log_gc = log_gc\n        self.log_print = log_print\n        self.trace_self = trace_self\n        self.lib_file_path = os.path.dirname(sys._getframe().f_code.co_filename)\n        self.process_name = process_name\n        self.min_duration = min_duration\n\n        if include_files is None:\n            self.include_files = include_files\n        else:\n            self.include_files = include_files[:] + [\n                os.path.abspath(f) for f in include_files if not f.startswith(\"/\")\n            ]\n\n        if exclude_files is None:\n            self.exclude_files = exclude_files\n        else:\n            self.exclude_files = exclude_files[:] + [\n                os.path.abspath(f) for f in exclude_files if not f.startswith(\"/\")\n            ]\n\n        # Members of VizTracer object\n        self.pid_suffix = pid_suffix\n        self.file_info = file_info\n        self.log_sparse = log_sparse\n        self.log_audit = log_audit\n        self.log_torch = log_torch\n        self.ignore_multiprocess = ignore_multiprocess\n        self.torch_profile = None\n        self.dump_raw = dump_raw\n        self.sanitize_function_name = sanitize_function_name\n        self.minimize_memory = minimize_memory\n        self.system_print = builtins.print\n\n        self.output_file = output_file\n\n        # Members for the collected data\n        self.enable = False\n        self.parsed = False\n        self.tracer_entries = tracer_entries\n        self.data: dict[str, Any] = {}\n        self.total_entries = 0\n        self.gc_start_args: dict[str, int] = {}\n\n        self.report_socket_file: io.BufferedRWPair | None = None\n        self.report_server_process: subprocess.Popen | None = None\n        self.report_endpoint = report_endpoint\n        if self.report_endpoint is None:\n            if (endpoint := os.getenv(\"VIZTRACER_REPORT_SERVER_ENDPOINT\")) is not None:\n                self.report_endpoint = endpoint\n        self.report_directory: str | None = None\n\n        self._exiting = False\n        if register_global:\n            self.register_global()\n\n        self.cwd = os.getcwd()\n\n        self.log_func_with_objprint = log_func_with_objprint\n        if log_func_with_objprint:\n            import objprint  # type: ignore\n\n            if log_func_repr:\n                raise ValueError(\n                    \"log_func_repr and log_func_with_objprint can't be both set\"\n                )\n            log_func_repr = objprint.objstr\n        self.log_func_repr = log_func_repr\n\n        self._afterfork_cb: Callable | None = None\n        self._afterfork_args: tuple = tuple()\n        self._afterfork_kwargs: dict = {}\n\n        # load in plugins\n        self.plugins = plugins\n        self._plugin_manager = VizPluginManager(self, plugins)\n\n        if log_torch:\n            # To generate an import error if torch is not installed\n            import torch  # type: ignore  # noqa: F401\n\n    def __del__(self):\n        if (\n            report_socket_file := getattr(self, \"report_socket_file\", None)\n        ) is not None:\n            report_socket_file.close()\n\n        self.clean_report_server_process()\n\n        if not self.ignore_multiprocess:\n            uninstall_all_hooks()\n\n    def get_args(self) -> list[str]:\n        args = []\n        signature = inspect.signature(VizTracer)\n        for name, param in signature.parameters.items():\n            if (attr := getattr(self, name)) != param.default:\n                if name == \"verbose\" and attr == 0:\n                    args.append(\"--quiet\")\n                    continue\n\n                if name in (\"process_name\",):\n                    continue\n\n                if isinstance(attr, bool):\n                    if attr:\n                        args.append(f\"--{name}\")\n                elif isinstance(attr, (int, str)):\n                    args.append(f\"--{name}\")\n                    args.append(str(attr))\n                elif (\n                    isinstance(attr, list)\n                    and attr\n                    and all(isinstance(i, (int, str)) for i in attr)\n                ):\n                    args.append(f\"--{name}\")\n                    for item in attr:\n                        args.append(str(item))\n        return args\n\n    @property\n    def pid_suffix(self) -> bool:\n        return self.__pid_suffix\n\n    @pid_suffix.setter\n    def pid_suffix(self, pid_suffix: bool) -> None:\n        if type(pid_suffix) is bool:\n            self.__pid_suffix = pid_suffix\n        else:\n            raise ValueError(f\"pid_suffix needs to be a boolean, not {pid_suffix}\")\n\n    @property\n    def init_kwargs(self) -> dict:\n        return {\n            \"tracer_entries\": self.tracer_entries,\n            \"verbose\": self.verbose,\n            \"output_file\": self.output_file,\n            \"max_stack_depth\": self.max_stack_depth,\n            \"exclude_files\": self.exclude_files,\n            \"include_files\": self.include_files,\n            \"ignore_c_function\": self.ignore_c_function,\n            \"ignore_frozen\": self.ignore_frozen,\n            \"log_func_retval\": self.log_func_retval,\n            \"log_func_args\": self.log_func_args,\n            \"log_print\": self.log_print,\n            \"log_gc\": self.log_gc,\n            \"log_sparse\": self.log_sparse,\n            \"log_async\": self.log_async,\n            \"log_audit\": self.log_audit,\n            \"log_torch\": self.log_torch,\n            \"pid_suffix\": self.pid_suffix,\n            \"ignore_multiprocess\": self.ignore_multiprocess,\n            \"report_endpoint\": self.report_endpoint,\n            \"min_duration\": self.min_duration,\n            \"dump_raw\": self.dump_raw,\n            \"minimize_memory\": self.minimize_memory,\n        }\n\n    def __enter__(self) -> \"VizTracer\":\n        self.start()\n        return self\n\n    def __exit__(self, type, value, trace) -> None:\n        self.stop()\n        self.save()\n        self.terminate()\n        builtins.__dict__.pop(\"__viz_tracer__\", None)\n\n    def connect_report_server(self) -> None:\n        assert self.report_endpoint is not None\n        if self.report_socket_file is not None:\n            try:\n                self.report_socket_file.close()\n            except Exception:  # pragma: no cover\n                pass\n        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n        addr, port = self.report_endpoint.split(\":\")\n        sock.connect((addr, int(port)))\n        self.report_socket_file = sock.makefile(\"rwb\")\n        sock.close()\n        self.report_directory = self.report_socket_file.readline().decode().strip()\n\n    def clean_report_server_process(self) -> None:\n        if self.report_server_process is None:\n            return\n        self.report_server_process.terminate()\n        self.report_server_process.wait()\n        if self.report_server_process.stdout is not None:\n            self.report_server_process.stdout.close()\n        self.report_server_process = None\n        self.report_endpoint = None\n\n    def register_global(self) -> None:\n        builtins.__dict__[\"__viz_tracer__\"] = self\n\n    def install(self) -> None:\n        if sys.platform == \"win32\" or (\n            sys.platform == \"darwin\" and \"arm\" in platform.processor()\n        ):\n            print(\"remote install is not supported on this platform!\")\n            sys.exit(1)\n\n        def signal_start(signum, frame):\n            self.start()\n\n        def signal_stop(signum, frame):\n            self.stop()\n            self.save()\n\n        signal.signal(signal.SIGUSR1, signal_start)\n        signal.signal(signal.SIGUSR2, signal_stop)\n\n    def log_instant(\n        self,\n        name: str,\n        args: Any = None,\n        scope: Literal[\"g\", \"p\", \"t\"] = \"t\",\n        cond: bool = True,\n    ) -> None:\n        if cond:\n            self.add_instant(name, args=args, scope=scope)\n\n    def log_var(self, name: str, var: Any, cond: bool = True) -> None:\n        if cond:\n            if isinstance(var, (float, int)):\n                self.add_counter(name, {\"value\": var})\n            else:\n                import objprint  # type: ignore\n\n                self.add_instant(\n                    name, args={\"object\": objprint.objstr(var, color=False)}, scope=\"t\"\n                )\n\n    def log_event(self, event_name: str) -> VizEvent:\n        call_frame = sys._getframe(1)\n        return VizEvent(\n            self, event_name, call_frame.f_code.co_filename, call_frame.f_lineno\n        )\n\n    def shield_ignore(self, func: Callable, *args, **kwargs):\n        prev_ignore_stack = self.setignorestackcounter(0)\n        res = func(*args, **kwargs)\n        self.setignorestackcounter(prev_ignore_stack)\n        return res\n\n    def set_afterfork(self, callback: Callable, *args, **kwargs) -> None:\n        self._afterfork_cb = callback\n        self._afterfork_args = args\n        self._afterfork_kwargs = kwargs\n\n    def start(self) -> None:\n        if not self.enable:\n            self.parsed = False\n            if self.log_torch:\n                from torch.profiler import profile, supported_activities  # type: ignore\n\n                self.torch_profile = profile(\n                    activities=supported_activities()\n                ).__enter__()\n            if self.log_print:\n                self.overload_print()\n            if self.include_files is not None and self.exclude_files is not None:\n                raise Exception(\n                    \"include_files and exclude_files can't be both specified!\"\n                )\n\n            if not self.ignore_multiprocess or self.report_endpoint is not None:\n                # Multiprocess mode, we need report endpoint and report server\n                if self.report_endpoint is None:\n                    self.report_server_process, self.report_endpoint = (\n                        ReportServer.start_process(\n                            output_file=self.output_file,\n                            minimize_memory=self.minimize_memory,\n                            verbose=self.verbose,\n                            report_endpoint=\"|append_newline\",\n                        )\n                    )\n\n                if self.report_socket_file is None:\n                    self.connect_report_server()\n\n                if not self.ignore_multiprocess:\n                    install_all_hooks(self)\n\n            self._plugin_manager.event(\"pre-start\")\n            if not self.log_sparse:\n                self.enable = True\n                super().start()\n\n    def stop(self, stop_option: str | None = None) -> None:\n        if self.enable:\n            if self.log_print:\n                self.restore_print()\n            if not self.log_sparse:\n                self.enable = False\n                super().stop(stop_option)\n            if self.torch_profile is not None:\n                self.torch_profile.__exit__(None, None, None)\n            self._plugin_manager.event(\"post-stop\")\n            if not self.ignore_multiprocess:\n                uninstall_all_hooks()\n\n    def parse(self) -> int:\n        # parse() is also performance sensitive. We could have a lot of entries\n        # in buffer, so try not to add any overhead when parsing\n        # We parse the buffer into Chrome Trace Event Format\n        self.stop()\n        if not self.parsed:\n            self.data = {\n                \"traceEvents\": self.load(),\n                \"viztracer_metadata\": {\n                    \"version\": __version__,\n                    \"overflow\": False,\n                },\n            }\n            sync_marker = self.get_sync_marker()\n            if sync_marker is not None:\n                self.data[\"viztracer_metadata\"][\"sync_marker\"] = sync_marker\n\n            metadata_count = 0\n            for d in self.data[\"traceEvents\"]:\n                if d[\"ph\"] == \"M\":\n                    metadata_count += 1\n                else:\n                    break\n            self.total_entries = len(self.data[\"traceEvents\"]) - metadata_count\n            if self.total_entries == self.tracer_entries:\n                self.data[\"viztracer_metadata\"][\"overflow\"] = True\n            self.parsed = True\n\n        return self.total_entries\n\n    def run(self, command: str, output_file: str | None = None) -> None:\n        self.start()\n        exec(command)\n        self.stop()\n        self.save(output_file)\n\n    def save_report(\n        self,\n        output_file: str | TextIO,\n        file_info: bool | None = None,\n        verbose: int | None = None,\n    ) -> None:\n        if file_info is None:\n            file_info = self.file_info\n\n        if verbose is None:\n            verbose = self.verbose\n\n        if isinstance(output_file, str):\n            output_file = os.path.abspath(output_file)\n            if not os.path.isdir(os.path.dirname(output_file)):\n                os.makedirs(os.path.dirname(output_file), exist_ok=True)\n\n        # If there are plugins, we can't do dump raw because it will skip the data\n        # manipulation phase\n        # If we want to dump torch profile, we can't do dump raw either\n        if (\n            not self._plugin_manager.has_plugin\n            and not self.log_torch\n            and self.dump_raw\n            and isinstance(output_file, str)\n        ):\n            self.dump(output_file, sanitize_function_name=self.sanitize_function_name)\n        else:\n            if not self.parsed:\n                self.parse()\n\n            self._plugin_manager.event(\"pre-save\")\n\n            if self.log_torch and self.torch_profile is not None:\n                import tempfile\n\n                with tempfile.NamedTemporaryFile(suffix=\".json\") as tmpfile:\n                    self.torch_profile.export_chrome_trace(tmpfile.name)\n                    rb = ReportBuilder(\n                        [\n                            (\n                                tmpfile.name,\n                                {\"type\": \"torch\", \"base_offset\": self.get_base_time()},\n                            ),\n                            self.data,\n                        ],\n                        0,\n                        minimize_memory=self.minimize_memory,\n                        base_time=self.get_base_time(),\n                    )\n                    rb.save(output_file=output_file, file_info=file_info)\n            else:\n                rb = ReportBuilder(\n                    self.data,\n                    0,\n                    minimize_memory=self.minimize_memory,\n                    base_time=self.get_base_time(),\n                )\n                rb.save(output_file=output_file, file_info=file_info)\n\n    def save(\n        self,\n        output_file: str | None = None,\n        file_info: bool | None = None,\n        verbose: int | None = None,\n    ) -> None:\n        if output_file is not None and not isinstance(output_file, str):\n            raise ValueError(\"output_file should be a string or None\")\n\n        if self.ignore_multiprocess and self.report_endpoint is None:\n            # Single process mode, just save the report normally\n            self.save_report(\n                output_file=output_file or self.output_file,\n                file_info=file_info,\n                verbose=verbose,\n            )\n            return\n\n        if self.report_endpoint is None or self.report_socket_file is None:\n            warnings.warn(\n                \"Tried to save report without starting VizTracer. No data will be saved.\",\n                RuntimeWarning,\n                2,\n            )\n            return\n\n        enabled = False\n\n        if self.enable:\n            enabled = True\n            self.stop()\n\n        assert self.report_directory is not None\n        tmp_output_file = unique_path(self.report_directory)\n\n        if tmp_output_file is None:\n            warnings.warn(\n                \"Report server has ended before saving report. No data will be saved.\",\n                RuntimeWarning,\n                2,\n            )\n            return\n\n        payload = io.StringIO()\n        self.save_report(output_file=payload, file_info=file_info, verbose=verbose)\n\n        if output_file is None:\n            output_file = self.output_file\n\n            if self.pid_suffix:\n                output_file_parts = output_file.split(\".\")\n                output_file_parts[-2] = output_file_parts[-2] + \"_\" + str(os.getpid())\n                output_file = \".\".join(output_file_parts)\n\n        try:\n            data = {\"path\": tmp_output_file, \"payload\": payload.getvalue()}\n            if self.report_server_process is not None:\n                data[\"output_file\"] = output_file\n            self.report_socket_file.write(\n                zlib.compress(json.dumps(data).encode(\"utf-8\"))\n            )\n            self.report_socket_file.flush()\n            self.report_socket_file.close()\n        except Exception as exc:\n            warnings.warn(\n                f\"Failed to send report to report server: {exc}.\",\n                RuntimeWarning,\n                2,\n            )\n        finally:\n            self.report_socket_file = None\n\n        if self.report_server_process is not None:\n            try:\n                if self.report_server_process.stdout is not None:\n                    while line := self.report_server_process.stdout.readline():\n                        if line.startswith(b\"\\r\"):\n                            line = line.strip(b\"\\n\")\n                        print(line.decode(), end=\"\")\n                self.report_server_process.wait()\n                if self.report_server_process.returncode != 0:\n                    raise RuntimeError(\n                        \"Report server process exited with non-zero exit code\"\n                    )\n            except KeyboardInterrupt:\n                self.report_server_process.send_signal(signal.SIGINT)\n                try:\n                    self.report_server_process.wait()\n                except KeyboardInterrupt:  # pragma: no cover\n                    self.report_server_process.kill()\n                    self.report_server_process.wait()\n            self.clean_report_server_process()\n\n        if enabled:\n            self.start()\n\n    def fork_save(self, output_file: str | None = None) -> multiprocessing.Process:\n        if multiprocessing.get_start_method() != \"fork\":\n            raise RuntimeError(\"fork_save is only supported in fork start method\")\n\n        # Fix the current pid so it won't give new pid when parsing\n        self.setpid()\n\n        p = multiprocessing.Process(\n            target=self.save_report, daemon=False, kwargs={\"output_file\": output_file}\n        )\n        p.start()\n\n        # Revert to the normal pid mode\n        self.setpid(0)\n\n        return p\n\n    def terminate(self) -> None:\n        self._plugin_manager.terminate()\n\n    def register_exit(self) -> None:\n        self.cwd = os.getcwd()\n\n        def term_handler(sig, frame):\n            # For multiprocessing.pool, it's possible we receive SIGTERM\n            # in util._exit_function(), but before tracer.exit_routine()\n            # executes. In this case, we can just let the exit finish\n            if not frame_stack_has_func(\n                frame, (self.exit_routine, multiprocessing.util._exit_function)\n            ):\n                sys.exit(0)\n\n        signal.signal(signal.SIGTERM, term_handler)\n\n        from multiprocessing.util import Finalize  # type: ignore\n\n        Finalize(self, self.exit_routine, exitpriority=-1)\n\n    def exit_routine(self) -> None:\n        self.stop(stop_option=\"flush_as_finish\")\n        if not self._exiting:\n            self._exiting = True\n            os.chdir(self.cwd)\n            self.save()\n            self.terminate()\n\n    def enable_thread_tracing(self) -> None:\n        if sys.version_info < (3, 12):\n            sys.setprofile(self.threadtracefunc)\n\n    def add_variable(self, name: str, var: Any, event: str = \"instant\") -> None:\n        if self.enable:\n            if event == \"instant\":\n                self.add_instant(f\"{name} = {repr(var)}\", scope=\"p\")\n            elif event == \"counter\":\n                if isinstance(var, (int, float)):\n                    self.add_counter(name, {name: var})\n                else:\n                    raise ValueError(f\"{name}({var}) is not a number\")\n            else:\n                raise ValueError(f\"{event} is not supported\")\n\n    def overload_print(self) -> None:\n        self.system_print = builtins.print\n\n        def new_print(*args, **kwargs):\n            self.pause()\n            file = io.StringIO()\n            kwargs[\"file\"] = file\n            self.system_print(*args, **kwargs)\n            self.add_instant(f\"print - {file.getvalue()}\")\n            self.resume()\n\n        builtins.print = new_print\n\n    def restore_print(self) -> None:\n        builtins.print = self.system_print\n\n    def add_func_exec(self, name: str, val: Any, lineno: int) -> None:\n        exec_line = f\"({lineno}) {name} = {val}\"\n        curr_args = self.get_func_args()\n        if not curr_args:\n            self.add_func_args(\"exec_steps\", [exec_line])\n        else:\n            if \"exec_steps\" in curr_args:\n                curr_args[\"exec_steps\"].append(exec_line)\n            else:\n                curr_args[\"exec_steps\"] = [exec_line]\n\n    @property\n    def log_gc(self) -> bool:\n        return self.__log_gc\n\n    @log_gc.setter\n    def log_gc(self, log_gc: bool) -> None:\n        if isinstance(log_gc, bool):\n            self.__log_gc = log_gc\n            if log_gc:\n                gc.callbacks.append(self.add_garbage_collection)\n            elif self.add_garbage_collection in gc.callbacks:\n                gc.callbacks.remove(self.add_garbage_collection)\n        else:\n            raise TypeError(f\"log_gc needs to be True or False, not {log_gc}\")\n\n    def add_garbage_collection(self, phase: str, info: dict[str, Any]) -> None:\n        if self.enable:\n            if phase == \"start\":\n                args = {\n                    \"collecting\": 1,\n                    \"collected\": 0,\n                    \"uncollectable\": 0,\n                }\n                self.add_counter(\"garbage collection\", args)\n                self.gc_start_args = args\n            if phase == \"stop\" and self.gc_start_args:\n                self.gc_start_args[\"collected\"] = info[\"collected\"]\n                self.gc_start_args[\"uncollectable\"] = info[\"uncollectable\"]\n                self.gc_start_args = {}\n                self.add_counter(\n                    \"garbage collection\",\n                    {\n                        \"collecting\": 0,\n                        \"collected\": 0,\n                        \"uncollectable\": 0,\n                    },\n                )\n\n\ndef get_tracer() -> VizTracer | None:\n    return builtins.__dict__.get(\"__viz_tracer__\", None)\n"
  },
  {
    "path": "src/viztracer/web_dist/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright (c) 2017, The Android Open Source Project\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n\n"
  },
  {
    "path": "src/viztracer/web_dist/index.html",
    "content": "<!doctype html>\n<html lang=\"en-us\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Perfetto UI</title>\n  <meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\" name=\"viewport\" />\n  <link rel=\"shortcut icon\" id=\"favicon\" type=\"image/png\" href=\"data:image/png;base64,iVBORw0KGgo=\">\n</head>\n<body data-perfetto_version='{\"stable\":\"v52.0-6b9586def\"}'>\n  <!--\n    Don't add any content here. The whole <body> is replaced by\n    frontend/index.ts when bootstrapping. This is only used for very early\n    error reporting.\n  -->\n  <style>\n  #app_load_failure {opacity:0;transition:opacity 1s ease;position:absolute;overflow:auto;background:#080082;top:0;left:0;width:100%;height:100%;bottom:0;right:0;margin:0;opacity:0;user-select:text}\n  #app_load_failure > pre {color:#fff;position:absolute;margin:auto;white-space:pre-wrap;top:10vh;max-width:90vw;width:880px;left:0;right:0;font-size:16px;line-height:30px;font-weight:700}\n  #app_load_failure > pre span {background:#fff;color:#080082;padding:2px}\n  #app_load_failure_dbg { overflow-wrap: break-word; font-size: 12px; line-height: 1; font-weight: initial;}\n  #app_load_failure a {color:#fff}\n  #app_load { position: absolute; top: 0; left: 0; right:0; bottom: 0; background-color: #2c3e50;}\n  #app_load_spinner { margin: 30vh auto; width: 150px; height: 150px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: app_load_spin 1s ease-in-out infinite; }\n  @keyframes app_load_spin { to { transform: rotate(360deg); } }\n  </style>\n  <div id=\"app_load\"><div id=\"app_load_spinner\"></div></div>\n  <div id=\"app_load_failure\">\n<pre>\n<span>Perfetto UI - An unrecoverable problem occurred</span>\n\nIf you are seeing this message, something went wrong while loading the UI.\nIn most cases this is due to very slow or flaky network and it goes away by\ndisabling and re-enabling WiFi or trying reloading.\n\nIf the problem persists try these remediation steps:\n\n* Force-reload the page with Ctrl+Shift+R (Mac: Meta+Shift+R) or\n  Shift + click on the refresh button.\n\n* <a href=\"javascript:clearAllCaches();\">Clear all the site storage and caches</a> and reload the page.\n\n* Clear the site data and caches from devtools, following <a target=\"_blank\" href=\"https://developers.google.com/web/tools/chrome-devtools/storage/cache#deletecache\">these instructions</a>.\n\nIf none of this works, file a bug attaching logs and screenshots from devtools.\n  Googlers:      <a href=\"http://go/perfetto-ui-bug\" target=\"_blank\">go/perfetto-ui-bug</a>\n  Non-googlers:  <a href=\"https://github.com/google/perfetto/issues/new\" target=\"_blank\">github.com/google/perfetto/issues/new</a>\n\n<div id=app_load_failure_err></div>\nTechnical Information:\n<div id=app_load_failure_dbg></div>\n</pre>\n  </div>\n  <script type=\"text/javascript\">\n    'use strict';\n    (function () {\n      const TIMEOUT_MS = 120000;\n      let errTimerId = undefined;\n\n      function errHandler(err) {\n        // Note: we deliberately don't clearTimeout(), which means that this\n        // handler is called also in the happy case when the UI loads. In that\n        // case, though, the onCssLoaded() in frontend/index.ts will empty the\n        // <body>, so |div| below will be null and this function becomes a\n        // no-op.\n        const div = document.getElementById('app_load_failure');\n        if (!div) return;\n        div.style.opacity ='1';\n        const errDom = document.getElementById('app_load_failure_err');\n        if (!errDom) return;\n        console.error(err);\n        errDom.innerText += `${err}\\n`;\n        const storageJson = JSON.stringify(window.localStorage);\n        const dbg = document.getElementById('app_load_failure_dbg');\n        if (!dbg) return;\n        dbg.innerText = `LocalStorage: ${storageJson}\\n`;\n        if (errTimerId !== undefined) clearTimeout(errTimerId);\n      }\n\n      // For the 'Click here to clear all caches'.\n      window.clearAllCaches = async () => {\n        if (window.localStorage) window.localStorage.clear();\n        if (window.sessionStorage) window.sessionStorage.clear();\n        const promises = [];\n        if (window.caches) {\n          try {\n            const keys = await window.caches.keys();\n            keys.forEach(k => promises.push(window.caches.delete(k)));\n          } catch (_) {\n            // TODO(288483453)\n          }\n        }\n        if (navigator.serviceWorker) {\n          const regs = await navigator.serviceWorker.getRegistrations();\n          regs.forEach(reg => promises.push(reg.unregister()));\n        }\n        try {\n          await Promise.all(promises);\n        } catch (_) {\n          // TODO(288483453)\n        }\n        window.location.reload();\n      }\n\n      // If the frontend doesn't come up, make the error page above visible.\n      errTimerId = setTimeout(() => errHandler('Timed out'), TIMEOUT_MS);\n      window.onerror = errHandler;\n      window.onunhandledrejection = errHandler;\n\n      const versionStr = document.body.dataset['perfetto_version'] || '{}';\n      const versionMap = JSON.parse(versionStr);\n      const channel = localStorage.getItem('perfettoUiChannel') || 'stable';\n\n      // The '.' below is a fallback for the case of opening a pinned version\n      // (e.g., ui.perfetto.dev/v1.2.3./). In that case, the index.html has no\n      // valid version map; we want to load the frontend from the same\n      // sub-directory directory, hence ./frontend_bundle.js.\n      const version = versionMap[channel] || versionMap['stable'] || '.';\n\n      const script = document.createElement('script');\n      script.async = true;\n      script.src = version + '/frontend_bundle.js';\n      script.onerror = () => errHandler(`Failed to load ${script.src}`);\n\n      document.head.append(script);\n    })();\n  </script>\n</body>\n</html>\n"
  },
  {
    "path": "src/viztracer/web_dist/service_worker.js",
    "content": "var service_worker = (function () {\n'use strict';\n\nvar service_worker = {};\n\n// Copyright (C) 2020 The Android Open Source Project\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(service_worker, \"__esModule\", { value: true });\nconst LOG_TAG = `ServiceWorker: `;\nconst CACHE_NAME = 'ui-perfetto-dev';\nconst OPEN_TRACE_PREFIX = '/_open_trace';\n// If the fetch() for the / doesn't respond within 3s, return a cached version.\n// This is to avoid that a user waits too much if on a flaky network.\nconst INDEX_TIMEOUT_MS = 3000;\n// Use more relaxed timeouts when caching the subresources for the new version\n// in the background.\nconst INSTALL_TIMEOUT_MS = 30000;\n// Files passed to POST /_open_trace/NNNN.\nlet postedFiles = new Map();\n// The install() event is fired:\n// 1. On the first visit, when there is no SW installed.\n// 2. Every time the user opens the site and the version has been updated (they\n//    will get the newer version regardless, unless we hit INDEX_TIMEOUT_MS).\n// The latter happens because:\n// - / (index.html) is always served from the network (% timeout) and it pulls\n//   /v1.2-sha/frontend_bundle.js.\n// - /v1.2-sha/frontend_bundle.js will register /service_worker.js?v=v1.2-sha.\n// The service_worker.js script itself never changes, but the browser\n// re-installs it because the version in the V? query-string argument changes.\n// The reinstallation will cache the new files from the v.1.2-sha/manifest.json.\nself.addEventListener('install', (event) => {\n    const doInstall = async () => {\n        // If we can not access the cache we must give up on the service\n        // worker:\n        let bypass = true;\n        try {\n            bypass = await caches.has('BYPASS_SERVICE_WORKER');\n        }\n        catch (_) {\n            // TODO(288483453)\n        }\n        if (bypass) {\n            // Throw will prevent the installation.\n            throw new Error(LOG_TAG + 'skipping installation, bypass enabled');\n        }\n        // Delete old cache entries from the pre-feb-2021 service worker.\n        try {\n            for (const key of await caches.keys()) {\n                if (key.startsWith('dist-')) {\n                    await caches.delete(key);\n                }\n            }\n        }\n        catch (_) {\n            // TODO(288483453)\n            // It's desirable to delete the old entries but it's not actually\n            // damaging to keep them around so don't give up on the\n            // installation if this fails.\n        }\n        // The UI should register this as service_worker.js?v=v1.2-sha. Extract the\n        // version number and pre-fetch all the contents for the version.\n        const match = /\\bv=([\\w.-]*)/.exec(location.search);\n        if (!match) {\n            throw new Error('Failed to install. Was epecting a query string like ' +\n                `?v=v1.2-sha query string, got \"${location.search}\" instead`);\n        }\n        await installAppVersionIntoCache(match[1]);\n        // skipWaiting() still waits for the install to be complete. Without this\n        // call, the new version would be activated only when all tabs are closed.\n        // Instead, we ask to activate it immediately. This is safe because the\n        // subresources are versioned (e.g. /v1.2-sha/frontend_bundle.js). Even if\n        // there is an old UI tab opened while we activate() a newer version, the\n        // activate() would just cause cache-misses, hence fetch from the network,\n        // for the old tab.\n        self.skipWaiting();\n    };\n    event.waitUntil(doInstall());\n});\nself.addEventListener('activate', (event) => {\n    console.info(LOG_TAG + 'activated');\n    const doActivate = async () => {\n        // This makes a difference only for the very first load, when no service\n        // worker is present. In all the other cases the skipWaiting() will hot-swap\n        // the active service worker anyways.\n        await self.clients.claim();\n    };\n    event.waitUntil(doActivate());\n});\nself.addEventListener('fetch', (event) => {\n    // The early return here will cause the browser to fall back on standard\n    // network-based fetch.\n    if (!shouldHandleHttpRequest(event.request)) {\n        console.debug(LOG_TAG + `serving ${event.request.url} from network`);\n        return;\n    }\n    event.respondWith(handleHttpRequest(event.request));\n});\nfunction shouldHandleHttpRequest(req) {\n    // Suppress warning: 'only-if-cached' can be set only with 'same-origin' mode.\n    // This seems to be a chromium bug. An internal code search suggests this is a\n    // socially acceptable workaround.\n    if (req.cache === 'only-if-cached' && req.mode !== 'same-origin') {\n        return false;\n    }\n    const url = new URL(req.url);\n    if (url.pathname === '/live_reload')\n        return false;\n    if (url.pathname.startsWith(OPEN_TRACE_PREFIX))\n        return true;\n    return req.method === 'GET' && url.origin === self.location.origin;\n}\nasync function handleHttpRequest(req) {\n    if (!shouldHandleHttpRequest(req)) {\n        throw new Error(LOG_TAG + `${req.url} shouldn't have been handled`);\n    }\n    // We serve from the cache even if req.cache == 'no-cache'. It's a bit\n    // contra-intuitive but it's the most consistent option. If the user hits the\n    // reload button*, the browser requests the \"/\" index with a 'no-cache' fetch.\n    // However all the other resources (css, js, ...) are requested with a\n    // 'default' fetch (this is just how Chrome works, it's not us). If we bypass\n    // the service worker cache when we get a 'no-cache' request, we can end up in\n    // an inconsistent state where the index.html is more recent than the other\n    // resources, which is undesirable.\n    // * Only Ctrl+R. Ctrl+Shift+R will always bypass service-worker for all the\n    // requests (index.html and the rest) made in that tab.\n    const cacheOps = { cacheName: CACHE_NAME };\n    const url = new URL(req.url);\n    if (url.pathname === '/') {\n        try {\n            console.debug(LOG_TAG + `Fetching live ${req.url}`);\n            // The await bleow is needed to fall through in case of an exception.\n            return await fetchWithTimeout(req, INDEX_TIMEOUT_MS);\n        }\n        catch (err) {\n            console.warn(LOG_TAG + `Failed to fetch ${req.url}, using cache.`, err);\n            // Fall through the code below.\n        }\n    }\n    else if (url.pathname === '/offline') {\n        // Escape hatch to force serving the offline version without attempting the\n        // network fetch.\n        const cachedRes = await caches.match(new Request('/'), cacheOps);\n        if (cachedRes)\n            return cachedRes;\n    }\n    else if (url.pathname.startsWith(OPEN_TRACE_PREFIX)) {\n        return await handleOpenTraceRequest(req);\n    }\n    const cachedRes = await caches.match(req, cacheOps);\n    if (cachedRes) {\n        console.debug(LOG_TAG + `serving ${req.url} from cache`);\n        return cachedRes;\n    }\n    // In any other case, just propagate the fetch on the network, which is the\n    // safe behavior.\n    console.warn(LOG_TAG + `cache miss on ${req.url}, using live network`);\n    return fetch(req);\n}\n// Handles GET and POST requests to /_open_trace/NNNN, where NNNN is typically a\n// random token generated by the client.\n// This works as follows:\n// - The client does a POST request to /_open_trace/NNNN passing the trace blob\n//   as multipart-data, alongside other options like hideSidebar & co that we\n//   support in the usual querystring (see router.ts)\n// - The SW takes the file and puts it in the global variable `postedFiles`.\n// - The SW responds to the POST request with a redirect to\n//   ui.perfetto.dev/#!/?url=https://ui.perfetto.dev/_open_trace/NNNN&other_args\n// - When the new ui.perfetto.dev is reloaded, it will naturally try to fetch\n//   the trace from /_open_trace/NNNN, this time via a GET request.\n// - The SW intercepts the GET request and returns the file previosly stored in\n//   `postedFiles`.\n// We use postedFiles here to handle the case of progammatically POST-ing to >1\n// instances of ui.perfetto.dev simultaneously, to avoid races.\n// Note that we should not use a global variable for `postedFiles` but we should\n// use the CacheAPI because, technically speaking, the SW could be disposed\n// and respawned in between the POST and the GET request. In practice, however,\n// SWs are disposed only after 30s seconds of idleness. The POST->GET requests\n// happen back-to-back..\nasync function handleOpenTraceRequest(req) {\n    const url = new URL(req.url);\n    console.assert(url.pathname.startsWith(OPEN_TRACE_PREFIX));\n    const fileKey = url.pathname.substring(OPEN_TRACE_PREFIX.length);\n    if (req.method === 'POST') {\n        const formData = await req.formData();\n        const qsParams = new URLSearchParams();\n        // Iterate over the POST fields and copy them over the querystring in\n        // the hash, with the exception of the trace file. The trace file is\n        // kept in the serviceworker and passed as a url= argument.\n        formData.forEach((value, key) => {\n            if (key === 'trace') {\n                if (value instanceof File) {\n                    postedFiles.set(fileKey, value);\n                    qsParams.set('url', req.url);\n                }\n                return;\n            }\n            qsParams.set(key, `${value}`);\n        }); // formData.forEach()\n        return Response.redirect(`${url.protocol}//${url.host}/#!/?${qsParams}`);\n    }\n    // else... method == 'GET'\n    const file = postedFiles.get(fileKey);\n    if (file !== undefined) {\n        postedFiles.delete(fileKey);\n        return new Response(file);\n    }\n    // The file /_open_trace/NNNN does not exist.\n    return Response.error();\n}\nasync function installAppVersionIntoCache(version) {\n    const manifestUrl = `${version}/manifest.json`;\n    try {\n        console.log(LOG_TAG + `Starting installation of ${manifestUrl}`);\n        await caches.delete(CACHE_NAME);\n        const resp = await fetchWithTimeout(manifestUrl, INSTALL_TIMEOUT_MS);\n        const manifest = await resp.json();\n        const manifestResources = manifest['resources'];\n        if (!manifestResources || !(manifestResources instanceof Object)) {\n            throw new Error(`Invalid manifest ${manifestUrl} : ${manifest}`);\n        }\n        const cache = await caches.open(CACHE_NAME);\n        const urlsToCache = [];\n        // We use cache:reload to make sure that the index is always current and we\n        // don't end up in some cycle where we keep re-caching the index coming from\n        // the service worker itself.\n        urlsToCache.push(new Request('/', { cache: 'reload', mode: 'same-origin' }));\n        for (const [resource, integrity] of Object.entries(manifestResources)) {\n            // We use cache: no-cache rather then reload here because the versioned\n            // sub-resources are expected to be immutable and should never be\n            // ambiguous. A revalidation request is enough.\n            const reqOpts = {\n                cache: 'no-cache',\n                mode: 'same-origin',\n                integrity: `${integrity}`,\n            };\n            urlsToCache.push(new Request(`${version}/${resource}`, reqOpts));\n        }\n        await cache.addAll(urlsToCache);\n        console.log(LOG_TAG + 'installation completed for ' + version);\n    }\n    catch (err) {\n        console.error(LOG_TAG + `Installation failed for ${manifestUrl}`, err);\n        await caches.delete(CACHE_NAME);\n        throw err;\n    }\n}\nfunction fetchWithTimeout(req, timeoutMs) {\n    const url = req.url || `${req}`;\n    return new Promise((resolve, reject) => {\n        const timerId = setTimeout(() => {\n            reject(new Error(`Timed out while fetching ${url}`));\n        }, timeoutMs);\n        fetch(req).then((resp) => {\n            clearTimeout(timerId);\n            if (resp.ok) {\n                resolve(resp);\n            }\n            else {\n                reject(new Error(`Fetch failed for ${url}: ${resp.status} ${resp.statusText}`));\n            }\n        }, reject);\n    });\n}\n\nreturn service_worker;\n\n})();\n//# sourceMappingURL=service_worker.js.map\n"
  },
  {
    "path": "src/viztracer/web_dist/trace_processor",
    "content": "#!/usr/bin/env python3\n# Copyright (C) 2021 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n# DO NOT EDIT. Auto-generated by tools/gen_amalgamated_python_tools\n# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n# This file should do the same thing when being invoked in any of these ways:\n# ./trace_processor\n# python trace_processor\n# bash trace_processor\n# cat ./trace_processor | bash\n# cat ./trace_processor | python -\n\nBASH_FALLBACK=\"\"\" \"\nexec python3 - \"$@\" <<'#'EOF\n#\"\"\"  # yapf: disable\n\n\n# ----- Amalgamator: begin of python/perfetto/prebuilts/manifests/trace_processor_shell.py\n# This file has been generated by: tools/roll-prebuilts v52.0\nTRACE_PROCESSOR_SHELL_MANIFEST = [{\n    'arch':\n        'mac-amd64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        11378016,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/mac-amd64/trace_processor_shell',\n    'sha256':\n        '0ce16fc3e2add79cd66c6596a04ec61eb3b2b8d5507496c5d325f57cb89dc5e8',\n    'platform':\n        'darwin',\n    'machine': ['x86_64']\n}, {\n    'arch':\n        'mac-arm64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        10561528,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/mac-arm64/trace_processor_shell',\n    'sha256':\n        '5d7d89fb2472c2ef40413141d5e8f3603d4a500a645d35aa57cb023b9d635b31',\n    'platform':\n        'darwin',\n    'machine': ['arm64']\n}, {\n    'arch':\n        'linux-amd64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        11599408,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/linux-amd64/trace_processor_shell',\n    'sha256':\n        '411402424f34f2ac1fafa819493c13827ae5a10e335d9387a483c4b696b7f6e1',\n    'platform':\n        'linux',\n    'machine': ['x86_64']\n}, {\n    'arch':\n        'linux-arm',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        8656808,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/linux-arm/trace_processor_shell',\n    'sha256':\n        'e45b30a268e2a68f528cb181414383a02317b0e9ab530edb72041faf9fa60468',\n    'platform':\n        'linux',\n    'machine': ['armv6l', 'armv7l', 'armv8l']\n}, {\n    'arch':\n        'linux-arm64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        11055208,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/linux-arm64/trace_processor_shell',\n    'sha256':\n        'e52888ab9b7d4f3d2620a6f803402e60a11230536d048d0ece4f33b78dd7c368',\n    'platform':\n        'linux',\n    'machine': ['aarch64']\n}, {\n    'arch':\n        'android-arm',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        8691452,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/android-arm/trace_processor_shell',\n    'sha256':\n        '2d5881d738d086296dcb5a82a56eb94860ba1b6b41f11f0e48aeff26b63be406'\n}, {\n    'arch':\n        'android-arm64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        10966008,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/android-arm64/trace_processor_shell',\n    'sha256':\n        '6c76a80e4dbf5f6b58905da995111b659c573bd3a100f683c046dd7854a2179a'\n}, {\n    'arch':\n        'android-x86',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        12232376,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/android-x86/trace_processor_shell',\n    'sha256':\n        '135e557cedcec6cd580aafc1a74cac974da0811f56fd724d61e60b575f772193'\n}, {\n    'arch':\n        'android-x64',\n    'file_name':\n        'trace_processor_shell',\n    'file_size':\n        11432000,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/android-x64/trace_processor_shell',\n    'sha256':\n        '634ecc32a0055c805ac62aab77bdf040daed3f5f148064f3e252912705eb3f6d'\n}, {\n    'arch':\n        'windows-amd64',\n    'file_name':\n        'trace_processor_shell.exe',\n    'file_size':\n        11401216,\n    'url':\n        'https://commondatastorage.googleapis.com/perfetto-luci-artifacts/v52.0/windows-amd64/trace_processor_shell.exe',\n    'sha256':\n        'e46f58f5158b48508389e096aa3d5cf7b510b9767a89f949e423abe8c09ca380',\n    'platform':\n        'win32',\n    'machine': ['amd64']\n}]\n\n# ----- Amalgamator: end of python/perfetto/prebuilts/manifests/trace_processor_shell.py\n\n# ----- Amalgamator: begin of python/perfetto/prebuilts/perfetto_prebuilts.py\n# Copyright (C) 2021 The Android Open Source Project\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\"\"\"\nFunctions to fetch pre-pinned Perfetto prebuilts.\n\nThis function is used in different places:\n- Into the //tools/{trace_processor, traceconv} scripts, which are just plain\n  wrappers around executables.\n- Into the //tools/{heap_profiler, record_android_trace} scripts, which contain\n  some other hand-written python code.\n\nThe manifest argument looks as follows:\nTRACECONV_MANIFEST = [\n  {\n    'arch': 'mac-amd64',\n    'file_name': 'traceconv',\n    'file_size': 7087080,\n    'url': https://commondatastorage.googleapis.com/.../trace_to_text',\n    'sha256': 7d957c005b0dc130f5bd855d6cec27e060d38841b320d04840afc569f9087490',\n    'platform': 'darwin',\n    'machine': 'x86_64'\n  },\n  ...\n]\n\nThe intended usage is:\n\n  from perfetto.prebuilts.manifests.traceconv import TRACECONV_MANIFEST\n  bin_path = get_perfetto_prebuilt(TRACECONV_MANIFEST)\n  subprocess.call(bin_path, ...)\n\"\"\"\n\nimport hashlib\nimport os\nimport platform\nimport random\nimport subprocess\nimport sys\n\n\ndef download_or_get_cached(file_name, url, sha256):\n  \"\"\" Downloads a prebuilt or returns a cached version\n\n  The first time this is invoked, it downloads the |url| and caches it into\n  ~/.local/share/perfetto/prebuilts/$tool_name. On subsequent invocations it\n  just runs the cached version.\n  \"\"\"\n  dir = os.path.join(\n      os.path.expanduser('~'), '.local', 'share', 'perfetto', 'prebuilts')\n  os.makedirs(dir, exist_ok=True)\n  bin_path = os.path.join(dir, file_name)\n  sha256_path = os.path.join(dir, file_name + '.sha256')\n  needs_download = True\n\n  # Avoid recomputing the SHA-256 on each invocation. The SHA-256 of the last\n  # download is cached into file_name.sha256, just check if that matches.\n  if os.path.exists(bin_path) and os.path.exists(sha256_path):\n    with open(sha256_path, 'rb') as f:\n      digest = f.read().decode()\n      if digest == sha256:\n        needs_download = False\n\n  if needs_download:  # The file doesn't exist or the SHA256 doesn't match.\n    # Use a unique random file to guard against concurrent executions.\n    # See https://github.com/google/perfetto/issues/786 .\n    tmp_path = '%s.%d.tmp' % (bin_path, random.randint(0, 100000))\n    print('Downloading ' + url)\n    subprocess.check_call(['curl', '-f', '-L', '-#', '-o', tmp_path, url])\n    with open(tmp_path, 'rb') as fd:\n      actual_sha256 = hashlib.sha256(fd.read()).hexdigest()\n    if actual_sha256 != sha256:\n      raise Exception('Checksum mismatch for %s (actual: %s, expected: %s)' %\n                      (url, actual_sha256, sha256))\n    os.chmod(tmp_path, 0o755)\n    os.replace(tmp_path, bin_path)\n    with open(tmp_path, 'w') as f:\n      f.write(sha256)\n    os.replace(tmp_path, sha256_path)\n  return bin_path\n\n\ndef get_perfetto_prebuilt(manifest, soft_fail=False, arch=None):\n  \"\"\" Downloads the prebuilt, if necessary, and returns its path on disk. \"\"\"\n  plat = sys.platform.lower()\n  machine = platform.machine().lower()\n  manifest_entry = None\n  for entry in manifest:\n    # If the caller overrides the arch, just match that (for Android prebuilts).\n    if arch:\n      if entry.get('arch') == arch:\n        manifest_entry = entry\n        break\n      continue\n    # Otherwise guess the local machine arch.\n    if entry.get('platform') == plat and machine in entry.get('machine', []):\n      manifest_entry = entry\n      break\n  if manifest_entry is None:\n    if soft_fail:\n      return None\n    raise Exception(\n        ('No prebuilts available for %s-%s\\n' % (plat, machine)) +\n        'See https://perfetto.dev/docs/contributing/build-instructions')\n\n  return download_or_get_cached(\n      file_name=manifest_entry['file_name'],\n      url=manifest_entry['url'],\n      sha256=manifest_entry['sha256'])\n\n\ndef run_perfetto_prebuilt(manifest):\n  bin_path = get_perfetto_prebuilt(manifest)\n  if sys.platform.lower() == 'win32':\n    sys.exit(subprocess.check_call([bin_path, *sys.argv[1:]]))\n  os.execv(bin_path, [bin_path] + sys.argv[1:])\n\n\n# ----- Amalgamator: end of python/perfetto/prebuilts/perfetto_prebuilts.py\n\nif __name__ == '__main__':\n  run_perfetto_prebuilt(TRACE_PROCESSOR_SHELL_MANIFEST)\n\n#EOF\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/assets/catapult_trace_viewer.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head i18n-values=\"dir:textdirection;\">\n  <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=\">\n\n  <!-- WebComponents V0 origin trial token for http://localhost:10000\n  Expires 28 Jan 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=\">\n\n  <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9\">\n\n  <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=\">\n  <meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\">\n  <meta http-equiv=\"origin-trial\" content=\"AnYuQDtUf6OrWCmR9Okd67JhWVTbmnRedvPi1TEvAxac8+1p6o9q08FoDO6oCbLD0xEqev+SkZFiIhFSzlY9HgUAAABxeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjA0NjE0NTM4LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=\">\n  <meta http-equiv=\"origin-trial\" content=\"AkFXw3wHnOs/XXYqFXpc3diDLrRFd9PTgGs/gs43haZmngI/u1g8L4bDnSKLZkB6fecjmjTwcAMQFCpWMAoHSQEAAAB8eyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==\">\n  <meta http-equiv=\"origin-trial\" content=\"AtQY4wpX9+nj+Vn27cTgygzIPbtB2WoAoMQR5jK9mCm/H2gRIDH6MmGVAaziv9XnYTDKjhBnQYtecbTiIHCQiAIAAACEeyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLXN0YWdpbmcuYXBwc3BvdC5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OSwiaXNTdWJkb21haW4iOnRydWV9\">\n  <title>chrome://tracing</title>\n  <template id=\"overlay-template\">\n  <style>\n    overlay-mask {\n      left: 0;\n      padding: 8px;\n      position: absolute;\n      top: 0;\n      z-index: 1000;\n      font-family: sans-serif;\n      -webkit-justify-content: center;\n      background: rgba(0, 0, 0, 0.8);\n      display: flex;\n      height: 100%;\n      left: 0;\n      position: fixed;\n      top: 0;\n      width: 100%;\n    }\n    overlay-mask:focus {\n      outline: none;\n    }\n    overlay-vertical-centering-container {\n      -webkit-justify-content: center;\n      flex-direction: column;\n      display: flex;\n    }\n    overlay-frame {\n      z-index: 1100;\n      background: rgb(255, 255, 255);\n      border: 1px solid #ccc;\n      margin: 75px;\n      display: flex;\n      flex-direction: column;\n      min-height: 0;\n    }\n    title-bar {\n      -webkit-align-items: center;\n      flex-direction: row;\n      border-bottom: 1px solid #ccc;\n      background-color: #ddd;\n      display: flex;\n      padding: 5px;\n      flex: 0 0 auto;\n    }\n    title {\n      display: inline;\n      font-weight: bold;\n      flex: 1 1 auto;\n    }\n    close-button {\n      -webkit-align-self: flex-end;\n      border: 1px solid #eee;\n      background-color: #999;\n      font-size: 10pt;\n      font-weight: bold;\n      padding: 2px;\n      text-align: center;\n      width: 16px;\n    }\n    close-button:hover {\n      background-color: #ddd;\n      border-color: black;\n      cursor: pointer;\n    }\n    overlay-content {\n      display: flex;\n      flex: 1 1 auto;\n      flex-direction: column;\n      overflow-y: auto;\n      padding: 10px;\n      min-width: 300px;\n      min-height: 0;\n    }\n    button-bar {\n      -webkit-align-items: baseline;\n      border-top: 1px solid #ccc;\n      display: flex;\n      flex: 0 0 auto;\n      flex-direction: row-reverse;\n      padding: 4px;\n    }\n  </style>\n\n  <overlay-mask>\n    <overlay-vertical-centering-container>\n      <overlay-frame>\n        <title-bar>\n          <title></title>\n          <close-button>✕</close-button>\n        </title-bar>\n        <overlay-content>\n          <content></content>\n        </overlay-content>\n        <button-bar></button-bar>\n      </overlay-frame>\n    </overlay-vertical-centering-container>\n  </overlay-mask>\n</template><dom-module id=\"tv-ui-b-hotkey-controller\">\n  <template>\n    <div></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-info-bar\">\n  <template>\n    <style>\n    :host {\n      align-items: center;\n      flex: 0 0 auto;\n      background-color: rgb(252, 235, 162);\n      border-bottom: 1px solid #A3A3A3;\n      border-left: 1px solid white;\n      border-right: 1px solid #A3A3A3;\n      border-top: 1px solid white;\n      display: flex;\n      min-height: 26px;\n      padding: 0 3px 0 3px;\n    }\n\n    :host([hidden]) {\n      display: none !important;\n    }\n\n    #message { flex: 1 1 auto; }\n    </style>\n\n    <span id=\"message\"></span>\n    <span id=\"buttons\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-info-bar-group\">\n  <template>\n    <style>\n    :host {\n      flex: 0 0 auto;\n      flex-direction: column;\n      display: flex;\n    }\n    </style>\n    <div id=\"messages\"></div>\n  </template>\n</dom-module><template id=\"record-selection-dialog-template\">\n  <style>\n  .categories-column-view {\n    display: flex;\n    flex-direction: column;\n    font-family: sans-serif;\n    max-width: 640px;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    transition: max-height 1s ease, max-width 1s ease, opacity 1s ease;\n    will-change: opacity;\n  }\n\n  .categories-column-view-hidden {\n    max-height: 0;\n    max-width: 0;\n    opacity: 0;\n    overflow: hidden;\n    display: none;\n  }\n\n  .categories-selection {\n    display: flex;\n    flex-direction: row;\n  }\n\n  .category-presets {\n    padding: 4px;\n  }\n\n  .category-description {\n    color: #aaa;\n    font-size: small;\n    max-height: 1em;\n    opacity: 1;\n    padding-left: 4px;\n    padding-right: 4px;\n    text-align: right;\n    transition: max-height 1s ease, opacity 1s ease;\n    will-change: opacity;\n  }\n\n  .category-description-hidden {\n    max-height: 0;\n    opacity: 0;\n  }\n\n  .default-enabled-categories,\n  .default-disabled-categories {\n    flex: 1 1 auto;\n    display: flex;\n    flex-direction: column;\n    padding: 4px;\n    width: 300px;\n  }\n\n  .default-enabled-categories > div,\n  .default-disabled-categories > div {\n    padding: 4px;\n  }\n\n  .tracing-modes {\n    flex: 1 0 auto;\n    display: flex;\n    flex-direction: reverse;\n    padding: 4px;\n    border-bottom: 2px solid #ddd;\n    border-top: 2px solid #ddd;\n  }\n\n  .default-disabled-categories {\n    border-left: 2px solid #ddd;\n  }\n\n  .warning-default-disabled-categories {\n    display: inline-block;\n    font-weight: bold;\n    text-align: center;\n    color: #BD2E2E;\n    width: 2.0ex;\n    height: 2.0ex;\n    border-radius: 2.0ex;\n    border: 1px solid #BD2E2E;\n  }\n\n  .categories {\n    font-size: 80%;\n    padding: 10px;\n    flex: 1 1 auto;\n  }\n\n  .group-selectors {\n    font-size: 80%;\n    border-bottom: 1px solid #ddd;\n    padding-bottom: 6px;\n    flex: 0 0 auto;\n  }\n\n  .group-selectors button {\n    padding: 1px;\n  }\n\n  .record-selection-dialog .labeled-option-group {\n    flex: 0 0 auto;\n    flex-direction: column;\n    display: flex;\n  }\n\n  .record-selection-dialog .labeled-option {\n    border-top: 5px solid white;\n    border-bottom: 5px solid white;\n  }\n\n  .record-selection-dialog .edit-categories {\n    padding-left: 6px;\n  }\n\n  .record-selection-dialog .edit-categories:after {\n    padding-left: 15px;\n    font-size: 125%;\n  }\n\n  .record-selection-dialog .labeled-option-group:not(.categories-expanded)\n      .edit-categories:after {\n    content: '\\25B8'; /* Right triangle */\n  }\n\n  .record-selection-dialog .labeled-option-group.categories-expanded\n      .edit-categories:after {\n    content: '\\25BE'; /* Down triangle */\n  }\n\n  </style>\n\n  <div class=\"record-selection-dialog\">\n    <tr-ui-b-info-bar-group></tr-ui-b-info-bar-group>\n    <div class=\"category-presets\">\n    </div>\n    <div class=\"category-description\"></div>\n    <div class=\"categories-column-view\">\n      <div class=\"tracing-modes\"></div>\n      <div class=\"categories-selection\">\n        <div class=\"default-enabled-categories\">\n          <div>Record Categories</div>\n          <div class=\"group-selectors\">\n            Select\n            <button class=\"all-btn\">All</button>\n            <button class=\"none-btn\">None</button>\n          </div>\n          <div class=\"categories\"></div>\n        </div>\n        <div class=\"default-disabled-categories\">\n          <div>Disabled by Default Categories\n            <a class=\"warning-default-disabled-categories\">!</a>\n          </div>\n          <div class=\"group-selectors\">\n            Select\n            <button class=\"all-btn\">All</button>\n            <button class=\"none-btn\">None</button>\n          </div>\n          <div class=\"categories\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template><dom-module id=\"tr-ui-a-analysis-link\">\n  <template>\n    <style>\n    :host {\n      display: inline;\n      cursor: pointer;\n      cursor: pointer;\n      white-space: nowrap;\n    }\n    a {\n      text-decoration: underline;\n    }\n    </style>\n    <a href=\"{{href}}\" on-click=\"onClicked_\" on-mouseenter=\"onMouseEnter_\" on-mouseleave=\"onMouseLeave_\"><slot></slot></a>\n\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-table\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      table {\n        flex: 1 1 auto;\n        align-self: stretch;\n        border-collapse: separate;\n        border-spacing: 0;\n        border-width: 0;\n        -webkit-user-select: initial;\n      }\n\n      tr > td {\n        padding: 2px 4px 2px 4px;\n        vertical-align: top;\n      }\n\n      table > tbody:focus {\n        outline: none;\n      }\n      table > tbody:focus[selection-mode=\"row\"] > tr[selected],\n      table > tbody:focus[selection-mode=\"cell\"] > tr > td[selected],\n      table > tbody:focus > tr.empty-row > td {\n        outline: 1px dotted #666666;\n        outline-offset: -1px;\n      }\n\n      button.toggle-button {\n        height: 15px;\n        line-height: 60%;\n        vertical-align: middle;\n        width: 100%;\n      }\n\n      button > * {\n        height: 15px;\n        vertical-align: middle;\n      }\n\n      td.button-column {\n        width: 30px;\n      }\n\n      table > thead > tr > td.sensitive:hover {\n        background-color: #fcfcfc;\n      }\n\n      table > thead > tr > td {\n        font-weight: bold;\n        text-align: left;\n\n        background-color: #eee;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n\n        border-top: 1px solid #ffffff;\n        border-bottom: 1px solid #aaa;\n      }\n\n      table > tfoot {\n        background-color: #eee;\n        font-weight: bold;\n      }\n\n      /* Light row and cell highlight. */\n      table > tbody[row-highlight-style=\"light\"] > tr[selected],\n      table > tbody[cell-highlight-style=\"light\"] > tr > td[selected] {\n        background-color: rgb(213, 236, 229);  /* light turquoise */\n      }\n      table > tbody[row-highlight-style=\"light\"] >\n          tr:not(.empty-row):not([selected]):hover,\n      table > tbody[cell-highlight-style=\"light\"] >\n          tr:not(.empty-row):not([selected]) > td:hover {\n        background-color: #f6f6f6;  /* light grey */\n      }\n\n      /* Dark row and cell highlight. */\n      table > tbody[row-highlight-style=\"dark\"] > tr[selected],\n      table > tbody[cell-highlight-style=\"dark\"] > tr > td[selected] {\n        background-color: rgb(103, 199, 165);  /* turquoise */\n      }\n      table > tbody[row-highlight-style=\"dark\"] >\n          tr:not(.empty-row):not([selected]):hover,\n      table > tbody[cell-highlight-style=\"dark\"] >\n          tr:not(.empty-row):not([selected]) > td:hover {\n        background-color: #e6e6e6;  /* grey */\n      }\n      table > tbody[row-highlight-style=\"dark\"] > tr:hover[selected],\n      table > tbody[cell-highlight-style=\"dark\"] > tr[selected] > td:hover {\n        background-color: rgb(171, 217, 202);  /* semi-light turquoise */\n      }\n\n      table > colgroup > col[selected] {\n        background-color: #e6e6e6;  /* grey */\n      }\n\n      table > tbody > tr.empty-row > td {\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      table > tbody.has-footer > tr:last-child > td {\n        border-bottom: 1px solid #aaa;\n      }\n\n      table > tfoot > tr:first-child > td {\n        border-top: 1px solid #ffffff;\n      }\n\n      :host([zebra]) table tbody tr:nth-child(even) {\n        background-color: #f4f4f4;\n      }\n\n      expand-button {\n        -webkit-user-select: none;\n        cursor: pointer;\n        margin-right: 3px;\n        font-size: smaller;\n        height: 1rem;\n      }\n\n      expand-button.button-expanded {\n        transform: rotate(90deg);\n      }\n    </style>\n    <table>\n      <colgroup id=\"cols\">\n      </colgroup>\n      <thead id=\"head\">\n      </thead>\n      <tbody id=\"body\">\n      </tbody>\n      <tfoot id=\"foot\">\n      </tfoot>\n    </table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-table-header-cell\">\n  <template>\n  <style>\n    :host {\n      -webkit-user-select: none;\n      display: flex;\n    }\n\n    span {\n      flex: 0 1 auto;\n    }\n\n    #side {\n      -webkit-user-select: none;\n      flex: 0 0 auto;\n      padding-left: 2px;\n      padding-right: 2px;\n      vertical-align: top;\n      font-size: 15px;\n      font-family: sans-serif;\n      line-height: 85%;\n      margin-left: 5px;\n    }\n\n    #side.disabled {\n      color: rgb(140, 140, 140);\n    }\n\n    #title:empty, #side:empty {\n      display: none;\n    }\n  </style>\n\n    <span id=\"title\"></span>\n    <span id=\"side\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-alert-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-context-controller\">\n  <template></template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-span\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n      justify-content: flex-end;\n      position: relative;\n      /* Limit the sparkline's negative z-index to the span only. */\n      isolation: isolate;\n    }\n\n    :host(.left-align) {\n      justify-content: flex-start;\n    }\n\n    :host(.inline) {\n      display: inline-flex;\n    }\n\n    #sparkline {\n      width: 0%;\n      position: absolute;\n      bottom: 0;\n      display: none;\n      height: 100%;\n      background-color: hsla(216, 100%, 94.5%, .75);\n      border-color: hsl(216, 100%, 89%);\n      box-sizing: border-box;\n      z-index: -1;\n    }\n    #sparkline.positive {\n      border-right-style: solid;\n      /* The border width must be kept in sync with buildSparklineStyle_(). */\n      border-right-width: 1px;\n    }\n    #sparkline:not(.positive) {\n      border-left-style: solid;\n      /* The border width must be kept in sync with buildSparklineStyle_(). */\n      border-left-width: 1px;\n    }\n    #sparkline.better {\n      background-color: hsla(115, 100%, 93%, .75);\n      border-color: hsl(118, 60%, 80%);\n    }\n    #sparkline.worse {\n      background-color: hsla(0, 100%, 88%, .75);\n      border-color: hsl(0, 100%, 80%);\n    }\n\n    #content {\n      white-space: nowrap;\n    }\n    #content, #significance, #warning {\n      flex-grow: 0;\n    }\n    #content.better {\n      color: green;\n    }\n    #content.worse {\n      color: red;\n    }\n\n    #significance svg {\n      margin-left: 4px;\n      display: none;\n      height: 1em;\n      vertical-align: text-top;\n      stroke-width: 4;\n      fill: rgba(0, 0, 0, 0);\n    }\n    #significance #insignificant {\n      stroke: black;\n    }\n    #significance #significantly_better {\n      stroke: green;\n    }\n    #significance #significantly_worse {\n      stroke: red;\n    }\n\n    #warning {\n      display: none;\n      margin-left: 4px;\n      height: 1em;\n      vertical-align: text-top;\n      stroke-width: 0;\n    }\n    #warning path {\n      fill: rgb(255, 185, 185);\n    }\n    #warning rect {\n      fill: red;\n    }\n    </style>\n\n    <span id=\"sparkline\"></span>\n\n    <span id=\"content\"></span>\n\n    <span id=\"significance\">\n      \n      <svg id=\"insignificant\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <line x1=\"36\" x2=\"92\" y1=\"80\" y2=\"80\"></line>\n      </svg>\n\n      \n      <svg id=\"significantly_better\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <path d=\"M 28 64 Q 64 128 100 64\"></path>\n      </svg>\n\n      \n      <svg id=\"significantly_worse\" viewBox=\"0 0 128 128\">\n        <circle cx=\"64\" cy=\"64\" r=\"60\"></circle>\n        <circle cx=\"44\" cy=\"44\" r=\"4\"></circle>\n        <circle cx=\"84\" cy=\"44\" r=\"4\"></circle>\n        <path d=\"M 36 96 Q 64 48 92 96\"></path>\n      </svg>\n    </span>\n\n    <svg id=\"warning\" viewBox=\"0 0 128 128\">\n      <path d=\"M 64 0 L 128 128 L 0 128 L 64 0\"></path>\n      <rect height=\"84\" width=\"8\" x=\"60\" y=\"0\"></rect>\n      <rect height=\"24\" width=\"8\" x=\"60\" y=\"100\"></rect>\n    </svg>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-tab-view\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #selection_description, #tabs {\n        font-size: 12px;\n      }\n\n      #selection_description {\n        display: inline-block;\n        font-weight: bold;\n        margin: 9px 0px 4px 20px;\n      }\n\n      #tabs {\n        flex: 0 0 auto;\n        border-top: 1px solid #8e8e8e;\n        border-bottom: 1px solid #8e8e8e;\n        background-color: #ececec;\n        overflow: hidden;\n        margin: 0;\n      }\n\n      #tabs input[type=radio] {\n        display: none;\n      }\n\n      #tabs tab label {\n        cursor: pointer;\n        display: inline-block;\n        border: 1px solid #ececec;\n        margin: 5px 0px 0px 15px;\n        padding: 3px 10px 3px 10px;\n      }\n\n      #tabs tab label span {\n        font-weight: bold;\n      }\n\n      #tabs:focus input[type=radio]:checked ~ label {\n        outline: dotted 1px #8e8e8e;\n        outline-offset: -2px;\n      }\n\n      #tabs input[type=radio]:checked ~ label {\n        background-color: white;\n        border: 1px solid #8e8e8e;\n        border-bottom: 1px solid white;\n      }\n\n      #subView {\n        flex: 1 1 auto;\n        min-width: 0;\n        display: flex;\n      }\n\n      #subView > * {\n        flex: 1 1 auto;\n        min-width: 0;\n      }\n    </style>\n    <div hidden=\"[[tabsHidden]]\" id=\"tabs\">\n      <label id=\"selection_description\">[[label_]]</label>\n      <template is=\"dom-repeat\" items=\"[[subViews_]]\">\n        <tab>\n          <input checked=\"[[isChecked_(item)]]\" id$=\"[[computeRadioId_(item)]]\" name=\"tabs\" on-change=\"onTabChanged_\" type=\"radio\"/>\n          <label for$=\"[[computeRadioId_(item)]]\">\n            <template if=\"[[item.tabIcon]]\" is=\"dom-if\">\n              <span style$=\"[[item.tabIcon.style]]\">[[item.tabIcon.text]]</span>\n            </template>\n            [[item.tabLabel]]\n          </label>\n        </tab>\n      </template>\n    </div>\n    <div id=\"subView\"></div>\n    <slot>\n    </slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-breakdown-view\">\n  <template>\n    <tr-ui-b-tab-view id=\"tabs\"></tr-ui-b-tab-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-breakdown-view-tab\">\n  <template>\n    <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>\n    <tr-ui-b-info-bar hidden=\"\" id=\"info\"></tr-ui-b-info-bar>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-path-view\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n    </style>\n    <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-drag-handle\">\n  <template>\n    <style>\n    :host {\n      -webkit-user-select: none;\n      box-sizing: border-box;\n      display: block;\n    }\n\n    :host(.horizontal-drag-handle) {\n      background-image: -webkit-gradient(linear,\n                                         0 0, 0 100%,\n                                         from(#E5E5E5),\n                                         to(#D1D1D1));\n      border-bottom: 1px solid #8e8e8e;\n      border-top: 1px solid white;\n      cursor: ns-resize;\n      flex: 0 0 auto;\n      height: 7px;\n      position: relative;\n    }\n\n    :host(.vertical-drag-handle) {\n      background-image: -webkit-gradient(linear,\n                                         0 0, 100% 0,\n                                         from(#E5E5E5),\n                                         to(#D1D1D1));\n      border-left: 1px solid white;\n      border-right: 1px solid #8e8e8e;\n      cursor: ew-resize;\n      flex: 0 0 auto;\n      position: relative;\n      width: 7px;\n    }\n    </style>\n    <div></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-heap-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #header {\n        flex: 0 0 auto;\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n      }\n\n      #label {\n        flex: 1 1 auto;\n        padding: 8px;\n        font-size: 15px;\n        font-weight: bold;\n      }\n\n      #view_mode_container {\n        display: none;\n        flex: 0 0 auto;\n        padding: 5px;\n        font-size: 15px;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #split_view {\n        display: none;  /* Hide until memory allocator dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        flex-direction: row;\n      }\n\n      #path_view {\n        width: 50%;\n      }\n\n      #breakdown_view {\n        flex: 1 1 auto;\n        width: 0;\n      }\n\n      #path_view, #breakdown_view {\n        overflow-x: auto;  /* Show scrollbar if necessary. */\n      }\n    </style>\n    <div id=\"header\">\n      <div id=\"label\">Heap details</div>\n      <div id=\"view_mode_container\">\n        <span>View mode:</span>\n        \n      </div>\n    </div>\n    <div id=\"contents\">\n      <tr-ui-b-info-bar hidden=\"\" id=\"info_bar\">\n      </tr-ui-b-info-bar>\n\n      <div id=\"info_text\">No heap dump selected</div>\n\n      <div id=\"split_view\">\n        <tr-ui-a-memory-dump-heap-details-path-view id=\"path_view\">\n        </tr-ui-a-memory-dump-heap-details-path-view>\n        <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n        <tr-ui-a-memory-dump-heap-details-breakdown-view id=\"breakdown_view\">\n        </tr-ui-a-memory-dump-heap-details-breakdown-view>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-allocator-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory allocator dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <div id=\"label\">Component details</div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory allocator dump selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-vm-regions-details-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <div id=\"label\">Memory maps</div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory maps selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-color-legend\">\n  <template>\n    <style>\n    :host {\n      display: inline-block;\n    }\n\n    #square {\n      font-size: 150%;  /* Make the square bigger. */\n      line-height: 0%;  /* Prevent the square from increasing legend height. */\n    }\n    </style>\n    <span id=\"square\"></span>\n    <span id=\"label\"></span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-view-specific-brushing-state\">\n  <template></template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-overview-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: column;\n      }\n\n      #label {\n        flex: 0 0 auto;\n        padding: 8px;\n\n        background-color: #eee;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n\n        font-size:  15px;\n        font-weight: bold;\n      }\n\n      #label a {\n        font-weight: normal;\n        float: right;\n      }\n\n      #contents {\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n        overflow: auto;\n      }\n\n      #info_text {\n        padding: 8px;\n        color: #666;\n        font-style: italic;\n        text-align: center;\n      }\n\n      #table {\n        display: none;  /* Hide until memory dumps are set. */\n        flex: 1 0 auto;\n        align-self: stretch;\n        font-size: 12px;\n      }\n    </style>\n    <tr-ui-b-view-specific-brushing-state id=\"state\" view-id=\"analysis.memory_dump_overview_pane\">\n    </tr-ui-b-view-specific-brushing-state>\n    <div id=\"label\">Overview <a href=\"https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra\">Help</a></div>\n    <div id=\"contents\">\n      <div id=\"info_text\">No memory memory dumps selected</div>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-memory-dump-header-pane\">\n  <template>\n    <style>\n      :host {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n\n        background-color: #d0d0d0;\n        border-bottom: 1px solid #8e8e8e;\n        border-top: 1px solid white;\n      }\n\n      #label {\n        flex: 1 1 auto;\n        padding: 6px;\n        font-size: 15px;\n      }\n\n      #aggregation_mode_container {\n        display: none;\n        flex: 0 0 auto;\n        padding: 5px;\n        font-size: 15px;\n      }\n    </style>\n    \n    <div id=\"label\"></div>\n    <div id=\"aggregation_mode_container\">\n      <span>Metric aggregation:</span>\n      \n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-stacked-pane-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n\n    #pane_container > * {\n      flex: 0 0 auto;\n    }\n    </style>\n    <div id=\"pane_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-container-memory-dump-sub-view\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-counter-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-event-summary-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n    \n  </template>\n</dom-module><dom-module id=\"tr-ui-a-selection-summary-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n    \n  </template>\n</dom-module><dom-module id=\"tr-ui-b-radio-picker\">\n  <template>\n    <style>\n    :host([vertical]) #container {\n      flex-direction: column;\n    }\n    :host(:not[vertical]) #container {\n      flex-direction: row;\n    }\n    #container {\n      display: flex;\n    }\n    #container > div {\n      padding-left: 1em;\n      padding-bottom: 0.5em;\n    }\n    </style>\n    <div id=\"container\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-chart-legend-key\">\n  <template>\n    <style>\n      #checkbox {\n        margin: 0;\n        visibility: hidden;\n        vertical-align: text-top;\n      }\n      #label, #link {\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        overflow: hidden;\n        display: inline-block;\n      }\n    </style>\n\n    <input checked=\"\" id=\"checkbox\" type=\"checkbox\"/>\n    <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    <label id=\"label\"></label>\n  </template>\n</dom-module><template id=\"chart-base-template\">\n  <svg> \n    <g id=\"chart-area\" xmlns=\"http://www.w3.org/2000/svg\">\n      <g class=\"x axis\"></g>\n      <g class=\"y axis\"></g>\n      <text id=\"title\"></text>\n    </g>\n  </svg>\n</template><dom-module id=\"tr-v-ui-breakdown-span\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table_container {\n      display: flex;\n      flex: 0 0 auto;\n    }\n    #table {\n      max-height: 150px;\n      overflow-y: auto;\n    }\n    </style>\n\n    <div id=\"empty\">(empty)</div>\n    <div id=\"table_container\">\n      <div id=\"container\"></div>\n      <span>\n        <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n      </span>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-collected-related-event-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-date-range-span\">\n  <template>\n    <content></content>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-generic-object-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      font-family: monospace;\n    }\n    </style>\n    <div id=\"content\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-generic-object-view-with-label\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-generic-set-span\">\n  <template>\n    <style>\n      a {\n        display: block;\n      }\n    </style>\n\n    <tr-ui-a-generic-object-view id=\"generic\"></tr-ui-a-generic-object-view>\n\n    <div id=\"links\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-related-event-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-scalar-diagnostic-span\">\n  <template>\n    <tr-v-ui-scalar-span id=\"scalar\"></tr-v-ui-scalar-span>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-unmergeable-diagnostic-set-span\">\n</dom-module><dom-module id=\"tr-v-ui-diagnostic-map-table\">\n  <template>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-scalar-map-table\">\n  <template>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-span\">\n  <template>\n    <style>\n    #container {\n      display: flex;\n      flex-direction: row;\n      justify-content: space-between;\n    }\n    #chart {\n      flex-grow: 1;\n      display: none;\n    }\n    #drag_handle, #diagnostics_tab_templates {\n      display: none;\n    }\n    #chart svg {\n      display: block;\n    }\n    #stats_container {\n      overflow-y: auto;\n    }\n    </style>\n\n    <div id=\"container\">\n      <div id=\"chart\"></div>\n      <div id=\"stats_container\">\n        <tr-v-ui-scalar-map-table id=\"stats\"></tr-v-ui-scalar-map-table>\n      </div>\n    </div>\n    <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n\n    <tr-ui-b-tab-view id=\"diagnostics\"></tr-ui-b-tab-view>\n\n    <div id=\"diagnostics_tab_templates\">\n      <tr-v-ui-diagnostic-map-table id=\"metric_diagnostics\"></tr-v-ui-diagnostic-map-table>\n\n      <tr-v-ui-diagnostic-map-table id=\"metadata_diagnostics\"></tr-v-ui-diagnostic-map-table>\n\n      <div id=\"sample_diagnostics_container\">\n        <div id=\"merge_sample_diagnostics_container\">\n          <input checked=\"\" id=\"merge_sample_diagnostics\" on-change=\"updateDiagnostics_\" type=\"checkbox\"/>\n          <label for=\"merge_sample_diagnostics\">Merge Sample Diagnostics</label>\n        </div>\n        <tr-v-ui-diagnostic-map-table id=\"sample_diagnostics\"></tr-v-ui-diagnostic-map-table>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      overflow: auto;\n    }\n    #content {\n      display: flex;\n      flex-direction: column;\n      flex: 0 1 auto;\n      align-self: stretch;\n    }\n    #content > * {\n      flex: 0 0 auto;\n      align-self: stretch;\n    }\n    #histogramContainer {\n      display: flex;\n    }\n\n    tr-ui-a-multi-event-summary-table {\n      border-bottom: 1px solid #aaa;\n    }\n\n    tr-ui-a-selection-summary-table  {\n      margin-top: 1.25em;\n      border-top: 1px solid #aaa;\n      background-color: #eee;\n      font-weight: bold;\n      margin-bottom: 1.25em;\n      border-bottom: 1px solid #aaa;\n    }\n    </style>\n    <div id=\"content\">\n      <tr-ui-a-multi-event-summary-table id=\"eventSummaryTable\">\n      </tr-ui-a-multi-event-summary-table>\n      <tr-ui-a-selection-summary-table id=\"selectionSummaryTable\">\n      </tr-ui-a-selection-summary-table>\n      <tr-ui-b-radio-picker id=\"radioPicker\">\n      </tr-ui-b-radio-picker>\n      <div id=\"histogramContainer\">\n        <tr-v-ui-histogram-span id=\"histogramSpan\">\n        </tr-v-ui-histogram-span>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-related-events\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-async-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #container {\n      display: flex;\n      flex: 1 1 auto;\n    }\n    #events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <div id=\"container\">\n      <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n      <div id=\"events\">\n        <tr-ui-a-related-events id=\"relatedEvents\"></tr-ui-a-related-events>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-cpu-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      flex: 1 1 auto;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-flow-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-instant-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-object-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-frame-power-usage-chart\">\n  <template>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-power-sample-summary-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-power-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #tables {\n      display: flex;\n      flex-direction: column;\n      width: 50%;\n    }\n    #chart {\n      width: 50%;\n    }\n    </style>\n    <div id=\"tables\">\n      <tr-ui-a-power-sample-summary-table id=\"summaryTable\">\n      </tr-ui-a-power-sample-summary-table>\n    </div>\n    <tr-ui-a-frame-power-usage-chart id=\"chart\">\n    </tr-ui-a-frame-power-usage-chart>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-sample-sub-view\">\n  <template>\n    <style>\n    :host { display: block; }\n    #control {\n      background-color: #e6e6e6;\n      background-image: -webkit-gradient(linear, 0 0, 0 100%,\n                                         from(#E5E5E5), to(#D1D1D1));\n      flex: 0 0 auto;\n      overflow-x: auto;\n    }\n    #control::-webkit-scrollbar { height: 0px; }\n    #control {\n      font-size: 12px;\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      margin: 1px;\n      margin-right: 2px;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"control\">\n      Sample View Option\n    </div>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-thread-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      display: flex;\n      flex: 1 1 auto;\n      min-width: 0;\n    }\n    #content > tr-ui-a-related-events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-thread-time-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #content {\n      flex: 1 1 auto;\n      min-width: 0;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"content\"></tr-ui-a-multi-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-user-expectation-related-samples-table\">\n  <template>\n    <style>\n    #table {\n      flex: 1 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-multi-user-expectation-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex: 1 1 auto;\n    }\n    #events {\n      margin-left: 8px;\n      flex: 0 1 200px;\n    }\n    </style>\n    <tr-ui-a-multi-event-sub-view id=\"realView\"></tr-ui-a-multi-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-user-expectation-related-samples-table id=\"relatedSamples\"></tr-ui-a-user-expectation-related-samples-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-stack-frame\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex: 0 1;\n      flex-direction: column;\n    }\n    #table {\n      flex: 0 1 auto;\n      align-self: stretch;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\">\n    </tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-async-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display:flex;\n      flex-direction: column;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-related-events id=\"relatedEvents\"></tr-ui-a-related-events>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-cpu-slice-sub-view\">\n  <template>\n    <style>\n    table {\n      border-collapse: collapse;\n      border-width: 0;\n      margin-bottom: 25px;\n      width: 100%;\n    }\n\n    table tr > td:first-child {\n      padding-left: 2px;\n    }\n\n    table tr > td {\n      padding: 2px 4px 2px 4px;\n      vertical-align: text-top;\n      width: 150px;\n    }\n\n    table td td {\n      padding: 0 0 0 0;\n      width: auto;\n    }\n    tr {\n      vertical-align: top;\n    }\n\n    tr:nth-child(2n+0) {\n      background-color: #e2e2e2;\n    }\n    </style>\n    <table>\n      <tbody><tr>\n        <td>Running process:</td><td id=\"process-name\"></td>\n      </tr>\n      <tr>\n        <td>Running thread:</td><td id=\"thread-name\"></td>\n      </tr>\n      <tr>\n        <td>Start:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"start\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Duration:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"duration\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Active slices:</td><td id=\"running-thread\"></td>\n      </tr>\n      <tr>\n        <td>Args:</td>\n        <td>\n          <tr-ui-a-generic-object-view id=\"args\">\n          </tr-ui-a-generic-object-view>\n        </td>\n      </tr>\n    </tbody></table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-flow-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"singleEventSubView\">\n    </tr-ui-a-single-event-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-frame-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #asv {\n      flex: 0 0 auto;\n      align-self: stretch;\n    }\n    </style>\n    <tr-ui-a-alert-sub-view id=\"asv\">\n    </tr-ui-a-alert-sub-view>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-instant-event-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-object-instance-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n\n    #snapshots > * {\n      display: block;\n    }\n\n    :host {\n      overflow: auto;\n      display: block;\n    }\n\n    * {\n      -webkit-user-select: text;\n    }\n\n    .title {\n      border-bottom: 1px solid rgb(128, 128, 128);\n      font-size: 110%;\n      font-weight: bold;\n    }\n\n    td, th {\n      font-family: monospace;\n      vertical-align: top;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-object-snapshot-sub-view\">\n  <template>\n    <style>\n    #args {\n      white-space: pre;\n    }\n\n    :host {\n      overflow: auto;\n      display: flex;\n    }\n\n    ::content * {\n      -webkit-user-select: text;\n    }\n\n    ::content .title {\n      border-bottom: 1px solid rgb(128, 128, 128);\n      font-size: 110%;\n      font-weight: bold;\n    }\n\n    ::content td, th {\n      font-family: monospace;\n      vertical-align: top;\n    }\n    </style>\n    <slot></slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-power-sample-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-power-sample-sub-view\">\n  <template>\n    <style>\n    :host { display: block; }\n    </style>\n    <tr-ui-a-power-sample-table id=\"samplesTable\">\n    </tr-ui-a-power-sample-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-sample-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-thread-slice-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display: flex;\n      flex-direction: column;\n    }\n\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-related-events id=\"relatedEvents\">\n      </tr-ui-a-related-events>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-thread-time-slice-sub-view\">\n  <template>\n    <style>\n    table {\n      border-collapse: collapse;\n      border-width: 0;\n      margin-bottom: 25px;\n      width: 100%;\n    }\n\n    table tr > td:first-child {\n      padding-left: 2px;\n    }\n\n    table tr > td {\n      padding: 2px 4px 2px 4px;\n      vertical-align: text-top;\n      width: 150px;\n    }\n\n    table td td {\n      padding: 0 0 0 0;\n      width: auto;\n    }\n    tr {\n      vertical-align: top;\n    }\n\n    tr:nth-child(2n+0) {\n      background-color: #e2e2e2;\n    }\n    </style>\n    <table>\n      <tbody><tr>\n        <td>Running process:</td><td id=\"process-name\"></td>\n      </tr>\n      <tr>\n        <td>Running thread:</td><td id=\"thread-name\"></td>\n      </tr>\n      <tr>\n        <td>State:</td>\n        <td><b><span id=\"state\"></span></b></td>\n      </tr>\n      <tr>\n        <td>Start:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"start\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n      <tr>\n        <td>Duration:</td>\n        <td>\n          <tr-v-ui-scalar-span id=\"duration\">\n          </tr-v-ui-scalar-span>\n        </td>\n      </tr>\n\n      <tr>\n        <td>On CPU:</td><td id=\"on-cpu\"></td>\n      </tr>\n\n      <tr>\n        <td>Running instead:</td><td id=\"running-instead\"></td>\n      </tr>\n\n      <tr>\n        <td>Args:</td><td id=\"args\"></td>\n      </tr>\n    </tbody></table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-single-user-expectation-sub-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: row;\n    }\n    #events {\n      display: flex;\n      flex-direction: column;\n    }\n    </style>\n    <tr-ui-a-single-event-sub-view id=\"realView\"></tr-ui-a-single-event-sub-view>\n    <div id=\"events\">\n      <tr-ui-a-user-expectation-related-samples-table id=\"relatedSamples\"></tr-ui-a-user-expectation-related-samples-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-a-analysis-view\">\n  <template>\n    <style>\n      :host {\n        background-color: white;\n        display: flex;\n        flex-direction: column;\n        height: 275px;\n        overflow: auto;\n      }\n\n      :host(.tall-mode) {\n        height: 525px;\n      }\n    </style>\n    <slot></slot>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-dropdown\">\n  <template>\n    <style>\n    button {\n      @apply --dropdown-button;\n    }\n    button.open {\n      @apply --dropdown-button-open;\n    }\n    dialog {\n      position: absolute;\n      margin: 0;\n      padding: 1em;\n      border: 1px solid darkgrey;\n      @apply --dropdown-dialog;\n    }\n    </style>\n\n    <button id=\"button\" on-tap=\"open\">[[label]]</button>\n\n    <dialog id=\"dialog\" on-cancel=\"close\" on-tap=\"onDialogTap_\">\n      <slot></slot>\n    </dialog>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-toolbar-button\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      background-color: #f8f8f8;\n      border: 1px solid rgba(0, 0, 0, 0.5);\n      color: rgba(0,0,0,0.8);\n      justify-content: center;\n      align-self: stretch;\n      min-width: 23px;\n    }\n\n    :host(:hover) {\n      background-color: rgba(255, 255, 255, 1.0);\n      border-color: rgba(0, 0, 0, 0.8);\n      box-shadow: 0 0 .05em rgba(0, 0, 0, 0.4);\n      color: rgba(0, 0, 0, 1);\n    }\n\n    #aligner {\n      display: flex;\n      flex: 0 0 auto;\n      align-self: center;\n    }\n    </style>\n    <div id=\"aligner\">\n      <slot></slot>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-mouse-mode-icon\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=);\n      width: 27px;\n      height: 30px;\n    }\n    :host.active {\n      cursor: auto;\n    }\n    </style>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-mouse-mode-selector\">\n  <template>\n    <style>\n    :host {\n\n      -webkit-user-drag: element;\n      -webkit-user-select: none;\n\n      background: #DDD;\n      border: 1px solid #BBB;\n      border-radius: 4px;\n      box-shadow: 0 1px 2px rgba(0,0,0,0.2);\n      left: calc(100% - 120px);\n      position: absolute;\n      top: 100px;\n      user-select: none;\n      width: 29px;\n      z-index: 20;\n    }\n\n    .drag-handle {\n      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAChCAYAAACbBNzvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABV0RVh0Q3JlYXRpb24gVGltZQA3LzE2LzEzRNEKUwAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAA9aSURBVHic7V1rTFvl//+UrgUmZWMpbLa6cLErwpYxkqLGkjAG88WSbmumGUllvlmAJctMRtybvlHrLXiJUekMIZuYSCL5gS+EuLIXGEGjqCsllCEW6xQECgzWG7S05/+C/zkp9LTn0gsL6ych9JzznOdzPj19Luf5PN/nCN59913ixRdfRFdXFxLx/2GDgCAIYmpqCoWFhUjE/4cNae+99x4AIFH/Hzak7nDqDu+wOyyw2WzEdl9EMpG23ReQbKQE73Q8coJ3bfcFWK1W/Pbbb/D7/UhLi/37DwaDEIvFKC8vR0lJSdjxbRVstVoxPDyMxx9/HAUFBcjMzIRAIOCdXzAYhNvtht1ux/DwMACEid5WwSMjI3jyySdRXFwMsVgMoVAYk2CCIJCZmYns7GyMjo5iZGQkPoKXl5exd+9e3hdGIhgMIj8/H5mZmRCJRIyCyQ5NJBAEgUAgAKFQiIKCAiwsLISl4VxoHA4H+vv74Xa7uZ4aBqFQiOzsbIhEIojFYojFYohEItq/8fFxXLlyBUtLSxHThOaxZ88eCIXC2AWPj48DAH799deYBaelpUEoFLL6++qrrwAAH3zwAav0YrGYthLkJHh6ehpzc3MAgPn5eUxPT8csWiAQMJbboaEhmM1mAIDFYsHQ0BDvPDkJtlgsYdt+v59LFrxw/fr1sG2Xy8UrL06C6+vrw7bFYjEvYi747rvvwrYlEgmvvDjV0g6HI+p2ohBP3qh32OFwoLe3l1VGvb29sNvtvC8kFCMjI9DpdKzS6nQ6mEwm1nnTPg/7/X6MjY1hcnKS/VX+P/bu3YuysjLk5uYypv36669x8uRJZGRkQCQSwev1oqOjAz09PZx5CwsLcenSJRw+fBh+vx+rq6swmUx46aWXNqWjvcMDAwO8xAIbnZKBgQFeNXhzczMvscBGp6S5uRk//vhj1HS0grVaLYqLi3kRy+Vy1NXVRe0RRcKNGzeg0Wh48apUKnR1daG6ujpqOtpKy+VyQa1Wo6SkBLdv38aFCxeoY5988gn1+fLly9TnL774ApWVlXjiiSfgdDqxtrbG+aJ9Ph/0ej3OnDkDvV6PW7duUceOHDlCfR4dHaU+v/DCC7h27RrUajWcTidWV1ejctAKJggCKysryMzMhE6nw+zsLO3Joft1Oh0ePHiApaUlduqi8BYVFaGvr48Vb19fHyfeqM2Sz+dj3QTEs4lKJC+njsfWJoptkxUrtjZRbJssOnASXFtbG3U7UXjrrbeibnMBJ8FZWVkoKysDABQUFCArK4s3MRcoFArqrlZXV0OhUPDOi5Ngn8+Hw4cPQyqV4tlnn4XP5+NNTIIgmH0An8+HV155BUqlEq+++ior3kAgQLuf84jH2toajh8/jvX1da6n0sLj8SAjI4MxHUEQ+PTTT1nlSRAEHjx4QHtsW8e0RCIR7HY79uzZE/GOcEUgEEAgEMDff/8NkUgUdnxbBR85cgRmsxkCgQD5+fkRh2XYIhAI4P79+5iamoLD4cCxY8fC0myr4KeeegoCgQBWqxVzc3NIS0uLedQyGAxi165dKC8vR1FRUVialHu405ESvNPxyAlOuYfJRMo9fFjdw3iBq3vIBDbu4bYK3uoextKtJEH2yWNyD8nyEG8wuYcffvgha3cxru6h3W5Hf39/QoyzaE6fyWRCQ0MDZ+MsLu7h8vIyent7sby8zIk8VkxNTUGn08Fms8UlP04Nn9/vR39/f9w8JLZwu91obGzk5CFFAq+Wfnh4mDKok4mWlha0trbGlAfvrs3k5CQGBgaSYoiHoqenB1evXk2OIb4VDocDJpMp6eXaYrGgsbGRV7mOufPq8XgwMDCQ9HI9NzeHq1evci7XvDseUqkUWq0W6enpCAaDcDqd8Hq9fLNjDaVSiRs3bkAikfDi5XSHxWIxampqAAALCwsYGhrC7Ows5ufnEypWIpHAYDAAACYmJnD9+nXevJwEnzp1CjKZDBUVFQCAsbGxpJTfjz76CFVVVWhqagIAdHR08G6XWQuuqanB7t274fV6UVpaiuzsbAAbTzyJhMFggEKhgNfrRX19PWQyGQDAaDTyyo+V4JqaGshkMsricLlcOH78OICNCWp8p0cwwWAwoKqqahPvG2+8AWDji+7u7uacJyvBMpksrKxkZWVR0yLGxsY4E7NBVVVVGK9CoaCmRXR0dHDOk5VguorB5/OhoqICYrE4YZ2PSLxXrlyBRCLhNcE1pufh1dVVXLx4EWlpaRGnJzCBjXtId87g4GBU3ri5h1uJ5+fnY8mCtXvIhTflHoYg5R4mEyn3MAl45KyWlOCdjkdOcMo9TCZS7mHKPeSGhLmH5LBOrAGXXN1DcliHrgdFgsk95CzYbrfDbDbD7/ejrKwstpmtNO5hJJhMJrS2tsLtdqOpqQlarTZi2mjuIWvBfr8fZrN50/iz2WzG9PQ0nn/+edonEzZgij10uVwwGo2bxp+NRiOGhobw+uuv005hjtk9JENz6AbbyWCuRESp2Ww2NDc30w62WywW6HQ6zoOIrO5wbm4uzp8/j5WVFXR2dm46VldXh3379mF5eTku86dDUVxcjK6uLthstrClqrq6unDo0CHOvKwE+/1+LC4uUqG0oZiYmIhaicQCkvfu3bthxwYGBnhVmpy6NnSD7kxxQvEA3Zo+fIsQJ8F040j379/nRcwFdF4037FwToLphkUXFxd5EXMB3chkUgQ7nc6wfT6fL+Gm+H///Re2z+Vy8TLFGSut/v5+RsPsm2++AbDR84pXLFNDQwPjelxnz54FsBFK+/nnn7PKl/EOa7VaVmHvYrE4au+HK27evMkq7F0ikeDmzZus82UU7HK5qG8yGs6ePct73gUdfD4f2tvbGdO1t7dzaocZBRMEAaFQSBnhdKipqYFQKORlm0TjzcvLo4xwOhgMBuTl5XHiZVVp+f1+yGQy2iDq4uJiyGSyhFRcfr8fVVVVtEHUGo0GVVVVnHlZ19JerxdqtRpSqZTaJ5VKoVarEzrdwev1Qq/XQ6lUUvuUSiX0ej0vXk7N0srKCjQaDbXmjUajwcrKCmfSULD5Oa6srKCtrQ0SiQQSiQRtbW2MvHFzD0MrsXhUUmzdw9BKjKmSiqt7SBBE3Conru4hOa8kWqBnyj3cgl0EQcQ0cMYWW3kIgkiKe7iVV2C1Won09PSYxLCB1+tFZmYmtb22tobt4E1LBimATaQAkiKWjveR85ZSgnc6Uu5hMpFyD1PuITekYg/ZxB52dXXFTMo2n1D38NSpU7zjDEP/yHzisnJpIsBm5dJ45rntgpONuITTJirctqWlJabjdGAUvNUEp0NouxcvtLa2MgZhmUwmzqKjCrbb7aw9HC5pmWAymVivb2kymTgFe0RslrbeNTa1rtlshkgkQn5+PusL2Iqtd42NdWM0GpGVlYWTJ08ypo14h/nGI8Uax8Q3XJbteREFV1ZW8iLmex6Ja9euJfS8iD9puVyOmpoa3L59G8DmVUq3glzNlAzoimVgvrq6GmlpadDr9QA2r1K6FeRqpmRAFxveiIK9Xi8VZ/jLL78whulUVFTELJbkJeMMjUYjI29TUxNrsQBDX5qMM4w0qE2iuLgYpaWlcXMPyThDphWMNRoN6uvrOfGyskvVanXUNGq1Oq5WKclL/qwjQa/Xc+Zl1dNi8nFi9ZeSyZvqS0erjbmAbT6kT7X1lQp8QeYTyasKE8w3aJJvPh6PBwRBYGZmJi68MzMzqdjDUDx67mEsFxwrUrGHSUCqWdrpSAne6dix7uFzzz1HW0s/FO7h/v37UVBQgMceeyxm99DlcsFut2NwcBACgSDsnTHb7h4ePHgQxcXFcTPTMjIyIJFIcOfOHfz+++8Pl2DSPSTftxQv93DXrl0oKirCnTt3wtIwFhq62aputxtms5maCR8pHROEQiEkEgntew/X1tbC3mu4tLSE9vZ2nD9/njZd6Pn79u3jHoo3OTmJsbExnDlzBsDGWLXdbqcNoent7YVCocChQ4dYh+VFij3s7u5GR0cH9YWaTCbcunVr0yMkmfbChQvQarXQarVUWF4wGER6ejp7wdPT0zCbzfB4PJv2R7NT/H4/rFYrJicnUVZWxnowPtTpGxoagtFoDAsIi2anuN1ufPnll+ju7salS5dw4sQJKk+64hH2FTgcDgwPD4eJZQu/3w+bzcZ5JSSLxYL333+fNvqNDdxuN3p6ehjPDxMsl8tjjkw5ceIENfOVLVQqFd58882YeA0GA7WiWiSECfb5fPjpp58AbKyBx/bCpVIp6urqAADff/895wf6tbU1fPbZZwCAjz/+mPHCSSiVSsr3eueddxh5aWtpMrwuJyeH9cuczp07R5UZvktO/fnnnwCAY8eOoa+vj9U5nZ2d1CsH2fhaUZulwcFB1kGNi4uLjK/gYwuDwcCJ9+2332add9RmyW63w+12Q6FQIC8vD5cvX8bCwgI19VcqlcJms8HhcGBycjJuSz6aTCbMzs5Cq9Xi6NGjGB0dxcTEBJxOJyQSCZRKJUZGRjAyMoL//e9/jBFsoaAVLJfLKZvD4XBQ37ZEItlUph0OB238gVwu5ySQhEqlopo+i8VCtbsymWxTmb579y6t46BSqRg5aAXX1tbi22+/DZvY5XQ6aQMuQyGVSlFbW8trgb6WlhY0NDRgYmJi0/6ZmRnGYVylUomWlhbGeGbaMuzxeKDRaKhVDdkgOzsblZWVOHfuHO82fH19HW1tbWhqamL9ul2ZTIbXXnsNnZ2drN7yFfFFjy6XC6WlpVCpVFhaWsK///5LVfnz8/PIy8sDAOzevRu5ubnIycmBx+OJKZ6YIAj4fD7U19ejsbERf/zxB4aHhykrdHx8HE8//TQAYP/+/VAqlVAoFJx4I1ZapGiyrBw4cAD37t2DXC7HgQMHAGx0QXNycrC+vh63VR5Cecnw3J6eHqhUKpSXlwPY6OI+88wzALiHxnN6PPz555/D9h08eJATIR/Qzd9gE/FKh9SYFlvI5XKqPMUCrlFuKpUKp0+fZkwXDAZp93MSLBaLUVJSgqNHjyIjIwNerzfmOR0ul4sx9lAikeD06dN4+eWXIZVKGXnj5h5evHgRXq8XHo+Hd9MTCpFIhHv37iEnJydqp/+HH36A1+uFy+VirKTi6h7Gug7tVpDuIUEQKCwsjOge/vPPP6zyCwQCWF5exl9//YX5+Xla93DbzTSbzQar1Yr19fW4uoclJSUp9xB4BJullOCdjkdO8P8BGCQ0hnF1DxUAAAAASUVORK5CYII=) 2px 3px no-repeat;\n      background-repeat: no-repeat;\n      border-bottom: 1px solid #BCBCBC;\n      cursor: move;\n      display: block;\n      height: 13px;\n      width: 27px;\n    }\n\n    .tool-button {\n      background-position: center center;\n      background-repeat: no-repeat;\n      border-bottom: 1px solid #BCBCBC;\n      border-top: 1px solid #F1F1F1;\n      cursor: pointer;\n    }\n\n    .buttons > .tool-button:last-child {\n      border-bottom: none;\n    }\n\n    </style>\n    <div class=\"drag-handle\"></div>\n    <div class=\"buttons\">\n    </div>\n  </template>\n</dom-module><style>\n.track-button{background-color:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);color:rgba(0,0,0,0.2);font-size:10px;height:12px;text-align:center;width:12px}.track-button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.5);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.track-close-button{left:2px;position:absolute;top:2px}.track-collapse-button{left:3px;position:absolute;top:2px}\n</style><style>\n.drawing-container{display:inline;overflow:auto;overflow-x:hidden;position:relative}.drawing-container-canvas{display:block;pointer-events:none;position:absolute;top:0}\n</style><dom-module id=\"tr-ui-b-heading\">\n  <template>\n    <style>\n    :host {\n      background-color: rgb(243, 245, 247);\n      border-right: 1px solid #8e8e8e;\n      display: block;\n      height: 100%;\n      margin: 0;\n      padding: 0 5px 0 0;\n    }\n\n    heading {\n      display: block;\n      overflow-x: hidden;\n      text-align: left;\n      white-space: nowrap;\n    }\n\n    #arrow {\n      flex: 0 0 auto;\n      font-family: sans-serif;\n      margin-left: 5px;\n      margin-right: 5px;\n      width: 8px;\n    }\n\n    #link, #heading_content {\n      display: none;\n    }\n    </style>\n    <heading id=\"heading\" on-click=\"onHeadingDivClicked_\">\n  <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=\">\n\n  <!-- WebComponents V0 origin trial token for http://localhost:10000\n  Expires 28 Jan 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=\">\n\n  <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9\">\n\n  <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=\">\n      <span id=\"arrow\"></span>\n      <span id=\"heading_content\"></span>\n      <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    </heading>\n  </template>\n</dom-module><style>\n.letter-dot-track {\n  height: 18px;\n}\n</style><style>\n.chart-track {\n  height: 30px;\n  position: relative;\n}\n</style><style>\n.cpu-usage-track {\n  height: 90px;\n}\n</style><style>\n.power-series-track {\n  height: 90px;\n}\n</style><style>\n.spacing-track{height:4px}\n</style><style>\n.rect-track{height:18px}\n</style><style>\n.object-instance-track{height:18px}\n</style><style>\n.thread-track{flex-direction:column;display:flex;position:relative}\n</style><style>\n.process-track-header{display:flex;flex:0 0 auto;background-image:-webkit-gradient(linear,0 0,100% 0,from(#E5E5E5),to(#D1D1D1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;font-size:75%}.process-track-name{flex-grow:1}.process-track-name:before{content:'\\25B8';padding:0 5px}.process-track-base.expanded .process-track-name:before{content:'\\25BE'}.process-track-close{color:black;border:1px solid transparent;padding:0px 2px}.process-track-close:hover{border:1px solid grey}\n</style><style>\n.model-track {\n  flex-grow: 1;\n}\n</style><style>\n.x-axis-track {\n  height: 12px;\n}\n\n.x-axis-track.tall-mode {\n  height: 30px;\n}\n</style><dom-module id=\"tr-ui-timeline-track-view\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      display: flex;\n      position: relative;\n    }\n\n    :host ::content * {\n      -webkit-user-select: none;\n      cursor: default;\n    }\n\n    #drag_box {\n      background-color: rgba(0, 0, 255, 0.25);\n      border: 1px solid rgb(0, 0, 96);\n      font-size: 75%;\n      position: fixed;\n    }\n\n    #hint_text {\n      position: absolute;\n      bottom: 6px;\n      right: 6px;\n      font-size: 8pt;\n    }\n    </style>\n    <slot></slot>\n\n    <div id=\"drag_box\"></div>\n    <div id=\"hint_text\"></div>\n\n    <tv-ui-b-hotkey-controller id=\"hotkey_controller\">\n    </tv-ui-b-hotkey-controller>\n  </template>\n</dom-module><dom-module id=\"tr-ui-find-control\">\n  <template>\n    <style>\n      :host {\n        -webkit-user-select: none;\n        display: flex;\n        position: relative;\n      }\n      input {\n        -webkit-user-select: auto;\n        background-color: #f8f8f8;\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        box-sizing: border-box;\n        margin: 0;\n        padding: 0;\n        width: 170px;\n      }\n      input:focus {\n        background-color: white;\n      }\n      tr-ui-b-toolbar-button {\n        border-left: none;\n        margin: 0;\n      }\n      #hitCount {\n        left: 0;\n        opacity: 0.25;\n        pointer-events: none;\n        position: absolute;\n        text-align: right;\n        top: 2px;\n        width: 167px;\n        z-index: 1;\n      }\n      #spinner {\n        visibility: hidden;\n        width: 8px;\n        height: 8px;\n        left: 154px;\n        pointer-events: none;\n        position: absolute;\n        top: 4px;\n        z-index: 1;\n\n        border: 2px solid transparent;\n        border-bottom: 2px solid rgba(0, 0, 0, 0.5);\n        border-right: 2px solid rgba(0, 0, 0, 0.5);\n        border-radius: 50%;\n      }\n      @keyframes spin { 100% { transform: rotate(360deg); } }\n    </style>\n\n    <input id=\"filter\" on-blur=\"filterBlur\" on-focus=\"filterFocus\" on-input=\"filterTextChanged\" on-keydown=\"filterKeyDown\" on-mouseup=\"filterMouseUp\" type=\"text\"/>\n    <div id=\"spinner\"></div>\n    <tr-ui-b-toolbar-button on-click=\"findPrevious\">\n      ←\n    </tr-ui-b-toolbar-button>\n    <tr-ui-b-toolbar-button on-click=\"findNext\">\n      →\n    </tr-ui-b-toolbar-button>\n    <div id=\"hitCount\">0 of 0</div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-scripting-control\">\n  <template>\n    <style>\n      :host {\n        flex: 1 1 auto;\n      }\n      .root {\n        font-family: monospace;\n        cursor: text;\n\n        padding: 2px;\n        margin: 2px;\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        background: white;\n\n        height: 100px;\n        overflow-y: auto;\n\n        transition-property: opacity, height, padding, margin;\n        transition-duration: .2s;\n        transition-timing-function: ease-out;\n      }\n      .hidden {\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding-top: 0px;\n        padding-bottom: 0px;\n        height: 0px;\n        opacity: 0;\n      }\n      .focused {\n        outline: auto 5px -webkit-focus-ring-color;\n      }\n      #history {\n        -webkit-user-select: text;\n        color: #777;\n      }\n      #promptContainer {\n        display: flex;\n      }\n      #promptMark {\n        width: 1em;\n        color: #468;\n      }\n      #prompt {\n        flex: 1;\n        width: 100%;\n        border: none !important;\n        background-color: inherit !important;\n        font: inherit !important;\n        text-overflow: clip !important;\n        text-decoration: none !important;\n      }\n      #prompt:focus {\n        outline: none;\n      }\n    </style>\n\n    <div class=\"root hidden\" id=\"root\" on-focus=\"onConsoleFocus\" tabindex=\"0\">\n      <div id=\"history\"></div>\n      <div id=\"promptContainer\">\n        <span id=\"promptMark\">&gt;</span>\n        <input id=\"prompt\" on-blur=\"onConsoleBlur\" on-keydown=\"promptKeyDown\" on-keypress=\"promptKeyPress\" type=\"text\"/>\n       </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-side-panel-container\">\n  <template>\n    <style>\n    :host {\n      align-items: stretch;\n      display: flex;\n      background-color: white;\n    }\n\n    :host([expanded]) > #side_panel_drag_handle,\n    :host([expanded]) > active-panel-container {\n      flex: 1 1 auto;\n      border-left: 1px solid black;\n      display: flex;\n    }\n\n    :host(:not([expanded])) > #side_panel_drag_handle,\n    :host(:not([expanded])) > active-panel-container {\n      display: none;\n    }\n\n    active-panel-container {\n      display: flex;\n    }\n\n    tab-strip {\n      flex: 0 0 auto;\n      flex-direction: column;\n      -webkit-user-select: none;\n      background-color: rgb(236, 236, 236);\n      border-left: 1px solid black;\n      cursor: default;\n      display: flex;\n      min-width: 18px; /* workaround for flexbox and writing-mode mixing bug */\n      padding: 10px 0 10px 0;\n      font-size: 12px;\n    }\n\n    tab-strip > tab-strip-label {\n      flex-shrink: 0;\n      -webkit-writing-mode: vertical-rl;\n      white-space: nowrap;\n      display: inline;\n      margin-right: 1px;\n      min-height: 20px;\n      padding: 15px 3px 15px 1px;\n    }\n\n    tab-strip >\n        tab-strip-label:not([enabled]) {\n      color: rgb(128, 128, 128);\n    }\n\n    tab-strip > tab-strip-label[selected] {\n      background-color: white;\n      border: 1px solid rgb(163, 163, 163);\n      border-left: none;\n      padding: 14px 2px 14px 1px;\n    }\n\n    #active_panel_container {\n      overflow: auto;\n    }\n    </style>\n\n    <tr-ui-b-drag-handle id=\"side_panel_drag_handle\"></tr-ui-b-drag-handle>\n    <active-panel-container id=\"active_panel_container\">\n    </active-panel-container>\n    <tab-strip id=\"tab_strip\"></tab-strip>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view-help-overlay\">\n  <template>\n    <style>\n    :host {\n      flex: 1 1 auto;\n      flex-direction: row;\n      display: flex;\n      width: 700px;\n    }\n    .column {\n      width: 50%;\n    }\n    h2 {\n      font-size: 1.2em;\n      margin: 0;\n      margin-top: 5px;\n      text-align: center;\n    }\n    h3 {\n      margin: 0;\n      margin-left: 126px;\n      margin-top: 10px;\n    }\n    .pair {\n      flex: 1 1 auto;\n      flex-direction: row;\n      display: flex;\n    }\n    .command {\n      font-family: monospace;\n      margin-right: 5px;\n      text-align: right;\n      width: 150px;\n    }\n    .action {\n      font-size: 0.9em;\n      text-align: left;\n      width: 200px;\n    }\n    tr-ui-b-mouse-mode-icon {\n      border: 1px solid #888;\n      border-radius: 3px;\n      box-shadow: inset 0 0 2px rgba(0,0,0,0.3);\n      display: inline-block;\n      margin-right: 1px;\n      position: relative;\n      top: 4px;\n    }\n    .mouse-mode-icon.pan-mode {\n      background-position: -1px -11px;\n    }\n    .mouse-mode-icon.select-mode {\n      background-position: -1px -41px;\n    }\n    .mouse-mode-icon.zoom-mode {\n      background-position: -1px -71px;\n    }\n    .mouse-mode-icon.timing-mode {\n      background-position: -1px -101px;\n    }\n    </style>\n    <div class=\"column left\">\n      <h2>Navigation</h2>\n      <div class=\"pair\">\n        <div class=\"command\">w/s</div>\n        <div class=\"action\">Zoom in/out (+shift: faster)</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">a/d</div>\n        <div class=\"action\">Pan left/right (+shift: faster)</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">→/shift-TAB</div>\n        <div class=\"action\">Select previous event</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">←/TAB</div>\n        <div class=\"action\">Select next event</div>\n      </div>\n\n      <h2>Mouse Controls</h2>\n      <div class=\"pair\">\n        <div class=\"command\">click</div>\n        <div class=\"action\">Select event</div>\n      </div>\n      <div class=\"pair\">\n        <div class=\"command\">alt-mousewheel</div>\n        <div class=\"action\">Zoom in/out</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"SELECTION\"></tr-ui-b-mouse-mode-icon>\n        Select mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Box select</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\"><span class=\"mod\"></span>-click/drag</div>\n        <div class=\"action\">Add events to the current selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">double click</div>\n        <div class=\"action\">Select all events with same title</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"PANSCAN\"></tr-ui-b-mouse-mode-icon>\n        Pan mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Pan the view</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"ZOOM\"></tr-ui-b-mouse-mode-icon>\n        Zoom mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Zoom in/out by dragging up/down</div>\n      </div>\n\n      <h3>\n        <tr-ui-b-mouse-mode-icon mode-name=\"TIMING\"></tr-ui-b-mouse-mode-icon>\n        Timing mode\n      </h3>\n      <div class=\"pair\">\n        <div class=\"command\">drag</div>\n        <div class=\"action\">Create or move markers</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">double click</div>\n        <div class=\"action\">Set marker range to slice</div>\n      </div>\n    </div>\n\n    <div class=\"column right\">\n      <h2>General</h2>\n      <div class=\"pair\">\n        <div class=\"command\">1-4</div>\n        <div class=\"action\">Switch mouse mode</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">shift</div>\n        <div class=\"action\">Hold for temporary select</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">space</div>\n        <div class=\"action\">Hold for temporary pan</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">/</div>\n        <div class=\"action\">Search</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">enter</div>\n        <div class=\"action\">Step through search results</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">f</div>\n        <div class=\"action\">Zoom into selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">z/0</div>\n        <div class=\"action\">Reset zoom and pan</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">g/G</div>\n        <div class=\"action\">Toggle 60hz grid</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">v</div>\n        <div class=\"action\">Highlight VSync</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">h</div>\n        <div class=\"action\">Toggle low/high details</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">m</div>\n        <div class=\"action\">Mark current selection</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">p</div>\n        <div class=\"action\">Select power samples over current selection interval</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">`</div>\n        <div class=\"action\">Show or hide the scripting console</div>\n      </div>\n\n      <div class=\"pair\">\n        <div class=\"command\">?</div>\n        <div class=\"action\">Show help</div>\n      </div>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view-metadata-overlay\">\n  <template>\n    <style>\n    :host {\n      width: 700px;\n\n      overflow: auto;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-timeline-view\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      cursor: default;\n      display: flex;\n      font-family: sans-serif;\n      padding: 0;\n    }\n\n    #control {\n      background-color: #e6e6e6;\n      background-image: -webkit-gradient(linear, 0 0, 0 100%,\n          from(#E5E5E5), to(#D1D1D1));\n      flex: 0 0 auto;\n      overflow-x: auto;\n    }\n\n    #control::-webkit-scrollbar { height: 0px; }\n\n    #control > #bar {\n      font-size: 12px;\n      display: flex;\n      flex-direction: row;\n      margin: 1px;\n    }\n\n    #control > #bar > #title {\n      display: flex;\n      align-items: center;\n      padding-left: 8px;\n      padding-right: 8px;\n      flex: 1 1 auto;\n      overflow: hidden;\n      white-space: nowrap;\n    }\n\n    #control > #bar > #left_controls,\n    #control > #bar > #right_controls {\n      display: flex;\n      flex-direction: row;\n      align-items: stretch;\n      flex-shrink: 0;\n    }\n\n    #control > #bar > #left_controls > * { margin-right: 2px; }\n    #control > #bar > #right_controls > * { margin-left: 2px; }\n    #control > #collapsing_controls { display: flex; }\n\n    middle-container {\n      flex: 1 1 auto;\n      flex-direction: row;\n      border-bottom: 1px solid #8e8e8e;\n      display: flex;\n      min-height: 0;\n    }\n\n    middle-container ::content track-view-container {\n      flex: 1 1 auto;\n      display: flex;\n      min-height: 0;\n      min-width: 0;\n      overflow-x: hidden;\n    }\n\n    middle-container ::content track-view-container > * { flex: 1 1 auto; }\n    middle-container > x-timeline-view-side-panel-container { flex: 0 0 auto; }\n    tr-ui-b-drag-handle { flex: 0 0 auto; }\n    tr-ui-a-analysis-view { flex: 0 0 auto; }\n\n    tr-ui-b-dropdown {\n      --dropdown-button: {\n        -webkit-appearance: none;\n        align-items: normal;\n        background-color: rgb(248, 248, 248);\n        border: 1px solid rgba(0, 0, 0, 0.5);\n        box-sizing: content-box;\n        color: rgba(0, 0, 0, 0.8);\n        font-family: sans-serif;\n        font-size: 12px;\n        padding: 2px 5px;\n      }\n    }\n    </style>\n\n    <tv-ui-b-hotkey-controller id=\"hkc\"></tv-ui-b-hotkey-controller>\n    <div id=\"control\">\n      <div id=\"bar\">\n        <div id=\"left_controls\"></div>\n        <div id=\"title\">^_^</div>\n        <div id=\"right_controls\">\n          <tr-ui-b-dropdown id=\"flow_event_filter_dropdown\" label=\"Flow events\"></tr-ui-b-dropdown>\n          <tr-ui-b-dropdown id=\"process_filter_dropdown\" label=\"Processes\"></tr-ui-b-dropdown>\n          <tr-ui-b-toolbar-button id=\"view_metadata_button\">\n            M\n          </tr-ui-b-toolbar-button>\n          <tr-ui-b-dropdown id=\"view_options_dropdown\" label=\"View Options\"></tr-ui-b-dropdown>\n          <tr-ui-find-control id=\"view_find_control\"></tr-ui-find-control>\n          <tr-ui-b-toolbar-button id=\"view_console_button\">\n            »\n          </tr-ui-b-toolbar-button>\n          <tr-ui-b-toolbar-button id=\"view_help_button\">\n            ?\n          </tr-ui-b-toolbar-button>\n        </div>\n      </div>\n      <div id=\"collapsing_controls\"></div>\n      <tr-ui-b-info-bar-group id=\"import-warnings\">\n      </tr-ui-b-info-bar-group>\n      <tr-ui-b-info-bar-group id=\"polyfill-warning\">\n      </tr-ui-b-info-bar-group>\n    </div>\n    <middle-container>\n      <slot></slot>\n\n      <tr-ui-side-panel-container id=\"side_panel_container\">\n      </tr-ui-side-panel-container>\n    </middle-container>\n    <tr-ui-b-drag-handle id=\"drag_handle\"></tr-ui-b-drag-handle>\n    <tr-ui-a-analysis-view id=\"analysis\"></tr-ui-a-analysis-view>\n\n    <tr-v-ui-preferred-display-unit id=\"display_unit\">\n    </tr-v-ui-preferred-display-unit>\n  </template>\n</dom-module><style>\nx-profiling-view {\n  flex-direction: column;\n  display: flex;\n  padding: 0;\n}\n\nx-profiling-view .controls #save-button {\n  margin-left: 64px !important;\n}\n\nx-profiling-view > tr-ui-timeline-view {\n  flex: 1 1 auto;\n  min-height: 0;\n}\n\n.report-id-message {\n  -webkit-user-select: text;\n}\n\nx-timeline-view-buttons {\n  display: flex;\n  align-items: center;\n}\n</style><template id=\"profiling-view-template\">\n  <tr-ui-b-info-bar-group></tr-ui-b-info-bar-group>\n  <x-timeline-view-buttons>\n    <button id=\"record-button\">Record</button>\n    <button id=\"save-button\">Save</button>\n    <button id=\"load-button\">Load</button>\n  </x-timeline-view-buttons>\n  <tr-ui-timeline-view>\n    <track-view-container id=\"track_view_container\"></track-view-container>\n  </tr-ui-timeline-view>\n</template><dom-module id=\"tr-ui-e-chrome-cc-display-item-list-item\">\n  <template>\n    <style>\n      :host {\n        border-bottom: 1px solid #555;\n        display: block;\n        font-size: 12px;\n        padding: 3px 5px;\n      }\n\n      :host(:hover) {\n        background-color: #f0f0f0;\n        cursor: pointer;\n      }\n\n      .header {\n        font-weight: bold;\n        margin: 2px 0;\n      }\n\n      .header > .extra {\n        background-color: #777;\n        border-radius: 4px;\n        color: white;\n        margin: 0 6px;\n        text-decoration: none;\n        padding: 2px 4px;\n      }\n\n      .raw-details {\n        white-space: pre-wrap;\n      }\n\n      .details > dl {\n        margin: 0;\n      }\n\n      :host(:not([selected])) .details {\n        display: none;\n      }\n    </style>\n    <div class=\"header\">\n      {{name}}\n      <template if=\"{{_computeIfSKP(richDetails)}}\" is=\"dom-if\">\n        <a class=\"extra\" download=\"drawing.skp\" href$=\"{{_computeHref(richDetails)}}\" on-click=\"{{stopPropagation}}\">SKP</a>\n      </template>\n    </div>\n    <div class=\"details\">\n      <template if=\"{{rawDetails}}\" is=\"dom-if\">\n        <div class=\"raw-details\">{{rawDetails}}</div>\n      </template>\n      <template if=\"{{richDetails}}\" is=\"dom-if\">\n        <dl>\n          <template if=\"{{richDetails.visualRect}}\" is=\"dom-if\">\n            <dt>Visual rect</dt>\n            <dd>{{richDetails.visualRect.x}},{{richDetails.visualRect.y}}\n                {{richDetails.visualRect.width}}×{{richDetails.visualRect.height}}\n            </dd>\n          </template>\n        </dl>\n      </template>\n    </div>\n  </template>\n\n</dom-module><template id=\"tr-ui-e-chrome-cc-display-item-debugger-template\">\n  <left-panel>\n    <display-item-info>\n      <header>\n  <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=\">\n\n  <!-- WebComponents V0 origin trial token for http://localhost:10000\n  Expires 28 Jan 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=\">\n\n  <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9\">\n\n  <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/\n  Expires 1 Feb 2021. https://crbug.com/1021137. -->\n  <meta http-equiv=\"origin-trial\" content=\"AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=\">\n        <span class=\"title\">Display Item List</span>\n        <span class=\"size\"></span>\n        <div class=\"export\">\n          <input class=\"dlfilename\" type=\"text\" value=\"displayitemlist.json\"/>\n          <button class=\"dlexport\">Export display item list</button>\n        </div>\n        <div class=\"export\">\n          <input class=\"skpfilename\" type=\"text\" value=\"skpicture.skp\"/>\n          <button class=\"skpexport\">Export list as SkPicture</button>\n        </div>\n      </header>\n    </display-item-info>\n  </left-panel>\n  <right-panel>\n    <raster-area>\n      <canvas-scroller>\n        <canvas></canvas>\n      </canvas-scroller>\n    </raster-area>\n  </right-panel>\n</template><template id=\"quad-stack-view-template\">\n  <style>\n  #chrome-left {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAABICAYAAABC4+HLAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFyMmV/Pm9QAAIABJREFUeNrtvXmwXdd13vlbe9/7BgzEQAIcQAIEQYKjSAokLVlOW5Fk2nLKmqx0J2Wp0k652h13uiy5XYqdwU7sSnckpZ1yV3U75apU4kos27Elu9NlyRXZjiiRomSTIiWZs0hwHsABJIY33rPX6j/W2ueed3DvAyDKKoGFW0UCeO/ec/fZZ+29v7XWt74lAIuLi7tXV1f/raq+zcy2AogIZsbpvrqfMzNE5IS/1/fVn5sZKaUTrtX9/v7nT+fn9e/1e052X/3r1THWa3R/37+miKCq7c+mjW/a+F/P57vj6/45bayn+wzXs4n+794Q9nP8+PHdS0tL31LVmfpGVQU4YSInGUb/YfZvpn+zp/LQu4Y27X31d933nurkq+qaa08yotO55npG0v2O+r1/XZ9fb2FMWoD9Oe5+pju//e+fdP3u83+j2I+89NJLn11dXf1bdSCTJnnSSpz2+/VWZ/8m+w+g/zD616yT2P9733BOZ5f4dhbCevPQHet63zVtV3y9n1/v/k9nZ562SNY7Gd5o9iPPP//8qxVKrQdL+hOy3qqdNEnTjv1JA+vuRpMGvd7kn8oCqded9B2THuJ6u/Kk7+vuiNOgQH8OX+/np813/376O/CkU2EavDwVWPiGsp9nn33WJt3ItF2ne2xOe2jTHuTJMOS0He1UcG33791JmWQYkzB6dyfp7tynsktPG8/Jdv2TGcLpfH7Sc5m0EKZBsPV+tp4PMe39bwj7efrpp229G5u2O3WPplN1cE/XQZsENybtnNN2pv4x3N1Fpu2S/SO6j6fXgz6n4gRPGmMfR7/ez/cXd/1798Tsfr4PMU52Oq4Hp95I9jPor7ZJ+G7STlEnvN7gesfXpB2tH5lZzynrO07Txtb92aQTY9rv+3i1v4jqv5umOSEq0r9O3/iqEUx6MPXnqjpxrk73812oMQmP968zyUj68zPp+U1bxG80+5GnnnrKpkVxTiWUuN4q7+96/YFXp6pvANN8hD7MmRbF6O7200KR9ed9CDbpSF4v6jIJtnQjQdPGOylK9p34/HowaFL0Z73IUNex7Z5Gk3bkN6L9yBNPPGHdY3fayu3uSP0dqH62uyP0w4XrDWo957gPEfqf78e4p4U8+0Y86R6711pvAUyL3vTvd9ou238Q/Xn4dj4/Cd6d7BlMC532534S9OnO8xvVfuTxxx+39RJlk/DtpAGc6k6hquScp+7EkyIn0+LV60Ufpu2q05zN/sOYFIfvP8CT5VEmGWN/h5w0zm/38+sl7/r3drLntt58rzdXbyT7kccee8z6O2b3JnLO6zpjk47nkyVg1pu07muas9b3CaZh4f5uPMn4Sikn7Jj9RTEJMnQfVHdck4x3Wt5i0qL6dj8/6WQ5GcSYBiEn+STrhT/fqPYzmJYxrRcopax5eH18Oi38WI2ulLImYTPNMavv716z/93rRXUmOZXVgZ5kePX7+hPeN5xJTmx3MdXf9zHyM888w8LCwgn30IUQ0xzWSYvhVD4/LarTzpWBpOl+zqRQ9lqjE2DCtbH2x9MW3XA45JxzzmHnzp0njYp9r9jPoH75Gkekc8SZ2ZpjrH/Ez8wMSSmHMY4YjZp2MDnniVGT/sPvRhxmZ2fJOWHmxj0ajU7AtvV6k4727gSklMg5M4jdq6iyuro69bv799fNptYF0X3vJKjz8MMPMz+/gWuvuYatW7eScgIEwTADEwEUAZDkBgtuYONlCCJgAuZ/N5QkCcP8avFzUH8fsZgNEoJJLAakc+2TjENi90RQjGSCJm1/hwlmgmRFFIwEYoiNxyPxvYZ07gVKUzh8+DD333cfRZXLLrvsBLxfjbl76pyO/ZRS1thq325O137k4YcftvUSOf1Ufdco/uwLX+LOv7ibZ194EYBdF+zkB956C+98+99ARE64ue6XqyqDwaDdGZqm4Qtf/DK3f+UveO7QS2uu944f/IH2WpNwdp2U/oT8+W23c8dX7+K5GN9FF+zkb7zlZt71jh9cswNPw8uTsPU0h19VeeSRR7j55lvYumUzK6MCpqTs9p2AAiRLmChWBBIIiqZEMkVUMAQTJZtQSCCKkDE0/h+7twkKpCSYxrhVMTGyCYogohRLCGvHoYD0xyGKScIUpC5AVSQl/0ACaxeCkJJhakDCTJEEiKAmDMx8XSdAY6lZQjHmZoa89NLL3Pv1r3PVVVeesDH3T+FTtZ/uguhu8v3o36naj4ggjzzyiPXhwtRjOf6+tLjEP//4r3HOuRfw5psPsOeSXQA8+dQz3Pu1ezl2+BC//I9+jvn5uXWjDfW1uLjIr37y19m8/fzJ13vlBf75L/48c3Oza3aWadSP5eUVfuUT/2bd6/3yL/xvbNgwv2Y3qbtOF0J2MfN6ka7nnnuOvZfuZcfO8xitKnloFBXEBHGLc4MTQwVEDeIkyAqa/Pdh9z5vaqgkUuz8akYGVATEHOYYiCSUQtJqkCDJsJJIvXFYNRIzLGWQQqqLEiOhqKS6gnzhqJ9cJplsiiXBSnfBJF957TEoJBKYYskwFUSgWCKnBkmZp59+mpdfepmdO3eu2USn+V/r2c/JWAX9CN/J7KdNiD744IO2nqM0Cff+01/9P7js6gP8d29/C5detJNtmzYC8OrxBZ547kVu/+JfcPDBe/iXv/xPkCnkvHalm/HPTvV6v/SP25vs3mB3fKurI37pX36cfdesf73HHriH//2X/3Fr/NOSTZMyzn0n0sx47LHH+JEf+REWFhd8pzcliRtyBVbFYlcTN0bfpoWEYiaxENTtjOQwByOZ7+r+b/zacY5YICvH/iDmBurjmzQOKMlIWkPThpohkuN0iwWI+YrNGkdeQswwcbhlWEAzw8wXazZDJfsYMP84ghXzxSHip5rB/IY5/sv/+0dc96Y3rdmA2uz0YDA1EHIqDNv1KDAVvk2yn64vOujHlqdlJ+vv/+wLX2JuywVcfOkeXj2ywGtHn0C1Hov+uUsu3cNzzz/Hf7vtdm5959snRknq6wtfvOOUr/fnX7yDH37n29fccBdG5Zy57fYvs2HrqV7vdm59x9vXJeqtx6WqD+T555/nyiv3s7y8TMLhSgLMElkURx+KENi+7uzi0EgtIUCi+OmSwIpjmYTSAIN6uiSDkkAKQgp/IgON+yaGnxIBz/rjcPckj30LU5I5rCsJsiYsafgjCbXEUIwiiqq4e1J9FjVfNCioYMlPC/eJIFuisTiN0oBkhllBcmJlaYnL9+/n0KFD7Nixg5xza6hPP/00S0tLzM7Mho/lfpGicW/hyyCQAv75Nuw+UOwi/o7WmXLfClhYOMaWLVvZtWtXG7TpRibrMx/0V1j34XcdT4DBYMA933yQnRdeymhUOHZsCZFEqrurORRZHRV2XrCLr33jft596zsZjUbtiuzGqQeDAXd//T52Xrj3lK53zzce4G/d+k6WlpfXOF5jSAhf+8YD7DjF8d3zjQf50VvfRdM0LYzqv/pHcH9napqGF154gb/59rdz7PhxTPCdNSliisYuK5rjIRsWPyeJQyGhWhyNCEn9sbrPIGRJmBRfeCb+kEXQwDZG49AFIYmh4kvmhHGYISTEGl9YBimPoZypvx8VJA3R5IurMcdrSTrjLuGjGJCNpJnGlCwWp6CRMLIoMCBhFJPYIAxNxjVXX83v//7vs337dnLONE1DzpmXX36Zt73tB1g8fhwzh3OIObyrp60IWp9XNlBfRtkCPqWIM9T5x+GhDIQN8/O88srLfPWrX+WWW245IeLVPvvubt49biZRMTDj6MISGzdt9i81YTjIzM/OMjc7w3AwANwp27hpM0cWln0iOt9RowruSAlHFpZP43pLJxAB68lnZuSUOXJa41tCIuQ7jYBWf9fnP5kZo9GIlZUVLrzwQpaXVzxihGHJEE1ucdlIkgOwKMncj5Ds0SjfZd2R9re7AeWkGOFUhuOrrd+jFDPMEkJ1XGPhxdY+cRzZARPJfR9Jiqm/P2wONKHJwJRs6jt0Su5nWHJfQj2IYBQIp14xBkI47OE/BVyUFI6/KCk5zJOSGY1W2bFjB03TrOGtzQyHNKNRnTGQghWjWInxGI0phvtyNOZg0GAU86hmlMYw9c9qMYyCjgpHjx9ndmYD3//Wt3LPPfdM9FtUlYGqUko5IbzVdUi7WHw4M8vc3CxzczNsmnejq6HSphSWVlYBWF2ZY2Z2tt2tuwuw/ruUwszs6V2vuxi6TlYd48zM6V+vC8/qYqgnZT861Y+dP/bYo/zoj/4Yo3o8u1PgoVRJiPqJBRkRo6C+oxchSaGIxC5uJHEfwDdqN3xTg+wRKXd2EyRIBppjy/fLY02CWCzTxuHX91MAEfdPNJESqBopFcwyJurAqg3jWpx6DqkExVIiNwIDQa1BAWRAQiE5XExJ/URCyQgFIZlB9rk8cOAAt912G/v3728jiMOZGVQDEShoSUhuEM2U5CecFHWIGbAzlwZJghRDs0AJ2FVdu2wUMxI+XyqFpjF27drF0aNH2bRpU7txt455fcjVuCrE6Ds6DkdW2bF9C1lg49wsG+ZmOWfjHNu3bGL7lk1s2TjPpvlZNszOkMTYsW0LWvSEHbhraDu2nfr1ztu6haa3uLqn0qhpOO+0rncOTWcy+vmMesLVxVgXdimFpmligWbmZgZtLN8vFmFZbbBGHfdSwo9whxot8ZAdMydzTG9aUDGKGlZ8QaiGU6wGVtDSUChIY6j6gqOBTHPScZj5qVHUoAg0DaYlIIWhlj2qFUhBDUwLNH4tMCgKZqRSGMwO+PM//VOGgznPe2jDYGbIvfd8g5mZAapCMcEEv6cK8RpFLLFp06Z2Lqvt7dmzh4cfeRBTQ1E04GXBEG187pLSqNKYbyBm0IQda6MoDUbB1DwQUvyE1tJgKFqM1dJw6Z5Lefzxx1vb7B4EqbtSJjmmXYjVNIXrr7mCI68dZmaQmJ8dsu2cTezYtpkd2zaz9ZyNzM8OmRlkjr52mBuu2c/qaHRCZGcMSxpuuGb/qV/v2isYxfW6GdFqtE3TcMNpjq8mGbs+xyRSX520GhMvpfDC889z7XXXsdKsYMV8t7fA3ChYJmWgGKkIlh3SWeQEwJDkp0UJKKIioGNXW9R3PnKKEK+E32BYDlxvUMTQzEnHIREQSCQaMSRn9+dlvKOmMUr3aFRKcco43JIUicWU+G+3fYHf/c+/x6c+9R+ZGQ6ZmZ3jtz/1Kf7PX/vX3HPvvTHaQsYgKUnFo9C5oBirKytcdeVVvPjii+1zEBGOHTvGxk0bfXGabyxGQ1GHmaYB4YqRLDYIIXyw4vDQ/HoJQ61BTHyPKeZ3aMbxhQXm5+dPSDCaGamPt7pQZRJL8qYbrmP56KscPnwYEZgZJAbZ/5sZZMA4fPgVlo++yoEbrqXCtq4Bdv2bm9/8JpaPvXZq17v+2hNgTXcxN03DzQeuP+Xx3XLg+hNoGN1Togsxu4umnijPv/AC+6/YTxlZZIo1YJIf5yLmBpeFMhCwEg67J8QkVacyRe66eLg1aRtcUVFSgmzFsx3uWSKSkWIUibiSpcD1648DMU/ggTvP6r5PskhrmEMfRFEJKBcZfJPkjq4nQTA13vk338mHfuJDfOXOr/J7v/t7/M7v/A53fvlOfuqnfoqbbjhA8di1/2nZr5kU0YQlhz7XvukannrqqTW2snXrVpYXFrBmBH5+OBnA/CRxP0NJVjySZoo2DrLcbhu0eDTORONnxde3FUQLqoVmtMreS/fwzDPPnOBe5J/+6Z/+F/1dvZ9V7BqHiHDDtVdy51f/ktVRw9ZzNpMkMRo1HD16jAce/hbPPv0k/+N//941Wcr1CoNuvO4q7vjKetd7gr/3t98zkXJ8QpTJjBuuu5IvTxnf/Q9/i+effpIPf/DHJiqO9EPX/Yhd9UuWl5fZMD/ProsupJhDBEniOzaCWMakuNMsjp0znhzTSv0wRbL4yYCQyWgliJhTMzKZRty3cNhDJNgMY0ACz66H333ScRSHVSnCrZbdfzFpc4okFLHsvkEkBE0E6YSPfXxQrHDF/suZnZ3jttu+wHPPPcv73vdefuiHfpiVZrlNbLYJy4Hfm9uSn4jaFF47coScUuvnbd26lccOPsa27eehxXd/JO7LQAZgJRZ84+epZM8JeYwtIaKIRZpGxXNFLTvMIuye2LRxE48++ig7d+5c48/KPffcY5O4+11nvOsj1N/Pz2/ggYe/xaNPPUcTGHc4GLBvz0Vcc8U+VlZXpkrgTCrPrNf71pPPnnC9a6+8gqWlxTUOUx1T/VmfGbphw0buf+gRHn3yudavaMe3/3JWVpZPYOXW+6vX7CYcu9GUpmm47777+OAHP+h4NxYlSdr8gOGOY45TwCpIsRQwxkjqxi7iECCJY3MBj91L8viXKSlFrN7iG6SyrOp1OaVxEAlB1EPFyTzSVCkjmgSp2XGNPALBO2kMy0JW8YhW8VNpODvLp//g03zjG/diCDfeeAN/+8c/yOrqClgOLpZgA8NGKU6vOI0QhMzK8iL/9fOf58orr2QwGJBz5v777+etb/l+jh096rAzCNApbhMqRItTRVKHGBmcF6CYkSUjWlr+pNNrIodiwlNPP8WuXbvWJKoHXew+GAwYjUYnxPS78d9q3EtLi+zfdym3HLiBuVlP1qyurPLakSMsryxPrNfuhnL7hLKFhePs33cpN9/4Jubm58BgeWWFI0eOsLBwfM3i7BrytLrlhYXjXL1/H993043MzsyAwMrKKseOHWNxcWEq6a3PzO0nSFWV0WjE7OwsMzOzLC8teagTQ5w8FVljZ8B6bD/Ig2YkUaz4I1Tx06Sh+E4cxuIZcHdAU8Ak0+T2ihtWzYSj1NThScfhYM4dbne6fVcV8bCx5zpicanvvO2qix+bepSrFMgizM7O8h8/9Z/46p1f4f0f+HEA/ugP/5CVpRU+/KEPsTxa8XAxhpRUM6C+IFViDgqbNp3Tnso153HhhRfyyuGXyGmGOjtJxfliqYbFPX+hpiQKWIoNB1CFQYrTsqGIRLTKT+xk0ChA4Yr9+3ng/vvZu3dvaw+D7mmxsrLCYDBY44TWf3eNsJsPeeWVV9aVdekvvm7Uql88tLq6yksvvzy1sH+aSkh9NU3T+k0iwuLiIouLi+0J2K8zmERP7+Z2qvPdz3EcOnSI6667jtXVZTQZ0pgf81KZrNWgAuNWrlJSSolEWPL9WqWGOt2eJSlaguJhvusnEc/yV0ygRkkpiH+QRSnCScfhnCl1smM44BVIdVnBnnFOEfpMiBVUnMxYeWFZ3FP6/z77x9x5x528//0f4F3vfAdigpbCZ/7wM1yyezdveetbnL8lCbNC5cAUJ7d4SFoSS6Nlrrnmap555ll27tzJcDjk3HPP5eDBg1x2+RU0qytgQol5dNaDopactoLFCVyQLKhCSua+hQTzWD33YwKpcUaA/8ztbBRRs/bk6OPsLkTRoHj3C/Yn1Rv0/ZJJBSarq6troEr3c/XPmvnuQ7FJmfu+sMAkI+/WpPQTndMURGqCr8/6rD8/dOgQ73nPezh27HhEYzzk6Md6pX8bFbAIhonDJKhoxWLXTwFp1NdPY8EgFzT8Dv+AOwbOrjWPgKXKbfLo1CmNo15HPHFmUhgTVQh+lOOWLM641aCFWEtbj+cgyo/+yLvZtnUb3//Wt7G6OkIwfviHb2Xnzgu48c3Xs7K86idNzTGUoLlLxUdOiMwI1159NX/5l3exbdu29jkuLi4yPzvL8dUVSoNDtDjJLKBRI0YmkqXOcEQSFI2cShKkLowSSUlLkU+CZMbi4iLnbt/O8vIyMzMzbkt33nmnTaqK6lZx1aOuX7vcx+yTanq7MKpbfNR1quvu3F8wfQp5d7ev4+v6Al3o0/eX1hMHm1aLPEl8YWFhgZWVZd7+gz/IatOEPzDwya8bdXLoQwnqglR6OBFNcqhDOLbq22dEIiM513iUR8woyZ32XJ3sFDukuPtSKhnxFMbRJgZjx0ymIIM2CWkBO6xS4FNk7cVQC1jia6UNh1rOfgKotgnLFGOWDkFRTZyuUmodSaX1BNoYCF+548vMDGeYn59nZmYGVeXwK4fZef4FqFkEH2owISElnil+X77Ak/PQLBYzYNKQbNDys2rEziJQkFDO2bKVu+6+i71797q9dxNp/d247yfUnMC00Gw3kdNNltXPTitb7VZ91YRQn6zY/96+L1TDq30nvY6l+2fNldSxdU/Mfji3C+1WVlZ45JFHeOtb3sZodTWIbL4raTAKa8UFxTlOTlfxZJRU34DkcXuLRG6p4VdAszu+QZZTBSkOY6zu/MUJWaYRTTuNcfhxlaIOQ+Ik8ARhqZBNPOyMJFLkFDTGX0wpJUCYiI+ztaHY7ASsGRuemS+iZCCqEbiKMKv6ovRxKbccuIWDBw+2lBIR4YVDLzAzHJLQCF1bhzZSPKnZEjiDvqLmi5sCyfMeJpU640466uPT5Pe4PFohDTLD4dARQ3e3rYbdzRB3F0mfqj0pD9CFL12sXiM+1ZDrd9WfdSejv+C6pMWukXezmv3/uhCpe63uoqvjrYuq6WHOetp1v3N+fp65+TnMMpTShjOt3QE9ROvYPI5/83oKlRL1FIrzNSRyAJXFamBNLexzjJ78mqq+YFJxACZ4dvB0xqFBFycpUMhmlBw0k6CxWnJDdlqKnwR+gezcrmD+WkR+tN1/jUJARRM/tSg+1mSU8K80KCGkgiEeoFAfkqkyt2kD8/PzLVlVVbn22mu57YtfYLUUNm7cgBYfmgUb2BduHJfFKBRnAqRIXBZnKIuCNMWTirFo0eKUEwEdGcuLy2MbuP32260LfU6m0zRNm3Q9XdZazDIajRgOh+2C6Auk9X2e9dQpJtU+96HSYDA4IYk5TVh4Te1w+Br9U+PFF1/kyquuYu/eS50KkiQoHtLmCHJEhGosnRrPD6IgOaIl5rAJ8YSYJoWSUSnk5Bwqq5gjJUyLR4tybhm8vkA4rXFIMmiEkqSlswseyclSTxL3XzyRCGLF5QaiZLZSw2t+JuHObaJuAuo8KLF6i/V/Dgu1pk+C1hEOcRLP8D/1zFM89NBDnH/++QyHQy91Hgx44IEHKKUwPz9PaZq4txpVq5WINZIXLoJGwZa4RyZtrNzvQVGSed3LzOwsKQm7du0aEw+7jmyfaDiJRtENuU2Td+z/vMvd6i6++u8uhOpHlyoEqousr3LXvYd+sq7eU9c3miSjWRdJ9WO6i7DuYIcOHeLHP/B+ji0skSWyA6kWKKU2x13LUn3HcuydUoSjgk6NJqwUkNziYMtK1hTwSONKvggk+WJJgbFNGswyScopj6MN+yZjkEAbQwYNlMwwfKKSPN8S9u9JNcmIRj1HkByliEfGRoKm5KzxONMkxpCjTEDw7L1FWUESpWgIX2SLkoKoGMzC/iuu4Mtf/jI7duxobWJ5eZnLLrusjXh2Swb69tO3iYpQuqWw1fftRkyHw+GaIM2gL0ZQv7juntN0nLoZ9a5D3GXdttTfyHr2F0QdcH8xdk+P6kt0F0w3RNyv0OtH37rXn8TA7YsorK6unlBPXEphYWGByy+7jMWlZa+YK8kd5sDqKejfRkNmgBaPubvwgNKUQYxRIZnvxil2VC3+WREnFOILysSDrKoCNAgShU/J687l9MeRygCNYqriTA7PyquzcX0z953fiIRMtnEJbQ7elnrQQHMhaaIBp8cHLPOKkUqV0VYvQsy8ZiVqQ8Tpu2OonmBlZYX9+/dz5MgRtmzZsqaMtm8bw+FwzabaZ23X1+zs7Bok008kT5JYSl0j74ZtR6PRGojV3fFreLOLxfs+S5f+XXfe6mtMKputi6DrVPfpIX1fon5n15/o+g2T9GHrOJaXl9fkbUoprTJJHWddwE3T8MQTT/COH3oXpSmRqnP6tyexvKRUUMQG7luY1GgqiSF5UDynkSzwdZSamkQxj4dXsyWyQE7uvFrUwWrKEIVPOqgV36c/Do3TS6VGsiLWr2PlkAxYKo5zaiYcozHncGlAGEsgJUUdObhn4ZAmp2Acx2JHpBO50tZvMrE2ny1RHKXA277/bRw8eHCNXX237Sd1C4e6cKceMd2sdI3ydJ31SYXsdYDd1djdyfuwqgt3BoPBCSJjNRFZrzccDtes+vWUUvqJwvr+4XC4Jsxcd4+6+6SUGI1GHD16lAcffJD/4e/8HZaPL3nVWXCSPLTpLB1LbqopZGsQT4aliB5pyaTAtwWQQfAhtJCDqaqRlCtBabBhwnKJIiOLTDfQSOQrTn8czsNIHhUL6J0HOGwzJxUWEZJKsDIEy4ZJ9ipDrUojGg67JwuCKxwejuc1LIfJB8YXEY9WRZGXImQN1i+GpuSnWTGWV5b48Ic/zNfvvZejR4+uQTffLfuR27/0pdhCiAL6MUmM4J7Uyq5WmiU0kmqEo2oj1Z9JyLVU3GqRFfU5Cp+ge52uDx+7UJ3kVgFJWPO++pska+Vqqq+FdcbT+S4i4tJqRdXQUCSU3JeTljM1HA64+qorWS4N2VJ8jQYBLpMoQUWHAUKDix9U+ptj/cBI4nymAEvxQBwe+XXjHlJBtdIQ05hwh6JZSPo6xtFm68f3i4IFnZycQhBhnJF3H1yD4hIlsCpjxq6M6+NpqTIhAySKFKfiD5K11A93xI0qFlRTqV42HLkhEyQJDz74wASxD9pn1SGutQteqM+acRBhLBI2wZ7Hw2+t6/lDh2woQhG8drkaazUUBI00ewpqDClR1EXGqiZRq2IR0jE5HM+avZWITzsTMqInEb2oC0BDoCxJ8IoiopCCy+OsS6c1iPiR7xFFI6dQvqhiCjHlLfwQN6Lx/Xssp5iQrBpK5JJbdqrXSYiF1kegDM8ZBDkvplIl5igHLSMoH9XZFIOSa2WdeXVbZGpdWMfxuVRHH39fLFvPVai87nH4JsDaZ6WG5SBFVl6X1PmHsV5QhEQcCZcsAAAWiUlEQVTN/3S+VfIipBosE0FLzWRnf1Z4Vtp9J/WAXcpRvBVUrprIi/vGxpG2yOWf5FkJRdx+Bh6DeN32nCRKFyV2No1Yd12ViguMpZRiB/AEVor4u0VM2+LYN/Hj2LO6cXhGFVjoVDjetnqsBMUnDuVURS1IpOw7TqP12K8Lw5Nm7vA5dUDVs8MSnl8hwpKhzKfqIgWu3RScHgtjSw4l6s6SgtWKuhqHU9OkzbYWMyx1ggPm7FZJyZ1UBIsyToschguG+HcXxZN+kdmuQVdNJRJw1jlVtS2W+k6MQ8W8bDcMMhWjSfgmY8Vza6o+P8Hd0wjFWlQG1mNc8OfqGWev2WgipKzqBuf+T4kyFB9f0TzOktdEqLoWlpl4HQaN86LsVJ+VeaTvO2jPg6B6erRDIIdR13oD/02s+uQTSJvrdfwpUTBjA2sTR9IINlCkyWiuzM/sD0DMSS0mTkqzhKbiANpo2aClEXLc2LhYP7Kfgb/rSSvWtMk2y7G7hbSHVUigtcjIKMUX60iEQQOWa/DU0BIs2ahRdqLOd2aOihZee+UwRYsbQ3a2qmbIxb1hC1U3oQ1ZjRm7GnkFEXKLIYmEn4zRRYp6kXofFYIEydHLB4OK0RmHf5eChOYVY2q81edWhdrCc3B4GBC3as3Fs0rFoaDXllQYowEVfcMiiJh10Yt2TqzkTGE/GeS7OkeDFD5CSfFnOFxSAjRKwKIUxklGvC4TGRSk8aIXk8bLO1NyxuQgao6roYaRWlSEWZhiIlFaAw+tpMANKeHx8Ip5Ww5NPDj1YnpPPDmFuoqMWRz1VfAMgvgnhpVwxIrn5Er2IqEkvjMnySjFT6SUnX/0HZij44tHWVkdccnu3Zx9fe+/Btr4DuvUBW1hjiTfL1IpNAKDyNiqFefN+Kbv8Wp1LaVKoSdi89Iq7/lRlc0jKJqsfW9JNi7cJ3mMPRwlrUzTtoYldokorjZxcKniO4e6DIWvfMVLSXODufU7wcE8yVZq2FDHO3xj1SeSVr0jWUE1ofL65shILC6tsG/fZW3M/ezre/uVkBJVZo5HCacxyDruuJkTzqzSHrK4WFqFKWLkyOWk6kTWLHllZhYP3UXZekRliFj4uHorBSFMzOPdFllaB8w4F0Y8sqJVXdzEaxnCaTXxMkpxBVn/uqSh9FcimuEOutQQRUrOdkU8vBo+kNcCvP45SiI0zejswjiTFodLODaUCJ21YbzgpKSICnn9rbSliCYRprOE5OTOoLg2kJHIUQYq2aMKOVVpRtpoeKoymVLpy0FbSA66UjinxRLJ7RfLGUWcyyMOzCLC6pg4uUaTmKDZa4fropFU2miNk3BaXgdSwqlLige1amVdcvr2654j9zfOvs4gWEVxVW2rNc2iHg7P7qiJiDujppTqtBSw1CDmcXRWidqA8LOtuAYTTlOQKOUZkwIrv8ZFugbqWqzSOulxZBQNOU+HLSkcNi3GAEHzyIPDGkxRF0cKCqpiKaT7i7rwWBX6ipNINbtoQHJGJjmFbEsVFNOWkWq8zjkadRzDs68zBVa5wQ2DgpAkObOsRFSiCsdJxdgZyKHm4OFbBhG4SZW373FzHUR7lKBGWIT2UieLOtTIaUQtmvsblT7txDUlkzRXIqUnk5LnHyQWBknIqDvFklxVQ2sCLBYdCcmGWnJJTvFQoRYhDYKBKhGxyQRPKLVhz29njlxMwDVaObs2zjBYFUmdxqzF3yI1l5DaTKSiaEkgrhhHEmaGmc2bNjM7mHF4o5HOi2qvXEJu3/DC/uAQEU53FokkWxDGUtVX9TLHpDkUx+tWPBYTm8kDl6jJngjy/GotAfUQclRTen11VMah47BdUUgpBJ6DFaCUEAwzJGVmN8yxYdM8m+Y3QM7Vg4kkkTE7nJ06R5VHZHEAnV0bZxysiqysefioiDCIWmQstbyYZMllKkMndX5mA//3b/w//MnnPsett97K//qz/wuriwbZd+IaXUo11m8pdFIjc12MJJGbiOIUzFzvtR1P01bOEUS9lDOPPPQQr7z6Kju2n8cVV1zuSStxaUxyiCfXa5iHgEuQ5VxCMORhUE/IVapQUGFTSqwsL/E7v/uf+eY3v86RI0eYGQ65/PLLee973su1N1xPWVnh2OICn/+jz/P+D3wgAgedOTJXRS8mDCIjXSkjZ19nCqyKrKMUT+J5mt4CK9MamAZRKhnMzczyG//2N3jowQe56aab+PrX7yUxJCWLCJLDnMoZwlwNIqc4naQySR1Mlcp5CQl8SSn8F2lT+W5YnpRqSmHvnktJOfHoY4+ShkFYyzkSSNYqjbcyXuKEEq1Z+6iuz4RAcpw6szNz/Pmf/lf+3k/+JN969GG2bd/Gvn37uPiSSzh+fIGPf/IT/Itf+iWOHDvGRz/yc+Q8OHGOYuJUPNTbWGkTY2dfZ9DiKADFG5aIppYe4KJi2qrsIQ2iwuzcLP/+t/4D9993H9u2bUO1cPPNN6Ml5F5qWNZLgl260Wruo6qMp7arllrxgFHtHyFgxeVUUggwN5W8KL7INm3eiKJs2LQRBQ5+63FyErSx4PxUiFfpGR4CdqFwRTUFT6j4Yo6SycEg8cd//F/49Gf+kBuuvx5B2LZ1G9deey2X7N5N0YZ9+/axuLTEz/7sz7Jnz+4WgnbnyKNmrhiokS23s7DqzINViaalbZQcNGXR0AbKThxIgllhbm6WT/32b3P3XXezY8cOzIwtW7byD3/mH7K4shzdiYxG8IRfKzwfLMiiYeAaxfnFI0ollMilbY4HRaNqLXnmXDJWCkVgzyWX8sSTjzOcmWPzhs0cOX6EJ558kt2790TysJCCJtBUVTypQoBGyRp98ELmrHgTl8OHD/MHf/Bp9u3bx2g04qMf/Qh7du9meWWZLENKafh3/+Hf8/xzz3HFFVcE6zeoJDFHLvDhVBlVF1FGcoSlzxrcmeVz2ABSoYTSRAlYoCl7D4eggc8Mh3zmM3/A7bffwfnnnw/Azp07+djHPkajDefMDUNhI1rwBllNVVlcWvRdNFid3quCwP7aGo5ZioYr3gekcnA8cqWklMMHSly+7woee+IgOQ3YumULh189zLPPPsPFF+9qWxRr66iH6oc60SxriBCrO82ShJQGfPozf8TevXs5duwYv/iLv8imTedw7PhxhEQjixxfXOa+b/4V5+04b1xGGwVHqXK7teZSSnTZqnUTejaSe+YtDu82mkU6HYEyYh5gFVNSHvC5P/kTPv/5P+Oiiy5sDeOhhx7i3e9+d0igyLgntYybtm/cuJFf/79+nXM2nxPKEwnJ2tJKUu0BIerZZIWmKdx11x1ITuOWXLjgGSHfLyS2bN3Cls3nUFTZunUbrx0+zPPPvsCFF1zoY8rR6kqcqGgaogiR6fYwrUfWBnOzPPLwg2zffi6X7buM7du2szJaDSq28OLLr/LRj3yEiy++mKNHj3p8S4RmtQkWLeHZV3GxqvAXGFNbZvnZ15myOEwsIq+1j0EmpdKqSKDG7Pw8n/7MZ9izZ8+a6r9zzz2X8847b90vKKXhi1/8Eu99z4+5+28lEhgS7EpXscgpuzyKKK+8dIiLd+9hkMQ1YtMIs2FIygS1pOo6hR9hZLZu386hFw6x6+JdjJrGe3lHEZEnxx37ayTzarPHJmU2JGNpyWVZLrrgQlaa1SBOehRr1wUX8NnPfg60RPbeN4Dl0QrLxxfbXuKo530oNm4qGYIHdhZXnWGLwxVhnJEq4lDDosREjZShrK5y1VVXsbS0dNpfsLo6YveuXWhxDySJdy8ySSRV1LIr1WlpT565jZs5fuwIaWbW9Y0sk5JGHsPFYES974KKMDDH+0X9NGmaEs0nvejHlFbqsu19h4euNdiBRYW5uVnX2F1aIqsXz2jxSpOl0SrLr7ziaRJlXAVnRm6VA6tgW/FkYuuE51pOefZ1Ri0OCrkMKGmsnySB2ZNAo0JZXuEjH/kon/zkJ9bUY59//vlcffVV3tpM2sLTtrZPzNiydQs33ngTy6tLkSj0uolkng/IOHFPa2mjGlu3biJnf2+tx0gdSYFg/XPs+AJZ1DsUkVhZXuDSSy9DKYg5M9ijYt4FqaiQcnFNpWxYyd5ZVYSiDeeffz5NU7j77rv50E98iIWlBVqhm5JdtsYysxtmKKPG+wCKK3VX9JSTM38tNFqrOksKn+fs68x5ydPPPF116sPochSF+C5emyFIRGQ+8YmPt7W8zz77HH//7/8kb37zAe+akw1TbwxZBbUV7yCkVW81HOycDG0kmh5KW8stVVM1VUHxCO9aFMvgnKnXXn2Nlw4dYtu554IVFldX2Lt7D6Vx/ydngvIuURIqQYyM8leSJzsju52ScMcdt/OlL93O4uIiBw68mb/7d3+C5ZXlqGly3+uVl17iV37lV7nxxhv4n/7B/8xoZTWKZizyi937SO6UR4vjFw49z00HbjprdWdKnsOakFUxjQ6exYnehdDmHtdooIWPfexjlJDc2bXrIn7zN3+Tv/rmN5zuPYrrFHXcrRaG6Ht+MYNSEFXKyHMSpp4LMNShkXmyT83afm+VKFi1/I6+eoRnn3uGrdu3oRiLSyvsufgSmlGlo9decNCkWn9hjKJGo4QAcqNOFUmmFFPe8a53ISJs3ryZ2277Iv/q4/+Kl156iY0bNoHC5z77x/yjX/gFzr/gfP7irr9kNg+pnQHaA7VoKwEKhjVB3bez2fEz7uR48qknLJNbdQ9LtaC4qkDUckZvmSXJM9Sf/OQnWxmUgwcP8lu/9VssLi4g5CASWtCVkq+TWmgURfFAiHpVXaZg9YpHtCza9bbyjeIwaSYP+NrXv8auCy6ClFg8vsieS/d4F9bIp2RxkWLNtLXX0Zpi3M8uKPBaO8DEybi0uMSv/ZtfY252luXlZR5//HEWFhYYDAZccsklbN++nYWFBd73vvdx0803U7Q5YY6INsaVGZ+Sy8+8+PwhDhw4cNbqzqSTo2BRqFOiFtuL8FMIFFA0+jQ03p8tZX7+536e5RWP7uw4b4d/Pqjpg2gmoqqIGk2IhlkqFINGjSZOBFXvEJpKQa2BQqhIBPtcFGu8GaIUb86+aX4TBeP48aPs3rMbbUY0USCF+omgRKticzHjohpL1JeHJqUpTl+36HmtpmyY38A/+6f/hAsvuojRaMT+/fu5+aabuf6GG5ifn2eQB/zMz/wDvu+W76OUZuIcWaijazFUCqWRXlHX2dcZcXI88eTjZpJoJYTa5iJjwYFKwo7MhwscZKGMCnd/7S7edMONbJyb94hTkii2DwVwAaxBZNCWt0rkARSviZBilARZw1hTLcgfh4UsKvEkpPEXFo6zcdNm12K1VjmrrfKr2lOefmg1WECdS+b6JjZuqFgpLHhgYn7DPMeOH+eRRx7m6NGjzM7NcsnFl7D3sr0cO7rg2XCxqXOU1JuqJFwsLQ0yh154nptuOutznDmL44knDPHqORt4Ew/VHPUXIeyg4pSLUK3TkHMPcaiqTeFwJVH14d2g1ZyqHmL1Xq0aelUaurBZooVCrdgLmJNrfTmtTlGKL9boA6HiDUwkh8SPiod9XUCD1EQ31VSbqsQCiSYsYhJtvdplBGY0SRhaFc2JTqbqQoGCYqc4RzUhmtOAF188C6vOLFhFzYr7jq5BIdeooZBUQg3PXD+1lOiyGBhe3dFurGqQatvpE6JKLjXeQ6HVEKoOdpwQxXMY3qXHG40UDGk80lTEe+URkvtaqScWPSrCnyBgVJXsMUtobtqGj973O8iUNCGr0zj3KciNqr7gBhqkkLZ3hYXBW0uzP5U5MhOn47SaT2dfZ8zi0Ej21cahRLzes9niESh1yEEJdZCIHCW1tr2UiF+H6Nmg0RWxrbQTV6zTKmxEkPQ6X1xlHNUKAwnZzuR1TqUEEz3V0m9DdeCD01Atz3jVYTSalOLYvwRd3YoLOlSVESxakdnIGzhqRJWiM5IFrUXR1z1HVb3x7OsMSgIGEhmTG6L/AsGXkoznMGosn+QVdC01PYWyRwqZ+mjxS9u1xHddBMvFdYdLaRuyCDky8jXWFO1QrLiUTklRo+Rqikkt1MktZEejM1UIK9RbkFQV1r1iRC17UZVEaxcpURUYcEqhiPsz0nj0rKr6IfK650gH5ezaONNODqnE1xAIIKIsVVXDosmIR1b94edsnUIoGxtRLm1OoVXwVWtVDnNTF03VeM1eUpqsbdjYRKKvsg0zDmUkKSKlI1Zcuw+NW+VWX8ePIRdSbheLjFwNBD8NBiWa1BOOe/gG5rMShUoBM78Dc+Slv+msxZ1RPkfoQbmYQY3qgI4E1QYzx+Zq3uAU9SyzVawfjd2LetMUxXtEW/SK8B50OT4T6iMaHY5QShVIEPH6h+TizVWlRIMoWFTRIjTi/kkJyCYWbFtTirijXlXNVUucHrX/t2vrWiNOlykuueNhZ1opTO/zEi20NNqhvc450qawYX4Df3XffWsoOGdf38PRqscOPmYpFG1ShlSyc5kyUQvurXSlNBGFicBU1F20WlPquk2VLlLFvzUUsVPrRIdvUCKqU6nudY83acNg1tK9MySvIHRIpeTk6iWErGfkMaM/orcPQ1rdbvdtShrXkVeyjCilqrkXVzqR6NtXhcorn+t1z1HxnNIrr77KyspS9LUIXtkayFUZPbV1g7WdWaPXfCsKYViwVySawXTeYIzJjq3av7Tq7bWPNxEKr+OQWrIs2p6I1umjN+011oSvrSfCyOrvpBaGhSp7R4e3+px0tXbbga+9le/WHMljjx70pHg4qSqCyMhLSU1c87XqzVpoCIbUjSuXgKYQcDbI4vKZskauvmrcgmhGJSRzglflSt/RtsBcMsc0t4TDksbibN4ZKSrwxJCiHnatRVFt96DIrkdttySX1K+ZE4v0dTXmFCdUFonmMcEOiJyMiLbq79+xOZJOo4ToAe6+j7WLX6r5mDe7SUGt8QaQHgk0Fd94skb9irR+XKp6KTIOr0t0lR1InKhrxkGba5LiRNRstZeGz1OTooePpjVtjMfPKuar6kNXKqq6ovugfVZEi4BoU2AaWsUhB0vQ1uJ5EJWX3605annVIkKREp1Ds3cBjRZZIeCHiIuU1V3FzBscinn72kQJ/K2RSIwFIJVHFUVNRNutCN820SvDdbAij5E1yIdGrhQMIWTjSyvCTU7MRqjUhZ4tdi6NZF9oZsVNSLZxf47sLYNTZMyl+hrRMyKpRueMyHN8p+coKqBU1GnuGCWVttNq7R8jql6LbnGaRu9AojamCm1HcUtUZDZutBqSQeoVj2hBtbgGcJETx4GXAljxZ+bs6WjtXIxRSLYq6gvDAqKGwkpSIoEM0gQnwSo1SZgp3tO8RBsJgnemMVduG+NnpbUeJ/Fdn6OBVme0hmKJTp9tljlk4iWq8qLfRirxuTJuQqPRJqgemVrPqugYlELbqf62WHSASuIdf1o2cNDMq9+SQqbexp2anKBo0fsiGMSR3EvW0ERfDRkYTSPef1oEHakLrJVEoYE09Aw+CVd/tKCwZ3IqSBn4Qygh+fnXNEeSBt8T4zj7rMZzNPjKV75KbbLT9idogVhIeNZjrdvaqsrsmESuo9Mjq6NCMq61DvwvXdzr35GihUBtKmNRm60hNh05OMfHMZQkqdN2rYtvg9LRJiSqhm0kO10BoZUBSiYtDBtLhNSuFFVwOnlo+K9xjhLfG+M4+6zGc/T/A8/G/snZpSWJAAAAAElFTkSuQmCC);\n    display: none;\n  }\n  #chrome-mid {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAABICAYAAADRa1RpAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFycE5v9iFQAAAQtJREFUOMvtkjGSWzEMQx/0eYrM3v8k3vgqycalSwlI8Ufyl3OBFMtGIgUCIEd6PB6RBEASqvfONSrJXrDNbNkQ8ywA2y/SmayW+ZIESTsiyQsxo40xmMS2aUmYbheHpCVd0+UqJGGMsey3mUyldoUvlY3D9rIN0K7Wbe/WbZ+y1yWtaVtrp3VJzAEX6ZVjc2p7b2mtnYhNdl6m05rwtfV/ltx7XypJTpXeO7Y5juOlchzHaWxyrJmuhLapqgIJONv05+srThBgiQpBTSRwGOr3rwccgWHUhJ7P5/YNlbd/2XiL78L/WajP240AQUihfnx84EDJjCHKHjTAbkimQDgBjAJ1/3kHAgEk/gL71AHEWVXPGQAAAABJRU5ErkJggg==);\n    display: none;\n  }\n  #chrome-right {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAABICAYAAACaw4eEAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFyghKmOqnQAADE1JREFUaN6dmsuyZsdRhb/M2uf07bREYDykPeIleAMibNx92i9BgEPBgyB5xlvgtgI8VDNBI41xhGkpQowERgqw3H0ue1cuBlm1T/3Vu4XNiWj9l12XrMyVK1fWL/v6668lCXdHEt/1Z2YnnyUhCTPbX8dn45pmRkR81z7/XUr59Pz8/K8ePnz47/bVV19pnDhu0t+Pmx0Z+Pv8zWv1/eZnZ2dntw8ePPizZXw4bj5/P3vq6G/eePZiX9fd9/Xng6/reg78/dInzxPG9+/auH83GjEbPUahj6m1Hoa6v1/X9c+XPrlP7INqrfuru7+10WzUkUHvOtTojPF1mPdHSzdqPPXo5vm046bdq0fhGr+bvXZk6OgAM2OZBx7hZD7hnCzbtp149Wid0YOjx+eE6t8tMzb659Ebkg5PPY8ZvXpEQWNCzck2M4H3BWeM1Fr31/6+GziPmTefM3tcYzQoIt4a3+cso2EzhsYTzAAdw9M9M3rviPv683dl/Oi9pdZKKeVk4piVRyDu1NI3mCtARFBKeWeGbtt2yHV9HXdnGUMyGjSfZq4K42ajYbPXx836XjO+jsj3rawcFx5dPgK8bzJ6eGbzI8yO3j4yaMToiWF98fl0c4bNSXBEJ/Ozd1HSEY8BLGOIxlONeCqlnHyWtGNoxteRMX38uP44fkyyPnfpp58zqy/s7jsGj0rOEcvPVaMD/sj4I/zWWllmMB/VviOwHumv+dkRGc9EOtOUu6fHZteOGBtDN/+NeJwPNRsxl54RU3PIO4x827a3wNwfdr45kib92WhAf9+fHem1I7FZa31rr+WIr45kzrjZsixvZWHHYcfqXFHGctM9ta7ridcigmVZWNf1DvyllN2wkatmHIxCby7kYzbPOD2qFCN39efrut55rE8YM3I+8VENHPFVa2VZlkOSdXe2bTuhmHdl+W5ox8T8YCbD/l2t9YQqRiNGjx8l1JEamVXKri56doyTuzfGhWd+OyLJjsNRlo+eHaX63Iy8ldnjQn3hbmA/yagGusfG7JwrxZytcxMyjpnH77VyPEEP65iVs5tntp4ldp8zlrG+x8z2Y9L1f91Jy+zeccGZn0Zv9nFHTH500BGbM6HOojMiWEZQf1cN7Aut68qyLCdeGFN+xuRYJ7tXu5fetU9EZCiPOp8xm8bTzLqpe2jkoDnzxjCOa8/VZByzzG7t8gQ4eT+GdO4Be0kZDTgq5kea/0g0RgS+rushNkbg93o6aqeejUeNR/fcUWmaqWLbtn39MdGWGcRHUrcb17E1jhszq3tvxNCsJuaE6VGZMbeMKTrL6LGelVL2k41jx6zuRbknSS9BI7WMdDRTxLi3z+VkDl3/7vb29oS3xhoZESdZOm4whrW/7/NHT83UtNze3u6c1I06Ozs7wdjc7PaQzsV8JNSOp7k97IDvtDPDYTdsvts6Pz8/MXCsm2PD2g/Tm+Vx0bHZHTNvjMyRyh2pajk/P0cIZEAHLLgXQLg5ckDCAFsKCwtIeHHAQGAmSnEkMAyZMBkin4lc3jBEM4a7MZgo7mBGhLD/+M1/qiCqDJflIjICYbknjlEtQEl81cBDYIaUi3aDwoEQ7mABuFMjcHOMQHLMRLSDhhlFQk4+k9IhLggZBREeVLN+NNwNCAhRwjGMimGyPJlA3owyIwiKEltWjTBHNchIGpLleIS5ITNKQHVDYRiBGUQI/83X/0XUyorhm2EKAsvT1IqFgwusgglCWARV3SuGmdNchwgiRHWQagcHIqCNJ7whJ6AI20AeUJ3A0ilP/vQJ33zzDdvNDbWkO91oAwphrah7wVGG1cHMqSHkggiwDJthmAcgjIIVg5rfWc1h2AZ7AgBLpMElMpQCUyOSX/3rr/j+9/+EGoEQTgKxKnDADRROmCiWySJBeILbMCxENVhwBISCnldm4EBEeiQRk1AJs/Y5ER2q7BX03v17SQnumDeXRqXgDaSA1cSdIExQDM+UgtoArTyMIjABJUPt4S2hRHEIgbdstV5LI4OusDvDMgMNqw3sHqi0HPcMotyRNqp5ArnmRrkLuBm4kHmjDAeEDMICk2PFMwomqjI2xYSHsJIUUnxoeBO7rdQUJ2qeJk8SLfdLGtgWCouEVzFUG7NXMAXVG1YqyDdMhSDgFuTpabUEiUguUw3AiAafbhoR4EtmpJknKArgytMaBHBmIozEIQ41M1dK7ySGEvxQ8NoI1w2WFh0XlsUaFYilJ5zhpuGKwBxXeygIqxlrE6Ih1wKPgi8L799/QGcJo4M5o9oYDfcKUZJmEFdX12zrikh2xwwrQA2KOeqETRlCGaKaUFXLpjQwy5Elu4dzflb4uw8/5MXP/wEsE6ORVX8hbVRzTVcN4ic/ec4HH3zA7XaTC1sQtZUXAm98Z7I7uvjii8+5ePw4pUiwu7TXuogM3cX7j/jhX/yIJz948gf/NPjll1/yy1/+E//z299RCGrL+AxI8krQfhk5Ab+6LmrGyDA1dvfkqOvXNzy7fMonn7w8umjafabmsDuowPPnz3nz5joLiN9VCwIqJDGHweixV59/weNHF4itZSMJbGq61kg3h3N2fs7D9x7jIdTwIzw3tCxrZo560U5U8frNFdu6URWJS8RmRukto3smv07uxwJrMa9uLDJCG1ZKI87AWJBvhEOsG9WEhSVcWBtu1A615da2kboiPaRW4hSRcBGEClhg0cTDycWdJR1XgUdkrN2hRqslGapydo+fffgRL37+Ir1opzrrJHZDAiB49vySv/3gp9zcRiqLCpsrjSLrnpQ27KH8/ItXPHz4PtRbRMoTajrBw6Hk4o8vLvjhj/6SH/w/wf/xx//I629/u9fPjkxLIZfVwmLwWBhQqUqgU1NZlCrkQVRwGW9urrl89pRPXr78gw27vHzO9dVVI2cIOYVIGHkrYXVDUQaPvXrFo4tHbFV7dnkjzGT+5BjXwnK/cPHovcRLI9hME3ZeM2+HtRwQAVdXb1ivr6ldzfYC3sSnPFAUZHW+HE7WtqamZL07avrcnYgKKtR6m/VKQTR9n0JQjZj7KqD2LCLY2h4quqsKNUWA5BQPatjAY1hTpuAO2iqlGLV1EQJ8C87vnfOzjz7ixS8+5vf93y+sFeZnl5f89K//htttw1bAW5d05rAK90awjOD//BUPHtynblmInXStyUHJR3jw3sV7/PjpU548eXJArvZ/gv/Fx7/g9bfftug4NfVKa7byd8pN9ZT5I9rFSM/wSPFXrOn5Tby5vubp0x/z8uU/t1Jx5/H9v3b3/q4YGJfPLrl+c0Pde8lgEWxN0znG1jG6e+zfXnHvwQNETdmMINqlSEeZJ1Dvn93j4uJiL+6jv8TQO9L6lya9f/fta26228wodVwZboFU2gLbqbqglZLarzTbdpvBEhWxNJI1bq5uuV6/SRCHt35AyAwPo5aKZzlIHRb5SqTR1nRSnitQtC4phNlyqvlTppRUlmZEQJizhCErbYSa57J8SNkLRm3s7RV54AHymjK9cYjUyg+wqV8XRCtfdzea+IZiFIoSsFKBEm1SE26SpXZCeDh7g9P64R4SrU2ZkC1btea5TMDsqCJ5UfUuZwO1BlnZ6tkgrWWWqjOgqhJmsLWa2dowsKZK0nuKlMWokWWBoBIeiJpZF6CqhtnMdHSHW6PdZLfijjISu2HX11dEjURrTza3BtymzaLV5NZwEGQYW4ekaLdCkXSDRCkidr2n/XKGUlOKjxc6oXZN0H4ZefXrVxQ3atTsjD1lkJpIDNEwlSCRZ53rp4zViNiQtqwEStHT1YoUOaclSY1MmmjXCelNz2Q1T5L/7LPPYDEePXqYNa0ENHnd7xeKKUFiAO2HBM97DZMoS1prMmQLrqCE8uZHIgVDNAFpFEW7BnGKWQtnYJ6GOmL54+99D0JEzfT1alRzikHtda+1/4nsxk/VqQZmlXXzJMUiqFu7nrJMe8v2LhteteuAvEcrVqk1m+Owdn9h7ZYSE6WAIrkjPCVIFua8s0jhWHfhZ5YZZ6rZNxoplZp3clg2uUSKAcmwYpgqUs1iFI5Z4rr3mliq3IVqVDbwM9CGkao1rN1IR6F4xepCEFht1wAhIKjRNH0Dv6ym5lHrEQw8JSlUtapghHJ+qiK13OyZ6yyf/sunSYqyVuPavVVq3bvSgrKxcKVGU7/s1U5ovXz1W5v9ftPVet68cbSehRo65ZNfUuB/AWHLchVUWJtFAAAAAElFTkSuQmCC);\n    display: none;\n  }\n  </style>\n\n  <div id=\"header\"></div>\n  <input id=\"stacking-distance-slider\" max=\"400\" min=\"1\" step=\"1\" type=\"range\"/>\n  \n  <div id=\"canvas-scroller\">\n    <canvas id=\"canvas\"></canvas>\n  </div>\n  <img id=\"chrome-left\"/>\n  <img id=\"chrome-mid\"/>\n  <img id=\"chrome-right\"/>\n</template><template id=\"tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template\">\n  <style>\n  #input-event {\n    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAMnwAADJ8BPja39wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAyNSURBVHic7Z1PTCPXHcc/4wWWVbJN2cJSLVqiQJuGpoIGEVWReoBNIlIF5RCRSysOK9EbksUeOHLIIQcULbLEEYk7oqduD6gSRoqUEyK7dCOabOHghCiAE/JntQtesHt4fuM3z2+MZzy2x8ZfaTTjN+Px4/fh9/7Pb6xMJkND4VGk2hloyKkGkJCpASRkagAJmRpAQqYGkJCpASRkaqp2BvzKsizf3w1z38sKc+ZUaQCuAFeB57P7q4AF/Kxsj4GnLrfL+6PDYofQAskCaAJ6gJeB6+QAFOvZpwgwPwOHwCNgN5uu/+H252raJHRALMu6ggDwCtALNAf8E88QUL5AAHqSTVcNUTU4oQBiWVYzMIiA0E3lGhtp4CsEnPtACgFDGqXiYKoKxLKsCPAaMIwojlzV1tZGV1cXHR0ddHR00N7ebh93dHQAcHh4aG/JZNI+3tvb4+jo6LzsPAY+QYA5Ix9KBsoPpmpALMt6BXgTaHe7pre3l5GREUZGRujv7/fdsspkMmxtbRGPx4nH4+zs7BS6/HtgHfgvOW9xeE05bVZxIJZldQNvATf1c5FIhMHBQYaHh7l16xbd3d1lyUMikWBtbY319XU2NzdJp9Omy74B1oAEAoa8yIZTDttVDIhlWZeB94Dfm86Pjo4SjUbLBsFNiUSCWCzG6uqq2yVfAv9CNKHTlNlbKgLEsqxrwF+BX+nnhoaGuHPnDv39/WXPRyFtbW1x9+5dNjY2TKePgBXgOwQUFUyg3lJ2IJZl9QAfAK1qek9PD9PT04yMjJT1970qHo8zPz/P7u6ufuoE+CewQw6Kw2OCsGVZgViW9SdgFNGLBqC1tZWZmRnGx8eJRMI5lJZOp1lZWWFubo7j42P1VAZR4W8gWmJn5KBAAEVYWYBkm7PvIvoWtjo7O1lYWKCvry/w3yyHtre3mZqaYn9/Xz/1EPg3ot+iQslQIpTAgWRh/A0x5GFrYGCAWCxGe7trKzeUSiaTRKNRHjx4oJ/6CvgHoigLDEo5yox30WCMjY2xtLRUczAA2tvbWVpaYmxsTD91E3gbMbTTBFxCFM0WYPntMwXqIdk64x3lM9FolMnJycB+o5paXFwkFovplfcniDrlNLvJXr4vTwnMQ7KtqVE1rZ5gAExOThKNRvXkPyMGQaWXlOQpgQDJ9jM+QGlNjY2N1RUMqcnJSb34shClwnVE8aVCAY9QSi6ysj3wv6N0+gYGBlhaWqKlpaWke4dVqVSK27dv6xX9j8AyYpDyGaL4svsqxdo5CA95DwVGZ2cnsVisbmEAtLS0EIvF6OzsVJNfQIzRlVTJlwQkO1Boj021traysLBQk60pr2pvb2dhYYHWVscAxEuI1pcKJYIHKKV6yFvqh5mZmZrp9AWhvr4+ZmZm9OQ3MAMpSr6BZOcz7CH0np4exsfH/d6uZjU+Pk5Pj6PbdR34LT69xBeQbG/8TTVteno6tGNT5VQkEmF6elpPfh24TK7VFaFIKH4t+BrKTN/Q0FDoRm0rqZGREYaGhtSkXyDqVs9Fl2cg2QUJw2ranTt3vN6m7mSwwR8R68dULzm31eXHQwZRFiSMjo5WfXIpDOrv72d01DFQcQXoQ3hI0V7iB8gr9pcjEdNQwoVVNBrV69EXcanccfEST0Cyi9jsSe/BwcGKz4GHWd3d3QwOOqaAOoDnMFfuRnn1kJfV7wwPD3v8ev1Ls4mF+Ac2FVsW5C8aLxpI9ou/U9Nu3brlOcP1LoNNbuJej+R5ihcPaQJ+Iz/09vY2iiuDuru76e3tVZN+jeiTyFHggsWWFyA9KAufL3K/4zxptrkE3MClYkcDUxQQU3HVAOIug226yHlIXvNXrUe8eEiHPGhra2v0PQqov7+ftrY2NekFzEVWSXWI3Rns6uoq6ZGyepdlWXR1dalJrRTwEFVegFyVB3L5f0Pu0mzUirC1CsPoJcUCuYLyGFkDyPnSbBQhB8VUZNm99nOBZC+8qqZdhBnBUmWw0RXMQHx5iOPpprB5yMbGBp999lm1s+GQwUZXKFBUSRULxOEhYQNy//59Hj58WO1sOOQCpGAfBOoESBhVwENMm61in/cOXRt3f3+f09NTAH766SdaWlrY29sDoLm5mevXr1cze25y9QypYoH8rH44PDwsIU/B6KOPPrLzcXBwQCQS4dNPPwXgxo0bfPzxx9XMnslGJ7h7hkX2GZOaBRKLxezjxcVFLl++zMTERBVz5JTBRseGy3zXIaEDEna5eAgENIX7WP2QTCaL/NrFlcFG0kMKLvIttsh6ilg83ATh85D3338/dGNrmo3SiAXYuvLgeImX9Rj4peHHqq5r165VOwt50mx0gjkqhJT92cvgol2P7O3thSa+VBiVyWTsJnhWsv4wBrZR5QWIjfzo6IitrS0vebxQ2tra0oPdPCbfQ4ze4gXII/VDPB73k9cLIYNtDnACUJ9td8gLkF2UiqkBxF2abc6AJOboD3lQzgWi1BWnCCgA7OzskEgk/Oa5bpVIJPTwT9+RCymoe4jvIkt+8Qs1cW1tzVem61kGm8jiKk1+gIE8eV25+Ihc3CjW19c9fr3+pdkkgwCiwsiL+oDyUKhXIE8QISUA2NzcbBRbihKJBJubm2rSD4h4KLLuOMMQRUiVn9XvdrGVTqcdg3wXXbFYTI9Op3qHuqlQHCoKSNadJNH7KGNbq6urjT4Jou+hRaVLIUoTE4zA6hD5Q5+oCXfv3vVxm/qSwQY7iG6C9BAZByWv6auOevgBIr3ke5mwsbFxofsl8XhcDw34BPgaYXg1KI0p6JlDRQPRiq0zRGQ1W/Pz827RPeta6XSa+fl5Pfl/5LxC3QrCAP9P4WYQcW2/kQm7u7usrKz4vF3tamVlRY/P+CPwLTlvcANiDN/kCYjiJXLv6AXNzc2xvb3t5ZY1re3tbebm5vRk2Vc7JReExgTDqFI8JIMIMvylTDw+PmZqaupCzCgmk0mmpqb0IJkHiLpV9Ypn5MA4oJimMDwD0eqSDCLIsD3WvL+/TzQaJZVKeb11zSiVShGNRvXgmE+Az8kVU8+UrSjvgNKCz8jxmaeIIMNyEoYHDx4wOztbwq3DrdnZWT1W1imi5XmCE0YKlyLLbYLPFxDlZhLKd4ggw/aJe/fusbi46Of2odbi4iL37t1TkzLAfxAzqmc4PcPkIQVVqofIfRrREVpXL4jFYnUFRQbB1PQIMZsqYaSUraiWlaqSQvxlV3rIFd2XEIsm/gL8Qb1ubGyMDz/8sGajzKVSKWZnZ3XPANHs/xxh+BSiyDrObifkirCiiisIDogK5TIwjvY6ijoMpHwEbCJAPCMHQIWhxl4sKmxsEEEwwQmlCQHlbeBV9do6CjX+DbBNDobqHSYYRQfCLDnimKEZfJbN0CpiENLOxf7+PhMTEywvL4d6mCWdTrO8vMzExIQOI4Pod31OPowTzHWHpz80kMjWyqpB6SXSU5oRQYbfARwVSA2+ruIU0ZrSK/ATnEBky8oxqlusnQMLNa4VXRa5Sr4JEYdwDPG8tkM18kKXJ+TmgWQ/Q3qDDsNTJa4r6NjvkA/lEsJTnkdEMX3J9N0Qv/LoAFFEyRaTbFFJGPK4ZBhQntdVgDuUZkTr6w2E1zgUspeC/YjoY3yPczgkZdhk568kGFC+F7qAE4qsU2S90owIpfo6ImCkUVV6bd4TxHzGtzgnmNThEN0rHK0pSngFUtleeeQCRa1XmhHN41eBAcRDka6qwIslU4jRhq/Jn8tQh0HUitttWtb3YvRyv4MKck8MyUeCZRGmeosMGPkiIshNpR72yCCW6hwgFiTI1pE0tDS6abDQ87BIMarEW9rAGUFNNot1MHL/HCIs3k1E8K9LAWfpDDEYepDd5Lopdc5b9Qx9r14nx/EgABhQASCQ109RizAdjApH9vhvIOJNvYCIFyJjhhSjNLlm6WMEgCS5tbbqAjbTlKsKwwTCHmCtmfcY2j/khCL3auwPNXyRGqOwifzQRq2IYk7dwDl8cYwwpjoqrRrSDYYKpdCaqpLrC5Oq8S5c+xCzx+hwTJtbEBdT3aMbUBpVXWvrtsnz+op1CNArVFXlbdEu3mICowJS9+cBsR/Exx2IaQG0af1tHggI1itUVft96vahsi/kOabPxQCRe93IaW3TAVQMhFRVgdiZMIORexOgQiDkXv3DdAObPMYIgAqBkAoFECmtJ+4Gp9Ax2rEORe51w+sQ7OOK17FhAqLKBY567AbBTSY4rsfVsktogagqACfvUpd0tz/SkR4GW9QEEFVBhtAI499ec0DqXf8H8f4X10jf2YAAAAAASUVORK5CYII=);\n    display: none;\n  }\n  </style>\n  <img id=\"input-event\"/>\n</template><template id=\"tr-ui-e-chrome-cc-picture-debugger-template\">\n  <left-panel>\n    <picture-info>\n      <div>\n        <span class=\"title\">Skia Picture</span>\n        <span class=\"size\"></span>\n      </div>\n      <div>\n        <input class=\"filename\" type=\"text\" value=\"skpicture.skp\"/>\n        <button class=\"export\">Export</button>\n      </div>\n    </picture-info>\n  </left-panel>\n  <right-panel>\n    <tr-ui-e-chrome-cc-picture-ops-chart-view>\n    </tr-ui-e-chrome-cc-picture-ops-chart-view>\n    <raster-area><canvas></canvas></raster-area>\n  </right-panel>\n</template><dom-module id=\"tr-ui-e-chrome-cc-raster-task-view\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    #heading {\n      flex: 0 0 auto;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n\n    <div id=\"heading\">\n      Rasterization costs in\n      <tr-ui-a-analysis-link id=\"link\"></tr-ui-a-analysis-link>\n    </div>\n    <tr-ui-b-table id=\"content\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-chrome-codesearch\">\n  <template>\n    <style>\n      :host {\n        white-space: nowrap;\n      }\n      #codesearchLink {\n        font-size: x-small;\n        margin-left: 20px;\n        text-decoration: none;\n      }\n    </style>\n    <a id=\"codesearchLink\" on-click=\"onClick\" target=\"_blank\">🔍</a>\n  </template>\n</dom-module><style>\n.tr-ui-e-chrome-gpu-state-snapshot-view{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAEwATABMYqp3KAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB90JCQsBMCH7ZqYAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAUElEQVRYw+3WwQkAIAiF4Vc0hTO5/wiuURvYIcQOv1cRPhDlDXffSsrMsrYiQi/zU80FAACAVX3nt3lWAABA/x+ovnPyAAAA5AHyAAAA3wMOd34Xd+lsglgAAAAASUVORK5CYII=);display:flex;overflow:auto}.tr-ui-e-chrome-gpu-state-snapshot-view img{display:block;margin:16px auto 16px auto}\n</style><dom-module id=\"tr-ui-a-layout-tree-sub-view\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n    <div id=\"content\"></div>\n  </template>\n</dom-module><template id=\"tr-ui-e-img-image-snapshot-view-template\">\n  <style>\n    .image-info {\n      margin-bottom: 5px;\n    }\n\n    .image-info .title {\n      font-weight: bold;\n      margin-left: 5px;\n      margin-right: 5px;\n    }\n\n    .image-info .size {\n      margin-right: 5px;\n    }\n\n    .image-container {\n      min-height: 100px;\n      min-width: 200px;\n      overflow: auto;\n    }\n  </style>\n\n  <div class=\"image-info\">\n    <span class=\"title\">Image</span>\n    <span class=\"size\">(unknown)</span>\n    <span class=\"instructions\">\n      [ Drag with mouse to zoom in and out ]\n    </span>\n  </div>\n  <div class=\"image-container\">\n    <img alt=\"Image snapshot\"/>\n  </div>\n</template><dom-module id=\"tr-ui-e-s-frame-data-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      width: 600px;\n      flex-direction: column;\n    }\n    table-container {\n      display: flex;\n      overflow: auto;\n      font-size: 12px;\n    }\n    </style>\n    <div>\n      Organize by:\n      <select id=\"select\">\n        <option value=\"none\">None</option>\n        <option value=\"tree\">Frame Tree</option>\n      </select>\n    </div>\n    <table-container>\n      <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    </table-container>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-s-input-latency-side-panel\">\n  <template>\n    <style>\n    :host {\n      flex-direction: column;\n      display: flex;\n    }\n    toolbar {\n      flex: 0 0 auto;\n      border-bottom: 1px solid black;\n      display: flex;\n    }\n    result-area {\n      flex: 1 1 auto;\n      display: block;\n      min-height: 0;\n      overflow-y: auto;\n    }\n    </style>\n\n    <toolbar id=\"toolbar\"></toolbar>\n    <result-area id=\"result_area\"></result-area>\n  </template>\n</dom-module><style>\n.tr-ui-e-system-stats-instance-track{height:500px}.tr-ui-e-system-stats-instance-track ul{list-style:none;list-style-position:outside;margin:0;overflow:hidden}\n</style><style>\n.tr-ui-e-system-stats-snapshot-view .subhead{font-size:small;padding-bottom:10px}.tr-ui-e-system-stats-snapshot-view ul{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;font-family:monospace;list-style:none;margin:0;padding-left:15px}.tr-ui-e-system-stats-snapshot-view li{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;list-style:none;margin:0;padding-left:15px}\n</style><dom-module id=\"tr-ui-e-v8-gc-objects-stats-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n    .diff {\n      display: inline-block;\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    </style>\n    <div class=\"diff\" id=\"diffOption\">\n      Diff\n    </div>\n    <tr-ui-b-table id=\"diffTable\"></tr-ui-b-table>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view\">\n  <template>\n    <style>\n    </style>\n    <tr-ui-e-v8-gc-objects-stats-table id=\"gcObjectsStats\">\n    </tr-ui-e-v8-gc-objects-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-v8-ic-stats-table\">\n  <template>\n    <style>\n    tr-ui-b-table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n    #total {\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    #groupOption {\n      display: inline-block;\n      margin-top: 1em;\n      margin-left: 0.8em;\n    }\n    </style>\n    <div style=\"padding-right: 200px\">\n      <div style=\"float:right;  border-style: solid; border-width: 1px; padding:20px\">\n        X no feedback<br/>\n        0 uninitialized<br/>\n        . premonomorphic<br/>\n        1 monomorphic<br/>\n        ^ recompute handler<br/>\n        P polymorphic<br/>\n        N megamorphic<br/>\n        G generic\n      </div>\n    </div>\n    <div id=\"total\">\n    </div>\n    <div id=\"groupOption\">\n      Group Key\n    </div>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-e-v8-ic-stats-table id=\"table\">\n    </tr-ui-e-v8-ic-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-v8-runtime-call-stats-table\">\n  <template>\n    <style>\n    #table, #blink_rcs_table {\n      flex: 0 0 auto;\n      align-self: stretch;\n      margin-top: 1em;\n      font-size: 12px;\n    }\n\n    #v8_rcs_heading, #blink_rcs_heading {\n        padding-top: 1em;\n        font-size: 18px;\n    }\n    </style>\n    <h1 id=\"v8_rcs_heading\"></h1>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n    <h1 id=\"blink_rcs_heading\"></h1>\n    <tr-ui-b-table id=\"blink_rcs_table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-multi-v8-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-multi-thread-slice-sub-view id=\"content\"></tr-ui-a-multi-thread-slice-sub-view>\n    <tr-ui-e-v8-runtime-call-stats-table id=\"runtimeCallStats\"></tr-ui-e-v8-runtime-call-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-gc-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-single-event-sub-view id=\"content\"></tr-ui-a-single-event-sub-view>\n    <tr-ui-e-v8-gc-objects-stats-table id=\"gcObjectsStats\"></tr-ui-e-v8-gc-objects-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-ic-stats-thread-slice-sub-view\">\n  <template>\n    <tr-ui-e-v8-ic-stats-table id=\"table\">\n    </tr-ui-e-v8-ic-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-single-v8-thread-slice-sub-view\">\n  <template>\n    <tr-ui-a-single-thread-slice-sub-view id=\"content\"></tr-ui-a-single-thread-slice-sub-view>\n    <tr-ui-e-v8-runtime-call-stats-table id=\"runtimeCallStats\"></tr-ui-e-v8-runtime-call-stats-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n    }\n    #table {\n      flex: 1 1 auto;\n      font-size: 12px;\n    }\n    </style>\n    <tr-ui-b-table id=\"table\"></tr-ui-b-table>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table-groupby-picker\">\n  <template>\n    <style>\n    #container {\n      display: flex;\n    }\n    #container *:not(:first-child) {\n      padding-left: 3px;\n      border-left: 1px solid black;\n      margin-left: 3px;\n    }\n    </style>\n\n    <div id=\"container\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-b-grouping-table-groupby-picker-group\">\n  <template>\n    <style>\n    :host {\n      white-space: nowrap;\n    }\n    #left, #right {\n      user-select: none;\n      cursor: pointer;\n    }\n    </style>\n\n    <span id=\"left\" on-click=\"moveLeft_\">◀</span>\n    <input id=\"enabled\" on-change=\"onEnableChanged_\" type=\"checkbox\"/>\n    <label for=\"enabled\" id=\"label\"></label>\n    <span id=\"right\" on-click=\"moveRight_\">▶</span>\n  </template>\n</dom-module><dom-module id=\"tr-ui-sp-file-size-stats-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    toolbar {\n      align-items: center;\n      background-color: rgb(236, 236, 236);\n      border-bottom: 1px solid #8e8e8e;\n      display: flex;\n      flex-direction: row;\n      flex-direction: row;\n      flex: 0 0 auto;\n      font-size: 12px;\n      padding: 0 10px 0 10px;\n    }\n    table-container {\n      display: flex;\n      min-height: 0px;\n      overflow-y: auto;\n    }\n    </style>\n\n    <toolbar>\n      <span><b>Group by:</b></span>\n      <tr-ui-b-grouping-table-groupby-picker id=\"picker\">\n      </tr-ui-b-grouping-table-groupby-picker>\n    </toolbar>\n    <table-container>\n      <tr-ui-b-grouping-table id=\"table\"></tr-ui-b-grouping-table>\n    </table-container>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-controls-export\">\n  <template>\n    <style>\n    :host {\n      display: grid;\n      grid-gap: 1em;\n      grid-template-rows: auto auto;\n      grid-template-columns: auto auto;\n    }\n    button {\n      -webkit-appearance: none;\n      border: 0;\n      font-size: initial;\n      padding: 5px;\n    }\n    </style>\n\n    <button on-tap=\"exportRawCsv_\">raw CSV</button>\n    <button on-tap=\"exportRawJson_\">raw JSON</button>\n    <button on-tap=\"exportMergedCsv_\">merged CSV</button>\n    <button on-tap=\"exportMergedJson_\">merged JSON</button>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-controls\">\n  <template>\n    <style>\n    :host {\n      display: block;\n    }\n\n    #help, #feedback {\n      display: none;\n      margin-left: 20px;\n    }\n\n    #search_container {\n      display: inline-flex;\n      margin-right: 20px;\n      padding-bottom: 1px;\n      border-bottom: 1px solid darkgrey;\n    }\n\n    #search {\n      border: 0;\n      max-width: 20em;\n      outline: none;\n    }\n\n    #clear_search {\n      visibility: hidden;\n      height: 1em;\n      stroke: black;\n      stroke-width: 16;\n    }\n\n    #controls {\n      white-space: nowrap;\n    }\n\n    #show_overview, #hide_overview {\n      height: 1em;\n      margin-right: 20px;\n    }\n\n    #show_overview {\n      stroke: blue;\n      stroke-width: 16;\n    }\n\n    #show_overview:hover {\n      background: blue;\n      stroke: white;\n    }\n\n    #hide_overview {\n      display: none;\n      stroke-width: 18;\n      stroke: black;\n    }\n\n    #hide_overview:hover {\n      background: black;\n      stroke: white;\n    }\n\n    #reference_display_label {\n      display: none;\n      margin-right: 20px;\n    }\n\n    #alpha, #alpha_slider_container {\n      display: none;\n    }\n\n    #alpha {\n      margin-right: 20px;\n    }\n\n    #alpha_slider_container {\n      background: white;\n      border: 1px solid black;\n      flex-direction: column;\n      padding: 0.5em;\n      position: absolute;\n      z-index: 10; /* scalar-span uses z-index :-( */\n    }\n\n    #alpha_slider {\n      -webkit-appearance: slider-vertical;\n      align-self: center;\n      height: 200px;\n      width: 30px;\n    }\n\n    #statistic {\n      display: none;\n      margin-right: 20px;\n    }\n\n    #show_visualization {\n      margin-right: 20px;\n    }\n\n    #export {\n      margin-right: 20px;\n    }\n    </style>\n\n    <div id=\"controls\">\n      <span id=\"search_container\">\n        <input id=\"search\" placeholder=\"Find Histogram name\" value=\"{{searchQuery::keyup}}\"/>\n        <svg id=\"clear_search\" on-tap=\"clearSearch_\" viewBox=\"0 0 128 128\">\n          <g>\n          <title>Clear search</title>\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n          </g>\n        </svg>\n      </span>\n\n      <svg id=\"show_overview\" on-tap=\"toggleOverviewLineCharts_\" viewBox=\"0 0 128 128\">\n        <g>\n        <title>Show overview charts</title>\n        <line x1=\"19\" x2=\"49\" y1=\"109\" y2=\"49\"></line>\n        <line x1=\"49\" x2=\"79\" y1=\"49\" y2=\"79\"></line>\n        <line x1=\"79\" x2=\"109\" y1=\"79\" y2=\"19\"></line>\n        </g>\n      </svg>\n      <svg id=\"hide_overview\" on-tap=\"toggleOverviewLineCharts_\" viewBox=\"0 0 128 128\">\n        <g>\n        <title>Hide overview charts</title>\n        <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n        <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </g>\n      </svg>\n\n      <select id=\"reference_display_label\" value=\"{{referenceDisplayLabel::change}}\">\n        <option value=\"\">Select a reference column</option>\n      </select>\n\n      <button id=\"alpha\" on-tap=\"openAlphaSlider_\">α=[[alphaString]]</button>\n      <div id=\"alpha_slider_container\">\n        <input id=\"alpha_slider\" max=\"18\" min=\"0\" on-blur=\"closeAlphaSlider_\" on-input=\"updateAlpha_\" type=\"range\" value=\"{{alphaIndex::change}}\"/>\n      </div>\n\n      <select id=\"statistic\" value=\"{{displayStatisticName::change}}\">\n      </select>\n\n      <button id=\"show_visualization\" on-tap=\"loadVisualization_\">Visualize</button>\n\n      <tr-ui-b-dropdown label=\"Export\">\n        <tr-v-ui-histogram-set-controls-export>\n        </tr-v-ui-histogram-set-controls-export>\n      </tr-ui-b-dropdown>\n\n      <input checked=\"{{showAll::change}}\" id=\"show_all\" title=\"When unchecked, less important histograms are hidden.\" type=\"checkbox\"/>\n      <label for=\"show_all\" title=\"When unchecked, less important histograms are hidden.\">Show all</label>\n\n      <a id=\"help\">Help</a>\n      <a id=\"feedback\">Feedback</a>\n    </div>\n\n    <tr-ui-b-grouping-table-groupby-picker id=\"picker\">\n    </tr-ui-b-grouping-table-groupby-picker>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table-cell\">\n  <template>\n    <style>\n    #histogram_container {\n      display: flex;\n      flex-direction: row;\n    }\n\n    #missing, #empty, #unmergeable, #scalar {\n      flex-grow: 1;\n    }\n\n    #open_histogram, #close_histogram, #open_histogram svg, #close_histogram svg {\n      height: 1em;\n    }\n\n    #open_histogram svg {\n      margin-left: 4px;\n      stroke-width: 0;\n      stroke: blue;\n      fill: blue;\n    }\n    :host(:hover) #open_histogram svg {\n      background: blue;\n      stroke: white;\n      fill: white;\n    }\n\n    #scalar {\n      flex-grow: 1;\n      white-space: nowrap;\n    }\n\n    #histogram {\n      flex-grow: 1;\n    }\n\n    #close_histogram svg line {\n      stroke-width: 18;\n      stroke: black;\n    }\n    #close_histogram:hover svg {\n      background: black;\n    }\n    #close_histogram:hover svg line {\n      stroke: white;\n    }\n\n    #overview_container {\n      display: none;\n    }\n    </style>\n\n    <div id=\"histogram_container\">\n      <span id=\"missing\">(missing)</span>\n      <span id=\"empty\">(empty)</span>\n      <span id=\"unmergeable\">(unmergeable)</span>\n\n      <tr-v-ui-scalar-span id=\"scalar\" on-click=\"openHistogram_\"></tr-v-ui-scalar-span>\n\n      <span id=\"open_histogram\" on-click=\"openHistogram_\">\n        <svg viewBox=\"0 0 128 128\">\n          <rect height=\"16\" width=\"32\" x=\"16\" y=\"24\"></rect>\n          <rect height=\"16\" width=\"96\" x=\"16\" y=\"56\"></rect>\n          <rect height=\"16\" width=\"64\" x=\"16\" y=\"88\"></rect>\n        </svg>\n      </span>\n\n      <span id=\"histogram\"></span>\n\n      <span id=\"close_histogram\" on-click=\"closeHistogram_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n    </div>\n\n    <div id=\"overview_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table-name-cell\">\n  <template>\n    <style>\n    #name_container {\n      display: flex;\n    }\n\n    #name {\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n    }\n\n    #show_overview, #hide_overview, #show_overview svg, #hide_overview svg {\n      height: 1em;\n      margin-left: 5px;\n    }\n\n    #show_overview svg {\n      stroke: blue;\n      stroke-width: 16;\n    }\n\n    #show_overview:hover svg {\n      background: blue;\n      stroke: white;\n    }\n\n    #hide_overview {\n      display: none;\n    }\n\n    #hide_overview svg {\n      stroke-width: 18;\n      stroke: black;\n    }\n\n    #hide_overview:hover svg {\n      background: black;\n      stroke: white;\n    }\n\n    #open_histograms, #close_histograms, #open_histograms svg, #close_histograms svg {\n      height: 1em;\n    }\n\n    #close_histograms {\n      display: none;\n    }\n\n    #open_histograms svg {\n      margin-left: 4px;\n      stroke-width: 0;\n      stroke: blue;\n      fill: blue;\n    }\n    #open_histograms:hover svg {\n      background: blue;\n      stroke: white;\n      fill: white;\n    }\n\n    #close_histograms line {\n      stroke-width: 18;\n      stroke: black;\n    }\n    #close_histograms:hover {\n      background: black;\n    }\n    #close_histograms:hover line {\n      stroke: white;\n    }\n\n    #overview_container {\n      display: none;\n    }\n    </style>\n\n    <div id=\"name_container\">\n      <span id=\"name\"></span>\n\n      <span id=\"show_overview\" on-click=\"showOverview_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"19\" x2=\"49\" y1=\"109\" y2=\"49\"></line>\n          <line x1=\"49\" x2=\"79\" y1=\"49\" y2=\"79\"></line>\n          <line x1=\"79\" x2=\"109\" y1=\"79\" y2=\"19\"></line>\n        </svg>\n      </span>\n\n      <span id=\"hide_overview\" on-click=\"hideOverview_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n\n      <span id=\"open_histograms\" on-click=\"openHistograms_\">\n        <svg viewBox=\"0 0 128 128\">\n          <rect height=\"16\" width=\"32\" x=\"16\" y=\"24\"></rect>\n          <rect height=\"16\" width=\"96\" x=\"16\" y=\"56\"></rect>\n          <rect height=\"16\" width=\"64\" x=\"16\" y=\"88\"></rect>\n        </svg>\n      </span>\n\n      <span id=\"close_histograms\" on-click=\"closeHistograms_\">\n        <svg viewBox=\"0 0 128 128\">\n          <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n          <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n        </svg>\n      </span>\n    </div>\n\n    <div id=\"overview_container\">\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-table\">\n  <template>\n    <style>\n    :host {\n      min-height: 0px;\n      overflow: auto;\n    }\n    #table {\n      margin-top: 5px;\n    }\n    </style>\n\n    <tr-ui-b-table id=\"table\">\n  </tr-ui-b-table></template>\n</dom-module><dom-module id=\"tr-v-ui-metrics-visualization\">\n  <template>\n    <style>\n      button {\n        padding: 5px;\n        font-size: 14px;\n      }\n\n      .text_input {\n        width: 50px;\n        padding: 4px;\n        font-size: 14px;\n      }\n\n      .error {\n        color: red;\n        display: none;\n      }\n\n      .container {\n        position: relative;\n        display: inline-block;\n        margin-left: 15px;\n      }\n\n      #title {\n        font-size: 20px;\n        font-weight: bold;\n        padding-bottom: 5px;\n      }\n\n      #selectors {\n        display: block;\n        padding-bottom: 10px;\n      }\n\n      #search_page {\n        width: 200px;\n        margin-left: 30px;\n      }\n\n      #close {\n        display: none;\n        vertical-align: top;\n      }\n\n      #close svg{\n        height: 1em;\n      }\n\n      #close svg line {\n        stroke-width: 18;\n        stroke: black;\n      }\n\n      #close:hover svg {\n        background: black;\n      }\n\n      #close:hover svg line {\n        stroke: white;\n      }\n    </style>\n      <span class=\"container\" id=\"aggregateContainer\">\n      </span>\n      <span class=\"container\" id=\"pageByPageContainer\">\n        <span id=\"selectors\">\n          <span id=\"percentile_label\">Percentile Range:</span>\n          <input class=\"text_input\" id=\"start\" placeholder=\"0\"/>\n          <input class=\"text_input\" id=\"end\" placeholder=\"100\"/>\n          <button id=\"filter\" on-tap=\"filterByPercentile_\">Filter</button>\n          <input class=\"text_input\" id=\"search_page\" placeholder=\"Page Name\"/>\n          <button id=\"search\" on-tap=\"searchByPage_\">Search</button>\n          <span class=\"error\" id=\"search_error\">Sorry, could not find that page!</span>\n        </span>\n      </span>\n      <div display=\"block\" id=\"submetricsContainer\">\n        <span id=\"close\">\n          <svg viewBox=\"0 0 128 128\">\n            <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n            <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n          </svg>\n        </span>\n      </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-raster-visualization\">\n  <template>\n    <style>\n      button {\n        padding: 5px;\n        font-size: 14px;\n      }\n      .error {\n        color: red;\n        display: none;\n      }\n\n      .text_input {\n        width: 200px;\n        padding: 4px;\n        font-size: 14px;\n      }\n\n      .selector_container{\n        padding: 5px;\n      }\n\n      #search {\n        display: inline-block;\n        padding-bottom: 10px;\n      }\n\n      #search_page {\n        width: 200px;\n      }\n\n      #pageSelector {\n        display: inline-block;\n        font-size: 12pt;\n      }\n\n      #close {\n        display: none;\n        vertical-align: top;\n      }\n\n      #close svg{\n        height: 1em;\n      }\n\n      #close svg line {\n        stroke-width: 18;\n        stroke: black;\n      }\n\n      #close:hover svg {\n        background: black;\n      }\n\n      #close:hover svg line {\n        stroke: white;\n      }\n    </style>\n    <span id=\"aggregateContainer\">\n      <div>\n        <div class=\"selector_container\">\n          <span id=\"select_page_label\">Individual Page Results:</span>\n          <select id=\"pageSelector\">\n            <option id=\"select_page\" value=\"\">Select a page</option>\n          </select>\n        </div>\n        <div class=\"selector_container\">\n          <div id=\"search_page_label\">Search for a page:</div>\n          <input class=\"text_input\" id=\"search_page\" placeholder=\"Page Name\"/>\n          <button id=\"search_button\">Search</button>\n          <div class=\"error\" id=\"search_error\">Sorry, could not find that page!</div>\n        </div>\n      </div>\n    </span>\n    <span id=\"pageContainer\">\n      <span id=\"close\">\n          <svg viewBox=\"0 0 128 128\">\n            <line x1=\"28\" x2=\"100\" y1=\"28\" y2=\"100\"></line>\n            <line x1=\"28\" x2=\"100\" y1=\"100\" y2=\"28\"></line>\n          </svg>\n        </span>\n      </span>\n  </template>\n</dom-module><meta charset=\"utf-8\"/><dom-module id=\"tr-v-ui-visualizations-data-container\">\n  <template>\n    <style>\n      .error {\n        color: red;\n        display: none;\n      }\n\n      .sample{\n        display: none;\n      }\n\n      .subtitle{\n        font-size: 20px;\n        font-weight: bold;\n        padding-bottom: 5px;\n      }\n\n      .description{\n        font-size: 15px;\n        padding-bottom: 5px;\n      }\n\n      #title {\n        font-size: 30px;\n        font-weight: bold;\n        padding-bottom: 5px;\n      }\n    </style>\n    <div id=\"title\">Visualizations</div>\n    <div class=\"error\" id=\"data_error\">Invalid data provided.</div>\n    <div id=\"pipeline_per_frame_container\">\n      <div class=\"subtitle\">Graphics Pipeline and Raster Tasks</div>\n      <div class=\"description\">\n        When raster tasks are completed in comparison to the rest of the graphics pipeline.<br/>\n        Only pages where raster tasks are completed after beginFrame is issued are included.\n      </div>\n      <tr-v-ui-raster-visualization id=\"rasterVisualization\">\n      </tr-v-ui-raster-visualization>\n    </div>\n    <div id=\"metrics_container\">\n      <div class=\"subtitle\">Metrics</div>\n      <div class=\"description\">Total amount of time taken for the indicated metrics.</div>\n      <tr-v-ui-metrics-visualization class=\"sample\" id=\"metricsVisualization\">\n      </tr-v-ui-metrics-visualization>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-v-ui-histogram-set-view\">\n  <template>\n    <style>\n    :host {\n      font-family: sans-serif;\n    }\n\n    #zero {\n      color: red;\n      /* histogram-set-table is used by both metrics-side-panel and results.html.\n       * This font-size rule has no effect in results.html, but improves\n       * legibility in the metrics-side-panel, which sets font-size in order to\n       * make this table denser.\n       */\n      font-size: initial;\n    }\n\n    #container {\n      display: none;\n    }\n\n    #visualizations{\n      display: none;\n    }\n    </style>\n\n    <div id=\"zero\">zero Histograms</div>\n\n    <div id=\"container\">\n      <tr-v-ui-histogram-set-controls id=\"controls\">\n      </tr-v-ui-histogram-set-controls>\n\n      <tr-v-ui-visualizations-data-container id=\"visualizations\">\n      </tr-v-ui-visualizations-data-container>\n\n      <tr-v-ui-histogram-set-table id=\"table\"></tr-v-ui-histogram-set-table>\n    </div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-sp-metrics-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: flex;\n      flex-direction: column;\n    }\n    div#error {\n      color: red;\n    }\n    #results {\n      font-size: 12px;\n    }\n    </style>\n\n    <top-left-controls id=\"top_left_controls\"></top-left-controls>\n\n    <tr-v-ui-histogram-set-view id=\"results\"></tr-v-ui-histogram-set-view>\n\n    <div id=\"error\"></div>\n  </template>\n</dom-module><dom-module id=\"tr-ui-e-s-alerts-side-panel\">\n  <template>\n    <style>\n    :host {\n      display: block;\n      width: 250px;\n    }\n    #content {\n      flex-direction: column;\n      display: flex;\n    }\n    tr-ui-b-table {\n      font-size: 12px;\n    }\n    </style>\n\n    <div id=\"content\">\n      <toolbar id=\"toolbar\"></toolbar>\n      <result-area id=\"result_area\"></result-area>\n    </div>\n  </template>\n</dom-module><style>\nhtml,body{height:100%}body{flex-direction:column;display:flex;margin:0;padding:0}body>x-profiling-view{flex:1 1 auto;min-height:0}body>x-profiling-view>x-timeline-view:focus{outline:0}\n</style><script src=\"catapult_trace_viewer.js\"></script>\n</head>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/assets/catapult_trace_viewer.js",
    "content": "\n// Copyright 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\n/* WARNING: This file is auto generated.\n *\n * Do not edit directly.\n */\n\n(function(){window.WebComponents=window.WebComponents||{flags:{}};var file=\"webcomponents.js\";var script=document.querySelector('script[src*=\"'+file+'\"]');var flags={};if(!flags.noOpts){location.search.slice(1).split(\"&\").forEach(function(option){var parts=option.split(\"=\");var match;if(parts[0]&&(match=parts[0].match(/wc-(.+)/))){flags[match[1]]=parts[1]||true;}});if(script){for(var i=0,a;a=script.attributes[i];i++){if(a.name!==\"src\"){flags[a.name]=a.value||true;}}}\nif(flags.log&&flags.log.split){var parts=flags.log.split(\",\");flags.log={};parts.forEach(function(f){flags.log[f]=true;});}else{flags.log={};}}\nflags.shadow=flags.shadow||flags.shadowdom||flags.polyfill;if(flags.shadow===\"native\"){flags.shadow=false;}else{flags.shadow=flags.shadow||!HTMLElement.prototype.createShadowRoot;}\nif(flags.register){window.CustomElements=window.CustomElements||{flags:{}};window.CustomElements.flags.register=flags.register;}\nWebComponents.flags=flags;})();if(WebComponents.flags.shadow){if(typeof WeakMap===\"undefined\"){(function(){var defineProperty=Object.defineProperty;var counter=Date.now()%1e9;var WeakMap=function(){this.name=\"__st\"+(Math.random()*1e9>>>0)+(counter++ +\"__\");};WeakMap.prototype={set:function(key,value){var entry=key[this.name];if(entry&&entry[0]===key)entry[1]=value;else defineProperty(key,this.name,{value:[key,value],writable:true});return this;},get:function(key){var entry;return(entry=key[this.name])&&entry[0]===key?entry[1]:undefined;},\"delete\":function(key){var entry=key[this.name];if(!entry||entry[0]!==key)return false;entry[0]=entry[1]=undefined;return true;},has:function(key){var entry=key[this.name];if(!entry)return false;return entry[0]===key;}};window.WeakMap=WeakMap;})();}\nwindow.ShadowDOMPolyfill={};(function(scope){\"use strict\";var constructorTable=new WeakMap();var nativePrototypeTable=new WeakMap();var wrappers=Object.create(null);function detectEval(){if(typeof chrome!==\"undefined\"&&chrome.app&&chrome.app.runtime){return false;}\nif(navigator.getDeviceStorage){return false;}\ntry{var f=new Function(\"return true;\");return f();}catch(ex){return false;}}\nvar hasEval=detectEval();function assert(b){if(!b)throw new Error(\"Assertion failed\");}\nvar defineProperty=Object.defineProperty;var getOwnPropertyNames=Object.getOwnPropertyNames;var getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor;function mixin(to,from){var names=getOwnPropertyNames(from);for(var i=0;i<names.length;i++){var name=names[i];defineProperty(to,name,getOwnPropertyDescriptor(from,name));}\nreturn to;}\nfunction mixinStatics(to,from){var names=getOwnPropertyNames(from);for(var i=0;i<names.length;i++){var name=names[i];switch(name){case\"arguments\":case\"caller\":case\"length\":case\"name\":case\"prototype\":case\"toString\":continue;}\ndefineProperty(to,name,getOwnPropertyDescriptor(from,name));}\nreturn to;}\nfunction oneOf(object,propertyNames){for(var i=0;i<propertyNames.length;i++){if(propertyNames[i]in object)return propertyNames[i];}}\nvar nonEnumerableDataDescriptor={value:undefined,configurable:true,enumerable:false,writable:true};function defineNonEnumerableDataProperty(object,name,value){nonEnumerableDataDescriptor.value=value;defineProperty(object,name,nonEnumerableDataDescriptor);}\ngetOwnPropertyNames(window);function getWrapperConstructor(node,opt_instance){var nativePrototype=node.__proto__||Object.getPrototypeOf(node);if(isFirefox){try{getOwnPropertyNames(nativePrototype);}catch(error){nativePrototype=nativePrototype.__proto__;}}\nvar wrapperConstructor=constructorTable.get(nativePrototype);if(wrapperConstructor)return wrapperConstructor;var parentWrapperConstructor=getWrapperConstructor(nativePrototype);var GeneratedWrapper=createWrapperConstructor(parentWrapperConstructor);registerInternal(nativePrototype,GeneratedWrapper,opt_instance);return GeneratedWrapper;}\nfunction addForwardingProperties(nativePrototype,wrapperPrototype){installProperty(nativePrototype,wrapperPrototype,true);}\nfunction registerInstanceProperties(wrapperPrototype,instanceObject){installProperty(instanceObject,wrapperPrototype,false);}\nvar isFirefox=/Firefox/.test(navigator.userAgent);var dummyDescriptor={get:function(){},set:function(v){},configurable:true,enumerable:true};function isEventHandlerName(name){return/^on[a-z]+$/.test(name);}\nfunction isIdentifierName(name){return/^[a-zA-Z_$][a-zA-Z_$0-9]*$/.test(name);}\nfunction getGetter(name){return hasEval&&isIdentifierName(name)?new Function(\"return this.__impl4cf1e782hg__.\"+name):function(){return this.__impl4cf1e782hg__[name];};}\nfunction getSetter(name){return hasEval&&isIdentifierName(name)?new Function(\"v\",\"this.__impl4cf1e782hg__.\"+name+\" = v\"):function(v){this.__impl4cf1e782hg__[name]=v;};}\nfunction getMethod(name){return hasEval&&isIdentifierName(name)?new Function(\"return this.__impl4cf1e782hg__.\"+name+\".apply(this.__impl4cf1e782hg__, arguments)\"):function(){return this.__impl4cf1e782hg__[name].apply(this.__impl4cf1e782hg__,arguments);};}\nfunction getDescriptor(source,name){try{if(source===window&&name===\"showModalDialog\"){return dummyDescriptor;}\nreturn Object.getOwnPropertyDescriptor(source,name);}catch(ex){return dummyDescriptor;}}\nvar isBrokenSafari=function(){var descr=Object.getOwnPropertyDescriptor(Node.prototype,\"nodeType\");return descr&&!descr.get&&!descr.set;}();function installProperty(source,target,allowMethod,opt_blacklist){var names=getOwnPropertyNames(source);for(var i=0;i<names.length;i++){var name=names[i];if(name===\"polymerBlackList_\")continue;if(name in target)continue;if(source.polymerBlackList_&&source.polymerBlackList_[name])continue;if(isFirefox){source.__lookupGetter__(name);}\nvar descriptor=getDescriptor(source,name);var getter,setter;if(typeof descriptor.value===\"function\"){if(allowMethod){target[name]=getMethod(name);}\ncontinue;}\nvar isEvent=isEventHandlerName(name);if(isEvent)getter=scope.getEventHandlerGetter(name);else getter=getGetter(name);if(descriptor.writable||descriptor.set||isBrokenSafari){if(isEvent)setter=scope.getEventHandlerSetter(name);else setter=getSetter(name);}\nvar configurable=isBrokenSafari||descriptor.configurable;defineProperty(target,name,{get:getter,set:setter,configurable:configurable,enumerable:descriptor.enumerable});}}\nfunction register(nativeConstructor,wrapperConstructor,opt_instance){if(nativeConstructor==null){return;}\nvar nativePrototype=nativeConstructor.prototype;registerInternal(nativePrototype,wrapperConstructor,opt_instance);mixinStatics(wrapperConstructor,nativeConstructor);}\nfunction registerInternal(nativePrototype,wrapperConstructor,opt_instance){var wrapperPrototype=wrapperConstructor.prototype;assert(constructorTable.get(nativePrototype)===undefined);constructorTable.set(nativePrototype,wrapperConstructor);nativePrototypeTable.set(wrapperPrototype,nativePrototype);addForwardingProperties(nativePrototype,wrapperPrototype);if(opt_instance)registerInstanceProperties(wrapperPrototype,opt_instance);defineNonEnumerableDataProperty(wrapperPrototype,\"constructor\",wrapperConstructor);wrapperConstructor.prototype=wrapperPrototype;}\nfunction isWrapperFor(wrapperConstructor,nativeConstructor){return constructorTable.get(nativeConstructor.prototype)===wrapperConstructor;}\nfunction registerObject(object){var nativePrototype=Object.getPrototypeOf(object);var superWrapperConstructor=getWrapperConstructor(nativePrototype);var GeneratedWrapper=createWrapperConstructor(superWrapperConstructor);registerInternal(nativePrototype,GeneratedWrapper,object);return GeneratedWrapper;}\nfunction createWrapperConstructor(superWrapperConstructor){function GeneratedWrapper(node){superWrapperConstructor.call(this,node);}\nvar p=Object.create(superWrapperConstructor.prototype);p.constructor=GeneratedWrapper;GeneratedWrapper.prototype=p;return GeneratedWrapper;}\nfunction isWrapper(object){return object&&object.__impl4cf1e782hg__;}\nfunction isNative(object){return!isWrapper(object);}\nfunction wrap(impl){if(impl===null)return null;assert(isNative(impl));var wrapper=impl.__wrapper8e3dd93a60__;if(wrapper!=null){return wrapper;}\nreturn impl.__wrapper8e3dd93a60__=new(getWrapperConstructor(impl,impl))(impl);}\nfunction unwrap(wrapper){if(wrapper===null)return null;assert(isWrapper(wrapper));return wrapper.__impl4cf1e782hg__;}\nfunction unsafeUnwrap(wrapper){return wrapper.__impl4cf1e782hg__;}\nfunction setWrapper(impl,wrapper){wrapper.__impl4cf1e782hg__=impl;impl.__wrapper8e3dd93a60__=wrapper;}\nfunction unwrapIfNeeded(object){return object&&isWrapper(object)?unwrap(object):object;}\nfunction wrapIfNeeded(object){return object&&!isWrapper(object)?wrap(object):object;}\nfunction rewrap(node,wrapper){if(wrapper===null)return;assert(isNative(node));assert(wrapper===undefined||isWrapper(wrapper));node.__wrapper8e3dd93a60__=wrapper;}\nvar getterDescriptor={get:undefined,configurable:true,enumerable:true};function defineGetter(constructor,name,getter){getterDescriptor.get=getter;defineProperty(constructor.prototype,name,getterDescriptor);}\nfunction defineWrapGetter(constructor,name){defineGetter(constructor,name,function(){return wrap(this.__impl4cf1e782hg__[name]);});}\nfunction forwardMethodsToWrapper(constructors,names){constructors.forEach(function(constructor){names.forEach(function(name){constructor.prototype[name]=function(){var w=wrapIfNeeded(this);return w[name].apply(w,arguments);};});});}\nscope.addForwardingProperties=addForwardingProperties;scope.assert=assert;scope.constructorTable=constructorTable;scope.defineGetter=defineGetter;scope.defineWrapGetter=defineWrapGetter;scope.forwardMethodsToWrapper=forwardMethodsToWrapper;scope.isIdentifierName=isIdentifierName;scope.isWrapper=isWrapper;scope.isWrapperFor=isWrapperFor;scope.mixin=mixin;scope.nativePrototypeTable=nativePrototypeTable;scope.oneOf=oneOf;scope.registerObject=registerObject;scope.registerWrapper=register;scope.rewrap=rewrap;scope.setWrapper=setWrapper;scope.unsafeUnwrap=unsafeUnwrap;scope.unwrap=unwrap;scope.unwrapIfNeeded=unwrapIfNeeded;scope.wrap=wrap;scope.wrapIfNeeded=wrapIfNeeded;scope.wrappers=wrappers;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";function newSplice(index,removed,addedCount){return{index:index,removed:removed,addedCount:addedCount};}\nvar EDIT_LEAVE=0;var EDIT_UPDATE=1;var EDIT_ADD=2;var EDIT_DELETE=3;function ArraySplice(){}\nArraySplice.prototype={calcEditDistances:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var rowCount=oldEnd-oldStart+1;var columnCount=currentEnd-currentStart+1;var distances=new Array(rowCount);for(var i=0;i<rowCount;i++){distances[i]=new Array(columnCount);distances[i][0]=i;}\nfor(var j=0;j<columnCount;j++)distances[0][j]=j;for(var i=1;i<rowCount;i++){for(var j=1;j<columnCount;j++){if(this.equals(current[currentStart+j-1],old[oldStart+i-1]))distances[i][j]=distances[i-1][j-1];else{var north=distances[i-1][j]+1;var west=distances[i][j-1]+1;distances[i][j]=north<west?north:west;}}}\nreturn distances;},spliceOperationsFromEditDistances:function(distances){var i=distances.length-1;var j=distances[0].length-1;var current=distances[i][j];var edits=[];while(i>0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;}\nif(j==0){edits.push(EDIT_DELETE);i--;continue;}\nvar northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west<north)min=west<northWest?west:northWest;else min=north<northWest?north:northWest;if(min==northWest){if(northWest==current){edits.push(EDIT_LEAVE);}else{edits.push(EDIT_UPDATE);current=northWest;}\ni--;j--;}else if(min==west){edits.push(EDIT_DELETE);i--;current=west;}else{edits.push(EDIT_ADD);j--;current=north;}}\nedits.reverse();return edits;},calcSplices:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var prefixCount=0;var suffixCount=0;var minLength=Math.min(currentEnd-currentStart,oldEnd-oldStart);if(currentStart==0&&oldStart==0)prefixCount=this.sharedPrefix(current,old,minLength);if(currentEnd==current.length&&oldEnd==old.length)suffixCount=this.sharedSuffix(current,old,minLength-prefixCount);currentStart+=prefixCount;oldStart+=prefixCount;currentEnd-=suffixCount;oldEnd-=suffixCount;if(currentEnd-currentStart==0&&oldEnd-oldStart==0)return[];if(currentStart==currentEnd){var splice=newSplice(currentStart,[],0);while(oldStart<oldEnd)splice.removed.push(old[oldStart++]);return[splice];}else if(oldStart==oldEnd)return[newSplice(currentStart,[],currentEnd-currentStart)];var ops=this.spliceOperationsFromEditDistances(this.calcEditDistances(current,currentStart,currentEnd,old,oldStart,oldEnd));var splice=undefined;var splices=[];var index=currentStart;var oldIndex=oldStart;for(var i=0;i<ops.length;i++){switch(ops[i]){case EDIT_LEAVE:if(splice){splices.push(splice);splice=undefined;}\nindex++;oldIndex++;break;case EDIT_UPDATE:if(!splice)splice=newSplice(index,[],0);splice.addedCount++;index++;splice.removed.push(old[oldIndex]);oldIndex++;break;case EDIT_ADD:if(!splice)splice=newSplice(index,[],0);splice.addedCount++;index++;break;case EDIT_DELETE:if(!splice)splice=newSplice(index,[],0);splice.removed.push(old[oldIndex]);oldIndex++;break;}}\nif(splice){splices.push(splice);}\nreturn splices;},sharedPrefix:function(current,old,searchLength){for(var i=0;i<searchLength;i++)if(!this.equals(current[i],old[i]))return i;return searchLength;},sharedSuffix:function(current,old,searchLength){var index1=current.length;var index2=old.length;var count=0;while(count<searchLength&&this.equals(current[--index1],old[--index2]))count++;return count;},calculateSplices:function(current,previous){return this.calcSplices(current,0,current.length,previous,0,previous.length);},equals:function(currentValue,previousValue){return currentValue===previousValue;}};scope.ArraySplice=ArraySplice;})(window.ShadowDOMPolyfill);(function(context){\"use strict\";var OriginalMutationObserver=window.MutationObserver;var callbacks=[];var pending=false;var timerFunc;function handle(){pending=false;var copies=callbacks.slice(0);callbacks=[];for(var i=0;i<copies.length;i++){(0,copies[i])();}}\nif(OriginalMutationObserver){var counter=1;var observer=new OriginalMutationObserver(handle);var textNode=document.createTextNode(counter);observer.observe(textNode,{characterData:true});timerFunc=function(){counter=(counter+1)%2;textNode.data=counter;};}else{timerFunc=window.setTimeout;}\nfunction setEndOfMicrotask(func){callbacks.push(func);if(pending)return;pending=true;timerFunc(handle,0);}\ncontext.setEndOfMicrotask=setEndOfMicrotask;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var setEndOfMicrotask=scope.setEndOfMicrotask;var wrapIfNeeded=scope.wrapIfNeeded;var wrappers=scope.wrappers;var registrationsTable=new WeakMap();var globalMutationObservers=[];var isScheduled=false;function scheduleCallback(observer){if(observer.scheduled_)return;observer.scheduled_=true;globalMutationObservers.push(observer);if(isScheduled)return;setEndOfMicrotask(notifyObservers);isScheduled=true;}\nfunction notifyObservers(){isScheduled=false;while(globalMutationObservers.length){var notifyList=globalMutationObservers;globalMutationObservers=[];notifyList.sort(function(x,y){return x.uid_-y.uid_;});for(var i=0;i<notifyList.length;i++){var mo=notifyList[i];mo.scheduled_=false;var queue=mo.takeRecords();removeTransientObserversFor(mo);if(queue.length){mo.callback_(queue,mo);}}}}\nfunction MutationRecord(type,target){this.type=type;this.target=target;this.addedNodes=new wrappers.NodeList();this.removedNodes=new wrappers.NodeList();this.previousSibling=null;this.nextSibling=null;this.attributeName=null;this.attributeNamespace=null;this.oldValue=null;}\nfunction registerTransientObservers(ancestor,node){for(;ancestor;ancestor=ancestor.parentNode){var registrations=registrationsTable.get(ancestor);if(!registrations)continue;for(var i=0;i<registrations.length;i++){var registration=registrations[i];if(registration.options.subtree)registration.addTransientObserver(node);}}}\nfunction removeTransientObserversFor(observer){for(var i=0;i<observer.nodes_.length;i++){var node=observer.nodes_[i];var registrations=registrationsTable.get(node);if(!registrations)return;for(var j=0;j<registrations.length;j++){var registration=registrations[j];if(registration.observer===observer)registration.removeTransientObservers();}}}\nfunction enqueueMutation(target,type,data){var interestedObservers=Object.create(null);var associatedStrings=Object.create(null);for(var node=target;node;node=node.parentNode){var registrations=registrationsTable.get(node);if(!registrations)continue;for(var j=0;j<registrations.length;j++){var registration=registrations[j];var options=registration.options;if(node!==target&&!options.subtree)continue;if(type===\"attributes\"&&!options.attributes)continue;if(type===\"attributes\"&&options.attributeFilter&&(data.namespace!==null||options.attributeFilter.indexOf(data.name)===-1)){continue;}\nif(type===\"characterData\"&&!options.characterData)continue;if(type===\"childList\"&&!options.childList)continue;var observer=registration.observer;interestedObservers[observer.uid_]=observer;if(type===\"attributes\"&&options.attributeOldValue||type===\"characterData\"&&options.characterDataOldValue){associatedStrings[observer.uid_]=data.oldValue;}}}\nfor(var uid in interestedObservers){var observer=interestedObservers[uid];var record=new MutationRecord(type,target);if(\"name\"in data&&\"namespace\"in data){record.attributeName=data.name;record.attributeNamespace=data.namespace;}\nif(data.addedNodes)record.addedNodes=data.addedNodes;if(data.removedNodes)record.removedNodes=data.removedNodes;if(data.previousSibling)record.previousSibling=data.previousSibling;if(data.nextSibling)record.nextSibling=data.nextSibling;if(associatedStrings[uid]!==undefined)record.oldValue=associatedStrings[uid];scheduleCallback(observer);observer.records_.push(record);}}\nvar slice=Array.prototype.slice;function MutationObserverOptions(options){this.childList=!!options.childList;this.subtree=!!options.subtree;if(!(\"attributes\"in options)&&(\"attributeOldValue\"in options||\"attributeFilter\"in options)){this.attributes=true;}else{this.attributes=!!options.attributes;}\nif(\"characterDataOldValue\"in options&&!(\"characterData\"in options))this.characterData=true;else this.characterData=!!options.characterData;if(!this.attributes&&(options.attributeOldValue||\"attributeFilter\"in options)||!this.characterData&&options.characterDataOldValue){throw new TypeError();}\nthis.characterData=!!options.characterData;this.attributeOldValue=!!options.attributeOldValue;this.characterDataOldValue=!!options.characterDataOldValue;if(\"attributeFilter\"in options){if(options.attributeFilter==null||typeof options.attributeFilter!==\"object\"){throw new TypeError();}\nthis.attributeFilter=slice.call(options.attributeFilter);}else{this.attributeFilter=null;}}\nvar uidCounter=0;function MutationObserver(callback){this.callback_=callback;this.nodes_=[];this.records_=[];this.uid_=++uidCounter;this.scheduled_=false;}\nMutationObserver.prototype={constructor:MutationObserver,observe:function(target,options){target=wrapIfNeeded(target);var newOptions=new MutationObserverOptions(options);var registration;var registrations=registrationsTable.get(target);if(!registrations)registrationsTable.set(target,registrations=[]);for(var i=0;i<registrations.length;i++){if(registrations[i].observer===this){registration=registrations[i];registration.removeTransientObservers();registration.options=newOptions;}}\nif(!registration){registration=new Registration(this,target,newOptions);registrations.push(registration);this.nodes_.push(target);}},disconnect:function(){this.nodes_.forEach(function(node){var registrations=registrationsTable.get(node);for(var i=0;i<registrations.length;i++){var registration=registrations[i];if(registration.observer===this){registrations.splice(i,1);break;}}},this);this.records_=[];},takeRecords:function(){var copyOfRecords=this.records_;this.records_=[];return copyOfRecords;}};function Registration(observer,target,options){this.observer=observer;this.target=target;this.options=options;this.transientObservedNodes=[];}\nRegistration.prototype={addTransientObserver:function(node){if(node===this.target)return;scheduleCallback(this.observer);this.transientObservedNodes.push(node);var registrations=registrationsTable.get(node);if(!registrations)registrationsTable.set(node,registrations=[]);registrations.push(this);},removeTransientObservers:function(){var transientObservedNodes=this.transientObservedNodes;this.transientObservedNodes=[];for(var i=0;i<transientObservedNodes.length;i++){var node=transientObservedNodes[i];var registrations=registrationsTable.get(node);for(var j=0;j<registrations.length;j++){if(registrations[j]===this){registrations.splice(j,1);break;}}}}};scope.enqueueMutation=enqueueMutation;scope.registerTransientObservers=registerTransientObservers;scope.wrappers.MutationObserver=MutationObserver;scope.wrappers.MutationRecord=MutationRecord;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";function TreeScope(root,parent){this.root=root;this.parent=parent;}\nTreeScope.prototype={get renderer(){if(this.root instanceof scope.wrappers.ShadowRoot){return scope.getRendererForHost(this.root.host);}\nreturn null;},contains:function(treeScope){for(;treeScope;treeScope=treeScope.parent){if(treeScope===this)return true;}\nreturn false;}};function setTreeScope(node,treeScope){if(node.treeScope_!==treeScope){node.treeScope_=treeScope;for(var sr=node.shadowRoot;sr;sr=sr.olderShadowRoot){sr.treeScope_.parent=treeScope;}\nfor(var child=node.firstChild;child;child=child.nextSibling){setTreeScope(child,treeScope);}}}\nfunction getTreeScope(node){if(node instanceof scope.wrappers.Window){debugger;}\nif(node.treeScope_)return node.treeScope_;var parent=node.parentNode;var treeScope;if(parent)treeScope=getTreeScope(parent);else treeScope=new TreeScope(node,null);return node.treeScope_=treeScope;}\nscope.TreeScope=TreeScope;scope.getTreeScope=getTreeScope;scope.setTreeScope=setTreeScope;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var forwardMethodsToWrapper=scope.forwardMethodsToWrapper;var getTreeScope=scope.getTreeScope;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrappers=scope.wrappers;var wrappedFuns=new WeakMap();var listenersTable=new WeakMap();var handledEventsTable=new WeakMap();var currentlyDispatchingEvents=new WeakMap();var targetTable=new WeakMap();var currentTargetTable=new WeakMap();var relatedTargetTable=new WeakMap();var eventPhaseTable=new WeakMap();var stopPropagationTable=new WeakMap();var stopImmediatePropagationTable=new WeakMap();var eventHandlersTable=new WeakMap();var eventPathTable=new WeakMap();function isShadowRoot(node){return node instanceof wrappers.ShadowRoot;}\nfunction rootOfNode(node){return getTreeScope(node).root;}\nfunction getEventPath(node,event){var path=[];var current=node;path.push(current);while(current){var destinationInsertionPoints=getDestinationInsertionPoints(current);if(destinationInsertionPoints&&destinationInsertionPoints.length>0){for(var i=0;i<destinationInsertionPoints.length;i++){var insertionPoint=destinationInsertionPoints[i];if(isShadowInsertionPoint(insertionPoint)){var shadowRoot=rootOfNode(insertionPoint);var olderShadowRoot=shadowRoot.olderShadowRoot;if(olderShadowRoot)path.push(olderShadowRoot);}\npath.push(insertionPoint);}\ncurrent=destinationInsertionPoints[destinationInsertionPoints.length-1];}else{if(isShadowRoot(current)){if(inSameTree(node,current)&&eventMustBeStopped(event)){break;}\ncurrent=current.host;path.push(current);}else{current=current.parentNode;if(current)path.push(current);}}}\nreturn path;}\nfunction eventMustBeStopped(event){if(!event)return false;switch(event.type){case\"abort\":case\"error\":case\"select\":case\"change\":case\"load\":case\"reset\":case\"resize\":case\"scroll\":case\"selectstart\":return true;}\nreturn false;}\nfunction isShadowInsertionPoint(node){return node instanceof HTMLShadowElement;}\nfunction getDestinationInsertionPoints(node){return scope.getDestinationInsertionPoints(node);}\nfunction eventRetargetting(path,currentTarget){if(path.length===0)return currentTarget;if(currentTarget instanceof wrappers.Window)currentTarget=currentTarget.document;var currentTargetTree=getTreeScope(currentTarget);var originalTarget=path[0];var originalTargetTree=getTreeScope(originalTarget);var relativeTargetTree=lowestCommonInclusiveAncestor(currentTargetTree,originalTargetTree);for(var i=0;i<path.length;i++){var node=path[i];if(getTreeScope(node)===relativeTargetTree)return node;}\nreturn path[path.length-1];}\nfunction getTreeScopeAncestors(treeScope){var ancestors=[];for(;treeScope;treeScope=treeScope.parent){ancestors.push(treeScope);}\nreturn ancestors;}\nfunction lowestCommonInclusiveAncestor(tsA,tsB){var ancestorsA=getTreeScopeAncestors(tsA);var ancestorsB=getTreeScopeAncestors(tsB);var result=null;while(ancestorsA.length>0&&ancestorsB.length>0){var a=ancestorsA.pop();var b=ancestorsB.pop();if(a===b)result=a;else break;}\nreturn result;}\nfunction getTreeScopeRoot(ts){if(!ts.parent)return ts;return getTreeScopeRoot(ts.parent);}\nfunction relatedTargetResolution(event,currentTarget,relatedTarget){if(currentTarget instanceof wrappers.Window)currentTarget=currentTarget.document;var currentTargetTree=getTreeScope(currentTarget);var relatedTargetTree=getTreeScope(relatedTarget);var relatedTargetEventPath=getEventPath(relatedTarget,event);var lowestCommonAncestorTree;var lowestCommonAncestorTree=lowestCommonInclusiveAncestor(currentTargetTree,relatedTargetTree);if(!lowestCommonAncestorTree)lowestCommonAncestorTree=relatedTargetTree.root;for(var commonAncestorTree=lowestCommonAncestorTree;commonAncestorTree;commonAncestorTree=commonAncestorTree.parent){var adjustedRelatedTarget;for(var i=0;i<relatedTargetEventPath.length;i++){var node=relatedTargetEventPath[i];if(getTreeScope(node)===commonAncestorTree)return node;}}\nreturn null;}\nfunction inSameTree(a,b){return getTreeScope(a)===getTreeScope(b);}\nvar NONE=0;var CAPTURING_PHASE=1;var AT_TARGET=2;var BUBBLING_PHASE=3;var pendingError;function dispatchOriginalEvent(originalEvent){if(handledEventsTable.get(originalEvent))return;handledEventsTable.set(originalEvent,true);dispatchEvent(wrap(originalEvent),wrap(originalEvent.target));if(pendingError){var err=pendingError;pendingError=null;throw err;}}\nfunction isLoadLikeEvent(event){switch(event.type){case\"load\":case\"beforeunload\":case\"unload\":return true;}\nreturn false;}\nfunction dispatchEvent(event,originalWrapperTarget){if(currentlyDispatchingEvents.get(event))throw new Error(\"InvalidStateError\");currentlyDispatchingEvents.set(event,true);scope.renderAllPending();var eventPath;var overrideTarget;var win;if(isLoadLikeEvent(event)&&!event.bubbles){var doc=originalWrapperTarget;if(doc instanceof wrappers.Document&&(win=doc.defaultView)){overrideTarget=doc;eventPath=[];}}\nif(!eventPath){if(originalWrapperTarget instanceof wrappers.Window){win=originalWrapperTarget;eventPath=[];}else{eventPath=getEventPath(originalWrapperTarget,event);if(!isLoadLikeEvent(event)){var doc=eventPath[eventPath.length-1];if(doc instanceof wrappers.Document)win=doc.defaultView;}}}\neventPathTable.set(event,eventPath);if(dispatchCapturing(event,eventPath,win,overrideTarget)){if(dispatchAtTarget(event,eventPath,win,overrideTarget)){dispatchBubbling(event,eventPath,win,overrideTarget);}}\neventPhaseTable.set(event,NONE);currentTargetTable.delete(event,null);currentlyDispatchingEvents.delete(event);return event.defaultPrevented;}\nfunction dispatchCapturing(event,eventPath,win,overrideTarget){var phase=CAPTURING_PHASE;if(win){if(!invoke(win,event,phase,eventPath,overrideTarget))return false;}\nfor(var i=eventPath.length-1;i>0;i--){if(!invoke(eventPath[i],event,phase,eventPath,overrideTarget))return false;}\nreturn true;}\nfunction dispatchAtTarget(event,eventPath,win,overrideTarget){var phase=AT_TARGET;var currentTarget=eventPath[0]||win;return invoke(currentTarget,event,phase,eventPath,overrideTarget);}\nfunction dispatchBubbling(event,eventPath,win,overrideTarget){var phase=BUBBLING_PHASE;for(var i=1;i<eventPath.length;i++){if(!invoke(eventPath[i],event,phase,eventPath,overrideTarget))return;}\nif(win&&eventPath.length>0){invoke(win,event,phase,eventPath,overrideTarget);}}\nfunction invoke(currentTarget,event,phase,eventPath,overrideTarget){var listeners=listenersTable.get(currentTarget);if(!listeners)return true;var target=overrideTarget||eventRetargetting(eventPath,currentTarget);if(target===currentTarget){if(phase===CAPTURING_PHASE)return true;if(phase===BUBBLING_PHASE)phase=AT_TARGET;}else if(phase===BUBBLING_PHASE&&!event.bubbles){return true;}\nif(\"relatedTarget\"in event){var originalEvent=unwrap(event);var unwrappedRelatedTarget=originalEvent.relatedTarget;if(unwrappedRelatedTarget){if(unwrappedRelatedTarget instanceof Object&&unwrappedRelatedTarget.addEventListener){var relatedTarget=wrap(unwrappedRelatedTarget);var adjusted=relatedTargetResolution(event,currentTarget,relatedTarget);if(adjusted===target)return true;}else{adjusted=null;}\nrelatedTargetTable.set(event,adjusted);}}\neventPhaseTable.set(event,phase);var type=event.type;var anyRemoved=false;targetTable.set(event,target);currentTargetTable.set(event,currentTarget);listeners.depth++;for(var i=0,len=listeners.length;i<len;i++){var listener=listeners[i];if(listener.removed){anyRemoved=true;continue;}\nif(listener.type!==type||!listener.capture&&phase===CAPTURING_PHASE||listener.capture&&phase===BUBBLING_PHASE){continue;}\ntry{if(typeof listener.handler===\"function\")listener.handler.call(currentTarget,event);else listener.handler.handleEvent(event);if(stopImmediatePropagationTable.get(event))return false;}catch(ex){if(!pendingError)pendingError=ex;}}\nlisteners.depth--;if(anyRemoved&&listeners.depth===0){var copy=listeners.slice();listeners.length=0;for(var i=0;i<copy.length;i++){if(!copy[i].removed)listeners.push(copy[i]);}}\nreturn!stopPropagationTable.get(event);}\nfunction Listener(type,handler,capture){this.type=type;this.handler=handler;this.capture=Boolean(capture);}\nListener.prototype={equals:function(that){return this.handler===that.handler&&this.type===that.type&&this.capture===that.capture;},get removed(){return this.handler===null;},remove:function(){this.handler=null;}};var OriginalEvent=window.Event;OriginalEvent.prototype.polymerBlackList_={returnValue:true,keyLocation:true};function Event(type,options){if(type instanceof OriginalEvent){var impl=type;if(!OriginalBeforeUnloadEvent&&impl.type===\"beforeunload\"&&!(this instanceof BeforeUnloadEvent)){return new BeforeUnloadEvent(impl);}\nsetWrapper(impl,this);}else{return wrap(constructEvent(OriginalEvent,\"Event\",type,options));}}\nEvent.prototype={get target(){return targetTable.get(this);},get currentTarget(){return currentTargetTable.get(this);},get eventPhase(){return eventPhaseTable.get(this);},get path(){var eventPath=eventPathTable.get(this);if(!eventPath)return[];return eventPath.slice();},stopPropagation:function(){stopPropagationTable.set(this,true);},stopImmediatePropagation:function(){stopPropagationTable.set(this,true);stopImmediatePropagationTable.set(this,true);}};var supportsDefaultPrevented=function(){var e=document.createEvent(\"Event\");e.initEvent(\"test\",true,true);e.preventDefault();return e.defaultPrevented;}();if(!supportsDefaultPrevented){Event.prototype.preventDefault=function(){if(!this.cancelable)return;unsafeUnwrap(this).preventDefault();Object.defineProperty(this,\"defaultPrevented\",{get:function(){return true;},configurable:true});};}\nregisterWrapper(OriginalEvent,Event,document.createEvent(\"Event\"));function unwrapOptions(options){if(!options||!options.relatedTarget)return options;return Object.create(options,{relatedTarget:{value:unwrap(options.relatedTarget)}});}\nfunction registerGenericEvent(name,SuperEvent,prototype){var OriginalEvent=window[name];var GenericEvent=function(type,options){if(type instanceof OriginalEvent)setWrapper(type,this);else return wrap(constructEvent(OriginalEvent,name,type,options));};GenericEvent.prototype=Object.create(SuperEvent.prototype);if(prototype)mixin(GenericEvent.prototype,prototype);if(OriginalEvent){try{registerWrapper(OriginalEvent,GenericEvent,new OriginalEvent(\"temp\"));}catch(ex){registerWrapper(OriginalEvent,GenericEvent,document.createEvent(name));}}\nreturn GenericEvent;}\nvar UIEvent=registerGenericEvent(\"UIEvent\",Event);var CustomEvent=registerGenericEvent(\"CustomEvent\",Event);var relatedTargetProto={get relatedTarget(){var relatedTarget=relatedTargetTable.get(this);if(relatedTarget!==undefined)return relatedTarget;return wrap(unwrap(this).relatedTarget);}};function getInitFunction(name,relatedTargetIndex){return function(){arguments[relatedTargetIndex]=unwrap(arguments[relatedTargetIndex]);var impl=unwrap(this);impl[name].apply(impl,arguments);};}\nvar mouseEventProto=mixin({initMouseEvent:getInitFunction(\"initMouseEvent\",14)},relatedTargetProto);var focusEventProto=mixin({initFocusEvent:getInitFunction(\"initFocusEvent\",5)},relatedTargetProto);var MouseEvent=registerGenericEvent(\"MouseEvent\",UIEvent,mouseEventProto);var FocusEvent=registerGenericEvent(\"FocusEvent\",UIEvent,focusEventProto);var defaultInitDicts=Object.create(null);var supportsEventConstructors=function(){try{new window.FocusEvent(\"focus\");}catch(ex){return false;}\nreturn true;}();function constructEvent(OriginalEvent,name,type,options){if(supportsEventConstructors)return new OriginalEvent(type,unwrapOptions(options));var event=unwrap(document.createEvent(name));var defaultDict=defaultInitDicts[name];var args=[type];Object.keys(defaultDict).forEach(function(key){var v=options!=null&&key in options?options[key]:defaultDict[key];if(key===\"relatedTarget\")v=unwrap(v);args.push(v);});event[\"init\"+name].apply(event,args);return event;}\nif(!supportsEventConstructors){var configureEventConstructor=function(name,initDict,superName){if(superName){var superDict=defaultInitDicts[superName];initDict=mixin(mixin({},superDict),initDict);}\ndefaultInitDicts[name]=initDict;};configureEventConstructor(\"Event\",{bubbles:false,cancelable:false});configureEventConstructor(\"CustomEvent\",{detail:null},\"Event\");configureEventConstructor(\"UIEvent\",{view:null,detail:0},\"Event\");configureEventConstructor(\"MouseEvent\",{screenX:0,screenY:0,clientX:0,clientY:0,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false,button:0,relatedTarget:null},\"UIEvent\");configureEventConstructor(\"FocusEvent\",{relatedTarget:null},\"UIEvent\");}\nvar OriginalBeforeUnloadEvent=window.BeforeUnloadEvent;function BeforeUnloadEvent(impl){Event.call(this,impl);}\nBeforeUnloadEvent.prototype=Object.create(Event.prototype);mixin(BeforeUnloadEvent.prototype,{get returnValue(){return unsafeUnwrap(this).returnValue;},set returnValue(v){unsafeUnwrap(this).returnValue=v;}});if(OriginalBeforeUnloadEvent)registerWrapper(OriginalBeforeUnloadEvent,BeforeUnloadEvent);function isValidListener(fun){if(typeof fun===\"function\")return true;return fun&&fun.handleEvent;}\nfunction isMutationEvent(type){switch(type){case\"DOMAttrModified\":case\"DOMAttributeNameChanged\":case\"DOMCharacterDataModified\":case\"DOMElementNameChanged\":case\"DOMNodeInserted\":case\"DOMNodeInsertedIntoDocument\":case\"DOMNodeRemoved\":case\"DOMNodeRemovedFromDocument\":case\"DOMSubtreeModified\":return true;}\nreturn false;}\nvar OriginalEventTarget=window.EventTarget;function EventTarget(impl){setWrapper(impl,this);}\nvar methodNames=[\"addEventListener\",\"removeEventListener\",\"dispatchEvent\"];[Node,Window].forEach(function(constructor){var p=constructor.prototype;methodNames.forEach(function(name){Object.defineProperty(p,name+\"_\",{value:p[name]});});});function getTargetToListenAt(wrapper){if(wrapper instanceof wrappers.ShadowRoot)wrapper=wrapper.host;return unwrap(wrapper);}\nEventTarget.prototype={addEventListener:function(type,fun,capture){if(!isValidListener(fun)||isMutationEvent(type))return;var listener=new Listener(type,fun,capture);var listeners=listenersTable.get(this);if(!listeners){listeners=[];listeners.depth=0;listenersTable.set(this,listeners);}else{for(var i=0;i<listeners.length;i++){if(listener.equals(listeners[i]))return;}}\nlisteners.push(listener);var target=getTargetToListenAt(this);target.addEventListener_(type,dispatchOriginalEvent,true);},removeEventListener:function(type,fun,capture){capture=Boolean(capture);var listeners=listenersTable.get(this);if(!listeners)return;var count=0,found=false;for(var i=0;i<listeners.length;i++){if(listeners[i].type===type&&listeners[i].capture===capture){count++;if(listeners[i].handler===fun){found=true;listeners[i].remove();}}}\nif(found&&count===1){var target=getTargetToListenAt(this);target.removeEventListener_(type,dispatchOriginalEvent,true);}},dispatchEvent:function(event){var nativeEvent=unwrap(event);var eventType=nativeEvent.type;handledEventsTable.set(nativeEvent,false);scope.renderAllPending();var tempListener;if(!hasListenerInAncestors(this,eventType)){tempListener=function(){};this.addEventListener(eventType,tempListener,true);}\ntry{return unwrap(this).dispatchEvent_(nativeEvent);}finally{if(tempListener)this.removeEventListener(eventType,tempListener,true);}}};function hasListener(node,type){var listeners=listenersTable.get(node);if(listeners){for(var i=0;i<listeners.length;i++){if(!listeners[i].removed&&listeners[i].type===type)return true;}}\nreturn false;}\nfunction hasListenerInAncestors(target,type){for(var node=unwrap(target);node;node=node.parentNode){if(hasListener(wrap(node),type))return true;}\nreturn false;}\nif(OriginalEventTarget)registerWrapper(OriginalEventTarget,EventTarget);function wrapEventTargetMethods(constructors){forwardMethodsToWrapper(constructors,methodNames);}\nvar originalElementFromPoint=document.elementFromPoint;function elementFromPoint(self,document,x,y){scope.renderAllPending();var element=wrap(originalElementFromPoint.call(unsafeUnwrap(document),x,y));if(!element)return null;var path=getEventPath(element,null);var idx=path.lastIndexOf(self);if(idx==-1)return null;else path=path.slice(0,idx);return eventRetargetting(path,self);}\nfunction getEventHandlerGetter(name){return function(){var inlineEventHandlers=eventHandlersTable.get(this);return inlineEventHandlers&&inlineEventHandlers[name]&&inlineEventHandlers[name].value||null;};}\nfunction getEventHandlerSetter(name){var eventType=name.slice(2);return function(value){var inlineEventHandlers=eventHandlersTable.get(this);if(!inlineEventHandlers){inlineEventHandlers=Object.create(null);eventHandlersTable.set(this,inlineEventHandlers);}\nvar old=inlineEventHandlers[name];if(old)this.removeEventListener(eventType,old.wrapped,false);if(typeof value===\"function\"){var wrapped=function(e){var rv=value.call(this,e);if(rv===false)e.preventDefault();else if(name===\"onbeforeunload\"&&typeof rv===\"string\")e.returnValue=rv;};this.addEventListener(eventType,wrapped,false);inlineEventHandlers[name]={value:value,wrapped:wrapped};}};}\nscope.elementFromPoint=elementFromPoint;scope.getEventHandlerGetter=getEventHandlerGetter;scope.getEventHandlerSetter=getEventHandlerSetter;scope.wrapEventTargetMethods=wrapEventTargetMethods;scope.wrappers.BeforeUnloadEvent=BeforeUnloadEvent;scope.wrappers.CustomEvent=CustomEvent;scope.wrappers.Event=Event;scope.wrappers.EventTarget=EventTarget;scope.wrappers.FocusEvent=FocusEvent;scope.wrappers.MouseEvent=MouseEvent;scope.wrappers.UIEvent=UIEvent;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var UIEvent=scope.wrappers.UIEvent;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var OriginalTouchEvent=window.TouchEvent;if(!OriginalTouchEvent)return;var nativeEvent;try{nativeEvent=document.createEvent(\"TouchEvent\");}catch(ex){return;}\nvar nonEnumDescriptor={enumerable:false};function nonEnum(obj,prop){Object.defineProperty(obj,prop,nonEnumDescriptor);}\nfunction Touch(impl){setWrapper(impl,this);}\nTouch.prototype={get target(){return wrap(unsafeUnwrap(this).target);}};var descr={configurable:true,enumerable:true,get:null};[\"clientX\",\"clientY\",\"screenX\",\"screenY\",\"pageX\",\"pageY\",\"identifier\",\"webkitRadiusX\",\"webkitRadiusY\",\"webkitRotationAngle\",\"webkitForce\"].forEach(function(name){descr.get=function(){return unsafeUnwrap(this)[name];};Object.defineProperty(Touch.prototype,name,descr);});function TouchList(){this.length=0;nonEnum(this,\"length\");}\nTouchList.prototype={item:function(index){return this[index];}};function wrapTouchList(nativeTouchList){var list=new TouchList();for(var i=0;i<nativeTouchList.length;i++){list[i]=new Touch(nativeTouchList[i]);}\nlist.length=i;return list;}\nfunction TouchEvent(impl){UIEvent.call(this,impl);}\nTouchEvent.prototype=Object.create(UIEvent.prototype);mixin(TouchEvent.prototype,{get touches(){return wrapTouchList(unsafeUnwrap(this).touches);},get targetTouches(){return wrapTouchList(unsafeUnwrap(this).targetTouches);},get changedTouches(){return wrapTouchList(unsafeUnwrap(this).changedTouches);},initTouchEvent:function(){throw new Error(\"Not implemented\");}});registerWrapper(OriginalTouchEvent,TouchEvent,nativeEvent);scope.wrappers.Touch=Touch;scope.wrappers.TouchEvent=TouchEvent;scope.wrappers.TouchList=TouchList;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var nonEnumDescriptor={enumerable:false};function nonEnum(obj,prop){Object.defineProperty(obj,prop,nonEnumDescriptor);}\nfunction NodeList(){this.length=0;nonEnum(this,\"length\");}\nNodeList.prototype={item:function(index){return this[index];}};nonEnum(NodeList.prototype,\"item\");function wrapNodeList(list){if(list==null)return list;var wrapperList=new NodeList();for(var i=0,length=list.length;i<length;i++){wrapperList[i]=wrap(list[i]);}\nwrapperList.length=length;return wrapperList;}\nfunction addWrapNodeListMethod(wrapperConstructor,name){wrapperConstructor.prototype[name]=function(){return wrapNodeList(unsafeUnwrap(this)[name].apply(unsafeUnwrap(this),arguments));};}\nscope.wrappers.NodeList=NodeList;scope.addWrapNodeListMethod=addWrapNodeListMethod;scope.wrapNodeList=wrapNodeList;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";scope.wrapHTMLCollection=scope.wrapNodeList;scope.wrappers.HTMLCollection=scope.wrappers.NodeList;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var EventTarget=scope.wrappers.EventTarget;var NodeList=scope.wrappers.NodeList;var TreeScope=scope.TreeScope;var assert=scope.assert;var defineWrapGetter=scope.defineWrapGetter;var enqueueMutation=scope.enqueueMutation;var getTreeScope=scope.getTreeScope;var isWrapper=scope.isWrapper;var mixin=scope.mixin;var registerTransientObservers=scope.registerTransientObservers;var registerWrapper=scope.registerWrapper;var setTreeScope=scope.setTreeScope;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var wrapIfNeeded=scope.wrapIfNeeded;var wrappers=scope.wrappers;function assertIsNodeWrapper(node){assert(node instanceof Node);}\nfunction createOneElementNodeList(node){var nodes=new NodeList();nodes[0]=node;nodes.length=1;return nodes;}\nvar surpressMutations=false;function enqueueRemovalForInsertedNodes(node,parent,nodes){enqueueMutation(parent,\"childList\",{removedNodes:nodes,previousSibling:node.previousSibling,nextSibling:node.nextSibling});}\nfunction enqueueRemovalForInsertedDocumentFragment(df,nodes){enqueueMutation(df,\"childList\",{removedNodes:nodes});}\nfunction collectNodes(node,parentNode,previousNode,nextNode){if(node instanceof DocumentFragment){var nodes=collectNodesForDocumentFragment(node);surpressMutations=true;for(var i=nodes.length-1;i>=0;i--){node.removeChild(nodes[i]);nodes[i].parentNode_=parentNode;}\nsurpressMutations=false;for(var i=0;i<nodes.length;i++){nodes[i].previousSibling_=nodes[i-1]||previousNode;nodes[i].nextSibling_=nodes[i+1]||nextNode;}\nif(previousNode)previousNode.nextSibling_=nodes[0];if(nextNode)nextNode.previousSibling_=nodes[nodes.length-1];return nodes;}\nvar nodes=createOneElementNodeList(node);var oldParent=node.parentNode;if(oldParent){oldParent.removeChild(node);}\nnode.parentNode_=parentNode;node.previousSibling_=previousNode;node.nextSibling_=nextNode;if(previousNode)previousNode.nextSibling_=node;if(nextNode)nextNode.previousSibling_=node;return nodes;}\nfunction collectNodesNative(node){if(node instanceof DocumentFragment)return collectNodesForDocumentFragment(node);var nodes=createOneElementNodeList(node);var oldParent=node.parentNode;if(oldParent)enqueueRemovalForInsertedNodes(node,oldParent,nodes);return nodes;}\nfunction collectNodesForDocumentFragment(node){var nodes=new NodeList();var i=0;for(var child=node.firstChild;child;child=child.nextSibling){nodes[i++]=child;}\nnodes.length=i;enqueueRemovalForInsertedDocumentFragment(node,nodes);return nodes;}\nfunction snapshotNodeList(nodeList){return nodeList;}\nfunction nodeWasAdded(node,treeScope){setTreeScope(node,treeScope);node.nodeIsInserted_();}\nfunction nodesWereAdded(nodes,parent){var treeScope=getTreeScope(parent);for(var i=0;i<nodes.length;i++){nodeWasAdded(nodes[i],treeScope);}}\nfunction nodeWasRemoved(node){setTreeScope(node,new TreeScope(node,null));}\nfunction nodesWereRemoved(nodes){for(var i=0;i<nodes.length;i++){nodeWasRemoved(nodes[i]);}}\nfunction ensureSameOwnerDocument(parent,child){var ownerDoc=parent.nodeType===Node.DOCUMENT_NODE?parent:parent.ownerDocument;if(ownerDoc!==child.ownerDocument)ownerDoc.adoptNode(child);}\nfunction adoptNodesIfNeeded(owner,nodes){if(!nodes.length)return;var ownerDoc=owner.ownerDocument;if(ownerDoc===nodes[0].ownerDocument)return;for(var i=0;i<nodes.length;i++){scope.adoptNodeNoRemove(nodes[i],ownerDoc);}}\nfunction unwrapNodesForInsertion(owner,nodes){adoptNodesIfNeeded(owner,nodes);var length=nodes.length;if(length===1)return unwrap(nodes[0]);var df=unwrap(owner.ownerDocument.createDocumentFragment());for(var i=0;i<length;i++){df.appendChild(unwrap(nodes[i]));}\nreturn df;}\nfunction clearChildNodes(wrapper){if(wrapper.firstChild_!==undefined){var child=wrapper.firstChild_;while(child){var tmp=child;child=child.nextSibling_;tmp.parentNode_=tmp.previousSibling_=tmp.nextSibling_=undefined;}}\nwrapper.firstChild_=wrapper.lastChild_=undefined;}\nfunction removeAllChildNodes(wrapper){if(wrapper.invalidateShadowRenderer()){var childWrapper=wrapper.firstChild;while(childWrapper){assert(childWrapper.parentNode===wrapper);var nextSibling=childWrapper.nextSibling;var childNode=unwrap(childWrapper);var parentNode=childNode.parentNode;if(parentNode)originalRemoveChild.call(parentNode,childNode);childWrapper.previousSibling_=childWrapper.nextSibling_=childWrapper.parentNode_=null;childWrapper=nextSibling;}\nwrapper.firstChild_=wrapper.lastChild_=null;}else{var node=unwrap(wrapper);var child=node.firstChild;var nextSibling;while(child){nextSibling=child.nextSibling;originalRemoveChild.call(node,child);child=nextSibling;}}}\nfunction invalidateParent(node){var p=node.parentNode;return p&&p.invalidateShadowRenderer();}\nfunction cleanupNodes(nodes){for(var i=0,n;i<nodes.length;i++){n=nodes[i];n.parentNode.removeChild(n);}}\nvar originalImportNode=document.importNode;var originalCloneNode=window.Node.prototype.cloneNode;function cloneNode(node,deep,opt_doc){var clone;if(opt_doc)clone=wrap(originalImportNode.call(opt_doc,unsafeUnwrap(node),false));else clone=wrap(originalCloneNode.call(unsafeUnwrap(node),false));if(deep){for(var child=node.firstChild;child;child=child.nextSibling){clone.appendChild(cloneNode(child,true,opt_doc));}\nif(node instanceof wrappers.HTMLTemplateElement){var cloneContent=clone.content;for(var child=node.content.firstChild;child;child=child.nextSibling){cloneContent.appendChild(cloneNode(child,true,opt_doc));}}}\nreturn clone;}\nfunction contains(self,child){if(!child||getTreeScope(self)!==getTreeScope(child))return false;for(var node=child;node;node=node.parentNode){if(node===self)return true;}\nreturn false;}\nvar OriginalNode=window.Node;function Node(original){assert(original instanceof OriginalNode);EventTarget.call(this,original);this.parentNode_=undefined;this.firstChild_=undefined;this.lastChild_=undefined;this.nextSibling_=undefined;this.previousSibling_=undefined;this.treeScope_=undefined;}\nvar OriginalDocumentFragment=window.DocumentFragment;var originalAppendChild=OriginalNode.prototype.appendChild;var originalCompareDocumentPosition=OriginalNode.prototype.compareDocumentPosition;var originalIsEqualNode=OriginalNode.prototype.isEqualNode;var originalInsertBefore=OriginalNode.prototype.insertBefore;var originalRemoveChild=OriginalNode.prototype.removeChild;var originalReplaceChild=OriginalNode.prototype.replaceChild;var isIEOrEdge=/Trident|Edge/.test(navigator.userAgent);var removeChildOriginalHelper=isIEOrEdge?function(parent,child){try{originalRemoveChild.call(parent,child);}catch(ex){if(!(parent instanceof OriginalDocumentFragment))throw ex;}}:function(parent,child){originalRemoveChild.call(parent,child);};Node.prototype=Object.create(EventTarget.prototype);mixin(Node.prototype,{appendChild:function(childWrapper){return this.insertBefore(childWrapper,null);},insertBefore:function(childWrapper,refWrapper){assertIsNodeWrapper(childWrapper);var refNode;if(refWrapper){if(isWrapper(refWrapper)){refNode=unwrap(refWrapper);}else{refNode=refWrapper;refWrapper=wrap(refNode);}}else{refWrapper=null;refNode=null;}\nrefWrapper&&assert(refWrapper.parentNode===this);var nodes;var previousNode=refWrapper?refWrapper.previousSibling:this.lastChild;var useNative=!this.invalidateShadowRenderer()&&!invalidateParent(childWrapper);if(useNative)nodes=collectNodesNative(childWrapper);else nodes=collectNodes(childWrapper,this,previousNode,refWrapper);if(useNative){ensureSameOwnerDocument(this,childWrapper);clearChildNodes(this);originalInsertBefore.call(unsafeUnwrap(this),unwrap(childWrapper),refNode);}else{if(!previousNode)this.firstChild_=nodes[0];if(!refWrapper){this.lastChild_=nodes[nodes.length-1];if(this.firstChild_===undefined)this.firstChild_=this.firstChild;}\nvar parentNode=refNode?refNode.parentNode:unsafeUnwrap(this);if(parentNode){originalInsertBefore.call(parentNode,unwrapNodesForInsertion(this,nodes),refNode);}else{adoptNodesIfNeeded(this,nodes);}}\nenqueueMutation(this,\"childList\",{addedNodes:nodes,nextSibling:refWrapper,previousSibling:previousNode});nodesWereAdded(nodes,this);return childWrapper;},removeChild:function(childWrapper){assertIsNodeWrapper(childWrapper);if(childWrapper.parentNode!==this){var found=false;var childNodes=this.childNodes;for(var ieChild=this.firstChild;ieChild;ieChild=ieChild.nextSibling){if(ieChild===childWrapper){found=true;break;}}\nif(!found){throw new Error(\"NotFoundError\");}}\nvar childNode=unwrap(childWrapper);var childWrapperNextSibling=childWrapper.nextSibling;var childWrapperPreviousSibling=childWrapper.previousSibling;if(this.invalidateShadowRenderer()){var thisFirstChild=this.firstChild;var thisLastChild=this.lastChild;var parentNode=childNode.parentNode;if(parentNode)removeChildOriginalHelper(parentNode,childNode);if(thisFirstChild===childWrapper)this.firstChild_=childWrapperNextSibling;if(thisLastChild===childWrapper)this.lastChild_=childWrapperPreviousSibling;if(childWrapperPreviousSibling)childWrapperPreviousSibling.nextSibling_=childWrapperNextSibling;if(childWrapperNextSibling){childWrapperNextSibling.previousSibling_=childWrapperPreviousSibling;}\nchildWrapper.previousSibling_=childWrapper.nextSibling_=childWrapper.parentNode_=undefined;}else{clearChildNodes(this);removeChildOriginalHelper(unsafeUnwrap(this),childNode);}\nif(!surpressMutations){enqueueMutation(this,\"childList\",{removedNodes:createOneElementNodeList(childWrapper),nextSibling:childWrapperNextSibling,previousSibling:childWrapperPreviousSibling});}\nregisterTransientObservers(this,childWrapper);return childWrapper;},replaceChild:function(newChildWrapper,oldChildWrapper){assertIsNodeWrapper(newChildWrapper);var oldChildNode;if(isWrapper(oldChildWrapper)){oldChildNode=unwrap(oldChildWrapper);}else{oldChildNode=oldChildWrapper;oldChildWrapper=wrap(oldChildNode);}\nif(oldChildWrapper.parentNode!==this){throw new Error(\"NotFoundError\");}\nvar nextNode=oldChildWrapper.nextSibling;var previousNode=oldChildWrapper.previousSibling;var nodes;var useNative=!this.invalidateShadowRenderer()&&!invalidateParent(newChildWrapper);if(useNative){nodes=collectNodesNative(newChildWrapper);}else{if(nextNode===newChildWrapper)nextNode=newChildWrapper.nextSibling;nodes=collectNodes(newChildWrapper,this,previousNode,nextNode);}\nif(!useNative){if(this.firstChild===oldChildWrapper)this.firstChild_=nodes[0];if(this.lastChild===oldChildWrapper)this.lastChild_=nodes[nodes.length-1];oldChildWrapper.previousSibling_=oldChildWrapper.nextSibling_=oldChildWrapper.parentNode_=undefined;if(oldChildNode.parentNode){originalReplaceChild.call(oldChildNode.parentNode,unwrapNodesForInsertion(this,nodes),oldChildNode);}}else{ensureSameOwnerDocument(this,newChildWrapper);clearChildNodes(this);originalReplaceChild.call(unsafeUnwrap(this),unwrap(newChildWrapper),oldChildNode);}\nenqueueMutation(this,\"childList\",{addedNodes:nodes,removedNodes:createOneElementNodeList(oldChildWrapper),nextSibling:nextNode,previousSibling:previousNode});nodeWasRemoved(oldChildWrapper);nodesWereAdded(nodes,this);return oldChildWrapper;},nodeIsInserted_:function(){for(var child=this.firstChild;child;child=child.nextSibling){child.nodeIsInserted_();}},hasChildNodes:function(){return this.firstChild!==null;},get parentNode(){return this.parentNode_!==undefined?this.parentNode_:wrap(unsafeUnwrap(this).parentNode);},get firstChild(){return this.firstChild_!==undefined?this.firstChild_:wrap(unsafeUnwrap(this).firstChild);},get lastChild(){return this.lastChild_!==undefined?this.lastChild_:wrap(unsafeUnwrap(this).lastChild);},get nextSibling(){return this.nextSibling_!==undefined?this.nextSibling_:wrap(unsafeUnwrap(this).nextSibling);},get previousSibling(){return this.previousSibling_!==undefined?this.previousSibling_:wrap(unsafeUnwrap(this).previousSibling);},get parentElement(){var p=this.parentNode;while(p&&p.nodeType!==Node.ELEMENT_NODE){p=p.parentNode;}\nreturn p;},get textContent(){var s=\"\";for(var child=this.firstChild;child;child=child.nextSibling){if(child.nodeType!=Node.COMMENT_NODE){s+=child.textContent;}}\nreturn s;},set textContent(textContent){if(textContent==null)textContent=\"\";var removedNodes=snapshotNodeList(this.childNodes);if(this.invalidateShadowRenderer()){removeAllChildNodes(this);if(textContent!==\"\"){var textNode=unsafeUnwrap(this).ownerDocument.createTextNode(textContent);this.appendChild(textNode);}}else{clearChildNodes(this);unsafeUnwrap(this).textContent=textContent;}\nvar addedNodes=snapshotNodeList(this.childNodes);enqueueMutation(this,\"childList\",{addedNodes:addedNodes,removedNodes:removedNodes});nodesWereRemoved(removedNodes);nodesWereAdded(addedNodes,this);},get childNodes(){var wrapperList=new NodeList();var i=0;for(var child=this.firstChild;child;child=child.nextSibling){wrapperList[i++]=child;}\nwrapperList.length=i;return wrapperList;},cloneNode:function(deep){return cloneNode(this,deep);},contains:function(child){return contains(this,wrapIfNeeded(child));},compareDocumentPosition:function(otherNode){return originalCompareDocumentPosition.call(unsafeUnwrap(this),unwrapIfNeeded(otherNode));},isEqualNode:function(otherNode){return originalIsEqualNode.call(unsafeUnwrap(this),unwrapIfNeeded(otherNode));},normalize:function(){var nodes=snapshotNodeList(this.childNodes);var remNodes=[];var s=\"\";var modNode;for(var i=0,n;i<nodes.length;i++){n=nodes[i];if(n.nodeType===Node.TEXT_NODE){if(!modNode&&!n.data.length)this.removeChild(n);else if(!modNode)modNode=n;else{s+=n.data;remNodes.push(n);}}else{if(modNode&&remNodes.length){modNode.data+=s;cleanupNodes(remNodes);}\nremNodes=[];s=\"\";modNode=null;if(n.childNodes.length)n.normalize();}}\nif(modNode&&remNodes.length){modNode.data+=s;cleanupNodes(remNodes);}}});defineWrapGetter(Node,\"ownerDocument\");registerWrapper(OriginalNode,Node,document.createDocumentFragment());delete Node.prototype.querySelector;delete Node.prototype.querySelectorAll;Node.prototype=mixin(Object.create(EventTarget.prototype),Node.prototype);scope.cloneNode=cloneNode;scope.nodeWasAdded=nodeWasAdded;scope.nodeWasRemoved=nodeWasRemoved;scope.nodesWereAdded=nodesWereAdded;scope.nodesWereRemoved=nodesWereRemoved;scope.originalInsertBefore=originalInsertBefore;scope.originalRemoveChild=originalRemoveChild;scope.snapshotNodeList=snapshotNodeList;scope.wrappers.Node=Node;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLCollection=scope.wrappers.HTMLCollection;var NodeList=scope.wrappers.NodeList;var getTreeScope=scope.getTreeScope;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var originalDocumentQuerySelector=document.querySelector;var originalElementQuerySelector=document.documentElement.querySelector;var originalDocumentQuerySelectorAll=document.querySelectorAll;var originalElementQuerySelectorAll=document.documentElement.querySelectorAll;var originalDocumentGetElementsByTagName=document.getElementsByTagName;var originalElementGetElementsByTagName=document.documentElement.getElementsByTagName;var originalDocumentGetElementsByTagNameNS=document.getElementsByTagNameNS;var originalElementGetElementsByTagNameNS=document.documentElement.getElementsByTagNameNS;var OriginalElement=window.Element;var OriginalDocument=window.HTMLDocument||window.Document;function filterNodeList(list,index,result,deep){var wrappedItem=null;var root=null;for(var i=0,length=list.length;i<length;i++){wrappedItem=wrap(list[i]);if(!deep&&(root=getTreeScope(wrappedItem).root)){if(root instanceof scope.wrappers.ShadowRoot){continue;}}\nresult[index++]=wrappedItem;}\nreturn index;}\nfunction shimSelector(selector){return String(selector).replace(/\\/deep\\/|::shadow|>>>/g,\" \");}\nfunction shimMatchesSelector(selector){return String(selector).replace(/:host\\(([^\\s]+)\\)/g,\"$1\").replace(/([^\\s]):host/g,\"$1\").replace(\":host\",\"*\").replace(/\\^|\\/shadow\\/|\\/shadow-deep\\/|::shadow|\\/deep\\/|::content|>>>/g,\" \");}\nfunction findOne(node,selector){var m,el=node.firstElementChild;while(el){if(el.matches(selector))return el;m=findOne(el,selector);if(m)return m;el=el.nextElementSibling;}\nreturn null;}\nfunction matchesSelector(el,selector){return el.matches(selector);}\nvar XHTML_NS=\"http://www.w3.org/1999/xhtml\";function matchesTagName(el,localName,localNameLowerCase){var ln=el.localName;return ln===localName||ln===localNameLowerCase&&el.namespaceURI===XHTML_NS;}\nfunction matchesEveryThing(){return true;}\nfunction matchesLocalNameOnly(el,ns,localName){return el.localName===localName;}\nfunction matchesNameSpace(el,ns){return el.namespaceURI===ns;}\nfunction matchesLocalNameNS(el,ns,localName){return el.namespaceURI===ns&&el.localName===localName;}\nfunction findElements(node,index,result,p,arg0,arg1){var el=node.firstElementChild;while(el){if(p(el,arg0,arg1))result[index++]=el;index=findElements(el,index,result,p,arg0,arg1);el=el.nextElementSibling;}\nreturn index;}\nfunction querySelectorAllFiltered(p,index,result,selector,deep){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,selector,null);}else if(target instanceof OriginalElement){list=originalElementQuerySelectorAll.call(target,selector);}else if(target instanceof OriginalDocument){list=originalDocumentQuerySelectorAll.call(target,selector);}else{return findElements(this,index,result,p,selector,null);}\nreturn filterNodeList(list,index,result,deep);}\nvar SelectorsInterface={querySelector:function(selector){var shimmed=shimSelector(selector);var deep=shimmed!==selector;selector=shimmed;var target=unsafeUnwrap(this);var wrappedItem;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findOne(this,selector);}else if(target instanceof OriginalElement){wrappedItem=wrap(originalElementQuerySelector.call(target,selector));}else if(target instanceof OriginalDocument){wrappedItem=wrap(originalDocumentQuerySelector.call(target,selector));}else{return findOne(this,selector);}\nif(!wrappedItem){return wrappedItem;}else if(!deep&&(root=getTreeScope(wrappedItem).root)){if(root instanceof scope.wrappers.ShadowRoot){return findOne(this,selector);}}\nreturn wrappedItem;},querySelectorAll:function(selector){var shimmed=shimSelector(selector);var deep=shimmed!==selector;selector=shimmed;var result=new NodeList();result.length=querySelectorAllFiltered.call(this,matchesSelector,0,result,selector,deep);return result;}};var MatchesInterface={matches:function(selector){selector=shimMatchesSelector(selector);return scope.originalMatches.call(unsafeUnwrap(this),selector);}};function getElementsByTagNameFiltered(p,index,result,localName,lowercase){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,localName,lowercase);}else if(target instanceof OriginalElement){list=originalElementGetElementsByTagName.call(target,localName,lowercase);}else if(target instanceof OriginalDocument){list=originalDocumentGetElementsByTagName.call(target,localName,lowercase);}else{return findElements(this,index,result,p,localName,lowercase);}\nreturn filterNodeList(list,index,result,false);}\nfunction getElementsByTagNameNSFiltered(p,index,result,ns,localName){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,ns,localName);}else if(target instanceof OriginalElement){list=originalElementGetElementsByTagNameNS.call(target,ns,localName);}else if(target instanceof OriginalDocument){list=originalDocumentGetElementsByTagNameNS.call(target,ns,localName);}else{return findElements(this,index,result,p,ns,localName);}\nreturn filterNodeList(list,index,result,false);}\nvar GetElementsByInterface={getElementsByTagName:function(localName){var result=new HTMLCollection();var match=localName===\"*\"?matchesEveryThing:matchesTagName;result.length=getElementsByTagNameFiltered.call(this,match,0,result,localName,localName.toLowerCase());return result;},getElementsByClassName:function(className){return this.querySelectorAll(\".\"+className);},getElementsByTagNameNS:function(ns,localName){var result=new HTMLCollection();var match=null;if(ns===\"*\"){match=localName===\"*\"?matchesEveryThing:matchesLocalNameOnly;}else{match=localName===\"*\"?matchesNameSpace:matchesLocalNameNS;}\nresult.length=getElementsByTagNameNSFiltered.call(this,match,0,result,ns||null,localName);return result;}};scope.GetElementsByInterface=GetElementsByInterface;scope.SelectorsInterface=SelectorsInterface;scope.MatchesInterface=MatchesInterface;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var NodeList=scope.wrappers.NodeList;function forwardElement(node){while(node&&node.nodeType!==Node.ELEMENT_NODE){node=node.nextSibling;}\nreturn node;}\nfunction backwardsElement(node){while(node&&node.nodeType!==Node.ELEMENT_NODE){node=node.previousSibling;}\nreturn node;}\nvar ParentNodeInterface={get firstElementChild(){return forwardElement(this.firstChild);},get lastElementChild(){return backwardsElement(this.lastChild);},get childElementCount(){var count=0;for(var child=this.firstElementChild;child;child=child.nextElementSibling){count++;}\nreturn count;},get children(){var wrapperList=new NodeList();var i=0;for(var child=this.firstElementChild;child;child=child.nextElementSibling){wrapperList[i++]=child;}\nwrapperList.length=i;return wrapperList;},remove:function(){var p=this.parentNode;if(p)p.removeChild(this);}};var ChildNodeInterface={get nextElementSibling(){return forwardElement(this.nextSibling);},get previousElementSibling(){return backwardsElement(this.previousSibling);}};var NonElementParentNodeInterface={getElementById:function(id){if(/[ \\t\\n\\r\\f]/.test(id))return null;return this.querySelector('[id=\"'+id+'\"]');}};scope.ChildNodeInterface=ChildNodeInterface;scope.NonElementParentNodeInterface=NonElementParentNodeInterface;scope.ParentNodeInterface=ParentNodeInterface;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var ChildNodeInterface=scope.ChildNodeInterface;var Node=scope.wrappers.Node;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var OriginalCharacterData=window.CharacterData;function CharacterData(node){Node.call(this,node);}\nCharacterData.prototype=Object.create(Node.prototype);mixin(CharacterData.prototype,{get nodeValue(){return this.data;},set nodeValue(data){this.data=data;},get textContent(){return this.data;},set textContent(value){this.data=value;},get data(){return unsafeUnwrap(this).data;},set data(value){var oldValue=unsafeUnwrap(this).data;enqueueMutation(this,\"characterData\",{oldValue:oldValue});unsafeUnwrap(this).data=value;}});mixin(CharacterData.prototype,ChildNodeInterface);registerWrapper(OriginalCharacterData,CharacterData,document.createTextNode(\"\"));scope.wrappers.CharacterData=CharacterData;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var CharacterData=scope.wrappers.CharacterData;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;function toUInt32(x){return x>>>0;}\nvar OriginalText=window.Text;function Text(node){CharacterData.call(this,node);}\nText.prototype=Object.create(CharacterData.prototype);mixin(Text.prototype,{splitText:function(offset){offset=toUInt32(offset);var s=this.data;if(offset>s.length)throw new Error(\"IndexSizeError\");var head=s.slice(0,offset);var tail=s.slice(offset);this.data=head;var newTextNode=this.ownerDocument.createTextNode(tail);if(this.parentNode)this.parentNode.insertBefore(newTextNode,this.nextSibling);return newTextNode;}});registerWrapper(OriginalText,Text,document.createTextNode(\"\"));scope.wrappers.Text=Text;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";if(!window.DOMTokenList){console.warn(\"Missing DOMTokenList prototype, please include a \"+\"compatible classList polyfill such as http://goo.gl/uTcepH.\");return;}\nvar unsafeUnwrap=scope.unsafeUnwrap;var enqueueMutation=scope.enqueueMutation;function getClass(el){return unsafeUnwrap(el).getAttribute(\"class\");}\nfunction enqueueClassAttributeChange(el,oldValue){enqueueMutation(el,\"attributes\",{name:\"class\",namespace:null,oldValue:oldValue});}\nfunction invalidateClass(el){scope.invalidateRendererBasedOnAttribute(el,\"class\");}\nfunction changeClass(tokenList,method,args){var ownerElement=tokenList.ownerElement_;if(ownerElement==null){return method.apply(tokenList,args);}\nvar oldValue=getClass(ownerElement);var retv=method.apply(tokenList,args);if(getClass(ownerElement)!==oldValue){enqueueClassAttributeChange(ownerElement,oldValue);invalidateClass(ownerElement);}\nreturn retv;}\nvar oldAdd=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(){changeClass(this,oldAdd,arguments);};var oldRemove=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(){changeClass(this,oldRemove,arguments);};var oldToggle=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(){return changeClass(this,oldToggle,arguments);};})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var ChildNodeInterface=scope.ChildNodeInterface;var GetElementsByInterface=scope.GetElementsByInterface;var Node=scope.wrappers.Node;var ParentNodeInterface=scope.ParentNodeInterface;var SelectorsInterface=scope.SelectorsInterface;var MatchesInterface=scope.MatchesInterface;var addWrapNodeListMethod=scope.addWrapNodeListMethod;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var oneOf=scope.oneOf;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrappers=scope.wrappers;var OriginalElement=window.Element;var matchesNames=[\"matches\",\"mozMatchesSelector\",\"msMatchesSelector\",\"webkitMatchesSelector\"].filter(function(name){return OriginalElement.prototype[name];});var matchesName=matchesNames[0];var originalMatches=OriginalElement.prototype[matchesName];function invalidateRendererBasedOnAttribute(element,name){var p=element.parentNode;if(!p||!p.shadowRoot)return;var renderer=scope.getRendererForHost(p);if(renderer.dependsOnAttribute(name))renderer.invalidate();}\nfunction enqueAttributeChange(element,name,oldValue){enqueueMutation(element,\"attributes\",{name:name,namespace:null,oldValue:oldValue});}\nvar classListTable=new WeakMap();function Element(node){Node.call(this,node);}\nElement.prototype=Object.create(Node.prototype);mixin(Element.prototype,{createShadowRoot:function(){var newShadowRoot=new wrappers.ShadowRoot(this);unsafeUnwrap(this).polymerShadowRoot_=newShadowRoot;var renderer=scope.getRendererForHost(this);renderer.invalidate();return newShadowRoot;},get shadowRoot(){return unsafeUnwrap(this).polymerShadowRoot_||null;},setAttribute:function(name,value){var oldValue=unsafeUnwrap(this).getAttribute(name);unsafeUnwrap(this).setAttribute(name,value);enqueAttributeChange(this,name,oldValue);invalidateRendererBasedOnAttribute(this,name);},removeAttribute:function(name){var oldValue=unsafeUnwrap(this).getAttribute(name);unsafeUnwrap(this).removeAttribute(name);enqueAttributeChange(this,name,oldValue);invalidateRendererBasedOnAttribute(this,name);},get classList(){var list=classListTable.get(this);if(!list){list=unsafeUnwrap(this).classList;if(!list)return;list.ownerElement_=this;classListTable.set(this,list);}\nreturn list;},get className(){return unsafeUnwrap(this).className;},set className(v){this.setAttribute(\"class\",v);},get id(){return unsafeUnwrap(this).id;},set id(v){this.setAttribute(\"id\",v);}});matchesNames.forEach(function(name){if(name!==\"matches\"){Element.prototype[name]=function(selector){return this.matches(selector);};}});if(OriginalElement.prototype.webkitCreateShadowRoot){Element.prototype.webkitCreateShadowRoot=Element.prototype.createShadowRoot;}\nmixin(Element.prototype,ChildNodeInterface);mixin(Element.prototype,GetElementsByInterface);mixin(Element.prototype,ParentNodeInterface);mixin(Element.prototype,SelectorsInterface);mixin(Element.prototype,MatchesInterface);registerWrapper(OriginalElement,Element,document.createElementNS(null,\"x\"));scope.invalidateRendererBasedOnAttribute=invalidateRendererBasedOnAttribute;scope.matchesNames=matchesNames;scope.originalMatches=originalMatches;scope.wrappers.Element=Element;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var Element=scope.wrappers.Element;var defineGetter=scope.defineGetter;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var nodesWereAdded=scope.nodesWereAdded;var nodesWereRemoved=scope.nodesWereRemoved;var registerWrapper=scope.registerWrapper;var snapshotNodeList=scope.snapshotNodeList;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrappers=scope.wrappers;var escapeAttrRegExp=/[&\\u00A0\"]/g;var escapeDataRegExp=/[&\\u00A0<>]/g;function escapeReplace(c){switch(c){case\"&\":return\"&amp;\";case\"<\":return\"&lt;\";case\">\":return\"&gt;\";case'\"':return\"&quot;\";case\" \":return\"&nbsp;\";}}\nfunction escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);}\nfunction escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);}\nfunction makeSet(arr){var set={};for(var i=0;i<arr.length;i++){set[arr[i]]=true;}\nreturn set;}\nvar voidElements=makeSet([\"area\",\"base\",\"br\",\"col\",\"command\",\"embed\",\"hr\",\"img\",\"input\",\"keygen\",\"link\",\"meta\",\"param\",\"source\",\"track\",\"wbr\"]);var plaintextParents=makeSet([\"style\",\"script\",\"xmp\",\"iframe\",\"noembed\",\"noframes\",\"plaintext\",\"noscript\"]);var XHTML_NS=\"http://www.w3.org/1999/xhtml\";function needsSelfClosingSlash(node){if(node.namespaceURI!==XHTML_NS)return true;var doctype=node.ownerDocument.doctype;return doctype&&doctype.publicId&&doctype.systemId;}\nfunction getOuterHTML(node,parentNode){switch(node.nodeType){case Node.ELEMENT_NODE:var tagName=node.tagName.toLowerCase();var s=\"<\"+tagName;var attrs=node.attributes;for(var i=0,attr;attr=attrs[i];i++){s+=\" \"+attr.name+'=\"'+escapeAttr(attr.value)+'\"';}\nif(voidElements[tagName]){if(needsSelfClosingSlash(node))s+=\"/\";return s+\">\";}\nreturn s+\">\"+getInnerHTML(node)+\"</\"+tagName+\">\";case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName])return data;return escapeData(data);case Node.COMMENT_NODE:return\"<!--\"+node.data+\"-->\";default:console.error(node);throw new Error(\"not implemented\");}}\nfunction getInnerHTML(node){if(node instanceof wrappers.HTMLTemplateElement)node=node.content;var s=\"\";for(var child=node.firstChild;child;child=child.nextSibling){s+=getOuterHTML(child,node);}\nreturn s;}\nfunction setInnerHTML(node,value,opt_tagName){var tagName=opt_tagName||\"div\";node.textContent=\"\";var tempElement=unwrap(node.ownerDocument.createElement(tagName));tempElement.innerHTML=value;var firstChild;while(firstChild=tempElement.firstChild){node.appendChild(wrap(firstChild));}}\nvar oldIe=/MSIE/.test(navigator.userAgent);var OriginalHTMLElement=window.HTMLElement;var OriginalHTMLTemplateElement=window.HTMLTemplateElement;function HTMLElement(node){Element.call(this,node);}\nHTMLElement.prototype=Object.create(Element.prototype);mixin(HTMLElement.prototype,{get innerHTML(){return getInnerHTML(this);},set innerHTML(value){if(oldIe&&plaintextParents[this.localName]){this.textContent=value;return;}\nvar removedNodes=snapshotNodeList(this.childNodes);if(this.invalidateShadowRenderer()){if(this instanceof wrappers.HTMLTemplateElement)setInnerHTML(this.content,value);else setInnerHTML(this,value,this.tagName);}else if(!OriginalHTMLTemplateElement&&this instanceof wrappers.HTMLTemplateElement){setInnerHTML(this.content,value);}else{unsafeUnwrap(this).innerHTML=value;}\nvar addedNodes=snapshotNodeList(this.childNodes);enqueueMutation(this,\"childList\",{addedNodes:addedNodes,removedNodes:removedNodes});nodesWereRemoved(removedNodes);nodesWereAdded(addedNodes,this);},get outerHTML(){return getOuterHTML(this,this.parentNode);},set outerHTML(value){var p=this.parentNode;if(p){p.invalidateShadowRenderer();var df=frag(p,value);p.replaceChild(df,this);}},insertAdjacentHTML:function(position,text){var contextElement,refNode;switch(String(position).toLowerCase()){case\"beforebegin\":contextElement=this.parentNode;refNode=this;break;case\"afterend\":contextElement=this.parentNode;refNode=this.nextSibling;break;case\"afterbegin\":contextElement=this;refNode=this.firstChild;break;case\"beforeend\":contextElement=this;refNode=null;break;default:return;}\nvar df=frag(contextElement,text);contextElement.insertBefore(df,refNode);},get hidden(){return this.hasAttribute(\"hidden\");},set hidden(v){if(v){this.setAttribute(\"hidden\",\"\");}else{this.removeAttribute(\"hidden\");}}});function frag(contextElement,html){var p=unwrap(contextElement.cloneNode(false));p.innerHTML=html;var df=unwrap(document.createDocumentFragment());var c;while(c=p.firstChild){df.appendChild(c);}\nreturn wrap(df);}\nfunction getter(name){return function(){scope.renderAllPending();return unsafeUnwrap(this)[name];};}\nfunction getterRequiresRendering(name){defineGetter(HTMLElement,name,getter(name));}\n[\"clientHeight\",\"clientLeft\",\"clientTop\",\"clientWidth\",\"offsetHeight\",\"offsetLeft\",\"offsetTop\",\"offsetWidth\",\"scrollHeight\",\"scrollWidth\"].forEach(getterRequiresRendering);function getterAndSetterRequiresRendering(name){Object.defineProperty(HTMLElement.prototype,name,{get:getter(name),set:function(v){scope.renderAllPending();unsafeUnwrap(this)[name]=v;},configurable:true,enumerable:true});}\n[\"scrollLeft\",\"scrollTop\"].forEach(getterAndSetterRequiresRendering);function methodRequiresRendering(name){Object.defineProperty(HTMLElement.prototype,name,{value:function(){scope.renderAllPending();return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this),arguments);},configurable:true,enumerable:true});}\n[\"focus\",\"getBoundingClientRect\",\"getClientRects\",\"scrollIntoView\"].forEach(methodRequiresRendering);registerWrapper(OriginalHTMLElement,HTMLElement,document.createElement(\"b\"));scope.wrappers.HTMLElement=HTMLElement;scope.getInnerHTML=getInnerHTML;scope.setInnerHTML=setInnerHTML;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var OriginalHTMLCanvasElement=window.HTMLCanvasElement;function HTMLCanvasElement(node){HTMLElement.call(this,node);}\nHTMLCanvasElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLCanvasElement.prototype,{getContext:function(){var context=unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this),arguments);return context&&wrap(context);}});registerWrapper(OriginalHTMLCanvasElement,HTMLCanvasElement,document.createElement(\"canvas\"));scope.wrappers.HTMLCanvasElement=HTMLCanvasElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var OriginalHTMLContentElement=window.HTMLContentElement;function HTMLContentElement(node){HTMLElement.call(this,node);}\nHTMLContentElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLContentElement.prototype,{constructor:HTMLContentElement,get select(){return this.getAttribute(\"select\");},set select(value){this.setAttribute(\"select\",value);},setAttribute:function(n,v){HTMLElement.prototype.setAttribute.call(this,n,v);if(String(n).toLowerCase()===\"select\")this.invalidateShadowRenderer(true);}});if(OriginalHTMLContentElement)registerWrapper(OriginalHTMLContentElement,HTMLContentElement);scope.wrappers.HTMLContentElement=HTMLContentElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var OriginalHTMLFormElement=window.HTMLFormElement;function HTMLFormElement(node){HTMLElement.call(this,node);}\nHTMLFormElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLFormElement.prototype,{get elements(){return wrapHTMLCollection(unwrap(this).elements);}});registerWrapper(OriginalHTMLFormElement,HTMLFormElement,document.createElement(\"form\"));scope.wrappers.HTMLFormElement=HTMLFormElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var rewrap=scope.rewrap;var OriginalHTMLImageElement=window.HTMLImageElement;function HTMLImageElement(node){HTMLElement.call(this,node);}\nHTMLImageElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLImageElement,HTMLImageElement,document.createElement(\"img\"));function Image(width,height){if(!(this instanceof Image)){throw new TypeError(\"DOM object constructor cannot be called as a function.\");}\nvar node=unwrap(document.createElement(\"img\"));HTMLElement.call(this,node);rewrap(node,this);if(width!==undefined)node.width=width;if(height!==undefined)node.height=height;}\nImage.prototype=HTMLImageElement.prototype;scope.wrappers.HTMLImageElement=HTMLImageElement;scope.wrappers.Image=Image;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var NodeList=scope.wrappers.NodeList;var registerWrapper=scope.registerWrapper;var OriginalHTMLShadowElement=window.HTMLShadowElement;function HTMLShadowElement(node){HTMLElement.call(this,node);}\nHTMLShadowElement.prototype=Object.create(HTMLElement.prototype);HTMLShadowElement.prototype.constructor=HTMLShadowElement;if(OriginalHTMLShadowElement)registerWrapper(OriginalHTMLShadowElement,HTMLShadowElement);scope.wrappers.HTMLShadowElement=HTMLShadowElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var contentTable=new WeakMap();var templateContentsOwnerTable=new WeakMap();function getTemplateContentsOwner(doc){if(!doc.defaultView)return doc;var d=templateContentsOwnerTable.get(doc);if(!d){d=doc.implementation.createHTMLDocument(\"\");while(d.lastChild){d.removeChild(d.lastChild);}\ntemplateContentsOwnerTable.set(doc,d);}\nreturn d;}\nfunction extractContent(templateElement){var doc=getTemplateContentsOwner(templateElement.ownerDocument);var df=unwrap(doc.createDocumentFragment());var child;while(child=templateElement.firstChild){df.appendChild(child);}\nreturn df;}\nvar OriginalHTMLTemplateElement=window.HTMLTemplateElement;function HTMLTemplateElement(node){HTMLElement.call(this,node);if(!OriginalHTMLTemplateElement){var content=extractContent(node);contentTable.set(this,wrap(content));}}\nHTMLTemplateElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTemplateElement.prototype,{constructor:HTMLTemplateElement,get content(){if(OriginalHTMLTemplateElement)return wrap(unsafeUnwrap(this).content);return contentTable.get(this);}});if(OriginalHTMLTemplateElement)registerWrapper(OriginalHTMLTemplateElement,HTMLTemplateElement);scope.wrappers.HTMLTemplateElement=HTMLTemplateElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var OriginalHTMLMediaElement=window.HTMLMediaElement;if(!OriginalHTMLMediaElement)return;function HTMLMediaElement(node){HTMLElement.call(this,node);}\nHTMLMediaElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLMediaElement,HTMLMediaElement,document.createElement(\"audio\"));scope.wrappers.HTMLMediaElement=HTMLMediaElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLMediaElement=scope.wrappers.HTMLMediaElement;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var rewrap=scope.rewrap;var OriginalHTMLAudioElement=window.HTMLAudioElement;if(!OriginalHTMLAudioElement)return;function HTMLAudioElement(node){HTMLMediaElement.call(this,node);}\nHTMLAudioElement.prototype=Object.create(HTMLMediaElement.prototype);registerWrapper(OriginalHTMLAudioElement,HTMLAudioElement,document.createElement(\"audio\"));function Audio(src){if(!(this instanceof Audio)){throw new TypeError(\"DOM object constructor cannot be called as a function.\");}\nvar node=unwrap(document.createElement(\"audio\"));HTMLMediaElement.call(this,node);rewrap(node,this);node.setAttribute(\"preload\",\"auto\");if(src!==undefined)node.setAttribute(\"src\",src);}\nAudio.prototype=HTMLAudioElement.prototype;scope.wrappers.HTMLAudioElement=HTMLAudioElement;scope.wrappers.Audio=Audio;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var rewrap=scope.rewrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLOptionElement=window.HTMLOptionElement;function trimText(s){return s.replace(/\\s+/g,\" \").trim();}\nfunction HTMLOptionElement(node){HTMLElement.call(this,node);}\nHTMLOptionElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLOptionElement.prototype,{get text(){return trimText(this.textContent);},set text(value){this.textContent=trimText(String(value));},get form(){return wrap(unwrap(this).form);}});registerWrapper(OriginalHTMLOptionElement,HTMLOptionElement,document.createElement(\"option\"));function Option(text,value,defaultSelected,selected){if(!(this instanceof Option)){throw new TypeError(\"DOM object constructor cannot be called as a function.\");}\nvar node=unwrap(document.createElement(\"option\"));HTMLElement.call(this,node);rewrap(node,this);if(text!==undefined)node.text=text;if(value!==undefined)node.setAttribute(\"value\",value);if(defaultSelected===true)node.setAttribute(\"selected\",\"\");node.selected=selected===true;}\nOption.prototype=HTMLOptionElement.prototype;scope.wrappers.HTMLOptionElement=HTMLOptionElement;scope.wrappers.Option=Option;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLSelectElement=window.HTMLSelectElement;function HTMLSelectElement(node){HTMLElement.call(this,node);}\nHTMLSelectElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLSelectElement.prototype,{add:function(element,before){if(typeof before===\"object\")before=unwrap(before);unwrap(this).add(unwrap(element),before);},remove:function(indexOrNode){if(indexOrNode===undefined){HTMLElement.prototype.remove.call(this);return;}\nif(typeof indexOrNode===\"object\")indexOrNode=unwrap(indexOrNode);unwrap(this).remove(indexOrNode);},get form(){return wrap(unwrap(this).form);}});registerWrapper(OriginalHTMLSelectElement,HTMLSelectElement,document.createElement(\"select\"));scope.wrappers.HTMLSelectElement=HTMLSelectElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrapHTMLCollection=scope.wrapHTMLCollection;var OriginalHTMLTableElement=window.HTMLTableElement;function HTMLTableElement(node){HTMLElement.call(this,node);}\nHTMLTableElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableElement.prototype,{get caption(){return wrap(unwrap(this).caption);},createCaption:function(){return wrap(unwrap(this).createCaption());},get tHead(){return wrap(unwrap(this).tHead);},createTHead:function(){return wrap(unwrap(this).createTHead());},createTFoot:function(){return wrap(unwrap(this).createTFoot());},get tFoot(){return wrap(unwrap(this).tFoot);},get tBodies(){return wrapHTMLCollection(unwrap(this).tBodies);},createTBody:function(){return wrap(unwrap(this).createTBody());},get rows(){return wrapHTMLCollection(unwrap(this).rows);},insertRow:function(index){return wrap(unwrap(this).insertRow(index));}});registerWrapper(OriginalHTMLTableElement,HTMLTableElement,document.createElement(\"table\"));scope.wrappers.HTMLTableElement=HTMLTableElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLTableSectionElement=window.HTMLTableSectionElement;function HTMLTableSectionElement(node){HTMLElement.call(this,node);}\nHTMLTableSectionElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableSectionElement.prototype,{constructor:HTMLTableSectionElement,get rows(){return wrapHTMLCollection(unwrap(this).rows);},insertRow:function(index){return wrap(unwrap(this).insertRow(index));}});registerWrapper(OriginalHTMLTableSectionElement,HTMLTableSectionElement,document.createElement(\"thead\"));scope.wrappers.HTMLTableSectionElement=HTMLTableSectionElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLTableRowElement=window.HTMLTableRowElement;function HTMLTableRowElement(node){HTMLElement.call(this,node);}\nHTMLTableRowElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableRowElement.prototype,{get cells(){return wrapHTMLCollection(unwrap(this).cells);},insertCell:function(index){return wrap(unwrap(this).insertCell(index));}});registerWrapper(OriginalHTMLTableRowElement,HTMLTableRowElement,document.createElement(\"tr\"));scope.wrappers.HTMLTableRowElement=HTMLTableRowElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLContentElement=scope.wrappers.HTMLContentElement;var HTMLElement=scope.wrappers.HTMLElement;var HTMLShadowElement=scope.wrappers.HTMLShadowElement;var HTMLTemplateElement=scope.wrappers.HTMLTemplateElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var OriginalHTMLUnknownElement=window.HTMLUnknownElement;function HTMLUnknownElement(node){switch(node.localName){case\"content\":return new HTMLContentElement(node);case\"shadow\":return new HTMLShadowElement(node);case\"template\":return new HTMLTemplateElement(node);}\nHTMLElement.call(this,node);}\nHTMLUnknownElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLUnknownElement,HTMLUnknownElement);scope.wrappers.HTMLUnknownElement=HTMLUnknownElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var Element=scope.wrappers.Element;var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var defineWrapGetter=scope.defineWrapGetter;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var mixin=scope.mixin;var SVG_NS=\"http://www.w3.org/2000/svg\";var OriginalSVGElement=window.SVGElement;var svgTitleElement=document.createElementNS(SVG_NS,\"title\");if(!(\"classList\"in svgTitleElement)){var descr=Object.getOwnPropertyDescriptor(Element.prototype,\"classList\");Object.defineProperty(HTMLElement.prototype,\"classList\",descr);delete Element.prototype.classList;}\nfunction SVGElement(node){Element.call(this,node);}\nSVGElement.prototype=Object.create(Element.prototype);mixin(SVGElement.prototype,{get ownerSVGElement(){return wrap(unsafeUnwrap(this).ownerSVGElement);}});registerWrapper(OriginalSVGElement,SVGElement,document.createElementNS(SVG_NS,\"title\"));scope.wrappers.SVGElement=SVGElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalSVGUseElement=window.SVGUseElement;var SVG_NS=\"http://www.w3.org/2000/svg\";var gWrapper=wrap(document.createElementNS(SVG_NS,\"g\"));var useElement=document.createElementNS(SVG_NS,\"use\");var SVGGElement=gWrapper.constructor;var parentInterfacePrototype=Object.getPrototypeOf(SVGGElement.prototype);var parentInterface=parentInterfacePrototype.constructor;function SVGUseElement(impl){parentInterface.call(this,impl);}\nSVGUseElement.prototype=Object.create(parentInterfacePrototype);if(\"instanceRoot\"in useElement){mixin(SVGUseElement.prototype,{get instanceRoot(){return wrap(unwrap(this).instanceRoot);},get animatedInstanceRoot(){return wrap(unwrap(this).animatedInstanceRoot);}});}\nregisterWrapper(OriginalSVGUseElement,SVGUseElement,useElement);scope.wrappers.SVGUseElement=SVGUseElement;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var EventTarget=scope.wrappers.EventTarget;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var OriginalSVGElementInstance=window.SVGElementInstance;if(!OriginalSVGElementInstance)return;function SVGElementInstance(impl){EventTarget.call(this,impl);}\nSVGElementInstance.prototype=Object.create(EventTarget.prototype);mixin(SVGElementInstance.prototype,{get correspondingElement(){return wrap(unsafeUnwrap(this).correspondingElement);},get correspondingUseElement(){return wrap(unsafeUnwrap(this).correspondingUseElement);},get parentNode(){return wrap(unsafeUnwrap(this).parentNode);},get childNodes(){throw new Error(\"Not implemented\");},get firstChild(){return wrap(unsafeUnwrap(this).firstChild);},get lastChild(){return wrap(unsafeUnwrap(this).lastChild);},get previousSibling(){return wrap(unsafeUnwrap(this).previousSibling);},get nextSibling(){return wrap(unsafeUnwrap(this).nextSibling);}});registerWrapper(OriginalSVGElementInstance,SVGElementInstance);scope.wrappers.SVGElementInstance=SVGElementInstance;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalCanvasRenderingContext2D=window.CanvasRenderingContext2D;function CanvasRenderingContext2D(impl){setWrapper(impl,this);}\nmixin(CanvasRenderingContext2D.prototype,{get canvas(){return wrap(unsafeUnwrap(this).canvas);},drawImage:function(){arguments[0]=unwrapIfNeeded(arguments[0]);unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this),arguments);},createPattern:function(){arguments[0]=unwrap(arguments[0]);return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this),arguments);}});registerWrapper(OriginalCanvasRenderingContext2D,CanvasRenderingContext2D,document.createElement(\"canvas\").getContext(\"2d\"));scope.wrappers.CanvasRenderingContext2D=CanvasRenderingContext2D;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var addForwardingProperties=scope.addForwardingProperties;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalWebGLRenderingContext=window.WebGLRenderingContext;if(!OriginalWebGLRenderingContext)return;function WebGLRenderingContext(impl){setWrapper(impl,this);}\nmixin(WebGLRenderingContext.prototype,{get canvas(){return wrap(unsafeUnwrap(this).canvas);},texImage2D:function(){arguments[5]=unwrapIfNeeded(arguments[5]);unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this),arguments);},texSubImage2D:function(){arguments[6]=unwrapIfNeeded(arguments[6]);unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this),arguments);}});var OriginalWebGLRenderingContextBase=Object.getPrototypeOf(OriginalWebGLRenderingContext.prototype);if(OriginalWebGLRenderingContextBase!==Object.prototype){addForwardingProperties(OriginalWebGLRenderingContextBase,WebGLRenderingContext.prototype);}\nvar instanceProperties=/WebKit/.test(navigator.userAgent)?{drawingBufferHeight:null,drawingBufferWidth:null}:{};registerWrapper(OriginalWebGLRenderingContext,WebGLRenderingContext,instanceProperties);scope.wrappers.WebGLRenderingContext=WebGLRenderingContext;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var Node=scope.wrappers.Node;var GetElementsByInterface=scope.GetElementsByInterface;var NonElementParentNodeInterface=scope.NonElementParentNodeInterface;var ParentNodeInterface=scope.ParentNodeInterface;var SelectorsInterface=scope.SelectorsInterface;var mixin=scope.mixin;var registerObject=scope.registerObject;var registerWrapper=scope.registerWrapper;var OriginalDocumentFragment=window.DocumentFragment;function DocumentFragment(node){Node.call(this,node);}\nDocumentFragment.prototype=Object.create(Node.prototype);mixin(DocumentFragment.prototype,ParentNodeInterface);mixin(DocumentFragment.prototype,SelectorsInterface);mixin(DocumentFragment.prototype,GetElementsByInterface);mixin(DocumentFragment.prototype,NonElementParentNodeInterface);registerWrapper(OriginalDocumentFragment,DocumentFragment,document.createDocumentFragment());scope.wrappers.DocumentFragment=DocumentFragment;var Comment=registerObject(document.createComment(\"\"));scope.wrappers.Comment=Comment;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var DocumentFragment=scope.wrappers.DocumentFragment;var TreeScope=scope.TreeScope;var elementFromPoint=scope.elementFromPoint;var getInnerHTML=scope.getInnerHTML;var getTreeScope=scope.getTreeScope;var mixin=scope.mixin;var rewrap=scope.rewrap;var setInnerHTML=scope.setInnerHTML;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var shadowHostTable=new WeakMap();var nextOlderShadowTreeTable=new WeakMap();function ShadowRoot(hostWrapper){var node=unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment());DocumentFragment.call(this,node);rewrap(node,this);var oldShadowRoot=hostWrapper.shadowRoot;nextOlderShadowTreeTable.set(this,oldShadowRoot);this.treeScope_=new TreeScope(this,getTreeScope(oldShadowRoot||hostWrapper));shadowHostTable.set(this,hostWrapper);}\nShadowRoot.prototype=Object.create(DocumentFragment.prototype);mixin(ShadowRoot.prototype,{constructor:ShadowRoot,get innerHTML(){return getInnerHTML(this);},set innerHTML(value){setInnerHTML(this,value);this.invalidateShadowRenderer();},get olderShadowRoot(){return nextOlderShadowTreeTable.get(this)||null;},get host(){return shadowHostTable.get(this)||null;},invalidateShadowRenderer:function(){return shadowHostTable.get(this).invalidateShadowRenderer();},elementFromPoint:function(x,y){return elementFromPoint(this,this.ownerDocument,x,y);},getSelection:function(){return document.getSelection();},get activeElement(){var unwrappedActiveElement=unwrap(this).ownerDocument.activeElement;if(!unwrappedActiveElement||!unwrappedActiveElement.nodeType)return null;var activeElement=wrap(unwrappedActiveElement);while(!this.contains(activeElement)){while(activeElement.parentNode){activeElement=activeElement.parentNode;}\nif(activeElement.host){activeElement=activeElement.host;}else{return null;}}\nreturn activeElement;}});scope.wrappers.ShadowRoot=ShadowRoot;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var getTreeScope=scope.getTreeScope;var OriginalRange=window.Range;var ShadowRoot=scope.wrappers.ShadowRoot;function getHost(node){var root=getTreeScope(node).root;if(root instanceof ShadowRoot){return root.host;}\nreturn null;}\nfunction hostNodeToShadowNode(refNode,offset){if(refNode.shadowRoot){offset=Math.min(refNode.childNodes.length-1,offset);var child=refNode.childNodes[offset];if(child){var insertionPoint=scope.getDestinationInsertionPoints(child);if(insertionPoint.length>0){var parentNode=insertionPoint[0].parentNode;if(parentNode.nodeType==Node.ELEMENT_NODE){refNode=parentNode;}}}}\nreturn refNode;}\nfunction shadowNodeToHostNode(node){node=wrap(node);return getHost(node)||node;}\nfunction Range(impl){setWrapper(impl,this);}\nRange.prototype={get startContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).startContainer);},get endContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).endContainer);},get commonAncestorContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer);},setStart:function(refNode,offset){refNode=hostNodeToShadowNode(refNode,offset);unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode),offset);},setEnd:function(refNode,offset){refNode=hostNodeToShadowNode(refNode,offset);unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode),offset);},setStartBefore:function(refNode){unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode));},setStartAfter:function(refNode){unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode));},setEndBefore:function(refNode){unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode));},setEndAfter:function(refNode){unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode));},selectNode:function(refNode){unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode));},selectNodeContents:function(refNode){unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode));},compareBoundaryPoints:function(how,sourceRange){return unsafeUnwrap(this).compareBoundaryPoints(how,unwrap(sourceRange));},extractContents:function(){return wrap(unsafeUnwrap(this).extractContents());},cloneContents:function(){return wrap(unsafeUnwrap(this).cloneContents());},insertNode:function(node){unsafeUnwrap(this).insertNode(unwrapIfNeeded(node));},surroundContents:function(newParent){unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent));},cloneRange:function(){return wrap(unsafeUnwrap(this).cloneRange());},isPointInRange:function(node,offset){return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node),offset);},comparePoint:function(node,offset){return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node),offset);},intersectsNode:function(node){return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node));},toString:function(){return unsafeUnwrap(this).toString();}};if(OriginalRange.prototype.createContextualFragment){Range.prototype.createContextualFragment=function(html){return wrap(unsafeUnwrap(this).createContextualFragment(html));};}\nregisterWrapper(window.Range,Range,document.createRange());scope.wrappers.Range=Range;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var Element=scope.wrappers.Element;var HTMLContentElement=scope.wrappers.HTMLContentElement;var HTMLShadowElement=scope.wrappers.HTMLShadowElement;var Node=scope.wrappers.Node;var ShadowRoot=scope.wrappers.ShadowRoot;var assert=scope.assert;var getTreeScope=scope.getTreeScope;var mixin=scope.mixin;var oneOf=scope.oneOf;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var ArraySplice=scope.ArraySplice;function updateWrapperUpAndSideways(wrapper){wrapper.previousSibling_=wrapper.previousSibling;wrapper.nextSibling_=wrapper.nextSibling;wrapper.parentNode_=wrapper.parentNode;}\nfunction updateWrapperDown(wrapper){wrapper.firstChild_=wrapper.firstChild;wrapper.lastChild_=wrapper.lastChild;}\nfunction updateAllChildNodes(parentNodeWrapper){assert(parentNodeWrapper instanceof Node);for(var childWrapper=parentNodeWrapper.firstChild;childWrapper;childWrapper=childWrapper.nextSibling){updateWrapperUpAndSideways(childWrapper);}\nupdateWrapperDown(parentNodeWrapper);}\nfunction insertBefore(parentNodeWrapper,newChildWrapper,refChildWrapper){var parentNode=unwrap(parentNodeWrapper);var newChild=unwrap(newChildWrapper);var refChild=refChildWrapper?unwrap(refChildWrapper):null;remove(newChildWrapper);updateWrapperUpAndSideways(newChildWrapper);if(!refChildWrapper){parentNodeWrapper.lastChild_=parentNodeWrapper.lastChild;if(parentNodeWrapper.lastChild===parentNodeWrapper.firstChild)parentNodeWrapper.firstChild_=parentNodeWrapper.firstChild;var lastChildWrapper=wrap(parentNode.lastChild);if(lastChildWrapper)lastChildWrapper.nextSibling_=lastChildWrapper.nextSibling;}else{if(parentNodeWrapper.firstChild===refChildWrapper)parentNodeWrapper.firstChild_=refChildWrapper;refChildWrapper.previousSibling_=refChildWrapper.previousSibling;}\nscope.originalInsertBefore.call(parentNode,newChild,refChild);}\nfunction remove(nodeWrapper){var node=unwrap(nodeWrapper);var parentNode=node.parentNode;if(!parentNode)return;var parentNodeWrapper=wrap(parentNode);updateWrapperUpAndSideways(nodeWrapper);if(nodeWrapper.previousSibling)nodeWrapper.previousSibling.nextSibling_=nodeWrapper;if(nodeWrapper.nextSibling)nodeWrapper.nextSibling.previousSibling_=nodeWrapper;if(parentNodeWrapper.lastChild===nodeWrapper)parentNodeWrapper.lastChild_=nodeWrapper;if(parentNodeWrapper.firstChild===nodeWrapper)parentNodeWrapper.firstChild_=nodeWrapper;scope.originalRemoveChild.call(parentNode,node);}\nvar distributedNodesTable=new WeakMap();var destinationInsertionPointsTable=new WeakMap();var rendererForHostTable=new WeakMap();function resetDistributedNodes(insertionPoint){distributedNodesTable.set(insertionPoint,[]);}\nfunction getDistributedNodes(insertionPoint){var rv=distributedNodesTable.get(insertionPoint);if(!rv)distributedNodesTable.set(insertionPoint,rv=[]);return rv;}\nfunction getChildNodesSnapshot(node){var result=[],i=0;for(var child=node.firstChild;child;child=child.nextSibling){result[i++]=child;}\nreturn result;}\nvar request=oneOf(window,[\"requestAnimationFrame\",\"mozRequestAnimationFrame\",\"webkitRequestAnimationFrame\",\"setTimeout\"]);var pendingDirtyRenderers=[];var renderTimer;function renderAllPending(){for(var i=0;i<pendingDirtyRenderers.length;i++){var renderer=pendingDirtyRenderers[i];var parentRenderer=renderer.parentRenderer;if(parentRenderer&&parentRenderer.dirty)continue;renderer.render();}\npendingDirtyRenderers=[];}\nfunction handleRequestAnimationFrame(){renderTimer=null;renderAllPending();}\nfunction getRendererForHost(host){var renderer=rendererForHostTable.get(host);if(!renderer){renderer=new ShadowRenderer(host);rendererForHostTable.set(host,renderer);}\nreturn renderer;}\nfunction getShadowRootAncestor(node){var root=getTreeScope(node).root;if(root instanceof ShadowRoot)return root;return null;}\nfunction getRendererForShadowRoot(shadowRoot){return getRendererForHost(shadowRoot.host);}\nvar spliceDiff=new ArraySplice();spliceDiff.equals=function(renderNode,rawNode){return unwrap(renderNode.node)===rawNode;};function RenderNode(node){this.skip=false;this.node=node;this.childNodes=[];}\nRenderNode.prototype={append:function(node){var rv=new RenderNode(node);this.childNodes.push(rv);return rv;},sync:function(opt_added){if(this.skip)return;var nodeWrapper=this.node;var newChildren=this.childNodes;var oldChildren=getChildNodesSnapshot(unwrap(nodeWrapper));var added=opt_added||new WeakMap();var splices=spliceDiff.calculateSplices(newChildren,oldChildren);var newIndex=0,oldIndex=0;var lastIndex=0;for(var i=0;i<splices.length;i++){var splice=splices[i];for(;lastIndex<splice.index;lastIndex++){oldIndex++;newChildren[newIndex++].sync(added);}\nvar removedCount=splice.removed.length;for(var j=0;j<removedCount;j++){var wrapper=wrap(oldChildren[oldIndex++]);if(!added.get(wrapper))remove(wrapper);}\nvar addedCount=splice.addedCount;var refNode=oldChildren[oldIndex]&&wrap(oldChildren[oldIndex]);for(var j=0;j<addedCount;j++){var newChildRenderNode=newChildren[newIndex++];var newChildWrapper=newChildRenderNode.node;insertBefore(nodeWrapper,newChildWrapper,refNode);added.set(newChildWrapper,true);newChildRenderNode.sync(added);}\nlastIndex+=addedCount;}\nfor(var i=lastIndex;i<newChildren.length;i++){newChildren[i].sync(added);}}};function ShadowRenderer(host){this.host=host;this.dirty=false;this.invalidateAttributes();this.associateNode(host);}\nShadowRenderer.prototype={render:function(opt_renderNode){if(!this.dirty)return;this.invalidateAttributes();var host=this.host;this.distribution(host);var renderNode=opt_renderNode||new RenderNode(host);this.buildRenderTree(renderNode,host);var topMostRenderer=!opt_renderNode;if(topMostRenderer)renderNode.sync();this.dirty=false;},get parentRenderer(){return getTreeScope(this.host).renderer;},invalidate:function(){if(!this.dirty){this.dirty=true;var parentRenderer=this.parentRenderer;if(parentRenderer)parentRenderer.invalidate();pendingDirtyRenderers.push(this);if(renderTimer)return;renderTimer=window[request](handleRequestAnimationFrame,0);}},distribution:function(root){this.resetAllSubtrees(root);this.distributionResolution(root);},resetAll:function(node){if(isInsertionPoint(node))resetDistributedNodes(node);else resetDestinationInsertionPoints(node);this.resetAllSubtrees(node);},resetAllSubtrees:function(node){for(var child=node.firstChild;child;child=child.nextSibling){this.resetAll(child);}\nif(node.shadowRoot)this.resetAll(node.shadowRoot);if(node.olderShadowRoot)this.resetAll(node.olderShadowRoot);},distributionResolution:function(node){if(isShadowHost(node)){var shadowHost=node;var pool=poolPopulation(shadowHost);var shadowTrees=getShadowTrees(shadowHost);for(var i=0;i<shadowTrees.length;i++){this.poolDistribution(shadowTrees[i],pool);}\nfor(var i=shadowTrees.length-1;i>=0;i--){var shadowTree=shadowTrees[i];var shadow=getShadowInsertionPoint(shadowTree);if(shadow){var olderShadowRoot=shadowTree.olderShadowRoot;if(olderShadowRoot){pool=poolPopulation(olderShadowRoot);}\nfor(var j=0;j<pool.length;j++){destributeNodeInto(pool[j],shadow);}}\nthis.distributionResolution(shadowTree);}}\nfor(var child=node.firstChild;child;child=child.nextSibling){this.distributionResolution(child);}},poolDistribution:function(node,pool){if(node instanceof HTMLShadowElement)return;if(node instanceof HTMLContentElement){var content=node;this.updateDependentAttributes(content.getAttribute(\"select\"));var anyDistributed=false;for(var i=0;i<pool.length;i++){var node=pool[i];if(!node)continue;if(matches(node,content)){destributeNodeInto(node,content);pool[i]=undefined;anyDistributed=true;}}\nif(!anyDistributed){for(var child=content.firstChild;child;child=child.nextSibling){destributeNodeInto(child,content);}}\nreturn;}\nfor(var child=node.firstChild;child;child=child.nextSibling){this.poolDistribution(child,pool);}},buildRenderTree:function(renderNode,node){var children=this.compose(node);for(var i=0;i<children.length;i++){var child=children[i];var childRenderNode=renderNode.append(child);this.buildRenderTree(childRenderNode,child);}\nif(isShadowHost(node)){var renderer=getRendererForHost(node);renderer.dirty=false;}},compose:function(node){var children=[];var p=node.shadowRoot||node;for(var child=p.firstChild;child;child=child.nextSibling){if(isInsertionPoint(child)){this.associateNode(p);var distributedNodes=getDistributedNodes(child);for(var j=0;j<distributedNodes.length;j++){var distributedNode=distributedNodes[j];if(isFinalDestination(child,distributedNode))children.push(distributedNode);}}else{children.push(child);}}\nreturn children;},invalidateAttributes:function(){this.attributes=Object.create(null);},updateDependentAttributes:function(selector){if(!selector)return;var attributes=this.attributes;if(/\\.\\w+/.test(selector))attributes[\"class\"]=true;if(/#\\w+/.test(selector))attributes[\"id\"]=true;selector.replace(/\\[\\s*([^\\s=\\|~\\]]+)/g,function(_,name){attributes[name]=true;});},dependsOnAttribute:function(name){return this.attributes[name];},associateNode:function(node){unsafeUnwrap(node).polymerShadowRenderer_=this;}};function poolPopulation(node){var pool=[];for(var child=node.firstChild;child;child=child.nextSibling){if(isInsertionPoint(child)){pool.push.apply(pool,getDistributedNodes(child));}else{pool.push(child);}}\nreturn pool;}\nfunction getShadowInsertionPoint(node){if(node instanceof HTMLShadowElement)return node;if(node instanceof HTMLContentElement)return null;for(var child=node.firstChild;child;child=child.nextSibling){var res=getShadowInsertionPoint(child);if(res)return res;}\nreturn null;}\nfunction destributeNodeInto(child,insertionPoint){getDistributedNodes(insertionPoint).push(child);var points=destinationInsertionPointsTable.get(child);if(!points)destinationInsertionPointsTable.set(child,[insertionPoint]);else points.push(insertionPoint);}\nfunction getDestinationInsertionPoints(node){return destinationInsertionPointsTable.get(node);}\nfunction resetDestinationInsertionPoints(node){destinationInsertionPointsTable.set(node,undefined);}\nvar selectorStartCharRe=/^(:not\\()?[*.#[a-zA-Z_|]/;function matches(node,contentElement){var select=contentElement.getAttribute(\"select\");if(!select)return true;select=select.trim();if(!select)return true;if(!(node instanceof Element))return false;if(!selectorStartCharRe.test(select))return false;try{return node.matches(select);}catch(ex){return false;}}\nfunction isFinalDestination(insertionPoint,node){var points=getDestinationInsertionPoints(node);return points&&points[points.length-1]===insertionPoint;}\nfunction isInsertionPoint(node){return node instanceof HTMLContentElement||node instanceof HTMLShadowElement;}\nfunction isShadowHost(shadowHost){return shadowHost.shadowRoot;}\nfunction getShadowTrees(host){var trees=[];for(var tree=host.shadowRoot;tree;tree=tree.olderShadowRoot){trees.push(tree);}\nreturn trees;}\nfunction render(host){new ShadowRenderer(host).render();}\nNode.prototype.invalidateShadowRenderer=function(force){var renderer=unsafeUnwrap(this).polymerShadowRenderer_;if(renderer){renderer.invalidate();return true;}\nreturn false;};HTMLContentElement.prototype.getDistributedNodes=HTMLShadowElement.prototype.getDistributedNodes=function(){renderAllPending();return getDistributedNodes(this);};Element.prototype.getDestinationInsertionPoints=function(){renderAllPending();return getDestinationInsertionPoints(this)||[];};HTMLContentElement.prototype.nodeIsInserted_=HTMLShadowElement.prototype.nodeIsInserted_=function(){this.invalidateShadowRenderer();var shadowRoot=getShadowRootAncestor(this);var renderer;if(shadowRoot)renderer=getRendererForShadowRoot(shadowRoot);unsafeUnwrap(this).polymerShadowRenderer_=renderer;if(renderer)renderer.invalidate();};scope.getRendererForHost=getRendererForHost;scope.getShadowTrees=getShadowTrees;scope.renderAllPending=renderAllPending;scope.getDestinationInsertionPoints=getDestinationInsertionPoints;scope.visual={insertBefore:insertBefore,remove:remove};})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var HTMLElement=scope.wrappers.HTMLElement;var assert=scope.assert;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var elementsWithFormProperty=[\"HTMLButtonElement\",\"HTMLFieldSetElement\",\"HTMLInputElement\",\"HTMLKeygenElement\",\"HTMLLabelElement\",\"HTMLLegendElement\",\"HTMLObjectElement\",\"HTMLOutputElement\",\"HTMLTextAreaElement\"];function createWrapperConstructor(name){if(!window[name])return;assert(!scope.wrappers[name]);var GeneratedWrapper=function(node){HTMLElement.call(this,node);};GeneratedWrapper.prototype=Object.create(HTMLElement.prototype);mixin(GeneratedWrapper.prototype,{get form(){return wrap(unwrap(this).form);}});registerWrapper(window[name],GeneratedWrapper,document.createElement(name.slice(4,-7)));scope.wrappers[name]=GeneratedWrapper;}\nelementsWithFormProperty.forEach(createWrapperConstructor);})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalSelection=window.Selection;function Selection(impl){setWrapper(impl,this);}\nSelection.prototype={get anchorNode(){return wrap(unsafeUnwrap(this).anchorNode);},get focusNode(){return wrap(unsafeUnwrap(this).focusNode);},addRange:function(range){unsafeUnwrap(this).addRange(unwrapIfNeeded(range));},collapse:function(node,index){unsafeUnwrap(this).collapse(unwrapIfNeeded(node),index);},containsNode:function(node,allowPartial){return unsafeUnwrap(this).containsNode(unwrapIfNeeded(node),allowPartial);},getRangeAt:function(index){return wrap(unsafeUnwrap(this).getRangeAt(index));},removeRange:function(range){unsafeUnwrap(this).removeRange(unwrap(range));},selectAllChildren:function(node){unsafeUnwrap(this).selectAllChildren(node instanceof ShadowRoot?unsafeUnwrap(node.host):unwrapIfNeeded(node));},toString:function(){return unsafeUnwrap(this).toString();}};if(OriginalSelection.prototype.extend){Selection.prototype.extend=function(node,offset){unsafeUnwrap(this).extend(unwrapIfNeeded(node),offset);};}\nregisterWrapper(window.Selection,Selection,window.getSelection());scope.wrappers.Selection=Selection;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalTreeWalker=window.TreeWalker;function TreeWalker(impl){setWrapper(impl,this);}\nTreeWalker.prototype={get root(){return wrap(unsafeUnwrap(this).root);},get currentNode(){return wrap(unsafeUnwrap(this).currentNode);},set currentNode(node){unsafeUnwrap(this).currentNode=unwrapIfNeeded(node);},get filter(){return unsafeUnwrap(this).filter;},parentNode:function(){return wrap(unsafeUnwrap(this).parentNode());},firstChild:function(){return wrap(unsafeUnwrap(this).firstChild());},lastChild:function(){return wrap(unsafeUnwrap(this).lastChild());},previousSibling:function(){return wrap(unsafeUnwrap(this).previousSibling());},previousNode:function(){return wrap(unsafeUnwrap(this).previousNode());},nextNode:function(){return wrap(unsafeUnwrap(this).nextNode());}};registerWrapper(OriginalTreeWalker,TreeWalker);scope.wrappers.TreeWalker=TreeWalker;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var GetElementsByInterface=scope.GetElementsByInterface;var Node=scope.wrappers.Node;var ParentNodeInterface=scope.ParentNodeInterface;var NonElementParentNodeInterface=scope.NonElementParentNodeInterface;var Selection=scope.wrappers.Selection;var SelectorsInterface=scope.SelectorsInterface;var ShadowRoot=scope.wrappers.ShadowRoot;var TreeScope=scope.TreeScope;var cloneNode=scope.cloneNode;var defineGetter=scope.defineGetter;var defineWrapGetter=scope.defineWrapGetter;var elementFromPoint=scope.elementFromPoint;var forwardMethodsToWrapper=scope.forwardMethodsToWrapper;var matchesNames=scope.matchesNames;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var renderAllPending=scope.renderAllPending;var rewrap=scope.rewrap;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrapEventTargetMethods=scope.wrapEventTargetMethods;var wrapNodeList=scope.wrapNodeList;var implementationTable=new WeakMap();function Document(node){Node.call(this,node);this.treeScope_=new TreeScope(this,null);}\nDocument.prototype=Object.create(Node.prototype);defineWrapGetter(Document,\"documentElement\");defineWrapGetter(Document,\"body\");defineWrapGetter(Document,\"head\");defineGetter(Document,\"activeElement\",function(){var unwrappedActiveElement=unwrap(this).activeElement;if(!unwrappedActiveElement||!unwrappedActiveElement.nodeType)return null;var activeElement=wrap(unwrappedActiveElement);while(!this.contains(activeElement)){while(activeElement.parentNode){activeElement=activeElement.parentNode;}\nif(activeElement.host){activeElement=activeElement.host;}else{return null;}}\nreturn activeElement;});function wrapMethod(name){var original=document[name];Document.prototype[name]=function(){return wrap(original.apply(unsafeUnwrap(this),arguments));};}\n[\"createComment\",\"createDocumentFragment\",\"createElement\",\"createElementNS\",\"createEvent\",\"createEventNS\",\"createRange\",\"createTextNode\"].forEach(wrapMethod);var originalAdoptNode=document.adoptNode;function adoptNodeNoRemove(node,doc){originalAdoptNode.call(unsafeUnwrap(doc),unwrap(node));adoptSubtree(node,doc);}\nfunction adoptSubtree(node,doc){if(node.shadowRoot)doc.adoptNode(node.shadowRoot);if(node instanceof ShadowRoot)adoptOlderShadowRoots(node,doc);for(var child=node.firstChild;child;child=child.nextSibling){adoptSubtree(child,doc);}}\nfunction adoptOlderShadowRoots(shadowRoot,doc){var oldShadowRoot=shadowRoot.olderShadowRoot;if(oldShadowRoot)doc.adoptNode(oldShadowRoot);}\nvar originalGetSelection=document.getSelection;mixin(Document.prototype,{adoptNode:function(node){if(node.parentNode)node.parentNode.removeChild(node);adoptNodeNoRemove(node,this);return node;},elementFromPoint:function(x,y){return elementFromPoint(this,this,x,y);},importNode:function(node,deep){return cloneNode(node,deep,unsafeUnwrap(this));},getSelection:function(){renderAllPending();return new Selection(originalGetSelection.call(unwrap(this)));},getElementsByName:function(name){return SelectorsInterface.querySelectorAll.call(this,\"[name=\"+JSON.stringify(String(name))+\"]\");}});var originalCreateTreeWalker=document.createTreeWalker;var TreeWalkerWrapper=scope.wrappers.TreeWalker;Document.prototype.createTreeWalker=function(root,whatToShow,filter,expandEntityReferences){var newFilter=null;if(filter){if(filter.acceptNode&&typeof filter.acceptNode===\"function\"){newFilter={acceptNode:function(node){return filter.acceptNode(wrap(node));}};}else if(typeof filter===\"function\"){newFilter=function(node){return filter(wrap(node));};}}\nreturn new TreeWalkerWrapper(originalCreateTreeWalker.call(unwrap(this),unwrap(root),whatToShow,newFilter,expandEntityReferences));};if(document.registerElement){var originalRegisterElement=document.registerElement;Document.prototype.registerElement=function(tagName,object){var prototype,extendsOption;if(object!==undefined){prototype=object.prototype;extendsOption=object.extends;}\nif(!prototype)prototype=Object.create(HTMLElement.prototype);if(scope.nativePrototypeTable.get(prototype)){throw new Error(\"NotSupportedError\");}\nvar proto=Object.getPrototypeOf(prototype);var nativePrototype;var prototypes=[];while(proto){nativePrototype=scope.nativePrototypeTable.get(proto);if(nativePrototype)break;prototypes.push(proto);proto=Object.getPrototypeOf(proto);}\nif(!nativePrototype){throw new Error(\"NotSupportedError\");}\nvar newPrototype=Object.create(nativePrototype);for(var i=prototypes.length-1;i>=0;i--){newPrototype=Object.create(newPrototype);}\n[\"createdCallback\",\"attachedCallback\",\"detachedCallback\",\"attributeChangedCallback\"].forEach(function(name){var f=prototype[name];if(!f)return;newPrototype[name]=function(){if(!(wrap(this)instanceof CustomElementConstructor)){rewrap(this);}\nf.apply(wrap(this),arguments);};});var p={prototype:newPrototype};if(extendsOption)p.extends=extendsOption;function CustomElementConstructor(node){if(!node){if(extendsOption){return document.createElement(extendsOption,tagName);}else{return document.createElement(tagName);}}\nsetWrapper(node,this);}\nCustomElementConstructor.prototype=prototype;CustomElementConstructor.prototype.constructor=CustomElementConstructor;scope.constructorTable.set(newPrototype,CustomElementConstructor);scope.nativePrototypeTable.set(prototype,newPrototype);var nativeConstructor=originalRegisterElement.call(unwrap(this),tagName,p);return CustomElementConstructor;};forwardMethodsToWrapper([window.HTMLDocument||window.Document],[\"registerElement\"]);}\nforwardMethodsToWrapper([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement,window.HTMLHtmlElement],[\"appendChild\",\"compareDocumentPosition\",\"contains\",\"getElementsByClassName\",\"getElementsByTagName\",\"getElementsByTagNameNS\",\"insertBefore\",\"querySelector\",\"querySelectorAll\",\"removeChild\",\"replaceChild\"]);forwardMethodsToWrapper([window.HTMLBodyElement,window.HTMLHeadElement,window.HTMLHtmlElement],matchesNames);forwardMethodsToWrapper([window.HTMLDocument||window.Document],[\"adoptNode\",\"importNode\",\"contains\",\"createComment\",\"createDocumentFragment\",\"createElement\",\"createElementNS\",\"createEvent\",\"createEventNS\",\"createRange\",\"createTextNode\",\"createTreeWalker\",\"elementFromPoint\",\"getElementById\",\"getElementsByName\",\"getSelection\"]);mixin(Document.prototype,GetElementsByInterface);mixin(Document.prototype,ParentNodeInterface);mixin(Document.prototype,SelectorsInterface);mixin(Document.prototype,NonElementParentNodeInterface);mixin(Document.prototype,{get implementation(){var implementation=implementationTable.get(this);if(implementation)return implementation;implementation=new DOMImplementation(unwrap(this).implementation);implementationTable.set(this,implementation);return implementation;},get defaultView(){return wrap(unwrap(this).defaultView);}});registerWrapper(window.Document,Document,document.implementation.createHTMLDocument(\"\"));if(window.HTMLDocument)registerWrapper(window.HTMLDocument,Document);wrapEventTargetMethods([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement]);function DOMImplementation(impl){setWrapper(impl,this);}\nvar originalCreateDocument=document.implementation.createDocument;DOMImplementation.prototype.createDocument=function(){arguments[2]=unwrap(arguments[2]);return wrap(originalCreateDocument.apply(unsafeUnwrap(this),arguments));};function wrapImplMethod(constructor,name){var original=document.implementation[name];constructor.prototype[name]=function(){return wrap(original.apply(unsafeUnwrap(this),arguments));};}\nfunction forwardImplMethod(constructor,name){var original=document.implementation[name];constructor.prototype[name]=function(){return original.apply(unsafeUnwrap(this),arguments);};}\nwrapImplMethod(DOMImplementation,\"createDocumentType\");wrapImplMethod(DOMImplementation,\"createHTMLDocument\");forwardImplMethod(DOMImplementation,\"hasFeature\");registerWrapper(window.DOMImplementation,DOMImplementation);forwardMethodsToWrapper([window.DOMImplementation],[\"createDocument\",\"createDocumentType\",\"createHTMLDocument\",\"hasFeature\"]);scope.adoptNodeNoRemove=adoptNodeNoRemove;scope.wrappers.DOMImplementation=DOMImplementation;scope.wrappers.Document=Document;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var EventTarget=scope.wrappers.EventTarget;var Selection=scope.wrappers.Selection;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var renderAllPending=scope.renderAllPending;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalWindow=window.Window;var originalGetComputedStyle=window.getComputedStyle;var originalGetDefaultComputedStyle=window.getDefaultComputedStyle;var originalGetSelection=window.getSelection;function Window(impl){EventTarget.call(this,impl);}\nWindow.prototype=Object.create(EventTarget.prototype);OriginalWindow.prototype.getComputedStyle=function(el,pseudo){return wrap(this||window).getComputedStyle(unwrapIfNeeded(el),pseudo);};if(originalGetDefaultComputedStyle){OriginalWindow.prototype.getDefaultComputedStyle=function(el,pseudo){return wrap(this||window).getDefaultComputedStyle(unwrapIfNeeded(el),pseudo);};}\nOriginalWindow.prototype.getSelection=function(){return wrap(this||window).getSelection();};delete window.getComputedStyle;delete window.getDefaultComputedStyle;delete window.getSelection;[\"addEventListener\",\"removeEventListener\",\"dispatchEvent\"].forEach(function(name){OriginalWindow.prototype[name]=function(){var w=wrap(this||window);return w[name].apply(w,arguments);};delete window[name];});mixin(Window.prototype,{getComputedStyle:function(el,pseudo){renderAllPending();return originalGetComputedStyle.call(unwrap(this),unwrapIfNeeded(el),pseudo);},getSelection:function(){renderAllPending();return new Selection(originalGetSelection.call(unwrap(this)));},get document(){return wrap(unwrap(this).document);}});if(originalGetDefaultComputedStyle){Window.prototype.getDefaultComputedStyle=function(el,pseudo){renderAllPending();return originalGetDefaultComputedStyle.call(unwrap(this),unwrapIfNeeded(el),pseudo);};}\nregisterWrapper(OriginalWindow,Window,window);scope.wrappers.Window=Window;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var unwrap=scope.unwrap;var OriginalDataTransfer=window.DataTransfer||window.Clipboard;var OriginalDataTransferSetDragImage=OriginalDataTransfer.prototype.setDragImage;if(OriginalDataTransferSetDragImage){OriginalDataTransfer.prototype.setDragImage=function(image,x,y){OriginalDataTransferSetDragImage.call(this,unwrap(image),x,y);};}})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unwrap=scope.unwrap;var OriginalFormData=window.FormData;if(!OriginalFormData)return;function FormData(formElement){var impl;if(formElement instanceof OriginalFormData){impl=formElement;}else{impl=new OriginalFormData(formElement&&unwrap(formElement));}\nsetWrapper(impl,this);}\nregisterWrapper(OriginalFormData,FormData,new OriginalFormData());scope.wrappers.FormData=FormData;})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var unwrapIfNeeded=scope.unwrapIfNeeded;var originalSend=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(obj){return originalSend.call(this,unwrapIfNeeded(obj));};})(window.ShadowDOMPolyfill);(function(scope){\"use strict\";var isWrapperFor=scope.isWrapperFor;var elements={a:\"HTMLAnchorElement\",area:\"HTMLAreaElement\",audio:\"HTMLAudioElement\",base:\"HTMLBaseElement\",body:\"HTMLBodyElement\",br:\"HTMLBRElement\",button:\"HTMLButtonElement\",canvas:\"HTMLCanvasElement\",caption:\"HTMLTableCaptionElement\",col:\"HTMLTableColElement\",content:\"HTMLContentElement\",data:\"HTMLDataElement\",datalist:\"HTMLDataListElement\",del:\"HTMLModElement\",dir:\"HTMLDirectoryElement\",div:\"HTMLDivElement\",dl:\"HTMLDListElement\",embed:\"HTMLEmbedElement\",fieldset:\"HTMLFieldSetElement\",font:\"HTMLFontElement\",form:\"HTMLFormElement\",frame:\"HTMLFrameElement\",frameset:\"HTMLFrameSetElement\",h1:\"HTMLHeadingElement\",head:\"HTMLHeadElement\",hr:\"HTMLHRElement\",html:\"HTMLHtmlElement\",iframe:\"HTMLIFrameElement\",img:\"HTMLImageElement\",input:\"HTMLInputElement\",keygen:\"HTMLKeygenElement\",label:\"HTMLLabelElement\",legend:\"HTMLLegendElement\",li:\"HTMLLIElement\",link:\"HTMLLinkElement\",map:\"HTMLMapElement\",marquee:\"HTMLMarqueeElement\",menu:\"HTMLMenuElement\",menuitem:\"HTMLMenuItemElement\",meta:\"HTMLMetaElement\",meter:\"HTMLMeterElement\",object:\"HTMLObjectElement\",ol:\"HTMLOListElement\",optgroup:\"HTMLOptGroupElement\",option:\"HTMLOptionElement\",output:\"HTMLOutputElement\",p:\"HTMLParagraphElement\",param:\"HTMLParamElement\",pre:\"HTMLPreElement\",progress:\"HTMLProgressElement\",q:\"HTMLQuoteElement\",script:\"HTMLScriptElement\",select:\"HTMLSelectElement\",shadow:\"HTMLShadowElement\",source:\"HTMLSourceElement\",span:\"HTMLSpanElement\",style:\"HTMLStyleElement\",table:\"HTMLTableElement\",tbody:\"HTMLTableSectionElement\",template:\"HTMLTemplateElement\",textarea:\"HTMLTextAreaElement\",thead:\"HTMLTableSectionElement\",time:\"HTMLTimeElement\",title:\"HTMLTitleElement\",tr:\"HTMLTableRowElement\",track:\"HTMLTrackElement\",ul:\"HTMLUListElement\",video:\"HTMLVideoElement\"};function overrideConstructor(tagName){var nativeConstructorName=elements[tagName];var nativeConstructor=window[nativeConstructorName];if(!nativeConstructor)return;var element=document.createElement(tagName);var wrapperConstructor=element.constructor;window[nativeConstructorName]=wrapperConstructor;}\nObject.keys(elements).forEach(overrideConstructor);Object.getOwnPropertyNames(scope.wrappers).forEach(function(name){window[name]=scope.wrappers[name];});})(window.ShadowDOMPolyfill);(function(scope){var ShadowCSS={strictStyling:false,registry:{},shimStyling:function(root,name,extendsName){var scopeStyles=this.prepareRoot(root,name,extendsName);var typeExtension=this.isTypeExtension(extendsName);var scopeSelector=this.makeScopeSelector(name,typeExtension);var cssText=stylesToCssText(scopeStyles,true);cssText=this.scopeCssText(cssText,scopeSelector);if(root){root.shimmedStyle=cssText;}\nthis.addCssToDocument(cssText,name);},shimStyle:function(style,selector){return this.shimCssText(style.textContent,selector);},shimCssText:function(cssText,selector){cssText=this.insertDirectives(cssText);return this.scopeCssText(cssText,selector);},makeScopeSelector:function(name,typeExtension){if(name){return typeExtension?\"[is=\"+name+\"]\":name;}\nreturn\"\";},isTypeExtension:function(extendsName){return extendsName&&extendsName.indexOf(\"-\")<0;},prepareRoot:function(root,name,extendsName){var def=this.registerRoot(root,name,extendsName);this.replaceTextInStyles(def.rootStyles,this.insertDirectives);this.removeStyles(root,def.rootStyles);if(this.strictStyling){this.applyScopeToContent(root,name);}\nreturn def.scopeStyles;},removeStyles:function(root,styles){for(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){s.parentNode.removeChild(s);}},registerRoot:function(root,name,extendsName){var def=this.registry[name]={root:root,name:name,extendsName:extendsName};var styles=this.findStyles(root);def.rootStyles=styles;def.scopeStyles=def.rootStyles;var extendee=this.registry[def.extendsName];if(extendee){def.scopeStyles=extendee.scopeStyles.concat(def.scopeStyles);}\nreturn def;},findStyles:function(root){if(!root){return[];}\nvar styles=root.querySelectorAll(\"style\");return Array.prototype.filter.call(styles,function(s){return!s.hasAttribute(NO_SHIM_ATTRIBUTE);});},applyScopeToContent:function(root,name){if(root){Array.prototype.forEach.call(root.querySelectorAll(\"*\"),function(node){node.setAttribute(name,\"\");});Array.prototype.forEach.call(root.querySelectorAll(\"template\"),function(template){this.applyScopeToContent(template.content,name);},this);}},insertDirectives:function(cssText){cssText=this.insertPolyfillDirectivesInCssText(cssText);return this.insertPolyfillRulesInCssText(cssText);},insertPolyfillDirectivesInCssText:function(cssText){cssText=cssText.replace(cssCommentNextSelectorRe,function(match,p1){return p1.slice(0,-2)+\"{\";});return cssText.replace(cssContentNextSelectorRe,function(match,p1){return p1+\" {\";});},insertPolyfillRulesInCssText:function(cssText){cssText=cssText.replace(cssCommentRuleRe,function(match,p1){return p1.slice(0,-1);});return cssText.replace(cssContentRuleRe,function(match,p1,p2,p3){var rule=match.replace(p1,\"\").replace(p2,\"\");return p3+rule;});},scopeCssText:function(cssText,scopeSelector){var unscoped=this.extractUnscopedRulesFromCssText(cssText);cssText=this.insertPolyfillHostInCssText(cssText);cssText=this.convertColonHost(cssText);cssText=this.convertColonHostContext(cssText);cssText=this.convertShadowDOMSelectors(cssText);if(scopeSelector){var self=this,cssText;withCssRules(cssText,function(rules){cssText=self.scopeRules(rules,scopeSelector);});}\ncssText=cssText+\"\\n\"+unscoped;return cssText.trim();},extractUnscopedRulesFromCssText:function(cssText){var r=\"\",m;while(m=cssCommentUnscopedRuleRe.exec(cssText)){r+=m[1].slice(0,-1)+\"\\n\\n\";}\nwhile(m=cssContentUnscopedRuleRe.exec(cssText)){r+=m[0].replace(m[2],\"\").replace(m[1],m[3])+\"\\n\\n\";}\nreturn r;},convertColonHost:function(cssText){return this.convertColonRule(cssText,cssColonHostRe,this.colonHostPartReplacer);},convertColonHostContext:function(cssText){return this.convertColonRule(cssText,cssColonHostContextRe,this.colonHostContextPartReplacer);},convertColonRule:function(cssText,regExp,partReplacer){return cssText.replace(regExp,function(m,p1,p2,p3){p1=polyfillHostNoCombinator;if(p2){var parts=p2.split(\",\"),r=[];for(var i=0,l=parts.length,p;i<l&&(p=parts[i]);i++){p=p.trim();r.push(partReplacer(p1,p,p3));}\nreturn r.join(\",\");}else{return p1+p3;}});},colonHostContextPartReplacer:function(host,part,suffix){if(part.match(polyfillHost)){return this.colonHostPartReplacer(host,part,suffix);}else{return host+part+suffix+\", \"+part+\" \"+host+suffix;}},colonHostPartReplacer:function(host,part,suffix){return host+part.replace(polyfillHost,\"\")+suffix;},convertShadowDOMSelectors:function(cssText){for(var i=0;i<shadowDOMSelectorsRe.length;i++){cssText=cssText.replace(shadowDOMSelectorsRe[i],\" \");}\nreturn cssText;},scopeRules:function(cssRules,scopeSelector){var cssText=\"\";if(cssRules){Array.prototype.forEach.call(cssRules,function(rule){if(rule.selectorText&&(rule.style&&rule.style.cssText!==undefined)){cssText+=this.scopeSelector(rule.selectorText,scopeSelector,this.strictStyling)+\" {\\n\\t\";cssText+=this.propertiesFromRule(rule)+\"\\n}\\n\\n\";}else if(rule.type===CSSRule.MEDIA_RULE){cssText+=\"@media \"+rule.media.mediaText+\" {\\n\";cssText+=this.scopeRules(rule.cssRules,scopeSelector);cssText+=\"\\n}\\n\\n\";}else{try{if(rule.cssText){cssText+=rule.cssText+\"\\n\\n\";}}catch(x){if(rule.type===CSSRule.KEYFRAMES_RULE&&rule.cssRules){cssText+=this.ieSafeCssTextFromKeyFrameRule(rule);}}}},this);}\nreturn cssText;},ieSafeCssTextFromKeyFrameRule:function(rule){var cssText=\"@keyframes \"+rule.name+\" {\";Array.prototype.forEach.call(rule.cssRules,function(rule){cssText+=\" \"+rule.keyText+\" {\"+rule.style.cssText+\"}\";});cssText+=\" }\";return cssText;},scopeSelector:function(selector,scopeSelector,strict){var r=[],parts=selector.split(\",\");parts.forEach(function(p){p=p.trim();if(this.selectorNeedsScoping(p,scopeSelector)){p=strict&&!p.match(polyfillHostNoCombinator)?this.applyStrictSelectorScope(p,scopeSelector):this.applySelectorScope(p,scopeSelector);}\nr.push(p);},this);return r.join(\", \");},selectorNeedsScoping:function(selector,scopeSelector){if(Array.isArray(scopeSelector)){return true;}\nvar re=this.makeScopeMatcher(scopeSelector);return!selector.match(re);},makeScopeMatcher:function(scopeSelector){scopeSelector=scopeSelector.replace(/\\[/g,\"\\\\[\").replace(/\\]/g,\"\\\\]\");return new RegExp(\"^(\"+scopeSelector+\")\"+selectorReSuffix,\"m\");},applySelectorScope:function(selector,selectorScope){return Array.isArray(selectorScope)?this.applySelectorScopeList(selector,selectorScope):this.applySimpleSelectorScope(selector,selectorScope);},applySelectorScopeList:function(selector,scopeSelectorList){var r=[];for(var i=0,s;s=scopeSelectorList[i];i++){r.push(this.applySimpleSelectorScope(selector,s));}\nreturn r.join(\", \");},applySimpleSelectorScope:function(selector,scopeSelector){if(selector.match(polyfillHostRe)){selector=selector.replace(polyfillHostNoCombinator,scopeSelector);return selector.replace(polyfillHostRe,scopeSelector+\" \");}else{return scopeSelector+\" \"+selector;}},applyStrictSelectorScope:function(selector,scopeSelector){scopeSelector=scopeSelector.replace(/\\[is=([^\\]]*)\\]/g,\"$1\");var splits=[\" \",\">\",\"+\",\"~\"],scoped=selector,attrName=\"[\"+scopeSelector+\"]\";splits.forEach(function(sep){var parts=scoped.split(sep);scoped=parts.map(function(p){var t=p.trim().replace(polyfillHostRe,\"\");if(t&&splits.indexOf(t)<0&&t.indexOf(attrName)<0){p=t.replace(/([^:]*)(:*)(.*)/,\"$1\"+attrName+\"$2$3\");}\nreturn p;}).join(sep);});return scoped;},insertPolyfillHostInCssText:function(selector){return selector.replace(colonHostContextRe,polyfillHostContext).replace(colonHostRe,polyfillHost);},propertiesFromRule:function(rule){var cssText=rule.style.cssText;if(rule.style.content&&!rule.style.content.match(/['\"]+|attr/)){cssText=cssText.replace(/content:[^;]*;/g,\"content: '\"+rule.style.content+\"';\");}\nvar style=rule.style;for(var i in style){if(style[i]===\"initial\"){cssText+=i+\": initial; \";}}\nreturn cssText;},replaceTextInStyles:function(styles,action){if(styles&&action){if(!(styles instanceof Array)){styles=[styles];}\nArray.prototype.forEach.call(styles,function(s){s.textContent=action.call(this,s.textContent);},this);}},addCssToDocument:function(cssText,name){if(cssText.match(\"@import\")){addOwnSheet(cssText,name);}else{addCssToDocument(cssText);}}};var selectorRe=/([^{]*)({[\\s\\S]*?})/gim,cssCommentRe=/\\/\\*[^*]*\\*+([^\\/*][^*]*\\*+)*\\//gim,cssCommentNextSelectorRe=/\\/\\*\\s*@polyfill ([^*]*\\*+([^\\/*][^*]*\\*+)*\\/)([^{]*?){/gim,cssContentNextSelectorRe=/polyfill-next-selector[^}]*content\\:[\\s]*?['\"](.*?)['\"][;\\s]*}([^{]*?){/gim,cssCommentRuleRe=/\\/\\*\\s@polyfill-rule([^*]*\\*+([^\\/*][^*]*\\*+)*)\\//gim,cssContentRuleRe=/(polyfill-rule)[^}]*(content\\:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim,cssCommentUnscopedRuleRe=/\\/\\*\\s@polyfill-unscoped-rule([^*]*\\*+([^\\/*][^*]*\\*+)*)\\//gim,cssContentUnscopedRuleRe=/(polyfill-unscoped-rule)[^}]*(content\\:[\\s]*['\"](.*?)['\"])[;\\s]*[^}]*}/gim,cssPseudoRe=/::(x-[^\\s{,(]*)/gim,cssPartRe=/::part\\(([^)]*)\\)/gim,polyfillHost=\"-shadowcsshost\",polyfillHostContext=\"-shadowcsscontext\",parenSuffix=\")(?:\\\\((\"+\"(?:\\\\([^)(]*\\\\)|[^)(]*)+?\"+\")\\\\))?([^,{]*)\";var cssColonHostRe=new RegExp(\"(\"+polyfillHost+parenSuffix,\"gim\"),cssColonHostContextRe=new RegExp(\"(\"+polyfillHostContext+parenSuffix,\"gim\"),selectorReSuffix=\"([>\\\\s~+[.,{:][\\\\s\\\\S]*)?$\",colonHostRe=/\\:host/gim,colonHostContextRe=/\\:host-context/gim,polyfillHostNoCombinator=polyfillHost+\"-no-combinator\",polyfillHostRe=new RegExp(polyfillHost,\"gim\"),polyfillHostContextRe=new RegExp(polyfillHostContext,\"gim\"),shadowDOMSelectorsRe=[/>>>/g,/::shadow/g,/::content/g,/\\/deep\\//g,/\\/shadow\\//g,/\\/shadow-deep\\//g,/\\^\\^/g,/\\^(?!=)/g];function stylesToCssText(styles,preserveComments){var cssText=\"\";Array.prototype.forEach.call(styles,function(s){cssText+=s.textContent+\"\\n\\n\";});if(!preserveComments){cssText=cssText.replace(cssCommentRe,\"\");}\nreturn cssText;}\nfunction cssTextToStyle(cssText){var style=document.createElement(\"style\");style.textContent=cssText;return style;}\nfunction cssToRules(cssText){var style=cssTextToStyle(cssText);document.head.appendChild(style);var rules=[];if(style.sheet){try{rules=style.sheet.cssRules;}catch(e){}}else{console.warn(\"sheet not found\",style);}\nstyle.parentNode.removeChild(style);return rules;}\nvar frame=document.createElement(\"iframe\");frame.style.display=\"none\";function initFrame(){frame.initialized=true;document.body.appendChild(frame);var doc=frame.contentDocument;var base=doc.createElement(\"base\");base.href=document.baseURI;doc.head.appendChild(base);}\nfunction inFrame(fn){if(!frame.initialized){initFrame();}\ndocument.body.appendChild(frame);fn(frame.contentDocument);document.body.removeChild(frame);}\nvar isChrome=navigator.userAgent.match(\"Chrome\");function withCssRules(cssText,callback){if(!callback){return;}\nvar rules;if(cssText.match(\"@import\")&&isChrome){var style=cssTextToStyle(cssText);inFrame(function(doc){doc.head.appendChild(style.impl);rules=Array.prototype.slice.call(style.sheet.cssRules,0);callback(rules);});}else{rules=cssToRules(cssText);callback(rules);}}\nfunction rulesToCss(cssRules){for(var i=0,css=[];i<cssRules.length;i++){css.push(cssRules[i].cssText);}\nreturn css.join(\"\\n\\n\");}\nfunction addCssToDocument(cssText){if(cssText){getSheet().appendChild(document.createTextNode(cssText));}}\nfunction addOwnSheet(cssText,name){var style=cssTextToStyle(cssText);style.setAttribute(name,\"\");style.setAttribute(SHIMMED_ATTRIBUTE,\"\");document.head.appendChild(style);}\nvar SHIM_ATTRIBUTE=\"shim-shadowdom\";var SHIMMED_ATTRIBUTE=\"shim-shadowdom-css\";var NO_SHIM_ATTRIBUTE=\"no-shim\";var sheet;function getSheet(){if(!sheet){sheet=document.createElement(\"style\");sheet.setAttribute(SHIMMED_ATTRIBUTE,\"\");sheet[SHIMMED_ATTRIBUTE]=true;}\nreturn sheet;}\nif(window.ShadowDOMPolyfill){addCssToDocument(\"style { display: none !important; }\\n\");var doc=ShadowDOMPolyfill.wrap(document);var head=doc.querySelector(\"head\");head.insertBefore(getSheet(),head.childNodes[0]);document.addEventListener(\"DOMContentLoaded\",function(){var urlResolver=scope.urlResolver;if(window.HTMLImports&&!HTMLImports.useNative){var SHIM_SHEET_SELECTOR=\"link[rel=stylesheet]\"+\"[\"+SHIM_ATTRIBUTE+\"]\";var SHIM_STYLE_SELECTOR=\"style[\"+SHIM_ATTRIBUTE+\"]\";HTMLImports.importer.documentPreloadSelectors+=\",\"+SHIM_SHEET_SELECTOR;HTMLImports.importer.importsPreloadSelectors+=\",\"+SHIM_SHEET_SELECTOR;HTMLImports.parser.documentSelectors=[HTMLImports.parser.documentSelectors,SHIM_SHEET_SELECTOR,SHIM_STYLE_SELECTOR].join(\",\");var originalParseGeneric=HTMLImports.parser.parseGeneric;HTMLImports.parser.parseGeneric=function(elt){if(elt[SHIMMED_ATTRIBUTE]){return;}\nvar style=elt.__importElement||elt;if(!style.hasAttribute(SHIM_ATTRIBUTE)){originalParseGeneric.call(this,elt);return;}\nif(elt.__resource){style=elt.ownerDocument.createElement(\"style\");style.textContent=elt.__resource;}\nHTMLImports.path.resolveUrlsInStyle(style,elt.href);style.textContent=ShadowCSS.shimStyle(style);style.removeAttribute(SHIM_ATTRIBUTE,\"\");style.setAttribute(SHIMMED_ATTRIBUTE,\"\");style[SHIMMED_ATTRIBUTE]=true;if(style.parentNode!==head){if(elt.parentNode===head){head.replaceChild(style,elt);}else{this.addElementToDocument(style);}}\nstyle.__importParsed=true;this.markParsingComplete(elt);this.parseNext();};var hasResource=HTMLImports.parser.hasResource;HTMLImports.parser.hasResource=function(node){if(node.localName===\"link\"&&node.rel===\"stylesheet\"&&node.hasAttribute(SHIM_ATTRIBUTE)){return node.__resource;}else{return hasResource.call(this,node);}};}});}\nscope.ShadowCSS=ShadowCSS;})(window.WebComponents);}\n(function(scope){if(window.ShadowDOMPolyfill){window.wrap=ShadowDOMPolyfill.wrapIfNeeded;window.unwrap=ShadowDOMPolyfill.unwrapIfNeeded;}else{window.wrap=window.unwrap=function(n){return n;};}})(window.WebComponents);(function(scope){\"use strict\";var hasWorkingUrl=false;if(!scope.forceJURL){try{var u=new URL(\"b\",\"http://a\");u.pathname=\"c%20d\";hasWorkingUrl=u.href===\"http://a/c%20d\";}catch(e){}}\nif(hasWorkingUrl)return;var relative=Object.create(null);relative[\"ftp\"]=21;relative[\"file\"]=0;relative[\"gopher\"]=70;relative[\"http\"]=80;relative[\"https\"]=443;relative[\"ws\"]=80;relative[\"wss\"]=443;var relativePathDotMapping=Object.create(null);relativePathDotMapping[\"%2e\"]=\".\";relativePathDotMapping[\".%2e\"]=\"..\";relativePathDotMapping[\"%2e.\"]=\"..\";relativePathDotMapping[\"%2e%2e\"]=\"..\";function isRelativeScheme(scheme){return relative[scheme]!==undefined;}\nfunction invalid(){clear.call(this);this._isInvalid=true;}\nfunction IDNAToASCII(h){if(\"\"==h){invalid.call(this);}\nreturn h.toLowerCase();}\nfunction percentEscape(c){var unicode=c.charCodeAt(0);if(unicode>32&&unicode<127&&[34,35,60,62,63,96].indexOf(unicode)==-1){return c;}\nreturn encodeURIComponent(c);}\nfunction percentEscapeQuery(c){var unicode=c.charCodeAt(0);if(unicode>32&&unicode<127&&[34,35,60,62,96].indexOf(unicode)==-1){return c;}\nreturn encodeURIComponent(c);}\nvar EOF=undefined,ALPHA=/[a-zA-Z]/,ALPHANUMERIC=/[a-zA-Z0-9\\+\\-\\.]/;function parse(input,stateOverride,base){function err(message){errors.push(message);}\nvar state=stateOverride||\"scheme start\",cursor=0,buffer=\"\",seenAt=false,seenBracket=false,errors=[];loop:while((input[cursor-1]!=EOF||cursor==0)&&!this._isInvalid){var c=input[cursor];switch(state){case\"scheme start\":if(c&&ALPHA.test(c)){buffer+=c.toLowerCase();state=\"scheme\";}else if(!stateOverride){buffer=\"\";state=\"no scheme\";continue;}else{err(\"Invalid scheme.\");break loop;}\nbreak;case\"scheme\":if(c&&ALPHANUMERIC.test(c)){buffer+=c.toLowerCase();}else if(\":\"==c){this._scheme=buffer;buffer=\"\";if(stateOverride){break loop;}\nif(isRelativeScheme(this._scheme)){this._isRelative=true;}\nif(\"file\"==this._scheme){state=\"relative\";}else if(this._isRelative&&base&&base._scheme==this._scheme){state=\"relative or authority\";}else if(this._isRelative){state=\"authority first slash\";}else{state=\"scheme data\";}}else if(!stateOverride){buffer=\"\";cursor=0;state=\"no scheme\";continue;}else if(EOF==c){break loop;}else{err(\"Code point not allowed in scheme: \"+c);break loop;}\nbreak;case\"scheme data\":if(\"?\"==c){this._query=\"?\";state=\"query\";}else if(\"#\"==c){this._fragment=\"#\";state=\"fragment\";}else{if(EOF!=c&&\"\\t\"!=c&&\"\\n\"!=c&&\"\\r\"!=c){this._schemeData+=percentEscape(c);}}\nbreak;case\"no scheme\":if(!base||!isRelativeScheme(base._scheme)){err(\"Missing scheme.\");invalid.call(this);}else{state=\"relative\";continue;}\nbreak;case\"relative or authority\":if(\"/\"==c&&\"/\"==input[cursor+1]){state=\"authority ignore slashes\";}else{err(\"Expected /, got: \"+c);state=\"relative\";continue;}\nbreak;case\"relative\":this._isRelative=true;if(\"file\"!=this._scheme)this._scheme=base._scheme;if(EOF==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query=base._query;this._username=base._username;this._password=base._password;break loop;}else if(\"/\"==c||\"\\\\\"==c){if(\"\\\\\"==c)err(\"\\\\ is an invalid code point.\");state=\"relative slash\";}else if(\"?\"==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query=\"?\";this._username=base._username;this._password=base._password;state=\"query\";}else if(\"#\"==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query=base._query;this._fragment=\"#\";this._username=base._username;this._password=base._password;state=\"fragment\";}else{var nextC=input[cursor+1];var nextNextC=input[cursor+2];if(\"file\"!=this._scheme||!ALPHA.test(c)||nextC!=\":\"&&nextC!=\"|\"||EOF!=nextNextC&&\"/\"!=nextNextC&&\"\\\\\"!=nextNextC&&\"?\"!=nextNextC&&\"#\"!=nextNextC){this._host=base._host;this._port=base._port;this._username=base._username;this._password=base._password;this._path=base._path.slice();this._path.pop();}\nstate=\"relative path\";continue;}\nbreak;case\"relative slash\":if(\"/\"==c||\"\\\\\"==c){if(\"\\\\\"==c){err(\"\\\\ is an invalid code point.\");}\nif(\"file\"==this._scheme){state=\"file host\";}else{state=\"authority ignore slashes\";}}else{if(\"file\"!=this._scheme){this._host=base._host;this._port=base._port;this._username=base._username;this._password=base._password;}\nstate=\"relative path\";continue;}\nbreak;case\"authority first slash\":if(\"/\"==c){state=\"authority second slash\";}else{err(\"Expected '/', got: \"+c);state=\"authority ignore slashes\";continue;}\nbreak;case\"authority second slash\":state=\"authority ignore slashes\";if(\"/\"!=c){err(\"Expected '/', got: \"+c);continue;}\nbreak;case\"authority ignore slashes\":if(\"/\"!=c&&\"\\\\\"!=c){state=\"authority\";continue;}else{err(\"Expected authority, got: \"+c);}\nbreak;case\"authority\":if(\"@\"==c){if(seenAt){err(\"@ already seen.\");buffer+=\"%40\";}\nseenAt=true;for(var i=0;i<buffer.length;i++){var cp=buffer[i];if(\"\\t\"==cp||\"\\n\"==cp||\"\\r\"==cp){err(\"Invalid whitespace in authority.\");continue;}\nif(\":\"==cp&&null===this._password){this._password=\"\";continue;}\nvar tempC=percentEscape(cp);null!==this._password?this._password+=tempC:this._username+=tempC;}\nbuffer=\"\";}else if(EOF==c||\"/\"==c||\"\\\\\"==c||\"?\"==c||\"#\"==c){cursor-=buffer.length;buffer=\"\";state=\"host\";continue;}else{buffer+=c;}\nbreak;case\"file host\":if(EOF==c||\"/\"==c||\"\\\\\"==c||\"?\"==c||\"#\"==c){if(buffer.length==2&&ALPHA.test(buffer[0])&&(buffer[1]==\":\"||buffer[1]==\"|\")){state=\"relative path\";}else if(buffer.length==0){state=\"relative path start\";}else{this._host=IDNAToASCII.call(this,buffer);buffer=\"\";state=\"relative path start\";}\ncontinue;}else if(\"\\t\"==c||\"\\n\"==c||\"\\r\"==c){err(\"Invalid whitespace in file host.\");}else{buffer+=c;}\nbreak;case\"host\":case\"hostname\":if(\":\"==c&&!seenBracket){this._host=IDNAToASCII.call(this,buffer);buffer=\"\";state=\"port\";if(\"hostname\"==stateOverride){break loop;}}else if(EOF==c||\"/\"==c||\"\\\\\"==c||\"?\"==c||\"#\"==c){this._host=IDNAToASCII.call(this,buffer);buffer=\"\";state=\"relative path start\";if(stateOverride){break loop;}\ncontinue;}else if(\"\\t\"!=c&&\"\\n\"!=c&&\"\\r\"!=c){if(\"[\"==c){seenBracket=true;}else if(\"]\"==c){seenBracket=false;}\nbuffer+=c;}else{err(\"Invalid code point in host/hostname: \"+c);}\nbreak;case\"port\":if(/[0-9]/.test(c)){buffer+=c;}else if(EOF==c||\"/\"==c||\"\\\\\"==c||\"?\"==c||\"#\"==c||stateOverride){if(\"\"!=buffer){var temp=parseInt(buffer,10);if(temp!=relative[this._scheme]){this._port=temp+\"\";}\nbuffer=\"\";}\nif(stateOverride){break loop;}\nstate=\"relative path start\";continue;}else if(\"\\t\"==c||\"\\n\"==c||\"\\r\"==c){err(\"Invalid code point in port: \"+c);}else{invalid.call(this);}\nbreak;case\"relative path start\":if(\"\\\\\"==c)err(\"'\\\\' not allowed in path.\");state=\"relative path\";if(\"/\"!=c&&\"\\\\\"!=c){continue;}\nbreak;case\"relative path\":if(EOF==c||\"/\"==c||\"\\\\\"==c||!stateOverride&&(\"?\"==c||\"#\"==c)){if(\"\\\\\"==c){err(\"\\\\ not allowed in relative path.\");}\nvar tmp;if(tmp=relativePathDotMapping[buffer.toLowerCase()]){buffer=tmp;}\nif(\"..\"==buffer){this._path.pop();if(\"/\"!=c&&\"\\\\\"!=c){this._path.push(\"\");}}else if(\".\"==buffer&&\"/\"!=c&&\"\\\\\"!=c){this._path.push(\"\");}else if(\".\"!=buffer){if(\"file\"==this._scheme&&this._path.length==0&&buffer.length==2&&ALPHA.test(buffer[0])&&buffer[1]==\"|\"){buffer=buffer[0]+\":\";}\nthis._path.push(buffer);}\nbuffer=\"\";if(\"?\"==c){this._query=\"?\";state=\"query\";}else if(\"#\"==c){this._fragment=\"#\";state=\"fragment\";}}else if(\"\\t\"!=c&&\"\\n\"!=c&&\"\\r\"!=c){buffer+=percentEscape(c);}\nbreak;case\"query\":if(!stateOverride&&\"#\"==c){this._fragment=\"#\";state=\"fragment\";}else if(EOF!=c&&\"\\t\"!=c&&\"\\n\"!=c&&\"\\r\"!=c){this._query+=percentEscapeQuery(c);}\nbreak;case\"fragment\":if(EOF!=c&&\"\\t\"!=c&&\"\\n\"!=c&&\"\\r\"!=c){this._fragment+=c;}\nbreak;}\ncursor++;}}\nfunction clear(){this._scheme=\"\";this._schemeData=\"\";this._username=\"\";this._password=null;this._host=\"\";this._port=\"\";this._path=[];this._query=\"\";this._fragment=\"\";this._isInvalid=false;this._isRelative=false;}\nfunction jURL(url,base){if(base!==undefined&&!(base instanceof jURL))base=new jURL(String(base));this._url=url;clear.call(this);var input=url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g,\"\");parse.call(this,input,null,base);}\njURL.prototype={toString:function(){return this.href;},get href(){if(this._isInvalid)return this._url;var authority=\"\";if(\"\"!=this._username||null!=this._password){authority=this._username+(null!=this._password?\":\"+this._password:\"\")+\"@\";}\nreturn this.protocol+(this._isRelative?\"//\"+authority+this.host:\"\")+this.pathname+this._query+this._fragment;},set href(href){clear.call(this);parse.call(this,href);},get protocol(){return this._scheme+\":\";},set protocol(protocol){if(this._isInvalid)return;parse.call(this,protocol+\":\",\"scheme start\");},get host(){return this._isInvalid?\"\":this._port?this._host+\":\"+this._port:this._host;},set host(host){if(this._isInvalid||!this._isRelative)return;parse.call(this,host,\"host\");},get hostname(){return this._host;},set hostname(hostname){if(this._isInvalid||!this._isRelative)return;parse.call(this,hostname,\"hostname\");},get port(){return this._port;},set port(port){if(this._isInvalid||!this._isRelative)return;parse.call(this,port,\"port\");},get pathname(){return this._isInvalid?\"\":this._isRelative?\"/\"+this._path.join(\"/\"):this._schemeData;},set pathname(pathname){if(this._isInvalid||!this._isRelative)return;this._path=[];parse.call(this,pathname,\"relative path start\");},get search(){return this._isInvalid||!this._query||\"?\"==this._query?\"\":this._query;},set search(search){if(this._isInvalid||!this._isRelative)return;this._query=\"?\";if(\"?\"==search[0])search=search.slice(1);parse.call(this,search,\"query\");},get hash(){return this._isInvalid||!this._fragment||\"#\"==this._fragment?\"\":this._fragment;},set hash(hash){if(this._isInvalid)return;this._fragment=\"#\";if(\"#\"==hash[0])hash=hash.slice(1);parse.call(this,hash,\"fragment\");},get origin(){var host;if(this._isInvalid||!this._scheme){return\"\";}\nswitch(this._scheme){case\"data\":case\"file\":case\"javascript\":case\"mailto\":return\"null\";}\nhost=this.host;if(!host){return\"\";}\nreturn this._scheme+\"://\"+host;}};var OriginalURL=scope.URL;if(OriginalURL){jURL.createObjectURL=function(blob){return OriginalURL.createObjectURL.apply(OriginalURL,arguments);};jURL.revokeObjectURL=function(url){OriginalURL.revokeObjectURL(url);};}\nscope.URL=jURL;})(self);(function(global){if(global.JsMutationObserver){return;}\nvar registrationsTable=new WeakMap();var setImmediate;if(/Trident|Edge/.test(navigator.userAgent)){setImmediate=setTimeout;}else if(window.setImmediate){setImmediate=window.setImmediate;}else{var setImmediateQueue=[];var sentinel=String(Math.random());window.addEventListener(\"message\",function(e){if(e.data===sentinel){var queue=setImmediateQueue;setImmediateQueue=[];queue.forEach(function(func){func();});}});setImmediate=function(func){setImmediateQueue.push(func);window.postMessage(sentinel,\"*\");};}\nvar isScheduled=false;var scheduledObservers=[];function scheduleCallback(observer){scheduledObservers.push(observer);if(!isScheduled){isScheduled=true;setImmediate(dispatchCallbacks);}}\nfunction wrapIfNeeded(node){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(node)||node;}\nfunction dispatchCallbacks(){isScheduled=false;var observers=scheduledObservers;scheduledObservers=[];observers.sort(function(o1,o2){return o1.uid_-o2.uid_;});var anyNonEmpty=false;observers.forEach(function(observer){var queue=observer.takeRecords();removeTransientObserversFor(observer);if(queue.length){observer.callback_(queue,observer);anyNonEmpty=true;}});if(anyNonEmpty)dispatchCallbacks();}\nfunction removeTransientObserversFor(observer){observer.nodes_.forEach(function(node){var registrations=registrationsTable.get(node);if(!registrations)return;registrations.forEach(function(registration){if(registration.observer===observer)registration.removeTransientObservers();});});}\nfunction forEachAncestorAndObserverEnqueueRecord(target,callback){for(var node=target;node;node=node.parentNode){var registrations=registrationsTable.get(node);if(registrations){for(var j=0;j<registrations.length;j++){var registration=registrations[j];var options=registration.options;if(node!==target&&!options.subtree)continue;var record=callback(options);if(record)registration.enqueue(record);}}}}\nvar uidCounter=0;function JsMutationObserver(callback){this.callback_=callback;this.nodes_=[];this.records_=[];this.uid_=++uidCounter;}\nJsMutationObserver.prototype={observe:function(target,options){target=wrapIfNeeded(target);if(!options.childList&&!options.attributes&&!options.characterData||options.attributeOldValue&&!options.attributes||options.attributeFilter&&options.attributeFilter.length&&!options.attributes||options.characterDataOldValue&&!options.characterData){throw new SyntaxError();}\nvar registrations=registrationsTable.get(target);if(!registrations)registrationsTable.set(target,registrations=[]);var registration;for(var i=0;i<registrations.length;i++){if(registrations[i].observer===this){registration=registrations[i];registration.removeListeners();registration.options=options;break;}}\nif(!registration){registration=new Registration(this,target,options);registrations.push(registration);this.nodes_.push(target);}\nregistration.addListeners();},disconnect:function(){this.nodes_.forEach(function(node){var registrations=registrationsTable.get(node);for(var i=0;i<registrations.length;i++){var registration=registrations[i];if(registration.observer===this){registration.removeListeners();registrations.splice(i,1);break;}}},this);this.records_=[];},takeRecords:function(){var copyOfRecords=this.records_;this.records_=[];return copyOfRecords;}};function MutationRecord(type,target){this.type=type;this.target=target;this.addedNodes=[];this.removedNodes=[];this.previousSibling=null;this.nextSibling=null;this.attributeName=null;this.attributeNamespace=null;this.oldValue=null;}\nfunction copyMutationRecord(original){var record=new MutationRecord(original.type,original.target);record.addedNodes=original.addedNodes.slice();record.removedNodes=original.removedNodes.slice();record.previousSibling=original.previousSibling;record.nextSibling=original.nextSibling;record.attributeName=original.attributeName;record.attributeNamespace=original.attributeNamespace;record.oldValue=original.oldValue;return record;}\nvar currentRecord,recordWithOldValue;function getRecord(type,target){return currentRecord=new MutationRecord(type,target);}\nfunction getRecordWithOldValue(oldValue){if(recordWithOldValue)return recordWithOldValue;recordWithOldValue=copyMutationRecord(currentRecord);recordWithOldValue.oldValue=oldValue;return recordWithOldValue;}\nfunction clearRecords(){currentRecord=recordWithOldValue=undefined;}\nfunction recordRepresentsCurrentMutation(record){return record===recordWithOldValue||record===currentRecord;}\nfunction selectRecord(lastRecord,newRecord){if(lastRecord===newRecord)return lastRecord;if(recordWithOldValue&&recordRepresentsCurrentMutation(lastRecord))return recordWithOldValue;return null;}\nfunction Registration(observer,target,options){this.observer=observer;this.target=target;this.options=options;this.transientObservedNodes=[];}\nRegistration.prototype={enqueue:function(record){var records=this.observer.records_;var length=records.length;if(records.length>0){var lastRecord=records[length-1];var recordToReplaceLast=selectRecord(lastRecord,record);if(recordToReplaceLast){records[length-1]=recordToReplaceLast;return;}}else{scheduleCallback(this.observer);}\nrecords[length]=record;},addListeners:function(){this.addListeners_(this.target);},addListeners_:function(node){var options=this.options;if(options.attributes)node.addEventListener(\"DOMAttrModified\",this,true);if(options.characterData)node.addEventListener(\"DOMCharacterDataModified\",this,true);if(options.childList)node.addEventListener(\"DOMNodeInserted\",this,true);if(options.childList||options.subtree)node.addEventListener(\"DOMNodeRemoved\",this,true);},removeListeners:function(){this.removeListeners_(this.target);},removeListeners_:function(node){var options=this.options;if(options.attributes)node.removeEventListener(\"DOMAttrModified\",this,true);if(options.characterData)node.removeEventListener(\"DOMCharacterDataModified\",this,true);if(options.childList)node.removeEventListener(\"DOMNodeInserted\",this,true);if(options.childList||options.subtree)node.removeEventListener(\"DOMNodeRemoved\",this,true);},addTransientObserver:function(node){if(node===this.target)return;this.addListeners_(node);this.transientObservedNodes.push(node);var registrations=registrationsTable.get(node);if(!registrations)registrationsTable.set(node,registrations=[]);registrations.push(this);},removeTransientObservers:function(){var transientObservedNodes=this.transientObservedNodes;this.transientObservedNodes=[];transientObservedNodes.forEach(function(node){this.removeListeners_(node);var registrations=registrationsTable.get(node);for(var i=0;i<registrations.length;i++){if(registrations[i]===this){registrations.splice(i,1);break;}}},this);},handleEvent:function(e){e.stopImmediatePropagation();switch(e.type){case\"DOMAttrModified\":var name=e.attrName;var namespace=e.relatedNode.namespaceURI;var target=e.target;var record=new getRecord(\"attributes\",target);record.attributeName=name;record.attributeNamespace=namespace;var oldValue=e.attrChange===MutationEvent.ADDITION?null:e.prevValue;forEachAncestorAndObserverEnqueueRecord(target,function(options){if(!options.attributes)return;if(options.attributeFilter&&options.attributeFilter.length&&options.attributeFilter.indexOf(name)===-1&&options.attributeFilter.indexOf(namespace)===-1){return;}\nif(options.attributeOldValue)return getRecordWithOldValue(oldValue);return record;});break;case\"DOMCharacterDataModified\":var target=e.target;var record=getRecord(\"characterData\",target);var oldValue=e.prevValue;forEachAncestorAndObserverEnqueueRecord(target,function(options){if(!options.characterData)return;if(options.characterDataOldValue)return getRecordWithOldValue(oldValue);return record;});break;case\"DOMNodeRemoved\":this.addTransientObserver(e.target);case\"DOMNodeInserted\":var changedNode=e.target;var addedNodes,removedNodes;if(e.type===\"DOMNodeInserted\"){addedNodes=[changedNode];removedNodes=[];}else{addedNodes=[];removedNodes=[changedNode];}\nvar previousSibling=changedNode.previousSibling;var nextSibling=changedNode.nextSibling;var record=getRecord(\"childList\",e.target.parentNode);record.addedNodes=addedNodes;record.removedNodes=removedNodes;record.previousSibling=previousSibling;record.nextSibling=nextSibling;forEachAncestorAndObserverEnqueueRecord(e.relatedNode,function(options){if(!options.childList)return;return record;});}\nclearRecords();}};global.JsMutationObserver=JsMutationObserver;if(!global.MutationObserver){global.MutationObserver=JsMutationObserver;JsMutationObserver._isPolyfilled=true;}})(self);(function(scope){\"use strict\";if(!(window.performance&&window.performance.now)){var start=Date.now();window.performance={now:function(){return Date.now()-start;}};}\nif(!window.requestAnimationFrame){window.requestAnimationFrame=function(){var nativeRaf=window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;return nativeRaf?function(callback){return nativeRaf(function(){callback(performance.now());});}:function(callback){return window.setTimeout(callback,1e3/60);};}();}\nif(!window.cancelAnimationFrame){window.cancelAnimationFrame=function(){return window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||function(id){clearTimeout(id);};}();}\nvar workingDefaultPrevented=function(){var e=document.createEvent(\"Event\");e.initEvent(\"foo\",true,true);e.preventDefault();return e.defaultPrevented;}();if(!workingDefaultPrevented){var origPreventDefault=Event.prototype.preventDefault;Event.prototype.preventDefault=function(){if(!this.cancelable){return;}\norigPreventDefault.call(this);Object.defineProperty(this,\"defaultPrevented\",{get:function(){return true;},configurable:true});};}\nvar isIE=/Trident/.test(navigator.userAgent);if(!window.CustomEvent||isIE&&typeof window.CustomEvent!==\"function\"){window.CustomEvent=function(inType,params){params=params||{};var e=document.createEvent(\"CustomEvent\");e.initCustomEvent(inType,Boolean(params.bubbles),Boolean(params.cancelable),params.detail);return e;};window.CustomEvent.prototype=window.Event.prototype;}\nif(!window.Event||isIE&&typeof window.Event!==\"function\"){var origEvent=window.Event;window.Event=function(inType,params){params=params||{};var e=document.createEvent(\"Event\");e.initEvent(inType,Boolean(params.bubbles),Boolean(params.cancelable));return e;};window.Event.prototype=origEvent.prototype;}})(window.WebComponents);window.HTMLImports=window.HTMLImports||{flags:{}};(function(scope){var IMPORT_LINK_TYPE=\"import\";var useNative=Boolean(IMPORT_LINK_TYPE in document.createElement(\"link\"));var hasShadowDOMPolyfill=Boolean(window.ShadowDOMPolyfill);var wrap=function(node){return hasShadowDOMPolyfill?window.ShadowDOMPolyfill.wrapIfNeeded(node):node;};var rootDocument=wrap(document);var currentScriptDescriptor={get:function(){var script=window.HTMLImports.currentScript||document.currentScript||(document.readyState!==\"complete\"?document.scripts[document.scripts.length-1]:null);return wrap(script);},configurable:true};Object.defineProperty(document,\"_currentScript\",currentScriptDescriptor);Object.defineProperty(rootDocument,\"_currentScript\",currentScriptDescriptor);var isIE=/Trident/.test(navigator.userAgent);function whenReady(callback,doc){doc=doc||rootDocument;whenDocumentReady(function(){watchImportsLoad(callback,doc);},doc);}\nvar requiredReadyState=isIE?\"complete\":\"interactive\";var READY_EVENT=\"readystatechange\";function isDocumentReady(doc){return doc.readyState===\"complete\"||doc.readyState===requiredReadyState;}\nfunction whenDocumentReady(callback,doc){if(!isDocumentReady(doc)){var checkReady=function(){if(doc.readyState===\"complete\"||doc.readyState===requiredReadyState){doc.removeEventListener(READY_EVENT,checkReady);whenDocumentReady(callback,doc);}};doc.addEventListener(READY_EVENT,checkReady);}else if(callback){callback();}}\nfunction markTargetLoaded(event){event.target.__loaded=true;}\nfunction watchImportsLoad(callback,doc){var imports=doc.querySelectorAll(\"link[rel=import]\");var parsedCount=0,importCount=imports.length,newImports=[],errorImports=[];function checkDone(){if(parsedCount==importCount&&callback){callback({allImports:imports,loadedImports:newImports,errorImports:errorImports});}}\nfunction loadedImport(e){markTargetLoaded(e);newImports.push(this);parsedCount++;checkDone();}\nfunction errorLoadingImport(e){errorImports.push(this);parsedCount++;checkDone();}\nif(importCount){for(var i=0,imp;i<importCount&&(imp=imports[i]);i++){if(isImportLoaded(imp)){newImports.push(this);parsedCount++;checkDone();}else{imp.addEventListener(\"load\",loadedImport);imp.addEventListener(\"error\",errorLoadingImport);}}}else{checkDone();}}\nfunction isImportLoaded(link){return useNative?link.__loaded||link.import&&link.import.readyState!==\"loading\":link.__importParsed;}\nif(useNative){new MutationObserver(function(mxns){for(var i=0,l=mxns.length,m;i<l&&(m=mxns[i]);i++){if(m.addedNodes){handleImports(m.addedNodes);}}}).observe(document.head,{childList:true});function handleImports(nodes){for(var i=0,l=nodes.length,n;i<l&&(n=nodes[i]);i++){if(isImport(n)){handleImport(n);}}}\nfunction isImport(element){return element.localName===\"link\"&&element.rel===\"import\";}\nfunction handleImport(element){var loaded=element.import;if(loaded){markTargetLoaded({target:element});}else{element.addEventListener(\"load\",markTargetLoaded);element.addEventListener(\"error\",markTargetLoaded);}}\n(function(){if(document.readyState===\"loading\"){var imports=document.querySelectorAll(\"link[rel=import]\");for(var i=0,l=imports.length,imp;i<l&&(imp=imports[i]);i++){handleImport(imp);}}})();}\nwhenReady(function(detail){window.HTMLImports.ready=true;window.HTMLImports.readyTime=new Date().getTime();var evt=rootDocument.createEvent(\"CustomEvent\");evt.initCustomEvent(\"HTMLImportsLoaded\",true,true,detail);rootDocument.dispatchEvent(evt);});scope.IMPORT_LINK_TYPE=IMPORT_LINK_TYPE;scope.useNative=useNative;scope.rootDocument=rootDocument;scope.whenReady=whenReady;scope.isIE=isIE;})(window.HTMLImports);(function(scope){var modules=[];var addModule=function(module){modules.push(module);};var initializeModules=function(){modules.forEach(function(module){module(scope);});};scope.addModule=addModule;scope.initializeModules=initializeModules;})(window.HTMLImports);window.HTMLImports.addModule(function(scope){var CSS_URL_REGEXP=/(url\\()([^)]*)(\\))/g;var CSS_IMPORT_REGEXP=/(@import[\\s]+(?!url\\())([^;]*)(;)/g;var path={resolveUrlsInStyle:function(style,linkUrl){var doc=style.ownerDocument;var resolver=doc.createElement(\"a\");style.textContent=this.resolveUrlsInCssText(style.textContent,linkUrl,resolver);return style;},resolveUrlsInCssText:function(cssText,linkUrl,urlObj){var r=this.replaceUrls(cssText,urlObj,linkUrl,CSS_URL_REGEXP);r=this.replaceUrls(r,urlObj,linkUrl,CSS_IMPORT_REGEXP);return r;},replaceUrls:function(text,urlObj,linkUrl,regexp){return text.replace(regexp,function(m,pre,url,post){var urlPath=url.replace(/[\"']/g,\"\");if(linkUrl){urlPath=new URL(urlPath,linkUrl).href;}\nurlObj.href=urlPath;urlPath=urlObj.href;return pre+\"'\"+urlPath+\"'\"+post;});}};scope.path=path;});window.HTMLImports.addModule(function(scope){var xhr={async:true,ok:function(request){return request.status>=200&&request.status<300||request.status===304||request.status===0;},load:function(url,next,nextContext){var request=new XMLHttpRequest();if(scope.flags.debug||scope.flags.bust){url+=\"?\"+Math.random();}\nrequest.open(\"GET\",url,xhr.async);request.addEventListener(\"readystatechange\",function(e){if(request.readyState===4){var redirectedUrl=null;try{var locationHeader=request.getResponseHeader(\"Location\");if(locationHeader){redirectedUrl=locationHeader.substr(0,1)===\"/\"?location.origin+locationHeader:locationHeader;}}catch(e){console.error(e.message);}\nnext.call(nextContext,!xhr.ok(request)&&request,request.response||request.responseText,redirectedUrl);}});request.send();return request;},loadDocument:function(url,next,nextContext){this.load(url,next,nextContext).responseType=\"document\";}};scope.xhr=xhr;});window.HTMLImports.addModule(function(scope){var xhr=scope.xhr;var flags=scope.flags;var Loader=function(onLoad,onComplete){this.cache={};this.onload=onLoad;this.oncomplete=onComplete;this.inflight=0;this.pending={};};Loader.prototype={addNodes:function(nodes){this.inflight+=nodes.length;for(var i=0,l=nodes.length,n;i<l&&(n=nodes[i]);i++){this.require(n);}\nthis.checkDone();},addNode:function(node){this.inflight++;this.require(node);this.checkDone();},require:function(elt){var url=elt.src||elt.href;elt.__nodeUrl=url;if(!this.dedupe(url,elt)){this.fetch(url,elt);}},dedupe:function(url,elt){if(this.pending[url]){this.pending[url].push(elt);return true;}\nvar resource;if(this.cache[url]){this.onload(url,elt,this.cache[url]);this.tail();return true;}\nthis.pending[url]=[elt];return false;},fetch:function(url,elt){flags.load&&console.log(\"fetch\",url,elt);if(!url){setTimeout(function(){this.receive(url,elt,{error:\"href must be specified\"},null);}.bind(this),0);}else if(url.match(/^data:/)){var pieces=url.split(\",\");var header=pieces[0];var body=pieces[1];if(header.indexOf(\";base64\")>-1){body=atob(body);}else{body=decodeURIComponent(body);}\nsetTimeout(function(){this.receive(url,elt,null,body);}.bind(this),0);}else{var receiveXhr=function(err,resource,redirectedUrl){this.receive(url,elt,err,resource,redirectedUrl);}.bind(this);xhr.load(url,receiveXhr);}},receive:function(url,elt,err,resource,redirectedUrl){this.cache[url]=resource;var $p=this.pending[url];for(var i=0,l=$p.length,p;i<l&&(p=$p[i]);i++){this.onload(url,p,resource,err,redirectedUrl);this.tail();}\nthis.pending[url]=null;},tail:function(){--this.inflight;this.checkDone();},checkDone:function(){if(!this.inflight){this.oncomplete();}}};scope.Loader=Loader;});window.HTMLImports.addModule(function(scope){var Observer=function(addCallback){this.addCallback=addCallback;this.mo=new MutationObserver(this.handler.bind(this));};Observer.prototype={handler:function(mutations){for(var i=0,l=mutations.length,m;i<l&&(m=mutations[i]);i++){if(m.type===\"childList\"&&m.addedNodes.length){this.addedNodes(m.addedNodes);}}},addedNodes:function(nodes){if(this.addCallback){this.addCallback(nodes);}\nfor(var i=0,l=nodes.length,n,loading;i<l&&(n=nodes[i]);i++){if(n.children&&n.children.length){this.addedNodes(n.children);}}},observe:function(root){this.mo.observe(root,{childList:true,subtree:true});}};scope.Observer=Observer;});window.HTMLImports.addModule(function(scope){var path=scope.path;var rootDocument=scope.rootDocument;var flags=scope.flags;var isIE=scope.isIE;var IMPORT_LINK_TYPE=scope.IMPORT_LINK_TYPE;var IMPORT_SELECTOR=\"link[rel=\"+IMPORT_LINK_TYPE+\"]\";var importParser={documentSelectors:IMPORT_SELECTOR,importsSelectors:[IMPORT_SELECTOR,\"link[rel=stylesheet]:not([type])\",\"style:not([type])\",\"script:not([type])\",'script[type=\"application/javascript\"]','script[type=\"text/javascript\"]'].join(\",\"),map:{link:\"parseLink\",script:\"parseScript\",style:\"parseStyle\"},dynamicElements:[],parseNext:function(){var next=this.nextToParse();if(next){this.parse(next);}},parse:function(elt){if(this.isParsed(elt)){flags.parse&&console.log(\"[%s] is already parsed\",elt.localName);return;}\nvar fn=this[this.map[elt.localName]];if(fn){this.markParsing(elt);fn.call(this,elt);}},parseDynamic:function(elt,quiet){this.dynamicElements.push(elt);if(!quiet){this.parseNext();}},markParsing:function(elt){flags.parse&&console.log(\"parsing\",elt);this.parsingElement=elt;},markParsingComplete:function(elt){elt.__importParsed=true;this.markDynamicParsingComplete(elt);if(elt.__importElement){elt.__importElement.__importParsed=true;this.markDynamicParsingComplete(elt.__importElement);}\nthis.parsingElement=null;flags.parse&&console.log(\"completed\",elt);},markDynamicParsingComplete:function(elt){var i=this.dynamicElements.indexOf(elt);if(i>=0){this.dynamicElements.splice(i,1);}},parseImport:function(elt){elt.import=elt.__doc;if(window.HTMLImports.__importsParsingHook){window.HTMLImports.__importsParsingHook(elt);}\nif(elt.import){elt.import.__importParsed=true;}\nthis.markParsingComplete(elt);if(elt.__resource&&!elt.__error){elt.dispatchEvent(new CustomEvent(\"load\",{bubbles:false}));}else{elt.dispatchEvent(new CustomEvent(\"error\",{bubbles:false}));}\nif(elt.__pending){var fn;while(elt.__pending.length){fn=elt.__pending.shift();if(fn){fn({target:elt});}}}\nthis.parseNext();},parseLink:function(linkElt){if(nodeIsImport(linkElt)){this.parseImport(linkElt);}else{linkElt.href=linkElt.href;this.parseGeneric(linkElt);}},parseStyle:function(elt){var src=elt;elt=cloneStyle(elt);src.__appliedElement=elt;elt.__importElement=src;this.parseGeneric(elt);},parseGeneric:function(elt){this.trackElement(elt);this.addElementToDocument(elt);},rootImportForElement:function(elt){var n=elt;while(n.ownerDocument.__importLink){n=n.ownerDocument.__importLink;}\nreturn n;},addElementToDocument:function(elt){var port=this.rootImportForElement(elt.__importElement||elt);port.parentNode.insertBefore(elt,port);},trackElement:function(elt,callback){var self=this;var done=function(e){elt.removeEventListener(\"load\",done);elt.removeEventListener(\"error\",done);if(callback){callback(e);}\nself.markParsingComplete(elt);self.parseNext();};elt.addEventListener(\"load\",done);elt.addEventListener(\"error\",done);if(isIE&&elt.localName===\"style\"){var fakeLoad=false;if(elt.textContent.indexOf(\"@import\")==-1){fakeLoad=true;}else if(elt.sheet){fakeLoad=true;var csr=elt.sheet.cssRules;var len=csr?csr.length:0;for(var i=0,r;i<len&&(r=csr[i]);i++){if(r.type===CSSRule.IMPORT_RULE){fakeLoad=fakeLoad&&Boolean(r.styleSheet);}}}\nif(fakeLoad){setTimeout(function(){elt.dispatchEvent(new CustomEvent(\"load\",{bubbles:false}));});}}},parseScript:function(scriptElt){var script=document.createElement(\"script\");script.__importElement=scriptElt;script.src=scriptElt.src?scriptElt.src:generateScriptDataUrl(scriptElt);scope.currentScript=scriptElt;this.trackElement(script,function(e){if(script.parentNode){script.parentNode.removeChild(script);}\nscope.currentScript=null;});this.addElementToDocument(script);},nextToParse:function(){this._mayParse=[];return!this.parsingElement&&(this.nextToParseInDoc(rootDocument)||this.nextToParseDynamic());},nextToParseInDoc:function(doc,link){if(doc&&this._mayParse.indexOf(doc)<0){this._mayParse.push(doc);var nodes=doc.querySelectorAll(this.parseSelectorsForNode(doc));for(var i=0,l=nodes.length,n;i<l&&(n=nodes[i]);i++){if(!this.isParsed(n)){if(this.hasResource(n)){return nodeIsImport(n)?this.nextToParseInDoc(n.__doc,n):n;}else{return;}}}}\nreturn link;},nextToParseDynamic:function(){return this.dynamicElements[0];},parseSelectorsForNode:function(node){var doc=node.ownerDocument||node;return doc===rootDocument?this.documentSelectors:this.importsSelectors;},isParsed:function(node){return node.__importParsed;},needsDynamicParsing:function(elt){return this.dynamicElements.indexOf(elt)>=0;},hasResource:function(node){if(nodeIsImport(node)&&node.__doc===undefined){return false;}\nreturn true;}};function nodeIsImport(elt){return elt.localName===\"link\"&&elt.rel===IMPORT_LINK_TYPE;}\nfunction generateScriptDataUrl(script){var scriptContent=generateScriptContent(script);return\"data:text/javascript;charset=utf-8,\"+encodeURIComponent(scriptContent);}\nfunction generateScriptContent(script){return script.textContent+generateSourceMapHint(script);}\nfunction generateSourceMapHint(script){var owner=script.ownerDocument;owner.__importedScripts=owner.__importedScripts||0;var moniker=script.ownerDocument.baseURI;var num=owner.__importedScripts?\"-\"+owner.__importedScripts:\"\";owner.__importedScripts++;return\"\\n//# sourceURL=\"+moniker+num+\".js\\n\";}\nfunction cloneStyle(style){var clone=style.ownerDocument.createElement(\"style\");clone.textContent=style.textContent;path.resolveUrlsInStyle(clone);return clone;}\nscope.parser=importParser;scope.IMPORT_SELECTOR=IMPORT_SELECTOR;});window.HTMLImports.addModule(function(scope){var flags=scope.flags;var IMPORT_LINK_TYPE=scope.IMPORT_LINK_TYPE;var IMPORT_SELECTOR=scope.IMPORT_SELECTOR;var rootDocument=scope.rootDocument;var Loader=scope.Loader;var Observer=scope.Observer;var parser=scope.parser;var importer={documents:{},documentPreloadSelectors:IMPORT_SELECTOR,importsPreloadSelectors:[IMPORT_SELECTOR].join(\",\"),loadNode:function(node){importLoader.addNode(node);},loadSubtree:function(parent){var nodes=this.marshalNodes(parent);importLoader.addNodes(nodes);},marshalNodes:function(parent){return parent.querySelectorAll(this.loadSelectorsForNode(parent));},loadSelectorsForNode:function(node){var doc=node.ownerDocument||node;return doc===rootDocument?this.documentPreloadSelectors:this.importsPreloadSelectors;},loaded:function(url,elt,resource,err,redirectedUrl){flags.load&&console.log(\"loaded\",url,elt);elt.__resource=resource;elt.__error=err;if(isImportLink(elt)){var doc=this.documents[url];if(doc===undefined){doc=err?null:makeDocument(resource,redirectedUrl||url);if(doc){doc.__importLink=elt;this.bootDocument(doc);}\nthis.documents[url]=doc;}\nelt.__doc=doc;}\nparser.parseNext();},bootDocument:function(doc){this.loadSubtree(doc);this.observer.observe(doc);parser.parseNext();},loadedAll:function(){parser.parseNext();}};var importLoader=new Loader(importer.loaded.bind(importer),importer.loadedAll.bind(importer));importer.observer=new Observer();function isImportLink(elt){return isLinkRel(elt,IMPORT_LINK_TYPE);}\nfunction isLinkRel(elt,rel){return elt.localName===\"link\"&&elt.getAttribute(\"rel\")===rel;}\nfunction hasBaseURIAccessor(doc){return!!Object.getOwnPropertyDescriptor(doc,\"baseURI\");}\nfunction makeDocument(resource,url){var doc=document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);doc._URL=url;var base=doc.createElement(\"base\");base.setAttribute(\"href\",url);if(!doc.baseURI&&!hasBaseURIAccessor(doc)){Object.defineProperty(doc,\"baseURI\",{value:url});}\nvar meta=doc.createElement(\"meta\");meta.setAttribute(\"charset\",\"utf-8\");doc.head.appendChild(meta);doc.head.appendChild(base);doc.body.innerHTML=resource;if(window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap){HTMLTemplateElement.bootstrap(doc);}\nreturn doc;}\nif(!document.baseURI){var baseURIDescriptor={get:function(){var base=document.querySelector(\"base\");return base?base.href:window.location.href;},configurable:true};Object.defineProperty(document,\"baseURI\",baseURIDescriptor);Object.defineProperty(rootDocument,\"baseURI\",baseURIDescriptor);}\nscope.importer=importer;scope.importLoader=importLoader;});window.HTMLImports.addModule(function(scope){var parser=scope.parser;var importer=scope.importer;var dynamic={added:function(nodes){var owner,parsed,loading;for(var i=0,l=nodes.length,n;i<l&&(n=nodes[i]);i++){if(!owner){owner=n.ownerDocument;parsed=parser.isParsed(owner);}\nloading=this.shouldLoadNode(n);if(loading){importer.loadNode(n);}\nif(this.shouldParseNode(n)&&parsed){parser.parseDynamic(n,loading);}}},shouldLoadNode:function(node){return node.nodeType===1&&matches.call(node,importer.loadSelectorsForNode(node));},shouldParseNode:function(node){return node.nodeType===1&&matches.call(node,parser.parseSelectorsForNode(node));}};importer.observer.addCallback=dynamic.added.bind(dynamic);var matches=HTMLElement.prototype.matches||HTMLElement.prototype.matchesSelector||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;});(function(scope){var initializeModules=scope.initializeModules;var isIE=scope.isIE;if(scope.useNative){return;}\ninitializeModules();var rootDocument=scope.rootDocument;function bootstrap(){window.HTMLImports.importer.bootDocument(rootDocument);}\nif(document.readyState===\"complete\"||document.readyState===\"interactive\"&&!window.attachEvent){bootstrap();}else{document.addEventListener(\"DOMContentLoaded\",bootstrap);}})(window.HTMLImports);window.CustomElements=window.CustomElements||{flags:{}};(function(scope){var flags=scope.flags;var modules=[];var addModule=function(module){modules.push(module);};var initializeModules=function(){modules.forEach(function(module){module(scope);});};scope.addModule=addModule;scope.initializeModules=initializeModules;scope.hasNative=Boolean(document.registerElement);scope.isIE=/Trident/.test(navigator.userAgent);scope.useNative=!flags.register&&scope.hasNative&&!window.ShadowDOMPolyfill&&(!window.HTMLImports||window.HTMLImports.useNative);})(window.CustomElements);window.CustomElements.addModule(function(scope){var IMPORT_LINK_TYPE=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:\"none\";function forSubtree(node,cb){findAllElements(node,function(e){if(cb(e)){return true;}\nforRoots(e,cb);});forRoots(node,cb);}\nfunction findAllElements(node,find,data){var e=node.firstElementChild;if(!e){e=node.firstChild;while(e&&e.nodeType!==Node.ELEMENT_NODE){e=e.nextSibling;}}\nwhile(e){if(find(e,data)!==true){findAllElements(e,find,data);}\ne=e.nextElementSibling;}\nreturn null;}\nfunction forRoots(node,cb){var root=node.shadowRoot;while(root){forSubtree(root,cb);root=root.olderShadowRoot;}}\nfunction forDocumentTree(doc,cb){_forDocumentTree(doc,cb,[]);}\nfunction _forDocumentTree(doc,cb,processingDocuments){doc=window.wrap(doc);if(processingDocuments.indexOf(doc)>=0){return;}\nprocessingDocuments.push(doc);var imports=doc.querySelectorAll(\"link[rel=\"+IMPORT_LINK_TYPE+\"]\");for(var i=0,l=imports.length,n;i<l&&(n=imports[i]);i++){if(n.import){_forDocumentTree(n.import,cb,processingDocuments);}}\ncb(doc);}\nscope.forDocumentTree=forDocumentTree;scope.forSubtree=forSubtree;});window.CustomElements.addModule(function(scope){var flags=scope.flags;var forSubtree=scope.forSubtree;var forDocumentTree=scope.forDocumentTree;function addedNode(node,isAttached){return added(node,isAttached)||addedSubtree(node,isAttached);}\nfunction added(node,isAttached){if(scope.upgrade(node,isAttached)){return true;}\nif(isAttached){attached(node);}}\nfunction addedSubtree(node,isAttached){forSubtree(node,function(e){if(added(e,isAttached)){return true;}});}\nvar hasThrottledAttached=window.MutationObserver._isPolyfilled&&flags[\"throttle-attached\"];scope.hasPolyfillMutations=hasThrottledAttached;scope.hasThrottledAttached=hasThrottledAttached;var isPendingMutations=false;var pendingMutations=[];function deferMutation(fn){pendingMutations.push(fn);if(!isPendingMutations){isPendingMutations=true;setTimeout(takeMutations);}}\nfunction takeMutations(){isPendingMutations=false;var $p=pendingMutations;for(var i=0,l=$p.length,p;i<l&&(p=$p[i]);i++){p();}\npendingMutations=[];}\nfunction attached(element){if(hasThrottledAttached){deferMutation(function(){_attached(element);});}else{_attached(element);}}\nfunction _attached(element){if(element.__upgraded__&&!element.__attached){element.__attached=true;if(element.attachedCallback){element.attachedCallback();}}}\nfunction detachedNode(node){detached(node);forSubtree(node,function(e){detached(e);});}\nfunction detached(element){if(hasThrottledAttached){deferMutation(function(){_detached(element);});}else{_detached(element);}}\nfunction _detached(element){if(element.__upgraded__&&element.__attached){element.__attached=false;if(element.detachedCallback){element.detachedCallback();}}}\nfunction inDocument(element){var p=element;var doc=window.wrap(document);while(p){if(p==doc){return true;}\np=p.parentNode||p.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&p.host;}}\nfunction watchShadow(node){if(node.shadowRoot&&!node.shadowRoot.__watched){flags.dom&&console.log(\"watching shadow-root for: \",node.localName);var root=node.shadowRoot;while(root){observe(root);root=root.olderShadowRoot;}}}\nfunction handler(root,mutations){if(flags.dom){var mx=mutations[0];if(mx&&mx.type===\"childList\"&&mx.addedNodes){if(mx.addedNodes){var d=mx.addedNodes[0];while(d&&d!==document&&!d.host){d=d.parentNode;}\nvar u=d&&(d.URL||d._URL||d.host&&d.host.localName)||\"\";u=u.split(\"/?\").shift().split(\"/\").pop();}}\nconsole.group(\"mutations (%d) [%s]\",mutations.length,u||\"\");}\nvar isAttached=inDocument(root);mutations.forEach(function(mx){if(mx.type===\"childList\"){forEach(mx.addedNodes,function(n){if(!n.localName){return;}\naddedNode(n,isAttached);});forEach(mx.removedNodes,function(n){if(!n.localName){return;}\ndetachedNode(n);});}});flags.dom&&console.groupEnd();}\nfunction takeRecords(node){node=window.wrap(node);if(!node){node=window.wrap(document);}\nwhile(node.parentNode){node=node.parentNode;}\nvar observer=node.__observer;if(observer){handler(node,observer.takeRecords());takeMutations();}}\nvar forEach=Array.prototype.forEach.call.bind(Array.prototype.forEach);function observe(inRoot){if(inRoot.__observer){return;}\nvar observer=new MutationObserver(handler.bind(this,inRoot));observer.observe(inRoot,{childList:true,subtree:true});inRoot.__observer=observer;}\nfunction upgradeDocument(doc){doc=window.wrap(doc);flags.dom&&console.group(\"upgradeDocument: \",doc.baseURI.split(\"/\").pop());var isMainDocument=doc===window.wrap(document);addedNode(doc,isMainDocument);observe(doc);flags.dom&&console.groupEnd();}\nfunction upgradeDocumentTree(doc){forDocumentTree(doc,upgradeDocument);}\nvar originalCreateShadowRoot=Element.prototype.createShadowRoot;if(originalCreateShadowRoot){Element.prototype.createShadowRoot=function(){var root=originalCreateShadowRoot.call(this);window.CustomElements.watchShadow(this);return root;};}\nscope.watchShadow=watchShadow;scope.upgradeDocumentTree=upgradeDocumentTree;scope.upgradeDocument=upgradeDocument;scope.upgradeSubtree=addedSubtree;scope.upgradeAll=addedNode;scope.attached=attached;scope.takeRecords=takeRecords;});window.CustomElements.addModule(function(scope){var flags=scope.flags;function upgrade(node,isAttached){if(node.localName===\"template\"){if(window.HTMLTemplateElement&&HTMLTemplateElement.decorate){HTMLTemplateElement.decorate(node);}}\nif(!node.__upgraded__&&node.nodeType===Node.ELEMENT_NODE){var is=node.getAttribute(\"is\");var definition=scope.getRegisteredDefinition(node.localName)||scope.getRegisteredDefinition(is);if(definition){if(is&&definition.tag==node.localName||!is&&!definition.extends){return upgradeWithDefinition(node,definition,isAttached);}}}}\nfunction upgradeWithDefinition(element,definition,isAttached){flags.upgrade&&console.group(\"upgrade:\",element.localName);if(definition.is){element.setAttribute(\"is\",definition.is);}\nimplementPrototype(element,definition);element.__upgraded__=true;created(element);if(isAttached){scope.attached(element);}\nscope.upgradeSubtree(element,isAttached);flags.upgrade&&console.groupEnd();return element;}\nfunction implementPrototype(element,definition){if(Object.__proto__){element.__proto__=definition.prototype;}else{customMixin(element,definition.prototype,definition.native);element.__proto__=definition.prototype;}}\nfunction customMixin(inTarget,inSrc,inNative){var used={};var p=inSrc;while(p!==inNative&&p!==HTMLElement.prototype){var keys=Object.getOwnPropertyNames(p);for(var i=0,k;k=keys[i];i++){if(!used[k]){Object.defineProperty(inTarget,k,Object.getOwnPropertyDescriptor(p,k));used[k]=1;}}\np=Object.getPrototypeOf(p);}}\nfunction created(element){if(element.createdCallback){element.createdCallback();}}\nscope.upgrade=upgrade;scope.upgradeWithDefinition=upgradeWithDefinition;scope.implementPrototype=implementPrototype;});window.CustomElements.addModule(function(scope){var isIE=scope.isIE;var upgradeDocumentTree=scope.upgradeDocumentTree;var upgradeAll=scope.upgradeAll;var upgradeWithDefinition=scope.upgradeWithDefinition;var implementPrototype=scope.implementPrototype;var useNative=scope.useNative;function register(name,options){var definition=options||{};if(!name){throw new Error(\"document.registerElement: first argument `name` must not be empty\");}\nif(name.indexOf(\"-\")<0){throw new Error(\"document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '\"+String(name)+\"'.\");}\nif(isReservedTag(name)){throw new Error(\"Failed to execute 'registerElement' on 'Document': Registration failed for type '\"+String(name)+\"'. The type name is invalid.\");}\nif(getRegisteredDefinition(name)){throw new Error(\"DuplicateDefinitionError: a type with name '\"+String(name)+\"' is already registered\");}\nif(!definition.prototype){definition.prototype=Object.create(HTMLElement.prototype);}\ndefinition.__name=name.toLowerCase();if(definition.extends){definition.extends=definition.extends.toLowerCase();}\ndefinition.lifecycle=definition.lifecycle||{};definition.ancestry=ancestry(definition.extends);resolveTagName(definition);resolvePrototypeChain(definition);overrideAttributeApi(definition.prototype);registerDefinition(definition.__name,definition);definition.ctor=generateConstructor(definition);definition.ctor.prototype=definition.prototype;definition.prototype.constructor=definition.ctor;if(scope.ready){upgradeDocumentTree(document);}\nreturn definition.ctor;}\nfunction overrideAttributeApi(prototype){if(prototype.setAttribute._polyfilled){return;}\nvar setAttribute=prototype.setAttribute;prototype.setAttribute=function(name,value){changeAttribute.call(this,name,value,setAttribute);};var removeAttribute=prototype.removeAttribute;prototype.removeAttribute=function(name){changeAttribute.call(this,name,null,removeAttribute);};prototype.setAttribute._polyfilled=true;}\nfunction changeAttribute(name,value,operation){name=name.toLowerCase();var oldValue=this.getAttribute(name);operation.apply(this,arguments);var newValue=this.getAttribute(name);if(this.attributeChangedCallback&&newValue!==oldValue){this.attributeChangedCallback(name,oldValue,newValue);}}\nfunction isReservedTag(name){for(var i=0;i<reservedTagList.length;i++){if(name===reservedTagList[i]){return true;}}}\nvar reservedTagList=[\"annotation-xml\",\"color-profile\",\"font-face\",\"font-face-src\",\"font-face-uri\",\"font-face-format\",\"font-face-name\",\"missing-glyph\"];function ancestry(extnds){var extendee=getRegisteredDefinition(extnds);if(extendee){return ancestry(extendee.extends).concat([extendee]);}\nreturn[];}\nfunction resolveTagName(definition){var baseTag=definition.extends;for(var i=0,a;a=definition.ancestry[i];i++){baseTag=a.is&&a.tag;}\ndefinition.tag=baseTag||definition.__name;if(baseTag){definition.is=definition.__name;}}\nfunction resolvePrototypeChain(definition){if(!Object.__proto__){var nativePrototype=HTMLElement.prototype;if(definition.is){var inst=document.createElement(definition.tag);nativePrototype=Object.getPrototypeOf(inst);}\nvar proto=definition.prototype,ancestor;var foundPrototype=false;while(proto){if(proto==nativePrototype){foundPrototype=true;}\nancestor=Object.getPrototypeOf(proto);if(ancestor){proto.__proto__=ancestor;}\nproto=ancestor;}\nif(!foundPrototype){console.warn(definition.tag+\" prototype not found in prototype chain for \"+definition.is);}\ndefinition.native=nativePrototype;}}\nfunction instantiate(definition){return upgradeWithDefinition(domCreateElement(definition.tag),definition);}\nvar registry={};function getRegisteredDefinition(name){if(name){return registry[name.toLowerCase()];}}\nfunction registerDefinition(name,definition){registry[name]=definition;}\nfunction generateConstructor(definition){return function(){return instantiate(definition);};}\nvar HTML_NAMESPACE=\"http://www.w3.org/1999/xhtml\";function createElementNS(namespace,tag,typeExtension){if(namespace===HTML_NAMESPACE){return createElement(tag,typeExtension);}else{return domCreateElementNS(namespace,tag);}}\nfunction createElement(tag,typeExtension){if(tag){tag=tag.toLowerCase();}\nif(typeExtension){typeExtension=typeExtension.toLowerCase();}\nvar definition=getRegisteredDefinition(typeExtension||tag);if(definition){if(tag==definition.tag&&typeExtension==definition.is){return new definition.ctor();}\nif(!typeExtension&&!definition.is){return new definition.ctor();}}\nvar element;if(typeExtension){element=createElement(tag);element.setAttribute(\"is\",typeExtension);return element;}\nelement=domCreateElement(tag);if(tag.indexOf(\"-\")>=0){implementPrototype(element,HTMLElement);}\nreturn element;}\nvar domCreateElement=document.createElement.bind(document);var domCreateElementNS=document.createElementNS.bind(document);var isInstance;if(!Object.__proto__&&!useNative){isInstance=function(obj,ctor){if(obj instanceof ctor){return true;}\nvar p=obj;while(p){if(p===ctor.prototype){return true;}\np=p.__proto__;}\nreturn false;};}else{isInstance=function(obj,base){return obj instanceof base;};}\nfunction wrapDomMethodToForceUpgrade(obj,methodName){var orig=obj[methodName];obj[methodName]=function(){var n=orig.apply(this,arguments);upgradeAll(n);return n;};}\nwrapDomMethodToForceUpgrade(Node.prototype,\"cloneNode\");wrapDomMethodToForceUpgrade(document,\"importNode\");document.registerElement=register;document.createElement=createElement;document.createElementNS=createElementNS;scope.registry=registry;scope.instanceof=isInstance;scope.reservedTagList=reservedTagList;scope.getRegisteredDefinition=getRegisteredDefinition;document.register=document.registerElement;});(function(scope){var useNative=scope.useNative;var initializeModules=scope.initializeModules;var isIE=scope.isIE;if(useNative){var nop=function(){};scope.watchShadow=nop;scope.upgrade=nop;scope.upgradeAll=nop;scope.upgradeDocumentTree=nop;scope.upgradeSubtree=nop;scope.takeRecords=nop;scope.instanceof=function(obj,base){return obj instanceof base;};}else{initializeModules();}\nvar upgradeDocumentTree=scope.upgradeDocumentTree;var upgradeDocument=scope.upgradeDocument;if(!window.wrap){if(window.ShadowDOMPolyfill){window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded;window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded;}else{window.wrap=window.unwrap=function(node){return node;};}}\nif(window.HTMLImports){window.HTMLImports.__importsParsingHook=function(elt){if(elt.import){upgradeDocument(wrap(elt.import));}};}\nfunction bootstrap(){upgradeDocumentTree(window.wrap(document));window.CustomElements.ready=true;var requestAnimationFrame=window.requestAnimationFrame||function(f){setTimeout(f,16);};requestAnimationFrame(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now();if(window.HTMLImports){window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime;}\ndocument.dispatchEvent(new CustomEvent(\"WebComponentsReady\",{bubbles:true}));});});}\nif(document.readyState===\"complete\"||scope.flags.eager){bootstrap();}else if(document.readyState===\"interactive\"&&!window.attachEvent&&(!window.HTMLImports||window.HTMLImports.ready)){bootstrap();}else{var loadEvent=window.HTMLImports&&!window.HTMLImports.ready?\"HTMLImportsLoaded\":\"DOMContentLoaded\";window.addEventListener(loadEvent,bootstrap);}})(window.CustomElements);(function(scope){if(!Function.prototype.bind){Function.prototype.bind=function(scope){var self=this;var args=Array.prototype.slice.call(arguments,1);return function(){var args2=args.slice();args2.push.apply(args2,arguments);return self.apply(scope,args2);};};}})(window.WebComponents);(function(scope){var style=document.createElement(\"style\");style.textContent=\"\"+\"body {\"+\"transition: opacity ease-in 0.2s;\"+\" } \\n\"+\"body[unresolved] {\"+\"opacity: 0; display: block; overflow: hidden; position: relative;\"+\" } \\n\";var head=document.querySelector(\"head\");head.insertBefore(style,head.firstChild);})(window.WebComponents);(function(scope){window.Platform=scope;})(window.WebComponents);'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(window.Polymer){throw new Error('Cannot proceed. Polymer already present.');}\nwindow.Polymer={};window.Polymer.dom='shadow';}\n(function(){function resolve(){document.body.removeAttribute('unresolved');}\nif(window.WebComponents){addEventListener('WebComponentsReady',resolve);}else{if(document.readyState==='interactive'||document.readyState==='complete'){resolve();}else{addEventListener('DOMContentLoaded',resolve);}}}());window.Polymer={Settings:function(){var settings=window.Polymer||{};if(!settings.noUrlSettings){var parts=location.search.slice(1).split('&');for(var i=0,o;i<parts.length&&(o=parts[i]);i++){o=o.split('=');o[0]&&(settings[o[0]]=o[1]||true);}}\nsettings.wantShadow=settings.dom==='shadow';settings.hasShadow=Boolean(Element.prototype.createShadowRoot);settings.nativeShadow=settings.hasShadow&&!window.ShadowDOMPolyfill;settings.useShadow=settings.wantShadow&&settings.hasShadow;settings.hasNativeImports=Boolean('import'in document.createElement('link'));settings.useNativeImports=settings.hasNativeImports;settings.useNativeCustomElements=!window.CustomElements||window.CustomElements.useNative;settings.useNativeShadow=settings.useShadow&&settings.nativeShadow;settings.usePolyfillProto=!settings.useNativeCustomElements&&!Object.__proto__;settings.hasNativeCSSProperties=!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/)&&window.CSS&&CSS.supports&&CSS.supports('box-shadow','0 0 0 var(--foo)');settings.useNativeCSSProperties=settings.hasNativeCSSProperties&&settings.lazyRegister&&settings.useNativeCSSProperties;settings.isIE=navigator.userAgent.match('Trident');settings.passiveTouchGestures=settings.passiveTouchGestures||false;return settings;}()};(function(){var userPolymer=window.Polymer;window.Polymer=function(prototype){if(typeof prototype==='function'){prototype=prototype.prototype;}\nif(!prototype){prototype={};}\nprototype=desugar(prototype);var customCtor=prototype===prototype.constructor.prototype?prototype.constructor:null;var options={prototype:prototype};if(prototype.extends){options.extends=prototype.extends;}\nPolymer.telemetry._registrate(prototype);var ctor=document.registerElement(prototype.is,options);return customCtor||ctor;};var desugar=function(prototype){var base=Polymer.Base;if(prototype.extends){base=Polymer.Base._getExtendedPrototype(prototype.extends);}\nprototype=Polymer.Base.chainObject(prototype,base);prototype.registerCallback();return prototype;};if(userPolymer){for(var i in userPolymer){Polymer[i]=userPolymer[i];}}\nPolymer.Class=function(prototype){if(!prototype.factoryImpl){prototype.factoryImpl=function(){};}\nreturn desugar(prototype).constructor;};}());Polymer.telemetry={registrations:[],_regLog:function(prototype){console.log('['+prototype.is+']: registered');},_registrate:function(prototype){this.registrations.push(prototype);Polymer.log&&this._regLog(prototype);},dumpRegistrations:function(){this.registrations.forEach(this._regLog);}};Object.defineProperty(window,'currentImport',{enumerable:true,configurable:true,get:function(){return(document._currentScript||document.currentScript||{}).ownerDocument;}});Polymer.RenderStatus={_ready:false,_callbacks:[],whenReady:function(cb){if(this._ready){cb();}else{this._callbacks.push(cb);}},_makeReady:function(){this._ready=true;for(var i=0;i<this._callbacks.length;i++){this._callbacks[i]();}\nthis._callbacks=[];},_catchFirstRender:function(){requestAnimationFrame(function(){Polymer.RenderStatus._makeReady();});},_afterNextRenderQueue:[],_waitingNextRender:false,afterNextRender:function(element,fn,args){this._watchNextRender();this._afterNextRenderQueue.push([element,fn,args]);},hasRendered:function(){return this._ready;},_watchNextRender:function(){if(!this._waitingNextRender){this._waitingNextRender=true;var fn=function(){Polymer.RenderStatus._flushNextRender();};if(!this._ready){this.whenReady(fn);}else{requestAnimationFrame(fn);}}},_flushNextRender:function(){var self=this;setTimeout(function(){self._flushRenderCallbacks(self._afterNextRenderQueue);self._afterNextRenderQueue=[];self._waitingNextRender=false;});},_flushRenderCallbacks:function(callbacks){for(var i=0,h;i<callbacks.length;i++){h=callbacks[i];h[1].apply(h[0],h[2]||Polymer.nar);}}};if(window.HTMLImports){HTMLImports.whenReady(function(){Polymer.RenderStatus._catchFirstRender();});}else{Polymer.RenderStatus._catchFirstRender();}\nPolymer.ImportStatus=Polymer.RenderStatus;Polymer.ImportStatus.whenLoaded=Polymer.ImportStatus.whenReady;(function(){'use strict';var settings=Polymer.Settings;Polymer.Base={__isPolymerInstance__:true,_addFeature:function(feature){this.mixin(this,feature);},registerCallback:function(){if(settings.lazyRegister==='max'){if(this.beforeRegister){this.beforeRegister();}}else{this._desugarBehaviors();for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(this);}}\nif(this.beforeRegister){this.beforeRegister();}}\nthis._registerFeatures();if(!settings.lazyRegister){this.ensureRegisterFinished();}},createdCallback:function(){if(settings.disableUpgradeEnabled){if(this.hasAttribute('disable-upgrade')){this._propertySetter=disableUpgradePropertySetter;this._configValue=null;this.__data__={};return;}else{this.__hasInitialized=true;}}\nthis.__initialize();},__initialize:function(){if(!this.__hasRegisterFinished){this._ensureRegisterFinished(this.__proto__);}\nPolymer.telemetry.instanceCount++;this.root=this;for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.created){b.created.call(this);}}\nif(this.created){this.created();}\nthis._initFeatures();},ensureRegisterFinished:function(){this._ensureRegisterFinished(this);},_ensureRegisterFinished:function(proto){if(proto.__hasRegisterFinished!==proto.is||!proto.is){if(settings.lazyRegister==='max'){proto._desugarBehaviors();for(var i=0,b;i<proto.behaviors.length;i++){b=proto.behaviors[i];if(b.beforeRegister){b.beforeRegister.call(proto);}}}\nproto.__hasRegisterFinished=proto.is;if(proto._finishRegisterFeatures){proto._finishRegisterFeatures();}\nfor(var j=0,pb;j<proto.behaviors.length;j++){pb=proto.behaviors[j];if(pb.registered){pb.registered.call(proto);}}\nif(proto.registered){proto.registered();}\nif(settings.usePolyfillProto&&proto!==this){proto.extend(this,proto);}}},attachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=true;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.attached){b.attached.call(self);}}\nif(self.attached){self.attached();}});},detachedCallback:function(){var self=this;Polymer.RenderStatus.whenReady(function(){self.isAttached=false;for(var i=0,b;i<self.behaviors.length;i++){b=self.behaviors[i];if(b.detached){b.detached.call(self);}}\nif(self.detached){self.detached();}});},attributeChangedCallback:function(name,oldValue,newValue){this._attributeChangedImpl(name);for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.attributeChanged){b.attributeChanged.call(this,name,oldValue,newValue);}}\nif(this.attributeChanged){this.attributeChanged(name,oldValue,newValue);}},_attributeChangedImpl:function(name){this._setAttributeToProperty(this,name);},extend:function(target,source){if(target&&source){var n$=Object.getOwnPropertyNames(source);for(var i=0,n;i<n$.length&&(n=n$[i]);i++){this.copyOwnProperty(n,source,target);}}\nreturn target||source;},mixin:function(target,source){for(var i in source){target[i]=source[i];}\nreturn target;},copyOwnProperty:function(name,source,target){var pd=Object.getOwnPropertyDescriptor(source,name);if(pd){Object.defineProperty(target,name,pd);}},_logger:function(level,args){if(args.length===1&&Array.isArray(args[0])){args=args[0];}\nswitch(level){case'log':case'warn':case'error':console[level].apply(console,args);break;}},_log:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('log',args);},_warn:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('warn',args);},_error:function(){var args=Array.prototype.slice.call(arguments,0);this._logger('error',args);},_logf:function(){return this._logPrefix.concat(this.is).concat(Array.prototype.slice.call(arguments,0));}};Polymer.Base._logPrefix=function(){var color=window.chrome&&!/edge/i.test(navigator.userAgent)||/firefox/i.test(navigator.userAgent);return color?['%c[%s::%s]:','font-weight: bold; background-color:#EEEE00;']:['[%s::%s]:'];}();Polymer.Base.chainObject=function(object,inherited){if(object&&inherited&&object!==inherited){if(!Object.__proto__){object=Polymer.Base.extend(Object.create(inherited),object);}\nobject.__proto__=inherited;}\nreturn object;};Polymer.Base=Polymer.Base.chainObject(Polymer.Base,HTMLElement.prototype);Polymer.BaseDescriptors={};var disableUpgradePropertySetter;if(settings.disableUpgradeEnabled){disableUpgradePropertySetter=function(property,value){this.__data__[property]=value;};var origAttributeChangedCallback=Polymer.Base.attributeChangedCallback;Polymer.Base.attributeChangedCallback=function(name,oldValue,newValue){if(!this.__hasInitialized&&name==='disable-upgrade'){this.__hasInitialized=true;this._propertySetter=Polymer.Bind._modelApi._propertySetter;this._configValue=Polymer.Base._configValue;this.__initialize();}\norigAttributeChangedCallback.call(this,name,oldValue,newValue);};}\nif(window.CustomElements){Polymer.instanceof=CustomElements.instanceof;}else{Polymer.instanceof=function(obj,ctor){return obj instanceof ctor;};}\nPolymer.isInstance=function(obj){return Boolean(obj&&obj.__isPolymerInstance__);};Polymer.telemetry.instanceCount=0;}());(function(){var modules={};var lcModules={};var findModule=function(id){return modules[id]||lcModules[id.toLowerCase()];};var DomModule=function(){return document.createElement('dom-module');};DomModule.prototype=Object.create(HTMLElement.prototype);Polymer.Base.mixin(DomModule.prototype,{createdCallback:function(){this.register();},register:function(id){id=id||this.id||this.getAttribute('name')||this.getAttribute('is');if(id){this.id=id;modules[id]=this;lcModules[id.toLowerCase()]=this;}},import:function(id,selector){if(id){var m=findModule(id);if(!m){forceDomModulesUpgrade();m=findModule(id);}\nif(m&&selector){m=m.querySelector(selector);}\nreturn m;}}});Object.defineProperty(DomModule.prototype,'constructor',{value:DomModule,configurable:true,writable:true});var cePolyfill=window.CustomElements&&!CustomElements.useNative;document.registerElement('dom-module',DomModule);function forceDomModulesUpgrade(){if(cePolyfill){var script=document._currentScript||document.currentScript;var doc=script&&script.ownerDocument||document;var modules=doc.querySelectorAll('dom-module');for(var i=modules.length-1,m;i>=0&&(m=modules[i]);i--){if(m.__upgraded__){return;}else{CustomElements.upgrade(m);}}}}}());Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var module=(document._currentScript||document.currentScript).parentNode;if(module.localName==='dom-module'){var id=module.id||module.getAttribute('name')||module.getAttribute('is');this.is=id;}}\nif(this.is){this.is=this.is.toLowerCase();}}});Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){if(this.behaviors.length){this.behaviors=this._desugarSomeBehaviors(this.behaviors);}},_desugarSomeBehaviors:function(behaviors){var behaviorSet=[];behaviors=this._flattenBehaviorsList(behaviors);for(var i=behaviors.length-1;i>=0;i--){var b=behaviors[i];if(behaviorSet.indexOf(b)===-1){this._mixinBehavior(b);behaviorSet.unshift(b);}}\nreturn behaviorSet;},_flattenBehaviorsList:function(behaviors){var flat=[];for(var i=0;i<behaviors.length;i++){var b=behaviors[i];if(b instanceof Array){flat=flat.concat(this._flattenBehaviorsList(b));}else if(b){flat.push(b);}else{this._warn(this._logf('_flattenBehaviorsList','behavior is null, check for missing or 404 import'));}}\nreturn flat;},_mixinBehavior:function(b){var n$=Object.getOwnPropertyNames(b);var useAssignment=b._noAccessors;for(var i=0,n;i<n$.length&&(n=n$[i]);i++){if(!Polymer.Base._behaviorProperties[n]&&!this.hasOwnProperty(n)){if(useAssignment){this[n]=b[n];}else{this.copyOwnProperty(n,b,this);}}}},_prepBehaviors:function(){this._prepFlattenedBehaviors(this.behaviors);},_prepFlattenedBehaviors:function(behaviors){for(var i=0,l=behaviors.length;i<l;i++){this._prepBehavior(behaviors[i]);}\nthis._prepBehavior(this);},_marshalBehaviors:function(){for(var i=0;i<this.behaviors.length;i++){this._marshalBehavior(this.behaviors[i]);}\nthis._marshalBehavior(this);}});Polymer.Base._behaviorProperties={hostAttributes:true,beforeRegister:true,registered:true,properties:true,observers:true,listeners:true,created:true,attached:true,detached:true,attributeChanged:true,ready:true,_noAccessors:true};Polymer.Base._addFeature({_getExtendedPrototype:function(tag){return this._getExtendedNativePrototype(tag);},_nativePrototypes:{},_getExtendedNativePrototype:function(tag){var p=this._nativePrototypes[tag];if(!p){p=Object.create(this.getNativePrototype(tag));var p$=Object.getOwnPropertyNames(Polymer.Base);for(var i=0,n;i<p$.length&&(n=p$[i]);i++){if(!Polymer.BaseDescriptors[n]){p[n]=Polymer.Base[n];}}\nObject.defineProperties(p,Polymer.BaseDescriptors);this._nativePrototypes[tag]=p;}\nreturn p;},getNativePrototype:function(tag){return Object.getPrototypeOf(document.createElement(tag));}});Polymer.Base._addFeature({_prepConstructor:function(){this._factoryArgs=this.extends?[this.extends,this.is]:[this.is];var ctor=function(){return this._factory(arguments);};if(this.hasOwnProperty('extends')){ctor.extends=this.extends;}\nObject.defineProperty(this,'constructor',{value:ctor,writable:true,configurable:true});ctor.prototype=this;},_factory:function(args){var elt=document.createElement.apply(document,this._factoryArgs);if(this.factoryImpl){this.factoryImpl.apply(elt,args);}\nreturn elt;}});Polymer.nob=Object.create(null);Polymer.Base._addFeature({getPropertyInfo:function(property){var info=this._getPropertyInfo(property,this.properties);if(!info){for(var i=0;i<this.behaviors.length;i++){info=this._getPropertyInfo(property,this.behaviors[i].properties);if(info){return info;}}}\nreturn info||Polymer.nob;},_getPropertyInfo:function(property,properties){var p=properties&&properties[property];if(typeof p==='function'){p=properties[property]={type:p};}\nif(p){p.defined=true;}\nreturn p;},_prepPropertyInfo:function(){this._propertyInfo={};for(var i=0;i<this.behaviors.length;i++){this._addPropertyInfo(this._propertyInfo,this.behaviors[i].properties);}\nthis._addPropertyInfo(this._propertyInfo,this.properties);this._addPropertyInfo(this._propertyInfo,this._propertyEffects);},_addPropertyInfo:function(target,source){if(source){var t,s;for(var i in source){t=target[i];s=source[i];if(i[0]==='_'&&!s.readOnly){continue;}\nif(!target[i]){target[i]={type:typeof s==='function'?s:s.type,readOnly:s.readOnly,attribute:Polymer.CaseMap.camelToDashCase(i)};}else{if(!t.type){t.type=s.type;}\nif(!t.readOnly){t.readOnly=s.readOnly;}}}}}});(function(){var propertiesDesc={configurable:true,writable:true,enumerable:true,value:{}};Polymer.BaseDescriptors.properties=propertiesDesc;Object.defineProperty(Polymer.Base,'properties',propertiesDesc);}());Polymer.CaseMap={_caseMap:{},_rx:{dashToCamel:/-[a-z]/g,camelToDash:/([A-Z])/g},dashToCamelCase:function(dash){return this._caseMap[dash]||(this._caseMap[dash]=dash.indexOf('-')<0?dash:dash.replace(this._rx.dashToCamel,function(m){return m[1].toUpperCase();}));},camelToDashCase:function(camel){return this._caseMap[camel]||(this._caseMap[camel]=camel.replace(this._rx.camelToDash,'-$1').toLowerCase());}};Polymer.Base._addFeature({_addHostAttributes:function(attributes){if(!this._aggregatedAttributes){this._aggregatedAttributes={};}\nif(attributes){this.mixin(this._aggregatedAttributes,attributes);}},_marshalHostAttributes:function(){if(this._aggregatedAttributes){this._applyAttributes(this,this._aggregatedAttributes);}},_applyAttributes:function(node,attr$){for(var n in attr$){if(!this.hasAttribute(n)&&n!=='class'){var v=attr$[n];this.serializeValueToAttribute(v,n,this);}}},_marshalAttributes:function(){this._takeAttributesToModel(this);},_takeAttributesToModel:function(model){if(this.hasAttributes()){for(var i in this._propertyInfo){var info=this._propertyInfo[i];if(this.hasAttribute(info.attribute)){this._setAttributeToProperty(model,info.attribute,i,info);}}}},_setAttributeToProperty:function(model,attribute,property,info){if(!this._serializing){property=property||Polymer.CaseMap.dashToCamelCase(attribute);info=info||this._propertyInfo&&this._propertyInfo[property];if(info&&!info.readOnly){var v=this.getAttribute(attribute);model[property]=this.deserialize(v,info.type);}}},_serializing:false,reflectPropertyToAttribute:function(property,attribute,value){this._serializing=true;value=value===undefined?this[property]:value;this.serializeValueToAttribute(value,attribute||Polymer.CaseMap.camelToDashCase(property));this._serializing=false;},serializeValueToAttribute:function(value,attribute,node){var str=this.serialize(value);node=node||this;if(str===undefined){node.removeAttribute(attribute);}else{node.setAttribute(attribute,str);}},deserialize:function(value,type){switch(type){case Number:value=Number(value);break;case Boolean:value=value!=null;break;case Object:try{value=JSON.parse(value);}catch(x){}\nbreak;case Array:try{value=JSON.parse(value);}catch(x){value=null;console.warn('Polymer::Attributes: couldn`t decode Array as JSON');}\nbreak;case Date:value=new Date(value);break;case String:default:break;}\nreturn value;},serialize:function(value){switch(typeof value){case'boolean':return value?'':undefined;case'object':if(value instanceof Date){return value.toString();}else if(value){try{return JSON.stringify(value);}catch(x){return'';}}\ndefault:return value!=null?value:undefined;}}});Polymer.version=\"1.11.3\";Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();this._prepBehaviors();this._prepConstructor();this._prepPropertyInfo();},_prepBehavior:function(b){this._addHostAttributes(b.hostAttributes);},_marshalBehavior:function(b){},_initFeatures:function(){this._marshalHostAttributes();this._marshalBehaviors();}});(function(){function resolveCss(cssText,ownerDocument){return cssText.replace(CSS_URL_RX,function(m,pre,url,post){return pre+'\\''+resolve(url.replace(/[\"']/g,''),ownerDocument)+'\\''+post;});}\nfunction resolveAttrs(element,ownerDocument){for(var name in URL_ATTRS){var a$=URL_ATTRS[name];for(var i=0,l=a$.length,a,at,v;i<l&&(a=a$[i]);i++){if(name==='*'||element.localName===name){at=element.attributes[a];v=at&&at.value;if(v&&v.search(BINDING_RX)<0){at.value=a==='style'?resolveCss(v,ownerDocument):resolve(v,ownerDocument);}}}}}\nfunction resolve(url,ownerDocument){if(url&&ABS_URL.test(url)){return url;}\nvar resolver=getUrlResolver(ownerDocument);resolver.href=url;return resolver.href||url;}\nvar tempDoc;var tempDocBase;function resolveUrl(url,baseUri){if(!tempDoc){tempDoc=document.implementation.createHTMLDocument('temp');tempDocBase=tempDoc.createElement('base');tempDoc.head.appendChild(tempDocBase);}\ntempDocBase.href=baseUri;return resolve(url,tempDoc);}\nfunction getUrlResolver(ownerDocument){return ownerDocument.body.__urlResolver||(ownerDocument.body.__urlResolver=ownerDocument.createElement('a'));}\nfunction pathFromUrl(url){return url.substring(0,url.lastIndexOf('/')+1);}\nvar CSS_URL_RX=/(url\\()([^)]*)(\\))/g;var URL_ATTRS={'*':['href','src','style','url'],form:['action']};var ABS_URL=/(^\\/)|(^#)|(^[\\w-\\d]*:)/;var BINDING_RX=/\\{\\{|\\[\\[/;Polymer.ResolveUrl={resolveCss:resolveCss,resolveAttrs:resolveAttrs,resolveUrl:resolveUrl,pathFromUrl:pathFromUrl};Polymer.rootPath=Polymer.Settings.rootPath||pathFromUrl(document.baseURI||window.location.href);}());Polymer.Base._addFeature({_prepTemplate:function(){var module;if(this._template===undefined){module=Polymer.DomModule.import(this.is);this._template=module&&module.querySelector('template');}\nif(module){var assetPath=module.getAttribute('assetpath')||'';var importURL=Polymer.ResolveUrl.resolveUrl(assetPath,module.ownerDocument.baseURI);this._importPath=Polymer.ResolveUrl.pathFromUrl(importURL);}else{this._importPath='';}\nif(this._template&&this._template.hasAttribute('is')){this._warn(this._logf('_prepTemplate','top-level Polymer template '+'must not be a type-extension, found',this._template,'Move inside simple <template>.'));}\nif(this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate){HTMLTemplateElement.decorate(this._template);}},_stampTemplate:function(){if(this._template){this.root=this.instanceTemplate(this._template);}},instanceTemplate:function(template){var dom=document.importNode(template._content||template.content,true);return dom;}});(function(){var baseAttachedCallback=Polymer.Base.attachedCallback;var baseDetachedCallback=Polymer.Base.detachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(host){this.dataHost=host=host||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1];if(host&&host._clients){host._clients.push(this);}\nthis._clients=null;this._clientsReadied=false;},_beginHosting:function(){Polymer.Base._hostStack.push(this);if(!this._clients){this._clients=[];}},_endHosting:function(){Polymer.Base._hostStack.pop();},_tryReady:function(){this._readied=false;if(this._canReady()){this._ready();}},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied;},_ready:function(){this._beforeClientsReady();if(this._template){this._setupRoot();this._readyClients();}\nthis._clientsReadied=true;this._clients=null;this._afterClientsReady();this._readySelf();},_readyClients:function(){this._beginDistribute();var c$=this._clients;if(c$){for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._ready();}}\nthis._finishDistribute();},_readySelf:function(){for(var i=0,b;i<this.behaviors.length;i++){b=this.behaviors[i];if(b.ready){b.ready.call(this);}}\nif(this.ready){this.ready();}\nthis._readied=true;if(this._attachedPending){this._attachedPending=false;this.attachedCallback();}},_beforeClientsReady:function(){},_afterClientsReady:function(){},_beforeAttached:function(){},attachedCallback:function(){if(this._readied){this._beforeAttached();baseAttachedCallback.call(this);}else{this._attachedPending=true;}},detachedCallback:function(){if(this._readied){baseDetachedCallback.call(this);}else{this._attachedPending=false;}}});}());Polymer.ArraySplice=function(){function newSplice(index,removed,addedCount){return{index:index,removed:removed,addedCount:addedCount};}\nvar EDIT_LEAVE=0;var EDIT_UPDATE=1;var EDIT_ADD=2;var EDIT_DELETE=3;function ArraySplice(){}\nArraySplice.prototype={calcEditDistances:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var rowCount=oldEnd-oldStart+1;var columnCount=currentEnd-currentStart+1;var distances=new Array(rowCount);for(var i=0;i<rowCount;i++){distances[i]=new Array(columnCount);distances[i][0]=i;}\nfor(var j=0;j<columnCount;j++)\ndistances[0][j]=j;for(i=1;i<rowCount;i++){for(j=1;j<columnCount;j++){if(this.equals(current[currentStart+j-1],old[oldStart+i-1]))\ndistances[i][j]=distances[i-1][j-1];else{var north=distances[i-1][j]+1;var west=distances[i][j-1]+1;distances[i][j]=north<west?north:west;}}}\nreturn distances;},spliceOperationsFromEditDistances:function(distances){var i=distances.length-1;var j=distances[0].length-1;var current=distances[i][j];var edits=[];while(i>0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;}\nif(j==0){edits.push(EDIT_DELETE);i--;continue;}\nvar northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west<north)\nmin=west<northWest?west:northWest;else\nmin=north<northWest?north:northWest;if(min==northWest){if(northWest==current){edits.push(EDIT_LEAVE);}else{edits.push(EDIT_UPDATE);current=northWest;}\ni--;j--;}else if(min==west){edits.push(EDIT_DELETE);i--;current=west;}else{edits.push(EDIT_ADD);j--;current=north;}}\nedits.reverse();return edits;},calcSplices:function(current,currentStart,currentEnd,old,oldStart,oldEnd){var prefixCount=0;var suffixCount=0;var minLength=Math.min(currentEnd-currentStart,oldEnd-oldStart);if(currentStart==0&&oldStart==0)\nprefixCount=this.sharedPrefix(current,old,minLength);if(currentEnd==current.length&&oldEnd==old.length)\nsuffixCount=this.sharedSuffix(current,old,minLength-prefixCount);currentStart+=prefixCount;oldStart+=prefixCount;currentEnd-=suffixCount;oldEnd-=suffixCount;if(currentEnd-currentStart==0&&oldEnd-oldStart==0)\nreturn[];if(currentStart==currentEnd){var splice=newSplice(currentStart,[],0);while(oldStart<oldEnd)\nsplice.removed.push(old[oldStart++]);return[splice];}else if(oldStart==oldEnd)\nreturn[newSplice(currentStart,[],currentEnd-currentStart)];var ops=this.spliceOperationsFromEditDistances(this.calcEditDistances(current,currentStart,currentEnd,old,oldStart,oldEnd));splice=undefined;var splices=[];var index=currentStart;var oldIndex=oldStart;for(var i=0;i<ops.length;i++){switch(ops[i]){case EDIT_LEAVE:if(splice){splices.push(splice);splice=undefined;}\nindex++;oldIndex++;break;case EDIT_UPDATE:if(!splice)\nsplice=newSplice(index,[],0);splice.addedCount++;index++;splice.removed.push(old[oldIndex]);oldIndex++;break;case EDIT_ADD:if(!splice)\nsplice=newSplice(index,[],0);splice.addedCount++;index++;break;case EDIT_DELETE:if(!splice)\nsplice=newSplice(index,[],0);splice.removed.push(old[oldIndex]);oldIndex++;break;}}\nif(splice){splices.push(splice);}\nreturn splices;},sharedPrefix:function(current,old,searchLength){for(var i=0;i<searchLength;i++)\nif(!this.equals(current[i],old[i]))\nreturn i;return searchLength;},sharedSuffix:function(current,old,searchLength){var index1=current.length;var index2=old.length;var count=0;while(count<searchLength&&this.equals(current[--index1],old[--index2]))\ncount++;return count;},calculateSplices:function(current,previous){return this.calcSplices(current,0,current.length,previous,0,previous.length);},equals:function(currentValue,previousValue){return currentValue===previousValue;}};return new ArraySplice();}();Polymer.domInnerHTML=function(){var escapeAttrRegExp=/[&\\u00A0\"]/g;var escapeDataRegExp=/[&\\u00A0<>]/g;function escapeReplace(c){switch(c){case'&':return'&amp;';case'<':return'&lt;';case'>':return'&gt;';case'\"':return'&quot;';case'\\xA0':return'&nbsp;';}}\nfunction escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);}\nfunction escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);}\nfunction makeSet(arr){var set={};for(var i=0;i<arr.length;i++){set[arr[i]]=true;}\nreturn set;}\nvar voidElements=makeSet(['area','base','br','col','command','embed','hr','img','input','keygen','link','meta','param','source','track','wbr']);var plaintextParents=makeSet(['style','script','xmp','iframe','noembed','noframes','plaintext','noscript']);function getOuterHTML(node,parentNode,composed){switch(node.nodeType){case Node.ELEMENT_NODE:var tagName=node.localName;var s='<'+tagName;var attrs=node.attributes;for(var i=0,attr;attr=attrs[i];i++){s+=' '+attr.name+'=\"'+escapeAttr(attr.value)+'\"';}\ns+='>';if(voidElements[tagName]){return s;}\nreturn s+getInnerHTML(node,composed)+'</'+tagName+'>';case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName]){return data;}\nreturn escapeData(data);case Node.COMMENT_NODE:return'<!--'+node.data+'-->';default:console.error(node);throw new Error('not implemented');}}\nfunction getInnerHTML(node,composed){if(node instanceof HTMLTemplateElement)\nnode=node.content;var s='';var c$=Polymer.dom(node).childNodes;for(var i=0,l=c$.length,child;i<l&&(child=c$[i]);i++){s+=getOuterHTML(child,node,composed);}\nreturn s;}\nreturn{getInnerHTML:getInnerHTML};}();(function(){'use strict';var nativeInsertBefore=Element.prototype.insertBefore;var nativeAppendChild=Element.prototype.appendChild;var nativeRemoveChild=Element.prototype.removeChild;Polymer.TreeApi={arrayCopyChildNodes:function(parent){var copy=[],i=0;for(var n=parent.firstChild;n;n=n.nextSibling){copy[i++]=n;}\nreturn copy;},arrayCopyChildren:function(parent){var copy=[],i=0;for(var n=parent.firstElementChild;n;n=n.nextElementSibling){copy[i++]=n;}\nreturn copy;},arrayCopy:function(a$){var l=a$.length;var copy=new Array(l);for(var i=0;i<l;i++){copy[i]=a$[i];}\nreturn copy;}};Polymer.TreeApi.Logical={hasParentNode:function(node){return Boolean(node.__dom&&node.__dom.parentNode);},hasChildNodes:function(node){return Boolean(node.__dom&&node.__dom.childNodes!==undefined);},getChildNodes:function(node){return this.hasChildNodes(node)?this._getChildNodes(node):node.childNodes;},_getChildNodes:function(node){if(!node.__dom.childNodes){node.__dom.childNodes=[];for(var n=node.__dom.firstChild;n;n=n.__dom.nextSibling){node.__dom.childNodes.push(n);}}\nreturn node.__dom.childNodes;},getParentNode:function(node){return node.__dom&&node.__dom.parentNode!==undefined?node.__dom.parentNode:node.parentNode;},getFirstChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?node.__dom.firstChild:node.firstChild;},getLastChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?node.__dom.lastChild:node.lastChild;},getNextSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?node.__dom.nextSibling:node.nextSibling;},getPreviousSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?node.__dom.previousSibling:node.previousSibling;},getFirstElementChild:function(node){return node.__dom&&node.__dom.firstChild!==undefined?this._getFirstElementChild(node):node.firstElementChild;},_getFirstElementChild:function(node){var n=node.__dom.firstChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;}\nreturn n;},getLastElementChild:function(node){return node.__dom&&node.__dom.lastChild!==undefined?this._getLastElementChild(node):node.lastElementChild;},_getLastElementChild:function(node){var n=node.__dom.lastChild;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;}\nreturn n;},getNextElementSibling:function(node){return node.__dom&&node.__dom.nextSibling!==undefined?this._getNextElementSibling(node):node.nextElementSibling;},_getNextElementSibling:function(node){var n=node.__dom.nextSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.nextSibling;}\nreturn n;},getPreviousElementSibling:function(node){return node.__dom&&node.__dom.previousSibling!==undefined?this._getPreviousElementSibling(node):node.previousElementSibling;},_getPreviousElementSibling:function(node){var n=node.__dom.previousSibling;while(n&&n.nodeType!==Node.ELEMENT_NODE){n=n.__dom.previousSibling;}\nreturn n;},saveChildNodes:function(node){if(!this.hasChildNodes(node)){node.__dom=node.__dom||{};node.__dom.firstChild=node.firstChild;node.__dom.lastChild=node.lastChild;node.__dom.childNodes=[];for(var n=node.firstChild;n;n=n.nextSibling){n.__dom=n.__dom||{};n.__dom.parentNode=node;node.__dom.childNodes.push(n);n.__dom.nextSibling=n.nextSibling;n.__dom.previousSibling=n.previousSibling;}}},recordInsertBefore:function(node,container,ref_node){container.__dom.childNodes=null;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){for(var n=node.firstChild;n;n=n.nextSibling){this._linkNode(n,container,ref_node);}}else{this._linkNode(node,container,ref_node);}},_linkNode:function(node,container,ref_node){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(ref_node){ref_node.__dom=ref_node.__dom||{};}\nnode.__dom.previousSibling=ref_node?ref_node.__dom.previousSibling:container.__dom.lastChild;if(node.__dom.previousSibling){node.__dom.previousSibling.__dom.nextSibling=node;}\nnode.__dom.nextSibling=ref_node||null;if(node.__dom.nextSibling){node.__dom.nextSibling.__dom.previousSibling=node;}\nnode.__dom.parentNode=container;if(ref_node){if(ref_node===container.__dom.firstChild){container.__dom.firstChild=node;}}else{container.__dom.lastChild=node;if(!container.__dom.firstChild){container.__dom.firstChild=node;}}\ncontainer.__dom.childNodes=null;},recordRemoveChild:function(node,container){node.__dom=node.__dom||{};container.__dom=container.__dom||{};if(node===container.__dom.firstChild){container.__dom.firstChild=node.__dom.nextSibling;}\nif(node===container.__dom.lastChild){container.__dom.lastChild=node.__dom.previousSibling;}\nvar p=node.__dom.previousSibling;var n=node.__dom.nextSibling;if(p){p.__dom.nextSibling=n;}\nif(n){n.__dom.previousSibling=p;}\nnode.__dom.parentNode=node.__dom.previousSibling=node.__dom.nextSibling=undefined;container.__dom.childNodes=null;}};Polymer.TreeApi.Composed={getChildNodes:function(node){return Polymer.TreeApi.arrayCopyChildNodes(node);},getParentNode:function(node){return node.parentNode;},clearChildNodes:function(node){node.textContent='';},insertBefore:function(parentNode,newChild,refChild){return nativeInsertBefore.call(parentNode,newChild,refChild||null);},appendChild:function(parentNode,newChild){return nativeAppendChild.call(parentNode,newChild);},removeChild:function(parentNode,node){return nativeRemoveChild.call(parentNode,node);}};}());Polymer.DomApi=function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=function(node){this.node=needsToWrap?DomApi.wrap(node):node;};var needsToWrap=Settings.hasShadow&&!Settings.nativeShadow;DomApi.wrap=window.wrap?window.wrap:function(node){return node;};DomApi.prototype={flush:function(){Polymer.dom.flush();},deepContains:function(node){if(this.node.contains(node)){return true;}\nvar n=node;var doc=node.ownerDocument;while(n&&n!==doc&&n!==this.node){n=Polymer.dom(n).parentNode||n.host;}\nreturn n===this.node;},queryDistributedElements:function(selector){var c$=this.getEffectiveChildNodes();var list=[];for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.nodeType===Node.ELEMENT_NODE&&DomApi.matchesSelector.call(c,selector)){list.push(c);}}\nreturn list;},getEffectiveChildNodes:function(){var list=[];var c$=this.childNodes;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.localName===CONTENT){var d$=dom(c).getDistributedNodes();for(var j=0;j<d$.length;j++){list.push(d$[j]);}}else{list.push(c);}}\nreturn list;},observeNodes:function(callback){if(callback){if(!this.observer){this.observer=this.node.localName===CONTENT?new DomApi.DistributedNodesObserver(this):new DomApi.EffectiveNodesObserver(this);}\nreturn this.observer.addListener(callback);}},unobserveNodes:function(handle){if(this.observer){this.observer.removeListener(handle);}},notifyObserver:function(){if(this.observer){this.observer.notify();}},_query:function(matcher,node,halter){node=node||this.node;var list=[];this._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);return list;},_queryElements:function(elements,matcher,halter,list){for(var i=0,l=elements.length,c;i<l&&(c=elements[i]);i++){if(c.nodeType===Node.ELEMENT_NODE){if(this._queryElement(c,matcher,halter,list)){return true;}}}},_queryElement:function(node,matcher,halter,list){var result=matcher(node);if(result){list.push(node);}\nif(halter&&halter(result)){return result;}\nthis._queryElements(TreeApi.Logical.getChildNodes(node),matcher,halter,list);}};var CONTENT=DomApi.CONTENT='content';var dom=DomApi.factory=function(node){node=node||document;if(!node.__domApi){node.__domApi=new DomApi.ctor(node);}\nreturn node.__domApi;};DomApi.hasApi=function(node){return Boolean(node.__domApi);};DomApi.ctor=DomApi;Polymer.dom=function(obj,patch){if(obj instanceof Event){return Polymer.EventApi.factory(obj);}else{return DomApi.factory(obj,patch);}};var p=Element.prototype;DomApi.matchesSelector=p.matches||p.matchesSelector||p.mozMatchesSelector||p.msMatchesSelector||p.oMatchesSelector||p.webkitMatchesSelector;return DomApi;}();(function(){'use strict';var Settings=Polymer.Settings;var DomApi=Polymer.DomApi;var dom=DomApi.factory;var TreeApi=Polymer.TreeApi;var getInnerHTML=Polymer.domInnerHTML.getInnerHTML;var CONTENT=DomApi.CONTENT;if(Settings.useShadow){return;}\nvar nativeCloneNode=Element.prototype.cloneNode;var nativeImportNode=Document.prototype.importNode;Polymer.Base.mixin(DomApi.prototype,{_lazyDistribute:function(host){if(host.shadyRoot&&host.shadyRoot._distributionClean){host.shadyRoot._distributionClean=false;Polymer.dom.addDebouncer(host.debounce('_distribute',host._distributeContent));}},appendChild:function(node){return this.insertBefore(node);},insertBefore:function(node,ref_node){if(ref_node&&TreeApi.Logical.getParentNode(ref_node)!==this.node){throw Error('The ref_node to be inserted before is not a child '+'of this node');}\nif(node.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var parent=TreeApi.Logical.getParentNode(node);if(parent){if(DomApi.hasApi(parent)){dom(parent).notifyObserver();}\nthis._removeNode(node);}else{this._removeOwnerShadyRoot(node);}}\nif(!this._addNode(node,ref_node)){if(ref_node){ref_node=ref_node.localName===CONTENT?this._firstComposedNode(ref_node):ref_node;}\nvar container=this.node._isShadyRoot?this.node.host:this.node;if(ref_node){TreeApi.Composed.insertBefore(container,node,ref_node);}else{TreeApi.Composed.appendChild(container,node);}}\nthis.notifyObserver();return node;},_addNode:function(node,ref_node){var root=this.getOwnerRoot();if(root){var ipAdded=this._maybeAddInsertionPoint(node,this.node);if(!root._invalidInsertionPoints){root._invalidInsertionPoints=ipAdded;}\nthis._addNodeToHost(root.host,node);}\nif(TreeApi.Logical.hasChildNodes(this.node)){TreeApi.Logical.recordInsertBefore(node,this.node,ref_node);}\nvar handled=this._maybeDistribute(node)||this.node.shadyRoot;if(handled){if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE){while(node.firstChild){TreeApi.Composed.removeChild(node,node.firstChild);}}else{var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}}\nreturn handled;},removeChild:function(node){if(TreeApi.Logical.getParentNode(node)!==this.node){throw Error('The node to be removed is not a child of this node: '+node);}\nif(!this._removeNode(node)){var container=this.node._isShadyRoot?this.node.host:this.node;var parent=TreeApi.Composed.getParentNode(node);if(container===parent){TreeApi.Composed.removeChild(container,node);}}\nthis.notifyObserver();return node;},_removeNode:function(node){var logicalParent=TreeApi.Logical.hasParentNode(node)&&TreeApi.Logical.getParentNode(node);var distributed;var root=this._ownerShadyRootForNode(node);if(logicalParent){distributed=dom(node)._maybeDistributeParent();TreeApi.Logical.recordRemoveChild(node,logicalParent);if(root&&this._removeDistributedChildren(root,node)){root._invalidInsertionPoints=true;this._lazyDistribute(root.host);}}\nthis._removeOwnerShadyRoot(node);if(root){this._removeNodeFromHost(root.host,node);}\nreturn distributed;},replaceChild:function(node,ref_node){this.insertBefore(node,ref_node);this.removeChild(ref_node);return node;},_hasCachedOwnerRoot:function(node){return Boolean(node._ownerShadyRoot!==undefined);},getOwnerRoot:function(){return this._ownerShadyRootForNode(this.node);},_ownerShadyRootForNode:function(node){if(!node){return;}\nvar root=node._ownerShadyRoot;if(root===undefined){if(node._isShadyRoot){root=node;}else{var parent=TreeApi.Logical.getParentNode(node);if(parent){root=parent._isShadyRoot?parent:this._ownerShadyRootForNode(parent);}else{root=null;}}\nif(root||document.documentElement.contains(node)){node._ownerShadyRoot=root;}}\nreturn root;},_maybeDistribute:function(node){var fragContent=node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent&&dom(node).querySelector(CONTENT);var wrappedContent=fragContent&&TreeApi.Logical.getParentNode(fragContent).nodeType!==Node.DOCUMENT_FRAGMENT_NODE;var hasContent=fragContent||node.localName===CONTENT;if(hasContent){var root=this.getOwnerRoot();if(root){this._lazyDistribute(root.host);}}\nvar needsDist=this._nodeNeedsDistribution(this.node);if(needsDist){this._lazyDistribute(this.node);}\nreturn needsDist||hasContent&&!wrappedContent;},_maybeAddInsertionPoint:function(node,parent){var added;if(node.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&!node.__noContent){var c$=dom(node).querySelectorAll(CONTENT);for(var i=0,n,np,na;i<c$.length&&(n=c$[i]);i++){np=TreeApi.Logical.getParentNode(n);if(np===node){np=parent;}\nna=this._maybeAddInsertionPoint(n,np);added=added||na;}}else if(node.localName===CONTENT){TreeApi.Logical.saveChildNodes(parent);TreeApi.Logical.saveChildNodes(node);added=true;}\nreturn added;},_updateInsertionPoints:function(host){var i$=host.shadyRoot._insertionPoints=dom(host.shadyRoot).querySelectorAll(CONTENT);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(TreeApi.Logical.getParentNode(c));}},_nodeNeedsDistribution:function(node){return node&&node.shadyRoot&&DomApi.hasInsertionPoint(node.shadyRoot);},_addNodeToHost:function(host,node){if(host._elementAdd){host._elementAdd(node);}},_removeNodeFromHost:function(host,node){if(host._elementRemove){host._elementRemove(node);}},_removeDistributedChildren:function(root,container){var hostNeedsDist;var ip$=root._insertionPoints;for(var i=0;i<ip$.length;i++){var content=ip$[i];if(this._contains(container,content)){var dc$=dom(content).getDistributedNodes();for(var j=0;j<dc$.length;j++){hostNeedsDist=true;var node=dc$[j];var parent=TreeApi.Composed.getParentNode(node);if(parent){TreeApi.Composed.removeChild(parent,node);}}}}\nreturn hostNeedsDist;},_contains:function(container,node){while(node){if(node==container){return true;}\nnode=TreeApi.Logical.getParentNode(node);}},_removeOwnerShadyRoot:function(node){if(this._hasCachedOwnerRoot(node)){var c$=TreeApi.Logical.getChildNodes(node);for(var i=0,l=c$.length,n;i<l&&(n=c$[i]);i++){this._removeOwnerShadyRoot(n);}}\nnode._ownerShadyRoot=undefined;},_firstComposedNode:function(content){var n$=dom(content).getDistributedNodes();for(var i=0,l=n$.length,n,p$;i<l&&(n=n$[i]);i++){p$=dom(n).getDestinationInsertionPoints();if(p$[p$.length-1]===content){return n;}}},querySelector:function(selector){var result=this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node,function(n){return Boolean(n);})[0];return result||null;},querySelectorAll:function(selector){return this._query(function(n){return DomApi.matchesSelector.call(n,selector);},this.node);},getDestinationInsertionPoints:function(){return this.node._destinationInsertionPoints||[];},getDistributedNodes:function(){return this.node._distributedNodes||[];},_clear:function(){while(this.childNodes.length){this.removeChild(this.childNodes[0]);}},setAttribute:function(name,value){this.node.setAttribute(name,value);this._maybeDistributeParent();},removeAttribute:function(name){this.node.removeAttribute(name);this._maybeDistributeParent();},_maybeDistributeParent:function(){if(this._nodeNeedsDistribution(this.parentNode)){this._lazyDistribute(this.parentNode);return true;}},cloneNode:function(deep){var n=nativeCloneNode.call(this.node,false);if(deep){var c$=this.childNodes;var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(c$[i]).cloneNode(true);d.appendChild(nc);}}\nreturn n;},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;var n=nativeImportNode.call(doc,externalNode,false);if(deep){var c$=TreeApi.Logical.getChildNodes(externalNode);var d=dom(n);for(var i=0,nc;i<c$.length;i++){nc=dom(doc).importNode(c$[i],true);d.appendChild(nc);}}\nreturn n;},_getComposedInnerHTML:function(){return getInnerHTML(this.node,true);}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var active=document.activeElement;if(!active){return null;}\nvar isShadyRoot=!!this.node._isShadyRoot;if(this.node!==document){if(!isShadyRoot){return null;}\nif(this.node.host===active||!this.node.host.contains(active)){return null;}}\nvar activeRoot=dom(active).getOwnerRoot();while(activeRoot&&activeRoot!==this.node){active=activeRoot.host;activeRoot=dom(active).getOwnerRoot();}\nif(this.node===document){return activeRoot?null:active;}else{return activeRoot===this.node?active:null;}},configurable:true},childNodes:{get:function(){var c$=TreeApi.Logical.getChildNodes(this.node);return Array.isArray(c$)?c$:TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){if(TreeApi.Logical.hasChildNodes(this.node)){return Array.prototype.filter.call(this.childNodes,function(n){return n.nodeType===Node.ELEMENT_NODE;});}else{return TreeApi.arrayCopyChildren(this.node);}},configurable:true},parentNode:{get:function(){return TreeApi.Logical.getParentNode(this.node);},configurable:true},firstChild:{get:function(){return TreeApi.Logical.getFirstChild(this.node);},configurable:true},lastChild:{get:function(){return TreeApi.Logical.getLastChild(this.node);},configurable:true},nextSibling:{get:function(){return TreeApi.Logical.getNextSibling(this.node);},configurable:true},previousSibling:{get:function(){return TreeApi.Logical.getPreviousSibling(this.node);},configurable:true},firstElementChild:{get:function(){return TreeApi.Logical.getFirstElementChild(this.node);},configurable:true},lastElementChild:{get:function(){return TreeApi.Logical.getLastElementChild(this.node);},configurable:true},nextElementSibling:{get:function(){return TreeApi.Logical.getNextElementSibling(this.node);},configurable:true},previousElementSibling:{get:function(){return TreeApi.Logical.getPreviousElementSibling(this.node);},configurable:true},textContent:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return this.node.textContent;}else{var tc=[];for(var i=0,cn=this.childNodes,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(c.textContent);}}\nreturn tc.join('');}},set:function(text){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){this.node.textContent=text;}else{this._clear();if(text){this.appendChild(document.createTextNode(text));}}},configurable:true},innerHTML:{get:function(){var nt=this.node.nodeType;if(nt===Node.TEXT_NODE||nt===Node.COMMENT_NODE){return null;}else{return getInnerHTML(this.node);}},set:function(text){var nt=this.node.nodeType;if(nt!==Node.TEXT_NODE||nt!==Node.COMMENT_NODE){this._clear();var d=document.createElement('div');d.innerHTML=text;var c$=TreeApi.arrayCopyChildNodes(d);for(var i=0;i<c$.length;i++){this.appendChild(c$[i]);}}},configurable:true}});DomApi.hasInsertionPoint=function(root){return Boolean(root&&root._insertionPoints.length);};}());(function(){'use strict';var Settings=Polymer.Settings;var TreeApi=Polymer.TreeApi;var DomApi=Polymer.DomApi;if(!Settings.useShadow){return;}\nPolymer.Base.mixin(DomApi.prototype,{querySelectorAll:function(selector){return TreeApi.arrayCopy(this.node.querySelectorAll(selector));},getOwnerRoot:function(){var n=this.node;while(n){if(n.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&n.host){return n;}\nn=n.parentNode;}},importNode:function(externalNode,deep){var doc=this.node instanceof Document?this.node:this.node.ownerDocument;return doc.importNode(externalNode,deep);},getDestinationInsertionPoints:function(){var n$=this.node.getDestinationInsertionPoints&&this.node.getDestinationInsertionPoints();return n$?TreeApi.arrayCopy(n$):[];},getDistributedNodes:function(){var n$=this.node.getDistributedNodes&&this.node.getDistributedNodes();return n$?TreeApi.arrayCopy(n$):[];}});Object.defineProperties(DomApi.prototype,{activeElement:{get:function(){var node=DomApi.wrap(this.node);var activeElement=node.activeElement;return node.contains(activeElement)?activeElement:null;},configurable:true},childNodes:{get:function(){return TreeApi.arrayCopyChildNodes(this.node);},configurable:true},children:{get:function(){return TreeApi.arrayCopyChildren(this.node);},configurable:true},textContent:{get:function(){return this.node.textContent;},set:function(value){return this.node.textContent=value;},configurable:true},innerHTML:{get:function(){return this.node.innerHTML;},set:function(value){return this.node.innerHTML=value;},configurable:true}});var forwardMethods=function(m$){for(var i=0;i<m$.length;i++){forwardMethod(m$[i]);}};var forwardMethod=function(method){DomApi.prototype[method]=function(){return this.node[method].apply(this.node,arguments);};};forwardMethods(['cloneNode','appendChild','insertBefore','removeChild','replaceChild','setAttribute','removeAttribute','querySelector']);var forwardProperties=function(f$){for(var i=0;i<f$.length;i++){forwardProperty(f$[i]);}};var forwardProperty=function(name){Object.defineProperty(DomApi.prototype,name,{get:function(){return this.node[name];},configurable:true});};forwardProperties(['parentNode','firstChild','lastChild','nextSibling','previousSibling','firstElementChild','lastElementChild','nextElementSibling','previousElementSibling']);}());Polymer.Base.mixin(Polymer.dom,{_flushGuard:0,_FLUSH_MAX:100,_needsTakeRecords:!Polymer.Settings.useNativeCustomElements,_debouncers:[],_staticFlushList:[],_finishDebouncer:null,flush:function(){this._flushGuard=0;this._prepareFlush();while(this._debouncers.length&&this._flushGuard<this._FLUSH_MAX){while(this._debouncers.length){this._debouncers.shift().complete();}\nif(this._finishDebouncer){this._finishDebouncer.complete();}\nthis._prepareFlush();this._flushGuard++;}\nif(this._flushGuard>=this._FLUSH_MAX){console.warn('Polymer.dom.flush aborted. Flush may not be complete.');}},_prepareFlush:function(){if(this._needsTakeRecords){CustomElements.takeRecords();}\nfor(var i=0;i<this._staticFlushList.length;i++){this._staticFlushList[i]();}},addStaticFlush:function(fn){this._staticFlushList.push(fn);},removeStaticFlush:function(fn){var i=this._staticFlushList.indexOf(fn);if(i>=0){this._staticFlushList.splice(i,1);}},addDebouncer:function(debouncer){this._debouncers.push(debouncer);this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush);},_finishFlush:function(){Polymer.dom._debouncers=[];}});Polymer.EventApi=function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.Event=function(event){this.event=event;};if(Settings.useShadow){DomApi.Event.prototype={get rootTarget(){return this.event.path[0];},get localTarget(){return this.event.target;},get path(){var path=this.event.path;if(!Array.isArray(path)){path=Array.prototype.slice.call(path);}\nreturn path;}};}else{DomApi.Event.prototype={get rootTarget(){return this.event.target;},get localTarget(){var current=this.event.currentTarget;var currentRoot=current&&Polymer.dom(current).getOwnerRoot();var p$=this.path;for(var i=0;i<p$.length;i++){if(Polymer.dom(p$[i]).getOwnerRoot()===currentRoot){return p$[i];}}},get path(){if(!this.event._path){var path=[];var current=this.rootTarget;while(current){path.push(current);var insertionPoints=Polymer.dom(current).getDestinationInsertionPoints();if(insertionPoints.length){for(var i=0;i<insertionPoints.length-1;i++){path.push(insertionPoints[i]);}\ncurrent=insertionPoints[insertionPoints.length-1];}else{current=Polymer.dom(current).parentNode||current.host;}}\npath.push(window);this.event._path=path;}\nreturn this.event._path;}};}\nvar factory=function(event){if(!event.__eventApi){event.__eventApi=new DomApi.Event(event);}\nreturn event.__eventApi;};return{factory:factory};}();(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var useShadow=Polymer.Settings.useShadow;Object.defineProperty(DomApi.prototype,'classList',{get:function(){if(!this._classList){this._classList=new DomApi.ClassList(this);}\nreturn this._classList;},configurable:true});DomApi.ClassList=function(host){this.domApi=host;this.node=host.node;};DomApi.ClassList.prototype={add:function(){this.node.classList.add.apply(this.node.classList,arguments);this._distributeParent();},remove:function(){this.node.classList.remove.apply(this.node.classList,arguments);this._distributeParent();},toggle:function(){this.node.classList.toggle.apply(this.node.classList,arguments);this._distributeParent();},_distributeParent:function(){if(!useShadow){this.domApi._maybeDistributeParent();}},contains:function(){return this.node.classList.contains.apply(this.node.classList,arguments);}};}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.EffectiveNodesObserver=function(domApi){this.domApi=domApi;this.node=this.domApi.node;this._listeners=[];};DomApi.EffectiveNodesObserver.prototype={addListener:function(callback){if(!this._isSetup){this._setup();this._isSetup=true;}\nvar listener={fn:callback,_nodes:[]};this._listeners.push(listener);this._scheduleNotify();return listener;},removeListener:function(handle){var i=this._listeners.indexOf(handle);if(i>=0){this._listeners.splice(i,1);handle._nodes=[];}\nif(!this._hasListeners()){this._cleanup();this._isSetup=false;}},_setup:function(){this._observeContentElements(this.domApi.childNodes);},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes);},_hasListeners:function(){return Boolean(this._listeners.length);},_scheduleNotify:function(){if(this._debouncer){this._debouncer.stop();}\nthis._debouncer=Polymer.Debounce(this._debouncer,this._notify);this._debouncer.context=this;Polymer.dom.addDebouncer(this._debouncer);},notify:function(){if(this._hasListeners()){this._scheduleNotify();}},_notify:function(){this._beforeCallListeners();this._callListeners();},_beforeCallListeners:function(){this._updateContentElements();},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes);},_observeContentElements:function(elements){for(var i=0,n;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){n.__observeNodesMap=n.__observeNodesMap||new WeakMap();if(!n.__observeNodesMap.has(this)){n.__observeNodesMap.set(this,this._observeContent(n));}}}},_observeContent:function(content){var self=this;var h=Polymer.dom(content).observeNodes(function(){self._scheduleNotify();});h._avoidChangeCalculation=true;return h;},_unobserveContentElements:function(elements){for(var i=0,n,h;i<elements.length&&(n=elements[i]);i++){if(this._isContent(n)){h=n.__observeNodesMap.get(this);if(h){Polymer.dom(n).unobserveNodes(h);n.__observeNodesMap.delete(this);}}}},_isContent:function(node){return node.localName==='content';},_callListeners:function(){var o$=this._listeners;var nodes=this._getEffectiveNodes();for(var i=0,o;i<o$.length&&(o=o$[i]);i++){var info=this._generateListenerInfo(o,nodes);if(info||o._alwaysNotify){this._callListener(o,info);}}},_getEffectiveNodes:function(){return this.domApi.getEffectiveChildNodes();},_generateListenerInfo:function(listener,newNodes){if(listener._avoidChangeCalculation){return true;}\nvar oldNodes=listener._nodes;var info={target:this.node,addedNodes:[],removedNodes:[]};var splices=Polymer.ArraySplice.calculateSplices(newNodes,oldNodes);for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){info.removedNodes.push(n);}}\nfor(i=0,s;i<splices.length&&(s=splices[i]);i++){for(j=s.index;j<s.index+s.addedCount;j++){info.addedNodes.push(newNodes[j]);}}\nlistener._nodes=newNodes;if(info.addedNodes.length||info.removedNodes.length){return info;}},_callListener:function(listener,info){return listener.fn.call(this.node,info);},enableShadowAttributeTracking:function(){}};if(Settings.useShadow){var baseSetup=DomApi.EffectiveNodesObserver.prototype._setup;var baseCleanup=DomApi.EffectiveNodesObserver.prototype._cleanup;Polymer.Base.mixin(DomApi.EffectiveNodesObserver.prototype,{_setup:function(){if(!this._observer){var self=this;this._mutationHandler=function(mxns){if(mxns&&mxns.length){self._scheduleNotify();}};this._observer=new MutationObserver(this._mutationHandler);this._boundFlush=function(){self._flush();};Polymer.dom.addStaticFlush(this._boundFlush);this._observer.observe(this.node,{childList:true});}\nbaseSetup.call(this);},_cleanup:function(){this._observer.disconnect();this._observer=null;this._mutationHandler=null;Polymer.dom.removeStaticFlush(this._boundFlush);baseCleanup.call(this);},_flush:function(){if(this._observer){this._mutationHandler(this._observer.takeRecords());}},enableShadowAttributeTracking:function(){if(this._observer){this._makeContentListenersAlwaysNotify();this._observer.disconnect();this._observer.observe(this.node,{childList:true,attributes:true,subtree:true});var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host&&Polymer.dom(host).observer){Polymer.dom(host).observer.enableShadowAttributeTracking();}}},_makeContentListenersAlwaysNotify:function(){for(var i=0,h;i<this._listeners.length;i++){h=this._listeners[i];h._alwaysNotify=h._isContentListener;}}});}}());(function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.DistributedNodesObserver=function(domApi){DomApi.EffectiveNodesObserver.call(this,domApi);};DomApi.DistributedNodesObserver.prototype=Object.create(DomApi.EffectiveNodesObserver.prototype);Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){},_cleanup:function(){},_beforeCallListeners:function(){},_getEffectiveNodes:function(){return this.domApi.getDistributedNodes();}});if(Settings.useShadow){Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype,{_setup:function(){if(!this._observer){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){var self=this;this._observer=Polymer.dom(host).observeNodes(function(){self._scheduleNotify();});this._observer._isContentListener=true;if(this._hasAttrSelect()){Polymer.dom(host).observer.enableShadowAttributeTracking();}}}},_hasAttrSelect:function(){var select=this.node.getAttribute('select');return select&&select.match(/[[.]+/);},_cleanup:function(){var root=this.domApi.getOwnerRoot();var host=root&&root.host;if(host){Polymer.dom(host).unobserveNodes(this._observer);}\nthis._observer=null;}});}}());(function(){var DomApi=Polymer.DomApi;var TreeApi=Polymer.TreeApi;Polymer.Base._addFeature({_prepShady:function(){this._useContent=this._useContent||Boolean(this._template);},_setupShady:function(){this.shadyRoot=null;if(!this.__domApi){this.__domApi=null;}\nif(!this.__dom){this.__dom=null;}\nif(!this._ownerShadyRoot){this._ownerShadyRoot=undefined;}},_poolContent:function(){if(this._useContent){TreeApi.Logical.saveChildNodes(this);}},_setupRoot:function(){if(this._useContent){this._createLocalRoot();if(!this.dataHost){upgradeLogicalChildren(TreeApi.Logical.getChildNodes(this));}}},_createLocalRoot:function(){this.shadyRoot=this.root;this.shadyRoot._distributionClean=false;this.shadyRoot._hasDistributed=false;this.shadyRoot._isShadyRoot=true;this.shadyRoot._dirtyRoots=[];var i$=this.shadyRoot._insertionPoints=!this._notes||this._notes._hasContent?this.shadyRoot.querySelectorAll('content'):[];TreeApi.Logical.saveChildNodes(this.shadyRoot);for(var i=0,c;i<i$.length;i++){c=i$[i];TreeApi.Logical.saveChildNodes(c);TreeApi.Logical.saveChildNodes(c.parentNode);}\nthis.shadyRoot.host=this;},distributeContent:function(updateInsertionPoints){if(this.shadyRoot){this.shadyRoot._invalidInsertionPoints=this.shadyRoot._invalidInsertionPoints||updateInsertionPoints;var host=getTopDistributingHost(this);Polymer.dom(this)._lazyDistribute(host);}},_distributeContent:function(){if(this._useContent&&!this.shadyRoot._distributionClean){if(this.shadyRoot._invalidInsertionPoints){Polymer.dom(this)._updateInsertionPoints(this);this.shadyRoot._invalidInsertionPoints=false;}\nthis._beginDistribute();this._distributeDirtyRoots();this._finishDistribute();}},_beginDistribute:function(){if(this._useContent&&DomApi.hasInsertionPoint(this.shadyRoot)){this._resetDistribution();this._distributePool(this.shadyRoot,this._collectPool());}},_distributeDirtyRoots:function(){var c$=this.shadyRoot._dirtyRoots;for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){c._distributeContent();}\nthis.shadyRoot._dirtyRoots=[];},_finishDistribute:function(){if(this._useContent){this.shadyRoot._distributionClean=true;if(DomApi.hasInsertionPoint(this.shadyRoot)){this._composeTree();notifyContentObservers(this.shadyRoot);}else{if(!this.shadyRoot._hasDistributed){TreeApi.Composed.clearChildNodes(this);this.appendChild(this.shadyRoot);}else{var children=this._composeNode(this);this._updateChildNodes(this,children);}}\nif(!this.shadyRoot._hasDistributed){notifyInitialDistribution(this);}\nthis.shadyRoot._hasDistributed=true;}},elementMatches:function(selector,node){node=node||this;return DomApi.matchesSelector.call(node,selector);},_resetDistribution:function(){var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(child._destinationInsertionPoints){child._destinationInsertionPoints=undefined;}\nif(isInsertionPoint(child)){clearDistributedDestinationInsertionPoints(child);}}\nvar root=this.shadyRoot;var p$=root._insertionPoints;for(var j=0;j<p$.length;j++){p$[j]._distributedNodes=[];}},_collectPool:function(){var pool=[];var children=TreeApi.Logical.getChildNodes(this);for(var i=0;i<children.length;i++){var child=children[i];if(isInsertionPoint(child)){pool.push.apply(pool,child._distributedNodes);}else{pool.push(child);}}\nreturn pool;},_distributePool:function(node,pool){var p$=node._insertionPoints;for(var i=0,l=p$.length,p;i<l&&(p=p$[i]);i++){this._distributeInsertionPoint(p,pool);maybeRedistributeParent(p,this);}},_distributeInsertionPoint:function(content,pool){var anyDistributed=false;for(var i=0,l=pool.length,node;i<l;i++){node=pool[i];if(!node){continue;}\nif(this._matchesContentSelect(node,content)){distributeNodeInto(node,content);pool[i]=undefined;anyDistributed=true;}}\nif(!anyDistributed){var children=TreeApi.Logical.getChildNodes(content);for(var j=0;j<children.length;j++){distributeNodeInto(children[j],content);}}},_composeTree:function(){this._updateChildNodes(this,this._composeNode(this));var p$=this.shadyRoot._insertionPoints;for(var i=0,l=p$.length,p,parent;i<l&&(p=p$[i]);i++){parent=TreeApi.Logical.getParentNode(p);if(!parent._useContent&&parent!==this&&parent!==this.shadyRoot){this._updateChildNodes(parent,this._composeNode(parent));}}},_composeNode:function(node){var children=[];var c$=TreeApi.Logical.getChildNodes(node.shadyRoot||node);for(var i=0;i<c$.length;i++){var child=c$[i];if(isInsertionPoint(child)){var distributedNodes=child._distributedNodes;for(var j=0;j<distributedNodes.length;j++){var distributedNode=distributedNodes[j];if(isFinalDestination(child,distributedNode)){children.push(distributedNode);}}}else{children.push(child);}}\nreturn children;},_updateChildNodes:function(container,children){var composed=TreeApi.Composed.getChildNodes(container);var splices=Polymer.ArraySplice.calculateSplices(children,composed);for(var i=0,d=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0,n;j<s.removed.length&&(n=s.removed[j]);j++){if(TreeApi.Composed.getParentNode(n)===container){TreeApi.Composed.removeChild(container,n);}\ncomposed.splice(s.index+d,1);}\nd-=s.addedCount;}\nfor(var i=0,s,next;i<splices.length&&(s=splices[i]);i++){next=composed[s.index];for(j=s.index,n;j<s.index+s.addedCount;j++){n=children[j];TreeApi.Composed.insertBefore(container,n,next);composed.splice(j,0,n);}}},_matchesContentSelect:function(node,contentElement){var select=contentElement.getAttribute('select');if(!select){return true;}\nselect=select.trim();if(!select){return true;}\nif(!(node instanceof Element)){return false;}\nvar validSelectors=/^(:not\\()?[*.#[a-zA-Z_|]/;if(!validSelectors.test(select)){return false;}\nreturn this.elementMatches(select,node);},_elementAdd:function(){},_elementRemove:function(){}});var domHostDesc={get:function(){var root=Polymer.dom(this).getOwnerRoot();return root&&root.host;},configurable:true};Object.defineProperty(Polymer.Base,'domHost',domHostDesc);Polymer.BaseDescriptors.domHost=domHostDesc;function distributeNodeInto(child,insertionPoint){insertionPoint._distributedNodes.push(child);var points=child._destinationInsertionPoints;if(!points){child._destinationInsertionPoints=[insertionPoint];}else{points.push(insertionPoint);}}\nfunction clearDistributedDestinationInsertionPoints(content){var e$=content._distributedNodes;if(e$){for(var i=0;i<e$.length;i++){var d=e$[i]._destinationInsertionPoints;if(d){d.splice(d.indexOf(content)+1,d.length);}}}}\nfunction maybeRedistributeParent(content,host){var parent=TreeApi.Logical.getParentNode(content);if(parent&&parent.shadyRoot&&DomApi.hasInsertionPoint(parent.shadyRoot)&&parent.shadyRoot._distributionClean){parent.shadyRoot._distributionClean=false;host.shadyRoot._dirtyRoots.push(parent);}}\nfunction isFinalDestination(insertionPoint,node){var points=node._destinationInsertionPoints;return points&&points[points.length-1]===insertionPoint;}\nfunction isInsertionPoint(node){return node.localName=='content';}\nfunction getTopDistributingHost(host){while(host&&hostNeedsRedistribution(host)){host=host.domHost;}\nreturn host;}\nfunction hostNeedsRedistribution(host){var c$=TreeApi.Logical.getChildNodes(host);for(var i=0,c;i<c$.length;i++){c=c$[i];if(c.localName&&c.localName==='content'){return host.domHost;}}}\nfunction notifyContentObservers(root){for(var i=0,c;i<root._insertionPoints.length;i++){c=root._insertionPoints[i];if(DomApi.hasApi(c)){Polymer.dom(c).notifyObserver();}}}\nfunction notifyInitialDistribution(host){if(DomApi.hasApi(host)){Polymer.dom(host).notifyObserver();}}\nvar needsUpgrade=window.CustomElements&&!CustomElements.useNative;function upgradeLogicalChildren(children){if(needsUpgrade&&children){for(var i=0;i<children.length;i++){CustomElements.upgrade(children[i]);}}}}());if(Polymer.Settings.useShadow){Polymer.Base._addFeature({_poolContent:function(){},_beginDistribute:function(){},distributeContent:function(){},_distributeContent:function(){},_finishDistribute:function(){},_createLocalRoot:function(){this.createShadowRoot();this.shadowRoot.appendChild(this.root);this.root=this.shadowRoot;}});}Polymer.Async={_currVal:0,_lastVal:0,_callbacks:[],_twiddleContent:0,_twiddle:document.createTextNode(''),run:function(callback,waitTime){if(waitTime>0){return~setTimeout(callback,waitTime);}else{this._twiddle.textContent=this._twiddleContent++;this._callbacks.push(callback);return this._currVal++;}},cancel:function(handle){if(handle<0){clearTimeout(~handle);}else{var idx=handle-this._lastVal;if(idx>=0){if(!this._callbacks[idx]){throw'invalid async handle: '+handle;}\nthis._callbacks[idx]=null;}}},_atEndOfMicrotask:function(){var len=this._callbacks.length;for(var i=0;i<len;i++){var cb=this._callbacks[i];if(cb){try{cb();}catch(e){i++;this._callbacks.splice(0,i);this._lastVal+=i;this._twiddle.textContent=this._twiddleContent++;throw e;}}}\nthis._callbacks.splice(0,len);this._lastVal+=len;}};new window.MutationObserver(function(){Polymer.Async._atEndOfMicrotask();}).observe(Polymer.Async._twiddle,{characterData:true});Polymer.Debounce=function(){var Async=Polymer.Async;var Debouncer=function(context){this.context=context;var self=this;this.boundComplete=function(){self.complete();};};Debouncer.prototype={go:function(callback,wait){var h;this.finish=function(){Async.cancel(h);};h=Async.run(this.boundComplete,wait);this.callback=callback;},stop:function(){if(this.finish){this.finish();this.finish=null;this.callback=null;}},complete:function(){if(this.finish){var callback=this.callback;this.stop();callback.call(this.context);}}};function debounce(debouncer,callback,wait){if(debouncer){debouncer.stop();}else{debouncer=new Debouncer(this);}\ndebouncer.go(callback,wait);return debouncer;}\nreturn debounce;}();Polymer.Base._addFeature({_setupDebouncers:function(){this._debouncers={};},debounce:function(jobName,callback,wait){return this._debouncers[jobName]=Polymer.Debounce.call(this,this._debouncers[jobName],callback,wait);},isDebouncerActive:function(jobName){var debouncer=this._debouncers[jobName];return!!(debouncer&&debouncer.finish);},flushDebouncer:function(jobName){var debouncer=this._debouncers[jobName];if(debouncer){debouncer.complete();}},cancelDebouncer:function(jobName){var debouncer=this._debouncers[jobName];if(debouncer){debouncer.stop();}}});Polymer.DomModule=document.createElement('dom-module');Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();this._prepBehaviors();this._prepConstructor();this._prepTemplate();this._prepShady();this._prepPropertyInfo();},_prepBehavior:function(b){this._addHostAttributes(b.hostAttributes);},_initFeatures:function(){this._registerHost();if(this._template){this._poolContent();this._beginHosting();this._stampTemplate();this._endHosting();}\nthis._marshalHostAttributes();this._setupDebouncers();this._marshalBehaviors();this._tryReady();},_marshalBehavior:function(b){}});(function(){Polymer.nar=[];var disableUpgradeEnabled=Polymer.Settings.disableUpgradeEnabled;Polymer.Annotations={parseAnnotations:function(template,stripWhiteSpace){var list=[];var content=template._content||template.content;this._parseNodeAnnotations(content,list,stripWhiteSpace||template.hasAttribute('strip-whitespace'));return list;},_parseNodeAnnotations:function(node,list,stripWhiteSpace){return node.nodeType===Node.TEXT_NODE?this._parseTextNodeAnnotation(node,list):this._parseElementAnnotations(node,list,stripWhiteSpace);},_bindingRegex:function(){var IDENT='(?:'+'[a-zA-Z_$][\\\\w.:$\\\\-*]*'+')';var NUMBER='(?:'+'[-+]?[0-9]*\\\\.?[0-9]+(?:[eE][-+]?[0-9]+)?'+')';var SQUOTE_STRING='(?:'+'\\'(?:[^\\'\\\\\\\\]|\\\\\\\\.)*\\''+')';var DQUOTE_STRING='(?:'+'\"(?:[^\"\\\\\\\\]|\\\\\\\\.)*\"'+')';var STRING='(?:'+SQUOTE_STRING+'|'+DQUOTE_STRING+')';var ARGUMENT='(?:'+IDENT+'|'+NUMBER+'|'+STRING+'\\\\s*'+')';var ARGUMENTS='(?:'+ARGUMENT+'(?:,\\\\s*'+ARGUMENT+')*'+')';var ARGUMENT_LIST='(?:'+'\\\\(\\\\s*'+'(?:'+ARGUMENTS+'?'+')'+'\\\\)\\\\s*'+')';var BINDING='('+IDENT+'\\\\s*'+ARGUMENT_LIST+'?'+')';var OPEN_BRACKET='(\\\\[\\\\[|{{)'+'\\\\s*';var CLOSE_BRACKET='(?:]]|}})';var NEGATE='(?:(!)\\\\s*)?';var EXPRESSION=OPEN_BRACKET+NEGATE+BINDING+CLOSE_BRACKET;return new RegExp(EXPRESSION,'g');}(),_parseBindings:function(text){var re=this._bindingRegex;var parts=[];var lastIndex=0;var m;while((m=re.exec(text))!==null){if(m.index>lastIndex){parts.push({literal:text.slice(lastIndex,m.index)});}\nvar mode=m[1][0];var negate=Boolean(m[2]);var value=m[3].trim();var customEvent,notifyEvent,colon;if(mode=='{'&&(colon=value.indexOf('::'))>0){notifyEvent=value.substring(colon+2);value=value.substring(0,colon);customEvent=true;}\nparts.push({compoundIndex:parts.length,value:value,mode:mode,negate:negate,event:notifyEvent,customEvent:customEvent});lastIndex=re.lastIndex;}\nif(lastIndex&&lastIndex<text.length){var literal=text.substring(lastIndex);if(literal){parts.push({literal:literal});}}\nif(parts.length){return parts;}},_literalFromParts:function(parts){var s='';for(var i=0;i<parts.length;i++){var literal=parts[i].literal;s+=literal||'';}\nreturn s;},_parseTextNodeAnnotation:function(node,list){var parts=this._parseBindings(node.textContent);if(parts){node.textContent=this._literalFromParts(parts)||' ';var annote={bindings:[{kind:'text',name:'textContent',parts:parts,isCompound:parts.length!==1}]};list.push(annote);return annote;}},_parseElementAnnotations:function(element,list,stripWhiteSpace){var annote={bindings:[],events:[]};if(element.localName==='content'){list._hasContent=true;}\nthis._parseChildNodesAnnotations(element,annote,list,stripWhiteSpace);if(element.attributes){this._parseNodeAttributeAnnotations(element,annote,list);if(this.prepElement){this.prepElement(element);}}\nif(annote.bindings.length||annote.events.length||annote.id){list.push(annote);}\nreturn annote;},_parseChildNodesAnnotations:function(root,annote,list,stripWhiteSpace){if(root.firstChild){var node=root.firstChild;var i=0;while(node){var next=node.nextSibling;if(node.localName==='template'&&!node.hasAttribute('preserve-content')){this._parseTemplate(node,i,list,annote,stripWhiteSpace);}\nif(node.localName=='slot'){node=this._replaceSlotWithContent(node);}\nif(node.nodeType===Node.TEXT_NODE){var n=next;while(n&&n.nodeType===Node.TEXT_NODE){node.textContent+=n.textContent;next=n.nextSibling;root.removeChild(n);n=next;}\nif(stripWhiteSpace&&!node.textContent.trim()){root.removeChild(node);i--;}}\nif(node.parentNode){var childAnnotation=this._parseNodeAnnotations(node,list,stripWhiteSpace);if(childAnnotation){childAnnotation.parent=annote;childAnnotation.index=i;}}\nnode=next;i++;}}},_replaceSlotWithContent:function(slot){var content=slot.ownerDocument.createElement('content');while(slot.firstChild){content.appendChild(slot.firstChild);}\nvar attrs=slot.attributes;for(var i=0;i<attrs.length;i++){var attr=attrs[i];content.setAttribute(attr.name,attr.value);}\nvar name=slot.getAttribute('name');if(name){content.setAttribute('select','[slot=\\''+name+'\\']');}\nslot.parentNode.replaceChild(content,slot);return content;},_parseTemplate:function(node,index,list,parent,stripWhiteSpace){var content=document.createDocumentFragment();content._notes=this.parseAnnotations(node,stripWhiteSpace);content.appendChild(node.content);list.push({bindings:Polymer.nar,events:Polymer.nar,templateContent:content,parent:parent,index:index});},_parseNodeAttributeAnnotations:function(node,annotation){var attrs=Array.prototype.slice.call(node.attributes);for(var i=attrs.length-1,a;a=attrs[i];i--){var n=a.name;var v=a.value;var b;if(n.slice(0,3)==='on-'){node.removeAttribute(n);annotation.events.push({name:n.slice(3),value:v});}else if(b=this._parseNodeAttributeAnnotation(node,n,v)){annotation.bindings.push(b);}else if(n==='id'){annotation.id=v;}}},_parseNodeAttributeAnnotation:function(node,name,value){var parts=this._parseBindings(value);if(parts){var origName=name;var kind='property';if(name[name.length-1]=='$'){name=name.slice(0,-1);kind='attribute';}\nvar literal=this._literalFromParts(parts);if(literal&&kind=='attribute'){node.setAttribute(name,literal);}\nif(node.localName==='input'&&origName==='value'){node.setAttribute(origName,'');}\nif(disableUpgradeEnabled&&origName==='disable-upgrade$'){node.setAttribute(name,'');}\nnode.removeAttribute(origName);var propertyName=Polymer.CaseMap.dashToCamelCase(name);if(kind==='property'){name=propertyName;}\nreturn{kind:kind,name:name,propertyName:propertyName,parts:parts,literal:literal,isCompound:parts.length!==1};}},findAnnotatedNode:function(root,annote){var parent=annote.parent&&Polymer.Annotations.findAnnotatedNode(root,annote.parent);if(parent){for(var n=parent.firstChild,i=0;n;n=n.nextSibling){if(annote.index===i++){return n;}}}else{return root;}}};}());Polymer.Path={root:function(path){var dotIndex=path.indexOf('.');if(dotIndex===-1){return path;}\nreturn path.slice(0,dotIndex);},isDeep:function(path){return path.indexOf('.')!==-1;},isAncestor:function(base,path){return base.indexOf(path+'.')===0;},isDescendant:function(base,path){return path.indexOf(base+'.')===0;},translate:function(base,newBase,path){return newBase+path.slice(base.length);},matches:function(base,wildcard,path){return base===path||this.isAncestor(base,path)||Boolean(wildcard)&&this.isDescendant(base,path);}};Polymer.Base._addFeature({_prepAnnotations:function(){if(!this._template){this._notes=[];}else{var self=this;Polymer.Annotations.prepElement=function(element){self._prepElement(element);};if(this._template._content&&this._template._content._notes){this._notes=this._template._content._notes;}else{this._notes=Polymer.Annotations.parseAnnotations(this._template);this._processAnnotations(this._notes);}\nPolymer.Annotations.prepElement=null;}},_processAnnotations:function(notes){for(var i=0;i<notes.length;i++){var note=notes[i];for(var j=0;j<note.bindings.length;j++){var b=note.bindings[j];for(var k=0;k<b.parts.length;k++){var p=b.parts[k];if(!p.literal){var signature=this._parseMethod(p.value);if(signature){p.signature=signature;}else{p.model=Polymer.Path.root(p.value);}}}}\nif(note.templateContent){this._processAnnotations(note.templateContent._notes);var pp=note.templateContent._parentProps=this._discoverTemplateParentProps(note.templateContent._notes);var bindings=[];for(var prop in pp){var name='_parent_'+prop;bindings.push({index:note.index,kind:'property',name:name,propertyName:name,parts:[{mode:'{',model:prop,value:prop}]});}\nnote.bindings=note.bindings.concat(bindings);}}},_discoverTemplateParentProps:function(notes){var pp={};for(var i=0,n;i<notes.length&&(n=notes[i]);i++){for(var j=0,b$=n.bindings,b;j<b$.length&&(b=b$[j]);j++){for(var k=0,p$=b.parts,p;k<p$.length&&(p=p$[k]);k++){if(p.signature){var args=p.signature.args;for(var kk=0;kk<args.length;kk++){var model=args[kk].model;if(model){pp[model]=true;}}\nif(p.signature.dynamicFn){pp[p.signature.method]=true;}}else{if(p.model){pp[p.model]=true;}}}}\nif(n.templateContent){var tpp=n.templateContent._parentProps;Polymer.Base.mixin(pp,tpp);}}\nreturn pp;},_prepElement:function(element){Polymer.ResolveUrl.resolveAttrs(element,this._template.ownerDocument);},_findAnnotatedNode:Polymer.Annotations.findAnnotatedNode,_marshalAnnotationReferences:function(){if(this._template){this._marshalIdNodes();this._marshalAnnotatedNodes();this._marshalAnnotatedListeners();}},_configureAnnotationReferences:function(){var notes=this._notes;var nodes=this._nodes;for(var i=0;i<notes.length;i++){var note=notes[i];var node=nodes[i];this._configureTemplateContent(note,node);this._configureCompoundBindings(note,node);}},_configureTemplateContent:function(note,node){if(note.templateContent){node._content=note.templateContent;}},_configureCompoundBindings:function(note,node){var bindings=note.bindings;for(var i=0;i<bindings.length;i++){var binding=bindings[i];if(binding.isCompound){var storage=node.__compoundStorage__||(node.__compoundStorage__={});var parts=binding.parts;var literals=new Array(parts.length);for(var j=0;j<parts.length;j++){literals[j]=parts[j].literal;}\nvar name=binding.name;storage[name]=literals;if(binding.literal&&binding.kind=='property'){if(node._configValue){node._configValue(name,binding.literal);}else{node[name]=binding.literal;}}}}},_marshalIdNodes:function(){this.$={};for(var i=0,l=this._notes.length,a;i<l&&(a=this._notes[i]);i++){if(a.id){this.$[a.id]=this._findAnnotatedNode(this.root,a);}}},_marshalAnnotatedNodes:function(){if(this._notes&&this._notes.length){var r=new Array(this._notes.length);for(var i=0;i<this._notes.length;i++){r[i]=this._findAnnotatedNode(this.root,this._notes[i]);}\nthis._nodes=r;}},_marshalAnnotatedListeners:function(){for(var i=0,l=this._notes.length,a;i<l&&(a=this._notes[i]);i++){if(a.events&&a.events.length){var node=this._findAnnotatedNode(this.root,a);for(var j=0,e$=a.events,e;j<e$.length&&(e=e$[j]);j++){this.listen(node,e.name,e.value);}}}}});Polymer.Base._addFeature({listeners:{},_listenListeners:function(listeners){var node,name,eventName;for(eventName in listeners){if(eventName.indexOf('.')<0){node=this;name=eventName;}else{name=eventName.split('.');node=this.$[name[0]];name=name[1];}\nthis.listen(node,name,listeners[eventName]);}},listen:function(node,eventName,methodName){var handler=this._recallEventHandler(this,eventName,node,methodName);if(!handler){handler=this._createEventHandler(node,eventName,methodName);}\nif(handler._listening){return;}\nthis._listen(node,eventName,handler);handler._listening=true;},_boundListenerKey:function(eventName,methodName){return eventName+':'+methodName;},_recordEventHandler:function(host,eventName,target,methodName,handler){var hbl=host.__boundListeners;if(!hbl){hbl=host.__boundListeners=new WeakMap();}\nvar bl=hbl.get(target);if(!bl){bl={};if(!Polymer.Settings.isIE||target!=window){hbl.set(target,bl);}}\nvar key=this._boundListenerKey(eventName,methodName);bl[key]=handler;},_recallEventHandler:function(host,eventName,target,methodName){var hbl=host.__boundListeners;if(!hbl){return;}\nvar bl=hbl.get(target);if(!bl){return;}\nvar key=this._boundListenerKey(eventName,methodName);return bl[key];},_createEventHandler:function(node,eventName,methodName){var host=this;var handler=function(e){if(host[methodName]){host[methodName](e,e.detail);}else{host._warn(host._logf('_createEventHandler','listener method `'+methodName+'` not defined'));}};handler._listening=false;this._recordEventHandler(host,eventName,node,methodName,handler);return handler;},unlisten:function(node,eventName,methodName){var handler=this._recallEventHandler(this,eventName,node,methodName);if(handler){this._unlisten(node,eventName,handler);handler._listening=false;}},_listen:function(node,eventName,handler){node.addEventListener(eventName,handler);},_unlisten:function(node,eventName,handler){node.removeEventListener(eventName,handler);}});(function(){'use strict';var wrap=Polymer.DomApi.wrap;var HAS_NATIVE_TA=typeof document.head.style.touchAction==='string';var GESTURE_KEY='__polymerGestures';var HANDLED_OBJ='__polymerGesturesHandled';var TOUCH_ACTION='__polymerGesturesTouchAction';var TAP_DISTANCE=25;var TRACK_DISTANCE=5;var TRACK_LENGTH=2;var MOUSE_TIMEOUT=2500;var MOUSE_EVENTS=['mousedown','mousemove','mouseup','click'];var MOUSE_WHICH_TO_BUTTONS=[0,1,4,2];var MOUSE_HAS_BUTTONS=function(){try{return new MouseEvent('test',{buttons:1}).buttons===1;}catch(e){return false;}}();function isMouseEvent(name){return MOUSE_EVENTS.indexOf(name)>-1;}\nvar SUPPORTS_PASSIVE=false;(function(){try{var opts=Object.defineProperty({},'passive',{get:function(){SUPPORTS_PASSIVE=true;}});window.addEventListener('test',null,opts);window.removeEventListener('test',null,opts);}catch(e){}}());function PASSIVE_TOUCH(eventName){if(isMouseEvent(eventName)||eventName==='touchend'){return;}\nif(HAS_NATIVE_TA&&SUPPORTS_PASSIVE&&Polymer.Settings.passiveTouchGestures){return{passive:true};}}\nvar IS_TOUCH_ONLY=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/);var mouseCanceller=function(mouseEvent){var sc=mouseEvent.sourceCapabilities;if(sc&&!sc.firesTouchEvents){return;}\nmouseEvent[HANDLED_OBJ]={skip:true};if(mouseEvent.type==='click'){var path=Polymer.dom(mouseEvent).path;if(path){for(var i=0;i<path.length;i++){if(path[i]===POINTERSTATE.mouse.target){return;}}}\nmouseEvent.preventDefault();mouseEvent.stopPropagation();}};function setupTeardownMouseCanceller(setup){var events=IS_TOUCH_ONLY?['click']:MOUSE_EVENTS;for(var i=0,en;i<events.length;i++){en=events[i];if(setup){document.addEventListener(en,mouseCanceller,true);}else{document.removeEventListener(en,mouseCanceller,true);}}}\nfunction ignoreMouse(ev){if(!POINTERSTATE.mouse.mouseIgnoreJob){setupTeardownMouseCanceller(true);}\nvar unset=function(){setupTeardownMouseCanceller();POINTERSTATE.mouse.target=null;POINTERSTATE.mouse.mouseIgnoreJob=null;};POINTERSTATE.mouse.target=Polymer.dom(ev).rootTarget;POINTERSTATE.mouse.mouseIgnoreJob=Polymer.Debounce(POINTERSTATE.mouse.mouseIgnoreJob,unset,MOUSE_TIMEOUT);}\nfunction hasLeftMouseButton(ev){var type=ev.type;if(!isMouseEvent(type)){return false;}\nif(type==='mousemove'){var buttons=ev.buttons===undefined?1:ev.buttons;if(ev instanceof window.MouseEvent&&!MOUSE_HAS_BUTTONS){buttons=MOUSE_WHICH_TO_BUTTONS[ev.which]||0;}\nreturn Boolean(buttons&1);}else{var button=ev.button===undefined?0:ev.button;return button===0;}}\nfunction isSyntheticClick(ev){if(ev.type==='click'){if(ev.detail===0){return true;}\nvar t=Gestures.findOriginalTarget(ev);var bcr=t.getBoundingClientRect();var x=ev.pageX,y=ev.pageY;return!(x>=bcr.left&&x<=bcr.right&&(y>=bcr.top&&y<=bcr.bottom));}\nreturn false;}\nvar POINTERSTATE={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:false}};function firstTouchAction(ev){var path=Polymer.dom(ev).path;var ta='auto';for(var i=0,n;i<path.length;i++){n=path[i];if(n[TOUCH_ACTION]){ta=n[TOUCH_ACTION];break;}}\nreturn ta;}\nfunction trackDocument(stateObj,movefn,upfn){stateObj.movefn=movefn;stateObj.upfn=upfn;document.addEventListener('mousemove',movefn);document.addEventListener('mouseup',upfn);}\nfunction untrackDocument(stateObj){document.removeEventListener('mousemove',stateObj.movefn);document.removeEventListener('mouseup',stateObj.upfn);stateObj.movefn=null;stateObj.upfn=null;}\ndocument.addEventListener('touchend',ignoreMouse,SUPPORTS_PASSIVE?{passive:true}:false);var Gestures={gestures:{},recognizers:[],deepTargetFind:function(x,y){var node=document.elementFromPoint(x,y);var next=node;while(next&&next.shadowRoot){next=next.shadowRoot.elementFromPoint(x,y);if(next){node=next;}}\nreturn node;},findOriginalTarget:function(ev){if(ev.path){return ev.path[0];}\nreturn ev.target;},handleNative:function(ev){var handled;var type=ev.type;var node=wrap(ev.currentTarget);var gobj=node[GESTURE_KEY];if(!gobj){return;}\nvar gs=gobj[type];if(!gs){return;}\nif(!ev[HANDLED_OBJ]){ev[HANDLED_OBJ]={};if(type.slice(0,5)==='touch'){var t=ev.changedTouches[0];if(type==='touchstart'){if(ev.touches.length===1){POINTERSTATE.touch.id=t.identifier;}}\nif(POINTERSTATE.touch.id!==t.identifier){return;}\nif(!HAS_NATIVE_TA){if(type==='touchstart'||type==='touchmove'){Gestures.handleTouchAction(ev);}}}}\nhandled=ev[HANDLED_OBJ];if(handled.skip){return;}\nvar recognizers=Gestures.recognizers;for(var i=0,r;i<recognizers.length;i++){r=recognizers[i];if(gs[r.name]&&!handled[r.name]){if(r.flow&&r.flow.start.indexOf(ev.type)>-1&&r.reset){r.reset();}}}\nfor(i=0,r;i<recognizers.length;i++){r=recognizers[i];if(gs[r.name]&&!handled[r.name]){handled[r.name]=true;r[type](ev);}}},handleTouchAction:function(ev){var t=ev.changedTouches[0];var type=ev.type;if(type==='touchstart'){POINTERSTATE.touch.x=t.clientX;POINTERSTATE.touch.y=t.clientY;POINTERSTATE.touch.scrollDecided=false;}else if(type==='touchmove'){if(POINTERSTATE.touch.scrollDecided){return;}\nPOINTERSTATE.touch.scrollDecided=true;var ta=firstTouchAction(ev);var prevent=false;var dx=Math.abs(POINTERSTATE.touch.x-t.clientX);var dy=Math.abs(POINTERSTATE.touch.y-t.clientY);if(!ev.cancelable){}else if(ta==='none'){prevent=true;}else if(ta==='pan-x'){prevent=dy>dx;}else if(ta==='pan-y'){prevent=dx>dy;}\nif(prevent){ev.preventDefault();}else{Gestures.prevent('track');}}},add:function(node,evType,handler){node=wrap(node);var recognizer=this.gestures[evType];var deps=recognizer.deps;var name=recognizer.name;var gobj=node[GESTURE_KEY];if(!gobj){node[GESTURE_KEY]=gobj={};}\nfor(var i=0,dep,gd;i<deps.length;i++){dep=deps[i];if(IS_TOUCH_ONLY&&isMouseEvent(dep)&&dep!=='click'){continue;}\ngd=gobj[dep];if(!gd){gobj[dep]=gd={_count:0};}\nif(gd._count===0){node.addEventListener(dep,this.handleNative,PASSIVE_TOUCH(dep));}\ngd[name]=(gd[name]||0)+1;gd._count=(gd._count||0)+1;}\nnode.addEventListener(evType,handler);if(recognizer.touchAction){this.setTouchAction(node,recognizer.touchAction);}},remove:function(node,evType,handler){node=wrap(node);var recognizer=this.gestures[evType];var deps=recognizer.deps;var name=recognizer.name;var gobj=node[GESTURE_KEY];if(gobj){for(var i=0,dep,gd;i<deps.length;i++){dep=deps[i];gd=gobj[dep];if(gd&&gd[name]){gd[name]=(gd[name]||1)-1;gd._count=(gd._count||1)-1;if(gd._count===0){node.removeEventListener(dep,this.handleNative,PASSIVE_TOUCH(dep));}}}}\nnode.removeEventListener(evType,handler);},register:function(recog){this.recognizers.push(recog);for(var i=0;i<recog.emits.length;i++){this.gestures[recog.emits[i]]=recog;}},findRecognizerByEvent:function(evName){for(var i=0,r;i<this.recognizers.length;i++){r=this.recognizers[i];for(var j=0,n;j<r.emits.length;j++){n=r.emits[j];if(n===evName){return r;}}}\nreturn null;},setTouchAction:function(node,value){if(HAS_NATIVE_TA){node.style.touchAction=value;}\nnode[TOUCH_ACTION]=value;},fire:function(target,type,detail){var ev=Polymer.Base.fire(type,detail,{node:target,bubbles:true,cancelable:true});if(ev.defaultPrevented){var preventer=detail.preventer||detail.sourceEvent;if(preventer&&preventer.preventDefault){preventer.preventDefault();}}},prevent:function(evName){var recognizer=this.findRecognizerByEvent(evName);if(recognizer.info){recognizer.info.prevent=true;}},resetMouseCanceller:function(){if(POINTERSTATE.mouse.mouseIgnoreJob){POINTERSTATE.mouse.mouseIgnoreJob.complete();}}};Gestures.register({name:'downup',deps:['mousedown','touchstart','touchend'],flow:{start:['mousedown','touchstart'],end:['mouseup','touchend']},emits:['down','up'],info:{movefn:null,upfn:null},reset:function(){untrackDocument(this.info);},mousedown:function(e){if(!hasLeftMouseButton(e)){return;}\nvar t=Gestures.findOriginalTarget(e);var self=this;var movefn=function movefn(e){if(!hasLeftMouseButton(e)){self.fire('up',t,e);untrackDocument(self.info);}};var upfn=function upfn(e){if(hasLeftMouseButton(e)){self.fire('up',t,e);}\nuntrackDocument(self.info);};trackDocument(this.info,movefn,upfn);this.fire('down',t,e);},touchstart:function(e){this.fire('down',Gestures.findOriginalTarget(e),e.changedTouches[0],e);},touchend:function(e){this.fire('up',Gestures.findOriginalTarget(e),e.changedTouches[0],e);},fire:function(type,target,event,preventer){Gestures.fire(target,type,{x:event.clientX,y:event.clientY,sourceEvent:event,preventer:preventer,prevent:function(e){return Gestures.prevent(e);}});}});Gestures.register({name:'track',touchAction:'none',deps:['mousedown','touchstart','touchmove','touchend'],flow:{start:['mousedown','touchstart'],end:['mouseup','touchend']},emits:['track'],info:{x:0,y:0,state:'start',started:false,moves:[],addMove:function(move){if(this.moves.length>TRACK_LENGTH){this.moves.shift();}\nthis.moves.push(move);},movefn:null,upfn:null,prevent:false},reset:function(){this.info.state='start';this.info.started=false;this.info.moves=[];this.info.x=0;this.info.y=0;this.info.prevent=false;untrackDocument(this.info);},hasMovedEnough:function(x,y){if(this.info.prevent){return false;}\nif(this.info.started){return true;}\nvar dx=Math.abs(this.info.x-x);var dy=Math.abs(this.info.y-y);return dx>=TRACK_DISTANCE||dy>=TRACK_DISTANCE;},mousedown:function(e){if(!hasLeftMouseButton(e)){return;}\nvar t=Gestures.findOriginalTarget(e);var self=this;var movefn=function movefn(e){var x=e.clientX,y=e.clientY;if(self.hasMovedEnough(x,y)){self.info.state=self.info.started?e.type==='mouseup'?'end':'track':'start';if(self.info.state==='start'){Gestures.prevent('tap');}\nself.info.addMove({x:x,y:y});if(!hasLeftMouseButton(e)){self.info.state='end';untrackDocument(self.info);}\nself.fire(t,e);self.info.started=true;}};var upfn=function upfn(e){if(self.info.started){movefn(e);}\nuntrackDocument(self.info);};trackDocument(this.info,movefn,upfn);this.info.x=e.clientX;this.info.y=e.clientY;},touchstart:function(e){var ct=e.changedTouches[0];this.info.x=ct.clientX;this.info.y=ct.clientY;},touchmove:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];var x=ct.clientX,y=ct.clientY;if(this.hasMovedEnough(x,y)){if(this.info.state==='start'){Gestures.prevent('tap');}\nthis.info.addMove({x:x,y:y});this.fire(t,ct);this.info.state='track';this.info.started=true;}},touchend:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];if(this.info.started){this.info.state='end';this.info.addMove({x:ct.clientX,y:ct.clientY});this.fire(t,ct,e);}},fire:function(target,touch,preventer){var secondlast=this.info.moves[this.info.moves.length-2];var lastmove=this.info.moves[this.info.moves.length-1];var dx=lastmove.x-this.info.x;var dy=lastmove.y-this.info.y;var ddx,ddy=0;if(secondlast){ddx=lastmove.x-secondlast.x;ddy=lastmove.y-secondlast.y;}\nreturn Gestures.fire(target,'track',{state:this.info.state,x:touch.clientX,y:touch.clientY,dx:dx,dy:dy,ddx:ddx,ddy:ddy,sourceEvent:touch,preventer:preventer,hover:function(){return Gestures.deepTargetFind(touch.clientX,touch.clientY);}});}});Gestures.register({name:'tap',deps:['mousedown','click','touchstart','touchend'],flow:{start:['mousedown','touchstart'],end:['click','touchend']},emits:['tap'],info:{x:NaN,y:NaN,prevent:false},reset:function(){this.info.x=NaN;this.info.y=NaN;this.info.prevent=false;},save:function(e){this.info.x=e.clientX;this.info.y=e.clientY;},mousedown:function(e){if(hasLeftMouseButton(e)){this.save(e);}},click:function(e){if(hasLeftMouseButton(e)){this.forward(e);}},touchstart:function(e){this.save(e.changedTouches[0],e);},touchend:function(e){this.forward(e.changedTouches[0],e);},forward:function(e,preventer){var dx=Math.abs(e.clientX-this.info.x);var dy=Math.abs(e.clientY-this.info.y);var t=Gestures.findOriginalTarget(e);if(isNaN(dx)||isNaN(dy)||dx<=TAP_DISTANCE&&dy<=TAP_DISTANCE||isSyntheticClick(e)){if(!this.info.prevent){Gestures.fire(t,'tap',{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:preventer});}}}});var DIRECTION_MAP={x:'pan-x',y:'pan-y',none:'none',all:'auto'};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null;},_listen:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.add(node,eventName,handler);}else{node.addEventListener(eventName,handler);}},_unlisten:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.remove(node,eventName,handler);}else{node.removeEventListener(eventName,handler);}},setScrollDirection:function(direction,node){node=node||this;Gestures.setTouchAction(node,DIRECTION_MAP[direction]||'auto');}});Polymer.Gestures=Gestures;}());(function(){'use strict';Polymer.Base._addFeature({$$:function(slctr){return Polymer.dom(this.root).querySelector(slctr);},toggleClass:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.classList.contains(name);}\nif(bool){Polymer.dom(node).classList.add(name);}else{Polymer.dom(node).classList.remove(name);}},toggleAttribute:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.hasAttribute(name);}\nif(bool){Polymer.dom(node).setAttribute(name,'');}else{Polymer.dom(node).removeAttribute(name);}},classFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).classList.remove(name);}\nif(toElement){Polymer.dom(toElement).classList.add(name);}},attributeFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).removeAttribute(name);}\nif(toElement){Polymer.dom(toElement).setAttribute(name,'');}},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes();},getEffectiveChildren:function(){var list=Polymer.dom(this).getEffectiveChildNodes();return list.filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},getEffectiveTextContent:function(){var cn=this.getEffectiveChildNodes();var tc=[];for(var i=0,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(Polymer.dom(c).textContent);}}\nreturn tc.join('');},queryEffectiveChildren:function(slctr){var e$=Polymer.dom(this).queryDistributedElements(slctr);return e$&&e$[0];},queryAllEffectiveChildren:function(slctr){return Polymer.dom(this).queryDistributedElements(slctr);},getContentChildNodes:function(slctr){var content=Polymer.dom(this.root).querySelector(slctr||'content');return content?Polymer.dom(content).getDistributedNodes():[];},getContentChildren:function(slctr){return this.getContentChildNodes(slctr).filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},fire:function(type,detail,options){options=options||Polymer.nob;var node=options.node||this;detail=detail===null||detail===undefined?{}:detail;var bubbles=options.bubbles===undefined?true:options.bubbles;var cancelable=Boolean(options.cancelable);var useCache=options._useCache;var event=this._getEvent(type,bubbles,cancelable,useCache);event.detail=detail;if(useCache){this.__eventCache[type]=null;}\nnode.dispatchEvent(event);if(useCache){this.__eventCache[type]=event;}\nreturn event;},__eventCache:{},_getEvent:function(type,bubbles,cancelable,useCache){var event=useCache&&this.__eventCache[type];if(!event||(event.bubbles!=bubbles||event.cancelable!=cancelable)){event=new Event(type,{bubbles:Boolean(bubbles),cancelable:cancelable});}\nreturn event;},async:function(callback,waitTime){var self=this;return Polymer.Async.run(function(){callback.call(self);},waitTime);},cancelAsync:function(handle){Polymer.Async.cancel(handle);},arrayDelete:function(path,item){var index;if(Array.isArray(path)){index=path.indexOf(item);if(index>=0){return path.splice(index,1);}}else{var arr=this._get(path);index=arr.indexOf(item);if(index>=0){return this.splice(path,index,1);}}},transform:function(transform,node){node=node||this;node.style.webkitTransform=transform;node.style.transform=transform;},translate3d:function(x,y,z,node){node=node||this;this.transform('translate3d('+x+','+y+','+z+')',node);},importHref:function(href,onload,onerror,optAsync){var link=document.createElement('link');link.rel='import';link.href=href;var list=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{};var cached=list[link.href];var imprt=cached||link;var self=this;var loadListener=function(e){e.target.__firedLoad=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onload.call(self,e);};var errorListener=function(e){e.target.__firedError=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onerror.call(self,e);};if(onload){imprt.addEventListener('load',loadListener);}\nif(onerror){imprt.addEventListener('error',errorListener);}\nif(cached){if(cached.__firedLoad){cached.dispatchEvent(new Event('load'));}\nif(cached.__firedError){cached.dispatchEvent(new Event('error'));}}else{list[link.href]=link;optAsync=Boolean(optAsync);if(optAsync){link.setAttribute('async','');}\ndocument.head.appendChild(link);}\nreturn imprt;},create:function(tag,props){var elt=document.createElement(tag);if(props){for(var n in props){elt[n]=props[n];}}\nreturn elt;},isLightDescendant:function(node){return this!==node&&this.contains(node)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(node).getOwnerRoot();},isLocalDescendant:function(node){return this.root===Polymer.dom(node).getOwnerRoot();}});if(!Polymer.Settings.useNativeCustomElements){var importHref=Polymer.Base.importHref;Polymer.Base.importHref=function(href,onload,onerror,optAsync){CustomElements.ready=false;var loadFn=function(e){CustomElements.upgradeDocumentTree(document);CustomElements.ready=true;if(onload){return onload.call(this,e);}};return importHref.call(this,href,loadFn,onerror,optAsync);};}}());Polymer.Bind={prepareModel:function(model){Polymer.Base.mixin(model,this._modelApi);},_modelApi:{_notifyChange:function(source,event,value){value=value===undefined?this[source]:value;event=event||Polymer.CaseMap.camelToDashCase(source)+'-changed';this.fire(event,{value:value},{bubbles:false,cancelable:false,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE});},_propertySetter:function(property,value,effects,fromAbove){var old=this.__data__[property];if(old!==value&&(old===old||value===value)){this.__data__[property]=value;if(typeof value=='object'){this._clearPath(property);}\nif(this._propertyChanged){this._propertyChanged(property,value,old);}\nif(effects){this._effectEffects(property,value,effects,old,fromAbove);}}\nreturn old;},__setProperty:function(property,value,quiet,node){node=node||this;var effects=node._propertyEffects&&node._propertyEffects[property];if(effects){node._propertySetter(property,value,effects,quiet);}else if(node[property]!==value){node[property]=value;}},_effectEffects:function(property,value,effects,old,fromAbove){for(var i=0,l=effects.length,fx;i<l&&(fx=effects[i]);i++){fx.fn.call(this,property,this[property],fx.effect,old,fromAbove);}},_clearPath:function(path){for(var prop in this.__data__){if(Polymer.Path.isDescendant(path,prop)){this.__data__[prop]=undefined;}}}},ensurePropertyEffects:function(model,property){if(!model._propertyEffects){model._propertyEffects={};}\nvar fx=model._propertyEffects[property];if(!fx){fx=model._propertyEffects[property]=[];}\nreturn fx;},addPropertyEffect:function(model,property,kind,effect){var fx=this.ensurePropertyEffects(model,property);var propEffect={kind:kind,effect:effect,fn:Polymer.Bind['_'+kind+'Effect']};fx.push(propEffect);return propEffect;},createBindings:function(model){var fx$=model._propertyEffects;if(fx$){for(var n in fx$){var fx=fx$[n];fx.sort(this._sortPropertyEffects);this._createAccessors(model,n,fx);}}},_sortPropertyEffects:function(){var EFFECT_ORDER={'compute':0,'annotation':1,'annotatedComputation':2,'reflect':3,'notify':4,'observer':5,'complexObserver':6,'function':7};return function(a,b){return EFFECT_ORDER[a.kind]-EFFECT_ORDER[b.kind];};}(),_createAccessors:function(model,property,effects){var defun={get:function(){return this.__data__[property];}};var setter=function(value){this._propertySetter(property,value,effects);};var info=model.getPropertyInfo&&model.getPropertyInfo(property);if(info&&info.readOnly){if(!info.computed){model['_set'+this.upper(property)]=setter;}}else{defun.set=setter;}\nObject.defineProperty(model,property,defun);},upper:function(name){return name[0].toUpperCase()+name.substring(1);},_addAnnotatedListener:function(model,index,property,path,event,negated){if(!model._bindListeners){model._bindListeners=[];}\nvar fn=this._notedListenerFactory(property,path,Polymer.Path.isDeep(path),negated);var eventName=event||Polymer.CaseMap.camelToDashCase(property)+'-changed';model._bindListeners.push({index:index,property:property,path:path,changedFn:fn,event:eventName});},_isEventBogus:function(e,target){return e.path&&e.path[0]!==target;},_notedListenerFactory:function(property,path,isStructured,negated){return function(target,value,targetPath){if(targetPath){var newPath=Polymer.Path.translate(property,path,targetPath);this._notifyPath(newPath,value);}else{value=target[property];if(negated){value=!value;}\nif(!isStructured){this[path]=value;}else{if(this.__data__[path]!=value){this.set(path,value);}}}};},prepareInstance:function(inst){inst.__data__=Object.create(null);},setupBindListeners:function(inst){var b$=inst._bindListeners;for(var i=0,l=b$.length,info;i<l&&(info=b$[i]);i++){var node=inst._nodes[info.index];this._addNotifyListener(node,inst,info.event,info.changedFn);}},_addNotifyListener:function(element,context,event,changedFn){element.addEventListener(event,function(e){return context._notifyListener(changedFn,e);});}};Polymer.Base.mixin(Polymer.Bind,{_shouldAddListener:function(effect){return effect.name&&effect.kind!='attribute'&&effect.kind!='text'&&!effect.isCompound&&effect.parts[0].mode==='{';},_annotationEffect:function(source,value,effect){if(source!=effect.value){value=this._get(effect.value);this.__data__[effect.value]=value;}\nthis._applyEffectValue(effect,value);},_reflectEffect:function(source,value,effect){this.reflectPropertyToAttribute(source,effect.attribute,value);},_notifyEffect:function(source,value,effect,old,fromAbove){if(!fromAbove){this._notifyChange(source,effect.event,value);}},_functionEffect:function(source,value,fn,old,fromAbove){fn.call(this,source,value,old,fromAbove);},_observerEffect:function(source,value,effect,old){var fn=this[effect.method];if(fn){fn.call(this,value,old);}else{this._warn(this._logf('_observerEffect','observer method `'+effect.method+'` not defined'));}},_complexObserverEffect:function(source,value,effect){var fn=this[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){fn.apply(this,args);}}else if(effect.dynamicFn){}else{this._warn(this._logf('_complexObserverEffect','observer method `'+effect.method+'` not defined'));}},_computeEffect:function(source,value,effect){var fn=this[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){var computedvalue=fn.apply(this,args);this.__setProperty(effect.name,computedvalue);}}else if(effect.dynamicFn){}else{this._warn(this._logf('_computeEffect','compute method `'+effect.method+'` not defined'));}},_annotatedComputationEffect:function(source,value,effect){var computedHost=this._rootDataHost||this;var fn=computedHost[effect.method];if(fn){var args=Polymer.Bind._marshalArgs(this.__data__,effect,source,value);if(args){var computedvalue=fn.apply(computedHost,args);this._applyEffectValue(effect,computedvalue);}}else if(effect.dynamicFn){}else{computedHost._warn(computedHost._logf('_annotatedComputationEffect','compute method `'+effect.method+'` not defined'));}},_marshalArgs:function(model,effect,path,value){var values=[];var args=effect.args;var bailoutEarly=args.length>1||effect.dynamicFn;for(var i=0,l=args.length;i<l;i++){var arg=args[i];var name=arg.name;var v;if(arg.literal){v=arg.value;}else if(path===name){v=value;}else{v=model[name];if(v===undefined&&arg.structured){v=Polymer.Base._get(name,model);}}\nif(bailoutEarly&&v===undefined){return;}\nif(arg.wildcard){var matches=Polymer.Path.isAncestor(path,name);values[i]={path:matches?path:name,value:matches?value:v,base:v};}else{values[i]=v;}}\nreturn values;}});Polymer.Base._addFeature({_addPropertyEffect:function(property,kind,effect){var prop=Polymer.Bind.addPropertyEffect(this,property,kind,effect);prop.pathFn=this['_'+prop.kind+'PathEffect'];},_prepEffects:function(){Polymer.Bind.prepareModel(this);this._addAnnotationEffects(this._notes);},_prepBindings:function(){Polymer.Bind.createBindings(this);},_addPropertyEffects:function(properties){if(properties){for(var p in properties){var prop=properties[p];if(prop.observer){this._addObserverEffect(p,prop.observer);}\nif(prop.computed){prop.readOnly=true;this._addComputedEffect(p,prop.computed);}\nif(prop.notify){this._addPropertyEffect(p,'notify',{event:Polymer.CaseMap.camelToDashCase(p)+'-changed'});}\nif(prop.reflectToAttribute){var attr=Polymer.CaseMap.camelToDashCase(p);if(attr[0]==='-'){this._warn(this._logf('_addPropertyEffects','Property '+p+' cannot be reflected to attribute '+attr+' because \"-\" is not a valid starting attribute name. Use a lowercase first letter for the property instead.'));}else{this._addPropertyEffect(p,'reflect',{attribute:attr});}}\nif(prop.readOnly){Polymer.Bind.ensurePropertyEffects(this,p);}}}},_addComputedEffect:function(name,expression){var sig=this._parseMethod(expression);var dynamicFn=sig.dynamicFn;for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){this._addPropertyEffect(arg.model,'compute',{method:sig.method,args:sig.args,trigger:arg,name:name,dynamicFn:dynamicFn});}\nif(dynamicFn){this._addPropertyEffect(sig.method,'compute',{method:sig.method,args:sig.args,trigger:null,name:name,dynamicFn:dynamicFn});}},_addObserverEffect:function(property,observer){this._addPropertyEffect(property,'observer',{method:observer,property:property});},_addComplexObserverEffects:function(observers){if(observers){for(var i=0,o;i<observers.length&&(o=observers[i]);i++){this._addComplexObserverEffect(o);}}},_addComplexObserverEffect:function(observer){var sig=this._parseMethod(observer);if(!sig){throw new Error('Malformed observer expression \\''+observer+'\\'');}\nvar dynamicFn=sig.dynamicFn;for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){this._addPropertyEffect(arg.model,'complexObserver',{method:sig.method,args:sig.args,trigger:arg,dynamicFn:dynamicFn});}\nif(dynamicFn){this._addPropertyEffect(sig.method,'complexObserver',{method:sig.method,args:sig.args,trigger:null,dynamicFn:dynamicFn});}},_addAnnotationEffects:function(notes){for(var i=0,note;i<notes.length&&(note=notes[i]);i++){var b$=note.bindings;for(var j=0,binding;j<b$.length&&(binding=b$[j]);j++){this._addAnnotationEffect(binding,i);}}},_addAnnotationEffect:function(note,index){if(Polymer.Bind._shouldAddListener(note)){Polymer.Bind._addAnnotatedListener(this,index,note.name,note.parts[0].value,note.parts[0].event,note.parts[0].negate);}\nfor(var i=0;i<note.parts.length;i++){var part=note.parts[i];if(part.signature){this._addAnnotatedComputationEffect(note,part,index);}else if(!part.literal){if(note.kind==='attribute'&&note.name[0]==='-'){this._warn(this._logf('_addAnnotationEffect','Cannot set attribute '+note.name+' because \"-\" is not a valid attribute starting character'));}else{this._addPropertyEffect(part.model,'annotation',{kind:note.kind,index:index,name:note.name,propertyName:note.propertyName,value:part.value,isCompound:note.isCompound,compoundIndex:part.compoundIndex,event:part.event,customEvent:part.customEvent,negate:part.negate});}}}},_addAnnotatedComputationEffect:function(note,part,index){var sig=part.signature;if(sig.static){this.__addAnnotatedComputationEffect('__static__',index,note,part,null);}else{for(var i=0,arg;i<sig.args.length&&(arg=sig.args[i]);i++){if(!arg.literal){this.__addAnnotatedComputationEffect(arg.model,index,note,part,arg);}}\nif(sig.dynamicFn){this.__addAnnotatedComputationEffect(sig.method,index,note,part,null);}}},__addAnnotatedComputationEffect:function(property,index,note,part,trigger){this._addPropertyEffect(property,'annotatedComputation',{index:index,isCompound:note.isCompound,compoundIndex:part.compoundIndex,kind:note.kind,name:note.name,negate:part.negate,method:part.signature.method,args:part.signature.args,trigger:trigger,dynamicFn:part.signature.dynamicFn});},_parseMethod:function(expression){var m=expression.match(/([^\\s]+?)\\(([\\s\\S]*)\\)/);if(m){var sig={method:m[1],static:true};if(this.getPropertyInfo(sig.method)!==Polymer.nob){sig.static=false;sig.dynamicFn=true;}\nif(m[2].trim()){var args=m[2].replace(/\\\\,/g,'&comma;').split(',');return this._parseArgs(args,sig);}else{sig.args=Polymer.nar;return sig;}}},_parseArgs:function(argList,sig){sig.args=argList.map(function(rawArg){var arg=this._parseArg(rawArg);if(!arg.literal){sig.static=false;}\nreturn arg;},this);return sig;},_parseArg:function(rawArg){var arg=rawArg.trim().replace(/&comma;/g,',').replace(/\\\\(.)/g,'$1');var a={name:arg};var fc=arg[0];if(fc==='-'){fc=arg[1];}\nif(fc>='0'&&fc<='9'){fc='#';}\nswitch(fc){case'\\'':case'\"':a.value=arg.slice(1,-1);a.literal=true;break;case'#':a.value=Number(arg);a.literal=true;break;}\nif(!a.literal){a.model=Polymer.Path.root(arg);a.structured=Polymer.Path.isDeep(arg);if(a.structured){a.wildcard=arg.slice(-2)=='.*';if(a.wildcard){a.name=arg.slice(0,-2);}}}\nreturn a;},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this);if(this._bindListeners){Polymer.Bind.setupBindListeners(this);}},_applyEffectValue:function(info,value){var node=this._nodes[info.index];var property=info.name;value=this._computeFinalAnnotationValue(node,property,value,info);if(info.kind=='attribute'){this.serializeValueToAttribute(value,property,node);}else{var pinfo=node._propertyInfo&&node._propertyInfo[property];if(pinfo&&pinfo.readOnly){return;}\nthis.__setProperty(property,value,Polymer.Settings.suppressBindingNotifications,node);}},_computeFinalAnnotationValue:function(node,property,value,info){if(info.negate){value=!value;}\nif(info.isCompound){var storage=node.__compoundStorage__[property];storage[info.compoundIndex]=value;value=storage.join('');}\nif(info.kind!=='attribute'){if(property==='className'){value=this._scopeElementClass(node,value);}\nif(property==='textContent'||node.localName=='input'&&property=='value'){value=value==undefined?'':value;}}\nreturn value;},_executeStaticEffects:function(){if(this._propertyEffects&&this._propertyEffects.__static__){this._effectEffects('__static__',null,this._propertyEffects.__static__);}}});(function(){var usePolyfillProto=Polymer.Settings.usePolyfillProto;var avoidInstanceProperties=Boolean(Object.getOwnPropertyDescriptor(document.documentElement,'properties'));Polymer.Base._addFeature({_setupConfigure:function(initialConfig){this._config={};this._handlers=[];this._aboveConfig=null;if(initialConfig){for(var i in initialConfig){if(initialConfig[i]!==undefined){this._config[i]=initialConfig[i];}}}},_marshalAttributes:function(){this._takeAttributesToModel(this._config);},_attributeChangedImpl:function(name){var model=this._clientsReadied?this:this._config;this._setAttributeToProperty(model,name);},_configValue:function(name,value){var info=this._propertyInfo[name];if(!info||!info.readOnly){this._config[name]=value;}},_beforeClientsReady:function(){this._configure();},_configure:function(){this._configureAnnotationReferences();this._configureInstanceProperties();this._aboveConfig=this.mixin({},this._config);var config={};for(var i=0;i<this.behaviors.length;i++){this._configureProperties(this.behaviors[i].properties,config);}\nthis._configureProperties(avoidInstanceProperties?this.__proto__.properties:this.properties,config);this.mixin(config,this._aboveConfig);this._config=config;if(this._clients&&this._clients.length){this._distributeConfig(this._config);}},_configureInstanceProperties:function(){for(var i in this._propertyEffects){if(!usePolyfillProto&&this.hasOwnProperty(i)){this._configValue(i,this[i]);delete this[i];}}},_configureProperties:function(properties,config){for(var i in properties){var c=properties[i];if(c.value!==undefined){var value=c.value;if(typeof value=='function'){value=value.call(this,this._config);}\nconfig[i]=value;}}},_distributeConfig:function(config){var fx$=this._propertyEffects;if(fx$){for(var p in config){var fx=fx$[p];if(fx){for(var i=0,l=fx.length,x;i<l&&(x=fx[i]);i++){if(x.kind==='annotation'){var node=this._nodes[x.effect.index];var name=x.effect.propertyName;var isAttr=x.effect.kind=='attribute';var hasEffect=node._propertyEffects&&node._propertyEffects[name];if(node._configValue&&(hasEffect||!isAttr)){var value=p===x.effect.value?config[p]:this._get(x.effect.value,config);value=this._computeFinalAnnotationValue(node,name,value,x.effect);if(isAttr){value=node.deserialize(this.serialize(value),node._propertyInfo[name].type);}\nnode._configValue(name,value);}}}}}}},_afterClientsReady:function(){this.importPath=this._importPath;this.rootPath=Polymer.rootPath;this._executeStaticEffects();this._applyConfig(this._config,this._aboveConfig);this._flushHandlers();},_applyConfig:function(config,aboveConfig){for(var n in config){if(this[n]===undefined){this.__setProperty(n,config[n],n in aboveConfig);}}},_notifyListener:function(fn,e){if(!Polymer.Bind._isEventBogus(e,e.target)){var value,path;if(e.detail){value=e.detail.value;path=e.detail.path;}\nif(!this._clientsReadied){this._queueHandler([fn,e.target,value,path]);}else{return fn.call(this,e.target,value,path);}}},_queueHandler:function(args){this._handlers.push(args);},_flushHandlers:function(){var h$=this._handlers;for(var i=0,l=h$.length,h;i<l&&(h=h$[i]);i++){h[0].call(this,h[1],h[2],h[3]);}\nthis._handlers=[];}});}());(function(){'use strict';var Path=Polymer.Path;Polymer.Base._addFeature({notifyPath:function(path,value,fromAbove){var info={};var v=this._get(path,this,info);if(arguments.length===1){value=v;}\nif(info.path){this._notifyPath(info.path,value,fromAbove);}},_notifyPath:function(path,value,fromAbove){var old=this._propertySetter(path,value);if(old!==value&&(old===old||value===value)){this._pathEffector(path,value);if(!fromAbove){this._notifyPathUp(path,value);}\nreturn true;}},_getPathParts:function(path){if(Array.isArray(path)){var parts=[];for(var i=0;i<path.length;i++){var args=path[i].toString().split('.');for(var j=0;j<args.length;j++){parts.push(args[j]);}}\nreturn parts;}else{return path.toString().split('.');}},set:function(path,value,root){var prop=root||this;var parts=this._getPathParts(path);var array;var last=parts[parts.length-1];if(parts.length>1){for(var i=0;i<parts.length-1;i++){var part=parts[i];if(array&&part[0]=='#'){prop=Polymer.Collection.get(array).getItem(part);}else{prop=prop[part];if(array&&parseInt(part,10)==part){parts[i]=Polymer.Collection.get(array).getKey(prop);}}\nif(!prop){return;}\narray=Array.isArray(prop)?prop:null;}\nif(array){var coll=Polymer.Collection.get(array);var old,key;if(last[0]=='#'){key=last;old=coll.getItem(key);last=array.indexOf(old);coll.setItem(key,value);}else if(parseInt(last,10)==last){old=prop[last];key=coll.getKey(old);parts[i]=key;coll.setItem(key,value);}}\nprop[last]=value;if(!root){this._notifyPath(parts.join('.'),value);}}else{prop[path]=value;}},get:function(path,root){return this._get(path,root);},_get:function(path,root,info){var prop=root||this;var parts=this._getPathParts(path);var array;for(var i=0;i<parts.length;i++){if(!prop){return;}\nvar part=parts[i];if(array&&part[0]=='#'){prop=Polymer.Collection.get(array).getItem(part);}else{prop=prop[part];if(info&&array&&parseInt(part,10)==part){parts[i]=Polymer.Collection.get(array).getKey(prop);}}\narray=Array.isArray(prop)?prop:null;}\nif(info){info.path=parts.join('.');}\nreturn prop;},_pathEffector:function(path,value){var model=Path.root(path);var fx$=this._propertyEffects&&this._propertyEffects[model];if(fx$){for(var i=0,fx;i<fx$.length&&(fx=fx$[i]);i++){var fxFn=fx.pathFn;if(fxFn){fxFn.call(this,path,value,fx.effect);}}}\nif(this._boundPaths){this._notifyBoundPaths(path,value);}},_annotationPathEffect:function(path,value,effect){if(Path.matches(effect.value,false,path)){Polymer.Bind._annotationEffect.call(this,path,value,effect);}else if(!effect.negate&&Path.isDescendant(effect.value,path)){var node=this._nodes[effect.index];if(node&&node._notifyPath){var newPath=Path.translate(effect.value,effect.name,path);node._notifyPath(newPath,value,true);}}},_complexObserverPathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._complexObserverEffect.call(this,path,value,effect);}},_computePathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._computeEffect.call(this,path,value,effect);}},_annotatedComputationPathEffect:function(path,value,effect){if(Path.matches(effect.trigger.name,effect.trigger.wildcard,path)){Polymer.Bind._annotatedComputationEffect.call(this,path,value,effect);}},linkPaths:function(to,from){this._boundPaths=this._boundPaths||{};if(from){this._boundPaths[to]=from;}else{this.unlinkPaths(to);}},unlinkPaths:function(path){if(this._boundPaths){delete this._boundPaths[path];}},_notifyBoundPaths:function(path,value){for(var a in this._boundPaths){var b=this._boundPaths[a];if(Path.isDescendant(a,path)){this._notifyPath(Path.translate(a,b,path),value);}else if(Path.isDescendant(b,path)){this._notifyPath(Path.translate(b,a,path),value);}}},_notifyPathUp:function(path,value){var rootName=Path.root(path);var dashCaseName=Polymer.CaseMap.camelToDashCase(rootName);var eventName=dashCaseName+this._EVENT_CHANGED;this.fire(eventName,{path:path,value:value},{bubbles:false,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE});},_EVENT_CHANGED:'-changed',notifySplices:function(path,splices){var info={};var array=this._get(path,this,info);this._notifySplices(array,info.path,splices);},_notifySplices:function(array,path,splices){var change={keySplices:Polymer.Collection.applySplices(array,splices),indexSplices:splices};var splicesPath=path+'.splices';this._notifyPath(splicesPath,change);this._notifyPath(path+'.length',array.length);this.__data__[splicesPath]={keySplices:null,indexSplices:null};},_notifySplice:function(array,path,index,added,removed){this._notifySplices(array,path,[{index:index,addedCount:added,removed:removed,object:array,type:'splice'}]);},push:function(path){var info={};var array=this._get(path,this,info);var args=Array.prototype.slice.call(arguments,1);var len=array.length;var ret=array.push.apply(array,args);if(args.length){this._notifySplice(array,info.path,len,args.length,[]);}\nreturn ret;},pop:function(path){var info={};var array=this._get(path,this,info);var hadLength=Boolean(array.length);var args=Array.prototype.slice.call(arguments,1);var ret=array.pop.apply(array,args);if(hadLength){this._notifySplice(array,info.path,array.length,0,[ret]);}\nreturn ret;},splice:function(path,start){var info={};var array=this._get(path,this,info);if(start<0){start=array.length-Math.floor(-start);}else{start=Math.floor(start);}\nif(!start){start=0;}\nvar args=Array.prototype.slice.call(arguments,1);var ret=array.splice.apply(array,args);var addedCount=Math.max(args.length-2,0);if(addedCount||ret.length){this._notifySplice(array,info.path,start,addedCount,ret);}\nreturn ret;},shift:function(path){var info={};var array=this._get(path,this,info);var hadLength=Boolean(array.length);var args=Array.prototype.slice.call(arguments,1);var ret=array.shift.apply(array,args);if(hadLength){this._notifySplice(array,info.path,0,0,[ret]);}\nreturn ret;},unshift:function(path){var info={};var array=this._get(path,this,info);var args=Array.prototype.slice.call(arguments,1);var ret=array.unshift.apply(array,args);if(args.length){this._notifySplice(array,info.path,0,args.length,[]);}\nreturn ret;},prepareModelNotifyPath:function(model){this.mixin(model,{fire:Polymer.Base.fire,_getEvent:Polymer.Base._getEvent,__eventCache:Polymer.Base.__eventCache,notifyPath:Polymer.Base.notifyPath,_get:Polymer.Base._get,_EVENT_CHANGED:Polymer.Base._EVENT_CHANGED,_notifyPath:Polymer.Base._notifyPath,_notifyPathUp:Polymer.Base._notifyPathUp,_pathEffector:Polymer.Base._pathEffector,_annotationPathEffect:Polymer.Base._annotationPathEffect,_complexObserverPathEffect:Polymer.Base._complexObserverPathEffect,_annotatedComputationPathEffect:Polymer.Base._annotatedComputationPathEffect,_computePathEffect:Polymer.Base._computePathEffect,_notifyBoundPaths:Polymer.Base._notifyBoundPaths,_getPathParts:Polymer.Base._getPathParts});}});}());Polymer.Base._addFeature({resolveUrl:function(url){return Polymer.ResolveUrl.resolveUrl(url,this._importPath);}});Polymer.CssParse=function(){return{parse:function(text){text=this._clean(text);return this._parseCss(this._lex(text),text);},_clean:function(cssText){return cssText.replace(this._rx.comments,'').replace(this._rx.port,'');},_lex:function(text){var root={start:0,end:text.length};var n=root;for(var i=0,l=text.length;i<l;i++){switch(text[i]){case this.OPEN_BRACE:if(!n.rules){n.rules=[];}\nvar p=n;var previous=p.rules[p.rules.length-1];n={start:i+1,parent:p,previous:previous};p.rules.push(n);break;case this.CLOSE_BRACE:n.end=i+1;n=n.parent||root;break;}}\nreturn root;},_parseCss:function(node,text){var t=text.substring(node.start,node.end-1);node.parsedCssText=node.cssText=t.trim();if(node.parent){var ss=node.previous?node.previous.end:node.parent.start;t=text.substring(ss,node.start-1);t=this._expandUnicodeEscapes(t);t=t.replace(this._rx.multipleSpaces,' ');t=t.substring(t.lastIndexOf(';')+1);var s=node.parsedSelector=node.selector=t.trim();node.atRule=s.indexOf(this.AT_START)===0;if(node.atRule){if(s.indexOf(this.MEDIA_START)===0){node.type=this.types.MEDIA_RULE;}else if(s.match(this._rx.keyframesRule)){node.type=this.types.KEYFRAMES_RULE;node.keyframesName=node.selector.split(this._rx.multipleSpaces).pop();}}else{if(s.indexOf(this.VAR_START)===0){node.type=this.types.MIXIN_RULE;}else{node.type=this.types.STYLE_RULE;}}}\nvar r$=node.rules;if(r$){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){this._parseCss(r,text);}}\nreturn node;},_expandUnicodeEscapes:function(s){return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi,function(){var code=arguments[1],repeat=6-code.length;while(repeat--){code='0'+code;}\nreturn'\\\\'+code;});},stringify:function(node,preserveProperties,text){text=text||'';var cssText='';if(node.cssText||node.rules){var r$=node.rules;if(r$&&!this._hasMixinRules(r$)){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){cssText=this.stringify(r,preserveProperties,cssText);}}else{cssText=preserveProperties?node.cssText:this.removeCustomProps(node.cssText);cssText=cssText.trim();if(cssText){cssText='  '+cssText+'\\n';}}}\nif(cssText){if(node.selector){text+=node.selector+' '+this.OPEN_BRACE+'\\n';}\ntext+=cssText;if(node.selector){text+=this.CLOSE_BRACE+'\\n\\n';}}\nreturn text;},_hasMixinRules:function(rules){return rules[0].selector.indexOf(this.VAR_START)===0;},removeCustomProps:function(cssText){cssText=this.removeCustomPropAssignment(cssText);return this.removeCustomPropApply(cssText);},removeCustomPropAssignment:function(cssText){return cssText.replace(this._rx.customProp,'').replace(this._rx.mixinProp,'');},removeCustomPropApply:function(cssText){return cssText.replace(this._rx.mixinApply,'').replace(this._rx.varApply,'');},types:{STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1000},OPEN_BRACE:'{',CLOSE_BRACE:'}',_rx:{comments:/\\/\\*[^*]*\\*+([^\\/*][^*]*\\*+)*\\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,mixinProp:/(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,mixinApply:/@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,keyframesRule:/^@[^\\s]*keyframes/,multipleSpaces:/\\s+/g},VAR_START:'--',MEDIA_START:'@media',AT_START:'@'};}();Polymer.StyleUtil=function(){var settings=Polymer.Settings;return{unscopedStyleImports:new WeakMap(),SHADY_UNSCOPED_ATTR:'shady-unscoped',NATIVE_VARIABLES:Polymer.Settings.useNativeCSSProperties,MODULE_STYLES_SELECTOR:'style, link[rel=import][type~=css], template',INCLUDE_ATTR:'include',toCssText:function(rules,callback){if(typeof rules==='string'){rules=this.parser.parse(rules);}\nif(callback){this.forEachRule(rules,callback);}\nreturn this.parser.stringify(rules,this.NATIVE_VARIABLES);},forRulesInStyles:function(styles,styleRuleCallback,keyframesRuleCallback){if(styles){for(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){this.forEachRuleInStyle(s,styleRuleCallback,keyframesRuleCallback);}}},forActiveRulesInStyles:function(styles,styleRuleCallback,keyframesRuleCallback){if(styles){for(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){this.forEachRuleInStyle(s,styleRuleCallback,keyframesRuleCallback,true);}}},rulesForStyle:function(style){if(!style.__cssRules&&style.textContent){style.__cssRules=this.parser.parse(style.textContent);}\nreturn style.__cssRules;},isKeyframesSelector:function(rule){return rule.parent&&rule.parent.type===this.ruleTypes.KEYFRAMES_RULE;},forEachRuleInStyle:function(style,styleRuleCallback,keyframesRuleCallback,onlyActiveRules){var rules=this.rulesForStyle(style);var styleCallback,keyframeCallback;if(styleRuleCallback){styleCallback=function(rule){styleRuleCallback(rule,style);};}\nif(keyframesRuleCallback){keyframeCallback=function(rule){keyframesRuleCallback(rule,style);};}\nthis.forEachRule(rules,styleCallback,keyframeCallback,onlyActiveRules);},forEachRule:function(node,styleRuleCallback,keyframesRuleCallback,onlyActiveRules){if(!node){return;}\nvar skipRules=false;if(onlyActiveRules){if(node.type===this.ruleTypes.MEDIA_RULE){var matchMedia=node.selector.match(this.rx.MEDIA_MATCH);if(matchMedia){if(!window.matchMedia(matchMedia[1]).matches){skipRules=true;}}}}\nif(node.type===this.ruleTypes.STYLE_RULE){styleRuleCallback(node);}else if(keyframesRuleCallback&&node.type===this.ruleTypes.KEYFRAMES_RULE){keyframesRuleCallback(node);}else if(node.type===this.ruleTypes.MIXIN_RULE){skipRules=true;}\nvar r$=node.rules;if(r$&&!skipRules){for(var i=0,l=r$.length,r;i<l&&(r=r$[i]);i++){this.forEachRule(r,styleRuleCallback,keyframesRuleCallback,onlyActiveRules);}}},applyCss:function(cssText,moniker,target,contextNode){var style=this.createScopeStyle(cssText,moniker);return this.applyStyle(style,target,contextNode);},applyStyle:function(style,target,contextNode){target=target||document.head;var after=contextNode&&contextNode.nextSibling||target.firstChild;this.__lastHeadApplyNode=style;return target.insertBefore(style,after);},createScopeStyle:function(cssText,moniker){var style=document.createElement('style');if(moniker){style.setAttribute('scope',moniker);}\nstyle.textContent=cssText;return style;},__lastHeadApplyNode:null,applyStylePlaceHolder:function(moniker){var placeHolder=document.createComment(' Shady DOM styles for '+moniker+' ');var after=this.__lastHeadApplyNode?this.__lastHeadApplyNode.nextSibling:null;var scope=document.head;scope.insertBefore(placeHolder,after||scope.firstChild);this.__lastHeadApplyNode=placeHolder;return placeHolder;},cssFromModules:function(moduleIds,warnIfNotFound){var modules=moduleIds.trim().split(/\\s+/);var cssText='';for(var i=0;i<modules.length;i++){cssText+=this.cssFromModule(modules[i],warnIfNotFound);}\nreturn cssText;},cssFromModule:function(moduleId,warnIfNotFound){var m=Polymer.DomModule.import(moduleId);if(m&&!m._cssText){m._cssText=this.cssFromElement(m);}\nif(!m&&warnIfNotFound){console.warn('Could not find style data in module named',moduleId);}\nreturn m&&m._cssText||'';},cssFromElement:function(element){var cssText='';var content=element.content||element;var e$=Polymer.TreeApi.arrayCopy(content.querySelectorAll(this.MODULE_STYLES_SELECTOR));for(var i=0,e;i<e$.length;i++){e=e$[i];if(e.localName==='template'){if(!e.hasAttribute('preserve-content')){cssText+=this.cssFromElement(e);}}else{if(e.localName==='style'){var include=e.getAttribute(this.INCLUDE_ATTR);if(include){cssText+=this.cssFromModules(include,true);}\ne=e.__appliedElement||e;e.parentNode.removeChild(e);var css=this.resolveCss(e.textContent,element.ownerDocument);if(!settings.useNativeShadow&&e.hasAttribute(this.SHADY_UNSCOPED_ATTR)){e.textContent=css;document.head.insertBefore(e,document.head.firstChild);}else{cssText+=css;}}else if(e.import&&e.import.body){var importCss=this.resolveCss(e.import.body.textContent,e.import);if(!settings.useNativeShadow&&e.hasAttribute(this.SHADY_UNSCOPED_ATTR)){if(!this.unscopedStyleImports.has(e.import)){this.unscopedStyleImports.set(e.import,true);var importStyle=document.createElement('style');importStyle.setAttribute(this.SHADY_UNSCOPED_ATTR,'');importStyle.textContent=importCss;document.head.insertBefore(importStyle,document.head.firstChild);}}else{cssText+=importCss;}}}}\nreturn cssText;},styleIncludesToTemplate:function(targetTemplate){var styles=targetTemplate.content.querySelectorAll('style[include]');for(var i=0,s;i<styles.length;i++){s=styles[i];s.parentNode.insertBefore(this._includesToFragment(s.getAttribute('include')),s);}},_includesToFragment:function(styleIncludes){var includeArray=styleIncludes.trim().split(' ');var frag=document.createDocumentFragment();for(var i=0;i<includeArray.length;i++){var t=Polymer.DomModule.import(includeArray[i],'template');if(t){this._addStylesToFragment(frag,t.content);}}\nreturn frag;},_addStylesToFragment:function(frag,source){var s$=source.querySelectorAll('style');for(var i=0,s;i<s$.length;i++){s=s$[i];var include=s.getAttribute('include');if(include){frag.appendChild(this._includesToFragment(include));}\nif(s.textContent){frag.appendChild(s.cloneNode(true));}}},isTargetedBuild:function(buildType){return settings.useNativeShadow?buildType==='shadow':buildType==='shady';},cssBuildTypeForModule:function(module){var dm=Polymer.DomModule.import(module);if(dm){return this.getCssBuildType(dm);}},getCssBuildType:function(element){return element.getAttribute('css-build');},_findMatchingParen:function(text,start){var level=0;for(var i=start,l=text.length;i<l;i++){switch(text[i]){case'(':level++;break;case')':if(--level===0){return i;}\nbreak;}}\nreturn-1;},processVariableAndFallback:function(str,callback){var start=str.indexOf('var(');if(start===-1){return callback(str,'','','');}\nvar end=this._findMatchingParen(str,start+3);var inner=str.substring(start+4,end);var prefix=str.substring(0,start);var suffix=this.processVariableAndFallback(str.substring(end+1),callback);var comma=inner.indexOf(',');if(comma===-1){return callback(prefix,inner.trim(),'',suffix);}\nvar value=inner.substring(0,comma).trim();var fallback=inner.substring(comma+1).trim();return callback(prefix,value,fallback,suffix);},rx:{VAR_ASSIGN:/(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:([^;{]*)|{([^}]*)})(?:(?=[;\\s}])|$)/gi,MIXIN_MATCH:/(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi,VAR_CONSUMED:/(--[\\w-]+)\\s*([:,;)]|$)/gi,ANIMATION_MATCH:/(animation\\s*:)|(animation-name\\s*:)/,MEDIA_MATCH:/@media[^(]*(\\([^)]*\\))/,IS_VAR:/^--/,BRACKETED:/\\{[^}]*\\}/g,HOST_PREFIX:'(?:^|[^.#[:])',HOST_SUFFIX:'($|[.:[\\\\s>+~])'},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types};}();Polymer.StyleTransformer=function(){var styleUtil=Polymer.StyleUtil;var settings=Polymer.Settings;var api={dom:function(node,scope,useAttr,shouldRemoveScope){this._transformDom(node,scope||'',useAttr,shouldRemoveScope);},_transformDom:function(node,selector,useAttr,shouldRemoveScope){if(node.setAttribute){this.element(node,selector,useAttr,shouldRemoveScope);}\nvar c$=Polymer.dom(node).childNodes;for(var i=0;i<c$.length;i++){this._transformDom(c$[i],selector,useAttr,shouldRemoveScope);}},element:function(element,scope,useAttr,shouldRemoveScope){if(useAttr){if(shouldRemoveScope){element.removeAttribute(SCOPE_NAME);}else{element.setAttribute(SCOPE_NAME,scope);}}else{if(scope){if(element.classList){if(shouldRemoveScope){element.classList.remove(SCOPE_NAME);element.classList.remove(scope);}else{element.classList.add(SCOPE_NAME);element.classList.add(scope);}}else if(element.getAttribute){var c=element.getAttribute(CLASS);if(shouldRemoveScope){if(c){element.setAttribute(CLASS,c.replace(SCOPE_NAME,'').replace(scope,''));}}else{element.setAttribute(CLASS,(c?c+' ':'')+SCOPE_NAME+' '+scope);}}}}},elementStyles:function(element,callback){var styles=element._styles;var cssText='';var cssBuildType=element.__cssBuild;var passthrough=settings.useNativeShadow||cssBuildType==='shady';var cb;if(passthrough){var self=this;cb=function(rule){rule.selector=self._slottedToContent(rule.selector);rule.selector=rule.selector.replace(ROOT,':host > *');rule.selector=self._dirShadowTransform(rule.selector);if(callback){callback(rule);}};}\nfor(var i=0,l=styles.length,s;i<l&&(s=styles[i]);i++){var rules=styleUtil.rulesForStyle(s);cssText+=passthrough?styleUtil.toCssText(rules,cb):this.css(rules,element.is,element.extends,callback,element._scopeCssViaAttr)+'\\n\\n';}\nreturn cssText.trim();},css:function(rules,scope,ext,callback,useAttr){var hostScope=this._calcHostScope(scope,ext);scope=this._calcElementScope(scope,useAttr);var self=this;return styleUtil.toCssText(rules,function(rule){if(!rule.isScoped){self.rule(rule,scope,hostScope);rule.isScoped=true;}\nif(callback){callback(rule,scope,hostScope);}});},_calcElementScope:function(scope,useAttr){if(scope){return useAttr?CSS_ATTR_PREFIX+scope+CSS_ATTR_SUFFIX:CSS_CLASS_PREFIX+scope;}else{return'';}},_calcHostScope:function(scope,ext){return ext?'[is='+scope+']':scope;},rule:function(rule,scope,hostScope){this._transformRule(rule,this._transformComplexSelector,scope,hostScope);},_transformRule:function(rule,transformer,scope,hostScope){rule.selector=rule.transformedSelector=this._transformRuleCss(rule,transformer,scope,hostScope);},_splitSelectorList:function(selector){var parts=[];var part='';for(var i=0;i>=0&&i<selector.length;i++){if(selector[i]==='('){var end=styleUtil._findMatchingParen(selector,i);part+=selector.slice(i,end+1);i=end;}else if(selector[i]===COMPLEX_SELECTOR_SEP){parts.push(part);part='';}else{part+=selector[i];}}\nif(part){parts.push(part);}\nif(parts.length===0){parts.push(selector);}\nreturn parts;},_transformRuleCss:function(rule,transformer,scope,hostScope){var p$=this._splitSelectorList(rule.selector);if(!styleUtil.isKeyframesSelector(rule)){for(var i=0,l=p$.length,p;i<l&&(p=p$[i]);i++){p$[i]=transformer.call(this,p,scope,hostScope);}}\nreturn p$.join(COMPLEX_SELECTOR_SEP);},_ensureScopedDir:function(s){var m=s.match(DIR_PAREN);if(m&&m[1]===''&&m[0].length===s.length){s='*'+s;}\nreturn s;},_additionalDirSelectors:function(dir,after,prefix){if(!dir||!after){return'';}\nprefix=prefix||'';return COMPLEX_SELECTOR_SEP+prefix+' '+dir+' '+after;},_transformComplexSelector:function(selector,scope,hostScope){var stop=false;var hostContext=false;var dir=false;var self=this;selector=selector.trim();selector=this._slottedToContent(selector);selector=selector.replace(ROOT,':host > *');selector=selector.replace(CONTENT_START,HOST+' $1');selector=this._ensureScopedDir(selector);selector=selector.replace(SIMPLE_SELECTOR_SEP,function(m,c,s){if(!stop){var info=self._transformCompoundSelector(s,c,scope,hostScope);stop=stop||info.stop;hostContext=hostContext||info.hostContext;dir=dir||info.dir;c=info.combinator;s=info.value;}else{s=s.replace(SCOPE_JUMP,' ');}\nreturn c+s;});if(hostContext){selector=selector.replace(HOST_CONTEXT_PAREN,function(m,pre,paren,post){var replacement=pre+paren+' '+hostScope+post+COMPLEX_SELECTOR_SEP+' '+pre+hostScope+paren+post;if(dir){replacement+=self._additionalDirSelectors(paren,post,hostScope);}\nreturn replacement;});}\nreturn selector;},_transformDir:function(s){s=s.replace(HOST_DIR,HOST_DIR_REPLACE);s=s.replace(DIR_PAREN,DIR_REPLACE);return s;},_transformCompoundSelector:function(selector,combinator,scope,hostScope){var jumpIndex=selector.search(SCOPE_JUMP);var hostContext=false;var dir=false;if(selector.match(DIR_PAREN)){selector=this._transformDir(selector);dir=true;}\nif(selector.indexOf(HOST_CONTEXT)>=0){hostContext=true;}else if(selector.indexOf(HOST)>=0){selector=this._transformHostSelector(selector,hostScope);}else if(jumpIndex!==0){selector=scope?this._transformSimpleSelector(selector,scope):selector;}\nif(selector.indexOf(CONTENT)>=0){combinator='';}\nvar stop;if(jumpIndex>=0){selector=selector.replace(SCOPE_JUMP,' ');stop=true;}\nreturn{value:selector,combinator:combinator,stop:stop,hostContext:hostContext,dir:dir};},_transformSimpleSelector:function(selector,scope){var p$=selector.split(PSEUDO_PREFIX);p$[0]+=scope;return p$.join(PSEUDO_PREFIX);},_transformHostSelector:function(selector,hostScope){var m=selector.match(HOST_PAREN);var paren=m&&m[2].trim()||'';if(paren){if(!paren[0].match(SIMPLE_SELECTOR_PREFIX)){var typeSelector=paren.split(SIMPLE_SELECTOR_PREFIX)[0];if(typeSelector===hostScope){return paren;}else{return SELECTOR_NO_MATCH;}}else{return selector.replace(HOST_PAREN,function(m,host,paren){return hostScope+paren;});}}else{return selector.replace(HOST,hostScope);}},documentRule:function(rule){rule.selector=rule.parsedSelector;this.normalizeRootSelector(rule);if(!settings.useNativeShadow){this._transformRule(rule,this._transformDocumentSelector);}},normalizeRootSelector:function(rule){rule.selector=rule.selector.replace(ROOT,'html');var parts=this._splitSelectorList(rule.selector);parts=parts.filter(function(part){return!part.match(HOST_OR_HOST_GT_STAR);});rule.selector=parts.join(COMPLEX_SELECTOR_SEP);},_transformDocumentSelector:function(selector){return this._transformComplexSelector(selector,SCOPE_DOC_SELECTOR);},_slottedToContent:function(cssText){return cssText.replace(SLOTTED_PAREN,CONTENT+'> $1');},_dirShadowTransform:function(selector){if(!selector.match(/:dir\\(/)){return selector;}\nreturn this._splitSelectorList(selector).map(function(s){s=this._ensureScopedDir(s);s=this._transformDir(s);var m=HOST_CONTEXT_PAREN.exec(s);if(m){s+=this._additionalDirSelectors(m[2],m[3],'');}\nreturn s;},this).join(COMPLEX_SELECTOR_SEP);},SCOPE_NAME:'style-scope'};var SCOPE_NAME=api.SCOPE_NAME;var SCOPE_DOC_SELECTOR=':not(['+SCOPE_NAME+'])'+':not(.'+SCOPE_NAME+')';var COMPLEX_SELECTOR_SEP=',';var SIMPLE_SELECTOR_SEP=/(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=\\[])+)/g;var SIMPLE_SELECTOR_PREFIX=/[[.:#*]/;var HOST=':host';var ROOT=':root';var HOST_PAREN=/(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;var HOST_CONTEXT=':host-context';var HOST_CONTEXT_PAREN=/(.*)(?::host-context)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))(.*)/;var CONTENT='::content';var SCOPE_JUMP=/::content|::shadow|\\/deep\\//;var CSS_CLASS_PREFIX='.';var CSS_ATTR_PREFIX='['+SCOPE_NAME+'~=';var CSS_ATTR_SUFFIX=']';var PSEUDO_PREFIX=':';var CLASS='class';var CONTENT_START=new RegExp('^('+CONTENT+')');var SELECTOR_NO_MATCH='should_not_match';var SLOTTED_PAREN=/(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/g;var HOST_OR_HOST_GT_STAR=/:host(?:\\s*>\\s*\\*)?/;var DIR_PAREN=/(.*):dir\\((ltr|rtl)\\)/;var DIR_REPLACE=':host-context([dir=\"$2\"]) $1';var HOST_DIR=/:host\\(:dir\\((rtl|ltr)\\)\\)/g;var HOST_DIR_REPLACE=':host-context([dir=\"$1\"])';return api;}();Polymer.StyleExtends=function(){var styleUtil=Polymer.StyleUtil;return{hasExtends:function(cssText){return Boolean(cssText.match(this.rx.EXTEND));},transform:function(style){var rules=styleUtil.rulesForStyle(style);var self=this;styleUtil.forEachRule(rules,function(rule){self._mapRuleOntoParent(rule);if(rule.parent){var m;while(m=self.rx.EXTEND.exec(rule.cssText)){var extend=m[1];var extendor=self._findExtendor(extend,rule);if(extendor){self._extendRule(rule,extendor);}}}\nrule.cssText=rule.cssText.replace(self.rx.EXTEND,'');});return styleUtil.toCssText(rules,function(rule){if(rule.selector.match(self.rx.STRIP)){rule.cssText='';}},true);},_mapRuleOntoParent:function(rule){if(rule.parent){var map=rule.parent.map||(rule.parent.map={});var parts=rule.selector.split(',');for(var i=0,p;i<parts.length;i++){p=parts[i];map[p.trim()]=rule;}\nreturn map;}},_findExtendor:function(extend,rule){return rule.parent&&rule.parent.map&&rule.parent.map[extend]||this._findExtendor(extend,rule.parent);},_extendRule:function(target,source){if(target.parent!==source.parent){this._cloneAndAddRuleToParent(source,target.parent);}\ntarget.extends=target.extends||[];target.extends.push(source);source.selector=source.selector.replace(this.rx.STRIP,'');source.selector=(source.selector&&source.selector+',\\n')+target.selector;if(source.extends){source.extends.forEach(function(e){this._extendRule(target,e);},this);}},_cloneAndAddRuleToParent:function(rule,parent){rule=Object.create(rule);rule.parent=parent;if(rule.extends){rule.extends=rule.extends.slice();}\nparent.rules.push(rule);},rx:{EXTEND:/@extends\\(([^)]*)\\)\\s*?;/gim,STRIP:/%[^,]*$/}};}();Polymer.ApplyShim=function(){'use strict';var styleUtil=Polymer.StyleUtil;var MIXIN_MATCH=styleUtil.rx.MIXIN_MATCH;var VAR_ASSIGN=styleUtil.rx.VAR_ASSIGN;var BAD_VAR=/var\\(\\s*(--[^,]*),\\s*(--[^)]*)\\)/g;var APPLY_NAME_CLEAN=/;\\s*/m;var INITIAL_INHERIT=/^\\s*(initial)|(inherit)\\s*$/;var MIXIN_VAR_SEP='_-_';var mixinMap={};function mapSet(name,props){name=name.trim();mixinMap[name]={properties:props,dependants:{}};}\nfunction mapGet(name){name=name.trim();return mixinMap[name];}\nfunction replaceInitialOrInherit(property,value){var match=INITIAL_INHERIT.exec(value);if(match){if(match[1]){value=ApplyShim._getInitialValueForProperty(property);}else{value='apply-shim-inherit';}}\nreturn value;}\nfunction cssTextToMap(text){var props=text.split(';');var property,value;var out={};for(var i=0,p,sp;i<props.length;i++){p=props[i];if(p){sp=p.split(':');if(sp.length>1){property=sp[0].trim();value=replaceInitialOrInherit(property,sp.slice(1).join(':'));out[property]=value;}}}\nreturn out;}\nfunction invalidateMixinEntry(mixinEntry){var currentProto=ApplyShim.__currentElementProto;var currentElementName=currentProto&&currentProto.is;for(var elementName in mixinEntry.dependants){if(elementName!==currentElementName){mixinEntry.dependants[elementName].__applyShimInvalid=true;}}}\nfunction produceCssProperties(matchText,propertyName,valueProperty,valueMixin){if(valueProperty){styleUtil.processVariableAndFallback(valueProperty,function(prefix,value){if(value&&mapGet(value)){valueMixin='@apply '+value+';';}});}\nif(!valueMixin){return matchText;}\nvar mixinAsProperties=consumeCssProperties(valueMixin);var prefix=matchText.slice(0,matchText.indexOf('--'));var mixinValues=cssTextToMap(mixinAsProperties);var combinedProps=mixinValues;var mixinEntry=mapGet(propertyName);var oldProps=mixinEntry&&mixinEntry.properties;if(oldProps){combinedProps=Object.create(oldProps);combinedProps=Polymer.Base.mixin(combinedProps,mixinValues);}else{mapSet(propertyName,combinedProps);}\nvar out=[];var p,v;var needToInvalidate=false;for(p in combinedProps){v=mixinValues[p];if(v===undefined){v='initial';}\nif(oldProps&&!(p in oldProps)){needToInvalidate=true;}\nout.push(propertyName+MIXIN_VAR_SEP+p+': '+v);}\nif(needToInvalidate){invalidateMixinEntry(mixinEntry);}\nif(mixinEntry){mixinEntry.properties=combinedProps;}\nif(valueProperty){prefix=matchText+';'+prefix;}\nreturn prefix+out.join('; ')+';';}\nfunction fixVars(matchText,varA,varB){return'var('+varA+','+'var('+varB+'))';}\nfunction atApplyToCssProperties(mixinName,fallbacks){mixinName=mixinName.replace(APPLY_NAME_CLEAN,'');var vars=[];var mixinEntry=mapGet(mixinName);if(!mixinEntry){mapSet(mixinName,{});mixinEntry=mapGet(mixinName);}\nif(mixinEntry){var currentProto=ApplyShim.__currentElementProto;if(currentProto){mixinEntry.dependants[currentProto.is]=currentProto;}\nvar p,parts,f;for(p in mixinEntry.properties){f=fallbacks&&fallbacks[p];parts=[p,': var(',mixinName,MIXIN_VAR_SEP,p];if(f){parts.push(',',f);}\nparts.push(')');vars.push(parts.join(''));}}\nreturn vars.join('; ');}\nfunction consumeCssProperties(text){var m;while(m=MIXIN_MATCH.exec(text)){var matchText=m[0];var mixinName=m[1];var idx=m.index;var applyPos=idx+matchText.indexOf('@apply');var afterApplyPos=idx+matchText.length;var textBeforeApply=text.slice(0,applyPos);var textAfterApply=text.slice(afterApplyPos);var defaults=cssTextToMap(textBeforeApply);var replacement=atApplyToCssProperties(mixinName,defaults);text=[textBeforeApply,replacement,textAfterApply].join('');MIXIN_MATCH.lastIndex=idx+replacement.length;}\nreturn text;}\nvar ApplyShim={_measureElement:null,_map:mixinMap,_separator:MIXIN_VAR_SEP,transform:function(styles,elementProto){this.__currentElementProto=elementProto;styleUtil.forRulesInStyles(styles,this._boundFindDefinitions);styleUtil.forRulesInStyles(styles,this._boundFindApplications);if(elementProto){elementProto.__applyShimInvalid=false;}\nthis.__currentElementProto=null;},_findDefinitions:function(rule){var cssText=rule.parsedCssText;cssText=cssText.replace(BAD_VAR,fixVars);cssText=cssText.replace(VAR_ASSIGN,produceCssProperties);rule.cssText=cssText;if(rule.selector===':root'){rule.selector=':host > *';}},_findApplications:function(rule){rule.cssText=consumeCssProperties(rule.cssText);},transformRule:function(rule){this._findDefinitions(rule);this._findApplications(rule);},_getInitialValueForProperty:function(property){if(!this._measureElement){this._measureElement=document.createElement('meta');this._measureElement.style.all='initial';document.head.appendChild(this._measureElement);}\nreturn window.getComputedStyle(this._measureElement).getPropertyValue(property);}};ApplyShim._boundTransformRule=ApplyShim.transformRule.bind(ApplyShim);ApplyShim._boundFindDefinitions=ApplyShim._findDefinitions.bind(ApplyShim);ApplyShim._boundFindApplications=ApplyShim._findApplications.bind(ApplyShim);return ApplyShim;}();(function(){var prepElement=Polymer.Base._prepElement;var nativeShadow=Polymer.Settings.useNativeShadow;var styleUtil=Polymer.StyleUtil;var styleTransformer=Polymer.StyleTransformer;var styleExtends=Polymer.StyleExtends;var applyShim=Polymer.ApplyShim;var settings=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(element){if(this._encapsulateStyle&&this.__cssBuild!=='shady'){styleTransformer.element(element,this.is,this._scopeCssViaAttr);}\nprepElement.call(this,element);},_prepStyles:function(){if(this._encapsulateStyle===undefined){this._encapsulateStyle=!nativeShadow;}\nif(!nativeShadow){this._scopeStyle=styleUtil.applyStylePlaceHolder(this.is);}\nthis.__cssBuild=styleUtil.cssBuildTypeForModule(this.is);},_prepShimStyles:function(){if(this._template){var hasTargetedCssBuild=styleUtil.isTargetedBuild(this.__cssBuild);if(settings.useNativeCSSProperties&&this.__cssBuild==='shadow'&&hasTargetedCssBuild){if(settings.preserveStyleIncludes){styleUtil.styleIncludesToTemplate(this._template);}\nreturn;}\nthis._styles=this._styles||this._collectStyles();if(settings.useNativeCSSProperties&&!this.__cssBuild){applyShim.transform(this._styles,this);}\nvar cssText=settings.useNativeCSSProperties&&hasTargetedCssBuild?this._styles.length&&this._styles[0].textContent.trim():styleTransformer.elementStyles(this);this._prepStyleProperties();if(!this._needsStyleProperties()&&cssText){styleUtil.applyCss(cssText,this.is,nativeShadow?this._template.content:null,this._scopeStyle);}}else{this._styles=[];}},_collectStyles:function(){var styles=[];var cssText='',m$=this.styleModules;if(m$){for(var i=0,l=m$.length,m;i<l&&(m=m$[i]);i++){cssText+=styleUtil.cssFromModule(m);}}\ncssText+=styleUtil.cssFromModule(this.is);var p=this._template&&this._template.parentNode;if(this._template&&(!p||p.id.toLowerCase()!==this.is)){cssText+=styleUtil.cssFromElement(this._template);}\nif(cssText){var style=document.createElement('style');style.textContent=cssText;if(styleExtends.hasExtends(style.textContent)){cssText=styleExtends.transform(style);}\nstyles.push(style);}\nreturn styles;},_elementAdd:function(node){if(this._encapsulateStyle){if(node.__styleScoped){node.__styleScoped=false;}else{styleTransformer.dom(node,this.is,this._scopeCssViaAttr);}}},_elementRemove:function(node){if(this._encapsulateStyle){styleTransformer.dom(node,this.is,this._scopeCssViaAttr,true);}},scopeSubtree:function(container,shouldObserve){if(nativeShadow){return;}\nvar self=this;var scopify=function(node){if(node.nodeType===Node.ELEMENT_NODE){var className=node.getAttribute('class');node.setAttribute('class',self._scopeElementClass(node,className));var n$=node.querySelectorAll('*');for(var i=0,n;i<n$.length&&(n=n$[i]);i++){className=n.getAttribute('class');n.setAttribute('class',self._scopeElementClass(n,className));}}};scopify(container);if(shouldObserve){var mo=new MutationObserver(function(mxns){for(var i=0,m;i<mxns.length&&(m=mxns[i]);i++){if(m.addedNodes){for(var j=0;j<m.addedNodes.length;j++){scopify(m.addedNodes[j]);}}}});mo.observe(container,{childList:true,subtree:true});return mo;}}});}());Polymer.StyleProperties=function(){'use strict';var matchesSelector=Polymer.DomApi.matchesSelector;var styleUtil=Polymer.StyleUtil;var styleTransformer=Polymer.StyleTransformer;var IS_IE=navigator.userAgent.match('Trident');var settings=Polymer.Settings;return{decorateStyles:function(styles,scope){var self=this,props={},keyframes=[],ruleIndex=0;var scopeSelector=styleTransformer._calcHostScope(scope.is,scope.extends);styleUtil.forRulesInStyles(styles,function(rule,style){self.decorateRule(rule);rule.index=ruleIndex++;self.whenHostOrRootRule(scope,rule,style,function(info){if(rule.parent.type===styleUtil.ruleTypes.MEDIA_RULE){scope.__notStyleScopeCacheable=true;}\nif(info.isHost){var hostContextOrFunction=info.selector.split(' ').some(function(s){return s.indexOf(scopeSelector)===0&&s.length!==scopeSelector.length;});scope.__notStyleScopeCacheable=scope.__notStyleScopeCacheable||hostContextOrFunction;}});self.collectPropertiesInCssText(rule.propertyInfo.cssText,props);},function onKeyframesRule(rule){keyframes.push(rule);});styles._keyframes=keyframes;var names=[];for(var i in props){names.push(i);}\nreturn names;},decorateRule:function(rule){if(rule.propertyInfo){return rule.propertyInfo;}\nvar info={},properties={};var hasProperties=this.collectProperties(rule,properties);if(hasProperties){info.properties=properties;rule.rules=null;}\ninfo.cssText=this.collectCssText(rule);rule.propertyInfo=info;return info;},collectProperties:function(rule,properties){var info=rule.propertyInfo;if(info){if(info.properties){Polymer.Base.mixin(properties,info.properties);return true;}}else{var m,rx=this.rx.VAR_ASSIGN;var cssText=rule.parsedCssText;var value;var any;while(m=rx.exec(cssText)){value=(m[2]||m[3]).trim();if(value!=='inherit'){properties[m[1].trim()]=value;}\nany=true;}\nreturn any;}},collectCssText:function(rule){return this.collectConsumingCssText(rule.parsedCssText);},collectConsumingCssText:function(cssText){return cssText.replace(this.rx.BRACKETED,'').replace(this.rx.VAR_ASSIGN,'');},collectPropertiesInCssText:function(cssText,props){var m;while(m=this.rx.VAR_CONSUMED.exec(cssText)){var name=m[1];if(m[2]!==':'){props[name]=true;}}},reify:function(props){var names=Object.getOwnPropertyNames(props);for(var i=0,n;i<names.length;i++){n=names[i];props[n]=this.valueForProperty(props[n],props);}},valueForProperty:function(property,props){if(property){if(property.indexOf(';')>=0){property=this.valueForProperties(property,props);}else{var self=this;var fn=function(prefix,value,fallback,suffix){var propertyValue=self.valueForProperty(props[value],props);if(!propertyValue||propertyValue==='initial'){propertyValue=self.valueForProperty(props[fallback]||fallback,props)||fallback;}else if(propertyValue==='apply-shim-inherit'){propertyValue='inherit';}\nreturn prefix+(propertyValue||'')+suffix;};property=styleUtil.processVariableAndFallback(property,fn);}}\nreturn property&&property.trim()||'';},valueForProperties:function(property,props){var parts=property.split(';');for(var i=0,p,m;i<parts.length;i++){if(p=parts[i]){this.rx.MIXIN_MATCH.lastIndex=0;m=this.rx.MIXIN_MATCH.exec(p);if(m){p=this.valueForProperty(props[m[1]],props);}else{var colon=p.indexOf(':');if(colon!==-1){var pp=p.substring(colon);pp=pp.trim();pp=this.valueForProperty(pp,props)||pp;p=p.substring(0,colon)+pp;}}\nparts[i]=p&&p.lastIndexOf(';')===p.length-1?p.slice(0,-1):p||'';}}\nreturn parts.join(';');},applyProperties:function(rule,props){var output='';if(!rule.propertyInfo){this.decorateRule(rule);}\nif(rule.propertyInfo.cssText){output=this.valueForProperties(rule.propertyInfo.cssText,props);}\nrule.cssText=output;},applyKeyframeTransforms:function(rule,keyframeTransforms){var input=rule.cssText;var output=rule.cssText;if(rule.hasAnimations==null){rule.hasAnimations=this.rx.ANIMATION_MATCH.test(input);}\nif(rule.hasAnimations){var transform;if(rule.keyframeNamesToTransform==null){rule.keyframeNamesToTransform=[];for(var keyframe in keyframeTransforms){transform=keyframeTransforms[keyframe];output=transform(input);if(input!==output){input=output;rule.keyframeNamesToTransform.push(keyframe);}}}else{for(var i=0;i<rule.keyframeNamesToTransform.length;++i){transform=keyframeTransforms[rule.keyframeNamesToTransform[i]];input=transform(input);}\noutput=input;}}\nrule.cssText=output;},propertyDataFromStyles:function(styles,element){var props={},self=this;var o=[];styleUtil.forActiveRulesInStyles(styles,function(rule){if(!rule.propertyInfo){self.decorateRule(rule);}\nvar selectorToMatch=rule.transformedSelector||rule.parsedSelector;if(element&&rule.propertyInfo.properties&&selectorToMatch){if(matchesSelector.call(element,selectorToMatch)){self.collectProperties(rule,props);addToBitMask(rule.index,o);}}});return{properties:props,key:o};},_rootSelector:/:root|:host\\s*>\\s*\\*/,_checkRoot:function(hostScope,selector){return Boolean(selector.match(this._rootSelector))||hostScope==='html'&&selector.indexOf('html')>-1;},whenHostOrRootRule:function(scope,rule,style,callback){if(!rule.propertyInfo){self.decorateRule(rule);}\nif(!rule.propertyInfo.properties){return;}\nvar hostScope=scope.is?styleTransformer._calcHostScope(scope.is,scope.extends):'html';var parsedSelector=rule.parsedSelector;var isRoot=this._checkRoot(hostScope,parsedSelector);var isHost=!isRoot&&parsedSelector.indexOf(':host')===0;var cssBuild=scope.__cssBuild||style.__cssBuild;if(cssBuild==='shady'){isRoot=parsedSelector===hostScope+' > *.'+hostScope||parsedSelector.indexOf('html')>-1;isHost=!isRoot&&parsedSelector.indexOf(hostScope)===0;}\nif(!isRoot&&!isHost){return;}\nvar selectorToMatch=hostScope;if(isHost){if(settings.useNativeShadow&&!rule.transformedSelector){rule.transformedSelector=styleTransformer._transformRuleCss(rule,styleTransformer._transformComplexSelector,scope.is,hostScope);}\nselectorToMatch=rule.transformedSelector||rule.parsedSelector;}\nif(isRoot&&hostScope==='html'){selectorToMatch=rule.transformedSelector||rule.parsedSelector;}\ncallback({selector:selectorToMatch,isHost:isHost,isRoot:isRoot});},hostAndRootPropertiesForScope:function(scope){var hostProps={},rootProps={},self=this;styleUtil.forActiveRulesInStyles(scope._styles,function(rule,style){self.whenHostOrRootRule(scope,rule,style,function(info){var element=scope._element||scope;if(matchesSelector.call(element,info.selector)){if(info.isHost){self.collectProperties(rule,hostProps);}else{self.collectProperties(rule,rootProps);}}});});return{rootProps:rootProps,hostProps:hostProps};},transformStyles:function(element,properties,scopeSelector){var self=this;var hostSelector=styleTransformer._calcHostScope(element.is,element.extends);var rxHostSelector=element.extends?'\\\\'+hostSelector.slice(0,-1)+'\\\\]':hostSelector;var hostRx=new RegExp(this.rx.HOST_PREFIX+rxHostSelector+this.rx.HOST_SUFFIX);var keyframeTransforms=this._elementKeyframeTransforms(element,scopeSelector);return styleTransformer.elementStyles(element,function(rule){self.applyProperties(rule,properties);if(!settings.useNativeShadow&&!Polymer.StyleUtil.isKeyframesSelector(rule)&&rule.cssText){self.applyKeyframeTransforms(rule,keyframeTransforms);self._scopeSelector(rule,hostRx,hostSelector,element._scopeCssViaAttr,scopeSelector);}});},_elementKeyframeTransforms:function(element,scopeSelector){var keyframesRules=element._styles._keyframes;var keyframeTransforms={};if(!settings.useNativeShadow&&keyframesRules){for(var i=0,keyframesRule=keyframesRules[i];i<keyframesRules.length;keyframesRule=keyframesRules[++i]){this._scopeKeyframes(keyframesRule,scopeSelector);keyframeTransforms[keyframesRule.keyframesName]=this._keyframesRuleTransformer(keyframesRule);}}\nreturn keyframeTransforms;},_keyframesRuleTransformer:function(keyframesRule){return function(cssText){return cssText.replace(keyframesRule.keyframesNameRx,keyframesRule.transformedKeyframesName);};},_scopeKeyframes:function(rule,scopeId){rule.keyframesNameRx=new RegExp('\\\\b'+rule.keyframesName+'(?!\\\\B|-)','g');rule.transformedKeyframesName=rule.keyframesName+'-'+scopeId;rule.transformedSelector=rule.transformedSelector||rule.selector;rule.selector=rule.transformedSelector.replace(rule.keyframesName,rule.transformedKeyframesName);},_hasDirOrHostContext:function(parsedSelector){return/:host-context|:dir/.test(parsedSelector);},_scopeSelector:function(rule,hostRx,hostSelector,viaAttr,scopeId){rule.transformedSelector=rule.transformedSelector||rule.selector;var selector=rule.transformedSelector;var scope=styleTransformer._calcElementScope(scopeId,viaAttr);var hostScope=styleTransformer._calcElementScope(hostSelector,viaAttr);var parts=selector.split(',');var isDirOrHostContextSelector=this._hasDirOrHostContext(rule.parsedSelector);for(var i=0,l=parts.length,p;i<l&&(p=parts[i]);i++){parts[i]=p.match(hostRx)?p.replace(hostSelector,scope):isDirOrHostContextSelector?p.replace(hostScope,scope+' '+hostScope):scope+' '+p;}\nrule.selector=parts.join(',');},applyElementScopeSelector:function(element,selector,old,viaAttr){var c=viaAttr?element.getAttribute(styleTransformer.SCOPE_NAME):element.getAttribute('class')||'';var v=old?c.replace(old,selector):(c?c+' ':'')+this.XSCOPE_NAME+' '+selector;if(c!==v){if(viaAttr){element.setAttribute(styleTransformer.SCOPE_NAME,v);}else{element.setAttribute('class',v);}}},applyElementStyle:function(element,properties,selector,style){var cssText=style?style.textContent||'':this.transformStyles(element,properties,selector);var s=element._customStyle;if(s&&!settings.useNativeShadow&&s!==style){s._useCount--;if(s._useCount<=0&&s.parentNode){s.parentNode.removeChild(s);}}\nif(settings.useNativeShadow){if(element._customStyle){element._customStyle.textContent=cssText;style=element._customStyle;}else if(cssText){style=styleUtil.applyCss(cssText,selector,element.root,element._scopeStyle);}}else{if(!style){if(cssText){style=styleUtil.applyCss(cssText,selector,null,element._scopeStyle);}}else if(!style.parentNode){if(IS_IE&&cssText.indexOf('@media')>-1){style.textContent=cssText;}\nstyleUtil.applyStyle(style,null,element._scopeStyle);}}\nif(style){style._useCount=style._useCount||0;if(element._customStyle!=style){style._useCount++;}\nelement._customStyle=style;}\nreturn style;},mixinCustomStyle:function(props,customStyle){var v;for(var i in customStyle){v=customStyle[i];if(v||v===0){props[i]=v;}}},updateNativeStyleProperties:function(element,properties){var oldPropertyNames=element.__customStyleProperties;if(oldPropertyNames){for(var i=0;i<oldPropertyNames.length;i++){element.style.removeProperty(oldPropertyNames[i]);}}\nvar propertyNames=[];for(var p in properties){if(properties[p]!==null){element.style.setProperty(p,properties[p]);propertyNames.push(p);}}\nelement.__customStyleProperties=propertyNames;},rx:styleUtil.rx,XSCOPE_NAME:'x-scope'};function addToBitMask(n,bits){var o=parseInt(n/32);var v=1<<n%32;bits[o]=(bits[o]||0)|v;}}();(function(){Polymer.StyleCache=function(){this.cache={};};Polymer.StyleCache.prototype={MAX:100,store:function(is,data,keyValues,keyStyles){data.keyValues=keyValues;data.styles=keyStyles;var s$=this.cache[is]=this.cache[is]||[];s$.push(data);if(s$.length>this.MAX){s$.shift();}},retrieve:function(is,keyValues,keyStyles){var cache=this.cache[is];if(cache){for(var i=cache.length-1,data;i>=0;i--){data=cache[i];if(keyStyles===data.styles&&this._objectsEqual(keyValues,data.keyValues)){return data;}}}},clear:function(){this.cache={};},_objectsEqual:function(target,source){var t,s;for(var i in target){t=target[i],s=source[i];if(!(typeof t==='object'&&t?this._objectsStrictlyEqual(t,s):t===s)){return false;}}\nif(Array.isArray(target)){return target.length===source.length;}\nreturn true;},_objectsStrictlyEqual:function(target,source){return this._objectsEqual(target,source)&&this._objectsEqual(source,target);}};}());Polymer.StyleDefaults=function(){var styleProperties=Polymer.StyleProperties;var StyleCache=Polymer.StyleCache;var nativeVariables=Polymer.Settings.useNativeCSSProperties;var api={_styles:[],_properties:null,customStyle:{},_styleCache:new StyleCache(),_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(style){this._styles.push(style);this._properties=null;},get _styleProperties(){if(!this._properties){styleProperties.decorateStyles(this._styles,this);this._styles._scopeStyleProperties=null;this._properties=styleProperties.hostAndRootPropertiesForScope(this).rootProps;styleProperties.mixinCustomStyle(this._properties,this.customStyle);styleProperties.reify(this._properties);}\nreturn this._properties;},hasStyleProperties:function(){return Boolean(this._properties);},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties;},updateStyles:function(properties){this._properties=null;if(properties){Polymer.Base.mixin(this.customStyle,properties);}\nthis._styleCache.clear();for(var i=0,s;i<this._styles.length;i++){s=this._styles[i];s=s.__importElement||s;s._apply();}\nif(nativeVariables){styleProperties.updateNativeStyleProperties(document.documentElement,this.customStyle);}}};return api;}();(function(){'use strict';var serializeValueToAttribute=Polymer.Base.serializeValueToAttribute;var propertyUtils=Polymer.StyleProperties;var styleTransformer=Polymer.StyleTransformer;var styleDefaults=Polymer.StyleDefaults;var nativeShadow=Polymer.Settings.useNativeShadow;var nativeVariables=Polymer.Settings.useNativeCSSProperties;Polymer.Base._addFeature({_prepStyleProperties:function(){if(!nativeVariables){this._ownStylePropertyNames=this._styles&&this._styles.length?propertyUtils.decorateStyles(this._styles,this):null;}},customStyle:null,getComputedStyleValue:function(property){if(!nativeVariables&&!this._styleProperties){this._computeStyleProperties();}\nreturn!nativeVariables&&this._styleProperties&&this._styleProperties[property]||getComputedStyle(this).getPropertyValue(property);},_setupStyleProperties:function(){this.customStyle={};this._styleCache=null;this._styleProperties=null;this._scopeSelector=null;this._ownStyleProperties=null;this._customStyle=null;},_needsStyleProperties:function(){return Boolean(!nativeVariables&&this._ownStylePropertyNames&&this._ownStylePropertyNames.length);},_validateApplyShim:function(){if(this.__applyShimInvalid){Polymer.ApplyShim.transform(this._styles,this.__proto__);var cssText=styleTransformer.elementStyles(this);if(nativeShadow){var templateStyle=this._template.content.querySelector('style');if(templateStyle){templateStyle.textContent=cssText;}}else{var shadyStyle=this._scopeStyle&&this._scopeStyle.nextSibling;if(shadyStyle){shadyStyle.textContent=cssText;}}}},_beforeAttached:function(){if((!this._scopeSelector||this.__stylePropertiesInvalid)&&this._needsStyleProperties()){this.__stylePropertiesInvalid=false;this._updateStyleProperties();}},_findStyleHost:function(){var e=this,root;while(root=Polymer.dom(e).getOwnerRoot()){if(Polymer.isInstance(root.host)){return root.host;}\ne=root.host;}\nreturn styleDefaults;},_updateStyleProperties:function(){var info,scope=this._findStyleHost();if(!scope._styleProperties){scope._computeStyleProperties();}\nif(!scope._styleCache){scope._styleCache=new Polymer.StyleCache();}\nvar scopeData=propertyUtils.propertyDataFromStyles(scope._styles,this);var scopeCacheable=!this.__notStyleScopeCacheable;if(scopeCacheable){scopeData.key.customStyle=this.customStyle;info=scope._styleCache.retrieve(this.is,scopeData.key,this._styles);}\nvar scopeCached=Boolean(info);if(scopeCached){this._styleProperties=info._styleProperties;}else{this._computeStyleProperties(scopeData.properties);}\nthis._computeOwnStyleProperties();if(!scopeCached){info=styleCache.retrieve(this.is,this._ownStyleProperties,this._styles);}\nvar globalCached=Boolean(info)&&!scopeCached;var style=this._applyStyleProperties(info);if(!scopeCached){style=style&&nativeShadow?style.cloneNode(true):style;info={style:style,_scopeSelector:this._scopeSelector,_styleProperties:this._styleProperties};if(scopeCacheable){scopeData.key.customStyle={};this.mixin(scopeData.key.customStyle,this.customStyle);scope._styleCache.store(this.is,info,scopeData.key,this._styles);}\nif(!globalCached){styleCache.store(this.is,Object.create(info),this._ownStyleProperties,this._styles);}}},_computeStyleProperties:function(scopeProps){var scope=this._findStyleHost();if(!scope._styleProperties){scope._computeStyleProperties();}\nvar props=Object.create(scope._styleProperties);var hostAndRootProps=propertyUtils.hostAndRootPropertiesForScope(this);this.mixin(props,hostAndRootProps.hostProps);scopeProps=scopeProps||propertyUtils.propertyDataFromStyles(scope._styles,this).properties;this.mixin(props,scopeProps);this.mixin(props,hostAndRootProps.rootProps);propertyUtils.mixinCustomStyle(props,this.customStyle);propertyUtils.reify(props);this._styleProperties=props;},_computeOwnStyleProperties:function(){var props={};for(var i=0,n;i<this._ownStylePropertyNames.length;i++){n=this._ownStylePropertyNames[i];props[n]=this._styleProperties[n];}\nthis._ownStyleProperties=props;},_scopeCount:0,_applyStyleProperties:function(info){var oldScopeSelector=this._scopeSelector;this._scopeSelector=info?info._scopeSelector:this.is+'-'+this.__proto__._scopeCount++;var style=propertyUtils.applyElementStyle(this,this._styleProperties,this._scopeSelector,info&&info.style);if(!nativeShadow){propertyUtils.applyElementScopeSelector(this,this._scopeSelector,oldScopeSelector,this._scopeCssViaAttr);}\nreturn style;},serializeValueToAttribute:function(value,attribute,node){node=node||this;if(attribute==='class'&&!nativeShadow){var host=node===this?this.domHost||this.dataHost:this;if(host){value=host._scopeElementClass(node,value);}}\nnode=this.shadyRoot&&this.shadyRoot._hasDistributed?Polymer.dom(node):node;serializeValueToAttribute.call(this,value,attribute,node);},_scopeElementClass:function(element,selector){if(!nativeShadow&&!this._scopeCssViaAttr){selector=(selector?selector+' ':'')+SCOPE_NAME+' '+this.is+(element._scopeSelector?' '+XSCOPE_NAME+' '+element._scopeSelector:'');}\nreturn selector;},updateStyles:function(properties){if(properties){this.mixin(this.customStyle,properties);}\nif(nativeVariables){propertyUtils.updateNativeStyleProperties(this,this.customStyle);}else{if(this.isAttached){if(this._needsStyleProperties()){this._updateStyleProperties();}else{this._styleProperties=null;}}else{this.__stylePropertiesInvalid=true;}\nif(this._styleCache){this._styleCache.clear();}\nthis._updateRootStyles();}},_updateRootStyles:function(root){root=root||this.root;var c$=Polymer.dom(root)._query(function(e){return e.shadyRoot||e.shadowRoot;});for(var i=0,l=c$.length,c;i<l&&(c=c$[i]);i++){if(c.updateStyles){c.updateStyles();}}}});Polymer.updateStyles=function(properties){styleDefaults.updateStyles(properties);Polymer.Base._updateRootStyles(document);};var styleCache=new Polymer.StyleCache();Polymer.customStyleCache=styleCache;var SCOPE_NAME=styleTransformer.SCOPE_NAME;var XSCOPE_NAME=propertyUtils.XSCOPE_NAME;}());Polymer.Base._addFeature({_registerFeatures:function(){this._prepIs();if(this.factoryImpl){this._prepConstructor();}\nthis._prepStyles();},_finishRegisterFeatures:function(){this._prepTemplate();this._prepShimStyles();this._prepAnnotations();this._prepEffects();this._prepBehaviors();this._prepPropertyInfo();this._prepBindings();this._prepShady();},_prepBehavior:function(b){this._addPropertyEffects(b.properties);this._addComplexObserverEffects(b.observers);this._addHostAttributes(b.hostAttributes);},_initFeatures:function(){this._setupGestures();this._setupConfigure(this.__data__);this._setupStyleProperties();this._setupDebouncers();this._setupShady();this._registerHost();if(this._template){this._validateApplyShim();this._poolContent();this._beginHosting();this._stampTemplate();this._endHosting();this._marshalAnnotationReferences();}\nthis._marshalInstanceEffects();this._marshalBehaviors();this._marshalHostAttributes();this._marshalAttributes();this._tryReady();},_marshalBehavior:function(b){if(b.listeners){this._listenListeners(b.listeners);}}});(function(){var propertyUtils=Polymer.StyleProperties;var styleUtil=Polymer.StyleUtil;var cssParse=Polymer.CssParse;var styleDefaults=Polymer.StyleDefaults;var styleTransformer=Polymer.StyleTransformer;var applyShim=Polymer.ApplyShim;var debounce=Polymer.Debounce;var settings=Polymer.Settings;var updateDebouncer;Polymer({is:'custom-style',extends:'style',_template:null,properties:{include:String},ready:function(){this.__appliedElement=this.__appliedElement||this;this.__cssBuild=styleUtil.getCssBuildType(this);if(this.__appliedElement!==this){this.__appliedElement.__cssBuild=this.__cssBuild;}\nif(this.ownerDocument!==window.document&&this.__appliedElement===this){document.head.appendChild(this);}\nthis._tryApply();},attached:function(){this._tryApply();},_tryApply:function(){if(!this._appliesToDocument){if(this.parentNode&&this.parentNode.localName!=='dom-module'){this._appliesToDocument=true;var e=this.__appliedElement;if(!settings.useNativeCSSProperties){this.__needsUpdateStyles=styleDefaults.hasStyleProperties();styleDefaults.addStyle(e);}\nif(e.textContent||this.include){this._apply(true);}else{var self=this;var observer=new MutationObserver(function(){observer.disconnect();self._apply(true);});observer.observe(e,{childList:true});}}}},_updateStyles:function(){Polymer.updateStyles();},_apply:function(initialApply){var e=this.__appliedElement;if(this.include){e.textContent=styleUtil.cssFromModules(this.include,true)+e.textContent;}\nif(!e.textContent){return;}\nvar buildType=this.__cssBuild;var targetedBuild=styleUtil.isTargetedBuild(buildType);if(settings.useNativeCSSProperties&&targetedBuild){return;}\nvar styleRules=styleUtil.rulesForStyle(e);if(!targetedBuild){styleUtil.forEachRule(styleRules,function(rule){styleTransformer.documentRule(rule);});if(settings.useNativeCSSProperties&&!buildType){applyShim.transform([e]);}}\nif(settings.useNativeCSSProperties){e.textContent=styleUtil.toCssText(styleRules);}else{var self=this;var fn=function fn(){self._flushCustomProperties();};if(initialApply){Polymer.RenderStatus.whenReady(fn);}else{fn();}}},_flushCustomProperties:function(){if(this.__needsUpdateStyles){this.__needsUpdateStyles=false;updateDebouncer=debounce(updateDebouncer,this._updateStyles);}else{this._applyCustomProperties();}},_applyCustomProperties:function(){var element=this.__appliedElement;this._computeStyleProperties();var props=this._styleProperties;var rules=styleUtil.rulesForStyle(element);if(!rules){return;}\nelement.textContent=styleUtil.toCssText(rules,function(rule){var css=rule.cssText=rule.parsedCssText;if(rule.propertyInfo&&rule.propertyInfo.cssText){css=cssParse.removeCustomPropAssignment(css);rule.cssText=propertyUtils.valueForProperties(css,props);}});}});}());Polymer.Templatizer={properties:{__hideTemplateChildren__:{observer:'_showHideChildren'}},_instanceProps:Polymer.nob,_parentPropPrefix:'_parent_',templatize:function(template){this._templatized=template;if(!template._content){template._content=template.content;}\nif(template._content._ctor){this.ctor=template._content._ctor;this._prepParentProperties(this.ctor.prototype,template);return;}\nvar archetype=Object.create(Polymer.Base);this._customPrepAnnotations(archetype,template);this._prepParentProperties(archetype,template);archetype._prepEffects();this._customPrepEffects(archetype);archetype._prepBehaviors();archetype._prepPropertyInfo();archetype._prepBindings();archetype._notifyPathUp=this._notifyPathUpImpl;archetype._scopeElementClass=this._scopeElementClassImpl;archetype.listen=this._listenImpl;archetype._showHideChildren=this._showHideChildrenImpl;archetype.__setPropertyOrig=this.__setProperty;archetype.__setProperty=this.__setPropertyImpl;var _constructor=this._constructorImpl;var ctor=function TemplateInstance(model,host){_constructor.call(this,model,host);};ctor.prototype=archetype;archetype.constructor=ctor;template._content._ctor=ctor;this.ctor=ctor;},_getRootDataHost:function(){return this.dataHost&&this.dataHost._rootDataHost||this.dataHost;},_showHideChildrenImpl:function(hide){var c=this._children;for(var i=0;i<c.length;i++){var n=c[i];if(Boolean(hide)!=Boolean(n.__hideTemplateChildren__)){if(n.nodeType===Node.TEXT_NODE){if(hide){n.__polymerTextContent__=n.textContent;n.textContent='';}else{n.textContent=n.__polymerTextContent__;}}else if(n.style){if(hide){n.__polymerDisplay__=n.style.display;n.style.display='none';}else{n.style.display=n.__polymerDisplay__;}}}\nn.__hideTemplateChildren__=hide;}},__setPropertyImpl:function(property,value,fromAbove,node){if(node&&node.__hideTemplateChildren__&&property=='textContent'){property='__polymerTextContent__';}\nthis.__setPropertyOrig(property,value,fromAbove,node);},_debounceTemplate:function(fn){Polymer.dom.addDebouncer(this.debounce('_debounceTemplate',fn));},_flushTemplates:function(){Polymer.dom.flush();},_customPrepEffects:function(archetype){var parentProps=archetype._parentProps;for(var prop in parentProps){archetype._addPropertyEffect(prop,'function',this._createHostPropEffector(prop));}\nfor(prop in this._instanceProps){archetype._addPropertyEffect(prop,'function',this._createInstancePropEffector(prop));}},_customPrepAnnotations:function(archetype,template){var t=archetype._template=document.createElement('template');var c=t._content=template._content;if(!c._notes){var rootDataHost=archetype._rootDataHost;if(rootDataHost){Polymer.Annotations.prepElement=function(){rootDataHost._prepElement();};}\nc._notes=Polymer.Annotations.parseAnnotations(template);Polymer.Annotations.prepElement=null;this._processAnnotations(c._notes);}\narchetype._notes=c._notes;archetype._parentProps=c._parentProps;},_prepParentProperties:function(archetype,template){var parentProps=this._parentProps=archetype._parentProps;if(this._forwardParentProp&&parentProps){var proto=archetype._parentPropProto;var prop;if(!proto){for(prop in this._instanceProps){delete parentProps[prop];}\nproto=archetype._parentPropProto=Object.create(null);if(template!=this){Polymer.Bind.prepareModel(proto);Polymer.Base.prepareModelNotifyPath(proto);}\nfor(prop in parentProps){var parentProp=this._parentPropPrefix+prop;var effects=[{kind:'function',effect:this._createForwardPropEffector(prop),fn:Polymer.Bind._functionEffect},{kind:'notify',fn:Polymer.Bind._notifyEffect,effect:{event:Polymer.CaseMap.camelToDashCase(parentProp)+'-changed'}}];proto._propertyEffects=proto._propertyEffects||{};proto._propertyEffects[parentProp]=effects;Polymer.Bind._createAccessors(proto,parentProp,effects);}}\nvar self=this;if(template!=this){Polymer.Bind.prepareInstance(template);template._forwardParentProp=function(source,value){self._forwardParentProp(source,value);};}\nthis._extendTemplate(template,proto);template._pathEffector=function(path,value,fromAbove){return self._pathEffectorImpl(path,value,fromAbove);};}},_createForwardPropEffector:function(prop){return function(source,value){this._forwardParentProp(prop,value);};},_createHostPropEffector:function(prop){var prefix=this._parentPropPrefix;return function(source,value){this.dataHost._templatized[prefix+prop]=value;};},_createInstancePropEffector:function(prop){return function(source,value,old,fromAbove){if(!fromAbove){this.dataHost._forwardInstanceProp(this,prop,value);}};},_extendTemplate:function(template,proto){var n$=Object.getOwnPropertyNames(proto);if(proto._propertySetter){template._propertySetter=proto._propertySetter;}\nfor(var i=0,n;i<n$.length&&(n=n$[i]);i++){var val=template[n];if(val&&n=='_propertyEffects'){var pe=Polymer.Base.mixin({},val);template._propertyEffects=Polymer.Base.mixin(pe,proto._propertyEffects);}else{var pd=Object.getOwnPropertyDescriptor(proto,n);Object.defineProperty(template,n,pd);if(val!==undefined){template._propertySetter(n,val);}}}},_showHideChildren:function(hidden){},_forwardInstancePath:function(inst,path,value){},_forwardInstanceProp:function(inst,prop,value){},_notifyPathUpImpl:function(path,value){var dataHost=this.dataHost;var root=Polymer.Path.root(path);dataHost._forwardInstancePath.call(dataHost,this,path,value);if(root in dataHost._parentProps){dataHost._templatized._notifyPath(dataHost._parentPropPrefix+path,value);}},_pathEffectorImpl:function(path,value,fromAbove){if(this._forwardParentPath){if(path.indexOf(this._parentPropPrefix)===0){var subPath=path.substring(this._parentPropPrefix.length);var model=Polymer.Path.root(subPath);if(model in this._parentProps){this._forwardParentPath(subPath,value);}}}\nPolymer.Base._pathEffector.call(this._templatized,path,value,fromAbove);},_constructorImpl:function(model,host){this._rootDataHost=host._getRootDataHost();this._setupConfigure(model);this._registerHost(host);this._beginHosting();this.root=this.instanceTemplate(this._template);this.root.__noContent=!this._notes._hasContent;this.root.__styleScoped=true;this._endHosting();this._marshalAnnotatedNodes();this._marshalInstanceEffects();this._marshalAnnotatedListeners();var children=[];for(var n=this.root.firstChild;n;n=n.nextSibling){children.push(n);n._templateInstance=this;}\nthis._children=children;if(host.__hideTemplateChildren__){this._showHideChildren(true);}\nthis._tryReady();},_listenImpl:function(node,eventName,methodName){var model=this;var host=this._rootDataHost;var handler=host._createEventHandler(node,eventName,methodName);var decorated=function(e){e.model=model;handler(e);};host._listen(node,eventName,decorated);},_scopeElementClassImpl:function(node,value){var host=this._rootDataHost;if(host){return host._scopeElementClass(node,value);}\nreturn value;},stamp:function(model){model=model||{};if(this._parentProps){var templatized=this._templatized;for(var prop in this._parentProps){if(model[prop]===undefined){model[prop]=templatized[this._parentPropPrefix+prop];}}}\nreturn new this.ctor(model,this);},modelForElement:function(el){var model;while(el){if(model=el._templateInstance){if(model.dataHost!=this){el=model.dataHost;}else{return model;}}else{el=el.parentNode;}}}};Polymer({is:'dom-template',extends:'template',_template:null,behaviors:[Polymer.Templatizer],ready:function(){this.templatize(this);}});Polymer._collections=new WeakMap();Polymer.Collection=function(userArray){Polymer._collections.set(userArray,this);this.userArray=userArray;this.store=userArray.slice();this.initMap();};Polymer.Collection.prototype={constructor:Polymer.Collection,initMap:function(){var omap=this.omap=new WeakMap();var pmap=this.pmap={};var s=this.store;for(var i=0;i<s.length;i++){var item=s[i];if(item&&typeof item=='object'){omap.set(item,i);}else{pmap[item]=i;}}},add:function(item){var key=this.store.push(item)-1;if(item&&typeof item=='object'){this.omap.set(item,key);}else{this.pmap[item]=key;}\nreturn'#'+key;},removeKey:function(key){if(key=this._parseKey(key)){this._removeFromMap(this.store[key]);delete this.store[key];}},_removeFromMap:function(item){if(item&&typeof item=='object'){this.omap.delete(item);}else{delete this.pmap[item];}},remove:function(item){var key=this.getKey(item);this.removeKey(key);return key;},getKey:function(item){var key;if(item&&typeof item=='object'){key=this.omap.get(item);}else{key=this.pmap[item];}\nif(key!=undefined){return'#'+key;}},getKeys:function(){return Object.keys(this.store).map(function(key){return'#'+key;});},_parseKey:function(key){if(key&&key[0]=='#'){return key.slice(1);}},setItem:function(key,item){if(key=this._parseKey(key)){var old=this.store[key];if(old){this._removeFromMap(old);}\nif(item&&typeof item=='object'){this.omap.set(item,key);}else{this.pmap[item]=key;}\nthis.store[key]=item;}},getItem:function(key){if(key=this._parseKey(key)){return this.store[key];}},getItems:function(){var items=[],store=this.store;for(var key in store){items.push(store[key]);}\nreturn items;},_applySplices:function(splices){var keyMap={},key;for(var i=0,s;i<splices.length&&(s=splices[i]);i++){s.addedKeys=[];for(var j=0;j<s.removed.length;j++){key=this.getKey(s.removed[j]);keyMap[key]=keyMap[key]?null:-1;}\nfor(j=0;j<s.addedCount;j++){var item=this.userArray[s.index+j];key=this.getKey(item);key=key===undefined?this.add(item):key;keyMap[key]=keyMap[key]?null:1;s.addedKeys.push(key);}}\nvar removed=[];var added=[];for(key in keyMap){if(keyMap[key]<0){this.removeKey(key);removed.push(key);}\nif(keyMap[key]>0){added.push(key);}}\nreturn[{removed:removed,added:added}];}};Polymer.Collection.get=function(userArray){return Polymer._collections.get(userArray)||new Polymer.Collection(userArray);};Polymer.Collection.applySplices=function(userArray,splices){var coll=Polymer._collections.get(userArray);return coll?coll._applySplices(splices):null;};Polymer({is:'dom-repeat',extends:'template',_template:null,properties:{items:{type:Array},as:{type:String,value:'item'},indexAs:{type:String,value:'index'},sort:{type:Function,observer:'_sortChanged'},filter:{type:Function,observer:'_filterChanged'},observe:{type:String,observer:'_observeChanged'},delay:Number,renderedItemCount:{type:Number,notify:!Polymer.Settings.suppressTemplateNotifications,readOnly:true},initialCount:{type:Number,observer:'_initializeChunking'},targetFramerate:{type:Number,value:20},notifyDomChange:{type:Boolean},_targetFrameTime:{type:Number,computed:'_computeFrameTime(targetFramerate)'}},behaviors:[Polymer.Templatizer],observers:['_itemsChanged(items.*)'],created:function(){this._instances=[];this._pool=[];this._limit=Infinity;var self=this;this._boundRenderChunk=function(){self._renderChunk();};},detached:function(){this.__isDetached=true;for(var i=0;i<this._instances.length;i++){this._detachInstance(i);}},attached:function(){if(this.__isDetached){this.__isDetached=false;var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nvar parent=Polymer.dom(parentNode);for(var i=0;i<this._instances.length;i++){this._attachInstance(i,parent,refNode);}}},ready:function(){this._instanceProps={__key__:true};this._instanceProps[this.as]=true;this._instanceProps[this.indexAs]=true;if(!this.ctor){this.templatize(this);}},_sortChanged:function(sort){var dataHost=this._getRootDataHost();this._sortFn=sort&&(typeof sort=='function'?sort:function(){return dataHost[sort].apply(dataHost,arguments);});this._needFullRefresh=true;if(this.items){this._debounceTemplate(this._render);}},_filterChanged:function(filter){var dataHost=this._getRootDataHost();this._filterFn=filter&&(typeof filter=='function'?filter:function(){return dataHost[filter].apply(dataHost,arguments);});this._needFullRefresh=true;if(this.items){this._debounceTemplate(this._render);}},_computeFrameTime:function(rate){return Math.ceil(1000/rate);},_initializeChunking:function(){if(this.initialCount){this._limit=this.initialCount;this._chunkCount=this.initialCount;this._lastChunkTime=performance.now();}},_tryRenderChunk:function(){if(this.items&&this._limit<this.items.length){this.debounce('renderChunk',this._requestRenderChunk);}},_requestRenderChunk:function(){requestAnimationFrame(this._boundRenderChunk);},_renderChunk:function(){var currChunkTime=performance.now();var ratio=this._targetFrameTime/(currChunkTime-this._lastChunkTime);this._chunkCount=Math.round(this._chunkCount*ratio)||1;this._limit+=this._chunkCount;this._lastChunkTime=currChunkTime;this._debounceTemplate(this._render);},_observeChanged:function(){this._observePaths=this.observe&&this.observe.replace('.*','.').split(' ');},_itemsChanged:function(change){if(change.path=='items'){if(Array.isArray(this.items)){this.collection=Polymer.Collection.get(this.items);}else if(!this.items){this.collection=null;}else{this._error(this._logf('dom-repeat','expected array for `items`,'+' found',this.items));}\nthis._keySplices=[];this._indexSplices=[];this._needFullRefresh=true;this._initializeChunking();this._debounceTemplate(this._render);}else if(change.path=='items.splices'){this._keySplices=this._keySplices.concat(change.value.keySplices);this._indexSplices=this._indexSplices.concat(change.value.indexSplices);this._debounceTemplate(this._render);}else{var subpath=change.path.slice(6);this._forwardItemPath(subpath,change.value);this._checkObservedPaths(subpath);}},_checkObservedPaths:function(path){if(this._observePaths){path=path.substring(path.indexOf('.')+1);var paths=this._observePaths;for(var i=0;i<paths.length;i++){if(path.indexOf(paths[i])===0){this._needFullRefresh=true;if(this.delay){this.debounce('render',this._render,this.delay);}else{this._debounceTemplate(this._render);}\nreturn;}}}},render:function(){this._needFullRefresh=true;this._debounceTemplate(this._render);this._flushTemplates();},_render:function(){if(this._needFullRefresh){this._applyFullRefresh();this._needFullRefresh=false;}else if(this._keySplices.length){if(this._sortFn){this._applySplicesUserSort(this._keySplices);}else{if(this._filterFn){this._applyFullRefresh();}else{this._applySplicesArrayOrder(this._indexSplices);}}}else{}\nthis._keySplices=[];this._indexSplices=[];var keyToIdx=this._keyToInstIdx={};for(var i=this._instances.length-1;i>=0;i--){var inst=this._instances[i];if(inst.isPlaceholder&&i<this._limit){inst=this._insertInstance(i,inst.__key__);}else if(!inst.isPlaceholder&&i>=this._limit){inst=this._downgradeInstance(i,inst.__key__);}\nkeyToIdx[inst.__key__]=i;if(!inst.isPlaceholder){inst.__setProperty(this.indexAs,i,true);}}\nthis._pool.length=0;this._setRenderedItemCount(this._instances.length);if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}\nthis._tryRenderChunk();},_applyFullRefresh:function(){var c=this.collection;var keys;if(this._sortFn){keys=c?c.getKeys():[];}else{keys=[];var items=this.items;if(items){for(var i=0;i<items.length;i++){keys.push(c.getKey(items[i]));}}}\nvar self=this;if(this._filterFn){keys=keys.filter(function(a){return self._filterFn(c.getItem(a));});}\nif(this._sortFn){keys.sort(function(a,b){return self._sortFn(c.getItem(a),c.getItem(b));});}\nfor(i=0;i<keys.length;i++){var key=keys[i];var inst=this._instances[i];if(inst){inst.__key__=key;if(!inst.isPlaceholder&&i<this._limit){inst.__setProperty(this.as,c.getItem(key),true);}}else if(i<this._limit){this._insertInstance(i,key);}else{this._insertPlaceholder(i,key);}}\nfor(var j=this._instances.length-1;j>=i;j--){this._detachAndRemoveInstance(j);}},_numericSort:function(a,b){return a-b;},_applySplicesUserSort:function(splices){var c=this.collection;var keyMap={};var key;for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0;j<s.removed.length;j++){key=s.removed[j];keyMap[key]=keyMap[key]?null:-1;}\nfor(j=0;j<s.added.length;j++){key=s.added[j];keyMap[key]=keyMap[key]?null:1;}}\nvar removedIdxs=[];var addedKeys=[];for(key in keyMap){if(keyMap[key]===-1){removedIdxs.push(this._keyToInstIdx[key]);}\nif(keyMap[key]===1){addedKeys.push(key);}}\nif(removedIdxs.length){removedIdxs.sort(this._numericSort);for(i=removedIdxs.length-1;i>=0;i--){var idx=removedIdxs[i];if(idx!==undefined){this._detachAndRemoveInstance(idx);}}}\nvar self=this;if(addedKeys.length){if(this._filterFn){addedKeys=addedKeys.filter(function(a){return self._filterFn(c.getItem(a));});}\naddedKeys.sort(function(a,b){return self._sortFn(c.getItem(a),c.getItem(b));});var start=0;for(i=0;i<addedKeys.length;i++){start=this._insertRowUserSort(start,addedKeys[i]);}}},_insertRowUserSort:function(start,key){var c=this.collection;var item=c.getItem(key);var end=this._instances.length-1;var idx=-1;while(start<=end){var mid=start+end>>1;var midKey=this._instances[mid].__key__;var cmp=this._sortFn(c.getItem(midKey),item);if(cmp<0){start=mid+1;}else if(cmp>0){end=mid-1;}else{idx=mid;break;}}\nif(idx<0){idx=end+1;}\nthis._insertPlaceholder(idx,key);return idx;},_applySplicesArrayOrder:function(splices){for(var i=0,s;i<splices.length&&(s=splices[i]);i++){for(var j=0;j<s.removed.length;j++){this._detachAndRemoveInstance(s.index);}\nfor(j=0;j<s.addedKeys.length;j++){this._insertPlaceholder(s.index+j,s.addedKeys[j]);}}},_detachInstance:function(idx){var inst=this._instances[idx];if(!inst.isPlaceholder){for(var i=0;i<inst._children.length;i++){var el=inst._children[i];Polymer.dom(inst.root).appendChild(el);}\nreturn inst;}},_attachInstance:function(idx,parent,refNode){var inst=this._instances[idx];if(!inst.isPlaceholder){parent.insertBefore(inst.root,refNode);}},_detachAndRemoveInstance:function(idx){var inst=this._detachInstance(idx);if(inst){this._pool.push(inst);}\nthis._instances.splice(idx,1);},_insertPlaceholder:function(idx,key){this._instances.splice(idx,0,{isPlaceholder:true,__key__:key});},_stampInstance:function(idx,key){var model={__key__:key};model[this.as]=this.collection.getItem(key);model[this.indexAs]=idx;return this.stamp(model);},_insertInstance:function(idx,key){var inst=this._pool.pop();if(inst){inst.__setProperty(this.as,this.collection.getItem(key),true);inst.__setProperty('__key__',key,true);}else{inst=this._stampInstance(idx,key);}\nvar beforeRow=this._instances[idx+1];var beforeNode=beforeRow&&!beforeRow.isPlaceholder?beforeRow._children[0]:this;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){if(beforeNode==this){beforeNode=parentNode;}\nparentNode=Polymer.dom(parentNode).parentNode;}\nPolymer.dom(parentNode).insertBefore(inst.root,beforeNode);this._instances[idx]=inst;return inst;},_downgradeInstance:function(idx,key){var inst=this._detachInstance(idx);if(inst){this._pool.push(inst);}\ninst={isPlaceholder:true,__key__:key};this._instances[idx]=inst;return inst;},_showHideChildren:function(hidden){for(var i=0;i<this._instances.length;i++){if(!this._instances[i].isPlaceholder)\nthis._instances[i]._showHideChildren(hidden);}},_forwardInstanceProp:function(inst,prop,value){if(prop==this.as){var idx;if(this._sortFn||this._filterFn){idx=this.items.indexOf(this.collection.getItem(inst.__key__));}else{idx=inst[this.indexAs];}\nthis.set('items.'+idx,value);}},_forwardInstancePath:function(inst,path,value){if(path.indexOf(this.as+'.')===0){this._notifyPath('items.'+inst.__key__+'.'+path.slice(this.as.length+1),value);}},_forwardParentProp:function(prop,value){var i$=this._instances;for(var i=0,inst;i<i$.length&&(inst=i$[i]);i++){if(!inst.isPlaceholder){inst.__setProperty(prop,value,true);}}},_forwardParentPath:function(path,value){var i$=this._instances;for(var i=0,inst;i<i$.length&&(inst=i$[i]);i++){if(!inst.isPlaceholder){inst._notifyPath(path,value,true);}}},_forwardItemPath:function(path,value){if(this._keyToInstIdx){var dot=path.indexOf('.');var key=path.substring(0,dot<0?path.length:dot);var idx=this._keyToInstIdx[key];var inst=this._instances[idx];if(inst&&!inst.isPlaceholder){if(dot>=0){path=this.as+'.'+path.substring(dot+1);inst._notifyPath(path,value,true);}else{inst.__setProperty(this.as,value,true);}}}},itemForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.as];},keyForElement:function(el){var instance=this.modelForElement(el);return instance&&instance.__key__;},indexForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.indexAs];}});Polymer({is:'array-selector',_template:null,properties:{items:{type:Array,observer:'clearSelection'},multi:{type:Boolean,value:false,observer:'clearSelection'},selected:{type:Object,notify:true},selectedItem:{type:Object,notify:true},toggle:{type:Boolean,value:false}},clearSelection:function(){if(Array.isArray(this.selected)){for(var i=0;i<this.selected.length;i++){this.unlinkPaths('selected.'+i);}}else{this.unlinkPaths('selected');this.unlinkPaths('selectedItem');}\nif(this.multi){if(!this.selected||this.selected.length){this.selected=[];this._selectedColl=Polymer.Collection.get(this.selected);}}else{this.selected=null;this._selectedColl=null;}\nthis.selectedItem=null;},isSelected:function(item){if(this.multi){return this._selectedColl.getKey(item)!==undefined;}else{return this.selected==item;}},deselect:function(item){if(this.multi){if(this.isSelected(item)){var skey=this._selectedColl.getKey(item);this.arrayDelete('selected',item);this.unlinkPaths('selected.'+skey);}}else{this.selected=null;this.selectedItem=null;this.unlinkPaths('selected');this.unlinkPaths('selectedItem');}},select:function(item){var icol=Polymer.Collection.get(this.items);var key=icol.getKey(item);if(this.multi){if(this.isSelected(item)){if(this.toggle){this.deselect(item);}}else{this.push('selected',item);var skey=this._selectedColl.getKey(item);this.linkPaths('selected.'+skey,'items.'+key);}}else{if(this.toggle&&item==this.selected){this.deselect();}else{this.selected=item;this.selectedItem=item;this.linkPaths('selected','items.'+key);this.linkPaths('selectedItem','items.'+key);}}}});Polymer({is:'dom-if',extends:'template',_template:null,properties:{'if':{type:Boolean,value:false,observer:'_queueRender'},restamp:{type:Boolean,value:false,observer:'_queueRender'},notifyDomChange:{type:Boolean}},behaviors:[Polymer.Templatizer],_queueRender:function(){this._debounceTemplate(this._render);},detached:function(){var parentNode=this.parentNode;if(parentNode&&parentNode.localName==this.is){parentNode=Polymer.dom(parentNode).parentNode;}\nif(!parentNode||parentNode.nodeType==Node.DOCUMENT_FRAGMENT_NODE&&(!Polymer.Settings.hasShadow||!(parentNode instanceof ShadowRoot))){this._teardownInstance();}},attached:function(){if(this.if&&this.ctor){this.async(this._ensureInstance);}},render:function(){this._flushTemplates();},_render:function(){if(this.if){if(!this.ctor){this.templatize(this);}\nthis._ensureInstance();this._showHideChildren();}else if(this.restamp){this._teardownInstance();}\nif(!this.restamp&&this._instance){this._showHideChildren();}\nif(this.if!=this._lastIf){if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}\nthis._lastIf=this.if;}},_ensureInstance:function(){var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode&&parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nif(parentNode){if(!this._instance){this._instance=this.stamp();var root=this._instance.root;Polymer.dom(parentNode).insertBefore(root,refNode);}else{var c$=this._instance._children;if(c$&&c$.length){var lastChild=Polymer.dom(refNode).previousSibling;if(lastChild!==c$[c$.length-1]){for(var i=0,n;i<c$.length&&(n=c$[i]);i++){Polymer.dom(parentNode).insertBefore(n,refNode);}}}}}},_teardownInstance:function(){if(this._instance){var c$=this._instance._children;if(c$&&c$.length){var parent=Polymer.dom(Polymer.dom(c$[0]).parentNode);for(var i=0,n;i<c$.length&&(n=c$[i]);i++){parent.removeChild(n);}}\nthis._instance=null;}},_showHideChildren:function(){var hidden=this.__hideTemplateChildren__||!this.if;if(this._instance){this._instance._showHideChildren(hidden);}},_forwardParentProp:function(prop,value){if(this._instance){this._instance.__setProperty(prop,value,true);}},_forwardParentPath:function(path,value){if(this._instance){this._instance._notifyPath(path,value,true);}}});Polymer({is:'dom-bind',properties:{notifyDomChange:{type:Boolean}},extends:'template',_template:null,created:function(){var self=this;Polymer.RenderStatus.whenReady(function(){if(document.readyState=='loading'){document.addEventListener('DOMContentLoaded',function(){self._markImportsReady();});}else{self._markImportsReady();}});},_ensureReady:function(){if(!this._readied){this._readySelf();}},_markImportsReady:function(){this._importsReady=true;this._ensureReady();},_registerFeatures:function(){this._prepConstructor();},_insertChildren:function(){var refNode;var parentNode=Polymer.dom(this).parentNode;if(parentNode.localName==this.is){refNode=parentNode;parentNode=Polymer.dom(parentNode).parentNode;}else{refNode=this;}\nPolymer.dom(parentNode).insertBefore(this.root,refNode);},_removeChildren:function(){if(this._children){for(var i=0;i<this._children.length;i++){this.root.appendChild(this._children[i]);}}},_initFeatures:function(){},_scopeElementClass:function(element,selector){if(this.dataHost){return this.dataHost._scopeElementClass(element,selector);}else{return selector;}},_configureInstanceProperties:function(){},_prepConfigure:function(){var config={};for(var prop in this._propertyEffects){config[prop]=this[prop];}\nvar setupConfigure=this._setupConfigure;this._setupConfigure=function(){setupConfigure.call(this,config);};},attached:function(){if(this._importsReady){this.render();}},detached:function(){this._removeChildren();},render:function(){this._ensureReady();if(!this._children){this._template=this;this._prepAnnotations();this._prepEffects();this._prepBehaviors();this._prepConfigure();this._prepBindings();this._prepPropertyInfo();Polymer.Base._initFeatures.call(this);this._children=Polymer.TreeApi.arrayCopyChildNodes(this.root);}\nthis._insertChildren();if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');}}});'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(!Polymer.Settings.useNativeShadow){tr.showPanic('Polymer error','base should use native shadow when possible.');}}'use strict';const global=this.window||this.global;this.tr=(function(){if(global.tr)return global.tr;function exportPath(name){const parts=name.split('.');let cur=global;for(let part;parts.length&&(part=parts.shift());){if(part in cur){cur=cur[part];}else{cur=cur[part]={};}}\nreturn cur;}\nfunction isExported(name){const parts=name.split('.');let cur=global;for(let part;parts.length&&(part=parts.shift());){if(part in cur){cur=cur[part];}else{return false;}}\nreturn true;}\nfunction isDefined(name){const parts=name.split('.');let curObject=global;for(let i=0;i<parts.length;i++){const partName=parts[i];const nextObject=curObject[partName];if(nextObject===undefined)return false;curObject=nextObject;}\nreturn true;}\nlet panicElement=undefined;const rawPanicMessages=[];function showPanicElementIfNeeded(){if(panicElement)return;const panicOverlay=document.createElement('div');panicOverlay.style.backgroundColor='white';panicOverlay.style.border='3px solid red';panicOverlay.style.boxSizing='border-box';panicOverlay.style.color='black';panicOverlay.style.display='flex';panicOverlay.style.height='100%';panicOverlay.style.left=0;panicOverlay.style.padding='8px';panicOverlay.style.position='fixed';panicOverlay.style.top=0;panicOverlay.style.webkitFlexDirection='column';panicOverlay.style.width='100%';panicElement=document.createElement('div');panicElement.style.webkitFlex='1 1 auto';panicElement.style.overflow='auto';panicOverlay.appendChild(panicElement);if(!document.body){setTimeout(function(){document.body.appendChild(panicOverlay);},150);}else{document.body.appendChild(panicOverlay);}}\nfunction showPanic(panicTitle,panicDetails){if(tr.isHeadless){if(panicDetails instanceof Error)throw panicDetails;throw new Error('Panic: '+panicTitle+':\\n'+panicDetails);}\nif(panicDetails instanceof Error){panicDetails=panicDetails.stack;}\nshowPanicElementIfNeeded();const panicMessageEl=document.createElement('div');panicMessageEl.innerHTML='<h2 id=\"message\"></h2>'+'<pre id=\"details\"></pre>';panicMessageEl.querySelector('#message').textContent=panicTitle;panicMessageEl.querySelector('#details').textContent=panicDetails;panicElement.appendChild(panicMessageEl);rawPanicMessages.push({title:panicTitle,details:panicDetails});}\nfunction hasPanic(){return rawPanicMessages.length!==0;}\nfunction getPanicText(){return rawPanicMessages.map(function(msg){return msg.title;}).join(', ');}\nfunction exportTo(namespace,fn){const obj=exportPath(namespace);const exports=fn();for(const propertyName in exports){const propertyDescriptor=Object.getOwnPropertyDescriptor(exports,propertyName);if(propertyDescriptor){Object.defineProperty(obj,propertyName,propertyDescriptor);}}}\nfunction initialize(){if(global.isVinn){tr.isVinn=true;}else if(global.process&&global.process.versions.node){tr.isNode=true;}else{tr.isVinn=false;tr.isNode=false;tr.doc=document;tr.isMac=/Mac/.test(navigator.platform);tr.isWindows=/Win/.test(navigator.platform);tr.isChromeOS=/CrOS/.test(navigator.userAgent);tr.isLinux=/Linux/.test(navigator.userAgent);}\ntr.isHeadless=tr.isVinn||tr.isNode;}\nreturn{initialize,exportTo,isExported,isDefined,showPanic,hasPanic,getPanicText,};})();tr.initialize();'use strict';tr.exportTo('tr.b',function(){function Base64(){}\nfunction b64ToUint6(nChr){if(nChr>64&&nChr<91)return nChr-65;if(nChr>96&&nChr<123)return nChr-71;if(nChr>47&&nChr<58)return nChr+4;if(nChr===43)return 62;if(nChr===47)return 63;return 0;}\nBase64.getDecodedBufferLength=function(input){let pad=0;if(input.substr(-2)==='=='){pad=2;}else if(input.substr(-1)==='='){pad=1;}\nreturn((input.length*3+1)>>2)-pad;};Base64.EncodeArrayBufferToString=function(input){let binary='';const bytes=new Uint8Array(input);const len=bytes.byteLength;for(let i=0;i<len;i++){binary+=String.fromCharCode(bytes[i]);}\nreturn btoa(binary);};Base64.DecodeToTypedArray=function(input,output){const nInLen=input.length;const nOutLen=Base64.getDecodedBufferLength(input);let nMod3=0;let nMod4=0;let nUint24=0;let nOutIdx=0;if(nOutLen>output.byteLength){throw new Error('Output buffer too small to decode.');}\nfor(let nInIdx=0;nInIdx<nInLen;nInIdx++){nMod4=nInIdx&3;nUint24|=b64ToUint6(input.charCodeAt(nInIdx))<<18-6*nMod4;if(nMod4===3||nInLen-nInIdx===1){for(nMod3=0;nMod3<3&&nOutIdx<nOutLen;nMod3++,nOutIdx++){output.setUint8(nOutIdx,nUint24>>>(16>>>nMod3&24)&255);}\nnUint24=0;}}\nreturn nOutLen;};Base64.btoa=function(input){return btoa(input);};Base64.atob=function(input){return atob(input);};return{Base64,};});'use strict';tr.exportTo('tr.b',function(){let nextGUID=1;const UUID4_PATTERN='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';const GUID={allocateSimple(){return nextGUID++;},getLastSimpleGuid(){return nextGUID-1;},allocateUUID4(){return UUID4_PATTERN.replace(/[xy]/g,function(c){let r=parseInt(Math.random()*16);if(c==='y')r=(r&3)+8;return r.toString(16);});}};return{GUID,};});'use strict';tr.exportTo('tr.b',function(){const URL_REGEX=/^(https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b|file:\\/\\/)([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/;function deepCopy(value){if(!(value instanceof Object)){if(value===undefined||value===null)return value;if(typeof value==='string')return value.substring();if(typeof value==='boolean')return value;if(typeof value==='number')return value;throw new Error('Unrecognized: '+typeof value);}\nconst object=value;if(object instanceof Array){const res=new Array(object.length);for(let i=0;i<object.length;i++){res[i]=deepCopy(object[i]);}\nreturn res;}\nif(object.__proto__!==Object.prototype){throw new Error('Can only clone simple types');}\nconst res={};for(const key in object){res[key]=deepCopy(object[key]);}\nreturn res;}\nfunction normalizeException(e){if(e===undefined||e===null){return{typeName:'UndefinedError',message:'Unknown: null or undefined exception',stack:'Unknown'};}\nif(typeof(e)==='string'){return{typeName:'StringError',message:e,stack:[e]};}\nlet typeName;if(e.name){typeName=e.name;}else if(e.constructor){if(e.constructor.name){typeName=e.constructor.name;}else{typeName='AnonymousError';}}else{typeName='ErrorWithNoConstructor';}\nconst msg=e.message?e.message:'Unknown';return{typeName,message:msg,stack:e.stack?e.stack:[msg]};}\nfunction stackTraceAsString(){return new Error().stack+'';}\nfunction stackTrace(){let stack=stackTraceAsString();stack=stack.split('\\n');return stack.slice(2);}\nfunction getUsingPath(path,fromDict){const parts=path.split('.');let cur=fromDict;for(let part;parts.length&&(part=parts.shift());){if(!parts.length){return cur[part];}else if(part in cur){cur=cur[part];}else{return undefined;}}\nreturn undefined;}\nfunction formatDate(date){return date.toISOString().replace('T',' ').slice(0,19);}\nfunction numberToJson(n){if(isNaN(n))return'NaN';if(n===Infinity)return'Infinity';if(n===-Infinity)return'-Infinity';return n;}\nfunction numberFromJson(n){if(n==='NaN'||n===null)return NaN;if(n==='Infinity')return Infinity;if(n==='-Infinity')return-Infinity;return n;}\nfunction runLengthEncoding(ary){const encodedArray=[];for(const element of ary){if(encodedArray.length===0||encodedArray[encodedArray.length-1].value!==element){encodedArray.push({value:element,count:1,});}else{encodedArray[encodedArray.length-1].count+=1;}}\nreturn encodedArray;}\nfunction isUrl(s){return typeof(s)==='string'&&s.match(URL_REGEX)!==null;}\nfunction getOnlyElement(iterable){const iterator=iterable[Symbol.iterator]();const firstIteration=iterator.next();if(firstIteration.done){throw new Error('getOnlyElement was passed an empty iterable.');}\nconst secondIteration=iterator.next();if(!secondIteration.done){throw new Error('getOnlyElement was passed an iterable with multiple elements.');}\nreturn firstIteration.value;}\nfunction getFirstElement(iterable){const iterator=iterable[Symbol.iterator]();const result=iterator.next();if(result.done){throw new Error('getFirstElement was passed an empty iterable.');}\nreturn result.value;}\nfunction compareArrays(x,y,elementCmp){const minLength=Math.min(x.length,y.length);let i;for(i=0;i<minLength;i++){const tmp=elementCmp(x[i],y[i]);if(tmp)return tmp;}\nif(x.length===y.length)return 0;if(x[i]===undefined)return-1;return 1;}\nfunction groupIntoMap(ary,callback,opt_this,opt_arrayConstructor){const arrayConstructor=opt_arrayConstructor||Array;const results=new Map();for(const element of ary){const key=callback.call(opt_this,element);let items=results.get(key);if(items===undefined){items=new arrayConstructor();results.set(key,items);}\nitems.push(element);}\nreturn results;}\nfunction inPlaceFilter(array,predicate,opt_this){opt_this=opt_this||this;let nextPosition=0;for(let i=0;i<array.length;i++){if(!predicate.call(opt_this,array[i],i))continue;if(nextPosition<i){array[nextPosition]=array[i];}\nnextPosition++;}\nif(nextPosition<array.length){array.length=nextPosition;}}\nfunction invertArrayOfDicts(array,opt_dictGetter,opt_this){opt_this=opt_this||this;const result={};for(let i=0;i<array.length;i++){const item=array[i];if(item===undefined)continue;const dict=opt_dictGetter?opt_dictGetter.call(opt_this,item):item;if(dict===undefined)continue;for(const key in dict){let valueList=result[key];if(valueList===undefined){result[key]=valueList=new Array(array.length);}\nvalueList[i]=dict[key];}}\nreturn result;}\nfunction setsEqual(a,b){if(!(a instanceof Set)||!(b instanceof Set))return false;if(a.size!==b.size)return false;for(const x of a){if(!b.has(x))return false;}\nreturn true;}\nfunction findLowIndexInSortedArray(ary,mapFn,loVal){if(ary.length===0)return 1;let low=0;let high=ary.length-1;let i;let comparison;let hitPos=-1;while(low<=high){i=Math.floor((low+high)/2);comparison=mapFn(ary[i])-loVal;if(comparison<0){low=i+1;continue;}else if(comparison>0){high=i-1;continue;}else{hitPos=i;high=i-1;}}\nreturn hitPos!==-1?hitPos:low;}\nfunction findIndexInSortedIntervals(ary,mapLoFn,mapWidthFn,loVal){const first=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(first===0){if(loVal>=mapLoFn(ary[0])&&loVal<mapLoFn(ary[0])+mapWidthFn(ary[0],0)){return 0;}\nreturn-1;}\nif(first<ary.length){if(loVal>=mapLoFn(ary[first])&&loVal<mapLoFn(ary[first])+mapWidthFn(ary[first],first)){return first;}\nif(loVal>=mapLoFn(ary[first-1])&&loVal<mapLoFn(ary[first-1])+\nmapWidthFn(ary[first-1],first-1)){return first-1;}\nreturn ary.length;}\nif(first===ary.length){if(loVal>=mapLoFn(ary[first-1])&&loVal<mapLoFn(ary[first-1])+\nmapWidthFn(ary[first-1],first-1)){return first-1;}\nreturn ary.length;}\nreturn ary.length;}\nfunction findIndexInSortedClosedIntervals(ary,mapLoFn,mapHiFn,val){const i=findLowIndexInSortedArray(ary,mapLoFn,val);if(i===0){if(val>=mapLoFn(ary[0],0)&&val<=mapHiFn(ary[0],0)){return 0;}\nreturn-1;}\nif(i<ary.length){if(val>=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}\nif(val>=mapLoFn(ary[i],i)&&val<=mapHiFn(ary[i],i)){return i;}\nreturn ary.length;}\nif(i===ary.length){if(val>=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}\nreturn ary.length;}\nreturn ary.length;}\nfunction iterateOverIntersectingIntervals(ary,mapLoFn,mapWidthFn,loVal,hiVal,cb){if(ary.length===0)return;if(loVal>hiVal)return;let i=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(i===-1){return;}\nif(i>0){const hi=mapLoFn(ary[i-1])+mapWidthFn(ary[i-1],i-1);if(hi>=loVal){cb(ary[i-1],i-1);}}\nif(i===ary.length){return;}\nfor(let n=ary.length;i<n;i++){const lo=mapLoFn(ary[i]);if(lo>=hiVal)break;cb(ary[i],i);}}\nfunction findClosestElementInSortedArray(ary,mapFn,val,maxDiff){if(ary.length===0)return null;let aftIdx=findLowIndexInSortedArray(ary,mapFn,val);const befIdx=aftIdx>0?aftIdx-1:0;if(aftIdx===ary.length)aftIdx-=1;const befDiff=Math.abs(val-mapFn(ary[befIdx]));const aftDiff=Math.abs(val-mapFn(ary[aftIdx]));if(befDiff>maxDiff&&aftDiff>maxDiff)return null;const idx=befDiff<aftDiff?befIdx:aftIdx;return ary[idx];}\nfunction findClosestIntervalInSortedIntervals(ary,mapLoFn,mapHiFn,val,maxDiff){if(ary.length===0)return null;let idx=findLowIndexInSortedArray(ary,mapLoFn,val);if(idx>0)idx-=1;const hiInt=ary[idx];let loInt=hiInt;if(val>mapHiFn(hiInt)&&idx+1<ary.length){loInt=ary[idx+1];}\nconst loDiff=Math.abs(val-mapLoFn(loInt));const hiDiff=Math.abs(val-mapHiFn(hiInt));if(loDiff>maxDiff&&hiDiff>maxDiff)return null;if(loDiff<hiDiff)return loInt;return hiInt;}\nfunction findFirstTrueIndexInSortedArray(array,test){let i0=0;let i1=array.length;while(i0<i1){const i=Math.trunc((i0+i1)/2);if(test(array[i])){i1=i;}else{i0=i+1;}}\nreturn i1;}\nreturn{compareArrays,deepCopy,findClosestElementInSortedArray,findClosestIntervalInSortedIntervals,findFirstTrueIndexInSortedArray,findIndexInSortedClosedIntervals,findIndexInSortedIntervals,findLowIndexInSortedArray,formatDate,getFirstElement,getOnlyElement,getUsingPath,groupIntoMap,inPlaceFilter,invertArrayOfDicts,isUrl,iterateOverIntersectingIntervals,normalizeException,numberFromJson,numberToJson,runLengthEncoding,setsEqual,stackTrace,stackTraceAsString,};});'use strict';tr.exportTo('tr.b',function(){class Mark{constructor(groupName,functionName,opt_timestamp){if(tr.isHeadless)return;this.groupName_=groupName;this.functionName_=functionName;const guid=tr.b.GUID.allocateSimple();this.measureName_=`${groupName} ${functionName}`;if(opt_timestamp){this.startMark_={startTime:opt_timestamp};}else{this.startMarkName_=`${this.measureName} ${guid} start`;}\nthis.endMark_=undefined;this.endMarkName_=`${this.measureName} ${guid} end`;window.performance.mark(this.startMarkName_);}\nget groupName(){return this.groupName_;}\nget functionName(){return this.functionName_;}\nget measureName(){return this.measureName_;}\nget startMark(){return this.startMark_||tr.b.getOnlyElement(window.performance.getEntriesByName(this.startMarkName_));}\nget endMark(){return this.endMark_||tr.b.getOnlyElement(window.performance.getEntriesByName(this.endMarkName_));}\nget durationMs(){return this.endMark.startTime-this.startMark.startTime;}\nend(opt_timestamp){if(tr.isHeadless)return;if(opt_timestamp){this.endMark_={startTime:opt_timestamp};}else{window.performance.mark(this.endMarkName_);}\nif(!this.startMark_&&!this.endMark_){window.performance.measure(this.measureName_,this.startMarkName_,this.endMarkName_);}else if(Timing.logVoidMarks&&!(window.ga instanceof Function)){console.log('void mark',this.groupName,this.functionName,this.durationMs);}\nif(!(window.ga instanceof Function))return;ga('send',{hitType:'event',eventCategory:this.groupName,eventAction:this.functionName,eventValue:this.durationMs,});}}\nclass Timing{static mark(groupName,functionName,opt_timestamp){return new Mark(groupName,functionName,opt_timestamp);}\nstatic instant(groupName,functionName,opt_value){const valueString=opt_value===undefined?'':' '+opt_value;if(console&&console.timeStamp){console.timeStamp(`${groupName} ${functionName}${valueString}`);}\nif(window&&window.ga instanceof Function){ga('send',{hitType:'event',eventCategory:groupName,eventAction:functionName,eventValue:opt_value,});}}\nstatic getCurrentTimeMs(){try{return performance.now();}catch(error){}\nreturn 0;}}\nTiming.logVoidMarks=false;return{Timing,};});'use strict';tr.exportTo('tr.b',function(){function EventTarget(){}\nEventTarget.decorate=function(target){for(const k in EventTarget.prototype){if(k==='decorate')continue;const v=EventTarget.prototype[k];if(typeof v!=='function')continue;target[k]=v;}};EventTarget.prototype={addEventListener(type,handler){if(!this.listeners_){this.listeners_=Object.create(null);}\nif(!(type in this.listeners_)){this.listeners_[type]=[handler];}else{const handlers=this.listeners_[type];if(handlers.indexOf(handler)<0){handlers.push(handler);}}},removeEventListener(type,handler){if(!this.listeners_)return;if(type in this.listeners_){const handlers=this.listeners_[type];const index=handlers.indexOf(handler);if(index>=0){if(handlers.length===1){delete this.listeners_[type];}else{handlers.splice(index,1);}}}},dispatchEvent(event){if(!this.listeners_)return true;event.__defineGetter__('target',()=>this);const realPreventDefault=event.preventDefault;event.preventDefault=function(){realPreventDefault.call(this);this.rawReturnValue=false;};const type=event.type;let prevented=0;if(type in this.listeners_){const handlers=this.listeners_[type].concat();for(let i=0,handler;handler=handlers[i];i++){if(handler.handleEvent){prevented|=handler.handleEvent.call(handler,event)===false;}else{prevented|=handler.call(this,event)===false;}}}\nreturn!prevented&&event.rawReturnValue;},async dispatchAsync(event){if(!this.listeners_)return true;const listeners=this.listeners_[event.type];if(listeners===undefined)return;await Promise.all(listeners.slice().map(listener=>{if(listener.handleEvent){return listener.handleEvent.call(listener,event);}\nreturn listener.call(this,event);}));},hasEventListener(type){return(this.listeners_!==undefined&&this.listeners_[type]!==undefined);}};return{EventTarget,};});'use strict';tr.exportTo('tr.b',function(){function RegisteredTypeInfo(constructor,metadata){this.constructor=constructor;this.metadata=metadata;}\nconst BASIC_REGISTRY_MODE='BASIC_REGISTRY_MODE';const TYPE_BASED_REGISTRY_MODE='TYPE_BASED_REGISTRY_MODE';const ALL_MODES={BASIC_REGISTRY_MODE:true,TYPE_BASED_REGISTRY_MODE:true};function ExtensionRegistryOptions(mode){if(mode===undefined){throw new Error('Mode is required');}\nif(!ALL_MODES[mode]){throw new Error('Not a mode.');}\nthis.mode_=mode;this.defaultMetadata_={};this.defaultConstructor_=undefined;this.defaultTypeInfo_=undefined;this.frozen_=false;}\nExtensionRegistryOptions.prototype={freeze(){if(this.frozen_){throw new Error('Frozen');}\nthis.frozen_=true;},get mode(){return this.mode_;},get defaultMetadata(){return this.defaultMetadata_;},set defaultMetadata(defaultMetadata){if(this.frozen_){throw new Error('Frozen');}\nthis.defaultMetadata_=defaultMetadata;this.defaultTypeInfo_=undefined;},get defaultConstructor(){return this.defaultConstructor_;},set defaultConstructor(defaultConstructor){if(this.frozen_){throw new Error('Frozen');}\nthis.defaultConstructor_=defaultConstructor;this.defaultTypeInfo_=undefined;},get defaultTypeInfo(){if(this.defaultTypeInfo_===undefined&&this.defaultConstructor_){this.defaultTypeInfo_=new RegisteredTypeInfo(this.defaultConstructor,this.defaultMetadata);}\nreturn this.defaultTypeInfo_;},validateConstructor(constructor){if(!this.mandatoryBaseClass)return;let curProto=constructor.prototype.__proto__;let ok=false;while(curProto){if(curProto===this.mandatoryBaseClass.prototype){ok=true;break;}\ncurProto=curProto.__proto__;}\nif(!ok){throw new Error(constructor+'must be subclass of '+registry);}}};return{BASIC_REGISTRY_MODE,TYPE_BASED_REGISTRY_MODE,ExtensionRegistryOptions,RegisteredTypeInfo,};});'use strict';tr.exportTo('tr.b',function(){let Event;if(tr.isHeadless){function HeadlessEvent(type,opt_bubbles,opt_preventable){this.type=type;this.bubbles=(opt_bubbles!==undefined?!!opt_bubbles:false);this.cancelable=(opt_preventable!==undefined?!!opt_preventable:false);this.defaultPrevented=false;this.cancelBubble=false;}\nHeadlessEvent.prototype={preventDefault(){this.defaultPrevented=true;},stopPropagation(){this.cancelBubble=true;}};Event=HeadlessEvent;}else{function TrEvent(type,opt_bubbles,opt_preventable){const e=tr.doc.createEvent('Event');e.initEvent(type,!!opt_bubbles,!!opt_preventable);e.__proto__=global.Event.prototype;return e;}\nTrEvent.prototype={__proto__:global.Event.prototype};Event=TrEvent;}\nfunction dispatchSimpleEvent(target,type,opt_bubbles,opt_cancelable,opt_fields){const e=new tr.b.Event(type,opt_bubbles,opt_cancelable);Object.assign(e,opt_fields);return target.dispatchEvent(e);}\nasync function dispatchSimpleEventAsync(target,type,opt_fields){const e=new tr.b.Event(type,false,false);Object.assign(e,opt_fields);return await target.dispatchAsync(e);}\nreturn{Event,dispatchSimpleEvent,dispatchSimpleEventAsync,};});'use strict';tr.exportTo('tr.b',function(){const RegisteredTypeInfo=tr.b.RegisteredTypeInfo;const ExtensionRegistryOptions=tr.b.ExtensionRegistryOptions;function decorateBasicExtensionRegistry(registry,extensionRegistryOptions){const savedStateStack=[];registry.registeredTypeInfos_=[];registry.register=function(constructor,opt_metadata){if(registry.findIndexOfRegisteredConstructor(constructor)!==undefined){throw new Error('Handler already registered for '+constructor);}\nextensionRegistryOptions.validateConstructor(constructor);const metadata={};for(const k in extensionRegistryOptions.defaultMetadata){metadata[k]=extensionRegistryOptions.defaultMetadata[k];}\nif(opt_metadata){for(const k in opt_metadata){metadata[k]=opt_metadata[k];}}\nconst typeInfo=new RegisteredTypeInfo(constructor,metadata);let e=new tr.b.Event('will-register');e.typeInfo=typeInfo;registry.dispatchEvent(e);registry.registeredTypeInfos_.push(typeInfo);e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.pushCleanStateBeforeTest=function(){savedStateStack.push(registry.registeredTypeInfos_);registry.registeredTypeInfos_=[];const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.popCleanStateAfterTest=function(){registry.registeredTypeInfos_=savedStateStack[0];savedStateStack.splice(0,1);const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.findIndexOfRegisteredConstructor=function(constructor){for(let i=0;i<registry.registeredTypeInfos_.length;i++){if(registry.registeredTypeInfos_[i].constructor===constructor){return i;}}\nreturn undefined;};registry.unregister=function(constructor){const foundIndex=registry.findIndexOfRegisteredConstructor(constructor);if(foundIndex===undefined){throw new Error(constructor+' not registered');}\nregistry.registeredTypeInfos_.splice(foundIndex,1);const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.getAllRegisteredTypeInfos=function(){return registry.registeredTypeInfos_;};registry.findTypeInfo=function(constructor){const foundIndex=this.findIndexOfRegisteredConstructor(constructor);if(foundIndex!==undefined){return this.registeredTypeInfos_[foundIndex];}\nreturn undefined;};registry.findTypeInfoMatching=function(predicate,opt_this){opt_this=opt_this?opt_this:undefined;for(let i=0;i<registry.registeredTypeInfos_.length;++i){const typeInfo=registry.registeredTypeInfos_[i];if(predicate.call(opt_this,typeInfo)){return typeInfo;}}\nreturn extensionRegistryOptions.defaultTypeInfo;};registry.findTypeInfoWithName=function(name){if(typeof(name)!=='string'){throw new Error('Name is not a string.');}\nconst typeInfo=registry.findTypeInfoMatching(function(ti){return ti.constructor.name===name;});if(typeInfo)return typeInfo;return undefined;};}\nreturn{_decorateBasicExtensionRegistry:decorateBasicExtensionRegistry};});'use strict';tr.exportTo('tr.b',function(){const categoryPartsFor={};function getCategoryParts(category){let parts=categoryPartsFor[category];if(parts!==undefined)return parts;parts=category.split(',');categoryPartsFor[category]=parts;return parts;}\nreturn{getCategoryParts,};});'use strict';tr.exportTo('tr.b',function(){const getCategoryParts=tr.b.getCategoryParts;const RegisteredTypeInfo=tr.b.RegisteredTypeInfo;const ExtensionRegistryOptions=tr.b.ExtensionRegistryOptions;function decorateTypeBasedExtensionRegistry(registry,extensionRegistryOptions){const savedStateStack=[];registry.registeredTypeInfos_=[];registry.categoryPartToTypeInfoMap_=new Map();registry.typeNameToTypeInfoMap_=new Map();registry.register=function(constructor,metadata){extensionRegistryOptions.validateConstructor(constructor);const typeInfo=new RegisteredTypeInfo(constructor,metadata||extensionRegistryOptions.defaultMetadata);typeInfo.typeNames=[];typeInfo.categoryParts=[];if(metadata&&metadata.typeName){typeInfo.typeNames.push(metadata.typeName);}\nif(metadata&&metadata.typeNames){typeInfo.typeNames.push.apply(typeInfo.typeNames,metadata.typeNames);}\nif(metadata&&metadata.categoryParts){typeInfo.categoryParts.push.apply(typeInfo.categoryParts,metadata.categoryParts);}\nif(typeInfo.typeNames.length===0&&typeInfo.categoryParts.length===0){throw new Error('typeName or typeNames must be provided');}\ntypeInfo.typeNames.forEach(function(typeName){if(registry.typeNameToTypeInfoMap_.has(typeName)){throw new Error('typeName '+typeName+' already registered');}});typeInfo.categoryParts.forEach(function(categoryPart){if(registry.categoryPartToTypeInfoMap_.has(categoryPart)){throw new Error('categoryPart '+categoryPart+' already registered');}});let e=new tr.b.Event('will-register');e.typeInfo=typeInfo;registry.dispatchEvent(e);typeInfo.typeNames.forEach(function(typeName){registry.typeNameToTypeInfoMap_.set(typeName,typeInfo);});typeInfo.categoryParts.forEach(function(categoryPart){registry.categoryPartToTypeInfoMap_.set(categoryPart,typeInfo);});registry.registeredTypeInfos_.push(typeInfo);e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.pushCleanStateBeforeTest=function(){savedStateStack.push({registeredTypeInfos:registry.registeredTypeInfos_,typeNameToTypeInfoMap:registry.typeNameToTypeInfoMap_,categoryPartToTypeInfoMap:registry.categoryPartToTypeInfoMap_});registry.registeredTypeInfos_=[];registry.typeNameToTypeInfoMap_=new Map();registry.categoryPartToTypeInfoMap_=new Map();const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.popCleanStateAfterTest=function(){const state=savedStateStack[0];savedStateStack.splice(0,1);registry.registeredTypeInfos_=state.registeredTypeInfos;registry.typeNameToTypeInfoMap_=state.typeNameToTypeInfoMap;registry.categoryPartToTypeInfoMap_=state.categoryPartToTypeInfoMap;const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.unregister=function(constructor){let typeInfoIndex=-1;for(let i=0;i<registry.registeredTypeInfos_.length;i++){if(registry.registeredTypeInfos_[i].constructor===constructor){typeInfoIndex=i;break;}}\nif(typeInfoIndex===-1){throw new Error(constructor+' not registered');}\nconst typeInfo=registry.registeredTypeInfos_[typeInfoIndex];registry.registeredTypeInfos_.splice(typeInfoIndex,1);typeInfo.typeNames.forEach(function(typeName){registry.typeNameToTypeInfoMap_.delete(typeName);});typeInfo.categoryParts.forEach(function(categoryPart){registry.categoryPartToTypeInfoMap_.delete(categoryPart);});const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.getTypeInfo=function(category,typeName){if(category){const categoryParts=getCategoryParts(category);for(let i=0;i<categoryParts.length;i++){const categoryPart=categoryParts[i];const typeInfo=registry.categoryPartToTypeInfoMap_.get(categoryPart);if(typeInfo!==undefined)return typeInfo;}}\nconst typeInfo=registry.typeNameToTypeInfoMap_.get(typeName);if(typeInfo!==undefined)return typeInfo;return extensionRegistryOptions.defaultTypeInfo;};registry.getConstructor=function(category,typeName){const typeInfo=registry.getTypeInfo(category,typeName);if(typeInfo)return typeInfo.constructor;return undefined;};}\nreturn{_decorateTypeBasedExtensionRegistry:decorateTypeBasedExtensionRegistry};});'use strict';tr.exportTo('tr.b',function(){function decorateExtensionRegistry(registry,registryOptions){if(registry.register){throw new Error('Already has registry');}\nregistryOptions.freeze();if(registryOptions.mode===tr.b.BASIC_REGISTRY_MODE){tr.b._decorateBasicExtensionRegistry(registry,registryOptions);}else if(registryOptions.mode===tr.b.TYPE_BASED_REGISTRY_MODE){tr.b._decorateTypeBasedExtensionRegistry(registry,registryOptions);}else{throw new Error('Unrecognized mode');}\nif(registry.addEventListener===undefined){tr.b.EventTarget.decorate(registry);}}\nreturn{decorateExtensionRegistry,};});'use strict';tr.exportTo('tr.importer',function(){function Importer(){}\nImporter.prototype={__proto__:Object.prototype,get importerName(){return'Importer';},isTraceDataContainer(){return false;},extractSubtraces(){return[];},importClockSyncMarkers(){},importEvents(){},importSampleData(){},finalizeImport(){}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Importer;tr.b.decorateExtensionRegistry(Importer,options);Importer.findImporterFor=function(eventData){const typeInfo=Importer.findTypeInfoMatching(function(ti){return ti.constructor.canImport(eventData);});if(typeInfo){return typeInfo.constructor;}\nreturn undefined;};return{Importer,};});'use strict';tr.exportTo('tr.importer',function(){function EmptyImporter(events){this.importPriority=0;}\nEmptyImporter.canImport=function(eventData){if(eventData instanceof Array&&eventData.length===0){return true;}\nif(typeof(eventData)==='string'||eventData instanceof String){return eventData.length===0;}\nreturn false;};EmptyImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'EmptyImporter';}};tr.importer.Importer.register(EmptyImporter);return{EmptyImporter,};});'use strict';tr.exportTo('tr.b.math',function(){function convertEventsToRanges(events){return events.map(function(event){return tr.b.math.Range.fromExplicitRange(event.start,event.end);});}\nfunction mergeRanges(inRanges,mergeThreshold,mergeFunction){const remainingEvents=inRanges.slice();remainingEvents.sort(function(x,y){return x.min-y.min;});if(remainingEvents.length<=1){const merged=[];if(remainingEvents.length===1){merged.push(mergeFunction(remainingEvents));}\nreturn merged;}\nconst mergedEvents=[];let currentMergeBuffer=[];let rightEdge;function beginMerging(){currentMergeBuffer.push(remainingEvents[0]);remainingEvents.splice(0,1);rightEdge=currentMergeBuffer[0].max;}\nfunction flushCurrentMergeBuffer(){if(currentMergeBuffer.length===0)return;mergedEvents.push(mergeFunction(currentMergeBuffer));currentMergeBuffer=[];if(remainingEvents.length!==0)beginMerging();}\nbeginMerging();while(remainingEvents.length){const currentEvent=remainingEvents[0];const distanceFromRightEdge=currentEvent.min-rightEdge;if(distanceFromRightEdge<mergeThreshold){rightEdge=Math.max(rightEdge,currentEvent.max);remainingEvents.splice(0,1);currentMergeBuffer.push(currentEvent);continue;}\nflushCurrentMergeBuffer();}\nflushCurrentMergeBuffer();return mergedEvents;}\nfunction findEmptyRangesBetweenRanges(inRanges,opt_totalRange){if(opt_totalRange&&opt_totalRange.isEmpty)opt_totalRange=undefined;const emptyRanges=[];if(!inRanges.length){if(opt_totalRange)emptyRanges.push(opt_totalRange);return emptyRanges;}\ninRanges=inRanges.slice();inRanges.sort(function(x,y){return x.min-y.min;});if(opt_totalRange&&(opt_totalRange.min<inRanges[0].min)){emptyRanges.push(tr.b.math.Range.fromExplicitRange(opt_totalRange.min,inRanges[0].min));}\ninRanges.forEach(function(range,index){for(let otherIndex=0;otherIndex<inRanges.length;++otherIndex){if(index===otherIndex)continue;const other=inRanges[otherIndex];if(other.min>range.max){emptyRanges.push(tr.b.math.Range.fromExplicitRange(range.max,other.min));return;}\nif(other.max>range.max){return;}}\nif(opt_totalRange&&(range.max<opt_totalRange.max)){emptyRanges.push(tr.b.math.Range.fromExplicitRange(range.max,opt_totalRange.max));}});return emptyRanges;}\nreturn{convertEventsToRanges,findEmptyRangesBetweenRanges,mergeRanges,};});'use strict';tr.exportTo('tr.c',function(){function Auditor(model){this.model_=model;}\nAuditor.prototype={__proto__:Object.prototype,get model(){return this.model_;},runAnnotate(){},installUserFriendlyCategoryDriverIfNeeded(){},runAudit(){}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Auditor;tr.b.decorateExtensionRegistry(Auditor,options);return{Auditor,};});'use strict';tr.exportTo('tr.b',function(){const GREEK_SMALL_LETTER_MU=String.fromCharCode(956);const SECONDS_IN_A_MINUTE=60;const SECONDS_IN_AN_HOUR=SECONDS_IN_A_MINUTE*60;const SECONDS_IN_A_DAY=SECONDS_IN_AN_HOUR*24;const SECONDS_IN_A_WEEK=SECONDS_IN_A_DAY*7;const SECONDS_IN_A_YEAR=SECONDS_IN_A_DAY*365.2422;const SECONDS_IN_A_MONTH=SECONDS_IN_A_YEAR/12;const UnitPrefixScale={};const UnitScale={};function defineUnitPrefixScale(name,prefixes){if(UnitPrefixScale[name]!==undefined){throw new Error('Unit prefix scale \\''+name+'\\' already exists');}\nif(prefixes.AUTO!==undefined){throw new Error('The \\'AUTO\\' unit prefix is not supported for unit'+'prefix scales and cannot be added to scale \\''+name+'\\'');}\nUnitPrefixScale[name]=prefixes;}\nUnitScale.defineUnitScale=function(name,unitScale){if(UnitScale[name]!==undefined){throw new Error('Unit scale \\''+name+'\\' already exists');}\nif(unitScale.AUTO!==undefined){throw new Error('\\'AUTO\\' unit scale will be added automatically '+'for unit scale \\''+name+'\\'');}\nunitScale.AUTO=Object.values(unitScale);unitScale.AUTO.sort((a,b)=>a.value-b.value);if(name)UnitScale[name]=unitScale;return unitScale;};function definePrefixScaleFromUnitScale(prefixName,unitScale){if(!unitScale){throw new Error('Cannot create PrefixScale without a unit scale.');}\nconst prefixScale={};for(const[curPrefix,curScale]of Object.entries(unitScale)){if(curPrefix==='AUTO'){continue;}\nif(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot create PrefixScale from malformed unit ${curScale}.`);}\nprefixScale[curPrefix]={value:curScale.value,symbol:curScale.symbol};}\nreturn defineUnitPrefixScale(prefixName,prefixScale);}\nUnitScale.defineUnitScaleFromPrefixScale=function(baseSymbol,baseName,prefixScale,opt_scaleName){if(baseSymbol===undefined){throw new Error('Cannot create UnitScale with undefined baseSymbol.');}\nif(!baseName){throw new Error('Cannot create UnitScale without a baseName.');}\nif(!prefixScale){throw new Error('Cannot create UnitScale without a prefix scale.');}\nconst unitScale={};for(const curPrefix of Object.keys(prefixScale)){const curScale=prefixScale[curPrefix];if(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot convert PrefixScale with malformed prefix ${curScale}.`);}\nconst name=curPrefix==='NONE'?baseName:`${curPrefix}_${baseName}`;unitScale[name]={value:curScale.value,symbol:curScale.symbol+baseSymbol,baseSymbol};}\nreturn UnitScale.defineUnitScale(opt_scaleName,unitScale);};function convertUnit(value,fromScale,toScale){if(value===undefined)return undefined;const fromScaleBase=fromScale.baseSymbol;const toScaleBase=toScale.baseSymbol;if(fromScaleBase!==undefined&&toScaleBase!==undefined&&fromScaleBase!==toScaleBase){throw new Error('Cannot convert between units with different base symbols.');}\nreturn value*(fromScale.value/toScale.value);}\ndefineUnitPrefixScale('BINARY',{NONE:{value:Math.pow(1024,0),symbol:''},KIBI:{value:Math.pow(1024,1),symbol:'Ki'},MEBI:{value:Math.pow(1024,2),symbol:'Mi'},GIBI:{value:Math.pow(1024,3),symbol:'Gi'},TEBI:{value:Math.pow(1024,4),symbol:'Ti'}});defineUnitPrefixScale('METRIC',{NANO:{value:1e-9,symbol:'n'},MICRO:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU},MILLI:{value:1e-3,symbol:'m'},NONE:{value:1,symbol:''},KILO:{value:1e3,symbol:'k'},MEGA:{value:1e6,symbol:'M'},GIGA:{value:1e9,symbol:'G'}});UnitScale.defineUnitScale('TIME',{NANO_SEC:{value:1e-9,symbol:'ns',baseSymbol:'s'},MICRO_SEC:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU+'s',baseSymbol:'s'},MILLI_SEC:{value:1e-3,symbol:'ms',baseSymbol:'s'},SEC:{value:1,symbol:'s',baseSymbol:'s'},MINUTE:{value:SECONDS_IN_A_MINUTE,symbol:'min',baseSymbol:'s'},HOUR:{value:SECONDS_IN_AN_HOUR,symbol:'hr',baseSymbol:'s'},DAY:{value:SECONDS_IN_A_DAY,symbol:'days',baseSymbol:'s'},WEEK:{value:SECONDS_IN_A_WEEK,symbol:'weeks',baseSymbol:'s'},MONTH:{value:SECONDS_IN_A_MONTH,symbol:'months',baseSymbol:'s'},YEAR:{value:SECONDS_IN_A_YEAR,symbol:'years',baseSymbol:'s'}});UnitScale.defineUnitScaleFromPrefixScale('B','BYTE',UnitPrefixScale.BINARY,'MEMORY');definePrefixScaleFromUnitScale('DATA_SIZE',UnitScale.MEMORY);UnitScale.defineUnitScaleFromPrefixScale('/s','SECONDS',UnitPrefixScale.DATA_SIZE,'BANDWIDTH_BYTES');return{UnitPrefixScale,UnitScale,convertUnit,GREEK_SMALL_LETTER_MU,};});'use strict';tr.exportTo('tr.b',function(){const msDisplayMode={scale:1e-3,suffix:'ms',roundedLess(a,b){return Math.round(a*1000)<Math.round(b*1000);},formatSpec:{unitScale:[tr.b.UnitScale.TIME.MILLI_SEC],minimumFractionDigits:3,}};const nsDisplayMode={scale:1e-9,suffix:'ns',roundedLess(a,b){return Math.round(a*1000000)<Math.round(b*1000000);},formatSpec:{unitScale:[tr.b.UnitScale.TIME.NANO_SEC],maximumFractionDigits:0}};const TimeDisplayModes={ns:nsDisplayMode,ms:msDisplayMode};return{TimeDisplayModes,};});'use strict';tr.exportTo('tr.ui.b',function(){function iterateElementDeeplyImpl(element,cb,thisArg,includeElement){if(includeElement&&cb.call(thisArg,element))return true;if(element.root&&element.root!==element&&iterateElementDeeplyImpl(element.root,cb,thisArg,false)){return true;}\nconst children=Polymer.dom(element).children;for(let i=0;i<children.length;i++){if(iterateElementDeeplyImpl(children[i],cb,thisArg,true)){return true;}}\nreturn false;}\nfunction iterateElementDeeply(element,cb,thisArg){iterateElementDeeplyImpl(element,cb,thisArg,false);}\nfunction findDeepElementMatchingPredicate(element,predicate){let foundElement=undefined;function matches(element){const match=predicate(element);if(!match){return false;}\nfoundElement=element;return true;}\niterateElementDeeply(element,matches);return foundElement;}\nfunction findDeepElementsMatchingPredicate(element,predicate){const foundElements=[];function matches(element){const match=predicate(element);if(match){foundElements.push(element);}\nreturn false;}\niterateElementDeeply(element,matches);return foundElements;}\nfunction findDeepElementMatching(element,selector){return findDeepElementMatchingPredicate(element,function(element){return element.matches(selector);});}\nfunction findDeepElementsMatching(element,selector){return findDeepElementsMatchingPredicate(element,function(element){return element.matches(selector);});}\nfunction findDeepElementWithTextContent(element,re){return findDeepElementMatchingPredicate(element,function(element){if(element.children.length!==0)return false;return re.test(Polymer.dom(element).textContent);});}\nreturn{findDeepElementMatching,findDeepElementsMatching,findDeepElementMatchingPredicate,findDeepElementsMatchingPredicate,findDeepElementWithTextContent,};});'use strict';tr.exportTo('tr.b',function(){const TimeDisplayModes=tr.b.TimeDisplayModes;const PLUS_MINUS_SIGN=String.fromCharCode(177);const CACHED_FORMATTERS={};function getNumberFormatter(minSpec,maxSpec,minCtx,maxCtx){const key=minSpec+'-'+maxSpec+'-'+minCtx+'-'+maxCtx;let formatter=CACHED_FORMATTERS[key];if(formatter===undefined){let minimumFractionDigits=minCtx!==undefined?minCtx:minSpec;let maximumFractionDigits=maxCtx!==undefined?maxCtx:maxSpec;if(minimumFractionDigits>maximumFractionDigits){if(minCtx!==undefined&&maxCtx===undefined){maximumFractionDigits=minimumFractionDigits;}else if(minCtx===undefined&&maxCtx!==undefined){minimumFractionDigits=maximumFractionDigits;}}\nformatter=new Intl.NumberFormat(undefined,{minimumFractionDigits,maximumFractionDigits,});CACHED_FORMATTERS[key]=formatter;}\nreturn formatter;}\nfunction max(a,b){if(a===undefined)return b;if(b===undefined)return a;return a.scale>b.scale?a:b;}\nconst ImprovementDirection={DONT_CARE:0,BIGGER_IS_BETTER:1,SMALLER_IS_BETTER:2};function Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,formatSpec){this.unitName=unitName;this.jsonName=jsonName;this.scaleBaseUnit=scaleBaseUnit;this.isDelta=isDelta;this.improvementDirection=improvementDirection;this.formatSpec_=formatSpec;this.baseUnit=undefined;this.correspondingDeltaUnit=undefined;}\nUnit.prototype={asJSON(){return this.jsonName;},asJSON2(){return this.asJSON().replace('_smallerIsBetter','-').replace('_biggerIsBetter','+');},truncate(value){if(typeof value!=='number')return value;if(0===(value%1))return value;if(typeof this.formatSpec_!=='function'&&(!this.formatSpec_.unitScale||((this.formatSpec_.unitScale.length===1)&&(this.formatSpec_.unitScale[0].value===1)))){const digits=this.formatSpec_.maximumFractionDigits||this.formatSpec_.minimumFractionDigits;return tr.b.math.truncate(value,digits+1);}\nconst formatted=this.format(value);let test=Math.round(value);if(formatted===this.format(test))return test;let lo=1;let hi=16;while(lo<hi-1){const digits=parseInt((lo+hi)/2);test=tr.b.math.truncate(value,digits);if(formatted===this.format(test)){hi=digits;}else{lo=digits;}}\ntest=tr.b.math.truncate(value,lo);if(formatted===this.format(test))return test;return tr.b.math.truncate(value,hi);},getUnitScale_(opt_context){let formatSpec=this.formatSpec_;let formatSpecWasFunction=false;if(typeof formatSpec==='function'){formatSpecWasFunction=true;formatSpec=formatSpec();}\nconst context=opt_context||{};let scale=undefined;if(context.unitScale){scale=context.unitScale;}else if(context.unitPrefix){const symbol=formatSpec.baseSymbol?formatSpec.baseSymbol:this.scaleBaseUnit.baseSymbol;scale=tr.b.UnitScale.defineUnitScaleFromPrefixScale(symbol,symbol,[context.unitPrefix]).AUTO;}else{scale=formatSpec.unitScale;if(!scale){scale=[{value:1,symbol:formatSpec.baseSymbol||'',baseSymbol:formatSpec.baseSymbol||''}];if(!formatSpecWasFunction)formatSpec.unitScale=scale;}}\nif(!(scale instanceof Array)){throw new Error('Unit has a malformed unit scale.');}\nreturn scale;},get unitString(){const scale=this.getUnitScale_();if(!scale){throw new Error('A UnitScale could not be found for Unit '+this.unitName);}\nreturn scale[0].symbol;},format(value,opt_context){let signString='';if(value<0){signString='-';value=-value;}else if(this.isDelta){signString=value===0?PLUS_MINUS_SIGN:'+';}\nconst context=opt_context||{};const scale=this.getUnitScale_(context);let deltaValue=context.deltaValue===undefined?value:context.deltaValue;deltaValue=Math.abs(deltaValue)*this.scaleBaseUnit.value;if(deltaValue===0){deltaValue=1;}\nlet i=0;while(i<scale.length-1&&deltaValue/scale[i+1].value>=1){i++;}\nconst selectedSubUnit=scale[i];let formatSpec=this.formatSpec_;if(typeof formatSpec==='function')formatSpec=formatSpec();let unitString='';if(selectedSubUnit.symbol){if(!formatSpec.avoidSpacePrecedingUnit)unitString=' ';unitString+=selectedSubUnit.symbol;}\nvalue=tr.b.convertUnit(value,this.scaleBaseUnit,selectedSubUnit);const numberString=getNumberFormatter(formatSpec.minimumFractionDigits,formatSpec.maximumFractionDigits,context.minimumFractionDigits,context.maximumFractionDigits).format(value);return signString+numberString+unitString;}};Unit.reset=function(){Unit.currentTimeDisplayMode=TimeDisplayModes.ms;};Unit.timestampFromUs=function(us){return tr.b.convertUnit(us,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);};Object.defineProperty(Unit,'currentTimeDisplayMode',{get(){return Unit.currentTimeDisplayMode_;},set(value){if(Unit.currentTimeDisplayMode_===value)return;Unit.currentTimeDisplayMode_=value;Unit.dispatchEvent(new tr.b.Event('display-mode-changed'));}});Unit.didPreferredTimeDisplayUnitChange=function(){let largest=undefined;const els=tr.ui.b.findDeepElementsMatching(document.body,'tr-v-ui-preferred-display-unit');els.forEach(function(el){largest=max(largest,el.preferredTimeDisplayMode);});Unit.currentTimeDisplayMode=largest===undefined?TimeDisplayModes.ms:largest;};Unit.byName={};Unit.byJSONName={};Unit.fromJSON=function(object){if(typeof(object)==='string'){if(object.endsWith('+')){object=object.slice(0,object.length-1)+'_biggerIsBetter';}else if(object.endsWith('-')){object=object.slice(0,object.length-1)+'_smallerIsBetter';}\nconst u=Unit.byJSONName[object];if(u)return u;}\nthrow new Error(`Unrecognized unit \"${object}\"`);};Unit.define=function(params){const definedUnits=[];for(const improvementDirection of Object.values(ImprovementDirection)){const regularUnit=Unit.defineUnitVariant_(params,false,improvementDirection);const deltaUnit=Unit.defineUnitVariant_(params,true,improvementDirection);regularUnit.correspondingDeltaUnit=deltaUnit;deltaUnit.correspondingDeltaUnit=deltaUnit;definedUnits.push(regularUnit,deltaUnit);}\nconst baseUnit=Unit.byName[params.baseUnitName];definedUnits.forEach(u=>u.baseUnit=baseUnit);};Unit.nameSuffixForImprovementDirection=function(improvementDirection){switch(improvementDirection){case ImprovementDirection.DONT_CARE:return'';case ImprovementDirection.BIGGER_IS_BETTER:return'_biggerIsBetter';case ImprovementDirection.SMALLER_IS_BETTER:return'_smallerIsBetter';default:throw new Error('Unknown improvement direction: '+improvementDirection);}};Unit.defineUnitVariant_=function(params,isDelta,improvementDirection){let nameSuffix=isDelta?'Delta':'';nameSuffix+=Unit.nameSuffixForImprovementDirection(improvementDirection);const unitName=params.baseUnitName+nameSuffix;const jsonName=params.baseJsonName+nameSuffix;if(Unit.byName[unitName]!==undefined){throw new Error('Unit \\''+unitName+'\\' already exists');}\nif(Unit.byJSONName[jsonName]!==undefined){throw new Error('JSON unit \\''+jsonName+'\\' alread exists');}\nlet scaleBaseUnit=params.scaleBaseUnit;if(!scaleBaseUnit){let formatSpec=params.formatSpec;if(typeof formatSpec==='function')formatSpec=formatSpec();const baseSymbol=formatSpec.unitScale?formatSpec.unitScale[0].baseSymbol:(formatSpec.baseSymbol||'');scaleBaseUnit={value:1,symbol:baseSymbol,baseSymbol};}\nconst unit=new Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,params.formatSpec);Unit.byName[unitName]=unit;Unit.byJSONName[jsonName]=unit;return unit;};tr.b.EventTarget.decorate(Unit);Unit.reset();Unit.define({baseUnitName:'timeInMsAutoFormat',baseJsonName:'msBestFitFormat',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec:{unitScale:tr.b.UnitScale.TIME.AUTO,minimumFractionDigits:0,maximumFractionDigits:3}});Unit.define({baseUnitName:'timeDurationInMs',baseJsonName:'ms',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'timeStampInMs',baseJsonName:'tsMs',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'normalizedPercentage',baseJsonName:'n%',formatSpec:{unitScale:[{value:0.01,symbol:'%'}],avoidSpacePrecedingUnit:true,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'sizeInBytes',baseJsonName:'sizeInBytes',formatSpec:{unitScale:tr.b.UnitScale.MEMORY.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'bandwidthInBytesPerSecond',baseJsonName:'bytesPerSecond',formatSpec:{unitScale:tr.b.UnitScale.BANDWIDTH_BYTES.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'energyInJoules',baseJsonName:'J',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('J','JOULE',tr.b.UnitPrefixScale.METRIC,'JOULE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'powerInWatts',baseJsonName:'W',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('W','WATT',tr.b.UnitPrefixScale.METRIC,'WATT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricCurrentInAmperes',baseJsonName:'A',formatSpec:{baseSymbol:'A',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('A','AMPERE',tr.b.UnitPrefixScale.METRIC,'AMPERE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricPotentialInVolts',baseJsonName:'V',formatSpec:{baseSymbol:'V',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('V','VOLT',tr.b.UnitPrefixScale.METRIC,'VOLT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'frequencyInHertz',baseJsonName:'Hz',formatSpec:{baseSymbol:'Hz',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('Hz','HERTZ',tr.b.UnitPrefixScale.METRIC,'HERTZ').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'unitlessNumber',baseJsonName:'unitless',formatSpec:{minimumFractionDigits:3,maximumFractionDigits:3}});Unit.define({baseUnitName:'count',baseJsonName:'count',formatSpec:{minimumFractionDigits:0,maximumFractionDigits:0}});Unit.define({baseUnitName:'sigma',baseJsonName:'sigma',formatSpec:{baseSymbol:String.fromCharCode(963),minimumFractionDigits:1,maximumFractionDigits:1}});return{ImprovementDirection,Unit,};});!function(t,n){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=n();else if(\"function\"==typeof define&&define.amd)define(n);else{var r=n();for(var a in r)(\"object\"==typeof exports?exports:t)[a]=r[a]}}(this,function(){return function(t){function n(a){if(r[a])return r[a].exports;var e=r[a]={exports:{},id:a,loaded:!1};return t[a].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}var r={};return n.m=t,n.c=r,n.p=\"\",n(0)}([function(t,n,r){n.glMatrix=r(1),n.mat2=r(2),n.mat2d=r(3),n.mat3=r(4),n.mat4=r(5),n.quat=r(6),n.vec2=r(9),n.vec3=r(7),n.vec4=r(8)},function(t,n,r){var a={};a.EPSILON=1e-6,a.ARRAY_TYPE=\"undefined\"!=typeof Float32Array?Float32Array:Array,a.RANDOM=Math.random,a.setMatrixArrayType=function(t){GLMAT_ARRAY_TYPE=t};var e=Math.PI/180;a.toRadian=function(t){return t*e},t.exports=a},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1];t[1]=n[2],t[2]=r}else t[0]=n[0],t[1]=n[2],t[2]=n[1],t[3]=n[3];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*u-e*a;return o?(o=1/o,t[0]=u*o,t[1]=-a*o,t[2]=-e*o,t[3]=r*o,t):null},e.adjoint=function(t,n){var r=n[0];return t[0]=n[3],t[1]=-n[1],t[2]=-n[2],t[3]=r,t},e.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*i+u*c,t[1]=e*i+o*c,t[2]=a*f+u*s,t[3]=e*f+o*s,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+u*i,t[1]=e*c+o*i,t[2]=a*-i+u*c,t[3]=e*-i+o*c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1];return t[0]=a*i,t[1]=e*i,t[2]=u*c,t[3]=o*c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t},e.str=function(t){return\"mat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},e.LDU=function(t,n,r,a){return t[2]=a[2]/a[0],r[0]=a[0],r[1]=a[1],r[3]=a[3]-t[2]*r[1],[t,n,r]},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(6);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=r*u-a*e;return c?(c=1/c,t[0]=u*c,t[1]=-a*c,t[2]=-e*c,t[3]=r*c,t[4]=(e*i-u*o)*c,t[5]=(a*o-r*i)*c,t):null},e.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1],h=r[2],M=r[3],l=r[4],v=r[5];return t[0]=a*f+u*s,t[1]=e*f+o*s,t[2]=a*h+u*M,t[3]=e*h+o*M,t[4]=a*l+u*v+i,t[5]=e*l+o*v+c,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=Math.sin(r),s=Math.cos(r);return t[0]=a*s+u*f,t[1]=e*s+o*f,t[2]=a*-f+u*s,t[3]=e*-f+o*s,t[4]=i,t[5]=c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a*f,t[1]=e*f,t[2]=u*s,t[3]=o*s,t[4]=i,t[5]=c,t},e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=a*f+u*s+i,t[5]=e*f+o*s+c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t[4]=0,t[5]=0,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t[4]=0,t[5]=0,t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=n[0],t[5]=n[1],t},e.str=function(t){return\"mat2d(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[4],t[4]=n[5],t[5]=n[6],t[6]=n[8],t[7]=n[9],t[8]=n[10],t},e.clone=function(t){var n=new a.ARRAY_TYPE(9);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[5];t[1]=n[3],t[2]=n[6],t[3]=r,t[5]=n[7],t[6]=a,t[7]=e}else t[0]=n[0],t[1]=n[3],t[2]=n[6],t[3]=n[1],t[4]=n[4],t[5]=n[7],t[6]=n[2],t[7]=n[5],t[8]=n[8];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=s*o-i*f,M=-s*u+i*c,l=f*u-o*c,v=r*h+a*M+e*l;return v?(v=1/v,t[0]=h*v,t[1]=(-s*a+e*f)*v,t[2]=(i*a-e*o)*v,t[3]=M*v,t[4]=(s*r-e*c)*v,t[5]=(-i*r+e*u)*v,t[6]=l*v,t[7]=(-f*r+a*c)*v,t[8]=(o*r-a*u)*v,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8];return t[0]=o*s-i*f,t[1]=e*f-a*s,t[2]=a*i-e*o,t[3]=i*c-u*s,t[4]=r*s-e*c,t[5]=e*u-r*i,t[6]=u*f-o*c,t[7]=a*c-r*f,t[8]=r*o-a*u,t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8];return n*(f*u-o*c)+r*(-f*e+o*i)+a*(c*e-u*i)},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1],v=r[2],m=r[3],p=r[4],d=r[5],A=r[6],R=r[7],w=r[8];return t[0]=M*a+l*o+v*f,t[1]=M*e+l*i+v*s,t[2]=M*u+l*c+v*h,t[3]=m*a+p*o+d*f,t[4]=m*e+p*i+d*s,t[5]=m*u+p*c+d*h,t[6]=A*a+R*o+w*f,t[7]=A*e+R*i+w*s,t[8]=A*u+R*c+w*h,t},e.mul=e.multiply,e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=M*a+l*o+f,t[7]=M*e+l*i+s,t[8]=M*u+l*c+h,t},e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=Math.sin(r),l=Math.cos(r);return t[0]=l*a+M*o,t[1]=l*e+M*i,t[2]=l*u+M*c,t[3]=l*o-M*a,t[4]=l*i-M*e,t[5]=l*c-M*u,t[6]=f,t[7]=s,t[8]=h,t},e.scale=function(t,n,r){var a=r[0],e=r[1];return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=e*n[3],t[4]=e*n[4],t[5]=e*n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=n[0],t[7]=n[1],t[8]=1,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=0,t[3]=-r,t[4]=a,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=0,t[4]=n[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat2d=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=0,t[3]=n[2],t[4]=n[3],t[5]=0,t[6]=n[4],t[7]=n[5],t[8]=1,t},e.fromQuat=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r+r,i=a+a,c=e+e,f=r*o,s=a*o,h=a*i,M=e*o,l=e*i,v=e*c,m=u*o,p=u*i,d=u*c;return t[0]=1-h-v,t[3]=s-d,t[6]=M+p,t[1]=s+d,t[4]=1-f-v,t[7]=l-m,t[2]=M-p,t[5]=l+m,t[8]=1-f-h,t},e.normalFromMat4=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(c*P-o*b-f*x)*D,t[2]=(o*T-i*P+f*y)*D,t[3]=(e*T-a*b-u*E)*D,t[4]=(r*b-e*P+u*x)*D,t[5]=(a*P-r*T-u*y)*D,t[6]=(m*g-p*Y+d*q)*D,t[7]=(p*w-v*g-d*R)*D,t[8]=(v*Y-m*w+d*A)*D,t):null},e.str=function(t){return\"mat3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(16);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[3],u=n[6],o=n[7],i=n[11];t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=r,t[6]=n[9],t[7]=n[13],t[8]=a,t[9]=u,t[11]=n[14],t[12]=e,t[13]=o,t[14]=i}else t[0]=n[0],t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=n[1],t[5]=n[5],t[6]=n[9],t[7]=n[13],t[8]=n[2],t[9]=n[6],t[10]=n[10],t[11]=n[14],t[12]=n[3],t[13]=n[7],t[14]=n[11],t[15]=n[15];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(e*T-a*b-u*E)*D,t[2]=(m*g-p*Y+d*q)*D,t[3]=(M*Y-h*g-l*q)*D,t[4]=(c*P-o*b-f*x)*D,t[5]=(r*b-e*P+u*x)*D,t[6]=(p*w-v*g-d*R)*D,t[7]=(s*g-M*w+l*R)*D,t[8]=(o*T-i*P+f*y)*D,t[9]=(a*P-r*T-u*y)*D,t[10]=(v*Y-m*w+d*A)*D,t[11]=(h*w-s*Y-l*A)*D,t[12]=(i*x-o*E-c*y)*D,t[13]=(r*E-a*x+e*y)*D,t[14]=(m*R-v*q-p*A)*D,t[15]=(s*q-h*R+M*A)*D,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15];return t[0]=i*(M*d-l*p)-h*(c*d-f*p)+m*(c*l-f*M),t[1]=-(a*(M*d-l*p)-h*(e*d-u*p)+m*(e*l-u*M)),t[2]=a*(c*d-f*p)-i*(e*d-u*p)+m*(e*f-u*c),t[3]=-(a*(c*l-f*M)-i*(e*l-u*M)+h*(e*f-u*c)),t[4]=-(o*(M*d-l*p)-s*(c*d-f*p)+v*(c*l-f*M)),t[5]=r*(M*d-l*p)-s*(e*d-u*p)+v*(e*l-u*M),t[6]=-(r*(c*d-f*p)-o*(e*d-u*p)+v*(e*f-u*c)),t[7]=r*(c*l-f*M)-o*(e*l-u*M)+s*(e*f-u*c),t[8]=o*(h*d-l*m)-s*(i*d-f*m)+v*(i*l-f*h),t[9]=-(r*(h*d-l*m)-s*(a*d-u*m)+v*(a*l-u*h)),t[10]=r*(i*d-f*m)-o*(a*d-u*m)+v*(a*f-u*i),t[11]=-(r*(i*l-f*h)-o*(a*l-u*h)+s*(a*f-u*i)),t[12]=-(o*(h*p-M*m)-s*(i*p-c*m)+v*(i*M-c*h)),t[13]=r*(h*p-M*m)-s*(a*p-e*m)+v*(a*M-e*h),t[14]=-(r*(i*p-c*m)-o*(a*p-e*m)+v*(a*c-e*i)),t[15]=r*(i*M-c*h)-o*(a*M-e*h)+s*(a*c-e*i),t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8],s=t[9],h=t[10],M=t[11],l=t[12],v=t[13],m=t[14],p=t[15],d=n*o-r*u,A=n*i-a*u,R=n*c-e*u,w=r*i-a*o,q=r*c-e*o,Y=a*c-e*i,g=f*v-s*l,y=f*m-h*l,x=f*p-M*l,P=s*m-h*v,E=s*p-M*v,T=h*p-M*m;return d*T-A*E+R*P+w*x-q*y+Y*g},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],m=n[12],p=n[13],d=n[14],A=n[15],R=r[0],w=r[1],q=r[2],Y=r[3];return t[0]=R*a+w*i+q*h+Y*m,t[1]=R*e+w*c+q*M+Y*p,t[2]=R*u+w*f+q*l+Y*d,t[3]=R*o+w*s+q*v+Y*A,R=r[4],w=r[5],q=r[6],Y=r[7],t[4]=R*a+w*i+q*h+Y*m,t[5]=R*e+w*c+q*M+Y*p,t[6]=R*u+w*f+q*l+Y*d,t[7]=R*o+w*s+q*v+Y*A,R=r[8],w=r[9],q=r[10],Y=r[11],t[8]=R*a+w*i+q*h+Y*m,t[9]=R*e+w*c+q*M+Y*p,t[10]=R*u+w*f+q*l+Y*d,t[11]=R*o+w*s+q*v+Y*A,R=r[12],w=r[13],q=r[14],Y=r[15],t[12]=R*a+w*i+q*h+Y*m,t[13]=R*e+w*c+q*M+Y*p,t[14]=R*u+w*f+q*l+Y*d,t[15]=R*o+w*s+q*v+Y*A,t},e.mul=e.multiply,e.translate=function(t,n,r){var a,e,u,o,i,c,f,s,h,M,l,v,m=r[0],p=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*p+n[8]*d+n[12],t[13]=n[1]*m+n[5]*p+n[9]*d+n[13],t[14]=n[2]*m+n[6]*p+n[10]*d+n[14],t[15]=n[3]*m+n[7]*p+n[11]*d+n[15]):(a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=f,t[7]=s,t[8]=h,t[9]=M,t[10]=l,t[11]=v,t[12]=a*m+i*p+h*d+n[12],t[13]=e*m+c*p+M*d+n[13],t[14]=u*m+f*p+l*d+n[14],t[15]=o*m+s*p+v*d+n[15]),t},e.scale=function(t,n,r){var a=r[0],e=r[1],u=r[2];return t[0]=n[0]*a,t[1]=n[1]*a,t[2]=n[2]*a,t[3]=n[3]*a,t[4]=n[4]*e,t[5]=n[5]*e,t[6]=n[6]*e,t[7]=n[7]*e,t[8]=n[8]*u,t[9]=n[9]*u,t[10]=n[10]*u,t[11]=n[11]*u,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.rotate=function(t,n,r,e){var u,o,i,c,f,s,h,M,l,v,m,p,d,A,R,w,q,Y,g,y,x,P,E,T,b=e[0],D=e[1],L=e[2],_=Math.sqrt(b*b+D*D+L*L);return Math.abs(_)<a.EPSILON?null:(_=1/_,b*=_,D*=_,L*=_,u=Math.sin(r),o=Math.cos(r),i=1-o,c=n[0],f=n[1],s=n[2],h=n[3],M=n[4],l=n[5],v=n[6],m=n[7],p=n[8],d=n[9],A=n[10],R=n[11],w=b*b*i+o,q=D*b*i+L*u,Y=L*b*i-D*u,g=b*D*i-L*u,y=D*D*i+o,x=L*D*i+b*u,P=b*L*i+D*u,E=D*L*i-b*u,T=L*L*i+o,t[0]=c*w+M*q+p*Y,t[1]=f*w+l*q+d*Y,t[2]=s*w+v*q+A*Y,t[3]=h*w+m*q+R*Y,t[4]=c*g+M*y+p*x,t[5]=f*g+l*y+d*x,t[6]=s*g+v*y+A*x,t[7]=h*g+m*y+R*x,t[8]=c*P+M*E+p*T,t[9]=f*P+l*E+d*T,t[10]=s*P+v*E+A*T,t[11]=h*P+m*E+R*T,n!==t&&(t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t)},e.rotateX=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[4],o=n[5],i=n[6],c=n[7],f=n[8],s=n[9],h=n[10],M=n[11];return n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=u*e+f*a,t[5]=o*e+s*a,t[6]=i*e+h*a,t[7]=c*e+M*a,t[8]=f*e-u*a,t[9]=s*e-o*a,t[10]=h*e-i*a,t[11]=M*e-c*a,t},e.rotateY=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[0],o=n[1],i=n[2],c=n[3],f=n[8],s=n[9],h=n[10],M=n[11];return n!==t&&(t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=u*e-f*a,t[1]=o*e-s*a,t[2]=i*e-h*a,t[3]=c*e-M*a,t[8]=u*a+f*e,t[9]=o*a+s*e,t[10]=i*a+h*e,t[11]=c*a+M*e,t},e.rotateZ=function(t,n,r){var a=Math.sin(r),e=Math.cos(r),u=n[0],o=n[1],i=n[2],c=n[3],f=n[4],s=n[5],h=n[6],M=n[7];return n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=u*e+f*a,t[1]=o*e+s*a,t[2]=i*e+h*a,t[3]=c*e+M*a,t[4]=f*e-u*a,t[5]=s*e-o*a,t[6]=h*e-i*a,t[7]=M*e-c*a,t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=n[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromRotation=function(t,n,r){var e,u,o,i=r[0],c=r[1],f=r[2],s=Math.sqrt(i*i+c*c+f*f);return Math.abs(s)<a.EPSILON?null:(s=1/s,i*=s,c*=s,f*=s,e=Math.sin(n),u=Math.cos(n),o=1-u,t[0]=i*i*o+u,t[1]=c*i*o+f*e,t[2]=f*i*o-c*e,t[3]=0,t[4]=i*c*o-f*e,t[5]=c*c*o+u,t[6]=f*c*o+i*e,t[7]=0,t[8]=i*f*o+c*e,t[9]=c*f*o-i*e,t[10]=f*f*o+u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},e.fromXRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromYRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromZRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.fromRotationTranslation=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=a+a,c=e+e,f=u+u,s=a*i,h=a*c,M=a*f,l=e*c,v=e*f,m=u*f,p=o*i,d=o*c,A=o*f;return t[0]=1-(l+m),t[1]=h+A,t[2]=M-d,t[3]=0,t[4]=h-A,t[5]=1-(s+m),t[6]=v+p,t[7]=0,t[8]=M+d,t[9]=v-p,t[10]=1-(s+l),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},e.fromRotationTranslationScale=function(t,n,r,a){var e=n[0],u=n[1],o=n[2],i=n[3],c=e+e,f=u+u,s=o+o,h=e*c,M=e*f,l=e*s,v=u*f,m=u*s,p=o*s,d=i*c,A=i*f,R=i*s,w=a[0],q=a[1],Y=a[2];return t[0]=(1-(v+p))*w,t[1]=(M+R)*w,t[2]=(l-A)*w,t[3]=0,t[4]=(M-R)*q,t[5]=(1-(h+p))*q,t[6]=(m+d)*q,t[7]=0,t[8]=(l+A)*Y,t[9]=(m-d)*Y,t[10]=(1-(h+v))*Y,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t},e.fromRotationTranslationScaleOrigin=function(t,n,r,a,e){var u=n[0],o=n[1],i=n[2],c=n[3],f=u+u,s=o+o,h=i+i,M=u*f,l=u*s,v=u*h,m=o*s,p=o*h,d=i*h,A=c*f,R=c*s,w=c*h,q=a[0],Y=a[1],g=a[2],y=e[0],x=e[1],P=e[2];return t[0]=(1-(m+d))*q,t[1]=(l+w)*q,t[2]=(v-R)*q,t[3]=0,t[4]=(l-w)*Y,t[5]=(1-(M+d))*Y,t[6]=(p+A)*Y,t[7]=0,t[8]=(v+R)*g,t[9]=(p-A)*g,t[10]=(1-(M+m))*g,t[11]=0,t[12]=r[0]+y-(t[0]*y+t[4]*x+t[8]*P),t[13]=r[1]+x-(t[1]*y+t[5]*x+t[9]*P),t[14]=r[2]+P-(t[2]*y+t[6]*x+t[10]*P),t[15]=1,t},e.fromQuat=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r+r,i=a+a,c=e+e,f=r*o,s=a*o,h=a*i,M=e*o,l=e*i,v=e*c,m=u*o,p=u*i,d=u*c;return t[0]=1-h-v,t[1]=s+d,t[2]=M-p,t[3]=0,t[4]=s-d,t[5]=1-f-v,t[6]=l+m,t[7]=0,t[8]=M+p,t[9]=l-m,t[10]=1-f-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.frustum=function(t,n,r,a,e,u,o){var i=1/(r-n),c=1/(e-a),f=1/(u-o);return t[0]=2*u*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*u*c,t[6]=0,t[7]=0,t[8]=(r+n)*i,t[9]=(e+a)*c,t[10]=(o+u)*f,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*u*2*f,t[15]=0,t},e.perspective=function(t,n,r,a,e){var u=1/Math.tan(n/2),o=1/(a-e);return t[0]=u/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(e+a)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*e*a*o,t[15]=0,t},e.perspectiveFromFieldOfView=function(t,n,r,a){var e=Math.tan(n.upDegrees*Math.PI/180),u=Math.tan(n.downDegrees*Math.PI/180),o=Math.tan(n.leftDegrees*Math.PI/180),i=Math.tan(n.rightDegrees*Math.PI/180),c=2/(o+i),f=2/(e+u);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=f,t[6]=0,t[7]=0,t[8]=-((o-i)*c*.5),t[9]=(e-u)*f*.5,t[10]=a/(r-a),t[11]=-1,t[12]=0,t[13]=0,t[14]=a*r/(r-a),t[15]=0,t},e.ortho=function(t,n,r,a,e,u,o){var i=1/(n-r),c=1/(a-e),f=1/(u-o);return t[0]=-2*i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*f,t[11]=0,t[12]=(n+r)*i,t[13]=(e+a)*c,t[14]=(o+u)*f,t[15]=1,t},e.lookAt=function(t,n,r,u){var o,i,c,f,s,h,M,l,v,m,p=n[0],d=n[1],A=n[2],R=u[0],w=u[1],q=u[2],Y=r[0],g=r[1],y=r[2];return Math.abs(p-Y)<a.EPSILON&&Math.abs(d-g)<a.EPSILON&&Math.abs(A-y)<a.EPSILON?e.identity(t):(M=p-Y,l=d-g,v=A-y,m=1/Math.sqrt(M*M+l*l+v*v),M*=m,l*=m,v*=m,o=w*v-q*l,i=q*M-R*v,c=R*l-w*M,m=Math.sqrt(o*o+i*i+c*c),m?(m=1/m,o*=m,i*=m,c*=m):(o=0,i=0,c=0),f=l*c-v*i,s=v*o-M*c,h=M*i-l*o,m=Math.sqrt(f*f+s*s+h*h),m?(m=1/m,f*=m,s*=m,h*=m):(f=0,s=0,h=0),t[0]=o,t[1]=f,t[2]=M,t[3]=0,t[4]=i,t[5]=s,t[6]=l,t[7]=0,t[8]=c,t[9]=h,t[10]=v,t[11]=0,t[12]=-(o*p+i*d+c*A),t[13]=-(f*p+s*d+h*A),t[14]=-(M*p+l*d+v*A),t[15]=1,t)},e.str=function(t){return\"mat4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\", \"+t[9]+\", \"+t[10]+\", \"+t[11]+\", \"+t[12]+\", \"+t[13]+\", \"+t[14]+\", \"+t[15]+\")\"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=e},function(t,n,r){var a=r(1),e=r(4),u=r(7),o=r(8),i={};i.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},i.rotationTo=function(){var t=u.create(),n=u.fromValues(1,0,0),r=u.fromValues(0,1,0);return function(a,e,o){var c=u.dot(e,o);return-.999999>c?(u.cross(t,n,e),u.length(t)<1e-6&&u.cross(t,r,e),u.normalize(t,t),i.setAxisAngle(a,t,Math.PI),a):c>.999999?(a[0]=0,a[1]=0,a[2]=0,a[3]=1,a):(u.cross(t,e,o),a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=1+c,i.normalize(a,a))}}(),i.setAxes=function(){var t=e.create();return function(n,r,a,e){return t[0]=a[0],t[3]=a[1],t[6]=a[2],t[1]=e[0],t[4]=e[1],t[7]=e[2],t[2]=-r[0],t[5]=-r[1],t[8]=-r[2],i.normalize(n,i.fromMat3(n,t))}}(),i.clone=o.clone,i.fromValues=o.fromValues,i.copy=o.copy,i.set=o.set,i.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},i.setAxisAngle=function(t,n,r){r=.5*r;var a=Math.sin(r);return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=Math.cos(r),t},i.add=o.add,i.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*s+o*i+e*f-u*c,t[1]=e*s+o*c+u*i-a*f,t[2]=u*s+o*f+a*c-e*i,t[3]=o*s-a*i-e*c-u*f,t},i.mul=i.multiply,i.scale=o.scale,i.rotateX=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+o*i,t[1]=e*c+u*i,t[2]=u*c-e*i,t[3]=o*c-a*i,t},i.rotateY=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c-u*i,t[1]=e*c+o*i,t[2]=u*c+a*i,t[3]=o*c-e*i,t},i.rotateZ=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+e*i,t[1]=e*c-a*i,t[2]=u*c+o*i,t[3]=o*c-u*i,t},i.calculateW=function(t,n){var r=n[0],a=n[1],e=n[2];return t[0]=r,t[1]=a,t[2]=e,t[3]=Math.sqrt(Math.abs(1-r*r-a*a-e*e)),t},i.dot=o.dot,i.lerp=o.lerp,i.slerp=function(t,n,r,a){var e,u,o,i,c,f=n[0],s=n[1],h=n[2],M=n[3],l=r[0],v=r[1],m=r[2],p=r[3];return u=f*l+s*v+h*m+M*p,0>u&&(u=-u,l=-l,v=-v,m=-m,p=-p),1-u>1e-6?(e=Math.acos(u),o=Math.sin(e),i=Math.sin((1-a)*e)/o,c=Math.sin(a*e)/o):(i=1-a,c=a),t[0]=i*f+c*l,t[1]=i*s+c*v,t[2]=i*h+c*m,t[3]=i*M+c*p,t},i.sqlerp=function(){var t=i.create(),n=i.create();return function(r,a,e,u,o,c){return i.slerp(t,a,o,c),i.slerp(n,e,u,c),i.slerp(r,t,n,2*c*(1-c)),r}}(),i.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u,i=o?1/o:0;return t[0]=-r*i,t[1]=-a*i,t[2]=-e*i,t[3]=u*i,t},i.conjugate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=n[3],t},i.length=o.length,i.len=i.length,i.squaredLength=o.squaredLength,i.sqrLen=i.squaredLength,i.normalize=o.normalize,i.fromMat3=function(t,n){var r,a=n[0]+n[4]+n[8];if(a>0)r=Math.sqrt(a+1),t[3]=.5*r,r=.5/r,t[0]=(n[5]-n[7])*r,t[1]=(n[6]-n[2])*r,t[2]=(n[1]-n[3])*r;else{var e=0;n[4]>n[0]&&(e=1),n[8]>n[3*e+e]&&(e=2);var u=(e+1)%3,o=(e+2)%3;r=Math.sqrt(n[3*e+e]-n[3*u+u]-n[3*o+o]+1),t[e]=.5*r,r=.5/r,t[3]=(n[3*u+o]-n[3*o+u])*r,t[u]=(n[3*u+e]+n[3*e+u])*r,t[o]=(n[3*o+e]+n[3*e+o])*r}return t},i.str=function(t){return\"quat(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},t.exports=i},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(3);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n},e.fromValues=function(t,n,r){var e=new a.ARRAY_TYPE(3);return e[0]=t,e[1]=n,e[2]=r,e},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t},e.set=function(t,n,r,a){return t[0]=n,t[1]=r,t[2]=a,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return Math.sqrt(r*r+a*a+e*e)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return r*r+a*a+e*e},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2];return Math.sqrt(n*n+r*r+a*a)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2];return n*n+r*r+a*a},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=r*r+a*a+e*e;return u>0&&(u=1/Math.sqrt(u),t[0]=n[0]*u,t[1]=n[1]*u,t[2]=n[2]*u),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]},e.cross=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2];return t[0]=e*c-u*i,t[1]=u*o-a*c,t[2]=a*i-e*o,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t},e.hermite=function(t,n,r,a,e,u){var o=u*u,i=o*(2*u-3)+1,c=o*(u-2)+u,f=o*(u-1),s=o*(3-2*u);return t[0]=n[0]*i+r[0]*c+a[0]*f+e[0]*s,t[1]=n[1]*i+r[1]*c+a[1]*f+e[1]*s,t[2]=n[2]*i+r[2]*c+a[2]*f+e[2]*s,t},e.bezier=function(t,n,r,a,e,u){var o=1-u,i=o*o,c=u*u,f=i*o,s=3*u*i,h=3*c*o,M=c*u;return t[0]=n[0]*f+r[0]*s+a[0]*h+e[0]*M,t[1]=n[1]*f+r[1]*s+a[1]*h+e[1]*M,t[2]=n[2]*f+r[2]*s+a[2]*h+e[2]*M,t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI,e=2*a.RANDOM()-1,u=Math.sqrt(1-e*e)*n;return t[0]=Math.cos(r)*u,t[1]=Math.sin(r)*u,t[2]=e*n,t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[3]*a+r[7]*e+r[11]*u+r[15];return o=o||1,t[0]=(r[0]*a+r[4]*e+r[8]*u+r[12])/o,t[1]=(r[1]*a+r[5]*e+r[9]*u+r[13])/o,t[2]=(r[2]*a+r[6]*e+r[10]*u+r[14])/o,t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1],u=n[2];return t[0]=a*r[0]+e*r[3]+u*r[6],t[1]=a*r[1]+e*r[4]+u*r[7],t[2]=a*r[2]+e*r[5]+u*r[8],t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t},e.rotateX=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0],u[1]=e[1]*Math.cos(a)-e[2]*Math.sin(a),u[2]=e[1]*Math.sin(a)+e[2]*Math.cos(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateY=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[2]*Math.sin(a)+e[0]*Math.cos(a),u[1]=e[1],u[2]=e[2]*Math.cos(a)-e[0]*Math.sin(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateZ=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0]*Math.cos(a)-e[1]*Math.sin(a),u[1]=e[0]*Math.sin(a)+e[1]*Math.cos(a),u[2]=e[2],t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=3),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2];return n}}(),e.angle=function(t,n){var r=e.fromValues(t[0],t[1],t[2]),a=e.fromValues(n[0],n[1],n[2]);e.normalize(r,r),e.normalize(a,a);var u=e.dot(r,a);return u>1?0:Math.acos(u)},e.str=function(t){return\"vec3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.fromValues=function(t,n,r,e){var u=new a.ARRAY_TYPE(4);return u[0]=t,u[1]=n,u[2]=r,u[3]=e,u},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.set=function(t,n,r,a,e){return t[0]=n,t[1]=r,t[2]=a,t[3]=e,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t[3]=n[3]+r[3],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t[3]=n[3]-r[3],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t[3]=n[3]*r[3],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t[3]=n[3]/r[3],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t[3]=Math.min(n[3],r[3]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t[3]=Math.max(n[3],r[3]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=n[3]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t[3]=n[3]+r[3]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return Math.sqrt(r*r+a*a+e*e+u*u)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return r*r+a*a+e*e+u*u},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return Math.sqrt(n*n+r*r+a*a+e*e)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return n*n+r*r+a*a+e*e},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=-n[3],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t[3]=1/n[3],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u;return o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=a*o,t[2]=e*o,t[3]=u*o),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3]},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2],i=n[3];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t[3]=i+a*(r[3]-i),t},e.random=function(t,n){return n=n||1,t[0]=a.RANDOM(),t[1]=a.RANDOM(),t[2]=a.RANDOM(),t[3]=a.RANDOM(),e.normalize(t,t),e.scale(t,t,n),t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3];return t[0]=r[0]*a+r[4]*e+r[8]*u+r[12]*o,t[1]=r[1]*a+r[5]*e+r[9]*u+r[13]*o,t[2]=r[2]*a+r[6]*e+r[10]*u+r[14]*o,t[3]=r[3]*a+r[7]*e+r[11]*u+r[15]*o,t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t[3]=n[3],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=4),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],t[3]=n[i+3],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2],n[i+3]=t[3];return n}}(),e.str=function(t){return\"vec4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(2);return n[0]=t[0],n[1]=t[1],n},e.fromValues=function(t,n){var r=new a.ARRAY_TYPE(2);return r[0]=t,r[1]=n,r},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t},e.set=function(t,n,r){return t[0]=n,t[1]=r,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return Math.sqrt(r*r+a*a)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return r*r+a*a},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1];return Math.sqrt(n*n+r*r)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1];return n*n+r*r},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=r*r+a*a;return e>0&&(e=1/Math.sqrt(e),t[0]=n[0]*e,t[1]=n[1]*e),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]},e.cross=function(t,n,r){var a=n[0]*r[1]-n[1]*r[0];return t[0]=t[1]=0,t[2]=a,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI;return t[0]=Math.cos(r)*n,t[1]=Math.sin(r)*n,t},e.transformMat2=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e,t[1]=r[1]*a+r[3]*e,t},e.transformMat2d=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e+r[4],t[1]=r[1]*a+r[3]*e+r[5],t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[3]*e+r[6],t[1]=r[1]*a+r[4]*e+r[7],t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[4]*e+r[12],t[1]=r[1]*a+r[5]*e+r[13],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=2),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],u(t,t,o),n[i]=t[0],n[i+1]=t[1];return n}}(),e.str=function(t){return\"vec2(\"+t[0]+\", \"+t[1]+\")\"},t.exports=e}])});'use strict';(function(global){if(tr.isNode){const glMatrixAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/gl-matrix-min.js');const glMatrixModule=require(glMatrixAbsPath);for(const exportName in glMatrixModule){global[exportName]=glMatrixModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const PREFERRED_NUMBER_SERIES_MULTIPLIERS=[1,2,5,10];function approximately(x,y,delta){if(delta===undefined)delta=1e-9;return Math.abs(x-y)<delta;}\nfunction clamp(x,lo,hi){return Math.min(Math.max(x,lo),hi);}\nfunction lerp(percentage,lo,hi){const range=hi-lo;return lo+percentage*range;}\nfunction normalize(value,lo,hi){return(value-lo)/(hi-lo);}\nfunction deg2rad(deg){return(Math.PI*deg)/180.0;}\nfunction erf(x){const sign=(x>=0)?1:-1;x=Math.abs(x);const a1=0.254829592;const a2=-0.284496736;const a3=1.421413741;const a4=-1.453152027;const a5=1.061405429;const p=0.3275911;const t=1.0/(1.0+p*x);const y=1.0-(((((a5*t+a4)*t)+a3)*t+a2)*t+a1)*t*Math.exp(-x*x);return sign*y;}\nconst tmpVec2=vec2.create();const tmpVec2b=vec2.create();const tmpVec4=vec4.create();const tmpMat2d=mat2d.create();vec2.createFromArray=function(arr){if(arr.length!==2)throw new Error('Should be length 2');const v=vec2.create();vec2.set(v,arr[0],arr[1]);return v;};vec2.createXY=function(x,y){const v=vec2.create();vec2.set(v,x,y);return v;};vec2.toString=function(a){return'['+a[0]+', '+a[1]+']';};vec2.addTwoScaledUnitVectors=function(out,u1,scale1,u2,scale2){vec2.scale(tmpVec2,u1,scale1);vec2.scale(tmpVec2b,u2,scale2);vec2.add(out,tmpVec2,tmpVec2b);};vec2.interpolatePiecewiseFunction=function(points,x){if(x<points[0][0])return points[0][1];for(let i=1;i<points.length;++i){if(x<points[i][0]){const percent=normalize(x,points[i-1][0],points[i][0]);return lerp(percent,points[i-1][1],points[i][1]);}}\nreturn points[points.length-1][1];};vec3.createXYZ=function(x,y,z){const v=vec3.create();vec3.set(v,x,y,z);return v;};vec3.toString=function(a){return'vec3('+a[0]+', '+a[1]+', '+a[2]+')';};mat2d.translateXY=function(out,x,y){vec2.set(tmpVec2,x,y);mat2d.translate(out,out,tmpVec2);};mat2d.scaleXY=function(out,x,y){vec2.set(tmpVec2,x,y);mat2d.scale(out,out,tmpVec2);};vec4.unitize=function(out,a){out[0]=a[0]/a[3];out[1]=a[1]/a[3];out[2]=a[2]/a[3];out[3]=1;return out;};vec2.copyFromVec4=function(out,a){vec4.unitize(tmpVec4,a);vec2.copy(out,tmpVec4);};function logOrLog10(x,base){if(base===10)return Math.log10(x);return Math.log(x)/Math.log(base);}\nfunction lesserPower(x,opt_base){const base=opt_base||10;return Math.pow(base,Math.floor(logOrLog10(x,base)));}\nfunction greaterPower(x,opt_base){const base=opt_base||10;return Math.pow(base,Math.ceil(logOrLog10(x,base)));}\nfunction lesserWholeNumber(x){if(x===0)return 0;const pow10=(x<0)?-lesserPower(-x):lesserPower(x);return pow10*Math.floor(x/pow10);}\nfunction greaterWholeNumber(x){if(x===0)return 0;const pow10=(x<0)?-lesserPower(-x):lesserPower(x);return pow10*Math.ceil(x/pow10);}\nfunction truncate(value,digits){const pow10=Math.pow(10,digits);return Math.round(value*pow10)/pow10;}\nfunction preferredNumberLargerThanMin(min){const absMin=Math.abs(min);const conservativeGuess=tr.b.math.lesserPower(absMin);let minPreferedNumber=undefined;for(const multiplier of PREFERRED_NUMBER_SERIES_MULTIPLIERS){const tightenedGuess=conservativeGuess*multiplier;if(tightenedGuess>=absMin){minPreferedNumber=tightenedGuess;break;}}\nif(minPreferedNumber===undefined){throw new Error('Could not compute preferred number for '+min);}\nif(min<0)minPreferedNumber*=-1;return minPreferedNumber;}\nreturn{approximately,clamp,lerp,normalize,deg2rad,erf,lesserPower,greaterPower,lesserWholeNumber,greaterWholeNumber,preferredNumberLargerThanMin,truncate,};});'use strict';tr.exportTo('tr.b.math',function(){function Range(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;}\nRange.prototype={__proto__:Object.prototype,clone(){if(this.isEmpty)return new Range();return Range.fromExplicitRange(this.min_,this.max_);},reset(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;},get isEmpty(){return this.isEmpty_;},addRange(range){if(range.isEmpty)return;this.addValue(range.min);this.addValue(range.max);},addValue(value){if(this.isEmpty_){this.max_=value;this.min_=value;this.isEmpty_=false;return;}\nthis.max_=Math.max(this.max_,value);this.min_=Math.min(this.min_,value);},set min(min){this.isEmpty_=false;this.min_=min;},get min(){if(this.isEmpty_)return undefined;return this.min_;},get max(){if(this.isEmpty_)return undefined;return this.max_;},set max(max){this.isEmpty_=false;this.max_=max;},get range(){if(this.isEmpty_)return undefined;return this.max_-this.min_;},get center(){return(this.min_+this.max_)*0.5;},get duration(){if(this.isEmpty_)return 0;return this.max_-this.min_;},enclosingPowers(opt_base){if(this.isEmpty)return new Range();return Range.fromExplicitRange(tr.b.math.lesserPower(this.min_,opt_base),tr.b.math.greaterPower(this.max_,opt_base));},normalize(x){return tr.b.math.normalize(x,this.min,this.max);},lerp(x){return tr.b.math.lerp(x,this.min,this.max);},clamp(x){return tr.b.math.clamp(x,this.min,this.max);},equals(that){if(this.isEmpty&&that.isEmpty)return true;if(this.isEmpty!==that.isEmpty)return false;return(tr.b.math.approximately(this.min,that.min)&&tr.b.math.approximately(this.max,that.max));},containsExplicitRangeInclusive(min,max){if(this.isEmpty)return false;return this.min_<=min&&max<=this.max_;},containsExplicitRangeExclusive(min,max){if(this.isEmpty)return false;return this.min_<min&&max<this.max_;},intersectsExplicitRangeInclusive(min,max){if(this.isEmpty)return false;return this.min_<=max&&min<=this.max_;},intersectsExplicitRangeExclusive(min,max){if(this.isEmpty)return false;return this.min_<max&&min<this.max_;},containsRangeInclusive(range){if(range.isEmpty)return false;return this.containsExplicitRangeInclusive(range.min_,range.max_);},containsRangeExclusive(range){if(range.isEmpty)return false;return this.containsExplicitRangeExclusive(range.min_,range.max_);},intersectsRangeInclusive(range){if(range.isEmpty)return false;return this.intersectsExplicitRangeInclusive(range.min_,range.max_);},intersectsRangeExclusive(range){if(range.isEmpty)return false;return this.intersectsExplicitRangeExclusive(range.min_,range.max_);},findExplicitIntersectionDuration(min,max){min=Math.max(this.min,min);max=Math.min(this.max,max);if(max<min)return 0;return max-min;},findIntersection(range){if(this.isEmpty||range.isEmpty)return new Range();const min=Math.max(this.min,range.min);const max=Math.min(this.max,range.max);if(max<min)return new Range();return Range.fromExplicitRange(min,max);},toJSON(){if(this.isEmpty_)return{isEmpty:true};return{isEmpty:false,max:this.max,min:this.min};},filterArray(sortedArray,opt_keyFunc,opt_this){if(this.isEmpty_)return[];const keyFunc=opt_keyFunc||(x=>x);function getValue(obj){return keyFunc.call(opt_this,obj);}\nconst first=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.min_===undefined||this.min_<=getValue(obj));const last=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.max_!==undefined&&this.max_<getValue(obj));return sortedArray.slice(first,last);}};Range.fromDict=function(d){if(d.isEmpty===true)return new Range();if(d.isEmpty===false){const range=new Range();range.min=d.min;range.max=d.max;return range;}\nthrow new Error('Not a range');};Range.fromExplicitRange=function(min,max){const range=new Range();range.min=min;range.max=max;return range;};Range.compareByMinTimes=function(a,b){if(!a.isEmpty&&!b.isEmpty)return a.min_-b.min_;if(a.isEmpty&&!b.isEmpty)return-1;if(!a.isEmpty&&b.isEmpty)return 1;return 0;};Range.findDifference=function(rangeA,rangeB){if(!rangeA||rangeA.duration<0||!rangeB||rangeB.duration<0){throw new Error(`Couldn't subtract ranges`);}\nconst resultRanges=[];if(rangeA.isEmpty)return resultRanges;if(rangeB.isEmpty)return[rangeA.clone()];const intersection=rangeA.findIntersection(rangeB);if(intersection.isEmpty){return[rangeA.clone()];}\nif(rangeA.duration===0&&rangeB.duration===0){if(intersection.empty)return[rangeA.clone()];else if(intersection.duration===0)return resultRanges;throw new Error(`Two points' intersection can only be a point or empty`);}\nconst leftRange=tr.b.math.Range.fromExplicitRange(rangeA.min,intersection.min);if(leftRange.duration>0){resultRanges.push(leftRange);}\nconst rightRange=tr.b.math.Range.fromExplicitRange(intersection.max,rangeA.max);if(rightRange.duration>0){resultRanges.push(rightRange);}\nreturn resultRanges;};Range.PERCENT_RANGE=Range.fromExplicitRange(0,1);Object.freeze(Range.PERCENT_RANGE);return{Range,};});'use strict';tr.exportTo('tr.model',function(){function EventRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(EventRegistry,options);EventRegistry.addEventListener('will-register',function(e){const metadata=e.typeInfo.metadata;if(metadata.name===undefined){throw new Error('Registered events must provide name metadata');}\nif(metadata.pluralName===undefined){throw new Error('Registered events must provide pluralName metadata');}\nif(metadata.subTypes===undefined){metadata.subTypes={};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=e.typeInfo.constructor;options.defaultConstructor=e.typeInfo.constructor;tr.b.decorateExtensionRegistry(metadata.subTypes,options);}else{if(!metadata.subTypes.register){throw new Error('metadata.subTypes must be an extension registry.');}}\ne.typeInfo.constructor.subTypes=metadata.subTypes;});let eventsByTypeName=undefined;EventRegistry.getEventTypeInfoByTypeName=function(typeName){if(eventsByTypeName===undefined){eventsByTypeName={};EventRegistry.getAllRegisteredTypeInfos().forEach(function(typeInfo){eventsByTypeName[typeInfo.metadata.name]=typeInfo;});}\nreturn eventsByTypeName[typeName];};EventRegistry.addEventListener('registry-changed',function(){eventsByTypeName=undefined;});function convertCamelCaseToTitleCase(name){let result=name.replace(/[A-Z]/g,' $&');result=result.charAt(0).toUpperCase()+result.slice(1);return result;}\nEventRegistry.getUserFriendlySingularName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.name;return convertCamelCaseToTitleCase(str);};EventRegistry.getUserFriendlyPluralName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.pluralName;return convertCamelCaseToTitleCase(str);};return{EventRegistry,};});'use strict';tr.exportTo('tr.model',function(){const EventRegistry=tr.model.EventRegistry;const RequestSelectionChangeEvent=tr.b.Event.bind(undefined,'requestSelectionChange',true,false);function EventSet(opt_events){this.bounds_=new tr.b.math.Range();this.events_=new Set();this.guid_=tr.b.GUID.allocateSimple();if(opt_events){if(opt_events instanceof Array){for(const event of opt_events){this.push(event);}}else if(opt_events instanceof EventSet){this.addEventSet(opt_events);}else{this.push(opt_events);}}}\nEventSet.prototype={__proto__:Object.prototype,get bounds(){return this.bounds_;},get duration(){if(this.bounds_.isEmpty)return 0;return this.bounds_.max-this.bounds_.min;},get length(){return this.events_.size;},get guid(){return this.guid_;},*[Symbol.iterator](){for(const event of this.events_){yield event;}},clear(){this.bounds_=new tr.b.math.Range();this.events_.clear();},push(...events){let numPushed;for(const event of events){if(event.guid===undefined){throw new Error('Event must have a GUID');}\nif(!this.events_.has(event)){this.events_.add(event);if(event.addBoundsToRange){if(this.bounds_!==undefined){event.addBoundsToRange(this.bounds_);}}}\nnumPushed++;}\nreturn numPushed;},contains(event){if(this.events_.has(event))return event;return undefined;},addEventSet(eventSet){for(const event of eventSet){this.push(event);}},intersectionIsEmpty(otherEventSet){return!this.some(event=>otherEventSet.contains(event));},equals(that){if(this.length!==that.length)return false;return this.every(event=>that.contains(event));},sortEvents(compare){const ary=this.toArray();ary.sort(compare);this.clear();for(const event of ary){this.push(event);}},getEventsOrganizedByBaseType(opt_pruneEmpty){const allTypeInfos=EventRegistry.getAllRegisteredTypeInfos();const events=this.getEventsOrganizedByCallback(function(event){let maxEventIndex=-1;let maxEventTypeInfo=undefined;allTypeInfos.forEach(function(eventTypeInfo,eventIndex){if(!(event instanceof eventTypeInfo.constructor))return;if(eventIndex>maxEventIndex){maxEventIndex=eventIndex;maxEventTypeInfo=eventTypeInfo;}});if(maxEventIndex===-1){throw new Error(`Unrecognized event type: ${event.constructor.name}`);}\nreturn maxEventTypeInfo.metadata.name;});if(!opt_pruneEmpty){allTypeInfos.forEach(function(eventTypeInfo){if(events[eventTypeInfo.metadata.name]===undefined){events[eventTypeInfo.metadata.name]=new EventSet();}});}\nreturn events;},getEventsOrganizedByTitle(){return this.getEventsOrganizedByCallback(function(event){if(event.title===undefined){throw new Error('An event didn\\'t have a title!');}\nreturn event.title;});},getEventsOrganizedByCallback(cb,opt_this){const groupedEvents=tr.b.groupIntoMap(this,cb,opt_this||this);const groupedEventsDict={};for(const[k,events]of groupedEvents){groupedEventsDict[k]=new EventSet(events);}\nreturn groupedEventsDict;},enumEventsOfType(type,func){for(const event of this){if(event instanceof type){func(event);}}},get userFriendlyName(){if(this.length===0){throw new Error('Empty event set');}\nconst eventsByBaseType=this.getEventsOrganizedByBaseType(true);const eventTypeName=Object.keys(eventsByBaseType)[0];if(this.length===1){const tmp=EventRegistry.getUserFriendlySingularName(eventTypeName);return tr.b.getOnlyElement(this.events_).userFriendlyName;}\nconst numEventTypes=Object.keys(eventsByBaseType).length;if(numEventTypes!==1){return this.length+' events of various types';}\nconst tmp=EventRegistry.getUserFriendlyPluralName(eventTypeName);return this.length+' '+tmp;},filter(fn,opt_this){const res=new EventSet();for(const event of this){if(fn.call(opt_this,event)){res.push(event);}}\nreturn res;},toArray(){const ary=[];for(const event of this){ary.push(event);}\nreturn ary;},forEach(fn,opt_this){for(const event of this){fn.call(opt_this,event);}},map(fn,opt_this){const res=[];for(const event of this){res.push(fn.call(opt_this,event));}\nreturn res;},every(fn,opt_this){for(const event of this){if(!fn.call(opt_this,event)){return false;}}\nreturn true;},some(fn,opt_this){for(const event of this){if(fn.call(opt_this,event)){return true;}}\nreturn false;},asDict(){const stableIds=[];for(const event of this){stableIds.push(event.stableId);}\nreturn{'events':stableIds};},asSet(){return this.events_;}};EventSet.IMMUTABLE_EMPTY_SET=(function(){const s=new EventSet();s.push=function(){throw new Error('Cannot push to an immutable event set');};s.addEventSet=function(){throw new Error('Cannot add to an immutable event set');};Object.freeze(s);return s;})();return{EventSet,RequestSelectionChangeEvent,};});'use strict';tr.exportTo('tr.b',function(){function clamp01(value){return Math.max(0,Math.min(1,value));}\nfunction Color(opt_r,opt_g,opt_b,opt_a){this.r=Math.floor(opt_r)||0;this.g=Math.floor(opt_g)||0;this.b=Math.floor(opt_b)||0;this.a=opt_a;}\nColor.fromString=function(str){let tmp;let values;if(str.substr(0,4)==='rgb('){tmp=str.substr(4,str.length-5);values=tmp.split(',').map(function(v){return v.replace(/^\\s+/,'','g');});if(values.length!==3){throw new Error('Malformatted rgb-expression');}\nreturn new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]));}\nif(str.substr(0,5)==='rgba('){tmp=str.substr(5,str.length-6);values=tmp.split(',').map(function(v){return v.replace(/^\\s+/,'','g');});if(values.length!==4){throw new Error('Malformatted rgb-expression');}\nreturn new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]),parseFloat(values[3]));}\nif(str[0]==='#'&&str.length===7){return new Color(parseInt(str.substr(1,2),16),parseInt(str.substr(3,2),16),parseInt(str.substr(5,2),16));}\nthrow new Error('Unrecognized string format.');};Color.lerp=function(a,b,percent){if(a.a!==undefined&&b.a!==undefined){return Color.lerpRGBA(a,b,percent);}\nreturn Color.lerpRGB(a,b,percent);};Color.lerpRGB=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b);};Color.lerpRGBA=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b,((b.a-a.a)*percent)+a.a);};Color.fromDict=function(dict){return new Color(dict.r,dict.g,dict.b,dict.a);};Color.fromHSLExplicit=function(h,s,l,a){let r;let g;let b;function hue2rgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p;}\nif(s===0){r=g=b=l;}else{const q=l<0.5?l*(1+s):l+s-l*s;const p=2*l-q;r=hue2rgb(p,q,h+1/3);g=hue2rgb(p,q,h);b=hue2rgb(p,q,h-1/3);}\nreturn new Color(Math.floor(r*255),Math.floor(g*255),Math.floor(b*255),a);};Color.fromHSL=function(hsl){return Color.fromHSLExplicit(hsl.h,hsl.s,hsl.l,hsl.a);};Color.prototype={clone(){const c=new Color();c.r=this.r;c.g=this.g;c.b=this.b;c.a=this.a;return c;},blendOver(bgColor){const oneMinusThisAlpha=1-this.a;const outA=this.a+bgColor.a*oneMinusThisAlpha;const bgBlend=(bgColor.a*oneMinusThisAlpha)/bgColor.a;return new Color(this.r*this.a+bgColor.r*bgBlend,this.g*this.a+bgColor.g*bgBlend,this.b*this.a+bgColor.b*bgBlend,outA);},brighten(opt_k){const k=opt_k||0.45;return new Color(Math.min(255,this.r+Math.floor(this.r*k)),Math.min(255,this.g+Math.floor(this.g*k)),Math.min(255,this.b+Math.floor(this.b*k)),this.a);},lighten(k,opt_maxL){const maxL=opt_maxL!==undefined?opt_maxL:1.0;const hsl=this.toHSL();hsl.l=Math.min(hsl.l+k,maxL);return Color.fromHSL(hsl);},darken(opt_k){let k;if(opt_k!==undefined){k=opt_k;}else{k=0.45;}\nreturn new Color(Math.min(255,this.r-Math.floor(this.r*k)),Math.min(255,this.g-Math.floor(this.g*k)),Math.min(255,this.b-Math.floor(this.b*k)),this.a);},desaturate(opt_desaturateFactor){let desaturateFactor;if(opt_desaturateFactor!==undefined){desaturateFactor=opt_desaturateFactor;}else{desaturateFactor=1;}\nconst hsl=this.toHSL();hsl.s=clamp01(hsl.s*(1-desaturateFactor));return Color.fromHSL(hsl);},withAlpha(a){return new Color(this.r,this.g,this.b,a);},toString(){if(this.a!==undefined){return'rgba('+\nthis.r+','+this.g+','+\nthis.b+','+this.a+')';}\nreturn'rgb('+this.r+','+this.g+','+this.b+')';},toHSL(){const r=this.r/255;const g=this.g/255;const b=this.b/255;const max=Math.max(r,g,b);const min=Math.min(r,g,b);let h;let s;const l=(max+min)/2;if(min===max){h=0;s=0;}else{const delta=max-min;if(l>0.5){s=delta/(2-max-min);}else{s=delta/(max+min);}\nif(r===max){h=(g-b)/delta;if(g<b)h+=6;}else if(g===max){h=2+((b-r)/delta);}else{h=4+((r-g)/delta);}\nh/=6;}\nreturn{h,s,l,a:this.a};},toStringWithAlphaOverride(alpha){return'rgba('+\nthis.r+','+this.g+','+\nthis.b+','+alpha+')';}};return{Color,};});'use strict';tr.exportTo('tr.b',function(){function SinebowColorGenerator(opt_a,opt_brightness){this.a_=(opt_a===undefined)?1:opt_a;this.brightness_=(opt_brightness===undefined)?1:opt_brightness;this.colorIndex_=0;this.keyToColor={};}\nSinebowColorGenerator.prototype={colorForKey(key){if(!this.keyToColor[key]){this.keyToColor[key]=this.nextColor();}\nreturn this.keyToColor[key];},nextColor(){const components=SinebowColorGenerator.nthColor(this.colorIndex_++);return tr.b.Color.fromString(SinebowColorGenerator.calculateColor(components[0],components[1],components[2],this.a_,this.brightness_));}};SinebowColorGenerator.PHI=(1+Math.sqrt(5))/2;SinebowColorGenerator.sinebow=function(h){h+=0.5;h=-h;let r=Math.sin(Math.PI*h);let g=Math.sin(Math.PI*(h+1/3));let b=Math.sin(Math.PI*(h+2/3));r*=r;g*=g;b*=b;const y=2*(0.2989*r+0.5870*g+0.1140*b);r/=y;g/=y;b/=y;return[256*r,256*g,256*b];};SinebowColorGenerator.nthColor=function(n){return SinebowColorGenerator.sinebow(n*this.PHI);};SinebowColorGenerator.calculateColor=function(r,g,b,a,brightness){if(brightness<=1){r*=brightness;g*=brightness;b*=brightness;}else{r=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),r,255);g=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),g,255);b=tr.b.math.lerp(tr.b.math.normalize(brightness,1,2),b,255);}\nr=Math.round(r);g=Math.round(g);b=Math.round(b);return'rgba('+r+','+g+','+b+', '+a+')';};return{SinebowColorGenerator,};});'use strict';tr.exportTo('tr.b',function(){const numGeneralPurposeColorIds=23;const generalPurposeColors=new Array(numGeneralPurposeColorIds);const sinebowAlpha=1.0;const sinebowBrightness=1.5;const sinebowColorGenerator=new tr.b.SinebowColorGenerator(sinebowAlpha,sinebowBrightness);for(let i=0;i<numGeneralPurposeColorIds;i++){generalPurposeColors[i]=sinebowColorGenerator.nextColor();}\nconst reservedColorsByName={thread_state_uninterruptible:new tr.b.Color(182,125,143),thread_state_iowait:new tr.b.Color(255,140,0),thread_state_running:new tr.b.Color(126,200,148),thread_state_runnable:new tr.b.Color(133,160,210),thread_state_sleeping:new tr.b.Color(240,240,240),thread_state_unknown:new tr.b.Color(199,155,125),background_memory_dump:new tr.b.Color(0,180,180),light_memory_dump:new tr.b.Color(0,0,180),detailed_memory_dump:new tr.b.Color(180,0,180),vsync_highlight_color:new tr.b.Color(0,0,255),generic_work:new tr.b.Color(125,125,125),good:new tr.b.Color(0,125,0),bad:new tr.b.Color(180,125,0),terrible:new tr.b.Color(180,0,0),black:new tr.b.Color(0,0,0),grey:new tr.b.Color(221,221,221),white:new tr.b.Color(255,255,255),yellow:new tr.b.Color(255,255,0),olive:new tr.b.Color(100,100,0),rail_response:new tr.b.Color(67,135,253),rail_animation:new tr.b.Color(244,74,63),rail_idle:new tr.b.Color(238,142,0),rail_load:new tr.b.Color(13,168,97),startup:new tr.b.Color(230,230,0),heap_dump_stack_frame:new tr.b.Color(128,128,128),heap_dump_object_type:new tr.b.Color(0,0,255),heap_dump_child_node_arrow:new tr.b.Color(204,102,0),cq_build_running:new tr.b.Color(255,255,119),cq_build_passed:new tr.b.Color(153,238,102),cq_build_failed:new tr.b.Color(238,136,136),cq_build_abandoned:new tr.b.Color(187,187,187),cq_build_attempt_runnig:new tr.b.Color(222,222,75),cq_build_attempt_passed:new tr.b.Color(103,218,35),cq_build_attempt_failed:new tr.b.Color(197,81,81)};const numReservedColorIds=Object.keys(reservedColorsByName).length;const numColorsPerVariant=numGeneralPurposeColorIds+numReservedColorIds;function ColorScheme(){}\nconst paletteBase=[];paletteBase.push.apply(paletteBase,generalPurposeColors);paletteBase.push.apply(paletteBase,Object.values(reservedColorsByName));ColorScheme.colors=[];ColorScheme.properties={};ColorScheme.properties={numColorsPerVariant,};function pushVariant(func){const variantColors=paletteBase.map(func);ColorScheme.colors.push.apply(ColorScheme.colors,variantColors);}\npushVariant(function(c){return c;});ColorScheme.properties.brightenedOffsets=[];ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.3,0.8);});ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.48,0.85);});ColorScheme.properties.brightenedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.lighten(0.65,0.9);});ColorScheme.properties.dimmedOffsets=[];ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate();});ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate(0.5);});ColorScheme.properties.dimmedOffsets.push(ColorScheme.colors.length);pushVariant(function(c){return c.desaturate(0.3);});ColorScheme.colorsAsStrings=ColorScheme.colors.map(function(c){return c.toString();});const reservedColorNameToIdMap=(function(){const m=new Map();let i=generalPurposeColors.length;for(const key of Object.keys(reservedColorsByName)){m.set(key,i++);}\nreturn m;})();ColorScheme.getColorIdForReservedName=function(name){const id=reservedColorNameToIdMap.get(name);if(id===undefined){throw new Error('Unrecognized color '+name);}\nreturn id;};ColorScheme.getColorForReservedNameAsString=function(reservedName){const id=ColorScheme.getColorIdForReservedName(reservedName);return ColorScheme.colorsAsStrings[id];};ColorScheme.getStringHash=function(name){let hash=0;for(let i=0;i<name.length;++i){hash=(hash+37*hash+11*name.charCodeAt(i))%0xFFFFFFFF;}\nreturn hash;};const stringColorIdCache=new Map();ColorScheme.getColorIdForGeneralPurposeString=function(string){if(stringColorIdCache.get(string)===undefined){const hash=ColorScheme.getStringHash(string);stringColorIdCache.set(string,hash%numGeneralPurposeColorIds);}\nreturn stringColorIdCache.get(string);};ColorScheme.getAnotherColorId=function(colorId,n){return(colorId+n)%numColorsPerVariant;};ColorScheme.getVariantColorId=function(colorId,offset){return colorId+offset;};return{ColorScheme,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const SelectionState={NONE:0,SELECTED:ColorScheme.properties.brightenedOffsets[0],HIGHLIGHTED:ColorScheme.properties.brightenedOffsets[1],DIMMED:ColorScheme.properties.dimmedOffsets[0],BRIGHTENED0:ColorScheme.properties.brightenedOffsets[0],BRIGHTENED1:ColorScheme.properties.brightenedOffsets[1],BRIGHTENED2:ColorScheme.properties.brightenedOffsets[2],DIMMED0:ColorScheme.properties.dimmedOffsets[0],DIMMED1:ColorScheme.properties.dimmedOffsets[1],DIMMED2:ColorScheme.properties.dimmedOffsets[2]};const brighteningLevels=[SelectionState.NONE,SelectionState.BRIGHTENED0,SelectionState.BRIGHTENED1,SelectionState.BRIGHTENED2];SelectionState.getFromBrighteningLevel=function(level){return brighteningLevels[level];};const dimmingLevels=[SelectionState.DIMMED0,SelectionState.DIMMED1,SelectionState.DIMMED2];SelectionState.getFromDimmingLevel=function(level){return dimmingLevels[level];};return{SelectionState,};});'use strict';tr.exportTo('tr.model',function(){const SelectionState=tr.model.SelectionState;function SelectableItem(modelItem){this.modelItem_=modelItem;}\nSelectableItem.prototype={get modelItem(){return this.modelItem_;},get selected(){return this.selectionState===SelectionState.SELECTED;},addToSelection(selection){const modelItem=this.modelItem_;if(!modelItem)return;selection.push(modelItem);},addToTrackMap(eventToTrackMap,track){const modelItem=this.modelItem_;if(!modelItem)return;eventToTrackMap.addEvent(modelItem,track);}};return{SelectableItem,};});'use strict';tr.exportTo('tr.model',function(){const SelectableItem=tr.model.SelectableItem;const SelectionState=tr.model.SelectionState;const IMMUTABLE_EMPTY_SET=tr.model.EventSet.IMMUTABLE_EMPTY_SET;function Event(){SelectableItem.call(this,this);this.guid_=tr.b.GUID.allocateSimple();this.selectionState=SelectionState.NONE;this.info=undefined;}\nEvent.prototype={__proto__:SelectableItem.prototype,get guid(){return this.guid_;},get stableId(){return undefined;},get range(){const range=new tr.b.math.Range();this.addBoundsToRange(range);return range;},associatedAlerts:IMMUTABLE_EMPTY_SET,addAssociatedAlert(alert){if(this.associatedAlerts===IMMUTABLE_EMPTY_SET){this.associatedAlerts=new tr.model.EventSet();}\nthis.associatedAlerts.push(alert);},addBoundsToRange(range){}};return{Event,};});'use strict';tr.exportTo('tr.model',function(){function TimedEvent(start){tr.model.Event.call(this);this.start=start;this.duration=0;this.cpuStart=undefined;this.cpuDuration=undefined;this.contexts=Object.freeze([]);}\nTimedEvent.prototype={__proto__:tr.model.Event.prototype,get end(){return this.start+this.duration;},get boundsRange(){return tr.b.math.Range.fromExplicitRange(this.start,this.end);},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);},bounds(that,opt_precisionUnit){if(opt_precisionUnit===undefined){opt_precisionUnit=tr.b.TimeDisplayModes.ms;}\nconst startsBefore=opt_precisionUnit.roundedLess(that.start,this.start);const endsAfter=opt_precisionUnit.roundedLess(this.end,that.end);return!startsBefore&&!endsAfter;}};return{TimedEvent,};});'use strict';tr.exportTo('tr.model',function(){function AsyncSlice(category,title,colorId,start,args,duration,opt_isTopLevel,opt_cpuStart,opt_cpuDuration,opt_argsStripped){tr.model.TimedEvent.call(this,start);this.category=category||'';this.originalTitle=title;this.title=title;this.colorId=colorId;this.args=args;this.startStackFrame=undefined;this.endStackFrame=undefined;this.didNotFinish=false;this.important=false;this.subSlices=[];this.parentContainer_=undefined;this.id=undefined;this.startThread=undefined;this.endThread=undefined;this.cpuStart=undefined;this.cpuDuration=undefined;this.argsStripped=false;this.startStackFrame=undefined;this.endStackFrame=undefined;this.duration=duration;this.isTopLevel=(opt_isTopLevel===true);if(opt_cpuStart!==undefined){this.cpuStart=opt_cpuStart;}\nif(opt_cpuDuration!==undefined){this.cpuDuration=opt_cpuDuration;}\nif(opt_argsStripped!==undefined){this.argsStripped=opt_argsStripped;}}\nAsyncSlice.prototype={__proto__:tr.model.TimedEvent.prototype,get analysisTypeName(){return this.title;},get parentContainer(){return this.parentContainer_;},set parentContainer(parentContainer){this.parentContainer_=parentContainer;for(let i=0;i<this.subSlices.length;i++){const subSlice=this.subSlices[i];if(subSlice.parentContainer===undefined){subSlice.parentContainer=parentContainer;}}},get viewSubGroupTitle(){return this.title;},get viewSubGroupGroupingKey(){return undefined;},get userFriendlyName(){return'Async slice '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){const parentAsyncSliceGroup=this.parentContainer.asyncSliceGroup;return parentAsyncSliceGroup.stableId+'.'+\nparentAsyncSliceGroup.slices.indexOf(this);},*findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this){if(eventPredicate(this)){yield this;return;}\nfor(const s of this.subSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},findDescendentSlice(targetTitle){if(!this.subSlices)return undefined;for(let i=0;i<this.subSlices.length;i++){if(this.subSlices[i].title===targetTitle){return this.subSlices[i];}\nconst slice=this.subSlices[i].findDescendentSlice(targetTitle);if(slice)return slice;}\nreturn undefined;},*enumerateAllDescendents(){for(const slice of this.subSlices){yield slice;}\nfor(const slice of this.subSlices){if(slice.enumerateAllDescendents!==undefined){yield*slice.enumerateAllDescendents();}}},compareTo(that){return this.title.localeCompare(that.title);}};tr.model.EventRegistry.register(AsyncSlice,{name:'asyncSlice',pluralName:'asyncSlices'});return{AsyncSlice,};});'use strict';tr.exportTo('tr.model.helpers',function(){const MAIN_FRAMETIME_TYPE='main_frametime_type';const IMPL_FRAMETIME_TYPE='impl_frametime_type';const MAIN_RENDERING_STATS='BenchmarkInstrumentation::MainThreadRenderingStats';const IMPL_RENDERING_STATS='BenchmarkInstrumentation::ImplThreadRenderingStats';function getSlicesIntersectingRange(rangeOfInterest,slices){const slicesInFilterRange=[];for(let i=0;i<slices.length;i++){const slice=slices[i];if(rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end)){slicesInFilterRange.push(slice);}}\nreturn slicesInFilterRange;}\nfunction ChromeProcessHelper(modelHelper,process){this.modelHelper=modelHelper;this.process=process;this.telemetryInternalRanges_=undefined;}\nChromeProcessHelper.prototype={get pid(){return this.process.pid;},isTelemetryInternalEvent(slice){if(this.telemetryInternalRanges_===undefined){this.findTelemetryInternalRanges_();}\nfor(const range of this.telemetryInternalRanges_){if(range.containsExplicitRangeInclusive(slice.start,slice.end)){return true;}}\nreturn false;},findTelemetryInternalRanges_(){this.telemetryInternalRanges_=[];let start=0;for(const thread of Object.values(this.process.threads)){for(const slice of thread.asyncSliceGroup.getDescendantEvents()){if(/^telemetry\\.internal\\..*\\.start$/.test(slice.title)){start=slice.start;}else if(/^telemetry\\.internal\\..*\\.end$/.test(slice.title)&&start!==undefined){this.telemetryInternalRanges_.push(tr.b.math.Range.fromExplicitRange(start,slice.end));start=undefined;}}}},getFrameEventsInRange(frametimeType,range){const titleToGet=(frametimeType===MAIN_FRAMETIME_TYPE?MAIN_RENDERING_STATS:IMPL_RENDERING_STATS);const frameEvents=[];for(const event of this.process.getDescendantEvents()){if(event.title===titleToGet){if(range.intersectsExplicitRangeInclusive(event.start,event.end)){frameEvents.push(event);}}}\nframeEvents.sort(function(a,b){return a.start-b.start;});return frameEvents;}};function getFrametimeDataFromEvents(frameEvents){const frametimeData=[];for(let i=1;i<frameEvents.length;i++){const diff=frameEvents[i].start-frameEvents[i-1].start;frametimeData.push({'x':frameEvents[i].start,'frametime':diff});}\nreturn frametimeData;}\nreturn{ChromeProcessHelper,MAIN_FRAMETIME_TYPE,IMPL_FRAMETIME_TYPE,MAIN_RENDERING_STATS,IMPL_RENDERING_STATS,getSlicesIntersectingRange,getFrametimeDataFromEvents,};});'use strict';tr.exportTo('tr.model.helpers',function(){function ChromeBrowserHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);this.mainThread_=process.findAtMostOneThreadNamed('CrBrowserMain');if(!process.name){process.name=ChromeBrowserHelper.PROCESS_NAME;}}\nChromeBrowserHelper.PROCESS_NAME='Browser';ChromeBrowserHelper.isBrowserProcess=function(process){return!!process.findAtMostOneThreadNamed('CrBrowserMain');};ChromeBrowserHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype,get browserName(){const hasInProcessRendererThread=this.process.findAllThreadsNamed('Chrome_InProcRendererThread').length>0;return hasInProcessRendererThread?'webview':'chrome';},get mainThread(){return this.mainThread_;},get rendererHelpers(){return this.modelHelper.rendererHelpers;},getLoadingEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title.indexOf('WebContentsImpl Loading')===0&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getCommitProvisionalLoadEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title==='RenderFrameImpl::didCommitProvisionalLoad'&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},get hasLatencyEvents(){let hasLatency=false;for(const thread of this.modelHelper.model.getAllThreads()){for(const event of thread.getDescendantEvents()){if(!event.isTopLevel)continue;if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){continue;}\nhasLatency=true;}}\nreturn hasLatency;},getLatencyEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return(slice.title.indexOf('InputLatency')===0)&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getAllAsyncSlicesMatching(pred,opt_this){const events=[];this.iterAllThreads(function(thread){for(const slice of thread.getDescendantEvents()){if(pred.call(opt_this,slice)){events.push(slice);}}});return events;},iterAllThreads(func,opt_this){for(const thread of Object.values(this.process.threads)){func.call(opt_this,thread);}\nfor(const rendererHelper of Object.values(this.rendererHelpers)){const rendererProcess=rendererHelper.process;for(const thread of Object.values(rendererProcess.threads)){func.call(opt_this,thread);}}}};return{ChromeBrowserHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function ChromeGpuHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);if(!process.name){process.name=ChromeGpuHelper.PROCESS_NAME;}}\nChromeGpuHelper.PROCESS_NAME='GPU Process';ChromeGpuHelper.isGpuProcess=function(process){if(process.findAtMostOneThreadNamed('CrBrowserMain')||process.findAtMostOneThreadNamed('CrRendererMain')){return false;}\nreturn process.findAllThreadsNamed('CrGpuMain').length>0;};ChromeGpuHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype};return{ChromeGpuHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const NET_CATEGORIES=new Set(['net','netlog','disabled-by-default-netlog','disabled-by-default-network']);class ChromeThreadHelper{constructor(thread){this.thread=thread;}\ngetNetworkEvents(){const networkEvents=[];for(const slice of this.thread.asyncSliceGroup.slices){const categories=tr.b.getCategoryParts(slice.category);const isNetEvent=category=>NET_CATEGORIES.has(category);if(categories.filter(isNetEvent).length===0)continue;networkEvents.push(slice);}\nreturn networkEvents;}}\nreturn{ChromeThreadHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const ChromeThreadHelper=tr.model.helpers.ChromeThreadHelper;function ChromeRendererHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);this.mainThread_=process.findAtMostOneThreadNamed('CrRendererMain')||process.findAtMostOneThreadNamed('Chrome_InProcRendererThread');this.compositorThread_=process.findAtMostOneThreadNamed('Compositor');this.rasterWorkerThreads_=process.findAllThreadsMatching(function(t){if(t.name===undefined)return false;if(t.name.startsWith('CompositorTileWorker'))return true;if(t.name.startsWith('CompositorRasterWorker'))return true;return false;});this.dedicatedWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('DedicatedWorker');});this.foregroundWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('ThreadPoolForegroundWorker');});if(!process.name){process.name=ChromeRendererHelper.PROCESS_NAME;}}\nChromeRendererHelper.PROCESS_NAME='Renderer';ChromeRendererHelper.isRenderProcess=function(process){if(process.findAtMostOneThreadNamed('CrRendererMain'))return true;if(process.findAtMostOneThreadNamed('Compositor'))return true;return false;};ChromeRendererHelper.isTracingProcess=function(process){return process.labels!==undefined&&process.labels.length===1&&process.labels[0]==='chrome://tracing';};ChromeRendererHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype,get mainThread(){return this.mainThread_;},get compositorThread(){return this.compositorThread_;},get rasterWorkerThreads(){return this.rasterWorkerThreads_;},get dedicatedWorkerThreads(){return this.dedicatedWorkerThreads_;},get foregroundWorkerThreads(){return this.foregroundWorkerThreads_;},get isChromeTracingUI(){return ChromeRendererHelper.isTracingProcess(this.process);},};return{ChromeRendererHelper,};});'use strict';tr.exportTo('tr.model.um',function(){class Segment extends tr.model.TimedEvent{constructor(start,duration){super(start);this.duration=duration;this.expectations_=[];}\nget expectations(){return this.expectations_;}\nclone(){const clone=new Segment(this.start,this.duration);clone.expectations.push(...this.expectations);return clone;}\naddSegment(other){this.duration+=other.duration;this.expectations.push(...other.expectations);}}\nreturn{Segment,};});'use strict';tr.exportTo('tr.model.helpers',function(){const GESTURE_EVENT='SyntheticGestureController::running';const IR_REG_EXP=/Interaction\\.([^/]+)(\\/[^/]*)?$/;const ChromeRendererHelper=tr.model.helpers.ChromeRendererHelper;class TelemetryHelper{constructor(modelHelper){this.modelHelper=modelHelper;this.renderersWithIR_=undefined;this.irSegments_=undefined;this.uiSegments_=undefined;this.animationSegments_=undefined;}\nget renderersWithIR(){this.findIRs_();return this.renderersWithIR_;}\nget irSegments(){this.findIRs_();return this.irSegments_;}\nget uiSegments(){this.findIRs_();return this.uiSegments_;}\nget animationSegments(){if(this.animationSegments_===undefined){const model=this.modelHelper.model;this.animationSegments_=model.userModel.segments.filter(segment=>segment.expectations.find(ue=>ue instanceof tr.model.um.AnimationExpectation));this.animationSegments_.sort((x,y)=>x.start-y.start);}\nreturn this.animationSegments_;}\nfindIRs_(){if(this.irSegments_!==undefined)return;this.renderersWithIR_=[];const gestureEvents=[];const interactionRecords=[];const processes=Object.values(this.modelHelper.rendererHelpers).concat(this.modelHelper.browserHelpers).map(processHelper=>processHelper.process);for(const process of processes){let foundIR=false;for(const thread of Object.values(process.threads)){for(const slice of thread.asyncSliceGroup.slices){if(slice.title===GESTURE_EVENT){gestureEvents.push(slice);}else if(IR_REG_EXP.test(slice.title)){interactionRecords.push(slice);foundIR=true;}}}\nif(foundIR&&ChromeRendererHelper.isRenderProcess(process)&&!ChromeRendererHelper.isTracingProcess(process)){this.renderersWithIR_.push(new ChromeRendererHelper(this.modelHelper,process));}}\nthis.irSegments_=[];this.uiSegments_=[];for(const ir of interactionRecords){const parts=IR_REG_EXP.exec(ir.title);let gestureEventFound=false;if(parts[1].startsWith('Gesture_')){for(const gestureEvent of gestureEvents){if(ir.boundsRange.intersectsRangeInclusive(gestureEvent.boundsRange)){this.irSegments_.push(new tr.model.um.Segment(gestureEvent.start,gestureEvent.duration));gestureEventFound=true;break;}}}else if(parts[1].startsWith('ui_')){this.uiSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}\nif(!gestureEventFound){this.irSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}}\nthis.irSegments_.sort((x,y)=>x.start-y.start);this.uiSegments_.sort((x,y)=>x.start-y.start);}}\nreturn{TelemetryHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function findChromeBrowserProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeBrowserHelper.isBrowserProcess);}\nfunction findChromeRenderProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeRendererHelper.isRenderProcess);}\nfunction findChromeGpuProcess(model){const gpuProcesses=model.getAllProcesses(tr.model.helpers.ChromeGpuHelper.isGpuProcess);if(gpuProcesses.length!==1)return undefined;return gpuProcesses[0];}\nfunction findTelemetrySurfaceFlingerProcess(model){const surfaceFlingerProcesses=model.getAllProcesses(process=>(process.name==='SurfaceFlinger'));if(surfaceFlingerProcesses.length!==1)return undefined;return surfaceFlingerProcesses[0];}\nfunction ChromeModelHelper(model){this.model_=model;const browserProcesses=findChromeBrowserProcesses(model);this.browserHelpers_=browserProcesses.map(p=>new tr.model.helpers.ChromeBrowserHelper(this,p));const gpuProcess=findChromeGpuProcess(model);if(gpuProcess){this.gpuHelper_=new tr.model.helpers.ChromeGpuHelper(this,gpuProcess);}else{this.gpuHelper_=undefined;}\nconst rendererProcesses_=findChromeRenderProcesses(model);this.rendererHelpers_={};rendererProcesses_.forEach(function(renderProcess){const rendererHelper=new tr.model.helpers.ChromeRendererHelper(this,renderProcess);this.rendererHelpers_[rendererHelper.pid]=rendererHelper;},this);this.surfaceFlingerProcess_=findTelemetrySurfaceFlingerProcess(model);this.chromeBounds_=undefined;this.telemetryHelper_=new tr.model.helpers.TelemetryHelper(this);}\nChromeModelHelper.guid=tr.b.GUID.allocateSimple();ChromeModelHelper.supportsModel=function(model){if(findChromeBrowserProcesses(model).length)return true;if(findChromeRenderProcesses(model).length)return true;return false;};ChromeModelHelper.prototype={get pid(){throw new Error('woah');},get process(){throw new Error('woah');},get model(){return this.model_;},get browserProcess(){if(this.browserHelper===undefined)return undefined;return this.browserHelper.process;},get browserHelper(){return this.browserHelpers_[0];},get browserHelpers(){return this.browserHelpers_;},get gpuHelper(){return this.gpuHelper_;},get rendererHelpers(){return this.rendererHelpers_;},get surfaceFlingerProcess(){return this.surfaceFlingerProcess_;},get chromeBounds(){if(!this.chromeBounds_){this.chromeBounds_=new tr.b.math.Range();for(const browserHelper of Object.values(this.browserHelpers)){this.chromeBounds_.addRange(browserHelper.process.bounds);}\nfor(const rendererHelper of Object.values(this.rendererHelpers)){this.chromeBounds_.addRange(rendererHelper.process.bounds);}\nif(this.gpuHelper){this.chromeBounds_.addRange(this.gpuHelper.process.bounds);}}\nif(this.chromeBounds_.isEmpty){return undefined;}\nreturn this.chromeBounds_;},get telemetryHelper(){return this.telemetryHelper_;}};return{ChromeModelHelper,};});'use strict';tr.exportTo('tr.e.cc',function(){const AsyncSlice=tr.model.AsyncSlice;const EventSet=tr.model.EventSet;const UI_COMP_NAME='INPUT_EVENT_LATENCY_UI_COMPONENT';const ORIGINAL_COMP_NAME='INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT';const BEGIN_COMP_NAME='INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT';const END_COMP_NAME='INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT';const LEGACY_END_COMP_NAME='INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT';const MAIN_RENDERER_THREAD_NAME='CrRendererMain';const COMPOSITOR_THREAD_NAME='Compositor';const OLD_IPC_FLOW_EVENT='disabled-by-default-ipc.flow';const OLD_POSTTASK_FLOW_EVENT='disabled-by-default-toplevel.flow';const NEW_POSTTASK_FLOW_EVENT='toplevel.flow';const INPUT_EVENT_TYPE_NAMES={CHAR:'Char',CLICK:'GestureClick',CONTEXT_MENU:'ContextMenu',FLING_CANCEL:'GestureFlingCancel',FLING_START:'GestureFlingStart',KEY_DOWN:'KeyDown',KEY_DOWN_RAW:'RawKeyDown',KEY_UP:'KeyUp',LATENCY_SCROLL_UPDATE:'ScrollUpdate',MOUSE_DOWN:'MouseDown',MOUSE_ENTER:'MouseEnter',MOUSE_LEAVE:'MouseLeave',MOUSE_MOVE:'MouseMove',MOUSE_UP:'MouseUp',MOUSE_WHEEL:'MouseWheel',PINCH_BEGIN:'GesturePinchBegin',PINCH_END:'GesturePinchEnd',PINCH_UPDATE:'GesturePinchUpdate',SCROLL_BEGIN:'GestureScrollBegin',SCROLL_END:'GestureScrollEnd',SCROLL_UPDATE:'GestureScrollUpdate',SCROLL_UPDATE_RENDERER:'ScrollUpdate',SHOW_PRESS:'GestureShowPress',TAP:'GestureTap',TAP_CANCEL:'GestureTapCancel',TAP_DOWN:'GestureTapDown',TOUCH_CANCEL:'TouchCancel',TOUCH_END:'TouchEnd',TOUCH_MOVE:'TouchMove',TOUCH_START:'TouchStart',UNKNOWN:'UNKNOWN'};function InputLatencyAsyncSlice(){AsyncSlice.apply(this,arguments);this.associatedEvents_=new EventSet();this.typeName_=undefined;if(!this.isLegacyEvent){this.determineModernTypeName_();}}\nInputLatencyAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get isLegacyEvent(){return this.title==='InputLatency';},get typeName(){if(!this.typeName_){this.determineLegacyTypeName_();}\nreturn this.typeName_;},checkTypeName_(){if(!this.typeName_){throw new Error('Unable to determine typeName');}\nlet found=false;for(const typeName in INPUT_EVENT_TYPE_NAMES){if(this.typeName===INPUT_EVENT_TYPE_NAMES[typeName]){found=true;break;}}\nif(!found){this.typeName_=INPUT_EVENT_TYPE_NAMES.UNKNOWN;}},determineModernTypeName_(){const lastColonIndex=this.title.lastIndexOf(':');if(lastColonIndex<0)return;const characterAfterLastColonIndex=lastColonIndex+1;this.typeName_=this.title.slice(characterAfterLastColonIndex);this.checkTypeName_();},determineLegacyTypeName_(){for(const subSlice of this.enumerateAllDescendents()){const subSliceIsAInputLatencyAsyncSlice=(subSlice instanceof InputLatencyAsyncSlice);if(!subSliceIsAInputLatencyAsyncSlice)continue;if(!subSlice.typeName)continue;if(this.typeName_&&subSlice.typeName_){const subSliceHasDifferentTypeName=(this.typeName_!==subSlice.typeName_);if(subSliceHasDifferentTypeName){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() '+' found multiple typeNames');}}\nthis.typeName_=subSlice.typeName_;}\nif(!this.typeName_){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() failed');}\nthis.checkTypeName_();},getRendererHelper(sourceSlices){const traceModel=this.startThread.parent.model;const modelHelper=traceModel.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper)return undefined;let mainThread=undefined;let compositorThread=undefined;for(const i in sourceSlices){if(sourceSlices[i].parentContainer.name===MAIN_RENDERER_THREAD_NAME){mainThread=sourceSlices[i].parentContainer;}else if(sourceSlices[i].parentContainer.name===COMPOSITOR_THREAD_NAME){compositorThread=sourceSlices[i].parentContainer;}\nif(mainThread&&compositorThread)break;}\nconst rendererHelpers=modelHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(let i=0;i<pids.length;i++){const pid=pids[i];const rendererHelper=rendererHelpers[pid];if(rendererHelper.mainThread===mainThread||rendererHelper.compositorThread===compositorThread){return rendererHelper;}}\nreturn undefined;},addEntireSliceHierarchy(slice){this.associatedEvents_.push(slice);slice.iterateAllSubsequentSlices(function(subsequentSlice){this.associatedEvents_.push(subsequentSlice);},this);},addDirectlyAssociatedEvents(flowEvents){const slices=[];flowEvents.forEach(function(flowEvent){this.associatedEvents_.push(flowEvent);const newSource=flowEvent.startSlice.mostTopLevelSlice;if(slices.indexOf(newSource)===-1){slices.push(newSource);}},this);const lastFlowEvent=flowEvents[flowEvents.length-1];const lastSource=lastFlowEvent.endSlice.mostTopLevelSlice;if(slices.indexOf(lastSource)===-1){slices.push(lastSource);}\nreturn slices;},belongToOtherInputs(slice,flowEvents){let fromOtherInputs=false;slice.iterateEntireHierarchy(function(subsequentSlice){if(fromOtherInputs)return;subsequentSlice.inFlowEvents.forEach(function(inflow){if(fromOtherInputs)return;if(inflow.category.indexOf('input')>-1){if(flowEvents.indexOf(inflow)===-1){fromOtherInputs=true;}}},this);},this);return fromOtherInputs;},triggerOtherInputs(event,flowEvents){if(event.outFlowEvents===undefined||event.outFlowEvents.length===0){return false;}\nconst flow=event.outFlowEvents[0];const isPostTask=flow.category===NEW_POSTTASK_FLOW_EVENT||flow.category===OLD_POSTTASK_FLOW_EVENT;if(!isPostTask||!flow.endSlice){return false;}\nconst endSlice=flow.endSlice;if(this.belongToOtherInputs(endSlice.mostTopLevelSlice,flowEvents)){return true;}\nreturn false;},followSubsequentSlices(event,queue,visited,flowEvents){let stopFollowing=false;let inputAck=false;event.iterateAllSubsequentSlices(function(slice){if(stopFollowing)return;if(slice.title==='TaskQueueManager::RunTask')return;if(slice.title==='ThreadProxy::ScheduledActionSendBeginMainFrame'){return;}\nif(slice.title==='Scheduler::ScheduleBeginImplFrameDeadline'){if(this.triggerOtherInputs(slice,flowEvents))return;}\nif(slice.title==='CompositorImpl::PostComposite'){if(this.triggerOtherInputs(slice,flowEvents))return;}\nif(slice.title==='InputRouterImpl::ProcessInputEventAck'){inputAck=true;}\nif(inputAck&&slice.title==='InputRouterImpl::FilterAndSendWebInputEvent'){stopFollowing=true;}\nthis.followCurrentSlice(slice,queue,visited);},this);},followCurrentSlice(event,queue,visited){event.outFlowEvents.forEach(function(outflow){if((outflow.category===NEW_POSTTASK_FLOW_EVENT||outflow.category===OLD_POSTTASK_FLOW_EVENT||outflow.category===OLD_IPC_FLOW_EVENT)&&outflow.endSlice){this.associatedEvents_.push(outflow);const nextEvent=outflow.endSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);queue.push(nextEvent);}}},this);},backtraceFromDraw(beginImplFrame,visited){const pendingEventQueue=[];pendingEventQueue.push(beginImplFrame.mostTopLevelSlice);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);event.inFlowEvents.forEach(function(inflow){if(inflow.category===POSTTASK_FLOW_EVENT&&inflow.startSlice){const nextEvent=inflow.startSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);pendingEventQueue.push(nextEvent);}}},this);}},sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices){rasterWorkerThreads.forEach(function(rasterizer){Array.prototype.push.apply(sortedRasterizerSlices,rasterizer.sliceGroup.slices);},this);sortedRasterizerSlices.sort(function(a,b){if(a.start!==b.start){return a.start-b.start;}\nreturn a.guid-b.guid;});},addRasterizationEvents(prepareTiles,rendererHelper,visited,flowEvents,sortedRasterizerSlices){if(!prepareTiles.args.prepare_tiles_id)return;if(!rendererHelper||!rendererHelper.rasterWorkerThreads){return;}\nconst rasterWorkerThreads=rendererHelper.rasterWorkerThreads;const prepareTileId=prepareTiles.args.prepare_tiles_id;const pendingEventQueue=[];if(sortedRasterizerSlices.length===0){this.sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices);}\nlet numFinishedTasks=0;const RASTER_TASK_TITLE='RasterizerTaskImpl::RunOnWorkerThread';const IMAGEDECODE_TASK_TITLE='ImageDecodeTaskImpl::RunOnWorkerThread';const FINISHED_TASK_TITLE='TaskSetFinishedTaskImpl::RunOnWorkerThread';for(let i=0;i<sortedRasterizerSlices.length;i++){const task=sortedRasterizerSlices[i];if(task.title===RASTER_TASK_TITLE||task.title===IMAGEDECODE_TASK_TITLE){if(task.args.source_prepare_tiles_id===prepareTileId){this.addEntireSliceHierarchy(task.mostTopLevelSlice);}}else if(task.title===FINISHED_TASK_TITLE){if(task.start>prepareTiles.start){pendingEventQueue.push(task.mostTopLevelSlice);if(++numFinishedTasks===3)break;}}}\nwhile(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followSubsequentSlices(event,pendingEventQueue,visited,flowEvents);}},addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents,sortedRasterizerSlices){const pendingEventQueue=[];const visitedEvents=new EventSet();let beginImplFrame=undefined;let prepareTiles=undefined;sortedRasterizerSlices=[];sourceSlices.forEach(function(sourceSlice){if(!visitedEvents.contains(sourceSlice)){visitedEvents.push(sourceSlice);pendingEventQueue.push(sourceSlice);}},this);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followCurrentSlice(event,pendingEventQueue,visitedEvents);this.followSubsequentSlices(event,pendingEventQueue,visitedEvents,flowEvents);const COMPOSITOR_PREPARE_TILES='TileManager::PrepareTiles';prepareTiles=event.findDescendentSlice(COMPOSITOR_PREPARE_TILES);if(prepareTiles){this.addRasterizationEvents(prepareTiles,rendererHelper,visitedEvents,flowEvents,sortedRasterizerSlices);}\nconst COMPOSITOR_ON_BIFD='Scheduler::OnBeginImplFrameDeadline';beginImplFrame=event.findDescendentSlice(COMPOSITOR_ON_BIFD);if(beginImplFrame){this.backtraceFromDraw(beginImplFrame,visitedEvents);}}},get associatedEvents(){if(this.associatedEvents_.length!==0){return this.associatedEvents_;}\nconst modelIndices=this.startThread.parent.model.modelIndices;const flowEvents=modelIndices.getFlowEventsWithId(this.id);if(flowEvents.length===0){return this.associatedEvents_;}\nconst sourceSlices=this.addDirectlyAssociatedEvents(flowEvents);const rendererHelper=this.getRendererHelper(sourceSlices);this.addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents);return this.associatedEvents_;},get inputLatency(){if(!('data'in this.args))return undefined;const data=this.args.data;const endTimeComp=data[END_COMP_NAME]||data[LEGACY_END_COMP_NAME];if(endTimeComp===undefined)return undefined;let latency=0;const endTime=endTimeComp.time;if(ORIGINAL_COMP_NAME in data){latency=endTime-data[ORIGINAL_COMP_NAME].time;}else if(UI_COMP_NAME in data){latency=endTime-data[UI_COMP_NAME].time;}else if(BEGIN_COMP_NAME in data){latency=endTime-data[BEGIN_COMP_NAME].time;}else{throw new Error('No valid begin latency component');}\nreturn latency;}};const eventTypeNames=['Char','ContextMenu','GestureClick','GestureFlingCancel','GestureFlingStart','GestureScrollBegin','GestureScrollEnd','GestureScrollUpdate','GestureShowPress','GestureTap','GestureTapCancel','GestureTapDown','GesturePinchBegin','GesturePinchEnd','GesturePinchUpdate','KeyDown','KeyUp','MouseDown','MouseEnter','MouseLeave','MouseMove','MouseUp','MouseWheel','RawKeyDown','ScrollUpdate','TouchCancel','TouchEnd','TouchMove','TouchStart'];const allTypeNames=['InputLatency'];eventTypeNames.forEach(function(eventTypeName){allTypeNames.push('InputLatency:'+eventTypeName);allTypeNames.push('InputLatency::'+eventTypeName);});AsyncSlice.subTypes.register(InputLatencyAsyncSlice,{typeNames:allTypeNames,categoryParts:['latencyInfo']});return{InputLatencyAsyncSlice,INPUT_EVENT_TYPE_NAMES,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;function EventInfo(title,description,docLinks){this.title=title;this.description=description;this.docLinks=docLinks;this.colorId=ColorScheme.getColorIdForGeneralPurposeString(title);}\nreturn{EventInfo,};});'use strict';(function(exports){var rank={standard:function(array,key){array=array.sort(function(a,b){var x=a[key];var y=b[key];return((x<y)?-1:((x>y)?1:0));});for(var i=1;i<array.length+1;i++){array[i-1]['rank']=i;}\nreturn array;},fractional:function(array,key){array=this.standard(array,key);var pos=0;while(pos<array.length){var sum=0;var i=0;for(i=0;array[pos+i+1]&&(array[pos+i][key]===array[pos+i+1][key]);i++){sum+=array[pos+i]['rank'];}\nsum+=array[pos+i]['rank'];var endPos=pos+i+1;for(pos;pos<endPos;pos++){array[pos]['rank']=sum/(i+1);}\npos=endPos;}\nreturn array;},rank:function(x,y){var nx=x.length,ny=y.length,combined=[],ranked;while(nx--){combined.push({set:'x',val:x[nx]});}\nwhile(ny--){combined.push({set:'y',val:y[ny]});}\nranked=this.fractional(combined,'val');return ranked}};var erf=function erf(x){var cof=[-1.3026537197817094,6.4196979235649026e-1,1.9476473204185836e-2,-9.561514786808631e-3,-9.46595344482036e-4,3.66839497852761e-4,4.2523324806907e-5,-2.0278578112534e-5,-1.624290004647e-6,1.303655835580e-6,1.5626441722e-8,-8.5238095915e-8,6.529054439e-9,5.059343495e-9,-9.91364156e-10,-2.27365122e-10,9.6467911e-11,2.394038e-12,-6.886027e-12,8.94487e-13,3.13092e-13,-1.12708e-13,3.81e-16,7.106e-15,-1.523e-15,-9.4e-17,1.21e-16,-2.8e-17];var j=cof.length-1;var isneg=false;var d=0;var dd=0;var t,ty,tmp,res;if(x<0){x=-x;isneg=true;}\nt=2/(2+x);ty=4*t-2;for(;j>0;j--){tmp=d;d=ty*d-dd+cof[j];dd=tmp;}\nres=t*Math.exp(-x*x+0.5*(cof[0]+ty*d)-dd);return isneg?res-1:1-res;};var dnorm=function(x,mean,std){return 0.5*(1+erf((x-mean)/Math.sqrt(2*std*std)));}\nvar statistic=function(x,y){var ranked=rank.rank(x,y),nr=ranked.length,nx=x.length,ny=y.length,ranksums={x:0,y:0},i=0,t=0,nt=1,tcf,ux,uy;while(i<nr){if(i>0){if(ranked[i].val==ranked[i-1].val){nt++;}else{if(nt>1){t+=Math.pow(nt,3)-nt\nnt=1;}}}\nranksums[ranked[i].set]+=ranked[i].rank\ni++;}\ntcf=1-(t/(Math.pow(nr,3)-nr))\nux=nx*ny+(nx*(nx+1)/2)-ranksums.x;uy=nx*ny-ux;return{tcf:tcf,ux:ux,uy:uy,big:Math.max(ux,uy),small:Math.min(ux,uy)}}\nexports.test=function(x,y,alt,corr){alt=typeof alt!=='undefined'?alt:'two-sided';corr=typeof corr!=='undefined'?corr:true;var nx=x.length,ny=y.length,f=1,u,mu,std,z,p;u=statistic(x,y);if(corr){mu=(nx*ny/2)+0.5;}else{mu=nx*ny/2;}\nstd=Math.sqrt(u.tcf*nx*ny*(nx+ny+1)/12);if(alt=='less'){z=(u.ux-mu)/std;}else if(alt=='greater'){z=(u.uy-mu)/std;}else if(alt=='two-sided'){z=Math.abs((u.big-mu)/std);}else{console.log('Unknown alternative argument');}\nif(alt=='two-sided'){f=2;}\np=dnorm(-z,0,1)*f;return{U:u.small,p:p};}})(typeof exports==='undefined'?this['mannwhitneyu']={}:exports);'use strict';(function(global){if(tr.isNode){const mwuAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/mannwhitneyu.js');const mwuModule=require(mwuAbsPath);for(const exportName in mwuModule){global[exportName]=mwuModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const Statistics={};Statistics.divideIfPossibleOrZero=function(numerator,denominator){if(denominator===0)return 0;return numerator/denominator;};Statistics.sum=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=0;let i=0;for(const elt of ary){ret+=func.call(opt_this,elt,i++);}\nreturn ret;};Statistics.mean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let sum=0;let i=0;for(const elt of ary){sum+=func.call(opt_this,elt,i++);}\nif(i===0)return undefined;return sum/i;};Statistics.geometricMean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let i=0;let logsum=0;for(const elt of ary){const x=func.call(opt_this,elt,i++);if(x<=0)return 0;logsum+=Math.log(Math.abs(x));}\nif(i===0)return 1;return Math.exp(logsum/i);};Statistics.weightedMean=function(ary,weightCallback,opt_valueCallback,opt_this){const valueCallback=opt_valueCallback||(x=>x);let numerator=0;let denominator=0;let i=-1;for(const elt of ary){i++;const value=valueCallback.call(opt_this,elt,i);if(value===undefined)continue;const weight=weightCallback.call(opt_this,elt,i,value);numerator+=weight*value;denominator+=weight;}\nif(denominator===0)return undefined;return numerator/denominator;};Statistics.variance=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;if(ary.length===1)return 0;const func=opt_func||(x=>x);const mean=Statistics.mean(ary,func,opt_this);const sumOfSquaredDistances=Statistics.sum(ary,function(d,i){const v=func.call(this,d,i)-mean;return v*v;},opt_this);return sumOfSquaredDistances/(ary.length-1);};Statistics.stddev=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;return Math.sqrt(Statistics.variance(ary,opt_func,opt_this));};Statistics.max=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=-Infinity;let i=0;for(const elt of ary){ret=Math.max(ret,func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.min=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=Infinity;let i=0;for(const elt of ary){ret=Math.min(ret,func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.range=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);const ret=new tr.b.math.Range();let i=0;for(const elt of ary){ret.addValue(func.call(opt_this,elt,i++));}\nreturn ret;};Statistics.percentile=function(ary,percent,opt_func,opt_this){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}\nconst func=opt_func||(x=>x);const tmp=new Array(ary.length);let i=0;for(const elt of ary){tmp[i]=func.call(opt_this,elt,i++);}\ntmp.sort((a,b)=>a-b);const idx=Math.floor((ary.length-1)*percent);return tmp[idx];};Statistics.normalizeSamples=function(samples){if(samples.length===0){return{normalized_samples:samples,scale:1.0};}\nsamples=samples.slice().sort(function(a,b){return a-b;});const low=Math.min.apply(null,samples);const high=Math.max.apply(null,samples);const newLow=0.5/samples.length;const newHigh=(samples.length-0.5)/samples.length;if(high-low===0.0){samples=Array.apply(null,new Array(samples.length)).map(function(){return 0.5;});return{normalized_samples:samples,scale:1.0};}\nconst scale=(newHigh-newLow)/(high-low);for(let i=0;i<samples.length;i++){samples[i]=(samples[i]-low)*scale+newLow;}\nreturn{normalized_samples:samples,scale};};Statistics.discrepancy=function(samples,opt_locationCount){if(samples.length===0)return 0.0;let maxLocalDiscrepancy=0;const invSampleCount=1.0/samples.length;const locations=[];const countLess=[];const countLessEqual=[];if(opt_locationCount!==undefined){let sampleIndex=0;for(let i=0;i<opt_locationCount;i++){const location=i/(opt_locationCount-1);locations.push(location);while(sampleIndex<samples.length&&samples[sampleIndex]<location){sampleIndex+=1;}\ncountLess.push(sampleIndex);while(sampleIndex<samples.length&&samples[sampleIndex]<=location){sampleIndex+=1;}\ncountLessEqual.push(sampleIndex);}}else{if(samples[0]>0.0){locations.push(0.0);countLess.push(0);countLessEqual.push(0);}\nfor(let i=0;i<samples.length;i++){locations.push(samples[i]);countLess.push(i);countLessEqual.push(i+1);}\nif(samples[-1]<1.0){locations.push(1.0);countLess.push(samples.length);countLessEqual.push(samples.length);}}\nlet maxDiff=0;let minDiff=0;for(let i=1;i<locations.length;i++){const length=locations[i]-locations[i-1];const countClosed=countLessEqual[i]-countLess[i-1];const countOpen=countLess[i]-countLessEqual[i-1];const countClosedIncrement=countLessEqual[i]-countLessEqual[i-1];const countOpenIncrement=countLess[i]-countLess[i-1];maxDiff=Math.max(countClosedIncrement*invSampleCount-length+maxDiff,countClosed*invSampleCount-length);minDiff=Math.min(countOpenIncrement*invSampleCount-length+minDiff,countOpen*invSampleCount-length);maxLocalDiscrepancy=Math.max(maxDiff,-minDiff,maxLocalDiscrepancy);}\nreturn maxLocalDiscrepancy;};Statistics.timestampsDiscrepancy=function(timestamps,opt_absolute,opt_locationCount){if(timestamps.length===0)return 0.0;if(opt_absolute===undefined)opt_absolute=true;if(Array.isArray(timestamps[0])){const rangeDiscrepancies=timestamps.map(function(r){return Statistics.timestampsDiscrepancy(r);});return Math.max.apply(null,rangeDiscrepancies);}\nconst s=Statistics.normalizeSamples(timestamps);const samples=s.normalized_samples;const sampleScale=s.scale;let discrepancy=Statistics.discrepancy(samples,opt_locationCount);const invSampleCount=1.0/samples.length;if(opt_absolute===true){discrepancy/=sampleScale;}else{discrepancy=tr.b.math.clamp((discrepancy-invSampleCount)/(1.0-invSampleCount),0.0,1.0);}\nreturn discrepancy;};Statistics.uniformlySampleArray=function(samples,count){if(samples.length<=count){return samples;}\nwhile(samples.length>count){const i=parseInt(Math.random()*samples.length);samples.splice(i,1);}\nreturn samples;};Statistics.uniformlySampleStream=function(samples,streamLength,newElement,numSamples){if(streamLength<=numSamples){if(samples.length>=streamLength){samples[streamLength-1]=newElement;}else{samples.push(newElement);}\nreturn;}\nconst probToKeep=numSamples/streamLength;if(Math.random()>probToKeep)return;const index=Math.floor(Math.random()*numSamples);samples[index]=newElement;};Statistics.mergeSampledStreams=function(samplesA,streamLengthA,samplesB,streamLengthB,numSamples){if(streamLengthB<numSamples){const nbElements=Math.min(streamLengthB,samplesB.length);for(let i=0;i<nbElements;++i){Statistics.uniformlySampleStream(samplesA,streamLengthA+i+1,samplesB[i],numSamples);}\nreturn;}\nif(streamLengthA<numSamples){const nbElements=Math.min(streamLengthA,samplesA.length);const tempSamples=samplesB.slice();for(let i=0;i<nbElements;++i){Statistics.uniformlySampleStream(tempSamples,streamLengthB+i+1,samplesA[i],numSamples);}\nfor(let i=0;i<tempSamples.length;++i){samplesA[i]=tempSamples[i];}\nreturn;}\nconst nbElements=Math.min(numSamples,samplesB.length);const probOfSwapping=streamLengthB/(streamLengthA+streamLengthB);for(let i=0;i<nbElements;++i){if(Math.random()<probOfSwapping){samplesA[i]=samplesB[i];}}};function Distribution(){}\nDistribution.prototype={computeDensity(x){throw Error('Not implemented');},computePercentile(x){throw Error('Not implemented');},computeComplementaryPercentile(x){return 1-this.computePercentile(x);},get mean(){throw Error('Not implemented');},get mode(){throw Error('Not implemented');},get median(){throw Error('Not implemented');},get standardDeviation(){throw Error('Not implemented');},get variance(){throw Error('Not implemented');}};Statistics.UniformDistribution=function(opt_range){if(!opt_range)opt_range=tr.b.math.Range.fromExplicitRange(0,1);this.range=opt_range;};Statistics.UniformDistribution.prototype={__proto__:Distribution.prototype,computeDensity(x){return 1/this.range.range;},computePercentile(x){return tr.b.math.normalize(x,this.range.min,this.range.max);},get mean(){return this.range.center;},get mode(){return undefined;},get median(){return this.mean;},get standardDeviation(){return Math.sqrt(this.variance);},get variance(){return Math.pow(this.range.range,2)/12;}};Statistics.NormalDistribution=function(opt_mean,opt_variance){this.mean_=opt_mean||0;this.variance_=opt_variance||1;this.standardDeviation_=Math.sqrt(this.variance_);};Statistics.NormalDistribution.prototype={__proto__:Distribution.prototype,computeDensity(x){const scale=(1.0/(this.standardDeviation*Math.sqrt(2.0*Math.PI)));const exponent=-Math.pow(x-this.mean,2)/(2.0*this.variance);return scale*Math.exp(exponent);},computePercentile(x){const standardizedX=((x-this.mean)/Math.sqrt(2.0*this.variance));return(1.0+tr.b.math.erf(standardizedX))/2.0;},get mean(){return this.mean_;},get median(){return this.mean;},get mode(){return this.mean;},get standardDeviation(){return this.standardDeviation_;},get variance(){return this.variance_;}};Statistics.LogNormalDistribution=function(opt_location,opt_shape){this.normalDistribution_=new Statistics.NormalDistribution(opt_location,Math.pow(opt_shape||1,2));};Statistics.LogNormalDistribution.prototype={__proto__:Statistics.NormalDistribution.prototype,computeDensity(x){return this.normalDistribution_.computeDensity(Math.log(x))/x;},computePercentile(x){return this.normalDistribution_.computePercentile(Math.log(x));},get mean(){return Math.exp(this.normalDistribution_.mean+\n(this.normalDistribution_.variance/2));},get variance(){const nm=this.normalDistribution_.mean;const nv=this.normalDistribution_.variance;return(Math.exp(2*(nm+nv))-\nMath.exp(2*nm+nv));},get standardDeviation(){return Math.sqrt(this.variance);},get median(){return Math.exp(this.normalDistribution_.mean);},get mode(){return Math.exp(this.normalDistribution_.mean-\nthis.normalDistribution_.variance);}};Statistics.LogNormalDistribution.fromMedianAndDiminishingReturns=function(median,diminishingReturns){diminishingReturns=Math.log(diminishingReturns/median);const shape=Math.sqrt(1-3*diminishingReturns-\nMath.sqrt(Math.pow(diminishingReturns-3,2)-8))/2;const location=Math.log(median);return new Statistics.LogNormalDistribution(location,shape);};Statistics.DEFAULT_ALPHA=0.01;Statistics.MAX_SUGGESTED_SAMPLE_SIZE=20;Statistics.Significance={SIGNIFICANT:'REJECT',INSIGNIFICANT:'FAIL_TO_REJECT',NEED_MORE_DATA:'NEED_MORE_DATA',DONT_CARE:'DONT_CARE',};class HypothesisTestResult{constructor(p,u,needMoreData,opt_alpha){this.p_=p;this.u_=u;this.needMoreData_=needMoreData;this.compare(opt_alpha);}\nget p(){return this.p_;}\nget U(){return this.u_;}\nget significance(){return this.significance_;}\ncompare(opt_alpha){const alpha=opt_alpha||Statistics.DEFAULT_ALPHA;if(this.p<alpha){this.significance_=Statistics.Significance.SIGNIFICANT;}else if(this.needMoreData_){this.significance_=Statistics.Significance.NEED_MORE_DATA;}else{this.significance_=Statistics.Significance.INSIGNIFICANT;}\nreturn this.significance_;}\nasDict(){return{p:this.p,U:this.U,significance:this.significance,};}}\nStatistics.mwu=function(a,b,opt_alpha,opt_reqSampleSize){const result=mannwhitneyu.test(a,b);const needMoreData=opt_reqSampleSize&&Math.min(a.length,b.length)<opt_reqSampleSize;return new HypothesisTestResult(result.p,result.U,needMoreData,opt_alpha);};return{Statistics,};});'use strict';tr.exportTo('tr.model',function(){const CompoundEventSelectionState={NOT_SELECTED:0,EVENT_SELECTED:0x1,SOME_ASSOCIATED_EVENTS_SELECTED:0x2,ALL_ASSOCIATED_EVENTS_SELECTED:0x4,EVENT_AND_SOME_ASSOCIATED_SELECTED:0x1|0x2,EVENT_AND_ALL_ASSOCIATED_SELECTED:0x1|0x4};return{CompoundEventSelectionState,};});'use strict';tr.exportTo('tr.model.um',function(){const CompoundEventSelectionState=tr.model.CompoundEventSelectionState;function UserExpectation(parentModel,initiatorType,start,duration){tr.model.TimedEvent.call(this,start);this.associatedEvents=new tr.model.EventSet();this.duration=duration;this.initiatorType_=initiatorType;this.parentModel=parentModel;this.typeInfo_=undefined;this.sourceEvents=new tr.model.EventSet();}\nconst INITIATOR_TYPE={KEYBOARD:'Keyboard',MOUSE:'Mouse',MOUSE_WHEEL:'MouseWheel',TAP:'Tap',PINCH:'Pinch',FLING:'Fling',TOUCH:'Touch',SCROLL:'Scroll',CSS:'CSS',WEBGL:'WebGL',VIDEO:'Video',VR:'VR',};UserExpectation.prototype={__proto__:tr.model.TimedEvent.prototype,computeCompoundEvenSelectionState(selection){let cess=CompoundEventSelectionState.NOT_SELECTED;if(selection.contains(this)){cess|=CompoundEventSelectionState.EVENT_SELECTED;}\nif(this.associatedEvents.intersectionIsEmpty(selection)){return cess;}\nconst allContained=this.associatedEvents.every(function(event){return selection.contains(event);});if(allContained){cess|=CompoundEventSelectionState.ALL_ASSOCIATED_EVENTS_SELECTED;}else{cess|=CompoundEventSelectionState.SOME_ASSOCIATED_EVENTS_SELECTED;}\nreturn cess;},get associatedSamples(){const samples=new tr.model.EventSet();this.associatedEvents.forEach(function(event){if(event instanceof tr.model.ThreadSlice){samples.addEventSet(event.overlappingSamples);}});return samples;},get userFriendlyName(){return this.title+' User Expectation at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){return('UserExpectation.'+this.guid);},get typeInfo(){if(!this.typeInfo_){this.typeInfo_=UserExpectation.subTypes.findTypeInfo(this.constructor);}\nif(!this.typeInfo_){throw new Error('Unregistered UserExpectation');}\nreturn this.typeInfo_;},get colorId(){return this.typeInfo.metadata.colorId;},get stageTitle(){return this.typeInfo.metadata.stageTitle;},get initiatorType(){return this.initiatorType_;},get title(){if(!this.initiatorType){return this.stageTitle;}\nreturn this.initiatorType+' '+this.stageTitle;},get totalCpuMs(){let cpuMs=0;this.associatedEvents.forEach(function(event){if(event.cpuSelfTime){cpuMs+=event.cpuSelfTime;}});return cpuMs;}};const subTypes={};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(subTypes,options);subTypes.addEventListener('will-register',function(e){const metadata=e.typeInfo.metadata;if(metadata.stageTitle===undefined){throw new Error('Registered UserExpectations must provide '+'stageTitle');}\nif(metadata.colorId===undefined){throw new Error('Registered UserExpectations must provide '+'colorId');}});tr.model.EventRegistry.register(UserExpectation,{name:'userExpectation',pluralName:'userExpectations',subTypes});return{UserExpectation,INITIATOR_TYPE,};});'use strict';tr.exportTo('tr.model.um',function(){function AnimationExpectation(parentModel,initiatorTitle,start,duration){tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.frameEvents_=undefined;}\nAnimationExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:AnimationExpectation,get frameEvents(){if(this.frameEvents_){return this.frameEvents_;}\nthis.frameEvents_=new tr.model.EventSet();this.associatedEvents.forEach(function(event){if(event.title===tr.model.helpers.IMPL_RENDERING_STATS){this.frameEvents_.push(event);}},this);return this.frameEvents_;}};tr.model.um.UserExpectation.subTypes.register(AnimationExpectation,{stageTitle:'Animation',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_animation')});return{AnimationExpectation,};});'use strict';tr.exportTo('tr.model.um',function(){function ResponseExpectation(parentModel,initiatorTitle,start,duration,opt_isAnimationBegin){tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.isAnimationBegin=opt_isAnimationBegin||false;}\nResponseExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:ResponseExpectation};tr.model.um.UserExpectation.subTypes.register(ResponseExpectation,{stageTitle:'Response',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_response')});return{ResponseExpectation,};});'use strict';tr.exportTo('tr.importer',function(){function ProtoExpectation(type,initiatorType){this.type=type;this.initiatorType=initiatorType;this.start=Infinity;this.end=-Infinity;this.associatedEvents=new tr.model.EventSet();this.isAnimationBegin=false;}\nProtoExpectation.RESPONSE_TYPE='r';ProtoExpectation.ANIMATION_TYPE='a';ProtoExpectation.IGNORED_TYPE='ignored';const INITIATOR_HIERARCHY=[tr.model.um.INITIATOR_TYPE.PINCH,tr.model.um.INITIATOR_TYPE.FLING,tr.model.um.INITIATOR_TYPE.MOUSE_WHEEL,tr.model.um.INITIATOR_TYPE.SCROLL,tr.model.um.INITIATOR_TYPE.VR,tr.model.um.INITIATOR_TYPE.VIDEO,tr.model.um.INITIATOR_TYPE.WEBGL,tr.model.um.INITIATOR_TYPE.CSS,tr.model.um.INITIATOR_TYPE.MOUSE,tr.model.um.INITIATOR_TYPE.KEYBOARD,tr.model.um.INITIATOR_TYPE.TAP,tr.model.um.INITIATOR_TYPE.TOUCH];function combineInitiatorTypes(title1,title2){for(const item of INITIATOR_HIERARCHY){if(title1===item||title2===item)return item;}\nthrow new Error('Invalid titles in combineInitiatorTypes');}\nProtoExpectation.prototype={get isValid(){return this.end>this.start;},containsTypeNames(typeNames){return this.associatedEvents.some(x=>typeNames.indexOf(x.typeName)>=0);},containsSliceTitle(title){return this.associatedEvents.some(x=>title===x.title);},createInteractionRecord(model){if(this.type!==ProtoExpectation.IGNORED_TYPE&&!this.isValid){model.importWarning({type:'ProtoExpectation',message:'Please file a bug with this trace. '+this.debug(),showToUser:true});return undefined;}\nconst duration=this.end-this.start;let ir=undefined;switch(this.type){case ProtoExpectation.RESPONSE_TYPE:ir=new tr.model.um.ResponseExpectation(model,this.initiatorType,this.start,duration,this.isAnimationBegin);break;case ProtoExpectation.ANIMATION_TYPE:ir=new tr.model.um.AnimationExpectation(model,this.initiatorType,this.start,duration);break;}\nif(!ir)return undefined;ir.sourceEvents.addEventSet(this.associatedEvents);function pushAssociatedEvents(event){ir.associatedEvents.push(event);if(event.associatedEvents){ir.associatedEvents.addEventSet(event.associatedEvents);}}\nthis.associatedEvents.forEach(function(event){pushAssociatedEvents(event);if(event.subSlices){event.subSlices.forEach(pushAssociatedEvents);}});return ir;},merge(other){this.initiatorType=combineInitiatorTypes(this.initiatorType,other.initiatorType);this.associatedEvents.addEventSet(other.associatedEvents);this.start=Math.min(this.start,other.start);this.end=Math.max(this.end,other.end);if(other.isAnimationBegin){this.isAnimationBegin=true;}},pushEvent(event){this.start=Math.min(this.start,event.start);this.end=Math.max(this.end,event.end);this.associatedEvents.push(event);},pushSample(sample){this.start=Math.min(this.start,sample.timestamp);this.end=Math.max(this.end,sample.timestamp);this.associatedEvents.push(sample);},containsTimestampInclusive(timestamp){return(this.start<=timestamp)&&(timestamp<=this.end);},intersects(other){return(other.start<this.end)&&(other.end>this.start);},isNear(event,threshold){return(this.end+threshold)>event.start;},debug(){let debugString=this.type+'(';debugString+=parseInt(this.start)+' ';debugString+=parseInt(this.end);this.associatedEvents.forEach(function(event){debugString+=' '+event.typeName;});return debugString+')';}};return{ProtoExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const ProtoExpectation=tr.importer.ProtoExpectation;const INITIATOR_TYPE=tr.model.um.INITIATOR_TYPE;const INPUT_TYPE=tr.e.cc.INPUT_EVENT_TYPE_NAMES;const KEYBOARD_TYPE_NAMES=[INPUT_TYPE.CHAR,INPUT_TYPE.KEY_DOWN_RAW,INPUT_TYPE.KEY_DOWN,INPUT_TYPE.KEY_UP];const MOUSE_RESPONSE_TYPE_NAMES=[INPUT_TYPE.CLICK,INPUT_TYPE.CONTEXT_MENU];const MOUSE_WHEEL_TYPE_NAMES=[INPUT_TYPE.MOUSE_WHEEL];const MOUSE_DRAG_TYPE_NAMES=[INPUT_TYPE.MOUSE_DOWN,INPUT_TYPE.MOUSE_MOVE,INPUT_TYPE.MOUSE_UP];const TAP_TYPE_NAMES=[INPUT_TYPE.TAP,INPUT_TYPE.TAP_CANCEL,INPUT_TYPE.TAP_DOWN];const PINCH_TYPE_NAMES=[INPUT_TYPE.PINCH_BEGIN,INPUT_TYPE.PINCH_END,INPUT_TYPE.PINCH_UPDATE];const FLING_TYPE_NAMES=[INPUT_TYPE.FLING_CANCEL,INPUT_TYPE.FLING_START];const TOUCH_TYPE_NAMES=[INPUT_TYPE.TOUCH_END,INPUT_TYPE.TOUCH_MOVE,INPUT_TYPE.TOUCH_START];const SCROLL_TYPE_NAMES=[INPUT_TYPE.SCROLL_BEGIN,INPUT_TYPE.SCROLL_END,INPUT_TYPE.SCROLL_UPDATE];const ALL_HANDLED_TYPE_NAMES=[].concat(KEYBOARD_TYPE_NAMES,MOUSE_RESPONSE_TYPE_NAMES,MOUSE_WHEEL_TYPE_NAMES,MOUSE_DRAG_TYPE_NAMES,PINCH_TYPE_NAMES,TAP_TYPE_NAMES,FLING_TYPE_NAMES,TOUCH_TYPE_NAMES,SCROLL_TYPE_NAMES);const RENDERER_FLING_TITLE='InputHandlerProxy::HandleGestureFling::started';const PLAYBACK_EVENT_TITLE='VideoPlayback';const CSS_ANIMATION_TITLE='Animation';const VR_COUNTER_NAMES=['gpu.WebVR FPS','gpu.WebVR frame time (ms)','gpu.WebVR pose prediction (ms)','gpu.WebXR FPS',];const VR_EXPECTATION_EVENTS={'Vr.AcquireGvrFrame':{'histogramName':'acquire_frame','description':'Duration acquire a frame from GVR','hasCpuTime':true,},'Vr.DrawFrame':{'histogramName':'draw_frame','description':'Duration to render one frame','hasCpuTime':true,},'Vr.PostSubmitDrawOnGpu':{'histogramName':'post_submit_draw_on_gpu','description':'Duration to draw a frame on GPU post submit to '+'GVR. Note this duration may include time spent on '+'reprojection','hasCpuTime':false,},'Vr.ProcessControllerInput':{'histogramName':'update_controller','description':'Duration to query input from the controller','hasCpuTime':true,},'Vr.ProcessControllerInputForWebXr':{'histogramName':'update_controller_webxr','description':'Duration to query input from the controller for WebXR','hasCpuTime':true,},'Vr.SubmitFrameNow':{'histogramName':'submit_frame','description':'Duration to submit a frame to GVR','hasCpuTime':true,}};const WEBXR_INSTANT_EVENTS={'WebXR frame time (ms)':{'javascript':{'histogramName':'webxr_frame_time_javascript','description':'WebXR frame time spent on JavaScript',},'rendering':{'histogramName':'webxr_frame_time_rendering','description':'WebXR frame time spent on rendering'}},'WebXR pose prediction':{'milliseconds':{'histogramName':'webxr_pose_prediction','description':'WebXR pose prediction in ms',},},};const XR_DEVICE_SERVICE_PROCESS='Service: xr_device_service';function isXrDeviceServiceProcess(process){if(process.name===XR_DEVICE_SERVICE_PROCESS)return true;return false;}\nconst VR_RESPONSE_MS=1000;const INPUT_MERGE_THRESHOLD_MS=200;const ANIMATION_MERGE_THRESHOLD_MS=32;const MOUSE_WHEEL_THRESHOLD_MS=40;const MOUSE_MOVE_THRESHOLD_MS=40;function compareEvents(x,y){if(x.start!==y.start){return x.start-y.start;}\nif(x.end!==y.end){return x.end-y.end;}\nif(x.guid&&y.guid){return x.guid-y.guid;}\nreturn 0;}\nfunction forEventTypesIn(events,typeNames,cb,opt_this){events.forEach(function(event){if(typeNames.indexOf(event.typeName)>=0){cb.call(opt_this,event);}});}\nfunction causedFrame(event){return event.associatedEvents.some(isImplFrameEvent);}\nfunction getSortedFrameEventsByProcess(modelHelper){const frameEventsByPid={};for(const[pid,rendererHelper]of\nObject.entries(modelHelper.rendererHelpers)){frameEventsByPid[pid]=rendererHelper.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds);}\nreturn frameEventsByPid;}\nfunction getSortedInputEvents(modelHelper){const inputEvents=[];const browserProcess=modelHelper.browserHelper.process;const mainThread=browserProcess.findAtMostOneThreadNamed('CrBrowserMain');for(const slice of mainThread.asyncSliceGroup.getDescendantEvents()){if(!slice.isTopLevel)continue;if(!(slice instanceof tr.e.cc.InputLatencyAsyncSlice))continue;if(isNaN(slice.start)||isNaN(slice.duration)||isNaN(slice.end)){continue;}\ninputEvents.push(slice);}\nreturn inputEvents.sort(compareEvents);}\nfunction findProtoExpectations(modelHelper,sortedInputEvents,warn){const protoExpectations=[];const handlers=[handleKeyboardEvents,handleMouseResponseEvents,handleMouseWheelEvents,handleMouseDragEvents,handleTapResponseEvents,handlePinchEvents,handleFlingEvents,handleTouchEvents,handleScrollEvents,handleCSSAnimations,handleWebGLAnimations,handleVideoAnimations,handleVrAnimations,];handlers.forEach(function(handler){protoExpectations.push.apply(protoExpectations,handler(modelHelper,sortedInputEvents,warn));});protoExpectations.sort(compareEvents);return protoExpectations;}\nfunction handleKeyboardEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,KEYBOARD_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.KEYBOARD);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}\nfunction handleMouseResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,MOUSE_RESPONSE_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}\nfunction handleMouseWheelEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let prevEvent_=undefined;forEventTypesIn(sortedInputEvents,MOUSE_WHEEL_TYPE_NAMES,function(event){const prevEvent=prevEvent_;prevEvent_=event;if(currentPE&&(prevEvent.start+MOUSE_WHEEL_THRESHOLD_MS)>=event.start){if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn;}\ncurrentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);});return protoExpectations;}\nfunction handleMouseDragEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let mouseDownEvent=undefined;forEventTypesIn(sortedInputEvents,MOUSE_DRAG_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.MOUSE_DOWN:if(causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);}else{mouseDownEvent=event;}\nbreak;case INPUT_TYPE.MOUSE_MOVE:if(!causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}else if(!currentPE||!currentPE.isNear(event,MOUSE_MOVE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);mouseDownEvent=undefined;}\nprotoExpectations.push(currentPE);}else{if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}\nbreak;case INPUT_TYPE.MOUSE_UP:if(!mouseDownEvent){const pe=new ProtoExpectation(causedFrame(event)?ProtoExpectation.RESPONSE_TYPE:ProtoExpectation.IGNORED_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);}\ncurrentPE.pushEvent(event);protoExpectations.push(currentPE);}\nmouseDownEvent=undefined;currentPE=undefined;break;}});if(mouseDownEvent){currentPE=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);currentPE.pushEvent(mouseDownEvent);protoExpectations.push(currentPE);}\nreturn protoExpectations;}\nfunction handleTapResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;forEventTypesIn(sortedInputEvents,TAP_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TAP_DOWN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;case INPUT_TYPE.TAP:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\ncurrentPE=undefined;break;case INPUT_TYPE.TAP_CANCEL:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handlePinchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;const modelBounds=modelHelper.model.bounds;forEventTypesIn(sortedInputEvents,PINCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.PINCH_BEGIN:if(currentPE&&currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);break;}\ncurrentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.PINCH_UPDATE:if(!currentPE||((currentPE.type===ProtoExpectation.RESPONSE_TYPE)&&sawFirstUpdate)||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstUpdate=true;}\nbreak;case INPUT_TYPE.PINCH_END:if(currentPE){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handleFlingEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;function isRendererFling(event){return event.title===RENDERER_FLING_TITLE;}\nconst browserHelper=modelHelper.browserHelper;const flingEvents=browserHelper.getAllAsyncSlicesMatching(isRendererFling);forEventTypesIn(sortedInputEvents,FLING_TYPE_NAMES,function(event){flingEvents.push(event);});flingEvents.sort(compareEvents);flingEvents.forEach(function(event){if(event.title===RENDERER_FLING_TITLE){if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn;}\nswitch(event.typeName){case INPUT_TYPE.FLING_START:if(currentPE){warn({type:'UserModelBuilder',message:'Unexpected FlingStart',showToUser:false,});currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);currentPE.end=0;protoExpectations.push(currentPE);}\nbreak;case INPUT_TYPE.FLING_CANCEL:if(currentPE){currentPE.pushEvent(event);currentPE.end=event.start;currentPE=undefined;}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\nbreak;}});if(currentPE&&!currentPE.end){currentPE.end=modelHelper.model.bounds.max;}\nreturn protoExpectations;}\nfunction handleTouchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstMove=false;forEventTypesIn(sortedInputEvents,TOUCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TOUCH_START:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstMove=false;}\nbreak;case INPUT_TYPE.TOUCH_MOVE:if(!currentPE){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;}\nif((sawFirstMove&&(currentPE.type===ProtoExpectation.RESPONSE_TYPE))||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){const prevEnd=currentPE.end;currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.start=prevEnd;protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstMove=true;}\nbreak;case INPUT_TYPE.TOUCH_END:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\nif(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}\ncurrentPE=undefined;break;}});return protoExpectations;}\nfunction handleScrollEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;forEventTypesIn(sortedInputEvents,SCROLL_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.SCROLL_BEGIN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.SCROLL_UPDATE:if(currentPE){if(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)&&((currentPE.type===ProtoExpectation.ANIMATION_TYPE)||!sawFirstUpdate)){currentPE.pushEvent(event);sawFirstUpdate=true;}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nbreak;case INPUT_TYPE.SCROLL_END:if(!currentPE){warn({type:'UserModelBuilder',message:'Unexpected ScrollEnd',showToUser:false,});const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}\ncurrentPE.pushEvent(event);break;}});return protoExpectations;}\nfunction handleVideoAnimations(modelHelper,sortedInputEvents,warn){const events=[];for(const pid in modelHelper.rendererHelpers){for(const tid in modelHelper.rendererHelpers[pid].process.threads){for(const asyncSlice of\nmodelHelper.rendererHelpers[pid].process.threads[tid].asyncSliceGroup.slices){if(asyncSlice.title===PLAYBACK_EVENT_TITLE){events.push(asyncSlice);}}}}\nevents.sort(tr.importer.compareEvents);const protoExpectations=[];for(const event of events){const currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VIDEO);currentPE.start=event.start;currentPE.end=event.end;currentPE.pushEvent(event);protoExpectations.push(currentPE);}\nreturn protoExpectations;}\nfunction handleVrAnimations(modelHelper,sortedInputEvents,warn){const events=[];const processes=[];if(typeof modelHelper.gpuHelper!=='undefined'){processes.push(modelHelper.gpuHelper.process);}\nfor(const helper of Object.values(modelHelper.rendererHelpers)){processes.push(helper.process);}\nfor(const helper of Object.values(modelHelper.browserHelpers)){processes.push(helper.process);}\nfor(const service of modelHelper.model.getAllProcesses(isXrDeviceServiceProcess)){processes.push(service);}\nlet vrCounterStart=Number.MAX_SAFE_INTEGER;let vrEventStart=Number.MAX_SAFE_INTEGER;for(const proc of processes){for(const[counterName,counterSeries]of\nObject.entries(proc.counters)){if(VR_COUNTER_NAMES.includes(counterName)){for(const series of counterSeries.series){for(const sample of series.samples){events.push(sample);vrCounterStart=Math.min(vrCounterStart,sample.timestamp);}}}}\nfor(const thread of Object.values(proc.threads)){for(const container of thread.childEventContainers()){for(const slice of container.slices){if(slice.title in VR_EXPECTATION_EVENTS||slice.title in WEBXR_INSTANT_EVENTS){events.push(slice);vrEventStart=Math.min(vrEventStart,slice.start);}}}}}\nif(events.length===0){return[];}\nevents.sort(function(x,y){if(x.range.min!==y.range.min){return x.range.min-y.range.min;}\nreturn x.guid-y.guid;});vrCounterStart=(vrCounterStart===Number.MAX_SAFE_INTEGER)?0:vrCounterStart;vrEventStart=(vrEventStart===Number.MAX_SAFE_INTEGER)?0:vrEventStart;const vrAnimationStart=Math.max(vrCounterStart,vrEventStart)+\nVR_RESPONSE_MS;const responsePE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.VR);const animationPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VR);let lastResponseEvent;for(const event of events){if(event.range.min<vrAnimationStart){if(event instanceof tr.model.CounterSample){responsePE.pushSample(event);}else{responsePE.pushEvent(event);}\nlastResponseEvent=event;}else{if(event instanceof tr.model.CounterSample){animationPE.pushSample(event);}else{animationPE.pushEvent(event);}}}\nif(lastResponseEvent instanceof tr.model.CounterSample){animationPE.pushSample(lastResponseEvent);}else{animationPE.pushEvent(lastResponseEvent);}\nreturn[responsePE,animationPE];}\nfunction handleCSSAnimations(modelHelper,sortedInputEvents,warn){const animationEvents=modelHelper.browserHelper.getAllAsyncSlicesMatching(function(event){return((event.title===CSS_ANIMATION_TITLE)&&event.isTopLevel&&(event.duration>0));});const animationRanges=[];function pushAnimationRange(start,end,animation){const range=tr.b.math.Range.fromExplicitRange(start,end);range.animation=animation;animationRanges.push(range);}\nanimationEvents.forEach(function(animation){if(animation.subSlices.length===0){pushAnimationRange(animation.start,animation.end,animation);}else{let start=undefined;animation.subSlices.forEach(function(sub){if((sub.args.data.state==='running')&&(start===undefined)){start=sub.start;}else if((sub.args.data.state==='paused')||(sub.args.data.state==='idle')||(sub.args.data.state==='finished')){if(start===undefined){start=modelHelper.model.bounds.min;}\npushAnimationRange(start,sub.start,animation);start=undefined;}});if(start!==undefined){pushAnimationRange(start,animation.end,animation);}}});return animationRanges.map(function(range){const protoExpectation=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.CSS);protoExpectation.start=range.min;protoExpectation.end=range.max;protoExpectation.associatedEvents.push(range.animation);return protoExpectation;});}\nfunction findWebGLEvents(modelHelper,mailboxEvents,animationEvents){for(const event of modelHelper.model.getDescendantEvents()){if(event.title==='DrawingBuffer::prepareMailbox'){mailboxEvents.push(event);}else if(event.title==='PageAnimator::serviceScriptedAnimations'){animationEvents.push(event);}}}\nfunction findMailboxEventsNearAnimationEvents(mailboxEvents,animationEvents){if(animationEvents.length===0)return[];mailboxEvents.sort(compareEvents);animationEvents.sort(compareEvents);const animationIterator=animationEvents[Symbol.iterator]();let animationEvent=animationIterator.next().value;const filteredEvents=[];for(const event of mailboxEvents){while(animationEvent&&(animationEvent.start<(event.start-ANIMATION_MERGE_THRESHOLD_MS))){animationEvent=animationIterator.next().value;}\nif(!animationEvent)break;if(animationEvent.start<(event.start+ANIMATION_MERGE_THRESHOLD_MS)){filteredEvents.push(event);}}\nreturn filteredEvents;}\nfunction createProtoExpectationsFromMailboxEvents(mailboxEvents){const protoExpectations=[];let currentPE=undefined;for(const event of mailboxEvents){if(currentPE===undefined||!currentPE.isNear(event,ANIMATION_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.WEBGL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);}}\nreturn protoExpectations;}\nfunction handleWebGLAnimations(modelHelper,sortedInputEvents,warn){const prepareMailboxEvents=[];const scriptedAnimationEvents=[];findWebGLEvents(modelHelper,prepareMailboxEvents,scriptedAnimationEvents);const webGLMailboxEvents=findMailboxEventsNearAnimationEvents(prepareMailboxEvents,scriptedAnimationEvents);return createProtoExpectationsFromMailboxEvents(webGLMailboxEvents);}\nfunction postProcessProtoExpectations(modelHelper,protoExpectations){protoExpectations=findFrameEventsForAnimations(modelHelper,protoExpectations);protoExpectations=mergeIntersectingResponses(protoExpectations);protoExpectations=mergeIntersectingAnimations(protoExpectations);protoExpectations=fixResponseAnimationStarts(protoExpectations);protoExpectations=fixTapResponseTouchAnimations(protoExpectations);return protoExpectations;}\nfunction mergeIntersectingResponses(protoExpectations){const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);if(pe.type!==ProtoExpectation.RESPONSE_TYPE)continue;for(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(otherPE.type!==pe.type)continue;if(!otherPE.intersects(pe))continue;const typeNames=pe.associatedEvents.map(function(event){return event.typeName;});if(otherPE.containsTypeNames(typeNames))continue;pe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction mergeIntersectingAnimations(protoExpectations){const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);if(pe.type!==ProtoExpectation.ANIMATION_TYPE)continue;const isCSS=pe.initiatorType===INITIATOR_TYPE.CSS;const isFling=pe.containsTypeNames([INPUT_TYPE.FLING_START]);const isVideo=pe.initiatorType===INITIATOR_TYPE.VIDEO;for(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(otherPE.type!==pe.type)continue;if((isCSS&&otherPE.initiatorType!==INITIATOR_TYPE.CSS)||isFling!==otherPE.containsTypeNames([INPUT_TYPE.FLING_START])||isVideo&&otherPE.initiatorType!==INITIATOR_TYPE.VIDEO||otherPE.initiatorType===INITIATOR_TYPE.VR){continue;}\nif(isCSS){if(!pe.isNear(otherPE,ANIMATION_MERGE_THRESHOLD_MS)){continue;}}else if(!otherPE.intersects(pe)){continue;}\npe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction fixResponseAnimationStarts(protoExpectations){protoExpectations.forEach(function(ape){if(ape.type!==ProtoExpectation.ANIMATION_TYPE){return;}\nprotoExpectations.forEach(function(rpe){if(rpe.type!==ProtoExpectation.RESPONSE_TYPE){return;}\nif(!ape.containsTimestampInclusive(rpe.end)){return;}\nif(ape.containsTimestampInclusive(rpe.start)){return;}\nape.start=rpe.end;if(ape.associatedEvents!==undefined){ape.associatedEvents=ape.associatedEvents.filter(e=>(!isImplFrameEvent(e)||e.start>=ape.start));}});});return protoExpectations;}\nfunction isImplFrameEvent(event){return event.title===tr.model.helpers.IMPL_RENDERING_STATS;}\nfunction fixTapResponseTouchAnimations(protoExpectations){function isTapResponse(pe){return(pe.type===ProtoExpectation.RESPONSE_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TAP]);}\nfunction isTouchAnimation(pe){return(pe.type===ProtoExpectation.ANIMATION_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TOUCH_MOVE])&&!pe.containsTypeNames([INPUT_TYPE.SCROLL_UPDATE,INPUT_TYPE.PINCH_UPDATE]);}\nconst newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);const peIsTapResponse=isTapResponse(pe);const peIsTouchAnimation=isTouchAnimation(pe);if(!peIsTapResponse&&!peIsTouchAnimation){continue;}\nfor(let i=0;i<protoExpectations.length;++i){const otherPE=protoExpectations[i];if(!otherPE.intersects(pe))continue;if(peIsTapResponse&&!isTouchAnimation(otherPE))continue;if(peIsTouchAnimation&&!isTapResponse(otherPE))continue;pe.type=ProtoExpectation.RESPONSE_TYPE;pe.merge(otherPE);protoExpectations.splice(i,1);--i;}}\nreturn newPEs;}\nfunction findFrameEventsForAnimations(modelHelper,protoExpectations){const newPEs=[];const frameEventsByPid=getSortedFrameEventsByProcess(modelHelper);for(const pe of protoExpectations){if(pe.type!==ProtoExpectation.ANIMATION_TYPE){newPEs.push(pe);continue;}\nconst frameEvents=[];for(const pid of Object.keys(modelHelper.rendererHelpers)){const range=tr.b.math.Range.fromExplicitRange(pe.start,pe.end);frameEvents.push.apply(frameEvents,range.filterArray(frameEventsByPid[pid],e=>e.start));}\nif(frameEvents.length===0&&!(pe.initiatorType===INITIATOR_TYPE.WEBGL||pe.initiatorType===INITIATOR_TYPE.VR)){pe.type=ProtoExpectation.IGNORED_TYPE;newPEs.push(pe);continue;}\npe.associatedEvents.addEventSet(frameEvents);newPEs.push(pe);}\nreturn newPEs;}\nfunction checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn){const handledEvents=[];protoExpectations.forEach(function(protoExpectation){protoExpectation.associatedEvents.forEach(function(event){if((event.title===CSS_ANIMATION_TITLE)&&(event.subSlices.length>0)){return;}\nif((handledEvents.indexOf(event)>=0)&&(!isImplFrameEvent(event))){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});return;}\nhandledEvents.push(event);});});sortedInputEvents.forEach(function(event){if(handledEvents.indexOf(event)<0){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});}});}\nfunction findInputExpectations(modelHelper){let warning;function warn(w){if(warning)return;warning=w;}\nconst sortedInputEvents=getSortedInputEvents(modelHelper);let protoExpectations=findProtoExpectations(modelHelper,sortedInputEvents,warn);protoExpectations=postProcessProtoExpectations(modelHelper,protoExpectations);checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn);if(warning)modelHelper.model.importWarning(warning);const expectations=[];protoExpectations.forEach(function(protoExpectation){const ir=protoExpectation.createInteractionRecord(modelHelper.model);if(ir){expectations.push(ir);}});return expectations;}\nreturn{findInputExpectations,compareEvents,CSS_ANIMATION_TITLE,VR_EXPECTATION_EVENTS,WEBXR_INSTANT_EVENTS,};});'use strict';tr.exportTo('tr.b',function(){class FixedColorScheme{constructor(namesToColors){this.namesToColors_=namesToColors;}\nstatic fromNames(names){const namesToColors=new Map();const generator=new tr.b.SinebowColorGenerator();for(const name of names){namesToColors.set(name,generator.colorForKey(name));}\nreturn new FixedColorScheme(namesToColors);}\ngetColor(name){const color=this.namesToColors_.get(name);if(color===undefined)throw new Error('Unknown color: '+name);return color;}}\nconst MemoryColumnColorScheme=new FixedColorScheme(new Map([['used_memory_column',new tr.b.Color(0,0,255)],['older_used_memory_column',new tr.b.Color(153,204,255)],['tracing_memory_column',new tr.b.Color(153,153,153)]]));function FixedColorSchemeRegistry(){}\nFixedColorSchemeRegistry.lookUp=function(name){const info=this.findTypeInfoMatching(info=>info.metadata.name===name);if(!info)return undefined;return info.constructor();};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(FixedColorSchemeRegistry,options);return{MemoryColumnColorScheme,FixedColorScheme,FixedColorSchemeRegistry,};});'use strict';tr.exportTo('tr.e.chrome.chrome_processes',function(){const CHROME_PROCESS_NAMES={BROWSER:'browser_process',RENDERER:'renderer_processes',ALL:'all_processes',GPU:'gpu_process',PPAPI:'ppapi_process',UNKNOWN:'unknown_processes',};const PROCESS_COLOR_SCHEME_NAME='ChromeProcessNames';const PROCESS_COLOR_SCHEME=tr.b.FixedColorScheme.fromNames(Object.values(CHROME_PROCESS_NAMES));tr.b.FixedColorSchemeRegistry.register(()=>PROCESS_COLOR_SCHEME,{name:PROCESS_COLOR_SCHEME_NAME,});function canonicalizeName(name){return name.toLowerCase().replace(' ','_');}\nfunction canonicalizeProcessName(rawProcessName){if(!rawProcessName)return CHROME_PROCESS_NAMES.UNKNOWN;const baseCanonicalName=canonicalizeName(rawProcessName);switch(baseCanonicalName){case'renderer':return CHROME_PROCESS_NAMES.RENDERER;case'browser':return CHROME_PROCESS_NAMES.BROWSER;}\nif(Object.values(CHROME_PROCESS_NAMES).includes(baseCanonicalName)){return baseCanonicalName;}\nreturn CHROME_PROCESS_NAMES.UNKNOWN;}\nreturn{CHROME_PROCESS_NAMES,PROCESS_COLOR_SCHEME,PROCESS_COLOR_SCHEME_NAME,canonicalizeName,canonicalizeProcessName,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function perceptualBlend(ir,index,score){return Math.exp(1-score);}\nfunction filterExpectationsByRange(irs,opt_range){const filteredExpectations=[];irs.forEach(function(ir){if(!(ir instanceof tr.model.um.UserExpectation))return;if(!opt_range||opt_range.intersectsExplicitRangeInclusive(ir.start,ir.end)){filteredExpectations.push(ir);}});return filteredExpectations;}\nfunction splitGlobalDumpsByBrowserName(model,opt_rangeOfInterest){const chromeModelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const browserNameToGlobalDumps=new Map();const globalDumpToBrowserHelper=new WeakMap();if(chromeModelHelper){chromeModelHelper.browserHelpers.forEach(function(helper){const globalDumps=skipDumpsThatDoNotIntersectRange(helper.process.memoryDumps.map(d=>d.globalMemoryDump),opt_rangeOfInterest);globalDumps.forEach(function(globalDump){const existingHelper=globalDumpToBrowserHelper.get(globalDump);if(existingHelper!==undefined){throw new Error('Memory dump ID clash across multiple browsers '+'with PIDs: '+existingHelper.pid+' and '+helper.pid);}\nglobalDumpToBrowserHelper.set(globalDump,helper);});makeKeyUniqueAndSet(browserNameToGlobalDumps,tr.e.chrome.chrome_processes.canonicalizeName(helper.browserName),globalDumps);});}\nconst unclassifiedGlobalDumps=skipDumpsThatDoNotIntersectRange(model.globalMemoryDumps.filter(g=>!globalDumpToBrowserHelper.has(g)),opt_rangeOfInterest);if(unclassifiedGlobalDumps.length>0){makeKeyUniqueAndSet(browserNameToGlobalDumps,'unknown_browser',unclassifiedGlobalDumps);}\nreturn browserNameToGlobalDumps;}\nfunction makeKeyUniqueAndSet(map,key,value){let uniqueKey=key;let nextIndex=2;while(map.has(uniqueKey)){uniqueKey=key+nextIndex;nextIndex++;}\nmap.set(uniqueKey,value);}\nfunction skipDumpsThatDoNotIntersectRange(dumps,opt_range){if(!opt_range)return dumps;return dumps.filter(d=>opt_range.intersectsExplicitRangeInclusive(d.start,d.end));}\nfunction hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nreturn{hasCategoryAndName,filterExpectationsByRange,perceptualBlend,splitGlobalDumpsByBrowserName};});'use strict';tr.exportTo('tr.e.chrome',function(){const CHROME_INTERNAL_URLS=['','about:blank','data:text/html,pluginplaceholderdata','chrome-error://chromewebdata/'];const SCHEDULER_TOP_LEVEL_TASK_TITLE='ThreadControllerImpl::RunTask';const SCHEDULER_TOP_LEVEL_TASKS=new Set([SCHEDULER_TOP_LEVEL_TASK_TITLE,'ThreadControllerImpl::DoWork','TaskQueueManager::ProcessTaskFromWorkQueue']);class EventFinderUtils{static hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nstatic*getMainThreadEvents(rendererHelper,eventTitle,eventCategory){if(!rendererHelper.mainThread)return;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(rendererHelper.isTelemetryInternalEvent(ev))continue;if(!this.hasCategoryAndName(ev,eventCategory,eventTitle)){continue;}\nyield ev;}}\nstatic getNetworkEventsInRange(process,range){const networkEvents=[];for(const thread of Object.values(process.threads)){const threadHelper=new tr.model.helpers.ChromeThreadHelper(thread);const events=threadHelper.getNetworkEvents();for(const event of events){if(range.intersectsExplicitRangeInclusive(event.start,event.end)){networkEvents.push(event);}}}\nreturn networkEvents;}\nstatic getSortedMainThreadEventsByFrame(rendererHelper,eventTitle,eventCategory){const eventsByFrame=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;if(!eventsByFrame.has(frameIdRef)){eventsByFrame.set(frameIdRef,[]);}\neventsByFrame.get(frameIdRef).push(ev);}\nreturn eventsByFrame;}\nstatic getSortedMainThreadEventsByNavId(rendererHelper,eventTitle,eventCategory){const eventsByNavId=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){if(ev.args.data===undefined)continue;const navIdRef=ev.args.data.navigationId;if(navIdRef===undefined)continue;eventsByNavId.set(navIdRef,ev);}\nreturn eventsByNavId;}\nstatic findLastEventStartingOnOrBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}\nstatic findLastEventStartingBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}\nstatic findNextEventStartingOnOrAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}\nreturn sortedEvents[firstIndexOnOrAfterTimestamp];}\nstatic findNextEventStartingAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}\nreturn sortedEvents[firstIndexOnOrAfterTimestamp];}\nstatic findToplevelSchedulerTasks(mainThread){const tasks=[];for(const task of mainThread.findTopmostSlices(slice=>slice.category==='toplevel'&&SCHEDULER_TOP_LEVEL_TASKS.has(slice.title))){tasks.push(task);}\nreturn tasks;}}\nreturn{EventFinderUtils,CHROME_INTERNAL_URLS,SCHEDULER_TOP_LEVEL_TASK_TITLE,};});'use strict';tr.exportTo('tr.e.chrome',function(){const TIME_TO_INTERACTIVE_WINDOW_SIZE_MS=5000;const ACTIVE_REQUEST_TOLERANCE=2;const FCI_MIN_CLUSTER_SEPARATION_MS=1000;const TASK_CLUSTER_HEAVINESS_THRESHOLD_MS=250;const ENDPOINT_TYPES={LONG_TASK_START:'LONG_TASK_START',LONG_TASK_END:'LONG_TASK_END',REQUEST_START:'REQUEST_START',REQUEST_END:'REQUEST_END'};function getEndpoints_(events,startType,endType){const endpoints=[];for(const event of events){endpoints.push({time:event.start,type:startType});endpoints.push({time:event.end,type:endType});}\nreturn endpoints;}\nfunction reachedTTIQuiscence_(timestamp,networkQuietWindowStart,mainThreadQuietWindowStart){if(networkQuietWindowStart===undefined||mainThreadQuietWindowStart===undefined){return false;}\nconst mainThreadQuietForLongEnough=timestamp-mainThreadQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;const networkQuietForLongEnough=timestamp-networkQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;return mainThreadQuietForLongEnough&&networkQuietForLongEnough;}\nfunction findInteractiveTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow,networkRequests){const longTaskEndpoints=getEndpoints_(longTasksInWindow,ENDPOINT_TYPES.LONG_TASK_START,ENDPOINT_TYPES.LONG_TASK_END);const networkRequestEndpoints=getEndpoints_(networkRequests,ENDPOINT_TYPES.REQUEST_START,ENDPOINT_TYPES.REQUEST_END);const endpoints=longTaskEndpoints.concat(networkRequestEndpoints);endpoints.sort((a,b)=>a.time-b.time);let networkQuietWindowStart=searchBegin;let mainThreadQuietWindowStart=searchBegin;let interactiveCandidate=undefined;let activeRequests=0;for(const endpoint of endpoints){if(reachedTTIQuiscence_(endpoint.time,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;break;}\nswitch(endpoint.type){case ENDPOINT_TYPES.LONG_TASK_START:mainThreadQuietWindowStart=undefined;break;case ENDPOINT_TYPES.LONG_TASK_END:mainThreadQuietWindowStart=endpoint.time;break;case ENDPOINT_TYPES.REQUEST_START:activeRequests++;if(activeRequests>ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=undefined;}\nbreak;case ENDPOINT_TYPES.REQUEST_END:activeRequests--;if(activeRequests===ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=endpoint.time;}\nbreak;default:throw new Error('Internal Error: Unhandled endpoint type.');}}\nif(interactiveCandidate===undefined&&reachedTTIQuiscence_(searchEnd,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;}\nif(interactiveCandidate===undefined)return undefined;return Math.max(interactiveCandidate,domContentLoadedEnd);}\nfunction requiredFCIWindowSizeMs(timeSinceSearchBeginMs){const timeCoefficient=1/15*Math.log(2);const timeSinceSearchBeginSeconds=tr.b.convertUnit(timeSinceSearchBeginMs,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const windowSizeSeconds=4*Math.exp(-timeCoefficient*timeSinceSearchBeginSeconds)+1;return tr.b.convertUnit(windowSizeSeconds,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);}\nclass TaskCluster{constructor(tasksInClusterSorted){if(tasksInClusterSorted.length===0){throw new Error('Internal Error: TaskCluster must have non zero tasks');}\nfor(let i=0;i<tasksInClusterSorted.length-1;i++){const durationBetweenTasks=tasksInClusterSorted[i+1].start-\ntasksInClusterSorted[i].end;if(durationBetweenTasks>=FCI_MIN_CLUSTER_SEPARATION_MS){throw new Error('Internal Error: Tasks in a TaskCluster cannot be '+'more than '+FCI_MIN_CLUSTER_SEPARATION_MS+' miliseconds apart');}\nif(durationBetweenTasks<-1e7){throw new Error('Internal Error: List of tasks used to construct '+'TaskCluster must be sorted.');}}\nthis._clusterTasks=tasksInClusterSorted;}\nget start(){return this._clusterTasks[0].start;}\nget end(){return this._clusterTasks[this._clusterTasks.length-1].end;}\nisHeavy(){return this.end-this.start>TASK_CLUSTER_HEAVINESS_THRESHOLD_MS;}}\nfunction findFCITaskClusters(sortedLongTasks){const clusters=[];if(sortedLongTasks.length===0)return clusters;const firstTask=sortedLongTasks[0];const restOfTasks=sortedLongTasks.slice(1);let currentClusterTasks=[firstTask];for(const currTask of restOfTasks){const prevTask=currentClusterTasks[currentClusterTasks.length-1];if(currTask.start-prevTask.end<FCI_MIN_CLUSTER_SEPARATION_MS){currentClusterTasks.push(currTask);}else{clusters.push(new TaskCluster(currentClusterTasks));currentClusterTasks=[currTask];}}\nclusters.push(new TaskCluster(currentClusterTasks));return clusters;}\nfunction reachedFCIQuiescence_(timestamp,mainThreadQuietWindowStart,searchBegin){const quietWindowSize=timestamp-mainThreadQuietWindowStart;const timeSinceSearchBegin=mainThreadQuietWindowStart-searchBegin;const requiredWindowSize=requiredFCIWindowSizeMs(timeSinceSearchBegin);return quietWindowSize>requiredWindowSize;}\nfunction findFirstCpuIdleTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow){const sortedLongTasks=longTasksInWindow.sort((a,b)=>a.start-b.start);const taskClusters=findFCITaskClusters(sortedLongTasks);const heavyTaskClusters=taskClusters.filter(cluster=>cluster.isHeavy());let quietWindowBegin=searchBegin;let fiCandidate=undefined;for(const cluster of heavyTaskClusters){if(reachedFCIQuiescence_(cluster.start,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;break;}\nquietWindowBegin=cluster.end;}\nif(fiCandidate===undefined){if(reachedFCIQuiescence_(searchEnd,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;}else{return undefined;}}\nreturn Math.max(fiCandidate,domContentLoadedEnd);}\nreturn{findInteractiveTime,findFirstCpuIdleTime,requiredFCIWindowSizeMs,findFCITaskClusters,};});'use strict';tr.exportTo('tr.model.um',function(){const LOAD_SUBTYPE_NAMES={SUCCESSFUL:'Successful',FAILED:'Failed',};const DOES_LOAD_SUBTYPE_NAME_EXIST={};for(const key in LOAD_SUBTYPE_NAMES){DOES_LOAD_SUBTYPE_NAME_EXIST[LOAD_SUBTYPE_NAMES[key]]=true;}\nfunction LoadExpectation(parentModel,initiatorTitle,start,duration,renderer,navigationStart,fmpEvent,fcpEvent,dclEndEvent,cpuIdleTime,timeToInteractive,totalBlockingTime,url,frameId){if(!DOES_LOAD_SUBTYPE_NAME_EXIST[initiatorTitle]){throw new Error(initiatorTitle+' is not in LOAD_SUBTYPE_NAMES');}\ntr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.renderProcess=renderer;this.renderMainThread=undefined;this.routingId=undefined;this.parentRoutingId=undefined;this.loadFinishedEvent=undefined;this.navigationStart=navigationStart;this.fmpEvent=fmpEvent;this.fcpEvent=fcpEvent;this.domContentLoadedEndEvent=dclEndEvent;this.firstCpuIdleTime=cpuIdleTime;this.timeToInteractive=timeToInteractive;this.totalBlockingTime=totalBlockingTime;this.url=url;this.frameId=frameId;}\nLoadExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:LoadExpectation};tr.model.um.UserExpectation.subTypes.register(LoadExpectation,{stageTitle:'Load',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_load')});return{LOAD_SUBTYPE_NAMES,LoadExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const LONG_TASK_THRESHOLD_MS=50;const IGNORE_URLS=['','about:blank',];function findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,ts){const objects=rendererHelper.process.objects;const frameLoaderInstances=objects.instancesByTypeName_.FrameLoader;if(frameLoaderInstances===undefined)return undefined;let snapshot;for(const instance of frameLoaderInstances){if(!instance.isAliveAt(ts))continue;const maybeSnapshot=instance.getSnapshotAt(ts);if(frameIdRef!==maybeSnapshot.args.frame.id_ref)continue;snapshot=maybeSnapshot;}\nreturn snapshot;}\nfunction findFirstMeaningfulPaintCandidates(rendererHelper){const candidatesForFrameId={};for(const ev of rendererHelper.process.getDescendantEvents()){if(!tr.e.chrome.EventFinderUtils.hasCategoryAndName(ev,'loading','firstMeaningfulPaintCandidate')){continue;}\nif(rendererHelper.isTelemetryInternalEvent(ev))continue;const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;let list=candidatesForFrameId[frameIdRef];if(list===undefined){candidatesForFrameId[frameIdRef]=list=[];}\nlist.push(ev);}\nreturn candidatesForFrameId;}\nfunction computeTotalBlockingTime_(fcpTime,interactiveTime,topLevelTasks){let sumBlockingTime=0;for(const event of topLevelTasks){if(event.duration<LONG_TASK_THRESHOLD_MS)continue;if(event.end<fcpTime)continue;if(event.start>interactiveTime)continue;const clippedStart=Math.max(event.start,fcpTime);const clippedEnd=Math.min(event.end,interactiveTime);const clippedDuration=clippedEnd-clippedStart;if(clippedDuration<LONG_TASK_THRESHOLD_MS)continue;sumBlockingTime+=(clippedDuration-LONG_TASK_THRESHOLD_MS);}\nreturn sumBlockingTime;}\nfunction computeInteractivityMetricSample_(rendererHelper,navigationStart,fcpEvent,domContentLoadedEndEvent,searchWindowEnd){if(domContentLoadedEndEvent===undefined||fcpEvent===undefined){return{interactiveTime:undefined,firstCpuIdleTime:undefined,totalBlockingTime:undefined};}\nconst firstContentfulPaintTime=fcpEvent.start;const mainThreadTasks=tr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread);const longTasks=mainThreadTasks.filter(task=>task.duration>=LONG_TASK_THRESHOLD_MS);const longTasksInWindow=longTasks.filter(task=>task.range.intersectsExplicitRangeInclusive(firstContentfulPaintTime,searchWindowEnd));const resourceLoadEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd));const firstCpuIdleTime=tr.e.chrome.findFirstCpuIdleTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow);const interactiveTime=resourceLoadEvents.length>0?tr.e.chrome.findInteractiveTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow,resourceLoadEvents):undefined;const totalBlockingTime=interactiveTime?computeTotalBlockingTime_(fcpEvent.start,interactiveTime,longTasks):undefined;return{interactiveTime,firstCpuIdleTime,totalBlockingTime};}\nfunction constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpEvent,searchWindowEnd,url,frameId){const searchRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd);const dclTimesForFrame=frameToDomContentLoadedEndEvents.get(frameId)||[];const dclTimesInWindow=searchRange.filterArray(dclTimesForFrame,event=>event.start);let domContentLoadedEndEvent=undefined;if(dclTimesInWindow.length!==0){domContentLoadedEndEvent=dclTimesInWindow[dclTimesInWindow.length-1];}\nconst fcpForFrame=frameToFcpEvents.get(frameId)||[];const fcpInWindow=searchRange.filterArray(fcpForFrame,event=>event.start);const fcpEvent=fcpInWindow[0];const{interactiveTime,firstCpuIdleTime,totalBlockingTime}=computeInteractivityMetricSample_(rendererHelper,navigationStart,fcpEvent,domContentLoadedEndEvent,searchWindowEnd);const duration=(interactiveTime===undefined)?searchWindowEnd-navigationStart.start:interactiveTime-navigationStart.start;return new tr.model.um.LoadExpectation(rendererHelper.modelHelper.model,tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL,navigationStart.start,duration,rendererHelper.process,navigationStart,fmpEvent,fcpEvent,domContentLoadedEndEvent,firstCpuIdleTime,interactiveTime,totalBlockingTime,url,frameId);}\nfunction collectLoadExpectationsForRenderer(rendererHelper){const samples=[];const frameToNavStartEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const frameToDomContentLoadedEndEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'domContentLoadedEventEnd','blink.user_timing');const frameToFcpEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'firstContentfulPaint','loading');function addSamples(frameIdRef,navigationStart,fmpCandidateEvents,searchWindowEnd,url){let fmpMarkerEvent=tr.e.chrome.EventFinderUtils.findLastEventStartingOnOrBeforeTimestamp(fmpCandidateEvents,searchWindowEnd);if(fmpMarkerEvent!==undefined&&navigationStart.start>fmpMarkerEvent.start){fmpMarkerEvent=undefined;}\nsamples.push(constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpMarkerEvent,searchWindowEnd,url,frameIdRef));}\nconst candidatesForFrameId=findFirstMeaningfulPaintCandidates(rendererHelper);for(const[frameIdRef,navStartEvents]of frameToNavStartEvents){const fmpCandidateEvents=candidatesForFrameId[frameIdRef]||[];let prevNavigation={navigationEvent:undefined,url:undefined};for(let index=0;index<navStartEvents.length;index++){const currNavigation=navStartEvents[index];let url;let isLoadingMainFrame=false;if(currNavigation.args.data){url=currNavigation.args.data.documentLoaderURL;isLoadingMainFrame=currNavigation.args.data.isLoadingMainFrame;}else{const snapshot=findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,currNavigation.start);if(snapshot){url=snapshot.args.documentLoaderURL;isLoadingMainFrame=snapshot.args.isLoadingMainFrame;}}\nif(!isLoadingMainFrame)continue;if(url===undefined||IGNORE_URLS.includes(url))continue;if(prevNavigation.navigationEvent!==undefined){addSamples(frameIdRef,prevNavigation.navigationEvent,fmpCandidateEvents,currNavigation.start,prevNavigation.url);}\nprevNavigation={navigationEvent:currNavigation,url};}\nif(prevNavigation.navigationEvent!==undefined){addSamples(frameIdRef,prevNavigation.navigationEvent,fmpCandidateEvents,rendererHelper.modelHelper.chromeBounds.max,prevNavigation.url);}}\nreturn samples;}\nfunction findLoadExpectations(modelHelper){const loads=[];const chromeHelper=modelHelper.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;loads.push.apply(loads,collectLoadExpectationsForRenderer(rendererHelper));}\nreturn loads;}\nreturn{findLoadExpectations,};});'use strict';tr.exportTo('tr.model.um',function(){function StartupExpectation(parentModel,start,duration){tr.model.um.UserExpectation.call(this,parentModel,'',start,duration);}\nStartupExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:StartupExpectation};tr.model.um.UserExpectation.subTypes.register(StartupExpectation,{stageTitle:'Startup',colorId:tr.b.ColorScheme.getColorIdForReservedName('startup')});return{StartupExpectation,};});'use strict';tr.exportTo('tr.importer',function(){function getAllFrameEvents(modelHelper){const frameEvents=[];frameEvents.push.apply(frameEvents,modelHelper.browserHelper.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds));for(const renderer of Object.values(modelHelper.rendererHelpers)){frameEvents.push.apply(frameEvents,renderer.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds));}\nreturn frameEvents.sort(tr.importer.compareEvents);}\nfunction getStartupEvents(modelHelper){function isStartupSlice(slice){return slice.title==='BrowserMainLoop::CreateThreads';}\nconst events=modelHelper.browserHelper.getAllAsyncSlicesMatching(isStartupSlice);const deduper=new tr.model.EventSet();events.forEach(function(event){const sliceGroup=event.parentContainer.sliceGroup;const slice=sliceGroup&&sliceGroup.findFirstSlice();if(slice){deduper.push(slice);}});return deduper.toArray();}\nfunction findStartupExpectations(modelHelper){const openingEvents=getStartupEvents(modelHelper);const closingEvents=getAllFrameEvents(modelHelper);const startups=[];openingEvents.forEach(function(openingEvent){closingEvents.forEach(function(closingEvent){if(openingEvent.closingEvent)return;if(closingEvent.openingEvent)return;if(closingEvent.start<=openingEvent.start)return;if(openingEvent.parentContainer.parent.pid!==closingEvent.parentContainer.parent.pid){return;}\nopeningEvent.closingEvent=closingEvent;closingEvent.openingEvent=openingEvent;const se=new tr.model.um.StartupExpectation(modelHelper.model,openingEvent.start,closingEvent.end-openingEvent.start);se.associatedEvents.push(openingEvent);se.associatedEvents.push(closingEvent);startups.push(se);});});return startups;}\nreturn{findStartupExpectations,};});'use strict';tr.exportTo('tr.model',function(){function getAssociatedEvents(irs){const allAssociatedEvents=new tr.model.EventSet();irs.forEach(function(ir){ir.associatedEvents.forEach(function(event){if(event instanceof tr.model.FlowEvent)return;allAssociatedEvents.push(event);});});return allAssociatedEvents;}\nfunction getUnassociatedEvents(model,associatedEvents){const unassociatedEvents=new tr.model.EventSet();for(const proc of model.getAllProcesses()){for(const thread of Object.values(proc.threads)){for(const event of thread.sliceGroup.getDescendantEvents()){if(!associatedEvents.contains(event)){unassociatedEvents.push(event);}}}}\nreturn unassociatedEvents;}\nfunction getTotalCpuDuration(events){let cpuMs=0;events.forEach(function(event){if(event.cpuSelfTime){cpuMs+=event.cpuSelfTime;}});return cpuMs;}\nfunction getIRCoverageFromModel(model){const associatedEvents=getAssociatedEvents(model.userModel.expectations);if(!associatedEvents.length)return undefined;const unassociatedEvents=getUnassociatedEvents(model,associatedEvents);const associatedCpuMs=getTotalCpuDuration(associatedEvents);const unassociatedCpuMs=getTotalCpuDuration(unassociatedEvents);const totalEventCount=associatedEvents.length+unassociatedEvents.length;const totalCpuMs=associatedCpuMs+unassociatedCpuMs;let coveredEventsCpuTimeRatio=undefined;if(totalCpuMs!==0){coveredEventsCpuTimeRatio=associatedCpuMs/totalCpuMs;}\nreturn{associatedEventsCount:associatedEvents.length,unassociatedEventsCount:unassociatedEvents.length,associatedEventsCpuTimeMs:associatedCpuMs,unassociatedEventsCpuTimeMs:unassociatedCpuMs,coveredEventsCountRatio:associatedEvents.length/totalEventCount,coveredEventsCpuTimeRatio};}\nreturn{getIRCoverageFromModel,getAssociatedEvents,getUnassociatedEvents,};});'use strict';tr.exportTo('tr.model.um',function(){function IdleExpectation(parentModel,start,duration){const initiatorTitle='';tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);}\nIdleExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:IdleExpectation};tr.model.um.UserExpectation.subTypes.register(IdleExpectation,{stageTitle:'Idle',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_idle')});return{IdleExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const INSIGNIFICANT_MS=1;class UserModelBuilder{constructor(model){this.model=model;this.modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);}\nstatic supportsModelHelper(modelHelper){return modelHelper.browserHelper!==undefined;}\nbuildUserModel(){if(!this.modelHelper||!this.modelHelper.browserHelper)return;try{for(const ue of this.findUserExpectations()){this.model.userModel.expectations.push(ue);}\nthis.model.userModel.segments.push(...this.findSegments());}catch(error){this.model.importWarning({type:'UserModelBuilder',message:error,showToUser:true});}}\nfindSegments(){let timestamps=new Set();for(const expectation of this.model.userModel.expectations){timestamps.add(expectation.start);timestamps.add(expectation.end);}\ntimestamps=[...timestamps];timestamps.sort((x,y)=>x-y);const segments=[];for(let i=0;i<timestamps.length-1;++i){const segment=new tr.model.um.Segment(timestamps[i],timestamps[i+1]-timestamps[i]);segments.push(segment);const segmentRange=tr.b.math.Range.fromExplicitRange(segment.start,segment.end);for(const expectation of this.model.userModel.expectations){const expectationRange=tr.b.math.Range.fromExplicitRange(expectation.start,expectation.end);if(segmentRange.intersectsRangeExclusive(expectationRange)){segment.expectations.push(expectation);}}}\nreturn segments;}\nfindUserExpectations(){const expectations=[];expectations.push.apply(expectations,tr.importer.findStartupExpectations(this.modelHelper));expectations.push.apply(expectations,tr.importer.findLoadExpectations(this.modelHelper));expectations.push.apply(expectations,tr.importer.findInputExpectations(this.modelHelper));expectations.push.apply(expectations,this.findIdleExpectations(expectations));this.collectUnassociatedEvents_(expectations);return expectations;}\ncollectUnassociatedEvents_(expectations){const vacuumUEs=[];for(const expectation of expectations){if(expectation instanceof tr.model.um.IdleExpectation||expectation instanceof tr.model.um.LoadExpectation||expectation instanceof tr.model.um.StartupExpectation){vacuumUEs.push(expectation);}}\nif(vacuumUEs.length===0)return;const allAssociatedEvents=tr.model.getAssociatedEvents(expectations);const unassociatedEvents=tr.model.getUnassociatedEvents(this.model,allAssociatedEvents);for(const event of unassociatedEvents){if(!(event instanceof tr.model.ThreadSlice))continue;if(!event.isTopLevel)continue;for(let index=0;index<vacuumUEs.length;++index){const expectation=vacuumUEs[index];if((event.start>=expectation.start)&&(event.start<expectation.end)){expectation.associatedEvents.addEventSet(event.entireHierarchy);break;}}}}\nfindIdleExpectations(otherUEs){if(this.model.bounds.isEmpty)return;const emptyRanges=tr.b.math.findEmptyRangesBetweenRanges(tr.b.math.convertEventsToRanges(otherUEs),this.model.bounds);const expectations=[];const model=this.model;for(const range of emptyRanges){if(range.max<(range.min+INSIGNIFICANT_MS))continue;expectations.push(new tr.model.um.IdleExpectation(model,range.min,range.max-range.min));}\nreturn expectations;}}\nfunction createCustomizeModelLinesFromModel(model){const modelLines=[];modelLines.push('      audits.addEvent(model.browserMain,');modelLines.push('          {title: \\'model start\\', start: 0, end: 1});');const typeNames={};for(const typeName in tr.e.cc.INPUT_EVENT_TYPE_NAMES){typeNames[tr.e.cc.INPUT_EVENT_TYPE_NAMES[typeName]]=typeName;}\nlet modelEvents=new tr.model.EventSet();for(const ue of model.userModel.expectations){modelEvents.addEventSet(ue.sourceEvents);}\nmodelEvents=modelEvents.toArray();modelEvents.sort(tr.importer.compareEvents);for(const event of modelEvents){const startAndEnd='start: '+parseInt(event.start)+', '+'end: '+parseInt(event.end)+'});';if(event instanceof tr.e.cc.InputLatencyAsyncSlice){modelLines.push('      audits.addInputEvent(model, INPUT_TYPE.'+\ntypeNames[event.typeName]+',');}else if(event.title==='RenderFrameImpl::didCommitProvisionalLoad'){modelLines.push('      audits.addCommitLoadEvent(model,');}else if(event.title==='InputHandlerProxy::HandleGestureFling::started'){modelLines.push('      audits.addFlingAnimationEvent(model,');}else if(event.title===tr.model.helpers.IMPL_RENDERING_STATS){modelLines.push('      audits.addFrameEvent(model,');}else if(event.title===tr.importer.CSS_ANIMATION_TITLE){modelLines.push('      audits.addEvent(model.rendererMain, {');modelLines.push('        title: \\'Animation\\', '+startAndEnd);return;}else{throw new Error('You must extend createCustomizeModelLinesFromModel()'+'to support this event:\\n'+event.title+'\\n');}\nmodelLines.push('          {'+startAndEnd);}\nmodelLines.push('      audits.addEvent(model.browserMain,');modelLines.push('          {'+'title: \\'model end\\', '+'start: '+(parseInt(model.bounds.max)-1)+', '+'end: '+parseInt(model.bounds.max)+'});');return modelLines;}\nfunction createExpectedUELinesFromModel(model){const expectedLines=[];const ueCount=model.userModel.expectations.length;for(let index=0;index<ueCount;++index){const expectation=model.userModel.expectations[index];let ueString='      {';ueString+='title: \\''+expectation.title+'\\', ';ueString+='start: '+parseInt(expectation.start)+', ';ueString+='end: '+parseInt(expectation.end)+', ';ueString+='eventCount: '+expectation.sourceEvents.length;ueString+='}';if(index<(ueCount-1))ueString+=',';expectedLines.push(ueString);}\nreturn expectedLines;}\nfunction createUEFinderTestCaseStringFromModel(model){const filename=window.location.hash.substr(1);let testName=filename.substr(filename.lastIndexOf('/')+1);testName=testName.substr(0,testName.indexOf('.'));try{const testLines=[];testLines.push('  /*');testLines.push('    This test was generated from');testLines.push('    '+filename+'');testLines.push('   */');testLines.push('  test(\\''+testName+'\\', function() {');testLines.push('    const verifier = new UserExpectationVerifier();');testLines.push('    verifier.customizeModelCallback = function(model) {');testLines.push.apply(testLines,createCustomizeModelLinesFromModel(model));testLines.push('    };');testLines.push('    verifier.expectedUEs = [');testLines.push.apply(testLines,createExpectedUELinesFromModel(model));testLines.push('    ];');testLines.push('    verifier.verify();');testLines.push('  });');return testLines.join('\\n');}catch(error){return error;}}\nreturn{UserModelBuilder,createUEFinderTestCaseStringFromModel,};});'use strict';tr.exportTo('tr.ui.b',function(){function decorate(source,constr){let elements;if(typeof source==='string'){elements=Polymer.dom(tr.doc).querySelectorAll(source);}else{elements=[source];}\nfor(let i=0,el;el=elements[i];i++){if(!(el instanceof constr)){constr.decorate(el);}}}\nfunction define(className,opt_parentConstructor,opt_tagNS){if(typeof className==='function'){throw new Error('Passing functions as className is deprecated. Please '+'use (className, opt_parentConstructor) to subclass');}\nclassName=className.toLowerCase();if(opt_parentConstructor&&!opt_parentConstructor.tagName){throw new Error('opt_parentConstructor was not '+'created by tr.ui.b.define');}\nlet tagName=className;let tagNS=undefined;if(opt_parentConstructor){if(opt_tagNS){throw new Error('Must not specify tagNS if parentConstructor is given');}\nlet parent=opt_parentConstructor;while(parent&&parent.tagName){tagName=parent.tagName;tagNS=parent.tagNS;parent=parent.parentConstructor;}}else{tagNS=opt_tagNS;}\nfunction f(){if(opt_parentConstructor&&f.prototype.__proto__!==opt_parentConstructor.prototype){throw new Error(className+' prototye\\'s __proto__ field is messed up. '+'It MUST be the prototype of '+opt_parentConstructor.tagName);}\nlet el;if(tagNS===undefined){el=tr.doc.createElement(tagName);}else{el=tr.doc.createElementNS(tagNS,tagName);}\nf.decorate.call(this,el,arguments);return el;}\nf.decorate=function(el){el.__proto__=f.prototype;el.decorate.apply(el,arguments[1]);el.constructor=f;};f.className=className;f.tagName=tagName;f.tagNS=tagNS;f.parentConstructor=(opt_parentConstructor?opt_parentConstructor:undefined);f.toString=function(){if(!f.parentConstructor){return f.tagName;}\nreturn f.parentConstructor.toString()+'::'+f.className;};return f;}\nfunction elementIsChildOf(el,potentialParent){if(el===potentialParent)return false;let cur=el;while(Polymer.dom(cur).parentNode){if(cur===potentialParent)return true;cur=Polymer.dom(cur).parentNode;}\nreturn false;}\nreturn{decorate,define,elementIsChildOf,};});'use strict';tr.exportTo('tr.b.math',function(){function Rect(){this.x=0;this.y=0;this.width=0;this.height=0;}\nRect.fromXYWH=function(x,y,w,h){const rect=new Rect();rect.x=x;rect.y=y;rect.width=w;rect.height=h;return rect;};Rect.fromArray=function(ary){if(ary.length!==4){throw new Error('ary.length must be 4');}\nconst rect=new Rect();rect.x=ary[0];rect.y=ary[1];rect.width=ary[2];rect.height=ary[3];return rect;};Rect.prototype={__proto__:Object.prototype,get left(){return this.x;},get top(){return this.y;},get right(){return this.x+this.width;},get bottom(){return this.y+this.height;},toString(){return'Rect('+this.x+', '+this.y+', '+\nthis.width+', '+this.height+')';},toArray(){return[this.x,this.y,this.width,this.height];},clone(){const rect=new Rect();rect.x=this.x;rect.y=this.y;rect.width=this.width;rect.height=this.height;return rect;},enlarge(pad){const rect=new Rect();this.enlargeFast(rect,pad);return rect;},enlargeFast(out,pad){out.x=this.x-pad;out.y=this.y-pad;out.width=this.width+2*pad;out.height=this.height+2*pad;return out;},size(){return{width:this.width,height:this.height};},scale(s){const rect=new Rect();this.scaleFast(rect,s);return rect;},scaleSize(s){return Rect.fromXYWH(this.x,this.y,this.width*s,this.height*s);},scaleFast(out,s){out.x=this.x*s;out.y=this.y*s;out.width=this.width*s;out.height=this.height*s;return out;},translate(v){const rect=new Rect();this.translateFast(rect,v);return rect;},translateFast(out,v){out.x=this.x+v[0];out.y=this.x+v[1];out.width=this.width;out.height=this.height;return out;},asUVRectInside(containingRect){const rect=new Rect();rect.x=(this.x-containingRect.x)/containingRect.width;rect.y=(this.y-containingRect.y)/containingRect.height;rect.width=this.width/containingRect.width;rect.height=this.height/containingRect.height;return rect;},intersects(that){let ok=true;ok&=this.x<that.right;ok&=this.right>that.x;ok&=this.y<that.bottom;ok&=this.bottom>that.y;return ok;},equalTo(rect){return rect&&(this.x===rect.x)&&(this.y===rect.y)&&(this.width===rect.width)&&(this.height===rect.height);}};return{Rect,};});'use strict';tr.exportTo('tr.ui.b',function(){function instantiateTemplate(selector,doc){doc=doc||document;const el=Polymer.dom(doc).querySelector(selector);if(!el){throw new Error('Element not found: '+selector);}\nreturn doc.importNode(el.content,true);}\nfunction windowRectForElement(element){const position=[element.offsetLeft,element.offsetTop];const size=[element.offsetWidth,element.offsetHeight];let node=element.offsetParent;while(node){position[0]+=node.offsetLeft;position[1]+=node.offsetTop;node=node.offsetParent;}\nreturn tr.b.math.Rect.fromXYWH(position[0],position[1],size[0],size[1]);}\nfunction scrollIntoViewIfNeeded(el){const pr=el.parentElement.getBoundingClientRect();const cr=el.getBoundingClientRect();if(cr.top<pr.top){el.scrollIntoView(true);}else if(cr.bottom>pr.bottom){el.scrollIntoView(false);}}\nfunction extractUrlString(url){let extracted=url.replace(/url\\((.*)\\)/,'$1');extracted=extracted.replace(/\\\"(.*)\\\"/,'$1');return extracted;}\nfunction toThreeDigitLocaleString(value){return value.toLocaleString(undefined,{minimumFractionDigits:3,maximumFractionDigits:3});}\nfunction isUnknownElementName(name){return document.createElement(name)instanceof HTMLUnknownElement;}\nreturn{isUnknownElementName,toThreeDigitLocaleString,instantiateTemplate,windowRectForElement,scrollIntoViewIfNeeded,extractUrlString,};});'use strict';tr.exportTo('tr.ui.b',function(){if(tr.isHeadless)return{};const THIS_DOC=document._currentScript.ownerDocument;const Overlay=tr.ui.b.define('overlay');Overlay.prototype={__proto__:HTMLDivElement.prototype,decorate(){Polymer.dom(this).classList.add('overlay');this.parentEl_=this.ownerDocument.body;this.visible_=false;this.userCanClose_=true;this.onKeyDown_=this.onKeyDown_.bind(this);this.onClick_=this.onClick_.bind(this);this.onFocusIn_=this.onFocusIn_.bind(this);this.onDocumentClick_=this.onDocumentClick_.bind(this);this.onClose_=this.onClose_.bind(this);this.addEventListener('visible-change',tr.ui.b.Overlay.prototype.onVisibleChange_.bind(this),true);const createShadowRoot=this.createShadowRoot||this.webkitCreateShadowRoot;this.shadow_=createShadowRoot.call(this);Polymer.dom(this.shadow_).appendChild(tr.ui.b.instantiateTemplate('#overlay-template',THIS_DOC));this.closeBtn_=Polymer.dom(this.shadow_).querySelector('close-button');this.closeBtn_.addEventListener('click',this.onClose_);Polymer.dom(this.shadow_).querySelector('overlay-frame').addEventListener('click',this.onClick_);this.observer_=new MutationObserver(this.didButtonBarMutate_.bind(this));this.observer_.observe(Polymer.dom(this.shadow_).querySelector('button-bar'),{childList:true});Object.defineProperty(this,'title',{get(){return Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent;},set(title){Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent=title;}});},set userCanClose(userCanClose){this.userCanClose_=userCanClose;this.closeBtn_.style.display=userCanClose?'block':'none';},get buttons(){return Polymer.dom(this.shadow_).querySelector('button-bar');},get visible(){return this.visible_;},set visible(newValue){if(this.visible_===newValue)return;this.visible_=newValue;const e=new tr.b.Event('visible-change');this.dispatchEvent(e);},onVisibleChange_(){this.visible_?this.show_():this.hide_();},show_(){Polymer.dom(this.parentEl_).appendChild(this);if(this.userCanClose_){this.addEventListener('keydown',this.onKeyDown_.bind(this));this.addEventListener('click',this.onDocumentClick_.bind(this));this.closeBtn_.addEventListener('click',this.onClose_);}\nthis.parentEl_.addEventListener('focusin',this.onFocusIn_);this.tabIndex=0;const elList=Polymer.dom(this).querySelectorAll('button, input, list, select, a');if(elList.length>0){if(elList[0]===this.closeBtn_){if(elList.length>1)return elList[1].focus();}else{return elList[0].focus();}}\nthis.focus();},hide_(){Polymer.dom(this.parentEl_).removeChild(this);this.parentEl_.removeEventListener('focusin',this.onFocusIn_);if(this.closeBtn_){this.closeBtn_.removeEventListener('click',this.onClose_);}\ndocument.removeEventListener('keydown',this.onKeyDown_);document.removeEventListener('click',this.onDocumentClick_);},onClose_(e){this.visible=false;if((e.type!=='keydown')||(e.type==='keydown'&&e.keyCode===27)){e.stopPropagation();}\ne.preventDefault();tr.b.dispatchSimpleEvent(this,'closeclick');},onFocusIn_(e){let node=e.target;while(node){if(node===this){return;}\nnode=node.parentNode;}\ntr.b.timeout(0).then(()=>this.focus());e.preventDefault();e.stopPropagation();},didButtonBarMutate_(e){const hasButtons=this.buttons.children.length>0;if(hasButtons){Polymer.dom(this.shadow_).querySelector('button-bar').style.display=undefined;}else{Polymer.dom(this.shadow_).querySelector('button-bar').style.display='none';}},onKeyDown_(e){if(e.keyCode===9&&e.shiftKey&&e.target===this){e.preventDefault();return;}\nif(e.keyCode!==27)return;this.onClose_(e);},onClick_(e){e.stopPropagation();},onDocumentClick_(e){if(!this.userCanClose_)return;this.onClose_(e);}};Overlay.showError=function(msg,opt_err){const o=new Overlay();o.title='Error';Polymer.dom(o).textContent=msg;if(opt_err){const e=tr.b.normalizeException(opt_err);const stackDiv=document.createElement('pre');Polymer.dom(stackDiv).textContent=e.stack;stackDiv.style.paddingLeft='8px';stackDiv.style.margin=0;Polymer.dom(o).appendChild(stackDiv);}\nconst b=document.createElement('button');Polymer.dom(b).textContent='OK';b.addEventListener('click',function(){o.visible=false;});Polymer.dom(o.buttons).appendChild(b);o.visible=true;return o;};return{Overlay,};});'use strict';tr.exportTo('tr.importer',function(){const Timing=tr.b.Timing;function ImportOptions(){this.shiftWorldToZero=true;this.pruneEmptyContainers=true;this.showImportWarnings=true;this.trackDetailedModelStats=false;this.customizeModelCallback=undefined;const auditorTypes=tr.c.Auditor.getAllRegisteredTypeInfos();this.auditorConstructors=auditorTypes.map(function(typeInfo){return typeInfo.constructor;});}\nfunction Import(model,opt_options){if(model===undefined){throw new Error('Must provide model to import into.');}\nthis.importing_=false;this.importOptions_=opt_options||new ImportOptions();this.model_=model;this.model_.importOptions=this.importOptions_;}\nImport.prototype={__proto__:Object.prototype,importTraces(traces){const progressMeter={update(msg){}};tr.b.Task.RunSynchronously(this.createImportTracesTask(progressMeter,traces));},importTracesWithProgressDialog(traces){if(tr.isHeadless){throw new Error('Cannot use this method in headless mode.');}\nconst overlay=tr.ui.b.Overlay();overlay.title='Importing...';overlay.userCanClose=false;overlay.msgEl=document.createElement('div');Polymer.dom(overlay).appendChild(overlay.msgEl);overlay.msgEl.style.margin='20px';overlay.update=function(msg){Polymer.dom(this.msgEl).textContent=msg;};overlay.visible=true;const promise=tr.b.Task.RunWhenIdle(this.createImportTracesTask(overlay,traces));promise.then(function(){overlay.visible=false;},function(err){overlay.visible=false;});return promise;},createImportTracesTask(progressMeter,traces){const importStartTimeMs=tr.b.Timing.getCurrentTimeMs();if(this.importing_){throw new Error('Already importing.');}\nthis.importing_=true;const importTask=new tr.b.Task(function prepareImport(){progressMeter.update('I will now import your traces for you...');},this);let lastTask=importTask;const importers=[];function addImportStage(title,callback){lastTask=lastTask.after(()=>progressMeter.update(title));lastTask.updatesUi=true;lastTask=lastTask.after(callback);}\nfunction addStageForEachImporter(title,callback){lastTask=lastTask.after((task)=>{importers.forEach((importer,index)=>{const uiSubTask=task.subTask(()=>{progressMeter.update(`${title} ${index + 1} of ${importers.length}`);});uiSubTask.updatesUi=true;task.subTask(()=>callback(importer));});});}\naddImportStage('Creating importers...',()=>{traces=traces.slice(0);progressMeter.update('Creating importers...');for(let i=0;i<traces.length;++i){importers.push(this.createImporter_(traces[i]));}\nfor(let i=0;i<importers.length;i++){const subtraces=importers[i].extractSubtraces();for(let j=0;j<subtraces.length;j++){try{traces.push(subtraces[j]);importers.push(this.createImporter_(subtraces[j]));}catch(error){this.model_.importWarning({type:error.name,message:error.message,showToUser:true,});continue;}}}\nif(traces.length&&!this.hasEventDataDecoder_(importers)){throw new Error('Could not find an importer for the provided eventData.');}\nimporters.sort(function(x,y){return x.importPriority-y.importPriority;});});addStageForEachImporter('Importing clock sync markers',importer=>importer.importClockSyncMarkers());addStageForEachImporter('Importing',importer=>importer.importEvents());if(this.importOptions_.customizeModelCallback){addImportStage('Customizing',()=>{this.importOptions_.customizeModelCallback(this.model_);});}\naddStageForEachImporter('Importing sample data',importer=>importer.importSampleData());addImportStage('Autoclosing open slices...',()=>{this.model_.autoCloseOpenSlices();this.model_.createSubSlices();});addStageForEachImporter('Finalizing import',importer=>importer.finalizeImport());addImportStage('Initializing objects (step 1/2)...',()=>this.model_.preInitializeObjects());if(this.importOptions_.pruneEmptyContainers){addImportStage('Pruning empty containers...',()=>this.model_.pruneEmptyContainers());}\naddImportStage('Merging kernel with userland...',()=>this.model_.mergeKernelWithUserland());let auditors=[];addImportStage('Adding arbitrary data to model...',()=>{auditors=this.importOptions_.auditorConstructors.map(auditorConstructor=>new auditorConstructor(this.model_));auditors.forEach((auditor)=>{auditor.runAnnotate();auditor.installUserFriendlyCategoryDriverIfNeeded();});});addImportStage('Computing final world bounds...',()=>{this.model_.computeWorldBounds(this.importOptions_.shiftWorldToZero);});addImportStage('Building flow event map...',()=>this.model_.buildFlowEventIntervalTree());addImportStage('Joining object refs...',()=>this.model_.joinRefs());addImportStage('Cleaning up undeleted objects...',()=>this.model_.cleanupUndeletedObjects());addImportStage('Sorting memory dumps...',()=>this.model_.sortMemoryDumps());addImportStage('Finalizing memory dump graphs...',()=>this.model_.finalizeMemoryGraphs());addImportStage('Initializing objects (step 2/2)...',()=>this.model_.initializeObjects());addImportStage('Building event indices...',()=>this.model_.buildEventIndices());addImportStage('Building UserModel...',()=>{const userModelBuilder=new tr.importer.UserModelBuilder(this.model_);userModelBuilder.buildUserModel();});addImportStage('Sorting user expectations...',()=>this.model_.userModel.sortExpectations());addImportStage('Running auditors...',()=>{auditors.forEach(auditor=>auditor.runAudit());});addImportStage('Updating alerts...',()=>this.model_.sortAlerts());addImportStage('Update bounds...',()=>this.model_.updateBounds());addImportStage('Looking for warnings...',()=>{if(!this.model_.isTimeHighResolution){this.model_.importWarning({type:'low_resolution_timer',message:'Trace time is low resolution, trace may be unusable.',showToUser:true});}});lastTask.after(()=>{this.importing_=false;this.model_.stats.traceImportDurationMs=tr.b.Timing.getCurrentTimeMs()-importStartTimeMs;});return importTask;},createImporter_(eventData){const importerConstructor=tr.importer.Importer.findImporterFor(eventData);if(!importerConstructor){throw new Error('Couldn\\'t create an importer for the provided '+'eventData.');}\nreturn new importerConstructor(this.model_,eventData);},hasEventDataDecoder_(importers){for(let i=0;i<importers.length;++i){if(!importers[i].isTraceDataContainer())return true;}\nreturn false;}};return{ImportOptions,Import,};});'use strict';tr.exportTo('tr.ui.b',function(){function readFile(fileBlob){return new Promise(function(resolve,reject){const reader=new FileReader();const filename=fileBlob.name;reader.onload=function(data){resolve(data.target.result);};reader.onerror=function(err){reject(err);};const isBinary=filename.endsWith('.gz')||filename.endsWith('.zip');if(isBinary){reader.readAsArrayBuffer(fileBlob);}else{reader.readAsText(fileBlob);}});}\nreturn{readFile,};});'use strict';tr.exportTo('tr.ui.b',function(){function HotKey(dict){if(dict.eventType===undefined){throw new Error('eventType must be given');}\nif(dict.keyCode===undefined&&dict.keyCodes===undefined){throw new Error('keyCode or keyCodes must be given');}\nif(dict.keyCode!==undefined&&dict.keyCodes!==undefined){throw new Error('Only keyCode or keyCodes can be given');}\nif(dict.callback===undefined){throw new Error('callback must be given');}\nthis.eventType_=dict.eventType;this.keyCodes_=[];if(dict.keyCode){this.pushKeyCode_(dict.keyCode);}else if(dict.keyCodes){dict.keyCodes.forEach(this.pushKeyCode_,this);}\nthis.useCapture_=!!dict.useCapture;this.callback_=dict.callback;this.thisArg_=dict.thisArg!==undefined?dict.thisArg:undefined;this.helpText_=dict.helpText!==undefined?dict.helpText:undefined;}\nHotKey.prototype={get eventType(){return this.eventType_;},get keyCodes(){return this.keyCodes_;},get helpText(){return this.helpText_;},call(e){this.callback_.call(this.thisArg_,e);},pushKeyCode_(keyCode){this.keyCodes_.push(keyCode);}};return{HotKey,};});'use strict';Polymer({is:'tv-ui-b-hotkey-controller',created(){this.isAttached_=false;this.globalMode_=false;this.slavedToParentController_=undefined;this.curHost_=undefined;this.childControllers_=[];this.bubblingKeyDownHotKeys_={};this.capturingKeyDownHotKeys_={};this.bubblingKeyPressHotKeys_={};this.capturingKeyPressHotKeys_={};this.onBubblingKeyDown_=this.onKey_.bind(this,false);this.onCapturingKeyDown_=this.onKey_.bind(this,true);this.onBubblingKeyPress_=this.onKey_.bind(this,false);this.onCapturingKeyPress_=this.onKey_.bind(this,true);},attached(){this.isAttached_=true;const host=this.findHost_();if(host.__hotkeyController){throw new Error('Multiple hotkey controllers attached to this host');}\nhost.__hotkeyController=this;this.curHost_=host;let parentElement;if(host.parentElement){parentElement=host.parentElement;}else{parentElement=Polymer.dom(host).parentNode.host;}\nconst parentController=tr.b.getHotkeyControllerForElement(parentElement);if(parentController){this.slavedToParentController_=parentController;parentController.addChildController_(this);return;}\nhost.addEventListener('keydown',this.onBubblingKeyDown_,false);host.addEventListener('keydown',this.onCapturingKeyDown_,true);host.addEventListener('keypress',this.onBubblingKeyPress_,false);host.addEventListener('keypress',this.onCapturingKeyPress_,true);},detached(){this.isAttached_=false;const host=this.curHost_;if(!host)return;delete host.__hotkeyController;this.curHost_=undefined;if(this.slavedToParentController_){this.slavedToParentController_.removeChildController_(this);this.slavedToParentController_=undefined;return;}\nhost.removeEventListener('keydown',this.onBubblingKeyDown_,false);host.removeEventListener('keydown',this.onCapturingKeyDown_,true);host.removeEventListener('keypress',this.onBubblingKeyPress_,false);host.removeEventListener('keypress',this.onCapturingKeyPress_,true);},addChildController_(controller){const i=this.childControllers_.indexOf(controller);if(i!==-1){throw new Error('Controller already registered');}\nthis.childControllers_.push(controller);},removeChildController_(controller){const i=this.childControllers_.indexOf(controller);if(i===-1){throw new Error('Controller not registered');}\nthis.childControllers_.splice(i,1);return controller;},getKeyMapForEventType_(eventType,useCapture){if(eventType==='keydown'){if(!useCapture){return this.bubblingKeyDownHotKeys_;}\nreturn this.capturingKeyDownHotKeys_;}\nif(eventType==='keypress'){if(!useCapture){return this.bubblingKeyPressHotKeys_;}\nreturn this.capturingKeyPressHotKeys_;}\nthrow new Error('Unsupported key event');},addHotKey(hotKey){if(!(hotKey instanceof tr.ui.b.HotKey)){throw new Error('hotKey must be a tr.ui.b.HotKey');}\nconst keyMap=this.getKeyMapForEventType_(hotKey.eventType,hotKey.useCapture);for(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];if(keyMap[keyCode]){throw new Error('Key is already bound for keyCode='+keyCode);}}\nfor(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];keyMap[keyCode]=hotKey;}\nreturn hotKey;},removeHotKey(hotKey){if(!(hotKey instanceof tr.ui.b.HotKey)){throw new Error('hotKey must be a tr.ui.b.HotKey');}\nconst keyMap=this.getKeyMapForEventType_(hotKey.eventType,hotKey.useCapture);for(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];if(!keyMap[keyCode]){throw new Error('Key is not bound for keyCode='+keyCode);}\nkeyMap[keyCode]=hotKey;}\nfor(let i=0;i<hotKey.keyCodes.length;i++){const keyCode=hotKey.keyCodes[i];delete keyMap[keyCode];}\nreturn hotKey;},get globalMode(){return this.globalMode_;},set globalMode(globalMode){const wasAttached=this.isAttached_;if(wasAttached){this.detached();}\nthis.globalMode_=!!globalMode;if(wasAttached){this.attached();}},get topmostConroller_(){if(this.slavedToParentController_){return this.slavedToParentController_.topmostConroller_;}\nreturn this;},childRequestsGeneralFocus(child){const topmost=this.topmostConroller_;if(topmost.curHost_){if(topmost.curHost_.hasAttribute('tabIndex')){topmost.curHost_.focus();}else{if(document.activeElement){document.activeElement.blur();}}}else{if(document.activeElement){document.activeElement.blur();}}},childRequestsBlur(child){child.blur();const topmost=this.topmostConroller_;if(topmost.curHost_){topmost.curHost_.focus();}},findHost_(){if(this.globalMode_)return wrap(document.body);if(this.parentElement)return this.parentElement;if(!Polymer.dom(this).parentNode)return this.host;let node=this.parentNode;while(Polymer.dom(node).parentNode)node=Polymer.dom(node).parentNode;return node.host;},appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e){const localKeyMap=this.getKeyMapForEventType_(e.type,useCapture);const localHotKey=localKeyMap[e.keyCode];if(localHotKey){matchedHotKeys.push(localHotKey);}\nfor(let i=0;i<this.childControllers_.length;i++){const controller=this.childControllers_[i];controller.appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e);}},onKey_(useCapture,e){if(!useCapture&&e.path[0].tagName==='INPUT')return;let sortedControllers;const matchedHotKeys=[];this.appendMatchingHotKeysTo_(matchedHotKeys,useCapture,e);if(matchedHotKeys.length===0)return false;if(matchedHotKeys.length>1){throw new Error('More than one hotKey is currently unsupported');}\nconst hotKey=matchedHotKeys[0];let prevented=0;prevented|=hotKey.call(e);return!prevented&&e.defaultPrevented;}});'use strict';tr.exportTo('tr.b',function(){function getHotkeyControllerForElement(refElement){let curElement=refElement;while(curElement){if(curElement.tagName==='tv-ui-b-hotkey-controller'){return curElement;}\nif(curElement.__hotkeyController){return curElement.__hotkeyController;}\nif(curElement.parentElement){curElement=curElement.parentElement;continue;}\ncurElement=findHost(curElement);}\nreturn undefined;}\nfunction findHost(initialNode){let node=initialNode;while(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}\nreturn node.host;}\nreturn{getHotkeyControllerForElement,};});'use strict';tr.exportTo('tr.b',function(){function Settings(){return Settings;}\nif(tr.b.unittest&&tr.b.unittest.TestRunner){tr.b.unittest.TestRunner.addEventListener('tr-unittest-will-run',function(){if(tr.isHeadless){Settings.setAlternativeStorageInstance(new HeadlessStorage());}else{Settings.setAlternativeStorageInstance(global.sessionStorage);global.sessionStorage.clear();}});}\nfunction SessionSettings(){return SessionSettings;}\nfunction AddStaticStorageFunctionsToClass_(inputClass,storage){inputClass.storage_=storage;inputClass.get=function(key,opt_default,opt_namespace){key=inputClass.namespace_(key,opt_namespace);const rawVal=inputClass.storage_.getItem(key);if(rawVal===null||rawVal===undefined){return opt_default;}\ntry{return JSON.parse(rawVal).value;}catch(e){inputClass.storage_.removeItem(key);return opt_default;}};inputClass.set=function(key,value,opt_namespace){if(value===undefined){throw new Error('Settings.set: value must not be undefined');}\nconst v=JSON.stringify({value});inputClass.storage_.setItem(inputClass.namespace_(key,opt_namespace),v);};inputClass.keys=function(opt_namespace){const result=[];opt_namespace=opt_namespace||'';for(let i=0;i<inputClass.storage_.length;i++){const key=inputClass.storage_.key(i);if(inputClass.isnamespaced_(key,opt_namespace)){result.push(inputClass.unnamespace_(key,opt_namespace));}}\nreturn result;};inputClass.isnamespaced_=function(key,opt_namespace){return key.indexOf(inputClass.normalize_(opt_namespace))===0;};inputClass.namespace_=function(key,opt_namespace){return inputClass.normalize_(opt_namespace)+key;};inputClass.unnamespace_=function(key,opt_namespace){return key.replace(inputClass.normalize_(opt_namespace),'');};inputClass.normalize_=function(opt_namespace){return inputClass.NAMESPACE+(opt_namespace?opt_namespace+'.':'');};inputClass.setAlternativeStorageInstance=function(instance){inputClass.storage_=instance;};inputClass.getAlternativeStorageInstance=function(){if(!tr.isHeadless&&inputClass.storage_===localStorage){return undefined;}\nreturn inputClass.storage_;};inputClass.NAMESPACE='trace-viewer';}\nfunction HeadlessStorage(){this.length=0;this.hasItem_={};this.items_={};this.itemsAsArray_=undefined;}\nHeadlessStorage.prototype={key(index){return this.itemsAsArray[index];},get itemsAsArray(){if(this.itemsAsArray_!==undefined){return this.itemsAsArray_;}\nconst itemsAsArray=[];for(const k in this.items_){itemsAsArray.push(k);}\nthis.itemsAsArray_=itemsAsArray;return this.itemsAsArray_;},getItem(key){if(!this.hasItem_[key]){return null;}\nreturn this.items_[key];},removeItem(key){if(!this.hasItem_[key]){return;}\nconst value=this.items_[key];delete this.hasItem_[key];delete this.items_[key];this.length--;this.itemsAsArray_=undefined;return value;},setItem(key,value){if(this.hasItem_[key]){this.items_[key]=value;return;}\nthis.items_[key]=value;this.hasItem_[key]=true;this.length++;this.itemsAsArray_=undefined;return value;}};if(tr.isHeadless){AddStaticStorageFunctionsToClass_(Settings,new HeadlessStorage());AddStaticStorageFunctionsToClass_(SessionSettings,new HeadlessStorage());}else{AddStaticStorageFunctionsToClass_(Settings,localStorage);AddStaticStorageFunctionsToClass_(SessionSettings,sessionStorage);}\nreturn{Settings,SessionSettings,};});'use strict';tr.exportTo('tr.ui.b',function(){function createSpan(opt_dictionary){let ownerDocument=document;if(opt_dictionary&&opt_dictionary.ownerDocument){ownerDocument=opt_dictionary.ownerDocument;}\nconst spanEl=ownerDocument.createElement('span');if(opt_dictionary){if(opt_dictionary.className){spanEl.className=opt_dictionary.className;}\nif(opt_dictionary.textContent){Polymer.dom(spanEl).textContent=opt_dictionary.textContent;}\nif(opt_dictionary.tooltip){spanEl.title=opt_dictionary.tooltip;}\nif(opt_dictionary.parent){Polymer.dom(opt_dictionary.parent).appendChild(spanEl);}\nif(opt_dictionary.bold){spanEl.style.fontWeight='bold';}\nif(opt_dictionary.italic){spanEl.style.fontStyle='italic';}\nif(opt_dictionary.marginLeft){spanEl.style.marginLeft=opt_dictionary.marginLeft;}\nif(opt_dictionary.marginRight){spanEl.style.marginRight=opt_dictionary.marginRight;}\nif(opt_dictionary.backgroundColor){spanEl.style.backgroundColor=opt_dictionary.backgroundColor;}\nif(opt_dictionary.color){spanEl.style.color=opt_dictionary.color;}}\nreturn spanEl;}\nfunction createLink(opt_args){let ownerDocument=document;if(opt_args&&opt_args.ownerDocument){ownerDocument=opt_args.ownerDocument;}\nconst linkEl=ownerDocument.createElement('a');if(opt_args){if(opt_args.href)linkEl.href=opt_args.href;if(opt_args.tooltip)linkEl.title=opt_args.tooltip;if(opt_args.color)linkEl.style.color=opt_args.color;if(opt_args.bold)linkEl.style.fontWeight='bold';if(opt_args.italic)linkEl.style.fontStyle='italic';if(opt_args.className)linkEl.className=opt_args.className;if(opt_args.parent)Polymer.dom(opt_args.parent).appendChild(linkEl);if(opt_args.marginLeft)linkEl.style.marginLeft=opt_args.marginLeft;if(opt_args.marginRight)linkEl.style.marginRight=opt_args.marginRight;if(opt_args.backgroundColor){linkEl.style.backgroundColor=opt_args.backgroundColor;}\nif(opt_args.textContent){Polymer.dom(linkEl).textContent=opt_args.textContent;}}\nreturn linkEl;}\nfunction createDiv(opt_dictionary){const divEl=document.createElement('div');if(opt_dictionary){if(opt_dictionary.className){divEl.className=opt_dictionary.className;}\nif(opt_dictionary.parent){Polymer.dom(opt_dictionary.parent).appendChild(divEl);}\nif(opt_dictionary.textContent){Polymer.dom(divEl).textContent=opt_dictionary.textContent;}\nif(opt_dictionary.maxWidth){divEl.style.maxWidth=opt_dictionary.maxWidth;}}\nreturn divEl;}\nfunction createScopedStyle(styleContent){const styleEl=document.createElement('style');styleEl.scoped=true;Polymer.dom(styleEl).innerHTML=styleContent;return styleEl;}\nfunction valuesEqual(a,b){if(a instanceof Array&&b instanceof Array){return a.length===b.length&&JSON.stringify(a)===JSON.stringify(b);}\nreturn a===b;}\nfunction createSelector(targetEl,targetElProperty,settingsKey,defaultValue,items,opt_namespace){let defaultValueIndex;for(let i=0;i<items.length;i++){const item=items[i];if(valuesEqual(item.value,defaultValue)){defaultValueIndex=i;break;}}\nif(defaultValueIndex===undefined){throw new Error('defaultValue must be in the items list');}\nconst selectorEl=document.createElement('select');selectorEl.addEventListener('change',onChange);for(let i=0;i<items.length;i++){const item=items[i];const optionEl=document.createElement('option');Polymer.dom(optionEl).textContent=item.label;optionEl.targetPropertyValue=item.value;optionEl.item=item;Polymer.dom(selectorEl).appendChild(optionEl);}\nfunction onChange(e){const value=selectorEl.selectedValue;tr.b.Settings.set(settingsKey,value,opt_namespace);targetEl[targetElProperty]=value;}\nconst oldSetter=targetEl.__lookupSetter__('selectedIndex');selectorEl.__defineGetter__('selectedValue',function(v){return selectorEl.children[selectorEl.selectedIndex].targetPropertyValue;});selectorEl.__defineGetter__('selectedItem',function(v){return selectorEl.children[selectorEl.selectedIndex].item;});selectorEl.__defineSetter__('selectedValue',function(v){for(let i=0;i<selectorEl.children.length;i++){const value=selectorEl.children[i].targetPropertyValue;if(valuesEqual(value,v)){const changed=selectorEl.selectedIndex!==i;if(changed){selectorEl.selectedIndex=i;onChange();}\nreturn;}}\nthrow new Error('Not a valid value');});const initialValue=tr.b.Settings.get(settingsKey,defaultValue,opt_namespace);let didSet=false;for(let i=0;i<selectorEl.children.length;i++){if(valuesEqual(selectorEl.children[i].targetPropertyValue,initialValue)){didSet=true;targetEl[targetElProperty]=initialValue;selectorEl.selectedIndex=i;break;}}\nif(!didSet){selectorEl.selectedIndex=defaultValueIndex;targetEl[targetElProperty]=defaultValue;}\nreturn selectorEl;}\nfunction createEditCategorySpan(optionGroupEl,targetEl){const spanEl=createSpan({className:'edit-categories'});Polymer.dom(spanEl).textContent='Edit categories';Polymer.dom(spanEl).classList.add('labeled-option');spanEl.addEventListener('click',function(){targetEl.onClickEditCategories();});return spanEl;}\nfunction createOptionGroup(targetEl,targetElProperty,settingsKey,defaultValue,items){function onChange(){let value=[];if(this.value.length){value=this.value.split(',');}\ntr.b.Settings.set(settingsKey,value);targetEl[targetElProperty]=value;}\nconst optionGroupEl=createSpan({className:'labeled-option-group'});const initialValue=tr.b.Settings.get(settingsKey,defaultValue);for(let i=0;i<items.length;++i){const item=items[i];const id='category-preset-'+item.label.replace(/ /g,'-');const radioEl=document.createElement('input');radioEl.type='radio';Polymer.dom(radioEl).setAttribute('id',id);Polymer.dom(radioEl).setAttribute('name','category-presets-group');Polymer.dom(radioEl).setAttribute('value',item.value);radioEl.addEventListener('change',onChange.bind(radioEl,targetEl,targetElProperty,settingsKey));if(valuesEqual(initialValue,item.value)){radioEl.checked=true;}\nconst labelEl=document.createElement('label');Polymer.dom(labelEl).textContent=item.label;Polymer.dom(labelEl).setAttribute('for',id);const spanEl=createSpan({className:'labeled-option'});Polymer.dom(spanEl).appendChild(radioEl);Polymer.dom(spanEl).appendChild(labelEl);spanEl.__defineSetter__('checked',function(opt_bool){const changed=radioEl.checked!==(!!opt_bool);if(!changed)return;radioEl.checked=!!opt_bool;onChange();});spanEl.__defineGetter__('checked',function(){return radioEl.checked;});Polymer.dom(optionGroupEl).appendChild(spanEl);}\nPolymer.dom(optionGroupEl).appendChild(createEditCategorySpan(optionGroupEl,targetEl));if(!initialValue.length){Polymer.dom(optionGroupEl).classList.add('categories-expanded');}\ntargetEl[targetElProperty]=initialValue;return optionGroupEl;}\nlet nextCheckboxId=1;function createCheckBox(targetEl,targetElProperty,settingsKey,defaultValue,label,opt_changeCb){const buttonEl=document.createElement('input');buttonEl.type='checkbox';let initialValue=defaultValue;if(settingsKey!==undefined){initialValue=tr.b.Settings.get(settingsKey,defaultValue);buttonEl.checked=!!initialValue;}\nif(targetEl){targetEl[targetElProperty]=initialValue;}\nfunction onChange(){if(settingsKey!==undefined){tr.b.Settings.set(settingsKey,buttonEl.checked);}\nif(targetEl){targetEl[targetElProperty]=buttonEl.checked;}\nif(opt_changeCb){opt_changeCb.call();}}\nbuttonEl.addEventListener('change',onChange);const id='#checkbox-'+nextCheckboxId++;const spanEl=createSpan();spanEl.style.display='flex';spanEl.style.whiteSpace='nowrap';Polymer.dom(buttonEl).setAttribute('id',id);const labelEl=document.createElement('label');Polymer.dom(labelEl).textContent=label;Polymer.dom(labelEl).setAttribute('for',id);Polymer.dom(spanEl).appendChild(buttonEl);Polymer.dom(spanEl).appendChild(labelEl);spanEl.__defineSetter__('checked',function(opt_bool){const changed=buttonEl.checked!==(!!opt_bool);if(!changed)return;buttonEl.checked=!!opt_bool;onChange();});spanEl.__defineGetter__('checked',function(){return buttonEl.checked;});return spanEl;}\nfunction createButton(label,opt_callback,opt_this){const buttonEl=document.createElement('input');buttonEl.type='button';buttonEl.value=label;function onClick(){opt_callback.call(opt_this||buttonEl);}\nif(opt_callback){buttonEl.addEventListener('click',onClick);}\nreturn buttonEl;}\nfunction createTextInput(targetEl,targetElProperty,settingsKey,defaultValue){const initialValue=tr.b.Settings.get(settingsKey,defaultValue);const el=document.createElement('input');el.type='text';function onChange(e){tr.b.Settings.set(settingsKey,el.value);targetEl[targetElProperty]=el.value;}\nel.addEventListener('input',onChange);el.value=initialValue;targetEl[targetElProperty]=initialValue;return el;}\nfunction isElementAttachedToDocument(el){let cur=el;while(Polymer.dom(cur).parentNode){cur=Polymer.dom(cur).parentNode;}\nreturn(cur===el.ownerDocument||cur.nodeName==='#document-fragment');}\nfunction asHTMLOrTextNode(value,opt_ownerDocument){if(value instanceof Node){return value;}\nconst ownerDocument=opt_ownerDocument||document;return ownerDocument.createTextNode(value);}\nreturn{createSpan,createLink,createDiv,createScopedStyle,createSelector,createOptionGroup,createCheckBox,createButton,createTextInput,isElementAttachedToDocument,asHTMLOrTextNode,};});'use strict';Polymer({is:'tr-ui-b-info-bar',ready(){this.messageEl_=this.$.message;this.buttonsEl_=this.$.buttons;this.message='';},get message(){return Polymer.dom(this.messageEl_).textContent;},set message(message){Polymer.dom(this.messageEl_).textContent=message;},get visible(){return!this.hidden;},set visible(visible){this.hidden=!visible;},removeAllButtons(){Polymer.dom(this.buttonsEl_).textContent='';},addButton(text,clickCallback){const button=document.createElement('button');Polymer.dom(button).textContent=text;button.addEventListener('click',event=>clickCallback(event,this));Polymer.dom(this.buttonsEl_).appendChild(button);return button;}});'use strict';Polymer({is:'tr-ui-b-info-bar-group',ready(){this.messages_=[];},get messageCount(){return this.messages_.length;},clearMessages(){this.messages_=[];this.updateContents_();},addMessage(text,opt_buttons){opt_buttons=opt_buttons||[];for(let i=0;i<opt_buttons.length;i++){if(opt_buttons[i].buttonText===undefined){throw new Error('buttonText must be provided');}\nif(opt_buttons[i].onClick===undefined){throw new Error('onClick must be provided');}}\nthis.messages_.push({text,buttons:opt_buttons||[]});this.updateContents_();},updateContents_(){Polymer.dom(this.$.messages).textContent='';this.messages_.forEach(function(message){const bar=document.createElement('tr-ui-b-info-bar');bar.message=message.text;bar.visible=true;message.buttons.forEach(function(button){bar.addButton(button.buttonText,button.onClick);},this);Polymer.dom(this.$.messages).appendChild(bar);},this);}});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){class DevtoolsStream{constructor(connection,streamHandle){this.connection_=connection;this.streamHandle_=streamHandle;this.closed_=false;}\nasync read(){if(this.closed_){throw new Error('stream is closed');}\nconst pendingRequests=[];const READ_REQUEST_BYTES=32768;const makeRequest=()=>{pendingRequests.push(this.connection_.req('IO.read',{handle:this.streamHandle_,size:READ_REQUEST_BYTES,}));};const MAX_CONCURRENT_REQUESTS=2;for(let i=0;i<MAX_CONCURRENT_REQUESTS;++i){makeRequest();}\nconst chunks=[];let base64=false;while(true){const request=pendingRequests.shift();const response=await request;chunks.push(response.data);if(response.base64Encoded){base64=true;}\nif(response.eof){break;}\nmakeRequest();}\nif(base64){let totalSize=0;for(const chunk of chunks){totalSize+=tr.b.Base64.getDecodedBufferLength(chunk);}\nconst buffer=new ArrayBuffer(totalSize);let offset=0;for(const chunk of chunks){offset+=tr.b.Base64.DecodeToTypedArray(chunk,new DataView(buffer,offset));}\nreturn buffer;}\nreturn chunks.join('');}\nclose(){this.closed_=true;return this.connection_.req('IO.close',{handle:this.streamHandle_});}\nasync readAndClose(){const data=await this.read();this.close();return data;}}\nreturn{DevtoolsStream,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){class InspectorConnection{constructor(windowGlobal){if(!windowGlobal.DevToolsHost){throw new Error('Requires window.DevToolsHost');}\nthis.devToolsHost_=windowGlobal.DevToolsHost;this.installDevToolsAPI_(windowGlobal);this.nextRequestId_=1;this.pendingRequestResolversId_={};this.notificationListenersByMethodName_={};}\nreq(method,params){const id=this.nextRequestId_++;const msg=JSON.stringify({id,method,params});const devtoolsMessageStr=JSON.stringify({id,'method':'dispatchProtocolMessage','params':[msg]});this.devToolsHost_.sendMessageToEmbedder(devtoolsMessageStr);return new Promise(function(resolve,reject){this.pendingRequestResolversId_[id]={resolve,reject};}.bind(this));}\nsetNotificationListener(method,listener){this.notificationListenersByMethodName_[method]=listener;}\ndispatchMessage_(payload){const isStringPayload=typeof payload==='string';const isDataCollectedMessage=isStringPayload?payload.includes('\"method\": \"Tracing.dataCollected\"'):payload.method==='Tracing.dataCollected';if(isDataCollectedMessage){const listener=this.notificationListenersByMethodName_['Tracing.dataCollected'];if(listener){listener(isStringPayload?payload:JSON.stringify(payload));return;}}\nconst message=isStringPayload?JSON.parse(payload):payload;if(message.id){const resolver=this.pendingRequestResolversId_[message.id];if(resolver===undefined){return;}\nif(message.error){resolver.reject(message.error);return;}\nresolver.resolve(message.result);return;}\nif(message.method){const listener=this.notificationListenersByMethodName_[message.method];if(listener===undefined)return;listener(message.params);return;}}\ninstallDevToolsAPI_(windowGlobal){windowGlobal.DevToolsAPI={setToolbarColors(){},addExtensions(){},setInspectedPageId(){},dispatchMessage:this.dispatchMessage_.bind(this),};windowGlobal.InspectorFrontendAPI=windowGlobal.DevToolsAPI;}}\nreturn{InspectorConnection,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){class TracingControllerClient{beginMonitoring(monitoringOptions){}\nendMonitoring(){}\ncaptureMonitoring(){}\ngetMonitoringStatus(){}\ngetCategories(){}\nbeginRecording(recordingOptions){}\nbeginGetBufferPercentFull(){}\nendRecording(){}\ndefaultTraceName(){}}\nreturn{TracingControllerClient,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){function createResolvedPromise(data){const promise=new Promise(function(resolve,reject){if(data){resolve(data);}else{resolve();}});return promise;}\nfunction appendTraceChunksTo(chunks,messageString){if(typeof messageString!=='string'){throw new Error('Invalid data');}\nconst re=/\"params\":\\s*\\{\\s*\"value\":\\s*\\[([^]+)\\]\\s*\\}\\s*\\}/;const m=re.exec(messageString);if(!m){throw new Error('Malformed response');}\nif(chunks.length>1){chunks.push(',');}\nchunks.push(m[1]);}\nclass InspectorTracingControllerClient extends\ntr.ui.e.about_tracing.TracingControllerClient{constructor(connection){super();this.recording_=false;this.bufferUsage_=0;this.conn_=connection;this.currentTraceTextChunks_=undefined;}\nbeginMonitoring(monitoringOptions){throw new Error('Not implemented');}\nendMonitoring(){throw new Error('Not implemented');}\ncaptureMonitoring(){throw new Error('Not implemented');}\ngetMonitoringStatus(){return createResolvedPromise({isMonitoring:false,categoryFilter:'',useSystemTracing:false,useContinuousTracing:false,useSampling:false});}\ngetCategories(){const res=this.conn_.req('Tracing.getCategories',{});return res.then(function(result){return result.categories;},function(err){return[];});}\nbeginRecording(recordingOptions){if(this.recording_){throw new Error('Already recording');}\nthis.recording_='starting';function RewriteRecordMode(recordMode){if(recordMode==='record-until-full'){return'recordUntilFull';}\nif(recordMode==='record-continuously'){return'recordContinuously';}\nif(recordMode==='record-as-much-as-possible'){return'recordAsMuchAsPossible';}\nreturn'unsupported record mode';}\nconst traceConfigStr={includedCategories:recordingOptions.included_categories,excludedCategories:recordingOptions.excluded_categories,recordMode:RewriteRecordMode(recordingOptions.record_mode),enableSystrace:recordingOptions.enable_systrace};if('memory_dump_config'in recordingOptions){traceConfigStr.memoryDumpConfig=recordingOptions.memory_dump_config;}\nlet res=this.conn_.req('Tracing.start',{traceConfig:traceConfigStr,transferMode:'ReturnAsStream',streamCompression:'gzip',bufferUsageReportingInterval:1000});res=res.then(function ok(){this.conn_.setNotificationListener('Tracing.bufferUsage',this.onBufferUsageUpdateFromInspector_.bind(this));this.recording_=true;}.bind(this),function error(){this.recording_=false;}.bind(this));return res;}\nonBufferUsageUpdateFromInspector_(params){this.bufferUsage_=params.value||params.percentFull;}\nbeginGetBufferPercentFull(){return tr.b.timeout(100).then(()=>this.bufferUsage_);}\nonDataCollected_(messageString){appendTraceChunksTo(this.currentTraceTextChunks_,messageString);}\nasync endRecording(){if(this.recording_===false){return createResolvedPromise();}\nif(this.recording_!==true){throw new Error('Cannot end');}\nthis.currentTraceTextChunks_=['['];const clearListeners=()=>{this.conn_.setNotificationListener('Tracing.bufferUsage',undefined);this.conn_.setNotificationListener('Tracing.tracingComplete',undefined);this.conn_.setNotificationListener('Tracing.dataCollected',undefined);};try{this.conn_.setNotificationListener('Tracing.dataCollected',this.onDataCollected_.bind(this));const tracingComplete=new Promise((resolve,reject)=>{this.conn_.setNotificationListener('Tracing.tracingComplete',resolve);});this.recording_='stopping';await this.conn_.req('Tracing.end',{});const params=await tracingComplete;this.traceName_='trace.json';if('stream'in params){const stream=new tr.ui.e.about_tracing.DevtoolsStream(this.conn_,params.stream);const streamCompression=params.streamCompression||'none';if(streamCompression==='gzip'){this.traceName_='trace.json.gz';}\nreturn await stream.readAndClose();}\nthis.currentTraceTextChunks_.push(']');const traceText=this.currentTraceTextChunks_.join('');this.currentTraceTextChunks_=undefined;return traceText;}finally{clearListeners();this.recording_=false;}}\ndefaultTraceName(){return this.traceName_;}}\nreturn{InspectorTracingControllerClient,appendTraceChunksTo,};});'use strict';tr.exportTo('tr.c',function(){function makeCaseInsensitiveRegex(pattern){pattern=pattern.replace(/[.*+?^${}()|[\\]\\\\]/g,'\\\\$&');return new RegExp(pattern,'i');}\nfunction Filter(){}\nFilter.prototype={__proto__:Object.prototype,matchCounter(counter){return true;},matchCpu(cpu){return true;},matchProcess(process){return true;},matchSlice(slice){return true;},matchThread(thread){return true;}};function TitleOrCategoryFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);if(!text.length){throw new Error('Filter text is empty.');}}\nTitleOrCategoryFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){if(slice.title===undefined&&slice.category===undefined){return false;}\nreturn this.regex_.test(slice.title)||(!!slice.category&&this.regex_.test(slice.category));}};function ExactTitleFilter(text){Filter.call(this);this.text_=text;if(!text.length){throw new Error('Filter text is empty.');}}\nExactTitleFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){return slice.title===this.text_;}};function FullTextFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);this.titleOrCategoryFilter_=new TitleOrCategoryFilter(text);}\nFullTextFilter.prototype={__proto__:Filter.prototype,matchObject_(obj){for(const key in obj){if(!obj.hasOwnProperty(key))continue;if(this.regex_.test(key))return true;if(this.regex_.test(obj[key]))return true;}\nreturn false;},matchSlice(slice){if(this.titleOrCategoryFilter_.matchSlice(slice))return true;return this.matchObject_(slice.args);}};return{Filter,TitleOrCategoryFilter,ExactTitleFilter,FullTextFilter,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){const THIS_DOC=document.currentScript.ownerDocument;const RecordSelectionDialog=tr.ui.b.define('div');const DEFAULT_PRESETS=[{title:'Web developer',categoryFilter:['blink','cc','netlog','renderer.scheduler','sequence_manager','toplevel','v8']},{title:'Input latency',categoryFilter:['benchmark','input','evdev','renderer.scheduler','sequence_manager','toplevel']},{title:'Rendering',categoryFilter:['benchmark','blink','cc','gpu','toplevel','viz']},{title:'UI Rendering',categoryFilter:['benchmark','cc','gpu','input','toplevel','ui','views','viz']},{title:'Javascript and rendering',categoryFilter:['blink','cc','gpu','renderer.scheduler','sequence_manager','v8','toplevel','viz']},{title:'Frame Viewer',categoryFilter:['blink','cc','gpu','renderer.scheduler','sequence_manager','v8','toplevel','disabled-by-default-blink.invalidation','disabled-by-default-cc.debug','disabled-by-default-cc.debug.picture','disabled-by-default-cc.debug.display_items']},{title:'Chrome developer (overall)',categoryFilter:['benchmark','toplevel','ipc','base','ui','v8','renderer','blink','blink_gc','mojom','latency','latencyInfo','renderer_host','cc','memory','dwrite','fonts','browser','ServiceWorker','disabled-by-default-v8.gc','disabled-by-default-file','disabled-by-default-blink_gc','disabled-by-default-lifecycles','disabled-by-default-renderer.scheduler','disabled-by-default-system_stats','disabled-by-default-cpu_profiler','passwords','sql','disabled-by-default-user_action_samples','startup','disk_cache']},{title:'Chrome developer (navigation)',categoryFilter:['benchmark','toplevel','ipc','base','browser','navigation','omnibox','ui','shutdown','safe_browsing','Java','EarlyJava','loading','startup','mojom','renderer_host','disabled-by-default-system_stats','disabled-by-default-cpu_profiler','dwrite','fonts','ServiceWorker','passwords','disabled-by-default-file','sql','disabled-by-default-user_action_samples','disk_cache']},{title:'Manually select settings',categoryFilter:[]}];const RECORDING_MODES=[{'label':'Record until full','value':'record-until-full'},{'label':'Record continuously','value':'record-continuously'},{'label':'Record as much as possible','value':'record-as-much-as-possible'}];const DEFAULT_RECORD_MODE='record-until-full';const DEFAULT_CONTINUOUS_TRACING=true;const DEFAULT_SYSTEM_TRACING=true;const DEFAULT_SAMPLING_TRACING=false;RecordSelectionDialog.prototype={__proto__:tr.ui.b.Overlay.prototype,decorate(){tr.ui.b.Overlay.prototype.decorate.call(this);this.title='Record a new trace...';Polymer.dom(this).classList.add('record-dialog-overlay');const node=tr.ui.b.instantiateTemplate('#record-selection-dialog-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.recordButtonEl_=document.createElement('button');Polymer.dom(this.recordButtonEl_).textContent='Record';this.recordButtonEl_.addEventListener('click',this.onRecordButtonClicked_.bind(this));this.recordButtonEl_.style.fontSize='110%';Polymer.dom(this.buttons).appendChild(this.recordButtonEl_);this.categoriesView_=Polymer.dom(this).querySelector('.categories-column-view');this.presetsEl_=Polymer.dom(this).querySelector('.category-presets');Polymer.dom(this.presetsEl_).appendChild(tr.ui.b.createOptionGroup(this,'currentlyChosenPreset','about_tracing.record_selection_dialog_preset',DEFAULT_PRESETS[0].categoryFilter,DEFAULT_PRESETS.map(function(p){return{label:p.title,value:p.categoryFilter};})));this.tracingRecordModeSltr_=tr.ui.b.createSelector(this,'tracingRecordMode','recordSelectionDialog.tracingRecordMode',DEFAULT_RECORD_MODE,RECORDING_MODES);this.systemTracingBn_=tr.ui.b.createCheckBox(undefined,undefined,'recordSelectionDialog.useSystemTracing',DEFAULT_SYSTEM_TRACING,'System tracing');this.samplingTracingBn_=tr.ui.b.createCheckBox(undefined,undefined,'recordSelectionDialog.useSampling',DEFAULT_SAMPLING_TRACING,'State sampling');this.tracingModesContainerEl_=Polymer.dom(this).querySelector('.tracing-modes');Polymer.dom(this.tracingModesContainerEl_).appendChild(this.tracingRecordModeSltr_);Polymer.dom(this.tracingModesContainerEl_).appendChild(this.systemTracingBn_);Polymer.dom(this.tracingModesContainerEl_).appendChild(this.samplingTracingBn_);this.enabledCategoriesContainerEl_=Polymer.dom(this).querySelector('.default-enabled-categories .categories');this.disabledCategoriesContainerEl_=Polymer.dom(this).querySelector('.default-disabled-categories .categories');this.createGroupSelectButtons_(Polymer.dom(this).querySelector('.default-enabled-categories'));this.createGroupSelectButtons_(Polymer.dom(this).querySelector('.default-disabled-categories'));this.createDefaultDisabledWarningDialog_(Polymer.dom(this).querySelector('.warning-default-disabled-categories'));this.editCategoriesOpened_=false;this.infoBarGroup_=Polymer.dom(this).querySelector('tr-ui-b-info-bar-group');this.addEventListener('visible-change',this.onVisibleChange_.bind(this));},set supportsSystemTracing(s){if(s){this.systemTracingBn_.style.display=undefined;}else{this.systemTracingBn_.style.display='none';this.useSystemTracing=false;}},get tracingRecordMode(){return this.tracingRecordModeSltr_.selectedValue;},set tracingRecordMode(value){this.tracingRecordMode_=value;},get useSystemTracing(){return this.systemTracingBn_.checked;},set useSystemTracing(value){this.systemTracingBn_.checked=!!value;},get useSampling(){return this.samplingTracingBn_.checked;},set useSampling(value){this.samplingTracingBn_.checked=!!value;},set categories(c){if(!(c instanceof Array)){throw new Error('categories must be an array');}\nthis.categories_=c;for(let i=0;i<this.categories_.length;i++){const split=this.categories_[i].split(',');this.categories_[i]=split.shift();if(split.length>0){this.categories_=this.categories_.concat(split);}}},set settings_key(k){this.settings_key_=k;},set settings(s){throw new Error('Dont use this!');},usingPreset_(){return this.currentlyChosenPreset_.length>0;},get currentlyChosenPreset(){return this.currentlyChosenPreset_;},set currentlyChosenPreset(preset){if(!(preset instanceof Array)){throw new Error('RecordSelectionDialog.currentlyChosenPreset:'+' preset must be an array.');}\nthis.currentlyChosenPreset_=preset;if(this.usingPreset_()){this.changeEditCategoriesState_(false);}else{this.updateCategoryColumnView_(true);this.changeEditCategoriesState_(true);}\nthis.updateManualSelectionView_();this.updatePresetDescription_();},updateManualSelectionView_(){const classList=Polymer.dom(this.categoriesView_).classList;if(!this.usingPreset_()){classList.remove('categories-column-view-hidden');}else{if(this.editCategoriesOpened_){classList.remove('categories-column-view-hidden');}else{classList.add('categories-column-view-hidden');}}},updateCategoryColumnView_(shouldReadFromSettings){const categorySet=Polymer.dom(this).querySelectorAll('.categories');for(let i=0;i<categorySet.length;++i){const categoryGroup=categorySet[i].children;for(let j=0;j<categoryGroup.length;++j){const categoryEl=categoryGroup[j].children[0];const category=categoryEl.value;const enabledByDefault=!category.startsWith('disabled-by-default-');categoryEl.checked=shouldReadFromSettings?tr.b.Settings.get(category,enabledByDefault,this.settings_key_):false;}}},onClickEditCategories(){if(!this.usingPreset_())return;if(!this.editCategoriesOpened_){this.updateCategoryColumnView_(false);for(let i=0;i<this.currentlyChosenPreset_.length;++i){const categoryEl=this.querySelector('#'+\nthis.currentlyChosenPreset_[i]);if(!categoryEl)continue;categoryEl.checked=true;}}\nthis.changeEditCategoriesState_(!this.editCategoriesOpened_);this.updateManualSelectionView_();this.recordButtonEl_.focus();},changeEditCategoriesState_(editCategoriesState){const presetOptionsGroup=Polymer.dom(this).querySelector('.labeled-option-group');if(!presetOptionsGroup)return;this.editCategoriesOpened_=editCategoriesState;if(this.editCategoriesOpened_){Polymer.dom(presetOptionsGroup).classList.add('categories-expanded');}else{Polymer.dom(presetOptionsGroup).classList.remove('categories-expanded');}},updatePresetDescription_(){const description=Polymer.dom(this).querySelector('.category-description');if(this.usingPreset_()){description.innerText=this.currentlyChosenPreset_;Polymer.dom(description).classList.remove('category-description-hidden');}else{description.innerText='';if(!Polymer.dom(description).classList.contains('category-description-hidden')){Polymer.dom(description).classList.add('category-description-hidden');}}},includedAndExcludedCategories(){let includedCategories=[];let excludedCategories=[];if(this.usingPreset_()){const allCategories=this.allCategories_();for(const category in allCategories){const disabledByDefault=category.indexOf('disabled-by-default-')===0;if(this.currentlyChosenPreset_.indexOf(category)>=0){if(disabledByDefault){includedCategories.push(category);}}else{if(!disabledByDefault){excludedCategories.push(category);}}}\nreturn{included:includedCategories,excluded:excludedCategories};}\nexcludedCategories=this.unselectedCategories_();includedCategories=this.enabledDisabledByDefaultCategories_();return{included:includedCategories,excluded:excludedCategories};},clickRecordButton(){this.recordButtonEl_.click();},onRecordButtonClicked_(){this.visible=false;tr.b.dispatchSimpleEvent(this,'recordclick');return false;},collectInputs_(inputs,isChecked){const inputsLength=inputs.length;const categories=[];for(let i=0;i<inputsLength;++i){const input=inputs[i];if(input.checked===isChecked){categories.push(input.value);}}\nreturn categories;},unselectedCategories_(){const inputs=Polymer.dom(this.enabledCategoriesContainerEl_).querySelectorAll('input');return this.collectInputs_(inputs,false);},enabledDisabledByDefaultCategories_(){const inputs=Polymer.dom(this.disabledCategoriesContainerEl_).querySelectorAll('input');return this.collectInputs_(inputs,true);},onVisibleChange_(){if(this.visible){this.updateForm_();}},buildInputs_(inputs,checkedDefault,parent){const inputsLength=inputs.length;for(let i=0;i<inputsLength;i++){const category=inputs[i];const inputEl=document.createElement('input');inputEl.type='checkbox';inputEl.id=category;inputEl.value=category;inputEl.checked=tr.b.Settings.get(category,checkedDefault,this.settings_key_);inputEl.onclick=this.updateSetting_.bind(this);const labelEl=document.createElement('label');Polymer.dom(labelEl).textContent=category.replace('disabled-by-default-','');Polymer.dom(labelEl).setAttribute('for',category);const divEl=document.createElement('div');Polymer.dom(divEl).appendChild(inputEl);Polymer.dom(divEl).appendChild(labelEl);Polymer.dom(parent).appendChild(divEl);}},allCategories_(){const categorySet={};const allCategories=this.categories_.concat(tr.b.Settings.keys(this.settings_key_));const allCategoriesLength=allCategories.length;for(let i=0;i<allCategoriesLength;++i){categorySet[allCategories[i]]=true;}\nreturn categorySet;},updateForm_(){function ignoreCaseCompare(a,b){return a.toLowerCase().localeCompare(b.toLowerCase());}\nPolymer.dom(this.enabledCategoriesContainerEl_).innerHTML='';Polymer.dom(this.disabledCategoriesContainerEl_).innerHTML='';this.recordButtonEl_.focus();const allCategories=this.allCategories_();let categories=[];let disabledCategories=[];for(const category in allCategories){if(category.indexOf('disabled-by-default-')===0){disabledCategories.push(category);}else{categories.push(category);}}\ndisabledCategories=disabledCategories.sort(ignoreCaseCompare);categories=categories.sort(ignoreCaseCompare);if(this.categories_.length===0){this.infoBarGroup_.addMessage('No categories found; recording will use default categories.');}\nthis.buildInputs_(categories,true,this.enabledCategoriesContainerEl_);if(disabledCategories.length>0){this.disabledCategoriesContainerEl_.hidden=false;this.buildInputs_(disabledCategories,false,this.disabledCategoriesContainerEl_);}},updateSetting_(e){const checkbox=e.target;tr.b.Settings.set(checkbox.value,checkbox.checked,this.settings_key_);if(this.usingPreset_()){this.currentlyChosenPreset_=[];const categoryEl=this.querySelector('#category-preset-Manually-select-settings');categoryEl.checked=true;const description=Polymer.dom(this).querySelector('.category-description');description.innerText='';Polymer.dom(description).classList.add('category-description-hidden');}},createGroupSelectButtons_(parent){const flipInputs=function(dir){const inputs=Polymer.dom(parent).querySelectorAll('input');for(let i=0;i<inputs.length;i++){if(inputs[i].checked===dir)continue;inputs[i].click();}};const allBtn=Polymer.dom(parent).querySelector('.all-btn');allBtn.onclick=function(evt){flipInputs(true);evt.preventDefault();};const noneBtn=Polymer.dom(parent).querySelector('.none-btn');noneBtn.onclick=function(evt){flipInputs(false);evt.preventDefault();};},setWarningDialogOverlayText_(messages){const contentDiv=document.createElement('div');for(let i=0;i<messages.length;++i){const messageDiv=document.createElement('div');Polymer.dom(messageDiv).textContent=messages[i];Polymer.dom(contentDiv).appendChild(messageDiv);}\nPolymer.dom(this.warningOverlay_).textContent='';Polymer.dom(this.warningOverlay_).appendChild(contentDiv);},createDefaultDisabledWarningDialog_(warningLink){function onClickHandler(evt){this.warningOverlay_=tr.ui.b.Overlay();this.warningOverlay_.parentEl_=this;this.warningOverlay_.title='Warning...';this.warningOverlay_.userCanClose=true;this.warningOverlay_.visible=true;this.setWarningDialogOverlayText_(['Enabling the default disabled categories may have','performance and memory impact while tr.c.']);evt.preventDefault();}\nwarningLink.onclick=onClickHandler.bind(this);}};return{RecordSelectionDialog,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){function beginRecording(tracingControllerClient){let finalPromiseResolver;const finalPromise=new Promise(function(resolve,reject){finalPromiseResolver={resolve,reject};});finalPromise.selectionDlg=undefined;finalPromise.progressDlg=undefined;function beginRecordingError(err){finalPromiseResolver.reject(err);}\nendRecording(tracingControllerClient).then(getCategories,getCategories);window.onbeforeunload=function(e){endRecording(tracingControllerClient);};function getCategories(){const p=tracingControllerClient.getCategories().then(showTracingDialog,beginRecordingError);p.catch(function(err){beginRecordingError(err);});}\nlet selectionDlg;function showTracingDialog(categories){selectionDlg=new tr.ui.e.about_tracing.RecordSelectionDialog();selectionDlg.categories=categories;selectionDlg.settings_key='tr.ui.e.about_tracing.record_selection_dialog';selectionDlg.addEventListener('recordclick',startTracing);selectionDlg.addEventListener('closeclick',cancelRecording);selectionDlg.visible=true;finalPromise.selectionDlg=selectionDlg;}\nfunction cancelRecording(){finalPromise.selectionDlg=undefined;finalPromiseResolver.reject(new UserCancelledError());}\nlet progressDlg;let bufferPercentFullDiv;function startTracing(){progressDlg=new tr.ui.b.Overlay();Polymer.dom(progressDlg).textContent='Recording...';progressDlg.userCanClose=false;bufferPercentFullDiv=document.createElement('div');Polymer.dom(progressDlg).appendChild(bufferPercentFullDiv);const stopButton=document.createElement('button');Polymer.dom(stopButton).textContent='Stop';progressDlg.clickStopButton=function(){stopButton.click();};Polymer.dom(progressDlg).appendChild(stopButton);const categories=selectionDlg.includedAndExcludedCategories();const recordingOptions={included_categories:categories.included,excluded_categories:categories.excluded,enable_systrace:selectionDlg.useSystemTracing,record_mode:selectionDlg.tracingRecordMode,};if(categories.included.indexOf('disabled-by-default-memory-infra')!==-1){const memoryConfig={triggers:[]};memoryConfig.triggers.push({'mode':'detailed','periodic_interval_ms':10000});recordingOptions.memory_dump_config=memoryConfig;}\nconst requestPromise=tracingControllerClient.beginRecording(recordingOptions);requestPromise.then(function(){progressDlg.visible=true;stopButton.focus();updateBufferPercentFull('0');},recordFailed);stopButton.addEventListener('click',function(){const recordingPromise=endRecording(tracingControllerClient);recordingPromise.then(recordFinished,recordFailed);stopButton.disabled=true;bufferPercentFullDiv=undefined;});finalPromise.progressDlg=progressDlg;}\nfunction recordFinished(tracedData){progressDlg.visible=false;finalPromise.progressDlg=undefined;finalPromiseResolver.resolve(tracedData);}\nfunction recordFailed(err){progressDlg.visible=false;finalPromise.progressDlg=undefined;finalPromiseResolver.reject(err);}\nfunction getBufferPercentFull(){if(!bufferPercentFullDiv)return;tracingControllerClient.beginGetBufferPercentFull().then(updateBufferPercentFull);}\nfunction updateBufferPercentFull(percentFull){if(!bufferPercentFullDiv)return;percentFull=Math.round(100*parseFloat(percentFull));const newText='Buffer usage: '+percentFull+'%';if(Polymer.dom(bufferPercentFullDiv).textContent!==newText){Polymer.dom(bufferPercentFullDiv).textContent=newText;}\nwindow.setTimeout(getBufferPercentFull,500);}\nreturn finalPromise;}\nfunction endRecording(tracingControllerClient){return tracingControllerClient.endRecording();}\nfunction defaultTraceName(tracingControllerClient){return tracingControllerClient.defaultTraceName();}\nfunction UserCancelledError(){Error.apply(this,arguments);}\nUserCancelledError.prototype={__proto__:Error.prototype};return{beginRecording,UserCancelledError,defaultTraceName,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){const Base64=tr.b.Base64;function beginXhr(method,path,data){if(data===undefined)data=null;return new Promise(function(resolve,reject){const req=new XMLHttpRequest();if(method!=='POST'&&data!==null){throw new Error('Non-POST should have data==null');}\nreq.open(method,path,true);req.onreadystatechange=function(e){if(req.readyState===4){window.setTimeout(function(){if(req.status===200&&req.responseText!=='##ERROR##'){resolve(req.responseText);}else{reject(new Error('Error occured at '+path));}},0);}};req.send(data);});}\nfunction XhrBasedTracingControllerClient(){}\nXhrBasedTracingControllerClient.prototype={__proto__:tr.ui.e.about_tracing.TracingControllerClient.prototype,beginMonitoring(monitoringOptions){const monitoringOptionsB64=Base64.btoa(JSON.stringify(monitoringOptions));return beginXhr('GET','/json/begin_monitoring?'+monitoringOptionsB64);},endMonitoring(){return beginXhr('GET','/json/end_monitoring');},captureMonitoring(){return beginXhr('GET','/json/capture_monitoring_compressed').then(function(data){const decodedSize=Base64.getDecodedBufferLength(data);const buffer=new ArrayBuffer(decodedSize);Base64.DecodeToTypedArray(data,new DataView(buffer));return buffer;});},getMonitoringStatus(){return beginXhr('GET','/json/get_monitoring_status').then(function(monitoringOptionsB64){return JSON.parse(Base64.atob(monitoringOptionsB64));});},getCategories(){return beginXhr('GET','/json/categories').then(function(json){return JSON.parse(json);});},beginRecording(recordingOptions){const recordingOptionsB64=Base64.btoa(JSON.stringify(recordingOptions));return beginXhr('GET','/json/begin_recording?'+\nrecordingOptionsB64);},beginGetBufferPercentFull(){return beginXhr('GET','/json/get_buffer_percent_full');},endRecording(){return beginXhr('GET','/json/end_recording_compressed').then(function(data){const decodedSize=Base64.getDecodedBufferLength(data);const buffer=new ArrayBuffer(decodedSize);Base64.DecodeToTypedArray(data,new DataView(buffer));return buffer;});},defaultTraceName(){return'trace.json.gz';}};return{XhrBasedTracingControllerClient,};});'use strict';tr.exportTo('tr.c',function(){function ScriptingObject(){}\nScriptingObject.prototype={onModelChanged(model){}};return{ScriptingObject,};});'use strict';tr.exportTo('tr.c',function(){function ScriptingController(brushingStateController){this.brushingStateController_=brushingStateController;this.scriptObjectNames_=[];this.scriptObjectValues_=[];this.brushingStateController.addEventListener('model-changed',this.onModelChanged_.bind(this));const typeInfos=ScriptingObjectRegistry.getAllRegisteredTypeInfos();typeInfos.forEach(function(typeInfo){this.addScriptObject(typeInfo.metadata.name,typeInfo.constructor);global[typeInfo.metadata.name]=typeInfo.constructor;},this);}\nfunction ScriptingObjectRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(ScriptingObjectRegistry,options);ScriptingController.prototype={get brushingStateController(){return this.brushingStateController_;},onModelChanged_(){this.scriptObjectValues_.forEach(function(v){if(v.onModelChanged){v.onModelChanged(this.brushingStateController.model);}},this);},addScriptObject(name,value){this.scriptObjectNames_.push(name);this.scriptObjectValues_.push(value);},executeCommand(command){const f=new Function(this.scriptObjectNames_,'return eval('+command+')');return f.apply(null,this.scriptObjectValues_);}};return{ScriptingController,ScriptingObjectRegistry,};});'use strict';tr.exportTo('tr.metrics',function(){function MetricRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};tr.b.decorateExtensionRegistry(MetricRegistry,options);function camelCaseToHackerString(camelCase){let hackerString='';for(const c of camelCase){const lowered=c.toLocaleLowerCase();if(lowered===c){hackerString+=c;}else{hackerString+='_'+lowered;}}\nreturn hackerString;}\nfunction getCallStack(){try{throw new Error();}catch(error){return error.stack;}}\nfunction getPathsFromStack(stack){return stack.split('\\n').map(line=>{line=line.replace(/^ */,'').split(':');if(line.length<4)return'';return line[line.length-3].split('/');}).filter(x=>x);}\nMetricRegistry.checkFilename=function(metricName,opt_metricPathForTest){if(metricName==='runtimeStatsTotalMetric'||metricName==='v8AndMemoryMetrics'){return;}\nconst expectedFilename=camelCaseToHackerString(metricName)+'.html';const stack=getCallStack();let metricPath=opt_metricPathForTest;if(metricPath===undefined){const paths=getPathsFromStack(stack);const METRIC_STACK_INDEX=5;if(paths.length<=METRIC_STACK_INDEX||paths[METRIC_STACK_INDEX].join('/')===paths[0].join('/')){return;}\nmetricPath=paths[METRIC_STACK_INDEX].slice(paths[METRIC_STACK_INDEX].length-2);}\nif(!metricPath[1].endsWith('_test.html')&&!metricPath[1].endsWith('_test.html.js')&&metricPath[1]!==expectedFilename&&metricPath[1]!==expectedFilename+'.js'&&metricPath.join('_')!==expectedFilename&&metricPath.join('_')!==expectedFilename+'.js'){throw new Error('Expected '+metricName+' to be in a file named '+\nexpectedFilename+'; actual: '+metricPath.join('/')+'; stack: '+stack.replace(/\\n/g,'\\n  '));}};MetricRegistry.addEventListener('will-register',function(e){const metric=e.typeInfo.constructor;if(!(metric instanceof Function)){throw new Error('Metrics must be functions.');}\nif(!metric.name.endsWith('Metric')&&!metric.name.endsWith('Metrics')){throw new Error('Metric names must end with \"Metric\" or \"Metrics\".');}\nif(metric.length<2){throw new Error('Metrics take a HistogramSet and a Model and '+'optionally an options dictionary.');}\nMetricRegistry.checkFilename(metric.name);});return{MetricRegistry,};});'use strict';tr.exportTo('tr.b.math',function(){class RunningStatistics{constructor(){this.mean_=0;this.count_=0;this.max_=-Infinity;this.min_=Infinity;this.sum_=0;this.variance_=0;this.meanlogs_=0;}\nget count(){return this.count_;}\nget geometricMean(){if(this.meanlogs_===undefined)return 0;return Math.exp(this.meanlogs_);}\nget mean(){if(this.count_===0)return undefined;return this.mean_;}\nget max(){return this.max_;}\nget min(){return this.min_;}\nget sum(){return this.sum_;}\nget variance(){if(this.count_===0)return undefined;if(this.count_===1)return 0;return this.variance_/(this.count_-1);}\nget stddev(){if(this.count_===0)return undefined;return Math.sqrt(this.variance);}\nadd(x){this.count_++;this.max_=Math.max(this.max_,x);this.min_=Math.min(this.min_,x);this.sum_+=x;if(x<=0){this.meanlogs_=undefined;}else if(this.meanlogs_!==undefined){this.meanlogs_+=(Math.log(Math.abs(x))-this.meanlogs_)/this.count;}\nif(this.count_===1){this.mean_=x;this.variance_=0;}else{const oldMean=this.mean_;const oldVariance=this.variance_;if(oldMean===Infinity||oldMean===-Infinity){this.mean_=this.sum_/this.count_;}else{this.mean_=oldMean+(x-oldMean)/this.count_;}\nthis.variance_=oldVariance+(x-oldMean)*(x-this.mean_);}}\nmerge(other){const result=new RunningStatistics();result.count_=this.count_+other.count_;result.sum_=this.sum_+other.sum_;result.min_=Math.min(this.min_,other.min_);result.max_=Math.max(this.max_,other.max_);if(result.count===0){result.mean_=0;result.variance_=0;result.meanlogs_=0;}else{result.mean_=result.sum/result.count;const deltaMean=(this.mean||0)-(other.mean||0);result.variance_=this.variance_+other.variance_+\n(this.count*other.count*deltaMean*deltaMean/result.count);if(this.meanlogs_===undefined||other.meanlogs_===undefined){result.meanlogs_=undefined;}else{result.meanlogs_=(this.count*this.meanlogs_+\nother.count*other.meanlogs_)/result.count;}}\nreturn result;}\ntruncate(unit){this.max_=unit.truncate(this.max_);if(this.meanlogs_!==undefined){const formatted=unit.format(this.geometricMean);let lo=1;let hi=16;while(lo<hi-1){const digits=parseInt((lo+hi)/2);const test=tr.b.math.truncate(this.meanlogs_,digits);if(formatted===unit.format(Math.exp(test))){hi=digits;}else{lo=digits;}}\nconst test=tr.b.math.truncate(this.meanlogs_,lo);if(formatted===unit.format(Math.exp(test))){this.meanlogs_=test;}else{this.meanlogs_=tr.b.math.truncate(this.meanlogs_,hi);}}\nthis.mean_=unit.truncate(this.mean_);this.min_=unit.truncate(this.min_);this.sum_=unit.truncate(this.sum_);this.variance_=unit.truncate(this.variance_);}\nasDict(){if(!this.count){return[];}\nreturn[this.count_,this.max_,this.meanlogs_,this.mean_,this.min_,this.sum_,this.variance_,];}\nstatic fromDict(dict){const result=new RunningStatistics();if(dict.length!==7){return result;}\n[result.count_,result.max_,result.meanlogs_,result.mean_,result.min_,result.sum_,result.variance_,]=dict;return result;}}\nreturn{RunningStatistics,};});'use strict';tr.exportTo('tr.b',function(){class Scalar{constructor(unit,value){if(!(unit instanceof tr.b.Unit)){throw new Error('Expected Unit');}\nif(!(typeof(value)==='number')){throw new Error('Expected value to be number');}\nthis.unit=unit;this.value=value;}\nasDict(){return{unit:this.unit.asJSON(),value:tr.b.numberToJson(this.value),};}\ntoString(){return this.unit.format(this.value);}\nstatic fromDict(d){return new Scalar(tr.b.Unit.fromJSON(d.unit),tr.b.numberFromJson(d.value));}}\nreturn{Scalar,};});'use strict';tr.exportTo('tr.v.d',function(){class Diagnostic{constructor(){this.guid_=undefined;}\nclone(){return new this.constructor();}\ncanAddDiagnostic(otherDiagnostic){return false;}\naddDiagnostic(otherDiagnostic){throw new Error('Abstract virtual method: subclasses must override '+'this method if they override canAddDiagnostic');}\nget guid(){if(this.guid_===undefined){this.guid_=tr.b.GUID.allocateUUID4();}\nreturn this.guid_;}\nset guid(guid){if(this.guid_!==undefined){throw new Error('Cannot reset guid');}\nthis.guid_=guid;}\nget hasGuid(){return this.guid_!==undefined;}\nasDictOrReference(){if(this.guid_!==undefined){return this.guid_;}\nreturn this.asDict();}\nasDict(){const result={type:this.constructor.name};if(this.guid_!==undefined){result.guid=this.guid_;}\nthis.asDictInto_(result);return result;}\nasDictInto_(d){throw new Error('Abstract virtual method: subclasses must override '+'this method if they override canAddDiagnostic');}\nstatic fromDict(d){const typeInfo=Diagnostic.findTypeInfoWithName(d.type);if(!typeInfo){throw new Error('Unrecognized diagnostic type: '+d.type);}\nconst diagnostic=typeInfo.constructor.fromDict(d);if(d.guid!==undefined)diagnostic.guid=d.guid;return diagnostic;}\nstatic deserialize(type,d,deserializer){const typeInfo=Diagnostic.findTypeInfoWithName(type);if(!typeInfo){throw new Error('Unrecognized diagnostic type: '+type);}\nreturn typeInfo.constructor.deserialize(d,deserializer);}}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Diagnostic;tr.b.decorateExtensionRegistry(Diagnostic,options);Diagnostic.addEventListener('will-register',function(e){const constructor=e.typeInfo.constructor;if(!(constructor.deserialize instanceof Function)||(constructor.deserialize===Diagnostic.deserialize)||(constructor.deserialize.length!==2)){throw new Error(`Please define ${constructor.name}.deserialize(data, deserializer)`);}\nif(!(constructor.fromDict instanceof Function)||(constructor.fromDict===Diagnostic.fromDict)||(constructor.fromDict.length!==1)){throw new Error(`Please define ${constructor.name}.fromDict(d)`);}\nif(!(constructor.prototype.serialize instanceof Function)||(constructor.prototype.serialize===Diagnostic.prototype.serialize)||(constructor.prototype.serialize.length!==1)){throw new Error(`Please define ${constructor.name}.serialize(serializer)`);}});return{Diagnostic,};});'use strict';tr.exportTo('tr.v.d',function(){class Breakdown extends tr.v.d.Diagnostic{constructor(){super();this.values_=new Map();this.colorScheme='';}\ntruncate(unit){for(const[name,value]of this){this.values_.set(name,unit.truncate(value));}}\nclone(){const clone=new Breakdown();clone.colorScheme=this.colorScheme;clone.addDiagnostic(this);return clone;}\nequals(other){if(this.colorScheme!==other.colorScheme)return false;if(this.values_.size!==other.values_.size)return false;for(const[k,v]of this){if(v!==other.get(k))return false;}\nreturn true;}\ncanAddDiagnostic(otherDiagnostic){return((otherDiagnostic instanceof Breakdown)&&(otherDiagnostic.colorScheme===this.colorScheme));}\naddDiagnostic(otherDiagnostic){for(const[name,value]of otherDiagnostic){this.set(name,this.get(name)+value);}\nreturn this;}\nset(name,value){if(typeof name!=='string'||typeof value!=='number'){throw new Error('Breakdown maps from strings to numbers');}\nthis.values_.set(name,value);}\nget(name){return this.values_.get(name)||0;}*[Symbol.iterator](){for(const pair of this.values_){yield pair;}}\nget size(){return this.values_.size;}\nserialize(serializer){const keys=[...this.values_.keys()];keys.sort();return[serializer.getOrAllocateId(this.colorScheme),serializer.getOrAllocateId(keys.map(k=>serializer.getOrAllocateId(k))),...keys.map(k=>this.get(k)),];}\nasDictInto_(d){d.values={};for(const[name,value]of this){d.values[name]=tr.b.numberToJson(value);}\nif(this.colorScheme){d.colorScheme=this.colorScheme;}}\nstatic fromEntries(entries){const breakdown=new Breakdown();for(const[name,value]of entries){breakdown.set(name,value);}\nreturn breakdown;}\nstatic deserialize(data,deserializer){const breakdown=new Breakdown();breakdown.colorScheme=deserializer.getObject(data[0]);const keys=deserializer.getObject(data[1]);for(let i=0;i<keys.length;++i){breakdown.set(deserializer.getObject(keys[i]),tr.b.numberFromJson(data[i+2]));}\nreturn breakdown;}\nstatic fromDict(d){const breakdown=new Breakdown();for(const[name,value]of Object.entries(d.values)){breakdown.set(name,tr.b.numberFromJson(value));}\nif(d.colorScheme){breakdown.colorScheme=d.colorScheme;}\nreturn breakdown;}}\ntr.v.d.Diagnostic.register(Breakdown,{elementName:'tr-v-ui-breakdown-span'});return{Breakdown,};});'use strict';tr.exportTo('tr.v.d',function(){class CollectedRelatedEventSet extends tr.v.d.Diagnostic{constructor(){super();this.eventSetsByCanonicalUrl_=new Map();}\nasDictInto_(d){d.events={};for(const[canonicalUrl,eventSet]of this){d.events[canonicalUrl]=[];for(const event of eventSet){d.events[canonicalUrl].push({stableId:event.stableId,title:event.title,start:event.start,duration:event.duration});}}}\nstatic deserialize(events,deserializer){return CollectedRelatedEventSet.fromDict({events});}\nserialize(serializer){const d={};this.asDictInto(d);return d.events;}\nstatic fromDict(d){const result=new CollectedRelatedEventSet();for(const[canonicalUrl,events]of Object.entries(d.events)){result.eventSetsByCanonicalUrl_.set(canonicalUrl,events.map(e=>new tr.v.d.EventRef(e)));}\nreturn result;}\nget size(){return this.eventSetsByCanonicalUrl_.size;}\nget(canonicalUrl){return this.eventSetsByCanonicalUrl_.get(canonicalUrl);}*[Symbol.iterator](){for(const[canonicalUrl,eventSet]of this.eventSetsByCanonicalUrl_){yield[canonicalUrl,eventSet];}}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof tr.v.d.RelatedEventSet||otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet;}\naddEventSetForCanonicalUrl(canonicalUrl,events){let myEventSet=this.eventSetsByCanonicalUrl_.get(canonicalUrl);if(myEventSet===undefined){myEventSet=new Set();this.eventSetsByCanonicalUrl_.set(canonicalUrl,myEventSet);}\nfor(const event of events){myEventSet.add(event);}}\naddDiagnostic(otherDiagnostic){if(otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet){for(const[canonicalUrl,otherEventSet]of otherDiagnostic){this.addEventSetForCanonicalUrl(canonicalUrl,otherEventSet);}\nreturn;}\nif(!otherDiagnostic.canonicalUrl)return;this.addEventSetForCanonicalUrl(otherDiagnostic.canonicalUrl,otherDiagnostic);}}\ntr.v.d.Diagnostic.register(CollectedRelatedEventSet,{elementName:'tr-v-ui-collected-related-event-set-span'});return{CollectedRelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class DateRange extends tr.v.d.Diagnostic{constructor(ms){super();this.range_=new tr.b.math.Range();this.range_.addValue(ms);}\nget minTimestamp(){return this.range_.min;}\nget maxTimestamp(){return this.range_.max;}\nget minDate(){return new Date(this.range_.min);}\nget maxDate(){return new Date(this.range_.max);}\nget durationMs(){return this.range_.duration;}\nclone(){const clone=new tr.v.d.DateRange(this.range_.min);clone.addDiagnostic(this);return clone;}\nequals(other){if(!(other instanceof DateRange))return false;return this.range_.equals(other.range_);}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof DateRange;}\naddDiagnostic(other){this.range_.addRange(other.range_);}\ntoString(){const minDate=tr.b.formatDate(this.minDate);if(this.durationMs===0)return minDate;const maxDate=tr.b.formatDate(this.maxDate);return`${minDate} - ${maxDate}`;}\nserialize(serializer){if(this.durationMs===0)return this.range_.min;return[this.range_.min,this.range_.max];}\nasDictInto_(d){d.min=this.range_.min;if(this.durationMs===0)return;d.max=this.range_.max;}\nstatic deserialize(data,deserializer){if(data instanceof Array){const dr=new DateRange(data[0]);dr.range_.addValue(data[1]);return dr;}\nreturn new DateRange(data);}\nstatic fromDict(d){const dateRange=new DateRange(d.min);if(d.max!==undefined)dateRange.range_.addValue(d.max);return dateRange;}}\ntr.v.d.Diagnostic.register(DateRange,{elementName:'tr-v-ui-date-range-span'});return{DateRange,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticRef{constructor(guid){this.guid=guid;}\nasDict(){return this.guid;}\nasDictOrReference(){return this.asDict();}}\nreturn{DiagnosticRef,};});'use strict';tr.exportTo('tr.v.d',function(){function stableStringify(obj){let replacer;if(!(obj instanceof Array)&&obj!==null){replacer=Object.keys(obj).sort();}\nreturn JSON.stringify(obj,replacer);}\nclass GenericSet extends tr.v.d.Diagnostic{constructor(values){super();if(typeof values[Symbol.iterator]!=='function'){throw new Error('GenericSet must be constructed from an interable.');}\nthis.values_=new Set(values);this.has_objects_=false;for(const value of values){if(typeof value==='object'){this.has_objects_=true;}}}\nget size(){return this.values_.size;}\nget length(){return this.values_.size;}*[Symbol.iterator](){for(const value of this.values_){yield value;}}\nhas(value){if(typeof value!=='object')return this.values_.has(value);const json=JSON.stringify(value);for(const x of this){if(typeof x!=='object')continue;if(json===JSON.stringify(x))return true;}\nreturn false;}\nequals(other){if(!(other instanceof GenericSet))return false;if(this.size!==other.size)return false;for(const value of this){if(!other.has(value))return false;}\nreturn true;}\nget hashKey(){if(this.has_objects_)return undefined;if(this.hash_key_!==undefined){return this.hash_key_;}\nlet key='';for(const value of Array.from(this.values_.values()).sort()){key+=value;}\nthis.hash_key_=key;return key;}\nserialize(serializer){const i=[...this].map(x=>serializer.getOrAllocateId(x));return(i.length===1)?i[0]:i;}\nasDictInto_(d){d.values=Array.from(this);}\nstatic deserialize(data,deserializer){if(!(data instanceof Array)){data=[data];}\nreturn new GenericSet(data.map(datum=>deserializer.getObject(datum)));}\nstatic fromDict(d){return new GenericSet(d.values);}\nclone(){return new GenericSet(this.values_);}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof GenericSet;}\naddDiagnostic(otherDiagnostic){const jsons=new Set();for(const value of this){if(typeof value!=='object')continue;jsons.add(stableStringify(value));}\nfor(const value of otherDiagnostic){if(typeof value==='object'){if(jsons.has(stableStringify(value))){continue;}\nthis.has_objects_=true;}\nthis.values_.add(value);}}}\ntr.v.d.Diagnostic.register(GenericSet,{elementName:'tr-v-ui-generic-set-span'});return{GenericSet,};});'use strict';tr.exportTo('tr.v.d',function(){class EventRef{constructor(event){this.stableId=event.stableId;this.title=event.title;this.start=event.start;this.duration=event.duration;this.end=this.start+this.duration;this.guid=tr.b.GUID.allocateSimple();}}\nreturn{EventRef,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedEventSet extends tr.v.d.Diagnostic{constructor(opt_events){super();this.eventsByStableId_=new Map();this.canonicalUrl_=undefined;if(opt_events){if(opt_events instanceof tr.model.EventSet||opt_events instanceof Array){for(const event of opt_events){this.add(event);}}else{this.add(opt_events);}}}\nclone(){const clone=new tr.v.d.CollectedRelatedEventSet();clone.addDiagnostic(this);return clone;}\nequals(other){if(this.length!==other.length)return false;for(const event of this){if(!other.has(event))return false;}\nreturn true;}\nadd(event){this.eventsByStableId_.set(event.stableId,event);}\nhas(event){return this.eventsByStableId_.has(event.stableId);}\nget length(){return this.eventsByStableId_.size;}*[Symbol.iterator](){for(const event of this.eventsByStableId_.values()){yield event;}}\nget canonicalUrl(){return this.canonicalUrl_;}\nresolve(model,opt_required){for(const[stableId,value]of this.eventsByStableId_){if(!(value instanceof tr.v.d.EventRef))continue;const event=model.getEventByStableId(stableId);if(event instanceof tr.model.Event){this.eventsByStableId_.set(stableId,event);}else if(opt_required){throw new Error('Unable to find Event '+stableId);}}}\nserialize(serializer){return[...this].map(event=>[event.stableId,serializer.getOrAllocateId(event.title),event.start,event.duration,]);}\nasDictInto_(d){d.events=[];for(const event of this){d.events.push({stableId:event.stableId,title:event.title,start:tr.b.Unit.byName.timeStampInMs.truncate(event.start),duration:tr.b.Unit.byName.timeDurationInMs.truncate(event.duration),});}}\nstatic deserialize(data,deserializer){return new RelatedEventSet(data.map(event=>new tr.v.d.EventRef({stableId:event[0],title:deserializer.getObject(event[1]),start:event[2],duration:event[3],})));}\nstatic fromDict(d){return new RelatedEventSet(d.events.map(event=>new tr.v.d.EventRef(event)));}}\ntr.v.d.Diagnostic.register(RelatedEventSet,{elementName:'tr-v-ui-related-event-set-span'});return{RelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedNameMap extends tr.v.d.Diagnostic{constructor(opt_info){super();this.map_=new Map();if(opt_info){for(const[key,name]of Object.entries(opt_info)){this.set(key,name);}}}\nclone(){const clone=new RelatedNameMap();clone.addDiagnostic(this);return clone;}\nequals(other){if(!(other instanceof RelatedNameMap))return false;const keys1=new Set(this.map_.keys());const keys2=new Set(other.map_.keys());if(!tr.b.setsEqual(keys1,keys2))return false;for(const[key,name]of this){if(name!==other.get(key))return false;}\nreturn true;}\ncanAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof RelatedNameMap;}\naddDiagnostic(otherDiagnostic){for(const[key,name]of otherDiagnostic){const existing=this.get(key);if(existing===undefined){this.set(key,name);}else if(existing!==name){throw new Error('Histogram names differ: '+`\"${existing}\" != \"${name}\"`);}}}\nserialize(serializer){const keys=[...this.map_.keys()];keys.sort();const names=keys.map(k=>serializer.getOrAllocateId(this.get(k)));const keysId=serializer.getOrAllocateId(keys.map(k=>serializer.getOrAllocateId(k)));return[keysId,...names];}\nasDictInto_(d){d.names={};for(const[key,name]of this)d.names[key]=name;}\nset(key,name){this.map_.set(key,name);}\nget(key){return this.map_.get(key);}*[Symbol.iterator](){for(const pair of this.map_)yield pair;}*values(){for(const value of this.map_.values())yield value;}\nstatic fromEntries(entries){const names=new RelatedNameMap();for(const[key,name]of entries){names.set(key,name);}\nreturn names;}\nstatic deserialize(data,deserializer){const names=new RelatedNameMap();const keys=deserializer.getObject(data[0]);for(let i=0;i<keys.length;++i){names.set(deserializer.getObject(keys[i]),deserializer.getObject(data[i+1]));}\nreturn names;}\nstatic fromDict(d){return RelatedNameMap.fromEntries(Object.entries(d.names||{}));}}\ntr.v.d.Diagnostic.register(RelatedNameMap,{elementName:'tr-v-ui-related-name-map-span',});return{RelatedNameMap,};});'use strict';tr.exportTo('tr.v.d',function(){class Scalar extends tr.v.d.Diagnostic{constructor(value){super();if(!(value instanceof tr.b.Scalar)){throw new Error('expected Scalar');}\nthis.value=value;}\nclone(){return new Scalar(this.value);}\nserialize(serializer){return this.value.asDict();}\nasDictInto_(d){d.value=this.value.asDict();}\nstatic deserialize(value,deserializer){return Scalar.fromDict({value});}\nstatic fromDict(d){return new Scalar(tr.b.Scalar.fromDict(d.value));}}\ntr.v.d.Diagnostic.register(Scalar,{elementName:'tr-v-ui-scalar-diagnostic-span'});return{Scalar,};});'use strict';tr.exportTo('tr.v.d',function(){class UnmergeableDiagnosticSet extends tr.v.d.Diagnostic{constructor(diagnostics){super();this._diagnostics=diagnostics;}\nclone(){const clone=new tr.v.d.UnmergeableDiagnosticSet();clone.addDiagnostic(this);return clone;}\ncanAddDiagnostic(otherDiagnostic){return true;}\naddDiagnostic(otherDiagnostic){if(otherDiagnostic instanceof UnmergeableDiagnosticSet){for(const subOtherDiagnostic of otherDiagnostic){const clone=subOtherDiagnostic.clone();this.addDiagnostic(clone);}\nreturn;}\nfor(let i=0;i<this._diagnostics.length;++i){if(this._diagnostics[i].canAddDiagnostic(otherDiagnostic)){this._diagnostics[i].addDiagnostic(otherDiagnostic);return;}}\nconst clone=otherDiagnostic.clone();this._diagnostics.push(clone);}\nget length(){return this._diagnostics.length;}*[Symbol.iterator](){for(const diagnostic of this._diagnostics)yield diagnostic;}\nasDictInto_(d){d.diagnostics=this._diagnostics.map(d=>d.asDictOrReference());}\nstatic deserialize(data,deserializer){return new UnmergeableDiagnosticSet(d.map(i=>deserializer.getDiagnostic(i).diagnostic));}\nserialize(serializer){return this._diagnostics.map(d=>serializer.getOrAllocateDiagnosticId('',d));}\nstatic fromDict(d){return new UnmergeableDiagnosticSet(d.diagnostics.map(d=>((typeof d==='string')?new tr.v.d.DiagnosticRef(d):tr.v.d.Diagnostic.fromDict(d))));}}\ntr.v.d.Diagnostic.register(UnmergeableDiagnosticSet,{elementName:'tr-v-ui-unmergeable-diagnostic-set-span'});return{UnmergeableDiagnosticSet,};});'use strict';tr.exportTo('tr.v.d',function(){const RESERVED_INFOS={ANGLE_REVISIONS:{name:'angleRevisions',type:tr.v.d.GenericSet},ARCHITECTURES:{name:'architectures',type:tr.v.d.GenericSet},BENCHMARKS:{name:'benchmarks',type:tr.v.d.GenericSet},BENCHMARK_START:{name:'benchmarkStart',type:tr.v.d.DateRange},BENCHMARK_DESCRIPTIONS:{name:'benchmarkDescriptions',type:tr.v.d.GenericSet},BOTS:{name:'bots',type:tr.v.d.GenericSet},BUG_COMPONENTS:{name:'bugComponents',type:tr.v.d.GenericSet},BUILDS:{name:'builds',type:tr.v.d.GenericSet},CATAPULT_REVISIONS:{name:'catapultRevisions',type:tr.v.d.GenericSet},CHROMIUM_COMMIT_POSITIONS:{name:'chromiumCommitPositions',type:tr.v.d.GenericSet},CHROMIUM_REVISIONS:{name:'chromiumRevisions',type:tr.v.d.GenericSet},DESCRIPTION:{name:'description',type:tr.v.d.GenericSet},DEVICE_IDS:{name:'deviceIds',type:tr.v.d.GenericSet},DOCUMENTATION_URLS:{name:'documentationUrls',type:tr.v.d.GenericSet},FUCHSIA_GARNET_REVISIONS:{name:'fuchsiaGarnetRevisions',type:tr.v.d.GenericSet},FUCHSIA_PERIDOT_REVISIONS:{name:'fuchsiaPeridotRevisions',type:tr.v.d.GenericSet},FUCHSIA_TOPAZ_REVISIONS:{name:'fuchsiaTopazRevisions',type:tr.v.d.GenericSet},FUCHSIA_ZIRCON_REVISIONS:{name:'fuchsiaZirconRevisions',type:tr.v.d.GenericSet},GPUS:{name:'gpus',type:tr.v.d.GenericSet},IS_REFERENCE_BUILD:{name:'isReferenceBuild',type:tr.v.d.GenericSet},LABELS:{name:'labels',type:tr.v.d.GenericSet},LOG_URLS:{name:'logUrls',type:tr.v.d.GenericSet},MASTERS:{name:'masters',type:tr.v.d.GenericSet},MEMORY_AMOUNTS:{name:'memoryAmounts',type:tr.v.d.GenericSet},OS_NAMES:{name:'osNames',type:tr.v.d.GenericSet},OS_VERSIONS:{name:'osVersions',type:tr.v.d.GenericSet},OWNERS:{name:'owners',type:tr.v.d.GenericSet},POINT_ID:{name:'pointId',type:tr.v.d.GenericSet},PRODUCT_VERSIONS:{name:'productVersions',type:tr.v.d.GenericSet},REVISION_TIMESTAMPS:{name:'revisionTimestamps',type:tr.v.d.DateRange},SKIA_REVISIONS:{name:'skiaRevisions',type:tr.v.d.GenericSet},STATISTICS_NAMES:{name:'statisticsNames',type:tr.v.d.GenericSet},STORIES:{name:'stories',type:tr.v.d.GenericSet},STORYSET_REPEATS:{name:'storysetRepeats',type:tr.v.d.GenericSet},STORY_TAGS:{name:'storyTags',type:tr.v.d.GenericSet},SUMMARY_KEYS:{name:'summaryKeys',type:tr.v.d.GenericSet},TEST_PATH:{name:'testPath',type:tr.v.d.GenericSet},TRACE_START:{name:'traceStart',type:tr.v.d.DateRange},TRACE_URLS:{name:'traceUrls',type:tr.v.d.GenericSet},V8_COMMIT_POSITIONS:{name:'v8CommitPositions',type:tr.v.d.DateRange},V8_REVISIONS:{name:'v8Revisions',type:tr.v.d.GenericSet},WEBRTC_REVISIONS:{name:'webrtcRevisions',type:tr.v.d.GenericSet},WEBRTC_INTERNAL_REVISIONS:{name:'webrtcInternalRevisions',type:tr.v.d.GenericSet},};const RESERVED_NAMES={};const RESERVED_NAMES_TO_TYPES=new Map();for(const[codename,info]of Object.entries(RESERVED_INFOS)){RESERVED_NAMES[codename]=info.name;if(RESERVED_NAMES_TO_TYPES.has(info.name)){throw new Error(`Duplicate reserved name \"${info.name}\"`);}\nRESERVED_NAMES_TO_TYPES.set(info.name,info.type);}\nconst RESERVED_NAMES_SET=new Set(Object.values(RESERVED_NAMES));return{RESERVED_INFOS,RESERVED_NAMES,RESERVED_NAMES_SET,RESERVED_NAMES_TO_TYPES,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticMap extends Map{constructor(opt_allowReservedNames){super();if(opt_allowReservedNames===undefined){opt_allowReservedNames=true;}\nthis.allowReservedNames_=opt_allowReservedNames;}\nset(name,diagnostic){if(typeof(name)!=='string'){throw new Error(`name must be string, not ${name}`);}\nif(!(diagnostic instanceof tr.v.d.Diagnostic)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){throw new Error(`Must be instanceof Diagnostic: ${diagnostic}`);}\nif(!this.allowReservedNames_&&tr.v.d.RESERVED_NAMES_SET.has(name)&&!(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){const type=tr.v.d.RESERVED_NAMES_TO_TYPES.get(name);if(type&&!(diagnostic instanceof type)){throw new Error(`Diagnostics named \"${name}\" must be ${type.name}, `+`not ${diagnostic.constructor.name}`);}}\nMap.prototype.set.call(this,name,diagnostic);}\ndelete(name){if(name===undefined)throw new Error('missing name');Map.prototype.delete.call(this,name);}\ndeserializeAdd(data,deserializer){for(const id of data){const{name,diagnostic}=deserializer.getDiagnostic(id);this.set(name,diagnostic);}}\naddDicts(dict){for(const[name,diagnosticDict]of Object.entries(dict)){if(name==='tagmap')continue;if(typeof diagnosticDict==='string'){this.set(name,new tr.v.d.DiagnosticRef(diagnosticDict));}else if(diagnosticDict.type!=='RelatedHistogramMap'&&diagnosticDict.type!=='RelatedHistogramBreakdown'&&diagnosticDict.type!=='TagMap'){this.set(name,tr.v.d.Diagnostic.fromDict(diagnosticDict));}}}\nresolveSharedDiagnostics(histograms,opt_required){for(const[name,value]of this){if(!(value instanceof tr.v.d.DiagnosticRef)){continue;}\nconst guid=value.guid;const diagnostic=histograms.lookupDiagnostic(guid);if(diagnostic instanceof tr.v.d.Diagnostic){this.set(name,diagnostic);}else if(opt_required){throw new Error('Unable to find shared Diagnostic '+guid);}}}\nserialize(serializer){const data=[];for(const[name,diagnostic]of this){data.push(serializer.getOrAllocateDiagnosticId(name,diagnostic));}\nreturn data;}\nasDict(){const dict={};for(const[name,diagnostic]of this){dict[name]=diagnostic.asDictOrReference();}\nreturn dict;}\nstatic deserialize(data,deserializer){const diagnostics=new DiagnosticMap();diagnostics.deserializeAdd(data,deserializer);return diagnostics;}\nstatic fromDict(d){const diagnostics=new DiagnosticMap();diagnostics.addDicts(d);return diagnostics;}\nstatic fromObject(obj){const diagnostics=new DiagnosticMap();if(!(obj instanceof Map))obj=Object.entries(obj);for(const[name,diagnostic]of obj){if(!diagnostic)continue;diagnostics.set(name,diagnostic);}\nreturn diagnostics;}\naddDiagnostics(other){for(const[name,otherDiagnostic]of other){const myDiagnostic=this.get(name);if(myDiagnostic!==undefined&&myDiagnostic.canAddDiagnostic(otherDiagnostic)){myDiagnostic.addDiagnostic(otherDiagnostic);continue;}\nconst clone=otherDiagnostic.clone();if(myDiagnostic===undefined){this.set(name,clone);continue;}\nthis.set(name,new tr.v.d.UnmergeableDiagnosticSet([myDiagnostic,clone]));}}}\nreturn{DiagnosticMap};});'use strict';tr.exportTo('tr.v',function(){const MAX_DIAGNOSTIC_MAPS=16;const DEFAULT_SAMPLE_VALUES_PER_BIN=10;const DEFAULT_REBINNED_COUNT=40;const DEFAULT_BOUNDARIES_FOR_UNIT=new Map();const DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING=500;const DELTA=String.fromCharCode(916);const Z_SCORE_NAME='z-score';const P_VALUE_NAME='p-value';const U_STATISTIC_NAME='U';function percentToString(percent,opt_force3){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}\nif(percent===0)return'000';if(percent===1)return'100';let str=percent.toString();if(str[1]!=='.'){throw new Error('Unexpected percent');}\nstr=str+'0'.repeat(Math.max(4-str.length,0));if(str.length>4){if(opt_force3){str=str.slice(0,4);}else{str=str.slice(0,4)+'_'+str.slice(4);}}\nreturn'0'+str.slice(2);}\nfunction percentFromString(s){return parseFloat(s[0]+'.'+s.substr(1).replace(/_/g,''));}\nclass HistogramBin{constructor(range){this.range=range;this.count=0;this.diagnosticMaps=[];}\naddSample(value){this.count+=1;}\naddDiagnosticMap(diagnostics){tr.b.math.Statistics.uniformlySampleStream(this.diagnosticMaps,this.count,diagnostics,MAX_DIAGNOSTIC_MAPS);}\naddBin(other){if(!this.range.equals(other.range)){throw new Error('Merging incompatible Histogram bins.');}\ntr.b.math.Statistics.mergeSampledStreams(this.diagnosticMaps,this.count,other.diagnosticMaps,other.count,MAX_DIAGNOSTIC_MAPS);this.count+=other.count;}\ndeserialize(data,deserializer){if(!(data instanceof Array)){this.count=data;return;}\nthis.count=data[0];for(const sample of data.slice(1)){if(!(sample instanceof Array))continue;this.diagnosticMaps.push(tr.v.d.DiagnosticMap.deserialize(sample.slice(1),deserializer));}}\nfromDict(dict){this.count=dict[0];if(dict.length>1){for(const map of dict[1]){this.diagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}}\nserialize(serializer){if(!this.diagnosticMaps.length){return this.count;}\nreturn[this.count,...this.diagnosticMaps.map(d=>[undefined,...d.serialize(serializer)])];}\nasDict(){if(!this.diagnosticMaps.length){return[this.count];}\nreturn[this.count,this.diagnosticMaps.map(d=>d.asDict())];}}\nconst DEFAULT_SUMMARY_OPTIONS=new Map([['avg',true],['count',true],['geometricMean',false],['max',true],['min',true],['nans',false],['std',true],['sum',true],]);class Histogram{constructor(name,unit,opt_binBoundaries){if(!(unit instanceof tr.b.Unit)){throw new Error('unit must be a Unit: '+unit);}\nlet binBoundaries=opt_binBoundaries;if(!binBoundaries){const baseUnit=unit.baseUnit?unit.baseUnit:unit;binBoundaries=DEFAULT_BOUNDARIES_FOR_UNIT.get(baseUnit.unitName);}\nthis.binBoundariesDict_=binBoundaries.asDict();this.allBins=binBoundaries.bins.slice();this.description='';const allowReservedNames=false;this.diagnostics_=new tr.v.d.DiagnosticMap(allowReservedNames);this.maxNumSampleValues_=this.defaultMaxNumSampleValues_;this.name_=name;this.nanDiagnosticMaps=[];this.numNans=0;this.running_=undefined;this.sampleValues_=[];this.sampleMeans_=[];this.summaryOptions=new Map(DEFAULT_SUMMARY_OPTIONS);this.summaryOptions.set('percentile',[]);this.summaryOptions.set('iprs',[]);this.summaryOptions.set('ci',[]);this.unit=unit;}\nstatic create(name,unit,samples,opt_options){const options=opt_options||{};const hist=new Histogram(name,unit,options.binBoundaries);if(options.description)hist.description=options.description;if(options.summaryOptions){let summaryOptions=options.summaryOptions;if(!(summaryOptions instanceof Map)){summaryOptions=Object.entries(summaryOptions);}\nfor(const[name,value]of summaryOptions){hist.summaryOptions.set(name,value);}}\nif(options.diagnostics!==undefined){let diagnostics=options.diagnostics;if(!(diagnostics instanceof Map)){diagnostics=Object.entries(diagnostics);}\nfor(const[name,diagnostic]of diagnostics){if(!diagnostic)continue;hist.diagnostics.set(name,diagnostic);}}\nif(!(samples instanceof Array))samples=[samples];for(const sample of samples){if(typeof sample==='object'){hist.addSample(sample.value,sample.diagnostics);}else{hist.addSample(sample);}}\nreturn hist;}\nget diagnostics(){return this.diagnostics_;}\nget running(){return this.running_;}\nget maxNumSampleValues(){return this.maxNumSampleValues_;}\nset maxNumSampleValues(n){this.maxNumSampleValues_=n;tr.b.math.Statistics.uniformlySampleArray(this.sampleValues_,this.maxNumSampleValues_);}\nget name(){return this.name_;}\ndeserializeStatistics_(){const statisticsNames=this.diagnostics.get(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES);if(!statisticsNames)return;for(const statName of statisticsNames){if(statName.startsWith('pct_')){const percent=percentFromString(statName.substr(4));this.summaryOptions.get('percentile').push(percent);}else if(statName.startsWith('ipr_')){const lower=percentFromString(statName.substr(4,3));const upper=percentFromString(statName.substr(8));this.summaryOptions.get('iprs').push(tr.b.math.Range.fromExplicitRange(lower,upper));}else if(statName.startsWith('ci_')){const percent=percentFromString(statName.replace('_lower','').replace('_upper','').substr(3));if(!this.summaryOptions.get('ci').includes(percent)){this.summaryOptions.get('ci').push(percent);}}}\nfor(const statName of this.summaryOptions.keys()){if(statName==='percentile'||statName==='iprs'||statName==='ci'){continue;}\nthis.summaryOptions.set(statName,statisticsNames.has(statName));}}\ndeserializeBin_(i,bin,deserializer){this.allBins[i]=new HistogramBin(this.allBins[i].range);this.allBins[i].deserialize(bin,deserializer);if(!(bin instanceof Array))return;for(let sample of bin.slice(1)){if(sample instanceof Array){sample=sample[0];}\nthis.sampleValues_.push(sample);}}\ndeserializeBins_(bins,deserializer){if(bins instanceof Array){for(let i=0;i<bins.length;++i){this.deserializeBin_(i,bins[i],deserializer);}}else{for(const[i,binData]of Object.entries(bins)){this.deserializeBin_(i,binData,deserializer);}}}\nstatic deserialize(data,deserializer){const[name,unit,boundaries,diagnostics,running,bins,nanBin]=data;const hist=new Histogram(deserializer.getObject(name),tr.b.Unit.fromJSON(unit),HistogramBinBoundaries.fromDict(deserializer.getObject(boundaries)));hist.diagnostics.deserializeAdd(diagnostics,deserializer);const description=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.DESCRIPTION);if(description&&description.length){hist.description=[...description][0];}\nhist.deserializeStatistics_();if(running){hist.running_=tr.b.math.RunningStatistics.fromDict(running);}\nif(bins){hist.deserializeBins_(bins,deserializer);}\nif(nanBin){if(!(nanBin instanceof Array)){hist.numNans=nanBin;}else{hist.numNans=nanBin[0];for(const sample of nanBin.slice(1)){if(!(sample instanceof Array))continue;hist.nanDiagnosticMaps.push(tr.v.d.DiagnosticMap.deserialize(sample.slice(1),deserializer));}}}\nreturn hist;}\nstatic fromDict(dict){const hist=new Histogram(dict.name,tr.b.Unit.fromJSON(dict.unit),HistogramBinBoundaries.fromDict(dict.binBoundaries));if(dict.description){hist.description=dict.description;}\nif(dict.diagnostics){hist.diagnostics.addDicts(dict.diagnostics);}\nif(dict.allBins){if(dict.allBins.length!==undefined){for(let i=0;i<dict.allBins.length;++i){hist.allBins[i]=new HistogramBin(hist.allBins[i].range);hist.allBins[i].fromDict(dict.allBins[i]);}}else{for(const[i,binDict]of Object.entries(dict.allBins)){if(i>=hist.allBins.length||i<0){throw new Error('Invalid index \"'+i+'\" out of bounds of [0..'+hist.allBins.length+')');}\nhist.allBins[i]=new HistogramBin(hist.allBins[i].range);hist.allBins[i].fromDict(binDict);}}}\nif(dict.running){hist.running_=tr.b.math.RunningStatistics.fromDict(dict.running);}\nif(dict.summaryOptions){if(dict.summaryOptions.iprs){dict.summaryOptions.iprs=dict.summaryOptions.iprs.map(r=>tr.b.math.Range.fromExplicitRange(r[0],r[1]));}\nhist.customizeSummaryOptions(dict.summaryOptions);}\nif(dict.maxNumSampleValues!==undefined){hist.maxNumSampleValues=dict.maxNumSampleValues;}\nif(dict.sampleValues){hist.sampleValues_=dict.sampleValues;}\nif(dict.numNans){hist.numNans=dict.numNans;}\nif(dict.nanDiagnostics){for(const map of dict.nanDiagnostics){hist.nanDiagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}\nreturn hist;}\nget numValues(){return this.running_?this.running_.count:0;}\nget average(){return this.running_?this.running_.mean:undefined;}\nget standardDeviation(){return this.running_?this.running_.stddev:undefined;}\nget geometricMean(){return this.running_?this.running_.geometricMean:0;}\nget sum(){return this.running_?this.running_.sum:0;}\nget min(){return this.running_?this.running_.min:Infinity;}\nget max(){return this.running_?this.running_.max:-Infinity;}\ngetDifferenceSignificance(other,opt_alpha){if(this.unit!==other.unit){throw new Error('Cannot compare Histograms with different units');}\nif(this.unit.improvementDirection===tr.b.ImprovementDirection.DONT_CARE){return tr.b.math.Statistics.Significance.DONT_CARE;}\nif(!(other instanceof Histogram)){throw new Error('Unable to compute a p-value');}\nconst testResult=tr.b.math.Statistics.mwu(this.sampleValues,other.sampleValues,opt_alpha);return testResult.significance;}\ngetApproximatePercentile(percent){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}\nif(this.numValues===0)return undefined;if(this.allBins.length===1){const sortedSampleValues=this.sampleValues.slice().sort((x,y)=>x-y);return sortedSampleValues[Math.floor((sortedSampleValues.length-1)*percent)];}\nlet valuesToSkip=Math.floor((this.numValues-1)*percent);for(const bin of this.allBins){valuesToSkip-=bin.count;if(valuesToSkip>=0)continue;if(bin.range.min===-Number.MAX_VALUE){return bin.range.max;}\nif(bin.range.max===Number.MAX_VALUE){return bin.range.min;}\nreturn bin.range.center;}\nreturn this.allBins[this.allBins.length-1].range.min;}\ngetBinIndexForValue(value){const i=tr.b.findFirstTrueIndexInSortedArray(this.allBins,b=>value<b.range.max);if(0<=i&&i<this.allBins.length)return i;return this.allBins.length-1;}\ngetBinForValue(value){return this.allBins[this.getBinIndexForValue(value)];}\naddSample(value,opt_diagnostics){if(opt_diagnostics){if(!(opt_diagnostics instanceof tr.v.d.DiagnosticMap)){opt_diagnostics=tr.v.d.DiagnosticMap.fromObject(opt_diagnostics);}\nfor(const[name,diag]of opt_diagnostics){if(diag instanceof tr.v.d.Breakdown){diag.truncate(this.unit);}}}\nif(typeof(value)!=='number'||isNaN(value)){this.numNans++;if(opt_diagnostics){tr.b.math.Statistics.uniformlySampleStream(this.nanDiagnosticMaps,this.numNans,opt_diagnostics,MAX_DIAGNOSTIC_MAPS);}}else{if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nthis.sampleMeans_=[];this.running_.add(value);value=this.unit.truncate(value);const binIndex=this.getBinIndexForValue(value);let bin=this.allBins[binIndex];if(bin.count===0){bin=new HistogramBin(bin.range);this.allBins[binIndex]=bin;}\nbin.addSample(value);if(opt_diagnostics){bin.addDiagnosticMap(opt_diagnostics);}}\ntr.b.math.Statistics.uniformlySampleStream(this.sampleValues_,this.numValues+this.numNans,value,this.maxNumSampleValues);}\nresampleMean_(percent){const filteredSamples=this.sampleValues_.filter(value=>typeof(value)==='number'&&!isNaN(value));const sampleCount=filteredSamples.length;if(sampleCount===0||percent<=0.0||percent>=1.0){return[undefined,undefined];}else if(sampleCount===1){return[filteredSamples[0],filteredSamples[0]];}\nconst iterations=DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING;if(this.sampleMeans_.length!==iterations){this.sampleMeans_=[];for(let i=0;i<iterations;i++){let tempSum=0.0;for(let j=0;j<sampleCount;j++){tempSum+=filteredSamples[Math.floor(Math.random()*sampleCount)];}\nthis.sampleMeans_.push(tempSum/sampleCount);}\nthis.sampleMeans_.sort((a,b)=>a-b);}\nreturn[this.sampleMeans_[Math.floor((iterations-1)*(0.5-percent/2))],this.sampleMeans_[Math.ceil((iterations-1)*(0.5+percent/2))],];}\nsampleValuesInto(samples){for(const sampleValue of this.sampleValues){samples.push(sampleValue);}}\ncanAddHistogram(other){if(this.unit!==other.unit){return false;}\nif(this.binBoundariesDict_===other.binBoundariesDict_){return true;}\nif(!this.binBoundariesDict_||!other.binBoundariesDict_){return true;}\nif(this.binBoundariesDict_.length!==other.binBoundariesDict_.length){return false;}\nfor(let i=0;i<this.binBoundariesDict_.length;++i){const slice=this.binBoundariesDict_[i];const otherSlice=other.binBoundariesDict_[i];if(slice instanceof Array){if(!(otherSlice instanceof Array)){return false;}\nif(slice[0]!==otherSlice[0]||!tr.b.math.approximately(slice[1],otherSlice[1])||slice[2]!==otherSlice[2]){return false;}}else{if(otherSlice instanceof Array){return false;}\nif(!tr.b.math.approximately(slice,otherSlice)){return false;}}}\nreturn true;}\naddHistogram(other){if(!this.canAddHistogram(other)){throw new Error('Merging incompatible Histograms');}\nif(!!this.binBoundariesDict_===!!other.binBoundariesDict_){for(let i=0;i<this.allBins.length;++i){let bin=this.allBins[i];if(bin.count===0){bin=new HistogramBin(bin.range);this.allBins[i]=bin;}\nbin.addBin(other.allBins[i]);}}else{const[multiBin,singleBin]=this.binBoundariesDict_?[this,other]:[other,this];for(const value of singleBin.sampleValues){if(typeof(value)!=='number'||isNaN(value)){continue;}\nconst binIndex=multiBin.getBinIndexForValue(value);let bin=multiBin.allBins[binIndex];if(bin.count===0){bin=new HistogramBin(bin.range);multiBin.allBins[binIndex]=bin;}\nbin.addSample(value);}}\ntr.b.math.Statistics.mergeSampledStreams(this.nanDiagnosticMaps,this.numNans,other.nanDiagnosticMaps,other.numNans,MAX_DIAGNOSTIC_MAPS);tr.b.math.Statistics.mergeSampledStreams(this.sampleValues,this.numValues+this.numNans,other.sampleValues,other.numValues+other.numNans,(this.maxNumSampleValues+other.maxNumSampleValues)/2);this.numNans+=other.numNans;if(other.running_!==undefined){if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nthis.running_=this.running_.merge(other.running_);}\nthis.sampleMeans_=[];this.diagnostics.addDiagnostics(other.diagnostics);for(const[stat,option]of other.summaryOptions){if(stat==='percentile'){const percentiles=this.summaryOptions.get(stat);for(const percent of option){if(!percentiles.includes(percent))percentiles.push(percent);}}else if(stat==='iprs'){const thisIprs=this.summaryOptions.get(stat);for(const ipr of option){let found=false;for(const thisIpr of thisIprs){found=ipr.equals(thisIpr);if(found)break;}\nif(!found)thisIprs.push(ipr);}}else if(stat==='ci'){const CIs=this.summaryOptions.get(stat);for(const CI of option){if(!CIs.includes(CI))CIs.push(CI);}}else if(option&&!this.summaryOptions.get(stat)){this.summaryOptions.set(stat,true);}}}\ncustomizeSummaryOptions(summaryOptions){for(const[key,value]of Object.entries(summaryOptions)){this.summaryOptions.set(key,value);}}\ngetStatisticScalar(statName,opt_referenceHistogram,opt_mwu){if(statName==='avg'){if(typeof(this.average)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.average);}\nif(statName==='std'){if(typeof(this.standardDeviation)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.standardDeviation);}\nif(statName==='geometricMean'){if(typeof(this.geometricMean)!=='number')return undefined;return new tr.b.Scalar(this.unit,this.geometricMean);}\nif(statName==='min'||statName==='max'||statName==='sum'){if(this.running_===undefined){this.running_=new tr.b.math.RunningStatistics();}\nif(typeof(this.running_[statName])!=='number')return undefined;return new tr.b.Scalar(this.unit,this.running_[statName]);}\nif(statName==='nans'){return new tr.b.Scalar(tr.b.Unit.byName.count_smallerIsBetter,this.numNans);}\nif(statName==='count'){return new tr.b.Scalar(tr.b.Unit.byName.count_smallerIsBetter,this.numValues);}\nif(statName.substr(0,4)==='pct_'){if(this.numValues===0)return undefined;const percent=percentFromString(statName.substr(4));const percentile=this.getApproximatePercentile(percent);if(typeof(percentile)!=='number')return undefined;return new tr.b.Scalar(this.unit,percentile);}\nif(statName.substr(0,3)==='ci_'){const percent=percentFromString(statName.substr(3,3));const[lowCI,highCI]=this.resampleMean_(percent);if(statName.substr(7)==='lower'){if(typeof(lowCI)!=='number')return undefined;return new tr.b.Scalar(this.unit,lowCI);}else if(statName.substr(7)==='upper'){if(typeof(highCI)!=='number')return undefined;return new tr.b.Scalar(this.unit,highCI);}\nif(typeof(highCI)!=='number'||typeof(lowCI)!=='number'){return undefined;}\nreturn new tr.b.Scalar(this.unit,highCI-lowCI);}\nif(statName.substr(0,4)==='ipr_'){let lower=percentFromString(statName.substr(4,3));let upper=percentFromString(statName.substr(8));if(lower>=upper){throw new Error('Invalid inter-percentile range: '+statName);}\nlower=this.getApproximatePercentile(lower);upper=this.getApproximatePercentile(upper);const ipr=upper-lower;if(typeof(ipr)!=='number')return undefined;return new tr.b.Scalar(this.unit,ipr);}\nif(!this.canCompare(opt_referenceHistogram)){throw new Error('Cannot compute '+statName+' when histograms are not comparable');}\nconst suffix=tr.b.Unit.nameSuffixForImprovementDirection(this.unit.improvementDirection);const deltaIndex=statName.indexOf(DELTA);if(deltaIndex>=0){const baseStatName=statName.substr(deltaIndex+1);const thisStat=this.getStatisticScalar(baseStatName);const otherStat=opt_referenceHistogram.getStatisticScalar(baseStatName);const deltaValue=thisStat.value-otherStat.value;if(statName[0]==='%'){return new tr.b.Scalar(tr.b.Unit.byName['normalizedPercentageDelta'+suffix],deltaValue/otherStat.value);}\nreturn new tr.b.Scalar(thisStat.unit.correspondingDeltaUnit,deltaValue);}\nif(statName===Z_SCORE_NAME){return new tr.b.Scalar(tr.b.Unit.byName['sigmaDelta'+suffix],(this.average-opt_referenceHistogram.average)/opt_referenceHistogram.standardDeviation);}\nconst mwu=opt_mwu||tr.b.math.Statistics.mwu(this.sampleValues,opt_referenceHistogram.sampleValues);if(statName===P_VALUE_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.p);}\nif(statName===U_STATISTIC_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.U);}\nthrow new Error('Unrecognized statistic name: '+statName);}\nget statisticsNames(){const statisticsNames=new Set();for(const[statName,option]of this.summaryOptions){if(statName==='percentile'){for(const pctile of option){statisticsNames.add('pct_'+tr.v.percentToString(pctile));}}else if(statName==='iprs'){for(const range of option){statisticsNames.add('ipr_'+tr.v.percentToString(range.min,true)+'_'+tr.v.percentToString(range.max,true));}}else if(statName==='ci'){for(const CIpctile of option){const CIpctStr=tr.v.percentToString(CIpctile);statisticsNames.add('ci_'+CIpctStr+'_lower');statisticsNames.add('ci_'+CIpctStr+'_upper');statisticsNames.add('ci_'+CIpctStr);}}else if(option){statisticsNames.add(statName);}}\nreturn statisticsNames;}\ncanCompare(other){return other instanceof Histogram&&this.unit===other.unit&&this.numValues>0&&other.numValues>0;}\ngetAvailableStatisticName(statName,opt_referenceHist){if(this.canCompare(opt_referenceHist))return statName;if(statName===Z_SCORE_NAME||statName===P_VALUE_NAME||statName===U_STATISTIC_NAME){return'avg';}\nconst deltaIndex=statName.indexOf(DELTA);if(deltaIndex<0)return statName;return statName.substr(deltaIndex+1);}\nstatic getDeltaStatisticsNames(statNames){const deltaNames=[];for(const statName of statNames){deltaNames.push(`${DELTA}${statName}`);deltaNames.push(`%${DELTA}${statName}`);}\nreturn deltaNames.concat([Z_SCORE_NAME,P_VALUE_NAME,U_STATISTIC_NAME]);}\nget statisticsScalars(){const results=new Map();for(const statName of this.statisticsNames){const scalar=this.getStatisticScalar(statName);if(scalar===undefined)continue;results.set(statName,scalar);}\nreturn results;}\nget sampleValues(){return this.sampleValues_;}\nclone(){const binBoundaries=HistogramBinBoundaries.fromDict(this.binBoundariesDict_);const hist=new Histogram(this.name,this.unit,binBoundaries);for(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='iprs'||stat==='ci'){hist.summaryOptions.set(stat,Array.from(option));}else{hist.summaryOptions.set(stat,option);}}\nhist.addHistogram(this);return hist;}\nrebin(newBoundaries){const rebinned=new tr.v.Histogram(this.name,this.unit,newBoundaries);rebinned.description=this.description;for(const sample of this.sampleValues){rebinned.addSample(sample);}\nrebinned.running_=this.running_;for(const[name,diagnostic]of this.diagnostics){rebinned.diagnostics.set(name,diagnostic);}\nfor(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='ci'){rebinned.summaryOptions.set(stat,Array.from(option));}else{rebinned.summaryOptions.set(stat,option);}}\nreturn rebinned;}\nserialize(serializer){let nanBin=this.numNans;if(this.nanDiagnosticMaps.length){nanBin=[nanBin,...this.nanDiagnosticMaps.map(dm=>[undefined,...dm.serialize(serializer)])];}\nthis.diagnostics.set(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES,new tr.v.d.GenericSet([...this.statisticsNames].sort()));this.diagnostics.set(tr.v.d.RESERVED_NAMES.DESCRIPTION,new tr.v.d.GenericSet([this.description].sort()));return[serializer.getOrAllocateId(this.name),this.unit.asJSON2(),serializer.getOrAllocateId(this.binBoundariesDict_),this.diagnostics.serialize(serializer),this.running_?this.running_.asDict():0,this.serializeBins_(serializer),nanBin,];}\nasDict(){const dict={};dict.name=this.name;dict.unit=this.unit.asJSON();if(this.binBoundariesDict_!==undefined){dict.binBoundaries=this.binBoundariesDict_;}\nif(this.description){dict.description=this.description;}\nif(this.diagnostics.size){dict.diagnostics=this.diagnostics.asDict();}\nif(this.maxNumSampleValues!==this.defaultMaxNumSampleValues_){dict.maxNumSampleValues=this.maxNumSampleValues;}\nif(this.numNans){dict.numNans=this.numNans;}\nif(this.nanDiagnosticMaps.length){dict.nanDiagnostics=this.nanDiagnosticMaps.map(dm=>dm.asDict());}\nif(this.numValues){dict.sampleValues=this.sampleValues.slice();this.running.truncate(this.unit);dict.running=this.running_.asDict();dict.allBins=this.allBinsAsDict_();}\nconst summaryOptions={};let anyOverriddenSummaryOptions=false;for(const[name,value]of this.summaryOptions){let option;if(name==='percentile'){if(value.length===0)continue;option=Array.from(value);}else if(name==='iprs'){if(value.length===0)continue;option=value.map(r=>[r.min,r.max]);}else if(name==='ci'){if(value.length===0)continue;option=Array.from(value);}else if(value===DEFAULT_SUMMARY_OPTIONS.get(name)){continue;}else{option=value;}\nsummaryOptions[name]=option;anyOverriddenSummaryOptions=true;}\nif(anyOverriddenSummaryOptions){dict.summaryOptions=summaryOptions;}\nreturn dict;}\nserializeBins_(serializer){const numBins=this.allBins.length;let emptyBins=0;for(let i=0;i<numBins;++i){if(this.allBins[i].count===0){++emptyBins;}}\nif(emptyBins===numBins){return 0;}\nif(emptyBins>(numBins/2)){const allBinsDict={};for(let i=0;i<numBins;++i){const bin=this.allBins[i];if(bin.count>0){allBinsDict[i]=bin.serialize(serializer);}}\nreturn allBinsDict;}\nconst allBinsArray=[];for(let i=0;i<numBins;++i){allBinsArray.push(this.allBins[i].serialize(serializer));}\nreturn allBinsArray;}\nallBinsAsDict_(){const numBins=this.allBins.length;let emptyBins=0;for(let i=0;i<numBins;++i){if(this.allBins[i].count===0){++emptyBins;}}\nif(emptyBins===numBins){return undefined;}\nif(emptyBins>(numBins/2)){const allBinsDict={};for(let i=0;i<numBins;++i){const bin=this.allBins[i];if(bin.count>0){allBinsDict[i]=bin.asDict();}}\nreturn allBinsDict;}\nconst allBinsArray=[];for(let i=0;i<numBins;++i){allBinsArray.push(this.allBins[i].asDict());}\nreturn allBinsArray;}\nget defaultMaxNumSampleValues_(){return DEFAULT_SAMPLE_VALUES_PER_BIN*Math.max(this.allBins.length,DEFAULT_REBINNED_COUNT);}}\nHistogram.AVERAGE_ONLY_SUMMARY_OPTIONS={count:false,max:false,min:false,std:false,sum:false,};const HISTOGRAM_BIN_BOUNDARIES_CACHE=new Map();class HistogramBinBoundaries{static createLinear(min,max,numBins){return new HistogramBinBoundaries(min).addLinearBins(max,numBins);}\nstatic createExponential(min,max,numBins){return new HistogramBinBoundaries(min).addExponentialBins(max,numBins);}\nstatic createWithBoundaries(binBoundaries){const builder=new HistogramBinBoundaries(binBoundaries[0]);for(const boundary of binBoundaries.slice(1)){builder.addBinBoundary(boundary);}\nreturn builder;}\nconstructor(minBinBoundary){this.builder_=[minBinBoundary];this.range_=new tr.b.math.Range();this.range_.addValue(minBinBoundary);this.binRanges_=undefined;this.bins_=undefined;}\nget range(){return this.range_;}\nasDict(){if(this.builder_.length===1&&this.builder_[0]===Number.MAX_VALUE){return undefined;}\nreturn this.builder_;}\npushBuilderSlice_(slice){this.builder_.push(slice);this.builder_=this.builder_.slice();}\nstatic fromDict(dict){if(dict===undefined){return HistogramBinBoundaries.SINGULAR;}\nconst cacheKey=JSON.stringify(dict);if(HISTOGRAM_BIN_BOUNDARIES_CACHE.has(cacheKey)){return HISTOGRAM_BIN_BOUNDARIES_CACHE.get(cacheKey);}\nconst binBoundaries=new HistogramBinBoundaries(dict[0]);for(const slice of dict.slice(1)){if(!(slice instanceof Array)){binBoundaries.addBinBoundary(slice);continue;}\nswitch(slice[0]){case HistogramBinBoundaries.SLICE_TYPE.LINEAR:binBoundaries.addLinearBins(slice[1],slice[2]);break;case HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL:binBoundaries.addExponentialBins(slice[1],slice[2]);break;default:throw new Error('Unrecognized HistogramBinBoundaries slice type');}}\nHISTOGRAM_BIN_BOUNDARIES_CACHE.set(cacheKey,binBoundaries);return binBoundaries;}\nget bins(){if(this.bins_===undefined){this.buildBins_();}\nreturn this.bins_;}\nbuildBins_(){this.bins_=this.binRanges.map(r=>new HistogramBin(r));}\nget binRanges(){if(this.binRanges_===undefined){this.buildBinRanges_();}\nreturn this.binRanges_;}\nbuildBinRanges_(){if(typeof this.builder_[0]!=='number'){throw new Error('Invalid start of builder_');}\nthis.binRanges_=[];let prevBoundary=this.builder_[0];if(prevBoundary>-Number.MAX_VALUE){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(-Number.MAX_VALUE,prevBoundary));}\nfor(const slice of this.builder_.slice(1)){if(!(slice instanceof Array)){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,slice));prevBoundary=slice;continue;}\nconst nextMaxBinBoundary=slice[1];const binCount=slice[2];const sliceMinBinBoundary=prevBoundary;switch(slice[0]){case HistogramBinBoundaries.SLICE_TYPE.LINEAR:{const binWidth=(nextMaxBinBoundary-prevBoundary)/binCount;for(let i=1;i<binCount;i++){const boundary=sliceMinBinBoundary+i*binWidth;this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,boundary));prevBoundary=boundary;}\nbreak;}\ncase HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL:{const binExponentWidth=Math.log(nextMaxBinBoundary/prevBoundary)/binCount;for(let i=1;i<binCount;i++){const boundary=sliceMinBinBoundary*Math.exp(i*binExponentWidth);this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,boundary));prevBoundary=boundary;}\nbreak;}\ndefault:throw new Error('Unrecognized HistogramBinBoundaries slice type');}\nthis.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,nextMaxBinBoundary));prevBoundary=nextMaxBinBoundary;}\nif(prevBoundary<Number.MAX_VALUE){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,Number.MAX_VALUE));}}\naddBinBoundary(nextMaxBinBoundary){if(nextMaxBinBoundary<=this.range.max){throw new Error('The added max bin boundary must be larger than '+'the current max boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_(nextMaxBinBoundary);this.range.addValue(nextMaxBinBoundary);return this;}\naddLinearBins(nextMaxBinBoundary,binCount){if(binCount<=0){throw new Error('Bin count must be positive');}\nif(nextMaxBinBoundary<=this.range.max){throw new Error('The new max bin boundary must be greater than '+'the previous max bin boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_([HistogramBinBoundaries.SLICE_TYPE.LINEAR,nextMaxBinBoundary,binCount]);this.range.addValue(nextMaxBinBoundary);return this;}\naddExponentialBins(nextMaxBinBoundary,binCount){if(binCount<=0){throw new Error('Bin count must be positive');}\nif(this.range.max<=0){throw new Error('Current max bin boundary must be positive');}\nif(this.range.max>=nextMaxBinBoundary){throw new Error('The last added max boundary must be greater than '+'the current max boundary boundary');}\nthis.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_([HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL,nextMaxBinBoundary,binCount]);this.range.addValue(nextMaxBinBoundary);return this;}}\nHistogramBinBoundaries.SLICE_TYPE={LINEAR:0,EXPONENTIAL:1,};HistogramBinBoundaries.SINGULAR=new HistogramBinBoundaries(Number.MAX_VALUE);DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeDurationInMs.unitName,HistogramBinBoundaries.createExponential(1e-3,1e6,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeInMsAutoFormat.unitName,new HistogramBinBoundaries(0).addBinBoundary(1).addExponentialBins(1e3,3).addBinBoundary(tr.b.convertUnit(2,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(5,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(10,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(30,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(5*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(10*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(30*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(6*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(12*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.DAY.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.WEEK.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MONTH.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.YEAR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeStampInMs.unitName,HistogramBinBoundaries.createLinear(0,1e10,1e3));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.normalizedPercentage.unitName,HistogramBinBoundaries.createLinear(0,1.0,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sizeInBytes.unitName,HistogramBinBoundaries.createExponential(1,1e12,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.energyInJoules.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.powerInWatts.unitName,HistogramBinBoundaries.createExponential(1e-3,1,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.unitlessNumber.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.count.unitName,HistogramBinBoundaries.createExponential(1,1e3,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sigma.unitName,HistogramBinBoundaries.createLinear(-5,5,50));return{DEFAULT_REBINNED_COUNT,DELTA,Histogram,HistogramBinBoundaries,P_VALUE_NAME,U_STATISTIC_NAME,Z_SCORE_NAME,percentFromString,percentToString,};});'use strict';tr.exportTo('tr.metrics',function(){function accessibilityMetric(histograms,model){const browserAccessibilityEventsHist=new tr.v.Histogram('browser_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);browserAccessibilityEventsHist.description='Browser accessibility events time';const renderAccessibilityEventsHist=new tr.v.Histogram('render_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityEventsHist.description='Render accessibility events time';const renderAccessibilityLocationsHist=new tr.v.Histogram('render_accessibility_locations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityLocationsHist.description='Render accessibility locations time';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return;for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const mainThread=rendererHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(!(slice instanceof tr.model.ThreadSlice))continue;if(slice.title==='RenderAccessibilityImpl::SendPendingAccessibilityEvents'){renderAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}\nif(slice.title==='RenderAccessibilityImpl::SendLocationChanges'){renderAccessibilityLocationsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}\nfor(const browserHelper of Object.values(chromeHelper.browserHelpers)){const mainThread=browserHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(slice.title==='BrowserAccessibilityManager::OnAccessibilityEvents'){browserAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}\nhistograms.addHistogram(browserAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityLocationsHist);}\ntr.metrics.MetricRegistry.register(accessibilityMetric);return{accessibilityMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const MESSAGE_LOOP_EVENT_NAME='Startup.BrowserMessageLoopStartTime';const CONTENT_START_EVENT_NAME='content::Start';const NAVIGATION_EVENT_NAME='Navigation StartToCommit';const FIRST_CONTENTFUL_PAINT_EVENT_NAME='firstContentfulPaint';function androidStartupMetric(histograms,model){let messageLoopStartEvents=[];let navigationEvents=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;for(const helper of chromeHelper.browserHelpers){for(const ev of helper.mainThread.asyncSliceGroup.childEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}}}\nlet contentStartEvents=[];let firstContentfulPaintEvents=[];const rendererHelpers=chromeHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(!rendererHelper.mainThread)continue;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}}\nlet totalBrowserStarts=messageLoopStartEvents.length;let totalContentStartEvents=contentStartEvents.length;let totalFcpEvents=firstContentfulPaintEvents.length;let totalNavigations=navigationEvents.length;if(totalFcpEvents!==totalBrowserStarts||totalNavigations!==totalBrowserStarts||totalContentStartEvents!==totalBrowserStarts||totalBrowserStarts===0){messageLoopStartEvents=[];contentStartEvents=[];navigationEvents=[];firstContentfulPaintEvents=[];for(const proc of Object.values(model.processes)){for(const ev of proc.getDescendantEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}\nfor(const ev of proc.getDescendantEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}}}\ntotalBrowserStarts=messageLoopStartEvents.length;totalContentStartEvents=contentStartEvents.length;totalNavigations=navigationEvents.length;totalFcpEvents=firstContentfulPaintEvents.length;}\nfunction orderEvents(event1,event2){return event1.start-event2.start;}\nmessageLoopStartEvents.sort(orderEvents);contentStartEvents.sort(orderEvents);navigationEvents.sort(orderEvents);firstContentfulPaintEvents.sort(orderEvents);if(totalFcpEvents<totalBrowserStarts){throw new Error('Found fewer FCP events ('+totalFcpEvents+') than browser starts ('+totalBrowserStarts+')');}\nconst messageLoopStartHistogram=histograms.createHistogram('messageloop_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const contentStartHistogram=histograms.createHistogram('experimental_content_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const navigationStartHistogram=histograms.createHistogram('experimental_navigation_start_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const navigationCommitHistogram=histograms.createHistogram('navigation_commit_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);const firstContentfulPaintHistogram=histograms.createHistogram('first_contentful_paint_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[]);let contentIndex=0;let navIndex=0;let fcpIndex=0;for(let loopStartIndex=0;loopStartIndex<totalBrowserStarts;){const startEvent=messageLoopStartEvents[loopStartIndex];if(fcpIndex===totalFcpEvents){break;}\nconst contentStartEvent=contentIndex<contentStartEvents.length?contentStartEvents[contentIndex]:null;if(contentStartEvent&&contentStartEvent.start<startEvent.start){contentIndex++;continue;}\nconst navEvent=navIndex<navigationEvents.length?navigationEvents[navIndex]:null;if(navEvent&&navEvent.start<startEvent.start){navIndex++;continue;}\nconst fcpEvent=firstContentfulPaintEvents[fcpIndex];if(fcpEvent.start<startEvent.start){fcpIndex++;continue;}\nloopStartIndex++;if(fcpIndex<2){continue;}\nmessageLoopStartHistogram.addSample(startEvent.duration,{events:new tr.v.d.RelatedEventSet([startEvent])});if(contentStartEvent){contentStartHistogram.addSample(contentStartEvent.start-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,contentStartEvent])});}\nif(navEvent){navigationStartHistogram.addSample(navEvent.start-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,navEvent])});navigationCommitHistogram.addSample(navEvent.end-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,navEvent])});}\nfirstContentfulPaintHistogram.addSample(fcpEvent.end-startEvent.start,{events:new tr.v.d.RelatedEventSet([startEvent,fcpEvent])});}}\ntr.metrics.MetricRegistry.register(androidStartupMetric);return{androidStartupMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const MAX_INPUT_EVENT_TO_STARTUP_DELAY_IN_MS=2000;const MIN_DRAW_DELAY_IN_MS=80;const MAX_DRAW_DELAY_IN_MS=2000;function findProcess(processName,model){for(const pid in model.processes){const process=model.processes[pid];if(process.name===processName){return process;}}\nreturn undefined;}\nfunction findThreads(process,threadPrefix){if(process===undefined)return undefined;const threads=[];for(const tid in process.threads){const thread=process.threads[tid];if(thread.name.startsWith(threadPrefix)){threads.push(thread);}}\nreturn threads;}\nfunction findUIThread(process){if(process===undefined)return undefined;const threads=findThreads(process,'UI Thread');if(threads!==undefined&&threads.length===1){return threads[0];}\nreturn process.threads[process.pid];}\nfunction findLaunchSlices(model){const launches=[];const binders=findThreads(findProcess('system_server',model),'Binder');for(const binderId in binders){const binder=binders[binderId];for(const sliceId in binder.asyncSliceGroup.slices){const slice=binder.asyncSliceGroup.slices[sliceId];if(slice.title.startsWith('launching:')){launches.push(slice);}}}\nreturn launches;}\nfunction findDrawSlice(appName,startNotBefore,model){let drawSlice=undefined;const thread=findUIThread(findProcess(appName,model));if(thread===undefined)return undefined;for(const sliceId in thread.sliceGroup.slices){const slice=thread.sliceGroup.slices[sliceId];if(slice.start<startNotBefore+MIN_DRAW_DELAY_IN_MS||slice.start>startNotBefore+MAX_DRAW_DELAY_IN_MS)continue;if(slice.title!=='draw')continue;if(drawSlice===undefined||slice.start<drawSlice.start){drawSlice=slice;}}\nreturn drawSlice;}\nfunction findInputEventSlice(endNotAfter,model){const endNotBefore=endNotAfter-MAX_INPUT_EVENT_TO_STARTUP_DELAY_IN_MS;let inputSlice=undefined;const systemUi=findUIThread(findProcess('com.android.systemui',model));if(systemUi===undefined)return undefined;for(const sliceId in systemUi.asyncSliceGroup.slices){const slice=systemUi.asyncSliceGroup.slices[sliceId];if(slice.end>endNotAfter||slice.end<endNotBefore)continue;if(slice.title!=='deliverInputEvent')continue;if(inputSlice===undefined||slice.end>inputSlice.end){inputSlice=slice;}}\nreturn inputSlice;}\nfunction computeStartupTimeInMs(appName,launchSlice,model){let startupStart=launchSlice.start;let startupEnd=launchSlice.end;const drawSlice=findDrawSlice(appName,launchSlice.end,model);if(drawSlice!==undefined){startupEnd=drawSlice.end;}\nconst inputSlice=findInputEventSlice(launchSlice.start,model);if(inputSlice!==undefined){startupStart=inputSlice.start;}\nreturn startupEnd-startupStart;}\nfunction measureStartup(histograms,model){const launches=findLaunchSlices(model);for(const sliceId in launches){const launchSlice=launches[sliceId];const appName=launchSlice.title.split(': ')[1];const startupMs=computeStartupTimeInMs(appName,launchSlice,model);histograms.createHistogram(`android:systrace:startup:${appName}`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,startupMs);}}\nfunction measureThreadStates(histograms,model,rangeOfInterest){for(const pid in model.processes){const process=model.processes[pid];if(process.name===undefined)continue;let hasSlices=false;let timeRunning=0;let timeRunnable=0;let timeSleeping=0;let timeUninterruptible=0;let timeBlockIO=0;let timeUnknown=0;for(const tid in process.threads){const thread=process.threads[tid];if(thread.timeSlices===undefined)continue;for(const sliceId in thread.timeSlices){const slice=thread.timeSlices[sliceId];const sliceRange=tr.b.math.Range.fromExplicitRange(slice.start,slice.end);const intersection=rangeOfInterest.findIntersection(sliceRange);const duration=intersection.duration;if(duration===0)continue;hasSlices=true;if(slice.title==='Running'){timeRunning+=duration;}else if(slice.title==='Runnable'){timeRunnable+=duration;}else if(slice.title==='Sleeping'){timeSleeping+=duration;}else if(slice.title.startsWith('Uninterruptible')){timeUninterruptible+=duration;if(slice.title.includes('Block I/O'))timeBlockIO+=duration;}else{timeUnknown+=duration;}}}\nif(hasSlices){const wall=rangeOfInterest.max-rangeOfInterest.min;histograms.createHistogram(`android:systrace:threadtime:${process.name}:running`,tr.b.Unit.byName.normalizedPercentage,timeRunning/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:runnable`,tr.b.Unit.byName.normalizedPercentage,timeRunnable/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:sleeping`,tr.b.Unit.byName.normalizedPercentage,timeSleeping/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:blockio`,tr.b.Unit.byName.normalizedPercentage,timeBlockIO/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:uninterruptible`,tr.b.Unit.byName.normalizedPercentage,timeUninterruptible/wall);if(timeUnknown>0){histograms.createHistogram(`android:systrace:threadtime:${process.name}:unknown`,tr.b.Unit.byName.normalizedPercentage,timeUnknown/wall);}}}}\nfunction androidSystraceMetric(histograms,model,options){let rangeOfInterest=model.bounds;if(options!==undefined&&options.rangeOfInterest!==undefined){rangeOfInterest=options.rangeOfInterest;}\nmeasureStartup(histograms,model);measureThreadStates(histograms,model,rangeOfInterest);}\ntr.metrics.MetricRegistry.register(androidSystraceMetric,{supportsRangeOfInterest:true});return{androidSystraceMetric,};});'use strict';tr.exportTo('tr.b.math',function(){const PERCENTILE_PRECISION=1e-7;function PiecewiseLinearFunction(){this.pieces=[];}\nPiecewiseLinearFunction.prototype={push(x1,y1,x2,y2){if(x1>=x2){throw new Error('Invalid segment');}\nif(this.pieces.length>0&&this.pieces[this.pieces.length-1].x2>x1){throw new Error('Potentially overlapping segments');}\nif(x1<x2){this.pieces.push(new Piece(x1,y1,x2,y2));}},partBelow(y){return this.pieces.reduce((acc,p)=>(acc+p.partBelow(y)),0);},get min(){return this.pieces.reduce((acc,p)=>Math.min(acc,p.min),Infinity);},get max(){return this.pieces.reduce((acc,p)=>Math.max(acc,p.max),-Infinity);},get average(){let weightedSum=0;let totalWeight=0;this.pieces.forEach(function(piece){weightedSum+=piece.width*piece.average;totalWeight+=piece.width;});if(totalWeight===0)return 0;return weightedSum/totalWeight;},percentile(percent){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}\nlet lower=this.min;let upper=this.max;const total=this.partBelow(upper);if(total===0)return 0;while(upper-lower>PERCENTILE_PRECISION){const middle=(lower+upper)/2;const below=this.partBelow(middle);if(below/total<percent){lower=middle;}else{upper=middle;}}\nreturn(lower+upper)/2;}};function Piece(x1,y1,x2,y2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;}\nPiece.prototype={partBelow(y){const width=this.width;if(width===0)return 0;const minY=this.min;const maxY=this.max;if(y>=maxY)return width;if(y<minY)return 0;return(y-minY)/(maxY-minY)*width;},get min(){return Math.min(this.y1,this.y2);},get max(){return Math.max(this.y1,this.y2);},get average(){return(this.y1+this.y2)/2;},get width(){return this.x2-this.x1;}};return{PiecewiseLinearFunction,};});'use strict';tr.exportTo('tr.model',function(){function Slice(category,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId){if(new.target){throw new Error('Can\\'t instantiate pure virtual class Slice');}\ntr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.args=args;this.startStackFrame=undefined;this.endStackFrame=undefined;this.didNotFinish=false;this.inFlowEvents=[];this.outFlowEvents=[];this.subSlices=[];this.selfTime=undefined;this.cpuSelfTime=undefined;this.important=false;this.parentContainer=undefined;this.argsStripped=false;this.bind_id_=opt_bindId;this.parentSlice=undefined;this.isTopLevel=false;if(opt_duration!==undefined){this.duration=opt_duration;}\nif(opt_cpuStart!==undefined){this.cpuStart=opt_cpuStart;}\nif(opt_cpuDuration!==undefined){this.cpuDuration=opt_cpuDuration;}\nif(opt_argsStripped!==undefined){this.argsStripped=true;}}\nSlice.prototype={__proto__:tr.model.TimedEvent.prototype,get analysisTypeName(){return this.title;},get userFriendlyName(){return'Slice '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get stableId(){const parentSliceGroup=this.parentContainer.sliceGroup;return parentSliceGroup.stableId+'.'+\nparentSliceGroup.slices.indexOf(this);},get bindId(){return this.bind_id_;},findDescendentSlice(targetTitle){if(!this.subSlices){return undefined;}\nfor(let i=0;i<this.subSlices.length;i++){if(this.subSlices[i].title===targetTitle){return this.subSlices[i];}\nconst slice=this.subSlices[i].findDescendentSlice(targetTitle);if(slice)return slice;}\nreturn undefined;},get mostTopLevelSlice(){if(!this.parentSlice)return this;return this.parentSlice.mostTopLevelSlice;},getProcess(){const thread=this.parentContainer;if(thread&&thread.getProcess){return thread.getProcess();}\nreturn undefined;},get model(){const process=this.getProcess();if(process!==undefined){return this.getProcess().model;}\nreturn undefined;},*findTopmostSlicesRelativeToThisSlice(eventPredicate){if(eventPredicate(this)){yield this;return;}\nfor(const s of this.subSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},iterateAllSubsequentSlices(callback,opt_this){const parentStack=[];let started=false;const topmostSlice=this.mostTopLevelSlice;parentStack.push(topmostSlice);while(parentStack.length!==0){const curSlice=parentStack.pop();if(started){callback.call(opt_this,curSlice);}else{started=(curSlice.guid===this.guid);}\nfor(let i=curSlice.subSlices.length-1;i>=0;i--){parentStack.push(curSlice.subSlices[i]);}}},get subsequentSlices(){const res=[];this.iterateAllSubsequentSlices(function(subseqSlice){res.push(subseqSlice);});return res;},*enumerateAllAncestors(){let curSlice=this.parentSlice;while(curSlice){yield curSlice;curSlice=curSlice.parentSlice;}},get ancestorSlices(){return Array.from(this.enumerateAllAncestors());},iterateEntireHierarchy(callback,opt_this){const mostTopLevelSlice=this.mostTopLevelSlice;callback.call(opt_this,mostTopLevelSlice);mostTopLevelSlice.iterateAllSubsequentSlices(callback,opt_this);},get entireHierarchy(){const res=[];this.iterateEntireHierarchy(function(slice){res.push(slice);});return res;},get ancestorAndSubsequentSlices(){const res=[];res.push(this);for(const aSlice of this.enumerateAllAncestors()){res.push(aSlice);}\nthis.iterateAllSubsequentSlices(function(sSlice){res.push(sSlice);});return res;},*enumerateAllDescendents(){for(const slice of this.subSlices){yield slice;}\nfor(const slice of this.subSlices){yield*slice.enumerateAllDescendents();}},get descendentSlices(){const res=[];for(const slice of this.enumerateAllDescendents()){res.push(slice);}\nreturn res;}};return{Slice,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function ThreadSlice(cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId){Slice.call(this,cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId);this.subSlices=[];}\nThreadSlice.prototype={__proto__:Slice.prototype,get overlappingSamples(){const samples=new tr.model.EventSet();if(!this.parentContainer||!this.parentContainer.samples){return samples;}\nthis.parentContainer.samples.forEach(function(sample){if(this.start<=sample.start&&sample.start<=this.end){samples.push(sample);}},this);return samples;}};tr.model.EventRegistry.register(ThreadSlice,{name:'slice',pluralName:'slices'});return{ThreadSlice,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8ThreadSlice(){ThreadSlice.apply(this,arguments);this.runtimeCallStats_=undefined;}\nV8ThreadSlice.prototype={__proto__:ThreadSlice.prototype,get runtimeCallStats(){if('runtime-call-stats'in this.args){this.runtimeCallStats_=this.args['runtime-call-stats'];delete this.args['runtime-call-stats'];}\nreturn this.runtimeCallStats_;}};ThreadSlice.subTypes.register(V8ThreadSlice,{categoryParts:['v8','disabled-by-default-v8.runtime_stats'],name:'v8 slice',pluralName:'v8 slices'});return{V8ThreadSlice,};});'use strict';tr.exportTo('tr.metrics.v8.utils',function(){const IDLE_TASK_EVENT='SingleThreadIdleTaskRunner::RunTask';const V8_EXECUTE='V8.Execute';const GC_EVENT_PREFIX='V8.GC';const FULL_GC_EVENT='V8.GCCompactor';const LOW_MEMORY_EVENT='V8.GCLowMemoryNotification';const MAJOR_GC_EVENT='MajorGC';const MINOR_GC_EVENT='MinorGC';const TOP_GC_EVENTS={'V8.GCCompactor':'v8-gc-full-mark-compactor','V8.GCFinalizeMC':'v8-gc-latency-mark-compactor','V8.GCFinalizeMCReduceMemory':'v8-gc-memory-mark-compactor','V8.GCIncrementalMarking':'v8-gc-incremental-step','V8.GCIncrementalMarkingFinalize':'v8-gc-incremental-finalize','V8.GCIncrementalMarkingStart':'v8-gc-incremental-start','V8.GCPhantomHandleProcessingCallback':'v8-gc-phantom-handle-callback','V8.GCScavenger':'v8-gc-scavenger'};const MARK_COMPACTOR_EVENTS=new Set(['V8.GCCompactor','V8.GCFinalizeMC','V8.GCFinalizeMCReduceMemory','V8.GCIncrementalMarking','V8.GCIncrementalMarkingFinalize','V8.GCIncrementalMarkingStart','V8.GCPhantomHandleProcessingCallback']);const LOW_MEMORY_MARK_COMPACTOR='v8-gc-low-memory-mark-compactor';function findParent(event,predicate){let parent=event.parentSlice;while(parent){if(predicate(parent)){return parent;}\nparent=parent.parentSlice;}\nreturn null;}\nfunction isIdleTask(event){return event.title===IDLE_TASK_EVENT;}\nfunction isLowMemoryEvent(event){return event.title===LOW_MEMORY_EVENT;}\nfunction isV8Event(event){return event.title.startsWith('V8.');}\nfunction isV8ExecuteEvent(event){return event.title===V8_EXECUTE;}\nfunction isTopV8ExecuteEvent(event){return isV8ExecuteEvent(event)&&findParent(isV8ExecuteEvent)===null;}\nfunction isGarbageCollectionEvent(event){return event.title&&event.title.startsWith(GC_EVENT_PREFIX)&&event.title!==LOW_MEMORY_EVENT;}\nfunction isTopGarbageCollectionEvent(event){return event.title in TOP_GC_EVENTS;}\nfunction isForcedGarbageCollectionEvent(event){return findParent(event,isLowMemoryEvent)!==null;}\nfunction isSubGarbageCollectionEvent(event){return isGarbageCollectionEvent(event)&&event.parentSlice&&(isTopGarbageCollectionEvent(event.parentSlice)||event.parentSlice.title===MAJOR_GC_EVENT||event.parentSlice.title===MINOR_GC_EVENT);}\nfunction isNotForcedTopGarbageCollectionEvent(event){return tr.metrics.v8.utils.isTopGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isNotForcedSubGarbageCollectionEvent(event){return tr.metrics.v8.utils.isSubGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isFullMarkCompactorEvent(event){return event.title==='V8.GCCompactor';}\nfunction isMarkCompactorSummaryEvent(event){return event.title==='V8.GCMarkCompactorSummary';}\nfunction isMarkCompactorMarkingSummaryEvent(event){return event.title==='V8.GCMarkCompactorMarkingSummary';}\nfunction isScavengerStackScanningEvent(event){return event.title==='V8.GCScavengerStackScanning';}\nfunction isIncrementalMarkingEvent(event){return event.title.startsWith('V8.GCIncrementalMarking');}\nfunction isLatencyMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMC';}\nfunction isMemoryMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMCReduceMemory';}\nfunction isScavengerEvent(event){return event.title==='V8.GCScavenger';}\nfunction isCompileOptimizeRCSCategory(name){return name==='Optimize';}\nfunction isCompileUnoptimizeRCSCategory(name){return name==='Compile';}\nfunction isCompileParseRCSCategory(name){return name==='Parse';}\nfunction isCompileRCSCategory(name){return name==='Compile'||name==='Optimize'||name==='Parse';}\nfunction isV8RCSEvent(event){return event instanceof tr.e.v8.V8ThreadSlice;}\nfunction isMarkCompactorEvent(event){return MARK_COMPACTOR_EVENTS.has(event.title);}\nfunction isNotForcedMarkCompactorEvent(event){return!isForcedGarbageCollectionEvent(event)&&isMarkCompactorEvent(event);}\nfunction forcedGCEventName(){return LOW_MEMORY_EVENT;}\nfunction topGarbageCollectionEventName(event){if(event.title===FULL_GC_EVENT){if(findParent(event,isLowMemoryEvent)){return LOW_MEMORY_MARK_COMPACTOR;}}\nreturn TOP_GC_EVENTS[event.title];}\nfunction topGarbageCollectionEventNames(){return Object.values(TOP_GC_EVENTS);}\nfunction subGarbageCollectionEventName(event){const topEvent=findParent(event,isTopGarbageCollectionEvent);const prefix=topEvent?topGarbageCollectionEventName(topEvent):'unknown';const name=event.title.replace('V8.GC_MC_','').replace('V8.GC_SCAVENGER_','').replace('V8.GC_','').replace(/_/g,'-').toLowerCase();return prefix+'-'+name;}\nfunction jsExecutionThreads(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let threads=[];for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.isChromeTracingUI)continue;threads.push(rendererHelper.mainThread);threads=threads.concat(rendererHelper.dedicatedWorkerThreads);threads=threads.concat(rendererHelper.foregroundWorkerThreads);}\nreturn threads;}\nfunction groupAndProcessEvents(model,filterCallback,groupCallback,processCallback,groups){const groupToEvents={};if(groups){for(const group of groups){groupToEvents[group]=[];}}\nconst threads=jsExecutionThreads(model);for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;const group=groupCallback(event);if(groups&&!(group in groupToEvents)){continue;}\ngroupToEvents[group]=groupToEvents[group]||[];groupToEvents[group].push(event);}}\nfor(const[group,events]of Object.entries(groupToEvents)){processCallback(group,events);}}\nfunction filterEvents(model,filterCallback){const threads=jsExecutionThreads(model);const events=[];for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;events.push(event);}}\nreturn events;}\nfunction unionOfIntervals(intervals){if(intervals.length===0)return[];return tr.b.math.mergeRanges(intervals.map(x=>{return{min:x.start,max:x.end};}),1e-6,function(ranges){return{start:ranges.reduce((acc,x)=>Math.min(acc,x.min),ranges[0].min),end:ranges.reduce((acc,x)=>Math.max(acc,x.max),ranges[0].max)};});}\nfunction hasV8Stats(globalMemoryDump){let v8stats=undefined;globalMemoryDump.iterateContainerDumps(function(dump){v8stats=v8stats||dump.getMemoryAllocatorDumpByFullName('v8');});return!!v8stats;}\nfunction rangeForMemoryDumps(model){const startOfFirstDumpWithV8=model.globalMemoryDumps.filter(hasV8Stats).reduce((start,dump)=>Math.min(start,dump.start),Infinity);if(startOfFirstDumpWithV8===Infinity)return new tr.b.math.Range();return tr.b.math.Range.fromExplicitRange(startOfFirstDumpWithV8,Infinity);}\nclass WindowEndpoint{constructor(start,points){this.points=points;this.lastIndex=-1;this.position=start;this.distanceUntilNextPoint=points[0].position-start;this.cummulativePause=0;this.stackDepth=0;}\nadvance(delta){if(delta<this.distanceUntilNextPoint){this.position+=delta;this.cummulativePause+=this.stackDepth>0?delta:0;this.distanceUntilNextPoint=this.points[this.lastIndex+1].position-this.position;}else{this.position+=this.distanceUntilNextPoint;this.cummulativePause+=this.stackDepth>0?this.distanceUntilNextPoint:0;this.distanceUntilNextPoint=0;this.lastIndex++;if(this.lastIndex<this.points.length){this.stackDepth+=this.points[this.lastIndex].delta;if(this.lastIndex+1<this.points.length){this.distanceUntilNextPoint=this.points[this.lastIndex+1].position-this.position;}}}}}\nfunction mutatorUtilization(start,end,timeWindow,intervals){const mu=new tr.b.math.PiecewiseLinearFunction();if(end-start<=timeWindow){return mu;}\nif(intervals.length===0){mu.push(start,1.0,end-timeWindow,1.0);return mu;}\nintervals=unionOfIntervals(intervals);const points=[];for(const interval of intervals){points.push({position:interval.start,delta:1});points.push({position:interval.end,delta:-1});}\npoints.sort((a,b)=>a.position-b.position);points.push({position:end,delta:0});const left=new WindowEndpoint(start,points);const right=new WindowEndpoint(start,points);const EPSILON=1e-6;while(right.position-left.position<timeWindow-EPSILON){right.advance(timeWindow-(right.position-left.position));}\nwhile(right.lastIndex<points.length){const distanceUntilNextPoint=Math.min(left.distanceUntilNextPoint,right.distanceUntilNextPoint);const position1=left.position;const value1=right.cummulativePause-left.cummulativePause;left.advance(distanceUntilNextPoint);right.advance(distanceUntilNextPoint);if(distanceUntilNextPoint>0){const position2=left.position;const value2=right.cummulativePause-left.cummulativePause;mu.push(position1,1.0-value1/timeWindow,position2,1.0-value2/timeWindow);}}\nreturn mu;}\nfunction addMutatorUtilization(metricName,eventFilter,timeWindows,rendererHelpers,histograms){const histogramMap=new Map();for(const timeWindow of timeWindows){const summaryOptions={avg:false,count:false,max:false,min:true,std:false,sum:false};const description=`The minimum mutator utilization in ${timeWindow}ms time window`;const histogram=histograms.createHistogram(`${metricName}-${timeWindow}ms_window`,tr.b.Unit.byName.normalizedPercentage_biggerIsBetter,[],{summaryOptions,description});histogramMap.set(timeWindow,histogram);}\nfor(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;const pauses=[];for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){if(eventFilter(event)&&event.end>event.start){pauses.push({start:event.start,end:event.end});}}\npauses.sort((a,b)=>a.start-b.start);const start=rendererHelper.mainThread.bounds.min;const end=rendererHelper.mainThread.bounds.max;for(const timeWindow of timeWindows){const mu=mutatorUtilization(start,end,timeWindow,pauses);histogramMap.get(timeWindow).addSample(mu.min);}}}\nreturn{addMutatorUtilization,findParent,forcedGCEventName,filterEvents,groupAndProcessEvents,isForcedGarbageCollectionEvent,isFullMarkCompactorEvent,isGarbageCollectionEvent,isIdleTask,isIncrementalMarkingEvent,isLatencyMarkCompactorEvent,isLowMemoryEvent,isMarkCompactorSummaryEvent,isMarkCompactorMarkingSummaryEvent,isMemoryMarkCompactorEvent,isNotForcedMarkCompactorEvent,isNotForcedTopGarbageCollectionEvent,isNotForcedSubGarbageCollectionEvent,isScavengerEvent,isScavengerStackScanningEvent,isSubGarbageCollectionEvent,isTopGarbageCollectionEvent,isTopV8ExecuteEvent,isV8Event,isV8ExecuteEvent,isV8RCSEvent,isCompileRCSCategory,isCompileOptimizeRCSCategory,isCompileUnoptimizeRCSCategory,isCompileParseRCSCategory,mutatorUtilization,rangeForMemoryDumps,subGarbageCollectionEventName,topGarbageCollectionEventName,topGarbageCollectionEventNames,unionOfIntervals,};});'use strict';tr.exportTo('tr.metrics.blink',function(){const BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP={'BlinkGC.AtomicPauseMarkEpilogue':'blink-gc-atomic-pause-mark-epilogue','BlinkGC.AtomicPauseMarkPrologue':'blink-gc-atomic-pause-mark-prologue','BlinkGC.AtomicPauseMarkRoots':'blink-gc-atomic-pause-mark-roots','BlinkGC.IncrementalMarkingStartMarking':'blink-gc-incremental-start','BlinkGC.IncrementalMarkingStep':'blink-gc-incremental-step','BlinkGC.UnifiedMarkingStep':'blink-gc-unified-marking-by-v8','BlinkGC.CompleteSweep':'blink-gc-complete-sweep','BlinkGC.LazySweepInIdle':'blink-gc-sweep-task-foreground','BlinkGC.LazySweepOnAllocation':'blink-gc-sweep-allocation','BlinkGC.AtomicPauseSweepAndCompact':'blink-gc-atomic-pause-sweep-and-compact'};const BLINK_TOP_GC_ROOTS_MARKING_EVENTS=['BlinkGC.VisitRoots'];const BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure'];const BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.IncrementalMarkingStep','BlinkGC.UnifiedMarkingStep'];const BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.IncrementalMarkingStartMarking',].concat(BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS);const BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS=['BlinkGC.ConcurrentMarkingStep'];const BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS=['BlinkGC.CompleteSweep','BlinkGC.LazySweepInIdle','BlinkGC.LazySweepOnAllocation'];const BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS=['BlinkGC.ConcurrentSweepingStep'];const BLINK_TOP_GC_EVENTS=Object.keys(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP).concat(BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS);const ATOMIC_PAUSE_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.AtomicPauseSweepAndCompact'];function blinkGarbageCollectionEventName(event){return BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP[event.title];}\nfunction blinkGarbageCollectionEventNames(){return Object.values(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP);}\nfunction isNonForcedEvent(event){return(!event.args||!event.args.forced)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionEvent(event){return BLINK_TOP_GC_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedNonAggregatedBlinkGarbageCollectionEvent(event){return event.title in BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionAtomicPauseEvent(event){return ATOMIC_PAUSE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionRootsMarkingEvent(event){return BLINK_TOP_GC_ROOTS_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction\nisNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent(event){return BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction\nisNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent(event){return BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionForegroundMarkingEvent(event){return BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent(event){return BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionForegroundSweepingEvent(event){return BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent(event){return BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}\nfunction isNonNestedNonForcedBlinkGarbageCollectionEvent(event){return isNonForcedBlinkGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isGarbageCollectionEvent);}\nfunction blinkGcMetric(histograms,model){addDurationOfTopEvents(histograms,model);addDurationOfAtomicPause(histograms,model);addDurationOfAtomicPauseTransitiveClosure(histograms,model);addTotalDurationOfTopEvents(histograms,model);addTotalDurationOfBlinkAndV8TopEvents(histograms,model);addTotalDurationOfRootsMarking(histograms,model);addTotalDurationOfMarkingTransitiveClosure(histograms,model);addTotalDurationOfForegroundMarking(histograms,model);addTotalDurationOfBackgroundMarking(histograms,model);addTotalDurationOfForegroundSweeping(histograms,model);addTotalDurationOfBackgroundSweeping(histograms,model);}\ntr.metrics.MetricRegistry.register(blinkGcMetric);const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,20,200).addExponentialBins(200,100);function createNumericForTopEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:true,max:true,min:false,std:true,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForTotalEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:false,min:false,std:false,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForUnifiedEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:true,min:false,std:false,sum:true,percentile:[0.90]});return n;}\nfunction addDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedNonAggregatedBlinkGarbageCollectionEvent,blinkGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForTopEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},blinkGarbageCollectionEventNames());}\nfunction addDurationOfAtomicPause(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}\nfunction addDurationOfAtomicPauseTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause-mark-transitive-closure');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}\nfunction addTotalDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionEvent,event=>'blink-gc-total',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-total']);}\nfunction addTotalDurationOfRootsMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionRootsMarkingEvent,event=>'blink-gc-mark-roots',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-roots']);}\nfunction addTotalDurationOfMarkingTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent,event=>'blink-gc-mark-transitive-closure',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-transitive-closure']);}\nfunction addTotalDurationOfForegroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundMarkingEvent,event=>'blink-gc-mark-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-foreground']);}\nfunction addTotalDurationOfBackgroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent,event=>'blink-gc-mark-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-mark-background']);}\nfunction addTotalDurationOfForegroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundSweepingEvent,event=>'blink-gc-sweep-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-sweep-foreground']);}\nfunction addTotalDurationOfBackgroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent,event=>'blink-gc-sweep-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['blink-gc-sweep-background']);}\nfunction isV8OrBlinkTopLevelGarbageCollectionEvent(event){return tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent(event)||isNonNestedNonForcedBlinkGarbageCollectionEvent(event);}\nfunction addTotalDurationOfBlinkAndV8TopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8OrBlinkTopLevelGarbageCollectionEvent,event=>'unified-gc-total',function(name,events){const cpuDuration=createNumericForUnifiedEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}\nhistograms.addHistogram(cpuDuration);},['unified-gc-total']);}\nreturn{blinkGcMetric,};});'use strict';tr.exportTo('tr.metrics.blink',function(){function leakDetectionMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper===undefined){throw new Error('Chrome is not present.');}\nconst rendererHelpers=modelHelper.rendererHelpers;if(Object.keys(rendererHelpers).length===0){throw new Error('Renderer process is not present.');}\nconst pids=Object.keys(rendererHelpers);const chromeDumps=tr.metrics.sh.splitGlobalDumpsByBrowserName(model,undefined).get('chrome');const sumCounter=new Map();for(const pid of pids){for(const[key,count]of countLeakedBlinkObjects(chromeDumps,pid)){sumCounter.set(key,(sumCounter.get(key)||0)+count);}}\nfor(const[key,count]of sumCounter){histograms.createHistogram('Leaked '+key,tr.b.Unit.byName.count_smallerIsBetter,count);}\nfor(const[key,count]of sumCounter){if(count>0){throw new Error('Memory leak is found.');}}}\ntr.metrics.MetricRegistry.register(leakDetectionMetric);function countLeakedBlinkObjects(dumps,pid){if(dumps===undefined||dumps.length<2){throw new Error('Expected at least two memory dumps.');}\nconst firstCounter=countBlinkObjects(dumps[0],pid);const lastCounter=countBlinkObjects(dumps[dumps.length-1],pid);const diffCounter=new Map();for(const[key,lastCount]of lastCounter){diffCounter.set(key,lastCount-firstCounter.get(key));}\nreturn diffCounter;}\nfunction countBlinkObjects(dump,pid){const counter=new Map();const processesMemoryDumps=dump.processMemoryDumps;if(processesMemoryDumps[pid]===undefined)return counter;const blinkObjectsDump=processesMemoryDumps[pid].memoryAllocatorDumps.find(dump=>dump.fullName==='blink_objects');for(const v of blinkObjectsDump.children){counter.set(v.name,v.numerics.object_count.value);}\nreturn counter;}\nreturn{leakDetectionMetric,};});'use strict';tr.exportTo('tr.metrics.console',function(){const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e4,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const SOURCES=['all','js','network'];function consoleErrorMetric(histograms,model){const counts={};for(const source of SOURCES){counts[source]=0;}\nfor(const slice of model.getDescendantEvents()){if(slice.category==='blink.console'&&slice.title==='ConsoleMessage::Error'){const source=slice.args.source.toLowerCase();counts.all++;if(source in counts){counts[source]++;}}\nif(slice.category==='v8.console'&&(slice.title==='V8ConsoleMessage::Exception'||slice.title==='V8ConsoleMessage::Error'||slice.title==='V8ConsoleMessage::Assert')){counts.all++;counts.js++;}}\nfor(const source of SOURCES){histograms.createHistogram(`console:error:${source}`,tr.b.Unit.byName.count_smallerIsBetter,counts[source],{description:`Number of ${source} console error messages`,summaryOptions:SUMMARY_OPTIONS});}}\ntr.metrics.MetricRegistry.register(consoleErrorMetric);return{consoleErrorMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function getCpuSnapshotsFromModel(model){const snapshots=[];for(const pid in model.processes){const snapshotInstances=model.processes[pid].objects.getAllInstancesNamed('CPUSnapshots');if(!snapshotInstances)continue;for(const object of snapshotInstances[0].snapshots){snapshots.push(object.args.processes);}}\nreturn snapshots;}\nfunction getProcessSumsFromSnapshot(snapshot){const processSums=new Map();for(const processData of snapshot){const processName=processData.name;if(!(processSums.has(processName))){processSums.set(processName,{sum:0.0,paths:new Set()});}\nprocessSums.get(processName).sum+=parseFloat(processData.pCpu);if(processData.path){processSums.get(processName).paths.add(processData.path);}}\nreturn processSums;}\nfunction buildNumericsFromSnapshots(snapshots){const processNumerics=new Map();for(const snapshot of snapshots){const processSums=getProcessSumsFromSnapshot(snapshot);for(const[processName,processData]of processSums.entries()){if(!(processNumerics.has(processName))){processNumerics.set(processName,{numeric:new tr.v.Histogram('cpu:percent:'+processName,tr.b.Unit.byName.normalizedPercentage_smallerIsBetter),paths:new Set()});}\nprocessNumerics.get(processName).numeric.addSample(processData.sum/100.0);for(const path of processData.paths){processNumerics.get(processName).paths.add(path);}}}\nreturn processNumerics;}\nfunction cpuProcessMetric(histograms,model){const snapshots=getCpuSnapshotsFromModel(model);const processNumerics=buildNumericsFromSnapshots(snapshots);for(const[processName,processData]of processNumerics){const numeric=processData.numeric;const missingSnapshotCount=snapshots.length-numeric.numValues;for(let i=0;i<missingSnapshotCount;i++){numeric.addSample(0);}\nnumeric.diagnostics.set('paths',new\ntr.v.d.GenericSet([...processData.paths]));histograms.addHistogram(numeric);}}\ntr.metrics.MetricRegistry.register(cpuProcessMetric);return{cpuProcessMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function mediaMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return;for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const mainThread=rendererHelper.mainThread;if(mainThread===undefined)continue;const videoThreads=rendererHelper.process.findAllThreadsMatching(thread=>(thread.name?thread.name.startsWith('ThreadPoolSingleThreadSharedForegroundBlocking'):false));const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){videoThreads.push(compositorThread);}\nconst audioThreads=rendererHelper.process.findAllThreadsNamed('AudioOutputDevice');if(audioThreads.length===0&&videoThreads.length===0)continue;const processData=new PerProcessData();processData.recordPlayStarts(mainThread);if(!processData.hasPlaybacks)continue;if(videoThreads.length!==0){processData.calculateTimeToVideoPlays(videoThreads);processData.calculateDroppedFrameCounts(videoThreads);}\nif(audioThreads.length!==0){processData.calculateTimeToAudioPlays(audioThreads);}\nprocessData.calculateSeekTimes(mainThread);processData.calculateBufferingTimes(mainThread);processData.addMetricToHistograms(histograms);}}\nclass PerProcessData{constructor(){this.playbackIdToDataMap_=new Map();}\nrecordPlayStarts(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoLoad'){const id=event.args.id;if(this.playbackIdToDataMap_.has(id)){throw new Error('Unexpected multiple initialization of a media playback');}\nthis.playbackIdToDataMap_.set(id,new PerPlaybackData(event.start));}}}\nget hasPlaybacks(){return this.playbackIdToDataMap_.size>0;}\ncalculateTimeToVideoPlays(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processVideoRenderTime(event.start);}}}}\ncalculateTimeToAudioPlays(audioThreads){for(const audioThread of audioThreads){for(const event of audioThread.sliceGroup.getDescendantEvents()){if(event.title==='AudioRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processAudioRenderTime(event.start);}}}}\ncalculateSeekTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoSeek'){this.getPerPlaybackObject_(event.args.id).processDoSeek(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::OnPipelineSeeked'){this.getPerPlaybackObject_(event.args.id).processOnPipelineSeeked(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::BufferingHaveEnough'){this.getPerPlaybackObject_(event.args.id).processBufferingHaveEnough(event.start);}}}\ncalculateBufferingTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::OnEnded'){this.getPerPlaybackObject_(event.args.id).processOnEnded(event.start,event.args.duration);}}}\ncalculateDroppedFrameCounts(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoFramesDropped'){this.getPerPlaybackObject_(event.args.id).processVideoFramesDropped(event.args.count);}}}}\naddMetricToHistograms(histograms){for(const[id,playbackData]of this.playbackIdToDataMap_){playbackData.addMetricToHistograms(histograms);}}\ngetPerPlaybackObject_(playbackId){let perPlaybackObject=this.playbackIdToDataMap_.get(playbackId);if(perPlaybackObject===undefined){perPlaybackObject=new PerPlaybackData(undefined);this.playbackIdToDataMap_.set(playbackId,perPlaybackObject);}\nreturn perPlaybackObject;}}\nclass PerPlaybackData{constructor(playStartTime){this.playStart_=playStartTime;this.timeToVideoPlay_=undefined;this.timeToAudioPlay_=undefined;this.bufferingTime_=undefined;this.droppedFrameCount_=0;this.seekError_=false;this.seekTimes_=new Map();this.currentSeek_=undefined;}\nget timeToVideoPlay(){return this.timeToVideoPlay_;}\nget timeToAudioPlay(){return this.timeToAudioPlay_;}\nget bufferingTime(){return this.bufferingTime_;}\nget droppedFrameCount(){return(this.timeToVideoPlay_!==undefined)?this.droppedFrameCount_:undefined;}\nget seekTimes(){if(this.seekError_||this.currentSeek_!==undefined)return new Map();return this.seekTimes_;}\nprocessVideoRenderTime(videoRenderTime){if(this.playStart_!==undefined&&this.timeToVideoPlay_===undefined){this.timeToVideoPlay_=videoRenderTime-this.playStart_;}}\nprocessAudioRenderTime(audioRenderTime){if(this.playStart_!==undefined&&this.timeToAudioPlay_===undefined){this.timeToAudioPlay_=audioRenderTime-this.playStart_;}}\nprocessVideoFramesDropped(count){this.droppedFrameCount_+=count;}\nprocessDoSeek(target,startTime){if(this.currentSeek_!==undefined){this.seekError_=true;return;}\nthis.currentSeek_={target,startTime};this.seekTimes_.set(target,this.currentSeek_);}\nprocessOnPipelineSeeked(target,time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}\nif(currentSeek.target!==target){this.seekError_=true;return;}\nif(currentSeek.pipelineSeekTime!==undefined){this.seekError_=true;return;}\ncurrentSeek.pipelineSeekTime=time-currentSeek.startTime;}\nprocessBufferingHaveEnough(time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}\nif(currentSeek.pipelineSeekTime===undefined){return;}\ncurrentSeek.seekTime=time-currentSeek.startTime;this.currentSeek_=undefined;}\nprocessOnEnded(playEndTime,duration){if(this.playStart_===undefined)return;if(this.seekTimes_.size!==0||this.seekError_)return;if(this.bufferingTime_!==undefined)return;duration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);const playTime=playEndTime-this.playStart_;if(this.timeToVideoPlay_!==undefined){this.bufferingTime_=playTime-duration-this.timeToVideoPlay_;}else if(this.timeToAudioPlay!==undefined){this.bufferingTime_=playTime-duration-this.timeToAudioPlay_;}}\naddMetricToHistograms(histograms){this.addSample_(histograms,'time_to_video_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToVideoPlay);this.addSample_(histograms,'time_to_audio_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToAudioPlay);this.addSample_(histograms,'dropped_frame_count',tr.b.Unit.byName.count_smallerIsBetter,this.droppedFrameCount);for(const[key,value]of this.seekTimes.entries()){const keyString=key.toString().replace('.','_');this.addSample_(histograms,'pipeline_seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.pipelineSeekTime);this.addSample_(histograms,'seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.seekTime);}\nthis.addSample_(histograms,'buffering_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.bufferingTime);}\naddSample_(histograms,name,unit,sample){if(sample===undefined)return;const histogram=histograms.getHistogramNamed(name);if(histogram===undefined){histograms.createHistogram(name,unit,sample);}else{histogram.addSample(sample);}}}\ntr.metrics.MetricRegistry.register(mediaMetric);return{mediaMetric,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const UNKNOWN_THREAD_NAME='Unknown';const CATEGORY_THREAD_MAP=new Map();CATEGORY_THREAD_MAP.set('total_all',[/.*/]);CATEGORY_THREAD_MAP.set('browser',[/^Browser Compositor$/,/^CrBrowserMain$/]);CATEGORY_THREAD_MAP.set('display_compositor',[/^VizCompositorThread$/]);CATEGORY_THREAD_MAP.set('GPU',[/^Chrome_InProcGpuThread$/,/^CrGpuMain$/]);CATEGORY_THREAD_MAP.set('IO',[/IOThread/]);CATEGORY_THREAD_MAP.set('raster',[/CompositorTileWorker/]);CATEGORY_THREAD_MAP.set('renderer_compositor',[/^Compositor$/]);CATEGORY_THREAD_MAP.set('renderer_main',[/^CrRendererMain$/]);CATEGORY_THREAD_MAP.set('total_rendering',[/^Browser Compositor$/,/^Chrome_InProcGpuThread$/,/^Compositor$/,/CompositorTileWorker/,/^CrBrowserMain$/,/^CrGpuMain$/,/^CrRendererMain$/,/IOThread/,/^VizCompositorThread$/]);const ALL_CATEGORIES=[...CATEGORY_THREAD_MAP.keys(),'other'];function addValueToMap_(map,key,value){const oldValue=map.get(key)||0;map.set(key,oldValue+value);}\nfunction categoryShouldHaveBreakdown(category){return category==='total_all'||category==='total_rendering';}\nfunction*getCategories_(threadName){let isOther=true;for(const[category,regexps]of CATEGORY_THREAD_MAP){for(const regexp of regexps){if(regexp.test(threadName)){if(category!=='total_all')isOther=false;yield category;break;}}}\nif(isOther)yield'other';}\nfunction isSubset_(regexps1,regexps2){for(const r1 of regexps1){if(regexps2.find(r2=>r2.toString()===r1.toString())===undefined){return false;}}\nreturn true;}\nfunction addCpuUtilizationHistograms(histograms,model,segments,segmentCostFunc,histogramNameFunc,description,unit){if(!unit)unit=tr.b.Unit.byName.unitlessNumber;const histogramMap=new Map();for(const category of ALL_CATEGORIES){const histogram=histograms.createHistogram(histogramNameFunc(category),unit,[],{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(1,50,20),description,summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histogramMap.set(category,histogram);}\nfor(const[category,regexps]of CATEGORY_THREAD_MAP){const relatedCategories=new tr.v.d.RelatedNameMap();const histogram=histogramMap.get(category);for(const[otherCategory,otherRegexps]of CATEGORY_THREAD_MAP){if(otherCategory===category)continue;if(category!=='all'&&!isSubset_(otherRegexps,regexps))continue;const otherHistogram=histogramMap.get(otherCategory);relatedCategories.set(otherCategory,otherHistogram.name);}\nif([...relatedCategories.values()].length>0){histogram.diagnostics.set('breakdown',relatedCategories);}}\nfor(const segment of segments){const threadValues=new Map();for(const thread of model.getAllThreads()){addValueToMap_(threadValues,thread.name||UNKNOWN_THREAD_NAME,segmentCostFunc(thread,segment));}\nconst categoryValues=new Map();const breakdowns=new Map();for(const[threadName,coresPerSec]of threadValues){for(const category of getCategories_(threadName)){addValueToMap_(categoryValues,category,coresPerSec);if(!categoryShouldHaveBreakdown(category))continue;if(!breakdowns.has(category)){breakdowns.set(category,new tr.v.d.Breakdown());}\nbreakdowns.get(category).set(threadName,coresPerSec);}}\nfor(const category of ALL_CATEGORIES){const value=categoryValues.get(category)||0;const diagnostics=new tr.v.d.DiagnosticMap();const breakdown=breakdowns.get(category);if(breakdown)diagnostics.set('breakdown',breakdown);const histogram=histogramMap.get(category);histogram.addSample(value,diagnostics);}}}\nconst SUMMARY_OPTIONS={percentile:[0.90,0.95],ci:[0.95],};return{addCpuUtilizationHistograms,SUMMARY_OPTIONS,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const PRESENT_EVENT='Display::FrameDisplayed';const DISPLAY_EVENT='BenchmarkInstrumentation::DisplayRenderingStats';const DRM_EVENT='DrmEventFlipComplete';const SURFACE_FLINGER_EVENT='vsync_before';const COMPOSITOR_FRAME_PRESENTED_EVENT='FramePresented';const MIN_FRAME_LENGTH=0.5;const MIN_FRAME_COUNT=10;const PAUSE_THRESHOLD=20;const ASH_ENVIRONMENT='ash';const BROWSER_ENVIRONMENT='browser';class FrameEvent{constructor(event){this.event_=event;}\nget eventStart(){return this.event_.start;}\nget frameStart(){if(this.event_.title!==DRM_EVENT)return this.event_.start;const data=this.event_.args.data;const TIME=tr.b.UnitScale.TIME;return tr.b.convertUnit(data['vblank.tv_sec'],TIME.SEC,TIME.MILLI_SEC)+\ntr.b.convertUnit(data['vblank.tv_usec'],TIME.MICRO_SEC,TIME.MILLI_SEC);}\nget event(){return this.event_;}}\nclass FrameSegment{constructor(frameEvent,duration){this.frameEvent_=frameEvent;this.duration_=duration;this.segment_=new tr.model.um.Segment(frameEvent.eventStart,duration);this.length_=undefined;}\nupdateLength(refreshPeriod){this.length_=this.duration_/refreshPeriod;}\nget segment(){return this.segment_;}\nget boundsRange(){return this.segment_.boundsRange;}\nget length(){return this.length_;}\nget duration(){return this.duration_;}\nget event(){return this.frameEvent_.event;}}\nfunction getDisplayCompositorPresentationEventsExp_(modelHelper){if(!modelHelper)return[];function findEventsFromProcess(process){const events=[];for(const event of process.findTopmostSlicesNamed(PRESENT_EVENT)){events.push(event);}\nreturn events;}\nif(modelHelper.gpuHelper){const events=findEventsFromProcess(modelHelper.gpuHelper.process);if(events.length>0)return events;}\nif(!modelHelper.browserProcess)return[];return findEventsFromProcess(modelHelper.browserProcess);}\nfunction getDisplayCompositorPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];let events=[];if(modelHelper.surfaceFlingerProcess){events=[...modelHelper.surfaceFlingerProcess.findTopmostSlicesNamed(SURFACE_FLINGER_EVENT)];if(events.length>0)return events;}\nif(modelHelper.gpuHelper){const gpuProcess=modelHelper.gpuHelper.process;events=[...gpuProcess.findTopmostSlicesNamed(DRM_EVENT)];if(events.length>0)return events;events=[...gpuProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];if(events.length>0)return events;}\nreturn[...modelHelper.browserProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];}\nfunction getUIPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];const legacyEvents=[];const eventsByEnvironment={};eventsByEnvironment[ASH_ENVIRONMENT]=[];eventsByEnvironment[BROWSER_ENVIRONMENT]=[];for(const event of modelHelper.browserProcess.findTopmostSlicesNamed(COMPOSITOR_FRAME_PRESENTED_EVENT)){if(!('environment'in event.args)){legacyEvents.push(event);}else{eventsByEnvironment[event.args.environment].push(event);}}\nif(eventsByEnvironment[ASH_ENVIRONMENT].length>0){return eventsByEnvironment[ASH_ENVIRONMENT];}\nif(eventsByEnvironment[BROWSER_ENVIRONMENT].length>0){return eventsByEnvironment[BROWSER_ENVIRONMENT];}\nreturn legacyEvents;}\nfunction computeFrameSegments_(events,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const frameEvents=events.map(e=>new FrameEvent(e));const frameSegments=[];for(const segment of segments){const filtered=segment.boundsRange.filterArray(frameEvents,x=>x.eventStart);if(filtered.length<minFrameCount)continue;for(let i=1;i<filtered.length;i++){const duration=filtered[i].frameStart-filtered[i-1].frameStart;frameSegments.push(new FrameSegment(filtered[i-1],duration));}}\nreturn frameSegments;}\nfunction addBasicFrameTimeHistograms_(histograms,frameSegments,prefix){const frameTimes=(frameSegments.length===0)?[0]:frameSegments.map(x=>x.duration);histograms.createHistogram(`${prefix}frame_times`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,frameTimes,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,50,20),description:'Raw frame times.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram(`${prefix}percentage_smooth`,tr.b.Unit.byName.unitlessNumber_biggerIsBetter,100*tr.b.math.Statistics.sum(frameTimes,(x=>(x<17?1:0)))/frameTimes.length,{description:'Percentage of frames that were hitting 60 FPS.',summaryOptions:{},});}\nfunction addFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const events=getDisplayCompositorPresentationEvents_(modelHelper);if(!events)return;addFrameTimeHistogramsHelper(histograms,model,segments,events,'',true,minFrameCount);const eventsExp=getDisplayCompositorPresentationEventsExp_(modelHelper);if(eventsExp&&eventsExp.length>0){addFrameTimeHistogramsHelper(histograms,model,segments,eventsExp,'exp_',false,minFrameCount);}}\nfunction addFrameTimeHistogramsHelper(histograms,model,segments,events,prefix,addCpuMetrics,minFrameCount){const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,prefix+'');if(addCpuMetrics){tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getCpuTimeForRange(segment.boundsRange),category=>`thread_${category}_cpu_time_per_frame`,'CPU cores of a thread group per frame',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getNumToplevelSlicesForRange(segment.boundsRange),category=>`tasks_per_frame_${category}`,'Number of tasks of a thread group per frame',tr.b.Unit.byName.unitlessNumber_smallerIsBetter);let totalWallTime=0;let totalCpuTime=0;for(const segment of frameSegments){for(const thread of model.getAllThreads()){totalCpuTime+=thread.getCpuTimeForRange(segment.boundsRange);totalWallTime+=thread.getWallTimeForRange(segment.boundsRange);}}\nhistograms.createHistogram('cpu_wall_time_ratio',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,totalCpuTime/totalWallTime,{description:'Ratio of total cpu-time vs. wall-time.',summaryOptions:{},});}\nconst refreshPeriod=getRefreshPeriod(model,frameSegments.map(fs=>fs.boundsRange));frameSegments.forEach(fs=>fs.updateLength(refreshPeriod));const validFrames=frameSegments.filter(fs=>fs.length>=MIN_FRAME_LENGTH);const totalFrameDuration=tr.b.math.Statistics.sum(frameSegments,fs=>fs.duration);addJankCountHistograms(histograms,validFrames,prefix);const frameLengths=validFrames.map(frame=>frame.length);histograms.createHistogram(prefix+'frame_lengths',tr.b.Unit.byName.unitlessNumber_smallerIsBetter,frameLengths,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,5,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Frame times in vsyncs.'});histograms.createHistogram(prefix+'avg_surface_fps',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,frameLengths.length/tr.b.convertUnit(totalFrameDuration,tr.b.UnitScale.TIME.MILLI_SEC,tr.b.UnitScale.TIME.SEC),{description:'Average frames per second.',summaryOptions:{},});}\nfunction addUIFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const events=getUIPresentationEvents_(model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper));if(events.length===0)return;const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,'ui_');}\nfunction addJankCountHistograms(histograms,validFrames,prefix){const jankEvents=[];for(let i=1;i<validFrames.length;i++){const change=Math.round((validFrames[i].length-validFrames[i-1].length));if(change>0&&change<PAUSE_THRESHOLD){jankEvents.push(validFrames[i].event);}}\nconst jankCount=jankEvents.length;const diagnostics=new tr.v.d.DiagnosticMap();diagnostics.set('events',new tr.v.d.RelatedEventSet(jankEvents));diagnostics.set('timestamps',new tr.v.d.GenericSet(jankEvents.map(e=>e.start)));const histogram=histograms.createHistogram(prefix+'jank_count',tr.b.Unit.byName.count_smallerIsBetter,{value:jankCount,diagnostics},{description:'Number of changes in frame rate.',summaryOptions:{},});}\nfunction getRefreshPeriod(model,ranges){for(const metadata of model.metadata){if(metadata.value&&metadata.value.surface_flinger){return metadata.value.surface_flinger.refresh_period;}}\nconst FRAME_LENGTH=1000.0/60;const BEGIN_FRAME_ARGS='Scheduler::BeginFrame';const FRAME_INTERVAL='interval_us';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==BEGIN_FRAME_ARGS)continue;const data=slice.args.args;if(!(FRAME_INTERVAL in data)){throw new Error(`${FRAME_INTERVAL} is missing`);}\nreturn tr.b.convertUnit(data[FRAME_INTERVAL],tr.b.UnitScale.TIME.MICRO_SEC,tr.b.UnitScale.TIME.MILLI_SEC);}}\nreturn FRAME_LENGTH;}\nreturn{addFrameTimeHistograms,addUIFrameTimeHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const RGB_DECODE_EVENT='ImageFrameGenerator::decode';const YUV_DECODE_EVENT='ImageFrameGenerator::decodeToYUV';const BLINK_GPU_RASTER_DECODE_EVENT='GpuImageDecodeCache::DecodeImage';const BLINK_SOFTWARE_RASTER_DECODE_EVENT='SoftwareImageDecodeCache::'+'DecodeImageInTask';function getImageDecodingEvents_(modelHelper,ranges){if(!modelHelper||!modelHelper.rendererHelpers)return[];const events=[];for(const renderer of Object.values(modelHelper.rendererHelpers)){for(const thread of renderer.rasterWorkerThreads){const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title===RGB_DECODE_EVENT||slice.title===YUV_DECODE_EVENT||slice.title===BLINK_GPU_RASTER_DECODE_EVENT||slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT){events.push(slice);}}}}\nreturn events;}\nfunction addImageDecodeTimeHistograms(histograms,model,segments){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const decodeEvents=getImageDecodingEvents_(modelHelper,segments.map(s=>s.boundsRange));if(!decodeEvents)return;histograms.createHistogram('rgb_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===RGB_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink RGB decoding path for a chunk '+'of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('yuv_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===YUV_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink YUV decoding path for a '+'chunk of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_gpu_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_GPU_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'GpuImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_software_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'SoftwareImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});}\nreturn{addImageDecodeTimeHistograms};});'use strict';tr.exportTo('tr.metrics.rendering',function(){function eventIsValidGraphicsEvent_(event,eventMap){if(event.title!=='Graphics.Pipeline'||!event.bindId||!event.args||!event.args.step){return false;}\nconst bindId=event.bindId;if(eventMap.has(bindId)&&event.args.step in eventMap.get(bindId)){if(event.args.step==='IssueBeginFrame'||event.args.step==='ReceiveBeginFrame'){throw new Error('Unexpected duplicate step: '+event.args.step);}\nreturn false;}\nreturn true;}\nfunction generateBreakdownForCompositorPipelineInClient_(flow){const breakdown=new tr.v.d.Breakdown();breakdown.set('time before GenerateRenderPass',flow.GenerateRenderPass.start-flow.ReceiveBeginFrame.start);breakdown.set('GenerateRenderPass duration',flow.GenerateRenderPass.duration);breakdown.set('GenerateCompositorFrame duration',flow.GenerateCompositorFrame.duration);breakdown.set('SubmitCompositorFrame duration',flow.SubmitCompositorFrame.duration);return breakdown;}\nfunction generateBreakdownForCompositorPipelineInService_(flow){const breakdown=new tr.v.d.Breakdown();breakdown.set('Processing CompositorFrame on reception',flow.ReceiveCompositorFrame.duration);breakdown.set('Delay before SurfaceAggregation',flow.SurfaceAggregation.start-flow.ReceiveCompositorFrame.end);breakdown.set('SurfaceAggregation duration',flow.SurfaceAggregation.duration);return breakdown;}\nfunction generateBreakdownForDraw_(drawEvent){const breakdown=new tr.v.d.Breakdown();for(const slice of drawEvent.subSlices){breakdown.set(slice.title,slice.duration);}\nreturn breakdown;}\nfunction getDisplayCompositorThread_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const gpuHelper=chromeHelper.gpuHelper;if(gpuHelper){const thread=gpuHelper.process.findAtMostOneThreadNamed('VizCompositorThread');if(thread){return thread;}}\nif(!chromeHelper.browserProcess)return null;return chromeHelper.browserProcess.findAtMostOneThreadNamed('CrBrowserMain');}\nfunction getRasterTaskTimes(sourceFrameNumber,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const renderers=modelHelper.telemetryHelper.renderersWithIR;if(renderers.length===0)return;const rasterThreads=renderers[0].rasterWorkerThreads;let earliestStart=undefined;let lastEnd=undefined;for(const rasterThread of rasterThreads){for(const slice of[...rasterThread.findTopmostSlicesNamed('TaskGraphRunner::RunTask')]){if(slice.args&&slice.args.source_frame_number_&&slice.args.source_frame_number_===sourceFrameNumber){if(earliestStart===undefined||slice.start<earliestStart){earliestStart=slice.start;}\nif(lastEnd===undefined||slice.end>lastEnd){lastEnd=slice.end;}}}}\nreturn{start:earliestStart,end:lastEnd};}\nfunction addPipelineHistograms(histograms,model,segments){const ranges=segments.map(s=>s.boundsRange);const bindEvents=new Map();for(const thread of model.getAllThreads()){for(const event of thread.sliceGroup.childEvents()){if(!eventIsValidGraphicsEvent_(event,bindEvents))continue;for(const range of ranges){if(range.containsExplicitRangeInclusive(event.start,event.end)){if(!bindEvents.has(event.bindId))bindEvents.set(event.bindId,{});break;}}\nif(bindEvents.has(event.bindId)){bindEvents.get(event.bindId)[event.args.step]=event;}}}\nconst dcThread=getDisplayCompositorThread_(model);const drawEvents={};if(dcThread){const events=[...dcThread.findTopmostSlicesNamed('Graphics.Pipeline.DrawAndSwap')];for(const segment of segments){const filteredEvents=segment.boundsRange.filterArray(events,evt=>evt.start);for(const event of filteredEvents){if((event.args&&event.args.status==='canceled')||!event.id.startsWith(':ptr:')){continue;}\nconst id=parseInt(event.id.substring(5),16);if(id in drawEvents){throw new Error('Duplicate draw events: '+id);}\ndrawEvents[id]=event;}}}\nconst issueToReceipt=histograms.createHistogram('pipeline:begin_frame_transport',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency of begin-frame message from the display '+'compositor to the client, including the IPC latency and task-'+'queue time in the client.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const issueToRasterStart=histograms.createHistogram('pipeline:begin_frame_to_raster_start',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame message and '+'the beginning of the first CompositorTask run in the compositor.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const issueToRasterEnd=histograms.createHistogram('pipeline:begin_frame_to_raster_end',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame message and '+'the end of the last CompositorTask run in the compositor.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const receiptToSubmit=histograms.createHistogram('pipeline:begin_frame_to_frame_submission',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame reception and '+'CompositorFrame submission in the renderer.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const submitToAggregate=histograms.createHistogram('pipeline:frame_submission_to_display',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between CompositorFrame submission in the '+'renderer to display in the display-compositor, including IPC '+'latency, task-queue time in the display-compositor, and '+'additional processing (e.g. surface-sync etc.)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const aggregateToDraw=histograms.createHistogram('pipeline:draw',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'How long it takes for the gpu-swap step.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});for(const flow of bindEvents.values()){if(!flow.IssueBeginFrame||!flow.ReceiveBeginFrame||!flow.SubmitCompositorFrame||!flow.SurfaceAggregation){continue;}\nissueToReceipt.addSample(flow.ReceiveBeginFrame.start-\nflow.IssueBeginFrame.start);receiptToSubmit.addSample(flow.SubmitCompositorFrame.end-flow.ReceiveBeginFrame.start,{breakdown:generateBreakdownForCompositorPipelineInClient_(flow)});submitToAggregate.addSample(flow.SurfaceAggregation.end-flow.SubmitCompositorFrame.end,{breakdown:generateBreakdownForCompositorPipelineInService_(flow)});if(flow.SubmitCompositorFrame.parentSlice){const sourceFrameNumber=flow.SubmitCompositorFrame.parentSlice.args.source_frame_number_;const rasterDuration=getRasterTaskTimes(sourceFrameNumber,model);if(rasterDuration&&rasterDuration.start&&rasterDuration.end){const receiveToStart=rasterDuration.start-\nflow.ReceiveBeginFrame.start;const receiveToEnd=rasterDuration.end-flow.ReceiveBeginFrame.end;if(receiveToEnd>0){issueToRasterStart.addSample(receiveToStart>0?receiveToStart:0);issueToRasterEnd.addSample(receiveToEnd);}}}\nif(flow.SurfaceAggregation.args&&flow.SurfaceAggregation.args.display_trace){const displayTrace=flow.SurfaceAggregation.args.display_trace;if(!(displayTrace in drawEvents))continue;const drawEvent=drawEvents[displayTrace];aggregateToDraw.addSample(drawEvent.duration,{breakdown:generateBreakdownForDraw_(drawEvent)});}}}\nreturn{addPipelineHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const IMPL_THREAD_RENDERING_STATS_EVENT='BenchmarkInstrumentation::ImplThreadRenderingStats';const VISIBLE_CONTENT_DATA='visible_content_area';const APPROXIMATED_VISIBLE_CONTENT_DATA='approximated_visible_content_area';const CHECKERBOARDED_VISIBLE_CONTENT_DATA='checkerboarded_visible_content_area';function addPixelsHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;const approximatedPixelPercentages=[];const checkerboardedPixelPercentages=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==IMPL_THREAD_RENDERING_STATS_EVENT)continue;const data=slice.args.data;if(!(VISIBLE_CONTENT_DATA in data)){throw new Error(`${VISIBLE_CONTENT_DATA} is missing`);}\nconst visibleContentArea=data[VISIBLE_CONTENT_DATA];if(visibleContentArea===0){continue;}\nif(APPROXIMATED_VISIBLE_CONTENT_DATA in data){approximatedPixelPercentages.push(data[APPROXIMATED_VISIBLE_CONTENT_DATA]/visibleContentArea);}\nif(CHECKERBOARDED_VISIBLE_CONTENT_DATA in data){checkerboardedPixelPercentages.push(data[CHECKERBOARDED_VISIBLE_CONTENT_DATA]/visibleContentArea);}}}\nhistograms.createHistogram('mean_pixels_approximated',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(approximatedPixelPercentages),{description:'Percentage of pixels that were approximated '+'(checkerboarding, low-resolution tiles, etc.).',summaryOptions:{},});histograms.createHistogram('mean_pixels_checkerboarded',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(checkerboardedPixelPercentages),{description:'Percentage of pixels that were checkerboarded.',summaryOptions:{},});}\nreturn{addPixelsHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const BEGIN_MAIN_FRAME_EVENT='ThreadProxy::BeginMainFrame';const SEND_BEGIN_FRAME_EVENT='ThreadProxy::ScheduledActionSendBeginMainFrame';function getEventTimesByBeginFrameId_(thread,title,ranges){const out=new Map();const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==title)continue;const id=slice.args.begin_frame_id;if(id===undefined)throw new Error('Event is missing begin_frame_id');if(out.has(id))throw new Error(`There must be exactly one ${title}`);out.set(id,slice.start);}\nreturn out;}\nfunction addQueueingDurationHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let targetRenderers=chromeHelper.telemetryHelper.renderersWithIR;if(targetRenderers.length===0){targetRenderers=Object.values(chromeHelper.rendererHelpers);}\nconst queueingDurations=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of targetRenderers){const mainThread=rendererHelper.mainThread;const compositorThread=rendererHelper.compositorThread;if(mainThread===undefined||compositorThread===undefined)continue;const beginMainFrameTimes=getEventTimesByBeginFrameId_(mainThread,BEGIN_MAIN_FRAME_EVENT,ranges);const sendBeginFrameTimes=getEventTimesByBeginFrameId_(compositorThread,SEND_BEGIN_FRAME_EVENT,ranges);for(const[id,time]of sendBeginFrameTimes){queueingDurations.push(beginMainFrameTimes.get(id)-time);}}\nhistograms.createHistogram('queueing_durations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,queueingDurations,{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(0.01,2,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Time between ScheduledActionSendBeginMainFrame in '+'the compositor thread and the corresponding '+'BeginMainFrame in the main thread.'});}\nreturn{addQueueingDurationHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const GESTURE_EVENT='SyntheticGestureController::running';function renderingMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let segments=chromeHelper.telemetryHelper.irSegments;if(segments.length===0){segments=chromeHelper.telemetryHelper.animationSegments;}\nif(segments.length>0){tr.metrics.rendering.addFrameTimeHistograms(histograms,model,segments);tr.metrics.rendering.addImageDecodeTimeHistograms(histograms,model,segments);tr.metrics.rendering.addPipelineHistograms(histograms,model,segments);tr.metrics.rendering.addPixelsHistograms(histograms,model,segments);tr.metrics.rendering.addQueueingDurationHistograms(histograms,model,segments);}\nconst uiSegments=chromeHelper.telemetryHelper.uiSegments;if(uiSegments.length>0){tr.metrics.rendering.addUIFrameTimeHistograms(histograms,model,chromeHelper.telemetryHelper.uiSegments);}}\ntr.metrics.MetricRegistry.register(renderingMetric,{requiredCategories:['benchmark','toplevel'],});return{renderingMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_smallerIsBetter=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(80e3,30);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function reportedByPageMetric(histograms,model){const timeToViewable=histograms.createHistogram('reported_by_page:time_to_viewable',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start'+'to telemetry:reported_by_page:viewable',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractive=histograms.createHistogram('reported_by_page:time_to_interactive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start '+'to telemetry:reported_by_page:interactive',summaryOptions:SUMMARY_OPTIONS,});const benchmarkTime=histograms.createHistogram('reported_by_page:benchmark_time',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from telemetry:reported_by_page:benchmark_begin '+'to telemetry:reported_by_page:benchmark_end',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:viewable',timeToViewable);measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:interactive',timeToInteractive);measureUserTime(rendererHelper,'telemetry:reported_by_page:benchmark_begin','telemetry:reported_by_page:benchmark_end',benchmarkTime);}}\nfunction measureUserTime(rendererHelper,startName,endName,histogram){const startEventByNavId=new Map();for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){const navId=getNavigationId(event);if(!navId)continue;if(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',startName)){startEventByNavId.set(navId,event);}\nif(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',endName)){if(!startEventByNavId.has(navId)){throw Error(`Missing ${startName} for ${endName} at {event.start}`);}\nconst range=tr.b.math.Range.fromExplicitRange(startEventByNavId.get(navId).start,event.start);histogram.addSample(range.duration);startEventByNavId.delete(navId);}}}\nfunction getNavigationId(event){return event.args.data&&event.args.data.navigationId;}\ntr.metrics.MetricRegistry.register(reportedByPageMetric);return{reportedByPageMetric};});'use strict';tr.exportTo('tr.metrics',function(){function sampleExceptionMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}\nconst chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}\nhistograms.addHistogram(hist);throw new Error('There was an error');}\ntr.metrics.MetricRegistry.register(sampleExceptionMetric);return{sampleExceptionMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function sampleMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}\nconst chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}\nhistograms.addHistogram(hist);}\ntr.metrics.MetricRegistry.register(sampleMetric);return{sampleMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const HANDLE_INPUT_EVENT_TITLE='WebViewImpl::handleInputEvent';function findPrecedingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndex<eventsB.length;eventsBIndex++){if(eventsB[eventsBIndex].start>eventA.start)break;}\nif(eventsBIndex>0){events.set(eventA,eventsB[eventsBIndex-1]);}}\nreturn events;}\nfunction findFollowingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndex<eventsB.length;eventsBIndex++){if(eventsB[eventsBIndex].start>=eventA.start)break;}\nif(eventsBIndex>=0&&eventsBIndex<eventsB.length){events.set(eventA,eventsB[eventsBIndex]);}}\nreturn events;}\nfunction getSpaNavigationStartCandidates_(rendererHelper,browserHelper){const isNavStartEvent=e=>{if(e.title===HANDLE_INPUT_EVENT_TITLE&&e.args.type==='MouseUp'){return true;}\nreturn e.title==='NavigationControllerImpl::GoToIndex';};return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents(),...browserHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavStartEvent);}\nfunction getSpaNavigationEvents_(rendererHelper){const isNavEvent=e=>e.category==='blink'&&e.title==='FrameLoader::updateForSameDocumentNavigation';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavEvent);}\nfunction getInputLatencyEvents_(browserHelper){const isInputLatencyEvent=e=>e.title==='InputLatency::MouseUp';return browserHelper.getAllAsyncSlicesMatching(isInputLatencyEvent);}\nfunction getInputLatencyEventByBindIdMap_(browserHelper){const inputLatencyEventByBindIdMap=new Map();for(const event of getInputLatencyEvents_(browserHelper)){inputLatencyEventByBindIdMap.set(event.args.data.trace_id,event);}\nreturn inputLatencyEventByBindIdMap;}\nfunction getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper){const mainThread=rendererHelper.mainThread;const spaNavEvents=getSpaNavigationEvents_(rendererHelper);const navStartCandidates=getSpaNavigationStartCandidates_(rendererHelper,browserHelper).sort(tr.importer.compareEvents);const spaNavEventToNavStartCandidateMap=findPrecedingEvents_(spaNavEvents,navStartCandidates);const inputLatencyEventByBindIdMap=getInputLatencyEventByBindIdMap_(browserHelper);const spaNavEventToNavStartEventMap=new Map();for(const[spaNavEvent,navStartCandidate]of\nspaNavEventToNavStartCandidateMap){if(navStartCandidate.title===HANDLE_INPUT_EVENT_TITLE){const inputLatencySlice=inputLatencyEventByBindIdMap.get(Number(navStartCandidate.parentSlice.bindId));if(inputLatencySlice){spaNavEventToNavStartEventMap.set(spaNavEvent,inputLatencySlice);}}else{spaNavEventToNavStartEventMap.set(spaNavEvent,navStartCandidate);}}\nreturn spaNavEventToNavStartEventMap;}\nfunction getFirstPaintEvents_(rendererHelper){const isFirstPaintEvent=e=>e.category==='blink'&&e.title==='PaintLayerCompositor::updateIfNeededRecursive';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isFirstPaintEvent);}\nfunction getSpaNavigationEventToFirstPaintEventMap_(rendererHelper){const spaNavEvents=getSpaNavigationEvents_(rendererHelper).sort(tr.importer.compareEvents);const firstPaintEvents=getFirstPaintEvents_(rendererHelper).sort(tr.importer.compareEvents);return findFollowingEvents_(spaNavEvents,firstPaintEvents);}\nfunction findSpaNavigationsOnRenderer(rendererHelper,browserHelper){const spaNavEventToNavStartMap=getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper);const spaNavEventToFirstPaintEventMap=getSpaNavigationEventToFirstPaintEventMap_(rendererHelper);const spaNavigations=[];for(const[spaNavEvent,navStartEvent]of\nspaNavEventToNavStartMap){if(spaNavEventToFirstPaintEventMap.has(spaNavEvent)){const firstPaintEvent=spaNavEventToFirstPaintEventMap.get(spaNavEvent);const isNavStartAsyncSlice=navStartEvent instanceof tr.model.AsyncSlice;spaNavigations.push({navStartCandidates:{inputLatencyAsyncSlice:isNavStartAsyncSlice?navStartEvent:undefined,goToIndexSlice:isNavStartAsyncSlice?undefined:navStartEvent},firstPaintEvent,url:spaNavEvent.args.url});}}\nreturn spaNavigations;}\nreturn{findSpaNavigationsOnRenderer,};});'use strict';tr.exportTo('tr.e.chrome',function(){const SAME_AS_PARENT='same-as-parent';const TITLES_FOR_USER_FRIENDLY_CATEGORY={composite:['CompositingInputsUpdater::update','ThreadProxy::SetNeedsUpdateLayers','LayerTreeHost::DoUpdateLayers','LayerTreeHost::UpdateLayers::BuildPropertyTrees','LocalFrameView::pushPaintArtifactToCompositor','LocalFrameView::updateCompositedSelectionIfNeeded','LocalFrameView::RunCompositingLifecyclePhase','UpdateLayerTree',],gc:['minorGC','majorGC','MajorGC','MinorGC','V8.GCScavenger','V8.GCIncrementalMarking','V8.GCIdleNotification','V8.GCContext','V8.GCCompactor','V8GCController::traceDOMWrappers',],iframe_creation:['WebLocalFrameImpl::createChildframe',],imageDecode:['Decode Image','ImageFrameGenerator::decode','ImageFrameGenerator::decodeAndScale','ImageFrameGenerator::decodeToYUV','ImageResourceContent::updateImage',],input:['HitTest','ScrollableArea::scrollPositionChanged','EventHandler::handleMouseMoveEvent',],layout:['IntersectionObserverController::computeTrackedIntersectionObservations','LocalFrameView::invalidateTree','LocalFrameView::layout','LocalFrameView::performLayout','LocalFrameView::performPostLayoutTasks','LocalFrameView::performPreLayoutTasks','LocalFrameView::RunStyleAndLayoutCompositingPhases','Layout','PaintLayer::updateLayerPositionsAfterLayout','ResourceLoadPriorityOptimizer::updateAllImageResourcePriorities','WebViewImpl::updateAllLifecyclePhases','WebViewImpl::beginFrame',],parseHTML:['BackgroundHTMLParser::pumpTokenizer','BackgroundHTMLParser::sendTokensToMainThread','HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser','HTMLDocumentParser::documentElementAvailable','HTMLDocumentParser::notifyPendingTokenizedChunks','HTMLDocumentParser::processParsedChunkFromBackgroundParser','HTMLDocumentParser::processTokenizedChunkFromBackgroundParser','ParseHTML',],raster:['DisplayListRasterSource::PerformSolidColorAnalysis','Picture::Raster','RasterBufferImpl::Playback','RasterTask','RasterizerTaskImpl::RunOnWorkerThread','SkCanvas::drawImageRect()','SkCanvas::drawPicture()','SkCanvas::drawTextBlob()','TileTaskWorkerPool::PlaybackToMemory',],record:['Canvas2DLayerBridge::flushRecordingOnly','CompositingInputsUpdater::update','CompositingRequirementsUpdater::updateRecursive','ContentLayerDelegate::paintContents','DisplayItemList::Finalize','LocalFrameView::RunPaintLifecyclePhase','LocalFrameView::RunPrePaintLifecyclePhase','Paint','PaintController::commitNewDisplayItems','PaintLayerCompositor::updateIfNeededRecursive','Picture::Record','PictureLayer::Update',],style:['CSSParserImpl::parseStyleSheet.parse','CSSParserImpl::parseStyleSheet.tokenize','Document::rebuildLayoutTree','Document::recalcStyle','Document::updateActiveStyle','Document::updateStyle','Document::updateStyleInvalidationIfNeeded','LocalFrameView::updateStyleAndLayoutIfNeededRecursive','ParseAuthorStyleSheet','RuleSet::addRulesFromSheet','StyleElement::processStyleSheet','StyleEngine::createResolver','StyleEngine::updateActiveStyleSheets','StyleSheetContents::parseAuthorStyleSheet','UpdateLayoutTree',],script_parse_and_compile:['V8.CompileFullCode','V8.NewContext','V8.Parse','V8.ParseLazy','V8.RecompileSynchronous','V8.ScriptCompiler','v8.compile','v8.parseOnBackground',],script_execute:['EvaluateScript','FunctionCall','HTMLParserScriptRunner ExecuteScript','V8.Execute','V8.RunMicrotasks','V8.Task','WindowProxy::initialize','v8.callFunction','v8.run',],resource_loading:['RenderFrameImpl::didFinishDocumentLoad','RenderFrameImpl::didFinishLoad','Resource::appendData','ResourceDispatcher::OnReceivedData','ResourceDispatcher::OnReceivedResponse','ResourceDispatcher::OnRequestComplete','ResourceFetcher::requestResource','WebURLLoaderImpl::Context::Cancel','WebURLLoaderImpl::Context::OnCompletedRequest','WebURLLoaderImpl::Context::OnReceivedData','WebURLLoaderImpl::Context::OnReceivedRedirect','WebURLLoaderImpl::Context::OnReceivedResponse','WebURLLoaderImpl::Context::Start','WebURLLoaderImpl::loadAsynchronously','WebURLLoaderImpl::loadSynchronously','content::mojom::URLLoaderClient',],renderer_misc:['DecodeFont','ThreadState::completeSweep',],v8_runtime:[],[SAME_AS_PARENT]:['SyncChannel::Send',]};const COLOR_FOR_USER_FRIENDLY_CATEGORY=new tr.b.SinebowColorGenerator();const USER_FRIENDLY_CATEGORY_FOR_TITLE=new Map();for(const category in TITLES_FOR_USER_FRIENDLY_CATEGORY){TITLES_FOR_USER_FRIENDLY_CATEGORY[category].forEach(function(title){USER_FRIENDLY_CATEGORY_FOR_TITLE.set(title,category);});}\nconst USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY={netlog:'net',overhead:'overhead',startup:'startup',gpu:'gpu',};function ChromeUserFriendlyCategoryDriver(){}\nChromeUserFriendlyCategoryDriver.fromEvent=function(event){let userFriendlyCategory=USER_FRIENDLY_CATEGORY_FOR_TITLE.get(event.title);if(userFriendlyCategory){if(userFriendlyCategory===SAME_AS_PARENT){if(event.parentSlice){return ChromeUserFriendlyCategoryDriver.fromEvent(event.parentSlice);}}else{return userFriendlyCategory;}}\nconst eventCategoryParts=tr.b.getCategoryParts(event.category);for(let i=0;i<eventCategoryParts.length;++i){const eventCategory=eventCategoryParts[i];userFriendlyCategory=USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY[eventCategory];if(userFriendlyCategory){return userFriendlyCategory;}}\nreturn'other';};ChromeUserFriendlyCategoryDriver.getColor=function(ufc){return COLOR_FOR_USER_FRIENDLY_CATEGORY.colorForKey(ufc);};ChromeUserFriendlyCategoryDriver.ALL_TITLES=['other'];for(const category in TITLES_FOR_USER_FRIENDLY_CATEGORY){if(category===SAME_AS_PARENT)continue;ChromeUserFriendlyCategoryDriver.ALL_TITLES.push(category);}\nfor(const category of Object.values(USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY)){ChromeUserFriendlyCategoryDriver.ALL_TITLES.push(category);}\nChromeUserFriendlyCategoryDriver.ALL_TITLES.sort();for(const category of ChromeUserFriendlyCategoryDriver.ALL_TITLES){ChromeUserFriendlyCategoryDriver.getColor(category);}\nreturn{ChromeUserFriendlyCategoryDriver,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function getWallClockSelfTime_(event,rangeOfInterest){if(event.duration===0)return 0;const selfTimeRanges=[rangeOfInterest.findIntersection(event.range)];for(const subSlice of event.subSlices){if(selfTimeRanges.length===0)return 0;const lastRange=selfTimeRanges.pop();selfTimeRanges.push(...tr.b.math.Range.findDifference(lastRange,subSlice.range));}\nreturn tr.b.math.Statistics.sum(selfTimeRanges,r=>r.duration);}\nfunction getCPUSelfTime_(event,rangeOfInterest){if(event.duration===0||event.selfTime===0)return 0;if(event.cpuSelfTime===undefined)return 0;const cpuTimeDensity=event.cpuSelfTime/event.selfTime;return getWallClockSelfTime_(event,rangeOfInterest)*cpuTimeDensity;}\nfunction generateTimeBreakdownTree(mainThread,rangeOfInterest,getEventSelfTime){if(mainThread===null)return;const breakdownTree={};for(const title of\ntr.e.chrome.ChromeUserFriendlyCategoryDriver.ALL_TITLES){breakdownTree[title]={total:0,events:{}};}\nfor(const event of mainThread.sliceGroup.childEvents()){if(!rangeOfInterest.intersectsRangeExclusive(event.range))continue;const eventSelfTime=getEventSelfTime(event,rangeOfInterest);const title=tr.e.chrome.ChromeUserFriendlyCategoryDriver.fromEvent(event);breakdownTree[title].total+=eventSelfTime;if(breakdownTree[title].events[event.title]===undefined){breakdownTree[title].events[event.title]=0;}\nbreakdownTree[title].events[event.title]+=eventSelfTime;let timeIntersectionRatio=0;if(event.duration>0){timeIntersectionRatio=rangeOfInterest.findExplicitIntersectionDuration(event.start,event.end)/event.duration;}\nconst v8Runtime=event.args['runtime-call-stat'];if(v8Runtime!==undefined){const v8RuntimeObject=JSON.parse(v8Runtime);for(const runtimeCall in v8RuntimeObject){if(v8RuntimeObject[runtimeCall].length===2){if(breakdownTree.v8_runtime.events[runtimeCall]===undefined){breakdownTree.v8_runtime.events[runtimeCall]=0;}\nconst runtimeTime=tr.b.Unit.timestampFromUs(v8RuntimeObject[runtimeCall][1]*timeIntersectionRatio);breakdownTree.v8_runtime.total+=runtimeTime;breakdownTree.v8_runtime.events[runtimeCall]+=runtimeTime;}}}}\nreturn breakdownTree;}\nfunction addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEvents,networkEvents,rangeOfInterest){const mainThreadEventRanges=tr.b.math.convertEventsToRanges(mainThreadEvents);const networkEventRanges=tr.b.math.convertEventsToRanges(networkEvents);const eventRanges=mainThreadEventRanges.concat(networkEventRanges);const idleRanges=tr.b.math.findEmptyRangesBetweenRanges(eventRanges,rangeOfInterest);const totalFreeDuration=tr.b.math.Statistics.sum(idleRanges,range=>range.duration);breakdownTree.idle={total:totalFreeDuration,events:{}};let totalBlockedDuration=rangeOfInterest.duration;for(const[title,component]of Object.entries(breakdownTree)){if(title==='v8_runtime')continue;totalBlockedDuration-=component.total;}\nbreakdownTree.blocked_on_network={total:Math.max(totalBlockedDuration,0),events:{}};}\nfunction generateWallClockTimeBreakdownTree(mainThread,networkEvents,rangeOfInterest){const breakdownTree=generateTimeBreakdownTree(mainThread,rangeOfInterest,getWallClockSelfTime_);const mainThreadEventsInRange=tr.model.helpers.getSlicesIntersectingRange(rangeOfInterest,mainThread.sliceGroup.topLevelSlices);addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEventsInRange,networkEvents,rangeOfInterest);return breakdownTree;}\nfunction generateCpuTimeBreakdownTree(mainThread,rangeOfInterest){return generateTimeBreakdownTree(mainThread,rangeOfInterest,getCPUSelfTime_);}\nreturn{generateTimeBreakdownTree,generateWallClockTimeBreakdownTree,generateCpuTimeBreakdownTree,};});'use strict';tr.exportTo('tr.b',function(){const ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS=10;const REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS=100;const recordRAFStacks=false;let pendingPreAFs=[];let pendingRAFs=[];const pendingIdleCallbacks=[];let currentRAFDispatchList=undefined;let rafScheduled=false;let idleWorkScheduled=false;function scheduleRAF(){if(rafScheduled)return;rafScheduled=true;if(tr.isHeadless){Promise.resolve().then(function(){processRequests(false,0);},function(e){throw e;});}else{if(window.requestAnimationFrame){window.requestAnimationFrame(processRequests.bind(this,false));}else{const delta=Date.now()-window.performance.now();window.webkitRequestAnimationFrame(function(domTimeStamp){processRequests(false,domTimeStamp-delta);});}}}\nfunction nativeRequestIdleCallbackSupported(){return!tr.isHeadless&&window.requestIdleCallback;}\nfunction scheduleIdleWork(){if(idleWorkScheduled)return;if(!nativeRequestIdleCallbackSupported()){scheduleRAF();return;}\nidleWorkScheduled=true;window.requestIdleCallback(function(deadline,didTimeout){processIdleWork(false,deadline);},{timeout:REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS});}\nfunction onAnimationFrameError(e,opt_stack){console.log(e.stack);if(tr.isHeadless)throw e;if(opt_stack)console.log(opt_stack);if(e.message){console.error(e.message,e.stack);}else{console.error(e);}}\nfunction runTask(task,frameBeginTime){try{task.callback.call(task.context,frameBeginTime);}catch(e){tr.b.onAnimationFrameError(e,task.stack);}}\nfunction processRequests(forceAllTasksToRun,frameBeginTime){rafScheduled=false;const currentPreAFs=pendingPreAFs;currentRAFDispatchList=pendingRAFs;pendingPreAFs=[];pendingRAFs=[];const hasRAFTasks=currentPreAFs.length||currentRAFDispatchList.length;for(let i=0;i<currentPreAFs.length;i++){runTask(currentPreAFs[i],frameBeginTime);}\nwhile(currentRAFDispatchList.length>0){runTask(currentRAFDispatchList.shift(),frameBeginTime);}\ncurrentRAFDispatchList=undefined;if((!hasRAFTasks&&!nativeRequestIdleCallbackSupported())||forceAllTasksToRun){const rafCompletionDeadline=frameBeginTime+ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS;processIdleWork(forceAllTasksToRun,{timeRemaining(){return rafCompletionDeadline-window.performance.now();}});}\nif(pendingIdleCallbacks.length>0)scheduleIdleWork();}\nfunction processIdleWork(forceAllTasksToRun,deadline){idleWorkScheduled=false;while(pendingIdleCallbacks.length>0){runTask(pendingIdleCallbacks.shift());if(!forceAllTasksToRun&&(tr.isHeadless||deadline.timeRemaining()<=0)){break;}}\nif(pendingIdleCallbacks.length>0)scheduleIdleWork();}\nfunction getStack_(){if(!recordRAFStacks)return'';const stackLines=tr.b.stackTrace();stackLines.shift();return stackLines.join('\\n');}\nfunction requestPreAnimationFrame(callback,opt_this){pendingPreAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}\nfunction requestAnimationFrameInThisFrameIfPossible(callback,opt_this){if(!currentRAFDispatchList){requestAnimationFrame(callback,opt_this);return;}\ncurrentRAFDispatchList.push({callback,context:opt_this||global,stack:getStack_()});return;}\nfunction requestAnimationFrame(callback,opt_this){pendingRAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}\nfunction animationFrame(){return new Promise(resolve=>requestAnimationFrame(resolve));}\nfunction requestIdleCallback(callback,opt_this){pendingIdleCallbacks.push({callback,context:opt_this||global,stack:getStack_()});scheduleIdleWork();}\nfunction forcePendingRAFTasksToRun(frameBeginTime){if(!rafScheduled)return;processRequests(false,frameBeginTime);}\nfunction forceAllPendingTasksToRunForTest(){if(!rafScheduled&&!idleWorkScheduled)return;processRequests(true,0);}\nfunction timeout(ms){return new Promise(resolve=>window.setTimeout(resolve,ms));}\nfunction idle(){return new Promise(resolve=>requestIdleCallback(resolve));}\nreturn{animationFrame,forceAllPendingTasksToRunForTest,forcePendingRAFTasksToRun,idle,onAnimationFrameError,requestAnimationFrame,requestAnimationFrameInThisFrameIfPossible,requestIdleCallback,requestPreAnimationFrame,timeout,};});'use strict';tr.exportTo('tr.e.cc',function(){function PictureAsImageData(picture,errorOrImageData){this.picture_=picture;if(errorOrImageData instanceof ImageData){this.error_=undefined;this.imageData_=errorOrImageData;}else{this.error_=errorOrImageData;this.imageData_=undefined;}}\nPictureAsImageData.Pending=function(picture){return new PictureAsImageData(picture,undefined);};PictureAsImageData.prototype={get picture(){return this.picture_;},get error(){return this.error_;},get imageData(){return this.imageData_;},isPending(){return this.error_===undefined&&this.imageData_===undefined;},asCanvas(){if(!this.imageData_)return;const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=this.imageData_.width;canvas.height=this.imageData_.height;ctx.putImageData(this.imageData_,0,0);return canvas;}};return{PictureAsImageData,};});'use strict';tr.exportTo('tr.b.math',function(){const tmpVec2s=[];for(let i=0;i<8;i++){tmpVec2s[i]=vec2.create();}\nconst tmpVec2a=vec4.create();const tmpVec4a=vec4.create();const tmpVec4b=vec4.create();const tmpMat4=mat4.create();const tmpMat4b=mat4.create();const p00=vec2.createXY(0,0);const p10=vec2.createXY(1,0);const p01=vec2.createXY(0,1);const p11=vec2.createXY(1,1);const lerpingVecA=vec2.create();const lerpingVecB=vec2.create();function lerpVec2(out,a,b,amt){vec2.scale(lerpingVecA,a,amt);vec2.scale(lerpingVecB,b,1-amt);vec2.add(out,lerpingVecA,lerpingVecB);vec2.normalize(out,out);return out;}\nfunction Quad(){this.p1=vec2.create();this.p2=vec2.create();this.p3=vec2.create();this.p4=vec2.create();}\nQuad.fromXYWH=function(x,y,w,h){const q=new Quad();vec2.set(q.p1,x,y);vec2.set(q.p2,x+w,y);vec2.set(q.p3,x+w,y+h);vec2.set(q.p4,x,y+h);return q;};Quad.fromRect=function(r){return new Quad.fromXYWH(r.x,r.y,r.width,r.height);};Quad.from4Vecs=function(p1,p2,p3,p4){const q=new Quad();vec2.set(q.p1,p1[0],p1[1]);vec2.set(q.p2,p2[0],p2[1]);vec2.set(q.p3,p3[0],p3[1]);vec2.set(q.p4,p4[0],p4[1]);return q;};Quad.from8Array=function(arr){if(arr.length!==8){throw new Error('Array must be 8 long');}\nconst q=new Quad();q.p1[0]=arr[0];q.p1[1]=arr[1];q.p2[0]=arr[2];q.p2[1]=arr[3];q.p3[0]=arr[4];q.p3[1]=arr[5];q.p4[0]=arr[6];q.p4[1]=arr[7];return q;};Quad.prototype={pointInside(point){return pointInImplicitQuad(point,this.p1,this.p2,this.p3,this.p4);},boundingRect(){const x0=Math.min(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y0=Math.min(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);const x1=Math.max(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y1=Math.max(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);return new tr.b.math.Rect.fromXYWH(x0,y0,x1-x0,y1-y0);},clone(){const q=new Quad();vec2.copy(q.p1,this.p1);vec2.copy(q.p2,this.p2);vec2.copy(q.p3,this.p3);vec2.copy(q.p4,this.p4);return q;},scale(s){const q=new Quad();this.scaleFast(q,s);return q;},scaleFast(dstQuad,s){vec2.copy(dstQuad.p1,this.p1,s);vec2.copy(dstQuad.p2,this.p2,s);vec2.copy(dstQuad.p3,this.p3,s);vec2.copy(dstQuad.p3,this.p3,s);},isRectangle(){const bounds=this.boundingRect();return(bounds.x===this.p1[0]&&bounds.y===this.p1[1]&&bounds.width===this.p2[0]-this.p1[0]&&bounds.y===this.p2[1]&&bounds.width===this.p3[0]-this.p1[0]&&bounds.height===this.p3[1]-this.p2[1]&&bounds.x===this.p4[0]&&bounds.height===this.p4[1]-this.p2[1]);},projectUnitRect(rect){const q=new Quad();this.projectUnitRectFast(q,rect);return q;},projectUnitRectFast(dstQuad,rect){const v12=tmpVec2s[0];const v14=tmpVec2s[1];const v23=tmpVec2s[2];const v43=tmpVec2s[3];vec2.sub(v12,this.p2,this.p1);const l12=vec2.length(v12);vec2.scale(v12,v12,1/l12);vec2.sub(v14,this.p4,this.p1);const l14=vec2.length(v14);vec2.scale(v14,v14,1/l14);vec2.sub(v23,this.p3,this.p2);const l23=vec2.length(v23);vec2.scale(v23,v23,1/l23);vec2.sub(v43,this.p3,this.p4);const l43=vec2.length(v43);vec2.scale(v43,v43,1/l43);const b12=tmpVec2s[0];const b14=tmpVec2s[1];const b23=tmpVec2s[2];const b43=tmpVec2s[3];lerpVec2(b12,v12,v43,rect.y);lerpVec2(b43,v12,v43,1-rect.bottom);lerpVec2(b14,v14,v23,rect.x);lerpVec2(b23,v14,v23,1-rect.right);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*rect.x,b14,l14*rect.y);vec2.add(dstQuad.p1,this.p1,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*-(1.0-rect.right),b23,l23*rect.y);vec2.add(dstQuad.p2,this.p2,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*-(1.0-rect.right),b23,l23*-(1.0-rect.bottom));vec2.add(dstQuad.p3,this.p3,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*rect.left,b14,l14*-(1.0-rect.bottom));vec2.add(dstQuad.p4,this.p4,tmpVec2a);},toString(){return'Quad('+\nvec2.toString(this.p1)+', '+\nvec2.toString(this.p2)+', '+\nvec2.toString(this.p3)+', '+\nvec2.toString(this.p4)+')';}};function sign(p1,p2,p3){return(p1[0]-p3[0])*(p2[1]-p3[1])-\n(p2[0]-p3[0])*(p1[1]-p3[1]);}\nfunction pointInTriangle2(pt,p1,p2,p3){const b1=sign(pt,p1,p2)<0.0;const b2=sign(pt,p2,p3)<0.0;const b3=sign(pt,p3,p1)<0.0;return((b1===b2)&&(b2===b3));}\nfunction pointInImplicitQuad(point,p1,p2,p3,p4){return pointInTriangle2(point,p1,p2,p3)||pointInTriangle2(point,p1,p3,p4);}\nreturn{pointInTriangle2,pointInImplicitQuad,Quad,};});'use strict';tr.exportTo('tr.model',function(){function ObjectSnapshot(objectInstance,ts,args){tr.model.Event.call(this);this.objectInstance=objectInstance;this.ts=ts;this.args=args;}\nObjectSnapshot.prototype={__proto__:tr.model.Event.prototype,preInitialize(){},initialize(){},referencedAt(item,object,field){},addBoundsToRange(range){range.addValue(this.ts);},get userFriendlyName(){return'Snapshot of '+this.objectInstance.userFriendlyName+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(this.ts);}};tr.model.EventRegistry.register(ObjectSnapshot,{name:'objectSnapshot',pluralName:'objectSnapshots'});return{ObjectSnapshot,};});'use strict';tr.exportTo('tr.model',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectInstance(parent,scopedId,category,name,creationTs,opt_baseTypeName){tr.model.Event.call(this);this.parent=parent;this.scopedId=scopedId;this.category=category;this.baseTypeName=opt_baseTypeName?opt_baseTypeName:name;this.name=name;this.creationTs=creationTs;this.creationTsWasExplicit=false;this.deletionTs=Number.MAX_VALUE;this.deletionTsWasExplicit=false;this.colorId=0;this.bounds=new tr.b.math.Range();this.snapshots=[];this.hasImplicitSnapshots=false;}\nObjectInstance.prototype={__proto__:tr.model.Event.prototype,get typeName(){return this.name;},addBoundsToRange(range){range.addRange(this.bounds);},addSnapshot(ts,args,opt_name,opt_baseTypeName){if(ts<this.creationTs){throw new Error('Snapshots must be >= instance.creationTs');}\nif(ts>=this.deletionTs){throw new Error('Snapshots cannot be added after '+'an objects deletion timestamp.');}\nlet lastSnapshot;if(this.snapshots.length>0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts===ts){throw new Error('Snapshots already exists at this time!');}\nif(ts<lastSnapshot.ts){throw new Error('Snapshots must be added in increasing timestamp order');}}\nif(opt_name&&(this.name!==opt_name)){if(!opt_baseTypeName){throw new Error('Must provide base type name for name update');}\nif(this.baseTypeName!==opt_baseTypeName){throw new Error('Cannot update type name: base types dont match');}\nthis.name=opt_name;}\nconst snapshotConstructor=tr.model.ObjectSnapshot.subTypes.getConstructor(this.category,this.name);const snapshot=new snapshotConstructor(this,ts,args);this.snapshots.push(snapshot);return snapshot;},wasDeleted(ts){let lastSnapshot;if(this.snapshots.length>0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts>ts){throw new Error('Instance cannot be deleted at ts='+\nts+'. A snapshot exists that is older.');}}\nthis.deletionTs=ts;this.deletionTsWasExplicit=true;},preInitialize(){for(let i=0;i<this.snapshots.length;i++){this.snapshots[i].preInitialize();}},initialize(){for(let i=0;i<this.snapshots.length;i++){this.snapshots[i].initialize();}},isAliveAt(ts){if(ts<this.creationTs&&this.creationTsWasExplicit){return false;}\nif(ts>this.deletionTs){return false;}\nreturn true;},getSnapshotAt(ts){if(ts<this.creationTs){if(this.creationTsWasExplicit){throw new Error('ts must be within lifetime of this instance');}\nreturn this.snapshots[0];}\nif(ts>this.deletionTs){throw new Error('ts must be within lifetime of this instance');}\nconst snapshots=this.snapshots;const i=tr.b.findIndexInSortedIntervals(snapshots,function(snapshot){return snapshot.ts;},function(snapshot,i){if(i===snapshots.length-1){return snapshots[i].objectInstance.deletionTs;}\nreturn snapshots[i+1].ts-snapshots[i].ts;},ts);if(i<0){return this.snapshots[0];}\nif(i>=this.snapshots.length){return this.snapshots[this.snapshots.length-1];}\nreturn this.snapshots[i];},updateBounds(){this.bounds.reset();this.bounds.addValue(this.creationTs);if(this.deletionTs!==Number.MAX_VALUE){this.bounds.addValue(this.deletionTs);}else if(this.snapshots.length>0){this.bounds.addValue(this.snapshots[this.snapshots.length-1].ts);}},shiftTimestampsForward(amount){this.creationTs+=amount;if(this.deletionTs!==Number.MAX_VALUE){this.deletionTs+=amount;}\nthis.snapshots.forEach(function(snapshot){snapshot.ts+=amount;});},get userFriendlyName(){return this.typeName+' object '+this.scopedId;}};tr.model.EventRegistry.register(ObjectInstance,{name:'objectInstance',pluralName:'objectInstances'});return{ObjectInstance,};});'use strict';tr.exportTo('tr.e.cc',function(){const convertedNameCache={};function convertNameToJSConvention(name){if(name in convertedNameCache){return convertedNameCache[name];}\nif(name[0]==='_'||name[name.length-1]==='_'){convertedNameCache[name]=name;return name;}\nconst words=name.split('_');if(words.length===1){convertedNameCache[name]=words[0];return words[0];}\nfor(let i=1;i<words.length;i++){words[i]=words[i][0].toUpperCase()+words[i].substring(1);}\nconvertedNameCache[name]=words.join('');return convertedNameCache[name];}\nfunction moveRequiredFieldsFromArgsToToplevel(object,fields){for(let i=0;i<fields.length;i++){const key=fields[i];if(object.args[key]===undefined){throw Error('Expected field '+key+' not found in args');}\nif(object[key]!==undefined){throw Error('Field '+key+' already in object');}\nobject[key]=object.args[key];delete object.args[key];}}\nfunction moveOptionalFieldsFromArgsToToplevel(object,fields){for(let i=0;i<fields.length;i++){const key=fields[i];if(object.args[key]===undefined)continue;if(object[key]!==undefined){throw Error('Field '+key+' already in object');}\nobject[key]=object.args[key];delete object.args[key];}}\nfunction preInitializeObject(object){preInitializeObjectInner(object.args,false);}\nfunction preInitializeObjectInner(object,hasRecursed){if(!(object instanceof Object))return;if(object instanceof Array){for(let i=0;i<object.length;i++){preInitializeObjectInner(object[i],true);}\nreturn;}\nif(hasRecursed&&(object instanceof tr.model.ObjectSnapshot||object instanceof tr.model.ObjectInstance)){return;}\nfor(let key in object){const newKey=convertNameToJSConvention(key);if(newKey!==key){const value=object[key];delete object[key];object[newKey]=value;key=newKey;}\nif(/Quad$/.test(key)&&!(object[key]instanceof tr.b.math.Quad)){let q;try{q=tr.b.math.Quad.from8Array(object[key]);}catch(e){}\nobject[key]=q;continue;}\nif(/Rect$/.test(key)&&!(object[key]instanceof tr.b.math.Rect)){let r;try{r=tr.b.math.Rect.fromArray(object[key]);}catch(e){}\nobject[key]=r;}\npreInitializeObjectInner(object[key],true);}}\nreturn{preInitializeObject,convertNameToJSConvention,moveRequiredFieldsFromArgsToToplevel,moveOptionalFieldsFromArgsToToplevel,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const PictureCount=0;const OPS_TIMING_ITERATIONS=3;function Picture(skp64,layerRect){this.skp64_=skp64;this.layerRect_=layerRect;this.guid_=tr.b.GUID.allocateSimple();}\nPicture.prototype={get canSave(){return true;},get layerRect(){return this.layerRect_;},get guid(){return this.guid_;},getBase64SkpData(){return this.skp64_;},getOps(){if(!PictureSnapshot.CanGetOps()){console.error(PictureSnapshot.HowToEnablePictureDebugging());return undefined;}\nconst ops=window.chrome.skiaBenchmarking.getOps({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}});if(!ops){console.error('Failed to get picture ops.');}\nreturn ops;},getOpTimings(){if(!PictureSnapshot.CanGetOpTimings()){console.error(PictureSnapshot.HowToEnablePictureDebugging());return undefined;}\nconst opTimings=window.chrome.skiaBenchmarking.getOpTimings({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}});if(!opTimings){console.error('Failed to get picture op timings.');}\nreturn opTimings;},tagOpsWithTimings(ops){const opTimings=[];for(let iteration=0;iteration<OPS_TIMING_ITERATIONS;iteration++){opTimings[iteration]=this.getOpTimings();if(!opTimings[iteration]||!opTimings[iteration].cmd_times){return ops;}\nif(opTimings[iteration].cmd_times.length!==ops.length){return ops;}}\nfor(let opIndex=0;opIndex<ops.length;opIndex++){let min=Number.MAX_VALUE;for(let i=0;i<OPS_TIMING_ITERATIONS;i++){min=Math.min(min,opTimings[i].cmd_times[opIndex]);}\nops[opIndex].cmd_time=min;}\nreturn ops;},rasterize(params,rasterCompleteCallback){if(!PictureSnapshot.CanRasterize()||!PictureSnapshot.CanGetOps()){rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,tr.e.cc.PictureSnapshot.HowToEnablePictureDebugging()));return;}\nif(!this.layerRect_.width||!this.layerRect_.height){rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,null));return;}\nconst raster=window.chrome.skiaBenchmarking.rasterize({skp64:this.skp64_,params:{layer_rect:this.layerRect_.toArray()}},{stop:params.stopIndex===undefined?-1:params.stopIndex,overdraw:!!params.showOverdraw,params:{}});if(raster){const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=raster.width;canvas.height=raster.height;const imageData=ctx.createImageData(raster.width,raster.height);imageData.data.set(new Uint8ClampedArray(raster.data));rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,imageData));}else{const error='Failed to rasterize picture. '+'Your recording may be from an old Chrome version. '+'The SkPicture format is not backward compatible.';rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,error));}}};function LayeredPicture(pictures){this.guid_=tr.b.GUID.allocateSimple();this.pictures_=pictures;this.layerRect_=undefined;}\nLayeredPicture.prototype={__proto__:Picture.prototype,get canSave(){return false;},get typeName(){return'cc::LayeredPicture';},get layerRect(){if(this.layerRect_!==undefined){return this.layerRect_;}\nthis.layerRect_={x:0,y:0,width:0,height:0};for(let i=0;i<this.pictures_.length;++i){const rect=this.pictures_[i].layerRect;this.layerRect_.x=Math.min(this.layerRect_.x,rect.x);this.layerRect_.y=Math.min(this.layerRect_.y,rect.y);this.layerRect_.width=Math.max(this.layerRect_.width,rect.x+rect.width);this.layerRect_.height=Math.max(this.layerRect_.height,rect.y+rect.height);}\nreturn this.layerRect_;},get guid(){return this.guid_;},getBase64SkpData(){throw new Error('Not available with a LayeredPicture.');},getOps(){let ops=[];for(let i=0;i<this.pictures_.length;++i){ops=ops.concat(this.pictures_[i].getOps());}\nreturn ops;},getOpTimings(){const opTimings=this.pictures_[0].getOpTimings();for(let i=1;i<this.pictures_.length;++i){const timings=this.pictures_[i].getOpTimings();opTimings.cmd_times=opTimings.cmd_times.concat(timings.cmd_times);opTimings.total_time+=timings.total_time;}\nreturn opTimings;},tagOpsWithTimings(ops){const opTimings=[];for(let iteration=0;iteration<OPS_TIMING_ITERATIONS;iteration++){opTimings[iteration]=this.getOpTimings();if(!opTimings[iteration]||!opTimings[iteration].cmd_times){return ops;}}\nfor(let opIndex=0;opIndex<ops.length;opIndex++){let min=Number.MAX_VALUE;for(let i=0;i<OPS_TIMING_ITERATIONS;i++){min=Math.min(min,opTimings[i].cmd_times[opIndex]);}\nops[opIndex].cmd_time=min;}\nreturn ops;},rasterize(params,rasterCompleteCallback){this.picturesAsImageData_=[];const rasterCallback=function(pictureAsImageData){this.picturesAsImageData_.push(pictureAsImageData);if(this.picturesAsImageData_.length!==this.pictures_.length){return;}\nconst canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=this.layerRect.width;canvas.height=this.layerRect.height;for(let i=0;i<this.picturesAsImageData_.length;++i){ctx.putImageData(this.picturesAsImageData_[i].imageData,this.pictures_[i].layerRect.x,this.pictures_[i].layerRect.y);}\nthis.picturesAsImageData_=[];rasterCompleteCallback(new tr.e.cc.PictureAsImageData(this,ctx.getImageData(this.layerRect.x,this.layerRect.y,this.layerRect.width,this.layerRect.height)));}.bind(this);for(let i=0;i<this.pictures_.length;++i){this.pictures_[i].rasterize(params,rasterCallback);}}};function PictureSnapshot(){ObjectSnapshot.apply(this,arguments);}\nPictureSnapshot.HasSkiaBenchmarking=function(){return tr.isExported('chrome.skiaBenchmarking');};PictureSnapshot.CanRasterize=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.rasterize){return false;}\nreturn true;};PictureSnapshot.CanGetOps=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getOps){return false;}\nreturn true;};PictureSnapshot.CanGetOpTimings=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getOpTimings){return false;}\nreturn true;};PictureSnapshot.CanGetInfo=function(){if(!PictureSnapshot.HasSkiaBenchmarking()){return false;}\nif(!window.chrome.skiaBenchmarking.getInfo){return false;}\nreturn true;};PictureSnapshot.HowToEnablePictureDebugging=function(){if(tr.isHeadless){return'Pictures only work in chrome';}\nconst usualReason=['For pictures to show up, the Chrome browser displaying the trace ','needs to be running with --enable-skia-benchmarking. Please restart ','chrome with this flag and try loading the trace again.'].join('');if(!PictureSnapshot.HasSkiaBenchmarking()){return usualReason;}\nif(!PictureSnapshot.CanRasterize()){return'Your chrome is old: chrome.skipBenchmarking.rasterize not found';}\nif(!PictureSnapshot.CanGetOps()){return'Your chrome is old: chrome.skiaBenchmarking.getOps not found';}\nif(!PictureSnapshot.CanGetOpTimings()){return'Your chrome is old: '+'chrome.skiaBenchmarking.getOpTimings not found';}\nif(!PictureSnapshot.CanGetInfo()){return'Your chrome is old: chrome.skiaBenchmarking.getInfo not found';}\nreturn undefined;};PictureSnapshot.CanDebugPicture=function(){return PictureSnapshot.HowToEnablePictureDebugging()===undefined;};PictureSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.rasterResult_=undefined;},initialize(){if(this.args.alias){this.args=this.args.alias.args;}\nif(!this.args.params.layerRect){throw new Error('Missing layer rect');}\nthis.layerRect_=this.args.params.layerRect;this.picture_=new Picture(this.args.skp64,this.args.params.layerRect);},set picture(picture){this.picture_=picture;},get canSave(){return this.picture_.canSave;},get layerRect(){return this.layerRect_?this.layerRect_:this.picture_.layerRect;},get guid(){return this.picture_.guid;},getBase64SkpData(){return this.picture_.getBase64SkpData();},getOps(){return this.picture_.getOps();},getOpTimings(){return this.picture_.getOpTimings();},tagOpsWithTimings(ops){return this.picture_.tagOpsWithTimings(ops);},rasterize(params,rasterCompleteCallback){this.picture_.rasterize(params,rasterCompleteCallback);}};ObjectSnapshot.subTypes.register(PictureSnapshot,{typeNames:['cc::Picture']});return{PictureSnapshot,Picture,LayeredPicture,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function DisplayItemList(skp64,layerRect){tr.e.cc.Picture.apply(this,arguments);}\nDisplayItemList.prototype={__proto__:tr.e.cc.Picture.prototype};function DisplayItemListSnapshot(){tr.e.cc.PictureSnapshot.apply(this,arguments);}\nDisplayItemListSnapshot.prototype={__proto__:tr.e.cc.PictureSnapshot.prototype,initialize(){tr.e.cc.PictureSnapshot.prototype.initialize.call(this);this.displayItems_=this.args.params.items;},get items(){return this.displayItems_;}};ObjectSnapshot.subTypes.register(DisplayItemListSnapshot,{typeNames:['cc::DisplayItemList']});return{DisplayItemListSnapshot,DisplayItemList,};});'use strict';tr.exportTo('tr.e.chrome',function(){const LCP_CANDIDATE_EVENT_TITLE='NavStartToLargestContentfulPaint::Candidate::AllFrames::UKM';const LCP_INVALIDATE_EVENT_TITLE='NavStartToLargestContentfulPaint::Invalidate::AllFrames::UKM';class LcpEvent{constructor(event){if(!LcpInvalidateEvent.isLcpInvalidateEvent(event)&&!LcpCandidateEvent.isLcpCandidateEvent(event)){throw new Error('The LCP event should be either a candidate event or'+'an invalidate event.');}\nif(event.start===undefined||event.args.main_frame_tree_node_id===undefined){throw new Error('The LCP event is in unexpected format.');}\nthis.start=event.start;this.mainFrameTreeNodeId=event.args.main_frame_tree_node_id;}}\nclass LcpCandidateEvent extends LcpEvent{constructor(event){super(event);const{durationInMilliseconds,size,type,inMainFrame}=event.args.data;if(durationInMilliseconds===undefined||size===undefined||type===undefined||inMainFrame===undefined||event.args.main_frame_tree_node_id===undefined||!LcpCandidateEvent.isLcpCandidateEvent(event)){throw new Error('The LCP candidate event is in unexpected format.');}\nthis.durationInMilliseconds=durationInMilliseconds;this.size=size;this.type=type;this.inMainFrame=inMainFrame;}\nstatic isLcpCandidateEvent(event){return event.title===LCP_CANDIDATE_EVENT_TITLE;}}\nclass LcpInvalidateEvent extends LcpEvent{constructor(event){super(event);if(!LcpInvalidateEvent.isLcpInvalidateEvent(event)){throw new Error('The LCP invalidate event is in unexpected format.');}}\nstatic isLcpInvalidateEvent(event){return event.title===LCP_INVALIDATE_EVENT_TITLE;}}\nclass LargestContentfulPaint{constructor(allBrowserEvents){this.allBrowserEvents=allBrowserEvents;}\nfindCandidates(){const finalLcpEvents=this.findFinalLcpEventOfEachNavigation(this.allBrowserEvents);const finalCandidates=finalLcpEvents.filter(finalLcpEvent=>!LcpInvalidateEvent.isLcpInvalidateEvent(finalLcpEvent));return finalCandidates;}\nfindFinalLcpEventOfEachNavigation(allBrowserEvents){const lcpEvents=[];for(const lcpEvent of allBrowserEvents){if(LcpCandidateEvent.isLcpCandidateEvent(lcpEvent)){lcpEvents.push(new LcpCandidateEvent(lcpEvent));}else if(LcpInvalidateEvent.isLcpInvalidateEvent(lcpEvent)){lcpEvents.push(new LcpInvalidateEvent(lcpEvent));}}\nconst lcpEventsGroupedByNavigation=new Map();for(const e of lcpEvents){const key=e.mainFrameTreeNodeId;if(!lcpEventsGroupedByNavigation.has(key)){lcpEventsGroupedByNavigation.set(key,[]);}\nlcpEventsGroupedByNavigation.get(key).push(e);}\nconst finalLcpEventOfEachNavigation=[];for(const lcpEventList of lcpEventsGroupedByNavigation.values()){lcpEventList.sort((a,b)=>a.start-b.start);finalLcpEventOfEachNavigation.push(lcpEventList[lcpEventList.length-1]);}\nreturn finalLcpEventOfEachNavigation;}}\nreturn{LCP_CANDIDATE_EVENT_TITLE,LCP_INVALIDATE_EVENT_TITLE,LargestContentfulPaint,};});'use strict';tr.exportTo('tr.b.math',function(){function earthMoversDistance(firstHistogram,secondHistogram){const buckets=firstHistogram.length;if(secondHistogram.length!==buckets){throw new Error('Histograms have a different number of bins.');}\nconst arrSum=arr=>arr.reduce((a,b)=>a+b,0);if(arrSum(firstHistogram)!==arrSum(secondHistogram)){throw new Error('The histograms\\' sizes don\\'t match.');}\nlet total=0;let remainder=0;for(let bucket=0;bucket<buckets;bucket++){remainder+=secondHistogram[bucket]-\nfirstHistogram[bucket];total+=Math.abs(remainder);}\nreturn total;}\nreturn{earthMoversDistance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const earthMoversDistance=tr.b.math.earthMoversDistance;class SpeedIndex{static getSnapshotsProgress_(timestampedColorHistograms){const numberOfScreenshots=timestampedColorHistograms.length;const firstHistogram=timestampedColorHistograms[0].colorHistogram;const lastHistogram=timestampedColorHistograms[numberOfScreenshots-1].colorHistogram;const totalDistance=earthMoversDistance(firstHistogram[0],lastHistogram[0])+\nearthMoversDistance(firstHistogram[1],lastHistogram[1])+\nearthMoversDistance(firstHistogram[2],lastHistogram[2]);if(totalDistance===0){return[{value:1,ts:timestampedColorHistograms[0].ts}];}\nconst snapshotsProgress=new Array(numberOfScreenshots);for(let i=0;i<numberOfScreenshots;i++){const histogram=timestampedColorHistograms[i].colorHistogram;const distance=earthMoversDistance(histogram[0],lastHistogram[0])+\nearthMoversDistance(histogram[1],lastHistogram[1])+\nearthMoversDistance(histogram[2],lastHistogram[2]);const moved=Math.max(totalDistance-distance,0);snapshotsProgress[i]={value:(moved/totalDistance),ts:timestampedColorHistograms[i].ts};}\nreturn snapshotsProgress;}\nstatic speedIndexFromSnapshotsProgress_(snapshotsProgress){if(snapshotsProgress.length===0){throw new Error('No snapshots were provided.');}\nlet prevSnapshotTimeTaken=0;let prevSnapshotProgress=0;let speedIndex=0;const numberOfScreenshots=snapshotsProgress.length;for(let i=0;i<numberOfScreenshots;i++){const elapsed=snapshotsProgress[i].ts-prevSnapshotTimeTaken;speedIndex+=elapsed*(1.0-prevSnapshotProgress);prevSnapshotTimeTaken=snapshotsProgress[i].ts;prevSnapshotProgress=snapshotsProgress[i].value;}\nreturn Math.round(speedIndex);}\nstatic createColorHistogram(imagePixelValues){const n=imagePixelValues.length;const histogram=new Array(3);for(let j=0;j<3;j++){histogram[j]=new Array(256).fill(0);}\nfor(let i=0;i<n;i+=4){const r=imagePixelValues[i];const g=imagePixelValues[i+1];const b=imagePixelValues[i+2];histogram[0][r]++;histogram[1][g]++;histogram[2][b]++;}\nreturn histogram;}\nstatic calculateSpeedIndex(timestampedColorHistograms){const snapshotsProgress=SpeedIndex.getSnapshotsProgress_(timestampedColorHistograms);return SpeedIndex.speedIndexFromSnapshotsProgress_(snapshotsProgress);}\nstatic lineSweep(lineSweepRects,viewport){const verticalSweepEdges=[];const horizontalSweepEdges=[];for(let i=0;i<lineSweepRects.length;i++){const rect=lineSweepRects[i];let left=rect.left;let right=rect.right;let top=rect.top;let bottom=rect.bottom;if(left>viewport.x+viewport.width)continue;if(right<viewport.x)continue;if(top>viewport.y+viewport.height)continue;if(bottom<viewport.y)continue;left=Math.max(left,viewport.y);right=Math.min(right,viewport.y+viewport.width);top=Math.max(top,viewport.y);bottom=Math.min(bottom,viewport.y+viewport.height);verticalSweepEdges.push({id:i,value:left,type:'left'},{id:i,value:right,type:'right'});horizontalSweepEdges.push({id:i,value:top,type:'top'},{id:i,value:bottom,type:'bottom'});}\nif(verticalSweepEdges.length===0||horizontalSweepEdges.length===0){return 0;}\nverticalSweepEdges.sort((a,b)=>a.value-b.value);horizontalSweepEdges.sort((a,b)=>a.value-b.value);const active=new Array(lineSweepRects.length).fill(false);let area=0;active[verticalSweepEdges[0].id]=true;for(let i=1;i<verticalSweepEdges.length;i++){const currentLine=verticalSweepEdges[i];const previousLine=verticalSweepEdges[i-1];const deltaX=currentLine.value-previousLine.value;if(deltaX===0)continue;let count=0;let firstRect;for(let j=0;j<horizontalSweepEdges.length;j++){if(active[horizontalSweepEdges[j].id]===true){if(horizontalSweepEdges[j].type==='top'){if(count===0){firstRect=j;}\ncount++;}else{if(count===1){const deltaY=horizontalSweepEdges[j].value-\nhorizontalSweepEdges[firstRect].value;area+=deltaX*deltaY;}\ncount--;}}}\nactive[currentLine.id]=(currentLine.type==='left');}\nreturn area;}\nstatic quadToRect(quad){const left=Math.min(quad[0],quad[2],quad[4]);const right=Math.max(quad[0],quad[2],quad[4]);const top=Math.min(quad[1],quad[3],quad[5]);const bottom=Math.max(quad[1],quad[3],quad[5]);return{left,right,top,bottom};}\nstatic calculateRectsBasedSpeedIndex(timestampedPaintRects,viewport){const numberOfRects=timestampedPaintRects.length;if(numberOfRects===0){throw new Error('Can\\'t calculate speed index without any paint '+'rectangles.');}\nconst areaAddedAtTimestamp=new Array(numberOfRects);const rects=[];let previousAreaOfUnion=0;let totalAreaOfUnion=0;for(let i=numberOfRects-1;i>=0;i--){rects.push(timestampedPaintRects[i].rect);const currentAreaOfUnion=SpeedIndex.lineSweep(rects,viewport);areaAddedAtTimestamp[i]={value:currentAreaOfUnion-previousAreaOfUnion,ts:timestampedPaintRects[i].ts};totalAreaOfUnion+=areaAddedAtTimestamp[i].value;previousAreaOfUnion=currentAreaOfUnion;}\nconst paintProgressAtTimestamp=new Array(numberOfRects);let lastProgressRecorded=0;for(let i=0;i<numberOfRects;i++){paintProgressAtTimestamp[i]={value:areaAddedAtTimestamp[i].value/totalAreaOfUnion+\nlastProgressRecorded,ts:areaAddedAtTimestamp[i].ts};lastProgressRecorded=paintProgressAtTimestamp[i].value;}\nreturn SpeedIndex.speedIndexFromSnapshotsProgress_(paintProgressAtTimestamp);}}\nreturn{SpeedIndex,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const SpeedIndex=tr.e.chrome.SpeedIndex;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function addRectsBasedSpeedIndexSample(samples,rendererHelper,navigationStart,loadDuration,frameID){let viewport;for(const event of EventFinderUtils.getMainThreadEvents(rendererHelper,'viewport','loading')){if(event.args.data.frameID===frameID&&event.start<(navigationStart+loadDuration)){viewport=event.args.data;}}\nif(!viewport)return;const timestampedPaintRects=[];for(const event of EventFinderUtils.getMainThreadEvents(rendererHelper,'PaintTimingVisualizer::LayoutObjectPainted','loading')){if(event.start>=navigationStart&&event.start<navigationStart+loadDuration){const paintRect=event.args.data.rect;if(!paintRect)continue;timestampedPaintRects.push({rect:SpeedIndex.quadToRect(paintRect),ts:event.start});}}\nconst numberOfRects=timestampedPaintRects.length;if(numberOfRects===0)return;samples.push({value:SpeedIndex.calculateRectsBasedSpeedIndex(timestampedPaintRects,viewport)-navigationStart});}\nfunction collectRectsBasedSpeedIndexSamplesFromLoadExpectations(model,chromeHelper){const rectsBasedSpeedIndexSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];addRectsBasedSpeedIndexSample(rectsBasedSpeedIndexSamples,rendererHelper,expectation.navigationStart.start,expectation.duration,expectation.navigationStart.args.frame);}\nreturn rectsBasedSpeedIndexSamples;}\nfunction rectsBasedSpeedIndexMetric(histograms,model){const rectsBasedSpeedIndexHistogram=histograms.createHistogram('rectsBasedSpeedIndex',timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,description:' the average time at which visible parts of the'+' page are displayed (in ms).',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const samples=collectRectsBasedSpeedIndexSamplesFromLoadExpectations(model,chromeHelper);for(const sample of samples){rectsBasedSpeedIndexHistogram.addSample(sample.value);}}\ntr.metrics.MetricRegistry.register(rectsBasedSpeedIndexMetric);return{rectsBasedSpeedIndexMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LONG_TASK_THRESHOLD_MS=50;const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_smallerIsBetter=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const RelatedEventSet=tr.v.d.RelatedEventSet;const hasCategoryAndName=tr.metrics.sh.hasCategoryAndName;const EventFinderUtils=tr.e.chrome.EventFinderUtils;function createBreakdownDiagnostic(breakdownTree){const breakdownDiagnostic=new tr.v.d.Breakdown();breakdownDiagnostic.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const label in breakdownTree){breakdownDiagnostic.set(label,breakdownTree[label].total);}\nreturn breakdownDiagnostic;}\nconst LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const TIME_TO_INTERACTIVE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,40e3,35).addExponentialBins(80e3,15);const LAYOUT_SHIFT_SCORE_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,50,25);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,ts){const objects=rendererHelper.process.objects;const frameLoaderInstances=objects.instancesByTypeName_.FrameLoader;if(frameLoaderInstances===undefined)return undefined;let snapshot;for(const instance of frameLoaderInstances){if(!instance.isAliveAt(ts))continue;const maybeSnapshot=instance.getSnapshotAt(ts);if(frameIdRef!==maybeSnapshot.args.frame.id_ref)continue;snapshot=maybeSnapshot;}\nreturn snapshot;}\nfunction findAllEvents(rendererHelper,category,title){const targetEvents=[];for(const ev of rendererHelper.process.getDescendantEvents()){if(!hasCategoryAndName(ev,category,title))continue;targetEvents.push(ev);}\nreturn targetEvents;}\nfunction getMostRecentValidEvent(rendererHelper,category,title){const targetEvents=findAllEvents(rendererHelper,category,title);let validEvent;for(const targetEvent of targetEvents){if(rendererHelper.isTelemetryInternalEvent(targetEvent))continue;if(validEvent===undefined){validEvent=targetEvent;}else{if(validEvent.start<targetEvent.start){validEvent=targetEvent;}}}\nreturn validEvent;}\nfunction getFirstViewportReadySamples(rendererHelper,navIdToNavStartEvents){const samples=[];const pcEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','pc');if(pcEvent===undefined)return samples;if(rendererHelper.isTelemetryInternalEvent(pcEvent))return samples;const navigationStartEvent=navIdToNavStartEvents.get(pcEvent.args.data.navigationId);if(navigationStartEvent===undefined)return samples;const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,pcEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventRange);if(rendererHelper.mainThread===undefined)return samples;const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventRange);samples.push({value:navStartToEventRange.duration,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),Start:new RelatedEventSet(navigationStartEvent),End:new RelatedEventSet(pcEvent)}});return samples;}\nfunction getAboveTheFoldLoadedToVisibleSamples(rendererHelper){const samples=[];const pcEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','pc');const visibleEvent=getMostRecentValidEvent(rendererHelper,'blink.user_timing','visible');if(pcEvent!==undefined&&visibleEvent!==undefined){samples.push({value:Math.max(0.0,pcEvent.start-visibleEvent.start),diagnostics:{Start:new RelatedEventSet(visibleEvent),End:new RelatedEventSet(pcEvent)}});}\nreturn samples;}\nfunction findTimeToXEntries(category,eventName,rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const targetEvents=findAllEvents(rendererHelper,category,eventName);const entries=[];for(const targetEvent of targetEvents){if(rendererHelper.isTelemetryInternalEvent(targetEvent))continue;const frameIdRef=targetEvent.args.frame;const snapshot=findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,targetEvent.start);if(snapshot===undefined||!snapshot.args.isLoadingMainFrame)continue;const url=snapshot.args.documentLoaderURL;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(url))continue;let navigationStartEvent;if(targetEvent.args.data===undefined||targetEvent.args.data.navigationId===undefined){navigationStartEvent=EventFinderUtils.findLastEventStartingOnOrBeforeTimestamp(frameToNavStartEvents.get(frameIdRef)||[],targetEvent.start);}else{navigationStartEvent=navIdToNavStartEvents.get(targetEvent.args.data.navigationId);}\nif(navigationStartEvent===undefined)continue;entries.push({navigationStartEvent,targetEvent,url,});}\nreturn entries;}\nfunction collectTimeToEvent(rendererHelper,timeToXEntries){const samples=[];for(const{targetEvent,navigationStartEvent,url}of timeToXEntries){const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,targetEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventRange);samples.push({value:navStartToEventRange.duration,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),url:new tr.v.d.GenericSet([url]),Start:new RelatedEventSet(navigationStartEvent),End:new RelatedEventSet(targetEvent)}});}\nreturn samples;}\nfunction collectTimeToEventInCpuTime(rendererHelper,timeToXEntries){const samples=[];for(const{targetEvent,navigationStartEvent,url}of timeToXEntries){const navStartToEventRange=tr.b.math.Range.fromExplicitRange(navigationStartEvent.start,targetEvent.start);const mainThreadCpuTime=rendererHelper.mainThread.getCpuTimeForRange(navStartToEventRange);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,navStartToEventRange);samples.push({value:mainThreadCpuTime,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStartEvent),end:new RelatedEventSet(targetEvent),infos:new tr.v.d.GenericSet([{pid:rendererHelper.pid,start:navigationStartEvent.start,event:targetEvent.start,}]),}});}\nreturn samples;}\nfunction findLayoutShiftSamples(rendererHelper){let sample;EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'LayoutShift','loading').forEach((events)=>{const evData=events.pop().args.data;if(evData.is_main_frame){sample={value:evData.cumulative_score};}});return sample?[sample]:[];}\nfunction addFirstMeaningfulPaintSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToFMPRange);const timeToFirstMeaningfulPaint=navStartToFMPRange.duration;const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToFMPRange);samples.push({value:timeToFirstMeaningfulPaint,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}\nfunction addFirstMeaningfulPaintCpuTimeSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const mainThreadCpuTime=rendererHelper.mainThread.getCpuTimeForRange(navStartToFMPRange);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,navStartToFMPRange);samples.push({value:mainThreadCpuTime,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}\nfunction decorateInteractivitySampleWithDiagnostics_(rendererHelper,eventTimestamp,navigationStartEvent,firstContentfulPaintTime,domContentLoadedEndTime,url){if(eventTimestamp===undefined)return undefined;const navigationStartTime=navigationStartEvent.start;const navStartToEventTimeRange=tr.b.math.Range.fromExplicitRange(navigationStartTime,eventTimestamp);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventTimeRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventTimeRange);const breakdownDiagnostic=createBreakdownDiagnostic(breakdownTree);return{value:navStartToEventTimeRange.duration,diagnostics:tr.v.d.DiagnosticMap.fromObject({'Start':new RelatedEventSet(navigationStartEvent),'Navigation infos':new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,navigationStartTime,firstContentfulPaintTime,domContentLoadedEndTime,eventTimestamp,}]),'Breakdown of [navStart, eventTimestamp]':breakdownDiagnostic,}),};}\nfunction getCandidateIndex(entry){return entry.targetEvent.args.data.candidateIndex;}\nfunction findLastCandidateForEachNavigation(timeToXEntries){const entryMap=new Map();for(const e of timeToXEntries){const navStartEvent=e.navigationStartEvent;if(!entryMap.has(navStartEvent)){entryMap.set(navStartEvent,[]);}\nentryMap.get(navStartEvent).push(e);}\nconst lastCandidates=[];for(const timeToXEntriesByNavigation of entryMap.values()){let lastCandidate=timeToXEntriesByNavigation.shift();for(const entry of timeToXEntriesByNavigation){if(getCandidateIndex(entry)>getCandidateIndex(lastCandidate)){lastCandidate=entry;}}\nlastCandidates.push(lastCandidate);}\nreturn lastCandidates;}\nfunction findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestTextPaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestTextPaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestTextPaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}\nfunction findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestImagePaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestImagePaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestImagePaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}\nfunction findLargestContentfulPaintHistogramSamples(allBrowserEvents){const lcp=new tr.e.chrome.LargestContentfulPaint(allBrowserEvents);const lcpSamples=lcp.findCandidates().map(candidate=>{const{durationInMilliseconds,size,type,inMainFrame,mainFrameTreeNodeId}=candidate;return{value:durationInMilliseconds,diagnostics:{size:new tr.v.d.GenericSet([size]),type:new tr.v.d.GenericSet([type]),inMainFrame:new tr.v.d.GenericSet([inMainFrame]),mainFrameTreeNodeId:new tr.v.d.GenericSet([mainFrameTreeNodeId]),},};});return lcpSamples;}\nfunction collectLoadingMetricsForRenderer(rendererHelper){const frameToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const navIdToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByNavId(rendererHelper,'navigationStart','blink.user_timing');const firstPaintSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('loading','firstPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const timeToFCPEntries=findTimeToXEntries('loading','firstContentfulPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const firstContentfulPaintSamples=collectTimeToEvent(rendererHelper,timeToFCPEntries);const firstContentfulPaintCpuTimeSamples=collectTimeToEventInCpuTime(rendererHelper,timeToFCPEntries);const onLoadSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('blink.user_timing','loadEventStart',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const aboveTheFoldLoadedToVisibleSamples=getAboveTheFoldLoadedToVisibleSamples(rendererHelper);const firstViewportReadySamples=getFirstViewportReadySamples(rendererHelper,navIdToNavStartEvents);const largestImagePaintSamples=findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const largestTextPaintSamples=findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const layoutShiftSamples=findLayoutShiftSamples(rendererHelper);const navigationStartSamples=timeToFCPEntries.map(entry=>{return{value:entry.navigationStartEvent.start};});return{frameToNavStartEvents,firstPaintSamples,firstContentfulPaintSamples,firstContentfulPaintCpuTimeSamples,onLoadSamples,aboveTheFoldLoadedToVisibleSamples,firstViewportReadySamples,largestImagePaintSamples,largestTextPaintSamples,layoutShiftSamples,navigationStartSamples,};}\nfunction collectMetricsFromLoadExpectations(model,chromeHelper){const interactiveSamples=[];const firstCpuIdleSamples=[];const firstMeaningfulPaintSamples=[];const firstMeaningfulPaintCpuTimeSamples=[];const totalBlockingTimeSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(expectation.fmpEvent!==undefined){addFirstMeaningfulPaintSample(firstMeaningfulPaintSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);addFirstMeaningfulPaintCpuTimeSample(firstMeaningfulPaintCpuTimeSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);}\nif(expectation.firstCpuIdleTime!==undefined){firstCpuIdleSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.firstCpuIdleTime,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}\nif(expectation.timeToInteractive!==undefined){interactiveSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.timeToInteractive,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}\nif(expectation.totalBlockingTime!==undefined){totalBlockingTimeSamples.push({value:expectation.totalBlockingTime,diagnostics:{url:new tr.v.d.GenericSet([expectation.url]),navigationStart:new RelatedEventSet(expectation.navigationStart),firstContentfulPaint:new RelatedEventSet(expectation.fcpEvent),interactiveTime:new tr.v.d.GenericSet([expectation.timeToInteractive]),}});}}\nreturn{firstMeaningfulPaintSamples,firstMeaningfulPaintCpuTimeSamples,firstCpuIdleSamples,interactiveSamples,totalBlockingTimeSamples,};}\nfunction addSamplesToHistogram(samples,histogram,histograms){for(const sample of samples){histogram.addSample(sample.value,sample.diagnostics);if(histogram.name!=='timeToFirstContentfulPaint')continue;if(!sample.breakdownTree)continue;for(const[category,breakdown]of Object.entries(sample.breakdownTree)){const relatedName=`${histogram.name}:${category}`;let relatedHist=histograms.getHistogramsNamed(relatedName)[0];if(!relatedHist){relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}\nrelatedNames.set(category,relatedName);}\nrelatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}}\nfunction loadingMetric(histograms,model){const firstPaintHistogram=histograms.createHistogram('timeToFirstPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintHistogram=histograms.createHistogram('timeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const onLoadHistogram=histograms.createHistogram('timeToOnload',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to onload. '+'This is temporary metric used for PCv1/v2 sanity checking',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintHistogram=histograms.createHistogram('timeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractiveHistogram=histograms.createHistogram('timeToInteractive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to Interactive',summaryOptions:SUMMARY_OPTIONS,});const totalBlockingTimeHistogram=histograms.createHistogram('totalBlockingTime',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Total Blocking Time',summaryOptions:SUMMARY_OPTIONS,});const timeToFirstCpuIdleHistogram=histograms.createHistogram('timeToFirstCpuIdle',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to First CPU Idle',summaryOptions:SUMMARY_OPTIONS,});const aboveTheFoldLoadedToVisibleHistogram=histograms.createHistogram('aboveTheFoldLoadedToVisible',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from first visible to load for AMP pages only.',summaryOptions:SUMMARY_OPTIONS,});const firstViewportReadyHistogram=histograms.createHistogram('timeToFirstViewportReady',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from navigation to load for AMP pages only. ',summaryOptions:SUMMARY_OPTIONS,});const largestImagePaintHistogram=histograms.createHistogram('largestImagePaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Image Paint',summaryOptions:SUMMARY_OPTIONS,});const largestTextPaintHistogram=histograms.createHistogram('largestTextPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Text Paint',summaryOptions:SUMMARY_OPTIONS,});const largestContentfulPaintHistogram=histograms.createHistogram('largestContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Contentful Paint',summaryOptions:SUMMARY_OPTIONS,});const layoutShiftHistogram=histograms.createHistogram('mainFrameCumulativeLayoutShift',unitlessNumber_smallerIsBetter,[],{binBoundaries:LAYOUT_SHIFT_SCORE_BOUNDARIES,description:'Main Frame Document Cumulative Layout Shift Score',summaryOptions:SUMMARY_OPTIONS,});const navigationStartHistogram=histograms.createHistogram('navigationStart',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'navigationStart',summaryOptions:SUMMARY_OPTIONS,});tr.metrics.sh.rectsBasedSpeedIndexMetric(histograms,model);const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;const samplesSet=collectLoadingMetricsForRenderer(rendererHelper);const lcpSamples=findLargestContentfulPaintHistogramSamples(chromeHelper.browserHelper.mainThread.sliceGroup.slices);addSamplesToHistogram(lcpSamples,largestContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstPaintSamples,firstPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintSamples,firstContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintCpuTimeSamples,firstContentfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.onLoadSamples,onLoadHistogram,histograms);addSamplesToHistogram(samplesSet.aboveTheFoldLoadedToVisibleSamples,aboveTheFoldLoadedToVisibleHistogram,histograms);addSamplesToHistogram(samplesSet.firstViewportReadySamples,firstViewportReadyHistogram,histograms);addSamplesToHistogram(samplesSet.largestImagePaintSamples,largestImagePaintHistogram,histograms);addSamplesToHistogram(samplesSet.largestTextPaintSamples,largestTextPaintHistogram,histograms);addSamplesToHistogram(samplesSet.layoutShiftSamples,layoutShiftHistogram,histograms);addSamplesToHistogram(samplesSet.navigationStartSamples,navigationStartHistogram,histograms);}\nconst samplesSet=collectMetricsFromLoadExpectations(model,chromeHelper);addSamplesToHistogram(samplesSet.firstMeaningfulPaintSamples,firstMeaningfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstMeaningfulPaintCpuTimeSamples,firstMeaningfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.interactiveSamples,timeToInteractiveHistogram,histograms);addSamplesToHistogram(samplesSet.firstCpuIdleSamples,timeToFirstCpuIdleHistogram,histograms);addSamplesToHistogram(samplesSet.totalBlockingTimeSamples,totalBlockingTimeHistogram,histograms);}\ntr.metrics.MetricRegistry.register(loadingMetric);return{loadingMetric,createBreakdownDiagnostic};});'use strict';tr.exportTo('tr.metrics',function(){const SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY=tr.v.HistogramBinBoundaries.createExponential(1,1000,50);function spaNavigationMetric(histograms,model){const histogram=new tr.v.Histogram('spaNavigationStartToFpDuration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY);histogram.description='Latency between the input event causing'+' a SPA navigation and the first paint event after it';histogram.customizeSummaryOptions({count:false,sum:false,});const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper){return;}\nconst rendererHelpers=modelHelper.rendererHelpers;if(!rendererHelpers){return;}\nconst browserHelper=modelHelper.browserHelper;for(const rendererHelper of Object.values(rendererHelpers)){const spaNavigations=tr.metrics.findSpaNavigationsOnRenderer(rendererHelper,browserHelper);for(const spaNav of spaNavigations){let beginTs=0;if(spaNav.navStartCandidates.inputLatencyAsyncSlice){const beginData=spaNav.navStartCandidates.inputLatencyAsyncSlice.args.data;beginTs=model.convertTimestampToModelTime('traceEventClock',beginData.INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT.time);}else{beginTs=spaNav.navStartCandidates.goToIndexSlice.start;}\nconst rangeOfInterest=tr.b.math.Range.fromExplicitRange(beginTs,spaNav.firstPaintEvent.start);const networkEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,rangeOfInterest);const breakdownDict=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,rangeOfInterest);const breakdownDiagnostic=new tr.v.d.Breakdown();breakdownDiagnostic.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const label in breakdownDict){breakdownDiagnostic.set(label,parseInt(breakdownDict[label].total*1e3)/1e3);}\nhistogram.addSample(rangeOfInterest.duration,{'Breakdown of [navStart, firstPaint]':breakdownDiagnostic,'Start':new tr.v.d.RelatedEventSet(spaNav.navigationStart),'End':new tr.v.d.RelatedEventSet(spaNav.firstPaintEvent),'Navigation infos':new tr.v.d.GenericSet([{url:spaNav.url,pid:rendererHelper.pid,navStart:beginTs,firstPaint:spaNav.firstPaintEvent.start}]),});}}\nhistograms.addHistogram(histogram);}\ntr.metrics.MetricRegistry.register(spaNavigationMetric);return{spaNavigationMetric,};});'use strict';tr.exportTo('tr.b',function(){function max(a,b){if(a===undefined)return b;if(b===undefined)return a;return Math.max(a,b);}\nfunction IntervalTree(beginPositionCb,endPositionCb){this.beginPositionCb_=beginPositionCb;this.endPositionCb_=endPositionCb;this.root_=undefined;this.size_=0;}\nIntervalTree.prototype={insert(datum){const startPosition=this.beginPositionCb_(datum);const endPosition=this.endPositionCb_(datum);const node=new IntervalTreeNode(datum,startPosition,endPosition);this.size_++;this.root_=this.insertNode_(this.root_,node);this.root_.colour=Colour.BLACK;return datum;},insertNode_(root,node){if(root===undefined)return node;if(root.leftNode&&root.leftNode.isRed&&root.rightNode&&root.rightNode.isRed){this.flipNodeColour_(root);}\nif(node.key<root.key){root.leftNode=this.insertNode_(root.leftNode,node);}else if(node.key===root.key){root.merge(node);}else{root.rightNode=this.insertNode_(root.rightNode,node);}\nif(root.rightNode&&root.rightNode.isRed&&(root.leftNode===undefined||!root.leftNode.isRed)){root=this.rotateLeft_(root);}\nif(root.leftNode&&root.leftNode.isRed&&root.leftNode.leftNode&&root.leftNode.leftNode.isRed){root=this.rotateRight_(root);}\nreturn root;},rotateRight_(node){const sibling=node.leftNode;node.leftNode=sibling.rightNode;sibling.rightNode=node;sibling.colour=node.colour;node.colour=Colour.RED;return sibling;},rotateLeft_(node){const sibling=node.rightNode;node.rightNode=sibling.leftNode;sibling.leftNode=node;sibling.colour=node.colour;node.colour=Colour.RED;return sibling;},flipNodeColour_(node){node.colour=this.flipColour_(node.colour);node.leftNode.colour=this.flipColour_(node.leftNode.colour);node.rightNode.colour=this.flipColour_(node.rightNode.colour);},flipColour_(colour){return colour===Colour.RED?Colour.BLACK:Colour.RED;},updateHighValues(){this.updateHighValues_(this.root_);},updateHighValues_(node){if(node===undefined)return undefined;node.maxHighLeft=this.updateHighValues_(node.leftNode);node.maxHighRight=this.updateHighValues_(node.rightNode);return max(max(node.maxHighLeft,node.highValue),node.maxHighRight);},validateFindArguments_(queryLow,queryHigh){if(queryLow===undefined||queryHigh===undefined){throw new Error('queryLow and queryHigh must be defined');}\nif((typeof queryLow!=='number')||(typeof queryHigh!=='number')){throw new Error('queryLow and queryHigh must be numbers');}},findIntersection(queryLow,queryHigh){this.validateFindArguments_(queryLow,queryHigh);if(this.root_===undefined)return[];const ret=[];this.root_.appendIntersectionsInto_(ret,queryLow,queryHigh);return ret;},get size(){return this.size_;},get root(){return this.root_;},dump_(){if(this.root_===undefined)return[];return this.root_.dump();}};const Colour={RED:'red',BLACK:'black'};function IntervalTreeNode(datum,lowValue,highValue){this.lowValue_=lowValue;this.data_=[{datum,high:highValue,low:lowValue}];this.colour_=Colour.RED;this.parentNode_=undefined;this.leftNode_=undefined;this.rightNode_=undefined;this.maxHighLeft_=undefined;this.maxHighRight_=undefined;}\nIntervalTreeNode.prototype={appendIntersectionsInto_(ret,queryLow,queryHigh){if(this.lowValue_>=queryHigh){if(!this.leftNode_)return;return this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}\nif(this.maxHighLeft_>queryLow){this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}\nif(this.highValue>queryLow){for(let i=(this.data.length-1);i>=0;--i){if(this.data[i].high<queryLow)break;ret.push(this.data[i].datum);}}\nif(this.rightNode_){this.rightNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}},get colour(){return this.colour_;},set colour(colour){this.colour_=colour;},get key(){return this.lowValue_;},get lowValue(){return this.lowValue_;},get highValue(){return this.data_[this.data_.length-1].high;},set leftNode(left){this.leftNode_=left;},get leftNode(){return this.leftNode_;},get hasLeftNode(){return this.leftNode_!==undefined;},set rightNode(right){this.rightNode_=right;},get rightNode(){return this.rightNode_;},get hasRightNode(){return this.rightNode_!==undefined;},set parentNode(parent){this.parentNode_=parent;},get parentNode(){return this.parentNode_;},get isRootNode(){return this.parentNode_===undefined;},set maxHighLeft(high){this.maxHighLeft_=high;},get maxHighLeft(){return this.maxHighLeft_;},set maxHighRight(high){this.maxHighRight_=high;},get maxHighRight(){return this.maxHighRight_;},get data(){return this.data_;},get isRed(){return this.colour_===Colour.RED;},merge(node){for(let i=0;i<node.data.length;i++){this.data_.push(node.data[i]);}\nthis.data_.sort(function(a,b){return a.high-b.high;});},dump(){const ret={};if(this.leftNode_){ret.left=this.leftNode_.dump();}\nret.data=this.data_.map(function(d){return[d.low,d.high];});if(this.rightNode_){ret.right=this.rightNode_.dump();}\nreturn ret;}};return{IntervalTree,};});'use strict';tr.exportTo('tr.b',function(){const Timing=tr.b.Timing;function Task(runCb,thisArg){if(runCb!==undefined&&thisArg===undefined&&runCb.prototype!==undefined){throw new Error('Almost certainly you meant to pass a bound callback '+'or thisArg.');}\nthis.runCb_=runCb;this.thisArg_=thisArg;this.afterTask_=undefined;this.subTasks_=[];this.updatesUi_=false;}\nTask.prototype={get name(){return this.runCb_.name;},set updatesUi(value){this.updatesUi_=value;},subTask(cb,thisArg){if(cb instanceof Task){this.subTasks_.push(cb);}else{this.subTasks_.push(new Task(cb,thisArg));}\nreturn this.subTasks_[this.subTasks_.length-1];},run(){if(this.runCb_!==undefined)this.runCb_.call(this.thisArg_,this);const subTasks=this.subTasks_;this.subTasks_=undefined;if(!subTasks.length)return this.afterTask_;for(let i=1;i<subTasks.length;i++){subTasks[i-1].afterTask_=subTasks[i];}\nsubTasks[subTasks.length-1].afterTask_=this.afterTask_;return subTasks[0];},after(cb,thisArg){if(this.afterTask_){throw new Error('Has an after task already');}\nif(cb instanceof Task){this.afterTask_=cb;}else{this.afterTask_=new Task(cb,thisArg);}\nreturn this.afterTask_;},enqueue(cb,thisArg){if(!this.afterTask_)return this.after(cb,thisArg);return this.afterTask_.enqueue(cb,thisArg);}};Task.RunSynchronously=function(task){let curTask=task;while(curTask){curTask=curTask.run();}};Task.RunWhenIdle=function(task){return new Promise(function(resolve,reject){let curTask=task;function runAnother(){try{curTask=curTask.run();}catch(e){reject(e);return;}\nif(curTask){if(curTask.updatesUi_){tr.b.requestAnimationFrameInThisFrameIfPossible(runAnother);}else{tr.b.requestIdleCallback(runAnother);}\nreturn;}\nresolve();}\ntr.b.requestIdleCallback(runAnother);});};return{Task,};});'use strict';tr.exportTo('tr.model',function(){function Alert(info,start,opt_associatedEvents,opt_args){tr.model.TimedEvent.call(this,start);this.info=info;this.args=opt_args||{};this.associatedEvents=new tr.model.EventSet(opt_associatedEvents);this.associatedEvents.forEach(function(event){event.addAssociatedAlert(this);},this);}\nAlert.prototype={__proto__:tr.model.TimedEvent.prototype,get title(){return this.info.title;},get colorId(){return this.info.colorId;},get userFriendlyName(){return'Alert '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);}};tr.model.EventRegistry.register(Alert,{name:'alert',pluralName:'alerts'});return{Alert,};});'use strict';tr.exportTo('tr.model',function(){const ClockDomainId={BATTOR:'BATTOR',UNKNOWN_CHROME_LEGACY:'UNKNOWN_CHROME_LEGACY',LINUX_CLOCK_MONOTONIC:'LINUX_CLOCK_MONOTONIC',LINUX_FTRACE_GLOBAL:'LINUX_FTRACE_GLOBAL',MAC_MACH_ABSOLUTE_TIME:'MAC_MACH_ABSOLUTE_TIME',WIN_ROLLOVER_PROTECTED_TIME_GET_TIME:'WIN_ROLLOVER_PROTECTED_TIME_GET_TIME',WIN_QPC:'WIN_QPC',SYSTRACE:'SYSTRACE',TELEMETRY:'TELEMETRY'};const POSSIBLE_CHROME_CLOCK_DOMAINS=new Set([ClockDomainId.UNKNOWN_CHROME_LEGACY,ClockDomainId.LINUX_CLOCK_MONOTONIC,ClockDomainId.MAC_MACH_ABSOLUTE_TIME,ClockDomainId.WIN_ROLLOVER_PROTECTED_TIME_GET_TIME,ClockDomainId.WIN_QPC]);const BATTOR_FAST_SYNC_THRESHOLD_MS=3;function ClockSyncManager(){this.domainsSeen_=new Set();this.markersBySyncId_=new Map();this.transformerMapByDomainId_={};}\nClockSyncManager.prototype={addClockSyncMarker(domainId,syncId,startTs,opt_endTs){this.onDomainSeen_(domainId);if(Object.values(ClockDomainId).indexOf(domainId)<0){throw new Error('\"'+domainId+'\" is not in the list of known '+'clock domain IDs.');}\nif(this.modelDomainId_){throw new Error('Cannot add new clock sync markers after getting '+'a model time transformer.');}\nconst marker=new ClockSyncMarker(domainId,startTs,opt_endTs);if(!this.markersBySyncId_.has(syncId)){this.markersBySyncId_.set(syncId,[marker]);return;}\nconst markers=this.markersBySyncId_.get(syncId);if(markers.length===2){throw new Error('Clock sync with ID \"'+syncId+'\" is already '+'complete - cannot add a third clock sync marker to it.');}\nif(markers[0].domainId===domainId){throw new Error('A clock domain cannot sync with itself.');}\nmarkers.push(marker);this.onSyncCompleted_(markers[0],marker);},get completeSyncIds(){const completeSyncIds=[];for(const[syncId,markers]of this.markersBySyncId){if(markers.length===2)completeSyncIds.push(syncId);}\nreturn completeSyncIds;},get markersBySyncId(){return this.markersBySyncId_;},get domainsSeen(){return this.domainsSeen_;},getModelTimeTransformer(domainId){this.onDomainSeen_(domainId);if(!this.modelDomainId_){this.selectModelDomainId_();}\nreturn this.getTimeTransformerRaw_(domainId,this.modelDomainId_).fn;},getTimeTransformerError(fromDomainId,toDomainId){this.onDomainSeen_(fromDomainId);this.onDomainSeen_(toDomainId);return this.getTimeTransformerRaw_(fromDomainId,toDomainId).error;},getTimeTransformerRaw_(fromDomainId,toDomainId){const transformer=this.getTransformerBetween_(fromDomainId,toDomainId);if(!transformer){throw new Error('No clock sync markers exist pairing clock domain \"'+\nfromDomainId+'\" '+'with target clock domain \"'+\ntoDomainId+'\".');}\nreturn transformer;},getTransformerBetween_(fromDomainId,toDomainId){const visitedDomainIds=new Set();const queue=[{domainId:fromDomainId,transformer:Transformer.IDENTITY}];while(queue.length>0){queue.sort((domain1,domain2)=>domain1.transformer.error-domain2.transformer.error);const current=queue.shift();if(current.domainId===toDomainId){return current.transformer;}\nif(visitedDomainIds.has(current.domainId)){continue;}\nvisitedDomainIds.add(current.domainId);const outgoingTransformers=this.transformerMapByDomainId_[current.domainId];if(!outgoingTransformers)continue;for(const outgoingDomainId in outgoingTransformers){const toNextDomainTransformer=outgoingTransformers[outgoingDomainId];const toCurrentDomainTransformer=current.transformer;queue.push({domainId:outgoingDomainId,transformer:Transformer.compose(toNextDomainTransformer,toCurrentDomainTransformer)});}}\nreturn undefined;},selectModelDomainId_(){this.ensureAllDomainsAreConnected_();for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(this.domainsSeen_.has(chromeDomainId)){this.modelDomainId_=chromeDomainId;return;}}\nconst domainsSeenArray=Array.from(this.domainsSeen_);domainsSeenArray.sort();this.modelDomainId_=domainsSeenArray[0];},ensureAllDomainsAreConnected_(){let firstDomainId=undefined;for(const domainId of this.domainsSeen_){if(!firstDomainId){firstDomainId=domainId;continue;}\nif(!this.getTransformerBetween_(firstDomainId,domainId)){throw new Error('Unable to select a master clock domain because no '+'path can be found from \"'+firstDomainId+'\" to \"'+domainId+'\".');}}\nreturn true;},onDomainSeen_(domainId){if(domainId===ClockDomainId.UNKNOWN_CHROME_LEGACY&&!this.domainsSeen_.has(ClockDomainId.UNKNOWN_CHROME_LEGACY)){for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(chromeDomainId===ClockDomainId.UNKNOWN_CHROME_LEGACY){continue;}\nthis.collapseDomains_(ClockDomainId.UNKNOWN_CHROME_LEGACY,chromeDomainId);}}\nthis.domainsSeen_.add(domainId);},onSyncCompleted_(marker1,marker2){const forwardTransformer=Transformer.fromMarkers(marker1,marker2);const backwardTransformer=Transformer.fromMarkers(marker2,marker1);const existingTransformer=this.getOrCreateTransformerMap_(marker1.domainId)[marker2.domainId];if(!existingTransformer||forwardTransformer.error<existingTransformer.error){this.getOrCreateTransformerMap_(marker1.domainId)[marker2.domainId]=forwardTransformer;this.getOrCreateTransformerMap_(marker2.domainId)[marker1.domainId]=backwardTransformer;}},collapseDomains_(domain1Id,domain2Id){this.getOrCreateTransformerMap_(domain1Id)[domain2Id]=this.getOrCreateTransformerMap_(domain2Id)[domain1Id]=Transformer.IDENTITY;},getOrCreateTransformerMap_(domainId){if(!this.transformerMapByDomainId_[domainId]){this.transformerMapByDomainId_[domainId]={};}\nreturn this.transformerMapByDomainId_[domainId];},computeDotGraph(){let dotString='graph {\\n';const domainsSeen=[...this.domainsSeen_].sort();for(const domainId of domainsSeen){dotString+=`  ${domainId}[shape=box]\\n`;}\nconst markersBySyncIdEntries=[...this.markersBySyncId_.entries()].sort(([syncId1,markers1],[syncId2,markers2])=>syncId1.localeCompare(syncId2));for(const[syncId,markers]of markersBySyncIdEntries){const sortedMarkers=markers.sort((a,b)=>a.domainId.localeCompare(b.domainId));for(const m of markers){dotString+=`  \"${syncId}\" -- ${m.domainId} `;dotString+=`[label=\"[${m.startTs}, ${m.endTs}]\"]\\n`;}}\ndotString+='}';return dotString;}};function ClockSyncMarker(domainId,startTs,opt_endTs){this.domainId=domainId;this.startTs=startTs;this.endTs=opt_endTs===undefined?startTs:opt_endTs;}\nClockSyncMarker.prototype={get duration(){return this.endTs-this.startTs;},get ts(){return this.startTs+this.duration/2;}};function Transformer(fn,error){this.fn=fn;this.error=error;}\nTransformer.IDENTITY=new Transformer((x=>x),0);Transformer.compose=function(aToB,bToC){return new Transformer((ts)=>bToC.fn(aToB.fn(ts)),aToB.error+bToC.error);};Transformer.fromMarkers=function(fromMarker,toMarker){let fromTs=fromMarker.ts;let toTs=toMarker.ts;if(fromMarker.domainId===ClockDomainId.BATTOR&&toMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){toTs=toMarker.startTs;}else if(toMarker.domainId===ClockDomainId.BATTOR&&fromMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){fromTs=fromMarker.startTs;}\nconst tsShift=toTs-fromTs;return new Transformer((ts)=>ts+tsShift,fromMarker.duration+toMarker.duration);};return{ClockDomainId,ClockSyncManager,};});'use strict';tr.exportTo('tr.model',function(){return{BROWSER_PROCESS_PID_REF:-1,OBJECT_DEFAULT_SCOPE:'ptr',LOCAL_ID_PHASES:new Set(['N','D','O','(',')'])};});'use strict';tr.exportTo('tr.model',function(){function CounterSample(series,timestamp,value){tr.model.Event.call(this);this.series_=series;this.timestamp_=timestamp;this.value_=value;}\nCounterSample.groupByTimestamp=function(samples){const samplesByTimestamp=tr.b.groupIntoMap(samples,s=>s.timestamp);const timestamps=Array.from(samplesByTimestamp.keys());timestamps.sort();const groups=[];for(const ts of timestamps){const group=samplesByTimestamp.get(ts);group.sort((x,y)=>x.series.seriesIndex-y.series.seriesIndex);groups.push(group);}\nreturn groups;};CounterSample.prototype={__proto__:tr.model.Event.prototype,get series(){return this.series_;},get timestamp(){return this.timestamp_;},get value(){return this.value_;},set timestamp(timestamp){this.timestamp_=timestamp;},addBoundsToRange(range){range.addValue(this.timestamp);},getSampleIndex(){return tr.b.findLowIndexInSortedArray(this.series.timestamps,function(x){return x;},this.timestamp_);},get userFriendlyName(){return'Counter sample from '+this.series_.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.timestamp);}};tr.model.EventRegistry.register(CounterSample,{name:'counterSample',pluralName:'counterSamples'});return{CounterSample,};});'use strict';tr.exportTo('tr.model',function(){function EventContainer(){this.guid_=tr.b.GUID.allocateSimple();this.important=true;this.bounds_=new tr.b.math.Range();}\nEventContainer.prototype={get guid(){return this.guid_;},get stableId(){throw new Error('Not implemented');},get bounds(){return this.bounds_;},updateBounds(){throw new Error('Not implemented');},shiftTimestampsForward(amount){throw new Error('Not implemented');},*childEvents(){},*getDescendantEvents(){yield*this.childEvents();for(const container of this.childEventContainers()){yield*container.getDescendantEvents();}},*childEventContainers(){},*getDescendantEventContainers(){yield this;for(const container of this.childEventContainers()){yield*container.getDescendantEventContainers();}},*getDescendantEventsInSortedRanges(ranges,opt_containerPredicate){if(opt_containerPredicate===undefined||opt_containerPredicate(this)){for(const event of this.childEvents()){const i=tr.b.findFirstTrueIndexInSortedArray(ranges,range=>event.start<=range.max);if(i<ranges.length&&event.end>=ranges[i].min)yield event;}}\nfor(const container of this.childEventContainers()){yield*container.getDescendantEventsInSortedRanges(ranges,opt_containerPredicate);}},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){},*findTopmostSlices(eventPredicate){for(const ec of this.getDescendantEventContainers()){yield*ec.findTopmostSlicesInThisContainer(eventPredicate);}},*findTopmostSlicesNamed(name){yield*this.findTopmostSlices(e=>e.title===name);}};return{EventContainer,};});'use strict';tr.exportTo('tr.model',function(){const CounterSample=tr.model.CounterSample;function CounterSeries(name,color){tr.model.EventContainer.call(this);this.name_=name;this.color_=color;this.timestamps_=[];this.samples_=[];this.counter=undefined;this.seriesIndex=undefined;}\nCounterSeries.prototype={__proto__:tr.model.EventContainer.prototype,get length(){return this.timestamps_.length;},get name(){return this.name_;},get color(){return this.color_;},get samples(){return this.samples_;},get timestamps(){return this.timestamps_;},getSample(idx){return this.samples_[idx];},getTimestamp(idx){return this.timestamps_[idx];},addCounterSample(ts,val){const sample=new CounterSample(this,ts,val);this.addSample(sample);return sample;},addSample(sample){this.timestamps_.push(sample.timestamp);this.samples_.push(sample);},getStatistics(sampleIndices){let sum=0;let min=Number.MAX_VALUE;let max=-Number.MAX_VALUE;for(let i=0;i<sampleIndices.length;++i){const sample=this.getSample(sampleIndices[i]).value;sum+=sample;min=Math.min(sample,min);max=Math.max(sample,max);}\nreturn{min,max,avg:(sum/sampleIndices.length),start:this.getSample(sampleIndices[0]).value,end:this.getSample(sampleIndices.length-1).value};},shiftTimestampsForward(amount){for(let i=0;i<this.timestamps_.length;++i){this.timestamps_[i]+=amount;this.samples_[i].timestamp=this.timestamps_[i];}},*childEvents(){yield*this.samples_;},*childEventContainers(){}};return{CounterSeries,};});'use strict';tr.exportTo('tr.model',function(){function Counter(parent,id,category,name){tr.model.EventContainer.call(this);this.parent_=parent;this.id_=id;this.category_=category||'';this.name_=name;this.series_=[];this.totals=[];}\nCounter.prototype={__proto__:tr.model.EventContainer.prototype,get parent(){return this.parent_;},get id(){return this.id_;},get category(){return this.category_;},get name(){return this.name_;},*childEvents(){},*childEventContainers(){yield*this.series;},set timestamps(arg){throw new Error('Bad counter API. No cookie.');},set seriesNames(arg){throw new Error('Bad counter API. No cookie.');},set seriesColors(arg){throw new Error('Bad counter API. No cookie.');},set samples(arg){throw new Error('Bad counter API. No cookie.');},addSeries(series){series.counter=this;series.seriesIndex=this.series_.length;this.series_.push(series);return series;},getSeries(idx){return this.series_[idx];},get series(){return this.series_;},get numSeries(){return this.series_.length;},get numSamples(){if(this.series_.length===0)return 0;return this.series_[0].length;},get timestamps(){if(this.series_.length===0)return[];return this.series_[0].timestamps;},getSampleStatistics(sampleIndices){sampleIndices.sort();const ret=[];this.series_.forEach(function(series){ret.push(series.getStatistics(sampleIndices));});return ret;},shiftTimestampsForward(amount){for(let i=0;i<this.series_.length;++i){this.series_[i].shiftTimestampsForward(amount);}},updateBounds(){this.totals=[];this.maxTotal=0;this.bounds.reset();if(this.series_.length===0)return;const firstSeries=this.series_[0];const lastSeries=this.series_[this.series_.length-1];this.bounds.addValue(firstSeries.getTimestamp(0));this.bounds.addValue(lastSeries.getTimestamp(lastSeries.length-1));const numSeries=this.numSeries;this.maxTotal=-Infinity;for(let i=0;i<firstSeries.length;++i){let total=0;this.series_.forEach(function(series){total+=series.getSample(i).value;this.totals.push(total);}.bind(this));this.maxTotal=Math.max(total,this.maxTotal);}}};Counter.compare=function(x,y){let tmp=x.parent.compareTo(y.parent);if(tmp!==0)return tmp;tmp=x.name.localeCompare(y.name);if(tmp===0)return x.tid-y.tid;return tmp;};return{Counter,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;const SCHEDULING_STATE={DEBUG:'Debug',EXIT_DEAD:'Exit Dead',RUNNABLE:'Runnable',RUNNING:'Running',SLEEPING:'Sleeping',STOPPED:'Stopped',TASK_DEAD:'Task Dead',UNINTR_SLEEP:'Uninterruptible Sleep',UNINTR_SLEEP_WAKE_KILL:'Uninterruptible Sleep | WakeKill',UNINTR_SLEEP_WAKING:'Uninterruptible Sleep | Waking',UNINTR_SLEEP_IO:'Uninterruptible Sleep - Block I/O',UNINTR_SLEEP_WAKE_KILL_IO:'Uninterruptible Sleep | WakeKill - Block I/O',UNINTR_SLEEP_WAKING_IO:'Uninterruptible Sleep | Waking - Block I/O',UNKNOWN:'UNKNOWN',WAKE_KILL:'Wakekill',WAKING:'Waking',ZOMBIE:'Zombie'};function ThreadTimeSlice(thread,schedulingState,cat,start,args,opt_duration){Slice.call(this,cat,schedulingState,this.getColorForState_(schedulingState),start,args,opt_duration);this.thread=thread;this.schedulingState=schedulingState;this.cpuOnWhichThreadWasRunning=undefined;}\nThreadTimeSlice.prototype={__proto__:Slice.prototype,getColorForState_(state){const getColorIdForReservedName=tr.b.ColorScheme.getColorIdForReservedName;switch(state){case SCHEDULING_STATE.RUNNABLE:return getColorIdForReservedName('thread_state_runnable');case SCHEDULING_STATE.RUNNING:return getColorIdForReservedName('thread_state_running');case SCHEDULING_STATE.SLEEPING:return getColorIdForReservedName('thread_state_sleeping');case SCHEDULING_STATE.DEBUG:case SCHEDULING_STATE.EXIT_DEAD:case SCHEDULING_STATE.STOPPED:case SCHEDULING_STATE.TASK_DEAD:case SCHEDULING_STATE.UNINTR_SLEEP:case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL:case SCHEDULING_STATE.UNINTR_SLEEP_WAKING:case SCHEDULING_STATE.UNKNOWN:case SCHEDULING_STATE.WAKE_KILL:case SCHEDULING_STATE.WAKING:case SCHEDULING_STATE.ZOMBIE:return getColorIdForReservedName('thread_state_uninterruptible');case SCHEDULING_STATE.UNINTR_SLEEP_IO:case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO:case SCHEDULING_STATE.UNINTR_SLEEP_WAKING_IO:return getColorIdForReservedName('thread_state_iowait');default:return getColorIdForReservedName('thread_state_unknown');}},get analysisTypeName(){return'tr.ui.analysis.ThreadTimeSlice';},getAssociatedCpuSlice(){if(!this.cpuOnWhichThreadWasRunning)return undefined;const cpuSlices=this.cpuOnWhichThreadWasRunning.slices;for(let i=0;i<cpuSlices.length;i++){const cpuSlice=cpuSlices[i];if(cpuSlice.start!==this.start)continue;if(cpuSlice.duration!==this.duration)continue;return cpuSlice;}\nreturn undefined;},getCpuSliceThatTookCpu(){if(this.cpuOnWhichThreadWasRunning)return undefined;let curIndex=this.thread.indexOfTimeSlice(this);let cpuSliceWhenLastRunning;while(curIndex>=0){const curSlice=this.thread.timeSlices[curIndex];if(!curSlice.cpuOnWhichThreadWasRunning){curIndex--;continue;}\ncpuSliceWhenLastRunning=curSlice.getAssociatedCpuSlice();break;}\nif(!cpuSliceWhenLastRunning)return undefined;const cpu=cpuSliceWhenLastRunning.cpu;const indexOfSliceOnCpuWhenLastRunning=cpu.indexOf(cpuSliceWhenLastRunning);const nextRunningSlice=cpu.slices[indexOfSliceOnCpuWhenLastRunning+1];if(!nextRunningSlice)return undefined;if(Math.abs(nextRunningSlice.start-cpuSliceWhenLastRunning.end)<0.00001){return nextRunningSlice;}\nreturn undefined;}};tr.model.EventRegistry.register(ThreadTimeSlice,{name:'threadTimeSlice',pluralName:'threadTimeSlices'});return{ThreadTimeSlice,SCHEDULING_STATE,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function CpuSlice(cat,title,colorId,start,args,opt_duration){Slice.apply(this,arguments);this.threadThatWasRunning=undefined;this.cpu=undefined;}\nCpuSlice.prototype={__proto__:Slice.prototype,get analysisTypeName(){return'tr.ui.analysis.CpuSlice';},getAssociatedTimeslice(){if(!this.threadThatWasRunning){return undefined;}\nconst timeSlices=this.threadThatWasRunning.timeSlices;for(let i=0;i<timeSlices.length;i++){const timeSlice=timeSlices[i];if(timeSlice.start!==this.start){continue;}\nif(timeSlice.duration!==this.duration){continue;}\nreturn timeSlice;}\nreturn undefined;}};tr.model.EventRegistry.register(CpuSlice,{name:'cpuSlice',pluralName:'cpuSlices'});return{CpuSlice,};});'use strict';tr.exportTo('tr.model',function(){function TimeToObjectInstanceMap(createObjectInstanceFunction,parent,scopedId){this.createObjectInstanceFunction_=createObjectInstanceFunction;this.parent=parent;this.scopedId=scopedId;this.instances=[];}\nTimeToObjectInstanceMap.prototype={idWasCreated(category,name,ts){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts));this.instances[0].creationTsWasExplicit=true;return this.instances[0];}\nlet lastInstance=this.instances[this.instances.length-1];if(ts<lastInstance.deletionTs){throw new Error('Mutation of the TimeToObjectInstanceMap must be '+'done in ascending timestamp order.');}\nlastInstance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts);lastInstance.creationTsWasExplicit=true;this.instances.push(lastInstance);return lastInstance;},addSnapshot(category,name,ts,args,opt_baseTypeName){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts,opt_baseTypeName));}\nconst i=tr.b.findIndexInSortedIntervals(this.instances,function(inst){return inst.creationTs;},function(inst){return inst.deletionTs-inst.creationTs;},ts);let instance;if(i<0){instance=this.instances[0];if(ts>instance.deletionTs||instance.creationTsWasExplicit){throw new Error('At the provided timestamp, no instance was still alive');}\nif(instance.snapshots.length!==0){throw new Error('Cannot shift creationTs forward, '+'snapshots have been added. First snap was at ts='+\ninstance.snapshots[0].ts+' and creationTs was '+\ninstance.creationTs);}\ninstance.creationTs=ts;}else if(i>=this.instances.length){instance=this.instances[this.instances.length-1];if(ts>=instance.deletionTs){instance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts,opt_baseTypeName);this.instances.push(instance);}else{let lastValidIndex;for(let i=this.instances.length-1;i>=0;i--){const tmp=this.instances[i];if(ts>=tmp.deletionTs)break;if(tmp.creationTsWasExplicit===false&&tmp.snapshots.length===0){lastValidIndex=i;}}\nif(lastValidIndex===undefined){throw new Error('Cannot add snapshot. No instance was alive that was mutable.');}\ninstance=this.instances[lastValidIndex];instance.creationTs=ts;}}else{instance=this.instances[i];}\nreturn instance.addSnapshot(ts,args,name,opt_baseTypeName);},get lastInstance(){if(this.instances.length===0)return undefined;return this.instances[this.instances.length-1];},idWasDeleted(category,name,ts){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts));}\nlet lastInstance=this.instances[this.instances.length-1];if(ts<lastInstance.creationTs){throw new Error('Cannot delete an id before it was created');}\nif(lastInstance.deletionTs===Number.MAX_VALUE){lastInstance.wasDeleted(ts);return lastInstance;}\nif(ts<lastInstance.deletionTs){throw new Error('id was already deleted earlier.');}\nlastInstance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts);this.instances.push(lastInstance);lastInstance.wasDeleted(ts);return lastInstance;},getInstanceAt(ts){const i=tr.b.findIndexInSortedIntervals(this.instances,function(inst){return inst.creationTs;},function(inst){return inst.deletionTs-inst.creationTs;},ts);if(i<0){if(this.instances[0].creationTsWasExplicit){return undefined;}\nreturn this.instances[0];}else if(i>=this.instances.length){return undefined;}\nreturn this.instances[i];}};return{TimeToObjectInstanceMap,};});'use strict';tr.exportTo('tr.model',function(){const ObjectInstance=tr.model.ObjectInstance;const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectCollection(parent){tr.model.EventContainer.call(this);this.parent=parent;this.instanceMapsByScopedId_={};this.instancesByTypeName_={};this.createObjectInstance_=this.createObjectInstance_.bind(this);}\nObjectCollection.prototype={__proto__:tr.model.EventContainer.prototype,*childEvents(){for(const instance of this.getAllObjectInstances()){yield instance;yield*instance.snapshots;}},createObjectInstance_(parent,scopedId,category,name,creationTs,opt_baseTypeName){const constructor=tr.model.ObjectInstance.subTypes.getConstructor(category,name);const instance=new constructor(parent,scopedId,category,name,creationTs,opt_baseTypeName);const typeName=instance.typeName;let instancesOfTypeName=this.instancesByTypeName_[typeName];if(!instancesOfTypeName){instancesOfTypeName=[];this.instancesByTypeName_[typeName]=instancesOfTypeName;}\ninstancesOfTypeName.push(instance);return instance;},getOrCreateInstanceMap_(scopedId){let dict;if(scopedId.scope in this.instanceMapsByScopedId_){dict=this.instanceMapsByScopedId_[scopedId.scope];}else{dict={};this.instanceMapsByScopedId_[scopedId.scope]=dict;}\nlet instanceMap=dict[scopedId.id];if(instanceMap)return instanceMap;instanceMap=new tr.model.TimeToObjectInstanceMap(this.createObjectInstance_,this.parent,scopedId);dict[scopedId.id]=instanceMap;return instanceMap;},idWasCreated(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);return instanceMap.idWasCreated(category,name,ts);},addSnapshot(scopedId,category,name,ts,args,opt_baseTypeName){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const snapshot=instanceMap.addSnapshot(category,name,ts,args,opt_baseTypeName);if(snapshot.objectInstance.category!==category){const msg='Added snapshot name='+name+' with cat='+category+' impossible. It instance was created/snapshotted with cat='+\nsnapshot.objectInstance.category+' name='+\nsnapshot.objectInstance.name;throw new Error(msg);}\nif(opt_baseTypeName&&snapshot.objectInstance.baseTypeName!==opt_baseTypeName){throw new Error('Could not add snapshot with baseTypeName='+\nopt_baseTypeName+'. It '+'was previously created with name='+\nsnapshot.objectInstance.baseTypeName);}\nif(snapshot.objectInstance.name!==name){throw new Error('Could not add snapshot with name='+name+'. It '+'was previously created with name='+\nsnapshot.objectInstance.name);}\nreturn snapshot;},idWasDeleted(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const deletedInstance=instanceMap.idWasDeleted(category,name,ts);if(!deletedInstance)return;if(deletedInstance.category!==category){const msg='Deleting object '+deletedInstance.name+' with a different category '+'than when it was created. It previous had cat='+\ndeletedInstance.category+' but the delete command '+'had cat='+category;throw new Error(msg);}\nif(deletedInstance.baseTypeName!==name){throw new Error('Deletion requested for name='+\nname+' could not proceed: '+'An existing object with baseTypeName='+\ndeletedInstance.baseTypeName+' existed.');}},autoDeleteObjects(maxTimestamp){for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){const lastInstance=i2imap.lastInstance;if(lastInstance.deletionTs!==Number.MAX_VALUE)continue;i2imap.idWasDeleted(lastInstance.category,lastInstance.name,maxTimestamp);lastInstance.deletionTsWasExplicit=false;}}},getObjectInstanceAt(scopedId,ts){let instanceMap;if(scopedId.scope in this.instanceMapsByScopedId_){instanceMap=this.instanceMapsByScopedId_[scopedId.scope][scopedId.id];}\nif(!instanceMap)return undefined;return instanceMap.getInstanceAt(ts);},getSnapshotAt(scopedId,ts){const instance=this.getObjectInstanceAt(scopedId,ts);if(!instance)return undefined;return instance.getSnapshotAt(ts);},iterObjectInstances(iter,opt_this){opt_this=opt_this||this;for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){i2imap.instances.forEach(iter,opt_this);}}},getAllObjectInstances(){const instances=[];this.iterObjectInstances(function(i){instances.push(i);});return instances;},getAllInstancesNamed(name){return this.instancesByTypeName_[name];},getAllInstancesByTypeName(){return this.instancesByTypeName_;},preInitializeAllObjects(){this.iterObjectInstances(function(instance){instance.preInitialize();});},initializeAllObjects(){this.iterObjectInstances(function(instance){instance.initialize();});},initializeInstances(){this.iterObjectInstances(function(instance){instance.initialize();});},updateBounds(){this.bounds.reset();this.iterObjectInstances(function(instance){instance.updateBounds();this.bounds.addRange(instance.bounds);},this);},shiftTimestampsForward(amount){this.iterObjectInstances(function(instance){instance.shiftTimestampsForward(amount);});},addCategoriesToDict(categoriesDict){this.iterObjectInstances(function(instance){categoriesDict[instance.category]=true;});}};return{ObjectCollection,};});'use strict';tr.exportTo('tr.model',function(){class AsyncSliceGroup extends tr.model.EventContainer{constructor(parentContainer,opt_name){super();this.parentContainer_=parentContainer;this.name_=opt_name;this.slices=[];this.viewSubGroups_=undefined;this.nestedLevel_=0;this.hasNestedSubGroups_=true;this.title_=undefined;}\nget parentContainer(){return this.parentContainer_;}\nget model(){return this.parentContainer_.parent.model;}\nget stableId(){return this.parentContainer_.stableId+'.AsyncSliceGroup';}\nget title(){if(this.nested_level_===0){return'<root>';}\nreturn this.title_;}\ngetSettingsKey(){if(this.name_===undefined){return undefined;}\nconst parentKey=this.parentContainer_.getSettingsKey();if(parentKey===undefined){return undefined;}\nreturn parentKey+'.'+this.name_;}\npush(slice){if(this.viewSubGroups_!==undefined){throw new Error('No new slices are allowed when view sub-groups already formed.');}\nslice.parentContainer=this.parentContainer;this.slices.push(slice);return slice;}\nget length(){return this.slices.length;}\nshiftTimestampsForward(amount){for(const slice of this.childEvents()){slice.start+=amount;}}\nupdateBounds(){this.bounds.reset();for(let i=0;i<this.slices.length;i++){this.bounds.addValue(this.slices[i].start);this.bounds.addValue(this.slices[i].end);}}\nautoCloseOpenSlices(){const maxTimestamp=this.parentContainer_.parent.model.bounds.max;for(const slice of this.childEvents()){if(slice.didNotFinish){slice.duration=maxTimestamp-slice.start;}}}\nget viewSubGroups(){if(!this.hasNestedSubGroups_||this.nestedLevel_===2){return[];}\nif(this.viewSubGroups_!==undefined){return this.viewSubGroups_;}\nconst subGroupsByTitle=new Map();for(const slice of this.slices){let subGroupTitle=slice.viewSubGroupTitle;let hasNestedSubGroups=false;if(this.nestedLevel_===0&&slice.viewSubGroupGroupingKey!==undefined){subGroupTitle=slice.viewSubGroupGroupingKey;hasNestedSubGroups=true;}\nlet subGroup=subGroupsByTitle.get(subGroupTitle);if(subGroup===undefined){let name;if(this.name_!==undefined){name=this.name_+'.'+subGroupTitle;}else{name=subGroupTitle;}\nsubGroup=new AsyncSliceGroup(this.parentContainer_,name);subGroup.title_=subGroupTitle;subGroup.hasNestedSubGroups_=hasNestedSubGroups;subGroup.nestedLevel_=this.nestedLevel_+1;subGroupsByTitle.set(subGroupTitle,subGroup);}\nsubGroup.push(slice);}\nthis.viewSubGroups_=Array.from(subGroupsByTitle.values());this.viewSubGroups_.sort((a,b)=>a.title.localeCompare(b.title));return this.viewSubGroups_;}*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const slice of this.slices){if(slice.isTopLevel){yield*slice.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}}}*childEvents(){for(const slice of this.slices){yield slice;yield*slice.enumerateAllDescendents();}}*childEventContainers(){}}\nreturn{AsyncSliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const ThreadSlice=tr.model.ThreadSlice;function getSliceLo(s){return s.start;}\nfunction getSliceHi(s){return s.end;}\nfunction SliceGroup(parentContainer,opt_sliceConstructor,opt_name){tr.model.EventContainer.call(this);this.parentContainer_=parentContainer;const sliceConstructor=opt_sliceConstructor||ThreadSlice;this.sliceConstructor=sliceConstructor;this.sliceConstructorSubTypes=this.sliceConstructor.subTypes;if(!this.sliceConstructorSubTypes){throw new Error('opt_sliceConstructor must have a subtype registry.');}\nthis.openPartialSlices_=[];this.slices=[];this.topLevelSlices=[];this.haveTopLevelSlicesBeenBuilt=false;this.name_=opt_name;if(this.model===undefined){throw new Error('SliceGroup must have model defined.');}}\nSliceGroup.prototype={__proto__:tr.model.EventContainer.prototype,get parentContainer(){return this.parentContainer_;},get model(){return this.parentContainer_.model;},get stableId(){return this.parentContainer_.stableId+'.SliceGroup';},getSettingsKey(){if(!this.name_)return undefined;const parentKey=this.parentContainer_.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},get length(){return this.slices.length;},pushSlice(slice){this.haveTopLevelSlicesBeenBuilt=false;slice.parentContainer=this.parentContainer_;this.slices.push(slice);return slice;},pushSlices(slices){this.haveTopLevelSlicesBeenBuilt=false;slices.forEach(function(slice){slice.parentContainer=this.parentContainer_;this.slices.push(slice);},this);},beginSlice(category,title,ts,opt_args,opt_tts,opt_argsStripped,opt_colorId,opt_bindId){const colorId=opt_colorId||ColorScheme.getColorIdForGeneralPurposeString(title);const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(category,title);const slice=new sliceType(category,title,colorId,ts,opt_args?opt_args:{},null,opt_tts,undefined,opt_argsStripped,opt_bindId);this.openPartialSlices_.push(slice);slice.didNotFinish=true;this.pushSlice(slice);return slice;},isTimestampValidForBeginOrEnd(ts){if(!this.openPartialSlices_.length)return true;const top=this.openPartialSlices_[this.openPartialSlices_.length-1];return ts>=top.start;},get openSliceCount(){return this.openPartialSlices_.length;},get mostRecentlyOpenedPartialSlice(){if(!this.openPartialSlices_.length)return undefined;return this.openPartialSlices_[this.openPartialSlices_.length-1];},endSlice(ts,opt_tts,opt_colorId){if(!this.openSliceCount){throw new Error('endSlice called without an open slice');}\nconst slice=this.openPartialSlices_[this.openSliceCount-1];this.openPartialSlices_.splice(this.openSliceCount-1,1);if(ts<slice.start){throw new Error('Slice '+slice.title+' end time is before its start.');}\nslice.duration=ts-slice.start;slice.didNotFinish=false;slice.colorId=opt_colorId||slice.colorId;if(opt_tts&&slice.cpuStart!==undefined){slice.cpuDuration=opt_tts-slice.cpuStart;}\nreturn slice;},pushCompleteSlice(category,title,ts,duration,tts,cpuDuration,opt_args,opt_argsStripped,opt_colorId,opt_bindId){const colorId=opt_colorId||ColorScheme.getColorIdForGeneralPurposeString(title);const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(category,title);const slice=new sliceType(category,title,colorId,ts,opt_args?opt_args:{},duration,tts,cpuDuration,opt_argsStripped,opt_bindId);if(duration===undefined){slice.didNotFinish=true;}\nthis.pushSlice(slice);return slice;},autoCloseOpenSlices(){this.updateBounds();const maxTimestamp=this.bounds.max;for(let sI=0;sI<this.slices.length;sI++){const slice=this.slices[sI];if(slice.didNotFinish){slice.duration=maxTimestamp-slice.start;}}\nthis.openPartialSlices_=[];},shiftTimestampsForward(amount){for(let sI=0;sI<this.slices.length;sI++){const slice=this.slices[sI];slice.start=(slice.start+amount);}},updateBounds(){this.bounds.reset();for(let i=0;i<this.slices.length;i++){this.bounds.addValue(this.slices[i].start);this.bounds.addValue(this.slices[i].end);}},copySlice(slice){const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(slice.category,slice.title);const newSlice=new sliceType(slice.category,slice.title,slice.colorId,slice.start,slice.args,slice.duration,slice.cpuStart,slice.cpuDuration);newSlice.didNotFinish=slice.didNotFinish;return newSlice;},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){if(!this.haveTopLevelSlicesBeenBuilt){throw new Error('Nope');}\nfor(const s of this.topLevelSlices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate);}},*childEvents(){yield*this.slices;},*childEventContainers(){},*getDescendantEventsInSortedRanges(ranges,opt_containerPredicate){if(ranges.length===0||(opt_containerPredicate!==undefined&&!opt_containerPredicate(this))){return;}\nlet rangeIndex=0;let range=ranges[rangeIndex];for(const event of this.childEvents()){while(event.start>range.max){rangeIndex++;if(rangeIndex>=ranges.length)return;range=ranges[rangeIndex];}\nif(event.end>=range.min)yield event;}},getSlicesOfName(title){const slices=[];for(let i=0;i<this.slices.length;i++){if(this.slices[i].title===title){slices.push(this.slices[i]);}}\nreturn slices;},iterSlicesInTimeRange(callback,start,end){const ret=[];tr.b.iterateOverIntersectingIntervals(this.topLevelSlices,function(s){return s.start;},function(s){return s.duration;},start,end,function(topLevelSlice){callback(topLevelSlice);for(const slice of topLevelSlice.enumerateAllDescendents()){callback(slice);}});return ret;},findFirstSlice(){if(!this.haveTopLevelSlicesBeenBuilt){throw new Error('Nope');}\nif(0===this.slices.length)return undefined;return this.slices[0];},findSliceAtTs(ts){if(!this.haveTopLevelSlicesBeenBuilt)throw new Error('Nope');let i=tr.b.findIndexInSortedClosedIntervals(this.topLevelSlices,getSliceLo,getSliceHi,ts);if(i===-1||i===this.topLevelSlices.length){return undefined;}\nlet curSlice=this.topLevelSlices[i];while(true){i=tr.b.findIndexInSortedClosedIntervals(curSlice.subSlices,getSliceLo,getSliceHi,ts);if(i===-1||i===curSlice.subSlices.length){return curSlice;}\ncurSlice=curSlice.subSlices[i];}},findNextSliceAfter(ts,refGuid){let i=tr.b.findLowIndexInSortedArray(this.slices,getSliceLo,ts);if(i===this.slices.length){return undefined;}\nfor(;i<this.slices.length;i++){const slice=this.slices[i];if(slice.start>ts)return slice;if(slice.guid<=refGuid)continue;return slice;}\nreturn undefined;},hasCpuDuration_(){if(this.slices.some(function(slice){return slice.cpuDuration!==undefined;}))return true;return false;},createSubSlices(){this.haveTopLevelSlicesBeenBuilt=true;this.createSubSlicesImpl_();if(!this.hasCpuDuration_()&&this.parentContainer.timeSlices){this.addCpuTimeToSubslices_(this.parentContainer.timeSlices);}\nthis.slices.forEach(function(slice){let selfTime=slice.duration;for(let i=0;i<slice.subSlices.length;i++){selfTime-=slice.subSlices[i].duration;}\nslice.selfTime=selfTime;if(slice.cpuDuration===undefined)return;let cpuSelfTime=slice.cpuDuration;for(let i=0;i<slice.subSlices.length;i++){if(slice.subSlices[i].cpuDuration!==undefined){cpuSelfTime-=slice.subSlices[i].cpuDuration;}}\nslice.cpuSelfTime=cpuSelfTime;});},createSubSlicesImpl_(){const precisionUnit=this.model.intrinsicTimeUnit;function addSliceIfBounds(parent,child){if(parent.bounds(child,precisionUnit)){child.parentSlice=parent;if(parent.subSlices===undefined){parent.subSlices=[];}\nparent.subSlices.push(child);return true;}\nreturn false;}\nif(!this.slices.length)return;const ops=[];for(let i=0;i<this.slices.length;i++){if(this.slices[i].subSlices){this.slices[i].subSlices.splice(0,this.slices[i].subSlices.length);}\nops.push(i);}\nconst originalSlices=this.slices;ops.sort(function(ix,iy){const x=originalSlices[ix];const y=originalSlices[iy];if(x.start!==y.start){return x.start-y.start;}\nreturn ix-iy;});const slices=new Array(this.slices.length);for(let i=0;i<ops.length;i++){slices[i]=originalSlices[ops[i]];}\nlet rootSlice=slices[0];this.topLevelSlices=[];this.topLevelSlices.push(rootSlice);rootSlice.isTopLevel=true;for(let i=1;i<slices.length;i++){const slice=slices[i];while(rootSlice!==undefined&&(!addSliceIfBounds(rootSlice,slice))){rootSlice=rootSlice.parentSlice;}\nif(rootSlice===undefined){this.topLevelSlices.push(slice);slice.isTopLevel=true;}\nrootSlice=slice;}\nthis.slices=slices;},addCpuTimeToSubslices_(timeSlices){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;let sliceIdx=0;timeSlices.forEach(function(timeSlice){if(timeSlice.schedulingState===SCHEDULING_STATE.RUNNING){while(sliceIdx<this.topLevelSlices.length){if(this.addCpuTimeToSubslice_(this.topLevelSlices[sliceIdx],timeSlice)){sliceIdx++;}else{break;}}}},this);},addCpuTimeToSubslice_(slice,timeSlice){if(slice.start>timeSlice.end||slice.end<timeSlice.start){return slice.end<=timeSlice.end;}\nlet duration=timeSlice.duration;if(slice.start>timeSlice.start){duration-=slice.start-timeSlice.start;}\nif(timeSlice.end>slice.end){duration-=timeSlice.end-slice.end;}\nif(slice.cpuDuration){slice.cpuDuration+=duration;}else{slice.cpuDuration=duration;}\nfor(let i=0;i<slice.subSlices.length;i++){this.addCpuTimeToSubslice_(slice.subSlices[i],timeSlice);}\nreturn slice.end<=timeSlice.end;}};SliceGroup.merge=function(groupA,groupB){if(groupA.openPartialSlices_.length>0){throw new Error('groupA has open partial slices');}\nif(groupB.openPartialSlices_.length>0){throw new Error('groupB has open partial slices');}\nif(groupA.parentContainer!==groupB.parentContainer){throw new Error('Different parent threads. Cannot merge');}\nif(groupA.sliceConstructor!==groupB.sliceConstructor){throw new Error('Different slice constructors. Cannot merge');}\nconst result=new SliceGroup(groupA.parentContainer,groupA.sliceConstructor,groupA.name_);const slicesA=groupA.slices;const slicesB=groupB.slices;let idxA=0;let idxB=0;const openA=[];const openB=[];const splitOpenSlices=function(when){for(let i=0;i<openB.length;i++){const oldSlice=openB[i];const oldEnd=oldSlice.end;if(when<oldSlice.start||oldEnd<when){throw new Error('slice should not be split');}\nconst newSlice=result.copySlice(oldSlice);newSlice.start=when;newSlice.duration=oldEnd-when;if(newSlice.title.indexOf(' (cont.)')===-1){newSlice.title+=' (cont.)';}\noldSlice.duration=when-oldSlice.start;openB[i]=newSlice;result.pushSlice(newSlice);}};const closeOpenSlices=function(upTo){while(openA.length>0||openB.length>0){const nextA=openA[openA.length-1];const nextB=openB[openB.length-1];const endA=nextA&&nextA.end;const endB=nextB&&nextB.end;if((endA===undefined||endA>upTo)&&(endB===undefined||endB>upTo)){return;}\nif(endB===undefined||endA<endB){splitOpenSlices(endA);openA.pop();}else{openB.pop();}}};while(idxA<slicesA.length||idxB<slicesB.length){const sA=slicesA[idxA];const sB=slicesB[idxB];let nextSlice;let isFromB;if(sA===undefined||(sB!==undefined&&sA.start>sB.start)){nextSlice=result.copySlice(sB);isFromB=true;idxB++;}else{nextSlice=result.copySlice(sA);isFromB=false;idxA++;}\ncloseOpenSlices(nextSlice.start);result.pushSlice(nextSlice);if(isFromB){openB.push(nextSlice);}else{splitOpenSlices(nextSlice.start);openA.push(nextSlice);}}\ncloseOpenSlices();return result;};return{SliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const AsyncSlice=tr.model.AsyncSlice;const AsyncSliceGroup=tr.model.AsyncSliceGroup;const SliceGroup=tr.model.SliceGroup;const ThreadSlice=tr.model.ThreadSlice;const ThreadTimeSlice=tr.model.ThreadTimeSlice;function Thread(parent,tid){if(!parent){throw new Error('Parent must be provided.');}\ntr.model.EventContainer.call(this);this.parent=parent;this.sortIndex=0;this.tid=tid;this.name=undefined;this.samples_=undefined;this.sliceGroup=new SliceGroup(this,ThreadSlice,'slices');this.timeSlices=undefined;this.kernelSliceGroup=new SliceGroup(this,ThreadSlice,'kernel-slices');this.asyncSliceGroup=new AsyncSliceGroup(this,'async-slices');}\nThread.prototype={__proto__:tr.model.EventContainer.prototype,get model(){return this.parent.model;},get stableId(){return this.parent.stableId+'.'+this.tid;},compareTo(that){return Thread.compare(this,that);},*childEventContainers(){if(this.sliceGroup.length){yield this.sliceGroup;}\nif(this.kernelSliceGroup.length){yield this.kernelSliceGroup;}\nif(this.asyncSliceGroup.length){yield this.asyncSliceGroup;}},*childEvents(){if(this.timeSlices){yield*this.timeSlices;}},iterateAllPersistableObjects(cb){cb(this);if(this.sliceGroup.length){cb(this.sliceGroup);}\nthis.asyncSliceGroup.viewSubGroups.forEach(cb);},shiftTimestampsForward(amount){this.sliceGroup.shiftTimestampsForward(amount);if(this.timeSlices){for(let i=0;i<this.timeSlices.length;i++){const slice=this.timeSlices[i];slice.start+=amount;}}\nthis.kernelSliceGroup.shiftTimestampsForward(amount);this.asyncSliceGroup.shiftTimestampsForward(amount);},get isEmpty(){if(this.sliceGroup.length)return false;if(this.sliceGroup.openSliceCount)return false;if(this.timeSlices&&this.timeSlices.length)return false;if(this.kernelSliceGroup.length)return false;if(this.asyncSliceGroup.length)return false;if(this.samples_.length)return false;return true;},updateBounds(){this.bounds.reset();this.sliceGroup.updateBounds();this.bounds.addRange(this.sliceGroup.bounds);this.kernelSliceGroup.updateBounds();this.bounds.addRange(this.kernelSliceGroup.bounds);this.asyncSliceGroup.updateBounds();this.bounds.addRange(this.asyncSliceGroup.bounds);if(this.timeSlices&&this.timeSlices.length){this.bounds.addValue(this.timeSlices[0].start);this.bounds.addValue(this.timeSlices[this.timeSlices.length-1].end);}\nif(this.samples_&&this.samples_.length){this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].end);}},addCategoriesToDict(categoriesDict){for(let i=0;i<this.sliceGroup.length;i++){categoriesDict[this.sliceGroup.slices[i].category]=true;}\nfor(let i=0;i<this.kernelSliceGroup.length;i++){categoriesDict[this.kernelSliceGroup.slices[i].category]=true;}\nfor(let i=0;i<this.asyncSliceGroup.length;i++){categoriesDict[this.asyncSliceGroup.slices[i].category]=true;}\nif(this.samples_){for(let i=0;i<this.samples_.length;i++){categoriesDict[this.samples_[i].category]=true;}}},autoCloseOpenSlices(){this.sliceGroup.autoCloseOpenSlices();this.asyncSliceGroup.autoCloseOpenSlices();this.kernelSliceGroup.autoCloseOpenSlices();},mergeKernelWithUserland(){if(this.kernelSliceGroup.length>0){const newSlices=SliceGroup.merge(this.sliceGroup,this.kernelSliceGroup);this.sliceGroup.slices=newSlices.slices;this.kernelSliceGroup=new SliceGroup(this);this.updateBounds();}},createSubSlices(){this.sliceGroup.createSubSlices();this.samples_=this.parent.model.samples.filter(sample=>sample.thread===this);},get userFriendlyName(){return this.name||this.tid;},get userFriendlyDetails(){return'tid: '+this.tid+\n(this.name?', name: '+this.name:'');},getSettingsKey(){if(!this.name)return undefined;const parentKey=this.parent.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},getProcess(){return this.parent;},indexOfTimeSlice(timeSlice){const i=tr.b.findLowIndexInSortedArray(this.timeSlices,function(slice){return slice.start;},timeSlice.start);if(this.timeSlices[i]!==timeSlice)return undefined;return i;},sumOverToplevelSlicesInRange(range,func){let sum=0;tr.b.iterateOverIntersectingIntervals(this.sliceGroup.topLevelSlices,slice=>slice.start,slice=>slice.end,range.min,range.max,slice=>{let fractionOfSliceInsideRangeOfInterest=1;if(slice.duration>0){const intersection=range.findIntersection(slice.range);fractionOfSliceInsideRangeOfInterest=intersection.duration/slice.duration;}\nsum+=func(slice)*fractionOfSliceInsideRangeOfInterest;});return sum;},getCpuTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.cpuDuration||0);},getNumToplevelSlicesForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>1);},getWallTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.duration||0);},getSchedulingStatsForRange(start,end){const stats={};if(!this.timeSlices)return stats;function addStatsForSlice(threadTimeSlice){const overlapStart=Math.max(threadTimeSlice.start,start);const overlapEnd=Math.min(threadTimeSlice.end,end);const schedulingState=threadTimeSlice.schedulingState;if(!(schedulingState in stats))stats[schedulingState]=0;stats[schedulingState]+=overlapEnd-overlapStart;}\ntr.b.iterateOverIntersectingIntervals(this.timeSlices,function(x){return x.start;},function(x){return x.end;},start,end,addStatsForSlice);return stats;},get samples(){return this.samples_;},get type(){const re=/^[^0-9|\\/]+/;const matches=re.exec(this.name);if(matches&&matches[0])return matches[0];throw new Error('Could not determine thread type for thread name '+\nthis.name);}};Thread.compare=function(x,y){let tmp=x.parent.compareTo(y.parent);if(tmp)return tmp;tmp=x.sortIndex-y.sortIndex;if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}\nif(tmp)return tmp;return x.tid-y.tid;};return{Thread,};});'use strict';tr.exportTo('tr.model',function(){const Thread=tr.model.Thread;const Counter=tr.model.Counter;function ProcessBase(model){if(!model){throw new Error('Must provide a model');}\ntr.model.EventContainer.call(this);this.model=model;this.threads={};this.counters={};this.objects=new tr.model.ObjectCollection(this);this.sortIndex=0;}\nProcessBase.compare=function(x,y){return x.sortIndex-y.sortIndex;};ProcessBase.prototype={__proto__:tr.model.EventContainer.prototype,get stableId(){throw new Error('Not implemented');},*childEventContainers(){yield*Object.values(this.threads);yield*Object.values(this.counters);yield this.objects;},iterateAllPersistableObjects(cb){cb(this);for(const tid in this.threads){this.threads[tid].iterateAllPersistableObjects(cb);}},get numThreads(){let n=0;for(const p in this.threads){n++;}\nreturn n;},shiftTimestampsForward(amount){for(const child of this.childEventContainers()){child.shiftTimestampsForward(amount);}},autoCloseOpenSlices(){for(const tid in this.threads){const thread=this.threads[tid];thread.autoCloseOpenSlices();}},autoDeleteObjects(maxTimestamp){this.objects.autoDeleteObjects(maxTimestamp);},preInitializeObjects(){this.objects.preInitializeAllObjects();},initializeObjects(){this.objects.initializeAllObjects();},mergeKernelWithUserland(){for(const tid in this.threads){const thread=this.threads[tid];thread.mergeKernelWithUserland();}},updateBounds(){this.bounds.reset();for(const tid in this.threads){this.threads[tid].updateBounds();this.bounds.addRange(this.threads[tid].bounds);}\nfor(const id in this.counters){this.counters[id].updateBounds();this.bounds.addRange(this.counters[id].bounds);}\nthis.objects.updateBounds();this.bounds.addRange(this.objects.bounds);},addCategoriesToDict(categoriesDict){for(const tid in this.threads){this.threads[tid].addCategoriesToDict(categoriesDict);}\nfor(const id in this.counters){categoriesDict[this.counters[id].category]=true;}\nthis.objects.addCategoriesToDict(categoriesDict);},findAllThreadsMatching(predicate,opt_this){const threads=[];for(const tid in this.threads){const thread=this.threads[tid];if(predicate.call(opt_this,thread)){threads.push(thread);}}\nreturn threads;},findAllThreadsNamed(name){const threads=this.findAllThreadsMatching(function(thread){if(!thread.name)return false;return thread.name===name;});return threads;},findAtMostOneThreadNamed(name){const threads=this.findAllThreadsNamed(name);if(threads.length===0)return undefined;if(threads.length>1){throw new Error('Expected no more than one '+name);}\nreturn threads[0];},pruneEmptyContainers(){const threadsToKeep={};for(const tid in this.threads){const thread=this.threads[tid];if(!thread.isEmpty){threadsToKeep[tid]=thread;}}\nthis.threads=threadsToKeep;},getThread(tid){return this.threads[tid];},getOrCreateThread(tid){if(!this.threads[tid]){this.threads[tid]=new Thread(this,tid);}\nreturn this.threads[tid];},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}\nreturn this.counters[id];},getSettingsKey(){throw new Error('Not implemented');},createSubSlices(){for(const tid in this.threads){this.threads[tid].createSubSlices();}}};return{ProcessBase,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const Counter=tr.model.Counter;const CpuSlice=tr.model.CpuSlice;function Cpu(kernel,number){if(kernel===undefined||number===undefined){throw new Error('Missing arguments');}\nthis.kernel=kernel;this.cpuNumber=number;this.slices=[];this.counters={};this.bounds_=new tr.b.math.Range();this.samples_=undefined;this.lastActiveTimestamp_=undefined;this.lastActiveThread_=undefined;this.lastActiveName_=undefined;this.lastActiveArgs_=undefined;}\nCpu.prototype={__proto__:tr.model.EventContainer.prototype,get samples(){return this.samples_;},get userFriendlyName(){return'CPU '+this.cpuNumber;},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const s of this.slices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}},*childEvents(){yield*this.slices;if(this.samples_){yield*this.samples_;}},*childEventContainers(){yield*Object.values(this.counters);},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}\nreturn this.counters[id];},getCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){return undefined;}\nreturn this.counters[id];},shiftTimestampsForward(amount){for(let sI=0;sI<this.slices.length;sI++){this.slices[sI].start=(this.slices[sI].start+amount);}\nfor(const id in this.counters){this.counters[id].shiftTimestampsForward(amount);}},updateBounds(){this.bounds_.reset();if(this.slices.length){this.bounds_.addValue(this.slices[0].start);this.bounds_.addValue(this.slices[this.slices.length-1].end);}\nfor(const id in this.counters){this.counters[id].updateBounds();this.bounds_.addRange(this.counters[id].bounds);}\nif(this.samples_&&this.samples_.length){this.bounds_.addValue(this.samples_[0].start);this.bounds_.addValue(this.samples_[this.samples_.length-1].end);}},createSubSlices(){this.samples_=this.kernel.model.samples.filter(function(sample){return sample.cpu===this;},this);},addCategoriesToDict(categoriesDict){for(let i=0;i<this.slices.length;i++){categoriesDict[this.slices[i].category]=true;}\nfor(const id in this.counters){categoriesDict[this.counters[id].category]=true;}\nfor(let i=0;i<this.samples_.length;i++){categoriesDict[this.samples_[i].category]=true;}},indexOf(cpuSlice){const i=tr.b.findLowIndexInSortedArray(this.slices,function(slice){return slice.start;},cpuSlice.start);if(this.slices[i]!==cpuSlice)return undefined;return i;},closeActiveThread(endTimestamp,args){if(this.lastActiveThread_===undefined||this.lastActiveThread_===0){return;}\nif(endTimestamp<this.lastActiveTimestamp_){throw new Error('The end timestamp of a thread running on CPU '+\nthis.cpuNumber+' is before its start timestamp.');}\nfor(const key in args){this.lastActiveArgs_[key]=args[key];}\nconst duration=endTimestamp-this.lastActiveTimestamp_;const slice=new tr.model.CpuSlice('',this.lastActiveName_,ColorScheme.getColorIdForGeneralPurposeString(this.lastActiveName_),this.lastActiveTimestamp_,this.lastActiveArgs_,duration);slice.cpu=this;this.slices.push(slice);this.lastActiveTimestamp_=undefined;this.lastActiveThread_=undefined;this.lastActiveName_=undefined;this.lastActiveArgs_=undefined;},switchActiveThread(timestamp,oldThreadArgs,newThreadId,newThreadName,newThreadArgs){this.closeActiveThread(timestamp,oldThreadArgs);this.lastActiveTimestamp_=timestamp;this.lastActiveThread_=newThreadId;this.lastActiveName_=newThreadName;this.lastActiveArgs_=newThreadArgs;},getFreqStatsForRange(range){const stats={};function addStatsForFreq(freqSample,index){const freqEnd=(index<freqSample.series_.length-1)?freqSample.series_.samples_[index+1].timestamp:range.max;const freqRange=tr.b.math.Range.fromExplicitRange(freqSample.timestamp,freqEnd);const intersection=freqRange.findIntersection(range);if(!(freqSample.value in stats)){stats[freqSample.value]=0;}\nstats[freqSample.value]+=intersection.duration;}\nconst freqCounter=this.getCounter('','Clock Frequency');if(freqCounter!==undefined){const freqSeries=freqCounter.getSeries(0);if(!freqSeries)return;tr.b.iterateOverIntersectingIntervals(freqSeries.samples_,function(x){return x.timestamp;},function(x,index){if(index<freqSeries.length-1){return freqSeries.samples_[index+1].timestamp;}\nreturn range.max;},range.min,range.max,addStatsForFreq);}\nreturn stats;}};Cpu.compare=function(x,y){return x.cpuNumber-y.cpuNumber;};return{Cpu,};});'use strict';tr.exportTo('tr.model',function(){const Event=tr.model.Event;const EventRegistry=tr.model.EventRegistry;function PowerSample(series,start,powerInW){Event.call(this);this.series_=series;this.start_=parseFloat(start);this.powerInW_=parseFloat(powerInW);}\nPowerSample.prototype={__proto__:Event.prototype,get series(){return this.series_;},get start(){return this.start_;},set start(value){this.start_=value;},get powerInW(){return this.powerInW_;},set powerInW(value){this.powerInW_=value;},addBoundsToRange(range){range.addValue(this.start);}};EventRegistry.register(PowerSample,{name:'powerSample',pluralName:'powerSamples'});return{PowerSample,};});'use strict';tr.exportTo('tr.model',function(){const PowerSample=tr.model.PowerSample;function PowerSeries(device){tr.model.EventContainer.call(this);this.device_=device;this.samples_=[];}\nPowerSeries.prototype={__proto__:tr.model.EventContainer.prototype,get device(){return this.device_;},get samples(){return this.samples_;},get stableId(){return this.device_.stableId+'.PowerSeries';},addPowerSample(ts,val){const sample=new PowerSample(this,ts,val);this.samples_.push(sample);return sample;},getEnergyConsumedInJ(start,end){const measurementRange=tr.b.math.Range.fromExplicitRange(start,end);let energyConsumedInJ=0;let startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0){startIndex=0;}\nfor(let i=startIndex;i<endIndex;i++){const sample=this.samples[i];const nextSample=this.samples[i+1];const sampleRange=new tr.b.math.Range();sampleRange.addValue(sample.start);sampleRange.addValue(nextSample?nextSample.start:sample.start);const intersectionRangeInMs=measurementRange.findIntersection(sampleRange);const durationInS=tr.b.convertUnit(intersectionRangeInMs.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);energyConsumedInJ+=durationInS*sample.powerInW;}\nreturn energyConsumedInJ;},getSamplesWithinRange(start,end){const startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);},shiftTimestampsForward(amount){for(let i=0;i<this.samples_.length;++i){this.samples_[i].start+=amount;}},updateBounds(){this.bounds.reset();if(this.samples_.length===0)return;this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].start);},*childEvents(){yield*this.samples_;},};return{PowerSeries,};});'use strict';tr.exportTo('tr.model',function(){function Device(model){if(!model){throw new Error('Must provide a model.');}\ntr.model.EventContainer.call(this);this.powerSeries_=undefined;this.cpuUsageSeries_=undefined;this.vSyncTimestamps_=[];}\nDevice.compare=function(x,y){return x.guid-y.guid;};Device.prototype={__proto__:tr.model.EventContainer.prototype,compareTo(that){return Device.compare(this,that);},get userFriendlyName(){return'Device';},get userFriendlyDetails(){return'Device';},get stableId(){return'Device';},getSettingsKey(){return'device';},get powerSeries(){return this.powerSeries_;},set powerSeries(powerSeries){this.powerSeries_=powerSeries;},get cpuUsageSeries(){return this.cpuUsageSeries_;},set cpuUsageSeries(cpuUsageSeries){this.cpuUsageSeries_=cpuUsageSeries;},get vSyncTimestamps(){return this.vSyncTimestamps_;},set vSyncTimestamps(value){this.vSyncTimestamps_=value;},updateBounds(){this.bounds.reset();for(const child of this.childEventContainers()){child.updateBounds();this.bounds.addRange(child.bounds);}},shiftTimestampsForward(amount){for(const child of this.childEventContainers()){child.shiftTimestampsForward(amount);}\nfor(let i=0;i<this.vSyncTimestamps_.length;i++){this.vSyncTimestamps_[i]+=amount;}},addCategoriesToDict(categoriesDict){},*childEventContainers(){if(this.powerSeries_){yield this.powerSeries_;}\nif(this.cpuUsageSeries_){yield this.cpuUsageSeries_;}}};return{Device,};});'use strict';tr.exportTo('tr.model',function(){function FlowEvent(category,id,title,colorId,start,args,opt_duration){tr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.start=start;this.args=args;this.id=id;this.startSlice=undefined;this.endSlice=undefined;this.startStackFrame=undefined;this.endStackFrame=undefined;if(opt_duration!==undefined){this.duration=opt_duration;}}\nFlowEvent.prototype={__proto__:tr.model.TimedEvent.prototype,get userFriendlyName(){return'Flow event named '+this.title+' at '+\ntr.b.Unit.byName.timeStampInMs.format(this.timestamp);}};tr.model.EventRegistry.register(FlowEvent,{name:'flowEvent',pluralName:'flowEvents'});return{FlowEvent,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const Statistics=tr.b.math.Statistics;const FRAME_PERF_CLASS={GOOD:'good',BAD:'bad',TERRIBLE:'terrible',NEUTRAL:'generic_work'};function Frame(associatedEvents,threadTimeRanges,opt_args){tr.model.Event.call(this);this.threadTimeRanges=threadTimeRanges;this.associatedEvents=new tr.model.EventSet(associatedEvents);this.args=opt_args||{};this.title='Frame';this.start=Statistics.min(threadTimeRanges,function(x){return x.start;});this.end=Statistics.max(threadTimeRanges,function(x){return x.end;});this.totalDuration=Statistics.sum(threadTimeRanges,function(x){return x.end-x.start;});this.perfClass=FRAME_PERF_CLASS.NEUTRAL;}\nFrame.prototype={__proto__:tr.model.Event.prototype,set perfClass(perfClass){this.colorId=ColorScheme.getColorIdForReservedName(perfClass);this.perfClass_=perfClass;},get perfClass(){return this.perfClass_;},shiftTimestampsForward(amount){this.start+=amount;this.end+=amount;for(let i=0;i<this.threadTimeRanges.length;i++){this.threadTimeRanges[i].start+=amount;this.threadTimeRanges[i].end+=amount;}},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);}};tr.model.EventRegistry.register(Frame,{name:'frame',pluralName:'frames'});return{Frame,FRAME_PERF_CLASS,};});'use strict';tr.exportTo('tr.model',function(){function ContainerMemoryDump(start){tr.model.TimedEvent.call(this,start);this.levelOfDetail=undefined;this.memoryAllocatorDumps_=undefined;this.memoryAllocatorDumpsByFullName_=undefined;}\nContainerMemoryDump.LevelOfDetail={BACKGROUND:0,LIGHT:1,DETAILED:2};ContainerMemoryDump.prototype={__proto__:tr.model.TimedEvent.prototype,shiftTimestampsForward(amount){this.start+=amount;},get memoryAllocatorDumps(){return this.memoryAllocatorDumps_;},set memoryAllocatorDumps(memoryAllocatorDumps){this.memoryAllocatorDumps_=memoryAllocatorDumps;this.forceRebuildingMemoryAllocatorDumpByFullNameIndex();},getMemoryAllocatorDumpByFullName(fullName){if(this.memoryAllocatorDumps_===undefined)return undefined;if(this.memoryAllocatorDumpsByFullName_===undefined){const index={};function addDumpsToIndex(dumps){dumps.forEach(function(dump){index[dump.fullName]=dump;addDumpsToIndex(dump.children);});}\naddDumpsToIndex(this.memoryAllocatorDumps_);this.memoryAllocatorDumpsByFullName_=index;}\nreturn this.memoryAllocatorDumpsByFullName_[fullName];},forceRebuildingMemoryAllocatorDumpByFullNameIndex(){this.memoryAllocatorDumpsByFullName_=undefined;},iterateRootAllocatorDumps(fn,opt_this){if(this.memoryAllocatorDumps===undefined)return;this.memoryAllocatorDumps.forEach(fn,opt_this||this);}};return{ContainerMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){function MemoryAllocatorDump(containerMemoryDump,fullName,opt_guid){this.fullName=fullName;this.parent=undefined;this.children=[];this.numerics={};this.diagnostics={};this.containerMemoryDump=containerMemoryDump;this.owns=undefined;this.ownedBy=[];this.ownedBySiblingSizes=new Map();this.retains=[];this.retainedBy=[];this.weak=false;this.infos=[];this.guid=opt_guid;}\nMemoryAllocatorDump.SIZE_NUMERIC_NAME='size';MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME='effective_size';MemoryAllocatorDump.RESIDENT_SIZE_NUMERIC_NAME='resident_size';MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME=MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME;MemoryAllocatorDump.prototype={get name(){return this.fullName.substring(this.fullName.lastIndexOf('/')+1);},get quantifiedName(){return'\\''+this.fullName+'\\' in '+\nthis.containerMemoryDump.containerName;},getDescendantDumpByFullName(fullName){return this.containerMemoryDump.getMemoryAllocatorDumpByFullName(this.fullName+'/'+fullName);},isDescendantOf(otherDump){if(this===otherDump)return true;if(this.parent===undefined)return false;return this.parent.isDescendantOf(otherDump);},addNumeric(name,numeric){if(!(numeric instanceof tr.b.Scalar)){throw new Error('Numeric value must be an instance of Scalar.');}\nif(name in this.numerics){throw new Error('Duplicate numeric name: '+name+'.');}\nthis.numerics[name]=numeric;},addDiagnostic(name,text){if(typeof text!=='string'){throw new Error('Diagnostic text must be a string.');}\nif(name in this.diagnostics){throw new Error('Duplicate diagnostic name: '+name+'.');}\nthis.diagnostics[name]=text;},aggregateNumericsRecursively(opt_model){const numericNames=new Set();this.children.forEach(function(child){child.aggregateNumericsRecursively(opt_model);for(const[item,value]of Object.entries(child.numerics)){numericNames.add(item,value);}},this);numericNames.forEach(function(numericName){if(numericName===MemoryAllocatorDump.SIZE_NUMERIC_NAME||numericName===MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME||this.numerics[numericName]!==undefined){return;}\nthis.numerics[numericName]=MemoryAllocatorDump.aggregateNumerics(this.children.map(function(child){return child.numerics[numericName];}),opt_model);},this);}};MemoryAllocatorDump.aggregateNumerics=function(numerics,opt_model){let shouldLogWarning=!!opt_model;let aggregatedUnit=undefined;let aggregatedValue=0;numerics.forEach(function(numeric){if(numeric===undefined)return;const unit=numeric.unit;if(aggregatedUnit===undefined){aggregatedUnit=unit;}else if(aggregatedUnit!==unit){if(shouldLogWarning){opt_model.importWarning({type:'numeric_parse_error',message:'Multiple units provided for numeric: \\''+\naggregatedUnit.unitName+'\\' and \\''+unit.unitName+'\\'.'});shouldLogWarning=false;}\naggregatedUnit=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;}\naggregatedValue+=numeric.value;},this);if(aggregatedUnit===undefined)return undefined;return new tr.b.Scalar(aggregatedUnit,aggregatedValue);};function MemoryAllocatorDumpLink(source,target,opt_importance){this.source=source;this.target=target;this.importance=opt_importance;this.size=undefined;}\nconst MemoryAllocatorDumpInfoType={PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN:0,PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER:1};return{MemoryAllocatorDump,MemoryAllocatorDumpLink,MemoryAllocatorDumpInfoType,};});'use strict';tr.exportTo('tr.model',function(){function GlobalMemoryDump(model,start){tr.model.ContainerMemoryDump.call(this,start);this.model=model;this.processMemoryDumps={};}\nconst SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME;const EFFECTIVE_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME;const MemoryAllocatorDumpInfoType=tr.model.MemoryAllocatorDumpInfoType;const PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN;const PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER;function getSize(dump){const numeric=dump.numerics[SIZE_NUMERIC_NAME];if(numeric===undefined)return 0;return numeric.value;}\nfunction hasSize(dump){return dump.numerics[SIZE_NUMERIC_NAME]!==undefined;}\nfunction optional(value,defaultValue){if(value===undefined)return defaultValue;return value;}\nGlobalMemoryDump.prototype={__proto__:tr.model.ContainerMemoryDump.prototype,get stableId(){return'memory.'+this.model.globalMemoryDumps.indexOf(this);},get userFriendlyName(){return'Global memory dump at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get containerName(){return'global space';},finalizeGraph(){this.removeWeakDumps();this.setUpTracingOverheadOwnership();this.aggregateNumerics();this.calculateSizes();this.calculateEffectiveSizes();this.discountTracingOverheadFromVmRegions();this.forceRebuildingMemoryAllocatorDumpByFullNameIndices();},removeWeakDumps(){this.traverseAllocatorDumpsInDepthFirstPreOrder(function(dump){if(dump.weak)return;if((dump.owns!==undefined&&dump.owns.target.weak)||(dump.parent!==undefined&&dump.parent.weak)){dump.weak=true;}});function removeWeakDumpsFromListRecursively(dumps){tr.b.inPlaceFilter(dumps,function(dump){if(dump.weak){return false;}\nremoveWeakDumpsFromListRecursively(dump.children);tr.b.inPlaceFilter(dump.ownedBy,function(ownershipLink){return!ownershipLink.source.weak;});return true;});}\nthis.iterateContainerDumps(function(containerDump){const memoryAllocatorDumps=containerDump.memoryAllocatorDumps;if(memoryAllocatorDumps!==undefined){removeWeakDumpsFromListRecursively(memoryAllocatorDumps);}});},calculateSizes(){this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateMemoryAllocatorDumpSize_.bind(this));},calculateMemoryAllocatorDumpSize_(dump){let shouldDefineSize=false;function getDependencySize(dependencyDump){const numeric=dependencyDump.numerics[SIZE_NUMERIC_NAME];if(numeric===undefined)return 0;shouldDefineSize=true;return numeric.value;}\nconst sizeNumeric=dump.numerics[SIZE_NUMERIC_NAME];let size=0;let checkDependencySizeIsConsistent=function(){};if(sizeNumeric!==undefined){size=sizeNumeric.value;shouldDefineSize=true;if(sizeNumeric.unit!==tr.b.Unit.byName.sizeInBytes_smallerIsBetter){this.model.importWarning({type:'memory_dump_parse_error',message:'Invalid unit of \\'size\\' numeric of memory allocator '+'dump '+dump.quantifiedName+': '+\nsizeNumeric.unit.unitName+'.'});}\ncheckDependencySizeIsConsistent=function(dependencySize,dependencyInfoType,dependencyName){if(size>=dependencySize)return;this.model.importWarning({type:'memory_dump_parse_error',message:'Size provided by memory allocator dump \\''+\ndump.fullName+'\\''+\ntr.b.Unit.byName.sizeInBytes.format(size)+') is less than '+dependencyName+' ('+\ntr.b.Unit.byName.sizeInBytes.format(dependencySize)+').'});dump.infos.push({type:dependencyInfoType,providedSize:size,dependencySize});}.bind(this);}\nlet aggregatedChildrenSize=0;const allOverlaps={};dump.children.forEach(function(childDump){function aggregateDescendantDump(descendantDump){const ownedDumpLink=descendantDump.owns;if(ownedDumpLink!==undefined&&ownedDumpLink.target.isDescendantOf(dump)){let ownedChildDump=ownedDumpLink.target;while(ownedChildDump.parent!==dump){ownedChildDump=ownedChildDump.parent;}\nif(childDump!==ownedChildDump){const ownedBySiblingSize=getDependencySize(descendantDump);if(ownedBySiblingSize>0){const previousTotalOwnedBySiblingSize=ownedChildDump.ownedBySiblingSizes.get(childDump)||0;const updatedTotalOwnedBySiblingSize=previousTotalOwnedBySiblingSize+ownedBySiblingSize;ownedChildDump.ownedBySiblingSizes.set(childDump,updatedTotalOwnedBySiblingSize);}}\nreturn;}\nif(descendantDump.children.length===0){aggregatedChildrenSize+=getDependencySize(descendantDump);return;}\ndescendantDump.children.forEach(aggregateDescendantDump);}\naggregateDescendantDump(childDump);});checkDependencySizeIsConsistent(aggregatedChildrenSize,PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN,'the aggregated size of its children');let largestOwnerSize=0;dump.ownedBy.forEach(function(ownershipLink){const owner=ownershipLink.source;const ownerSize=getDependencySize(owner);largestOwnerSize=Math.max(largestOwnerSize,ownerSize);});checkDependencySizeIsConsistent(largestOwnerSize,PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER,'the size of its largest owner');if(!shouldDefineSize){delete dump.numerics[SIZE_NUMERIC_NAME];return;}\nsize=Math.max(size,aggregatedChildrenSize,largestOwnerSize);dump.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size);if(aggregatedChildrenSize<size&&dump.children!==undefined&&dump.children.length>0){const virtualChild=new tr.model.MemoryAllocatorDump(dump.containerMemoryDump,dump.fullName+'/<unspecified>');virtualChild.parent=dump;dump.children.unshift(virtualChild);virtualChild.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size-aggregatedChildrenSize);}},calculateEffectiveSizes(){this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpSubSizes_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPreOrder(this.calculateDumpCumulativeOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpEffectiveSize_.bind(this));},calculateDumpSubSizes_(dump){if(!hasSize(dump))return;if(dump.children===undefined||dump.children.length===0){const size=getSize(dump);dump.notOwningSubSize_=size;dump.notOwnedSubSize_=size;return;}\nlet notOwningSubSize=0;dump.children.forEach(function(childDump){if(childDump.owns!==undefined)return;notOwningSubSize+=optional(childDump.notOwningSubSize_,0);});dump.notOwningSubSize_=notOwningSubSize;let notOwnedSubSize=0;dump.children.forEach(function(childDump){if(childDump.ownedBy.length===0){notOwnedSubSize+=optional(childDump.notOwnedSubSize_,0);return;}\nlet largestChildOwnerSize=0;childDump.ownedBy.forEach(function(ownershipLink){largestChildOwnerSize=Math.max(largestChildOwnerSize,getSize(ownershipLink.source));});notOwnedSubSize+=getSize(childDump)-largestChildOwnerSize;});dump.notOwnedSubSize_=notOwnedSubSize;},calculateDumpOwnershipCoefficient_(dump){if(!hasSize(dump))return;if(dump.ownedBy.length===0)return;const owners=dump.ownedBy.map(function(ownershipLink){return{dump:ownershipLink.source,importance:optional(ownershipLink.importance,0),notOwningSubSize:optional(ownershipLink.source.notOwningSubSize_,0)};});owners.sort(function(a,b){if(a.importance===b.importance){return a.notOwningSubSize-b.notOwningSubSize;}\nreturn b.importance-a.importance;});let currentImportanceStartPos=0;let alreadyAttributedSubSize=0;while(currentImportanceStartPos<owners.length){const currentImportance=owners[currentImportanceStartPos].importance;let nextImportanceStartPos=currentImportanceStartPos+1;while(nextImportanceStartPos<owners.length&&owners[nextImportanceStartPos].importance===currentImportance){nextImportanceStartPos++;}\nlet attributedNotOwningSubSize=0;for(let pos=currentImportanceStartPos;pos<nextImportanceStartPos;pos++){const owner=owners[pos];const notOwningSubSize=owner.notOwningSubSize;if(notOwningSubSize>alreadyAttributedSubSize){attributedNotOwningSubSize+=(notOwningSubSize-alreadyAttributedSubSize)/(nextImportanceStartPos-pos);alreadyAttributedSubSize=notOwningSubSize;}\nlet owningCoefficient=0;if(notOwningSubSize!==0){owningCoefficient=attributedNotOwningSubSize/notOwningSubSize;}\nowner.dump.owningCoefficient_=owningCoefficient;}\ncurrentImportanceStartPos=nextImportanceStartPos;}\nconst notOwnedSubSize=optional(dump.notOwnedSubSize_,0);const remainderSubSize=notOwnedSubSize-alreadyAttributedSubSize;let ownedCoefficient=0;if(notOwnedSubSize!==0){ownedCoefficient=remainderSubSize/notOwnedSubSize;}\ndump.ownedCoefficient_=ownedCoefficient;},calculateDumpCumulativeOwnershipCoefficient_(dump){if(!hasSize(dump))return;let cumulativeOwnedCoefficient=optional(dump.ownedCoefficient_,1);const parent=dump.parent;if(dump.parent!==undefined){cumulativeOwnedCoefficient*=dump.parent.cumulativeOwnedCoefficient_;}\ndump.cumulativeOwnedCoefficient_=cumulativeOwnedCoefficient;let cumulativeOwningCoefficient;if(dump.owns!==undefined){cumulativeOwningCoefficient=dump.owningCoefficient_*dump.owns.target.cumulativeOwningCoefficient_;}else if(dump.parent!==undefined){cumulativeOwningCoefficient=dump.parent.cumulativeOwningCoefficient_;}else{cumulativeOwningCoefficient=1;}\ndump.cumulativeOwningCoefficient_=cumulativeOwningCoefficient;},calculateDumpEffectiveSize_(dump){if(!hasSize(dump)){delete dump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME];return;}\nlet effectiveSize;if(dump.children===undefined||dump.children.length===0){effectiveSize=getSize(dump)*dump.cumulativeOwningCoefficient_*dump.cumulativeOwnedCoefficient_;}else{effectiveSize=0;dump.children.forEach(function(childDump){if(!hasSize(childDump))return;effectiveSize+=childDump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME].value;});}\ndump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,effectiveSize);},aggregateNumerics(){this.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);});this.iterateRootAllocatorDumps(this.propagateNumericsAndDiagnosticsRecursively);for(const processMemoryDump of Object.values(this.processMemoryDumps)){processMemoryDump.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);},this);}},propagateNumericsAndDiagnosticsRecursively(globalAllocatorDump){['numerics','diagnostics'].forEach(function(field){for(const[name,value]of\nObject.entries(globalAllocatorDump[field])){globalAllocatorDump.ownedBy.forEach(function(ownershipLink){const processAllocatorDump=ownershipLink.source;if(processAllocatorDump[field][name]!==undefined){return;}\nprocessAllocatorDump[field][name]=value;});}});globalAllocatorDump.children.forEach(this.propagateNumericsAndDiagnosticsRecursively,this);},setUpTracingOverheadOwnership(){for(const dump of Object.values(this.processMemoryDumps)){dump.setUpTracingOverheadOwnership(this.model);}},discountTracingOverheadFromVmRegions(){for(const dump of Object.values(this.processMemoryDumps)){dump.discountTracingOverheadFromVmRegions(this.model);}},forceRebuildingMemoryAllocatorDumpByFullNameIndices(){this.iterateContainerDumps(function(containerDump){containerDump.forceRebuildingMemoryAllocatorDumpByFullNameIndex();});},iterateContainerDumps(fn){fn.call(this,this);for(const processDump of Object.values(this.processMemoryDumps)){fn.call(this,processDump);}},iterateAllRootAllocatorDumps(fn){this.iterateContainerDumps(function(containerDump){containerDump.iterateRootAllocatorDumps(fn,this);});},traverseAllocatorDumpsInDepthFirstPostOrder(fn){const visitedDumps=new WeakSet();const openDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(openDumps.has(dump)){throw new Error(dump.userFriendlyName+' contains a cycle');}\nopenDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);fn.call(this,dump);visitedDumps.add(dump);openDumps.delete(dump);}\nthis.iterateAllRootAllocatorDumps(visit);},traverseAllocatorDumpsInDepthFirstPreOrder(fn){const visitedDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(dump.owns!==undefined&&!visitedDumps.has(dump.owns.target)){return;}\nif(dump.parent!==undefined&&!visitedDumps.has(dump.parent)){return;}\nfn.call(this,dump);visitedDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);}\nthis.iterateAllRootAllocatorDumps(visit);}};tr.model.EventRegistry.register(GlobalMemoryDump,{name:'globalMemoryDump',pluralName:'globalMemoryDumps'});return{GlobalMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const InstantEventType={GLOBAL:1,PROCESS:2};function InstantEvent(category,title,colorId,start,args,parent){tr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.args=args;this.parent_=parent;this.type=undefined;}\nInstantEvent.prototype={__proto__:tr.model.TimedEvent.prototype,};function GlobalInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.GLOBAL;}\nGlobalInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Global instant event '+this.title+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return'instant.'+this.parent_.instantEvents.indexOf(this);},};function ProcessInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.PROCESS;}\nProcessInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Process-level instant event '+this.title+' @ '+\ntr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return this.parent_.stableId+'.instant.'+\nthis.parent_.instantEvents.indexOf(this);},};tr.model.EventRegistry.register(InstantEvent,{name:'instantEvent',pluralName:'instantEvents'});return{GlobalInstantEvent,ProcessInstantEvent,InstantEventType,InstantEvent,};});'use strict';tr.exportTo('tr.model',function(){const Cpu=tr.model.Cpu;const ProcessBase=tr.model.ProcessBase;function Kernel(model){ProcessBase.call(this,model);this.cpus={};this.softwareMeasuredCpuCount_=undefined;}\nKernel.compare=function(x,y){return 0;};Kernel.prototype={__proto__:ProcessBase.prototype,compareTo(that){return Kernel.compare(this,that);},get userFriendlyName(){return'Kernel';},get userFriendlyDetails(){return'Kernel';},get stableId(){return'Kernel';},getOrCreateCpu(cpuNumber){if(!this.cpus[cpuNumber]){this.cpus[cpuNumber]=new Cpu(this,cpuNumber);}\nreturn this.cpus[cpuNumber];},get softwareMeasuredCpuCount(){return this.softwareMeasuredCpuCount_;},set softwareMeasuredCpuCount(softwareMeasuredCpuCount){if(this.softwareMeasuredCpuCount_!==undefined&&this.softwareMeasuredCpuCount_!==softwareMeasuredCpuCount){throw new Error('Cannot change the softwareMeasuredCpuCount once it is set');}\nthis.softwareMeasuredCpuCount_=softwareMeasuredCpuCount;},get bestGuessAtCpuCount(){const realCpuCount=Object.keys(this.cpus).length;if(realCpuCount!==0){return realCpuCount;}\nreturn this.softwareMeasuredCpuCount;},updateBounds(){ProcessBase.prototype.updateBounds.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.updateBounds();this.bounds.addRange(cpu.bounds);}},createSubSlices(){ProcessBase.prototype.createSubSlices.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.createSubSlices();}},addCategoriesToDict(categoriesDict){ProcessBase.prototype.addCategoriesToDict.call(this,categoriesDict);for(const cpuNumber in this.cpus){this.cpus[cpuNumber].addCategoriesToDict(categoriesDict);}},getSettingsKey(){return'kernel';},*childEventContainers(){yield*ProcessBase.prototype.childEventContainers.call(this);yield*Object.values(this.cpus);},};return{Kernel,};});'use strict';tr.exportTo('tr.model',function(){function ModelIndices(model){this.flowEventsById_={};model.flowEvents.forEach(function(fe){if(fe.id!==undefined){if(!this.flowEventsById_.hasOwnProperty(fe.id)){this.flowEventsById_[fe.id]=[];}\nthis.flowEventsById_[fe.id].push(fe);}},this);}\nModelIndices.prototype={addEventWithId(id,event){if(!this.flowEventsById_.hasOwnProperty(id)){this.flowEventsById_[id]=[];}\nthis.flowEventsById_[id].push(event);},getFlowEventsWithId(id){if(!this.flowEventsById_.hasOwnProperty(id)){return[];}\nreturn this.flowEventsById_[id];}};return{ModelIndices,};});'use strict';tr.exportTo('tr.model',function(){function ModelStats(){this.traceEventCountsByKey_=new Map();this.allTraceEventStats_=[];this.traceEventStatsInTimeIntervals_=new Map();this.allTraceEventStatsInTimeIntervals_=[];this.hasEventSizesinBytes_=false;this.traceImportDurationMs_=undefined;}\nModelStats.prototype={TIME_INTERVAL_SIZE_IN_MS:100,willProcessBasicTraceEvent(phase,category,title,ts,opt_eventSizeinBytes){const key=phase+'/'+category+'/'+title;let eventStats=this.traceEventCountsByKey_.get(key);if(eventStats===undefined){eventStats={phase,category,title,numEvents:0,totalEventSizeinBytes:0};this.traceEventCountsByKey_.set(key,eventStats);this.allTraceEventStats_.push(eventStats);}\neventStats.numEvents++;const timeIntervalKey=Math.floor(tr.b.Unit.timestampFromUs(ts)/this.TIME_INTERVAL_SIZE_IN_MS);let eventStatsByTimeInverval=this.traceEventStatsInTimeIntervals_.get(timeIntervalKey);if(eventStatsByTimeInverval===undefined){eventStatsByTimeInverval={timeInterval:timeIntervalKey,numEvents:0,totalEventSizeinBytes:0};this.traceEventStatsInTimeIntervals_.set(timeIntervalKey,eventStatsByTimeInverval);this.allTraceEventStatsInTimeIntervals_.push(eventStatsByTimeInverval);}\neventStatsByTimeInverval.numEvents++;if(opt_eventSizeinBytes!==undefined){this.hasEventSizesinBytes_=true;eventStats.totalEventSizeinBytes+=opt_eventSizeinBytes;eventStatsByTimeInverval.totalEventSizeinBytes+=opt_eventSizeinBytes;}},get allTraceEventStats(){return this.allTraceEventStats_;},get allTraceEventStatsInTimeIntervals(){return this.allTraceEventStatsInTimeIntervals_;},get hasEventSizesinBytes(){return this.hasEventSizesinBytes_;},get traceImportDurationMs(){return this.traceImportDurationMs_;},set traceImportDurationMs(traceImportDurationMs){this.traceImportDurationMs_=traceImportDurationMs;}};return{ModelStats,};});'use strict';tr.exportTo('tr.model',function(){function VMRegion(startAddress,sizeInBytes,protectionFlags,mappedFile,byteStats){this.startAddress=startAddress;this.sizeInBytes=sizeInBytes;this.protectionFlags=protectionFlags;this.mappedFile=mappedFile||'';this.byteStats=byteStats||{};}\nVMRegion.PROTECTION_FLAG_READ=4;VMRegion.PROTECTION_FLAG_WRITE=2;VMRegion.PROTECTION_FLAG_EXECUTE=1;VMRegion.PROTECTION_FLAG_MAYSHARE=128;VMRegion.prototype={get uniqueIdWithinProcess(){return this.mappedFile+'#'+this.startAddress;},get protectionFlagsToString(){if(this.protectionFlags===undefined)return undefined;return((this.protectionFlags&VMRegion.PROTECTION_FLAG_READ?'r':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_WRITE?'w':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_EXECUTE?'x':'-')+\n(this.protectionFlags&VMRegion.PROTECTION_FLAG_MAYSHARE?'s':'p'));}};VMRegion.fromDict=function(dict){return new VMRegion(dict.startAddress,dict.sizeInBytes,dict.protectionFlags,dict.mappedFile,dict.byteStats);};function VMRegionClassificationNode(opt_rule){this.rule_=opt_rule||VMRegionClassificationNode.CLASSIFICATION_RULES;this.hasRegions=false;this.sizeInBytes=undefined;this.byteStats={};this.children_=undefined;this.regions_=[];}\nVMRegionClassificationNode.CLASSIFICATION_RULES={name:'Total',children:[{name:'Android',file:/^\\/dev\\/ashmem(?!\\/libc malloc)/,children:[{name:'Java runtime',file:/^\\/dev\\/ashmem\\/dalvik-/,children:[{name:'Spaces',file:/\\/dalvik-(alloc|main|large object|non moving|zygote) space/,children:[{name:'Normal',file:/\\/dalvik-(alloc|main)/},{name:'Large',file:/\\/dalvik-large object/},{name:'Zygote',file:/\\/dalvik-zygote/},{name:'Non-moving',file:/\\/dalvik-non moving/}]},{name:'Linear Alloc',file:/\\/dalvik-LinearAlloc/},{name:'Indirect Reference Table',file:/\\/dalvik-indirect.ref/},{name:'Cache',file:/\\/dalvik-jit-code-cache/},{name:'Accounting'}]},{name:'Cursor',file:/\\/CursorWindow/},{name:'Ashmem'}]},{name:'Native heap',file:/^((\\[heap\\])|(\\[anon:)|(\\/dev\\/ashmem\\/libc malloc)|(\\[discounted tracing overhead\\])|$)/},{name:'Stack',file:/^\\[stack/},{name:'Files',file:/\\.((((jar)|(apk)|(ttf)|(odex)|(oat)|(art))$)|(dex)|(so))/,children:[{name:'so',file:/\\.so/},{name:'jar',file:/\\.jar$/},{name:'apk',file:/\\.apk$/},{name:'ttf',file:/\\.ttf$/},{name:'dex',file:/\\.((dex)|(odex$))/},{name:'oat',file:/\\.oat$/},{name:'art',file:/\\.art$/}]},{name:'Devices',file:/(^\\/dev\\/)|(anon_inode:dmabuf)/,children:[{name:'GPU',file:/\\/((nv)|(mali)|(kgsl))/},{name:'DMA',file:/anon_inode:dmabuf/}]}]};VMRegionClassificationNode.OTHER_RULE={name:'Other'};VMRegionClassificationNode.fromRegions=function(regions,opt_rules){const tree=new VMRegionClassificationNode(opt_rules);tree.regions_=regions;for(let i=0;i<regions.length;i++){tree.addStatsFromRegion_(regions[i]);}\nreturn tree;};VMRegionClassificationNode.prototype={get title(){return this.rule_.name;},get children(){if(this.isLeafNode){return undefined;}\nif(this.children_===undefined){this.buildTree_();}\nreturn this.children_;},get regions(){if(!this.isLeafNode){return undefined;}\nreturn this.regions_;},get allRegionsForTesting(){if(this.regions_!==undefined){if(this.children_!==undefined){throw new Error('Internal error: a VM region classification node '+'cannot have both regions and children');}\nreturn this.regions_;}\nlet regions=[];this.children_.forEach(function(childNode){regions=regions.concat(childNode.allRegionsForTesting);});return regions;},get isLeafNode(){const children=this.rule_.children;return children===undefined||children.length===0;},addRegion(region){this.addRegionRecursively_(region,true);},someRegion(fn,opt_this){if(this.regions_!==undefined){return this.regions_.some(fn,opt_this);}\nreturn this.children_.some(function(childNode){return childNode.someRegion(fn,opt_this);});},addRegionRecursively_(region,addStatsToThisNode){if(addStatsToThisNode){this.addStatsFromRegion_(region);}\nif(this.regions_!==undefined){if(this.children_!==undefined){throw new Error('Internal error: a VM region classification node '+'cannot have both regions and children');}\nthis.regions_.push(region);return;}\nfunction regionRowMatchesChildNide(child){const fileRegExp=child.rule_.file;if(fileRegExp===undefined)return true;return fileRegExp.test(region.mappedFile);}\nlet matchedChild=this.children_.find(regionRowMatchesChildNide);if(matchedChild===undefined){if(this.children_.length!==this.rule_.children.length){throw new Error('Internal error');}\nmatchedChild=new VMRegionClassificationNode(VMRegionClassificationNode.OTHER_RULE);this.children_.push(matchedChild);}\nmatchedChild.addRegionRecursively_(region,true);},buildTree_(){const cachedRegions=this.regions_;this.regions_=undefined;this.buildChildNodesRecursively_();for(let i=0;i<cachedRegions.length;i++){this.addRegionRecursively_(cachedRegions[i],false);}},buildChildNodesRecursively_(){if(this.children_!==undefined){throw new Error('Internal error: Classification node already has children');}\nif(this.regions_!==undefined&&this.regions_.length!==0){throw new Error('Internal error: Classification node should have no regions');}\nif(this.isLeafNode){return;}\nthis.regions_=undefined;this.children_=this.rule_.children.map(function(childRule){const child=new VMRegionClassificationNode(childRule);child.buildChildNodesRecursively_();return child;});},addStatsFromRegion_(region){this.hasRegions=true;const regionSizeInBytes=region.sizeInBytes;if(regionSizeInBytes!==undefined){this.sizeInBytes=(this.sizeInBytes||0)+regionSizeInBytes;}\nconst thisByteStats=this.byteStats;const regionByteStats=region.byteStats;for(const byteStatName in regionByteStats){const regionByteStatValue=regionByteStats[byteStatName];if(regionByteStatValue===undefined)continue;thisByteStats[byteStatName]=(thisByteStats[byteStatName]||0)+regionByteStatValue;}\nif(region.mappedFile.includes('/base.odex')||region.mappedFile.includes('/base.vdex')){if(region.byteStats.proportionalResident!==undefined){thisByteStats.javaBasePss=(thisByteStats.javaBasePss||0)+\nregion.byteStats.proportionalResident;}\nif(region.byteStats.privateCleanResident!==undefined){thisByteStats.javaBaseCleanResident=(thisByteStats.javaBaseCleanResident||0)+\nregion.byteStats.privateCleanResident;}\nif(region.byteStats.sharedCleanResident!==undefined){thisByteStats.javaBaseCleanResident=(thisByteStats.javaBaseCleanResident||0)+\nregion.byteStats.sharedCleanResident;}}\nconst textProtectionFlags=(VMRegion.PROTECTION_FLAG_READ|VMRegion.PROTECTION_FLAG_EXECUTE);if((region.protectionFlags===textProtectionFlags)&&(region.mappedFile.includes('/base.apk')||region.mappedFile.includes('/libchrome.so'))){if(regionSizeInBytes!==undefined){this.nativeLibrarySizeInBytes=(this.nativeLibrarySizeInBytes||0)+regionSizeInBytes;}\nif(region.byteStats.privateCleanResident!==undefined){thisByteStats.nativeLibraryPrivateCleanResident=(thisByteStats.nativeLibraryPrivateCleanResident||0)+\nregion.byteStats.privateCleanResident;}\nif(region.byteStats.sharedCleanResident!==undefined){thisByteStats.nativeLibrarySharedCleanResident=(thisByteStats.nativeLibrarySharedCleanResident||0)+\nregion.byteStats.sharedCleanResident;}\nif(region.byteStats.proportionalResident!==undefined){thisByteStats.nativeLibraryProportionalResident=(thisByteStats.nativeLibraryProportionalResident||0)+\nregion.byteStats.proportionalResident;}}}};return{VMRegion,VMRegionClassificationNode,};});'use strict';tr.exportTo('tr.model',function(){const DISCOUNTED_ALLOCATOR_NAMES=['winheap','malloc'];const TRACING_OVERHEAD_PATH=['allocated_objects','tracing_overhead'];const SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME;const RESIDENT_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.RESIDENT_SIZE_NUMERIC_NAME;function getSizeNumericValue(dump,sizeNumericName){const sizeNumeric=dump.numerics[sizeNumericName];if(sizeNumeric===undefined)return 0;return sizeNumeric.value;}\nfunction ProcessMemoryDump(globalMemoryDump,process,start){tr.model.ContainerMemoryDump.call(this,start);this.process=process;this.globalMemoryDump=globalMemoryDump;this.totals=undefined;this.vmRegions=undefined;this.heapDumps=undefined;this.tracingOverheadOwnershipSetUp_=false;this.tracingOverheadDiscountedFromVmRegions_=false;}\nProcessMemoryDump.prototype={__proto__:tr.model.ContainerMemoryDump.prototype,get stableId(){return this.process.stableId+'.memory.'+\nthis.process.memoryDumps.indexOf(this);},get userFriendlyName(){return'Process memory dump at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get containerName(){return this.process.userFriendlyName;},get processMemoryDumps(){const dumps={};dumps[this.process.pid]=this;return dumps;},get hasOwnVmRegions(){return this.vmRegions!==undefined;},setUpTracingOverheadOwnership(opt_model){if(this.tracingOverheadOwnershipSetUp_)return;this.tracingOverheadOwnershipSetUp_=true;const tracingDump=this.getMemoryAllocatorDumpByFullName('tracing');if(tracingDump===undefined||tracingDump.owns!==undefined){return;}\nif(tracingDump.owns!==undefined)return;const hasDiscountedFromAllocatorDumps=DISCOUNTED_ALLOCATOR_NAMES.some(function(allocatorName){const allocatorDump=this.getMemoryAllocatorDumpByFullName(allocatorName);if(allocatorDump===undefined){return false;}\nlet nextPathIndex=0;let currentDump=allocatorDump;let currentFullName=allocatorName;for(;nextPathIndex<TRACING_OVERHEAD_PATH.length;nextPathIndex++){const childFullName=currentFullName+'/'+\nTRACING_OVERHEAD_PATH[nextPathIndex];const childDump=this.getMemoryAllocatorDumpByFullName(childFullName);if(childDump===undefined)break;currentDump=childDump;currentFullName=childFullName;}\nfor(;nextPathIndex<TRACING_OVERHEAD_PATH.length;nextPathIndex++){const childFullName=currentFullName+'/'+\nTRACING_OVERHEAD_PATH[nextPathIndex];const childDump=new tr.model.MemoryAllocatorDump(currentDump.containerMemoryDump,childFullName);childDump.parent=currentDump;currentDump.children.push(childDump);currentFullName=childFullName;currentDump=childDump;}\nconst ownershipLink=new tr.model.MemoryAllocatorDumpLink(tracingDump,currentDump);tracingDump.owns=ownershipLink;currentDump.ownedBy.push(ownershipLink);return true;},this);if(hasDiscountedFromAllocatorDumps){this.forceRebuildingMemoryAllocatorDumpByFullNameIndex();}},discountTracingOverheadFromVmRegions(opt_model){if(this.tracingOverheadDiscountedFromVmRegions_)return;this.tracingOverheadDiscountedFromVmRegions_=true;const tracingDump=this.getMemoryAllocatorDumpByFullName('tracing');if(tracingDump===undefined)return;const discountedSize=getSizeNumericValue(tracingDump,SIZE_NUMERIC_NAME);const discountedResidentSize=getSizeNumericValue(tracingDump,RESIDENT_SIZE_NUMERIC_NAME);if(discountedSize<=0&&discountedResidentSize<=0)return;if(this.totals!==undefined){if(this.totals.residentBytes!==undefined){this.totals.residentBytes-=discountedResidentSize;}\nif(this.totals.peakResidentBytes!==undefined){this.totals.peakResidentBytes-=discountedResidentSize;}}\nif(this.vmRegions!==undefined){const hasSizeInBytes=this.vmRegions.sizeInBytes!==undefined;const hasPrivateDirtyResident=this.vmRegions.byteStats.privateDirtyResident!==undefined;const hasProportionalResident=this.vmRegions.byteStats.proportionalResident!==undefined;if((hasSizeInBytes&&discountedSize>0)||((hasPrivateDirtyResident||hasProportionalResident)&&discountedResidentSize>0)){const byteStats={};if(hasPrivateDirtyResident){byteStats.privateDirtyResident=-discountedResidentSize;}\nif(hasProportionalResident){byteStats.proportionalResident=-discountedResidentSize;}\nthis.vmRegions.addRegion(tr.model.VMRegion.fromDict({mappedFile:'[discounted tracing overhead]',sizeInBytes:hasSizeInBytes?-discountedSize:undefined,byteStats}));}}}};ProcessMemoryDump.hookUpMostRecentVmRegionsLinks=function(processDumps){let mostRecentVmRegions=undefined;processDumps.forEach(function(processDump){if(processDump.vmRegions!==undefined){mostRecentVmRegions=processDump.vmRegions;}\nprocessDump.mostRecentVmRegions=mostRecentVmRegions;});};tr.model.EventRegistry.register(ProcessMemoryDump,{name:'processMemoryDump',pluralName:'processMemoryDumps'});return{ProcessMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const ProcessBase=tr.model.ProcessBase;const ProcessInstantEvent=tr.model.ProcessInstantEvent;const Frame=tr.model.Frame;const ProcessMemoryDump=tr.model.ProcessMemoryDump;function Process(model,pid){if(model===undefined){throw new Error('model must be provided');}\nif(pid===undefined){throw new Error('pid must be provided');}\ntr.model.ProcessBase.call(this,model);this.pid=pid;this.name=undefined;this.labels=[];this.uptime_seconds=0;this.instantEvents=[];this.memoryDumps=[];this.frames=[];this.activities=[];}\nProcess.compare=function(x,y){let tmp=tr.model.ProcessBase.compare(x,y);if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}\nif(tmp)return tmp;tmp=tr.b.compareArrays(x.labels,y.labels,function(x,y){return x.localeCompare(y);});if(tmp)return tmp;return x.pid-y.pid;};Process.prototype={__proto__:tr.model.ProcessBase.prototype,get stableId(){return this.pid;},compareTo(that){return Process.compare(this,that);},*childEvents(){yield*ProcessBase.prototype.childEvents.call(this);yield*this.instantEvents;yield*this.frames;yield*this.memoryDumps;},addLabelIfNeeded(labelName){for(let i=0;i<this.labels.length;i++){if(this.labels[i]===labelName)return;}\nthis.labels.push(labelName);},get userFriendlyName(){let res;if(this.name){res=this.name+' (pid '+this.pid+')';}else{res='Process '+this.pid;}\nif(this.labels.length){res+=': '+this.labels.join(', ');}\nif(this.uptime_seconds){res+=', uptime:'+this.uptime_seconds+'s';}\nreturn res;},get userFriendlyDetails(){if(this.name){return this.name+' (pid '+this.pid+')';}\nreturn'pid: '+this.pid;},getSettingsKey(){if(!this.name)return undefined;if(!this.labels.length)return'processes.'+this.name;return'processes.'+this.name+'.'+this.labels.join('.');},shiftTimestampsForward(amount){for(let i=0;i<this.instantEvents.length;i++){this.instantEvents[i].start+=amount;}\nfor(let i=0;i<this.frames.length;i++){this.frames[i].shiftTimestampsForward(amount);}\nfor(let i=0;i<this.memoryDumps.length;i++){this.memoryDumps[i].shiftTimestampsForward(amount);}\nfor(let i=0;i<this.activities.length;i++){this.activities[i].shiftTimestampsForward(amount);}\ntr.model.ProcessBase.prototype.shiftTimestampsForward.apply(this,arguments);},updateBounds(){tr.model.ProcessBase.prototype.updateBounds.apply(this);for(let i=0;i<this.frames.length;i++){this.frames[i].addBoundsToRange(this.bounds);}\nfor(let i=0;i<this.memoryDumps.length;i++){this.memoryDumps[i].addBoundsToRange(this.bounds);}\nfor(let i=0;i<this.activities.length;i++){this.activities[i].addBoundsToRange(this.bounds);}},sortMemoryDumps(){this.memoryDumps.sort(function(x,y){return x.start-y.start;});tr.model.ProcessMemoryDump.hookUpMostRecentVmRegionsLinks(this.memoryDumps);}};return{Process,};});'use strict';tr.exportTo('tr.model',function(){function Sample(start,title,leafNode,thread,opt_cpu,opt_weight,opt_args){tr.model.TimedEvent.call(this,start);this.start_=start;this.title_=title;this.leafNode_=leafNode;this.thread_=thread;this.colorId_=leafNode.colorId;this.cpu_=opt_cpu;this.weight_=opt_weight;this.args=opt_args||{};}\nSample.prototype={__proto__:tr.model.TimedEvent.prototype,get title(){return this.title_;},get colorId(){return this.colorId_;},get thread(){return this.thread_;},get leafNode(){return this.leafNode_;},get userFriendlyName(){return'Sample at '+\ntr.b.Unit.byName.timeStampInMs.format(this.start);},get userFriendlyStack(){return this.leafNode_.userFriendlyStack;},getNodesAsArray(){const nodes=[];let node=this.leafNode_;while(node!==undefined){nodes.push(node);node=node.parentNode;}\nreturn nodes;},get cpu(){return this.cpu_;},get weight(){return this.weight_;},};tr.model.EventRegistry.register(Sample,{name:'Sample',pluralName:'Samples'});return{Sample,};});'use strict';tr.exportTo('tr.model',function(){function StackFrame(parentFrame,id,title,colorId,opt_sourceInfo){if(id===undefined){throw new Error('id must be given');}\nthis.parentFrame_=parentFrame;this.id=id;this.title_=title;this.colorId=colorId;this.children=[];this.sourceInfo_=opt_sourceInfo;if(this.parentFrame_){this.parentFrame_.addChild(this);}}\nStackFrame.prototype={get parentFrame(){return this.parentFrame_;},get title(){if(this.sourceInfo_){const src=this.sourceInfo_.toString();return this.title_+(src===''?'':' '+src);}\nreturn this.title_;},get domain(){let result='unknown';if(this.sourceInfo_&&this.sourceInfo_.domain){result=this.sourceInfo_.domain;}\nif(result==='unknown'&&this.parentFrame){result=this.parentFrame.domain;}\nreturn result;},get sourceInfo(){return this.sourceInfo_;},set parentFrame(parentFrame){if(this.parentFrame_){Polymer.dom(this.parentFrame_).removeChild(this);}\nthis.parentFrame_=parentFrame;if(this.parentFrame_){this.parentFrame_.addChild(this);}},addChild(child){this.children.push(child);},removeChild(child){const i=this.children.indexOf(child.id);if(i===-1){throw new Error('omg');}\nthis.children.splice(i,1);},removeAllChildren(){for(let i=0;i<this.children.length;i++){this.children[i].parentFrame_=undefined;}\nthis.children.splice(0,this.children.length);},get stackTrace(){const stack=[this];let cur=this.parentFrame;while(cur){stack.push(cur);cur=cur.parentFrame;}\nreturn stack;},getUserFriendlyStackTrace(){return this.stackTrace.map(function(x){return x.title;});}};return{StackFrame,};});'use strict';tr.exportTo('tr.model.um',function(){class UserModel extends tr.model.EventContainer{constructor(parentModel){super();this.parentModel_=parentModel;this.expectations_=new tr.model.EventSet();this.segments_=[];}\nget stableId(){return'UserModel';}\nget parentModel(){return this.parentModel_;}\nsortExpectations(){this.expectations_.sortEvents((x,y)=>(x.start-y.start));}\nget expectations(){return this.expectations_;}\nshiftTimestampsForward(amount){}\naddCategoriesToDict(categoriesDict){}\nget segments(){return this.segments_;}*childEvents(){yield*this.expectations;}*childEventContainers(){}\nupdateBounds(){this.bounds.reset();for(const expectation of this.expectations){expectation.addBoundsToRange(this.bounds);}}\nresegment(getKeyForSegment){const newSegments=[];let prevKey=undefined;let prevSegment=undefined;for(let i=0;i<this.segments.length;++i){const segment=this.segments[i];const key=getKeyForSegment(segment,i);if(prevSegment!==undefined&&key===prevKey){prevSegment.addSegment(segment);}else{prevSegment=segment.clone();newSegments.push(prevSegment);}\nprevKey=key;}\nreturn newSegments;}}\nreturn{UserModel,};});'use strict';tr.exportTo('tr',function(){const Process=tr.model.Process;const Device=tr.model.Device;const Kernel=tr.model.Kernel;const GlobalMemoryDump=tr.model.GlobalMemoryDump;const GlobalInstantEvent=tr.model.GlobalInstantEvent;const FlowEvent=tr.model.FlowEvent;const Alert=tr.model.Alert;const Sample=tr.model.Sample;function Model(){tr.model.EventContainer.call(this);tr.b.EventTarget.decorate(this);this.timestampShiftToZeroAmount_=0;this.faviconHue='blue';this.device=new Device(this);this.kernel=new Kernel(this);this.processes={};this.metadata=[];this.categories=[];this.instantEvents=[];this.flowEvents=[];this.clockSyncManager=new tr.model.ClockSyncManager();this.intrinsicTimeUnit_=undefined;this.stackFrames={};this.samples=[];this.alerts=[];this.userModel=new tr.model.um.UserModel(this);this.flowIntervalTree=new tr.b.IntervalTree((f)=>f.start,(f)=>f.end);this.globalMemoryDumps=[];this.userFriendlyCategoryDrivers_=[];this.annotationsByGuid_={};this.modelIndices=undefined;this.stats=new tr.model.ModelStats();this.importWarnings_=[];this.reportedImportWarnings_={};this.isTimeHighResolution_=true;this.patchupsToApply_=[];this.doesHelperGUIDSupportThisModel_={};this.helpersByConstructorGUID_={};this.eventsByStableId_=undefined;}\nModel.prototype={__proto__:tr.model.EventContainer.prototype,getEventByStableId(stableId){if(this.eventsByStableId_===undefined){this.eventsByStableId_={};for(const event of this.getDescendantEvents()){this.eventsByStableId_[event.stableId]=event;}}\nreturn this.eventsByStableId_[stableId];},getOrCreateHelper(constructor){if(!constructor.guid){throw new Error('Helper constructors must have GUIDs');}\nif(this.helpersByConstructorGUID_[constructor.guid]===undefined){if(this.doesHelperGUIDSupportThisModel_[constructor.guid]===undefined){this.doesHelperGUIDSupportThisModel_[constructor.guid]=constructor.supportsModel(this);}\nif(!this.doesHelperGUIDSupportThisModel_[constructor.guid]){return undefined;}\nthis.helpersByConstructorGUID_[constructor.guid]=new constructor(this);}\nreturn this.helpersByConstructorGUID_[constructor.guid];},*childEvents(){yield*this.globalMemoryDumps;yield*this.instantEvents;yield*this.flowEvents;yield*this.alerts;yield*this.samples;},*childEventContainers(){yield this.userModel;yield this.device;yield this.kernel;yield*Object.values(this.processes);},iterateAllPersistableObjects(callback){this.kernel.iterateAllPersistableObjects(callback);for(const pid in this.processes){this.processes[pid].iterateAllPersistableObjects(callback);}},updateBounds(){this.bounds.reset();const bounds=this.bounds;for(const ec of this.childEventContainers()){ec.updateBounds();bounds.addRange(ec.bounds);}\nfor(const event of this.childEvents()){event.addBoundsToRange(bounds);}},shiftWorldToZero(){const shiftAmount=-this.bounds.min;this.timestampShiftToZeroAmount_=shiftAmount;for(const ec of this.childEventContainers()){ec.shiftTimestampsForward(shiftAmount);}\nfor(const event of this.childEvents()){event.start+=shiftAmount;}\nthis.updateBounds();},convertTimestampToModelTime(sourceClockDomainName,ts){if(sourceClockDomainName!=='traceEventClock'){throw new Error('Only traceEventClock is supported.');}\nreturn tr.b.Unit.timestampFromUs(ts)+\nthis.timestampShiftToZeroAmount_;},get numProcesses(){let n=0;for(const p in this.processes){n++;}\nreturn n;},getProcess(pid){return this.processes[pid];},getOrCreateProcess(pid){if(!this.processes[pid]){this.processes[pid]=new Process(this,pid);}\nreturn this.processes[pid];},addStackFrame(stackFrame){if(this.stackFrames[stackFrame.id]){throw new Error('Stack frame already exists');}\nthis.stackFrames[stackFrame.id]=stackFrame;return stackFrame;},updateCategories_(){const categoriesDict={};this.userModel.addCategoriesToDict(categoriesDict);this.device.addCategoriesToDict(categoriesDict);this.kernel.addCategoriesToDict(categoriesDict);for(const pid in this.processes){this.processes[pid].addCategoriesToDict(categoriesDict);}\nthis.categories=[];for(const category in categoriesDict){if(category!==''){this.categories.push(category);}}},getAllThreads(){const threads=[];for(const tid in this.kernel.threads){threads.push(process.threads[tid]);}\nfor(const pid in this.processes){const process=this.processes[pid];for(const tid in process.threads){threads.push(process.threads[tid]);}}\nreturn threads;},getAllProcesses(opt_predicate){const processes=[];for(const pid in this.processes){const process=this.processes[pid];if(opt_predicate===undefined||opt_predicate(process)){processes.push(process);}}\nreturn processes;},getAllCounters(){const counters=[];counters.push.apply(counters,Object.values(this.device.counters||{}));counters.push.apply(counters,Object.values(this.kernel.counters||{}));for(const pid in this.processes){const process=this.processes[pid];for(const tid in process.counters){counters.push(process.counters[tid]);}}\nreturn counters;},getAnnotationByGUID(guid){return this.annotationsByGuid_[guid];},addAnnotation(annotation){if(!annotation.guid){throw new Error('Annotation with undefined guid given');}\nthis.annotationsByGuid_[annotation.guid]=annotation;tr.b.dispatchSimpleEvent(this,'annotationChange');},removeAnnotation(annotation){this.annotationsByGuid_[annotation.guid].onRemove();delete this.annotationsByGuid_[annotation.guid];tr.b.dispatchSimpleEvent(this,'annotationChange');},getAllAnnotations(){return Object.values(this.annotationsByGuid_);},addUserFriendlyCategoryDriver(ufcd){this.userFriendlyCategoryDrivers_.push(ufcd);},getUserFriendlyCategoryFromEvent(event){for(let i=0;i<this.userFriendlyCategoryDrivers_.length;i++){const ufc=this.userFriendlyCategoryDrivers_[i].fromEvent(event);if(ufc!==undefined)return ufc;}\nreturn undefined;},findAllThreadsNamed(name){const namedThreads=[];namedThreads.push.apply(namedThreads,this.kernel.findAllThreadsNamed(name));for(const pid in this.processes){namedThreads.push.apply(namedThreads,this.processes[pid].findAllThreadsNamed(name));}\nreturn namedThreads;},get importOptions(){return this.importOptions_;},set importOptions(options){this.importOptions_=options;},get intrinsicTimeUnit(){if(this.intrinsicTimeUnit_===undefined){return tr.b.TimeDisplayModes.ms;}\nreturn this.intrinsicTimeUnit_;},set intrinsicTimeUnit(value){if(this.intrinsicTimeUnit_===value)return;if(this.intrinsicTimeUnit_!==undefined){throw new Error('Intrinsic time unit already set');}\nthis.intrinsicTimeUnit_=value;},get isTimeHighResolution(){return this.isTimeHighResolution_;},set isTimeHighResolution(value){this.isTimeHighResolution_=value;},get canonicalUrl(){return this.canonicalUrl_;},set canonicalUrl(value){if(this.canonicalUrl_===value)return;if(this.canonicalUrl_!==undefined){throw new Error('canonicalUrl already set');}\nthis.canonicalUrl_=value;},importWarning(data){data.showToUser=!!data.showToUser;this.importWarnings_.push(data);if(this.reportedImportWarnings_[data.type]===true)return;this.reportedImportWarnings_[data.type]=true;},get hasImportWarnings(){return(this.importWarnings_.length>0);},get importWarnings(){return this.importWarnings_;},get importWarningsThatShouldBeShownToUser(){return this.importWarnings_.filter(function(warning){return warning.showToUser;});},autoCloseOpenSlices(){this.samples.sort(function(x,y){return x.start-y.start;});this.updateBounds();this.kernel.autoCloseOpenSlices();for(const pid in this.processes){this.processes[pid].autoCloseOpenSlices();}},createSubSlices(){this.kernel.createSubSlices();for(const pid in this.processes){this.processes[pid].createSubSlices();}},preInitializeObjects(){for(const pid in this.processes){this.processes[pid].preInitializeObjects();}},initializeObjects(){for(const pid in this.processes){this.processes[pid].initializeObjects();}},pruneEmptyContainers(){this.kernel.pruneEmptyContainers();for(const pid in this.processes){this.processes[pid].pruneEmptyContainers();}},mergeKernelWithUserland(){for(const pid in this.processes){this.processes[pid].mergeKernelWithUserland();}},computeWorldBounds(shiftWorldToZero){this.updateBounds();this.updateCategories_();if(shiftWorldToZero){this.shiftWorldToZero();}},buildFlowEventIntervalTree(){for(let i=0;i<this.flowEvents.length;++i){const flowEvent=this.flowEvents[i];this.flowIntervalTree.insert(flowEvent);}\nthis.flowIntervalTree.updateHighValues();},cleanupUndeletedObjects(){for(const pid in this.processes){this.processes[pid].autoDeleteObjects(this.bounds.max);}},sortMemoryDumps(){this.globalMemoryDumps.sort(function(x,y){return x.start-y.start;});for(const pid in this.processes){this.processes[pid].sortMemoryDumps();}},finalizeMemoryGraphs(){this.globalMemoryDumps.forEach(function(dump){dump.finalizeGraph();});},buildEventIndices(){this.modelIndices=new tr.model.ModelIndices(this);},sortAlerts(){this.alerts.sort(function(x,y){return x.start-y.start;});},applyObjectRefPatchups(){const unresolved=[];this.patchupsToApply_.forEach(function(patchup){if(patchup.pidRef in this.processes){const snapshot=this.processes[patchup.pidRef].objects.getSnapshotAt(patchup.scopedId,patchup.ts);if(snapshot){patchup.object[patchup.field]=snapshot;snapshot.referencedAt(patchup.item,patchup.object,patchup.field);return;}}\nunresolved.push(patchup);},this);this.patchupsToApply_=unresolved;},replacePIDRefsInPatchups(oldPidRef,newPidRef){this.patchupsToApply_.forEach(function(patchup){if(patchup.pidRef===oldPidRef){patchup.pidRef=newPidRef;}});},joinRefs(){this.joinObjectRefs_();this.applyObjectRefPatchups();},joinObjectRefs_(){for(const[pid,process]of Object.entries(this.processes)){this.joinObjectRefsForProcess_(pid,process);}},joinObjectRefsForProcess_(pid,process){for(const thread of Object.values(process.threads)){thread.asyncSliceGroup.slices.forEach(function(item){this.searchItemForIDRefs_(pid,'start',item);},this);thread.sliceGroup.slices.forEach(function(item){this.searchItemForIDRefs_(pid,'start',item);},this);}\nprocess.objects.iterObjectInstances(function(instance){instance.snapshots.forEach(function(item){this.searchItemForIDRefs_(pid,'ts',item);},this);},this);},searchItemForIDRefs_(pid,itemTimestampField,item){if(!item.args&&!item.contexts)return;const patchupsToApply=this.patchupsToApply_;function handleField(object,fieldName,fieldValue){if(!fieldValue||(!fieldValue.id_ref&&!fieldValue.idRef)){return;}\nconst scope=fieldValue.scope||tr.model.OBJECT_DEFAULT_SCOPE;const idRef=fieldValue.id_ref||fieldValue.idRef;const scopedId=new tr.model.ScopedId(scope,idRef);const pidRef=fieldValue.pid_ref||fieldValue.pidRef||pid;const ts=item[itemTimestampField];patchupsToApply.push({item,object,field:fieldName,pidRef,scopedId,ts});}\nfunction iterObjectFieldsRecursively(object){if(!(object instanceof Object))return;if((object instanceof tr.model.ObjectSnapshot)||(object instanceof Float32Array)||(object instanceof tr.b.math.Quad)){return;}\nif(object instanceof Array){for(let i=0;i<object.length;i++){handleField(object,i,object[i]);iterObjectFieldsRecursively(object[i]);}\nreturn;}\nfor(const key in object){const value=object[key];handleField(object,key,value);iterObjectFieldsRecursively(value);}}\niterObjectFieldsRecursively(item.args);iterObjectFieldsRecursively(item.contexts);}};return{Model,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LATENCY_BOUNDS=tr.v.HistogramBinBoundaries.createLinear(0,20,100);function clockSyncLatencyMetric(values,model){const domains=Array.from(model.clockSyncManager.domainsSeen).sort();for(let i=0;i<domains.length;i++){for(let j=i+1;j<domains.length;j++){const latency=model.clockSyncManager.getTimeTransformerError(domains[i],domains[j]);const hist=new tr.v.Histogram('clock_sync_latency_'+\ndomains[i].toLowerCase()+'_to_'+domains[j].toLowerCase(),tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,LATENCY_BOUNDS);hist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false,});hist.description='Clock sync latency for domain '+domains[i]+' to domain '+domains[j];hist.addSample(latency);values.addHistogram(hist);}}}\ntr.metrics.MetricRegistry.register(clockSyncLatencyMetric);return{clockSyncLatencyMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CPU_TIME_PERCENTAGE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.01,50,200);function cpuTimeMetric(histograms,model,opt_options){let rangeOfInterest=model.bounds;if(opt_options&&opt_options.rangeOfInterest){rangeOfInterest=opt_options.rangeOfInterest;}else{const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper){const chromeBounds=chromeHelper.chromeBounds;if(chromeBounds){rangeOfInterest=chromeBounds;}}}\nlet allProcessCpuTime=0;for(const pid in model.processes){const process=model.processes[pid];if(tr.model.helpers.ChromeRendererHelper.isTracingProcess(process)){continue;}\nlet processCpuTime=0;for(const tid in process.threads){const thread=process.threads[tid];processCpuTime+=thread.getCpuTimeForRange(rangeOfInterest);}\nallProcessCpuTime+=processCpuTime;}\nlet normalizedAllProcessCpuTime=0;if(rangeOfInterest.duration>0){normalizedAllProcessCpuTime=allProcessCpuTime/rangeOfInterest.duration;}\nconst unit=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const cpuTimeHist=new tr.v.Histogram('cpu_time_percentage',unit,CPU_TIME_PERCENTAGE_BOUNDARIES);cpuTimeHist.description='Percent CPU utilization, normalized against a single core. Can be '+'greater than 100% if machine has multiple cores.';cpuTimeHist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false});cpuTimeHist.addSample(normalizedAllProcessCpuTime);histograms.addHistogram(cpuTimeHist);}\ntr.metrics.MetricRegistry.register(cpuTimeMetric,{supportsRangeOfInterest:true});return{cpuTimeMetric,};});'use strict';tr.exportTo('tr.v',function(){class HistogramDeserializer{static deserialize(data){const deserializer=new HistogramDeserializer(data[0],data[1]);return data.slice(2).map(datum=>tr.v.Histogram.deserialize(datum,deserializer));}\nconstructor(objects,diagnostics){this.objects_=objects;this.diagnostics_=[];for(const[type,diagnosticsByName]of Object.entries(diagnostics||{})){for(const[name,diagnosticsById]of Object.entries(diagnosticsByName)){for(const[id,data]of Object.entries(diagnosticsById)){const diagnostic=tr.v.d.Diagnostic.deserialize(type,data,this);this.diagnostics_[parseInt(id)]={name,diagnostic};}}}}\ngetObject(id){return this.objects_[id];}\ngetDiagnostic(id){return this.diagnostics_[parseInt(id)];}}\nreturn{HistogramDeserializer};});'use strict';tr.exportTo('tr.v',function(){class HistogramGrouping{constructor(key,callback){this.key_=key;this.callback_=callback;HistogramGrouping.BY_KEY.set(key,this);}\nget key(){return this.key_;}\nget callback(){return this.callback_;}\nget label(){return this.key;}\nstatic buildFromTags(tags,diagnosticName){const booleanTags=new Set();const keyValueTags=new Set();for(const tag of tags){if(tag.includes(':')){const key=tag.split(':')[0];if(booleanTags.has(key)){throw new Error(`Tag \"${key}\" cannot be both boolean and key-value`);}\nkeyValueTags.add(key);}else{if(keyValueTags.has(tag)){throw new Error(`Tag \"${tag}\" cannot be both boolean and key-value`);}\nbooleanTags.add(tag);}}\nconst groupings=[];for(const tag of booleanTags){groupings.push(HistogramGrouping.buildBooleanTagGrouping_(tag,diagnosticName));}\nfor(const tag of keyValueTags){groupings.push(HistogramGrouping.buildKeyValueTagGrouping_(tag,diagnosticName));}\nreturn groupings;}\nstatic buildBooleanTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined||!tags.has(tag))return`~${tag}`;return tag;});}\nstatic buildKeyValueTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined)return`~${tag}`;const values=new Set();for(const value of tags){const kvp=value.split(':');if(kvp.length<2||kvp[0]!==tag)continue;values.add(kvp[1]);}\nif(values.size===0)return`~${tag}`;const sortedValues=Array.from(values);sortedValues.sort();return sortedValues.join(',');},`${tag} tag`);}}\nHistogramGrouping.BY_KEY=new Map();HistogramGrouping.HISTOGRAM_NAME=new HistogramGrouping('name',h=>h.name);HistogramGrouping.DISPLAY_LABEL=new HistogramGrouping('displayLabel',hist=>{const labels=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.LABELS);if(labels!==undefined&&labels.size>0){return Array.from(labels).join(',');}\nconst benchmarks=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARKS);const start=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);if(benchmarks===undefined){if(start===undefined)return'Value';return start.toString();}\nconst benchmarksStr=Array.from(benchmarks).join('\\n');if(start===undefined)return benchmarksStr;return benchmarksStr+'\\n'+start.toString();});class GenericSetGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}\ncompute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';const parts=Array.from(diag);parts.sort();return parts.join(',');}}\nGenericSetGrouping.NAMES=[tr.v.d.RESERVED_NAMES.ARCHITECTURES,tr.v.d.RESERVED_NAMES.BENCHMARKS,tr.v.d.RESERVED_NAMES.BOTS,tr.v.d.RESERVED_NAMES.BUILDS,tr.v.d.RESERVED_NAMES.DEVICE_IDS,tr.v.d.RESERVED_NAMES.MASTERS,tr.v.d.RESERVED_NAMES.MEMORY_AMOUNTS,tr.v.d.RESERVED_NAMES.OS_NAMES,tr.v.d.RESERVED_NAMES.OS_VERSIONS,tr.v.d.RESERVED_NAMES.PRODUCT_VERSIONS,tr.v.d.RESERVED_NAMES.STORIES,tr.v.d.RESERVED_NAMES.STORYSET_REPEATS,tr.v.d.RESERVED_NAMES.STORY_TAGS,tr.v.d.RESERVED_NAMES.TEST_PATH,];for(const name of GenericSetGrouping.NAMES){new GenericSetGrouping(name);}\nclass DateRangeGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}\ncompute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';return diag.toString();}}\nDateRangeGrouping.NAMES=[tr.v.d.RESERVED_NAMES.BENCHMARK_START,tr.v.d.RESERVED_NAMES.TRACE_START,];for(const name of DateRangeGrouping.NAMES){new DateRangeGrouping(name);}\nreturn{HistogramGrouping,GenericSetGrouping,DateRangeGrouping,};});'use strict';tr.exportTo('tr.v',function(){class HistogramSet{constructor(opt_histograms){this.histograms_=new Set();this.sharedDiagnosticsByGuid_=new Map();if(opt_histograms!==undefined){for(const hist of opt_histograms){this.addHistogram(hist);}}}\nhas(hist){return this.histograms_.has(hist);}\ncreateHistogram(name,unit,samples,opt_options){const hist=tr.v.Histogram.create(name,unit,samples,opt_options);this.addHistogram(hist);return hist;}\naddHistogram(hist,opt_diagnostics){if(this.has(hist)){throw new Error('Cannot add same Histogram twice');}\nif(opt_diagnostics!==undefined){if(!(opt_diagnostics instanceof Map)){opt_diagnostics=Object.entries(opt_diagnostics);}\nfor(const[name,diagnostic]of opt_diagnostics){hist.diagnostics.set(name,diagnostic);}}\nthis.histograms_.add(hist);}\naddSharedDiagnosticToAllHistograms(name,diagnostic){this.addSharedDiagnostic(diagnostic);for(const hist of this){hist.diagnostics.set(name,diagnostic);}}\naddSharedDiagnostic(diagnostic){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}\nget length(){return this.histograms_.size;}*[Symbol.iterator](){for(const hist of this.histograms_){yield hist;}}\ngetHistogramsNamed(name){return[...this].filter(h=>h.name===name);}\ngetHistogramNamed(name){const histograms=this.getHistogramsNamed(name);if(histograms.length===0)return undefined;if(histograms.length>1){throw new Error(`Unexpectedly found multiple histograms named \"${name}\"`);}\nreturn histograms[0];}\nlookupDiagnostic(guid){return this.sharedDiagnosticsByGuid_.get(guid);}\ndeserialize(data){for(const hist of tr.v.HistogramDeserializer.deserialize(data)){this.addHistogram(hist);}}\nimportDicts(dicts){if((dicts instanceof Array)&&(dicts.length>2)&&(dicts[0]instanceof Array)){this.deserialize(dicts);return;}\nfor(const dict of dicts){this.importLegacyDict(dict);}}\nimportLegacyDict(dict){if(dict.type!==undefined){if(dict.type==='TagMap')return;if(!tr.v.d.Diagnostic.findTypeInfoWithName(dict.type)){throw new Error('Unrecognized shared diagnostic type '+dict.type);}\nthis.sharedDiagnosticsByGuid_.set(dict.guid,tr.v.d.Diagnostic.fromDict(dict));}else{const hist=tr.v.Histogram.fromDict(dict);this.addHistogram(hist);hist.diagnostics.resolveSharedDiagnostics(this,true);}}\nasDicts(){const dicts=[];for(const diagnostic of this.sharedDiagnosticsByGuid_.values()){dicts.push(diagnostic.asDict());}\nfor(const hist of this){dicts.push(hist.asDict());}\nreturn dicts;}\nget sourceHistograms(){const diagnosticNames=new Set();for(const hist of this){for(const diagnostic of hist.diagnostics.values()){if(!(diagnostic instanceof tr.v.d.RelatedNameMap))continue;for(const name of diagnostic.values()){diagnosticNames.add(name);}}}\nconst sourceHistograms=new HistogramSet;for(const hist of this){if(!diagnosticNames.has(hist.name)){sourceHistograms.addHistogram(hist);}}\nreturn sourceHistograms;}\ngroupHistogramsRecursively(groupings,opt_skipGroupingCallback){function recurse(histograms,level){if(level===groupings.length){return histograms;}\nconst grouping=groupings[level];const groupedHistograms=tr.b.groupIntoMap(histograms,grouping.callback);if(opt_skipGroupingCallback&&opt_skipGroupingCallback(grouping,groupedHistograms)){return recurse(histograms,level+1);}\nfor(const[key,group]of groupedHistograms){groupedHistograms.set(key,recurse(group,level+1));}\nreturn groupedHistograms;}\nreturn recurse([...this],0);}\ndeduplicateDiagnostics(){const namesToCandidates=new Map();const diagnosticsToHistograms=new Map();const keysToDiagnostics=new Map();for(const hist of this){for(const[name,candidate]of hist.diagnostics){if(candidate.equals===undefined){this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);continue;}\nconst hashKey=candidate.hashKey;if(candidate.hashKey!==undefined){if(keysToDiagnostics.has(hashKey)){hist.diagnostics.set(name,keysToDiagnostics.get(hashKey));}else{keysToDiagnostics.set(hashKey,candidate);this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);}\ncontinue;}\nif(diagnosticsToHistograms.get(candidate)===undefined){diagnosticsToHistograms.set(candidate,[hist]);}else{diagnosticsToHistograms.get(candidate).push(hist);}\nif(!namesToCandidates.has(name)){namesToCandidates.set(name,new Set());}\nnamesToCandidates.get(name).add(candidate);}}\nfor(const[name,candidates]of namesToCandidates){const deduplicatedDiagnostics=new Set();for(const candidate of candidates){let found=false;for(const test of deduplicatedDiagnostics){if(candidate.equals(test)){const hists=diagnosticsToHistograms.get(candidate);for(const hist of hists){hist.diagnostics.set(name,test);}\nfound=true;break;}}\nif(!found){deduplicatedDiagnostics.add(candidate);}\nfor(const diagnostic of deduplicatedDiagnostics){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}}}}\nbuildGroupingsFromTags(names){const tags=new Map();for(const hist of this){for(const name of names){if(!hist.diagnostics.has(name))continue;if(!tags.has(name))tags.set(name,new Set());for(const tag of hist.diagnostics.get(name)){tags.get(name).add(tag);}}}\nconst groupings=[];for(const[name,values]of tags){const built=tr.v.HistogramGrouping.buildFromTags(values,name);for(const grouping of built){groupings.push(grouping);}}\nreturn groupings;}}\nreturn{HistogramSet};});'use strict';tr.exportTo('tr.e.chrome',function(){function hasTitleAndCategory(event,title,category){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}\nfunction getNavStartTimestamps(rendererHelper){const navStartTimestamps=[];for(const e of rendererHelper.mainThread.sliceGroup.childEvents()){if(hasTitleAndCategory(e,'navigationStart','blink.user_timing')){navStartTimestamps.push(e.start);}}\nreturn navStartTimestamps;}\nfunction getInteractiveTimestamps(model){const interactiveTimestampsMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const timestamps=[];interactiveTimestampsMap.set(rendererHelper.pid,timestamps);}\nfor(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nif(expectation.timeToInteractive===undefined)continue;if(interactiveTimestampsMap.get(expectation.renderProcess.pid)===undefined){interactiveTimestampsMap.set(expectation.renderProcess.pid,[]);}\ninteractiveTimestampsMap.get(expectation.renderProcess.pid).push(expectation.timeToInteractive);}\nreturn interactiveTimestampsMap;}\nfunction getPostInteractiveTaskWindows(interactiveTimestamps,navStartTimestamps,traceEndTimestamp){let navStartTsIndex=0;let lastTaskWindowEndTs=undefined;const taskWindows=[];for(const currTTI of interactiveTimestamps){while(navStartTsIndex<navStartTimestamps.length&&navStartTimestamps[navStartTsIndex]<currTTI){navStartTsIndex++;}\nconst taskWindowEndTs=navStartTsIndex<navStartTimestamps.length?navStartTimestamps[navStartTsIndex]:traceEndTimestamp;if(taskWindowEndTs===lastTaskWindowEndTs){throw Error('Encountered two consecutive interactive timestamps '+'with no navigationStart between them. '+'PostInteractiveTaskWindow is not well defined in this case.');}\ntaskWindows.push(tr.b.math.Range.fromExplicitRange(currTTI,taskWindowEndTs));lastTaskWindowEndTs=taskWindowEndTs;}\nreturn taskWindows;}\nfunction contributionToEQT(window,task){const startInWindow=Math.max(window.min,task.start);const endInWindow=Math.min(window.max,task.end);const durationInWindow=endInWindow-startInWindow;if(durationInWindow<=0)return 0;const probabilityOfTask=durationInWindow/(window.max-window.min);const minQueueingTime=task.end-endInWindow;const maxQueueingTime=task.end-startInWindow;const expectedQueueingTimeDueToTask=(maxQueueingTime+minQueueingTime)/2;return probabilityOfTask*expectedQueueingTimeDueToTask;}\nfunction weightedExpectedQueueingTime(window,weightedTasks){let result=0;for(const task of weightedTasks){result+=contributionToEQT(window,task)*task.weight;}\nreturn result;}\nfunction expectedQueueingTime(window,tasks){return weightedExpectedQueueingTime(window,tasks.map(function(task){return{start:task.start,end:task.end,weight:1};}));}\nclass SlidingWindow{constructor(startTime,windowSize,sortedTasks){this.windowSize_=windowSize;this.sortedTasks_=sortedTasks;this.range_=tr.b.math.Range.fromExplicitRange(startTime,startTime+windowSize);this.firstTaskIndex_=sortedTasks.findIndex(task=>startTime<task.end);if(this.firstTaskIndex_===-1){this.firstTaskIndex_=sortedTasks.length;}\nthis.lastTaskIndex_=-1;while(this.lastTaskIndex_+1<sortedTasks.length&&sortedTasks[this.lastTaskIndex_+1].start<startTime+windowSize){this.lastTaskIndex_++;}\nthis.innerEQT_=0;for(let i=this.firstTaskIndex_+1;i<this.lastTaskIndex_;i++){this.innerEQT_+=contributionToEQT(this.range_,sortedTasks[i]);}}\nget getEQT(){let firstTaskEQT=0;if(this.firstTaskIndex_<this.sortedTasks_.length){firstTaskEQT=contributionToEQT(this.range_,this.sortedTasks_[this.firstTaskIndex_]);}\nlet lastTaskEQT=0;if(this.firstTaskIndex_<this.lastTaskIndex_){lastTaskEQT=contributionToEQT(this.range_,this.sortedTasks_[this.lastTaskIndex_]);}\nreturn firstTaskEQT+this.innerEQT_+lastTaskEQT;}\nslide(t){this.range_=tr.b.math.Range.fromExplicitRange(t,t+this.windowSize_);if(this.firstTaskIndex_<this.sortedTasks_.length&&this.sortedTasks_[this.firstTaskIndex_].end<=t){this.firstTaskIndex_++;if(this.firstTaskIndex_<this.lastTaskIndex_){this.innerEQT_-=contributionToEQT(this.range_,this.sortedTasks_[this.firstTaskIndex_]);}}\nif(this.lastTaskIndex_+1<this.sortedTasks_.length&&this.sortedTasks_[this.lastTaskIndex_+1].start<t+this.windowSize_){if(this.firstTaskIndex_<this.lastTaskIndex_){this.innerEQT_+=contributionToEQT(this.range_,this.sortedTasks_[this.lastTaskIndex_]);}\nthis.lastTaskIndex_++;}}}\nfunction maxExpectedQueueingTimeInSlidingWindow(startTime,endTime,windowSize,tasks){if(windowSize<=0){throw Error('The window size must be positive number');}\nif(startTime+windowSize>endTime){throw Error('The sliding window must fit in the specified time range');}\nconst sortedTasks=tasks.slice().sort((a,b)=>a.start-b.start);for(let i=1;i<sortedTasks.length;i++){if(sortedTasks[i-1].end>sortedTasks[i].start){const midpoint=(sortedTasks[i-1].end+sortedTasks[i].start)/2;sortedTasks[i-1].end=midpoint;sortedTasks[i].start=midpoint;}}\nlet endpoints=[];endpoints.push(startTime);endpoints.push(endTime-windowSize);for(const task of tasks){endpoints.push(task.start-windowSize);endpoints.push(task.start);endpoints.push(task.end-windowSize);endpoints.push(task.end);}\nendpoints=endpoints.filter(x=>(startTime<=x&&x+windowSize<=endTime));endpoints.sort((a,b)=>a-b);const slidingWindow=new SlidingWindow(endpoints[0],windowSize,sortedTasks);let maxEQT=0;for(const t of endpoints){slidingWindow.slide(t);maxEQT=Math.max(maxEQT,slidingWindow.getEQT);}\nreturn maxEQT;}\nreturn{getPostInteractiveTaskWindows,getNavStartTimestamps,getInteractiveTimestamps,expectedQueueingTime,maxExpectedQueueingTimeInSlidingWindow,weightedExpectedQueueingTime};});'use strict';tr.exportTo('tr.e.v8',function(){class RuntimeStatsEntry{constructor(name,count,time){this.name_=name;this.count_=count;this.time_=time;}\nget name(){return this.name_;}\nget count(){return this.count_;}\nget time(){return this.time_;}\naddSample(count,time){this.count_+=count;this.time_+=time;}}\nclass RuntimeStatsGroup extends RuntimeStatsEntry{constructor(name,matchRegex){super(name,0,0);this.regex_=matchRegex;this.entries_=new Map();}\nmatch(name){return this.regex_&&name.match(this.regex_);}\nadd(entry){const value=this.entries_.get(entry.name);if(value!==undefined){value.addSample(entry.count,entry.time);}else{this.entries_.set(entry.name,entry);}\nthis.count_+=entry.count;this.time_+=entry.time;}\nget values(){return Array.from(this.entries_.values());}}\nclass RuntimeStatsGroupCollection{constructor(){this.blink_cpp_group_=new RuntimeStatsGroup('Blink C++',/.*Callback.*/);this.api_group_=new RuntimeStatsGroup('API',/.*API.*/);this.groups_=[new RuntimeStatsGroup('Total'),new RuntimeStatsGroup('IC',/.*IC_.*/),new RuntimeStatsGroup('Optimize-Background',/(.*OptimizeBackground.*)|RecompileConcurrent.*/),new RuntimeStatsGroup('Optimize',/StackGuard|.*Optimize.*|.*Deoptimize.*|Recompile.*/),new RuntimeStatsGroup('Compile-Background',/(.*CompileBackground.*)/),new RuntimeStatsGroup('Compile',/(^Compile.*)|(.*_Compile.*)/),new RuntimeStatsGroup('Parse-Background',/.*ParseBackground.*/),new RuntimeStatsGroup('Parse',/.*Parse.*/),this.blink_cpp_group_,this.api_group_,new RuntimeStatsGroup('GC-Background-Marking',/.*GC.MC.BACKGROUND.*MARKING.*/),new RuntimeStatsGroup('GC-Background-Sweeping',/.*GC.MC.BACKGROUND.*SWEEPING.*/),new RuntimeStatsGroup('GC-Background-Scavenger',/.*GC.SCAVENGER.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MinorMC',/.*GC.MINOR_MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MajorMC',/.*GC.MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-Other',/.*GC.*BACKGROUND.*/),new RuntimeStatsGroup('GC',/GC|AllocateInTargetSpace/),new RuntimeStatsGroup('JavaScript',/JS_Execution/),new RuntimeStatsGroup('V8 C++',/.*/)];this.blink_group_collection_=null;}\naddSlices(slices){const blinkEntries=[];for(const slice of slices){if(!(slice instanceof tr.e.v8.V8ThreadSlice))return;let runtimeCallStats;try{runtimeCallStats=JSON.parse(slice.runtimeCallStats);}catch(e){runtimeCallStats=slice.runtimeCallStats;}\nif(runtimeCallStats===undefined)continue;for(const[name,stat]of Object.entries(runtimeCallStats)){if(name.match(/Blink_.*/)){if(name==='Blink_V8')continue;const entry=new RuntimeStatsEntry(name,stat[0],stat[1]);blinkEntries.push(entry);continue;}\nfor(let i=1;i<this.groups_.length;++i){if(this.groups_[i].match(name)){if(stat.length!==2)break;const entry=new RuntimeStatsEntry(name,stat[0],stat[1]);this.groups_[0].addSample(stat[0],stat[1]);this.groups_[i].add(entry);break;}}}}\nthis.blink_group_collection_=new BlinkRuntimeStatsGroupCollection(blinkEntries);}\nget totalTime(){return this.groups_[0].time;}\nget totalCount(){return this.groups_[0].count;}\nget runtimeGroups(){return this.groups_;}\nget blinkRCSGroupCollection(){return this.blink_group_collection_;}\nget blinkCppTotalTime(){return this.blink_cpp_group_.time+this.api_group_.time;}}\nclass BlinkRuntimeStatsGroupCollection{constructor(entries){this.groups_=[new RuntimeStatsGroup('Blink_Bindings',/^Blink_Bindings_(.*)/),new RuntimeStatsGroup('Blink_GC',/^Blink_GC_(.*)/),new RuntimeStatsGroup('Blink_Layout',/^Blink_Layout_(.*)/),new RuntimeStatsGroup('Blink_Parsing',/^Blink_Parsing_(.*)/),new RuntimeStatsGroup('Blink_Style',/^Blink_Style_(.*)/),new RuntimeStatsGroup('Blink_Callbacks',/^Blink_(.*)/)];this.total_group_=new RuntimeStatsGroup('Blink_Total',/.*/);for(const entry of entries){for(const group of this.groups_){if(group.match(entry.name)){const newEntry=new RuntimeStatsEntry('Blink_'+group.match(entry.name)[1],entry.count,entry.time);group.add(newEntry);this.total_group_.addSample(entry.count,entry.time);break;}}}}\nget runtimeGroups(){return this.groups_.concat(this.total_group_);}\nget values(){return this.groups_.reduce((values,group)=>values.concat(group.values),[]);}\nget totalTime(){return this.total_group_.time;}\nget totalCount(){return this.total_group_.count;}}\nreturn{BlinkRuntimeStatsGroupCollection,RuntimeStatsEntry,RuntimeStatsGroup,RuntimeStatsGroupCollection,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const WINDOW_SIZE_MS=500;const EQT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.01,WINDOW_SIZE_MS,50);function containsForcedGC_(slice){return slice.findTopmostSlicesRelativeToThisSlice(tr.metrics.v8.utils.isForcedGarbageCollectionEvent).length>0;}\nfunction getOrCreateHistogram_(histograms,name,description){return histograms.getHistogramNamed(name)||histograms.createHistogram(name,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:EQT_BOUNDARIES,description,summaryOptions:{avg:false,count:false,max:true,min:false,std:false,sum:false,},});}\nfunction expectedQueueingTimeMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);addExpectedQueueingTimeMetric_('renderer_eqt',event=>{return{start:event.start,duration:event.duration};},false,rendererHelpers,histograms,model);}\nfunction addExpectedQueueingTimeMetric_(eqtName,getEventTimes,isCpuTime,rendererHelpers,histograms,model){function getTasks(rendererHelper){const tasks=[];for(const slice of\ntr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread)){const times=getEventTimes(slice);if(times.duration>0&&!containsForcedGC_(slice)){tasks.push({start:times.start,end:times.start+times.duration});}}\nreturn tasks;}\nconst totalHistogram=getOrCreateHistogram_(histograms,`total:${WINDOW_SIZE_MS}ms_window:${eqtName}`,`The maximum EQT in a ${WINDOW_SIZE_MS}ms sliding window`+' for a given renderer');for(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;if(rendererHelper.mainThread.bounds.duration<WINDOW_SIZE_MS)continue;const tasks=getTasks(rendererHelper);const totalBreakdown=getV8Contribution_(eqtName,getEventTimes,isCpuTime,totalHistogram,histograms,rendererHelper,model);totalHistogram.addSample(tr.e.chrome.maxExpectedQueueingTimeInSlidingWindow(rendererHelper.mainThread.bounds.min,rendererHelper.mainThread.bounds.max,WINDOW_SIZE_MS,tasks),{v8:totalBreakdown});}}\nfunction getV8Contribution_(eqtName,getEventTimes,isCpuTime,totalEqtHistogram,histograms,rendererHelper,model){if(!model.categories.includes('v8'))return null;const totalBreakdown=new tr.v.d.Breakdown();const eventNamesWithTaskExtractors=getV8EventNamesWithTaskExtractors_(getEventTimes);if(!isCpuTime){const taskExtractorsUsingRCS=getV8EventNamesWithTaskExtractorsUsingRCS_(getEventTimes);for(const[eventName,getTasks]of taskExtractorsUsingRCS){eventNamesWithTaskExtractors.set(eventName,getTasks);}}\nlet totalNames=totalEqtHistogram.diagnostics.get('v8');if(!totalNames){totalNames=new tr.v.d.RelatedNameMap();totalEqtHistogram.diagnostics.set('v8',totalNames);}\nfor(const[eventName,getTasks]of eventNamesWithTaskExtractors){const totalHistogram=getOrCreateHistogram_(histograms,`total:${WINDOW_SIZE_MS}ms_window:${eqtName}:${eventName}`,`Contribution to the expected queueing time by ${eventName}`+' for a given renderer. It is computed as the maximum EQT in'+` a ${WINDOW_SIZE_MS}ms sliding window after shrinking top-level`+` tasks to contain only ${eventName} subevents`);const tasks=getTasks(rendererHelper);const totalSample=tr.e.chrome.maxExpectedQueueingTimeInSlidingWindow(rendererHelper.mainThread.bounds.min,rendererHelper.mainThread.bounds.max,WINDOW_SIZE_MS,tasks);totalHistogram.addSample(totalSample);totalBreakdown.set(eventName,totalSample);totalNames.set(eventName,totalHistogram.name);}\nreturn totalBreakdown;}\nfunction getV8EventNamesWithTaskExtractors_(getEventTimes,cpuMetrics){function durationOfTopmostSubSlices(slice,predicate,excludePredicate){let duration=0;for(const sub of slice.findTopmostSlicesRelativeToThisSlice(predicate)){duration+=getEventTimes(sub).duration;if(excludePredicate!==null&&excludePredicate!==undefined){duration-=durationOfTopmostSubSlices(sub,excludePredicate);}}\nreturn duration;}\nfunction taskExtractor(predicate,excludePredicate){return function(rendererHelper){const slices=tr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread);const result=[];for(const slice of slices){const times=getEventTimes(slice);if(times.duration>0&&!containsForcedGC_(slice)){const duration=durationOfTopmostSubSlices(slice,predicate,excludePredicate);result.push({start:times.start,end:times.start+duration});}}\nreturn result;};}\nreturn new Map([['v8',taskExtractor(tr.metrics.v8.utils.isV8Event)],['v8:execute',taskExtractor(tr.metrics.v8.utils.isV8ExecuteEvent)],['v8:gc',taskExtractor(tr.metrics.v8.utils.isGarbageCollectionEvent)]]);}\nfunction extractTaskRCS(getEventTimes,predicate,rendererHelper){const result=[];for(const topSlice of\nrendererHelper.mainThread.sliceGroup.topLevelSlices){const times=getEventTimes(topSlice);if(times.duration<=0||containsForcedGC_(topSlice)){continue;}\nconst v8ThreadSlices=[];for(const slice of topSlice.descendentSlices){if(tr.metrics.v8.utils.isV8RCSEvent(slice)){v8ThreadSlices.push(slice);}}\nconst runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8ThreadSlices);let duration=0;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){if(predicate(runtimeGroup.name)){duration+=runtimeGroup.time;}}\nduration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);result.push({start:times.start,end:times.start+duration});}\nreturn result;}\nfunction getV8EventNamesWithTaskExtractorsUsingRCS_(getEventTimes){const extractors=new Map();extractors.set('v8:compile_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileRCSCategory,rendererHelper));extractors.set('v8:compile:optimize_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileOptimizeRCSCategory,rendererHelper));return extractors;}\ntr.metrics.MetricRegistry.register(expectedQueueingTimeMetric);return{expectedQueueingTimeMetric,};});'use strict';tr.exportTo('tr.b',function(){function MultiDimensionalViewNode(title,valueCount){this.title=title;const dimensions=title.length;this.children=new Array(dimensions);for(let i=0;i<dimensions;i++){this.children[i]=new Map();}\nthis.values=new Array(valueCount);for(let v=0;v<valueCount;v++){this.values[v]={self:0,total:0,totalState:NOT_PROVIDED};}}\nMultiDimensionalViewNode.TotalState={NOT_PROVIDED:0,LOWER_BOUND:1,EXACT:2};const NOT_PROVIDED=MultiDimensionalViewNode.TotalState.NOT_PROVIDED;const LOWER_BOUND=MultiDimensionalViewNode.TotalState.LOWER_BOUND;const EXACT=MultiDimensionalViewNode.TotalState.EXACT;MultiDimensionalViewNode.prototype={get subRows(){return Array.from(this.children[0].values());}};function MultiDimensionalViewBuilder(dimensions,valueCount){if(typeof(dimensions)!=='number'||dimensions<0){throw new Error('Dimensions must be a non-negative number');}\nthis.dimensions_=dimensions;if(typeof(valueCount)!=='number'||valueCount<0){throw new Error('Number of values must be a non-negative number');}\nthis.valueCount_=valueCount;this.buildRoot_=this.createRootNode_();this.topDownTreeViewRoot_=undefined;this.topDownHeavyViewRoot_=undefined;this.bottomUpHeavyViewNode_=undefined;this.complete_=false;this.maxDimensionDepths_=new Array(dimensions);for(let d=0;d<dimensions;d++){this.maxDimensionDepths_[d]=0;}}\nMultiDimensionalViewBuilder.ValueKind={SELF:0,TOTAL:1};MultiDimensionalViewBuilder.ViewType={TOP_DOWN_TREE_VIEW:0,TOP_DOWN_HEAVY_VIEW:1,BOTTOM_UP_HEAVY_VIEW:2};MultiDimensionalViewBuilder.prototype={addPath(path,values,valueKind){if(this.buildRoot_===undefined){throw new Error('Paths cannot be added after either view has been built');}\nif(path.length!==this.dimensions_){throw new Error('Path must be '+this.dimensions_+'-dimensional');}\nif(values.length!==this.valueCount_){throw new Error('Must provide '+this.valueCount_+' values');}\nlet isTotal;switch(valueKind){case MultiDimensionalViewBuilder.ValueKind.SELF:isTotal=false;break;case MultiDimensionalViewBuilder.ValueKind.TOTAL:isTotal=true;break;default:throw new Error('Invalid value kind: '+valueKind);}\nlet node=this.buildRoot_;for(let d=0;d<path.length;d++){const singleDimensionPath=path[d];const singleDimensionPathLength=singleDimensionPath.length;this.maxDimensionDepths_[d]=Math.max(this.maxDimensionDepths_[d],singleDimensionPathLength);for(let i=0;i<singleDimensionPathLength;i++){node=this.getOrCreateChildNode_(node,d,singleDimensionPath[i]);}}\nfor(let v=0;v<this.valueCount_;v++){const addedValue=values[v];if(addedValue===undefined)continue;const nodeValue=node.values[v];if(isTotal){nodeValue.total+=addedValue;nodeValue.totalState=EXACT;}else{nodeValue.self+=addedValue;nodeValue.totalState=Math.max(nodeValue.totalState,LOWER_BOUND);}}},get complete(){return this.complete_;},set complete(isComplete){if(this.buildRoot_===undefined){throw new Error('Can\\'t set complete after any view has been built.');}\nthis.complete_=isComplete;},buildView(viewType){switch(viewType){case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW:return this.buildTopDownTreeView();case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW:return this.buildTopDownHeavyView();case MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW:return this.buildBottomUpHeavyView();default:throw new Error('Unknown multi-dimensional view type: '+viewType);}},buildTopDownTreeView(){if(this.topDownTreeViewRoot_===undefined){const treeViewRoot=this.buildRoot_;this.buildRoot_=undefined;this.setUpMissingChildRelationships_(treeViewRoot,0);this.finalizeTotalValues_(treeViewRoot,0,new WeakMap());this.topDownTreeViewRoot_=treeViewRoot;}\nreturn this.topDownTreeViewRoot_;},buildTopDownHeavyView(){if(this.topDownHeavyViewRoot_===undefined){this.topDownHeavyViewRoot_=this.buildGenericHeavyView_(this.addDimensionToTopDownHeavyViewNode_.bind(this));}\nreturn this.topDownHeavyViewRoot_;},buildBottomUpHeavyView(){if(this.bottomUpHeavyViewNode_===undefined){this.bottomUpHeavyViewNode_=this.buildGenericHeavyView_(this.addDimensionToBottomUpHeavyViewNode_.bind(this));}\nreturn this.bottomUpHeavyViewNode_;},createRootNode_(){return new MultiDimensionalViewNode(new Array(this.dimensions_),this.valueCount_);},getOrCreateChildNode_(parentNode,dimension,childDimensionTitle){if(dimension<0||dimension>=this.dimensions_){throw new Error('Invalid dimension');}\nconst dimensionChildren=parentNode.children[dimension];let childNode=dimensionChildren.get(childDimensionTitle);if(childNode!==undefined){return childNode;}\nconst childTitle=parentNode.title.slice();childTitle[dimension]=childDimensionTitle;childNode=new MultiDimensionalViewNode(childTitle,this.valueCount_);dimensionChildren.set(childDimensionTitle,childNode);return childNode;},setUpMissingChildRelationships_(node,firstDimensionToSetUp){for(let d=firstDimensionToSetUp;d<this.dimensions_;d++){const currentDimensionChildTitles=new Set(node.children[d].keys());for(let i=0;i<d;i++){for(const previousDimensionChildNode of node.children[i].values()){for(const previousDimensionGrandChildTitle of\npreviousDimensionChildNode.children[d].keys()){currentDimensionChildTitles.add(previousDimensionGrandChildTitle);}}}\nfor(const currentDimensionChildTitle of currentDimensionChildTitles){const currentDimensionChildNode=this.getOrCreateChildNode_(node,d,currentDimensionChildTitle);for(let i=0;i<d;i++){for(const previousDimensionChildNode of\nnode.children[i].values()){const previousDimensionGrandChildNode=previousDimensionChildNode.children[d].get(currentDimensionChildTitle);if(previousDimensionGrandChildNode!==undefined){currentDimensionChildNode.children[i].set(previousDimensionChildNode.title[i],previousDimensionGrandChildNode);}}}\nthis.setUpMissingChildRelationships_(currentDimensionChildNode,d);}}},finalizeTotalValues_(node,firstDimensionToFinalize,dimensionalSelfSumsMap){const dimensionalSelfSums=new Array(this.dimensions_);const minResidual=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++)minResidual[v]=0;const nodeValues=node.values;const nodeSelfSums=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++){nodeSelfSums[v]=nodeValues[v].self;}\nfor(let d=0;d<this.dimensions_;d++){const childResidualSums=new Array(this.valueCount_);for(let v=0;v<this.valueCount_;v++){childResidualSums[v]=0;}\nfor(const childNode of node.children[d].values()){if(d>=firstDimensionToFinalize){this.finalizeTotalValues_(childNode,d,dimensionalSelfSumsMap);}\nconst childNodeSelfSums=dimensionalSelfSumsMap.get(childNode);const childNodeValues=childNode.values;for(let v=0;v<this.valueCount_;v++){nodeSelfSums[v]+=childNodeSelfSums[d][v];const residual=childNodeValues[v].total-\nchildNodeSelfSums[this.dimensions_-1][v];childResidualSums[v]+=residual;if(this.complete){nodeValues[v].totalState=EXACT;}else if(childNodeValues[v].totalState>NOT_PROVIDED){nodeValues[v].totalState=Math.max(nodeValues[v].totalState,LOWER_BOUND);}}}\ndimensionalSelfSums[d]=nodeSelfSums.slice();for(let v=0;v<this.valueCount_;v++){minResidual[v]=Math.max(minResidual[v],childResidualSums[v]);}}\nfor(let v=0;v<this.valueCount_;v++){nodeValues[v].total=Math.max(nodeValues[v].total,nodeSelfSums[v]+minResidual[v]);}\nif(dimensionalSelfSumsMap.has(node)){throw new Error('Internal error: Node finalized more than once');}\ndimensionalSelfSumsMap.set(node,dimensionalSelfSums);},buildGenericHeavyView_(treeViewNodeHandler){const treeViewRoot=this.buildTopDownTreeView();const heavyViewRoot=this.createRootNode_();heavyViewRoot.values=treeViewRoot.values;const recursionDepthTrackers=new Array(this.dimensions_);for(let d=0;d<this.dimensions_;d++){recursionDepthTrackers[d]=new RecursionDepthTracker(this.maxDimensionDepths_[d],d);}\nthis.addDimensionsToGenericHeavyViewNode_(treeViewRoot,heavyViewRoot,0,recursionDepthTrackers,false,treeViewNodeHandler);this.setUpMissingChildRelationships_(heavyViewRoot,0);return heavyViewRoot;},addDimensionsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,startDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler){for(let d=startDimension;d<this.dimensions_;d++){this.addDimensionDescendantsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,d,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler);}},addDimensionDescendantsToGenericHeavyViewNode_(treeViewParentNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler){const treeViewChildren=treeViewParentNode.children[currentDimension];const recursionDepthTracker=recursionDepthTrackers[currentDimension];for(const treeViewChildNode of treeViewChildren.values()){recursionDepthTracker.push(treeViewChildNode);treeViewNodeHandler(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive);this.addDimensionDescendantsToGenericHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,treeViewNodeHandler);recursionDepthTracker.pop();}},addDimensionToTopDownHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive){this.addDimensionToTopDownHeavyViewNodeRecursively_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,1);},addDimensionToTopDownHeavyViewNodeRecursively_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,subTreeDepth){const recursionDepthTracker=recursionDepthTrackers[currentDimension];const currentDimensionRecursive=subTreeDepth<=recursionDepthTracker.recursionDepth;const currentOrPreviousDimensionsRecursive=currentDimensionRecursive||previousDimensionsRecursive;const dimensionTitle=treeViewChildNode.title[currentDimension];const heavyViewChildNode=this.getOrCreateChildNode_(heavyViewParentNode,currentDimension,dimensionTitle);this.addNodeValues_(treeViewChildNode,heavyViewChildNode,!currentOrPreviousDimensionsRecursive);this.addDimensionsToGenericHeavyViewNode_(treeViewChildNode,heavyViewChildNode,currentDimension+1,recursionDepthTrackers,currentOrPreviousDimensionsRecursive,this.addDimensionToTopDownHeavyViewNode_.bind(this));for(const treeViewGrandChildNode of\ntreeViewChildNode.children[currentDimension].values()){recursionDepthTracker.push(treeViewGrandChildNode);this.addDimensionToTopDownHeavyViewNodeRecursively_(treeViewGrandChildNode,heavyViewChildNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive,subTreeDepth+1);recursionDepthTracker.pop();}},addDimensionToBottomUpHeavyViewNode_(treeViewChildNode,heavyViewParentNode,currentDimension,recursionDepthTrackers,previousDimensionsRecursive){const recursionDepthTracker=recursionDepthTrackers[currentDimension];const bottomIndex=recursionDepthTracker.bottomIndex;const topIndex=recursionDepthTracker.topIndex;const firstNonRecursiveIndex=bottomIndex+recursionDepthTracker.recursionDepth;const viewNodePath=recursionDepthTracker.viewNodePath;const trackerAncestorNode=recursionDepthTracker.trackerAncestorNode;let heavyViewDescendantNode=heavyViewParentNode;for(let i=bottomIndex;i<topIndex;i++){const treeViewAncestorNode=viewNodePath[i];const dimensionTitle=treeViewAncestorNode.title[currentDimension];heavyViewDescendantNode=this.getOrCreateChildNode_(heavyViewDescendantNode,currentDimension,dimensionTitle);const currentDimensionRecursive=i<firstNonRecursiveIndex;const currentOrPreviousDimensionsRecursive=currentDimensionRecursive||previousDimensionsRecursive;this.addNodeValues_(treeViewChildNode,heavyViewDescendantNode,!currentOrPreviousDimensionsRecursive);this.addDimensionsToGenericHeavyViewNode_(treeViewChildNode,heavyViewDescendantNode,currentDimension+1,recursionDepthTrackers,currentOrPreviousDimensionsRecursive,this.addDimensionToBottomUpHeavyViewNode_.bind(this));}},addNodeValues_(sourceNode,targetNode,addTotal){const targetNodeValues=targetNode.values;const sourceNodeValues=sourceNode.values;for(let v=0;v<this.valueCount_;v++){const targetNodeValue=targetNodeValues[v];const sourceNodeValue=sourceNodeValues[v];targetNodeValue.self+=sourceNodeValue.self;if(addTotal){targetNodeValue.total+=sourceNodeValue.total;if(this.complete){targetNodeValue.totalState=EXACT;}else if(sourceNodeValue.totalState>NOT_PROVIDED){targetNodeValue.totalState=Math.max(targetNodeValue.totalState,LOWER_BOUND);}}}}};function RecursionDepthTracker(maxDepth,dimension){this.titlePath=new Array(maxDepth);this.viewNodePath=new Array(maxDepth);this.bottomIndex=this.topIndex=maxDepth;this.dimension_=dimension;this.currentTrackerNode_=this.createNode_(0,undefined);}\nRecursionDepthTracker.prototype={push(viewNode){if(this.bottomIndex===0){throw new Error('Cannot push to a full tracker');}\nconst title=viewNode.title[this.dimension_];this.bottomIndex--;this.titlePath[this.bottomIndex]=title;this.viewNodePath[this.bottomIndex]=viewNode;let childTrackerNode=this.currentTrackerNode_.children.get(title);if(childTrackerNode!==undefined){this.currentTrackerNode_=childTrackerNode;return;}\nconst maxLengths=zFunction(this.titlePath,this.bottomIndex);let recursionDepth=0;for(let i=0;i<maxLengths.length;i++){recursionDepth=Math.max(recursionDepth,maxLengths[i]);}\nchildTrackerNode=this.createNode_(recursionDepth,this.currentTrackerNode_);this.currentTrackerNode_.children.set(title,childTrackerNode);this.currentTrackerNode_=childTrackerNode;},pop(){if(this.bottomIndex===this.topIndex){throw new Error('Cannot pop from an empty tracker');}\nthis.titlePath[this.bottomIndex]=undefined;this.viewNodePath[this.bottomIndex]=undefined;this.bottomIndex++;this.currentTrackerNode_=this.currentTrackerNode_.parent;},get recursionDepth(){return this.currentTrackerNode_.recursionDepth;},createNode_(recursionDepth,parent){return{recursionDepth,parent,children:new Map()};}};function zFunction(list,startIndex){const n=list.length-startIndex;if(n===0)return[];const z=new Array(n);z[0]=0;for(let i=1,left=0,right=0;i<n;++i){let maxLength;if(i<=right){maxLength=Math.min(right-i+1,z[i-left]);}else{maxLength=0;}\nwhile(i+maxLength<n&&list[startIndex+maxLength]===list[startIndex+i+maxLength]){++maxLength;}\nif(i+maxLength-1>right){left=i;right=i+maxLength-1;}\nz[i]=maxLength;}\nreturn z;}\nreturn{MultiDimensionalViewBuilder,MultiDimensionalViewNode,RecursionDepthTracker,zFunction,};});'use strict';tr.exportTo('tr.e.chrome',function(){class CpuTime{static getStageToInitiatorToSegmentBounds(segments,rangeOfInterest){const stageToInitiatorToRanges=new Map();stageToInitiatorToRanges.set('all_stages',new Map([['all_initiators',new Set()]]));const allRanges=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const segment of segments){if(!rangeOfInterest.intersectsRangeInclusive(segment.range))continue;const intersectingRange=rangeOfInterest.findIntersection(segment.range);allRanges.add(intersectingRange);for(const expectation of segment.expectations){const stageTitle=expectation.stageTitle;if(!stageToInitiatorToRanges.has(stageTitle)){stageToInitiatorToRanges.set(stageTitle,new Map([['all_initiators',new Set()]]));}\nconst initiatorToRanges=stageToInitiatorToRanges.get(stageTitle);initiatorToRanges.get('all_initiators').add(intersectingRange);const initiatorType=expectation.initiatorType;if(initiatorType){if(!initiatorToRanges.has(initiatorType)){initiatorToRanges.set(initiatorType,new Set());}\ninitiatorToRanges.get(initiatorType).add(intersectingRange);}}}\nreturn stageToInitiatorToRanges;}\nstatic constructMultiDimensionalView(model,rangeOfInterest){const mdvBuilder=new tr.b.MultiDimensionalViewBuilder(3,2);const stageToInitiatorToRanges=CpuTime.getStageToInitiatorToSegmentBounds(model.userModel.segments,rangeOfInterest);const allSegmentBoundsInRange=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const[pid,process]of Object.entries(model.processes)){const processType=tr.e.chrome.chrome_processes.canonicalizeProcessName(process.name);for(const[tid,thread]of Object.entries(process.threads)){const rangeToCpuTime=new Map();for(const range of allSegmentBoundsInRange){rangeToCpuTime.set(range,thread.getCpuTimeForRange(range));}\nfor(const[stage,initiatorToRanges]of stageToInitiatorToRanges){for(const[initiator,ranges]of initiatorToRanges){const cpuTime=tr.b.math.Statistics.sum(ranges,range=>rangeToCpuTime.get(range));const duration=tr.b.math.Statistics.sum(ranges,range=>range.duration);const cpuTimePerSecond=cpuTime/duration;mdvBuilder.addPath([[processType],[thread.type],[stage,initiator]],[cpuTimePerSecond,cpuTime],tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);}}}}\nreturn mdvBuilder.buildTopDownTreeView();}}\nreturn{CpuTime,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CPU_PERCENTAGE_UNIT=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const CPU_TIME_UNIT=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;function clonePath_(previousPath){return previousPath.map(subPath=>subPath.map(x=>x));}\nfunction decodePath_(path){return{processType:path[0][0],threadType:path[1][0],railStage:path[2][0],initiatorType:path[2][1]};}\nfunction stringifyPathName_(path){const decodedPath=decodePath_(path);return[decodedPath.processType,decodedPath.threadType,decodedPath.railStage,decodedPath.initiatorType].join(':');}\nclass CpuTimeTreeDataReporter{constructor(){this.visitedSet_=new Set();}\nreportValuesFromNode_(node,path){const decodedPath=decodePath_(path);const processType=decodedPath.processType||'all_processes';const threadType=decodedPath.threadType||'all_threads';if(!decodedPath.railStage||!decodedPath.initiatorType)return;const{railStage,initiatorType}=decodedPath;const serializedPathName=[processType,threadType,railStage,initiatorType].join(':');const cpuPercentageValue=node.values[0].total;const cpuTimeValue=node.values[1].total;this.histogramSet_.createHistogram(`cpuPercentage:${serializedPathName}`,CPU_PERCENTAGE_UNIT,cpuPercentageValue);this.histogramSet_.createHistogram(`cpuTime:${serializedPathName}`,CPU_TIME_UNIT,cpuTimeValue);}\nreportDataFromTree_(root,rootPath){const rootPathString=stringifyPathName_(rootPath);if(this.visitedSet_.has(rootPathString))return;this.visitedSet_.add(rootPathString);this.reportValuesFromNode_(root,rootPath);for(let dimension=0;dimension<root.children.length;dimension++){const children=root.children[dimension];for(const[name,node]of children){const childPath=clonePath_(rootPath);childPath[dimension].push(name);this.reportDataFromTree_(node,childPath);}}}\naddTreeValuesToHistogramSet(rootNode,histogramSet){const rootPath=[[],[],[]];this.rootNode_=rootNode;this.histogramSet_=histogramSet;this.reportDataFromTree_(this.rootNode_,rootPath);}\nstatic reportToHistogramSet(rootNode,histogramSet){const reporter=new CpuTimeTreeDataReporter();reporter.addTreeValuesToHistogramSet(rootNode,histogramSet);}}\nreturn{CpuTimeTreeDataReporter,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function newCpuTimeMetric(histograms,model,opt_options){const rangeOfInterest=opt_options&&opt_options.rangeOfInterest?opt_options.rangeOfInterest:model.bounds;const rootNode=tr.e.chrome.CpuTime.constructMultiDimensionalView(model,rangeOfInterest);tr.metrics.sh.CpuTimeTreeDataReporter.reportToHistogramSet(rootNode,histograms);}\ntr.metrics.MetricRegistry.register(newCpuTimeMetric,{supportsRangeOfInterest:true});return{newCpuTimeMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const includeHistogramNames=['cpuTime:all_processes:all_threads:all_stages:all_initiators','cpuPercentage:all_processes:all_threads:all_stages:all_initiators','cpuTime:browser_process:all_threads:all_stages:all_initiators','cpuPercentage:browser_process:all_threads:all_stages:all_initiators','cpuTime:renderer_processes:all_threads:all_stages:all_initiators','cpuPercentage:renderer_processes:all_threads:all_stages:all_initiators','cpuTime:gpu_process:all_threads:all_stages:all_initiators','cpuPercentage:gpu_process:all_threads:all_stages:all_initiators','cpuTime:renderer_processes:CrRendererMain:all_stages:all_initiators','cpuPercentage:renderer_processes:CrRendererMain:all_stages:all_initiators','cpuTime:browser_process:CrBrowserMain:all_stages:all_initiators','cpuPercentage:browser_process:CrBrowserMain:all_stages:all_initiators','cpuTime:all_processes:all_threads:Load:Successful','cpuPercentage:all_processes:all_threads:Load:Successful',];function limitedCpuTimeMetric(histograms,model,opt_options){const allCpuHistograms=new tr.v.HistogramSet();tr.metrics.sh.newCpuTimeMetric(allCpuHistograms,model,opt_options);for(const histogramName of includeHistogramNames){const histogram=allCpuHistograms.getHistogramNamed(histogramName);if(histogram)histograms.addHistogram(histogram);}}\ntr.metrics.MetricRegistry.register(limitedCpuTimeMetric,{supportsRangeOfInterest:true});return{limitedCpuTimeMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const LONG_TASK_MS=50;const LONGEST_TASK_MS=1000;function iterateLongTopLevelTasksOnThreadInRange(thread,opt_range,cb,opt_this){thread.sliceGroup.topLevelSlices.forEach(function(slice){if(opt_range&&!opt_range.intersectsExplicitRangeInclusive(slice.start,slice.end)){return;}\nif(slice.duration<LONG_TASK_MS)return;cb.call(opt_this,slice);});}\nfunction iterateRendererMainThreads(model,cb,opt_this){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper!==undefined){Object.values(modelHelper.rendererHelpers).forEach(function(rendererHelper){if(!rendererHelper.mainThread)return;cb.call(opt_this,rendererHelper.mainThread);});}}\nconst BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(LONG_TASK_MS,LONGEST_TASK_MS,40);function longTasksMetric(histograms,model,opt_options){const rangeOfInterest=opt_options?opt_options.rangeOfInterest:undefined;const longTaskHist=histograms.createHistogram('longTasks',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,description:'durations of long tasks',});const relatedNames=new tr.v.d.RelatedNameMap();longTaskHist.diagnostics.set('categories',relatedNames);iterateRendererMainThreads(model,function(thread){iterateLongTopLevelTasksOnThreadInRange(thread,rangeOfInterest,function(task){const breakdown=new tr.v.d.Breakdown();breakdown.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const slice of task.descendentSlices){const sample=slice.cpuSelfTime;if(sample===undefined)continue;const category=model.getUserFriendlyCategoryFromEvent(slice);const histName='longTasks:'+category;let hist=histograms.getHistogramNamed(histName);if(hist===undefined){hist=histograms.createHistogram(histName,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:BIN_BOUNDARIES,});relatedNames.set(category,hist.name);}\nhist.addSample(sample,{events:new tr.v.d.RelatedEventSet([slice]),});breakdown.set(category,sample+breakdown.get(category));}\nlongTaskHist.addSample(task.duration,{events:new tr.v.d.RelatedEventSet([task]),categories:breakdown,});});});}\ntr.metrics.MetricRegistry.register(longTasksMetric,{supportsRangeOfInterest:true,requiredCategories:['toplevel'],});return{longTasksMetric,iterateLongTopLevelTasksOnThreadInRange,iterateRendererMainThreads,LONG_TASK_MS,LONGEST_TASK_MS,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const LEVEL_OF_DETAIL_NAMES=new Map();LEVEL_OF_DETAIL_NAMES.set(BACKGROUND,'background');LEVEL_OF_DETAIL_NAMES.set(LIGHT,'light');LEVEL_OF_DETAIL_NAMES.set(DETAILED,'detailed');const HEAP_PROFILER_DETAIL_NAME='heap_profiler';const BOUNDARIES_FOR_UNIT_MAP=new WeakMap();BOUNDARIES_FOR_UNIT_MAP.set(count_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,20,20));BOUNDARIES_FOR_UNIT_MAP.set(sizeInBytes_smallerIsBetter,new tr.v.HistogramBinBoundaries(0).addBinBoundary(1024).addExponentialBins(16*1024*1024*1024,4*24));const CHROME_PROCESS_NAMES=tr.e.chrome.chrome_processes.CHROME_PROCESS_NAMES;function memoryMetric(values,model,opt_options){const rangeOfInterest=opt_options?opt_options.rangeOfInterest:undefined;const browserNameToGlobalDumps=tr.metrics.sh.splitGlobalDumpsByBrowserName(model,rangeOfInterest);addGeneralMemoryDumpValues(browserNameToGlobalDumps,values);addDetailedMemoryDumpValues(browserNameToGlobalDumps,values);addMemoryDumpCountValues(browserNameToGlobalDumps,values);}\nconst USER_FRIENDLY_BROWSER_NAMES={'chrome':'Chrome','webview':'WebView','unknown_browser':'an unknown browser'};function convertBrowserNameToUserFriendlyName(browserName){for(const baseName in USER_FRIENDLY_BROWSER_NAMES){if(!browserName.startsWith(baseName))continue;const userFriendlyBaseName=USER_FRIENDLY_BROWSER_NAMES[baseName];const suffix=browserName.substring(baseName.length);if(suffix.length===0){return userFriendlyBaseName;}else if(/^\\d+$/.test(suffix)){return userFriendlyBaseName+'('+suffix+')';}}\nreturn'\\''+browserName+'\\' browser';}\nfunction convertProcessNameToUserFriendlyName(processName,opt_requirePlural){switch(processName){case CHROME_PROCESS_NAMES.BROWSER:return opt_requirePlural?'browser processes':'the browser process';case CHROME_PROCESS_NAMES.RENDERER:return'renderer processes';case CHROME_PROCESS_NAMES.GPU:return opt_requirePlural?'GPU processes':'the GPU process';case CHROME_PROCESS_NAMES.PPAPI:return opt_requirePlural?'PPAPI processes':'the PPAPI process';case CHROME_PROCESS_NAMES.ALL:return'all processes';case CHROME_PROCESS_NAMES.UNKNOWN:return'unknown processes';default:return'\\''+processName+'\\' processes';}}\nfunction addGeneralMemoryDumpValues(browserNameToGlobalDumps,values){addMemoryDumpValues(browserNameToGlobalDumps,gmd=>true,function(processDump,addProcessScalar){addProcessScalar({source:'process_count',property:PROCESS_COUNT,value:1});if(processDump.totals!==undefined){addProcessScalar({source:'reported_by_os',property:RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.residentBytes});addProcessScalar({source:'reported_by_os',property:PEAK_RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.peakResidentBytes});addProcessScalar({source:'reported_by_os',property:PRIVATE_FOOTPRINT_SIZE,component:['system_memory'],value:processDump.totals.privateFootprintBytes,});}\nif(processDump.memoryAllocatorDumps===undefined)return;processDump.memoryAllocatorDumps.forEach(function(rootAllocatorDump){CHROME_VALUE_PROPERTIES.forEach(function(property){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property,value:rootAllocatorDump.numerics[property.name]});});if(rootAllocatorDump.numerics.allocated_objects_size===undefined){const allocatedObjectsDump=rootAllocatorDump.getDescendantDumpByFullName('allocated_objects');if(allocatedObjectsDump!==undefined){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property:ALLOCATED_OBJECTS_SIZE,value:allocatedObjectsDump.numerics.size});}}});addTopHeapDumpCategoryValue(processDump,addProcessScalar);addV8MemoryDumpValues(processDump,addProcessScalar);},function(componentTree){const tracingNode=componentTree.children[1].get('tracing');if(tracingNode===undefined)return;for(let i=0;i<componentTree.values.length;i++){componentTree.values[i].total-=tracingNode.values[i].total;}},values);}\nfunction addTopHeapDumpCategoryValue(processDump,addProcessScalar){if(!processDump.heapDumps){return;}\nfor(const allocatorName in processDump.heapDumps){const heapDump=processDump.heapDumps[allocatorName];if(heapDump.entries===undefined||heapDump.entries.length===0){return;}\nconst typeToSize={};for(let i=0;i<heapDump.entries.length;i+=1){const entry=heapDump.entries[i];if(!entry.objectTypeName||entry.leafStackFrame){continue;}\nif(!typeToSize[entry.objectTypeName]){typeToSize[entry.objectTypeName]=0;}\ntypeToSize[entry.objectTypeName]+=entry.size;}\nlet largestValue=0;let largestType='';for(const key in typeToSize){if(largestValue<typeToSize[key]){largestValue=typeToSize[key];largestType=key;}}\naddProcessScalar({source:'reported_by_chrome',component:[allocatorName,largestType],property:HEAP_CATEGORY_SIZE,value:largestValue});}}\nfunction addV8MemoryDumpValues(processDump,addProcessScalar){const v8Dump=processDump.getMemoryAllocatorDumpByFullName('v8');if(v8Dump===undefined)return;const sharedDump=v8Dump.getDescendantDumpByFullName('shared');if(sharedDump!==undefined){addV8ComponentValues(sharedDump,['v8','shared'],addProcessScalar);sharedDump.children.forEach(function(subDump){addV8ComponentValues(subDump,['v8','shared',subDump.name],addProcessScalar);});}\nv8Dump.children.forEach(function(isolateDump){const mallocDump=isolateDump.getDescendantDumpByFullName('malloc');if(mallocDump!==undefined){addV8ComponentValues(mallocDump,['v8','allocated_by_malloc'],addProcessScalar);}\nlet heapDump=isolateDump.getDescendantDumpByFullName('heap');if(heapDump===undefined){heapDump=isolateDump.getDescendantDumpByFullName('heap_spaces');}\nif(heapDump!==undefined){addV8ComponentValues(heapDump,['v8','heap'],addProcessScalar);heapDump.children.forEach(function(spaceDump){if(spaceDump.name==='other_spaces')return;addV8ComponentValues(spaceDump,['v8','heap',spaceDump.name],addProcessScalar);});}});addProcessScalar({source:'reported_by_chrome',component:['v8'],property:CODE_AND_METADATA_SIZE,value:v8Dump.numerics.code_and_metadata_size});addProcessScalar({source:'reported_by_chrome',component:['v8'],property:CODE_AND_METADATA_SIZE,value:v8Dump.numerics.bytecode_and_metadata_size});}\nfunction addV8ComponentValues(componentDump,componentPath,addProcessScalar){CHROME_VALUE_PROPERTIES.forEach(function(property){addProcessScalar({source:'reported_by_chrome',component:componentPath,property,value:componentDump.numerics[property.name]});});}\nconst PROCESS_COUNT={unit:count_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){if(componentPath.length>0){throw new Error('Unexpected process count non-empty component path: '+\ncomponentPath.join(':'));}\nreturn'total number of '+convertProcessNameToUserFriendlyName(processName,true);}};const EFFECTIVE_SIZE={name:'effective_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'effective size',componentPreposition:'of'});}};const ALLOCATED_OBJECTS_SIZE={name:'allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated',totalUserFriendlyPropertyName:'size of all allocated objects',componentPreposition:'by'});}};const SHIM_ALLOCATED_OBJECTS_SIZE={name:'shim_allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated through shim',totalUserFriendlyPropertyName:'size of all allocated objects through shim',componentPreposition:'by'});}};const LOCKED_SIZE={name:'locked_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'locked (pinned) size',componentPreposition:'of'});}};const PEAK_SIZE={name:'peak_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'peak size',componentPreposition:'of'});}};const HEAP_CATEGORY_SIZE={name:'heap_category_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'heap profiler category size',componentPreposition:'for'});}};const CODE_AND_METADATA_SIZE={name:'code_and_metadata_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyNamePrefix:'size of',userFriendlyPropertyName:'code and metadata'});}};const CHROME_VALUE_PROPERTIES=[EFFECTIVE_SIZE,ALLOCATED_OBJECTS_SIZE,SHIM_ALLOCATED_OBJECTS_SIZE,LOCKED_SIZE,PEAK_SIZE];function buildChromeValueDescriptionPrefix(componentPath,processName,formatSpec){const nameParts=[];if(componentPath.length===0){nameParts.push('total');if(formatSpec.totalUserFriendlyPropertyName){nameParts.push(formatSpec.totalUserFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(formatSpec.userFriendlyPropertyName);}\nnameParts.push('reported by Chrome for');}else{if(formatSpec.componentPreposition===undefined){if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(componentPath.join(':'));nameParts.push(formatSpec.userFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}\nnameParts.push(formatSpec.userFriendlyPropertyName);nameParts.push(formatSpec.componentPreposition);if(componentPath[componentPath.length-1]==='allocated_by_malloc'){nameParts.push('objects allocated by malloc for');nameParts.push(componentPath.slice(0,componentPath.length-1).join(':'));}else{nameParts.push(componentPath.join(':'));}}\nnameParts.push('in');}\nnameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}\nconst RESIDENT_SIZE={name:'resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'resident set size (RSS)');}};const PEAK_RESIDENT_SIZE={name:'peak_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'peak resident set size');}};const PROPORTIONAL_RESIDENT_SIZE={name:'proportional_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'proportional resident size (PSS)');}};const PRIVATE_DIRTY_SIZE={name:'private_dirty_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private dirty size');}};const PRIVATE_FOOTPRINT_SIZE={name:'private_footprint_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private footprint size');}};const JAVA_BASE_CLEAN_RESIDENT={name:'java_base_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex total clean resident size');}};const JAVA_BASE_PSS={name:'java_base_pss',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex proportional resident size');}};const NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT={name:'native_library_private_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library private clean resident size');}};const NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT={name:'native_library_shared_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library shared clean resident size');}};const NATIVE_LIBRARY_PROPORTIONAL_RESIDENT={name:'native_library_proportional_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library proportional resident size');}};function buildOsValueDescriptionPrefix(componentPath,processName,userFriendlyPropertyName){if(componentPath.length>2){throw new Error('OS value component path for \\''+\nuserFriendlyPropertyName+'\\' too long: '+componentPath.join(':'));}\nconst nameParts=[];if(componentPath.length<2){nameParts.push('total');}\nnameParts.push(userFriendlyPropertyName);if(componentPath.length>0){switch(componentPath[0]){case'system_memory':if(componentPath.length>1){const userFriendlyComponentName=SYSTEM_VALUE_COMPONENTS[componentPath[1]].userFriendlyName;if(userFriendlyComponentName===undefined){throw new Error('System value sub-component for \\''+\nuserFriendlyPropertyName+'\\' unknown: '+\ncomponentPath.join(':'));}\nnameParts.push('of',userFriendlyComponentName,'in');}else{nameParts.push('of system memory (RAM) used by');}\nbreak;case'gpu_memory':if(componentPath.length>1){nameParts.push('of the',componentPath[1]);nameParts.push('Android memtrack component in');}else{nameParts.push('of GPU memory (Android memtrack) used by');}\nbreak;default:throw new Error('OS value component for \\''+\nuserFriendlyPropertyName+'\\' unknown: '+\ncomponentPath.join(':'));}}else{nameParts.push('reported by the OS for');}\nnameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}\nfunction addDetailedMemoryDumpValues(browserNameToGlobalDumps,values){addMemoryDumpValues(browserNameToGlobalDumps,g=>g.levelOfDetail===DETAILED,function(processDump,addProcessScalar){for(const[componentName,componentSpec]of\nObject.entries(SYSTEM_VALUE_COMPONENTS)){const node=getDescendantVmRegionClassificationNode(processDump.vmRegions,componentSpec.classificationPath);const componentPath=['system_memory'];if(componentName)componentPath.push(componentName);addProcessScalar({source:'reported_by_os',component:componentPath,property:PROPORTIONAL_RESIDENT_SIZE,value:node===undefined?0:(node.byteStats.proportionalResident||0)});addProcessScalar({source:'reported_by_os',component:componentPath,property:PRIVATE_DIRTY_SIZE,value:node===undefined?0:(node.byteStats.privateDirtyResident||0)});if(node){if(node.byteStats.javaBasePss){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_PSS,value:node.byteStats.javaBasePss});}\nif(node.byteStats.javaBaseCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_CLEAN_RESIDENT,value:node.byteStats.javaBaseCleanResident});}}\nif(node){if(node.byteStats.nativeLibraryPrivateCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT,value:node.byteStats.nativeLibraryPrivateCleanResident});}\nif(node.byteStats.nativeLibrarySharedCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT,value:node.byteStats.nativeLibrarySharedCleanResident});}\nif(node.byteStats.nativeLibraryProportionalResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PROPORTIONAL_RESIDENT,value:node.byteStats.nativeLibraryProportionalResident});}}}\nconst memtrackDump=processDump.getMemoryAllocatorDumpByFullName('gpu/android_memtrack');if(memtrackDump!==undefined){memtrackDump.children.forEach(function(memtrackChildDump){addProcessScalar({source:'reported_by_os',component:['gpu_memory',memtrackChildDump.name],property:PROPORTIONAL_RESIDENT_SIZE,value:memtrackChildDump.numerics.memtrack_pss});});}},function(componentTree){},values);}\nconst SYSTEM_VALUE_COMPONENTS={'':{classificationPath:[],},'java_heap':{classificationPath:['Android','Java runtime','Spaces'],userFriendlyName:'the Java heap'},'ashmem':{classificationPath:['Android','Ashmem'],userFriendlyName:'ashmem'},'native_heap':{classificationPath:['Native heap'],userFriendlyName:'the native heap'},'stack':{classificationPath:['Stack'],userFriendlyName:'the thread stacks'}};function getDescendantVmRegionClassificationNode(node,path){for(let i=0;i<path.length;i++){if(node===undefined)break;node=node.children.find(c=>c.title===path[i]);}\nreturn node;}\nfunction addMemoryDumpCountValues(browserNameToGlobalDumps,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){let totalDumpCount=0;const levelOfDetailNameToDumpCount={};LEVEL_OF_DETAIL_NAMES.forEach(function(levelOfDetailName){levelOfDetailNameToDumpCount[levelOfDetailName]=0;});levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]=0;globalDumps.forEach(function(globalDump){totalDumpCount++;const levelOfDetailName=LEVEL_OF_DETAIL_NAMES.get(globalDump.levelOfDetail);if(levelOfDetailName===undefined){return;}\nlevelOfDetailNameToDumpCount[levelOfDetailName]++;if(globalDump.levelOfDetail===DETAILED){if(detectHeapProfilerInMemoryDump(globalDump)){levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]++;}}});reportMemoryDumpCountAsValue(browserName,undefined,totalDumpCount,values);for(const[levelOfDetailName,levelOfDetailDumpCount]of\nObject.entries(levelOfDetailNameToDumpCount)){reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values);}});}\nfunction detectHeapProfilerInMemoryDump(globalDump){for(const processDump of Object.values(globalDump.processMemoryDumps)){if(processDump.heapDumps&&processDump.heapDumps.malloc){const mallocDump=processDump.heapDumps.malloc;if(mallocDump.entries&&mallocDump.entries.length>0){return true;}}}\nreturn false;}\nfunction reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values){const nameParts=['memory',browserName,'all_processes','dump_count'];if(levelOfDetailName!==undefined){nameParts.push(levelOfDetailName);}\nconst name=nameParts.join(':');const histogram=new tr.v.Histogram(name,count_smallerIsBetter,BOUNDARIES_FOR_UNIT_MAP.get(count_smallerIsBetter));histogram.addSample(levelOfDetailDumpCount);const userFriendlyLevelOfDetail=(levelOfDetailName||'all').replace('_',' ');histogram.description=['total number of',userFriendlyLevelOfDetail,'memory dumps added by',convertBrowserNameToUserFriendlyName(browserName),'to the trace'].join(' ');values.addHistogram(histogram);}\nfunction addMemoryDumpValues(browserNameToGlobalDumps,customGlobalDumpFilter,customProcessDumpValueExtractor,customComponentTreeModifier,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){const filteredGlobalDumps=globalDumps.filter(customGlobalDumpFilter);const sourceToPropertyToBuilder=extractDataFromGlobalDumps(filteredGlobalDumps,customProcessDumpValueExtractor);reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values);});}\nfunction extractDataFromGlobalDumps(globalDumps,customProcessDumpValueExtractor){const sourceToPropertyToBuilder=new Map();const dumpCount=globalDumps.length;globalDumps.forEach(function(globalDump,dumpIndex){for(const processDump of Object.values(globalDump.processMemoryDumps)){extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor);}});return sourceToPropertyToBuilder;}\nfunction extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor){const rawProcessName=processDump.process.name;const processNamePath=[tr.e.chrome.chrome_processes.canonicalizeProcessName(rawProcessName)];customProcessDumpValueExtractor(processDump,function addProcessScalar(spec){if(spec.value===undefined)return;const component=spec.component||[];function createDetailsForErrorMessage(){return['source=',spec.source,', property=',spec.property.name||'(undefined)',', component=',component.length===0?'(empty)':component.join(':'),' in ',processDump.process.userFriendlyName].join('');}\nlet value;if(spec.value instanceof tr.b.Scalar){value=spec.value.value;if(spec.value.unit!==spec.property.unit){throw new Error('Scalar unit for '+\ncreateDetailsForErrorMessage()+' ('+\nspec.value.unit.unitName+') doesn\\'t match the unit of the property ('+\nspec.property.unit.unitName+')');}}else{value=spec.value;}\nlet propertyToBuilder=sourceToPropertyToBuilder.get(spec.source);if(propertyToBuilder===undefined){propertyToBuilder=new Map();sourceToPropertyToBuilder.set(spec.source,propertyToBuilder);}\nlet builder=propertyToBuilder.get(spec.property);if(builder===undefined){builder=new tr.b.MultiDimensionalViewBuilder(2,dumpCount),propertyToBuilder.set(spec.property,builder);}\nconst values=new Array(dumpCount);values[dumpIndex]=value;builder.addPath([processNamePath,component],values,tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);});}\nfunction reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values){sourceToPropertyToBuilder.forEach(function(propertyToBuilder,sourceName){propertyToBuilder.forEach(function(builders,property){const tree=builders.buildTopDownTreeView();reportComponentDataAsValues(browserName,sourceName,property,[],[],tree,values,customComponentTreeModifier);});});}\nfunction reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,tree,values,customComponentTreeModifier,opt_cachedHistograms){const cachedHistograms=opt_cachedHistograms||new Map();function recurse(processPath,componentPath,node){return reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,node,values,customComponentTreeModifier,cachedHistograms);}\nfunction buildHistogram(processPath,componentPath,node){return buildNamedMemoryNumericFromNode(browserName,sourceName,property,processPath.length===0?'all_processes':processPath[0],componentPath,node);}\ncustomComponentTreeModifier(tree);const histogram=buildHistogram(processPath,componentPath,tree);if(cachedHistograms.has(histogram.name)){return cachedHistograms.get(histogram.name);}\ncachedHistograms.set(histogram.name,histogram);const processNames=new tr.v.d.RelatedNameMap();for(const[childProcessName,childProcessNode]of tree.children[0]){processPath.push(childProcessName);const childProcessHistogram=recurse(processPath,componentPath,childProcessNode);processNames.set(childProcessName,childProcessHistogram.name);processPath.pop();}\nconst componentNames=new tr.v.d.RelatedNameMap();for(const[childComponentName,childComponentNode]of tree.children[1]){componentPath.push(childComponentName);const childComponentHistogram=recurse(processPath,componentPath,childComponentNode);componentNames.set(childComponentName,childComponentHistogram.name);componentPath.pop();}\nvalues.addHistogram(histogram);if(tree.children[0].size>0){histogram.diagnostics.set('processes',processNames);}\nif(tree.children[1].size>0){histogram.diagnostics.set('components',componentNames);}\nreturn histogram;}\nfunction getNumericName(browserName,sourceName,propertyName,processName,componentPath){const nameParts=['memory',browserName,processName,sourceName].concat(componentPath);if(propertyName!==undefined)nameParts.push(propertyName);return nameParts.join(':');}\nfunction getNumericDescription(property,browserName,processName,componentPath){return[property.buildDescriptionPrefix(componentPath,processName),'in',convertBrowserNameToUserFriendlyName(browserName)].join(' ');}\nfunction buildNamedMemoryNumericFromNode(browserName,sourceName,property,processName,componentPath,node){const name=getNumericName(browserName,sourceName,property.name,processName,componentPath);const description=getNumericDescription(property,browserName,processName,componentPath);const numeric=buildMemoryNumericFromNode(name,node,property.unit);numeric.description=description;return numeric;}\nfunction buildSampleDiagnostics(value,node){if(node.children.length<2)return undefined;const diagnostics=new Map();const i=node.values.indexOf(value);const processBreakdown=new tr.v.d.Breakdown();processBreakdown.colorScheme=tr.e.chrome.chrome_processes.PROCESS_COLOR_SCHEME_NAME;for(const[name,subNode]of node.children[0]){processBreakdown.set(name,subNode.values[i].total);}\nif(processBreakdown.size>0){diagnostics.set('processes',processBreakdown);}\nconst componentBreakdown=new tr.v.d.Breakdown();for(const[name,subNode]of node.children[1]){componentBreakdown.set(name,subNode.values[i].total);}\nif(componentBreakdown.size>0){diagnostics.set('components',componentBreakdown);}\nif(diagnostics.size===0)return undefined;return diagnostics;}\nfunction buildMemoryNumericFromNode(name,node,unit){const histogram=new tr.v.Histogram(name,unit,BOUNDARIES_FOR_UNIT_MAP.get(unit));node.values.forEach(v=>histogram.addSample(v.total,buildSampleDiagnostics(v,node)));return histogram;}\ntr.metrics.MetricRegistry.register(memoryMetric,{supportsRangeOfInterest:true});return{memoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,1e2);function nativeCodeResidentMemoryMetric(histograms,model){const histogram=new tr.v.Histogram('NativeCodeResidentMemory',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);for(const slice of model.getDescendantEvents()){if(slice.category==='disabled-by-default-memory-infra'&&slice.title==='ReportGlobalNativeCodeResidentMemoryKb'&&slice.args.NativeCodeResidentMemory){histogram.addSample(slice.args.NativeCodeResidentMemory);}}\nhistograms.addHistogram(histogram);}\ntr.metrics.MetricRegistry.register(nativeCodeResidentMemoryMetric);return{nativeCodeResidentMemoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:false,min:false,std:false,sum:false,};function addSamplesToHistogram(pairInfo,breakdownTree,histogram,histograms,diagnostics){histogram.addSample(pairInfo.end-pairInfo.start,diagnostics);if(!breakdownTree){return;}\nfor(const[category,breakdown]of Object.entries(breakdownTree)){const relatedName=`${histogram.name}:${category}`;if(!histograms.getHistogramNamed(relatedName)){const relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});}\nconst relatedHist=histograms.getHistogramNamed(relatedName);let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}\nrelatedNames.set(category,relatedName);relatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}\nfunction splitOneRangeIntoPerSecondRanges(startTime,endTime){const results=[];for(let i=0;startTime+(i+1)*1000<=endTime;i+=1){const start=i*1000;const end=(i+1)*1000;results.push({start,end,});}\nreturn results;}\nfunction getNavigationInfos(model){const navigationInfos=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(rendererHelper.mainThread===undefined)continue;navigationInfos.push({navigationStart:expectation.navigationStart,rendererHelper,url:expectation.url});}\nnavigationInfos.forEach((navInfo,i)=>{if(i===navigationInfos.length-1){navInfo.navigationEndTime=model.bounds.max;}else{navInfo.navigationEndTime=navigationInfos[i+1].navigationStart.start;}});return navigationInfos;}\nfunction getWallTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,startEndRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,startEndRange);return breakdownTree;}\nfunction getCpuTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,startEndRange);return breakdownTree;}\nfunction persecondMetric(histograms,model){const navigationInfos=getNavigationInfos(model);if(navigationInfos.length===0){return;}\nnavigationInfos.forEach(navInfo=>{const navigationStart=navInfo.navigationStart.start;const navigationEnd=navInfo.navigationEndTime;const startEndPairs=splitOneRangeIntoPerSecondRanges(navigationStart,navigationEnd);const breakdownList=startEndPairs.map(p=>{const wallHistogramName=`wall_${p.start}_to_${p.end}`;const wallHistogramDescription=`Wall-clock time ${p.start} to ${p.end} breakdown`;const cpuHistogramName=`cpu_${p.start}_to_${p.end}`;const cpuHistogramDescription=`CPU time ${p.start} to ${p.end} breakdown`;const pid=navInfo.rendererHelper.pid;const breakdownTree=getWallTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const cpuBreakdownTree=getCpuTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const diagnostics={'Navigation infos':new tr.v.d.GenericSet([{url:navInfo.url,pid:navInfo.rendererHelper.pid,navStart:navigationStart,frameIdRef:navInfo.navigationStart.args.frame}]),'breakdown':tr.metrics.sh.createBreakdownDiagnostic(breakdownTree),};return Object.assign(p,{breakdownTree,cpuBreakdownTree,wallHistogramName,wallHistogramDescription,cpuHistogramName,cpuHistogramDescription,diagnostics,});});breakdownList.forEach(p=>{if(!histograms.getHistogramNamed(p.wallHistogramName)){histograms.createHistogram(p.wallHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.wallHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}\nconst wallHistogram=histograms.getHistogramNamed(p.wallHistogramName);addSamplesToHistogram(p,p.breakdownTree,wallHistogram,histograms,p.diagnostics);if(!histograms.getHistogramNamed(p.cpuHistogramName)){histograms.createHistogram(p.cpuHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.cpuHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}\nconst cpuHistogram=histograms.getHistogramNamed(p.cpuHistogramName);addSamplesToHistogram(p,p.cpuBreakdownTree,cpuHistogram,histograms,p.diagnostics);});});}\ntr.metrics.MetricRegistry.register(persecondMetric);return{persecondMetric,splitOneRangeIntoPerSecondRanges};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CHROME_POWER_GRACE_PERIOD_MS=1;function createEmptyHistogram_(interval,histograms){if(interval.perSecond){return{perSecond:true,energy:histograms.createHistogram(`${interval.name}:power`,tr.b.Unit.byName.powerInWatts_smallerIsBetter,[],{description:`Energy consumption rate for ${interval.description}`,summaryOptions:{avg:true,count:false,max:true,min:true,std:false,sum:false,},}),};}\nreturn{perSecond:false,energy:histograms.createHistogram(`${interval.name}:energy`,tr.b.Unit.byName.energyInJoules_smallerIsBetter,[],{description:`Energy consumed in ${interval.description}`,summaryOptions:{avg:false,count:false,max:true,min:true,std:false,sum:true,},}),};}\nfunction createHistograms_(data,interval,histograms){if(data.histograms[interval.name]===undefined){data.histograms[interval.name]=createEmptyHistogram_(interval,histograms);}\nif(data.histograms[interval.name].perSecond){for(const sample of data.model.device.powerSeries.getSamplesWithinRange(interval.bounds.min,interval.bounds.max)){data.histograms[interval.name].energy.addSample(sample.powerInW);}}else{const energyInJ=data.model.device.powerSeries.getEnergyConsumedInJ(interval.bounds.min,interval.bounds.max);data.histograms[interval.name].energy.addSample(energyInJ);}}\nfunction getNavigationTTIIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const intervals=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nif(expectation.timeToInteractive!==undefined){intervals.push(tr.b.math.Range.fromExplicitRange(expectation.navigationStart.start,expectation.timeToInteractive));}}\nreturn intervals.sort((x,y)=>x.min-y.min);}\nfunction*computeTimeIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const powerSeries=model.device.powerSeries;if(powerSeries===undefined||powerSeries.samples.length===0){return;}\nyield{bounds:model.bounds,name:'story',description:'user story',perSecond:true};const chromeBounds=computeChromeBounds_(model);if(chromeBounds.isEmpty)return;const powerSeriesBoundsWithGracePeriod=tr.b.math.Range.fromExplicitRange(powerSeries.bounds.min-CHROME_POWER_GRACE_PERIOD_MS,powerSeries.bounds.max+CHROME_POWER_GRACE_PERIOD_MS);if(!powerSeriesBoundsWithGracePeriod.containsRangeExclusive(chromeBounds)){return;}\nfor(const interval of getRailStageIntervals_(model)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}\nfor(const interval of getLoadingIntervals_(model,chromeBounds)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}}\nfunction*getRailStageIntervals_(model){for(const exp of model.userModel.expectations){const histogramName=exp.title.toLowerCase().replace(' ','_');const energyHist=undefined;if(histogramName.includes('response')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:false};}else if(histogramName.includes('animation')||histogramName.includes('idle')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:true};}}}\nfunction*getLoadingIntervals_(model,chromeBounds){const ttiIntervals=getNavigationTTIIntervals_(model);for(const ttiInterval of ttiIntervals){yield{bounds:ttiInterval,name:'load',description:'page loads',perSecond:false};}}\nfunction computeChromeBounds_(model){const chromeBounds=new tr.b.math.Range();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return chromeBounds;for(const helper of chromeHelper.browserHelpers){if(helper.mainThread){chromeBounds.addRange(helper.mainThread.bounds);}}\nfor(const pid in chromeHelper.rendererHelpers){if(chromeHelper.rendererHelpers[pid].mainThread){chromeBounds.addRange(chromeHelper.rendererHelpers[pid].mainThread.bounds);}}\nreturn chromeBounds;}\nfunction powerMetric(histograms,model){const data={model,histograms:{}};for(const interval of computeTimeIntervals_(model)){createHistograms_(data,interval,histograms);}}\ntr.metrics.MetricRegistry.register(powerMetric);return{powerMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){function computeAnimationThroughput(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+\nanimationExpectation.stableId);}\nconst durationInS=tr.b.convertUnit(animationExpectation.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return animationExpectation.frameEvents.length/durationInS;}\nfunction computeAnimationframeTimeDiscrepancy(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+\nanimationExpectation.stableId);}\nlet frameTimestamps=animationExpectation.frameEvents;frameTimestamps=frameTimestamps.toArray().map(function(event){return event.start;});const absolute=true;return tr.b.math.Statistics.timestampsDiscrepancy(frameTimestamps,absolute);}\nfunction responsivenessMetric(histograms,model,opt_options){const responseNumeric=new tr.v.Histogram('response latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(100,1e3,50));const throughputNumeric=new tr.v.Histogram('animation throughput',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,tr.v.HistogramBinBoundaries.createLinear(10,60,10));const frameTimeDiscrepancyNumeric=new tr.v.Histogram('animation frameTimeDiscrepancy',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,1e3,50).addExponentialBins(1e4,10));const latencyNumeric=new tr.v.Histogram('animation latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,300,60));model.userModel.expectations.forEach(function(ue){if(opt_options&&opt_options.rangeOfInterest&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){return;}\nconst sampleDiagnosticMap=tr.v.d.DiagnosticMap.fromObject({relatedEvents:new tr.v.d.RelatedEventSet([ue])});if(ue instanceof tr.model.um.IdleExpectation){return;}else if(ue instanceof tr.model.um.StartupExpectation){return;}else if(ue instanceof tr.model.um.LoadExpectation){}else if(ue instanceof tr.model.um.ResponseExpectation){responseNumeric.addSample(ue.duration,sampleDiagnosticMap);}else if(ue instanceof tr.model.um.AnimationExpectation){if(ue.frameEvents===undefined||ue.frameEvents.length===0){return;}\nconst throughput=computeAnimationThroughput(ue);if(throughput===undefined){throw new Error('Missing throughput for '+\nue.stableId);}\nthroughputNumeric.addSample(throughput,sampleDiagnosticMap);const frameTimeDiscrepancy=computeAnimationframeTimeDiscrepancy(ue);if(frameTimeDiscrepancy===undefined){throw new Error('Missing frameTimeDiscrepancy for '+\nue.stableId);}\nframeTimeDiscrepancyNumeric.addSample(frameTimeDiscrepancy,sampleDiagnosticMap);ue.associatedEvents.forEach(function(event){if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){return;}\nlatencyNumeric.addSample(event.duration,sampleDiagnosticMap);});}else{throw new Error('Unrecognized stage for '+ue.stableId);}});[responseNumeric,throughputNumeric,frameTimeDiscrepancyNumeric,latencyNumeric].forEach(function(numeric){numeric.customizeSummaryOptions({avg:true,max:true,min:true,std:true});});histograms.addHistogram(responseNumeric);histograms.addHistogram(throughputNumeric);histograms.addHistogram(frameTimeDiscrepancyNumeric);histograms.addHistogram(latencyNumeric);}\ntr.metrics.MetricRegistry.register(responsivenessMetric,{supportsRangeOfInterest:true,requiredCategories:['rail'],});return{responsivenessMetric,};});var JpegImage=(function jpegImage(){\"use strict\";var dctZigZag=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);var dctCos1=4017\nvar dctSin1=799\nvar dctCos3=3406\nvar dctSin3=2276\nvar dctCos6=1567\nvar dctSin6=3784\nvar dctSqrt2=5793\nvar dctSqrt1d2=2896\nfunction constructor(){}\nfunction buildHuffmanTable(codeLengths,values){var k=0,code=[],i,j,length=16;while(length>0&&!codeLengths[length-1])\nlength--;code.push({children:[],index:0});var p=code[0],q;for(i=0;i<length;i++){for(j=0;j<codeLengths[i];j++){p=code.pop();p.children[p.index]=values[k];while(p.index>0){p=code.pop();}\np.index++;code.push(p);while(code.length<=i){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q;}\nk++;}\nif(i+1<length){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q;}}\nreturn code[0].children;}\nfunction decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successivePrev,successive){var precision=frame.precision;var samplesPerLine=frame.samplesPerLine;var scanLines=frame.scanLines;var mcusPerLine=frame.mcusPerLine;var progressive=frame.progressive;var maxH=frame.maxH,maxV=frame.maxV;var startOffset=offset,bitsData=0,bitsCount=0;function readBit(){if(bitsCount>0){bitsCount--;return(bitsData>>bitsCount)&1;}\nbitsData=data[offset++];if(bitsData==0xFF){var nextByte=data[offset++];if(nextByte){throw new Error(\"unexpected marker: \"+((bitsData<<8)|nextByte).toString(16));}}\nbitsCount=7;return bitsData>>>7;}\nfunction decodeHuffman(tree){var node=tree,bit;while((bit=readBit())!==null){node=node[bit];if(typeof node==='number')\nreturn node;if(typeof node!=='object')\nthrow new Error(\"invalid huffman sequence\");}\nreturn null;}\nfunction receive(length){var n=0;while(length>0){var bit=readBit();if(bit===null)return;n=(n<<1)|bit;length--;}\nreturn n;}\nfunction receiveAndExtend(length){var n=receive(length);if(n>=1<<(length-1))\nreturn n;return n+(-1<<length)+1;}\nfunction decodeBaseline(component,zz){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:receiveAndExtend(t);zz[0]=(component.pred+=diff);var k=1;while(k<64){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15)\nbreak;k+=16;continue;}\nk+=r;var z=dctZigZag[k];zz[z]=receiveAndExtend(s);k++;}}\nfunction decodeDCFirst(component,zz){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:(receiveAndExtend(t)<<successive);zz[0]=(component.pred+=diff);}\nfunction decodeDCSuccessive(component,zz){zz[0]|=readBit()<<successive;}\nvar eobrun=0;function decodeACFirst(component,zz){if(eobrun>0){eobrun--;return;}\nvar k=spectralStart,e=spectralEnd;while(k<=e){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<<r)-1;break;}\nk+=16;continue;}\nk+=r;var z=dctZigZag[k];zz[z]=receiveAndExtend(s)*(1<<successive);k++;}}\nvar successiveACState=0,successiveACNextValue;function decodeACSuccessive(component,zz){var k=spectralStart,e=spectralEnd,r=0;while(k<=e){var z=dctZigZag[k];var direction=zz[z]<0?-1:1;switch(successiveACState){case 0:var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<<r);successiveACState=4;}else{r=16;successiveACState=1;}}else{if(s!==1)\nthrow new Error(\"invalid ACn encoding\");successiveACNextValue=receiveAndExtend(s);successiveACState=r?2:3;}\ncontinue;case 1:case 2:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;else{r--;if(r===0)\nsuccessiveACState=successiveACState==2?3:0;}\nbreak;case 3:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;else{zz[z]=successiveACNextValue<<successive;successiveACState=0;}\nbreak;case 4:if(zz[z])\nzz[z]+=(readBit()<<successive)*direction;break;}\nk++;}\nif(successiveACState===4){eobrun--;if(eobrun===0)\nsuccessiveACState=0;}}\nfunction decodeMcu(component,decode,mcu,row,col){var mcuRow=(mcu/mcusPerLine)|0;var mcuCol=mcu%mcusPerLine;var blockRow=mcuRow*component.v+row;var blockCol=mcuCol*component.h+col;decode(component,component.blocks[blockRow][blockCol]);}\nfunction decodeBlock(component,decode,mcu){var blockRow=(mcu/component.blocksPerLine)|0;var blockCol=mcu%component.blocksPerLine;decode(component,component.blocks[blockRow][blockCol]);}\nvar componentsLength=components.length;var component,i,j,k,n;var decodeFn;if(progressive){if(spectralStart===0)\ndecodeFn=successivePrev===0?decodeDCFirst:decodeDCSuccessive;else\ndecodeFn=successivePrev===0?decodeACFirst:decodeACSuccessive;}else{decodeFn=decodeBaseline;}\nvar mcu=0,marker;var mcuExpected;if(componentsLength==1){mcuExpected=components[0].blocksPerLine*components[0].blocksPerColumn;}else{mcuExpected=mcusPerLine*frame.mcusPerColumn;}\nif(!resetInterval)resetInterval=mcuExpected;var h,v;while(mcu<mcuExpected){for(i=0;i<componentsLength;i++)\ncomponents[i].pred=0;eobrun=0;if(componentsLength==1){component=components[0];for(n=0;n<resetInterval;n++){decodeBlock(component,decodeFn,mcu);mcu++;}}else{for(n=0;n<resetInterval;n++){for(i=0;i<componentsLength;i++){component=components[i];h=component.h;v=component.v;for(j=0;j<v;j++){for(k=0;k<h;k++){decodeMcu(component,decodeFn,mcu,j,k);}}}\nmcu++;if(mcu===mcuExpected)break;}}\nbitsCount=0;marker=(data[offset]<<8)|data[offset+1];if(marker<0xFF00){throw new Error(\"marker was not found\");}\nif(marker>=0xFFD0&&marker<=0xFFD7){offset+=2;}\nelse\nbreak;}\nreturn offset-startOffset;}\nfunction buildComponentData(frame,component){var lines=[];var blocksPerLine=component.blocksPerLine;var blocksPerColumn=component.blocksPerColumn;var samplesPerLine=blocksPerLine<<3;var R=new Int32Array(64),r=new Uint8Array(64);function quantizeAndInverse(zz,dataOut,dataIn){var qt=component.quantizationTable;var v0,v1,v2,v3,v4,v5,v6,v7,t;var p=dataIn;var i;for(i=0;i<64;i++)\np[i]=zz[i]*qt[i];for(i=0;i<8;++i){var row=8*i;if(p[1+row]==0&&p[2+row]==0&&p[3+row]==0&&p[4+row]==0&&p[5+row]==0&&p[6+row]==0&&p[7+row]==0){t=(dctSqrt2*p[0+row]+512)>>10;p[0+row]=t;p[1+row]=t;p[2+row]=t;p[3+row]=t;p[4+row]=t;p[5+row]=t;p[6+row]=t;p[7+row]=t;continue;}\nv0=(dctSqrt2*p[0+row]+128)>>8;v1=(dctSqrt2*p[4+row]+128)>>8;v2=p[2+row];v3=p[6+row];v4=(dctSqrt1d2*(p[1+row]-p[7+row])+128)>>8;v7=(dctSqrt1d2*(p[1+row]+p[7+row])+128)>>8;v5=p[3+row]<<4;v6=p[5+row]<<4;t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+128)>>8;v2=(v2*dctCos6-v3*dctSin6+128)>>8;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0+row]=v0+v7;p[7+row]=v0-v7;p[1+row]=v1+v6;p[6+row]=v1-v6;p[2+row]=v2+v5;p[5+row]=v2-v5;p[3+row]=v3+v4;p[4+row]=v3-v4;}\nfor(i=0;i<8;++i){var col=i;if(p[1*8+col]==0&&p[2*8+col]==0&&p[3*8+col]==0&&p[4*8+col]==0&&p[5*8+col]==0&&p[6*8+col]==0&&p[7*8+col]==0){t=(dctSqrt2*dataIn[i+0]+8192)>>14;p[0*8+col]=t;p[1*8+col]=t;p[2*8+col]=t;p[3*8+col]=t;p[4*8+col]=t;p[5*8+col]=t;p[6*8+col]=t;p[7*8+col]=t;continue;}\nv0=(dctSqrt2*p[0*8+col]+2048)>>12;v1=(dctSqrt2*p[4*8+col]+2048)>>12;v2=p[2*8+col];v3=p[6*8+col];v4=(dctSqrt1d2*(p[1*8+col]-p[7*8+col])+2048)>>12;v7=(dctSqrt1d2*(p[1*8+col]+p[7*8+col])+2048)>>12;v5=p[3*8+col];v6=p[5*8+col];t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+2048)>>12;v2=(v2*dctCos6-v3*dctSin6+2048)>>12;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0*8+col]=v0+v7;p[7*8+col]=v0-v7;p[1*8+col]=v1+v6;p[6*8+col]=v1-v6;p[2*8+col]=v2+v5;p[5*8+col]=v2-v5;p[3*8+col]=v3+v4;p[4*8+col]=v3-v4;}\nfor(i=0;i<64;++i){var sample=128+((p[i]+8)>>4);dataOut[i]=sample<0?0:sample>0xFF?0xFF:sample;}}\nvar i,j;for(var blockRow=0;blockRow<blocksPerColumn;blockRow++){var scanLine=blockRow<<3;for(i=0;i<8;i++)\nlines.push(new Uint8Array(samplesPerLine));for(var blockCol=0;blockCol<blocksPerLine;blockCol++){quantizeAndInverse(component.blocks[blockRow][blockCol],r,R);var offset=0,sample=blockCol<<3;for(j=0;j<8;j++){var line=lines[scanLine+j];for(i=0;i<8;i++)\nline[sample+i]=r[offset++];}}}\nreturn lines;}\nfunction clampTo8bit(a){return a<0?0:a>255?255:a;}\nconstructor.prototype={load:function load(path){var xhr=new XMLHttpRequest();xhr.open(\"GET\",path,true);xhr.responseType=\"arraybuffer\";xhr.onload=(function(){var data=new Uint8Array(xhr.response||xhr.mozResponseArrayBuffer);this.parse(data);if(this.onload)\nthis.onload();}).bind(this);xhr.send(null);},parse:function parse(data){var offset=0,length=data.length;function readUint16(){var value=(data[offset]<<8)|data[offset+1];offset+=2;return value;}\nfunction readDataBlock(){var length=readUint16();var array=data.subarray(offset,offset+length-2);offset+=array.length;return array;}\nfunction prepareComponents(frame){var maxH=0,maxV=0;var component,componentId;for(componentId in frame.components){if(frame.components.hasOwnProperty(componentId)){component=frame.components[componentId];if(maxH<component.h)maxH=component.h;if(maxV<component.v)maxV=component.v;}}\nvar mcusPerLine=Math.ceil(frame.samplesPerLine/8/maxH);var mcusPerColumn=Math.ceil(frame.scanLines/8/maxV);for(componentId in frame.components){if(frame.components.hasOwnProperty(componentId)){component=frame.components[componentId];var blocksPerLine=Math.ceil(Math.ceil(frame.samplesPerLine/8)*component.h/maxH);var blocksPerColumn=Math.ceil(Math.ceil(frame.scanLines/8)*component.v/maxV);var blocksPerLineForMcu=mcusPerLine*component.h;var blocksPerColumnForMcu=mcusPerColumn*component.v;var blocks=[];for(var i=0;i<blocksPerColumnForMcu;i++){var row=[];for(var j=0;j<blocksPerLineForMcu;j++)\nrow.push(new Int32Array(64));blocks.push(row);}\ncomponent.blocksPerLine=blocksPerLine;component.blocksPerColumn=blocksPerColumn;component.blocks=blocks;}}\nframe.maxH=maxH;frame.maxV=maxV;frame.mcusPerLine=mcusPerLine;frame.mcusPerColumn=mcusPerColumn;}\nvar jfif=null;var adobe=null;var pixels=null;var frame,resetInterval;var quantizationTables=[],frames=[];var huffmanTablesAC=[],huffmanTablesDC=[];var fileMarker=readUint16();if(fileMarker!=0xFFD8){throw new Error(\"SOI not found\");}\nfileMarker=readUint16();while(fileMarker!=0xFFD9){var i,j,l;switch(fileMarker){case 0xFF00:break;case 0xFFE0:case 0xFFE1:case 0xFFE2:case 0xFFE3:case 0xFFE4:case 0xFFE5:case 0xFFE6:case 0xFFE7:case 0xFFE8:case 0xFFE9:case 0xFFEA:case 0xFFEB:case 0xFFEC:case 0xFFED:case 0xFFEE:case 0xFFEF:case 0xFFFE:var appData=readDataBlock();if(fileMarker===0xFFE0){if(appData[0]===0x4A&&appData[1]===0x46&&appData[2]===0x49&&appData[3]===0x46&&appData[4]===0){jfif={version:{major:appData[5],minor:appData[6]},densityUnits:appData[7],xDensity:(appData[8]<<8)|appData[9],yDensity:(appData[10]<<8)|appData[11],thumbWidth:appData[12],thumbHeight:appData[13],thumbData:appData.subarray(14,14+3*appData[12]*appData[13])};}}\nif(fileMarker===0xFFEE){if(appData[0]===0x41&&appData[1]===0x64&&appData[2]===0x6F&&appData[3]===0x62&&appData[4]===0x65&&appData[5]===0){adobe={version:appData[6],flags0:(appData[7]<<8)|appData[8],flags1:(appData[9]<<8)|appData[10],transformCode:appData[11]};}}\nbreak;case 0xFFDB:var quantizationTablesLength=readUint16();var quantizationTablesEnd=quantizationTablesLength+offset-2;while(offset<quantizationTablesEnd){var quantizationTableSpec=data[offset++];var tableData=new Int32Array(64);if((quantizationTableSpec>>4)===0){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=data[offset++];}}else if((quantizationTableSpec>>4)===1){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=readUint16();}}else\nthrow new Error(\"DQT: invalid table spec\");quantizationTables[quantizationTableSpec&15]=tableData;}\nbreak;case 0xFFC0:case 0xFFC1:case 0xFFC2:readUint16();frame={};frame.extended=(fileMarker===0xFFC1);frame.progressive=(fileMarker===0xFFC2);frame.precision=data[offset++];frame.scanLines=readUint16();frame.samplesPerLine=readUint16();frame.components={};frame.componentsOrder=[];var componentsCount=data[offset++],componentId;var maxH=0,maxV=0;for(i=0;i<componentsCount;i++){componentId=data[offset];var h=data[offset+1]>>4;var v=data[offset+1]&15;var qId=data[offset+2];frame.componentsOrder.push(componentId);frame.components[componentId]={h:h,v:v,quantizationIdx:qId};offset+=3;}\nprepareComponents(frame);frames.push(frame);break;case 0xFFC4:var huffmanLength=readUint16();for(i=2;i<huffmanLength;){var huffmanTableSpec=data[offset++];var codeLengths=new Uint8Array(16);var codeLengthSum=0;for(j=0;j<16;j++,offset++)\ncodeLengthSum+=(codeLengths[j]=data[offset]);var huffmanValues=new Uint8Array(codeLengthSum);for(j=0;j<codeLengthSum;j++,offset++)\nhuffmanValues[j]=data[offset];i+=17+codeLengthSum;((huffmanTableSpec>>4)===0?huffmanTablesDC:huffmanTablesAC)[huffmanTableSpec&15]=buildHuffmanTable(codeLengths,huffmanValues);}\nbreak;case 0xFFDD:readUint16();resetInterval=readUint16();break;case 0xFFDA:var scanLength=readUint16();var selectorsCount=data[offset++];var components=[],component;for(i=0;i<selectorsCount;i++){component=frame.components[data[offset++]];var tableSpec=data[offset++];component.huffmanTableDC=huffmanTablesDC[tableSpec>>4];component.huffmanTableAC=huffmanTablesAC[tableSpec&15];components.push(component);}\nvar spectralStart=data[offset++];var spectralEnd=data[offset++];var successiveApproximation=data[offset++];var processed=decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successiveApproximation>>4,successiveApproximation&15);offset+=processed;break;case 0xFFFF:if(data[offset]!==0xFF){offset--;}\nbreak;default:if(data[offset-3]==0xFF&&data[offset-2]>=0xC0&&data[offset-2]<=0xFE){offset-=3;break;}\nthrow new Error(\"unknown JPEG marker \"+fileMarker.toString(16));}\nfileMarker=readUint16();}\nif(frames.length!=1)\nthrow new Error(\"only single frame JPEGs supported\");for(var i=0;i<frames.length;i++){var cp=frames[i].components;for(var j in cp){cp[j].quantizationTable=quantizationTables[cp[j].quantizationIdx];delete cp[j].quantizationIdx;}}\nthis.width=frame.samplesPerLine;this.height=frame.scanLines;this.jfif=jfif;this.adobe=adobe;this.components=[];for(var i=0;i<frame.componentsOrder.length;i++){var component=frame.components[frame.componentsOrder[i]];this.components.push({lines:buildComponentData(frame,component),scaleX:component.h/frame.maxH,scaleY:component.v/frame.maxV});}},getData:function getData(width,height){var scaleX=this.width/width,scaleY=this.height/height;var component1,component2,component3,component4;var component1Line,component2Line,component3Line,component4Line;var x,y;var offset=0;var Y,Cb,Cr,K,C,M,Ye,R,G,B;var colorTransform;var dataLength=width*height*this.components.length;var data=new Uint8Array(dataLength);switch(this.components.length){case 1:component1=this.components[0];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];for(x=0;x<width;x++){Y=component1Line[0|(x*component1.scaleX*scaleX)];data[offset++]=Y;}}\nbreak;case 2:component1=this.components[0];component2=this.components[1];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];for(x=0;x<width;x++){Y=component1Line[0|(x*component1.scaleX*scaleX)];data[offset++]=Y;Y=component2Line[0|(x*component2.scaleX*scaleX)];data[offset++]=Y;}}\nbreak;case 3:colorTransform=true;if(this.adobe&&this.adobe.transformCode)\ncolorTransform=true;else if(typeof this.colorTransform!=='undefined')\ncolorTransform=!!this.colorTransform;component1=this.components[0];component2=this.components[1];component3=this.components[2];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];component3Line=component3.lines[0|(y*component3.scaleY*scaleY)];for(x=0;x<width;x++){if(!colorTransform){R=component1Line[0|(x*component1.scaleX*scaleX)];G=component2Line[0|(x*component2.scaleX*scaleX)];B=component3Line[0|(x*component3.scaleX*scaleX)];}else{Y=component1Line[0|(x*component1.scaleX*scaleX)];Cb=component2Line[0|(x*component2.scaleX*scaleX)];Cr=component3Line[0|(x*component3.scaleX*scaleX)];R=clampTo8bit(Y+1.402*(Cr-128));G=clampTo8bit(Y-0.3441363*(Cb-128)-0.71413636*(Cr-128));B=clampTo8bit(Y+1.772*(Cb-128));}\ndata[offset++]=R;data[offset++]=G;data[offset++]=B;}}\nbreak;case 4:if(!this.adobe)\nthrow new Error('Unsupported color mode (4 components)');colorTransform=false;if(this.adobe&&this.adobe.transformCode)\ncolorTransform=true;else if(typeof this.colorTransform!=='undefined')\ncolorTransform=!!this.colorTransform;component1=this.components[0];component2=this.components[1];component3=this.components[2];component4=this.components[3];for(y=0;y<height;y++){component1Line=component1.lines[0|(y*component1.scaleY*scaleY)];component2Line=component2.lines[0|(y*component2.scaleY*scaleY)];component3Line=component3.lines[0|(y*component3.scaleY*scaleY)];component4Line=component4.lines[0|(y*component4.scaleY*scaleY)];for(x=0;x<width;x++){if(!colorTransform){C=component1Line[0|(x*component1.scaleX*scaleX)];M=component2Line[0|(x*component2.scaleX*scaleX)];Ye=component3Line[0|(x*component3.scaleX*scaleX)];K=component4Line[0|(x*component4.scaleX*scaleX)];}else{Y=component1Line[0|(x*component1.scaleX*scaleX)];Cb=component2Line[0|(x*component2.scaleX*scaleX)];Cr=component3Line[0|(x*component3.scaleX*scaleX)];K=component4Line[0|(x*component4.scaleX*scaleX)];C=255-clampTo8bit(Y+1.402*(Cr-128));M=255-clampTo8bit(Y-0.3441363*(Cb-128)-0.71413636*(Cr-128));Ye=255-clampTo8bit(Y+1.772*(Cb-128));}\ndata[offset++]=255-C;data[offset++]=255-M;data[offset++]=255-Ye;data[offset++]=255-K;}}\nbreak;default:throw new Error('Unsupported color mode');}\nreturn data;},copyToImageData:function copyToImageData(imageData){var width=imageData.width,height=imageData.height;var imageDataArray=imageData.data;var data=this.getData(width,height);var i=0,j=0,x,y;var Y,K,C,M,R,G,B;switch(this.components.length){case 1:for(y=0;y<height;y++){for(x=0;x<width;x++){Y=data[i++];imageDataArray[j++]=Y;imageDataArray[j++]=Y;imageDataArray[j++]=Y;imageDataArray[j++]=255;}}\nbreak;case 3:for(y=0;y<height;y++){for(x=0;x<width;x++){R=data[i++];G=data[i++];B=data[i++];imageDataArray[j++]=R;imageDataArray[j++]=G;imageDataArray[j++]=B;imageDataArray[j++]=255;}}\nbreak;case 4:for(y=0;y<height;y++){for(x=0;x<width;x++){C=data[i++];M=data[i++];Y=data[i++];K=data[i++];R=255-clampTo8bit(C*(1-K/255)+K);G=255-clampTo8bit(M*(1-K/255)+K);B=255-clampTo8bit(Y*(1-K/255)+K);imageDataArray[j++]=R;imageDataArray[j++]=G;imageDataArray[j++]=B;imageDataArray[j++]=255;}}\nbreak;default:throw new Error('Unsupported color mode');}}};return constructor;})();global.jpegDecode=decode;function decode(jpegData,opts){var defaultOpts={useTArray:false,colorTransform:true};if(opts){if(typeof opts==='object'){opts={useTArray:(typeof opts.useTArray==='undefined'?defaultOpts.useTArray:opts.useTArray),colorTransform:(typeof opts.colorTransform==='undefined'?defaultOpts.colorTransform:opts.colorTransform)};}else{opts=defaultOpts;opts.useTArray=true;}}else{opts=defaultOpts;}\nvar arr=new Uint8Array(jpegData);var decoder=new JpegImage();decoder.parse(arr);decoder.colorTransform=opts.colorTransform;var image={width:decoder.width,height:decoder.height,data:opts.useTArray?new Uint8Array(decoder.width*decoder.height*4):new Buffer(decoder.width*decoder.height*4)};decoder.copyToImageData(image);return image;}'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const SpeedIndex=tr.e.chrome.SpeedIndex;const LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function addSpeedIndexScreenshotsBasedSample(samples,navigationStart,loadDuration,browserHelper){const screenshotObjects=browserHelper.process.objects.getAllInstancesNamed('Screenshot');if(!screenshotObjects)return;for(let i=0;i<screenshotObjects.length;i++){const snapshots=screenshotObjects[i].snapshots;const timestampedColorHistograms=[];snapshots.map(snapshot=>{if(snapshot.ts>=navigationStart.start&&snapshot.ts<navigationStart.start+loadDuration){timestampedColorHistograms.push({colorHistogram:SpeedIndex.createColorHistogram(getPixelData(snapshot.args)),ts:snapshot.ts});}});samples.push({value:SpeedIndex.calculateSpeedIndex(timestampedColorHistograms)-\nnavigationStart.start});}}\nfunction getPixelData(base64JpegImage){const binaryString=atob(base64JpegImage);const bytes=new DataView(new ArrayBuffer(base64JpegImage.length));tr.b.Base64.DecodeToTypedArray(base64JpegImage,bytes);const rawImageData=jpegDecode(bytes.buffer,{useTArray:true});return rawImageData.data;}\nfunction collectSpeedIndexSamplesFromLoadExpectations(model,chromeHelper){const speedIndexScreenshotsBasedSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}\nconst rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];addSpeedIndexScreenshotsBasedSample(speedIndexScreenshotsBasedSamples,expectation.navigationStart,expectation.duration,chromeHelper.browserHelper);}\nreturn speedIndexScreenshotsBasedSamples;}\nfunction screenshotsBasedSpeedIndexMetric(histograms,model){const speedIndexScreenshotsBasedHistogram=histograms.createHistogram('speedIndexScreenshotsBased',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'The average time at which visible parts of the'+' page are displayed.',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const samples=collectSpeedIndexSamplesFromLoadExpectations(model,chromeHelper);for(const sample of samples){speedIndexScreenshotsBasedHistogram.addSample(sample.value);}}\ntr.metrics.MetricRegistry.register(screenshotsBasedSpeedIndexMetric);return{screenshotsBasedSpeedIndexMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){function webviewStartupMetric(histograms,model){const startupWallHist=new tr.v.Histogram('webview_startup_wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);startupWallHist.description='WebView startup wall time';const startupCPUHist=new tr.v.Histogram('webview_startup_cpu_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);startupCPUHist.description='WebView startup CPU time';const loadWallHist=new tr.v.Histogram('webview_url_load_wall_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);loadWallHist.description='WebView blank URL load wall time';const loadCPUHist=new tr.v.Histogram('webview_url_load_cpu_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);loadCPUHist.description='WebView blank URL load CPU time';for(const slice of model.getDescendantEvents()){if(!(slice instanceof tr.model.ThreadSlice))continue;if(slice.title==='WebViewStartupInterval'){startupWallHist.addSample(slice.duration);startupCPUHist.addSample(slice.cpuDuration);}\nif(slice.title==='WebViewBlankUrlLoadInterval'){loadWallHist.addSample(slice.duration);loadCPUHist.addSample(slice.cpuDuration);}}\nhistograms.addHistogram(startupWallHist);histograms.addHistogram(startupCPUHist);histograms.addHistogram(loadWallHist);histograms.addHistogram(loadCPUHist);}\ntr.metrics.MetricRegistry.register(webviewStartupMetric);return{webviewStartupMetric,};});'use strict';tr.exportTo('tr.metrics.tabs',function(){function tabsMetric(histograms,model,opt_options){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper){return;}\nconst tabSwitchRequestDelays=[];const TAB_SWITCHING_REQUEST_TITLE='TabSwitchVisibilityRequest';let startTabSwitchVisibilityRequest=Number.MAX_SAFE_INTEGER;for(const helper of chromeHelper.browserHelpers){if(!helper.mainThread)continue;for(const slice of helper.mainThread.asyncSliceGroup.slices){if(slice.title===TAB_SWITCHING_REQUEST_TITLE&&!slice.error){tabSwitchRequestDelays.push(slice.duration);if(slice.start<startTabSwitchVisibilityRequest){startTabSwitchVisibilityRequest=slice.start;}}}}\nhistograms.createHistogram('tab_switching_request_delay',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tabSwitchRequestDelays,{description:'Delay before tab-request is made',summaryOptions:{sum:false}});const tabSwitchLatencies=[];const TAB_SWITCHING_SLICE_TITLE='TabSwitching::Latency';function extractLatencyFromHelpers(helpers,legacy){for(const helper of helpers){if(!helper.mainThread){continue;}\nconst thread=helper.mainThread;for(const slice of thread.asyncSliceGroup.slices){if(slice.title===TAB_SWITCHING_SLICE_TITLE&&(legacy||slice.args.latency)&&slice.start>startTabSwitchVisibilityRequest){tabSwitchLatencies.push(legacy?slice.duration:slice.args.latency);}}}}\nextractLatencyFromHelpers(chromeHelper.browserHelpers);extractLatencyFromHelpers(Object.values(chromeHelper.rendererHelpers));if(tabSwitchLatencies.length===0){extractLatencyFromHelpers(chromeHelper.browserHelpers,true);}\nhistograms.createHistogram('tab_switching_latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tabSwitchLatencies,{description:'Tab switching time in ms',summaryOptions:{sum:false}});}\ntr.metrics.MetricRegistry.register(tabsMetric,{supportsRangeOfInterest:false,});return{tabsMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const MEMORY_INFRA_TRACING_CATEGORY='disabled-by-default-memory-infra';const TIME_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1e-3,1e5,30);const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,30);const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e5,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;function addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes){const memoryDumpCount=model.globalMemoryDumps.length;if(memoryDumpCount===0)return;let totalOverhead=0;let nonMemoryInfraThreadOverhead=0;const overheadByProvider={};for(const process of Object.values(model.processes)){for(const thread of Object.values(process.threads)){for(const slice of Object.values(thread.sliceGroup.slices)){if(slice.category!==MEMORY_INFRA_TRACING_CATEGORY)continue;totalOverhead+=slice.duration;if(thread.name!=='MemoryInfra'){nonMemoryInfraThreadOverhead+=slice.duration;}\nif(slice.args&&slice.args['dump_provider.name']){const providerName=slice.args['dump_provider.name'];let durationAndCount=overheadByProvider[providerName];if(durationAndCount===undefined){overheadByProvider[providerName]=durationAndCount={duration:0,count:0};}\ndurationAndCount.duration+=slice.duration;durationAndCount.count++;}}}}\nhistograms.createHistogram('memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,totalOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on all threads per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('nonmemory_thread_memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,nonMemoryInfraThreadOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on non-memory-infra threads '+'per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});for(const[providerName,overhead]of Object.entries(overheadByProvider)){histograms.createHistogram(`${providerName}_memory_dump_cpu_overhead`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,overhead.duration/overhead.count,{binBoundaries:TIME_BOUNDARIES,description:`Average CPU overhead of ${providerName} per OnMemoryDump call`,summaryOptions:SUMMARY_OPTIONS,});}\nconst memoryInfraEventsSize=categoryNamesToTotalEventSizes.get(MEMORY_INFRA_TRACING_CATEGORY);const memoryInfraTraceBytesValue=new tr.v.Histogram('total_memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);memoryInfraTraceBytesValue.description='Total trace size of memory-infra dumps in bytes';memoryInfraTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);memoryInfraTraceBytesValue.addSample(memoryInfraEventsSize);histograms.addHistogram(memoryInfraTraceBytesValue);const traceBytesPerDumpValue=new tr.v.Histogram('memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);traceBytesPerDumpValue.description='Average trace size of memory-infra dumps in bytes';traceBytesPerDumpValue.customizeSummaryOptions(SUMMARY_OPTIONS);traceBytesPerDumpValue.addSample(memoryInfraEventsSize/memoryDumpCount);histograms.addHistogram(traceBytesPerDumpValue);}\nfunction tracingMetric(histograms,model){if(!model.stats.hasEventSizesinBytes)return;const eventStats=model.stats.allTraceEventStatsInTimeIntervals;eventStats.sort((a,b)=>a.timeInterval-b.timeInterval);const totalTraceBytes=eventStats.reduce((a,b)=>a+b.totalEventSizeinBytes,0);let maxEventCountPerSec=0;let maxEventBytesPerSec=0;const INTERVALS_PER_SEC=Math.floor(1000/model.stats.TIME_INTERVAL_SIZE_IN_MS);let runningEventNumPerSec=0;let runningEventBytesPerSec=0;let start=0;let end=0;while(end<eventStats.length){runningEventNumPerSec+=eventStats[end].numEvents;runningEventBytesPerSec+=eventStats[end].totalEventSizeinBytes;end++;while((eventStats[end-1].timeInterval-\neventStats[start].timeInterval)>=INTERVALS_PER_SEC){runningEventNumPerSec-=eventStats[start].numEvents;runningEventBytesPerSec-=eventStats[start].totalEventSizeinBytes;start++;}\nmaxEventCountPerSec=Math.max(maxEventCountPerSec,runningEventNumPerSec);maxEventBytesPerSec=Math.max(maxEventBytesPerSec,runningEventBytesPerSec);}\nconst stats=model.stats.allTraceEventStats;const categoryNamesToTotalEventSizes=(stats.reduce((map,stat)=>(map.set(stat.category,((map.get(stat.category)||0)+\nstat.totalEventSizeinBytes))),new Map()));const maxCatNameAndBytes=Array.from(categoryNamesToTotalEventSizes.entries()).reduce((a,b)=>((b[1]>=a[1])?b:a));const maxEventBytesPerCategory=maxCatNameAndBytes[1];const categoryWithMaxEventBytes=maxCatNameAndBytes[0];const maxEventCountPerSecValue=new tr.v.Histogram('peak_event_rate',tr.b.Unit.byName.count_smallerIsBetter,COUNT_BOUNDARIES);maxEventCountPerSecValue.description='Max number of events per second';maxEventCountPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventCountPerSecValue.addSample(maxEventCountPerSec);const maxEventBytesPerSecValue=new tr.v.Histogram('peak_event_size_rate',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);maxEventBytesPerSecValue.description='Max event size in bytes per second';maxEventBytesPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventBytesPerSecValue.addSample(maxEventBytesPerSec);const totalTraceBytesValue=new tr.v.Histogram('trace_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);totalTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);totalTraceBytesValue.addSample(totalTraceBytes);const biggestCategory={name:categoryWithMaxEventBytes,size_in_bytes:maxEventBytesPerCategory};totalTraceBytesValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(totalTraceBytesValue);maxEventCountPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventCountPerSecValue);maxEventBytesPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventBytesPerSecValue);addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes);}\ntr.metrics.MetricRegistry.register(tracingMetric);return{tracingMetric,MEMORY_INFRA_TRACING_CATEGORY,};});'use strict';tr.exportTo('tr.metrics',function(){function parseBuckets_(event,processName){const len=tr.b.Base64.getDecodedBufferLength(event.args.buckets);const buffer=new ArrayBuffer(len);const dataView=new DataView(buffer);tr.b.Base64.DecodeToTypedArray(event.args.buckets,dataView);const decoded=new Uint32Array(buffer);const sum=decoded[1]+decoded[2]*0x100000000;const bins=[];let position=4;while(position<=decoded.length-4){const min=decoded[position++];const max=decoded[position++]+decoded[position++]*0x100000000;const count=decoded[position++];const processes=new tr.v.d.Breakdown();processes.set(processName,count);const events=new tr.v.d.RelatedEventSet([event]);bins.push({min,max,count,processes,events});}\nreturn{sum,bins};}\nfunction mergeBins_(x,y){x.sum+=y.sum;const allBins=[...x.bins,...y.bins];allBins.sort((a,b)=>a.min-b.min);x.bins=[];let last=undefined;for(const bin of allBins){if(last!==undefined&&bin.min===last.min){if(last.max!==bin.max)throw new Error('Incompatible bins');if(bin.count===0)continue;last.count+=bin.count;for(const event of bin.events){last.events.add(event);}\nlast.processes.addDiagnostic(bin.processes);}else{if(last!==undefined&&bin.min<last.max){throw new Error('Incompatible bins');}\nx.bins.push(bin);last=bin;}}}\nfunction subtractBins_(x,y){x.sum-=y.sum;let p1=0;let p2=0;while(p2<y.bins.length){while(p1<x.bins.length&&x.bins[p1].min!==y.bins[p2].min){p1++;}\nif(p1===x.bins.length)throw new Error('Cannot subtract');if(x.bins[p1].max!==y.bins[p2].max){throw new Error('Incompatible bins');}\nif(x.bins[p1].count<y.bins[p2].count){throw new Error('Cannot subtract');}\nx.bins[p1].count-=y.bins[p2].count;for(const event of y.bins[p2].events){x.bins[p1].events.add(event);}\nconst processName=tr.b.getOnlyElement(x.bins[p1].processes)[0];x.bins[p1].processes.set(processName,x.bins[p1].count);p2++;}}\nfunction getHistogramUnit_(name){return tr.b.Unit.byName.unitlessNumber_smallerIsBetter;}\nfunction getHistogramBoundaries_(name){if(name.startsWith('Event.Latency.Scroll')){return tr.v.HistogramBinBoundaries.createExponential(1e3,1e5,50);}\nif(name.startsWith('Graphics.Smoothness.Throughput')){return tr.v.HistogramBinBoundaries.createLinear(0,100,101);}\nif(name.startsWith('Memory.Memory.GPU.PeakMemoryUsage')){return tr.v.HistogramBinBoundaries.createLinear(0,1e6,100);}\nreturn tr.v.HistogramBinBoundaries.createExponential(1e-3,1e3,50);}\nfunction umaMetric(histograms,model){const histogramValues=new Map();const nameCounts=new Map();for(const process of model.getAllProcesses()){const histogramEvents=new Map();for(const event of process.instantEvents){if(event.title!=='UMAHistogramSamples')continue;const name=event.args.name;const events=histogramEvents.get(name)||[];if(!histogramEvents.has(name))histogramEvents.set(name,events);events.push(event);}\nlet processName=tr.e.chrome.chrome_processes.canonicalizeProcessName(process.name);nameCounts.set(processName,(nameCounts.get(processName)||0)+1);processName=`${processName}_${nameCounts.get(processName)}`;for(const[name,events]of histogramEvents){const values=histogramValues.get(name)||{sum:0,bins:[]};if(!histogramValues.has(name))histogramValues.set(name,values);const endValues=parseBuckets_(events[events.length-1],processName);if(events.length===1){mergeBins_(values,endValues);}else if(events.length===2){subtractBins_(endValues,parseBuckets_(events[0],processName));mergeBins_(values,endValues);}else{throw new Error('There should be at most two snapshots of an UMA '+'histogram in each process');}}}\nfor(const[name,values]of histogramValues){const histogram=new tr.v.Histogram(name,getHistogramUnit_(name),getHistogramBoundaries_(name));let sumOfMiddles=0;let sumOfBinLengths=0;for(const bin of values.bins){sumOfMiddles+=bin.count*(bin.min+bin.max)/2;sumOfBinLengths+=bin.count*(bin.max-bin.min);}\nconst shift=(values.sum-sumOfMiddles)/sumOfBinLengths;if(Math.abs(shift)>0.5)throw new Error('Samples sum is wrong');for(const bin of values.bins){if(bin.count===0)continue;const shiftedValue=(bin.min+bin.max)/2+shift*(bin.max-bin.min);for(const[processName,count]of bin.processes){bin.processes.set(processName,shiftedValue*count/bin.count);}\nfor(let i=0;i<bin.count;i++){histogram.addSample(shiftedValue,{processes:bin.processes,events:bin.events});}}\nhistograms.addHistogram(histogram);}}\ntr.metrics.MetricRegistry.register(umaMetric,{requiredCategories:['benchmark'],});return{umaMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(4,200,100);function computeExecuteMetrics(histograms,model){const cpuTotalExecution=new tr.v.Histogram('v8_execution_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalExecution.description='cpu total time spent in script execution';const wallTotalExecution=new tr.v.Histogram('v8_execution_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalExecution.description='wall total time spent in script execution';const cpuSelfExecution=new tr.v.Histogram('v8_execution_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfExecution.description='cpu self time spent in script execution';const wallSelfExecution=new tr.v.Histogram('v8_execution_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfExecution.description='wall self time spent in script execution';for(const e of model.findTopmostSlicesNamed('V8.Execute')){cpuTotalExecution.addSample(e.cpuDuration);wallTotalExecution.addSample(e.duration);cpuSelfExecution.addSample(e.cpuSelfTime);wallSelfExecution.addSample(e.selfTime);}\nhistograms.addHistogram(cpuTotalExecution);histograms.addHistogram(wallTotalExecution);histograms.addHistogram(cpuSelfExecution);histograms.addHistogram(wallSelfExecution);}\nfunction computeParseLazyMetrics(histograms,model){const cpuSelfParseLazy=new tr.v.Histogram('v8_parse_lazy_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfParseLazy.description='cpu self time spent performing lazy parsing';const wallSelfParseLazy=new tr.v.Histogram('v8_parse_lazy_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfParseLazy.description='wall self time spent performing lazy parsing';for(const e of model.findTopmostSlicesNamed('V8.ParseLazyMicroSeconds')){cpuSelfParseLazy.addSample(e.cpuSelfTime);wallSelfParseLazy.addSample(e.selfTime);}\nfor(const e of model.findTopmostSlicesNamed('V8.ParseLazy')){cpuSelfParseLazy.addSample(e.cpuSelfTime);wallSelfParseLazy.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfParseLazy);histograms.addHistogram(wallSelfParseLazy);}\nfunction computeCompileFullCodeMetrics(histograms,model){const cpuSelfCompileFullCode=new tr.v.Histogram('v8_compile_full_code_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfCompileFullCode.description='cpu self time spent performing compiling full code';const wallSelfCompileFullCode=new tr.v.Histogram('v8_compile_full_code_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfCompileFullCode.description='wall self time spent performing compiling full code';for(const e of model.findTopmostSlicesNamed('V8.CompileFullCode')){cpuSelfCompileFullCode.addSample(e.cpuSelfTime);wallSelfCompileFullCode.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfCompileFullCode);histograms.addHistogram(wallSelfCompileFullCode);}\nfunction computeCompileIgnitionMetrics(histograms,model){const cpuSelfCompileIgnition=new tr.v.Histogram('v8_compile_ignition_cpu_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuSelfCompileIgnition.description='cpu self time spent in compile ignition';const wallSelfCompileIgnition=new tr.v.Histogram('v8_compile_ignition_wall_self',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallSelfCompileIgnition.description='wall self time spent in compile ignition';for(const e of model.findTopmostSlicesNamed('V8.CompileIgnition')){cpuSelfCompileIgnition.addSample(e.cpuSelfTime);wallSelfCompileIgnition.addSample(e.selfTime);}\nhistograms.addHistogram(cpuSelfCompileIgnition);histograms.addHistogram(wallSelfCompileIgnition);}\nfunction computeRecompileMetrics(histograms,model){const cpuTotalRecompileSynchronous=new tr.v.Histogram('v8_recompile_synchronous_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileSynchronous.description='cpu total time spent in synchronous recompilation';const wallTotalRecompileSynchronous=new tr.v.Histogram('v8_recompile_synchronous_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileSynchronous.description='wall total time spent in synchronous recompilation';const cpuTotalRecompileConcurrent=new tr.v.Histogram('v8_recompile_concurrent_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileConcurrent.description='cpu total time spent in concurrent recompilation';const wallTotalRecompileConcurrent=new tr.v.Histogram('v8_recompile_concurrent_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileConcurrent.description='wall total time spent in concurrent recompilation';const cpuTotalRecompileOverall=new tr.v.Histogram('v8_recompile_overall_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalRecompileOverall.description='cpu total time spent in synchronous or concurrent recompilation';const wallTotalRecompileOverall=new tr.v.Histogram('v8_recompile_overall_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalRecompileOverall.description='wall total time spent in synchronous or concurrent recompilation';for(const e of model.findTopmostSlicesNamed('V8.RecompileSynchronous')){cpuTotalRecompileSynchronous.addSample(e.cpuDuration);wallTotalRecompileSynchronous.addSample(e.duration);cpuTotalRecompileOverall.addSample(e.cpuDuration);wallTotalRecompileOverall.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalRecompileSynchronous);histograms.addHistogram(wallTotalRecompileSynchronous);for(const e of model.findTopmostSlicesNamed('V8.RecompileConcurrent')){cpuTotalRecompileConcurrent.addSample(e.cpuDuration);wallTotalRecompileConcurrent.addSample(e.duration);cpuTotalRecompileOverall.addSample(e.cpuDuration);wallTotalRecompileOverall.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalRecompileConcurrent);histograms.addHistogram(wallTotalRecompileConcurrent);histograms.addHistogram(cpuTotalRecompileOverall);histograms.addHistogram(wallTotalRecompileOverall);}\nfunction computeOptimizeCodeMetrics(histograms,model){const cpuTotalOptimizeCode=new tr.v.Histogram('v8_optimize_code_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalOptimizeCode.description='cpu total time spent in code optimization';const wallTotalOptimizeCode=new tr.v.Histogram('v8_optimize_code_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalOptimizeCode.description='wall total time spent in code optimization';for(const e of model.findTopmostSlicesNamed('V8.OptimizeCode')){cpuTotalOptimizeCode.addSample(e.cpuDuration);wallTotalOptimizeCode.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalOptimizeCode);histograms.addHistogram(wallTotalOptimizeCode);}\nfunction computeDeoptimizeCodeMetrics(histograms,model){const cpuTotalDeoptimizeCode=new tr.v.Histogram('v8_deoptimize_code_cpu_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);cpuTotalDeoptimizeCode.description='cpu total time spent in code deoptimization';const wallTotalDeoptimizeCode=new tr.v.Histogram('v8_deoptimize_code_wall_total',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);wallTotalDeoptimizeCode.description='wall total time spent in code deoptimization';for(const e of model.findTopmostSlicesNamed('V8.DeoptimizeCode')){cpuTotalDeoptimizeCode.addSample(e.cpuDuration);wallTotalDeoptimizeCode.addSample(e.duration);}\nhistograms.addHistogram(cpuTotalDeoptimizeCode);histograms.addHistogram(wallTotalDeoptimizeCode);}\nfunction executionMetric(histograms,model){computeExecuteMetrics(histograms,model);computeParseLazyMetrics(histograms,model);computeCompileIgnitionMetrics(histograms,model);computeCompileFullCodeMetrics(histograms,model);computeRecompileMetrics(histograms,model);computeOptimizeCodeMetrics(histograms,model);computeDeoptimizeCodeMetrics(histograms,model);}\ntr.metrics.MetricRegistry.register(executionMetric);return{executionMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const TARGET_FPS=60;const MS_PER_SECOND=1000;const WINDOW_SIZE_MS=MS_PER_SECOND/TARGET_FPS;function gcMetric(histograms,model,options){options=options||{};addDurationOfTopEvents(histograms,model);addTotalDurationOfTopEvents(histograms,model);if(options.include_sub_events){addDurationOfSubEvents(histograms,model);}\naddPercentageInV8ExecuteOfTopEvents(histograms,model);addTotalPercentageInV8Execute(histograms,model);addMarkCompactorMutatorUtilization(histograms,model);addTotalMarkCompactorTime(histograms,model);addTotalMarkCompactorMarkingTime(histograms,model);addScavengerSurvivedFromStackEvents(histograms,model);}\ntr.metrics.MetricRegistry.register(gcMetric);const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const percentage_biggerIsBetter=tr.b.Unit.byName.normalizedPercentage_biggerIsBetter;const percentage_smallerIsBetter=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const bytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,20,200).addExponentialBins(200,100);function createNumericForTopEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:true,max:true,min:false,std:true,sum:true,percentile:[0.90]});return n;}\nfunction createNumericForSubEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:false,std:false,sum:false,percentile:[0.90]});return n;}\nfunction createNumericForIdleTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:false,std:false,sum:true,percentile:[]});return n;}\nfunction createPercentage(name,numerator,denominator,unit){const hist=new tr.v.Histogram(name,unit);if(denominator===0){hist.addSample(0);}else{hist.addSample(numerator/denominator);}\nhist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false,percentile:[]});return hist;}\nfunction addDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,tr.metrics.v8.utils.topGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForTopEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);},tr.metrics.v8.utils.topGarbageCollectionEventNames());}\nfunction addTotalDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,event=>'v8-gc-total',function(name,events){const cpuDuration=createNumericForTopEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);},['v8-gc-total']);}\nfunction isV8MarkCompactorSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorSummaryEvent(event);}\nfunction isV8MarkCompactorMarkingSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorMarkingSummaryEvent(event);}\nfunction createHistogramFromSummary(histograms,name,events){const foregroundDuration=createNumericForTopEventTime(name+'-foreground');const backgroundDuration=createNumericForTopEventTime(name+'-background');const totalDuration=createNumericForTopEventTime(name+'-total');const relatedNames=new tr.v.d.RelatedNameMap();relatedNames.set('foreground',foregroundDuration.name);relatedNames.set('background',backgroundDuration.name);for(const event of events){foregroundDuration.addSample(event.args.duration);backgroundDuration.addSample(event.args.background_duration);const breakdownForTotal=new tr.v.d.Breakdown();breakdownForTotal.set('foreground',event.args.duration);breakdownForTotal.set('background',event.args.background_duration);totalDuration.addSample(event.args.duration+event.args.background_duration,{breakdown:breakdownForTotal});}\nhistograms.addHistogram(foregroundDuration);histograms.addHistogram(backgroundDuration);histograms.addHistogram(totalDuration,{breakdown:relatedNames});}\nfunction addTotalMarkCompactorTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorSummary,event=>'v8-gc-mark-compactor',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor']);}\nfunction addTotalMarkCompactorMarkingTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorMarkingSummary,event=>'v8-gc-mark-compactor-marking',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor-marking']);}\nfunction createNumericForTotalBytes(name){const n=new tr.v.Histogram(name,bytes_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:false,max:false,min:false,std:false,sum:true,percentile:[]});return n;}\nfunction createNumericForSampledPercent(name){const n=new tr.v.Histogram(name,percentage_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:true,std:true,sum:false,percentile:[]});return n;}\nfunction addScavengerSurvivedFromStackEvents(histograms,model){const baseName='v8-gc-scavenger-survived';tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isScavengerStackScanningEvent,event=>baseName,function(name,events){const sampledPercentage=createNumericForSampledPercent(baseName+'-percentage-from-stack');let survivedWithoutStack=0;let survivedWithStack=0;events.forEach(function(event){const bytesBefore=event.args.survived_bytes_before;const bytesAfter=event.args.survived_bytes_after;sampledPercentage.addSample((bytesAfter>0)?(bytesAfter-bytesBefore)/bytesAfter:0);survivedWithoutStack+=bytesBefore;survivedWithStack+=bytesAfter;});histograms.addHistogram(sampledPercentage);const totalBytesSurvivedWithoutStack=createNumericForTotalBytes(baseName+'-total-bytes-without-stack');totalBytesSurvivedWithoutStack.addSample(survivedWithoutStack);histograms.addHistogram(totalBytesSurvivedWithoutStack);const totalBytesSurvivedWithStack=createNumericForTotalBytes(baseName+'-total-bytes-with-stack');totalBytesSurvivedWithStack.addSample(survivedWithStack);histograms.addHistogram(totalBytesSurvivedWithStack);const overallPercentage=createPercentage(baseName+'-total-percentage-from-stack',survivedWithStack-survivedWithoutStack,survivedWithStack,percentage_smallerIsBetter);histograms.addHistogram(overallPercentage);},[baseName]);}\nfunction addDurationOfSubEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedSubGarbageCollectionEvent,tr.metrics.v8.utils.subGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForSubEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);});}\nfunction addPercentageInV8ExecuteOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,tr.metrics.v8.utils.topGarbageCollectionEventName,function(name,events){addPercentageInV8Execute(histograms,model,name,events);},tr.metrics.v8.utils.topGarbageCollectionEventNames());}\nfunction addTotalPercentageInV8Execute(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,event=>'v8-gc-total',function(name,events){addPercentageInV8Execute(histograms,model,name,events);},['v8-gc-total']);}\nfunction addPercentageInV8Execute(histograms,model,name,events){let cpuDurationInV8Execute=0;let cpuDurationTotal=0;events.forEach(function(event){const v8Execute=tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isV8ExecuteEvent);if(v8Execute){cpuDurationInV8Execute+=event.cpuDuration;}\ncpuDurationTotal+=event.cpuDuration;});const percentage=createPercentage(name+'_percentage_in_v8_execute',cpuDurationInV8Execute,cpuDurationTotal,percentage_smallerIsBetter);histograms.addHistogram(percentage);}\nfunction addMarkCompactorMutatorUtilization(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);tr.metrics.v8.utils.addMutatorUtilization('v8-gc-mark-compactor-mmu',tr.metrics.v8.utils.isNotForcedMarkCompactorEvent,[100],rendererHelpers,histograms);}\nreturn{gcMetric,WINDOW_SIZE_MS,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const COUNT_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1000000,50);const DURATION_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.1,10000,50);const SUMMARY_OPTIONS={std:false,count:false,sum:false,min:false,max:false,};function convertMicroToMilli_(time){return tr.b.convertUnit(time,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);}\nfunction addDurationHistogram(histogramName,time,histograms){const value=convertMicroToMilli_(time);histograms.createHistogram(`${histogramName}:duration`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,{value},{binBoundaries:DURATION_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS,});}\nfunction addCountHistogram(histogramName,value,histograms){histograms.createHistogram(`${histogramName}:count`,tr.b.Unit.byName.count_smallerIsBetter,{value},{binBoundaries:COUNT_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS});}\nfunction runtimeStatsTotalMetric(histograms,model){const v8Slices=tr.metrics.v8.utils.filterEvents(model,ev=>ev instanceof tr.e.v8.V8ThreadSlice);const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8Slices);let overallV8Time=runtimeGroupCollection.totalTime;let overallV8Count=runtimeGroupCollection.totalCount;let mainThreadTime=runtimeGroupCollection.totalTime;let mainThreadCount=runtimeGroupCollection.totalCount;let mainThreadV8Time=runtimeGroupCollection.totalTime;let mainThreadV8Count=runtimeGroupCollection.totalCount;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){addDurationHistogram(runtimeGroup.name,runtimeGroup.time,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Time-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}else if(runtimeGroup.name.includes('Background')){mainThreadTime-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}\naddCountHistogram(runtimeGroup.name,runtimeGroup.count,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Count-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}else if(runtimeGroup.name.includes('Background')){mainThreadCount-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}}\nif(runtimeGroupCollection.blinkRCSGroupCollection.totalTime>0){const blinkRCSGroupCollection=runtimeGroupCollection.blinkRCSGroupCollection;for(const group of blinkRCSGroupCollection.runtimeGroups){addDurationHistogram(group.name,group.time,histograms);addCountHistogram(group.name,group.count,histograms);}}\naddDurationHistogram('V8-Only',overallV8Time,histograms);addCountHistogram('V8-Only',overallV8Count,histograms);addDurationHistogram('Total-Main-Thread',mainThreadTime,histograms);addCountHistogram('Total-Main-Thread',mainThreadCount,histograms);addDurationHistogram('V8-Only-Main-Thread',mainThreadV8Time,histograms);addCountHistogram('V8-Only-Main-Thread',mainThreadV8Count,histograms);}\ntr.metrics.MetricRegistry.register(runtimeStatsTotalMetric);return{runtimeStatsTotalMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){function v8AndMemoryMetrics(histograms,model){tr.metrics.v8.executionMetric(histograms,model);tr.metrics.v8.gcMetric(histograms,model);tr.metrics.sh.memoryMetric(histograms,model,{rangeOfInterest:tr.metrics.v8.utils.rangeForMemoryDumps(model)});}\ntr.metrics.MetricRegistry.register(v8AndMemoryMetrics);return{v8AndMemoryMetrics,};});'use strict';tr.exportTo('tr.metrics.vr',function(){const VR_GL_THREAD_NAME='VrShellGL';function createHistograms(histograms,name,options,hasCpuTime){const createdHistograms={wall:histograms.createHistogram(name+'_wall',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options)};if(hasCpuTime){createdHistograms.cpu=histograms.createHistogram(name+'_cpu',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options);}\nreturn createdHistograms;}\nfunction frameCycleDurationMetric(histograms,model,opt_options){const histogramsByEventTitle=new Map();const expectationEvents=tr.importer.VR_EXPECTATION_EVENTS;for(const eventName in expectationEvents){const extraInfo=expectationEvents[eventName];histogramsByEventTitle.set(eventName,createHistograms(histograms,extraInfo.histogramName,{description:extraInfo.description},extraInfo.hasCpuTime));}\nhistogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateAnimationsAndOpacity',createHistograms(histograms,'update_animations_and_opacity',{description:'Duration to apply animation and opacity changes'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateBindings',createHistograms(histograms,'update_bindings',{description:'Duration to push binding values'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateLayout',createHistograms(histograms,'update_layout',{description:'Duration to compute element sizes, layout and textures'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateWorldSpaceTransform',createHistograms(histograms,'update_world_space_transforms',{description:'Duration to calculate element transforms in world space'},true));histogramsByEventTitle.set('UiRenderer::DrawUiView',createHistograms(histograms,'draw_ui',{description:'Duration to draw the UI'},true));histogramsByEventTitle.set('UiElementRenderer::DrawTexturedQuad',createHistograms(histograms,'draw_textured_quad',{description:'Duration to draw a textured element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientQuad',createHistograms(histograms,'draw_gradient_quad',{description:'Duration to draw a gradient element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientGridQuad',createHistograms(histograms,'draw_gradient_grid_quad',{description:'Duration to draw a gradient grid element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawController',createHistograms(histograms,'draw_controller',{description:'Duration to draw the controller'},true));histogramsByEventTitle.set('UiElementRenderer::DrawLaser',createHistograms(histograms,'draw_laser',{description:'Duration to draw the laser'},true));histogramsByEventTitle.set('UiElementRenderer::DrawReticle',createHistograms(histograms,'draw_reticle',{description:'Duration to draw the reticle'},true));histogramsByEventTitle.set('UiElementRenderer::DrawShadow',createHistograms(histograms,'draw_shadow',{description:'Duration to draw a shadow element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawStars',createHistograms(histograms,'draw_stars',{description:'Duration to draw the stars'},true));histogramsByEventTitle.set('UiElementRenderer::DrawBackground',createHistograms(histograms,'draw_background',{description:'Duration to draw the textured background'},true));histogramsByEventTitle.set('UiElementRenderer::DrawKeyboard',createHistograms(histograms,'draw_keyboard',{description:'Duration to draw the keyboard'},true));const drawUiSubSlicesMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let rangeOfInterest=model.bounds;const userExpectationsOfInterest=[tr.model.um.AnimationExpectation];if(opt_options&&opt_options.rangeOfInterest){rangeOfInterest=opt_options.rangeOfInterest;userExpectationsOfInterest.push(tr.model.um.ResponseExpectation);}\nfor(const ue of model.userModel.expectations){if(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR){continue;}\nif(!userExpectationsOfInterest.some(function(ueOfInterest){return ue instanceof ueOfInterest;})){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nfor(const helper of chromeHelper.browserHelpers){const glThreads=helper.process.findAllThreadsNamed(VR_GL_THREAD_NAME);for(const glThread of glThreads){for(const event of glThread.getDescendantEvents()){if(!(histogramsByEventTitle.has(event.title))){continue;}\nif(event.start<ue.start||event.end>ue.end){continue;}\nif(event.start<rangeOfInterest.min||event.end>rangeOfInterest.max){continue;}\nif(event.parentSlice&&event.parentSlice.title==='UiRenderer::DrawUiView'){const guid=event.parentSlice.guid;if(!drawUiSubSlicesMap.has(guid)){drawUiSubSlicesMap.set(guid,[]);}\ndrawUiSubSlicesMap.get(guid).push(event);continue;}\nconst{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(event.title);wallHist.addSample(event.duration);if(cpuHist!==undefined){cpuHist.addSample(event.cpuDuration);}}}}}\nfor(const subSlices of drawUiSubSlicesMap.values()){const eventMap=new Map();for(const event of subSlices){if(!eventMap.has(event.title)){eventMap.set(event.title,{wall:0,cpu:0});}\neventMap.get(event.title).wall+=event.duration;eventMap.get(event.title).cpu+=event.cpuDuration;}\nfor(const[title,values]of eventMap.entries()){const{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(title);wallHist.addSample(values.wall);if(cpuHist!==undefined){cpuHist.addSample(values.cpu);}}}}\ntr.metrics.MetricRegistry.register(frameCycleDurationMetric,{supportsRangeOfInterest:true,});return{frameCycleDurationMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webvrMetric(histograms,model,opt_options){const WEBVR_COUNTERS=new Map([['gpu.WebVR FPS',{name:'webvr_fps',unit:tr.b.Unit.byName.count_biggerIsBetter,samples:{},options:{description:'WebVR frame per second',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR frame time (ms)',{name:'webvr_frame_time',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR frame time in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR pose prediction (ms)',{name:'webvr_pose_prediction',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR pose prediction in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],]);for(const ue of model.userModel.expectations){const rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;if(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nif(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}\nfor(const counter of model.getAllCounters()){if(!(WEBVR_COUNTERS.has(counter.id)))continue;for(const series of counter.series){if(!(series.name in WEBVR_COUNTERS.get(counter.id).samples)){WEBVR_COUNTERS.get(counter.id).samples[series.name]=[];}\nfor(const sample of series.samples){if(sample.timestamp<ue.start||sample.timestamp>=ue.end){continue;}\nif(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}\nWEBVR_COUNTERS.get(counter.id).samples[series.name].push(sample.value);}}}}\nif(!('value'in WEBVR_COUNTERS.get('gpu.WebVR FPS').samples)){WEBVR_COUNTERS.get('gpu.WebVR FPS').samples.value=[0];}\nfor(const[key,value]of WEBVR_COUNTERS){for(const[seriesName,samples]of Object.entries(value.samples)){let histogramName=value.name;if(seriesName!=='value'){histogramName=`${histogramName}_${seriesName}`;}\nhistograms.createHistogram(histogramName,value.unit,samples,value.options);}}}\ntr.metrics.MetricRegistry.register(webvrMetric,{supportsRangeOfInterest:true,});return{webvrMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webxrMetric(histograms,model,opt_options){const DEFAULT_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(20,120,25);const counterHistogramsByTitle=new Map();counterHistogramsByTitle.set('gpu.WebXR FPS',histograms.createHistogram('webxr_fps',tr.b.Unit.byName.count_biggerIsBetter,[],{description:'WebXR frames per second',binBoundaries:DEFAULT_BIN_BOUNDARIES,}));const instantHistogramsByTitle=new Map();const expectationEvents=tr.importer.WEBXR_INSTANT_EVENTS;for(const[eventName,eventData]of Object.entries(expectationEvents)){const argsToHistograms={};for(const[argName,argData]of Object.entries(eventData)){argsToHistograms[argName]=histograms.createHistogram(argData.histogramName,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:argData.description,binBoundaries:DEFAULT_BIN_BOUNDARIES,});}\ninstantHistogramsByTitle.set(eventName,argsToHistograms);}\nconst rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;const rangeOfInterest=(rangeOfInterestEnabled?opt_options.rangeOfInterest:tr.b.math.Range.fromExplicitRange(-Infinity,Infinity));for(const ue of model.userModel.expectations){if(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}\nif(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}\nfor(const counter of model.getAllCounters()){if(!(counterHistogramsByTitle.has(counter.id)))continue;for(const series of counter.series){for(const sample of series.samples){if(sample.timestamp<ue.start||sample.timestamp>=ue.end){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}\ncounterHistogramsByTitle.get(counter.id).addSample(sample.value);}}}\nfor(const event of ue.associatedEvents.asSet()){if(!(instantHistogramsByTitle.has(event.title))){continue;}\nif(!rangeOfInterest.intersectsExplicitRangeInclusive(event.start,event.start)){continue;}\nconst eventHistograms=instantHistogramsByTitle.get(event.title);for(const[key,value]of Object.entries(event.args)){if(key in eventHistograms){eventHistograms[key].addSample(value,{event:new tr.v.d.RelatedEventSet(event)});}}}}\nif(counterHistogramsByTitle.get('gpu.WebXR FPS').numValues===0){counterHistogramsByTitle.get('gpu.WebXR FPS').addSample(0);}}\ntr.metrics.MetricRegistry.register(webxrMetric,{supportsRangeOfInterest:true,});return{webxrMetric,};});'use strict';tr.exportTo('tr.metrics.webrtc',function(){const DISPLAY_HERTZ=60.0;const VSYNC_DURATION_US=1e6/DISPLAY_HERTZ;const SEVERITY=3;const FROZEN_FRAME_VSYNC_COUNT_THRESHOLD=6;const WEB_MEDIA_PLAYER_UPDATE_TITLE='UpdateCurrentFrame';const IDEAL_RENDER_INSTANT_NAME='Ideal Render Instant';const ACTUAL_RENDER_BEGIN_NAME='Actual Render Begin';const ACTUAL_RENDER_END_NAME='Actual Render End';const STREAM_ID_NAME='Serial';const REQUIRED_EVENT_ARGS_NAMES=[IDEAL_RENDER_INSTANT_NAME,ACTUAL_RENDER_BEGIN_NAME,ACTUAL_RENDER_END_NAME,STREAM_ID_NAME];const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const percentage_biggerIsBetter=tr.b.Unit.byName.normalizedPercentage_biggerIsBetter;const percentage_smallerIsBetter=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_biggerIsBetter=tr.b.Unit.byName.unitlessNumber_biggerIsBetter;function isValidEvent(event){if(event.title!==WEB_MEDIA_PLAYER_UPDATE_TITLE||!event.args){return false;}\nfor(const parameter of REQUIRED_EVENT_ARGS_NAMES){if(!(parameter in event.args)){return false;}}\nreturn true;}\nfunction webrtcRenderingMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let webMediaPlayerMSEvents=[];for(const rendererPid in modelHelper.rendererHelpers){const rendererHelper=modelHelper.rendererHelpers[rendererPid];const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){webMediaPlayerMSEvents=webMediaPlayerMSEvents.concat(compositorThread.sliceGroup.slices.filter(isValidEvent));}}\nconst eventsByStreamName=tr.b.groupIntoMap(webMediaPlayerMSEvents,event=>event.args[STREAM_ID_NAME]);for(const[streamName,events]of eventsByStreamName){getTimeStats(histograms,streamName,events);}}\ntr.metrics.MetricRegistry.register(webrtcRenderingMetric);function getTimeStats(histograms,streamName,events){const frameHist=getFrameDistribution(histograms,events);addFpsFromFrameDistribution(histograms,frameHist);addFreezingScore(histograms,frameHist);const driftTimeStats=getDriftStats(events);histograms.createHistogram('WebRTCRendering_drift_time',timeDurationInMs_smallerIsBetter,driftTimeStats.driftTime,{summaryOptions:{count:false,min:false,percentile:[0.75,0.9],},});histograms.createHistogram('WebRTCRendering_rendering_length_error',percentage_smallerIsBetter,driftTimeStats.renderingLengthError,{summaryOptions:SUMMARY_OPTIONS,});const smoothnessStats=getSmoothnessStats(driftTimeStats.driftTime);histograms.createHistogram('WebRTCRendering_percent_badly_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentBadlyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_percent_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_smoothness_score',percentage_biggerIsBetter,smoothnessStats.smoothnessScore,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_out_of_sync',count_smallerIsBetter,smoothnessStats.framesOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_badly_out_of_sync',count_smallerIsBetter,smoothnessStats.framesSeverelyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});}\nconst FRAME_DISTRIBUTION_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(1,50,49);function getFrameDistribution(histograms,events){const cadence=tr.b.runLengthEncoding(events.map(e=>e.args[IDEAL_RENDER_INSTANT_NAME]));return histograms.createHistogram('WebRTCRendering_frame_distribution',count_smallerIsBetter,cadence.map(ticks=>ticks.count),{binBoundaries:FRAME_DISTRIBUTION_BIN_BOUNDARIES,summaryOptions:{percentile:[0.75,0.9],},});}\nfunction addFpsFromFrameDistribution(histograms,frameHist){let numberFrames=0;let numberVsyncs=0;for(let ticks=1;ticks<frameHist.allBins.length;++ticks){const count=frameHist.allBins[ticks].count;numberFrames+=count;numberVsyncs+=ticks*count;}\nconst meanRatio=numberVsyncs/numberFrames;histograms.createHistogram('WebRTCRendering_fps',unitlessNumber_biggerIsBetter,DISPLAY_HERTZ/meanRatio,{summaryOptions:SUMMARY_OPTIONS,});}\nfunction frozenPenaltyWeight(numberFrozenFrames){const penalty={5:1,6:5,7:15,8:25};return penalty[numberFrozenFrames]||(8*(numberFrozenFrames-4));}\nfunction addFreezingScore(histograms,frameHist){let numberVsyncs=0;let freezingScore=0;let frozenFramesCount=0;for(let ticks=1;ticks<frameHist.allBins.length;++ticks){const count=frameHist.allBins[ticks].count;numberVsyncs+=ticks*count;if(ticks>=FROZEN_FRAME_VSYNC_COUNT_THRESHOLD){frozenFramesCount+=count*(ticks-1);freezingScore+=count*frozenPenaltyWeight(ticks-1);}}\nfreezingScore=1-freezingScore/numberVsyncs;if(freezingScore<0){freezingScore=0;}\nhistograms.createHistogram('WebRTCRendering_frozen_frames_count',count_smallerIsBetter,frozenFramesCount,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_freezing_score',percentage_biggerIsBetter,freezingScore,{summaryOptions:SUMMARY_OPTIONS,});}\nfunction getDriftStats(events){const driftTime=[];const discrepancy=[];let oldIdealRender=0;let expectedIdealRender=0;for(const event of events){const currentIdealRender=event.args[IDEAL_RENDER_INSTANT_NAME];expectedIdealRender+=VSYNC_DURATION_US;if(currentIdealRender===oldIdealRender){continue;}\nconst actualRenderBegin=event.args[ACTUAL_RENDER_BEGIN_NAME];driftTime.push(actualRenderBegin-currentIdealRender);discrepancy.push(Math.abs(currentIdealRender-expectedIdealRender));expectedIdealRender=currentIdealRender;oldIdealRender=currentIdealRender;}\nconst discrepancySum=tr.b.math.Statistics.sum(discrepancy)-\ndiscrepancy[0];const lastIdealRender=events[events.length-1].args[IDEAL_RENDER_INSTANT_NAME];const firstIdealRender=events[0].args[IDEAL_RENDER_INSTANT_NAME];const idealRenderSpan=lastIdealRender-firstIdealRender;const renderingLengthError=discrepancySum/idealRenderSpan;return{driftTime,renderingLengthError};}\nfunction getSmoothnessStats(driftTimes){const meanDriftTime=tr.b.math.Statistics.mean(driftTimes);const normDriftTimes=driftTimes.map(driftTime=>Math.abs(driftTime-meanDriftTime));const framesSeverelyOutOfSync=normDriftTimes.filter(driftTime=>driftTime>2*VSYNC_DURATION_US).length;const framesOutOfSync=normDriftTimes.filter(driftTime=>driftTime>VSYNC_DURATION_US).length;const percentBadlyOutOfSync=framesSeverelyOutOfSync/driftTimes.length;const percentOutOfSync=framesOutOfSync/driftTimes.length;const framesOutOfSyncOnlyOnce=framesOutOfSync-framesSeverelyOutOfSync;let smoothnessScore=1-(framesOutOfSyncOnlyOnce+\nSEVERITY*framesSeverelyOutOfSync)/driftTimes.length;if(smoothnessScore<0){smoothnessScore=0;}\nreturn{framesOutOfSync,framesSeverelyOutOfSync,percentBadlyOutOfSync,percentOutOfSync,smoothnessScore};}\nreturn{webrtcRenderingMetric,};});'use strict';tr.exportTo('tr.model',function(){function YComponent(stableId,yPercentOffset){this.stableId=stableId;this.yPercentOffset=yPercentOffset;}\nYComponent.prototype={toDict(){return{stableId:this.stableId,yPercentOffset:this.yPercentOffset};}};function Location(xWorld,yComponents){this.xWorld_=xWorld;this.yComponents_=yComponents;}\nLocation.fromViewCoordinates=function(viewport,viewX,viewY){const dt=viewport.currentDisplayTransform;const xWorld=dt.xViewToWorld(viewX);const yComponents=[];let elem=document.elementFromPoint(viewX+viewport.modelTrackContainer.canvas.offsetLeft,viewY+viewport.modelTrackContainer.canvas.offsetTop);while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(viewY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}\nelem=elem.parentElement;}\nif(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.fromStableIdAndTimestamp=function(viewport,stableId,ts){const xWorld=ts;const yComponents=[];const containerToTrack=viewport.containerToTrackMap;let elem=containerToTrack.getTrackByStableId(stableId);if(!elem)return;const firstY=elem.getBoundingClientRect().top;while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(firstY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}\nelem=elem.parentElement;}\nif(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.prototype={get xWorld(){return this.xWorld_;},getContainingTrack(viewport){const containerToTrack=viewport.containerToTrackMap;for(const i in this.yComponents_){const yComponent=this.yComponents_[i];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined)return track;}},toViewCoordinates(viewport){const dt=viewport.currentDisplayTransform;const containerToTrack=viewport.containerToTrackMap;const viewX=dt.xWorldToView(this.xWorld_);let viewY=-1;for(const index in this.yComponents_){const yComponent=this.yComponents_[index];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined){const boundRect=track.getBoundingClientRect();viewY=yComponent.yPercentOffset*boundRect.height+boundRect.top;break;}}\nreturn{viewX,viewY};},toDict(){return{xWorld:this.xWorld_,yComponents:this.yComponents_};}};return{Location,};});'use strict';tr.exportTo('tr.ui.b',function(){const Location=tr.model.Location;function UIState(location,scaleX){this.location_=location;this.scaleX_=scaleX;}\nUIState.fromUserFriendlyString=function(model,viewport,stateString){const navByFinderPattern=/^(-?\\d+(\\.\\d+)?)@(.+)x(\\d+(\\.\\d+)?)$/g;const match=navByFinderPattern.exec(stateString);if(!match)return;const timestamp=parseFloat(match[1]);const stableId=match[3];const scaleX=parseFloat(match[4]);if(scaleX<=0){throw new Error('Invalid ScaleX value in UI State string.');}\nif(!viewport.containerToTrackMap.getTrackByStableId(stableId)){throw new Error('Invalid StableID given in UI State String.');}\nconst loc=tr.model.Location.fromStableIdAndTimestamp(viewport,stableId,timestamp);return new UIState(loc,scaleX);};UIState.prototype={get location(){return this.location_;},get scaleX(){return this.scaleX_;},toUserFriendlyString(viewport){const timestamp=this.location_.xWorld;const stableId=this.location_.getContainingTrack(viewport).eventContainer.stableId;const scaleX=this.scaleX_;return timestamp.toFixed(5)+'@'+stableId+'x'+scaleX.toFixed(5);},toDict(){return{location:this.location_.toDict(),scaleX:this.scaleX_};}};return{UIState,};});'use strict';tr.exportTo('tr.ui.b',function(){const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;function BrushingState(){this.guid_=tr.b.GUID.allocateSimple();this.selection_=new EventSet();this.findMatches_=new EventSet();this.analysisViewRelatedEvents_=new EventSet();this.analysisLinkHoveredEvents_=new EventSet();this.appliedToModel_=undefined;this.viewSpecificBrushingStates_={};}\nBrushingState.prototype={get guid(){return this.guid_;},clone(){const that=new BrushingState();that.selection_=this.selection_;that.findMatches_=this.findMatches_;that.analysisViewRelatedEvents_=this.analysisViewRelatedEvents_;that.analysisLinkHoveredEvents_=this.analysisLinkHoveredEvents_;that.viewSpecificBrushingStates_=this.viewSpecificBrushingStates_;return that;},equals(that){if(!this.selection_.equals(that.selection_)){return false;}\nif(!this.findMatches_.equals(that.findMatches_)){return false;}\nif(!this.analysisViewRelatedEvents_.equals(that.analysisViewRelatedEvents_)){return false;}\nif(!this.analysisLinkHoveredEvents_.equals(that.analysisLinkHoveredEvents_)){return false;}\nreturn true;},get selectionOfInterest(){if(this.selection_.length){return this.selection_;}\nif(this.highlight_.length){return this.highlight_;}\nif(this.analysisViewRelatedEvents_.length){return this.analysisViewRelatedEvents_;}\nif(this.analysisLinkHoveredEvents_.length){return this.analysisLinkHoveredEvents_;}\nreturn this.selection_;},get selection(){return this.selection_;},set selection(selection){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(selection===undefined){selection=new EventSet();}\nthis.selection_=selection;},get findMatches(){return this.findMatches_;},set findMatches(findMatches){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(findMatches===undefined){findMatches=new EventSet();}\nthis.findMatches_=findMatches;},get analysisViewRelatedEvents(){return this.analysisViewRelatedEvents_;},set analysisViewRelatedEvents(analysisViewRelatedEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(!(analysisViewRelatedEvents instanceof EventSet)){analysisViewRelatedEvents=new EventSet();}\nthis.analysisViewRelatedEvents_=analysisViewRelatedEvents;},get analysisLinkHoveredEvents(){return this.analysisLinkHoveredEvents_;},set analysisLinkHoveredEvents(analysisLinkHoveredEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}\nif(!(analysisLinkHoveredEvents instanceof EventSet)){analysisLinkHoveredEvents=new EventSet();}\nthis.analysisLinkHoveredEvents_=analysisLinkHoveredEvents;},get isAppliedToModel(){return this.appliedToModel_!==undefined;},get viewSpecificBrushingStates(){return this.viewSpecificBrushingStates_;},set viewSpecificBrushingStates(viewSpecificBrushingStates){this.viewSpecificBrushingStates_=viewSpecificBrushingStates;},get defaultState_(){const standoutEventExists=(this.analysisLinkHoveredEvents_.length>0||this.analysisViewRelatedEvents_.length>0||this.findMatches_.length>0);return(standoutEventExists?SelectionState.DIMMED0:SelectionState.NONE);},get brightenedEvents_(){const brightenedEvents=new EventSet();brightenedEvents.addEventSet(this.findMatches);brightenedEvents.addEventSet(this.analysisViewRelatedEvents_);brightenedEvents.addEventSet(this.selection_);brightenedEvents.addEventSet(this.analysisLinkHoveredEvents_);return brightenedEvents;},applyToEventSelectionStates(model){this.appliedToModel_=model;if(model){const newDefaultState=this.defaultState_;const currentDefaultState=tr.b.getFirstElement(model.getDescendantEvents()).selectionState;if(currentDefaultState!==newDefaultState){for(const e of model.getDescendantEvents()){e.selectionState=newDefaultState;}}}\nlet level;for(const e of this.brightenedEvents_){level=0;if(this.analysisViewRelatedEvents_.contains(e)||this.findMatches_.contains(e)){level++;}\nif(this.analysisLinkHoveredEvents_.contains(e)){level++;}\nif(this.selection_.contains(e)){level++;}\ne.selectionState=SelectionState.getFromBrighteningLevel(level);}},transferModelOwnershipToClone(that){if(!this.appliedToModel_){throw new Error('Not applied');}\nthat.appliedToModel_=this.appliedToModel_;this.appliedToModel_=undefined;},unapplyFromEventSelectionStates(){if(!this.appliedToModel_){throw new Error('Not applied');}\nconst model=this.appliedToModel_;this.appliedToModel_=undefined;const defaultState=this.defaultState_;for(const e of this.brightenedEvents_){e.selectionState=defaultState;}\nreturn defaultState;}};return{BrushingState,};});'use strict';tr.exportTo('tr.ui.b',function(){function Animation(){}\nAnimation.prototype={canTakeOverFor(existingAnimation){throw new Error('Not implemented');},takeOverFor(existingAnimation,newStartTimestamp,target){throw new Error('Not implemented');},start(timestamp,target){throw new Error('Not implemented');},didStopEarly(timestamp,target,willBeTakenOverByAnotherAnimation){},tick(timestamp,target){throw new Error('Not implemented');}};return{Animation,};});'use strict';tr.exportTo('tr.ui.b',function(){function AnimationController(){tr.b.EventTarget.call(this);this.target_=undefined;this.activeAnimation_=undefined;this.tickScheduled_=false;}\nAnimationController.prototype={__proto__:tr.b.EventTarget.prototype,get target(){return this.target_;},set target(target){if(this.activeAnimation_){throw new Error('Cannot change target while animation is running.');}\nif(target.cloneAnimationState===undefined||typeof target.cloneAnimationState!=='function'){throw new Error('target must have a cloneAnimationState function');}\nthis.target_=target;},get activeAnimation(){return this.activeAnimation_;},get hasActiveAnimation(){return!!this.activeAnimation_;},queueAnimation(animation,opt_now){if(this.target_===undefined){throw new Error('Cannot queue animations without a target');}\nlet now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}\nif(this.activeAnimation_){const done=this.activeAnimation_.tick(now,this.target_);if(done){this.activeAnimation_=undefined;}}\nif(this.activeAnimation_){if(animation.canTakeOverFor(this.activeAnimation_)){this.activeAnimation_.didStopEarly(now,this.target_,true);animation.takeOverFor(this.activeAnimation_,now,this.target_);}else{this.activeAnimation_.didStopEarly(now,this.target_,false);}}\nthis.activeAnimation_=animation;this.activeAnimation_.start(now,this.target_);if(this.tickScheduled_)return;this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);},cancelActiveAnimation(opt_now){if(!this.activeAnimation_)return;let now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}\nthis.activeAnimation_.didStopEarly(now,this.target_,false);this.activeAnimation_=undefined;},tickActiveAnimation_(frameBeginTime){this.tickScheduled_=false;if(!this.activeAnimation_)return;if(this.target_===undefined){this.activeAnimation_.didStopEarly(frameBeginTime,this.target_,false);return;}\nconst oldTargetState=this.target_.cloneAnimationState();const done=this.activeAnimation_.tick(frameBeginTime,this.target_);if(done){this.activeAnimation_=undefined;}\nif(this.activeAnimation_){this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);}\nif(oldTargetState){const e=new tr.b.Event('didtick');e.oldTargetState=oldTargetState;this.dispatchEvent(e,false,false);}}};return{AnimationController,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCacheDict=new Map();const elidedTitleCache=new ElidedTitleCache();function ElidedTitleCache(){this.textWidthMap=new Map();}\nElidedTitleCache.prototype={get(ctx,pixWidth,title,width,sliceDuration){let elidedDict=elidedTitleCacheDict.get(title);if(!elidedDict){elidedDict=new Map();elidedTitleCacheDict.set(title,elidedDict);}\nlet elidedDictForPixWidth=elidedDict.get(pixWidth);if(!elidedDictForPixWidth){elidedDict.set(pixWidth,new Map());elidedDictForPixWidth=elidedDict.get(pixWidth);}\nlet stringWidthPair=elidedDictForPixWidth.get(sliceDuration);if(stringWidthPair===undefined){let newtitle=title;let elided=false;while(this.labelWidthWorld(ctx,newtitle,pixWidth)>sliceDuration){if(newtitle.length*0.75<1)break;newtitle=newtitle.substring(0,newtitle.length*0.75);elided=true;}\nif(elided&&newtitle.length>3){newtitle=newtitle.substring(0,newtitle.length-3)+'...';}\nstringWidthPair=new ElidedStringWidthPair(newtitle,this.labelWidth(ctx,newtitle));elidedDictForPixWidth.set(sliceDuration,stringWidthPair);}\nreturn stringWidthPair;},quickMeasureText_(ctx,text){let w=this.textWidthMap.get(text);if(!w){w=ctx.measureText(text).width;this.textWidthMap.set(text,w);}\nreturn w;},labelWidth(ctx,title){return this.quickMeasureText_(ctx,title)+2;},labelWidthWorld(ctx,title,pixWidth){return this.labelWidth(ctx,title)*pixWidth;}};function ElidedStringWidthPair(string,width){this.string=string;this.width=width;}\nreturn{ElidedTitleCache,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColorScheme=tr.b.ColorScheme;const colors=ColorScheme.colors;const colorsAsStrings=ColorScheme.colorsAsStrings;const SelectionState=tr.model.SelectionState;const EventPresenter={getSelectableItemColorAsString(item){const offset=this.getColorIdOffset_(item);const colorId=ColorScheme.getVariantColorId(item.colorId,offset);return colorsAsStrings[colorId];},getColorIdOffset_(event){return event.selectionState;},getTextColor(event){if(event.selectionState===SelectionState.DIMMED){return'rgb(60,60,60)';}\nreturn'rgb(0,0,0)';},getSliceColorId(slice){const offset=this.getColorIdOffset_(slice);return ColorScheme.getVariantColorId(slice.colorId,offset);},getSliceAlpha(slice,async){let alpha=1;if(async){alpha*=0.3;}\nreturn alpha;},getInstantSliceColor(instant){const offset=this.getColorIdOffset_(instant);const colorId=ColorScheme.getVariantColorId(instant.colorId,offset);return colors[colorId].toStringWithAlphaOverride(1.0);},getObjectInstanceColor(instance){const offset=this.getColorIdOffset_(instance);const colorId=ColorScheme.getVariantColorId(instance.colorId,offset);return colors[colorId].toStringWithAlphaOverride(0.25);},getObjectSnapshotColor(snapshot){const offset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getVariantColorId(colorId,offset);return colors[colorId];},getCounterSeriesColor(colorId,selectionState,opt_alphaMultiplier){const event={selectionState};const offset=this.getColorIdOffset_(event);const c=colors[ColorScheme.getVariantColorId(colorId,offset)];return c.toStringWithAlphaOverride(opt_alphaMultiplier!==undefined?opt_alphaMultiplier:1.0);},getBarSnapshotColor(snapshot,offset){const snapshotOffset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getAnotherColorId(colorId,offset);colorId=ColorScheme.getVariantColorId(colorId,snapshotOffset);return colors[colorId].toStringWithAlphaOverride(1.0);}};return{EventPresenter,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCache=new tr.ui.b.ElidedTitleCache();const ColorScheme=tr.b.ColorScheme;const colorsAsStrings=ColorScheme.colorsAsStrings;const EventPresenter=tr.ui.b.EventPresenter;const blackColorId=ColorScheme.getColorIdForReservedName('black');const THIN_SLICE_HEIGHT=4;const SLICE_WAITING_WIDTH_DRAW_THRESHOLD=3;const SLICE_ACTIVE_WIDTH_DRAW_THRESHOLD=1;const SHOULD_ELIDE_TEXT=true;function drawLine(ctx,x1,y1,x2,y2){ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);}\nfunction drawTriangle(ctx,x1,y1,x2,y2,x3,y3){ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.closePath();}\nfunction drawArrow(ctx,x1,y1,x2,y2,arrowLength,arrowWidth){const dx=x2-x1;const dy=y2-y1;const len=Math.sqrt(dx*dx+dy*dy);const perc=(len-arrowLength)/len;const bx=x1+perc*dx;const by=y1+perc*dy;const ux=dx/len;const uy=dy/len;const ax=uy*arrowWidth;const ay=-ux*arrowWidth;ctx.beginPath();drawLine(ctx,x1,y1,x2,y2);ctx.stroke();drawTriangle(ctx,bx+ax,by+ay,x2,y2,bx-ax,by-ay);ctx.fill();}\nfunction drawSlices(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,async){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;const viewL=dt.xWorldToView(viewLWorld);const viewR=dt.xWorldToView(viewRWorld);let darkRectHeight=THIN_SLICE_HEIGHT*pixelRatio;if(height<darkRectHeight){darkRectHeight=0;}\nconst lightRectHeight=height-darkRectHeight;ctx.save();const rect=new tr.ui.b.FastRectRenderer(ctx,viewL,viewR,2,2,colorsAsStrings);rect.setYandH(0,height);const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start+slice.duration;},viewLWorld);let hadTopLevel=false;for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}\nconst colorId=EventPresenter.getSliceColorId(slice);const alpha=EventPresenter.getSliceAlpha(slice,async);const lightAlpha=alpha*0.70;if(async&&slice.isTopLevel){rect.setYandH(3,height-3);hadTopLevel=true;}else{rect.setYandH(0,height);}\nif(!slice.cpuDuration){rect.fillRect(xView,wView,colorId,alpha);continue;}\nlet activeWidth=wView*(slice.cpuDuration/slice.duration);let waitingWidth=wView-activeWidth;if(activeWidth<SLICE_ACTIVE_WIDTH_DRAW_THRESHOLD){activeWidth=0;waitingWidth=wView;}\nif(waitingWidth<SLICE_WAITING_WIDTH_DRAW_THRESHOLD){activeWidth=wView;waitingWidth=0;}\nif(activeWidth>0){rect.fillRect(xView,activeWidth,colorId,alpha);}\nif(waitingWidth>0){rect.setYandH(0,lightRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,lightAlpha);rect.setYandH(lightRectHeight,darkRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,alpha);rect.setYandH(0,height);}}\nrect.flush();if(async&&hadTopLevel){rect.setYandH(2,1);for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;if(!slice.isTopLevel)continue;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}\nrect.fillRect(xView,wView,blackColorId,0.7);}\nrect.flush();}\nctx.restore();}\nfunction drawInstantSlicesAsLines(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,lineWidthInPixels){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;ctx.save();ctx.lineWidth=lineWidthInPixels*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start;},viewLWorld);for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];const x=slice.start;if(x>viewRWorld)break;ctx.strokeStyle=EventPresenter.getInstantSliceColor(slice);const xView=dt.xWorldToView(x);ctx.beginPath();ctx.moveTo(xView,0);ctx.lineTo(xView,height);ctx.stroke();}\nctx.restore();}\nfunction drawLabels(ctx,dt,viewLWorld,viewRWorld,slices,async,fontSize,yOffset){const pixelRatio=window.devicePixelRatio||1;const pixWidth=dt.xViewVectorToWorld(1);ctx.save();ctx.textAlign='center';ctx.textBaseline='top';ctx.font=(fontSize*pixelRatio)+'px sans-serif';if(async){ctx.font='italic '+ctx.font;}\nconst cY=yOffset*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start+slice.duration;},viewLWorld);const quickDiscardThreshold=pixWidth*20;for(let i=lowSlice;i<slices.length;++i){const slice=slices[i];if(slice.start>viewRWorld)break;if(slice.duration<=quickDiscardThreshold)continue;const xLeftClipped=Math.max(slice.start,viewLWorld);const xRightClipped=Math.min(slice.start+slice.duration,viewRWorld);const visibleWidth=xRightClipped-xLeftClipped;const title=slice.title+\n(slice.didNotFinish?' (Did Not Finish)':'');let drawnTitle=title;let drawnWidth=elidedTitleCache.labelWidth(ctx,drawnTitle);const fullLabelWidth=elidedTitleCache.labelWidthWorld(ctx,drawnTitle,pixWidth);if(SHOULD_ELIDE_TEXT&&fullLabelWidth>visibleWidth){const elidedValues=elidedTitleCache.get(ctx,pixWidth,drawnTitle,drawnWidth,visibleWidth);drawnTitle=elidedValues.string;drawnWidth=elidedValues.width;}\nif(drawnWidth*pixWidth<visibleWidth){ctx.fillStyle=EventPresenter.getTextColor(slice);const cX=dt.xWorldToView((xLeftClipped+xRightClipped)/2);ctx.fillText(drawnTitle,cX,cY,drawnWidth);}}\nctx.restore();}\nreturn{drawSlices,drawInstantSlicesAsLines,drawLabels,drawLine,drawTriangle,drawArrow,elidedTitleCache_:elidedTitleCache,THIN_SLICE_HEIGHT,};});'use strict';tr.exportTo('tr.ui',function(){function TimelineDisplayTransform(opt_that){if(opt_that){this.set(opt_that);return;}\nthis.scaleX=1;this.panX=0;this.panY=0;}\nTimelineDisplayTransform.prototype={set(that){this.scaleX=that.scaleX;this.panX=that.panX;this.panY=that.panY;},clone(){return new TimelineDisplayTransform(this);},equals(that){let eq=true;if(that===undefined||that===null){return false;}\neq&=this.panX===that.panX;eq&=this.panY===that.panY;eq&=this.scaleX===that.scaleX;return!!eq;},almostEquals(that){let eq=true;if(that===undefined||that===null){return false;}\neq&=Math.abs(this.panX-that.panX)<0.001;eq&=Math.abs(this.panY-that.panY)<0.001;eq&=Math.abs(this.scaleX-that.scaleX)<0.001;return!!eq;},incrementPanXInViewUnits(xDeltaView){this.panX+=this.xViewVectorToWorld(xDeltaView);},xPanWorldPosToViewPos(worldX,viewX,viewWidth){if(typeof viewX==='string'){if(viewX==='left'){viewX=0;}else if(viewX==='center'){viewX=viewWidth/2;}else if(viewX==='right'){viewX=viewWidth-1;}else{throw new Error('viewX must be left|center|right or number.');}}\nthis.panX=(viewX/this.scaleX)-worldX;},xPanWorldBoundsIntoView(worldMin,worldMax,viewWidth){if(this.xWorldToView(worldMin)<0){this.xPanWorldPosToViewPos(worldMin,'left',viewWidth);}else if(this.xWorldToView(worldMax)>viewWidth){this.xPanWorldPosToViewPos(worldMax,'right',viewWidth);}},xSetWorldBounds(worldMin,worldMax,viewWidth){const worldWidth=worldMax-worldMin;const scaleX=viewWidth/worldWidth;const panX=-worldMin;this.setPanAndScale(panX,scaleX);},setPanAndScale(p,s){this.scaleX=s;this.panX=p;},xWorldToView(x){return(x+this.panX)*this.scaleX;},xWorldVectorToView(x){return x*this.scaleX;},xViewToWorld(x){return(x/this.scaleX)-this.panX;},xViewVectorToWorld(x){return x/this.scaleX;}};return{TimelineDisplayTransform,};});'use strict';tr.exportTo('tr.ui',function(){function SnapIndicator(y,height){this.y=y;this.height=height;}\nfunction TimelineInterestRange(vp){this.viewport_=vp;this.range_=new tr.b.math.Range();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;}\nTimelineInterestRange.prototype={get isEmpty(){return this.range_.isEmpty;},reset(){this.range_.reset();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;this.viewport_.dispatchChangeEvent();},get min(){return this.range_.min;},set min(min){this.range_.min=min;this.viewport_.dispatchChangeEvent();},get max(){return this.range_.max;},set max(max){this.range_.max=max;this.viewport_.dispatchChangeEvent();},set(range){this.range_.reset();this.range_.addRange(range);this.viewport_.dispatchChangeEvent();},setMinAndMax(min,max){this.range_.min=min;this.range_.max=max;this.viewport_.dispatchChangeEvent();},get range(){return this.range_.range;},asRangeObject(){const range=new tr.b.math.Range();range.addRange(this.range_);return range;},get leftSelected(){return this.leftSelected_;},set leftSelected(leftSelected){if(this.leftSelected_===leftSelected)return;this.leftSelected_=leftSelected;this.viewport_.dispatchChangeEvent();},get rightSelected(){return this.rightSelected_;},set rightSelected(rightSelected){if(this.rightSelected_===rightSelected)return;this.rightSelected_=rightSelected;this.viewport_.dispatchChangeEvent();},get leftSnapIndicator(){return this.leftSnapIndicator_;},set leftSnapIndicator(leftSnapIndicator){this.leftSnapIndicator_=leftSnapIndicator;this.viewport_.dispatchChangeEvent();},get rightSnapIndicator(){return this.rightSnapIndicator_;},set rightSnapIndicator(rightSnapIndicator){this.rightSnapIndicator_=rightSnapIndicator;this.viewport_.dispatchChangeEvent();},draw(ctx,viewLWorld,viewRWorld,viewHeight){if(this.range_.isEmpty)return;const dt=this.viewport_.currentDisplayTransform;const markerLWorld=this.min;const markerRWorld=this.max;const markerLView=Math.round(dt.xWorldToView(markerLWorld));const markerRView=Math.round(dt.xWorldToView(markerRWorld));ctx.fillStyle='rgba(0, 0, 0, 0.2)';if(markerLWorld>viewLWorld){ctx.fillRect(dt.xWorldToView(viewLWorld),0,markerLView,viewHeight);}\nif(markerRWorld<viewRWorld){ctx.fillRect(markerRView,0,dt.xWorldToView(viewRWorld),viewHeight);}\nconst pixelRatio=window.devicePixelRatio||1;ctx.lineWidth=Math.round(pixelRatio);if(this.range_.range>0){this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_);this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.max,this.rightSelected_);}else{this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_||this.rightSelected_);}\nctx.lineWidth=1;},drawLine_(ctx,viewLWorld,viewRWorld,height,ts,selected){if(ts<viewLWorld||ts>=viewRWorld)return;const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(ts));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();tr.ui.b.drawLine(ctx,viewX,0,viewX,height);if(selected){ctx.strokeStyle='rgb(255, 0, 0)';}else{ctx.strokeStyle='rgb(0, 0, 0)';}\nctx.stroke();ctx.restore();},drawIndicators(ctx,viewLWorld,viewRWorld){if(this.leftSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.min,this.leftSnapIndicator_,this.leftSelected_);}\nif(this.rightSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.max,this.rightSnapIndicator_,this.rightSelected_);}},drawIndicator_(ctx,viewLWorld,viewRWorld,xWorld,si,selected){const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(xWorld));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);const pixelRatio=window.devicePixelRatio||1;const viewY=si.y*devicePixelRatio;const viewHeight=si.height*devicePixelRatio;const arrowSize=4*pixelRatio;if(selected){ctx.fillStyle='rgb(255, 0, 0)';}else{ctx.fillStyle='rgb(0, 0, 0)';}\ntr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY,viewX+arrowSize*0.75,viewY,viewX,viewY+arrowSize);ctx.fill();tr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY+viewHeight,viewX+arrowSize*0.75,viewY+viewHeight,viewX,viewY+viewHeight-arrowSize);ctx.fill();ctx.restore();}};return{SnapIndicator,TimelineInterestRange,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ContainerToTrackMap(){this.stableIdToTrackMap_={};}\nContainerToTrackMap.prototype={addContainer(container,track){if(!track){throw new Error('Must provide a track.');}\nthis.stableIdToTrackMap_[container.stableId]=track;},clear(){this.stableIdToTrackMap_={};},getTrackByStableId(stableId){return this.stableIdToTrackMap_[stableId];}};return{ContainerToTrackMap,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function EventToTrackMap(){}\nEventToTrackMap.prototype={addEvent(event,track){if(!track){throw new Error('Must provide a track.');}\nthis[event.guid]=track;}};return{EventToTrackMap,};});'use strict';tr.exportTo('tr.ui',function(){const TimelineDisplayTransform=tr.ui.TimelineDisplayTransform;const TimelineInterestRange=tr.ui.TimelineInterestRange;const IDEAL_MAJOR_MARK_DISTANCE_PX=150;const MAJOR_MARK_ROUNDING_FACTOR=100000;class AnimationControllerProxy{constructor(target){this.target_=target;}\nget panX(){return this.target_.currentDisplayTransform_.panX;}\nset panX(panX){this.target_.currentDisplayTransform_.panX=panX;}\nget panY(){return this.target_.currentDisplayTransform_.panY;}\nset panY(panY){this.target_.currentDisplayTransform_.panY=panY;}\nget scaleX(){return this.target_.currentDisplayTransform_.scaleX;}\nset scaleX(scaleX){this.target_.currentDisplayTransform_.scaleX=scaleX;}\ncloneAnimationState(){return this.target_.currentDisplayTransform_.clone();}\nxPanWorldPosToViewPos(xWorld,xView){this.target_.currentDisplayTransform_.xPanWorldPosToViewPos(xWorld,xView,this.target_.modelTrackContainer_.canvas.clientWidth);}}\nfunction TimelineViewport(parentEl){this.parentEl_=parentEl;this.modelTrackContainer_=undefined;this.currentDisplayTransform_=new TimelineDisplayTransform();this.initAnimationController_();this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highDetails_=false;this.gridTimebase_=0;this.gridStep_=1000/60;this.gridEnabled_=false;this.hasCalledSetupFunction_=false;this.onResize_=this.onResize_.bind(this);this.onModelTrackControllerScroll_=this.onModelTrackControllerScroll_.bind(this);this.timeMode_=TimelineViewport.TimeMode.TIME_IN_MS;this.majorMarkWorldPositions_=[];this.majorMarkUnit_=undefined;this.interestRange_=new TimelineInterestRange(this);this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.containerToTrackMap=new tr.ui.tracks.ContainerToTrackMap();this.dispatchChangeEvent=this.dispatchChangeEvent.bind(this);}\nTimelineViewport.TimeMode={TIME_IN_MS:0,REVISIONS:1};TimelineViewport.prototype={__proto__:tr.b.EventTarget.prototype,get isAttachedToDocumentOrInTestMode(){if(this.parentEl_===undefined)return;return tr.ui.b.isElementAttachedToDocument(this.parentEl_);},onResize_(){this.dispatchChangeEvent();},dispatchChangeEvent(){tr.b.dispatchSimpleEvent(this,'change');},detach(){window.removeEventListener('resize',this.dispatchChangeEvent);},initAnimationController_(){this.dtAnimationController_=new tr.ui.b.AnimationController();this.dtAnimationController_.addEventListener('didtick',function(e){this.onCurentDisplayTransformChange_(e.oldTargetState);}.bind(this));this.dtAnimationController_.target=new AnimationControllerProxy(this);},get currentDisplayTransform(){return this.currentDisplayTransform_;},setDisplayTransformImmediately(displayTransform){this.dtAnimationController_.cancelActiveAnimation();const oldDisplayTransform=this.dtAnimationController_.target.cloneAnimationState();this.currentDisplayTransform_.set(displayTransform);this.onCurentDisplayTransformChange_(oldDisplayTransform);},queueDisplayTransformAnimation(animation){if(!(animation instanceof tr.ui.b.Animation)){throw new Error('animation must be instanceof tr.ui.b.Animation');}\nthis.dtAnimationController_.queueAnimation(animation);},onCurentDisplayTransformChange_(oldDisplayTransform){if(this.modelTrackContainer_){this.currentDisplayTransform.panY=tr.b.math.clamp(this.currentDisplayTransform.panY,0,this.modelTrackContainer_.scrollHeight-\nthis.modelTrackContainer_.clientHeight);}\nconst changed=!this.currentDisplayTransform.equals(oldDisplayTransform);const yChanged=this.currentDisplayTransform.panY!==oldDisplayTransform.panY;if(yChanged){this.modelTrackContainer_.scrollTop=this.currentDisplayTransform.panY;}\nif(changed){this.dispatchChangeEvent();}},onModelTrackControllerScroll_(e){if(this.dtAnimationController_.activeAnimation&&this.dtAnimationController_.activeAnimation.affectsPanY){this.dtAnimationController_.cancelActiveAnimation();}\nconst panY=this.modelTrackContainer_.scrollTop;this.currentDisplayTransform_.panY=panY;},get modelTrackContainer(){return this.modelTrackContainer_;},set modelTrackContainer(m){if(this.modelTrackContainer_){this.modelTrackContainer_.removeEventListener('scroll',this.onModelTrackControllerScroll_);}\nthis.modelTrackContainer_=m;this.modelTrackContainer_.addEventListener('scroll',this.onModelTrackControllerScroll_);},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;this.dispatchChangeEvent();},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;this.dispatchChangeEvent();},get highDetails(){return this.highDetails_;},set highDetails(highDetails){this.highDetails_=highDetails;this.dispatchChangeEvent();},get gridEnabled(){return this.gridEnabled_;},set gridEnabled(enabled){if(this.gridEnabled_===enabled)return;this.gridEnabled_=enabled&&true;this.dispatchChangeEvent();},get gridTimebase(){return this.gridTimebase_;},set gridTimebase(timebase){if(this.gridTimebase_===timebase)return;this.gridTimebase_=timebase;this.dispatchChangeEvent();},get gridStep(){return this.gridStep_;},get interestRange(){return this.interestRange_;},get majorMarkWorldPositions(){return this.majorMarkWorldPositions_;},get majorMarkUnit(){switch(this.timeMode_){case TimelineViewport.TimeMode.TIME_IN_MS:return tr.b.Unit.byName.timeInMsAutoFormat;case TimelineViewport.TimeMode.REVISIONS:return tr.b.Unit.byName.count;default:throw new Error('Cannot get Unit for unsupported time mode '+this.timeMode_);}},get timeMode(){return this.timeMode_;},set timeMode(mode){this.timeMode_=mode;this.dispatchChangeEvent();},updateMajorMarkData(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const dt=this.currentDisplayTransform;const idealMajorMarkDistancePix=IDEAL_MAJOR_MARK_DISTANCE_PX*pixelRatio;const idealMajorMarkDistanceWorld=dt.xViewVectorToWorld(idealMajorMarkDistancePix);const majorMarkDistanceWorld=tr.b.math.preferredNumberLargerThanMin(idealMajorMarkDistanceWorld);const firstMajorMark=Math.floor(viewLWorld/majorMarkDistanceWorld)*majorMarkDistanceWorld;this.majorMarkWorldPositions_=[];if(firstMajorMark/majorMarkDistanceWorld>1e15)return;for(let curX=firstMajorMark;curX<viewRWorld;curX+=majorMarkDistanceWorld){this.majorMarkWorldPositions_.push(Math.floor(MAJOR_MARK_ROUNDING_FACTOR*curX)/MAJOR_MARK_ROUNDING_FACTOR);}},drawMajorMarkLines(ctx,viewHeight){ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();for(const majorMark of this.majorMarkWorldPositions_){const x=this.currentDisplayTransform.xWorldToView(majorMark);tr.ui.b.drawLine(ctx,x,0,x,viewHeight);}\nctx.strokeStyle='#ddd';ctx.stroke();ctx.restore();},drawGridLines(ctx,viewLWorld,viewRWorld,viewHeight){if(!this.gridEnabled)return;const dt=this.currentDisplayTransform;let x=this.gridTimebase;ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();while(x<viewRWorld){if(x>=viewLWorld){const vx=Math.floor(dt.xWorldToView(x));tr.ui.b.drawLine(ctx,vx,0,vx,viewHeight);}\nx+=this.gridStep;}\nctx.strokeStyle='rgba(255, 0, 0, 0.25)';ctx.stroke();ctx.restore();},getShiftedSelection(selection,offset){const newSelection=new tr.model.EventSet();for(const event of selection){if(event instanceof tr.model.FlowEvent){if(offset>0){newSelection.push(event.endSlice);}else if(offset<0){newSelection.push(event.startSlice);}else{}\ncontinue;}\nconst track=this.trackForEvent(event);track.addEventNearToProvidedEventToSelection(event,offset,newSelection);}\nif(newSelection.length===0)return undefined;return newSelection;},rebuildEventToTrackMap(){this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.modelTrackContainer_.addEventsToTrackMap(this.eventToTrackMap_);},rebuildContainerToTrackMap(){this.containerToTrackMap.clear();this.modelTrackContainer_.addContainersToTrackMap(this.containerToTrackMap);},trackForEvent(event){return this.eventToTrackMap_[event.guid];}};return{TimelineViewport,};});'use strict';tr.exportTo('tr.c',function(){const BrushingState=tr.ui.b.BrushingState;const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;const Viewport=tr.ui.TimelineViewport;function BrushingStateController(timelineView){tr.b.EventTarget.call(this);this.timelineView_=timelineView;this.currentBrushingState_=new BrushingState();this.onPopState_=this.onPopState_.bind(this);this.historyEnabled_=false;this.selections_={};}\nBrushingStateController.prototype={__proto__:tr.b.EventTarget.prototype,dispatchChangeEvent_(){const e=new tr.b.Event('change',false,false);this.dispatchEvent(e);},get model(){if(!this.timelineView_){return undefined;}\nreturn this.timelineView_.model;},get trackView(){if(!this.timelineView_){return undefined;}\nreturn this.timelineView_.trackView;},get viewport(){if(!this.timelineView_){return undefined;}\nif(!this.timelineView_.trackView){return undefined;}\nreturn this.timelineView_.trackView.viewport;},get historyEnabled(){return this.historyEnabled_;},set historyEnabled(historyEnabled){this.historyEnabled_=!!historyEnabled;if(historyEnabled){window.addEventListener('popstate',this.onPopState_);}else{window.removeEventListener('popstate',this.onPopState_);}},modelWillChange(){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}},modelDidChange(){this.selections_={};this.currentBrushingState_=new BrushingState();this.currentBrushingState_.applyToEventSelectionStates(this.model);const e=new tr.b.Event('model-changed',false,false);this.dispatchEvent(e);this.dispatchChangeEvent_();},onUserInitiatedSelectionChange_(){const selection=this.selection;if(this.historyEnabled){this.selections_[selection.guid]=selection;const state={selection_guid:selection.guid};window.history.pushState(state,document.title);}},onPopState_(e){if(e.state===null)return;const selection=this.selections_[e.state.selection_guid];if(selection){const newState=this.currentBrushingState_.clone();newState.selection=selection;this.currentBrushingState=newState;}\ne.stopPropagation();},get selection(){return this.currentBrushingState_.selection;},get findMatches(){return this.currentBrushingState_.findMatches;},get selectionOfInterest(){return this.currentBrushingState_.selectionOfInterest;},get currentBrushingState(){return this.currentBrushingState_;},set currentBrushingState(newBrushingState){if(newBrushingState.isAppliedToModel){throw new Error('Cannot apply this state, it is applied');}\nconst hasValueChanged=!this.currentBrushingState_.equals(newBrushingState);if(newBrushingState!==this.currentBrushingState_&&!hasValueChanged){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.transferModelOwnershipToClone(newBrushingState);}\nthis.currentBrushingState_=newBrushingState;return;}\nif(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}\nthis.currentBrushingState_=newBrushingState;this.currentBrushingState_.applyToEventSelectionStates(this.model);this.dispatchChangeEvent_();},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const timelineView=this.timelineView_.trackView;if(!timelineView){return new tr.b.Task();}\nreturn timelineView.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);},findTextChangedTo(allPossibleMatches){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.findMatches=allPossibleMatches;this.currentBrushingState=newBrushingState;},findFocusChangedTo(currentFocus){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=currentFocus;this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},findTextCleared(){if(this.xNavStringMarker_!==undefined){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;}\nif(this.guideLineAnnotation_!==undefined){this.model.removeAnnotation(this.guideLineAnnotation_);this.guideLineAnnotation_=undefined;}\nconst newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=new EventSet();newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},uiStateFromString(string){return tr.ui.b.UIState.fromUserFriendlyString(this.model,this.viewport,string);},navToPosition(uiState,showNavLine){this.trackView.navToPosition(uiState,showNavLine);},changeSelectionFromTimeline(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},showScriptControlSelection(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;},changeSelectionFromRequestSelectionChangeEvent(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},changeAnalysisViewRelatedEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisViewRelatedEvents=eventSet;this.currentBrushingState=newBrushingState;},changeAnalysisLinkHoveredEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisLinkHoveredEvents=eventSet;this.currentBrushingState=newBrushingState;},getViewSpecificBrushingState(viewId){return this.currentBrushingState.viewSpecificBrushingStates[viewId];},changeViewSpecificBrushingState(viewId,newState){const oldStates=this.currentBrushingState_.viewSpecificBrushingStates;const newStates={};for(const id in oldStates){newStates[id]=oldStates[id];}\nif(newState===undefined){delete newStates[viewId];}else{newStates[viewId]=newState;}\nconst newBrushingState=this.currentBrushingState_.clone();newBrushingState.viewSpecificBrushingStates=newStates;this.currentBrushingState=newBrushingState;}};BrushingStateController.getControllerForElement=function(element){if(tr.isHeadless){throw new Error('Unsupported');}\nlet currentElement=element;while(currentElement){if(currentElement.brushingStateController){return currentElement.brushingStateController;}\nif(currentElement.parentElement){currentElement=currentElement.parentElement;continue;}\nlet currentNode=currentElement;while(Polymer.dom(currentNode).parentNode){currentNode=Polymer.dom(currentNode).parentNode;}\ncurrentElement=currentNode.host;}\nreturn undefined;};return{BrushingStateController,};});'use strict';Polymer({is:'tr-ui-a-analysis-link',properties:{href:{type:String}},listeners:{'click':'onClicked_','mouseenter':'onMouseEnter_','mouseleave':'onMouseLeave_'},ready(){this.selection_=undefined;},attached(){this.controller_=tr.c.BrushingStateController.getControllerForElement(this);},detached(){this.clearHighlight_();this.controller_=undefined;},set color(c){this.style.color=c;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;Polymer.dom(this).textContent=selection.userFriendlyName;},setSelectionAndContent(selection,opt_textContent){this.selection_=selection;if(opt_textContent){Polymer.dom(this).textContent=opt_textContent;}},getCurrentSelection_(){if(typeof this.selection_==='function'){return this.selection_();}\nreturn this.selection_;},setHighlight_(opt_eventSet){if(this.controller_){this.controller_.changeAnalysisLinkHoveredEvents(opt_eventSet);}},clearHighlight_(opt_eventSet){this.setHighlight_();},onClicked_(clickEvent){if(!this.selection_)return;clickEvent.stopPropagation();const event=new tr.model.RequestSelectionChangeEvent();event.selection=this.getCurrentSelection_();this.dispatchEvent(event);},onMouseEnter_(){this.setHighlight_(this.getCurrentSelection_());},onMouseLeave_(){this.clearHighlight_();}});'use strict';tr.exportTo('tr.ui.analysis',function(){const AnalysisSubView={set tabLabel(label){Polymer.dom(this).setAttribute('tab-label',label);},get tabLabel(){return this.getAttribute('tab-label');},get requiresTallView(){return false;},get relatedEventsToHighlight(){return undefined;},set selection(selection){throw new Error('Not implemented!');},get selection(){throw new Error('Not implemented!');}};const allTypeInfosByEventProto=new Map();let onlyRootTypeInfosByEventProto=undefined;let eventProtoToRootTypeInfoMap=undefined;function AnalysisSubViewTypeInfo(eventConstructor,options){if(options.multi===undefined){throw new Error('missing field: multi');}\nif(options.title===undefined){throw new Error('missing field: title');}\nthis.eventConstructor=eventConstructor;this.singleTagName=undefined;this.singleTitle=undefined;this.multiTagName=undefined;this.multiTitle=undefined;this.childrenTypeInfos_=undefined;}\nAnalysisSubViewTypeInfo.prototype={get childrenTypeInfos(){return this.childrenTypeInfos_;},resetchildrenTypeInfos(){this.childrenTypeInfos_=[];}};AnalysisSubView.register=function(tagName,eventConstructor,options){let typeInfo=allTypeInfosByEventProto.get(eventConstructor.prototype);if(typeInfo===undefined){typeInfo=new AnalysisSubViewTypeInfo(eventConstructor,options);allTypeInfosByEventProto.set(typeInfo.eventConstructor.prototype,typeInfo);onlyRootTypeInfosByEventProto=undefined;}\nif(!options.multi){if(typeInfo.singleTagName!==undefined){throw new Error('SingleTagName already set');}\ntypeInfo.singleTagName=tagName;typeInfo.singleTitle=options.title;}else{if(typeInfo.multiTagName!==undefined){throw new Error('MultiTagName already set');}\ntypeInfo.multiTagName=tagName;typeInfo.multiTitle=options.title;}\nreturn typeInfo;};function rebuildRootSubViewTypeInfos(){onlyRootTypeInfosByEventProto=new Map();allTypeInfosByEventProto.forEach(function(typeInfo){typeInfo.resetchildrenTypeInfos();});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let lastEventProto=eventPrototype;let curEventProto=eventPrototype.__proto__;while(true){if(!allTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=allTypeInfosByEventProto.get(lastEventProto);const rootEventProto=lastEventProto;const isNew=onlyRootTypeInfosByEventProto.has(rootEventProto);onlyRootTypeInfosByEventProto.set(rootEventProto,rootTypeInfo);break;}\nlastEventProto=curEventProto;curEventProto=curEventProto.__proto__;}});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;const parentEventProto=eventPrototype.__proto__;const parentTypeInfo=allTypeInfosByEventProto.get(parentEventProto);if(!parentTypeInfo)return;parentTypeInfo.childrenTypeInfos.push(typeInfo);});eventProtoToRootTypeInfoMap=new Map();allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let curEventProto=eventPrototype;while(true){if(onlyRootTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=onlyRootTypeInfosByEventProto.get(curEventProto);eventProtoToRootTypeInfoMap.set(eventPrototype,rootTypeInfo);break;}\ncurEventProto=curEventProto.__proto__;}});}\nfunction findLowestTypeInfoForEvents(thisTypeInfo,events){if(events.length===0)return thisTypeInfo;const event0=tr.b.getFirstElement(events);let candidateSubTypeInfo;for(let i=0;i<thisTypeInfo.childrenTypeInfos.length;i++){const childTypeInfo=thisTypeInfo.childrenTypeInfos[i];if(event0 instanceof childTypeInfo.eventConstructor){candidateSubTypeInfo=childTypeInfo;break;}}\nif(!candidateSubTypeInfo)return thisTypeInfo;let allMatch=true;for(const event of events){if(event instanceof candidateSubTypeInfo.eventConstructor)continue;allMatch=false;break;}\nif(!allMatch){return thisTypeInfo;}\nreturn findLowestTypeInfoForEvents(candidateSubTypeInfo,events);}\nconst primaryEventProtoToTypeInfoMap=new Map();function getRootTypeInfoForEvent(event){const curProto=event.__proto__;const typeInfo=primaryEventProtoToTypeInfoMap.get(curProto);if(typeInfo)return typeInfo;return getRootTypeInfoForEventSlow(event);}\nfunction getRootTypeInfoForEventSlow(event){let typeInfo;let curProto=event.__proto__;while(true){if(curProto===Object.prototype){throw new Error('No view registered for '+event.toString());}\ntypeInfo=onlyRootTypeInfosByEventProto.get(curProto);if(typeInfo){primaryEventProtoToTypeInfoMap.set(event.__proto__,typeInfo);return typeInfo;}\ncurProto=curProto.__proto__;}}\nAnalysisSubView.getEventsOrganizedByTypeInfo=function(selection){if(onlyRootTypeInfosByEventProto===undefined){rebuildRootSubViewTypeInfos();}\nconst eventsByRootTypeInfo=tr.b.groupIntoMap(selection,function(event){return getRootTypeInfoForEvent(event);},this,tr.model.EventSet);const eventsByLowestTypeInfo=new Map();eventsByRootTypeInfo.forEach(function(events,typeInfo){const lowestTypeInfo=findLowestTypeInfoForEvents(typeInfo,events);eventsByLowestTypeInfo.set(lowestTypeInfo,events);});return eventsByLowestTypeInfo;};return{AnalysisSubView,AnalysisSubViewTypeInfo,};});Polymer({is:'tr-ui-a-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView]});'use strict';tr.exportTo('tr.ui.b',function(){const TableFormat={};TableFormat.SelectionMode={NONE:0,ROW:1,CELL:2};TableFormat.HighlightStyle={DEFAULT:0,NONE:1,LIGHT:2,DARK:3};TableFormat.ColumnAlignment={LEFT:0,RIGHT:1};return{TableFormat,};});'use strict';(function(){const RIGHT_ARROW=String.fromCharCode(0x25b6);const UNSORTED_ARROW=String.fromCharCode(0x25BF);const ASCENDING_ARROW=String.fromCharCode(0x25B4);const DESCENDING_ARROW=String.fromCharCode(0x25BE);const SelectionMode=tr.ui.b.TableFormat.SelectionMode;const SelectionModeValues=new Set(Object.values(SelectionMode));const HighlightStyle=tr.ui.b.TableFormat.HighlightStyle;const HighlightStyleValues=new Set(Object.values(HighlightStyle));const ColumnAlignment=tr.ui.b.TableFormat.ColumnAlignment;const ColumnAlignmentValues=new Set(Object.values(ColumnAlignment));Polymer({is:'tr-ui-b-table',created(){this.selectionMode_=SelectionMode.NONE;this.rowHighlightStyle_=HighlightStyle.DEFAULT;this.cellHighlightStyle_=HighlightStyle.DEFAULT;this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;this.tableColumns_=[];this.tableRows_=[];this.tableRowsInfo_=new WeakMap();this.tableFooterRows_=[];this.tableFooterRowsInfo_=new WeakMap();this.sortColumnIndex_=undefined;this.sortDescending_=false;this.columnsWithExpandButtons_=[];this.headerCells_=[];this.showHeader_=true;this.emptyValue_=undefined;this.subRowsPropertyName_='subRows';this.customizeTableRowCallback_=undefined;this.defaultExpansionStateCallback_=undefined;this.userCanModifySortOrder_=true;this.computedFontSizePx_=undefined;},ready(){this.$.body.addEventListener('keydown',this.onKeyDown_.bind(this),true);this.$.body.addEventListener('focus',this.onFocus_.bind(this),true);},clear(){this.selectionMode_=SelectionMode.NONE;this.rowHighlightStyle_=HighlightStyle.DEFAULT;this.cellHighlightStyle_=HighlightStyle.DEFAULT;this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;Polymer.dom(this).textContent='';this.tableColumns_=[];this.tableRows_=[];this.tableRowsInfo_=new WeakMap();this.tableFooterRows_=[];this.tableFooterRowsInfo_=new WeakMap();this.sortColumnIndex_=undefined;this.sortDescending_=false;this.columnsWithExpandButtons_=[];this.headerCells_=[];this.showHeader_=true;this.emptyValue_=undefined;this.subRowsPropertyName_='subRows';this.defaultExpansionStateCallback_=undefined;this.userCanModifySortOrder_=true;},set zebra(zebra){if(zebra){this.setAttribute('zebra',true);}else{this.removeAttribute('zebra');}},get zebra(){return this.getAttribute('zebra');},get showHeader(){return this.showHeader_;},set showHeader(showHeader){this.showHeader_=showHeader;this.scheduleRebuildHeaders_();},set subRowsPropertyName(name){this.subRowsPropertyName_=name;},set defaultExpansionStateCallback(cb){this.defaultExpansionStateCallback_=cb;this.scheduleRebuildBody_();},set customizeTableRowCallback(cb){this.customizeTableRowCallback_=cb;this.scheduleRebuildBody_();},get emptyValue(){return this.emptyValue_;},set emptyValue(emptyValue){const previousEmptyValue=this.emptyValue_;this.emptyValue_=emptyValue;if(this.tableRows_.length===0&&emptyValue!==previousEmptyValue){this.scheduleRebuildBody_();}},set tableColumns(columns){let columnsWithExpandButtons=[];for(let i=0;i<columns.length;i++){if(columns[i].showExpandButtons){columnsWithExpandButtons.push(i);}}\nif(columnsWithExpandButtons.length===0){columnsWithExpandButtons=[0];}\nfor(let i=0;i<columns.length;i++){const colInfo=columns[i];if(colInfo.width===undefined)continue;const hasExpandButton=columnsWithExpandButtons.includes(i);const w=colInfo.width;if(w){if(/\\d+px/.test(w)){continue;}else if(/\\d+%/.test(w)){if(hasExpandButton){throw new Error('Columns cannot be %-sized and host '+' an expand button');}}else{throw new Error('Unrecognized width string');}}}\nlet sortIndex=undefined;const currentSortColumn=this.tableColumns[this.sortColumnIndex_];if(currentSortColumn){for(const[i,column]of columns.entries()){if(currentSortColumn.title===column.title){sortIndex=i;break;}}}\nthis.tableColumns_=columns;this.headerCells_=[];this.columnsWithExpandButtons_=columnsWithExpandButtons;this.scheduleRebuildHeaders_();this.sortColumnIndex=sortIndex;this.tableRows=this.tableRows_;},get tableColumns(){return this.tableColumns_;},set tableRows(rows){this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;this.tableRows_=rows;this.tableRowsInfo_=new WeakMap();this.scheduleRebuildBody_();},get tableRows(){return this.tableRows_;},set footerRows(rows){this.tableFooterRows_=rows;this.tableFooterRowsInfo_=new WeakMap();this.scheduleRebuildFooter_();},get footerRows(){return this.tableFooterRows_;},get userCanModifySortOrder(){return this.userCanModifySortOrder_;},set userCanModifySortOrder(userCanModifySortOrder){const newUserCanModifySortOrder=!!userCanModifySortOrder;if(newUserCanModifySortOrder===this.userCanModifySortOrder_){return;}\nthis.userCanModifySortOrder_=newUserCanModifySortOrder;this.scheduleRebuildHeaders_();},set sortColumnIndex(number){if(number===this.sortColumnIndex_)return;if(number!==undefined){if(this.tableColumns_.length<=number){throw new Error('Column number '+number+' is out of bounds.');}\nif(!this.tableColumns_[number].cmp){throw new Error('Column '+number+' does not have a comparator.');}}\nthis.sortColumnIndex_=number;this.updateHeaderArrows_();this.scheduleRebuildBody_();this.dispatchSortingChangedEvent_();},get sortColumnIndex(){return this.sortColumnIndex_;},set sortDescending(value){const newValue=!!value;if(newValue!==this.sortDescending_){this.sortDescending_=newValue;this.updateHeaderArrows_();this.scheduleRebuildBody_();this.dispatchSortingChangedEvent_();}},get sortDescending(){return this.sortDescending_;},updateHeaderArrows_(){for(let i=0;i<this.headerCells_.length;i++){const headerCell=this.headerCells_[i];const isColumnCurrentlySorted=i===this.sortColumnIndex_;if(!this.tableColumns_[i].cmp||(!this.userCanModifySortOrder_&&!isColumnCurrentlySorted)){headerCell.sideContent='';continue;}\nif(!isColumnCurrentlySorted){headerCell.sideContent=UNSORTED_ARROW;headerCell.sideContentDisabled=false;continue;}\nheaderCell.sideContent=this.sortDescending_?DESCENDING_ARROW:ASCENDING_ARROW;headerCell.sideContentDisabled=!this.userCanModifySortOrder_;}},generateHeaderColumns_(){const selectedTableColumnIndex=this.selectedTableColumnIndex;Polymer.dom(this.$.cols).textContent='';for(let i=0;i<this.tableColumns_.length;++i){const colElement=document.createElement('col');if(i===selectedTableColumnIndex){colElement.setAttribute('selected',true);}\nPolymer.dom(this.$.cols).appendChild(colElement);}\nthis.headerCells_=[];Polymer.dom(this.$.head).textContent='';if(!this.showHeader_)return;const tr=this.appendNewElement_(this.$.head,'tr');for(let i=0;i<this.tableColumns_.length;i++){const td=this.appendNewElement_(tr,'td');const headerCell=document.createElement('tr-ui-b-table-header-cell');headerCell.column=this.tableColumns_[i];if(this.tableColumns_[i].cmp){const isColumnCurrentlySorted=i===this.sortColumnIndex_;if(isColumnCurrentlySorted){headerCell.sideContent=this.sortDescending_?DESCENDING_ARROW:ASCENDING_ARROW;if(!this.userCanModifySortOrder_){headerCell.sideContentDisabled=true;}}\nif(this.userCanModifySortOrder_){Polymer.dom(td).classList.add('sensitive');if(!isColumnCurrentlySorted){headerCell.sideContent=UNSORTED_ARROW;}\nheaderCell.tapCallback=this.createSortCallback_(i);}}\nPolymer.dom(td).appendChild(headerCell);this.headerCells_.push(headerCell);}},applySizes_(){if(this.tableRows_.length===0&&!this.showHeader)return;let rowToRemoveSizing;let rowToSize;if(this.showHeader){rowToSize=Polymer.dom(this.$.head).children[0];rowToRemoveSizing=Polymer.dom(this.$.body).children[0];}else{rowToSize=Polymer.dom(this.$.body).children[0];rowToRemoveSizing=Polymer.dom(this.$.head).children[0];}\nfor(let i=0;i<this.tableColumns_.length;i++){if(rowToRemoveSizing&&Polymer.dom(rowToRemoveSizing).children[i]){const tdToRemoveSizing=Polymer.dom(rowToRemoveSizing).children[i];tdToRemoveSizing.style.minWidth='';tdToRemoveSizing.style.width='';}\nconst td=Polymer.dom(rowToSize).children[i];let delta;if(this.columnsWithExpandButtons_.includes(i)){td.style.paddingLeft=this.basicIndentation_+'px';delta=this.basicIndentation_+'px';}else{delta=undefined;}\nfunction calc(base,delta){if(delta){return'calc('+base+' - '+delta+')';}\nreturn base;}\nconst w=this.tableColumns_[i].width;if(w){if(/\\d+px/.test(w)){td.style.minWidth=calc(w,delta);}else if(/\\d+%/.test(w)){td.style.width=w;}else{throw new Error('Unrecognized width string: '+w);}}}},createSortCallback_(columnNumber){return function(){if(!this.userCanModifySortOrder_)return;const previousIndex=this.sortColumnIndex;this.sortColumnIndex=columnNumber;if(previousIndex!==columnNumber){this.sortDescending=false;}else{this.sortDescending=!this.sortDescending;}}.bind(this);},generateTableRowNodes_(tableSection,userRows,rowInfoMap,indentation,lastAddedRow,parentRowInfo){if(this.sortColumnIndex_!==undefined&&tableSection===this.$.body){userRows=userRows.slice();userRows.sort(function(rowA,rowB){let c=this.tableColumns_[this.sortColumnIndex_].cmp(rowA,rowB);if(this.sortDescending_){c=-c;}\nreturn c;}.bind(this));}\nfor(let i=0;i<userRows.length;i++){const userRow=userRows[i];const rowInfo=this.getOrCreateRowInfoFor_(rowInfoMap,userRow,parentRowInfo);const htmlNode=this.getHTMLNodeForRowInfo_(tableSection,rowInfo,rowInfoMap,indentation);if(lastAddedRow===undefined){Polymer.dom(tableSection).insertBefore(htmlNode,Polymer.dom(tableSection).firstChild);}else{const nextSiblingOfLastAdded=Polymer.dom(lastAddedRow).nextSibling;Polymer.dom(tableSection).insertBefore(htmlNode,nextSiblingOfLastAdded);}\nlastAddedRow=htmlNode;if(!rowInfo.isExpanded)continue;lastAddedRow=this.generateTableRowNodes_(tableSection,userRow[this.subRowsPropertyName_],rowInfoMap,indentation+1,lastAddedRow,rowInfo);}\nreturn lastAddedRow;},getOrCreateRowInfoFor_(rowInfoMap,userRow,parentRowInfo){let rowInfo=undefined;if(rowInfoMap.has(userRow)){rowInfo=rowInfoMap.get(userRow);}else{rowInfo={userRow,htmlNode:undefined,parentRowInfo};rowInfoMap.set(userRow,rowInfo);}\nrowInfo.isExpanded=this.getExpandedForUserRow_(userRow);return rowInfo;},customizeTableRow_(userRow,trElement){if(!this.customizeTableRowCallback_)return;this.customizeTableRowCallback_(userRow,trElement);},get basicIndentation_(){if(this.computedFontSizePx_===undefined){this.computedFontSizePx_=parseInt(getComputedStyle(this).fontSize)||16;}\nreturn this.computedFontSizePx_-2;},getHTMLNodeForRowInfo_(tableSection,rowInfo,rowInfoMap,indentation){if(rowInfo.htmlNode){this.customizeTableRow_(rowInfo.userRow,rowInfo.htmlNode);return rowInfo.htmlNode;}\nconst INDENT_SPACE=indentation*16;const INDENT_SPACE_NO_BUTTON=indentation*16+this.basicIndentation_;const trElement=this.ownerDocument.createElement('tr');rowInfo.htmlNode=trElement;rowInfo.indentation=indentation;trElement.rowInfo=rowInfo;this.customizeTableRow_(rowInfo.userRow,trElement);const isBodyRow=tableSection===this.$.body;const isExpandableRow=rowInfo.userRow[this.subRowsPropertyName_]&&rowInfo.userRow[this.subRowsPropertyName_].length;for(let i=0;i<this.tableColumns_.length;){const td=this.appendNewElement_(trElement,'td');td.columnIndex=i;const column=this.tableColumns_[i];const value=column.value(rowInfo.userRow);const colSpan=column.colSpan?column.colSpan:1;td.style.colSpan=colSpan;switch(column.align){case undefined:case ColumnAlignment.LEFT:break;case ColumnAlignment.RIGHT:td.style.textAlign='right';break;default:throw new Error('Invalid alignment of column at index='+i+': '+column.align);}\nif(this.doesColumnIndexSupportSelection(i)){Polymer.dom(td).classList.add('supports-selection');}\nif(this.columnsWithExpandButtons_.includes(i)){if(rowInfo.userRow[this.subRowsPropertyName_]&&rowInfo.userRow[this.subRowsPropertyName_].length>0){td.style.paddingLeft=INDENT_SPACE+'px';td.style.display='flex';const expandButton=this.appendNewElement_(td,'expand-button');Polymer.dom(expandButton).textContent=RIGHT_ARROW;if(rowInfo.isExpanded){Polymer.dom(expandButton).classList.add('button-expanded');}}else{td.style.paddingLeft=INDENT_SPACE_NO_BUTTON+'px';}}\nif(value!==undefined){Polymer.dom(td).appendChild(tr.ui.b.asHTMLOrTextNode(value,this.ownerDocument));}\ntd.addEventListener('click',function(i,clickEvent){clickEvent.preventDefault();if(!isBodyRow&&!isExpandableRow)return;clickEvent.stopPropagation();if(clickEvent.target.tagName==='EXPAND-BUTTON'){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);return;}\nif(isBodyRow&&this.selectionMode_!==SelectionMode.NONE){let shouldSelect=false;let shouldFocus=false;switch(this.selectionMode_){case SelectionMode.ROW:shouldSelect=this.selectedTableRowInfo_!==rowInfo;shouldFocus=true;break;case SelectionMode.CELL:if(this.doesColumnIndexSupportSelection(i)){shouldSelect=this.selectedTableRowInfo_!==rowInfo||this.selectedColumnIndex_!==i;shouldFocus=true;}\nbreak;default:throw new Error('Invalid selection mode '+\nthis.selectionMode_);}\nif(shouldFocus){this.focus();}\nif(shouldSelect){this.didTableRowInfoGetClicked_(rowInfo,i);return;}}\nif(isExpandableRow){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);}}.bind(this,i));if(isBodyRow){td.addEventListener('dblclick',function(i,e){e.stopPropagation();this.dispatchStepIntoEvent_(rowInfo,i);}.bind(this,i));}\ni+=colSpan;}\nreturn rowInfo.htmlNode;},removeSubNodes_(tableSection,rowInfo,rowInfoMap){if(rowInfo.userRow[this.subRowsPropertyName_]===undefined)return;for(let i=0;i<rowInfo.userRow[this.subRowsPropertyName_].length;i++){const subRow=rowInfo.userRow[this.subRowsPropertyName_][i];const subRowInfo=rowInfoMap.get(subRow);if(!subRowInfo)continue;const subNode=subRowInfo.htmlNode;if(subNode&&Polymer.dom(subNode).parentNode===tableSection){Polymer.dom(tableSection).removeChild(subNode);this.removeSubNodes_(tableSection,subRowInfo,rowInfoMap);}}},scheduleRebuildHeaders_(){this.headerDirty_=true;this.scheduleRebuild_();},scheduleRebuildBody_(){this.bodyDirty_=true;this.scheduleRebuild_();},scheduleRebuildFooter_(){this.footerDirty_=true;this.scheduleRebuild_();},scheduleRebuild_(){if(this.rebuildPending_)return;this.rebuildPending_=true;setTimeout(function(){this.rebuildPending_=false;this.rebuild();}.bind(this),0);},rebuildIfNeeded_(){this.rebuild();},rebuild(){const wasBodyOrHeaderDirty=this.headerDirty_||this.bodyDirty_;if(this.headerDirty_){this.generateHeaderColumns_();this.headerDirty_=false;}\nif(this.bodyDirty_){Polymer.dom(this.$.body).textContent='';this.generateTableRowNodes_(this.$.body,this.tableRows_,this.tableRowsInfo_,0,undefined,undefined);if(this.tableRows_.length===0&&this.emptyValue_!==undefined){const trElement=this.ownerDocument.createElement('tr');Polymer.dom(this.$.body).appendChild(trElement);Polymer.dom(trElement).classList.add('empty-row');const td=this.ownerDocument.createElement('td');Polymer.dom(trElement).appendChild(td);td.colSpan=this.tableColumns_.length;const emptyValue=this.emptyValue_;Polymer.dom(td).appendChild(tr.ui.b.asHTMLOrTextNode(emptyValue,this.ownerDocument));}\nthis.bodyDirty_=false;}\nif(wasBodyOrHeaderDirty)this.applySizes_();if(this.footerDirty_){Polymer.dom(this.$.foot).textContent='';this.generateTableRowNodes_(this.$.foot,this.tableFooterRows_,this.tableFooterRowsInfo_,0,undefined,undefined);if(this.tableFooterRowsInfo_.length){Polymer.dom(this.$.body).classList.add('has-footer');}else{Polymer.dom(this.$.body).classList.remove('has-footer');}\nthis.footerDirty_=false;}},appendNewElement_(parent,tagName){const element=parent.ownerDocument.createElement(tagName);Polymer.dom(parent).appendChild(element);return element;},getExpandedForTableRow(userRow){this.rebuildIfNeeded_();const rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nreturn rowInfo.isExpanded;},getExpandedForUserRow_(userRow){if(userRow[this.subRowsPropertyName_]===undefined){return false;}\nif(userRow[this.subRowsPropertyName_].length===0){return false;}\nif(userRow.isExpanded){return true;}\nif((userRow.isExpanded!==undefined)&&(userRow.isExpanded===false)){return false;}\nconst rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo&&rowInfo.isExpanded){return true;}\nif(this.defaultExpansionStateCallback_===undefined){return false;}\nlet parentUserRow=undefined;if(rowInfo&&rowInfo.parentRowInfo){parentUserRow=rowInfo.parentRowInfo.userRow;}\nreturn this.defaultExpansionStateCallback_(userRow,parentUserRow);},setExpandedForTableRow(userRow,expanded){this.rebuildIfNeeded_();const rowInfo=this.tableRowsInfo_.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nreturn this.setExpandedForUserRow_(this.$.body,this.tableRowsInfo_,userRow,expanded);},setExpandedForUserRow_(tableSection,rowInfoMap,userRow,expanded){this.rebuildIfNeeded_();const rowInfo=rowInfoMap.get(userRow);if(rowInfo===undefined){throw new Error('Row has not been seen, must expand its parents');}\nconst wasExpanded=rowInfo.isExpanded;rowInfo.isExpanded=!!expanded;if(rowInfo.htmlNode===undefined)return;if(rowInfo.htmlNode.parentElement!==tableSection){return;}\nconst expandButton=Polymer.dom(rowInfo.htmlNode).querySelector('expand-button');if(rowInfo.isExpanded){Polymer.dom(expandButton).classList.add('button-expanded');const lastAddedRow=rowInfo.htmlNode;if(rowInfo.userRow[this.subRowsPropertyName_]){this.generateTableRowNodes_(tableSection,rowInfo.userRow[this.subRowsPropertyName_],rowInfoMap,rowInfo.indentation+1,lastAddedRow,rowInfo);}}else{Polymer.dom(expandButton).classList.remove('button-expanded');this.removeSubNodes_(tableSection,rowInfo,rowInfoMap);}\nif(wasExpanded!==rowInfo.isExpanded){const e=new tr.b.Event('row-expanded-changed');e.row=rowInfo.userRow;this.dispatchEvent(e);}\nthis.maybeUpdateSelectedRow_();},get selectionMode(){return this.selectionMode_;},set selectionMode(selectionMode){if(!SelectionModeValues.has(selectionMode)){throw new Error('Invalid selection mode '+selectionMode);}\nthis.rebuildIfNeeded_();this.selectionMode_=selectionMode;this.didSelectionStateChange_();},get rowHighlightStyle(){return this.rowHighlightStyle_;},set rowHighlightStyle(rowHighlightStyle){if(!HighlightStyleValues.has(rowHighlightStyle)){throw new Error('Invalid row highlight style '+rowHighlightStyle);}\nthis.rebuildIfNeeded_();this.rowHighlightStyle_=rowHighlightStyle;this.didSelectionStateChange_();},get resolvedRowHighlightStyle(){if(this.rowHighlightStyle_!==HighlightStyle.DEFAULT){return this.rowHighlightStyle_;}\nswitch(this.selectionMode_){case SelectionMode.NONE:return HighlightStyle.NONE;case SelectionMode.ROW:return HighlightStyle.DARK;case SelectionMode.CELL:return HighlightStyle.LIGHT;default:throw new Error('Invalid selection mode '+selectionMode);}},get cellHighlightStyle(){return this.cellHighlightStyle_;},set cellHighlightStyle(cellHighlightStyle){if(!HighlightStyleValues.has(cellHighlightStyle)){throw new Error('Invalid cell highlight style '+cellHighlightStyle);}\nthis.rebuildIfNeeded_();this.cellHighlightStyle_=cellHighlightStyle;this.didSelectionStateChange_();},get resolvedCellHighlightStyle(){if(this.cellHighlightStyle_!==HighlightStyle.DEFAULT){return this.cellHighlightStyle_;}\nswitch(this.selectionMode_){case SelectionMode.NONE:case SelectionMode.ROW:return HighlightStyle.NONE;case SelectionMode.CELL:return HighlightStyle.DARK;default:throw new Error('Invalid selection mode '+selectionMode);}},setHighlightStyle_(highlightAttribute,resolvedHighlightStyle){switch(resolvedHighlightStyle){case HighlightStyle.NONE:Polymer.dom(this.$.body).removeAttribute(highlightAttribute);break;case HighlightStyle.LIGHT:Polymer.dom(this.$.body).setAttribute(highlightAttribute,'light');break;case HighlightStyle.DARK:Polymer.dom(this.$.body).setAttribute(highlightAttribute,'dark');break;default:throw new Error('Invalid resolved highlight style '+\nresolvedHighlightStyle);}},didSelectionStateChange_(){this.setHighlightStyle_('row-highlight-style',this.resolvedRowHighlightStyle);this.setHighlightStyle_('cell-highlight-style',this.resolvedCellHighlightStyle);this.removeSelectedState_();switch(this.selectionMode_){case SelectionMode.ROW:Polymer.dom(this.$.body).setAttribute('selection-mode','row');Polymer.dom(this.$.body).setAttribute('tabindex',0);this.selectedColumnIndex_=undefined;break;case SelectionMode.CELL:Polymer.dom(this.$.body).setAttribute('selection-mode','cell');Polymer.dom(this.$.body).setAttribute('tabindex',0);if(this.selectedTableRowInfo_&&this.selectedColumnIndex_===undefined){const i=this.getFirstSelectableColumnIndex_();if(i===-1){this.selectedTableRowInfo_=undefined;}else{this.selectedColumnIndex_=i;}}\nbreak;case SelectionMode.NONE:Polymer.dom(this.$.body).removeAttribute('selection-mode');Polymer.dom(this.$.body).removeAttribute('tabindex');this.$.body.blur();this.selectedTableRowInfo_=undefined;this.selectedColumnIndex_=undefined;break;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\nthis.maybeUpdateSelectedRow_();},maybeUpdateSelectedRow_(){if(this.selectedTableRowInfo_===undefined)return;function isVisible(rowInfo){if(!rowInfo.htmlNode)return false;return!!rowInfo.htmlNode.parentElement;}\nif(isVisible(this.selectedTableRowInfo_)){this.updateSelectedState_();return;}\nthis.removeSelectedState_();let curRowInfo=this.selectedTableRowInfo_;while(curRowInfo&&!isVisible(curRowInfo)){curRowInfo=curRowInfo.parentRowInfo;}\nthis.selectedTableRowInfo_=curRowInfo;if(this.selectedTableRowInfo_){this.updateSelectedState_();}else{this.selectedColumnIndex_=undefined;}},didTableRowInfoGetClicked_(rowInfo,columnIndex){switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.CELL:if(!this.doesColumnIndexSupportSelection(columnIndex)){return;}\nif(this.selectedColumnIndex!==columnIndex){this.selectedColumnIndex=columnIndex;}\ncase SelectionMode.ROW:if(this.selectedTableRowInfo_!==rowInfo){this.selectedTableRow=rowInfo.userRow;}}},dispatchStepIntoEvent_(rowInfo,columnIndex){const e=new tr.b.Event('step-into');e.tableRow=rowInfo.userRow;e.tableColumn=this.tableColumns_[columnIndex];e.columnIndex=columnIndex;this.dispatchEvent(e);},get selectedCell(){const row=this.selectedTableRow;const columnIndex=this.selectedColumnIndex;if(row===undefined||columnIndex===undefined||this.tableColumns_.length<=columnIndex){return undefined;}\nconst column=this.tableColumns_[columnIndex];return{row,column,value:column.value(row)};},get selectedTableColumnIndex(){const cols=Polymer.dom(this.$.cols).children;for(let i=0;i<cols.length;++i){if(cols[i].getAttribute('selected')){return i;}}\nreturn undefined;},set selectedTableColumnIndex(selectedIndex){const cols=Polymer.dom(this.$.cols).children;for(let i=0;i<cols.length;++i){if(i===selectedIndex){cols[i].setAttribute('selected',true);}else{cols[i].removeAttribute('selected');}}},get selectedTableRow(){if(!this.selectedTableRowInfo_)return undefined;return this.selectedTableRowInfo_.userRow;},set selectedTableRow(userRow){this.rebuildIfNeeded_();if(this.selectionMode_===SelectionMode.NONE){throw new Error('Selection is off.');}\nlet rowInfo;if(userRow===undefined){rowInfo=undefined;}else{rowInfo=this.tableRowsInfo_.get(userRow);if(!rowInfo){throw new Error('Row has not been seen, must expand its parents.');}}\nconst e=this.prepareToChangeSelection_();if(!rowInfo){this.selectedColumnIndex_=undefined;}else{switch(this.selectionMode_){case SelectionMode.ROW:this.selectedColumnIndex_=undefined;break;case SelectionMode.CELL:if(this.selectedColumnIndex_===undefined){const i=this.getFirstSelectableColumnIndex_();if(i===-1){throw new Error('Cannot find a selectable column.');}\nthis.selectedColumnIndex_=i;}\nbreak;default:throw new Error('Invalid selection mode '+this.selectionMode_);}}\nthis.selectedTableRowInfo_=rowInfo;this.updateSelectedState_();this.dispatchEvent(e);},prepareToChangeSelection_(){const e=new tr.b.Event('selection-changed');const previousSelectedRowInfo=this.selectedTableRowInfo_;if(previousSelectedRowInfo){e.previousSelectedTableRow=previousSelectedRowInfo.userRow;}else{e.previousSelectedTableRow=undefined;}\nthis.removeSelectedState_();return e;},removeSelectedState_(){this.setSelectedState_(false);},updateSelectedState_(){this.setSelectedState_(true);},setSelectedState_(select){if(this.selectedTableRowInfo_===undefined)return;const rowNode=this.selectedTableRowInfo_.htmlNode;if(select){Polymer.dom(rowNode).setAttribute('selected',true);}else{Polymer.dom(rowNode).removeAttribute('selected');}\nconst cellNode=Polymer.dom(rowNode).children[this.selectedColumnIndex_];if(!cellNode)return;if(select){Polymer.dom(cellNode).setAttribute('selected',true);}else{Polymer.dom(cellNode).removeAttribute('selected');}},doesColumnIndexSupportSelection(columnIndex){const columnInfo=this.tableColumns_[columnIndex];const scs=columnInfo.supportsCellSelection;if(scs===false)return false;return true;},getFirstSelectableColumnIndex_(){for(let i=0;i<this.tableColumns_.length;i++){if(this.doesColumnIndexSupportSelection(i)){return i;}}\nreturn-1;},getSelectableNodeGivenTableRowNode_(htmlNode){switch(this.selectionMode_){case SelectionMode.ROW:return htmlNode;case SelectionMode.CELL:return Polymer.dom(htmlNode).children[this.selectedColumnIndex_];default:throw new Error('Invalid selection mode '+this.selectionMode_);}},get selectedColumnIndex(){if(this.selectionMode_!==SelectionMode.CELL){return undefined;}\nreturn this.selectedColumnIndex_;},set selectedColumnIndex(selectedColumnIndex){this.rebuildIfNeeded_();if(this.selectionMode_===SelectionMode.NONE){throw new Error('Selection is off.');}\nif(selectedColumnIndex<0||selectedColumnIndex>=this.tableColumns_.length){throw new Error('Invalid index');}\nif(!this.doesColumnIndexSupportSelection(selectedColumnIndex)){throw new Error('Selection is not supported on this column');}\nconst e=this.prepareToChangeSelection_();if(this.selectedColumnIndex_===undefined){this.selectedTableRowInfo_=undefined;}else if(!this.selectedTableRowInfo_){if(this.tableRows_.length===0){throw new Error('No available row to be selected');}\nthis.selectedTableRowInfo_=this.tableRowsInfo_.get(this.tableRows_[0]);}\nthis.selectedColumnIndex_=selectedColumnIndex;this.updateSelectedState_();this.dispatchEvent(e);},onKeyDown_(e){if(this.selectionMode_===SelectionMode.NONE)return;const CODE_TO_COMMAND_NAMES={13:'ENTER',32:'SPACE',37:'ARROW_LEFT',38:'ARROW_UP',39:'ARROW_RIGHT',40:'ARROW_DOWN'};const cmdName=CODE_TO_COMMAND_NAMES[e.keyCode];if(cmdName===undefined)return;e.stopPropagation();e.preventDefault();this.performKeyCommand_(cmdName);},onFocus_(e){if(this.selectionMode_===SelectionMode.NONE||this.selectedTableRow||this.tableRows_.length===0){return;}\nif(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\nthis.selectedTableRow=this.tableRows_[0];},focus(){this.$.body.focus();this.onFocus_();},blur(){this.$.body.blur();},get isFocused(){return this.root.activeElement===this.$.body;},performKeyCommand_(cmdName){this.rebuildIfNeeded_();switch(cmdName){case'ARROW_UP':this.selectPreviousOrFirstRowIfPossible_();return;case'ARROW_DOWN':this.selectNextOrFirstRowIfPossible_();return;case'ARROW_RIGHT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.expandRowAndSelectChildRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheRightIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\ncase'ARROW_LEFT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.collapseRowOrSelectParentRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheLeftIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}\ncase'SPACE':this.toggleRowExpansionStateIfPossible_();return;case'ENTER':this.stepIntoSelectionIfPossible_();return;default:throw new Error('Unrecognized command '+cmdName);}},selectPreviousOrFirstRowIfPossible_(){const prev=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.previousElementSibling:this.$.body.firstChild;if(!prev)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\ntr.ui.b.scrollIntoViewIfNeeded(prev);this.selectedTableRow=prev.rowInfo.userRow;},selectNextOrFirstRowIfPossible_(){this.getFirstSelectableColumnIndex_;const next=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.nextElementSibling:this.$.body.firstChild;if(!next)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}\ntr.ui.b.scrollIntoViewIfNeeded(next);this.selectedTableRow=next.rowInfo.userRow;},expandRowAndSelectChildRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}\nif(!selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,true);}\nthis.selectedTableRow=selectedRowInfo.htmlNode.nextElementSibling.rowInfo.userRow;},collapseRowOrSelectParentRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo)return;if(selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,false);}else{const parentRowInfo=selectedRowInfo.parentRowInfo;if(parentRowInfo){this.selectedTableRow=parentRowInfo.userRow;}}},selectNextSelectableCellToTheRightIfPossible_(){if(!this.selectedTableRowInfo_||this.selectedColumnIndex_===undefined){return;}\nfor(let i=this.selectedColumnIndex_+1;i<this.tableColumns_.length;i++){if(this.doesColumnIndexSupportSelection(i)){this.selectedColumnIndex=i;return;}}},selectNextSelectableCellToTheLeftIfPossible_(){if(!this.selectedTableRowInfo_||this.selectedColumnIndex_===undefined){return;}\nfor(let i=this.selectedColumnIndex_-1;i>=0;i--){if(this.doesColumnIndexSupportSelection(i)){this.selectedColumnIndex=i;return;}}},toggleRowExpansionStateIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}\nthis.setExpandedForTableRow(selectedRowInfo.userRow,!selectedRowInfo.isExpanded);},stepIntoSelectionIfPossible_(){if(!this.selectedTableRowInfo_)return;this.dispatchStepIntoEvent_(this.selectedTableRowInfo_,this.selectedColumnIndex_);},dispatchSortingChangedEvent_(){const e=new tr.b.Event('sort-column-changed');e.sortColumnIndex=this.sortColumnIndex_;e.sortDescending=this.sortDescending_;this.dispatchEvent(e);}});})();'use strict';const ColumnAlignment=tr.ui.b.TableFormat.ColumnAlignment;Polymer({is:'tr-ui-b-table-header-cell',created(){this.tapCallback_=undefined;this.cellTitle_='';this.align_=undefined;this.selectable_=false;this.column_=undefined;},ready(){this.addEventListener('click',this.onTap_.bind(this));},set column(column){this.column_=column;this.align=column.align;this.cellTitle=column.title;},get column(){return this.column_;},set cellTitle(value){this.cellTitle_=value;const titleNode=tr.ui.b.asHTMLOrTextNode(this.cellTitle_,this.ownerDocument);this.$.title.innerText='';Polymer.dom(this.$.title).appendChild(titleNode);},get cellTitle(){return this.cellTitle_;},set align(align){switch(align){case undefined:case ColumnAlignment.LEFT:this.style.justifyContent='';break;case ColumnAlignment.RIGHT:this.style.justifyContent='flex-end';break;default:throw new Error('Invalid alignment of column (title=\\''+\nthis.cellTitle_+'\\'): '+align);}\nthis.align_=align;},get align(){return this.align_;},clearSideContent(){Polymer.dom(this.$.side).textContent='';},set sideContent(content){Polymer.dom(this.$.side).textContent=content;this.$.side.style.display=content?'inline':'none';},get sideContent(){return Polymer.dom(this.$.side).textContent;},set sideContentDisabled(sideContentDisabled){this.$.side.classList.toggle('disabled',sideContentDisabled);},get sideContentDisabled(){return this.$.side.classList.contains('disabled');},set tapCallback(callback){this.style.cursor='pointer';this.tapCallback_=callback;},get tapCallback(){return this.tapCallback_;},onTap_(){if(this.tapCallback_){this.tapCallback_();}}});'use strict';Polymer({is:'tr-ui-a-alert-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},getRowsForSingleAlert_(alert){const rows=[];for(const argName in alert.args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=alert.args[argName];rows.push({name:argName,value:argView});}\nif(alert.associatedEvents.length){alert.associatedEvents.forEach(function(event,i){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.title);let valueString='';if(event instanceof tr.model.TimedEvent){valueString='took '+event.duration.toFixed(2)+'ms';}\nrows.push({name:linkEl,value:valueString});});}\nconst descriptionEl=tr.ui.b.createDiv({textContent:alert.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(alert.info.docLinks){alert.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}\nreturn rows;},getRowsForAlerts_(alerts){if(alerts.length===1){const rows=[{name:'Alert',value:tr.b.getOnlyElement(alerts).title}];const detailRows=this.getRowsForSingleAlert_(tr.b.getOnlyElement(alerts));rows.push.apply(rows,detailRows);return rows;}\nreturn alerts.map(function(alert){return{name:'Alert',value:alert.title,isExpanded:alerts.size<10,subRows:this.getRowsForSingleAlert_(alert)};},this);},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}\nconst alerts=this.currentSelection_;this.$.table.tableRows=this.getRowsForAlerts_(alerts);this.$.table.rebuild();},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const result=new tr.model.EventSet();for(const event of this.currentSelection_){result.addEventSet(event.associatedEvents);}\nreturn result;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:false,title:'Alert',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:true,title:'Alerts',});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-context-controller',created(){this.host_=undefined;this.groupToContext_=new Map();this.dirtyGroups_=new Set();},attached(){if(this.host_){throw new Error('Scalar context controller is already attached to a host');}\nconst host=findParentOrHost(this);if(host.__scalarContextController){throw new Error('Multiple scalar context controllers attached to this host');}\nhost.__scalarContextController=this;this.host_=host;},detached(){if(!this.host_){throw new Error('Scalar context controller is not attached to a host');}\nif(this.host_.__scalarContextController!==this){throw new Error('Scalar context controller is not attached to its host');}\ndelete this.host_.__scalarContextController;this.host_=undefined;},getContext(group){return this.groupToContext_.get(group);},onScalarSpanAdded(group,span){let context=this.groupToContext_.get(group);if(context===undefined){context={spans:new Set(),range:new tr.b.math.Range()};this.groupToContext_.set(group,context);}\nif(context.spans.has(span)){throw new Error('Scalar span already registered with group: '+group);}\ncontext.spans.add(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanRemoved(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}\ncontext.spans.delete(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanUpdated(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}\nthis.markGroupDirtyAndScheduleUpdate_(group);},markGroupDirtyAndScheduleUpdate_(group){const alreadyDirty=this.dirtyGroups_.size>0;this.dirtyGroups_.add(group);if(!alreadyDirty){tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContext,this);}},updateContext(){const groups=this.dirtyGroups_;if(groups.size===0)return;this.dirtyGroups_=new Set();for(const group of groups){this.updateGroup_(group);}\nconst event=new tr.b.Event('context-updated');event.groups=groups;this.dispatchEvent(event);},updateGroup_(group){const context=this.groupToContext_.get(group);if(context.spans.size===0){this.groupToContext_.delete(group);return;}\ncontext.range.reset();for(const span of context.spans){context.range.addValue(span.value);}}});function getScalarContextControllerForElement(element){while(element){if(element.__scalarContextController){return element.__scalarContextController;}\nelement=findParentOrHost(element);}\nreturn undefined;}\nfunction findParentOrHost(node){if(node.parentElement){return node.parentElement;}\nwhile(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}\nreturn node.host;}\nreturn{getScalarContextControllerForElement,};});'use strict';tr.exportTo('tr.v.ui',function(){function createScalarSpan(value,opt_config){if(value===undefined)return'';const config=opt_config||{};const ownerDocument=config.ownerDocument||document;const span=unwrap(ownerDocument).createElement('tr-v-ui-scalar-span');let numericValue;if(value instanceof tr.b.Scalar){span.value=value;numericValue=value.value;}else if(value instanceof tr.v.Histogram){numericValue=value.average;if(numericValue===undefined)return'';span.setValueAndUnit(numericValue,value.unit);}else{const unit=config.unit;if(unit===undefined){throw new Error('Unit must be provided in config when value is a number');}\nspan.setValueAndUnit(value,unit);numericValue=value;}\nif(config.context){span.context=config.context;}\nif(config.customContextRange){span.customContextRange=config.customContextRange;}\nif(config.leftAlign){span.leftAlign=true;}\nif(config.inline){span.inline=true;}\nif(config.significance!==undefined){span.significance=config.significance;}\nif(config.contextGroup!==undefined){span.contextGroup=config.contextGroup;}\nreturn span;}\nreturn{createScalarSpan,};});'use strict';Polymer({is:'tr-v-ui-scalar-span',properties:{contextGroup:{type:String,reflectToAttribute:true,observer:'contextGroupChanged_'}},created(){this.value_=undefined;this.unit_=undefined;this.context_=undefined;this.warning_=undefined;this.significance_=tr.b.math.Statistics.Significance.DONT_CARE;this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;this.onContextUpdated_=this.onContextUpdated_.bind(this);this.updateContents_=this.updateContents_.bind(this);this.customContextRange_=undefined;},get significance(){return this.significance_;},set significance(s){this.significance_=s;this.updateContents_();},set contentTextDecoration(deco){this.$.content.style.textDecoration=deco;},get value(){return this.value_;},set value(value){if(value instanceof tr.b.Scalar){this.value_=value.value;this.unit_=value.unit;}else{this.value_=value;}\nthis.updateContents_();if(this.hasContext_(this.contextGroup)){this.contextController_.onScalarSpanUpdated(this.contextGroup,this);}else{this.updateSparkline_();}},get contextController_(){if(this.shouldSearchForContextController_){this.lazyContextController_=tr.v.ui.getScalarContextControllerForElement(this);this.shouldSearchForContextController_=false;}\nreturn this.lazyContextController_;},hasContext_(contextGroup){return!!(contextGroup&&this.contextController_);},contextGroupChanged_(newContextGroup,oldContextGroup){this.detachFromContextControllerIfPossible_(oldContextGroup);if(!this.attachToContextControllerIfPossible_(newContextGroup)){this.onContextUpdated_();}},attachToContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return false;this.contextController_.addEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanAdded(contextGroup,this);return true;},detachFromContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return;this.contextController_.removeEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanRemoved(contextGroup,this);},attached(){tr.b.Unit.addEventListener('display-mode-changed',this.updateContents_);this.shouldSearchForContextController_=true;this.attachToContextControllerIfPossible_(this.contextGroup);},detached(){tr.b.Unit.removeEventListener('display-mode-changed',this.updateContents_);this.detachFromContextControllerIfPossible_(this.contextGroup);this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;},onContextUpdated_(){this.updateSparkline_();},get context(){return this.context_;},set context(context){this.context_=context;this.updateContents_();},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();this.updateSparkline_();},setValueAndUnit(value,unit){this.value_=value;this.unit_=unit;this.updateContents_();},get customContextRange(){return this.customContextRange_;},set customContextRange(customContextRange){this.customContextRange_=customContextRange;this.updateSparkline_();},get inline(){return Polymer.dom(this).classList.contains('inline');},set inline(inline){if(inline){Polymer.dom(this).classList.add('inline');}else{Polymer.dom(this).classList.remove('inline');}},get leftAlign(){return Polymer.dom(this).classList.contains('left-align');},set leftAlign(leftAlign){if(leftAlign){Polymer.dom(this).classList.add('left-align');}else{Polymer.dom(this).classList.remove('left-align');}},updateSparkline_(){Polymer.dom(this.$.sparkline).classList.remove('positive');Polymer.dom(this.$.sparkline).classList.remove('better');Polymer.dom(this.$.sparkline).classList.remove('worse');Polymer.dom(this.$.sparkline).classList.remove('same');this.$.sparkline.style.display='none';this.$.sparkline.style.left='0';this.$.sparkline.style.width='0';let range=this.customContextRange_;if(!range&&this.hasContext_(this.contextGroup)){const context=this.contextController_.getContext(this.contextGroup);if(context){range=context.range;}}\nif(!range||range.isEmpty)return;const leftPoint=Math.min(range.min,0);const rightPoint=Math.max(range.max,0);const pointDistance=rightPoint-leftPoint;if(pointDistance===0){return;}\nthis.$.sparkline.style.display='block';let left;let width;if(this.value>0){width=Math.min(this.value,rightPoint);left=-leftPoint;Polymer.dom(this.$.sparkline).classList.add('positive');}else if(this.value<=0){width=-Math.max(this.value,leftPoint);left=(-leftPoint)-width;}\nthis.$.sparkline.style.left=this.buildSparklineStyle_(left/pointDistance,false);this.$.sparkline.style.width=this.buildSparklineStyle_(width/pointDistance,true);const changeClass=this.changeClassName_;if(changeClass){Polymer.dom(this.$.sparkline).classList.add(changeClass);}},buildSparklineStyle_(ratio,isWidth){let position='calc('+ratio+' * (100% - 1px)';if(isWidth){position+=' + 1px';}\nposition+=')';return position;},updateContents_(){Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).classList.remove('better');Polymer.dom(this.$.content).classList.remove('worse');Polymer.dom(this.$.content).classList.remove('same');this.$.insignificant.style.display='';this.$.significantly_better.style.display='';this.$.significantly_worse.style.display='';if(this.unit_===undefined)return;this.$.content.title='';Polymer.dom(this.$.content).textContent=this.unit_.format(this.value,this.context);this.updateDelta_();},updateDelta_(){let changeClass=this.changeClassName_;if(!changeClass){this.$.significance.style.display='none';return;}\nthis.$.significance.style.display='inline';let title;switch(changeClass){case'better':title='improvement';break;case'worse':title='regression';break;case'same':title='no change';break;default:throw new Error('Unknown change class: '+changeClass);}\nPolymer.dom(this.$.content).classList.add(changeClass);switch(this.significance){case tr.b.math.Statistics.Significance.DONT_CARE:break;case tr.b.math.Statistics.Significance.INSIGNIFICANT:if(changeClass!=='same')title='insignificant '+title;this.$.insignificant.style.display='inline';changeClass='same';break;case tr.b.math.Statistics.Significance.SIGNIFICANT:if(changeClass==='same'){throw new Error('How can no change be significant?');}\nthis.$['significantly_'+changeClass].style.display='inline';title='significant '+title;break;default:throw new Error('Unknown significance '+this.significance);}\nthis.$.significance.title=title;this.$.content.title=title;},get changeClassName_(){if(!this.unit_||!this.unit_.isDelta)return undefined;switch(this.unit_.improvementDirection){case tr.b.ImprovementDirection.DONT_CARE:return undefined;case tr.b.ImprovementDirection.BIGGER_IS_BETTER:if(this.value===0)return'same';return this.value>0?'better':'worse';case tr.b.ImprovementDirection.SMALLER_IS_BETTER:if(this.value===0)return'same';return this.value<0?'better':'worse';default:throw new Error('Unknown improvement direction: '+\nthis.unit_.improvementDirection);}},get warning(){return this.warning_;},set warning(warning){this.warning_=warning;const warningEl=this.$.warning;if(this.warning_){warningEl.title=warning;warningEl.style.display='inline';}else{warningEl.title='';warningEl.style.display='';}},get timestamp(){return this.value;},set timestamp(timestamp){if(timestamp instanceof tr.b.u.TimeStamp){this.value=timestamp;return;}\nthis.setValueAndUnit(timestamp,tr.b.u.Units.timeStampInMs);},get duration(){return this.value;},set duration(duration){if(duration instanceof tr.b.u.TimeDuration){this.value=duration;return;}\nthis.setValueAndUnit(duration,tr.b.u.Units.timeDurationInMs);}});'use strict';tr.exportTo('tr.ui.analysis',function(){const NO_BREAK_SPACE=String.fromCharCode(160);const RIGHTWARDS_ARROW=String.fromCharCode(8594);const COLLATOR=new Intl.Collator(undefined,{numeric:true});function TitleColumn(title){this.title=title;}\nTitleColumn.prototype={supportsCellSelection:false,value(row){const formattedTitle=this.formatTitle(row);const contexts=row.contexts;if(contexts===undefined||contexts.length===0){return formattedTitle;}\nconst firstContext=contexts[0];const lastContext=contexts[contexts.length-1];let changeDefinedContextCount=0;for(let i=1;i<contexts.length;i++){if((contexts[i]===undefined)!==(contexts[i-1]===undefined)){changeDefinedContextCount++;}}\nlet color=undefined;let prefix=undefined;if(!firstContext&&lastContext){color='red';prefix='+++';}else if(firstContext&&!lastContext){color='green';prefix='---';}\nif(changeDefinedContextCount>1){color='purple';}\nif(color===undefined&&prefix===undefined){return formattedTitle;}\nconst titleEl=document.createElement('span');if(prefix!==undefined){const prefixEl=tr.ui.b.createSpan({textContent:prefix});prefixEl.style.fontFamily='monospace';Polymer.dom(titleEl).appendChild(prefixEl);Polymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(NO_BREAK_SPACE));}\nif(color!==undefined){titleEl.style.color=color;}\nPolymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(formattedTitle));return titleEl;},formatTitle(row){return row.title;},cmp(rowA,rowB){return COLLATOR.compare(rowA.title,rowB.title);}};function MemoryColumn(name,cellPath,aggregationMode){this.name=name;this.cellPath=cellPath;this.shouldSetContextGroup=false;this.aggregationMode=aggregationMode;}\nMemoryColumn.fromRows=function(rows,config){const cellNames=new Set();function gatherCellNames(rows){rows.forEach(function(row){if(row===undefined)return;const fieldCells=row[config.cellKey];if(fieldCells!==undefined){for(const[fieldName,fieldCell]of Object.entries(fieldCells)){if(fieldCell===undefined||fieldCell.fields===undefined){continue;}\ncellNames.add(fieldName);}}\nconst subRows=row.subRows;if(subRows!==undefined){gatherCellNames(subRows);}});}\ngatherCellNames(rows);const positions=[];cellNames.forEach(function(cellName){const cellPath=[config.cellKey,cellName];const matchingRule=MemoryColumn.findMatchingRule(cellName,config.rules);const constructor=matchingRule.columnConstructor;const column=new constructor(cellName,cellPath,config.aggregationMode);column.shouldSetContextGroup=!!config.shouldSetContextGroup;positions.push({importance:matchingRule.importance,column});});positions.sort(function(a,b){if(a.importance===b.importance){return COLLATOR.compare(a.column.name,b.column.name);}\nreturn b.importance-a.importance;});return positions.map(function(position){return position.column;});};MemoryColumn.spaceEqually=function(columns){const columnWidth=(100/columns.length).toFixed(3)+'%';columns.forEach(function(column){column.width=columnWidth;});};MemoryColumn.findMatchingRule=function(name,rules){for(let i=0;i<rules.length;i++){const rule=rules[i];if(MemoryColumn.nameMatchesCondition(name,rule.condition)){return rule;}}\nreturn undefined;};MemoryColumn.nameMatchesCondition=function(name,condition){if(condition===undefined)return true;if(typeof(condition)==='string')return name===condition;return condition.test(name);};MemoryColumn.AggregationMode={DIFF:0,MAX:1};MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER='at some selected timestamps';MemoryColumn.prototype={get title(){return this.name;},cell(row){let cell=row;const cellPath=this.cellPath;for(let i=0;i<cellPath.length;i++){if(cell===undefined)return undefined;cell=cell[cellPath[i]];}\nreturn cell;},aggregateCells(row,subRows){},fields(row){const cell=this.cell(row);if(cell===undefined)return undefined;return cell.fields;},value(row){const fields=this.fields(row);if(this.hasAllRelevantFieldsUndefined(fields))return'';const contexts=row.contexts;const color=this.color(fields,contexts);const infos=[];this.addInfos(fields,contexts,infos);const formattedFields=this.formatFields(fields);if((color===undefined||formattedFields==='')&&infos.length===0){return formattedFields;}\nconst fieldEl=document.createElement('span');fieldEl.style.display='flex';fieldEl.style.alignItems='center';fieldEl.style.justifyContent='flex-end';Polymer.dom(fieldEl).appendChild(tr.ui.b.asHTMLOrTextNode(formattedFields));infos.forEach(function(info){const infoEl=document.createElement('span');infoEl.style.paddingLeft='4px';infoEl.style.cursor='help';infoEl.style.fontWeight='bold';Polymer.dom(infoEl).textContent=info.icon;if(info.color!==undefined){infoEl.style.color=info.color;}\ninfoEl.title=info.message;Polymer.dom(fieldEl).appendChild(infoEl);},this);if(color!==undefined){fieldEl.style.color=color;}\nreturn fieldEl;},hasAllRelevantFieldsUndefined(fields){if(fields===undefined)return true;switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return fields[0]===undefined&&fields[fields.length-1]===undefined;case MemoryColumn.AggregationMode.MAX:default:return fields.every(function(field){return field===undefined;});}},color(fields,contexts){return undefined;},formatFields(fields){if(fields.length===1){return this.formatSingleField(fields[0]);}\nreturn this.formatMultipleFields(fields);},formatSingleField(field){throw new Error('Not implemented');},formatMultipleFields(fields){switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return this.formatMultipleFieldsDiff(fields[0],fields[fields.length-1]);case MemoryColumn.AggregationMode.MAX:return this.formatMultipleFieldsMax(fields);default:return tr.ui.b.createSpan({textContent:'(unsupported aggregation mode)',italic:true});}},formatMultipleFieldsDiff(firstField,lastField){throw new Error('Not implemented');},formatMultipleFieldsMax(fields){return this.formatSingleField(this.getMaxField(fields));},cmp(rowA,rowB){const fieldsA=this.fields(rowA);const fieldsB=this.fields(rowB);if(fieldsA!==undefined&&fieldsB!==undefined&&fieldsA.length!==fieldsB.length){throw new Error('Different number of fields');}\nconst undefinedA=this.hasAllRelevantFieldsUndefined(fieldsA);const undefinedB=this.hasAllRelevantFieldsUndefined(fieldsB);if(undefinedA&&undefinedB)return 0;if(undefinedA)return-1;if(undefinedB)return 1;return this.compareFields(fieldsA,fieldsB);},compareFields(fieldsA,fieldsB){if(fieldsA.length===1){return this.compareSingleFields(fieldsA[0],fieldsB[0]);}\nreturn this.compareMultipleFields(fieldsA,fieldsB);},compareSingleFields(fieldA,fieldB){throw new Error('Not implemented');},compareMultipleFields(fieldsA,fieldsB){switch(this.aggregationMode){case MemoryColumn.AggregationMode.DIFF:return this.compareMultipleFieldsDiff(fieldsA[0],fieldsA[fieldsA.length-1],fieldsB[0],fieldsB[fieldsB.length-1]);case MemoryColumn.AggregationMode.MAX:return this.compareMultipleFieldsMax(fieldsA,fieldsB);default:return 0;}},compareMultipleFieldsDiff(firstFieldA,lastFieldA,firstFieldB,lastFieldB){throw new Error('Not implemented');},compareMultipleFieldsMax(fieldsA,fieldsB){return this.compareSingleFields(this.getMaxField(fieldsA),this.getMaxField(fieldsB));},getMaxField(fields){return fields.reduce(function(accumulator,field){if(field===undefined){return accumulator;}\nif(accumulator===undefined||this.compareSingleFields(field,accumulator)>0){return field;}\nreturn accumulator;}.bind(this),undefined);},addInfos(fields,contexts,infos){},getImportance(importanceRules){if(importanceRules.length===0)return 0;const matchingRule=MemoryColumn.findMatchingRule(this.name,importanceRules);if(matchingRule!==undefined){return matchingRule.importance;}\nlet minImportance=importanceRules[0].importance;for(let i=1;i<importanceRules.length;i++){minImportance=Math.min(minImportance,importanceRules[i].importance);}\nreturn minImportance-1;}};function StringMemoryColumn(name,cellPath,aggregationMode){MemoryColumn.call(this,name,cellPath,aggregationMode);}\nStringMemoryColumn.prototype={__proto__:MemoryColumn.prototype,formatSingleField(string){return string;},formatMultipleFieldsDiff(firstString,lastString){if(firstString===undefined){const spanEl=tr.ui.b.createSpan({color:'red'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode('+'));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(lastString)));return spanEl;}else if(lastString===undefined){const spanEl=tr.ui.b.createSpan({color:'green'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode('-'));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(firstString)));return spanEl;}else if(firstString===lastString){return this.formatSingleField(firstString);}\nconst spanEl=tr.ui.b.createSpan({color:'DarkOrange'});Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(firstString)));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(' '+RIGHTWARDS_ARROW+' '));Polymer.dom(spanEl).appendChild(tr.ui.b.asHTMLOrTextNode(this.formatSingleField(lastString)));return spanEl;},compareSingleFields(stringA,stringB){return COLLATOR.compare(stringA,stringB);},compareMultipleFieldsDiff(firstStringA,lastStringA,firstStringB,lastStringB){if(firstStringA===undefined&&firstStringB!==undefined){return 1;}\nif(firstStringA!==undefined&&firstStringB===undefined){return-1;}\nif(firstStringA===undefined&&firstStringB===undefined){return this.compareSingleFields(lastStringA,lastStringB);}\nif(lastStringA===undefined&&lastStringB!==undefined){return-1;}\nif(lastStringA!==undefined&&lastStringB===undefined){return 1;}\nif(lastStringA===undefined&&lastStringB===undefined){return this.compareSingleFields(firstStringB,firstStringA);}\nconst areStringsAEqual=firstStringA===lastStringA;const areStringsBEqual=firstStringB===lastStringB;if(areStringsAEqual&&areStringsBEqual)return 0;if(areStringsAEqual)return-1;if(areStringsBEqual)return 1;return 0;}};function NumericMemoryColumn(name,cellPath,aggregationMode){MemoryColumn.call(this,name,cellPath,aggregationMode);}\nNumericMemoryColumn.DIFF_EPSILON=0.0001;NumericMemoryColumn.prototype={__proto__:MemoryColumn.prototype,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,aggregateCells(row,subRows){const subRowCells=subRows.map(this.cell,this);let hasDefinedSubRowNumeric=false;let timestampCount=undefined;subRowCells.forEach(function(subRowCell){if(subRowCell===undefined)return;const subRowNumerics=subRowCell.fields;if(subRowNumerics===undefined)return;if(timestampCount===undefined){timestampCount=subRowNumerics.length;}else if(timestampCount!==subRowNumerics.length){throw new Error('Sub-rows have different numbers of timestamps');}\nif(hasDefinedSubRowNumeric){return;}\nhasDefinedSubRowNumeric=subRowNumerics.some(function(numeric){return numeric!==undefined;});});if(!hasDefinedSubRowNumeric){return;}\nconst cellPath=this.cellPath;let rowCell=row;for(let i=0;i<cellPath.length;i++){const nextStepName=cellPath[i];let nextStep=rowCell[nextStepName];if(nextStep===undefined){if(i<cellPath.length-1){nextStep={};}else{nextStep=new MemoryCell(undefined);}\nrowCell[nextStepName]=nextStep;}\nrowCell=nextStep;}\nif(rowCell.fields===undefined){rowCell.fields=new Array(timestampCount);}else if(rowCell.fields.length!==timestampCount){throw new Error('Row has a different number of timestamps than sub-rows');}\nfor(let i=0;i<timestampCount;i++){if(rowCell.fields[i]!==undefined)continue;rowCell.fields[i]=tr.model.MemoryAllocatorDump.aggregateNumerics(subRowCells.map(function(subRowCell){if(subRowCell===undefined||subRowCell.fields===undefined){return undefined;}\nreturn subRowCell.fields[i];}));}},formatSingleField(numeric){return tr.v.ui.createScalarSpan(numeric,{context:this.getFormattingContext(numeric.unit),contextGroup:this.shouldSetContextGroup?this.name:undefined,inline:true,});},getFormattingContext(unit){return undefined;},formatMultipleFieldsDiff(firstNumeric,lastNumeric){return this.formatSingleField(this.getDiffField_(firstNumeric,lastNumeric));},compareSingleFields(numericA,numericB){return numericA.value-numericB.value;},compareMultipleFieldsDiff(firstNumericA,lastNumericA,firstNumericB,lastNumericB){return this.getDiffFieldValue_(firstNumericA,lastNumericA)-\nthis.getDiffFieldValue_(firstNumericB,lastNumericB);},getDiffField_(firstNumeric,lastNumeric){const definedNumeric=firstNumeric||lastNumeric;return new tr.b.Scalar(definedNumeric.unit.correspondingDeltaUnit,this.getDiffFieldValue_(firstNumeric,lastNumeric));},getDiffFieldValue_(firstNumeric,lastNumeric){const firstValue=firstNumeric===undefined?0:firstNumeric.value;const lastValue=lastNumeric===undefined?0:lastNumeric.value;const diff=lastValue-firstValue;return Math.abs(diff)<NumericMemoryColumn.DIFF_EPSILON?0:diff;}};function MemoryCell(fields){this.fields=fields;}\nMemoryCell.extractFields=function(cell){if(cell===undefined)return undefined;return cell.fields;};const RECURSIVE_EXPANSION_MAX_VISIBLE_ROW_COUNT=10;function expandTableRowsRecursively(table){let currentLevelRows=table.tableRows;let totalVisibleRowCount=currentLevelRows.length;while(currentLevelRows.length>0){let nextLevelRowCount=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;nextLevelRowCount+=subRows.length;});if(totalVisibleRowCount+nextLevelRowCount>RECURSIVE_EXPANSION_MAX_VISIBLE_ROW_COUNT){break;}\nconst nextLevelRows=new Array(nextLevelRowCount);let nextLevelRowIndex=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;table.setExpandedForTableRow(currentLevelRow,true);subRows.forEach(function(subRow){nextLevelRows[nextLevelRowIndex++]=subRow;});});totalVisibleRowCount+=nextLevelRowCount;currentLevelRows=nextLevelRows;}}\nfunction aggregateTableRowCellsRecursively(row,columns,opt_predicate){const subRows=row.subRows;if(subRows===undefined||subRows.length===0)return;subRows.forEach(function(subRow){aggregateTableRowCellsRecursively(subRow,columns,opt_predicate);});if(opt_predicate===undefined||opt_predicate(row.contexts)){aggregateTableRowCells(row,subRows,columns);}}\nfunction aggregateTableRowCells(row,subRows,columns){columns.forEach(function(column){if(!(column instanceof MemoryColumn))return;column.aggregateCells(row,subRows);});}\nfunction createCells(timeToValues,valueFieldsGetter,opt_this){opt_this=opt_this||this;const fieldNameToFields=tr.b.invertArrayOfDicts(timeToValues,valueFieldsGetter,opt_this);const result={};for(const[fieldName,fields]of Object.entries(fieldNameToFields)){result[fieldName]=new tr.ui.analysis.MemoryCell(fields);}\nreturn result;}\nfunction createWarningInfo(message){return{message,icon:String.fromCharCode(9888),color:'red'};}\nfunction DetailsNumericMemoryColumn(name,cellPath,aggregationMode){NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nDetailsNumericMemoryColumn.prototype={__proto__:NumericMemoryColumn.prototype,getFormattingContext(unit){if(unit.baseUnit===tr.b.Unit.byName.sizeInBytes){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.KIBI};}\nreturn undefined;}};return{TitleColumn,MemoryColumn,StringMemoryColumn,NumericMemoryColumn,MemoryCell,expandTableRowsRecursively,aggregateTableRowCellsRecursively,aggregateTableRowCells,createCells,createWarningInfo,DetailsNumericMemoryColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const LATIN_SMALL_LETTER_F_WITH_HOOK=String.fromCharCode(0x0192);const CIRCLED_LATIN_CAPITAL_LETTER_T=String.fromCharCode(0x24C9);const HeapDetailsRowDimension={ROOT:{},STACK_FRAME:{label:'Stack frame',symbol:LATIN_SMALL_LETTER_F_WITH_HOOK,color:'heap_dump_stack_frame'},OBJECT_TYPE:{label:'Object type',symbol:CIRCLED_LATIN_CAPITAL_LETTER_T,color:'heap_dump_object_type'}};function HeapDetailsTitleColumn(title){tr.ui.analysis.TitleColumn.call(this,title);}\nHeapDetailsTitleColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.dimension===HeapDetailsRowDimension.ROOT){return row.title;}\nconst symbolEl=document.createElement('span');Polymer.dom(symbolEl).textContent=row.dimension.symbol;symbolEl.title=row.dimension.label;symbolEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString(row.dimension.color);symbolEl.style.paddingRight='4px';symbolEl.style.cursor='help';symbolEl.style.fontWeight='bold';const titleEl=document.createElement('span');Polymer.dom(titleEl).appendChild(symbolEl);Polymer.dom(titleEl).appendChild(document.createTextNode(row.title));return titleEl;}};function AllocationCountColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nAllocationCountColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,getFormattingContext(unit){return{minimumFractionDigits:0};}};const HEAP_DETAILS_COLUMN_RULES=[{condition:'Size',importance:2,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Count',importance:1,columnConstructor:AllocationCountColumn},{importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];return{HeapDetailsRowDimension,HeapDetailsTitleColumn,AllocationCountColumn,HEAP_DETAILS_COLUMN_RULES,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const RebuildableBehavior={rebuild(){if(!this.paneDirty_){return;}\nthis.paneDirty_=false;this.onRebuild_();},scheduleRebuild_(){if(this.paneDirty_)return;this.paneDirty_=true;tr.b.requestAnimationFrame(this.rebuild.bind(this));},onRebuild_(){}};return{RebuildableBehavior,};});'use strict';Polymer({is:'tr-ui-b-tab-view',properties:{label_:{type:String,value:()=>''},selectedSubView_:Object,subViews_:{type:Array,value:()=>[]},tabsHidden:{type:Boolean,value:false,observer:'tabsHiddenChanged_'}},ready(){this.$.tabs.addEventListener('keydown',this.onKeyDown_.bind(this),true);this.updateFocusability_();},set label(newLabel){this.set('label_',newLabel);},get tabs(){return this.get('subViews_');},get selectedSubView(){return this.selectedSubView_;},set selectedSubView(subView){if(subView===this.selectedSubView_)return;if(this.selectedSubView_){Polymer.dom(this.$.subView).removeChild(this.selectedSubView_);const oldInput=this.root.getElementById(this.computeRadioId_(this.selectedSubView_));if(oldInput){oldInput.checked=false;}}\nthis.set('selectedSubView_',subView);if(subView){Polymer.dom(this.$.subView).appendChild(subView);const newInput=this.root.getElementById(this.computeRadioId_(subView));if(newInput){newInput.checked=true;}}\nthis.fire('selected-tab-change');},clearSubViews(){this.splice('subViews_',0,this.subViews_.length);this.selectedSubView=undefined;this.updateFocusability_();},addSubView(subView){this.push('subViews_',subView);if(!this.selectedSubView_)this.selectedSubView=subView;this.updateFocusability_();},get subViews(){return this.subViews_;},resetSubViews(subViews){this.splice('subViews_',0,this.subViews_.length);if(subViews.length){for(const subView of subViews){this.push('subViews_',subView);}\nthis.selectedSubView=subViews[0];}else{this.selectedSubView=undefined;}\nthis.updateFocusability_();},onTabChanged_(event){this.selectedSubView=event.model.item;},isChecked_(subView){return this.selectedSubView_===subView;},tabsHiddenChanged_(){this.updateFocusability_();},onKeyDown_(e){if(this.tabsHidden)return;let keyHandled=false;switch(e.keyCode){case 37:keyHandled=this.selectPreviousTabIfPossible();break;case 39:keyHandled=this.selectNextTabIfPossible();break;}\nif(!keyHandled)return;e.stopPropagation();e.preventDefault();},selectNextTabIfPossible(){return this.selectTabByOffsetIfPossible_(1);},selectPreviousTabIfPossible(){return this.selectTabByOffsetIfPossible_(-1);},selectTabByOffsetIfPossible_(offset){if(!this.selectedSubView_)return false;const currentIndex=this.subViews_.indexOf(this.selectedSubView_);const newSubView=this.tabs[currentIndex+offset];if(!newSubView)return false;this.selectedSubView=newSubView;return true;},shouldBeFocusable_(){return!this.tabsHidden&&this.subViews_.length>0;},updateFocusability_(){if(this.shouldBeFocusable_()){Polymer.dom(this.$.tabs).setAttribute('tabindex',0);}else{Polymer.dom(this.$.tabs).removeAttribute('tabindex');}},computeRadioId_(subView){return subView.tagName+'-'+subView.tabLabel.replace(/ /g,'-');}});'use strict';tr.exportTo('tr.ui.analysis',function(){const RESONABLE_NUMBER_OF_ROWS=200;const TabUiState={NO_LONG_TAIL:0,HIDING_LONG_TAIL:1,SHOWING_LONG_TAIL:2,};function EmptyFillerColumn(){}\nEmptyFillerColumn.prototype={title:'',value(){return'';},};Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.displayedNode_=undefined;this.dimensionToTab_=new Map();},ready(){this.scheduleRebuild_();this.root.addEventListener('keydown',this.onKeyDown_.bind(this),true);},get displayedNode(){return this.displayedNode_;},set displayedNode(node){this.displayedNode_=node;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;for(const tab of this.$.tabs.tabs){tab.aggregationMode=aggregationMode;}},onRebuild_(){const previouslySelectedTab=this.$.tabs.selectedSubView;let previouslySelectedTabFocused=false;let previouslySelectedDimension=undefined;if(previouslySelectedTab){previouslySelectedTabFocused=previouslySelectedTab.isFocused;previouslySelectedDimension=previouslySelectedTab.dimension;}\nfor(const tab of this.$.tabs.tabs){tab.nodes=undefined;}\nthis.$.tabs.clearSubViews();if(this.displayedNode_===undefined){this.$.tabs.label='No heap node provided.';return;}\nfor(const[dimension,children]of this.displayedNode_.childNodes){if(!this.dimensionToTab_.has(dimension)){this.dimensionToTab_.set(dimension,document.createElement('tr-ui-a-memory-dump-heap-details-breakdown-view-tab'));}\nconst tab=this.dimensionToTab_.get(dimension);tab.aggregationMode=this.aggregationMode_;tab.dimension=dimension;tab.nodes=children;this.$.tabs.addSubView(tab);tab.rebuild();if(dimension===previouslySelectedDimension){this.$.tabs.selectedSubView=tab;if(previouslySelectedTabFocused){tab.focus();}}}\nif(this.$.tabs.tabs.length>0){this.$.tabs.label='Break selected node further by:';}else{this.$.tabs.label='Selected node cannot be broken down any further.';}},onKeyDown_(keyEvent){if(!this.displayedNode_)return;let keyHandled=false;switch(keyEvent.keyCode){case 8:{if(!this.displayedNode_.parentNode)break;const viewEvent=new tr.b.Event('enter-node');viewEvent.node=this.displayedNode_.parentNode;this.dispatchEvent(viewEvent);keyHandled=true;break;}\ncase 37:case 39:{const wasFocused=this.$.tabs.selectedSubView.isFocused;keyHandled=keyEvent.keyCode===37?this.$.tabs.selectPreviousTabIfPossible():this.$.tabs.selectNextTabIfPossible();if(wasFocused&&keyHandled){this.$.tabs.selectedSubView.focus();}}}\nif(!keyHandled)return;keyEvent.stopPropagation();keyEvent.preventDefault();}});Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view-tab',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.dimension_=undefined;this.nodes_=undefined;this.aggregationMode_=undefined;this.displayLongTail_=false;},ready(){this.$.table.addEventListener('step-into',function(tableEvent){const viewEvent=new tr.b.Event('enter-node');viewEvent.node=tableEvent.tableRow;this.dispatchEvent(viewEvent);}.bind(this));},get displayLongTail(){return this.displayLongTail_;},set displayLongTail(newValue){if(this.displayLongTail===newValue)return;this.displayLongTail_=newValue;this.scheduleRebuild_();},get dimension(){return this.dimension_;},set dimension(dimension){this.dimension_=dimension;this.scheduleRebuild_();},get nodes(){return this.nodes_;},set nodes(nodes){this.nodes_=nodes;this.scheduleRebuild_();},get nodes(){return this.nodes_||[];},get dimensionLabel_(){if(this.dimension_===undefined)return'(undefined)';return this.dimension_.label;},get tabLabel(){let nodeCount=0;if(this.nodes_){nodeCount=this.nodes_.length;}\nreturn this.dimensionLabel_+' ('+nodeCount+')';},get tabIcon(){if(this.dimension_===undefined||this.dimension_===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return undefined;}\nreturn{text:this.dimension_.symbol,style:'color: '+tr.b.ColorScheme.getColorForReservedNameAsString(this.dimension_.color)+';'};},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},focus(){this.$.table.focus();},blur(){this.$.table.blur();},get isFocused(){return this.$.table.isFocused;},onRebuild_(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.emptyValue='Cannot break down by '+\nthis.dimensionLabel_.toLowerCase()+' any further.';const[state,rows]=this.getRows_();const total=this.nodes.length;const displayed=rows.length;const hidden=total-displayed;this.updateInfoBar_(state,[total,displayed,hidden]);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);if(this.$.table.sortColumnIndex===undefined){this.$.table.sortColumnIndex=0;this.$.table.sortDescending=false;}\nthis.$.table.rebuild();},createColumns_(rows){const titleColumn=new tr.ui.analysis.HeapDetailsTitleColumn(this.dimensionLabel_);titleColumn.width='400px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});if(numericColumns.length===0){numericColumns.push(new EmptyFillerColumn());}\ntr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);const columns=[titleColumn].concat(numericColumns);return columns;},getRows_(){let rows=this.nodes;if(rows.length<=RESONABLE_NUMBER_OF_ROWS){return[TabUiState.NO_LONG_TAIL,rows];}else if(this.displayLongTail){return[TabUiState.SHOWING_LONG_TAIL,rows];}\nconst absSize=row=>Math.max(row.cells.Size.fields[0].value);rows.sort((a,b)=>absSize(b)-absSize(a));rows=rows.slice(0,RESONABLE_NUMBER_OF_ROWS);return[TabUiState.HIDING_LONG_TAIL,rows];},updateInfoBar_(state,rowStats){if(state===TabUiState.SHOWING_LONG_TAIL){this.longTailVisibleInfoBar_(rowStats);}else if(state===TabUiState.HIDING_LONG_TAIL){this.longTailHiddenInfoBar_(rowStats);}else{this.hideInfoBar_();}},longTailVisibleInfoBar_(rowStats){const[total,visible,hidden]=rowStats;const couldHide=total-RESONABLE_NUMBER_OF_ROWS;this.$.info.message='Showing '+total+' rows. This may be slow.';this.$.info.removeAllButtons();const buttonText='Hide '+couldHide+' rows.';this.$.info.addButton(buttonText,()=>this.displayLongTail=false);this.$.info.visible=true;},longTailHiddenInfoBar_(rowStats){const[total,visible,hidden]=rowStats;this.$.info.message='Hiding the smallest '+hidden+' rows.';this.$.info.removeAllButtons();this.$.info.addButton('Show all.',()=>this.displayLongTail=true);this.$.info.visible=true;},hideInfoBar_(){this.$.info.visible=false;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS=String.fromCharCode(0x21B3);function HeapDetailsPathColumn(title){tr.ui.analysis.HeapDetailsTitleColumn.call(this,title);}\nHeapDetailsPathColumn.prototype={__proto__:tr.ui.analysis.HeapDetailsTitleColumn.prototype,formatTitle(row){const title=tr.ui.analysis.HeapDetailsTitleColumn.prototype.formatTitle.call(this,row);if(row.dimension===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return title;}\nconst arrowEl=document.createElement('span');Polymer.dom(arrowEl).textContent=DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS;arrowEl.style.paddingRight='2px';arrowEl.style.fontWeight='bold';arrowEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString('heap_dump_child_node_arrow');const rowEl=document.createElement('span');Polymer.dom(rowEl).appendChild(arrowEl);Polymer.dom(rowEl).appendChild(tr.ui.b.asHTMLOrTextNode(title));return rowEl;}};Polymer({is:'tr-ui-a-memory-dump-heap-details-path-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.selectedNode_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.addEventListener('selection-changed',function(event){this.selectedNode_=this.$.table.selectedTableRow;this.didSelectedNodeChange_();}.bind(this));},didSelectedNodeChange_(){this.dispatchEvent(new tr.b.Event('selected-node-changed'));},get selectedNode(){return this.selectedNode_;},set selectedNode(node){this.selectedNode_=node;this.didSelectedNodeChange_();this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},onRebuild_(){if(this.selectedNode_===undefined){this.$.table.clear();return;}\nif(this.$.table.tableRows.includes(this.selectedNode_)){this.$.table.selectedTableRow=this.selectedNode_;return;}\nthis.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.userCanModifySortOrder=false;const rows=this.createRows_(this.selectedNode_);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);this.$.table.selectedTableRow=rows[rows.length-1];},createRows_(node){const rows=[];while(node){rows.push(node);node=node.parentNode;}\nrows.reverse();return rows;},createColumns_(rows){const titleColumn=new HeapDetailsPathColumn('Current path');titleColumn.width='200px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});tr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);return[titleColumn].concat(numericColumns);}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const StackedPaneImpl={set childPaneBuilder(childPaneBuilder){this.childPaneBuilder_=childPaneBuilder;this.dispatchEvent(new tr.b.Event('request-child-pane-change'));},get childPaneBuilder(){return this.childPaneBuilder_;},appended(){this.rebuild();}};const StackedPane=[tr.ui.analysis.RebuildableBehavior,StackedPaneImpl];return{StackedPane,};});Polymer({is:'tr-ui-a-stacked-pane',behaviors:[tr.ui.analysis.StackedPane]});'use strict';Polymer({is:'tr-ui-b-drag-handle',created(){this.lastMousePos_=0;this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.target_=undefined;this.horizontal=true;this.observer_=new MutationObserver(this.didTargetMutate_.bind(this));this.targetSizesByModeKey_={};this.currentDraggingSize_=undefined;},get modeKey_(){return this.target_.className===''?'.':this.target_.className;},get target(){return this.target_;},set target(target){this.observer_.disconnect();this.target_=target;if(!this.target_)return;this.observer_.observe(this.target_,{attributes:true,attributeFilter:['class']});},get horizontal(){return this.horizontal_;},set horizontal(h){this.horizontal_=h;if(this.horizontal_){this.className='horizontal-drag-handle';}else{this.className='vertical-drag-handle';}},get vertical(){return!this.horizontal_;},set vertical(v){this.horizontal=!v;},forceMutationObserverFlush_(){const records=this.observer_.takeRecords();if(records.length){this.didTargetMutate_(records);}},didTargetMutate_(e){const modeSize=this.targetSizesByModeKey_[this.modeKey_];if(modeSize!==undefined){this.setTargetSize_(modeSize);return;}\nthis.target_.style[this.targetStyleKey_]='';},get targetStyleKey_(){return this.horizontal_?'height':'width';},getTargetSize_(){const size=parseInt(window.getComputedStyle(this.target_)[this.targetStyleKey_]);this.targetSizesByModeKey_[this.modeKey_]=size;return size;},setTargetSize_(s){this.target_.style[this.targetStyleKey_]=s+'px';this.targetSizesByModeKey_[this.modeKey_]=this.getTargetSize_();tr.b.dispatchSimpleEvent(this,'drag-handle-resize',true,false);},applyDelta_(delta){if(this.target_===this.nextElementSibling){this.currentDraggingSize_+=delta;}else{this.currentDraggingSize_-=delta;}\nthis.setTargetSize_(this.currentDraggingSize_);},onMouseMove_(e){const curMousePos=this.horizontal_?e.clientY:e.clientX;const delta=this.lastMousePos_-curMousePos;this.applyDelta_(delta);this.lastMousePos_=curMousePos;e.preventDefault();return true;},onMouseDown_(e){if(!this.target_)return;this.forceMutationObserverFlush_();this.currentDraggingSize_=this.getTargetSize_();this.lastMousePos_=this.horizontal_?e.clientY:e.clientX;document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);e.preventDefault();return true;},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);e.preventDefault();this.currentDraggingSize_=undefined;}});'use strict';tr.exportTo('tr.ui.analysis',function(){const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;const TotalState=tr.b.MultiDimensionalViewNode.TotalState;function HeapDumpTreeNode(stackFrameNodes,dimension,title,heavyView,parentNode){this.dimension=dimension;this.title=title;this.parentNode=parentNode;this.heavyView_=heavyView;this.stackFrameNodes_=stackFrameNodes;this.lazyCells_=undefined;this.lazyChildNodes_=undefined;}\nHeapDumpTreeNode.prototype={get minDisplayedTotalState_(){if(this.heavyView_){return TotalState.LOWER_BOUND;}\nreturn TotalState.EXACT;},get childNodes(){if(!this.lazyChildNodes_){this.lazyChildNodes_=new Map();this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.STACK_FRAME,0);this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.OBJECT_TYPE,1);this.releaseStackFrameNodesIfPossible_();}\nreturn this.lazyChildNodes_;},get cells(){if(!this.lazyCells_){this.addCells_();this.releaseStackFrameNodesIfPossible_();}\nreturn this.lazyCells_;},releaseStackFrameNodesIfPossible_(){if(this.lazyCells_&&this.lazyChildNodes_){this.stackFrameNodes_=undefined;}},addDimensionChildNodes_(dimension,dimensionIndex){const dimensionChildTitleToStackFrameNodes=tr.b.invertArrayOfDicts(this.stackFrameNodes_,node=>this.convertStackFrameNodeDimensionToChildDict_(node,dimensionIndex));const dimensionChildNodes=[];for(const[childTitle,childStackFrameNodes]of\nObject.entries(dimensionChildTitleToStackFrameNodes)){dimensionChildNodes.push(new HeapDumpTreeNode(childStackFrameNodes,dimension,childTitle,this.heavyView_,this));}\nthis.lazyChildNodes_.set(dimension,dimensionChildNodes);},convertStackFrameNodeDimensionToChildDict_(stackFrameNode,dimensionIndex){const childDict={};let displayedChildrenTotalSize=0;let displayedChildrenTotalCount=0;let hasDisplayedChildren=false;let allDisplayedChildrenHaveDisplayedCounts=true;for(const child of stackFrameNode.children[dimensionIndex].values()){if(child.values[0].totalState<this.minDisplayedTotalState_){continue;}\nif(child.values[1].totalState<this.minDisplayedTotalState_){allDisplayedChildrenHaveDisplayedCounts=false;}\nchildDict[child.title[dimensionIndex]]=child;displayedChildrenTotalSize+=child.values[0].total;displayedChildrenTotalCount+=child.values[1].total;hasDisplayedChildren=true;}\nconst nodeTotalSize=stackFrameNode.values[0].total;const nodeTotalCount=stackFrameNode.values[1].total;const hasUnclassifiedSizeOrCount=displayedChildrenTotalSize<nodeTotalSize||displayedChildrenTotalCount<nodeTotalCount;if(!this.heavyView_&&hasUnclassifiedSizeOrCount&&hasDisplayedChildren){const otherTitle=stackFrameNode.title.slice();otherTitle[dimensionIndex]='<other>';const otherNode=new tr.b.MultiDimensionalViewNode(otherTitle,2);childDict[otherTitle[dimensionIndex]]=otherNode;otherNode.values[0].total=nodeTotalSize-displayedChildrenTotalSize;otherNode.values[0].totalState=this.minDisplayedTotalState_;otherNode.values[1].total=nodeTotalCount-displayedChildrenTotalCount;otherNode.values[1].totalState=allDisplayedChildrenHaveDisplayedCounts?this.minDisplayedTotalState_:TotalState.NOT_PROVIDED;}\nreturn childDict;},addCells_(){this.lazyCells_=tr.ui.analysis.createCells(this.stackFrameNodes_,function(stackFrameNode){const size=stackFrameNode.values[0].total;const numerics={'Size':new Scalar(sizeInBytes_smallerIsBetter,size)};const countValue=stackFrameNode.values[1];if(countValue.totalState>=this.minDisplayedTotalState_){const count=countValue.total;numerics.Count=new Scalar(count_smallerIsBetter,count);}\nreturn numerics;},this);}};Polymer({is:'tr-ui-a-memory-dump-heap-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.heapDumps_=undefined;this.viewMode_=undefined;this.aggregationMode_=undefined;this.cachedBuilders_=new Map();},ready(){this.$.info_bar.message='Note: Values displayed in the heavy view '+'are lower bounds (except for the root).';Polymer.dom(this.$.view_mode_container).appendChild(tr.ui.b.createSelector(this,'viewMode','memoryDumpHeapDetailsPane.viewMode',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]));this.$.drag_handle.target=this.$.path_view;this.$.drag_handle.horizontal=false;this.$.path_view.addEventListener('selected-node-changed',(function(e){this.$.breakdown_view.displayedNode=this.$.path_view.selectedNode;}).bind(this));this.$.breakdown_view.addEventListener('enter-node',(function(e){this.$.path_view.selectedNode=e.node;}).bind(this));},set heapDumps(heapDumps){this.heapDumps_=heapDumps;this.scheduleRebuild_();},get heapDumps(){return this.heapDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.$.path_view.aggregationMode=aggregationMode;this.$.breakdown_view.aggregationMode=aggregationMode;},get aggregationMode(){return this.aggregationMode_;},set viewMode(viewMode){this.viewMode_=viewMode;this.scheduleRebuild_();},get viewMode(){return this.viewMode_;},get heavyView(){switch(this.viewMode){case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW:case MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW:return true;default:return false;}},onRebuild_(){if(this.heapDumps_===undefined||this.heapDumps_.length===0){this.$.info_text.style.display='block';this.$.split_view.style.display='none';this.$.view_mode_container.style.display='none';this.$.info_bar.hidden=true;this.$.path_view.selectedNode=undefined;return;}\nthis.$.info_text.style.display='none';this.$.split_view.style.display='flex';this.$.view_mode_container.style.display='block';this.$.info_bar.hidden=!this.heavyView;this.$.path_view.selectedNode=this.createHeapTree_();this.$.path_view.rebuild();this.$.breakdown_view.rebuild();},createHeapTree_(){const definedHeapDump=this.heapDumps_.find(x=>x);if(definedHeapDump===undefined)return undefined;const rootRowTitle=definedHeapDump.allocatorName;const stackFrameTrees=this.createStackFrameTrees_(this.heapDumps_);return new HeapDumpTreeNode(stackFrameTrees,tr.ui.analysis.HeapDetailsRowDimension.ROOT,rootRowTitle,this.heavyView);},createStackFrameTrees_(heapDumps){const builders=heapDumps.map(heapDump=>this.createBuilder_(heapDump));const views=builders.map(builder=>{if(builder===undefined)return undefined;return builder.buildView(this.viewMode);});return views;},createBuilder_(heapDump){if(heapDump===undefined)return undefined;if(this.cachedBuilders_.has(heapDump)){return this.cachedBuilders_.get(heapDump);}\nconst dimensions=2;const valueCount=2;const builder=new MultiDimensionalViewBuilder(dimensions,valueCount);for(const entry of heapDump.entries){const leafStackFrame=entry.leafStackFrame;const stackTracePath=leafStackFrame===undefined?[]:leafStackFrame.getUserFriendlyStackTrace().reverse();const objectTypeName=entry.objectTypeName;const objectTypeNamePath=objectTypeName===undefined?[]:[objectTypeName];const valueKind=entry.valuesAreTotals?MultiDimensionalViewBuilder.ValueKind.TOTAL:MultiDimensionalViewBuilder.ValueKind.SELF;builder.addPath([stackTracePath,objectTypeNamePath],[entry.size,entry.count],valueKind);}\nbuilder.complete=heapDump.isComplete;this.cachedBuilders_.set(heapDump,builder);return builder;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const URL_TO_SIZE_VS_EFFECTIVE_SIZE='https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/README.md#effective_size-vs_size';const SUBALLOCATION_CONTEXT=true;const MemoryAllocatorDumpInfoType=tr.model.MemoryAllocatorDumpInfoType;const PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN;const PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER;const LEFTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FD);const RIGHTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FE);const EN_DASH=String.fromCharCode(0x2013);const CIRCLED_LATIN_SMALL_LETTER_I=String.fromCharCode(0x24D8);function AllocatorDumpNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Component');}\nAllocatorDumpNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(!row.suballocation){return row.title;}\nreturn tr.ui.b.createSpan({textContent:row.title,italic:true,tooltip:row.fullNames===undefined?undefined:row.fullNames.join(', ')});}};function getAndUpdateEntry(map,name,createdCallback){let entry=map.get(name);if(entry===undefined){entry={count:0};createdCallback(entry);map.set(name,entry);}\nentry.count++;return entry;}\nfunction SizeInfoMessageBuilder(){this.parts_=[];this.indent_=0;}\nSizeInfoMessageBuilder.prototype={append(){this.parts_.push.apply(this.parts_,Array.prototype.slice.apply(arguments));},appendMap(map,hasPluralSuffix,emptyText,itemCallback,opt_this){opt_this=opt_this||this;if(map.size===0){if(emptyText){this.append(emptyText);}}else if(map.size===1){this.parts_.push(' ');const key=map.keys().next().value;itemCallback.call(opt_this,key,map.get(key));}else{if(hasPluralSuffix){this.parts_.push('s');}\nthis.parts_.push(':');this.indent_++;for(const key of map.keys()){this.parts_.push('\\n',' '.repeat(3*(this.indent_-1)),' - ');itemCallback.call(opt_this,key,map.get(key));}\nthis.indent_--;}},appendImportanceRange(range){this.append(' (importance: ');if(range.min===range.max){this.append(range.min);}else{this.append(range.min,EN_DASH,range.max);}\nthis.append(')');},appendSizeIfDefined(size){if(size!==undefined){this.append(' (',tr.b.Unit.byName.sizeInBytes.format(size),')');}},appendSomeTimestampsQuantifier(){this.append(' ',tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER);},build(){return this.parts_.join('');}};function EffectiveSizeColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nEffectiveSizeColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,get title(){return tr.ui.b.createLink({textContent:this.name,tooltip:'Memory used by this component',href:URL_TO_SIZE_VS_EFFECTIVE_SIZE});},addInfos(numerics,memoryAllocatorDumps,infos){if(memoryAllocatorDumps===undefined)return;const ownerNameToEntry=new Map();const ownedNameToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\ndump.ownedBy.forEach(function(ownerLink){const ownerDump=ownerLink.source;this.getAndUpdateOwnershipEntry_(ownerNameToEntry,ownerDump,ownerLink);},this);const ownedLink=dump.owns;if(ownedLink!==undefined){const ownedDump=ownedLink.target;const ownedEntry=this.getAndUpdateOwnershipEntry_(ownedNameToEntry,ownedDump,ownedLink,true);const sharerNameToEntry=ownedEntry.sharerNameToEntry;ownedDump.ownedBy.forEach(function(sharerLink){const sharerDump=sharerLink.source;if(sharerDump===dump)return;this.getAndUpdateOwnershipEntry_(sharerNameToEntry,sharerDump,sharerLink);},this);}}\nif(ownerNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shared by');messageBuilder.appendMap(ownerNameToEntry,false,undefined,function(ownerName,ownerEntry){messageBuilder.append(ownerName);if(ownerEntry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(ownerEntry.importanceRange);},this);infos.push({message:messageBuilder.build(),icon:LEFTWARDS_OPEN_HEADED_ARROW,color:'green'});}\nif(ownedNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shares');messageBuilder.appendMap(ownedNameToEntry,false,undefined,function(ownedName,ownedEntry){messageBuilder.append(ownedName);const ownedCount=ownedEntry.count;if(ownedCount<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(ownedEntry.importanceRange);messageBuilder.append(' with');messageBuilder.appendMap(ownedEntry.sharerNameToEntry,false,' no other dumps',function(sharerName,sharerEntry){messageBuilder.append(sharerName);if(sharerEntry.count<ownedCount){messageBuilder.appendSomeTimestampsQuantifier();}\nmessageBuilder.appendImportanceRange(sharerEntry.importanceRange);},this);},this);infos.push({message:messageBuilder.build(),icon:RIGHTWARDS_OPEN_HEADED_ARROW,color:'green'});}},getAndUpdateOwnershipEntry_(map,dump,link,opt_withSharerNameToEntry){const entry=getAndUpdateEntry(map,dump.quantifiedName,function(newEntry){newEntry.importanceRange=new tr.b.math.Range();if(opt_withSharerNameToEntry){newEntry.sharerNameToEntry=new Map();}});entry.importanceRange.addValue(link.importance||0);return entry;}};function SizeColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nSizeColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,get title(){return tr.ui.b.createLink({textContent:this.name,tooltip:'Memory requested by this component',href:URL_TO_SIZE_VS_EFFECTIVE_SIZE});},addInfos(numerics,memoryAllocatorDumps,infos){if(memoryAllocatorDumps===undefined)return;this.addOverlapInfo_(numerics,memoryAllocatorDumps,infos);this.addProvidedSizeWarningInfos_(numerics,memoryAllocatorDumps,infos);},addOverlapInfo_(numerics,memoryAllocatorDumps,infos){const siblingNameToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\nconst ownedBySiblingSizes=dump.ownedBySiblingSizes;for(const siblingDump of ownedBySiblingSizes.keys()){const siblingName=siblingDump.name;getAndUpdateEntry(siblingNameToEntry,siblingName,function(newEntry){if(numerics.length===1){newEntry.size=ownedBySiblingSizes.get(siblingDump);}});}}\nif(siblingNameToEntry.size>0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('overlaps with its sibling');messageBuilder.appendMap(siblingNameToEntry,true,undefined,function(siblingName,siblingEntry){messageBuilder.append('\\'',siblingName,'\\'');messageBuilder.appendSizeIfDefined(siblingEntry.size);if(siblingEntry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}},this);infos.push({message:messageBuilder.build(),icon:CIRCLED_LATIN_SMALL_LETTER_I,color:'blue'});}},addProvidedSizeWarningInfos_(numerics,memoryAllocatorDumps,infos){const infoTypeToEntry=new Map();for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;const dump=memoryAllocatorDumps[i];if(dump===SUBALLOCATION_CONTEXT){return;}\ndump.infos.forEach(function(dumpInfo){getAndUpdateEntry(infoTypeToEntry,dumpInfo.type,function(newEntry){if(numerics.length===1){newEntry.providedSize=dumpInfo.providedSize;newEntry.dependencySize=dumpInfo.dependencySize;}});});}\nfor(const infoType of infoTypeToEntry.keys()){const entry=infoTypeToEntry.get(infoType);const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('provided size');messageBuilder.appendSizeIfDefined(entry.providedSize);let dependencyName;switch(infoType){case PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN:dependencyName='the aggregated size of the children';break;case PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER:dependencyName='the size of the largest owner';break;default:dependencyName='an unknown dependency';break;}\nmessageBuilder.append(' was less than ',dependencyName);messageBuilder.appendSizeIfDefined(entry.dependencySize);if(entry.count<numerics.length){messageBuilder.appendSomeTimestampsQuantifier();}\ninfos.push(tr.ui.analysis.createWarningInfo(messageBuilder.build()));}}};const NUMERIC_COLUMN_RULES=[{condition:tr.model.MemoryAllocatorDump.EFFECTIVE_SIZE_NUMERIC_NAME,importance:10,columnConstructor:EffectiveSizeColumn},{condition:tr.model.MemoryAllocatorDump.SIZE_NUMERIC_NAME,importance:9,columnConstructor:SizeColumn},{condition:'page_size',importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:/size/,importance:5,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];const DIAGNOSTIC_COLUMN_RULES=[{importance:0,columnConstructor:tr.ui.analysis.StringMemoryColumn}];Polymer({is:'tr-ui-a-memory-dump-allocator-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.memoryAllocatorDumps_=undefined;this.heapDumps_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},set memoryAllocatorDumps(memoryAllocatorDumps){this.memoryAllocatorDumps_=memoryAllocatorDumps;this.scheduleRebuild_();},get memoryAllocatorDumps(){return this.memoryAllocatorDumps_;},set heapDumps(heapDumps){this.heapDumps_=heapDumps;this.scheduleRebuild_();},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){if(this.memoryAllocatorDumps_===undefined||this.memoryAllocatorDumps_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();this.childPaneBuilder=undefined;return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_();const columns=this.createColumns_(rows);rows.forEach(function(rootRow){tr.ui.analysis.aggregateTableRowCellsRecursively(rootRow,columns,function(contexts){return contexts!==undefined&&contexts.some(function(context){return context===SUBALLOCATION_CONTEXT;});});});this.$.table.tableRows=rows;this.$.table.tableColumns=columns;this.$.table.rebuild();tr.ui.analysis.expandTableRowsRecursively(this.$.table);if(this.heapDumps_===undefined){this.childPaneBuilder=undefined;}else{this.childPaneBuilder=function(){const pane=document.createElement('tr-ui-a-memory-dump-heap-details-pane');pane.heapDumps=this.heapDumps_;pane.aggregationMode=this.aggregationMode_;return pane;}.bind(this);}},createRows_(){return[this.createAllocatorRowRecursively_(this.memoryAllocatorDumps_)];},createAllocatorRowRecursively_(dumps){const definedDump=dumps.find(x=>x);const title=definedDump.name;const fullName=definedDump.fullName;const numericCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.numerics;});const diagnosticCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.diagnostics;});let suballocatedBy=undefined;if(title.startsWith('__')){for(let i=0;i<dumps.length;i++){const dump=dumps[i];if(dump===undefined||dump.ownedBy.length===0){continue;}\nconst ownerDump=dump.ownedBy[0].source;if(dump.ownedBy.length>1||dump.children.length>0||ownerDump.containerMemoryDump!==dump.containerMemoryDump){suballocatedBy=undefined;break;}\nif(suballocatedBy===undefined){suballocatedBy=ownerDump.fullName;}else if(suballocatedBy!==ownerDump.fullName){suballocatedBy=undefined;break;}}}\nconst row={title,fullNames:[fullName],contexts:dumps,numericCells,diagnosticCells,suballocatedBy};const childDumpNameToDumps=tr.b.invertArrayOfDicts(dumps,function(dump){const results={};for(const child of dump.children){results[child.name]=child;}\nreturn results;});const subRows=[];let suballocationClassificationRootNode=undefined;for(const childDumps of Object.values(childDumpNameToDumps)){const childRow=this.createAllocatorRowRecursively_(childDumps);if(childRow.suballocatedBy===undefined){subRows.push(childRow);}else{suballocationClassificationRootNode=this.classifySuballocationRow_(childRow,suballocationClassificationRootNode);}}\nif(suballocationClassificationRootNode!==undefined){const suballocationRow=this.createSuballocationRowRecursively_('suballocations',suballocationClassificationRootNode);subRows.push(suballocationRow);}\nif(subRows.length>0){row.subRows=subRows;}\nreturn row;},classifySuballocationRow_(suballocationRow,rootNode){if(rootNode===undefined){rootNode={children:{},row:undefined};}\nconst suballocationLevels=suballocationRow.suballocatedBy.split('/');let currentNode=rootNode;for(let i=0;i<suballocationLevels.length;i++){const suballocationLevel=suballocationLevels[i];let nextNode=currentNode.children[suballocationLevel];if(nextNode===undefined){currentNode.children[suballocationLevel]=nextNode={children:{},row:undefined};}\ncurrentNode=nextNode;}\nconst existingRow=currentNode.row;if(existingRow!==undefined){for(let i=0;i<suballocationRow.contexts.length;i++){const newContext=suballocationRow.contexts[i];if(newContext===undefined)continue;if(existingRow.contexts[i]!==undefined){throw new Error('Multiple suballocations with the same owner name');}\nexistingRow.contexts[i]=newContext;['numericCells','diagnosticCells'].forEach(function(cellKey){const suballocationCells=suballocationRow[cellKey];if(suballocationCells===undefined)return;for(const[cellName,cell]of Object.entries(suballocationCells)){if(cell===undefined)continue;const fields=cell.fields;if(fields===undefined)continue;const field=fields[i];if(field===undefined)continue;let existingCells=existingRow[cellKey];if(existingCells===undefined){existingCells={};existingRow[cellKey]=existingCells;}\nlet existingCell=existingCells[cellName];if(existingCell===undefined){existingCell=new tr.ui.analysis.MemoryCell(new Array(fields.length));existingCells[cellName]=existingCell;}\nexistingCell.fields[i]=field;}});}\nexistingRow.fullNames.push.apply(existingRow.fullNames,suballocationRow.fullNames);}else{currentNode.row=suballocationRow;}\nreturn rootNode;},createSuballocationRowRecursively_(name,node){const childCount=Object.keys(node.children).length;if(childCount===0){if(node.row===undefined){throw new Error('Suballocation node must have a row or children');}\nconst row=node.row;row.title=name;row.suballocation=true;return row;}\nconst subRows=[];for(const[subName,subNode]of Object.entries(node.children)){subRows.push(this.createSuballocationRowRecursively_(subName,subNode));}\nif(node.row!==undefined){const row=node.row;row.title='<unspecified>';row.suballocation=true;subRows.unshift(row);}\nconst contexts=new Array(subRows[0].contexts.length);for(let i=0;i<subRows.length;i++){subRows[i].contexts.forEach(function(subContext,index){if(subContext!==undefined){contexts[index]=SUBALLOCATION_CONTEXT;}});}\nreturn{title:name,suballocation:true,contexts,subRows};},createColumns_(rows){const titleColumn=new AllocatorDumpNameColumn();titleColumn.width='200px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'numericCells',aggregationMode:this.aggregationMode_,rules:NUMERIC_COLUMN_RULES});const diagnosticColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'diagnosticCells',aggregationMode:this.aggregationMode_,rules:DIAGNOSTIC_COLUMN_RULES});const fieldColumns=numericColumns.concat(diagnosticColumns);tr.ui.analysis.MemoryColumn.spaceEqually(fieldColumns);const columns=[titleColumn].concat(fieldColumns);return columns;}});return{SUBALLOCATION_CONTEXT,AllocatorDumpNameColumn,EffectiveSizeColumn,SizeColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const CONSTANT_COLUMN_RULES=[{condition:'Start address',importance:0,columnConstructor:tr.ui.analysis.StringMemoryColumn}];const VARIABLE_COLUMN_RULES=[{condition:'Virtual size',importance:7,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Protection flags',importance:6,columnConstructor:tr.ui.analysis.StringMemoryColumn},{condition:'PSS',importance:5,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Private dirty',importance:4,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Private clean',importance:3,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Shared dirty',importance:2,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Shared clean',importance:1,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Swapped',importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];const BYTE_STAT_COLUMN_MAP={'proportionalResident':'PSS','privateDirtyResident':'Private dirty','privateCleanResident':'Private clean','sharedDirtyResident':'Shared dirty','sharedCleanResident':'Shared clean','swapped':'Swapped'};function hexString(address,is64BitAddress){if(address===undefined)return undefined;const hexPadding=is64BitAddress?'0000000000000000':'00000000';return(hexPadding+address.toString(16)).substr(-hexPadding.length);}\nfunction pruneEmptyRuleRows(row){if(row.subRows===undefined||row.subRows.length===0)return;if(row.subRows[0].rule===undefined){return;}\nrow.subRows.forEach(pruneEmptyRuleRows);row.subRows=row.subRows.filter(function(subRow){return subRow.subRows.length>0;});}\nPolymer({is:'tr-ui-a-memory-dump-vm-regions-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.vmRegions_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},set vmRegions(vmRegions){this.vmRegions_=vmRegions;this.scheduleRebuild_();},get vmRegions(){return this.vmRegions_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){if(this.vmRegions_===undefined||this.vmRegions_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_(this.vmRegions_);const columns=this.createColumns_(rows);this.$.table.tableRows=rows;this.$.table.tableColumns=columns;this.$.table.rebuild();tr.ui.analysis.expandTableRowsRecursively(this.$.table);},createRows_(timeToVmRegionTree){const is64BitAddress=timeToVmRegionTree.some(function(vmRegionTree){if(vmRegionTree===undefined)return false;return vmRegionTree.someRegion(function(region){if(region.startAddress===undefined)return false;return region.startAddress>=4294967296;});});return[this.createClassificationNodeRow(timeToVmRegionTree,is64BitAddress)];},createClassificationNodeRow(timeToNode,is64BitAddress){const definedNode=timeToNode.find(x=>x);const childNodeIdToTimeToNode=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const children=node.children;if(children===undefined)return undefined;const childMap={};children.forEach(function(childNode){if(!childNode.hasRegions)return;childMap[childNode.title]=childNode;});return childMap;}));const childNodeSubRows=childNodeIdToTimeToNode.map(function(timeToChildNode){return this.createClassificationNodeRow(timeToChildNode,is64BitAddress);},this);const regionIdToTimeToRegion=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const regions=node.regions;if(regions===undefined)return undefined;const results={};for(const region of regions){results[region.uniqueIdWithinProcess]=region;}\nreturn results;}));const regionSubRows=regionIdToTimeToRegion.map(function(timeToRegion){return this.createRegionRow_(timeToRegion,is64BitAddress);},this);const subRows=childNodeSubRows.concat(regionSubRows);return{title:definedNode.title,contexts:timeToNode,variableCells:this.createVariableCells_(timeToNode),subRows};},createRegionRow_(timeToRegion,is64BitAddress){const definedRegion=timeToRegion.find(x=>x);return{title:definedRegion.mappedFile,contexts:timeToRegion,constantCells:this.createConstantCells_(definedRegion,is64BitAddress),variableCells:this.createVariableCells_(timeToRegion)};},createConstantCells_(definedRegion,is64BitAddress){return tr.ui.analysis.createCells([definedRegion],function(region){const startAddress=region.startAddress;if(startAddress===undefined)return undefined;return{'Start address':hexString(startAddress,is64BitAddress)};});},createVariableCells_(timeToRegion){return tr.ui.analysis.createCells(timeToRegion,function(region){const fields={};const sizeInBytes=region.sizeInBytes;if(sizeInBytes!==undefined){fields['Virtual size']=new Scalar(sizeInBytes_smallerIsBetter,sizeInBytes);}\nconst protectionFlags=region.protectionFlagsToString;if(protectionFlags!==undefined){fields['Protection flags']=protectionFlags;}\nfor(const[byteStatName,columnName]of\nObject.entries(BYTE_STAT_COLUMN_MAP)){const byteStat=region.byteStats[byteStatName];if(byteStat===undefined)continue;fields[columnName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}\nreturn fields;});},createColumns_(rows){const titleColumn=new tr.ui.analysis.TitleColumn('Mapped file');titleColumn.width='200px';const constantColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'constantCells',aggregationMode:undefined,rules:CONSTANT_COLUMN_RULES});const variableColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'variableCells',aggregationMode:this.aggregationMode_,rules:VARIABLE_COLUMN_RULES});const fieldColumns=constantColumns.concat(variableColumns);tr.ui.analysis.MemoryColumn.spaceEqually(fieldColumns);const columns=[titleColumn].concat(fieldColumns);return columns;}});return{};});'use strict';Polymer({is:'tr-ui-b-color-legend',ready(){const blackSquareCharCode=9632;this.$.square.innerText=String.fromCharCode(blackSquareCharCode);this.label_=undefined;this.compoundEventSelectionState_=tr.model.CompoundEventSelectionState.NOT_SELECTED;},set compoundEventSelectionState(compoundEventSelectionState){this.compoundEventSelectionState_=compoundEventSelectionState;},get label(){return this.label_;},set label(label){if(label===undefined){this.setLabelAndColorId(undefined,undefined);return;}\nconst colorId=tr.b.ColorScheme.getColorIdForGeneralPurposeString(label);this.setLabelAndColorId(label,colorId);},setLabelAndColorId(label,colorId){this.label_=label;Polymer.dom(this.$.label).textContent='';Polymer.dom(this.$.label).appendChild(tr.ui.b.asHTMLOrTextNode(label));if(colorId===undefined){this.$.square.style.color='initial';}else{this.$.square.style.color=tr.b.ColorScheme.colorsAsStrings[colorId];}}});'use strict';Polymer({is:'tr-ui-b-view-specific-brushing-state',get viewId(){return this.getAttribute('view-id');},set viewId(viewId){Polymer.dom(this).setAttribute('view-id',viewId);},get(){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}\nconst brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return undefined;return brushingStateController.getViewSpecificBrushingState(viewId);},set(state){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}\nconst brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return;brushingStateController.changeViewSpecificBrushingState(viewId,state);}});'use strict';tr.exportTo('tr.ui.analysis',function(){const MemoryColumnColorScheme=tr.b.MemoryColumnColorScheme;const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX='_bytes';const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const SOME_TIMESTAMPS_INFO_QUANTIFIER=tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER;const RIGHTWARDS_ARROW_WITH_HOOK=String.fromCharCode(0x21AA);const RIGHTWARDS_ARROW_FROM_BAR=String.fromCharCode(0x21A6);const GREATER_THAN_OR_EQUAL_TO=String.fromCharCode(0x2265);const UNMARRIED_PARTNERSHIP_SYMBOL=String.fromCharCode(0x26AF);const TRIGRAM_FOR_HEAVEN=String.fromCharCode(0x2630);function lazyMap(list,fn,opt_this){opt_this=opt_this||this;let result=undefined;list.forEach(function(item,index){const value=fn.call(opt_this,item,index);if(value===undefined)return;if(result===undefined){result=new Array(list.length);}\nresult[index]=value;});return result;}\nfunction ProcessNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Process');}\nProcessNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.contexts===undefined){return row.title;}\nconst titleEl=document.createElement('tr-ui-b-color-legend');titleEl.label=row.title;return titleEl;}};function UsedMemoryColumn(name,cellPath,aggregationMode){tr.ui.analysis.NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nUsedMemoryColumn.COLOR=MemoryColumnColorScheme.getColor('used_memory_column').toString();UsedMemoryColumn.OLDER_COLOR=MemoryColumnColorScheme.getColor('older_used_memory_column').toString();UsedMemoryColumn.prototype={__proto__:tr.ui.analysis.NumericMemoryColumn.prototype,get title(){return tr.ui.b.createSpan({textContent:this.name,color:UsedMemoryColumn.COLOR});},getFormattingContext(unit){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.MEBI};},color(numerics,processMemoryDumps){return UsedMemoryColumn.COLOR;},getChildPaneBuilder(processMemoryDumps){if(processMemoryDumps===undefined)return undefined;const vmRegions=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined)return undefined;return pmd.mostRecentVmRegions;});if(vmRegions===undefined)return undefined;return function(){const pane=document.createElement('tr-ui-a-memory-dump-vm-regions-details-pane');pane.vmRegions=vmRegions;pane.aggregationMode=this.aggregationMode;return pane;}.bind(this);}};function PeakMemoryColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}\nPeakMemoryColumn.prototype={__proto__:UsedMemoryColumn.prototype,addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let resettableValueCount=0;let nonResettableValueCount=0;for(let i=0;i<numerics.length;i++){if(numerics[i]===undefined)continue;if(processMemoryDumps[i].arePeakResidentBytesResettable){resettableValueCount++;}else{nonResettableValueCount++;}}\nif(resettableValueCount>0&&nonResettableValueCount>0){infos.push(tr.ui.analysis.createWarningInfo('Both resettable and '+'non-resettable peak RSS values were provided by the process'));}else if(resettableValueCount>0){infos.push({icon:RIGHTWARDS_ARROW_WITH_HOOK,message:'Peak RSS since previous memory dump.'});}else{infos.push({icon:RIGHTWARDS_ARROW_FROM_BAR,message:'Peak RSS since process startup. Finer grained '+'peaks require a Linux kernel version '+\nGREATER_THAN_OR_EQUAL_TO+' 4.0.'});}}};function ByteStatColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}\nByteStatColumn.prototype={__proto__:UsedMemoryColumn.prototype,color(numerics,processMemoryDumps){if(processMemoryDumps===undefined){return UsedMemoryColumn.COLOR;}\nconst allOlderValues=processMemoryDumps.every(function(processMemoryDump){if(processMemoryDump===undefined)return true;return!processMemoryDump.hasOwnVmRegions;});if(allOlderValues){return UsedMemoryColumn.OLDER_COLOR;}\nreturn UsedMemoryColumn.COLOR;},addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let olderValueCount=0;for(let i=0;i<numerics.length;i++){const processMemoryDump=processMemoryDumps[i];if(processMemoryDump!==undefined&&!processMemoryDump.hasOwnVmRegions){olderValueCount++;}}\nif(olderValueCount===0){return;}\nconst infoQuantifier=olderValueCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push({message:'Older value'+infoQuantifier+' (only heavy (purple) memory dumps contain memory maps).',icon:UNMARRIED_PARTNERSHIP_SYMBOL});}};UsedMemoryColumn.RULES=[{condition:'Total resident',importance:10,columnConstructor:UsedMemoryColumn},{condition:'Peak total resident',importance:9,columnConstructor:PeakMemoryColumn},{condition:'PSS',importance:8,columnConstructor:ByteStatColumn},{condition:'Private dirty',importance:7,columnConstructor:ByteStatColumn},{condition:'Swapped',importance:6,columnConstructor:ByteStatColumn},{importance:0,columnConstructor:UsedMemoryColumn}];UsedMemoryColumn.TOTALS_MAP={'residentBytes':'Total resident','peakResidentBytes':'Peak total resident','privateFootprintBytes':'Private footprint',};UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP={'vm':'Total virtual','swp':'Swapped','pc':'Private clean','pd':'Private dirty','sc':'Shared clean','sd':'Shared dirty','gpu_egl':'GPU EGL','gpu_egl_pss':'GPU EGL PSS','gpu_gl':'GPU GL','gpu_gl_pss':'GPU GL PSS','gpu_etc':'GPU Other','gpu_etc_pss':'GPU Other PSS',};UsedMemoryColumn.BYTE_STAT_MAP={'proportionalResident':'PSS','privateDirtyResident':'Private dirty','swapped':'Swapped'};function AllocatorColumn(name,cellPath,aggregationMode){tr.ui.analysis.NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}\nAllocatorColumn.prototype={__proto__:tr.ui.analysis.NumericMemoryColumn.prototype,get title(){const titleEl=document.createElement('tr-ui-b-color-legend');titleEl.label=this.name;return titleEl;},getFormattingContext(unit){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.MEBI};},addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let heapDumpCount=0;let missingSizeCount=0;for(let i=0;i<processMemoryDumps.length;i++){const processMemoryDump=processMemoryDumps[i];if(processMemoryDump===undefined)continue;const heapDumps=processMemoryDump.heapDumps;if(heapDumps!==undefined&&heapDumps[this.name]!==undefined){heapDumpCount++;}\nconst allocatorDump=processMemoryDump.getMemoryAllocatorDumpByFullName(this.name);if(allocatorDump!==undefined&&allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME]===undefined){missingSizeCount++;}}\nif(heapDumpCount>0){const infoQuantifier=heapDumpCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push({message:'Heap dump provided'+infoQuantifier+'.',icon:TRIGRAM_FOR_HEAVEN});}\nif(missingSizeCount>0){const infoQuantifier=missingSizeCount<numerics.length?' '+SOME_TIMESTAMPS_INFO_QUANTIFIER:'';infos.push(tr.ui.analysis.createWarningInfo('Size was not provided'+infoQuantifier+'.'));}},getChildPaneBuilder(processMemoryDumps){if(processMemoryDumps===undefined)return undefined;const memoryAllocatorDumps=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined)return undefined;return pmd.getMemoryAllocatorDumpByFullName(this.name);},this);if(memoryAllocatorDumps===undefined)return undefined;const heapDumps=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined||pmd.heapDumps===undefined)return undefined;return pmd.heapDumps[this.name];},this);return function(){const pane=document.createElement('tr-ui-a-memory-dump-allocator-details-pane');pane.memoryAllocatorDumps=memoryAllocatorDumps;pane.heapDumps=heapDumps;pane.aggregationMode=this.aggregationMode;return pane;}.bind(this);}};function TracingColumn(name,cellPath,aggregationMode){AllocatorColumn.call(this,name,cellPath,aggregationMode);}\nTracingColumn.COLOR=MemoryColumnColorScheme.getColor('tracing_memory_column').toString();TracingColumn.prototype={__proto__:AllocatorColumn.prototype,get title(){return tr.ui.b.createSpan({textContent:this.name,color:TracingColumn.COLOR});},color(numerics,processMemoryDumps){return TracingColumn.COLOR;}};AllocatorColumn.RULES=[{condition:'tracing',importance:0,columnConstructor:TracingColumn},{importance:1,columnConstructor:AllocatorColumn}];Polymer({is:'tr-ui-a-memory-dump-overview-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.processMemoryDumps_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.CELL;this.$.table.addEventListener('selection-changed',function(tableEvent){tableEvent.stopPropagation();this.changeChildPane_();}.bind(this));},set processMemoryDumps(processMemoryDumps){this.processMemoryDumps_=processMemoryDumps;this.scheduleRebuild_();},get processMemoryDumps(){return this.processMemoryDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},get selectedMemoryCell(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){return undefined;}\nconst selectedTableRow=this.$.table.selectedTableRow;if(!selectedTableRow)return undefined;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex===undefined)return undefined;const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];const selectedMemoryCell=selectedColumn.cell(selectedTableRow);return selectedMemoryCell;},changeChildPane_(){this.storeSelection_();this.childPaneBuilder=this.determineChildPaneBuilderFromSelection_();},determineChildPaneBuilderFromSelection_(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){return undefined;}\nconst selectedTableRow=this.$.table.selectedTableRow;if(!selectedTableRow)return undefined;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex===undefined)return undefined;const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];return selectedColumn.getChildPaneBuilder(selectedTableRow.contexts);},onRebuild_(){if(this.processMemoryDumps_===undefined||this.processMemoryDumps_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();return;}\nthis.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_();const columns=this.createColumns_(rows);const footerRows=this.createFooterRows_(rows,columns);this.$.table.tableRows=rows;this.$.table.footerRows=footerRows;this.$.table.tableColumns=columns;this.$.table.rebuild();this.restoreSelection_();},createRows_(){const timeToPidToProcessMemoryDump=this.processMemoryDumps_;const pidToTimeToProcessMemoryDump=tr.b.invertArrayOfDicts(timeToPidToProcessMemoryDump);const rows=[];for(const[pid,timeToDump]of\nObject.entries(pidToTimeToProcessMemoryDump)){const process=timeToDump.find(x=>x).process;const usedMemoryCells=tr.ui.analysis.createCells(timeToDump,function(dump){const sizes={};const totals=dump.totals;if(totals!==undefined){for(const[totalName,cellName]of\nObject.entries(UsedMemoryColumn.TOTALS_MAP)){const total=totals[totalName];if(total===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,total);}\nconst platformSpecific=totals.platformSpecific;if(platformSpecific!==undefined){for(const[name,size]of Object.entries(platformSpecific)){let newName=name;if(UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name]===undefined){if(name.endsWith(PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX)){newName=name.substring(0,name.length-\nPLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX.length);}\nnewName=newName.replace('_',' ').trim();newName=newName.charAt(0).toUpperCase()+newName.slice(1);}else{newName=UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name];}\nsizes[newName]=new Scalar(sizeInBytes_smallerIsBetter,size);}}}\nconst vmRegions=dump.mostRecentVmRegions;if(vmRegions!==undefined){for(const[byteStatName,cellName]of\nObject.entries(UsedMemoryColumn.BYTE_STAT_MAP)){const byteStat=vmRegions.byteStats[byteStatName];if(byteStat===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}}\nreturn sizes;});const allocatorCells=tr.ui.analysis.createCells(timeToDump,function(dump){const memoryAllocatorDumps=dump.memoryAllocatorDumps;if(memoryAllocatorDumps===undefined)return undefined;const sizes={};memoryAllocatorDumps.forEach(function(allocatorDump){let rootDisplayedSizeNumeric=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(rootDisplayedSizeNumeric===undefined){rootDisplayedSizeNumeric=new Scalar(sizeInBytes_smallerIsBetter,0);}\nsizes[allocatorDump.fullName]=rootDisplayedSizeNumeric;});return sizes;});rows.push({title:process.userFriendlyName,contexts:timeToDump,usedMemoryCells,allocatorCells});}\nreturn rows;},createFooterRows_(rows,columns){if(rows.length<=1)return[];const totalRow={title:'Total'};tr.ui.analysis.aggregateTableRowCells(totalRow,rows,columns);return[totalRow];},createColumns_(rows){const titleColumn=new ProcessNameColumn();titleColumn.width='200px';const usedMemorySizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'usedMemoryCells',aggregationMode:this.aggregationMode_,rules:UsedMemoryColumn.RULES});const allocatorSizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'allocatorCells',aggregationMode:this.aggregationMode_,rules:AllocatorColumn.RULES});const sizeColumns=usedMemorySizeColumns.concat(allocatorSizeColumns);tr.ui.analysis.MemoryColumn.spaceEqually(sizeColumns);const columns=[titleColumn].concat(sizeColumns);return columns;},storeSelection_(){let selectedRowTitle;const selectedRow=this.$.table.selectedTableRow;if(selectedRow!==undefined){selectedRowTitle=selectedRow.title;}\nlet selectedColumnName;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex!==undefined){const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];selectedColumnName=selectedColumn.name;}\nthis.$.state.set({rowTitle:selectedRowTitle,columnName:selectedColumnName});},restoreSelection_(){const settings=this.$.state.get();if(settings===undefined||settings.rowTitle===undefined||settings.columnName===undefined){return;}\nconst selectedColumnIndex=this.$.table.tableColumns.findIndex(col=>col.name===settings.columnName);if(selectedColumnIndex===-1)return;const selectedRowTitle=settings.rowTitle;const selectedRow=this.$.table.tableRows.find(row=>row.title===selectedRowTitle);if(selectedRow===undefined)return;this.$.table.selectedTableRow=selectedRow;this.$.table.selectedColumnIndex=selectedColumnIndex;}});return{ProcessNameColumn,UsedMemoryColumn,PeakMemoryColumn,ByteStatColumn,AllocatorColumn,TracingColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-memory-dump-header-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.containerMemoryDumps_=undefined;},ready(){Polymer.dom(this.$.aggregation_mode_container).appendChild(tr.ui.b.createSelector(this,'aggregationMode','memoryDumpHeaderPane.aggregationMode',tr.ui.analysis.MemoryColumn.AggregationMode.DIFF,[{label:'Diff',value:tr.ui.analysis.MemoryColumn.AggregationMode.DIFF},{label:'Max',value:tr.ui.analysis.MemoryColumn.AggregationMode.MAX}]));},set containerMemoryDumps(containerMemoryDumps){this.containerMemoryDumps_=containerMemoryDumps;this.scheduleRebuild_();},get containerMemoryDumps(){return this.containerMemoryDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){this.updateLabel_();this.updateAggregationModeSelector_();this.changeChildPane_();},updateLabel_(){Polymer.dom(this.$.label).textContent='';if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){Polymer.dom(this.$.label).textContent='No memory dumps selected';return;}\nconst containerDumpCount=this.containerMemoryDumps_.length;const isMultiSelection=containerDumpCount>1;Polymer.dom(this.$.label).appendChild(document.createTextNode('Selected '+containerDumpCount+' memory dump'+\n(isMultiSelection?'s':'')+' in '+this.containerMemoryDumps_[0].containerName+' at '));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[0].start)));if(isMultiSelection){const ELLIPSIS=String.fromCharCode(8230);Polymer.dom(this.$.label).appendChild(document.createTextNode(ELLIPSIS));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[containerDumpCount-1].start)));}},updateAggregationModeSelector_(){let displayStyle;if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=1){displayStyle='none';}else{displayStyle='initial';}\nthis.$.aggregation_mode_container.style.display=displayStyle;},changeChildPane_(){this.childPaneBuilder=function(){if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){return undefined;}\nconst overviewPane=document.createElement('tr-ui-a-memory-dump-overview-pane');overviewPane.processMemoryDumps=this.containerMemoryDumps_.map(function(containerDump){return containerDump.processMemoryDumps;});overviewPane.aggregationMode=this.aggregationMode;return overviewPane;}.bind(this);}});return{};});'use strict';Polymer({is:'tr-ui-a-stacked-pane-view',setPaneBuilder(paneBuilder,opt_parentPane){const paneContainer=this.$.pane_container;if(opt_parentPane){if(!(opt_parentPane instanceof HTMLElement)){throw new Error('Parent pane must be an HTML element');}\nif(opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane must be a child of the pane container');}}\nwhile(Polymer.dom(paneContainer).lastElementChild!==null&&Polymer.dom(paneContainer).lastElementChild!==opt_parentPane){const removedPane=Polymer.dom(this.$.pane_container).lastElementChild;const listener=this.listeners_.get(removedPane);if(listener===undefined){throw new Error('No listener associated with pane');}\nthis.listeners_.delete(removedPane);removedPane.removeEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).removeChild(removedPane);}\nif(opt_parentPane&&opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane was removed from the pane container');}\nif(!paneBuilder)return;const pane=paneBuilder();if(!pane)return;if(!(pane instanceof HTMLElement)){throw new Error('Pane must be an HTML element');}\nconst listener=function(event){this.setPaneBuilder(pane.childPaneBuilder,pane);}.bind(this);if(!this.listeners_){this.listeners_=new WeakMap();}\nthis.listeners_.set(pane,listener);pane.addEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).appendChild(pane);pane.appended();},rebuild(){let currentPane=Polymer.dom(this.$.pane_container).firstElementChild;while(currentPane){currentPane.rebuild();currentPane=currentPane.nextElementSibling;}},get panesForTesting(){const panes=[];let currentChild=Polymer.dom(this.$.pane_container).firstElementChild;while(currentChild){panes.push(currentChild);currentChild=currentChild.nextElementSibling;}\nreturn panes;}});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-container-memory-dump-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],set selection(selection){if(selection===undefined){this.currentSelection_=undefined;this.dumpsByContainerName_=undefined;this.updateContents_();return;}\nselection.forEach(function(event){if(!(event instanceof tr.model.ContainerMemoryDump)){throw new Error('Memory dump sub-view only supports container memory dumps');}});this.currentSelection_=selection;this.dumpsByContainerName_=tr.b.groupIntoMap(this.currentSelection_.toArray(),dump=>dump.containerName);for(const dumps of this.dumpsByContainerName_.values()){dumps.sort((a,b)=>a.start-b.start);}\nthis.updateContents_();},get selection(){return this.currentSelection_;},get requiresTallView(){return true;},updateContents_(){Polymer.dom(this.$.content).textContent='';if(this.dumpsByContainerName_===undefined)return;const containerNames=Array.from(this.dumpsByContainerName_.keys());if(containerNames.length===0)return;if(containerNames.length>1){this.buildViewForMultipleContainerNames_();}else{this.buildViewForSingleContainerName_();}},buildViewForSingleContainerName_(){const containerMemoryDumps=tr.b.getFirstElement(this.dumpsByContainerName_.values());const dumpView=unwrap(this.ownerDocument).createElement('tr-ui-a-stacked-pane-view');Polymer.dom(this.$.content).appendChild(dumpView);dumpView.setPaneBuilder(function(){const headerPane=document.createElement('tr-ui-a-memory-dump-header-pane');headerPane.containerMemoryDumps=containerMemoryDumps;return headerPane;});},buildViewForMultipleContainerNames_(){const ownerDocument=this.ownerDocument;const rows=[];for(const[containerName,dumps]of this.dumpsByContainerName_){rows.push({containerName,subRows:dumps,isExpanded:true,});}\nrows.sort(function(a,b){return a.containerName.localeCompare(b.containerName);});const columns=[{title:'Dump',value(row){if(row.subRows===undefined){return this.singleDumpValue_(row);}\nreturn this.groupedDumpValue_(row);},singleDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet([row]));Polymer.dom(linkEl).appendChild(tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument}));return linkEl;},groupedDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(row.subRows));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.subRows.length+' memory dump'+\n(row.subRows.length===1?'':'s')+' in '}));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.containerName,bold:true}));return linkEl;}}];const table=unwrap(this.ownerDocument).createElement('tr-ui-b-table');table.tableColumns=columns;table.tableRows=rows;table.showHeader=false;table.rebuild();Polymer.dom(this.$.content).appendChild(table);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:false,title:'Global Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:true,title:'Global Memory Dumps',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:false,title:'Process Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:true,title:'Process Memory Dumps',});return{};});'use strict';(function(){const COUNTER_SAMPLE_TABLE_COLUMNS=[{title:'Counter',width:'150px',value(row){return row.counter;}},{title:'Series',width:'150px',value(row){return row.series;}},{title:'Time',width:'150px',value(row){return row.start;}},{title:'Value',width:'100%',value(row){return row.value;}}];Polymer({is:'tr-ui-a-counter-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=COUNTER_SAMPLE_TABLE_COLUMNS;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){this.$.table.tableRows=this.selection?this.getRows_(this.selection.toArray()):[];this.$.table.rebuild();},getRows_(samples){const samplesByCounter=tr.b.groupIntoMap(samples,sample=>sample.series.counter.guid);const rows=[];for(const counterSamples of samplesByCounter.values()){const samplesBySeries=tr.b.groupIntoMap(counterSamples,sample=>sample.series.guid);for(const seriesSamples of samplesBySeries.values()){const seriesRows=this.getRowsForSamples_(seriesSamples);seriesRows[0].counter=seriesSamples[0].series.counter.name;seriesRows[0].series=seriesSamples[0].series.name;if(seriesRows.length>1){seriesRows[0].subRows=seriesRows.slice(1);seriesRows[0].isExpanded=true;}\nrows.push(seriesRows[0]);}}\nreturn rows;},getRowsForSamples_(samples){return samples.map(function(sample){return{start:sample.timestamp,value:sample.value};});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:false,title:'Counter Sample',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:true,title:'Counter Samples',});})();'use strict';tr.exportTo('tr.ui.analysis',function(){function MultiEventSummary(title,events){this.title=title;this.duration_=undefined;this.selfTime_=undefined;this.events_=events;this.cpuTimesComputed_=false;this.cpuSelfTime_=undefined;this.cpuDuration_=undefined;this.maxDuration_=undefined;this.maxCpuDuration_=undefined;this.maxSelfTime_=undefined;this.maxCpuSelfTime_=undefined;this.untotallableArgs_=[];this.totalledArgs_=undefined;}\nMultiEventSummary.prototype={set title(title){if(title==='Totals'){this.totalsRow=true;}\nthis.title_=title;},get title(){return this.title_;},get duration(){if(this.duration_===undefined){this.duration_=tr.b.math.Statistics.sum(this.events_,function(event){return event.duration;});}\nreturn this.duration_;},get cpuSelfTime(){this.computeCpuTimesIfNeeded_();return this.cpuSelfTime_;},get cpuDuration(){this.computeCpuTimesIfNeeded_();return this.cpuDuration_;},computeCpuTimesIfNeeded_(){if(this.cpuTimesComputed_)return;this.cpuTimesComputed_=true;let cpuSelfTime=0;let cpuDuration=0;let hasCpuData=false;for(const event of this.events_){if(event.cpuDuration!==undefined){cpuDuration+=event.cpuDuration;hasCpuData=true;}\nif(event.cpuSelfTime!==undefined){cpuSelfTime+=event.cpuSelfTime;hasCpuData=true;}}\nif(hasCpuData){this.cpuDuration_=cpuDuration;this.cpuSelfTime_=cpuSelfTime;}},get selfTime(){if(this.selfTime_===undefined){this.selfTime_=0;for(const event of this.events_){if(event.selfTime!==undefined){this.selfTime_+=event.selfTime;}}}\nreturn this.selfTime_;},get events(){return this.events_;},get numEvents(){return this.events_.length;},get numAlerts(){if(this.numAlerts_===undefined){this.numAlerts_=tr.b.math.Statistics.sum(this.events_,event=>event.associatedAlerts.length);}\nreturn this.numAlerts_;},get untotallableArgs(){this.updateArgsIfNeeded_();return this.untotallableArgs_;},get totalledArgs(){this.updateArgsIfNeeded_();return this.totalledArgs_;},get maxDuration(){if(this.maxDuration_===undefined){this.maxDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.duration;});}\nreturn this.maxDuration_;},get maxCpuDuration(){if(this.maxCpuDuration_===undefined){this.maxCpuDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuDuration;});}\nreturn this.maxCpuDuration_;},get maxSelfTime(){if(this.maxSelfTime_===undefined){this.maxSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.selfTime;});}\nreturn this.maxSelfTime_;},get maxCpuSelfTime(){if(this.maxCpuSelfTime_===undefined){this.maxCpuSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuSelfTime;});}\nreturn this.maxCpuSelfTime_;},updateArgsIfNeeded_(){if(this.totalledArgs_!==undefined)return;const untotallableArgs={};const totalledArgs={};for(const event of this.events_){for(const argName in event.args){const argVal=event.args[argName];const type=typeof argVal;if(type!=='number'){untotallableArgs[argName]=true;delete totalledArgs[argName];continue;}\nif(untotallableArgs[argName]){continue;}\nif(totalledArgs[argName]===undefined){totalledArgs[argName]=0;}\ntotalledArgs[argName]+=argVal;}}\nthis.untotallableArgs_=Object.keys(untotallableArgs);this.totalledArgs_=totalledArgs;}};return{MultiEventSummary,};});'use strict';Polymer({is:'tr-ui-a-multi-event-summary-table',ready(){this.showTotals_=false;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;this.eventsByTitle_=undefined;},updateTableColumns_(rows,maxValues){let hasCpuData=false;let hasAlerts=false;rows.forEach(function(row){if(row.cpuDuration!==undefined){hasCpuData=true;}\nif(row.cpuSelfTime!==undefined){hasCpuData=true;}\nif(row.numAlerts){hasAlerts=true;}});const ownerDocument=this.ownerDocument;const columns=[];columns.push({title:'Name',value(row){if(row.title==='Totals')return'Totals';const container=document.createElement('div');const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(row.events);},row.title);container.appendChild(linkEl);if(tr.isExported('tr-ui-e-chrome-codesearch')){const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=row.title;container.appendChild(link);}\nreturn container;},width:'350px',cmp(rowA,rowB){return rowA.title.localeCompare(rowB.title);}});if(this.eventsHaveDuration_){columns.push({title:'Wall Duration',value(row){return tr.v.ui.createScalarSpan(row.duration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.duration-rowB.duration;}});}\nif(this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Duration',value(row){return tr.v.ui.createScalarSpan(row.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuDuration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.cpuDuration-rowB.cpuDuration;}});}\nif(this.eventsHaveSubRows_&&this.eventsHaveDuration_){columns.push({title:'Self time',value(row){return tr.v.ui.createScalarSpan(row.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.selfTime),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.selfTime-rowB.selfTime;}});}\nif(this.eventsHaveSubRows_&&this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Self Time',value(row){return tr.v.ui.createScalarSpan(row.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuSelfTime),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){return rowA.cpuSelfTime-rowB.cpuSelfTime;}});}\nif(this.eventsHaveDuration_){columns.push({title:'Average '+(hasCpuData?'CPU':'Wall')+' Duration',value(row){const totalDuration=hasCpuData?row.cpuDuration:row.duration;return tr.v.ui.createScalarSpan(totalDuration/row.numEvents,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'<upated further down>',cmp(rowA,rowB){if(hasCpuData){return rowA.cpuDuration/rowA.numEvents-\nrowB.cpuDuration/rowB.numEvents;}\nreturn rowA.duration/rowA.numEvents-\nrowB.duration/rowB.numEvents;}});}\ncolumns.push({title:'Occurrences',value(row){return row.numEvents;},width:'<upated further down>',cmp(rowA,rowB){return rowA.numEvents-rowB.numEvents;}});let alertsColumnIndex;if(hasAlerts){columns.push({title:'Num Alerts',value(row){return row.numAlerts;},width:'<upated further down>',cmp(rowA,rowB){return rowA.numAlerts-rowB.numAlerts;}});alertsColumnIndex=columns.length-1;}\nlet colWidthPercentage;if(columns.length===1){colWidthPercentage='100%';}else{colWidthPercentage=(100/(columns.length-1)).toFixed(3)+'%';}\nfor(let i=1;i<columns.length;i++){columns[i].width=colWidthPercentage;}\nthis.$.table.tableColumns=columns;if(hasAlerts){this.$.table.sortColumnIndex=alertsColumnIndex;this.$.table.sortDescending=true;}},configure(config){if(config.eventsByTitle===undefined){throw new Error('Required: eventsByTitle');}\nif(config.showTotals!==undefined){this.showTotals_=config.showTotals;}else{this.showTotals_=true;}\nif(config.eventsHaveDuration!==undefined){this.eventsHaveDuration_=config.eventsHaveDuration;}else{this.eventsHaveDuration_=true;}\nif(config.eventsHaveSubRows!==undefined){this.eventsHaveSubRows_=config.eventsHaveSubRows;}else{this.eventsHaveSubRows_=true;}\nthis.eventsByTitle_=config.eventsByTitle;this.updateContents_();},get showTotals(){return this.showTotals_;},set showTotals(showTotals){this.showTotals_=showTotals;this.updateContents_();},get eventsHaveDuration(){return this.eventsHaveDuration_;},set eventsHaveDuration(eventsHaveDuration){this.eventsHaveDuration_=eventsHaveDuration;this.updateContents_();},get eventsHaveSubRows(){return this.eventsHaveSubRows_;},set eventsHaveSubRows(eventsHaveSubRows){this.eventsHaveSubRows_=eventsHaveSubRows;this.updateContents_();},get eventsByTitle(){return this.eventsByTitle_;},set eventsByTitle(eventsByTitle){this.eventsByTitle_=eventsByTitle;this.updateContents_();},get selectionBounds(){return this.selectionBounds_;},set selectionBounds(selectionBounds){this.selectionBounds_=selectionBounds;this.updateContents_();},updateContents_(){let eventsByTitle;if(this.eventsByTitle_!==undefined){eventsByTitle=this.eventsByTitle_;}else{eventsByTitle=[];}\nconst allEvents=new tr.model.EventSet();const rows=[];for(const[title,eventsOfSingleTitle]of Object.entries(eventsByTitle)){for(const event of eventsOfSingleTitle)allEvents.push(event);const row=new tr.ui.analysis.MultiEventSummary(title,eventsOfSingleTitle);rows.push(row);}\nthis.updateTableColumns_(rows);this.$.table.tableRows=rows;const maxValues={duration:undefined,selfTime:undefined,cpuSelfTime:undefined,cpuDuration:undefined};if(this.eventsHaveDuration){for(const column in maxValues){maxValues[column]=tr.b.math.Statistics.max(rows,function(event){return event[column];});}}\nconst footerRows=[];if(this.showTotals_){const multiEventSummary=new tr.ui.analysis.MultiEventSummary('Totals',allEvents);footerRows.push(multiEventSummary);}\nthis.updateTableColumns_(rows,maxValues);this.$.table.tableRows=rows;this.$.table.footerRows=footerRows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-selection-summary-table',created(){this.selection_=new tr.b.math.Range();},ready(){this.$.table.showHeader=false;this.$.table.tableColumns=[{title:'Name',value(row){return row.title;},width:'350px'},{title:'Value',width:'100%',value(row){return row.value;}}];},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;this.updateContents_();},updateContents_(){const selection=this.selection_;const rows=[];let hasRange;if(this.selection_&&(!selection.bounds.isEmpty)){hasRange=true;}else{hasRange=false;}\nrows.push({title:'Selection start',value:hasRange?tr.v.ui.createScalarSpan(selection.bounds.min,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument}):'<empty>'});rows.push({title:'Selection extent',value:hasRange?tr.v.ui.createScalarSpan(selection.bounds.range,{unit:tr.b.Unit.byName.timeDurationInMs,ownerDocument:this.ownerDocument}):'<empty>'});this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-b-radio-picker',created(){this.needsInit_=true;this.settingsKey_=undefined;this.isReady_=false;this.radioButtons_=undefined;this.selectedKey_=undefined;},ready(){this.isReady_=true;this.maybeInit_();this.maybeRenderRadioButtons_();},get vertical(){return this.getAttribute('vertical');},set vertical(vertical){if(vertical){this.setAttribute('vertical',true);}else{this.removeAttribute('vertical');}},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){if(!this.needsInit_){throw new Error('Already initialized.');}\nthis.settingsKey_=settingsKey;this.maybeInit_();},maybeInit_(){if(!this.needsInit_)return;if(this.settingsKey_===undefined)return;this.needsInit_=false;this.select(tr.b.Settings.get(this.settingsKey_));},set items(items){this.radioButtons_={};items.forEach(function(e){if(e.key in this.radioButtons_){throw new Error(e.key+' already exists');}\nconst radioButton=document.createElement('div');const input=document.createElement('input');const label=document.createElement('label');input.type='radio';input.id=e.label;input.addEventListener('click',function(){this.select(e.key);}.bind(this));Polymer.dom(label).innerHTML=e.label;label.htmlFor=e.label;label.style.display='inline';Polymer.dom(radioButton).appendChild(input);Polymer.dom(radioButton).appendChild(label);this.radioButtons_[e.key]=input;}.bind(this));this.maybeInit_();this.maybeRenderRadioButtons_();},maybeRenderRadioButtons_(){if(!this.isReady_)return;if(this.radioButtons_===undefined)return;for(const key in this.radioButtons_){Polymer.dom(this.$.container).appendChild(this.radioButtons_[key].parentElement);}\nif(this.selectedKey_!==undefined){this.select(this.selectedKey_);}},select(key){if(key===undefined||key===this.selectedKey_){return;}\nif(this.radioButtons_===undefined){this.selectedKey_=key;return;}\nif(!(key in this.radioButtons_)){throw new Error(key+' does not exists');}\nif(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=false;}\nthis.selectedKey_=key;tr.b.Settings.set(this.settingsKey_,this.selectedKey_);if(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=true;}\nthis.dispatchEvent(new tr.b.Event('change',false));},get selectedKey(){return this.selectedKey_;},});'use strict';Polymer({is:'tr-ui-b-chart-legend-key',ready(){this.$.checkbox.addEventListener('change',this.onCheckboxChange_.bind(this));},onCheckboxChange_(){tr.b.dispatchSimpleEvent(this,tr.ui.b.DataSeriesEnableChangeEventType,true,false,{key:Polymer.dom(this).textContent,enabled:this.enabled});},set textContent(t){Polymer.dom(this.$.label).textContent=t;Polymer.dom(this.$.link).textContent=t;this.updateContents_();},set width(w){w-=20;this.$.link.style.width=w+'px';this.$.label.style.width=w+'px';},get textContent(){return Polymer.dom(this.$.label).textContent;},set optional(optional){this.$.checkbox.style.visibility=optional?'visible':'hidden';},get optional(){return this.$.checkbox.style.visibility==='visible';},set enabled(enabled){this.$.checkbox.checked=enabled?'checked':'';},get enabled(){return this.$.checkbox.checked;},set color(c){this.$.label.style.color=c;this.$.link.color=c;},set target(target){this.$.link.setSelectionAndContent(target,Polymer.dom(this.$.label).textContent);this.updateContents_();},get target(){return this.$.link.selection;},set title(title){this.$.link.title=title;},updateContents_(){this.$.link.style.display=this.target?'':'none';this.$.label.style.display=this.target?'none':'';this.$.label.htmlFor=this.optional?'checkbox':'';}});'use strict';(function(window){window.define=function(x){window.d3=x;};window.define.amd=true;})(this);!function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(n){return aa+n in this}function o(n){return n=aa+n,n in this&&delete this[n]}function a(){var n=[];return this.forEach(function(t){n.push(t)}),n}function c(){var n=0;for(var t in this)t.charCodeAt(0)===ca&&++n;return n}function s(){for(var n in this)if(n.charCodeAt(0)===ca)return!1;return!0}function l(){}function f(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function h(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=sa.length;r>e;++e){var u=sa[e]+t;if(u in n)return u}}function g(){}function p(){}function v(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new u;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function d(){Xo.event.preventDefault()}function m(){for(var n,t=Xo.event;n=t.sourceEvent;)t=n;return t}function y(n){for(var t=new p,e=0,r=arguments.length;++e<r;)t[arguments[e]]=v(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=Xo.event;u.target=n,Xo.event=u,t[u.type].apply(e,r)}finally{Xo.event=i}}},t}function x(n){return fa(n,da),n}function M(n){return\"function\"==typeof n?n:function(){return ha(n,this)}}function _(n){return\"function\"==typeof n?n:function(){return ga(n,this)}}function b(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=Xo.ns.qualify(n),null==t?n.local?r:e:\"function\"==typeof t?n.local?a:o:n.local?i:u}function w(n){return n.trim().replace(/\\s+/g,\" \")}function S(n){return new RegExp(\"(?:^|\\\\s+)\"+Xo.requote(n)+\"(?:\\\\s+|$)\",\"g\")}function k(n){return n.trim().split(/^|\\s+/)}function E(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=k(n).map(A);var u=n.length;return\"function\"==typeof t?r:e}function A(n){var t=S(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute(\"class\")||\"\";r?(t.lastIndex=0,t.test(u)||e.setAttribute(\"class\",w(u+\" \"+n))):e.setAttribute(\"class\",w(u.replace(t,\" \")))}}function C(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:\"function\"==typeof t?i:u}function N(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:\"function\"==typeof t?u:r}function L(n){return\"function\"==typeof n?n:(n=Xo.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function T(n){return{__data__:n}}function q(n){return function(){return va(this,n)}}function z(n){return arguments.length||(n=Xo.ascending),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function R(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function D(n){return fa(n,ya),n}function P(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function U(){var n=this.__transition__;n&&++n.active}function j(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,Bo(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp(\"^__on([^.]+)\"+Xo.requote(n)+\"$\");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o=\"__on\"+n,a=n.indexOf(\".\"),c=H;a>0&&(n=n.substring(0,a));var s=Ma.get(n);return s&&(n=s,c=F),a?t?u:r:t?g:i}function H(n,t){return function(e){var r=Xo.event;Xo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Xo.event=r}}}function F(n,t){var e=H(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function O(){var n=\".dragsuppress-\"+ ++ba,t=\"click\"+n,e=Xo.select(Go).on(\"touchmove\"+n,d).on(\"dragstart\"+n,d).on(\"selectstart\"+n,d);if(_a){var r=Jo.style,u=r[_a];r[_a]=\"none\"}return function(i){function o(){e.on(t,null)}e.on(n,null),_a&&(r[_a]=u),i&&(e.on(t,function(){d(),o()},!0),setTimeout(o,0))}}function Y(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>wa&&(Go.scrollX||Go.scrollY)){e=Xo.select(\"body\").append(\"svg\").style({position:\"absolute\",top:0,left:0,margin:0,padding:0,border:\"none\"},\"important\");var u=e[0][0].getScreenCTM();wa=!(u.f||u.e),e.remove()}return wa?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function I(n){return n>0?1:0>n?-1:0}function Z(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function V(n){return n>1?0:-1>n?Sa:Math.acos(n)}function X(n){return n>1?Ea:-1>n?-Ea:Math.asin(n)}function $(n){return((n=Math.exp(n))-1/n)/2}function B(n){return((n=Math.exp(n))+1/n)/2}function W(n){return((n=Math.exp(2*n))-1)/(n+1)}function J(n){return(n=Math.sin(n/2))*n}function G(){}function K(n,t,e){return new Q(n,t,e)}function Q(n,t,e){this.h=n,this.s=t,this.l=e}function nt(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,gt(u(n+120),u(n),u(n-120))}function tt(n,t,e){return new et(n,t,e)}function et(n,t,e){this.h=n,this.c=t,this.l=e}function rt(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),ut(e,Math.cos(n*=Na)*t,Math.sin(n)*t)}function ut(n,t,e){return new it(n,t,e)}function it(n,t,e){this.l=n,this.a=t,this.b=e}function ot(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=ct(u)*Fa,r=ct(r)*Oa,i=ct(i)*Ya,gt(lt(3.2404542*u-1.5371385*r-.4985314*i),lt(-.969266*u+1.8760108*r+.041556*i),lt(.0556434*u-.2040259*r+1.0572252*i))}function at(n,t,e){return n>0?tt(Math.atan2(e,t)*La,Math.sqrt(t*t+e*e),n):tt(0/0,0/0,n)}function ct(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function st(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function lt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ft(n){return gt(n>>16,255&n>>8,255&n)}function ht(n){return ft(n)+\"\"}function gt(n,t,e){return new pt(n,t,e)}function pt(n,t,e){this.r=n,this.g=t,this.b=e}function vt(n){return 16>n?\"0\"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function dt(n,t,e){var r,u,i,o,a=0,c=0,s=0;if(u=/([a-z]+)\\((.*)\\)/i.exec(n))switch(i=u[2].split(\",\"),u[1]){case\"hsl\":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case\"rgb\":return t(Mt(i[0]),Mt(i[1]),Mt(i[2]))}return(o=Va.get(n))?t(o.r,o.g,o.b):(null!=n&&\"#\"===n.charAt(0)&&(r=parseInt(n.substring(1),16),isNaN(r)||(4===n.length?(a=(3840&r)>>4,a=a>>4|a,c=240&r,c=c>>4|c,s=15&r,s=s<<4|s):7===n.length&&(a=(16711680&r)>>16,c=(65280&r)>>8,s=255&r))),t(a,c,s))}function mt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),K(r,u,c)}function yt(n,t,e){n=xt(n),t=xt(t),e=xt(e);var r=st((.4124564*n+.3575761*t+.1804375*e)/Fa),u=st((.2126729*n+.7151522*t+.072175*e)/Oa),i=st((.0193339*n+.119192*t+.9503041*e)/Ya);return ut(116*u-16,500*(r-u),200*(u-i))}function xt(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Mt(n){var t=parseFloat(n);return\"%\"===n.charAt(n.length-1)?Math.round(2.55*t):t}function _t(n){return\"function\"==typeof n?n:function(){return n}}function bt(n){return n}function wt(n){return function(t,e,r){return 2===arguments.length&&\"function\"==typeof e&&(r=e,e=null),St(t,e,n,r)}}function St(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Xo.dispatch(\"beforesend\",\"progress\",\"load\",\"error\"),a={},c=new XMLHttpRequest,s=null;return!Go.XDomainRequest||\"withCredentials\"in c||!/^(http(s)?:)?\\/\\//.test(n)||(c=new XDomainRequest),\"onload\"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Xo.event;Xo.event=n;try{o.progress.call(i,c)}finally{Xo.event=t}},i.header=function(n,t){return n=(n+\"\").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+\"\",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+\"\",i):t},i.responseType=function(n){return arguments.length?(s=n,i):s},i.response=function(n){return e=n,i},[\"get\",\"post\"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Bo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&\"function\"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||\"accept\"in a||(a.accept=t+\",*/*\"),c.setRequestHeader)for(var l in a)c.setRequestHeader(l,a[l]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=s&&(c.responseType=s),null!=u&&i.on(\"error\",u).on(\"load\",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Xo.rebind(i,o,\"on\"),null==r?i:i.get(kt(r))}function kt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Et(){var n=At(),t=Ct()-n;t>24?(isFinite(t)&&(clearTimeout(Wa),Wa=setTimeout(Et,t)),Ba=0):(Ba=1,Ga(Et))}function At(){var n=Date.now();for(Ja=Xa;Ja;)n>=Ja.t&&(Ja.f=Ja.c(n-Ja.t)),Ja=Ja.n;return n}function Ct(){for(var n,t=Xa,e=1/0;t;)t.f?t=n?n.n=t.n:Xa=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return $a=n,e}function Nt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Lt(n,t){var e=Math.pow(10,3*oa(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Tt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];t>0&&o>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:bt;return function(n){var e=Qa.exec(n),r=e[1]||\" \",o=e[2]||\">\",a=e[3]||\"\",c=e[4]||\"\",s=e[5],l=+e[6],f=e[7],h=e[8],g=e[9],p=1,v=\"\",d=\"\",m=!1;switch(h&&(h=+h.substring(1)),(s||\"0\"===r&&\"=\"===o)&&(s=r=\"0\",o=\"=\",f&&(l-=Math.floor((l-1)/4))),g){case\"n\":f=!0,g=\"g\";break;case\"%\":p=100,d=\"%\",g=\"f\";break;case\"p\":p=100,d=\"%\",g=\"r\";break;case\"b\":case\"o\":case\"x\":case\"X\":\"#\"===c&&(v=\"0\"+g.toLowerCase());case\"c\":case\"d\":m=!0,h=0;break;case\"s\":p=-1,g=\"r\"}\"$\"===c&&(v=u[0],d=u[1]),\"r\"!=g||h||(g=\"g\"),null!=h&&(\"g\"==g?h=Math.max(1,Math.min(21,h)):(\"e\"==g||\"f\"==g)&&(h=Math.max(0,Math.min(20,h)))),g=nc.get(g)||qt;var y=s&&f;return function(n){var e=d;if(m&&n%1)return\"\";var u=0>n||0===n&&0>1/n?(n=-n,\"-\"):a;if(0>p){var c=Xo.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf(\".\"),M=0>x?n:n.substring(0,x),_=0>x?\"\":t+n.substring(x+1);!s&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=l>b?new Array(b=l-b+1).join(r):\"\";return y&&(M=i(w+M)),u+=v,n=M+_,(\"<\"===o?u+n+w:\">\"===o?w+u+n:\"^\"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function qt(n){return n+\"\"}function zt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Rt(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new ec(e-1)),1),e}function i(n,e){return t(n=new ec(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{ec=zt;var r=new zt;return r._=n,o(r,t,e)}finally{ec=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Dt(n);return c.floor=c,c.round=Dt(r),c.ceil=Dt(u),c.offset=Dt(i),c.range=a,n}function Dt(n){return function(t,e){try{ec=zt;var r=new zt;return r._=t,n(r,e)._}finally{ec=Date}}}function Pt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.substring(c,a)),null!=(u=uc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=C[e])&&(e=i(t,null==u?\"e\"===e?\" \":\"0\":u)),o.push(e),c=a+1);return o.push(n.substring(c,a)),o.join(\"\")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;\"p\"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&ec!==zt,o=new(i?zt:ec);return\"j\"in r?o.setFullYear(r.y,0,r.j):\"w\"in r&&(\"W\"in r||\"U\"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,\"W\"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+Math.floor(r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,s=e.length;c>a;){if(r>=s)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=N[o in uc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.substring(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.substring(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.substring(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.substring(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,C.c.toString(),t,r)}function c(n,t,r){return e(n,C.x.toString(),t,r)}function s(n,t,r){return e(n,C.X.toString(),t,r)}function l(n,t,e){var r=x.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{ec=zt;var t=new ec;return t._=n,r(t)}finally{ec=Date}}var r=t(n);return e.parse=function(n){try{ec=zt;var t=r.parse(n);return t&&t._}finally{ec=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ee;var x=Xo.map(),M=jt(v),_=Ht(v),b=jt(d),w=Ht(d),S=jt(m),k=Ht(m),E=jt(y),A=Ht(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var C={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Ut(n.getDate(),t,2)},e:function(n,t){return Ut(n.getDate(),t,2)},H:function(n,t){return Ut(n.getHours(),t,2)},I:function(n,t){return Ut(n.getHours()%12||12,t,2)},j:function(n,t){return Ut(1+tc.dayOfYear(n),t,3)},L:function(n,t){return Ut(n.getMilliseconds(),t,3)},m:function(n,t){return Ut(n.getMonth()+1,t,2)},M:function(n,t){return Ut(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Ut(n.getSeconds(),t,2)},U:function(n,t){return Ut(tc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Ut(tc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Ut(n.getFullYear()%100,t,2)},Y:function(n,t){return Ut(n.getFullYear()%1e4,t,4)},Z:ne,\"%\":function(){return\"%\"}},N={a:r,A:u,b:i,B:o,c:a,d:Bt,e:Bt,H:Jt,I:Jt,j:Wt,L:Qt,m:$t,M:Gt,p:l,S:Kt,U:Ot,w:Ft,W:Yt,x:c,X:s,y:Zt,Y:It,Z:Vt,\"%\":te};return t}function Ut(n,t,e){var r=0>n?\"-\":\"\",u=(r?-n:n)+\"\",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function jt(n){return new RegExp(\"^(?:\"+n.map(Xo.requote).join(\"|\")+\")\",\"i\")}function Ht(n){for(var t=new u,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Ft(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Ot(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Yt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function It(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Zt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.y=Xt(+r[0]),e+r[0].length):-1}function Vt(n,t,e){return/^[+-]\\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Xt(n){return n+(n>68?1900:2e3)}function $t(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Bt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Wt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function Jt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Gt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function Kt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function Qt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ne(n){var t=n.getTimezoneOffset(),e=t>0?\"-\":\"+\",r=~~(oa(t)/60),u=oa(t)%60;return e+Ut(r,\"0\",2)+Ut(u,\"0\",2)}function te(n,t,e){oc.lastIndex=0;var r=oc.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function ee(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function re(){}function ue(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function ie(n,t){n&&lc.hasOwnProperty(n.type)&&lc[n.type](n,t)}function oe(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function ae(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)oe(n[e],t,1);t.polygonEnd()}function ce(){function n(n,t){n*=Na,t=t*Na/2+Sa/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),s=Math.sin(t),l=i*s,f=u*c+l*Math.cos(a),h=l*o*Math.sin(a);hc.add(Math.atan2(h,f)),r=n,u=c,i=s}var t,e,r,u,i;gc.point=function(o,a){gc.point=n,r=(t=o)*Na,u=Math.cos(a=(e=a)*Na/2+Sa/4),i=Math.sin(a)},gc.lineEnd=function(){n(t,e)}}function se(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function le(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function fe(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function he(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ge(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function pe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function ve(n){return[Math.atan2(n[1],n[0]),X(n[2])]}function de(n,t){return oa(n[0]-t[0])<Aa&&oa(n[1]-t[1])<Aa}function me(n,t){n*=Na;var e=Math.cos(t*=Na);ye(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function ye(n,t,e){++pc,dc+=(n-dc)/pc,mc+=(t-mc)/pc,yc+=(e-yc)/pc}function xe(){function n(n,u){n*=Na;var i=Math.cos(u*=Na),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),s=Math.atan2(Math.sqrt((s=e*c-r*a)*s+(s=r*o-t*c)*s+(s=t*a-e*o)*s),t*o+e*a+r*c);vc+=s,xc+=s*(t+(t=o)),Mc+=s*(e+(e=a)),_c+=s*(r+(r=c)),ye(t,e,r)}var t,e,r;kc.point=function(u,i){u*=Na;var o=Math.cos(i*=Na);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),kc.point=n,ye(t,e,r)}}function Me(){kc.point=me}function _e(){function n(n,t){n*=Na;var e=Math.cos(t*=Na),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),s=u*c-i*a,l=i*o-r*c,f=r*a-u*o,h=Math.sqrt(s*s+l*l+f*f),g=r*o+u*a+i*c,p=h&&-V(g)/h,v=Math.atan2(h,g);bc+=p*s,wc+=p*l,Sc+=p*f,vc+=v,xc+=v*(r+(r=o)),Mc+=v*(u+(u=a)),_c+=v*(i+(i=c)),ye(r,u,i)}var t,e,r,u,i;kc.point=function(o,a){t=o,e=a,kc.point=n,o*=Na;var c=Math.cos(a*=Na);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),ye(r,u,i)},kc.lineEnd=function(){n(t,e),kc.lineEnd=Me,kc.point=me}}function be(){return!0}function we(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(de(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new ke(e,n,null,!0),s=new ke(e,null,c,!1);c.o=s,i.push(c),o.push(s),c=new ke(r,n,null,!1),s=new ke(r,null,c,!0),c.o=s,i.push(c),o.push(s)}}),o.sort(t),Se(i),Se(o),i.length){for(var a=0,c=e,s=o.length;s>a;++a)o[a].e=c=!c;for(var l,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;l=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,s=l.length;s>a;++a)u.point((f=l[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){l=g.p.z;for(var a=l.length-1;a>=0;--a)u.point((f=l[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,l=g.z,p=!p}while(!g.v);u.lineEnd()}}}function Se(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function ke(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Ee(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function s(){y.point=o,d.lineEnd()}function l(n,t){v.push([n,t]);var e=u(n,t);M.point(e[0],e[1])}function f(){M.lineStart(),v=[]}function h(){l(v[0][0],v[0][1]),M.lineEnd();var n,t=M.clean(),e=x.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r){if(1&t){n=e[0];var u,r=n.length-1,o=-1;for(i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);return i.lineEnd(),void 0}r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Ae))}}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:s,polygonStart:function(){y.point=l,y.lineStart=f,y.lineEnd=h,g=[],p=[],i.polygonStart()},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=s,g=Xo.merge(g);var n=Le(m,p);g.length?we(g,Ne,n,e,i):n&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=Ce(),M=t(x);return y}}function Ae(n){return n.length>1}function Ce(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:g,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ne(n,t){return((n=n.x)[0]<0?n[1]-Ea-Aa:Ea-n[1])-((t=t.x)[0]<0?t[1]-Ea-Aa:Ea-t[1])}function Le(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;hc.reset();for(var a=0,c=t.length;c>a;++a){var s=t[a],l=s.length;if(l)for(var f=s[0],h=f[0],g=f[1]/2+Sa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===l&&(d=0),n=s[d];var m=n[0],y=n[1]/2+Sa/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>Sa,k=p*x;if(hc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*ka:_,S^h>=e^m>=e){var E=fe(se(f),se(n));pe(E);var A=fe(u,E);pe(A);var C=(S^_>=0?-1:1)*X(A[2]);(r>C||r===C&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-Aa>i||Aa>i&&0>hc)^1&o}function Te(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Sa:-Sa,c=oa(i-e);oa(c-Sa)<Aa?(n.point(e,r=(r+o)/2>0?Ea:-Ea),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Sa&&(oa(e-u)<Aa&&(e-=u*Aa),oa(i-a)<Aa&&(i-=a*Aa),r=qe(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function qe(n,t,e,r){var u,i,o=Math.sin(n-e);return oa(o)>Aa?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function ze(n,t,e,r){var u;if(null==n)u=e*Ea,r.point(-Sa,u),r.point(0,u),r.point(Sa,u),r.point(Sa,0),r.point(Sa,-u),r.point(0,-u),r.point(-Sa,-u),r.point(-Sa,0),r.point(-Sa,u);else if(oa(n[0]-t[0])>Aa){var i=n[0]<t[0]?Sa:-Sa;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function Re(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,s,l;return{lineStart:function(){s=c=!1,l=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Sa:-Sa),h):0;if(!e&&(s=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(de(e,g)||de(p,g))&&(p[0]+=Aa,p[1]+=Aa,v=t(p[0],p[1]))),v!==c)l=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(l=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&de(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return l|(s&&c)<<1}}}function r(n,t,e){var r=se(n),u=se(t),o=[1,0,0],a=fe(r,u),c=le(a,a),s=a[0],l=c-s*s;if(!l)return!e&&n;var f=i*c/l,h=-i*s/l,g=fe(o,a),p=ge(o,f),v=ge(a,h);he(p,v);var d=g,m=le(p,d),y=le(d,d),x=m*m-y*(le(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=ge(d,(-m-M)/y);if(he(_,p),_=ve(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,C=oa(A-Sa)<Aa,N=C||Aa>A;if(!C&&k>E&&(b=k,k=E,E=b),N?C?k+E>0^_[1]<(oa(_[0]-w)<Aa?k:E):k<=_[1]&&_[1]<=E:A>Sa^(w<=_[0]&&_[0]<=S)){var L=ge(d,(-m+M)/y);return he(L,p),[_,ve(L)]}}}function u(t,e){var r=o?n:Sa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=oa(i)>Aa,c=cr(n,6*Na);return Ee(t,e,c,o?[0,-n]:[-Sa,n-Sa])}function De(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,s=o.y,l=a.x,f=a.y,h=0,g=1,p=l-c,v=f-s;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-s,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-s,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:s+h*v}),1>g&&(u.b={x:c+g*p,y:s+g*v}),u}}}}}}function Pe(n,t,e,r){function u(r,u){return oa(r[0]-n)<Aa?u>0?0:3:oa(r[0]-e)<Aa?u>0?2:1:oa(r[1]-t)<Aa?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,s=a[0];c>o;++o)i=a[o],s[1]<=r?i[1]>r&&Z(s,i,n)>0&&++t:i[1]<=r&&Z(s,i,n)<0&&--t,s=i;return 0!==t}function s(i,a,c,s){var l=0,f=0;if(null==i||(l=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do s.point(0===l||3===l?n:e,l>1?r:t);while((l=(l+c+4)%4)!==f)}else s.point(a[0],a[1])}function l(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){l(n,t)&&a.point(n,t)}function h(){N.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&A.rejoin(),v.push(A.buffer())),N.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Ac,Math.min(Ac,n)),t=Math.max(-Ac,Math.min(Ac,t));var e=l(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};C(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,A=Ce(),C=De(n,t,e,r),N={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Xo.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),s(null,null,1,a),a.lineEnd()),u&&we(v,i,t,s,a),a.polygonEnd()),v=d=m=null}};return N}}function Ue(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function je(n){var t=0,e=Sa/3,r=nr(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Sa/180,e=n[1]*Sa/180):[180*(t/Sa),180*(e/Sa)]},u}function He(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,X((i-(n*n+e*e)*u*u)/(2*u))]},e}function Fe(){function n(n,t){Nc+=u*n-r*t,r=n,u=t}var t,e,r,u;Rc.point=function(i,o){Rc.point=n,t=r=i,e=u=o},Rc.lineEnd=function(){n(t,e)}}function Oe(n,t){Lc>n&&(Lc=n),n>qc&&(qc=n),Tc>t&&(Tc=t),t>zc&&(zc=t)}function Ye(){function n(n,t){o.push(\"M\",n,\",\",t,i)}function t(n,t){o.push(\"M\",n,\",\",t),a.point=e}function e(n,t){o.push(\"L\",n,\",\",t)}function r(){a.point=n}function u(){o.push(\"Z\")}var i=Ie(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Ie(n),a},result:function(){if(o.length){var n=o.join(\"\");return o=[],n}}};return a}function Ie(n){return\"m0,\"+n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+-2*n+\"a\"+n+\",\"+n+\" 0 1,1 0,\"+2*n+\"z\"}function Ze(n,t){dc+=n,mc+=t,++yc}function Ve(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);xc+=o*(t+n)/2,Mc+=o*(e+r)/2,_c+=o,Ze(t=n,e=r)}var t,e;Pc.point=function(r,u){Pc.point=n,Ze(t=r,e=u)}}function Xe(){Pc.point=Ze}function $e(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);xc+=o*(r+n)/2,Mc+=o*(u+t)/2,_c+=o,o=u*n-r*t,bc+=o*(r+n),wc+=o*(u+t),Sc+=3*o,Ze(r=n,u=t)}var t,e,r,u;Pc.point=function(i,o){Pc.point=n,Ze(t=r=i,e=u=o)},Pc.lineEnd=function(){n(t,e)}}function Be(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,ka)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:g};return a}function We(n){function t(n){return(a?r:e)(n)}function e(t){return Ke(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=se([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=s,S.lineEnd=l}function s(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function l(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,s,l,f,h,g,p,v,d,m){var y=l-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=s+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=oa(oa(w)-1)<Aa||oa(r-h)<Aa?(r+h)/2:Math.atan2(b,_),A=n(E,k),C=A[0],N=A[1],L=C-t,T=N-e,q=x*L-y*T;(q*q/M>i||oa((y*L+x*T)/M-.5)>.3||o>a*g+c*p+s*v)&&(u(t,e,r,a,c,s,C,N,E,_/=S,b/=S,w,d,m),m.point(C,N),u(C,N,E,_,b,w,l,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Na),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function Je(n){var t=We(function(t,e){return n([t*La,e*La])});return function(n){return tr(t(n))}}function Ge(n){this.stream=n}function Ke(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function Qe(n){return nr(function(){return n})()}function nr(n){function t(n){return n=a(n[0]*Na,n[1]*Na),[n[0]*h+c,s-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*La,n[1]*La]}function r(){a=Ue(o=ur(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,s=p+n[1]*h,u()}function u(){return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=We(function(n,t){return n=i(n,t),[n[0]*h+c,s-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Ec,_=bt,b=null,w=null;return t.stream=function(n){return l&&(l.valid=!1),l=tr(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,Ec):Re((b=+n)*Na),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?Pe(n[0][0],n[0][1],n[1][0],n[1][1]):bt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Na,d=n[1]%360*Na,r()):[v*La,d*La]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Na,y=n[1]%360*Na,x=n.length>2?n[2]%360*Na:0,r()):[m*La,y*La,x*La]},Xo.rebind(t,f,\"precision\"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function tr(n){return Ke(n,function(t,e){n.point(t*Na,e*Na)})}function er(n,t){return[n,t]}function rr(n,t){return[n>Sa?n-ka:-Sa>n?n+ka:n,t]}function ur(n,t,e){return n?t||e?Ue(or(n),ar(t,e)):or(n):t||e?ar(t,e):rr}function ir(n){return function(t,e){return t+=n,[t>Sa?t-ka:-Sa>t?t+ka:t,e]}}function or(n){var t=ir(n);return t.invert=ir(-n),t}function ar(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;return[Math.atan2(c*i-l*o,a*r-s*u),X(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;return[Math.atan2(c*i+s*o,a*r+l*u),X(l*r-a*u)]},e}function cr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=sr(e,u),i=sr(e,i),(o>0?i>u:u>i)&&(u+=o*ka)):(u=n+o*ka,i=n-.5*c);for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=ve([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}function sr(n,t){var e=se(t);e[0]-=n,pe(e);var r=V(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Aa)%(2*Math.PI)}function lr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function fr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function hr(n){return n.source}function gr(n){return n.target}function pr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(J(r-t)+u*o*J(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*l,u=e*s+t*f,o=e*i+t*a;return[Math.atan2(u,r)*La,Math.atan2(o,Math.sqrt(r*r+u*u))*La]}:function(){return[n*La,t*La]};return p.distance=h,p}function vr(){function n(n,u){var i=Math.sin(u*=Na),o=Math.cos(u),a=oa((n*=Na)-t),c=Math.cos(a);Uc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;jc.point=function(u,i){t=u*Na,e=Math.sin(i*=Na),r=Math.cos(i),jc.point=n},jc.lineEnd=function(){jc.point=jc.lineEnd=g}}function dr(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function mr(n,t){function e(n,t){var e=oa(oa(t)-Ea)<Aa?0:o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Sa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=I(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ea]},e):xr}function yr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return oa(u)<Aa?er:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-I(u)*Math.sqrt(n*n+e*e)]},e)}function xr(n,t){return[n,Math.log(Math.tan(Sa/4+t/2))]}function Mr(n){var t,e=Qe(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Sa*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function _r(n,t){return[Math.log(Math.tan(Sa/4+t/2)),-n]}function br(n){return n[0]}function wr(n){return n[1]}function Sr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&Z(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function kr(n,t){return n[0]-t[0]||n[1]-t[1]}function Er(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Ar(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);return[u+h*o,c+h*l]}function Cr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Nr(){Jr(this),this.edge=this.site=this.circle=null}function Lr(n){var t=Jc.pop()||new Nr;return t.site=n,t}function Tr(n){Or(n),$c.remove(n),Jc.push(n),Jr(n)}function qr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Tr(n);for(var c=i;c.circle&&oa(e-c.circle.x)<Aa&&oa(r-c.circle.cy)<Aa;)i=c.P,a.unshift(c),Tr(c),c=i;a.unshift(c),Or(c);for(var s=o;s.circle&&oa(e-s.circle.x)<Aa&&oa(r-s.circle.cy)<Aa;)o=s.N,a.push(s),Tr(s),s=o;a.push(s),Or(s);var l,f=a.length;for(l=1;f>l;++l)s=a[l],c=a[l-1],$r(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Vr(c.site,s.site,null,u),Fr(c),Fr(s)}function zr(n){for(var t,e,r,u,i=n.x,o=n.y,a=$c._;a;)if(r=Rr(a,o)-i,r>Aa)a=a.L;else{if(u=i-Dr(a,o),!(u>Aa)){r>-Aa?(t=a.P,e=a):u>-Aa?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Lr(n);if($c.insert(t,c),t||e){if(t===e)return Or(t),e=Lr(t.site),$c.insert(c,e),c.edge=e.edge=Vr(t.site,c.site),Fr(t),Fr(e),void 0;if(!e)return c.edge=Vr(t.site,c.site),void 0;Or(t),Or(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};$r(e.edge,s,p,M),c.edge=Vr(s,n,null,M),e.edge=Vr(n,p,null,M),Fr(t),Fr(e)}}function Rr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;if(!s)return a;var l=a-r,f=1/i-1/s,h=l/s;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}function Dr(n,t){var e=n.N;if(e)return Rr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Pr(n){this.site=n,this.edges=[]}function Ur(n){for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Xc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(oa(r-t)>Aa||oa(u-e)>Aa)&&(a.splice(o,0,new Br(Xr(i.site,l,oa(r-f)<Aa&&p-u>Aa?{x:f,y:oa(t-f)<Aa?e:p}:oa(u-p)<Aa&&h-r>Aa?{x:oa(e-p)<Aa?t:h,y:p}:oa(r-h)<Aa&&u-g>Aa?{x:h,y:oa(t-h)<Aa?e:g}:oa(u-g)<Aa&&r-f>Aa?{x:oa(e-g)<Aa?t:f,y:g}:null),i.site,null)),++c)}function jr(n,t){return t.angle-n.angle}function Hr(){Jr(this),this.x=this.y=this.arc=this.site=this.cy=null}function Fr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,s=r.y-a,l=i.x-o,f=i.y-a,h=2*(c*f-s*l);if(!(h>=-Ca)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=Gc.pop()||new Hr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=Wc._;x;)if(m.y<x.y||m.y===x.y&&m.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}Wc.insert(y,m),y||(Bc=m)}}}}function Or(n){var t=n.circle;t&&(t.P||(Bc=t.N),Wc.remove(t),Gc.push(t),Jr(t),n.circle=null)}function Yr(n){for(var t,e=Vc,r=De(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Ir(t,n)||!r(t)||oa(t.a.x-t.b.x)<Aa&&oa(t.a.y-t.b.y)<Aa)&&(t.a=t.b=null,e.splice(u,1))}function Ir(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],s=t[1][1],l=n.l,f=n.r,h=l.x,g=l.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=s)return}else i={x:d,y:c};e={x:d,y:s}}else{if(i){if(i.y<c)return}else i={x:d,y:s};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=s)return}else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}else{if(i){if(i.y<c)return}else i={x:(s-u)/r,y:s};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Zr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Vr(n,t,e,r){var u=new Zr(n,t);return Vc.push(u),e&&$r(u,n,t,e),r&&$r(u,t,n,r),Xc[n.i].edges.push(new Br(u,n,t)),Xc[t.i].edges.push(new Br(u,t,n)),u}function Xr(n,t,e){var r=new Zr(n,null);return r.a=t,r.b=e,Vc.push(r),r}function $r(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function Br(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function Wr(){this._=null}function Jr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function Gr(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function Kr(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function Qr(n){for(;n.L;)n=n.L;return n}function nu(n,t){var e,r,u,i=n.sort(tu).pop();for(Vc=[],Xc=new Array(n.length),$c=new Wr,Wc=new Wr;;)if(u=Bc,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Xc[i.i]=new Pr(i),zr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;qr(u.arc)}t&&(Yr(t),Ur(t));var o={cells:Xc,edges:Vc};return $c=Wc=Vc=Xc=null,o}function tu(n,t){return t.y-n.y||t.x-n.x}function eu(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function ru(n){return n.x}function uu(n){return n.y}function iu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function ou(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&ou(n,c[0],e,r,o,a),c[1]&&ou(n,c[1],o,r,u,a),c[2]&&ou(n,c[2],e,a,o,i),c[3]&&ou(n,c[3],o,a,u,i)}}function au(n,t){n=Xo.rgb(n),t=Xo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return\"#\"+vt(Math.round(e+i*n))+vt(Math.round(r+o*n))+vt(Math.round(u+a*n))}}function cu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=fu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function su(n,t){return t-=n=+n,function(e){return n+t*e}}function lu(n,t){var e,r,u,i,o,a=0,c=0,s=[],l=[];for(n+=\"\",t+=\"\",Qc.lastIndex=0,r=0;e=Qc.exec(t);++r)e.index&&s.push(t.substring(a,c=e.index)),l.push({i:s.length,x:e[0]}),s.push(null),a=Qc.lastIndex;for(a<t.length&&s.push(t.substring(a)),r=0,i=l.length;(e=Qc.exec(n))&&i>r;++r)if(o=l[r],o.x==e[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),u=r+1;i>u;++u)l[u].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),u=r+1;i>u;++u)l[u].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),u=r+1;i>u;++u)l[u].i--;l.splice(r,1),i--,r--}else o.x=su(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=l.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),i--;return 1===s.length?null==s[0]?(o=l[0].x,function(n){return o(n)+\"\"}):function(){return t}:function(n){for(r=0;i>r;++r)s[(o=l[r]).i]=o.x(n);return s.join(\"\")}}function fu(n,t){for(var e,r=Xo.interpolators.length;--r>=0&&!(e=Xo.interpolators[r](n,t)););return e}function hu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(fu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function gu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function pu(n){return function(t){return 1-n(1-t)}}function vu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function du(n){return n*n}function mu(n){return n*n*n}function yu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function xu(n){return function(t){return Math.pow(t,n)}}function Mu(n){return 1-Math.cos(n*Ea)}function _u(n){return Math.pow(2,10*(n-1))}function bu(n){return 1-Math.sqrt(1-n*n)}function wu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/ka*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*ka/t)}}function Su(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function ku(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Eu(n,t){n=Xo.hcl(n),t=Xo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return rt(e+i*n,r+o*n,u+a*n)+\"\"}}function Au(n,t){n=Xo.hsl(n),t=Xo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return nt(e+i*n,r+o*n,u+a*n)+\"\"}}function Cu(n,t){n=Xo.lab(n),t=Xo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ot(e+i*n,r+o*n,u+a*n)+\"\"}}function Nu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Lu(n){var t=[n.a,n.b],e=[n.c,n.d],r=qu(t),u=Tu(t,e),i=qu(zu(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*La,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*La:0}function Tu(n,t){return n[0]*t[0]+n[1]*t[1]}function qu(n){var t=Math.sqrt(Tu(n,n));return t&&(n[0]/=t,n[1]/=t),t}function zu(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ru(n,t){var e,r=[],u=[],i=Xo.transform(n),o=Xo.transform(t),a=i.translate,c=o.translate,s=i.rotate,l=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push(\"translate(\",null,\",\",null,\")\"),u.push({i:1,x:su(a[0],c[0])},{i:3,x:su(a[1],c[1])})):c[0]||c[1]?r.push(\"translate(\"+c+\")\"):r.push(\"\"),s!=l?(s-l>180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+\"rotate(\",null,\")\")-2,x:su(s,l)})):l&&r.push(r.pop()+\"rotate(\"+l+\")\"),f!=h?u.push({i:r.push(r.pop()+\"skewX(\",null,\")\")-2,x:su(f,h)}):h&&r.push(r.pop()+\"skewX(\"+h+\")\"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+\"scale(\",null,\",\",null,\")\"),u.push({i:e-4,x:su(g[0],p[0])},{i:e-2,x:su(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+\"scale(\"+p+\")\"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join(\"\")}}function Du(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Pu(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function Uu(n){for(var t=n.source,e=n.target,r=Hu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function ju(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Hu(n,t){if(n===t)return n;for(var e=ju(n),r=ju(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function Fu(n){n.fixed|=2}function Ou(n){n.fixed&=-7}function Yu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Iu(n){n.fixed&=-5}function Zu(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Zu(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var s=t*e[n.point.index];n.charge+=n.pointCharge=s,r+=s*n.point.x,u+=s*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Vu(n,t){return Xo.rebind(n,t,\"sort\",\"children\",\"value\"),n.nodes=n,n.links=Wu,n}function Xu(n){return n.children}function $u(n){return n.value}function Bu(n,t){return t.value-n.value}function Wu(n){return Xo.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function Ju(n){return n.x}function Gu(n){return n.y}function Ku(n,t,e){n.y0=t,n.y=e}function Qu(n){return Xo.range(n.length)}function ni(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function ti(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function ei(n){return n.reduce(ri,0)}function ri(n,t){return n+t[1]}function ui(n,t){return ii(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ii(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function oi(n){return[Xo.min(n),Xo.max(n)]}function ai(n,t){return n.parent==t.parent?1:2}function ci(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function si(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function li(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i<u;)t(r=li(e[i],t),n)>0&&(n=r);return n}function fi(n,t){return n.x-t.x}function hi(n,t){return t.x-n.x}function gi(n,t){return n.depth-t.depth}function pi(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c<o;)i=u[c],e(i,a),a=i;t(n,r)}e(n,null)}function vi(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function di(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function mi(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function yi(n,t){return n.value-t.value}function xi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Mi(n,t){n._pack_next=t,t._pack_prev=n}function _i(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function bi(n){function t(n){l=Math.min(n.x-n.r,l),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(wi),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))for(i=e[2],Ei(r,u,i),t(i),xi(r,i),r._pack_prev=i,xi(i,u),u=r._pack_next,o=3;s>o;o++){Ei(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(_i(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!_i(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?Mi(r,u=a):Mi(r=c,u),o--):(xi(r,i),u=i,t(i))}var m=(l+f)/2,y=(h+g)/2,x=0;for(o=0;s>o;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(Si)}}function wi(n){n._pack_next=n._pack_prev=n}function Si(n){delete n._pack_next,delete n._pack_prev}function ki(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)ki(u[i],t,e,r)}function Ei(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),s=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+s*i,e.y=n.y+c*i-s*u}else e.x=n.x+r,e.y=n.y}function Ai(n){return 1+Xo.max(n,function(n){return n.y})}function Ci(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ni(n){var t=n.children;return t&&t.length?Ni(t[0]):n}function Li(n){var t,e=n.children;return e&&(t=e.length)?Li(e[t-1]):n}function Ti(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function qi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function zi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ri(n){return n.rangeExtent?n.rangeExtent():zi(n.range())}function Di(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Pi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Ui(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ls}function ji(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=Xo.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Hi(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?ji:Di,c=r?Pu:Du;return o=u(n,t,c,e),a=u(t,n,c,fu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Nu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Ii(n,t)},i.tickFormat=function(t,e){return Zi(n,t,e)},i.nice=function(t){return Oi(n,t),u()},i.copy=function(){return Hi(n,t,e,r)},u()}function Fi(n,t){return Xo.rebind(n,t,\"range\",\"rangeRound\",\"interpolate\",\"clamp\")}function Oi(n,t){return Pi(n,Ui(Yi(n,t)[2]))}function Yi(n,t){null==t&&(t=10);var e=zi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Ii(n,t){return Xo.range.apply(Xo,Yi(n,t))}function Zi(n,t,e){var r=Yi(n,t);return Xo.format(e?e.replace(Qa,function(n,t,e,u,i,o,a,c,s,l){return[t,e,u,i,o,a,c,s||\".\"+Xi(l,r),l].join(\"\")}):\",.\"+Vi(r[2])+\"f\")}function Vi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Xi(n,t){var e=Vi(t[2]);return n in fs?Math.abs(e-Vi(Math.max(Math.abs(t[0]),Math.abs(t[1]))))+ +(\"e\"!==n):e-2*(\"%\"===n)}function $i(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Pi(r.map(u),e?Math:gs);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=zi(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(l-s)){if(e){for(;l>s;s++)for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}else for(o.push(i(s));s++<l;)for(var h=f-1;h>0;h--)o.push(i(s)*h);for(s=0;o[s]<a;s++);for(l=o.length;o[l-1]>c;l--);o=o.slice(s,l)}return o},o.tickFormat=function(n,t){if(!arguments.length)return hs;arguments.length<2?t=hs:\"function\"!=typeof t&&(t=Xo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):\"\"}},o.copy=function(){return $i(n.copy(),t,e,r)},Fi(o,n)}function Bi(n,t,e){function r(t){return n(u(t))}var u=Wi(t),i=Wi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Ii(e,n)},r.tickFormat=function(n,t){return Zi(e,n,t)},r.nice=function(n){return r.domain(Oi(e,n))},r.exponent=function(o){return arguments.length?(u=Wi(t=o),i=Wi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Bi(n.copy(),t,e)},Fi(r,n)}function Wi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Ji(n,t){function e(e){return o[((i.get(e)||\"range\"===t.t&&i.set(e,n.push(e)))-1)%o.length]}function r(t,e){return Xo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++a<c;)i.has(o=r[a])||i.set(o,n.push(o));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(o=n,a=0,t={t:\"range\",a:arguments},e):o},e.rangePoints=function(u,i){arguments.length<2&&(i=0);var c=u[0],s=u[1],l=(s-c)/(Math.max(1,n.length-1)+i);return o=r(n.length<2?(c+s)/2:c+l*i/2,l),a=0,t={t:\"rangePoints\",a:arguments},e},e.rangeBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=(f-l)/(n.length-i+2*c);return o=r(l+h*c,h),s&&o.reverse(),a=h*(1-i),t={t:\"rangeBands\",a:arguments},e},e.rangeRoundBands=function(u,i,c){arguments.length<2&&(i=0),arguments.length<3&&(c=i);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=Math.floor((f-l)/(n.length-i+2*c)),g=f-l-(n.length-i)*h;return o=r(l+Math.round(g/2),h),s&&o.reverse(),a=Math.round(h*(1-i)),t={t:\"rangeRoundBands\",a:arguments},e},e.rangeBand=function(){return a},e.rangeExtent=function(){return zi(t.a[0])},e.copy=function(){return Ji(n,t)},e.domain(n)}function Gi(n,t){function e(){var e=0,i=t.length;for(u=[];++e<i;)u[e-1]=Xo.quantile(n,e/i);return r}function r(n){return isNaN(n=+n)?void 0:t[Xo.bisect(u,n)]}var u;return r.domain=function(t){return arguments.length?(n=t.filter(function(n){return!isNaN(n)}).sort(Xo.ascending),e()):n},r.range=function(n){return arguments.length?(t=n,e()):t},r.quantiles=function(){return u},r.invertExtent=function(e){return e=t.indexOf(e),0>e?[0/0,0/0]:[e>0?u[e-1]:n[0],e<u.length?u[e]:n[n.length-1]]},r.copy=function(){return Gi(n,t)},e()}function Ki(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Ki(n,t,e)},u()}function Qi(n,t){function e(e){return e>=e?t[Xo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Qi(n,t)},e}function no(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Ii(n,t)},t.tickFormat=function(t,e){return Zi(n,t,e)},t.copy=function(){return no(n)},t}function to(n){return n.innerRadius}function eo(n){return n.outerRadius}function ro(n){return n.startAngle}function uo(n){return n.endAngle}function io(n){function t(t){function o(){s.push(\"M\",i(n(l),a))}for(var c,s=[],l=[],f=-1,h=t.length,g=_t(e),p=_t(r);++f<h;)u.call(this,c=t[f],f)?l.push([+g.call(this,c,f),+p.call(this,c,f)]):l.length&&(o(),l=[]);return l.length&&o(),s.length?s.join(\"\"):null}var e=br,r=wr,u=be,i=oo,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o=\"function\"==typeof n?i=n:(i=Ms.get(n)||oo).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function oo(n){return n.join(\"L\")}function ao(n){return oo(n)+\"Z\"}function co(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r[0]+(r=n[t])[0])/2,\"V\",r[1]);return e>1&&u.push(\"H\",r[0]),u.join(\"\")}function so(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"V\",(r=n[t])[1],\"H\",r[0]);return u.join(\"\")}function lo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],\",\",r[1]];++t<e;)u.push(\"H\",(r=n[t])[0],\"V\",r[1]);return u.join(\"\")}function fo(n,t){return n.length<4?oo(n):n[1]+po(n.slice(1,n.length-1),vo(n,t))}function ho(n,t){return n.length<3?oo(n):n[0]+po((n.push(n[0]),n),vo([n[n.length-2]].concat(n,[n[1]]),t))}function go(n,t){return n.length<3?oo(n):n[0]+po(n,vo(n,t))}function po(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return oo(n);var e=n.length!=t.length,r=\"\",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+=\"Q\"+(i[0]-2*o[0]/3)+\",\"+(i[1]-2*o[1]/3)+\",\"+i[0]+\",\"+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+=\"C\"+(u[0]+o[0])+\",\"+(u[1]+o[1])+\",\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1];for(var s=2;s<t.length;s++,c++)i=n[c],a=t[s],r+=\"S\"+(i[0]-a[0])+\",\"+(i[1]-a[1])+\",\"+i[0]+\",\"+i[1]}if(e){var l=n[c];r+=\"Q\"+(i[0]+2*a[0]/3)+\",\"+(i[1]+2*a[1]/3)+\",\"+l[0]+\",\"+l[1]}return r}function vo(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function mo(n){if(n.length<3)return oo(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,\",\",i,\"L\",_o(ws,o),\",\",_o(ws,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),bo(c,o,a);return n.pop(),c.push(\"L\",r),c.join(\"\")}function yo(n){if(n.length<4)return oo(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(_o(ws,i)+\",\"+_o(ws,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),bo(e,i,o);return e.join(\"\")}function xo(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[_o(ws,o),\",\",_o(ws,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),bo(t,o,a);return t.join(\"\")}function Mo(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,s=-1;++s<=e;)r=n[s],u=s/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return mo(n)}function _o(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function bo(n,t,e){n.push(\"C\",_o(_s,t),\",\",_o(_s,e),\",\",_o(bs,t),\",\",_o(bs,e),\",\",_o(ws,t),\",\",_o(ws,e))}function wo(n,t){return(t[1]-n[1])/(t[0]-n[0])}function So(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=wo(u,i);++t<e;)r[t]=(o+(o=wo(u=i,i=n[t+1])))/2;return r[t]=o,r}function ko(n){for(var t,e,r,u,i=[],o=So(n),a=-1,c=n.length-1;++a<c;)t=wo(n[a],n[a+1]),oa(t)<Aa?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Eo(n){return n.length<3?oo(n):n[0]+po(n,ko(n))}function Ao(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]+ys,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Co(n){function t(t){function c(){v.push(\"M\",a(n(m),f),l,s(n(d.reverse()),f),\"Z\")}for(var h,g,p,v=[],d=[],m=[],y=-1,x=t.length,M=_t(e),_=_t(u),b=e===r?function(){return g}:_t(r),w=u===i?function(){return p}:_t(i);++y<x;)o.call(this,h=t[y],y)?(d.push([g=+M.call(this,h,y),p=+_.call(this,h,y)]),m.push([+b.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(\"\"):null}var e=br,r=br,u=0,i=wr,o=be,a=oo,c=a.key,s=a,l=\"L\",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c=\"function\"==typeof n?a=n:(a=Ms.get(n)||oo).key,s=a.reverse||a,l=a.closed?\"M\":\"L\",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function No(n){return n.radius}function Lo(n){return[n.x,n.y]}function To(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]+ys;return[e*Math.cos(r),e*Math.sin(r)]}}function qo(){return 64}function zo(){return\"circle\"}function Ro(n){var t=Math.sqrt(n/Sa);return\"M0,\"+t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+-t+\"A\"+t+\",\"+t+\" 0 1,1 0,\"+t+\"Z\"}function Do(n,t){return fa(n,Ns),n.id=t,n}function Po(n,t,e,r){var u=n.id;return R(n,\"function\"==typeof e?function(n,i,o){n.__transition__[u].tween.set(t,r(e.call(n,n.__data__,i,o)))}:(e=r(e),function(n){n.__transition__[u].tween.set(t,e)}))}function Uo(n){return null==n&&(n=\"\"),function(){this.textContent=n}}function jo(n,t,e,r){var i=n.__transition__||(n.__transition__={active:0,count:0}),o=i[e];if(!o){var a=r.time;o=i[e]={tween:new u,time:a,ease:r.ease,delay:r.delay,duration:r.duration},++i.count,Xo.timer(function(r){function u(r){return i.active>e?s():(i.active=e,o.event&&o.event.start.call(n,l,t),o.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Xo.timer(function(){return p.c=c(r||1)?be:c,1},0,a),void 0)}function c(r){if(i.active!==e)return s();for(var u=r/g,a=f(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,l,t),s()):void 0}function s(){return--i.count?delete i[e]:delete n.__transition__,1}var l=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=Ja,v=[];return p.t=h+a,r>=h?u(r-h):(p.c=u,void 0)},0,a)}}function Ho(n,t){n.attr(\"transform\",function(n){return\"translate(\"+t(n)+\",0)\"})}function Fo(n,t){n.attr(\"transform\",function(n){return\"translate(0,\"+t(n)+\")\"})}function Oo(n){return n.toISOString()}function Yo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Xo.bisect(js,u);return i==js.length?[t.year,Yi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/js[i-1]<js[i]/u?i-1:i]:[Os,Yi(n,e)[2]]}return r.invert=function(t){return Io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Io(+e+1),t).length}var i=r.domain(),o=zi(i),a=null==n?u(o,10):\"number\"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Pi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=zi(r.domain()),i=null==n?u(e,10):\"number\"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Yo(n.copy(),t,e)},Fi(r,n)}function Io(n){return new Date(n)}function Zo(n){return JSON.parse(n.responseText)}function Vo(n){var t=Wo.createRange();return t.selectNode(Wo.body),t.createContextualFragment(n.responseText)}var Xo={version:\"3.4.3\"};Date.now||(Date.now=function(){return+new Date});var $o=[].slice,Bo=function(n){return $o.call(n)},Wo=document,Jo=Wo.documentElement,Go=window;try{Bo(Jo.childNodes)[0].nodeType}catch(Ko){Bo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{Wo.createElement(\"div\").style.setProperty(\"opacity\",0,\"\")}catch(Qo){var na=Go.Element.prototype,ta=na.setAttribute,ea=na.setAttributeNS,ra=Go.CSSStyleDeclaration.prototype,ua=ra.setProperty;na.setAttribute=function(n,t){ta.call(this,n,t+\"\")},na.setAttributeNS=function(n,t,e){ea.call(this,n,t,e+\"\")},ra.setProperty=function(n,t,e){ua.call(this,n,t+\"\",e)}}Xo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},Xo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Xo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},Xo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},Xo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o&&!(null!=(e=u=n[i])&&e>=e);)e=u=void 0;for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o&&!(null!=(e=u=t.call(n,n[i],i))&&e>=e);)e=void 0;for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},Xo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i<u;)isNaN(e=+n[i])||(r+=e);else for(;++i<u;)isNaN(e=+t.call(n,n[i],i))||(r+=e);return r},Xo.mean=function(t,e){var r,u=t.length,i=0,o=-1,a=0;if(1===arguments.length)for(;++o<u;)n(r=t[o])&&(i+=(r-i)/++a);else for(;++o<u;)n(r=e.call(t,t[o],o))&&(i+=(r-i)/++a);return a?i:void 0},Xo.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},Xo.median=function(t,e){return arguments.length>1&&(t=t.map(e)),t=t.filter(n),t.length?Xo.quantile(t.sort(Xo.ascending),.5):void 0},Xo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)<e?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;e<n.call(t,t[i],i)?u=i:r=i+1}return r}}};var ia=Xo.bisector(function(n){return n});Xo.bisectLeft=ia.left,Xo.bisect=Xo.bisectRight=ia.right,Xo.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},Xo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Xo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Xo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=Xo.min(arguments,t),r=new Array(e);++n<e;)for(var u,i=-1,o=r[n]=new Array(u);++i<u;)o[i]=arguments[i][n];return r},Xo.transpose=function(n){return Xo.zip.apply(Xo,n)},Xo.keys=function(n){var t=[];for(var e in n)t.push(e);return t},Xo.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},Xo.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},Xo.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var oa=Math.abs;Xo.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw new Error(\"infinite range\");var u,i=[],o=e(oa(r)),a=-1;if(n*=o,t*=o,r*=o,0>r)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)<t;)i.push(u/o);return i},Xo.map=function(n){var t=new u;if(n instanceof u)n.forEach(function(n,e){t.set(n,e)});else for(var e in n)t.set(e,n[e]);return t},r(u,{has:i,get:function(n){return this[aa+n]},set:function(n,t){return this[aa+n]=t},remove:o,keys:a,values:function(){var n=[];return this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return this.forEach(function(t,e){n.push({key:t,value:e})}),n},size:c,empty:s,forEach:function(n){for(var t in this)t.charCodeAt(0)===ca&&n.call(this,t.substring(1),this[t])}});var aa=\"\\x00\",ca=aa.charCodeAt(0);Xo.nest=function(){function n(t,a,c){if(c>=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var s,l,f,h,g=-1,p=a.length,v=o[c++],d=new u;++g<p;)(h=d.get(s=v(l=a[g])))?h.push(l):d.set(s,[l]);return t?(l=t(),f=function(e,r){l.set(e,n(t,r,c))}):(l={},f=function(e,r){l[e]=n(t,r,c)}),d.forEach(f),l}function t(n,e){if(e>=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(Xo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},Xo.set=function(n){var t=new l;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(l,{has:i,add:function(n){return this[aa+n]=!0,n},remove:function(n){return n=aa+n,n in this&&delete this[n]},values:a,size:c,empty:s,forEach:function(n){for(var t in this)t.charCodeAt(0)===ca&&n.call(this,t.substring(1))}}),Xo.behavior={},Xo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=f(n,t,t[e]);return n};var sa=[\"webkit\",\"ms\",\"moz\",\"Moz\",\"o\",\"O\"];Xo.dispatch=function(){for(var n=new p,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=v(n);return n},p.prototype.on=function(n,t){var e=n.indexOf(\".\"),r=\"\";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Xo.event=null,Xo.requote=function(n){return n.replace(la,\"\\\\$&\")};var la=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g,fa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ha=function(n,t){return t.querySelector(n)},ga=function(n,t){return t.querySelectorAll(n)},pa=Jo[h(Jo,\"matchesSelector\")],va=function(n,t){return pa.call(n,t)};\"function\"==typeof Sizzle&&(ha=function(n,t){return Sizzle(n,t)[0]||null},ga=Sizzle,va=Sizzle.matchesSelector),Xo.selection=function(){return xa};var da=Xo.selection.prototype=[];da.select=function(n){var t,e,r,u,i=[];n=M(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,s=r.length;++c<s;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&\"__data__\"in u&&(e.__data__=u.__data__)):t.push(null)}return x(i)},da.selectAll=function(n){var t,e,r=[];n=_(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=Bo(n.call(e,e.__data__,a,u))),t.parentNode=e);return x(r)};var ma={svg:\"http://www.w3.org/2000/svg\",xhtml:\"http://www.w3.org/1999/xhtml\",xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};Xo.ns={prefix:ma,qualify:function(n){var t=n.indexOf(\":\"),e=n;return t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),ma.hasOwnProperty(e)?{space:ma[e],local:n}:n}},da.attr=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node();return n=Xo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(b(t,n[t]));return this}return this.each(b(n,t))},da.classed=function(n,t){if(arguments.length<2){if(\"string\"==typeof n){var e=this.node(),r=(n=k(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute(\"class\");++u<r;)if(!S(n[u]).test(t))return!1;return!0}for(t in n)this.each(E(t,n[t]));return this}return this.each(E(n,t))},da.style=function(n,t,e){var r=arguments.length;if(3>r){if(\"string\"!=typeof n){2>r&&(t=\"\");for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return Go.getComputedStyle(this.node(),null).getPropertyValue(n);e=\"\"}return this.each(C(n,t,e))},da.property=function(n,t){if(arguments.length<2){if(\"string\"==typeof n)return this.node()[n];for(t in n)this.each(N(t,n[t]));return this}return this.each(N(n,t))},da.text=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?\"\":t}:null==n?function(){this.textContent=\"\"}:function(){this.textContent=n}):this.node().textContent},da.html=function(n){return arguments.length?this.each(\"function\"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?\"\":t}:null==n?function(){this.innerHTML=\"\"}:function(){this.innerHTML=n}):this.node().innerHTML},da.append=function(n){return n=L(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},da.insert=function(n,t){return n=L(n),t=M(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},da.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},da.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new u,y=new u,x=[];for(r=-1;++r<a;)d=t.call(i=n[r],i.__data__,r),m.has(d)?v[r]=i:m.set(d,i),x.push(d);for(r=-1;++r<f;)d=t.call(e,o=e[r],r),(i=m.get(d))?(g[r]=i,i.__data__=o):y.has(d)||(p[r]=T(o)),y.set(d,o),m.remove(d);for(r=-1;++r<a;)m.has(x[r])&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],o=e[r],i?(i.__data__=o,g[r]=i):p[r]=T(o);for(;f>r;++r)p[r]=T(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.push(v)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++o<a;)(i=r[o])&&(n[o]=i.__data__);return n}var c=D([]),s=x([]),l=x([]);if(\"function\"==typeof n)for(;++o<a;)e(r=this[o],n.call(r,r.parentNode.__data__,o));else for(;++o<a;)e(r=this[o],n);return s.enter=function(){return c},s.exit=function(){return l},s},da.datum=function(n){return arguments.length?this.property(\"__data__\",n):this.property(\"__data__\")},da.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=q(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return x(u)},da.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},da.sort=function(n){n=z.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},da.each=function(n){return R(this,function(t,e,r){n.call(t,t.__data__,e,r)})},da.call=function(n){var t=Bo(arguments);return n.apply(t[0]=this,t),this},da.empty=function(){return!this.node()},da.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},da.size=function(){var n=0;return this.each(function(){++n}),n};var ya=[];Xo.selection.enter=D,Xo.selection.enter.prototype=ya,ya.append=da.append,ya.empty=da.empty,ya.node=da.node,ya.call=da.call,ya.size=da.size,ya.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var s=-1,l=u.length;++s<l;)(i=u[s])?(t.push(r[s]=e=n.call(u.parentNode,i.__data__,s,a)),e.__data__=i.__data__):t.push(null)}return x(o)},ya.insert=function(n,t){return arguments.length<2&&(t=P(this)),da.insert.call(this,n,t)},da.transition=function(){for(var n,t,e=ks||++Ls,r=[],u=Es||{time:Date.now(),ease:yu,delay:0,duration:250},i=-1,o=this.length;++i<o;){r.push(n=[]);for(var a=this[i],c=-1,s=a.length;++c<s;)(t=a[c])&&jo(t,c,e,u),n.push(t)}return Do(r,e)},da.interrupt=function(){return this.each(U)},Xo.select=function(n){var t=[\"string\"==typeof n?ha(n,Wo):n];return t.parentNode=Jo,x([t])},Xo.selectAll=function(n){var t=Bo(\"string\"==typeof n?ga(n,Wo):n);return t.parentNode=Jo,x([t])};var xa=Xo.select(Jo);da.on=function(n,t,e){var r=arguments.length;if(3>r){if(\"string\"!=typeof n){2>r&&(t=!1);for(e in n)this.each(j(e,n[e],t));return this}if(2>r)return(r=this.node()[\"__on\"+n])&&r._;e=!1}return this.each(j(n,t,e))};var Ma=Xo.map({mouseenter:\"mouseover\",mouseleave:\"mouseout\"});Ma.forEach(function(n){\"on\"+n in Wo&&Ma.remove(n)});var _a=\"onselectstart\"in Wo?null:h(Jo.style,\"userSelect\"),ba=0;Xo.mouse=function(n){return Y(n,m())};var wa=/WebKit/.test(Go.navigator.userAgent)?-1:0;Xo.touches=function(n,t){return arguments.length<2&&(t=m().touches),t?Bo(t).map(function(t){var e=Y(n,t);return e.identifier=t.identifier,e}):[]},Xo.behavior.drag=function(){function n(){this.on(\"mousedown.drag\",o).on(\"touchstart.drag\",a)}function t(){return Xo.event.changedTouches[0].identifier}function e(n,t){return Xo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){var n=t(l,g),e=n[0]-v[0],r=n[1]-v[1];d|=e|r,v=n,f({type:\"drag\",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+\".\"+p,null).on(r+\".\"+p,null),y(d&&Xo.event.target===h),f({type:\"dragend\"})}var c,s=this,l=s.parentNode,f=u.of(s,arguments),h=Xo.event.target,g=n(),p=null==g?\"drag\":\"drag-\"+g,v=t(l,g),d=0,m=Xo.select(Go).on(e+\".\"+p,o).on(r+\".\"+p,a),y=O();i?(c=i.apply(s,arguments),c=[c.x-v[0],c.y-v[1]]):c=[0,0],f({type:\"dragstart\"})}}var u=y(n,\"drag\",\"dragstart\",\"dragend\"),i=null,o=r(g,Xo.mouse,\"mousemove\",\"mouseup\"),a=r(t,e,\"touchmove\",\"touchend\");return n.origin=function(t){return arguments.length?(i=t,n):i},Xo.rebind(n,u,\"on\")};var Sa=Math.PI,ka=2*Sa,Ea=Sa/2,Aa=1e-6,Ca=Aa*Aa,Na=Sa/180,La=180/Sa,Ta=Math.SQRT2,qa=2,za=4;Xo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=B(v),o=i/(qa*h)*(e*W(Ta*t+v)-$(v));return[r+o*s,u+o*l,i*e/B(Ta*t+v)]}return[r+n*s,u+n*l,i*Math.exp(Ta*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+za*f)/(2*i*qa*h),p=(c*c-i*i-za*f)/(2*c*qa*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ta;return e.duration=1e3*y,e},Xo.behavior.zoom=function(){function n(n){n.on(A,s).on(Pa+\".zoom\",f).on(C,h).on(\"dblclick.zoom\",g).on(L,l)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(M.range().map(function(n){return(n-S.x)/S.k}).map(M.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:\"zoomstart\"})}function a(n){i(),n({type:\"zoom\",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:\"zoomend\"})}function s(){function n(){l=1,u(Xo.mouse(r),g),a(i)}function e(){f.on(C,Go===r?h:null).on(N,null),p(l&&Xo.event.target===s),c(i)}var r=this,i=T.of(r,arguments),s=Xo.event.target,l=0,f=Xo.select(Go).on(C,n).on(N,e),g=t(Xo.mouse(r)),p=O();U.call(r),o(i)}function l(){function n(){var n=Xo.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=Xo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-x){var s=o[0],l=v[s.identifier];r(2*S.k),u(s,l),d(),a(p)}x=c}else if(o.length>1){var s=o[0],f=o[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function i(){for(var n,t,e,i,o=Xo.touches(g),c=0,s=o.length;s>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=m&&Math.sqrt(l/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}x=null,u(n,t),a(p)}function f(){if(Xo.event.touches.length){for(var t=Xo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}b.on(M,null).on(_,null),w.on(A,s).on(L,l),k(),c(p)}var h,g=this,p=T.of(g,arguments),v={},m=0,y=Xo.event.changedTouches[0].identifier,M=\"touchmove.zoom-\"+y,_=\"touchend.zoom-\"+y,b=Xo.select(Go).on(M,i).on(_,f),w=Xo.select(g).on(A,null).on(L,e),k=O();U.call(g),e(),o(p)}function f(){var n=T.of(this,arguments);m?clearTimeout(m):(U.call(this),o(n)),m=setTimeout(function(){m=null,c(n)},50),d();var e=v||Xo.mouse(this);p||(p=t(e)),r(Math.pow(2,.002*Ra())*S.k),u(e,p),a(n)}function h(){p=null}function g(){var n=T.of(this,arguments),e=Xo.mouse(this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Xo.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var p,v,m,x,M,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=Da,A=\"mousedown.zoom\",C=\"mousemove.zoom\",N=\"mouseup.zoom\",L=\"touchstart.zoom\",T=y(n,\"zoomstart\",\"zoom\",\"zoomend\");return n.event=function(n){n.each(function(){var n=T.of(this,arguments),t=S;ks?Xo.select(this).transition().each(\"start.zoom\",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween(\"zoom:zoom\",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Xo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each(\"end.zoom\",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?Da:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,M=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Xo.rebind(n,T,\"on\")};var Ra,Da=[0,1/0],Pa=\"onwheel\"in Wo?(Ra=function(){return-Xo.event.deltaY*(Xo.event.deltaMode?120:1)},\"wheel\"):\"onmousewheel\"in Wo?(Ra=function(){return Xo.event.wheelDelta},\"mousewheel\"):(Ra=function(){return-Xo.event.detail},\"MozMousePixelScroll\");G.prototype.toString=function(){return this.rgb()+\"\"},Xo.hsl=function(n,t,e){return 1===arguments.length?n instanceof Q?K(n.h,n.s,n.l):dt(\"\"+n,mt,K):K(+n,+t,+e)};var Ua=Q.prototype=new G;Ua.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,this.l/n)},Ua.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,n*this.l)},Ua.rgb=function(){return nt(this.h,this.s,this.l)},Xo.hcl=function(n,t,e){return 1===arguments.length?n instanceof et?tt(n.h,n.c,n.l):n instanceof it?at(n.l,n.a,n.b):at((n=yt((n=Xo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):tt(+n,+t,+e)};var ja=et.prototype=new G;ja.brighter=function(n){return tt(this.h,this.c,Math.min(100,this.l+Ha*(arguments.length?n:1)))},ja.darker=function(n){return tt(this.h,this.c,Math.max(0,this.l-Ha*(arguments.length?n:1)))},ja.rgb=function(){return rt(this.h,this.c,this.l).rgb()},Xo.lab=function(n,t,e){return 1===arguments.length?n instanceof it?ut(n.l,n.a,n.b):n instanceof et?rt(n.l,n.c,n.h):yt((n=Xo.rgb(n)).r,n.g,n.b):ut(+n,+t,+e)};var Ha=18,Fa=.95047,Oa=1,Ya=1.08883,Ia=it.prototype=new G;Ia.brighter=function(n){return ut(Math.min(100,this.l+Ha*(arguments.length?n:1)),this.a,this.b)},Ia.darker=function(n){return ut(Math.max(0,this.l-Ha*(arguments.length?n:1)),this.a,this.b)},Ia.rgb=function(){return ot(this.l,this.a,this.b)},Xo.rgb=function(n,t,e){return 1===arguments.length?n instanceof pt?gt(n.r,n.g,n.b):dt(\"\"+n,gt,nt):gt(~~n,~~t,~~e)};var Za=pt.prototype=new G;Za.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),gt(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):gt(u,u,u)},Za.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),gt(~~(n*this.r),~~(n*this.g),~~(n*this.b))},Za.hsl=function(){return mt(this.r,this.g,this.b)},Za.toString=function(){return\"#\"+vt(this.r)+vt(this.g)+vt(this.b)};var Va=Xo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Va.forEach(function(n,t){Va.set(n,ft(t))}),Xo.functor=_t,Xo.xhr=wt(bt),Xo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=St(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'\"'+n.replace(/\\\"/g,'\"\"')+'\"':n}var a=new RegExp('[\"'+n+\"\\n]\"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function(\"d\",\"return {\"+n.map(function(n,t){return JSON.stringify(n)+\": d[\"+t+\"]\"}).join(\",\")+\"}\");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++<s;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}l=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++l):10===r&&(u=!0),n.substring(t+1,e).replace(/\"\"/g,'\"')}for(;s>l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new l,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join(\"\\n\")},e.formatRows=function(n){return n.map(i).join(\"\\n\")},e},Xo.csv=Xo.dsv(\",\",\"text/csv\"),Xo.tsv=Xo.dsv(\"\t\",\"text/tab-separated-values\");var Xa,$a,Ba,Wa,Ja,Ga=Go[h(Go,\"requestAnimationFrame\")]||function(n){setTimeout(n,17)};Xo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};$a?$a.n=i:Xa=i,$a=i,Ba||(Wa=clearTimeout(Wa),Ba=1,Ga(Et))},Xo.timer.flush=function(){At(),Ct()},Xo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ka=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"].map(Lt);Xo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Xo.round(n,Nt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),Ka[8+e/3]};var Qa=/(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i,nc=Xo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Xo.round(n,Nt(n,t))).toFixed(Math.max(0,Math.min(20,Nt(n*(1+1e-15),t))))}}),tc=Xo.time={},ec=Date;zt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){rc.setUTCDate.apply(this._,arguments)},setDay:function(){rc.setUTCDay.apply(this._,arguments)},setFullYear:function(){rc.setUTCFullYear.apply(this._,arguments)},setHours:function(){rc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){rc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){rc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){rc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){rc.setUTCSeconds.apply(this._,arguments)},setTime:function(){rc.setTime.apply(this._,arguments)}};var rc=Date.prototype;tc.year=Rt(function(n){return n=tc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),tc.years=tc.year.range,tc.years.utc=tc.year.utc.range,tc.day=Rt(function(n){var t=new ec(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),tc.days=tc.day.range,tc.days.utc=tc.day.utc.range,tc.dayOfYear=function(n){var t=tc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"].forEach(function(n,t){t=7-t;var e=tc[n]=Rt(function(n){return(n=tc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});tc[n+\"s\"]=e.range,tc[n+\"s\"].utc=e.utc.range,tc[n+\"OfYear\"]=function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)}}),tc.week=tc.sunday,tc.weeks=tc.sunday.range,tc.weeks.utc=tc.sunday.utc.range,tc.weekOfYear=tc.sundayOfYear;var uc={\"-\":\"\",_:\" \",0:\"0\"},ic=/^\\s*\\d+/,oc=/^%/;Xo.locale=function(n){return{numberFormat:Tt(n),timeFormat:Pt(n)}};var ac=Xo.locale({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],dateTime:\"%a %b %e %X %Y\",date:\"%m/%d/%Y\",time:\"%H:%M:%S\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});Xo.format=ac.numberFormat,Xo.geo={},re.prototype={s:0,t:0,add:function(n){ue(n,this.t,cc),ue(cc.s,this.s,this),this.s?this.t+=cc.t:this.s=cc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cc=new re;Xo.geo.stream=function(n,t){n&&sc.hasOwnProperty(n.type)?sc[n.type](n,t):ie(n,t)};var sc={Feature:function(n,t){ie(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)ie(e[r].geometry,t)}},lc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){oe(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)oe(e[r],t,0)},Polygon:function(n,t){ae(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ae(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)ie(e[r],t)}};Xo.geo.area=function(n){return fc=0,Xo.geo.stream(n,gc),fc};var fc,hc=new re,gc={sphere:function(){fc+=4*Sa},point:g,lineStart:g,lineEnd:g,polygonStart:function(){hc.reset(),gc.lineStart=ce},polygonEnd:function(){var n=2*hc;fc+=0>n?4*Sa+n:n,gc.lineStart=gc.lineEnd=gc.point=g}};Xo.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=se([t*Na,e*Na]);if(m){var u=fe(m,r),i=[u[1],-u[0],0],o=fe(i,u);pe(o),o=ve(o);var c=t-p,s=c>0?1:-1,v=o[0]*La*s,d=oa(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*La;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*La;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=oa(r)>180?r+(r>0?360:-360):r}else v=n,d=e;gc.point(n,e),t(n,e)}function i(){gc.lineStart()}function o(){u(v,d),gc.lineEnd(),oa(y)>Aa&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var l,f,h,g,p,v,d,m,y,x,M,_={point:n,lineStart:e,lineEnd:r,polygonStart:function(){_.point=u,_.lineStart=i,_.lineEnd=o,y=0,gc.polygonStart()},polygonEnd:function(){gc.polygonEnd(),_.point=n,_.lineStart=e,_.lineEnd=r,0>hc?(l=-(h=180),f=-(g=90)):y>Aa?g=90:-Aa>y&&(f=-90),M[0]=l,M[1]=h}};return function(n){g=h=-(l=f=1/0),x=[],Xo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,l=e[0],h=u[1])}return x=M=null,1/0===l||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[l,f],[h,g]]}}(),Xo.geo.centroid=function(n){pc=vc=dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,kc);var t=bc,e=wc,r=Sc,u=t*t+e*e+r*r;return Ca>u&&(t=xc,e=Mc,r=_c,Aa>vc&&(t=dc,e=mc,r=yc),u=t*t+e*e+r*r,Ca>u)?[0/0,0/0]:[Math.atan2(e,t)*La,X(r/Math.sqrt(u))*La]};var pc,vc,dc,mc,yc,xc,Mc,_c,bc,wc,Sc,kc={sphere:g,point:me,lineStart:xe,lineEnd:Me,polygonStart:function(){kc.lineStart=_e},polygonEnd:function(){kc.lineStart=xe}},Ec=Ee(be,Te,ze,[-Sa,-Sa/2]),Ac=1e9;Xo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Pe(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Xo.geo.conicEqualArea=function(){return je(He)}).raw=He,Xo.geo.albers=function(){return Xo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Xo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Xo.geo.albers(),o=Xo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Xo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var s=i.scale(),l=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[l-.455*s,f-.238*s],[l+.455*s,f+.238*s]]).stream(c).point,r=o.translate([l-.307*s,f+.201*s]).clipExtent([[l-.425*s+Aa,f+.12*s+Aa],[l-.214*s-Aa,f+.234*s-Aa]]).stream(c).point,u=a.translate([l-.205*s,f+.212*s]).clipExtent([[l-.214*s+Aa,f+.166*s+Aa],[l-.115*s-Aa,f+.234*s-Aa]]).stream(c).point,n},n.scale(1070)};var Cc,Nc,Lc,Tc,qc,zc,Rc={point:g,lineStart:g,lineEnd:g,polygonStart:function(){Nc=0,Rc.lineStart=Fe},polygonEnd:function(){Rc.lineStart=Rc.lineEnd=Rc.point=g,Cc+=oa(Nc/2)}},Dc={point:Oe,lineStart:g,lineEnd:g,polygonStart:g,polygonEnd:g},Pc={point:Ze,lineStart:Ve,lineEnd:Xe,polygonStart:function(){Pc.lineStart=$e},polygonEnd:function(){Pc.point=Ze,Pc.lineStart=Ve,Pc.lineEnd=Xe}};Xo.geo.path=function(){function n(n){return n&&(\"function\"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Xo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Cc=0,Xo.geo.stream(n,u(Rc)),Cc},n.centroid=function(n){return dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,u(Pc)),Sc?[bc/Sc,wc/Sc]:_c?[xc/_c,Mc/_c]:yc?[dc/yc,mc/yc]:[0/0,0/0]},n.bounds=function(n){return qc=zc=-(Lc=Tc=1/0),Xo.geo.stream(n,u(Dc)),[[Lc,Tc],[qc,zc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Je(n):bt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Ye:new Be(n),\"function\"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a=\"function\"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Xo.geo.albersUsa()).context(null)},Xo.geo.transform=function(n){return{stream:function(t){var e=new Ge(t);for(var r in n)e[r]=n[r];return e}}},Ge.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Xo.geo.projection=Qe,Xo.geo.projectionMutator=nr,(Xo.geo.equirectangular=function(){return Qe(er)}).raw=er.invert=er,Xo.geo.rotation=function(n){function t(t){return t=n(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t}return n=ur(n[0]%360*Na,n[1]*Na,n.length>2?n[2]*Na:0),t.invert=function(t){return t=n.invert(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t},t},rr.invert=er,Xo.geo.circle=function(){function n(){var n=\"function\"==typeof r?r.apply(this,arguments):r,t=ur(-n[0]*Na,-n[1]*Na,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=La,n[1]*=La}}),{type:\"Polygon\",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=cr((t=+r)*Na,u*Na),n):t},n.precision=function(r){return arguments.length?(e=cr(t*Na,(u=+r)*Na),n):u},n.angle(90)},Xo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Na,u=n[1]*Na,i=t[1]*Na,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),s=Math.cos(u),l=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=s*l-c*f*a)*e),c*l+s*f*a)},Xo.geo.graticule=function(){function n(){return{type:\"MultiLineString\",coordinates:t()}}function t(){return Xo.range(Math.ceil(i/d)*d,u,d).map(h).concat(Xo.range(Math.ceil(s/m)*m,c,m).map(g)).concat(Xo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return oa(n%d)>Aa}).map(l)).concat(Xo.range(Math.ceil(a/v)*v,o,v).filter(function(n){return oa(n%m)>Aa}).map(f))}var e,r,u,i,o,a,c,s,l,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:\"LineString\",coordinates:n}})},n.outline=function(){return{type:\"Polygon\",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(s).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],s=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),s>c&&(t=s,s=c,c=t),n.precision(y)):[[i,s],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,l=lr(a,o,90),f=fr(r,e,y),h=lr(s,c,90),g=fr(i,u,y),n):y},n.majorExtent([[-180,-90+Aa],[180,90-Aa]]).minorExtent([[-180,-80-Aa],[180,80+Aa]])},Xo.geo.greatArc=function(){function n(){return{type:\"LineString\",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=hr,u=gr;return n.distance=function(){return Xo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t=\"function\"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e=\"function\"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Xo.geo.interpolate=function(n,t){return pr(n[0]*Na,n[1]*Na,t[0]*Na,t[1]*Na)},Xo.geo.length=function(n){return Uc=0,Xo.geo.stream(n,jc),Uc};var Uc,jc={sphere:g,point:g,lineStart:vr,lineEnd:g,polygonStart:g,polygonEnd:g},Hc=dr(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Xo.geo.azimuthalEqualArea=function(){return Qe(Hc)}).raw=Hc;var Fc=dr(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},bt);(Xo.geo.azimuthalEquidistant=function(){return Qe(Fc)}).raw=Fc,(Xo.geo.conicConformal=function(){return je(mr)}).raw=mr,(Xo.geo.conicEquidistant=function(){return je(yr)}).raw=yr;var Oc=dr(function(n){return 1/n},Math.atan);(Xo.geo.gnomonic=function(){return Qe(Oc)}).raw=Oc,xr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ea]},(Xo.geo.mercator=function(){return Mr(xr)}).raw=xr;var Yc=dr(function(){return 1},Math.asin);(Xo.geo.orthographic=function(){return Qe(Yc)}).raw=Yc;var Ic=dr(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Xo.geo.stereographic=function(){return Qe(Ic)}).raw=Ic,_r.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ea]},(Xo.geo.transverseMercator=function(){var n=Mr(_r),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[-n[1],n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},n.rotate([0,0])}).raw=_r,Xo.geom={},Xo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=_t(e),i=_t(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(kr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var s=Sr(a),l=Sr(c),f=l[0]===s[0],h=l[l.length-1]===s[s.length-1],g=[];for(t=s.length-1;t>=0;--t)g.push(n[a[s[t]][2]]);for(t=+f;t<l.length-h;++t)g.push(n[a[l[t]][2]]);return g}var e=br,r=wr;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},Xo.geom.polygon=function(n){return fa(n,Zc),n};var Zc=Xo.geom.polygon.prototype=[];Zc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},Zc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},Zc.clip=function(n){for(var t,e,r,u,i,o,a=Cr(n),c=-1,s=this.length-Cr(this),l=this[s-1];++c<s;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Er(o,l,u)?(Er(i,l,u)||n.push(Ar(i,o,l,u)),n.push(o)):Er(i,l,u)&&n.push(Ar(i,o,l,u)),i=o;a&&n.push(n[0]),l=u}return n};var Vc,Xc,$c,Bc,Wc,Jc=[],Gc=[];Pr.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(jr),t.length},Br.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},Wr.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=Qr(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(Gr(this,e),n=e,e=n.U),e.C=!1,r.C=!0,Kr(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(Kr(this,e),n=e,e=n.U),e.C=!1,r.C=!0,Gr(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?Qr(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,Gr(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,Kr(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,Gr(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,Kr(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,Gr(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,Kr(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},Xo.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return nu(e(n),a).cells.forEach(function(e,a){var c=e.edges,s=e.site,l=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):s.x>=r&&s.x<=i&&s.y>=u&&s.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];l.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Aa)*Aa,y:Math.round(o(n,t)/Aa)*Aa,i:t}})}var r=br,u=wr,i=r,o=u,a=Kc;return n?t(n):(t.links=function(n){return nu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return nu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(jr),c=-1,s=a.length,l=a[s-1].edge,f=l.l===o?l.r:l.l;++c<s;)u=l,i=f,l=a[c].edge,f=l.l===o?l.r:l.l,r<i.i&&r<f.i&&eu(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=_t(r=n),t):r},t.y=function(n){return arguments.length?(o=_t(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?Kc:n,t):a===Kc?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===Kc?null:a&&a[1]},t)};var Kc=[[-1e6,-1e6],[1e6,1e6]];Xo.geom.delaunay=function(n){return Xo.geom.voronoi().triangles(n)},Xo.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,l=n.y;if(null!=c)if(oa(c-e)+oa(l-r)<.01)s(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,s(n,f,c,l,u,i,o,a),s(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else s(n,t,e,r,u,i,o,a)}function s(n,t,e,r,u,o,a,c){var s=.5*(u+a),l=.5*(o+c),f=e>=s,h=r>=l,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=iu()),f?u=s:a=s,h?o=l:c=l,i(n,t,e,r,u,o,a,c)}var l,f,h,g,p,v,d,m,y,x=_t(a),M=_t(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)l=n[g],l.x<v&&(v=l.x),l.y<d&&(d=l.y),l.x>m&&(m=l.x),l.y>y&&(y=l.y),f.push(l.x),h.push(l.y);else for(g=0;p>g;++g){var _=+x(l=n[g],g),b=+M(l,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=iu();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){ou(n,k,v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=l=null,k}var o,a=br,c=wr;return(o=arguments.length)?(a=ru,c=uu,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},Xo.interpolateRgb=au,Xo.interpolateObject=cu,Xo.interpolateNumber=su,Xo.interpolateString=lu;var Qc=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;Xo.interpolate=fu,Xo.interpolators=[function(n,t){var e=typeof t;return(\"string\"===e?Va.has(t)||/^(#|rgb\\(|hsl\\()/.test(t)?au:lu:t instanceof G?au:\"object\"===e?Array.isArray(t)?hu:cu:su)(n,t)}],Xo.interpolateArray=hu;var ns=function(){return bt},ts=Xo.map({linear:ns,poly:xu,quad:function(){return du},cubic:function(){return mu},sin:function(){return Mu},exp:function(){return _u},circle:function(){return bu},elastic:wu,back:Su,bounce:function(){return ku}}),es=Xo.map({\"in\":bt,out:pu,\"in-out\":vu,\"out-in\":function(n){return vu(pu(n))}});Xo.ease=function(n){var t=n.indexOf(\"-\"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):\"in\";return e=ts.get(e)||ns,r=es.get(r)||bt,gu(r(e.apply(null,$o.call(arguments,1))))},Xo.interpolateHcl=Eu,Xo.interpolateHsl=Au,Xo.interpolateLab=Cu,Xo.interpolateRound=Nu,Xo.transform=function(n){var t=Wo.createElementNS(Xo.ns.prefix.svg,\"g\");return(Xo.transform=function(n){if(null!=n){t.setAttribute(\"transform\",n);var e=t.transform.baseVal.consolidate()}return new Lu(e?e.matrix:rs)})(n)},Lu.prototype.toString=function(){return\"translate(\"+this.translate+\")rotate(\"+this.rotate+\")skewX(\"+this.skew+\")scale(\"+this.scale+\")\"};var rs={a:1,b:0,c:0,d:1,e:0,f:0};Xo.interpolateTransform=Ru,Xo.layout={},Xo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Uu(n[e]));return t}},Xo.layout.chord=function(){function n(){var n,s,f,h,g,p={},v=[],d=Xo.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(s=0,g=-1;++g<i;)s+=u[h][g];v.push(s),m.push(Xo.range(i)),n+=s}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(ka-l*i)/n,s=0,h=-1;++h<i;){for(f=s,g=-1;++g<i;){var y=d[h],x=m[y][g],M=u[y][x],_=s,b=s+=M*n;p[y+\"-\"+x]={index:y,subindex:x,startAngle:_,endAngle:b,value:M}}r[y]={index:y,startAngle:f,endAngle:s,value:(s-f)/n},s+=l}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+\"-\"+g],S=p[g+\"-\"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,s={},l=0;return s.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,s):u},s.padding=function(n){return arguments.length?(l=n,e=r=null,s):l},s.sortGroups=function(n){return arguments.length?(o=n,e=r=null,s):o},s.sortSubgroups=function(n){return arguments.length?(a=n,e=null,s):a},s.sortChords=function(n){return arguments.length?(c=n,e&&t(),s):c},s.chords=function(){return e||n(),e},s.groups=function(){return r||n(),r},s},Xo.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var s=t.charge/c;n.px-=i*s,n.py-=o*s}return!0}if(t.point&&c&&p>c){var s=t.pointCharge/c;n.px-=i*s,n.py-=o*s}}return!t.charge}}function t(n){n.px=Xo.event.x,n.py=Xo.event.y,a.resume()}var e,r,u,i,o,a={},c=Xo.dispatch(\"start\",\"tick\",\"end\"),s=[1,1],l=.9,f=us,h=is,g=-30,p=os,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:\"end\",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=s[0]/2,M=s[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Zu(t=Xo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*l,a.y-=(a.py-(a.py=a.y))*l);c.tick({type:\"tick\",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(s=n,a):s},a.linkDistance=function(n){return arguments.length?(f=\"function\"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h=\"function\"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(l=+n,a):l},a.charge=function(n){return arguments.length?(g=\"function\"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:\"start\",alpha:r=n}),Xo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,s=o.length;++a<s;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,l=y.length,p=s[0],v=s[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;l>t;++t)r=y[t],\"number\"==typeof r.source&&(r.source=m[r.source]),\"number\"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n(\"x\",p)),isNaN(r.y)&&(r.y=n(\"y\",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],\"function\"==typeof f)for(t=0;l>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;l>t;++t)u[t]=f;if(i=[],\"function\"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;l>t;++t)i[t]=h;if(o=[],\"function\"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Xo.behavior.drag().origin(bt).on(\"dragstart.force\",Fu).on(\"drag.force\",t).on(\"dragend.force\",Ou)),arguments.length?(this.on(\"mouseover.force\",Yu).on(\"mouseout.force\",Iu).call(e),void 0):e},Xo.rebind(a,c,\"on\")};var us=20,is=1,os=1/0;Xo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(s=c.length)){for(var s,l,f=-1,h=t.children=new Array(s),g=0,p=o+1;++f<s;)l=h[f]=n(c[f],p,a),l.parent=t,g+=l.value;r&&h.sort(r),i&&(t.value=g)}else delete t.children,i&&(t.value=+i.call(e,t,o)||0);return t}function t(n,r){var u=n.children,o=0;if(u&&(a=u.length))for(var a,c=-1,s=r+1;++c<a;)o+=t(u[c],s);else i&&(o=+i.call(e,n,r)||0);return i&&(n.value=o),o}function e(t){var e=[];return n(t,0,e),e}var r=Bu,u=Xu,i=$u;return e.sort=function(n){return arguments.length?(r=n,e):r},e.children=function(n){return arguments.length?(u=n,e):u},e.value=function(n){return arguments.length?(i=n,e):i},e.revalue=function(n){return t(n,0),n},e},Xo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,s=-1;for(r=t.value?r/t.value:0;++s<o;)n(a=i[s],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=Xo.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Vu(e,r)},Xo.layout.pie=function(){function n(i){var o=i.map(function(e,r){return+t.call(n,e,r)}),a=+(\"function\"==typeof r?r.apply(this,arguments):r),c=((\"function\"==typeof u?u.apply(this,arguments):u)-a)/Xo.sum(o),s=Xo.range(i.length);null!=e&&s.sort(e===as?function(n,t){return o[t]-o[n]}:function(n,t){return e(i[n],i[t])});var l=[];return s.forEach(function(n){var t;l[n]={data:i[n],value:t=o[n],startAngle:a,endAngle:a+=t*c}}),l}var t=Number,e=as,r=0,u=ka;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n};var as={};Xo.layout.stack=function(){function n(a,c){var s=a.map(function(e,r){return t.call(n,e,r)}),l=s.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,l,c);s=Xo.permute(s,f),l=Xo.permute(l,f);var h,g,p,v=r.call(n,l,c),d=s.length,m=s[0].length;for(g=0;m>g;++g)for(u.call(n,s[0][g],p=v[g],l[0][g][1]),h=1;d>h;++h)u.call(n,s[h][g],p+=l[h-1][g][1],l[h][g][1]);return a}var t=bt,e=Qu,r=ni,u=Ku,i=Ju,o=Gu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e=\"function\"==typeof t?t:cs.get(t)||Qu,n):e},n.offset=function(t){return arguments.length?(r=\"function\"==typeof t?t:ss.get(t)||ni,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var cs=Xo.map({\"inside-out\":function(n){var t,e,r=n.length,u=n.map(ti),i=n.map(ei),o=Xo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,s=[],l=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],s.push(e)):(c+=i[e],l.push(e));return l.reverse().concat(s)},reverse:function(n){return Xo.range(n.length).reverse()},\"default\":Qu}),ss=Xo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,s,l=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=s=0,e=1;h>e;++e){for(t=0,u=0;l>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];l>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,s>c&&(s=c)}for(e=0;h>e;++e)g[e]-=s;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ni});Xo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],s=n.map(e,this),l=r.call(this,s,i),f=u.call(this,l,s,i),i=-1,h=s.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=s[i],a>=l[0]&&a<=l[1]&&(o=c[Xo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=oi,u=ui;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=_t(t),n):r},n.bins=function(t){return arguments.length?(u=\"number\"==typeof t?function(n){return ii(n,t)}:_t(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Xo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,s,l=r[0],f=l,h=-1;++h<i;)s=r[h],o(s,a),f=c(s,a,f),a=s;vi(n);var g=.5*(l._tree.prelim+s._tree.prelim);t?(u.prelim=t._tree.prelim+e(n,t),u.mod=u.prelim-g):u.prelim=g}else t&&(u.prelim=t._tree.prelim+e(n,t))}function a(n,t){n.x=n._tree.prelim+t;var e=n.children;if(e&&(r=e.length)){var r,u=-1;for(t+=n._tree.mod;++u<r;)a(e[u],t)}}function c(n,t,r){if(t){for(var u,i=n,o=n,a=t,c=n.parent.children[0],s=i._tree.mod,l=o._tree.mod,f=a._tree.mod,h=c._tree.mod;a=si(a),i=ci(i),a&&i;)c=ci(c),o=si(o),o._tree.ancestor=n,u=a._tree.prelim+f-i._tree.prelim-s+e(a,i),u>0&&(di(mi(a,n,r),n,u),s+=u,l+=u),f+=a._tree.mod,s+=i._tree.mod,h+=c._tree.mod,l+=o._tree.mod;a&&!si(o)&&(o._tree.thread=a,o._tree.mod+=f-l),i&&!ci(c)&&(c._tree.thread=i,c._tree.mod+=s-h,r=n)}return r}var s=t.call(this,n,i),l=s[0];pi(l,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(l),a(l,-l._tree.prelim);var f=li(l,hi),h=li(l,fi),g=li(l,gi),p=f.x-e(f,h)/2,v=h.x+e(h,f)/2,d=g.depth||1;return pi(l,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(v-p)*r[0],n.y=n.depth/d*r[1],delete n._tree}),s}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],s=u[1],l=null==t?Math.sqrt:\"function\"==typeof t?t:function(){return t};if(a.x=a.y=0,pi(a,function(n){n.r=+l(n.value)}),pi(a,bi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/s))/2;pi(a,function(n){n.r+=f}),pi(a,bi),pi(a,function(n){n.r-=f})}return ki(a,c/2,s/2,t?1:1/Math.max(2*a.r/c,2*a.r/s)),o}var t,e=Xo.layout.hierarchy().sort(yi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||\"function\"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Vu(n,e)},Xo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],s=0;pi(c,function(n){var t=n.children;t&&t.length?(n.x=Ci(t),n.y=Ai(t)):(n.x=o?s+=e(n,o):0,n.y=0,o=n)});var l=Ni(c),f=Li(c),h=l.x-e(l,f)/2,g=f.x+e(f,l)/2;return pi(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,s=f(e),l=[],h=i.slice(),p=1/0,v=\"slice\"===g?s.dx:\"dice\"===g?s.dy:\"slice-dice\"===g?1&e.depth?s.dy:s.dx:Math.min(s.dx,s.dy);for(n(h,s.dx*s.dy/e.value),l.area=0;(c=h.length)>0;)l.push(o=h[c-1]),l.area+=o.area,\"squarify\"!==g||(a=r(l,v))<=p?(h.pop(),p=a):(l.area-=l.pop().area,u(l,v,s,!1),v=Math.min(s.dx,s.dy),l.length=l.area=0,p=1/0);l.length&&(u(l,v,s,!0),l.length=l.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,s=e.y,l=t?c(n.area/t):0;if(t==e.dx){for((r||l>e.dy)&&(l=e.dy);++i<o;)u=n[i],u.x=a,u.y=s,u.dy=l,a+=u.dx=Math.min(e.x+e.dx-a,l?c(u.area/l):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=l,e.dy-=l}else{for((r||l>e.dx)&&(l=e.dx);++i<o;)u=n[i],u.x=a,u.y=s,u.dx=l,s+=u.dy=Math.min(e.y+e.dy-s,l?c(u.area/l):0);u.z=!1,u.dy+=e.y+e.dy-s,e.x+=l,e.dx-=l}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=s[0],i.dy=s[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=Xo.layout.hierarchy(),c=Math.round,s=[1,1],l=null,f=Ti,h=!1,g=\"squarify\",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(s=n,i):s},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Ti(t):qi(t,\"number\"==typeof e?[e,e,e,e]:e)}function e(t){return qi(t,n)}if(!arguments.length)return l;var r;return f=null==(l=n)?Ti:\"function\"==(r=typeof n)?t:\"number\"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+\"\",i):g},Vu(i,a)},Xo.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Xo.random.normal.apply(Xo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Xo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Xo.scale={};var ls={floor:bt,ceil:bt};Xo.scale.linear=function(){return Hi([0,1],[0,1],fu,!1)};var fs={s:1,g:1,p:1,r:1,e:1};Xo.scale.log=function(){return $i(Xo.scale.linear().domain([0,1]),10,!0,[1,10])};var hs=Xo.format(\".0e\"),gs={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Xo.scale.pow=function(){return Bi(Xo.scale.linear(),1,[0,1])},Xo.scale.sqrt=function(){return Xo.scale.pow().exponent(.5)},Xo.scale.ordinal=function(){return Ji([],{t:\"range\",a:[[]]})},Xo.scale.category10=function(){return Xo.scale.ordinal().range(ps)},Xo.scale.category20=function(){return Xo.scale.ordinal().range(vs)},Xo.scale.category20b=function(){return Xo.scale.ordinal().range(ds)},Xo.scale.category20c=function(){return Xo.scale.ordinal().range(ms)};var ps=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(ht),vs=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(ht),ds=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(ht),ms=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(ht);Xo.scale.quantile=function(){return Gi([],[])},Xo.scale.quantize=function(){return Ki(0,1,[0,1])},Xo.scale.threshold=function(){return Qi([.5],[0,1])},Xo.scale.identity=function(){return no([0,1])},Xo.svg={},Xo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+ys,a=u.apply(this,arguments)+ys,c=(o>a&&(c=o,o=a,a=c),a-o),s=Sa>c?\"0\":\"1\",l=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=xs?n?\"M0,\"+i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+-i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+i+\"M0,\"+n+\"A\"+n+\",\"+n+\" 0 1,0 0,\"+-n+\"A\"+n+\",\"+n+\" 0 1,0 0,\"+n+\"Z\":\"M0,\"+i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+-i+\"A\"+i+\",\"+i+\" 0 1,1 0,\"+i+\"Z\":n?\"M\"+i*l+\",\"+i*f+\"A\"+i+\",\"+i+\" 0 \"+s+\",1 \"+i*h+\",\"+i*g+\"L\"+n*h+\",\"+n*g+\"A\"+n+\",\"+n+\" 0 \"+s+\",0 \"+n*l+\",\"+n*f+\"Z\":\"M\"+i*l+\",\"+i*f+\"A\"+i+\",\"+i+\" 0 \"+s+\",1 \"+i*h+\",\"+i*g+\"L0,0\"+\"Z\"}var t=to,e=eo,r=ro,u=uo;return n.innerRadius=function(e){return arguments.length?(t=_t(e),n):t},n.outerRadius=function(t){return arguments.length?(e=_t(t),n):e},n.startAngle=function(t){return arguments.length?(r=_t(t),n):r},n.endAngle=function(t){return arguments.length?(u=_t(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+ys;return[Math.cos(i)*n,Math.sin(i)*n]},n};var ys=-Ea,xs=ka-Aa;Xo.svg.line=function(){return io(bt)};var Ms=Xo.map({linear:oo,\"linear-closed\":ao,step:co,\"step-before\":so,\"step-after\":lo,basis:mo,\"basis-open\":yo,\"basis-closed\":xo,bundle:Mo,cardinal:go,\"cardinal-open\":fo,\"cardinal-closed\":ho,monotone:Eo});Ms.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var _s=[0,2/3,1/3,0],bs=[0,1/3,2/3,0],ws=[0,1/6,2/3,1/6];Xo.svg.line.radial=function(){var n=io(Ao);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},so.reverse=lo,lo.reverse=so,Xo.svg.area=function(){return Co(bt)},Xo.svg.area.radial=function(){var n=Co(Ao);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Xo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),s=t(this,o,n,a);return\"M\"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,s)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,s.r,s.p0)+r(s.r,s.p1,s.a1-s.a0)+u(s.r,s.p1,c.r,c.p0))+\"Z\"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+ys,l=s.call(n,u,r)+ys;return{r:i,a0:o,a1:l,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(l),i*Math.sin(l)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return\"A\"+n+\",\"+n+\" 0 \"+ +(e>Sa)+\",1 \"+t}function u(n,t,e,r){return\"Q 0,0 \"+r}var i=hr,o=gr,a=No,c=ro,s=uo;return n.radius=function(t){return arguments.length?(a=_t(t),n):a},n.source=function(t){return arguments.length?(i=_t(t),n):i},n.target=function(t){return arguments.length?(o=_t(t),n):o},n.startAngle=function(t){return arguments.length?(c=_t(t),n):c},n.endAngle=function(t){return arguments.length?(s=_t(t),n):s},n},Xo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),\"M\"+c[0]+\"C\"+c[1]+\" \"+c[2]+\" \"+c[3]}var t=hr,e=gr,r=Lo;return n.source=function(e){return arguments.length?(t=_t(e),n):t},n.target=function(t){return arguments.length?(e=_t(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Xo.svg.diagonal.radial=function(){var n=Xo.svg.diagonal(),t=Lo,e=n.projection;return n.projection=function(n){return arguments.length?e(To(t=n)):t},n},Xo.svg.symbol=function(){function n(n,r){return(Ss.get(t.call(this,n,r))||Ro)(e.call(this,n,r))}var t=zo,e=qo;return n.type=function(e){return arguments.length?(t=_t(e),n):t},n.size=function(t){return arguments.length?(e=_t(t),n):e},n};var Ss=Xo.map({circle:Ro,cross:function(n){var t=Math.sqrt(n/5)/2;return\"M\"+-3*t+\",\"+-t+\"H\"+-t+\"V\"+-3*t+\"H\"+t+\"V\"+-t+\"H\"+3*t+\"V\"+t+\"H\"+t+\"V\"+3*t+\"H\"+-t+\"V\"+t+\"H\"+-3*t+\"Z\"},diamond:function(n){var t=Math.sqrt(n/(2*Cs)),e=t*Cs;return\"M0,\"+-t+\"L\"+e+\",0\"+\" 0,\"+t+\" \"+-e+\",0\"+\"Z\"},square:function(n){var t=Math.sqrt(n)/2;return\"M\"+-t+\",\"+-t+\"L\"+t+\",\"+-t+\" \"+t+\",\"+t+\" \"+-t+\",\"+t+\"Z\"},\"triangle-down\":function(n){var t=Math.sqrt(n/As),e=t*As/2;return\"M0,\"+e+\"L\"+t+\",\"+-e+\" \"+-t+\",\"+-e+\"Z\"},\"triangle-up\":function(n){var t=Math.sqrt(n/As),e=t*As/2;return\"M0,\"+-e+\"L\"+t+\",\"+e+\" \"+-t+\",\"+e+\"Z\"}});Xo.svg.symbolTypes=Ss.keys();var ks,Es,As=Math.sqrt(3),Cs=Math.tan(30*Na),Ns=[],Ls=0;Ns.call=da.call,Ns.empty=da.empty,Ns.node=da.node,Ns.size=da.size,Xo.transition=function(n){return arguments.length?ks?n.transition():n:xa.transition()},Xo.transition.prototype=Ns,Ns.select=function(n){var t,e,r,u=this.id,i=[];n=M(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]);for(var c=this[o],s=-1,l=c.length;++s<l;)(r=c[s])&&(e=n.call(r,r.__data__,s,o))?(\"__data__\"in r&&(e.__data__=r.__data__),jo(e,s,u,r.__transition__[u]),t.push(e)):t.push(null)}return Do(i,u)},Ns.selectAll=function(n){var t,e,r,u,i,o=this.id,a=[];n=_(n);for(var c=-1,s=this.length;++c<s;)for(var l=this[c],f=-1,h=l.length;++f<h;)if(r=l[f]){i=r.__transition__[o],e=n.call(r,r.__data__,f,c),a.push(t=[]);for(var g=-1,p=e.length;++g<p;)(u=e[g])&&jo(u,g,o,i),t.push(u)}return Do(a,o)},Ns.filter=function(n){var t,e,r,u=[];\"function\"!=typeof n&&(n=q(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Do(u,this.id)},Ns.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):R(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Ns.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+=\"\",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+=\"\",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o=\"transform\"==n?Ru:fu,a=Xo.ns.qualify(n);return Po(this,\"attr.\"+n,t,a.local?i:u)},Ns.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Xo.ns.qualify(n);return this.tween(\"attr.\"+n,u.local?r:e)},Ns.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+=\"\",function(){var r,u=Go.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=fu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if(\"string\"!=typeof n){2>i&&(t=\"\");for(e in n)this.style(e,n[e],t);return this}e=\"\"}return Po(this,\"style.\"+n,t,u)},Ns.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,Go.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=\"\"),this.tween(\"style.\"+n,r)},Ns.text=function(n){return Po(this,\"text\",n,Uo)},Ns.remove=function(){return this.each(\"end.transition\",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Ns.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:(\"function\"!=typeof n&&(n=Xo.ease.apply(Xo,arguments)),R(this,function(e){e.__transition__[t].ease=n}))},Ns.delay=function(n){var t=this.id;return R(this,\"function\"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Ns.duration=function(n){var t=this.id;return R(this,\"function\"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Ns.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Es,u=ks;ks=e,R(this,function(t,r,u){Es=t.__transition__[e],n.call(t,t.__data__,r,u)}),Es=r,ks=u}else R(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Xo.dispatch(\"start\",\"end\"))).on(n,t)});return this},Ns.transition=function(){for(var n,t,e,r,u=this.id,i=++Ls,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],s=0,l=t.length;l>s;s++)(e=t[s])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,jo(e,s,i,r)),n.push(e)}return Do(o,i)},Xo.svg.axis=function(){function n(n){n.each(function(){var n,s=Xo.select(this),l=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):bt:t,p=s.selectAll(\".tick\").data(h,f),v=p.enter().insert(\"g\",\".domain\").attr(\"class\",\"tick\").style(\"opacity\",Aa),d=Xo.transition(p.exit()).style(\"opacity\",Aa).remove(),m=Xo.transition(p).style(\"opacity\",1),y=Ri(f),x=s.selectAll(\".domain\").data([0]),M=(x.enter().append(\"path\").attr(\"class\",\"domain\"),Xo.transition(x));v.append(\"line\"),v.append(\"text\");var _=v.select(\"line\"),b=m.select(\"line\"),w=p.select(\"text\").text(g),S=v.select(\"text\"),k=m.select(\"text\");switch(r){case\"bottom\":n=Ho,_.attr(\"y2\",u),S.attr(\"y\",Math.max(u,0)+o),b.attr(\"x2\",0).attr(\"y2\",u),k.attr(\"x\",0).attr(\"y\",Math.max(u,0)+o),w.attr(\"dy\",\".71em\").style(\"text-anchor\",\"middle\"),M.attr(\"d\",\"M\"+y[0]+\",\"+i+\"V0H\"+y[1]+\"V\"+i);break;case\"top\":n=Ho,_.attr(\"y2\",-u),S.attr(\"y\",-(Math.max(u,0)+o)),b.attr(\"x2\",0).attr(\"y2\",-u),k.attr(\"x\",0).attr(\"y\",-(Math.max(u,0)+o)),w.attr(\"dy\",\"0em\").style(\"text-anchor\",\"middle\"),M.attr(\"d\",\"M\"+y[0]+\",\"+-i+\"V0H\"+y[1]+\"V\"+-i);break;case\"left\":n=Fo,_.attr(\"x2\",-u),S.attr(\"x\",-(Math.max(u,0)+o)),b.attr(\"x2\",-u).attr(\"y2\",0),k.attr(\"x\",-(Math.max(u,0)+o)).attr(\"y\",0),w.attr(\"dy\",\".32em\").style(\"text-anchor\",\"end\"),M.attr(\"d\",\"M\"+-i+\",\"+y[0]+\"H0V\"+y[1]+\"H\"+-i);break;case\"right\":n=Fo,_.attr(\"x2\",u),S.attr(\"x\",Math.max(u,0)+o),b.attr(\"x2\",u).attr(\"y2\",0),k.attr(\"x\",Math.max(u,0)+o).attr(\"y\",0),w.attr(\"dy\",\".32em\").style(\"text-anchor\",\"start\"),M.attr(\"d\",\"M\"+i+\",\"+y[0]+\"H0V\"+y[1]+\"H\"+i)}if(f.rangeBand){var E=f,A=E.rangeBand()/2;l=f=function(n){return E(n)+A}}else l.rangeBand?l=f:d.call(n,f);v.call(n,l),m.call(n,f)})}var t,e=Xo.scale.linear(),r=Ts,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in qs?t+\"\":Ts,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ts=\"bottom\",qs={top:1,right:1,bottom:1,left:1};Xo.svg.brush=function(){function n(i){i.each(function(){var i=Xo.select(this).style(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush\",u).on(\"touchstart.brush\",u),o=i.selectAll(\".background\").data([0]);o.enter().append(\"rect\").attr(\"class\",\"background\").style(\"visibility\",\"hidden\").style(\"cursor\",\"crosshair\"),i.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\",\"extent\").style(\"cursor\",\"move\");var a=i.selectAll(\".resize\").data(p,bt);a.exit().remove(),a.enter().append(\"g\").attr(\"class\",function(n){return\"resize \"+n}).style(\"cursor\",function(n){return zs[n]}).append(\"rect\").attr(\"x\",function(n){return/[ew]$/.test(n)?-3:null}).attr(\"y\",function(n){return/^[ns]/.test(n)?-3:null}).attr(\"width\",6).attr(\"height\",6).style(\"visibility\",\"hidden\"),a.style(\"display\",n.empty()?\"none\":null);var l,f=Xo.transition(i),h=Xo.transition(o);c&&(l=Ri(c),h.attr(\"x\",l[0]).attr(\"width\",l[1]-l[0]),e(f)),s&&(l=Ri(s),h.attr(\"y\",l[0]).attr(\"height\",l[1]-l[0]),r(f)),t(f)})}function t(n){n.selectAll(\".resize\").attr(\"transform\",function(n){return\"translate(\"+l[+/e$/.test(n)]+\",\"+f[+/^s/.test(n)]+\")\"})}function e(n){n.select(\".extent\").attr(\"x\",l[0]),n.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\",l[1]-l[0])}function r(n){n.select(\".extent\").attr(\"y\",f[0]),n.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\",f[1]-f[0])}function u(){function u(){32==Xo.event.keyCode&&(C||(x=null,L[0]-=l[1],L[1]-=f[1],C=2),d())}function p(){32==Xo.event.keyCode&&2==C&&(L[0]+=l[1],L[1]+=f[1],C=0,d())}function v(){var n=Xo.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(Xo.event.altKey?(x||(x=[(l[0]+l[1])/2,(f[0]+f[1])/2]),L[0]=l[+(n[0]<x[0])],L[1]=f[+(n[1]<x[1])]):x=null),E&&m(n,c,0)&&(e(S),u=!0),A&&m(n,s,1)&&(r(S),u=!0),u&&(t(S),w({type:\"brush\",mode:C?\"move\":\"resize\"}))}function m(n,t,e){var r,u,a=Ri(t),c=a[0],s=a[1],p=L[e],v=e?f:l,d=v[1]-v[0];return C&&(c-=p,s-=d+p),r=(e?g:h)?Math.max(c,Math.min(s,n[e])):n[e],C?u=(r+=p)+d:(x&&(p=Math.max(c,Math.min(s,2*x[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function y(){v(),S.style(\"pointer-events\",\"all\").selectAll(\".resize\").style(\"display\",n.empty()?\"none\":null),Xo.select(\"body\").style(\"cursor\",null),T.on(\"mousemove.brush\",null).on(\"mouseup.brush\",null).on(\"touchmove.brush\",null).on(\"touchend.brush\",null).on(\"keydown.brush\",null).on(\"keyup.brush\",null),N(),w({type:\"brushend\"})}var x,M,_=this,b=Xo.select(Xo.event.target),w=a.of(_,arguments),S=Xo.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&s,C=b.classed(\"extent\"),N=O(),L=Xo.mouse(_),T=Xo.select(Go).on(\"keydown.brush\",u).on(\"keyup.brush\",p);if(Xo.event.changedTouches?T.on(\"touchmove.brush\",v).on(\"touchend.brush\",y):T.on(\"mousemove.brush\",v).on(\"mouseup.brush\",y),S.interrupt().selectAll(\"*\").interrupt(),C)L[0]=l[0]-L[0],L[1]=f[0]-L[1];else if(k){var q=+/w$/.test(k),z=+/^n/.test(k);M=[l[1-q]-L[0],f[1-z]-L[1]],L[0]=l[q],L[1]=f[z]}else Xo.event.altKey&&(x=L.slice());S.style(\"pointer-events\",\"none\").selectAll(\".resize\").style(\"display\",null),Xo.select(\"body\").style(\"cursor\",b.style(\"cursor\")),w({type:\"brushstart\"}),v()}var i,o,a=y(n,\"brushstart\",\"brush\",\"brushend\"),c=null,s=null,l=[0,0],f=[0,0],h=!0,g=!0,p=Rs[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:l,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,ks?Xo.select(this).transition().each(\"start.brush\",function(){i=e.i,o=e.j,l=e.x,f=e.y,n({type:\"brushstart\"})}).tween(\"brush:brush\",function(){var e=hu(l,t.x),r=hu(f,t.y);return i=o=null,function(u){l=t.x=e(u),f=t.y=r(u),n({type:\"brush\",mode:\"resize\"})}}).each(\"end.brush\",function(){i=t.i,o=t.j,n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"})}):(n({type:\"brushstart\"}),n({type:\"brush\",mode:\"resize\"}),n({type:\"brushend\"}))})},n.x=function(t){return arguments.length?(c=t,p=Rs[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,p=Rs[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(h=!!t[0],g=!!t[1]):c?h=!!t:s&&(g=!!t),n):c&&s?[h,g]:c?h:s?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=l[0]||r!=l[1])&&(l=[e,r])),s&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],s.invert&&(u=s(u),a=s(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=l[0],r=l[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),s&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],s.invert&&(u=s.invert(u),a=s.invert(a)),u>a&&(h=u,u=a,a=h))),c&&s?[[e,u],[r,a]]:c?[e,r]:s&&[u,a])},n.clear=function(){return n.empty()||(l=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&l[0]==l[1]||!!s&&f[0]==f[1]},Xo.rebind(n,a,\"on\")};var zs={n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Rs=[[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"],[\"e\",\"w\"],[\"n\",\"s\"],[]],Ds=tc.format=ac.timeFormat,Ps=Ds.utc,Us=Ps(\"%Y-%m-%dT%H:%M:%S.%LZ\");Ds.iso=Date.prototype.toISOString&&+new Date(\"2000-01-01T00:00:00.000Z\")?Oo:Us,Oo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Oo.toString=Us.toString,tc.second=Rt(function(n){return new ec(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),tc.seconds=tc.second.range,tc.seconds.utc=tc.second.utc.range,tc.minute=Rt(function(n){return new ec(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),tc.minutes=tc.minute.range,tc.minutes.utc=tc.minute.utc.range,tc.hour=Rt(function(n){var t=n.getTimezoneOffset()/60;return new ec(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),tc.hours=tc.hour.range,tc.hours.utc=tc.hour.utc.range,tc.month=Rt(function(n){return n=tc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),tc.months=tc.month.range,tc.months.utc=tc.month.utc.range;var js=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Hs=[[tc.second,1],[tc.second,5],[tc.second,15],[tc.second,30],[tc.minute,1],[tc.minute,5],[tc.minute,15],[tc.minute,30],[tc.hour,1],[tc.hour,3],[tc.hour,6],[tc.hour,12],[tc.day,1],[tc.day,2],[tc.week,1],[tc.month,1],[tc.month,3],[tc.year,1]],Fs=Ds.multi([[\".%L\",function(n){return n.getMilliseconds()}],[\":%S\",function(n){return n.getSeconds()}],[\"%I:%M\",function(n){return n.getMinutes()}],[\"%I %p\",function(n){return n.getHours()}],[\"%a %d\",function(n){return n.getDay()&&1!=n.getDate()}],[\"%b %d\",function(n){return 1!=n.getDate()}],[\"%B\",function(n){return n.getMonth()}],[\"%Y\",be]]),Os={range:function(n,t,e){return Xo.range(Math.ceil(n/e)*e,+t,e).map(Io)},floor:bt,ceil:bt};Hs.year=tc.year,tc.scale=function(){return Yo(Xo.scale.linear(),Hs,Fs)};var Ys=Hs.map(function(n){return[n[0].utc,n[1]]}),Is=Ps.multi([[\".%L\",function(n){return n.getUTCMilliseconds()}],[\":%S\",function(n){return n.getUTCSeconds()}],[\"%I:%M\",function(n){return n.getUTCMinutes()}],[\"%I %p\",function(n){return n.getUTCHours()}],[\"%a %d\",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],[\"%b %d\",function(n){return 1!=n.getUTCDate()}],[\"%B\",function(n){return n.getUTCMonth()}],[\"%Y\",be]]);Ys.year=tc.year.utc,tc.scale.utc=function(){return Yo(Xo.scale.linear(),Ys,Is)},Xo.text=wt(function(n){return n.responseText}),Xo.json=function(n,t){return St(n,\"application/json\",Zo,t)},Xo.html=function(n,t){return St(n,\"text/html\",Vo,t)},Xo.xml=wt(function(n){return n.responseXML}),\"function\"==typeof define&&define.amd?define(Xo):\"object\"==typeof module&&module.exports?module.exports=Xo:this.d3=Xo}();'use strict';(function(window){window.define=undefined;}).call(this,this);'use strict';tr.exportTo('tr.ui.b',function(){const DataSeriesEnableChangeEventType='data-series-enabled-change';const THIS_DOC=document._currentScript.ownerDocument;const svgNS='http://www.w3.org/2000/svg';const ColorScheme=tr.b.ColorScheme;function getColorOfKey(key,selected){let id=ColorScheme.getColorIdForGeneralPurposeString(key);if(selected){id+=ColorScheme.properties.brightenedOffsets[0];}\nreturn ColorScheme.colorsAsStrings[id];}\nfunction getSVGTextSize(parentNode,text,opt_callback,opt_this){const textNode=document.createElementNS('http://www.w3.org/2000/svg','text');textNode.setAttributeNS(null,'x',0);textNode.setAttributeNS(null,'y',0);textNode.setAttributeNS(null,'fill','black');textNode.appendChild(document.createTextNode(text));parentNode.appendChild(textNode);if(opt_callback){opt_callback.call(opt_this||parentNode,textNode);}\nconst width=textNode.getComputedTextLength();const height=textNode.getBBox().height;parentNode.removeChild(textNode);return{width,height};}\nfunction DataSeries(key){this.key_=key;this.target_=undefined;this.title_='';this.optional_=false;this.enabled_=true;this.color_=getColorOfKey(key,false);this.highlightedColor_=getColorOfKey(key,true);}\nDataSeries.prototype={get key(){return this.key_;},get title(){return this.title_;},set title(t){this.title_=t;},get color(){return this.color_;},set color(c){this.color_=c;},get highlightedColor(){return this.highlightedColor_;},set highlightedColor(c){this.highlightedColor_=c;},get optional(){return this.optional_;},set optional(optional){this.optional_=optional;},get enabled(){return this.enabled_;},set enabled(enabled){if(!this.optional&&!enabled){this.optional=true;}\nthis.enabled_=enabled;},get target(){return this.target_;},set target(t){this.target_=t;}};const ChartBase=tr.ui.b.define('svg',undefined,svgNS);ChartBase.prototype={__proto__:HTMLUnknownElement.prototype,getDataSeries(key){if(!this.seriesByKey_.has(key)){this.seriesByKey_.set(key,new DataSeries(key));}\nreturn this.seriesByKey_.get(key);},decorate(){Polymer.dom(this).classList.add('chart-base');this.setAttribute('style','cursor: default; user-select: none;');this.chartTitle_=undefined;this.seriesByKey_=new Map();this.graphWidth_=undefined;this.graphHeight_=undefined;this.margin={top:0,right:0,bottom:0,left:0,};this.hideLegend_=false;this.showTitleInLegend_=false;this.titleHeight_='16pt';const template=Polymer.dom(THIS_DOC).querySelector('#chart-base-template');const svgEl=Polymer.dom(template.content).querySelector('svg');for(let i=0;i<Polymer.dom(svgEl).children.length;i++){Polymer.dom(this).appendChild(Polymer.dom(svgEl.children[i]).cloneNode(true));}\nthis.addEventListener(DataSeriesEnableChangeEventType,this.onDataSeriesEnableChange_.bind(this));},get hideLegend(){return this.hideLegend_;},set hideLegend(h){this.hideLegend_=h;this.updateContents_();},get showTitleInLegend(){return this.showTitleInLegend_;},set showTitleInLegend(s){this.showTitleInLegend_=s;this.updateContents_();},isSeriesEnabled(key){return this.getDataSeries(key).enabled;},onDataSeriesEnableChange_(event){this.getDataSeries(event.key).enabled=event.enabled;this.updateContents_();},get chartTitle(){return this.chartTitle_;},set chartTitle(chartTitle){this.chartTitle_=chartTitle;this.updateContents_();},get chartAreaElement(){return Polymer.dom(this).querySelector('#chart-area');},get graphWidth(){if(this.graphWidth_===undefined)return this.defaultGraphWidth;return this.graphWidth_;},set graphWidth(width){this.graphWidth_=width;this.updateContents_();},get defaultGraphWidth(){return 0;},get graphHeight(){if(this.graphHeight_===undefined)return this.defaultGraphHeight;return this.graphHeight_;},set graphHeight(height){this.graphHeight_=height;this.updateContents_();},get titleHeight(){return this.titleHeight_;},set titleHeight(height){this.titleHeight_=height;this.updateContents_();},get defaultGraphHeight(){return 0;},get totalWidth(){return this.margin.left+this.graphWidth+this.margin.right;},get totalHeight(){return this.margin.top+this.graphHeight+this.margin.bottom;},updateMargins_(){const legendSize=this.computeLegendSize_();this.margin.right=Math.max(this.margin.right,legendSize.width);this.margin.bottom=Math.max(this.margin.bottom,legendSize.height-this.graphHeight);if(this.chartTitle_){const titleSize=getSVGTextSize(this,this.chartTitle_,textNode=>{textNode.style.fontSize='16pt';});this.margin.top=Math.max(this.margin.top,titleSize.height+15);const horizontalOverhangPx=(titleSize.width-this.graphWidth)/2;this.margin.left=Math.max(this.margin.left,horizontalOverhangPx);this.margin.right=Math.max(this.margin.right,horizontalOverhangPx);}},computeLegendSize_(){let width=0;let height=0;if(this.hideLegend)return{width,height};let series=[...this.seriesByKey_.values()];if(this.showTitleInLegend){series=series.filter(series=>series.title!=='');}\nfor(const seriesEntry of series){const legendText=this.showTitleInLegend?seriesEntry.title:seriesEntry.key;const textSize=getSVGTextSize(this,legendText);width=Math.max(width,textSize.width+30);height+=textSize.height;}\nreturn{width,height};},updateDimensions_(){const thisSel=d3.select(this);thisSel.attr('width',this.totalWidth);thisSel.attr('height',this.totalHeight);d3.select(this.chartAreaElement).attr('transform','translate('+this.margin.left+', '+this.margin.top+')');},updateContents_(){this.updateMargins_();this.updateDimensions_();this.updateTitle_();this.updateLegend_();},updateTitle_(){const titleSel=d3.select(this.chartAreaElement).select('#title');if(!this.chartTitle_){titleSel.style('display','none');return;}\ntitleSel.attr('transform','translate('+this.graphWidth*0.5+',-15)').style('display',undefined).style('text-anchor','middle').style('font-size',this.titleHeight).attr('class','title').attr('width',this.graphWidth).text(this.chartTitle_);},updateLegend_(){const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.legend').remove();if(this.hideLegend)return;let series;let seriesText;if(this.showTitleInLegend){series=[...this.seriesByKey_.values()].filter(series=>series.title!=='').filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.title;}else{series=[...this.seriesByKey_.values()].filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.key;}\nconst legendEntriesSel=chartAreaSel.selectAll('.legend').data(series);legendEntriesSel.enter().append('foreignObject').attr('class','legend').attr('x',this.graphWidth+2).attr('width',this.margin.right).attr('height',18).attr('transform',(series,i)=>'translate(0,'+i*18+')').append('xhtml:body').style('margin',0).append('tr-ui-b-chart-legend-key').property('color',series=>((this.currentHighlightedLegendKey===series.key)?series.highlightedColor:series.color)).property('width',this.margin.right).property('target',series=>series.target).property('title',series=>series.title).property('optional',series=>series.optional).property('enabled',series=>series.enabled).text(seriesText);legendEntriesSel.exit().remove();},get highlightedLegendKey(){return this.highlightedLegendKey_;},set highlightedLegendKey(highlightedLegendKey){this.highlightedLegendKey_=highlightedLegendKey;this.updateHighlight_();},get currentHighlightedLegendKey(){if(this.tempHighlightedLegendKey_){return this.tempHighlightedLegendKey_;}\nreturn this.highlightedLegendKey_;},pushTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_){throw new Error('push cannot nest');}\nthis.tempHighlightedLegendKey_=key;this.updateHighlight_();},popTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_!==key){throw new Error('pop cannot happen');}\nthis.tempHighlightedLegendKey_=undefined;this.updateHighlight_();},updateHighlight_(){const chartAreaSel=d3.select(this.chartAreaElement);const legendEntriesSel=chartAreaSel.selectAll('.legend');const getDataSeries=chart.getDataSeries.bind(chart);const currentHighlightedLegendKey=chart.currentHighlightedLegendKey;legendEntriesSel.each(function(key){const dataSeries=getDataSeries(key);if(key===currentHighlightedLegendKey){this.style.fill=dataSeries.highlightedColor;this.style.fontWeight='bold';}else{this.style.fill=dataSeries.color;this.style.fontWeight='';}});}};return{ChartBase,DataSeriesEnableChangeEventType,getColorOfKey,getSVGTextSize,};});'use strict';tr.exportTo('tr.ui.b',function(){function MouseTracker(opt_targetElement){this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.targetElement=opt_targetElement;}\nMouseTracker.prototype={get targetElement(){return this.targetElement_;},set targetElement(targetElement){if(this.targetElement_){this.targetElement_.removeEventListener('mousedown',this.onMouseDown_);}\nthis.targetElement_=targetElement;if(this.targetElement_){this.targetElement_.addEventListener('mousedown',this.onMouseDown_);}},onMouseDown_(e){if(e.button!==0)return true;e=this.remakeEvent_(e,'mouse-tracker-start');this.targetElement_.dispatchEvent(e);document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);this.targetElement_.addEventListener('blur',this.onMouseUp_);this.savePreviousUserSelect_=document.body.style['-webkit-user-select'];document.body.style['-webkit-user-select']='none';e.preventDefault();return true;},onMouseMove_(e){e=this.remakeEvent_(e,'mouse-tracker-move');this.targetElement_.dispatchEvent(e);},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);this.targetElement_.removeEventListener('blur',this.onMouseUp_);document.body.style['-webkit-user-select']=this.savePreviousUserSelect_;e=this.remakeEvent_(e,'mouse-tracker-end');this.targetElement_.dispatchEvent(e);},remakeEvent_(e,newType){const remade=new tr.b.Event(newType,true,true);remade.x=e.x;remade.y=e.y;remade.offsetX=e.offsetX;remade.offsetY=e.offsetY;remade.clientX=e.clientX;remade.clientY=e.clientY;return remade;}};function trackMouseMovesUntilMouseUp(mouseMoveHandler,opt_mouseUpHandler,opt_keyUpHandler){function cleanupAndDispatchToMouseUp(e){document.removeEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.removeEventListener('keyup',opt_keyUpHandler);}\ndocument.removeEventListener('mouseup',cleanupAndDispatchToMouseUp);if(opt_mouseUpHandler){opt_mouseUpHandler(e);}}\ndocument.addEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.addEventListener('keyup',opt_keyUpHandler);}\ndocument.addEventListener('mouseup',cleanupAndDispatchToMouseUp);}\nreturn{MouseTracker,trackMouseMovesUntilMouseUp,};});'use strict';tr.exportTo('tr.ui.b',function(){const D3_Y_AXIS_WIDTH_PX=9;const D3_X_AXIS_HEIGHT_PX=23;function sanitizePower(x,defaultValue){if(!isNaN(x)&&isFinite(x)&&(x!==0))return x;return defaultValue;}\nconst ChartBase2D=tr.ui.b.define('chart-base-2d',tr.ui.b.ChartBase);ChartBase2D.prototype={__proto__:tr.ui.b.ChartBase.prototype,decorate(){super.decorate();Polymer.dom(this).classList.add('chart-base-2d');this.xScale_=d3.scale.linear();this.yScale_=d3.scale.linear();this.isYLogScale_=false;this.yLogScaleBase_=10;this.yLogScaleMin_=undefined;this.autoDataRange_=new tr.b.math.Range();this.overrideDataRange_=undefined;this.hideXAxis_=false;this.hideYAxis_=false;this.data_=[];this.xAxisLabel_='';this.yAxisLabel_='';this.textHeightPx_=0;this.unit_=undefined;d3.select(this.chartAreaElement).append('g').attr('id','brushes');d3.select(this.chartAreaElement).append('g').attr('id','series');this.addEventListener('mousedown',this.onMouseDown_.bind(this));},get yLogScaleBase(){return this.yLogScaleBase_;},set yLogScaleBase(b){this.yLogScaleBase_=b;},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();},get xAxisLabel(){return this.xAxisLabel_;},set xAxisLabel(label){this.xAxisLabel_=label;},get yAxisLabel(){return this.yAxisLabel_;},set yAxisLabel(label){this.yAxisLabel_=label;},get hideXAxis(){return this.hideXAxis_;},set hideXAxis(h){this.hideXAxis_=h;this.updateContents_();},get hideYAxis(){return this.hideYAxis_;},set hideYAxis(h){this.hideYAxis_=h;this.updateContents_();},get data(){return this.data_;},set data(data){if(data===undefined){throw new Error('data must be an Array');}\nthis.data_=data;this.updateSeriesKeys_();this.updateDataRange_();this.updateContents_();},set isYLogScale(logScale){if(logScale){this.yScale_=d3.scale.log().base(this.yLogScaleBase);}else{this.yScale_=d3.scale.linear();}\nthis.isYLogScale_=logScale;},getYScaleMin_(){return this.isYLogScale_?this.yLogScaleMin_:0;},getYScaleDomain_(minValue,maxValue){if(this.overrideDataRange_!==undefined){return[this.dataRange.min,this.dataRange.max];}\nif(this.isYLogScale_){return[this.getYScaleMin_(),maxValue];}\nreturn[Math.min(minValue,this.getYScaleMin_()),maxValue];},getSampleWidth_(data,index,leftSide){let leftIndex;let rightIndex;if(leftSide){leftIndex=Math.max(index-1,0);rightIndex=index;}else{leftIndex=index;rightIndex=Math.min(index+1,data.length-1);}\nconst leftWidth=this.getXForDatum_(data[index],index)-\nthis.getXForDatum_(data[leftIndex],leftIndex);const rightWidth=this.getXForDatum_(data[rightIndex],rightIndex)-\nthis.getXForDatum_(data[index],index);return tr.b.math.Statistics.mean([leftWidth,rightWidth]);},updateSeriesKeys_(){this.data_.forEach(function(datum){Object.keys(datum).forEach(function(key){if(this.isDatumFieldSeries_(key)){this.getDataSeries(key);}},this);},this);},isDatumFieldSeries_(fieldName){return fieldName!=='x';},getXForDatum_(datum,index){return datum.x;},updateMargins_(){this.margin.left=this.hideYAxis?0:this.yAxisWidth;this.margin.bottom=this.hideXAxis?0:this.xAxisHeight;if(this.hideXAxis&&!this.hideYAxis){this.margin.bottom=10;}\nif(this.hideYAxis&&!this.hideXAxis){this.margin.left=10;}\nthis.margin.top=this.hideYAxis?0:10;if(this.yAxisLabel){this.margin.top+=this.textHeightPx_;}\nif(this.xAxisLabel){this.margin.right=Math.max(this.margin.right,16+tr.ui.b.getSVGTextSize(this,this.xAxisLabel).width);}\nsuper.updateMargins_();},get xAxisHeight(){return D3_X_AXIS_HEIGHT_PX;},computeScaleTickWidth_(scale){if(this.data.length===0)return 0;let tickValues=scale.ticks();let tickFormat=scale.tickFormat();if(this.isYLogScale_){const enclosingPowers=this.dataRange.enclosingPowers();tickValues=[];const maxPower=sanitizePower(enclosingPowers.max,this.yLogScaleBase);for(let power=sanitizePower(enclosingPowers.min,1);power<=maxPower;power*=this.yLogScaleBase){tickValues.push(power);}\ntickFormat=v=>v.toString();}\nif(this.unit){tickFormat=v=>this.unit.format(v);}\nlet maxTickWidth=0;for(const tickValue of tickValues){maxTickWidth=Math.max(maxTickWidth,tr.ui.b.getSVGTextSize(this,tickFormat(tickValue)).width);}\nreturn D3_Y_AXIS_WIDTH_PX+maxTickWidth;},get yAxisWidth(){return this.computeScaleTickWidth_(this.yScale_);},updateScales_(){if(this.data_.length===0)return;this.xScale_.range([0,this.graphWidth]);this.xScale_.domain(d3.extent(this.data_,this.getXForDatum_.bind(this)));this.yScale_.range([this.graphHeight,0]);this.yScale_.domain([this.dataRange.min,this.dataRange.max]);},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();},updateXAxis_(xAxis){xAxis.selectAll('*').remove();xAxis[0][0].style.opacity=0;if(this.hideXAxis)return;this.drawXAxis_(xAxis);const label=xAxis.append('text').attr('class','label');this.drawXAxisTicks_(xAxis);this.drawXAxisLabel_(label);xAxis[0][0].style.opacity=1;},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.xScale_).orient('bottom'));},drawXAxisLabel_(label){label.attr('x',this.graphWidth+16).attr('y',8).text(this.xAxisLabel);},drawXAxisTicks_(xAxis){let previousRight=undefined;xAxis.selectAll('.tick')[0].forEach(function(tick){const currentLeft=tick.transform.baseVal[0].matrix.e;if((previousRight===undefined)||(currentLeft>(previousRight+3))){const currentWidth=tick.getBBox().width;previousRight=currentLeft+currentWidth;}else{tick.style.opacity=0;}});},set overrideDataRange(range){this.overrideDataRange_=range;},get dataRange(){if(this.overrideDataRange_!==undefined){return this.overrideDataRange_;}\nreturn this.autoDataRange_;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;const dataBySeriesKey=this.getDataBySeriesKey_();this.autoDataRange_.reset();for(const[series,values]of Object.entries(dataBySeriesKey)){for(let i=0;i<values.length;i++){this.autoDataRange_.addValue(values[i][series]);}}\nthis.yLogScaleMin_=undefined;if(this.autoDataRange_.min!==undefined){let minValue=this.autoDataRange_.min;if(minValue===0){minValue=1;}\nconst onePowerLess=tr.b.math.lesserPower(minValue/this.yLogScaleBase);this.yLogScaleMin_=onePowerLess;}},updateYAxis_(yAxis){yAxis.selectAll('*').remove();yAxis[0][0].style.opacity=0;if(this.hideYAxis)return;this.drawYAxis_(yAxis);this.drawYAxisTicks_(yAxis);const label=yAxis.append('text').attr('class','label');this.drawYAxisLabel_(label);},drawYAxis_(yAxis){let axisModifier=d3.svg.axis().scale(this.yScale_).orient('left');let tickFormat;if(this.isYLogScale_){if(this.yLogScaleMin_===undefined)return;const tickValues=[];const enclosingPowers=this.dataRange.enclosingPowers();const maxPower=sanitizePower(enclosingPowers.max,this.yLogScaleBase);for(let power=sanitizePower(enclosingPowers.min,1);power<=maxPower;power*=this.yLogScaleBase){tickValues.push(power);}\naxisModifier=axisModifier.tickValues(tickValues);tickFormat=v=>v.toString();}\nif(this.unit){tickFormat=v=>this.unit.format(v);}\nif(tickFormat){axisModifier=axisModifier.tickFormat(tickFormat);}\nyAxis.call(axisModifier);},drawYAxisLabel_(label){const labelWidthPx=Math.ceil(tr.ui.b.getSVGTextSize(this.chartAreaElement,this.yAxisLabel).width);label.attr('x',-labelWidthPx).attr('y',-8).text(this.yAxisLabel);},drawYAxisTicks_(yAxis){let previousTop=undefined;yAxis.selectAll('.tick')[0].forEach(function(tick){const bbox=tick.getBBox();const currentTop=tick.transform.baseVal[0].matrix.f;const currentBottom=currentTop+bbox.height;if((previousTop===undefined)||(previousTop>(currentBottom+3))){previousTop=currentTop;}else{tick.style.opacity=0;}});yAxis[0][0].style.opacity=1;},updateContents_(){if(this.textHeightPx_===0){this.textHeightPx_=tr.ui.b.getSVGTextSize(this,'Ay').height;}\nthis.updateScales_();super.updateContents_();const chartAreaSel=d3.select(this.chartAreaElement);this.updateXAxis_(chartAreaSel.select('.x.axis'));this.updateYAxis_(chartAreaSel.select('.y.axis'));for(const child of Array.from(this.querySelectorAll('.axis path, .axis line'))){child.style.fill='none';child.style.shapeRendering='crispEdges';child.style.stroke='black';}\nthis.updateBrushContents_(chartAreaSel.select('#brushes'));this.updateDataContents_(chartAreaSel.select('#series'));},updateDataContents_(seriesSel){throw new Error('Not implemented');},getDataBySeriesKey_(){const dataBySeriesKey={};for(const[key,series]of this.seriesByKey_){dataBySeriesKey[key]=[];}\nthis.data_.forEach(function(multiSeriesDatum,index){const x=this.getXForDatum_(multiSeriesDatum,index);d3.keys(multiSeriesDatum).forEach(function(seriesKey){if(seriesKey==='x')return;if(multiSeriesDatum[seriesKey]===undefined)return;if(!this.isDatumFieldSeries_(seriesKey))return;const singleSeriesDatum={x};singleSeriesDatum[seriesKey]=multiSeriesDatum[seriesKey];dataBySeriesKey[seriesKey].push(singleSeriesDatum);},this);},this);return dataBySeriesKey;},getChartPointAtClientPoint_(clientPoint){const rect=this.getBoundingClientRect();return{x:clientPoint.x-rect.left-this.margin.left,y:clientPoint.y-rect.top-this.margin.top};},getDataPointAtChartPoint_(chartPoint){return{x:tr.b.math.clamp(this.xScale_.invert(chartPoint.x),this.xScale_.domain()[0],this.xScale_.domain()[1]),y:tr.b.math.clamp(this.yScale_.invert(chartPoint.y),this.yScale_.domain()[0],this.yScale_.domain()[1])};},getDataPointAtClientPoint_(clientX,clientY){const chartPoint=this.getChartPointAtClientPoint_({x:clientX,y:clientY});return this.getDataPointAtChartPoint_(chartPoint);},prepareDataEvent_(mouseEvent,dataEvent){const dataPoint=this.getDataPointAtClientPoint_(mouseEvent.clientX,mouseEvent.clientY);dataEvent.x=dataPoint.x;dataEvent.y=dataPoint.y;},onMouseDown_(mouseEvent){tr.ui.b.trackMouseMovesUntilMouseUp(this.onMouseMove_.bind(this,mouseEvent.button),this.onMouseUp_.bind(this,mouseEvent.button));mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mousedown');dataEvent.button=mouseEvent.button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseMove_(button,mouseEvent){if(mouseEvent.buttons!==undefined){mouseEvent.preventDefault();mouseEvent.stopPropagation();}\nconst dataEvent=new tr.b.Event('item-mousemove');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseUp_(button,mouseEvent){mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mouseup');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(213, 236, 229)');}}};return{ChartBase2D,};});'use strict';tr.exportTo('tr.ui.b',function(){const ChartBase2D=tr.ui.b.ChartBase2D;const ChartBase2DBrushX=tr.ui.b.define('chart-base-2d-brush-1d',ChartBase2D);ChartBase2DBrushX.prototype={__proto__:ChartBase2D.prototype,decorate(){super.decorate();this.brushedRange_=new tr.b.math.Range();},set brushedRange(range){this.brushedRange_.reset();this.brushedRange_.addRange(range);this.updateContents_();},get brushedRange(){return tr.b.math.Range.fromDict(this.brushedRange_.toJSON());},computeBrushRangeFromIndices(indexA,indexB){indexA=tr.b.math.clamp(indexA,0,this.data_.length-1);indexB=tr.b.math.clamp(indexB,0,this.data_.length-1);const leftIndex=Math.min(indexA,indexB);const rightIndex=Math.max(indexA,indexB);const brushRange=new tr.b.math.Range();brushRange.addValue(this.getXForDatum_(this.data_[leftIndex],leftIndex)-\nthis.getSampleWidth_(this.data_,leftIndex,true));brushRange.addValue(this.getXForDatum_(this.data_[rightIndex],rightIndex)+\nthis.getSampleWidth_(this.data_,rightIndex,false));return brushRange;},getDataIndex_(dataX){if(this.data.length===0)return undefined;const bisect=d3.bisector(this.getXForDatum_.bind(this)).right;return bisect(this.data_,dataX)-1;},prepareDataEvent_(mouseEvent,dataEvent){ChartBase2D.prototype.prepareDataEvent_.call(this,mouseEvent,dataEvent);dataEvent.index=this.getDataIndex_(dataEvent.x);if(dataEvent.index!==undefined){dataEvent.data=this.data_[dataEvent.index];}},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();const brushes=this.brushedRange_.isEmpty?[]:[this.brushedRange_];const brushRectsSel=brushSel.selectAll('rect').data(brushes);brushRectsSel.enter().append('rect');brushRectsSel.exit().remove();this.drawBrush_(brushRectsSel);},drawBrush_(brushRectsSel){brushRectsSel.attr('x',d=>this.xScale_(d.min)).attr('y',0).attr('width',d=>this.xScale_(d.max)-this.xScale_(d.min)).attr('height',this.graphHeight).attr('fill','rgb(213, 236, 229)');}};return{ChartBase2DBrushX,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColumnChart=tr.ui.b.define('column-chart',tr.ui.b.ChartBase2DBrushX);ColumnChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.xCushion_=1;this.isStacked_=false;this.isGrouped_=false;this.enableHoverBox=true;this.displayXInHover=false;this.enableToolTip=false;this.toolTipCallBack_=()=>{};},set toolTipCallBack(callback){this.toolTipCallBack_=callback;},get toolTipCallBack(){return this.toolTipCallBack_;},set isGrouped(grouped){this.isGrouped_=grouped;if(grouped){this.getDataSeries('group').color='transparent';}\nthis.updateContents_();},get isGrouped(){return this.isGrouped_;},set isStacked(stacked){this.isStacked_=true;this.updateContents_();},get isStacked(){return this.isStacked_;},get defaultGraphHeight(){return 100;},get defaultGraphWidth(){return 10*this.data_.length;},updateScales_(){if(this.data_.length===0)return;let xDifferences=0;let currentX=undefined;let previousX=undefined;this.data_.forEach(function(datum,index){previousX=currentX;currentX=this.getXForDatum_(datum,index);if(previousX!==undefined){xDifferences+=currentX-previousX;}},this);this.xScale_.range([0,this.graphWidth]);const domain=d3.extent(this.data_,this.getXForDatum_.bind(this));if(this.data_.length>1){this.xCushion_=xDifferences/(this.data_.length-1);}\nthis.xScale_.domain([domain[0],domain[1]+this.xCushion_]);this.yScale_.range([this.graphHeight,0]);this.yScale_.domain(this.getYScaleDomain_(this.dataRange.min,this.dataRange.max));},updateDataRange_(){if(!this.isStacked){super.updateDataRange_();return;}\nthis.autoDataRange_.reset();this.autoDataRange_.addValue(0);for(const datum of this.data_){let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined){continue;}else if(this.isGrouped&&key==='group'){continue;}\nsum+=datum[key];}\nthis.autoDataRange_.addValue(sum);}},getStackedRectsForDatum_(datum,index){const stacks=[];let bottom=this.yScale_.range()[0];let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}else if(this.isGrouped&&key==='group'){continue;}\nsum+=this.dataRange.clamp(datum[key]);const heightPx=bottom-this.yScale_(sum);bottom-=heightPx;stacks.push({key,value:datum[key],color:this.getDataSeries(key).color,heightPx,topPx:bottom,underflow:sum<this.dataRange.min,overflow:sum>this.dataRange.max,});}\nreturn stacks;},getRectsForDatum_(datum,index){if(this.isStacked){return this.getStackedRectsForDatum_(datum,index);}\nconst stacks=[];for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}\nconst clampedValue=this.dataRange.clamp(datum[key]);const topPx=this.yScale_(Math.max(clampedValue,this.getYScaleMin_()));stacks.push({key,value:datum[key],topPx,heightPx:this.yScale_.range()[0]-topPx,color:this.getDataSeries(key).color,underflow:datum[key]<this.dataRange.min,overflow:datum[key]>this.dataRange.max,});}\nstacks.sort(function(a,b){return b.topPx-a.topPx;});return stacks;},drawToolTip_(rect){if(!this.enableToolTip)return;const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.tooltip').remove();const labelText='View Breakdown';const labelWidth=tr.ui.b.getSVGTextSize(this.chartAreaElement,labelText).width+5;const labelHeight=this.textHeightPx_;const toolTipLeftPx=rect.leftPx+(rect.widthPx/2);const toolTipTopPx=rect.topPx;chartAreaSel.append('rect').attr('class','tooltip').attr('fill','white').attr('opacity',0.8).attr('stroke','black').attr('x',toolTipLeftPx).attr('y',toolTipTopPx).attr('width',labelWidth+5).attr('height',labelHeight+10);chartAreaSel.append('text').style('cursor','pointer').attr('class','tooltip').on('mousedown',()=>this.toolTipCallBack_(rect)).attr('fill','blue').attr('x',toolTipLeftPx+4).attr('y',toolTipTopPx+labelHeight).attr('text-decoration','underline').text(labelText);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox)return;const seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width+5;keyHeightPx=this.textHeightPx_;}\nlet xLabelWidthPx=0;let xLabelHeightPx=0;if(this.displayXInHover){xLabelWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.x).width+5;xLabelHeightPx=this.textHeightPx_;}\nlet groupWidthPx=0;let groupHeightPx=0;if(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width+5;groupHeightPx=this.textHeightPx_;}\nlet value=rect.value;if(this.unit)value=this.unit.format(value);const valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,value).width+5;const valueHeightPx=this.textHeightPx_;const hoverWidthPx=Math.max(keyWidthPx,valueWidthPx,xLabelWidthPx,groupWidthPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);const hoverHeightPx=keyHeightPx+valueHeightPx+\nxLabelHeightPx+groupHeightPx+2;const topOffSetPx=this.isGrouped?36:12;let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-\nhoverHeightPx-topOffSetPx);chartAreaSel.append('rect').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill','white').attr('stroke','black').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',hoverHeightPx);if(seriesKeys.length>1&&!this.isGrouped){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-2).text(rect.key);}\nif(this.displayXInHover){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xLabelHeightPx-2).text(rect.datum.x);}\nif(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+\nxLabelHeightPx+groupHeightPx-2).text(rect.datum.group);}\nchartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+hoverHeightPx-2).text(value);},clearHoverValueBox_(rect){const event=window.event;if(event.relatedTarget&&Array.from(event.relatedTarget.classList).includes('hover')){return;}\nconst rectHoverEvent=new tr.b.Event('rect-mouseleave');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);d3.select(this.chartAreaElement).selectAll('.hover').remove();},drawRect_(rect,sel){sel=sel.data([rect]);sel.enter().append('rect').attr('fill',rect.color).attr('x',rect.leftPx).attr('y',rect.topPx).attr('width',rect.widthPx).attr('height',rect.heightPx).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawUnderflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',this.graphHeight).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',0);sel.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const chartAreaSel=d3.select(this.chartAreaElement);const seriesKeys=[...this.seriesByKey_.keys()];const rectsSel=dataSel.selectAll('path');this.data_.forEach(function(datum,index){const currentX=this.getXForDatum_(datum,index);let width=undefined;if(index<(this.data_.length-1)){const nextX=this.getXForDatum_(this.data_[index+1],index+1);width=nextX-currentX;}else{width=this.xCushion_;}\nfor(const rect of this.getRectsForDatum_(datum,index)){rect.datum=datum;rect.index=index;rect.leftPx=this.xScale_(currentX);rect.rightPx=this.xScale_(currentX+width);rect.widthPx=rect.rightPx-rect.leftPx;this.drawRect_(rect,rectsSel);if(rect.underflow){this.drawUnderflow_(rect,rectsSel);}\nif(rect.overflow){this.drawOverflow_(rect,rectsSel);}}},this);}};return{ColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const MIN_GUIDELINE_HEIGHT_PX=3;const CHECKBOX_WIDTH_PX=18;const NameColumnChart=tr.ui.b.define('name-column-chart',tr.ui.b.ColumnChart);NameColumnChart.prototype={__proto__:tr.ui.b.ColumnChart.prototype,get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},updateMargins_(){super.updateMargins_();let xAxisTickOverhangPx=0;for(let i=0;i<this.data_.length;++i){const datum=this.data_[i];xAxisTickOverhangPx=Math.max(xAxisTickOverhangPx,this.xScale_(i)+tr.ui.b.getSVGTextSize(this,datum.x).width-\nthis.graphWidth);}\nthis.margin.right=Math.max(this.margin.right,xAxisTickOverhangPx);},getXForDatum_(datum,index){return index;},get xAxisTickOffset(){return 0.5;},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;const nameTexts=xAxis.selectAll('text').data(this.data_);nameTexts.enter().append('text').attr('transform',(d,index)=>'translate(0, '+\nthis.textHeightPx_*(this.data_.length-index)+')').attr('x',(d,index)=>this.xScale_(index)).attr('y',d=>this.graphHeight).text(d=>d.x);nameTexts.exit().remove();const guideLines=xAxis.selectAll('line.guide').data(this.data_);guideLines.enter().append('line').attr('x1',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('x2',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('y1',()=>this.graphHeight).attr('y2',(d,index)=>this.graphHeight+Math.max(MIN_GUIDELINE_HEIGHT_PX,(this.textHeightPx_*(this.data_.length-index-1))));}};return{NameColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.define('line-chart',tr.ui.b.ChartBase2DBrushX);LineChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.enableHoverBox=true;this.displayXInHover=false;},get defaultGraphWidth(){return 20*this.data_.length;},get defaultGraphHeight(){return 100;},drawHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.drawHoverValueBox_.call(this,circle);},clearHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.clearHoverValueBox_.call(this,circle);},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const dataBySeriesKey=this.getDataBySeriesKey_();const seriesKeys=[...this.seriesByKey_.keys()];const pathsSel=dataSel.selectAll('path').data(seriesKeys);pathsSel.enter().append('path').style('fill','none').style('stroke-width','1.5px').style('stroke',key=>this.getDataSeries(key).color).attr('d',key=>{const line=d3.svg.line().x(d=>this.xScale_(d.x)).y(d=>this.yScale_(this.dataRange.clamp(d[key])));return line(dataBySeriesKey[key]);});pathsSel.exit().remove();if(this.enableHoverBox){for(let index=0;index<this.data_.length;++index){const datum=this.data_[index];const x=this.getXForDatum_(datum,index);for(const[key,value]of Object.entries(datum)){if(key==='x')continue;if(value===undefined)continue;const color=this.getDataSeries(key).color;const circle=document.createElementNS('http://www.w3.org/2000/svg','circle');circle.setAttribute('cx',this.xScale_(x));circle.setAttribute('cy',this.yScale_(this.dataRange.clamp(value)));circle.setAttribute('r',5);circle.style.fill=color;circle.datum=datum;circle.key=key;circle.value=datum[key];circle.leftPx=this.xScale_(x);circle.widthPx=0;circle.color=color;circle.topPx=this.yScale_(this.dataRange.clamp(value));circle.heightPx=0;circle.addEventListener('mouseenter',()=>this.drawHoverValueBox_(circle));circle.addEventListener('mouseleave',()=>this.clearHoverValueBox_(circle));dataSel[0][0].appendChild(circle);}}}}};return{LineChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.LineChart;const NameLineChart=tr.ui.b.define('name-line-chart',LineChart);NameLineChart.prototype={__proto__:LineChart.prototype,getXForDatum_(datum,index){return index;},get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},get xAxisTickOffset(){return 0;},updateMargins_(){tr.ui.b.NameColumnChart.prototype.updateMargins_.call(this);},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length-1)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();}};return{NameLineChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const BoxChart=tr.ui.b.define('box-chart',tr.ui.b.NameLineChart);BoxChart.prototype={__proto__:tr.ui.b.NameLineChart.prototype,get hideLegend(){return true;},updateDataRange_(){if(this.overrideDataRange_!==undefined){return;}\nthis.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateScales_(){super.updateScales_();this.xScale_.domain([0,this.data_.length]);},get xAxisTickOffset(){return 0.5;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;this.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const boxesSel=dataSel.selectAll('path');for(let index=0;index<this.data_.length;++index){const datum=this.data_[index];const color=datum.color||'black';let sel=boxesSel.data([datum]);sel.enter().append('rect').attr('fill',color).attr('x',this.xScale_(index+0.2)).attr('width',this.xScale_(index+0.8)-this.xScale_(index+0.2)).attr('y',this.yScale_(datum.percentile_75)).attr('height',this.yScale_(datum.percentile_25)-\nthis.yScale_(datum.percentile_75));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index)).attr('x2',this.xScale_(index+1)).attr('y1',this.yScale_(datum.percentile_50)).attr('y2',this.yScale_(datum.percentile_50));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.4)).attr('x2',this.xScale_(index+0.6)).attr('y1',this.yScale_(datum.percentile_0)).attr('y2',this.yScale_(datum.percentile_0));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.4)).attr('x2',this.xScale_(index+0.6)).attr('y1',this.yScale_(datum.percentile_100)).attr('y2',this.yScale_(datum.percentile_100));sel.exit().remove();sel=boxesSel.data([datum]);sel.enter().append('line').attr('stroke',color).attr('x1',this.xScale_(index+0.5)).attr('x2',this.xScale_(index+0.5)).attr('y1',this.yScale_(datum.percentile_100)).attr('y2',this.yScale_(datum.percentile_0));sel.exit().remove();}}};return{BoxChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const BarChart=tr.ui.b.define('bar-chart',tr.ui.b.ColumnChart);BarChart.prototype={__proto__:tr.ui.b.ColumnChart.prototype,decorate(){super.decorate();this.verticalScale_=undefined;this.horizontalScale_=undefined;this.isWaterfall_=false;},updateScales_(){super.updateScales_();this.yScale_.range([this.graphWidth,0]);this.xScale_.range([0,this.graphHeight]);this.verticalScale_=this.isYLogScale_?d3.scale.log(10):d3.scale.linear();this.verticalScale_.domain(this.xScale_.domain());this.verticalScale_.range([this.graphHeight,0]);this.horizontalScale_=d3.scale.linear();this.horizontalScale_.domain(this.yScale_.domain());this.horizontalScale_.range([0,this.graphWidth]);},set isWaterfall(waterfall){this.isWaterfall_=waterfall;if(waterfall){this.getDataSeries('hide').color='transparent';}\nthis.updateContents_();},get isWaterfall(){return this.isWaterfall_;},get defaultGraphHeight(){return Math.max(20,10*this.data_.length);},get defaultGraphWidth(){return 100;},get barHeight(){return this.graphHeight/this.data.length;},drawBrush_(brushRectsSel){brushRectsSel.attr('x',0).attr('width',this.graphWidth).attr('y',d=>this.verticalScale_(d.max)).attr('height',d=>this.verticalScale_(d.min)-this.verticalScale_(d.max)).attr('fill','rgb(213, 236, 229)');},getDataPointAtChartPoint_(chartPoint){const flippedPoint={x:this.graphHeight-chartPoint.y,y:this.graphWidth-chartPoint.x};return super.getDataPointAtChartPoint_(flippedPoint);},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.horizontalScale_).orient('bottom'));},get yAxisWidth(){return this.computeScaleTickWidth_(this.verticalScale_);},drawYAxis_(yAxis){const axisModifier=d3.svg.axis().scale(this.verticalScale_).orient('left');yAxis.call(axisModifier);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox||(this.isWaterfall_&&rect.key==='hide')){return;}\nconst seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;let xWidthPx=0;let xHeightPx=0;let groupWidthPx=0;let groupHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width;keyHeightPx=this.textHeightPx_;}\nif(this.data.length>1&&!this.isWaterfall_){xWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,''+rect.datum.x).width;xHeightPx=this.textHeightPx_;}\nif(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width;groupHeightPx=this.textHeightPx_;}\nconst valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.value).width;const valueHeightPx=this.textHeightPx_;const maxWidthPx=Math.max(keyWidthPx,xWidthPx,groupWidthPx,valueWidthPx)+5;const hoverWidthPx=this.isGrouped?maxWidthPx:Math.min(maxWidthPx,Math.max(50,rect.widthPx));let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-\nvalueHeightPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);chartAreaSel.append('rect').attr('class','hover').attr('fill','white').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',keyHeightPx+xHeightPx+\nvalueHeightPx+groupHeightPx);if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-3).text(rect.key);}\nif(this.data.length>1&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+valueHeightPx-3).text(''+rect.datum.x);}\nif(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').on('mouseleave',()=>this.clearHoverValueBox_(rect)).attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xHeightPx+groupHeightPx-3).text(rect.datum.group);}\nchartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+xHeightPx+keyHeightPx+\ngroupHeightPx+valueHeightPx-3).text(rect.value);},flipRect_(rect){return{datum:rect.datum,index:rect.index,key:rect.key,value:rect.value,color:rect.color,topPx:this.graphHeight-rect.leftPx-rect.widthPx,leftPx:this.graphWidth-rect.topPx-rect.heightPx,widthPx:rect.heightPx,heightPx:rect.widthPx,underflow:rect.underflow,overflow:rect.overflow,};},drawRect_(rect,sel){super.drawRect_(this.flipRect_(rect),sel);},drawUnderflow_(rect,rectsSel){let sel=rectsSel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',0).attr('y',this.graphHeight-rect.leftPx+\n3+(rect.widthPx/2));sel.exit().remove();sel=rectsSel.data([rect]);sel.enter().append('rect').attr('fill','rgba(0, 0, 0, 0)').attr('x',0).attr('y',this.graphHeight-rect.leftPx-rect.widthPx).attr('width',10).attr('height',rect.widthPx).on('mouseenter',()=>this.drawHoverValueBox_(this.flipRect_(rect))).on('mouseleave',()=>this.clearHoverValueBox_(rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',this.graphWidth).attr('y',this.graphHeight-rect.leftPx+\n3+(rect.widthPx/2));sel.exit().remove();}};return{BarChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const NameBarChart=tr.ui.b.define('name-bar-chart',tr.ui.b.BarChart);const Y_AXIS_PADDING=2;NameBarChart.prototype={__proto__:tr.ui.b.BarChart.prototype,getDataPointAtChartPoint_(chartPoint){return{x:tr.ui.b.BarChart.prototype.getDataPointAtChartPoint_.call(this,chartPoint).x,y:parseInt(Math.floor((this.graphHeight-chartPoint.y)/this.barHeight))};},getXForDatum_(datum,index){return index;},get yAxisWidth(){if(this.data.length===0)return 0;return Y_AXIS_PADDING+tr.b.math.Statistics.max(this.data_,d=>tr.ui.b.getSVGTextSize(this,d.x).width);},get defaultGraphHeight(){return(3+this.textHeightPx_)*this.data.length;},updateYAxis_(yAxis){if(tr.ui.b.getSVGTextSize(this,'test').width===0){tr.b.requestAnimationFrame(()=>this.updateYAxis_(yAxis));return;}\nyAxis.selectAll('*').remove();if(this.hideYAxis)return;const nameTexts=yAxis.selectAll('text').data(this.data_);nameTexts.enter().append('text').attr('x',d=>-(tr.ui.b.getSVGTextSize(this,d.x).width+Y_AXIS_PADDING)).attr('y',(d,index)=>this.verticalScale_(index)).text(d=>d.x);nameTexts.exit().remove();let previousTop=undefined;for(const text of nameTexts[0]){const bbox=text.getBBox();if((previousTop===undefined)||(previousTop>(bbox.y+bbox.height))){previousTop=bbox.y;}else{text.style.opacity=0;}}}};return{NameBarChart,};});'use strict';tr.exportTo('tr.v.ui',function(){const DIAGNOSTIC_SPAN_BEHAVIOR={created(){this.diagnostic_=undefined;this.name_=undefined;this.histogram_=undefined;},attached(){if(this.diagnostic_)this.updateContents_();},get diagnostic(){return this.diagnostic_;},build(diagnostic,name,histogram){this.diagnostic_=diagnostic;this.name_=name;this.histogram_=histogram;if(this.isAttached)this.updateContents_();},updateContents_(){throw new Error('dom-modules must override updateContents_()');}};return{DIAGNOSTIC_SPAN_BEHAVIOR,};});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_COLOR_SCHEME=new tr.b.SinebowColorGenerator();function getHistogramName(histogram,diagnosticName,key){if(histogram===undefined)return undefined;const nameMap=histogram.diagnostics.get(diagnosticName);if(nameMap===undefined)return undefined;return nameMap.get(key);}\nclass BreakdownTableSummaryRow{constructor(displayElement,histogramNames){this.displayElement_=displayElement;this.histogramNames_=histogramNames;this.keySpan_=undefined;}\nget numberValue(){return undefined;}\nget keySpan(){if(this.keySpan_===undefined){if(this.histogramNames_.length){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent(this.histogramNames_,'Select All');}else{this.keySpan_='Sum';}}\nreturn this.keySpan_;}\nget name(){return'Sum';}\nget displayElement(){return this.displayElement_;}\nget stringPercent(){return'100%';}}\nclass BreakdownTableRow{constructor(name,value,histogramName,unit,color){this.name_=name;this.value_=value;this.histogramName_=histogramName;this.unit_=unit;if(typeof value!=='number'){throw new Error('unsupported value '+value);}\nthis.tableSum_=undefined;this.keySpan_=undefined;this.color_=color;const hsl=this.color.toHSL();hsl.l*=0.85;this.highlightedColor_=tr.b.Color.fromHSL(hsl);if(this.unit_){this.displayElement_=tr.v.ui.createScalarSpan(this.numberValue,{unit:this.unit_,});}else{this.displayElement_=tr.ui.b.createSpan({textContent:this.stringValue,});}}\nget name(){return this.name_;}\nget color(){return this.color_;}\nget highlightedColor(){return this.highlightedColor_;}\nget keySpan(){if(this.keySpan_===undefined){if(this.histogramName_){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent([this.histogramName_],this.name);this.keySpan_.color=this.color;this.keySpan_.title=this.histogramName_;}else{this.keySpan_=document.createElement('span');this.keySpan_.innerText=this.name;this.keySpan_.style.color=this.color;}}\nreturn this.keySpan_;}\nget numberValue(){if(!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)&&(this.value_>0))return this.value_;return undefined;}\nget stringValue(){if((this.unit_!==undefined)&&!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)){return this.unit_.format(this.value_);}\nreturn this.value_.toString();}\nset tableSum(s){this.tableSum_=s;}\nget stringPercent(){if(this.tableSum_===undefined)return'';const num=this.numberValue;if(num===undefined)return'';return Math.floor(num*100.0/this.tableSum_)+'%';}\nget displayElement(){return this.displayElement_;}\ncompare(other){if(this.numberValue===undefined){if(other.numberValue===undefined){return this.name.localeCompare(other.name);}\nreturn 1;}\nif(other.numberValue===undefined){return-1;}\nif(this.numberValue===other.numberValue){return this.name.localeCompare(other.name);}\nreturn other.numberValue-this.numberValue;}}\nPolymer({is:'tr-v-ui-breakdown-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],created(){this.chart_=new tr.ui.b.ColumnChart();this.chart_.graphHeight=130;this.chart_.isStacked=true;this.chart_.hideXAxis=true;this.chart_.hideLegend=true;this.chart_.enableHoverBox=false;this.chart_.addEventListener('rect-mouseenter',event=>this.onRectMouseEnter_(event));this.chart_.addEventListener('rect-mouseleave',event=>this.onRectMouseLeave_(event));},onRectMouseEnter_(event){for(const row of this.$.table.tableRows){if(row.name===event.rect.key){row.displayElement.style.background=event.rect.color;row.keySpan.scrollIntoViewIfNeeded();}else{row.displayElement.style.background='';}}},onRectMouseLeave_(event){for(const row of this.$.table.tableRows){row.displayElement.style.background='';}},ready(){Polymer.dom(this.$.container).appendChild(this.chart_);this.$.table.zebra=true;this.$.table.showHeader=false;this.$.table.tableColumns=[{value:row=>row.keySpan,},{value:row=>row.displayElement,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},{value:row=>row.stringPercent,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},];},updateContents_(){this.$.container.style.display='none';this.$.table.style.display='none';this.$.empty.style.display='block';if(!this.diagnostic_){this.chart_.data=[];return;}\nif(this.histogram_)this.chart_.unit=this.histogram_.unit;let colorScheme=undefined;if(this.diagnostic.colorScheme===tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER){colorScheme=(name)=>{let cat=name.split(' ');cat=cat[cat.length-1];return tr.e.chrome.ChromeUserFriendlyCategoryDriver.getColor(cat);};}else if(this.diagnostic.colorScheme){colorScheme=(name)=>tr.b.FixedColorSchemeRegistry.lookUp(this.diagnostic.colorScheme).getColor(name);}else{colorScheme=(name)=>DEFAULT_COLOR_SCHEME.colorForKey(name);}\nconst tableRows=[];let tableSum=0;const histogramNames=[];for(const[key,value]of this.diagnostic){const histogramName=getHistogramName(this.histogram_,this.name_,key);const row=new BreakdownTableRow(key,value,histogramName,this.chart_.unit,colorScheme(key));tableRows.push(row);if(row.numberValue!==undefined)tableSum+=row.numberValue;if(histogramName){histogramNames.push(histogramName);}}\ntableRows.sort((x,y)=>x.compare(y));if(tableSum>0){let summaryDisplayElement=tableSum;if(this.chart_.unit!==undefined){summaryDisplayElement=this.chart_.unit.format(tableSum);}\nsummaryDisplayElement=tr.ui.b.createSpan({textContent:summaryDisplayElement,});tableRows.unshift(new BreakdownTableSummaryRow(summaryDisplayElement,histogramNames));}\nconst chartData={x:0};for(const row of tableRows){if(row.numberValue===undefined)continue;row.tableSum=tableSum;chartData[row.name]=row.numberValue;const dataSeries=this.chart_.getDataSeries(row.name);dataSeries.color=row.color;dataSeries.highlightedColor=row.highlightedColor;}\nif(tableRows.length>0){this.$.table.style.display='block';this.$.empty.style.display='none';this.$.table.tableRows=tableRows;this.$.table.rebuild();}\nif(Object.keys(chartData).length>1){this.$.container.style.display='block';this.$.empty.style.display='none';this.chart_.data=[chartData];}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-collected-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const[canonicalUrl,events]of this.diagnostic){const link=document.createElement('a');if(events.length===1){const event=tr.b.getOnlyElement(events);link.textContent=event.title+' '+\ntr.b.Unit.byName.timeDurationInMs.format(event.duration);}else{link.textContent=events.length+' events';}\nlink.href=canonicalUrl;Polymer.dom(this).appendChild(link);Polymer.dom(this).appendChild(document.createElement('br'));}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-date-range-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){if(this.diagnostic===undefined){Polymer.dom(this).textContent='';return;}\nPolymer.dom(this).textContent=this.diagnostic.toString();}});return{};});'use strict';function isTable(object){if(!(object instanceof Array)||(object.length<2))return false;for(const colName in object[0]){if(typeof colName!=='string')return false;}\nfor(let i=0;i<object.length;++i){if(!(object[i]instanceof Object))return false;for(const colName in object[i]){if(i&&(object[0][colName]===undefined))return false;const cellType=typeof object[i][colName];if(cellType!=='string'&&cellType!=='number')return false;}\nif(i){for(const colName in object[0]){if(object[i][colName]===undefined)return false;}}}\nreturn true;}\nPolymer({is:'tr-ui-a-generic-object-view',ready(){this.object_=undefined;},get object(){return this.object_;},set object(object){this.object_=object;this.updateContents_();},updateContents_(){Polymer.dom(this.$.content).textContent='';this.appendElementsForType_('',this.object_,0,0,5,'');},appendElementsForType_(label,object,indent,depth,maxDepth,suffix){if(depth>maxDepth){this.appendSimpleText_(label,indent,'<recursion limit reached>',suffix);return;}\nif(object===undefined){this.appendSimpleText_(label,indent,'undefined',suffix);return;}\nif(object===null){this.appendSimpleText_(label,indent,'null',suffix);return;}\nif(!(object instanceof Object)){const type=typeof object;if(type!=='string'){return this.appendSimpleText_(label,indent,object,suffix);}\nlet objectReplaced=false;if((object[0]==='{'&&object[object.length-1]==='}')||(object[0]==='['&&object[object.length-1]===']')){try{object=JSON.parse(object);objectReplaced=true;}catch(e){}}\nif(!objectReplaced){if(object.includes('\\n')){const lines=object.split('\\n');lines.forEach(function(line,i){let text;let ioff;let ll;let ss;if(i===0){text='\"'+line;ioff=0;ll=label;ss='';}else if(i<lines.length-1){text=line;ioff=1;ll='';ss='';}else{text=line+'\"';ioff=1;ll='';ss=suffix;}\nconst el=this.appendSimpleText_(ll,indent+ioff*label.length+ioff,text,ss);el.style.whiteSpace='pre';return el;},this);return;}\nif(tr.b.isUrl(object)){const link=document.createElement('a');link.href=object;link.textContent=object;this.appendElementWithLabel_(label,indent,link,suffix);return;}\nthis.appendSimpleText_(label,indent,'\"'+object+'\"',suffix);return;}}\nif(object instanceof tr.model.ObjectSnapshot){const link=document.createElement('tr-ui-a-analysis-link');link.selection=new tr.model.EventSet(object);this.appendElementWithLabel_(label,indent,link,suffix);return;}\nif(object instanceof tr.model.ObjectInstance){const link=document.createElement('tr-ui-a-analysis-link');link.selection=new tr.model.EventSet(object);this.appendElementWithLabel_(label,indent,link,suffix);return;}\nif(object instanceof tr.b.math.Rect){this.appendSimpleText_(label,indent,object.toString(),suffix);return;}\nif(object instanceof tr.b.Scalar){const el=this.ownerDocument.createElement('tr-v-ui-scalar-span');el.value=object;el.inline=true;this.appendElementWithLabel_(label,indent,el,suffix);return;}\nif(object instanceof Array){this.appendElementsForArray_(label,object,indent,depth,maxDepth,suffix);return;}\nthis.appendElementsForObject_(label,object,indent,depth,maxDepth,suffix);},appendElementsForArray_(label,object,indent,depth,maxDepth,suffix){if(object.length===0){this.appendSimpleText_(label,indent,'[]',suffix);return;}\nif(isTable(object)){const table=document.createElement('tr-ui-b-table');const columns=[];for(const colName of Object.keys(object[0])){let allStrings=true;let allNumbers=true;for(let i=0;i<object.length;++i){if(typeof(object[i][colName])!=='string'){allStrings=false;}\nif(typeof(object[i][colName])!=='number'){allNumbers=false;}\nif(!allStrings&&!allNumbers)break;}\nconst column={title:colName};column.value=function(row){return row[colName];};if(allStrings){column.cmp=function(x,y){return x[colName].localeCompare(y[colName]);};}else if(allNumbers){column.cmp=function(x,y){return x[colName]-y[colName];};}\ncolumns.push(column);}\ntable.tableColumns=columns;table.tableRows=object;this.appendElementWithLabel_(label,indent,table,suffix);table.rebuild();return;}\nthis.appendElementsForType_(label+'[',object[0],indent,depth+1,maxDepth,object.length>1?',':']'+suffix);for(let i=1;i<object.length;i++){this.appendElementsForType_('',object[i],indent+label.length+1,depth+1,maxDepth,i<object.length-1?',':']'+suffix);}\nreturn;},appendElementsForObject_(label,object,indent,depth,maxDepth,suffix){const keys=Object.keys(object);if(keys.length===0){this.appendSimpleText_(label,indent,'{}',suffix);return;}\nthis.appendElementsForType_(label+'{'+keys[0]+': ',object[keys[0]],indent,depth,maxDepth,keys.length>1?',':'}'+suffix);for(let i=1;i<keys.length;i++){this.appendElementsForType_(keys[i]+': ',object[keys[i]],indent+label.length+1,depth+1,maxDepth,i<keys.length-1?',':'}'+suffix);}},appendElementWithLabel_(label,indent,dataElement,suffix){const row=document.createElement('div');const indentSpan=document.createElement('span');indentSpan.style.whiteSpace='pre';for(let i=0;i<indent;i++){Polymer.dom(indentSpan).textContent+=' ';}\nPolymer.dom(row).appendChild(indentSpan);const labelSpan=document.createElement('span');Polymer.dom(labelSpan).textContent=label;Polymer.dom(row).appendChild(labelSpan);Polymer.dom(row).appendChild(dataElement);const suffixSpan=document.createElement('span');Polymer.dom(suffixSpan).textContent=suffix;Polymer.dom(row).appendChild(suffixSpan);row.dataElement=dataElement;Polymer.dom(this.$.content).appendChild(row);},appendSimpleText_(label,indent,text,suffix){const el=this.ownerDocument.createElement('span');Polymer.dom(el).textContent=text;this.appendElementWithLabel_(label,indent,el,suffix);return el;}});'use strict';Polymer({is:'tr-ui-a-generic-object-view-with-label',ready(){this.labelEl_=document.createElement('div');this.genericObjectView_=document.createElement('tr-ui-a-generic-object-view');Polymer.dom(this.root).appendChild(this.labelEl_);Polymer.dom(this.root).appendChild(this.genericObjectView_);},get label(){return Polymer.dom(this.labelEl_).textContent;},set label(label){Polymer.dom(this.labelEl_).textContent=label;},get object(){return this.genericObjectView_.object;},set object(object){this.genericObjectView_.object=object;}});'use strict';tr.exportTo('tr.v.ui',function(){function isLinkTuple(value){return((value instanceof Array)&&(value.length===2)&&(typeof value[0]==='string')&&tr.b.isUrl(value[1]));}\nPolymer({is:'tr-v-ui-generic-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){this.$.generic.style.display='none';this.$.links.textContent='';if(this.diagnostic===undefined)return;const values=Array.from(this.diagnostic);let areAllStrings=true;let areAllNumbers=true;for(const value of values){if(typeof value!=='number'){areAllNumbers=false;if(typeof value!=='string'&&!isLinkTuple(value)){areAllStrings=false;break;}}}\nif(!areAllStrings){this.$.generic.style.display='';this.$.generic.object=values;return;}\nif(areAllNumbers){values.sort((x,y)=>x-y);}else{values.sort();}\nfor(const value of values){const link={textContent:''+value};if(isLinkTuple(value)){link.textContent=value[0];link.href=value[1];}else if(tr.b.isUrl(value)){link.href=value;}\nif(this.name_===tr.v.d.RESERVED_NAMES.TRACE_URLS){link.textContent=value.substr(1+value.lastIndexOf('/'));}\nconst linkEl=tr.ui.b.createLink(link);if(link.href){linkEl.target='_blank';linkEl.addEventListener('click',e=>e.stopPropagation());}\nthis.$.links.appendChild(linkEl);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';const events=new tr.model.EventSet([...this.diagnostic]);const link=document.createElement('tr-ui-a-analysis-link');let label=events.length+' events';if(events.length===1){const event=tr.b.getOnlyElement(events);label=event.title+' ';label+=tr.b.Unit.byName.timeDurationInMs.format(event.duration);}\nlink.setSelectionAndContent(events,label);Polymer.dom(this).appendChild(link);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-diagnostic-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){this.$.scalar.setValueAndUnit(this.diagnostic.value.value,this.diagnostic.value.unit);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-unmergeable-diagnostic-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const diagnostic of this.diagnostic){if(diagnostic instanceof tr.v.d.RelatedNameMap)continue;const div=document.createElement('div');div.appendChild(tr.v.ui.createDiagnosticSpan(diagnostic,this.name_,this.histogram_));Polymer.dom(this).appendChild(div);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){function findElementNameForDiagnostic(diagnostic){let typeInfo=undefined;let curProto=diagnostic.constructor.prototype;while(curProto){typeInfo=tr.v.d.Diagnostic.findTypeInfo(curProto.constructor);if(typeInfo&&typeInfo.metadata.elementName)break;typeInfo=undefined;curProto=curProto.__proto__;}\nif(typeInfo===undefined){throw new Error(diagnostic.constructor.name+' or a base class must have a registered elementName');}\nconst tagName=typeInfo.metadata.elementName;if(tr.ui.b.isUnknownElementName(tagName)){throw new Error('Element not registered: '+tagName);}\nreturn tagName;}\nfunction createDiagnosticSpan(diagnostic,name,histogram){const tagName=findElementNameForDiagnostic(diagnostic);const span=document.createElement(tagName);if(span.build===undefined)throw new Error(tagName);span.build(diagnostic,name,histogram);return span;}\nreturn{createDiagnosticSpan,};});'use strict';tr.exportTo('tr.v.ui',function(){function makeColumn(title,histogram){return{title,value(map){const diagnostic=map.get(title);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,title,histogram);}};}\nPolymer({is:'tr-v-ui-diagnostic-map-table',created(){this.diagnosticMaps_=undefined;this.histogram_=undefined;this.isMetadata_=false;},set histogram(h){this.histogram_=h;},set isMetadata(m){this.isMetadata_=m;this.$.table.showHeader=!this.isMetadata_;},set diagnosticMaps(maps){this.diagnosticMaps_=maps;this.updateContents_();},get diagnosticMaps(){return this.diagnosticMaps_;},updateContents_(){if(this.isMetadata_&&this.diagnosticMaps_.length!==1){throw new Error('Metadata diagnostic-map-tables require exactly 1 DiagnosticMap');}\nif(this.diagnosticMaps_===undefined||this.diagnosticMaps_.length===0){this.$.table.tableRows=[];this.$.table.tableColumns=[];return;}\nlet names=new Set();for(const map of this.diagnosticMaps_){for(const[name,diagnostic]of map){if(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)continue;if(diagnostic instanceof tr.v.d.CollectedRelatedEventSet)continue;names.add(name);}}\nnames=Array.from(names).sort();const histogram=this.histogram_;if(this.isMetadata_){const diagnosticMap=this.diagnosticMaps_[0];this.$.table.tableColumns=[{value(name){return name.name;}},{value(name){const diagnostic=diagnosticMap.get(name.name);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,name.name,histogram);}},];this.$.table.tableRows=names.map(name=>{return{name};});}else{this.$.table.tableColumns=names.map(name=>makeColumn(name,histogram));this.$.table.tableRows=this.diagnosticMaps_;}\nthis.$.table.rebuild();}});return{};});'use strict';tr.exportTo('tr.b',function(){class Serializable{constructor(){Object.defineProperty(this,'properties_',{configurable:false,enumerable:false,value:new Map(),});}\ndefine(name,initialValue){if(this[name]!==undefined){throw new Error(`\"${name}\" is already defined.`);}\nif(name[name.length-1]==='_'){throw new Error(`\"${name}\" cannot end with an underscore.`);}\nthis.properties_.set(name,initialValue);Object.defineProperty(this,name,{configurable:false,enumerable:true,get:()=>this.properties_.get(name),set:value=>this.setProperty_(name,value),});}\nsetProperty_(name,value){this.properties_.set(name,value);}\nclone(){return Serializable.fromDict(this.asDict());}\nasDict(){function visit(obj){if(obj instanceof Serializable)return obj.asDict();if(obj instanceof Set)return Array.from(obj);if(obj instanceof Array)return obj.map(visit);if(!(obj instanceof Map))return obj;const result={};for(const[name,value]of obj){result[name]=visit(value);}\nreturn result;}\nconst dict={type:this.constructor.name};for(const[name,value]of this.properties_){dict[name.replace(/_$/,'')]=visit(value);}\nreturn dict;}\nstatic fromDict(dict){function visit(d){if(d instanceof Array)return d.map(visit);if(!(d instanceof Object))return d;if(typeof d.type==='string')return Serializable.fromDict(d);const result=new Map();for(const[name,value]of Object.entries(d)){result.set(name,visit(value));}\nreturn result;}\nconst typeInfo=Serializable.findTypeInfoWithName(dict.type);const result=new typeInfo.constructor();for(const[name,value]of Object.entries(dict)){result[name]=visit(value);}\nreturn result;}}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Serializable;tr.b.decorateExtensionRegistry(Serializable,options);return{Serializable,};});'use strict';tr.exportTo('tr.b',function(){class ViewState extends tr.b.Serializable{constructor(){super();tr.b.EventTarget.decorate(this);}\nsetProperty_(name,value){this.update(new Map([[name,value]]));}\nasync updateFromViewState(other){await this.update(other.properties_);}\nasync update(delta){if(!(delta instanceof Map))delta=new Map(Object.entries(delta));const actualDelta={};for(const[name,current]of delta){const previous=this[name];if(previous===current)continue;actualDelta[name]={previous,current};tr.b.Serializable.prototype.setProperty_.call(this,name,current);}\nif(Object.keys(actualDelta).length===0)return;await tr.b.dispatchSimpleEventAsync(this,this.updateEventName_,{delta:actualDelta});}\nget updateEventName_(){return this.constructor.name+'.update';}\naddUpdateListener(listener){this.addEventListener(this.updateEventName_,listener);}\nremoveUpdateListener(listener){this.removeEventListener(this.updateEventName_,listener);}}\nreturn{ViewState,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetViewState extends tr.b.ViewState{constructor(){super();this.define('searchQuery','');this.define('referenceDisplayLabel','');this.define('displayStatisticName','');this.define('showAll',true);this.define('groupings',[]);this.define('sortColumnIndex',0);this.define('sortDescending',false);this.define('constrainNameColumn',true);this.define('tableRowStates',new Map());this.define('alpha',0.01);}}\ntr.b.ViewState.register(HistogramSetViewState);class HistogramSetTableRowState extends tr.b.ViewState{constructor(){super();this.define('isExpanded',false);this.define('isOverviewed',false);this.define('cells',new Map());this.define('subRows',new Map());this.define('diagnosticsTab','');}\nasCompactDict(){const result={};if(this.isExpanded)result.e='1';if(this.isOverviewed)result.o='1';if(this.diagnosticsTab)result.d=this.diagnosticsTab;const cells={};for(const[name,cell]of this.cells){const cellDict=cell.asCompactDict();if(cellDict===undefined)continue;cells[name]=cellDict;}\nif(Object.keys(cells).length>0)result.c=cells;const subRows={};for(const[name,row]of this.subRows){const rowDict=row.asCompactDict();if(rowDict===undefined)continue;subRows[name]=rowDict;}\nif(Object.keys(subRows).length>0)result.r=subRows;if(Object.keys(result).length===0)return undefined;return result;}\nasync updateFromCompactDict(dict){await this.update({isExpanded:dict.e==='1',isOverviewed:dict.o==='1',diagnosticsTab:dict.d||'',});for(const[name,cellDict]of Object.entries(dict.c||{})){const cell=this.cells.get(name);if(cell===undefined)continue;await cell.updateFromCompactDict(cellDict);}\nfor(const[name,subRowDict]of Object.entries(dict.r||{})){const subRow=this.subRows.get(name);if(subRow===undefined)continue;await subRow.updateFromCompactDict(subRowDict);}}*walk(){yield this;for(const row of this.subRows.values())yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}}\ntr.b.ViewState.register(HistogramSetTableRowState);class HistogramSetTableCellState extends tr.b.ViewState{constructor(){super();this.define('isOpen',false);this.define('brushedBinRange',new tr.b.math.Range());this.define('mergeSampleDiagnostics',true);}\nasCompactDict(){const result={};if(this.isOpen)result.o='1';if(!this.mergeSampleDiagnostics)result.m='0';if(!this.brushedBinRange.isEmpty){result.b=this.brushedBinRange.min+'_'+this.brushedBinRange.max;}\nif(Object.keys(result).length===0)return undefined;return result;}\nasync updateFromCompactDict(dict){let binRange=this.brushedBinRange;if(dict.b){let[bMin,bMax]=dict.b.split('_');bMin=parseInt(bMin);bMax=parseInt(bMax);if(bMin!==binRange.min||bMax!==binRange.max){binRange=tr.b.math.Range.fromExplicitRange(bMin,bMax);}}\nawait this.update({isOpen:dict.o==='1',brushedBinRange:binRange,mergeSampleDiagnostics:dict.m!=='0',});}}\ntr.b.ViewState.register(HistogramSetTableCellState);return{HistogramSetTableCellState,HistogramSetTableRowState,HistogramSetViewState,};});'use strict';Polymer({is:'tr-v-ui-scalar-map-table',created(){this.scalarMap_=new Map();this.significance_=new Map();},ready(){this.$.table.showHeader=false;this.$.table.tableColumns=[{value(row){return row.name;}},{value(row){const span=tr.v.ui.createScalarSpan(row.value);if(row.significance!==undefined){span.significance=row.significance;}else if(row.anyRowsHaveSignificance){span.style.marginRight='18px';}\nspan.style.whiteSpace='nowrap';return span;}}];},get scalarMap(){return this.scalarMap_;},set scalarMap(map){this.scalarMap_=map;this.updateContents_();},setSignificanceForKey(key,significance){this.significance_.set(key,significance);this.updateContents_();},updateContents_(){const rows=[];for(const[key,scalar]of this.scalarMap){rows.push({name:key,value:scalar,significance:this.significance_.get(key),anyRowsHaveSignificance:(this.significance_.size>0)});}\nthis.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_BAR_HEIGHT_PX=5;const TRUNCATE_BIN_MARGIN=0.15;const IGNORE_DELTA_STATISTICS_NAMES=[`${tr.v.DELTA}min`,`%${tr.v.DELTA}min`,`${tr.v.DELTA}max`,`%${tr.v.DELTA}max`,`${tr.v.DELTA}sum`,`%${tr.v.DELTA}sum`,`${tr.v.DELTA}count`,`%${tr.v.DELTA}count`,];Polymer({is:'tr-v-ui-histogram-span',created(){this.viewStateListener_=this.onViewStateUpdate_.bind(this);this.viewState=new tr.v.ui.HistogramSetTableCellState();this.rowStateListener_=this.onRowStateUpdate_.bind(this);this.rowState=new tr.v.ui.HistogramSetTableRowState();this.rootStateListener_=this.onRootStateUpdate_.bind(this);this.rootState=new tr.v.ui.HistogramSetViewState();this.histogram_=undefined;this.referenceHistogram_=undefined;this.graphWidth_=undefined;this.graphHeight_=undefined;this.mouseDownBin_=undefined;this.prevBrushedBinRange_=new tr.b.math.Range();this.anySampleDiagnostics_=false;this.canMergeSampleDiagnostics_=true;this.mwuResult_=undefined;},get rowState(){return this.rowState_;},set rowState(rs){if(this.rowState){this.rowState.removeUpdateListener(this.rowStateListener_);}\nthis.rowState_=rs;this.rowState.addUpdateListener(this.rowStateListener_);if(this.isAttached)this.updateContents_();},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState){this.viewState.removeUpdateListener(this.viewStateListener_);}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.viewStateListener_);if(this.isAttached)this.updateContents_();},get rootState(){return this.rootState_;},set rootState(vs){if(this.rootState){this.rootState.removeUpdateListener(this.rootStateListener_);}\nthis.rootState_=vs;this.rootState.addUpdateListener(this.rootStateListener_);if(this.isAttached)this.updateContents_();},build(histogram,opt_referenceHistogram){this.histogram_=histogram;this.$.metric_diagnostics.histogram=histogram;this.$.sample_diagnostics.histogram=histogram;this.referenceHistogram_=opt_referenceHistogram;if(this.histogram.canCompare(this.referenceHistogram)){this.mwuResult_=tr.b.math.Statistics.mwu(this.histogram.sampleValues,this.referenceHistogram.sampleValues,this.rootState.alpha);}\nthis.anySampleDiagnostics_=false;for(const bin of this.histogram.allBins){if(bin.diagnosticMaps.length>0){this.anySampleDiagnostics_=true;break;}}\nif(this.isAttached)this.updateContents_();},onViewStateUpdate_(event){if(event.delta.brushedBinRange){if(this.chart_!==undefined){this.chart_.brushedRange=this.viewState.brushedBinRange;}\nthis.updateDiagnostics_();}\nif(event.delta.mergeSampleDiagnostics&&(this.viewState.mergeSampleDiagnostics!==this.$.merge_sample_diagnostics.checked)){this.$.merge_sample_diagnostics.checked=this.canMergeSampleDiagnostics&&this.viewState.mergeSampleDiagnostics;this.updateDiagnostics_();}},updateSignificance_(){if(!this.mwuResult_)return;this.$.stats.setSignificanceForKey(`${tr.v.DELTA}avg`,this.mwuResult_.significance);},onRootStateUpdate_(event){if(event.delta.alpha&&this.mwuResult_){this.mwuResult_.compare(this.rootState.alpha);this.updateSignificance_();}},onRowStateUpdate_(event){if(event.delta.diagnosticsTab){if(this.rowState.diagnosticsTab===this.$.sample_diagnostics_container.tabLabel){this.updateDiagnostics_();}else{for(const tab of this.$.diagnostics.subViews){if(this.rowState.diagnosticsTab===tab.tabLabel){this.$.diagnostics.selectedSubView=tab;break;}}}}},ready(){this.$.metric_diagnostics.tabLabel='histogram diagnostics';this.$.sample_diagnostics_container.tabLabel='sample diagnostics';this.$.metadata_diagnostics.tabLabel='metadata';this.$.metadata_diagnostics.isMetadata=true;this.$.diagnostics.addEventListener('selected-tab-change',this.onSelectedDiagnosticsChanged_.bind(this));this.$.drag_handle.target=this.$.container;this.$.drag_handle.addEventListener('drag-handle-resize',this.onResize_.bind(this));},attached(){if(this.histogram_!==undefined)this.updateContents_();},get canMergeSampleDiagnostics(){return this.canMergeSampleDiagnostics_;},set canMergeSampleDiagnostics(merge){this.canMergeSampleDiagnostics_=merge;if(!merge)this.viewState.mergeSampleDiagnostics=false;this.$.merge_sample_diagnostics_container.style.display=(merge?'':'none');},onResize_(event){event.stopPropagation();let heightPx=parseInt(this.$.container.style.height);if(heightPx<this.defaultGraphHeight){heightPx=this.defaultGraphHeight;this.$.container.style.height=this.defaultGraphHeight+'px';}\nthis.chart_.graphHeight=heightPx-(this.chart_.margin.top+\nthis.chart_.margin.bottom);this.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';},get graphWidth(){return this.graphWidth_||this.defaultGraphWidth;},set graphWidth(width){this.graphWidth_=width;},get graphHeight(){return this.graphHeight_||this.defaultGraphHeight;},set graphHeight(height){this.graphHeight_=height;},get barHeight(){return this.chart_.barHeight;},set barHeight(px){this.graphHeight=this.computeChartHeight_(px);},computeChartHeight_(barHeightPx){return(this.chart_.margin.top+\nthis.chart_.margin.bottom+\n(barHeightPx*this.histogram.allBins.length));},get defaultGraphHeight(){if(this.histogram&&this.histogram.allBins.length===1){return 150;}\nreturn this.computeChartHeight_(DEFAULT_BAR_HEIGHT_PX);},get defaultGraphWidth(){if(this.histogram.allBins.length===1){return 100;}\nreturn 300;},get brushedBins(){const bins=[];if(this.histogram&&!this.viewState.brushedBinRange.isEmpty){for(let i=this.viewState.brushedBinRange.min;i<this.viewState.brushedBinRange.max;++i){bins.push(this.histogram.allBins[i]);}}\nreturn bins;},async updateBrushedRange_(binIndex){const brushedBinRange=new tr.b.math.Range();brushedBinRange.addValue(tr.b.math.clamp(this.mouseDownBinIndex_,0,this.histogram.allBins.length-1));brushedBinRange.addValue(tr.b.math.clamp(binIndex,0,this.histogram.allBins.length-1));brushedBinRange.max+=1;await this.viewState.update({brushedBinRange});},onMouseDown_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.prevBrushedBinRange_=this.viewState.brushedBinRange;this.mouseDownBinIndex_=chartEvent.y;this.updateBrushedRange_(chartEvent.y);},onMouseMove_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.updateBrushedRange_(chartEvent.y);},onMouseUp_(chartEvent){chartEvent.stopPropagation();if(!this.histogram)return;this.updateBrushedRange_(chartEvent.y);if(this.prevBrushedBinRange_.range===1&&this.viewState.brushedBinRange.range===1&&(this.prevBrushedBinRange_.min===this.viewState.brushedBinRange.min)){tr.b.Timing.instant('histogram-span','clearBrushedBins');this.viewState.update({brushedBinRange:new tr.b.math.Range()});}else{tr.b.Timing.instant('histogram-span','brushBins');}\nthis.mouseDownBinIndex_=undefined;},async onSelectedDiagnosticsChanged_(){await this.rowState.update({diagnosticsTab:this.$.diagnostics.selectedSubView.tabLabel,});if((this.$.diagnostics.selectedSubView===this.$.sample_diagnostics_container)&&this.histogram&&this.viewState.brushedBinRange.isEmpty){const brushedBinRange=tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length);await this.viewState.update({brushedBinRange});this.updateDiagnostics_();}},updateDiagnostics_(){let maps=[];for(const bin of this.brushedBins){for(const map of bin.diagnosticMaps){maps.push(map);}}\nif(this.$.merge_sample_diagnostics.checked!==this.viewState.mergeSampleDiagnostics){this.viewState.update({mergeSampleDiagnostics:this.$.merge_sample_diagnostics.checked});}\nif(this.viewState.mergeSampleDiagnostics){const merged=new tr.v.d.DiagnosticMap();for(const map of maps){merged.addDiagnostics(map);}\nmaps=[merged];}\nconst mark=tr.b.Timing.mark('histogram-span',(this.viewState.mergeSampleDiagnostics?'merge':'split')+'SampleDiagnostics');this.$.sample_diagnostics.diagnosticMaps=maps;mark.end();if(this.anySampleDiagnostics_){this.$.diagnostics.selectedSubView=this.$.sample_diagnostics_container;}},get histogram(){return this.histogram_;},get referenceHistogram(){return this.referenceHistogram_;},getDeltaScalars_(statNames,scalarMap){if(!this.histogram.canCompare(this.referenceHistogram))return;for(const deltaStatName of tr.v.Histogram.getDeltaStatisticsNames(statNames)){if(IGNORE_DELTA_STATISTICS_NAMES.includes(deltaStatName))continue;const scalar=this.histogram.getStatisticScalar(deltaStatName,this.referenceHistogram,this.mwuResult_);if(scalar===undefined)continue;scalarMap.set(deltaStatName,scalar);}},set isYLogScale(logScale){this.chart_.isYLogScale=logScale;},async updateContents_(){this.$.chart.style.display='none';this.$.drag_handle.style.display='none';this.$.container.style.justifyContent='';while(Polymer.dom(this.$.chart).lastChild){Polymer.dom(this.$.chart).removeChild(Polymer.dom(this.$.chart).lastChild);}\nif(!this.histogram)return;this.$.container.style.display='';const scalarMap=new Map();this.getDeltaScalars_(this.histogram.statisticsNames,scalarMap);for(const[name,scalar]of this.histogram.statisticsScalars){scalarMap.set(name,scalar);}\nthis.$.stats.scalarMap=scalarMap;this.updateSignificance_();const metricDiagnosticMap=new tr.v.d.DiagnosticMap();const metadataDiagnosticMap=new tr.v.d.DiagnosticMap();for(const[key,diagnostic]of this.histogram.diagnostics){if(diagnostic instanceof tr.v.d.RelatedNameMap)continue;if(tr.v.d.RESERVED_NAMES_SET.has(key)){metadataDiagnosticMap.set(key,diagnostic);}else{metricDiagnosticMap.set(key,diagnostic);}}\nconst diagnosticTabs=[];if(metricDiagnosticMap.size){this.$.metric_diagnostics.diagnosticMaps=[metricDiagnosticMap];diagnosticTabs.push(this.$.metric_diagnostics);}\nif(this.anySampleDiagnostics_){diagnosticTabs.push(this.$.sample_diagnostics_container);}\nif(metadataDiagnosticMap.size){this.$.metadata_diagnostics.diagnosticMaps=[metadataDiagnosticMap];diagnosticTabs.push(this.$.metadata_diagnostics);}\nthis.$.diagnostics.resetSubViews(diagnosticTabs);this.$.diagnostics.set('tabsHidden',diagnosticTabs.length<2);if(this.histogram.numValues<=1){await this.viewState.update({brushedBinRange:tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length)});this.$.container.style.justifyContent='flex-end';return;}\nthis.$.chart.style.display='block';this.$.drag_handle.style.display='block';if(this.histogram.allBins.length===1){if(this.histogram.min!==this.histogram.max){this.chart_=new tr.ui.b.BoxChart();Polymer.dom(this.$.chart).appendChild(this.chart_);this.chart_.graphWidth=this.graphWidth;this.chart_.graphHeight=this.graphHeight;this.chart_.hideXAxis=true;this.chart_.data=[{x:'',color:'blue',percentile_0:this.histogram.running.min,percentile_25:this.histogram.getApproximatePercentile(0.25),percentile_50:this.histogram.getApproximatePercentile(0.5),percentile_75:this.histogram.getApproximatePercentile(0.75),percentile_100:this.histogram.running.max,}];}\nthis.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';await this.viewState.update({brushedBinRange:tr.b.math.Range.fromExplicitRange(0,this.histogram.allBins.length)});return;}\nthis.chart_=new tr.ui.b.NameBarChart();Polymer.dom(this.$.chart).appendChild(this.chart_);this.chart_.graphWidth=this.graphWidth;this.chart_.graphHeight=this.graphHeight;this.chart_.addEventListener('item-mousedown',this.onMouseDown_.bind(this));this.chart_.addEventListener('item-mousemove',this.onMouseMove_.bind(this));this.chart_.addEventListener('item-mouseup',this.onMouseUp_.bind(this));this.chart_.hideLegend=true;this.chart_.getDataSeries('y').color='blue';this.chart_.xAxisLabel='#';this.chart_.brushedRange=this.viewState.brushedBinRange;if(!this.viewState.brushedBinRange.isEmpty){this.updateDiagnostics_();}\nconst chartData=[];const binCounts=[];for(const bin of this.histogram.allBins){let x=bin.range.min;if(x===-Number.MAX_VALUE){x='<'+new tr.b.Scalar(this.histogram.unit,bin.range.max).toString();}else{x=new tr.b.Scalar(this.histogram.unit,x).toString();}\nchartData.push({x,y:bin.count});binCounts.push(bin.count);}\nbinCounts.sort((x,y)=>y-x);const dataRange=tr.b.math.Range.fromExplicitRange(0,binCounts[0]);if(binCounts[1]>0&&binCounts[0]>(binCounts[1]*2)){dataRange.max=binCounts[1]*(1+TRUNCATE_BIN_MARGIN);}\nif(binCounts[2]>0&&binCounts[1]>(binCounts[2]*2)){dataRange.max=binCounts[2]*(1+TRUNCATE_BIN_MARGIN);}\nthis.chart_.overrideDataRange=dataRange;this.chart_.data=chartData;this.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';}});});'use strict';tr.exportTo('tr.ui.analysis',function(){const EVENT_FIELD=[{key:'start',label:'Start'},{key:'cpuDuration',label:'CPU Duration'},{key:'duration',label:'Duration'},{key:'cpuSelfTime',label:'CPU Self Time'},{key:'selfTime',label:'Self Time'}];function buildDiagnostics_(slice){const diagnostics={};for(const item of EVENT_FIELD){const fieldName=item.key;if(slice[fieldName]===undefined)continue;diagnostics[fieldName]=new tr.v.d.Scalar(new tr.b.Scalar(tr.b.Unit.byName.timeDurationInMs,slice[fieldName]));}\ndiagnostics.args=new tr.v.d.GenericSet([slice.args]);diagnostics.event=new tr.v.d.RelatedEventSet(slice);return diagnostics;}\nPolymer({is:'tr-ui-a-multi-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;},ready(){this.$.radioPicker.style.display='none';this.$.radioPicker.items=EVENT_FIELD;this.$.radioPicker.select('cpuSelfTime');this.$.radioPicker.addEventListener('change',()=>{if(this.isAttached)this.updateContents_();});this.$.histogramSpan.graphWidth=400;this.$.histogramSpan.canMergeSampleDiagnostics=false;this.$.histogramContainer.style.display='none';},attached(){if(this.currentSelection_!==undefined)this.updateContents_();},set selection(selection){if(selection.length<=1){throw new Error('Only supports multiple items');}\nthis.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;if(this.isAttached)this.updateContents_();},get eventsHaveDuration(){return this.eventsHaveDuration_;},set eventsHaveDuration(eventsHaveDuration){this.eventsHaveDuration_=eventsHaveDuration;if(this.isAttached)this.updateContents_();},get eventsHaveSubRows(){return this.eventsHaveSubRows_;},set eventsHaveSubRows(eventsHaveSubRows){this.eventsHaveSubRows_=eventsHaveSubRows;if(this.isAttached)this.updateContents_();},buildHistogram_(selectedKey){let leftBoundary=Number.MAX_VALUE;let rightBoundary=tr.b.math.Statistics.percentile(this.currentSelection_,0.95,function(value){leftBoundary=Math.min(leftBoundary,value[selectedKey]);return value[selectedKey];});if(leftBoundary===rightBoundary)rightBoundary+=1;const histogram=new tr.v.Histogram('',tr.b.Unit.byName.timeDurationInMs,tr.v.HistogramBinBoundaries.createLinear(leftBoundary,rightBoundary,Math.ceil(Math.sqrt(this.currentSelection_.length))));histogram.customizeSummaryOptions({sum:false,percentile:[0.5,0.9],});for(const slice of this.currentSelection_){histogram.addSample(slice[selectedKey],buildDiagnostics_(slice));}\nreturn histogram;},updateContents_(){const selection=this.currentSelection_;if(!selection)return;const eventsByTitle=selection.getEventsOrganizedByTitle();const numTitles=Object.keys(eventsByTitle).length;this.$.eventSummaryTable.configure({showTotals:numTitles>1,eventsByTitle,eventsHaveDuration:this.eventsHaveDuration_,eventsHaveSubRows:this.eventsHaveSubRows_});this.$.selectionSummaryTable.selection=this.currentSelection_;if(numTitles===1){this.$.radioPicker.style.display='block';this.$.histogramContainer.style.display='flex';this.$.histogramSpan.build(this.buildHistogram_(this.$.radioPicker.selectedKey));if(this.$.histogramSpan.histogram.numValues===0){this.$.histogramContainer.style.display='none';}}else{this.$.radioPicker.style.display='none';this.$.histogramContainer.style.display='none';}}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const FLOW_IN=0x1;const FLOW_OUT=0x2;const FLOW_IN_OUT=FLOW_IN|FLOW_OUT;function FlowClassifier(){this.numEvents_=0;this.eventsByGUID_={};}\nFlowClassifier.prototype={getFS_(event){let fs=this.eventsByGUID_[event.guid];if(fs===undefined){this.numEvents_++;fs={state:0,event};this.eventsByGUID_[event.guid]=fs;}\nreturn fs;},addInFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_IN;return event;},addOutFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_OUT;return event;},hasEvents(){return this.numEvents_>0;},get inFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN){selection.push(fs.event);}}\nreturn selection;},get outFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_OUT){selection.push(fs.event);}}\nreturn selection;},get internalFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN_OUT){selection.push(fs.event);}}\nreturn selection;}};return{FlowClassifier,};});'use strict';function*getEventInFlowEvents(event){if(!event.inFlowEvents)return;yield*event.inFlowEvents;}\nfunction*getEventOutFlowEvents(event){if(!event.outFlowEvents)return;yield*event.outFlowEvents;}\nfunction*getEventAncestors(event){if(!event.enumerateAllAncestors)return;yield*event.enumerateAllAncestors();}\nfunction*getEventDescendents(event){if(!event.enumerateAllDescendents)return;yield*event.enumerateAllDescendents();}\nPolymer({is:'tr-ui-a-related-events',ready(){this.eventGroups_=[];this.cancelFunctions_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}\nreturn typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}\nreturn linkEl;}}];},hasRelatedEvents(){return(this.eventGroups_&&this.eventGroups_.length>0);},setRelatedEvents(eventSet){this.cancelAllTasks_();this.eventGroups_=[];this.addRuntimeCallStats_(eventSet);this.addOverlappingV8ICStats_(eventSet);this.addV8GCObjectStats_(eventSet);this.addV8Slices_(eventSet);this.addConnectedFlows_(eventSet);this.addConnectedEvents_(eventSet);this.addOverlappingSamples_(eventSet);this.updateContents_();},addConnectedFlows_(eventSet){const classifier=new tr.ui.analysis.FlowClassifier();eventSet.forEach(function(slice){if(slice.inFlowEvents){slice.inFlowEvents.forEach(function(flow){classifier.addInFlow(flow);});}\nif(slice.outFlowEvents){slice.outFlowEvents.forEach(function(flow){classifier.addOutFlow(flow);});}});if(!classifier.hasEvents())return;const addToEventGroups=function(type,flowEvent){this.eventGroups_.push({type,selection:new tr.model.EventSet(flowEvent),name:flowEvent.title});};classifier.inFlowEvents.forEach(addToEventGroups.bind(this,'Incoming flow'));classifier.outFlowEvents.forEach(addToEventGroups.bind(this,'Outgoing flow'));classifier.internalFlowEvents.forEach(addToEventGroups.bind(this,'Internal flow'));},cancelAllTasks_(){this.cancelFunctions_.forEach(function(cancelFunction){cancelFunction();});this.cancelFunctions_=[];},addConnectedEvents_(eventSet){this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Preceding events','Add all events that have led to the selected one(s), connected by '+'flow arrows or by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventAncestors(event);if(event.startSlice){yield event.startSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Following events','Add all events that have been caused by the selected one(s), '+'connected by flow arrows or by call stack.',eventSet,function*(event){yield*getEventOutFlowEvents(event);yield*getEventDescendents(event);if(event.endSlice){yield event.endSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('All connected events','Add all events connected to the selected one(s) by flow arrows or '+'by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventOutFlowEvents(event);yield*getEventAncestors(event);yield*getEventDescendents(event);if(event.startSlice){yield event.startSlice;}\nif(event.endSlice){yield event.endSlice;}}.bind(this)));},createEventsLinkIfNeeded_(title,tooltip,events,connectedFn){events=new tr.model.EventSet(events);const eventsToProcess=new Set(events);let wasChanged=false;let task;let isCanceled=false;function addEventsUntilTimeout(){if(isCanceled)return;const timeout=window.performance.now()+8;while(eventsToProcess.size>0&&window.performance.now()<=timeout){const nextEvent=tr.b.getFirstElement(eventsToProcess);eventsToProcess.delete(nextEvent);for(const eventToAdd of connectedFn(nextEvent)){if(!events.contains(eventToAdd)){events.push(eventToAdd);eventsToProcess.add(eventToAdd);wasChanged=true;}}}\nif(eventsToProcess.size>0){const newTask=new tr.b.Task(addEventsUntilTimeout.bind(this),this);task.after(newTask);task=newTask;return;}\nif(!wasChanged)return;this.eventGroups_.push({type:title,tooltip,selection:events});this.updateContents_();}\nfunction cancelTask(){isCanceled=true;}\ntask=new tr.b.Task(addEventsUntilTimeout.bind(this),this);tr.b.Task.RunWhenIdle(task);return cancelTask;},addOverlappingSamples_(eventSet){const samples=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.samples){continue;}\nconst candidates=slice.parentContainer.samples;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSamples=range.filterArray(candidates,function(value){return value.start;});for(const sample of filteredSamples){samples.push(sample);}}\nif(samples.length>0){this.eventGroups_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected slice(s).',selection:samples});}},addV8Slices_(eventSet){const v8Slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.category==='v8'){v8Slices.push(slice);}}\nif(v8Slices.length>0){this.eventGroups_.push({type:'V8 Slices',tooltip:'All V8 slices in the selected slice(s).',selection:v8Slices});}},addRuntimeCallStats_(eventSet){const slices=eventSet.filter(function(slice){return(slice.category==='v8'||slice.category==='disabled-by-default-v8.runtime_stats')&&slice.runtimeCallStats;});if(slices.length>0){this.eventGroups_.push({type:'Runtime call stats table',tooltip:'All V8 slices containing runtime call stats table in the selected slice(s).',selection:slices});}},addV8GCObjectStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.title==='V8.GC_Objects_Stats'){slices.push(slice);}}\nif(slices.length>0){this.eventGroups_.push({type:'V8 GC stats table',tooltip:'All V8 GC statistics slices in the selected set.',selection:slices});}},addOverlappingV8ICStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.sliceGroup){continue;}\nconst sliceGroup=slice.parentContainer.sliceGroup.slices;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSlices=range.filterArray(sliceGroup,value=>value.start);const icSlices=filteredSlices.filter(x=>x.title==='V8.ICStats');for(const icSlice of icSlices){slices.push(icSlice);}}\nif(slices.length>0){this.eventGroups_.push({type:'Overlapping V8 IC stats',tooltip:'All V8 IC statistics overlapping the selected set.',selection:slices});}},updateContents_(){const table=this.$.table;if(this.eventGroups_===undefined){table.tableRows=[];}else{table.tableRows=this.eventGroups_.slice();}\ntable.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},get relatedEventsToHighlight(){if(!this.$.content.selection)return undefined;const selection=new tr.model.EventSet();this.$.content.selection.forEach(function(asyncEvent){if(!asyncEvent.associatedEvents)return;asyncEvent.associatedEvents.forEach(function(event){selection.push(event);});});if(selection.length)return selection;return undefined;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-async-slice-sub-view',tr.model.AsyncSlice,{multi:true,title:'Async Slices',});'use strict';Polymer({is:'tr-ui-a-multi-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-cpu-slice-sub-view',tr.model.CpuSlice,{multi:true,title:'CPU Slices',});'use strict';Polymer({is:'tr-ui-a-multi-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveDuration=false;this.$.content.eventsHaveSubRows=false;},set selection(selection){this.$.content.selection=selection;},get selection(){return this.$.content.selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-flow-event-sub-view',tr.model.FlowEvent,{multi:true,title:'Flow Events',});'use strict';Polymer({is:'tr-ui-a-multi-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(frameEvent){frameEvent.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-frame-sub-view',tr.model.Frame,{multi:true,title:'Frames',});'use strict';Polymer({is:'tr-ui-a-multi-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this.$.content).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});'use strict';Polymer({is:'tr-ui-a-multi-object-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;const objectEvents=Array.from(selection).sort(tr.b.math.Range.compareByMinTimes);const timeSpanConfig={unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument};const table=this.$.content;table.tableColumns=[{title:'First',value(event){if(event instanceof tr.model.ObjectSnapshot){return tr.v.ui.createScalarSpan(event.ts,timeSpanConfig);}\nconst spanEl=document.createElement('span');Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.creationTs,timeSpanConfig));Polymer.dom(spanEl).appendChild(tr.ui.b.createSpan({textContent:'-',marginLeft:'4px',marginRight:'4px'}));if(event.deletionTs!==Number.MAX_VALUE){Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.deletionTs,timeSpanConfig));}\nreturn spanEl;},width:'200px'},{title:'Second',value(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(event);},event.userFriendlyName);return linkEl;},width:'100%'}];table.tableRows=objectEvents;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectInstance,{multi:true,title:'Object Instances',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectSnapshot,{multi:true,title:'Object Snapshots',});'use strict';const EventSet=tr.model.EventSet;const CHART_TITLE='Power (W) by ms since vertical sync';Polymer({is:'tr-ui-a-frame-power-usage-chart',ready(){this.chart_=undefined;this.samples_=new EventSet();this.vSyncTimestamps_=[];},attached(){if(this.samples_)this.updateContents_();},get chart(){return this.chart_;},get samples(){return this.samples_;},get vSyncTimestamps(){return this.vSyncTimestamps_;},setData(samples,vSyncTimestamps){this.samples_=(samples===undefined)?new EventSet():samples;this.vSyncTimestamps_=(vSyncTimestamps===undefined)?[]:vSyncTimestamps;if(this.isAttached)this.updateContents_();},updateContents_(){this.clearChart_();const data=this.getDataForLineChart_();if(data.length===0)return;this.chart_=new tr.ui.b.LineChart();Polymer.dom(this.$.content).appendChild(this.chart_);this.chart_.chartTitle=CHART_TITLE;this.chart_.data=data;},clearChart_(){const content=this.$.content;while(Polymer.dom(content).firstChild){Polymer.dom(content).removeChild(Polymer.dom(content).firstChild);}\nthis.chart_=undefined;},getDataForLineChart_(){const sortedSamples=this.sortSamplesByTimestampAscending_(this.samples);const vSyncTimestamps=this.vSyncTimestamps.slice();let lastVSyncTimestamp=undefined;const points=[];let frameNumber=0;sortedSamples.forEach(function(sample){while(vSyncTimestamps.length>0&&vSyncTimestamps[0]<=sample.start){lastVSyncTimestamp=vSyncTimestamps.shift();frameNumber++;}\nif(lastVSyncTimestamp===undefined)return;const point={x:sample.start-lastVSyncTimestamp};point['f'+frameNumber]=sample.powerInW;points.push(point);});return points;},sortSamplesByTimestampAscending_(samples){return samples.toArray().sort(function(smpl1,smpl2){return smpl1.start-smpl2.start;});}});'use strict';Polymer({is:'tr-ui-a-power-sample-summary-table',ready(){this.$.table.tableColumns=[{title:'Min power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.min);}},{title:'Max power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.max);}},{title:'Time-weighted average',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.timeWeightedAverageInW);}},{title:'Energy consumed',width:'100px',value(row){return tr.b.Unit.byName.energyInJoules.format(row.energyConsumedInJ);}},{title:'Sample count',width:'100%',value(row){return row.sampleCount;}}];this.samples=new tr.model.EventSet();},get samples(){return this.samples_;},set samples(samples){if(samples===this.samples)return;this.samples_=(samples===undefined)?new tr.model.EventSet():samples;this.updateContents_();},updateContents_(){if(this.samples.length===0){this.$.table.tableRows=[];}else{this.$.table.tableRows=[{min:this.getMin(),max:this.getMax(),timeWeightedAverageInW:this.getTimeWeightedAverageInW(),energyConsumedInJ:this.getEnergyConsumedInJ(),sampleCount:this.samples.length}];}\nthis.$.table.rebuild();},getMin(){return Math.min.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getMax(){return Math.max.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getTimeWeightedAverageInW(){const energyConsumedInJ=this.getEnergyConsumedInJ();if(energyConsumedInJ==='N/A')return'N/A';const durationInS=tr.b.convertUnit(this.samples.bounds.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return energyConsumedInJ/durationInS;},getEnergyConsumedInJ(){if(this.samples.length<2)return'N/A';const bounds=this.samples.bounds;const series=tr.b.getFirstElement(this.samples).series;return series.getEnergyConsumedInJ(bounds.min,bounds.max);}});'use strict';Polymer({is:'tr-ui-a-multi-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){const samples=this.selection;const vSyncTimestamps=(!samples?[]:tr.b.getFirstElement(samples).series.device.vSyncTimestamps);this.$.summaryTable.samples=samples;this.$.chart.setData(this.selection,vSyncTimestamps);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-power-sample-sub-view',tr.model.PowerSample,{multi:true,title:'Power Samples',});'use strict';(function(){const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;Polymer({is:'tr-ui-a-multi-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.viewOption_=undefined;this.selection_=undefined;},ready(){const viewSelector=tr.ui.b.createSelector(this,'viewOption','tracing.ui.analysis.multi_sample_sub_view',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]);Polymer.dom(this.$.control).appendChild(viewSelector);this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;this.updateContents_();},get viewOption(){return this.viewOption_;},set viewOption(viewOption){this.viewOption_=viewOption;this.updateContents_();},createSamplingSummary_(selection,viewOption){const builder=new MultiDimensionalViewBuilder(1,1);const samples=selection.filter(event=>event instanceof tr.model.Sample);samples.forEach(function(sample){builder.addPath([sample.userFriendlyStack.reverse()],[1],MultiDimensionalViewBuilder.ValueKind.SELF);});return builder.buildView(viewOption);},processSampleRows_(rows){for(const row of rows){let title=row.title[0];let results=/(.*) (Deoptimized reason: .*)/.exec(title);if(results!==null){row.deoptReason=results[2];title=results[1];}\nresults=/(.*) url: (.*)/.exec(title);if(results!==null){row.functionName=results[1];row.url=results[2];if(row.functionName===''){row.functionName='(anonymous function)';}\nif(row.url===''){row.url='unknown';}}else{row.functionName=title;row.url='unknown';}\nthis.processSampleRows_(row.subRows);}},updateContents_(){if(this.selection===undefined){this.$.table.tableColumns=[];this.$.table.tableRows=[];this.$.table.rebuild();return;}\nconst samplingData=this.createSamplingSummary_(this.selection,this.viewOption);const total=samplingData.values[0].total;const columns=[this.createPercentColumn_('Total',total),this.createSamplesColumn_('Total'),this.createPercentColumn_('Self',total),this.createSamplesColumn_('Self'),{title:'Function Name',value(row){if(row.deoptReason!==undefined){const spanEl=tr.ui.b.createSpan({italic:true,color:'#F44336',tooltip:row.deoptReason});spanEl.innerText=row.functionName;return spanEl;}\nreturn row.functionName;},width:'150px',cmp:(a,b)=>a.functionName.localeCompare(b.functionName),showExpandButtons:true},{title:'Location',value(row){return row.url;},width:'250px',cmp:(a,b)=>a.url.localeCompare(b.url),}];this.processSampleRows_(samplingData.subRows);this.$.table.tableColumns=columns;this.$.table.sortColumnIndex=1;this.$.table.sortDescending=true;this.$.table.tableRows=samplingData.subRows;this.$.table.rebuild();},createPercentColumn_(title,samplingDataTotal){const field=title.toLowerCase();return{title:title+' percent',value(row){return tr.v.ui.createScalarSpan(row.values[0][field]/samplingDataTotal,{customContextRange:tr.b.math.Range.PERCENT_RANGE,unit:tr.b.Unit.byName.normalizedPercentage,context:{minimumFractionDigits:2,maximumFractionDigits:2},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};},createSamplesColumn_(title){const field=title.toLowerCase();return{title:title+' samples',value(row){return tr.v.ui.createScalarSpan(row.values[0][field],{unit:tr.b.Unit.byName.unitlessNumber,context:{maximumFractionDigits:0},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-sample-sub-view',tr.model.Sample,{multi:true,title:'Samples',});})();'use strict';Polymer({is:'tr-ui-a-multi-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.selection_=undefined;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;if(tr.isExported('tr.ui.e.chrome.cc.RasterTaskSelection')){if(tr.ui.e.chrome.cc.RasterTaskSelection.supports(selection)){const ltvSelection=new tr.ui.e.chrome.cc.RasterTaskSelection(selection);const ltv=new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();ltv.objectSnapshot=ltvSelection.containingSnapshot;ltv.selection=ltvSelection;ltv.extraHighlightsByLayerId=ltvSelection.extraHighlightsByLayerId;Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).appendChild(ltv);this.requiresTallView_=true;return;}}\nPolymer.dom(this.$.content).textContent='';const mesv=document.createElement('tr-ui-a-multi-event-sub-view');mesv.selection=selection;Polymer.dom(this.$.content).appendChild(mesv);const relatedEvents=document.createElement('tr-ui-a-related-events');relatedEvents.setRelatedEvents(selection);if(relatedEvents.hasRelatedEvents()){Polymer.dom(this.$.content).appendChild(relatedEvents);}},get requiresTallView(){if(this.$.content.children.length===0)return false;const childTagName=this.$.content.children[0].tagName;if(childTagName==='TR-UI-A-MULTI-EVENT-SUB-VIEW'){return false;}\nreturn true;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-slice-sub-view',tr.model.ThreadSlice,{multi:true,title:'Slices',});'use strict';Polymer({is:'tr-ui-a-multi-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:true,title:'Thread Timeslices',});'use strict';Polymer({is:'tr-ui-a-user-expectation-related-samples-table',ready(){this.samples_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}\nreturn typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}\nreturn linkEl;}}];},hasRelatedSamples(){return(this.samples_&&this.samples_.length>0);},set selection(eventSet){this.samples_=[];const samples=new tr.model.EventSet;eventSet.forEach(function(ue){samples.addEventSet(ue.associatedSamples);}.bind(this));if(samples.length>0){this.samples_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected user expectation(s).',selection:samples});}\nthis.updateContents_();},updateContents_(){const table=this.$.table;if(this.samples_&&this.samples_.length>0){table.tableRows=this.samples_.slice();}else{table.tableRows=[];}\ntable.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-interaction-record-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(ir){ir.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:true,title:'User Expectations',});'use strict';Polymer({is:'tr-ui-a-stack-frame',ready(){this.stackFrame_=undefined;this.$.table.tableColumns=[];this.$.table.showHeader=true;},get stackFrame(){return this.stackFrame_;},set stackFrame(stackFrame){const table=this.$.table;this.stackFrame_=stackFrame;if(stackFrame===undefined){table.tableColumns=[];table.tableRows=[];table.rebuild();return;}\nlet hasName=false;let hasTitle=false;table.tableRows=stackFrame.stackTrace;table.tableRows.forEach(function(row){hasName|=row.name!==undefined;hasTitle|=row.title!==undefined;});const cols=[];if(hasName){cols.push({title:'Name',value(row){return row.name;}});}\nif(hasTitle){cols.push({title:'Title',value(row){return row.title;}});}\ntable.tableColumns=cols;table.rebuild();},tableForTesting(){return this.$.table;}});'use strict';Polymer({is:'tr-ui-a-single-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],properties:{isFlow:{type:Boolean,value:false}},ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}\nthis.setSelectionWithoutErrorChecks(selection);},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;this.updateContents_();},getFlowEventRows_(event){const rows=this.getEventRowsHelper_(event);rows.splice(0,0,{name:'ID',value:event.id});function createLinkTo(slice){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(slice);});Polymer.dom(linkEl).textContent=slice.userFriendlyName;return linkEl;}\nrows.push({name:'From',value:createLinkTo(event.startSlice)});rows.push({name:'To',value:createLinkTo(event.endSlice)});return rows;},getEventRowsHelper_(event){const rows=[];if(event.error){rows.push({name:'Error',value:event.error});}\nif(event.title){let title=event.title;if(tr.isExported('tr-ui-e-chrome-codesearch')){const container=document.createElement('div');container.appendChild(document.createTextNode(title));const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=title;container.appendChild(link);title=container;}\nrows.push({name:'Title',value:title});}\nif(event.category){rows.push({name:'Category',value:event.category});}\nif(event.model!==undefined){const ufc=event.model.getUserFriendlyCategoryFromEvent(event);if(ufc!==undefined){rows.push({name:'User Friendly Category',value:ufc});}}\nif(event.name){rows.push({name:'Name',value:event.name});}\nrows.push({name:'Start',value:tr.v.ui.createScalarSpan(event.start,{unit:tr.b.Unit.byName.timeStampInMs})});if(event.duration){rows.push({name:'Wall Duration',value:tr.v.ui.createScalarSpan(event.duration,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.cpuDuration){rows.push({name:'CPU Duration',value:tr.v.ui.createScalarSpan(event.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.subSlices!==undefined&&event.subSlices.length!==0){if(event.selfTime){rows.push({name:'Self Time',value:tr.v.ui.createScalarSpan(event.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nif(event.cpuSelfTime){const cpuSelfTimeEl=tr.v.ui.createScalarSpan(event.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs});if(event.cpuSelfTime>event.selfTime){cpuSelfTimeEl.warning=' Note that CPU Self Time is larger than Self Time. '+'This is a known limitation of this system, which occurs '+'due to several subslices, rounding issues, and imprecise '+'time at which we get cpu- and real-time.';}\nrows.push({name:'CPU Self Time',value:cpuSelfTimeEl});}}\nif(event.durationInUserTime){rows.push({name:'Duration (U)',value:tr.v.ui.createScalarSpan(event.durationInUserTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}\nfunction createStackFrameEl(sf){const sfEl=document.createElement('tr-ui-a-stack-frame');sfEl.stackFrame=sf;return sfEl;}\nif(event.startStackFrame&&event.endStackFrame){if(event.startStackFrame===event.endStackFrame){rows.push({name:'Start+End Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else{rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}}else if(event.startStackFrame){rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else if(event.endStackFrame){rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}\nif(event.info){const descriptionEl=tr.ui.b.createDiv({textContent:event.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(event.info.docLinks){event.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}}\nif(event.associatedAlerts.length){const alertSubRows=[];event.associatedAlerts.forEach(function(alert){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(alert);},alert.info.description);alertSubRows.push({name:alert.title,value:linkEl});});rows.push({name:'Alerts',value:'',isExpanded:true,subRows:alertSubRows});}\nreturn rows;},getEventRows_(event){if(this.isFlow){return this.getFlowEventRows_(event);}\nreturn this.getEventRowsHelper_(event);},addArgsToRows_(rows,args){let n=0;for(const argName in args){n+=1;}\nif(n>0){const subRows=[];for(const argName in args){n+=1;}\nif(n>0){const subRows=[];for(const argName in args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=args[argName];subRows.push({name:argName,value:argView});}\nrows.push({name:'Args',value:'',isExpanded:true,subRows});}}},addContextsToRows_(rows,contexts){if(contexts.length){const subRows=contexts.map(function(context){const contextView=document.createElement('tr-ui-a-generic-object-view');contextView.object=context;return{name:'Context',value:contextView};});rows.push({name:'Contexts',value:'',isExpanded:true,subRows});}},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}\nconst event=tr.b.getOnlyElement(this.currentSelection_);const rows=this.getEventRows_(event);if(event.argsStripped){rows.push({name:'Args',value:'Stripped'});}else{this.addArgsToRows_(rows,event.args);}\nthis.addContextsToRows_(rows,event.contexts);const customizeRowsEvent=new tr.b.Event('customize-rows');customizeRowsEvent.rows=rows;this.dispatchEvent(customizeRowsEvent);this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-single-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}\nthis.$.content.setSelectionWithoutErrorChecks(selection);this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},getEventRows_(event){const rows=this.__proto__.__proto__.getEventRows_(event);rows.splice(0,0,{name:'ID',value:event.id});return rows;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-async-slice-sub-view',tr.model.AsyncSlice,{multi:false,title:'Async Slice',});'use strict';Polymer({is:'tr-ui-a-single-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const cpuSlice=tr.b.getOnlyElement(selection);if(!(cpuSlice instanceof tr.model.CpuSlice)){throw new Error('Only supports thread time slices');}\nthis.currentSelection_=selection;const thread=cpuSlice.threadThatWasRunning;const root=Polymer.dom(this.root);if(thread){Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;}else{root.querySelector('#process-name').parentElement.style.display='none';Polymer.dom(root.querySelector('#thread-name')).textContent=cpuSlice.title;}\nroot.querySelector('#start').setValueAndUnit(cpuSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(cpuSlice.duration,tr.b.Unit.byName.timeDurationInMs);const runningThreadEl=root.querySelector('#running-thread');const timeSlice=cpuSlice.getAssociatedTimeslice();if(!timeSlice){runningThreadEl.parentElement.style.display='none';}else{const threadLink=document.createElement('tr-ui-a-analysis-link');threadLink.selection=new tr.model.EventSet(timeSlice);Polymer.dom(threadLink).textContent='Click to select';runningThreadEl.parentElement.style.display='';Polymer.dom(runningThreadEl).textContent='';Polymer.dom(runningThreadEl).appendChild(threadLink);}\nroot.querySelector('#args').object=cpuSlice.args;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-cpu-slice-sub-view',tr.model.CpuSlice,{multi:false,title:'CPU Slice',});'use strict';function createAnalysisLinkTo(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.userFriendlyName);return linkEl;}\nPolymer({is:'tr-ui-a-single-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],listeners:{'singleEventSubView.customize-rows':'onCustomizeRows_'},set selection(selection){this.currentSelection_=selection;this.$.singleEventSubView.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},onCustomizeRows_(e){const event=tr.b.getOnlyElement(this.currentSelection_);const rows=e.rows;rows.unshift({name:'ID',value:event.id});rows.push({name:'From',value:createAnalysisLinkTo(event.startSlice)});rows.push({name:'To',value:createAnalysisLinkTo(event.endSlice)});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-flow-event-sub-view',tr.model.FlowEvent,{multi:false,title:'Flow Event',});'use strict';Polymer({is:'tr-ui-a-single-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.$.asv.selection=tr.b.getOnlyElement(selection).associatedAlerts;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-frame-sub-view',tr.model.Frame,{multi:false,title:'Frame',});'use strict';Polymer({is:'tr-ui-a-single-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-single-event-sub-view');realView.setSelectionWithoutErrorChecks(selection);Polymer.dom(this.$.content).appendChild(realView);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-instant-event-sub-view',tr.model.InstantEvent,{multi:false,title:'Instant Event',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-instant-event-sub-view',tr.model.InstantEvent,{multi:true,title:'Instant Events',});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectInstanceView=tr.ui.b.define('object-instance-view');ObjectInstanceView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectInstance_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectInstance=obj;},get modelEvent(){return this.objectInstance;},get objectInstance(){return this.objectInstance_;},set objectInstance(i){this.objectInstance_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectInstanceView;options.defaultMetadata={showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectInstanceView,options);return{ObjectInstanceView,};});'use strict';Polymer({is:'tr-ui-a-single-object-instance-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.$.content.children.length===0){return false;}\nif(this.$.content.children[0]instanceof\ntr.ui.analysis.ObjectInstanceView){return this.$.content.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const instance=tr.b.getOnlyElement(selection);if(!(instance instanceof tr.model.ObjectInstance)){throw new Error('Only supports object instances');}\nPolymer.dom(this.$.content).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectInstanceView.getTypeInfo(instance.category,instance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this.$.content).appendChild(customView);customView.modelEvent=instance;}else{this.appendGenericAnalysis_(instance);}},appendGenericAnalysis_(instance){let html='';html+='<div class=\"title\">'+\ninstance.typeName+' '+\ninstance.id+'</div>\\n';html+='<table>';html+='<tr>';html+='<tr><td>creationTs:</td><td>'+\ninstance.creationTs+'</td></tr>\\n';if(instance.deletionTs!==Number.MAX_VALUE){html+='<tr><td>deletionTs:</td><td>'+\ninstance.deletionTs+'</td></tr>\\n';}else{html+='<tr><td>deletionTs:</td><td>not deleted</td></tr>\\n';}\nhtml+='<tr><td>snapshots:</td><td id=\"snapshots\"></td></tr>\\n';html+='</table>';Polymer.dom(this.$.content).innerHTML=html;const snapshotsEl=Polymer.dom(this.$.content).querySelector('#snapshots');instance.snapshots.forEach(function(snapshot){const snapshotLink=document.createElement('tr-ui-a-analysis-link');snapshotLink.selection=new tr.model.EventSet(snapshot);Polymer.dom(snapshotsEl).appendChild(snapshotLink);});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-instance-sub-view',tr.model.ObjectInstance,{multi:false,title:'Object Instance',});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectSnapshotView=tr.ui.b.define('object-snapshot-view');ObjectSnapshotView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectSnapshot_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectSnapshot=obj;},get modelEvent(){return this.objectSnapshot;},get objectSnapshot(){return this.objectSnapshot_;},set objectSnapshot(i){this.objectSnapshot_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectSnapshotView;options.defaultMetadata={showInstances:true,showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectSnapshotView,options);return{ObjectSnapshotView,};});'use strict';Polymer({is:'tr-ui-a-single-object-snapshot-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.children.length===0){return false;}\nif(this.children[0]instanceof tr.ui.analysis.ObjectSnapshotView){return this.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const snapshot=tr.b.getOnlyElement(selection);if(!(snapshot instanceof tr.model.ObjectSnapshot)){throw new Error('Only supports object instances');}\nPolymer.dom(this).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectSnapshotView.getTypeInfo(snapshot.objectInstance.category,snapshot.objectInstance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this).appendChild(customView);customView.modelEvent=snapshot;}else{this.appendGenericAnalysis_(snapshot);}},appendGenericAnalysis_(snapshot){const instance=snapshot.objectInstance;Polymer.dom(this).textContent='';const titleEl=document.createElement('div');Polymer.dom(titleEl).classList.add('title');Polymer.dom(titleEl).appendChild(document.createTextNode('Snapshot of '));Polymer.dom(this).appendChild(titleEl);const instanceLinkEl=document.createElement('tr-ui-a-analysis-link');instanceLinkEl.selection=new tr.model.EventSet(instance);Polymer.dom(titleEl).appendChild(instanceLinkEl);Polymer.dom(titleEl).appendChild(document.createTextNode(' @ '));Polymer.dom(titleEl).appendChild(tr.v.ui.createScalarSpan(snapshot.ts,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument,inline:true,}));const tableEl=document.createElement('table');Polymer.dom(this).appendChild(tableEl);const rowEl=document.createElement('tr');Polymer.dom(tableEl).appendChild(rowEl);const labelEl=document.createElement('td');Polymer.dom(labelEl).textContent='args:';Polymer.dom(rowEl).appendChild(labelEl);const argsEl=document.createElement('td');argsEl.id='args';Polymer.dom(rowEl).appendChild(argsEl);const objectViewEl=document.createElement('tr-ui-a-generic-object-view');objectViewEl.object=snapshot.args;Polymer.dom(argsEl).appendChild(objectViewEl);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-snapshot-sub-view',tr.model.ObjectSnapshot,{multi:false,title:'Object Snapshot',});'use strict';Polymer({is:'tr-ui-a-power-sample-table',ready(){this.$.table.tableColumns=[{title:'Time',width:'100px',value(row){return tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs});}},{title:'Power',width:'100%',value(row){return tr.v.ui.createScalarSpan(row.powerInW,{unit:tr.b.Unit.byName.powerInWatts});}}];this.sample=undefined;},get sample(){return this.sample_;},set sample(sample){this.sample_=sample;this.updateContents_();},updateContents_(){if(this.sample===undefined){this.$.table.tableRows=[];}else{this.$.table.tableRows=[this.sample];}\nthis.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-single-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){if(this.selection.length!==1){throw new Error('Cannot pass multiple samples to sample table.');}\nthis.$.samplesTable.sample=tr.b.getOnlyElement(this.selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-power-sample-sub-view',tr.model.PowerSample,{multi:false,title:'Power Sample',});'use strict';Polymer({is:'tr-ui-a-single-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.tableColumns=[{title:'',value:row=>row.title,width:'100px'},{title:'',value:row=>row.value,width:'100%'}];this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;if(this.currentSelection_===undefined){this.$.content.tableRows=[];return;}\nconst sample=tr.b.getOnlyElement(this.currentSelection_);const table=this.$.content;const rows=[];rows.push({title:'Title',value:sample.title});rows.push({title:'Sample time',value:tr.v.ui.createScalarSpan(sample.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument})});const callStackTableEl=document.createElement('tr-ui-b-table');callStackTableEl.tableRows=sample.getNodesAsArray().reverse();callStackTableEl.tableColumns=[{title:'function name',value:row=>row.functionName||'(anonymous function)'},{title:'location',value:row=>row.url}];callStackTableEl.rebuild();rows.push({title:'Call stack',value:callStackTableEl});table.tableRows=rows;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-sample-sub-view',tr.model.Sample,{multi:false,title:'Sample',});'use strict';Polymer({is:'tr-ui-a-single-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-slice-sub-view',tr.model.ThreadSlice,{multi:false,title:'Slice',});'use strict';Polymer({is:'tr-ui-a-single-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const timeSlice=tr.b.getOnlyElement(selection);if(!(timeSlice instanceof tr.model.ThreadTimeSlice)){throw new Error('Only supports thread time slices');}\nthis.currentSelection_=selection;const thread=timeSlice.thread;const root=Polymer.dom(this.root);Polymer.dom(root.querySelector('#state')).textContent=timeSlice.title;const stateColor=tr.b.ColorScheme.colorsAsStrings[timeSlice.colorId];root.querySelector('#state').style.backgroundColor=stateColor;Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;root.querySelector('#start').setValueAndUnit(timeSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(timeSlice.duration,tr.b.Unit.byName.timeDurationInMs);const onCpuEl=root.querySelector('#on-cpu');Polymer.dom(onCpuEl).textContent='';const runningInsteadEl=root.querySelector('#running-instead');if(timeSlice.cpuOnWhichThreadWasRunning){Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(timeSlice.getAssociatedCpuSlice());Polymer.dom(cpuLink).textContent=timeSlice.cpuOnWhichThreadWasRunning.userFriendlyName;Polymer.dom(onCpuEl).appendChild(cpuLink);}else{Polymer.dom(onCpuEl.parentElement).removeChild(onCpuEl);const cpuSliceThatTookCpu=timeSlice.getCpuSliceThatTookCpu();if(cpuSliceThatTookCpu){const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(cpuSliceThatTookCpu);if(cpuSliceThatTookCpu.thread){Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.thread.userFriendlyName;}else{Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.title;}\nPolymer.dom(runningInsteadEl).appendChild(cpuLink);}else{Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);}}\nconst argsEl=root.querySelector('#args');if(Object.keys(timeSlice.args).length>0){const argsView=document.createElement('tr-ui-a-generic-object-view');argsView.object=timeSlice.args;argsEl.parentElement.style.display='';Polymer.dom(argsEl).textContent='';Polymer.dom(argsEl).appendChild(argsView);}else{argsEl.parentElement.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:false,title:'Thread Timeslice',});'use strict';Polymer({is:'tr-ui-a-single-user-expectation-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.$.realView.addEventListener('customize-rows',this.onCustomizeRows_.bind(this));this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;},onCustomizeRows_(event){const ue=tr.b.getOnlyElement(this.selection);if(ue.rawCpuMs){event.rows.push({name:'Total CPU',value:tr.v.ui.createScalarSpan(ue.totalCpuMs,{unit:tr.b.Unit.byName.timeDurationInMs})});}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:false,title:'User Expectation',});'use strict';(function(){const EventRegistry=tr.model.EventRegistry;function getTabStripLabel(numEvents){if(numEvents===0){return'Nothing selected. Tap stuff.';}else if(numEvents===1){return'1 item selected.';}\nreturn numEvents+' items selected.';}\nfunction createSubView(subViewTypeInfo,selection){let tagName;if(selection.length===1){tagName=subViewTypeInfo.singleTagName;}else{tagName=subViewTypeInfo.multiTagName;}\nif(tagName===undefined){throw new Error('No view registered for '+\nsubViewTypeInfo.eventConstructor.name);}\nconst subView=document.createElement(tagName);let title;if(selection.length===1){title=subViewTypeInfo.singleTitle;}else{title=subViewTypeInfo.multiTitle;}\ntitle+=' ('+selection.length+')';subView.tabLabel=title;subView.selection=selection;return subView;}\nPolymer({is:'tr-ui-a-analysis-view',ready(){this.brushingStateController_=undefined;this.lastSelection_=undefined;this.tabView_=document.createElement('tr-ui-b-tab-view');this.tabView_.addEventListener('selected-tab-change',this.onSelectedSubViewChanged_.bind(this));Polymer.dom(this).appendChild(this.tabView_);},set tallMode(value){Polymer.dom(this).classList.toggle('tall-mode',value);},get tallMode(){return Polymer.dom(this).classList.contains('tall-mode');},get tabView(){return this.tabView_;},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_.bind(this));}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_.bind(this));}\nthis.onSelectionChanged_();},get selection(){return this.brushingStateController_.selection;},onSelectionChanged_(e){if(this.lastSelection_&&this.selection.equals(this.lastSelection_)){return;}\nthis.lastSelection_=this.selection;this.tallMode=false;this.tabView_.label=getTabStripLabel(this.selection.length);const eventsByBaseTypeName=this.selection.getEventsOrganizedByBaseType(true);const ASV=tr.ui.analysis.AnalysisSubView;const eventsByTagName=ASV.getEventsOrganizedByTypeInfo(this.selection);const newSubViews=[];eventsByTagName.forEach(function(events,typeInfo){newSubViews.push(createSubView(typeInfo,events));});this.tabView_.resetSubViews(newSubViews);},onSelectedSubViewChanged_(){const selectedSubView=this.tabView_.selectedSubView;if(!selectedSubView){this.tallMode=false;this.maybeChangeRelatedEvents_(undefined);return;}\nthis.tallMode=selectedSubView.requiresTallView;this.maybeChangeRelatedEvents_(selectedSubView.relatedEventsToHighlight);},maybeChangeRelatedEvents_(events){if(this.brushingStateController){this.brushingStateController.changeAnalysisViewRelatedEvents(events);}}});})();'use strict';tr.exportTo('tr.ui.b',function(){Polymer({is:'tr-ui-b-dropdown',properties:{label:{type:String,value:'',},},open(){if(this.isOpen)return;Polymer.dom(this.$.button).classList.add('open');const buttonRect=this.$.button.getBoundingClientRect();this.$.dialog.style.top=buttonRect.bottom-1+'px';this.$.dialog.style.left=buttonRect.left+'px';this.$.dialog.showModal();const dialogRect=this.$.dialog.getBoundingClientRect();if(dialogRect.right>window.innerWidth){this.$.dialog.style.left=Math.max(0,buttonRect.right-\ndialogRect.width)+'px';}},onDialogTap_(event){if(event.detail.sourceEvent.srcElement!==unwrap(this.$.dialog))return;const dialogRect=this.$.dialog.getBoundingClientRect();let inside=true;inside&=event.detail.x>=dialogRect.left;inside&=event.detail.x<dialogRect.right;inside&=event.detail.y>=dialogRect.top;inside&=event.detail.y<dialogRect.bottom;if(inside)return;event.preventDefault();this.close();},close(){if(!this.isOpen)return;this.$.dialog.close();Polymer.dom(this.$.button).classList.remove('open');this.$.button.focus();},get isOpen(){return this.$.button.classList.contains('open');}});return{};});'use strict';tr.exportTo('tr.ui.b',function(){const FaviconsByHue={blue:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAlrklEQVR4Ae2dCXwdVb3H5265yc3SpEk3ukEXCqVUBLT4Wm19oFKtaN0fKijy9CMguPBarIJsIiA8qsjTh7SllAoFeVBaEARkLV1ooXtL0yRdkqZp9u3uy/v/5uY/OZm75y659+acdnLOnP385zv/+58zZ2YMinTplIAhzsoDceaT2RKUQLwHIMFqh0V2ll0kn4XA6byv9/Vw834kX19e7keRQCzhRyk6bJJYRvD1YTXuhRdeqDj77LPPtNls400mU7HRaCzFFggEVJ/iSqhsicFgKIXUKL6bvB6fz9fj9/u7Kb4bPjaK67Xb7Q0HDhw49IUvfKEd2XUb7WpxHIYvXRgJ8AELkzRso1gmKrwkBfjG7373u5Zly5ZNKS8vn2G1Ws80m83YphPI0wnQUemQFp0IzQR9tdfrxXbI5XId6ujo+PCuu+6qXbNmjYfa9NMmngDoBmt+hIe944M53AUhwqwCvXTp0qJrr732opKSkk8XFhZ+imC+gIAryAZB0QnlJuB3OJ3Ot3p6el5/6KGHttxzzz0O6pse+GEP+3AGnKE2EhgG0tAFt99++4WkoT9tsVgW0DaH4guzAeg4+uD0eDxbaXuDNPzrt9xyy3bS8G4qB8BF6OOoKr+yDDfAB0B91VVXFf72t7+9lLT05QUFBZfQoYWtnA+ux+12v0ra/W+/+tWvXlq5cqWTBjUsYR8OgDPU8KGtjR9++OHHx4wZ8+2ioqKv0X4lbfnsWh0Ox9+bmprWzpgxYxsNFBpd1Op5bcbkM+AMtgr11q1bTz/zzDP/gy4Qv02zGtPzmehIY6MZmmq6UF176NChJ+bMmXOkD3QR9khFczY+HwEXwTbV1NTMI229FCYIXSTm43gTho8uUgMwYUir3zN16tR3qAIfbXkJej4dcIxF1dbkm44ePfqZqqqqpTT7MZf2pYsgAZqN2dTS0nLP5MmTX6EsDDrDHqFU7kTnA+Aa2BMmTDBv2bLliyNHjlxCZsgFuXMYhr6nZL7saGtru/eiiy7aUF9f76UeAfKcBz2XAUffVbgJbAuB/Y3KysoldONl5tDjkrs9oBtL+1tbWwH6UwS6/mZSzg0sVwHXTJG9e/deOGXKlOWksS/MOelncYdJo2+vra396axZs7ZTN0XTJYt7Hdq1XANc1dg0DNOqVatGLl68+DZa/3E1XTwCeOn6JLCly6ncU9+mNLnBZRLOYPAHHI5H2l5/8TdHbl3SRjUx6DkztZgrgKOfDLf5xIkT36moqLiLzJG0rAFJAomsKDp1W51S74IZnSIX8DcrXV3LlK/Oe5xqZPsckGc96LkAOPpowrZ79+5ZNK31BzkzQtKI4qxvV0dJTSLJ592kHKu7QfnPxXupFmhzbFkNeTb/tGsae/bs2Va6wr/lrLPO2izhTgLQZIuaaMp1yvTNyvNbb1HomFB1ZtrAUNYqymztGMNt2rhx44T58+evohs1n0r2+AyX8mnT4KIAvZ63lA82f1/55TX1FJ21tnk2As4zJObq6urP0BTgCmlri2TFDmcEcHQDtnlz4w+Uyz+Hm0Rsm2PuPGtcNpkomtZesGBBYXNz8210d+05CXfWsBLaEQNd5I+e8JyyYettCh0zyoBrpawyWbJFg2twv/jiixPnzZu3mhZFzQ2VqIyJRwIZ0+BiZzyeTcqebVcqS350nKKzxmTJBsDRB3WWZN++fXPpps060tpVouxkODEJDAng6GIg0KI0Hv+mcsXnN9FeVsyyDLWJwnCbadXfomnTpm2UcCcGc1blNhiqlNMmblT+9soi6hdmWKC4hlSJDiXgaBsCsNDKvysnTpz4JIWLaJMupyVgKFLGjHtSefrNK2kYFtpwjIeMs6FqWIOb7kr+Yty4cX+m2+0446XLBwkESHuPrPqz8uymX9BwhhTyoQBchZseQiigdcj30grAO+SDCPlAtW4MeLikdMQdyvqt9yp0rCl1SDR5pgFX4V64cGERvdhmRWlp6XU6scjdfJNAcfF1ysqNK5Q5C2F+ZhzyTF4AqHCPGjXKSjdwHqUHfr+ab8cyW8YzZLMo0QTgcj2jfO/S7ynNzS7KxtOI0UqkJC1TGlyFm3pccPDgwfsk3Ck5drlVidX6VWXFxvvAAG0Z0+SZAJzhtjQ2Ni6ld5D8KLeOjOxtyiRgK/6R8uy7S6m+jF14phtwmEBow3L8+PGr6FnJm1MmLFlRbkqgtOxm5am3rgITtIGNtJrJ6QQcHcdPkYUuKL9MsybLKSydlICijKxcrjz+0pdJFKzJ0wZ5ugBnuM27du2aT7ffV9JUIGCXTkqAJEAsjJ2wQlm1fj7tpPWOZzoAB9yo1/zSSy/NoLdJraMwFsdLJyUgSqBQGX/GOuX+FTMoEpCDmZRr8nQBbqIHgovnzp27mtaWlImjkmEpAU0CYGPmR1crF19cTHH4hU854KmuECcMOmo9derUAyNGjLiawtJlWAJZOQ8eTQb27keUyz7xM8qS8jnyVGpwNk0s+/fv/4qEO9oRlWkDJGArvVpZ89JXKC7lMyupApzhNm/YsGH6GWec8eCAAcgdKYFYEhhz2oPK3X+ZTtlSao+nEnDzxWRL0eNmj0q7O9bRlOkhEoA9ft6cR5WPq/Y4IE+J+ZyKSjS7m56jvK+srEzeqQw5epmNyDkbXBRPT8//Kl++6EaKSok9nqwG10yTHTt2fJpWB0q4xYMlw4lLoJhu5z/y3KepYEpMlWQBV7U3mSXFNN99H71YPfEByRJSAqIEwND4yfcpFyzgqcOkGE2mMGtvy2OPPXY9vZjnTLGfMiwlMGgJWCxnKktv/QmVT3pWZbCAM9zmxx9//IzRo0fj0STppARSJ4HykTcqN//3GVRhUqZKMoCrC6no6Zy7yTSxpW5ksiYpAZKA0WhTPj73dxRKakHWYABn7W3Zs2cPvjH5eXlApATSIoGi4i8oK56/tA9ysAr2EnKDARxlzJdddlkJ3dC5N6HWZGYpgUQlMH7SvbRWpYSKsamSUA2JAs7a2/ynP/3pOvrc9eSEWpOZpQQSlYDZPFn54a/xcDoDnpAWTxRw5DfRJ7DL6HUPP060rzK/lMCgJFA+8sfKZd/CqlRc9yXEbCKZWXtbli1b9gN6EX3loDorC0kJJCoBk6lS+ebVP6BiCU8bJgI48ppxU2fs2LHXJNpHmV9KICkJVFZdo3zsY7j5w6ZKXNXFCzhrb/PDDz/8HbK9x8ZVu8wkJZAqCZjNY5Wf3vkdqo4Bj8sWjxdw5DPRt3KKTjvtNNxhkk5KIPMSqBz1E2Xq7ITekBUP4Ky9LevWrfsGae9JmR+ZbFFKgCRgLpik3HL3NygUty0eD+Cq9h4/fnwBbTdIQUsJDKkERo+9QSkr47ubMfmNlQHaG5v56aef/ndaUDVtSAcnG5cSMFumKXc/fDGYpI35jCiXeADH3KOZ7lp+Sy6HjShHmZApCWA57dgJ3wKTtIFNQB7RxQIc6abLL7+cniEesTBiLTJBSiCTEiguWah8/isjqEkAHpXhaIk4M5BuXrp06ZfoOUtcvUonJTD0EjCaipSvff9L1JGYU4bRAEeaCjh9P+fr0jwZ+uMqe9AnAZgpo0Z/nfYY8IgcR0qA9sZmeuCBBybZbLZ/66taelIC2SEBKzF5zTJMWbMdDl5DXDTAVe29aNGib5D2jpQvpEIZISWQEQkYicm5C0QtnjDg6uwJPY72tYx0WDYiJZCoBMorGXDW4iE1hNPMOBMQb1qzZs0MmvueHlJKRmS1BCZYYZoOA2exTFd+dT/eTsuzKSFaPJwkNMDPO++8+fLiMvdA+Z8JJcqPN+9RGnocoZ0PBELjFF2cbjdYIEykvq4wWehd4APb05dBari4gaWCe/p8AT+uFOdT4j7aoJTB7oAGowFurqqqmicBV5QPmgLKX3b7lVbHANmRLLPVVSjnGT6hzFRa44dHHEqIHhQThXC8+YQiqQ66K9rnvakoD1O9DPiAJvSAo8vYjMXFxWZ6U9VFA3IP052fv+5VGntzBW4+SCYl4KtQ/L3tpCBJ0+WpC/hKLgKrvb29DDj41Q4WIvUOcaZHH310lslkGqlPHI77uQd38CgZTBbSVBVKXk+CGYwjS758/ywwS1sIz/oI1uCmmTNnflKaJ7l/OmuQG3migQ9xnvg0W2gaN/2TfYDzoLQDFw5wVYOT/T1XAq7JKacDKuS2csVg1B/unB6W2nkwaiiumEs7rMEBueZEG5zpN9Gt+QKyv+douWQg5yXAkPvtHYO78MxiCZisJXNsVRML7C3HndRN5li1w/WnNPaNDz744Ll0ZpRm8Zhk1wYhAYacjPJBlM7eIgHFUFryxZvPpR6q/Io9DavBJ0yYcJY0T0Qx5U84CDnNrtjb82dQZHqZysefRQPaRltEDc4JRlr7PS1/Ri9HopeAwWRWjLYKQiF/NLnBWgpmocGZY3XYoomCBOybaPXgNKnBVfnk7R8V8qLyvIAcrBoLiqaCXdoYcvXYMeB8KmPfSIBPUVPln7yWQD/kjEEOD7fABsBVfvtGoTIdYoOPHDnSXFhYODmHhyq7noAEgpCPUPyOTiql3QBMoIbsyGo0F04uInYdbW3RTZRbb711AnXZmh3dlr3IhAQYcpooz0RzaWmDTk1r0YLrwS4GwRaJuoMGmXrjOeecI5fHQiLDzKmQF9ILXFXIGYfc8q2jZ4JdBlyFnE9ZHolx1KhR8gJzmMHNw9Ugz8U7nrijWToyZCZFtMEBu7GoqGgiD1j6w08CKuTWUsXv6s65O56GApVdlWM+cnoNbqB3D+JzEdINYwkw5DlnkxvNYJetEdVEETU4Ioy0RLZEzoEPY7r7hh6EvIQ0eQ/FZP/sCpilPgNwKG0VbgyFdzTqCXC8ZFw6KQEAoxgLS3NoPbkR7GosIyxqcBxSgwQcYpCOJWDAOnIrKUbS5AH9M5GcKUt8OiEZcK1HbIMjQiVfAq7JRgb6JADIDQR5tpuuAaMGuGaisAbXIiTgkutwEujX5L2UnJ02uSEIOHdfZVpqcBaH9GNKIKjJQ6yAmOUylYHsa+6cprBZg3MfpA3OkpB+WAkENXmxEnDbs2+e3KABrvU9RINTih56LbMMSAlAAqomL7BRQFOU2SGYgMouOqV1jGHWIrxer50+8iofV8uOQ5a1vVA1OUEecOPtWdlhkxsUH/2saE5lmufBtVifz4erCOmkBGJKIKjJ8V0ETT/GLJPODAG/X8+uOg+O0087BaHB09kJWXd+SSCoyYuUgIceaB/qeXL/AA2uci3a4JB8QGrw/AIwE6NRNbmlcMht8oBftT40ZY2xsw2OsJogAYcopEtUAqomt5Am9w6dJg8ENPNagzysBs/2W7KJCl/mz4wE8OYsg3loNLnKbNAG1+DGqFmDI1LdpA2eGRjytRX19XAEecDr6kMqcyM1BNTrR41ltCxqcAYc6yOlkxIYtASCmhyP9WZ2doVmUXhtL1hWHWtw3lccDkcb1H22L6zROiwDWSmBoCa39mnyDHSRmPV7nG36lliDs1r3t7e31+kzyX0pgcFIQNPkGbrj6be3gV287Z95Vk0U7MCpkdXV1bXyIjMoEPk3eQmokJsKglOIAD1tm6J4Wo7UMsd9PQ+wBse+CvgzzzwjAe+TjvRSIwGGnB4qS02F4WohE8W58zk94CGzKP6XX3652+VyNdN6lFHh6pFxUgKDkQAgDygWxeDzDKZ47DJeV3PvvtfpVQChJgoKs80C+8Xf09NzRJopEIt0qZQAIFfou0GpXoUIVv0uxxHqq8ov+cxzyDShmsFut9elcmCyLikBloAKuZEm71Jsi/vdKrMi4GqTbIMz8cjgw0yK1OB8SKSfagkMgDwVlZMGDzg6oJR9tIFh5lmzwdEMR/pPnjxZiwjppATSJQHVJg/QRaffm3wT9Gvg624GswPgRsXhNLh//fr1u2nRFYCXTkogbRJQbybCXEl2diXgCzh2bthNFQHwAZAz4BgEgEaijz4C29zZ2VkjzRSIRbp0SiAIOT7MgCnExDeyThS/s7uma+vaZqpANFHUbusBZ8i9ra2tWyXgqozknzRLQIMcF56JOiLc19O6lYrB1hmgvVGVCDj2VQ1Ovq+mpmaLBBwikS4TElAhx7vJE55dIWhb6rZQH6G9WYNrXRYBh/ZmDe5buXLlVj85LacMSAmkWQIa5Im0Q4x2bXkUGpzhZo7VWsIBrp4JGzZsaCc7/KDU4olIW+ZNVgL9kMe2x4P2d+dB+86X8NFP1uARAUffWIPDnvHSdOE2CTjEIl0mJRCEPA57nAj3dzXj468qr+SzDa51V9TgiGTAcTZ4yQ7fLAHXZCUDGZSABnlUm5wgba3dDFZpE00Uraf6Bx5YveNM8C5fvnzbJZdc4iwuLqYH7Yavq+ytURq70rRIKIvEGlmZAYswDjZCRBchLUJ0ULeGqYzaQL8AfEj/PA5nz8u/Zw3O2ntAC+EAR0bVnnn33Xe7Gxsb35gyZcqlxhR9mGj/oU7liWfrlPZOd5jRZGfUbK9bmUnPGIYIeEB3B8i1PyUKBHTo+vPFEYrcfpR6orYfR6NZmiUQ8Cs9XU1vbDiyEysI2f5myLVe6wFHAqSlanDyPTt37nz+9NNPTxngv/3DHqW5lV4tkGPO67ErPi+9pgw/mYAGfjyO8zJo+vL6dH2dmc6vb1/fP31/9Pn1+7HK69P15fXt9eUP+LxKR/OB5yk7flrFOfABNehtcCSKgHuvu+66t2n5bGtk7TGgvpg7uQg3BmW22BSTGa8pIwehx+s4L3wxzOXFOM4j+sjHecSwmEcMi3nEsJhHDIt5ENY75IXjMhxWI+P4E6u8Pp3bYV/fHsWDRb/f1Vq3b9XblBzxAhNFowEOte+hlYWO+vr6f6QKcDSaq06F3FQYdeUEow9fDGfLmMU+ieFI/RPziOFU5Y9UT/T4gOJ2tP/D7e7Bmz+hwcNeYKKOcIAjHiaKZqa8+uqr6+l9KYgf9g6QG/sgxwHXbxAQgyCG9fmGal/skxiO1B8xjxhOVf5I9USLV8j+7mjd/Rz1RzRPwGuIiwQ4zBScFaDas3Tp0r0dHR2HpRYPyo8hD+7Jv5mUABj0eeyHjx58Yh+1y4CDVTAb4qIBzpCjEjfNiW+Qd+775dcPeTRdI9NCf+OSlQl98M3RvAFM0sbmCVhNCHAcSah8TYuvXr16PT2MjAql65OAapPjXXzRnP4iCnk5Llw5ToMvhsPlzYU4cQxiOFLfxTxiuC+/3+/xNB9/cz3tito7rHmCIpE0ONJwRrAd7l61alXjkSNHXpBaHKLpd5hZMfELJ3FA9Buy8oESw/p8vC/mEcOcnmu+OAYxHGkcYh4xTPlx38DtaHnhZP3rjZQEDR5xehBF4eIFXDVT1q5d+whp8YhnS7DK4fdXhdyEd/FJl04J+ANef3PDpkeoDTZPkgIcfR2gxe+7776aY8eO/VNq8dDD2A95sjamLE8/eSTggRsuLj2Otn821D5fQ4lxaW8cpWgaHOnQ1pqZQmHXU0899VePxxPWoEeB4ewYchwadhzmw4V4jhPDnJ6oL9YhhuOtRywjhuMtr88n1iGGOZ8YJ4Y5PZKv+H2BthOb/0pl8F5mEfCoFkUswNEHVICLTdVMufPOOw+QFn9TanGIJtTBHjeSucIHCjkQZsfhSOmcL14/2fqSLa/vZ6z6YqXr68M+1p24nK1vHq3++wHaZfMETEaFG2XjARzaWgOcwq4XX3zxYdLiKC9dGAkw5Pqf2czso0OMkRhGXG5u9N5vpb3p/YdpAKy9AR+YjGlJxAs4a3GcPa4lS5bsOnHixGapxUkaEVwQcnqrasYdw80wowMcl/HOJN0gtLfb1bH5yMHHd1FlDDhr75QAjk6yFsdVKyB3bty48UE5owLRRHYa5JgSY8dhniZDPMeJYU5P1BfrEMOR6hHzIBzLcV8j1aePR31cRgxzPjFODPel+xWvv6N5x4OUhCWoYA8MxqW9KV9cJgryAXBocQbcdeONN+6kd4k/J9eoQDyRnQq5se+Fk3yg2UcxDvcdULUmjotcbeQULhtvffr8XC6Sj5a5TORe9KdwXq5PXz5KOn0WUHH2nnyudt/qnVSMtXfMqcH+xuMHHGVYi6sXm2jwpptuWk4PJrfLNSqiSEPDGuShSTImggTUNSdee/uxA2uXUxaGO27bm6uNxwbnvKzF8fOABp2vvfZa89atW/8oLzhZRJF9zVyJnEWmCBKgb14qPZ01f2xv3o03VsE8AXNx295cVSKAo4yoxVXIFy9e/Aw91rZLXnCySCP7Jpo+NNLnPMQvHXAYfjz/UDuXEcNcVowTw5yeal9sQwxHakfMI4bF/HhiyuPq2LV/293PUB6GO2HtjfoHA7g4o4LGnWvWrLnL6XT6pKkCkUZ3gNxAL4HnA4rcCMfrOG+k8rHS420n3nyJthcrPxgK+D2+5oa37qI+qHyRj4vLhLU3xpAo4CjDgOOMUrX4HXfcse/AgQPr6I20SJcuhgQYcvVijS++pN938RpQHD0n1h378Cms99Zrb7CXkBsM4GiAIVenDGnfccMNNzzU0tLSKE2V+OSvmiuYXZFOkwDmvD2e7saa/X99iCLxOBoAF7W3ljfewGABZ1ucpw2d7733XusTTzxxE33+xCNNlfjED3vcqELON2WGr0+WCS03cXtaTmy6qbutppUkyHAnNO+tl/xgAUc9DLmmxWnacAeB/hDdANK3I/cjSCAIebi3d0QokKfRZHcrvZ01D9XtW72DhqjX3mBtUC5ZwGGqaFqcws5LL7109dGjR9+WN4DiPx7DHXLc0HE5Wt7es/m21WCob4PiTOimTjiJJwM46gPg2PiCE2ee/Wc/+9lvyB5vkvY4SSNO12+uxFkgT7LB7vZ6uptq9678DQ3JThsYggkAppgvCg7OJQs4WkUnMH2CMw6dc9ANoJNPPvnkL8ke90p7nCQSpzPS9CFscryHbzhsEEvA7/a2NLzzy46WXSdpV+WH/KQuLFEvu1QAzrY4mypqJ+lVE9u3bdv2Z9jjEnIWd2wfkBsM+W+T9813093K6j/X7l+9nSQjwp3UhaUo5VQAjvoY8gGmysKFC1fSgqxX3G6ckNLFKwEVcu3rY/k5swK729Hb9Mqed29fSXLRmyawCAZ9YSnKOVWAo06GHDTjQgGdti9atOjXdNH5noScpJGAU00VI74+ln+OXv2gOJ0t7x3cduevaXQqJ+TztGDK4IbkUg24aI+rkNNXIrquuOKKG+kBiYNyURZEHr/LR8j99OFXt6v94KH377/R4WjtImkAcBFuMJQS7Q1Jp0NFoHNiBw0Eube2tnbT/PnzFzz3UtMIA76mJV1cEjAYcIhInLgTkuMOZonH3XW8dvdff9zZur+JhtNLGwMO8zal2hviSgfgqBduAOhki7u6u7u3NHWO+yxNidkk5EEhxfM3CHmfSHN0zQq98Fjxunta6w+v+9GphneO0Wj0cKdUc7Nc0wW4qG608AcffNBrMlvfLx0x5XMGo7lAQs6HIbbfLytNnLELZUkOrO2mF2b2nDz64rX1hzccpG7p4YbmBuApd+kCHB3lI8G+2vnOlr0dBYVV+4tKxl1MswWW/gOX8rHlXYUsq+C8ChaeZv8/vOqYvo5hb2l48+d1+9fiNrwId8rmuyMd7HQCLrYJyDXQ20/tOGUxF+6wlU1aYDQWFPGBEwvIcHgJ9MtKE2f4jFkQq9rcnu72xrp//OTIgccx181wY8477XBDBJkGXAO9o2VPm+JzbioZMXWewVRQ2n/g0C3poklgoKyyc57cTxeUXnfHCVrXfU1D7fr9NJ4e2gA4w530OpNoMuK0TAGO9ljlaJB3tVd3u1yNb5ZVzPy40Wyt7L+Y4u5JP5IE+iFnsUbKmfl4zHN7nG3VdXtWXNvU8GYd9QBgZxxujDyTgKM9OAZc9e1dDY6ejoOvl1fNnm0yFY1TaApR/QhoMK/8G0UCGuQGEmUWKHK83jhA89z0gvoPDu1cfn1b864T1H29WZIRzc1iyzTgA+CmTqj7Lkeru6156xsVoy+cQk+fn44DJyHnQxTd1yBXRRk9bzpTsSrQ7/MoLvvJN/a/d9uSno5jLdQew40bOVghmFG4Md5MA4424UJA97rtvub6f71VPupcq9lSNttgNBLj8oZQUFzR/w6UU+ZVOeD2eV2B3u7ax/a9e/PvXI7OTuqxCDcuKDMON6Q2VICjbYacJ/jpHYte/8mjr35gtVUdLCwaPYfmyunDlFKbQ1ixXBByiDRzTl0RGPBiPXd7S8Pbyw68d+/TdAz5YlK8QzkkcEMSQwk42mfI4Wugt53c3uB0nHyttHz6THo4dywOnjRZIK7ojiHPxOw4lg4EYJI4mnfW7V95ff3h9bupd9DarLlhkohTgZk9+/pElS2AA27eVOjt3fW9p4699kr5qFkmc0HZR6TJ0nfEYngDzZUYmQeZrN6ZhEnSeXj1nk2/vr2nsw5vn4LGZrj1i6cG2VLyxYYacIyAz2zW4hro9HPnO3nstZ2FhZX7Cm1j5tCDAEWkyqU2j3HctV+7FJvjWE+CWRKvt6utpeGtX+7f/vv/6zNJGG7McfPFZNpuv8cY/oDkbAAcHRIhF0FXw21N2084HfWv2UonjaHPhEwJaikJ+oAjqdvRINfFD2ZXfSILF5I+Fz2kUP/akT0rlhyv2bCX6mKNDcD1N3CgqIbc4RzPJof+YOoEJx7eioNPl+FDlHSxqdgQnj77h5+oGPeJXxQUlE3Cg7qZ+EmmdnPWYYYjGRec/nMrbnfnsbaT2+6v2f3wZqoPJghDzVOAvNwVDbLCSqbplJTNNsAxKP5hBeR4OBGfSQDkDHpRYWFFyYzzf/Gd4oqpV5JGt+IZxlRqLGorr1zwmdjEmOMZEp/X4erpqFld/f4Djzud7ZghgabGBrDZ1sYsCa/lTqwhKphOly0min6MLCT42KAV2Kbzeb1Ob9Pxf+32utteLSqZOJ4++jRJmi16Efbv95/8rDsi++pzFX3mCM1kvXPkw7X/Vbd31eskc3H6D9pbhBvHJ7mfiv7upjSUjRpcHCD6xyYLa3PW6DBbVM0+4/yffKq88iPXmq0jJuOdf/J2vyjC/nBQk/fviyHRzva6u462N+96qHrng29RHtbUrLUx9cc3bljpsEISq8yKcLYDzkIC5Aw6bHNAzva5CrnZbC6c/pHrLykbefYVZmv5NAk6iy66PwBsV8fhrrYDj1Xv+uOr9GYyBpt9ntcWbe2s1NriiHMFcPSZtTlAhzZn0AE4ww7fOuP86z45ovLcKyzWkecEL0RN0kYnwYguaGP78MJLetl8277O1j2Pffj+n96mPAAZG8BmHxobYPMdSYCdtVqb+qa5XAKcO40+49qBQYc2Z42uAk77qj919tUfqxh1wZXWosrz6cEKslxQbPhOLwZNFKz4I7D9broL2fp+e/OO1TW7H3mPBMNgi75ojgBqvpCkYG64XAQckkW/sYlmCzQ6Ty2KoBeccc53Z5eP/uiXrIWjFpjNRTaD+no0FM1/2DWo6cIRb3D1eh12l7P5jY5TH6yv27cGt9cBsQg1wtDWvIl2dk5obeq75nIVcB4AQ86gs+nCoLNmV7V8YcnY4ikzvr3ANuKMz1mLqi4k0E3q+7nVu6OoIn+cOv9NUyJ4+ACfBKG3t263d9a9XPvh2jecPSdxg4a1M4BmyBlqnvaD1s4ZcyTc0ct1wHlMetBhi7CNziYM+6qmrzrtwtHjJi/6rK1k/OfoiblpAJ1hz0XNzpoai6AANTafu/uwvafh5cajG//ZcmL7KZIJA8xwiz7SoK1ZY+c02DQO1eUL4OJ4grZH0E6HRmetDsAZetE3T5q6eHr5mPPmWQurzjcXls8i0K20VFcx4iWYeA9JFpoyA4CmJatYI0JQu7zOjr0uZ8v7HU073zlW82w1dR7aGPAC5nA+0llj8z2HnDNFaAxhXb4BzoMMUtlvo0Ojs1bXA69qdEqHby4sLLeOm7p4Vln5tAsshRXnFxSMOJseirbgAhXPjAZvmrDYgn7/jRRuPjV+EGLUxbzRBSKWqdJ7RnChGKBPftAt9AMeZ/v7XR2HdzTWPLvX6eyAycFQA2jeGHBOY23NGhuNcEMUzA/HRyo/RhM6ChF0aHbRVhe1O0POceybiovH28ZNW/SR4pJJ55oLiieZzLZJJottPFY2BoHHWnWAT1Wr0owkUn18JJYoHv9xUQiQNd/roJfnNPi89mNed++x3p5jexoPb9zV29uAu4qAlDUx+ww2fI6Dz0CL9nWkzlD23HZ6qef2aKL3HmNl84VBZ83OQEfyOR98lDWOnjB3dFnFOZOttjGTLIWlk81m20RaMlBpUEw2Ay2QoRPARg1SffQXF7F9vtpFaOEgxbSrhuhDAV57gBZ+BBSf3e9ztXq99uMeZ/dRl73pWFf7vqOn6jfBhmYoRe0rwhsuLOZlu5p9tTv5/Gc4Ac7HEWMWN4ZW9AE6Q83Q8z6fHKKvQq+r10DmjrmoZEKx1Ta6yGItK7aYy7AiUvF4u+weV1evy37K4eip7yWzAmBCi4obwwyfta7oI8xAM8TYF/NwWbHevNXWNPYQNxwBF4Uggo4wg8q+CL0IuAg350Ec18H1oi0xjH3RMXiI4zBrVwZcDyxDy1DzPudnn+tjX2x32IQhfOmCEmBZMJDwGXQxLMYBbqSxz5AjDg4+b7wPH9DBMXz6fUCKOEAs+gwv+0gTw9jHBsd+cG+Y/uUDMUyHH3XYLBsGNJIvQq3PgwbEesQGGUDRR1i/Mez6eHEf9WJfOp0EWPi6aLkbQQIsLwYZ2aLFiekRqhwAJkPK8KJMtLhIdcr4PgnwwZECSU4Cejnq91G7Po7BFVvWx+n3xbwyHIcE/h9VLWRYHWXC/QAAAABJRU5ErkJggg==',green:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAltklEQVR4Ae2dCXQcxZnHR3NoNDp8SD7kU7bxFXCchBhMYoLNmhCcOBBykGw2gYTkPV6AhGXD2sTZJQcJG3jsgw3hscuCsTEsOAQW1sbY+MAHxpYtHzI+5EOy5UMStnWPZkZzab9/j75WTWt6NKO5Z6r82lVdXV1d9e/ffPq6uro7zyBDIhXIi7DyngjLyWJRKhDpCYiy2pwoztrpxSwCb+d1bayFm9f1Yu3+cj2MAgOJH2bXnNnEGiHWppW8d999d/inPvWp6YWFheNMJlOR0WgswdLT06PElFdM+xbn5eWVQDXK76TI7vP57H6/v5PyOxFjobwuh8Nx4dixYye+9rWvtaK4ZqFVNY/TiGUIoQCfsBCbcjaLNVHgJRUQG3/4wx9ali1bNmXYsGEzrFbrdLPZjGUagTyNAB2ZCLXoh3CJoD/p9XqxnOju7j7R1tZ2/LHHHqtbtWqVh47pp0X8AaAZbPmRzvnAJzPXhRBhVoBeunSp7b777ruuuLj4xoKCghsI5s8TcPnpIBT9oNwE/D6Xy7Xdbrd/8Oyzz+5+/PHHndQ2LfA5D3suA85QGwmMPLLQ+b///e/nkIW+0WKxLKBlLuUXpAPQEbTB5fF4KmnZShb+g0ceeaSKLLyb9gPgIvQRVJVdRXIN8CCo77777oI//vGPt5CV/n5+fv5NdGrhK2dDsLvd7k1k3f/n17/+9frly5e7qFM5CXsuAM5QI4a1Nh4/fvza0aNH/4PNZvs2rZfRks2h2el0/u2TTz55dcaMGXuoo7DoolXPajcmmwFnsBWoKysrJ02fPv3v6QLxH2hUY1o2E63XNxqhOUkXqq+eOHHitblz557pBV2EXW/XjM3PRsBFsE21tbXXk7VeCheELhKzsb9Rw0cXqT1wYciqP37FFVd8SBX4aMlK0LPphKMvirWm2FRfX//lESNGLKXRj3m0LoOOAjQas/Py5cuPV1RUbKQiDDrDrrNX5mRnA+Aq2OPHjzfv3r3766WlpUvIDfl85pyG1LeU3Jd9LS0tT1x33XVrzp8/76UWAfKMBz2TAUfbFbgJbAuBfUdZWdkSuvFyZepxydwW0I2lo83NzQD9rwS69mZSxnUsUwFXXZHDhw/PmTJlytNksedknPpp3GCy6FV1dXX/OGvWrCpqpui6pHGr+zct0wBXLDZ1w/TSSy+V3n777b+j+R8/pYtHAC9DrwIO9xHD5c5XDF5fS0ya0MWo3+nwvrBx47nfLLlvKypj0DNmaDFTAEc7GW5zQ0PDD4YPH/4YuSMJmQMSExVpsPPxhjsMHt/FuLWkp8dwqb3dt2zhnD2vUKXsnwPytAc9EwBHG01YDh06NIuGtf5DjoyQGmHC4XMLwmwd/Caft2fnmXr3A3d8Zf9hqgXWHEtaQ57Of9pViz179mwrXeE/MnPmzF0S7sEDGuueJnPevCuusO76sPq6R2bPHm2l+sy0gKG0NZTp2jCG27R27drx8+fPf4lu1NwQ6wnKlf0TZcFF/bwe//Z9uxw/vvfuj89Tftr65ukIOI+QmE+ePPllGgJ8UfraIloDp5MBOFoB37zxQvdPvr5gP24SsW+OsfO0CenkoqhWe8GCBQWXLl36Hd1de1vCnTas9GtIXp5h5LgJ1re3H7z2dwsWjMTUYlwrpZXLki4WXIV73bp1E66//vqVNClK3mLvh1RkGcmy4GJr3B7/zkOVXXfd86PD5yg/bVyWdAAcbVBGSY4cOTKPbtqsJqs9QhRPpqNTIBWAo4U0l+1yw1nXd29duH8nrabFKEuqXRSG20yz/hZPnTp1rYQ7OpjTqTRNUhwxtsK69t3tcxZTuzDCAsOVUiOaSsBxbAhgoZl/d02YMOF1SttokSGDFSCabeVj819/v3LOXdQNCy04xynjLFUHVuGmu5K/HDNmzHN0ux2/eBmyQoEe84gRluc2V13zS+pOSiFPBeAK3PQQQj7NQ36CZgA+Kh9EyAqqgzpBQ4h5w4aZH6URlidwrmljSix5sgFX4F60aJGNXmzzYklJyf1BqsiVrFOgqNh0/5ubJr24aFEp3M+kQ57MCwAF7pEjR1rpBs4KeuD3W1l3NtOkQ6kaRQnXfZfL/+Y3bqz7Ed3f6KZyPIwYbpe4bEuWBVfgphbn19TUPCnhjsu5y6hKCgqM33pr4+QnwQAtSbPkyQCc4bY0NjYupXeQ3JNRZ0Y2Nm4KFBab7tlSdc1SqjBpF56JBhwuEI5hOXfu3N30rOS/xk0tWVFGKjB0mPlfN1bOuRtM0AI2EuomJxJwNBx/iix0QfkNupJ+mtIySAUMpSPyn16z5fPfICnYkicM8kQBznCbq6ur59Pt9+U0FAjYZZAK4J6+aczE/BffWn/1fJIjoXc8EwE44Ea95vXr18+gt0mtpjQmx8sgFVAVIEgKJkzJX/2fq66aQZmAHMzE3ZInCnATPRBcNG/evJU0t2SI2iuZkAoIChiNeUM+O6d45cLbxxVRNv7Cxx3weFeIHwwaar148eJTQ4cO/SmlZUiyAuk4Dh5Ogs5O3wsLPrfnQSoT9zHyeFpw/FhQn+Xo0aPflHCHO6Vym6hASYnpp29v+dw3wQ4tYChuhjdegDPc5jVr1kybPHnyM2IHZFoqMJAC48Zbn/nzi1dNo3Jx9cfjCbh54cKFRfS42Qrpdw90OuV2rQLwx6/9QvGKhQsVfxyQx8WKx6MS/EgUv5vmGTw5ZMgQeadSe/aSvJ5pPrgoj73D91/zr97zEOXFxR+P1YKrrsm+fftupNmBEm7xbMl01AoUlRjvWb1u9o20Y1xclVgBV6w3uSVFNN79JL3LLuoOyR2kAqICYKhisu3JBQvG8tBhTIzGsjNbb8vLL7/8C3oxz3SxoTItFRisAhaLcfqyP435Oe0f86jKYAFnuM2vvPLK5FGjRuHRJBmkAnFToLTM8tCfnpk5mSqMyVWJBXBcWFro6Zw/0Z+Vwrj1TFYkFSAFwNQX5w/5N0rGNCFrMICz9bZ8/PHH+MbkV+UZkQokQoGiQtPX/rb+M7f0Qg5WwV5UYTCAYx/zrbfeWkw3dJ6I6miysFQgSgXGV9ieWHjrqGLajV2VqGqIFnC23ua//OUv99PnriuiOposLBWIUgGLJa9iya8q8HA6Ax6VFY8WcJQ30Sewh9DrHn4WZVtlcanAoBQYXmr62fe+NwGzUnHdFxWz0RRm621ZtmzZT+hF9GWDaq3cSSoQpQImU17ZnfeO+gntFvWwYTSAo6wZN3XKy8vvjbKNsrhUICYFykZa7r1mwUjc/GFXJaL6IgWcrbf5+eef/wH53uUR1S4LSQXipIDZklf+m99N/AFVx4BH5ItHCjjKmehbObaxY8fiDpMMUoGkK0BW/OezZxdH9YasSABn621ZvXr1HWS9Jya9Z/KAUgFSID8/b+KjT02/g5IR++KRAK5Y73HjxuXT8oBUWiqQSgVGlVseoCnZfHdzQH4HKgDrjcX8xhtv/B1NqJqays7JY0sFLPl5U59bVbEQTNLCfOoKEwngGHs0013L78npsLo6yg1JUgAMjhlb8D0wSQvYBOS6YSDAsd30/e9/n54hHrpItxa5QSqQRAWKh5gWffWbY4bSIQF4WIbDbcQvA9vNS5cuvY2es8TVqwxSgZQrYDQabHffU34bNWTAIcNwgGObAjh9P+c70j1J+XmVDehVACyOLs//Dq0y4Loc621g59301FNPTSwsLPyiVFcqkE4K2ArzvvjPv52GIWv2w0P64uEAV6z34sWL76BfjF65dOqzbEsOKQAm5/9diWjFowZcGT2hx9G+nUO6ya5mkAL0WBsDzla8X+tDWWa+uDStWrVqBo19T+u3l8xIawUsplFp3b54NY7mik/703/MxNtpeTSlnxWHk64NKuCf/exn58uLS6086b8+3Pqg4WDNHw0O5yf9Gkuf9+sX6N3twXmaVWwMkUWv+Q7eLVShHk1mv310Kg9Vrt/h/PStQoN/PlVxhBYYa7AbVCwc4PQxzxHXS8ANhkZ7jaGq8W8Gh6ed9MuM4C2ebrD7Jhp6CIJsDr481/UGw4nnqY8MeFB3tYDjF6BY8KKiIjO9qeq6oNI5urL+1L8bOt2XM673PrPf4OjwZDXk/p6e68BqV1cXAx5kxUP54MgzrVixYpbJZCrNuLOagAZnItyQwWQ2GgppXlKeEec8OwON75V+/YErZlHv2A8P6qieBTddeeWVX5LuSZBWGbnCkDs7PQa/PyO7EL7RZI5HTCj+EhXaTwt7IKpfprXgintCBU3kf8+TgIfXNlO2AnJbicVAt7izLoBR2xDLPOoYW/CgP1eiBWf6TXRrPp/877lZp0YOd4ghhyUPNUKRydJYbaa5IyYU5l8+53BRP5hjxYprf9NYNz7zzDOfpl9GSSZ3Wra9vwIMORm9rArUn5Kbfzzt09QphV+xcyEt+Pjx42dK90SUKXvSDDksedYEwnrYyIKZ1J89tOhacN5gpLnfU7Om87Ij/RRgyLPJiFlsZjALC84cK/1GBgdswLqJZg9OzabOcwdl3KcAIC8oNuMtrn2ZGZpCHyxW0xXU/H4Xmgw49xLrRgJ8Sob2VTY7CgVUyLNgnLwXcIXfXgkUpvv54KWlpeaCgoKKKHSSRTNYAQXyIrPB1eXVzOLIrE5ZrcaK0lKbuaXFCbDZYCsuCfcEmcbf/va34ym2cqaMs18BhjyTZ/3TmKB17ncngV1Y8X6AM/XGq65SPsaZ/WdV9jBIAUBuLSSfnPFgIjIoHj2pCFO7xR6oFpy7YRw5cqS8wAw69bmz0gc5cMiwQE0uKrH0G0kRfXDFQbfZbBMyrGuyuXFUQIGc3p/Q7fSRT65O6YjjERJXVX6hCewqHPNRsILAFjyP3j2Iz0XIkMMKBCA3ZdwQosloBLsqyziFogXHBiNNkS3OhrFRdE6GwSsAyPPJkrvJkmeCHVeYNeUBcPbBlc7ziko9AY6XjMsgFVDmkysXnqAjAwIN54NdlWWkRQuOLuRJwCGDDKyA0ZRnsNrM5JOn/zi5yZzHgHPz1VEUZCjkS8BVbWSiVwGGXCEkjVUxGlXA1b85bMHVDAl4Gp/BFDaNIXe7vGk7uEL+iOheK0zzKAqkkxY8hQBlwqEBeX4BJmilZ2uNRuX6UeGYW8gWnNelD85KyDikAgy5uzv9xslNRvUiU217PwtOW7TQq4VlQioABRTIrTQzNc1MeU9eD9gNacHVPzper9dBH3mVj6tJlsMqwJB7yJKnyzg5vTXAITRaYZrHwdV8n8/Xpa7IhFQgjAKAnOZhp83gSo/foGVXGQfHD1D9EcKCh+mT3CQVCFKAIfe6yZKrFAUVSdqK39cjsqtwLfrgaEiPtOBJOx9ZcyBAbs7H3JUUd8mnWPCgn5l4QalskICn+CRl6OEVyMld8brp9VkpMuU9fj+7KCrkIS14v9fpZqjostnJVYDuJJIlJ6RSYMrBrK9HAVyFG71nC45MZZE+eHKhyLajMeQ+jz/phtzvy4MPrrIMbUULzoDbs0102Z/kKgDITRZj0g253+8Huwy40mm24KoCTqezBeZezglXJZGJQSgAyA0EOSx5MgLcfp+7p0V7LLbgTL2/tbX1tLaQXJcKDEYBtuSD2Xcw+zg6u8EuflHMs+KiYAVByTx58mSdvMgMCCL/j12BpEFO9Laed9Yxx70t72ELjnUF8DfffFMC3quOjOKjAEOeyMEVfOyqevtFLeD9RlH8GzZs6Ozu7r5E81FGxqd7shapAI1mwCen5zz93sT45H5Pz6UTey52ktb9XBTor1jv3o1+u91+RropkEWGeCoAyI0EebyHV8Bqt8t7htoKuEMCjn4AcqWAw+E4jQwZpALxVkCBnG7tK5DDZ4nT4nb5wawIuNJ09sFFC+7DSIq04PE+tbI+VoAhj5dPjiHCbrsXgNNTGMEWXBwHVyFvamqq48bIWCqQCAUAeQ8ZcJoBGHP1+KF0NHvALCw4c6zUG8qC+995551DNOkq9iPH3HRZQTYrgJuJmKQVa6CvOffUfNhwiOoRXRSFXwYcx0AGCvjoI7CX2tvba6WbAllkSKQCsUKuXGB2eWsr37twidopuihKs7WAM+Te5ubmSgl4Ik+trJsVYMgHMz0E/ndXm6eS6qI3E+m7KHwsxYLTiq+2tna3BJxlkXGiFQDceDe5EiMd6UIPzLU0OneD2d4FDKtBz4L7li9fXkmzs4IKq3vJhFQgAQow5NFUTYT696w5DwsuuieK/416QgGu/BLWrFnTSn54jbTi0cgty8aqgAo5rj0HWHB7vtvhqTnyUVMrlWYLDrhDAo62YQOsNvwZLw0X7pGAkxIyJFWBgHsy8CHhf9tb3Pj4q8IrxWBXhRs1iBYc6ww4fg1e8sN3ScAhiwzJVoAhJ1dc/2YnNaq5oWsXRQBcdFHU5oo3epAJwBly79NPP73npptuchUVFRWoe+RgwnXRZmh3YBQqu4OuMQuyiX0a6GQHCuhs1D1GX7VBKVhp7APgtfvSS4dcm1bUsQVn6x105FCAo6Diz3z00UedjY2NW6dMmXKL0ag19kHtiHil9nyj4b2dVYaOLvEVFhHvnpKCXs9XDUa3m44dpF1QW7TiB23UWdHdR+cw8DlDBlCgE/S30A5h9tOpLubsaG/r6JWnJ+gNrtbmrRdO7sYMQva/GXK1nVrAsQGaoCDMvufgwYP/N2nSpLgB/sJb6w0tHWhTZgV3t4teidBNjYbkkEhPem2/uCyjpt1fu127f7LLa4+vbZ+2Pdry2vWB9tdu1+6vPV6gvN/vMzTUHv8/Ku2hBaz2gxs1hTLLqIEB995///07aPpss661QS1RhEyEG93LtxbQKxH4+7gQPdLAZRGLad5fzOMyYoxyXEZMi2XEtFhGTItlxLRYBmltQFkE3ofTSmYE/w20v3Y7H4dj7fECrorP42mu2rZhB23VvcDEnuEAh9n30MxC5/nz59+LF+A4aKaGAOT5wbxpO6M9X9jOedqyqVjntujxo21Tostrjxfheldnx3tuu91JxWHBQ15goqpQgCMfFpytuGfTpk3v0PtSkJ/zAZBbLL2QMyRiDIUYCjEtlkllWmyTmNZrk1hGTMervF49YfL99JbNpvrat6k5onsCXvsFPcDhpuBXofjhS5cuPdzW1nZKWvGAfhaGvJ+cMiPRCoBBj8t16tCOTUfoWAw4WAWz/UKoi0wUQmGGHJW4aUx8TVlZ2YP0DR9sz/kAyBG8HsgjQ7IUAOD2jvY1dDwMa0F8hjsk4HoWHO2FyVet+MqVK9+hh5Hl2YQyvQGQm/PJXQkXcKcCge9YcFrJDPFftOVDVJFWWdH2Z4Dy9PpjT92R/e9QH8EiPAwwGtI9oXxdHxzb8ItgP9z90ksvNZ45c+ZdOf8K0vQFC42sKJAzwNoYRfmkiWltOV4Xy4hp3p5psdgHMa3XD7GMmKbyALKrs/3dMx8faKQkLDgAB6MhrTflRww4fi3uV1999QWy4rq/FlSYi0GB3GLJxa4ntc9+r9d/5tjHL9BB2T2JCXA0PsiKP/nkk7Vnz559X1rx/ueVIQ9z8a+OJMsygYGmaHTAXVdnZ+f7x/bsqO0FfEC4cZbC+eDYDmutuimU7v7rX//63x6PR/dPAnbK1QDITcoQYq/fDSHwp5hjMR3I7b9d70+3Xj7XPdj6Yt1f266B6htou7a+3nW6c9lTf/Lwf9PuuJ0suidhPYqBAEdzUAEcecVN+cMf/nCMrPg2acUhTf9goYtOk5ncFT5RKII0B07rbedykcax1hfr/tp2DlTfQNu19dE6Rk4c9o5th3d+cIxW2T0Je3HJ1UQCOKy1Cjilu9etW/c8WXGuQ8YaBVTINflydXAK+H007+TUyedpb7begA9MDuhJRAo4W3H8erqXLFlS3dDQsEtacVJDJ0jIdYSJMhvW29nVuevAtvXVtCsDztY7LoCjSWzF4dgDctfatWufkSMqkEY/AHIzja5gLjMHTgcm9AfyOQ9lOM3bo43FOsS0Xj1iGaQHCtG2D/XxPmKa2yPmiWne3uP3+Zvqjj9D21y0gD0wGJH1pnIDXmSiDAIAD7rYfOihhw7Su8TflnNUFH10/zPTRafJbFZOMp9ojrETp/mEinm6lYbZEG192vLcDr042vZp69fuH247psR2tDS/XbVl/UHaj613RKMnLFEkLgqXZSuuXGzigA8//PDT9GByK/6MyKCvAEOuX0Ju0SoAprzd3a3VO9Y/TdsY7oh9b64vWsDZF8cBXZs3b75UWVn5Z3nByXLqxwHI5c0gfYWCt8B6Nzde+HPj6dN4VhDuCZiL2Pfm2qIBHPuIVlyB/Pbbb3+THmurlhecLKl+DH9cHULkYuyfI45kwX68j5jmfcU8Mc3b4x2LxxDTescRy4hpoTwezXN1dVVvfeuVN6kIwx219Ub1gwGcrbhysYkGrFq16jGXy+WTrgokDR8UyE00iZNPKIojHWngsnr7D7Q90uNEWi7a4w1QHgz5vF5f3ZEDj1ETADdfXEZtvdGFaAHHPgw4flGKFX/00UePHDt2bDW9kRbbZRhAAYYcWMslWAMDPcxgb768mm7qYL631nqDvajCYADHARhytuLOBx544NnLly83SlclMv0BuZFGV2ToU6CH4HY7nI37Nr/3LOXicTSt9e4rHGFqsICzL66Oi+/du7f5tddee5g+f+KRrkpk6pvplr4CObsbORwDKBpy9pyuqX74YkN9M60y3FGNe2uVHyzgqIchV604DRvuI9CfpRtA2uPIdR0FFMjlU1L0pQcvjZo0PHvggw37SCqt9QZrgwqxAg5XRbXilHbdcsstK+vr63fIG0CRnw+GPFf9cbpbaejqaNuxZfXylWCod+G7lmAsJYDjDOLgWPiCE788x4MPPvgb8sc/kf44qRFhCECeez45/O5up/OTqo3v/oakwuvOwBBcADDFfFFycCEWC85HRCMwfIJfHBrnpBtATa+//vqvyB/3Sn+cFIkw4Ja+URxCzHKfHGaZ/tJ76SmdX9FrIJpoVeGHYrDEw4KUHHyIB+BoJxrDrorSSHrVRNWePXuegz8uIY/8BCmQG7P/zQVgAn735aYLz+3fsq6KFBLhjunCUlQ7HoCjPoY8yFVZtGjRcpqQtdGtvLhSPKxMh1MgYMkBefZ65TRJ0NDZ1rpxy2vLl1NHta4JDCaYijnEC3A0hCHnURU02rF48eJ/oYvOvRLy6M6ViVwVoymepye64yeytI8sd1dH+94tb6z4FzDSu/CwYNzgRh/iqSAAF/1xNNhBX4nouPPOOx+iByRq5KQsSB55YMizyRXHiEm3vbNm99o3HnJ2dHSQGgBchBsMxcV6Q+lEOHtonNjAPILcW1dXt3P+/PkLPth/eGgePqclQ0QK4L3synvBs2BKMmYIuhz2c/s2rf1ZY33tJyRAFy0MONzbuFpvCJwIwFEvQhDo5It3d3Z27naYCm6mGXWFPNE9UFT+H04B/vhAgPHM9Mv9fvpglNPZfGjnpntOHzl0lvqrhTuulpv1TBTgogVX0wcOHOiix7j2Dx899is0HJYvIefTMHCc1/uFjUwckcL9EHphpv34gY/uq9nzUU0IuGG5AXjcQ6IAR0MZbI6VxjfV17UVlQw5OqR0xEKah2GRkEd+TlXIIW2GGHK86tjtcjnqjx74pwNb38dteNFyx228W0/FRAIuHhOQq6BfqD1+0WIp2Dds1KgFNCRmkz65KFX4tAp5Bvjk8LndDkfriQN7fn5g6waMdTPcGPNOONxQMtmAq6DTnasWn8e1s7R8wvVkyEv4xKFRMoRXQDUIiiGnz16n4b8eGud2d9kbqnd+cC+9bu0o9chOCwBnuHEzJyF+N9WrhmQBjgOyBVchv9xwobOro3XbqPGTrjVZLGV8MaW2TiZ0FQhATlKyqrolk78B49z0HsGT+zatua/uyMHT1AKAnXS40fNkAo7jITDgStx++aKz+cLZD8onTZ1NryEeA59c+uUBoQb6X4UcBdPAJ8dwJt5CRTMDD+xY88YvGs+caqCWad2SpFhu1i7ZgAfBTY1Q1umdz+7zp45uHXfFjCn0AstJeUYJOZ+ggWLVXUmxKcesQHqWkm6/t2zd+saKJW0Xmy5T2xlu3MjBDMGkwg3tkg04jonQD3S60vbVVh/cPmbyFGu+rXA2+eRkyGGWZBhIAdYpYMST75H30Bg3fcqlp62p4eWNry7/N3rVWju1WYQbF5RJhxu6pQpwHJsh5wsN+nit13+quupA4ZChNSVDh881mkw0wiKtOcQaKEAnCJrMoMwIpJESj6Orlaa8Ltv2v6++QeeQLybFO5QpgRtapBJwHJ8hR6yCfuFUzQX6U7d5RPn4K8kvL5cuC6QaOKiQJ8EfJ2/bgItJR3vbwb1b1v3iaOX2Q9RCWG223HBJxKHAZP/+FMHSBXDAzYsCPV18dp06eGBjecVkk7Ww6DPSZVHO14D/sbsyYMEYCuDOpNfj7mlpOL9yw6oXf996sQFvn4LFZri1k6diOFpsu6YacLSef9lsxVXQ6c+d79ShqoN05/NI0TByWYxwWWjAQPrmYc96nz7xNeWBhxRofNvpbDl7rPpX2/73f97qdUkYboxx88Vkwm6/h+28ZmM6AI4miZCLoCvp86eON9ibWzYPHVk+mlyWKXBZMC7WdyI1vZKrvdqwrLEJArAxSoJvgna0XNpctXntkqOVHx6mWtliA3DtDRwYqpQHkJJOAe3BXFr88PCmSist+OKqjZZCpK+55bYvVEy78pcFRcUT8eRL3zAZbZWhnwIAM5bAw3/dXfaz9SeO/vve99fsovrggjDUPATI011xwPj8smJpeO++6QY4mhUwzwHI8Zg5vrQKyBl0W0FJSfENt/39D0pHj73LYrVayXWR1pwE0guBGYjRMaeOkNBDtc1NDSs/XLP6FVdnJ0ZIYKmxAGz2tTFKwnO5ozsQ7ZjIkC4uiraPLBJiLLAK7NP5vG63t/bQvkMOR8emoWWjx9Fr0CZKt0UrYd96nyvHtkM/xhwudkfsra0fHtz6/j/v2/zuB6S5OPwH6y3CjfMT25+KvubGNZWOFlzsINrHLgtbc7bocFsUyz7vq9+6oXzK9PsKCgsraE6L4rb0nVSxutxOByx5aA3Yz/aRn+1yOOobT598dte6N7dTabbUbLUx9Mc3btjosEEKXXkKc9MdcJYGkDPo8M0BOfvnCuRms7lg7uJv31Q+ruJOa1HxVLzcEv65BJ0lDB0z2LiAJD/7VNOF+pcr1/5tE72uhMHmmMe1RV87La222NNMARxtZmsO0GHNGXQAzrAjtn5x0Te/VD556p0FxSVX4Y1RmIorQSdlhKCAjfFsL1lse+eRptOnXv7ovbd2UBGAjAVgcwyLDbD5jiTATlurTW1TQyYBzo1Gm3HtwKDDmrNFVwCndSW+5uavXzNu8oy7CocMuRpfVgi8hiF3hxcDLgpm/GFilMfg6OjYf+H08ZU0MrKXNGOwxVh0RwA1X0hSMjNCJgIOZdFuLKLbAovOQ4si6PlXz7959tipM28rKhm2wGzNL8TrGHLlopShxoQo3Fr3drsdXZ1tWxtO1byzf9v7uL0OiEWokYa15kX0szPCalPb1ZCpgHMHGHIGnV0XBp0tu2Lli4eNKPrc/C8vKC0v/0phybA5NI5uogldivuSbePpGAkB3JifjU+CODrbqlqamjYc2LZxq73tMm7QsHUG0Aw5Q83DfrDaGeOOMBRinOmAc1+0oPONInZfxFix9BOmXjVq+py5Nw8rG/kVmp47lV+XFvDVM8+NUS11H9R0S91xqq350oYTVZXvnzt15CKJxQAz3GKMbbDWbLEzGmwRDE5nQ8ygIwbksOhs1QE54NbG5qu+cMO0cZOmXW8bMvTqgsLiWQS7FW95hc+ersAHA+1XXmRJlrqbXqxz2NnRvv/CmZMfHtm1/ST1F9YY8ALmUDG2s8WGC5IVYFM/lJAtFpz7wzH6xbADdF4AuBZ4xaJTvrKtoLjYOuvaL80qGzPx8wVDSq622Yo/ZTSbLLhbqjwzqsxPp9JKCMiXqBGaAMQ4UMD1xU0Y8jsMmM2HJ9ZpLprH6bQfc3V07m9uPLvv8J4dh112O1wOhhpA88KA8za21myxldqpfFaFbAWcT5IIOvx00VcXrTtDznkcm4aWlRXOuGbeZ4aXjfm0xVYwMT/fOtFsLRhnwsMYyvCjUQG/76KVD62NtVIHoNWWUiAmoHFRCJAVX5pi+oKdk+zzBbe7+6zH6Trb2tz48fG9O6vbm5txVxGQsiXmmMFGzHmIGWjRvw7dGCqc6UGreqb3J1z70VcAzjFbddGVYbC1sVhW+aFUzPzMqNETJ1YUDyubaLUVVeRbrRNMFnOZyWguzAvAj9fToZ6AmwPLjxUKCk1EMltoir30OJOjhyD2+b0On8fb7O7uPtft7Kq3tzWf/eTs2fr6mmr40AylaH1FeEOlxbLsfnCstCeb/2PNs7mP2r6hz+ICeNmycwwwGWqGnde5jBgjjUWsN4/cHfPQ0lFF9PidzVpUWFRgK8KMSIPL2eXo7qLRuvZWZ3vLxS5yKwAmuwgcM8yI2eqKMdIMNEOMdbEM78t1ckzFciPkIuDimQ0CkjYwqByL8IuAY7u4jcujPqS5XkoGpbEuBhE4TrN1ZcC1wDK0DDWvc3mOuT6OxePmTDrXARdPNGvBcCLWgsvrDDEgRzmOOT9UXTgW5wM6BIZPuw5IkQeIxZjh5RjbxDTWsSBwHFjL0f9Z8BztfthuszaIwy0i1NpyOIBYj3hABlCMkdYuDLs2X1xHvViXQaMAi6/Jlqs6CrBeDDKKhcsTt+tUGQQmQ8rwYp9weXp1yvxeBfjkSEFiU0Cro3YdtWvzGFzxyNo87bpYVqYjUOD/AZrbm7Ts1rpFAAAAAElFTkSuQmCC',red:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAAC4CAYAAABQMybHAAAk/0lEQVR4Ae2dCZxUxZ3Hq8/pnhkGmOEQuQS5VCTxWHEDBlyNkciakMMkxujGuOvHO24IKCae0UQlKwmyroocoqtozGpA4oFiVAQU5IaRcchwDsPczNF39/5/b+bfVL/p7ume6bur+DyqXt31r2//5//q1XvPIJRLpgQMMVYeiDGfyhanBGKdgDirzYvsLLtIPguB0/lc7+vh5vNIvr68Oo8ige6EH6Vo3iSxjODrw1rcm2++2f+MM84YV1hYONRkMhUZjcY+OAKBgOZTXDGVLTYYDH0gNYpvIa/V5/O1+v3+FopvgY+D4tra29uP7N27d98VV1zRiOy6g06DcRyGr1wYCfCEhUnK2yiWiQYvSQG+8ac//all3rx5o/v16ze+oKBgnNlsxjGWQB5LgA5MhrToh1BL0Fd4vV4c+1wu176mpqYvHnnkkf0rVqzwUJt+OuQfALrBmh/hvHc8mfkuCBlmDei5c+fab7nllguLi4svttlsXyeYzyPgrJkgKPpBuQn4LU6n88PW1tZ1ixYt2vjoo486qG964PMe9nwGnKE2EhgG0tDWBx988HzS0BdbLJbpdEymeFsmAB1DH5wej2cTHR+Qhl937733biYN76ZyAFyGPoaqcitLvgEeAvX1119ve/jhhy8nLX211Wq9lKYWtnIuuFa3272WtPv/3nPPPW8tWbLESYPKS9jzAXCGGj60tfGLL764YPDgwT+x2+3fp/MyOnLZ1Tscjj/X1NS8OH78+E9poNDoslbPaTMmlwFnsDWoN23adNq4ceN+TBeIP6FVjbG5THSksdEKTQVdqL64b9++lyZPnlzVCboMe6SiWRufi4DLYJsqKyunkraeCxOELhJzcbxxw0cXqQGYMKTVHz399NM/pgp8dOQk6Lk04RiLpq3JNx04cOAbAwYMmEurH1PoXLkIEqDVmPV1dXWPjhw58l3KwqAz7BFKZU90LgAeBHvYsGHmjRs3/mtpaekcMkPOy55pSH9PyXzZ0tDQ8NiFF1646vDhw17qESDPetCzGXD0XYObwLYQ2FeVlZXNoRsvZ6Yfl+ztAd1Y2lNfXw/QXyHQ9TeTsm5g2Qp40BTZtWvX+aNHj15AGvv8rJN+BneYNPrm/fv3/2LixImbqZuy6ZLBve7atWwDXNPYNAzT0qVLS2fNmvUA7f+4gS4eAbxynRIwHN8ozDseFQZHTW9l4m/3BBa/8nnDfT97vKqBKmPQs2ZpMVsARz8ZbvPRo0ev6d+//yNkjiRlD0hvqUh3ecsrpwtD2+GEdcMfELUNbWLewNniBaqU7XNAnvGgZwPg6KMJx44dOybSstYf1coISSOKsy4tiJLa8ySPX6wvrxN3TLpX7KJaoM1xZDTkmfynPaixJ02aVEBX+PdOmDBhg4K754D2tqTFKKacPVhsOPEnce+kSQK/IjMdYChjFWWmdozhNq1evXrYtGnTltKNmq/3doLypXyyNLgsP49XfPhOpfjZzCcEbKGMtc0zEXBeITFXVFR8g5YAn1O2toxW9+FUAI5ewDY/UC9+PvrXAjeJ2DbH2nnGuEwyUYJae/r06bba2toH6O7a6wrujGGlS0eMBjFw1ADxetMT4oHpZ2lbi3GtlFEmS6Zo8CDca9asGT516tTltClK3WLvglRsEanS4HJvXF6x/v0vxHXfWigOUXzGmCyZADj6oK2S7N69ewrdtFlJWnuALDwVjk8C6QAcPSSTpa6iTvxwwm/EejrNiFWWdJsoDLeZdv3NHDNmzGoFd3wwZ1JuMlkGjBsoVlf9TsykfmGFBYorrUo0nYCjbQjAQjv/rhs+fPjLFLbToVwWS4Boto/sL14++ri4joZhoQNznDbO0tVwEG66K/nLIUOGPEW32/GLVy43JGAeUiKeqvsv8UsaTlohTwfgGtz0EIKV9iE/RjsAH1IPIuQG1SGjCAhDWaF4qHmBeGzwYIG3EaRFk6cacA3uGTNm2OnFNs/16dPn1hChqJOck0CJTdxaeY94bsZkzfxMOeSpvADQ4B44cGAB3cBZRg/8fi/nZjNDBpSuVZRow3d4xGsjHxT/VlsrXJSPlxGjFUlIWqo0uAY39dhaXl4+X8GdkLnLqkrsFvE90uTzwQAdKdPkqQCc4bZUV1fPpXeQ3JhVM6M6mzAJ9LGJG+v/IOZShSm78Ew24DCB0Ibl0KFD19Ozkr9JmLRURVkpgdIi8Zvqx8X1YIIOsJFUMzmZgKPj+FNkoQvK79CqyQIKK6ckIE4pEQsqHxbfIVGwJk8a5MkCnOE2b9++fRrdfl9CS4GAXTklATwiYRpVJp7bfb+YRuJI6h3PZAAOuFGv+a233hpPb5NaSeHkPGJCFSuXnRIgSGwTBomVb/2nGE8jAORgJuGaPFmAm+iB4KIpU6Ysp70lJdk5BarXyZaA0ShKLh4tls+6QBRRW/gLn3DAE10hfjDoaMHx48ef6Nu37w0UVi7FEsjEdfBoImh2iMX97hR3Up6Er5EnUoPjx4L6LHv27PmugjvalKo0WQJ97eKGLx8U3wU7dIChhCneRAHOcJtXrVo1dtSoUQvlAaiwkkB3EqAngxauuk2MpXwJtccTCbj5kksuKaLHzZYpu7u76VTpegnAHr9svFh2yQTNHgfkCdHiiagEPxLN7qbnKOeXlJSoO5X62UvxebbZ4LJ4yB5/muzx2RSXEHu8txo8aJps2bLlYtodqOCWZ0uF45YA7T68cfu94mIqmBBTpbeAa9qbzJIiWu+eTy9Wj3tAqoCSgCwBIETr4/OnjwsuHfaK0d4UZu1tef7552+nF/OMkzuqwkoCPZWA1SzGvXS9uI3K93pVpaeAM9zmF154YdSgQYPwaJJySgIJk8DgvmL2C/8hRlGFvTJVegM4Liwt9HTO78k0KUzYyFRFSgIkATJVCq88S/yOgr3akNUTwFl7W3bu3IlvTH5LzYiSQDIk0KdAXEEbsi7vhBysgr24XE8ARxnzlVdeWUw3dB6LqzWVWUkgTgmMHSgeu3Ky9oFeNlXiqiFewFl7m5988slb6XPXI+NqTWVWEohTAhaTGPnMLIGH0xnwuLR4vIAjv4k+gV1Cr3u4Kc6+quxKAj2SwIA+4qbrpwjsSsV1X1zMxpOZtbdl3rx5P6cX0Zf1qLeqkJJAnBIwmUTZ/TPFz6lY3MuG8QCOvGbc1DnllFNujrOPKruSQK8kQG/Kuple0Yx942yqxFRfrICz9jY/88wz15DtfUpMtatMSgIJkoDZJE5Z9mNxDVXHgMdki8cKOPKZ6Fs59lNPPRV3mJRTEki5BIb0FbdNOj2+N2TFAjhrb8vKlSuvIu09IuUjUw0qCZAErBYx4i/XiasoGLMtHgvgmvYeOnSolY47lKSVBNIpgWH9xR0lJcG7m93y210GaG8c5ldfffVfaEPVmHQOTrWtJEAbsca8f7O4BEzSwXxGFEwsgGPt0Ux3LX+ktsNGlKNKSJEEsJ121CDxIzBJB9gE5BFdd4Aj3XT11VfTM8R9Z0SsRSUoCaRQAn0LxIyrvyb6UpMAPCrD0RLxy0C6ee7cud+m5yzV50VIGMqlXwL0/Kb9nsvEt6kn3S4ZRgMcaRrg9P2cHyjzJP0Tq3rQIQGYKSP6iR/QGQMekeNICdDeOExPPPHEiMLCwq91VK3+VxLIDAkUWcXXnrhaYMma7XDw2sVFA1zT3jNnzryKtHekfF0qVBFKAqmQABFpnDUxRIvHDbi2ekKPo30/FR1WbSgJxCuBwcVBwFmLd6kinGbGLwHxphUrVoynte+xXUqpiIyWQKBoWEb3L1GdozXxsS/9u/Z2Wl5N6aLFYaTrXRDwr371q9PUxaVePJl/3nzef4uaN28S7hNHunQ2EOgSRa/r1rkuEXild1enr6unecJVHktd9OlwaOJp1LPddEApg92QotEANw8YMGCqApwktmen8K9cIURTI8kv810BdXGI72JR73LR9+ND5jvzOx9nD80u11QhVj1DxRjwkBr0gOMXoGnwoqIiM72p6sKQ3Hl64nv0fhGoPZ5Vo8ff7P5+v2jw+Eil5S7kfQKBC8FqW1sbAx6ixRGpd4gzLVu2bKLJZCrVJ+bjebbBzXNkoTsipfRQo0HTWRybWz7BWvqHkYMn0qjYDg8ZoB5w1uCmM8888yJlnoTIKitPGHIj3R3hyc0lHwCPLbRdRB4A56EF5yoc4Igzkf09RQEelFNWBwB5f3okJhfnE2MqNZumgFk6wC4gDzoZcKbfRLfmrWR/Tw7mUoGsl0Ao5DzVueEXmUyThxcW8heUeVDanMmAIwLnxoULF55Nv4w+Wg71X85IgCE3AoEccjScPr8ZderZNCSNX3lo8ioKk28aNmzYhFz8cyYPPF/DHZAbRKPXmzNrK6B6qM0ygbxP6WCOtaUjWYNzgpH2fo/JVwDyYdxmUuH9zWZN3eXKePuYjGAWPDPH2tD0GhwZTLR7cIzS4Jp8cvY/QN6PIG/KAU0OVouMxtPBLh0MuTZ3rMFBPRzOjQT4aO1M/ZfTEmDIc8Emt5s0wDV+OydNY5oBR5ym2ktLS802m21kTs+sGlxQAoC8r4nMFZp9DQAGIct8m9EwstRuh0XCw9DGqAfceP/992MrGrYzKJcnEjgJOdjIUhcQBbcPHQx2wXRwIGyDM/XGs846S22PzdI57k23AXkJmbAnfNm5dwUAn1mkbe3+ohNwRAVYgwcBHzhwoLrA7A0pWVxWg5xe5Wo8qQCzZjQAuNRs7rKSwhocAwHsRrvdPhwnyuWnBAB5H9LkLZomzy4ZFJmNYFfjmHuu1+AGevdgMScqPz8loEGuafLsGr/ZYAC7bI3A1x6751EgwkhbZIvVGjiLJH99QF5Mmrw1SzQ5mKVFcAAOpa3BjdnjkyD1BDheMq6ckoDQNDntQsQSYjY4ghzsBllGWLbBMQaDAhxiUI4lYCLNWEzmiqbJM/zBIKvByIBz9zUNzica+QpwFofyWQIMObGe0c4kAgx4sKeswYMRCvCMnsO0dY4hb/P5M/YZT7NJ0+AsI41pXkVBJCKUicLiUX4XCQDyIhNWyYP6sEuedEZE0+DcLwU4S0L5YSXAkLdrmjxslrRFGmOxwal3bLakraOq4cyWACAv1DR5ZvWTVlHArmaJcM/YRAn+zfF6ve2cqHwlgUgSYMi7rDNTASYs1b7PH5DZ1Zjm/gXH4fP52oInKqAkEEUCgJz2YWeMRU6Xv3p2NZWO1c3gCqfS4FFmVCV1kQBD7qS3aKX7LXE+v1/W4BrXbKJwxwNKg7MolB+rBAC5jd69Ql5anS8goMGDyhqdkS8otQQFeFrnKGsb1zQ5Qa5p8jSNwm8ImihByMNq8EC6/9akSUCq2d5JAK+H0zR576rpUWkwSyuXETW4Zq9QzQFlg/dIvqpQpwQYche9vDvVb7X1BgRs8CDL6JKswbUEAry1s6/KUxLokQQAeQFtQUz1HU96FzrYZcC1vss2uBbhcDgaoO7VnvAeza0q1CmBDsiFcPlTIxJQ7aTXoetbYw3O1PsbGxv/oc+kzpUEeiKBk5q8J6XjL9Pk9YBd/KSYZ81EwQmcFllRUbFfXWR2CET933sJAHKrZq4k9w4nelrldOwnLwg3wqzBka4lvPbaawpwSEO5hEkgCHkS18kB72v1zXrAg+vgTL3/7bffbnG5XLVms3lgwkaoKsp7CQByC0nBo+nRxIvD7ffXrjve1EI1dzFR0FoQcGRobW2tUmYKxKJcIiWgQU6gJ1qRg9U2X6CK+gq4wwKOcQByLUN7e/s/EKGckkCiJQDI6fUOCd9x2O7zgVkZcK3rbIPLGtyHlRSlwRM9tao+loAMOcf1xge8TT4vAPfREaLB5XXwIOTHjh3b35sGVVklge4kAMhhqngTsC0E9dR6fGA2BG70IZwG97/xxhs7aNMVgFdOSSBpEsDNxA5zpXdWuY/MjVW1zTuoowA8BHIGHIMA0Ej00Udga5ubmyuVmQKxKJdMCQByE/ENfd6Tf6C2xR+ofPFITS31UzZRtG7rAWfIvfX19ZsU4MmcWlU3SyAIeQ8UOYCt93g3keelI0R7o34ZcJxrGpx8X2Vl5UYFOESiXCokAMgBI3lxHTDkqxyujVQU2ps1eLDLMuD4MbAG9y1ZsmSTn1wwpwooCSRZAgx5PM3Qg3L+JTX10OAMN3OsVRMOcO2XsGrVqkayw8uVFo9H3CpvbyXAkMNa6e7AQ6DNXl/5W8fqGyk7a/CIgKNvrMFhz3hpufBTBTjEolwqJQDIAXd3DrDWuj34+KvGK/lsgweLyhockQw4fg1essM3KMCDslKBFEqAIY+mxdGdynbPBvIAuGyiIElz8o0eRLB6xy/Bu2DBgk8vvfRSZ1FRkU3Lnaf/VRaVCM/xmpwffSRlBijCuUjxyBsxLUJCpMfbkB39AvD6/jn8fufjh46wBmftHdJCOMCRUbNnPvnkk5bq6uoPRo8efbmRnphOhGvbWiGO/c9fhaeuORHVpaQOt+8rwlmCb7uHyC6k7UgpUctEKBStTEijnSf6iZfzRGhCyxJvO3K96Q7T42mi2nnig21N5dhByPY3Qx7snh5wJEAmmgYn37Nt27a/nnbaaQkDfP+dTwp3dT3aySrn9HtEu9+r2YYQUCw2IgbIeRk0lOO4cOmIk12q88ttI8x9jdR/fX79eXfl9en68pHG7w34xW5nzV8pv4cOeQ08pIpwahltMuDeW2+99SPaPlsfTUuE1NjNSTbCjSEVGS2i0NihD2KFG+U4L3w5jDQ4OY7zyL6cRw7LeeSwnEcOy3nksJwHYb1DXjguw2EtMob/uiuvT+d22Ne3h3iw6Az46he37PyITiNeYKJsNMCh9j20s9Bx+PDhvyUKcDSarQ6Q2wnyaNf4nMa3nTFWjsuEcXNfYu1fsvP3RCbQwLU+598a3W4HBaHBw15gou5wgCMeGpy1uGft2rVv0OskEJ/3DpDbjCYNWoZE9iEghkIOy3nSGZb7JIcj9UnOI4cTlT9SPdHiAeZ2Z93r5MnmCaK7uEiA40eCXwWo9sydO3dXU1PTl0qLd8iPIe84U/+nUgJgsC3g+XJJ8+7d1C4DDlbBbBcX7iITmZCZIUclbloTX1VWVnYnfcMH6XnvADmcKwDZKpcqCUBN13jbVpHnpoPNE+a1SzciaXBkRF1BLb58+fI36GFkVKhcpwQ0Td7lS4xKPMmUgFv4PG+3HXmD2pC1d1jzBP2IBjh+FSgIM8W9dOnS6qqqqjfV/iuShuSwsmJTkEsSSV4Qa9+1Pseb77ZWVVMr0OBgE4yC1bAuVsA1M+XFF19cTFo84q8lbAt5EKkgT80kuwMB/7q2I4upNTZPegU4eh2ixefPn1958ODBd5QW7zqhDHm0q3+V1nMJkPIW9f72d149UVHZCXi3cGOWomlwpENbB80UCrteeeWVZz0eT8Q/CSiUr64DciwhnnQcjnbjArk5PV6fy3KL+va6q6+35fX1d1dfd+n6+vjcL/yBjx3Vz1J5Fx2yeRLVougOcPQHFeBiUzNTfvvb3+4lLf53pcUhmq4ON4IKDB2QY3Lg2JfDPHFyHMLxOq67p/X1try+v93V1126vj6cd9jezr+vaCrfS6dsnoDJqHCjbCyAQ1sHAaewa82aNc+QFkd55cJIQA85w5cKH91hiORwKtpOVhs+4nij89gzNB7W3oAPTHZrScQKOGtx/Hpcc+bM2X706NENSouTNCI4QG4lTZ5qx3AzbGif41Ldl0S0B+1d73dtWNy4ezvVx4Cz9k4I4Ogna3EY9oDcuXr16oVqRQWiiexOavKTiOEyC44vtzisRXbGcxznicfnsrHWp8/P5SL5+v531zd9/fry3aV7aOVkk+P4QsrnpAPsgcGYtDfli8lEQT4ADi3OgLtmz569jd4l/rraowLxRHY2TZPjY6kd/5CTJ1kOR0qPXHP4FK471vr0+blcJF/uc/gehMbq69eXj5buoy2xR31trz/duGMblWPtHdPqCfciFhOF87IW1y420eBdd921gB5MblR7VFhE4X2GPHyqig0ngY49J97GxU27FlA6wx2z7c11xgs42+Jo0Pnee+/Vbtq06U/qgpPFGdkH5FhdUS42CeD5qb2exj997qzFG6tgnoC5mG1vbiUewFFG1uIa5LNmzXqNHmvbri44WaSR/QLaZstLiJyLrXP4sRwox2XkMJeV4+Qwpyfal9uQw5HakfPIYTk/tHej37X9vuMbX6M8DHfc2hv19wRw1uLaxSY6sGLFikecTifegYg6lYsiAUCO1RWeUGRFOFbHeSOV7y491nZizRdve93lB0Nu+qD8O22HH6E+AG6+uIxbe2MM8QKOMgw4flGaFn/ooYd27927dyW9kRbpynUjgSDkeP+HOkJkEKBfwCF/68oXmvdgv7dee4O9uFxPAEcDDDlrcccdd9yxqK6urlqZKrHJH5BbeqRfYqs/G3NhzftEwF39ZNPORdR/PI6m195xD6ungLMtzsuGzs8++6z+pZdeuos+f0JLl8pUiWUmGHL82c73A69hcwm/5/3WQ3eVOxrw2gWGO651b73cewo46mHIg1qclg23EOiL6AaQvh11HkECgNysNDltdPKLfe6GRU837d5CotJr7x5rzN4CDlMlqMUp7Lz88suXHzhw4CN1AygC0WGi8x1y3NCp8To++lXN+uVgqPPgu5ZgLC2AY6rQOA6+4MQvr/3OO++8j+zxGmWPkzRidJq5YuiNvomxoQzLBru72e+pWdS46z7qWjsdYAgmAJhivijYM5cIiaITWD7BLw6dc9ANoGMvv/zy3WSP0zeGevzjo6ryy2H50EKQR7pNnmvx0MvugN/7vuPw3Vucx47RbGv8kA+WeFmwVxAkAnAQjM6wqaJ1kl41sfnTTz99Cva4gjz2OQLk+DBTrjswAbt7r6fhqacbdm6m8cpw9+rCUpZdIgBHfQx5iKkyY8aMJbQh6123Gz9I5WKVwElNnrurK16C+4i39d05NeuXkFz0pgkUZkL+9CcKcMwdQw6acaGATrfPnDnz13TR+ZmCnKQRh4OpYs5Rm9yjXVS2f3ZX3YZfk0g0TsjnZcGEwQ1xJxpw2R7XIKevRJy49tprZ9MDEuVqUxZEHrtjyHNpjRwrJvU+R/nDjZtn13scJ0gaAFyGGwwlRHtD0snY3obOyR00EOTe/fv3r582bdr0pmXv9MVXbpWLTQImklWHQGWRxlY203IB7kaf69CC5p037XDU4osCbXQw4DBvE6q9Mf5kAI564UJAJ1vc1dLSsnFUZctltKOuUEHeIaRY/gfkcBBotq6k+KnzJwKe+mUnym9c13roIA1FD3dCNTfkBZcswGV1Ewxv3bq1rcBk+Xycpd836c+vVUHeMQmx/M+yCgozlkIZkoe2mYrWgKf19ROVt/y55cty6pYebmhuAJ5wlyzA0VGeC/a1zm9z1jaVme17hluKL6HVAgtPXMJHloMVsqxCBJrh4+yA292+tv3Ifz7btAu34WW4E7beHUkMyQRcbhNzEpyXTY5jx+kJly2jrSXTSZPbeeLkAiocXgIsq6Aww2fLiFjY3Cf8nsbX2/bf9mzjLqx1M9xY80463BBCqgEPgr7VWdvQbvCuH28tnUo2eR+eOHRKuegSCMqKTHOY55l44F0mDQHn0eXNX9z8yomKPTSiVjoAOMONmzlJsbup3qBLFeBokJVOEPJyV2PLUW/738+2DbjAZjCV8cVUsHcqEFECgDwoyIi50pOAde46n6NiYePuW9a2HfgH9QJgpxxujD6VgKM9OJ4XzT/gOeHY7W5Yd65t0CS70TRE24nRuWrQkV39H0kCDHmmrK1gZnH7/ZjXsfWRhs23b3HUHKW+682SlGhullmqAQ+Bmzqhndd6He5PHDUfTC48ZXShwXyagpynp3ufzRUIMp0OuwLpWUq6/d72wd21G+fsdzfVUX8YbtzIwQ7BlMINeaQacLQJ1wX0Fr/b9zfnwQ/PKxhUUGKyTjIJo4Enr6OI+j+SBGQ5YcU81Qfgdga8gQpP0/O/qP/4d41eB77yK8ONC8qUww15pQtwtM2Q84VGwEsbyN9srdo60FRYPsRin2wxmOzYS4AHc5WLLoGT5kr0fIlMxY5AvL+k2e9ufK/98Lz7aje9SnPIF5PyHcq0wI2xphNwtM+Qww+CvsFRfaTa2/beuILSM+0G0ynKZIGounephJxNkhpf+7aFjTtvp5WSHdRDaG3W3DBJ5KVAzHHKXaYADrj50KCv8rS0rXFUvXtOwSBTX5P1K8pkiY0NNleSSRNu3sAkKfc0L7+j9sMH97ua8fYpaGyGW795KrbOJyFXugHHkHgu4DPkmjanP3e+Na1V2waa7buHmAsn0/ZRu7YXQ5ksUVE4adIlducKcU0mCW7euBvWOo7c/UDtxr90miQMN9a4+WIyabffow5el5gJgKNLMuQy6Fp4g+PY0cNksoyylgymz4SM7nioS9nmurkMOT0JeUh0j05ga/toiuj78OKQr/W9RY3b57x64stdVBlrbACuv4EDJZV2l2lXb+gPrivxw8OXVgvosNFhp6MQ4TvKzvnni+yn/rLUaB2BJ1/4TzKlKRdGArCVe+PY1m70uw9+7Kz+wx/rt26g+mCCMNS8BMjbXbW/vr1pM5FlMw1wjA19wgHI8SVmKx2AnEG39zfbiu8vu+CasdZ+19HHWAvM2ESqzBYSUXgHDRwv5rxC0ub3uCrI1n6w/tMXGr1OrJBAU+MA2GxrY5WE93LH2xQVTZ7LFBNFP0IWEnwc0Aps0/mcfq/3rbYDO+r9zrUjLMVDaePWCGW26EV48px//Kw5ovl4wxSbI/Ty+Y+fa97zq0WNO9aRzOXlP2hvGW7MT0aYJCdH3RHCWDPZoX9ssrA2Z40Os0XT7HMGnP/1C2yDbulrtI7E64nx7lae1EweXKr7Bq0cybGd7SI7m9a1D3zmqln0WN3nH1J+1tSstbH0xzduWOlErjhSgymKz3TAWQyAnEGHbQ7I2T7XIDebzba7+p1z6STbgGv7GwvGKNBZdNF9GWx6J/eXO5x1z/++aetaejMZg80+r2vLtnZGam15xNkCOPrM2hygQ5sz6ACcYYdf8Kuy8y86zz7g2jKj7SwFOkkkjJPBJlNv9xZH3fOP12/+iLICZBwAm31obIDNdyQBdsZqbepb0GUT4Nxp9BnXDgw6tDlrdA1wOtf828rO+afJtkHXDTLZz7XiNQxUBIXz1XwB1KASa9n0Rilx3Of4fJPz+PKF9Vs/o2gGW/ZlcwRQ84UkBbPDZSPgkKzGKfmy2QKNzkuLMujWG0rPmnRhwZBvDzbbp9sN5kLAni8XpQy1n9AG1I6At51edPnBRlf1G4sbduP2OiCWoUYY2poP2c7OCq1NfQ+6bAWcB4D+A3IGnU0XBp01u6blh5qLi27od8b0Mdb+3xxosp9PoJvwch3Anmvr6Vi/BtRegprA9tX6HJu/dDe+vbhp7wf0RincoGHtDKAZcoaal/2gtbPGHKG+dnHZDjgPSA86TBi20dmEYV/T9FMKTx00q3j0ZSOsfb5ZYrCO0UyYLNbssqbuhBpfS/jyoLvl7f9r3f/O+vajx0kmDDDDLftIg7ZmjZ3VYNM4NJcrgMvjgTbHuAA5NDprdQDO0Mu++Yf9xo2dXDB4Kmn1c/uZCibShWkBPi+CR+gy1ZSRgcbmJzxJQ0t8riafaxdp6883uWo+Xtm0r4LGDG0MeAFzOB/prLFhguQE2DQOzeUa4PK4WKsDdD4Ath54TaNTvJbWz2wr+FHfsRMnWErPG2iyndvfVHAGwW7BBSqA7/jX0QwLL1kXrYAYjg1f+LhMBNC4UCSoPfSmqL21Pufn5Z6GLS83V+xq8jphcjDUAJoPBpzTWFuzxu6ongrkkuM5yqUxyWPB+Bh0va0ua3eGnOPYNw21FRX+oHDcV06zlpxdQvtfCg2mEYVGy1CrMNpZw7Mvwy93AmG9oBlafT6GGPYzQGbfLfyOdr/nSHvAd5B28x2scp/Y+Wr7vu1HnG24qwhIWROzz2DD5zj4DLRsX0fqDmXPbqeXe3aPJnrvGXT2WavLpgyDrfflvNoP5eLiYYMmWctGDjEVj+hrtowsMliG01cayugppEK6k2qnbWCFlNGMxhh81vRsXkAbgywizUuvWWinW+QOT8DX7vL76tsCnkPNXs+Bal/rwR3u+gPrWg/DhmYoZe0rwxsuLOdl84P96BLLgdR8Apynq4O5DqWKMOAFtLIPwBlqhp3P9Xk14DvrCKmbzB3zSGtx0RBjob2fuaCoj8GKHZGiJeBub/K62qr97Y4D7tY2MisAZofyPukzzPBZ68o+wgw0Q4xzOQ+X1ddN2fLD5SPg8syGAEkJMqx6kGXA9WlcDvUhzPWiLTmMc9kxeIjjMGtXBlwPLEPLUPM552ef62NfbjdvwhC+ch0SYFkwkPD14PI5QwzokY99jg9XF1rheEAHx/DpzwEp4gCx7DO87CNNDuMcBxz7HWd5+j8LPE+HH3XYLBv40Q4Zan0+NCDXIzfIAMo+wvqDYdfHy+eoF+fK6STAwtdFq9MIEmB5McjIFi1OTo9QZQiYDCnDizLR4iLVqeI7JcCTowTSOwno5ag/R+36OAZXblkfpz+X86pwDBL4fwN/IZwMBwH5AAAAAElFTkSuQmCC',yellow:'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAAC4CAYAAAChOH1KAAAlaElEQVR4Ae2dCZhUxbXHTy+zL8ywDDsSVhEVJQoCkoSIIr4kvohLxO2ZfC8an0mQrCQm+uJ7qHkv5hE/xSQaNokBogkxigaUuLDIpsiOMA4MOwyz7zPd7/yLOZfqnu7p7umeXut83+2qW7du3apTv3v63Lr31rWRkUhowOZViPc6Nutpbq/8WPVO8173sYtJ6kgDusI7yme2nYdTdIZQj0NH1vrgwYNtc+bMyb344otzCgsL87KysnLT0tKym5ub6+rr62vKy8urd+7cWfv444/XlJSUAGSB2VfoKw3HM9KBBqQzOsiSspsEXgmhCMTtDGT2TTfdNDwvL28kQzvC6XSOcDgcQ2w2Wzfenme323M5nuN2uwPql/O5OF+dy+Wq4X2rOV7Z2tpa3NLSsp9Pgv3V1dX7XnnllU/4RKnj7S5edNARl4WjRnQNBFS+njnJ4wKxHtp37NgxpG/fvlPY6l7CAI/kZTgv/YMBN1L64hPAzcAf5eUTXvax9d9x/PjxtZdcckkxH0OAF8gljNThE7acVIdbQLZzDyJuX7du3YChQ4dOycnJ+QJb5M+zFR4Qr73L1v4IW/h3amtr/3nw4MG1kyZNOsJ1FdglBOwpKakItwfQTz31VN4dd9wxnd2LL7J1/hzDPCxRSWDYD7BVf5fdmbeXLl26avbs2dXcFsCdkqCnCtwCNEL7gAEDnBs2bPh8QUHBnenp6TdyWi4vySY1TU1NKysqKl6cMGHCO0eOHGnhBuqQJ71FT3a4FczcqQgdu3btGtWvX787MzMzv8YWun+y0eyvPWzRjzY0NPzp2LFjL44ePXoP52vlRbfo/nZN6PRkhdvyoX/7299245GNe9iHvoMvBC9P6N6KQOX5gvRD9tGX8gjMovvuu6+SixRrjjCpJJngRluwAGz78uXLu0+dOvXbDPW3eL2QFyOeGihnyOevWbPm6VtvvfUsbwLcAnpSuCzJALcH1KtXr+4zduzYWbm5uf/OnZWMvrQnouGv1bD8ftu2bf937bXXnmgDPCkgT3S4lZXmDrGvX79+0EUXXTSbRz3u5fXM8Ps85Upo4FGWBbt3735q4sSJh7n1YskRJqQkKtyoN8B2vPzyyz2uueaaX2RnZ9/NN1bSE7IX4qjSfMOoqa6ubvFbb7318xkzZpRx1XDxKZY8jmoauCqJBjfqi8WB4bzNmzf/W/fu3R/j9R6Bm5o6OWyuErK1fMiKwuhfJ8VNZWUVtT/77MTHFrYNI8oIS8L444kEt7ggju3bt182bNiweXwHcXwnuy5pdwPYzrofMdiR8SaaW9wffFLc+N3RE/7xEStNrHhkCu/iXkgEuFFHBfb8+fMLb7vttkf4YvGb7II4u1g3CVm8vXEpORtfiGzdbbaWmpqW3724ou4/v/WDj8u5cMAd965KvMMt1tp56NCh24qKip7gmy99IttzyVWao3ERYekKcbnpxKmy5h/3HbVpGZcvdzzj1ooDnngUnHQOLI8++mhBZWXlC3369FlowI5tV9lt1KdPz7SFdaUTXnj00REF0kccxqWRjMdKWWBv2rTpUn7YfwnfWRwZ225NnKN3peXWtdDion0799TedfkXPvqY0+GLywWnni2m8Xiz3KgPLLbz6NGj3xgzZsw7BuyY8uH34E47jRxzUc47J/eN/wb6ixf0W1zxFC+VEWvtnDt3biE/ybagZ8+ez7CysngxEqcasNkoq6i785m6w1ctmDt3GB5xEMjjwiOIh0qgDjjJMG49hp9ae5Gt9fA47c+4r1a03BJvRbS43J/s3FN3R5ubIhebMR0Tj7XlFoudtm/fvmsuvfTSNQZsb2wSY91ptw0fMzrnrYObr7iGa5zGC9yUmBrPWMItYGOY7xZ+W/wvrIw8XowkqAa4Q/M+MzjjL0d2jL+FmxBzFyVWcOO4OLPT+AH6b/ELuAs5bp4LYSUkujDg6f37Ohee3ncVHjUWCx4TzmJxUAE7/eTJk4/06NHjKb7bGIt6JDpH8Vt/N9l7dnc8dfaTcY9wJWG0YjKSEm2oFNh80ZhRVlb2NL/D+KP47SFTs3A1UFiQ9qOakglPjx7dKyMWgEcTbgX2+PHjs3j6hCX8fMjXw1We2T/+NZCTY//65jeGLRk/vjuGdaNqwaN1NavA5salnz179jl+9evO+O+WxKxhrIYCA2mrtq71xdwLNt7P+Zp4kacLA+0W1vZoWG4BO4197McM2GH1V8LunJPtuLP84FWPcQOidpHZ1XCjfCxppaWl32Ef+6GE7R1T8bA1UJDveOjUnvHfAQ+8CBthl+uvgK6EGy6PAru4uPj23r17z/VXCZOeOhro1cs5t3T7uNu5xQJ4l7nGXQU3KqzGsfmF0+v79+8/P5oTR6YOKgnYUjfZ+vdLm7/vg7HXtwEOTroE8K6AWyy2kx9ZHTdkyJAlbY1IwJ4wVe4KDTAgacMHZy3Z9vbl47h83MkEhxEHvCvgRpnOefPmFfF49lLMU83rRowGPDRgs1POpRdlLZ33xJAi3iCAe+QJdyXSZ4sCmyuVwY+truA5RKaFW0Gzf2gaiNehQH+tqKt3vZkzaAOeRWnkRZ4m9Jc9pPRIWm6cKMrPPnz48HcN2CH1Q8pmzs6yTzux+8rvsgJkiDBiBjdScAvY8LOv4hd58UyBEaOBoDRQ1DPtEfa/r+LMEX2SMFJwoxzHE0880Yv97AXsZ6OSRowGgtIAeLl0VNaCJx4d0ot3wL9/RLiMxF8AKgKY4WcvY3dkOseNxEgDieZz62qqq29dlTNo422cFhH/O9wzBCeHgptfOHjAgK13lYmHqoHsLMf0ozvHPcD7yehJWMY3HLgtsBcvXnwB34F8ONTGmPxGA94a6FuU9vDiZy6+gNPDBjxcuNXoyA033PA4+01mLmzvnjLrIWuA36jP/dcb8h7nHcMePeks3JbV3rp167X8sVF8NMmI0UBENJCXa7/xo3fGXsuFhWW9Ows39nNed911uRdeeOEvI9IiU4jRgKaBi0Zk/vK663rDGxDAta3BRTsDt2W1n3/++Vk8jfDQ4A5lchkNBK+BNKdt6OJfD5rFewjcIV9chgq3BTZ/UGkY36wxz2cH318mZ4ga4Js7Dy1fMHpYZwHvDNzqIpI/1fEkX0Sab8+E2GEme/AasNltmdO/kP8k79Gpi8tQ4Las9rvvvjuBXxe7LvhqmpxGA53TQE6O7bp1r4+RW/PgNWj3JFS4ldXmW+zfY6vdudqavYwGQtAAOONb89/nXUK23sHCbVnt119//TKelmFqCPUzWY0GwtJAbq596j9eueQyLiSki8tQ4IbVdl555ZWzOTRmO6zuMjuHpgGbbfxlOeAOcIPDoPgLBm7LavM3H0fl5+d/KbSKmdxGA+FrID/P/qWXXxw1iksK2noHC7ey2pMnT8bQXzD7hN8aU4LRgIcGbPYpV3UDf0Fb70CgitV2LFq0aAhb7RkexzMrRgNR1ADPezJj0fyLhvAhYWzBbofuSbBwO6dOnfogX7miUCNGAzHRAA+cOP5lSt6DfPCgXJNg4HawO5LDs0XdFJMWmYMaDWgaKChw3DR5ck/MqBDwwrIjuMUlwTQN0/lzHvjuoBGjgZhqwG6ngmfnDsTbXgGtd0dwY5u6kBwwYMCt5qZNTPvUHLxNA+BwYP/0W3lVLiz9MuxvA6w2FsecOXN68fPaX2wr2wRGAzHXQF6O44tzZlsvEwur7erVEdzY5rz77rtv5s9S49anEaOBuNCA3W5L+/rt3W/mynTomnQEt3JJ+JvrmA3IiNFAXGmgX1FawC+m+YJbzLxjyZIlI/mNdtzTN2I0EFcayMqyXfbS7y4cyZWSURNw6yH+4MYOjokTJ95iLiQ99BX3K271Tx331Qy7guBy0vg8WG/FKoft4IbP4i3IpPztwsLCz3tvNOvxrYEW23iqKPs9VxKfnUlc4fncPSrvtUpYb2lygU+/frc33JZLcs899xSwS3KpxxFSdMVWv4dsle+Qzd0c9xqAGevm/AJVVBSTy+ViCDwhQQN8JLVLc1P7/bz39VXOuTye+/rK5zvNcz+U1ZG4XO5Lb5teWbBs1QHMUCXsWoV4w42yYLUd99133yQ2/dBVSoutbhc5997MmkscS4hOK2hxU1mlb7h9daj3f7r3uq99Yp3GJ67jnqktk5atopVcF3Dr0UnecKNNCu5+/fpNNv42m4PyN8jWdDTW/Rjy8TF22yPLTWeriFyWLQu5mLjeAbD26eaezMHfeQG3SLJaiwRdsK7g5icAJ+kbUjVuc+OziYkpPD0Cdc/nDk0EM9xJFedn2ybyrvizEnatknS4oQIsjlmzZvXMzs6+0MplIgmrAQHcwT0tHZxMYXaGe9QDX03vCW55kaap/vIFt33mzJlXt2VUmcxPYmsAgBfmsWkD4Nz9SbbYvnq1G7yC5Q7hRgYH35W82vjbiQ20d+11wL23JfI6OO1TSIBbXBMArsTbciu4eU4Sc1dSNJREoQKcZ9+DBY+U4F8AIv8GEleJUfrJyiTw2g5uGS0R2hXcPL79mSjVyxwmyhpwwkXJdVNFTeRGUQRwNEXiEkajedkZBF4FblUN/nHr5zDi9p/85Cd92NSzh2YkWTUAwAtgwcWkJXhD+UTKm3VLWh9uhmJYmiNwo5lY7Pw8yXDZaMLk1YAArkZRuOdhaRN5mXSxDdyCZ2FZrUgPKrj55s1QczEpKknuEIB347cRYcGFiEQMUf++3V1DubcEbtVx7Sw3v3UzLLm71LRO14AADqudyJKbaQO3ArdqjQ434naeB3CIsdyJ3M2h110Aj+QoSui16Pwe4DUnm4ZwCYphDhXcGC2Rcxahg0dKkMlIimkAgOdnu6mqzvdTg/Gujqx0G7jFiInFM0iHIME+atSo9MzMzAEqxfyknAbOAc4gMBWJdnGZke4eMOozmengmBcFuA63bdq0aYV4jDDletU02NIAAM/LOge3lZgYEceUMa2FXFWAbcEtKzaen4RHP42kugYE8M6Mg8uFqVh+6FLSfOlVtnU2v+yHcFCRG/xaPOt3KG29evUyN2989UAKpgHwXH4evKZee0A6SD0IsMgucQl9FaFvk7iEgfLr27vnucGvwK38E9lu42FAY7lFGyYkZcGz2YkFLgkg+TkOsdyqtjJaomjnZ7gN3AnQidGsosOhWXDrHZdo1iC4YwHgzEzfbglKsBm4g1NkquUSwGsb4neYEG5MTjp5WG6P0RIeBswxN3BSDd3g2gvAc/irox35wsGV1DW5UK/0DDemNlZeCI5ijQkikT91jY1GjAZ8asAX4AI7Qj3us4BOJOpl6nFfRaU77AI3Ntv00RK+gDBw+1KaSTuvgXOAu6mOZwqRuUcEOuSSuITn9+x8TC9L4hLqpTqdynIjCdbbc+6t1tbWFiQaMRroSAMAnF/MpXoA3lHGKG9rddk8+BWfG9WwNTU11fqaoSjKdTSHSwANAPCsjDYTGQf1xb9IYzPVclWU1UaVdLipoaEBG40YDQSlAR1wuYrzDlGQRZuPUmWb937+1r3L0/fnuQM9+NXhdhu4fWjfJHWoAQtwocwrtyQHC6vX7u1WvctDBkmrb7YBbstTErhVQl1dHb82asRoIDQNAHA8j+frIi+0ksLLzRe5wq/iGaMlQrq7oqLCw6yHdyizdypp4JwFd1MDzz4noyjRbD9OrMpaD8vtlqFAAO4uLy8X8qNZL3OsJNEAf6uGLfg5wKPdJMBdXuMCv4plHF/cElWX06dPV5vREqUK89NJDZwDPPouCv4tTpVTtV5tgVvRvnv37hoDt64eE++MBgB4Bs+hDGvqvaA8pIlIXPIhXdIkjx7KNskvIa4q9xyyA24Py40ViHvlypXVPNbNMzobMRoITwMW4F7FeMOJzZKmxwVa71DPg7hIczNVvba+SdwSJFszTgntbh4xKTHWW1RmwnA0AMDTYcG5kK5ccAXLIyUlfBiLY9Rb3BLEscFVW1tbghUjRgOR0IAFuOaKRKJc7zJqG2wlnObiRTwRBbfQjg0uHg781Fhu1oSRiGkAgKfxuJy3ixGpdVS0qtb9KQeKYQ4V02K5BXA3j5gUI7MRo4FIakAAj2SZelmnKuggr1scYxvg1hNaecTkoLHcUI2RSGtAAI+UxZZyUM89h1wwyviamcWzWG5sVyZ94cKFn/L3CxE3YjQQcQ0AcCfPjAMwIyVMq2vhasenXJ5iWMoVuIV2165duxp4xOSYZDCh0UCkNaADLtY3nLC+yXZs14EmfsPTuqAEz9ZoiQU3p7XW1NQY1wTaMdJlGsC7urDg4Qpc6JoGN/xtuCSw3MKyB9xi0l0nTpzYbPzucNVu9g+kAQE8lDFwlOnh0TDKJ8tsmznZ4pfjHpYb+yABGVq3bNmywbjdUImRrtYAAHeE4IML2HJC4OvIW/e3buB66pZbVbudz41MP/3pT3fziwvmNnxX96wpX2kAgHd2ZtnGFqr68QuO3eCWF59uCQ5iWe7q6uqms2fPbjWuCdRiJBoaEMBDORb4LKugLYwrvmGuw62KEcuNFQtujrccO3bsAwO30pH5iZIGBPBgR05QrWNltk0c4K33gHADcGRq2bBhw3rjd7MmjERVAwAccAcj8LfX7Wxdz3kFbvCLRYleDOIYnOEX9tWca93OnDmznmd+7aFypuiP48jjhMVIdDUQjNdQVecuK7iheSLXrJIXPO7KM6ko46wAl9fMOE0Rj0Q1YsJhC8O9mT+Vfb09Ub8EhFaFKc2taVReYRmDMEszu4eigY4Ad7HZPnyKMAQoVtvjYhLH0eHGusCNHVr27du3euDAgRGF21axm2zH1pLN3Yzjxb3YG89Qel02PzIM3bUXf9jjtSdf4i8def3s4veFW39l+StHHaODjaGW5zd/R8fw08pQy2ppddOuva2rGVPFKrdN4EYzlehuCRKwDuB5Pk/KGzlyZM/169e/z5/vi8gXFwC28x9fZrDh1ieOVNW7cBcscSqcAjWtbXRXf/l/K6/ed6rpDDcXr5fh9jtAtzrKl+XGRtDXzJa77siRI6tHjBhxUyRcE9vhV8lWe4SLTizJR3XZLtRiwMlIzDWAx/qOn6HV+04Rf1iQ4AKAV3Brgc1x6/Y74iIw71hwFjTxqMlKniBTtoUV2lyJS0c+f+GLJzc3EgcaYI+EthyilVwVAAVOhVmP2unj3LJBLLfyZe6///5NVVVVRzty7mXHZA8BeC6PJcF3M0tsdADbzF94OPq9P5OMb4NTsdweCPqDWwCHyW8uKSl5zcB9Tm95fDWSg8FSIzHRAC48SyvoNT64YpNDARvMeogvuJEBZh474axo5ikf/trM784bOacBATzYO2kmH1t5/quLxNLCCK/aSX8Fl7yI1Qav7cQf3DgLLL/7ySefLC4rK9turPd5/QHwbOODn1dIFGKw2uW1tP3/3qZiPpzub7ez2qhOMHDj7GjasWPHSy1qSBG7GYEGlAVnwI3/HR0dtLK53XWCXmLVC9hgE0Y4JLg5v9oBO8L8N82cOfM1nvah1FhvqOa85BoLfl4ZXRiD1a6sp9L7lil/G3CDS79goyr+LDe24Wyw/G5+9axh+/btf4jUsCAOkCwigEfCpzRl+PbN8ZDUzhP0h5oadbNG97d9Wm2wFQhuAVxZ729+85t/raysPGmsd/vTEoBn8dRhRiKvAWW1G+jk7OXqQlKstt9REqlBR3AjD8w+CgHcjUePHq3duXPnImO9WRs+xFhw31Y33H8jWO29J2jR0Qr1QSc8+QcewSX49CuB4IblRgHqopLDxm9/+9sr+E2dMmO9fesUY+DGgvvWTWdSYbVrmqjsxytpBfjjRS4mO/S3caxAcCOPWG8FOD9vUrVnz54XjfWGanyLAG5GUcIfRcFzJPtP0ov7jhPe6RWwA1pt9EwwcIv1Vn4379M4Z86cl9h6VxrrDRX6FgW4GQf3rZwgU2G1qxup8ud/V8N/YrXBYUCrjUMEAzfyifVWvvfGjRvLN2/e/LS5awnV+Bfc5MnCOHiE7s6lWjktTN22Unp6awmVs5aD9rWlR4KF29t6N8yYMWMFT96z07xnKar0HQLwTDOK4ls5HaTCHTlVTTvvWqR8bTyrLaMkQVltFB0s3MjrYb358yL1y5Ytm8vzm7iMewL1+BcB3PjgwfnguMPC85G4Xt5Gc3nShnrWbMhWG70RCtztrPfDDz/88f79+/9sLi79gy1bBHBZN6F/DeA2+4Ez9OdfvE4fc65OWW2UHgrcyC/WG38ROJsavv/97/+Gb8ufNdYb6ulY4H/DRUk13zmU9kKDlY109sd/pd9wFGDLhWRQIyTYXyRUuGG9cRAMC+Kg9e+9914ZX2D+mt0UXjUSSAMAPMP75b5AO6XQ9iama0sJ/XrjQSrjZotLAt7AHfgLWkKFGwUL4GrkhNfr+eJyJd+93Gbck+D0LoCHYtFSIS/uRJ6oom23v6BeIROwwVnIYKMnOgs33BPrriXHG+bNm/cIv45WY0ZPoNbAIoAHznk+By5IIXJhKnGV2JYuaXpe2R4o1PfR4/720/PocX/5O0rH6EhlA9U88096hPPp7gg4A28hWW0cqzNwYz/xvS3r/dxzzx1cvXr1L3j0hOfZCLkeKDPlBP43XBSAEcwCBQlEelz21dP0uGwPFOr76HF/++l59Li//P7S20ZHaO0++sXv31cfbvK22uAtZOks3DgQDijWG2da/V133fXm3r17l5ubO1BPcALA01PcB29mp4OnaVj+jcX0JmsNYMsIiVjt4JTplSscuGGeAbhYb1So7pZbbvnV8ePH9xr/20vTHaxaFpxNWyr41nob4WefrKG9dy6kX4EfXsQlAVfgq9NuQAS+SsKHPy829rt5gquWDydMmPCVjIyMdMzaKWI/8S5hMdJeA+r7MNyN6GwR0Zy/v/NIp+O4ckw9LsfR0/S4bA81xAx1VQ1U+8s19K1/7qVjXGYtL7Dc8oCUpg0cMTQJx3LjSDi4t3tSN3/+fPjfjxn/O7TOyGAXJQ2f0ODdsEAkPLfWtb9yLH/HD7Q9lNrhsqyBnY639tJjv39X+dlitQXssKw26hIu3ChDABf3BGdeHfvfq/jR2BVm/BsqCl4E8OD3SMycGM/ec4JW3LuYVnELADa4wb2TsN0RLkNJJOBGQTjLMBbpAfj06dOfLC4uft8ADhUFLwAcF5m6b5pMcVxAlpyl9298jp5krXiDDY7AU9gSKbhREVhwffSkjt+3rLn55pt/WFpa+rEZQQmtrwA3XJRkE4B9pJw+/trz9MPKOjVhvLc7Ao4iIpGGW/xv/L2o0ZMDBw5U8HyDD/HjscUteEDXSNAaEMCTxWrjgaiT1VT84Ev00IFTVMGKELDBiwz7RQzurrYNqqKHDh1q4tvzGyZfmHVNbsUHufz5byNBasDRZn7kvpiuOokj9LXgEJJHj/vKK/kk7Ex+7KOLlIUQdyBP19CJOa/Q/W/soSOchJERwB1RP5vLs6Qr4PZ55vHFZb2r1b1lXNHRa/muXKYB3OqDgBFfgOvg+CtAz6PHuyo/jqEvOA7WYbF5GrSKX71NDyzaQAc4SYb88O+O67SI+dlcliVdATcKB+CyyMFsH+w6WsnTAO+8pD9dx4CnGcBFNYFDAVwfBw+8V+xzAGyeKar+D+vpu798k7ZzjWCtxR3Rh/0iXtmugluvqECO0MbPD5zpmUs7RvamKQx4Rgp/S0rXUVBxAVwpkk1ivPviAPtsPVUv2Uizfvaq+jgToBarDbBhsdGcLpFowo0GqIas3kOnud0fjBlAk/nWc450Wpe0MMkKFV3BB9ddgHiLtzC27GOfmvcWPTj3DfqIuwFQY4ErolvshIab22KdnWiIasyGYqrkZwreu/ICmsivYBVIpyGzkY41IP92cpHZce7ob23icY/jVXToZ3+jB55fR59wDfCNSN1iR3xkxFcro2G55bhyhlqAf3yEanccp7WfG05j+XszRQAcf7VGAmsgHgHHyQawedqzXQ8up/949WNrVEQHO2J3IANpKZpwS10EbhV+eoYaV++lt68dRaPyM2mAAVzUFDgUwJEz1v436oBb6p+W0cZbX6CHNn1KpzkJUMPP1h+GYo/U+ifnaNdJtOHWwZZGus/UUMufPqS114+mfvkZNNxpLHjQPS6Ax9JFwRh2Hdtjnqzy9WnP0k9Ky9QNmpiCDQVGG27pNB1yxF31jeT63Xu07ooLqLx3N7oy3UFO6TjZyYS+NaAPqUbbgquhvkZq5FGwX13/ND3L/YgPnsLH9jXch76OmsQKbjRQQd0WWrAv30r7bXbaOLIPXZHppG7GTQmOBQ/AeZeuHj1B7/HEOXSikg4/vZZmzV5Ba/mwsNbiX8uoiNygQR9HVWIJtzQUjYaLYrkp6w5QOfvhb04aSn3YDx9m3BRRVcehAN7VFCk3hAfz9p6kN29fQD9Y+REd4poJ2GKx9TuPXV0ln4qJNdxotPeiQD9dTc3sprw39gI60zufxsFNkb9cny0xiUoDMtrUFTTBr1e30huo8e399D/TfkPPcj9V8oF1/1qeFRGLHbOeiTXcaLj0g1hvPXSv2EqfuG20bngRXc43fAod/H8rHRgzrcX5gS39tOlKjEI4IcDGmzPHKql43ts0i7/g+y6rQe44yoiIgC19GFNNwTWLF0FdcLJh4cf1Cd/p5Q9SqyW7ex7lLL2X7vjsILq3WyZ/vIBzWZ3ImYy01wDch3AFUOMZbJ5TpH7rYVrAs64uPVvtYan1N2hgrbGIwQr38GHtHw+WW28AlCKLnP0IW+ubyLX0A9pxqIzWXNib+vLk7oPlYtNArqvwfDwcvYgLUsu2eP9pemfOSvrBwyvpHe4HuCAyGgKwvZ/siwuwoYV4styojwieYsaCGT14dj1lxfl7YZYlz3j2drr6Xy6m2T3zqD+PqpAZNmTt+BGAiiVYgcWHC8L3H46+toOeenAZvc/7wuUAzAI01vVnRCLwP8ElRlDiFW40EXUTwAVyAG4tA3tR3oI76J4xA+mOvHTKgKtiIIfq2kswcANquCDVTdTIj0YsvXcpLSo9rcatYZ31RaDmU8Aa5Wp/0BinxDPcUA3qhwXuEwCHLw5LbgGO+MyraNCDk+nuEb1pOrsr6TyyYiBnxXiLP8ABNW6dswvStP8UrXrmPVr8x410mPfXgUYcUGOID1CLbx3CfwLvFUWJd7hFFagnrLhALq4KLjoF9IyvXkb9Zk+lmSOK6Cv8XfZMfl7cQC4a9BECatyIqW6gBob6b0+toT/+5SM1OQ5cDgEbcd0FAdRwQeIWaq6bkkSBG5VFXQVyWHFxVQC4QK7iU4ZTr4e/RLeN7kdfzcugXAU57xnOBRYfIykE1htv8yioG6lm1zH6y3/9nZat/UQ96CQgA2yJ+3JB4h5sdFYiwS1wCeDe/jjAFosOa57+2c9Q4X9/mW4Z3Zdm8J3OQszJJ3c7Uwl0AI0Fkw80sFPBU5iV7zpOL//0VVqx9VP1pTAALEAjrltq8asTwlpz3S1JRLil8gI5XBUs8MdlfFwgV8AX5lHW4zfSxCsG0vUDu9NEfnY8Xax5Ml+Awu0QK13bRE2lZ2n9llJ6g4f11pdXW4+h6hYacfjUcus8YVwQrnM7SWS40RjUXyAXn1wgB+ACucTTxw2mbj+cRlNH9aZp/QroYobcpmZ3QkFcUiJbdLHQ8Bnw0gC7Hu5jFbRzDz8Dwi/nrtlUom6VwzLLIhYa6zrUsNJiqRPCBeH6tpNEh1sa5AtyfXQFcAN6gVydAHdNoAF3j6PpQ3rQlIIcGoxRFoCubg5x5niHXYcZz3wAaIx6VNRSSXEZrV28iVYt2UBHuCkCrkCNdT0O10OsdMJDzW1Rkixw6+0R0MVd0V0WuQgV0MXKO798CRV9bRxdMbQHje3TjS7n0Za+cF0wdq7DjgPFwroDZIgCmkPAjDHpttGO4/zo6YcHy2jbnzbRlld30CnOAmB1qAVoPR1Ay4IjyMLRxJdkg1vvEbQNroq4KwI7ABeovUNsQz7nzHHU78YxdMWQnjSWn0q8LDuNemIObVyQAnbrwpQzQ3Tg9fi5rYF/BV7klLgijX9wIQiYEeKtcn7r5czJKvqo+AxtW7mdtvxxkxq+E+urwytwSyh5BGgu0XI/AlcywXIkM9zSFWLJBXSEFsQcB+BYF+glriBvS7dPGU6FUy+iwcOKaFBRPg3qlkUD89NpIFv4fmzdnQAez1OLK6POLK91bBPLq0IGFxd8AjHSsN5mlVt4/PlYVROV8qQ2paeq6DDPr3d4zW4q4WE7fAsdYAJWAVbiANk7DpiRJjAjVIflMGkFfZAqgrbqC+AF6Ahl8QU20mS7vo86WXIzyfm1K6jfZQNpQEEm5fP0w1lZaZTNw47Z7L9ns4XPZl8+i61+NsOdwQA3svWtY9+4ni1xHfvJdTw8V1fPS2Mz1Vc0UNVHpXTkT1voWE2DB5AAFFCK1RVgBWR9Xc8j+wjMEnJRyS2pBLfekzrkiCtQOdThFaB9wS0nhYRShne5so5jIy4CwCACmncolhWQCpwIJS7wAmyJ+8rrXS5nTx3RFZ46rfZsqQCohwK7Hgr4HaXpZUgcR9PjWBfo9LikIRSQBWZ93V8a0vUyJI5jpKRA6UY8NSAgeoeAGmmBQu/9UDrSvAXwQQRCPRRQA4X6PhI/V6r59al0oxZPDQisSPUVlzQ9lLx6iLi3AEiIHgqk3qHk886rCjA/7TWADjESugZ0vUncO5RSJV3W9VBAlTRZ9w6xXdIkrwkDaKAjxQfY1WwOoIFQdGvADaDMzmz+f6SMYEX4z7hMAAAAAElFTkSuQmCC'};return{FaviconsByHue,};});'use strict';Polymer({is:'tr-ui-b-toolbar-button'});'use strict';tr.exportTo('tr.ui',function(){const Task=tr.b.Task;function FindController(brushingStateController){this.brushingStateController_=brushingStateController;this.filterHits_=[];this.currentHitIndex_=-1;this.activePromise_=Promise.resolve();this.activeTask_=undefined;}\nFindController.prototype={__proto__:Object.prototype,get model(){return this.brushingStateController_.model;},get brushingStateController(){return this.brushingStateController_;},enqueueOperation_(operation){let task;if(operation instanceof tr.b.Task){task=operation;}else{task=new tr.b.Task(operation,this);}\nif(this.activeTask_){this.activeTask_=this.activeTask_.enqueue(task);}else{this.activeTask_=task;this.activePromise_=Task.RunWhenIdle(this.activeTask_);this.activePromise_.then(function(){this.activePromise_=undefined;this.activeTask_=undefined;}.bind(this));}},startFiltering(filterText){const sc=this.brushingStateController_;if(!sc)return;this.enqueueOperation_(function(){this.filterHits_=[];this.currentHitIndex_=-1;}.bind(this));let stateFromString;try{stateFromString=sc.uiStateFromString(filterText);}catch(e){this.enqueueOperation_(function(){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=e.message;overlay.title='UI State Navigation Error';overlay.visible=true;});return this.activePromise_;}\nif(stateFromString!==undefined){this.enqueueOperation_(sc.navToPosition.bind(this,stateFromString,true));}else{if(filterText.length===0){this.enqueueOperation_(sc.findTextCleared.bind(sc));}else{const filter=new tr.c.FullTextFilter(filterText);const filterHitSet=new tr.model.EventSet();this.enqueueOperation_(sc.addAllEventsMatchingFilterToSelectionAsTask(filter,filterHitSet));this.enqueueOperation_(function(){this.filterHits_=filterHitSet.toArray();sc.findTextChangedTo(filterHitSet);}.bind(this));}}\nreturn this.activePromise_;},get filterHits(){return this.filterHits_;},get currentHitIndex(){return this.currentHitIndex_;},find_(dir){const firstHit=this.currentHitIndex_===-1;if(firstHit&&dir<0){this.currentHitIndex_=0;}\nconst N=this.filterHits.length;this.currentHitIndex_=(this.currentHitIndex_+dir+N)%N;if(!this.brushingStateController_)return;this.brushingStateController_.findFocusChangedTo(new tr.model.EventSet(this.filterHits[this.currentHitIndex]));},findNext(){this.find_(1);},findPrevious(){this.find_(-1);}};return{FindController,};});'use strict';tr.exportTo('tr.model',function(){function Annotation(){this.guid_=tr.b.GUID.allocateSimple();this.view_=undefined;}\nAnnotation.fromDictIfPossible=function(args){if(args.typeName===undefined){throw new Error('Missing typeName argument');}\nconst typeInfo=Annotation.findTypeInfoMatching(function(typeInfo){return typeInfo.metadata.typeName===args.typeName;});if(typeInfo===undefined)return undefined;return typeInfo.constructor.fromDict(args);};Annotation.fromDict=function(){throw new Error('Not implemented');};Annotation.prototype={get guid(){return this.guid_;},onRemove(){},toDict(){throw new Error('Not implemented');},getOrCreateView(viewport){if(!this.view_){this.view_=this.createView_(viewport);}\nreturn this.view_;},createView_(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(Annotation,options);Annotation.addEventListener('will-register',function(e){if(!e.typeInfo.constructor.hasOwnProperty('fromDict')){throw new Error('Must have fromDict method');}\nif(!e.typeInfo.metadata.typeName){throw new Error('Registered Annotations must provide typeName');}});return{Annotation,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function AnnotationView(viewport,annotation){}\nAnnotationView.prototype={draw(ctx){throw new Error('Not implemented');}};return{AnnotationView,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function XMarkerAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;}\nXMarkerAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,draw(ctx){const dt=this.viewport_.currentDisplayTransform;const viewX=dt.xWorldToView(this.annotation_.timestamp);ctx.beginPath();tr.ui.b.drawLine(ctx,viewX,0,viewX,ctx.canvas.height);ctx.strokeStyle=this.annotation_.strokeStyle;ctx.stroke();}};return{XMarkerAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function XMarkerAnnotation(timestamp){tr.model.Annotation.apply(this,arguments);this.timestamp=timestamp;this.strokeStyle='rgba(0, 0, 255, 0.5)';}\nXMarkerAnnotation.fromDict=function(dict){return new XMarkerAnnotation(dict.args.timestamp);};XMarkerAnnotation.prototype={__proto__:tr.model.Annotation.prototype,toDict(){return{typeName:'xmarker',args:{timestamp:this.timestamp}};},createView_(viewport){return new tr.ui.annotations.XMarkerAnnotationView(viewport,this);}};tr.model.Annotation.register(XMarkerAnnotation,{typeName:'xmarker'});return{XMarkerAnnotation,};});'use strict';tr.exportTo('tr.ui.b',function(){const MOUSE_SELECTOR_MODE={};MOUSE_SELECTOR_MODE.SELECTION=0x1;MOUSE_SELECTOR_MODE.PANSCAN=0x2;MOUSE_SELECTOR_MODE.ZOOM=0x4;MOUSE_SELECTOR_MODE.TIMING=0x8;MOUSE_SELECTOR_MODE.ROTATE=0x10;MOUSE_SELECTOR_MODE.ALL_MODES=0x1F;const MOUSE_SELECTOR_MODE_INFOS={};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.PANSCAN]={name:'PANSCAN',mode:MOUSE_SELECTOR_MODE.PANSCAN,title:'pan',eventNames:{enter:'enterpan',begin:'beginpan',update:'updatepan',end:'endpan',exit:'exitpan'},activeBackgroundPosition:'-30px -10px',defaultBackgroundPosition:'0 -10px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.SELECTION]={name:'SELECTION',mode:MOUSE_SELECTOR_MODE.SELECTION,title:'selection',eventNames:{enter:'enterselection',begin:'beginselection',update:'updateselection',end:'endselection',exit:'exitselection'},activeBackgroundPosition:'-30px -40px',defaultBackgroundPosition:'0 -40px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.ZOOM]={name:'ZOOM',mode:MOUSE_SELECTOR_MODE.ZOOM,title:'zoom',eventNames:{enter:'enterzoom',begin:'beginzoom',update:'updatezoom',end:'endzoom',exit:'exitzoom'},activeBackgroundPosition:'-30px -70px',defaultBackgroundPosition:'0 -70px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.TIMING]={name:'TIMING',mode:MOUSE_SELECTOR_MODE.TIMING,title:'timing',eventNames:{enter:'entertiming',begin:'begintiming',update:'updatetiming',end:'endtiming',exit:'exittiming'},activeBackgroundPosition:'-30px -100px',defaultBackgroundPosition:'0 -100px'};MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.ROTATE]={name:'ROTATE',mode:MOUSE_SELECTOR_MODE.ROTATE,title:'rotate',eventNames:{enter:'enterrotate',begin:'beginrotate',update:'updaterotate',end:'endrotate',exit:'exitrotate'},activeBackgroundPosition:'-30px -130px',defaultBackgroundPosition:'0 -130px'};return{MOUSE_SELECTOR_MODE_INFOS,MOUSE_SELECTOR_MODE,};});'use strict';Polymer({is:'tr-ui-b-mouse-mode-icon',properties:{modeName:{type:String,reflectToAttribute:true,observer:'modeNameChanged'},},created(){this.active_=false;this.acceleratorKey_=undefined;},ready(){this.updateContents_();},get mode(){return tr.ui.b.MOUSE_SELECTOR_MODE[this.modeName];},set mode(mode){const modeInfo=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS[mode];if(modeInfo===undefined){throw new Error('Unknown mode');}\nthis.modeName=modeInfo.name;},modeNameChanged(){this.updateContents_();},get active(){return this.active_;},set active(active){this.active_=!!active;if(this.active_){Polymer.dom(this).classList.add('active');}else{Polymer.dom(this).classList.remove('active');}\nthis.updateContents_();},get acceleratorKey(){return this.acceleratorKey_;},set acceleratorKey(acceleratorKey){this.acceleratorKey_=acceleratorKey;this.updateContents_();},updateContents_(){if(this.modeName===undefined)return;const mode=this.mode;if(mode===undefined){throw new Error('Invalid mode');}\nconst modeInfo=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS[mode];if(!modeInfo){throw new Error('Invalid mode');}\nlet title=modeInfo.title;if(this.acceleratorKey_){title=title+' ('+this.acceleratorKey_+')';}\nthis.title=title;let bp;if(this.active_){bp=modeInfo.activeBackgroundPosition;}else{bp=modeInfo.defaultBackgroundPosition;}\nthis.style.backgroundPosition=bp;}});'use strict';tr.exportTo('tr.ui.b',function(){const MOUSE_SELECTOR_MODE=tr.ui.b.MOUSE_SELECTOR_MODE;const MOUSE_SELECTOR_MODE_INFOS=tr.ui.b.MOUSE_SELECTOR_MODE_INFOS;const MIN_MOUSE_SELECTION_DISTANCE=4;const MODIFIER={SHIFT:0x1,SPACE:0x2,CMD_OR_CTRL:0x4};function isCmdOrCtrlPressed(event){if(tr.isMac)return event.metaKey;return event.ctrlKey;}\nPolymer({is:'tr-ui-b-mouse-mode-selector',created(){this.supportedModeMask_=MOUSE_SELECTOR_MODE.ALL_MODES;this.initialRelativeMouseDownPos_={x:0,y:0};this.defaultMode_=MOUSE_SELECTOR_MODE.PANSCAN;this.settingsKey_=undefined;this.mousePos_={x:0,y:0};this.mouseDownPos_={x:0,y:0};this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.onKeyDown_=this.onKeyDown_.bind(this);this.onKeyUp_=this.onKeyUp_.bind(this);this.mode_=undefined;this.modeToKeyCodeMap_={};this.modifierToModeMap_={};this.targetElement_=undefined;this.modeBeforeAlternativeModeActivated_=null;this.isInteracting_=false;this.isClick_=false;},ready(){this.buttonsEl_=Polymer.dom(this.root).querySelector('.buttons');this.dragHandleEl_=Polymer.dom(this.root).querySelector('.drag-handle');this.supportedModeMask=MOUSE_SELECTOR_MODE.ALL_MODES;this.dragHandleEl_.addEventListener('mousedown',this.onDragHandleMouseDown_.bind(this));this.buttonsEl_.addEventListener('mouseup',this.onButtonMouseUp_);this.buttonsEl_.addEventListener('mousedown',this.onButtonMouseDown_);this.buttonsEl_.addEventListener('click',this.onButtonPress_.bind(this));},attached(){document.addEventListener('keydown',this.onKeyDown_);document.addEventListener('keyup',this.onKeyUp_);},detached(){document.removeEventListener('keydown',this.onKeyDown_);document.removeEventListener('keyup',this.onKeyUp_);},get targetElement(){return this.targetElement_;},set targetElement(target){if(this.targetElement_){this.targetElement_.removeEventListener('mousedown',this.onMouseDown_);}\nthis.targetElement_=target;if(this.targetElement_){this.targetElement_.addEventListener('mousedown',this.onMouseDown_);}},get defaultMode(){return this.defaultMode_;},set defaultMode(defaultMode){this.defaultMode_=defaultMode;},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){this.settingsKey_=settingsKey;if(!this.settingsKey_)return;let mode=tr.b.Settings.get(this.settingsKey_+'.mode',undefined);if(MOUSE_SELECTOR_MODE_INFOS[mode]===undefined){mode=undefined;}\nif((mode&this.supportedModeMask_)===0){mode=undefined;}\nif(!mode)mode=this.defaultMode_;this.mode=mode;const pos=tr.b.Settings.get(this.settingsKey_+'.pos',undefined);if(pos)this.pos=pos;},get supportedModeMask(){return this.supportedModeMask_;},set supportedModeMask(supportedModeMask){if(this.mode&&(supportedModeMask&this.mode)===0){throw new Error('supportedModeMask must include current mode.');}\nfunction createButtonForMode(mode){return button;}\nthis.supportedModeMask_=supportedModeMask;Polymer.dom(this.buttonsEl_).textContent='';for(const modeName in MOUSE_SELECTOR_MODE){if(modeName==='ALL_MODES')continue;const mode=MOUSE_SELECTOR_MODE[modeName];if((this.supportedModeMask_&mode)===0)continue;const button=document.createElement('tr-ui-b-mouse-mode-icon');button.mode=mode;Polymer.dom(button).classList.add('tool-button');Polymer.dom(this.buttonsEl_).appendChild(button);}},getButtonForMode_(mode){for(let i=0;i<this.buttonsEl_.children.length;i++){const buttonEl=this.buttonsEl_.children[i];if(buttonEl.mode===mode){return buttonEl;}}\nreturn undefined;},get mode(){return this.currentMode_;},set mode(newMode){if(newMode!==undefined){if(typeof newMode!=='number'){throw new Error('Mode must be a number');}\nif((newMode&this.supportedModeMask_)===0){throw new Error('Cannot switch to this mode, it is not supported');}\nif(MOUSE_SELECTOR_MODE_INFOS[newMode]===undefined){throw new Error('Unrecognized mode');}}\nlet modeInfo;if(this.currentMode_===newMode)return;if(this.currentMode_){const buttonEl=this.getButtonForMode_(this.currentMode_);if(buttonEl)buttonEl.active=false;if(this.isInteracting_){const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.end);this.dispatchEvent(mouseEvent);}\nmodeInfo=MOUSE_SELECTOR_MODE_INFOS[this.currentMode_];tr.b.dispatchSimpleEvent(this,modeInfo.eventNames.exit,true);}\nthis.currentMode_=newMode;if(this.currentMode_){const buttonEl=this.getButtonForMode_(this.currentMode_);if(buttonEl)buttonEl.active=true;this.mouseDownPos_.x=this.mousePos_.x;this.mouseDownPos_.y=this.mousePos_.y;modeInfo=MOUSE_SELECTOR_MODE_INFOS[this.currentMode_];if(!this.isInAlternativeMode_){tr.b.dispatchSimpleEvent(this,modeInfo.eventNames.enter,true);}\nif(this.isInteracting_){const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.begin);this.dispatchEvent(mouseEvent);}}\nif(this.settingsKey_&&!this.isInAlternativeMode_){tr.b.Settings.set(this.settingsKey_+'.mode',this.mode);}},setKeyCodeForMode(mode,keyCode){if((mode&this.supportedModeMask_)===0){throw new Error('Mode not supported');}\nthis.modeToKeyCodeMap_[mode]=keyCode;if(!this.buttonsEl_)return;const buttonEl=this.getButtonForMode_(mode);if(buttonEl){buttonEl.acceleratorKey=String.fromCharCode(keyCode);}},setCurrentMousePosFromEvent_(e){this.mousePos_.x=e.clientX;this.mousePos_.y=e.clientY;},createEvent_(eventName,sourceEvent){const event=new tr.b.Event(eventName,true);event.clientX=this.mousePos_.x;event.clientY=this.mousePos_.y;event.deltaX=this.mousePos_.x-this.mouseDownPos_.x;event.deltaY=this.mousePos_.y-this.mouseDownPos_.y;event.mouseDownX=this.mouseDownPos_.x;event.mouseDownY=this.mouseDownPos_.y;event.didPreventDefault=false;event.preventDefault=function(){event.didPreventDefault=true;if(sourceEvent){sourceEvent.preventDefault();}};event.stopPropagation=function(){sourceEvent.stopPropagation();};event.stopImmediatePropagation=function(){throw new Error('Not implemented');};return event;},onMouseDown_(e){if(e.button!==0)return;this.setCurrentMousePosFromEvent_(e);const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.begin,e);if(this.mode===MOUSE_SELECTOR_MODE.SELECTION){mouseEvent.appendSelection=isCmdOrCtrlPressed(e);}\nthis.dispatchEvent(mouseEvent);this.isInteracting_=true;this.isClick_=true;tr.ui.b.trackMouseMovesUntilMouseUp(this.onMouseMove_,this.onMouseUp_);},onMouseMove_(e){this.setCurrentMousePosFromEvent_(e);const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.update,e);this.dispatchEvent(mouseEvent);if(this.isInteracting_){this.checkIsClick_(e);}},onMouseUp_(e){if(e.button!==0)return;const mouseEvent=this.createEvent_(MOUSE_SELECTOR_MODE_INFOS[this.mode].eventNames.end,e);mouseEvent.isClick=this.isClick_;this.dispatchEvent(mouseEvent);if(this.isClick_&&!mouseEvent.didPreventDefault){this.dispatchClickEvents_(e);}\nthis.isInteracting_=false;this.updateAlternativeModeState_(e);},onButtonMouseDown_(e){e.preventDefault();e.stopImmediatePropagation();},onButtonMouseUp_(e){e.preventDefault();e.stopImmediatePropagation();},onButtonPress_(e){this.modeBeforeAlternativeModeActivated_=undefined;this.mode=e.target.mode;e.preventDefault();},onKeyDown_(e){if(e.path[0].tagName==='INPUT')return;if(e.keyCode===' '.charCodeAt(0)){this.spacePressed_=true;}\nthis.updateAlternativeModeState_(e);},onKeyUp_(e){if(e.path[0].tagName==='INPUT')return;if(e.keyCode===' '.charCodeAt(0)){this.spacePressed_=false;}\nlet didHandleKey=false;for(const[modeStr,keyCode]of Object.entries(this.modeToKeyCodeMap_)){if(e.keyCode===keyCode){this.modeBeforeAlternativeModeActivated_=undefined;const mode=parseInt(modeStr);this.mode=mode;didHandleKey=true;}}\nif(didHandleKey){e.preventDefault();e.stopPropagation();return;}\nthis.updateAlternativeModeState_(e);},updateAlternativeModeState_(e){const shiftPressed=e.shiftKey;const spacePressed=this.spacePressed_;const cmdOrCtrlPressed=isCmdOrCtrlPressed(e);const smm=this.supportedModeMask_;let newMode;let isNewModeAnAlternativeMode=false;if(shiftPressed&&(this.modifierToModeMap_[MODIFIER.SHIFT]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.SHIFT];isNewModeAnAlternativeMode=true;}else if(spacePressed&&(this.modifierToModeMap_[MODIFIER.SPACE]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.SPACE];isNewModeAnAlternativeMode=true;}else if(cmdOrCtrlPressed&&(this.modifierToModeMap_[MODIFIER.CMD_OR_CTRL]&smm)!==0){newMode=this.modifierToModeMap_[MODIFIER.CMD_OR_CTRL];isNewModeAnAlternativeMode=true;}else{if(this.isInAlternativeMode_){newMode=this.modeBeforeAlternativeModeActivated_;isNewModeAnAlternativeMode=false;}else{newMode=undefined;}}\nif(this.mode===newMode||newMode===undefined)return;if(isNewModeAnAlternativeMode){this.modeBeforeAlternativeModeActivated_=this.mode;}\nthis.mode=newMode;},get isInAlternativeMode_(){return!!this.modeBeforeAlternativeModeActivated_;},setModifierForAlternateMode(mode,modifier){this.modifierToModeMap_[modifier]=mode;},get pos(){return{x:parseInt(this.style.left),y:parseInt(this.style.top)};},set pos(pos){pos=this.constrainPositionToBounds_(pos);this.style.left=pos.x+'px';this.style.top=pos.y+'px';if(this.settingsKey_){tr.b.Settings.set(this.settingsKey_+'.pos',this.pos);}},constrainPositionToBounds_(pos){const parent=this.offsetParent||document.body;const parentRect=tr.ui.b.windowRectForElement(parent);const top=0;const bottom=parentRect.height-this.offsetHeight;const left=0;const right=parentRect.width-this.offsetWidth;const res={};res.x=Math.max(pos.x,left);res.x=Math.min(res.x,right);res.y=Math.max(pos.y,top);res.y=Math.min(res.y,bottom);return res;},onDragHandleMouseDown_(e){e.preventDefault();e.stopImmediatePropagation();const mouseDownPos={x:e.clientX-this.offsetLeft,y:e.clientY-this.offsetTop};tr.ui.b.trackMouseMovesUntilMouseUp(function(e){const pos={};pos.x=e.clientX-mouseDownPos.x;pos.y=e.clientY-mouseDownPos.y;this.pos=pos;}.bind(this));},checkIsClick_(e){if(!this.isInteracting_||!this.isClick_)return;const deltaX=this.mousePos_.x-this.mouseDownPos_.x;const deltaY=this.mousePos_.y-this.mouseDownPos_.y;const minDist=MIN_MOUSE_SELECTION_DISTANCE;if(deltaX*deltaX+deltaY*deltaY>minDist*minDist){this.isClick_=false;}},dispatchClickEvents_(e){if(!this.isClick_)return;const modeInfo=MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.SELECTION];const eventNames=modeInfo.eventNames;let mouseEvent=this.createEvent_(eventNames.begin);mouseEvent.appendSelection=isCmdOrCtrlPressed(e);this.dispatchEvent(mouseEvent);mouseEvent=this.createEvent_(eventNames.end);this.dispatchEvent(mouseEvent);}});return{MIN_MOUSE_SELECTION_DISTANCE,MODIFIER,};});'use strict';tr.exportTo('tr.ui.b',function(){function TimingTool(viewport,targetElement){this.viewport_=viewport;this.onMouseMove_=this.onMouseMove_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.targetElement_=targetElement;this.isMovingLeftEdge_=false;}\nTimingTool.prototype={onEnterTiming(e){this.targetElement_.addEventListener('mousemove',this.onMouseMove_);this.targetElement_.addEventListener('dblclick',this.onDblClick_);},onBeginTiming(e){if(!this.isTouchPointInsideTrackBounds_(e.clientX,e.clientY)){return;}\nconst pt=this.getSnappedToEventPosition_(e);this.mouseDownAt_(pt.x,pt.y);this.updateSnapIndicators_(pt);},updateSnapIndicators_(pt){if(!pt.snapped)return;const ir=this.viewport_.interestRange;if(ir.min===pt.x){ir.leftSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);}\nif(ir.max===pt.x){ir.rightSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);}},onUpdateTiming(e){const pt=this.getSnappedToEventPosition_(e);this.mouseMoveAt_(pt.x,pt.y,true);this.updateSnapIndicators_(pt);},onEndTiming(e){this.mouseUp_();},onExitTiming(e){this.targetElement_.removeEventListener('mousemove',this.onMouseMove_);this.targetElement_.removeEventListener('dblclick',this.onDblClick_);},onMouseMove_(e){if(e.button)return;const worldX=this.getWorldXFromEvent_(e);this.mouseMoveAt_(worldX,e.clientY,false);},onDblClick_(e){},isTouchPointInsideTrackBounds_(clientX,clientY){if(!this.viewport_||!this.viewport_.modelTrackContainer||!this.viewport_.modelTrackContainer.canvas){return false;}\nconst canvas=this.viewport_.modelTrackContainer.canvas;const canvasRect=canvas.getBoundingClientRect();if(clientX>=canvasRect.left&&clientX<=canvasRect.right&&clientY>=canvasRect.top&&clientY<=canvasRect.bottom){return true;}\nreturn false;},mouseDownAt_(worldX,y){const ir=this.viewport_.interestRange;const dt=this.viewport_.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const nearnessThresholdWorld=dt.xViewVectorToWorld(6*pixelRatio);if(ir.isEmpty){ir.setMinAndMax(worldX,worldX);ir.rightSelected=true;this.isMovingLeftEdge_=false;return;}\nif(Math.abs(worldX-ir.min)<nearnessThresholdWorld){ir.leftSelected=true;ir.min=worldX;this.isMovingLeftEdge_=true;return;}\nif(Math.abs(worldX-ir.max)<nearnessThresholdWorld){ir.rightSelected=true;ir.max=worldX;this.isMovingLeftEdge_=false;return;}\nir.setMinAndMax(worldX,worldX);ir.rightSelected=true;this.isMovingLeftEdge_=false;},mouseMoveAt_(worldX,y,mouseDown){if(mouseDown){this.updateMovingEdge_(worldX);return;}\nconst ir=this.viewport_.interestRange;const dt=this.viewport_.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const nearnessThresholdWorld=dt.xViewVectorToWorld(6*pixelRatio);if(Math.abs(worldX-ir.min)<nearnessThresholdWorld){ir.leftSelected=true;ir.rightSelected=false;return;}\nif(Math.abs(worldX-ir.max)<nearnessThresholdWorld){ir.leftSelected=false;ir.rightSelected=true;return;}\nir.leftSelected=false;ir.rightSelected=false;return;},updateMovingEdge_(newWorldX){const ir=this.viewport_.interestRange;let a=ir.min;let b=ir.max;if(this.isMovingLeftEdge_){a=newWorldX;}else{b=newWorldX;}\nif(a<=b){ir.setMinAndMax(a,b);}else{ir.setMinAndMax(b,a);}\nif(ir.min===newWorldX){this.isMovingLeftEdge_=true;ir.leftSelected=true;ir.rightSelected=false;}else{this.isMovingLeftEdge_=false;ir.leftSelected=false;ir.rightSelected=true;}},mouseUp_(){const dt=this.viewport_.currentDisplayTransform;const ir=this.viewport_.interestRange;ir.leftSelected=false;ir.rightSelected=false;const pixelRatio=window.devicePixelRatio||1;const minWidthValue=dt.xViewVectorToWorld(2*pixelRatio);if(ir.range<minWidthValue){ir.reset();}},getWorldXFromEvent_(e){const pixelRatio=window.devicePixelRatio||1;const canvas=this.viewport_.modelTrackContainer.canvas;const worldOffset=canvas.getBoundingClientRect().left;const viewX=(e.clientX-worldOffset)*pixelRatio;return this.viewport_.currentDisplayTransform.xViewToWorld(viewX);},getSnappedToEventPosition_(e){const pixelRatio=window.devicePixelRatio||1;const EVENT_SNAP_RANGE=16*pixelRatio;const modelTrackContainer=this.viewport_.modelTrackContainer;const modelTrackContainerRect=modelTrackContainer.getBoundingClientRect();const viewport=this.viewport_;const dt=viewport.currentDisplayTransform;const worldMaxDist=dt.xViewVectorToWorld(EVENT_SNAP_RANGE);const worldX=this.getWorldXFromEvent_(e);const mouseY=e.clientY;const selection=new tr.model.EventSet();modelTrackContainer.addClosestEventToSelection(worldX,worldMaxDist,mouseY,mouseY,selection);if(!selection.length){modelTrackContainer.addClosestEventToSelection(worldX,worldMaxDist,modelTrackContainerRect.top,modelTrackContainerRect.bottom,selection);}\nlet minDistX=worldMaxDist;let minDistY=Infinity;const pixWidth=dt.xViewVectorToWorld(1);const result={x:worldX,y:mouseY-modelTrackContainerRect.top,height:0,snapped:false};const eventBounds=new tr.b.math.Range();for(const event of selection){const track=viewport.trackForEvent(event);const trackRect=track.getBoundingClientRect();eventBounds.reset();event.addBoundsToRange(eventBounds);let eventX;if(Math.abs(eventBounds.min-worldX)<Math.abs(eventBounds.max-worldX)){eventX=eventBounds.min;}else{eventX=eventBounds.max;}\nconst distX=eventX-worldX;const eventY=trackRect.top;const eventHeight=trackRect.height;const distY=Math.abs(eventY+eventHeight/2-mouseY);if((distX<=minDistX||Math.abs(distX-minDistX)<pixWidth)&&distY<minDistY){minDistX=distX;minDistY=distY;result.x=eventX;result.y=eventY+\nmodelTrackContainer.scrollTop-modelTrackContainerRect.top;result.height=eventHeight;result.snapped=true;}}\nreturn result;}};return{TimingTool,};});'use strict';tr.exportTo('tr.ui',function(){const kDefaultPanAnimationDurationMs=100.0;const lerp=tr.b.math.lerp;function TimelineDisplayTransformPanAnimation(deltaX,deltaY,opt_durationMs){this.deltaX=deltaX;this.deltaY=deltaY;if(opt_durationMs===undefined){this.durationMs=kDefaultPanAnimationDurationMs;}else{this.durationMs=opt_durationMs;}\nthis.startPanX=undefined;this.startPanY=undefined;this.startTimeMs=undefined;}\nTimelineDisplayTransformPanAnimation.prototype={__proto__:tr.ui.b.Animation.prototype,get affectsPanY(){return this.deltaY!==0;},canTakeOverFor(existingAnimation){return existingAnimation instanceof TimelineDisplayTransformPanAnimation;},takeOverFor(existing,timestamp,target){const remainingDeltaXOnExisting=existing.goalPanX-target.panX;const remainingDeltaYOnExisting=existing.goalPanY-target.panY;let remainingTimeOnExisting=timestamp-(existing.startTimeMs+existing.durationMs);remainingTimeOnExisting=Math.max(remainingTimeOnExisting,0);this.deltaX+=remainingDeltaXOnExisting;this.deltaY+=remainingDeltaYOnExisting;this.durationMs+=remainingTimeOnExisting;},start(timestamp,target){this.startTimeMs=timestamp;this.startPanX=target.panX;this.startPanY=target.panY;},tick(timestamp,target){let percentDone=(timestamp-this.startTimeMs)/this.durationMs;percentDone=tr.b.math.clamp(percentDone,0,1);target.panX=lerp(percentDone,this.startPanX,this.goalPanX);if(this.affectsPanY){target.panY=lerp(percentDone,this.startPanY,this.goalPanY);}\nreturn timestamp>=this.startTimeMs+this.durationMs;},get goalPanX(){return this.startPanX+this.deltaX;},get goalPanY(){return this.startPanY+this.deltaY;}};function TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,goalFocalPointY,zoomInRatioX,opt_durationMs){this.goalFocalPointXWorld=goalFocalPointXWorld;this.goalFocalPointXView=goalFocalPointXView;this.goalFocalPointY=goalFocalPointY;this.zoomInRatioX=zoomInRatioX;if(opt_durationMs===undefined){this.durationMs=kDefaultPanAnimationDurationMs;}else{this.durationMs=opt_durationMs;}\nthis.startTimeMs=undefined;this.startScaleX=undefined;this.goalScaleX=undefined;this.startPanY=undefined;}\nTimelineDisplayTransformZoomToAnimation.prototype={__proto__:tr.ui.b.Animation.prototype,get affectsPanY(){return this.startPanY!==this.goalFocalPointY;},canTakeOverFor(existingAnimation){return false;},takeOverFor(existingAnimation,timestamp,target){this.goalScaleX=target.scaleX*this.zoomInRatioX;},start(timestamp,target){this.startTimeMs=timestamp;this.startScaleX=target.scaleX;this.goalScaleX=this.zoomInRatioX*target.scaleX;this.startPanY=target.panY;},tick(timestamp,target){let percentDone=(timestamp-this.startTimeMs)/this.durationMs;percentDone=tr.b.math.clamp(percentDone,0,1);target.scaleX=lerp(percentDone,this.startScaleX,this.goalScaleX);if(this.affectsPanY){target.panY=lerp(percentDone,this.startPanY,this.goalFocalPointY);}\ntarget.xPanWorldPosToViewPos(this.goalFocalPointXWorld,this.goalFocalPointXView);return timestamp>=this.startTimeMs+this.durationMs;}};return{TimelineDisplayTransformPanAnimation,TimelineDisplayTransformZoomToAnimation,};});'use strict';tr.exportTo('tr.ui.b',function(){const constants={HEADING_WIDTH:250};return{constants,};});'use strict';tr.exportTo('tr.ui.b',function(){const ContainerThatDecoratesItsChildren=tr.ui.b.define('div');ContainerThatDecoratesItsChildren.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.observer_=new MutationObserver(this.didMutate_.bind(this));this.observer_.observe(this,{childList:true});Object.defineProperty(this,'textContent',{get:undefined,set:this.onSetTextContent_});},appendChild(x){HTMLDivElement.prototype.appendChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},insertBefore(x,y){HTMLDivElement.prototype.insertBefore.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},removeChild(x){HTMLDivElement.prototype.removeChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},replaceChild(x,y){HTMLDivElement.prototype.replaceChild.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},onSetTextContent_(textContent){if(textContent!==''){throw new Error('textContent can only be set to \\'\\'.');}\nthis.clear();},clear(){while(Polymer.dom(this).lastChild){HTMLDivElement.prototype.removeChild.call(this,Polymer.dom(this).lastChild);}\nthis.didMutate_(this.observer_.takeRecords());},didMutate_(records){this.beginDecorating_();for(let i=0;i<records.length;i++){const addedNodes=records[i].addedNodes;if(addedNodes){for(let j=0;j<addedNodes.length;j++){this.decorateChild_(addedNodes[j]);}}\nconst removedNodes=records[i].removedNodes;if(removedNodes){for(let j=0;j<removedNodes.length;j++){this.undecorateChild_(removedNodes[j]);}}}\nthis.doneDecoratingForNow_();},decorateChild_(child){throw new Error('Not implemented');},undecorateChild_(child){throw new Error('Not implemented');},beginDecorating_(){},doneDecoratingForNow_(){}};return{ContainerThatDecoratesItsChildren,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Track=tr.ui.b.define('track',tr.ui.b.ContainerThatDecoratesItsChildren);Track.prototype={__proto__:tr.ui.b.ContainerThatDecoratesItsChildren.prototype,decorate(viewport){tr.ui.b.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);if(viewport===undefined){throw new Error('viewport is required when creating a Track.');}\nthis.viewport_=viewport;Polymer.dom(this).classList.add('track');},get viewport(){return this.viewport_;},get drawingContainer(){if(this instanceof tr.ui.tracks.DrawingContainer)return this;let cur=this.parentElement;while(cur){if(cur instanceof tr.ui.tracks.DrawingContainer)return cur;cur=cur.parentElement;}\nreturn undefined;},get eventContainer(){},invalidateDrawingContainer(){const dc=this.drawingContainer;if(dc)dc.invalidate();},context(){if(!Polymer.dom(this).parentNode)return undefined;if(!Polymer.dom(this).parentNode.context){throw new Error('Parent container does not support context() method.');}\nreturn Polymer.dom(this).parentNode.context();},decorateChild_(childTrack){},undecorateChild_(childTrack){if(childTrack.detach){childTrack.detach();}},updateContents_(){},drawTrack(type){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;this.draw(type,viewLWorld,viewRWorld,viewHeight);ctx.restore();},draw(type,viewLWorld,viewRWorld,viewHeight){},addEventsToTrackMap(eventToTrackMap){},addContainersToTrackMap(containerToTrackMap){},addIntersectingEventsInRangeToSelection(loVX,hiVX,loVY,hiVY,selection){const pixelRatio=window.devicePixelRatio||1;const dt=this.viewport.currentDisplayTransform;const viewPixWidthWorld=dt.xViewVectorToWorld(1);const loWX=dt.xViewToWorld(loVX*pixelRatio);const hiWX=dt.xViewToWorld(hiVX*pixelRatio);const clientRect=this.getBoundingClientRect();const a=Math.max(loVY,clientRect.top);const b=Math.min(hiVY,clientRect.bottom);if(a>b)return;this.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){},addClosestInstantEventToSelection(instantEvents,worldX,worldMaxDist,selection){const instantEvent=tr.b.findClosestElementInSortedArray(instantEvents,function(x){return x.start;},worldX,worldMaxDist);if(!instantEvent)return;selection.push(instantEvent);}};return{Track,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const DrawType={GENERAL_EVENT:1,INSTANT_EVENT:2,BACKGROUND:3,GRID:4,FLOW_ARROWS:5,MARKERS:6,HIGHLIGHTS:7,ANNOTATIONS:8};const MAX_OVERSIZE_MULTIPLE=3.0;const REDRAW_SLOP=(MAX_OVERSIZE_MULTIPLE-1)/2;const DrawingContainer=tr.ui.b.define('drawing-container',tr.ui.tracks.Track);DrawingContainer.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('drawing-container');this.canvas_=document.createElement('canvas');this.canvas_.className='drawing-container-canvas';this.canvas_.style.left=tr.ui.b.constants.HEADING_WIDTH+'px';Polymer.dom(this).appendChild(this.canvas_);this.ctx_=this.canvas_.getContext('2d');this.offsetY_=0;this.viewportChange_=this.viewportChange_.bind(this);this.viewport.addEventListener('change',this.viewportChange_);window.addEventListener('resize',this.windowResized_.bind(this));this.addEventListener('scroll',this.scrollChanged_.bind(this));},get canvas(){return this.canvas_;},context(){return this.ctx_;},viewportChange_(){this.invalidate();},windowResized_(){this.invalidate();},scrollChanged_(){if(this.updateOffsetY_()){this.invalidate();}},invalidate(){if(this.rafPending_)return;this.rafPending_=true;tr.b.requestPreAnimationFrame(this.preDraw_,this);},preDraw_(){this.rafPending_=false;this.updateCanvasSizeIfNeeded_();tr.b.requestAnimationFrameInThisFrameIfPossible(this.draw_,this);},draw_(){this.ctx_.clearRect(0,0,this.canvas_.width,this.canvas_.height);const typesToDraw=[DrawType.BACKGROUND,DrawType.HIGHLIGHTS,DrawType.GRID,DrawType.INSTANT_EVENT,DrawType.GENERAL_EVENT,DrawType.MARKERS,DrawType.ANNOTATIONS,DrawType.FLOW_ARROWS];const children=this.children;for(const idx in typesToDraw){for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nchildren[i].drawTrack(typesToDraw[idx]);}}\nconst pixelRatio=window.devicePixelRatio||1;const bounds=this.canvas_.getBoundingClientRect();const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(bounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;this.viewport.drawGridLines(this.ctx_,viewLWorld,viewRWorld,viewHeight);},updateOffsetY_(){const maxYDelta=window.innerHeight*REDRAW_SLOP;let newOffset=this.scrollTop-maxYDelta;if(Math.abs(newOffset-this.offsetY_)<=maxYDelta)return false;const maxOffset=this.scrollHeight-\nthis.canvas_.getBoundingClientRect().height;newOffset=Math.max(0,Math.min(newOffset,maxOffset));if(newOffset!==this.offsetY_){this.offsetY_=newOffset;return true;}\nreturn false;},updateCanvasSizeIfNeeded_(){const visibleChildTracks=Array.from(this.children).filter(this.visibleFilter_);if(visibleChildTracks.length===0){return;}\nconst thisBounds=this.getBoundingClientRect();const firstChildTrackBounds=visibleChildTracks[0].getBoundingClientRect();const lastChildTrackBounds=visibleChildTracks[visibleChildTracks.length-1].getBoundingClientRect();const innerWidth=firstChildTrackBounds.width-\ntr.ui.b.constants.HEADING_WIDTH;const innerHeight=Math.min(lastChildTrackBounds.bottom-firstChildTrackBounds.top,Math.floor(window.innerHeight*MAX_OVERSIZE_MULTIPLE));const pixelRatio=window.devicePixelRatio||1;if(this.canvas_.width!==innerWidth*pixelRatio){this.canvas_.width=innerWidth*pixelRatio;this.canvas_.style.width=innerWidth+'px';}\nif(this.canvas_.height!==innerHeight*pixelRatio){this.canvas_.height=innerHeight*pixelRatio;this.canvas_.style.height=innerHeight+'px';}\nif(this.canvas_.top!==this.offsetY_){this.canvas_.top=this.offsetY_;this.canvas_.style.top=this.offsetY_+'px';}},visibleFilter_(element){if(!(element instanceof tr.ui.tracks.Track))return false;return window.getComputedStyle(element).display!=='none';},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const children=this.children;for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nconst trackClientRect=children[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){children[i].addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments);},addEventsToTrackMap(eventToTrackMap){const children=this.children;for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)){continue;}\nchildren[i].addEventsToTrackMap(eventToTrackMap);}}};return{DrawingContainer,DrawType,};});'use strict';tr.exportTo('tr.model',function(){const SelectableItem=tr.model.SelectableItem;const SelectionState=tr.model.SelectionState;function ProxySelectableItem(modelItem){SelectableItem.call(this,modelItem);}\nProxySelectableItem.prototype={__proto__:SelectableItem.prototype,get selectionState(){const modelItem=this.modelItem_;if(modelItem===undefined){return SelectionState.NONE;}\nreturn modelItem.selectionState;}};return{ProxySelectableItem,};});'use strict';Polymer({is:'tr-ui-b-heading',DOWN_ARROW:String.fromCharCode(0x25BE),RIGHT_ARROW:String.fromCharCode(0x25B8),ready(viewport){this.style.width=(tr.ui.b.constants.HEADING_WIDTH-6)+'px';this.heading_='';this.expanded_=true;this.arrowVisible_=false;this.selectionGenerator_=undefined;this.updateContents_();},get heading(){return this.heading_;},set heading(text){if(this.heading_===text)return;this.heading_=text;this.updateContents_();},set arrowVisible(val){if(this.arrowVisible_===val)return;this.arrowVisible_=!!val;this.updateContents_();},set tooltip(text){this.$.heading.title=text;},set selectionGenerator(generator){if(this.selectionGenerator_===generator)return;this.selectionGenerator_=generator;this.updateContents_();},get expanded(){return this.expanded_;},set expanded(expanded){if(this.expanded_===expanded)return;this.expanded_=!!expanded;this.updateContents_();},onHeadingDivClicked_(){this.dispatchEvent(new tr.b.Event('heading-clicked',true));},updateContents_(){if(this.arrowVisible_){this.$.arrow.style.display='';}else{this.$.arrow.style.display='none';this.$.heading.style.display=this.expanded_?'':'none';}\nif(this.arrowVisible_){Polymer.dom(this.$.arrow).textContent=this.expanded_?this.DOWN_ARROW:this.RIGHT_ARROW;}\nthis.$.link.style.display='none';this.$.heading_content.style.display='none';if(this.selectionGenerator_){this.$.link.style.display='inline-block';this.$.link.selection=this.selectionGenerator_;Polymer.dom(this.$.link).textContent=this.heading_;}else{this.$.heading_content.style.display='inline-block';Polymer.dom(this.$.heading_content).textContent=this.heading_;}}});'use strict';tr.exportTo('tr.ui.tracks',function(){const EventPresenter=tr.ui.b.EventPresenter;const SelectionState=tr.model.SelectionState;const LetterDotTrack=tr.ui.b.define('letter-dot-track',tr.ui.tracks.Track);LetterDotTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('letter-dot-track');this.items_=undefined;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get items(){return this.items_;},set items(items){this.items_=items;this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},get dumpRadiusView(){return 7*(window.devicePixelRatio||1);},draw(type,viewLWorld,viewRWorld,viewHeight){if(this.items_===undefined)return;switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawLetterDots_(viewLWorld,viewRWorld);break;}},drawLetterDots_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const height=bounds.height*pixelRatio;const halfHeight=height*0.5;const twoPi=Math.PI*2;const dt=this.viewport.currentDisplayTransform;const dumpRadiusView=this.dumpRadiusView;const itemRadiusWorld=dt.xViewVectorToWorld(height);const items=this.items_;const loI=tr.b.findLowIndexInSortedArray(items,function(item){return item.start;},viewLWorld);const oldFont=ctx.font;ctx.font='400 '+Math.floor(9*pixelRatio)+'px Arial';ctx.strokeStyle='rgb(0,0,0)';ctx.textBaseline='middle';ctx.textAlign='center';const drawItems=function(selected){for(let i=loI;i<items.length;++i){const item=items[i];const x=item.start;if(x-itemRadiusWorld>viewRWorld)break;if(item.selected!==selected)continue;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getSelectableItemColorAsString(item);ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView+0.5,0,twoPi);ctx.fill();if(item.selected){ctx.lineWidth=3;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView,0,twoPi);ctx.lineWidth=1.5;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();}\nctx.fillStyle='rgb(255, 255, 255)';ctx.fillText(item.dotLetter,xView,halfHeight);}};drawItems(false);drawItems(true);ctx.lineWidth=1;ctx.font=oldFont;},addEventsToTrackMap(eventToTrackMap){if(this.items_===undefined)return;this.items_.forEach(function(item){item.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){if(this.items_===undefined)return;const itemRadiusWorld=viewPixWidthWorld*this.dumpRadiusView;tr.b.iterateOverIntersectingIntervals(this.items_,function(x){return x.start-itemRadiusWorld;},function(x){return 2*itemRadiusWorld;},loWX,hiWX,function(item){item.addToSelection(selection);}.bind(this));},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.items_===undefined)return;const index=this.items_.findIndex(item=>item.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex>=0&&newIndex<this.items_.length){this.items_[newIndex].addToSelection(selection);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){if(this.items_===undefined)return;const item=tr.b.findClosestElementInSortedArray(this.items_,function(x){return x.start;},worldX,worldMaxDist);if(!item)return;item.addToSelection(selection);}};function LetterDot(modelItem,dotLetter,colorId,start){tr.model.ProxySelectableItem.call(this,modelItem);this.dotLetter=dotLetter;this.colorId=colorId;this.start=start;}\nLetterDot.prototype={__proto__:tr.model.ProxySelectableItem.prototype};return{LetterDotTrack,LetterDot,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const AlertTrack=tr.ui.b.define('alert-track',tr.ui.tracks.LetterDotTrack);AlertTrack.prototype={__proto__:tr.ui.tracks.LetterDotTrack.prototype,decorate(viewport){tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this,viewport);this.heading='Alerts';this.alerts_=undefined;},get alerts(){return this.alerts_;},set alerts(alerts){this.alerts_=alerts;if(alerts===undefined){this.items=undefined;return;}\nthis.items=this.alerts_.map(function(alert){return new tr.ui.tracks.LetterDot(alert,String.fromCharCode(9888),alert.colorId,alert.start);});}};return{AlertTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Task=tr.b.Task;const ContainerTrack=tr.ui.b.define('container-track',tr.ui.tracks.Track);ContainerTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);},detach(){Polymer.dom(this).textContent='';},get tracks_(){const tracks=[];const children=this.children;for(let i=0;i<children.length;i++){if(children[i]instanceof tr.ui.tracks.Track){tracks.push(children[i]);}}\nreturn tracks;},drawTrack(type){this.tracks_.forEach(function(track){track.drawTrack(type);});},addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){const trackClientRect=tracks[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){tracks[i].addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addIntersectingEventsInRangeToSelection.apply(this,arguments);},addEventsToTrackMap(eventToTrackMap){for(const track of this.tracks_){track.addEventsToTrackMap(eventToTrackMap);}},addAllEventsMatchingFilterToSelection(filter,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){tracks[i].addAllEventsMatchingFilterToSelection(filter,selection);}},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const task=new Task();const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){task.subTask(function(i){return function(){tracks[i].addAllEventsMatchingFilterToSelection(filter,selection);};}(i),this);}\nreturn task;},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const tracks=this.tracks_;for(let i=0;i<tracks.length;i++){const trackClientRect=tracks[i].getBoundingClientRect();const a=Math.max(loY,trackClientRect.top);const b=Math.min(hiY,trackClientRect.bottom);if(a<=b){tracks[i].addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);}}\ntr.ui.tracks.Track.prototype.addClosestEventToSelection.apply(this,arguments);},addContainersToTrackMap(containerToTrackMap){this.tracks_.forEach(function(track){track.addContainersToTrackMap(containerToTrackMap);});},clearTracks_(){this.tracks_.forEach(function(track){Polymer.dom(this).removeChild(track);},this);}};return{ContainerTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ChartPoint(modelItem,x,y,opt_yBase){tr.model.ProxySelectableItem.call(this,modelItem);this.x=x;this.y=y;this.dotLetter=undefined;this.yBase=opt_yBase;}\nChartPoint.prototype={__proto__:tr.model.ProxySelectableItem.prototype,};return{ChartPoint,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const EventPresenter=tr.ui.b.EventPresenter;const SelectionState=tr.model.SelectionState;const ChartSeriesType={LINE:0,AREA:1};const DEFAULT_RENDERING_CONFIG={chartType:ChartSeriesType.LINE,selectedPointSize:4,unselectedPointSize:3,solidSelectedDots:false,colorId:0,lineWidth:1,skipDistance:1,unselectedPointDensityTransparent:0.10,unselectedPointDensityOpaque:0.05,backgroundOpacity:0.5,stepGraph:true};const LAST_POINT_WIDTH=16;const DOT_LETTER_RADIUS_PX=7;const DOT_LETTER_RADIUS_PADDING_PX=0.5;const DOT_LETTER_SELECTED_OUTLINE_WIDTH_PX=3;const DOT_LETTER_SELECTED_OUTLINE_DETAIL_WIDTH_PX=1.5;const DOT_LETTER_UNSELECTED_OUTLINE_WIDTH_PX=1;const DOT_LETTER_FONT_WEIGHT=400;const DOT_LETTER_FONT_SIZE_PX=9;const DOT_LETTER_FONT='Arial';const ChartSeriesComponent={BACKGROUND:0,LINE:1,DOTS:2};function ChartSeries(points,seriesYAxis,opt_renderingConfig){this.points=points;this.seriesYAxis=seriesYAxis;this.useRenderingConfig_(opt_renderingConfig);}\nChartSeries.prototype={useRenderingConfig_(opt_renderingConfig){const config=opt_renderingConfig||{};for(const[key,defaultValue]of\nObject.entries(DEFAULT_RENDERING_CONFIG)){let value=config[key];if(value===undefined){value=defaultValue;}\nthis[key+'_']=value;}\nthis.topPadding=this.bottomPadding=Math.max(this.selectedPointSize_,this.unselectedPointSize_)/2;},get range(){const range=new tr.b.math.Range();this.points.forEach(function(point){range.addValue(point.y);},this);return range;},draw(ctx,transform,highDetails){if(this.points===undefined||this.points.length===0){return;}\nif(this.chartType_===ChartSeriesType.AREA){this.drawComponent_(ctx,transform,ChartSeriesComponent.BACKGROUND,highDetails);}\nif(this.chartType_===ChartSeriesType.LINE||highDetails){this.drawComponent_(ctx,transform,ChartSeriesComponent.LINE,highDetails);}\nthis.drawComponent_(ctx,transform,ChartSeriesComponent.DOTS,highDetails);},drawComponent_(ctx,transform,component,highDetails){let extraPixels=0;if(component===ChartSeriesComponent.DOTS){extraPixels=Math.max(this.selectedPointSize_,this.unselectedPointSize_);}\nconst pixelRatio=transform.pixelRatio;const leftViewX=transform.leftViewX-extraPixels*pixelRatio;const rightViewX=transform.rightViewX+extraPixels*pixelRatio;const leftTimestamp=transform.leftTimestamp-extraPixels;const rightTimestamp=transform.rightTimestamp+extraPixels;const firstVisibleIndex=tr.b.findLowIndexInSortedArray(this.points,function(point){return point.x;},leftTimestamp);let lastVisibleIndex=tr.b.findLowIndexInSortedArray(this.points,function(point){return point.x;},rightTimestamp);if(lastVisibleIndex>=this.points.length||this.points[lastVisibleIndex].x>rightTimestamp){lastVisibleIndex--;}\nconst viewSkipDistance=this.skipDistance_*pixelRatio;let selectedCircleRadius;let letterDotRadius;let squareSize;let squareHalfSize;let squareOpacity;let unselectedSeriesColor;let currentStateSeriesColor;ctx.save();ctx.font=DOT_LETTER_FONT_WEIGHT+' '+\nMath.floor(DOT_LETTER_FONT_SIZE_PX*pixelRatio)+'px '+\nDOT_LETTER_FONT;ctx.textBaseline='middle';ctx.textAlign='center';switch(component){case ChartSeriesComponent.DOTS:{selectedCircleRadius=(this.selectedPointSize_/2)*pixelRatio;letterDotRadius=Math.max(selectedCircleRadius,DOT_LETTER_RADIUS_PX*pixelRatio);squareSize=this.unselectedPointSize_*pixelRatio;squareHalfSize=squareSize/2;unselectedSeriesColor=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);if(!highDetails){squareOpacity=0;break;}\nconst visibleIndexRange=lastVisibleIndex-firstVisibleIndex;if(visibleIndexRange<=0){squareOpacity=1;break;}\nconst visibleViewXRange=transform.worldXToViewX(this.points[lastVisibleIndex].x)-\ntransform.worldXToViewX(this.points[firstVisibleIndex].x);if(visibleViewXRange===0){squareOpacity=1;break;}\nconst density=visibleIndexRange/visibleViewXRange;const clampedDensity=tr.b.math.clamp(density,this.unselectedPointDensityOpaque_,this.unselectedPointDensityTransparent_);const densityRange=this.unselectedPointDensityTransparent_-\nthis.unselectedPointDensityOpaque_;squareOpacity=(this.unselectedPointDensityTransparent_-clampedDensity)/densityRange;break;}\ncase ChartSeriesComponent.LINE:ctx.strokeStyle=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);ctx.lineWidth=this.lineWidth_*pixelRatio;break;case ChartSeriesComponent.BACKGROUND:break;default:throw new Error('Invalid component: '+component);}\nlet previousViewX=undefined;let previousViewY=undefined;let previousViewYBase=undefined;let lastSelectionState=undefined;let baseSteps=undefined;const startIndex=Math.max(firstVisibleIndex-1,0);let currentViewX;for(let i=startIndex;i<this.points.length;i++){const currentPoint=this.points[i];currentViewX=transform.worldXToViewX(currentPoint.x);if(currentViewX>rightViewX){if(previousViewX!==undefined){previousViewX=currentViewX=rightViewX;if(component===ChartSeriesComponent.BACKGROUND||component===ChartSeriesComponent.LINE){ctx.lineTo(currentViewX,previousViewY);}}\nbreak;}\nif(i+1<this.points.length){const nextPoint=this.points[i+1];const nextViewX=transform.worldXToViewX(nextPoint.x);if(previousViewX!==undefined&&nextViewX-previousViewX<=viewSkipDistance&&nextViewX<rightViewX){continue;}\nif(currentViewX<leftViewX){currentViewX=leftViewX;}}\nif(previousViewX!==undefined&&currentViewX-previousViewX<viewSkipDistance){currentViewX=previousViewX+viewSkipDistance;}\nconst currentViewY=Math.round(transform.worldYToViewY(currentPoint.y));let currentViewYBase;if(currentPoint.yBase===undefined){currentViewYBase=transform.outerBottomViewY;}else{currentViewYBase=Math.round(transform.worldYToViewY(currentPoint.yBase));}\nconst currentSelectionState=currentPoint.selectionState;if(currentSelectionState!==lastSelectionState){const opacity=currentSelectionState===SelectionState.SELECTED?1:squareOpacity;currentStateSeriesColor=EventPresenter.getCounterSeriesColor(this.colorId_,currentSelectionState,opacity);}\nswitch(component){case ChartSeriesComponent.DOTS:if(currentPoint.dotLetter){ctx.fillStyle=unselectedSeriesColor;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.beginPath();ctx.arc(currentViewX,currentViewY,letterDotRadius+DOT_LETTER_RADIUS_PADDING_PX,0,2*Math.PI);ctx.fill();if(currentSelectionState===SelectionState.SELECTED){ctx.lineWidth=DOT_LETTER_SELECTED_OUTLINE_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('olive');ctx.stroke();ctx.beginPath();ctx.arc(currentViewX,currentViewY,letterDotRadius,0,2*Math.PI);ctx.lineWidth=DOT_LETTER_SELECTED_OUTLINE_DETAIL_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('yellow');ctx.stroke();}else{ctx.lineWidth=DOT_LETTER_UNSELECTED_OUTLINE_WIDTH_PX;ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.stroke();}\nctx.fillStyle=ColorScheme.getColorForReservedNameAsString('white');ctx.fillText(currentPoint.dotLetter,currentViewX,currentViewY);}else{ctx.strokeStyle=unselectedSeriesColor;ctx.lineWidth=pixelRatio;if(currentSelectionState===SelectionState.SELECTED){if(this.solidSelectedDots_){ctx.fillStyle=ctx.strokeStyle;}else{ctx.fillStyle=currentStateSeriesColor;}\nctx.beginPath();ctx.arc(currentViewX,currentViewY,selectedCircleRadius,0,2*Math.PI);ctx.fill();ctx.stroke();}else if(squareOpacity>0){ctx.fillStyle=currentStateSeriesColor;ctx.fillRect(currentViewX-squareHalfSize,currentViewY-squareHalfSize,squareSize,squareSize);}}\nbreak;case ChartSeriesComponent.LINE:if(previousViewX===undefined){ctx.beginPath();ctx.moveTo(currentViewX,currentViewY);}else if(this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);}\nctx.lineTo(currentViewX,currentViewY);break;case ChartSeriesComponent.BACKGROUND:if(previousViewX!==undefined&&this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);}else{ctx.lineTo(currentViewX,currentViewY);}\nif(currentSelectionState!==lastSelectionState){if(previousViewX!==undefined){let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;}\nctx.closePath();ctx.fill();}\nctx.beginPath();ctx.fillStyle=EventPresenter.getCounterSeriesColor(this.colorId_,currentSelectionState,this.backgroundOpacity_);ctx.moveTo(currentViewX,currentViewYBase);baseSteps=[];}\nif(currentViewYBase!==previousViewYBase||currentSelectionState!==lastSelectionState){baseSteps.push({viewX:currentViewX,viewY:currentViewYBase});}\nctx.lineTo(currentViewX,currentViewY);break;default:throw new Error('Not reachable');}\npreviousViewX=currentViewX;previousViewY=currentViewY;previousViewYBase=currentViewYBase;lastSelectionState=currentSelectionState;}\nif(previousViewX!==undefined){switch(component){case ChartSeriesComponent.DOTS:break;case ChartSeriesComponent.LINE:ctx.stroke();break;case ChartSeriesComponent.BACKGROUND:{let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;}\nctx.closePath();ctx.fill();break;}\ndefault:throw new Error('Not reachable');}}\nctx.restore();},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){const points=this.points;function getPointWidth(point,i){if(i===points.length-1){return LAST_POINT_WIDTH*viewPixWidthWorld;}\nconst nextPoint=points[i+1];return nextPoint.x-point.x;}\nfunction selectPoint(point){point.addToSelection(selection);}\ntr.b.iterateOverIntersectingIntervals(this.points,function(point){return point.x;},getPointWidth,loWX,hiWX,selectPoint);},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.points===undefined)return false;const index=this.points.findIndex(point=>point.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.points.length)return false;this.points[newIndex].addToSelection(selection);return true;},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){if(this.points===undefined)return;const item=tr.b.findClosestElementInSortedArray(this.points,function(point){return point.x;},worldX,worldMaxDist);if(!item)return;item.addToSelection(selection);}};return{ChartSeries,ChartSeriesType,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const IDEAL_MAJOR_MARK_HEIGHT_PX=30;const AXIS_LABLE_MARGIN_PX=10;const AXIS_LABLE_FONT_SIZE_PX=9;const AXIS_LABLE_FONT='Arial';function ChartSeriesYAxis(opt_min,opt_max){this.guid_=tr.b.GUID.allocateSimple();this.bounds=new tr.b.math.Range();if(opt_min!==undefined)this.bounds.addValue(opt_min);if(opt_max!==undefined)this.bounds.addValue(opt_max);}\nChartSeriesYAxis.prototype={get guid(){return this.guid_;},valueToUnitRange(value){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');}\nconst bounds=this.bounds;if(bounds.range===0)return 0;return(value-bounds.min)/bounds.range;},unitRangeToValue(unitRange){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');}\nreturn unitRange*this.bounds.range+this.bounds.min;},autoSetFromSeries(series,opt_config){const range=new tr.b.math.Range();series.forEach(function(s){range.addRange(s.range);},this);this.autoSetFromRange(range,opt_config);},autoSetFromRange(range,opt_config){if(range.isEmpty)return;const bounds=this.bounds;if(bounds.isEmpty){bounds.addRange(range);return;}\nif(!opt_config)return;const useRangeMin=(opt_config.expandMin&&range.min<bounds.min||opt_config.shrinkMin&&range.min>bounds.min);const useRangeMax=(opt_config.expandMax&&range.max>bounds.max||opt_config.shrinkMax&&range.max<bounds.max);if(!useRangeMin&&!useRangeMax)return;if(useRangeMin&&useRangeMax){bounds.min=range.min;bounds.max=range.max;return;}\nif(useRangeMin){bounds.min=Math.min(range.min,bounds.max);}else{bounds.max=Math.max(range.max,bounds.min);}},majorMarkHeightWorld_(transform,pixelRatio){const idealMajorMarkHeightPx=IDEAL_MAJOR_MARK_HEIGHT_PX*pixelRatio;const idealMajorMarkHeightWorld=transform.vectorToWorldDistance(idealMajorMarkHeightPx);return tr.b.math.preferredNumberLargerThanMin(idealMajorMarkHeightWorld);},draw(ctx,transform,showYAxisLabels,showYGridLines){if(!showYAxisLabels&&!showYGridLines)return;const pixelRatio=transform.pixelRatio;const viewTop=transform.outerTopViewY;const worldTop=transform.viewYToWorldY(viewTop);const viewBottom=transform.outerBottomViewY;const viewHeight=viewBottom-viewTop;const viewLeft=transform.leftViewX;const viewRight=transform.rightViewX;const labelLeft=transform.leftYLabel;ctx.save();ctx.lineWidth=pixelRatio;ctx.fillStyle=ColorScheme.getColorForReservedNameAsString('black');ctx.textAlign='left';ctx.textBaseline='center';ctx.font=(AXIS_LABLE_FONT_SIZE_PX*pixelRatio)+'px '+AXIS_LABLE_FONT;ctx.beginPath();ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('black');tr.ui.b.drawLine(ctx,viewLeft,viewTop,viewLeft,viewBottom,viewLeft);ctx.stroke();ctx.closePath();ctx.beginPath();ctx.strokeStyle=ColorScheme.getColorForReservedNameAsString('grey');const majorMarkHeight=this.majorMarkHeightWorld_(transform,pixelRatio);const maxMajorMark=Math.max(transform.viewYToWorldY(viewTop),Math.abs(transform.viewYToWorldY(viewBottom)));for(let curWorldY=0;curWorldY<=maxMajorMark;curWorldY+=majorMarkHeight){const roundedUnitValue=Math.floor(curWorldY*1000000)/1000000;const curViewYPositive=transform.worldYToViewY(curWorldY);if(curViewYPositive>=viewTop){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYPositive-AXIS_LABLE_MARGIN_PX);}\nif(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYPositive,viewRight,curViewYPositive);}}\nconst curViewYNegative=transform.worldYToViewY(-1*curWorldY);if(curViewYNegative<=viewBottom){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYNegative-AXIS_LABLE_MARGIN_PX);}\nif(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYNegative,viewRight,curViewYNegative);}}}\nctx.stroke();ctx.restore();}};return{ChartSeriesYAxis,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ChartTransform(displayTransform,axis,trackWidth,trackHeight,topPadding,bottomPadding,pixelRatio){this.pixelRatio=pixelRatio;this.leftViewX=0;this.rightViewX=trackWidth;this.leftTimestamp=displayTransform.xViewToWorld(this.leftViewX);this.rightTimestamp=displayTransform.xViewToWorld(this.rightViewX);this.displayTransform_=displayTransform;this.outerTopViewY=0;this.innerTopViewY=topPadding;this.innerBottomViewY=trackHeight-bottomPadding;this.outerBottomViewY=trackHeight;this.axis_=axis;this.innerHeight_=this.innerBottomViewY-this.innerTopViewY;}\nChartTransform.prototype={worldXToViewX(worldX){return this.displayTransform_.xWorldToView(worldX);},viewXToWorldX(viewX){return this.displayTransform_.xViewToWorld(viewX);},vectorToWorldDistance(viewY){return this.axis_.bounds.range*Math.abs(viewY/this.innerHeight_);},viewYToWorldY(viewY){return this.axis_.unitRangeToValue(1-(viewY-this.innerTopViewY)/this.innerHeight_);},worldYToViewY(worldY){const innerHeightCoefficient=1-this.axis_.valueToUnitRange(worldY);return innerHeightCoefficient*this.innerHeight_+this.innerTopViewY;}};return{ChartTransform,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ChartTrack=tr.ui.b.define('chart-track',tr.ui.tracks.Track);ChartTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('chart-track');this.series_=undefined;this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;this.showYAxisLabels_=undefined;this.showGridLines_=undefined;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get series(){return this.series_;},set series(series){this.series_=series;this.calculateAxisDataAndPadding_();this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;this.invalidateDrawingContainer();},get showYAxisLabels(){return this.showYAxisLabels_;},set showYAxisLabels(showYAxisLabels){this.showYAxisLabels_=showYAxisLabels;this.invalidateDrawingContainer();},get showGridLines(){return this.showGridLines_;},set showGridLines(showGridLines){this.showGridLines_=showGridLines;this.invalidateDrawingContainer();},get hasVisibleContent(){return!!this.series&&this.series.length>0;},calculateAxisDataAndPadding_(){if(!this.series_){this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;return;}\nconst axisGuidToAxisData={};let topPadding=0;let bottomPadding=0;this.series_.forEach(function(series){const seriesYAxis=series.seriesYAxis;const axisGuid=seriesYAxis.guid;if(!(axisGuid in axisGuidToAxisData)){axisGuidToAxisData[axisGuid]={axis:seriesYAxis,series:[]};if(!this.axes_)this.axes_=[];this.axes_.push(seriesYAxis);}\naxisGuidToAxisData[axisGuid].series.push(series);topPadding=Math.max(topPadding,series.topPadding);bottomPadding=Math.max(bottomPadding,series.bottomPadding);},this);this.axisGuidToAxisData_=axisGuidToAxisData;this.topPadding_=topPadding;this.bottomPadding_=bottomPadding;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawChart_(viewLWorld,viewRWorld);break;}},drawChart_(viewLWorld,viewRWorld){if(!this.series_)return;const ctx=this.context();const displayTransform=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const highDetails=this.viewport.highDetails;const width=bounds.width*pixelRatio;const height=bounds.height*pixelRatio;const topPadding=this.topPadding_*pixelRatio;const bottomPadding=this.bottomPadding_*pixelRatio;ctx.save();ctx.beginPath();ctx.rect(0,0,width,height);ctx.clip();if(this.axes_){if((this.showGridLines_||this.showYAxisLabels_)&&this.axes_.length>1){throw new Error('Only one axis allowed when showing grid lines.');}\nfor(const yAxis of this.axes_){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,yAxis,width,height,topPadding,bottomPadding,pixelRatio);yAxis.draw(ctx,chartTransform,this.showYAxisLabels_,this.showGridLines_);}}\nfor(const series of this.series){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,series.seriesYAxis,width,height,topPadding,bottomPadding,pixelRatio);series.draw(ctx,chartTransform,highDetails);}\nctx.restore();},addEventsToTrackMap(eventToTrackMap){this.series_.forEach(function(series){series.points.forEach(function(point){point.addToTrackMap(eventToTrackMap,this);},this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){this.series_.forEach(function(series){series.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},this);},addEventNearToProvidedEventToSelection(event,offset,selection){let foundItem=false;this.series_.forEach(function(series){foundItem=foundItem||series.addEventNearToProvidedEventToSelection(event,offset,selection);},this);return foundItem;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.series_.forEach(function(series){series.addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);},this);},autoSetAllAxes(opt_config){for(const axisData of Object.values(this.axisGuidToAxisData_)){const seriesYAxis=axisData.axis;const series=axisData.series;seriesYAxis.autoSetFromSeries(series,opt_config);}},autoSetAxis(seriesYAxis,opt_config){const series=this.axisGuidToAxisData_[seriesYAxis.guid].series;seriesYAxis.autoSetFromSeries(series,opt_config);}};return{ChartTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ChartTrack=tr.ui.tracks.ChartTrack;const CpuUsageTrack=tr.ui.b.define('cpu-usage-track',ChartTrack);CpuUsageTrack.prototype={__proto__:ChartTrack.prototype,decorate(viewport){ChartTrack.prototype.decorate.call(this,viewport);this.classList.add('cpu-usage-track');this.heading='CPU usage';this.cpuUsageSeries_=undefined;},initialize(model){if(model!==undefined){this.cpuUsageSeries_=model.device.cpuUsageSeries;}else{this.cpuUsageSeries_=undefined;}\nthis.series=this.buildChartSeries_();this.autoSetAllAxes({expandMax:true});},get hasVisibleContent(){return!!this.cpuUsageSeries_&&this.cpuUsageSeries_.samples.length>0;},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.series_,this);},buildChartSeries_(yAxis,color){if(!this.hasVisibleContent)return[];yAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const usageSamples=this.cpuUsageSeries_.samples;const pts=new Array(usageSamples.length+1);for(let i=0;i<usageSamples.length;i++){pts[i]=new tr.ui.tracks.ChartPoint(undefined,usageSamples[i].start,usageSamples[i].usage);}\npts[usageSamples.length]=new tr.ui.tracks.ChartPoint(undefined,usageSamples[usageSamples.length-1].start,0);const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:color};return[new tr.ui.tracks.ChartSeries(pts,yAxis,renderingConfig)];},};return{CpuUsageTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ChartTrack=tr.ui.tracks.ChartTrack;const PowerSeriesTrack=tr.ui.b.define('power-series-track',ChartTrack);PowerSeriesTrack.prototype={__proto__:ChartTrack.prototype,decorate(viewport){ChartTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('power-series-track');this.heading='Power';this.powerSeries_=undefined;},set powerSeries(powerSeries){this.powerSeries_=powerSeries;this.series=this.buildChartSeries_();this.autoSetAllAxes({expandMax:true});},get hasVisibleContent(){return(this.powerSeries_&&this.powerSeries_.samples.length>0);},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.powerSeries_,this);},buildChartSeries_(){if(!this.hasVisibleContent)return[];const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const pts=this.powerSeries_.samples.map(function(smpl){return new tr.ui.tracks.ChartPoint(smpl,smpl.start,smpl.powerInW);});const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString(this.heading)};return[new tr.ui.tracks.ChartSeries(pts,seriesYAxis,renderingConfig)];}};return{PowerSeriesTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SpacingTrack=tr.ui.b.define('spacing-track',tr.ui.tracks.Track);SpacingTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('spacing-track');this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},addAllEventsMatchingFilterToSelection(filter,selection){}};return{SpacingTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ContainerTrack=tr.ui.tracks.ContainerTrack;const DeviceTrack=tr.ui.b.define('device-track',ContainerTrack);DeviceTrack.prototype={__proto__:ContainerTrack.prototype,decorate(viewport){ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('device-track');this.device_=undefined;this.powerSeriesTrack_=undefined;},get device(){return this.device_;},set device(device){this.device_=device;this.updateContents_();},get powerSeriesTrack(){return this.powerSeriesTrack_;},get hasVisibleContent(){return(this.powerSeriesTrack_&&this.powerSeriesTrack_.hasVisibleContent);},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.device,this);},addEventsToTrackMap(eventToTrackMap){this.tracks_.forEach(function(track){track.addEventsToTrackMap(eventToTrackMap);});},appendPowerSeriesTrack_(){this.powerSeriesTrack_=new tr.ui.tracks.PowerSeriesTrack(this.viewport);this.powerSeriesTrack_.powerSeries=this.device.powerSeries;if(this.powerSeriesTrack_.hasVisibleContent){Polymer.dom(this).appendChild(this.powerSeriesTrack_);Polymer.dom(this).appendChild(new tr.ui.tracks.SpacingTrack(this.viewport));}},updateContents_(){this.clearTracks_();this.appendPowerSeriesTrack_();}};return{DeviceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const SYSTEM_MEMORY_CHART_RENDERING_CONFIG={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString('systemMemory'),backgroundOpacity:0.8};const SYSTEM_MEMORY_SERIES_NAMES=['Used (KB)','Swapped (KB)'];function extractGlobalMemoryDumpUsedSizes(globalMemoryDump,addSize){for(const[pid,pmd]of\nObject.entries(globalMemoryDump.processMemoryDumps)){const mostRecentVmRegions=pmd.mostRecentVmRegions;if(mostRecentVmRegions===undefined)continue;addSize(pid,mostRecentVmRegions.byteStats.proportionalResident||0,pmd.process.userFriendlyName);}}\nfunction extractProcessMemoryDumpAllocatorSizes(processMemoryDump,addSize){const allocatorDumps=processMemoryDump.memoryAllocatorDumps;if(allocatorDumps===undefined)return;allocatorDumps.forEach(function(allocatorDump){if(allocatorDump.fullName==='tracing')return;const allocatorSize=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(allocatorSize===undefined)return;const allocatorSizeValue=allocatorSize.value;if(allocatorSizeValue===undefined)return;addSize(allocatorDump.fullName,allocatorSizeValue);});}\nfunction extractGlobalMemoryDumpAllocatorSizes(globalMemoryDump,addSize){for(const pmd of Object.values(globalMemoryDump.processMemoryDumps)){extractProcessMemoryDumpAllocatorSizes(pmd,addSize);}}\nfunction buildMemoryChartSeries(memoryDumps,dumpSizeExtractor){const dumpCount=memoryDumps.length;const idToTimestampToPoint={};const idToName={};memoryDumps.forEach(function(dump,index){dumpSizeExtractor(dump,function addSize(id,size,opt_name){let timestampToPoint=idToTimestampToPoint[id];if(timestampToPoint===undefined){idToTimestampToPoint[id]=timestampToPoint=new Array(dumpCount);for(let i=0;i<dumpCount;i++){const modelItem=memoryDumps[i];timestampToPoint[i]=new tr.ui.tracks.ChartPoint(modelItem,modelItem.start,0);}}\ntimestampToPoint[index].y+=size;if(opt_name!==undefined)idToName[id]=opt_name;});});const ids=Object.keys(idToTimestampToPoint);if(ids.length===0)return undefined;ids.sort();for(let i=0;i<dumpCount;i++){let baseSize=0;for(let j=ids.length-1;j>=0;j--){const point=idToTimestampToPoint[ids[j]][i];point.yBase=baseSize;point.y+=baseSize;baseSize=point.y;}}\nconst seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0);const series=ids.map(function(id){const colorId=ColorScheme.getColorIdForGeneralPurposeString(idToName[id]||id);const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId,backgroundOpacity:0.8};return new tr.ui.tracks.ChartSeries(idToTimestampToPoint[id],seriesYAxis,renderingConfig);});series.reverse();return series;}\nfunction buildMemoryLetterDots(memoryDumps){const backgroundMemoryColorId=ColorScheme.getColorIdForReservedName('background_memory_dump');const lightMemoryColorId=ColorScheme.getColorIdForReservedName('light_memory_dump');const detailedMemoryColorId=ColorScheme.getColorIdForReservedName('detailed_memory_dump');return memoryDumps.map(function(memoryDump){let memoryColorId;switch(memoryDump.levelOfDetail){case BACKGROUND:memoryColorId=backgroundMemoryColorId;break;case DETAILED:memoryColorId=detailedMemoryColorId;break;case LIGHT:default:memoryColorId=lightMemoryColorId;}\nreturn new tr.ui.tracks.LetterDot(memoryDump,'M',memoryColorId,memoryDump.start);});}\nfunction buildGlobalUsedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpUsedSizes);}\nfunction buildProcessAllocatedMemoryChartSeries(processMemoryDumps){return buildMemoryChartSeries(processMemoryDumps,extractProcessMemoryDumpAllocatorSizes);}\nfunction buildGlobalAllocatedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpAllocatorSizes);}\nfunction buildSystemMemoryChartSeries(model){if(model.kernel.counters===undefined)return;const memoryCounter=model.kernel.counters['global.SystemMemory'];if(memoryCounter===undefined)return;const tracks=[];for(const name of SYSTEM_MEMORY_SERIES_NAMES){const series=memoryCounter.series.find(series=>series.name===name);if(series===undefined||series.samples.length===0)return;const chartPoints=[];const valueRange=new tr.b.math.Range();for(const sample of series.samples){chartPoints.push(new tr.ui.tracks.ChartPoint(sample,sample.timestamp,sample.value,0));valueRange.addValue(sample.value);}\nconst baseLine=Math.max(0,valueRange.min-valueRange.range);const axisY=new tr.ui.tracks.ChartSeriesYAxis(baseLine,valueRange.max);const chartSeries=[new tr.ui.tracks.ChartSeries(chartPoints,axisY,SYSTEM_MEMORY_CHART_RENDERING_CONFIG)];tracks.push({name:'System Memory '+name,series:chartSeries});}\nreturn tracks;}\nreturn{buildMemoryLetterDots,buildGlobalUsedMemoryChartSeries,buildProcessAllocatedMemoryChartSeries,buildGlobalAllocatedMemoryChartSeries,buildSystemMemoryChartSeries,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const USED_MEMORY_TRACK_HEIGHT=50;const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const GlobalMemoryDumpTrack=tr.ui.b.define('global-memory-dump-track',tr.ui.tracks.ContainerTrack);GlobalMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendDumpDotsTrack_();this.appendUsedMemoryTrack_();this.appendAllocatedMemoryTrack_();},appendDumpDotsTrack_(){const items=tr.ui.tracks.buildMemoryLetterDots(this.memoryDumps_);if(!items)return;const track=new tr.ui.tracks.LetterDotTrack(this.viewport);track.heading='Memory Dumps';track.items=items;Polymer.dom(this).appendChild(track);},appendUsedMemoryTrack_(){const tracks=[];const perProcessSeries=tr.ui.tracks.buildGlobalUsedMemoryChartSeries(this.memoryDumps_);if(perProcessSeries!==undefined){tracks.push({name:'Memory per process',series:perProcessSeries});}else{tracks.push.apply(tracks,tr.ui.tracks.buildSystemMemoryChartSeries(this.memoryDumps_[0].model));}\nfor(const{name,series}of tracks){const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading=name;track.height=USED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{GlobalMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.b',function(){function FastRectRenderer(ctx,xMin,xMax,minRectSize,maxMergeDist,palette){this.ctx_=ctx;this.xMin_=xMin;this.xMax_=xMax;this.minRectSize_=minRectSize;this.maxMergeDist_=maxMergeDist;this.palette_=palette;}\nFastRectRenderer.prototype={y_:0,h_:0,merging_:false,mergeStartX_:0,mergeCurRight_:0,mergedColorId_:0,mergedAlpha_:0,setYandH(y,h){if(this.y_===y&&this.h_===h){return;}\nthis.flush();this.y_=y;this.h_=h;},fillRect(x,w,colorId,alpha){const r=x+w;if(w<this.minRectSize_){if(r-this.mergeStartX_>this.maxMergeDist_){this.flush();}\nif(!this.merging_){this.merging_=true;this.mergeStartX_=x;this.mergeCurRight_=r;this.mergedColorId_=colorId;this.mergedAlpha_=alpha;}else{this.mergeCurRight_=r;if(this.mergedAlpha_<alpha||(this.mergedAlpha_===alpha&&this.mergedColorId_<colorId)){this.mergedAlpha_=alpha;this.mergedColorId_=colorId;}}}else{if(this.merging_){this.flush();}\nthis.ctx_.fillStyle=this.palette_[colorId];this.ctx_.globalAlpha=alpha;const xLeft=Math.max(x,this.xMin_);const xRight=Math.min(r,this.xMax_);if(xLeft<xRight){this.ctx_.fillRect(xLeft,this.y_,xRight-xLeft,this.h_);}}},flush(){if(this.merging_){this.ctx_.fillStyle=this.palette_[this.mergedColorId_];this.ctx_.globalAlpha=this.mergedAlpha_;const xLeft=Math.max(this.mergeStartX_,this.xMin_);const xRight=Math.min(this.mergeCurRight_,this.xMax_);if(xLeft<xRight){this.ctx_.fillRect(xLeft,this.y_,xRight-xLeft,this.h_);}\nthis.merging_=false;}}};return{FastRectRenderer,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const RectTrack=tr.ui.b.define('rect-track',tr.ui.tracks.Track);RectTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('rect-track');this.asyncStyle_=false;this.rects_=null;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},set selectionGenerator(generator){this.heading_.selectionGenerator=generator;},set expanded(expanded){this.heading_.expanded=!!expanded;},set arrowVisible(arrowVisible){this.heading_.arrowVisible=!!arrowVisible;},get expanded(){return this.heading_.expanded;},get asyncStyle(){return this.asyncStyle_;},set asyncStyle(v){this.asyncStyle_=!!v;},get rects(){return this.rects_;},set rects(rects){this.rects_=rects||[];this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;this.invalidateDrawingContainer();},get hasVisibleContent(){return this.rects_.length>0;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawRects_(viewLWorld,viewRWorld);break;}},drawRects_(viewLWorld,viewRWorld){const ctx=this.context();ctx.save();const bounds=this.getBoundingClientRect();tr.ui.b.drawSlices(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.rects_,this.asyncStyle_);ctx.restore();if(bounds.height<=6)return;let fontSize;let yOffset;if(bounds.height<15){fontSize=6;yOffset=1.0;}else{fontSize=10;yOffset=2.5;}\ntr.ui.b.drawLabels(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,this.rects_,this.asyncStyle_,fontSize,yOffset);},addEventsToTrackMap(eventToTrackMap){if(this.rects_===undefined||this.rects_===null){return;}\nthis.rects_.forEach(function(rect){rect.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onRect(rect){rect.addToSelection(selection);}\nonRect=onRect.bind(this);const instantEventWidth=2*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.rects_,function(x){return x.start;},function(x){return x.duration===0?x.duration+instantEventWidth:x.duration;},loWX,hiWX,onRect);},addEventNearToProvidedEventToSelection(event,offset,selection){const index=this.rects_.findIndex(rect=>rect.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.rects_.length)return false;this.rects_[newIndex].addToSelection(selection);return true;},addAllEventsMatchingFilterToSelection(filter,selection){for(let i=0;i<this.rects_.length;++i){const modelItem=this.rects_[i].modelItem;if(!modelItem)continue;if(filter.matchSlice(modelItem)){selection.push(modelItem);}}},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const rect=tr.b.findClosestIntervalInSortedIntervals(this.rects_,function(x){return x.start;},function(x){return x.end;},worldX,worldMaxDist);if(!rect)return;rect.addToSelection(selection);}};function Rect(modelItem,title,colorId,start,duration){tr.model.ProxySelectableItem.call(this,modelItem);this.title=title;this.colorId=colorId;this.start=start;this.duration=duration;this.end=start+duration;}\nRect.prototype={__proto__:tr.model.ProxySelectableItem.prototype};return{RectTrack,Rect,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SliceTrack=tr.ui.b.define('slice-track',tr.ui.tracks.RectTrack);SliceTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get slices(){return this.rects;},set slices(slices){this.rects=slices;}};return{SliceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const CpuTrack=tr.ui.b.define('cpu-track',tr.ui.tracks.ContainerTrack);CpuTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('cpu-track');this.detailedMode_=true;},get cpu(){return this.cpu_;},set cpu(cpu){this.cpu_=cpu;this.updateContents_();},get detailedMode(){return this.detailedMode_;},set detailedMode(detailedMode){this.detailedMode_=detailedMode;this.updateContents_();},get tooltip(){return this.tooltip_;},set tooltip(value){this.tooltip_=value;this.updateContents_();},get hasVisibleContent(){if(this.cpu_===undefined)return false;const cpu=this.cpu_;if(cpu.slices.length)return true;if(cpu.samples&&cpu.samples.length)return true;if(Object.keys(cpu.counters).length>0)return true;return false;},updateContents_(){this.detach();if(!this.cpu_)return;const slices=this.cpu_.slices;if(slices.length){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;track.heading=this.cpu_.userFriendlyName+':';Polymer.dom(this).appendChild(track);}\nif(this.detailedMode_){this.appendSamplesTracks_();for(const counterName in this.cpu_.counters){const counter=this.cpu_.counters[counterName];const track=new tr.ui.tracks.CounterTrack(this.viewport);track.heading=this.cpu_.userFriendlyName+' '+\ncounter.name+':';track.counter=counter;Polymer.dom(this).appendChild(track);}}},appendSamplesTracks_(){const samples=this.cpu_.samples;if(samples===undefined||samples.length===0){return;}\nconst samplesByTitle={};samples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];}\nsamplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SliceTrack(this.viewport);samplesTrack.group=this.cpu_;samplesTrack.slices=samples;samplesTrack.heading=this.cpu_.userFriendlyName+': '+\nsampleTitle;samplesTrack.tooltip=this.cpu_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;i<samplesTrack.slices.length;i++){selection.push(samplesTrack.slices[i]);}\nreturn selection;};Polymer.dom(this).appendChild(samplesTrack);},this);}};return{CpuTrack,};});'use strict';tr.exportTo('tr.model',function(){const Settings=tr.b.Settings;function ModelSettings(model){this.model=model;this.objectsByKey_=[];this.nonuniqueKeys_=[];this.buildObjectsByKeyMap_();this.removeNonuniqueKeysFromSettings_();this.ephemeralSettingsByGUID_={};}\nModelSettings.prototype={buildObjectsByKeyMap_(){const objects=[];this.model.iterateAllPersistableObjects(function(o){objects.push(o);});const objectsByKey={};const NONUNIQUE_KEY='nonuniqueKey';for(let i=0;i<objects.length;i++){const object=objects[i];const objectKey=object.getSettingsKey();if(!objectKey)continue;if(objectsByKey[objectKey]===undefined){objectsByKey[objectKey]=object;continue;}\nobjectsByKey[objectKey]=NONUNIQUE_KEY;}\nconst nonuniqueKeys={};Object.keys(objectsByKey).forEach(function(objectKey){if(objectsByKey[objectKey]!==NONUNIQUE_KEY){return;}\ndelete objectsByKey[objectKey];nonuniqueKeys[objectKey]=true;});this.nonuniqueKeys=nonuniqueKeys;this.objectsByKey_=objectsByKey;},removeNonuniqueKeysFromSettings_(){const settings=Settings.get('trace_model_settings',{});let settingsChanged=false;Object.keys(settings).forEach(function(objectKey){if(!this.nonuniqueKeys[objectKey]){return;}\nsettingsChanged=true;delete settings[objectKey];},this);if(settingsChanged){Settings.set('trace_model_settings',settings);}},hasUniqueSettingKey(object){const objectKey=object.getSettingsKey();if(!objectKey)return false;return this.objectsByKey_[objectKey]!==undefined;},getSettingFor(object,objectLevelKey,defaultValue){const objectKey=object.getSettingsKey();if(!objectKey||!this.objectsByKey_[objectKey]){const settings=this.getEphemeralSettingsFor_(object);const ephemeralValue=settings[objectLevelKey];if(ephemeralValue!==undefined){return ephemeralValue;}\nreturn defaultValue;}\nconst settings=Settings.get('trace_model_settings',{});if(!settings[objectKey]){settings[objectKey]={};}\nconst value=settings[objectKey][objectLevelKey];if(value!==undefined){return value;}\nreturn defaultValue;},setSettingFor(object,objectLevelKey,value){const objectKey=object.getSettingsKey();if(!objectKey||!this.objectsByKey_[objectKey]){this.getEphemeralSettingsFor_(object)[objectLevelKey]=value;return;}\nconst settings=Settings.get('trace_model_settings',{});if(!settings[objectKey]){settings[objectKey]={};}\nif(settings[objectKey][objectLevelKey]===value){return;}\nsettings[objectKey][objectLevelKey]=value;Settings.set('trace_model_settings',settings);},getEphemeralSettingsFor_(object){if(object.guid===undefined){throw new Error('Only objects with GUIDs can be persisted');}\nif(this.ephemeralSettingsByGUID_[object.guid]===undefined){this.ephemeralSettingsByGUID_[object.guid]={};}\nreturn this.ephemeralSettingsByGUID_[object.guid];}};return{ModelSettings,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const CounterTrack=tr.ui.b.define('counter-track',tr.ui.tracks.ChartTrack);CounterTrack.prototype={__proto__:tr.ui.tracks.ChartTrack.prototype,decorate(viewport){tr.ui.tracks.ChartTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('counter-track');},get counter(){return this.chart;},set counter(counter){this.heading=counter.name+': ';this.series=CounterTrack.buildChartSeriesFromCounter(counter);this.autoSetAllAxes({expandMax:true});},getModelEventFromItem(chartValue){return chartValue;}};CounterTrack.buildChartSeriesFromCounter=function(counter){const numSeries=counter.series.length;const totals=counter.totals;const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const chartSeries=counter.series.map(function(series,seriesIndex){const chartPoints=series.samples.map(function(sample,sampleIndex){const total=totals[sampleIndex*numSeries+seriesIndex];return new tr.ui.tracks.ChartPoint(sample,sample.timestamp,total);});const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:series.color};return new tr.ui.tracks.ChartSeries(chartPoints,seriesYAxis,renderingConfig);});chartSeries.reverse();return chartSeries;};return{CounterTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const startCompare=function(x,y){return x.start-y.start;};const FrameTrack=tr.ui.b.define('frame-track',tr.ui.tracks.LetterDotTrack);FrameTrack.prototype={__proto__:tr.ui.tracks.LetterDotTrack.prototype,decorate(viewport){tr.ui.tracks.LetterDotTrack.prototype.decorate.call(this,viewport);this.heading='Frames';this.frames_=undefined;this.items=undefined;},get frames(){return this.frames_;},set frames(frames){this.frames_=frames;if(frames===undefined)return;this.frames_=this.frames_.slice();this.frames_.sort(startCompare);this.items=this.frames_.map(function(frame){return new FrameDot(frame);});}};function FrameDot(frame){tr.ui.tracks.LetterDot.call(this,frame,'F',frame.colorId,frame.start);}\nFrameDot.prototype={__proto__:tr.ui.tracks.LetterDot.prototype};return{FrameTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const MultiRowTrack=tr.ui.b.define('multi-row-track',tr.ui.tracks.ContainerTrack);MultiRowTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.tooltip_='';this.heading_='';this.groupingSource_=undefined;this.itemsToGroup_=undefined;this.defaultToCollapsedWhenSubRowCountMoreThan=1;this.currentSubRowsWithHeadings_=undefined;this.expanded_=true;},get itemsToGroup(){return this.itemsToGroup_;},setItemsToGroup(itemsToGroup,opt_groupingSource){this.itemsToGroup_=itemsToGroup;this.groupingSource_=opt_groupingSource;this.currentSubRowsWithHeadings_=undefined;this.updateContents_();this.updateExpandedStateFromGroupingSource_();},setPrebuiltSubRows(groupingSource,subRowsWithHeadings){this.itemsToGroup_=undefined;this.groupingSource_=groupingSource;this.currentSubRowsWithHeadings_=subRowsWithHeadings;this.updateContents_();this.updateExpandedStateFromGroupingSource_();},get heading(){return this.heading_;},set heading(h){this.heading_=h;this.updateHeadingAndTooltip_();},get tooltip(){return this.tooltip_;},set tooltip(t){this.tooltip_=t;this.updateHeadingAndTooltip_();},get subRows(){return this.currentSubRowsWithHeadings_.map(elem=>elem.row);},get hasVisibleContent(){return this.children.length>0;},get expanded(){return this.expanded_;},set expanded(expanded){if(this.expanded_===expanded)return;this.expanded_=expanded;this.expandedStateChanged_();},onHeadingClicked_(e){if(this.subRows.length<=1)return;this.expanded=!this.expanded;if(this.groupingSource_){const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);modelSettings.setSettingFor(this.groupingSource_,'expanded',this.expanded);}\ne.stopPropagation();},updateExpandedStateFromGroupingSource_(){if(this.groupingSource_){const numSubRows=this.subRows.length;const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);if(numSubRows>1){let defaultExpanded;if(numSubRows>this.defaultToCollapsedWhenSubRowCountMoreThan){defaultExpanded=false;}else{defaultExpanded=true;}\nthis.expanded=modelSettings.getSettingFor(this.groupingSource_,'expanded',defaultExpanded);}else{this.expanded=undefined;}}},expandedStateChanged_(){const children=this.children;const minH=Math.max(2,Math.ceil(18/children.length));const h=(this.expanded_?18:minH)+'px';for(let i=0;i<children.length;i++){children[i].height=h;if(i===0){children[i].arrowVisible=true;}\nchildren[i].expanded=this.expanded;}\nif(children.length===1){children[0].expanded=true;children[0].arrowVisible=false;}},updateContents_(){tr.ui.tracks.ContainerTrack.prototype.updateContents_.call(this);this.detach();if(this.currentSubRowsWithHeadings_===undefined){if(this.itemsToGroup_===undefined){return;}\nconst subRows=this.buildSubRows_(this.itemsToGroup_);this.currentSubRowsWithHeadings_=subRows.map(row=>{return{row,heading:undefined};});}\nif(this.currentSubRowsWithHeadings_===undefined||this.currentSubRowsWithHeadings_.length===0){return;}\nconst addSubTrackEx=(items,opt_heading)=>{const track=this.addSubTrack_(items);if(opt_heading!==undefined){track.heading=opt_heading;}\ntrack.addEventListener('heading-clicked',this.onHeadingClicked_.bind(this));};if(this.currentSubRowsWithHeadings_[0].heading!==undefined&&this.currentSubRowsWithHeadings_[0].heading!==this.heading_){addSubTrackEx([]);}\nfor(const subRowWithHeading of this.currentSubRowsWithHeadings_){const subRow=subRowWithHeading.row;if(subRow.length===0){continue;}\naddSubTrackEx(subRow,subRowWithHeading.heading);}\nthis.updateHeadingAndTooltip_();this.expandedStateChanged_();},updateHeadingAndTooltip_(){if(!Polymer.dom(this).firstChild)return;Polymer.dom(this).firstChild.heading=this.heading_;Polymer.dom(this).firstChild.tooltip=this.tooltip_;},buildSubRows_(itemsToGroup){throw new Error('Not implemented');},addSubTrack_(subRowItems){throw new Error('Not implemented');},areArrayContentsSame_(a,b){if(!a||!b)return false;if(!a.length||!b.length)return false;if(a.length!==b.length)return false;for(let i=0;i<a.length;++i){if(a[i]!==b[i])return false;}\nreturn true;}};return{MultiRowTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SelectionState=tr.model.SelectionState;const EventPresenter=tr.ui.b.EventPresenter;const ObjectInstanceTrack=tr.ui.b.define('object-instance-track',tr.ui.tracks.Track);ObjectInstanceTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('object-instance-track');this.objectInstances_=[];this.objectSnapshots_=[];this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get objectInstances(){return this.objectInstances_;},set objectInstances(objectInstances){if(!objectInstances||objectInstances.length===0){this.heading='';this.objectInstances_=[];this.objectSnapshots_=[];return;}\nthis.heading=objectInstances[0].baseTypeName;this.objectInstances_=objectInstances;this.objectSnapshots_=[];this.objectInstances_.forEach(function(instance){this.objectSnapshots_.push.apply(this.objectSnapshots_,instance.snapshots);},this);this.objectSnapshots_.sort(function(a,b){return a.ts-b.ts;});},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},get snapshotRadiusView(){return 7*(window.devicePixelRatio||1);},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawObjectInstances_(viewLWorld,viewRWorld);break;}},drawObjectInstances_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const height=bounds.height*pixelRatio;const halfHeight=height*0.5;const twoPi=Math.PI*2;const dt=this.viewport.currentDisplayTransform;const snapshotRadiusView=this.snapshotRadiusView;const snapshotRadiusWorld=dt.xViewVectorToWorld(height);const objectInstances=this.objectInstances_;let loI=tr.b.findLowIndexInSortedArray(objectInstances,function(instance){return instance.deletionTs;},viewLWorld);ctx.save();ctx.strokeStyle='rgb(0,0,0)';for(let i=loI;i<objectInstances.length;++i){const instance=objectInstances[i];const x=instance.creationTs;if(x>viewRWorld)break;const right=instance.deletionTs===Number.MAX_VALUE?viewRWorld:instance.deletionTs;const xView=dt.xWorldToView(x);const widthView=dt.xWorldVectorToView(right-x);ctx.fillStyle=EventPresenter.getObjectInstanceColor(instance);ctx.fillRect(xView,pixelRatio,widthView,height-2*pixelRatio);}\nctx.restore();const objectSnapshots=this.objectSnapshots_;loI=tr.b.findLowIndexInSortedArray(objectSnapshots,function(snapshot){return snapshot.ts+snapshotRadiusWorld;},viewLWorld);for(let i=loI;i<objectSnapshots.length;++i){const snapshot=objectSnapshots[i];const x=snapshot.ts;if(x-snapshotRadiusWorld>viewRWorld)break;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getObjectSnapshotColor(snapshot);ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView,0,twoPi);ctx.fill();if(snapshot.selected){ctx.lineWidth=5;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView-1,0,twoPi);ctx.lineWidth=2;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();}}\nctx.lineWidth=1;let selectionState=SelectionState.NONE;if(objectInstances.length&&objectInstances[0].selectionState===SelectionState.DIMMED){selectionState=SelectionState.DIMMED;}\nif(selectionState===SelectionState.DIMMED){const width=bounds.width*pixelRatio;ctx.fillStyle='rgba(255,255,255,0.5)';ctx.fillRect(0,0,width,height);ctx.restore();}},addEventsToTrackMap(eventToTrackMap){if(this.objectInstance_!==undefined){this.objectInstance_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);}\nif(this.objectSnapshots_!==undefined){this.objectSnapshots_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);}},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){let foundSnapshot=false;function onSnapshot(snapshot){selection.push(snapshot);foundSnapshot=true;}\nconst snapshotRadiusView=this.snapshotRadiusView;const snapshotRadiusWorld=viewPixWidthWorld*snapshotRadiusView;tr.b.iterateOverIntersectingIntervals(this.objectSnapshots_,function(x){return x.ts-snapshotRadiusWorld;},function(x){return 2*snapshotRadiusWorld;},loWX,hiWX,onSnapshot);if(foundSnapshot)return;tr.b.iterateOverIntersectingIntervals(this.objectInstances_,function(x){return x.creationTs;},function(x){return x.deletionTs-x.creationTs;},loWX,hiWX,(value)=>{selection.push(value);});},addEventNearToProvidedEventToSelection(event,offset,selection){let events;if(event instanceof tr.model.ObjectSnapshot){events=this.objectSnapshots_;}else if(event instanceof tr.model.ObjectInstance){events=this.objectInstances_;}else{throw new Error('Unrecognized event');}\nconst index=events.indexOf(event);const newIndex=index+offset;if(newIndex>=0&&newIndex<events.length){selection.push(events[newIndex]);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const snapshot=tr.b.findClosestElementInSortedArray(this.objectSnapshots_,function(x){return x.ts;},worldX,worldMaxDist);if(!snapshot)return;selection.push(snapshot);}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);tr.b.decorateExtensionRegistry(ObjectInstanceTrack,options);return{ObjectInstanceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ObjectInstanceGroupTrack=tr.ui.b.define('object-instance-group-track',tr.ui.tracks.MultiRowTrack);ObjectInstanceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('object-instance-group-track');this.objectInstances_=undefined;},get objectInstances(){return this.itemsToGroup;},set objectInstances(objectInstances){this.setItemsToGroup(objectInstances);},addSubTrack_(objectInstances){const hasMultipleRows=this.subRows.length>1;const track=new tr.ui.tracks.ObjectInstanceTrack(this.viewport);track.objectInstances=objectInstances;Polymer.dom(this).appendChild(track);return track;},buildSubRows_(objectInstances){objectInstances.sort(function(x,y){return x.creationTs-y.creationTs;});const subRows=[];for(let i=0;i<objectInstances.length;i++){const objectInstance=objectInstances[i];let found=false;for(let j=0;j<subRows.length;j++){const subRow=subRows[j];const lastItemInSubRow=subRow[subRow.length-1];if(objectInstance.creationTs>=lastItemInSubRow.deletionTs){found=true;subRow.push(objectInstance);break;}}\nif(!found){subRows.push([objectInstance]);}}\nreturn subRows;},updateHeadingAndTooltip_(){}};return{ObjectInstanceGroupTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const AsyncSliceGroupTrack=tr.ui.b.define('async-slice-group-track',tr.ui.tracks.MultiRowTrack);AsyncSliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('async-slice-group-track');this.group_=undefined;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);track.asyncStyle=true;return track;},get group(){return this.group_;},set group(group){this.group_=group;this.buildAndSetSubRows_();},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildAndSetSubRows_(){if(this.group_.viewSubGroups.length<=1){const rows=groupAsyncSlicesIntoSubRows(this.group_.slices);const rowsWithHeadings=rows.map(row=>{return{row,heading:undefined};});this.setPrebuiltSubRows(this.group_,rowsWithHeadings);return;}\nconst rowsWithHeadings=[];for(const subGroup of this.group_.viewSubGroups){const subGroupRows=groupAsyncSlicesIntoSubRows(subGroup.slices);if(subGroupRows.length===0){continue;}\nfor(let i=0;i<subGroupRows.length;i++){rowsWithHeadings.push({row:subGroupRows[i],heading:(i===0?subGroup.title:'')});}}\nthis.setPrebuiltSubRows(this.group_,rowsWithHeadings);}};function stripSlice_(slice){if(slice.subSlices!==undefined&&slice.subSlices.length===1){const subSlice=slice.subSlices[0];if(tr.b.math.approximately(subSlice.start,slice.start,1)&&tr.b.math.approximately(subSlice.duration,slice.duration,1)){return subSlice;}}\nreturn slice;}\nfunction makeLevelSubRows_(slices){const rows=[];const putSlice=(slice,level)=>{while(rows.length<=level){rows.push([]);}\nrows[level].push(slice);};const putSliceRecursively=(slice,level)=>{putSlice(slice,level);if(slice.subSlices!==undefined){for(const subSlice of slice.subSlices){putSliceRecursively(subSlice,level+1);}}};for(const slice of slices){putSliceRecursively(stripSlice_(slice),0);}\nreturn rows;}\nfunction groupAsyncSlicesIntoSubRows(slices,opt_skipSort){if(!opt_skipSort){slices.sort((x,y)=>x.start-y.start);}\nconst rows=[];let slicesLeft=slices;while(slicesLeft.length!==0){const fit=[];const unfit=[];let levelEndTime=-1;for(const slice of slicesLeft){if(slice.start>=levelEndTime){levelEndTime=slice.end;fit.push(slice);}else{unfit.push(slice);}}\nrows.push(...makeLevelSubRows_(fit));slicesLeft=unfit;}\nreturn rows;}\nreturn{AsyncSliceGroupTrack,groupAsyncSlicesIntoSubRows,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SampleTrack=tr.ui.b.define('sample-track',tr.ui.tracks.RectTrack);SampleTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get samples(){return this.rects;},set samples(samples){this.rects=samples;}};return{SampleTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SliceGroupTrack=tr.ui.b.define('slice-group-track',tr.ui.tracks.MultiRowTrack);SliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('slice-group-track');this.group_=undefined;this.defaultToCollapsedWhenSubRowCountMoreThan=100;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);return track;},get group(){return this.group_;},set group(group){this.group_=group;this.setItemsToGroup(this.group_.slices,this.group_);},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildSubRows_(slices){const precisionUnit=this.group.model.intrinsicTimeUnit;if(!slices.length)return[];const ops=[];for(let i=0;i<slices.length;i++){if(slices[i].subSlices){slices[i].subSlices.splice(0,slices[i].subSlices.length);}\nops.push(i);}\nops.sort(function(ix,iy){const x=slices[ix];const y=slices[iy];if(x.start!==y.start)return x.start-y.start;return ix-iy;});const subRows=[[]];this.badSlices_=[];for(let i=0;i<ops.length;i++){const op=ops[i];const slice=slices[op];let inserted=false;for(let j=subRows.length-1;j>=0;j--){if(subRows[j].length===0)continue;const insertedSlice=subRows[j][subRows[j].length-1];if(slice.start<insertedSlice.start){this.badSlices_.push(slice);inserted=true;}\nif(insertedSlice.bounds(slice,precisionUnit)){while(subRows.length<=j+1){subRows.push([]);}\nsubRows[j+1].push(slice);if(insertedSlice.subSlices){insertedSlice.subSlices.push(slice);}\ninserted=true;break;}}\nif(inserted)continue;subRows[0].push(slice);}\nreturn subRows;}};return{SliceGroupTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ThreadTrack=tr.ui.b.define('thread-track',tr.ui.tracks.ContainerTrack);ThreadTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('thread-track');this.heading_=document.createElement('tr-ui-b-heading');},get thread(){return this.thread_;},set thread(thread){this.thread_=thread;this.updateContents_();},get hasVisibleContent(){return this.tracks_.length>0;},get hasSlices(){return this.thread_.asyncSliceGroup.length>0||this.thread_.sliceGroup.length>0;},get hasTimeSlices(){return this.thread_.timeSlices;},get eventContainer(){return this.thread;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.thread,this);},updateContents_(){this.detach();if(!this.thread_)return;this.heading_.heading=this.thread_.userFriendlyName;this.heading_.tooltip=this.thread_.userFriendlyDetails;if(this.thread_.asyncSliceGroup.length){this.appendAsyncSliceTracks_();}\nthis.appendThreadSamplesTracks_();let needsHeading=false;if(this.thread_.timeSlices){const timeSlicesTrack=new tr.ui.tracks.SliceTrack(this.viewport);timeSlicesTrack.heading='';timeSlicesTrack.height=tr.ui.b.THIN_SLICE_HEIGHT+'px';timeSlicesTrack.slices=this.thread_.timeSlices;if(timeSlicesTrack.hasVisibleContent){needsHeading=true;Polymer.dom(this).appendChild(timeSlicesTrack);}}\nif(this.thread_.sliceGroup.length){const track=new tr.ui.tracks.SliceGroupTrack(this.viewport);track.heading=this.thread_.userFriendlyName;track.tooltip=this.thread_.userFriendlyDetails;track.group=this.thread_.sliceGroup;if(track.hasVisibleContent){needsHeading=false;Polymer.dom(this).appendChild(track);}}\nif(needsHeading){Polymer.dom(this).appendChild(this.heading_);}},appendAsyncSliceTracks_(){const subGroups=this.thread_.asyncSliceGroup.viewSubGroups;subGroups.forEach(function(subGroup){const asyncTrack=new tr.ui.tracks.AsyncSliceGroupTrack(this.viewport);asyncTrack.group=subGroup;asyncTrack.heading=subGroup.title;if(asyncTrack.hasVisibleContent){Polymer.dom(this).appendChild(asyncTrack);}},this);},appendThreadSamplesTracks_(){const threadSamples=this.thread_.samples;if(threadSamples===undefined||threadSamples.length===0){return;}\nconst samplesByTitle={};threadSamples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];}\nsamplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SampleTrack(this.viewport);samplesTrack.group=this.thread_;samplesTrack.samples=samples;samplesTrack.heading=this.thread_.userFriendlyName+': '+\nsampleTitle;samplesTrack.tooltip=this.thread_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;i<samplesTrack.samples.length;i++){selection.push(samplesTrack.samples[i]);}\nreturn selection;};Polymer.dom(this).appendChild(samplesTrack);},this);},collapsedDidChange(collapsed){if(collapsed){let h=parseInt(this.tracks[0].height);for(let i=0;i<this.tracks.length;++i){if(h>2){this.tracks[i].height=Math.floor(h)+'px';}else{this.tracks[i].style.display='none';}\nh=h*0.5;}}else{for(let i=0;i<this.tracks.length;++i){this.tracks[i].height=this.tracks[0].height;this.tracks[i].style.display='';}}}};return{ThreadTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const OtherThreadsTrack=tr.ui.b.define('other-threads-track',tr.ui.tracks.OtherThreadsTrack);const SpacingTrack=tr.ui.tracks.SpacingTrack;OtherThreadsTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.header_=document.createElement('tr-ui-b-heading');this.header_.addEventListener('click',this.onHeaderClick_.bind(this));this.header_.heading='Other Threads';this.header_.tooltip='Threads with only scheduling information';this.header_.arrowVisible=true;this.threads_=[];this.expanded=false;this.collapsible_=true;},set threads(threads){this.threads_=threads;this.updateContents_();},set collapsible(collapsible){this.collapsible_=collapsible;this.updateContents_();},onHeaderClick_(e){e.stopPropagation();e.preventDefault();this.expanded=!this.expanded;},get expanded(){return this.header_.expanded;},set expanded(expanded){expanded=!!expanded;if(this.expanded===expanded)return;this.header_.expanded=expanded;this.viewport_.dispatchChangeEvent();this.updateContents_();},updateContents_(){this.detach();if(this.collapsible_){Polymer.dom(this).appendChild(this.header_);}\nif(this.expanded||!this.collapsible_){for(const thread of this.threads_){const track=new tr.ui.tracks.ThreadTrack(this.viewport);track.thread=thread;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}}}};return{OtherThreadsTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ProcessSummaryTrack=tr.ui.b.define('process-summary-track',tr.ui.tracks.RectTrack);ProcessSummaryTrack.buildRectsFromProcess=function(process){if(!process)return[];const ops=[];const pushOp=function(isStart,time,slice){ops.push({isStart,time,slice});};for(const tid in process.threads){const sliceGroup=process.threads[tid].sliceGroup;sliceGroup.topLevelSlices.forEach(function(slice){pushOp(true,slice.start,undefined);pushOp(false,slice.end,undefined);});sliceGroup.slices.forEach(function(slice){if(slice.important){pushOp(true,slice.start,slice);pushOp(false,slice.end,slice);}});}\nops.sort(function(a,b){return a.time-b.time;});const rects=[];const genericColorId=ColorScheme.getColorIdForReservedName('generic_work');const pushRect=function(start,end,slice){rects.push(new tr.ui.tracks.Rect(slice,slice?slice.title:'',slice?slice.colorId:genericColorId,start,end-start));};let depth=0;let currentSlice=undefined;let lastStart=undefined;ops.forEach(function(op){depth+=op.isStart?1:-1;if(currentSlice){if(!op.isStart&&op.slice===currentSlice){pushRect(lastStart,op.time,currentSlice);lastStart=depth>=1?op.time:undefined;currentSlice=undefined;}}else{if(op.isStart){if(depth===1){lastStart=op.time;currentSlice=op.slice;}else if(op.slice){if(op.time!==lastStart){pushRect(lastStart,op.time,undefined);lastStart=op.time;}\ncurrentSlice=op.slice;}}else{if(depth===0){pushRect(lastStart,op.time,undefined);lastStart=undefined;}}}});return rects;};ProcessSummaryTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get process(){return this.process_;},set process(process){this.process_=process;this.rects=ProcessSummaryTrack.buildRectsFromProcess(process);}};return{ProcessSummaryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ObjectSnapshotView=tr.ui.analysis.ObjectSnapshotView;const ObjectInstanceView=tr.ui.analysis.ObjectInstanceView;const SpacingTrack=tr.ui.tracks.SpacingTrack;const ProcessTrackBase=tr.ui.b.define('process-track-base',tr.ui.tracks.ContainerTrack);ProcessTrackBase.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.processBase_=undefined;Polymer.dom(this).classList.add('process-track-base');Polymer.dom(this).classList.add('expanded');this.processNameEl_=tr.ui.b.createSpan();Polymer.dom(this.processNameEl_).classList.add('process-track-name');this.closeEl_=tr.ui.b.createSpan();Polymer.dom(this.closeEl_).classList.add('process-track-close');this.closeEl_.textContent='X';this.headerEl_=tr.ui.b.createDiv({className:'process-track-header'});Polymer.dom(this.headerEl_).appendChild(this.processNameEl_);Polymer.dom(this.headerEl_).appendChild(this.closeEl_);this.headerEl_.addEventListener('click',this.onHeaderClick_.bind(this));Polymer.dom(this).appendChild(this.headerEl_);},get processBase(){return this.processBase_;},set processBase(processBase){this.processBase_=processBase;if(this.processBase_){const modelSettings=new tr.model.ModelSettings(this.processBase_.model);const defaultValue=this.processBase_.important;this.expanded=modelSettings.getSettingFor(this.processBase_,'expanded',defaultValue);}\nthis.updateContents_();},get expanded(){return Polymer.dom(this).classList.contains('expanded');},set expanded(expanded){expanded=!!expanded;if(this.expanded===expanded)return;Polymer.dom(this).classList.toggle('expanded');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;const modelSettings=new tr.model.ModelSettings(this.processBase_.model);modelSettings.setSettingFor(this.processBase_,'expanded',expanded);this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},set visible(visible){if(visible===this.visible)return;this.hidden=!visible;tr.b.dispatchSimpleEvent(this,'visibility');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},get visible(){return!this.hidden;},get hasVisibleContent(){if(this.expanded){return this.children.length>1;}\nreturn true;},onHeaderClick_(e){e.stopPropagation();e.preventDefault();if(e.target===this.closeEl_){this.visible=false;}else{this.expanded=!this.expanded;}},updateContents_(){this.clearTracks_();if(!this.processBase_)return;if(!this.visible)return;Polymer.dom(this.processNameEl_).textContent=this.processBase_.userFriendlyName;this.headerEl_.title=this.processBase_.userFriendlyDetails;this.willAppendTracks_();if(this.expanded){this.appendMemoryDumpTrack_();this.appendObjectInstanceTracks_();this.appendCounterTracks_();this.appendFrameTrack_();this.appendThreadTracks_();}else{this.appendSummaryTrack_();}\nthis.didAppendTracks_();},willAppendTracks_(){},didAppendTracks_(){},appendMemoryDumpTrack_(){},appendSummaryTrack_(){const track=new tr.ui.tracks.ProcessSummaryTrack(this.viewport);track.process=this.process;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendFrameTrack_(){const frames=this.process?this.process.frames:undefined;if(!frames||!frames.length)return;const track=new tr.ui.tracks.FrameTrack(this.viewport);track.frames=frames;Polymer.dom(this).appendChild(track);},appendObjectInstanceTracks_(){const instancesByTypeName=this.processBase_.objects.getAllInstancesByTypeName();const instanceTypeNames=Object.keys(instancesByTypeName);instanceTypeNames.sort();let didAppendAtLeastOneTrack=false;instanceTypeNames.forEach(function(typeName){const allInstances=instancesByTypeName[typeName];let instanceViewInfo=ObjectInstanceView.getTypeInfo(undefined,typeName);let snapshotViewInfo=ObjectSnapshotView.getTypeInfo(undefined,typeName);if(instanceViewInfo&&!instanceViewInfo.metadata.showInTrackView){instanceViewInfo=undefined;}\nif(snapshotViewInfo&&!snapshotViewInfo.metadata.showInTrackView){snapshotViewInfo=undefined;}\nconst hasViewInfo=instanceViewInfo||snapshotViewInfo;const visibleInstances=[];for(let i=0;i<allInstances.length;i++){const instance=allInstances[i];if(instance.snapshots.length===0)continue;if(instance.hasImplicitSnapshots&&!hasViewInfo)continue;visibleInstances.push(instance);}\nif(visibleInstances.length===0)return;let trackConstructor=tr.ui.tracks.ObjectInstanceTrack.getConstructor(undefined,typeName);if(!trackConstructor){snapshotViewInfo=ObjectSnapshotView.getTypeInfo(undefined,typeName);if(snapshotViewInfo&&snapshotViewInfo.metadata.showInstances){trackConstructor=tr.ui.tracks.ObjectInstanceGroupTrack;}else{trackConstructor=tr.ui.tracks.ObjectInstanceTrack;}}\nconst track=new trackConstructor(this.viewport);track.objectInstances=visibleInstances;Polymer.dom(this).appendChild(track);didAppendAtLeastOneTrack=true;},this);if(didAppendAtLeastOneTrack){Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}},appendCounterTracks_(){const counters=Object.values(this.processBase.counters);counters.sort(tr.model.Counter.compare);counters.forEach(function(counter){const track=new tr.ui.tracks.CounterTrack(this.viewport);track.counter=counter;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}.bind(this));},appendThreadTracks_(){const threads=Object.values(this.processBase.threads);threads.sort(tr.model.Thread.compare);const otherThreads=[];let hasVisibleThreads=false;threads.forEach(function(thread){const track=new tr.ui.tracks.ThreadTrack(this.viewport);track.thread=thread;if(!track.hasVisibleContent)return;if(track.hasSlices){hasVisibleThreads=true;Polymer.dom(this).appendChild(track);Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}else if(track.hasTimeSlices){otherThreads.push(thread);}}.bind(this));if(otherThreads.length>0){const track=new tr.ui.tracks.OtherThreadsTrack(this.viewport);track.threads=otherThreads;track.collapsible=otherThreads.length>1&&hasVisibleThreads;Polymer.dom(this).appendChild(track);}}};return{ProcessTrackBase,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Cpu=tr.model.Cpu;const CpuTrack=tr.ui.tracks.cpu_track;const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const SpacingTrack=tr.ui.tracks.SpacingTrack;const KernelTrack=tr.ui.b.define('kernel-track',ProcessTrackBase);KernelTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){ProcessTrackBase.prototype.decorate.call(this,viewport);},set kernel(kernel){this.processBase=kernel;},get kernel(){return this.processBase;},get eventContainer(){return this.kernel;},get hasVisibleContent(){return this.children.length>1;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.kernel,this);},willAppendTracks_(){const cpus=Object.values(this.kernel.cpus);cpus.sort(tr.model.Cpu.compare);let didAppendAtLeastOneTrack=false;for(let i=0;i<cpus.length;++i){const cpu=cpus[i];const track=new tr.ui.tracks.CpuTrack(this.viewport);track.detailedMode=this.expanded;track.cpu=cpu;if(!track.hasVisibleContent)continue;Polymer.dom(this).appendChild(track);didAppendAtLeastOneTrack=true;}\nif(didAppendAtLeastOneTrack){Polymer.dom(this).appendChild(new SpacingTrack(this.viewport));}}};return{KernelTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const InteractionTrack=tr.ui.b.define('interaction-track',tr.ui.tracks.MultiRowTrack);InteractionTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);this.heading='Interactions';this.subRows_=[];},set model(model){this.setItemsToGroup(model.userModel.expectations,{guid:tr.b.GUID.allocateSimple(),model,getSettingsKey(){return undefined;}});},buildSubRows_(slices){if(this.subRows_.length){return this.subRows_;}\nthis.subRows_.push(...tr.ui.tracks.groupAsyncSlicesIntoSubRows(slices,true));return this.subRows_;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);return track;}};return{InteractionTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const LetterDotTrack=tr.ui.tracks.LetterDotTrack;const MemoryTrack=tr.ui.b.define('memory-track',LetterDotTrack);MemoryTrack.prototype={__proto__:LetterDotTrack.prototype,decorate(viewport){LetterDotTrack.prototype.decorate.call(this,viewport);this.classList.add('memory-track');this.heading='Memory Events';this.lowMemoryEvents_=undefined;},initialize(model){if(model!==undefined){this.lowMemoryEvents_=model.device.lowMemoryEvents;}else{this.lowMemoryEvents_=undefined;}\nif(this.hasVisibleContent){this.items=this.buildMemoryLetterDots_(this.lowMemoryEvents_);}},get hasVisibleContent(){return!!this.lowMemoryEvents_&&this.lowMemoryEvents_.length!==0;},buildMemoryLetterDots_(memoryEvents){return memoryEvents.map(memoryEvent=>new tr.ui.tracks.LetterDot(memoryEvent,'K',ColorScheme.getColorIdForReservedName('background_memory_dump'),memoryEvent.start));},};return{MemoryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const ProcessMemoryDumpTrack=tr.ui.b.define('process-memory-dump-track',tr.ui.tracks.ContainerTrack);ProcessMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendAllocatedMemoryTrack_();},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{ProcessMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const ProcessTrack=tr.ui.b.define('process-track',ProcessTrackBase);ProcessTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){tr.ui.tracks.ProcessTrackBase.prototype.decorate.call(this,viewport);},drawTrack(type){switch(type){case tr.ui.tracks.DrawType.INSTANT_EVENT:{if(!this.processBase.instantEvents||this.processBase.instantEvents.length===0){break;}\nconst ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);tr.ui.b.drawInstantSlicesAsLines(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.processBase.instantEvents,2);ctx.restore();break;}\ncase tr.ui.tracks.DrawType.BACKGROUND:this.drawBackground_();return;}\ntr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this,type);},drawBackground_(){const ctx=this.context();const canvasBounds=ctx.canvas.getBoundingClientRect();const pixelRatio=window.devicePixelRatio||1;const children=this.children;let draw=false;ctx.fillStyle='#eee';for(let i=0;i<children.length;++i){if(!(children[i]instanceof tr.ui.tracks.Track)||(children[i]instanceof tr.ui.tracks.SpacingTrack)){continue;}\ndraw=!draw;if(!draw)continue;const bounds=children[i].getBoundingClientRect();ctx.fillRect(0,pixelRatio*(bounds.top-canvasBounds.top),ctx.canvas.width,pixelRatio*bounds.height);}},set process(process){this.processBase=process;},get process(){return this.processBase;},get eventContainer(){return this.process;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.process,this);},appendMemoryDumpTrack_(){const processMemoryDumps=this.process.memoryDumps;if(processMemoryDumps.length){const pmdt=new tr.ui.tracks.ProcessMemoryDumpTrack(this.viewport_);pmdt.memoryDumps=processMemoryDumps;Polymer.dom(this).appendChild(pmdt);}},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onPickHit(instantEvent){selection.push(instantEvent);}\nconst instantEventWidth=2*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.processBase.instantEvents,function(x){return x.start;},function(x){return x.duration+instantEventWidth;},loWX,hiWX,onPickHit.bind(this));tr.ui.tracks.ContainerTrack.prototype.addIntersectingEventsInRangeToSelectionInWorldSpace.apply(this,arguments);},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.addClosestInstantEventToSelection(this.processBase.instantEvents,worldX,worldMaxDist,selection);tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,arguments);}};return{ProcessTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SelectionState=tr.model.SelectionState;const ColorScheme=tr.b.ColorScheme;const EventPresenter=tr.ui.b.EventPresenter;const ModelTrack=tr.ui.b.define('model-track',tr.ui.tracks.ContainerTrack);ModelTrack.VSYNC_HIGHLIGHT_ALPHA=0.1;ModelTrack.VSYNC_DENSITY_TRANSPARENT=0.20;ModelTrack.VSYNC_DENSITY_OPAQUE=0.10;ModelTrack.VSYNC_DENSITY_RANGE=ModelTrack.VSYNC_DENSITY_TRANSPARENT-ModelTrack.VSYNC_DENSITY_OPAQUE;ModelTrack.generateStripes_=function(times,minTime,maxTime){if(times.length===0)return[];const lowIndex=tr.b.findLowIndexInSortedArray(times,(x=>x),minTime);let highIndex=lowIndex-1;while(times[highIndex+1]<=maxTime){highIndex++;}\nconst stripes=[];for(let i=lowIndex-(lowIndex%2);i<=highIndex;i+=2){const left=i<lowIndex?minTime:times[i];const right=i+1>highIndex?maxTime:times[i+1];stripes.push(tr.b.math.Range.fromExplicitRange(left,right));}\nreturn stripes;};ModelTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('model-track');this.upperMode_=false;this.annotationViews_=[];this.vSyncTimes_=[];},get processViews(){return Polymer.dom(this).querySelectorAll('.process-track-base');},get upperMode(){return this.upperMode_;},set upperMode(upperMode){this.upperMode_=upperMode;this.updateContents_();},detach(){tr.ui.tracks.ContainerTrack.prototype.detach.call(this);},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();this.model_.addEventListener('annotationChange',this.updateAnnotations_.bind(this));},get hasVisibleContent(){return this.children.length>0;},updateContents_(){Polymer.dom(this).textContent='';if(!this.model_)return;if(this.upperMode_){this.updateContentsForUpperMode_();}else{this.updateContentsForLowerMode_();}},updateContentsForUpperMode_(){},updateContentsForLowerMode_(){if(this.model_.userModel.expectations.length>1){const mrt=new tr.ui.tracks.InteractionTrack(this.viewport_);mrt.model=this.model_;Polymer.dom(this).appendChild(mrt);}\nif(this.model_.alerts.length){const at=new tr.ui.tracks.AlertTrack(this.viewport_);at.alerts=this.model_.alerts;Polymer.dom(this).appendChild(at);}\nif(this.model_.globalMemoryDumps.length){const gmdt=new tr.ui.tracks.GlobalMemoryDumpTrack(this.viewport_);gmdt.memoryDumps=this.model_.globalMemoryDumps;Polymer.dom(this).appendChild(gmdt);}\nthis.appendDeviceTrack_();this.appendCpuUsageTrack_();this.appendMemoryTrack_();this.appendKernelTrack_();const processes=this.model_.getAllProcesses();processes.sort(tr.model.Process.compare);for(let i=0;i<processes.length;++i){const process=processes[i];const track=new tr.ui.tracks.ProcessTrack(this.viewport);track.process=process;if(!track.hasVisibleContent)continue;Polymer.dom(this).appendChild(track);}\nthis.viewport_.rebuildEventToTrackMap();this.viewport_.rebuildContainerToTrackMap();this.vSyncTimes_=this.model_.device.vSyncTimestamps;this.updateAnnotations_();},getContentBounds(){return this.model.bounds;},addAnnotation(annotation){this.model.addAnnotation(annotation);},removeAnnotation(annotation){this.model.removeAnnotation(annotation);},updateAnnotations_(){this.annotationViews_=[];const annotations=this.model_.getAllAnnotations();for(let i=0;i<annotations.length;i++){this.annotationViews_.push(annotations[i].getOrCreateView(this.viewport_));}\nthis.invalidateDrawingContainer();},addEventsToTrackMap(eventToTrackMap){if(!this.model_)return;const tracks=this.children;for(let i=0;i<tracks.length;++i){tracks[i].addEventsToTrackMap(eventToTrackMap);}\nif(this.instantEvents===undefined)return;const vp=this.viewport_;this.instantEvents.forEach(function(ev){eventToTrackMap.addEvent(ev,this);}.bind(this));},appendDeviceTrack_(){const device=this.model.device;const track=new tr.ui.tracks.DeviceTrack(this.viewport);track.device=this.model.device;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendKernelTrack_(){const kernel=this.model.kernel;const track=new tr.ui.tracks.KernelTrack(this.viewport);track.kernel=this.model.kernel;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendCpuUsageTrack_(){const track=new tr.ui.tracks.CpuUsageTrack(this.viewport);track.initialize(this.model);if(!track.hasVisibleContent)return;this.appendChild(track);},appendMemoryTrack_(){const track=new tr.ui.tracks.MemoryTrack(this.viewport);track.initialize(this.model);if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},drawTrack(type){const ctx=this.context();if(!this.model_)return;const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);const viewHeight=bounds.height*pixelRatio;switch(type){case tr.ui.tracks.DrawType.GRID:this.viewport.drawMajorMarkLines(ctx,viewHeight);ctx.restore();return;case tr.ui.tracks.DrawType.FLOW_ARROWS:if(this.model_.flowIntervalTree.size===0){ctx.restore();return;}\nthis.drawFlowArrows_(viewLWorld,viewRWorld);ctx.restore();return;case tr.ui.tracks.DrawType.INSTANT_EVENT:if(!this.model_.instantEvents||this.model_.instantEvents.length===0){break;}\ntr.ui.b.drawInstantSlicesAsLines(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.model_.instantEvents,4);break;case tr.ui.tracks.DrawType.MARKERS:if(!this.viewport.interestRange.isEmpty){this.viewport.interestRange.draw(ctx,viewLWorld,viewRWorld,viewHeight);this.viewport.interestRange.drawIndicators(ctx,viewLWorld,viewRWorld);}\nctx.restore();return;case tr.ui.tracks.DrawType.HIGHLIGHTS:this.drawVSyncHighlight(ctx,dt,viewLWorld,viewRWorld,viewHeight);ctx.restore();return;case tr.ui.tracks.DrawType.ANNOTATIONS:for(let i=0;i<this.annotationViews_.length;i++){this.annotationViews_[i].draw(ctx);}\nctx.restore();return;}\nctx.restore();tr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this,type);},drawFlowArrows_(viewLWorld,viewRWorld){const ctx=this.context();ctx.strokeStyle='rgba(0, 0, 0, 0.4)';ctx.fillStyle='rgba(0, 0, 0, 0.4)';ctx.lineWidth=1;const events=this.model_.flowIntervalTree.findIntersection(viewLWorld,viewRWorld);const canvasBounds=ctx.canvas.getBoundingClientRect();for(let i=0;i<events.length;++i){const onlyHighlighted=!tr.b.getCategoryParts(events[i].category).some((x)=>this.viewport.selectedFlowEvents.has(x));if(onlyHighlighted&&events[i].selectionState!==SelectionState.SELECTED&&events[i].selectionState!==SelectionState.HIGHLIGHTED){continue;}\nthis.drawFlowArrow_(ctx,events[i],canvasBounds);}},drawFlowArrow_(ctx,flowEvent,canvasBounds){const dt=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const startTrack=this.viewport.trackForEvent(flowEvent.startSlice);const endTrack=this.viewport.trackForEvent(flowEvent.endSlice);if(startTrack===undefined||endTrack===undefined)return;const startBounds=startTrack.getBoundingClientRect();const endBounds=endTrack.getBoundingClientRect();if(flowEvent.selectionState===SelectionState.SELECTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.HIGHLIGHTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.DIMMED){ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}else{let hasBoost=false;const startSlice=flowEvent.startSlice;hasBoost|=startSlice.selectionState===SelectionState.SELECTED;hasBoost|=startSlice.selectionState===SelectionState.HIGHLIGHTED;const endSlice=flowEvent.endSlice;hasBoost|=endSlice.selectionState===SelectionState.SELECTED;hasBoost|=endSlice.selectionState===SelectionState.HIGHLIGHTED;if(hasBoost){ctx.shadowBlur=1;ctx.shadowColor='rgba(255, 0, 0, 0.4)';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else{ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}}\nconst startSize=startBounds.left+startBounds.top+\nstartBounds.bottom+startBounds.right;const endSize=endBounds.left+endBounds.top+\nendBounds.bottom+endBounds.right;if(startSize===0&&endSize===0)return;const startY=this.calculateTrackY_(startTrack,canvasBounds);const endY=this.calculateTrackY_(endTrack,canvasBounds);const worldOffset=this.getBoundingClientRect().top-canvasBounds.top;const pixelStartY=pixelRatio*(startY-worldOffset);const pixelEndY=pixelRatio*(endY-worldOffset);const startXView=dt.xWorldToView(flowEvent.start);const endXView=dt.xWorldToView(flowEvent.end);const midXView=(startXView+endXView)/2;ctx.beginPath();ctx.moveTo(startXView,pixelStartY);ctx.bezierCurveTo(midXView,pixelStartY,midXView,pixelEndY,endXView,pixelEndY);ctx.stroke();const arrowWidth=5*pixelRatio;const distance=endXView-startXView;if(distance<=(2*arrowWidth))return;const tipX=endXView;const tipY=pixelEndY;const arrowHeight=(endBounds.height/4)*pixelRatio;tr.ui.b.drawTriangle(ctx,tipX,tipY,tipX-arrowWidth,tipY-arrowHeight,tipX-arrowWidth,tipY+arrowHeight);ctx.fill();},drawVSyncHighlight(ctx,dt,viewLWorld,viewRWorld,viewHeight){if(!this.viewport_.highlightVSync){return;}\nconst stripes=ModelTrack.generateStripes_(this.vSyncTimes_,viewLWorld,viewRWorld);if(stripes.length===0){return;}\nconst vSyncHighlightColor=new tr.b.Color(ColorScheme.getColorForReservedNameAsString('vsync_highlight_color'));const stripeRange=stripes[stripes.length-1].max-stripes[0].min;const stripeDensity=stripeRange?stripes.length/(dt.scaleX*stripeRange):0;const clampedStripeDensity=tr.b.math.clamp(stripeDensity,ModelTrack.VSYNC_DENSITY_OPAQUE,ModelTrack.VSYNC_DENSITY_TRANSPARENT);const opacity=(ModelTrack.VSYNC_DENSITY_TRANSPARENT-clampedStripeDensity)/ModelTrack.VSYNC_DENSITY_RANGE;if(opacity===0){return;}\nctx.fillStyle=vSyncHighlightColor.toStringWithAlphaOverride(ModelTrack.VSYNC_HIGHLIGHT_ALPHA*opacity);for(let i=0;i<stripes.length;i++){const xLeftView=dt.xWorldToView(stripes[i].min);const xRightView=dt.xWorldToView(stripes[i].max);ctx.fillRect(xLeftView,0,xRightView-xLeftView,viewHeight);}},calculateTrackY_(track,canvasBounds){const bounds=track.getBoundingClientRect();const size=bounds.left+bounds.top+bounds.bottom+bounds.right;if(size===0){return this.calculateTrackY_(Polymer.dom(track).parentNode,canvasBounds);}\nreturn bounds.top-canvasBounds.top+(bounds.height/2);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onPickHit(instantEvent){selection.push(instantEvent);}\nconst instantEventWidth=3*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.model_.instantEvents,function(x){return x.start;},function(x){return x.duration+instantEventWidth;},loWX,hiWX,onPickHit.bind(this));tr.ui.tracks.ContainerTrack.prototype.addIntersectingEventsInRangeToSelectionInWorldSpace.apply(this,arguments);},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.addClosestInstantEventToSelection(this.model_.instantEvents,worldX,worldMaxDist,selection);tr.ui.tracks.ContainerTrack.prototype.addClosestEventToSelection.apply(this,arguments);}};return{ModelTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const XAxisTrack=tr.ui.b.define('x-axis-track',tr.ui.tracks.Track);XAxisTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('x-axis-track');this.strings_secs_=[];this.strings_msecs_=[];this.strings_usecs_=[];this.strings_nsecs_=[];this.viewportChange_=this.viewportChange_.bind(this);viewport.addEventListener('change',this.viewportChange_);const heading=document.createElement('tr-ui-b-heading');heading.arrowVisible=false;Polymer.dom(this).appendChild(heading);},detach(){tr.ui.tracks.Track.prototype.detach.call(this);this.viewport.removeEventListener('change',this.viewportChange_);},viewportChange_(){if(this.viewport.interestRange.isEmpty){Polymer.dom(this).classList.remove('tall-mode');}else{Polymer.dom(this).classList.add('tall-mode');}},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GRID:this.drawGrid_(viewLWorld,viewRWorld);break;case tr.ui.tracks.DrawType.MARKERS:this.drawMarkers_(viewLWorld,viewRWorld);break;}},drawGrid_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const canvasBounds=ctx.canvas.getBoundingClientRect();const trackBounds=this.getBoundingClientRect();const width=canvasBounds.width*pixelRatio;const height=trackBounds.height*pixelRatio;const hasInterestRange=!this.viewport.interestRange.isEmpty;const xAxisHeightPx=hasInterestRange?(height*2)/5:height;const vp=this.viewport;const dt=vp.currentDisplayTransform;vp.updateMajorMarkData(viewLWorld,viewRWorld);const majorMarkDistanceWorld=vp.majorMarkWorldPositions.length>1?vp.majorMarkWorldPositions[1]-vp.majorMarkWorldPositions[0]:0;const numTicksPerMajor=5;const minorMarkDistanceWorld=majorMarkDistanceWorld/numTicksPerMajor;const minorMarkDistancePx=dt.xWorldVectorToView(minorMarkDistanceWorld);const minorTickHeight=Math.floor(xAxisHeightPx*0.25);ctx.save();ctx.lineWidth=Math.round(pixelRatio);const crispLineCorrection=(ctx.lineWidth%2)/2;ctx.translate(crispLineCorrection,-crispLineCorrection);ctx.fillStyle='rgb(0, 0, 0)';ctx.strokeStyle='rgb(0, 0, 0)';ctx.textAlign='left';ctx.textBaseline='top';ctx.font=(9*pixelRatio)+'px sans-serif';const tickLabels=[];ctx.beginPath();for(let i=0;i<vp.majorMarkWorldPositions.length;i++){const curXWorld=vp.majorMarkWorldPositions[i];const curXView=dt.xWorldToView(curXWorld);const displayText=vp.majorMarkUnit.format(curXWorld,{deltaValue:majorMarkDistanceWorld});ctx.fillText(displayText,curXView+(2*pixelRatio),0);tr.ui.b.drawLine(ctx,curXView,0,curXView,xAxisHeightPx);if(minorMarkDistancePx){for(let j=1;j<numTicksPerMajor;++j){const xView=Math.floor(curXView+minorMarkDistancePx*j);tr.ui.b.drawLine(ctx,xView,xAxisHeightPx-minorTickHeight,xView,xAxisHeightPx);}}}\nctx.strokeStyle='rgb(0, 0, 0)';tr.ui.b.drawLine(ctx,0,height,width,height);ctx.stroke();if(!hasInterestRange)return;tr.ui.b.drawLine(ctx,0,xAxisHeightPx,width,xAxisHeightPx);ctx.stroke();let displayDistance;const displayTextColor='rgb(0,0,0)';const arrowSpacing=10*pixelRatio;const arrowColor='rgb(128,121,121)';const arrowPosY=xAxisHeightPx*1.75;const arrowWidthView=3*pixelRatio;const arrowLengthView=10*pixelRatio;const spaceForArrowsView=2*(arrowWidthView+arrowSpacing);ctx.textBaseline='middle';ctx.font=(14*pixelRatio)+'px sans-serif';const textPosY=arrowPosY;const interestRange=vp.interestRange;if(interestRange.range===0){const markerWorld=interestRange.min;const markerView=dt.xWorldToView(markerWorld);const textToDraw=vp.majorMarkUnit.format(markerWorld);let textLeftView=markerView+4*pixelRatio;const textWidthView=ctx.measureText(textToDraw).width;if(textLeftView+textWidthView>width){textLeftView=markerView-4*pixelRatio-textWidthView;}\nctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);return;}\nconst leftMarker=interestRange.min;const rightMarker=interestRange.max;const leftMarkerView=dt.xWorldToView(leftMarker);const rightMarkerView=dt.xWorldToView(rightMarker);const distanceBetweenMarkers=interestRange.range;const distanceBetweenMarkersView=dt.xWorldVectorToView(distanceBetweenMarkers);const positionInMiddleOfMarkersView=leftMarkerView+(distanceBetweenMarkersView/2);const textToDraw=vp.majorMarkUnit.format(distanceBetweenMarkers);const textWidthView=ctx.measureText(textToDraw).width;const spaceForArrowsAndTextView=textWidthView+spaceForArrowsView+arrowSpacing;let textLeftView=positionInMiddleOfMarkersView-textWidthView/2;const textRightView=textLeftView+textWidthView;if(spaceForArrowsAndTextView>distanceBetweenMarkersView){textLeftView=rightMarkerView+2*arrowSpacing;if(textLeftView+textWidthView>width){textLeftView=leftMarkerView-2*arrowSpacing-textWidthView;}\nctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);ctx.strokeStyle=arrowColor;ctx.beginPath();tr.ui.b.drawLine(ctx,leftMarkerView,arrowPosY,rightMarkerView,arrowPosY);ctx.stroke();ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftMarkerView-1.5*arrowSpacing,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightMarkerView+1.5*arrowSpacing,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);}else if(spaceForArrowsView<=distanceBetweenMarkersView){let leftArrowStart;let rightArrowStart;if(spaceForArrowsAndTextView<=distanceBetweenMarkersView){ctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);leftArrowStart=textLeftView-arrowSpacing;rightArrowStart=textRightView+arrowSpacing;}else{leftArrowStart=positionInMiddleOfMarkersView;rightArrowStart=positionInMiddleOfMarkersView;}\nctx.strokeStyle=arrowColor;ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftArrowStart,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightArrowStart,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);}\nctx.restore();},drawMarkers_(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const trackBounds=this.getBoundingClientRect();const viewHeight=trackBounds.height*pixelRatio;if(!this.viewport.interestRange.isEmpty){this.viewport.interestRange.draw(this.context(),viewLWorld,viewRWorld,viewHeight);}},addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection){},addAllEventsMatchingFilterToSelection(filter,selection){}};return{XAxisTrack,};});'use strict';Polymer({is:'tr-ui-timeline-track-view',ready(){this.displayTransform_=new tr.ui.TimelineDisplayTransform();this.model_=undefined;this.timelineView_=undefined;this.pollIfViewportAttachedInterval_=undefined;this.viewport_=new tr.ui.TimelineViewport(this);this.viewportDisplayTransformAtMouseDown_=undefined;this.brushingStateController_=undefined;this.rulerTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.rulerTrackContainer_);this.rulerTrackContainer_.invalidate();this.rulerTrackContainer_.style.overflowY='hidden';this.rulerTrackContainer_.style.flexShrink='0';this.rulerTrack_=new tr.ui.tracks.XAxisTrack(this.viewport_);Polymer.dom(this.rulerTrackContainer_).appendChild(this.rulerTrack_);this.upperModelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);this.upperModelTrack_.upperMode=true;Polymer.dom(this.rulerTrackContainer_).appendChild(this.upperModelTrack_);this.modelTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.modelTrackContainer_);this.modelTrackContainer_.style.display='block';this.modelTrackContainer_.style.flexGrow='1';this.modelTrackContainer_.invalidate();this.viewport_.modelTrackContainer=this.modelTrackContainer_;this.modelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);Polymer.dom(this.modelTrackContainer_).appendChild(this.modelTrack_);this.timingTool_=new tr.ui.b.TimingTool(this.viewport_,this);this.initMouseModeSelector();this.hideDragBox_();this.initHintText_();this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.addEventListener('dblclick',this.onDblClick_);this.onMouseWheel_=this.onMouseWheel_.bind(this);this.addEventListener('mousewheel',this.onMouseWheel_);this.onMouseDown_=this.onMouseDown_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.onMouseMove_=this.onMouseMove_.bind(this);this.addEventListener('mousemove',this.onMouseMove_);this.onTouchStart_=this.onTouchStart_.bind(this);this.addEventListener('touchstart',this.onTouchStart_);this.onTouchMove_=this.onTouchMove_.bind(this);this.addEventListener('touchmove',this.onTouchMove_);this.onTouchEnd_=this.onTouchEnd_.bind(this);this.addEventListener('touchend',this.onTouchEnd_);this.addHotKeys_();this.mouseViewPosAtMouseDown_={x:0,y:0};this.lastMouseViewPos_={x:0,y:0};this.lastTouchViewPositions_=[];this.alert_=undefined;this.isPanningAndScanning_=false;this.isZooming_=false;},initMouseModeSelector(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this;Polymer.dom(this).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.addEventListener('beginpan',this.onBeginPanScan_.bind(this));this.mouseModeSelector_.addEventListener('updatepan',this.onUpdatePanScan_.bind(this));this.mouseModeSelector_.addEventListener('endpan',this.onEndPanScan_.bind(this));this.mouseModeSelector_.addEventListener('beginselection',this.onBeginSelection_.bind(this));this.mouseModeSelector_.addEventListener('updateselection',this.onUpdateSelection_.bind(this));this.mouseModeSelector_.addEventListener('endselection',this.onEndSelection_.bind(this));this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));this.mouseModeSelector_.addEventListener('entertiming',this.timingTool_.onEnterTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('begintiming',this.timingTool_.onBeginTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('updatetiming',this.timingTool_.onUpdateTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('endtiming',this.timingTool_.onEndTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('exittiming',this.timingTool_.onExitTiming.bind(this.timingTool_));const m=tr.ui.b.MOUSE_SELECTOR_MODE;this.mouseModeSelector_.supportedModeMask=m.SELECTION|m.PANSCAN|m.ZOOM|m.TIMING;this.mouseModeSelector_.settingsKey='timelineTrackView.mouseModeSelector';this.mouseModeSelector_.setKeyCodeForMode(m.PANSCAN,'2'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.SELECTION,'1'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.ZOOM,'3'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.TIMING,'4'.charCodeAt(0));this.mouseModeSelector_.setModifierForAlternateMode(m.SELECTION,tr.ui.b.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(m.PANSCAN,tr.ui.b.MODIFIER.SPACE);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController_){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);}},set timelineView(view){this.timelineView_=view;},get processViews(){return this.modelTrack_.processViews;},onSelectionChanged_(){this.showHintText_('Press \\'m\\' to mark current selection');this.viewport_.dispatchChangeEvent();},set selection(selection){throw new Error('DO NOT CALL THIS');},set highlight(highlight){throw new Error('DO NOT CALL THIS');},detach(){this.modelTrack_.detach();this.upperModelTrack_.detach();if(this.pollIfViewportAttachedInterval_){window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;}\nthis.viewport_.detach();},get viewport(){return this.viewport_;},get model(){return this.model_;},set model(model){if(!model){throw new Error('Model cannot be undefined');}\nconst modelInstanceChanged=this.model_!==model;this.model_=model;this.modelTrack_.model=model;this.upperModelTrack_.model=model;if(modelInstanceChanged){this.pollIfViewportAttachedInterval_=window.setInterval(this.pollIfViewportAttached_.bind(this),250);}},get hasVisibleContent(){return this.modelTrack_.hasVisibleContent||this.upperModelTrack_.hasVisibleContent;},pollIfViewportAttached_(){if(!this.viewport_.isAttachedToDocumentOrInTestMode||this.viewport_.clientWidth===0){return;}\nwindow.addEventListener('resize',this.viewport_.dispatchChangeEvent);window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;this.setInitialViewport_();},setInitialViewport_(){this.modelTrackContainer_.updateCanvasSizeIfNeeded_();const w=this.modelTrackContainer_.canvas.width;let min;let range;if(this.model_.bounds.isEmpty){min=0;range=1000;}else if(this.model_.bounds.range===0){min=this.model_.bounds.min;range=1000;}else{min=this.model_.bounds.min;range=this.model_.bounds.range;}\nconst boost=range*0.15;this.displayTransform_.set(this.viewport_.currentDisplayTransform);this.displayTransform_.xSetWorldBounds(min-boost,min+range+boost,w);this.viewport_.setDisplayTransformImmediately(this.displayTransform_);},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const modelTrack=this.modelTrack_;const firstT=modelTrack.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);const lastT=firstT.after(function(){this.upperModelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);},this);return firstT;},onMouseMove_(e){if(this.isZooming_)return;this.storeLastMousePos_(e);},onTouchStart_(e){this.storeLastTouchPositions_(e);this.focusElements_();},onTouchMove_(e){e.preventDefault();this.onUpdateTransformForTouch_(e);},onTouchEnd_(e){this.storeLastTouchPositions_(e);this.focusElements_();},addHotKeys_(){this.addKeyDownHotKeys_();this.addKeyPressHotKeys_();},addKeyPressHotKey(dict){dict.eventType='keypress';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);},addKeyPressHotKeys_(){this.addKeyPressHotKey({keyCodes:['w'.charCodeAt(0),','.charCodeAt(0)],callback(e){this.zoomBy_(1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['s'.charCodeAt(0),'o'.charCodeAt(0)],callback(e){this.zoomBy_(1/1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'g'.charCodeAt(0),callback(e){this.onGridToggle_(true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'G'.charCodeAt(0),callback(e){this.onGridToggle_(false);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['W'.charCodeAt(0),'<'.charCodeAt(0)],callback(e){this.zoomBy_(10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['S'.charCodeAt(0),'O'.charCodeAt(0)],callback(e){this.zoomBy_(1/10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'a'.charCodeAt(0),callback(e){this.queueSmoothPan_(this.viewWidth_*0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['d'.charCodeAt(0),'e'.charCodeAt(0)],callback(e){this.queueSmoothPan_(this.viewWidth_*-0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'A'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'D'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*-0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'0'.charCodeAt(0),callback(e){this.setInitialViewport_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'f'.charCodeAt(0),callback(e){this.zoomToSelection();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'m'.charCodeAt(0),callback(e){this.setCurrentSelectionAsInterestRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'p'.charCodeAt(0),callback(e){this.selectPowerSamplesInCurrentTimeRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'h'.charCodeAt(0),callback(e){this.toggleHighDetails_();e.stopPropagation();}});},get viewWidth_(){return this.modelTrackContainer_.canvas.clientWidth;},addKeyDownHotKeys_(){const addBinding=function(dict){dict.eventType='keydown';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);}.bind(this);addBinding({keyCode:37,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,-1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(this.viewWidth_*0.3,0);}\ne.preventDefault();e.stopPropagation();}});addBinding({keyCode:39,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(-this.viewWidth_*0.3,0);}\ne.preventDefault();e.stopPropagation();}});},onDblClick_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;}\nconst curSelection=this.brushingStateController_.selection;if(!curSelection.length||!tr.b.getOnlyElement(curSelection).title){return;}\nconst selection=new tr.model.EventSet();const filter=new tr.c.ExactTitleFilter(tr.b.getOnlyElement(curSelection).title);this.modelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);this.brushingStateController.changeSelectionFromTimeline(selection);},onMouseWheel_(e){if(!e.altKey)return;const delta=e.wheelDelta/120;const zoomScale=Math.pow(1.5,delta);this.zoomBy_(zoomScale);e.preventDefault();},onMouseDown_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;}\nif(e.target!==this.rulerTrack_)return;this.dragBeginEvent_=undefined;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;}\nconst dt=this.viewport_.currentDisplayTransform;tr.ui.b.trackMouseMovesUntilMouseUp(function(e){if(e.target===this.rulerTrack_)return;const relativePosition=this.extractRelativeMousePosition_(e);const loc=tr.model.Location.fromViewCoordinates(this.viewport_,relativePosition.x,relativePosition.y);if(!loc)return;if(this.guideLineAnnotation_===undefined){this.guideLineAnnotation_=new tr.model.XMarkerAnnotation(loc.xWorld);this.model.addAnnotation(this.guideLineAnnotation_);}else{this.guideLineAnnotation_.timestamp=loc.xWorld;this.modelTrackContainer_.invalidate();}\nconst state=new tr.ui.b.UIState(loc,this.viewport_.currentDisplayTransform.scaleX);this.timelineView_.setFindCtlText(state.toUserFriendlyString(this.viewport_));}.bind(this),undefined,function onKeyUpDuringDrag(){if(this.dragBeginEvent_){this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_);}}.bind(this));},queueSmoothPan_(viewDeltaX,deltaY){const deltaX=this.viewport_.currentDisplayTransform.xViewVectorToWorld(viewDeltaX);const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,deltaY);this.viewport_.queueDisplayTransformAnimation(animation);},zoomBy_(scale,smooth){if(scale<=0){return;}\nsmooth=!!smooth;const vp=this.viewport_;const pixelRatio=window.devicePixelRatio||1;const goalFocalPointXView=this.lastMouseViewPos_.x*pixelRatio;const goalFocalPointXWorld=vp.currentDisplayTransform.xViewToWorld(goalFocalPointXView);if(smooth){const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,vp.currentDisplayTransform.panY,scale);vp.queueDisplayTransformAnimation(animation);}else{this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=scale;this.displayTransform_.xPanWorldPosToViewPos(goalFocalPointXWorld,goalFocalPointXView,this.viewWidth_);vp.setDisplayTransformImmediately(this.displayTransform_);}},zoomToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;if(!bounds.range)return;const worldCenter=bounds.center;const viewCenter=this.modelTrackContainer_.canvas.width/2;const adjustedWorldRange=bounds.range*1.25;const newScale=this.modelTrackContainer_.canvas.width/adjustedWorldRange;const zoomInRatio=newScale/this.viewport_.currentDisplayTransform.scaleX;const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);},panToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;const worldCenter=bounds.center;const viewWidth=this.viewWidth_;const dt=this.viewport_.currentDisplayTransform;if(false&&!bounds.range){if(dt.xWorldToView(bounds.center)<0||dt.xWorldToView(bounds.center)>viewWidth){this.displayTransform_.set(dt);this.displayTransform_.xPanWorldPosToViewPos(worldCenter,'center',viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);}\nreturn;}\nthis.displayTransform_.set(dt);this.displayTransform_.xPanWorldBoundsIntoView(bounds.min,bounds.max,viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);},navToPosition(uiState,showNavLine){const location=uiState.location;const scaleX=uiState.scaleX;const track=location.getContainingTrack(this.viewport_);const worldCenter=location.xWorld;const viewCenter=this.modelTrackContainer_.canvas.width/5;const zoomInRatio=scaleX/this.viewport_.currentDisplayTransform.scaleX;track.scrollIntoViewIfNeeded();const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);if(!showNavLine)return;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);}\nthis.xNavStringMarker_=new tr.model.XMarkerAnnotation(worldCenter);this.model.addAnnotation(this.xNavStringMarker_);},selectPowerSamplesInCurrentTimeRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(this.model.device.powerSeries&&!selectionBounds.empty){const events=this.model.device.powerSeries.getSamplesWithinRange(selectionBounds.min,selectionBounds.max);const selection=new tr.model.EventSet(events);this.brushingStateController_.changeSelectionFromTimeline(selection);}},setCurrentSelectionAsInterestRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(selectionBounds.empty){this.viewport_.interestRange.reset();return;}\nif(this.viewport_.interestRange.min===selectionBounds.min&&this.viewport_.interestRange.max===selectionBounds.max){this.viewport_.interestRange.reset();}else{this.viewport_.interestRange.set(selectionBounds);}},toggleHighDetails_(){this.viewport_.highDetails=!this.viewport_.highDetails;},hideDragBox_(){this.$.drag_box.style.left='-1000px';this.$.drag_box.style.top='-1000px';this.$.drag_box.style.width=0;this.$.drag_box.style.height=0;},setDragBoxPosition_(xStart,yStart,xEnd,yEnd){const loY=Math.min(yStart,yEnd);const hiY=Math.max(yStart,yEnd);const loX=Math.min(xStart,xEnd);const hiX=Math.max(xStart,xEnd);const modelTrackRect=this.modelTrack_.getBoundingClientRect();const dragRect={left:loX,top:loY,width:hiX-loX,height:hiY-loY};dragRect.right=dragRect.left+dragRect.width;dragRect.bottom=dragRect.top+dragRect.height;const modelTrackContainerRect=this.modelTrackContainer_.getBoundingClientRect();const clipRect={left:modelTrackContainerRect.left,top:modelTrackContainerRect.top,right:modelTrackContainerRect.right,bottom:modelTrackContainerRect.bottom};const headingWidth=window.getComputedStyle(Polymer.dom(this).querySelector('tr-ui-b-heading')).width;const trackTitleWidth=parseInt(headingWidth);clipRect.left=clipRect.left+trackTitleWidth;const intersectRect_=function(r1,r2){if(r2.left>r1.right||r2.right<r1.left||r2.top>r1.bottom||r2.bottom<r1.top){return false;}\nconst results={};results.left=Math.max(r1.left,r2.left);results.top=Math.max(r1.top,r2.top);results.right=Math.min(r1.right,r2.right);results.bottom=Math.min(r1.bottom,r2.bottom);results.width=results.right-results.left;results.height=results.bottom-results.top;return results;};const finalDragBox=intersectRect_(clipRect,dragRect);this.$.drag_box.style.left=finalDragBox.left+'px';this.$.drag_box.style.width=finalDragBox.width+'px';this.$.drag_box.style.top=finalDragBox.top+'px';this.$.drag_box.style.height=finalDragBox.height+'px';this.$.drag_box.style.whiteSpace='nowrap';const pixelRatio=window.devicePixelRatio||1;const canv=this.modelTrackContainer_.canvas;const dt=this.viewport_.currentDisplayTransform;const loWX=dt.xViewToWorld((loX-canv.offsetLeft)*pixelRatio);const hiWX=dt.xViewToWorld((hiX-canv.offsetLeft)*pixelRatio);Polymer.dom(this.$.drag_box).textContent=tr.b.Unit.byName.timeDurationInMs.format(hiWX-loWX);const e=new tr.b.Event('selectionChanging');e.loWX=loWX;e.hiWX=hiWX;this.dispatchEvent(e);},onGridToggle_(left){const selection=this.brushingStateController_.selection;const tb=left?selection.bounds.min:selection.bounds.max;if(this.viewport_.gridEnabled&&this.viewport_.gridSide===left&&this.viewport_.gridInitialTimebase===tb){this.viewport_.gridside=undefined;this.viewport_.gridEnabled=false;this.viewport_.gridInitialTimebase=undefined;return;}\nconst numIntervalsSinceStart=Math.ceil((tb-this.model_.bounds.min)/this.viewport_.gridStep_);this.viewport_.gridEnabled=true;this.viewport_.gridSide=left;this.viewport_.gridInitialTimebase=tb;this.viewport_.gridTimebase=tb-\n(numIntervalsSinceStart+1)*this.viewport_.gridStep_;},storeLastMousePos_(e){this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);},storeLastTouchPositions_(e){this.lastTouchViewPositions_=this.extractRelativeTouchPositions_(e);},extractRelativeMousePosition_(e){const canv=this.modelTrackContainer_.canvas;return{x:e.clientX-canv.offsetLeft,y:e.clientY-canv.offsetTop};},extractRelativeTouchPositions_(e){const canv=this.modelTrackContainer_.canvas;const touches=[];for(let i=0;i<e.touches.length;++i){touches.push({x:e.touches[i].clientX-canv.offsetLeft,y:e.touches[i].clientY-canv.offsetTop});}\nreturn touches;},storeInitialMouseDownPos_(e){const position=this.extractRelativeMousePosition_(e);this.mouseViewPosAtMouseDown_.x=position.x;this.mouseViewPosAtMouseDown_.y=position.y;},focusElements_(){this.$.hotkey_controller.childRequestsGeneralFocus(this);},storeInitialInteractionPositionsAndFocus_(e){this.storeInitialMouseDownPos_(e);this.storeLastMousePos_(e);this.focusElements_();},onBeginPanScan_(e){const vp=this.viewport_;this.viewportDisplayTransformAtMouseDown_=vp.currentDisplayTransform.clone();this.isPanningAndScanning_=true;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdatePanScan_(e){if(!this.isPanningAndScanning_)return;const viewWidth=this.viewWidth_;const pixelRatio=window.devicePixelRatio||1;const xDeltaView=pixelRatio*(this.lastMouseViewPos_.x-\nthis.mouseViewPosAtMouseDown_.x);const yDelta=this.lastMouseViewPos_.y-\nthis.mouseViewPosAtMouseDown_.y;this.displayTransform_.set(this.viewportDisplayTransformAtMouseDown_);this.displayTransform_.incrementPanXInViewUnits(xDeltaView);this.displayTransform_.panY-=yDelta;this.viewport_.setDisplayTransformImmediately(this.displayTransform_);e.preventDefault();e.stopPropagation();this.storeLastMousePos_(e);},onEndPanScan_(e){this.isPanningAndScanning_=false;this.storeLastMousePos_(e);if(!e.isClick){e.preventDefault();}},onBeginSelection_(e){const canv=this.modelTrackContainer_.canvas;const rect=this.modelTrack_.getBoundingClientRect();const canvRect=canv.getBoundingClientRect();const inside=rect&&e.clientX>=rect.left&&e.clientX<rect.right&&e.clientY>=rect.top&&e.clientY<rect.bottom&&e.clientX>=canvRect.left&&e.clientX<canvRect.right;if(!inside)return;this.dragBeginEvent_=e;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdateSelection_(e){if(!this.dragBeginEvent_)return;this.dragBoxXStart_=this.dragBeginEvent_.clientX;this.dragBoxXEnd_=e.clientX;this.dragBoxYStart_=this.dragBeginEvent_.clientY;this.dragBoxYEnd_=e.clientY;this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_);},onEndSelection_(e){e.preventDefault();if(!this.dragBeginEvent_)return;this.hideDragBox_();const eDown=this.dragBeginEvent_;this.dragBeginEvent_=undefined;const loY=Math.min(eDown.clientY,e.clientY);const hiY=Math.max(eDown.clientY,e.clientY);const loX=Math.min(eDown.clientX,e.clientX);const hiX=Math.max(eDown.clientX,e.clientX);const canv=this.modelTrackContainer_.canvas;const worldOffset=canv.getBoundingClientRect().left;const loVX=loX-worldOffset;const hiVX=hiX-worldOffset;const selection=new tr.model.EventSet();if(eDown.appendSelection){const previousSelection=this.brushingStateController_.selection;if(previousSelection!==undefined){selection.addEventSet(previousSelection);}}\nthis.modelTrack_.addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection);this.brushingStateController_.changeSelectionFromTimeline(selection);},onBeginZoom_(e){this.isZooming_=true;this.storeInitialInteractionPositionsAndFocus_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const newPosition=this.extractRelativeMousePosition_(e);const zoomScaleValue=1+(this.lastMouseViewPos_.y-\nnewPosition.y)*0.01;this.zoomBy_(zoomScaleValue,false);this.storeLastMousePos_(e);},onEndZoom_(e){this.isZooming_=false;if(!e.isClick){e.preventDefault();}},computeTouchCenter_(positions){let xSum=0;let ySum=0;for(let i=0;i<positions.length;++i){xSum+=positions[i].x;ySum+=positions[i].y;}\nreturn{x:xSum/positions.length,y:ySum/positions.length};},computeTouchSpan_(positions){let xMin=Number.MAX_VALUE;let yMin=Number.MAX_VALUE;let xMax=Number.MIN_VALUE;let yMax=Number.MIN_VALUE;for(let i=0;i<positions.length;++i){xMin=Math.min(xMin,positions[i].x);yMin=Math.min(yMin,positions[i].y);xMax=Math.max(xMax,positions[i].x);yMax=Math.max(yMax,positions[i].y);}\nreturn Math.sqrt((xMin-xMax)*(xMin-xMax)+\n(yMin-yMax)*(yMin-yMax));},onUpdateTransformForTouch_(e){const newPositions=this.extractRelativeTouchPositions_(e);const currentPositions=this.lastTouchViewPositions_;const newCenter=this.computeTouchCenter_(newPositions);const currentCenter=this.computeTouchCenter_(currentPositions);const newSpan=this.computeTouchSpan_(newPositions);const currentSpan=this.computeTouchSpan_(currentPositions);const vp=this.viewport_;const viewWidth=this.viewWidth_;const pixelRatio=window.devicePixelRatio||1;const xDelta=pixelRatio*(newCenter.x-currentCenter.x);const yDelta=newCenter.y-currentCenter.y;const zoomScaleValue=currentSpan>10?newSpan/currentSpan:1;const viewFocus=pixelRatio*newCenter.x;const worldFocus=vp.currentDisplayTransform.xViewToWorld(viewFocus);this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=zoomScaleValue;this.displayTransform_.xPanWorldPosToViewPos(worldFocus,viewFocus,viewWidth);this.displayTransform_.incrementPanXInViewUnits(xDelta);this.displayTransform_.panY-=yDelta;vp.setDisplayTransformImmediately(this.displayTransform_);this.storeLastTouchPositions_(e);},initHintText_(){this.$.hint_text.style.display='none';this.pendingHintTextClearTimeout_=undefined;},showHintText_(text){if(this.pendingHintTextClearTimeout_){window.clearTimeout(this.pendingHintTextClearTimeout_);this.pendingHintTextClearTimeout_=undefined;}\nthis.pendingHintTextClearTimeout_=setTimeout(this.hideHintText_.bind(this),1000);Polymer.dom(this.$.hint_text).textContent=text;this.$.hint_text.style.display='';},hideHintText_(){this.pendingHintTextClearTimeout_=undefined;this.$.hint_text.style.display='none';}});'use strict';Polymer({is:'tr-ui-find-control',filterKeyDown(e){if(e.keyCode===27){const hkc=tr.b.getHotkeyControllerForElement(this);if(hkc){hkc.childRequestsBlur(this);}else{this.blur();}\ne.preventDefault();e.stopPropagation();return;}else if(e.keyCode===13){if(e.shiftKey){this.findPrevious();}else{this.findNext();}}},filterBlur(e){this.updateHitCountEl();},filterFocus(e){this.$.filter.select();},filterMouseUp(e){e.preventDefault();},get controller(){return this.controller_;},set controller(c){this.controller_=c;this.updateHitCountEl();},focus(){this.$.filter.focus();},get hasFocus(){return this===document.activeElement;},filterTextChanged(){Polymer.dom(this.$.hitCount).textContent='';this.$.spinner.style.visibility='visible';this.$.spinner.style.animation='spin 1s linear infinite';this.controller.startFiltering(this.$.filter.value).then(function(){this.$.spinner.style.visibility='hidden';this.$.spinner.style.animation='';this.updateHitCountEl();}.bind(this));},findNext(){if(this.controller){this.controller.findNext();}\nthis.updateHitCountEl();},findPrevious(){if(this.controller){this.controller.findPrevious();}\nthis.updateHitCountEl();},updateHitCountEl(){if(!this.controller||this.$.filter.value.length===0){Polymer.dom(this.$.hitCount).textContent='';return;}\nconst n=this.controller.filterHits.length;const i=n===0?-1:this.controller.currentHitIndex;Polymer.dom(this.$.hitCount).textContent=(i+1)+' of '+n;},setText(string){this.$.filter.value=string;}});'use strict';tr.exportTo('tr.e.tquery',function(){function Context(){this.event=undefined;this.ancestors=[];}\nContext.prototype={push(event){const ctx=new Context();ctx.ancestors=this.ancestors.slice();ctx.ancestors.push(event);return ctx;},pop(event){const ctx=new Context();ctx.event=this.ancestors[this.ancestors.length-1];ctx.ancestors=this.ancestors.slice(0,this.ancestors.length-1);return ctx;}};return{Context,};});'use strict';tr.exportTo('tr.e.tquery',function(){function Filter(){tr.c.ScriptingObject.call(this);}\nFilter.normalizeFilterExpression=function(filterExpression){if(filterExpression instanceof String||typeof(filterExpression)==='string'||filterExpression instanceof RegExp){const filter=new tr.e.tquery.FilterHasTitle(filterExpression);return filter;}\nreturn filterExpression;};Filter.prototype={__proto__:tr.c.ScriptingObject.prototype,evaluate(context){throw new Error('Not implemented');},matchValue_(value,expected){if(expected instanceof RegExp){return expected.test(value);}else if(expected instanceof Function){return expected(value);}\nreturn value===expected;}};return{Filter,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterAllOf(opt_subExpressions){tr.e.tquery.Filter.call(this);this.subExpressions=opt_subExpressions||[];}\nFilterAllOf.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpressions(exprs){this.subExpressions_=[];for(let i=0;i<exprs.length;i++){this.subExpressions_.push(tr.e.tquery.Filter.normalizeFilterExpression(exprs[i]));}},get subExpressions(){return this.subExpressions_;},evaluate(context){if(!this.subExpressions.length)return true;for(let i=0;i<this.subExpressions.length;i++){if(!this.subExpressions[i].evaluate(context)){return false;}}\nreturn true;}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=[];for(let i=0;i<arguments.length;i++){exprs.push(arguments[i]);}\nreturn new FilterAllOf(exprs);},{name:'allOf'});return{FilterAllOf,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterNot(subExpression){tr.e.tquery.Filter.call(this);this.subExpression=subExpression;}\nFilterNot.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){return!this.subExpression.evaluate(context);}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);if(exprs.length!==1){throw new Error('not() must have exactly one subexpression');}\nreturn new FilterNot(exprs[0]);},{name:'not'});return{FilterNot,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterAnyOf(opt_subExpressions){tr.e.tquery.Filter.call(this);this.subExpressions=opt_subExpressions||[];}\nFilterAnyOf.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpressions(exprs){this.subExpressions_=[];for(let i=0;i<exprs.length;i++){this.subExpressions_.push(tr.e.tquery.Filter.normalizeFilterExpression(exprs[i]));}},get subExpressions(){return this.subExpressions_;},evaluate(context){if(!this.subExpressions.length)return true;for(let i=0;i<this.subExpressions.length;i++){if(this.subExpressions[i].evaluate(context))return true;}\nreturn false;}};tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);return new FilterAnyOf(exprs);},{name:'anyOf'});tr.c.ScriptingObjectRegistry.register(function(){const exprs=Array.prototype.slice.call(arguments);return new tr.e.tquery.FilterNot(new FilterAnyOf(exprs));},{name:'noneOf'});return{FilterAnyOf,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasAncestor(opt_subExpression){this.subExpression=opt_subExpression;}\nFilterHasAncestor.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){if(!this.subExpression){return context.ancestors.length>0;}\nwhile(context.ancestors.length){context=context.pop();if(this.subExpression.evaluate(context))return true;}\nreturn false;}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterHasAncestor(subExpression);},{name:'hasAncestor'});return{FilterHasAncestor,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasDuration(minValueOrExpected,opt_maxValue){if(minValueOrExpected!==undefined&&opt_maxValue!==undefined){this.minValue=minValueOrExpected;this.maxValue=opt_maxValue;}else{this.expected=minValueOrExpected;}}\nFilterHasDuration.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){if(context.event.duration===undefined)return false;if(this.minValue!==undefined&&this.maxValue!==undefined){return context.event.duration>=this.minValue&&context.event.duration<=this.maxValue;}\nreturn this.matchValue_(context.event.duration,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(minValueOrExpected,opt_maxValue){return new FilterHasDuration(minValueOrExpected,opt_maxValue);},{name:'hasDuration'});return{FilterHasDuration,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasTitle(expected){tr.e.tquery.Filter.call(this);this.expected=expected;}\nFilterHasTitle.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){return this.matchValue_(context.event.title,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(expected){const filter=new tr.e.tquery.FilterHasTitle(expected);return filter;},{name:'hasTitle'});return{FilterHasTitle,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterIsTopLevel(opt_subExpression){this.subExpression=opt_subExpression;}\nFilterIsTopLevel.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){if(context.ancestors.length>0)return false;if(!this.subExpression)return true;return this.subExpression.evaluate(context);}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterIsTopLevel(subExpression);},{name:'isTopLevel'});return{FilterIsTopLevel,};});'use strict';tr.exportTo('tr.e.tquery',function(){function addEventTreeToSelection(selection,event){selection.push(event);if(!event.subSlices)return;event.subSlices.forEach(addEventTreeToSelection.bind(undefined,selection));}\nfunction TQuery(model){tr.c.ScriptingObject.call(this);this.model_=model;this.parent_=undefined;this.filterExpression_=undefined;this.selection_=undefined;}\nTQuery.prototype={__proto__:tr.c.ScriptingObject.prototype,onModelChanged(model){this.model_=model;this.selection_=undefined;},get brushingStateController(){return this.brushingStateController_;},filter(filterExpression){const result=new TQuery(this.model_);result.parent_=this;result.filterExpression_=tr.e.tquery.Filter.normalizeFilterExpression(filterExpression);return result;},createFilterTaskGraph_(){const nodes=[this];while(nodes[nodes.length-1].parent_){nodes.push(nodes[nodes.length-1].parent_);}\nconst rootTask=new tr.b.Task();let lastTask=rootTask;let node;for(let i=nodes.length-1;i>=0;i--){node=nodes[i];if(node.selection_!==undefined)continue;node.selection_=new tr.model.EventSet();if(node.parent_===undefined){lastTask=lastTask.after(this.selectEverythingAsTask_(node.selection_));}else{const prevNode=nodes[i+1];lastTask=this.createFilterTaskForNode_(lastTask,node,prevNode);}}\nreturn{rootTask,lastTask,lastNode:node};},createFilterTaskForNode_(lastTask,node,prevNode){return lastTask.after(function(){node.evaluateFilterExpression_(prevNode.selection_,node.selection_);},this);},evaluateFilterExpression_(inputSelection,outputSelection){const seenEvents={};inputSelection.forEach(function(event){const context=new tr.e.tquery.Context();context.event=event;this.evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents);}.bind(this));},evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents){const event=context.event;if(inputSelection.contains(event)&&!seenEvents[event.guid]){seenEvents[event.guid]=true;if(!this.filterExpression_||this.filterExpression_.evaluate(context)){outputSelection.push(event);}}\nif(!event.subSlices)return;context=context.push(event);for(let i=0;i<event.subSlices.length;i++){context.event=event.subSlices[i];this.evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents);}},selectEverythingAsTask_(selection){const filterTask=new tr.b.Task();for(const container of this.model_.getDescendantEventContainers()){filterTask.subTask(()=>{for(const event of container.childEvents()){addEventTreeToSelection(selection,event);}},this);}\nreturn filterTask;},ready(){return new Promise(function(resolve,reject){const graph=this.createFilterTaskGraph_();graph.lastTask=graph.lastTask.after(function(){resolve(this.selection_);},this);tr.b.Task.RunWhenIdle(graph.rootTask);}.bind(this));},get selection(){if(this.selection_===undefined){const graph=this.createFilterTaskGraph_();tr.b.Task.RunSynchronously(graph.rootTask);}\nreturn this.selection_;}};tr.c.ScriptingObjectRegistry.register(new TQuery(),{name:'$t'});return{TQuery,};});'use strict';Polymer({is:'tr-ui-scripting-control',isEnterKey_(event){return event.keyCode!==229&&(event.key==='Enter'||event.keyIdentifier==='Enter');},setFocus_(focused){const promptEl=this.$.prompt;if(focused){promptEl.focus();Polymer.dom(this.$.root).classList.add('focused');if(promptEl.value.length>0){const sel=window.getSelection();sel.collapse(Polymer.dom(promptEl).firstChild,promptEl.value.length);}}else{promptEl.blur();Polymer.dom(this.$.root).classList.remove('focused');const parent=promptEl.parentElement;const nextEl=Polymer.dom(promptEl).nextSibling;promptEl.remove();Polymer.dom(parent).insertBefore(promptEl,nextEl);}},onConsoleFocus(e){e.stopPropagation();this.setFocus_(true);},onConsoleBlur(e){e.stopPropagation();this.setFocus_(false);},promptKeyDown(e){e.stopPropagation();if(!this.isEnterKey_(e))return;e.preventDefault();const promptEl=this.$.prompt;const command=promptEl.value;if(command.length===0)return;promptEl.value='';this.addLine_(String.fromCharCode(187)+' '+command);let result;try{result=this.controller_.executeCommand(command);}catch(e){result=e.stack||e.stackTrace;}\nif(result instanceof tr.e.tquery.TQuery){result.ready().then(function(selection){this.addLine_(selection.length+' matches');this.controller_.brushingStateController.showScriptControlSelection(selection);}.bind(this));}else{this.addLine_(result);}\npromptEl.scrollIntoView();},addLine_(line){const historyEl=this.$.history;if(historyEl.innerText.length!==0){historyEl.innerText+='\\n';}\nhistoryEl.innerText+=line;},promptKeyPress(e){e.stopPropagation();},toggleVisibility(){const root=this.$.root;if(!this.visible){Polymer.dom(root).classList.remove('hidden');this.setFocus_(true);}else{Polymer.dom(root).classList.add('hidden');this.setFocus_(false);}},get hasFocus(){return this===document.activeElement;},get visible(){const root=this.$.root;return!Polymer.dom(root).classList.contains('hidden');},get controller(){return this.controller_;},set controller(c){this.controller_=c;}});'use strict';tr.exportTo('tr.ui.behaviors',function(){const SidePanel={get rangeOfInterest(){throw new Error('Not implemented');},set rangeOfInterest(rangeOfInterest){throw new Error('Not implemented');},get selection(){throw new Error('Not implemented');},set selection(selection){throw new Error('Not implemented');},get model(){throw new Error('Not implemented');},set model(model){throw new Error('Not implemented');},supportsModel(m){throw new Error('Not implemented');}};return{SidePanel,};});'use strict';tr.exportTo('tr.ui.side_panel',function(){function SidePanelRegistry(){}\nconst options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(SidePanelRegistry,options);return{SidePanelRegistry,};});'use strict';Polymer({is:'tr-ui-side-panel-container',ready(){this.activePanelContainer_=this.$.active_panel_container;this.tabStrip_=this.$.tab_strip;this.dragHandle_=this.$.side_panel_drag_handle;this.dragHandle_.horizontal=false;this.dragHandle_.target=this.activePanelContainer_;this.rangeOfInterest_=new tr.b.math.Range();this.brushingStateController_=undefined;this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onModelChanged_=this.onModelChanged_.bind(this);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);this.brushingStateController_.removeEventListener('model-changed',this.onModelChanged_);}\nthis.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);this.brushingStateController_.addEventListener('model-changed',this.onModelChanged_);if(this.model){this.onModelChanged_();}}},onSelectionChanged_(){if(this.activePanel){this.activePanel.selection=this.selection;}},get model(){return this.brushingStateController_.model;},onModelChanged_(){this.activePanelType_=undefined;this.updateContents_();},get expanded(){this.hasAttribute('expanded');},get activePanel(){return this.activePanelContainer_.children[0];},get activePanelType(){return this.activePanelType_;},set activePanelType(panelType){if(this.model===undefined){throw new Error('Cannot activate panel without a model');}\nlet panel=undefined;if(panelType){panel=document.createElement(panelType);}\nif(panel!==undefined&&!panel.supportsModel(this.model)){throw new Error('Cannot activate panel: does not support this model');}\nif(this.activePanelType){Polymer.dom(this.getLabelElementForPanelType_(this.activePanelType)).removeAttribute('selected');}\nif(this.activePanelType){this.getLabelElementForPanelType_(this.activePanelType).removeAttribute('selected');}\nif(this.activePanel){this.activePanelContainer_.removeChild(this.activePanel);}\nif(panelType===undefined){Polymer.dom(this).removeAttribute('expanded');this.activePanelType_=undefined;return;}\nPolymer.dom(this.getLabelElementForPanelType_(panelType)).setAttribute('selected',true);Polymer.dom(this).setAttribute('expanded',true);Polymer.dom(this.activePanelContainer_).appendChild(panel);panel.rangeOfInterest=this.rangeOfInterest_;panel.selection=this.selection_;panel.model=this.model;this.activePanelType_=panelType;},getPanelTypeForConstructor_(constructor){for(let i=0;i<this.tabStrip_.children.length;i++){if(this.tabStrip_.children[i].panelType.constructor===constructor){return this.tabStrip_.children[i].panelType;}}},getLabelElementForPanelType_(panelType){for(let i=0;i<this.tabStrip_.children.length;i++){if(this.tabStrip_.children[i].panelType===panelType){return this.tabStrip_.children[i];}}\nreturn undefined;},updateContents_(){const previouslyActivePanelType=this.activePanelType;Polymer.dom(this.tabStrip_).textContent='';const supportedPanelTypes=[];const panelTypeInfos=tr.ui.side_panel.SidePanelRegistry.getAllRegisteredTypeInfos();const unsupportedLabelEls=[];for(const panelTypeInfo of panelTypeInfos){const labelEl=document.createElement('tab-strip-label');const panel=panelTypeInfo.constructor();const panelType=panel.tagName;Polymer.dom(labelEl).textContent=panel.textLabel;labelEl.panelType=panelType;const supported=panel.supportsModel(this.model);if(this.model&&supported.supported){supportedPanelTypes.push(panelType);Polymer.dom(labelEl).setAttribute('enabled',true);labelEl.addEventListener('click',function(panelType){this.activePanelType=this.activePanelType===panelType?undefined:panelType;}.bind(this,panelType));Polymer.dom(this.tabStrip_).appendChild(labelEl);}else{if(this.activePanel){this.activePanelContainer_.removeChild(this.activePanel);}\nthis.removeAttribute('expanded');unsupportedLabelEls.push(labelEl);}}\nfor(const labelEl of unsupportedLabelEls){Polymer.dom(this.tabStrip_).appendChild(labelEl);}\nif(previouslyActivePanelType&&supportedPanelTypes.includes(previouslyActivePanelType)){this.activePanelType=previouslyActivePanelType;Polymer.dom(this).setAttribute('expanded',true);}else{if(this.activePanel){Polymer.dom(this.activePanelContainer_).removeChild(this.activePanel);}\nPolymer.dom(this).removeAttribute('expanded');}},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(range){if(range===undefined){throw new Error('Must not be undefined');}\nthis.rangeOfInterest_=range;if(this.activePanel){this.activePanel.rangeOfInterest=range;}}});'use strict';Polymer({is:'tr-ui-timeline-view-help-overlay',ready(){const mod=tr.isMac?'cmd ':'ctrl';const spans=Polymer.dom(this.root).querySelectorAll('span.mod');for(let i=0;i<spans.length;i++){Polymer.dom(spans[i]).textContent=mod;}}});'use strict';Polymer({is:'tr-ui-timeline-view-metadata-overlay',created(){this.metadata_=undefined;},ready(){this.$.table.tableColumns=[{title:'name',value:d=>d.name,},{title:'value',value:d=>{const gov=document.createElement('tr-ui-a-generic-object-view');gov.object=d.value;return gov;},}];},get metadata(){return this.metadata_;},set metadata(metadata){this.metadata_=metadata;this.$.table.tableRows=this.metadata_;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-v-ui-preferred-display-unit',ready(){this.preferredTimeDisplayMode_=undefined;},attached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},detached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},get preferredTimeDisplayMode(){return this.preferredTimeDisplayMode_;},set preferredTimeDisplayMode(v){if(this.preferredTimeDisplayMode_===v)return;this.preferredTimeDisplayMode_=v;tr.b.Unit.didPreferredTimeDisplayUnitChange();}});'use strict';const POLYFILL_WARNING_MESSAGE='Trace Viewer is running with WebComponentsV0 polyfill, and some '+'features may be broken. As a workaround, you may try running chrome '+'with \"--enable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports\" '+'flag. See crbug.com/1036492.';Polymer({is:'tr-ui-timeline-view',created(){this.trackViewContainer_=undefined;this.queuedModel_=undefined;this.builtPromise_=undefined;this.doneBuilding_=undefined;},attached(){this.async(function(){this.trackViewContainer_=Polymer.dom(this).querySelector('#track_view_container');if(!this.trackViewContainer_){throw new Error('missing trackviewContainer');}\nif(this.queuedModel_)this.updateContents_();});},ready(){this.tabIndex=0;this.polyfillWarnedOnce_=false;this.titleEl_=this.$.title;this.leftControlsEl_=this.$.left_controls;this.rightControlsEl_=this.$.right_controls;this.collapsingControlsEl_=this.$.collapsing_controls;this.sidePanelContainer_=this.$.side_panel_container;this.brushingStateController_=new tr.c.BrushingStateController(this);this.findCtl_=this.$.view_find_control;this.findCtl_.controller=new tr.ui.FindController(this.brushingStateController_);this.scriptingCtl_=document.createElement('tr-ui-scripting-control');this.scriptingCtl_.controller=new tr.c.ScriptingController(this.brushingStateController_);this.sidePanelContainer_.brushingStateController=this.brushingStateController_;if(window.tr.metrics&&window.tr.metrics.sh&&window.tr.metrics.sh.SystemHealthMetric){this.railScoreSpan_=document.createElement('tr-metrics-ui-sh-system-health-span');Polymer.dom(this.rightControls).appendChild(this.railScoreSpan_);}else{this.railScoreSpan_=undefined;}\nthis.flowEventFilter_=this.$.flow_event_filter_dropdown;this.processFilter_=this.$.process_filter_dropdown;this.optionsDropdown_=this.$.view_options_dropdown;this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highlightVSyncCheckbox_=tr.ui.b.createCheckBox(this,'highlightVSync','tr.ui.TimelineView.highlightVSync',false,'Highlight VSync');Polymer.dom(this.optionsDropdown_).appendChild(this.highlightVSyncCheckbox_);this.initMetadataButton_();this.initConsoleButton_();this.initHelpButton_();Polymer.dom(this.collapsingControls).appendChild(this.scriptingCtl_);this.dragEl_=this.$.drag_handle;this.analysisEl_=this.$.analysis;this.analysisEl_.brushingStateController=this.brushingStateController_;this.addEventListener('requestSelectionChange',function(e){const sc=this.brushingStateController_;sc.changeSelectionFromRequestSelectionChangeEvent(e.selection);}.bind(this));this.onViewportChanged_=this.onViewportChanged_.bind(this);this.bindKeyListeners_();this.dragEl_.target=this.analysisEl_;},get globalMode(){return this.hotkeyController.globalMode;},set globalMode(globalMode){globalMode=!!globalMode;this.brushingStateController_.historyEnabled=globalMode;this.hotkeyController.globalMode=globalMode;},get hotkeyController(){return this.$.hkc;},warnPolyfill(){if(this.polyfillWarnedOnce_)return;console.warn(POLYFILL_WARNING_MESSAGE);this.polyfillWarnedOnce_=true;if(!window.__hideTraceViewerPolyfillWarning){const polyfillWarningsEl=Polymer.dom(this.root).querySelector('#polyfill-warning');polyfillWarningsEl.addMessage(POLYFILL_WARNING_MESSAGE,[{buttonText:'Hide',onClick:()=>polyfillWarningsEl.clearMessages()}]);}},updateDocumentFavicon(){let hue;if(!this.model){hue='blue';}else{hue=this.model.faviconHue;}\nlet faviconData=tr.ui.b.FaviconsByHue[hue];if(faviconData===undefined){faviconData=tr.ui.b.FaviconsByHue.blue;}\nlet link=Polymer.dom(document.head).querySelector('link[rel=\"shortcut icon\"]');if(!link){link=document.createElement('link');link.rel='shortcut icon';Polymer.dom(document.head).appendChild(link);}\nlink.href=faviconData;},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;if(!this.trackView_)return;this.trackView_.viewport.highlightVSync=highlightVSync;},initHelpButton_(){const helpButtonEl=this.$.view_help_button;const dlg=new tr.ui.b.Overlay();dlg.title='Chrome Tracing Help';dlg.visible=false;dlg.appendChild(document.createElement('tr-ui-timeline-view-help-overlay'));function onClick(e){dlg.visible=!dlg.visible;e.stopPropagation();}\nhelpButtonEl.addEventListener('click',onClick.bind(this));},initConsoleButton_(){const toggleEl=this.$.view_console_button;function onClick(e){this.scriptingCtl_.toggleVisibility();e.stopPropagation();return false;}\ntoggleEl.addEventListener('click',onClick.bind(this));},initMetadataButton_(){const showEl=this.$.view_metadata_button;function onClick(e){const dlg=new tr.ui.b.Overlay();dlg.title='Metadata for trace';const metadataOverlay=document.createElement('tr-ui-timeline-view-metadata-overlay');metadataOverlay.metadata=this.model.metadata;Polymer.dom(dlg).appendChild(metadataOverlay);dlg.visible=true;e.stopPropagation();return false;}\nshowEl.addEventListener('click',onClick.bind(this));this.updateMetadataButtonVisibility_();},updateMetadataButtonVisibility_(){const showEl=this.$.view_metadata_button;showEl.style.display=(this.model&&this.model.metadata.length)?'':'none';},updateFlowEventList_(){const dropdown=Polymer.dom(this.flowEventFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);}\nif(!this.model)return;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));const categories=new Set();for(const event of this.model.flowEvents){for(const category of tr.b.getCategoryParts(event.category)){categories.add(category);}}\nconst sortedCategories=[...categories].sort((a,b)=>a.localeCompare(b,'en',{sensitivity:'base'}));for(const category of sortedCategories){const cbox=tr.ui.b.createCheckBox(undefined,undefined,'tr.ui.TimelineView.selectedFlowEvents.'+category,false,category,()=>{if(cbox.checked){this.selectedFlowEvents.add(category);}else{this.selectedFlowEvents.delete(category);}\nif(this.trackView_){this.trackView_.viewport.dispatchChangeEvent();}});if(cbox.checked){this.selectedFlowEvents.add(category);}\ncboxes.push(cbox);dropdown.appendChild(cbox);}},updateProcessList_(){const dropdown=Polymer.dom(this.processFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);}\nif(!this.model)return;const trackView=this.trackViewContainer_.querySelector('tr-ui-timeline-track-view');const processViews=trackView.processViews;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));for(const view of processViews){const cbox=tr.ui.b.createCheckBox(undefined,undefined,undefined,true,view.processBase.userFriendlyName,()=>view.visible=cbox.checked);cbox.checked=view.visible;cboxes.push(cbox);view.addEventListener('visibility',()=>cbox.checked=view.visible);dropdown.appendChild(cbox);}},get leftControls(){return this.leftControlsEl_;},get rightControls(){return this.rightControlsEl_;},get collapsingControls(){return this.collapsingControlsEl_;},get viewTitle(){return Polymer.dom(this.titleEl_).textContent.substring(Polymer.dom(this.titleEl_).textContent.length-2);},set viewTitle(text){if(text===undefined){Polymer.dom(this.titleEl_).textContent='';this.titleEl_.hidden=true;return;}\nthis.titleEl_.hidden=false;Polymer.dom(this.titleEl_).textContent=text;},get model(){if(this.trackView_){return this.trackView_.model;}\nreturn undefined;},set model(model){this.build(model);},async build(model){this.queuedModel_=model;this.builtPromise_=new Promise((resolve,reject)=>{this.doneBuilding_=resolve;});if(this.trackViewContainer_)await this.updateContents_();},get builtPromise(){return this.builtPromise_;},async updateContents_(){if(this.trackViewContainer_===undefined){throw new Error('timeline-view.updateContents_ requires trackViewContainer_');}\nconst model=this.queuedModel_;this.queuedModel_=undefined;const modelInstanceChanged=model!==this.model;const modelValid=model&&!model.bounds.isEmpty;const importWarningsEl=Polymer.dom(this.root).querySelector('#import-warnings');Polymer.dom(importWarningsEl).textContent='';if(modelInstanceChanged){if(this.railScoreSpan_){this.railScoreSpan_.model=undefined;}\nPolymer.dom(this.trackViewContainer_).textContent='';if(this.trackView_){this.trackView_.viewport.removeEventListener('change',this.onViewportChanged_);this.trackView_.brushingStateController=undefined;this.trackView_.detach();this.trackView_=undefined;}\nthis.brushingStateController_.modelWillChange();}\nif(modelValid&&!this.trackView_){this.trackView_=document.createElement('tr-ui-timeline-track-view');this.trackView_.timelineView=this;this.trackView.brushingStateController=this.brushingStateController_;Polymer.dom(this.trackViewContainer_).appendChild(this.trackView_);this.trackView_.viewport.addEventListener('change',this.onViewportChanged_);}\nif(modelValid){this.trackView_.model=model;this.trackView_.viewport.selectedFlowEvents=this.selectedFlowEvents;this.trackView_.viewport.highlightVSync=this.highlightVSync;if(this.railScoreSpan_){this.railScoreSpan_.model=model;}\nthis.$.display_unit.preferredTimeDisplayMode=model.intrinsicTimeUnit;}\nif(window.CustomElements&&!window.CustomElements.hasNative){this.warnPolyfill();}\nif(model){for(const warning of model.importWarningsThatShouldBeShownToUser){importWarningsEl.addMessage(`Import Warning: ${warning.type}: ${warning.message}`,[{buttonText:'Dismiss',onClick(event,infobar){infobar.visible=false;}}]);}}\nif(modelInstanceChanged){this.updateFlowEventList_();this.updateProcessList_();this.updateMetadataButtonVisibility_();this.brushingStateController_.modelDidChange();this.onViewportChanged_();}\nthis.doneBuilding_();},get brushingStateController(){return this.brushingStateController_;},get trackView(){return this.trackView_;},get settings(){if(!this.settings_){this.settings_=new tr.b.Settings();}\nreturn this.settings_;},set focusElement(value){throw new Error('This is deprecated. Please set globalMode to true.');},bindKeyListeners_(){const hkc=this.hotkeyController;hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'`'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){this.scriptingCtl_.toggleVisibility();if(!this.scriptingCtl_.hasFocus){this.focus();}\ne.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'/'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){if(this.scriptingCtl_.hasFocus)return;if(this.findCtl_.hasFocus){this.focus();}else{this.findCtl_.focus();}\ne.preventDefault();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'?'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.$.view_help_button.click();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'v'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.toggleHighlightVSync_();e.stopPropagation();}}));},onViewportChanged_(e){const spc=this.sidePanelContainer_;if(!this.trackView_){spc.rangeOfInterest.reset();return;}\nconst vr=this.trackView_.viewport.interestRange.asRangeObject();if(!spc.rangeOfInterest.equals(vr)){spc.rangeOfInterest=vr;}\nif(this.railScoreSpan_&&this.model){this.railScoreSpan_.model=this.model;}},toggleHighlightVSync_(){this.highlightVSyncCheckbox_.checked=!this.highlightVSyncCheckbox_.checked;},setFindCtlText(string){this.findCtl_.setText(string);}});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){const ProfilingView=tr.ui.b.define('x-profiling-view');const THIS_DOC=document.currentScript.ownerDocument;ProfilingView.prototype={__proto__:HTMLDivElement.prototype,decorate(tracingControllerClient){Polymer.dom(this).appendChild(tr.ui.b.instantiateTemplate('#profiling-view-template',THIS_DOC));this.timelineView_=Polymer.dom(this).querySelector('tr-ui-timeline-view');this.infoBarGroup_=Polymer.dom(this).querySelector('tr-ui-b-info-bar-group');this.recordButton_=Polymer.dom(this).querySelector('#record-button');this.loadButton_=Polymer.dom(this).querySelector('#load-button');this.saveButton_=Polymer.dom(this).querySelector('#save-button');const buttons=Polymer.dom(this).querySelector('x-timeline-view-buttons');Polymer.dom(buttons.parentElement).removeChild(buttons);Polymer.dom(this.timelineView_.leftControls).appendChild(buttons);this.initButtons_();this.timelineView_.hotkeyController.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'r'.charCodeAt(0),callback(e){this.beginRecording();event.stopPropagation();},thisArg:this}));this.initDragAndDrop_();if(tracingControllerClient){this.tracingControllerClient_=tracingControllerClient;}else if(window.DevToolsHost!==undefined){this.tracingControllerClient_=new tr.ui.e.about_tracing.InspectorTracingControllerClient(new tr.ui.e.about_tracing.InspectorConnection(window));}else{this.tracingControllerClient_=new tr.ui.e.about_tracing.XhrBasedTracingControllerClient();}\nthis.isRecording_=false;this.activeTrace_=undefined;this.updateTracingControllerSpecificState_();},detach_(){this.detachDragAndDrop_();},get isRecording(){return this.isRecording_;},set tracingControllerClient(tracingControllerClient){this.tracingControllerClient_=tracingControllerClient;this.updateTracingControllerSpecificState_();},updateTracingControllerSpecificState_(){const isInspector=this.tracingControllerClient_ instanceof\ntr.ui.e.about_tracing.InspectorTracingControllerClient;if(isInspector){this.infoBarGroup_.addMessage('This about:tracing is connected to a remote device...',[{buttonText:'Wow!',onClick(){}}]);}},beginRecording(){if(this.isRecording_){throw new Error('Already recording');}\nthis.isRecording_=true;const resultPromise=tr.ui.e.about_tracing.beginRecording(this.tracingControllerClient_);resultPromise.then(function(data){this.isRecording_=false;const traceName=tr.ui.e.about_tracing.defaultTraceName(this.tracingControllerClient_);this.setActiveTrace(traceName,data,false);}.bind(this),function(err){this.isRecording_=false;if(err instanceof tr.ui.e.about_tracing.UserCancelledError){return;}\ntr.ui.b.Overlay.showError('Error while recording',err);}.bind(this));return resultPromise;},get timelineView(){return this.timelineView_;},clearActiveTrace(){this.saveButton_.disabled=true;this.activeTrace_=undefined;},setActiveTrace(filename,data){this.activeTrace_={filename,data};this.infoBarGroup_.clearMessages();this.updateTracingControllerSpecificState_();this.saveButton_.disabled=false;this.timelineView_.viewTitle=filename;const m=new tr.Model();const i=new tr.importer.Import(m);const p=i.importTracesWithProgressDialog([data]);p.then(function(){this.timelineView_.model=m;this.timelineView_.updateDocumentFavicon();}.bind(this),function(err){tr.ui.b.Overlay.showError('While importing: ',err);}.bind(this));},initButtons_(){this.recordButton_.addEventListener('click',function(event){event.stopPropagation();this.beginRecording();}.bind(this));this.loadButton_.addEventListener('click',function(event){event.stopPropagation();this.onLoadClicked_();}.bind(this));this.saveButton_.addEventListener('click',this.onSaveClicked_.bind(this));this.saveButton_.disabled=true;},requestFilename_(){const illegalRe=/[\\/\\?<>\\\\:\\*\\|\":]/g;const controlRe=/[\\x00-\\x1f\\x80-\\x9f]/g;const reservedRe=/^\\.+$/;const defaultName=this.activeTrace_.filename;let fileExtension='.json';let fileRegex=/\\.json$/;if(/[.]gz$/.test(defaultName)){fileExtension+='.gz';fileRegex=/\\.json\\.gz$/;}else if(/[.]zip$/.test(defaultName)){fileExtension='.zip';fileRegex=/\\.zip$/;}\nconst custom=prompt('Filename? ('+fileExtension+' appended) Or leave blank:');if(custom===null){return undefined;}\nlet name;if(custom){name=' '+custom;}else{const date=new Date();const dateText=' '+date.toDateString()+' '+date.toLocaleTimeString();name=dateText;}\nconst filename=defaultName.replace(fileRegex,name)+fileExtension;return filename.replace(illegalRe,'.').replace(controlRe,'\\u2022').replace(reservedRe,'').replace(/\\s+/g,'_');},onSaveClicked_(){const blob=new Blob([this.activeTrace_.data],{type:'application/octet-binary'});const blobUrl=window.webkitURL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;const filename=this.requestFilename_();if(filename){link.download=filename;link.click();}},onLoadClicked_(){const inputElement=document.createElement('input');inputElement.type='file';inputElement.multiple=false;let changeFired=false;inputElement.addEventListener('change',function(e){if(changeFired)return;changeFired=true;const file=inputElement.files[0];tr.ui.b.readFile(file).then(function(data){this.setActiveTrace(file.name,data);}.bind(this),function(err){tr.ui.b.Overlay.showError('Error while loading file: '+err);});}.bind(this),false);inputElement.click();},initDragAndDrop_(){this.dropHandler_=this.dropHandler_.bind(this);this.ignoreDragEvent_=this.ignoreDragEvent_.bind(this);document.addEventListener('dragstart',this.ignoreDragEvent_,false);document.addEventListener('dragend',this.ignoreDragEvent_,false);document.addEventListener('dragenter',this.ignoreDragEvent_,false);document.addEventListener('dragleave',this.ignoreDragEvent_,false);document.addEventListener('dragover',this.ignoreDragEvent_,false);document.addEventListener('drop',this.dropHandler_,false);},detachDragAndDrop_(){document.removeEventListener('dragstart',this.ignoreDragEvent_);document.removeEventListener('dragend',this.ignoreDragEvent_);document.removeEventListener('dragenter',this.ignoreDragEvent_);document.removeEventListener('dragleave',this.ignoreDragEvent_);document.removeEventListener('dragover',this.ignoreDragEvent_);document.removeEventListener('drop',this.dropHandler_);},ignoreDragEvent_(e){e.preventDefault();return false;},dropHandler_(e){if(this.isAnyDialogUp_)return;e.stopPropagation();e.preventDefault();const files=e.dataTransfer.files;if(files.length!==1){tr.ui.b.Overlay.showError('1 file supported at a time.');return;}\ntr.ui.b.readFile(files[0]).then(function(data){this.setActiveTrace(files[0].name,data);}.bind(this),function(err){tr.ui.b.Overlay.showError('Error while loading file: '+err);});return false;}};return{ProfilingView,};});'use strict';tr.exportTo('tr.e.importer.gcloud_trace',function(){function GcloudTraceImporter(model,eventData){this.importPriority=2;this.eventData_=eventData;}\nGcloudTraceImporter.canImport=function(eventData){if(typeof(eventData)!=='string'&&!(eventData instanceof String)){return false;}\nconst normalizedEventData=eventData.slice(0,20).replace(/\\s/g,'');if(normalizedEventData.length<14)return false;return normalizedEventData.slice(0,14)==='{\"projectId\":\"';};GcloudTraceImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GcloudTraceImporter';},extractSubtraces(){const traceEvents=this.createEventsForTrace();return traceEvents?[traceEvents]:[];},createEventsForTrace(){const events=[];const trace=JSON.parse(this.eventData_);const spanLength=trace.spans.length;for(let i=0;i<spanLength;i++){events.push(this.createEventForSpan(trace.traceId,trace.spans[i]));}\nreturn{'traceEvents':events};},createEventForSpan(traceId,span){let newArgs={};if(span.labels){newArgs=JSON.parse(JSON.stringify(span.labels));}\nnewArgs['Span ID']=span.spanId;newArgs['Start Time']=span.startTime;newArgs['End Time']=span.endTime;if(span.parentSpanId){newArgs['Parent Span ID']=span.parentSpanId;}\nreturn{name:span.name,args:newArgs,pid:traceId,ts:Date.parse(span.startTime)*1000,dur:(Date.parse(span.endTime)-Date.parse(span.startTime))*1000,cat:'tracespan',tid:traceId,ph:'X'};}};tr.importer.Importer.register(GcloudTraceImporter);return{GcloudTraceImporter,};});'use strict';tr.exportTo('tr.model.helpers',function(){const Frame=tr.model.Frame;const Statistics=tr.b.math.Statistics;const UI_DRAW_TYPE={NONE:'none',LEGACY:'legacy',MARSHMALLOW:'marshmallow'};const UI_THREAD_DRAW_NAMES={'performTraversals':UI_DRAW_TYPE.LEGACY,'Choreographer#doFrame':UI_DRAW_TYPE.MARSHMALLOW};const RENDER_THREAD_DRAW_NAME='DrawFrame';const RENDER_THREAD_INDEP_DRAW_NAME='doFrame';const RENDER_THREAD_QUEUE_NAME='queueBuffer';const RENDER_THREAD_SWAP_NAME='eglSwapBuffers';const THREAD_SYNC_NAME='syncFrameState';function getSlicesForThreadTimeRanges(threadTimeRanges){const ret=[];threadTimeRanges.forEach(function(threadTimeRange){const slices=[];threadTimeRange.thread.sliceGroup.iterSlicesInTimeRange(function(slice){slices.push(slice);},threadTimeRange.start,threadTimeRange.end);ret.push.apply(ret,slices);});return ret;}\nfunction makeFrame(threadTimeRanges,surfaceFlinger){const args={};if(surfaceFlinger&&surfaceFlinger.hasVsyncs){const start=Statistics.min(threadTimeRanges,function(threadTimeRanges){return threadTimeRanges.start;});args.deadline=surfaceFlinger.getFrameDeadline(start);args.frameKickoff=surfaceFlinger.getFrameKickoff(start);}\nconst events=getSlicesForThreadTimeRanges(threadTimeRanges);return new Frame(events,threadTimeRanges,args);}\nfunction findOverlappingDrawFrame(renderThread,uiDrawSlice){if(!renderThread)return undefined;let overlappingDrawFrame;const slices=tr.b.iterateOverIntersectingIntervals(renderThread.sliceGroup.slices,function(range){return range.start;},function(range){return range.end;},uiDrawSlice.start,uiDrawSlice.end,function(rtDrawSlice){if(rtDrawSlice.title===RENDER_THREAD_DRAW_NAME){const rtSyncSlice=rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME);if(rtSyncSlice&&rtSyncSlice.start>=uiDrawSlice.start&&rtSyncSlice.end<=uiDrawSlice.end){overlappingDrawFrame=rtDrawSlice;}}});return overlappingDrawFrame;}\nfunction getPreTraversalWorkRanges(uiThread){if(!uiThread)return[];const preFrameEvents=[];uiThread.sliceGroup.slices.forEach(function(slice){if(slice.title==='obtainView'||slice.title==='setupListItem'||slice.title==='deliverInputEvent'||slice.title==='RV Scroll'){preFrameEvents.push(slice);}});uiThread.asyncSliceGroup.slices.forEach(function(slice){if(slice.title==='deliverInputEvent'){preFrameEvents.push(slice);}});return tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(preFrameEvents),3,function(events){return{start:events[0].min,end:events[events.length-1].max};});}\nfunction getFrameStartTime(traversalStart,preTraversalWorkRanges){const preTraversalWorkRange=tr.b.findClosestIntervalInSortedIntervals(preTraversalWorkRanges,function(range){return range.start;},function(range){return range.end;},traversalStart,3);if(preTraversalWorkRange){return preTraversalWorkRange.start;}\nreturn traversalStart;}\nfunction getRtFrameEndTime(rtDrawSlice){const rtQueueSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_QUEUE_NAME);if(rtQueueSlice){return rtQueueSlice.end;}\nconst rtSwapSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_SWAP_NAME);if(rtSwapSlice){return rtSwapSlice.end;}\nreturn rtDrawSlice.end;}\nfunction getUiThreadDrivenFrames(app){if(!app.uiThread)return[];let preTraversalWorkRanges=[];if(app.uiDrawType===UI_DRAW_TYPE.LEGACY){preTraversalWorkRanges=getPreTraversalWorkRanges(app.uiThread);}\nconst frames=[];app.uiThread.sliceGroup.slices.forEach(function(slice){if(!(slice.title in UI_THREAD_DRAW_NAMES)){return;}\nconst threadTimeRanges=[];const uiThreadTimeRange={thread:app.uiThread,start:getFrameStartTime(slice.start,preTraversalWorkRanges),end:slice.end};threadTimeRanges.push(uiThreadTimeRange);const rtDrawSlice=findOverlappingDrawFrame(app.renderThread,slice);if(rtDrawSlice){const rtSyncSlice=rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME);if(rtSyncSlice){uiThreadTimeRange.end=Math.min(uiThreadTimeRange.end,rtSyncSlice.start);}\nthreadTimeRanges.push({thread:app.renderThread,start:rtDrawSlice.start,end:getRtFrameEndTime(rtDrawSlice)});}\nframes.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;}\nfunction getRenderThreadDrivenFrames(app){if(!app.renderThread)return[];const frames=[];app.renderThread.sliceGroup.getSlicesOfName(RENDER_THREAD_INDEP_DRAW_NAME).forEach(function(slice){const threadTimeRanges=[{thread:app.renderThread,start:slice.start,end:slice.end}];frames.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;}\nfunction getUiDrawType(uiThread){if(!uiThread){return UI_DRAW_TYPE.NONE;}\nconst slices=uiThread.sliceGroup.slices;for(let i=0;i<slices.length;i++){if(slices[i].title in UI_THREAD_DRAW_NAMES){return UI_THREAD_DRAW_NAMES[slices[i].title];}}\nreturn UI_DRAW_TYPE.NONE;}\nfunction getInputSamples(process){let samples=undefined;for(const counterName in process.counters){if(/^android\\.aq\\:pending/.test(counterName)&&process.counters[counterName].numSeries===1){samples=process.counters[counterName].series[0].samples;break;}}\nif(!samples)return[];const inputSamples=[];let lastValue=0;samples.forEach(function(sample){if(sample.value>lastValue){inputSamples.push(sample);}\nlastValue=sample.value;});return inputSamples;}\nfunction getAnimationAsyncSlices(uiThread){if(!uiThread)return[];const slices=[];for(const slice of uiThread.asyncSliceGroup.getDescendantEvents()){if(/^animator\\:/.test(slice.title)){slices.push(slice);}}\nreturn slices;}\nfunction AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType){this.process=process;this.uiThread=uiThread;this.renderThread=renderThread;this.surfaceFlinger=surfaceFlinger;this.uiDrawType=uiDrawType;this.frames_=undefined;this.inputs_=undefined;}\nAndroidApp.createForProcessIfPossible=function(process,surfaceFlinger){let uiThread=process.getThread(process.pid);const uiDrawType=getUiDrawType(uiThread);if(uiDrawType===UI_DRAW_TYPE.NONE){uiThread=undefined;}\nconst renderThreads=process.findAllThreadsNamed('RenderThread');const renderThread=(renderThreads.length===1?renderThreads[0]:undefined);if(uiThread||renderThread){return new AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType);}};AndroidApp.prototype={getFrames(){if(!this.frames_){const uiFrames=getUiThreadDrivenFrames(this);const rtFrames=getRenderThreadDrivenFrames(this);this.frames_=uiFrames.concat(rtFrames);this.frames_.sort(function(a,b){a.end-b.end;});}\nreturn this.frames_;},getInputSamples(){if(!this.inputs_){this.inputs_=getInputSamples(this.process);}\nreturn this.inputs_;},getAnimationAsyncSlices(){if(!this.animations_){this.animations_=getAnimationAsyncSlices(this.uiThread);}\nreturn this.animations_;}};return{AndroidApp,};});'use strict';tr.exportTo('tr.model.helpers',function(){const findLowIndexInSortedArray=tr.b.findLowIndexInSortedArray;const VSYNC_SF_NAME='android.VSYNC-sf';const VSYNC_APP_NAME='android.VSYNC-app';const VSYNC_FALLBACK_NAME='android.VSYNC';const TIMESTAMP_FUDGE_MS=0.01;function getVsyncTimestamps(process,counterName){let vsync=process.counters[counterName];if(!vsync){vsync=process.counters[VSYNC_FALLBACK_NAME];}\nif(vsync&&vsync.numSeries===1&&vsync.numSamples>1){return vsync.series[0].timestamps;}\nreturn undefined;}\nfunction AndroidSurfaceFlinger(process,thread){this.process=process;this.thread=thread;this.appVsync_=undefined;this.sfVsync_=undefined;this.appVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_APP_NAME);this.sfVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_SF_NAME);this.deadlineDelayMs_=this.appVsyncTimestamps_!==this.sfVsyncTimestamps_?5:TIMESTAMP_FUDGE_MS;}\nAndroidSurfaceFlinger.createForProcessIfPossible=function(process){const mainThread=process.getThread(process.pid);if(mainThread&&mainThread.name&&/surfaceflinger/.test(mainThread.name)){return new AndroidSurfaceFlinger(process,mainThread);}\nconst primaryThreads=process.findAllThreadsNamed('SurfaceFlinger');if(primaryThreads.length===1){return new AndroidSurfaceFlinger(process,primaryThreads[0]);}\nreturn undefined;};AndroidSurfaceFlinger.prototype={get hasVsyncs(){return!!this.appVsyncTimestamps_&&!!this.sfVsyncTimestamps_;},getFrameKickoff(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');}\nconst firstGreaterIndex=findLowIndexInSortedArray(this.appVsyncTimestamps_,function(x){return x;},timestamp+TIMESTAMP_FUDGE_MS);if(firstGreaterIndex<1)return undefined;return this.appVsyncTimestamps_[firstGreaterIndex-1];},getFrameDeadline(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');}\nconst firstGreaterIndex=findLowIndexInSortedArray(this.sfVsyncTimestamps_,function(x){return x;},timestamp+this.deadlineDelayMs_);if(firstGreaterIndex>=this.sfVsyncTimestamps_.length){return undefined;}\nreturn this.sfVsyncTimestamps_[firstGreaterIndex];}};return{AndroidSurfaceFlinger,};});'use strict';tr.exportTo('tr.model.helpers',function(){const AndroidApp=tr.model.helpers.AndroidApp;const AndroidSurfaceFlinger=tr.model.helpers.AndroidSurfaceFlinger;const IMPORTANT_SURFACE_FLINGER_SLICES={'doComposition':true,'updateTexImage':true,'postFramebuffer':true};const IMPORTANT_UI_THREAD_SLICES={'Choreographer#doFrame':true,'performTraversals':true,'deliverInputEvent':true};const IMPORTANT_RENDER_THREAD_SLICES={'doFrame':true};function iterateImportantThreadSlices(thread,important,callback){if(!thread)return;thread.sliceGroup.slices.forEach(function(slice){if(slice.title in important){callback(slice);}});}\nfunction AndroidModelHelper(model){this.model=model;this.apps=[];this.surfaceFlinger=undefined;const processes=model.getAllProcesses();for(let i=0;i<processes.length&&!this.surfaceFlinger;i++){this.surfaceFlinger=AndroidSurfaceFlinger.createForProcessIfPossible(processes[i]);}\nmodel.getAllProcesses().forEach(function(process){const app=AndroidApp.createForProcessIfPossible(process,this.surfaceFlinger);if(app){this.apps.push(app);}},this);}\nAndroidModelHelper.guid=tr.b.GUID.allocateSimple();AndroidModelHelper.supportsModel=function(model){return true;};AndroidModelHelper.prototype={iterateImportantSlices(callback){if(this.surfaceFlinger){iterateImportantThreadSlices(this.surfaceFlinger.thread,IMPORTANT_SURFACE_FLINGER_SLICES,callback);}\nthis.apps.forEach(function(app){iterateImportantThreadSlices(app.uiThread,IMPORTANT_UI_THREAD_SLICES,callback);iterateImportantThreadSlices(app.renderThread,IMPORTANT_RENDER_THREAD_SLICES,callback);});}};return{AndroidModelHelper,};});'use strict';tr.exportTo('tr.e.audits',function(){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;const Auditor=tr.c.Auditor;const AndroidModelHelper=tr.model.helpers.AndroidModelHelper;const ColorScheme=tr.b.ColorScheme;const Statistics=tr.b.math.Statistics;const FRAME_PERF_CLASS=tr.model.FRAME_PERF_CLASS;const Alert=tr.model.Alert;const EventInfo=tr.model.EventInfo;const Scalar=tr.b.Scalar;const timeDurationInMs=tr.b.Unit.byName.timeDurationInMs;const EXPECTED_FRAME_TIME_MS=16.67;function getStart(e){return e.start;}\nfunction getDuration(e){return e.duration;}\nfunction getCpuDuration(e){return(e.cpuDuration!==undefined)?e.cpuDuration:e.duration;}\nfunction frameIsActivityStart(frame){return frame.associatedEvents.any(x=>x.title==='activityStart');}\nfunction frameMissedDeadline(frame){return frame.args.deadline&&frame.args.deadline<frame.end;}\nfunction DocLinkBuilder(){this.docLinks=[];}\nDocLinkBuilder.prototype={addAppVideo(name,videoId){this.docLinks.push({label:'Video Link',textContent:('Android Performance Patterns: '+name),href:'https://www.youtube.com/watch?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE&v='+videoId});return this;},addDacRef(name,link){this.docLinks.push({label:'Doc Link',textContent:(name+' documentation'),href:'https://developer.android.com/reference/'+link});return this;},build(){return this.docLinks;}};function AndroidAuditor(model){Auditor.call(this,model);const helper=model.getOrCreateHelper(AndroidModelHelper);if(helper.apps.length||helper.surfaceFlinger){this.helper=helper;}}\nAndroidAuditor.viewAlphaAlertInfo_=new EventInfo('Inefficient View alpha usage','Setting an alpha between 0 and 1 has significant performance costs, if one of the fast alpha paths is not used.',new DocLinkBuilder().addAppVideo('Hidden Cost of Transparency','wIy8g8yNhNk').addDacRef('View#setAlpha()','android/view/View.html#setAlpha(float)').build());AndroidAuditor.saveLayerAlertInfo_=new EventInfo('Expensive rendering with Canvas#saveLayer()','Canvas#saveLayer() incurs extremely high rendering cost. They disrupt the rendering pipeline when drawn, forcing a flush of drawing content. Instead use View hardware layers, or static Bitmaps. This enables the offscreen buffers to be reused in between frames, and avoids the disruptive render target switch.',new DocLinkBuilder().addAppVideo('Hidden Cost of Transparency','wIy8g8yNhNk').addDacRef('Canvas#saveLayerAlpha()','android/graphics/Canvas.html#saveLayerAlpha(android.graphics.RectF, int, int)').build());AndroidAuditor.getSaveLayerAlerts_=function(frame){const badAlphaRegEx=/^(.+) alpha caused (unclipped )?saveLayer (\\d+)x(\\d+)$/;const saveLayerRegEx=/^(unclipped )?saveLayer (\\d+)x(\\d+)$/;const ret=[];const events=[];frame.associatedEvents.forEach(function(slice){const match=badAlphaRegEx.exec(slice.title);if(match){const args={'view name':match[1],'width':parseInt(match[3]),'height':parseInt(match[4])};ret.push(new Alert(AndroidAuditor.viewAlphaAlertInfo_,slice.start,[slice],args));}else if(saveLayerRegEx.test(slice.title)){events.push(slice);}},this);if(events.length>ret.length){const unclippedSeen=Statistics.sum(events,function(slice){return saveLayerRegEx.exec(slice.title)[1]?1:0;});const clippedSeen=events.length-unclippedSeen;const earliestStart=Statistics.min(events,function(slice){return slice.start;});const args={'Unclipped saveLayer count (especially bad!)':unclippedSeen,'Clipped saveLayer count':clippedSeen};events.push(frame);ret.push(new Alert(AndroidAuditor.saveLayerAlertInfo_,earliestStart,events,args));}\nreturn ret;};AndroidAuditor.pathAlertInfo_=new EventInfo('Path texture churn','Paths are drawn with a mask texture, so when a path is modified / newly drawn, that texture must be generated and uploaded to the GPU. Ensure that you cache paths between frames and do not unnecessarily call Path#reset(). You can cut down on this cost by sharing Path object instances between drawables/views.');AndroidAuditor.getPathAlert_=function(frame){const uploadRegEx=/^Generate Path Texture$/;const events=frame.associatedEvents.filter(function(event){return event.title==='Generate Path Texture';});const start=Statistics.min(events,getStart);const duration=Statistics.sum(events,getDuration);if(duration<3)return undefined;events.push(frame);return new Alert(AndroidAuditor.pathAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.uploadAlertInfo_=new EventInfo('Expensive Bitmap uploads','Bitmaps that have been modified / newly drawn must be uploaded to the GPU. Since this is expensive if the total number of pixels uploaded is large, reduce the amount of Bitmap churn in this animation/context, per frame.');AndroidAuditor.getUploadAlert_=function(frame){const uploadRegEx=/^Upload (\\d+)x(\\d+) Texture$/;const events=[];let start=Number.POSITIVE_INFINITY;let duration=0;let pixelsUploaded=0;frame.associatedEvents.forEach(function(event){const match=uploadRegEx.exec(event.title);if(match){events.push(event);start=Math.min(start,event.start);duration+=event.duration;pixelsUploaded+=parseInt(match[1])*parseInt(match[2]);}});if(events.length===0||duration<3)return undefined;const mPixels=(pixelsUploaded/1000000).toFixed(2)+' million';const args={'Pixels uploaded':mPixels,'Time spent':new Scalar(timeDurationInMs,duration)};events.push(frame);return new Alert(AndroidAuditor.uploadAlertInfo_,start,events,args);};AndroidAuditor.ListViewInflateAlertInfo_=new EventInfo('Inflation during ListView recycling','ListView item recycling involved inflating views. Ensure your Adapter#getView() recycles the incoming View, instead of constructing a new one.');AndroidAuditor.ListViewBindAlertInfo_=new EventInfo('Inefficient ListView recycling/rebinding','ListView recycling taking too much time per frame. Ensure your Adapter#getView() binds data efficiently.');AndroidAuditor.getListViewAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='obtainView'||event.title==='setupListItem';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;let hasInflation=false;for(const event of events){if(event.findDescendentSlice('inflate')){hasInflation=true;}}\nconst start=Statistics.min(events,getStart);const args={'Time spent':new Scalar(timeDurationInMs,duration)};args['ListView items '+(hasInflation?'inflated':'rebound')]=events.length/2;const eventInfo=hasInflation?AndroidAuditor.ListViewInflateAlertInfo_:AndroidAuditor.ListViewBindAlertInfo_;events.push(frame);return new Alert(eventInfo,start,events,args);};AndroidAuditor.measureLayoutAlertInfo_=new EventInfo('Expensive measure/layout pass','Measure/Layout took a significant time, contributing to jank. Avoid triggering layout during animations.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').build());AndroidAuditor.getMeasureLayoutAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='measure'||event.title==='layout';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.measureLayoutAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.viewDrawAlertInfo_=new EventInfo('Long View#draw()','Recording the drawing commands of invalidated Views took a long time. Avoid significant work in View or Drawable custom drawing, especially allocations or drawing to Bitmaps.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getViewDrawAlert_=function(frame){let slice=undefined;for(const event of frame.associatedEvents){if(event.title==='getDisplayList'||event.title==='Record View#draw()'){slice=event;break;}}\nif(!slice||getCpuDuration(slice)<3)return undefined;return new Alert(AndroidAuditor.viewDrawAlertInfo_,slice.start,[slice,frame],{'Time spent':new Scalar(timeDurationInMs,getCpuDuration(slice))});};AndroidAuditor.blockingGcAlertInfo_=new EventInfo('Blocking Garbage Collection','Blocking GCs are caused by object churn, and made worse by having large numbers of objects in the heap. Avoid allocating objects during animations/scrolling, and recycle Bitmaps to avoid triggering garbage collection.',new DocLinkBuilder().addAppVideo('Garbage Collection in Android','pzfzz50W5Uo').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getBlockingGcAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='DVM Suspend'||event.title==='GC: Wait For Concurrent';});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.blockingGcAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.lockContentionAlertInfo_=new EventInfo('Lock contention','UI thread lock contention is caused when another thread holds a lock that the UI thread is trying to use. UI thread progress is blocked until the lock is released. Inspect locking done within the UI thread, and ensure critical sections are short.');AndroidAuditor.getLockContentionAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return/^Lock Contention on /.test(event.title);});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<1)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.lockContentionAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.schedulingAlertInfo_=new EventInfo('Scheduling delay','Work to produce this frame was descheduled for several milliseconds, contributing to jank. Ensure that code on the UI thread doesn\\'t block on work being done on other threads, and that background threads (doing e.g. network or bitmap loading) are running at android.os.Process#THREAD_PRIORITY_BACKGROUND or lower so they are less likely to interrupt the UI thread. These background threads should show up with a priority number of 130 or higher in the scheduling section under the Kernel process.');AndroidAuditor.getSchedulingAlert_=function(frame){let totalDuration=0;const totalStats={};for(const ttr of frame.threadTimeRanges){const stats=ttr.thread.getSchedulingStatsForRange(ttr.start,ttr.end);for(const[key,value]of Object.entries(stats)){if(!(key in totalStats)){totalStats[key]=0;}\ntotalStats[key]+=value;totalDuration+=value;}}\nif(!(SCHEDULING_STATE.RUNNING in totalStats)||totalDuration===0||totalDuration-totalStats[SCHEDULING_STATE.RUNNING]<3){return;}\nconst args={};for(const[key,value]of Object.entries(totalStats)){let newKey=key;if(key===SCHEDULING_STATE.RUNNABLE){newKey='Not scheduled, but runnable';}else if(key===SCHEDULING_STATE.UNINTR_SLEEP){newKey='Blocking I/O delay';}\nargs[newKey]=new Scalar(timeDurationInMs,value);}\nreturn new Alert(AndroidAuditor.schedulingAlertInfo_,frame.start,[frame],args);};AndroidAuditor.prototype={__proto__:Auditor.prototype,renameAndSort_(){this.model.kernel.important=false;this.model.getAllProcesses().forEach(function(process){if(this.helper.surfaceFlinger&&process===this.helper.surfaceFlinger.process){if(!process.name){process.name='SurfaceFlinger';}\nprocess.sortIndex=Number.NEGATIVE_INFINITY;process.important=false;return;}\nconst uiThread=process.getThread(process.pid);if(!process.name&&uiThread&&uiThread.name){if(/^ndroid\\./.test(uiThread.name)){uiThread.name='a'+uiThread.name;}\nprocess.name=uiThread.name;uiThread.name='UI Thread';}\nprocess.sortIndex=0;for(const tid in process.threads){process.sortIndex-=process.threads[tid].sliceGroup.slices.length;}},this);this.model.getAllThreads().forEach(function(thread){if(thread.tid===thread.parent.pid){thread.sortIndex=-3;}\nif(thread.name==='RenderThread'){thread.sortIndex=-2;}\nif(/^hwuiTask/.test(thread.name)){thread.sortIndex=-1;}});},pushFramesAndJudgeJank_(){let badFramesObserved=0;let framesObserved=0;const surfaceFlinger=this.helper.surfaceFlinger;this.helper.apps.forEach(function(app){app.process.frames=app.getFrames();app.process.frames.forEach(function(frame){if(frame.totalDuration>EXPECTED_FRAME_TIME_MS*2){badFramesObserved+=2;frame.perfClass=FRAME_PERF_CLASS.TERRIBLE;}else if(frame.totalDuration>EXPECTED_FRAME_TIME_MS||frameMissedDeadline(frame)){badFramesObserved++;frame.perfClass=FRAME_PERF_CLASS.BAD;}else{frame.perfClass=FRAME_PERF_CLASS.GOOD;}});framesObserved+=app.process.frames.length;});if(framesObserved){const portionBad=badFramesObserved/framesObserved;if(portionBad>0.3){this.model.faviconHue='red';}else if(portionBad>0.05){this.model.faviconHue='yellow';}else{this.model.faviconHue='green';}}},pushEventInfo_(){const appAnnotator=new AppAnnotator();this.helper.apps.forEach(function(app){if(app.uiThread){appAnnotator.applyEventInfos(app.uiThread.sliceGroup);}\nif(app.renderThread){appAnnotator.applyEventInfos(app.renderThread.sliceGroup);}});},runAnnotate(){if(!this.helper)return;this.renameAndSort_();this.pushFramesAndJudgeJank_();this.pushEventInfo_();this.helper.iterateImportantSlices(function(slice){slice.important=true;});},runAudit(){if(!this.helper)return;const alerts=this.model.alerts;this.helper.apps.forEach(function(app){app.getFrames().forEach(function(frame){alerts.push.apply(alerts,AndroidAuditor.getSaveLayerAlerts_(frame));if(frame.perfClass===FRAME_PERF_CLASS.NEUTRAL||frame.perfClass===FRAME_PERF_CLASS.GOOD){return;}\nlet alert=AndroidAuditor.getPathAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getUploadAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getListViewAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getMeasureLayoutAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getViewDrawAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getBlockingGcAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getLockContentionAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getSchedulingAlert_(frame);if(alert)alerts.push(alert);});},this);this.addRenderingInteractionRecords();this.addInputInteractionRecords();},addRenderingInteractionRecords(){const events=[];this.helper.apps.forEach(function(app){events.push.apply(events,app.getAnimationAsyncSlices());events.push.apply(events,app.getFrames());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Rendering',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(events),30,mergerFunction);},addInputInteractionRecords(){const inputSamples=[];this.helper.apps.forEach(function(app){inputSamples.push.apply(inputSamples,app.getInputSamples());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Input',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);const inputRanges=inputSamples.map(function(sample){return tr.b.math.Range.fromExplicitRange(sample.timestamp,sample.timestamp);});tr.b.math.mergeRanges(inputRanges,30,mergerFunction);}};Auditor.register(AndroidAuditor);function AppAnnotator(){this.titleInfoLookup=new Map();this.titleParentLookup=new Map();this.build_();}\nAppAnnotator.prototype={build_(){const registerEventInfo=function(dict){this.titleInfoLookup.set(dict.title,new EventInfo(dict.title,dict.description,dict.docLinks));if(dict.parents){this.titleParentLookup.set(dict.title,dict.parents);}}.bind(this);registerEventInfo({title:'inflate',description:'Constructing a View hierarchy from pre-processed XML via LayoutInflater#layout. This includes constructing all of the View objects in the hierarchy, and applying styled attributes.'});registerEventInfo({title:'obtainView',description:'Adapter#getView() called to bind content to a recycled View that is being presented.'});registerEventInfo({title:'setupListItem',description:'Attached a newly-bound, recycled View to its parent ListView.'});registerEventInfo({title:'setupGridItem',description:'Attached a newly-bound, recycled View to its parent GridView.'});const choreographerLinks=new DocLinkBuilder().addDacRef('Choreographer','android/view/Choreographer.html').build();registerEventInfo({title:'Choreographer#doFrame',docLinks:choreographerLinks,description:'Choreographer executes frame callbacks for inputs, animations, and rendering traversals. When this work is done, a frame will be presented to the user.'});registerEventInfo({title:'input',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Input callbacks are processed. This generally encompasses dispatching input to Views, as well as any work the Views do to process this input/gesture.'});registerEventInfo({title:'animation',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Animation callbacks are processed. This is generally minimal work, as animations determine progress for the frame, and push new state to animated objects (such as setting View properties).'});registerEventInfo({title:'traversals',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Primary draw traversals. This is the primary traversal of the View hierarchy, including layout and draw passes.'});const traversalParents=['Choreographer#doFrame','performTraversals'];const layoutLinks=new DocLinkBuilder().addDacRef('View#Layout','android/view/View.html#Layout').build();registerEventInfo({title:'performTraversals',description:'A drawing traversal of the View hierarchy, comprised of all layout and drawing needed to produce the frame.'});registerEventInfo({title:'measure',parents:traversalParents,docLinks:layoutLinks,description:'First of two phases in view hierarchy layout. Views are asked to size themselves according to constraints supplied by their parent. Some ViewGroups may measure a child more than once to help satisfy their own constraints. Nesting ViewGroups that measure children more than once can lead to excessive and repeated work.'});registerEventInfo({title:'layout',parents:traversalParents,docLinks:layoutLinks,description:'Second of two phases in view hierarchy layout, repositioning content and child Views into their new locations.'});const drawString='Draw pass over the View hierarchy. Every invalidated View will have its drawing commands recorded. On Android versions prior to Lollipop, this would also include the issuing of draw commands to the GPU. Starting with Lollipop, it only includes the recording of commands, and syncing that information to the RenderThread.';registerEventInfo({title:'draw',parents:traversalParents,description:drawString});const recordString='Every invalidated View\\'s drawing commands are recorded. Each will have View#draw() called, and is passed a Canvas that will record and store its drawing commands until it is next invalidated/rerecorded.';registerEventInfo({title:'getDisplayList',parents:['draw'],description:recordString});registerEventInfo({title:'Record View#draw()',parents:['draw'],description:recordString});registerEventInfo({title:'drawDisplayList',parents:['draw'],description:'Execution of recorded draw commands to generate a frame. This represents the actual formation and issuing of drawing commands to the GPU. On Android L and higher devices, this work is done on a dedicated RenderThread, instead of on the UI Thread.'});registerEventInfo({title:'DrawFrame',description:'RenderThread portion of the standard UI/RenderThread split frame. This represents the actual formation and issuing of drawing commands to the GPU.'});registerEventInfo({title:'doFrame',description:'RenderThread animation frame. Represents drawing work done by the RenderThread on a frame where the UI thread did not produce new drawing content.'});registerEventInfo({title:'syncFrameState',description:'Sync stage between the UI thread and the RenderThread, where the UI thread hands off a frame (including information about modified Views). Time in this method primarily consists of uploading modified Bitmaps to the GPU. After this sync is completed, the UI thread is unblocked, and the RenderThread starts to render the frame.'});registerEventInfo({title:'flush drawing commands',description:'Issuing the now complete drawing commands to the GPU.'});registerEventInfo({title:'eglSwapBuffers',description:'Complete GPU rendering of the frame.'});registerEventInfo({title:'RV Scroll',description:'RecyclerView is calculating a scroll. If there are too many of these in Systrace, some Views inside RecyclerView might be causing it. Try to avoid using EditText, focusable views or handle them with care.'});registerEventInfo({title:'RV OnLayout',description:'OnLayout has been called by the View system. If this shows up too many times in Systrace, make sure the children of RecyclerView do not update themselves directly. This will cause a full re-layout but when it happens via the Adapter notifyItemChanged, RecyclerView can avoid full layout calculation.'});registerEventInfo({title:'RV FullInvalidate',description:'NotifyDataSetChanged or equal has been called. If this is taking a long time, try sending granular notify adapter changes instead of just calling notifyDataSetChanged or setAdapter / swapAdapter. Adding stable ids to your adapter might help.'});registerEventInfo({title:'RV PartialInvalidate',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV OnBindView',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV CreateView',description:'RecyclerView is creating a new View. If too many of these are present: 1) There might be a problem in Recycling (e.g. custom Animations that set transient state and prevent recycling or ItemAnimator not implementing the contract properly. See Adapter#onFailedToRecycleView(ViewHolder). 2) There may be too many item view types. Try merging them. 3) There might be too many itemChange animations and not enough space in RecyclerPool. Try increasing your pool size and item cache size.'});registerEventInfo({title:'eglSwapBuffers',description:'The CPU has finished producing drawing commands, and is flushing drawing work to the GPU, and posting that buffer to the consumer (which is often SurfaceFlinger window composition). Once this is completed, the GPU can produce the frame content without any involvement from the CPU.'});},applyEventInfosRecursive_(parentNames,slice){const checkExpectedParentNames=function(expectedParentNames){if(!expectedParentNames)return true;return expectedParentNames.some(function(name){return parentNames.has(name);});};if(this.titleInfoLookup.has(slice.title)){if(checkExpectedParentNames(this.titleParentLookup.get(slice.title))){slice.info=this.titleInfoLookup.get(slice.title);}}\nif(slice.subSlices.length>0){if(!parentNames.has(slice.title)){parentNames.set(slice.title,0);}\nparentNames.set(slice.title,parentNames.get(slice.title)+1);slice.subSlices.forEach(function(subSlice){this.applyEventInfosRecursive_(parentNames,subSlice);},this);parentNames.set(slice.title,parentNames.get(slice.title)-1);if(parentNames.get(slice.title)===0){delete parentNames[slice.title];}}},applyEventInfos(sliceGroup){sliceGroup.topLevelSlices.forEach(function(slice){this.applyEventInfosRecursive_(new Map(),slice);},this);}};return{AndroidAuditor,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function BlameContextSnapshot(){ObjectSnapshot.apply(this,arguments);}\nBlameContextSnapshot.prototype={__proto__:ObjectSnapshot.prototype,get parentContext(){if(this.args.parent instanceof BlameContextSnapshot){return this.args.parent;}\nreturn undefined;},get userFriendlyName(){return'BlameContext';}};function BlameContextInstance(){ObjectInstance.apply(this,arguments);}\nBlameContextInstance.prototype={__proto__:ObjectInstance.prototype,get blameContextType(){throw new Error('Not implemented');}};return{BlameContextSnapshot,BlameContextInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function FrameTreeNodeSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nFrameTreeNodeSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get renderFrame(){if(this.args.renderFrame instanceof tr.e.chrome.RenderFrameSnapshot){return this.args.renderFrame;}\nreturn undefined;},get url(){return this.args.url;},get userFriendlyName(){return'FrameTreeNode';}};tr.model.ObjectSnapshot.subTypes.register(FrameTreeNodeSnapshot,{typeName:'FrameTreeNode'});function FrameTreeNodeInstance(){BlameContextInstance.apply(this,arguments);}\nFrameTreeNodeInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(FrameTreeNodeInstance,{typeName:'FrameTreeNode'});return{FrameTreeNodeSnapshot,FrameTreeNodeInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function RenderFrameSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nRenderFrameSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,referencedAt(item,object,field){if(item instanceof tr.e.chrome.FrameTreeNodeSnapshot&&object===item.args&&field==='renderFrame'){this.args.frameTreeNode=item;}},get frameTreeNode(){if(this.args.frameTreeNode instanceof\ntr.e.chrome.FrameTreeNodeSnapshot){return this.args.frameTreeNode;}\nreturn undefined;},get url(){if(this.frameTreeNode){return this.frameTreeNode.url;}\nreturn undefined;},get userFriendlyName(){return'RenderFrame';}};tr.model.ObjectSnapshot.subTypes.register(RenderFrameSnapshot,{typeName:'RenderFrame'});function RenderFrameInstance(){BlameContextInstance.apply(this,arguments);}\nRenderFrameInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(RenderFrameInstance,{typeName:'RenderFrame'});return{RenderFrameSnapshot,RenderFrameInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function TopLevelSnapshot(){BlameContextSnapshot.apply(this,arguments);}\nTopLevelSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get userFriendlyName(){return'TopLevel';}};tr.model.ObjectSnapshot.subTypes.register(TopLevelSnapshot,{typeName:'TopLevel'});function TopLevelInstance(){BlameContextInstance.apply(this,arguments);}\nTopLevelInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'TopLevel';}};tr.model.ObjectInstance.subTypes.register(TopLevelInstance,{typeName:'TopLevel'});return{TopLevelSnapshot,TopLevelInstance,};});'use strict';tr.exportTo('tr.e.blink',function(){class BlinkSchedulerAsyncSlice extends tr.model.AsyncSlice{get viewSubGroupGroupingKey(){if(this.title.startsWith('FrameScheduler.')){return'Frame'+this.id;}\nif(this.title.startsWith('Scheduler.')){return'Renderer Scheduler';}\nreturn undefined;}\nget viewSubGroupTitle(){if(this.title.startsWith('FrameScheduler.')){return this.title.substring(15);}\nif(this.title.startsWith('Scheduler.')){return this.title.substring(10);}\nreturn this.title;}}\ntr.model.AsyncSlice.subTypes.register(BlinkSchedulerAsyncSlice,{categoryParts:['renderer.scheduler','disabled-by-default-renderer.scheduler','disabled-by-default-renderer.scheduler.debug',]});return{BlinkSchedulerAsyncSlice,};});'use strict';tr.exportTo('tr.e.audits',function(){const Auditor=tr.c.Auditor;const Alert=tr.model.Alert;const EventInfo=tr.model.EventInfo;function ChromeAuditor(model){Auditor.call(this,model);const modelHelper=this.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper&&modelHelper.browserHelper){this.modelHelper=modelHelper;}else{this.modelHelper=undefined;}}\nfunction getMissedFrameAlerts(rendererHelpers){const alerts=[];for(const rendererHelper of rendererHelpers){if(!rendererHelper.compositorThread)continue;const thread=rendererHelper.compositorThread;const asyncSlices=Object.values(thread.asyncSliceGroup.slices);for(const slice of asyncSlices){if(slice.title!=='PipelineReporter'||!slice.args.termination_status||slice.args.termination_status!=='missed_frame')continue;const alertSlices=[slice].concat(slice.subSlices);alerts.push(new Alert(new EventInfo('Missed Frame','Frame was not submitted before deadline.'),slice.start,alertSlices));}}\nreturn alerts;}\nChromeAuditor.prototype={__proto__:Auditor.prototype,runAnnotate(){if(!this.modelHelper)return;for(const pid in this.modelHelper.rendererHelpers){const rendererHelper=this.modelHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI){rendererHelper.process.important=false;}}},installUserFriendlyCategoryDriverIfNeeded(){this.model.addUserFriendlyCategoryDriver(tr.e.chrome.ChromeUserFriendlyCategoryDriver);},runAudit(){if(!this.modelHelper)return;this.model.replacePIDRefsInPatchups(tr.model.BROWSER_PROCESS_PID_REF,this.modelHelper.browserProcess.pid);this.model.applyObjectRefPatchups();const alerts=getMissedFrameAlerts(Object.values(this.modelHelper.rendererHelpers));this.model.alerts=this.model.alerts.concat(alerts);}};Auditor.register(ChromeAuditor);return{ChromeAuditor,};});'use strict';tr.exportTo('tr.e.chrome',function(){const KNOWN_PROPERTIES={absX:1,absY:1,address:1,anonymous:1,childNeeds:1,children:1,classNames:1,col:1,colSpan:1,float:1,height:1,htmlId:1,name:1,posChildNeeds:1,positioned:1,positionedMovement:1,relX:1,relY:1,relativePositioned:1,row:1,rowSpan:1,selfNeeds:1,stickyPositioned:1,tag:1,width:1};function LayoutObject(snapshot,args){this.snapshot_=snapshot;this.id_=args.address;this.name_=args.name;this.childLayoutObjects_=[];this.otherProperties_={};this.tag_=args.tag;this.relativeRect_=tr.b.math.Rect.fromXYWH(args.relX,args.relY,args.width,args.height);this.absoluteRect_=tr.b.math.Rect.fromXYWH(args.absX,args.absY,args.width,args.height);this.isFloat_=args.float;this.isStickyPositioned_=args.stickyPositioned;this.isPositioned_=args.positioned;this.isRelativePositioned_=args.relativePositioned;this.isAnonymous_=args.anonymous;this.htmlId_=args.htmlId;this.classNames_=args.classNames;this.needsLayoutReasons_=[];if(args.selfNeeds){this.needsLayoutReasons_.push('self');}\nif(args.childNeeds){this.needsLayoutReasons_.push('child');}\nif(args.posChildNeeds){this.needsLayoutReasons_.push('positionedChild');}\nif(args.positionedMovement){this.needsLayoutReasons_.push('positionedMovement');}\nthis.tableRow_=args.row;this.tableCol_=args.col;this.tableRowSpan_=args.rowSpan;this.tableColSpan_=args.colSpan;if(args.children){args.children.forEach(function(child){this.childLayoutObjects_.push(new LayoutObject(snapshot,child));}.bind(this));}\nfor(const property in args){if(!KNOWN_PROPERTIES[property]){this.otherProperties_[property]=args[property];}}}\nLayoutObject.prototype={get snapshot(){return this.snapshot_;},get id(){return this.id_;},get name(){return this.name_;},get tag(){return this.tag_;},get relativeRect(){return this.relativeRect_;},get absoluteRect(){return this.absoluteRect_;},get isPositioned(){return this.isPositioned_;},get isFloat(){return this.isFloat_;},get isStickyPositioned(){return this.isStickyPositioned_;},get isRelativePositioned(){return this.isRelativePositioned_;},get isAnonymous(){return this.isAnonymous_;},get tableRow(){return this.tableRow_;},get tableCol(){return this.tableCol_;},get tableRowSpan(){return this.tableRowSpan_;},get tableColSpan(){return this.tableColSpan_;},get htmlId(){return this.htmlId_;},get classNames(){return this.classNames_;},get needsLayoutReasons(){return this.needsLayoutReasons_;},get hasChildLayoutObjects(){return this.childLayoutObjects_.length>0;},get childLayoutObjects(){return this.childLayoutObjects_;},traverseTree(cb,opt_this){cb.call(opt_this,this);if(!this.hasChildLayoutObjects)return;this.childLayoutObjects.forEach(function(child){child.traverseTree(cb,opt_this);});},get otherPropertyNames(){const names=[];for(const name in this.otherProperties_){names.push(name);}\nreturn names;},getProperty(name){return this.otherProperties_[name];},get previousSnapshotLayoutObject(){if(!this.snapshot.previousSnapshot)return undefined;return this.snapshot.previousSnapshot.getLayoutObjectById(this.id);},get nextSnapshotLayoutObject(){if(!this.snapshot.nextSnapshot)return undefined;return this.snapshot.nextSnapshot.getLayoutObjectById(this.id);}};return{LayoutObject,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function LayoutTreeInstance(){ObjectInstance.apply(this,arguments);}\nLayoutTreeInstance.prototype={__proto__:ObjectInstance.prototype,};ObjectInstance.subTypes.register(LayoutTreeInstance,{typeName:'LayoutTree'});function LayoutTreeSnapshot(){ObjectSnapshot.apply(this,arguments);this.rootLayoutObject=new tr.e.chrome.LayoutObject(this,this.args);}\nLayoutTreeSnapshot.prototype={__proto__:ObjectSnapshot.prototype,};ObjectSnapshot.subTypes.register(LayoutTreeSnapshot,{typeName:'LayoutTree'});return{LayoutTreeInstance,LayoutTreeSnapshot,};});'use strict';tr.exportTo('tr.model',function(){const Event=tr.model.Event;const EventRegistry=tr.model.EventRegistry;class ResourceUsageSample extends Event{constructor(series,start,usage){super();this.series_=series;this.start_=start;this.usage_=usage;}\nget series(){return this.series_;}\nget start(){return this.start_;}\nset start(value){this.start_=value;}\nget usage(){return this.usage_;}\nset usage(value){this.usage_=value;}\naddBoundsToRange(range){range.addValue(this.start);}}\nEventRegistry.register(ResourceUsageSample,{name:'resourceUsageSample',pluralName:'resourceUsageSamples'});return{ResourceUsageSample,};});'use strict';tr.exportTo('tr.model',function(){const ResourceUsageSample=tr.model.ResourceUsageSample;class ResourceUsageSeries extends tr.model.EventContainer{constructor(device){super();this.device_=device;this.samples_=[];}\nget device(){return this.device_;}\nget samples(){return this.samples_;}\nget stableId(){return this.device_.stableId+'.ResourceUsageSeries';}\naddUsageSample(ts,val){const sample=new ResourceUsageSample(this,ts,val);this.samples_.push(sample);return sample;}\ncomputeResourceTimeConsumedInMs(start,end){const measurementRange=tr.b.math.Range.fromExplicitRange(start,end);let resourceTimeInMs=0;let startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0)startIndex=0;for(let i=startIndex;i<endIndex;i++){const sample=this.samples[i];const nextSample=this.samples[i+1];const sampleRange=new tr.b.math.Range();sampleRange.addValue(sample.start);sampleRange.addValue(nextSample?nextSample.start:sample.start);const intersectionRangeInMs=measurementRange.findIntersection(sampleRange);resourceTimeInMs+=intersectionRangeInMs.duration*sample.usage;}\nreturn resourceTimeInMs;}\ngetSamplesWithinRange(start,end){const startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);}\nshiftTimestampsForward(amount){for(let i=0;i<this.samples_.length;++i){this.samples_[i].start+=amount;}}\nupdateBounds(){this.bounds.reset();if(this.samples_.length===0)return;this.bounds.addValue(this.samples_[0].start);this.bounds.addValue(this.samples_[this.samples_.length-1].start);}*childEvents(){yield*this.samples_;}}\nreturn{ResourceUsageSeries,};});'use strict';tr.exportTo('tr.e.audits',function(){class CpuUsageAuditor extends tr.c.Auditor{constructor(model){super();this.model_=model;}\nrunAnnotate(){this.model_.device.cpuUsageSeries=this.computeCpuUsageSeries_(this.model_.bounds.min,this.model_.bounds.max,this.computeCpuUsage_());}\ncomputeBinSize_(start,end){const MIN_BIN_SIZE_MS=1.0;const MAX_NUM_BINS=100000;const interval=end-start;let binSize=MIN_BIN_SIZE_MS;while(binSize*MAX_NUM_BINS<interval)binSize*=2;return binSize;}\ncomputeCpuUsageSeries_(start,end,usageRecords){const series=new tr.model.ResourceUsageSeries();if(start===undefined||usageRecords.length===0)return series;const binSize=this.computeBinSize_(start,end);const numBins=Math.ceil((end-start)/binSize);const arr=new Array(numBins).fill(0);for(const record of usageRecords){const firstIndex=Math.ceil((record.start-start)/binSize);const lastIndex=Math.floor((record.end-start)/binSize);for(let i=firstIndex;i<=lastIndex;i++)arr[i]+=record.usage;}\nfor(let i=0;i<numBins;i++){series.addUsageSample(start+(i*binSize),arr[i]);}\nreturn series;}\ncomputeCpuUsage_(){const model=this.model_;const result=[];for(const pid in model.processes){for(const e of model.processes[pid].getDescendantEvents()){if(!(e instanceof tr.model.ThreadSlice)||e.duration===0||e.cpuDuration===undefined){continue;}\nif(e.selfTime===0||e.selfTime===undefined||e.cpuSelfTime===undefined){continue;}\nconst usage=tr.b.math.clamp(e.cpuSelfTime/e.selfTime,0,1);let lastTime=e.start;for(const subslice of e.subSlices){result.push({usage,start:lastTime,end:subslice.start});lastTime=subslice.end;}\nresult.push({usage,start:lastTime,end:e.end});}}\nreturn result;}}\ntr.c.Auditor.register(CpuUsageAuditor);return{CpuUsageAuditor};});'use strict';tr.exportTo('tr.e.img',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function ImageSnapshot(){ObjectSnapshot.apply(this,arguments);}\nImageSnapshot.prototype={__proto__:ObjectSnapshot.prototype,initialize(){this.data_=this.args.data;this.type_=this.args.params.type;},get data(){return this.data_;},get type(){return this.type_;},};ObjectSnapshot.subTypes.register(ImageSnapshot,{typeNames:['gfx::Image']});return{ImageSnapshot,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){function Parser(importer){this.importer=importer;this.model=importer.model;}\nParser.prototype={__proto__:Object.prototype};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.mandatoryBaseClass=Parser;tr.b.decorateExtensionRegistry(Parser,options);return{Parser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='68FDD900-4A3E-11D1-84F4-0000F80464E3';const kEventTraceHeaderOpcode=0;function EventTraceParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kEventTraceHeaderOpcode,EventTraceParser.prototype.decodeHeader.bind(this));}\nEventTraceParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version!==2){throw new Error('Incompatible EventTrace event version.');}\nconst bufferSize=decoder.decodeUInt32();const version=decoder.decodeUInt32();const providerVersion=decoder.decodeUInt32();const numberOfProcessors=decoder.decodeUInt32();const endTime=decoder.decodeUInt64ToString();const timerResolution=decoder.decodeUInt32();const maxFileSize=decoder.decodeUInt32();const logFileMode=decoder.decodeUInt32();const buffersWritten=decoder.decodeUInt32();const startBuffers=decoder.decodeUInt32();const pointerSize=decoder.decodeUInt32();const eventsLost=decoder.decodeUInt32();const cpuSpeed=decoder.decodeUInt32();const loggerName=decoder.decodeUInteger(header.is64);const logFileName=decoder.decodeUInteger(header.is64);const timeZoneInformation=decoder.decodeTimeZoneInformation();const padding=decoder.decodeUInt32();const bootTime=decoder.decodeUInt64ToString();const perfFreq=decoder.decodeUInt64ToString();const startTime=decoder.decodeUInt64ToString();const reservedFlags=decoder.decodeUInt32();const buffersLost=decoder.decodeUInt32();const sessionNameString=decoder.decodeW16String();const logFileNameString=decoder.decodeW16String();return{bufferSize,version,providerVersion,numberOfProcessors,endTime,timerResolution,maxFileSize,logFileMode,buffersWritten,startBuffers,pointerSize,eventsLost,cpuSpeed,loggerName,logFileName,timeZoneInformation,bootTime,perfFreq,startTime,reservedFlags,buffersLost,sessionNameString,logFileNameString};},decodeHeader(header,decoder){const fields=this.decodeFields(header,decoder);return true;}};Parser.register(EventTraceParser);return{EventTraceParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='3D6FA8D0-FE05-11D0-9DDA-00C04FD7BA7C';const kProcessStartOpcode=1;const kProcessEndOpcode=2;const kProcessDCStartOpcode=3;const kProcessDCEndOpcode=4;const kProcessDefunctOpcode=39;function ProcessParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kProcessStartOpcode,ProcessParser.prototype.decodeStart.bind(this));importer.registerEventHandler(guid,kProcessEndOpcode,ProcessParser.prototype.decodeEnd.bind(this));importer.registerEventHandler(guid,kProcessDCStartOpcode,ProcessParser.prototype.decodeDCStart.bind(this));importer.registerEventHandler(guid,kProcessDCEndOpcode,ProcessParser.prototype.decodeDCEnd.bind(this));importer.registerEventHandler(guid,kProcessDefunctOpcode,ProcessParser.prototype.decodeDefunct.bind(this));}\nProcessParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version>5){throw new Error('Incompatible Process event version.');}\nlet pageDirectoryBase;if(header.version===1){pageDirectoryBase=decoder.decodeUInteger(header.is64);}\nlet uniqueProcessKey;if(header.version>=2){uniqueProcessKey=decoder.decodeUInteger(header.is64);}\nconst processId=decoder.decodeUInt32();const parentId=decoder.decodeUInt32();let sessionId;let exitStatus;if(header.version>=1){sessionId=decoder.decodeUInt32();exitStatus=decoder.decodeInt32();}\nlet directoryTableBase;if(header.version>=3){directoryTableBase=decoder.decodeUInteger(header.is64);}\nlet flags;if(header.version>=4){flags=decoder.decodeUInt32();}\nconst userSID=decoder.decodeSID(header.is64);let imageFileName;if(header.version>=1){imageFileName=decoder.decodeString();}\nlet commandLine;if(header.version>=2){commandLine=decoder.decodeW16String();}\nlet packageFullName;let applicationId;if(header.version>=4){packageFullName=decoder.decodeW16String();applicationId=decoder.decodeW16String();}\nlet exitTime;if(header.version===5&&header.opcode===kProcessDefunctOpcode){exitTime=decoder.decodeUInt64ToString();}\nreturn{pageDirectoryBase,uniqueProcessKey,processId,parentId,sessionId,exitStatus,directoryTableBase,flags,userSID,imageFileName,commandLine,packageFullName,applicationId,exitTime};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');}\nprocess.name=fields.imageFileName;return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');}\nprocess.name=fields.imageFileName;return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDefunct(header,decoder){const fields=this.decodeFields(header,decoder);return true;}};Parser.register(ProcessParser);return{ProcessParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadStartOpcode=1;const kThreadEndOpcode=2;const kThreadDCStartOpcode=3;const kThreadDCEndOpcode=4;const kThreadCSwitchOpcode=36;function ThreadParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kThreadStartOpcode,ThreadParser.prototype.decodeStart.bind(this));importer.registerEventHandler(guid,kThreadEndOpcode,ThreadParser.prototype.decodeEnd.bind(this));importer.registerEventHandler(guid,kThreadDCStartOpcode,ThreadParser.prototype.decodeDCStart.bind(this));importer.registerEventHandler(guid,kThreadDCEndOpcode,ThreadParser.prototype.decodeDCEnd.bind(this));importer.registerEventHandler(guid,kThreadCSwitchOpcode,ThreadParser.prototype.decodeCSwitch.bind(this));}\nThreadParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version>3){throw new Error('Incompatible Thread event version '+\nheader.version+'.');}\nconst processId=decoder.decodeUInt32();const threadId=decoder.decodeUInt32();let stackBase;let stackLimit;let userStackBase;let userStackLimit;let affinity;let startAddr;let win32StartAddr;let tebBase;let subProcessTag;let basePriority;let pagePriority;let ioPriority;let threadFlags;let waitMode;if(header.version===1){if(header.opcode===kThreadStartOpcode||header.opcode===kThreadDCStartOpcode){stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);startAddr=decoder.decodeUInteger(header.is64);win32StartAddr=decoder.decodeUInteger(header.is64);waitMode=decoder.decodeInt8();decoder.skip(3);}}else{stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);if(header.version===2){startAddr=decoder.decodeUInteger(header.is64);}else{affinity=decoder.decodeUInteger(header.is64);}\nwin32StartAddr=decoder.decodeUInteger(header.is64);tebBase=decoder.decodeUInteger(header.is64);subProcessTag=decoder.decodeUInt32();if(header.version===3){basePriority=decoder.decodeUInt8();pagePriority=decoder.decodeUInt8();ioPriority=decoder.decodeUInt8();threadFlags=decoder.decodeUInt8();}}\nreturn{processId,threadId,stackBase,stackLimit,userStackBase,userStackLimit,affinity,startAddr,win32StartAddr,tebBase,subProcessTag,waitMode,basePriority,pagePriority,ioPriority,threadFlags};},decodeCSwitchFields(header,decoder){if(header.version<2||header.version>4){throw new Error('Incompatible cswitch event version '+\nheader.version+'.');}\nconst newThreadId=decoder.decodeUInt32();const oldThreadId=decoder.decodeUInt32();const newThreadPriority=decoder.decodeInt8();const oldThreadPriority=decoder.decodeInt8();const previousCState=decoder.decodeUInt8();const spareByte=decoder.decodeInt8();const oldThreadWaitReason=decoder.decodeInt8();const oldThreadWaitMode=decoder.decodeInt8();const oldThreadState=decoder.decodeInt8();const oldThreadWaitIdealProcessor=decoder.decodeInt8();const newThreadWaitTime=decoder.decodeUInt32();const reserved=decoder.decodeUInt32();return{newThreadId,oldThreadId,newThreadPriority,oldThreadPriority,previousCState,spareByte,oldThreadWaitReason,oldThreadWaitMode,oldThreadState,oldThreadWaitIdealProcessor,newThreadWaitTime,reserved};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeCSwitch(header,decoder){const fields=this.decodeCSwitchFields(header,decoder);const cpu=this.importer.getOrCreateCpu(header.cpu);const newThread=this.importer.getThreadFromWindowsTid(fields.newThreadId);let newThreadName;if(newThread&&newThread.userFriendlyName){newThreadName=newThread.userFriendlyName;}else{const newProcessId=this.importer.getPidFromWindowsTid(fields.newThreadId);const newProcess=this.model.getProcess(newProcessId);let newProcessName;if(newProcess){newProcessName=newProcess.name;}else{newProcessName='Unknown process';}\nnewThreadName=newProcessName+' (tid '+fields.newThreadId+')';}\ncpu.switchActiveThread(header.timestamp,{},fields.newThreadId,newThreadName,fields);return true;}};Parser.register(ThreadParser);return{ThreadParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const kThreadGuid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadDCStartOpcode=3;function Decoder(){this.payload_=new DataView(new ArrayBuffer(256));}\nDecoder.prototype={__proto__:Object.prototype,reset(base64Payload){const decodedSize=tr.b.Base64.getDecodedBufferLength(base64Payload);if(decodedSize>this.payload_.byteLength){this.payload_=new DataView(new ArrayBuffer(decodedSize));}\ntr.b.Base64.DecodeToTypedArray(base64Payload,this.payload_);this.position_=0;},skip(length){this.position_+=length;},decodeUInt8(){const result=this.payload_.getUint8(this.position_,true);this.position_+=1;return result;},decodeUInt16(){const result=this.payload_.getUint16(this.position_,true);this.position_+=2;return result;},decodeUInt32(){const result=this.payload_.getUint32(this.position_,true);this.position_+=4;return result;},decodeUInt64ToString(){const low=this.decodeUInt32();const high=this.decodeUInt32();const lowStr=('0000000'+low.toString(16)).substr(-8);const highStr=('0000000'+high.toString(16)).substr(-8);const result=highStr+lowStr;return result;},decodeInt8(){const result=this.payload_.getInt8(this.position_,true);this.position_+=1;return result;},decodeInt16(){const result=this.payload_.getInt16(this.position_,true);this.position_+=2;return result;},decodeInt32(){const result=this.payload_.getInt32(this.position_,true);this.position_+=4;return result;},decodeInt64ToString(){return this.decodeUInt64ToString();},decodeUInteger(is64){if(is64){return this.decodeUInt64ToString();}\nreturn this.decodeUInt32();},decodeString(){let str='';while(true){const c=this.decodeUInt8();if(!c)return str;str=str+String.fromCharCode(c);}},decodeW16String(){let str='';while(true){const c=this.decodeUInt16();if(!c)return str;str=str+String.fromCharCode(c);}},decodeFixedW16String(length){const oldPosition=this.position_;let str='';for(let i=0;i<length;i++){const c=this.decodeUInt16();if(!c)break;str=str+String.fromCharCode(c);}\nthis.position_=oldPosition+2*length;return str;},decodeBytes(length){const bytes=[];for(let i=0;i<length;++i){const c=this.decodeUInt8();bytes.push(c);}\nreturn bytes;},decodeSID(is64){const pSid=this.decodeUInteger(is64);const attributes=this.decodeUInt32();if(is64){this.decodeUInt32();}\nconst revision=this.decodeUInt8();const subAuthorityCount=this.decodeUInt8();this.decodeUInt16();this.decodeUInt32();if(revision!==1){throw new Error('Invalid SID revision: could not decode the SID structure.');}\nconst sid=this.decodeBytes(4*subAuthorityCount);return{pSid,attributes,sid};},decodeSystemTime(){const wYear=this.decodeInt16();const wMonth=this.decodeInt16();const wDayOfWeek=this.decodeInt16();const wDay=this.decodeInt16();const wHour=this.decodeInt16();const wMinute=this.decodeInt16();const wSecond=this.decodeInt16();const wMilliseconds=this.decodeInt16();return{wYear,wMonth,wDayOfWeek,wDay,wHour,wMinute,wSecond,wMilliseconds};},decodeTimeZoneInformation(){const bias=this.decodeUInt32();const standardName=this.decodeFixedW16String(32);const standardDate=this.decodeSystemTime();const standardBias=this.decodeUInt32();const daylightName=this.decodeFixedW16String(32);const daylightDate=this.decodeSystemTime();const daylightBias=this.decodeUInt32();return{bias,standardName,standardDate,standardBias,daylightName,daylightDate,daylightBias};}};function EtwImporter(model,events){this.importPriority=3;this.model_=model;this.events_=events;this.handlers_={};this.decoder_=new Decoder();this.walltime_=undefined;this.ticks_=undefined;this.is64bit_=undefined;this.tidsToPid_={};const allTypeInfos=tr.e.importer.etw.Parser.getAllRegisteredTypeInfos();this.parsers_=allTypeInfos.map(function(typeInfo){return new typeInfo.constructor(this);},this);}\nEtwImporter.canImport=function(events){if(!events.hasOwnProperty('name')||!events.hasOwnProperty('content')||events.name!=='ETW'){return false;}\nreturn true;};EtwImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'EtwImporter';},get model(){return this.model_;},createThreadIfNeeded(pid,tid){this.tidsToPid_[tid]=pid;},removeThreadIfPresent(tid){this.tidsToPid_[tid]=undefined;},getPidFromWindowsTid(tid){if(tid===0)return 0;const pid=this.tidsToPid_[tid];if(pid===undefined){return 0;}\nreturn pid;},getThreadFromWindowsTid(tid){const pid=this.getPidFromWindowsTid(tid);const process=this.model_.getProcess(pid);if(!process)return undefined;return process.getThread(tid);},getOrCreateCpu(cpuNumber){const cpu=this.model_.kernel.getOrCreateCpu(cpuNumber);return cpu;},importEvents(){this.events_.content.forEach(this.parseInfo.bind(this));if(this.walltime_===undefined||this.ticks_===undefined){throw Error('Cannot find clock sync information in the system trace.');}\nif(this.is64bit_===undefined){throw Error('Cannot determine pointer size of the system trace.'+'Consider deselecting \"System tracing\" or disabling the \"Paging '+'Executive\" feature of Windows');}\nthis.events_.content.forEach(this.parseEvent.bind(this));},importTimestamp(timestamp){const ts=parseInt(timestamp,16);return(ts-this.walltime_+this.ticks_)/1000.;},parseInfo(event){if(event.hasOwnProperty('guid')&&event.hasOwnProperty('walltime')&&event.hasOwnProperty('tick')&&event.guid==='ClockSync'){this.walltime_=parseInt(event.walltime,16);this.ticks_=parseInt(event.tick,16);}\nif(this.is64bit_===undefined&&event.hasOwnProperty('guid')&&event.hasOwnProperty('op')&&event.hasOwnProperty('ver')&&event.hasOwnProperty('payload')&&event.guid===kThreadGuid&&event.op===kThreadDCStartOpcode){const decodedSize=tr.b.Base64.getDecodedBufferLength(event.payload);if(event.ver===1){if(decodedSize>=52){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===2){if(decodedSize>=64){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===3){if(decodedSize>=60){this.is64bit_=true;}else{this.is64bit_=false;}}}\nreturn true;},parseEvent(event){if(!event.hasOwnProperty('guid')||!event.hasOwnProperty('op')||!event.hasOwnProperty('ver')||!event.hasOwnProperty('cpu')||!event.hasOwnProperty('ts')||!event.hasOwnProperty('payload')){return false;}\nconst timestamp=this.importTimestamp(event.ts);const header={guid:event.guid,opcode:event.op,version:event.ver,cpu:event.cpu,timestamp,is64:this.is64bit_};const decoder=this.decoder_;decoder.reset(event.payload);const handler=this.getEventHandler(header.guid,header.opcode);if(!handler)return false;if(!handler(header,decoder)){this.model_.importWarning({type:'parse_error',message:'Malformed '+header.guid+' event ('+event.payload+')'});return false;}\nreturn true;},registerEventHandler(guid,opcode,handler){if(this.handlers_[guid]===undefined){this.handlers_[guid]=[];}\nthis.handlers_[guid][opcode]=handler;},getEventHandler(guid,opcode){if(this.handlers_[guid]===undefined){return undefined;}\nreturn this.handlers_[guid][opcode];}};tr.importer.Importer.register(EtwImporter);return{EtwImporter,};});'use strict';tr.exportTo('tr.b',function(){class TraceStream{static get HEADER_SIZE(){return Math.pow(2,10);}\nstatic get CHUNK_SIZE(){return Math.pow(2,20);}\nget isBinary(){throw new Error('Not implemented');}\nget hasData(){throw new Error('Not implemented');}\nget header(){throw new Error('Not implemented');}\nreadUntilDelimiter(delim){throw new Error('Not implemented');}\nreadNumBytes(opt_size){throw new Error('Not implemented');}\nrewind(){throw new Error('Not implemented');}\nsubstream(offset,opt_length,opt_headerSize){throw new Error('Not implemented');}}\nreturn{TraceStream,};});'use strict';tr.exportTo('tr.e.importer.fuchsia',function(){const IMPORT_PRIORITY=0;const IDLE_THREAD_THRESHOLD=6444000000;const ZX_THREAD_STATE_NEW=0;const ZX_THREAD_STATE_RUNNING=1;const ZX_THREAD_STATE_SUSPENDED=2;const ZX_THREAD_STATE_BLOCKED=3;const ZX_THREAD_STATE_DYING=4;const ZX_THREAD_STATE_DEAD=5;class FuchsiaImporter extends tr.importer.Importer{constructor(model,eventData){super(model,eventData);this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=eventData.events;this.parsers_=[];this.threadInfo_=new Map();this.processNames_=new Map();this.threadStates_=new Map();}\nstatic canImport(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;}\nif(eventData instanceof Object&&eventData.type==='fuchsia'){return true;}\nreturn false;}\nget importerName(){return'FuchsiaImporter';}\nget model(){return this.model_;}\nimportClockSyncMarkers(){}\nfinalizeImport(){}\nisIdleThread(prio,tid){if(prio===undefined){return tid>IDLE_THREAD_THRESHOLD;}\nreturn prio===0;}\nrecordThreadState_(tid,timestamp,state,prio){if(this.isIdleThread(prio,tid)){return;}\nconst states=this.threadStates_.has(tid)?this.threadStates_.get(tid):[];states.push({'ts':timestamp,state});this.threadStates_.set(tid,states);}\nprocessContextSwitchEvent_(event){let tid=event.in.tid;let threadName=tid.toString();let procName='';const prio=event.in.prio;if(this.threadInfo_.has(tid)){const threadInfo=this.threadInfo_.get(tid);threadName=threadInfo.name;const pid=threadInfo.pid;if(this.processNames_.has(pid)){procName=this.processNames_.get(pid)+':';}}\nconst name=procName+threadName;if(this.isIdleThread(prio,tid)){tid=undefined;}\nconst cpu=this.model_.kernel.getOrCreateCpu(event.cpu);const timestamp=tr.b.Unit.timestampFromUs(event.ts);cpu.switchActiveThread(timestamp,{},tid,name,tid);const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;this.recordThreadState_(tid,timestamp,SCHEDULING_STATE.RUNNING,prio);let outState=SCHEDULING_STATE.UNKNOWN;switch(event.out.state){case ZX_THREAD_STATE_NEW:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_RUNNING:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_BLOCKED:outState=SCHEDULING_STATE.SLEEPING;break;case ZX_THREAD_STATE_SUSPENDED:outState=SCHEDULING_STATE.STOPPED;break;case ZX_THREAD_STATE_DEAD:outState=SCHEDULING_STATE.TASK_DEAD;break;}\nthis.recordThreadState_(event.out.tid,timestamp,outState,event.out.prio);}\nprocessProcessInfoEvent_(event){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.name;this.processNames_.set(event.pid,event.name);if('sort_index'in event){process.sortIndex=event.sort_index;}}\nprocessThreadInfoEvent_(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.name=event.name;this.threadInfo_.set(event.tid,{'name':event.name,'pid':event.pid});if('sort_index'in event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.sortIndex=event.sort_index;}}\nprocessEvent_(event){switch(event.ph){case'k':this.processContextSwitchEvent_(event);break;case'p':this.processProcessInfoEvent_(event);break;case't':this.processThreadInfoEvent_(event);break;}}\npostProcessStates_(){for(const[tid,states]of this.threadStates_){if(!this.threadInfo_.has(tid)){continue;}\nconst pid=this.threadInfo_.get(tid).pid;const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const slices=[];for(let i=0;i<states.length-1;i++){slices.push(new tr.model.ThreadTimeSlice(thread,states[i].state,'',states[i].ts,{},states[i+1].ts-states[i].ts));}\nthread.timeSlices=slices;}}\nimportEvents(){for(const event of this.events_){this.processEvent_(event);}\nthis.postProcessStates_();}}\ntr.importer.Importer.register(FuchsiaImporter);return{FuchsiaImporter,IMPORT_PRIORITY,};});'use strict';tr.exportTo('tr.b',function(){const MAX_FUNCTION_ARGS_COUNT=Math.pow(2,15)-1;class InMemoryTraceStream extends tr.b.TraceStream{constructor(buffer,isBinary,opt_headerSize){super();if(!buffer instanceof Uint8Array){throw new Error('buffer should be a Uint8Array');}\nconst headerSize=opt_headerSize||tr.b.TraceStream.HEADER_SIZE;this.data_=buffer;this.isBinary_=isBinary;this.header_=InMemoryTraceStream.uint8ArrayToString_(this.data_.subarray(0,headerSize));this.cursor_=0;}\nget isBinary(){return this.isBinary_;}\nget hasData(){return this.cursor_<this.data_.length;}\nget header(){return this.header_;}\nget data(){return this.data_;}\ntoString(){this.rewind();return this.readNumBytes(Number.MAX_VALUE);}\nreadUntilDelimiter(delim){if(delim.length!==1){throw new Error('delim must be exactly one character');}\nconst offset=this.data_.indexOf(delim.charCodeAt(0),this.cursor_)+1;return this.readToOffset_(offset>0?Math.min(offset,this.data_.length):this.data_.length);}\nreadNumBytes(opt_size){if(opt_size!==undefined&&opt_size<=0){throw new Error(`readNumBytes expects a positive size (${opt_size} given)`);}\nconst size=opt_size||tr.b.TraceStream.CHUNK_SIZE;const offset=Math.min(this.cursor_+size,this.data_.length);return this.readToOffset_(offset);}\nrewind(){this.cursor_=0;}\nsubstream(startOffset,opt_endOffset,opt_headerSize){return new InMemoryTraceStream(this.data_.subarray(startOffset,opt_endOffset),this.isBinary_,opt_headerSize);}\nreadToOffset_(offset){const out=InMemoryTraceStream.uint8ArrayToString_(this.data_.subarray(this.cursor_,offset));this.cursor_=offset;return out;}\nstatic uint8ArrayToString_(arr){if(typeof TextDecoder!=='undefined'){const decoder=new TextDecoder('utf-8');return decoder.decode(arr);}\nconst c=[];for(let i=0;i<arr.length;i+=MAX_FUNCTION_ARGS_COUNT){c.push(String.fromCharCode(...arr.subarray(i,i+MAX_FUNCTION_ARGS_COUNT)));}\nreturn c.join('');}}\nreturn{InMemoryTraceStream,};});!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).pako=t()}}(function(){return function t(e,a,i){function n(s,o){if(!a[s]){if(!e[s]){var l=\"function\"==typeof require&&require;if(!o&&l)return l(s,!0);if(r)return r(s,!0);var h=new Error(\"Cannot find module '\"+s+\"'\");throw h.code=\"MODULE_NOT_FOUND\",h}var d=a[s]={exports:{}};e[s][0].call(d.exports,function(t){var a=e[s][1][t];return n(a||t)},d,d.exports,t,e,a,i)}return a[s].exports}for(var r=\"function\"==typeof require&&require,s=0;s<i.length;s++)n(i[s]);return n}({1:[function(t,e,a){\"use strict\";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({level:_,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var a=r.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==f)throw new Error(l[a]);if(e.header&&r.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(n=\"string\"==typeof e.dictionary?o.string2buf(e.dictionary):\"[object ArrayBuffer]\"===d.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=r.deflateSetDictionary(this.strm,n))!==f)throw new Error(l[a]);this._dict_set=!0}}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||l[a.err];return a.result}var r=t(\"./zlib/deflate\"),s=t(\"./utils/common\"),o=t(\"./utils/strings\"),l=t(\"./zlib/messages\"),h=t(\"./zlib/zstream\"),d=Object.prototype.toString,f=0,_=-1,u=0,c=8;i.prototype.push=function(t,e){var a,i,n=this.strm,l=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,\"string\"==typeof t?n.input=o.string2buf(t):\"[object ArrayBuffer]\"===d.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new s.Buf8(l),n.next_out=0,n.avail_out=l),1!==(a=r.deflate(n,i))&&a!==f)return this.onEnd(a),this.ended=!0,!1;0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||(\"string\"===this.options.to?this.onData(o.buf2binstring(s.shrinkBuf(n.output,n.next_out))):this.onData(s.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||0===n.avail_out)&&1!==a);return 4===i?(a=r.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===f):2!==i||(this.onEnd(f),n.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===f&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=i,a.deflate=n,a.deflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.gzip=function(t,e){return e=e||{},e.gzip=!0,n(t,e)}},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/deflate\":8,\"./zlib/messages\":13,\"./zlib/zstream\":15}],2:[function(t,e,a){\"use strict\";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var a=r.inflateInit2(this.strm,e.windowBits);if(a!==l.Z_OK)throw new Error(h[a]);this.header=new f,r.inflateGetHeader(this.strm,this.header)}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||h[a.err];return a.result}var r=t(\"./zlib/inflate\"),s=t(\"./utils/common\"),o=t(\"./utils/strings\"),l=t(\"./zlib/constants\"),h=t(\"./zlib/messages\"),d=t(\"./zlib/zstream\"),f=t(\"./zlib/gzheader\"),_=Object.prototype.toString;i.prototype.push=function(t,e){var a,i,n,h,d,f,u=this.strm,c=this.options.chunkSize,b=this.options.dictionary,g=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?l.Z_FINISH:l.Z_NO_FLUSH,\"string\"==typeof t?u.input=o.binstring2buf(t):\"[object ArrayBuffer]\"===_.call(t)?u.input=new Uint8Array(t):u.input=t,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new s.Buf8(c),u.next_out=0,u.avail_out=c),(a=r.inflate(u,l.Z_NO_FLUSH))===l.Z_NEED_DICT&&b&&(f=\"string\"==typeof b?o.string2buf(b):\"[object ArrayBuffer]\"===_.call(b)?new Uint8Array(b):b,a=r.inflateSetDictionary(this.strm,f)),a===l.Z_BUF_ERROR&&!0===g&&(a=l.Z_OK,g=!1),a!==l.Z_STREAM_END&&a!==l.Z_OK)return this.onEnd(a),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&a!==l.Z_STREAM_END&&(0!==u.avail_in||i!==l.Z_FINISH&&i!==l.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(n=o.utf8border(u.output,u.next_out),h=u.next_out-n,d=o.buf2string(u.output,n),u.next_out=h,u.avail_out=c-h,h&&s.arraySet(u.output,u.output,n,h,0),this.onData(d)):this.onData(s.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(g=!0)}while((u.avail_in>0||0===u.avail_out)&&a!==l.Z_STREAM_END);return a===l.Z_STREAM_END&&(i=l.Z_FINISH),i===l.Z_FINISH?(a=r.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===l.Z_OK):i!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),u.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===l.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=i,a.inflate=n,a.inflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.ungzip=n},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/constants\":6,\"./zlib/gzheader\":9,\"./zlib/inflate\":11,\"./zlib/messages\":13,\"./zlib/zstream\":15}],3:[function(t,e,a){\"use strict\";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;a.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(var n in a)i(a,n)&&(t[n]=a[n])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(i=0,e=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),n=0,e=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},s={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};a.setTyped=function(t){t?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,r)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,s))},a.setTyped(n)},{}],4:[function(t,e,a){\"use strict\";function i(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&r))return String.fromCharCode.apply(null,n.shrinkBuf(t,e));for(var a=\"\",i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a}var n=t(\"./common\"),r=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(t){r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){s=!1}for(var o=new n.Buf8(256),l=0;l<256;l++)o[l]=l>=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;o[254]=o[254]=1,a.string2buf=function(t){var e,a,i,r,s,o=t.length,l=0;for(r=0;r<o;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),l+=a<128?1:a<2048?2:a<65536?3:4;for(e=new n.Buf8(l),s=0,r=0;s<l;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<o&&56320==(64512&(i=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(i-56320),r++),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},a.buf2binstring=function(t){return i(t,t.length)},a.binstring2buf=function(t){for(var e=new n.Buf8(t.length),a=0,i=e.length;a<i;a++)e[a]=t.charCodeAt(a);return e},a.buf2string=function(t,e){var a,n,r,s,l=e||t.length,h=new Array(2*l);for(n=0,a=0;a<l;)if((r=t[a++])<128)h[n++]=r;else if((s=o[r])>4)h[n++]=65533,a+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&a<l;)r=r<<6|63&t[a++],s--;s>1?h[n++]=65533:r<65536?h[n++]=r:(r-=65536,h[n++]=55296|r>>10&1023,h[n++]=56320|1023&r)}return i(h,n)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;a>=0&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+o[t[a]]>e?a:e}},{\"./common\":3}],5:[function(t,e,a){\"use strict\";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(n=n+e[i++]|0)|0}while(--s);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){\"use strict\";var i=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,n){var r=i,s=n+a;t^=-1;for(var o=n;o<s;o++)t=t>>>8^r[255&(t^e[o])];return-1^t}},{}],8:[function(t,e,a){\"use strict\";function i(t,e){return t.msg=A[e],e}function n(t){return(t<<1)-(t>4?9:0)}function r(t){for(var e=t.length;--e>=0;)t[e]=0}function s(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(z.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function o(t,e){B._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,s(t.strm)}function l(t,e){t.pending_buf[t.pending++]=e}function h(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function d(t,e,a,i){var n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,z.arraySet(e,t.input,t.next_in,n,a),1===t.state.wrap?t.adler=S(t.adler,e,n,a):2===t.state.wrap&&(t.adler=E(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)}function f(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-it?t.strstart-(t.w_size-it):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+at,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=at-(_-r),r=_-at,i>s){if(t.match_start=e,s=i,i>=o)break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function _(t){var e,a,i,n,r,s=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-it)){z.arraySet(t.window,t.window,s,s,0),t.match_start-=s,t.strstart-=s,t.block_start-=s,e=a=t.hash_size;do{i=t.head[--e],t.head[e]=i>=s?i-s:0}while(--a);e=a=s;do{i=t.prev[--e],t.prev[e]=i>=s?i-s:0}while(--a);n+=s}if(0===t.strm.avail_in)break;if(a=d(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=a,t.lookahead+t.insert>=et)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+et-1])&t.hash_mask,t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<et)););}while(t.lookahead<it&&0!==t.strm.avail_in)}function u(t,e){for(var a,i;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a)),t.match_length>=et)if(i=B._tr_tally(t,t.strstart-t.match_start,t.match_length-et),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=et){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function c(t,e){for(var a,i,n;;){if(t.lookahead<it){if(_(t),t.lookahead<it&&e===Z)return _t;if(0===t.lookahead)break}if(a=0,t.lookahead>=et&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=et-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-it&&(t.match_length=f(t,a),t.match_length<=5&&(t.strategy===H||t.match_length===et&&t.strstart-t.match_start>4096)&&(t.match_length=et-1)),t.prev_length>=et&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-et,i=B._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-et),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+et-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=et-1,t.strstart++,i&&(o(t,!1),0===t.strm.avail_out))return _t}else if(t.match_available){if((i=B._tr_tally(t,0,t.window[t.strstart-1]))&&o(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return _t}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=B._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<et-1?t.strstart:et-1,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function b(t,e){for(var a,i,n,r,s=t.window;;){if(t.lookahead<=at){if(_(t),t.lookahead<=at&&e===Z)return _t;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=et&&t.strstart>0&&(n=t.strstart-1,(i=s[n])===s[++n]&&i===s[++n]&&i===s[++n])){r=t.strstart+at;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<r);t.match_length=at-(r-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=et?(a=B._tr_tally(t,1,t.match_length-et),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function g(t,e){for(var a;;){if(0===t.lookahead&&(_(t),0===t.lookahead)){if(e===Z)return _t;break}if(t.match_length=0,a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function m(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function w(t){t.window_size=2*t.w_size,r(t.head),t.max_lazy_match=x[t.level].max_lazy,t.good_match=x[t.level].good_length,t.nice_match=x[t.level].nice_length,t.max_chain_length=x[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=et-1,t.match_available=0,t.ins_h=0}function p(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new z.Buf16(2*$),this.dyn_dtree=new z.Buf16(2*(2*Q+1)),this.bl_tree=new z.Buf16(2*(2*V+1)),r(this.dyn_ltree),r(this.dyn_dtree),r(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new z.Buf16(tt+1),this.heap=new z.Buf16(2*J+1),r(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new z.Buf16(2*J+1),r(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=Y,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?rt:dt,t.adler=2===e.wrap?0:1,e.last_flush=Z,B._tr_init(e),D):i(t,U)}function k(t){var e=v(t);return e===D&&w(t.state),e}function y(t,e,a,n,r,s){if(!t)return U;var o=1;if(e===L&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),r<1||r>G||a!==q||n<8||n>15||e<0||e>9||s<0||s>M)return i(t,U);8===n&&(n=9);var l=new p;return t.state=l,l.strm=t,l.wrap=o,l.gzhead=null,l.w_bits=n,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=r+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+et-1)/et),l.window=new z.Buf8(2*l.w_size),l.head=new z.Buf16(l.hash_size),l.prev=new z.Buf16(l.w_size),l.lit_bufsize=1<<r+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new z.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=e,l.strategy=s,l.method=a,k(t)}var x,z=t(\"../utils/common\"),B=t(\"./trees\"),S=t(\"./adler32\"),E=t(\"./crc32\"),A=t(\"./messages\"),Z=0,R=1,C=3,N=4,O=5,D=0,I=1,U=-2,T=-3,F=-5,L=-1,H=1,j=2,K=3,M=4,P=0,Y=2,q=8,G=9,X=15,W=8,J=286,Q=30,V=19,$=2*J+1,tt=15,et=3,at=258,it=at+et+1,nt=32,rt=42,st=69,ot=73,lt=91,ht=103,dt=113,ft=666,_t=1,ut=2,ct=3,bt=4,gt=3;x=[new m(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(_(t),0===t.lookahead&&e===Z)return _t;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,o(t,!1),0===t.strm.avail_out))return _t;if(t.strstart-t.block_start>=t.w_size-it&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):(t.strstart>t.block_start&&(o(t,!1),t.strm.avail_out),_t)}),new m(4,4,8,4,u),new m(4,5,16,8,u),new m(4,6,32,32,u),new m(4,4,16,16,c),new m(8,16,32,32,c),new m(8,16,128,128,c),new m(8,32,128,256,c),new m(32,128,258,1024,c),new m(32,258,258,4096,c)],a.deflateInit=function(t,e){return y(t,e,q,X,W,P)},a.deflateInit2=y,a.deflateReset=k,a.deflateResetKeep=v,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?U:(t.state.gzhead=e,D):U},a.deflate=function(t,e){var a,o,d,f;if(!t||!t.state||e>O||e<0)return t?i(t,U):U;if(o=t.state,!t.output||!t.input&&0!==t.avail_in||o.status===ft&&e!==N)return i(t,0===t.avail_out?F:U);if(o.strm=t,a=o.last_flush,o.last_flush=e,o.status===rt)if(2===o.wrap)t.adler=0,l(o,31),l(o,139),l(o,8),o.gzhead?(l(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),l(o,255&o.gzhead.time),l(o,o.gzhead.time>>8&255),l(o,o.gzhead.time>>16&255),l(o,o.gzhead.time>>24&255),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(l(o,255&o.gzhead.extra.length),l(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(t.adler=E(t.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=st):(l(o,0),l(o,0),l(o,0),l(o,0),l(o,0),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,gt),o.status=dt);else{var _=q+(o.w_bits-8<<4)<<8;_|=(o.strategy>=j||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(_|=nt),_+=31-_%31,o.status=dt,h(o,_),0!==o.strstart&&(h(o,t.adler>>>16),h(o,65535&t.adler)),t.adler=1}if(o.status===st)if(o.gzhead.extra){for(d=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending!==o.pending_buf_size));)l(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=ot)}else o.status=ot;if(o.status===ot)if(o.gzhead.name){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.name.length?255&o.gzhead.name.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.gzindex=0,o.status=lt)}else o.status=lt;if(o.status===lt)if(o.gzhead.comment){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindex<o.gzhead.comment.length?255&o.gzhead.comment.charCodeAt(o.gzindex++):0,l(o,f)}while(0!==f);o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.status=ht)}else o.status=ht;if(o.status===ht&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&s(t),o.pending+2<=o.pending_buf_size&&(l(o,255&t.adler),l(o,t.adler>>8&255),t.adler=0,o.status=dt)):o.status=dt),0!==o.pending){if(s(t),0===t.avail_out)return o.last_flush=-1,D}else if(0===t.avail_in&&n(e)<=n(a)&&e!==N)return i(t,F);if(o.status===ft&&0!==t.avail_in)return i(t,F);if(0!==t.avail_in||0!==o.lookahead||e!==Z&&o.status!==ft){var u=o.strategy===j?g(o,e):o.strategy===K?b(o,e):x[o.level].func(o,e);if(u!==ct&&u!==bt||(o.status=ft),u===_t||u===ct)return 0===t.avail_out&&(o.last_flush=-1),D;if(u===ut&&(e===R?B._tr_align(o):e!==O&&(B._tr_stored_block(o,0,0,!1),e===C&&(r(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),s(t),0===t.avail_out))return o.last_flush=-1,D}return e!==N?D:o.wrap<=0?I:(2===o.wrap?(l(o,255&t.adler),l(o,t.adler>>8&255),l(o,t.adler>>16&255),l(o,t.adler>>24&255),l(o,255&t.total_in),l(o,t.total_in>>8&255),l(o,t.total_in>>16&255),l(o,t.total_in>>24&255)):(h(o,t.adler>>>16),h(o,65535&t.adler)),s(t),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?D:I)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==rt&&e!==st&&e!==ot&&e!==lt&&e!==ht&&e!==dt&&e!==ft?i(t,U):(t.state=null,e===dt?i(t,T):D):U},a.deflateSetDictionary=function(t,e){var a,i,n,s,o,l,h,d,f=e.length;if(!t||!t.state)return U;if(a=t.state,2===(s=a.wrap)||1===s&&a.status!==rt||a.lookahead)return U;for(1===s&&(t.adler=S(t.adler,e,f,0)),a.wrap=0,f>=a.w_size&&(0===s&&(r(a.head),a.strstart=0,a.block_start=0,a.insert=0),d=new z.Buf8(a.w_size),z.arraySet(d,e,f-a.w_size,a.w_size,0),e=d,f=a.w_size),o=t.avail_in,l=t.next_in,h=t.input,t.avail_in=f,t.next_in=0,t.input=e,_(a);a.lookahead>=et;){i=a.strstart,n=a.lookahead-(et-1);do{a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+et-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++}while(--n);a.strstart=i,a.lookahead=et-1,_(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=et-1,a.match_available=0,t.next_in=l,t.input=h,t.avail_in=o,a.wrap=s,D},a.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./messages\":13,\"./trees\":14}],9:[function(t,e,a){\"use strict\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],10:[function(t,e,a){\"use strict\";e.exports=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,f=a.wnext,_=a.window,u=a.hold,c=a.bits,b=a.lencode,g=a.distcode,m=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=b[u&m];e:for(;;){if(v=p>>>24,u>>>=v,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<<v)-1)];continue e}if(32&v){a.mode=12;break t}t.msg=\"invalid literal/length code\",a.mode=30;break t}k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&w];a:for(;;){if(v=p>>>24,u>>>=v,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<<v)-1)];continue a}t.msg=\"invalid distance code\",a.mode=30;break t}if(y=65535&p,v&=15,c<v&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),(y+=u&(1<<v)-1)>l){t.msg=\"invalid distance too far back\",a.mode=30;break t}if(u>>>=v,c-=v,v=r-s,y>v){if((v=y-v)>d&&a.sane){t.msg=\"invalid distance too far back\",a.mode=30;break t}if(x=0,z=_,0===f){if(x+=h-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}else if(f<v){if(x+=h+f-v,(v-=f)<k){k-=v;do{S[r++]=_[x++]}while(--v);if(x=0,f<k){k-=v=f;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}}}else if(x+=f-v,v<k){k-=v;do{S[r++]=_[x++]}while(--v);x=r-y,z=S}for(;k>2;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],k>1&&(S[r++]=z[x++]))}else{x=r-y;do{S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],k-=3}while(k>2);k&&(S[r++]=S[x++],k>1&&(S[r++]=S[x++]))}break}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},{}],11:[function(t,e,a){\"use strict\";function i(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function n(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function r(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=N,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new u.Buf32(dt),e.distcode=e.distdyn=new u.Buf32(ft),e.sane=1,e.back=-1,z):E}function s(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,r(t)):E}function o(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?E:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,s(t))):E}function l(t,e){var a,i;return t?(i=new n,t.state=i,i.window=null,(a=o(t,e))!==z&&(t.state=null),a):E}function h(t){if(ut){var e;for(f=new u.Buf32(512),_=new u.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(m(p,t.lens,0,288,f,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;m(v,t.lens,0,32,_,0,t.work,{bits:5}),ut=!1}t.lencode=f,t.lenbits=9,t.distcode=_,t.distbits=5}function d(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new u.Buf8(r.wsize)),i>=r.wsize?(u.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>i&&(n=i),u.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(u.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}var f,_,u=t(\"../utils/common\"),c=t(\"./adler32\"),b=t(\"./crc32\"),g=t(\"./inffast\"),m=t(\"./inftrees\"),w=0,p=1,v=2,k=4,y=5,x=6,z=0,B=1,S=2,E=-2,A=-3,Z=-4,R=-5,C=8,N=1,O=2,D=3,I=4,U=5,T=6,F=7,L=8,H=9,j=10,K=11,M=12,P=13,Y=14,q=15,G=16,X=17,W=18,J=19,Q=20,V=21,$=22,tt=23,et=24,at=25,it=26,nt=27,rt=28,st=29,ot=30,lt=31,ht=32,dt=852,ft=592,_t=15,ut=!0;a.inflateReset=s,a.inflateReset2=o,a.inflateResetKeep=r,a.inflateInit=function(t){return l(t,_t)},a.inflateInit2=l,a.inflate=function(t,e){var a,n,r,s,o,l,f,_,dt,ft,_t,ut,ct,bt,gt,mt,wt,pt,vt,kt,yt,xt,zt,Bt,St=0,Et=new u.Buf8(4),At=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return E;(a=t.state).mode===M&&(a.mode=P),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,ft=l,_t=f,xt=z;t:for(;;)switch(a.mode){case N:if(0===a.wrap){a.mode=P;break}for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(2&a.wrap&&35615===_){a.check=0,Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0),_=0,dt=0,a.mode=O;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&_)<<8)+(_>>8))%31){t.msg=\"incorrect header check\",a.mode=ot;break}if((15&_)!==C){t.msg=\"unknown compression method\",a.mode=ot;break}if(_>>>=4,dt-=4,yt=8+(15&_),0===a.wbits)a.wbits=yt;else if(yt>a.wbits){t.msg=\"invalid window size\",a.mode=ot;break}a.dmax=1<<yt,t.adler=a.check=1,a.mode=512&_?j:M,_=0,dt=0;break;case O:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.flags=_,(255&a.flags)!==C){t.msg=\"unknown compression method\",a.mode=ot;break}if(57344&a.flags){t.msg=\"unknown header flags set\",a.mode=ot;break}a.head&&(a.head.text=_>>8&1),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=D;case D:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.time=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,Et[2]=_>>>16&255,Et[3]=_>>>24&255,a.check=b(a.check,Et,4,0)),_=0,dt=0,a.mode=I;case I:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.head&&(a.head.xflags=255&_,a.head.os=_>>8),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=U;case U:if(1024&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length=_,a.head&&(a.head.extra_len=_),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0}else a.head&&(a.head.extra=null);a.mode=T;case T:if(1024&a.flags&&((ut=a.length)>l&&(ut=l),ut&&(a.head&&(yt=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),u.arraySet(a.head.extra,n,s,ut,yt)),512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,a.length-=ut),a.length))break t;a.length=0,a.mode=F;case F:if(2048&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.name+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=L;case L:if(4096&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.comment+=String.fromCharCode(yt))}while(yt&&ut<l);if(512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,yt)break t}else a.head&&(a.head.comment=null);a.mode=H;case H:if(512&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(65535&a.check)){t.msg=\"header crc mismatch\",a.mode=ot;break}_=0,dt=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=M;break;case j:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}t.adler=a.check=i(_),_=0,dt=0,a.mode=K;case K:if(0===a.havedict)return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,S;t.adler=a.check=1,a.mode=M;case M:if(e===y||e===x)break t;case P:if(a.last){_>>>=7&dt,dt-=7&dt,a.mode=nt;break}for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}switch(a.last=1&_,_>>>=1,dt-=1,3&_){case 0:a.mode=Y;break;case 1:if(h(a),a.mode=Q,e===x){_>>>=2,dt-=2;break t}break;case 2:a.mode=X;break;case 3:t.msg=\"invalid block type\",a.mode=ot}_>>>=2,dt-=2;break;case Y:for(_>>>=7&dt,dt-=7&dt;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if((65535&_)!=(_>>>16^65535)){t.msg=\"invalid stored block lengths\",a.mode=ot;break}if(a.length=65535&_,_=0,dt=0,a.mode=q,e===x)break t;case q:a.mode=G;case G:if(ut=a.length){if(ut>l&&(ut=l),ut>f&&(ut=f),0===ut)break t;u.arraySet(r,n,s,ut,o),l-=ut,s+=ut,f-=ut,o+=ut,a.length-=ut;break}a.mode=M;break;case X:for(;dt<14;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(a.nlen=257+(31&_),_>>>=5,dt-=5,a.ndist=1+(31&_),_>>>=5,dt-=5,a.ncode=4+(15&_),_>>>=4,dt-=4,a.nlen>286||a.ndist>30){t.msg=\"too many length or distance symbols\",a.mode=ot;break}a.have=0,a.mode=W;case W:for(;a.have<a.ncode;){for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.lens[At[a.have++]]=7&_,_>>>=3,dt-=3}for(;a.have<19;)a.lens[At[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,zt={bits:a.lenbits},xt=m(w,a.lens,0,19,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg=\"invalid code lengths set\",a.mode=ot;break}a.have=0,a.mode=J;case J:for(;a.have<a.nlen+a.ndist;){for(;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(wt<16)_>>>=gt,dt-=gt,a.lens[a.have++]=wt;else{if(16===wt){for(Bt=gt+2;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_>>>=gt,dt-=gt,0===a.have){t.msg=\"invalid bit length repeat\",a.mode=ot;break}yt=a.lens[a.have-1],ut=3+(3&_),_>>>=2,dt-=2}else if(17===wt){for(Bt=gt+3;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=3+(7&(_>>>=gt)),_>>>=3,dt-=3}else{for(Bt=gt+7;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}dt-=gt,yt=0,ut=11+(127&(_>>>=gt)),_>>>=7,dt-=7}if(a.have+ut>a.nlen+a.ndist){t.msg=\"invalid bit length repeat\",a.mode=ot;break}for(;ut--;)a.lens[a.have++]=yt}}if(a.mode===ot)break;if(0===a.lens[256]){t.msg=\"invalid code -- missing end-of-block\",a.mode=ot;break}if(a.lenbits=9,zt={bits:a.lenbits},xt=m(p,a.lens,0,a.nlen,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg=\"invalid literal/lengths set\",a.mode=ot;break}if(a.distbits=6,a.distcode=a.distdyn,zt={bits:a.distbits},xt=m(v,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,zt),a.distbits=zt.bits,xt){t.msg=\"invalid distances set\",a.mode=ot;break}if(a.mode=Q,e===x)break t;case Q:a.mode=V;case V:if(l>=6&&f>=258){t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,g(t,_t),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,a.mode===M&&(a.back=-1);break}for(a.back=0;St=a.lencode[_&(1<<a.lenbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(mt&&0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.lencode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,a.length=wt,0===mt){a.mode=it;break}if(32&mt){a.back=-1,a.mode=M;break}if(64&mt){t.msg=\"invalid literal/length code\",a.mode=ot;break}a.extra=15&mt,a.mode=$;case $:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.length+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=tt;case tt:for(;St=a.distcode[_&(1<<a.distbits)-1],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(0==(240&mt)){for(pt=gt,vt=mt,kt=wt;St=a.distcode[kt+((_&(1<<pt+vt)-1)>>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}_>>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,64&mt){t.msg=\"invalid distance code\",a.mode=ot;break}a.offset=wt,a.extra=15&mt,a.mode=et;case et:if(a.extra){for(Bt=a.extra;dt<Bt;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}a.offset+=_&(1<<a.extra)-1,_>>>=a.extra,dt-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\"invalid distance too far back\",a.mode=ot;break}a.mode=at;case at:if(0===f)break t;if(ut=_t-f,a.offset>ut){if((ut=a.offset-ut)>a.whave&&a.sane){t.msg=\"invalid distance too far back\",a.mode=ot;break}ut>a.wnext?(ut-=a.wnext,ct=a.wsize-ut):ct=a.wnext-ut,ut>a.length&&(ut=a.length),bt=a.window}else bt=r,ct=o-a.offset,ut=a.length;ut>f&&(ut=f),f-=ut,a.length-=ut;do{r[o++]=bt[ct++]}while(--ut);0===a.length&&(a.mode=V);break;case it:if(0===f)break t;r[o++]=a.length,f--,a.mode=V;break;case nt:if(a.wrap){for(;dt<32;){if(0===l)break t;l--,_|=n[s++]<<dt,dt+=8}if(_t-=f,t.total_out+=_t,a.total+=_t,_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,o-_t):c(a.check,r,_t,o-_t)),_t=f,(a.flags?_:i(_))!==a.check){t.msg=\"incorrect data check\",a.mode=ot;break}_=0,dt=0}a.mode=rt;case rt:if(a.wrap&&a.flags){for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<<dt,dt+=8}if(_!==(4294967295&a.total)){t.msg=\"incorrect length check\",a.mode=ot;break}_=0,dt=0}a.mode=st;case st:xt=B;break t;case ot:xt=A;break t;case lt:return Z;case ht:default:return E}return t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,(a.wsize||_t!==t.avail_out&&a.mode<ot&&(a.mode<nt||e!==k))&&d(t,t.output,t.next_out,_t-t.avail_out)?(a.mode=lt,Z):(ft-=t.avail_in,_t-=t.avail_out,t.total_in+=ft,t.total_out+=_t,a.total+=_t,a.wrap&&_t&&(t.adler=a.check=a.flags?b(a.check,r,_t,t.next_out-_t):c(a.check,r,_t,t.next_out-_t)),t.data_type=a.bits+(a.last?64:0)+(a.mode===M?128:0)+(a.mode===Q||a.mode===q?256:0),(0===ft&&0===_t||e===k)&&xt===z&&(xt=R),xt)},a.inflateEnd=function(t){if(!t||!t.state)return E;var e=t.state;return e.window&&(e.window=null),t.state=null,z},a.inflateGetHeader=function(t,e){var a;return t&&t.state?0==(2&(a=t.state).wrap)?E:(a.head=e,e.done=!1,z):E},a.inflateSetDictionary=function(t,e){var a,i,n=e.length;return t&&t.state?0!==(a=t.state).wrap&&a.mode!==K?E:a.mode===K&&(i=1,(i=c(i,e,n,0))!==a.check)?A:d(t,e,n,n)?(a.mode=lt,Z):(a.havedict=1,z):E},a.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./inffast\":10,\"./inftrees\":12}],12:[function(t,e,a){\"use strict\";var i=t(\"../utils/common\"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],r=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,a,l,h,d,f,_){var u,c,b,g,m,w,p,v,k,y=_.bits,x=0,z=0,B=0,S=0,E=0,A=0,Z=0,R=0,C=0,N=0,O=null,D=0,I=new i.Buf16(16),U=new i.Buf16(16),T=null,F=0;for(x=0;x<=15;x++)I[x]=0;for(z=0;z<l;z++)I[e[a+z]]++;for(E=y,S=15;S>=1&&0===I[S];S--);if(E>S&&(E=S),0===S)return h[d++]=20971520,h[d++]=20971520,_.bits=1,0;for(B=1;B<S&&0===I[B];B++);for(E<B&&(E=B),R=1,x=1;x<=15;x++)if(R<<=1,(R-=I[x])<0)return-1;if(R>0&&(0===t||1!==S))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+I[x];for(z=0;z<l;z++)0!==e[a+z]&&(f[U[e[a+z]]++]=z);if(0===t?(O=T=f,w=19):1===t?(O=n,D-=257,T=r,F-=257,w=256):(O=s,T=o,w=-1),N=0,z=0,x=B,m=d,A=E,Z=0,b=-1,C=1<<E,g=C-1,1===t&&C>852||2===t&&C>592)return 1;for(;;){p=x-Z,f[z]<w?(v=0,k=f[z]):f[z]>w?(v=T[F+f[z]],k=O[D+f[z]]):(v=96,k=0),u=1<<x-Z,B=c=1<<A;do{h[m+(N>>Z)+(c-=u)]=p<<24|v<<16|k|0}while(0!==c);for(u=1<<x-1;N&u;)u>>=1;if(0!==u?(N&=u-1,N+=u):N=0,z++,0==--I[x]){if(x===S)break;x=e[a+f[z]]}if(x>E&&(N&g)!==b){for(0===Z&&(Z=E),m+=B,R=1<<(A=x-Z);A+Z<S&&!((R-=I[A+Z])<=0);)A++,R<<=1;if(C+=1<<A,1===t&&C>852||2===t&&C>592)return 1;h[b=N&g]=E<<24|A<<16|m-d|0}}return 0!==N&&(h[m+N]=x-Z<<24|64<<16|0),_.bits=E,0}},{\"../utils/common\":3}],13:[function(t,e,a){\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],14:[function(t,e,a){\"use strict\";function i(t){for(var e=t.length;--e>=0;)t[e]=0}function n(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function s(t){return t<256?et[t]:et[256+(t>>>7)]}function o(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function l(t,e,a){t.bi_valid>M-a?(t.bi_buf|=e<<t.bi_valid&65535,o(t,t.bi_buf),t.bi_buf=e>>M-t.bi_valid,t.bi_valid+=a-M):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function h(t,e,a){l(t,a[2*e],a[2*e+1])}function d(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1}function f(t){16===t.bi_valid?(o(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function _(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=K;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<j;a++)(r=l[2*l[2*(i=t.heap[a])+1]+1]+1)>c&&(r=c,b++),l[2*i+1]=r,i>h||(t.bl_count[r]++,s=0,i>=u&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(b>0);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)(n=t.heap[--a])>h||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}function u(t,e,a){var i,n,r=new Array(K+1),s=0;for(i=1;i<=K;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=d(r[o]++,o))}}function c(){var t,e,a,i,r,s=new Array(K+1);for(a=0,i=0;i<U-1;i++)for(it[i]=a,t=0;t<1<<W[i];t++)at[a++]=i;for(at[a-1]=i,r=0,i=0;i<16;i++)for(nt[i]=r,t=0;t<1<<J[i];t++)et[r++]=i;for(r>>=7;i<L;i++)for(nt[i]=r<<7,t=0;t<1<<J[i]-7;t++)et[256+r++]=i;for(e=0;e<=K;e++)s[e]=0;for(t=0;t<=143;)$[2*t+1]=8,t++,s[8]++;for(;t<=255;)$[2*t+1]=9,t++,s[9]++;for(;t<=279;)$[2*t+1]=7,t++,s[7]++;for(;t<=287;)$[2*t+1]=8,t++,s[8]++;for(u($,F+1,s),t=0;t<L;t++)tt[2*t+1]=5,tt[2*t]=d(t,5);rt=new n($,W,T+1,F,K),st=new n(tt,J,0,L,K),ot=new n(new Array(0),Q,0,H,P)}function b(t){var e;for(e=0;e<F;e++)t.dyn_ltree[2*e]=0;for(e=0;e<L;e++)t.dyn_dtree[2*e]=0;for(e=0;e<H;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*Y]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function g(t){t.bi_valid>8?o(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function m(t,e,a,i){g(t),i&&(o(t,a),o(t,~a)),A.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}function w(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function p(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&w(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!w(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function v(t,e,a){var i,n,r,o,d=0;if(0!==t.last_lit)do{i=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],n=t.pending_buf[t.l_buf+d],d++,0===i?h(t,n,e):(h(t,(r=at[n])+T+1,e),0!==(o=W[r])&&l(t,n-=it[r],o),h(t,r=s(--i),a),0!==(o=J[r])&&l(t,i-=nt[r],o))}while(d<t.last_lit);h(t,Y,e)}function k(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,l=e.stat_desc.elems,h=-1;for(t.heap_len=0,t.heap_max=j,a=0;a<l;a++)0!==r[2*a]?(t.heap[++t.heap_len]=h=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=h<2?++h:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=h,a=t.heap_len>>1;a>=1;a--)p(t,r,a);n=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],p(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,p(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],_(t,e),u(r,h,t.bl_count)}function y(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<l&&n===s||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[2*q]++):o<=10?t.bl_tree[2*G]++:t.bl_tree[2*X]++,o=0,r=n,0===s?(l=138,h=3):n===s?(l=6,h=3):(l=7,h=4))}function x(t,e,a){var i,n,r=-1,s=e[1],o=0,d=7,f=4;for(0===s&&(d=138,f=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<d&&n===s)){if(o<f)do{h(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==r&&(h(t,n,t.bl_tree),o--),h(t,q,t.bl_tree),l(t,o-3,2)):o<=10?(h(t,G,t.bl_tree),l(t,o-3,3)):(h(t,X,t.bl_tree),l(t,o-11,7));o=0,r=n,0===s?(d=138,f=3):n===s?(d=6,f=3):(d=7,f=4)}}function z(t){var e;for(y(t,t.dyn_ltree,t.l_desc.max_code),y(t,t.dyn_dtree,t.d_desc.max_code),k(t,t.bl_desc),e=H-1;e>=3&&0===t.bl_tree[2*V[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function B(t,e,a,i){var n;for(l(t,e-257,5),l(t,a-1,5),l(t,i-4,4),n=0;n<i;n++)l(t,t.bl_tree[2*V[n]+1],3);x(t,t.dyn_ltree,e-1),x(t,t.dyn_dtree,a-1)}function S(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return R;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return C;for(e=32;e<T;e++)if(0!==t.dyn_ltree[2*e])return C;return R}function E(t,e,a,i){l(t,(O<<1)+(i?1:0),3),m(t,e,a,!0)}var A=t(\"../utils/common\"),Z=4,R=0,C=1,N=2,O=0,D=1,I=2,U=29,T=256,F=T+1+U,L=30,H=19,j=2*F+1,K=15,M=16,P=7,Y=256,q=16,G=17,X=18,W=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],J=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Q=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],V=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],$=new Array(2*(F+2));i($);var tt=new Array(2*L);i(tt);var et=new Array(512);i(et);var at=new Array(256);i(at);var it=new Array(U);i(it);var nt=new Array(L);i(nt);var rt,st,ot,lt=!1;a._tr_init=function(t){lt||(c(),lt=!0),t.l_desc=new r(t.dyn_ltree,rt),t.d_desc=new r(t.dyn_dtree,st),t.bl_desc=new r(t.bl_tree,ot),t.bi_buf=0,t.bi_valid=0,b(t)},a._tr_stored_block=E,a._tr_flush_block=function(t,e,a,i){var n,r,s=0;t.level>0?(t.strm.data_type===N&&(t.strm.data_type=S(t)),k(t,t.l_desc),k(t,t.d_desc),s=z(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?E(t,e,a,i):t.strategy===Z||r===n?(l(t,(D<<1)+(i?1:0),3),v(t,$,tt)):(l(t,(I<<1)+(i?1:0),3),B(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),v(t,t.dyn_ltree,t.dyn_dtree)),b(t),i&&g(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(at[a]+T+1)]++,t.dyn_dtree[2*s(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){l(t,D<<1,3),h(t,Y,$),f(t)}},{\"../utils/common\":3}],15:[function(t,e,a){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],\"/\":[function(t,e,a){\"use strict\";var i={};(0,t(\"./lib/utils/common\").assign)(i,t(\"./lib/deflate\"),t(\"./lib/inflate\"),t(\"./lib/zlib/constants\")),e.exports=i},{\"./lib/deflate\":1,\"./lib/inflate\":2,\"./lib/utils/common\":3,\"./lib/zlib/constants\":6}]},{},[])(\"/\")});'use strict';tr.exportTo('tr.e.importer',function(){const GZIP_MEMBER_HEADER_ID_SIZE=3;const GZIP_HEADER_ID1=0x1f;const GZIP_HEADER_ID2=0x8b;const GZIP_DEFLATE_COMPRESSION=8;function _stringToUInt8Array(str){const array=new Uint8Array(str.length);for(let i=0;i<str.length;++i){array[i]=str.charCodeAt(i);}\nreturn array;}\nfunction GzipImporter(model,eventData){this.inflateAsTraceStream=false;if(typeof(eventData)==='string'||eventData instanceof String){eventData=_stringToUInt8Array(eventData);}else if(eventData instanceof ArrayBuffer){eventData=new Uint8Array(eventData);}else if(eventData instanceof tr.b.InMemoryTraceStream){eventData=eventData.data;this.inflateAsTraceStream_=true;}else{throw new Error('Unknown gzip data format');}\nthis.model_=model;this.gzipData_=eventData;}\nGzipImporter.canImport=function(eventData){if(eventData instanceof tr.b.InMemoryTraceStream){eventData=eventData.header;}\nlet header;if(eventData instanceof ArrayBuffer){header=new Uint8Array(eventData.slice(0,GZIP_MEMBER_HEADER_ID_SIZE));}else if(typeof(eventData)==='string'||eventData instanceof String){header=eventData.substring(0,GZIP_MEMBER_HEADER_ID_SIZE);header=_stringToUInt8Array(header);}else{return false;}\nreturn header[0]===GZIP_HEADER_ID1&&header[1]===GZIP_HEADER_ID2&&header[2]===GZIP_DEFLATE_COMPRESSION;};GzipImporter.inflateGzipData_=function(data){let position=0;function getByte(){if(position>=data.length){throw new Error('Unexpected end of gzip data');}\nreturn data[position++];}\nfunction getWord(){const low=getByte();const high=getByte();return(high<<8)+low;}\nfunction skipBytes(amount){position+=amount;}\nfunction skipZeroTerminatedString(){while(getByte()!==0){}}\nconst id1=getByte();const id2=getByte();if(id1!==GZIP_HEADER_ID1||id2!==GZIP_HEADER_ID2){throw new Error('Not gzip data');}\nconst compressionMethod=getByte();if(compressionMethod!==GZIP_DEFLATE_COMPRESSION){throw new Error('Unsupported compression method: '+compressionMethod);}\nconst flags=getByte();const haveHeaderCrc=flags&(1<<1);const haveExtraFields=flags&(1<<2);const haveFileName=flags&(1<<3);const haveComment=flags&(1<<4);skipBytes(4+1+1);if(haveExtraFields){const bytesToSkip=getWord();skipBytes(bytesToSkip);}\nif(haveFileName)skipZeroTerminatedString();if(haveComment)skipZeroTerminatedString();if(haveHeaderCrc)getWord();const inflatedData=pako.inflateRaw(data.subarray(position));if(this.inflateAsTraceStream_){return GzipImporter.transformToStream(inflatedData);}\nlet string;try{string=GzipImporter.transformToString(inflatedData);}catch(err){return GzipImporter.transformToStream(inflatedData);}\nif(inflatedData.length>0&&string.length===0){return GzipImporter.transformToStream(inflatedData);}\nreturn string;};GzipImporter.transformToStream=function(data){if(data instanceof Uint8Array){return new tr.b.InMemoryTraceStream(data,false);}\nthrow new Error(`Cannot transform ${type} to TraceStream.`);};GzipImporter.transformToString=function(data){if(typeof(data)==='string')return data;if(typeof TextDecoder==='undefined'){if(data instanceof ArrayBuffer){data=new Uint8Array(data);}\nconst result=[];let chunk=65536;let k=0;const len=data.length;while(k<len&&chunk>1){try{const chunklen=Math.min(k+chunk,len);let dataslice;if(data instanceof Array){dataslice=data.slice(k,chunklen);}else{dataslice=data.subarray(k,chunklen);}\nresult.push(String.fromCharCode.apply(null,dataslice));k+=chunk;}catch(e){chunk=Math.floor(chunk/2);}}\nreturn result.join('');}\nif(data instanceof Array){data=new Uint8Array(data);}\nreturn new TextDecoder('utf-8').decode(data);};GzipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GzipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const eventData=GzipImporter.inflateGzipData_(this.gzipData_);return eventData?[eventData]:[];}};tr.importer.Importer.register(GzipImporter);return{GzipImporter,};});'use strict';tr.exportTo('tr.importer',function(){class SimpleLineReader{constructor(text){this.data_=text instanceof tr.b.TraceStream?text:text.split(new RegExp('\\r?\\n'));this.curLine_=0;this.readLastLine_=false;this.savedLines_=undefined;}*[Symbol.iterator](){let lastLine=undefined;while(this.hasData_){if(this.readLastLine_){this.curLine_++;this.readLastLine_=false;}else if(this.data_ instanceof tr.b.TraceStream){this.curLine_++;const line=this.data_.readUntilDelimiter('\\n');if(line.endsWith('\\r\\n')){lastLine=line.slice(0,-2);}else if(line.endsWith('\\n')){lastLine=line.slice(0,-1);}else{lastLine=line;}}else{this.curLine_++;lastLine=this.data_[this.curLine_-1];}\nyield lastLine;}}\nget curLineNumber(){return this.curLine_;}\nget hasData_(){if(this.data_ instanceof tr.b.TraceStream)return this.data_.hasData;return this.curLine_<this.data_.length;}\nadvanceToLineMatching(regex){for(const line of this){if(this.savedLines_!==undefined)this.savedLines_.push(line);if(regex.test(line)){this.goBack_();return true;}}\nreturn false;}\ngoBack_(){if(this.readLastLine_){throw new Error('There should be at least one nextLine call between '+'any two goBack calls.');}\nif(this.curLine_===0){throw new Error('There should be at least one nextLine call before '+'the first goBack call.');}\nthis.readLastLine_=true;this.curLine_--;}\nbeginSavingLines(){this.savedLines_=[];}\nendSavingLinesAndGetResult(){const tmp=this.savedLines_;this.savedLines_=undefined;return tmp;}}\nreturn{SimpleLineReader,};});'use strict';tr.exportTo('tr.e.importer',function(){function Trace2HTMLImporter(model,events){this.importPriority=0;}\nTrace2HTMLImporter.subtraces_=[];function _extractEventsFromHTML(text){Trace2HTMLImporter.subtraces_=[];const r=new tr.importer.SimpleLineReader(text);while(true){if(!r.advanceToLineMatching(new RegExp('^<\\s*script id=\"viewer-data\" '+'type=\"(application\\/json|text\\/plain)\">\\r?$'))){break;}\nr.beginSavingLines();if(!r.advanceToLineMatching(/^<\\/\\s*script>\\r?$/))return;let rawEvents=r.endSavingLinesAndGetResult();rawEvents=rawEvents.slice(1,rawEvents.length-1);const data64=rawEvents.join('\\n');const buffer=new ArrayBuffer(tr.b.Base64.getDecodedBufferLength(data64));const len=tr.b.Base64.DecodeToTypedArray(data64,new DataView(buffer));Trace2HTMLImporter.subtraces_.push(buffer.slice(0,len));}}\nfunction _canImportFromHTML(text){if(!/^<!DOCTYPE html>/.test(text))return false;_extractEventsFromHTML(text);if(Trace2HTMLImporter.subtraces_.length===0)return false;return true;}\nTrace2HTMLImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)return false;return _canImportFromHTML(events);};Trace2HTMLImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'Trace2HTMLImporter';},isTraceDataContainer(){return true;},extractSubtraces(){return Trace2HTMLImporter.subtraces_;},importEvents(){}};tr.importer.Importer.register(Trace2HTMLImporter);return{Trace2HTMLImporter,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function SplayTree(){}\nSplayTree.prototype.root_=null;SplayTree.prototype.isEmpty=function(){return!this.root_;};SplayTree.prototype.insert=function(key,value){if(this.isEmpty()){this.root_=new SplayTree.Node(key,value);return;}\nthis.splay_(key);if(this.root_.key===key){return;}\nconst node=new SplayTree.Node(key,value);if(key>this.root_.key){node.left=this.root_;node.right=this.root_.right;this.root_.right=null;}else{node.right=this.root_;node.left=this.root_.left;this.root_.left=null;}\nthis.root_=node;};SplayTree.prototype.remove=function(key){if(this.isEmpty()){throw Error('Key not found: '+key);}\nthis.splay_(key);if(this.root_.key!==key){throw Error('Key not found: '+key);}\nconst removed=this.root_;if(!this.root_.left){this.root_=this.root_.right;}else{const right=this.root_.right;this.root_=this.root_.left;this.splay_(key);this.root_.right=right;}\nreturn removed;};SplayTree.prototype.find=function(key){if(this.isEmpty())return null;this.splay_(key);return this.root_.key===key?this.root_:null;};SplayTree.prototype.findMin=function(){if(this.isEmpty())return null;let current=this.root_;while(current.left){current=current.left;}\nreturn current;};SplayTree.prototype.findMax=function(opt_startNode){if(this.isEmpty())return null;let current=opt_startNode||this.root_;while(current.right){current=current.right;}\nreturn current;};SplayTree.prototype.findGreatestLessThan=function(key){if(this.isEmpty())return null;this.splay_(key);if(this.root_.key<=key){return this.root_;}\nif(this.root_.left){return this.findMax(this.root_.left);}\nreturn null;};SplayTree.prototype.exportKeysAndValues=function(){const result=[];this.traverse_(function(node){result.push([node.key,node.value]);});return result;};SplayTree.prototype.exportValues=function(){const result=[];this.traverse_(function(node){result.push(node.value);});return result;};SplayTree.prototype.splay_=function(key){if(this.isEmpty())return;const dummy=new SplayTree.Node(null,null);let left=dummy;let right=dummy;let current=this.root_;while(true){if(key<current.key){if(!current.left){break;}\nif(key<current.left.key){const tmp=current.left;current.left=tmp.right;tmp.right=current;current=tmp;if(!current.left){break;}}\nright.left=current;right=current;current=current.left;}else if(key>current.key){if(!current.right){break;}\nif(key>current.right.key){const tmp=current.right;current.right=tmp.left;tmp.left=current;current=tmp;if(!current.right){break;}}\nleft.right=current;left=current;current=current.right;}else{break;}}\nleft.right=current.left;right.left=current.right;current.left=dummy.right;current.right=dummy.left;this.root_=current;};SplayTree.prototype.traverse_=function(f){const nodesToVisit=[this.root_];while(nodesToVisit.length>0){const node=nodesToVisit.shift();if(node===null)continue;f(node);nodesToVisit.push(node.left);nodesToVisit.push(node.right);}};SplayTree.Node=function(key,value){this.key=key;this.value=value;};SplayTree.Node.prototype.left=null;SplayTree.Node.prototype.right=null;return{SplayTree,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CodeMap(){this.dynamics_=new tr.e.importer.v8.SplayTree();this.dynamicsNameGen_=new tr.e.importer.v8.CodeMap.NameGenerator();this.statics_=new tr.e.importer.v8.SplayTree();this.libraries_=new tr.e.importer.v8.SplayTree();this.pages_=[];}\nCodeMap.PAGE_ALIGNMENT=12;CodeMap.PAGE_SIZE=1<<CodeMap.PAGE_ALIGNMENT;CodeMap.prototype.addCode=function(start,codeEntry){this.deleteAllCoveredNodes_(this.dynamics_,start,start+codeEntry.size);this.dynamics_.insert(start,codeEntry);};CodeMap.prototype.moveCode=function(from,to){const removedNode=this.dynamics_.remove(from);this.deleteAllCoveredNodes_(this.dynamics_,to,to+removedNode.value.size);this.dynamics_.insert(to,removedNode.value);};CodeMap.prototype.deleteCode=function(start){const removedNode=this.dynamics_.remove(start);};CodeMap.prototype.addLibrary=function(start,codeEntry){this.markPages_(start,start+codeEntry.size);this.libraries_.insert(start,codeEntry);};CodeMap.prototype.addStaticCode=function(start,codeEntry){this.statics_.insert(start,codeEntry);};CodeMap.prototype.markPages_=function(start,end){for(let addr=start;addr<=end;addr+=CodeMap.PAGE_SIZE){this.pages_[addr>>>CodeMap.PAGE_ALIGNMENT]=1;}};CodeMap.prototype.deleteAllCoveredNodes_=function(tree,start,end){const toDelete=[];let addr=end-1;while(addr>=start){const node=tree.findGreatestLessThan(addr);if(!node)break;const start2=node.key;const end2=start2+node.value.size;if(start2<end&&start<end2)toDelete.push(start2);addr=start2-1;}\nfor(let i=0,l=toDelete.length;i<l;++i)tree.remove(toDelete[i]);};CodeMap.prototype.isAddressBelongsTo_=function(addr,node){return addr>=node.key&&addr<(node.key+node.value.size);};CodeMap.prototype.findInTree_=function(tree,addr){const node=tree.findGreatestLessThan(addr);return node&&this.isAddressBelongsTo_(addr,node)?node.value:null;};CodeMap.prototype.findEntryInLibraries=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.libraries_,addr);}\nreturn undefined;};CodeMap.prototype.findEntry=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.statics_,addr)||this.findInTree_(this.libraries_,addr);}\nconst min=this.dynamics_.findMin();const max=this.dynamics_.findMax();if(max!==null&&addr<(max.key+max.value.size)&&addr>=min.key){const dynaEntry=this.findInTree_(this.dynamics_,addr);if(dynaEntry===null)return null;if(!dynaEntry.nameUpdated_){dynaEntry.name=this.dynamicsNameGen_.getName(dynaEntry.name);dynaEntry.nameUpdated_=true;}\nreturn dynaEntry;}\nreturn null;};CodeMap.prototype.findDynamicEntryByStartAddress=function(addr){const node=this.dynamics_.find(addr);return node?node.value:null;};CodeMap.prototype.getAllDynamicEntries=function(){return this.dynamics_.exportValues();};CodeMap.prototype.getAllDynamicEntriesWithAddresses=function(){return this.dynamics_.exportKeysAndValues();};CodeMap.prototype.getAllStaticEntries=function(){return this.statics_.exportValues();};CodeMap.prototype.getAllLibrariesEntries=function(){return this.libraries_.exportValues();};CodeMap.CodeState={COMPILED:0,OPTIMIZABLE:1,OPTIMIZED:2};CodeMap.CodeEntry=function(size,opt_name,opt_type){this.id=tr.b.GUID.allocateSimple();this.size=size;this.name_=opt_name||'';this.type=opt_type||'';this.nameUpdated_=false;};CodeMap.CodeEntry.prototype={__proto__:Object.prototype,get name(){return this.name_;},set name(value){this.name_=value;},toString(){this.name_+': '+this.size.toString(16);}};CodeMap.CodeEntry.TYPE={SHARED_LIB:'SHARED_LIB',CPP:'CPP'};CodeMap.DynamicFuncCodeEntry=function(size,type,func,state){CodeMap.CodeEntry.call(this,size,'',type);this.func=func;this.state=state;};CodeMap.DynamicFuncCodeEntry.STATE_PREFIX=['','~','*'];CodeMap.DynamicFuncCodeEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){return CodeMap.DynamicFuncCodeEntry.STATE_PREFIX[this.state]+\nthis.func.name;},set name(value){this.name_=value;},getRawName(){return this.func.getName();},isJSFunction(){return true;},toString(){return this.type+': '+this.name+': '+this.size.toString(16);}};CodeMap.FunctionEntry=function(name){CodeMap.CodeEntry.call(this,0,name);};CodeMap.FunctionEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){let name=this.name_;if(name.length===0){name='<anonymous>';}else if(name.charAt(0)===' '){name='<anonymous>'+name;}\nreturn name;},set name(value){this.name_=value;}};CodeMap.NameGenerator=function(){this.knownNames_={};};CodeMap.NameGenerator.prototype.getName=function(name){if(!(name in this.knownNames_)){this.knownNames_[name]=0;return name;}\nconst count=++this.knownNames_[name];return name+' {'+count+'}';};return{CodeMap,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CsvParser(){}\nCsvParser.CSV_FIELD_RE_=/^\"((?:[^\"]|\"\")*)\"|([^,]*)/;CsvParser.DOUBLE_QUOTE_RE_=/\"\"/g;CsvParser.prototype.parseLine=function(line){const fieldRe=CsvParser.CSV_FIELD_RE_;const doubleQuoteRe=CsvParser.DOUBLE_QUOTE_RE_;let pos=0;const endPos=line.length;const fields=[];if(endPos>0){do{const fieldMatch=fieldRe.exec(line.substr(pos));if(typeof fieldMatch[1]==='string'){const field=fieldMatch[1];pos+=field.length+3;fields.push(field.replace(doubleQuoteRe,'\"'));}else{const field=fieldMatch[2];pos+=field.length+1;fields.push(field);}}while(pos<=endPos);}\nreturn fields;};function LogReader(dispatchTable){this.dispatchTable_=dispatchTable;this.lineNum_=0;this.csvParser_=new CsvParser();}\nLogReader.prototype.printError=function(str){};LogReader.prototype.processLogChunk=function(chunk){this.processLog_(chunk.split('\\n'));};LogReader.prototype.processLogLine=function(line){this.processLog_([line]);};LogReader.prototype.processStack=function(pc,func,stack){const fullStack=func?[pc,func]:[pc];let prevFrame=pc;for(let i=0,n=stack.length;i<n;++i){const frame=stack[i];const firstChar=frame.charAt(0);if(firstChar==='+'||firstChar==='-'){prevFrame+=parseInt(frame,16);fullStack.push(prevFrame);}else if(firstChar!=='o'){fullStack.push(parseInt(frame,16));}}\nreturn fullStack;};LogReader.prototype.skipDispatch=function(dispatch){return false;};LogReader.prototype.dispatchLogRow_=function(fields){const command=fields[0];if(!(command in this.dispatchTable_))return;const dispatch=this.dispatchTable_[command];if(dispatch===null||this.skipDispatch(dispatch)){return;}\nconst parsedFields=[];for(let i=0;i<dispatch.parsers.length;++i){const parser=dispatch.parsers[i];if(parser===null){parsedFields.push(fields[1+i]);}else if(typeof parser==='function'){parsedFields.push(parser(fields[1+i]));}else{parsedFields.push(fields.slice(1+i));break;}}\ndispatch.processor.apply(this,parsedFields);};LogReader.prototype.processLog_=function(lines){for(let i=0,n=lines.length;i<n;++i,++this.lineNum_){const line=lines[i];if(!line){continue;}\ntry{const fields=this.csvParser_.parseLine(line);this.dispatchLogRow_(fields);}catch(e){this.printError('line '+(this.lineNum_+1)+': '+\n(e.message||e));}}};return{LogReader,};});'use strict';tr.exportTo('tr.model',function(){function ProfileNode(id,title,parentNode){this.id_=id;this.title_=title;this.parentNode_=parentNode;this.colorId_=-1;this.userFriendlyStack_=[];}\nProfileNode.prototype={__proto__:Object.prototype,get title(){return this.title_;},get parentNode(){return this.parentNode_;},set parentNode(value){this.parentNode_=value;},get id(){return this.id_;},get colorId(){return this.colorId_;},set colorId(value){this.colorId_=value;},get userFriendlyName(){return this.title_;},get userFriendlyStack(){if(this.userFriendlyStack_.length===0){this.userFriendlyStack_=[this.userFriendlyName];if(this.parentNode_!==undefined){this.userFriendlyStack_=this.userFriendlyStack_.concat(this.parentNode_.userFriendlyStack);}}\nreturn this.userFriendlyStack_;},get sampleTitle(){throw new Error('Not implemented.');}};tr.model.EventRegistry.register(ProfileNode,{name:'Node',pluralName:'Nodes'});return{ProfileNode,};});'use strict';tr.exportTo('tr.e.v8',function(){const ProfileNode=tr.model.ProfileNode;function V8CpuProfileNode(id,callFrame,parentNode){ProfileNode.call(this,id,callFrame.functionName,parentNode);this.callFrame_=tr.b.deepCopy(callFrame);this.deoptReason_='';this.colorId_=tr.b.ColorScheme.getColorIdForGeneralPurposeString(callFrame.functionName);}\nV8CpuProfileNode.prototype={__proto__:ProfileNode.prototype,get functionName(){return this.callFrame_.functionName;},get scriptId(){return this.callFrame_.scriptId;},get url(){if(!this.callFrame_.url){return'unknown';}\nlet url=this.callFrame_.url;if(this.callFrame_.lineNumber===undefined){return url;}\nurl=url+':'+this.callFrame_.lineNumber;if(this.callFrame_.columnNumber===undefined){return url;}\nurl=url+':'+this.callFrame_.columnNumber;return url;},get deoptReason(){return this.deoptReason_;},set deoptReason(value){this.deoptReason_=value;},get userFriendlyName(){const name=this.functionName+' url: '+this.url;return!this.deoptReason_?name:name+' Deoptimized reason: '+this.deoptReason_;},get sampleTitle(){return'V8 Sample';}};V8CpuProfileNode.constructFromObject=function(profileTree,node){const nodeId=node.id;if(nodeId===1){return undefined;}\nconst parentNode=profileTree.getNode(node.parent);const profileNode=new V8CpuProfileNode(nodeId,node.callFrame,parentNode);if(node.deoptReason!==undefined){profileNode.deoptReason=node.deoptReason;}\nreturn profileNode;};ProfileNode.subTypes.register(V8CpuProfileNode,{typeName:'cpuProfile',name:'v8 cpu profile node',pluralName:'v8 cpu profile nodes'});ProfileNode.subTypes.register(V8CpuProfileNode,{typeName:'legacySample',name:'v8 cpu profile node',pluralName:'v8 cpu profile nodes'});return{ProfileNode,};});'use strict';tr.exportTo('tr.model',function(){function ProfileTree(){this.startTime_=undefined;this.endTime_=undefined;this.tree_=new Map();this.pid_=-1;this.tid_=-1;}\nProfileTree.prototype={__proto__:Object.prototype,get pid(){return this.pid_;},set pid(value){this.pid_=value;},get tid(){return this.tid_;},set tid(value){this.tid_=value;},get tree(){return this.tree_;},get startTime(){return this.startTime_;},set startTime(value){this.startTime_=value;this.endTime_=value;},get endTime(){return this.endTime_;},set endTime(value){this.endTime_=value;},add(node){if(this.tree_.has(node.id)){throw new Error('Conflict id in the profile tree.');}\nthis.tree_.set(node.id,node);return node;},getNode(nodeId){return this.tree_.get(nodeId);}};return{ProfileTree,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){const CodeEntry=tr.e.importer.v8.CodeMap.CodeEntry;const CodeMap=tr.e.importer.v8.CodeMap;const ColorScheme=tr.b.ColorScheme;const DynamicFuncCodeEntry=tr.e.importer.v8.CodeMap.DynamicFuncCodeEntry;const FunctionEntry=tr.e.importer.v8.CodeMap.FunctionEntry;const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');function V8LogImporter(model,eventData){this.importPriority=3;this.model_=model;this.logData_=eventData;this.code_map_=new CodeMap();this.v8_timer_thread_=undefined;this.v8_thread_=undefined;this.profileTree_=new tr.model.ProfileTree();this.profileTree_.add(new ProfileNodeType(-1,{url:'',functionName:'unknown'}));this.v8_stack_timeline_=[];}\nconst kV8BinarySuffixes=['/d8','/libv8.so'];const TimerEventDefaultArgs={'V8.Execute':{pause:false,no_execution:false},'V8.External':{pause:false,no_execution:true},'V8.CompileFullCode':{pause:true,no_execution:true},'V8.RecompileSynchronous':{pause:true,no_execution:true},'V8.RecompileParallel':{pause:false,no_execution:false},'V8.CompileEval':{pause:true,no_execution:true},'V8.Parse':{pause:true,no_execution:true},'V8.PreParse':{pause:true,no_execution:true},'V8.ParseLazy':{pause:true,no_execution:true},'V8.GCScavenger':{pause:true,no_execution:true},'V8.GCCompactor':{pause:true,no_execution:true},'V8.GCContext':{pause:true,no_execution:true}};V8LogImporter.canImport=function(eventData){if(typeof(eventData)!=='string'&&!(eventData instanceof String)){return false;}\nreturn eventData.substring(0,11)==='v8-version,'||eventData.substring(0,12)==='timer-event,'||eventData.substring(0,5)==='tick,'||eventData.substring(0,15)==='shared-library,'||eventData.substring(0,9)==='profiler,'||eventData.substring(0,14)==='code-creation,';};V8LogImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'V8LogImporter';},processTimerEvent_(name,startInUs,lengthInUs){const args=TimerEventDefaultArgs[name];if(args===undefined)return;const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);const lengthInMs=tr.b.convertUnit(lengthInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);const colorId=ColorScheme.getColorIdForGeneralPurposeString(name);const slice=new tr.model.ThreadSlice('v8',name,colorId,startInMs,args,lengthInMs);this.v8_timer_thread_.sliceGroup.pushSlice(slice);},processTimerEventStart_(name,startInUs){const args=TimerEventDefaultArgs[name];if(args===undefined)return;const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);this.v8_timer_thread_.sliceGroup.beginSlice('v8',name,startInMs,args);},processTimerEventEnd_(name,endInUs){const endInMs=tr.b.convertUnit(endInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);this.v8_timer_thread_.sliceGroup.endSlice(endInMs);},processCodeCreateEvent_(type,kind,address,size,name,maybeFunc){function parseState(s){switch(s){case'':return CodeMap.CodeState.COMPILED;case'~':return CodeMap.CodeState.OPTIMIZABLE;case'*':return CodeMap.CodeState.OPTIMIZED;}\nthrow new Error('unknown code state: '+s);}\nif(maybeFunc.length){const funcAddr=parseInt(maybeFunc[0]);const state=parseState(maybeFunc[1]);let func=this.code_map_.findDynamicEntryByStartAddress(funcAddr);if(!func){func=new FunctionEntry(name);func.kind=kind;this.code_map_.addCode(funcAddr,func);}else if(func.name!==name){func.name=name;}\nlet entry=this.code_map_.findDynamicEntryByStartAddress(address);if(entry){if(entry.size===size&&entry.func===func){entry.state=state;}}else{entry=new DynamicFuncCodeEntry(size,type,func,state);entry.kind=kind;this.code_map_.addCode(address,entry);}}else{const codeEntry=new CodeEntry(size,name);codeEntry.kind=kind;this.code_map_.addCode(address,codeEntry);}},processCodeMoveEvent_(from,to){this.code_map_.moveCode(from,to);},processCodeDeleteEvent_(address){this.code_map_.deleteCode(address);},processSharedLibrary_(name,start,end){const codeEntry=new CodeEntry(end-start,name,CodeEntry.TYPE.SHARED_LIB);codeEntry.kind=-3;for(let i=0;i<kV8BinarySuffixes.length;i++){const suffix=kV8BinarySuffixes[i];if(name.indexOf(suffix,name.length-suffix.length)>=0){codeEntry.kind=-1;break;}}\nthis.code_map_.addLibrary(start,codeEntry);},processCppSymbol_(address,size,name){const codeEntry=new CodeEntry(size,name,CodeEntry.TYPE.CPP);codeEntry.kind=-1;this.code_map_.addStaticCode(address,codeEntry);},processTickEvent_(pc,startInUs,isExternalCallback,tosOrExternalCallback,vmstate,stack){const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);function findChildWithEntryID(stackFrame,entryID){for(let i=0;i<stackFrame.children.length;i++){if(stackFrame.children[i].entryID===entryID){return stackFrame.children[i];}}\nreturn undefined;}\nfunction processStack(pc,func,stack){const fullStack=func?[pc,func]:[pc];let prevFrame=pc;for(let i=0,n=stack.length;i<n;++i){const frame=stack[i];const firstChar=frame.charAt(0);if(firstChar==='+'||firstChar==='-'){prevFrame+=parseInt(frame,16);fullStack.push(prevFrame);}else if(firstChar!=='o'){fullStack.push(parseInt(frame,16));}}\nreturn fullStack;}\nif(isExternalCallback){pc=tosOrExternalCallback;tosOrExternalCallback=0;}else if(tosOrExternalCallback){const funcEntry=this.code_map_.findEntry(tosOrExternalCallback);if(!funcEntry||!funcEntry.isJSFunction||!funcEntry.isJSFunction()){tosOrExternalCallback=0;}}\nlet processedStack=processStack(pc,tosOrExternalCallback,stack);let node=undefined;let lastNode=undefined;processedStack=processedStack.reverse();for(let i=0,n=processedStack.length;i<n;i++){const frame=processedStack[i];if(!frame)break;const entry=this.code_map_.findEntry(frame);if(!entry&&i!==0){continue;}\nlet sourceInfo=undefined;if(entry&&entry.type===CodeEntry.TYPE.CPP){const libEntry=this.code_map_.findEntryInLibraries(frame);if(libEntry){sourceInfo={file:libEntry.name};}}\nconst entryId=entry?entry.id:-1;node=this.profileTree_.getNode(entryId);if(node===undefined){node=this.profileTree_.add(new ProfileNodeType(entryId,{functionName:entry.name,url:sourceInfo?sourceInfo.file:'',lineNumber:sourceInfo?sourceInfo.line:undefined,columnNumber:sourceInfo?sourceInfo.column:undefined,scriptId:sourceInfo?sourceInfo.scriptId:undefined},lastNode));}\nlastNode=node;}\nthis.model_.samples.push(new tr.model.Sample(startInMs,'V8 PC',node,this.v8_thread_,undefined,1));},processDistortion_(distortionInPicoseconds){},processPlotRange_(start,end){},processV8Version_(major,minor,build,patch,candidate){},importEvents(){const logreader=new tr.e.importer.v8.LogReader({'timer-event':{parsers:[null,parseInt,parseInt],processor:this.processTimerEvent_.bind(this)},'shared-library':{parsers:[null,parseInt,parseInt],processor:this.processSharedLibrary_.bind(this)},'timer-event-start':{parsers:[null,parseInt],processor:this.processTimerEventStart_.bind(this)},'timer-event-end':{parsers:[null,parseInt],processor:this.processTimerEventEnd_.bind(this)},'code-creation':{parsers:[null,parseInt,parseInt,parseInt,null,'var-args'],processor:this.processCodeCreateEvent_.bind(this)},'code-move':{parsers:[parseInt,parseInt],processor:this.processCodeMoveEvent_.bind(this)},'code-delete':{parsers:[parseInt],processor:this.processCodeDeleteEvent_.bind(this)},'cpp':{parsers:[parseInt,parseInt,null],processor:this.processCppSymbol_.bind(this)},'tick':{parsers:[parseInt,parseInt,parseInt,parseInt,parseInt,'var-args'],processor:this.processTickEvent_.bind(this)},'distortion':{parsers:[parseInt],processor:this.processDistortion_.bind(this)},'plot-range':{parsers:[parseInt,parseInt],processor:this.processPlotRange_.bind(this)},'v8-version':{parsers:[parseInt,parseInt,parseInt,parseInt,parseInt],processor:this.processV8Version_.bind(this)}});this.v8_timer_thread_=this.model_.getOrCreateProcess(-32).getOrCreateThread(1);this.v8_timer_thread_.name='V8 Timers';this.v8_thread_=this.model_.getOrCreateProcess(-32).getOrCreateThread(2);this.v8_thread_.name='V8';const lines=this.logData_.split('\\n');for(let i=0;i<lines.length;i++){logreader.processLogLine(lines[i]);}\nfunction addSlices(slices,thread){for(let i=0;i<slices.length;i++){const duration=slices[i].end-slices[i].start;const slice=new tr.model.ThreadSlice('v8',slices[i].name,ColorScheme.getColorIdForGeneralPurposeString(slices[i].name),slices[i].start,{},duration);thread.sliceGroup.pushSlice(slice);addSlices(slices[i].children,thread);}}\naddSlices(this.v8_stack_timeline_,this.v8_thread_);}};tr.importer.Importer.register(V8LogImporter);return{V8LogImporter,};});'use strict';if(tr.isVinn){global.window={};}\n!function(a){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=a();else if(\"function\"==typeof define&&define.amd)define([],a);else{var b;\"undefined\"!=typeof window?b=window:\"undefined\"!=typeof global?b=global:\"undefined\"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error(\"Cannot find module '\"+g+\"'\")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";c.encode=function(a){for(var b,c,e,f,g,h,i,j=\"\",k=0;k<a.length;)b=a.charCodeAt(k++),c=a.charCodeAt(k++),e=a.charCodeAt(k++),f=b>>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j=\"\",k=0;for(a=a.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");k<a.length;)f=d.indexOf(a.charAt(k++)),g=d.indexOf(a.charAt(k++)),h=d.indexOf(a.charAt(k++)),i=d.indexOf(a.charAt(k++)),b=f<<2|g>>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){\"use strict\";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){\"use strict\";c.STORE={magic:\"\\x00\\x00\",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a(\"./flate\")},{\"./flate\":8}],4:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if(\"undefined\"==typeof a||!a.length)return 0;var e=\"string\"!==c.getTypeOf(a);\"undefined\"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{\"./utils\":21}],5:[function(a,b){\"use strict\";function c(){this.data=null,this.length=0,this.index=0}var d=a(\"./utils\");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<a||0>a)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+a+\"). Corrupted zip ?\")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo(\"string\",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{\"./utils\":21}],6:[function(a,b,c){\"use strict\";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){\"use strict\";var d=a(\"./utils\");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo(\"uint8array\",a)},c.uint8Array2String=function(a){return d.transformTo(\"string\",a)},c.string2Blob=function(a){var b=d.transformTo(\"arraybuffer\",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{\"./utils\":21}],8:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,e=a(\"pako\");c.uncompressInputType=d?\"uint8array\":\"array\",c.compressInputType=d?\"uint8array\":\"array\",c.magic=\"\\b\\x00\",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){\"use strict\";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root=\"\",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)\"function\"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a(\"./base64\");c.prototype=a(\"./object\"),c.prototype.load=a(\"./load\"),c.support=a(\"./support\"),c.defaults=a(\"./defaults\"),c.utils=a(\"./deprecatedPublicUtils\"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a(\"./compressions\"),b.exports=c},{\"./base64\":1,\"./compressions\":3,\"./defaults\":6,\"./deprecatedPublicUtils\":7,\"./load\":10,\"./object\":13,\"./support\":17}],10:[function(a,b){\"use strict\";var c=a(\"./base64\"),d=a(\"./zipEntries\");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;g<e.length;g++)h=e[g],this.file(h.fileName,h.decompressed,{binary:!0,optimizedBinaryString:!0,date:h.date,dir:h.dir,comment:h.fileComment.length?h.fileComment:null,createFolders:b.createFolders});return f.zipComment.length&&(this.comment=f.zipComment),this}},{\"./base64\":1,\"./zipEntries\":22}],11:[function(a,b){(function(a){\"use strict\";b.exports=function(b,c){return new a(b,c)},b.exports.test=function(b){return a.isBuffer(b)}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],12:[function(a,b){\"use strict\";function c(a){this.data=a,this.length=this.data.length,this.index=0}var d=a(\"./uint8ArrayReader\");c.prototype=new d,c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./uint8ArrayReader\":18}],13:[function(a,b){\"use strict\";var c=a(\"./support\"),d=a(\"./utils\"),e=a(\"./crc32\"),f=a(\"./signature\"),g=a(\"./defaults\"),h=a(\"./base64\"),i=a(\"./compressions\"),j=a(\"./compressedObject\"),k=a(\"./nodeBuffer\"),l=a(\"./utf8\"),m=a(\"./stringWriter\"),n=a(\"./uint8ArrayWriter\"),o=function(a){if(a._data instanceof j&&(a._data=a._data.getContent(),a.options.binary=!0,a.options.base64=!1,\"uint8array\"===d.getTypeOf(a._data))){var b=a._data;a._data=new Uint8Array(b.length),0!==b.length&&a._data.set(b,0)}return a._data},p=function(a){var b=o(a),e=d.getTypeOf(b);return\"string\"===e?!a.options.binary&&c.nodebuffer?k(b,\"utf-8\"):a.asBinary():b},q=function(a){var b=o(this);return null===b||\"undefined\"==typeof b?\"\":(this.options.base64&&(b=h.decode(b)),b=a&&this.options.binary?A.utf8decode(b):d.transformTo(\"string\",b),a||this.options.binary||(b=d.transformTo(\"string\",A.utf8encode(b))),b)},r=function(a,b,c){this.name=a,this.dir=c.dir,this.date=c.date,this.comment=c.comment,this._data=b,this.options=c,this._initialMetadata={dir:c.dir,date:c.date}};r.prototype={asText:function(){return q.call(this,!0)},asBinary:function(){return q.call(this,!1)},asNodeBuffer:function(){var a=p(this);return d.transformTo(\"nodebuffer\",a)},asUint8Array:function(){var a=p(this);return d.transformTo(\"uint8array\",a)},asArrayBuffer:function(){return this.asUint8Array().buffer}};var s=function(a,b){var c,d=\"\";for(c=0;b>c;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a<arguments.length;a++)for(b in arguments[a])arguments[a].hasOwnProperty(b)&&\"undefined\"==typeof c[b]&&(c[b]=arguments[a][b]);return c},u=function(a){return a=a||{},a.base64!==!0||null!==a.binary&&void 0!==a.binary||(a.binary=!0),a=t(a,g),a.date=a.date||new Date,null!==a.compression&&(a.compression=a.compression.toUpperCase()),a},v=function(a,b,c){var e,f=d.getTypeOf(b);if(c=u(c),c.createFolders&&(e=w(a))&&x.call(this,e,!0),c.dir||null===b||\"undefined\"==typeof b)c.base64=!1,c.binary=!1,b=null;else if(\"string\"===f)c.binary&&!c.base64&&c.optimizedBinaryString!==!0&&(b=d.string2binary(b));else{if(c.base64=!1,c.binary=!0,!(f||b instanceof j))throw new Error(\"The data of '\"+a+\"' is in an unsupported format !\");\"arraybuffer\"===f&&(b=d.transformTo(\"uint8array\",b))}var g=new r(a,b,c);return this.files[a]=g,g},w=function(a){\"/\"==a.slice(-1)&&(a=a.substring(0,a.length-1));var b=a.lastIndexOf(\"/\");return b>0?a.substring(0,b):\"\"},x=function(a,b){return\"/\"!=a.slice(-1)&&(a+=\"/\"),b=\"undefined\"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent=\"\",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=\"\"),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo(\"string\",l.utf8encode(b.name))),n=b.comment||\"\",o=d.transformTo(\"string\",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t=\"\",u=\"\",v=\"\";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+=\"up\"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+=\"uc\"+s(v.length,2)+v);var w=\"\";w+=\"\\n\\x00\",w+=p||q?\"\\x00\\b\":\"\\x00\\x00\",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+\"\u0014\\x00\"+w+s(o.length,2)+\"\\x00\\x00\\x00\\x00\"+(j===!0?\"\u0010\\x00\\x00\\x00\":\"\\x00\\x00\\x00\\x00\")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error(\"Load method is not defined. Is the file jszip-load.js included ?\")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||(\"/\"!=a.slice(-1)&&(a+=\"/\"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d<c.length;d++)delete this.files[c[d].name];return this},generate:function(a){a=t(a||{},{base64:!0,compression:\"STORE\",type:\"base64\",comment:null}),d.checkSupport(a.type);var b,c,e=[],g=0,j=0,k=d.transformTo(\"string\",this.utf8encode(a.comment||this.comment||\"\"));for(var l in this.files)if(this.files.hasOwnProperty(l)){var o=this.files[l],p=o.options.compression||a.compression.toUpperCase(),q=i[p];if(!q)throw new Error(p+\" is not a valid compression method !\");var r=y.call(this,o,q),u=z.call(this,l,o,r,g);g+=u.fileRecord.length+r.compressedSize,j+=u.dirRecord.length,e.push(u)}var v=\"\";v=f.CENTRAL_DIRECTORY_END+\"\\x00\\x00\\x00\\x00\"+s(e.length,2)+s(e.length,2)+s(j,4)+s(g,4)+s(k.length,2)+k;var w=a.type.toLowerCase();for(b=\"uint8array\"===w||\"arraybuffer\"===w||\"blob\"===w||\"nodebuffer\"===w?new n(g+j+v.length):new m(g+j+v.length),c=0;c<e.length;c++)b.append(e[c].fileRecord),b.append(e[c].compressedObject.compressedContent);for(c=0;c<e.length;c++)b.append(e[c].dirRecord);b.append(v);var x=b.finalize();switch(a.type.toLowerCase()){case\"uint8array\":case\"arraybuffer\":case\"nodebuffer\":return d.transformTo(a.type.toLowerCase(),x);case\"blob\":return d.arrayBuffer2Blob(d.transformTo(\"arraybuffer\",x));case\"base64\":return a.base64?h.encode(x):x;default:return x}},crc32:function(a,b){return e(a,b)},utf8encode:function(a){return d.transformTo(\"string\",l.utf8encode(a))},utf8decode:function(a){return l.utf8decode(a)}};b.exports=A},{\"./base64\":1,\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./defaults\":6,\"./nodeBuffer\":11,\"./signature\":14,\"./stringWriter\":16,\"./support\":17,\"./uint8ArrayWriter\":19,\"./utf8\":20,\"./utils\":21}],14:[function(a,b,c){\"use strict\";c.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",c.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",c.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",c.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",c.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",c.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],15:[function(a,b){\"use strict\";function c(a,b){this.data=a,b||(this.data=e.string2binary(this.data)),this.length=this.data.length,this.index=0}var d=a(\"./dataReader\"),e=a(\"./utils\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data.charCodeAt(a)},c.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)},c.prototype.readData=function(a){this.checkOffset(a);var b=this.data.slice(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5,\"./utils\":21}],16:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(){this.data=[]};d.prototype={append:function(a){a=c.transformTo(\"string\",a),this.data.push(a)},finalize:function(){return this.data.join(\"\")}},b.exports=d},{\"./utils\":21}],17:[function(a,b,c){(function(a){\"use strict\";if(c.base64=!0,c.array=!0,c.string=!0,c.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,c.nodebuffer=\"undefined\"!=typeof a,c.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)c.blob=!1;else{var b=new ArrayBuffer(0);try{c.blob=0===new Blob([b],{type:\"application/zip\"}).size}catch(d){try{var e=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,f=new e;f.append(b),c.blob=0===f.getBlob(\"application/zip\").size}catch(d){c.blob=!1}}}}).call(this,\"undefined\"!=typeof Buffer?Buffer:void 0)},{}],18:[function(a,b){\"use strict\";function c(a){a&&(this.data=a,this.length=this.data.length,this.index=0)}var d=a(\"./dataReader\");c.prototype=new d,c.prototype.byteAt=function(a){return this.data[a]},c.prototype.lastIndexOfSignature=function(a){for(var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=this.length-4;f>=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{\"./dataReader\":5}],19:[function(a,b){\"use strict\";var c=a(\"./utils\"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo(\"uint8array\",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{\"./utils\":21}],20:[function(a,b,c){\"use strict\";for(var d=a(\"./utils\"),e=a(\"./support\"),f=a(\"./nodeBuffer\"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,\"utf-8\"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo(\"nodebuffer\",a).toString(\"utf-8\");a=d.transformTo(e.uint8array?\"uint8array\":\"array\",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join(\"\")}},{\"./nodeBuffer\":11,\"./support\":17,\"./utils\":21}],21:[function(a,b,c){\"use strict\";function d(a){return a}function e(a,b){for(var c=0;c<a.length;++c)b[c]=255&a.charCodeAt(c);return b}function f(a){var b=65536,d=[],e=a.length,f=c.getTypeOf(a),g=0,h=!0;try{switch(f){case\"uint8array\":String.fromCharCode.apply(null,new Uint8Array(0));break;case\"nodebuffer\":String.fromCharCode.apply(null,j(0))}}catch(i){h=!1}if(!h){for(var k=\"\",l=0;l<a.length;l++)k+=String.fromCharCode(a[l]);return k}for(;e>g&&b>1;)try{d.push(\"array\"===f||\"nodebuffer\"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join(\"\")}function g(a,b){for(var c=0;c<a.length;c++)b[c]=a[c];return b}var h=a(\"./support\"),i=a(\"./compressions\"),j=a(\"./nodeBuffer\");c.string2binary=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=String.fromCharCode(255&a.charCodeAt(c));return b},c.arrayBuffer2Blob=function(a){c.checkSupport(\"blob\");try{return new Blob([a],{type:\"application/zip\"})}catch(b){try{var d=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,e=new d;return e.append(a),e.getBlob(\"application/zip\")}catch(b){throw new Error(\"Bug : can't construct the Blob.\")}}},c.applyFromCharCode=f;var k={};k.string={string:d,array:function(a){return e(a,new Array(a.length))},arraybuffer:function(a){return k.string.uint8array(a).buffer},uint8array:function(a){return e(a,new Uint8Array(a.length))},nodebuffer:function(a){return e(a,j(a.length))}},k.array={string:f,array:d,arraybuffer:function(a){return new Uint8Array(a).buffer},uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(a)}},k.arraybuffer={string:function(a){return f(new Uint8Array(a))},array:function(a){return g(new Uint8Array(a),new Array(a.byteLength))},arraybuffer:d,uint8array:function(a){return new Uint8Array(a)},nodebuffer:function(a){return j(new Uint8Array(a))}},k.uint8array={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return a.buffer},uint8array:d,nodebuffer:function(a){return j(a)}},k.nodebuffer={string:f,array:function(a){return g(a,new Array(a.length))},arraybuffer:function(a){return k.nodebuffer.uint8array(a).buffer},uint8array:function(a){return g(a,new Uint8Array(a.length))},nodebuffer:d},c.transformTo=function(a,b){if(b||(b=\"\"),!a)return b;c.checkSupport(a);var d=c.getTypeOf(b),e=k[d][a](b);return e},c.getTypeOf=function(a){return\"string\"==typeof a?\"string\":\"[object Array]\"===Object.prototype.toString.call(a)?\"array\":h.nodebuffer&&j.test(a)?\"nodebuffer\":h.uint8array&&a instanceof Uint8Array?\"uint8array\":h.arraybuffer&&a instanceof ArrayBuffer?\"arraybuffer\":void 0},c.checkSupport=function(a){var b=h[a.toLowerCase()];if(!b)throw new Error(a+\" is not supported by this browser\")},c.MAX_VALUE_16BITS=65535,c.MAX_VALUE_32BITS=-1,c.pretty=function(a){var b,c,d=\"\";for(c=0;c<(a||\"\").length;c++)b=a.charCodeAt(c),d+=\"\\\\x\"+(16>b?\"0\":\"\")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return\"[object RegExp]\"===Object.prototype.toString.call(a)}},{\"./compressions\":3,\"./nodeBuffer\":11,\"./support\":17}],22:[function(a,b){\"use strict\";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a(\"./stringReader\"),e=a(\"./nodeBufferReader\"),f=a(\"./uint8ArrayReader\"),g=a(\"./utils\"),h=a(\"./signature\"),i=a(\"./zipEntry\"),j=a(\"./support\"),k=a(\"./object\");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error(\"Corrupted zip or bug : unexpected signature (\"+g.pretty(b)+\", expected \"+g.pretty(a)+\")\")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var a,b;for(a=0;a<this.files.length;a++)b=this.files[a],this.reader.setIndex(b.localHeaderOffset),this.checkSignature(h.LOCAL_FILE_HEADER),b.readLocalPart(this.reader),b.handleUTF8()},readCentralDir:function(){var a;for(this.reader.setIndex(this.centralDirOffset);this.reader.readString(4)===h.CENTRAL_FILE_HEADER;)a=new i({zip64:this.zip64},this.loadOptions),a.readCentralPart(this.reader),this.files.push(a)},readEndOfCentral:function(){var a=this.reader.lastIndexOfSignature(h.CENTRAL_DIRECTORY_END);if(-1===a)throw new Error(\"Corrupted zip : can't find end of central directory\");if(this.reader.setIndex(a),this.checkSignature(h.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===g.MAX_VALUE_16BITS||this.diskWithCentralDirStart===g.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===g.MAX_VALUE_16BITS||this.centralDirRecords===g.MAX_VALUE_16BITS||this.centralDirSize===g.MAX_VALUE_32BITS||this.centralDirOffset===g.MAX_VALUE_32BITS){if(this.zip64=!0,a=this.reader.lastIndexOfSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),-1===a)throw new Error(\"Corrupted zip : can't find the ZIP64 end of central directory locator\");this.reader.setIndex(a),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(h.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}},prepareReader:function(a){var b=g.getTypeOf(a);this.reader=\"string\"!==b||j.uint8array?\"nodebuffer\"===b?new e(a):new f(g.transformTo(\"uint8array\",a)):new d(a,this.loadOptions.optimizedBinaryString)},load:function(a){this.prepareReader(a),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},b.exports=c},{\"./nodeBufferReader\":12,\"./object\":13,\"./signature\":14,\"./stringReader\":15,\"./support\":17,\"./uint8ArrayReader\":18,\"./utils\":21,\"./zipEntry\":23}],23:[function(a,b){\"use strict\";function c(a,b){this.options=a,this.loadOptions=b}var d=a(\"./stringReader\"),e=a(\"./utils\"),f=a(\"./compressedObject\"),g=a(\"./object\");c.prototype={isEncrypted:function(){return 1===(1&this.bitFlag)},useUTF8:function(){return 2048===(2048&this.bitFlag)},prepareCompressedContent:function(a,b,c){return function(){var d=a.index;a.setIndex(b);var e=a.readData(c);return a.setIndex(d),e}},prepareContent:function(a,b,c,d,f){return function(){var a=e.transformTo(d.uncompressInputType,this.getCompressedContent()),b=d.uncompress(a);if(b.length!==f)throw new Error(\"Bug : uncompressed data size mismatch\");return b}},readLocalPart:function(a){var b,c;if(a.skip(22),this.fileNameLength=a.readInt(2),c=a.readInt(2),this.fileName=a.readString(this.fileNameLength),a.skip(c),-1==this.compressedSize||-1==this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize == -1 || uncompressedSize == -1)\");if(b=e.findCompression(this.compressionMethod),null===b)throw new Error(\"Corrupted zip : compression \"+e.pretty(this.compressionMethod)+\" unknown (inner file : \"+this.fileName+\")\");if(this.decompressed=new f,this.decompressed.compressedSize=this.compressedSize,this.decompressed.uncompressedSize=this.uncompressedSize,this.decompressed.crc32=this.crc32,this.decompressed.compressionMethod=this.compressionMethod,this.decompressed.getCompressedContent=this.prepareCompressedContent(a,a.index,this.compressedSize,b),this.decompressed.getContent=this.prepareContent(a,a.index,this.compressedSize,b,this.uncompressedSize),this.loadOptions.checkCRC32&&(this.decompressed=e.transformTo(\"string\",this.decompressed.getContent()),g.crc32(this.decompressed)!==this.crc32))throw new Error(\"Corrupted zip : CRC32 mismatch\")},readCentralPart:function(a){if(this.versionMadeBy=a.readString(2),this.versionNeeded=a.readInt(2),this.bitFlag=a.readInt(2),this.compressionMethod=a.readString(2),this.date=a.readDate(),this.crc32=a.readInt(4),this.compressedSize=a.readInt(4),this.uncompressedSize=a.readInt(4),this.fileNameLength=a.readInt(2),this.extraFieldsLength=a.readInt(2),this.fileCommentLength=a.readInt(2),this.diskNumberStart=a.readInt(2),this.internalFileAttributes=a.readInt(2),this.externalFileAttributes=a.readInt(4),this.localHeaderOffset=a.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");this.fileName=a.readString(this.fileNameLength),this.readExtraFields(a),this.parseZIP64ExtraField(a),this.fileComment=a.readString(this.fileCommentLength),this.dir=16&this.externalFileAttributes?!0:!1},parseZIP64ExtraField:function(){if(this.extraFields[1]){var a=new d(this.extraFields[1].value);this.uncompressedSize===e.MAX_VALUE_32BITS&&(this.uncompressedSize=a.readInt(8)),this.compressedSize===e.MAX_VALUE_32BITS&&(this.compressedSize=a.readInt(8)),this.localHeaderOffset===e.MAX_VALUE_32BITS&&(this.localHeaderOffset=a.readInt(8)),this.diskNumberStart===e.MAX_VALUE_32BITS&&(this.diskNumberStart=a.readInt(4))}},readExtraFields:function(a){var b,c,d,e=a.index;for(this.extraFields=this.extraFields||{};a.index<e+this.extraFieldsLength;)b=a.readInt(2),c=a.readInt(2),d=a.readString(c),this.extraFields[b]={id:b,length:c,value:d}},handleUTF8:function(){if(this.useUTF8())this.fileName=g.utf8decode(this.fileName),this.fileComment=g.utf8decode(this.fileComment);else{var a=this.findExtraFieldUnicodePath();null!==a&&(this.fileName=a);var b=this.findExtraFieldUnicodeComment();null!==b&&(this.fileComment=b)}},findExtraFieldUnicodePath:function(){var a=this.extraFields[28789];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileName)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null},findExtraFieldUnicodeComment:function(){var a=this.extraFields[25461];if(a){var b=new d(a.value);return 1!==b.readInt(1)?null:g.crc32(this.fileComment)!==b.readInt(4)?null:g.utf8decode(b.readString(a.length-5))}return null}},b.exports=c},{\"./compressedObject\":2,\"./object\":13,\"./stringReader\":15,\"./utils\":21}],24:[function(a,b){\"use strict\";var c=a(\"./lib/utils/common\").assign,d=a(\"./lib/deflate\"),e=a(\"./lib/inflate\"),f=a(\"./lib/zlib/constants\"),g={};c(g,d,e,f),b.exports=g},{\"./lib/deflate\":25,\"./lib/inflate\":26,\"./lib/utils/common\":27,\"./lib/zlib/constants\":30}],25:[function(a,b,c){\"use strict\";function d(a,b){var c=new s(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}function f(a,b){return b=b||{},b.gzip=!0,d(a,b)}var g=a(\"./zlib/deflate.js\"),h=a(\"./utils/common\"),i=a(\"./utils/strings\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=0,m=4,n=0,o=1,p=-1,q=0,r=8,s=function(a){this.options=h.assign({level:p,method:r,chunkSize:16384,windowBits:15,memLevel:8,strategy:q,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input=\"string\"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData(\"string\"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/deflate.js\":32,\"./zlib/messages\":37,\"./zlib/zstream\":39}],26:[function(a,b,c){\"use strict\";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a(\"./zlib/inflate.js\"),g=a(\"./utils/common\"),h=a(\"./utils/strings\"),i=a(\"./zlib/constants\"),j=a(\"./zlib/messages\"),k=a(\"./zlib/zstream\"),l=a(\"./zlib/gzheader\"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:\"\"},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input=\"string\"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&(\"string\"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result=\"string\"===this.options.to?this.chunks.join(\"\"):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{\"./utils/common\":27,\"./utils/strings\":28,\"./zlib/constants\":30,\"./zlib/gzheader\":33,\"./zlib/inflate.js\":35,\"./zlib/messages\":37,\"./zlib/zstream\":39}],27:[function(a,b,c){\"use strict\";var d=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if(\"object\"!=typeof c)throw new TypeError(c+\"must be non-object\");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){\"use strict\";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c=\"\",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a(\"./common\"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{\"./common\":27}],29:[function(a,b){\"use strict\";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){\"use strict\";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){\"use strict\";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+1])&a.hash_mask;a.insert&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[f+hb-1])&a.hash_mask,a.prev[f&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=f,f++,a.insert--,!(a.lookahead+a.insert<hb)););}while(a.lookahead<jb&&0!==a.strm.avail_in)}function n(a,b){var c=65535;for(c>a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),0!==c&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c)),a.match_length>=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart;while(0!==--a.match_length);a.strstart++}else a.strstart+=a.match_length,a.match_length=0,a.ins_h=a.window[a.strstart],a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+1])&a.hash_mask;else d=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++;if(d&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function p(a,b){for(var c,d,e;;){if(a.lookahead<jb){if(m(a),a.lookahead<jb&&b===H)return sb;if(0===a.lookahead)break}if(c=0,a.lookahead>=hb&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart),a.prev_length=a.match_length,a.prev_match=a.match_start,a.match_length=hb-1,0!==c&&a.prev_length<a.max_lazy_match&&a.strstart-c<=a.w_size-jb&&(a.match_length=l(a,c),a.match_length<=5&&(a.strategy===S||a.match_length===hb&&a.strstart-a.match_start>4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<<a.hash_shift^a.window[a.strstart+hb-1])&a.hash_mask,c=a.prev[a.strstart&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=a.strstart);while(0!==--a.prev_length);if(a.match_available=0,a.match_length=hb-1,a.strstart++,d&&(h(a,!1),0===a.strm.avail_out))return sb}else if(a.match_available){if(d=D._tr_tally(a,0,a.window[a.strstart-1]),d&&h(a,!1),a.strstart++,a.lookahead--,0===a.strm.avail_out)return sb}else a.match_available=1,a.strstart++,a.lookahead--}return a.match_available&&(d=D._tr_tally(a,0,a.window[a.strstart-1]),a.match_available=0),a.insert=a.strstart<hb-1?a.strstart:hb-1,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function q(a,b){for(var c,d,e,f,g=a.window;;){if(a.lookahead<=ib){if(m(a),a.lookahead<=ib&&b===H)return sb;if(0===a.lookahead)break}if(a.match_length=0,a.lookahead>=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<<i.w_bits,i.w_mask=i.w_size-1,i.hash_bits=f+7,i.hash_size=1<<i.hash_bits,i.hash_mask=i.hash_size-1,i.hash_shift=~~((i.hash_bits+hb-1)/hb),i.window=new C.Buf8(2*i.w_size),i.head=new C.Buf16(i.hash_size),i.prev=new C.Buf16(i.w_size),i.lit_bufsize=1<<f+6,i.pending_buf_size=4*i.lit_bufsize,i.pending_buf=new C.Buf8(i.pending_buf_size),i.d_buf=i.lit_bufsize>>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.name.length?255&h.gzhead.name.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindex<h.gzhead.comment.length?255&h.gzhead.comment.charCodeAt(h.gzindex++):0,i(h,l)}while(0!==l);h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a(\"../utils/common\"),D=a(\"./trees\"),E=a(\"./adler32\"),F=a(\"./crc32\"),G=a(\"./messages\"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./messages\":37,\"./trees\":38}],33:[function(a,b){\"use strict\";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){\"use strict\";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<<e.lenbits)-1,u=(1<<e.distbits)-1;a:do{15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=r[p&t];b:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<<w)-1)];continue b}if(32&w){e.mode=d;break a}a.msg=\"invalid literal/length code\",e.mode=c;break a}x=65535&v,w&=15,w&&(w>q&&(p+=B[f++]<<q,q+=8),x+=p&(1<<w)-1,p>>>=w,q-=w),15>q&&(p+=B[f++]<<q,q+=8,p+=B[f++]<<q,q+=8),v=s[p&u];c:for(;;){if(w=v>>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<<w)-1)];continue c}a.msg=\"invalid distance code\",e.mode=c;break a}if(y=65535&v,w&=15,w>q&&(p+=B[f++]<<q,q+=8,w>q&&(p+=B[f++]<<q,q+=8)),y+=p&(1<<w)-1,y>k){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg=\"invalid distance too far back\",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<<q)-1,a.next_in=f,a.next_out=h,a.avail_in=g>f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){\"use strict\";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg=\"\",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<<f.wbits,f.wnext=0,f.whave=0,f.window=new r.Buf8(f.wsize)),d>=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whave<f.wsize&&(f.whave+=e))),0}function m(a,b){var c,e,f,g,h,i,j,m,n,o,p,q,ob,pb,qb,rb,sb,tb,ub,vb,wb,xb,yb,zb,Ab=0,Bb=new r.Buf8(4),Cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!a||!a.state||!a.output||!a.input&&0!==a.avail_in)return F;c=a.state,c.mode===V&&(c.mode=W),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,o=i,p=j,xb=C;a:for(;;)switch(c.mode){case K:if(0===c.wrap){c.mode=W;break}for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(2&c.wrap&&35615===m){c.check=0,Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg=\"incorrect header check\",c.mode=lb;break}if((15&m)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg=\"invalid window size\",c.mode=lb;break}c.dmax=1<<wb,a.adler=c.check=1,c.mode=512&m?T:V,m=0,n=0;break;case L:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.flags=m,(255&c.flags)!==J){a.msg=\"unknown compression method\",c.mode=lb;break}if(57344&c.flags){a.msg=\"unknown header flags set\",c.mode=lb;break}c.head&&(c.head.text=m>>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.time=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.head&&(c.head.xflags=255&m,c.head.os=m>>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length=m,c.head&&(c.head.extra_len=m),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(65535&c.check)){a.msg=\"header crc mismatch\",c.mode=lb;break}m=0,n=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}a.adler=c.check=d(m),m=0,n=0,c.mode=U;case U:if(0===c.havedict)return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,E;a.adler=c.check=1,c.mode=V;case V:if(b===A||b===B)break a;case W:if(c.last){m>>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}switch(c.last=1&m,m>>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg=\"invalid block type\",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if((65535&m)!==(m>>>16^65535)){a.msg=\"invalid stored block lengths\",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(c.nlen=(31&m)+257,m>>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg=\"too many length or distance symbols\",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.have<c.ncode;){for(;3>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.lens[Cb[c.have++]]=7&m,m>>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid code lengths set\",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have<c.nlen+c.ndist;){for(;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(16>sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m>>>=qb,n-=qb,0===c.have){a.msg=\"invalid bit length repeat\",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg=\"invalid bit length repeat\",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg=\"invalid code -- missing end-of-block\",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg=\"invalid literal/lengths set\",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg=\"invalid distances set\",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<<c.lenbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(rb&&0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.lencode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg=\"invalid literal/length code\",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.length+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<<c.distbits)-1],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(0===(240&rb)){for(tb=qb,ub=rb,vb=sb;Ab=c.distcode[vb+((m&(1<<tb+ub)-1)>>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}m>>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg=\"invalid distance code\",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}c.offset+=m&(1<<c.extra)-1,m>>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg=\"invalid distance too far back\",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg=\"invalid distance too far back\",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<<n,n+=8}if(p-=j,a.total_out+=p,c.total+=p,p&&(a.adler=c.check=c.flags?t(c.check,f,p,h-p):s(c.check,f,p,h-p)),p=j,(c.flags?m:d(m))!==c.check){a.msg=\"incorrect data check\",c.mode=lb;break}m=0,n=0}c.mode=jb;case jb:if(c.wrap&&c.flags){for(;32>n;){if(0===i)break a;i--,m+=e[g++]<<n,n+=8}if(m!==(4294967295&c.total)){a.msg=\"incorrect length check\",c.mode=lb;break}m=0,n=0}c.mode=kb;case kb:xb=D;break a;case lb:xb=G;break a;case mb:return H;case nb:default:return F}return a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,(c.wsize||p!==a.avail_out&&c.mode<lb&&(c.mode<ib||b!==z))&&l(a,a.output,a.next_out,p-a.avail_out)?(c.mode=mb,H):(o-=a.avail_in,p-=a.avail_out,a.total_in+=o,a.total_out+=p,c.total+=p,c.wrap&&p&&(a.adler=c.check=c.flags?t(c.check,f,p,a.next_out-p):s(c.check,f,p,a.next_out-p)),a.data_type=c.bits+(c.last?64:0)+(c.mode===V?128:0)+(c.mode===bb||c.mode===Y?256:0),(0===o&&0===p||b===z)&&xb===C&&(xb=I),xb)}function n(a){if(!a||!a.state)return F;var b=a.state;return b.window&&(b.window=null),a.state=null,C}function o(a,b){var c;return a&&a.state?(c=a.state,0===(2&c.wrap)?F:(c.head=b,b.done=!1,C)):F}var p,q,r=a(\"../utils/common\"),s=a(\"./adler32\"),t=a(\"./crc32\"),u=a(\"./inffast\"),v=a(\"./inftrees\"),w=0,x=1,y=2,z=4,A=5,B=6,C=0,D=1,E=2,F=-2,G=-3,H=-4,I=-5,J=8,K=1,L=2,M=3,N=4,O=5,P=6,Q=7,R=8,S=9,T=10,U=11,V=12,W=13,X=14,Y=15,Z=16,$=17,_=18,ab=19,bb=20,cb=21,db=22,eb=23,fb=24,gb=25,hb=26,ib=27,jb=28,kb=29,lb=30,mb=31,nb=32,ob=852,pb=592,qb=15,rb=qb,sb=!0;c.inflateReset=g,c.inflateReset2=h,c.inflateResetKeep=f,c.inflateInit=j,c.inflateInit2=i,c.inflate=m,c.inflateEnd=n,c.inflateGetHeader=o,c.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":27,\"./adler32\":29,\"./crc32\":31,\"./inffast\":34,\"./inftrees\":36}],36:[function(a,b){\"use strict\";var c=a(\"../utils/common\"),d=15,e=852,f=592,g=0,h=1,i=2,j=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],k=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],l=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],m=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];b.exports=function(a,b,n,o,p,q,r,s){var t,u,v,w,x,y,z,A,B,C=s.bits,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=null,O=0,P=new c.Buf16(d+1),Q=new c.Buf16(d+1),R=null,S=0;for(D=0;d>=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<<H,w=L-1,a===h&&L>e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]<y?(A=0,B=r[E]):r[E]>y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<<D-J,u=1<<I,F=u;do u-=t,p[x+(M>>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<<D-1;M&t;)t>>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<<I;G>I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<<I,a===h&&L>e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{\"../utils/common\":27}],37:[function(a,b){\"use strict\";b.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],38:[function(a,b,c){\"use strict\";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<<a.bi_valid&65535,f(a,a.bi_buf),a.bi_buf=b>>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<<a.bi_valid&65535,a.bi_valid+=c)}function h(a,b,c){g(a,c[2*b],c[2*b+1])}function i(a,b){var c=0;do c|=1&a,a>>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<<ab[d];a++)gb[e++]=d;for(e>>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<<ab[d]-7;a++)gb[256+e++]=d;for(b=0;U>=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]<a[f]||a[e]===a[f]&&d[b]<=d[c]}function r(a,b,c){for(var d=a.heap[c],e=c<<1;e<=a.heap_len&&(e<a.heap_len&&q(b,a.heap[e+1],a.heap[e],a.depth)&&e++,!q(b,d,a.heap[e],a.depth));)a.heap[c]=a.heap[e],c=e,e<<=1;a.heap[c]=d}function s(a,b,c){var d,f,i,j,k=0;if(0!==a.last_lit)do d=a.pending_buf[a.d_buf+2*k]<<8|a.pending_buf[a.d_buf+2*k+1],f=a.pending_buf[a.l_buf+k],k++,0===d?h(a,f,b):(i=hb[f],h(a,i+P+1,b),j=_[i],0!==j&&(f-=ib[i],g(a,f,j)),d--,i=e(d),h(a,i,c),j=ab[i],0!==j&&(d-=jb[i],g(a,d,j)));while(k<a.last_lit);h(a,X,b)}function t(a,b){var c,d,e,f=b.dyn_tree,g=b.stat_desc.static_tree,h=b.stat_desc.has_stree,i=b.stat_desc.elems,j=-1;for(a.heap_len=0,a.heap_max=T,c=0;i>c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++h<i&&e===g||(j>h?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++j<k&&e===i)){if(l>j){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a(\"../utils/common\"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{\"../utils/common\":27}],39:[function(a,b){\"use strict\";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});'use strict';if(tr.isVinn){global.JSZip=global.window.JSZip;global.window=undefined;}else if(tr.isNode){const jsZipAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/jszip.min.js');const jsZipModule=require(jsZipAbsPath);global.JSZip=jsZipModule;}'use strict';tr.exportTo('tr.e.importer',function(){function ZipImporter(model,eventData){if(eventData instanceof ArrayBuffer){eventData=new Uint8Array(eventData);}\nthis.model_=model;this.eventData_=eventData;}\nZipImporter.canImport=function(eventData){let header;if(eventData instanceof ArrayBuffer){header=new Uint8Array(eventData.slice(0,2));}else if(typeof(eventData)==='string'||eventData instanceof String){header=[eventData.charCodeAt(0),eventData.charCodeAt(1)];}else{return false;}\nreturn header[0]==='P'.charCodeAt(0)&&header[1]==='K'.charCodeAt(0);};ZipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'ZipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const zip=new JSZip(this.eventData_);const subtraces=[];for(const idx in zip.files){subtraces.push(zip.files[idx].asBinary());}\nreturn subtraces;}};tr.importer.Importer.register(ZipImporter);return{ZipImporter,};});'use strict';tr.exportTo('tr.model',function(){function HeapEntry(heapDump,leafStackFrame,objectTypeName,size,count,valuesAreTotals){this.heapDump=heapDump;this.leafStackFrame=leafStackFrame;this.objectTypeName=objectTypeName;this.size=size;this.count=count;this.valuesAreTotals=valuesAreTotals;}\nfunction HeapDump(processMemoryDump,allocatorName,isComplete){this.processMemoryDump=processMemoryDump;this.allocatorName=allocatorName;this.isComplete=isComplete;this.entries=[];}\nHeapDump.prototype={addEntry(leafStackFrame,objectTypeName,size,count,opt_valuesAreTotals){if(opt_valuesAreTotals===undefined)opt_valuesAreTotals=true;const valuesAreTotals=opt_valuesAreTotals;const entry=new HeapEntry(this,leafStackFrame,objectTypeName,size,count,valuesAreTotals);this.entries.push(entry);return entry;}};return{HeapEntry,HeapDump,};});'use strict';tr.exportTo('tr.e.importer',function(){function HeapDumpTraceEventImporter(heapProfileExpander,stackFrames,processMemoryDump,idPrefix,model){this.expander=heapProfileExpander;this.stackFrames=stackFrames;this.processMemoryDump=processMemoryDump;this.idPrefix=idPrefix;this.model=model;}\nHeapDumpTraceEventImporter.prototype={getLeafStackFrame(stackFrameId){if(stackFrameId==='')return undefined;const parentId=this.idPrefix+stackFrameId;const id=parentId+':self';if(!this.stackFrames[id]){const parentStackFrame=this.stackFrames[parentId];const stackFrame=new tr.model.StackFrame(parentStackFrame,id,'<self>',undefined);this.model.addStackFrame(stackFrame);}\nreturn this.stackFrames[id];},parseEntry(entry,heapDump){const size=entry.size;const count=entry.count;const leafStackFrame=this.getLeafStackFrame(entry.node.id);const objectTypeName=entry.type.name;const valuesAreTotals=false;if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+typeId+')',});}\nheapDump.addEntry(leafStackFrame,objectTypeName,size,count,valuesAreTotals);},parse(){const heapDumps={};const inflated=this.expander.inflated;for(const[allocatorName,entries]of Object.entries(inflated)){const heapDump=new tr.model.HeapDump(this.processMemoryDump,allocatorName);for(const entry of entries){this.parseEntry(entry,heapDump);}\nheapDump.isComplete=true;heapDumps[allocatorName]=heapDump;}\nreturn heapDumps;},};return{HeapDumpTraceEventImporter,};});'use strict';tr.exportTo('tr.e.importer',function(){function LegacyHeapDumpTraceEventImporter(model,processMemoryDump,processObjectTypeNameMap,idPrefix,dumpId,rawHeapDumps){this.model_=model;this.processObjectTypeNameMap_=processObjectTypeNameMap;this.idPrefix_=idPrefix;this.processMemoryDump_=processMemoryDump;this.pid_=this.processMemoryDump_.process.pid;this.dumpId_=dumpId;this.rawHeapDumps_=rawHeapDumps;}\nLegacyHeapDumpTraceEventImporter.prototype={parseRawHeapDump(rawHeapDump,allocatorName){const model=this.model_;const processMemoryDump=this.processMemoryDump_;const heapDump=new tr.model.HeapDump(processMemoryDump,allocatorName);const entries=rawHeapDump.entries;if(entries===undefined||entries.length===0){this.model_.importWarning({type:'memory_dump_parse_error',message:'No heap entries in a '+allocatorName+' heap dump for PID='+this.pid_+' and dump ID='+this.dumpId_+'.'});return undefined;}\nconst isOldFormat=entries[0].bt===undefined;if(!isOldFormat&&this.processObjectTypeNameMap_===undefined){return undefined;}\nfor(let i=0;i<entries.length;i++){const entry=entries[i];const size=parseInt(entry.size,16);const leafStackFrameIndex=entry.bt;let leafStackFrame;if(isOldFormat){if(leafStackFrameIndex===undefined){leafStackFrame=undefined;}else{let leafStackFrameId=this.idPrefix_+leafStackFrameIndex;if(leafStackFrameIndex===''){leafStackFrame=undefined;}else{leafStackFrame=model.stackFrames[leafStackFrameId];if(leafStackFrame===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing leaf stack frame (ID '+\nleafStackFrameId+') of heap entry '+i+' (size '+\nsize+') in a '+allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}\nleafStackFrameId+=':self';if(model.stackFrames[leafStackFrameId]!==undefined){leafStackFrame=model.stackFrames[leafStackFrameId];}else{leafStackFrame=new tr.model.StackFrame(leafStackFrame,leafStackFrameId,'<self>',undefined);model.addStackFrame(leafStackFrame);}}}else{if(leafStackFrameIndex===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing stack frame ID of heap entry '+i+' (size '+size+') in a '+allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}\nconst leafStackFrameId=this.idPrefix_+leafStackFrameIndex;if(leafStackFrameIndex===''){leafStackFrame=undefined;}else{leafStackFrame=model.stackFrames[leafStackFrameId];if(leafStackFrame===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing leaf stack frame (ID '+leafStackFrameId+') of heap entry '+i+' (size '+size+') in a '+\nallocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}}\nconst objectTypeId=entry.type;let objectTypeName;if(objectTypeId===undefined){objectTypeName=undefined;}else if(this.processObjectTypeNameMap_===undefined){continue;}else{objectTypeName=this.processObjectTypeNameMap_[objectTypeId];if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+objectTypeId+') of heap entry '+i+' (size '+size+') in a '+\nallocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}\nconst count=entry.count===undefined?undefined:parseInt(entry.count,16);heapDump.addEntry(leafStackFrame,objectTypeName,size,count);}\nreturn heapDump;},parse(){const heapDumps={};for(const allocatorName in this.rawHeapDumps_){const rawHeapDump=this.rawHeapDumps_[allocatorName];const heapDump=this.parseRawHeapDump(rawHeapDump,allocatorName);if(heapDump!==undefined&&heapDump.entries.length>0){heapDumps[allocatorName]=heapDump;}}\nreturn heapDumps;},};return{LegacyHeapDumpTraceEventImporter,};});'use strict';if(tr.isHeadless){global.window={};}\n(function(window,Object,Array,Error,JSON,undefined){var partialComplete=varArgs(function(fn,args){var numBoundArgs=args.length;return varArgs(function(callArgs){for(var i=0;i<callArgs.length;i++){args[numBoundArgs+i]=callArgs[i];}\nargs.length=numBoundArgs+callArgs.length;return fn.apply(this,args);});}),compose=varArgs(function(fns){var fnsList=arrayAsList(fns);function next(params,curFn){return[apply(params,curFn)];}\nreturn varArgs(function(startParams){return foldR(next,startParams,fnsList)[0];});});function compose2(f1,f2){return function(){return f1.call(this,f2.apply(this,arguments));}}\nfunction attr(key){return function(o){return o[key];};}\nvar lazyUnion=varArgs(function(fns){return varArgs(function(params){var maybeValue;for(var i=0;i<len(fns);i++){maybeValue=apply(params,fns[i]);if(maybeValue){return maybeValue;}}});});function apply(args,fn){return fn.apply(undefined,args);}\nfunction varArgs(fn){var numberOfFixedArguments=fn.length-1,slice=Array.prototype.slice;if(numberOfFixedArguments==0){return function(){return fn.call(this,slice.call(arguments));}}else if(numberOfFixedArguments==1){return function(){return fn.call(this,arguments[0],slice.call(arguments,1));}}\nvar argsHolder=Array(fn.length);return function(){for(var i=0;i<numberOfFixedArguments;i++){argsHolder[i]=arguments[i];}\nargsHolder[numberOfFixedArguments]=slice.call(arguments,numberOfFixedArguments);return fn.apply(this,argsHolder);}}\nfunction flip(fn){return function(a,b){return fn(b,a);}}\nfunction lazyIntersection(fn1,fn2){return function(param){return fn1(param)&&fn2(param);};}\nfunction noop(){}\nfunction always(){return true}\nfunction functor(val){return function(){return val;}}\nfunction isOfType(T,maybeSomething){return maybeSomething&&maybeSomething.constructor===T;}\nvar len=attr('length'),isString=partialComplete(isOfType,String);function defined(value){return value!==undefined;}\nfunction hasAllProperties(fieldList,o){return(o instanceof Object)&&all(function(field){return(field in o);},fieldList);}\nfunction cons(x,xs){return[x,xs];}\nvar emptyList=null,head=attr(0),tail=attr(1);function arrayAsList(inputArray){return reverseList(inputArray.reduce(flip(cons),emptyList));}\nvar list=varArgs(arrayAsList);function listAsArray(list){return foldR(function(arraySoFar,listItem){arraySoFar.unshift(listItem);return arraySoFar;},[],list);}\nfunction map(fn,list){return list?cons(fn(head(list)),map(fn,tail(list))):emptyList;}\nfunction foldR(fn,startValue,list){return list?fn(foldR(fn,startValue,tail(list)),head(list)):startValue;}\nfunction foldR1(fn,list){return tail(list)?fn(foldR1(fn,tail(list)),head(list)):head(list);}\nfunction without(list,test,removedFn){return withoutInner(list,removedFn||noop);function withoutInner(subList,removedFn){return subList?(test(head(subList))?(removedFn(head(subList)),tail(subList)):cons(head(subList),withoutInner(tail(subList),removedFn))):emptyList;}}\nfunction all(fn,list){return!list||(fn(head(list))&&all(fn,tail(list)));}\nfunction applyEach(fnList,args){if(fnList){head(fnList).apply(null,args);applyEach(tail(fnList),args);}}\nfunction reverseList(list){function reverseInner(list,reversedAlready){if(!list){return reversedAlready;}\nreturn reverseInner(tail(list),cons(head(list),reversedAlready))}\nreturn reverseInner(list,emptyList);}\nfunction first(test,list){return list&&(test(head(list))?head(list):first(test,tail(list)));}\nfunction clarinet(eventBus){\"use strict\";var\nemitSaxKey=eventBus(SAX_KEY).emit,emitValueOpen=eventBus(SAX_VALUE_OPEN).emit,emitValueClose=eventBus(SAX_VALUE_CLOSE).emit,emitFail=eventBus(FAIL_EVENT).emit,MAX_BUFFER_LENGTH=64*1024,stringTokenPattern=/[\\\\\"\\n]/g,_n=0,BEGIN=_n++,VALUE=_n++,OPEN_OBJECT=_n++,CLOSE_OBJECT=_n++,OPEN_ARRAY=_n++,CLOSE_ARRAY=_n++,STRING=_n++,OPEN_KEY=_n++,CLOSE_KEY=_n++,TRUE=_n++,TRUE2=_n++,TRUE3=_n++,FALSE=_n++,FALSE2=_n++,FALSE3=_n++,FALSE4=_n++,NULL=_n++,NULL2=_n++,NULL3=_n++,NUMBER_DECIMAL_POINT=_n++,NUMBER_DIGIT=_n,bufferCheckPosition=MAX_BUFFER_LENGTH,latestError,c,p,textNode=undefined,numberNode=\"\",slashed=false,closed=false,state=BEGIN,stack=[],unicodeS=null,unicodeI=0,depth=0,position=0,column=0,line=1;function checkBufferLength(){var maxActual=0;if(textNode!==undefined&&textNode.length>MAX_BUFFER_LENGTH){emitError(\"Max buffer length exceeded: textNode\");maxActual=Math.max(maxActual,textNode.length);}\nif(numberNode.length>MAX_BUFFER_LENGTH){emitError(\"Max buffer length exceeded: numberNode\");maxActual=Math.max(maxActual,numberNode.length);}\nbufferCheckPosition=(MAX_BUFFER_LENGTH-maxActual)\n+position;}\neventBus(STREAM_DATA).on(handleData);eventBus(STREAM_END).on(handleStreamEnd);function emitError(errorString){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nlatestError=Error(errorString+\"\\nLn: \"+line+\"\\nCol: \"+column+\"\\nChr: \"+c);emitFail(errorReport(undefined,undefined,latestError));}\nfunction handleStreamEnd(){if(state==BEGIN){emitValueOpen({});emitValueClose();closed=true;return;}\nif(state!==VALUE||depth!==0)\nemitError(\"Unexpected end\");if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nclosed=true;}\nfunction whitespace(c){return c=='\\r'||c=='\\n'||c==' '||c=='\\t';}\nfunction handleData(chunk){if(latestError)\nreturn;if(closed){return emitError(\"Cannot write after close\");}\nvar i=0;c=chunk[0];while(c){p=c;c=chunk[i++];if(!c)break;position++;if(c==\"\\n\"){line++;column=0;}else column++;switch(state){case BEGIN:if(c===\"{\")state=OPEN_OBJECT;else if(c===\"[\")state=OPEN_ARRAY;else if(!whitespace(c))\nreturn emitError(\"Non-whitespace before {[.\");continue;case OPEN_KEY:case OPEN_OBJECT:if(whitespace(c))continue;if(state===OPEN_KEY)stack.push(CLOSE_KEY);else{if(c==='}'){emitValueOpen({});emitValueClose();state=stack.pop()||VALUE;continue;}else stack.push(CLOSE_OBJECT);}\nif(c==='\"')\nstate=STRING;else\nreturn emitError(\"Malformed object key should start with \\\" \");continue;case CLOSE_KEY:case CLOSE_OBJECT:if(whitespace(c))continue;if(c===':'){if(state===CLOSE_OBJECT){stack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen({});emitSaxKey(textNode);textNode=undefined;}\ndepth++;}else{if(textNode!==undefined){emitSaxKey(textNode);textNode=undefined;}}\nstate=VALUE;}else if(c==='}'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nemitValueClose();depth--;state=stack.pop()||VALUE;}else if(c===','){if(state===CLOSE_OBJECT)\nstack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nstate=OPEN_KEY;}else\nreturn emitError('Bad object');continue;case OPEN_ARRAY:case VALUE:if(whitespace(c))continue;if(state===OPEN_ARRAY){emitValueOpen([]);depth++;state=VALUE;if(c===']'){emitValueClose();depth--;state=stack.pop()||VALUE;continue;}else{stack.push(CLOSE_ARRAY);}}\nif(c==='\"')state=STRING;else if(c==='{')state=OPEN_OBJECT;else if(c==='[')state=OPEN_ARRAY;else if(c==='t')state=TRUE;else if(c==='f')state=FALSE;else if(c==='n')state=NULL;else if(c==='-'){numberNode+=c;}else if(c==='0'){numberNode+=c;state=NUMBER_DIGIT;}else if('123456789'.indexOf(c)!==-1){numberNode+=c;state=NUMBER_DIGIT;}else\nreturn emitError(\"Bad value\");continue;case CLOSE_ARRAY:if(c===','){stack.push(CLOSE_ARRAY);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nstate=VALUE;}else if(c===']'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;}\nemitValueClose();depth--;state=stack.pop()||VALUE;}else if(whitespace(c))\ncontinue;else\nreturn emitError('Bad array');continue;case STRING:if(textNode===undefined){textNode=\"\";}\nvar starti=i-1;STRING_BIGLOOP:while(true){while(unicodeI>0){unicodeS+=c;c=chunk.charAt(i++);if(unicodeI===4){textNode+=String.fromCharCode(parseInt(unicodeS,16));unicodeI=0;starti=i-1;}else{unicodeI++;}\nif(!c)break STRING_BIGLOOP;}\nif(c==='\"'&&!slashed){state=stack.pop()||VALUE;textNode+=chunk.substring(starti,i-1);break;}\nif(c==='\\\\'&&!slashed){slashed=true;textNode+=chunk.substring(starti,i-1);c=chunk.charAt(i++);if(!c)break;}\nif(slashed){slashed=false;if(c==='n'){textNode+='\\n';}\nelse if(c==='r'){textNode+='\\r';}\nelse if(c==='t'){textNode+='\\t';}\nelse if(c==='f'){textNode+='\\f';}\nelse if(c==='b'){textNode+='\\b';}\nelse if(c==='u'){unicodeI=1;unicodeS='';}else{textNode+=c;}\nc=chunk.charAt(i++);starti=i-1;if(!c)break;else continue;}\nstringTokenPattern.lastIndex=i;var reResult=stringTokenPattern.exec(chunk);if(!reResult){i=chunk.length+1;textNode+=chunk.substring(starti,i-1);break;}\ni=reResult.index+1;c=chunk.charAt(reResult.index);if(!c){textNode+=chunk.substring(starti,i-1);break;}}\ncontinue;case TRUE:if(!c)continue;if(c==='r')state=TRUE2;else\nreturn emitError('Invalid true started with t'+c);continue;case TRUE2:if(!c)continue;if(c==='u')state=TRUE3;else\nreturn emitError('Invalid true started with tr'+c);continue;case TRUE3:if(!c)continue;if(c==='e'){emitValueOpen(true);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid true started with tru'+c);continue;case FALSE:if(!c)continue;if(c==='a')state=FALSE2;else\nreturn emitError('Invalid false started with f'+c);continue;case FALSE2:if(!c)continue;if(c==='l')state=FALSE3;else\nreturn emitError('Invalid false started with fa'+c);continue;case FALSE3:if(!c)continue;if(c==='s')state=FALSE4;else\nreturn emitError('Invalid false started with fal'+c);continue;case FALSE4:if(!c)continue;if(c==='e'){emitValueOpen(false);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid false started with fals'+c);continue;case NULL:if(!c)continue;if(c==='u')state=NULL2;else\nreturn emitError('Invalid null started with n'+c);continue;case NULL2:if(!c)continue;if(c==='l')state=NULL3;else\nreturn emitError('Invalid null started with nu'+c);continue;case NULL3:if(!c)continue;if(c==='l'){emitValueOpen(null);emitValueClose();state=stack.pop()||VALUE;}else\nreturn emitError('Invalid null started with nul'+c);continue;case NUMBER_DECIMAL_POINT:if(c==='.'){numberNode+=c;state=NUMBER_DIGIT;}else\nreturn emitError('Leading zero not followed by .');continue;case NUMBER_DIGIT:if('0123456789'.indexOf(c)!==-1)numberNode+=c;else if(c==='.'){if(numberNode.indexOf('.')!==-1)\nreturn emitError('Invalid number has two dots');numberNode+=c;}else if(c==='e'||c==='E'){if(numberNode.indexOf('e')!==-1||numberNode.indexOf('E')!==-1)\nreturn emitError('Invalid number has two exponential');numberNode+=c;}else if(c===\"+\"||c===\"-\"){if(!(p==='e'||p==='E'))\nreturn emitError('Invalid symbol in number');numberNode+=c;}else{if(numberNode){emitValueOpen(parseFloat(numberNode));emitValueClose();numberNode=\"\";}\ni--;state=stack.pop()||VALUE;}\ncontinue;default:return emitError(\"Unknown state: \"+state);}}\nif(position>=bufferCheckPosition)\ncheckBufferLength();}}\nfunction ascentManager(oboeBus,handlers){\"use strict\";var listenerId={},ascent;function stateAfter(handler){return function(param){ascent=handler(ascent,param);}}\nfor(var eventName in handlers){oboeBus(eventName).on(stateAfter(handlers[eventName]),listenerId);}\noboeBus(NODE_SWAP).on(function(newNode){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));parentNode[key]=newNode;}});oboeBus(NODE_DROP).on(function(){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));delete parentNode[key];}});oboeBus(ABORTING).on(function(){for(var eventName in handlers){oboeBus(eventName).un(listenerId);}});}\nfunction parseResponseHeaders(headerStr){var headers={};headerStr&&headerStr.split('\\u000d\\u000a').forEach(function(headerPair){var index=headerPair.indexOf('\\u003a\\u0020');headers[headerPair.substring(0,index)]=headerPair.substring(index+2);});return headers;}\nfunction isCrossOrigin(pageLocation,ajaxHost){function defaultPort(protocol){return{'http:':80,'https:':443}[protocol];}\nfunction portOf(location){return location.port||defaultPort(location.protocol||pageLocation.protocol);}\nreturn!!((ajaxHost.protocol&&(ajaxHost.protocol!=pageLocation.protocol))||(ajaxHost.host&&(ajaxHost.host!=pageLocation.host))||(ajaxHost.host&&(portOf(ajaxHost)!=portOf(pageLocation))));}\nfunction parseUrlOrigin(url){var URL_HOST_PATTERN=/(\\w+:)?(?:\\/\\/)([\\w.-]+)?(?::(\\d+))?\\/?/,urlHostMatch=URL_HOST_PATTERN.exec(url)||[];return{protocol:urlHostMatch[1]||'',host:urlHostMatch[2]||'',port:urlHostMatch[3]||''};}\nfunction httpTransport(){return new XMLHttpRequest();}\nfunction streamingHttp(oboeBus,xhr,method,url,data,headers,withCredentials){\"use strict\";var emitStreamData=oboeBus(STREAM_DATA).emit,emitFail=oboeBus(FAIL_EVENT).emit,numberOfCharsAlreadyGivenToCallback=0,stillToSendStartEvent=true;oboeBus(ABORTING).on(function(){xhr.onreadystatechange=null;xhr.abort();});function handleProgress(){var textSoFar=xhr.responseText,newText=textSoFar.substr(numberOfCharsAlreadyGivenToCallback);if(newText){emitStreamData(newText);}\nnumberOfCharsAlreadyGivenToCallback=len(textSoFar);}\nif('onprogress'in xhr){xhr.onprogress=handleProgress;}\nxhr.onreadystatechange=function(){function sendStartIfNotAlready(){try{stillToSendStartEvent&&oboeBus(HTTP_START).emit(xhr.status,parseResponseHeaders(xhr.getAllResponseHeaders()));stillToSendStartEvent=false;}catch(e){}}\nswitch(xhr.readyState){case 2:case 3:return sendStartIfNotAlready();case 4:sendStartIfNotAlready();var successful=String(xhr.status)[0]==2;if(successful){handleProgress();oboeBus(STREAM_END).emit();}else{emitFail(errorReport(xhr.status,xhr.responseText));}}};try{xhr.open(method,url,true);for(var headerName in headers){xhr.setRequestHeader(headerName,headers[headerName]);}\nif(!isCrossOrigin(window.location,parseUrlOrigin(url))){xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');}\nxhr.withCredentials=withCredentials;xhr.send(data);}catch(e){window.setTimeout(partialComplete(emitFail,errorReport(undefined,undefined,e)),0);}}\nvar jsonPathSyntax=(function(){var\nregexDescriptor=function regexDescriptor(regex){return regex.exec.bind(regex);},jsonPathClause=varArgs(function(componentRegexes){componentRegexes.unshift(/^/);return regexDescriptor(RegExp(componentRegexes.map(attr('source')).join('')));}),possiblyCapturing=/(\\$?)/,namedNode=/([\\w-_]+|\\*)/,namePlaceholder=/()/,nodeInArrayNotation=/\\[\"([^\"]+)\"\\]/,numberedNodeInArrayNotation=/\\[(\\d+|\\*)\\]/,fieldList=/{([\\w ]*?)}/,optionalFieldList=/(?:{([\\w ]*?)})?/\n,jsonPathNamedNodeInObjectNotation=jsonPathClause(possiblyCapturing,namedNode,optionalFieldList),jsonPathNamedNodeInArrayNotation=jsonPathClause(possiblyCapturing,nodeInArrayNotation,optionalFieldList),jsonPathNumberedNodeInArrayNotation=jsonPathClause(possiblyCapturing,numberedNodeInArrayNotation,optionalFieldList),jsonPathPureDuckTyping=jsonPathClause(possiblyCapturing,namePlaceholder,fieldList),jsonPathDoubleDot=jsonPathClause(/\\.\\./),jsonPathDot=jsonPathClause(/\\./),jsonPathBang=jsonPathClause(possiblyCapturing,/!/),emptyString=jsonPathClause(/$/);return function(fn){return fn(lazyUnion(jsonPathNamedNodeInObjectNotation,jsonPathNamedNodeInArrayNotation,jsonPathNumberedNodeInArrayNotation,jsonPathPureDuckTyping),jsonPathDoubleDot,jsonPathDot,jsonPathBang,emptyString);};}());function namedNode(key,node){return{key:key,node:node};}\nvar keyOf=attr('key');var nodeOf=attr('node');var ROOT_PATH={};function incrementalContentBuilder(oboeBus){var emitNodeOpened=oboeBus(NODE_OPENED).emit,emitNodeClosed=oboeBus(NODE_CLOSED).emit,emitRootOpened=oboeBus(ROOT_PATH_FOUND).emit,emitRootClosed=oboeBus(ROOT_NODE_FOUND).emit;function arrayIndicesAreKeys(possiblyInconsistentAscent,newDeepestNode){var parentNode=nodeOf(head(possiblyInconsistentAscent));return isOfType(Array,parentNode)?keyFound(possiblyInconsistentAscent,len(parentNode),newDeepestNode):possiblyInconsistentAscent;}\nfunction nodeOpened(ascent,newDeepestNode){if(!ascent){emitRootOpened(newDeepestNode);return keyFound(ascent,ROOT_PATH,newDeepestNode);}\nvar arrayConsistentAscent=arrayIndicesAreKeys(ascent,newDeepestNode),ancestorBranches=tail(arrayConsistentAscent),previouslyUnmappedName=keyOf(head(arrayConsistentAscent));appendBuiltContent(ancestorBranches,previouslyUnmappedName,newDeepestNode);return cons(namedNode(previouslyUnmappedName,newDeepestNode),ancestorBranches);}\nfunction appendBuiltContent(ancestorBranches,key,node){nodeOf(head(ancestorBranches))[key]=node;}\nfunction keyFound(ascent,newDeepestName,maybeNewDeepestNode){if(ascent){appendBuiltContent(ascent,newDeepestName,maybeNewDeepestNode);}\nvar ascentWithNewPath=cons(namedNode(newDeepestName,maybeNewDeepestNode),ascent);emitNodeOpened(ascentWithNewPath);return ascentWithNewPath;}\nfunction nodeClosed(ascent){emitNodeClosed(ascent);return tail(ascent)||emitRootClosed(nodeOf(head(ascent)));}\nvar contentBuilderHandlers={};contentBuilderHandlers[SAX_VALUE_OPEN]=nodeOpened;contentBuilderHandlers[SAX_VALUE_CLOSE]=nodeClosed;contentBuilderHandlers[SAX_KEY]=keyFound;return contentBuilderHandlers;}\nvar jsonPathCompiler=jsonPathSyntax(function(pathNodeSyntax,doubleDotSyntax,dotSyntax,bangSyntax,emptySyntax){var CAPTURING_INDEX=1;var NAME_INDEX=2;var FIELD_LIST_INDEX=3;var headKey=compose2(keyOf,head),headNode=compose2(nodeOf,head);function nameClause(previousExpr,detection){var name=detection[NAME_INDEX],matchesName=(!name||name=='*')?always:function(ascent){return headKey(ascent)==name};return lazyIntersection(matchesName,previousExpr);}\nfunction duckTypeClause(previousExpr,detection){var fieldListStr=detection[FIELD_LIST_INDEX];if(!fieldListStr)\nreturn previousExpr;var hasAllrequiredFields=partialComplete(hasAllProperties,arrayAsList(fieldListStr.split(/\\W+/))),isMatch=compose2(hasAllrequiredFields,headNode);return lazyIntersection(isMatch,previousExpr);}\nfunction capture(previousExpr,detection){var capturing=!!detection[CAPTURING_INDEX];if(!capturing)\nreturn previousExpr;return lazyIntersection(previousExpr,head);}\nfunction skip1(previousExpr){if(previousExpr==always){return always;}\nfunction notAtRoot(ascent){return headKey(ascent)!=ROOT_PATH;}\nreturn lazyIntersection(notAtRoot,compose2(previousExpr,tail));}\nfunction skipMany(previousExpr){if(previousExpr==always){return always;}\nvar\nterminalCaseWhenArrivingAtRoot=rootExpr(),terminalCaseWhenPreviousExpressionIsSatisfied=previousExpr,recursiveCase=skip1(function(ascent){return cases(ascent);}),cases=lazyUnion(terminalCaseWhenArrivingAtRoot,terminalCaseWhenPreviousExpressionIsSatisfied,recursiveCase);return cases;}\nfunction rootExpr(){return function(ascent){return headKey(ascent)==ROOT_PATH;};}\nfunction statementExpr(lastClause){return function(ascent){var exprMatch=lastClause(ascent);return exprMatch===true?head(ascent):exprMatch;};}\nfunction expressionsReader(exprs,parserGeneratedSoFar,detection){return foldR(function(parserGeneratedSoFar,expr){return expr(parserGeneratedSoFar,detection);},parserGeneratedSoFar,exprs);}\nfunction generateClauseReaderIfTokenFound(tokenDetector,clauseEvaluatorGenerators,jsonPath,parserGeneratedSoFar,onSuccess){var detected=tokenDetector(jsonPath);if(detected){var compiledParser=expressionsReader(clauseEvaluatorGenerators,parserGeneratedSoFar,detected),remainingUnparsedJsonPath=jsonPath.substr(len(detected[0]));return onSuccess(remainingUnparsedJsonPath,compiledParser);}}\nfunction clauseMatcher(tokenDetector,exprs){return partialComplete(generateClauseReaderIfTokenFound,tokenDetector,exprs);}\nvar clauseForJsonPath=lazyUnion(clauseMatcher(pathNodeSyntax,list(capture,duckTypeClause,nameClause,skip1)),clauseMatcher(doubleDotSyntax,list(skipMany)),clauseMatcher(dotSyntax,list()),clauseMatcher(bangSyntax,list(capture,rootExpr)),clauseMatcher(emptySyntax,list(statementExpr)),function(jsonPath){throw Error('\"'+jsonPath+'\" could not be tokenised')});function returnFoundParser(_remainingJsonPath,compiledParser){return compiledParser}\nfunction compileJsonPathToFunction(uncompiledJsonPath,parserGeneratedSoFar){var onFind=uncompiledJsonPath?compileJsonPathToFunction:returnFoundParser;return clauseForJsonPath(uncompiledJsonPath,parserGeneratedSoFar,onFind);}\nreturn function(jsonPath){try{return compileJsonPathToFunction(jsonPath,always);}catch(e){throw Error('Could not compile \"'+jsonPath+'\" because '+e.message);}}});function singleEventPubSub(eventType,newListener,removeListener){var listenerTupleList,listenerList;function hasId(id){return function(tuple){return tuple.id==id;};}\nreturn{on:function(listener,listenerId){var tuple={listener:listener,id:listenerId||listener};if(newListener){newListener.emit(eventType,listener,tuple.id);}\nlistenerTupleList=cons(tuple,listenerTupleList);listenerList=cons(listener,listenerList);return this;},emit:function(){applyEach(listenerList,arguments);},un:function(listenerId){var removed;listenerTupleList=without(listenerTupleList,hasId(listenerId),function(tuple){removed=tuple;});if(removed){listenerList=without(listenerList,function(listener){return listener==removed.listener;});if(removeListener){removeListener.emit(eventType,removed.listener,removed.id);}}},listeners:function(){return listenerList;},hasListener:function(listenerId){var test=listenerId?hasId(listenerId):always;return defined(first(test,listenerTupleList));}};}\nfunction pubSub(){var singles={},newListener=newSingle('newListener'),removeListener=newSingle('removeListener');function newSingle(eventName){return singles[eventName]=singleEventPubSub(eventName,newListener,removeListener);}\nfunction pubSubInstance(eventName){return singles[eventName]||newSingle(eventName);}\n['emit','on','un'].forEach(function(methodName){pubSubInstance[methodName]=varArgs(function(eventName,parameters){apply(parameters,pubSubInstance(eventName)[methodName]);});});return pubSubInstance;}\nvar\n_S=1,NODE_OPENED=_S++,NODE_CLOSED=_S++,NODE_SWAP=_S++,NODE_DROP=_S++,FAIL_EVENT='fail',ROOT_NODE_FOUND=_S++,ROOT_PATH_FOUND=_S++,HTTP_START='start',STREAM_DATA='data',STREAM_END='end',ABORTING=_S++,SAX_KEY=_S++,SAX_VALUE_OPEN=_S++,SAX_VALUE_CLOSE=_S++;function errorReport(statusCode,body,error){try{var jsonBody=JSON.parse(body);}catch(e){}\nreturn{statusCode:statusCode,body:body,jsonBody:jsonBody,thrown:error};}\nfunction patternAdapter(oboeBus,jsonPathCompiler){var predicateEventMap={node:oboeBus(NODE_CLOSED),path:oboeBus(NODE_OPENED)};function emitMatchingNode(emitMatch,node,ascent){var descent=reverseList(ascent);emitMatch(node,listAsArray(tail(map(keyOf,descent))),listAsArray(map(nodeOf,descent)));}\nfunction addUnderlyingListener(fullEventName,predicateEvent,compiledJsonPath){var emitMatch=oboeBus(fullEventName).emit;predicateEvent.on(function(ascent){var maybeMatchingMapping=compiledJsonPath(ascent);if(maybeMatchingMapping!==false){emitMatchingNode(emitMatch,nodeOf(maybeMatchingMapping),ascent);}},fullEventName);oboeBus('removeListener').on(function(removedEventName){if(removedEventName==fullEventName){if(!oboeBus(removedEventName).listeners()){predicateEvent.un(fullEventName);}}});}\noboeBus('newListener').on(function(fullEventName){var match=/(node|path):(.*)/.exec(fullEventName);if(match){var predicateEvent=predicateEventMap[match[1]];if(!predicateEvent.hasListener(fullEventName)){addUnderlyingListener(fullEventName,predicateEvent,jsonPathCompiler(match[2]));}}})}\nfunction instanceApi(oboeBus,contentSource){var oboeApi,fullyQualifiedNamePattern=/^(node|path):./,rootNodeFinishedEvent=oboeBus(ROOT_NODE_FOUND),emitNodeDrop=oboeBus(NODE_DROP).emit,emitNodeSwap=oboeBus(NODE_SWAP).emit,addListener=varArgs(function(eventId,parameters){if(oboeApi[eventId]){apply(parameters,oboeApi[eventId]);}else{var event=oboeBus(eventId),listener=parameters[0];if(fullyQualifiedNamePattern.test(eventId)){addForgettableCallback(event,listener);}else{event.on(listener);}}\nreturn oboeApi;}),removeListener=function(eventId,p2,p3){if(eventId=='done'){rootNodeFinishedEvent.un(p2);}else if(eventId=='node'||eventId=='path'){oboeBus.un(eventId+':'+p2,p3);}else{var listener=p2;oboeBus(eventId).un(listener);}\nreturn oboeApi;};function addProtectedCallback(eventName,callback){oboeBus(eventName).on(protectedCallback(callback),callback);return oboeApi;}\nfunction addForgettableCallback(event,callback,listenerId){listenerId=listenerId||callback;var safeCallback=protectedCallback(callback);event.on(function(){var discard=false;oboeApi.forget=function(){discard=true;};apply(arguments,safeCallback);delete oboeApi.forget;if(discard){event.un(listenerId);}},listenerId);return oboeApi;}\nfunction protectedCallback(callback){return function(){try{return callback.apply(oboeApi,arguments);}catch(e){setTimeout(function(){throw new Error(e.message);});}}}\nfunction fullyQualifiedPatternMatchEvent(type,pattern){return oboeBus(type+':'+pattern);}\nfunction wrapCallbackToSwapNodeIfSomethingReturned(callback){return function(){var returnValueFromCallback=callback.apply(this,arguments);if(defined(returnValueFromCallback)){if(returnValueFromCallback==oboe.drop){emitNodeDrop();}else{emitNodeSwap(returnValueFromCallback);}}}}\nfunction addSingleNodeOrPathListener(eventId,pattern,callback){var effectiveCallback;if(eventId=='node'){effectiveCallback=wrapCallbackToSwapNodeIfSomethingReturned(callback);}else{effectiveCallback=callback;}\naddForgettableCallback(fullyQualifiedPatternMatchEvent(eventId,pattern),effectiveCallback,callback);}\nfunction addMultipleNodeOrPathListeners(eventId,listenerMap){for(var pattern in listenerMap){addSingleNodeOrPathListener(eventId,pattern,listenerMap[pattern]);}}\nfunction addNodeOrPathListenerApi(eventId,jsonPathOrListenerMap,callback){if(isString(jsonPathOrListenerMap)){addSingleNodeOrPathListener(eventId,jsonPathOrListenerMap,callback);}else{addMultipleNodeOrPathListeners(eventId,jsonPathOrListenerMap);}\nreturn oboeApi;}\noboeBus(ROOT_PATH_FOUND).on(function(rootNode){oboeApi.root=functor(rootNode);});oboeBus(HTTP_START).on(function(_statusCode,headers){oboeApi.header=function(name){return name?headers[name]:headers;}});return oboeApi={on:addListener,addListener:addListener,removeListener:removeListener,emit:oboeBus.emit,node:partialComplete(addNodeOrPathListenerApi,'node'),path:partialComplete(addNodeOrPathListenerApi,'path'),done:partialComplete(addForgettableCallback,rootNodeFinishedEvent),start:partialComplete(addProtectedCallback,HTTP_START),fail:oboeBus(FAIL_EVENT).on,abort:oboeBus(ABORTING).emit,write:oboeBus(STREAM_DATA).emit,finish:oboeBus(STREAM_END).emit,header:noop,root:noop,source:contentSource};}\nfunction wire(httpMethodName,contentSource,body,headers,withCredentials){var oboeBus=pubSub();if(contentSource){streamingHttp(oboeBus,httpTransport(),httpMethodName,contentSource,body,headers,withCredentials);}\nclarinet(oboeBus);ascentManager(oboeBus,incrementalContentBuilder(oboeBus));patternAdapter(oboeBus,jsonPathCompiler);return instanceApi(oboeBus,contentSource);}\nfunction applyDefaults(passthrough,url,httpMethodName,body,headers,withCredentials,cached){headers=headers?JSON.parse(JSON.stringify(headers)):{};if(body){if(!isString(body)){body=JSON.stringify(body);headers['Content-Type']=headers['Content-Type']||'application/json';}}else{body=null;}\nfunction modifiedUrl(baseUrl,cached){if(cached===false){if(baseUrl.indexOf('?')==-1){baseUrl+='?';}else{baseUrl+='&';}\nbaseUrl+='_='+new Date().getTime();}\nreturn baseUrl;}\nreturn passthrough(httpMethodName||'GET',modifiedUrl(url,cached),body,headers,withCredentials||false);}\nfunction oboe(arg1){var nodeStreamMethodNames=list('resume','pause','pipe'),isStream=partialComplete(hasAllProperties,nodeStreamMethodNames);if(arg1){if(isStream(arg1)||isString(arg1)){return applyDefaults(wire,arg1);}else{return applyDefaults(wire,arg1.url,arg1.method,arg1.body,arg1.headers,arg1.withCredentials,arg1.cached);}}else{return wire();}}\noboe.drop=function(){return oboe.drop;};if(typeof define===\"function\"&&define.amd){define(\"oboe\",[],function(){return oboe;});}else if(typeof exports==='object'){module.exports=oboe;}else{window.oboe=oboe;}})((function(){try{return window;}catch(e){return self;}}()),Object,Array,Error,JSON);'use strict';if(tr.isVinn){global.oboe=global.window.oboe;global.window=undefined;}else if(tr.isNode){global.window=undefined;const path=HTMLImportsLoader.hrefToAbsolutePath('/oboe/dist/oboe-node.js');global.oboe=require(path);}'use strict';tr.exportTo('tr.e.importer',function(){const STRING_ID_SUFFIX='_sid';const PLURAL_STRING_ID_SUFFIX='_sids';function isStringReference(s){return s.endsWith(STRING_ID_SUFFIX)||s.endsWith(PLURAL_STRING_ID_SUFFIX);}\nfunction getStringReferenceName(name){if(name.endsWith(PLURAL_STRING_ID_SUFFIX)){return name.slice(0,-PLURAL_STRING_ID_SUFFIX.length);}\nreturn name.slice(0,-STRING_ID_SUFFIX.length);}\nfunction deferenceStrings(idToString,o){const clone=Object.assign({},o);for(const[key,value]of Object.entries(clone)){if(isStringReference(key)){const name=getStringReferenceName(key);clone[name]=idToString(value);}}\nreturn clone;}\nfunction singularize(word){if(word.endsWith('s')){return word.slice(0,-1);}\nreturn word;}\nfunction getMetadataPairs(dataJson){const isMetadata=v=>typeof v!=='object'||Array.isArray(v);const pairs=Object.entries(dataJson);const metadataPairs=pairs.filter(([_,v])=>isMetadata(v));return metadataPairs;}\nfunction getGroupPairs(dataJson){const pairs=Object.entries(dataJson);const nonMapPairs=pairs.filter(([k,_])=>k!=='maps');const groupPairs=nonMapPairs.filter(([_,v])=>typeof v==='object');return groupPairs;}\nfunction createMap(mapJson){const map=new Map();for(const entry of mapJson){if(entry.id===undefined){throw new Error('Missing required key \"id\" in streaming event.');}\nmap.set(entry.id,entry);}\nreturn map;}\nfunction createMaps(mapsJson){const maps=new Map();for(const[name,mapJson]of Object.entries(mapsJson)){maps.set(name,createMap(mapJson));}\nreturn maps;}\nfunction createGroup(groupJson,opt_startTime){const entries=[];const n=Object.values(groupJson)[0].length;for(let i=0;i<n;i++){const entry={};for(const name in groupJson){entry[name]=groupJson[name][i];}\nentries.push(entry);}\nconst timeDelta=groupJson.timeDelta;if(opt_startTime===undefined&&timeDelta!==undefined){throw new Error('Missing required key \"startTime\" in streaming event.');}\nif(opt_startTime){let delta=0;for(const entry of entries){delta+=entry.timeDelta?entry.timeDelta:0;entry.time=opt_startTime+delta;}}\nreturn entries;}\nfunction createGroups(groupsJson,opt_startTime){const groups=new Map();for(const[name,groupJson]of Object.entries(groupsJson)){groups.set(name,createGroup(groupJson,opt_startTime));}\nreturn groups;}\nfunction createMetadata(metadataPairs){const metadata=new Map();for(const[name,value]of metadataPairs){metadata.set(name,value);}\nif(metadata.get('version')===undefined){throw new Error('Missing required key \"version\" in streaming event.');}\nreturn metadata;}\nclass ProfilingDictionaryReader{constructor(opt_metadata,opt_maps,opt_groups,opt_parent){this.metadata=opt_metadata||new Map();this.maps=opt_maps||new Map();this.groups=opt_groups||new Map();this.parent_=opt_parent||undefined;this.inflated_=undefined;this.raw_=undefined;this.boundGetString_=this.getString.bind(this);this.deferenceStrings_=o=>deferenceStrings(this.boundGetString_,o);}\nstatic empty(){return new ProfilingDictionaryReader();}\nget parent(){return this.parent_;}\nget raw(){if(this.raw_)return this.raw_;this.raw_={};for(const[name,group]of this.groups.entries()){this.raw_[name]=group;}\nreturn this.raw_;}\nget inflated(){if(this.inflated_)return this.inflated_;this.inflated_={};for(const[name,group]of this.groups.entries()){this.inflated_[name]=this.inflateGroup(group);}\nreturn this.inflated_;}\ngetNewMap(name){return this.maps.get(name)||new Map();}\ngetMapValue(mapName,id){let value=this.getNewMap(mapName).get(id);if(value===undefined&&this.parent){value=this.parent.getMapValue(mapName,id);}\nreturn value;}\ngetString(id){const value=this.getMapValue('strings',id);if(value===undefined)return undefined;return value.string;}\nhasMap(name){if(this.maps.has(name))return true;if(this.parent===undefined)return false;return this.parent.hasMap(name);}\ninflateGroup(group){return group.map(this.inflateEntry.bind(this));}\ninflateEntry(entry){const inflatedEntry={};for(const[name,value]of Object.entries(entry)){let inflatedValue;if(this.hasMap(name)){const id=value;inflatedValue=this.deferenceStrings_(this.getMapValue(name,id));}else{inflatedValue=value;}\ninflatedEntry[singularize(name)]=inflatedValue;}\nreturn this.deferenceStrings_(inflatedEntry);}\nexpandData(data){const mapsJson=data.maps||{};const groupsJson=data.allocators||{};const metadataPairs=getMetadataPairs(data);const metadata=createMetadata(metadataPairs);const opt_startTime=metadata.get('startTime');const maps=createMaps(mapsJson);const groups=createGroups(groupsJson,opt_startTime);return new ProfilingDictionaryReader(metadata,maps,groups,this);}\nexpandEvent(event){return this.expandData(event.args.data);}}\nreturn{ProfilingDictionaryReader,singularize,deferenceStringsForTest:deferenceStrings,};});'use strict';tr.exportTo('tr.model.source_info',function(){function SourceInfo(file,opt_line,opt_column){this.file_=file;this.line_=opt_line||-1;this.column_=opt_column||-1;}\nSourceInfo.prototype={get file(){return this.file_;},get line(){return this.line_;},get column(){return this.column_;},get domain(){if(!this.file_)return undefined;const domain=this.file_.match(/(.*:\\/\\/[^:\\/]*)/i);return domain?domain[1]:undefined;},toString(){let str='';if(this.file_){str+=this.file_;}\nif(this.line_>0){str+=':'+this.line_;}\nif(this.column_>0){str+=':'+this.column_;}\nreturn str;}};return{SourceInfo,};});'use strict';tr.exportTo('tr.model.source_info',function(){function JSSourceInfo(file,line,column,isNative,scriptId,state){tr.model.source_info.SourceInfo.call(this,file,line,column);this.isNative_=isNative;this.scriptId_=scriptId;this.state_=state;}\nJSSourceInfo.prototype={__proto__:tr.model.source_info.SourceInfo.prototype,get state(){return this.state_;},get isNative(){return this.isNative_;},get scriptId(){return this.scriptId_;},toString(){const str=this.isNative_?'[native v8] ':'';return str+\ntr.model.source_info.SourceInfo.prototype.toString.call(this);}};const JSSourceState={COMPILED:'compiled',OPTIMIZABLE:'optimizable',OPTIMIZED:'optimized',UNKNOWN:'unknown',};return{JSSourceInfo,JSSourceState,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeEntry(address,size,name,scriptId){this.id_=tr.b.GUID.allocateSimple();this.address_=address;this.size_=size;const rePrefix=/^(\\w*:)?([*~]?)(.*)$/m;const tokens=rePrefix.exec(name);const prefix=tokens[1];let state=tokens[2];const body=tokens[3];if(state==='*'){state=tr.model.source_info.JSSourceState.OPTIMIZED;}else if(state==='~'){state=tr.model.source_info.JSSourceState.OPTIMIZABLE;}else if(state===''){state=tr.model.source_info.JSSourceState.COMPILED;}else{state=tr.model.source_info.JSSourceState.UNKNOWN;}\nlet rawName;let rawUrl;if(prefix==='Script:'){rawName='';rawUrl=body;}else{const spacePos=body.lastIndexOf(' ');rawName=spacePos!==-1?body.substr(0,spacePos):body;rawUrl=spacePos!==-1?body.substr(spacePos+1):'';}\nfunction splitLineAndColumn(url){const lineColumnRegEx=/(?::(\\d+))?(?::(\\d+))?$/;const lineColumnMatch=lineColumnRegEx.exec(url);let lineNumber;let columnNumber;if(typeof(lineColumnMatch[1])==='string'){lineNumber=parseInt(lineColumnMatch[1],10);lineNumber=isNaN(lineNumber)?undefined:lineNumber-1;}\nif(typeof(lineColumnMatch[2])==='string'){columnNumber=parseInt(lineColumnMatch[2],10);columnNumber=isNaN(columnNumber)?undefined:columnNumber-1;}\nreturn{url:url.substring(0,url.length-lineColumnMatch[0].length),lineNumber,columnNumber};}\nconst nativeSuffix=' native';const isNative=rawName.endsWith(nativeSuffix);this.name_=isNative?rawName.slice(0,-nativeSuffix.length):rawName;const urlData=splitLineAndColumn(rawUrl);const url=urlData.url||'';const line=urlData.lineNumber||0;const column=urlData.columnNumber||0;this.sourceInfo_=new tr.model.source_info.JSSourceInfo(url,line,column,isNative,scriptId,state);}\nTraceCodeEntry.prototype={get id(){return this.id_;},get sourceInfo(){return this.sourceInfo_;},get name(){return this.name_;},set address(address){this.address_=address;},get address(){return this.address_;},set size(size){this.size_=size;},get size(){return this.size_;}};return{TraceCodeEntry,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeMap(){this.banks_=new Map();}\nTraceCodeMap.prototype={addEntry(addressHex,size,name,scriptId){const entry=new tr.e.importer.TraceCodeEntry(this.getAddress_(addressHex),size,name,scriptId);this.addEntry_(addressHex,entry);},moveEntry(oldAddressHex,newAddressHex,size){const entry=this.getBank_(oldAddressHex).removeEntry(this.getAddress_(oldAddressHex));if(!entry)return;entry.address=this.getAddress_(newAddressHex);entry.size=size;this.addEntry_(newAddressHex,entry);},lookupEntry(addressHex){return this.getBank_(addressHex).lookupEntry(this.getAddress_(addressHex));},addEntry_(addressHex,entry){this.getBank_(addressHex).addEntry(entry);},getAddress_(addressHex){const bankSizeHexDigits=13;addressHex=addressHex.slice(2);return parseInt(addressHex.slice(-bankSizeHexDigits),16);},getBank_(addressHex){addressHex=addressHex.slice(2);const bankSizeHexDigits=13;const maxHexDigits=16;const bankName=addressHex.slice(-maxHexDigits,-bankSizeHexDigits);let bank=this.banks_.get(bankName);if(!bank){bank=new TraceCodeBank();this.banks_.set(bankName,bank);}\nreturn bank;}};function TraceCodeBank(){this.entries_=[];}\nTraceCodeBank.prototype={removeEntry(address){if(this.entries_.length===0)return undefined;const index=tr.b.findLowIndexInSortedArray(this.entries_,function(entry){return entry.address;},address);const entry=this.entries_[index];if(!entry||entry.address!==address)return undefined;this.entries_.splice(index,1);return entry;},lookupEntry(address){const index=tr.b.findFirstTrueIndexInSortedArray(this.entries_,e=>(address<e.address))-1;const entry=this.entries_[index];return entry&&address<entry.address+entry.size?entry:undefined;},addEntry(newEntry){if(this.entries_.length===0){this.entries_.push(newEntry);}\nconst endAddress=newEntry.address+newEntry.size;const lastIndex=tr.b.findLowIndexInSortedArray(this.entries_,function(entry){return entry.address;},endAddress);let index;for(index=lastIndex-1;index>=0;--index){const entry=this.entries_[index];const entryEndAddress=entry.address+entry.size;if(entryEndAddress<=newEntry.address)break;}\n++index;this.entries_.splice(index,lastIndex-index,newEntry);}};return{TraceCodeMap,};});'use strict';tr.exportTo('tr.e.measure',function(){const AsyncSlice=tr.model.AsyncSlice;const MEASURE_NAME_REGEX=/([^\\/:]+):(.*?)(?:\\/([A-Za-z0-9+/]+=?=?))?$/;function MeasureAsyncSlice(){this.groupTitle_='Ungrouped Measure';const matched=MEASURE_NAME_REGEX.exec(arguments[1]);if(matched!==null){arguments[1]=matched[2];this.groupTitle_=matched[1];}\nAsyncSlice.apply(this,arguments);}\nMeasureAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){return this.groupTitle_;},get title(){return this.title_;},set title(title){this.title_=title;}};AsyncSlice.subTypes.register(MeasureAsyncSlice,{categoryParts:['blink.user_timing']});return{MEASURE_NAME_REGEX,MeasureAsyncSlice,};});'use strict';tr.exportTo('tr.importer',function(){function ContextProcessor(model){this.model_=model;this.activeContexts_=[];this.stackPerType_={};this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.seenSnapshots_={};}\nContextProcessor.prototype={enterContext(contextType,scopedId){const newActiveContexts=[this.getOrCreateContext_(contextType,scopedId),];for(const oldContext of this.activeContexts_){if(oldContext.type===contextType){this.pushContext_(oldContext);}else{newActiveContexts.push(oldContext);}}\nthis.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},leaveContext(contextType,scopedId){this.leaveContextImpl_(context=>context.type===contextType&&context.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},destroyContext(scopedId){for(const stack of Object.values(this.stackPerType_)){let newLength=0;for(let i=0;i<stack.length;++i){if(stack[i].snapshot.scope!==scopedId.scope||stack[i].snapshot.idRef!==scopedId.id){stack[newLength++]=stack[i];}}\nstack.length=newLength;}\nthis.leaveContextImpl_(context=>context.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},leaveContextImpl_(predicate){const newActiveContexts=[];for(const oldContext of this.activeContexts_){if(predicate(oldContext)){const previousContext=this.popContext_(oldContext.type);if(previousContext){newActiveContexts.push(previousContext);}}else{newActiveContexts.push(oldContext);}}\nthis.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},getOrCreateContext_(contextType,scopedId){const context={type:contextType,snapshot:{scope:scopedId.scope,idRef:scopedId.id}};const key=this.getContextKey_(context);if(key in this.contextCache_){return this.contextCache_[key];}\nthis.contextCache_[key]=context;const snapshotKey=this.getSnapshotKey_(scopedId);this.seenSnapshots_[snapshotKey]=true;return context;},pushContext_(context){if(!(context.type in this.stackPerType_)){this.stackPerType_[context.type]=[];}\nthis.stackPerType_[context.type].push(context);},popContext_(contextType){if(!(contextType in this.stackPerType_)){return undefined;}\nreturn this.stackPerType_[contextType].pop();},getContextKey_(context){return[context.type,context.snapshot.scope,context.snapshot.idRef].join('\\x00');},getSnapshotKey_(scopedId){return[scopedId.scope,scopedId.idRef].join('\\x00');},get activeContexts(){if(this.cachedEntryForActiveContexts_===undefined){let key=[];for(const context of this.activeContexts_){key.push(this.getContextKey_(context));}\nkey.sort();key=key.join('\\x00');if(key in this.contextSetCache_){this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}else{this.activeContexts_.sort(function(a,b){const keyA=this.getContextKey_(a);const keyB=this.getContextKey_(b);if(keyA<keyB){return-1;}\nif(keyA>keyB){return 1;}\nreturn 0;}.bind(this));this.contextSetCache_[key]=Object.freeze(this.activeContexts_);this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}}\nreturn this.cachedEntryForActiveContexts_;},invalidateContextCacheForSnapshot(scopedId){const snapshotKey=this.getSnapshotKey_(scopedId);if(!(snapshotKey in this.seenSnapshots_))return;this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.activeContexts_=this.activeContexts_.map(function(context){if(context.snapshot.scope!==scopedId.scope||context.snapshot.idRef!==scopedId.id){return context;}\nreturn{type:context.type,snapshot:{scope:context.snapshot.scope,idRef:context.snapshot.idRef}};});this.seenSnapshots_={};},};return{ContextProcessor,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function RectAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;}\nRectAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,draw(ctx){const dt=this.viewport_.currentDisplayTransform;const startCoords=this.annotation_.startLocation.toViewCoordinates(this.viewport_);const endCoords=this.annotation_.endLocation.toViewCoordinates(this.viewport_);let startY=startCoords.viewY-ctx.canvas.getBoundingClientRect().top;const sizeY=endCoords.viewY-startCoords.viewY;if(startY+sizeY<0){startY=sizeY;}else if(startY<0){startY=0;}\nctx.fillStyle=this.annotation_.fillStyle;ctx.fillRect(startCoords.viewX,startY,endCoords.viewX-startCoords.viewX,sizeY);}};return{RectAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function RectAnnotation(start,end){tr.model.Annotation.apply(this,arguments);this.startLocation_=start;this.endLocation_=end;this.fillStyle='rgba(255, 180, 0, 0.3)';}\nRectAnnotation.fromDict=function(dict){const args=dict.args;const startLoc=new tr.model.Location(args.start.xWorld,args.start.yComponents);const endLoc=new tr.model.Location(args.end.xWorld,args.end.yComponents);return new tr.model.RectAnnotation(startLoc,endLoc);};RectAnnotation.prototype={__proto__:tr.model.Annotation.prototype,get startLocation(){return this.startLocation_;},get endLocation(){return this.endLocation_;},toDict(){return{typeName:'rect',args:{start:this.startLocation.toDict(),end:this.endLocation.toDict()}};},createView_(viewport){return new tr.ui.annotations.RectAnnotationView(viewport,this);}};tr.model.Annotation.register(RectAnnotation,{typeName:'rect'});return{RectAnnotation,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function CommentBoxAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;this.textArea_=undefined;this.styleWidth=250;this.styleHeight=50;this.fontSize=10;this.rightOffset=50;this.topOffset=25;}\nCommentBoxAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,removeTextArea(){Polymer.dom(Polymer.dom(this.textArea_).parentNode).removeChild(this.textArea_);},draw(ctx){const coords=this.annotation_.location.toViewCoordinates(this.viewport_);if(coords.viewX<0){if(this.textArea_){this.textArea_.style.visibility='hidden';}\nreturn;}\nif(!this.textArea_){this.textArea_=document.createElement('textarea');this.textArea_.style.position='absolute';this.textArea_.readOnly=true;this.textArea_.value=this.annotation_.text;this.textArea_.style.zIndex=1;Polymer.dom(Polymer.dom(ctx.canvas).parentNode).appendChild(this.textArea_);}\nthis.textArea_.style.width=this.styleWidth+'px';this.textArea_.style.height=this.styleHeight+'px';this.textArea_.style.fontSize=this.fontSize+'px';this.textArea_.style.visibility='visible';this.textArea_.style.left=coords.viewX+ctx.canvas.getBoundingClientRect().left+\nthis.rightOffset+'px';this.textArea_.style.top=coords.viewY-ctx.canvas.getBoundingClientRect().top-\nthis.topOffset+'px';ctx.strokeStyle='rgb(0, 0, 0)';ctx.lineWidth=2;ctx.beginPath();tr.ui.b.drawLine(ctx,coords.viewX,coords.viewY-ctx.canvas.getBoundingClientRect().top,coords.viewX+this.rightOffset,coords.viewY-this.topOffset-\nctx.canvas.getBoundingClientRect().top);ctx.stroke();}};return{CommentBoxAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function CommentBoxAnnotation(location,text){tr.model.Annotation.apply(this,arguments);this.location=location;this.text=text;}\nCommentBoxAnnotation.fromDict=function(dict){const args=dict.args;const location=new tr.model.Location(args.location.xWorld,args.location.yComponents);return new tr.model.CommentBoxAnnotation(location,args.text);};CommentBoxAnnotation.prototype={__proto__:tr.model.Annotation.prototype,onRemove(){this.view_.removeTextArea();},toDict(){return{typeName:'comment_box',args:{text:this.text,location:this.location.toDict()}};},createView_(viewport){return new tr.ui.annotations.CommentBoxAnnotationView(viewport,this);}};tr.model.Annotation.register(CommentBoxAnnotation,{typeName:'comment_box'});return{CommentBoxAnnotation,};});'use strict';tr.exportTo('tr.model',function(){function ScopedId(scope,id,pid){if(scope===undefined){throw new Error('Scope should be defined. Use \\''+\ntr.model.OBJECT_DEFAULT_SCOPE+'\\' as the default scope.');}\nthis.scope=scope;this.id=id;this.pid=pid;}\nScopedId.prototype={toString(){const pidStr=this.pid===undefined?'':'pid: '+this.pid+', ';return'{'+pidStr+'scope: '+this.scope+', id: '+this.id+'}';},toStringWithDelimiter(delim){return(this.pid===undefined?'':this.pid)+delim+\nthis.scope+delim+this.id;}};return{ScopedId,};});'use strict';tr.exportTo('tr.e.importer',function(){const Base64=tr.b.Base64;const deepCopy=tr.b.deepCopy;const ColorScheme=tr.b.ColorScheme;const HeapDumpTraceEventImporter=tr.e.importer.HeapDumpTraceEventImporter;const LegacyHeapDumpTraceEventImporter=tr.e.importer.LegacyHeapDumpTraceEventImporter;const StreamingEventExpander=tr.e.importer.StreamingEventExpander;const ProfilingDictionaryReader=tr.e.importer.ProfilingDictionaryReader;const MEASURE_NAME_REGEX=tr.e.measure.MEASURE_NAME_REGEX;function getEventColor(event,opt_customName){if(event.cname){return ColorScheme.getColorIdForReservedName(event.cname);}else if(opt_customName||event.name){return ColorScheme.getColorIdForGeneralPurposeString(opt_customName||event.name);}}\nfunction isLegacyChromeClockSyncEvent(event){return event.name!==undefined&&event.name.startsWith(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX)&&((event.ph==='S')||(event.ph==='F'));}\nconst PRODUCER='producer';const CONSUMER='consumer';const STEP='step';const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER=[undefined,BACKGROUND,LIGHT,DETAILED];const GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX='global/';const LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX='ClockSyncEvent.';const BYTE_STAT_NAME_MAP={'pc':'privateCleanResident','pd':'privateDirtyResident','sc':'sharedCleanResident','sd':'sharedDirtyResident','pss':'proportionalResident','sw':'swapped'};const WEAK_MEMORY_ALLOCATOR_DUMP_FLAG=1<<0;const OBJECT_TYPE_NAME_PATTERNS=[{prefix:'const char *WTF::getStringWithTypeName() [T = ',suffix:']'},{prefix:'const char* WTF::getStringWithTypeName() [with T = ',suffix:']'},{prefix:'const char *__cdecl WTF::getStringWithTypeName<',suffix:'>(void)'}];const SUBTRACE_FIELDS=new Set(['powerTraceAsString','systemTraceEvents','androidProcessDump',]);const NON_METADATA_FIELDS=new Set(['displayTimeUnit','samples','stackFrames','traceAnnotations','traceEvents',...SUBTRACE_FIELDS]);function TraceEventImporter(model,eventData){this.hasEvents_=undefined;this.importPriority=1;this.model_=model;this.events_=undefined;this.sampleEvents_=undefined;this.stackFrameEvents_=undefined;this.stackFrameTree_=new tr.model.ProfileTree();this.subtraces_=[];this.eventsWereFromString_=false;this.softwareMeasuredCpuCount_=undefined;this.allAsyncEvents_=[];this.allFlowEvents_=[];this.allObjectEvents_=[];this.contextProcessorPerThread={};this.traceEventSampleStackFramesByName_={};this.v8ProcessCodeMaps_={};this.v8ProcessRootStackFrame_={};this.v8SamplingData_=[];this.profileTrees_=new Map();this.profileInfo_=new Map();this.legacyChromeClockSyncStartEvent_=undefined;this.legacyChromeClockSyncFinishEvent_=undefined;this.allMemoryDumpEvents_={};this.heapProfileExpander=new ProfilingDictionaryReader();this.objectTypeNameMap_={};this.clockDomainId_=tr.model.ClockDomainId.UNKNOWN_CHROME_LEGACY;this.toModelTime_=undefined;if(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();if(eventData[0]==='['){eventData=eventData.replace(/\\s*,\\s*$/,'');if(eventData[eventData.length-1]!==']'){eventData=eventData+']';}}\nthis.events_=JSON.parse(eventData);this.eventsWereFromString_=true;}else{this.events_=eventData;}\nif(this.events_.traceEvents){const container=this.events_;this.events_=this.events_.traceEvents;for(const subtraceField of SUBTRACE_FIELDS){if(container[subtraceField]){this.storeSubtrace_(container[subtraceField]);}}\nthis.storeSamples_(container.samples);this.storeStackFrames_(container.stackFrames);this.storeDisplayTimeUnit_(container.displayTimeUnit);this.storeTraceAnnotations_(container.traceAnnotations);this.storeMetadata_(container);}else if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',function(e){return oboe.drop;}).node('!.powerTraceAsString',this.storeSubtrace_.bind(this)).node('!.systemTraceEvents',this.storeSubtrace_.bind(this)).node('!.samples',this.storeSamples_.bind(this)).node('!.stackFrames',this.storeStackFrames_.bind(this)).node('!.displayTimeUnit',this.storeDisplayTimeUnit_.bind(this)).node('!.traceAnnotations',this.storeTraceAnnotations_.bind(this)).done(this.storeMetadata_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}}\nTraceEventImporter.canImport=function(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;}\nif(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();return eventData[0]==='{'||eventData[0]==='[';}\nif(eventData instanceof Array&&eventData.length&&eventData[0].ph){return true;}\nif(eventData.traceEvents){if(eventData.traceEvents instanceof Array){if(eventData.traceEvents.length&&eventData.traceEvents[0].ph){return true;}\nif(eventData.samples&&eventData.samples.length&&eventData.stackFrames!==undefined){return true;}}}\nreturn false;};TraceEventImporter.scopedIdForEvent_=function(event){const scope=event.scope||tr.model.OBJECT_DEFAULT_SCOPE;let pid=undefined;if(event.id!==undefined){if(event.id2!==undefined){throw new Error('Event has both id and id2');}\npid=tr.model.LOCAL_ID_PHASES.has(event.ph)?event.pid:undefined;return new tr.model.ScopedId(scope,event.id,pid);}else if(event.id2!==undefined){if(event.id2.global!==undefined){return new tr.model.ScopedId(scope,event.id2.global);}else if(event.id2.local!==undefined){return new tr.model.ScopedId(scope,event.id2.local,event.pid);}\nthrow new Error('Event that uses id2 must have either a global or local ID');}\nreturn undefined;};TraceEventImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'TraceEventImporter';},extractSubtraces(){const subtraces=this.subtraces_;this.subtraces_=[];return subtraces;},deepCopyIfNeeded_(obj){if(obj===undefined)obj={};if(this.eventsWereFromString_)return obj;return deepCopy(obj);},deepCopyAlways_(obj){if(obj===undefined)obj={};return deepCopy(obj);},processAsyncEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allAsyncEvents_.push({sequenceNumber:this.allAsyncEvents_.length,event,thread});},processFlowEvent(event,opt_slice){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allFlowEvents_.push({refGuid:tr.b.GUID.getLastSimpleGuid(),sequenceNumber:this.allFlowEvents_.length,event,slice:opt_slice,thread});},processCounterEvent(event){let ctrName;if(event.id!==undefined){ctrName=event.name+'['+event.id+']';}else{ctrName=event.name;}\nconst ctr=this.model_.getOrCreateProcess(event.pid).getOrCreateCounter(event.cat,ctrName);const reservedColorId=event.cname?getEventColor(event):undefined;if(ctr.numSeries===0){for(const seriesName in event.args){const colorId=reservedColorId||getEventColor(event,ctr.name+'.'+seriesName);ctr.addSeries(new tr.model.CounterSeries(seriesName,colorId));}\nif(ctr.numSeries===0){this.model_.importWarning({type:'counter_parse_error',message:'Expected counter '+event.name+' to have at least one argument to use as a value.'});delete ctr.parent.counters[ctr.name];return;}}\nconst ts=this.toModelTimeFromUs_(event.ts);ctr.series.forEach(function(series){const val=event.args[series.name]?event.args[series.name]:0;series.addCounterSample(ts,val);});},processObjectEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allObjectEvents_.push({sequenceNumber:this.allObjectEvents_.length,event,thread});if(thread.guid in this.contextProcessorPerThread){const processor=this.contextProcessorPerThread[thread.guid];const scopedId=TraceEventImporter.scopedIdForEvent_(event);if(event.ph==='D'){processor.destroyContext(scopedId);}\nprocessor.invalidateContextCacheForSnapshot(scopedId);}},processContextEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(!(thread.guid in this.contextProcessorPerThread)){this.contextProcessorPerThread[thread.guid]=new tr.importer.ContextProcessor(this.model_);}\nconst scopedId=TraceEventImporter.scopedIdForEvent_(event);const contextType=event.name;const processor=this.contextProcessorPerThread[thread.guid];if(event.ph==='('){processor.enterContext(contextType,scopedId);}else if(event.ph===')'){processor.leaveContext(contextType,scopedId);}else{this.model_.importWarning({type:'unknown_context_phase',message:'Unknown context event phase: '+event.ph+'.'});}},setContextsFromThread_(thread,slice){if(thread.guid in this.contextProcessorPerThread){slice.contexts=this.contextProcessorPerThread[thread.guid].activeContexts;}},processDurationEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);const ts=this.toModelTimeFromUs_(event.ts);if(event.dur===0&&!thread.sliceGroup.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'duration_parse_error',message:'Timestamps are moving backward.'});return;}\nif(event.ph==='B'){const slice=thread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);this.setContextsFromThread_(thread,slice);}else if(event.ph==='I'||event.ph==='i'||event.ph==='R'){if(event.s!==undefined&&event.s!=='t'){throw new Error('This should never happen');}\nthread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);const slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts));slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=undefined;}else{if(!thread.sliceGroup.openSliceCount){this.model_.importWarning({type:'duration_parse_error',message:'E phase event without a matching B phase event.'});return;}\nconst slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts),getEventColor(event));if(event.name&&slice.title!==event.name){this.model_.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+\nslice.title+' in openSlice, and is '+\nevent.name+' in endSlice'});}\nslice.endStackFrame=this.getStackFrameForEvent_(event);this.mergeArgsInto_(slice.args,event.args,slice.title);}},mergeArgsInto_(dstArgs,srcArgs,eventName){for(const arg in srcArgs){if(dstArgs[arg]!==undefined){this.model_.importWarning({type:'arg_merge_error',message:'Different phases of '+eventName+' provided values for argument '+arg+'.'+' The last provided value will be used.'});}\ndstArgs[arg]=this.deepCopyIfNeeded_(srcArgs[arg]);}},processCompleteEvent(event){if(event.cat!==undefined&&event.cat.indexOf('trace_event_overhead')>-1){return undefined;}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(event.flow_out){if(event.flow_in){event.flowPhase=STEP;}else{event.flowPhase=PRODUCER;}}else if(event.flow_in){event.flowPhase=CONSUMER;}\nconst slice=thread.sliceGroup.pushCompleteSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.durationFromUs_(event.dur),this.maybeToModelTimeFromUs_(event.tts),this.durationFromUs_(event.tdur),this.deepCopyIfNeeded_(event.args),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=this.getStackFrameForEvent_(event,true);this.setContextsFromThread_(thread,slice);return slice;},processJitCodeEvent(event){if(this.v8ProcessCodeMaps_[event.pid]===undefined){this.v8ProcessCodeMaps_[event.pid]=new tr.e.importer.TraceCodeMap();}\nconst map=this.v8ProcessCodeMaps_[event.pid];const data=event.args.data;if(event.name==='JitCodeMoved'){map.moveEntry(data.code_start,data.new_code_start,data.code_len);}else{map.addEntry(data.code_start,data.code_len,data.name,data.script_id);}},processMetadataEvent(event){if(event.name==='JitCodeAdded'||event.name==='JitCodeMoved'){this.v8SamplingData_.push(event);return;}\nif(event.argsStripped)return;if(event.name==='process_name'){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.args.name;}else if(event.name==='process_labels'){const process=this.model_.getOrCreateProcess(event.pid);const stackFrames=event.args.stackFrames;if(event.args.labels===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No labels found in a \\''+event.name+'\\' metadata event'});}else{const labels=event.args.labels.split(',');for(let i=0;i<labels.length;i++){process.addLabelIfNeeded(labels[i]);}}}else if(event.name==='process_uptime_seconds'){const process=this.model_.getOrCreateProcess(event.pid);process.uptime_seconds=event.args.uptime;}else if(event.name==='process_sort_index'){const process=this.model_.getOrCreateProcess(event.pid);process.sortIndex=event.args.sort_index;}else if(event.name==='thread_name'){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.name=event.args.name;}else if(event.name==='thread_sort_index'){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.sortIndex=event.args.sort_index;}else if(event.name==='num_cpus'){let n=event.args.number;if(this.softwareMeasuredCpuCount_!==undefined){n=Math.max(n,this.softwareMeasuredCpuCount_);}\nthis.softwareMeasuredCpuCount_=n;}else if(event.name==='stackFrames'){const stackFrames=event.args.stackFrames;if(stackFrames===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No stack frames found in a \\''+event.name+'\\' metadata event'});}else{this.importStackFrames_(stackFrames,'p'+event.pid+':');}}else if(event.name==='typeNames'){const objectTypeNameMap=event.args.typeNames;if(objectTypeNameMap===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No mapping from object type IDs to names found in a \\''+\nevent.name+'\\' metadata event'});}else{this.importObjectTypeNameMap_(objectTypeNameMap,event.pid);}}else if(event.name==='TraceConfig'){this.model_.metadata.push({name:'TraceConfig',value:event.args.value});}else{this.model_.importWarning({type:'metadata_parse_error',message:'Unrecognized metadata name: '+event.name});}},processInstantEvent(event){if(event.name==='JitCodeAdded'||event.name==='JitCodeMoved'){this.v8SamplingData_.push(event);return;}\nif(event.s==='t'||event.s===undefined){this.processDurationEvent(event);return;}\nlet constructor;let parent;switch(event.s){case'g':constructor=tr.model.GlobalInstantEvent;parent=this.model_;break;case'p':constructor=tr.model.ProcessInstantEvent;parent=this.model_.getOrCreateProcess(event.pid);break;default:this.model_.importWarning({type:'instant_parse_error',message:'I phase event with unknown \"s\" field value.'});return;}\nconst instantEvent=new constructor(event.cat,event.name,getEventColor(event),this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),parent);parent.instantEvents.push(instantEvent);},getOrCreateProfileTree_(sampleType,id){if(!this.profileTrees_.has(sampleType)){this.profileTrees_.set(sampleType,new Map());}\nconst profileTreeMap=this.profileTrees_.get(sampleType);if(profileTreeMap.has(id)){return profileTreeMap.get(id);}\nconst profileTree=new tr.model.ProfileTree();profileTreeMap.set(id,profileTree);const info=this.profileInfo_.get(id);if(info!==undefined){profileTree.startTime=info.startTime;profileTree.pid=info.pid;profileTree.tid=info.tid;}\nreturn profileTree;},processSample(event){if(event.args===undefined||event.args.data===undefined){return;}\nif(event.id===undefined){throw new Error('No event ID in sample');}\nconst data=event.args.data;if(data.startTime!==undefined){this.profileInfo_.set(event.id,{startTime:data.startTime,pid:event.pid,tid:event.tid});}\nconst timeDeltas=data.timeDeltas;for(const sampleType in data){if(sampleType==='timeDeltas'||sampleType==='startTime'){continue;}\nif(data[sampleType].samples&&timeDeltas&&data[sampleType].samples.length!==timeDeltas.length){throw new Error('samples and timeDeltas array should have same length');}\nconst profileTree=this.getOrCreateProfileTree_(sampleType,event.id);const nodes=data[sampleType].nodes;const samples=data[sampleType].samples;if(nodes!==undefined){for(const node of nodes){const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,sampleType);const profileNode=ProfileNodeType.constructFromObject(profileTree,node);if(profileNode===undefined){continue;}\nprofileTree.add(profileNode);}}\nif(samples!==undefined){const thread=this.model_.getOrCreateProcess(profileTree.pid).getOrCreateThread(profileTree.tid);for(let i=0,len=samples.length;i<len;++i){const node=profileTree.getNode(samples[i]);profileTree.endTime+=timeDeltas[i];if(node===undefined)continue;const start=this.toModelTimeFromUs_(profileTree.endTime);this.model_.samples.push(new tr.model.Sample(start,node.sampleTitle,node,thread));}}}},processLegacyV8Sample(event){const data=event.args.data;const sampleType='legacySample';const ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,sampleType);if(data.vm_state==='js'&&!data.stack.length)return;const profileTree=this.getOrCreateProfileTree_(sampleType,event.pid);if(profileTree.getNode(-1)===undefined){profileTree.add(new ProfileNodeType(-1,{url:'',scriptId:-1,functionName:'unknown'},undefined));}\nlet node=undefined;if(data.stack.length>0&&this.v8ProcessCodeMaps_[event.pid]){const map=this.v8ProcessCodeMaps_[event.pid];data.stack.reverse();let parentNode=undefined;for(let i=0;i<data.stack.length;i++){const entry=map.lookupEntry(data.stack[i]);if(entry===undefined){node=profileTree.getNode(-1);}else{node=profileTree.getNode(entry.id);if(node===undefined){const sourceInfo=entry.sourceInfo;node=new ProfileNodeType(entry.id,{functionName:entry.name,url:entry.sourceInfo.file,lineNumber:sourceInfo.line!==-1?sourceInfo.line:undefined,columnNumber:sourceInfo.column!==-1?sourceInfo.column:undefined,scriptid:entry.sourceInfo.scriptId},parentNode);profileTree.add(node);}}\nparentNode=node;}}else{node=profileTree.getNode(data.vm_state);if(node===undefined){node=new ProfileNodeType(data.vm_state,{url:'',functionName:data.vm_state},undefined);profileTree.add(node);}}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.model_.samples.push(new tr.model.Sample(this.toModelTimeFromUs_(event.ts),node.sampleTitle,node,thread));},processTraceSampleEvent(event){if(event.name==='V8Sample'||event.name.startsWith('Profile')){this.v8SamplingData_.push(event);return;}\nlet node=this.stackFrameTree_.getNode(event.name);if(node===undefined&&event.sf!==undefined){node=this.stackFrameTree_.getNode('g'+event.sf);}\nif(node===undefined){let id=event.name;if(event.sf){id='g'+event.sf;}\nconst ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');node=this.stackFrameTree_.add(new ProfileNodeType(id,{functionName:event.name},undefined));}\nconst thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);const sample=new tr.model.Sample(this.toModelTimeFromUs_(event.ts),'Trace Event Sample',node,thread,undefined,1,this.deepCopyIfNeeded_(event.args));this.setContextsFromThread_(thread,sample);this.model_.samples.push(sample);},processMemoryDumpEvent(event){if(event.ph!=='v'){throw new Error('Invalid memory dump event phase \"'+event.ph+'\".');}\nconst dumpId=event.id;if(dumpId===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory dump event (phase \\''+event.ph+'\\') without a dump ID.'});return;}\nconst pid=event.pid;if(pid===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory dump event (phase\\''+event.ph+'\\', dump ID \\''+\ndumpId+'\\') without a PID.'});return;}\nconst allEvents=this.allMemoryDumpEvents_;let dumpIdEvents=allEvents[dumpId];if(dumpIdEvents===undefined){allEvents[dumpId]=dumpIdEvents={};}\nlet processEvents=dumpIdEvents[pid];if(processEvents===undefined){dumpIdEvents[pid]=processEvents=[];}\nprocessEvents.push(event);},processClockSyncEvent(event){if(event.ph!=='c'){throw new Error('Invalid clock sync event phase \"'+event.ph+'\".');}\nconst syncId=event.args.sync_id;if(syncId===undefined){this.model_.importWarning({type:'clock_sync_parse_error',message:'Clock sync at time '+event.ts+' without an ID.'});return;}\nif(event.args&&event.args.issue_ts!==undefined){this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,syncId,tr.b.Unit.timestampFromUs(event.args.issue_ts),tr.b.Unit.timestampFromUs(event.ts));}else{this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,syncId,tr.b.Unit.timestampFromUs(event.ts));}},processLegacyChromeClockSyncEvent(event){if(event.ph==='S'){this.legacyChromeClockSyncStartEvent_=event;}else if(event.ph==='F'){this.legacyChromeClockSyncFinishEvent_=event;}\nif(this.legacyChromeClockSyncStartEvent_===undefined||this.legacyChromeClockSyncFinishEvent_===undefined){return;}\nconst startSyncId=this.legacyChromeClockSyncStartEvent_.name.substring(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX.length);const finishSyncId=this.legacyChromeClockSyncFinishEvent_.name.substring(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX.length);if(startSyncId!==finishSyncId){throw new Error('Inconsistent clock sync ID of legacy Chrome clock sync events');}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,startSyncId,tr.b.Unit.timestampFromUs(this.legacyChromeClockSyncStartEvent_.ts),tr.b.Unit.timestampFromUs(this.legacyChromeClockSyncFinishEvent_.ts));},processV8Events(){this.v8SamplingData_.sort(function(a,b){if(a.ts!==b.ts)return a.ts-b.ts;if(a.ph==='M'||a.ph==='I'){return-1;}else if(b.ph==='M'||b.ph==='I'){return 1;}\nreturn 0;});const length=this.v8SamplingData_.length;for(let i=0;i<length;++i){const event=this.v8SamplingData_[i];if(event.ph==='M'||event.ph==='I'){this.processJitCodeEvent(event);}else if(event.ph==='P'){if(event.name.startsWith('Profile')){this.processSample(event);}else{this.processLegacyV8Sample(event);}}}},importClockSyncMarkers(){if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',this.importClockSyncMarker_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}else{for(let i=0;i<this.events_.length;i++){this.importClockSyncMarker_(this.events_[i]);}}},importClockSyncMarker_(event){const isLegacyChromeClockSync=isLegacyChromeClockSyncEvent(event);if(event.ph!=='c'&&!isLegacyChromeClockSync)return;const eventSizeInBytes=this.model_.importOptions.trackDetailedModelStats?JSON.stringify(event).length:undefined;this.model_.stats.willProcessBasicTraceEvent('clock_sync',event.cat,event.name,event.ts,eventSizeInBytes);if(isLegacyChromeClockSync){this.processLegacyChromeClockSyncEvent(event);}else{this.processClockSyncEvent(event);}},importEvents(){this.hasEvents_=false;if(this.stackFrameEvents_){this.importStackFrames_(this.stackFrameEvents_,'g');}\nif(this.traceAnnotations_)this.importAnnotations_();if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',this.processEvent_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());}\nparser.finish();}else{for(let eI=0;eI<this.events_.length;eI++){this.processEvent_(this.events_[eI]);}}\nthis.createAsyncSlices_();this.processV8Events();for(const frame of Object.values(this.v8ProcessRootStackFrame_)){frame.removeAllChildren();}},storeSubtrace_(subtrace){this.subtraces_.push(subtrace);return oboe.drop;},storeSamples_(samples){this.sampleEvents_=samples;return oboe.drop;},storeStackFrames_(stackFrames){this.stackFrameEvents_=stackFrames;return oboe.drop;},storeDisplayTimeUnit_(unitName){if(!unitName)return;const unit=tr.b.TimeDisplayModes[unitName];if(unit===undefined){throw new Error('Unit '+unitName+' is not supported.');}\nthis.model_.intrinsicTimeUnit=unit;return oboe.drop;},storeTraceAnnotations_(traceAnnotations){this.traceAnnotations_=traceAnnotations;return oboe.drop;},storeMetadata_(container){for(const fieldName of Object.keys(container)){if(NON_METADATA_FIELDS.has(fieldName))continue;this.model_.metadata.push({name:fieldName,value:container[fieldName]});if(fieldName!=='metadata')continue;const metadata=container[fieldName];if(metadata['highres-ticks']){this.model_.isTimeHighResolution=metadata['highres-ticks'];}\nif(metadata['clock-domain']){this.clockDomainId_=metadata['clock-domain'];}}\nreturn oboe.drop;},processEvent_(event){this.hasEvents_=true;const importOptions=this.model_.importOptions;const trackDetailedModelStats=importOptions.trackDetailedModelStats;const modelStats=this.model_.stats;if(event.args==='__stripped__'){event.argsStripped=true;event.args=undefined;}\nlet eventSizeInBytes=undefined;if(trackDetailedModelStats){eventSizeInBytes=JSON.stringify(event).length;}\nswitch(event.ph){case'B':case'E':modelStats.willProcessBasicTraceEvent('begin_end (non-compact)',event.cat,event.name,event.ts,eventSizeInBytes);this.processDurationEvent(event);break;case'X':{modelStats.willProcessBasicTraceEvent('begin_end (compact)',event.cat,event.name,event.ts,eventSizeInBytes);const slice=this.processCompleteEvent(event);if(slice!==undefined&&event.bind_id!==undefined){this.processFlowEvent(event,slice);}\nbreak;}\ncase'b':case'e':case'n':case'S':case'F':case'T':case'p':modelStats.willProcessBasicTraceEvent('async',event.cat,event.name,event.ts,eventSizeInBytes);this.processAsyncEvent(event);break;case'I':case'i':case'R':modelStats.willProcessBasicTraceEvent('instant',event.cat,event.name,event.ts,eventSizeInBytes);this.processInstantEvent(event);break;case'P':modelStats.willProcessBasicTraceEvent('samples',event.cat,event.name,event.ts,eventSizeInBytes);this.processTraceSampleEvent(event);break;case'C':modelStats.willProcessBasicTraceEvent('counters',event.cat,event.name,event.ts,eventSizeInBytes);this.processCounterEvent(event);break;case'M':modelStats.willProcessBasicTraceEvent('metadata',event.cat,event.name,event.ts,eventSizeInBytes);this.processMetadataEvent(event);break;case'N':case'D':case'O':modelStats.willProcessBasicTraceEvent('objects',event.cat,event.name,event.ts,eventSizeInBytes);this.processObjectEvent(event);break;case's':case't':case'f':modelStats.willProcessBasicTraceEvent('flows',event.cat,event.name,event.ts,eventSizeInBytes);this.processFlowEvent(event);break;case'v':modelStats.willProcessBasicTraceEvent('memory_dumps',event.cat,event.name,event.ts,eventSizeInBytes);this.processMemoryDumpEvent(event);break;case'(':case')':this.processContextEvent(event);break;case'c':break;default:modelStats.willProcessBasicTraceEvent('unknown',event.cat,event.name,event.ts,eventSizeInBytes);this.model_.importWarning({type:'parse_error',message:'Unrecognized event phase: '+\nevent.ph+' ('+event.name+')'});}\nreturn oboe.drop;},importStackFrames_(rawStackFrames,idPrefix){const model=this.model_;for(const id in rawStackFrames){const rawStackFrame=rawStackFrames[id];const fullId=idPrefix+id;const textForColor=rawStackFrame.category?rawStackFrame.category:rawStackFrame.name;const stackFrame=new tr.model.StackFrame(undefined,fullId,rawStackFrame.name,ColorScheme.getColorIdForGeneralPurposeString(textForColor));model.addStackFrame(stackFrame);}\nfor(const id in rawStackFrames){const fullId=idPrefix+id;const stackFrame=model.stackFrames[fullId];if(stackFrame===undefined){throw new Error('Internal error');}\nconst rawStackFrame=rawStackFrames[id];const parentId=rawStackFrame.parent;let parentStackFrame;if(parentId===undefined){parentStackFrame=undefined;}else{const parentFullId=idPrefix+parentId;parentStackFrame=model.stackFrames[parentFullId];if(parentStackFrame===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'Missing parent frame with ID '+parentFullId+' for stack frame \\''+stackFrame.name+'\\' (ID '+fullId+').'});}}\nstackFrame.parentFrame=parentStackFrame;}\nconst ProfileNodeType=tr.model.ProfileNode.subTypes.getConstructor(undefined,'legacySample');if(idPrefix==='g'){for(const id in rawStackFrames){const rawStackFrame=rawStackFrames[id];const textForColor=rawStackFrame.category?rawStackFrame.category:rawStackFrame.name;const node=this.stackFrameTree_.add(new ProfileNodeType('g'+id,{functionName:rawStackFrame.name},undefined));node.colorId=ColorScheme.getColorIdForGeneralPurposeString(textForColor);node.parentId=rawStackFrame.parent;}\nfor(const id in rawStackFrames){const node=this.stackFrameTree_.getNode('g'+id);const parentId=node.parentId;let parentNode=undefined;if(parentId!==undefined){parentNode=this.stackFrameTree_.getNode('g'+parentId);if(parentNode===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'Missing parent frame with ID '+parentId+' for stack frame \\''+node.name+'\\' (ID '+node.id+').'});}\nnode.parentNode=parentNode;}}}},importObjectTypeNameMap_(rawObjectTypeNameMap,pid){if(pid in this.objectTypeNameMap_){this.model_.importWarning({type:'metadata_parse_error',message:'Mapping from object type IDs to names provided for pid='+\npid+' multiple times.'});return;}\nlet objectTypeNamePrefix=undefined;let objectTypeNameSuffix=undefined;const objectTypeNameMap={};for(const objectTypeId in rawObjectTypeNameMap){const rawObjectTypeName=rawObjectTypeNameMap[objectTypeId];if(objectTypeNamePrefix===undefined){for(let i=0;i<OBJECT_TYPE_NAME_PATTERNS.length;i++){const pattern=OBJECT_TYPE_NAME_PATTERNS[i];if(rawObjectTypeName.startsWith(pattern.prefix)&&rawObjectTypeName.endsWith(pattern.suffix)){objectTypeNamePrefix=pattern.prefix;objectTypeNameSuffix=pattern.suffix;break;}}}\nif(objectTypeNamePrefix!==undefined&&rawObjectTypeName.startsWith(objectTypeNamePrefix)&&rawObjectTypeName.endsWith(objectTypeNameSuffix)){objectTypeNameMap[objectTypeId]=rawObjectTypeName.substring(objectTypeNamePrefix.length,rawObjectTypeName.length-objectTypeNameSuffix.length);}else{objectTypeNameMap[objectTypeId]=rawObjectTypeName;}}\nthis.objectTypeNameMap_[pid]=objectTypeNameMap;},importAnnotations_(){for(const id in this.traceAnnotations_){const annotation=tr.model.Annotation.fromDictIfPossible(this.traceAnnotations_[id]);if(!annotation){this.model_.importWarning({type:'annotation_warning',message:'Unrecognized traceAnnotation typeName \\\"'+\nthis.traceAnnotations_[id].typeName+'\\\"'});continue;}\nthis.model_.addAnnotation(annotation);}},finalizeImport(){if(this.softwareMeasuredCpuCount_!==undefined){this.model_.kernel.softwareMeasuredCpuCount=this.softwareMeasuredCpuCount_;}\nthis.createFlowSlices_();this.createExplicitObjects_();this.createImplicitObjects_();this.createMemoryDumps_();},getStackFrameForEvent_(event,opt_lookForEndEvent){let sf;let stack;if(opt_lookForEndEvent){sf=event.esf;stack=event.estack;}else{sf=event.sf;stack=event.stack;}\nif(stack!==undefined&&sf!==undefined){this.model_.importWarning({type:'stack_frame_and_stack_error',message:'Event at '+event.ts+' cannot have both a stack and a stackframe.'});return undefined;}\nif(stack!==undefined){return this.model_.resolveStackToStackFrame_(event.pid,stack);}\nif(sf===undefined)return undefined;const stackFrame=this.model_.stackFrames['g'+sf];if(stackFrame===undefined){this.model_.importWarning({type:'sample_import_error',message:'No frame for '+sf});return;}\nreturn stackFrame;},resolveStackToStackFrame_(pid,stack){return undefined;},importSampleData(){if(!this.sampleEvents_)return;const m=this.model_;const events=this.sampleEvents_;if(this.hasEvents_===undefined){throw new Error('importEvents is not run before importSampleData');}else if(!this.hasEvents_){for(let i=0;i<events.length;i++){const event=events[i];m.getOrCreateProcess(event.tid).getOrCreateThread(event.tid);}}\nconst threadsByTid={};m.getAllThreads().forEach(function(t){threadsByTid[t.tid]=t;});for(let i=0;i<events.length;i++){const event=events[i];const thread=threadsByTid[event.tid];if(thread===undefined){m.importWarning({type:'sample_import_error',message:'Thread '+events.tid+'not found'});continue;}\nlet cpu;if(event.cpu!==undefined){cpu=m.kernel.getOrCreateCpu(event.cpu);}\nconst leafNode=this.stackFrameTree_.getNode('g'+event.sf);const sample=new tr.model.Sample(this.toModelTimeFromUs_(event.ts),event.name,leafNode,thread,cpu,event.weight);m.samples.push(sample);}},createAsyncSlices_(){if(this.allAsyncEvents_.length===0)return;this.allAsyncEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const legacyEvents=[];const nestableAsyncEventsByKey={};const nestableMeasureAsyncEventsByKey={};for(let i=0;i<this.allAsyncEvents_.length;i++){const asyncEventState=this.allAsyncEvents_[i];const event=asyncEventState.event;if(event.ph==='S'||event.ph==='F'||event.ph==='T'||event.ph==='p'){legacyEvents.push(asyncEventState);continue;}\nif(event.cat===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require a '+'cat parameter.'});continue;}\nif(event.name===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require a '+'name parameter.'});continue;}\nconst id=TraceEventImporter.scopedIdForEvent_(event);if(id===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async events (ph: b, e, or n) require an '+'id parameter.'});continue;}\nif(event.cat==='blink.user_timing'){const matched=MEASURE_NAME_REGEX.exec(event.name);if(matched!==null){const key=matched[1]+':'+event.cat;try{event.args=JSON.parse(Base64.atob(matched[3])||'{}');}catch(e){}\nif(nestableMeasureAsyncEventsByKey[key]===undefined){nestableMeasureAsyncEventsByKey[key]=[];}\nnestableMeasureAsyncEventsByKey[key].push(asyncEventState);continue;}}\nconst key=event.cat+':'+id.toStringWithDelimiter(':');if(nestableAsyncEventsByKey[key]===undefined){nestableAsyncEventsByKey[key]=[];}\nnestableAsyncEventsByKey[key].push(asyncEventState);}\nthis.createLegacyAsyncSlices_(legacyEvents);this.createNestableAsyncSlices_(nestableMeasureAsyncEventsByKey);this.createNestableAsyncSlices_(nestableAsyncEventsByKey);},createLegacyAsyncSlice_(events){const asyncEventState=events[events.length-1];const event=asyncEventState.event;const name=event.name;const id=TraceEventImporter.scopedIdForEvent_(event);const key=id.toStringWithDelimiter(':');const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(events[0].event.cat,name);let duration;if(event.ts!==undefined){duration=this.toModelTimeFromUs_(event.ts-events[0].event.ts);}\nconst slice=new asyncSliceConstructor(events[0].event.cat,name,getEventColor(events[0].event),this.toModelTimeFromUs_(events[0].event.ts),Object.assign({},events[0].event.args,event.args),duration||0,true,undefined,undefined,events[0].event.argsStripped);if(duration===undefined){slice.didNotFinish=true;slice.error='Slice has no matching END. End time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Legacy async BEGIN event at '+\nevents[0].event.ts+' with name=\"'+\nname+'\" and id='+key+' was unmatched.'});}\nslice.startThread=events[0].thread;slice.endThread=asyncEventState.thread;slice.id=key;const stepType=events[1].event.ph;let isValid=true;for(let j=1;j<events.length-1;++j){if(events[j].event.ph==='T'||events[j].event.ph==='p'){isValid=this.assertStepTypeMatches_(stepType,events[j]);if(!isValid)break;}\nif(events[j].event.ph==='S'){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+events[j].event.ts+', a slice named \"'+\nname+'\" with id='+id+' had a step before the start event.'});continue;}\nif(events[j].event.ph==='F'){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+events[j].event.ts+', a slice named '+\nname+' with id='+id+' had a step after the finish event.'});continue;}\nconst startIndex=j+(stepType==='T'?0:-1);const endIndex=startIndex+1;let subName=name;if(!events[j].event.argsStripped&&(events[j].event.ph==='T'||events[j].event.ph==='p')){subName=events[j].event.args.step;}\nconst asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(events[0].event.cat,subName);let duration;if(events[endIndex].event.ts!==undefined){duration=this.toModelTimeFromUs_(events[endIndex].event.ts-events[startIndex].event.ts);}\nconst subSlice=new asyncSliceConstructor(events[0].event.cat,subName,getEventColor(events[0].event,subName+j),this.toModelTimeFromUs_(events[startIndex].event.ts),this.deepCopyIfNeeded_(events[j].event.args),duration||0,undefined,undefined,events[startIndex].event.argsStripped);if(duration===undefined){subSlice.didNotFinish=true;subSlice.error='Slice has no matching END. End time has been adjusted.';}\nsubSlice.startThread=events[startIndex].thread;subSlice.endThread=events[endIndex].thread;subSlice.id=key;slice.subSlices.push(subSlice);}\nif(isValid){slice.startThread.asyncSliceGroup.push(slice);}},createLegacyAsyncSlices_(legacyEvents){if(legacyEvents.length===0)return;legacyEvents.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const asyncEventStatesByNameThenID={};for(let i=0;i<legacyEvents.length;i++){const asyncEventState=legacyEvents[i];const event=asyncEventState.event;const name=event.name;if(name===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Async events (ph: S, T, p, or F) require a name '+' parameter.'});continue;}\nconst id=TraceEventImporter.scopedIdForEvent_(event);if(id===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:'Async events (ph: S, T, p, or F) require an id parameter.'});continue;}\nconst key=id.toStringWithDelimiter(':');if(event.ph==='S'){if(asyncEventStatesByNameThenID[name]===undefined){asyncEventStatesByNameThenID[name]={};}\nif(asyncEventStatesByNameThenID[name][key]){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+event.ts+', a slice of the same id '+id+' was alrady open.'});continue;}\nasyncEventStatesByNameThenID[name][key]=[];asyncEventStatesByNameThenID[name][key].push(asyncEventState);}else{if(asyncEventStatesByNameThenID[name]===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:`At ${event.ts}, no slice named \"${name}\" was open.`,});continue;}\nif(asyncEventStatesByNameThenID[name][key]===undefined){this.model_.importWarning({type:'async_slice_parse_error',message:`At ${event.ts}, no slice named \"${name}\" with id=${id} was `+'open.',});continue;}\nconst events=asyncEventStatesByNameThenID[name][key];events.push(asyncEventState);if(event.ph==='F'){this.createLegacyAsyncSlice_(events);delete asyncEventStatesByNameThenID[name][key];}}}\nfor(const[name,statesByID]of\nObject.entries(asyncEventStatesByNameThenID)){for(const[id,states]of Object.entries(statesByID)){const startEvent=states[0].event;states.push({sequenceNumber:1+states[states.length-1].sequenceNumber,event:{ph:'F',name,id:startEvent.id,id2:startEvent.id2,scope:startEvent.scope,pid:startEvent.pid,tid:startEvent.tid,cat:startEvent.cat,args:{},},thread:this.model_.getOrCreateProcess(startEvent.pid).getOrCreateThread(startEvent.tid),});this.createLegacyAsyncSlice_(states);}}},createNestableAsyncSlices_(nestableEventsByKey){for(const key in nestableEventsByKey){const eventStateEntries=nestableEventsByKey[key];const parentStack=[];for(let i=0;i<eventStateEntries.length;++i){const eventStateEntry=eventStateEntries[i];if(eventStateEntry.event.ph==='e'){let parentIndex=-1;for(let k=parentStack.length-1;k>=0;--k){if(parentStack[k].event.name===eventStateEntry.event.name){parentIndex=k;break;}}\nif(parentIndex===-1){eventStateEntry.finished=false;}else{parentStack[parentIndex].end=eventStateEntry;while(parentIndex<parentStack.length){parentStack.pop();}}}\nif(parentStack.length>0){eventStateEntry.parentEntry=parentStack[parentStack.length-1];}\nif(eventStateEntry.event.ph==='b'){parentStack.push(eventStateEntry);}}\nconst topLevelSlices=[];for(let i=0;i<eventStateEntries.length;++i){const eventStateEntry=eventStateEntries[i];if(eventStateEntry.event.ph==='e'&&eventStateEntry.finished===undefined){continue;}\nlet startState=undefined;let endState=undefined;let sliceArgs=eventStateEntry.event.args||{};let sliceError=undefined;const id=TraceEventImporter.scopedIdForEvent_(eventStateEntry.event);if(eventStateEntry.event.ph==='n'){startState=eventStateEntry;endState=eventStateEntry;}else if(eventStateEntry.event.ph==='b'){if(eventStateEntry.end===undefined){eventStateEntry.end=eventStateEntries[eventStateEntries.length-1];sliceError='Slice has no matching END. End time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async BEGIN event at '+\neventStateEntry.event.ts+' with name=\"'+\neventStateEntry.event.name+'\" and id='+id+' was unmatched.'});}else{function concatenateArguments(args1,args2){if(args1.params===undefined||args2.params===undefined){return Object.assign({},args1,args2);}\nconst args3={};args3.params=Object.assign({},args1.params,args2.params);return Object.assign({},args1,args2,args3);}\nconst endArgs=eventStateEntry.end.event.args||{};sliceArgs=concatenateArguments(sliceArgs,endArgs);}\nstartState=eventStateEntry;endState=eventStateEntry.end;}else{sliceError='Slice has no matching BEGIN. Start time has been adjusted.';this.model_.importWarning({type:'async_slice_parse_error',message:'Nestable async END event at '+\neventStateEntry.event.ts+' with name='+\neventStateEntry.event.name+' and id='+id+' was unmatched.'});startState=eventStateEntries[0];endState=eventStateEntry;}\nconst isTopLevel=(eventStateEntry.parentEntry===undefined);const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(eventStateEntry.event.cat,eventStateEntry.event.name);let threadStart=undefined;let threadDuration=undefined;if(startState.event.tts&&startState.event.use_async_tts){threadStart=this.toModelTimeFromUs_(startState.event.tts);if(endState.event.tts){const threadEnd=this.toModelTimeFromUs_(endState.event.tts);threadDuration=threadEnd-threadStart;}}\nconst slice=new asyncSliceConstructor(eventStateEntry.event.cat,eventStateEntry.event.name,getEventColor(endState.event),this.toModelTimeFromUs_(startState.event.ts),sliceArgs,this.toModelTimeFromUs_(endState.event.ts-startState.event.ts),isTopLevel,threadStart,threadDuration,startState.event.argsStripped);slice.startThread=startState.thread;slice.endThread=endState.thread;slice.startStackFrame=this.getStackFrameForEvent_(startState.event);slice.endStackFrame=this.getStackFrameForEvent_(endState.event);slice.id=key;if(sliceError!==undefined){slice.error=sliceError;}\neventStateEntry.slice=slice;if(isTopLevel){topLevelSlices.push(slice);}else if(eventStateEntry.parentEntry.slice!==undefined){eventStateEntry.parentEntry.slice.subSlices.push(slice);}}\nfor(let si=0;si<topLevelSlices.length;si++){topLevelSlices[si].startThread.asyncSliceGroup.push(topLevelSlices[si]);}}},assertStepTypeMatches_(stepType,event){if(stepType!==event.event.ph){this.model_.importWarning({type:'async_slice_parse_error',message:'At '+event.event.ts+', a slice named '+\nevent.event.name+' with id='+\nTraceEventImporter.scopedIdForEvent_(event.event)+' had both begin and end steps, which is not allowed.'});return false;}\nreturn true;},validateFlowEvent_(event){if(event.name===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow events (ph: s, t or f) require a name parameter.'});return false;}\nif(event.ph==='s'||event.ph==='f'||event.ph==='t'){if(event.id===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow events (ph: s, t or f) require an id parameter.'});return false;}\nreturn true;}\nif(event.bind_id){if(event.flow_in===undefined&&event.flow_out===undefined){this.model_.importWarning({type:'flow_slice_parse_error',message:'Flow producer or consumer require flow_in or flow_out.'});return false;}\nreturn true;}\nreturn false;},createFlowSlices_(){if(this.allFlowEvents_.length===0)return;const createFlowEvent=function(thread,event,opt_slice){let startSlice;let flowId;let flowStartTs;if(event.bind_id){startSlice=opt_slice;flowId=event.bind_id;flowStartTs=this.toModelTimeFromUs_(event.ts+event.dur);}else{const ts=this.toModelTimeFromUs_(event.ts);startSlice=thread.sliceGroup.findSliceAtTs(ts);if(startSlice===undefined)return undefined;flowId=event.id;flowStartTs=ts;}\nconst flowEvent=new tr.model.FlowEvent(event.cat,flowId,event.name,getEventColor(event),flowStartTs,this.deepCopyAlways_(event.args));flowEvent.startSlice=startSlice;flowEvent.startStackFrame=this.getStackFrameForEvent_(event);flowEvent.endStackFrame=undefined;startSlice.outFlowEvents.push(flowEvent);return flowEvent;}.bind(this);const finishFlowEventWith=function(flowEvent,thread,event,refGuid,bindToParent,opt_slice){let endSlice;if(event.bind_id){endSlice=opt_slice;}else{const ts=this.toModelTimeFromUs_(event.ts);if(bindToParent){endSlice=thread.sliceGroup.findSliceAtTs(ts);}else{endSlice=thread.sliceGroup.findNextSliceAfter(ts,refGuid);}\nif(endSlice===undefined)return false;}\nendSlice.inFlowEvents.push(flowEvent);flowEvent.endSlice=endSlice;flowEvent.duration=this.toModelTimeFromUs_(event.ts)-flowEvent.start;flowEvent.endStackFrame=this.getStackFrameForEvent_(event);this.mergeArgsInto_(flowEvent.args,event.args,flowEvent.title);return true;}.bind(this);const processFlowConsumer=function(flowIdToEvent,sliceGuidToEvent,event,slice){let flowEvent=flowIdToEvent[event.bind_id];if(flowEvent===undefined){this.model_.importWarning({type:'flow_slice_ordering_error',message:'Flow consumer '+event.bind_id+' does not have '+'a flow producer'});return false;}else if(flowEvent.endSlice){const flowProducer=flowEvent.startSlice;flowEvent=createFlowEvent(undefined,sliceGuidToEvent[flowProducer.guid],flowProducer);}\nconst refGuid=undefined;const ok=finishFlowEventWith(flowEvent,undefined,event,refGuid,undefined,slice);if(ok){this.model_.flowEvents.push(flowEvent);}else{this.model_.importWarning({type:'flow_slice_end_error',message:'Flow consumer '+event.bind_id+' does not end '+'at an actual slice, so cannot be created.'});return false;}\nreturn true;}.bind(this);const processFlowProducer=function(flowIdToEvent,flowStatus,event,slice){if(flowIdToEvent[event.bind_id]&&flowStatus[event.bind_id]){this.model_.importWarning({type:'flow_slice_start_error',message:'Flow producer '+event.bind_id+' already seen'});return false;}\nconst flowEvent=createFlowEvent(undefined,event,slice);if(!flowEvent){this.model_.importWarning({type:'flow_slice_start_error',message:'Flow producer '+event.bind_id+' does not start'+'a flow'});return false;}\nflowIdToEvent[event.bind_id]=flowEvent;}.bind(this);this.allFlowEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const flowIdToEvent={};const sliceGuidToEvent={};const flowStatus={};for(let i=0;i<this.allFlowEvents_.length;++i){const data=this.allFlowEvents_[i];const refGuid=data.refGuid;const event=data.event;const thread=data.thread;if(!this.validateFlowEvent_(event))continue;if(event.bind_id){const slice=data.slice;sliceGuidToEvent[slice.guid]=event;if(event.flowPhase===PRODUCER){if(!processFlowProducer(flowIdToEvent,flowStatus,event,slice)){continue;}\nflowStatus[event.bind_id]=true;}else{if(!processFlowConsumer(flowIdToEvent,sliceGuidToEvent,event,slice)){continue;}\nflowStatus[event.bind_id]=false;if(event.flowPhase===STEP){if(!processFlowProducer(flowIdToEvent,flowStatus,event,slice)){continue;}\nflowStatus[event.bind_id]=true;}}\ncontinue;}\nconst fullFlowId=JSON.stringify({id:event.id,cat:event.cat,name:event.name});let flowEvent;if(event.ph==='s'){if(flowIdToEvent[fullFlowId]){this.model_.importWarning({type:'flow_slice_start_error',message:'event id '+event.id+' already seen when '+'encountering start of flow event.'});continue;}\nflowEvent=createFlowEvent(thread,event);if(!flowEvent){this.model_.importWarning({type:'flow_slice_start_error',message:'event id '+event.id+' does not start '+'at an actual slice, so cannot be created.'});continue;}\nflowIdToEvent[fullFlowId]=flowEvent;}else if(event.ph==='t'||event.ph==='f'){flowEvent=flowIdToEvent[fullFlowId];if(flowEvent===undefined){this.model_.importWarning({type:'flow_slice_ordering_error',message:'Found flow phase '+event.ph+' for id: '+event.id+' but no flow start found.'});continue;}\nlet bindToParent=event.ph==='t';if(event.ph==='f'){if(event.bp===undefined){if(event.cat.indexOf('input')>-1){bindToParent=true;}else if(event.cat.indexOf('ipc.flow')>-1){bindToParent=true;}}else{if(event.bp!=='e'){this.model_.importWarning({type:'flow_slice_bind_point_error',message:'Flow event with invalid binding point (event.bp).'});continue;}\nbindToParent=true;}}\nconst ok=finishFlowEventWith(flowEvent,thread,event,refGuid,bindToParent);if(ok){this.model_.flowEvents.push(flowEvent);}else{this.model_.importWarning({type:'flow_slice_end_error',message:'event id '+event.id+' does not end '+'at an actual slice, so cannot be created.'});}\nflowIdToEvent[fullFlowId]=undefined;if(ok&&event.ph==='t'){flowEvent=createFlowEvent(thread,event);flowIdToEvent[fullFlowId]=flowEvent;}}}},createExplicitObjects_(){if(this.allObjectEvents_.length===0)return;const processEvent=function(objectEventState){const event=objectEventState.event;const scopedId=TraceEventImporter.scopedIdForEvent_(event);const thread=objectEventState.thread;if(event.name===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an name parameter.'});}\nif(scopedId===undefined||scopedId.id===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an id parameter.'});}\nconst process=thread.parent;const ts=this.toModelTimeFromUs_(event.ts);let instance;if(event.ph==='N'){try{instance=process.objects.idWasCreated(scopedId,event.cat,event.name,ts);}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing create of '+\nscopedId+' at ts='+ts+': '+e});return;}}else if(event.ph==='O'){if(event.args.snapshot===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+scopedId+' at ts='+ts+': '+'Snapshots must have args: {snapshot: ...}'});return;}\nlet snapshot;try{const args=this.deepCopyIfNeeded_(event.args.snapshot);let cat;if(args.cat){cat=args.cat;delete args.cat;}else{cat=event.cat;}\nlet baseTypename;if(args.base_type){baseTypename=args.base_type;delete args.base_type;}else{baseTypename=undefined;}\nsnapshot=process.objects.addSnapshot(scopedId,cat,event.name,ts,args,baseTypename);snapshot.snapshottedOnThread=thread;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing snapshot of '+\nscopedId+' at ts='+ts+': '+e});return;}\ninstance=snapshot.objectInstance;}else if(event.ph==='D'){try{process.objects.idWasDeleted(scopedId,event.cat,event.name,ts);const instanceMap=process.objects.getOrCreateInstanceMap_(scopedId);instance=instanceMap.lastInstance;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing delete of '+\nscopedId+' at ts='+ts+': '+e});return;}}\nif(instance){instance.colorId=getEventColor(event,instance.typeName);}}.bind(this);this.allObjectEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const allObjectEvents=this.allObjectEvents_;for(let i=0;i<allObjectEvents.length;i++){const objectEventState=allObjectEvents[i];try{processEvent.call(this,objectEventState);}catch(e){this.model_.importWarning({type:'object_parse_error',message:e.message});}}},createImplicitObjects_(){for(const proc of Object.values(this.model_.processes)){this.createImplicitObjectsForProcess_(proc);}},createImplicitObjectsForProcess_(process){function processField(referencingObject,referencingObjectFieldName,referencingObjectFieldValue,containingSnapshot){if(!referencingObjectFieldValue)return;if(referencingObjectFieldValue instanceof\ntr.model.ObjectSnapshot){return null;}\nif(referencingObjectFieldValue.id===undefined)return;const implicitSnapshot=referencingObjectFieldValue;const rawId=implicitSnapshot.id;const m=/(.+)\\/(.+)/.exec(rawId);if(!m){throw new Error('Implicit snapshots must have names.');}\ndelete implicitSnapshot.id;const name=m[1];const id=m[2];let res;let cat;if(implicitSnapshot.cat!==undefined){cat=implicitSnapshot.cat;}else{cat=containingSnapshot.objectInstance.category;}\nlet baseTypename;if(implicitSnapshot.base_type){baseTypename=implicitSnapshot.base_type;}else{baseTypename=undefined;}\nconst scope=containingSnapshot.objectInstance.scopedId.scope;try{res=process.objects.addSnapshot(new tr.model.ScopedId(scope,id),cat,name,containingSnapshot.ts,implicitSnapshot,baseTypename);}catch(e){this.model_.importWarning({type:'object_snapshot_parse_error',message:'While processing implicit snapshot of '+\nrawId+' at ts='+containingSnapshot.ts+': '+e});return;}\nres.objectInstance.hasImplicitSnapshots=true;res.containingSnapshot=containingSnapshot;res.snapshottedOnThread=containingSnapshot.snapshottedOnThread;referencingObject[referencingObjectFieldName]=res;if(!(res instanceof tr.model.ObjectSnapshot)){throw new Error('Created object must be instanceof snapshot');}\nreturn res.args;}\nfunction iterObject(object,func,containingSnapshot,thisArg){if(!(object instanceof Object))return;if(object instanceof Array){for(let i=0;i<object.length;i++){const res=func.call(thisArg,object,i,object[i],containingSnapshot);if(res===null)continue;if(res){iterObject(res,func,containingSnapshot,thisArg);}else{iterObject(object[i],func,containingSnapshot,thisArg);}}\nreturn;}\nfor(const key in object){const res=func.call(thisArg,object,key,object[key],containingSnapshot);if(res===null)continue;if(res){iterObject(res,func,containingSnapshot,thisArg);}else{iterObject(object[key],func,containingSnapshot,thisArg);}}}\nprocess.objects.iterObjectInstances(function(instance){instance.snapshots.forEach(function(snapshot){if(snapshot.args.id!==undefined){throw new Error('args cannot have an id field inside it');}\niterObject(snapshot.args,processField,snapshot,this);},this);},this);},minimalTimestampInPidToEvents_(pidToEvents){let smallestTs=Infinity;for(const events of Object.values(pidToEvents)){for(const event of events){if(event.ts<smallestTs){smallestTs=event.ts;}}}\nreturn smallestTs;},createMemoryDumps_(){const pairs=Object.entries(this.allMemoryDumpEvents_);const key=x=>this.minimalTimestampInPidToEvents_(x);pairs.sort((x,y)=>key(x[1])-key(y[1]));for(const[dumpId,pidToEvents]of pairs){this.createGlobalMemoryDump_(pidToEvents,dumpId);}},createGlobalMemoryDump_(dumpIdEvents,dumpId){const globalRange=new tr.b.math.Range();for(const pid in dumpIdEvents){const processEvents=dumpIdEvents[pid];for(let i=0;i<processEvents.length;i++){globalRange.addValue(this.toModelTimeFromUs_(processEvents[i].ts));}}\nif(globalRange.isEmpty){throw new Error('Internal error: Global memory dump without events');}\nconst globalMemoryDump=new tr.model.GlobalMemoryDump(this.model_,globalRange.min);globalMemoryDump.duration=globalRange.range;this.model_.globalMemoryDumps.push(globalMemoryDump);const globalMemoryAllocatorDumpsByFullName={};const levelsOfDetail={};const allMemoryAllocatorDumpsByGuid={};for(const pid in dumpIdEvents){this.createProcessMemoryDump_(globalMemoryDump,globalMemoryAllocatorDumpsByFullName,levelsOfDetail,allMemoryAllocatorDumpsByGuid,dumpIdEvents[pid],pid,dumpId);}\nglobalMemoryDump.levelOfDetail=levelsOfDetail.global;globalMemoryDump.memoryAllocatorDumps=this.inferMemoryAllocatorDumpTree_(globalMemoryAllocatorDumpsByFullName);this.parseMemoryDumpAllocatorEdges_(allMemoryAllocatorDumpsByGuid,dumpIdEvents,dumpId);},createProcessMemoryDump_(globalMemoryDump,globalMemoryAllocatorDumpsByFullName,levelsOfDetail,allMemoryAllocatorDumpsByGuid,processEvents,pid,dumpId){const processRange=new tr.b.math.Range();for(let i=0;i<processEvents.length;i++){processRange.addValue(this.toModelTimeFromUs_(processEvents[i].ts));}\nif(processRange.isEmpty){throw new Error('Internal error: Process memory dump without events');}\nconst process=this.model_.getOrCreateProcess(pid);const processMemoryDump=new tr.model.ProcessMemoryDump(globalMemoryDump,process,processRange.min);processMemoryDump.duration=processRange.range;process.memoryDumps.push(processMemoryDump);globalMemoryDump.processMemoryDumps[pid]=processMemoryDump;const processMemoryAllocatorDumpsByFullName={};for(let i=0;i<processEvents.length;i++){const processEvent=processEvents[i];const dumps=processEvent.args.dumps;if(dumps===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'\\'dumps\\' field not found in a process memory dump'+' event for PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nthis.parseMemoryDumpTotals_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpVmRegions_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpHeapDumps_(processMemoryDump,dumps,pid,dumpId);this.parseMemoryDumpLevelOfDetail_(levelsOfDetail,dumps,pid,dumpId);this.parseMemoryDumpAllocatorDumps_(processMemoryDump,globalMemoryDump,processMemoryAllocatorDumpsByFullName,globalMemoryAllocatorDumpsByFullName,allMemoryAllocatorDumpsByGuid,dumps,pid,dumpId);}\nif(levelsOfDetail.process===undefined){levelsOfDetail.process=processMemoryDump.vmRegions?DETAILED:LIGHT;}\nif(!this.updateMemoryDumpLevelOfDetail_(levelsOfDetail,'global',levelsOfDetail.process)){this.model_.importWarning({type:'memory_dump_parse_error',message:'diffent levels of detail provided for global memory'+' dump (dump ID='+dumpId+').'});}\nprocessMemoryDump.levelOfDetail=levelsOfDetail.process;delete levelsOfDetail.process;processMemoryDump.memoryAllocatorDumps=this.inferMemoryAllocatorDumpTree_(processMemoryAllocatorDumpsByFullName);},parseMemoryDumpTotals_(processMemoryDump,dumps,pid,dumpId){const rawTotals=dumps.process_totals;if(rawTotals===undefined)return;if(processMemoryDump.totals!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Process totals provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nconst totals={};let platformSpecificTotals=undefined;for(const rawTotalName in rawTotals){const rawTotalValue=rawTotals[rawTotalName];if(rawTotalValue===undefined)continue;if(rawTotalName==='resident_set_bytes'){totals.residentBytes=parseInt(rawTotalValue,16);continue;}\nif(rawTotalName==='peak_resident_set_bytes'){totals.peakResidentBytes=parseInt(rawTotalValue,16);continue;}\nif(rawTotalName==='is_peak_rss_resetable'){totals.arePeakResidentBytesResettable=!!rawTotalValue;continue;}\nif(rawTotalName==='private_footprint_bytes'){totals.privateFootprintBytes=parseInt(rawTotalValue,16);continue;}\nif(platformSpecificTotals===undefined){platformSpecificTotals={};totals.platformSpecific=platformSpecificTotals;}\nplatformSpecificTotals[rawTotalName]=parseInt(rawTotalValue,16);}\nif(totals.peakResidentBytes===undefined&&totals.arePeakResidentBytesResettable!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Optional field peak_resident_set_bytes found'+' but is_peak_rss_resetable not found in'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});}\nif(totals.arePeakResidentBytesResettable!==undefined&&totals.peakResidentBytes===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Optional field is_peak_rss_resetable found'+' but peak_resident_set_bytes not found in'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});}\nprocessMemoryDump.totals=totals;},parseMemoryDumpVmRegions_(processMemoryDump,dumps,pid,dumpId){const rawProcessMmaps=dumps.process_mmaps;if(rawProcessMmaps===undefined)return;const rawVmRegions=rawProcessMmaps.vm_regions;if(rawVmRegions===undefined)return;if(processMemoryDump.vmRegions!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'VM regions provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nconst vmRegions=new Array(rawVmRegions.length);for(let i=0;i<rawVmRegions.length;i++){const rawVmRegion=rawVmRegions[i];const byteStats={};const rawByteStats=rawVmRegion.bs;for(const rawByteStatName in rawByteStats){const rawByteStatValue=rawByteStats[rawByteStatName];if(rawByteStatValue===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Byte stat \\''+rawByteStatName+'\\' of VM region '+\ni+' ('+rawVmRegion.mf+') in process memory dump for '+'PID='+pid+' and dump ID='+dumpId+' does not have a value.'});continue;}\nconst byteStatName=BYTE_STAT_NAME_MAP[rawByteStatName];if(byteStatName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Unknown byte stat name \\''+rawByteStatName+'\\' ('+\nrawByteStatValue+') of VM region '+i+' ('+\nrawVmRegion.mf+') in process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nbyteStats[byteStatName]=parseInt(rawByteStatValue,16);if(byteStatName==='proportionalResident'&&byteStats[byteStatName]===0){byteStats[byteStatName]=undefined;}}\nvmRegions[i]=new tr.model.VMRegion(parseInt(rawVmRegion.sa,16),parseInt(rawVmRegion.sz,16),rawVmRegion.pf,rawVmRegion.mf,byteStats);}\nprocessMemoryDump.vmRegions=tr.model.VMRegionClassificationNode.fromRegions(vmRegions);},parseMemoryDumpHeapDumps_(processMemoryDump,dumps,pid,dumpId){const idPrefix='p'+pid+':';let importer;if(dumps.heaps){const processTypeMap=this.objectTypeNameMap_[pid];if(processTypeMap===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing mapping from object type IDs to names.'});}\nimporter=new LegacyHeapDumpTraceEventImporter(this.model_,processMemoryDump,processTypeMap,idPrefix,dumpId,dumps.heaps);}else if(dumps.heaps_v2){const data=dumps.heaps_v2;this.heapProfileExpander=this.heapProfileExpander.expandData(data);this.addNewStackFramesFromExpander_(this.heapProfileExpander,idPrefix);importer=new HeapDumpTraceEventImporter(this.heapProfileExpander,this.model_.stackFrames,processMemoryDump,idPrefix,this.model_);}\nif(!importer)return;const heapDumps=importer.parse();if(!heapDumps)return;if(processMemoryDump.heapDumps!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Heap dumps provided multiple times for'+' process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nif(Object.keys(heapDumps).length>0){processMemoryDump.heapDumps=heapDumps;}},addNewStackFramesFromExpander_(expander,idPrefix){const nodeMap=expander.getNewMap('nodes');const newStackFrames={};for(const[id,stackFrame]of nodeMap.entries()){if(!this.model_.stackFrames[idPrefix+id]){newStackFrames[id]={id,name:expander.getString(stackFrame.name_sid),};if(stackFrame.parent)newStackFrames[id].parent=stackFrame.parent;}}\nthis.importStackFrames_(newStackFrames,idPrefix);},parseMemoryDumpLevelOfDetail_(levelsOfDetail,dumps,pid,dumpId){const rawLevelOfDetail=dumps.level_of_detail;let level;switch(rawLevelOfDetail){case'background':level=BACKGROUND;break;case'light':level=LIGHT;break;case'detailed':level=DETAILED;break;case undefined:level=undefined;break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'unknown raw level of detail \\''+rawLevelOfDetail+'\\' of process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;}\nif(!this.updateMemoryDumpLevelOfDetail_(levelsOfDetail,'process',level)){this.model_.importWarning({type:'memory_dump_parse_error',message:'diffent levels of detail provided for process memory'+' dump for PID='+pid+' (dump ID='+dumpId+').'});}},updateMemoryDumpLevelOfDetail_(levelsOfDetail,scope,level){if(!(scope in levelsOfDetail)||level===levelsOfDetail[scope]){levelsOfDetail[scope]=level;return true;}\nif(MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(level)>MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(levelsOfDetail[scope])){levelsOfDetail[scope]=level;}\nreturn false;},parseMemoryDumpAllocatorDumps_(processMemoryDump,globalMemoryDump,processMemoryAllocatorDumpsByFullName,globalMemoryAllocatorDumpsByFullName,allMemoryAllocatorDumpsByGuid,dumps,pid,dumpId){const rawAllocatorDumps=dumps.allocators;if(rawAllocatorDumps===undefined)return;for(let fullName in rawAllocatorDumps){const rawAllocatorDump=rawAllocatorDumps[fullName];const guid=rawAllocatorDump.guid;if(guid===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' for PID='+pid+' and dump ID='+dumpId+' does not have a GUID.'});}\nconst flags=rawAllocatorDump.flags||0;const isWeakDump=!!(flags&WEAK_MEMORY_ALLOCATOR_DUMP_FLAG);let containerMemoryDump;let dstIndex;if(fullName.startsWith(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX)){fullName=fullName.substring(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX.length);containerMemoryDump=globalMemoryDump;dstIndex=globalMemoryAllocatorDumpsByFullName;}else{containerMemoryDump=processMemoryDump;dstIndex=processMemoryAllocatorDumpsByFullName;}\nlet allocatorDump=allMemoryAllocatorDumpsByGuid[guid];if(allocatorDump===undefined){if(fullName in dstIndex){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple GUIDs provided for'+' memory allocator dump '+fullName+': '+\ndstIndex[fullName].guid+', '+guid+' (ignored) for'+' PID='+pid+' and dump ID='+dumpId+'.'});continue;}\nallocatorDump=new tr.model.MemoryAllocatorDump(containerMemoryDump,fullName,guid);allocatorDump.weak=isWeakDump;dstIndex[fullName]=allocatorDump;if(guid!==undefined){allMemoryAllocatorDumpsByGuid[guid]=allocatorDump;}}else{if(allocatorDump.containerMemoryDump!==containerMemoryDump){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+' dumped in different contexts.'});continue;}\nif(allocatorDump.fullName!==fullName){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump with GUID='+guid+' for PID='+\npid+' and dump ID='+dumpId+' has multiple names: '+\nallocatorDump.fullName+', '+fullName+' (ignored).'});continue;}\nif(!isWeakDump){allocatorDump.weak=false;}}\nlet attributes=rawAllocatorDump.attrs;if(attributes===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+' does not have attributes.'});attributes={};}\nfor(const attrName in attributes){const attrArgs=attributes[attrName];const attrType=attrArgs.type;const attrValue=attrArgs.value;switch(attrType){case'scalar':{if(attrName in allocatorDump.numerics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for scalar attribute '+\nattrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+'.'});break;}\nconst unit=attrArgs.units==='bytes'?tr.b.Unit.byName.sizeInBytes_smallerIsBetter:tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const value=parseInt(attrValue,16);allocatorDump.addNumeric(attrName,new tr.b.Scalar(unit,value));break;}\ncase'string':if(attrName in allocatorDump.diagnostics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for string attribute '+\nattrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+\ndumpId+'.'});break;}\nallocatorDump.addDiagnostic(attrName,attrValue);break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'Unknown type provided for attribute '+attrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+': '+\nattrType});break;}}}},inferMemoryAllocatorDumpTree_(memoryAllocatorDumpsByFullName){const rootAllocatorDumps=[];const fullNames=Object.keys(memoryAllocatorDumpsByFullName);fullNames.sort();for(let i=0;i<fullNames.length;i++){let fullName=fullNames[i];let allocatorDump=memoryAllocatorDumpsByFullName[fullName];while(true){const lastSlashIndex=fullName.lastIndexOf('/');if(lastSlashIndex===-1){rootAllocatorDumps.push(allocatorDump);break;}\nconst parentFullName=fullName.substring(0,lastSlashIndex);let parentAllocatorDump=memoryAllocatorDumpsByFullName[parentFullName];let parentAlreadyExisted=true;if(parentAllocatorDump===undefined){parentAlreadyExisted=false;parentAllocatorDump=new tr.model.MemoryAllocatorDump(allocatorDump.containerMemoryDump,parentFullName);if(allocatorDump.weak!==false){parentAllocatorDump.weak=undefined;}\nmemoryAllocatorDumpsByFullName[parentFullName]=parentAllocatorDump;}\nallocatorDump.parent=parentAllocatorDump;parentAllocatorDump.children.push(allocatorDump);if(parentAlreadyExisted){if(!allocatorDump.weak){while(parentAllocatorDump!==undefined&&parentAllocatorDump.weak===undefined){parentAllocatorDump.weak=false;parentAllocatorDump=parentAllocatorDump.parent;}}\nbreak;}\nfullName=parentFullName;allocatorDump=parentAllocatorDump;}}\nfor(const fullName in memoryAllocatorDumpsByFullName){const allocatorDump=memoryAllocatorDumpsByFullName[fullName];if(allocatorDump.weak===undefined){allocatorDump.weak=true;}}\nreturn rootAllocatorDumps;},parseMemoryDumpAllocatorEdges_(allMemoryAllocatorDumpsByGuid,dumpIdEvents,dumpId){for(const pid in dumpIdEvents){const processEvents=dumpIdEvents[pid];for(let i=0;i<processEvents.length;i++){const processEvent=processEvents[i];const dumps=processEvent.args.dumps;if(dumps===undefined)continue;const rawEdges=dumps.allocators_graph;if(rawEdges===undefined)continue;for(let j=0;j<rawEdges.length;j++){const rawEdge=rawEdges[j];const sourceGuid=rawEdge.source;const sourceDump=allMemoryAllocatorDumpsByGuid[sourceGuid];if(sourceDump===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Edge for PID='+pid+' and dump ID='+dumpId+' is missing source memory allocator dump (GUID='+\nsourceGuid+').'});continue;}\nconst targetGuid=rawEdge.target;const targetDump=allMemoryAllocatorDumpsByGuid[targetGuid];if(targetDump===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Edge for PID='+pid+' and dump ID='+dumpId+' is missing target memory allocator dump (GUID='+\ntargetGuid+').'});continue;}\nconst importance=rawEdge.importance;const edge=new tr.model.MemoryAllocatorDumpLink(sourceDump,targetDump,importance);switch(rawEdge.type){case'ownership':if(sourceDump.owns!==undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+sourceDump.fullName+' (GUID='+sourceGuid+') already owns a memory'+' allocator dump ('+\nsourceDump.owns.target.fullName+').'});}else{sourceDump.owns=edge;targetDump.ownedBy.push(edge);}\nbreak;case'retention':sourceDump.retains.push(edge);targetDump.retainedBy.push(edge);break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'Invalid edge type: '+rawEdge.type+' (PID='+pid+', dump ID='+dumpId+', source='+sourceGuid+', target='+targetGuid+', importance='+importance+').'});}}}}},toModelTimeFromUs_(ts){if(!this.toModelTime_){this.toModelTime_=this.model_.clockSyncManager.getModelTimeTransformer(this.clockDomainId_);}\nreturn this.toModelTime_(tr.b.Unit.timestampFromUs(ts));},maybeToModelTimeFromUs_(ts){if(ts===undefined){return undefined;}\nreturn this.toModelTimeFromUs_(ts);},durationFromUs_(dur){if(dur===undefined){return undefined;}\nreturn tr.b.Unit.timestampFromUs(dur);}};tr.importer.Importer.register(TraceEventImporter);return{TraceEventImporter,};});'use strict';tr.exportTo('tr.e.net',function(){const AsyncSlice=tr.model.AsyncSlice;function NetAsyncSlice(){AsyncSlice.apply(this,arguments);this.url_=undefined;this.byteCount_=undefined;this.isTitleComputed_=false;this.isUrlComputed_=false;}\nNetAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){return'NetLog';},get title(){if(this.isTitleComputed_||!this.isTopLevel){return this.title_;}\nif(this.url!==undefined&&this.url.length>0){this.title_=this.url;}else if(this.args!==undefined&&this.args.source_type!==undefined){this.title_=this.args.source_type;}\nthis.isTitleComputed_=true;return this.title_;},set title(title){this.title_=title;},get url(){if(this.isUrlComputed_){return this.url_;}\nif(this.args!==undefined&&this.args.params!==undefined&&this.args.params.url!==undefined){this.url_=this.args.params.url;}else if(this.subSlices!==undefined&&this.subSlices.length>0){for(let i=0;i<this.subSlices.length&&!this.url_;i++){if(this.subSlices[i].url!==undefined){this.url_=this.subSlices[i].url;}}}\nthis.isUrlComputed_=true;return this.url_;},get byteCount(){if(this.byteCount_!==undefined){return this.byteCount_;}\nthis.byteCount_=0;if((this.originalTitle==='URL_REQUEST_JOB_FILTERED_BYTES_READ'||this.originalTitle==='URL_REQUEST_JOB_BYTES_READ')&&this.args!==undefined&&this.args.params!==undefined&&this.args.params.byte_count!==undefined){this.byteCount_=this.args.params.byte_count;}\nfor(let i=0;i<this.subSlices.length;i++){this.byteCount_+=this.subSlices[i].byteCount;}\nreturn this.byteCount_;}};AsyncSlice.subTypes.register(NetAsyncSlice,{categoryParts:['netlog','disabled-by-default-netlog']});return{NetAsyncSlice,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){function Parser(importer){this.importer=importer;this.model=importer.model;}\nParser.prototype={__proto__:Object.prototype};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.mandatoryBaseClass=Parser;tr.b.decorateExtensionRegistry(Parser,options);return{Parser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function AndroidParser(importer){Parser.call(this,importer);importer.registerEventHandler('tracing_mark_write:android',AndroidParser.prototype.traceMarkWriteAndroidEvent.bind(this));importer.registerEventHandler('0:android',AndroidParser.prototype.traceMarkWriteAndroidEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nfunction parseArgs(argsString){const args={};if(argsString){const argsArray=argsString.split(';');for(let i=0;i<argsArray.length;++i){const parts=argsArray[i].split('=');if(parts[0]){args[parts.shift()]=parts.join('=');}}}\nreturn args;}\nAndroidParser.prototype={__proto__:Parser.prototype,openAsyncSlice(thread,category,name,cookie,ts,args){const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(category,name);const slice=new asyncSliceConstructor(category,name,ColorScheme.getColorIdForGeneralPurposeString(name),ts,args);const key=category+':'+name+':'+cookie;slice.id=cookie;slice.startThread=thread;if(!this.openAsyncSlices){this.openAsyncSlices={};}\nthis.openAsyncSlices[key]=slice;},closeAsyncSlice(thread,category,name,cookie,ts,args){if(!this.openAsyncSlices){return;}\nconst key=category+':'+name+':'+cookie;const slice=this.openAsyncSlices[key];if(!slice){return;}\nfor(const arg in args){if(slice.args[arg]!==undefined){this.model_.importWarning({type:'parse_error',message:'Both the S and F events of '+slice.title+' provided values for argument '+arg+'.'+' The value of the F event will be used.'});}\nslice.args[arg]=args[arg];}\nslice.endThread=thread;slice.duration=ts-slice.start;slice.startThread.asyncSliceGroup.push(slice);delete this.openAsyncSlices[key];},traceMarkWriteAndroidEvent(eventName,cpuNumber,pid,ts,eventBase){const eventData=eventBase.details.split('|');switch(eventData[0]){case'B':{const ppid=parseInt(eventData[1]);const title=eventData[2];const args=parseArgs(eventData[3]);let category=eventData[4];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;if(!thread.sliceGroup.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nthis.ppids_[pid]=ppid;thread.sliceGroup.beginSlice(category,title,ts,args);break;}\ncase'E':{const ppid=this.ppids_[pid];if(ppid===undefined){break;}\nconst thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);if(!thread.sliceGroup.openSliceCount){break;}\nconst slice=thread.sliceGroup.endSlice(ts);const args=parseArgs(eventData[3]);for(const arg in args){if(slice.args[arg]!==undefined){this.model_.importWarning({type:'parse_error',message:'Both the B and E events of '+slice.title+' provided values for argument '+arg+'.'+' The value of the E event will be used.'});}\nslice.args[arg]=args[arg];}\nbreak;}\ncase'C':{const ppid=parseInt(eventData[1]);const name=eventData[2];const value=parseInt(eventData[3]);let category=eventData[4];if(category===undefined)category='android';const ctr=this.model_.getOrCreateProcess(ppid).getOrCreateCounter(category,name);if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries(value,ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,value);});break;}\ncase'S':{const ppid=parseInt(eventData[1]);const name=eventData[2];const cookie=parseInt(eventData[3]);const args=parseArgs(eventData[4]);let category=eventData[5];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;this.ppids_[pid]=ppid;this.openAsyncSlice(thread,category,name,cookie,ts,args);break;}\ncase'F':{const ppid=parseInt(eventData[1]);const name=eventData[2];const cookie=parseInt(eventData[3]);const args=parseArgs(eventData[4]);let category=eventData[5];if(category===undefined)category='android';const thread=this.model_.getOrCreateProcess(ppid).getOrCreateThread(pid);thread.name=eventBase.threadName;this.ppids_[pid]=ppid;this.closeAsyncSlice(thread,category,name,cookie,ts,args);break;}\ndefault:return false;}\nreturn true;}};Parser.register(AndroidParser);return{AndroidParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;const binderTransRE=new RegExp('transaction=(\\\\d+) dest_node=(\\\\d+) '+'dest_proc=(\\\\d+) dest_thread=(\\\\d+) '+'reply=(\\\\d+) flags=(0x[0-9a-fA-F]+) '+'code=(0x[0-9a-fA-F]+)');const binderAllocRE=new RegExp('transaction=(\\\\d+) data_size=(\\\\d+) '+'offsets_size=(\\\\d+)');const binderTransReceivedRE=/transaction=(\\d+)/;function isBinderThread(name){return(name.indexOf('Binder')>-1);}\nconst TF_ONE_WAY=0x01;const TF_ROOT_OBJECT=0x04;const TF_STATUS_CODE=0x08;const TF_ACCEPT_FDS=0x10;const NO_FLAGS=0;function binderFlagsToHuman(num){const flag=parseInt(num,16);let str='';if(flag&TF_ONE_WAY){str+='this is a one-way call: async, no return; ';}\nif(flag&TF_ROOT_OBJECT){str+='contents are the components root object; ';}\nif(flag&TF_STATUS_CODE){str+='contents are a 32-bit status code; ';}\nif(flag&TF_ACCEPT_FDS){str+='allow replies with file descriptors; ';}\nif(flag===NO_FLAGS){str+='No Flags Set';}\nreturn str;}\nfunction isReplyToOrigin(calling,called){return(called.dest_proc===calling.calling_pid||called.dest_thread===calling.calling_pid);}\nfunction binderCodeToHuman(code){return'Java Layer Dependent';}\nfunction doInternalSlice(trans,slice,ts){if(slice.subSlices.length!==0){slice.subSlices[0].start=ts;return slice.subSlices[0];}\nconst kthread=trans.calling_kthread.thread;const internalSlice=kthread.sliceGroup.pushCompleteSlice('binder',slice.title,ts,.001,0,0,slice.args);internalSlice.title=slice.title;internalSlice.id=slice.id;internalSlice.colorId=slice.colorId;slice.subSlices.push(internalSlice);return internalSlice;}\nfunction generateBinderArgsForSlice(trans,cThreadName){return{'Transaction Id':trans.transaction_key,'Destination Node':trans.dest_node,'Destination Process':trans.dest_proc,'Destination Thread':trans.dest_thread,'Destination Name':cThreadName,'Reply transaction?':trans.is_reply_transaction,'Flags':trans.flags+' '+\nbinderFlagsToHuman(trans.flags),'Code':trans.code+' '+\nbinderCodeToHuman(trans.code),'Calling PID':trans.calling_pid,'Calling tgid':trans.calling_kthread.thread.parent.pid};}\nfunction BinderTransaction(events,callingPid,callingTs,callingKthread){this.transaction_key=parseInt(events[1]);this.dest_node=parseInt(events[2]);this.dest_proc=parseInt(events[3]);this.dest_thread=parseInt(events[4]);this.is_reply_transaction=parseInt(events[5])===1?true:false;this.expect_reply=((this.is_reply_transaction===false)&&(parseInt(events[6],16)&TF_ONE_WAY)===0);this.flags=events[6];this.code=events[7];this.calling_pid=callingPid;this.calling_ts=callingTs;this.calling_kthread=callingKthread;}\nfunction BinderParser(importer){Parser.call(this,importer);importer.registerEventHandler('binder_locked',BinderParser.prototype.binderLocked.bind(this));importer.registerEventHandler('binder_unlock',BinderParser.prototype.binderUnlock.bind(this));importer.registerEventHandler('binder_lock',BinderParser.prototype.binderLock.bind(this));importer.registerEventHandler('binder_transaction',BinderParser.prototype.binderTransaction.bind(this));importer.registerEventHandler('binder_transaction_received',BinderParser.prototype.binderTransactionReceived.bind(this));importer.registerEventHandler('binder_transaction_alloc_buf',BinderParser.prototype.binderTransactionAllocBuf.bind(this));this.model_=importer.model;this.kthreadlookup={};this.importer_=importer;this.transWaitingRecv={};this.syncTransWaitingCompletion={};this.recursiveSyncTransWaitingCompletion_ByPID={};this.receivedTransWaitingConversion={};}\nBinderParser.prototype={__proto__:Parser.prototype,binderLock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventName.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);kthread.binderAttemptLockTS=ts;kthread.binderOpenTsA=ts;return true;},binderLocked(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const binderThread=isBinderThread(eventBase.threadName);const name=eventBase.threadName;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);this.doNameMappings(pid,tgid,name);const rthread=kthread.thread;kthread.binderLockAquiredTS=ts;if(kthread.binderAttemptLockTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,name,kthread);rthread.sliceGroup.pushCompleteSlice('binder','binder lock waiting',kthread.binderAttemptLockTS,ts-kthread.binderAttemptLockTS,0,0,args);kthread.binderAttemptLockTS=undefined;return true;},binderUnlock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);if(kthread.binderLockAquiredTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,eventBase.threadName,kthread);kthread.thread.sliceGroup.pushCompleteSlice('binder','binder lock held',kthread.binderLockAquiredTS,ts-kthread.binderLockAquiredTS,0,0,args);kthread.binderLockAquiredTS=undefined;return true;},binderTransaction(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventBase.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const trans=new BinderTransaction(event,pid,ts,kthread);const args=generateBinderArgsForSlice(trans,eventBase.threadName);const priorReceive=this.getPriorReceiveOnPID(pid);if(priorReceive!==false){return this.modelPriorReceive(priorReceive,ts,pid,tgid,kthread,trans,args,event);}\nconst recursiveTrans=this.getRecursiveTransactionNeedingCompletion(pid);if(recursiveTrans!==false){return this.modelRecursiveTransactions(recursiveTrans,ts,pid,kthread,trans,args);}\nconst slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',ts,.03,0,0,args);slice.colorId=ColorScheme.getColorIdForGeneralPurposeString(ts.toString());trans.slice=slice;if(trans.expect_reply){slice.title='binder transaction';}else{slice.title='binder transaction async';}\nthis.addTransactionWaitingForRecv(trans.transaction_key,trans);return true;},binderTransactionReceived(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransReceivedRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const transactionkey=parseInt(event[1]);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const syncComplete=this.getSyncTransNeedsCompletion(transactionkey);if(syncComplete!==false){const syncTrans=syncComplete[0];const syncSlice=syncTrans.slice;const responseTrans=syncComplete[1];const responseSlice=responseTrans.slice;syncSlice.duration=ts-syncSlice.start;const syncInternal=doInternalSlice(syncTrans,syncSlice,ts);const responseTs=responseSlice.start+responseSlice.duration;const responseInternal=doInternalSlice(responseTrans,responseSlice,responseTs);if(responseSlice.outFlowEvents.length===0||syncSlice.inFlowEvents.length===0){const flow=this.generateFlow(responseInternal,syncInternal,responseTrans,syncTrans);syncSlice.inFlowEvents.push(flow);responseSlice.outFlowEvents.push(flow);this.model_.flowEvents.push(flow);}\nfor(let i=1;i<syncSlice.inFlowEvents.length;i++){syncSlice.inFlowEvents[i].duration=ts-syncSlice.inFlowEvents[i].start;}\nreturn true;}\nconst trForRecv=this.getTransactionWaitingForRecv(transactionkey);if(trForRecv!==false){if(!trForRecv.expect_reply){const args=generateBinderArgsForSlice(trForRecv,eventBase.threadName);const slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','binder Async recv',ts,.03,0,0,args);const fakeEvent=[0,0,0,0,0,0,0];const fakeTrans=new BinderTransaction(fakeEvent,pid,ts,kthread);const flow=this.generateFlow(trForRecv.slice,slice,trForRecv,fakeTrans);this.model_.flowEvents.push(flow);trForRecv.slice.title='binder transaction async';trForRecv.slice.duration=.03;return true;}\ntrForRecv.slice.title='binder transaction';this.setCurrentReceiveOnPID(pid,[ts,trForRecv]);return true;}\nreturn false;},binderTransactionAllocBuf(eventName,cpuNumber,pid,ts,eventBase){const event=binderAllocRE.exec(eventBase.details);if(event===null)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const transactionkey=parseInt(event[1]);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const trans=this.peekTransactionWaitingForRecv(transactionkey);if(trans&&trans.slice){trans.slice.args['Data Size']=parseInt(event[2]);trans.slice.args['Offsets Size']=parseInt(event[3]);return true;}\nreturn false;},modelRecursiveTransactions(recursiveTrans,ts,pid,kthread,trans,args){const recursiveSlice=recursiveTrans[1].slice;const origSlice=recursiveTrans[0].slice;recursiveSlice.duration=ts-recursiveSlice.start;recursiveSlice.args=args;trans.slice=recursiveSlice;if(trans.is_reply_transaction){origSlice.duration=ts-origSlice.start;this.addSyncTransNeedingCompletion(trans.transaction_key,recursiveTrans);if(isReplyToOrigin(recursiveTrans[0],trans)){this.removeRecursiveTransaction(pid);}}else{const slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',ts,.03,0,0,args);trans.slice=slice;this.addTransactionWaitingForRecv(trans.transaction_key,trans);}\nreturn true;},modelPriorReceive(priorReceive,ts,pid,tgid,kthread,trans,args,event){const calleeSlice=priorReceive[1].slice;const calleeTrans=priorReceive[1];const recvTs=priorReceive[0];let slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',recvTs,ts-recvTs,0,0);const flow=this.generateFlow(calleeSlice,slice,calleeTrans,trans);this.model_.flowEvents.push(flow);trans.slice=slice;if(trans.is_reply_transaction){slice.title='binder reply';slice.args=args;this.addSyncTransNeedingCompletion(trans.transaction_key,[calleeTrans,trans]);}else{slice.title='binder reply';const trans1=new BinderTransaction(event,pid,ts,kthread);slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','binder transaction',recvTs,(ts-recvTs),0,0,args);if(!trans.expect_reply){slice.title='binder transaction async';slice.duration=.03;}else{}\ntrans1.slice=slice;this.addRecursiveSyncTransNeedingCompletion(pid,[calleeTrans,trans]);this.addTransactionWaitingForRecv(trans.transaction_key,trans1);}\nreturn true;},getRecursiveTransactionNeedingCompletion(pid){if(this.recursiveSyncTransWaitingCompletion_ByPID[pid]===undefined){return false;}\nconst len=this.recursiveSyncTransWaitingCompletion_ByPID[pid].length;if(len===0)return false;return this.recursiveSyncTransWaitingCompletion_ByPID[pid][len-1];},addRecursiveSyncTransNeedingCompletion(pid,tuple){if(this.recursiveSyncTransWaitingCompletion_ByPID[pid]===undefined){this.recursiveSyncTransWaitingCompletion_ByPID[pid]=[];}\nthis.recursiveSyncTransWaitingCompletion_ByPID[pid].push(tuple);},removeRecursiveTransaction(pid){const len=this.recursiveSyncTransWaitingCompletion_ByPID[pid].length;if(len===0){delete this.recursiveSyncTransWaitingCompletion_ByPID[pid];return;}\nthis.recursiveSyncTransWaitingCompletion_ByPID[pid].splice(len-1,1);},setCurrentReceiveOnPID(pid,tuple){if(this.receivedTransWaitingConversion[pid]===undefined){this.receivedTransWaitingConversion[pid]=[];}\nthis.receivedTransWaitingConversion[pid].push(tuple);},getPriorReceiveOnPID(pid){if(this.receivedTransWaitingConversion[pid]===undefined){return false;}\nconst len=this.receivedTransWaitingConversion[pid].length;if(len===0)return false;return this.receivedTransWaitingConversion[pid].splice(len-1,1)[0];},addSyncTransNeedingCompletion(transactionkey,tuple){const dict=this.syncTransWaitingCompletion;dict[transactionkey]=tuple;},getSyncTransNeedsCompletion(transactionkey){const ret=this.syncTransWaitingCompletion[transactionkey];if(ret===undefined)return false;delete this.syncTransWaitingCompletion[transactionkey];return ret;},getTransactionWaitingForRecv(transactionkey){const ret=this.transWaitingRecv[transactionkey];if(ret===undefined)return false;delete this.transWaitingRecv[transactionkey];return ret;},peekTransactionWaitingForRecv(transactionkey){const ret=this.transWaitingRecv[transactionkey];if(ret===undefined)return false;return ret;},addTransactionWaitingForRecv(transactionkey,transaction){this.transWaitingRecv[transactionkey]=transaction;},generateFlow(from,to,fromTrans,toTrans){const title='Transaction from : '+\nthis.pid2name(fromTrans.calling_pid)+' From PID: '+fromTrans.calling_pid+' to pid: '+\ntoTrans.calling_pid+' Thread Name: '+this.pid2name(toTrans.calling_pid);const ts=from.start;const flow=new tr.model.FlowEvent('binder','binder',title,1,ts,[]);flow.startSlice=from;flow.endSlice=to;flow.start=from.start;flow.duration=to.start-ts;from.outFlowEvents.push(flow);to.inFlowEvents.push(flow);return flow;},generateArgsForSlice(tgid,pid,name,kthread){return{'Thread Name':name,pid,'gid':tgid};},pid2name(pid){return this.kthreadlookup[pid];},doNameMappings(pid,tgid,name){this.registerPidName(pid,name);this.registerPidName(tgid,name);},registerPidName(pid,name){if(this.pid2name(pid)===undefined){this.kthreadlookup[pid]=name;}}};Parser.register(BinderParser);return{BinderParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function BusParser(importer){Parser.call(this,importer);importer.registerEventHandler('memory_bus_usage',BusParser.prototype.traceMarkWriteBusEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nBusParser.prototype={__proto__:Parser.prototype,traceMarkWriteBusEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const re=new RegExp('bus=(\\\\S+) rw_bytes=(\\\\d+) r_bytes=(\\\\d+) '+'w_bytes=(\\\\d+) cycles=(\\\\d+) ns=(\\\\d+)');const event=re.exec(eventBase.details);const name=event[1];const rwBytes=parseInt(event[2]);const rBytes=parseInt(event[3]);const wBytes=parseInt(event[4]);const cycles=parseInt(event[5]);const ns=parseInt(event[6]);const sec=tr.b.convertUnit(ns,tr.b.UnitPrefixScale.METRIC.NANO,tr.b.UnitPrefixScale.METRIC.NONE);const readBandwidthInBps=rBytes/sec;const readBandwidthInMiBps=tr.b.convertUnit(readBandwidthInBps,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI);const writeBandwidthInBps=wBytes/sec;const writeBandwidthInMiBps=tr.b.convertUnit(writeBandwidthInBps,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI);let ctr=this.model_.kernel.getOrCreateCounter(null,'bus '+name+' read');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,readBandwidthInMiBps);});ctr=this.model_.kernel.getOrCreateCounter(null,'bus '+name+' write');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,writeBandwidthInMiBps);});return true;}};Parser.register(BusParser);return{BusParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ClockParser(importer){Parser.call(this,importer);importer.registerEventHandler('clock_set_rate',ClockParser.prototype.traceMarkWriteClockEvent.bind(this));importer.registerEventHandler('clk_set_rate',ClockParser.prototype.traceMarkWriteClkEvent.bind(this));importer.registerEventHandler('clock_enable',ClockParser.prototype.traceMarkWriteClockOnOffEvent.bind(this));importer.registerEventHandler('clock_disable',ClockParser.prototype.traceMarkWriteClockOnOffEvent.bind(this));importer.registerEventHandler('clk_enable',ClockParser.prototype.traceMarkWriteClkOnEvent.bind(this));importer.registerEventHandler('clk_disable',ClockParser.prototype.traceMarkWriteClkOffEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nClockParser.prototype={__proto__:Parser.prototype,clockMark(name,subName,value,ts){const ctr=this.model_.kernel.getOrCreateCounter(null,name+' '+subName);if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,value);});},traceMarkWriteClockEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) state=(\\d+)/.exec(eventBase.details);const name=event[1];const rate=parseInt(event[2]);this.clockMark(name,'Frequency',rate,ts);return true;},traceMarkWriteClkEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) (\\d+)/.exec(eventBase.details);const name=event[1];const rate=parseInt(event[2]);this.clockMark(name,'Frequency',rate,ts);return true;},traceMarkWriteClockOnOffEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/(\\S+) state=(\\d+)/.exec(eventBase.details);const name=event[1];const state=parseInt(event[2]);this.clockMark(name,'State',state,ts);return true;},traceMarkWriteClkOnEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/\\S+/.exec(eventBase.details);const name=event[0];this.clockMark(name,'State',1,ts);return true;},traceMarkWriteClkOffEvent(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=/\\S+/.exec(eventBase.details);const name=event[0];this.clockMark(name,'State',0,ts);return true;}};Parser.register(ClockParser);return{ClockParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function CpufreqParser(importer){Parser.call(this,importer);importer.registerEventHandler('cpufreq_interactive_up',CpufreqParser.prototype.cpufreqUpDownEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_down',CpufreqParser.prototype.cpufreqUpDownEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_already',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_notyet',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_setspeed',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_target',CpufreqParser.prototype.cpufreqTargetEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_boost',CpufreqParser.prototype.cpufreqBoostUnboostEvent.bind(this));importer.registerEventHandler('cpufreq_interactive_unboost',CpufreqParser.prototype.cpufreqBoostUnboostEvent.bind(this));}\nfunction splitData(input){const data={};const args=input.split(/\\s+/);const len=args.length;for(let i=0;i<len;i++){const item=args[i].split('=');data[item[0]]=parseInt(item[1]);}\nreturn data;}\nCpufreqParser.prototype={__proto__:Parser.prototype,cpufreqSlice(ts,eventName,cpu,args){const kthread=this.importer.getOrCreatePseudoThread('cpufreq');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},cpufreqBoostSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('cpufreq_boost');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},cpufreqUpDownEvent(eventName,cpuNumber,pid,ts,eventBase){const data=splitData(eventBase.details);this.cpufreqSlice(ts,eventName,data.cpu,data);return true;},cpufreqTargetEvent(eventName,cpuNumber,pid,ts,eventBase){const data=splitData(eventBase.details);this.cpufreqSlice(ts,eventName,data.cpu,data);return true;},cpufreqBoostUnboostEvent(eventName,cpuNumber,pid,ts,eventBase){this.cpufreqBoostSlice(ts,eventName,{type:eventBase.details});return true;}};Parser.register(CpufreqParser);return{CpufreqParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DiskParser(importer){Parser.call(this,importer);importer.registerEventHandler('f2fs_write_begin',DiskParser.prototype.f2fsWriteBeginEvent.bind(this));importer.registerEventHandler('f2fs_write_end',DiskParser.prototype.f2fsWriteEndEvent.bind(this));importer.registerEventHandler('f2fs_sync_file_enter',DiskParser.prototype.f2fsSyncFileEnterEvent.bind(this));importer.registerEventHandler('f2fs_sync_file_exit',DiskParser.prototype.f2fsSyncFileExitEvent.bind(this));importer.registerEventHandler('ext4_sync_file_enter',DiskParser.prototype.ext4SyncFileEnterEvent.bind(this));importer.registerEventHandler('ext4_sync_file_exit',DiskParser.prototype.ext4SyncFileExitEvent.bind(this));importer.registerEventHandler('ext4_da_write_begin',DiskParser.prototype.ext4WriteBeginEvent.bind(this));importer.registerEventHandler('ext4_da_write_end',DiskParser.prototype.ext4WriteEndEvent.bind(this));importer.registerEventHandler('block_rq_issue',DiskParser.prototype.blockRqIssueEvent.bind(this));importer.registerEventHandler('block_rq_complete',DiskParser.prototype.blockRqCompleteEvent.bind(this));}\nDiskParser.prototype={__proto__:Parser.prototype,openAsyncSlice(ts,category,threadName,pid,key,name){const kthread=this.importer.getOrCreateKernelThread(category+':'+threadName,pid);const asyncSliceConstructor=tr.model.AsyncSlice.subTypes.getConstructor(category,name);const slice=new asyncSliceConstructor(category,name,ColorScheme.getColorIdForGeneralPurposeString(name),ts);slice.startThread=kthread.thread;if(!kthread.openAsyncSlices){kthread.openAsyncSlices={};}\nkthread.openAsyncSlices[key]=slice;},closeAsyncSlice(ts,category,threadName,pid,key,args){const kthread=this.importer.getOrCreateKernelThread(category+':'+threadName,pid);if(kthread.openAsyncSlices){const slice=kthread.openAsyncSlices[key];if(slice){slice.duration=ts-slice.start;slice.args=args;slice.endThread=kthread.thread;slice.subSlices=[new tr.model.AsyncSlice(category,slice.title,slice.colorId,slice.start,slice.args,slice.duration)];kthread.thread.asyncSliceGroup.push(slice);delete kthread.openAsyncSlices[key];}}},f2fsWriteBeginEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev = \\((\\d+,\\d+)\\), ino = (\\d+), pos = (\\d+), len = (\\d+), flags = (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const key=device+'-'+inode+'-'+pos+'-'+len;this.openAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,'f2fs_write');return true;},f2fsWriteEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev = \\((\\d+,\\d+)\\), ino = (\\d+), pos = (\\d+), len = (\\d+), copied = (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const error=parseInt(event[5])!==len;const key=device+'-'+inode+'-'+pos+'-'+len;this.closeAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},ext4WriteBeginEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) pos (\\d+) len (\\d+) flags (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const key=device+'-'+inode+'-'+pos+'-'+len;this.openAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,'ext4_write');return true;},ext4WriteEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) pos (\\d+) len (\\d+) copied (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const pos=parseInt(event[3]);const len=parseInt(event[4]);const error=parseInt(event[5])!==len;const key=device+'-'+inode+'-'+pos+'-'+len;this.closeAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},f2fsSyncFileEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('dev = \\\\((\\\\d+,\\\\d+)\\\\), ino = (\\\\d+), pino = (\\\\d+), i_mode = (\\\\S+), '+'i_size = (\\\\d+), i_nlink = (\\\\d+), i_blocks = (\\\\d+), i_advise = (\\\\d+)').exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const key=device+'-'+inode;this.openAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,'fsync');return true;},f2fsSyncFileExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('dev = \\\\((\\\\d+,\\\\d+)\\\\), ino = (\\\\d+), checkpoint is (\\\\S+), '+'datasync = (\\\\d+), ret = (\\\\d+)').exec(eventBase.details.replace('not needed','not_needed'));if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const error=parseInt(event[5]);const key=device+'-'+inode;this.closeAsyncSlice(ts,'f2fs',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},ext4SyncFileEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) parent (\\d+) datasync (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const datasync=(event[4]==='1')||(event[4]===1);const key=device+'-'+inode;const action=datasync?'fdatasync':'fsync';this.openAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,action);return true;},ext4SyncFileExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev (\\d+,\\d+) ino (\\d+) ret (\\d+)/.exec(eventBase.details);if(!event)return false;const device=event[1];const inode=parseInt(event[2]);const error=parseInt(event[3]);const key=device+'-'+inode;this.closeAsyncSlice(ts,'ext4',eventBase.threadName,eventBase.pid,key,{device,inode,error});return true;},blockRqIssueEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('(\\\\d+,\\\\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? '+'\\\\d+ \\\\(.*\\\\) (\\\\d+) \\\\+ (\\\\d+) \\\\[.*\\\\]').exec(eventBase.details);if(!event)return false;let action;switch(event[3]){case'D':action='discard';break;case'W':action='write';break;case'R':action='read';break;case'N':action='none';break;default:action='unknown';break;}\nif(event[2]){action+=' flush';}\nif(event[4]==='F'){action+=' fua';}\nif(event[5]==='A'){action+=' ahead';}\nif(event[6]==='S'){action+=' sync';}\nif(event[7]==='M'){action+=' meta';}\nconst device=event[1];const sector=parseInt(event[8]);const numSectors=parseInt(event[9]);const key=device+'-'+sector+'-'+numSectors;this.openAsyncSlice(ts,'block',eventBase.threadName,eventBase.pid,key,action);return true;},blockRqCompleteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=new RegExp('(\\\\d+,\\\\d+) (F)?([DWRN])(F)?(A)?(S)?(M)? '+'\\\\(.*\\\\) (\\\\d+) \\\\+ (\\\\d+) \\\\[(.*)\\\\]').exec(eventBase.details);if(!event)return false;const device=event[1];const sector=parseInt(event[8]);const numSectors=parseInt(event[9]);const error=parseInt(event[10]);const key=device+'-'+sector+'-'+numSectors;this.closeAsyncSlice(ts,'block',eventBase.threadName,eventBase.pid,key,{device,sector,numSectors,error});return true;}};Parser.register(DiskParser);return{DiskParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DmaFenceParser(importer){Parser.call(this,importer);this.model_=importer.model_;importer.registerEventHandler('dma_fence_init',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('dma_fence_emit',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('dma_fence_destroy',DmaFenceParser.prototype.fenceDestroyEvent.bind(this));importer.registerEventHandler('dma_fence_enable_signal',DmaFenceParser.prototype.fenceEnableSignalEvent.bind(this));importer.registerEventHandler('dma_fence_signaled',DmaFenceParser.prototype.fenceSignaledEvent.bind(this));importer.registerEventHandler('dma_fence_wait_start',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('dma_fence_wait_end',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('fence_init',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('fence_emit',DmaFenceParser.prototype.initEvent.bind(this));importer.registerEventHandler('fence_destroy',DmaFenceParser.prototype.fenceDestroyEvent.bind(this));importer.registerEventHandler('fence_enable_signal',DmaFenceParser.prototype.fenceEnableSignalEvent.bind(this));importer.registerEventHandler('fence_signaled',DmaFenceParser.prototype.fenceSignaledEvent.bind(this));importer.registerEventHandler('fence_wait_start',DmaFenceParser.prototype.fenceWaitEvent.bind(this));importer.registerEventHandler('fence_wait_end',DmaFenceParser.prototype.fenceWaitEvent.bind(this));this.model_=importer.model_;}\nconst fenceRE=/driver=(\\S+) timeline=(\\S+) context=(\\d+) seqno=(\\d+)/;DmaFenceParser.prototype={__proto__:Parser.prototype,initEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);thread.lastActiveTs=ts;return true;},fenceDestroyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_destroy('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;},fenceEnableSignalEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_enable('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;},fenceSignaledEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_signal('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);}\nif(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);}\nthread.lastActiveTs=ts;return true;},fenceWaitEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined)return false;const event=fenceRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst name='dma_fence_wait(\"'+event[2]+'\")';if(eventName.endsWith('start')){const slice=slices.beginSlice(null,name,ts,{driver:event[1],context:event[3],seqno:event[4],});}else{if(slices.openSliceCount>0){slices.endSlice(ts);}}\nreturn true;},};Parser.register(DmaFenceParser);return{DmaFenceParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DrmParser(importer){Parser.call(this,importer);importer.registerEventHandler('drm_vblank_event',DrmParser.prototype.vblankEvent.bind(this));}\nDrmParser.prototype={__proto__:Parser.prototype,drmVblankSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('drm_vblank');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},vblankEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/crtc=(\\d+), seq=(\\d+)/.exec(eventBase.details);if(!event)return false;const crtc=parseInt(event[1]);const seq=parseInt(event[2]);this.drmVblankSlice(ts,'vblank:'+crtc,{crtc,seq});return true;}};Parser.register(DrmParser);return{DrmParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ExynosParser(importer){Parser.call(this,importer);importer.registerEventHandler('exynos_busfreq_target_int',ExynosParser.prototype.busfreqTargetIntEvent.bind(this));importer.registerEventHandler('exynos_busfreq_target_mif',ExynosParser.prototype.busfreqTargetMifEvent.bind(this));importer.registerEventHandler('exynos_page_flip_state',ExynosParser.prototype.pageFlipStateEvent.bind(this));}\nExynosParser.prototype={__proto__:Parser.prototype,exynosBusfreqSample(name,ts,frequency){const targetCpu=this.importer.getOrCreateCpu(0);const counter=targetCpu.getOrCreateCounter('',name);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries('frequency',ColorScheme.getColorIdForGeneralPurposeString(counter.name+'.'+'frequency')));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,frequency);});},busfreqTargetIntEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('INT Frequency',ts,parseInt(event[1]));return true;},busfreqTargetMifEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('MIF Frequency',ts,parseInt(event[1]));return true;},exynosPageFlipStateOpenSlice(ts,pipe,fb,state){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');kthread.openSliceTS=ts;kthread.openSlice=state;},exynosPageFlipStateCloseSlice(ts,pipe,fb,args){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;},pageFlipStateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/pipe=(\\d+), fb=(\\d+), state=(.*)/.exec(eventBase.details);if(!event)return false;const pipe=parseInt(event[1]);const fb=parseInt(event[2]);const state=event[3];this.exynosPageFlipStateCloseSlice(ts,pipe,fb,{pipe,fb});if(state!=='flipped'){this.exynosPageFlipStateOpenSlice(ts,pipe,fb,state);}\nreturn true;}};Parser.register(ExynosParser);return{ExynosParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function GestureParser(importer){Parser.call(this,importer);importer.registerEventHandler('tracing_mark_write:log',GestureParser.prototype.logEvent.bind(this));importer.registerEventHandler('tracing_mark_write:SyncInterpret',GestureParser.prototype.syncEvent.bind(this));importer.registerEventHandler('tracing_mark_write:HandleTimer',GestureParser.prototype.timerEvent.bind(this));}\nGestureParser.prototype={__proto__:Parser.prototype,gestureOpenSlice(title,ts,opt_args){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;thread.sliceGroup.beginSlice('touchpad_gesture',title,ts,opt_args);},gestureCloseSlice(title,ts){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;if(thread.sliceGroup.openSliceCount){const slice=thread.sliceGroup.mostRecentlyOpenedPartialSlice;if(slice.title!==title){this.importer.model.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+\nslice.title+' in openSlice, and is '+\ntitle+' in endSlice'});}else{thread.sliceGroup.endSlice(ts);}}},logEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('GestureLog',ts,{name:innerEvent[2]});break;case'end':this.gestureCloseSlice('GestureLog',ts);}\nreturn true;},syncEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('SyncInterpret',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('SyncInterpret',ts);}\nreturn true;},timerEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\\s*(\\w+):\\s*(\\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('HandleTimer',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('HandleTimer',ts);}\nreturn true;}};Parser.register(GestureParser);return{GestureParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I2cParser(importer){Parser.call(this,importer);importer.registerEventHandler('i2c_write',I2cParser.prototype.i2cWriteEvent.bind(this));importer.registerEventHandler('i2c_read',I2cParser.prototype.i2cReadEvent.bind(this));importer.registerEventHandler('i2c_reply',I2cParser.prototype.i2cReplyEvent.bind(this));importer.registerEventHandler('i2c_result',I2cParser.prototype.i2cResultEvent.bind(this));}\nconst i2cWriteReplyRE=new RegExp('i2c-(\\\\d+) #(\\\\d+) a=([\\\\da-fA-F]+) f=([\\\\da-fA-F]+) l=(\\\\d+) '+'(\\\\[[\\\\da-fA-F\\\\-]+\\\\])');const i2cReadRE=/i2c-(\\d+) #(\\d+) a=([\\da-fA-F]+) f=([\\da-fA-F]+) l=(\\d+)/;const i2cResultRE=/i2c-(\\d+) n=(\\d+) ret=(\\d+)/;I2cParser.prototype={__proto__:Parser.prototype,i2cWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c write';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cReadEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cReadRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c read';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength};return true;},i2cReplyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c reply';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cResultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cResultRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const numMessages=event[2];const ret=event[3];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);const args=thread.lastEntryArgs;if(args!==undefined){args['Number of messages']=numMessages;args.Return=ret;}\npushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle=undefined;thread.lastEntryTs=undefined;thread.lastEntryArgs=undefined;return true;},};function pushLastSliceIfNeeded(thread,id,currentTs){if(thread.lastEntryTs!==undefined){const duration=currentTs-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.lastEntryTitle,ColorScheme.getColorIdForGeneralPurposeString(id),thread.lastEntryTs,thread.lastEntryArgs,duration);thread.thread.sliceGroup.pushSlice(slice);}}\nParser.register(I2cParser);return{I2cParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I915Parser(importer){Parser.call(this,importer);importer.registerEventHandler('i915_gem_object_create',I915Parser.prototype.gemObjectCreateEvent.bind(this));importer.registerEventHandler('i915_gem_object_bind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_unbind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_change_domain',I915Parser.prototype.gemObjectChangeDomainEvent.bind(this));importer.registerEventHandler('i915_gem_object_pread',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_pwrite',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_fault',I915Parser.prototype.gemObjectFaultEvent.bind(this));importer.registerEventHandler('i915_gem_object_clflush',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_object_destroy',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_ring_dispatch',I915Parser.prototype.gemRingDispatchEvent.bind(this));importer.registerEventHandler('i915_gem_ring_flush',I915Parser.prototype.gemRingFlushEvent.bind(this));importer.registerEventHandler('i915_gem_request',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_add',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_complete',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_retire',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_begin',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_end',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_begin',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_end',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_reg_rw',I915Parser.prototype.regRWEvent.bind(this));importer.registerEventHandler('i915_flip_request',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('i915_flip_complete',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('intel_gpu_freq_change',I915Parser.prototype.gpuFrequency.bind(this));}\nI915Parser.prototype={__proto__:Parser.prototype,i915FlipOpenSlice(ts,obj,plane){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');kthread.openSliceTS=ts;kthread.openSlice='flip:'+obj+'/'+plane;},i915FlipCloseSlice(ts,args){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;},i915GemObjectSlice(ts,eventName,obj,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem');kthread.openSlice=eventName+':'+obj;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915GemRingSlice(ts,eventName,dev,ring,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem_ring');kthread.openSlice=eventName+':'+dev+'.'+ring;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915RegSlice(ts,eventName,reg,args){const kthread=this.importer.getOrCreatePseudoThread('i915_reg');kthread.openSlice=eventName+':'+reg;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915FreqChangeSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gpu_freq');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},gemObjectCreateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), size=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const size=parseInt(event[2]);this.i915GemObjectSlice(ts,eventName,obj,{obj,size});return true;},gemObjectBindEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), offset=(\\w+), size=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=event[2];const size=parseInt(event[3]);this.i915ObjectGemSlice(ts,eventName+':'+obj,{obj,offset,size});return true;},gemObjectChangeDomainEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), read=(\\w+=>\\w+), write=(\\w+=>\\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const read=event[2];const write=event[3];this.i915GemObjectSlice(ts,eventName,obj,{obj,read,write});return true;},gemObjectPreadWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), offset=(\\d+), len=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=parseInt(event[2]);const len=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,offset,len});return true;},gemObjectFaultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+), (\\w+) index=(\\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const type=event[2];const index=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,type,index});return true;},gemObjectDestroyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];this.i915GemObjectSlice(ts,eventName,obj,{obj});return true;},gemRingDispatchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+), seqno=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingFlushEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\w+), invalidate=(\\w+), flush=(\\w+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const invalidate=event[3];const flush=event[4];this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,invalidate,flush});return true;},gemRequestEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+), seqno=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\\d+), ring=(\\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring});return true;},regRWEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/(\\w+) reg=(\\w+), len=(\\d+), val=(\\(\\w+, \\w+\\))/.exec(eventBase.details);if(!event)return false;const rw=event[1];const reg=event[2];const len=event[3];const data=event[3];this.i915RegSlice(ts,rw,reg,{rw,reg,len,data});return true;},flipEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/plane=(\\d+), obj=(\\w+)/.exec(eventBase.details);if(!event)return false;const plane=parseInt(event[1]);const obj=event[2];if(eventName==='i915_flip_request'){this.i915FlipOpenSlice(ts,obj,plane);}else{this.i915FlipCloseSlice(ts,{obj,plane});}\nreturn true;},gpuFrequency(eventName,cpuNumver,pid,ts,eventBase){const event=/new_freq=(\\d+)/.exec(eventBase.details);if(!event)return false;const freq=parseInt(event[1]);this.i915FreqChangeSlice(ts,eventName,{freq});return true;}};Parser.register(I915Parser);return{I915Parser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IonHeapParser(importer){Parser.call(this,importer);importer.registerEventHandler('ion_heap_shrink',IonHeapParser.prototype.traceIonHeapShrink.bind(this));importer.registerEventHandler('ion_heap_grow',IonHeapParser.prototype.traceIonHeapGrow.bind(this));this.model_=importer.model_;}\nconst TestExports={};const ionHeapRE=new RegExp('heap_name=(\\\\S+), len=(\\\\d+), total_allocated=(\\\\d+)');TestExports.ionHeapRE=ionHeapRE;IonHeapParser.prototype={__proto__:Parser.prototype,traceIonHeapShrink(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;},traceIonHeapGrow(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));}\nctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;}};Parser.register(IonHeapParser);return{IonHeapParser,_IonHeapParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IrqParser(importer){Parser.call(this,importer);importer.registerEventHandler('irq_handler_entry',IrqParser.prototype.irqHandlerEntryEvent.bind(this));importer.registerEventHandler('irq_handler_exit',IrqParser.prototype.irqHandlerExitEvent.bind(this));importer.registerEventHandler('softirq_raise',IrqParser.prototype.softirqRaiseEvent.bind(this));importer.registerEventHandler('softirq_entry',IrqParser.prototype.softirqEntryEvent.bind(this));importer.registerEventHandler('softirq_exit',IrqParser.prototype.softirqExitEvent.bind(this));importer.registerEventHandler('ipi_entry',IrqParser.prototype.ipiEntryEvent.bind(this));importer.registerEventHandler('ipi_exit',IrqParser.prototype.ipiExitEvent.bind(this));importer.registerEventHandler('preempt_disable',IrqParser.prototype.preemptStartEvent.bind(this));importer.registerEventHandler('preempt_enable',IrqParser.prototype.preemptEndEvent.bind(this));importer.registerEventHandler('irq_disable',IrqParser.prototype.irqoffStartEvent.bind(this));importer.registerEventHandler('irq_enable',IrqParser.prototype.irqoffEndEvent.bind(this));}\nconst irqHandlerEntryRE=/irq=(\\d+) name=(.+)/;const irqHandlerExitRE=/irq=(\\d+) ret=(.+)/;const softirqRE=/vec=(\\d+) \\[action=(.+)\\]/;const ipiHandlerExitRE=/\\((.+)\\)/;const preemptirqRE=/caller=(.+) parent=(.+)/;IrqParser.prototype={__proto__:Parser.prototype,irqHandlerEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerEntryRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const name=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqName=name;return true;},irqHandlerExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerExitRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const ret=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IRQ ('+thread.irqName+')',ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{ret},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;thread.irqName=undefined;return true;},softirqRaiseEvent(eventName,cpuNumber,pid,ts,eventBase){return true;},softirqEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},softirqExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const vec=parseInt(event[1]);const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',action,ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{vec},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},ipiEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},ipiExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=ipiHandlerExitRE.exec(eventBase.details);if(!event)return false;const ipiName=event[1];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IPI ('+ipiName+')',ColorScheme.getColorIdForGeneralPurposeString(ipiName),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},preemptStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.lastEntryTs=ts;thread.preemptStartCaller=event[1];thread.preemptStartParent=event[2];return true;},preemptEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.preemptEndCaller=event[1];thread.preemptEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.preemptStartParent+': '+thread.preemptStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.preemptEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;},irqoffStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqoffStartCaller=event[1];thread.irqoffStartParent=event[2];return true;},irqoffEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.irqoffEndCaller=event[1];thread.irqoffEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.irqoffStartParent+': '+thread.irqoffStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.irqoffEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastEntryTs=undefined;return true;}};Parser.register(IrqParser);return{IrqParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const LinuxPerfParser=tr.e.importer.linux_perf.Parser;function KernelFuncParser(importer){LinuxPerfParser.call(this,importer);importer.registerEventHandler('graph_ent',KernelFuncParser.prototype.traceKernelFuncEnterEvent.bind(this));importer.registerEventHandler('graph_ret',KernelFuncParser.prototype.traceKernelFuncReturnEvent.bind(this));this.model_=importer.model_;this.ppids_={};}\nconst TestExports={};const funcEnterRE=new RegExp('func=(.+)');TestExports.funcEnterRE=funcEnterRE;KernelFuncParser.prototype={__proto__:LinuxPerfParser.prototype,traceKernelFuncEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const eventData=funcEnterRE.exec(eventBase.details);if(!eventData)return false;if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const name=eventData[1];const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst slice=slices.beginSlice(null,name,ts,{});return true;},traceKernelFuncReturnEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nif(slices.openSliceCount>0){slices.endSlice(ts);}\nreturn true;}};LinuxPerfParser.register(KernelFuncParser);return{KernelFuncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function MaliParser(importer){Parser.call(this,importer);importer.registerEventHandler('mali_dvfs_event',MaliParser.prototype.dvfsEventEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_clock',MaliParser.prototype.dvfsSetClockEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_voltage',MaliParser.prototype.dvfsSetVoltageEvent.bind(this));this.addJMCounter('mali_hwc_MESSAGES_SENT','Messages Sent');this.addJMCounter('mali_hwc_MESSAGES_RECEIVED','Messages Received');this.addJMCycles('mali_hwc_GPU_ACTIVE','GPU Active');this.addJMCycles('mali_hwc_IRQ_ACTIVE','IRQ Active');for(let i=0;i<7;i++){const jobStr='JS'+i;const jobHWCStr='mali_hwc_'+jobStr;this.addJMCounter(jobHWCStr+'_JOBS',jobStr+' Jobs');this.addJMCounter(jobHWCStr+'_TASKS',jobStr+' Tasks');this.addJMCycles(jobHWCStr+'_ACTIVE',jobStr+' Active');this.addJMCycles(jobHWCStr+'_WAIT_READ',jobStr+' Wait Read');this.addJMCycles(jobHWCStr+'_WAIT_ISSUE',jobStr+' Wait Issue');this.addJMCycles(jobHWCStr+'_WAIT_DEPEND',jobStr+' Wait Depend');this.addJMCycles(jobHWCStr+'_WAIT_FINISH',jobStr+' Wait Finish');}\nthis.addTilerCounter('mali_hwc_TRIANGLES','Triangles');this.addTilerCounter('mali_hwc_QUADS','Quads');this.addTilerCounter('mali_hwc_POLYGONS','Polygons');this.addTilerCounter('mali_hwc_POINTS','Points');this.addTilerCounter('mali_hwc_LINES','Lines');this.addTilerCounter('mali_hwc_VCACHE_HIT','VCache Hit');this.addTilerCounter('mali_hwc_VCACHE_MISS','VCache Miss');this.addTilerCounter('mali_hwc_FRONT_FACING','Front Facing');this.addTilerCounter('mali_hwc_BACK_FACING','Back Facing');this.addTilerCounter('mali_hwc_PRIM_VISIBLE','Prim Visible');this.addTilerCounter('mali_hwc_PRIM_CULLED','Prim Culled');this.addTilerCounter('mali_hwc_PRIM_CLIPPED','Prim Clipped');this.addTilerCounter('mali_hwc_WRBUF_HIT','Wrbuf Hit');this.addTilerCounter('mali_hwc_WRBUF_MISS','Wrbuf Miss');this.addTilerCounter('mali_hwc_WRBUF_LINE','Wrbuf Line');this.addTilerCounter('mali_hwc_WRBUF_PARTIAL','Wrbuf Partial');this.addTilerCounter('mali_hwc_WRBUF_STALL','Wrbuf Stall');this.addTilerCycles('mali_hwc_ACTIVE','Tiler Active');this.addTilerCycles('mali_hwc_INDEX_WAIT','Index Wait');this.addTilerCycles('mali_hwc_INDEX_RANGE_WAIT','Index Range Wait');this.addTilerCycles('mali_hwc_VERTEX_WAIT','Vertex Wait');this.addTilerCycles('mali_hwc_PCACHE_WAIT','Pcache Wait');this.addTilerCycles('mali_hwc_WRBUF_WAIT','Wrbuf Wait');this.addTilerCycles('mali_hwc_BUS_READ','Bus Read');this.addTilerCycles('mali_hwc_BUS_WRITE','Bus Write');this.addTilerCycles('mali_hwc_TILER_UTLB_STALL','Tiler UTLB Stall');this.addTilerCycles('mali_hwc_TILER_UTLB_HIT','Tiler UTLB Hit');this.addFragCycles('mali_hwc_FRAG_ACTIVE','Active');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES','Primitives');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES_DROPPED','Primitives Dropped');this.addFragCycles('mali_hwc_FRAG_CYCLE_DESC','Descriptor Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_PLR','PLR Processing??');this.addFragCycles('mali_hwc_FRAG_CYCLES_VERT','Vertex Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_TRISETUP','Triangle Setup');this.addFragCycles('mali_hwc_FRAG_CYCLES_RAST','Rasterization???');this.addFragCounter('mali_hwc_FRAG_THREADS','Threads');this.addFragCounter('mali_hwc_FRAG_DUMMY_THREADS','Dummy Threads');this.addFragCounter('mali_hwc_FRAG_QUADS_RAST','Quads Rast');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_TEST','Quads EZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_KILLED','Quads EZS Killed');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_TEST','Quads LZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_KILLED','Quads LZS Killed');this.addFragCycles('mali_hwc_FRAG_CYCLE_NO_TILE','No Tiles');this.addFragCounter('mali_hwc_FRAG_NUM_TILES','Tiles');this.addFragCounter('mali_hwc_FRAG_TRANS_ELIM','Transactions Eliminated');this.addComputeCycles('mali_hwc_COMPUTE_ACTIVE','Active');this.addComputeCounter('mali_hwc_COMPUTE_TASKS','Tasks');this.addComputeCounter('mali_hwc_COMPUTE_THREADS','Threads Started');this.addComputeCycles('mali_hwc_COMPUTE_CYCLES_DESC','Waiting for Descriptors');this.addTripipeCycles('mali_hwc_TRIPIPE_ACTIVE','Active');this.addArithCounter('mali_hwc_ARITH_WORDS','Instructions (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_REG','Reg scheduling stalls (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_L0','L0 cache miss stalls (/Pipes)');this.addArithCounter('mali_hwc_ARITH_FRAG_DEPEND','Frag dep check failures (/Pipes)');this.addLSCounter('mali_hwc_LS_WORDS','Instruction Words Completed');this.addLSCounter('mali_hwc_LS_ISSUES','Full Pipeline Issues');this.addLSCounter('mali_hwc_LS_RESTARTS','Restarts (unpairable insts)');this.addLSCounter('mali_hwc_LS_REISSUES_MISS','Pipeline reissue (cache miss/uTLB)');this.addLSCounter('mali_hwc_LS_REISSUES_VD','Pipeline reissue (varying data)');this.addLSCounter('mali_hwc_LS_REISSUE_ATTRIB_MISS','Pipeline reissue (attribute cache miss)');this.addLSCounter('mali_hwc_LS_REISSUE_NO_WB','Writeback not used');this.addTexCounter('mali_hwc_TEX_WORDS','Words');this.addTexCounter('mali_hwc_TEX_BUBBLES','Bubbles');this.addTexCounter('mali_hwc_TEX_WORDS_L0','Words L0');this.addTexCounter('mali_hwc_TEX_WORDS_DESC','Words Desc');this.addTexCounter('mali_hwc_TEX_THREADS','Threads');this.addTexCounter('mali_hwc_TEX_RECIRC_FMISS','Recirc due to Full Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_DESC','Recirc due to Desc Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_MULTI','Recirc due to Multipass');this.addTexCounter('mali_hwc_TEX_RECIRC_PMISS','Recirc due to Partial Cache Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_CONF','Recirc due to Cache Conflict');this.addLSCCounter('mali_hwc_LSC_READ_HITS','Read Hits');this.addLSCCounter('mali_hwc_LSC_READ_MISSES','Read Misses');this.addLSCCounter('mali_hwc_LSC_WRITE_HITS','Write Hits');this.addLSCCounter('mali_hwc_LSC_WRITE_MISSES','Write Misses');this.addLSCCounter('mali_hwc_LSC_ATOMIC_HITS','Atomic Hits');this.addLSCCounter('mali_hwc_LSC_ATOMIC_MISSES','Atomic Misses');this.addLSCCounter('mali_hwc_LSC_LINE_FETCHES','Line Fetches');this.addLSCCounter('mali_hwc_LSC_DIRTY_LINE','Dirty Lines');this.addLSCCounter('mali_hwc_LSC_SNOOPS','Snoops');this.addAXICounter('mali_hwc_AXI_TLB_STALL','Address channel stall');this.addAXICounter('mali_hwc_AXI_TLB_MISS','Cache Miss');this.addAXICounter('mali_hwc_AXI_TLB_TRANSACTION','Transactions');this.addAXICounter('mali_hwc_LS_TLB_MISS','LS Cache Miss');this.addAXICounter('mali_hwc_LS_TLB_HIT','LS Cache Hit');this.addAXICounter('mali_hwc_AXI_BEATS_READ','Read Beats');this.addAXICounter('mali_hwc_AXI_BEATS_WRITE','Write Beats');this.addMMUCounter('mali_hwc_MMU_TABLE_WALK','Page Table Walks');this.addMMUCounter('mali_hwc_MMU_REPLAY_MISS','Cache Miss from Replay Buffer');this.addMMUCounter('mali_hwc_MMU_REPLAY_FULL','Replay Buffer Full');this.addMMUCounter('mali_hwc_MMU_NEW_MISS','Cache Miss on New Request');this.addMMUCounter('mali_hwc_MMU_HIT','Cache Hit');this.addMMUCycles('mali_hwc_UTLB_STALL','UTLB Stalled');this.addMMUCycles('mali_hwc_UTLB_REPLAY_MISS','UTLB Replay Miss');this.addMMUCycles('mali_hwc_UTLB_REPLAY_FULL','UTLB Replay Full');this.addMMUCycles('mali_hwc_UTLB_NEW_MISS','UTLB New Miss');this.addMMUCycles('mali_hwc_UTLB_HIT','UTLB Hit');this.addL2Counter('mali_hwc_L2_READ_BEATS','Read Beats');this.addL2Counter('mali_hwc_L2_WRITE_BEATS','Write Beats');this.addL2Counter('mali_hwc_L2_ANY_LOOKUP','Any Lookup');this.addL2Counter('mali_hwc_L2_READ_LOOKUP','Read Lookup');this.addL2Counter('mali_hwc_L2_SREAD_LOOKUP','Shareable Read Lookup');this.addL2Counter('mali_hwc_L2_READ_REPLAY','Read Replayed');this.addL2Counter('mali_hwc_L2_READ_SNOOP','Read Snoop');this.addL2Counter('mali_hwc_L2_READ_HIT','Read Cache Hit');this.addL2Counter('mali_hwc_L2_CLEAN_MISS','CleanUnique Miss');this.addL2Counter('mali_hwc_L2_WRITE_LOOKUP','Write Lookup');this.addL2Counter('mali_hwc_L2_SWRITE_LOOKUP','Shareable Write Lookup');this.addL2Counter('mali_hwc_L2_WRITE_REPLAY','Write Replayed');this.addL2Counter('mali_hwc_L2_WRITE_SNOOP','Write Snoop');this.addL2Counter('mali_hwc_L2_WRITE_HIT','Write Cache Hit');this.addL2Counter('mali_hwc_L2_EXT_READ_FULL','ExtRD with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_READ_HALF','ExtRD with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_FULL','ExtWR with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_HALF','ExtWR with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_READ','External Read (ExtRD)');this.addL2Counter('mali_hwc_L2_EXT_READ_LINE','ExtRD (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE','External Write (ExtWR)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_LINE','ExtWR (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_SMALL','ExtWR (burst size <64B)');this.addL2Counter('mali_hwc_L2_EXT_BARRIER','External Barrier');this.addL2Counter('mali_hwc_L2_EXT_AR_STALL','Address Read stalls');this.addL2Counter('mali_hwc_L2_EXT_R_BUF_FULL','Response Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_RD_BUF_FULL','Read Data Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_R_RAW','RAW hazard stalls');this.addL2Counter('mali_hwc_L2_EXT_W_STALL','Write Data stalls');this.addL2Counter('mali_hwc_L2_EXT_W_BUF_FULL','Write Data Buffer full');this.addL2Counter('mali_hwc_L2_EXT_R_W_HAZARD','WAW or WAR hazard stalls');this.addL2Counter('mali_hwc_L2_TAG_HAZARD','Tag hazard replays');this.addL2Cycles('mali_hwc_L2_SNOOP_FULL','Snoop buffer full');this.addL2Cycles('mali_hwc_L2_REPLAY_FULL','Replay buffer full');importer.registerEventHandler('tracing_mark_write:mali_driver',MaliParser.prototype.maliDDKEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_start',MaliParser.prototype.maliJobEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_stop',MaliParser.prototype.maliJobEvent.bind(this));this.model_=importer.model_;this.deferredJobs_={};}\nMaliParser.prototype={__proto__:Parser.prototype,maliDDKOpenSlice(pid,tid,ts,func,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const funcArgs=/^([\\w\\d_]*)(?:\\(\\))?:?\\s*(.*)$/.exec(func);thread.sliceGroup.beginSlice('gpu-driver',funcArgs[1],ts,{'args':funcArgs[2],blockinfo});},maliDDKCloseSlice(pid,tid,ts,args,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);if(!thread.sliceGroup.openSliceCount){return;}\nthread.sliceGroup.endSlice(ts);},autoDetectLineRE(line){const lineREWithThread=/^\\s*\\(([\\w\\-]*)\\)\\s*(\\w+):\\s*([\\w\\\\\\/\\.\\-]*@\\d*):?\\s*(.*)$/;if(lineREWithThread.test(line)){return lineREWithThread;}\nconst lineRENoThread=/^s*()(\\w+):\\s*([\\w\\\\\\/.\\-]*):?\\s*(.*)$/;if(lineRENoThread.test(line)){return lineRENoThread;}\nreturn null;},lineRE:null,maliDDKEvent(eventName,cpuNumber,pid,ts,eventBase){if(this.lineRE===null){this.lineRE=this.autoDetectLineRE(eventBase.details);if(this.lineRE===null)return false;}\nconst maliEvent=this.lineRE.exec(eventBase.details);const tid=(maliEvent[1]===''?'mali':maliEvent[1]);switch(maliEvent[2]){case'cros_trace_print_enter':this.maliDDKOpenSlice(pid,tid,ts,maliEvent[4],maliEvent[3]);break;case'cros_trace_print_exit':this.maliDDKCloseSlice(pid,tid,ts,[],maliEvent[3]);}\nreturn true;},maliJobEvent(eventName,cpuNumber,pid,ts,eventBase){const jobEventRE=/^.*tracing_mark_write: (S|F)\\|(\\d+)\\|(\\w+)-job\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|(\\d+)\\|([a-z0-9]+)\\|(\\d+)$/;const jobEvent=jobEventRE.exec(eventBase.details);if(!jobEvent){this.model_.importWarning({type:'parse_error',args:'unexpected mali_job_systrace_event_* event syntax'});return;}\nconst jobType=jobEvent[3];const jobId=jobEvent[4];const thread=this.importer.model_.getOrCreateProcess(0).getOrCreateThread('mali:'+jobType);switch(jobEvent[1]){case'S':{const args={ctx:jobEvent[9],pid:parseInt(jobEvent[2],10),dep0:parseInt(jobEvent[5],10),dep1:parseInt(jobEvent[7],10)};if(thread.sliceGroup.openSliceCount){if(!(jobType in this.deferredJobs_)){this.deferredJobs_[jobType]=[];}\nthis.deferredJobs_[jobType].push({id:jobId,args});}else{thread.sliceGroup.beginSlice(null,jobId,ts,args);}}break;case'F':{if(!thread.sliceGroup.openSliceCount){return;}\nif(thread.sliceGroup.mostRecentlyOpenedPartialSlice.title!==jobId){this.model_.importWarning({type:'invalid event nesting',message:'non-sequential jobs in same mali job slot'});}\nthread.sliceGroup.endSlice(ts);const deferredJobs=this.deferredJobs_[jobType];if(deferredJobs&&deferredJobs.length){const job=deferredJobs.shift();thread.sliceGroup.beginSlice(null,job.id,ts,job.args);}}break;}\nreturn true;},dvfsSample(counterName,seriesName,ts,s){const value=parseInt(s);const counter=this.model_.kernel.getOrCreateCounter('DVFS',counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,value);});},dvfsEventEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/utilization=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Utilization','utilization',ts,event[1]);return true;},dvfsSetClockEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Frequency','frequency',ts,event[1]);return true;},dvfsSetVoltageEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/voltage=(\\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Voltage','voltage',ts,event[1]);return true;},hwcSample(cat,counterName,seriesName,ts,eventBase){const event=/val=(\\d+)/.exec(eventBase.details);if(!event)return false;const value=parseInt(event[1]);const counter=this.model_.kernel.getOrCreateCounter(cat,counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));}\ncounter.series.forEach(function(series){series.addCounterSample(ts,value);});return true;},jmSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:jm','JM: '+ctrName,seriesName,ts,eventBase);},addJMCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addJMCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},tilerSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:tiler','Tiler: '+ctrName,seriesName,ts,eventBase);},addTilerCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTilerCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},fragSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:fragment','Fragment: '+ctrName,seriesName,ts,eventBase);},addFragCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addFragCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},computeSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:compute','Compute: '+ctrName,seriesName,ts,eventBase);},addComputeCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addComputeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTripipeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:shader','Tripipe: '+hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},arithSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:arith','Arith: '+ctrName,seriesName,ts,eventBase);},addArithCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addArithCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:ls','LS: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},textureSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:texture','Texture: '+ctrName,seriesName,ts,eventBase);},addTexCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.textureSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:lsc','LSC: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addAXICounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:axi','AXI: '+hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},mmuSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:mmu','MMU: '+ctrName,seriesName,ts,eventBase);},addMMUCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addMMUCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},l2Sample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:l2','L2: '+ctrName,seriesName,ts,eventBase);},addL2Counter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'count',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));},addL2Cycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'cycles',ts,eventBase);}\nthis.importer.registerEventHandler(hwcEventName,handler.bind(this));}};Parser.register(MaliParser);return{MaliParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function MemReclaimParser(importer){Parser.call(this,importer);importer.registerEventHandler('mm_vmscan_kswapd_wake',MemReclaimParser.prototype.kswapdWake.bind(this));importer.registerEventHandler('mm_vmscan_kswapd_sleep',MemReclaimParser.prototype.kswapdSleep.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_begin',MemReclaimParser.prototype.reclaimBegin.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_end',MemReclaimParser.prototype.reclaimEnd.bind(this));importer.registerEventHandler('lowmemory_kill',MemReclaimParser.prototype.lowmemoryKill.bind(this));}\nconst kswapdWakeRE=/nid=(\\d+) order=(\\d+)/;const kswapdSleepRE=/nid=(\\d+)/;const reclaimBeginRE=/order=(\\d+) may_writepage=\\d+ gfp_flags=(.+)/;const reclaimEndRE=/nr_reclaimed=(\\d+)/;const lowmemoryRE=/([^ ]+) \\((\\d+)\\), page cache (\\d+)kB \\(limit (\\d+)kB\\), free (-?\\d+)Kb/;MemReclaimParser.prototype={__proto__:Parser.prototype,kswapdWake(eventName,cpuNumber,pid,ts,eventBase){const event=kswapdWakeRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const nid=parseInt(event[1]);const order=parseInt(event[2]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.openSliceTS){if(order>kthread.order){kthread.order=order;}}else{kthread.openSliceTS=ts;kthread.order=order;}\nkthread.waitingFor='kswapSleep';return true;},kswapdSleep(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='kswapSleep')return false;kthread.waitingFor=undefined;if(kthread.openSliceTS){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim',eventBase.threadName,kthread.openSliceTS,ts-kthread.openSliceTS,0,0,{order:kthread.order});}\nkthread.openSliceTS=undefined;kthread.order=undefined;return true;},reclaimBegin(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimBeginRE.exec(eventBase.details);if(!event)return false;const order=parseInt(event[1]);const gfp=event[2];const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.openMemReclaimSliceTS=ts;kthread.order=order;kthread.gfp=gfp;kthread.waitingFor='reclaimEnd';return true;},reclaimEnd(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimEndRE.exec(eventBase.details);if(!event)return false;const nrReclaimed=parseInt(event[1]);const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='reclaimEnd')return false;kthread.waitingFor=undefined;if(kthread.openMemReclaimSliceTS!==undefined){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim','direct reclaim',kthread.openMemReclaimSliceTS,ts-kthread.openMemReclaimSliceTS,0,0,{order:kthread.order,gfp:kthread.gfp,nr_reclaimed:nrReclaimed});kthread.openMemReclaimSliceTS=undefined;kthread.order=undefined;kthread.gfp=undefined;return true;}\nreturn false;},lowmemoryKill(eventName,cpuNumber,pid,ts,eventBase){const event=lowmemoryRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const killedName=event[1];const killedPid=parseInt(event[2]);const cache=parseInt(event[3]);const free=parseInt(event[5]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.thread.sliceGroup.pushCompleteSlice('lowmemory','low memory kill',ts,0,0,0,{killed_name:killedName,killed_pid:killedPid,cache,free});return true;}};Parser.register(MemReclaimParser);return{MemReclaimParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function PowerParser(importer){Parser.call(this,importer);importer.registerEventHandler('power_start',PowerParser.prototype.powerStartEvent.bind(this));importer.registerEventHandler('power_frequency',PowerParser.prototype.powerFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency',PowerParser.prototype.cpuFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency_limits',PowerParser.prototype.cpuFrequencyLimitsEvent.bind(this));importer.registerEventHandler('cpu_idle',PowerParser.prototype.cpuIdleEvent.bind(this));}\nPowerParser.prototype={__proto__:Parser.prototype,cpuStateSlice(ts,targetCpuNumber,eventType,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);if(eventType!=='1'){this.importer.model.importWarning({type:'parse_error',message:'Don\\'t understand power_start events of '+'type '+eventType});return;}\nconst powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));}\npowerCounter.series.forEach(function(series){series.addCounterSample(ts,cpuState);});},cpuIdleSlice(ts,targetCpuNumber,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name)));}\nconst val=(cpuState!==4294967295?cpuState+1:0);powerCounter.series.forEach(function(series){series.addCounterSample(ts,val);});},cpuFrequencySlice(ts,targetCpuNumber,powerState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));}\npowerCounter.series.forEach(function(series){series.addCounterSample(ts,powerState);});},cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency Limits');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('Min Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Min Frequency')));powerCounter.addSeries(new tr.model.CounterSeries('Max Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Max Frequency')));}\npowerCounter.series.forEach(function(series){if(series.name==='Min Frequency'){series.addCounterSample(ts,minFreq);}\nif(series.name==='Max Frequency'){series.addCounterSample(ts,maxFreq);}});},powerStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\\d+) state=(\\d) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const cpuState=parseInt(event[2]);this.cpuStateSlice(ts,targetCpuNumber,event[1],cpuState);return true;},powerFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\\d+) state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const powerState=parseInt(event[2]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const powerState=parseInt(event[1]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyLimitsEvent(eventName,cpu,pid,ts,eventBase){const event=/min=(\\d+) max=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const minFreq=parseInt(event[1]);const maxFreq=parseInt(event[2]);this.cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq);return true;},cpuIdleEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\\d+) cpu_id=(\\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const cpuState=parseInt(event[1]);this.cpuIdleSlice(ts,targetCpuNumber,cpuState);return true;}};Parser.register(PowerParser);return{PowerParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function RegulatorParser(importer){Parser.call(this,importer);importer.registerEventHandler('regulator_enable',RegulatorParser.prototype.regulatorEnableEvent.bind(this));importer.registerEventHandler('regulator_enable_delay',RegulatorParser.prototype.regulatorEnableDelayEvent.bind(this));importer.registerEventHandler('regulator_enable_complete',RegulatorParser.prototype.regulatorEnableCompleteEvent.bind(this));importer.registerEventHandler('regulator_disable',RegulatorParser.prototype.regulatorDisableEvent.bind(this));importer.registerEventHandler('regulator_disable_complete',RegulatorParser.prototype.regulatorDisableCompleteEvent.bind(this));importer.registerEventHandler('regulator_set_voltage',RegulatorParser.prototype.regulatorSetVoltageEvent.bind(this));importer.registerEventHandler('regulator_set_voltage_complete',RegulatorParser.prototype.regulatorSetVoltageCompleteEvent.bind(this));this.model_=importer.model_;}\nconst regulatorEnableRE=/name=(.+)/;const regulatorDisableRE=/name=(.+)/;const regulatorSetVoltageCompleteRE=/name=(\\S+), val=(\\d+)/;RegulatorParser.prototype={__proto__:Parser.prototype,getCtr_(ctrName,valueName){const ctr=this.model_.kernel.getOrCreateCounter(null,'vreg '+ctrName+' '+valueName);if(ctr.series[0]===undefined){ctr.addSeries(new tr.model.CounterSeries(valueName,ColorScheme.getColorIdForGeneralPurposeString(ctrName+'.'+valueName)));}\nreturn ctr;},regulatorEnableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorEnableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,1);return true;},regulatorEnableDelayEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorEnableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorDisableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorDisableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,0);return true;},regulatorDisableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageCompleteEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorSetVoltageCompleteRE.exec(eventBase.details);if(!event)return false;const name=event[1];const voltage=parseInt(event[2]);const ctr=this.getCtr_(name,'voltage');ctr.series[0].addCounterSample(ts,voltage);return true;}};Parser.register(RegulatorParser);return{RegulatorParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function RssParser(importer){Parser.call(this,importer);importer.registerEventHandler('rss_stat',RssParser.prototype.rssStat.bind(this));}\nconst TestExports={};const rssStatRE=new RegExp('member=(\\\\d+) size=(\\\\d+)');TestExports.rssStatRE=rssStatRE;const unknownThreadName='<...>';RssParser.prototype={__proto__:Parser.prototype,rssStat(eventName,cpuNumber,pid,ts,eventBase){const event=rssStatRE.exec(eventBase.details);if(!event)return false;const member=parseInt(event[1]);const size=parseInt(event[2]);if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);let subTitle='';if(member===0){subTitle=' (file pages)';}else if(member===1){subTitle=' (anon)';}\nconst rssCounter=process.getOrCreateCounter('RSS','RSS '+member+subTitle);if(rssCounter.numSeries===0){rssCounter.addSeries(new tr.model.CounterSeries('RSS',tr.b.ColorScheme.getColorIdForGeneralPurposeString(rssCounter.name)));}\nrssCounter.series.forEach(function(series){series.addCounterSample(ts,size);});return true;},};Parser.register(RssParser);return{RssParser,_RssParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function SchedParser(importer){Parser.call(this,importer);importer.registerEventHandler('sched_switch',SchedParser.prototype.schedSwitchEvent.bind(this));importer.registerEventHandler('sched_wakeup',SchedParser.prototype.schedWakeupEvent.bind(this));importer.registerEventHandler('sched_blocked_reason',SchedParser.prototype.schedBlockedEvent.bind(this));importer.registerEventHandler('sched_cpu_hotplug',SchedParser.prototype.schedCpuHotplugEvent.bind(this));}\nconst TestExports={};const schedSwitchRE=new RegExp('prev_comm=(.+) prev_pid=(\\\\d+) prev_prio=(\\\\d+) '+'prev_state=(\\\\S\\\\+?|\\\\S\\\\|\\\\S) ==> '+'next_comm=(.+) next_pid=(\\\\d+) next_prio=(\\\\d+)');const schedBlockedRE=new RegExp('pid=(\\\\d+) iowait=(\\\\d) caller=(.+)');TestExports.schedSwitchRE=schedSwitchRE;const schedWakeupRE=/comm=(.+) pid=(\\d+) prio=(\\d+)(?: success=\\d+)? target_cpu=(\\d+)/;TestExports.schedWakeupRE=schedWakeupRE;const unknownThreadName='<...>';SchedParser.prototype={__proto__:Parser.prototype,schedSwitchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedSwitchRE.exec(eventBase.details);if(!event)return false;const prevState=event[4];const nextComm=event[5];const nextPid=parseInt(event[6]);const nextPrio=parseInt(event[7]);if(eventBase.tgid!==undefined){const tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);const storedThread=process.getThread(pid);if(!storedThread){const thread=process.getOrCreateThread(pid);thread.name=eventBase.threadName;}else if(storedThread.name===unknownThreadName){storedThread.name=eventBase.threadName;}}\nconst nextThread=this.importer.threadsByLinuxPid[nextPid];let nextName;if(nextThread){nextName=nextThread.userFriendlyName;}else{nextName=nextComm;}\nconst cpu=this.importer.getOrCreateCpu(cpuNumber);cpu.switchActiveThread(ts,{stateWhenDescheduled:prevState},nextPid,nextName,{comm:nextComm,tid:nextPid,prio:nextPrio});return true;},schedWakeupEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedWakeupRE.exec(eventBase.details);if(!event)return false;const fromPid=pid;const comm=event[1];pid=parseInt(event[2]);const prio=parseInt(event[3]);this.importer.markPidRunnable(ts,pid,comm,prio,fromPid);return true;},schedCpuHotplugEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/cpu (\\d+) (.+) error=(\\d+)/.exec(eventBase.details);if(!event)return false;cpuNumber=event[1];const state=event[2];const targetCpu=this.importer.getOrCreateCpu(cpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Cpu Hotplug');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('State',tr.b.ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'State')));}\npowerCounter.series.forEach(function(series){if(series.name==='State'){series.addCounterSample(ts,state.localeCompare('offline')?0:1);}});return true;},schedBlockedEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedBlockedRE.exec(eventBase.details);if(!event)return false;pid=parseInt(event[1]);const iowait=parseInt(event[2]);const caller=event[3];this.importer.addPidBlockedReason(ts,pid,iowait,caller);return true;}};Parser.register(SchedParser);return{SchedParser,_SchedParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function SyncParser(importer){Parser.call(this,importer);importer.registerEventHandler('sync_timeline',SyncParser.prototype.timelineEvent.bind(this));importer.registerEventHandler('sync_wait',SyncParser.prototype.syncWaitEvent.bind(this));importer.registerEventHandler('sync_pt',SyncParser.prototype.syncPtEvent.bind(this));this.model_=importer.model_;}\nconst syncTimelineRE=/name=(\\S+) value=(\\S*)/;const syncWaitRE=/(\\S+) name=(\\S+) state=(\\d+)/;const syncPtRE=/name=(\\S+) value=(\\S*)/;SyncParser.prototype={__proto__:Parser.prototype,timelineEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncTimelineRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread(event[1]);if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;let value=thread.lastActiveValue;if(value===undefined)value=' ';const slice=new tr.model.ThreadSlice('',value,ColorScheme.getColorIdForGeneralPurposeString(value),thread.lastActiveTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);}\nthread.lastActiveTs=ts;thread.lastActiveValue=event[2];return true;},syncWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncWaitRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;}\nconst tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;}\nconst name='fence_wait(\"'+event[2]+'\")';if(event[1]==='begin'){const slice=slices.beginSlice(null,name,ts,{'Start state':event[3]});}else if(event[1]==='end'){if(slices.openSliceCount>0){slices.endSlice(ts);}}else{return false;}\nreturn true;},syncPtEvent(eventName,cpuNumber,pid,ts,eventBase){return!!syncPtRE.exec(eventBase.details);}};Parser.register(SyncParser);return{SyncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function WorkqueueParser(importer){Parser.call(this,importer);importer.registerEventHandler('workqueue_execute_start',WorkqueueParser.prototype.executeStartEvent.bind(this));importer.registerEventHandler('workqueue_execute_end',WorkqueueParser.prototype.executeEndEvent.bind(this));importer.registerEventHandler('workqueue_queue_work',WorkqueueParser.prototype.executeQueueWork.bind(this));importer.registerEventHandler('workqueue_activate_work',WorkqueueParser.prototype.executeActivateWork.bind(this));}\nconst workqueueExecuteStartRE=/work struct (.+): function (\\S+)/;const workqueueExecuteEndRE=/work struct (.+)/;WorkqueueParser.prototype={__proto__:Parser.prototype,executeStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteStartRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);kthread.openSliceTS=ts;kthread.openSlice=event[2];return true;},executeEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteEndRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,{},ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);}\nkthread.openSlice=undefined;return true;},executeQueueWork(eventName,cpuNumber,pid,ts,eventBase){return true;},executeActivateWork(eventName,cpuNumber,pid,ts,eventBase){return true;}};Parser.register(WorkqueueParser);return{WorkqueueParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID='linux_clock_monotonic_to_ftrace_global';const IMPORT_PRIORITY=2;function FTraceImporter(model,events){this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=events;this.wakeups_=[];this.blockedReasons_=[];this.kernelThreadStates_={};this.buildMapFromLinuxPidsToThreads_();this.lines_=[];this.pseudoThreadCounter=1;this.parsers_=[];this.eventHandlers_={};this.haveClockSyncedMonotonicToGlobal_=false;this.clockDomainId_=tr.model.ClockDomainId.LINUX_FTRACE_GLOBAL;}\nconst TestExports={};const lineREWithTGID=new RegExp('^\\\\s*(.+)-(\\\\d+)\\\\s+\\\\(\\\\s*(\\\\d+|-+)\\\\)\\\\s\\\\[(\\\\d+)\\\\]'+'\\\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\\\s+(\\\\d+\\\\.\\\\d+):\\\\s+(\\\\S+):\\\\s(.*)$');const lineParserWithTGID=function(line){const groups=lineREWithTGID.exec(line);if(!groups)return groups;let tgid=groups[3];if(tgid[0]==='-')tgid=undefined;return{threadName:groups[1],pid:groups[2],tgid,cpuNumber:groups[4],timestamp:groups[5],eventName:groups[6],details:groups[7]};};TestExports.lineParserWithTGID=lineParserWithTGID;const lineREWithIRQInfo=new RegExp('^\\\\s*(.+)-(\\\\d+)\\\\s+\\\\[(\\\\d+)\\\\]'+'\\\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\\\s+(\\\\d+\\\\.\\\\d+):\\\\s+(\\\\S+):\\\\s(.*)$');const lineParserWithIRQInfo=function(line){const groups=lineREWithIRQInfo.exec(line);if(!groups)return groups;return{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithIRQInfo=lineParserWithIRQInfo;const lineREWithLegacyFmt=/^\\s*(.+)-(\\d+)\\s+\\[(\\d+)\\]\\s*(\\d+\\.\\d+):\\s+(\\S+):\\s(.*)$/;const lineParserWithLegacyFmt=function(line){const groups=lineREWithLegacyFmt.exec(line);if(!groups){return groups;}\nreturn{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithLegacyFmt=lineParserWithLegacyFmt;const traceEventClockSyncRE=/trace_event_clock_sync: parent_ts=(\\d+\\.?\\d*)/;TestExports.traceEventClockSyncRE=traceEventClockSyncRE;const realTimeClockSyncRE=/trace_event_clock_sync: realtime_ts=(\\d+)/;const genericClockSyncRE=/trace_event_clock_sync: name=([\\w\\-]+)/;const pseudoKernelPID=0;function autoDetectLineParser(line){if(line[0]==='{')return false;if(lineREWithTGID.test(line))return lineParserWithTGID;if(lineREWithIRQInfo.test(line))return lineParserWithIRQInfo;if(lineREWithLegacyFmt.test(line))return lineParserWithLegacyFmt;return undefined;}\nTestExports.autoDetectLineParser=autoDetectLineParser;FTraceImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)events=events.header;if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(FTraceImporter._extractEventsFromSystraceHTML(events,false).ok){return true;}\nif(FTraceImporter._extractEventsFromSystraceMultiHTML(events,false).ok){return true;}\nif(/^# tracer:/.test(events))return true;const lineBreakIndex=events.indexOf('\\n');if(lineBreakIndex>-1)events=events.substring(0,lineBreakIndex);if(autoDetectLineParser(events))return true;return false;};FTraceImporter._extractEventsFromSystraceHTML=function(incomingEvents,produceResult){const failure={ok:false};if(produceResult===undefined)produceResult=true;const header=incomingEvents instanceof tr.b.TraceStream?incomingEvents.header:incomingEvents;if(!/^<!DOCTYPE html>/.test(header))return failure;const r=new tr.importer.SimpleLineReader(incomingEvents);if(!r.advanceToLineMatching(/^  <script>$/))return failure;if(!r.advanceToLineMatching(/^  var linuxPerfData = \"\\\\$/))return failure;const eventsBeginAtLine=r.curLineNumber+1;r.beginSavingLines();if(!r.advanceToLineMatching(/^  <\\/script>$/))return failure;let rawEvents=r.endSavingLinesAndGetResult();rawEvents=rawEvents.slice(1,rawEvents.length-1);if(!r.advanceToLineMatching(/^<\\/body>$/))return failure;if(!r.advanceToLineMatching(/^<\\/html>$/))return failure;function endsWith(str,suffix){return str.indexOf(suffix,str.length-suffix.length)!==-1;}\nfunction stripSuffix(str,suffix){if(!endsWith(str,suffix))return str;return str.substring(str,str.length-suffix.length);}\nlet events=[];if(produceResult){for(let i=0;i<rawEvents.length;i++){let event=rawEvents[i];event=stripSuffix(event,'\\\\n\\\\');events.push(event);}}else{events=[rawEvents[rawEvents.length-1]];}\nconst oldLastEvent=events[events.length-1];const newLastEvent=stripSuffix(oldLastEvent,'\\\\n\";');if(newLastEvent===oldLastEvent)return failure;events[events.length-1]=newLastEvent;return{ok:true,lines:produceResult?events:undefined,eventsBeginAtLine};};FTraceImporter._extractEventsFromSystraceMultiHTML=function(incomingEvents,produceResult){const failure={ok:false};if(produceResult===undefined)produceResult=true;const header=incomingEvents instanceof tr.b.TraceStream?incomingEvents.header:incomingEvents;if(!(new RegExp('^<!DOCTYPE HTML>','i').test(header)))return failure;const r=new tr.importer.SimpleLineReader(incomingEvents);let events=[];let eventsBeginAtLine;while(!/^# tracer:/.test(events)){if(!r.advanceToLineMatching(/^  <script class=\"trace-data\" type=\"application\\/text\">$/)){return failure;}\neventsBeginAtLine=r.curLineNumber+1;r.beginSavingLines();if(!r.advanceToLineMatching(/^  <\\/script>$/))return failure;events=r.endSavingLinesAndGetResult();events=events.slice(1,events.length-1);}\nif(!r.advanceToLineMatching(/^<\\/body>$/))return failure;if(!r.advanceToLineMatching(/^<\\/html>$/))return failure;return{ok:true,lines:produceResult?events:undefined,eventsBeginAtLine,};};FTraceImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'FTraceImporter';},get model(){return this.model_;},importClockSyncMarkers(){this.lazyInit_();this.forEachLine_(function(text,eventBase,cpuNumber,pid,ts){const eventName=eventBase.eventName;if(eventName!=='tracing_mark_write'&&eventName!=='0')return;if(traceEventClockSyncRE.exec(eventBase.details)||genericClockSyncRE.exec(eventBase.details)){this.traceClockSyncEvent_(eventName,cpuNumber,pid,ts,eventBase);}else if(realTimeClockSyncRE.exec(eventBase.details)){const match=realTimeClockSyncRE.exec(eventBase.details);this.model_.realtime_to_monotonic_offset_ms=ts-match[1];}}.bind(this));},importEvents(){if(this.lines_.length===0)return;const modelTimeTransformer=this.model_.clockSyncManager.getModelTimeTransformer(this.clockDomainId_);this.importCpuData_(modelTimeTransformer);this.buildMapFromLinuxPidsToThreads_();this.buildPerThreadCpuSlicesFromCpuState_();},registerEventHandler(eventName,handler){this.eventHandlers_[eventName]=handler;},getOrCreateCpu(cpuNumber){return this.model_.kernel.getOrCreateCpu(cpuNumber);},getOrCreateKernelThread(kernelThreadName,pid,tid){if(!this.kernelThreadStates_[kernelThreadName]){const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);thread.name=kernelThreadName;this.kernelThreadStates_[kernelThreadName]={pid,thread,openSlice:undefined,openSliceTS:undefined};this.threadsByLinuxPid[tid]=thread;}\nreturn this.kernelThreadStates_[kernelThreadName];},getOrCreateBinderKernelThread(kernelThreadName,pid,tid){const key=kernelThreadName+pid+tid;if(!this.kernelThreadStates_[key]){const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);thread.name=kernelThreadName;this.kernelThreadStates_[key]={pid,thread,openSlice:undefined,openSliceTS:undefined};this.threadsByLinuxPid[tid]=thread;}\nreturn this.kernelThreadStates_[key];},getOrCreatePseudoThread(threadName){let thread=this.kernelThreadStates_[threadName];if(!thread){thread=this.getOrCreateKernelThread(threadName,pseudoKernelPID,this.pseudoThreadCounter);this.pseudoThreadCounter++;}\nreturn thread;},markPidRunnable(ts,pid,comm,prio,fromPid){this.wakeups_.push({ts,tid:pid,fromTid:fromPid});},addPidBlockedReason(ts,pid,iowait,caller){this.blockedReasons_.push({ts,tid:pid,iowait,caller});},buildMapFromLinuxPidsToThreads_(){this.threadsByLinuxPid={};this.model_.getAllThreads().forEach(function(thread){this.threadsByLinuxPid[thread.tid]=thread;}.bind(this));},buildPerThreadCpuSlicesFromCpuState_(){const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;for(const cpuNumber in this.model_.kernel.cpus){const cpu=this.model_.kernel.cpus[cpuNumber];for(let i=0;i<cpu.slices.length;i++){const cpuSlice=cpu.slices[i];const thread=this.threadsByLinuxPid[cpuSlice.args.tid];if(!thread)continue;cpuSlice.threadThatWasRunning=thread;if(!thread.tempCpuSlices){thread.tempCpuSlices=[];}\nthread.tempCpuSlices.push(cpuSlice);}}\nfor(const i in this.wakeups_){const wakeup=this.wakeups_[i];const thread=this.threadsByLinuxPid[wakeup.tid];if(!thread)continue;thread.tempWakeups=thread.tempWakeups||[];thread.tempWakeups.push(wakeup);}\nfor(const i in this.blockedReasons_){const reason=this.blockedReasons_[i];const thread=this.threadsByLinuxPid[reason.tid];if(!thread)continue;thread.tempBlockedReasons=thread.tempBlockedReasons||[];thread.tempBlockedReasons.push(reason);}\nthis.model_.getAllThreads().forEach(function(thread){if(thread.tempCpuSlices===undefined)return;const origSlices=thread.tempCpuSlices;delete thread.tempCpuSlices;origSlices.sort(function(x,y){return x.start-y.start;});const wakeups=thread.tempWakeups||[];delete thread.tempWakeups;wakeups.sort(function(x,y){return x.ts-y.ts;});const reasons=thread.tempBlockedReasons||[];delete thread.tempBlockedReasons;reasons.sort(function(x,y){return x.ts-y.ts;});const slices=[];if(origSlices.length){const slice=origSlices[0];if(wakeups.length&&wakeups[0].ts<slice.start){const wakeup=wakeups.shift();const wakeupDuration=slice.start-wakeup.ts;const args={'wakeup from tid':wakeup.fromTid};slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',wakeup.ts,args,wakeupDuration));}\nconst runningSlice=new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNING,'',slice.start,{},slice.duration);runningSlice.cpuOnWhichThreadWasRunning=slice.cpu;slices.push(runningSlice);}\nfor(let i=1;i<origSlices.length;i++){let wakeup=undefined;const prevSlice=origSlices[i-1];const nextSlice=origSlices[i];let midDuration=nextSlice.start-prevSlice.end;while(wakeups.length&&wakeups[0].ts<nextSlice.start){const w=wakeups.shift();if(wakeup===undefined&&w.ts>prevSlice.end){wakeup=w;}}\nlet blockedReason=undefined;while(reasons.length&&reasons[0].ts<prevSlice.end){const r=reasons.shift();}\nif(wakeup!==undefined&&reasons.length&&reasons[0].ts<wakeup.ts){blockedReason=reasons.shift();}\nconst pushSleep=function(state){if(wakeup!==undefined){midDuration=wakeup.ts-prevSlice.end;}\nif(blockedReason!==undefined){const args={'kernel callsite when blocked:':blockedReason.caller};if(blockedReason.iowait){switch(state){case SCHEDULING_STATE.UNINTR_SLEEP:state=SCHEDULING_STATE.UNINTR_SLEEP_IO;break;case SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL:state=SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO;break;case SCHEDULING_STATE.UNINTR_SLEEP_WAKING:state=SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL_IO;break;default:}}\nslices.push(new tr.model.ThreadTimeSlice(thread,state,'',prevSlice.end,args,midDuration));}else{slices.push(new tr.model.ThreadTimeSlice(thread,state,'',prevSlice.end,{},midDuration));}\nif(wakeup!==undefined){const wakeupDuration=nextSlice.start-wakeup.ts;const args={'wakeup from tid':wakeup.fromTid};slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',wakeup.ts,args,wakeupDuration));wakeup=undefined;}};if(prevSlice.args.stateWhenDescheduled==='S'){pushSleep(SCHEDULING_STATE.SLEEPING);}else if(prevSlice.args.stateWhenDescheduled==='R'||prevSlice.args.stateWhenDescheduled==='R+'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNABLE,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='D'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP);}else if(prevSlice.args.stateWhenDescheduled==='T'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.STOPPED,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='t'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.DEBUG,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='Z'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.ZOMBIE,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='X'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.EXIT_DEAD,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='x'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.TASK_DEAD,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='K'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.WAKE_KILL,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='W'){slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.WAKING,'',prevSlice.end,{},midDuration));}else if(prevSlice.args.stateWhenDescheduled==='D|K'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP_WAKE_KILL);}else if(prevSlice.args.stateWhenDescheduled==='D|W'){pushSleep(SCHEDULING_STATE.UNINTR_SLEEP_WAKING);}else{slices.push(new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.UNKNOWN,'',prevSlice.end,{},midDuration));this.model_.importWarning({type:'parse_error',message:'Unrecognized sleep state: '+\nprevSlice.args.stateWhenDescheduled});}\nconst runningSlice=new tr.model.ThreadTimeSlice(thread,SCHEDULING_STATE.RUNNING,'',nextSlice.start,{},nextSlice.duration);runningSlice.cpuOnWhichThreadWasRunning=prevSlice.cpu;slices.push(runningSlice);}\nthread.timeSlices=slices;},this);},createParsers_(){const allTypeInfos=tr.e.importer.linux_perf.Parser.getAllRegisteredTypeInfos();const parsers=allTypeInfos.map(function(typeInfo){return new typeInfo.constructor(this);},this);return parsers;},registerDefaultHandlers_(){this.registerEventHandler('tracing_mark_write',FTraceImporter.prototype.traceMarkingWriteEvent_.bind(this));this.registerEventHandler('0',FTraceImporter.prototype.traceMarkingWriteEvent_.bind(this));this.registerEventHandler('tracing_mark_write:trace_event_clock_sync',function(){return true;});this.registerEventHandler('0:trace_event_clock_sync',function(){return true;});},traceClockSyncEvent_(eventName,cpuNumber,pid,ts,eventBase){let event=/name=(\\w+?)\\s(.+)/.exec(eventBase.details);if(event){const name=event[1];const pieces=event[2].split(' ');const args={perfTs:ts};for(let i=0;i<pieces.length;i++){const parts=pieces[i].split('=');if(parts.length!==2){throw new Error('omgbbq');}\nargs[parts[0]]=parts[1];}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,name,ts);return true;}\nevent=/name=([\\w\\-]+)/.exec(eventBase.details);if(event){this.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,event[1],ts);return true;}\nevent=/parent_ts=(\\d+\\.?\\d*)/.exec(eventBase.details);if(!event)return false;let monotonicTs=event[1]*1000;if(monotonicTs===0)monotonicTs=ts;if(this.haveClockSyncedMonotonicToGlobal_){return true;}\nthis.model_.clockSyncManager.addClockSyncMarker(this.clockDomainId_,MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID,ts);this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.LINUX_CLOCK_MONOTONIC,MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID,monotonicTs);this.haveClockSyncedMonotonicToGlobal_=true;return true;},traceMarkingWriteEvent_(eventName,cpuNumber,pid,ts,eventBase,threadName){eventBase.details=eventBase.details.replace(/\\\\n.*$/,'');const event=/^\\s*(\\w+):\\s*(.*)$/.exec(eventBase.details);if(!event){const tag=eventBase.details.substring(0,2);if(tag==='B|'||tag==='E'||tag==='E|'||tag==='X|'||tag==='C|'||tag==='S|'||tag==='F|'){eventBase.subEventName='android';}else{return false;}}else{eventBase.subEventName=event[1];eventBase.details=event[2];}\nconst writeEventName=eventName+':'+eventBase.subEventName;const handler=this.eventHandlers_[writeEventName];if(!handler){this.model_.importWarning({type:'parse_error',message:'Unknown trace_marking_write event '+writeEventName});return true;}\nreturn handler(writeEventName,cpuNumber,pid,ts,eventBase,threadName);},importCpuData_(modelTimeTransformer){this.forEachLine_(function(text,eventBase,cpuNumber,pid,ts){const eventName=eventBase.eventName;const handler=this.eventHandlers_[eventName];if(!handler){this.model_.importWarning({type:'parse_error',message:'Unknown event '+eventName+' ('+text+')'});return;}\nts=modelTimeTransformer(ts);if(!handler(eventName,cpuNumber,pid,ts,eventBase)){this.model_.importWarning({type:'parse_error',message:'Malformed '+eventName+' event ('+text+')'});}}.bind(this));},parseLines_(){let extractResult=FTraceImporter._extractEventsFromSystraceHTML(this.events_,true);if(!extractResult.ok){extractResult=FTraceImporter._extractEventsFromSystraceMultiHTML(this.events_,true);}\nlet lineParser=undefined;if(extractResult.ok){for(const line of extractResult.lines){lineParser=this.parseLine_(line,lineParser);}}else{const r=new tr.importer.SimpleLineReader(this.events_);for(const line of r){lineParser=this.parseLine_(line,lineParser);}}},parseLine_(line,lineParser){line=line.trim();if(line.length===0)return lineParser;if(/^#/.test(line)){const clockType=/^# clock_type=([A-Z_]+)$/.exec(line);if(clockType){this.clockDomainId_=clockType[1];}\nreturn lineParser;}\nif(!lineParser){lineParser=autoDetectLineParser(line);if(!lineParser){this.model_.importWarning({type:'parse_error',message:'Cannot parse line: '+line});return lineParser;}}\nconst eventBase=lineParser(line);if(!eventBase){this.model_.importWarning({type:'parse_error',message:'Unrecognized line: '+line});return lineParser;}\nthis.lines_.push([line,eventBase,parseInt(eventBase.cpuNumber),parseInt(eventBase.pid),parseFloat(eventBase.timestamp)*1000]);return lineParser;},forEachLine_(handler){for(let i=0;i<this.lines_.length;++i){const line=this.lines_[i];handler.apply(this,line);}},lazyInit_(){this.parsers_=this.createParsers_();this.registerDefaultHandlers_();this.parseLines_();}};tr.importer.Importer.register(FTraceImporter);return{FTraceImporter,_FTraceImporterTestExports:TestExports,IMPORT_PRIORITY,};});'use strict';tr.exportTo('tr.e.importer.android.atrace_process_dump',function(){const IMPORT_PRIORITY=tr.e.importer.linux_perf.IMPORT_PRIORITY+1;const HEADER='ATRACE_PROCESS_DUMP';const PROTECTION_FLAG_LETTERS={'-':0,'r':tr.model.VMRegion.PROTECTION_FLAG_READ,'w':tr.model.VMRegion.PROTECTION_FLAG_WRITE,'x':tr.model.VMRegion.PROTECTION_FLAG_EXECUTE,'s':tr.model.VMRegion.PROTECTION_FLAG_MAYSHARE,};class AtraceProcessDumpImporter extends tr.importer.Importer{constructor(model,data){super(model,data);this.importPriority=IMPORT_PRIORITY;this.model_=model;this.raw_data_=data;this.clock_sync_markers_={};this.snapshots_=[];this.processes_={};}\nstatic canImport(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nreturn events.startsWith(HEADER);}\nget importerName(){return'AtraceProcessDumpImporter';}\nget model(){return this.model_;}\nlazyParseData(){if(this.raw_data_===undefined){return;}\nconst dump=JSON.parse(this.raw_data_.slice(HEADER.length+1));this.clock_sync_markers_=dump.clock_sync_markers;this.snapshots_=dump.dump.snapshots;this.processes_=dump.dump.processes;this.raw_data_=undefined;}\nimportClockSyncMarkers(){this.lazyParseData();for(const syncId in this.clock_sync_markers_){const ts=parseInt(this.clock_sync_markers_[syncId]);this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.LINUX_CLOCK_MONOTONIC,syncId,ts);}}\nsetProcessMemoryDumpTotals_(pmd,processInfo){pmd.totals={'residentBytes':processInfo.rss*1024,'platformSpecific':{'vm':processInfo.vm*1024}};const totals=pmd.totals.platformSpecific;function importGpuMetric(name){if(processInfo[name]!==undefined&&processInfo[name]>0){totals[name]=processInfo[name]*1024;totals[name+'_pss']=processInfo[name+'_pss']*1024;}}\nimportGpuMetric('gpu_egl');importGpuMetric('gpu_gl');importGpuMetric('gpu_etc');if(processInfo.pss!==undefined){totals.pss=processInfo.pss*1024;totals.swp=processInfo.swp*1024;totals.pc=processInfo.pc*1024;totals.pd=processInfo.pd*1024;totals.sc=processInfo.sc*1024;totals.sd=processInfo.sd*1024;}}\nsetProcessMemoryDumpVmRegions_(pmd,processInfo){if(processInfo.mmaps===undefined){return;}\nconst vmRegions=[];for(const memoryMap of processInfo.mmaps){const addr=memoryMap.vm.split('-').map(x=>parseInt(x,16));let flags=0;for(const letter of memoryMap.flags){flags|=PROTECTION_FLAG_LETTERS[letter];}\nconst totals={'proportionalResident':memoryMap.pss*1024,'privateCleanResident':memoryMap.pc*1024,'privateDirtyResident':memoryMap.pd*1024,'sharedCleanResident':memoryMap.sc*1024,'sharedDirtyResident':memoryMap.sd*1024,'swapped':memoryMap.swp*1024,};vmRegions.push(new tr.model.VMRegion(addr[0],addr[1]-addr[0],flags,memoryMap.file,totals));}\npmd.vmRegions=tr.model.VMRegionClassificationNode.fromRegions(vmRegions);}\nimportEvents(){this.lazyParseData();for(const[pid,process]of Object.entries(this.processes_)){const modelProcess=this.model_.getProcess(pid);if(modelProcess===undefined){continue;}\nmodelProcess.name=process.name;const threads=process.threads;if(threads===undefined){continue;}\nfor(const[tid,thread]of Object.entries(threads)){const modelThread=modelProcess.threads[tid];if(modelThread===undefined){continue;}\nmodelThread.name=thread.name;}}\nconst memCounter=this.model_.kernel.getOrCreateCounter('global','SystemMemory');const memUsedSeries=new tr.model.CounterSeries('Used (KB)',0);const memSwappedSeries=new tr.model.CounterSeries('Swapped (KB)',0);memCounter.addSeries(memUsedSeries);memCounter.addSeries(memSwappedSeries);for(const snapshot of this.snapshots_){const ts=parseInt(snapshot.ts);const memoryDump=snapshot.memdump;if(memoryDump===undefined){const memInfo=snapshot.meminfo;if(memInfo===undefined){continue;}\nconst memCaches=memInfo.Buffers+memInfo.Cached-memInfo.Mapped;const memUsed=memInfo.MemTotal-memInfo.MemFree-memCaches;const memSwapped=memInfo.SwapTotal-memInfo.SwapFree;memUsedSeries.addCounterSample(ts,memUsed);memSwappedSeries.addCounterSample(ts,memSwapped);continue;}\nconst gmd=new tr.model.GlobalMemoryDump(this.model_,ts);this.model_.globalMemoryDumps.push(gmd);for(const[pid,processInfo]of Object.entries(memoryDump)){if(processInfo.rss===undefined){continue;}\nconst modelProcess=this.model_.getProcess(pid);if(modelProcess===undefined){continue;}\nconst pmd=new tr.model.ProcessMemoryDump(gmd,modelProcess,ts);gmd.processMemoryDumps[pid]=pmd;modelProcess.memoryDumps.push(pmd);this.setProcessMemoryDumpTotals_(pmd,processInfo);this.setProcessMemoryDumpVmRegions_(pmd,processInfo);}}}}\ntr.importer.Importer.register(AtraceProcessDumpImporter);return{AtraceProcessDumpImporter,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;function Activity(name,category,range,args){tr.model.TimedEvent.call(this,range.min);this.title=name;this.category=category;this.colorId=ColorScheme.getColorIdForGeneralPurposeString(name);this.duration=range.duration;this.args=args;this.name=name;}\nActivity.prototype={__proto__:tr.model.TimedEvent.prototype,shiftTimestampsForward(amount){this.start+=amount;},addBoundsToRange(range){range.addValue(this.start);range.addValue(this.end);}};return{Activity,};});'use strict';tr.exportTo('tr.e.importer.android',function(){const Importer=tr.importer.Importer;const ACTIVITY_STATE={NONE:'none',CREATED:'created',STARTED:'started',RESUMED:'resumed',PAUSED:'paused',STOPPED:'stopped',DESTROYED:'destroyed'};const activityMap={};function EventLogImporter(model,events){this.model_=model;this.events_=events;this.importPriority=3;}\nconst eventLogActivityRE=new RegExp('(\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+)'+'\\\\s+(\\\\d+)\\\\s+(\\\\d+)\\\\s+([A-Z])\\\\s*'+'(am_\\\\w+)\\\\s*:(.*)');const amCreateRE=new RegExp('\\s*\\\\[.*,.*,.*,(.*),.*,.*,.*,.*\\\\]');const amFocusedRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amProcStartRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,\\\\d+,.*,activity,(.*)\\\\]');const amOnResumeRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amOnPauseRE=new RegExp('\\s*\\\\[\\\\d+,(.*)\\\\]');const amLaunchTimeRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,(.*),(\\\\d+),(\\\\d+)');const amDestroyRE=new RegExp('\\s*\\\\[\\\\d+,\\\\d+,\\\\d+,(.*)\\\\]');EventLogImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(/^<!DOCTYPE html>/.test(events))return false;return eventLogActivityRE.test(events);};EventLogImporter.prototype={__proto__:Importer.prototype,get importerName(){return'EventLogImporter';},get model(){return this.model_;},getFullActivityName(component){const componentSplit=component.split('/');if(componentSplit[1].startsWith('.')){return componentSplit[0]+componentSplit[1];}\nreturn componentSplit[1];},getProcName(component){const componentSplit=component.split('/');return componentSplit[0];},findOrCreateActivity(activityName){if(activityName in activityMap){return activityMap[activityName];}\nconst activity={state:ACTIVITY_STATE.NONE,name:activityName};activityMap[activityName]=activity;return activity;},deleteActivity(activityName){delete activityMap[activityName];},handleCreateActivity(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.CREATED;activity.createdTs=ts;},handleFocusActivity(ts,procName,activityName){const activity=this.findOrCreateActivity(activityName);activity.lastFocusedTs=ts;},handleProcStartForActivity(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.procStartTs=ts;},handleOnResumeCalled(ts,pid,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.RESUMED;activity.lastResumeTs=ts;activity.pid=pid;},handleOnPauseCalled(ts,activityName){const activity=this.findOrCreateActivity(activityName);activity.state=ACTIVITY_STATE.PAUSED;activity.lastPauseTs=ts;if(ts>this.model_.bounds.min&&ts<this.model_.bounds.max){this.addActivityToProcess(activity);}},handleLaunchTime(ts,activityName,launchTime){const activity=this.findOrCreateActivity(activityName);activity.launchTime=launchTime;},handleDestroyActivity(ts,activityName){this.deleteActivity(activityName);},addActivityToProcess(activity){if(activity.pid===undefined)return;const process=this.model_.getOrCreateProcess(activity.pid);const range=tr.b.math.Range.fromExplicitRange(Math.max(this.model_.bounds.min,activity.lastResumeTs),activity.lastPauseTs);const newActivity=new tr.model.Activity(activity.name,'Android Activity',range,{created:activity.createdTs,procstart:activity.procStartTs,lastfocus:activity.lastFocusedTs});process.activities.push(newActivity);},parseAmLine_(line){let match=eventLogActivityRE.exec(line);if(!match)return;const firstRealtimeTs=this.model_.bounds.min-\nthis.model_.realtime_to_monotonic_offset_ms;const year=new Date(firstRealtimeTs).getFullYear();const ts=match[1].substring(0,5)+'-'+year+' '+\nmatch[1].substring(5,match[1].length);const monotonicTs=Date.parse(ts)+\nthis.model_.realtime_to_monotonic_offset_ms;const pid=match[2];const action=match[5];const data=match[6];if(action==='am_create_activity'){match=amCreateRE.exec(data);if(match&&match.length>=2){this.handleCreateActivity(monotonicTs,this.getFullActivityName(match[1]));}}else if(action==='am_focused_activity'){match=amFocusedRE.exec(data);if(match&&match.length>=2){this.handleFocusActivity(monotonicTs,this.getProcName(match[1]),this.getFullActivityName(match[1]));}}else if(action==='am_proc_start'){match=amProcStartRE.exec(data);if(match&&match.length>=2){this.handleProcStartForActivity(monotonicTs,this.getFullActivityName(match[1]));}}else if(action==='am_on_resume_called'){match=amOnResumeRE.exec(data);if(match&&match.length>=2){this.handleOnResumeCalled(monotonicTs,pid,match[1]);}}else if(action==='am_on_paused_called'){match=amOnPauseRE.exec(data);if(match&&match.length>=2){this.handleOnPauseCalled(monotonicTs,match[1]);}}else if(action==='am_activity_launch_time'){match=amLaunchTimeRE.exec(data);this.handleLaunchTime(monotonicTs,this.getFullActivityName(match[1]),match[2]);}else if(action==='am_destroy_activity'){match=amDestroyRE.exec(data);if(match&&match.length===2){this.handleDestroyActivity(monotonicTs,this.getFullActivityName(match[1]));}}},importEvents(){if(isNaN(this.model_.realtime_to_monotonic_offset_ms)){this.model_.importWarning({type:'eveng_log_clock_sync',message:'Need a trace_event_clock_sync to map realtime to import.'});return;}\nthis.model_.updateBounds();const lines=this.events_.split('\\n');lines.forEach(this.parseAmLine_,this);for(const activityName in activityMap){const activity=activityMap[activityName];if(activity.state===ACTIVITY_STATE.RESUMED){activity.lastPauseTs=this.model_.bounds.max;this.addActivityToProcess(activity);}}}};Importer.register(EventLogImporter);return{EventLogImporter,};});'use strict';tr.exportTo('tr.e.importer.android.process_data',function(){const Importer=tr.importer.Importer;const PROCESS_DUMP_HEADER='PROCESS DUMP';function ProcessDataImporter(model,processData){this.model_=model;this.processDataLines=processData.split('\\n');this.importPriority=3;}\nProcessDataImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nif(events.split('\\n')[0]===PROCESS_DUMP_HEADER){return true;}\nreturn false;};ProcessDataImporter.prototype={__proto__:Importer.prototype,get importerName(){return'ProcessDataImporter';},get model(){return this.model_;},parseEventData(data){const allDumpedProcesses={};let parseProcesses=false;let parseThreads=false;let legacy=false;for(let i=1;i<data.length;i++){const cols=data[i].split(/\\s+/);if(cols[0].startsWith('USER')){if(parseProcesses){parseProcesses=false;parseThreads=true;}else{parseThreads=false;parseProcesses=true;}\nconst colCount=cols.length;if(parseProcesses&&colCount===9){legacy=false;}else if(parseProcesses&&colCount===8){legacy=true;}\ncontinue;}\nif(parseProcesses){const pid=Number(cols[1]);if(allDumpedProcesses[pid]===undefined){allDumpedProcesses[pid]={};}\nallDumpedProcesses[pid]={'name':cols[8],pid,'comm':cols[9]};continue;}\nif(parseThreads){let pid;let tid;let name;if(legacy){pid=Number(cols[1]);if(allDumpedProcesses[pid]!==undefined){tid=pid;}else{tid=pid;pid=Number(cols[2]);}\nname=cols.slice(8).join(' ');}else{pid=Number(cols[1]);tid=Number(cols[2]);name=cols.slice(3).join(' ');}\nif(allDumpedProcesses[pid]===undefined)continue;if(allDumpedProcesses[pid].threads===undefined){allDumpedProcesses[pid].threads={};}\nallDumpedProcesses[pid].threads[tid]={tid,name};continue;}}\nreturn allDumpedProcesses;},importEvents(){const allDumpedProcesses=this.parseEventData(this.processDataLines);const modelProcesses=this.model_.getAllProcesses();for(let i=0;i<modelProcesses.length;i++){const modelProcess=modelProcesses[i];const pid=modelProcess.pid;const dumpedProcess=allDumpedProcesses[pid];if(dumpedProcess===undefined){continue;}\nmodelProcess.name=dumpedProcess.name;const processDumpThreads=dumpedProcess.threads;if(processDumpThreads!==undefined){for(const tid in modelProcess.threads){const modelThread=modelProcess.threads[tid];if(Number(pid)===Number(tid)){modelThread.name='UI thread';}else if(modelThread.name==='<...>'){if(processDumpThreads[tid]!==undefined){modelThread.name=processDumpThreads[tid].name;}}}}}}};Importer.register(ProcessDataImporter);return{ProcessDataImporter,};});'use strict';tr.exportTo('tr.e.importer.battor',function(){function BattorImporter(model,events){this.importPriority=3;this.model_=model;this.samples_=[];this.syncTimestampsById_=new Map();this.parseTrace_(events);}\nconst battorDataLineRE=new RegExp('^(-?\\\\d+\\\\.\\\\d+)\\\\s+(-?\\\\d+\\\\.\\\\d+)\\\\s+(-?\\\\d+\\\\.\\\\d+)'+'(?:\\\\s+<(\\\\S+)>)?$');const battorHeaderLineRE=/^# BattOr/;BattorImporter.canImport=function(events){if(!(typeof(events)==='string'||events instanceof String)){return false;}\nreturn battorHeaderLineRE.test(events);};BattorImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'BattorImporter';},get model(){return this.model_;},importClockSyncMarkers(){for(const[syncId,ts]of this.syncTimestampsById_){this.model_.clockSyncManager.addClockSyncMarker(tr.model.ClockDomainId.BATTOR,syncId,ts);}},importEvents(){if(this.model_.device.powerSeries){this.model_.importWarning({type:'import_error',message:'Power counter exists, can not import BattOr power trace.'});return;}\nconst modelTimeTransformer=this.model_.clockSyncManager.getModelTimeTransformer(tr.model.ClockDomainId.BATTOR);const powerSeries=this.model_.device.powerSeries=new tr.model.PowerSeries(this.model_.device);for(let i=0;i<this.samples_.length;i++){const sample=this.samples_[i];powerSeries.addPowerSample(modelTimeTransformer(sample.ts),sample.powerInW);}},parseTrace_(trace){const lines=trace.split('\\n');for(let line of lines){line=line.trim();if(line.length===0)continue;if(line.startsWith('#'))continue;const groups=battorDataLineRE.exec(line);if(!groups){this.model_.importWarning({type:'parse_error',message:'Unrecognized line in BattOr trace: '+line});continue;}\nconst ts=parseFloat(groups[1]);const voltageInV=tr.b.convertUnit(parseFloat(groups[2]),tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const currentInA=tr.b.convertUnit(parseFloat(groups[3]),tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const syncId=groups[4];if(syncId){this.syncTimestampsById_.set(syncId,ts);}\nif(voltageInV<0||currentInA<0){this.model_.importWarning({type:'parse_error',message:'The following line in the BattOr trace has a negative '+'voltage or current, neither of which are allowed: '+line+'. A common cause of this is that the device is charging '+'while the trace is being recorded.'});continue;}\nthis.samples_.push(new Sample(ts,voltageInV,currentInA));}}};function Sample(ts,voltageInV,currentInA){this.ts=ts;this.voltageInV=voltageInV;this.currentInA=currentInA;}\nSample.prototype={get powerInW(){return this.voltageInV*this.currentInA;}};tr.importer.Importer.register(BattorImporter);return{BattorImporter,};});'use strict';tr.exportTo('tr.e.importer.ddms',function(){const kPid=0;const kCategory='java';const kMethodLutEndMarker='\\n*end\\n';const kThreadsStart='\\n*threads\\n';const kMethodsStart='\\n*methods\\n';const kTraceMethodEnter=0x00;const kTraceMethodExit=0x01;const kTraceUnroll=0x02;const kTraceMethodActionMask=0x03;const kTraceHeaderLength=32;const kTraceMagicValue=0x574f4c53;const kTraceVersionSingleClock=2;const kTraceVersionDualClock=3;const kTraceRecordSizeSingleClock=10;const kTraceRecordSizeDualClock=14;function Reader(stringPayload){this.position_=0;this.data_=new Uint8Array(stringPayload.length);for(let i=0;i<stringPayload.length;++i){this.data_[i]=stringPayload.charCodeAt(i);}}\nReader.prototype={__proto__:Object.prototype,uint8(){const result=this.data_[this.position_];this.position_+=1;return result;},uint16(){let result=0;result+=this.uint8();result+=this.uint8()<<8;return result;},uint32(){let result=0;result+=this.uint8();result+=this.uint8()<<8;result+=this.uint8()<<16;result+=this.uint8()<<24;return result;},uint64(){const low=this.uint32();const high=this.uint32();const lowStr=('0000000'+low.toString(16)).substr(-8);const highStr=('0000000'+high.toString(16)).substr(-8);const result=highStr+lowStr;return result;},seekTo(position){this.position_=position;},hasMore(){return this.position_<this.data_.length;}};function DdmsImporter(model,data){this.importPriority=3;this.model_=model;this.data_=data;}\nDdmsImporter.canImport=function(data){if(typeof(data)==='string'||data instanceof String){const header=data.slice(0,1000);return header.startsWith('*version\\n')&&header.indexOf('\\nvm=')>=0&&header.indexOf(kThreadsStart)>=0;}\nreturn false;};DdmsImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'DdmsImporter';},get model(){return this.model_;},importEvents(){const divider=this.data_.indexOf(kMethodLutEndMarker)+\nkMethodLutEndMarker.length;this.metadata_=this.data_.slice(0,divider);this.methods_={};this.parseThreads();this.parseMethods();const traceReader=new Reader(this.data_.slice(divider));const magic=traceReader.uint32();if(magic!==kTraceMagicValue){throw Error('Failed to match magic value');}\nthis.version_=traceReader.uint16();if(this.version_!==kTraceVersionDualClock){throw Error('Unknown version');}\nconst dataOffest=traceReader.uint16();const startDateTime=traceReader.uint64();const recordSize=traceReader.uint16();traceReader.seekTo(dataOffest);while(traceReader.hasMore()){this.parseTraceEntry(traceReader);}},parseTraceEntry(reader){const tid=reader.uint16();const methodPacked=reader.uint32();const cpuSinceStart=reader.uint32();const wallClockSinceStart=reader.uint32();let method=methodPacked&~kTraceMethodActionMask;const action=methodPacked&kTraceMethodActionMask;const thread=this.getTid(tid);method=this.getMethodName(method);if(action===kTraceMethodEnter){thread.sliceGroup.beginSlice(kCategory,method,wallClockSinceStart,undefined,cpuSinceStart);}else if(thread.sliceGroup.openSliceCount){thread.sliceGroup.endSlice(wallClockSinceStart,cpuSinceStart);}},parseThreads(){let threads=this.metadata_.slice(this.metadata_.indexOf(kThreadsStart)+\nkThreadsStart.length);threads=threads.slice(0,threads.indexOf('\\n*'));threads=threads.split('\\n');threads.forEach(this.parseThread.bind(this));},parseThread(threadLine){const tid=threadLine.slice(0,threadLine.indexOf('\\t'));const thread=this.getTid(parseInt(tid));thread.name=threadLine.slice(threadLine.indexOf('\\t')+1);},getTid(tid){return this.model_.getOrCreateProcess(kPid).getOrCreateThread(tid);},parseMethods(){let methods=this.metadata_.slice(this.metadata_.indexOf(kMethodsStart)+\nkMethodsStart.length);methods=methods.slice(0,methods.indexOf('\\n*'));methods=methods.split('\\n');methods.forEach(this.parseMethod.bind(this));},parseMethod(methodLine){const data=methodLine.split('\\t');const methodId=parseInt(data[0]);const methodName=data[1]+'.'+data[2]+data[3];this.addMethod(methodId,methodName);},addMethod(methodId,methodName){this.methods_[methodId]=methodName;},getMethodName(methodId){return this.methods_[methodId];}};tr.importer.Importer.register(DdmsImporter);return{DdmsImporter,};});'use strict';tr.exportTo('tr.e.audits',function(){class LowMemoryAuditor extends tr.c.Auditor{constructor(model){super();this.model_=model;}\nrunAnnotate(){this.model_.device.lowMemoryEvents=this.getLowMemoryEvents_();}\ngetLowMemoryEvents_(){const model=this.model_;const result=[];for(const process of model.getAllProcesses()){for(const e of process.getDescendantEvents()){if(!(e instanceof tr.model.ThreadSlice)||e.duration!==0){continue;}\nif(e.category!=='lowmemory'){continue;}\nresult.push(e);}}\nreturn result;}}\ntr.c.Auditor.register(LowMemoryAuditor);return{LowMemoryAuditor};});'use strict';function filterDuplicateTimestamps(timestamps){const dedupedTimestamps=[];let lastTs=0;for(const ts of timestamps){if(ts-lastTs>=1){dedupedTimestamps.push(ts);lastTs=ts;}}\nreturn dedupedTimestamps;}\ntr.exportTo('tr.e.audits',function(){const VSYNC_COUNTER_PRECISIONS={'android.VSYNC-app':15,'android.VSYNC':15};const VSYNC_SLICE_PRECISIONS={'RenderWidgetHostViewAndroid::OnVSync':5,'VSYNC':10,'vblank':10,'DisplayLinkMac::GetVSyncParameters':5};const BEGIN_FRAME_SLICE_PRECISION={'DisplayScheduler::BeginFrame':10};function VSyncAuditor(model){tr.c.Auditor.call(this,model);}\nVSyncAuditor.prototype={__proto__:tr.c.Auditor.prototype,runAnnotate(){this.model.device.vSyncTimestamps=this.findVSyncTimestamps(this.model);},findVSyncTimestamps(model){let times=[];let maxPrecision=Number.NEGATIVE_INFINITY;let maxTitle=undefined;function useInstead(title,precisions){const precision=precisions[title];if(precision===undefined)return false;if(title===maxTitle)return true;if(precision<=maxPrecision){if(precision===maxPrecision){model.importWarning({type:'VSyncAuditor',message:'Encountered two different VSync events ('+\nmaxTitle+', '+title+') with the same precision, '+'ignoring the newer one ('+title+')',showToUser:false,});}\nreturn false;}\nmaxPrecision=precision;maxTitle=title;times=[];return true;}\nfor(const pid in model.processes){const process=model.processes[pid];for(const cid in process.counters){if(useInstead(cid,VSYNC_COUNTER_PRECISIONS)){const counter=process.counters[cid];for(let i=0;i<counter.series.length;i++){const series=counter.series[i];Array.prototype.push.apply(times,series.timestamps);}}}\nfor(const tid in process.threads){const thread=process.threads[tid];for(let i=0;i<thread.sliceGroup.slices.length;i++){const slice=thread.sliceGroup.slices[i];if(useInstead(slice.title,VSYNC_SLICE_PRECISIONS)){times.push(slice.start);}else if(useInstead(slice.title,BEGIN_FRAME_SLICE_PRECISION)&&slice.args.args&&slice.args.args.frame_time_us){times.push(slice.args.args.frame_time_us/1000.0);}}}}\ntimes.sort(function(x,y){return x-y;});return filterDuplicateTimestamps(times);}};tr.c.Auditor.register(VSyncAuditor);return{VSyncAuditor,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8GCStatsThreadSlice(){ThreadSlice.apply(this,arguments);this.liveObjects_=JSON.parse(this.args.live);delete this.args.live;this.deadObjects_=JSON.parse(this.args.dead);delete this.args.dead;}\nV8GCStatsThreadSlice.prototype={__proto__:ThreadSlice.prototype,get liveObjects(){return this.liveObjects_;},get deadObjects(){return this.deadObjects_;}};ThreadSlice.subTypes.register(V8GCStatsThreadSlice,{categoryParts:['disabled-by-default-v8.gc_stats'],name:'v8 gc stats slice',pluralName:'v8 gc stats slices'});return{V8GCStatsThreadSlice,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8ICStatsThreadSlice(){ThreadSlice.apply(this,arguments);this.icStats_=undefined;if(this.args['ic-stats']){this.icStats_=this.args['ic-stats'].data;delete this.args['ic-stats'];}}\nV8ICStatsThreadSlice.prototype={__proto__:ThreadSlice.prototype,get icStats(){return this.icStats_;}};ThreadSlice.subTypes.register(V8ICStatsThreadSlice,{categoryParts:['disabled-by-default-v8.ic_stats'],name:'v8 ic stats slice',pluralName:'v8 ic stats slices'});return{V8ICStatsThreadSlice,};});'use strict';tr.exportTo('tr.b.math',function(){function BBox2(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;}\nBBox2.prototype={__proto__:Object.prototype,reset(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;},get isEmpty(){return this.isEmpty_;},addBBox2(bbox2){if(bbox2.isEmpty)return;this.addVec2(bbox2.min_);this.addVec2(bbox2.max_);},clone(){const bbox=new BBox2();bbox.addBBox2(this);return bbox;},addXY(x,y){if(this.isEmpty_){this.max_=vec2.create();this.min_=vec2.create();vec2.set(this.max_,x,y);vec2.set(this.min_,x,y);this.isEmpty_=false;return;}\nthis.max_[0]=Math.max(this.max_[0],x);this.max_[1]=Math.max(this.max_[1],y);this.min_[0]=Math.min(this.min_[0],x);this.min_[1]=Math.min(this.min_[1],y);},addVec2(value){if(this.isEmpty_){this.max_=vec2.create();this.min_=vec2.create();vec2.set(this.max_,value[0],value[1]);vec2.set(this.min_,value[0],value[1]);this.isEmpty_=false;return;}\nthis.max_[0]=Math.max(this.max_[0],value[0]);this.max_[1]=Math.max(this.max_[1],value[1]);this.min_[0]=Math.min(this.min_[0],value[0]);this.min_[1]=Math.min(this.min_[1],value[1]);},addQuad(quad){this.addVec2(quad.p1);this.addVec2(quad.p2);this.addVec2(quad.p3);this.addVec2(quad.p4);},get minVec2(){if(this.isEmpty_)return undefined;return this.min_;},get maxVec2(){if(this.isEmpty_)return undefined;return this.max_;},get sizeAsVec2(){if(this.isEmpty_){throw new Error('Empty BBox2 has no size');}\nconst size=vec2.create();vec2.subtract(size,this.max_,this.min_);return size;},get size(){if(this.isEmpty_){throw new Error('Empty BBox2 has no size');}\nreturn{width:this.max_[0]-this.min_[0],height:this.max_[1]-this.min_[1]};},get width(){if(this.isEmpty_){throw new Error('Empty BBox2 has no width');}\nreturn this.max_[0]-this.min_[0];},get height(){if(this.isEmpty_){throw new Error('Empty BBox2 has no width');}\nreturn this.max_[1]-this.min_[1];},toString(){if(this.isEmpty_)return'empty';return'min=('+this.min_[0]+','+this.min_[1]+') '+'max=('+this.max_[0]+','+this.max_[1]+')';},asRect(){return tr.b.math.Rect.fromXYWH(this.min_[0],this.min_[1],this.max_[0]-this.min_[0],this.max_[1]-this.min_[1]);}};return{BBox2,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants={};constants.ACTIVE_TREE=0;constants.PENDING_TREE=1;constants.HIGH_PRIORITY_BIN=0;constants.LOW_PRIORITY_BIN=1;constants.SEND_BEGIN_FRAME_EVENT='ThreadProxy::ScheduledActionSendBeginMainFrame';constants.BEGIN_MAIN_FRAME_EVENT='ThreadProxy::BeginMainFrame';return{constants};});'use strict';tr.exportTo('tr.e.cc',function(){function Region(){this.rects=[];}\nRegion.fromArray=function(array){if(array.length%4!==0){throw new Error('Array must consist be a multiple of 4 in length');}\nconst r=new Region();for(let i=0;i<array.length;i+=4){r.rects.push(tr.b.math.Rect.fromXYWH(array[i],array[i+1],array[i+2],array[i+3]));}\nreturn r;};Region.fromArrayOrUndefined=function(array){if(array===undefined)return new Region();return Region.fromArray(array);};Region.prototype={__proto__:Region.prototype,rectIntersects(r){for(let i=0;i<this.rects.length;i++){if(this.rects[i].intersects(r))return true;}\nreturn false;},addRect(r){this.rects.push(r);}};return{Region,};});'use strict';tr.exportTo('tr.e.cc',function(){function TileCoverageRect(rect,tile){this.geometryRect=rect;this.tile=tile;}\nreturn{TileCoverageRect,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;function LayerImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.layerTreeImpl_=undefined;this.parentLayer=undefined;},initialize(){this.invalidation=new tr.e.cc.Region();this.unrecordedRegion=new tr.e.cc.Region();this.pictures=[];tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['layerId','layerQuad']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['children','maskLayer','replicaLayer','idealContentsScale','geometryContentsScale','layoutRects','usingGpuRasterization']);this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;this.bounds=tr.b.math.Rect.fromXYWH(0,0,this.args.bounds.width,this.args.bounds.height);if(this.args.animationBounds){this.animationBoundsRect=tr.b.math.Rect.fromXYWH(this.args.animationBounds[0],this.args.animationBounds[1],this.args.animationBounds[3],this.args.animationBounds[4]);}\nif(this.children){for(let i=0;i<this.children.length;i++){this.children[i].parentLayer=this;}}\nif(this.maskLayer){this.maskLayer.parentLayer=this;}\nif(this.replicaLayer){this.replicaLayer.parentLayer=this;}\nif(!this.geometryContentsScale){this.geometryContentsScale=1.0;}\nif(!this.idealContentsScale){this.idealContentsScale=1.0;}\nthis.touchEventHandlerRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.touchEventHandlerRegion);this.wheelEventHandlerRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.wheelEventHandlerRegion);this.nonFastScrollableRegion=tr.e.cc.Region.fromArrayOrUndefined(this.args.nonFastScrollableRegion);},get layerTreeImpl(){if(this.layerTreeImpl_){return this.layerTreeImpl_;}\nif(this.parentLayer){return this.parentLayer.layerTreeImpl;}\nreturn undefined;},set layerTreeImpl(layerTreeImpl){this.layerTreeImpl_=layerTreeImpl;},get activeLayer(){if(this.layerTreeImpl.whichTree===constants.ACTIVE_TREE){return this;}\nconst activeTree=this.layerTreeImpl.layerTreeHostImpl.activeTree;return activeTree.findLayerWithId(this.layerId);},get pendingLayer(){if(this.layerTreeImpl.whichTree===constants.PENDING_TREE){return this;}\nconst pendingTree=this.layerTreeImpl.layerTreeHostImpl.pendingTree;return pendingTree.findLayerWithId(this.layerId);}};function PictureLayerImplSnapshot(){LayerImplSnapshot.apply(this,arguments);}\nPictureLayerImplSnapshot.prototype={__proto__:LayerImplSnapshot.prototype,initialize(){LayerImplSnapshot.prototype.initialize.call(this);if(this.args.debugInfo){for(const i in this.args.debugInfo){this.args[i]=this.args.debugInfo[i];}\ndelete this.args.debugInfo;}\nif(this.args.annotatedInvalidationRects){this.invalidation=new tr.e.cc.Region();for(const annotatedRect of this.args.annotatedInvalidationRects){const rect=annotatedRect.geometryRect;rect.reason=annotatedRect.reason;rect.client=annotatedRect.client;this.invalidation.addRect(rect);}\ndelete this.args.annotatedInvalidationRects;}else if(this.args.invalidation){this.invalidation=tr.e.cc.Region.fromArray(this.args.invalidation);}\ndelete this.args.invalidation;if(this.args.unrecordedRegion){this.unrecordedRegion=tr.e.cc.Region.fromArray(this.args.unrecordedRegion);delete this.args.unrecordedRegion;}\nif(this.args.pictures){this.pictures=this.args.pictures;this.pictures.sort(function(a,b){return a.ts-b.ts;});}\nthis.tileCoverageRects=[];if(this.args.coverageTiles){for(let i=0;i<this.args.coverageTiles.length;++i){const rect=this.args.coverageTiles[i].geometryRect.scale(this.idealContentsScale);const tile=this.args.coverageTiles[i].tile;this.tileCoverageRects.push(new tr.e.cc.TileCoverageRect(rect,tile));}\ndelete this.args.coverageTiles;}}};ObjectSnapshot.subTypes.register(PictureLayerImplSnapshot,{typeName:'cc::PictureLayerImpl'});ObjectSnapshot.subTypes.register(LayerImplSnapshot,{typeNames:['cc::LayerImpl','cc::DelegatedRendererLayerImpl','cc::HeadsUpDisplayLayerImpl','cc::IOSurfaceLayerImpl','cc::NinePatchLayerImpl','cc::PictureImageLayerImpl','cc::ScrollbarLayerImpl','cc::SolidColorLayerImpl','cc::SolidColorScrollbarLayerImpl','cc::SurfaceLayerImpl','cc::TextureLayerImpl','cc::TiledLayerImpl','cc::VideoLayerImpl','cc::PaintedScrollbarLayerImpl','ClankPatchLayer','TabBorderLayer','CounterLayer']});return{LayerImplSnapshot,PictureLayerImplSnapshot,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;function LayerTreeImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerTreeImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);this.layerTreeHostImpl=undefined;this.whichTree=undefined;this.sourceFrameNumber=undefined;},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['renderSurfaceLayerList']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['rootLayer','layers']);if(this.args.sourceFrameNumber){this.sourceFrameNumber=this.args.sourceFrameNumber;}\nif(this.rootLayer){this.rootLayer.layerTreeImpl=this;}else{for(let i=0;i<this.layers.length;i++){this.layers[i].layerTreeImpl=this;}}\nif(this.args.swapPromiseTraceIds&&this.args.swapPromiseTraceIds.length){this.tracedInputLatencies=[];const ownProcess=this.objectInstance.parent;const modelHelper=ownProcess.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper){this._initializeTracedInputLatencies(modelHelper);}}},_initializeTracedInputLatencies(modelHelper){const latencyEvents=modelHelper.browserHelper.getLatencyEventsInRange(modelHelper.model.bounds);latencyEvents.forEach(function(event){for(let i=0;i<this.args.swapPromiseTraceIds.length;i++){if(!event.args.data||!event.args.data.trace_id){continue;}\nif(parseInt(event.args.data.trace_id)===this.args.swapPromiseTraceIds[i]){this.tracedInputLatencies.push(event);}}},this);},get hasSourceFrameBeenDrawnBefore(){if(this.whichTree===tr.e.cc.constants.PENDING_TREE){return false;}\nif(this.sourceFrameNumber===undefined)return;const thisLTHI=this.layerTreeHostImpl;const thisLTHIIndex=thisLTHI.objectInstance.snapshots.indexOf(thisLTHI);const prevLTHIIndex=thisLTHIIndex-1;if(prevLTHIIndex<0||prevLTHIIndex>=thisLTHI.objectInstance.snapshots.length){return false;}\nconst prevLTHI=thisLTHI.objectInstance.snapshots[prevLTHIIndex];if(!prevLTHI.activeTree)return false;if(prevLTHI.activeTree.sourceFrameNumber===undefined)return;return prevLTHI.activeTree.sourceFrameNumber===this.sourceFrameNumber;},get otherTree(){const other=this.whichTree===constants.ACTIVE_TREE?constants.PENDING_TREE:constants.ACTIVE_TREE;return this.layerTreeHostImpl.getTree(other);},get gpuMemoryUsageInBytes(){let totalBytes=0;this.iterLayers(function(layer){if(layer.gpuMemoryUsageInBytes!==undefined){totalBytes+=layer.gpuMemoryUsageInBytes;}});return totalBytes;},iterLayers(func,thisArg){const visitedLayers={};function visitLayer(layer,depth,isMask,isReplica){if(visitedLayers[layer.layerId])return;visitedLayers[layer.layerId]=true;func.call(thisArg,layer,depth,isMask,isReplica);if(layer.children){for(let i=0;i<layer.children.length;i++){visitLayer(layer.children[i],depth+1);}}\nif(layer.maskLayer){visitLayer(layer.maskLayer,depth+1,true,false);}\nif(layer.replicaLayer){visitLayer(layer.replicaLayer,depth+1,false,true);}}\nif(this.rootLayer){visitLayer(this.rootLayer,0,false,false);}else{for(let i=0;i<this.layers.length;i++){visitLayer(this.layers[i],0,false,false);}}},findLayerWithId(id){let foundLayer=undefined;function visitLayer(layer){if(layer.layerId===id){foundLayer=layer;}}\nthis.iterLayers(visitLayer);return foundLayer;}};ObjectSnapshot.subTypes.register(LayerTreeImplSnapshot,{typeName:'cc::LayerTreeImpl'});return{LayerTreeImplSnapshot,};});'use strict';tr.exportTo('tr.e.cc',function(){const constants=tr.e.cc.constants;const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function LayerTreeHostImplSnapshot(){ObjectSnapshot.apply(this,arguments);}\nLayerTreeHostImplSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['deviceViewportSize','activeTree']);tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['pendingTree']);if(this.args.activeTiles!==undefined){this.activeTiles=this.args.activeTiles;delete this.args.activeTiles;}else if(this.args.tiles!==undefined){this.activeTiles=this.args.tiles;delete this.args.tiles;}\nif(!this.activeTiles){this.activeTiles=[];}\nthis.activeTree.layerTreeHostImpl=this;this.activeTree.whichTree=constants.ACTIVE_TREE;if(this.pendingTree){this.pendingTree.layerTreeHostImpl=this;this.pendingTree.whichTree=constants.PENDING_TREE;}},getContentsScaleNames(){const scales={};for(let i=0;i<this.activeTiles.length;++i){const tile=this.activeTiles[i];scales[tile.contentsScale]=tile.resolution;}\nreturn scales;},getTree(whichTree){if(whichTree===constants.ACTIVE_TREE){return this.activeTree;}\nif(whichTree===constants.PENDING_TREE){return this.pendingTree;}\nthrow new Exception('Unknown tree type + '+whichTree);},get tilesHaveGpuMemoryUsageInfo(){if(this.tilesHaveGpuMemoryUsageInfo_!==undefined){return this.tilesHaveGpuMemoryUsageInfo_;}\nfor(let i=0;i<this.activeTiles.length;i++){if(this.activeTiles[i].gpuMemoryUsageInBytes===undefined){continue;}\nthis.tilesHaveGpuMemoryUsageInfo_=true;return true;}\nthis.tilesHaveGpuMemoryUsageInfo_=false;return false;},get gpuMemoryUsageInBytes(){if(!this.tilesHaveGpuMemoryUsageInfo)return;let usage=0;for(let i=0;i<this.activeTiles.length;i++){const u=this.activeTiles[i].gpuMemoryUsageInBytes;if(u!==undefined)usage+=u;}\nreturn usage;},get userFriendlyName(){let frameNumber;if(!this.activeTree){frameNumber=this.objectInstance.snapshots.indexOf(this);}else{if(this.activeTree.sourceFrameNumber===undefined){frameNumber=this.objectInstance.snapshots.indexOf(this);}else{frameNumber=this.activeTree.sourceFrameNumber;}}\nreturn'cc::LayerTreeHostImpl frame '+frameNumber;}};ObjectSnapshot.subTypes.register(LayerTreeHostImplSnapshot,{typeName:'cc::LayerTreeHostImpl'});function LayerTreeHostImplInstance(){ObjectInstance.apply(this,arguments);this.allLayersBBox_=undefined;}\nLayerTreeHostImplInstance.prototype={__proto__:ObjectInstance.prototype,get allContentsScales(){if(this.allContentsScales_){return this.allContentsScales_;}\nconst scales={};for(const tileID in this.allTileHistories_){const tileHistory=this.allTileHistories_[tileID];scales[tileHistory.contentsScale]=true;}\nthis.allContentsScales_=Object.keys(scales);return this.allContentsScales_;},get allLayersBBox(){if(this.allLayersBBox_){return this.allLayersBBox_;}\nconst bbox=new tr.b.math.BBox2();function handleTree(tree){tree.renderSurfaceLayerList.forEach(function(layer){bbox.addQuad(layer.layerQuad);});}\nthis.snapshots.forEach(function(lthi){handleTree(lthi.activeTree);if(lthi.pendingTree){handleTree(lthi.pendingTree);}});this.allLayersBBox_=bbox;return this.allLayersBBox_;}};ObjectInstance.subTypes.register(LayerTreeHostImplInstance,{typeName:'cc::LayerTreeHostImpl'});return{LayerTreeHostImplSnapshot,LayerTreeHostImplInstance,};});'use strict';tr.exportTo('tr.e.cc',function(){const tileTypes={highRes:'highRes',lowRes:'lowRes',extraHighRes:'extraHighRes',extraLowRes:'extraLowRes',missing:'missing',culled:'culled',solidColor:'solidColor',picture:'picture',directPicture:'directPicture',unknown:'unknown'};const tileBorder={highRes:{color:'rgba(80, 200, 200, 0.7)',width:1},lowRes:{color:'rgba(212, 83, 192, 0.7)',width:2},extraHighRes:{color:'rgba(239, 231, 20, 0.7)',width:2},extraLowRes:{color:'rgba(93, 186, 18, 0.7)',width:2},missing:{color:'rgba(255, 0, 0, 0.7)',width:1},culled:{color:'rgba(160, 100, 0, 0.8)',width:1},solidColor:{color:'rgba(128, 128, 128, 0.7)',width:1},picture:{color:'rgba(64, 64, 64, 0.7)',width:1},directPicture:{color:'rgba(127, 255, 0, 1.0)',width:1},unknown:{color:'rgba(0, 0, 0, 1.0)',width:2}};return{tileTypes,tileBorder};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function TileSnapshot(){ObjectSnapshot.apply(this,arguments);}\nTileSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveOptionalFieldsFromArgsToToplevel(this,['layerId','contentsScale','contentRect']);if(this.args.managedState){this.resolution=this.args.managedState.resolution;this.isSolidColor=this.args.managedState.isSolidColor;this.isUsingGpuMemory=this.args.managedState.isUsingGpuMemory;this.hasResource=this.args.managedState.hasResource;this.scheduledPriority=this.args.scheduledPriority;this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;}else{this.resolution=this.args.resolution;this.isSolidColor=this.args.drawInfo.isSolidColor;this.isUsingGpuMemory=this.args.isUsingGpuMemory;this.hasResource=this.args.hasResource;this.scheduledPriority=this.args.scheduledPriority;this.gpuMemoryUsageInBytes=this.args.gpuMemoryUsage;}\nif(this.contentRect){this.layerRect=this.contentRect.scale(1.0/this.contentsScale);}\nif(this.isSolidColor){this.type_=tr.e.cc.tileTypes.solidColor;}else if(!this.hasResource){this.type_=tr.e.cc.tileTypes.missing;}else if(this.resolution==='HIGH_RESOLUTION'){this.type_=tr.e.cc.tileTypes.highRes;}else if(this.resolution==='LOW_RESOLUTION'){this.type_=tr.e.cc.tileTypes.lowRes;}else{this.type_=tr.e.cc.tileTypes.unknown;}},getTypeForLayer(layer){let type=this.type_;if(type===tr.e.cc.tileTypes.unknown){if(this.contentsScale<layer.idealContentsScale){type=tr.e.cc.tileTypes.extraLowRes;}else if(this.contentsScale>layer.idealContentsScale){type=tr.e.cc.tileTypes.extraHighRes;}}\nreturn type;}};ObjectSnapshot.subTypes.register(TileSnapshot,{typeName:'cc::Tile'});return{TileSnapshot,};});'use strict';tr.exportTo('tr.ui.b',function(){const ListView=tr.ui.b.define('x-list-view',tr.ui.b.ContainerThatDecoratesItsChildren);ListView.prototype={__proto__:tr.ui.b.ContainerThatDecoratesItsChildren.prototype,decorate(){tr.ui.b.ContainerThatDecoratesItsChildren.prototype.decorate.call(this);Polymer.dom(this).classList.add('x-list-view');this.style.display='block';this.style.userSelect='none';this.style.outline='none';this.onItemClicked_=this.onItemClicked_.bind(this);this.onKeyDown_=this.onKeyDown_.bind(this);this.tabIndex=0;this.addEventListener('keydown',this.onKeyDown_);this.selectionChanged_=false;},decorateChild_(item){Polymer.dom(item).classList.add('list-item');item.style.paddingTop='2px';item.style.paddingRight='4px';item.style.paddingBottom='2px';item.style.paddingLeft='4px';item.addEventListener('click',this.onItemClicked_,true);Object.defineProperty(item,'selected',{configurable:true,get:()=>item.hasAttribute('selected'),set:value=>{const oldSelection=this.selectedElement;if(oldSelection&&oldSelection!==item&&value){Polymer.dom(this.selectedElement).removeAttribute('selected');}\nif(value){Polymer.dom(item).setAttribute('selected','selected');item.style.backgroundColor='rgb(171, 217, 202)';item.style.outline='1px dotted rgba(0,0,0,0.1)';item.style.outlineOffset=0;}else{Polymer.dom(item).removeAttribute('selected');item.style.backgroundColor='';}\nconst newSelection=this.selectedElement;if(newSelection!==oldSelection){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},});},undecorateChild_(item){this.selectionChanged_|=item.selected;Polymer.dom(item).classList.remove('list-item');item.removeEventListener('click',this.onItemClicked_);delete item.selected;},beginDecorating_(){this.selectionChanged_=false;},doneDecoratingForNow_(){if(this.selectionChanged_){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},get selectedElement(){const el=Polymer.dom(this).querySelector('.list-item[selected]');if(!el)return undefined;return el;},set selectedElement(el){if(!el){if(this.selectedElement){this.selectedElement.selected=false;}\nreturn;}\nif(el.parentElement!==this){throw new Error('Can only select elements that are children of this list view');}\nel.selected=true;},getElementByIndex(index){return Polymer.dom(this).querySelector('.list-item:nth-child('+index+')');},clear(){const changed=this.selectedElement!==undefined;tr.ui.b.ContainerThatDecoratesItsChildren.prototype.clear.call(this);if(changed){tr.b.dispatchSimpleEvent(this,'selection-changed',false);}},onItemClicked_(e){const currentSelectedElement=this.selectedElement;if(currentSelectedElement){Polymer.dom(currentSelectedElement).removeAttribute('selected');}\nlet element=e.target;while(element.parentElement!==this){element=element.parentElement;}\nif(element!==currentSelectedElement){Polymer.dom(element).setAttribute('selected','selected');}\ntr.b.dispatchSimpleEvent(this,'selection-changed',false);},onKeyDown_(e){if(this.selectedElement===undefined)return;if(e.keyCode===38){const prev=Polymer.dom(this.selectedElement).previousSibling;if(prev){prev.selected=true;tr.ui.b.scrollIntoViewIfNeeded(prev);e.preventDefault();return true;}}else if(e.keyCode===40){const next=Polymer.dom(this.selectedElement).nextSibling;if(next){next.selected=true;tr.ui.b.scrollIntoViewIfNeeded(next);e.preventDefault();return true;}}},addItem(textContent){const item=document.createElement('div');Polymer.dom(item).textContent=textContent;Polymer.dom(this).appendChild(item);item.style.userSelect='none';return item;}};return{ListView,};});'use strict';(function(){const DETAILS_SPLIT_REGEX=/^(\\S*)\\s*([\\S\\s]*)$/;Polymer({is:'tr-ui-e-chrome-cc-display-item-list-item',created(){Polymer.dom(this).setAttribute('name','');Polymer.dom(this).setAttribute('rawDetails','');Polymer.dom(this).setAttribute('richDetails',undefined);Polymer.dom(this).setAttribute('data_',undefined);},get data(){return this.data_;},set data(data){this.data_=data;if(!data){this.name='DATA MISSING';this.rawDetails='';this.richDetails=undefined;}else if(typeof data==='string'){const match=data.match(DETAILS_SPLIT_REGEX);this.name=match[1];this.rawDetails=match[2];this.richDetails=undefined;}else{this.name=data.name;this.rawDetails='';this.richDetails=data;}},stopPropagation(e){e.stopPropagation();},_computeIfSKP(richDetails){return richDetails&&richDetails.skp64;},_computeHref(richDetails){return'data:application/octet-stream;base64,'+richDetails.skp64;}});})();'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){function Selection(){this.selectionToSetIfClicked=undefined;}\nSelection.prototype={get specicifity(){throw new Error('Not implemented');},get associatedLayerId(){throw new Error('Not implemented');},get associatedRenderPassId(){throw new Error('Not implemented');},get highlightsByLayerId(){return{};},createAnalysis(){throw new Error('Not implemented');},findEquivalent(lthi){throw new Error('Not implemented');}};function RenderPassSelection(renderPass,renderPassId){if(!renderPass||(renderPassId===undefined)){throw new Error('Render pass (with id) is required');}\nthis.renderPass_=renderPass;this.renderPassId_=renderPassId;}\nRenderPassSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 1;},get associatedLayerId(){return undefined;},get associatedRenderPassId(){return this.renderPassId_;},get renderPass(){return this.renderPass_;},createAnalysis(){const dataView=document.createElement('tr-ui-a-generic-object-view-with-label');dataView.label='RenderPass '+this.renderPassId_;dataView.object=this.renderPass_.args;return dataView;},get title(){return this.renderPass_.objectInstance.typeName;}};function LayerSelection(layer){if(!layer){throw new Error('Layer is required');}\nthis.layer_=layer;}\nLayerSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 1;},get associatedLayerId(){return this.layer_.layerId;},get associatedRenderPassId(){return undefined;},get layer(){return this.layer_;},createAnalysis(){const dataView=document.createElement('tr-ui-a-generic-object-view-with-label');dataView.label='Layer '+this.layer_.layerId;if(this.layer_.usingGpuRasterization){dataView.label+=' (GPU-rasterized)';}\ndataView.object=this.layer_.args;return dataView;},get title(){return this.layer_.objectInstance.typeName;},findEquivalent(lthi){const layer=lthi.activeTree.findLayerWithId(this.layer_.layerId)||lthi.pendingTree.findLayerWithId(this.layer_.layerId);if(!layer)return undefined;return new LayerSelection(layer);}};function TileSelection(tile,opt_data){this.tile_=tile;this.data_=opt_data||{};}\nTileSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 2;},get associatedLayerId(){return this.tile_.layerId;},get highlightsByLayerId(){const highlights={};highlights[this.tile_.layerId]=[{colorKey:this.tile_.objectInstance.typeName,rect:this.tile_.layerRect}];return highlights;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label='Tile '+this.tile_.objectInstance.id+' on layer '+\nthis.tile_.layerId;if(this.data_){analysis.object={moreInfo:this.data_,tileArgs:this.tile_.args};}else{analysis.object=this.tile_.args;}\nreturn analysis;},findEquivalent(lthi){const tileInstance=this.tile_.tileInstance;if(lthi.ts<tileInstance.creationTs||lthi.ts>=tileInstance.deletionTs){return undefined;}\nconst tileSnapshot=tileInstance.getSnapshotAt(lthi.ts);if(!tileSnapshot)return undefined;return new TileSelection(tileSnapshot);}};function LayerRectSelection(layer,rectType,rect,opt_data){this.layer_=layer;this.rectType_=rectType;this.rect_=rect;this.data_=opt_data!==undefined?opt_data:rect;}\nLayerRectSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 2;},get associatedLayerId(){return this.layer_.layerId;},get highlightsByLayerId(){const highlights={};highlights[this.layer_.layerId]=[{colorKey:this.rectType_,rect:this.rect_}];return highlights;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label=this.rectType_+' on layer '+this.layer_.layerId;analysis.object=this.data_;return analysis;},findEquivalent(lthi){return undefined;}};function AnimationRectSelection(layer,rect){this.layer_=layer;this.rect_=rect;}\nAnimationRectSelection.prototype={__proto__:Selection.prototype,get specicifity(){return 0;},get associatedLayerId(){return this.layer_.layerId;},createAnalysis(){const analysis=document.createElement('tr-ui-a-generic-object-view-with-label');analysis.label='Animation Bounds of layer '+this.layer_.layerId;analysis.object=this.rect_;return analysis;}};return{Selection,RenderPassSelection,LayerSelection,TileSelection,LayerRectSelection,AnimationRectSelection,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const OPS_TIMING_ITERATIONS=3;const ANNOTATION='Comment';const BEGIN_ANNOTATION='BeginCommentGroup';const END_ANNOTATION='EndCommentGroup';const ANNOTATION_ID='ID: ';const ANNOTATION_CLASS='CLASS: ';const ANNOTATION_TAG='TAG: ';const constants=tr.e.cc.constants;const PictureOpsListView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-list-view');PictureOpsListView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.borderTop='1px solid grey';this.style.overflow='auto';this.opsList_=new tr.ui.b.ListView();Polymer.dom(this).appendChild(this.opsList_);this.selectedOp_=undefined;this.selectedOpIndex_=undefined;this.opsList_.addEventListener('selection-changed',this.onSelectionChanged_.bind(this));this.picture_=undefined;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.updateContents_();},updateContents_(){this.opsList_.clear();if(!this.picture_)return;let ops=this.picture_.getOps();if(!ops)return;ops=this.picture_.tagOpsWithTimings(ops);ops=this.opsTaggedWithAnnotations_(ops);for(let i=0;i<ops.length;i++){const op=ops[i];const item=document.createElement('div');item.opIndex=op.opIndex;Polymer.dom(item).textContent=i+') '+op.cmd_string;if(op.elementInfo.tag||op.elementInfo.id||op.elementInfo.class){const elementInfo=document.createElement('span');Polymer.dom(elementInfo).classList.add('elementInfo');elementInfo.style.color='purple';elementInfo.style.fontSize='small';elementInfo.style.fontWeight='bold';elementInfo.style.color='#777';const tag=op.elementInfo.tag?op.elementInfo.tag:'unknown';const id=op.elementInfo.id?'id='+op.elementInfo.id:undefined;const className=op.elementInfo.class?'class='+\nop.elementInfo.class:undefined;Polymer.dom(elementInfo).textContent='<'+tag+(id?' ':'')+\n(id?id:'')+(className?' ':'')+\n(className?className:'')+'>';Polymer.dom(item).appendChild(elementInfo);}\nif(op.info.length>0){const infoItem=document.createElement('div');Polymer.dom(infoItem).textContent=JSON.stringify(op.info);infoItem.style.fontSize='x-small';infoItem.style.color='#777';Polymer.dom(item).appendChild(infoItem);}\nif(op.cmd_time&&op.cmd_time>=0.0001){const time=document.createElement('span');Polymer.dom(time).classList.add('time');const rounded=op.cmd_time.toFixed(4);Polymer.dom(time).textContent='('+rounded+'ms)';time.style.fontSize='x-small';time.style.color='rgb(136, 0, 0)';Polymer.dom(item).appendChild(time);}\nitem.style.borderBottom='1px solid #555';item.style.fontSize='small';item.style.fontWeight='bold';item.style.paddingBottom='5px';item.style.paddingLeft='5px';item.style.cursor='pointer';for(const child of item.children){child.style.fontWeight='normal';child.style.marginLeft='1em';child.style.maxWidth='300px';}\nPolymer.dom(this.opsList_).appendChild(item);}},onSelectionChanged_(e){let beforeSelectedOp=true;if(this.opsList_.selectedElement===this.selectedOp_){this.opsList_.selectedElement=undefined;beforeSelectedOp=false;this.selectedOpIndex_=undefined;}\nthis.selectedOp_=this.opsList_.selectedElement;const ops=this.opsList_.children;for(let i=0;i<ops.length;i++){const op=ops[i];if(op===this.selectedOp_){beforeSelectedOp=false;this.selectedOpIndex_=op.opIndex;}else if(beforeSelectedOp){Polymer.dom(op).setAttribute('beforeSelection','beforeSelection');op.style.backgroundColor='rgb(103, 199, 165)';}else{Polymer.dom(op).removeAttribute('beforeSelection');op.style.backgroundColor='';}}\ntr.b.dispatchSimpleEvent(this,'selection-changed',false);},get numOps(){return this.opsList_.children.length;},get selectedOpIndex(){return this.selectedOpIndex_;},set selectedOpIndex(s){this.selectedOpIndex_=s;if(s===undefined){this.opsList_.selectedElement=this.selectedOp_;this.onSelectionChanged_();}else{if(s<0)throw new Error('Invalid index');if(s>=this.numOps)throw new Error('Invalid index');this.opsList_.selectedElement=this.opsList_.getElementByIndex(s+1);tr.ui.b.scrollIntoViewIfNeeded(this.opsList_.selectedElement);}},opsTaggedWithAnnotations_(ops){const annotationGroups=[];const opsWithoutAnnotations=[];for(let opIndex=0;opIndex<ops.length;opIndex++){const op=ops[opIndex];op.opIndex=opIndex;switch(op.cmd_string){case BEGIN_ANNOTATION:annotationGroups.push([]);break;case END_ANNOTATION:annotationGroups.pop();break;case ANNOTATION:annotationGroups[annotationGroups.length-1].push(op);break;default:{const annotations=[];let elementInfo={};annotationGroups.forEach(function(annotationGroup){elementInfo={};annotationGroup.forEach(function(annotation){annotation.info.forEach(function(info){if(info.includes(ANNOTATION_TAG)){elementInfo.tag=info.substring(info.indexOf(ANNOTATION_TAG)+\nANNOTATION_TAG.length).toLowerCase();}else if(info.includes(ANNOTATION_ID)){elementInfo.id=info.substring(info.indexOf(ANNOTATION_ID)+\nANNOTATION_ID.length);}else if(info.includes(ANNOTATION_CLASS)){elementInfo.class=info.substring(info.indexOf(ANNOTATION_CLASS)+\nANNOTATION_CLASS.length);}\nannotations.push(info);});});});op.annotations=annotations;op.elementInfo=elementInfo;opsWithoutAnnotations.push(op);}}}\nreturn opsWithoutAnnotations;}};return{PictureOpsListView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const THIS_DOC=document.currentScript.ownerDocument;const DisplayItemDebugger=tr.ui.b.define('tr-ui-e-chrome-cc-display-item-debugger');DisplayItemDebugger.prototype={__proto__:HTMLDivElement.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-display-item-debugger-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.display='flex';this.style.minWidth=0;this.pictureAsImageData_=undefined;this.zoomScaleValue_=1;this.sizeInfo_=Polymer.dom(this).querySelector('.size');this.rasterArea_=Polymer.dom(this).querySelector('raster-area');this.rasterArea_.style.flexGrow=1;this.rasterArea_.style.flexShrink=1;this.rasterArea_.style.flexBasis='auto';this.rasterArea_.style.backgroundColor='#ddd';this.rasterArea_.style.minHeight='200px';this.rasterArea_.style.minWidth='200px';this.rasterArea_.style.paddingLeft='5px';this.rasterArea_.style.display='flex';this.rasterArea_.style.flexDirection='column';this.rasterCanvas_=Polymer.dom(this.rasterArea_).querySelector('canvas');this.rasterCtx_=this.rasterCanvas_.getContext('2d');const canvasScroller=Polymer.dom(this).querySelector('canvas-scroller');canvasScroller.style.flexGrow=1;canvasScroller.style.flexShrink=1;canvasScroller.style.flexBasis='auto';canvasScroller.style.minWidth=0;canvasScroller.style.minHeight=0;canvasScroller.style.overflow='auto';this.trackMouse_();this.displayItemInfo_=Polymer.dom(this).querySelector('display-item-info');this.displayItemInfo_.addEventListener('click',this.onDisplayItemInfoClick_.bind(this),false);this.displayItemListView_=new tr.ui.b.ListView();this.displayItemListView_.addEventListener('selection-changed',this.onDisplayItemListSelection_.bind(this));Polymer.dom(this.displayItemInfo_).appendChild(this.displayItemListView_);this.displayListFilename_=Polymer.dom(this).querySelector('.dlfilename');this.displayListExportButton_=Polymer.dom(this).querySelector('.dlexport');this.displayListExportButton_.addEventListener('click',this.onExportDisplayListClicked_.bind(this));this.skpFilename_=Polymer.dom(this).querySelector('.skpfilename');this.skpExportButton_=Polymer.dom(this).querySelector('.skpexport');this.skpExportButton_.addEventListener('click',this.onExportSkPictureClicked_.bind(this));const leftPanel=Polymer.dom(this).querySelector('left-panel');leftPanel.style.flexGrow=0;leftPanel.style.flexShrink=0;leftPanel.style.flexBasis='auto';leftPanel.style.minWidth='200px';leftPanel.style.overflow='auto';leftPanel.children[0].paddingTop='2px';leftPanel.children[0].children[0].style.borderBottom='1px solid #555';const leftPanelTitle=leftPanel.querySelector('.title');leftPanelTitle.style.fontWeight='bold';leftPanelTitle.style.marginLeft='5px';leftPanelTitle.style.marginright='5px';for(const div of leftPanel.querySelectorAll('.export')){div.style.margin='5px';}\nconst middleDragHandle=document.createElement('tr-ui-b-drag-handle');middleDragHandle.style.flexGrow=0;middleDragHandle.style.flexShrink=0;middleDragHandle.style.flexBasis='auto';middleDragHandle.horizontal=false;middleDragHandle.target=leftPanel;const rightPanel=Polymer.dom(this).querySelector('right-panel');rightPanel.style.display='flex';rightPanel.style.flexGrow=1;rightPanel.style.flexShrink=1;rightPanel.style.flexBasis='auto';rightPanel.style.minWidth=0;this.infoBar_=document.createElement('tr-ui-b-info-bar');Polymer.dom(this.rasterArea_).insertBefore(this.infoBar_,canvasScroller);Polymer.dom(this).insertBefore(middleDragHandle,rightPanel);this.picture_=undefined;this.pictureOpsListView_=new tr.ui.e.chrome.cc.PictureOpsListView();this.pictureOpsListView_.style.flexGrow=0;this.pictureOpsListView_.style.flexShrink=0;this.pictureOpsListView_.style.flexBasis='auto';this.pictureOpsListView_.style.overflow='auto';this.pictureOpsListView_.style.minWidth='100px';Polymer.dom(rightPanel).insertBefore(this.pictureOpsListView_,this.rasterArea_);this.pictureOpsListDragHandle_=document.createElement('tr-ui-b-drag-handle');this.pictureOpsListDragHandle_.horizontal=false;this.pictureOpsListDragHandle_.target=this.pictureOpsListView_;Polymer.dom(rightPanel).insertBefore(this.pictureOpsListDragHandle_,this.rasterArea_);},get picture(){return this.picture_;},set displayItemList(displayItemList){this.displayItemList_=displayItemList;this.picture=this.displayItemList_;this.displayItemListView_.clear();this.displayItemList_.items.forEach(function(item){const listItem=document.createElement('tr-ui-e-chrome-cc-display-item-list-item');listItem.data=item;Polymer.dom(this.displayItemListView_).appendChild(listItem);}.bind(this));},set picture(picture){this.picture_=picture;const showOpsList=picture&&picture!==this.displayItemList_;this.updateDrawOpsList_(showOpsList);if(picture){const size=this.getRasterCanvasSize_();this.rasterCanvas_.width=size.width;this.rasterCanvas_.height=size.height;}\nconst bounds=this.rasterArea_.getBoundingClientRect();const selectorBounds=this.mouseModeSelector_.getBoundingClientRect();this.mouseModeSelector_.pos={x:(bounds.right-selectorBounds.width-10),y:bounds.top};this.rasterize_();this.scheduleUpdateContents_();},getRasterCanvasSize_(){const style=window.getComputedStyle(this.rasterArea_);let width=parseInt(style.width);let height=parseInt(style.height);if(this.picture_){width=Math.max(width,this.picture_.layerRect.width);height=Math.max(height,this.picture_.layerRect.height);}\nreturn{width,height};},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_.bind(this));},updateContents_(){this.updateContentsPending_=false;if(this.picture_){Polymer.dom(this.sizeInfo_).textContent='('+\nthis.picture_.layerRect.width+' x '+\nthis.picture_.layerRect.height+')';}\nif(!this.pictureAsImageData_)return;this.infoBar_.visible=false;this.infoBar_.removeAllButtons();if(this.pictureAsImageData_.error){this.infoBar_.message='Cannot rasterize...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=this.pictureAsImageData_.error;overlay.visible=true;e.stopPropagation();return false;}.bind(this));this.infoBar_.visible=true;}\nthis.drawPicture_();},drawPicture_(){const size=this.getRasterCanvasSize_();if(size.width!==this.rasterCanvas_.width){this.rasterCanvas_.width=size.width;}\nif(size.height!==this.rasterCanvas_.height){this.rasterCanvas_.height=size.height;}\nthis.rasterCtx_.clearRect(0,0,size.width,size.height);if(!this.picture_||!this.pictureAsImageData_.imageData)return;const imgCanvas=this.pictureAsImageData_.asCanvas();const w=imgCanvas.width;const h=imgCanvas.height;this.rasterCtx_.drawImage(imgCanvas,0,0,w,h,0,0,w*this.zoomScaleValue_,h*this.zoomScaleValue_);},rasterize_(){if(this.picture_){this.picture_.rasterize({showOverdraw:false},this.onRasterComplete_.bind(this));}},onRasterComplete_(pictureAsImageData){this.pictureAsImageData_=pictureAsImageData;this.scheduleUpdateContents_();},onDisplayItemListSelection_(e){const selected=this.displayItemListView_.selectedElement;if(!selected){this.picture=this.displayItemList_;return;}\nconst index=Array.prototype.indexOf.call(this.displayItemListView_.children,selected);const displayItem=this.displayItemList_.items[index];if(displayItem&&displayItem.skp64){this.picture=new tr.e.cc.Picture(displayItem.skp64,this.displayItemList_.layerRect);}else{this.picture=undefined;}},onDisplayItemInfoClick_(e){if(e&&e.target===this.displayItemInfo_){this.displayItemListView_.selectedElement=undefined;}},updateDrawOpsList_(showOpsList){if(showOpsList){this.pictureOpsListView_.picture=this.picture_;if(this.pictureOpsListView_.numOps>0){this.pictureOpsListView_.style.display='block';this.pictureOpsListDragHandle_.style.display='block';}}else{this.pictureOpsListView_.style.display='none';this.pictureOpsListDragHandle_.style.display='none';}},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.rasterArea_;Polymer.dom(this.rasterArea_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.rasterArea_.offsetLeft,y:e.clientY-this.rasterArea_.offsetTop};},saveFile_(filename,rawData){if(!rawData)return;const length=rawData.length;const arrayBuffer=new ArrayBuffer(length);const uint8Array=new Uint8Array(arrayBuffer);for(let c=0;c<length;c++){uint8Array[c]=rawData.charCodeAt(c);}\nconst blob=new Blob([uint8Array],{type:'application/octet-binary'});const blobUrl=window.URL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;link.download=filename;const event=document.createEvent('MouseEvents');event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);link.dispatchEvent(event);},onExportDisplayListClicked_(){const rawData=JSON.stringify(this.displayItemList_.items);this.saveFile_(this.displayListFilename_.value,rawData);},onExportSkPictureClicked_(){const rawData=tr.b.Base64.atob(this.picture_.getBase64SkpData());this.saveFile_(this.skpFilename_.value,rawData);}};return{DisplayItemDebugger,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const DisplayItemSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-display-item-list-view',tr.ui.analysis.ObjectSnapshotView);DisplayItemSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){this.style.display='flex';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.displayItemDebugger_=new tr.ui.e.chrome.cc.DisplayItemDebugger();this.displayItemDebugger_.style.flexGrow=1;this.displayItemDebugger_.style.flexShrink=1;this.displayItemDebugger_.style.flexBasis='auto';this.displayItemDebugger_.style.minWidth=0;Polymer.dom(this).appendChild(this.displayItemDebugger_);},updateContents(){if(this.objectSnapshot_&&this.displayItemDebugger_){this.displayItemDebugger_.displayItemList=this.objectSnapshot_;}}};tr.ui.analysis.ObjectSnapshotView.register(DisplayItemSnapshotView,{typeNames:['cc::DisplayItemList'],showInstances:false});return{DisplayItemSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const constants=tr.e.cc.constants;const RENDER_PASS_QUADS=Math.max(constants.ACTIVE_TREE,constants.PENDING_TREE)+1;const LayerPicker=tr.ui.b.define('tr-ui-e-chrome-cc-layer-picker');LayerPicker.prototype={__proto__:HTMLUnknownElement.prototype,decorate(){this.lthi_=undefined;this.controls_=document.createElement('top-controls');this.renderPassQuads_=false;this.style.display='flex';this.style.flexDirection='column';this.controls_.style.flexGrow=0;this.controls_.style.flexShrink=0;this.controls_.style.flexBasis='auto';this.controls_.style.backgroundImage='-webkit-gradient(linear, 0 0, 100% 0, from(#E5E5E5), to(#D1D1D1))';this.controls_.style.borderBottom='1px solid #8e8e8e';this.controls_.style.borderTop='1px solid white';this.controls_.style.display='inline';this.controls_.style.fontSize='14px';this.controls_.style.paddingLeft='2px';this.itemList_=new tr.ui.b.ListView();this.itemList_.style.flexGrow=1;this.itemList_.style.flexShrink=1;this.itemList_.style.flexBasis='auto';this.itemList_.style.fontFamily='monospace';this.itemList_.style.overflow='auto';Polymer.dom(this).appendChild(this.controls_);Polymer.dom(this).appendChild(this.itemList_);this.itemList_.addEventListener('selection-changed',this.onItemSelectionChanged_.bind(this));Polymer.dom(this.controls_).appendChild(tr.ui.b.createSelector(this,'whichTree','layerPicker.whichTree',constants.ACTIVE_TREE,[{label:'Active tree',value:constants.ACTIVE_TREE},{label:'Pending tree',value:constants.PENDING_TREE},{label:'Render pass quads',value:RENDER_PASS_QUADS}]));this.showPureTransformLayers_=false;const showPureTransformLayers=tr.ui.b.createCheckBox(this,'showPureTransformLayers','layerPicker.showPureTransformLayers',false,'Transform layers');Polymer.dom(showPureTransformLayers).classList.add('show-transform-layers');showPureTransformLayers.title='When checked, pure transform layers are shown';Polymer.dom(this.controls_).appendChild(showPureTransformLayers);},get lthiSnapshot(){return this.lthiSnapshot_;},set lthiSnapshot(lthiSnapshot){this.lthiSnapshot_=lthiSnapshot;this.updateContents_();},get whichTree(){return this.renderPassQuads_?constants.ACTIVE_TREE:this.whichTree_;},set whichTree(whichTree){this.whichTree_=whichTree;this.renderPassQuads_=(whichTree===RENDER_PASS_QUADS);this.updateContents_();tr.b.dispatchSimpleEvent(this,'selection-change',false);},get layerTreeImpl(){if(this.lthiSnapshot===undefined)return undefined;return this.lthiSnapshot.getTree(this.whichTree);},get isRenderPassQuads(){return this.renderPassQuads_;},get showPureTransformLayers(){return this.showPureTransformLayers_;},set showPureTransformLayers(show){if(this.showPureTransformLayers_===show)return;this.showPureTransformLayers_=show;this.updateContents_();},getRenderPassInfos_(){if(!this.lthiSnapshot_)return[];const renderPassInfo=[];if(!this.lthiSnapshot_.args.frame||!this.lthiSnapshot_.args.frame.renderPasses){return renderPassInfo;}\nconst renderPasses=this.lthiSnapshot_.args.frame.renderPasses;for(let i=0;i<renderPasses.length;++i){const info={renderPass:renderPasses[i],depth:0,id:i,name:'cc::RenderPass'};renderPassInfo.push(info);}\nreturn renderPassInfo;},getLayerInfos_(){if(!this.lthiSnapshot_)return[];const tree=this.lthiSnapshot_.getTree(this.whichTree_);if(!tree)return[];const layerInfos=[];const showPureTransformLayers=this.showPureTransformLayers_;const visitedLayers={};function visitLayer(layer,depth,isMask,isReplica){if(visitedLayers[layer.layerId])return;visitedLayers[layer.layerId]=true;const info={layer,depth};if(layer.args.drawsContent){info.name=layer.objectInstance.name;}else{info.name='cc::LayerImpl';}\nif(layer.usingGpuRasterization){info.name+=' (G)';}\ninfo.isMaskLayer=isMask;info.replicaLayer=isReplica;if(showPureTransformLayers||layer.args.drawsContent){layerInfos.push(info);}}\ntree.iterLayers(visitLayer);return layerInfos;},updateContents_(){if(this.renderPassQuads_){this.updateRenderPassContents_();}else{this.updateLayerContents_();}},updateRenderPassContents_(){this.itemList_.clear();let selectedRenderPassId;if(this.selection_&&this.selection_.associatedRenderPassId){selectedRenderPassId=this.selection_.associatedRenderPassId;}\nconst renderPassInfos=this.getRenderPassInfos_();renderPassInfos.forEach(function(renderPassInfo){const renderPass=renderPassInfo.renderPass;const id=renderPassInfo.id;const item=this.createElementWithDepth_(renderPassInfo.depth);const labelEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());Polymer.dom(labelEl).textContent=renderPassInfo.name+' '+id;item.renderPass=renderPass;item.renderPassId=id;Polymer.dom(this.itemList_).appendChild(item);if(id===selectedRenderPassId){renderPass.selectionState=tr.model.SelectionState.SELECTED;}},this);},updateLayerContents_(){this.changingItemSelection_=true;try{this.itemList_.clear();let selectedLayerId;if(this.selection_&&this.selection_.associatedLayerId){selectedLayerId=this.selection_.associatedLayerId;}\nconst layerInfos=this.getLayerInfos_();layerInfos.forEach(function(layerInfo){const layer=layerInfo.layer;const id=layer.layerId;const item=this.createElementWithDepth_(layerInfo.depth);const labelEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());Polymer.dom(labelEl).textContent=layerInfo.name+' '+id;const notesEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());if(layerInfo.isMaskLayer){Polymer.dom(notesEl).textContent+='(mask)';}\nif(layerInfo.isReplicaLayer){Polymer.dom(notesEl).textContent+='(replica)';}\nif((layer.gpuMemoryUsageInBytes!==undefined)&&(layer.gpuMemoryUsageInBytes>0)){const gpuUsageStr=tr.b.Unit.byName.sizeInBytes.format(layer.gpuMemoryUsageInBytes);Polymer.dom(notesEl).textContent+=' ('+gpuUsageStr+' MiB)';}\nitem.layer=layer;Polymer.dom(this.itemList_).appendChild(item);if(layer.layerId===selectedLayerId){layer.selectionState=tr.model.SelectionState.SELECTED;item.selected=true;}},this);}finally{this.changingItemSelection_=false;}},createElementWithDepth_(depth){const item=document.createElement('div');const indentEl=Polymer.dom(item).appendChild(tr.ui.b.createSpan());indentEl.style.whiteSpace='pre';for(let i=0;i<depth;i++){Polymer.dom(indentEl).textContent=Polymer.dom(indentEl).textContent+' ';}\nreturn item;},onItemSelectionChanged_(e){if(this.changingItemSelection_)return;if(this.renderPassQuads_){this.onRenderPassSelected_(e);}else{this.onLayerSelected_(e);}\ntr.b.dispatchSimpleEvent(this,'selection-change',false);},onRenderPassSelected_(e){let selectedRenderPass;let selectedRenderPassId;if(this.itemList_.selectedElement){selectedRenderPass=this.itemList_.selectedElement.renderPass;selectedRenderPassId=this.itemList_.selectedElement.renderPassId;}\nif(selectedRenderPass){this.selection_=new tr.ui.e.chrome.cc.RenderPassSelection(selectedRenderPass,selectedRenderPassId);}else{this.selection_=undefined;}},onLayerSelected_(e){let selectedLayer;if(this.itemList_.selectedElement){selectedLayer=this.itemList_.selectedElement.layer;}\nif(selectedLayer){this.selection_=new tr.ui.e.chrome.cc.LayerSelection(selectedLayer);}else{this.selection_=undefined;}},get selection(){return this.selection_;},set selection(selection){if(this.selection_===selection)return;this.selection_=selection;this.updateContents_();}};return{LayerPicker,};});'use strict';tr.exportTo('tr.e.cc',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function RenderPassSnapshot(){ObjectSnapshot.apply(this,arguments);}\nRenderPassSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){tr.e.cc.preInitializeObject(this);},initialize(){tr.e.cc.moveRequiredFieldsFromArgsToToplevel(this,['quadList']);}};ObjectSnapshot.subTypes.register(RenderPassSnapshot,{typeName:'cc::RenderPass'});return{RenderPassSnapshot,};});'use strict';tr.exportTo('tr.ui.b',function(){const deg2rad=tr.b.math.deg2rad;const constants={DEFAULT_SCALE:0.5,DEFAULT_EYE_DISTANCE:10000,MINIMUM_DISTANCE:1000,MAXIMUM_DISTANCE:100000,FOV:15,RESCALE_TIMEOUT_MS:200,MAXIMUM_TILT:80,SETTINGS_NAMESPACE:'tr.ui_camera'};const Camera=tr.ui.b.define('camera');Camera.prototype={__proto__:HTMLUnknownElement.prototype,decorate(eventSource){this.eventSource_=eventSource;this.eventSource_.addEventListener('beginpan',this.onPanBegin_.bind(this));this.eventSource_.addEventListener('updatepan',this.onPanUpdate_.bind(this));this.eventSource_.addEventListener('endpan',this.onPanEnd_.bind(this));this.eventSource_.addEventListener('beginzoom',this.onZoomBegin_.bind(this));this.eventSource_.addEventListener('updatezoom',this.onZoomUpdate_.bind(this));this.eventSource_.addEventListener('endzoom',this.onZoomEnd_.bind(this));this.eventSource_.addEventListener('beginrotate',this.onRotateBegin_.bind(this));this.eventSource_.addEventListener('updaterotate',this.onRotateUpdate_.bind(this));this.eventSource_.addEventListener('endrotate',this.onRotateEnd_.bind(this));this.eye_=[0,0,constants.DEFAULT_EYE_DISTANCE];this.gazeTarget_=[0,0,0];this.rotation_=[0,0];this.pixelRatio_=window.devicePixelRatio||1;},get modelViewMatrix(){const mvMatrix=mat4.create();mat4.lookAt(mvMatrix,this.eye_,this.gazeTarget_,[0,1,0]);return mvMatrix;},get projectionMatrix(){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);const aspectRatio=rect.width/rect.height;const matrix=mat4.create();mat4.perspective(matrix,deg2rad(constants.FOV),aspectRatio,1,100000);return matrix;},set canvas(c){this.canvas_=c;},set deviceRect(rect){this.deviceRect_=rect;},get stackingDistanceDampening(){const gazeVector=[this.gazeTarget_[0]-this.eye_[0],this.gazeTarget_[1]-this.eye_[1],this.gazeTarget_[2]-this.eye_[2]];vec3.normalize(gazeVector,gazeVector);return 1+gazeVector[2];},loadCameraFromSettings(settings){this.eye_=settings.get('eye',this.eye_,constants.SETTINGS_NAMESPACE);this.gazeTarget_=settings.get('gaze_target',this.gazeTarget_,constants.SETTINGS_NAMESPACE);this.rotation_=settings.get('rotation',this.rotation_,constants.SETTINGS_NAMESPACE);this.dispatchRenderEvent_();},saveCameraToSettings(settings){settings.set('eye',this.eye_,constants.SETTINGS_NAMESPACE);settings.set('gaze_target',this.gazeTarget_,constants.SETTINGS_NAMESPACE);settings.set('rotation',this.rotation_,constants.SETTINGS_NAMESPACE);},resetCamera(){this.eye_=[0,0,constants.DEFAULT_EYE_DISTANCE];this.gazeTarget_=[0,0,0];this.rotation_=[0,0];const settings=tr.b.SessionSettings();const keys=settings.keys(constants.SETTINGS_NAMESPACE);if(keys.length!==0){this.loadCameraFromSettings(settings);return;}\nif(this.deviceRect_){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);this.eye_[0]=this.deviceRect_.width/2;this.eye_[1]=this.deviceRect_.height/2;this.gazeTarget_[0]=this.deviceRect_.width/2;this.gazeTarget_[1]=this.deviceRect_.height/2;}\nthis.saveCameraToSettings(settings);this.dispatchRenderEvent_();},updatePanByDelta(delta){const rect=tr.ui.b.windowRectForElement(this.canvas_).scaleSize(this.pixelRatio_);const eyeVector=[this.eye_[0]-this.gazeTarget_[0],this.eye_[1]-this.gazeTarget_[1],this.eye_[2]-this.gazeTarget_[2]];const length=vec3.length(eyeVector);vec3.normalize(eyeVector,eyeVector);const halfFov=constants.FOV/2;const multiplier=2.0*length*Math.tan(deg2rad(halfFov))/rect.height;const up=[0,1,0];const rotMatrix=mat4.create();mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[1]),[0,1,0]);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[0]),[1,0,0]);vec3.transformMat4(up,up,rotMatrix);const right=[0,0,0];vec3.cross(right,eyeVector,up);vec3.normalize(right,right);for(let i=0;i<3;++i){this.gazeTarget_[i]+=delta[0]*multiplier*right[i]-delta[1]*multiplier*up[i];this.eye_[i]=this.gazeTarget_[i]+length*eyeVector[i];}\nif(Math.abs(this.gazeTarget_[2])>1e-6){const gazeVector=[-eyeVector[0],-eyeVector[1],-eyeVector[2]];const newLength=tr.b.math.clamp(-this.eye_[2]/gazeVector[2],constants.MINIMUM_DISTANCE,constants.MAXIMUM_DISTANCE);for(let i=0;i<3;++i){this.gazeTarget_[i]=this.eye_[i]+newLength*gazeVector[i];}}\nthis.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},updateZoomByDelta(delta){let deltaY=delta[1];deltaY=tr.b.math.clamp(deltaY,-50,50);let scale=1.0-deltaY/100.0;const eyeVector=[0,0,0];vec3.subtract(eyeVector,this.eye_,this.gazeTarget_);const length=vec3.length(eyeVector);if(length*scale<constants.MINIMUM_DISTANCE){scale=constants.MINIMUM_DISTANCE/length;}else if(length*scale>constants.MAXIMUM_DISTANCE){scale=constants.MAXIMUM_DISTANCE/length;}\nvec3.scale(eyeVector,eyeVector,scale);vec3.add(this.eye_,this.gazeTarget_,eyeVector);this.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},updateRotateByDelta(delta){delta[0]*=0.5;delta[1]*=0.5;if(Math.abs(this.rotation_[0]+delta[1])>constants.MAXIMUM_TILT){return;}\nif(Math.abs(this.rotation_[1]-delta[0])>constants.MAXIMUM_TILT){return;}\nconst eyeVector=[0,0,0,0];vec3.subtract(eyeVector,this.eye_,this.gazeTarget_);const rotMatrix=mat4.create();mat4.rotate(rotMatrix,rotMatrix,-deg2rad(this.rotation_[0]),[1,0,0]);mat4.rotate(rotMatrix,rotMatrix,-deg2rad(this.rotation_[1]),[0,1,0]);vec4.transformMat4(eyeVector,eyeVector,rotMatrix);this.rotation_[0]+=delta[1];this.rotation_[1]-=delta[0];mat4.identity(rotMatrix);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[1]),[0,1,0]);mat4.rotate(rotMatrix,rotMatrix,deg2rad(this.rotation_[0]),[1,0,0]);vec4.transformMat4(eyeVector,eyeVector,rotMatrix);vec3.add(this.eye_,this.gazeTarget_,eyeVector);this.saveCameraToSettings(tr.b.SessionSettings());this.dispatchRenderEvent_();},onPanBegin_(e){this.panning_=true;this.lastMousePosition_=this.getMousePosition_(e);},onPanUpdate_(e){if(!this.panning_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updatePanByDelta(delta);},onPanEnd_(e){this.panning_=false;},onZoomBegin_(e){this.zooming_=true;const p=this.getMousePosition_(e);this.lastMousePosition_=p;this.zoomPoint_=p;},onZoomUpdate_(e){if(!this.zooming_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updateZoomByDelta(delta);},onZoomEnd_(e){this.zooming_=false;this.zoomPoint_=undefined;},onRotateBegin_(e){this.rotating_=true;this.lastMousePosition_=this.getMousePosition_(e);},onRotateUpdate_(e){if(!this.rotating_)return;const delta=this.getMouseDelta_(e,this.lastMousePosition_);this.lastMousePosition_=this.getMousePosition_(e);this.updateRotateByDelta(delta);},onRotateEnd_(e){this.rotating_=false;},getMousePosition_(e){const rect=tr.ui.b.windowRectForElement(this.canvas_);return[(e.clientX-rect.x)*this.pixelRatio_,(e.clientY-rect.y)*this.pixelRatio_];},getMouseDelta_(e,p){const newP=this.getMousePosition_(e);return[newP[0]-p[0],newP[1]-p[1]];},dispatchRenderEvent_(){tr.b.dispatchSimpleEvent(this,'renderrequired',false,false);}};return{Camera,};});'use strict';tr.exportTo('tr.ui.b',function(){const THIS_DOC=document.currentScript.ownerDocument;const constants={};constants.IMAGE_LOAD_RETRY_TIME_MS=500;constants.SUBDIVISION_MINIMUM=1;constants.SUBDIVISION_RECURSION_DEPTH=3;constants.SUBDIVISION_DEPTH_THRESHOLD=100;constants.FAR_PLANE_DISTANCE=10000;function drawTexturedTriangle(ctx,img,p0,p1,p2,t0,t1,t2){const tmpP0=[p0[0],p0[1]];const tmpP1=[p1[0],p1[1]];const tmpP2=[p2[0],p2[1]];const tmpT0=[t0[0],t0[1]];const tmpT1=[t1[0],t1[1]];const tmpT2=[t2[0],t2[1]];ctx.beginPath();ctx.moveTo(tmpP0[0],tmpP0[1]);ctx.lineTo(tmpP1[0],tmpP1[1]);ctx.lineTo(tmpP2[0],tmpP2[1]);ctx.closePath();tmpP1[0]-=tmpP0[0];tmpP1[1]-=tmpP0[1];tmpP2[0]-=tmpP0[0];tmpP2[1]-=tmpP0[1];tmpT1[0]-=tmpT0[0];tmpT1[1]-=tmpT0[1];tmpT2[0]-=tmpT0[0];tmpT2[1]-=tmpT0[1];const det=1/(tmpT1[0]*tmpT2[1]-tmpT2[0]*tmpT1[1]);const a=(tmpT2[1]*tmpP1[0]-tmpT1[1]*tmpP2[0])*det;const b=(tmpT2[1]*tmpP1[1]-tmpT1[1]*tmpP2[1])*det;const c=(tmpT1[0]*tmpP2[0]-tmpT2[0]*tmpP1[0])*det;const d=(tmpT1[0]*tmpP2[1]-tmpT2[0]*tmpP1[1])*det;const e=tmpP0[0]-a*tmpT0[0]-c*tmpT0[1];const f=tmpP0[1]-b*tmpT0[0]-d*tmpT0[1];ctx.save();ctx.transform(a,b,c,d,e,f);ctx.clip();ctx.drawImage(img,0,0);ctx.restore();}\nfunction drawTriangleSub(ctx,img,p0,p1,p2,t0,t1,t2,opt_recursionDepth){const depth=opt_recursionDepth||0;let subdivisionIndex=0;if(depth<constants.SUBDIVISION_MINIMUM){subdivisionIndex=7;}else if(depth<constants.SUBDIVISION_RECURSION_DEPTH){if(Math.abs(p0[2]-p1[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=1;}\nif(Math.abs(p0[2]-p2[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=2;}\nif(Math.abs(p1[2]-p2[2])>constants.SUBDIVISION_DEPTH_THRESHOLD){subdivisionIndex+=4;}}\nconst p01=vec4.create();const p02=vec4.create();const p12=vec4.create();const t01=vec2.create();const t02=vec2.create();const t12=vec2.create();for(let i=0;i<2;++i){p0[i]*=p0[2];p1[i]*=p1[2];p2[i]*=p2[2];}\nfor(let i=0;i<4;++i){p01[i]=(p0[i]+p1[i])/2;p02[i]=(p0[i]+p2[i])/2;p12[i]=(p1[i]+p2[i])/2;}\nfor(let i=0;i<2;++i){p0[i]/=p0[2];p1[i]/=p1[2];p2[i]/=p2[2];p01[i]/=p01[2];p02[i]/=p02[2];p12[i]/=p12[2];}\nfor(let i=0;i<2;++i){t01[i]=(t0[i]+t1[i])/2;t02[i]=(t0[i]+t2[i])/2;t12[i]=(t1[i]+t2[i])/2;}\nswitch(subdivisionIndex){case 1:drawTriangleSub(ctx,img,p0,p01,p2,t0,t01,t2,depth+1);drawTriangleSub(ctx,img,p01,p1,p2,t01,t1,t2,depth+1);break;case 2:drawTriangleSub(ctx,img,p0,p1,p02,t0,t1,t02,depth+1);drawTriangleSub(ctx,img,p1,p02,p2,t1,t02,t2,depth+1);break;case 3:drawTriangleSub(ctx,img,p0,p01,p02,t0,t01,t02,depth+1);drawTriangleSub(ctx,img,p02,p01,p2,t02,t01,t2,depth+1);drawTriangleSub(ctx,img,p01,p1,p2,t01,t1,t2,depth+1);break;case 4:drawTriangleSub(ctx,img,p0,p12,p2,t0,t12,t2,depth+1);drawTriangleSub(ctx,img,p0,p1,p12,t0,t1,t12,depth+1);break;case 5:drawTriangleSub(ctx,img,p0,p01,p2,t0,t01,t2,depth+1);drawTriangleSub(ctx,img,p2,p01,p12,t2,t01,t12,depth+1);drawTriangleSub(ctx,img,p01,p1,p12,t01,t1,t12,depth+1);break;case 6:drawTriangleSub(ctx,img,p0,p12,p02,t0,t12,t02,depth+1);drawTriangleSub(ctx,img,p0,p1,p12,t0,t1,t12,depth+1);drawTriangleSub(ctx,img,p02,p12,p2,t02,t12,t2,depth+1);break;case 7:drawTriangleSub(ctx,img,p0,p01,p02,t0,t01,t02,depth+1);drawTriangleSub(ctx,img,p01,p12,p02,t01,t12,t02,depth+1);drawTriangleSub(ctx,img,p01,p1,p12,t01,t1,t12,depth+1);drawTriangleSub(ctx,img,p02,p12,p2,t02,t12,t2,depth+1);break;default:drawTexturedTriangle(ctx,img,p0,p1,p2,t0,t1,t2);break;}}\nconst tmpVec4=vec4.create();function transform(transformed,point,matrix,viewport){vec4.set(tmpVec4,point[0],point[1],0,1);vec4.transformMat4(tmpVec4,tmpVec4,matrix);let w=tmpVec4[3];if(w<1e-6)w=1e-6;transformed[0]=((tmpVec4[0]/w)+1)*viewport.width/2;transformed[1]=((tmpVec4[1]/w)+1)*viewport.height/2;transformed[2]=w;}\nfunction drawProjectedQuadBackgroundToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){if(quad.imageData){quadCanvas.width=quad.imageData.width;quadCanvas.height=quad.imageData.height;quadCanvas.getContext('2d').putImageData(quad.imageData,0,0);const quadBBox=new tr.b.math.BBox2();quadBBox.addQuad(quad);const iw=quadCanvas.width;const ih=quadCanvas.height;drawTriangleSub(ctx,quadCanvas,p1,p2,p4,[0,0],[iw,0],[0,ih]);drawTriangleSub(ctx,quadCanvas,p2,p3,p4,[iw,0],[iw,ih],[0,ih]);}\nif(quad.backgroundColor){ctx.fillStyle=quad.backgroundColor;ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.fill();}}\nfunction drawProjectedQuadOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.save();if(quad.borderColor){ctx.strokeStyle=quad.borderColor;}else{ctx.strokeStyle='rgb(128,128,128)';}\nif(quad.shadowOffset){ctx.shadowColor='rgb(0, 0, 0)';ctx.shadowOffsetX=quad.shadowOffset[0];ctx.shadowOffsetY=quad.shadowOffset[1];if(quad.shadowBlur){ctx.shadowBlur=quad.shadowBlur;}}\nif(quad.borderWidth){ctx.lineWidth=quad.borderWidth;}else{ctx.lineWidth=1;}\nctx.stroke();ctx.restore();}\nfunction drawProjectedQuadSelectionOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas){if(!quad.upperBorderColor)return;ctx.lineWidth=8;ctx.strokeStyle=quad.upperBorderColor;ctx.beginPath();ctx.moveTo(p1[0],p1[1]);ctx.lineTo(p2[0],p2[1]);ctx.lineTo(p3[0],p3[1]);ctx.lineTo(p4[0],p4[1]);ctx.closePath();ctx.stroke();}\nfunction drawProjectedQuadToContext(passNumber,quad,p1,p2,p3,p4,ctx,quadCanvas){if(passNumber===0){drawProjectedQuadBackgroundToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else if(passNumber===1){drawProjectedQuadOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else if(passNumber===2){drawProjectedQuadSelectionOutlineToContext(quad,p1,p2,p3,p4,ctx,quadCanvas);}else{throw new Error('Invalid pass number');}}\nconst tmpP1=vec3.create();const tmpP2=vec3.create();const tmpP3=vec3.create();const tmpP4=vec3.create();function transformAndProcessQuads(matrix,viewport,quads,numPasses,handleQuadFunc,opt_arg1,opt_arg2){for(let passNumber=0;passNumber<numPasses;passNumber++){for(let i=0;i<quads.length;i++){const quad=quads[i];transform(tmpP1,quad.p1,matrix,viewport);transform(tmpP2,quad.p2,matrix,viewport);transform(tmpP3,quad.p3,matrix,viewport);transform(tmpP4,quad.p4,matrix,viewport);handleQuadFunc(passNumber,quad,tmpP1,tmpP2,tmpP3,tmpP4,opt_arg1,opt_arg2);}}}\nconst QuadStackView=tr.ui.b.define('quad-stack-view');QuadStackView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.className='quad-stack-view';this.style.display='flex';this.style.position='relative';const node=tr.ui.b.instantiateTemplate('#quad-stack-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.updateHeaderVisibility_();const header=Polymer.dom(this).querySelector('#header');header.style.position='absolute';header.style.fontSize='70%';header.style.top='10px';header.style.left='10px';header.style.right='150px';const scroller=Polymer.dom(this).querySelector('#canvas-scroller');scroller.style.flexGrow=1;scroller.style.flexShrink=1;scroller.style.flexBasis='auto';scroller.style.minWidth=0;scroller.style.minHeight=0;scroller.style.overflow='auto';this.canvas_=Polymer.dom(this).querySelector('#canvas');this.chromeImages_={left:Polymer.dom(this).querySelector('#chrome-left'),mid:Polymer.dom(this).querySelector('#chrome-mid'),right:Polymer.dom(this).querySelector('#chrome-right')};const stackingDistanceSlider=Polymer.dom(this).querySelector('#stacking-distance-slider');stackingDistanceSlider.style.position='absolute';stackingDistanceSlider.style.fontSize='70%';stackingDistanceSlider.style.top='10px';stackingDistanceSlider.style.right='10px';stackingDistanceSlider.value=tr.b.Settings.get('quadStackView.stackingDistance',45);stackingDistanceSlider.addEventListener('change',this.onStackingDistanceChange_.bind(this));stackingDistanceSlider.addEventListener('input',this.onStackingDistanceChange_.bind(this));this.trackMouse_();this.camera_=new tr.ui.b.Camera(this.mouseModeSelector_);this.camera_.addEventListener('renderrequired',this.onRenderRequired_.bind(this));this.cameraWasReset_=false;this.camera_.canvas=this.canvas_;this.viewportRect_=tr.b.math.Rect.fromXYWH(0,0,0,0);this.pixelRatio_=window.devicePixelRatio||1;},updateHeaderVisibility_(){if(this.headerText){Polymer.dom(this).querySelector('#header').style.display='';}else{Polymer.dom(this).querySelector('#header').style.display='none';}},get headerText(){return Polymer.dom(this).querySelector('#header').textContent;},set headerText(headerText){Polymer.dom(this).querySelector('#header').textContent=headerText;this.updateHeaderVisibility_();},onStackingDistanceChange_(e){tr.b.Settings.set('quadStackView.stackingDistance',this.stackingDistance);this.scheduleRender();e.stopPropagation();},get stackingDistance(){return Polymer.dom(this).querySelector('#stacking-distance-slider').value;},get mouseModeSelector(){return this.mouseModeSelector_;},get camera(){return this.camera_;},set quads(q){this.quads_=q;this.scheduleRender();},set deviceRect(rect){if(!rect||rect.equalTo(this.deviceRect_))return;this.deviceRect_=rect;this.camera_.deviceRect=rect;this.chromeQuad_=undefined;},resize(){if(!this.offsetParent)return true;const width=parseInt(window.getComputedStyle(this.offsetParent).width);const height=parseInt(window.getComputedStyle(this.offsetParent).height);const rect=tr.b.math.Rect.fromXYWH(0,0,width,height);if(rect.equalTo(this.viewportRect_))return false;this.viewportRect_=rect;this.canvas_.style.width=width+'px';this.canvas_.style.height=height+'px';this.canvas_.width=this.pixelRatio_*width;this.canvas_.height=this.pixelRatio_*height;if(!this.cameraWasReset_){this.camera_.resetCamera();this.cameraWasReset_=true;}\nreturn true;},readyToDraw(){if(!this.chromeImages_.left.src){let leftContent=window.getComputedStyle(this.chromeImages_.left).backgroundImage;leftContent=tr.ui.b.extractUrlString(leftContent);let midContent=window.getComputedStyle(this.chromeImages_.mid).backgroundImage;midContent=tr.ui.b.extractUrlString(midContent);let rightContent=window.getComputedStyle(this.chromeImages_.right).backgroundImage;rightContent=tr.ui.b.extractUrlString(rightContent);this.chromeImages_.left.src=leftContent;this.chromeImages_.mid.src=midContent;this.chromeImages_.right.src=rightContent;}\nreturn(this.chromeImages_.left.height>0)&&(this.chromeImages_.mid.height>0)&&(this.chromeImages_.right.height>0);},get chromeQuad(){if(this.chromeQuad_)return this.chromeQuad_;const chromeCanvas=document.createElement('canvas');const offsetY=this.chromeImages_.left.height;chromeCanvas.width=this.deviceRect_.width;chromeCanvas.height=this.deviceRect_.height+offsetY;const leftWidth=this.chromeImages_.left.width;const midWidth=this.chromeImages_.mid.width;const rightWidth=this.chromeImages_.right.width;const chromeCtx=chromeCanvas.getContext('2d');chromeCtx.drawImage(this.chromeImages_.left,0,0);chromeCtx.save();chromeCtx.translate(leftWidth,0);const s=(this.deviceRect_.width-leftWidth-rightWidth)/midWidth;chromeCtx.scale(s,1);chromeCtx.drawImage(this.chromeImages_.mid,0,0);chromeCtx.restore();chromeCtx.drawImage(this.chromeImages_.right,leftWidth+s*midWidth,0);const chromeRect=tr.b.math.Rect.fromXYWH(this.deviceRect_.x,this.deviceRect_.y-offsetY,this.deviceRect_.width,this.deviceRect_.height+offsetY);const chromeQuad=tr.b.math.Quad.fromRect(chromeRect);chromeQuad.stackingGroupId=this.maxStackingGroupId_+1;chromeQuad.imageData=chromeCtx.getImageData(0,0,chromeCanvas.width,chromeCanvas.height);chromeQuad.shadowOffset=[0,0];chromeQuad.shadowBlur=5;chromeQuad.borderWidth=3;this.chromeQuad_=chromeQuad;return this.chromeQuad_;},scheduleRender(){if(this.redrawScheduled_)return false;this.redrawScheduled_=true;tr.b.requestAnimationFrame(this.render,this);},onRenderRequired_(e){this.scheduleRender();},stackTransformAndProcessQuads_(numPasses,handleQuadFunc,includeChromeQuad,opt_arg1,opt_arg2){const mv=this.camera_.modelViewMatrix;const p=this.camera_.projectionMatrix;const viewport=tr.b.math.Rect.fromXYWH(0,0,this.canvas_.width,this.canvas_.height);const quadStacks=[];for(let i=0;i<this.quads_.length;++i){const quad=this.quads_[i];const stackingId=quad.stackingGroupId||0;while(stackingId>=quadStacks.length){quadStacks.push([]);}\nquadStacks[stackingId].push(quad);}\nconst mvp=mat4.create();this.maxStackingGroupId_=quadStacks.length;const effectiveStackingDistance=this.stackingDistance*this.camera_.stackingDistanceDampening;mat4.multiply(mvp,p,mv);for(let i=0;i<quadStacks.length;++i){transformAndProcessQuads(mvp,viewport,quadStacks[i],numPasses,handleQuadFunc,opt_arg1,opt_arg2);mat4.translate(mv,mv,[0,0,effectiveStackingDistance]);mat4.multiply(mvp,p,mv);}\nif(includeChromeQuad&&this.deviceRect_){transformAndProcessQuads(mvp,viewport,[this.chromeQuad],numPasses,drawProjectedQuadToContext,opt_arg1,opt_arg2);}},render(){this.redrawScheduled_=false;if(!this.readyToDraw()){setTimeout(this.scheduleRender.bind(this),constants.IMAGE_LOAD_RETRY_TIME_MS);return;}\nif(!this.quads_)return;const canvasCtx=this.canvas_.getContext('2d');if(!this.resize()){canvasCtx.clearRect(0,0,this.canvas_.width,this.canvas_.height);}\nconst quadCanvas=document.createElement('canvas');this.stackTransformAndProcessQuads_(3,drawProjectedQuadToContext,true,canvasCtx,quadCanvas);quadCanvas.width=0;},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.canvas_;this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION|tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN|tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM|tr.ui.b.MOUSE_SELECTOR_MODE.ROTATE;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN;this.mouseModeSelector_.pos={x:0,y:100};Polymer.dom(this).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.settingsKey='quadStackView.mouseModeSelector';this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.ROTATE,tr.ui.b.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.PANSCAN,tr.ui.b.MODIFIER.SPACE);this.mouseModeSelector_.setModifierForAlternateMode(tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM,tr.ui.b.MODIFIER.CMD_OR_CTRL);this.mouseModeSelector_.addEventListener('updateselection',this.onSelectionUpdate_.bind(this));this.mouseModeSelector_.addEventListener('endselection',this.onSelectionUpdate_.bind(this));},extractRelativeMousePosition_(e){const br=this.canvas_.getBoundingClientRect();return[this.pixelRatio_*(e.clientX-this.canvas_.offsetLeft-br.left),this.pixelRatio_*(e.clientY-this.canvas_.offsetTop-br.top)];},onSelectionUpdate_(e){const mousePos=this.extractRelativeMousePosition_(e);const res=[];function handleQuad(passNumber,quad,p1,p2,p3,p4){if(tr.b.math.pointInImplicitQuad(mousePos,p1,p2,p3,p4)){res.push(quad);}}\nthis.stackTransformAndProcessQuads_(1,handleQuad,false);e=new tr.b.Event('selectionchange');e.quads=res;this.dispatchEvent(e);}};return{QuadStackView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const ColorScheme=tr.b.ColorScheme;const THIS_DOC=document.currentScript.ownerDocument;const TILE_HEATMAP_TYPE={};TILE_HEATMAP_TYPE.NONE='none';TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY='scheduledPriority';TILE_HEATMAP_TYPE.USING_GPU_MEMORY='usingGpuMemory';const cc=tr.ui.e.chrome.cc;function createTileRectsSelectorBaseOptions(){return[{label:'None',value:'none'},{label:'Coverage Rects',value:'coverage'}];}\nconst LayerTreeQuadStackView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-tree-quad-stack-view');LayerTreeQuadStackView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.flexDirection='column';this.style.minHeight=0;this.style.display='flex';this.isRenderPassQuads_=false;this.pictureAsImageData_={};this.messages_=[];this.controls_=document.createElement('top-controls');this.controls_.style.flexGrow=0;this.controls_.style.flexShrink=0;this.controls_.style.flexBasis='auto';this.controls_.style.backgroundImage='-webkit-gradient(linear, 0 0, 100% 0, from(#E5E5E5), to(#D1D1D1))';this.controls_.style.borderBottom='1px solid #8e8e8e';this.controls_.style.borderTop='1px solid white';this.controls_.style.display='flex';this.controls_.style.flexDirection='row';this.controls_.style.flexWrap='wrap';this.controls_.style.fontSize='14px';this.controls_.style.paddingLeft='2px';this.controls_.style.overflow='hidden';this.infoBar_=document.createElement('tr-ui-b-info-bar');this.quadStackView_=new tr.ui.b.QuadStackView();this.quadStackView_.addEventListener('selectionchange',this.onQuadStackViewSelectionChange_.bind(this));this.quadStackView_.style.flexGrow=1;this.quadStackView_.style.flexShrink=1;this.quadStackView_.style.flexBasis='auto';this.quadStackView_.style.minWidth='200px';this.extraHighlightsByLayerId_=undefined;this.inputEventImageData_=undefined;const m=tr.ui.b.MOUSE_SELECTOR_MODE;const mms=this.quadStackView_.mouseModeSelector;mms.settingsKey='tr.e.cc.layerTreeQuadStackView.mouseModeSelector';mms.setKeyCodeForMode(m.SELECTION,'Z'.charCodeAt(0));mms.setKeyCodeForMode(m.PANSCAN,'X'.charCodeAt(0));mms.setKeyCodeForMode(m.ZOOM,'C'.charCodeAt(0));mms.setKeyCodeForMode(m.ROTATE,'V'.charCodeAt(0));const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);Polymer.dom(this).appendChild(this.controls_);Polymer.dom(this).appendChild(this.infoBar_);Polymer.dom(this).appendChild(this.quadStackView_);this.tileRectsSelector_=tr.ui.b.createSelector(this,'howToShowTiles','layerView.howToShowTiles','none',createTileRectsSelectorBaseOptions());Polymer.dom(this.controls_).appendChild(this.tileRectsSelector_);const tileHeatmapText=tr.ui.b.createSpan({textContent:'Tile heatmap:'});Polymer.dom(this.controls_).appendChild(tileHeatmapText);const tileHeatmapSelector=tr.ui.b.createSelector(this,'tileHeatmapType','layerView.tileHeatmapType',TILE_HEATMAP_TYPE.NONE,[{label:'None',value:TILE_HEATMAP_TYPE.NONE},{label:'Scheduled Priority',value:TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY},{label:'Is using GPU memory',value:TILE_HEATMAP_TYPE.USING_GPU_MEMORY}]);Polymer.dom(this.controls_).appendChild(tileHeatmapSelector);const showOtherLayersCheckbox=tr.ui.b.createCheckBox(this,'showOtherLayers','layerView.showOtherLayers',true,'Other layers/passes');showOtherLayersCheckbox.title='When checked, show all layers, selected or not.';Polymer.dom(this.controls_).appendChild(showOtherLayersCheckbox);const showInvalidationsCheckbox=tr.ui.b.createCheckBox(this,'showInvalidations','layerView.showInvalidations',true,'Invalidations');showInvalidationsCheckbox.title='When checked, compositing invalidations are highlighted in red';Polymer.dom(this.controls_).appendChild(showInvalidationsCheckbox);const showUnrecordedRegionCheckbox=tr.ui.b.createCheckBox(this,'showUnrecordedRegion','layerView.showUnrecordedRegion',true,'Unrecorded area');showUnrecordedRegionCheckbox.title='When checked, unrecorded areas are highlighted in yellow';Polymer.dom(this.controls_).appendChild(showUnrecordedRegionCheckbox);const showBottlenecksCheckbox=tr.ui.b.createCheckBox(this,'showBottlenecks','layerView.showBottlenecks',true,'Bottlenecks');showBottlenecksCheckbox.title='When checked, scroll bottlenecks are highlighted';Polymer.dom(this.controls_).appendChild(showBottlenecksCheckbox);const showLayoutRectsCheckbox=tr.ui.b.createCheckBox(this,'showLayoutRects','layerView.showLayoutRects',false,'Layout rects');showLayoutRectsCheckbox.title='When checked, shows rects for regions where layout happened';Polymer.dom(this.controls_).appendChild(showLayoutRectsCheckbox);const showContentsCheckbox=tr.ui.b.createCheckBox(this,'showContents','layerView.showContents',true,'Contents');showContentsCheckbox.title='When checked, show the rendered contents inside the layer outlines';Polymer.dom(this.controls_).appendChild(showContentsCheckbox);const showAnimationBoundsCheckbox=tr.ui.b.createCheckBox(this,'showAnimationBounds','layerView.showAnimationBounds',false,'Animation Bounds');showAnimationBoundsCheckbox.title='When checked, show a border around'+' a layer showing the extent of its animation.';Polymer.dom(this.controls_).appendChild(showAnimationBoundsCheckbox);const showInputEventsCheckbox=tr.ui.b.createCheckBox(this,'showInputEvents','layerView.showInputEvents',true,'Input events');showInputEventsCheckbox.title='When checked, input events are '+'displayed as circles.';Polymer.dom(this.controls_).appendChild(showInputEventsCheckbox);this.whatRasterizedLink_=document.createElement('tr-ui-a-analysis-link');this.whatRasterizedLink_.style.position='absolute';this.whatRasterizedLink_.style.bottom='15px';this.whatRasterizedLink_.style.left='10px';this.whatRasterizedLink_.selection=this.getWhatRasterizedEventSet_.bind(this);Polymer.dom(this.quadStackView_).appendChild(this.whatRasterizedLink_);},get layerTreeImpl(){return this.layerTreeImpl_;},set isRenderPassQuads(newValue){this.isRenderPassQuads_=newValue;},set layerTreeImpl(layerTreeImpl){if(this.layerTreeImpl_===layerTreeImpl)return;this.layerTreeImpl_=layerTreeImpl;this.selection=undefined;},get extraHighlightsByLayerId(){return this.extraHighlightsByLayerId_;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.extraHighlightsByLayerId_=extraHighlightsByLayerId;this.scheduleUpdateContents_();},get showOtherLayers(){return this.showOtherLayers_;},set showOtherLayers(show){this.showOtherLayers_=show;this.updateContents_();},get showAnimationBounds(){return this.showAnimationBounds_;},set showAnimationBounds(show){this.showAnimationBounds_=show;this.updateContents_();},get showInputEvents(){return this.showInputEvents_;},set showInputEvents(show){this.showInputEvents_=show;this.updateContents_();},get showContents(){return this.showContents_;},set showContents(show){this.showContents_=show;this.updateContents_();},get showInvalidations(){return this.showInvalidations_;},set showInvalidations(show){this.showInvalidations_=show;this.updateContents_();},get showUnrecordedRegion(){return this.showUnrecordedRegion_;},set showUnrecordedRegion(show){this.showUnrecordedRegion_=show;this.updateContents_();},get showBottlenecks(){return this.showBottlenecks_;},set showBottlenecks(show){this.showBottlenecks_=show;this.updateContents_();},get showLayoutRects(){return this.showLayoutRects_;},set showLayoutRects(show){this.showLayoutRects_=show;this.updateContents_();},get howToShowTiles(){return this.howToShowTiles_;},set howToShowTiles(val){if(val!=='none'&&val!=='coverage'&&isNaN(parseFloat(val))){throw new Error('howToShowTiles requires \"none\" or \"coverage\" or a number');}\nthis.howToShowTiles_=val;this.updateContents_();},get tileHeatmapType(){return this.tileHeatmapType_;},set tileHeatmapType(val){this.tileHeatmapType_=val;this.updateContents_();},get selection(){return this.selection_;},set selection(selection){if(this.selection===selection)return;this.selection_=selection;tr.b.dispatchSimpleEvent(this,'selection-change');this.updateContents_();},regenerateContent(){this.updateTilesSelector_();this.updateContents_();},loadDataForImageElement_(image,callback){const imageContent=window.getComputedStyle(image).backgroundImage;if(!imageContent){this.scheduleUpdateContents_();return;}\nimage.src=tr.ui.b.extractUrlString(imageContent);image.onload=function(){const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=image.width;canvas.height=image.height;ctx.drawImage(image,0,0);const imageData=ctx.getImageData(0,0,canvas.width,canvas.height);callback(imageData);};},onQuadStackViewSelectionChange_(e){const selectableQuads=e.quads.filter(function(q){return q.selectionToSetIfClicked!==undefined;});if(selectableQuads.length===0){this.selection=undefined;return;}\nselectableQuads.sort(function(x,y){const z=x.stackingGroupId-y.stackingGroupId;if(z!==0)return z;return x.selectionToSetIfClicked.specicifity-\ny.selectionToSetIfClicked.specicifity;});const quadToSelect=selectableQuads[selectableQuads.length-1];this.selection=quadToSelect.selectionToSetIfClicked;},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_,this);},updateContents_(){if(!this.layerTreeImpl_){this.quadStackView_.headerText='No tree';this.quadStackView_.quads=[];return;}\nconst status=this.computePictureLoadingStatus_();if(!status.picturesComplete)return;const lthi=this.layerTreeImpl_.layerTreeHostImpl;const lthiInstance=lthi.objectInstance;const worldViewportRect=tr.b.math.Rect.fromXYWH(0,0,lthi.deviceViewportSize.width,lthi.deviceViewportSize.height);this.quadStackView_.deviceRect=worldViewportRect;if(this.isRenderPassQuads_){this.quadStackView_.quads=this.generateRenderPassQuads();}else{this.quadStackView_.quads=this.generateLayerQuads();}\nthis.updateWhatRasterizedLinkState_();let message='';if(lthi.tilesHaveGpuMemoryUsageInfo){const thisTreeUsageInBytes=this.layerTreeImpl_.gpuMemoryUsageInBytes;const otherTreeUsageInBytes=lthi.gpuMemoryUsageInBytes-\nthisTreeUsageInBytes;message+=tr.b.convertUnit(thisTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on this tree';if(otherTreeUsageInBytes){message+=', '+\ntr.b.convertUnit(otherTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on the other tree';}}else{if(this.layerTreeImpl_){const thisTreeUsageInBytes=this.layerTreeImpl_.gpuMemoryUsageInBytes;message+=tr.b.convertUnit(thisTreeUsageInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB on this tree';if(this.layerTreeImpl_.otherTree){message+=', ??? MiB on other tree. ';}}}\nif(lthi.args.tileManagerBasicState){const tmgs=lthi.args.tileManagerBasicState.globalState;message+=' (softMax='+\ntr.b.convertUnit(tmgs.softMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, hardMax='+\ntr.b.convertUnit(tmgs.hardMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, '+\ntmgs.memoryLimitPolicy+')';}else{const thread=lthi.snapshottedOnThread;const didManageTilesSlices=thread.sliceGroup.slices.filter(s=>{if(s.category!=='tr.e.cc')return false;if(s.title!=='DidManage')return false;if(s.end>lthi.ts)return false;return true;});didManageTilesSlices.sort(function(x,y){return x.end-y.end;});if(didManageTilesSlices.length>0){const newest=didManageTilesSlices[didManageTilesSlices.length-1];const tmgs=newest.args.state.global_state;message+=' (softMax='+\ntr.b.convertUnit(tmgs.softMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, hardMax='+\ntr.b.convertUnit(tmgs.hardMemoryLimitInBytes,tr.b.UnitPrefixScale.BINARY.NONE,tr.b.UnitPrefixScale.BINARY.MEBI).toFixed(1)+' MiB, '+\ntmgs.memoryLimitPolicy+')';}}\nif(this.layerTreeImpl_.otherTree){message+=' (Another tree exists)';}\nif(message.length){this.quadStackView_.headerText=message;}else{this.quadStackView_.headerText=undefined;}\nthis.updateInfoBar_(status.messages);},updateTilesSelector_(){const data=createTileRectsSelectorBaseOptions();if(this.layerTreeImpl_){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const scaleNames=lthi.getContentsScaleNames();for(const scale in scaleNames){data.push({label:'Scale '+scale+' ('+scaleNames[scale]+')',value:scale});}}\nconst newSelector=tr.ui.b.createSelector(this,'howToShowTiles','layerView.howToShowTiles','none',data);this.controls_.replaceChild(newSelector,this.tileRectsSelector_);this.tileRectsSelector_=newSelector;},computePictureLoadingStatus_(){const layers=this.layers;const status={messages:[],picturesComplete:true};if(this.showContents){let hasPendingRasterizeImage=false;let firstPictureError=undefined;let hasMissingLayerRect=false;let hasUnresolvedPictureRef=false;for(let i=0;i<layers.length;i++){const layer=layers[i];for(let ir=0;ir<layer.pictures.length;++ir){const picture=layer.pictures[ir];if(picture.idRef){hasUnresolvedPictureRef=true;continue;}\nif(!picture.layerRect){hasMissingLayerRect=true;continue;}\nconst pictureAsImageData=this.pictureAsImageData_[picture.guid];if(!pictureAsImageData){hasPendingRasterizeImage=true;this.pictureAsImageData_[picture.guid]=tr.e.cc.PictureAsImageData.Pending(this);picture.rasterize({stopIndex:undefined},function(pictureImageData){const picture_=pictureImageData.picture;this.pictureAsImageData_[picture_.guid]=pictureImageData;this.scheduleUpdateContents_();}.bind(this));continue;}\nif(pictureAsImageData.isPending()){hasPendingRasterizeImage=true;continue;}\nif(pictureAsImageData.error){if(!firstPictureError){firstPictureError=pictureAsImageData.error;}\nbreak;}}}\nif(hasPendingRasterizeImage){status.picturesComplete=false;}else{if(hasUnresolvedPictureRef){status.messages.push({header:'Missing picture',details:'Your trace didn\\'t have pictures for every layer. '+'Old chrome versions had this problem'});}\nif(hasMissingLayerRect){status.messages.push({header:'Missing layer rect',details:'Your trace may be corrupt or from a very old '+'Chrome revision.'});}\nif(firstPictureError){status.messages.push({header:'Cannot rasterize',details:firstPictureError});}}}\nif(this.showInputEvents&&this.layerTreeImpl.tracedInputLatencies&&this.inputEventImageData_===undefined){const image=Polymer.dom(this).querySelector('#input-event');if(!image.src){this.loadDataForImageElement_(image,function(imageData){this.inputEventImageData_=imageData;this.updateContentsPending_=false;this.scheduleUpdateContents_();}.bind(this));}\nstatus.picturesComplete=false;}\nreturn status;},get selectedRenderPass(){if(this.selection){return this.selection.renderPass_;}},get selectedLayer(){if(this.selection){const selectedLayerId=this.selection.associatedLayerId;return this.layerTreeImpl_.findLayerWithId(selectedLayerId);}},get renderPasses(){let renderPasses=this.layerTreeImpl.layerTreeHostImpl.args.frame.renderPasses;if(!this.showOtherLayers){const selectedRenderPass=this.selectedRenderPass;if(selectedRenderPass){renderPasses=[selectedRenderPass];}}\nreturn renderPasses;},get layers(){let layers=this.layerTreeImpl.renderSurfaceLayerList;if(!this.showOtherLayers){const selectedLayer=this.selectedLayer;if(selectedLayer){layers=[selectedLayer];}}\nreturn layers;},appendImageQuads_(quads,layer,layerQuad){for(let ir=0;ir<layer.pictures.length;++ir){const picture=layer.pictures[ir];if(!picture.layerRect)continue;const unitRect=picture.layerRect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);const pictureData=this.pictureAsImageData_[picture.guid];if(this.showContents&&pictureData&&pictureData.imageData){iq.imageData=pictureData.imageData;iq.borderColor='rgba(0,0,0,0)';}else{iq.imageData=undefined;}\niq.stackingGroupId=layerQuad.stackingGroupId;quads.push(iq);}},appendAnimationQuads_(quads,layer,layerQuad){if(!layer.animationBoundsRect)return;const rect=layer.animationBoundsRect;const abq=tr.b.math.Quad.fromRect(rect);abq.backgroundColor='rgba(164,191,48,0.5)';abq.borderColor='rgba(205,255,0,0.75)';abq.borderWidth=3.0;abq.stackingGroupId=layerQuad.stackingGroupId;abq.selectionToSetIfClicked=new cc.AnimationRectSelection(layer,rect);quads.push(abq);},appendInvalidationQuads_(quads,layer,layerQuad){if(layer.layerTreeImpl.hasSourceFrameBeenDrawnBefore)return;for(const rect of layer.invalidation.rects){const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor='rgba(0, 255, 0, 0.1)';if(rect.reason==='appeared'){iq.backgroundColor='rgba(0, 255, 128, 0.1)';}\niq.borderColor='rgba(0, 255, 0, 1)';iq.stackingGroupId=layerQuad.stackingGroupId;let message='Invalidation rect';if(rect.reason){message+=' ('+rect.reason+')';}\nif(rect.client){message+=' for '+rect.client;}\niq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,message,rect,rect);quads.push(iq);}},appendUnrecordedRegionQuads_(quads,layer,layerQuad){for(let ir=0;ir<layer.unrecordedRegion.rects.length;ir++){const rect=layer.unrecordedRegion.rects[ir];const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor='rgba(240, 230, 140, 0.3)';iq.borderColor='rgba(240, 230, 140, 1)';iq.stackingGroupId=layerQuad.stackingGroupId;iq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,'Unrecorded area',rect,rect);quads.push(iq);}},appendBottleneckQuads_(quads,layer,layerQuad,stackingGroupId){function processRegion(region,label,borderColor){const backgroundColor=borderColor.clone();backgroundColor.a=0.4*(borderColor.a||1.0);if(!region||!region.rects)return;for(let ir=0;ir<region.rects.length;ir++){const rect=region.rects[ir];const unitRect=rect.asUVRectInside(layer.bounds);const iq=layerQuad.projectUnitRect(unitRect);iq.backgroundColor=backgroundColor.toString();iq.borderColor=borderColor.toString();iq.borderWidth=4.0;iq.stackingGroupId=stackingGroupId;iq.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect,rect);quads.push(iq);}}\nprocessRegion(layer.touchEventHandlerRegion,'Touch listener',tr.b.Color.fromString('rgb(228, 226, 27)'));processRegion(layer.wheelEventHandlerRegion,'Wheel listener',tr.b.Color.fromString('rgb(176, 205, 29)'));processRegion(layer.nonFastScrollableRegion,'Repaints on scroll',tr.b.Color.fromString('rgb(213, 134, 32)'));},appendTileCoverageRectQuads_(quads,layer,layerQuad,heatmapType){if(!layer.tileCoverageRects)return;const tiles=[];for(let ct=0;ct<layer.tileCoverageRects.length;++ct){const tile=layer.tileCoverageRects[ct].tile;if(tile!==undefined)tiles.push(tile);}\nconst lthi=this.layerTreeImpl_.layerTreeHostImpl;const minMax=this.getMinMaxForHeatmap_(lthi.activeTiles,heatmapType);const heatmapResult=this.computeHeatmapColors_(tiles,minMax,heatmapType);let heatIndex=0;for(let ct=0;ct<layer.tileCoverageRects.length;++ct){let rect=layer.tileCoverageRects[ct].geometryRect;rect=rect.scale(1.0/layer.geometryContentsScale);const tile=layer.tileCoverageRects[ct].tile;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;let type=tr.e.cc.tileTypes.missing;if(tile){type=tile.getTypeForLayer(layer);quad.backgroundColor=heatmapResult[heatIndex].color;++heatIndex;}\nquad.borderColor=tr.e.cc.tileBorder[type].color;quad.borderWidth=tr.e.cc.tileBorder[type].width;let label;if(tile){label='coverageRect';}else{label='checkerboard coverageRect';}\nquad.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect,layer.tileCoverageRects[ct]);quads.push(quad);}},appendLayoutRectQuads_(quads,layer,layerQuad){if(!layer.layoutRects){return;}\nfor(let ct=0;ct<layer.layoutRects.length;++ct){let rect=layer.layoutRects[ct].geometryRect;rect=rect.scale(1.0/layer.geometryContentsScale);const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;quad.borderColor='rgba(0, 0, 200, 0.7)';quad.borderWidth=2;const label='Layout rect';quad.selectionToSetIfClicked=new cc.LayerRectSelection(layer,label,rect);quads.push(quad);}},getValueForHeatmap_(tile,heatmapType){if(heatmapType===TILE_HEATMAP_TYPE.SCHEDULED_PRIORITY){return tile.scheduledPriority===0?undefined:tile.scheduledPriority;}else if(heatmapType===TILE_HEATMAP_TYPE.USING_GPU_MEMORY){if(tile.isSolidColor)return 0.5;return tile.isUsingGpuMemory?0:1;}},getMinMaxForHeatmap_(tiles,heatmapType){const range=new tr.b.math.Range();if(heatmapType===TILE_HEATMAP_TYPE.USING_GPU_MEMORY){range.addValue(0);range.addValue(1);return range;}\nfor(let i=0;i<tiles.length;++i){const value=this.getValueForHeatmap_(tiles[i],heatmapType);if(value===undefined)continue;range.addValue(value);}\nif(range.range===0){range.addValue(1);}\nreturn range;},computeHeatmapColors_(tiles,minMax,heatmapType){const min=minMax.min;const max=minMax.max;const color=function(value){let hue=120*(1-(value-min)/(max-min));if(hue<0)hue=0;return'hsla('+hue+', 100%, 50%, 0.5)';};const values=[];for(let i=0;i<tiles.length;++i){const tile=tiles[i];const value=this.getValueForHeatmap_(tile,heatmapType);const res={value,color:value!==undefined?color(value):undefined};values.push(res);}\nreturn values;},appendTilesWithScaleQuads_(quads,layer,layerQuad,scale,heatmapType){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const tiles=[];for(let i=0;i<lthi.activeTiles.length;++i){const tile=lthi.activeTiles[i];if(Math.abs(tile.contentsScale-scale)>1e-6){continue;}\nif(layer.layerId!==tile.layerId)continue;tiles.push(tile);}\nconst minMax=this.getMinMaxForHeatmap_(lthi.activeTiles,heatmapType);const heatmapResult=this.computeHeatmapColors_(tiles,minMax,heatmapType);for(let i=0;i<tiles.length;++i){const tile=tiles[i];const rect=tile.layerRect;if(!tile.layerRect)continue;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);quad.backgroundColor='rgba(0, 0, 0, 0)';quad.stackingGroupId=layerQuad.stackingGroupId;const type=tile.getTypeForLayer(layer);quad.borderColor=tr.e.cc.tileBorder[type].color;quad.borderWidth=tr.e.cc.tileBorder[type].width;quad.backgroundColor=heatmapResult[i].color;const data={tileType:type};if(heatmapType!==TILE_HEATMAP_TYPE.NONE){data[heatmapType]=heatmapResult[i].value;}\nquad.selectionToSetIfClicked=new cc.TileSelection(tile,data);quads.push(quad);}},appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights){highlights.forEach(function(highlight){const rect=highlight.rect;const unitRect=rect.asUVRectInside(layer.bounds);const quad=layerQuad.projectUnitRect(unitRect);let colorId=ColorScheme.getColorIdForGeneralPurposeString(highlight.colorKey);const offset=ColorScheme.properties.brightenedOffsets[0];colorId=ColorScheme.getVariantColorId(colorId,offset);const color=ColorScheme.colors[colorId];const quadForDrawing=quad.clone();quadForDrawing.backgroundColor=color.withAlpha(0.5).toString();quadForDrawing.borderColor=color.withAlpha(1.0).darken().toString();quadForDrawing.stackingGroupId=layerQuad.stackingGroupId;quads.push(quadForDrawing);},this);},generateRenderPassQuads(){if(!this.layerTreeImpl.layerTreeHostImpl.args.frame)return[];const renderPasses=this.renderPasses;if(!renderPasses)return[];const quads=[];for(let i=0;i<renderPasses.length;++i){const quadList=renderPasses[i].quadList;for(let j=0;j<quadList.length;++j){const drawQuad=quadList[j];const quad=drawQuad.rectAsTargetSpaceQuad.clone();quad.borderColor='rgb(170, 204, 238)';quad.borderWidth=2;quad.stackingGroupId=i;quads.push(quad);}}\nreturn quads;},generateLayerQuads(){this.updateContentsPending_=false;const layers=this.layers;const quads=[];let nextStackingGroupId=0;const alreadyVisitedLayerIds={};let selectionHighlightsByLayerId;if(this.selection){selectionHighlightsByLayerId=this.selection.highlightsByLayerId;}else{selectionHighlightsByLayerId={};}\nconst extraHighlightsByLayerId=this.extraHighlightsByLayerId||{};for(let i=1;i<=layers.length;i++){const layer=layers[layers.length-i];alreadyVisitedLayerIds[layer.layerId]=true;if(layer.objectInstance.name==='cc::NinePatchLayerImpl'){continue;}\nconst layerQuad=layer.layerQuad.clone();if(layer.usingGpuRasterization){const pixelRatio=window.devicePixelRatio||1;layerQuad.borderWidth=2.0*pixelRatio;layerQuad.borderColor='rgba(154,205,50,0.75)';}else{layerQuad.borderColor='rgba(0,0,0,0.75)';}\nlayerQuad.stackingGroupId=nextStackingGroupId++;layerQuad.selectionToSetIfClicked=new cc.LayerSelection(layer);layerQuad.layer=layer;if(this.showOtherLayers&&this.selectedLayer===layer){layerQuad.upperBorderColor='rgb(156,189,45)';}\nif(this.showAnimationBounds){this.appendAnimationQuads_(quads,layer,layerQuad);}\nthis.appendImageQuads_(quads,layer,layerQuad);quads.push(layerQuad);if(this.showInvalidations){this.appendInvalidationQuads_(quads,layer,layerQuad);}\nif(this.showUnrecordedRegion){this.appendUnrecordedRegionQuads_(quads,layer,layerQuad);}\nif(this.showBottlenecks){this.appendBottleneckQuads_(quads,layer,layerQuad,layerQuad.stackingGroupId);}\nif(this.showLayoutRects){this.appendLayoutRectQuads_(quads,layer,layerQuad);}\nif(this.howToShowTiles==='coverage'){this.appendTileCoverageRectQuads_(quads,layer,layerQuad,this.tileHeatmapType);}else if(this.howToShowTiles!=='none'){this.appendTilesWithScaleQuads_(quads,layer,layerQuad,this.howToShowTiles,this.tileHeatmapType);}\nlet highlights;highlights=extraHighlightsByLayerId[layer.layerId];if(highlights){this.appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights);}\nhighlights=selectionHighlightsByLayerId[layer.layerId];if(highlights){this.appendHighlightQuadsForLayer_(quads,layer,layerQuad,highlights);}}\nthis.layerTreeImpl.iterLayers(function(layer,depth,isMask,isReplica){if(!this.showOtherLayers&&this.selectedLayer!==layer)return;if(alreadyVisitedLayerIds[layer.layerId])return;const layerQuad=layer.layerQuad;const stackingGroupId=nextStackingGroupId++;if(this.showBottlenecks){this.appendBottleneckQuads_(quads,layer,layerQuad,stackingGroupId);}},this);const tracedInputLatencies=this.layerTreeImpl.tracedInputLatencies;if(this.showInputEvents&&tracedInputLatencies){for(let i=0;i<tracedInputLatencies.length;i++){const coordinatesArray=tracedInputLatencies[i].args.data.coordinates;for(let j=0;j<coordinatesArray.length;j++){const inputQuad=tr.b.math.Quad.fromXYWH(coordinatesArray[j].x-25,coordinatesArray[j].y-25,50,50);inputQuad.borderColor='rgba(0, 0, 0, 0)';inputQuad.imageData=this.inputEventImageData_;quads.push(inputQuad);}}}\nreturn quads;},updateInfoBar_(infoBarMessages){if(infoBarMessages.length){this.infoBar_.removeAllButtons();this.infoBar_.message='Some problems were encountered...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent='';infoBarMessages.forEach(function(message){const title=document.createElement('h3');Polymer.dom(title).textContent=message.header;const details=document.createElement('div');Polymer.dom(details).textContent=message.details;Polymer.dom(overlay).appendChild(title);Polymer.dom(overlay).appendChild(details);});overlay.visible=true;e.stopPropagation();return false;});this.infoBar_.visible=true;}else{this.infoBar_.removeAllButtons();this.infoBar_.message='';this.infoBar_.visible=false;}},getWhatRasterized_(){const lthi=this.layerTreeImpl_.layerTreeHostImpl;const renderProcess=lthi.objectInstance.parent;const tasks=[];for(const event of renderProcess.getDescendantEvents()){if(!(event instanceof tr.model.Slice))continue;const tile=tr.e.cc.getTileFromRasterTaskSlice(event);if(tile===undefined)continue;if(tile.containingSnapshot===lthi){tasks.push(event);}}\nreturn tasks;},updateWhatRasterizedLinkState_(){const tasks=this.getWhatRasterized_();if(tasks.length){Polymer.dom(this.whatRasterizedLink_).textContent=tasks.length+' raster tasks';this.whatRasterizedLink_.style.display='';}else{Polymer.dom(this.whatRasterizedLink_).textContent='';this.whatRasterizedLink_.style.display='none';}},getWhatRasterizedEventSet_(){return new tr.model.EventSet(this.getWhatRasterized_());}};return{LayerTreeQuadStackView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const constants=tr.e.cc.constants;const LayerView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-view');LayerView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexDirection='column';this.style.display='flex';this.layerTreeQuadStackView_=new tr.ui.e.chrome.cc.LayerTreeQuadStackView();this.dragBar_=document.createElement('tr-ui-b-drag-handle');this.analysisEl_=document.createElement('tr-ui-e-chrome-cc-layer-view-analysis');this.analysisEl_.style.flexGrow=0;this.analysisEl_.style.flexShrink=0;this.analysisEl_.style.flexBasis='auto';this.analysisEl_.style.height='150px';this.analysisEl_.style.overflow='auto';this.analysisEl_.addEventListener('requestSelectionChange',this.onRequestSelectionChangeFromAnalysisEl_.bind(this));this.dragBar_.target=this.analysisEl_;Polymer.dom(this).appendChild(this.layerTreeQuadStackView_);Polymer.dom(this).appendChild(this.dragBar_);Polymer.dom(this).appendChild(this.analysisEl_);this.layerTreeQuadStackView_.addEventListener('selection-change',function(){this.layerTreeQuadStackViewSelectionChanged_();}.bind(this));this.layerTreeQuadStackViewSelectionChanged_();},get layerTreeImpl(){return this.layerTreeQuadStackView_.layerTreeImpl;},set layerTreeImpl(newValue){return this.layerTreeQuadStackView_.layerTreeImpl=newValue;},set isRenderPassQuads(newValue){return this.layerTreeQuadStackView_.isRenderPassQuads=newValue;},get selection(){return this.layerTreeQuadStackView_.selection;},set selection(newValue){this.layerTreeQuadStackView_.selection=newValue;},regenerateContent(){this.layerTreeQuadStackView_.regenerateContent();},layerTreeQuadStackViewSelectionChanged_(){const selection=this.layerTreeQuadStackView_.selection;if(selection){this.dragBar_.style.display='';this.analysisEl_.style.display='';Polymer.dom(this.analysisEl_).textContent='';const layer=selection.layer;if(tr.e.cc.PictureSnapshot.CanDebugPicture()&&layer&&layer.args&&layer.args.pictures&&layer.args.pictures.length){Polymer.dom(this.analysisEl_).appendChild(this.createPictureBtn_(layer.args.pictures));}\nconst analysis=selection.createAnalysis();Polymer.dom(this.analysisEl_).appendChild(analysis);for(const child of this.analysisEl_.children){child.style.userSelect='text';}}else{this.dragBar_.style.display='none';this.analysisEl_.style.display='none';const analysis=Polymer.dom(this.analysisEl_).firstChild;if(analysis){Polymer.dom(this.analysisEl_).removeChild(analysis);}\nthis.layerTreeQuadStackView_.style.height=window.getComputedStyle(this).height;}\ntr.b.dispatchSimpleEvent(this,'selection-change');},createPictureBtn_(pictures){if(!(pictures instanceof Array)){pictures=[pictures];}\nconst link=document.createElement('tr-ui-a-analysis-link');link.selection=function(){const layeredPicture=new tr.e.cc.LayeredPicture(pictures);const snapshot=new tr.e.cc.PictureSnapshot(layeredPicture);snapshot.picture=layeredPicture;const selection=new tr.model.EventSet();selection.push(snapshot);return selection;};Polymer.dom(link).textContent='View in Picture Debugger';return link;},onRequestSelectionChangeFromAnalysisEl_(e){if(!(e.selection instanceof tr.ui.e.chrome.cc.Selection)){return;}\ne.stopPropagation();this.selection=e.selection;},get extraHighlightsByLayerId(){return this.layerTreeQuadStackView_.extraHighlightsByLayerId;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.layerTreeQuadStackView_.extraHighlightsByLayerId=extraHighlightsByLayerId;}};return{LayerView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const LayerTreeHostImplSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-layer-tree-host-impl-snapshot-view',tr.ui.analysis.ObjectSnapshotView);LayerTreeHostImplSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-lthi-s-view');this.style.display='flex';this.style.flexDirection='row';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.selection_=undefined;this.layerPicker_=new tr.ui.e.chrome.cc.LayerPicker();this.layerPicker_.style.flexGrow=0;this.layerPicker_.style.flexShrink=0;this.layerPicker_.style.flexBasis='auto';this.layerPicker_.style.minWidth='200px';this.layerPicker_.addEventListener('selection-change',this.onLayerPickerSelectionChanged_.bind(this));this.layerView_=new tr.ui.e.chrome.cc.LayerView();this.layerView_.addEventListener('selection-change',this.onLayerViewSelectionChanged_.bind(this));this.layerView_.style.flexGrow=1;this.layerView_.style.flexShrink=1;this.layerView_.style.flexBasis='auto';this.layerView_.style.minWidth=0;this.dragHandle_=document.createElement('tr-ui-b-drag-handle');this.dragHandle_.style.flexGrow=0;this.dragHandle_.style.flexShrink=0;this.dragHandle_.style.flexBasis='auto';this.dragHandle_.horizontal=false;this.dragHandle_.target=this.layerPicker_;Polymer.dom(this).appendChild(this.layerPicker_);Polymer.dom(this).appendChild(this.dragHandle_);Polymer.dom(this).appendChild(this.layerView_);this.onLayerViewSelectionChanged_();this.onLayerPickerSelectionChanged_();},get objectSnapshot(){return this.objectSnapshot_;},set objectSnapshot(objectSnapshot){this.objectSnapshot_=objectSnapshot;const lthi=this.objectSnapshot;let layerTreeImpl;if(lthi){layerTreeImpl=lthi.getTree(this.layerPicker_.whichTree);}\nthis.layerPicker_.lthiSnapshot=lthi;this.layerView_.layerTreeImpl=layerTreeImpl;this.layerView_.regenerateContent();if(!this.selection_)return;this.selection=this.selection_.findEquivalent(lthi);},get selection(){return this.selection_;},set selection(selection){if(this.selection_===selection)return;this.selection_=selection;this.layerPicker_.selection=selection;this.layerView_.selection=selection;tr.b.dispatchSimpleEvent(this,'cc-selection-change');},onLayerPickerSelectionChanged_(){this.selection_=this.layerPicker_.selection;this.layerView_.selection=this.selection;this.layerView_.layerTreeImpl=this.layerPicker_.layerTreeImpl;this.layerView_.isRenderPassQuads=this.layerPicker_.isRenderPassQuads;this.layerView_.regenerateContent();tr.b.dispatchSimpleEvent(this,'cc-selection-change');},onLayerViewSelectionChanged_(){this.selection_=this.layerView_.selection;this.layerPicker_.selection=this.selection;tr.b.dispatchSimpleEvent(this,'cc-selection-change');},get extraHighlightsByLayerId(){return this.layerView_.extraHighlightsByLayerId;},set extraHighlightsByLayerId(extraHighlightsByLayerId){this.layerView_.extraHighlightsByLayerId=extraHighlightsByLayerId;}};tr.ui.analysis.ObjectSnapshotView.register(LayerTreeHostImplSnapshotView,{typeName:'cc::LayerTreeHostImpl'});return{LayerTreeHostImplSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const OPS_TIMING_ITERATIONS=3;const CHART_PADDING_LEFT=65;const CHART_PADDING_RIGHT=40;const AXIS_PADDING_LEFT=60;const AXIS_PADDING_RIGHT=35;const AXIS_PADDING_TOP=25;const AXIS_PADDING_BOTTOM=45;const AXIS_LABEL_PADDING=5;const AXIS_TICK_SIZE=10;const LABEL_PADDING=5;const LABEL_INTERLEAVE_OFFSET=15;const BAR_PADDING=5;const VERTICAL_TICKS=5;const HUE_CHAR_CODE_ADJUSTMENT=5.7;const PictureOpsChartSummaryView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-chart-summary-view');PictureOpsChartSummaryView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.flexGrow=0;this.style.flexShrink=0;this.style.flexBasis='auto';this.style.fontSize=0;this.style.margin=0;this.style.minHeight='200px';this.style.minWidth='200px';this.style.overflow='hidden';this.style.padding=0;this.picture_=undefined;this.pictureDataProcessed_=false;this.chartScale_=window.devicePixelRatio;this.chart_=document.createElement('canvas');this.chartCtx_=this.chart_.getContext('2d');Polymer.dom(this).appendChild(this.chart_);this.opsTimingData_=[];this.chartWidth_=0;this.chartHeight_=0;this.requiresRedraw_=true;this.currentBarMouseOverTarget_=null;this.chart_.addEventListener('mousemove',this.onMouseMove_.bind(this));try{new ResizeObserver(this.onResize_.bind(this)).observe(this);}catch(e){}},get requiresRedraw(){return this.requiresRedraw_;},set requiresRedraw(requiresRedraw){this.requiresRedraw_=requiresRedraw;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.pictureDataProcessed_=false;if(Polymer.dom(this).classList.contains('hidden'))return;this.processPictureData_();this.requiresRedraw=true;this.updateChartContents();},hide(){Polymer.dom(this).classList.add('hidden');this.style.display='none';},show(){Polymer.dom(this).classList.remove('hidden');this.style.display='';if(!this.pictureDataProcessed_){this.processPictureData_();}\nthis.requiresRedraw=true;this.updateChartContents();},onMouseMove_(e){const lastBarMouseOverTarget=this.currentBarMouseOverTarget_;this.currentBarMouseOverTarget_=null;const x=e.offsetX;const y=e.offsetY;const chartLeft=CHART_PADDING_LEFT;const chartRight=this.chartWidth_-CHART_PADDING_RIGHT;const chartTop=AXIS_PADDING_TOP;const chartBottom=this.chartHeight_-AXIS_PADDING_BOTTOM;const chartInnerWidth=chartRight-chartLeft;if(x>chartLeft&&x<chartRight&&y>chartTop&&y<chartBottom){this.currentBarMouseOverTarget_=Math.floor((x-chartLeft)/chartInnerWidth*this.opsTimingData_.length);this.currentBarMouseOverTarget_=tr.b.math.clamp(this.currentBarMouseOverTarget_,0,this.opsTimingData_.length-1);}\nif(this.currentBarMouseOverTarget_===lastBarMouseOverTarget)return;this.drawChartContents_();},onResize_(){this.requiresRedraw=true;this.updateChartContents();},updateChartContents(){if(this.requiresRedraw){this.updateChartDimensions_();}\nthis.drawChartContents_();},updateChartDimensions_(){this.chartWidth_=this.offsetWidth;this.chartHeight_=this.offsetHeight;this.chart_.width=this.chartWidth_*this.chartScale_;this.chart_.height=this.chartHeight_*this.chartScale_;this.chart_.style.width=this.chartWidth_+'px';this.chart_.style.height=this.chartHeight_+'px';this.chartCtx_.scale(this.chartScale_,this.chartScale_);},processPictureData_(){this.resetOpsTimingData_();this.pictureDataProcessed_=true;if(!this.picture_)return;let ops=this.picture_.getOps();if(!ops)return;ops=this.picture_.tagOpsWithTimings(ops);if(ops[0].cmd_time===undefined)return;this.collapseOpsToTimingBuckets_(ops);},drawChartContents_(){this.clearChartContents_();if(this.opsTimingData_.length===0){this.showNoTimingDataMessage_();return;}\nthis.drawChartAxes_();this.drawBars_();this.drawLineAtBottomOfChart_();if(this.currentBarMouseOverTarget_===null)return;this.drawTooltip_();},drawLineAtBottomOfChart_(){this.chartCtx_.strokeStyle='#AAA';this.chartCtx_.moveTo(0,this.chartHeight_-0.5);this.chartCtx_.lineTo(this.chartWidth_,this.chartHeight_-0.5);this.chartCtx_.stroke();},drawTooltip_(){const tooltipData=this.opsTimingData_[this.currentBarMouseOverTarget_];const tooltipTitle=tooltipData.cmd_string;const tooltipTime=tooltipData.cmd_time.toFixed(4);const tooltipWidth=110;const tooltipHeight=40;const chartInnerWidth=this.chartWidth_-CHART_PADDING_RIGHT-\nCHART_PADDING_LEFT;const barWidth=chartInnerWidth/this.opsTimingData_.length;const tooltipOffset=Math.round((tooltipWidth-barWidth)*0.5);const left=CHART_PADDING_LEFT+this.currentBarMouseOverTarget_*barWidth-tooltipOffset;const top=Math.round((this.chartHeight_-tooltipHeight)*0.5);this.chartCtx_.save();this.chartCtx_.shadowOffsetX=0;this.chartCtx_.shadowOffsetY=5;this.chartCtx_.shadowBlur=4;this.chartCtx_.shadowColor='rgba(0,0,0,0.4)';this.chartCtx_.strokeStyle='#888';this.chartCtx_.fillStyle='#EEE';this.chartCtx_.fillRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.shadowColor='transparent';this.chartCtx_.translate(0.5,0.5);this.chartCtx_.strokeRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.restore();this.chartCtx_.fillStyle='#222';this.chartCtx_.textBaseline='top';this.chartCtx_.font='800 12px Arial';this.chartCtx_.fillText(tooltipTitle,left+8,top+8);this.chartCtx_.fillStyle='#555';this.chartCtx_.textBaseline='top';this.chartCtx_.font='400 italic 10px Arial';this.chartCtx_.fillText('Total: '+tooltipTime+'ms',left+8,top+22);},drawBars_(){const len=this.opsTimingData_.length;const max=this.opsTimingData_[0].cmd_time;const min=this.opsTimingData_[len-1].cmd_time;const width=this.chartWidth_-CHART_PADDING_LEFT-CHART_PADDING_RIGHT;const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const barWidth=Math.floor(width/len);let opData;let opTiming;let opHeight;let opLabel;let barLeft;for(let b=0;b<len;b++){opData=this.opsTimingData_[b];opTiming=opData.cmd_time/max;opHeight=Math.round(Math.max(1,opTiming*height));opLabel=opData.cmd_string;barLeft=CHART_PADDING_LEFT+b*barWidth;this.chartCtx_.fillStyle=this.getOpColor_(opLabel);this.chartCtx_.fillRect(barLeft+BAR_PADDING,AXIS_PADDING_TOP+\nheight-opHeight,barWidth-2*BAR_PADDING,opHeight);}},getOpColor_(opName){const characters=opName.split('');const hue=characters.reduce(this.reduceNameToHue,0)%360;return'hsl('+hue+', 30%, 50%)';},reduceNameToHue(previousValue,currentValue,index,array){return Math.round(previousValue+currentValue.charCodeAt(0)*HUE_CHAR_CODE_ADJUSTMENT);},drawChartAxes_(){const len=this.opsTimingData_.length;const max=this.opsTimingData_[0].cmd_time;const min=this.opsTimingData_[len-1].cmd_time;const width=this.chartWidth_-AXIS_PADDING_LEFT-AXIS_PADDING_RIGHT;const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const totalBarWidth=this.chartWidth_-CHART_PADDING_LEFT-\nCHART_PADDING_RIGHT;const barWidth=Math.floor(totalBarWidth/len);const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;const tickValInterval=(max-min)/(VERTICAL_TICKS-1);let tickVal=0;this.chartCtx_.fillStyle='#333';this.chartCtx_.strokeStyle='#777';this.chartCtx_.save();this.chartCtx_.translate(0.5,0.5);this.chartCtx_.save();this.chartCtx_.translate(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.moveTo(0,0);this.chartCtx_.lineTo(0,height);this.chartCtx_.lineTo(width,height);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='right';this.chartCtx_.textBaseline='middle';for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);tickVal=(max-t*tickValInterval).toFixed(4);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(-AXIS_TICK_SIZE,tickYPosition);this.chartCtx_.fillText(tickVal,-AXIS_TICK_SIZE-AXIS_LABEL_PADDING,tickYPosition);}\nthis.chartCtx_.stroke();this.chartCtx_.restore();this.chartCtx_.save();this.chartCtx_.translate(CHART_PADDING_LEFT+Math.round(barWidth*0.5),AXIS_PADDING_TOP+height+LABEL_PADDING);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='top';let labelTickLeft;let labelTickBottom;for(let l=0;l<len;l++){labelTickLeft=Math.round(l*barWidth);labelTickBottom=l%2*LABEL_INTERLEAVE_OFFSET;this.chartCtx_.save();this.chartCtx_.moveTo(labelTickLeft,-LABEL_PADDING);this.chartCtx_.lineTo(labelTickLeft,labelTickBottom);this.chartCtx_.stroke();this.chartCtx_.restore();this.chartCtx_.fillText(this.opsTimingData_[l].cmd_string,labelTickLeft,labelTickBottom);}\nthis.chartCtx_.restore();this.chartCtx_.restore();},clearChartContents_(){this.chartCtx_.clearRect(0,0,this.chartWidth_,this.chartHeight_);},showNoTimingDataMessage_(){this.chartCtx_.font='800 italic 14px Arial';this.chartCtx_.fillStyle='#333';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='middle';this.chartCtx_.fillText('No timing data available.',this.chartWidth_*0.5,this.chartHeight_*0.5);},collapseOpsToTimingBuckets_(ops){const opsTimingDataIndexHash_={};const timingData=this.opsTimingData_;let op;let opIndex;for(let i=0;i<ops.length;i++){op=ops[i];if(op.cmd_time===undefined)continue;opIndex=opsTimingDataIndexHash_[op.cmd_string]||null;if(opIndex===null){timingData.push({cmd_time:0,cmd_string:op.cmd_string});opIndex=timingData.length-1;opsTimingDataIndexHash_[op.cmd_string]=opIndex;}\ntimingData[opIndex].cmd_time+=op.cmd_time;}\ntimingData.sort(this.sortTimingBucketsByOpTimeDescending_);this.collapseTimingBucketsToOther_(4);},collapseTimingBucketsToOther_(count){const timingData=this.opsTimingData_;const otherSource=timingData.splice(count,timingData.length-count);let otherDestination=null;if(!otherSource.length)return;timingData.push({cmd_time:0,cmd_string:'Other'});otherDestination=timingData[timingData.length-1];for(let i=0;i<otherSource.length;i++){otherDestination.cmd_time+=otherSource[i].cmd_time;}},sortTimingBucketsByOpTimeDescending_(a,b){return b.cmd_time-a.cmd_time;},resetOpsTimingData_(){this.opsTimingData_.length=0;}};return{PictureOpsChartSummaryView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const BAR_PADDING=1;const BAR_WIDTH=5;const CHART_PADDING_LEFT=65;const CHART_PADDING_RIGHT=30;const CHART_PADDING_BOTTOM=35;const CHART_PADDING_TOP=20;const AXIS_PADDING_LEFT=55;const AXIS_PADDING_RIGHT=30;const AXIS_PADDING_BOTTOM=35;const AXIS_PADDING_TOP=20;const AXIS_TICK_SIZE=5;const AXIS_LABEL_PADDING=5;const VERTICAL_TICKS=5;const HUE_CHAR_CODE_ADJUSTMENT=5.7;const PictureOpsChartView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-ops-chart-view');PictureOpsChartView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.style.display='block';this.style.height='180px';this.style.margin=0;this.style.padding=0;this.style.position='relative';this.picture_=undefined;this.pictureOps_=undefined;this.opCosts_=undefined;this.chartScale_=window.devicePixelRatio;this.chart_=document.createElement('canvas');this.chartCtx_=this.chart_.getContext('2d');Polymer.dom(this).appendChild(this.chart_);this.selectedOpIndex_=undefined;this.chartWidth_=0;this.chartHeight_=0;this.dimensionsHaveChanged_=true;this.currentBarMouseOverTarget_=undefined;this.ninetyFifthPercentileCost_=0;this.totalOpCost_=0;this.chart_.addEventListener('click',this.onClick_.bind(this));this.chart_.addEventListener('mousemove',this.onMouseMove_.bind(this));try{new ResizeObserver(this.onResize_.bind(this)).observe(this);}catch(e){}\nthis.usePercentileScale_=false;this.usePercentileScaleCheckbox_=tr.ui.b.createCheckBox(this,'usePercentileScale','PictureOpsChartView.usePercentileScale',false,'Limit to 95%-ile');Polymer.dom(this.usePercentileScaleCheckbox_).classList.add('use-percentile-scale');this.usePercentileScaleCheckbox_.style.position='absolute';this.usePercentileScaleCheckbox_.style.left=0;this.usePercentileScaleCheckbox_.style.top=0;Polymer.dom(this).appendChild(this.usePercentileScaleCheckbox_);},get dimensionsHaveChanged(){return this.dimensionsHaveChanged_;},set dimensionsHaveChanged(dimensionsHaveChanged){this.dimensionsHaveChanged_=dimensionsHaveChanged;},get usePercentileScale(){return this.usePercentileScale_;},set usePercentileScale(usePercentileScale){this.usePercentileScale_=usePercentileScale;this.drawChartContents_();},get numOps(){return this.opCosts_.length;},get selectedOpIndex(){return this.selectedOpIndex_;},set selectedOpIndex(selectedOpIndex){if(selectedOpIndex<0)throw new Error('Invalid index');if(selectedOpIndex>=this.numOps)throw new Error('Invalid index');this.selectedOpIndex_=selectedOpIndex;},get picture(){return this.picture_;},set picture(picture){this.picture_=picture;this.pictureOps_=picture.tagOpsWithTimings(picture.getOps());this.currentBarMouseOverTarget_=undefined;this.processPictureData_();this.dimensionsHaveChanged=true;},processPictureData_(){if(this.pictureOps_===undefined)return;let totalOpCost=0;this.opCosts_=this.pictureOps_.map(function(op){totalOpCost+=op.cmd_time;return op.cmd_time;});this.opCosts_.sort();const ninetyFifthPercentileCostIndex=Math.floor(this.opCosts_.length*0.95);this.ninetyFifthPercentileCost_=this.opCosts_[ninetyFifthPercentileCostIndex];this.maxCost_=this.opCosts_[this.opCosts_.length-1];this.totalOpCost_=totalOpCost;},extractBarIndex_(e){let index=undefined;if(this.pictureOps_===undefined||this.pictureOps_.length===0){return index;}\nconst x=e.offsetX;const y=e.offsetY;const totalBarWidth=(BAR_WIDTH+BAR_PADDING)*this.pictureOps_.length;const chartLeft=CHART_PADDING_LEFT;const chartTop=0;const chartBottom=this.chartHeight_-CHART_PADDING_BOTTOM;const chartRight=chartLeft+totalBarWidth;if(x<chartLeft||x>chartRight||y<chartTop||y>chartBottom){return index;}\nindex=Math.floor((x-chartLeft)/totalBarWidth*this.pictureOps_.length);index=tr.b.math.clamp(index,0,this.pictureOps_.length-1);return index;},onClick_(e){const barClicked=this.extractBarIndex_(e);if(barClicked===undefined)return;if(barClicked===this.selectedOpIndex){this.selectedOpIndex=undefined;}else{this.selectedOpIndex=barClicked;}\ne.preventDefault();tr.b.dispatchSimpleEvent(this,'selection-changed',false);},onMouseMove_(e){const lastBarMouseOverTarget=this.currentBarMouseOverTarget_;this.currentBarMouseOverTarget_=this.extractBarIndex_(e);if(this.currentBarMouseOverTarget_===lastBarMouseOverTarget){return;}\nthis.drawChartContents_();},onResize_(){this.dimensionsHaveChanged=true;this.updateChartContents();},scrollSelectedItemIntoViewIfNecessary(){if(this.selectedOpIndex===undefined){return;}\nconst width=this.offsetWidth;const left=this.scrollLeft;const right=left+width;const targetLeft=CHART_PADDING_LEFT+\n(BAR_WIDTH+BAR_PADDING)*this.selectedOpIndex;if(targetLeft>left&&targetLeft<right){return;}\nthis.scrollLeft=(targetLeft-width*0.5);},updateChartContents(){if(this.dimensionsHaveChanged){this.updateChartDimensions_();}\nthis.drawChartContents_();},updateChartDimensions_(){if(!this.pictureOps_)return;let width=CHART_PADDING_LEFT+CHART_PADDING_RIGHT+\n((BAR_WIDTH+BAR_PADDING)*this.pictureOps_.length);if(width<this.offsetWidth){width=this.offsetWidth;}\nthis.chartWidth_=width;this.chartHeight_=this.getBoundingClientRect().height;this.chart_.width=this.chartWidth_*this.chartScale_;this.chart_.height=this.chartHeight_*this.chartScale_;this.chart_.style.width=this.chartWidth_+'px';this.chart_.style.height=this.chartHeight_+'px';this.chartCtx_.scale(this.chartScale_,this.chartScale_);this.dimensionsHaveChanged=false;},drawChartContents_(){this.clearChartContents_();if(this.pictureOps_===undefined||this.pictureOps_.length===0||this.pictureOps_[0].cmd_time===undefined){this.showNoTimingDataMessage_();return;}\nthis.drawSelection_();this.drawBars_();this.drawChartAxes_();this.drawLinesAtTickMarks_();this.drawLineAtBottomOfChart_();if(this.currentBarMouseOverTarget_===undefined){return;}\nthis.drawTooltip_();},drawSelection_(){if(this.selectedOpIndex===undefined){return;}\nconst width=(BAR_WIDTH+BAR_PADDING)*this.selectedOpIndex;this.chartCtx_.fillStyle='rgb(223, 235, 230)';this.chartCtx_.fillRect(CHART_PADDING_LEFT,CHART_PADDING_TOP,width,this.chartHeight_-CHART_PADDING_TOP-CHART_PADDING_BOTTOM);},drawChartAxes_(){const min=this.opCosts_[0];const max=this.opCosts_[this.opCosts_.length-1];const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;const tickValInterval=(max-min)/(VERTICAL_TICKS-1);let tickVal=0;this.chartCtx_.fillStyle='#333';this.chartCtx_.strokeStyle='#777';this.chartCtx_.save();this.chartCtx_.translate(0.5,0.5);this.chartCtx_.beginPath();this.chartCtx_.moveTo(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.lineTo(AXIS_PADDING_LEFT,this.chartHeight_-\nAXIS_PADDING_BOTTOM);this.chartCtx_.lineTo(this.chartWidth_-AXIS_PADDING_RIGHT,this.chartHeight_-AXIS_PADDING_BOTTOM);this.chartCtx_.stroke();this.chartCtx_.closePath();this.chartCtx_.translate(AXIS_PADDING_LEFT,AXIS_PADDING_TOP);this.chartCtx_.font='10px Arial';this.chartCtx_.textAlign='right';this.chartCtx_.textBaseline='middle';this.chartCtx_.beginPath();for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);tickVal=(max-t*tickValInterval).toFixed(4);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(-AXIS_TICK_SIZE,tickYPosition);this.chartCtx_.fillText(tickVal,-AXIS_TICK_SIZE-AXIS_LABEL_PADDING,tickYPosition);}\nthis.chartCtx_.stroke();this.chartCtx_.closePath();this.chartCtx_.restore();},drawLinesAtTickMarks_(){const height=this.chartHeight_-AXIS_PADDING_TOP-AXIS_PADDING_BOTTOM;const width=this.chartWidth_-AXIS_PADDING_LEFT-AXIS_PADDING_RIGHT;const tickYInterval=height/(VERTICAL_TICKS-1);let tickYPosition=0;this.chartCtx_.save();this.chartCtx_.translate(AXIS_PADDING_LEFT+0.5,AXIS_PADDING_TOP+0.5);this.chartCtx_.beginPath();this.chartCtx_.strokeStyle='rgba(0,0,0,0.05)';for(let t=0;t<VERTICAL_TICKS;t++){tickYPosition=Math.round(t*tickYInterval);this.chartCtx_.moveTo(0,tickYPosition);this.chartCtx_.lineTo(width,tickYPosition);this.chartCtx_.stroke();}\nthis.chartCtx_.restore();this.chartCtx_.closePath();},drawLineAtBottomOfChart_(){this.chartCtx_.strokeStyle='#AAA';this.chartCtx_.beginPath();this.chartCtx_.moveTo(0,this.chartHeight_-0.5);this.chartCtx_.lineTo(this.chartWidth_,this.chartHeight_-0.5);this.chartCtx_.stroke();this.chartCtx_.closePath();},drawTooltip_(){const tooltipData=this.pictureOps_[this.currentBarMouseOverTarget_];const tooltipTitle=tooltipData.cmd_string;const tooltipTime=tooltipData.cmd_time.toFixed(4);const toolTipTimePercentage=((tooltipData.cmd_time/this.totalOpCost_)*100).toFixed(2);const tooltipWidth=120;const tooltipHeight=40;const chartInnerWidth=this.chartWidth_-CHART_PADDING_RIGHT-\nCHART_PADDING_LEFT;const barWidth=BAR_WIDTH+BAR_PADDING;const tooltipOffset=Math.round((tooltipWidth-barWidth)*0.5);const left=CHART_PADDING_LEFT+this.currentBarMouseOverTarget_*barWidth-tooltipOffset;const top=Math.round((this.chartHeight_-tooltipHeight)*0.5);this.chartCtx_.save();this.chartCtx_.shadowOffsetX=0;this.chartCtx_.shadowOffsetY=5;this.chartCtx_.shadowBlur=4;this.chartCtx_.shadowColor='rgba(0,0,0,0.4)';this.chartCtx_.strokeStyle='#888';this.chartCtx_.fillStyle='#EEE';this.chartCtx_.fillRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.shadowColor='transparent';this.chartCtx_.translate(0.5,0.5);this.chartCtx_.strokeRect(left,top,tooltipWidth,tooltipHeight);this.chartCtx_.restore();this.chartCtx_.fillStyle='#222';this.chartCtx_.textAlign='left';this.chartCtx_.textBaseline='top';this.chartCtx_.font='800 12px Arial';this.chartCtx_.fillText(tooltipTitle,left+8,top+8);this.chartCtx_.fillStyle='#555';this.chartCtx_.font='400 italic 10px Arial';this.chartCtx_.fillText(tooltipTime+'ms ('+\ntoolTipTimePercentage+'%)',left+8,top+22);},drawBars_(){let op;let opColor=0;let opHeight=0;const opWidth=BAR_WIDTH+BAR_PADDING;let opHover=false;const bottom=this.chartHeight_-CHART_PADDING_BOTTOM;const maxHeight=this.chartHeight_-CHART_PADDING_BOTTOM-\nCHART_PADDING_TOP;let maxValue;if(this.usePercentileScale){maxValue=this.ninetyFifthPercentileCost_;}else{maxValue=this.maxCost_;}\nfor(let b=0;b<this.pictureOps_.length;b++){op=this.pictureOps_[b];opHeight=Math.round((op.cmd_time/maxValue)*maxHeight);opHeight=Math.max(opHeight,1);opHover=(b===this.currentBarMouseOverTarget_);opColor=this.getOpColor_(op.cmd_string,opHover);if(b===this.selectedOpIndex){this.chartCtx_.fillStyle='#FFFF00';}else{this.chartCtx_.fillStyle=opColor;}\nthis.chartCtx_.fillRect(CHART_PADDING_LEFT+b*opWidth,bottom-opHeight,BAR_WIDTH,opHeight);}},getOpColor_(opName,hover){const characters=opName.split('');const hue=characters.reduce(this.reduceNameToHue,0)%360;const saturation=30;const lightness=hover?'75%':'50%';return'hsl('+hue+', '+saturation+'%, '+lightness+'%)';},reduceNameToHue(previousValue,currentValue,index,array){return Math.round(previousValue+currentValue.charCodeAt(0)*HUE_CHAR_CODE_ADJUSTMENT);},clearChartContents_(){this.chartCtx_.clearRect(0,0,this.chartWidth_,this.chartHeight_);},showNoTimingDataMessage_(){this.chartCtx_.font='800 italic 14px Arial';this.chartCtx_.fillStyle='#333';this.chartCtx_.textAlign='center';this.chartCtx_.textBaseline='middle';this.chartCtx_.fillText('No timing data available.',this.chartWidth_*0.5,this.chartHeight_*0.5);}};return{PictureOpsChartView,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const THIS_DOC=document._currentScript.ownerDocument;const PictureDebugger=tr.ui.b.define('tr-ui-e-chrome-cc-picture-debugger');PictureDebugger.prototype={__proto__:HTMLDivElement.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-chrome-cc-picture-debugger-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.style.display='flex';this.style.flexDirection='row';const title=this.querySelector('.title');title.style.fontWeight='bold';title.style.marginLeft='5px';title.style.marginRight='5px';this.pictureAsImageData_=undefined;this.showOverdraw_=false;this.zoomScaleValue_=1;this.sizeInfo_=Polymer.dom(this).querySelector('.size');this.rasterArea_=Polymer.dom(this).querySelector('raster-area');this.rasterArea_.style.backgroundColor='#ddd';this.rasterArea_.style.minHeight='100px';this.rasterArea_.style.minWidth='200px';this.rasterArea_.style.overflow='auto';this.rasterArea_.style.paddingLeft='5px';this.rasterCanvas_=Polymer.dom(this.rasterArea_).querySelector('canvas');this.rasterCtx_=this.rasterCanvas_.getContext('2d');this.filename_=Polymer.dom(this).querySelector('.filename');this.filename_.style.userSelect='text';this.filename_.style.marginLeft='5px';this.drawOpsChartSummaryView_=new tr.ui.e.chrome.cc.PictureOpsChartSummaryView();this.drawOpsChartView_=new tr.ui.e.chrome.cc.PictureOpsChartView();this.drawOpsChartView_.addEventListener('selection-changed',this.onChartBarClicked_.bind(this));this.exportButton_=Polymer.dom(this).querySelector('.export');this.exportButton_.addEventListener('click',this.onSaveAsSkPictureClicked_.bind(this));this.trackMouse_();const overdrawCheckbox=tr.ui.b.createCheckBox(this,'showOverdraw','pictureView.showOverdraw',false,'Show overdraw');const chartCheckbox=tr.ui.b.createCheckBox(this,'showSummaryChart','pictureView.showSummaryChart',false,'Show timing summary');const pictureInfo=Polymer.dom(this).querySelector('picture-info');pictureInfo.style.flexGrow=0;pictureInfo.style.flexShrink=0;pictureInfo.style.flexBasis='auto';pictureInfo.style.paddingTop='2px';Polymer.dom(pictureInfo).appendChild(overdrawCheckbox);Polymer.dom(pictureInfo).appendChild(chartCheckbox);this.drawOpsView_=new tr.ui.e.chrome.cc.PictureOpsListView();this.drawOpsView_.flexGrow=1;this.drawOpsView_.flexShrink=1;this.drawOpsView_.flexBasis='auto';this.drawOpsView_.addEventListener('selection-changed',this.onChangeDrawOps_.bind(this));const leftPanel=Polymer.dom(this).querySelector('left-panel');leftPanel.style.flexDirection='column';leftPanel.style.display='flex';leftPanel.style.flexGrow=0;leftPanel.style.flexShrink=0;leftPanel.style.flexBasis='auto';leftPanel.style.minWidth='200px';leftPanel.style.overflow='auto';Polymer.dom(leftPanel).appendChild(this.drawOpsChartSummaryView_);Polymer.dom(leftPanel).appendChild(this.drawOpsView_);const middleDragHandle=document.createElement('tr-ui-b-drag-handle');middleDragHandle.style.flexGrow=0;middleDragHandle.style.flexShrink=0;middleDragHandle.style.flexBasis='auto';middleDragHandle.horizontal=false;middleDragHandle.target=leftPanel;const rightPanel=Polymer.dom(this).querySelector('right-panel');rightPanel.style.flexGrow=1;rightPanel.style.flexShrink=1;rightPanel.style.flexBasis='auto';rightPanel.style.minWidth=0;rightPanel.style.flexDirection='column';rightPanel.style.display='flex';const chartView=Polymer.dom(rightPanel).querySelector('tr-ui-e-chrome-cc-picture-ops-chart-view');this.drawOpsChartView_.style.flexGrow=0;this.drawOpsChartView_.style.flexShrink=0;this.drawOpsChartView_.style.flexBasis='auto';this.drawOpsChartView_.style.minWidth=0;this.drawOpsChartView_.style.overflowX='auto';this.drawOpsChartView_.style.overflowY='hidden';rightPanel.replaceChild(this.drawOpsChartView_,chartView);this.infoBar_=document.createElement('tr-ui-b-info-bar');Polymer.dom(this.rasterArea_).appendChild(this.infoBar_);Polymer.dom(this).insertBefore(middleDragHandle,rightPanel);this.picture_=undefined;const hkc=document.createElement('tv-ui-b-hotkey-controller');hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',thisArg:this,keyCode:'h'.charCodeAt(0),callback(e){this.moveSelectedOpBy(-1);e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',thisArg:this,keyCode:'l'.charCodeAt(0),callback(e){this.moveSelectedOpBy(1);e.stopPropagation();}}));Polymer.dom(this).appendChild(hkc);},onSaveAsSkPictureClicked_(){const rawData=tr.b.Base64.atob(this.picture_.getBase64SkpData());const length=rawData.length;const arrayBuffer=new ArrayBuffer(length);const uint8Array=new Uint8Array(arrayBuffer);for(let c=0;c<length;c++){uint8Array[c]=rawData.charCodeAt(c);}\nconst blob=new Blob([uint8Array],{type:'application/octet-binary'});const blobUrl=window.webkitURL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;link.download=this.filename_.value;const event=document.createEvent('MouseEvents');event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);link.dispatchEvent(event);},get picture(){return this.picture_;},set picture(picture){this.drawOpsView_.picture=picture;this.drawOpsChartView_.picture=picture;this.drawOpsChartSummaryView_.picture=picture;this.picture_=picture;this.exportButton_.disabled=!this.picture_.canSave;if(picture){const size=this.getRasterCanvasSize_();this.rasterCanvas_.width=size.width;this.rasterCanvas_.height=size.height;}\nconst bounds=this.rasterArea_.getBoundingClientRect();const selectorBounds=this.mouseModeSelector_.getBoundingClientRect();this.mouseModeSelector_.pos={x:(bounds.right-selectorBounds.width-10),y:bounds.top};this.rasterize_();this.scheduleUpdateContents_();},getRasterCanvasSize_(){const style=window.getComputedStyle(this.rasterArea_);const width=Math.max(parseInt(style.width),this.picture_.layerRect.width);const height=Math.max(parseInt(style.height),this.picture_.layerRect.height);return{width,height};},scheduleUpdateContents_(){if(this.updateContentsPending_)return;this.updateContentsPending_=true;tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContents_.bind(this));},updateContents_(){this.updateContentsPending_=false;if(this.picture_){Polymer.dom(this.sizeInfo_).textContent='('+\nthis.picture_.layerRect.width+' x '+\nthis.picture_.layerRect.height+')';}\nthis.drawOpsChartView_.updateChartContents();this.drawOpsChartView_.scrollSelectedItemIntoViewIfNecessary();if(!this.pictureAsImageData_)return;this.infoBar_.visible=false;this.infoBar_.removeAllButtons();if(this.pictureAsImageData_.error){this.infoBar_.message='Cannot rasterize...';this.infoBar_.addButton('More info...',function(e){const overlay=new tr.ui.b.Overlay();Polymer.dom(overlay).textContent=this.pictureAsImageData_.error;overlay.visible=true;e.stopPropagation();return false;}.bind(this));this.infoBar_.visible=true;}\nthis.drawPicture_();},drawPicture_(){const size=this.getRasterCanvasSize_();if(size.width!==this.rasterCanvas_.width){this.rasterCanvas_.width=size.width;}\nif(size.height!==this.rasterCanvas_.height){this.rasterCanvas_.height=size.height;}\nthis.rasterCtx_.clearRect(0,0,size.width,size.height);if(!this.pictureAsImageData_.imageData)return;const imgCanvas=this.pictureAsImageData_.asCanvas();const w=imgCanvas.width;const h=imgCanvas.height;this.rasterCtx_.drawImage(imgCanvas,0,0,w,h,0,0,w*this.zoomScaleValue_,h*this.zoomScaleValue_);},rasterize_(){if(this.picture_){this.picture_.rasterize({stopIndex:this.drawOpsView_.selectedOpIndex,showOverdraw:this.showOverdraw_},this.onRasterComplete_.bind(this));}},onRasterComplete_(pictureAsImageData){this.pictureAsImageData_=pictureAsImageData;this.scheduleUpdateContents_();},moveSelectedOpBy(increment){if(this.selectedOpIndex===undefined){this.selectedOpIndex=0;return;}\nthis.selectedOpIndex=tr.b.math.clamp(this.selectedOpIndex+increment,0,this.numOps);},get numOps(){return this.drawOpsView_.numOps;},get selectedOpIndex(){return this.drawOpsView_.selectedOpIndex;},set selectedOpIndex(index){this.drawOpsView_.selectedOpIndex=index;this.drawOpsChartView_.selectedOpIndex=index;},onChartBarClicked_(e){this.drawOpsView_.selectedOpIndex=this.drawOpsChartView_.selectedOpIndex;},onChangeDrawOps_(e){this.rasterize_();this.scheduleUpdateContents_();this.drawOpsChartView_.selectedOpIndex=this.drawOpsView_.selectedOpIndex;},set showOverdraw(v){this.showOverdraw_=v;this.rasterize_();},set showSummaryChart(chartShouldBeVisible){if(chartShouldBeVisible){this.drawOpsChartSummaryView_.show();}else{this.drawOpsChartSummaryView_.hide();}},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.rasterArea_;Polymer.dom(this.rasterArea_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.rasterArea_.offsetLeft,y:e.clientY-this.rasterArea_.offsetTop};}};return{PictureDebugger,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const PictureSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-picture-snapshot-view',tr.ui.analysis.ObjectSnapshotView);PictureSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-picture-snapshot-view');this.style.display='flex';this.style.flexGrow=1;this.style.flexShrink=1;this.style.flexBasis='auto';this.style.minWidth=0;this.pictureDebugger_=new tr.ui.e.chrome.cc.PictureDebugger();this.pictureDebugger_.style.flexGrow=1;this.pictureDebugger_.style.flexShrink=1;this.pictureDebugger_.style.flexBasis='auto';this.pictureDebugger_.style.minWidth=0;Polymer.dom(this).appendChild(this.pictureDebugger_);},updateContents(){if(this.objectSnapshot_&&this.pictureDebugger_){this.pictureDebugger_.picture=this.objectSnapshot_;}}};tr.ui.analysis.ObjectSnapshotView.register(PictureSnapshotView,{typeNames:['cc::Picture','cc::LayeredPicture'],showInstances:false});return{PictureSnapshotView,};});'use strict';tr.exportTo('tr.e.cc',function(){const knownRasterTaskNames=['TileManager::RunRasterTask','RasterWorkerPoolTaskImpl::RunRasterOnThread','RasterWorkerPoolTaskImpl::Raster','RasterTaskImpl::Raster','cc::RasterTask','RasterTask'];const knownAnalysisTaskNames=['TileManager::RunAnalyzeTask','RasterWorkerPoolTaskImpl::RunAnalysisOnThread','RasterWorkerPoolTaskImpl::Analyze','RasterTaskImpl::Analyze','cc::AnalyzeTask','AnalyzeTask'];function getTileFromRasterTaskSlice(slice){if(!(isSliceDoingRasterization(slice)||isSliceDoingAnalysis(slice))){return undefined;}\nlet tileData;if(slice.args.data){tileData=slice.args.data;}else{tileData=slice.args.tileData;}\nif(tileData===undefined)return undefined;if(tileData.tile_id)return tileData.tile_id;const tile=tileData.tileId;if(!(tile instanceof tr.e.cc.TileSnapshot)){return undefined;}\nreturn tileData.tileId;}\nfunction isSliceDoingRasterization(slice){return knownRasterTaskNames.includes(slice.title);}\nfunction isSliceDoingAnalysis(slice){return knownAnalysisTaskNames.includes(slice.title);}\nreturn{getTileFromRasterTaskSlice,isSliceDoingRasterization,isSliceDoingAnalysis};});'use strict';Polymer({is:'tr-ui-e-chrome-cc-raster-task-view',created(){this.selection_=undefined;},set selection(selection){this.selection_=selection;this.updateContents_();},updateColumns_(hadCpuDurations){const timeSpanConfig={unit:tr.b.Unit.byName.timeDurationInMs,ownerDocument:this.ownerDocument};const columns=[{title:'Layer',value(row){if(row.isTotals)return'Totals';if(row.layer){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.ui.e.chrome.cc.LayerSelection(row.layer);},'Layer '+row.layerId);return linkEl;}\nreturn'Layer '+row.layerId;},width:'250px'},{title:'Num Tiles',value(row){return row.numTiles;},cmp(a,b){return a.numTiles-b.numTiles;}},{title:'Num Analysis Tasks',value(row){return row.numAnalysisTasks;},cmp(a,b){return a.numAnalysisTasks-b.numAnalysisTasks;}},{title:'Num Raster Tasks',value(row){return row.numRasterTasks;},cmp(a,b){return a.numRasterTasks-b.numRasterTasks;}},{title:'Wall Duration (ms)',value(row){return tr.v.ui.createScalarSpan(row.duration,timeSpanConfig);},cmp(a,b){return a.duration-b.duration;}}];if(hadCpuDurations){columns.push({title:'CPU Duration (ms)',value(row){return tr.v.ui.createScalarSpan(row.cpuDuration,timeSpanConfig);},cmp(a,b){return a.cpuDuration-b.cpuDuration;}});}\nlet colWidthPercentage;if(columns.length===1){colWidthPercentage='100%';}else{colWidthPercentage=(100/(columns.length-1)).toFixed(3)+'%';}\nfor(let i=1;i<columns.length;i++){columns[i].width=colWidthPercentage;}\nthis.$.content.tableColumns=columns;this.$.content.sortColumnIndex=columns.length-1;},updateContents_(){const table=this.$.content;if(this.selection_.length===0){this.$.link.setSelectionAndContent(undefined,'');table.tableRows=[];table.footerRows=[];table.rebuild();return;}\nconst lthi=tr.e.cc.getTileFromRasterTaskSlice(tr.b.getFirstElement(this.selection_)).containingSnapshot;this.$.link.setSelectionAndContent(function(){return new tr.model.EventSet(lthi);},lthi.userFriendlyName);const costsByLayerId={};function getCurrentCostsForLayerId(tile){const layerId=tile.layerId;const lthi=tile.containingSnapshot;let layer;if(lthi.activeTree){layer=lthi.activeTree.findLayerWithId(layerId);}\nif(layer===undefined&&lthi.pendingTree){layer=lthi.pendingTree.findLayerWithId(layerId);}\nif(costsByLayerId[layerId]===undefined){costsByLayerId[layerId]={layerId,layer,numTiles:0,numAnalysisTasks:0,numRasterTasks:0,duration:0,cpuDuration:0};}\nreturn costsByLayerId[layerId];}\nlet totalDuration=0;let totalCpuDuration=0;let totalNumAnalyzeTasks=0;let totalNumRasterizeTasks=0;let hadCpuDurations=false;const tilesThatWeHaveSeen={};this.selection_.forEach(function(slice){const tile=tr.e.cc.getTileFromRasterTaskSlice(slice);const curCosts=getCurrentCostsForLayerId(tile);if(!tilesThatWeHaveSeen[tile.objectInstance.id]){tilesThatWeHaveSeen[tile.objectInstance.id]=true;curCosts.numTiles+=1;}\nif(tr.e.cc.isSliceDoingAnalysis(slice)){curCosts.numAnalysisTasks+=1;totalNumAnalyzeTasks+=1;}else{curCosts.numRasterTasks+=1;totalNumRasterizeTasks+=1;}\ncurCosts.duration+=slice.duration;totalDuration+=slice.duration;if(slice.cpuDuration!==undefined){curCosts.cpuDuration+=slice.cpuDuration;totalCpuDuration+=slice.cpuDuration;hadCpuDurations=true;}});this.updateColumns_(hadCpuDurations);table.tableRows=Object.values(costsByLayerId);table.rebuild();table.footerRows=[{isTotals:true,numTiles:Object.keys(tilesThatWeHaveSeen).length,numAnalysisTasks:totalNumAnalyzeTasks,numRasterTasks:totalNumRasterizeTasks,duration:totalDuration,cpuDuration:totalCpuDuration}];}});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){function RasterTaskSelection(selection){tr.ui.e.chrome.cc.Selection.call(this);const whySupported=RasterTaskSelection.whySuported(selection);if(!whySupported.ok){throw new Error('Fail: '+whySupported.why);}\nthis.slices_=Array.from(selection);this.tiles_=this.slices_.map(function(slice){const tile=tr.e.cc.getTileFromRasterTaskSlice(slice);if(tile===undefined){throw new Error('This should never happen due to .supports check.');}\nreturn tile;});}\nRasterTaskSelection.whySuported=function(selection){if(!(selection instanceof tr.model.EventSet)){return{ok:false,why:'Must be selection'};}\nif(selection.length===0){return{ok:false,why:'Selection must be non empty'};}\nlet referenceSnapshot=undefined;for(const event of selection){if(!(event instanceof tr.model.Slice)){return{ok:false,why:'Not a slice'};}\nconst tile=tr.e.cc.getTileFromRasterTaskSlice(event);if(tile===undefined){return{ok:false,why:'No tile found'};}\nif(!referenceSnapshot){referenceSnapshot=tile.containingSnapshot;}else{if(tile.containingSnapshot!==referenceSnapshot){return{ok:false,why:'Raster tasks are from different compositor instances'};}}}\nreturn{ok:true};};RasterTaskSelection.supports=function(selection){return RasterTaskSelection.whySuported(selection).ok;};RasterTaskSelection.prototype={__proto__:tr.ui.e.chrome.cc.Selection.prototype,get specicifity(){return 3;},get associatedLayerId(){const tile0=this.tiles_[0];const allSameLayer=this.tiles_.every(function(tile){tile.layerId===tile0.layerId;});if(allSameLayer){return tile0.layerId;}\nreturn undefined;},get extraHighlightsByLayerId(){const highlights={};this.tiles_.forEach(function(tile,i){if(highlights[tile.layerId]===undefined){highlights[tile.layerId]=[];}\nconst slice=this.slices_[i];highlights[tile.layerId].push({colorKey:slice.title,rect:tile.layerRect});},this);return highlights;},createAnalysis(){const sel=new tr.model.EventSet();this.slices_.forEach(function(slice){sel.push(slice);});let analysis;if(sel.length===1){analysis=document.createElement('tr-ui-a-single-event-sub-view');}else{analysis=document.createElement('tr-ui-e-chrome-cc-raster-task-view');}\nanalysis.selection=sel;return analysis;},findEquivalent(lthi){return undefined;},get containingSnapshot(){return this.tiles_[0].containingSnapshot;}};return{RasterTaskSelection,};});'use strict';tr.exportTo('tr.ui.e.chrome.cc',function(){const TileSnapshotView=tr.ui.b.define('tr-ui-e-chrome-cc-tile-snapshot-view',tr.ui.analysis.ObjectSnapshotView);TileSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-cc-tile-snapshot-view');this.layerTreeView_=new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();Polymer.dom(this).appendChild(this.layerTreeView_);},updateContents(){const tile=this.objectSnapshot_;const layerTreeHostImpl=tile.containingSnapshot;if(!layerTreeHostImpl)return;this.layerTreeView_.objectSnapshot=layerTreeHostImpl;this.layerTreeView_.selection=new tr.ui.e.chrome.cc.TileSelection(tile);}};tr.ui.analysis.ObjectSnapshotView.register(TileSnapshotView,{typeName:'cc::Tile',showInTrackView:false});return{TileSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.chrome',function(){Polymer({is:'tr-ui-e-chrome-codesearch',set searchPhrase(phrase){const link=Polymer.dom(this.$.codesearchLink);const codeSearchURL='https://cs.chromium.org/search/?sq=package:chromium&type=cs&q=';link.setAttribute('href',codeSearchURL+encodeURIComponent(phrase));},onClick(clickEvent){clickEvent.stopPropagation();}});return{};});'use strict';tr.exportTo('tr.e.gpu',function(){const AsyncSlice=tr.model.AsyncSlice;function GpuAsyncSlice(){AsyncSlice.apply(this,arguments);}\nGpuAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){if(this.args.channel){if(this.category==='disabled-by-default-gpu.device'){return'Device.'+this.args.channel;}\nreturn'Service.'+this.args.channel;}\nreturn this.title;}};AsyncSlice.subTypes.register(GpuAsyncSlice,{categoryParts:['disabled-by-default-gpu.device','disabled-by-default-gpu.service']});return{GpuAsyncSlice,};});'use strict';tr.exportTo('tr.e.gpu',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function StateSnapshot(){ObjectSnapshot.apply(this,arguments);}\nStateSnapshot.prototype={__proto__:ObjectSnapshot.prototype,preInitialize(){this.screenshot_=undefined;},initialize(){if(this.args.screenshot){this.screenshot_=this.args.screenshot;}},get screenshot(){return this.screenshot_;}};ObjectSnapshot.subTypes.register(StateSnapshot,{typeName:'gpu::State'});return{StateSnapshot,};});'use strict';tr.exportTo('tr.ui.e.chrome.gpu',function(){const StateSnapshotView=tr.ui.b.define('tr-ui-e-chrome-gpu-state-snapshot-view',tr.ui.analysis.ObjectSnapshotView);StateSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-chrome-gpu-state-snapshot-view');this.screenshotImage_=document.createElement('img');Polymer.dom(this).appendChild(this.screenshotImage_);},updateContents(){if(this.objectSnapshot_&&this.objectSnapshot_.screenshot){this.screenshotImage_.src='data:image/png;base64,'+\nthis.objectSnapshot_.screenshot;}}};tr.ui.analysis.ObjectSnapshotView.register(StateSnapshotView,{typeName:'gpu::State'});return{StateSnapshotView,};});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-layout-tree-sub-view',behaviors:['tr-ui-a-sub-view'],set selection(selection){this.currentSelection_=selection;this.updateContents_();},get selection(){return this.currentSelection_;},updateContents_(){this.set('$.content.textContent','');if(!this.currentSelection_)return;const columns=[{title:'Tag/Name',value(layoutObject){return layoutObject.tag||':'+layoutObject.name;}},{title:'htmlId',value(layoutObject){return layoutObject.htmlId||'';}},{title:'classNames',value(layoutObject){return layoutObject.classNames||'';}},{title:'reasons',value(layoutObject){return layoutObject.needsLayoutReasons.join(', ');}},{title:'width',value(layoutObject){return layoutObject.absoluteRect.width;}},{title:'height',value(layoutObject){return layoutObject.absoluteRect.height;}},{title:'absX',value(layoutObject){return layoutObject.absoluteRect.left;}},{title:'absY',value(layoutObject){return layoutObject.absoluteRect.top;}},{title:'relX',value(layoutObject){return layoutObject.relativeRect.left;}},{title:'relY',value(layoutObject){return layoutObject.relativeRect.top;}},{title:'float',value(layoutObject){return layoutObject.isFloat?'float':'';}},{title:'positioned',value(layoutObject){return layoutObject.isPositioned?'positioned':'';}},{title:'relative',value(layoutObject){return layoutObject.isRelativePositioned?'relative':'';}},{title:'sticky',value(layoutObject){return layoutObject.isStickyPositioned?'sticky':'';}},{title:'anonymous',value(layoutObject){return layoutObject.isAnonymous?'anonymous':'';}},{title:'row',value(layoutObject){if(layoutObject.tableRow===undefined){return'';}\nreturn layoutObject.tableRow;}},{title:'col',value(layoutObject){if(layoutObject.tableCol===undefined){return'';}\nreturn layoutObject.tableCol;}},{title:'rowSpan',value(layoutObject){if(layoutObject.tableRowSpan===undefined){return'';}\nreturn layoutObject.tableRowSpan;}},{title:'colSpan',value(layoutObject){if(layoutObject.tableColSpan===undefined){return'';}\nreturn layoutObject.tableColSpan;}},{title:'address',value(layoutObject){return layoutObject.id.toString(16);}}];const table=this.ownerDocument.createElement('tr-ui-b-table');table.defaultExpansionStateCallback=function(layoutObject,parentLayoutObject){return true;};table.subRowsPropertyName='childLayoutObjects';table.tableColumns=columns;table.tableRows=this.currentSelection_.map(function(snapshot){return snapshot.rootLayoutObject;});table.rebuild();Polymer.dom(this.$.content).appendChild(table);},});return{};});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-layout-tree-sub-view',tr.e.chrome.LayoutTreeSnapshot,{multi:false,title:'Layout Tree',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-layout-tree-sub-view',tr.e.chrome.LayoutTreeSnapshot,{multi:true,title:'Layout Trees',});'use strict';tr.exportTo('tr.ui.e.img',function(){const THIS_DOC=document.currentScript.ownerDocument;const ImageSnapshotView=tr.ui.b.define('tr-ui-e-img-image-snapshot-view',tr.ui.analysis.ObjectSnapshotView);ImageSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){const node=tr.ui.b.instantiateTemplate('#tr-ui-e-img-image-snapshot-view-template',THIS_DOC);Polymer.dom(this).appendChild(node);const info=Polymer.dom(this).querySelector('.image-info');this.sizeInfo_=Polymer.dom(info).querySelector('.size');this.imageContainer_=Polymer.dom(this).querySelector('.image-container');this.image_=Polymer.dom(this.imageContainer_).querySelector('img');this.zoomScaleValue_=1;this.trackMouse_();},updateContents(){if(this.objectSnapshot_&&this.objectSnapshot_.data&&this.objectSnapshot_.type){this.image_.onload=this.drawPicture_.bind(this);this.image_.src=`data:image/${this.objectSnapshot_.type};`+`base64,${this.objectSnapshot_.data}`;}\nthis.drawPicture_();},drawPicture_(){if(!this.image_.complete)return;const naturalWidth=this.image_.naturalWidth;const naturalHeight=this.image_.naturalHeight;this.sizeInfo_.textContent=`(${naturalWidth} x ${naturalHeight})`;this.image_.width=naturalWidth*this.zoomScaleValue_;this.image_.height=naturalHeight*this.zoomScaleValue_;},trackMouse_(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this.imageContainer_;Polymer.dom(this.imageContainer_).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.supportedModeMask=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.mode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.defaultMode=tr.ui.b.MOUSE_SELECTOR_MODE.ZOOM;this.mouseModeSelector_.settingsKey='pictureDebugger.mouseModeSelector';this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));},onBeginZoom_(e){this.isZooming_=true;this.lastMouseViewPos_=this.extractRelativeMousePosition_(e);e.preventDefault();},onUpdateZoom_(e){if(!this.isZooming_)return;const currentMouseViewPos=this.extractRelativeMousePosition_(e);this.zoomScaleValue_+=((this.lastMouseViewPos_.y-currentMouseViewPos.y)*0.001);this.zoomScaleValue_=Math.max(this.zoomScaleValue_,0.1);this.drawPicture_();this.lastMouseViewPos_=currentMouseViewPos;},onEndZoom_(e){this.lastMouseViewPos_=undefined;this.isZooming_=false;e.preventDefault();},extractRelativeMousePosition_(e){return{x:e.clientX-this.imageContainer_.offsetLeft,y:e.clientY-this.imageContainer_.offsetTop};},};tr.ui.analysis.ObjectSnapshotView.register(ImageSnapshotView,{typeName:'gfx::Image'});return{ImageSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.s',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const FrameTreeNodeSnapshot=tr.e.chrome.FrameTreeNodeSnapshot;const RenderFrameSnapshot=tr.e.chrome.RenderFrameSnapshot;const TopLevelSnapshot=tr.e.chrome.TopLevelSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;const FrameTreeNodeInstance=tr.e.chrome.FrameTreeNodeInstance;const RenderFrameInstance=tr.e.chrome.RenderFrameInstance;const TopLevelInstance=tr.e.chrome.TopLevelInstance;function Row(context){this.subRows=undefined;this.contexts=[];this.type=undefined;this.renderer='N/A';this.url=undefined;this.time=0;this.eventsOfInterest=new tr.model.EventSet();if(context===undefined)return;this.type=context.objectInstance.blameContextType;this.contexts.push(context);if(context instanceof FrameTreeNodeSnapshot){if(context.renderFrame){this.contexts.push(context.renderFrame);this.renderer=context.renderFrame.objectInstance.parent.pid;}}else if(context instanceof RenderFrameSnapshot){if(context.frameTreeNode){this.contexts.push(context.frameTreeNode);}\nthis.renderer=context.objectInstance.parent.pid;}else if(context instanceof TopLevelSnapshot){this.renderer=context.objectInstance.parent.pid;}else{throw new Error('Unknown context type');}\nthis.eventsOfInterest.addEventSet(this.contexts);this.url=context.url;}\nconst groupFunctions={none:rows=>rows,tree(rows,rowMap){const getParentRow=function(row){let pivot;row.contexts.forEach(function(context){if(context instanceof tr.e.chrome.FrameTreeNodeSnapshot){pivot=context;}});if(pivot&&pivot.parentContext){return rowMap[pivot.parentContext.guid];}\nreturn undefined;};const rootRows=[];rows.forEach(function(row){const parentRow=getParentRow(row);if(parentRow===undefined){rootRows.push(row);return;}\nif(parentRow.subRows===undefined){parentRow.subRows=[];}\nparentRow.subRows.push(row);});const aggregateAllDescendants=function(row){if(!row.subRows){if(getParentRow(row)){row.type='Subframe';}\nreturn row;}\nconst result=new Row();result.type='Frame Tree';result.renderer=row.renderer;result.url=row.url;result.subRows=[row];row.subRows.forEach(subRow=>result.subRows.push(aggregateAllDescendants(subRow)));result.subRows.forEach(function(subRow){result.time+=subRow.time;result.eventsOfInterest.addEventSet(subRow.eventsOfInterest);});row.subRows=undefined;return result;};return rootRows.map(rootRow=>aggregateAllDescendants(rootRow));}};Polymer({is:'tr-ui-e-s-frame-data-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.rangeOfInterest_=new tr.b.math.Range();this.$.table.showHeader=true;this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.tableColumns=this.createFrameDataTableColumns_();this.$.table.addEventListener('selection-changed',function(e){this.selectEventSet_(this.$.table.selectedTableRow.eventsOfInterest);}.bind(this));this.$.select.addEventListener('change',function(e){this.updateContents_();}.bind(this));},selectEventSet_(eventSet){const event=new tr.model.RequestSelectionChangeEvent();event.selection=eventSet;this.dispatchEvent(event);},createFrameDataTableColumns_(){return[{title:'Renderer',value:row=>row.renderer,cmp:(a,b)=>a.renderer-b.renderer},{title:'Type',value:row=>row.type},{title:'Time',value:row=>tr.v.ui.createScalarSpan(row.time,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument}),cmp:(a,b)=>a.time-b.time},{title:'URL',value:row=>row.url,cmp:(a,b)=>(a.url||'').localeCompare(b.url||'')}];},createFrameDataTableRows_(){if(!this.model_)return[];const rows=[];const rowMap={};for(const proc of Object.values(this.model_.processes)){proc.objects.iterObjectInstances(function(objectInstance){if(!(objectInstance instanceof BlameContextInstance)){return;}\nobjectInstance.snapshots.forEach(function(snapshot){if(rowMap[snapshot.guid])return;const row=new Row(snapshot);row.contexts.forEach(context=>rowMap[context.guid]=row);rows.push(row);},this);},this);}\nfor(const proc of Object.values(this.model_.processes)){for(const thread of Object.values(proc.threads)){thread.sliceGroup.iterSlicesInTimeRange(function(topLevelSlice){topLevelSlice.contexts.forEach(function(context){if(!context.snapshot.guid||!rowMap[context.snapshot.guid]){return;}\nconst row=rowMap[context.snapshot.guid];row.eventsOfInterest.push(topLevelSlice);row.time+=topLevelSlice.selfTime||0;});},this.currentRangeOfInterest.min,this.currentRangeOfInterest.max);}}\nconst select=this.$.select;const groupOption=select.options[select.selectedIndex].value;const groupFunction=groupFunctions[groupOption];return groupFunction(rows,rowMap);},updateContents_(){this.$.table.tableRows=this.createFrameDataTableRows_();this.$.table.rebuild();},supportsModel(m){if(!m){return{supported:false,reason:'No model available.'};}\nconst ans={supported:false};for(const proc of Object.values(m.processes)){proc.objects.iterObjectInstances(function(instance){if(instance instanceof BlameContextInstance){ans.supported=true;}});}\nif(!ans.supported){ans.reason='No frame data available';}\nreturn ans;},get currentRangeOfInterest(){if(this.rangeOfInterest_.isEmpty){return this.model_.bounds;}\nreturn this.rangeOfInterest_;},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;this.updateContents_();},get selection(){},set selection(_){},get textLabel(){return'Frame Data';},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-frame-data-side-panel');});});'use strict';Polymer({is:'tr-ui-e-s-input-latency-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.rangeOfInterest_=new tr.b.math.Range();this.frametimeType_=tr.model.helpers.IMPL_FRAMETIME_TYPE;this.latencyChart_=undefined;this.frametimeChart_=undefined;this.selectedProcessId_=undefined;this.mouseDownIndex_=undefined;this.curMouseIndex_=undefined;},get model(){return this.model_;},set model(model){this.model_=model;if(this.model_){this.modelHelper_=this.model_.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);}else{this.modelHelper_=undefined;}\nthis.updateToolbar_();this.updateContents_();},get frametimeType(){return this.frametimeType_;},set frametimeType(type){if(this.frametimeType_===type)return;this.frametimeType_=type;this.updateContents_();},get selectedProcessId(){return this.selectedProcessId_;},set selectedProcessId(process){if(this.selectedProcessId_===process)return;this.selectedProcessId_=process;this.updateContents_();},set selection(selection){if(this.latencyChart_===undefined)return;this.latencyChart_.brushedRange=selection.bounds;},setBrushedIndices(mouseDownIndex,curIndex){this.mouseDownIndex_=mouseDownIndex;this.curMouseIndex_=curIndex;this.updateBrushedRange_();},updateBrushedRange_(){if(this.latencyChart_===undefined)return;let r=new tr.b.math.Range();if(this.mouseDownIndex_===undefined){this.latencyChart_.brushedRange=r;return;}\nr=this.latencyChart_.computeBrushRangeFromIndices(this.mouseDownIndex_,this.curMouseIndex_);this.latencyChart_.brushedRange=r;let latencySlices=[];for(const thread of this.model_.getAllThreads()){for(const event of thread.getDescendantEvents()){if(event.title.indexOf('InputLatency:')===0){latencySlices.push(event);}}}\nlatencySlices=tr.model.helpers.getSlicesIntersectingRange(r,latencySlices);const event=new tr.model.RequestSelectionChangeEvent();event.selection=new tr.model.EventSet(latencySlices);this.latencyChart_.dispatchEvent(event);},registerMouseEventForLatencyChart_(){this.latencyChart_.addEventListener('item-mousedown',function(e){this.mouseDownIndex_=e.index;this.curMouseIndex_=e.index;this.updateBrushedRange_();}.bind(this));this.latencyChart_.addEventListener('item-mousemove',function(e){if(e.button===undefined)return;this.curMouseIndex_=e.index;this.updateBrushedRange_();}.bind(this));this.latencyChart_.addEventListener('item-mouseup',function(e){this.curMouseIndex=e.index;this.updateBrushedRange_();}.bind(this));},updateToolbar_(){const browserProcess=this.modelHelper_.browserProcess;const labels=[];if(browserProcess!==undefined){const labelStr='Browser: '+browserProcess.pid;labels.push({label:labelStr,value:browserProcess.pid});}\nfor(const rendererHelper of\nObject.values(this.modelHelper_.rendererHelpers)){const rendererProcess=rendererHelper.process;const labelStr='Renderer: '+rendererProcess.userFriendlyName;labels.push({label:labelStr,value:rendererProcess.userFriendlyName});}\nif(labels.length===0)return;this.selectedProcessId_=labels[0].value;const toolbarEl=this.$.toolbar;Polymer.dom(toolbarEl).appendChild(tr.ui.b.createSelector(this,'frametimeType','inputLatencySidePanel.frametimeType',this.frametimeType_,[{label:'Main Thread Frame Times',value:tr.model.helpers.MAIN_FRAMETIME_TYPE},{label:'Impl Thread Frame Times',value:tr.model.helpers.IMPL_FRAMETIME_TYPE}]));Polymer.dom(toolbarEl).appendChild(tr.ui.b.createSelector(this,'selectedProcessId','inputLatencySidePanel.selectedProcessId',this.selectedProcessId_,labels));},get currentRangeOfInterest(){if(this.rangeOfInterest_.isEmpty){return this.model_.bounds;}\nreturn this.rangeOfInterest_;},createLatencyLineChart(data,title,parentNode){const chart=new tr.ui.b.LineChart();Polymer.dom(parentNode).appendChild(chart);let width=600;if(document.body.clientWidth!==undefined){width=document.body.clientWidth*0.5;}\nchart.graphWidth=width;chart.chartTitle=title;chart.data=data;return chart;},updateContents_(){const resultArea=this.$.result_area;this.latencyChart_=undefined;this.frametimeChart_=undefined;Polymer.dom(resultArea).textContent='';if(this.modelHelper_===undefined)return;const rangeOfInterest=this.currentRangeOfInterest;let chromeProcess;if(this.modelHelper_.rendererHelpers[this.selectedProcessId_]){chromeProcess=this.modelHelper_.rendererHelpers[this.selectedProcessId_];}else{chromeProcess=this.modelHelper_.browserHelper;}\nconst frameEvents=chromeProcess.getFrameEventsInRange(this.frametimeType,rangeOfInterest);const frametimeData=tr.model.helpers.getFrametimeDataFromEvents(frameEvents);const averageFrametime=tr.b.math.Statistics.mean(frametimeData,d=>d.frametime);const latencyEvents=this.modelHelper_.browserHelper.getLatencyEventsInRange(rangeOfInterest);const latencyData=[];latencyEvents.forEach(function(event){if(event.inputLatency===undefined)return;latencyData.push({x:event.start,latency:event.inputLatency/1000});});const averageLatency=tr.b.math.Statistics.mean(latencyData,function(d){return d.latency;});const latencySummaryText=document.createElement('div');Polymer.dom(latencySummaryText).appendChild(tr.ui.b.createSpan({textContent:'Average Latency '+averageLatency+' ms',bold:true}));Polymer.dom(resultArea).appendChild(latencySummaryText);const frametimeSummaryText=document.createElement('div');Polymer.dom(frametimeSummaryText).appendChild(tr.ui.b.createSpan({textContent:'Average Frame Time '+averageFrametime+' ms',bold:true}));Polymer.dom(resultArea).appendChild(frametimeSummaryText);if(latencyData.length!==0){this.latencyChart_=this.createLatencyLineChart(latencyData,'Latency Over Time',resultArea);this.registerMouseEventForLatencyChart_();}\nif(frametimeData.length!==0){this.frametimeChart_=this.createLatencyLineChart(frametimeData,'Frame Times',resultArea);}},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;this.updateContents_();},supportsModel(m){if(m===undefined){return{supported:false,reason:'Unknown tracing model'};}\nif(!tr.model.helpers.ChromeModelHelper.supportsModel(m)){return{supported:false,reason:'No Chrome browser or renderer process found'};}\nconst modelHelper=m.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper.browserHelper&&modelHelper.browserHelper.hasLatencyEvents){return{supported:true};}\nreturn{supported:false,reason:'No InputLatency events trace. Consider enabling '+'benchmark\" and \"input\" category when recording the trace'};},get textLabel(){return'Input Latency';}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-input-latency-side-panel');});'use strict';tr.exportTo('tr.e.system_stats',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function SystemStatsSnapshot(objectInstance,ts,args){ObjectSnapshot.apply(this,arguments);this.objectInstance=objectInstance;this.ts=ts;this.args=args;this.stats_=args;}\nSystemStatsSnapshot.prototype={__proto__:ObjectSnapshot.prototype,initialize(){if(this.args.length===0){throw new Error('No system stats snapshot data.');}\nthis.stats_=this.args;},getStats(){return this.stats_;},setStats(stats){this.stats_=stats;}};ObjectSnapshot.subTypes.register(SystemStatsSnapshot,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsSnapshot,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const StackedBarsTrack=tr.ui.b.define('stacked-bars-track',tr.ui.tracks.Track);StackedBarsTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('stacked-bars-track');this.objectInstance_=null;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},addEventsToTrackMap(eventToTrackMap){const objectSnapshots=this.objectInstance_.snapshots;objectSnapshots.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onSnapshot(snapshot){selection.push(snapshot);}\nconst snapshots=this.objectInstance_.snapshots;const maxBounds=this.objectInstance_.parent.model.bounds.max;tr.b.iterateOverIntersectingIntervals(snapshots,function(x){return x.ts;},function(x,i){if(i===snapshots.length-1){if(snapshots.length===1){return maxBounds;}\nreturn snapshots[i].ts-snapshots[i-1].ts;}\nreturn snapshots[i+1].ts-snapshots[i].ts;},loWX,hiWX,onSnapshot);},addEventNearToProvidedEventToSelection(event,offset,selection){if(!(event instanceof tr.model.ObjectSnapshot)){throw new Error('Unrecognized event');}\nconst objectSnapshots=this.objectInstance_.snapshots;const index=objectSnapshots.indexOf(event);const newIndex=index+offset;if(newIndex>=0&&newIndex<objectSnapshots.length){selection.push(objectSnapshots[newIndex]);return true;}\nreturn false;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){const snapshot=tr.b.findClosestElementInSortedArray(this.objectInstance_.snapshots,function(x){return x.ts;},worldX,worldMaxDist);if(!snapshot)return;selection.push(snapshot);}};return{StackedBarsTrack,};});'use strict';tr.exportTo('tr.ui.e.system_stats',function(){const EventPresenter=tr.ui.b.EventPresenter;let statCount;const excludedStats={'meminfo':{'pswpin':0,'pswpout':0,'pgmajfault':0},'diskinfo':{'io':0,'io_time':0,'read_time':0,'reads':0,'reads_merged':0,'sectors_read':0,'sectors_written':0,'weighted_io_time':0,'write_time':0,'writes':0,'writes_merged':0},'swapinfo':{},'perfinfo':{'idle_time':0,'read_transfer_count':0,'write_transfer_count':0,'other_transfer_count':0,'read_operation_count':0,'write_operation_count':0,'other_operation_count':0,'pagefile_pages_written':0,'pagefile_pages_write_ios':0,'available_pages':0,'pages_read':0,'page_read_ios':0}};const SystemStatsInstanceTrack=tr.ui.b.define('tr-ui-e-system-stats-instance-track',tr.ui.tracks.StackedBarsTrack);const kPageSizeWindows=4096;SystemStatsInstanceTrack.prototype={__proto__:tr.ui.tracks.StackedBarsTrack.prototype,decorate(viewport){tr.ui.tracks.StackedBarsTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('tr-ui-e-system-stats-instance-track');this.objectInstance_=null;},set objectInstances(objectInstances){if(!objectInstances){this.objectInstance_=[];return;}\nif(objectInstances.length!==1){throw new Error('Bad object instance count.');}\nthis.objectInstance_=objectInstances[0];if(this.objectInstance_!==null){this.computeRates_(this.objectInstance_.snapshots);this.maxStats_=this.computeMaxStats_(this.objectInstance_.snapshots);}},computeRates_(snapshots){for(let i=0;i<snapshots.length;i++){const snapshot=snapshots[i];const stats=snapshot.getStats();let prevSnapshot;if(i===0){prevSnapshot=snapshots[0];}else{prevSnapshot=snapshots[i-1];}\nconst prevStats=prevSnapshot.getStats();let timeIntervalSeconds=(snapshot.ts-prevSnapshot.ts)/1000;if(timeIntervalSeconds===0){timeIntervalSeconds=1;}\nthis.computeRatesRecursive_(prevStats,stats,timeIntervalSeconds);}},computeRatesRecursive_(prevStats,stats,timeIntervalSeconds){for(const statName in stats){if(stats[statName]instanceof Object){this.computeRatesRecursive_(prevStats[statName],stats[statName],timeIntervalSeconds);}else{if(statName==='sectors_read'){stats.bytes_read_per_sec=(stats.sectors_read-\nprevStats.sectors_read)*512/timeIntervalSeconds;}\nif(statName==='sectors_written'){stats.bytes_written_per_sec=(stats.sectors_written-\nprevStats.sectors_written)*512/timeIntervalSeconds;}\nif(statName==='pgmajfault'){stats.pgmajfault_per_sec=(stats.pgmajfault-\nprevStats.pgmajfault)/timeIntervalSeconds;}\nif(statName==='pswpin'){stats.bytes_swpin_per_sec=(stats.pswpin-\nprevStats.pswpin)*1000/timeIntervalSeconds;}\nif(statName==='pswpout'){stats.bytes_swpout_per_sec=(stats.pswpout-\nprevStats.pswpout)*1000/timeIntervalSeconds;}\nif(statName==='idle_time'){const units=tr.b.convertUnit(100.,tr.b.UnitScale.TIME.NANO_SEC,tr.b.UnitScale.TIME.SEC);const idleTile=(stats.idle_time-prevStats.idle_time)*units;stats.idle_time_per_sec=idleTile/timeIntervalSeconds;}\nif(statName==='read_transfer_count'){const bytesRead=stats.read_transfer_count-\nprevStats.read_transfer_count;stats.bytes_read_per_sec=bytesRead/timeIntervalSeconds;}\nif(statName==='write_transfer_count'){const bytesWritten=stats.write_transfer_count-\nprevStats.write_transfer_count;stats.bytes_written_per_sec=bytesWritten/timeIntervalSeconds;}\nif(statName==='other_transfer_count'){const bytesTransfer=stats.other_transfer_count-\nprevStats.other_transfer_count;stats.bytes_other_per_sec=bytesTransfer/timeIntervalSeconds;}\nif(statName==='read_operation_count'){const readOperation=stats.read_operation_count-\nprevStats.read_operation_count;stats.read_operation_per_sec=readOperation/timeIntervalSeconds;}\nif(statName==='write_operation_count'){const writeOperation=stats.write_operation_count-\nprevStats.write_operation_count;stats.write_operation_per_sec=writeOperation/timeIntervalSeconds;}\nif(statName==='other_operation_count'){const otherOperation=stats.other_operation_count-\nprevStats.other_operation_count;stats.other_operation_per_sec=otherOperation/timeIntervalSeconds;}\nif(statName==='pagefile_pages_written'){const pageFileBytesWritten=(stats.pagefile_pages_written-\nprevStats.pagefile_pages_written)*kPageSizeWindows;stats.pagefile_bytes_written_per_sec=pageFileBytesWritten/timeIntervalSeconds;}\nif(statName==='pagefile_pages_write_ios'){const pagefileWriteOperation=stats.pagefile_pages_write_ios-\nprevStats.pagefile_pages_write_ios;stats.pagefile_write_operation_per_sec=pagefileWriteOperation/timeIntervalSeconds;}\nif(statName==='available_pages'){stats.available_pages_in_bytes=stats.available_pages*kPageSizeWindows;}\nif(statName==='pages_read'){const pagesBytesRead=(stats.pages_read-prevStats.pages_read)*kPageSizeWindows;stats.bytes_read_per_sec=pagesBytesRead/timeIntervalSeconds;}\nif(statName==='page_read_ios'){const pagesBytesReadOperations=stats.page_read_ios-prevStats.page_read_ios;stats.pagefile_write_operation_per_sec=pagesBytesReadOperations/timeIntervalSeconds;}}}},computeMaxStats_(snapshots){const maxStats={};statCount=0;for(let i=0;i<snapshots.length;i++){const snapshot=snapshots[i];const stats=snapshot.getStats();this.computeMaxStatsRecursive_(stats,maxStats,excludedStats);}\nreturn maxStats;},computeMaxStatsRecursive_(stats,maxStats,excludedStats){for(const statName in stats){if(stats[statName]instanceof Object){if(!(statName in maxStats)){maxStats[statName]={};}\nlet excludedNested;if(excludedStats&&statName in excludedStats){excludedNested=excludedStats[statName];}else{excludedNested=null;}\nthis.computeMaxStatsRecursive_(stats[statName],maxStats[statName],excludedNested);}else{if(excludedStats&&statName in excludedStats){continue;}\nif(!(statName in maxStats)){maxStats[statName]=0;statCount++;}\nif(stats[statName]>maxStats[statName]){maxStats[statName]=stats[statName];}}}},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawStatBars_(viewLWorld,viewRWorld);break;}},drawStatBars_(viewLWorld,viewRWorld){const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const width=bounds.width*pixelRatio;const height=(bounds.height*pixelRatio)/statCount;const vp=this.viewport.currentDisplayTransform;const maxStats=this.maxStats_;const objectSnapshots=this.objectInstance_.snapshots;let lowIndex=tr.b.findLowIndexInSortedArray(objectSnapshots,function(snapshot){return snapshot.ts;},viewLWorld);if(lowIndex>0)lowIndex-=1;for(let i=lowIndex;i<objectSnapshots.length;++i){const snapshot=objectSnapshots[i];const trace=snapshot.getStats();const currentY=height;const left=snapshot.ts;if(left>viewRWorld)break;let leftView=vp.xWorldToView(left);if(leftView<0)leftView=0;let right;if(i!==objectSnapshots.length-1){right=objectSnapshots[i+1].ts;}else{if(objectSnapshots.length>1){right=objectSnapshots[i].ts+(objectSnapshots[i].ts-\nobjectSnapshots[i-1].ts);}else{right=this.objectInstance_.parent.model.bounds.max;}}\nlet rightView=vp.xWorldToView(right);if(rightView>width){rightView=width;}\nleftView=Math.floor(leftView);rightView=Math.floor(rightView);this.drawStatBarsRecursive_(snapshot,leftView,rightView,height,trace,maxStats,currentY);if(i===lowIndex){this.drawStatNames_(leftView,height,currentY,'',maxStats);}}\nctx.lineWidth=1;},drawStatBarsRecursive_(snapshot,leftView,rightView,height,stats,maxStats,currentY){const ctx=this.context();for(const statName in maxStats){if(stats[statName]instanceof Object){currentY=this.drawStatBarsRecursive_(snapshot,leftView,rightView,height,stats[statName],maxStats[statName],currentY);}else{const maxStat=maxStats[statName];ctx.fillStyle=EventPresenter.getBarSnapshotColor(snapshot,Math.round(currentY/height));let barHeight;if(maxStat>0){barHeight=height*Math.max(stats[statName],0)/maxStat;}else{barHeight=0;}\nctx.fillRect(leftView,currentY-barHeight,Math.max(rightView-leftView,1),barHeight);currentY+=height;}}\nreturn currentY;},drawStatNames_(leftView,height,currentY,prefix,maxStats){const ctx=this.context();ctx.textAlign='end';ctx.font='12px Arial';ctx.fillStyle='#000000';for(const statName in maxStats){if(maxStats[statName]instanceof Object){currentY=this.drawStatNames_(leftView,height,currentY,statName,maxStats[statName]);}else{let fullname=statName;if(prefix!==''){fullname=prefix+' :: '+statName;}\nctx.fillText(fullname,leftView-10,currentY-height/4);currentY+=height;}}\nreturn currentY;}};tr.ui.tracks.ObjectInstanceTrack.register(SystemStatsInstanceTrack,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsInstanceTrack,};});'use strict';tr.exportTo('tr.ui.e.system_stats',function(){const SystemStatsSnapshotView=tr.ui.b.define('tr-ui-e-system-stats-snapshot-view',tr.ui.analysis.ObjectSnapshotView);SystemStatsSnapshotView.prototype={__proto__:tr.ui.analysis.ObjectSnapshotView.prototype,decorate(){Polymer.dom(this).classList.add('tr-ui-e-system-stats-snapshot-view');},updateContents(){const snapshot=this.objectSnapshot_;if(!snapshot||!snapshot.getStats()){Polymer.dom(this).textContent='No system stats snapshot found.';return;}\nPolymer.dom(this).textContent='';const stats=snapshot.getStats();Polymer.dom(this).appendChild(this.buildList_(stats));},isFloat(n){return typeof n==='number'&&n%1!==0;},buildList_(stats){const statList=document.createElement('ul');for(const statName in stats){const statText=document.createElement('li');Polymer.dom(statText).textContent=''+statName+': ';Polymer.dom(statList).appendChild(statText);if(stats[statName]instanceof Object){Polymer.dom(statList).appendChild(this.buildList_(stats[statName]));}else{if(this.isFloat(stats[statName])){Polymer.dom(statText).textContent+=stats[statName].toFixed(2);}else{Polymer.dom(statText).textContent+=stats[statName];}}}\nreturn statList;}};tr.ui.analysis.ObjectSnapshotView.register(SystemStatsSnapshotView,{typeName:'base::TraceEventSystemStatsMonitor::SystemStats'});return{SystemStatsSnapshotView,};});'use strict';tr.exportTo('tr.ui.e.v8',function(){const IGNORED_ENTRIES={match:full=>full.startsWith('*CODE_AGE_')};const INSTANCE_TYPE_GROUPS={FIXED_ARRAY_TYPE:{match:full=>full.startsWith('*FIXED_ARRAY_'),realEntry:'FIXED_ARRAY_TYPE',keyToName:key=>key.slice('*FIXED_ARRAY_'.length).slice(0,-('_SUB_TYPE'.length)),nameToKey:name=>'*FIXED_ARRAY_'+name+'_SUB_TYPE'},CODE_TYPE:{match:full=>full.startsWith('*CODE_'),realEntry:'CODE_TYPE',keyToName:key=>key.slice('*CODE_'.length),nameToKey:name=>'*CODE_'+name},JS_OBJECTS:{match:full=>full.startsWith('JS_'),keyToName:key=>key,nameToKey:name=>name},Strings:{match:full=>full.endsWith('STRING_TYPE'),keyToName:key=>key,nameToKey:name=>name},Maps:{match:full=>full.startsWith('MAP_')&&full.endsWith('_TYPE'),keyToName:key=>key,nameToKey:name=>name},DescriptorArrays:{match:full=>full.endsWith('DESCRIPTOR_ARRAY_TYPE'),keyToName:key=>key,nameToKey:name=>name}};const DIFF_COLOR={GREEN:'#64DD17',RED:'#D50000'};function computePercentage(valueA,valueB){if(valueA===0)return 0;return valueA/valueB*100;}\nclass DiffEntry{constructor(originalEntry,diffEntry){this.originalEntry_=originalEntry;this.diffEntry_=diffEntry;}\nget title(){return this.diffEntry_.title;}\nget overall(){return this.diffEntry_.overall;}\nget overAllocated(){return this.diffEntry_.overAllocated;}\nget count(){return this.diffEntry_.count;}\nget overallPercent(){return this.diffEntry_.overallPercent;}\nget overAllocatedPercent(){return this.diffEntry_.overAllocatedPercent;}\nget origin(){return this.originalEntry_;}\nget diff(){return this.diffEntry_;}\nget subRows(){return this.diffEntry_.subRows;}}\nclass Entry{constructor(title,count,overall,overAllocated,histogram,overAllocatedHistogram){this.title_=title;this.overall_=overall;this.count_=count;this.overAllocated_=overAllocated;this.histogram_=histogram;this.overAllocatedHistogram_=overAllocatedHistogram;this.bucketSize_=this.histogram_.length;this.overallPercent_=100;this.overAllocatedPercent_=100;}\nget title(){return this.title_;}\nget overall(){return this.overall_;}\nget count(){return this.count_;}\nget overAllocated(){return this.overAllocated_;}\nget histogram(){return this.histogram_;}\nget overAllocatedHistogram(){return this.overAllocatedHistogram_;}\nget bucketSize(){return this.bucketSize_;}\nget overallPercent(){return this.overallPercent_;}\nset overallPercent(value){this.overallPercent_=value;}\nget overAllocatedPercent(){return this.overAllocatedPercent_;}\nset overAllocatedPercent(value){this.overAllocatedPercent_=value;}\nsetFromObject(obj){this.count_=obj.count;this.overall_=obj.overall/1024;this.overAllocated_=obj.over_allocated/1024;this.histogram_=obj.histogram;this.overAllocatedHistogram_=obj.over_allocated_histogram;}\ndiff(other){const entry=new Entry(this.title_,other.count_-this.count,other.overall_-this.overall,other.overAllocated_-this.overAllocated,[],[]);entry.overallPercent=computePercentage(entry.overall,this.overall);entry.overAllocatedPercent=computePercentage(entry.overAllocated,this.overAllocated);return new DiffEntry(this,entry);}}\nclass GroupedEntry extends Entry{constructor(title,count,overall,overAllocated,histogram,overAllocatedHistogram){super(title,count,overall,overAllocated,histogram,overAllocatedHistogram);this.histogram_.fill(0);this.overAllocatedHistogram_.fill(0);this.entries_=new Map();}\nget title(){return this.title_;}\nset title(value){this.title_=value;}\nget subRows(){return Array.from(this.entries_.values());}\ngetEntryFromTitle(title){return this.entries_.get(title);}\nadd(entry){this.count_+=entry.count;this.overall_+=entry.overall;this.overAllocated_+=entry.overAllocated;if(this.bucketSize_===entry.bucketSize){for(let i=0;i<this.bucketSize_;++i){this.histogram_[i]+=entry.histogram[i];this.overAllocatedHistogram_[i]+=entry.overAllocatedHistogram[i];}}\nthis.entries_.set(entry.title,entry);}\naccumulateUnknown(title){let unknownCount=this.count_;let unknownOverall=this.overall_;let unknownOverAllocated=this.overAllocated_;const unknownHistogram=tr.b.deepCopy(this.histogram_);const unknownOverAllocatedHistogram=tr.b.deepCopy(this.overAllocatedHistogram_);for(const entry of this.entries_.values()){unknownCount-=entry.count;unknownOverall-=entry.overall;unknownOverAllocated-=entry.overAllocated;for(let i=0;i<this.bucketSize_;++i){unknownHistogram[i]-=entry.histogram[i];unknownOverAllocatedHistogram[i]-=entry.overAllocatedHistogram[i];}}\nunknownOverAllocated=unknownOverAllocated<0?0:unknownOverAllocated;this.entries_.set(title,new Entry(title,unknownCount,unknownOverall,unknownOverAllocated,unknownHistogram,unknownOverAllocatedHistogram));}\ncalculatePercentage(){for(const entry of this.entries_.values()){entry.overallPercent=computePercentage(entry.overall,this.overall_);entry.overAllocatedPercent=computePercentage(entry.overAllocated,this.overAllocated_);if(entry instanceof GroupedEntry)entry.calculatePercentage();}}\ndiff(other){let newTitle='';if(this.title_.startsWith('Isolate')){newTitle='Total';}else{newTitle=this.title_;}\nconst result=new GroupedEntry(newTitle,0,0,0,[],[]);for(const entry of this.entries_){const otherEntry=other.getEntryFromTitle(entry[0]);if(otherEntry===undefined)continue;result.add(entry[1].diff(otherEntry));}\nresult.overallPercent=computePercentage(result.overall,this.overall);result.overAllocatedPercent=computePercentage(result.overAllocated,this.overAllocated);return new DiffEntry(this,result);}}\nfunction createSelector(targetEl,defaultValue,items,callback){const selectorEl=document.createElement('select');selectorEl.addEventListener('change',callback.bind(targetEl));const defaultOptionEl=document.createElement('option');for(let i=0;i<items.length;i++){const item=items[i];const optionEl=document.createElement('option');Polymer.dom(optionEl).textContent=item.label;optionEl.targetPropertyValue=item.value;optionEl.item=item;Polymer.dom(selectorEl).appendChild(optionEl);}\nselectorEl.__defineGetter__('selectedValue',function(v){if(selectorEl.children[selectorEl.selectedIndex]===undefined){return undefined;}\nreturn selectorEl.children[selectorEl.selectedIndex].targetPropertyValue;});selectorEl.__defineGetter__('selectedItem',function(v){if(selectorEl.children[selectorEl.selectedIndex]===undefined){return undefined;}\nreturn selectorEl.children[selectorEl.selectedIndex].item;});selectorEl.__defineSetter__('selectedValue',function(v){for(let i=0;i<selectorEl.children.length;i++){const value=selectorEl.children[i].targetPropertyValue;if(value===v){const changed=selectorEl.selectedIndex!==i;if(changed){selectorEl.selectedIndex=i;callback();}\nreturn;}}\nthrow new Error('Not a valid value');});selectorEl.selectedIndex=-1;return selectorEl;}\nfunction plusMinus(value,toFixed=3){return(value>0?'+':'')+value.toFixed(toFixed);}\nfunction addArrow(value){if(value===0)return value;if(value===Number.NEGATIVE_INFINITY)return'\\u2193\\u221E';if(value===Number.POSITIVE_INFINITY)return'\\u2191\\u221E';return(value>0?'\\u2191':'\\u2193')+Math.abs(value.toFixed(3));}\nPolymer({is:'tr-ui-e-v8-gc-objects-stats-table',ready(){this.$.diffOption.style.display='none';this.isolateEntries_=[];this.selector1_=undefined;this.selector2_=undefined;},constructDiffTable_(table){this.$.diffTable.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.diffTable.tableColumns=[{title:'Component',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.title;return typeEl;},showExpandButtons:true},{title:'Overall Memory(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.overall.toFixed(3);return spanEl;},cmp(a,b){return a.origin.overall-b.origin.overall;}},{title:'diff(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.overall);if(row.overall>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overall<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overall-b.overall;}},{title:'diff(%)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=addArrow(row.overallPercent);if(row.overall>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overall<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Over Allocated Memory(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.overAllocated.toFixed(3);return spanEl;},cmp(a,b){return a.origin.overAllocated-b.origin.overAllocated;}},{title:'diff(KB)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.overAllocated);if(row.overAllocated>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overAllocated<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'diff(%)',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=addArrow(row.overAllocatedPercent);if(row.overAllocated>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.overAllocated<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'Count',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=row.origin.count;return spanEl;},cmp(a,b){return a.origin.count-b.origin.count;}},{title:'diff',value(row){const spanEl=tr.ui.b.createSpan();spanEl.innerText=plusMinus(row.count,0);if(row.count>0){spanEl.style.color=DIFF_COLOR.RED;}else if(row.count<0){spanEl.style.color=DIFF_COLOR.GREEN;}\nreturn spanEl;},cmp(a,b){return a.count-b.count;}},];},buildOptions_(){const items=[];for(const isolateEntry of this.isolateEntries_){items.push({label:isolateEntry.title,value:isolateEntry});}\nthis.$.diffOption.style.display='inline-block';this.selector1_=createSelector(this,'',items,this.diffOptionChanged_);Polymer.dom(this.$.diffOption).appendChild(this.selector1_);const spanEl=tr.ui.b.createSpan();spanEl.innerText=' VS ';Polymer.dom(this.$.diffOption).appendChild(spanEl);this.selector2_=createSelector(this,'',items,this.diffOptionChanged_);Polymer.dom(this.$.diffOption).appendChild(this.selector2_);},diffOptionChanged_(){const isolateEntry1=this.selector1_.selectedValue;const isolateEntry2=this.selector2_.selectedValue;if(isolateEntry1===undefined||isolateEntry2===undefined){return;}\nif(isolateEntry1===isolateEntry2){this.$.diffTable.tableRows=[];this.$.diffTable.rebuild();return;}\nthis.$.diffTable.tableRows=[isolateEntry1.diff(isolateEntry2)];this.$.diffTable.rebuild();},constructTable_(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.tableColumns=[{title:'Component',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.title;return typeEl;},showExpandButtons:true},{title:'Overall Memory (KB)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overall.toFixed(3);return typeEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Over Allocated Memory (KB)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overAllocated.toFixed(3);return typeEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}},{title:'Overall Count',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.count;return typeEl;},cmp(a,b){return a.count-b.count;}},{title:'Overall Memory Percent',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overallPercent.toFixed(3)+'%';return typeEl;},cmp(a,b){return a.overall-b.overall;}},{title:'Overall Allocated Memory Percent',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.overAllocatedPercent.toFixed(3)+'%';return typeEl;},cmp(a,b){return a.overAllocated-b.overAllocated;}}];this.$.table.sortColumnIndex=1;this.$.table.sortDescending=true;},buildSubEntry_(objects,groupEntry,keyToName){const typeGroup=INSTANCE_TYPE_GROUPS[groupEntry.title];for(const instanceType of typeGroup){const e=objects[instanceType];if(e===undefined)continue;delete objects[instanceType];let title=instanceType;if(keyToName!==undefined)title=keyToName(title);groupEntry.add(new Entry(title,e.count,e.overall/1024,e.over_allocated/1024,e.histogram,e.over_allocated_histogram));}},buildUnGroupedEntries_(objects,objectEntry,bucketSize){for(const title of Object.getOwnPropertyNames(objects)){const obj=objects[title];const groupedEntry=new GroupedEntry(title,0,0,0,new Array(bucketSize),new Array(bucketSize));groupedEntry.setFromObject(obj);objectEntry.add(groupedEntry);}},createGroupEntries_(groupEntries,objects,bucketSize){for(const groupName of Object.getOwnPropertyNames(INSTANCE_TYPE_GROUPS)){const groupEntry=new GroupedEntry(groupName,0,0,0,new Array(bucketSize),new Array(bucketSize));if(INSTANCE_TYPE_GROUPS[groupName].realEntry!==undefined){groupEntry.savedRealEntry=objects[INSTANCE_TYPE_GROUPS[groupName].realEntry];delete objects[INSTANCE_TYPE_GROUPS[groupName].realEntry];}\ngroupEntries[groupName]=groupEntry;}},buildGroupEntries_(groupEntries,objectEntry){for(const groupName of Object.getOwnPropertyNames(groupEntries)){const groupEntry=groupEntries[groupName];if(groupEntry.savedRealEntry!==undefined){groupEntry.setFromObject(groupEntry.savedRealEntry);groupEntry.accumulateUnknown('UNKNOWN');delete groupEntry.savedRealEntry;}\nobjectEntry.add(groupEntry);}},buildSubEntriesForGroups_(groupEntries,objects){for(const instanceType of Object.getOwnPropertyNames(objects)){if(IGNORED_ENTRIES.match(instanceType)){delete objects[instanceType];continue;}\nconst e=objects[instanceType];for(const name of Object.getOwnPropertyNames(INSTANCE_TYPE_GROUPS)){const group=INSTANCE_TYPE_GROUPS[name];if(group.match(instanceType)){groupEntries[name].add(new Entry(group.keyToName(instanceType),e.count,e.overall/1024,e.over_allocated/1024,e.histogram,e.over_allocated_histogram));delete objects[instanceType];}}}},build_(objects,objectEntry,bucketSize){delete objects.END;const groupEntries={};this.createGroupEntries_(groupEntries,objects,bucketSize);this.buildSubEntriesForGroups_(groupEntries,objects);this.buildGroupEntries_(groupEntries,objectEntry);this.buildUnGroupedEntries_(objects,objectEntry,bucketSize);},set selection(slices){slices.sortEvents(function(a,b){return b.start-a.start;});const previous=undefined;for(const slice of slices){if(!slice instanceof tr.e.v8.V8GCStatsThreadSlice)continue;const liveObjects=slice.liveObjects;const deadObjects=slice.deadObjects;const isolate=liveObjects.isolate;const isolateEntry=new GroupedEntry('Isolate_'+isolate+' at '+slice.start.toFixed(3)+' ms',0,0,0,[],[]);const liveEntry=new GroupedEntry('live objects',0,0,0,[],[]);const deadEntry=new GroupedEntry('dead objects',0,0,0,[],[]);const liveBucketSize=liveObjects.bucket_sizes.length;const deadBucketSize=deadObjects.bucket_sizes.length;this.build_(tr.b.deepCopy(liveObjects.type_data),liveEntry,liveBucketSize);isolateEntry.add(liveEntry);this.build_(tr.b.deepCopy(deadObjects.type_data),deadEntry,deadBucketSize);isolateEntry.add(deadEntry);isolateEntry.calculatePercentage();this.isolateEntries_.push(isolateEntry);}\nthis.updateTable_();if(slices.length>1){this.buildOptions_();this.constructDiffTable_();}},updateTable_(){this.constructTable_();this.$.table.tableRows=this.isolateEntries_;this.$.table.rebuild();},});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.gcObjectsStats.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view',tr.e.v8.V8GCStatsThreadSlice,{multi:true,title:'V8 GC Stats slices'});'use strict';tr.exportTo('tr.e.v8',function(){const IC_STATS_PROPERTIES=['type','category','scriptName','filePosition','state','isNative','map','propertiesMode','numberOfOwnProperties','instanceType'];class ICStatsEntry{constructor(obj){this.type_=obj.type;if(this.type_.includes('Store')){this.category_='Store';}else if(this.type_.includes('Load')){this.category_='Load';}\nthis.state_=obj.state;if(obj.functionName){this.functionName_=obj.optimized?'*':'~';this.functionName_+=obj.functionName.length===0?'(anonymous function)':obj.functionName;}\nthis.offset_=obj.offset;this.scriptName_=obj.scriptName?obj.scriptName:'unknown';this.isNative_=obj.scriptName&&obj.scriptName.includes('native');this.lineNum_=obj.lineNum?obj.lineNum:'unknown';this.filePosition_=this.scriptName_+':'+this.lineNum_;if(this.functionName_){this.filePosition_+=' '+this.functionName_+'+'+this.offset_;}\nthis.constructor_=obj.constructor?false:true;this.map_=obj.map;if(this.map_){this.propertiesMode_=obj.dict===1?'slow':'fast';}else{this.propertiesMode_='unknown';}\nthis.numberOfOwnProperties_=obj.own;this.instanceType_=obj.instanceType;this.key_=obj.key;}\nget type(){return this.type_;}\nget category(){return this.category_;}\nget state(){return this.state_;}\nget functionName(){return this.functionName_;}\nget offset(){return this.offset_;}\nget scriptName(){return this.scriptName_;}\nget isNative(){return this.isNative_;}\nget lineNumber(){return this.lineNum_;}\nget isConstructor(){return this.constructor_;}\nget map(){return this.map_;}\nget propertiesMode(){return this.propertiesMode_;}\nget numberOfOwnProperties(){return this.numberOfOwnProperties_;}\nget instanceType(){return this.instanceType_;}\nget filePosition(){return this.filePosition_;}}\nclass ICStatsEntryGroup{constructor(property,key){this.property_=property;this.key_=key;this.percentage_=0;this.entries_=[];this.subGroup_=undefined;}\nstatic groupBy(groups,entries,property){for(const entry of entries){const key=entry[property];let group=groups.get(key);if(!group){group=new ICStatsEntryGroup(property,key);groups.set(key,group);}\ngroup.add(entry);}\nfor(const group of groups.values()){group.percentage=group.length/entries.length;}}\nadd(entry){this.entries_.push(entry);}\ncreateSubGroup(){if(this.subGroup_)return this.subGroup_;this.subGroup_=new Map();for(const property of IC_STATS_PROPERTIES){if(property===this.property_)continue;const groups=new Map();this.subGroup_.set(property,groups);ICStatsEntryGroup.groupBy(groups,this.entries_,property);}\nreturn this.subGroup_;}\nget entries(){return this.entries_;}\nget key(){return this.key_;}\nget length(){return this.entries_.length;}\nget percentage(){return this.percentage_;}\nset percentage(value){this.percentage_=value;}}\nclass ICStatsCollection{constructor(){this.entries_=[];this.groupedEntries_=new Map();}\nadd(entry){this.entries_.push(entry);}\ngroupBy(property){if(this.groupedEntries_.has(property)){return Array.from(this.groupedEntries_.get(property).values());}\nconst groups=new Map();this.groupedEntries_.set(property,groups);ICStatsEntryGroup.groupBy(groups,this.entries_,property);return Array.from(groups.values());}\nget entries(){return this.entries_;}\nget length(){return this.entries_.length;}}\nreturn{IC_STATS_PROPERTIES,ICStatsEntry,ICStatsEntryGroup,ICStatsCollection,};});'use strict';tr.exportTo('tr.ui.e.v8',function(){const PROPERTIES=tr.e.v8.IC_STATS_PROPERTIES.map(x=>{return{label:x,value:x};});const ICStatsEntry=tr.e.v8.ICStatsEntry;const ICStatsEntryGroup=tr.e.v8.ICStatsEntryGroup;const ICStatsCollection=tr.e.v8.ICStatsCollection;Polymer({is:'tr-ui-e-v8-ic-stats-table',ready(){this.icStatsCollection_=new ICStatsCollection();this.groupKey_=PROPERTIES[0].value;this.selector_=tr.ui.b.createSelector(this,'groupKey','v8ICStatsGroupKey',this.groupKey_,PROPERTIES);Polymer.dom(this.$.groupOption).appendChild(this.selector_);},get groupKey(){return this.groupKey_;},set groupKey(key){this.groupKey_=key;if(this.icStatsCollection_.length===0)return;this.updateTable_(this.groupKey_);},constructTable_(table,groupKey){table.tableColumns=[{title:'',value:row=>{let expanded=false;const buttonEl=tr.ui.b.createButton('details',function(){const previousSibling=Polymer.dom(this).parentNode.parentNode;const parentNode=previousSibling.parentNode;if(expanded){const trEls=parentNode.getElementsByClassName('subTable');Array.from(trEls).map(x=>x.parentNode.removeChild(x));expanded=false;return;}\nexpanded=true;const subGroups=row.createSubGroup();const tr=document.createElement('tr');tr.classList.add('subTable');tr.appendChild(document.createElement('td'));const td=document.createElement('td');td.colSpan=3;for(const subGroup of subGroups){const property=subGroup[0];const all=Array.from(subGroup[1].values());const group=all.slice(0,20);const divEl=document.createElement('div');const spanEl=document.createElement('span');const subTableEl=document.createElement('tr-ui-b-table');spanEl.innerText=`Top 20 out of ${all.length}`;spanEl.style.fontWeight='bold';spanEl.style.fontSize='14px';divEl.appendChild(spanEl);this.constructTable_(subTableEl,property);subTableEl.tableRows=group;subTableEl.rebuild();divEl.appendChild(subTableEl);td.appendChild(divEl);}\ntr.appendChild(td);parentNode.insertBefore(tr,previousSibling.nextSibling);});return buttonEl;}},{title:'Percentage',value(row){const spanEl=document.createElement('span');spanEl.innerText=(row.percentage*100).toFixed(3)+'%';return spanEl;},cmp:(a,b)=>a.percentage-b.percentage},{title:'Count',value(row){const spanEl=document.createElement('span');spanEl.innerText=row.length;return spanEl;},cmp:(a,b)=>a.length-b.length},{title:groupKey,value(row){const spanEl=document.createElement('span');spanEl.innerText=row.key?row.key:'';return spanEl;}}];table.sortColumnIndex=1;table.sortDescending=true;},updateTable_(groupKey){this.constructTable_(this.$.table,groupKey);this.$.table.tableRows=this.icStatsCollection_.groupBy(groupKey);this.$.table.rebuild();},set selection(slices){for(const slice of slices){for(const icStatsObj of slice.icStats){const entry=new ICStatsEntry(icStatsObj);this.icStatsCollection_.add(entry);}}\nthis.$.total.innerText='Total items: '+this.icStatsCollection_.length;this.updateTable_(this.selector_.selectedValue);}});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.table.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view',tr.e.v8.V8ICStatsThreadSlice,{multi:true,title:'V8 IC stats slices'});'use strict';tr.exportTo('tr.ui.e.v8',function(){const codeSearchURL_='https://cs.chromium.org/search/?sq=package:chromium&type=cs&q=';function removeBlinkPrefix_(name){if(name.startsWith('Blink_'))name=name.substring(6);return name;}\nfunction handleCodeSearchForV8_(event){if(event.target.parentNode===undefined)return;let name=event.target.parentNode.entryName;if(name.startsWith('API_'))name=name.substring(4);const url=codeSearchURL_+encodeURIComponent(name)+'+file:src/v8/src';window.open(url,'_blank');}\nfunction handleCodeSearchForBlink_(event){if(event.target.parentNode===undefined)return;const name=event.target.parentNode.entryName;const url=codeSearchURL_+\nencodeURIComponent('RuntimeCallStats::CounterId::k'+name)+'+file:src/third_party/WebKit/|src/out/Debug/';window.open(url,'_blank');}\nfunction createCodeSearchEl_(handleCodeSearch){const codeSearchEl=document.createElement('span');codeSearchEl.innerText='?';codeSearchEl.style.float='right';codeSearchEl.style.borderRadius='5px';codeSearchEl.style.backgroundColor='#EEE';codeSearchEl.addEventListener('click',handleCodeSearch.bind(this));return codeSearchEl;}\nconst timeColumn_={title:'Time',value(row){const typeEl=document.createElement('span');typeEl.innerText=(row.time/1000.0).toFixed(3)+' ms';return typeEl;},width:'100px',cmp(a,b){return a.time-b.time;}};const countColumn_={title:'Count',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.count;return typeEl;},width:'100px',cmp(a,b){return a.count-b.count;}};function percentColumn_(title,totalTime){return{title,value(row){const typeEl=document.createElement('span');typeEl.innerText=(row.time/totalTime*100).toFixed(3)+'%';return typeEl;},width:'100px',cmp(a,b){return a.time-b.time;}};}\nfunction nameColumn_(handleCodeSearch,modifyName){return{title:'Name',value(row){const typeEl=document.createElement('span');let name=row.name;if(modifyName)name=modifyName(name);typeEl.innerText=name;if(!(row instanceof tr.e.v8.RuntimeStatsGroup)){typeEl.title='click ? for code search';typeEl.entryName=name;const codeSearchEl=createCodeSearchEl_(handleCodeSearch);typeEl.appendChild(codeSearchEl);}\nreturn typeEl;},width:'200px',showExpandButtons:true};}\nfunction initializeCommonOptions_(table){table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.sortColumnIndex=1;table.sortDescending=true;table.subRowsPropertyName='values';}\nPolymer({is:'tr-ui-e-v8-runtime-call-stats-table',ready(){this.table_=this.$.table;this.blink_rcs_table_=this.$.blink_rcs_table;this.totalTime_=0;},constructV8RCSTable_(totalTime){this.table_.tableColumns=[nameColumn_(handleCodeSearchForV8_),timeColumn_,countColumn_,percentColumn_('Percent',totalTime)];initializeCommonOptions_(this.table_);},constructBlinkRCSTable_(blinkCppTotalTime){this.blink_rcs_table_.tableColumns=[nameColumn_(handleCodeSearchForBlink_,removeBlinkPrefix_),timeColumn_,countColumn_,percentColumn_('Percent (of \\'Blink C++\\' + \\'API\\')',blinkCppTotalTime)];initializeCommonOptions_(this.blink_rcs_table_);},set slices(slices){const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(slices);if(runtimeGroupCollection.totalTime>0){this.$.v8_rcs_heading.textContent='V8 Runtime Call Stats';this.constructV8RCSTable_(runtimeGroupCollection.totalTime);this.table_.tableRows=runtimeGroupCollection.runtimeGroups;this.table_.rebuild();}\nconst blinkRCSGroupCollection=runtimeGroupCollection.blinkRCSGroupCollection;if(runtimeGroupCollection.blinkCppTotalTime>0&&blinkRCSGroupCollection.totalTime>0){this.$.blink_rcs_heading.textContent='Blink Runtime Call Stats';this.constructBlinkRCSTable_(runtimeGroupCollection.blinkCppTotalTime);this.blink_rcs_table_.tableRows=blinkRCSGroupCollection.runtimeGroups;this.blink_rcs_table_.rebuild();}}});return{};});'use strict';Polymer({is:'tr-ui-e-multi-v8-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.runtimeCallStats.slices=selection;this.$.content.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-multi-v8-thread-slice-sub-view',tr.e.v8.V8ThreadSlice,{multi:true,title:'V8 slices'});'use strict';Polymer({is:'tr-ui-e-single-v8-gc-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.gcObjectsStats.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-gc-stats-thread-slice-sub-view',tr.e.v8.V8GCStatsThreadSlice,{multi:false,title:'V8 GC stats slice'});'use strict';Polymer({is:'tr-ui-e-single-v8-ic-stats-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.table.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-ic-stats-thread-slice-sub-view',tr.e.v8.V8ICStatsThreadSlice,{multi:false,title:'V8 IC stats slice'});'use strict';Polymer({is:'tr-ui-e-single-v8-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.runtimeCallStats.slices=selection;this.$.content.selection=selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-e-single-v8-thread-slice-sub-view',tr.e.v8.V8ThreadSlice,{multi:false,title:'V8 slice'});'use strict';tr.exportTo('tr.ui.b',function(){function Row(title,data,groupingKeyFuncs,rowStatsConstructor){this.title=title;this.data_=data;if(groupingKeyFuncs===undefined){groupingKeyFuncs=[];}\nthis.groupingKeyFuncs_=groupingKeyFuncs;this.rowStatsConstructor_=rowStatsConstructor;this.subRowsBuilt_=false;this.subRows_=undefined;this.rowStats_=undefined;}\nRow.prototype={getCurrentGroupingKeyFunc_(){if(this.groupingKeyFuncs_.length===0)return undefined;return this.groupingKeyFuncs_[0];},get data(){return this.data_;},get rowStats(){if(this.rowStats_===undefined){this.rowStats_=new this.rowStatsConstructor_(this);}\nreturn this.rowStats_;},rebuildSubRowsIfNeeded_(){if(this.subRowsBuilt_)return;this.subRowsBuilt_=true;const groupingKeyFunc=this.getCurrentGroupingKeyFunc_();if(groupingKeyFunc===undefined){this.subRows_=undefined;return;}\nconst dataByKey={};let hasValues=false;this.data_.forEach(function(datum){const key=groupingKeyFunc(datum);hasValues=hasValues||(key!==undefined);if(dataByKey[key]===undefined){dataByKey[key]=[];}\ndataByKey[key].push(datum);});if(!hasValues){this.subRows_=undefined;return;}\nthis.subRows_=[];for(const key in dataByKey){const row=new Row(key,dataByKey[key],this.groupingKeyFuncs_.slice(1),this.rowStatsConstructor_);this.subRows_.push(row);}},get isExpanded(){return(this.subRows&&(this.subRows.length>0)&&(this.subRows.length<5));},get subRows(){this.rebuildSubRowsIfNeeded_();return this.subRows_;}};Polymer({is:'tr-ui-b-grouping-table',created(){this.dataToGroup_=undefined;this.groupBy_=undefined;this.rowStatsConstructor_=undefined;},get tableColumns(){return this.$.table.tableColumns;},set tableColumns(tableColumns){this.$.table.tableColumns=tableColumns;},get tableRows(){return this.$.table.tableRows;},get sortColumnIndex(){return this.$.table.sortColumnIndex;},set sortColumnIndex(sortColumnIndex){this.$.table.sortColumnIndex=sortColumnIndex;},get sortDescending(){return this.$.table.sortDescending;},set sortDescending(sortDescending){this.$.table.sortDescending=sortDescending;},get selectionMode(){return this.$.table.selectionMode;},set selectionMode(selectionMode){this.$.table.selectionMode=selectionMode;},get rowHighlightStyle(){return this.$.table.rowHighlightStyle;},set rowHighlightStyle(rowHighlightStyle){this.$.table.rowHighlightStyle=rowHighlightStyle;},get cellHighlightStyle(){return this.$.table.cellHighlightStyle;},set cellHighlightStyle(cellHighlightStyle){this.$.table.cellHighlightStyle=cellHighlightStyle;},get selectedColumnIndex(){return this.$.table.selectedColumnIndex;},set selectedColumnIndex(selectedColumnIndex){this.$.table.selectedColumnIndex=selectedColumnIndex;},get selectedTableRow(){return this.$.table.selectedTableRow;},set selectedTableRow(selectedTableRow){this.$.table.selectedTableRow=selectedTableRow;},get groupBy(){return this.groupBy_;},set groupBy(groupBy){this.groupBy_=groupBy;this.updateContents_();},get dataToGroup(){return this.dataToGroup_;},set dataToGroup(dataToGroup){this.dataToGroup_=dataToGroup;this.updateContents_();},get rowStatsConstructor(){return this.rowStatsConstructor_;},set rowStatsConstructor(rowStatsConstructor){this.rowStatsConstructor_=rowStatsConstructor;this.updateContents_();},rebuild(){this.$.table.rebuild();},updateContents_(){const groupBy=this.groupBy_||[];const dataToGroup=this.dataToGroup_||[];const rowStatsConstructor=this.rowStatsConstructor_||function(){};const superRow=new Row('',dataToGroup,groupBy,rowStatsConstructor);this.$.table.tableRows=superRow.subRows||[];}});return{};});'use strict';tr.exportTo('tr.ui.b',function(){const THIS_DOC=document.currentScript.ownerDocument;Polymer({is:'tr-ui-b-grouping-table-groupby-picker-group',created(){this.picker_=undefined;this.group_=undefined;},get picker(){return this.picker_;},set picker(picker){this.picker_=picker;},get group(){return this.group_;},set group(g){this.group_=g;this.$.label.textContent=g.label;},get enabled(){return this.$.enabled.checked;},set enabled(enabled){this.$.enabled.checked=enabled;if(!this.enabled){this.$.left.style.display='none';this.$.right.style.display='none';}},set isFirst(isFirst){this.$.left.style.display=(!this.enabled||isFirst)?'none':'inline';},set isLast(isLast){this.$.right.style.display=(!this.enabled||isLast)?'none':'inline';},moveLeft_(){this.picker.moveLeft_(this);},moveRight_(){this.picker.moveRight_(this);},onEnableChanged_(){if(!this.enabled){this.$.left.style.display='none';this.$.right.style.display='none';}\nthis.picker.onEnableChanged_(this);}});Polymer({is:'tr-ui-b-grouping-table-groupby-picker',created(){this.settingsKey_=undefined;},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){this.settingsKey_=settingsKey;if(this.$.container.children.length){this.restoreSetting_();}},restoreSetting_(){if(this.settingsKey_===undefined)return;this.currentGroupKeys=tr.b.Settings.get(this.settingsKey_,this.currentGroupKeys);},get possibleGroups(){return Array.from(this.$.container.children).map(groupEl=>groupEl.group);},set possibleGroups(possibleGroups){Polymer.dom(this.$.container).textContent='';for(let i=0;i<possibleGroups.length;++i){const groupEl=document.createElement('tr-ui-b-grouping-table-groupby-picker-group');groupEl.picker=this;groupEl.group=possibleGroups[i];Polymer.dom(this.$.container).appendChild(groupEl);}\nthis.restoreSetting_();this.updateFirstLast_();},updateFirstLast_(){const groupEls=Array.from(this.$.container.children);const enabledGroupEls=groupEls.filter(el=>el.enabled);for(let i=0;i<enabledGroupEls.length;++i){enabledGroupEls[i].isFirst=i===0;enabledGroupEls[i].isLast=i===enabledGroupEls.length-1;}},get currentGroupKeys(){return this.currentGroups.map(group=>group.key);},get currentGroups(){const groups=[];for(const groupEl of Array.from(this.$.container.children)){if(groupEl.enabled){groups.push(groupEl.group);}}\nreturn groups;},set currentGroupKeys(newKeys){if(!tr.b.compareArrays(this.currentGroupKeys,newKeys,(x,y)=>x.localeCompare(y))){return;}\nconst possibleGroups=new Map();for(const group of this.possibleGroups){possibleGroups.set(group.key,group);}\nconst groupEls=this.$.container.children;let i=0;for(i=0;i<newKeys.length;++i){const group=possibleGroups.get(newKeys[i]);if(group===undefined){newKeys.splice(i,1);--i;continue;}\ngroupEls[i].group=group;groupEls[i].enabled=true;possibleGroups.delete(newKeys[i]);}\nfor(const group of possibleGroups.values()){groupEls[i].group=group;groupEls[i].enabled=false;++i;}\nthis.updateFirstLast_();this.onCurrentGroupsChanged_();},moveLeft_(groupEl){const reference=groupEl.previousSibling;Polymer.dom(this.$.container).removeChild(groupEl);Polymer.dom(this.$.container).insertBefore(groupEl,reference);this.updateFirstLast_();if(groupEl.enabled){this.onCurrentGroupsChanged_();}},moveRight_(groupEl){const reference=groupEl.nextSibling.nextSibling;Polymer.dom(this.$.container).removeChild(groupEl);if(reference){Polymer.dom(this.$.container).insertBefore(groupEl,reference);}else{Polymer.dom(this.$.container).appendChild(groupEl);}\nthis.updateFirstLast_();if(groupEl.enabled){this.onCurrentGroupsChanged_();}},onCurrentGroupsChanged_(){this.dispatchEvent(new tr.b.Event('current-groups-changed'));tr.b.Settings.set(this.settingsKey_,this.currentGroupKeys);},onEnableChanged_(groupEl){this.updateFirstLast_();this.onCurrentGroupsChanged_();}});return{};});'use strict';(function(){Polymer({is:'tr-ui-sp-file-size-stats-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.selection_=new tr.model.EventSet();this.$.picker.settingsKey='tr-ui-sp-file-size-stats-side-panel-picker';this.$.picker.possibleGroups=[{key:'phase',label:'Event Type',dataFn(eventStat){return eventStat.phase;}},{key:'category',label:'Category',dataFn(eventStat){return eventStat.category;}},{key:'title',label:'Title',dataFn(eventStat){return eventStat.title;}}];if(this.$.picker.currentGroupKeys.length===0){this.$.picker.currentGroupKeys=['phase','title'];}\nthis.$.picker.addEventListener('current-groups-changed',this.updateContents_.bind(this));},get textLabel(){return'File Size Stats';},supportsModel(m){if(!m){return{supported:false,reason:'No stats were collected for this file.'};}\nif(m.stats.allTraceEventStats.length===0){return{supported:false,reason:'No stats were collected for this file.'};}\nreturn{supported:true};},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(rangeOfInterest){this.rangeOfInterest_=rangeOfInterest;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;},createColumns_(stats){const columns=[{title:'Title',value(row){const titleEl=document.createElement('span');Polymer.dom(titleEl).textContent=row.title;titleEl.style.textOverflow='ellipsis';return titleEl;},cmp(a,b){return a.title.localeCompare(b.title);},width:'400px'},{title:'Num Events',align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,value(row){return row.rowStats.numEvents;},cmp(a,b){return a.rowStats.numEvents-b.rowStats.numEvents;},width:'80px'}];if(stats&&stats.hasEventSizesinBytes){columns.push({title:'Bytes',value(row){const value=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes,row.rowStats.totalEventSizeinBytes);const spanEl=tr.v.ui.createScalarSpan(value);return spanEl;},cmp(a,b){return a.rowStats.totalEventSizeinBytes-\nb.rowStats.totalEventSizeinBytes;},width:'80px'});}\nreturn columns;},updateContents_(){const table=this.$.table;const columns=this.createColumns_(this.model.stats);table.rowStatsConstructor=function ModelStatsRowStats(row){const sum=tr.b.math.Statistics.sum(row.data,function(x){return x.numEvents;});const totalEventSizeinBytes=tr.b.math.Statistics.sum(row.data,x=>x.totalEventSizeinBytes);return{numEvents:sum,totalEventSizeinBytes};};table.tableColumns=columns;table.sortColumnIndex=1;table.sortDescending=true;table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.groupBy=this.$.picker.currentGroups.map(function(group){return group.dataFn;});if(!this.model){table.dataToGroup=[];}else{table.dataToGroup=this.model.stats.allTraceEventStats;}\nthis.$.table.rebuild();}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-sp-file-size-stats-side-panel');});})();'use strict';tr.exportTo('tr.mre',function(){function Failure(job,functionHandleString,traceCanonicalUrl,failureTypeName,description,stack){this.job=job;this.functionHandleString=functionHandleString;this.traceCanonicalUrl=traceCanonicalUrl;this.failureTypeName=failureTypeName;this.description=description;this.stack=stack;}\nFailure.prototype={asDict(){return{function_handle_string:this.functionHandleString,trace_canonical_url:this.traceCanonicalUrl,type:this.failureTypeName,description:this.description,stack:this.stack};}};Failure.fromDict=function(failureDict){return new Failure(undefined,failureDict.function_handle_string,failureDict.trace_canonical_url,failureDict.type,failureDict.description,failureDict.stack);};return{Failure,};});'use strict';tr.exportTo('tr.mre',function(){const FunctionRegistry={allFunctions_:[],allFunctionsByName_:{},get allFunctions(){return this.allFunctions_;},get allFunctionsByName(){return this.allFunctionsByName_;}};FunctionRegistry.getFunction=function(name){return this.allFunctionsByName_[name];};FunctionRegistry.register=function(func){if(func.name===''){throw new Error('Registered functions must not be anonymous');}\nif(this.allFunctionsByName[func.name]!==undefined){throw new Error('Function named '+func.name+'is already registered.');}\nthis.allFunctionsByName[func.name]=func;this.allFunctions.push(func);};function ModuleToLoad(href,filename){if((href!==undefined)?(filename!==undefined):(filename===undefined)){throw new Error('ModuleToLoad must specify exactly one of href or '+'filename');}\nthis.href=href;this.filename=filename;}\nModuleToLoad.prototype={asDict(){if(this.href!==undefined){return{'href':this.href};}\nreturn{'filename':this.filename};},toString(){if(this.href!==undefined){return'ModuleToLoad(href=\"'+this.href+'\")';}\nreturn'ModuleToLoad(filename=\"'+this.filename+'\")';}};ModuleToLoad.fromDict=function(moduleDict){return new ModuleToLoad(moduleDict.href,moduleDict.filename);};function FunctionHandle(modulesToLoad,functionName,opt_options){if(!(modulesToLoad instanceof Array)){throw new Error('modulesToLoad in FunctionHandle must be an array');}\nif(typeof(functionName)!=='string'){throw new Error('functionName in FunctionHandle must be a string');}\nthis.modulesToLoad=modulesToLoad;this.functionName=functionName;this.options_=opt_options;}\nFunctionHandle.prototype={get options(){return this.options_;},asDict(){return{'modules_to_load':this.modulesToLoad.map(function(m){return m.asDict();}),'function_name':this.functionName,'options':this.options_};},asUserFriendlyString(){const parts=this.modulesToLoad.map(mtl=>mtl.filename);parts.push(this.functionName);parts.push(JSON.stringify(this.options_));return parts.join(',');},hasHrefs(){for(const module in this.modulesToLoad){if(this.modulesToLoad[module].href!==undefined){return true;}}\nreturn false;},load(){if(this.hasHrefs()){const err=new Error('FunctionHandle named '+this.functionName+' specifies hrefs, which cannot be loaded.');err.name='FunctionLoadingError';throw err;}\nfor(const module in this.modulesToLoad){const filename=this.modulesToLoad[module].filename;try{HTMLImportsLoader.loadHTMLFile(filename);}catch(err){err.name='FunctionLoadingError';throw err;}}\nconst func=FunctionRegistry.getFunction(this.functionName);if(func===undefined){const err=new Error('No registered function named '+this.functionName);err.name='FunctionNotDefinedError';throw err;}\nreturn func;},toString(){const modulesToLoadStr=this.modulesToLoad.map(function(module){return module.toString();});return'FunctionHandle(modulesToLoad=['+modulesToLoadStr+'], '+'functionName=\"'+this.functionName+'\", options=\"'+\nJSON.stringify(this.options_)+'\")';}};FunctionHandle.loadFromFilename_=function(filename){try{const numFunctionsBefore=FunctionRegistry.allFunctions.length;HTMLImportsLoader.loadHTMLFile(filename);}catch(err){err.name='FunctionLoadingError';throw err;}\nconst numFunctionsNow=FunctionRegistry.allFunctions.length;if(numFunctionsNow!==(numFunctionsBefore+1)){const err=new Error(filename+' didn\\'t call FunctionRegistry.register');err.name='FunctionNotDefinedError';throw err;}\nreturn FunctionRegistry.allFunctions[numFunctionsNow-1];};FunctionHandle.fromDict=function(handleDict){const options=handleDict.options;let modulesToLoad;if(handleDict.modules_to_load!==undefined){modulesToLoad=handleDict.modules_to_load.map(function(module){return ModuleToLoad.fromDict(module);});}\nreturn new FunctionHandle(modulesToLoad,handleDict.function_name,options);};return{FunctionHandle,ModuleToLoad,FunctionRegistry,};});'use strict';tr.exportTo('tr.metrics',function(){function runMetrics(model,options,addFailureCb){if(options===undefined){throw new Error('Options are required.');}\nconst metricNames=options.metrics;if(!metricNames){throw new Error('Metric names should be specified.');}\nconst allMetricsStart=new Date();const durationBreakdown=new tr.v.d.Breakdown();const categories=getTraceCategories(model);const histograms=new tr.v.HistogramSet();histograms.createHistogram('trace_import_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,model.stats.traceImportDurationMs,{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(1e-3,1e5,30),description:'Duration that trace viewer required to import the trace',summaryOptions:tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS,});for(const metricName of metricNames){const metricStart=new Date();const metric=tr.metrics.MetricRegistry.findTypeInfoWithName(metricName);if(metric===undefined){throw new Error(`\"${metricName}\" is not a registered metric.`);}\nvalidateTraceCategories(metric.metadata.requiredCategories,categories);try{metric.constructor(histograms,model,options);}catch(e){const err=tr.b.normalizeException(e);addFailureCb(new tr.mre.Failure(undefined,'metricMapFunction',model.canonicalUrl,err.typeName,err.message,err.stack));}\nconst metricMs=new Date()-metricStart;histograms.createHistogram(metricName+'_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[metricMs]);durationBreakdown.set(metricName,metricMs);}\nvalidateDiagnosticNames(histograms);const allMetricsMs=new Date()-allMetricsStart+\nmodel.stats.traceImportDurationMs;durationBreakdown.set('traceImport',model.stats.traceImportDurationMs);durationBreakdown.set('other',allMetricsMs-tr.b.math.Statistics.sum(durationBreakdown,([metricName,metricMs])=>metricMs));const breakdownNames=tr.v.d.RelatedNameMap.fromEntries(new Map(metricNames.map(metricName=>[metricName,metricName+'_duration'])));breakdownNames.set('traceImport','trace_import_duration');histograms.createHistogram('metrics_duration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[{value:allMetricsMs,diagnostics:{breakdown:durationBreakdown},},],{diagnostics:{breakdown:breakdownNames},});return histograms;}\nfunction getTraceCategories(model){for(const metadata of model.metadata){let config;if(metadata.name==='TraceConfig'&&metadata.value){config=metadata.value;}\nif(metadata.name==='metadata'&&metadata.value&&metadata.value['trace-config']&&metadata.value['trace-config']!=='__stripped__'){config=JSON.parse(metadata.value['trace-config']);}\nif(config){return{excluded:config.excluded_categories||[],included:config.included_categories||[],};}}}\nfunction validateTraceCategories(requiredCategories,categories){if(!requiredCategories)return;if(!categories)throw new Error('Missing trace config metadata');for(const cat of requiredCategories){const isDisabledByDefault=(cat.indexOf('disabled-by-default')===0);let missing=false;if(isDisabledByDefault){if(!categories.included.includes(cat)){missing=true;}}else if(categories.excluded.includes(cat)){missing=true;}\nif(missing){throw new Error(`Trace is missing required category \"${cat}\"`);}}}\nfunction validateDiagnosticNames(histograms){for(const hist of histograms){for(const name of hist.diagnostics.keys()){if(tr.v.d.RESERVED_NAMES_SET.has(name)){throw new Error(`Illegal diagnostic name \"${name}\" on Histogram \"${hist.name}\"`);}}}}\nfunction addTelemetryInfo(histograms,model){for(const metadata of model.metadata){if(!metadata.value||!metadata.value.telemetry)continue;for(const[name,value]of Object.entries(metadata.value.telemetry)){const type=tr.v.d.RESERVED_NAMES_TO_TYPES.get(name);if(type===undefined){throw new Error(`Unexpected telemetry.${name}`);}\nhistograms.addSharedDiagnosticToAllHistograms(name,new type(value));}}}\nfunction metricMapFunction(result,model,options){const histograms=runMetrics(model,options,result.addFailure.bind(result));addTelemetryInfo(histograms,model);if(model.canonicalUrl!==undefined){const info=tr.v.d.RESERVED_INFOS.TRACE_URLS;histograms.addSharedDiagnosticToAllHistograms(info.name,new info.type([model.canonicalUrl]));}\nresult.addPair('histograms',histograms.asDicts());const scalarDicts=[];for(const value of histograms){for(const[statName,scalar]of value.statisticsScalars){scalarDicts.push({name:value.name+'_'+statName,numeric:scalar.asDict(),description:value.description,});}}\nresult.addPair('scalars',scalarDicts);}\ntr.mre.FunctionRegistry.register(metricMapFunction);return{metricMapFunction,runMetrics,};});'use strict';tr.exportTo('tr.mre',function(){class MreResult{constructor(failures,pairs){if(failures===undefined){failures=[];}\nif(pairs===undefined){pairs={};}\nthis.failures=failures;this.pairs=pairs;}\naddFailure(failure){this.failures.push(failure);}\naddPair(key,value){if(key in this.pairs){throw new Error('Key '+key+' already exists in result.');}\nthis.pairs[key]=value;}\nasDict(){const d={pairs:this.pairs};if(this.failures){d.failures=this.failures.map(function(f){return f.asDict();});}\nreturn d;}\nhadFailures(){return this.failures.length>0;}\nstatic fromDict(resultDict){const failures=(resultDict.failures!==undefined)?resultDict.failures.map(tr.mre.Failure.fromDict):undefined;const pairs=resultDict.pairs;return new MreResult(failures,pairs);}}\nreturn{MreResult,};});'use strict';tr.exportTo('tr.ui',function(){class NullBrushingStateController extends tr.c.BrushingStateController{constructor(){super(undefined);this.parentController=undefined;}\ndispatchChangeEvent_(){if(this.parentController)this.parentController.dispatchChangeEvent_();}\nget model(){if(!this.parentController)return undefined;return this.parentController.model;}\nget trackView(){if(!this.parentController)return undefined;return this.parentController.trackView;}\nget viewport(){if(!this.parentController)return undefined;return this.parentController.viewport;}\nget historyEnabled(){if(!this.parentController)return undefined;return this.parentController.historyEnabled;}\nset historyEnabled(historyEnabled){if(this.parentController){this.parentController.historyEnabled=historyEnabled;}}\nmodelWillChange(){if(this.parentController)this.parentController.modelWillChange();}\nmodelDidChange(){if(this.parentController)this.parentController.modelDidChange();}\nonUserInitiatedSelectionChange_(){if(this.parentController){this.parentController.onUserInitiatedSelectionChange_();}}\nonPopState_(e){if(this.parentController)this.parentController.onPopState_(e);}\nget selection(){if(!this.parentController)return undefined;return this.parentController.selection;}\nget findMatches(){if(!this.parentController)return undefined;return this.parentController.findMatches;}\nget selectionOfInterest(){if(!this.parentController)return undefined;return this.parentController.selectionOfInterest;}\nget currentBrushingState(){if(!this.parentController)return undefined;return this.parentController.currentBrushingState;}\nset currentBrushingState(newBrushingState){if(this.parentController){this.parentController.currentBrushingState=newBrushingState;}}\naddAllEventsMatchingFilterToSelectionAsTask(filter,selection){if(this.parentController){this.parentController.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);}}\nfindTextChangedTo(allPossibleMatches){if(this.parentController){this.parentController.findTextChangedTo(allPossibleMatches);}}\nfindFocusChangedTo(currentFocus){if(this.parentController){this.parentController.findFocusChangedTo(currentFocus);}}\nfindTextCleared(){if(this.parentController){this.parentController.findTextCleared();}}\nuiStateFromString(string){if(this.parentController){this.parentController.uiStateFromString(string);}}\nnavToPosition(uiState,showNavLine){if(this.parentController){this.parentController.navToPosition(uiState,showNavLine);}}\nchangeSelectionFromTimeline(selection){if(this.parentController){this.parentController.changeSelectionFromTimeline(selection);}}\nshowScriptControlSelection(selection){if(this.parentController){this.parentController.showScriptControlSelection(selection);}}\nchangeSelectionFromRequestSelectionChangeEvent(selection){if(this.parentController){this.parentController.changeSelectionFromRequestSelectionChangeEvent(selection);}}\nchangeAnalysisViewRelatedEvents(eventSet){if(this.parentController&&(eventSet instanceof tr.model.EventSet)){this.parentController.changeAnalysisViewRelatedEvents(eventSet);}}\nchangeAnalysisLinkHoveredEvents(eventSet){if(this.parentController&&(eventSet instanceof tr.model.EventSet)){this.parentController.changeAnalysisLinkHoveredEvents(eventSet);}}\ngetViewSpecificBrushingState(viewId){if(this.parentController){this.parentController.getViewSpecificBrushingState(viewId);}}\nchangeViewSpecificBrushingState(viewId,newState){if(this.parentController){this.parentController.changeViewSpecificBrushingState(viewId,newState);}}}\nreturn{NullBrushingStateController,};});'use strict';tr.exportTo('tr.v',function(){const IGNORE_GROUPING_KEYS=['name','storyTags','testPath',];class CSVBuilder{constructor(histograms){this.histograms_=histograms;this.table_=[];this.statisticsNames_=new Set();this.groupings_=[];}\nbuild(){this.prepare_();this.buildHeader_();this.buildTable_();}\nprepare_(){for(const[key,grouping]of tr.v.HistogramGrouping.BY_KEY){if(IGNORE_GROUPING_KEYS.includes(key))continue;this.groupings_.push(grouping);}\nthis.groupings_.push(new tr.v.GenericSetGrouping(tr.v.d.RESERVED_NAMES.TRACE_URLS));this.groupings_.sort((a,b)=>a.key.localeCompare(b.key));for(const hist of this.histograms_){for(const name of hist.statisticsNames){this.statisticsNames_.add(name);}}\nthis.statisticsNames_=Array.from(this.statisticsNames_);this.statisticsNames_.sort();}\nbuildHeader_(){const header=['name','unit'];for(const name of this.statisticsNames_){header.push(name);}\nfor(const grouping of this.groupings_){header.push(grouping.key);}\nthis.table_.push(header);}\nbuildTable_(){for(const hist of this.histograms_){const row=[hist.name,hist.unit.unitString];this.table_.push(row);for(const name of this.statisticsNames_){const stat=hist.getStatisticScalar(name);if(stat){row.push(stat.value);}else{row.push('');}}\nfor(const grouping of this.groupings_){row.push(grouping.callback(hist));}}}\ntoString(){let str='';for(const row of this.table_){for(let i=0;i<row.length;++i){if(i>0){str+=',';}\nlet cell=''+row[i];cell=cell.replace(/\\n/g,' ');if(cell.indexOf(',')>=0||cell.indexOf('\"')>=0){cell='\"'+cell.replace(/\"/g,'\"\"')+'\"';}\nstr+=cell;}\nstr+='\\n';}\nreturn str;}}\nreturn{CSVBuilder,};});'use strict';tr.exportTo('tr.v',function(){const getDisplayLabel=tr.v.HistogramGrouping.DISPLAY_LABEL.callback;const DEFAULT_POSSIBLE_GROUPS=[];const EXCLUDED_GROUPING_KEYS=[tr.v.HistogramGrouping.DISPLAY_LABEL.key,];for(const group of tr.v.HistogramGrouping.BY_KEY.values()){if(EXCLUDED_GROUPING_KEYS.includes(group.key))continue;DEFAULT_POSSIBLE_GROUPS.push(group);}\nclass HistogramParameterCollector{constructor(){this.statisticNames_=new Set(['avg']);this.labelsToStartTimes_=new Map();this.keysToGroupings_=new Map(DEFAULT_POSSIBLE_GROUPS.map(g=>[g.key,g]));this.keysToValues_=new Map(DEFAULT_POSSIBLE_GROUPS.map(g=>[g.key,new Set()]));this.keysToValues_.delete(tr.v.HistogramGrouping.HISTOGRAM_NAME.key);}\nprocess(histograms){const allStoryTags=new Set();let maxSampleCount=0;for(const hist of histograms){maxSampleCount=Math.max(maxSampleCount,hist.numValues);for(const statName of hist.statisticsNames){this.statisticNames_.add(statName);}\nlet startTime=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);if(startTime!==undefined)startTime=startTime.minDate.getTime();const displayLabel=getDisplayLabel(hist);if(this.labelsToStartTimes_.has(displayLabel)){startTime=Math.min(startTime,this.labelsToStartTimes_.get(displayLabel));}\nthis.labelsToStartTimes_.set(displayLabel,startTime);for(const[groupingKey,values]of this.keysToValues_){const grouping=this.keysToGroupings_.get(groupingKey);const value=grouping.callback(hist);if(!value)continue;values.add(value);if(values.size>1){this.keysToValues_.delete(groupingKey);}}\nconst storyTags=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.STORY_TAGS);for(const tag of(storyTags||[])){allStoryTags.add(tag);}}\ntr.b.Timing.instant('HistogramParameterCollector','maxSampleCount',maxSampleCount);for(const tagGrouping of tr.v.HistogramGrouping.buildFromTags(allStoryTags,tr.v.d.RESERVED_NAMES.STORY_TAGS)){const values=new Set();for(const hist of histograms){values.add(tagGrouping.callback(hist));}\nif(values.size>1){this.keysToGroupings_.set(tagGrouping.key,tagGrouping);this.keysToValues_.set(tagGrouping.key,values);}}\nthis.statisticNames_.add('pct_090');}\nget statisticNames(){return Array.from(this.statisticNames_);}\nget labels(){const displayLabels=Array.from(this.labelsToStartTimes_.keys());displayLabels.sort((x,y)=>this.labelsToStartTimes_.get(x)-this.labelsToStartTimes_.get(y));return displayLabels;}\nget possibleGroupings(){for(const[key,values]of this.keysToValues_){if(values.size>=2)continue;this.keysToGroupings_.delete(key);}\nreturn Array.from(this.keysToGroupings_.values());}}\nreturn{HistogramParameterCollector,};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-controls-export',exportRawCsv_(){this.export_(false,'csv');},exportRawJson_(){this.export_(false,'json');},exportMergedCsv_(){this.export_(true,'csv');},exportMergedJson_(){this.export_(true,'json');},export_(merged,format){tr.b.dispatchSimpleEvent(this,'export',true,true,{merged,format});},});return{};});'use strict';tr.exportTo('tr.v.ui',function(){const ALPHA_OPTIONS=[];for(let i=1;i<10;++i)ALPHA_OPTIONS.push(i*1e-3);for(let i=1;i<10;++i)ALPHA_OPTIONS.push(i*1e-2);ALPHA_OPTIONS.push(0.1);Polymer({is:'tr-v-ui-histogram-set-controls',properties:{searchQuery:{type:String,value:'',observer:'onSearchQueryChange_',},showAll:{type:Boolean,value:true,observer:'onUserChange_',},referenceDisplayLabel:{type:String,value:'',observer:'onUserChange_',},displayStatisticName:{type:String,value:'',observer:'onUserChange_',},alphaString:{type:String,computed:'getAlphaString_(alphaIndex)',},alphaIndex:{type:Number,value:9,observer:'onUserChange_',},},created(){this.viewState_=undefined;this.rowListener_=this.onRowViewStateUpdate_.bind(this);this.baseStatisticNames_=[];this.isInOnViewStateUpdate_=false;this.searchQueryDebounceMs=200;},ready(){this.$.picker.addEventListener('current-groups-changed',this.onGroupsChanged_.bind(this));},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState_){throw new Error('viewState must be set exactly once.');}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));},async onSearchQueryChange_(){if(this.searchQueryDebounceMs===0)return this.onUserChange_();this.debounce('onSearchQueryDebounce',this.onUserChange_,this.searchQueryDebounceMs);},async onUserChange_(){if(!this.viewState)return;if(this.isInOnViewStateUpdate_)return;const marks=[];if(this.searchQuery!==this.viewState.searchQuery){marks.push(tr.b.Timing.mark('histogram-set-controls','search'));}\nif(this.showAll!==this.viewState.showAll){marks.push(tr.b.Timing.mark('histogram-set-controls','showAll'));}\nif(this.referenceDisplayLabel!==this.viewState.referenceDisplayLabel){marks.push(tr.b.Timing.mark('histogram-set-controls','referenceColumn'));}\nif(this.displayStatisticName!==this.viewState.displayStatisticName){marks.push(tr.b.Timing.mark('histogram-set-controls','statistic'));}\nif(parseInt(this.alphaIndex)!==this.getAlphaIndexFromViewState_()){marks.push(tr.b.Timing.mark('histogram-set-controls','alpha'));}\nthis.$.clear_search.style.visibility=this.searchQuery?'visible':'hidden';let displayStatisticName=this.displayStatisticName;if(this.viewState.referenceDisplayLabel===''&&this.referenceDisplayLabel!==''&&this.baseStatisticNames.length){displayStatisticName=`%${tr.v.DELTA}${this.displayStatisticName}`;}\nif(this.referenceDisplayLabel===''&&this.viewState.referenceDisplayLabel!==''&&this.baseStatisticNames.length){const deltaIndex=displayStatisticName.indexOf(tr.v.DELTA);if(deltaIndex>=0){displayStatisticName=displayStatisticName.slice(deltaIndex+1);}else if(!this.baseStatisticNames.includes(displayStatisticName)){displayStatisticName='avg';}}\nawait this.viewState.update({searchQuery:this.searchQuery,showAll:this.showAll,referenceDisplayLabel:this.referenceDisplayLabel,displayStatisticName,alpha:ALPHA_OPTIONS[this.alphaIndex],});if(this.referenceDisplayLabel&&this.statisticNames.length===this.baseStatisticNames.length){this.statisticNames=this.baseStatisticNames.concat(tr.v.Histogram.getDeltaStatisticsNames(this.baseStatisticNames));}else if(!this.referenceDisplayLabel&&this.statisticNames.length>this.baseStatisticNames.length){this.statisticNames=this.baseStatisticNames;}\nfor(const mark of marks)mark.end();},onViewStateUpdate_(event){this.isInOnViewStateUpdate_=true;if(event.delta.searchQuery){this.searchQuery=this.viewState.searchQuery;}\nif(event.delta.showAll)this.showAll=this.viewState.showAll;if(event.delta.displayStatisticName){this.displayStatisticName=this.viewState.displayStatisticName;}\nif(event.delta.referenceDisplayLabel){this.referenceDisplayLabel=this.viewState.referenceDisplayLabel;this.$.alpha.style.display=this.referenceDisplayLabel?'inline':'';}\nif(event.delta.groupings){this.$.picker.currentGroupKeys=this.viewState.groupings.map(g=>g.key);}\nif(event.delta.tableRowStates){for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){row.addUpdateListener(this.rowListener_);}\nconst anyShowing=this.anyOverviewCharts_;this.$.hide_overview.style.display=anyShowing?'inline':'none';this.$.show_overview.style.display=anyShowing?'none':'inline';}\nif(event.delta.alpha){this.alphaIndex=this.getAlphaIndexFromViewState_();}\nthis.isInOnViewStateUpdate_=false;this.onUserChange_();},onRowViewStateUpdate_(event){if(event.delta.isOverviewed){const anyShowing=event.delta.isOverviewed.current||this.anyOverviewCharts_;this.$.hide_overview.style.display=anyShowing?'inline':'none';this.$.show_overview.style.display=anyShowing?'none':'inline';}\nif(event.delta.subRows){for(const subRow of event.delta.subRows.previous){subRow.removeUpdateListener(this.rowListener_);}\nfor(const subRow of event.delta.subRows.current){subRow.addUpdateListener(this.rowListener_);}}},onGroupsChanged_(){if(this.$.picker.currentGroups.length===0&&this.$.picker.possibleGroups.length>0){this.$.picker.currentGroupKeys=[this.$.picker.possibleGroups[0].key];}\nthis.viewState.groupings=this.$.picker.currentGroups;},set showAllEnabled(enable){if(!enable)this.$.show_all.checked=true;this.$.show_all.disabled=!enable;},set possibleGroupings(groupings){this.$.picker.possibleGroups=groupings;this.$.picker.style.display=(groupings.length<2)?'none':'block';this.onGroupsChanged_();},set displayLabels(labels){this.$.reference_display_label.style.display=(labels.length<2)?'none':'inline';while(this.$.reference_display_label.children.length>1){this.$.reference_display_label.removeChild(this.$.reference_display_label.lastChild);}\nfor(const displayLabel of labels){const option=document.createElement('option');option.textContent=displayLabel;option.value=displayLabel;this.$.reference_display_label.appendChild(option);}\nif(labels.includes(this.viewState.referenceDisplayLabel)){this.referenceDisplayLabel=this.viewState.referenceDisplayLabel;}else{this.viewState.referenceDisplayLabel='';}},get baseStatisticNames(){return this.baseStatisticNames_;},set baseStatisticNames(names){this.baseStatisticNames_=names;this.statisticNames=names;},get statisticNames(){return Array.from(this.$.statistic.options).map(o=>o.value);},set statisticNames(names){this.$.statistic.style.display=(names.length<2)?'none':'inline';while(this.$.statistic.children.length){this.$.statistic.removeChild(this.$.statistic.lastChild);}\nfor(const name of names){const option=document.createElement('option');option.textContent=name;this.$.statistic.appendChild(option);}\nif(names.includes(this.viewState.displayStatisticName)){this.displayStatisticName=this.viewState.displayStatisticName;this.$.statistic.value=this.displayStatisticName;}else{this.viewState.displayStatisticName=names[0]||'';}},get anyOverviewCharts_(){for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){if(row.isOverviewed)return true;}\nreturn false;},async toggleOverviewLineCharts_(){const showOverviews=!this.anyOverviewCharts_;const mark=tr.b.Timing.mark('histogram-set-controls',(showOverviews?'show':'hide')+'OverviewCharts');for(const row of tr.v.ui.HistogramSetTableRowState.walkAll(this.viewState.tableRowStates.values())){await row.update({isOverviewed:showOverviews});}\nthis.$.hide_overview.style.display=showOverviews?'inline':'none';this.$.show_overview.style.display=showOverviews?'none':'inline';await tr.b.animationFrame();mark.end();},set helpHref(href){this.$.help.href=href;this.$.help.style.display='inline';},set feedbackHref(href){this.$.feedback.href=href;this.$.feedback.style.display='inline';},clearSearch_(){this.set('searchQuery','');this.$.search.focus();},getAlphaString_(alphaIndex){return(''+ALPHA_OPTIONS[alphaIndex]).substr(0,5);},openAlphaSlider_(){const alphaButtonRect=this.$.alpha.getBoundingClientRect();this.$.alpha_slider_container.style.display='flex';this.$.alpha_slider_container.style.top=alphaButtonRect.bottom+'px';this.$.alpha_slider_container.style.left=alphaButtonRect.left+'px';this.$.alpha_slider.focus();},closeAlphaSlider_(){this.$.alpha_slider_container.style.display='';},updateAlpha_(){this.alphaIndex=this.$.alpha_slider.value;},getAlphaIndexFromViewState_(){for(let i=0;i<ALPHA_OPTIONS.length;++i){if(ALPHA_OPTIONS[i]>=this.viewState.alpha)return i;}\nreturn ALPHA_OPTIONS.length-1;},set enableVisualization(enable){this.$.show_visualization.style.display=enable?'inline':'none';},loadVisualization_(){tr.b.dispatchSimpleEvent(this,'loadVisualization',true,true,{});},});return{};});'use strict';tr.exportTo('tr.v',function(){class HistogramSetHierarchy{constructor(name){this.name=name;this.description='';this.depth=0;this.subRows=[];this.columns=new Map();}*walk(){yield this;for(const row of this.subRows)yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}\nstatic build(histogramArrayMap){const rootRows=[];HistogramSetHierarchy.buildInternal_(histogramArrayMap,[],rootRows);const histograms=new tr.v.HistogramSet();for(const row of HistogramSetHierarchy.walkAll(rootRows)){for(const hist of row.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;histograms.addHistogram(hist);}}\nhistograms.deduplicateDiagnostics();for(const row of HistogramSetHierarchy.walkAll(rootRows)){row.maybeRebin_();}\nreturn rootRows;}\nmaybeRebin_(){const dataRange=new tr.b.math.Range();for(const hist of this.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;if(hist.allBins.length>1)return;if(hist.numValues===0)continue;dataRange.addValue(hist.min);dataRange.addValue(hist.max);}\ndataRange.addValue(tr.b.math.lesserWholeNumber(dataRange.min));dataRange.addValue(tr.b.math.greaterWholeNumber(dataRange.max));if(dataRange.min===dataRange.max)return;const boundaries=tr.v.HistogramBinBoundaries.createLinear(dataRange.min,dataRange.max,tr.v.DEFAULT_REBINNED_COUNT);for(const[name,hist]of this.columns){if(!(hist instanceof tr.v.Histogram))continue;this.columns.set(name,hist.rebin(boundaries));}}\nstatic mergeHistogramDownHierarchy_(histogram,hierarchy,columnName){for(const row of hierarchy){if(!row.description){row.description=histogram.description;}\nconst existing=row.columns.get(columnName);if(existing===undefined){row.columns.set(columnName,histogram.clone());continue;}\nif(existing instanceof tr.v.HistogramSet){existing.addHistogram(histogram);continue;}\nif(!existing.canAddHistogram(histogram)){const unmergeableHistograms=new tr.v.HistogramSet([histogram]);row.columns.set(columnName,unmergeableHistograms);continue;}\nexisting.addHistogram(histogram);}}\nstatic buildInternal_(histogramArrayMap,hierarchy,rootRows){for(const[name,histograms]of histogramArrayMap){if(histograms instanceof Array){for(const histogram of histograms){HistogramSetHierarchy.mergeHistogramDownHierarchy_(histogram,hierarchy,name);}}else if(histograms instanceof Map){const row=new HistogramSetHierarchy(name);row.depth=hierarchy.length;hierarchy.push(row);HistogramSetHierarchy.buildInternal_(histograms,hierarchy,rootRows);hierarchy.pop();if(hierarchy.length===0){rootRows.push(row);}else{const parentRow=hierarchy[hierarchy.length-1];parentRow.subRows.push(row);}}}}}\nreturn{HistogramSetHierarchy};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-table-cell',created(){this.viewState_=undefined;this.rootListener_=this.onRootStateUpdate_.bind(this);this.row_=undefined;this.displayLabel_='';this.histogram_=undefined;this.histogramSpan_=undefined;this.overviewChart_=undefined;this.mwuResult_=undefined;},ready(){this.addEventListener('click',this.onClick_.bind(this));},attached(){if(this.row){this.row.rootViewState.addUpdateListener(this.rootListener_);}},detached(){this.row.rootViewState.removeUpdateListener(this.rootListener_);},updateMwu_(){const referenceHistogram=this.referenceHistogram;this.mwuResult_=undefined;if(!(this.histogram instanceof tr.v.Histogram))return;if(!this.histogram.canCompare(referenceHistogram))return;this.mwuResult_=tr.b.math.Statistics.mwu(this.histogram.sampleValues,referenceHistogram.sampleValues,this.row.rootViewState.alpha);},build(row,displayLabel,viewState){this.row_=row;this.displayLabel_=displayLabel;this.viewState_=viewState;this.histogram_=this.row.columns.get(displayLabel);if(this.viewState){this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));}\nthis.row.viewState.addUpdateListener(this.onRowStateUpdate_.bind(this));if(this.isAttached){this.row.rootViewState.addUpdateListener(this.rootListener_);}\nthis.updateMwu_();this.updateContents_();},updateSignificance_(){if(!this.mwuResult_)return;this.$.scalar.significance=this.mwuResult_.significance;},get viewState(){return this.viewState_;},get row(){return this.row_;},get histogram(){return this.histogram_;},get referenceHistogram(){const referenceDisplayLabel=this.row.rootViewState.referenceDisplayLabel;if(!referenceDisplayLabel)return undefined;if(referenceDisplayLabel===this.displayLabel_)return undefined;return this.row.columns.get(referenceDisplayLabel);},get isHistogramOpen(){return(this.histogramSpan_!==undefined)&&(this.$.histogram.style.display==='block');},set isHistogramOpen(open){if(!(this.histogram instanceof tr.v.Histogram)||(this.histogram.numValues===0)){return;}\nthis.$.scalar.style.display=open?'none':'flex';this.$.open_histogram.style.display=open?'none':'block';this.$.close_histogram.style.display=open?'block':'none';this.$.histogram.style.display=open?'block':'none';if(open&&this.histogramSpan_===undefined){this.histogramSpan_=document.createElement('tr-v-ui-histogram-span');this.histogramSpan_.viewState=this.viewState;this.histogramSpan_.rowState=this.row.viewState;this.histogramSpan_.rootState=this.row.rootViewState;this.histogramSpan_.build(this.histogram,this.referenceHistogram);this.$.histogram.appendChild(this.histogramSpan_);}\nthis.viewState.isOpen=open;},onViewStateUpdate_(event){if(event.delta.isOpen){this.isHistogramOpen=this.viewState.isOpen;}},onRowStateUpdate_(event){if(event.delta.isOverviewed===undefined)return;if(this.row.viewState.isOverviewed){this.showOverview();}else{this.hideOverview();}},onRootStateUpdate_(event){if(event.delta.referenceDisplayLabel&&this.histogramSpan_){this.histogramSpan_.build(this.histogram,this.referenceHistogram);}\nif(event.delta.displayStatisticName||event.delta.referenceDisplayLabel){this.updateMwu_();this.updateContents_();}else if(event.delta.alpha&&this.mwuResult_){this.mwuResult_.compare(this.row.rootViewState.alpha);this.updateSignificance_();}\nif(this.row.viewState.isOverviewed&&(event.delta.sortColumnIndex||event.delta.sortDescending||event.delta.displayStatisticName||event.delta.referenceDisplayLabel)){if(this.overviewChart_!==undefined){this.$.overview_container.removeChild(this.overviewChart_);this.overviewChart_=undefined;}\nthis.showOverview();}},onClick_(event){event.stopPropagation();},openHistogram_(){this.isHistogramOpen=true;tr.b.Timing.instant('histogram-set-table-cell','open');},closeHistogram_(){this.isHistogramOpen=false;tr.b.Timing.instant('histogram-set-table-cell','close');},updateContents_(){const isOpen=this.isHistogramOpen;this.$.empty.style.display='none';this.$.unmergeable.style.display='none';this.$.scalar.style.display='none';this.$.histogram.style.display='none';this.$.close_histogram.style.display='none';this.$.open_histogram.style.visibility='hidden';if(!this.histogram){this.$.missing.style.display='block';return;}\nthis.$.missing.style.display='none';if(this.histogram instanceof tr.v.HistogramSet){this.$.unmergeable.style.display='block';return;}\nif(!(this.histogram instanceof tr.v.Histogram)){throw new Error('Invalid Histogram: '+this.histogram);}\nif(this.histogram.numValues===0){this.$.empty.style.display='block';return;}\nthis.$.open_histogram.style.display='block';this.$.open_histogram.style.visibility='visible';this.$.scalar.style.display='flex';this.updateSignificance_();const referenceHistogram=this.referenceHistogram;const statName=this.histogram.getAvailableStatisticName(this.row.rootViewState.displayStatisticName,referenceHistogram);const statisticScalar=this.histogram.getStatisticScalar(statName,referenceHistogram);this.$.scalar.setValueAndUnit(statisticScalar.value,statisticScalar.unit);this.isHistogramOpen=isOpen;},showOverview(){this.$.overview_container.style.display='block';if(this.overviewChart_!==undefined)return;this.row.sortSubRows();let referenceDisplayLabel=this.row.rootViewState.referenceDisplayLabel;if(referenceDisplayLabel===this.displayLabel_){referenceDisplayLabel=undefined;}\nconst displayStatisticName=this.row.rootViewState.displayStatisticName;const data=[];let unit;for(const subRow of this.row.subRows){const subHist=subRow.columns.get(this.displayLabel_);if(!(subHist instanceof tr.v.Histogram))continue;if(unit===undefined){unit=subHist.unit;}else if(unit!==subHist.unit){data.splice(0);break;}\nconst refHist=subRow.columns.get(referenceDisplayLabel);const statName=subHist.getAvailableStatisticName(displayStatisticName,refHist);const statScalar=subHist.getStatisticScalar(statName,refHist);if(statScalar!==undefined){data.push({x:subRow.name,y:statScalar.value,});}}\nif(data.length<2)return;this.overviewChart_=new tr.ui.b.NameLineChart();this.$.overview_container.appendChild(this.overviewChart_);this.overviewChart_.displayXInHover=true;this.overviewChart_.hideLegend=true;this.overviewChart_.unit=unit;this.overviewChart_.overrideDataRange=this.row.overviewDataRange;this.overviewChart_.data=data;},hideOverview(){this.$.overview_container.style.display='none';}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){const NAME_COLUMN_WIDTH_PX=300;Polymer({is:'tr-v-ui-histogram-set-table-name-cell',created(){this.row_=undefined;this.overviewChart_=undefined;this.cellListener_=this.onCellStateUpdate_.bind(this);this.rootListener_=this.onRootStateUpdate_.bind(this);},attached(){if(this.row){this.row.rootViewState.addUpdateListener(this.rootListener_);}},detached(){this.row.rootViewState.removeUpdateListener(this.rootListener_);},get row(){return this.row_;},build(row){if(this.row_!==undefined){throw new Error('row must be set exactly once.');}\nthis.row_=row;this.row.viewState.addUpdateListener(this.onRowStateUpdate_.bind(this));this.constrainWidth=this.row.rootViewState.constrainNameColumn;if(this.isAttached){this.row.rootViewState.addUpdateListener(this.rootListener_);}\nfor(const cellState of this.row.viewState.cells.values()){cellState.addUpdateListener(this.cellListener_);}\nPolymer.dom(this.$.name).textContent=this.row.name;this.title=this.row.name;if(this.row.description){this.title+='\\n'+this.row.description;}\nif(this.row.overviewDataRange.isEmpty||this.row.overviewDataRange.min===this.row.overviewDataRange.max){this.$.show_overview.style.display='none';}\nlet histogramCount=0;for(const cell of this.row.columns.values()){if(cell instanceof tr.v.Histogram&&cell.numValues>0){++histogramCount;}}\nif(histogramCount<=1){this.$.open_histograms.style.display='none';}},set constrainWidth(constrain){this.$.name.style.maxWidth=constrain?(this.nameWidthPx+'px'):'none';},get nameWidthPx(){return NAME_COLUMN_WIDTH_PX-(16*this.row.depth);},get isOverflowing(){return this.$.name.style.maxWidth!=='none'&&this.$.name.getBoundingClientRect().width===this.nameWidthPx;},get isOverviewed(){return this.$.overview_container.style.display==='block';},set isOverviewed(isOverviewed){if(isOverviewed===this.isOverviewed)return;if(isOverviewed){this.showOverview_();}else{this.hideOverview_();}},hideOverview_(opt_event){this.$.overview_container.style.display='none';this.$.hide_overview.style.display='none';this.$.show_overview.style.display='block';if(opt_event!==undefined){opt_event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','hideOverview');this.row.viewState.isOverviewed=this.isOverviewed;}},showOverview_(opt_event){if(opt_event!==undefined){opt_event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','showOverview');this.row.viewState.isOverviewed=true;}\nthis.$.overview_container.style.display='block';this.$.hide_overview.style.display='block';this.$.show_overview.style.display='none';if(this.overviewChart_===undefined){const displayStatisticName=this.row.rootViewState.displayStatisticName;const data=[];let unit;for(const[displayLabel,hist]of this.row.sortedColumns()){if(!(hist instanceof tr.v.Histogram))continue;if(unit===undefined){unit=hist.unit;}else if(unit!==hist.unit){data.splice(0);break;}\nconst statName=hist.getAvailableStatisticName(displayStatisticName);const statScalar=hist.getStatisticScalar(statName);if(statScalar!==undefined){data.push({x:displayLabel,y:statScalar.value,});}}\nif(data.length<2){return;}\nthis.overviewChart_=new tr.ui.b.NameLineChart();this.$.overview_container.appendChild(this.overviewChart_);this.overviewChart_.displayXInHover=true;this.overviewChart_.hideLegend=true;this.overviewChart_.unit=unit;this.overviewChart_.overrideDataRange=this.row.overviewDataRange;this.overviewChart_.data=data;}},openHistograms_(event){event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','openHistograms');for(const cell of this.row.cells.values()){cell.isHistogramOpen=true;}\nthis.$.close_histograms.style.display='block';this.$.open_histograms.style.display='none';},closeHistograms_(event){event.stopPropagation();tr.b.Timing.instant('histogram-set-table-name-cell','closeHistograms');for(const cell of this.row.cells.values()){cell.isHistogramOpen=false;}\nthis.$.open_histograms.style.display='block';this.$.close_histograms.style.display='none';},onRootStateUpdate_(event){if(event.delta.constrainNameColumn){this.constrainWidth=this.row.rootViewState.constrainNameColumn;}\nif(this.row.viewState.isOverviewed&&event.delta.displayStatisticName){this.row.resetOverviewDataRange();if(this.overviewChart_!==undefined){this.$.overview_container.removeChild(this.overviewChart_);this.overviewChart_=undefined;}\nthis.showOverview_();}},onRowStateUpdate_(event){if(event.delta.isOverviewed){this.isOverviewed=this.row.viewState.isOverviewed;}},onCellStateUpdate_(event){if(!event.delta.isOpen)return;let cellCount=0;let openCellCount=0;for(const cell of this.row.cells.values()){if(!(cell.histogram instanceof tr.v.Histogram)||(cell.histogram.numValues===0)){continue;}\n++cellCount;if(cell.isHistogramOpen)++openCellCount;}\nif(cellCount<=1)return;const mostlyOpen=openCellCount>(cellCount/2);this.$.open_histograms.style.display=mostlyOpen?'none':'block';this.$.close_histograms.style.display=mostlyOpen?'block':'none';}});return{NAME_COLUMN_WIDTH_PX,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetTableRow{constructor(hierarchy,baseTable,rootViewState){this.hierarchy_=hierarchy;this.baseTable_=baseTable;this.rootViewState_=rootViewState;this.viewState_=new tr.v.ui.HistogramSetTableRowState();this.viewState_.addUpdateListener(this.onViewStateUpdate_.bind(this));this.overviewDataRange_=undefined;this.nameCell_=undefined;this.cells_=new Map();this.subRows_=[];for(const subHierarchy of hierarchy.subRows){const subRow=new HistogramSetTableRow(subHierarchy,baseTable,rootViewState);this.subRows_.push(subRow);this.viewState.subRows.set(subRow.name,subRow.viewState);}\nfor(const columnName of this.columns.keys()){this.viewState.cells.set(columnName,new tr.v.ui.HistogramSetTableCellState());}}\nget name(){return this.hierarchy_.name;}\nget depth(){return this.hierarchy_.depth;}\nget description(){return this.hierarchy_.description;}\nget columns(){return this.hierarchy_.columns;}*sortedColumns(){for(const col of this.baseTable_.tableColumns){yield[col.displayLabel,this.hierarchy_.columns.get(col.displayLabel),];}}\nget overviewDataRange(){if(this.overviewDataRange_===undefined){this.overviewDataRange_=new tr.b.math.Range();const displayStatisticName=this.rootViewState.displayStatisticName;const referenceDisplayLabel=this.rootViewState.referenceDisplayLabel;for(const[displayLabel,hist]of this.columns){if(hist instanceof tr.v.Histogram){const statName=hist.getAvailableStatisticName(displayStatisticName);const statScalar=hist.getStatisticScalar(statName);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}\nfor(const subRow of this.subRows){const subHist=subRow.columns.get(displayLabel);if(!(subHist instanceof tr.v.Histogram))continue;const refHist=subRow.columns.get(referenceDisplayLabel);const statName=subHist.getAvailableStatisticName(displayStatisticName,refHist);const statScalar=subHist.getStatisticScalar(statName,refHist);if(statScalar!==undefined){this.overviewDataRange_.addValue(statScalar.value);}}}}\nreturn this.overviewDataRange_;}\nresetOverviewDataRange(){this.overviewDataRange_=undefined;}\nget rootViewState(){return this.rootViewState_;}\nget cells(){return this.cells_;}\nget subRows(){return this.subRows_;}\nget viewState(){return this.viewState_;}*walk(){yield this;for(const row of this.subRows)yield*row.walk();}\nstatic*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}\nget nameCell(){if(this.nameCell_===undefined){this.nameCell_=document.createElement('tr-v-ui-histogram-set-table-name-cell');this.nameCell_.build(this);}\nreturn this.nameCell_;}\ngetCell(columnName){if(this.cells.has(columnName))return this.cells.get(columnName);const cell=document.createElement('tr-v-ui-histogram-set-table-cell');cell.build(this,columnName,this.viewState.cells.get(columnName));this.cells.set(columnName,cell);return cell;}\ncompareNames(other){return this.name.localeCompare(other.name);}\ncompareCells(other,displayLabel){const referenceDisplayLabel=this.rootViewState.referenceDisplayLabel;let referenceCellA;let referenceCellB;if(referenceDisplayLabel&&referenceDisplayLabel!==displayLabel){referenceCellA=this.columns.get(referenceDisplayLabel);referenceCellB=other.columns.get(referenceDisplayLabel);}\nconst cellA=this.columns.get(displayLabel);let valueA=0;if(cellA instanceof tr.v.Histogram){const statisticA=cellA.getAvailableStatisticName(this.rootViewState.displayStatisticName,referenceCellA);const scalarA=cellA.getStatisticScalar(statisticA,referenceCellA);if(scalarA){valueA=scalarA.value;}}\nconst cellB=other.columns.get(displayLabel);let valueB=0;if(cellB instanceof tr.v.Histogram){const statisticB=cellB.getAvailableStatisticName(this.rootViewState.displayStatisticName,referenceCellB);const scalarB=cellB.getStatisticScalar(statisticB,referenceCellB);if(scalarB){valueB=scalarB.value;}}\nreturn valueA-valueB;}\nonViewStateUpdate_(event){if(event.delta.isExpanded){this.baseTable_.setExpandedForTableRow(this,this.viewState.isExpanded);}\nif(event.delta.subRows){throw new Error('HistogramSetTableRow.subRows must not be reassigned.');}\nif(event.delta.cells){for(const[displayLabel,cell]of this.cells){if(cell.viewState!==this.viewState.cells.get(displayLabel)){throw new Error('Only HistogramSetTableRow may update cells');}}}}\nasync restoreState(vs){await this.viewState.update({isExpanded:vs.isExpanded,isOverviewed:vs.isOverviewed,});for(const[displayLabel,cell]of this.cells){const previousState=vs.cells.get(displayLabel);if(!previousState)continue;await cell.viewState.updateFromViewState(previousState);}\nfor(const row of this.subRows){const previousState=vs.subRows.get(row.name);if(!previousState)continue;await row.restoreState(previousState);}}\nsortSubRows(){const sortColumn=this.baseTable_.tableColumns[this.rootViewState_.sortColumnIndex];if(sortColumn===undefined)return;this.subRows_.sort(sortColumn.cmp);if(this.rootViewState_.sortDescending){this.subRows_.reverse();}}}\nreturn{HistogramSetTableRow,};});'use strict';tr.exportTo('tr.v.ui',function(){const MIDLINE_HORIZONTAL_ELLIPSIS=String.fromCharCode(0x22ef);function escapeRegExp(str){return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,'\\\\$&');}\nPolymer({is:'tr-v-ui-histogram-set-table',created(){this.viewState_=undefined;this.progress_=()=>Promise.resolve();this.nameColumnTitle_=undefined;this.displayLabels_=[];this.histograms_=undefined;this.sourceHistograms_=undefined;this.filteredHistograms_=undefined;this.groupedHistograms_=undefined;this.hierarchies_=undefined;this.tableRows_=undefined;this.sortColumnChangedListener_=e=>this.onSortColumnChanged_(e);},ready(){this.$.table.zebra=true;this.addEventListener('sort-column-changed',this.sortColumnChangedListener_);this.addEventListener('requestSelectionChange',this.onRequestSelectionChange_.bind(this));this.addEventListener('row-expanded-changed',this.onRowExpandedChanged_.bind(this));},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState_){throw new Error('viewState must be set exactly once.');}\nthis.viewState_=vs;this.viewState.addUpdateListener(this.onViewStateUpdate_.bind(this));},get histograms(){return this.histograms_;},async build(histograms,sourceHistograms,displayLabels,opt_progress){this.histograms_=histograms;this.sourceHistograms_=sourceHistograms;this.filteredHistograms_=undefined;this.groupedHistograms_=undefined;this.displayLabels_=displayLabels;if(opt_progress!==undefined)this.progress_=opt_progress;if(histograms.length===0){throw new Error('histogram-set-table requires non-empty HistogramSet.');}\nawait this.progress_('Building columns...');this.$.table.tableColumns=[{title:this.buildNameColumnTitle_(),value:row=>row.nameCell,cmp:(a,b)=>a.compareNames(b),}].concat(displayLabels.map(l=>this.buildColumn_(l)));tr.b.Timing.instant('histogram-set-table','columnCount',this.$.table.tableColumns.length);await this.updateContents_();this.fire('display-ready');this.progress_=()=>Promise.resolve();this.checkNameColumnOverflow_(tr.v.ui.HistogramSetTableRow.walkAll(this.$.table.tableRows));},buildNameColumnTitle_(){this.nameColumnTitle_=document.createElement('span');this.nameColumnTitle_.style.display='inline-flex';const nameEl=document.createElement('span');nameEl.textContent='Name';this.nameColumnTitle_.appendChild(nameEl);const toggleWidthEl=document.createElement('span');toggleWidthEl.style.fontWeight='bold';toggleWidthEl.style.background='#bbb';toggleWidthEl.style.color='#333';toggleWidthEl.style.padding='0px 3px';toggleWidthEl.style.marginRight='8px';toggleWidthEl.style.display='none';toggleWidthEl.textContent=MIDLINE_HORIZONTAL_ELLIPSIS;toggleWidthEl.addEventListener('click',this.toggleNameColumnWidth_.bind(this));this.nameColumnTitle_.appendChild(toggleWidthEl);return this.nameColumnTitle_;},toggleNameColumnWidth_(opt_event){this.viewState.update({constrainNameColumn:!this.viewState.constrainNameColumn,});if(opt_event!==undefined){opt_event.stopPropagation();opt_event.preventDefault();tr.b.Timing.instant('histogram-set-table','nameColumn'+\n(this.viewState.constrainNameColumn?'Constrained':'Unconstrained'));}},buildColumn_(displayLabel){const title=document.createElement('span');title.textContent=displayLabel;title.style.whiteSpace='pre';return{displayLabel,title,value:row=>row.getCell(displayLabel),cmp:(rowA,rowB)=>rowA.compareCells(rowB,displayLabel),};},async updateContents_(){const previousRowStates=this.viewState.tableRowStates;if(!this.filteredHistograms_){await this.progress_('Filtering rows...');this.filteredHistograms_=this.viewState.showAll?this.histograms:this.sourceHistograms_;if(this.viewState.searchQuery){let query;try{query=new RegExp(this.viewState.searchQuery);}catch(e){}\nif(query!==undefined){this.filteredHistograms_=new tr.v.HistogramSet([...this.filteredHistograms_].filter(hist=>hist.name.match(query)));if(this.filteredHistograms_.length===0&&!this.viewState.showAll){await this.viewState.update({showAll:true});return;}}}\nthis.groupedHistograms_=undefined;}\nif(!this.groupedHistograms_){await this.progress_('Grouping Histograms...');this.groupHistograms_();}\nif(!this.hierarchies_){await this.progress_('Merging Histograms...');this.hierarchies_=tr.v.HistogramSetHierarchy.build(this.groupedHistograms_);this.tableRows_=undefined;}\nconst tableRowsDirty=this.tableRows_===undefined;if(tableRowsDirty){this.tableRows_=this.hierarchies_.map(hierarchy=>new tr.v.ui.HistogramSetTableRow(hierarchy,this.$.table,this.viewState));tr.b.Timing.instant('histogram-set-table','rootRowCount',this.tableRows_.length);const namesToRowStates=new Map();for(const row of this.tableRows_){namesToRowStates.set(row.name,row.viewState);}\nawait this.viewState.update({tableRowStates:namesToRowStates});}\nawait this.progress_('Configuring table...');this.nameColumnTitle_.children[1].style.filter=this.viewState.constrainNameColumn?'invert(100%)':'';const referenceDisplayLabelIndex=this.displayLabels_.indexOf(this.viewState.referenceDisplayLabel);this.$.table.selectedTableColumnIndex=(referenceDisplayLabelIndex<0)?undefined:(1+referenceDisplayLabelIndex);this.removeEventListener('sort-column-changed',this.sortColumnChangedListener_);this.$.table.sortColumnIndex=this.viewState.sortColumnIndex;this.$.table.sortDescending=this.viewState.sortDescending;this.addEventListener('sort-column-changed',this.sortColumnChangedListener_);if(tableRowsDirty){await this.progress_('Building DOM...');this.$.table.tableRows=this.tableRows_;for(const row of this.tableRows_){const previousState=previousRowStates.get(row.name);if(!previousState)continue;await row.restoreState(previousState);}}\nthis.$.table.rebuild();},async onRowExpandedChanged_(event){event.row.viewState.isExpanded=this.$.table.getExpandedForTableRow(event.row);tr.b.Timing.instant('histogram-set-table','row'+(event.row.viewState.isExpanded?'Expanded':'Collapsed'));if(this.nameColumnTitle_.children[1].style.display==='block')return;await tr.b.animationFrame();this.checkNameColumnOverflow_(event.row.subRows);},checkNameColumnOverflow_(rows){for(const row of rows){if(!row.nameCell.isOverflowing)continue;const[nameSpan,dots]=Array.from(this.nameColumnTitle_.children);dots.style.display='block';const labelWidthPx=tr.v.ui.NAME_COLUMN_WIDTH_PX-\ndots.getBoundingClientRect().width;nameSpan.style.width=labelWidthPx+'px';return;}},groupHistograms_(){const groupings=this.viewState.groupings.slice();groupings.push(tr.v.HistogramGrouping.DISPLAY_LABEL);function canSkipGrouping(grouping,groupedHistograms){if(groupedHistograms.size>1)return false;if(grouping.key===groupings[0].key)return false;if(grouping.key===tr.v.HistogramGrouping.DISPLAY_LABEL.key){return false;}\nreturn true;}\nthis.groupedHistograms_=this.filteredHistograms_.groupHistogramsRecursively(groupings,canSkipGrouping);this.hierarchies_=undefined;},async onViewStateUpdate_(event){if(this.histograms_===undefined)return;if(event.delta.searchQuery!==undefined||event.delta.showAll!==undefined){this.filteredHistograms_=undefined;}\nif(event.delta.groupings!==undefined){this.groupedHistograms_=undefined;}\nif(event.delta.displayStatistic!==undefined&&this.$.table.sortColumnIndex>0){this.$.table.sortColumnIndex=undefined;}\nif(event.delta.referenceDisplayLabel!==undefined||event.delta.displayStatisticName!==undefined){this.$.table.tableRows=this.$.table.tableRows;}\nif(event.delta.tableRowStates){if(this.tableRows_.length!==this.viewState.tableRowStates.size){throw new Error('Only histogram-set-table may update tableRowStates');}\nfor(const row of this.tableRows_){if(this.viewState.tableRowStates.get(row.name)!==row.viewState){throw new Error('Only histogram-set-table may update tableRowStates');}}\nreturn;}\nawait this.updateContents_();},onSortColumnChanged_(event){tr.b.Timing.instant('histogram-set-table','sortColumn');this.viewState.update({sortColumnIndex:event.sortColumnIndex,sortDescending:event.sortDescending,});},onRequestSelectionChange_(event){if(event.selection instanceof tr.model.EventSet)return;event.stopPropagation();tr.b.Timing.instant('histogram-set-table','selectHistogramNames');let histogramNames=event.selection;histogramNames.sort();histogramNames=histogramNames.map(escapeRegExp).join('|');this.viewState.update({showAll:true,searchQuery:`^(${histogramNames})$`,});},get leafHistograms(){const histograms=new tr.v.HistogramSet();for(const row of\ntr.v.ui.HistogramSetTableRow.walkAll(this.$.table.tableRows)){if(row.subRows.length)continue;for(const hist of row.columns.values()){if(!(hist instanceof tr.v.Histogram))continue;histograms.addHistogram(hist);}}\nreturn histograms;}});return{MIDLINE_HORIZONTAL_ELLIPSIS,};});'use strict';tr.exportTo('tr.v.ui',function(){const PAGE_BREAKDOWN_KEY='pageBreakdown';Polymer({is:'tr-v-ui-metrics-visualization',created(){this.charts_=new Map();},ready(){this.$.start.addEventListener('keydown',(e)=>{if(e.key==='Enter')this.filterByPercentile_();});this.$.end.addEventListener('keydown',(e)=>{if(e.key==='Enter')this.filterByPercentile_();});this.$.search_page.addEventListener('keydown',(e)=>{if(e.key==='Enter')this.searchByPage_();});},build(chartData){this.title_=chartData.title;this.aggregateData_=chartData.aggregate;this.data_=chartData.page;this.submetricsData_=chartData.submetrics;this.benchmarkCount_=chartData.aggregate.length;const aggregateChart=this.initializeColumnChart(this.title_);Polymer.dom(this.$.aggregateContainer).appendChild(aggregateChart);this.charts_.set(tr.v.ui.AGGREGATE_KEY,aggregateChart);this.setChartColors_(tr.v.ui.AGGREGATE_KEY);aggregateChart.data=chartData.aggregate;this.setChartSize_(tr.v.ui.AGGREGATE_KEY);const newChart=this.initializeColumnChart(this.title_+' Breakdown');newChart.enableToolTip=true;newChart.toolTipCallBack=(rect)=>this.openChildChart_(rect);Polymer.dom(this.$.pageByPageContainer).appendChild(newChart);this.charts_.set(PAGE_BREAKDOWN_KEY,newChart);this.setChartColors_(PAGE_BREAKDOWN_KEY);newChart.data=this.data_;this.setChartSize_(PAGE_BREAKDOWN_KEY);},setChartSize_(page){const chart=this.charts_.get(page);const pageCount=chart.data.length;chart.graphHeight=tr.b.math.clamp(pageCount*20,400,600);chart.graphWidth=tr.b.math.clamp(pageCount*30,200,1000);},setChartColors_(page){const chart=this.charts_.get(page);const metrics=tr.v.ui.METRICS.get(this.title_);for(let i=0;i<this.benchmarkCount_;++i){for(let j=0;j<metrics.length;++j){const mainColorIndex=j%tr.v.ui.COLORS.length;const subColorIndex=i%tr.v.ui.COLORS[mainColorIndex].length;const color=tr.v.ui.COLORS[mainColorIndex][subColorIndex];const series=metrics[j]+'-'+this.aggregateData_[i].x;chart.getDataSeries(series).color=color;if(i===0){chart.getDataSeries(series).title=metrics[j];}else{chart.getDataSeries(series).title='';}}}},initializeColumnChart(title){const newChart=new tr.ui.b.NameColumnChart();newChart.hideLegend=false;newChart.isStacked=true;newChart.yAxisLabel='ms';newChart.hideXAxis=true;newChart.displayXInHover=true;newChart.isGrouped=true;newChart.showTitleInLegend=true;newChart.chartTitle=title;newChart.titleHeight='14pt';return newChart;},initializeChildChart_(title,height,width){const div=document.createElement('div');div.classList.add('container');Polymer.dom(this.$.submetricsContainer).insertBefore(div,this.$.submetricsContainer.firstChild);const childChart=new tr.ui.b.NameBarChart();childChart.xAxisLabel='ms';childChart.chartTitle=title;childChart.graphHeight=height;childChart.graphWidth=width;childChart.titleHeight='14pt';childChart.isStacked=true;childChart.hideLegend=true;childChart.isGrouped=true;childChart.isWaterfall=true;div.appendChild(childChart);const button=this.initializeCloseButton_(div,this.$.submetricsContainer);div.appendChild(button);return childChart;},initializeCloseButton_(div,parent){const button=this.$.close.cloneNode(true);button.style.display='inline-block';button.addEventListener('click',()=>{Polymer.dom(parent).removeChild(div);});return button;},openChildChart_(rect){const metrics=tr.v.ui.METRICS.get(this.title_);let metric;let metricIndex;for(let i=0;i<metrics.length;++i){if(rect.key.startsWith(metrics[i])){metric=metrics[i];metricIndex=i;break;}}\nconst page=rect.datum.group;const title=this.title_+' '+metric+': '+page;const submetrics=this.submetricsData_.get(page).get(metric);const width=tr.b.math.clamp(submetrics.size*150,300,700);const height=tr.b.math.clamp(submetrics.size*this.benchmarkCount_*50,300,700);const childChart=this.initializeChildChart_(title,height,width);childChart.data=this.processSubmetrics_(childChart,submetrics,0,metricIndex).data;},processSubmetrics_(chart,submetrics,hideValue,metricIndex){const finalData=[];let submetricIndex=0;for(const submetric of submetrics.values()){let benchmarkIndex=0;for(const benchmark of submetric.values()){benchmark.hide=!hideValue?0:hideValue;const series=benchmark.x+'-'+benchmark.group;const mainColorIndex=metricIndex%tr.v.ui.COLORS.length;const subColorIndex=benchmarkIndex%tr.v.ui.COLORS[mainColorIndex].length;chart.getDataSeries(series).color=tr.v.ui.COLORS[mainColorIndex][subColorIndex];if(benchmarkIndex===(this.benchmarkCount_-1)){hideValue+=benchmark[series];}\nfinalData.push(benchmark);benchmarkIndex++;}\nsubmetricIndex++;}\nreturn{data:finalData,hide:hideValue};},filterByPercentile_(){const startPercentile=this.$.start.value;const endPercentile=this.$.end.value;if(startPercentile===''||endPercentile==='')return;const length=this.data_.length/(this.benchmarkCount_+1);const startIndex=this.getPercentileIndex_(startPercentile,length);const endIndex=this.getPercentileIndex_(endPercentile,length);this.charts_.get(PAGE_BREAKDOWN_KEY).data=this.data_.slice(startIndex,endIndex);},getPercentileIndex_(percentile,arrayLength){const index=Math.ceil(arrayLength*(percentile/100.0));if(index===-1)return 0;if(index>=arrayLength)return arrayLength;return index*this.benchmarkCount_;},searchByPage_(){const criteria=this.$.search_page.value;if(criteria==='')return;const query=new RegExp(criteria);const filteredData=[...this.data_].filter(group=>{if(group.group)return group.group.match(query);return false;});if(filteredData.length<1){this.$.search_error.style.display='block';return;}\nconst page=filteredData[0].group;const title=this.title_+' Breakdown: '+page;const metricToSubmetricMap=this.submetricsData_.get(page);let totalSubmetrics=0;for(const submetrics of metricToSubmetricMap.values()){for(const benchmark of submetrics.values()){totalSubmetrics+=benchmark.length;}}\nconst width=tr.b.math.clamp(totalSubmetrics*150,300,700);const height=tr.b.math.clamp(totalSubmetrics*this.benchmarkCount_*30,300,700);const childChart=this.initializeChildChart_(title,height,width);const childData=[];let hide=0;let metricIndex=0;for(const submetrics of metricToSubmetricMap.values()){const submetricsData=this.processSubmetrics_(childChart,submetrics,hide,metricIndex);childData.push(...submetricsData.data);hide=submetricsData.hide;metricIndex++;}\nchildChart.data=childData;},});});'use strict';Polymer({is:'tr-v-ui-raster-visualization',ready(){this.$.pageSelector.addEventListener('click',()=>{this.selectPage_();});this.$.search_page.addEventListener('keydown',(e)=>{if(e.key==='Enter')this.searchByPage_();});this.$.search_button.addEventListener('click',()=>{this.searchByPage_();});},build(chartData){this.data_=chartData;const aggregateChart=this.createChart_('Aggregate Data by Run');Polymer.dom(this.$.aggregateContainer).appendChild(aggregateChart);aggregateChart.enableToolTip=true;aggregateChart.toolTipCallBack=(rect)=>this.openBenchmarkChart_(rect);this.setChartColors_(aggregateChart,this.data_.get(tr.v.ui.AGGREGATE_KEY));aggregateChart.data=this.data_.get(tr.v.ui.AGGREGATE_KEY);this.setChartSize_(aggregateChart,this.data_.get(tr.v.ui.AGGREGATE_KEY).length);for(const page of this.data_.keys()){if(page===tr.v.ui.AGGREGATE_KEY)continue;const option=document.createElement('option');option.textContent=page;option.value=page;this.$.pageSelector.appendChild(option);}},setChartSize_(chart,pageCount,dataLength){chart.graphHeight=tr.b.math.clamp(pageCount*25,175,1000);chart.graphWidth=tr.b.math.clamp(pageCount*25,500,1000);},setChartColors_(chart,data){const metrics=new Map();let count=0;for(const thread of tr.v.ui.FRAME.values()){for(const metric of thread.keys()){metrics.set(metric,count);count++;}}\nfor(let i=0;i<Math.floor(data.length/tr.v.ui.FRAME.length);++i){let j=0;for(const[threadName,thread]of tr.v.ui.FRAME.entries()){for(const metric of thread.keys()){let color='transparent';if(thread.get(metric)){const mainColorIndex=metrics.get(metric)%tr.v.ui.COLORS.length;const subColorIndex=i%tr.v.ui.COLORS[mainColorIndex].length;color=tr.v.ui.COLORS[mainColorIndex][subColorIndex];}\nconst series=metric+'-'+data[i*2+j].x+'-'+threadName;chart.getDataSeries(series).color=color;chart.getDataSeries(series).title=!i?metric:'';}\nj++;}}},createChart_(title){const newChart=new tr.ui.b.NameBarChart();newChart.chartTitle=title;newChart.xAxisLabel='ms';newChart.hideLegend=false;newChart.showTitleInLegend=true;newChart.hideYAxis=true;newChart.isStacked=true;newChart.displayXInHover=true;newChart.isGrouped=true;return newChart;},openBenchmarkChart_(rect){const benchmarkIndex=Math.floor(rect.index/tr.v.ui.FRAME.length);const title=rect.datum.x;const div=document.createElement('div');Polymer.dom(this.$.pageContainer).insertBefore(div,this.$.pageContainer.firstChild);const chart=this.createChart_(title);div.appendChild(chart);const button=this.initializeCloseButton_(div,this.$.pageContainer);div.appendChild(button);const newDataSet=[];for(const page of this.data_.keys()){if(page===tr.v.ui.AGGREGATE_KEY)continue;for(let i=0;i<tr.v.ui.FRAME.length;i++){newDataSet.push(this.data_.get(page)[benchmarkIndex*tr.v.ui.FRAME.length+i]);}}\nthis.setChartColors_(chart,newDataSet);chart.data=newDataSet;this.setChartSize_(chart,newDataSet.length);},selectPage_(){const div=document.createElement('div');const page=this.$.pageSelector.value;if(page==='')return;Polymer.dom(this.$.pageContainer).insertBefore(div,this.$.pageContainer.firstChild);const pageChart=this.createChart_(page);div.appendChild(pageChart);const button=this.initializeCloseButton_(div,this.$.pageContainer);div.appendChild(button);const pageData=this.data_.get(page);this.setChartColors_(pageChart,pageData);pageChart.data=pageData;this.setChartSize_(pageChart,pageData.length);},searchByPage_(){const criteria=this.$.search_page.value;if(criteria==='')return;const query=new RegExp(criteria);const filteredData=[...this.data_.keys()].filter(page=>page.match(query));if(filteredData.length<1){this.$.search_error.style.display='block';return;}\nconst page=filteredData[0];const div=document.createElement('div');Polymer.dom(this.$.pageContainer).insertBefore(div,this.$.pageContainer.firstChild);const pageChart=this.createChart_(page);div.appendChild(pageChart);const button=this.initializeCloseButton_(div,this.$.pageContainer);div.appendChild(button);const pageData=this.data_.get(page);this.setChartColors_(pageChart,pageData);pageChart.data=pageData;this.setChartSize_(pageChart,pageData.length);},initializeCloseButton_(div,parent){const button=this.$.close.cloneNode(true);button.style.display='inline-block';button.addEventListener('click',()=>{Polymer.dom(parent).removeChild(div);});return button;},});'use strict';tr.exportTo('tr.v.ui',function(){const STATISTICS_KEY='statistics';const SUBMETRICS_KEY='submetrics';const AGGREGATE_KEY='aggregate';const RASTER_START_METRIC_KEY='pipeline:begin_frame_to_raster_start';const COLORS=[['#FFD740','#FFC400','#FFAB00','#E29800'],['#FF6E40','#FF3D00','#DD2C00','#A32000'],['#40C4FF','#00B0FF','#0091EA','#006DAF'],['#89C641','#54B503','#4AA510','#377A0D'],['#B388FF','#7C4DFF','#651FFF','#6200EA'],['#FF80AB','#FF4081','#F50057','#C51162'],['#FFAB40','#FF9100','#FF6D00','#D65C02'],['#8C9EFF','#536DFE','#3D5AFE','#304FFE']];const FRAME=[new Map([['pipeline:begin_frame_to_raster_start',false],['pipeline:begin_frame_to_raster_end',true]]),new Map([['pipeline:begin_frame_transport',true],['pipeline:begin_frame_to_frame_submission',true],['pipeline:frame_submission_to_display',true],['pipeline:draw',true]])];const METRICS=new Map([['Pipeline',['pipeline:begin_frame_transport','pipeline:begin_frame_to_frame_submission','pipeline:frame_submission_to_display','pipeline:draw']],['Thread',['thread_browser_cpu_time_per_frame','thread_display_compositor_cpu_time_per_frame','thread_GPU_cpu_time_per_frame','thread_IO_cpu_time_per_frame','thread_other_cpu_time_per_frame','thread_raster_cpu_time_per_frame','thread_renderer_compositor_cpu_time_per_frame','thread_renderer_main_cpu_time_per_frame']]]);function getValueFromMap(key,map){let retrievedValue=map.get(key);if(!retrievedValue){retrievedValue=new Map();map.set(key,retrievedValue);}\nreturn retrievedValue;}\nPolymer({is:'tr-v-ui-visualizations-data-container',created(){this.orderedBenchmarks_=[];this.groupedData_=new Map();},build(leafHistograms,histograms){if(!leafHistograms||leafHistograms.length<1||!histograms||histograms.length<1){this.$.data_error.style.display='block';return;}\nthis.processHistograms_(this.groupHistograms_(histograms),this.groupHistograms_(leafHistograms));this.buildCharts_();},processHistograms_(histograms,leafHistograms){const benchmarkStartGrouping=tr.v.HistogramGrouping.BY_KEY.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);const benchmarkToStartTime=new Map();for(const[metric,benchmarks]of histograms.entries()){for(const[benchmark,pages]of leafHistograms.get(metric).entries()){for(const[page,histograms]of pages.entries()){for(const histogram of histograms){const aggregateToBenchmarkMap=getValueFromMap(AGGREGATE_KEY,this.groupedData_);const benchmarkToMetricMap=getValueFromMap(benchmark,aggregateToBenchmarkMap);benchmarkToMetricMap.set(metric,new Map([[STATISTICS_KEY,histogram.running]]));}}}\nfor(const[benchmark,pages]of benchmarks.entries()){for(const[page,histograms]of pages.entries()){for(const histogram of histograms){if(!benchmarkToStartTime.get(benchmark)){benchmarkToStartTime.set(benchmark,benchmarkStartGrouping.callback(histogram));}\nconst pageToBenchmarkMap=getValueFromMap(page,this.groupedData_);const benchmarkToMetricMap=getValueFromMap(benchmark,pageToBenchmarkMap);const mergedSubmetrics=new tr.v.d.DiagnosticMap();for(const bin of histogram.allBins){for(const map of bin.diagnosticMaps){mergedSubmetrics.addDiagnostics(map);}}\nif(benchmarkToMetricMap.get(metric))continue;benchmarkToMetricMap.set(metric,new Map([[STATISTICS_KEY,histogram.running],[SUBMETRICS_KEY,mergedSubmetrics.get('breakdown')]]));}}}}\nthis.orderedBenchmarks_=this.sortBenchmarks_(benchmarkToStartTime);},groupHistograms_(histograms){const groupings=[tr.v.HistogramGrouping.HISTOGRAM_NAME,tr.v.HistogramGrouping.DISPLAY_LABEL,tr.v.HistogramGrouping.BY_KEY.get(tr.v.d.RESERVED_NAMES.STORIES)];return histograms.groupHistogramsRecursively(groupings);},sortBenchmarks_(benchmarks){return Array.from(benchmarks.keys()).sort((a,b)=>{Date.parse(benchmarks.get(a))-Date.parse(benchmarks.get(b));});},getSeriesKey_(metric,benchmark){return metric+'-'+benchmark;},buildCharts_(){const rasterDataToBePassed=this.buildRasterChart_();this.$.rasterVisualization.build(rasterDataToBePassed);for(const chartName of METRICS.keys()){const metricsDataToBePassed=this.buildMetricsData_(chartName);const newChart=this.$.metricsVisualization.cloneNode(true);newChart.style.display='block';Polymer.dom(this.$.metrics_container).appendChild(newChart);newChart.build(metricsDataToBePassed);}},buildRasterChart_(){const orderedPages=[...this.groupedData_.keys()].filter((page)=>this.filterPagesWithoutRasterMetric_(page)).sort((a,b)=>this.sortByRasterStart_(a,b));const allChartData=new Map();for(const page of orderedPages){const pageMap=this.groupedData_.get(page);let chartData=[];for(const benchmark of this.orderedBenchmarks_){if(!pageMap.has(benchmark))continue;const benchmarkMap=pageMap.get(benchmark);const benchmarkData=[];if(benchmarkMap.get(RASTER_START_METRIC_KEY)===undefined){continue;}\nfor(const[threadName,thread]of FRAME.entries()){const data={x:benchmark,hide:0};if(page!==AGGREGATE_KEY)data.group=page;let rasterBegin=0;for(const metric of thread.keys()){const metricMap=benchmarkMap.get(metric);const key=this.getSeriesKey_(metric,data.x+'-'+threadName);const stats=metricMap.get(STATISTICS_KEY);const mean=stats?stats.mean:0;let roundedMean=Math.round(mean*100)/100;if(metric===RASTER_START_METRIC_KEY){rasterBegin=roundedMean;}else if(metric==='pipeline:begin_frame_to_raster_end'){roundedMean-=rasterBegin;}\ndata[key]=roundedMean;}\nbenchmarkData.push(data);}\nchartData=chartData.concat(benchmarkData);}\nallChartData.set(page,chartData);}\nreturn allChartData;},buildMetricsData_(chartName){const orderedPages=[...this.groupedData_.keys()].sort((a,b)=>this.sortByTotal_(a,b,chartName));const chartData=[];const aggregateChart=[];for(const page of orderedPages){const pageMap=this.groupedData_.get(page);for(const benchmark of this.orderedBenchmarks_){if(!pageMap.has(benchmark))continue;const data={x:benchmark,group:page};const benchmarkMap=pageMap.get(benchmark);for(const metric of METRICS.get(chartName)){const metricMap=benchmarkMap.get(metric);const key=this.getSeriesKey_(metric,benchmark);const stats=metricMap.get(STATISTICS_KEY);const mean=stats?stats.mean:0;data[key]=Math.round(mean*100)/100;}\nif(page===AGGREGATE_KEY){aggregateChart.push(data);}else{chartData.push(data);}}\nchartData.push({});}\nchartData.shift();return{title:chartName,aggregate:aggregateChart,page:chartData,submetrics:this.processSubmetricsData_(chartName)};},submetricsHelper_(submetric,value,benchmark,metricToSubmetricMap){let submetricToBenchmarkMap=metricToSubmetricMap.get(submetric);if(!submetricToBenchmarkMap){submetricToBenchmarkMap=[];metricToSubmetricMap.set(submetric,submetricToBenchmarkMap);}\nconst data={x:submetric,hide:0,group:benchmark};const mean=value;const roundedMean=Math.round(mean*100)/100;if(!roundedMean)return;data[this.getSeriesKey_(submetric,benchmark)]=roundedMean;submetricToBenchmarkMap.push(data);},processSubmetricsData_(chartName){const submetrics=new Map();for(const[page,pageMap]of this.groupedData_.entries()){if(page===AGGREGATE_KEY)continue;const pageToMetricMap=getValueFromMap(page,submetrics);for(const benchmark of this.orderedBenchmarks_){const benchmarkMap=pageMap.get(benchmark);if(!benchmarkMap)continue;for(const metric of METRICS.get(chartName)){const metricMap=benchmarkMap.get(metric);const metricToSubmetricMap=getValueFromMap(metric,pageToMetricMap);const submetrics=metricMap.get(SUBMETRICS_KEY);if(!submetrics){this.submetricsHelper_(metric,metricMap.get(STATISTICS_KEY),benchmark,metricToSubmetricMap);continue;}\nfor(const[submetric,value]of[...submetrics]){this.submetricsHelper_(submetric,value,benchmark,metricToSubmetricMap);}}}}\nreturn submetrics;},sortByTotal_(a,b,chartName){if(a===AGGREGATE_KEY)return-1;if(b===AGGREGATE_KEY)return 1;let aValue=0;const aMap=this.groupedData_.get(a);if(aMap.get(this.orderedBenchmarks_[0])!==undefined){for(const metric of METRICS.get(chartName)){const aMetricMap=aMap.get(this.orderedBenchmarks_[0]).get(metric);const aStats=aMetricMap.get(STATISTICS_KEY);aValue+=aStats?aStats.mean:0;}}\nlet bValue=0;const bMap=this.groupedData_.get(b);if(bMap.get(this.orderedBenchmarks_[0])!==undefined){for(const metric of METRICS.get(chartName)){const bMetricMap=bMap.get(this.orderedBenchmarks_[0]).get(metric);const bStats=bMetricMap.get(STATISTICS_KEY);bValue+=bStats?bStats.mean:0;}}\nreturn aValue-bValue;},filterPagesWithoutRasterMetric_(page){const pageMap=this.groupedData_.get(page);for(const benchmark of this.orderedBenchmarks_){const pageMetricMap=pageMap.get(benchmark);if(!pageMetricMap)continue;const wantedMetric=pageMetricMap.get(RASTER_START_METRIC_KEY);if(wantedMetric!==undefined)return true;}\nreturn false;},sortByRasterStart_(a,b){if(a===AGGREGATE_KEY)return 1;if(b===AGGREGATE_KEY)return-1;let aValue=0;const aMap=this.groupedData_.get(a);if(aMap.get(this.orderedBenchmarks_[0])!==undefined){const aMetricMap=aMap.get(this.orderedBenchmarks_[0]).get(RASTER_START_METRIC_KEY);const aStats=aMetricMap.get(STATISTICS_KEY);aValue=aStats?aStats.mean:0;}\nlet bValue=0;const bMap=this.groupedData_.get(b);if(bMap.get(this.orderedBenchmarks_[0])!==undefined){const bMetricMap=bMap.get(this.orderedBenchmarks_[0]).get(RASTER_START_METRIC_KEY);const bStats=bMetricMap.get(STATISTICS_KEY);bValue=bStats?bStats.mean:0;}\nreturn bValue-aValue;},});return{STATISTICS_KEY,SUBMETRICS_KEY,AGGREGATE_KEY,COLORS,FRAME,METRICS,getValueFromMap,};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-histogram-set-view',listeners:{export:'onExport_',loadVisualization:'onLoadVisualization_'},created(){this.brushingStateController_=new tr.ui.NullBrushingStateController();this.viewState_=new tr.v.ui.HistogramSetViewState();this.visualizationLoaded_=false;},ready(){this.$.table.viewState=this.viewState;this.$.controls.viewState=this.viewState;},attached(){this.brushingStateController.parentController=tr.c.BrushingStateController.getControllerForElement(this.parentNode);},get brushingStateController(){return this.brushingStateController_;},get viewState(){return this.viewState_;},get histograms(){return this.$.table.histograms;},async build(histograms,opt_options){const options=opt_options||{};const progress=options.progress||(()=>Promise.resolve());if(options.helpHref)this.$.controls.helpHref=options.helpHref;if(options.feedbackHref){this.$.controls.feedbackHref=options.feedbackHref;}\nif(histograms===undefined||histograms.length===0){this.$.container.style.display='none';this.$.zero.style.display='block';this.style.display='block';return;}\nthis.$.zero.style.display='none';this.$.container.style.display='block';this.$.container.style.maxHeight=(window.innerHeight-16)+'px';const buildMark=tr.b.Timing.mark('histogram-set-view','build');await progress('Finding important Histograms...');const sourceHistogramsMark=tr.b.Timing.mark('histogram-set-view','sourceHistograms');const sourceHistograms=histograms.sourceHistograms;sourceHistogramsMark.end();this.$.controls.showAllEnabled=(sourceHistograms.length!==histograms.length);await progress('Collecting parameters...');const collectParametersMark=tr.b.Timing.mark('histogram-set-view','collectParameters');const parameterCollector=new tr.v.HistogramParameterCollector();parameterCollector.process(histograms);this.$.controls.baseStatisticNames=parameterCollector.statisticNames;this.$.controls.possibleGroupings=parameterCollector.possibleGroupings;const displayLabels=parameterCollector.labels;this.$.controls.displayLabels=displayLabels;collectParametersMark.end();const hist=[...histograms][0];const benchmarks=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARKS);let enable=false;if(benchmarks!==undefined&&benchmarks.length>0){for(const benchmark of benchmarks){if(benchmark.includes('rendering')){enable=true;break;}}}\nthis.$.controls.enableVisualization=enable;await this.$.table.build(histograms,sourceHistograms,displayLabels,progress);buildMark.end();},onExport_(event){const mark=tr.b.Timing.mark('histogram-set-view','export'+\n(event.merged?'Merged':'Raw')+event.format.toUpperCase());const histograms=event.merged?this.$.table.leafHistograms:this.histograms;let blob;if(event.format==='csv'){const csv=new tr.v.CSVBuilder(histograms);csv.build();blob=new window.Blob([csv.toString()],{type:'text/csv'});}else if(event.format==='json'){blob=new window.Blob([JSON.stringify(histograms.asDicts())],{type:'text/json'});}else{throw new Error(`Unable to export format \"${event.format}\"`);}\nconst path=window.location.pathname.split('/');const basename=path[path.length-1].split('.')[0]||'histograms';const anchor=document.createElement('a');anchor.download=`${basename}.${event.format}`;anchor.href=window.URL.createObjectURL(blob);anchor.click();mark.end();},onLoadVisualization_(event){if(!this.visualizationLoaded_){this.$.visualizations.style.display='block';this.$.visualizations.build(this.$.table.leafHistograms,this.histograms);this.visualizationLoaded_=true;}else if(this.$.visualizations.style.display==='none'){this.$.visualizations.style.display='block';}else{this.$.visualizations.style.display='none';}},});return{};});'use strict';tr.exportTo('tr.ui',function(){Polymer({is:'tr-ui-sp-metrics-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.model_=undefined;this.rangeOfInterest_=undefined;this.metricLatenciesMs_=[];this.metrics_=[];tr.metrics.MetricRegistry.getAllRegisteredTypeInfos().forEach(function(m){if(m.constructor.name==='sampleMetric')return;this.metrics_.push({label:m.constructor.name,value:m.constructor.name});},this);this.metrics_.sort((x,y)=>x.label.localeCompare(y.label));this.settingsKey_='metrics-side-panel-metric-name';this.currentMetricName_='responsivenessMetric';const metricSelector=tr.ui.b.createSelector(this,'currentMetricName_',this.settingsKey_,this.currentMetricName_,this.metrics_);Polymer.dom(this.$.top_left_controls).appendChild(metricSelector);metricSelector.addEventListener('change',this.onMetricChange_.bind(this));this.currentMetricTypeInfo_=tr.metrics.MetricRegistry.findTypeInfoWithName(this.currentMetricName_);this.recomputeButton_=tr.ui.b.createButton('Recompute',this.onRecompute_,this);Polymer.dom(this.$.top_left_controls).appendChild(this.recomputeButton_);this.$.results.addEventListener('display-ready',()=>{this.$.results.style.display='';});},async build(model){this.model_=model;await this.updateContents_();},get metricLatencyMs(){return tr.b.math.Statistics.mean(this.metricLatenciesMs_);},onMetricChange_(){this.currentMetricTypeInfo_=tr.metrics.MetricRegistry.findTypeInfoWithName(this.currentMetricName_);this.metricLatenciesMs_=[];this.updateContents_();},onRecompute_(){this.updateContents_();},get textLabel(){return'Metrics';},supportsModel(m){if(!m){return{supported:false,reason:'No model available'};}\nreturn{supported:true};},get model(){return this.model_;},set model(model){this.build(model);},get selection(){},set selection(_){},get rangeOfInterest(){return this.rangeOfInterest_;},set rangeOfInterest(range){this.rangeOfInterest_=range;if(this.currentMetricTypeInfo_&&this.currentMetricTypeInfo_.metadata.supportsRangeOfInterest){if((this.metricLatencyMs===undefined)||(this.metricLatencyMs<100)){this.updateContents_();}else{this.recomputeButton_.style.background='red';}}},async updateContents_(){Polymer.dom(this.$.error).textContent='';this.$.results.style.display='none';if(!this.model_){Polymer.dom(this.$.error).textContent='Missing model';return;}\nconst options={metrics:[this.currentMetricName_]};if(this.currentMetricTypeInfo_&&this.currentMetricTypeInfo_.metadata.supportsRangeOfInterest&&this.rangeOfInterest&&!this.rangeOfInterest.isEmpty){options.rangeOfInterest=this.rangeOfInterest;}\nconst startDate=new Date();const addFailureCb=failure=>{Polymer.dom(this.$.error).textContent=failure.description;};const histograms=tr.metrics.runMetrics(this.model_,options,addFailureCb);this.metricLatenciesMs_.push(new Date()-startDate);while(this.metricLatenciesMs_.length>20){this.metricLatenciesMs_.shift();}\nthis.recomputeButton_.style.background='';await this.$.results.build(histograms);}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-sp-metrics-side-panel');});return{};});'use strict';Polymer({is:'tr-ui-e-s-alerts-side-panel',behaviors:[tr.ui.behaviors.SidePanel],ready(){this.rangeOfInterest_=new tr.b.math.Range();this.selection_=undefined;},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();},set selection(selection){},set rangeOfInterest(rangeOfInterest){},selectAlertsOfType(alertTypeString){const alertsOfType=this.model_.alerts.filter(function(alert){return alert.title===alertTypeString;});const event=new tr.model.RequestSelectionChangeEvent();event.selection=new tr.model.EventSet(alertsOfType);this.dispatchEvent(event);},alertsByType_(alerts){const alertsByType={};alerts.forEach(function(alert){if(!alertsByType[alert.title]){alertsByType[alert.title]=[];}\nalertsByType[alert.title].push(alert);});return alertsByType;},alertsTableRows_(alertsByType){return Object.keys(alertsByType).map(function(key){return{alertType:key,count:alertsByType[key].length};});},alertsTableColumns_(){return[{title:'Alert type',value(row){return row.alertType;},width:'180px'},{title:'Count',width:'100%',value(row){return row.count;}}];},createAlertsTable_(alerts){const alertsByType=this.alertsByType_(alerts);const table=document.createElement('tr-ui-b-table');table.tableColumns=this.alertsTableColumns_();table.tableRows=this.alertsTableRows_(alertsByType);table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;table.addEventListener('selection-changed',function(e){const row=table.selectedTableRow;if(row){this.selectAlertsOfType(row.alertType);}}.bind(this));return table;},updateContents_(){Polymer.dom(this.$.result_area).textContent='';if(this.model_===undefined)return;const panel=this.createAlertsTable_(this.model_.alerts);Polymer.dom(this.$.result_area).appendChild(panel);},supportsModel(m){if(m===undefined){return{supported:false,reason:'Unknown tracing model'};}else if(m.alerts.length===0){return{supported:false,reason:'No alerts in tracing model'};}\nreturn{supported:true};},get textLabel(){return'Alerts';}});tr.ui.side_panel.SidePanelRegistry.register(function(){return document.createElement('tr-ui-e-s-alerts-side-panel');});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){window.profilingView=undefined;document.addEventListener('DOMContentLoaded',function(){window.profilingView=new tr.ui.e.about_tracing.ProfilingView();profilingView.timelineView.globalMode=true;Polymer.dom(document.body).appendChild(profilingView);});return{};});\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/engine_bundle.js",
    "content": "var engine=function(){\"use strict\";function L(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function x(t){var r,n;return t.__esModule?t:(\"function\"==typeof(r=t.default)?(n=function e(){return this instanceof e?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)}).prototype=r.prototype:n={},Object.defineProperty(n,\"__esModule\",{value:!0}),Object.keys(t).forEach(function(e){var r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,r.get?r:{enumerable:!0,get:function(){return t[e]}})}),n)}var n={},r={},o=function(e,r){return(o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,r){e.__proto__=r}:function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}))(e,r)};function e(e,r){if(\"function\"!=typeof r&&null!==r)throw new TypeError(\"Class extends value \"+String(r)+\" is not a constructor or null\");function t(){this.constructor=e}o(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}var t=function(){return(t=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e}).apply(this,arguments)};function a(e,r){var t={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols)for(var n=0,o=Object.getOwnPropertySymbols(e);n<o.length;n++)r.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(t[o[n]]=e[o[n]]);return t}function i(e,r,t,n){var o,a=arguments.length,i=a<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)i=Reflect.decorate(e,r,t,n);else for(var s=e.length-1;0<=s;s--)(o=e[s])&&(i=(a<3?o(i):3<a?o(r,t,i):o(r,t))||i);return 3<a&&i&&Object.defineProperty(r,t,i),i}function s(t,n){return function(e,r){n(e,r,t)}}function l(e,r){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,r)}function c(e,i,s,l){return new(s=s||Promise)(function(t,r){function n(e){try{a(l.next(e))}catch(e){r(e)}}function o(e){try{a(l.throw(e))}catch(e){r(e)}}function a(e){var r;e.done?t(e.value):((r=e.value)instanceof s?r:new s(function(e){e(r)})).then(n,o)}a((l=l.apply(e,i||[])).next())})}function d(n,o){var a,i,s,l={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},c={next:e(0),throw:e(1),return:e(2)};return\"function\"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function e(t){return function(e){var r=[t,e];if(a)throw new TypeError(\"Generator is already executing.\");for(;l=c&&r[c=0]?0:l;)try{if(a=1,i&&(s=2&r[0]?i.return:r[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,r[1])).done)return s;switch(i=0,(r=s?[2&r[0],s.value]:r)[0]){case 0:case 1:s=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(s=0<(s=l.trys).length&&s[s.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!s||r[1]>s[0]&&r[1]<s[3]))l.label=r[1];else if(6===r[0]&&l.label<s[1])l.label=s[1],s=r;else{if(!(s&&l.label<s[2])){s[2]&&l.ops.pop(),l.trys.pop();continue}l.label=s[2],l.ops.push(r)}}r=o.call(n,l)}catch(e){r=[6,e],i=0}finally{a=s=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}}var u=Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&(\"get\"in o?r.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){e[n=void 0===n?t:n]=r[t]};function m(e,r){for(var t in e)\"default\"===t||Object.prototype.hasOwnProperty.call(r,t)||u(r,e,t)}function f(e){var r=\"function\"==typeof Symbol&&Symbol.iterator,t=r&&e[r],n=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(r?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function p(e,r){var t=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,o,a=t.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(n=a.next()).done;)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(o)throw o.error}}return i}function h(){for(var e=[],r=0;r<arguments.length;r++)e=e.concat(p(arguments[r]));return e}function _(){for(var e=0,r=0,t=arguments.length;r<t;r++)e+=arguments[r].length;for(var n=Array(e),o=0,r=0;r<t;r++)for(var a=arguments[r],i=0,s=a.length;i<s;i++,o++)n[o]=a[i];return n}function E(e,r,t){if(t||2===arguments.length)for(var n,o=0,a=r.length;o<a;o++)!n&&o in r||((n=n||Array.prototype.slice.call(r,0,o))[o]=r[o]);return e.concat(n||Array.prototype.slice.call(r))}function w(e){return this instanceof w?(this.v=e,this):new w(e)}function g(e,r,t){var o,a,i;if(Symbol.asyncIterator)return o=t.apply(e,r||[]),a=[],i={},n(\"next\"),n(\"throw\"),n(\"return\",function(r){return function(e){return Promise.resolve(e).then(r,c)}}),i[Symbol.asyncIterator]=function(){return this},i;throw new TypeError(\"Symbol.asyncIterator is not defined.\");function n(n,e){o[n]&&(i[n]=function(t){return new Promise(function(e,r){1<a.push([n,t,e,r])||s(n,t)})},e)&&(i[n]=e(i[n]))}function s(e,r){try{(t=o[e](r)).value instanceof w?Promise.resolve(t.value.v).then(l,c):d(a[0][2],t)}catch(e){d(a[0][3],e)}var t}function l(e){s(\"next\",e)}function c(e){s(\"throw\",e)}function d(e,r){e(r),a.shift(),a.length&&s(a[0][0],a[0][1])}}function y(n){var o,e={};return r(\"next\"),r(\"throw\",function(e){throw e}),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,t){e[r]=n[r]?function(e){return(o=!o)?{value:w(n[r](e)),done:!1}:t?t(e):e}:t}}function v(i){var e,r;if(Symbol.asyncIterator)return(e=i[Symbol.asyncIterator])?e.call(i):(i=f(i),r={},t(\"next\"),t(\"throw\"),t(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);throw new TypeError(\"Symbol.asyncIterator is not defined.\");function t(a){r[a]=i[a]&&function(o){return new Promise(function(e,r){var t,n;o=i[a](o),t=e,e=r,n=o.done,r=o.value,Promise.resolve(r).then(function(e){t({value:e,done:n})},e)})}}}function S(e,r){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:r}):e.raw=r,e}var U=Object.create?function(e,r){Object.defineProperty(e,\"default\",{enumerable:!0,value:r})}:function(e,r){e.default=r};function b(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)\"default\"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&u(r,e,t);return U(r,e),r}function F(e){return e&&e.__esModule?e:{default:e}}function k(e,r,t,n){if(\"a\"===t&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof r?e===r&&n:r.has(e))return\"m\"===t?n:\"a\"===t?n.call(e):n?n.value:r.get(e);throw new TypeError(\"Cannot read private member from an object whose class did not declare it\")}function T(e,r,t,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof r?e===r&&o:r.has(e))return\"a\"===n?o.call(e,t):o?o.value=t:r.set(e,t),t;throw new TypeError(\"Cannot write private member to an object whose class did not declare it\")}function A(e,r){if(null===r||\"object\"!=typeof r&&\"function\"!=typeof r)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?r===e:e.has(r)}function O(e,r,t){if(null!=r){if(\"object\"!=typeof r&&\"function\"!=typeof r)throw new TypeError(\"Object expected.\");var n,o;if(t){if(!Symbol.asyncDispose)throw new TypeError(\"Symbol.asyncDispose is not defined.\");n=r[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError(\"Symbol.dispose is not defined.\");n=r[Symbol.dispose],t&&(o=n)}if(\"function\"!=typeof n)throw new TypeError(\"Object not disposable.\");o&&(n=function(){try{o.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:r,dispose:n,async:t})}else t&&e.stack.push({async:!0});return r}var B=\"function\"==typeof SuppressedError?SuppressedError:function(e,r,t){t=new Error(t);return t.name=\"SuppressedError\",t.error=e,t.suppressed=r,t};function D(n){function o(e){n.error=n.hasError?new B(e,n.error,\"An error was suppressed during disposal.\"):e,n.hasError=!0}return function r(){for(;n.stack.length;){var e=n.stack.pop();try{var t=e.dispose&&e.dispose.call(e.value);if(e.async)return Promise.resolve(t).then(r,function(e){return o(e),r()})}catch(e){o(e)}}if(n.hasError)throw n.error}()}var j,z={__extends:e,__assign:t,__rest:a,__decorate:i,__param:s,__metadata:l,__awaiter:c,__generator:d,__createBinding:u,__exportStar:m,__values:f,__read:p,__spread:h,__spreadArrays:_,__spreadArray:E,__await:w,__asyncGenerator:g,__asyncDelegator:y,__asyncValues:v,__makeTemplateObject:S,__importStar:b,__importDefault:F,__classPrivateFieldGet:k,__classPrivateFieldSet:T,__classPrivateFieldIn:A,__addDisposableResource:O,__disposeResources:D},H=x(Object.freeze({__proto__:null,__extends:e,get __assign(){return t},__rest:a,__decorate:i,__param:s,__esDecorate:function(e,r,t,n,o,a){function i(e){if(void 0!==e&&\"function\"!=typeof e)throw new TypeError(\"Function expected\");return e}for(var s,l=n.kind,c=\"getter\"===l?\"get\":\"setter\"===l?\"set\":\"value\",e=!r&&e?n.static?e:e.prototype:null,d=r||(e?Object.getOwnPropertyDescriptor(e,n.name):{}),u=!1,m=t.length-1;0<=m;m--){var f,p={};for(f in n)p[f]=\"access\"===f?{}:n[f];for(f in n.access)p.access[f]=n.access[f];p.addInitializer=function(e){if(u)throw new TypeError(\"Cannot add initializers after decoration has completed\");a.push(i(e||null))};var h=(0,t[m])(\"accessor\"===l?{get:d.get,set:d.set}:d[c],p);if(\"accessor\"===l){if(void 0!==h){if(null===h||\"object\"!=typeof h)throw new TypeError(\"Object expected\");(s=i(h.get))&&(d.get=s),(s=i(h.set))&&(d.set=s),(s=i(h.init))&&o.unshift(s)}}else(s=i(h))&&(\"field\"===l?o.unshift(s):d[c]=s)}e&&Object.defineProperty(e,n.name,d),u=!0},__runInitializers:function(e,r,t){for(var n=2<arguments.length,o=0;o<r.length;o++)t=n?r[o].call(e,t):r[o].call(e);return n?t:void 0},__propKey:function(e){return\"symbol\"==typeof e?e:\"\".concat(e)},__setFunctionName:function(e,r,t){return\"symbol\"==typeof r&&(r=r.description?\"[\".concat(r.description,\"]\"):\"\"),Object.defineProperty(e,\"name\",{configurable:!0,value:t?\"\".concat(t,\" \",r):r})},__metadata:l,__awaiter:c,__generator:d,__createBinding:u,__exportStar:m,__values:f,__read:p,__spread:h,__spreadArrays:_,__spreadArray:E,__await:w,__asyncGenerator:g,__asyncDelegator:y,__asyncValues:v,__makeTemplateObject:S,__importStar:b,__importDefault:F,__classPrivateFieldGet:k,__classPrivateFieldSet:T,__classPrivateFieldIn:A,__addDisposableResource:O,__disposeResources:D,default:z})),P={};function G(){return j||(j=1,Object.defineProperty(P,\"__esModule\",{value:!0}),P.defer=function(){let t=null,n=null;var e=new Promise((e,r)=>[t,n]=[e,r]);return Object.assign(e,{resolve:t,reject:n})}),P}var W,M={},N={};var $,Y,I={};function V(){return $||($=1,Object.defineProperty(I,\"__esModule\",{value:!0}),I.exists=function(e){return null!=e},I.escapeCSSSelector=function(e){return e.replace(/([!\"#$%&'()*+,.\\/:;<=>?@[\\\\\\]^`{|}~])/g,\"\\\\$1\")},I.getOrCreate=function(e,r,t){var n=e.get(r);return void 0===n&&(n=t(),e.set(r,n)),n},I.createProxy=function(e,o){return new Proxy(e,{get:(e,r,t)=>{var n=o[r];return void 0!==n?\"function\"==typeof n?n.bind(o):n:\"function\"==typeof(n=Reflect.get(e,r,t))?n.bind(e):n}})}),I}function K(){if(!Y){Y=1,Object.defineProperty(M,\"__esModule\",{value:!0}),M.assertExists=function(e,r){if(null!=e)return e;throw new Error(r??\"Value doesn't exist\")},M.assertDefined=function(e){if(void 0===e)throw new Error(\"Value is undefined\");return e},M.assertIsInstance=function(e,r,t){return n(e instanceof r,t??\"Value is not an instance of \"+r.name),e},M.assertTrue=n,M.assertFalse=function(e,r){n(!e,r)},M.assertUnreachable=function(e,r){throw new Error(r??\"This code should not be reachable \"+e)},M.addErrorHandler=function(e){m.includes(e)||m.push(e)},M.reportError=function(r){let t=void 0,n=\"\",e;var o=[],a=location.protocol+\"//\"+location.host;r instanceof ErrorEvent?(e=\"ERROR\",t=null===r.error||void 0===r.error?(s=(\"\"+r.message).split(\"\\n\"),n=s[0],{stack:s.slice(1).join(\"\\n\")}):(n=\"\"+r.error,r.error)):r instanceof PromiseRejectionEvent?(e=\"PROMISE_REJ\",n=\"\"+r.reason,t=r.reason):(e=\"OTHER\",n=\"\"+r);if(n=(n=(n=n.replace(/^Uncaught Error:/,\"\")).replace(/^Error:/,\"\")).trim(),void 0!==t&&null!==t){var i,s=t.stack;let e=void 0!==s?\"\"+s:\"\";for(i of(e=e.replaceAll(/\\r/g,\"\")).split(\"\\n\"))if(!n.includes(i)){var l=(i=(i=i.replace(/^\\s*at\\s*/,\"\")).replace(/\\s*\\(([^)]+)\\)$/,\"@$1\")).lastIndexOf(\"@\");let e=\"\",r=\"\";0<=l?(r=i.substring(l+1),e=i.substring(0,l)):r=i,r.includes(a)&&(r=(r=r.replace(a,\"\")).replace(`/${d.VERSION}/`,\"\")),o.push({name:e,location:r})}r=o.find(e=>e.name.includes(\"perfetto::\"))?.name;n.includes(\"RuntimeError\")&&(0,u.exists)(r)&&(n+=\" @ \"+r.trim())}for(const c of m)c({errType:e,message:n,stack:o})};W||(W=1,Object.defineProperty(N,\"__esModule\",{value:!0}),N.SCM_REVISION=N.VERSION=void 0,N.VERSION=\"v52.0-6b9586def\",N.SCM_REVISION=\"6b9586defccdef92d77b32e1338db72c8e5d5e7c\");const d=N,u=V(),m=[];function n(e,r){if(!e)throw new Error(r??\"Failed assertion\")}}return M}var q,R={exports:{}};function X(){function e(L={}){var x,U,B,j,i=L,e=(new Promise((e,r)=>{x=e,U=r}),\"object\"==typeof window),d=\"undefined\"!=typeof WorkerGlobalScope,r=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node&&\"renderer\"!=process.type,t=!e&&!r&&!d,z=[],H=\"./this.program\",G=(e,r)=>{throw r},W=(d&&(Sr=self.location.href),\"\");if(t){if(\"object\"==typeof process||\"object\"==typeof window||\"undefined\"!=typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\")}else{if(!e&&!d)throw new Error(\"environment detection error\");try{W=new URL(\".\",Sr).href}catch{}if(\"object\"!=typeof window&&\"undefined\"==typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");d&&(j=e=>{var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),B=async e=>{h(!J(e),\"readAsync does not work with file:// URLs\");e=await fetch(e,{credentials:\"same-origin\"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+\" : \"+e.url)}}var $,Y,V,f,s,K,p,n,a,u,m=console.log.bind(console),l=console.error.bind(console),c=\"WORKERFS is no longer included by default; build with -lworkerfs.js\",q=(h(!r,\"node environment detected but not enabled at build time.  Add `node` to `-sENVIRONMENT` to enable.\"),h(!t,\"shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable.\"),\"object\"!=typeof WebAssembly&&l(\"no native wasm support detected\"),!1);function h(e,r){e||w(\"Assertion failed\"+(r?\": \"+r:\"\"))}var X=!1,J=e=>e.startsWith(\"file://\");function Z(){var e,r,t;q||(0==(e=fr())&&(e+=4),r=n[e/4],t=n[(e+4)/4],34821223==r&&2310721022==t||w(`Stack overflow! Stack cookie has been overwritten at ${he(e)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${he(t)} `+he(r)),1668509029!=n[0]&&w(\"Runtime error: The application has corrupted its heap memory area (address zero)!\"))}var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\";function Q(e){Object.getOwnPropertyDescriptor(i,e)||Object.defineProperty(i,e,{configurable:!0,set(){w(`Attempt to set \\`Module.${e}\\` after it has already been processed.  This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function ee(t){Object.getOwnPropertyDescriptor(i,t)||Object.defineProperty(i,t,{configurable:!0,get(){var e,r=`'${t}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;\"FS_createPath\"!==(e=t)&&\"FS_createDataFile\"!==e&&\"FS_createPreloadedFile\"!==e&&\"FS_unlink\"!==e&&\"addRunDependency\"!==e&&\"FS_createLazyFile\"!==e&&\"FS_createDevice\"!==e&&\"removeRunDependency\"!==e||(r+=\". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you\"),w(r)}})}function re(){var e=Y.buffer;f=new Int8Array(e),K=new Int16Array(e),i.HEAPU8=s=new Uint8Array(e),p=new Int32Array(e),n=new Uint32Array(e),a=new BigInt64Array(e),u=new BigUint64Array(e)}h(\"undefined\"!=typeof Int32Array&&\"undefined\"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,\"JS engine does not provide full typed array support\");var te,_=0,ne=null,E={},o=null;function oe(e){_++,i.monitorRunDependencies?.(_),e?(h(!E[e]),E[e]=1,null===o&&\"undefined\"!=typeof setInterval&&(o=setInterval(()=>{if(q)clearInterval(o),o=null;else{var e,r=!1;for(e in E)r||(r=!0,l(\"still waiting on run dependencies:\")),l(\"dependency: \"+e);r&&l(\"(end of list)\")}},1e4))):l(\"warning: run dependency added without ID\")}function ae(e){_--,i.monitorRunDependencies?.(_),e?(h(E[e]),delete E[e]):l(\"warning: run dependency removed without ID\"),0==_&&(null!==o&&(clearInterval(o),o=null),ne)&&(e=ne,ne=null,e())}function w(e){i.onAbort?.(e),l(e=\"Aborted(\"+e+\")\"),q=!0;e=new WebAssembly.RuntimeError(e);throw U(e),e}function g(t,n){return(...e)=>{h(X,`native function \\`${t}\\` called before runtime initialization`);var r=C[t];return h(r,`exported native function \\`${t}\\` not found`),h(e.length<=n,`native function \\`${t}\\` called with ${e.length} args but expects `+n),r(...e)}}function ie(){return e=\"trace_processor_memory64.wasm\",i.locateFile?i.locateFile(e,W):W+e;var e}function se(e,r){e=function(e){if(e==te&&$)return new Uint8Array($);if(j)return j(e);throw'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e),e=new WebAssembly.Module(e);return[new WebAssembly.Instance(e,r),e]}class le{name=\"ExitStatus\";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var y,v,ce=e=>{for(;0<e.length;)e.shift()(i)},de=[],ue=e=>de.push(e),me=[],fe=e=>me.push(e),pe=!0,he=e=>(h(\"number\"==typeof e),\"0x\"+e.toString(16).padStart(8,\"0\")),_e=e=>_r(e),Ee=()=>wr(),S=e=>{S.shown||={},S.shown[e]||(S.shown[e]=1,l(e))},b=e=>e<-9007199254740992||9007199254740992<e?NaN:Number(e),we=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,F=(e,r=0,t=NaN)=>{for(var n=r+t,o=r;e[o]&&!(n<=o);)++o;if(16<o-r&&e.buffer&&we)return we.decode(e.subarray(r,o));for(var a=\"\";r<o;){var i,s,l=e[r++];128&l?(s=63&e[r++],192==(224&l)?a+=String.fromCharCode((31&l)<<6|s):(i=63&e[r++],(l=224==(240&l)?(15&l)<<12|s<<6|i:(240!=(248&l)&&S(\"Invalid UTF-8 leading byte \"+he(l)+\" encountered when deserializing a UTF-8 string in wasm memory to a JS string!\"),(7&l)<<18|s<<12|i<<6|63&e[r++]))<65536?a+=String.fromCharCode(l):(s=l-65536,a+=String.fromCharCode(55296|s>>10,56320|1023&s)))):a+=String.fromCharCode(l)}return a},k=(e,r)=>(h(\"number\"==typeof e,`UTF8ToString expects a number (got ${typeof e})`),e?F(s,e,r):\"\"),T={isAbs:e=>\"/\"===e.charAt(0),splitPath:e=>{return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;0<=n;n--){var o=e[n];\".\"===o?e.splice(n,1):\"..\"===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=T.isAbs(e),t=\"/\"===e.slice(-1);return(e=(e=T.normalizeArray(e.split(\"/\").filter(e=>!!e),!r).join(\"/\"))||r?e:\".\")&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var e=T.splitPath(e),r=e[0],e=e[1];return r||e?r+(e=e&&e.slice(0,-1)):\".\"},basename:e=>e&&e.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...e)=>T.normalize(e.join(\"/\")),join2:(e,r)=>T.normalize(e+\"/\"+r)},ge=()=>e=>crypto.getRandomValues(e),ye=e=>{(ye=ge())(e)},A={resolve:(...e)=>{for(var r=\"\",t=!1,n=e.length-1;-1<=n&&!t;n--){var o=0<=n?e[n]:M.cwd();if(\"string\"!=typeof o)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!o)return\"\";r=o+\"/\"+r,t=T.isAbs(o)}return(t?\"/\":\"\")+(r=T.normalizeArray(r.split(\"/\").filter(e=>!!e),!t).join(\"/\"))||\".\"},relative:(e,r)=>{function t(e){for(var r=0;r<e.length&&\"\"===e[r];r++);for(var t=e.length-1;0<=t&&\"\"===e[t];t--);return t<r?[]:e.slice(r,t-r+1)}e=A.resolve(e).slice(1),r=A.resolve(r).slice(1);for(var n=t(e.split(\"/\")),o=t(r.split(\"/\")),a=Math.min(n.length,o.length),i=a,s=0;s<a;s++)if(n[s]!==o[s]){i=s;break}for(var l=[],s=i;s<n.length;s++)l.push(\"..\");return(l=l.concat(o.slice(i))).join(\"/\")}},ve=[],O=e=>{for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:55296<=n&&n<=57343?(r+=4,++t):r+=3}return r},Se=(e,r,t,n)=>{if(h(\"string\"==typeof e,`stringToUTF8Array expects a string (got ${typeof e})`),!(0<n))return 0;for(var o=t,a=t+n-1,i=0;i<e.length;++i){var s=e.charCodeAt(i);if((s=55296<=s&&s<=57343?65536+((1023&s)<<10)|1023&e.charCodeAt(++i):s)<=127){if(a<=t)break;r[t++]=s}else{if(s<=2047){if(a<=t+1)break;r[t++]=192|s>>6}else{if(s<=65535){if(a<=t+2)break;r[t++]=224|s>>12}else{if(a<=t+3)break;1114111<s&&S(\"Invalid Unicode code point \"+he(s)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\"),r[t++]=240|s>>18,r[t++]=128|s>>12&63}r[t++]=128|s>>6&63}r[t++]=128|63&s}}return r[t]=0,t-o},be=(e,r,t)=>{t=0<t?t:O(e)+1,t=new Array(t),e=Se(e,t,0,t.length);return r&&(t.length=e),t},D={ttys:[],init(){},shutdown(){},register(e,r){D.ttys[e]={input:[],output:[],ops:r},M.registerDevice(e,D.stream_ops)},stream_ops:{open(e){var r=D.ttys[e.node.rdev];if(!r)throw new M.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new M.ErrnoError(60);for(var a,i=0,s=0;s<n;s++){try{a=e.tty.ops.get_char(e.tty)}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){if(!e.tty||!e.tty.ops.put_char)throw new M.ErrnoError(60);try{for(var a=0;a<n;a++)e.tty.ops.put_char(e.tty,r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}},default_tty_ops:{get_char(e){if(!ve.length){var r=null;if(\"undefined\"!=typeof window&&\"function\"==typeof window.prompt&&null!==(r=window.prompt(\"Input: \"))&&(r+=\"\\n\"),!r)return null;ve=be(r,!0)}return ve.shift()},put_char(e,r){null===r||10===r?(m(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(m(F(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){null===r||10===r?(l(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(l(F(e.output)),e.output=[])}}},Fe=(e,r)=>s.fill(0,e,e+r),ke=(e,r)=>(h(r,\"alignment argument is required\"),Math.ceil(e/r)*r),Te=e=>{e=ke(e,65536);var r=pr(65536,e);return r&&Fe(r,e),r},P={ops_table:null,mount(e){return P.createNode(null,\"/\",16895,0)},createNode(e,r,t,n){if(M.isBlkdev(t)||M.isFIFO(t))throw new M.ErrnoError(63);P.ops_table||={dir:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,lookup:P.node_ops.lookup,mknod:P.node_ops.mknod,rename:P.node_ops.rename,unlink:P.node_ops.unlink,rmdir:P.node_ops.rmdir,readdir:P.node_ops.readdir,symlink:P.node_ops.symlink},stream:{llseek:P.stream_ops.llseek}},file:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:{llseek:P.stream_ops.llseek,read:P.stream_ops.read,write:P.stream_ops.write,mmap:P.stream_ops.mmap,msync:P.stream_ops.msync}},link:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,readlink:P.node_ops.readlink},stream:{}},chrdev:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:M.chrdev_stream_ops}};t=M.createNode(e,r,t,n);return M.isDir(t.mode)?(t.node_ops=P.ops_table.dir.node,t.stream_ops=P.ops_table.dir.stream,t.contents={}):M.isFile(t.mode)?(t.node_ops=P.ops_table.file.node,t.stream_ops=P.ops_table.file.stream,t.usedBytes=0,t.contents=null):M.isLink(t.mode)?(t.node_ops=P.ops_table.link.node,t.stream_ops=P.ops_table.link.stream):M.isChrdev(t.mode)&&(t.node_ops=P.ops_table.chrdev.node,t.stream_ops=P.ops_table.chrdev.stream),t.atime=t.mtime=t.ctime=Date.now(),e&&(e.contents[r]=t,e.atime=e.mtime=e.ctime=t.atime),t},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;r<=t||(r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256)),t=e.contents,e.contents=new Uint8Array(r),0<e.usedBytes&&e.contents.set(t.subarray(0,e.usedBytes),0))},resizeFileStorage(e,r){var t;e.usedBytes!=r&&(0==r?(e.contents=null,e.usedBytes=0):(t=e.contents,e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r))},node_ops:{getattr(e){var r={};return r.dev=M.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,M.isDir(e.mode)?r.size=4096:M.isFile(e.mode)?r.size=e.usedBytes:M.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t]);void 0!==r.size&&P.resizeFileStorage(e,r.size)},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){return P.createNode(e,r,t,n)},rename(e,r,t){var n;try{n=M.lookupNode(r,t)}catch(e){}if(n){if(M.isDir(e.mode))for(var o in n.contents)throw new M.ErrnoError(55);M.hashRemoveNode(n)}delete e.parent.contents[e.name],(r.contents[t]=e).name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.contents[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){for(var t in M.lookupNode(e,r).contents)throw new M.ErrnoError(55);delete e.contents[r],e.ctime=e.mtime=Date.now()},readdir(e){return[\".\",\"..\",...Object.keys(e.contents)]},symlink(e,r,t){e=P.createNode(e,r,41471,0);return e.link=t,e},readlink(e){if(M.isLink(e.mode))return e.link;throw new M.ErrnoError(28)}},stream_ops:{read(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(h(0<=i),8<i&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s<i;s++)r[t+s]=a[o+s];return i},write(e,r,t,n,o,a){if(h(!(r instanceof ArrayBuffer)),r.buffer===f.buffer&&(a=!1),!n)return 0;var i=e.node;if(i.mtime=i.ctime=Date.now(),r.subarray&&(!i.contents||i.contents.subarray)){if(a)return h(0===o,\"canOwn must imply no weird position inside the file\"),i.contents=r.subarray(t,t+n),i.usedBytes=n;if(0===i.usedBytes&&0===o)return i.contents=r.slice(t,t+n),i.usedBytes=n;if(o+n<=i.usedBytes)return i.contents.set(r.subarray(t,t+n),o),n}if(P.expandFileStorage(i,o+n),i.contents.subarray&&r.subarray)i.contents.set(r.subarray(t,t+n),o);else for(var s=0;s<n;s++)i.contents[o+s]=r[t+s];return i.usedBytes=Math.max(i.usedBytes,o+n),n},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.usedBytes),r<0)throw new M.ErrnoError(28);return r},mmap(e,r,t,n,o){if(!M.isFile(e.node.mode))throw new M.ErrnoError(43);var a,i,e=e.node.contents;if(2&o||!e||e.buffer!==f.buffer){if(i=!0,!(a=Te(r)))throw new M.ErrnoError(48);e&&((0<t||t+r<e.length)&&(e=e.subarray?e.subarray(t,t+r):Array.prototype.slice.call(e,t,t+r)),f.set(e,a))}else i=!1,a=e.byteOffset;return{ptr:a,allocated:i}},msync(e,r,t,n,o){return P.stream_ops.write(e,r,0,n,t,!1),0}}},Ae=async e=>{var r=await B(e);return h(r,`Loading data file \"${e}\" failed (no arrayBuffer).`),new Uint8Array(r)},Oe=(...e)=>M.createDataFile(...e),De=[],Pe=(r,t,n,o)=>{\"undefined\"!=typeof Browser&&Browser.init();var a=!1;return De.forEach(e=>{a||e.canHandle(t)&&(e.handle(r,t,n,o),a=!0)}),a},Me=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},c={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount(e){h(d),c.reader??=new FileReaderSync;var a=c.createNode(null,\"/\",c.DIR_MODE,0),i={};function n(e){for(var r=e.split(\"/\"),t=a,n=0;n<r.length-1;n++){var o=r.slice(0,n+1).join(\"/\");i[o]||=c.createNode(t,r[n],c.DIR_MODE,0),t=i[o]}return t}function o(e){e=e.split(\"/\");return e[e.length-1]}return Array.prototype.forEach.call(e.opts.files||[],function(e){c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e,e.lastModifiedDate)}),(e.opts.blobs||[]).forEach(e=>{c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e.data)}),(e.opts.packages||[]).forEach(t=>{t.metadata.files.forEach(e=>{var r=e.filename.slice(1);c.createNode(n(r),o(r),c.FILE_MODE,0,t.blob.slice(e.start,e.end))})}),a},createNode(e,r,t,n,o,a){var i=M.createNode(e,r,t);return i.mode=t,i.node_ops=c.node_ops,i.stream_ops=c.stream_ops,i.atime=i.mtime=i.ctime=(a||new Date).getTime(),h(c.FILE_MODE!==c.DIR_MODE),t===c.FILE_MODE?(i.size=o.size,i.contents=o):(i.size=4096,i.contents={}),e&&(e.contents[r]=i),i},node_ops:{getattr(e){return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:e.size,atime:new Date(e.atime),mtime:new Date(e.mtime),ctime:new Date(e.ctime),blksize:4096,blocks:Math.ceil(e.size/4096)}},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t])},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){throw new M.ErrnoError(63)},rename(e,r,t){throw new M.ErrnoError(63)},unlink(e,r){throw new M.ErrnoError(63)},rmdir(e,r){throw new M.ErrnoError(63)},readdir(e){var r,t=[\".\",\"..\"];for(r of Object.keys(e.contents))t.push(r);return t},symlink(e,r,t){throw new M.ErrnoError(63)}},stream_ops:{read(e,r,t,n,o){return o>=e.node.size?0:(e=e.node.contents.slice(o,o+n),o=c.reader.readAsArrayBuffer(e),r.set(new Uint8Array(o),t),e.size)},write(e,r,t,n,o){throw new M.ErrnoError(29)},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.size),r<0)throw new M.ErrnoError(28);return r}}},Ne={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},M={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class extends Error{name=\"ErrnoError\";constructor(e){for(var r in super(X?k(dr(e)):\"\"),this.errno=e,Ne)if(Ne[r]===e){this.code=r;break}}},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return 0!=(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,n){this.parent=e=e||this,this.mount=e.mount,this.id=M.nextInode++,this.name=r,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return M.isDir(this.mode)}get isDevice(){return M.isChrdev(this.mode)}},lookupPath(e,r={}){if(!e)throw new M.ErrnoError(44);r.follow_mount??=!0,T.isAbs(e)||(e=M.cwd()+\"/\"+e);e:for(var t=0;t<40;t++){for(var n=e.split(\"/\").filter(e=>!!e),o=M.root,a=\"/\",i=0;i<n.length;i++){var s=i===n.length-1;if(s&&r.parent)break;if(\".\"!==n[i])if(\"..\"===n[i]){if(a=T.dirname(a),M.isRoot(o)){e=a+\"/\"+n.slice(i+1).join(\"/\");continue e}o=o.parent}else{a=T.join2(a,n[i]);try{o=M.lookupNode(o,n[i])}catch(e){if(44===e?.errno&&s&&r.noent_okay)return{path:a};throw e}if(!M.isMountpoint(o)||s&&!r.follow_mount||(o=o.mounted.root),M.isLink(o.mode)&&(!s||r.follow)){if(!o.node_ops.readlink)throw new M.ErrnoError(52);s=o.node_ops.readlink(o);e=(s=T.isAbs(s)?s:T.dirname(a)+\"/\"+s)+\"/\"+n.slice(i+1).join(\"/\");continue e}}}return{path:a,node:o}}throw new M.ErrnoError(32)},getPath(e){for(var r,t;;){if(M.isRoot(e))return t=e.mount.mountpoint,r?\"/\"!==t[t.length-1]?t+\"/\"+r:t+r:t;r=r?e.name+\"/\"+r:e.name,e=e.parent}},hashName(e,r){for(var t=0,n=0;n<r.length;n++)t=(t<<5)-t+r.charCodeAt(n)|0;return(e+t>>>0)%M.nameTable.length},hashAddNode(e){var r=M.hashName(e.parent.id,e.name);e.name_next=M.nameTable[r],M.nameTable[r]=e},hashRemoveNode(e){var r=M.hashName(e.parent.id,e.name);if(M.nameTable[r]===e)M.nameTable[r]=e.name_next;else for(var t=M.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=M.mayLookup(e);if(t)throw new M.ErrnoError(t);for(var t=M.hashName(e.id,r),n=M.nameTable[t];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===r)return n}return M.lookup(e,r)},createNode(e,r,t,n){h(\"object\"==typeof e);e=new M.FSNode(e,r,t,n);return M.hashAddNode(e),e},destroyNode(e){M.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return 32768==(61440&e)},isDir(e){return 16384==(61440&e)},isLink(e){return 40960==(61440&e)},isChrdev(e){return 8192==(61440&e)},isBlkdev(e){return 24576==(61440&e)},isFIFO(e){return 4096==(61440&e)},isSocket(e){return 49152==(49152&e)},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][3&e];return 512&e&&(r+=\"w\"),r},nodePermissions(e,r){return M.ignorePermissions||(!r.includes(\"r\")||292&e.mode)&&(!r.includes(\"w\")||146&e.mode)&&(!r.includes(\"x\")||73&e.mode)?0:2},mayLookup(e){return M.isDir(e.mode)?M.nodePermissions(e,\"x\")||(e.node_ops.lookup?0:2):54},mayCreate(e,r){if(!M.isDir(e.mode))return 54;try{M.lookupNode(e,r);return 20}catch(e){}return M.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var n;try{n=M.lookupNode(e,r)}catch(e){return e.errno}r=M.nodePermissions(e,\"wx\");if(r)return r;if(t){if(!M.isDir(n.mode))return 54;if(M.isRoot(n)||M.getPath(n)===M.cwd())return 10}else if(M.isDir(n.mode))return 31;return 0},mayOpen(e,r){return e?M.isLink(e.mode)?32:M.isDir(e.mode)&&(\"r\"!==M.flagsToPermissionString(r)||576&r)?31:M.nodePermissions(e,M.flagsToPermissionString(r)):44},checkOpExists(e,r){if(e)return e;throw new M.ErrnoError(r)},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=M.MAX_OPEN_FDS;e++)if(!M.streams[e])return e;throw new M.ErrnoError(33)},getStreamChecked(e){e=M.getStream(e);if(e)return e;throw new M.ErrnoError(8)},getStream:e=>M.streams[e],createStream(e,r=-1){return h(-1<=r),e=Object.assign(new M.FSStream,e),-1==r&&(r=M.nextfd()),e.fd=r,M.streams[r]=e},closeStream(e){M.streams[e]=null},dupStream(e,r=-1){e=M.createStream(e,r);return e.stream_ops?.dup?.(e),e},doSetAttr(e,r,t){var n=e?.stream_ops.setattr,e=n?e:r;n??=r.node_ops.setattr,M.checkOpExists(n,63),n(e,t)},chrdev_stream_ops:{open(e){var r=M.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new M.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice(e,r){M.devices[e]={stream_ops:r}},getDevice:e=>M.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(r,t){\"function\"==typeof r&&(t=r,r=!1),M.syncFSRequests++,1<M.syncFSRequests&&l(`warning: ${M.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=M.getMounts(M.root.mount),o=0;function a(e){return h(0<M.syncFSRequests),M.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,a(e));++o>=n.length&&a(null)}n.forEach(e=>{if(!e.type.syncfs)return i(null);e.type.syncfs(e,r,i)})},mount(e,r,t){if(\"string\"==typeof e)throw e;var n,o=\"/\"===t,a=!t;if(o&&M.root)throw new M.ErrnoError(10);if(!o&&!a){a=M.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,M.isMountpoint(n))throw new M.ErrnoError(10);if(!M.isDir(n.mode))throw new M.ErrnoError(54)}a={type:e,opts:r,mountpoint:t,mounts:[]},r=e.mount(a);return(r.mount=a).root=r,o?M.root=r:n&&(n.mounted=a,n.mount)&&n.mount.mounts.push(a),r},unmount(e){e=M.lookupPath(e,{follow_mount:!1});if(!M.isMountpoint(e.node))throw new M.ErrnoError(28);var e=e.node,r=e.mounted,n=M.getMounts(r),r=(Object.keys(M.nameTable).forEach(e=>{for(var r=M.nameTable[e];r;){var t=r.name_next;n.includes(r.mount)&&M.destroyNode(r),r=t}}),e.mounted=null,e.mount.mounts.indexOf(r));h(-1!==r),e.mount.mounts.splice(r,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var n=M.lookupPath(e,{parent:!0}).node,e=T.basename(e);if(!e)throw new M.ErrnoError(28);if(\".\"===e||\"..\"===e)throw new M.ErrnoError(20);var o=M.mayCreate(n,e);if(o)throw new M.ErrnoError(o);if(n.node_ops.mknod)return n.node_ops.mknod(n,e,r,t);throw new M.ErrnoError(63)},statfs(e){return M.statfsNode(M.lookupPath(e,{follow:!0}).node)},statfsStream(e){return M.statfsNode(e.node)},statfsNode(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:M.nextInode,ffree:M.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(r,e.node_ops.statfs(e.mount.opts.root)),r},create(e,r=438){return M.mknod(e,r=r&4095|32768,0)},mkdir(e,r=511){return M.mknod(e,r=r&1023|16384,0)},mkdirTree(e,r){var t,n=\"\";for(t of e.split(\"/\"))if(t){(n||T.isAbs(e))&&(n+=\"/\"),n+=t;try{M.mkdir(n,r)}catch(e){if(20!=e.errno)throw e}}},mkdev(e,r,t){return void 0===t&&(t=r,r=438),M.mknod(e,r|=8192,t)},symlink(e,r){if(!A.resolve(e))throw new M.ErrnoError(44);var t=M.lookupPath(r,{parent:!0}).node;if(!t)throw new M.ErrnoError(44);var r=T.basename(r),n=M.mayCreate(t,r);if(n)throw new M.ErrnoError(n);if(t.node_ops.symlink)return t.node_ops.symlink(t,r,e);throw new M.ErrnoError(63)},rename(e,r){var t=T.dirname(e),n=T.dirname(r),o=T.basename(e),a=T.basename(r),i=M.lookupPath(e,{parent:!0}),i=i.node,s=M.lookupPath(r,{parent:!0}).node;if(!i||!s)throw new M.ErrnoError(44);if(i.mount!==s.mount)throw new M.ErrnoError(75);var l,c=M.lookupNode(i,o),e=A.relative(e,n);if(\".\"!==e.charAt(0))throw new M.ErrnoError(28);if(\".\"!==(e=A.relative(r,t)).charAt(0))throw new M.ErrnoError(55);try{l=M.lookupNode(s,a)}catch(e){}if(c!==l){n=M.isDir(c.mode),r=M.mayDelete(i,o,n);if(r)throw new M.ErrnoError(r);if(r=l?M.mayDelete(s,a,n):M.mayCreate(s,a))throw new M.ErrnoError(r);if(!i.node_ops.rename)throw new M.ErrnoError(63);if(M.isMountpoint(c)||l&&M.isMountpoint(l))throw new M.ErrnoError(10);if(s!==i&&(r=M.nodePermissions(i,\"w\")))throw new M.ErrnoError(r);M.hashRemoveNode(c);try{i.node_ops.rename(c,s,a),c.parent=s}catch(e){throw e}finally{M.hashAddNode(c)}}},rmdir(e){var r=M.lookupPath(e,{parent:!0}).node,e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!0);if(n)throw new M.ErrnoError(n);if(!r.node_ops.rmdir)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.rmdir(r,e),M.destroyNode(t)},readdir(e){e=M.lookupPath(e,{follow:!0}).node;return M.checkOpExists(e.node_ops.readdir,54)(e)},unlink(e){var r=M.lookupPath(e,{parent:!0}).node;if(!r)throw new M.ErrnoError(44);var e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!1);if(n)throw new M.ErrnoError(n);if(!r.node_ops.unlink)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.unlink(r,e),M.destroyNode(t)},readlink(e){e=M.lookupPath(e).node;if(!e)throw new M.ErrnoError(44);if(e.node_ops.readlink)return e.node_ops.readlink(e);throw new M.ErrnoError(28)},stat(e,r){e=M.lookupPath(e,{follow:!r}).node;return M.checkOpExists(e.node_ops.getattr,63)(e)},fstat(e){var e=M.getStreamChecked(e),r=e.node,t=e.stream_ops.getattr,e=t?e:r;return t??=r.node_ops.getattr,M.checkOpExists(t,63),t(e)},lstat(e){return M.stat(e,!0)},doChmod(e,r,t,n){M.doSetAttr(e,r,{mode:4095&t|-4096&r.mode,ctime:Date.now(),dontFollow:n})},chmod(e,r,t){e=\"string\"==typeof e?M.lookupPath(e,{follow:!t}).node:e,M.doChmod(null,e,r,t)},lchmod(e,r){M.chmod(e,r,!0)},fchmod(e,r){e=M.getStreamChecked(e);M.doChmod(e,e.node,r,!1)},doChown(e,r,t){M.doSetAttr(e,r,{timestamp:Date.now(),dontFollow:t})},chown(e,r,t,n){e=\"string\"==typeof e?M.lookupPath(e,{follow:!n}).node:e,M.doChown(null,e,n)},lchown(e,r,t){M.chown(e,r,t,!0)},fchown(e,r,t){e=M.getStreamChecked(e);M.doChown(e,e.node,!1)},doTruncate(e,r,t){if(M.isDir(r.mode))throw new M.ErrnoError(31);if(!M.isFile(r.mode))throw new M.ErrnoError(28);var n=M.nodePermissions(r,\"w\");if(n)throw new M.ErrnoError(n);M.doSetAttr(e,r,{size:t,timestamp:Date.now()})},truncate(e,r){if(r<0)throw new M.ErrnoError(28);e=\"string\"==typeof e?M.lookupPath(e,{follow:!0}).node:e,M.doTruncate(null,e,r)},ftruncate(e,r){e=M.getStreamChecked(e);if(r<0||0==(2097155&e.flags))throw new M.ErrnoError(28);M.doTruncate(e,e.node,r)},utime(e,r,t){e=M.lookupPath(e,{follow:!0}).node;M.checkOpExists(e.node_ops.setattr,63)(e,{atime:r,mtime:t})},open(e,r,t=438){if(\"\"===e)throw new M.ErrnoError(44);t=64&(r=\"string\"==typeof r?(e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[e];if(void 0===r)throw new Error(\"Unknown file open mode: \"+e);return r})(r):r)?4095&t|32768:0,\"object\"==typeof e?n=e:(a=e.endsWith(\"/\"),n=(o=M.lookupPath(e,{follow:!(131072&r),noent_okay:!0})).node,e=o.path);var n,o=!1;if(64&r)if(n){if(128&r)throw new M.ErrnoError(20)}else{if(a)throw new M.ErrnoError(31);n=M.mknod(e,511|t,0),o=!0}if(!n)throw new M.ErrnoError(44);if(M.isChrdev(n.mode)&&(r&=-513),65536&r&&!M.isDir(n.mode))throw new M.ErrnoError(54);if(!o){var a=M.mayOpen(n,r);if(a)throw new M.ErrnoError(a)}512&r&&!o&&M.truncate(n,0),r&=-131713;a=M.createStream({node:n,path:M.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),o&&M.chmod(n,511&t),!i.logReadFiles||1&r||e in M.readFiles||(M.readFiles[e]=1),a},close(e){if(M.isClosed(e))throw new M.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{M.closeStream(e.fd)}e.fd=null},isClosed(e){return null===e.fd},llseek(e,r,t){if(M.isClosed(e))throw new M.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new M.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new M.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,o){if(h(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(1==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.read)throw new M.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=r),r},write(e,r,t,n,o,a){if(h(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(0==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.write)throw new M.ErrnoError(28);e.seekable&&1024&e.flags&&M.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=r),r},mmap(e,r,t,n,o){if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new M.ErrnoError(2);if(1==(2097155&e.flags))throw new M.ErrnoError(2);if(!e.stream_ops.mmap)throw new M.ErrnoError(43);if(r)return e.stream_ops.mmap(e,r,t,n,o);throw new M.ErrnoError(28)},msync(e,r,t,n,o){return h(0<=t),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl(e,r,t){if(e.stream_ops.ioctl)return e.stream_ops.ioctl(e,r,t);throw new M.ErrnoError(59)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",\"utf8\"!==r.encoding&&\"binary\"!==r.encoding)throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,n=M.open(e,r.flags),e=M.stat(e).size,o=new Uint8Array(e);return M.read(n,o,0,e,0),\"utf8\"===r.encoding?t=F(o):\"binary\"===r.encoding&&(t=o),M.close(n),t},writeFile(e,r,t={}){t.flags=t.flags||577;e=M.open(e,t.flags,t.mode);if(\"string\"==typeof r){var n=new Uint8Array(O(r)+1),o=Se(r,n,0,n.length);M.write(e,n,0,o,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error(\"Unsupported data type\");M.write(e,r,0,r.byteLength,void 0,t.canOwn)}M.close(e)},cwd:()=>M.currentPath,chdir(e){e=M.lookupPath(e,{follow:!0});if(null===e.node)throw new M.ErrnoError(44);if(!M.isDir(e.node.mode))throw new M.ErrnoError(54);var r=M.nodePermissions(e.node,\"x\");if(r)throw new M.ErrnoError(r);M.currentPath=e.path},createDefaultDirectories(){M.mkdir(\"/tmp\"),M.mkdir(\"/home\"),M.mkdir(\"/home/web_user\")},createDefaultDevices(){M.mkdir(\"/dev\"),M.registerDevice(M.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n,llseek:()=>0}),M.mkdev(\"/dev/null\",M.makedev(1,3)),D.register(M.makedev(5,0),D.default_tty_ops),D.register(M.makedev(6,0),D.default_tty1_ops),M.mkdev(\"/dev/tty\",M.makedev(5,0)),M.mkdev(\"/dev/tty1\",M.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(0===r&&(ye(e),r=e.byteLength),e[--r]);M.createDevice(\"/dev\",\"random\",t),M.createDevice(\"/dev\",\"urandom\",t),M.mkdir(\"/dev/shm\"),M.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){M.mkdir(\"/proc\");var r=M.mkdir(\"/proc/self\");M.mkdir(\"/proc/self/fd\"),M.mount({mount(){var e=M.createNode(r,\"fd\",16895,73);return e.stream_ops={llseek:P.stream_ops.llseek},e.node_ops={lookup(e,r){var r=+r,t=M.getStreamChecked(r),r={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>t.path},id:1+r};return r.parent=r},readdir(){return Array.from(M.streams.entries()).filter(([,e])=>e).map(([e])=>e.toString())}},e}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?M.createDevice(\"/dev\",\"stdin\",e):M.symlink(\"/dev/tty\",\"/dev/stdin\"),r?M.createDevice(\"/dev\",\"stdout\",null,r):M.symlink(\"/dev/tty\",\"/dev/stdout\"),t?M.createDevice(\"/dev\",\"stderr\",null,t):M.symlink(\"/dev/tty1\",\"/dev/stderr\");e=M.open(\"/dev/stdin\",0),r=M.open(\"/dev/stdout\",1),t=M.open(\"/dev/stderr\",1);h(0===e.fd,`invalid handle for stdin (${e.fd})`),h(1===r.fd,`invalid handle for stdout (${r.fd})`),h(2===t.fd,`invalid handle for stderr (${t.fd})`)},staticInit(){M.nameTable=new Array(4096),M.mount(P,{},\"/\"),M.createDefaultDirectories(),M.createDefaultDevices(),M.createSpecialDirectories(),M.filesystems={MEMFS:P,WORKERFS:c}},init(e,r,t){h(!M.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),M.initialized=!0,e??=i.stdin,r??=i.stdout,t??=i.stderr,M.createStandardStreams(e,r,t)},quit(){M.initialized=!1,ur(0);for(var e of M.streams)e&&M.close(e)},findObject(e,r){e=M.analyzePath(e,r);return e.exists?e.object:null},analyzePath(e,r){try{e=(n=M.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=M.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=T.basename(e),n=M.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot=\"/\"===n.path}catch(e){t.error=e.errno}return t},createPath(e,r,t,n){e=\"string\"==typeof e?e:M.getPath(e);for(var o=r.split(\"/\").reverse();o.length;){var a=o.pop();if(a){var i=T.join2(e,a);try{M.mkdir(i)}catch(e){if(20!=e.errno)throw e}e=i}}return i},createFile(e,r,t,n,o){e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Me(n,o);return M.create(e,r)},createDataFile(e,r,t,n,o,a){var i=r,r=(e&&(e=\"string\"==typeof e?e:M.getPath(e),i=r?T.join2(e,r):e),Me(n,o)),e=M.create(i,r);if(t){if(\"string\"==typeof t){for(var s=new Array(t.length),l=0,c=t.length;l<c;++l)s[l]=t.charCodeAt(l);t=s}M.chmod(e,146|r);n=M.open(e,577);M.write(n,t,0,t.length,0,a),M.close(n),M.chmod(e,r)}},createDevice(e,r,l,i){var e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Me(!!l,!!i),t=(M.createDevice.major??=64,M.makedev(M.createDevice.major++,0));return M.registerDevice(t,{open(e){e.seekable=!1},close(e){i?.buffer?.length&&i(10)},read(e,r,t,n,o){for(var a,i=0,s=0;s<n;s++){try{a=l()}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){for(var a=0;a<n;a++)try{i(r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}}),M.mkdev(e,r,t)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(\"undefined\"!=typeof XMLHttpRequest)throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");try{e.contents=j(e.url),e.usedBytes=e.contents.length}catch(e){throw new M.ErrnoError(29)}},createLazyFile(e,r,i,t,n){class o{lengthKnown=!1;chunks=[];get(e){var r;if(!(e>this.length-1||e<0))return r=e%this.chunkSize,e=e/this.chunkSize|0,this.getter(e)[r]}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(\"HEAD\",i,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error(\"Couldn't load \"+i+\". Status: \"+e.status);var r,n=Number(e.getResponseHeader(\"Content-length\")),t=(r=e.getResponseHeader(\"Accept-Ranges\"))&&\"bytes\"===r,e=(r=e.getResponseHeader(\"Content-Encoding\"))&&\"gzip\"===r,o=1048576,a=(t||(o=n),this);a.setDataGetter(e=>{var r=e*o,t=(e+1)*o-1,t=Math.min(t,n-1);if(void 0===a.chunks[e]&&(a.chunks[e]=((e,r)=>{if(r<e)throw new Error(\"invalid range (\"+e+\", \"+r+\") or no bytes requested!\");if(n-1<r)throw new Error(\"only \"+n+\" bytes available! programmer error!\");var t=new XMLHttpRequest;if(t.open(\"GET\",i,!1),n!==o&&t.setRequestHeader(\"Range\",\"bytes=\"+e+\"-\"+r),t.responseType=\"arraybuffer\",t.overrideMimeType&&t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.send(null),200<=t.status&&t.status<300||304===t.status)return void 0!==t.response?new Uint8Array(t.response||[]):be(t.responseText||\"\",!0);throw new Error(\"Couldn't load \"+i+\". Status: \"+t.status)})(r,t)),void 0===a.chunks[e])throw new Error(\"doXHR failed!\");return a.chunks[e]}),!e&&n||(o=n=1,n=this.getter(0).length,o=n,m(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=n,this._chunkSize=o,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(\"undefined\"!=typeof XMLHttpRequest){if(!d)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var a={isDevice:!1,contents:new o}}else a={isDevice:!1,url:i};var s=M.createFile(e,r,a,t,n),l=(a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}}),{});function c(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(h(0<=i),a.slice)for(var s=0;s<i;s++)r[t+s]=a[o+s];else for(s=0;s<i;s++)r[t+s]=a.get(o+s);return i}return Object.keys(s.stream_ops).forEach(e=>{var r=s.stream_ops[e];l[e]=(...e)=>(M.forceLoadFile(s),r(...e))}),l.read=(e,r,t,n,o)=>(M.forceLoadFile(s),c(e,r,t,n,o)),l.mmap=(e,r,t,n,o)=>{M.forceLoadFile(s);var a=Te(r);if(a)return c(e,f,a,r,t),{ptr:a,allocated:!0};throw new M.ErrnoError(48)},s.stream_ops=l,s},absolutePath(){w(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder(){w(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink(){w(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath(){w(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc(){w(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath(){w(\"FS.standardizePath has been removed; use PATH.normalize instead\")}},N={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(T.isAbs(r))return r;if(e=-100===e?M.cwd():N.getStreamFromFD(e).path,0!=r.length)return e+\"/\"+r;if(t)return e;throw new M.ErrnoError(44)},writeStat(e,r){p[e/4]=r.dev,p[(e+4)/4]=r.mode,u[(e+8)/8]=BigInt(r.nlink),p[(e+16)/4]=r.uid,p[(e+20)/4]=r.gid,p[(e+24)/4]=r.rdev,a[(e+32)/8]=BigInt(r.size),p[(e+40)/4]=4096,p[(e+44)/4]=r.blocks;var t=r.atime.getTime(),n=r.mtime.getTime(),o=r.ctime.getTime();return a[(e+48)/8]=BigInt(Math.floor(t/1e3)),u[(e+56)/8]=BigInt(t%1e3*1e3*1e3),a[(e+64)/8]=BigInt(Math.floor(n/1e3)),u[(e+72)/8]=BigInt(n%1e3*1e3*1e3),a[(e+80)/8]=BigInt(Math.floor(o/1e3)),u[(e+88)/8]=BigInt(o%1e3*1e3*1e3),a[(e+96)/8]=BigInt(r.ino),0},writeStatFs(e,r){p[(e+8)/4]=r.bsize,p[(e+56)/4]=r.bsize,p[(e+16)/4]=r.blocks,p[(e+20)/4]=r.bfree,p[(e+24)/4]=r.bavail,p[(e+28)/4]=r.files,p[(e+32)/4]=r.ffree,p[(e+36)/4]=r.fsid,p[(e+64)/4]=r.flags,p[(e+48)/4]=r.namelen},doMsync(e,r,t,n,o){if(!M.isFile(r.node.mode))throw new M.ErrnoError(43);if(2&n)return 0;e=s.slice(e,e+t);M.msync(r,e,o,t,n)},getStreamFromFD(e){return M.getStreamChecked(e)},varargs:void 0,getStr(e){return k(e)}},I=()=>{h(null!=N.varargs);var e=Number(u[N.varargs/8]);return N.varargs+=8,e},Ie=()=>{h(null!=N.varargs);var e=p[+N.varargs/4];return N.varargs+=4,e},R=(e,r,t)=>(h(\"number\"==typeof t,\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\"),Se(e,s,r,t)),Re=e=>n[e/4]+4294967296*p[(e+4)/4],Ce=[0,31,60,91,121,152,182,213,244,274,305,335],Le=[0,31,59,90,120,151,181,212,243,273,304,334],xe=e=>{var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?Ce:Le)[e.getMonth()]+e.getDate()-1},Ue=()=>performance.now(),Be=()=>Date.now(),je=e=>0<=e&&e<=3,ze=()=>17179869184,He=r=>{var t=Y.buffer,e=(r-t.byteLength+65535)/65536|0;try{return Y.grow(BigInt(e)),re(),1}catch(e){l(`growMemory: Attempted to grow heap from ${t.byteLength} bytes to ${r} bytes, but got error: `+e)}},Ge={},We=()=>{if(!We.strings){var e={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:H||\"./this.program\"};for(r in Ge)void 0===Ge[r]?delete e[r]:e[r]=Ge[r];var r,t=[];for(r in e)t.push(r+\"=\"+e[r]);We.strings=t}return We.strings},$e=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=Number(u[r/8]),s=Number(u[(r+8)/8]),i=(r+=16,M.read(e,f,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},Ye=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=Number(u[r/8]),s=Number(u[(r+8)/8]),i=(r+=16,M.write(e,f,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},Ve=(e,r)=>{V=e;var t=m,n=l,o=!1;m=l=e=>{o=!0};try{ur(0),[\"stdout\",\"stderr\"].forEach(e=>{var e=M.analyzePath(\"/dev/\"+e);e&&(e=e.object.rdev,D.ttys[e]?.output?.length)&&(o=!0)})}catch(e){}m=t,l=n,o&&S(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.\"),pe&&!r&&(U(t=`program exited (with status: ${e}), but keepRuntimeAlive() is set (counter=0) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`),l(t)),V=n=e,pe||(i.onExit?.(n),q=!0),G(0,new le(n))},Ke=e=>{if(e instanceof le||\"unwind\"==e)return V;Z(),e instanceof WebAssembly.RuntimeError&&wr()<=0&&l(\"Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)\"),G(0,e)},qe=e=>Er(e),Xe=e=>{var r=O(e)+1,t=qe(r);return R(e,t,r),t},Je=e=>{var r=i[\"_\"+e];return h(r,\"Cannot call unknown function \"+e+\", make sure it is exported\"),r},Ze=(e,r)=>{h(0<=e.length,\"writeArrayToMemory array must have a length (should be an array or typed array)\"),f.set(e,r)},Qe=(e,r)=>{h(e<16384),e<128?r.push(e):r.push(e%128|128,e>>7)},er=(e,r)=>{if(\"function\"==typeof WebAssembly.Function)return new WebAssembly.Function((e=>{for(var r={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i64\"},t={parameters:[],results:\"v\"==e[0]?[]:[r[e[0]]]},n=1;n<e.length;++n)h(e[n]in r,\"invalid signature char: \"+e[n]),t.parameters.push(r[e[n]]);return t})(r),e);var t,n=[1],o=n,a=(r=r).slice(0,1),r=r.slice(1),i={i:127,p:126,j:126,f:125,d:124,e:111};o.push(96),Qe(r.length,o);for(t of r)h(t in i,\"invalid signature char: \"+t),o.push(i[t]);\"v\"==a?o.push(0):o.push(1,i[a]);r=[0,97,115,109,1,0,0,0,1],Qe(n.length,r),r.push(...n),r.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),a=new WebAssembly.Module(new Uint8Array(r));return new WebAssembly.Instance(a,{e:{f:e}}).exports.f},rr=[],tr=(e,r)=>{if(v)for(var t=e;t<e+r;t++){n=t,o=void 0,n=Number(n),(o=rr[n])||(rr[n]=o=y.get(BigInt(n))),h(y.get(BigInt(n))==o,\"JavaScript-side Wasm function table mirror is out of date!\");n=o;n&&v.set(n,t)}var n,o},nr=e=>(v||(v=new WeakMap,tr(0,Number(y.length))),v.get(e)||0),or=[],ar=()=>{if(or.length)return or.pop();try{y.grow(BigInt(1))}catch(e){if(e instanceof RangeError)throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\";throw e}return Number(y.length)-1},ir=(e,r)=>{y.set(BigInt(e),r),rr[e]=y.get(BigInt(e))},t=(M.createPreloadedFile=(t,n,e,o,a,i,s,l,c,d)=>{var u=n?A.resolve(T.join2(t,n)):t,m=function(e){for(var r=e;;){if(!E[e])return e;e=r+Math.random()}}(\"cp \"+u);function r(e){function r(e){d?.(),l||Oe(t,n,e,o,a,c),i?.(),ae(m)}Pe(e,u,r,()=>{s?.(),ae(m)})||r(e)}oe(m),\"string\"==typeof e?Ae(e).then(r,s):r(e)},M.staticInit(),i.noExitRuntime&&(pe=i.noExitRuntime),i.preloadPlugins&&(De=i.preloadPlugins),i.print&&(m=i.print),i.printErr&&(l=i.printErr),i.wasmBinary&&($=i.wasmBinary),\"fetchSettings\");Object.getOwnPropertyDescriptor(i,t)&&w(`\\`Module.${t}\\` was supplied but \\`${t}\\` not included in INCOMING_MODULE_JS_API`),i.arguments&&(z=i.arguments),i.thisProgram&&(H=i.thisProgram),h(void 0===i.memoryInitializerPrefixURL,\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===i.pthreadMainPrefixURL,\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===i.cdInitializerPrefixURL,\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===i.filePackagePrefixURL,\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\"),h(void 0===i.read,\"Module.read option was removed\"),h(void 0===i.readAsync,\"Module.readAsync option was removed (modify readAsync in JS)\"),h(void 0===i.readBinary,\"Module.readBinary option was removed (modify readBinary in JS)\"),h(void 0===i.setWindowTitle,\"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)\"),h(void 0===i.TOTAL_MEMORY,\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\"),h(void 0===i.ENVIRONMENT,\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\"),h(void 0===i.STACK_SIZE,\"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time\"),h(void 0===i.wasmMemory,\"Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally\"),h(void 0===i.INITIAL_MEMORY,\"Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically\"),i.callMain=gr,i.ccall=(e,r,t,n,o)=>{var a={pointer:e=>BigInt(e),string:e=>{var r=0;return null!=e&&0!==e&&(r=Xe(e)),BigInt(r)},array:e=>{var r=qe(e.length);return Ze(e,r),BigInt(r)}};var e=Je(e),i=[],s=0;if(h(\"array\"!==r,'Return type should not be \"array\".'),n)for(var l=0;l<n.length;l++){var c=a[t[l]];c?(0===s&&(s=Ee()),i[l]=c(n[l])):i[l]=n[l]}e=e(...i);return e=e,0!==s&&_e(s),e=e,\"string\"===r?k(Number(e)):\"pointer\"===r?Number(e):\"boolean\"===r?Boolean(e):e},i.addFunction=(r,t)=>{h(void 0!==r);var n=nr(r);if(n)return n;n=ar();try{ir(n,r)}catch(e){if(!(e instanceof TypeError))throw e;h(void 0!==t,\"Missing signature argument to addFunction: \"+r);t=er(r,t);ir(n,t)}return v.set(r,n),n},i.FS=M,[\"writeI53ToI64\",\"writeI53ToI64Clamped\",\"writeI53ToI64Signaling\",\"writeI53ToU64Clamped\",\"writeI53ToU64Signaling\",\"readI53FromU64\",\"convertI32PairToI53\",\"convertI32PairToI53Checked\",\"convertU32PairToI53\",\"getTempRet0\",\"setTempRet0\",\"inetPton4\",\"inetNtop4\",\"inetPton6\",\"inetNtop6\",\"readSockaddr\",\"writeSockaddr\",\"emscriptenLog\",\"readEmAsmArgs\",\"jstoi_q\",\"listenOnce\",\"autoResumeAudioContext\",\"getDynCaller\",\"dynCall\",\"runtimeKeepalivePush\",\"runtimeKeepalivePop\",\"callUserCallback\",\"maybeExit\",\"asmjsMangle\",\"HandleAllocator\",\"getNativeTypeSize\",\"addOnInit\",\"addOnPostCtor\",\"addOnPreMain\",\"addOnExit\",\"STACK_SIZE\",\"STACK_ALIGN\",\"POINTER_SIZE\",\"ASSERTIONS\",\"cwrap\",\"removeFunction\",\"reallyNegative\",\"unSign\",\"strLen\",\"reSign\",\"formatString\",\"intArrayToString\",\"AsciiToString\",\"stringToAscii\",\"UTF16ToString\",\"stringToUTF16\",\"lengthBytesUTF16\",\"UTF32ToString\",\"stringToUTF32\",\"lengthBytesUTF32\",\"stringToNewUTF8\",\"registerKeyEventCallback\",\"maybeCStringToJsString\",\"findEventTarget\",\"getBoundingClientRect\",\"fillMouseEventData\",\"registerMouseEventCallback\",\"registerWheelEventCallback\",\"registerUiEventCallback\",\"registerFocusEventCallback\",\"fillDeviceOrientationEventData\",\"registerDeviceOrientationEventCallback\",\"fillDeviceMotionEventData\",\"registerDeviceMotionEventCallback\",\"screenOrientation\",\"fillOrientationChangeEventData\",\"registerOrientationChangeEventCallback\",\"fillFullscreenChangeEventData\",\"registerFullscreenChangeEventCallback\",\"JSEvents_requestFullscreen\",\"JSEvents_resizeCanvasForFullscreen\",\"registerRestoreOldStyle\",\"hideEverythingExceptGivenElement\",\"restoreHiddenElements\",\"setLetterbox\",\"softFullscreenResizeWebGLRenderTarget\",\"doRequestFullscreen\",\"fillPointerlockChangeEventData\",\"registerPointerlockChangeEventCallback\",\"registerPointerlockErrorEventCallback\",\"requestPointerLock\",\"fillVisibilityChangeEventData\",\"registerVisibilityChangeEventCallback\",\"registerTouchEventCallback\",\"fillGamepadEventData\",\"registerGamepadEventCallback\",\"registerBeforeUnloadEventCallback\",\"fillBatteryEventData\",\"battery\",\"registerBatteryEventCallback\",\"setCanvasElementSize\",\"getCanvasElementSize\",\"jsStackTrace\",\"getCallstack\",\"convertPCtoSourceLocation\",\"wasiRightsToMuslOFlags\",\"wasiOFlagsToMuslOFlags\",\"safeSetTimeout\",\"setImmediateWrapped\",\"safeRequestAnimationFrame\",\"clearImmediateWrapped\",\"registerPostMainLoop\",\"registerPreMainLoop\",\"getPromise\",\"makePromise\",\"idsToPromises\",\"makePromiseCallback\",\"ExceptionInfo\",\"findMatchingCatch\",\"Browser_asyncPrepareDataCounter\",\"arraySum\",\"addDays\",\"getSocketFromFD\",\"getSocketAddress\",\"FS_mkdirTree\",\"_setNetworkCallback\",\"heapObjectForWebGLType\",\"toTypedArrayIndex\",\"webgl_enable_ANGLE_instanced_arrays\",\"webgl_enable_OES_vertex_array_object\",\"webgl_enable_WEBGL_draw_buffers\",\"webgl_enable_WEBGL_multi_draw\",\"webgl_enable_EXT_polygon_offset_clamp\",\"webgl_enable_EXT_clip_control\",\"webgl_enable_WEBGL_polygon_mode\",\"emscriptenWebGLGet\",\"computeUnpackAlignedImageSize\",\"colorChannelsInGlTextureFormat\",\"emscriptenWebGLGetTexPixelData\",\"emscriptenWebGLGetUniform\",\"webglGetUniformLocation\",\"webglPrepareUniformLocationsBeforeFirstUse\",\"webglGetLeftBracePos\",\"emscriptenWebGLGetVertexAttrib\",\"__glGetActiveAttribOrUniform\",\"writeGLArray\",\"registerWebGlEventCallback\",\"runAndAbortIfError\",\"ALLOC_NORMAL\",\"ALLOC_STACK\",\"allocate\",\"writeStringToMemory\",\"writeAsciiToMemory\",\"demangle\",\"stackTrace\"].forEach(function(e){ee(e)}),[\"run\",\"addRunDependency\",\"removeRunDependency\",\"out\",\"err\",\"abort\",\"wasmMemory\",\"wasmExports\",\"HEAPF32\",\"HEAPF64\",\"HEAP8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAP64\",\"HEAPU64\",\"writeStackCookie\",\"checkStackCookie\",\"readI53FromI64\",\"INT53_MAX\",\"INT53_MIN\",\"bigintToI53Checked\",\"stackSave\",\"stackRestore\",\"stackAlloc\",\"ptrToString\",\"zeroMemory\",\"exitJS\",\"getHeapMax\",\"growMemory\",\"ENV\",\"ERRNO_CODES\",\"strError\",\"DNS\",\"Protocols\",\"Sockets\",\"timers\",\"warnOnce\",\"readEmAsmArgsArray\",\"getExecutableName\",\"handleException\",\"keepRuntimeAlive\",\"asyncLoad\",\"alignMemory\",\"mmapAlloc\",\"wasmTable\",\"noExitRuntime\",\"addOnPreRun\",\"addOnPostRun\",\"getCFunc\",\"uleb128Encode\",\"sigToWasmTypes\",\"generateFuncType\",\"convertJsFunctionToWasm\",\"freeTableIndexes\",\"functionsInTableMap\",\"getEmptyTableSlot\",\"updateTableMap\",\"getFunctionAddress\",\"setValue\",\"getValue\",\"PATH\",\"PATH_FS\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"UTF8ToString\",\"stringToUTF8Array\",\"stringToUTF8\",\"lengthBytesUTF8\",\"intArrayFromString\",\"UTF16Decoder\",\"stringToUTF8OnStack\",\"writeArrayToMemory\",\"JSEvents\",\"specialHTMLTargets\",\"findCanvasEventTarget\",\"currentFullscreenStrategy\",\"restoreOldWindowedStyle\",\"UNWIND_CACHE\",\"ExitStatus\",\"getEnvStrings\",\"checkWasiClock\",\"doReadv\",\"doWritev\",\"initRandomFill\",\"randomFill\",\"emSetImmediate\",\"emClearImmediate_deps\",\"emClearImmediate\",\"promiseMap\",\"uncaughtExceptionCount\",\"exceptionLast\",\"exceptionCaught\",\"Browser\",\"getPreloadedImageData__data\",\"wget\",\"MONTH_DAYS_REGULAR\",\"MONTH_DAYS_LEAP\",\"MONTH_DAYS_REGULAR_CUMULATIVE\",\"MONTH_DAYS_LEAP_CUMULATIVE\",\"isLeapYear\",\"ydayFromDate\",\"SYSCALLS\",\"preloadPlugins\",\"FS_createPreloadedFile\",\"FS_modeStringToFlags\",\"FS_getMode\",\"FS_stdin_getChar_buffer\",\"FS_stdin_getChar\",\"FS_unlink\",\"FS_createPath\",\"FS_createDevice\",\"FS_readFile\",\"FS_root\",\"FS_mounts\",\"FS_devices\",\"FS_streams\",\"FS_nextInode\",\"FS_nameTable\",\"FS_currentPath\",\"FS_initialized\",\"FS_ignorePermissions\",\"FS_filesystems\",\"FS_syncFSRequests\",\"FS_readFiles\",\"FS_lookupPath\",\"FS_getPath\",\"FS_hashName\",\"FS_hashAddNode\",\"FS_hashRemoveNode\",\"FS_lookupNode\",\"FS_createNode\",\"FS_destroyNode\",\"FS_isRoot\",\"FS_isMountpoint\",\"FS_isFile\",\"FS_isDir\",\"FS_isLink\",\"FS_isChrdev\",\"FS_isBlkdev\",\"FS_isFIFO\",\"FS_isSocket\",\"FS_flagsToPermissionString\",\"FS_nodePermissions\",\"FS_mayLookup\",\"FS_mayCreate\",\"FS_mayDelete\",\"FS_mayOpen\",\"FS_checkOpExists\",\"FS_nextfd\",\"FS_getStreamChecked\",\"FS_getStream\",\"FS_createStream\",\"FS_closeStream\",\"FS_dupStream\",\"FS_doSetAttr\",\"FS_chrdev_stream_ops\",\"FS_major\",\"FS_minor\",\"FS_makedev\",\"FS_registerDevice\",\"FS_getDevice\",\"FS_getMounts\",\"FS_syncfs\",\"FS_mount\",\"FS_unmount\",\"FS_lookup\",\"FS_mknod\",\"FS_statfs\",\"FS_statfsStream\",\"FS_statfsNode\",\"FS_create\",\"FS_mkdir\",\"FS_mkdev\",\"FS_symlink\",\"FS_rename\",\"FS_rmdir\",\"FS_readdir\",\"FS_readlink\",\"FS_stat\",\"FS_fstat\",\"FS_lstat\",\"FS_doChmod\",\"FS_chmod\",\"FS_lchmod\",\"FS_fchmod\",\"FS_doChown\",\"FS_chown\",\"FS_lchown\",\"FS_fchown\",\"FS_doTruncate\",\"FS_truncate\",\"FS_ftruncate\",\"FS_utime\",\"FS_open\",\"FS_close\",\"FS_isClosed\",\"FS_llseek\",\"FS_read\",\"FS_write\",\"FS_mmap\",\"FS_msync\",\"FS_ioctl\",\"FS_writeFile\",\"FS_cwd\",\"FS_chdir\",\"FS_createDefaultDirectories\",\"FS_createDefaultDevices\",\"FS_createSpecialDirectories\",\"FS_createStandardStreams\",\"FS_staticInit\",\"FS_init\",\"FS_quit\",\"FS_findObject\",\"FS_analyzePath\",\"FS_createFile\",\"FS_createDataFile\",\"FS_forceLoadFile\",\"FS_createLazyFile\",\"FS_absolutePath\",\"FS_createFolder\",\"FS_createLink\",\"FS_joinPath\",\"FS_mmapAlloc\",\"FS_standardizePath\",\"MEMFS\",\"TTY\",\"PIPEFS\",\"SOCKFS\",\"tempFixedLengthArray\",\"miniTempWebGLFloatBuffers\",\"miniTempWebGLIntBuffers\",\"GL\",\"AL\",\"GLUT\",\"EGL\",\"GLEW\",\"IDBStore\",\"SDL\",\"SDL_gfx\",\"allocateUTF8\",\"allocateUTF8OnStack\",\"print\",\"printErr\",\"jstoi_s\",\"WORKERFS\"].forEach(ee);var sr,e={__assert_fail:function(e,r,t,n){return e=b(e),r=b(r),n=b(n),w(`Assertion failed: ${k(e)}, at: `+[r?k(r):\"unknown filename\",t,n?k(n):\"unknown function\"])},__syscall_chmod:function(e,r){e=b(e);try{return e=N.getStr(e),M.chmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_faccessat:function(e,r,t,n){r=b(r);try{var o,a;return(r=N.getStr(r),h(0===n||512==n),r=N.calculateAt(e,r),-8&t)?-28:(o=M.lookupPath(r,{follow:!0}).node)?(a=\"\",4&t&&(a+=\"r\"),2&t&&(a+=\"w\"),1&t&&(a+=\"x\"),a&&M.nodePermissions(o,a)?-2:0):-44}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchmod:function(e,r){try{return M.fchmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchown32:function(e,r,t){try{return M.fchown(e,r,t),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fcntl64:function(e,r,t){t=b(t),N.varargs=t;try{var n=N.getStreamFromFD(e);switch(r){case 0:if((o=Ie())<0)return-28;for(;M.streams[o];)o++;return M.dupStream(n,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:var o=Ie();return n.flags|=o,0;case 5:o=I();return K[(o+0)/2]=2,0;case 6:case 7:return 0}return-28}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fstat64:function(e,r){r=b(r);try{return N.writeStat(r,M.fstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ftruncate64:function(e,r){r=b(r);try{return isNaN(r)?61:(M.ftruncate(e,r),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_getcwd:function(e,r){e=b(e),r=b(r);try{var t,n;return 0===r?-28:(t=M.cwd(),r<(n=O(t)+1)?-68:(R(t,e,r),n))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ioctl:function(e,r,t){t=b(t),N.varargs=t;try{var n,o=N.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var a=o.tty.ops.ioctl_tcgets(o),i=I();p[i/4]=a.c_iflag||0,p[(i+4)/4]=a.c_oflag||0,p[(i+8)/4]=a.c_cflag||0,p[(i+12)/4]=a.c_lflag||0;for(var s=0;s<32;s++)f[i+s+17]=a.c_cc[s]||0}return 0;case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var i=I(),l=p[i/4],c=p[(i+4)/4],d=p[(i+8)/4],u=p[(i+12)/4],m=[],s=0;s<32;s++)m.push(f[i+s+17]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:l,c_oflag:c,c_cflag:d,c_lflag:u,c_cc:m})}return 0;case 21519:return o.tty?(i=I(),p[i/4]=0):-59;case 21520:return o.tty?-28:-59;case 21531:i=I();return M.ioctl(o,r,i);case 21523:return o.tty?(o.tty.ops.ioctl_tiocgwinsz&&(n=o.tty.ops.ioctl_tiocgwinsz(o.tty),i=I(),K[i/2]=n[0],K[(i+2)/2]=n[1]),0):-59;case 21524:case 21515:return o.tty?0:-59;default:return-28}}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_lstat64:function(e,r){e=b(e),r=b(r);try{return e=N.getStr(e),N.writeStat(r,M.lstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_mkdirat:function(e,r,t){r=b(r);try{return r=N.getStr(r),r=N.calculateAt(e,r),M.mkdir(r,t,0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_newfstatat:function(e,r,t,n){r=b(r),t=b(t);try{r=N.getStr(r);var o=256&n,a=4096&n;return h(!(n&=-6401),\"unknown flags in __syscall_newfstatat: \"+n),r=N.calculateAt(e,r,a),N.writeStat(t,o?M.lstat(r):M.stat(r))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){r=b(r),n=b(n),N.varargs=n;try{r=N.getStr(r),r=N.calculateAt(e,r);var o=n?Ie():0;return M.open(r,t,o).fd}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_readlinkat:function(e,r,t,n){r=b(r),t=b(t),n=b(n);try{var o,a,i;return(r=N.getStr(r),r=N.calculateAt(e,r),n<=0)?-28:(o=M.readlink(r),a=Math.min(n,O(o)),i=f[t+a],R(o,t,n+1),f[t+a]=i,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_rmdir:function(e){e=b(e);try{return e=N.getStr(e),M.rmdir(e),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_stat64:function(e,r){e=b(e),r=b(r);try{return e=N.getStr(e),N.writeStat(r,M.stat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_unlinkat:function(e,r,t){r=b(r);try{return r=N.getStr(r),r=N.calculateAt(e,r),0===t?M.unlink(r):512===t?M.rmdir(r):w(\"Invalid flags passed to unlinkat\"),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_utimensat:function(e,r,t,n){r=b(r),t=b(t);try{r=N.getStr(r),h(0===n),r=N.calculateAt(e,r,!0);var o,a,i,s,l=Date.now();return null!==((s=t?(i=Re(t),a=1073741823==(o=p[(t+8)/4])?l:1073741822==o?null:1e3*i+o/1e6,i=Re(t+=16),1073741823==(o=p[(t+8)/4])?l:1073741822==o?null:1e3*i+o/1e6):a=l)??a)&&M.utime(r,a,s),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_abort_js:()=>w(\"native code called abort()\"),_gmtime_js:function(e,r){e=b(e),r=b(r);var e=new Date(1e3*e),t=(p[r/4]=e.getUTCSeconds(),p[(r+4)/4]=e.getUTCMinutes(),p[(r+8)/4]=e.getUTCHours(),p[(r+12)/4]=e.getUTCDate(),p[(r+16)/4]=e.getUTCMonth(),p[(r+20)/4]=e.getUTCFullYear()-1900,p[(r+24)/4]=e.getUTCDay(),Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0)),e=(e.getTime()-t)/864e5|0;p[(r+28)/4]=e},_localtime_js:function(e,r){e=b(e),r=b(r);var e=new Date(1e3*e),t=(p[r/4]=e.getSeconds(),p[(r+4)/4]=e.getMinutes(),p[(r+8)/4]=e.getHours(),p[(r+12)/4]=e.getDate(),p[(r+16)/4]=e.getMonth(),p[(r+20)/4]=e.getFullYear()-1900,p[(r+24)/4]=e.getDay(),0|xe(e)),t=(p[(r+28)/4]=t,a[(r+40)/8]=BigInt(-60*e.getTimezoneOffset()),new Date(e.getFullYear(),0,1)),n=new Date(e.getFullYear(),6,1).getTimezoneOffset(),t=t.getTimezoneOffset(),e=0|(n!=t&&e.getTimezoneOffset()==Math.min(t,n));p[(r+32)/4]=e},_mmap_js:function(e,r,t,n,o,a,i){e=b(e),o=b(o),a=b(a),i=b(i);try{var s,l,c;return isNaN(o)?61:(s=N.getStreamFromFD(n),c=(l=M.mmap(s,e,o,r,t)).ptr,p[a/4]=l.allocated,u[i/8]=BigInt(c),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_munmap_js:function(e,r,t,n,o,a){e=b(e),r=b(r),a=b(a);try{var i=N.getStreamFromFD(o);2&t&&N.doMsync(e,i,r,n,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_timegm_js:function(e){e=b(e);r=Date.UTC(p[(e+20)/4]+1900,p[(e+16)/4],p[(e+12)/4],p[(e+8)/4],p[(e+4)/4],p[e/4],0),r=new Date(r),p[(e+24)/4]=r.getUTCDay(),t=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),t=(r.getTime()-t)/864e5|0,p[(e+28)/4]=t;var r,t,e=r.getTime()/1e3;return BigInt(e)},_tzset_js:function(e,r,t,n){e=b(e),r=b(r),t=b(t),n=b(n);var o=(new Date).getFullYear(),a=new Date(o,0,1),o=new Date(o,6,1),a=a.getTimezoneOffset(),o=o.getTimezoneOffset(),i=Math.max(a,o),e=(u[e/8]=BigInt(60*i),p[r/4]=Number(a!=o),e=>{var r=0<=e?\"-\":\"+\",e=Math.abs(e);return\"UTC\"+r+String(Math.floor(e/60)).padStart(2,\"0\")+String(e%60).padStart(2,\"0\")}),i=e(a),r=e(o);h(i),h(r),h(O(i)<=16,`timezone name truncated to fit in TZNAME_MAX (${i})`),h(O(r)<=16,`timezone name truncated to fit in TZNAME_MAX (${r})`),o<a?(R(i,t,17),R(r,n,17)):(R(i,n,17),R(r,t,17))},clock_time_get:function(e,r,t){return t=b(t),je(e)?(e=(0===e?Be:Ue)(),e=Math.round(1e3*e*1e3),a[t/8]=BigInt(e),0):28},emscripten_date_now:Be,emscripten_err:function(e){return e=b(e),l(k(e))},emscripten_get_heap_max:()=>BigInt(ze()),emscripten_get_now:Ue,emscripten_resize_heap:function(e){e=b(e);var r=s.length,t=(h(r<e),ze());if(t<e)l(`Cannot enlarge memory, requested ${e} bytes, but the limit is ${t} bytes!`);else{for(var n=1;n<=4;n*=2){var o=r*(1+.2/n),o=Math.min(o,e+100663296),a=Math.min(t,ke(Math.max(e,o),65536));if(He(a))return!0}l(`Failed to grow the heap from ${r} bytes to ${a} bytes, not enough memory!`)}return!1},environ_get:function(e,r){e=b(e),r=b(r);var t,n=0,o=0;for(t of We()){var a=r+n;u[(e+o)/8]=BigInt(a),n+=R(t,a,1/0)+1,o+=8}return 0},environ_sizes_get:function(e,r){e=b(e),r=b(r);var t,n=We(),o=(u[e/8]=BigInt(n.length),0);for(t of n)o+=O(t)+1;return u[r/8]=BigInt(o),0},fd_close:function(e){try{var r=N.getStreamFromFD(e);return M.close(r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){r=b(r);try{var t=N.getStreamFromFD(e),n=t.tty?2:M.isDir(t.mode)?3:M.isLink(t.mode)?7:4;return f[r]=n,K[(r+2)/2]=0,a[(r+8)/8]=BigInt(0),a[(r+16)/8]=BigInt(0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){r=b(r),t=b(t),n=b(n);try{var o=N.getStreamFromFD(e),a=$e(o,r,t);return u[n/8]=BigInt(a),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n){r=b(r),n=b(n);try{var o;return isNaN(r)?61:(o=N.getStreamFromFD(e),M.llseek(o,r,t),a[n/8]=BigInt(o.position),o.getdents&&0===r&&0===t&&(o.getdents=null),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_sync:function(e){try{var r=N.getStreamFromFD(e);return r.stream_ops?.fsync?r.stream_ops.fsync(r):0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){r=b(r),t=b(t),n=b(n);try{var o=N.getStreamFromFD(e),a=Ye(o,r,t);return u[n/8]=BigInt(a),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}}},C=(oe(\"wasm-instantiate\"),sr={env:e,wasi_snapshot_preview1:e},i.instantiateWasm?new Promise((t,r)=>{try{i.instantiateWasm(sr,(e,r)=>{t(lr(e))})}catch(e){l(\"Module.instantiateWasm callback failed with error: \"+e),r(e)}}):lr(se(te??=ie(),sr)[0]));function lr(e){var r,t;return C=e.exports,e=C,e=Object.assign({},e),r=r=>e=>r(BigInt(e)),t=e=>()=>Number(e()),e.strerror=(r=>e=>Number(r(e)))(e.strerror),e.fflush=r(e.fflush),e.__main_argc_argv=(n=>(e,r,t)=>n(e,BigInt(r||0),BigInt(t||0)))(e.__main_argc_argv),e.emscripten_stack_get_end=t(e.emscripten_stack_get_end),e.emscripten_stack_get_base=t(e.emscripten_stack_get_base),e.emscripten_builtin_memalign=(t=>(e,r)=>Number(t(BigInt(e),BigInt(r))))(e.emscripten_builtin_memalign),e._emscripten_stack_restore=r(e._emscripten_stack_restore),e._emscripten_stack_alloc=(r=>e=>Number(r(BigInt(e))))(e._emscripten_stack_alloc),e.emscripten_stack_get_current=t(e.emscripten_stack_get_current),h(Y=(C=e).memory,\"memory not found in wasm exports\"),re(),h(y=C.__indirect_function_table,\"table not found in wasm exports\"),ae(\"wasm-instantiate\"),C}var cr,dr=g(\"strerror\",1),ur=g(\"fflush\",1),mr=(i._trace_processor_rpc_init=g(\"trace_processor_rpc_init\",2),i._trace_processor_on_rpc_request=g(\"trace_processor_on_rpc_request\",1),i._main=g(\"__main_argc_argv\",2)),fr=C.emscripten_stack_get_end,pr=(C.emscripten_stack_get_base,g(\"emscripten_builtin_memalign\",2)),hr=C.emscripten_stack_init,_r=(C.emscripten_stack_get_free,C._emscripten_stack_restore),Er=C._emscripten_stack_alloc,wr=C.emscripten_stack_get_current;function gr(e=[]){h(0==_,'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])'),h(void 0===me||0==me.length,\"cannot call main when preRun functions remain to be called\");var r=mr,t=(e.unshift(H),e.length),n=qe(8*(t+1)),o=n;e.forEach(e=>{u[o/8]=BigInt(Xe(e)),o+=8}),u[o/8]=BigInt(0);try{var a=r(t,BigInt(n));return Ve(a,!0),a}catch(e){return Ke(e)}}function yr(){var e;hr(),h(0==(3&(e=fr()))),0==e&&(e+=4),n[e/4]=34821223,n[(e+4)/4]=2310721022,n[0]=1668509029}if(i.preInit)for(\"function\"==typeof i.preInit&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();Q(\"preInit\"),function e(r=z){if(0<_)ne=e;else{if(yr(),i.preRun)for(\"function\"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)fe(i.preRun.shift());Q(\"preRun\"),ce(me),0<_?ne=e:(i.setStatus?(i.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>i.setStatus(\"\"),1),t()},1)):t(),Z())}function t(){if(h(!cr),cr=!0,i.calledRun=!0,!q){if(h(!X),X=!0,Z(),i.noFSInit||M.initialized||M.init(),C.__wasm_call_ctors(),M.ignorePermissions=!1,Z(),x(i),i.onRuntimeInitialized?.(),Q(\"onRuntimeInitialized\"),i.noInitialRun||gr(r),Z(),i.postRun)for(\"function\"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)ue(i.postRun.shift());Q(\"postRun\"),ce(de)}}}(),r=i;for(const vr of Object.keys(i))vr in L||Object.defineProperty(L,vr,{configurable:!0,get(){w(`Access to module property ('${vr}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return r}var r,Sr;return q||(q=1,(r=R).exports,Sr=\"undefined\"!=typeof document?document.currentScript?.src:void 0,r.exports=e,r.exports.default=e),R.exports}R.exports;var J,Z,Q,C={exports:{}};function ee(){function e(L={}){var x,U,B,j,i=L,e=(new Promise((e,r)=>{x=e,U=r}),\"object\"==typeof window),d=\"undefined\"!=typeof WorkerGlobalScope,r=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node&&\"renderer\"!=process.type,t=!e&&!r&&!d,z=[],H=\"./this.program\",G=(e,r)=>{throw r},W=(d&&(vr=self.location.href),\"\");if(t){if(\"object\"==typeof process||\"object\"==typeof window||\"undefined\"!=typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\")}else{if(!e&&!d)throw new Error(\"environment detection error\");try{W=new URL(\".\",vr).href}catch{}if(\"object\"!=typeof window&&\"undefined\"==typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");d&&(j=e=>{var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),B=async e=>{_(!X(e),\"readAsync does not work with file:// URLs\");e=await fetch(e,{credentials:\"same-origin\"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+\" : \"+e.url)}}var $,Y,V,f,s,p,h,u,a,m=console.log.bind(console),l=console.error.bind(console),c=\"WORKERFS is no longer included by default; build with -lworkerfs.js\",K=(_(!r,\"node environment detected but not enabled at build time.  Add `node` to `-sENVIRONMENT` to enable.\"),_(!t,\"shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable.\"),\"object\"!=typeof WebAssembly&&l(\"no native wasm support detected\"),!1);function _(e,r){e||o(\"Assertion failed\"+(r?\": \"+r:\"\"))}var q=!1,X=e=>e.startsWith(\"file://\");function J(){var e,r,t;K||(0==(e=mr())&&(e+=4),r=u[e>>>2>>>0],t=u[e+4>>>2>>>0],34821223==r&&2310721022==t||o(`Stack overflow! Stack cookie has been overwritten at ${pe(e)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${pe(t)} `+pe(r)),1668509029!=u[0]&&o(\"Runtime error: The application has corrupted its heap memory area (address zero)!\"))}var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\";function Z(e){Object.getOwnPropertyDescriptor(i,e)||Object.defineProperty(i,e,{configurable:!0,set(){o(`Attempt to set \\`Module.${e}\\` after it has already been processed.  This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function Q(t){Object.getOwnPropertyDescriptor(i,t)||Object.defineProperty(i,t,{configurable:!0,get(){var e,r=`'${t}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;\"FS_createPath\"!==(e=t)&&\"FS_createDataFile\"!==e&&\"FS_createPreloadedFile\"!==e&&\"FS_unlink\"!==e&&\"addRunDependency\"!==e&&\"FS_createLazyFile\"!==e&&\"FS_createDevice\"!==e&&\"removeRunDependency\"!==e||(r+=\". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you\"),o(r)}})}function ee(){var e=Y.buffer;f=new Int8Array(e),p=new Int16Array(e),i.HEAPU8=s=new Uint8Array(e),h=new Int32Array(e),u=new Uint32Array(e),a=new BigInt64Array(e),new BigUint64Array(e)}_(\"undefined\"!=typeof Int32Array&&\"undefined\"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,\"JS engine does not provide full typed array support\");var re,E=0,te=null,w={},n=null;function ne(e){E++,i.monitorRunDependencies?.(E),e?(_(!w[e]),w[e]=1,null===n&&\"undefined\"!=typeof setInterval&&(n=setInterval(()=>{if(K)clearInterval(n),n=null;else{var e,r=!1;for(e in w)r||(r=!0,l(\"still waiting on run dependencies:\")),l(\"dependency: \"+e);r&&l(\"(end of list)\")}},1e4))):l(\"warning: run dependency added without ID\")}function oe(e){E--,i.monitorRunDependencies?.(E),e?(_(w[e]),delete w[e]):l(\"warning: run dependency removed without ID\"),0==E&&(null!==n&&(clearInterval(n),n=null),te)&&(e=te,te=null,e())}function o(e){i.onAbort?.(e),l(e=\"Aborted(\"+e+\")\"),K=!0;e=new WebAssembly.RuntimeError(e);throw U(e),e}function g(t,n){return(...e)=>{_(q,`native function \\`${t}\\` called before runtime initialization`);var r=C[t];return _(r,`exported native function \\`${t}\\` not found`),_(e.length<=n,`native function \\`${t}\\` called with ${e.length} args but expects `+n),r(...e)}}function ae(){return e=\"trace_processor.wasm\",i.locateFile?i.locateFile(e,W):W+e;var e}function ie(e,r){e=function(e){if(e==re&&$)return new Uint8Array($);if(j)return j(e);throw'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e),e=new WebAssembly.Module(e);return[new WebAssembly.Instance(e,r),e]}class se{name=\"ExitStatus\";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var y,v,le=e=>{for(;0<e.length;)e.shift()(i)},ce=[],de=e=>ce.push(e),ue=[],me=e=>ue.push(e),fe=!0,pe=e=>(_(\"number\"==typeof e),\"0x\"+e.toString(16).padStart(8,\"0\")),he=e=>hr(e),_e=()=>Er(),S=e=>{S.shown||={},S.shown[e]||(S.shown[e]=1,l(e))},b=e=>e<-9007199254740992||9007199254740992<e?NaN:Number(e),Ee=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,F=(e,r=0,t=NaN)=>{for(var n=(r>>>=0)+t,o=r;e[o]&&!(n<=o);)++o;if(16<o-r&&e.buffer&&Ee)return Ee.decode(e.subarray(r,o));for(var a=\"\";r<o;){var i,s,l=e[r++];128&l?(s=63&e[r++],192==(224&l)?a+=String.fromCharCode((31&l)<<6|s):(i=63&e[r++],(l=224==(240&l)?(15&l)<<12|s<<6|i:(240!=(248&l)&&S(\"Invalid UTF-8 leading byte \"+pe(l)+\" encountered when deserializing a UTF-8 string in wasm memory to a JS string!\"),(7&l)<<18|s<<12|i<<6|63&e[r++]))<65536?a+=String.fromCharCode(l):(s=l-65536,a+=String.fromCharCode(55296|s>>10,56320|1023&s)))):a+=String.fromCharCode(l)}return a},k=(e,r)=>(_(\"number\"==typeof e,`UTF8ToString expects a number (got ${typeof e})`),(e>>>=0)?F(s,e,r):\"\"),T={isAbs:e=>\"/\"===e.charAt(0),splitPath:e=>{return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;0<=n;n--){var o=e[n];\".\"===o?e.splice(n,1):\"..\"===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=T.isAbs(e),t=\"/\"===e.slice(-1);return(e=(e=T.normalizeArray(e.split(\"/\").filter(e=>!!e),!r).join(\"/\"))||r?e:\".\")&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var e=T.splitPath(e),r=e[0],e=e[1];return r||e?r+(e=e&&e.slice(0,-1)):\".\"},basename:e=>e&&e.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...e)=>T.normalize(e.join(\"/\")),join2:(e,r)=>T.normalize(e+\"/\"+r)},we=()=>e=>crypto.getRandomValues(e),ge=e=>{(ge=we())(e)},A={resolve:(...e)=>{for(var r=\"\",t=!1,n=e.length-1;-1<=n&&!t;n--){var o=0<=n?e[n]:M.cwd();if(\"string\"!=typeof o)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!o)return\"\";r=o+\"/\"+r,t=T.isAbs(o)}return(t?\"/\":\"\")+(r=T.normalizeArray(r.split(\"/\").filter(e=>!!e),!t).join(\"/\"))||\".\"},relative:(e,r)=>{function t(e){for(var r=0;r<e.length&&\"\"===e[r];r++);for(var t=e.length-1;0<=t&&\"\"===e[t];t--);return t<r?[]:e.slice(r,t-r+1)}e=A.resolve(e).slice(1),r=A.resolve(r).slice(1);for(var n=t(e.split(\"/\")),o=t(r.split(\"/\")),a=Math.min(n.length,o.length),i=a,s=0;s<a;s++)if(n[s]!==o[s]){i=s;break}for(var l=[],s=i;s<n.length;s++)l.push(\"..\");return(l=l.concat(o.slice(i))).join(\"/\")}},ye=[],O=e=>{for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:55296<=n&&n<=57343?(r+=4,++t):r+=3}return r},ve=(e,r,t,n)=>{if(t>>>=0,_(\"string\"==typeof e,`stringToUTF8Array expects a string (got ${typeof e})`),!(0<n))return 0;for(var o=t,a=t+n-1,i=0;i<e.length;++i){var s=e.charCodeAt(i);if((s=55296<=s&&s<=57343?65536+((1023&s)<<10)|1023&e.charCodeAt(++i):s)<=127){if(a<=t)break;r[t++>>>0]=s}else{if(s<=2047){if(a<=t+1)break;r[t++>>>0]=192|s>>6}else{if(s<=65535){if(a<=t+2)break;r[t++>>>0]=224|s>>12}else{if(a<=t+3)break;1114111<s&&S(\"Invalid Unicode code point \"+pe(s)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\"),r[t++>>>0]=240|s>>18,r[t++>>>0]=128|s>>12&63}r[t++>>>0]=128|s>>6&63}r[t++>>>0]=128|63&s}}return r[t>>>0]=0,t-o},Se=(e,r,t)=>{t=0<t?t:O(e)+1,t=new Array(t),e=ve(e,t,0,t.length);return r&&(t.length=e),t},D={ttys:[],init(){},shutdown(){},register(e,r){D.ttys[e]={input:[],output:[],ops:r},M.registerDevice(e,D.stream_ops)},stream_ops:{open(e){var r=D.ttys[e.node.rdev];if(!r)throw new M.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new M.ErrnoError(60);for(var a,i=0,s=0;s<n;s++){try{a=e.tty.ops.get_char(e.tty)}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){if(!e.tty||!e.tty.ops.put_char)throw new M.ErrnoError(60);try{for(var a=0;a<n;a++)e.tty.ops.put_char(e.tty,r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}},default_tty_ops:{get_char(e){if(!ye.length){var r=null;if(\"undefined\"!=typeof window&&\"function\"==typeof window.prompt&&null!==(r=window.prompt(\"Input: \"))&&(r+=\"\\n\"),!r)return null;ye=Se(r,!0)}return ye.shift()},put_char(e,r){null===r||10===r?(m(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(m(F(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){null===r||10===r?(l(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(l(F(e.output)),e.output=[])}}},be=(e,r)=>s.fill(0,e,e+r),Fe=(e,r)=>(_(r,\"alignment argument is required\"),Math.ceil(e/r)*r),ke=e=>{e=Fe(e,65536);var r=fr(65536,e);return r&&be(r,e),r},P={ops_table:null,mount(e){return P.createNode(null,\"/\",16895,0)},createNode(e,r,t,n){if(M.isBlkdev(t)||M.isFIFO(t))throw new M.ErrnoError(63);P.ops_table||={dir:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,lookup:P.node_ops.lookup,mknod:P.node_ops.mknod,rename:P.node_ops.rename,unlink:P.node_ops.unlink,rmdir:P.node_ops.rmdir,readdir:P.node_ops.readdir,symlink:P.node_ops.symlink},stream:{llseek:P.stream_ops.llseek}},file:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:{llseek:P.stream_ops.llseek,read:P.stream_ops.read,write:P.stream_ops.write,mmap:P.stream_ops.mmap,msync:P.stream_ops.msync}},link:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,readlink:P.node_ops.readlink},stream:{}},chrdev:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:M.chrdev_stream_ops}};t=M.createNode(e,r,t,n);return M.isDir(t.mode)?(t.node_ops=P.ops_table.dir.node,t.stream_ops=P.ops_table.dir.stream,t.contents={}):M.isFile(t.mode)?(t.node_ops=P.ops_table.file.node,t.stream_ops=P.ops_table.file.stream,t.usedBytes=0,t.contents=null):M.isLink(t.mode)?(t.node_ops=P.ops_table.link.node,t.stream_ops=P.ops_table.link.stream):M.isChrdev(t.mode)&&(t.node_ops=P.ops_table.chrdev.node,t.stream_ops=P.ops_table.chrdev.stream),t.atime=t.mtime=t.ctime=Date.now(),e&&(e.contents[r]=t,e.atime=e.mtime=e.ctime=t.atime),t},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;r<=t||(r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256)),t=e.contents,e.contents=new Uint8Array(r),0<e.usedBytes&&e.contents.set(t.subarray(0,e.usedBytes),0))},resizeFileStorage(e,r){var t;e.usedBytes!=r&&(0==r?(e.contents=null,e.usedBytes=0):(t=e.contents,e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r))},node_ops:{getattr(e){var r={};return r.dev=M.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,M.isDir(e.mode)?r.size=4096:M.isFile(e.mode)?r.size=e.usedBytes:M.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t]);void 0!==r.size&&P.resizeFileStorage(e,r.size)},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){return P.createNode(e,r,t,n)},rename(e,r,t){var n;try{n=M.lookupNode(r,t)}catch(e){}if(n){if(M.isDir(e.mode))for(var o in n.contents)throw new M.ErrnoError(55);M.hashRemoveNode(n)}delete e.parent.contents[e.name],(r.contents[t]=e).name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.contents[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){for(var t in M.lookupNode(e,r).contents)throw new M.ErrnoError(55);delete e.contents[r],e.ctime=e.mtime=Date.now()},readdir(e){return[\".\",\"..\",...Object.keys(e.contents)]},symlink(e,r,t){e=P.createNode(e,r,41471,0);return e.link=t,e},readlink(e){if(M.isLink(e.mode))return e.link;throw new M.ErrnoError(28)}},stream_ops:{read(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(_(0<=i),8<i&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s<i;s++)r[t+s]=a[o+s];return i},write(e,r,t,n,o,a){if(_(!(r instanceof ArrayBuffer)),r.buffer===f.buffer&&(a=!1),!n)return 0;var i=e.node;if(i.mtime=i.ctime=Date.now(),r.subarray&&(!i.contents||i.contents.subarray)){if(a)return _(0===o,\"canOwn must imply no weird position inside the file\"),i.contents=r.subarray(t,t+n),i.usedBytes=n;if(0===i.usedBytes&&0===o)return i.contents=r.slice(t,t+n),i.usedBytes=n;if(o+n<=i.usedBytes)return i.contents.set(r.subarray(t,t+n),o),n}if(P.expandFileStorage(i,o+n),i.contents.subarray&&r.subarray)i.contents.set(r.subarray(t,t+n),o);else for(var s=0;s<n;s++)i.contents[o+s]=r[t+s];return i.usedBytes=Math.max(i.usedBytes,o+n),n},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.usedBytes),r<0)throw new M.ErrnoError(28);return r},mmap(e,r,t,n,o){if(!M.isFile(e.node.mode))throw new M.ErrnoError(43);var a,i,e=e.node.contents;if(2&o||!e||e.buffer!==f.buffer){if(i=!0,!(a=ke(r)))throw new M.ErrnoError(48);e&&((0<t||t+r<e.length)&&(e=e.subarray?e.subarray(t,t+r):Array.prototype.slice.call(e,t,t+r)),f.set(e,a>>>0))}else i=!1,a=e.byteOffset;return{ptr:a,allocated:i}},msync(e,r,t,n,o){return P.stream_ops.write(e,r,0,n,t,!1),0}}},Te=async e=>{var r=await B(e);return _(r,`Loading data file \"${e}\" failed (no arrayBuffer).`),new Uint8Array(r)},Ae=(...e)=>M.createDataFile(...e),Oe=[],De=(r,t,n,o)=>{\"undefined\"!=typeof Browser&&Browser.init();var a=!1;return Oe.forEach(e=>{a||e.canHandle(t)&&(e.handle(r,t,n,o),a=!0)}),a},Pe=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},c={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount(e){_(d),c.reader??=new FileReaderSync;var a=c.createNode(null,\"/\",c.DIR_MODE,0),i={};function n(e){for(var r=e.split(\"/\"),t=a,n=0;n<r.length-1;n++){var o=r.slice(0,n+1).join(\"/\");i[o]||=c.createNode(t,r[n],c.DIR_MODE,0),t=i[o]}return t}function o(e){e=e.split(\"/\");return e[e.length-1]}return Array.prototype.forEach.call(e.opts.files||[],function(e){c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e,e.lastModifiedDate)}),(e.opts.blobs||[]).forEach(e=>{c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e.data)}),(e.opts.packages||[]).forEach(t=>{t.metadata.files.forEach(e=>{var r=e.filename.slice(1);c.createNode(n(r),o(r),c.FILE_MODE,0,t.blob.slice(e.start,e.end))})}),a},createNode(e,r,t,n,o,a){var i=M.createNode(e,r,t);return i.mode=t,i.node_ops=c.node_ops,i.stream_ops=c.stream_ops,i.atime=i.mtime=i.ctime=(a||new Date).getTime(),_(c.FILE_MODE!==c.DIR_MODE),t===c.FILE_MODE?(i.size=o.size,i.contents=o):(i.size=4096,i.contents={}),e&&(e.contents[r]=i),i},node_ops:{getattr(e){return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:e.size,atime:new Date(e.atime),mtime:new Date(e.mtime),ctime:new Date(e.ctime),blksize:4096,blocks:Math.ceil(e.size/4096)}},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t])},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){throw new M.ErrnoError(63)},rename(e,r,t){throw new M.ErrnoError(63)},unlink(e,r){throw new M.ErrnoError(63)},rmdir(e,r){throw new M.ErrnoError(63)},readdir(e){var r,t=[\".\",\"..\"];for(r of Object.keys(e.contents))t.push(r);return t},symlink(e,r,t){throw new M.ErrnoError(63)}},stream_ops:{read(e,r,t,n,o){return o>=e.node.size?0:(e=e.node.contents.slice(o,o+n),o=c.reader.readAsArrayBuffer(e),r.set(new Uint8Array(o),t),e.size)},write(e,r,t,n,o){throw new M.ErrnoError(29)},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.size),r<0)throw new M.ErrnoError(28);return r}}},Me={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},M={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class extends Error{name=\"ErrnoError\";constructor(e){for(var r in super(q?k(cr(e)):\"\"),this.errno=e,Me)if(Me[r]===e){this.code=r;break}}},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return 0!=(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,n){this.parent=e=e||this,this.mount=e.mount,this.id=M.nextInode++,this.name=r,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return M.isDir(this.mode)}get isDevice(){return M.isChrdev(this.mode)}},lookupPath(e,r={}){if(!e)throw new M.ErrnoError(44);r.follow_mount??=!0,T.isAbs(e)||(e=M.cwd()+\"/\"+e);e:for(var t=0;t<40;t++){for(var n=e.split(\"/\").filter(e=>!!e),o=M.root,a=\"/\",i=0;i<n.length;i++){var s=i===n.length-1;if(s&&r.parent)break;if(\".\"!==n[i])if(\"..\"===n[i]){if(a=T.dirname(a),M.isRoot(o)){e=a+\"/\"+n.slice(i+1).join(\"/\");continue e}o=o.parent}else{a=T.join2(a,n[i]);try{o=M.lookupNode(o,n[i])}catch(e){if(44===e?.errno&&s&&r.noent_okay)return{path:a};throw e}if(!M.isMountpoint(o)||s&&!r.follow_mount||(o=o.mounted.root),M.isLink(o.mode)&&(!s||r.follow)){if(!o.node_ops.readlink)throw new M.ErrnoError(52);s=o.node_ops.readlink(o);e=(s=T.isAbs(s)?s:T.dirname(a)+\"/\"+s)+\"/\"+n.slice(i+1).join(\"/\");continue e}}}return{path:a,node:o}}throw new M.ErrnoError(32)},getPath(e){for(var r,t;;){if(M.isRoot(e))return t=e.mount.mountpoint,r?\"/\"!==t[t.length-1]?t+\"/\"+r:t+r:t;r=r?e.name+\"/\"+r:e.name,e=e.parent}},hashName(e,r){for(var t=0,n=0;n<r.length;n++)t=(t<<5)-t+r.charCodeAt(n)|0;return(e+t>>>0)%M.nameTable.length},hashAddNode(e){var r=M.hashName(e.parent.id,e.name);e.name_next=M.nameTable[r],M.nameTable[r]=e},hashRemoveNode(e){var r=M.hashName(e.parent.id,e.name);if(M.nameTable[r]===e)M.nameTable[r]=e.name_next;else for(var t=M.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=M.mayLookup(e);if(t)throw new M.ErrnoError(t);for(var t=M.hashName(e.id,r),n=M.nameTable[t];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===r)return n}return M.lookup(e,r)},createNode(e,r,t,n){_(\"object\"==typeof e);e=new M.FSNode(e,r,t,n);return M.hashAddNode(e),e},destroyNode(e){M.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return 32768==(61440&e)},isDir(e){return 16384==(61440&e)},isLink(e){return 40960==(61440&e)},isChrdev(e){return 8192==(61440&e)},isBlkdev(e){return 24576==(61440&e)},isFIFO(e){return 4096==(61440&e)},isSocket(e){return 49152==(49152&e)},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][3&e];return 512&e&&(r+=\"w\"),r},nodePermissions(e,r){return M.ignorePermissions||(!r.includes(\"r\")||292&e.mode)&&(!r.includes(\"w\")||146&e.mode)&&(!r.includes(\"x\")||73&e.mode)?0:2},mayLookup(e){return M.isDir(e.mode)?M.nodePermissions(e,\"x\")||(e.node_ops.lookup?0:2):54},mayCreate(e,r){if(!M.isDir(e.mode))return 54;try{M.lookupNode(e,r);return 20}catch(e){}return M.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var n;try{n=M.lookupNode(e,r)}catch(e){return e.errno}r=M.nodePermissions(e,\"wx\");if(r)return r;if(t){if(!M.isDir(n.mode))return 54;if(M.isRoot(n)||M.getPath(n)===M.cwd())return 10}else if(M.isDir(n.mode))return 31;return 0},mayOpen(e,r){return e?M.isLink(e.mode)?32:M.isDir(e.mode)&&(\"r\"!==M.flagsToPermissionString(r)||576&r)?31:M.nodePermissions(e,M.flagsToPermissionString(r)):44},checkOpExists(e,r){if(e)return e;throw new M.ErrnoError(r)},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=M.MAX_OPEN_FDS;e++)if(!M.streams[e])return e;throw new M.ErrnoError(33)},getStreamChecked(e){e=M.getStream(e);if(e)return e;throw new M.ErrnoError(8)},getStream:e=>M.streams[e],createStream(e,r=-1){return _(-1<=r),e=Object.assign(new M.FSStream,e),-1==r&&(r=M.nextfd()),e.fd=r,M.streams[r]=e},closeStream(e){M.streams[e]=null},dupStream(e,r=-1){e=M.createStream(e,r);return e.stream_ops?.dup?.(e),e},doSetAttr(e,r,t){var n=e?.stream_ops.setattr,e=n?e:r;n??=r.node_ops.setattr,M.checkOpExists(n,63),n(e,t)},chrdev_stream_ops:{open(e){var r=M.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new M.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice(e,r){M.devices[e]={stream_ops:r}},getDevice:e=>M.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(r,t){\"function\"==typeof r&&(t=r,r=!1),M.syncFSRequests++,1<M.syncFSRequests&&l(`warning: ${M.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=M.getMounts(M.root.mount),o=0;function a(e){return _(0<M.syncFSRequests),M.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,a(e));++o>=n.length&&a(null)}n.forEach(e=>{if(!e.type.syncfs)return i(null);e.type.syncfs(e,r,i)})},mount(e,r,t){if(\"string\"==typeof e)throw e;var n,o=\"/\"===t,a=!t;if(o&&M.root)throw new M.ErrnoError(10);if(!o&&!a){a=M.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,M.isMountpoint(n))throw new M.ErrnoError(10);if(!M.isDir(n.mode))throw new M.ErrnoError(54)}a={type:e,opts:r,mountpoint:t,mounts:[]},r=e.mount(a);return(r.mount=a).root=r,o?M.root=r:n&&(n.mounted=a,n.mount)&&n.mount.mounts.push(a),r},unmount(e){e=M.lookupPath(e,{follow_mount:!1});if(!M.isMountpoint(e.node))throw new M.ErrnoError(28);var e=e.node,r=e.mounted,n=M.getMounts(r),r=(Object.keys(M.nameTable).forEach(e=>{for(var r=M.nameTable[e];r;){var t=r.name_next;n.includes(r.mount)&&M.destroyNode(r),r=t}}),e.mounted=null,e.mount.mounts.indexOf(r));_(-1!==r),e.mount.mounts.splice(r,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var n=M.lookupPath(e,{parent:!0}).node,e=T.basename(e);if(!e)throw new M.ErrnoError(28);if(\".\"===e||\"..\"===e)throw new M.ErrnoError(20);var o=M.mayCreate(n,e);if(o)throw new M.ErrnoError(o);if(n.node_ops.mknod)return n.node_ops.mknod(n,e,r,t);throw new M.ErrnoError(63)},statfs(e){return M.statfsNode(M.lookupPath(e,{follow:!0}).node)},statfsStream(e){return M.statfsNode(e.node)},statfsNode(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:M.nextInode,ffree:M.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(r,e.node_ops.statfs(e.mount.opts.root)),r},create(e,r=438){return M.mknod(e,r=r&4095|32768,0)},mkdir(e,r=511){return M.mknod(e,r=r&1023|16384,0)},mkdirTree(e,r){var t,n=\"\";for(t of e.split(\"/\"))if(t){(n||T.isAbs(e))&&(n+=\"/\"),n+=t;try{M.mkdir(n,r)}catch(e){if(20!=e.errno)throw e}}},mkdev(e,r,t){return void 0===t&&(t=r,r=438),M.mknod(e,r|=8192,t)},symlink(e,r){if(!A.resolve(e))throw new M.ErrnoError(44);var t=M.lookupPath(r,{parent:!0}).node;if(!t)throw new M.ErrnoError(44);var r=T.basename(r),n=M.mayCreate(t,r);if(n)throw new M.ErrnoError(n);if(t.node_ops.symlink)return t.node_ops.symlink(t,r,e);throw new M.ErrnoError(63)},rename(e,r){var t=T.dirname(e),n=T.dirname(r),o=T.basename(e),a=T.basename(r),i=M.lookupPath(e,{parent:!0}),i=i.node,s=M.lookupPath(r,{parent:!0}).node;if(!i||!s)throw new M.ErrnoError(44);if(i.mount!==s.mount)throw new M.ErrnoError(75);var l,c=M.lookupNode(i,o),e=A.relative(e,n);if(\".\"!==e.charAt(0))throw new M.ErrnoError(28);if(\".\"!==(e=A.relative(r,t)).charAt(0))throw new M.ErrnoError(55);try{l=M.lookupNode(s,a)}catch(e){}if(c!==l){n=M.isDir(c.mode),r=M.mayDelete(i,o,n);if(r)throw new M.ErrnoError(r);if(r=l?M.mayDelete(s,a,n):M.mayCreate(s,a))throw new M.ErrnoError(r);if(!i.node_ops.rename)throw new M.ErrnoError(63);if(M.isMountpoint(c)||l&&M.isMountpoint(l))throw new M.ErrnoError(10);if(s!==i&&(r=M.nodePermissions(i,\"w\")))throw new M.ErrnoError(r);M.hashRemoveNode(c);try{i.node_ops.rename(c,s,a),c.parent=s}catch(e){throw e}finally{M.hashAddNode(c)}}},rmdir(e){var r=M.lookupPath(e,{parent:!0}).node,e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!0);if(n)throw new M.ErrnoError(n);if(!r.node_ops.rmdir)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.rmdir(r,e),M.destroyNode(t)},readdir(e){e=M.lookupPath(e,{follow:!0}).node;return M.checkOpExists(e.node_ops.readdir,54)(e)},unlink(e){var r=M.lookupPath(e,{parent:!0}).node;if(!r)throw new M.ErrnoError(44);var e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!1);if(n)throw new M.ErrnoError(n);if(!r.node_ops.unlink)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.unlink(r,e),M.destroyNode(t)},readlink(e){e=M.lookupPath(e).node;if(!e)throw new M.ErrnoError(44);if(e.node_ops.readlink)return e.node_ops.readlink(e);throw new M.ErrnoError(28)},stat(e,r){e=M.lookupPath(e,{follow:!r}).node;return M.checkOpExists(e.node_ops.getattr,63)(e)},fstat(e){var e=M.getStreamChecked(e),r=e.node,t=e.stream_ops.getattr,e=t?e:r;return t??=r.node_ops.getattr,M.checkOpExists(t,63),t(e)},lstat(e){return M.stat(e,!0)},doChmod(e,r,t,n){M.doSetAttr(e,r,{mode:4095&t|-4096&r.mode,ctime:Date.now(),dontFollow:n})},chmod(e,r,t){e=\"string\"==typeof e?M.lookupPath(e,{follow:!t}).node:e,M.doChmod(null,e,r,t)},lchmod(e,r){M.chmod(e,r,!0)},fchmod(e,r){e=M.getStreamChecked(e);M.doChmod(e,e.node,r,!1)},doChown(e,r,t){M.doSetAttr(e,r,{timestamp:Date.now(),dontFollow:t})},chown(e,r,t,n){e=\"string\"==typeof e?M.lookupPath(e,{follow:!n}).node:e,M.doChown(null,e,n)},lchown(e,r,t){M.chown(e,r,t,!0)},fchown(e,r,t){e=M.getStreamChecked(e);M.doChown(e,e.node,!1)},doTruncate(e,r,t){if(M.isDir(r.mode))throw new M.ErrnoError(31);if(!M.isFile(r.mode))throw new M.ErrnoError(28);var n=M.nodePermissions(r,\"w\");if(n)throw new M.ErrnoError(n);M.doSetAttr(e,r,{size:t,timestamp:Date.now()})},truncate(e,r){if(r<0)throw new M.ErrnoError(28);e=\"string\"==typeof e?M.lookupPath(e,{follow:!0}).node:e,M.doTruncate(null,e,r)},ftruncate(e,r){e=M.getStreamChecked(e);if(r<0||0==(2097155&e.flags))throw new M.ErrnoError(28);M.doTruncate(e,e.node,r)},utime(e,r,t){e=M.lookupPath(e,{follow:!0}).node;M.checkOpExists(e.node_ops.setattr,63)(e,{atime:r,mtime:t})},open(e,r,t=438){if(\"\"===e)throw new M.ErrnoError(44);t=64&(r=\"string\"==typeof r?(e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[e];if(void 0===r)throw new Error(\"Unknown file open mode: \"+e);return r})(r):r)?4095&t|32768:0,\"object\"==typeof e?n=e:(a=e.endsWith(\"/\"),n=(o=M.lookupPath(e,{follow:!(131072&r),noent_okay:!0})).node,e=o.path);var n,o=!1;if(64&r)if(n){if(128&r)throw new M.ErrnoError(20)}else{if(a)throw new M.ErrnoError(31);n=M.mknod(e,511|t,0),o=!0}if(!n)throw new M.ErrnoError(44);if(M.isChrdev(n.mode)&&(r&=-513),65536&r&&!M.isDir(n.mode))throw new M.ErrnoError(54);if(!o){var a=M.mayOpen(n,r);if(a)throw new M.ErrnoError(a)}512&r&&!o&&M.truncate(n,0),r&=-131713;a=M.createStream({node:n,path:M.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),o&&M.chmod(n,511&t),!i.logReadFiles||1&r||e in M.readFiles||(M.readFiles[e]=1),a},close(e){if(M.isClosed(e))throw new M.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{M.closeStream(e.fd)}e.fd=null},isClosed(e){return null===e.fd},llseek(e,r,t){if(M.isClosed(e))throw new M.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new M.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new M.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,o){if(_(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(1==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.read)throw new M.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=r),r},write(e,r,t,n,o,a){if(_(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(0==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.write)throw new M.ErrnoError(28);e.seekable&&1024&e.flags&&M.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=r),r},mmap(e,r,t,n,o){if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new M.ErrnoError(2);if(1==(2097155&e.flags))throw new M.ErrnoError(2);if(!e.stream_ops.mmap)throw new M.ErrnoError(43);if(r)return e.stream_ops.mmap(e,r,t,n,o);throw new M.ErrnoError(28)},msync(e,r,t,n,o){return _(0<=t),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl(e,r,t){if(e.stream_ops.ioctl)return e.stream_ops.ioctl(e,r,t);throw new M.ErrnoError(59)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",\"utf8\"!==r.encoding&&\"binary\"!==r.encoding)throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,n=M.open(e,r.flags),e=M.stat(e).size,o=new Uint8Array(e);return M.read(n,o,0,e,0),\"utf8\"===r.encoding?t=F(o):\"binary\"===r.encoding&&(t=o),M.close(n),t},writeFile(e,r,t={}){t.flags=t.flags||577;e=M.open(e,t.flags,t.mode);if(\"string\"==typeof r){var n=new Uint8Array(O(r)+1),o=ve(r,n,0,n.length);M.write(e,n,0,o,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error(\"Unsupported data type\");M.write(e,r,0,r.byteLength,void 0,t.canOwn)}M.close(e)},cwd:()=>M.currentPath,chdir(e){e=M.lookupPath(e,{follow:!0});if(null===e.node)throw new M.ErrnoError(44);if(!M.isDir(e.node.mode))throw new M.ErrnoError(54);var r=M.nodePermissions(e.node,\"x\");if(r)throw new M.ErrnoError(r);M.currentPath=e.path},createDefaultDirectories(){M.mkdir(\"/tmp\"),M.mkdir(\"/home\"),M.mkdir(\"/home/web_user\")},createDefaultDevices(){M.mkdir(\"/dev\"),M.registerDevice(M.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n,llseek:()=>0}),M.mkdev(\"/dev/null\",M.makedev(1,3)),D.register(M.makedev(5,0),D.default_tty_ops),D.register(M.makedev(6,0),D.default_tty1_ops),M.mkdev(\"/dev/tty\",M.makedev(5,0)),M.mkdev(\"/dev/tty1\",M.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(0===r&&(ge(e),r=e.byteLength),e[--r]);M.createDevice(\"/dev\",\"random\",t),M.createDevice(\"/dev\",\"urandom\",t),M.mkdir(\"/dev/shm\"),M.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){M.mkdir(\"/proc\");var r=M.mkdir(\"/proc/self\");M.mkdir(\"/proc/self/fd\"),M.mount({mount(){var e=M.createNode(r,\"fd\",16895,73);return e.stream_ops={llseek:P.stream_ops.llseek},e.node_ops={lookup(e,r){var r=+r,t=M.getStreamChecked(r),r={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>t.path},id:1+r};return r.parent=r},readdir(){return Array.from(M.streams.entries()).filter(([,e])=>e).map(([e])=>e.toString())}},e}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?M.createDevice(\"/dev\",\"stdin\",e):M.symlink(\"/dev/tty\",\"/dev/stdin\"),r?M.createDevice(\"/dev\",\"stdout\",null,r):M.symlink(\"/dev/tty\",\"/dev/stdout\"),t?M.createDevice(\"/dev\",\"stderr\",null,t):M.symlink(\"/dev/tty1\",\"/dev/stderr\");e=M.open(\"/dev/stdin\",0),r=M.open(\"/dev/stdout\",1),t=M.open(\"/dev/stderr\",1);_(0===e.fd,`invalid handle for stdin (${e.fd})`),_(1===r.fd,`invalid handle for stdout (${r.fd})`),_(2===t.fd,`invalid handle for stderr (${t.fd})`)},staticInit(){M.nameTable=new Array(4096),M.mount(P,{},\"/\"),M.createDefaultDirectories(),M.createDefaultDevices(),M.createSpecialDirectories(),M.filesystems={MEMFS:P,WORKERFS:c}},init(e,r,t){_(!M.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),M.initialized=!0,e??=i.stdin,r??=i.stdout,t??=i.stderr,M.createStandardStreams(e,r,t)},quit(){M.initialized=!1,dr(0);for(var e of M.streams)e&&M.close(e)},findObject(e,r){e=M.analyzePath(e,r);return e.exists?e.object:null},analyzePath(e,r){try{e=(n=M.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=M.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=T.basename(e),n=M.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot=\"/\"===n.path}catch(e){t.error=e.errno}return t},createPath(e,r,t,n){e=\"string\"==typeof e?e:M.getPath(e);for(var o=r.split(\"/\").reverse();o.length;){var a=o.pop();if(a){var i=T.join2(e,a);try{M.mkdir(i)}catch(e){if(20!=e.errno)throw e}e=i}}return i},createFile(e,r,t,n,o){e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Pe(n,o);return M.create(e,r)},createDataFile(e,r,t,n,o,a){var i=r,r=(e&&(e=\"string\"==typeof e?e:M.getPath(e),i=r?T.join2(e,r):e),Pe(n,o)),e=M.create(i,r);if(t){if(\"string\"==typeof t){for(var s=new Array(t.length),l=0,c=t.length;l<c;++l)s[l]=t.charCodeAt(l);t=s}M.chmod(e,146|r);n=M.open(e,577);M.write(n,t,0,t.length,0,a),M.close(n),M.chmod(e,r)}},createDevice(e,r,l,i){var e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Pe(!!l,!!i),t=(M.createDevice.major??=64,M.makedev(M.createDevice.major++,0));return M.registerDevice(t,{open(e){e.seekable=!1},close(e){i?.buffer?.length&&i(10)},read(e,r,t,n,o){for(var a,i=0,s=0;s<n;s++){try{a=l()}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){for(var a=0;a<n;a++)try{i(r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}}),M.mkdev(e,r,t)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(\"undefined\"!=typeof XMLHttpRequest)throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");try{e.contents=j(e.url),e.usedBytes=e.contents.length}catch(e){throw new M.ErrnoError(29)}},createLazyFile(e,r,i,t,n){class o{lengthKnown=!1;chunks=[];get(e){var r;if(!(e>this.length-1||e<0))return r=e%this.chunkSize,e=e/this.chunkSize|0,this.getter(e)[r]}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(\"HEAD\",i,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error(\"Couldn't load \"+i+\". Status: \"+e.status);var r,n=Number(e.getResponseHeader(\"Content-length\")),t=(r=e.getResponseHeader(\"Accept-Ranges\"))&&\"bytes\"===r,e=(r=e.getResponseHeader(\"Content-Encoding\"))&&\"gzip\"===r,o=1048576,a=(t||(o=n),this);a.setDataGetter(e=>{var r=e*o,t=(e+1)*o-1,t=Math.min(t,n-1);if(void 0===a.chunks[e]&&(a.chunks[e]=((e,r)=>{if(r<e)throw new Error(\"invalid range (\"+e+\", \"+r+\") or no bytes requested!\");if(n-1<r)throw new Error(\"only \"+n+\" bytes available! programmer error!\");var t=new XMLHttpRequest;if(t.open(\"GET\",i,!1),n!==o&&t.setRequestHeader(\"Range\",\"bytes=\"+e+\"-\"+r),t.responseType=\"arraybuffer\",t.overrideMimeType&&t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.send(null),200<=t.status&&t.status<300||304===t.status)return void 0!==t.response?new Uint8Array(t.response||[]):Se(t.responseText||\"\",!0);throw new Error(\"Couldn't load \"+i+\". Status: \"+t.status)})(r,t)),void 0===a.chunks[e])throw new Error(\"doXHR failed!\");return a.chunks[e]}),!e&&n||(o=n=1,n=this.getter(0).length,o=n,m(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=n,this._chunkSize=o,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(\"undefined\"!=typeof XMLHttpRequest){if(!d)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var a={isDevice:!1,contents:new o}}else a={isDevice:!1,url:i};var s=M.createFile(e,r,a,t,n),l=(a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}}),{});function c(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(_(0<=i),a.slice)for(var s=0;s<i;s++)r[t+s]=a[o+s];else for(s=0;s<i;s++)r[t+s]=a.get(o+s);return i}return Object.keys(s.stream_ops).forEach(e=>{var r=s.stream_ops[e];l[e]=(...e)=>(M.forceLoadFile(s),r(...e))}),l.read=(e,r,t,n,o)=>(M.forceLoadFile(s),c(e,r,t,n,o)),l.mmap=(e,r,t,n,o)=>{M.forceLoadFile(s);var a=ke(r);if(a)return c(e,f,a,r,t),{ptr:a,allocated:!0};throw new M.ErrnoError(48)},s.stream_ops=l,s},absolutePath(){o(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder(){o(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink(){o(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath(){o(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc(){o(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath(){o(\"FS.standardizePath has been removed; use PATH.normalize instead\")}},N={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(T.isAbs(r))return r;if(e=-100===e?M.cwd():N.getStreamFromFD(e).path,0!=r.length)return e+\"/\"+r;if(t)return e;throw new M.ErrnoError(44)},writeStat(e,r){h[e>>>2>>>0]=r.dev,h[e+4>>>2>>>0]=r.mode,u[e+8>>>2>>>0]=r.nlink,h[e+12>>>2>>>0]=r.uid,h[e+16>>>2>>>0]=r.gid,h[e+20>>>2>>>0]=r.rdev,a[e+24>>>3]=BigInt(r.size),h[e+32>>>2>>>0]=4096,h[e+36>>>2>>>0]=r.blocks;var t=r.atime.getTime(),n=r.mtime.getTime(),o=r.ctime.getTime();return a[e+40>>>3]=BigInt(Math.floor(t/1e3)),u[e+48>>>2>>>0]=t%1e3*1e3*1e3,a[e+56>>>3]=BigInt(Math.floor(n/1e3)),u[e+64>>>2>>>0]=n%1e3*1e3*1e3,a[e+72>>>3]=BigInt(Math.floor(o/1e3)),u[e+80>>>2>>>0]=o%1e3*1e3*1e3,a[e+88>>>3]=BigInt(r.ino),0},writeStatFs(e,r){h[e+4>>>2>>>0]=r.bsize,h[e+40>>>2>>>0]=r.bsize,h[e+8>>>2>>>0]=r.blocks,h[e+12>>>2>>>0]=r.bfree,h[e+16>>>2>>>0]=r.bavail,h[e+20>>>2>>>0]=r.files,h[e+24>>>2>>>0]=r.ffree,h[e+28>>>2>>>0]=r.fsid,h[e+44>>>2>>>0]=r.flags,h[e+36>>>2>>>0]=r.namelen},doMsync(e,r,t,n,o){if(!M.isFile(r.node.mode))throw new M.ErrnoError(43);if(2&n)return 0;e=s.slice(e,e+t);M.msync(r,e,o,t,n)},getStreamFromFD(e){return M.getStreamChecked(e)},varargs:void 0,getStr(e){return k(e)}},Ne=()=>{_(null!=N.varargs);var e=h[+N.varargs>>>2>>>0];return N.varargs+=4,e},I=Ne,R=(e,r,t)=>(_(\"number\"==typeof t,\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\"),ve(e,s,r,t)),Ie=e=>u[e>>>2>>>0]+4294967296*h[e+4>>>2>>>0],Re=[0,31,60,91,121,152,182,213,244,274,305,335],Ce=[0,31,59,90,120,151,181,212,243,273,304,334],Le=e=>{var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?Re:Ce)[e.getMonth()]+e.getDate()-1},xe=()=>performance.now(),Ue=()=>Date.now(),Be=e=>0<=e&&e<=3,je=()=>4294901760,ze=r=>{var t=Y.buffer,e=(r-t.byteLength+65535)/65536|0;try{return Y.grow(e),ee(),1}catch(e){l(`growMemory: Attempted to grow heap from ${t.byteLength} bytes to ${r} bytes, but got error: `+e)}},He={},Ge=()=>{if(!Ge.strings){var e={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:H||\"./this.program\"};for(r in He)void 0===He[r]?delete e[r]:e[r]=He[r];var r,t=[];for(r in e)t.push(r+\"=\"+e[r]);Ge.strings=t}return Ge.strings},We=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=u[r>>>2>>>0],s=u[r+4>>>2>>>0],i=(r+=8,M.read(e,f,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},$e=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=u[r>>>2>>>0],s=u[r+4>>>2>>>0],i=(r+=8,M.write(e,f,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},Ye=(e,r)=>{V=e;var t=m,n=l,o=!1;m=l=e=>{o=!0};try{dr(0),[\"stdout\",\"stderr\"].forEach(e=>{var e=M.analyzePath(\"/dev/\"+e);e&&(e=e.object.rdev,D.ttys[e]?.output?.length)&&(o=!0)})}catch(e){}m=t,l=n,o&&S(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.\"),fe&&!r&&(U(t=`program exited (with status: ${e}), but keepRuntimeAlive() is set (counter=0) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`),l(t)),V=n=e,fe||(i.onExit?.(n),K=!0),G(0,new se(n))},Ve=e=>{if(e instanceof se||\"unwind\"==e)return V;J(),e instanceof WebAssembly.RuntimeError&&Er()<=0&&l(\"Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)\"),G(0,e)},Ke=e=>_r(e),qe=e=>{var r=O(e)+1,t=Ke(r);return R(e,t,r),t},Xe=e=>{var r=i[\"_\"+e];return _(r,\"Cannot call unknown function \"+e+\", make sure it is exported\"),r},Je=(e,r)=>{_(0<=e.length,\"writeArrayToMemory array must have a length (should be an array or typed array)\"),f.set(e,r>>>0)},Ze=(e,r)=>{_(e<16384),e<128?r.push(e):r.push(e%128|128,e>>7)},Qe=(e,r)=>{if(\"function\"==typeof WebAssembly.Function)return new WebAssembly.Function((e=>{for(var r={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"},t={parameters:[],results:\"v\"==e[0]?[]:[r[e[0]]]},n=1;n<e.length;++n)_(e[n]in r,\"invalid signature char: \"+e[n]),t.parameters.push(r[e[n]]);return t})(r),e);var t,n=[1],o=n,a=(r=r).slice(0,1),r=r.slice(1),i={i:127,p:127,j:126,f:125,d:124,e:111};o.push(96),Ze(r.length,o);for(t of r)_(t in i,\"invalid signature char: \"+t),o.push(i[t]);\"v\"==a?o.push(0):o.push(1,i[a]);r=[0,97,115,109,1,0,0,0,1],Ze(n.length,r),r.push(...n),r.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),a=new WebAssembly.Module(new Uint8Array(r));return new WebAssembly.Instance(a,{e:{f:e}}).exports.f},er=[],rr=(e,r)=>{if(v)for(var t=e;t<e+r;t++){o=void 0,(o=er[n=t])||(er[n]=o=y.get(n)),_(y.get(n)==o,\"JavaScript-side Wasm function table mirror is out of date!\");n=o;n&&v.set(n,t)}var n,o},tr=e=>(v||(v=new WeakMap,rr(0,y.length)),v.get(e)||0),nr=[],or=()=>{if(nr.length)return nr.pop();try{y.grow(1)}catch(e){if(e instanceof RangeError)throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\";throw e}return y.length-1},ar=(e,r)=>{y.set(e,r),er[e]=y.get(e)},t=(M.createPreloadedFile=(t,n,e,o,a,i,s,l,c,d)=>{var u=n?A.resolve(T.join2(t,n)):t,m=function(e){for(var r=e;;){if(!w[e])return e;e=r+Math.random()}}(\"cp \"+u);function r(e){function r(e){d?.(),l||Ae(t,n,e,o,a,c),i?.(),oe(m)}De(e,u,r,()=>{s?.(),oe(m)})||r(e)}ne(m),\"string\"==typeof e?Te(e).then(r,s):r(e)},M.staticInit(),i.noExitRuntime&&(fe=i.noExitRuntime),i.preloadPlugins&&(Oe=i.preloadPlugins),i.print&&(m=i.print),i.printErr&&(l=i.printErr),i.wasmBinary&&($=i.wasmBinary),\"fetchSettings\");Object.getOwnPropertyDescriptor(i,t)&&o(`\\`Module.${t}\\` was supplied but \\`${t}\\` not included in INCOMING_MODULE_JS_API`),i.arguments&&(z=i.arguments),i.thisProgram&&(H=i.thisProgram),_(void 0===i.memoryInitializerPrefixURL,\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.pthreadMainPrefixURL,\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.cdInitializerPrefixURL,\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.filePackagePrefixURL,\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.read,\"Module.read option was removed\"),_(void 0===i.readAsync,\"Module.readAsync option was removed (modify readAsync in JS)\"),_(void 0===i.readBinary,\"Module.readBinary option was removed (modify readBinary in JS)\"),_(void 0===i.setWindowTitle,\"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)\"),_(void 0===i.TOTAL_MEMORY,\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\"),_(void 0===i.ENVIRONMENT,\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\"),_(void 0===i.STACK_SIZE,\"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time\"),_(void 0===i.wasmMemory,\"Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally\"),_(void 0===i.INITIAL_MEMORY,\"Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically\"),i.callMain=wr,i.ccall=(e,r,t,n,o)=>{var a={string:e=>{var r=0;return r=null!=e&&0!==e?qe(e):r},array:e=>{var r=Ke(e.length);return Je(e,r),r}};var e=Xe(e),i=[],s=0;if(_(\"array\"!==r,'Return type should not be \"array\".'),n)for(var l=0;l<n.length;l++){var c=a[t[l]];c?(0===s&&(s=_e()),i[l]=c(n[l])):i[l]=n[l]}e=e(...i);return e=e,0!==s&&he(s),e=e,\"string\"===r?k(e):\"boolean\"===r?Boolean(e):e},i.addFunction=(r,t)=>{_(void 0!==r);var n=tr(r);if(n)return n;n=or();try{ar(n,r)}catch(e){if(!(e instanceof TypeError))throw e;_(void 0!==t,\"Missing signature argument to addFunction: \"+r);t=Qe(r,t);ar(n,t)}return v.set(r,n),n},i.FS=M,[\"writeI53ToI64\",\"writeI53ToI64Clamped\",\"writeI53ToI64Signaling\",\"writeI53ToU64Clamped\",\"writeI53ToU64Signaling\",\"readI53FromU64\",\"convertI32PairToI53\",\"convertI32PairToI53Checked\",\"convertU32PairToI53\",\"getTempRet0\",\"setTempRet0\",\"inetPton4\",\"inetNtop4\",\"inetPton6\",\"inetNtop6\",\"readSockaddr\",\"writeSockaddr\",\"emscriptenLog\",\"readEmAsmArgs\",\"jstoi_q\",\"listenOnce\",\"autoResumeAudioContext\",\"getDynCaller\",\"dynCall\",\"runtimeKeepalivePush\",\"runtimeKeepalivePop\",\"callUserCallback\",\"maybeExit\",\"asmjsMangle\",\"HandleAllocator\",\"getNativeTypeSize\",\"addOnInit\",\"addOnPostCtor\",\"addOnPreMain\",\"addOnExit\",\"STACK_SIZE\",\"STACK_ALIGN\",\"POINTER_SIZE\",\"ASSERTIONS\",\"cwrap\",\"removeFunction\",\"reallyNegative\",\"unSign\",\"strLen\",\"reSign\",\"formatString\",\"intArrayToString\",\"AsciiToString\",\"stringToAscii\",\"UTF16ToString\",\"stringToUTF16\",\"lengthBytesUTF16\",\"UTF32ToString\",\"stringToUTF32\",\"lengthBytesUTF32\",\"stringToNewUTF8\",\"registerKeyEventCallback\",\"maybeCStringToJsString\",\"findEventTarget\",\"getBoundingClientRect\",\"fillMouseEventData\",\"registerMouseEventCallback\",\"registerWheelEventCallback\",\"registerUiEventCallback\",\"registerFocusEventCallback\",\"fillDeviceOrientationEventData\",\"registerDeviceOrientationEventCallback\",\"fillDeviceMotionEventData\",\"registerDeviceMotionEventCallback\",\"screenOrientation\",\"fillOrientationChangeEventData\",\"registerOrientationChangeEventCallback\",\"fillFullscreenChangeEventData\",\"registerFullscreenChangeEventCallback\",\"JSEvents_requestFullscreen\",\"JSEvents_resizeCanvasForFullscreen\",\"registerRestoreOldStyle\",\"hideEverythingExceptGivenElement\",\"restoreHiddenElements\",\"setLetterbox\",\"softFullscreenResizeWebGLRenderTarget\",\"doRequestFullscreen\",\"fillPointerlockChangeEventData\",\"registerPointerlockChangeEventCallback\",\"registerPointerlockErrorEventCallback\",\"requestPointerLock\",\"fillVisibilityChangeEventData\",\"registerVisibilityChangeEventCallback\",\"registerTouchEventCallback\",\"fillGamepadEventData\",\"registerGamepadEventCallback\",\"registerBeforeUnloadEventCallback\",\"fillBatteryEventData\",\"battery\",\"registerBatteryEventCallback\",\"setCanvasElementSize\",\"getCanvasElementSize\",\"jsStackTrace\",\"getCallstack\",\"convertPCtoSourceLocation\",\"wasiRightsToMuslOFlags\",\"wasiOFlagsToMuslOFlags\",\"safeSetTimeout\",\"setImmediateWrapped\",\"safeRequestAnimationFrame\",\"clearImmediateWrapped\",\"registerPostMainLoop\",\"registerPreMainLoop\",\"getPromise\",\"makePromise\",\"idsToPromises\",\"makePromiseCallback\",\"ExceptionInfo\",\"findMatchingCatch\",\"Browser_asyncPrepareDataCounter\",\"arraySum\",\"addDays\",\"getSocketFromFD\",\"getSocketAddress\",\"FS_mkdirTree\",\"_setNetworkCallback\",\"heapObjectForWebGLType\",\"toTypedArrayIndex\",\"webgl_enable_ANGLE_instanced_arrays\",\"webgl_enable_OES_vertex_array_object\",\"webgl_enable_WEBGL_draw_buffers\",\"webgl_enable_WEBGL_multi_draw\",\"webgl_enable_EXT_polygon_offset_clamp\",\"webgl_enable_EXT_clip_control\",\"webgl_enable_WEBGL_polygon_mode\",\"emscriptenWebGLGet\",\"computeUnpackAlignedImageSize\",\"colorChannelsInGlTextureFormat\",\"emscriptenWebGLGetTexPixelData\",\"emscriptenWebGLGetUniform\",\"webglGetUniformLocation\",\"webglPrepareUniformLocationsBeforeFirstUse\",\"webglGetLeftBracePos\",\"emscriptenWebGLGetVertexAttrib\",\"__glGetActiveAttribOrUniform\",\"writeGLArray\",\"registerWebGlEventCallback\",\"runAndAbortIfError\",\"ALLOC_NORMAL\",\"ALLOC_STACK\",\"allocate\",\"writeStringToMemory\",\"writeAsciiToMemory\",\"demangle\",\"stackTrace\"].forEach(function(e){Q(e)}),[\"run\",\"addRunDependency\",\"removeRunDependency\",\"out\",\"err\",\"abort\",\"wasmMemory\",\"wasmExports\",\"HEAPF32\",\"HEAPF64\",\"HEAP8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAP64\",\"HEAPU64\",\"writeStackCookie\",\"checkStackCookie\",\"readI53FromI64\",\"INT53_MAX\",\"INT53_MIN\",\"bigintToI53Checked\",\"stackSave\",\"stackRestore\",\"stackAlloc\",\"ptrToString\",\"zeroMemory\",\"exitJS\",\"getHeapMax\",\"growMemory\",\"ENV\",\"ERRNO_CODES\",\"strError\",\"DNS\",\"Protocols\",\"Sockets\",\"timers\",\"warnOnce\",\"readEmAsmArgsArray\",\"getExecutableName\",\"handleException\",\"keepRuntimeAlive\",\"asyncLoad\",\"alignMemory\",\"mmapAlloc\",\"wasmTable\",\"noExitRuntime\",\"addOnPreRun\",\"addOnPostRun\",\"getCFunc\",\"uleb128Encode\",\"sigToWasmTypes\",\"generateFuncType\",\"convertJsFunctionToWasm\",\"freeTableIndexes\",\"functionsInTableMap\",\"getEmptyTableSlot\",\"updateTableMap\",\"getFunctionAddress\",\"setValue\",\"getValue\",\"PATH\",\"PATH_FS\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"UTF8ToString\",\"stringToUTF8Array\",\"stringToUTF8\",\"lengthBytesUTF8\",\"intArrayFromString\",\"UTF16Decoder\",\"stringToUTF8OnStack\",\"writeArrayToMemory\",\"JSEvents\",\"specialHTMLTargets\",\"findCanvasEventTarget\",\"currentFullscreenStrategy\",\"restoreOldWindowedStyle\",\"UNWIND_CACHE\",\"ExitStatus\",\"getEnvStrings\",\"checkWasiClock\",\"doReadv\",\"doWritev\",\"initRandomFill\",\"randomFill\",\"emSetImmediate\",\"emClearImmediate_deps\",\"emClearImmediate\",\"promiseMap\",\"uncaughtExceptionCount\",\"exceptionLast\",\"exceptionCaught\",\"Browser\",\"getPreloadedImageData__data\",\"wget\",\"MONTH_DAYS_REGULAR\",\"MONTH_DAYS_LEAP\",\"MONTH_DAYS_REGULAR_CUMULATIVE\",\"MONTH_DAYS_LEAP_CUMULATIVE\",\"isLeapYear\",\"ydayFromDate\",\"SYSCALLS\",\"preloadPlugins\",\"FS_createPreloadedFile\",\"FS_modeStringToFlags\",\"FS_getMode\",\"FS_stdin_getChar_buffer\",\"FS_stdin_getChar\",\"FS_unlink\",\"FS_createPath\",\"FS_createDevice\",\"FS_readFile\",\"FS_root\",\"FS_mounts\",\"FS_devices\",\"FS_streams\",\"FS_nextInode\",\"FS_nameTable\",\"FS_currentPath\",\"FS_initialized\",\"FS_ignorePermissions\",\"FS_filesystems\",\"FS_syncFSRequests\",\"FS_readFiles\",\"FS_lookupPath\",\"FS_getPath\",\"FS_hashName\",\"FS_hashAddNode\",\"FS_hashRemoveNode\",\"FS_lookupNode\",\"FS_createNode\",\"FS_destroyNode\",\"FS_isRoot\",\"FS_isMountpoint\",\"FS_isFile\",\"FS_isDir\",\"FS_isLink\",\"FS_isChrdev\",\"FS_isBlkdev\",\"FS_isFIFO\",\"FS_isSocket\",\"FS_flagsToPermissionString\",\"FS_nodePermissions\",\"FS_mayLookup\",\"FS_mayCreate\",\"FS_mayDelete\",\"FS_mayOpen\",\"FS_checkOpExists\",\"FS_nextfd\",\"FS_getStreamChecked\",\"FS_getStream\",\"FS_createStream\",\"FS_closeStream\",\"FS_dupStream\",\"FS_doSetAttr\",\"FS_chrdev_stream_ops\",\"FS_major\",\"FS_minor\",\"FS_makedev\",\"FS_registerDevice\",\"FS_getDevice\",\"FS_getMounts\",\"FS_syncfs\",\"FS_mount\",\"FS_unmount\",\"FS_lookup\",\"FS_mknod\",\"FS_statfs\",\"FS_statfsStream\",\"FS_statfsNode\",\"FS_create\",\"FS_mkdir\",\"FS_mkdev\",\"FS_symlink\",\"FS_rename\",\"FS_rmdir\",\"FS_readdir\",\"FS_readlink\",\"FS_stat\",\"FS_fstat\",\"FS_lstat\",\"FS_doChmod\",\"FS_chmod\",\"FS_lchmod\",\"FS_fchmod\",\"FS_doChown\",\"FS_chown\",\"FS_lchown\",\"FS_fchown\",\"FS_doTruncate\",\"FS_truncate\",\"FS_ftruncate\",\"FS_utime\",\"FS_open\",\"FS_close\",\"FS_isClosed\",\"FS_llseek\",\"FS_read\",\"FS_write\",\"FS_mmap\",\"FS_msync\",\"FS_ioctl\",\"FS_writeFile\",\"FS_cwd\",\"FS_chdir\",\"FS_createDefaultDirectories\",\"FS_createDefaultDevices\",\"FS_createSpecialDirectories\",\"FS_createStandardStreams\",\"FS_staticInit\",\"FS_init\",\"FS_quit\",\"FS_findObject\",\"FS_analyzePath\",\"FS_createFile\",\"FS_createDataFile\",\"FS_forceLoadFile\",\"FS_createLazyFile\",\"FS_absolutePath\",\"FS_createFolder\",\"FS_createLink\",\"FS_joinPath\",\"FS_mmapAlloc\",\"FS_standardizePath\",\"MEMFS\",\"TTY\",\"PIPEFS\",\"SOCKFS\",\"tempFixedLengthArray\",\"miniTempWebGLFloatBuffers\",\"miniTempWebGLIntBuffers\",\"GL\",\"AL\",\"GLUT\",\"EGL\",\"GLEW\",\"IDBStore\",\"SDL\",\"SDL_gfx\",\"allocateUTF8\",\"allocateUTF8OnStack\",\"print\",\"printErr\",\"jstoi_s\",\"WORKERFS\"].forEach(Q);var ir,e={__assert_fail:function(e,r,t,n){return r>>>=0,n>>>=0,o(`Assertion failed: ${k(e>>>=0)}, at: `+[r?k(r):\"unknown filename\",t,n?k(n):\"unknown function\"])},__syscall_chmod:function(e,r){e>>>=0;try{return e=N.getStr(e),M.chmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_faccessat:function(e,r,t,n){r>>>=0;try{var o,a;return(r=N.getStr(r),_(0===n||512==n),r=N.calculateAt(e,r),-8&t)?-28:(o=M.lookupPath(r,{follow:!0}).node)?(a=\"\",4&t&&(a+=\"r\"),2&t&&(a+=\"w\"),1&t&&(a+=\"x\"),a&&M.nodePermissions(o,a)?-2:0):-44}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchmod:function(e,r){try{return M.fchmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchown32:function(e,r,t){try{return M.fchown(e,r,t),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fcntl64:function(e,r,t){N.varargs=t>>>=0;try{var n=N.getStreamFromFD(e);switch(r){case 0:if((o=Ne())<0)return-28;for(;M.streams[o];)o++;return M.dupStream(n,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:var o=Ne();return n.flags|=o,0;case 12:o=I();return p[o+0>>>1>>>0]=2,0;case 13:case 14:return 0}return-28}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fstat64:function(e,r){r>>>=0;try{return N.writeStat(r,M.fstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ftruncate64:function(e,r){r=b(r);try{return isNaN(r)?61:(M.ftruncate(e,r),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_getcwd:function(e,r){e>>>=0,r>>>=0;try{var t,n;return 0===r?-28:(t=M.cwd(),r<(n=O(t)+1)?-68:(R(t,e,r),n))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ioctl:function(e,r,t){N.varargs=t>>>=0;try{var n,o=N.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var a=o.tty.ops.ioctl_tcgets(o),i=I();h[i>>>2>>>0]=a.c_iflag||0,h[i+4>>>2>>>0]=a.c_oflag||0,h[i+8>>>2>>>0]=a.c_cflag||0,h[i+12>>>2>>>0]=a.c_lflag||0;for(var s=0;s<32;s++)f[i+s+17>>>0]=a.c_cc[s]||0}return 0;case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var i=I(),l=h[i>>>2>>>0],c=h[i+4>>>2>>>0],d=h[i+8>>>2>>>0],u=h[i+12>>>2>>>0],m=[],s=0;s<32;s++)m.push(f[i+s+17>>>0]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:l,c_oflag:c,c_cflag:d,c_lflag:u,c_cc:m})}return 0;case 21519:return o.tty?(i=I(),h[i>>>2>>>0]=0):-59;case 21520:return o.tty?-28:-59;case 21531:i=I();return M.ioctl(o,r,i);case 21523:return o.tty?(o.tty.ops.ioctl_tiocgwinsz&&(n=o.tty.ops.ioctl_tiocgwinsz(o.tty),i=I(),p[i>>>1>>>0]=n[0],p[i+2>>>1>>>0]=n[1]),0):-59;case 21524:case 21515:return o.tty?0:-59;default:return-28}}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_lstat64:function(e,r){e>>>=0,r>>>=0;try{return e=N.getStr(e),N.writeStat(r,M.lstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_mkdirat:function(e,r,t){r>>>=0;try{return r=N.getStr(r),r=N.calculateAt(e,r),M.mkdir(r,t,0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_newfstatat:function(e,r,t,n){r>>>=0,t>>>=0;try{r=N.getStr(r);var o=256&n,a=4096&n;return _(!(n&=-6401),\"unknown flags in __syscall_newfstatat: \"+n),r=N.calculateAt(e,r,a),N.writeStat(t,o?M.lstat(r):M.stat(r))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){r>>>=0,N.varargs=n>>>=0;try{r=N.getStr(r),r=N.calculateAt(e,r);var o=n?Ne():0;return M.open(r,t,o).fd}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_readlinkat:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o,a,i;return(r=N.getStr(r),r=N.calculateAt(e,r),n<=0)?-28:(o=M.readlink(r),a=Math.min(n,O(o)),i=f[t+a>>>0],R(o,t,n+1),f[t+a>>>0]=i,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_rmdir:function(e){e>>>=0;try{return e=N.getStr(e),M.rmdir(e),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_stat64:function(e,r){e>>>=0,r>>>=0;try{return e=N.getStr(e),N.writeStat(r,M.stat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_unlinkat:function(e,r,t){r>>>=0;try{return r=N.getStr(r),r=N.calculateAt(e,r),0===t?M.unlink(r):512===t?M.rmdir(r):o(\"Invalid flags passed to unlinkat\"),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_utimensat:function(e,r,t,n){r>>>=0,t>>>=0;try{r=N.getStr(r),_(0===n),r=N.calculateAt(e,r,!0);var o,a,i,s,l=Date.now();return null!==((s=t?(i=Ie(t),a=1073741823==(o=h[t+8>>>2>>>0])?l:1073741822==o?null:1e3*i+o/1e6,i=Ie(t+=16),1073741823==(o=h[t+8>>>2>>>0])?l:1073741822==o?null:1e3*i+o/1e6):a=l)??a)&&M.utime(r,a,s),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_abort_js:()=>o(\"native code called abort()\"),_gmtime_js:function(e,r){e=b(e),r>>>=0;var e=new Date(1e3*e),t=(h[r>>>2>>>0]=e.getUTCSeconds(),h[r+4>>>2>>>0]=e.getUTCMinutes(),h[r+8>>>2>>>0]=e.getUTCHours(),h[r+12>>>2>>>0]=e.getUTCDate(),h[r+16>>>2>>>0]=e.getUTCMonth(),h[r+20>>>2>>>0]=e.getUTCFullYear()-1900,h[r+24>>>2>>>0]=e.getUTCDay(),Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0)),e=(e.getTime()-t)/864e5|0;h[r+28>>>2>>>0]=e},_localtime_js:function(e,r){e=b(e),r>>>=0;var e=new Date(1e3*e),t=(h[r>>>2>>>0]=e.getSeconds(),h[r+4>>>2>>>0]=e.getMinutes(),h[r+8>>>2>>>0]=e.getHours(),h[r+12>>>2>>>0]=e.getDate(),h[r+16>>>2>>>0]=e.getMonth(),h[r+20>>>2>>>0]=e.getFullYear()-1900,h[r+24>>>2>>>0]=e.getDay(),0|Le(e)),t=(h[r+28>>>2>>>0]=t,h[r+36>>>2>>>0]=-60*e.getTimezoneOffset(),new Date(e.getFullYear(),0,1)),n=new Date(e.getFullYear(),6,1).getTimezoneOffset(),t=t.getTimezoneOffset(),e=0|(n!=t&&e.getTimezoneOffset()==Math.min(t,n));h[r+32>>>2>>>0]=e},_mmap_js:function(e,r,t,n,o,a,i){e>>>=0,o=b(o),a>>>=0,i>>>=0;try{var s,l,c;return isNaN(o)?61:(s=N.getStreamFromFD(n),c=(l=M.mmap(s,e,o,r,t)).ptr,h[a>>>2>>>0]=l.allocated,u[i>>>2>>>0]=c,0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_munmap_js:function(e,r,t,n,o,a){e>>>=0,r>>>=0,a=b(a);try{var i=N.getStreamFromFD(o);2&t&&N.doMsync(e,i,r,n,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_timegm_js:function(e){e>>>=0;r=Date.UTC(h[e+20>>>2>>>0]+1900,h[e+16>>>2>>>0],h[e+12>>>2>>>0],h[e+8>>>2>>>0],h[e+4>>>2>>>0],h[e>>>2>>>0],0),r=new Date(r),h[e+24>>>2>>>0]=r.getUTCDay(),t=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),t=(r.getTime()-t)/864e5|0,h[e+28>>>2>>>0]=t;var r,t,e=r.getTime()/1e3;return BigInt(e)},_tzset_js:function(e,r,t,n){e>>>=0,r>>>=0,t>>>=0,n>>>=0;var o=(new Date).getFullYear(),a=new Date(o,0,1),o=new Date(o,6,1),a=a.getTimezoneOffset(),o=o.getTimezoneOffset(),i=Math.max(a,o),e=(u[e>>>2>>>0]=60*i,h[r>>>2>>>0]=Number(a!=o),e=>{var r=0<=e?\"-\":\"+\",e=Math.abs(e);return\"UTC\"+r+String(Math.floor(e/60)).padStart(2,\"0\")+String(e%60).padStart(2,\"0\")}),i=e(a),r=e(o);_(i),_(r),_(O(i)<=16,`timezone name truncated to fit in TZNAME_MAX (${i})`),_(O(r)<=16,`timezone name truncated to fit in TZNAME_MAX (${r})`),o<a?(R(i,t,17),R(r,n,17)):(R(i,n,17),R(r,t,17))},clock_time_get:function(e,r,t){return t>>>=0,Be(e)?(e=(0===e?Ue:xe)(),e=Math.round(1e3*e*1e3),a[t>>>3]=BigInt(e),0):28},emscripten_date_now:Ue,emscripten_err:function(e){return l(k(e>>>=0))},emscripten_get_heap_max:function(){return je()},emscripten_get_now:xe,emscripten_resize_heap:function(e){var r=s.length,t=(_(r<(e>>>=0)),je());if(t<e)l(`Cannot enlarge memory, requested ${e} bytes, but the limit is ${t} bytes!`);else{for(var n=1;n<=4;n*=2){var o=r*(1+.2/n),o=Math.min(o,e+100663296),a=Math.min(t,Fe(Math.max(e,o),65536));if(ze(a))return!0}l(`Failed to grow the heap from ${r} bytes to ${a} bytes, not enough memory!`)}return!1},environ_get:function(e,r){e>>>=0,r>>>=0;var t,n=0,o=0;for(t of Ge()){var a=r+n;u[e+o>>>2>>>0]=a,n+=R(t,a,1/0)+1,o+=4}return 0},environ_sizes_get:function(e,r){e>>>=0,r>>>=0;var t,n=Ge(),o=(u[e>>>2>>>0]=n.length,0);for(t of n)o+=O(t)+1;return u[r>>>2>>>0]=o,0},fd_close:function(e){try{var r=N.getStreamFromFD(e);return M.close(r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){r>>>=0;try{var t=N.getStreamFromFD(e),n=t.tty?2:M.isDir(t.mode)?3:M.isLink(t.mode)?7:4;return f[r>>>0]=n,p[r+2>>>1>>>0]=0,a[r+8>>>3]=BigInt(0),a[r+16>>>3]=BigInt(0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o=N.getStreamFromFD(e),a=We(o,r,t);return u[n>>>2>>>0]=a,0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n){r=b(r),n>>>=0;try{var o;return isNaN(r)?61:(o=N.getStreamFromFD(e),M.llseek(o,r,t),a[n>>>3]=BigInt(o.position),o.getdents&&0===r&&0===t&&(o.getdents=null),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_sync:function(e){try{var r=N.getStreamFromFD(e);return r.stream_ops?.fsync?r.stream_ops.fsync(r):0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o=N.getStreamFromFD(e),a=$e(o,r,t);return u[n>>>2>>>0]=a,0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}}},C=(ne(\"wasm-instantiate\"),ir={env:e,wasi_snapshot_preview1:e},i.instantiateWasm?new Promise((t,r)=>{try{i.instantiateWasm(ir,(e,r)=>{t(sr(e))})}catch(e){l(\"Module.instantiateWasm callback failed with error: \"+e),r(e)}}):sr(ie(re??=ae(),ir)[0]));function sr(e){var r;return C=e.exports,e=C,e=Object.assign({},e),r=e=>()=>e()>>>0,e.strerror=(r=>e=>r(e)>>>0)(e.strerror),e.emscripten_stack_get_end=r(e.emscripten_stack_get_end),e.emscripten_stack_get_base=r(e.emscripten_stack_get_base),e.emscripten_builtin_memalign=(t=>(e,r)=>t(e,r)>>>0)(e.emscripten_builtin_memalign),e._emscripten_stack_alloc=(r=>e=>r(e)>>>0)(e._emscripten_stack_alloc),e.emscripten_stack_get_current=r(e.emscripten_stack_get_current),_(Y=(C=e).memory,\"memory not found in wasm exports\"),ee(),_(y=C.__indirect_function_table,\"table not found in wasm exports\"),oe(\"wasm-instantiate\"),C}var lr,cr=g(\"strerror\",1),dr=g(\"fflush\",1),ur=(i._trace_processor_rpc_init=g(\"trace_processor_rpc_init\",2),i._trace_processor_on_rpc_request=g(\"trace_processor_on_rpc_request\",1),i._main=g(\"__main_argc_argv\",2)),mr=C.emscripten_stack_get_end,fr=(C.emscripten_stack_get_base,g(\"emscripten_builtin_memalign\",2)),pr=C.emscripten_stack_init,hr=(C.emscripten_stack_get_free,C._emscripten_stack_restore),_r=C._emscripten_stack_alloc,Er=C.emscripten_stack_get_current;function wr(e=[]){_(0==E,'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])'),_(void 0===ue||0==ue.length,\"cannot call main when preRun functions remain to be called\");var r=ur,t=(e.unshift(H),e.length),n=Ke(4*(t+1)),o=n;e.forEach(e=>{u[o>>>2>>>0]=qe(e),o+=4}),u[o>>>2>>>0]=0;try{var a=r(t,n);return Ye(a,!0),a}catch(e){return Ve(e)}}function gr(){var e;pr(),_(0==(3&(e=mr()))),0==e&&(e+=4),u[e>>>2>>>0]=34821223,u[e+4>>>2>>>0]=2310721022,u[0]=1668509029}if(i.preInit)for(\"function\"==typeof i.preInit&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();Z(\"preInit\"),function e(r=z){if(0<E)te=e;else{if(gr(),i.preRun)for(\"function\"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)me(i.preRun.shift());Z(\"preRun\"),le(ue),0<E?te=e:(i.setStatus?(i.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>i.setStatus(\"\"),1),t()},1)):t(),J())}function t(){if(_(!lr),lr=!0,i.calledRun=!0,!K){if(_(!q),q=!0,J(),i.noFSInit||M.initialized||M.init(),C.__wasm_call_ctors(),M.ignorePermissions=!1,J(),x(i),i.onRuntimeInitialized?.(),Z(\"onRuntimeInitialized\"),i.noInitialRun||wr(r),J(),i.postRun)for(\"function\"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)de(i.postRun.shift());Z(\"postRun\"),le(ce)}}}(),r=i;for(const yr of Object.keys(i))yr in L||Object.defineProperty(L,yr,{configurable:!0,get(){o(`Access to module property ('${yr}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return r}var r,vr;return J||(J=1,(r=C).exports,vr=\"undefined\"!=typeof document?document.currentScript?.src:void 0,r.exports=e,r.exports.default=e),C.exports}function re(){if(!Z){Z=1,Object.defineProperty(r,\"__esModule\",{value:!0}),r.WasmBridge=void 0;var e=H;const t=G(),a=K(),n=e.__importDefault(X()),o=e.__importDefault(ee());r.WasmBridge=class{aborted;connection;reqBufferAddr=0;lastStderr=[];messagePort;useMemory64;constructor(){const e=(this.aborted=!1,t.defer)();this.useMemory64=function(){var e=new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,0,0,8,4,110,97,109,101,2,1,0]);try{return new WebAssembly.Module(e),!0}catch(e){return!1}}();var r=(this.useMemory64?n:o).default;this.connection=r({locateFile:e=>e,print:e=>console.log(e),printErr:e=>this.appendAndLogErr(e),onRuntimeInitialized:()=>e.resolve()}),e.then(()=>{var e=this.connection.addFunction(this.onReply.bind(this),\"vpi\");this.reqBufferAddr=this.wasmPtrCast(this.connection.ccall(\"trace_processor_rpc_init\",\"pointer\",[\"pointer\",\"number\"],[e,33554432]))})}initialize(e){(0,a.assertTrue)(void 0===this.messagePort),this.messagePort=e,this.messagePort.onmessage=this.onMessage.bind(this)}onMessage(e){if(this.aborted)throw new Error(\"Wasm module crashed\");(0,a.assertTrue)(e.data instanceof Uint8Array);var r=e.data;let t=0;for(;t<r.length;){var n=Math.min(r.length-t,33554432),o=r.subarray(t,t+n);this.connection.HEAPU8.set(o,this.reqBufferAddr),t+=n;try{this.connection.ccall(\"trace_processor_on_rpc_request\",\"void\",[\"number\"],[n])}catch(e){this.aborted=!0;let r=\"\"+e;throw e instanceof Error&&(r=`${e.name}: ${e.message}\n`+e.stack),r+=\"\\n\\nstderr: \\n\"+this.lastStderr.join(\"\\n\"),new Error(r)}}}onReply(e,r){e=this.wasmPtrCast(e),e=this.connection.HEAPU8.slice(e,e+r);(0,a.assertExists)(this.messagePort).postMessage(e,[e.buffer])}appendAndLogErr(e){console.warn(e),this.lastStderr.push(e),512<this.lastStderr.length&&this.lastStderr.shift()}wasmPtrCast(e){return this.useMemory64?Number(e):((0,a.assertTrue)(\"number\"==typeof e),Number(e)>>>0)}}}return r}return C.exports,L(function(){if(!Q){Q=1,Object.defineProperty(n,\"__esModule\",{value:!0});var e=re(),r=self;const t=new e.WasmBridge;r.onmessage=e=>{e=e.data;t.initialize(e)}}return n}())}();\n//# sourceMappingURL=engine_bundle.js.map\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/frontend_bundle.js",
    "content": "var frontend=function(){\"use strict\";var ve=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function r(r){var t,n;return r.__esModule?r:(\"function\"==typeof(t=r.default)?(n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)}).prototype=t.prototype:n={},Object.defineProperty(n,\"__esModule\",{value:!0}),Object.keys(r).forEach(function(e){var t=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}})}),n)}var Y={},n=function(e,t){return(n=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,t){e.__proto__=t}:function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}))(e,t)};function a(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function o(e,t){var r={};for(a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols)for(var n=0,a=Object.getOwnPropertySymbols(e);n<a.length;n++)t.indexOf(a[n])<0&&Object.prototype.propertyIsEnumerable.call(e,a[n])&&(r[a[n]]=e[a[n]]);return r}function s(e,t,r,n){var a,i=arguments.length,o=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;0<=s;s--)(a=e[s])&&(o=(i<3?a(o):3<i?a(t,r,o):a(t,r))||o);return 3<i&&o&&Object.defineProperty(t,r,o),o}function l(r,n){return function(e,t){n(e,t,r)}}function u(e,t){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function d(e,o,s,l){return new(s=s||Promise)(function(r,t){function n(e){try{i(l.next(e))}catch(e){t(e)}}function a(e){try{i(l.throw(e))}catch(e){t(e)}}function i(e){var t;e.done?r(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(n,a)}i((l=l.apply(e,o||[])).next())})}function p(n,a){var i,o,s,l={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},c={next:e(0),throw:e(1),return:e(2)};return\"function\"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function e(r){return function(e){var t=[r,e];if(i)throw new TypeError(\"Generator is already executing.\");for(;l=c&&t[c=0]?0:l;)try{if(i=1,o&&(s=2&t[0]?o.return:t[0]?o.throw||((s=o.return)&&s.call(o),0):o.next)&&!(s=s.call(o,t[1])).done)return s;switch(o=0,(t=s?[2&t[0],s.value]:t)[0]){case 0:case 1:s=t;break;case 4:return l.label++,{value:t[1],done:!1};case 5:l.label++,o=t[1],t=[0];continue;case 7:t=l.ops.pop(),l.trys.pop();continue;default:if(!(s=0<(s=l.trys).length&&s[s.length-1])&&(6===t[0]||2===t[0])){l=0;continue}if(3===t[0]&&(!s||t[1]>s[0]&&t[1]<s[3]))l.label=t[1];else if(6===t[0]&&l.label<s[1])l.label=s[1],s=t;else{if(!(s&&l.label<s[2])){s[2]&&l.ops.pop(),l.trys.pop();continue}l.label=s[2],l.ops.push(t)}}t=a.call(n,l)}catch(e){t=[6,e],o=0}finally{i=s=0}if(5&t[0])throw t[1];return{value:t[0]?t[1]:void 0,done:!0}}}}var f=Object.create?function(e,t,r,n){void 0===n&&(n=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&(\"get\"in a?t.__esModule:!a.writable&&!a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,a)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]};function h(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||f(t,e,r)}function y(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function T(e,t){var r=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,i=r.call(e),o=[];try{for(;(void 0===t||0<t--)&&!(n=i.next()).done;)o.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o}function v(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(T(arguments[t]));return e}function b(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;for(var n=Array(e),a=0,t=0;t<r;t++)for(var i=arguments[t],o=0,s=i.length;o<s;o++,a++)n[a]=i[o];return n}function E(e,t,r){if(r||2===arguments.length)for(var n,a=0,i=t.length;a<i;a++)!n&&a in t||((n=n||Array.prototype.slice.call(t,0,a))[a]=t[a]);return e.concat(n||Array.prototype.slice.call(t))}function S(e){return this instanceof S?(this.v=e,this):new S(e)}function A(e,t,r){var a,i,o;if(Symbol.asyncIterator)return a=r.apply(e,t||[]),i=[],o={},n(\"next\"),n(\"throw\"),n(\"return\",function(t){return function(e){return Promise.resolve(e).then(t,c)}}),o[Symbol.asyncIterator]=function(){return this},o;throw new TypeError(\"Symbol.asyncIterator is not defined.\");function n(n,e){a[n]&&(o[n]=function(r){return new Promise(function(e,t){1<i.push([n,r,e,t])||s(n,r)})},e)&&(o[n]=e(o[n]))}function s(e,t){try{(r=a[e](t)).value instanceof S?Promise.resolve(r.value.v).then(l,c):u(i[0][2],r)}catch(e){u(i[0][3],e)}var r}function l(e){s(\"next\",e)}function c(e){s(\"throw\",e)}function u(e,t){e(t),i.shift(),i.length&&s(i[0][0],i[0][1])}}function O(n){var a,e={};return t(\"next\"),t(\"throw\",function(e){throw e}),t(\"return\"),e[Symbol.iterator]=function(){return this},e;function t(t,r){e[t]=n[t]?function(e){return(a=!a)?{value:S(n[t](e)),done:!1}:r?r(e):e}:r}}function C(o){var e,t;if(Symbol.asyncIterator)return(e=o[Symbol.asyncIterator])?e.call(o):(o=y(o),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);throw new TypeError(\"Symbol.asyncIterator is not defined.\");function r(i){t[i]=o[i]&&function(a){return new Promise(function(e,t){var r,n;a=o[i](a),r=e,e=t,n=a.done,t=a.value,Promise.resolve(t).then(function(e){r({value:e,done:n})},e)})}}}function w(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e}var k=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t};function I(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&f(t,e,r);return k(t,e),t}function R(e){return e&&e.__esModule?e:{default:e}}function N(e,t,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e===t&&n:t.has(e))return\"m\"===r?n:\"a\"===r?n.call(e):n?n.value:t.get(e);throw new TypeError(\"Cannot read private member from an object whose class did not declare it\")}function P(e,t,r,n,a){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e===t&&a:t.has(e))return\"a\"===n?a.call(e,r):a?a.value=r:t.set(e,r),r;throw new TypeError(\"Cannot write private member to an object whose class did not declare it\")}function D(e,t){if(null===t||\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?t===e:e.has(t)}function x(e,t,r){if(null!=t){if(\"object\"!=typeof t&&\"function\"!=typeof t)throw new TypeError(\"Object expected.\");var n,a;if(r){if(!Symbol.asyncDispose)throw new TypeError(\"Symbol.asyncDispose is not defined.\");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError(\"Symbol.dispose is not defined.\");n=t[Symbol.dispose],r&&(a=n)}if(\"function\"!=typeof n)throw new TypeError(\"Object not disposable.\");a&&(n=function(){try{a.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t}var L=\"function\"==typeof SuppressedError?SuppressedError:function(e,t,r){r=new Error(r);return r.name=\"SuppressedError\",r.error=e,r.suppressed=t,r};function F(n){function a(e){n.error=n.hasError?new L(e,n.error,\"An error was suppressed during disposal.\"):e,n.hasError=!0}return function t(){for(;n.stack.length;){var e=n.stack.pop();try{var r=e.dispose&&e.dispose.call(e.value);if(e.async)return Promise.resolve(r).then(t,function(e){return a(e),t()})}catch(e){a(e)}}if(n.hasError)throw n.error}()}var U,e={__extends:a,__assign:i,__rest:o,__decorate:s,__param:l,__metadata:u,__awaiter:d,__generator:p,__createBinding:f,__exportStar:h,__values:y,__read:T,__spread:v,__spreadArrays:b,__spreadArray:E,__await:S,__asyncGenerator:A,__asyncDelegator:O,__asyncValues:C,__makeTemplateObject:w,__importStar:I,__importDefault:R,__classPrivateFieldGet:N,__classPrivateFieldSet:P,__classPrivateFieldIn:D,__addDisposableResource:x,__disposeResources:F},Jr=r(Object.freeze({__proto__:null,__extends:a,get __assign(){return i},__rest:o,__decorate:s,__param:l,__esDecorate:function(e,t,r,n,a,i){function o(e){if(void 0!==e&&\"function\"!=typeof e)throw new TypeError(\"Function expected\");return e}for(var s,l=n.kind,c=\"getter\"===l?\"get\":\"setter\"===l?\"set\":\"value\",e=!t&&e?n.static?e:e.prototype:null,u=t||(e?Object.getOwnPropertyDescriptor(e,n.name):{}),d=!1,p=r.length-1;0<=p;p--){var f,h={};for(f in n)h[f]=\"access\"===f?{}:n[f];for(f in n.access)h.access[f]=n.access[f];h.addInitializer=function(e){if(d)throw new TypeError(\"Cannot add initializers after decoration has completed\");i.push(o(e||null))};var m=(0,r[p])(\"accessor\"===l?{get:u.get,set:u.set}:u[c],h);if(\"accessor\"===l){if(void 0!==m){if(null===m||\"object\"!=typeof m)throw new TypeError(\"Object expected\");(s=o(m.get))&&(u.get=s),(s=o(m.set))&&(u.set=s),(s=o(m.init))&&a.unshift(s)}}else(s=o(m))&&(\"field\"===l?a.unshift(s):u[c]=s)}e&&Object.defineProperty(e,n.name,u),d=!0},__runInitializers:function(e,t,r){for(var n=2<arguments.length,a=0;a<t.length;a++)r=n?t[a].call(e,r):t[a].call(e);return n?r:void 0},__propKey:function(e){return\"symbol\"==typeof e?e:\"\".concat(e)},__setFunctionName:function(e,t,r){return\"symbol\"==typeof t&&(t=t.description?\"[\".concat(t.description,\"]\"):\"\"),Object.defineProperty(e,\"name\",{configurable:!0,value:r?\"\".concat(r,\" \",t):t})},__metadata:u,__awaiter:d,__generator:p,__createBinding:f,__exportStar:h,__values:y,__read:T,__spread:v,__spreadArrays:b,__spreadArray:E,__await:S,__asyncGenerator:A,__asyncDelegator:O,__asyncValues:C,__makeTemplateObject:w,__importStar:I,__importDefault:R,__classPrivateFieldGet:N,__classPrivateFieldSet:P,__classPrivateFieldIn:D,__addDisposableResource:x,__disposeResources:F,default:e})),B={},H={},G={},V={},q={};function Ce(){var t,e,n;return U||(U=1,t=q,Object.defineProperty(t,\"__esModule\",{value:!0}),t.getParsedType=t.ZodParsedType=t.objectUtil=t.util=void 0,(n=e=t.util||(t.util={})).assertEqual=e=>e,n.assertIs=function(e){},n.assertNever=function(e){throw new Error},n.arrayToEnum=e=>{var t={};for(const r of e)t[r]=r;return t},n.getValidEnumValues=t=>{var e={};for(const r of n.objectKeys(t).filter(e=>\"number\"!=typeof t[t[e]]))e[r]=t[r];return n.objectValues(e)},n.objectValues=t=>n.objectKeys(t).map(function(e){return t[e]}),n.objectKeys=\"function\"==typeof Object.keys?e=>Object.keys(e):e=>{var t=[];for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},n.find=(e,t)=>{for(const r of e)if(t(r))return r},n.isInteger=\"function\"==typeof Number.isInteger?e=>Number.isInteger(e):e=>\"number\"==typeof e&&isFinite(e)&&Math.floor(e)===e,n.joinValues=function(e,t=\" | \"){return e.map(e=>\"string\"==typeof e?`'${e}'`:e).join(t)},n.jsonStringifyReplacer=(e,t)=>\"bigint\"==typeof t?t.toString():t,(t.objectUtil||(t.objectUtil={})).mergeShapes=(e,t)=>({...e,...t}),t.ZodParsedType=e.arrayToEnum([\"string\",\"nan\",\"number\",\"integer\",\"float\",\"boolean\",\"date\",\"bigint\",\"symbol\",\"function\",\"undefined\",\"null\",\"array\",\"object\",\"unknown\",\"promise\",\"void\",\"never\",\"map\",\"set\"]),t.getParsedType=e=>{switch(typeof e){case\"undefined\":return t.ZodParsedType.undefined;case\"string\":return t.ZodParsedType.string;case\"number\":return isNaN(e)?t.ZodParsedType.nan:t.ZodParsedType.number;case\"boolean\":return t.ZodParsedType.boolean;case\"function\":return t.ZodParsedType.function;case\"bigint\":return t.ZodParsedType.bigint;case\"symbol\":return t.ZodParsedType.symbol;case\"object\":return Array.isArray(e)?t.ZodParsedType.array:null===e?t.ZodParsedType.null:e.then&&\"function\"==typeof e.then&&e.catch&&\"function\"==typeof e.catch?t.ZodParsedType.promise:\"undefined\"!=typeof Map&&e instanceof Map?t.ZodParsedType.map:\"undefined\"!=typeof Set&&e instanceof Set?t.ZodParsedType.set:\"undefined\"!=typeof Date&&e instanceof Date?t.ZodParsedType.date:t.ZodParsedType.object;default:return t.ZodParsedType.unknown}}),q}var z,W,$,J={};function we(){if(!z){z=1,Object.defineProperty(J,\"__esModule\",{value:!0}),J.ZodError=J.quotelessJson=J.ZodIssueCode=void 0;const e=Ce();J.ZodIssueCode=e.util.arrayToEnum([\"invalid_type\",\"invalid_literal\",\"custom\",\"invalid_union\",\"invalid_union_discriminator\",\"invalid_enum_value\",\"unrecognized_keys\",\"invalid_arguments\",\"invalid_return_type\",\"invalid_date\",\"invalid_string\",\"too_small\",\"too_big\",\"invalid_intersection_types\",\"not_multiple_of\",\"not_finite\"]);J.quotelessJson=e=>{return JSON.stringify(e,null,2).replace(/\"([^\"]+)\":/g,\"$1:\")};class t extends Error{constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};var t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=\"ZodError\",this.issues=e}get errors(){return this.issues}format(e){const a=e||function(e){return e.message},i={_errors:[]},t=e=>{for(const n of e.issues)if(\"invalid_union\"===n.code)n.unionErrors.map(t);else if(\"invalid_return_type\"===n.code)t(n.returnTypeError);else if(\"invalid_arguments\"===n.code)t(n.argumentsError);else if(0===n.path.length)i._errors.push(a(n));else{let e=i,t=0;for(;t<n.path.length;){var r=n.path[t];t===n.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(a(n))):e[r]=e[r]||{_errors:[]},e=e[r],t++}}};return t(this),i}static assert(e){if(!(e instanceof t))throw new Error(\"Not a ZodError: \"+e)}toString(){return this.message}get message(){return JSON.stringify(this.issues,e.util.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){var t={},r=[];for(const n of this.issues)(0<n.path.length?(t[n.path[0]]=t[n.path[0]]||[],t[n.path[0]]):r).push(e(n));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}(J.ZodError=t).create=e=>{return new t(e)}}return J}function Q(){if(!W){W=1,Object.defineProperty(V,\"__esModule\",{value:!0});const n=Ce(),a=we();V.default=(e,t)=>{let r;switch(e.code){case a.ZodIssueCode.invalid_type:r=e.received===n.ZodParsedType.undefined?\"Required\":`Expected ${e.expected}, received `+e.received;break;case a.ZodIssueCode.invalid_literal:r=\"Invalid literal value, expected \"+JSON.stringify(e.expected,n.util.jsonStringifyReplacer);break;case a.ZodIssueCode.unrecognized_keys:r=\"Unrecognized key(s) in object: \"+n.util.joinValues(e.keys,\", \");break;case a.ZodIssueCode.invalid_union:r=\"Invalid input\";break;case a.ZodIssueCode.invalid_union_discriminator:r=\"Invalid discriminator value. Expected \"+n.util.joinValues(e.options);break;case a.ZodIssueCode.invalid_enum_value:r=`Invalid enum value. Expected ${n.util.joinValues(e.options)}, received '${e.received}'`;break;case a.ZodIssueCode.invalid_arguments:r=\"Invalid function arguments\";break;case a.ZodIssueCode.invalid_return_type:r=\"Invalid function return type\";break;case a.ZodIssueCode.invalid_date:r=\"Invalid date\";break;case a.ZodIssueCode.invalid_string:\"object\"==typeof e.validation?\"includes\"in e.validation?(r=`Invalid input: must include \"${e.validation.includes}\"`,\"number\"==typeof e.validation.position&&(r=r+\" at one or more positions greater than or equal to \"+e.validation.position)):\"startsWith\"in e.validation?r=`Invalid input: must start with \"${e.validation.startsWith}\"`:\"endsWith\"in e.validation?r=`Invalid input: must end with \"${e.validation.endsWith}\"`:n.util.assertNever(e.validation):r=\"regex\"!==e.validation?\"Invalid \"+e.validation:\"Invalid\";break;case a.ZodIssueCode.too_small:r=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"more than\"} ${e.minimum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"over\"} ${e.minimum} character(s)`:\"number\"===e.type?\"Number must be \"+(e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \")+e.minimum:\"date\"===e.type?\"Date must be \"+(e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \")+new Date(Number(e.minimum)):\"Invalid input\";break;case a.ZodIssueCode.too_big:r=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"less than\"} ${e.maximum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"under\"} ${e.maximum} character(s)`:\"number\"===e.type?`Number must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} `+e.maximum:\"bigint\"===e.type?`BigInt must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} `+e.maximum:\"date\"===e.type?`Date must be ${e.exact?\"exactly\":e.inclusive?\"smaller than or equal to\":\"smaller than\"} `+new Date(Number(e.maximum)):\"Invalid input\";break;case a.ZodIssueCode.custom:r=\"Invalid input\";break;case a.ZodIssueCode.invalid_intersection_types:r=\"Intersection results could not be merged\";break;case a.ZodIssueCode.not_multiple_of:r=\"Number must be a multiple of \"+e.multipleOf;break;case a.ZodIssueCode.not_finite:r=\"Number must be finite\";break;default:r=t.defaultError,n.util.assertNever(e)}return{message:r}}}return V}function ke(){if(!$){$=1;var e=ve&&ve.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},e=(Object.defineProperty(G,\"__esModule\",{value:!0}),G.getErrorMap=G.setErrorMap=G.defaultErrorMap=void 0,e(Q()));G.defaultErrorMap=e.default;let t=e.default;G.setErrorMap=function(e){t=e},G.getErrorMap=function(){return t}}return G}var Z,X={};function Ie(){if(!Z){Z=1;{var o=X;var e=ve&&ve.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(o,\"__esModule\",{value:!0}),o.isAsync=o.isValid=o.isDirty=o.isAborted=o.OK=o.DIRTY=o.INVALID=o.ParseStatus=o.addIssueToContext=o.EMPTY_PATH=o.makeIssue=void 0;const n=ke(),a=e(Q());o.makeIssue=e=>{var{data:t,path:e,errorMaps:r,issueData:n}=e,e=[...e,...n.path||[]],a={...n,path:e};if(void 0!==n.message)return{...n,path:e,message:n.message};let i=\"\";for(const o of r.filter(e=>!!e).slice().reverse())i=o(a,{data:t,defaultError:i}).message;return{...n,path:e,message:i}},o.EMPTY_PATH=[],o.addIssueToContext=function(e,t){var r=(0,n.getErrorMap)(),t=(0,o.makeIssue)({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===a.default?void 0:a.default].filter(e=>!!e)});e.common.issues.push(t)};class s{constructor(){this.value=\"valid\"}dirty(){\"valid\"===this.value&&(this.value=\"dirty\")}abort(){\"aborted\"!==this.value&&(this.value=\"aborted\")}static mergeArray(e,t){var r=[];for(const n of t){if(\"aborted\"===n.status)return o.INVALID;\"dirty\"===n.status&&e.dirty(),r.push(n.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){var r=[];for(const i of t){var n=await i.key,a=await i.value;r.push({key:n,value:a})}return s.mergeObjectSync(e,r)}static mergeObjectSync(e,t){var r={};for(const i of t){var{key:n,value:a}=i;if(\"aborted\"===n.status)return o.INVALID;if(\"aborted\"===a.status)return o.INVALID;\"dirty\"===n.status&&e.dirty(),\"dirty\"===a.status&&e.dirty(),\"__proto__\"===n.value||void 0===a.value&&!i.alwaysSet||(r[n.value]=a.value)}return{status:e.value,value:r}}}o.ParseStatus=s,o.INVALID=Object.freeze({status:\"aborted\"});o.DIRTY=e=>({status:\"dirty\",value:e}),o.OK=e=>({status:\"valid\",value:e}),o.isAborted=e=>\"aborted\"===e.status,o.isDirty=e=>\"dirty\"===e.status,o.isValid=e=>\"valid\"===e.status;o.isAsync=e=>\"undefined\"!=typeof Promise&&e instanceof Promise}}return X}var ee,te={};var Re,Qe,re,ne,Ze={},Xe={};function ae(){if(!Qe){Qe=1;{var e=Ze;var n,a,l,t,F=ve&&ve.__classPrivateFieldGet||function(e,t,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof t?e===t&&n:t.has(e))return\"m\"===r?n:\"a\"===r?n.call(e):n?n.value:t.get(e);throw new TypeError(\"Cannot read private member from an object whose class did not declare it\")},U=ve&&ve.__classPrivateFieldSet||function(e,t,r,n,a){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!a)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof t?e===t&&a:t.has(e))return\"a\"===n?a.call(e,r):a?a.value=r:t.set(e,r),r;throw new TypeError(\"Cannot write private member to an object whose class did not declare it\")};Object.defineProperty(e,\"__esModule\",{value:!0}),e.boolean=e.bigint=e.array=e.any=e.coerce=e.ZodFirstPartyTypeKind=e.late=e.ZodSchema=e.Schema=e.custom=e.ZodReadonly=e.ZodPipeline=e.ZodBranded=e.BRAND=e.ZodNaN=e.ZodCatch=e.ZodDefault=e.ZodNullable=e.ZodOptional=e.ZodTransformer=e.ZodEffects=e.ZodPromise=e.ZodNativeEnum=e.ZodEnum=e.ZodLiteral=e.ZodLazy=e.ZodFunction=e.ZodSet=e.ZodMap=e.ZodRecord=e.ZodTuple=e.ZodIntersection=e.ZodDiscriminatedUnion=e.ZodUnion=e.ZodObject=e.ZodArray=e.ZodVoid=e.ZodNever=e.ZodUnknown=e.ZodAny=e.ZodNull=e.ZodUndefined=e.ZodSymbol=e.ZodDate=e.ZodBoolean=e.ZodBigInt=e.ZodNumber=e.ZodString=e.datetimeRegex=e.ZodType=void 0,e.NEVER=e.void=e.unknown=e.union=e.undefined=e.tuple=e.transformer=e.symbol=e.string=e.strictObject=e.set=e.record=e.promise=e.preprocess=e.pipeline=e.ostring=e.optional=e.onumber=e.oboolean=e.object=e.number=e.nullable=e.null=e.never=e.nativeEnum=e.nan=e.map=e.literal=e.lazy=e.intersection=e.instanceof=e.function=e.enum=e.effect=e.discriminatedUnion=e.date=void 0;const u=ke(),i=(Re||(Re=1,t=Xe,Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorUtil=void 0,(t=t.errorUtil||(t.errorUtil={})).errToObj=e=>\"string\"==typeof e?{message:e}:e||{},t.toString=e=>\"string\"==typeof e?e:null==e?void 0:e.message),Xe),m=Ie(),g=Ce(),_=we();class y{constructor(e,t,r,n){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=n}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const V=(t,e)=>{if((0,m.isValid)(e))return{success:!0,data:e.value};if(t.common.issues.length)return{success:!1,get error(){var e;return this._error||(e=new _.ZodError(t.common.issues),this._error=e),this._error}};throw new Error(\"Validation failed but no issues detected.\")};function c(a){if(!a)return{};const{errorMap:e,invalid_type_error:i,required_error:o,description:t}=a;if(e&&(i||o))throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);return e?{errorMap:e,description:t}:{errorMap:(e,t)=>{var r,n=a[\"message\"];return\"invalid_enum_value\"===e.code?{message:null!=n?n:t.defaultError}:void 0===t.data?{message:null!=(r=null!=n?n:o)?r:t.defaultError}:\"invalid_type\"!==e.code?{message:t.defaultError}:{message:null!=(r=null!=n?n:i)?r:t.defaultError}},description:t}}class o{constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(e){return(0,g.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,g.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new m.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,g.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){e=this._parse(e);if((0,m.isAsync)(e))throw new Error(\"Synchronous parse encountered promise.\");return e}_parseAsync(e){e=this._parse(e);return Promise.resolve(e)}parse(e,t){e=this.safeParse(e,t);if(e.success)return e.data;throw e.error}safeParse(e,t){var r={common:{issues:[],async:null!=(r=null==t?void 0:t.async)&&r,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,g.getParsedType)(e)},t=this._parseSync({data:e,path:r.path,parent:r});return V(r,t)}async parseAsync(e,t){e=await this.safeParseAsync(e,t);if(e.success)return e.data;throw e.error}async safeParseAsync(e,t){t={common:{issues:[],contextualErrorMap:null==t?void 0:t.errorMap,async:!0},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,g.getParsedType)(e)},e=this._parse({data:e,path:t.path,parent:t}),e=await((0,m.isAsync)(e)?e:Promise.resolve(e));return V(t,e)}refine(a,i){return this._refinement((t,r)=>{var e=a(t);const n=()=>{return r.addIssue({code:_.ZodIssueCode.custom,...(e=t,\"string\"==typeof i||void 0===i?{message:i}:\"function\"==typeof i?i(e):i)});var e};return\"undefined\"!=typeof Promise&&e instanceof Promise?e.then(e=>!!e||(n(),!1)):!!e||(n(),!1)})}refinement(r,n){return this._refinement((e,t)=>!!r(e)||(t.addIssue(\"function\"==typeof n?n(e,t):n),!1))}_refinement(e){return new D({schema:this,typeName:l.ZodEffects,effect:{type:\"refinement\",refinement:e}})}superRefine(e){return this._refinement(e)}optional(){return x.create(this,this._def)}nullable(){return L.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return O.create(this,this._def)}promise(){return P.create(this,this._def)}or(e){return ae.create([this,e],this._def)}and(e){return oe.create(this,e,this._def)}transform(e){return new D({...c(this._def),schema:this,typeName:l.ZodEffects,effect:{type:\"transform\",transform:e}})}default(e){var t=\"function\"==typeof e?e:()=>e;return new de({...c(this._def),innerType:this,defaultValue:t,typeName:l.ZodDefault})}brand(){return new he({typeName:l.ZodBranded,type:this,...c(this._def)})}catch(e){var t=\"function\"==typeof e?e:()=>e;return new pe({...c(this._def),innerType:this,catchValue:t,typeName:l.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return me.create(this,e)}readonly(){return ge.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}e.ZodType=o,e.Schema=o,e.ZodSchema=o;const q=/^c[^\\s-]{8,}$/i,z=/^[0-9a-z]+$/,W=/^[0-9A-HJKMNP-TV-Z]{26}$/,$=/^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i,K=/^[a-z0-9_-]{21}$/i,Y=/^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/,J=/^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;let s;const Q=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Z=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,X=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ee=\"((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))\",te=new RegExp(`^${ee}$`);function B(e){let t=\"([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d\";return e.precision?t=`${t}\\\\.\\\\d{${e.precision}}`:null==e.precision&&(t+=\"(\\\\.\\\\d+)?\"),t}function j(e){var t=ee+\"T\"+B(e),r=[];return r.push(e.local?\"Z?\":\"Z\"),e.offset&&r.push(\"([+-]\\\\d{2}:?\\\\d{2})\"),t+=`(${r.join(\"|\")})`,new RegExp(`^${t}$`)}e.datetimeRegex=j;class d extends o{_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==g.ZodParsedType.string){const n=this._getOrReturnCtx(t);return(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.string,received:n.parsedType}),m.INVALID}var e,r=new m.ParseStatus;let n=void 0;for(const o of this._def.checks)if(\"min\"===o.kind)t.data.length<o.value&&(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_small,minimum:o.value,type:\"string\",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(\"max\"===o.kind)t.data.length>o.value&&(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_big,maximum:o.value,type:\"string\",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(\"length\"===o.kind){var a=t.data.length>o.value,i=t.data.length<o.value;(a||i)&&(n=this._getOrReturnCtx(t,n),a?(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_big,maximum:o.value,type:\"string\",inclusive:!0,exact:!0,message:o.message}):i&&(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_small,minimum:o.value,type:\"string\",inclusive:!0,exact:!0,message:o.message}),r.dirty())}else if(\"email\"===o.kind)J.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"email\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"emoji\"===o.kind)(s=s||new RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\"u\")).test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"emoji\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"uuid\"===o.kind)$.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"uuid\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"nanoid\"===o.kind)K.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"nanoid\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"cuid\"===o.kind)q.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"cuid\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"cuid2\"===o.kind)z.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"cuid2\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"ulid\"===o.kind)W.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"ulid\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty());else if(\"url\"===o.kind)try{new URL(t.data)}catch(e){n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"url\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty()}else\"regex\"===o.kind?(o.regex.lastIndex=0,o.regex.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"regex\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty())):\"trim\"===o.kind?t.data=t.data.trim():\"includes\"===o.kind?t.data.includes(o.value,o.position)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),r.dirty()):\"toLowerCase\"===o.kind?t.data=t.data.toLowerCase():\"toUpperCase\"===o.kind?t.data=t.data.toUpperCase():\"startsWith\"===o.kind?t.data.startsWith(o.value)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:{startsWith:o.value},message:o.message}),r.dirty()):\"endsWith\"===o.kind?t.data.endsWith(o.value)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:{endsWith:o.value},message:o.message}),r.dirty()):\"datetime\"===o.kind?j(o).test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:\"datetime\",message:o.message}),r.dirty()):\"date\"===o.kind?te.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:\"date\",message:o.message}),r.dirty()):\"time\"===o.kind?(a=o,new RegExp(`^${B(a)}$`).test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_string,validation:\"time\",message:o.message}),r.dirty())):\"duration\"===o.kind?Y.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"duration\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):\"ip\"===o.kind?(i=t.data,(\"v4\"!==(e=o.version)&&e||!Q.test(i))&&(\"v6\"!==e&&e||!Z.test(i))&&(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"ip\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty())):\"base64\"===o.kind?X.test(t.data)||(n=this._getOrReturnCtx(t,n),(0,m.addIssueToContext)(n,{validation:\"base64\",code:_.ZodIssueCode.invalid_string,message:o.message}),r.dirty()):g.util.assertNever(o);return{status:r.value,value:t.data}}_regex(t,e,r){return this.refinement(e=>t.test(e),{validation:e,code:_.ZodIssueCode.invalid_string,...i.errorUtil.errToObj(r)})}_addCheck(e){return new d({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:\"email\",...i.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:\"url\",...i.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:\"emoji\",...i.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:\"uuid\",...i.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:\"nanoid\",...i.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:\"cuid\",...i.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:\"cuid2\",...i.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:\"ulid\",...i.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:\"base64\",...i.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:\"ip\",...i.errorUtil.errToObj(e)})}datetime(e){var t;return\"string\"==typeof e?this._addCheck({kind:\"datetime\",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:\"datetime\",precision:void 0===(null==e?void 0:e.precision)?null:null==e?void 0:e.precision,offset:null!=(t=null==e?void 0:e.offset)&&t,local:null!=(t=null==e?void 0:e.local)&&t,...i.errorUtil.errToObj(null==e?void 0:e.message)})}date(e){return this._addCheck({kind:\"date\",message:e})}time(e){return\"string\"==typeof e?this._addCheck({kind:\"time\",precision:null,message:e}):this._addCheck({kind:\"time\",precision:void 0===(null==e?void 0:e.precision)?null:null==e?void 0:e.precision,...i.errorUtil.errToObj(null==e?void 0:e.message)})}duration(e){return this._addCheck({kind:\"duration\",...i.errorUtil.errToObj(e)})}regex(e,t){return this._addCheck({kind:\"regex\",regex:e,...i.errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:\"includes\",value:e,position:null==t?void 0:t.position,...i.errorUtil.errToObj(null==t?void 0:t.message)})}startsWith(e,t){return this._addCheck({kind:\"startsWith\",value:e,...i.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:\"endsWith\",value:e,...i.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:\"min\",value:e,...i.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e,...i.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:\"length\",value:e,...i.errorUtil.errToObj(t)})}nonempty(e){return this.min(1,i.errorUtil.errToObj(e))}trim(){return new d({...this._def,checks:[...this._def.checks,{kind:\"trim\"}]})}toLowerCase(){return new d({...this._def,checks:[...this._def.checks,{kind:\"toLowerCase\"}]})}toUpperCase(){return new d({...this._def,checks:[...this._def.checks,{kind:\"toUpperCase\"}]})}get isDatetime(){return!!this._def.checks.find(e=>\"datetime\"===e.kind)}get isDate(){return!!this._def.checks.find(e=>\"date\"===e.kind)}get isTime(){return!!this._def.checks.find(e=>\"time\"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>\"duration\"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>\"email\"===e.kind)}get isURL(){return!!this._def.checks.find(e=>\"url\"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>\"emoji\"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>\"uuid\"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>\"nanoid\"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>\"cuid\"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>\"cuid2\"===e.kind)}get isULID(){return!!this._def.checks.find(e=>\"ulid\"===e.kind)}get isIP(){return!!this._def.checks.find(e=>\"ip\"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>\"base64\"===e.kind)}get minLength(){let e=null;for(const t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(const t of this._def.checks)\"max\"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}(e.ZodString=d).create=e=>{var t;return new d({checks:[],typeName:l.ZodString,coerce:null!=(t=null==e?void 0:e.coerce)&&t,...c(e)})};class p extends o{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==g.ZodParsedType.number){const t=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.number,received:t.parsedType}),m.INVALID}let t=void 0;var r,n,a,i,o=new m.ParseStatus;for(const s of this._def.checks)\"int\"===s.kind?g.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:\"integer\",received:\"float\",message:s.message}),o.dirty()):\"min\"===s.kind?(s.inclusive?e.data<s.value:e.data<=s.value)&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.too_small,minimum:s.value,type:\"number\",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):\"max\"===s.kind?(s.inclusive?e.data>s.value:e.data>=s.value)&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.too_big,maximum:s.value,type:\"number\",inclusive:s.inclusive,exact:!1,message:s.message}),o.dirty()):\"multipleOf\"===s.kind?0!=(r=e.data,n=s.value,a=i=a=void 0,a=(r.toString().split(\".\")[1]||\"\").length,i=(n.toString().split(\".\")[1]||\"\").length,a=i<a?a:i,parseInt(r.toFixed(a).replace(\".\",\"\"))%parseInt(n.toFixed(a).replace(\".\",\"\"))/Math.pow(10,a))&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.not_multiple_of,multipleOf:s.value,message:s.message}),o.dirty()):\"finite\"===s.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.not_finite,message:s.message}),o.dirty()):g.util.assertNever(s);return{status:o.value,value:e.data}}gte(e,t){return this.setLimit(\"min\",e,!0,i.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,i.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,i.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,i.errorUtil.toString(t))}setLimit(e,t,r,n){return new p({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:i.errorUtil.toString(n)}]})}_addCheck(e){return new p({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:\"int\",message:i.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:\"min\",value:0,inclusive:!1,message:i.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:0,inclusive:!1,message:i.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:0,inclusive:!0,message:i.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:0,inclusive:!0,message:i.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:i.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:\"finite\",message:i.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:\"min\",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:i.errorUtil.toString(e)})._addCheck({kind:\"max\",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:i.errorUtil.toString(e)})}get minValue(){let e=null;for(const t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)\"max\"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>\"int\"===e.kind||\"multipleOf\"===e.kind&&g.util.isInteger(e.value))}get isFinite(){let e=null,t=null;for(const r of this._def.checks){if(\"finite\"===r.kind||\"int\"===r.kind||\"multipleOf\"===r.kind)return!0;\"min\"===r.kind?(null===t||r.value>t)&&(t=r.value):\"max\"===r.kind&&(null===e||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}}(e.ZodNumber=p).create=e=>new p({checks:[],typeName:l.ZodNumber,coerce:(null==e?void 0:e.coerce)||!1,...c(e)});class f extends o{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce&&(e.data=BigInt(e.data)),this._getType(e)!==g.ZodParsedType.bigint){const t=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.bigint,received:t.parsedType}),m.INVALID}let t=void 0;var r=new m.ParseStatus;for(const n of this._def.checks)\"min\"===n.kind?(n.inclusive?e.data<n.value:e.data<=n.value)&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.too_small,type:\"bigint\",minimum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):\"max\"===n.kind?(n.inclusive?e.data>n.value:e.data>=n.value)&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.too_big,type:\"bigint\",maximum:n.value,inclusive:n.inclusive,message:n.message}),r.dirty()):\"multipleOf\"===n.kind?e.data%n.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.not_multiple_of,multipleOf:n.value,message:n.message}),r.dirty()):g.util.assertNever(n);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit(\"min\",e,!0,i.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,i.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,i.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,i.errorUtil.toString(t))}setLimit(e,t,r,n){return new f({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:i.errorUtil.toString(n)}]})}_addCheck(e){return new f({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!1,message:i.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!1,message:i.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!0,message:i.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!0,message:i.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:i.errorUtil.toString(t)})}get minValue(){let e=null;for(const t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(const t of this._def.checks)\"max\"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}(e.ZodBigInt=f).create=e=>{var t;return new f({checks:[],typeName:l.ZodBigInt,coerce:null!=(t=null==e?void 0:e.coerce)&&t,...c(e)})};class h extends o{_parse(e){var t;return this._def.coerce&&(e.data=Boolean(e.data)),this._getType(e)!==g.ZodParsedType.boolean?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.boolean,received:t.parsedType}),m.INVALID):(0,m.OK)(e.data)}}(e.ZodBoolean=h).create=e=>new h({typeName:l.ZodBoolean,coerce:(null==e?void 0:e.coerce)||!1,...c(e)});class T extends o{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==g.ZodParsedType.date){const r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.date,received:r.parsedType}),m.INVALID}if(isNaN(e.data.getTime())){const r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_date}),m.INVALID}var t=new m.ParseStatus;let r=void 0;for(const n of this._def.checks)\"min\"===n.kind?e.data.getTime()<n.value&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_small,message:n.message,inclusive:!0,exact:!1,minimum:n.value,type:\"date\"}),t.dirty()):\"max\"===n.kind?e.data.getTime()>n.value&&(r=this._getOrReturnCtx(e,r),(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_big,message:n.message,inclusive:!0,exact:!1,maximum:n.value,type:\"date\"}),t.dirty()):g.util.assertNever(n);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new T({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:\"min\",value:e.getTime(),message:i.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e.getTime(),message:i.errorUtil.toString(t)})}get minDate(){let e=null;for(const t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(const t of this._def.checks)\"max\"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}(e.ZodDate=T).create=e=>new T({checks:[],coerce:(null==e?void 0:e.coerce)||!1,typeName:l.ZodDate,...c(e)});class re extends o{_parse(e){var t;return this._getType(e)!==g.ZodParsedType.symbol?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.symbol,received:t.parsedType}),m.INVALID):(0,m.OK)(e.data)}}(e.ZodSymbol=re).create=e=>new re({typeName:l.ZodSymbol,...c(e)});class v extends o{_parse(e){var t;return this._getType(e)!==g.ZodParsedType.undefined?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.undefined,received:t.parsedType}),m.INVALID):(0,m.OK)(e.data)}}(e.ZodUndefined=v).create=e=>new v({typeName:l.ZodUndefined,...c(e)});class b extends o{_parse(e){var t;return this._getType(e)!==g.ZodParsedType.null?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.null,received:t.parsedType}),m.INVALID):(0,m.OK)(e.data)}}(e.ZodNull=b).create=e=>new b({typeName:l.ZodNull,...c(e)});class E extends o{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,m.OK)(e.data)}}(e.ZodAny=E).create=e=>new E({typeName:l.ZodAny,...c(e)});class S extends o{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,m.OK)(e.data)}}(e.ZodUnknown=S).create=e=>new S({typeName:l.ZodUnknown,...c(e)});class A extends o{_parse(e){e=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(e,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.never,received:e.parsedType}),m.INVALID}}(e.ZodNever=A).create=e=>new A({typeName:l.ZodNever,...c(e)});class ne extends o{_parse(e){var t;return this._getType(e)!==g.ZodParsedType.undefined?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.void,received:t.parsedType}),m.INVALID):(0,m.OK)(e.data)}}(e.ZodVoid=ne).create=e=>new ne({typeName:l.ZodVoid,...c(e)});class O extends o{_parse(e){const{ctx:r,status:t}=this._processInputParams(e),n=this._def;var a;return r.parsedType!==g.ZodParsedType.array?((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.array,received:r.parsedType}),m.INVALID):(null!==n.exactLength&&(e=r.data.length>n.exactLength.value,a=r.data.length<n.exactLength.value,e||a)&&((0,m.addIssueToContext)(r,{code:e?_.ZodIssueCode.too_big:_.ZodIssueCode.too_small,minimum:a?n.exactLength.value:void 0,maximum:e?n.exactLength.value:void 0,type:\"array\",inclusive:!0,exact:!0,message:n.exactLength.message}),t.dirty()),null!==n.minLength&&r.data.length<n.minLength.value&&((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_small,minimum:n.minLength.value,type:\"array\",inclusive:!0,exact:!1,message:n.minLength.message}),t.dirty()),null!==n.maxLength&&r.data.length>n.maxLength.value&&((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_big,maximum:n.maxLength.value,type:\"array\",inclusive:!0,exact:!1,message:n.maxLength.message}),t.dirty()),r.common.async?Promise.all([...r.data].map((e,t)=>n.type._parseAsync(new y(r,e,r.path,t)))).then(e=>m.ParseStatus.mergeArray(t,e)):(a=[...r.data].map((e,t)=>n.type._parseSync(new y(r,e,r.path,t))),m.ParseStatus.mergeArray(t,a)))}get element(){return this._def.type}min(e,t){return new O({...this._def,minLength:{value:e,message:i.errorUtil.toString(t)}})}max(e,t){return new O({...this._def,maxLength:{value:e,message:i.errorUtil.toString(t)}})}length(e,t){return new O({...this._def,exactLength:{value:e,message:i.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}(e.ZodArray=O).create=(e,t)=>new O({type:e,minLength:null,maxLength:null,exactLength:null,typeName:l.ZodArray,...c(t)});class C extends o{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){var e,t;return null!==this._cached?this._cached:(e=this._def.shape(),t=g.util.objectKeys(e),this._cached={shape:e,keys:t})}_parse(e){if(this._getType(e)!==g.ZodParsedType.object){const r=this._getOrReturnCtx(e);return(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.object,received:r.parsedType}),m.INVALID}const{status:t,ctx:r}=this._processInputParams(e);var{shape:n,keys:a}=this._getCached(),i=[];if(!(this._def.catchall instanceof A&&\"strip\"===this._def.unknownKeys))for(const d in r.data)a.includes(d)||i.push(d);const o=[];for(const p of a){var s=n[p],l=r.data[p];o.push({key:{status:\"valid\",value:p},value:s._parse(new y(r,l,r.path,p)),alwaysSet:p in r.data})}if(this._def.catchall instanceof A){e=this._def.unknownKeys;if(\"passthrough\"===e)for(const f of i)o.push({key:{status:\"valid\",value:f},value:{status:\"valid\",value:r.data[f]}});else if(\"strict\"===e)0<i.length&&((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.unrecognized_keys,keys:i}),t.dirty());else if(\"strip\"!==e)throw new Error(\"Internal ZodObject error: invalid unknownKeys value.\")}else{var c=this._def.catchall;for(const h of i){var u=r.data[h];o.push({key:{status:\"valid\",value:h},value:c._parse(new y(r,u,r.path,h)),alwaysSet:h in r.data})}}return r.common.async?Promise.resolve().then(async()=>{var e=[];for(const n of o){var t=await n.key,r=await n.value;e.push({key:t,value:r,alwaysSet:n.alwaysSet})}return e}).then(e=>m.ParseStatus.mergeObjectSync(t,e)):m.ParseStatus.mergeObjectSync(t,o)}get shape(){return this._def.shape()}strict(a){return i.errorUtil.errToObj,new C({...this._def,unknownKeys:\"strict\",...void 0!==a?{errorMap:(e,t)=>{var r,n=null!=(r=null==(r=(n=this._def).errorMap)?void 0:r.call(n,e,t).message)?r:t.defaultError;return\"unrecognized_keys\"===e.code?{message:null!=(r=i.errorUtil.errToObj(a).message)?r:n}:{message:n}}}:{}})}strip(){return new C({...this._def,unknownKeys:\"strip\"})}passthrough(){return new C({...this._def,unknownKeys:\"passthrough\"})}extend(e){return new C({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new C({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:l.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new C({...this._def,catchall:e})}pick(t){const r={};return g.util.objectKeys(t).forEach(e=>{t[e]&&this.shape[e]&&(r[e]=this.shape[e])}),new C({...this._def,shape:()=>r})}omit(t){const r={};return g.util.objectKeys(this.shape).forEach(e=>{t[e]||(r[e]=this.shape[e])}),new C({...this._def,shape:()=>r})}deepPartial(){return function t(e){if(e instanceof C){const n={};for(const a in e.shape){var r=e.shape[a];n[a]=x.create(t(r))}return new C({...e._def,shape:()=>n})}return e instanceof O?new O({...e._def,type:t(e.element)}):e instanceof x?x.create(t(e.unwrap())):e instanceof L?L.create(t(e.unwrap())):e instanceof k?k.create(e.items.map(e=>t(e))):e}(this)}partial(r){const n={};return g.util.objectKeys(this.shape).forEach(e=>{var t=this.shape[e];r&&!r[e]?n[e]=t:n[e]=t.optional()}),new C({...this._def,shape:()=>n})}required(e){const r={};return g.util.objectKeys(this.shape).forEach(t=>{if(e&&!e[t])r[t]=this.shape[t];else{let e=this.shape[t];for(;e instanceof x;)e=e._def.innerType;r[t]=e}}),new C({...this._def,shape:()=>r})}keyof(){return H(g.util.objectKeys(this.shape))}}(e.ZodObject=C).create=(e,t)=>new C({shape:()=>e,unknownKeys:\"strip\",catchall:A.create(),typeName:l.ZodObject,...c(t)}),C.strictCreate=(e,t)=>new C({shape:()=>e,unknownKeys:\"strict\",catchall:A.create(),typeName:l.ZodObject,...c(t)}),C.lazycreate=(e,t)=>new C({shape:e,unknownKeys:\"strip\",catchall:A.create(),typeName:l.ZodObject,...c(t)});class ae extends o{_parse(t){const n=this._processInputParams(t)[\"ctx\"];t=this._def.options;if(n.common.async)return Promise.all(t.map(async e=>{var t={...n,common:{...n.common,issues:[]},parent:null};return{result:await e._parseAsync({data:n.data,path:n.path,parent:t}),ctx:t}})).then(function(e){for(const t of e)if(\"valid\"===t.result.status)return t.result;for(const r of e)if(\"dirty\"===r.result.status)return n.common.issues.push(...r.ctx.common.issues),r.result;return e=e.map(e=>new _.ZodError(e.ctx.common.issues)),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_union,unionErrors:e}),m.INVALID});{let e=void 0;var r=[];for(const o of t){var a={...n,common:{...n.common,issues:[]},parent:null},i=o._parseSync({data:n.data,path:n.path,parent:a});if(\"valid\"===i.status)return i;\"dirty\"===i.status&&(e=e||{result:i,ctx:a}),a.common.issues.length&&r.push(a.common.issues)}return e?(n.common.issues.push(...e.ctx.common.issues),e.result):(t=r.map(e=>new _.ZodError(e)),(0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_union,unionErrors:t}),m.INVALID)}}get options(){return this._def.options}}(e.ZodUnion=ae).create=(e,t)=>new ae({options:e,typeName:l.ZodUnion,...c(t)});const w=e=>e instanceof ce?w(e.schema):e instanceof D?w(e.innerType()):e instanceof ue?[e.value]:e instanceof N?e.options:e instanceof M?g.util.objectValues(e.enum):e instanceof de?w(e._def.innerType):e instanceof v?[void 0]:e instanceof b?[null]:e instanceof x?[void 0,...w(e.unwrap())]:e instanceof L?[null,...w(e.unwrap())]:e instanceof he||e instanceof ge?w(e.unwrap()):e instanceof pe?w(e._def.innerType):[];class ie extends o{_parse(e){var t,r,e=this._processInputParams(e)[\"ctx\"];return e.parsedType!==g.ZodParsedType.object?((0,m.addIssueToContext)(e,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.object,received:e.parsedType}),m.INVALID):(t=this.discriminator,r=e.data[t],(r=this.optionsMap.get(r))?e.common.async?r._parseAsync({data:e.data,path:e.path,parent:e}):r._parseSync({data:e.data,path:e.path,parent:e}):((0,m.addIssueToContext)(e,{code:_.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[t]}),m.INVALID))}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){var n=new Map;for(const i of t){var a=w(i.shape[e]);if(!a.length)throw new Error(`A discriminator value for key \\`${e}\\` could not be extracted from all schema options`);for(const o of a){if(n.has(o))throw new Error(`Discriminator property ${String(e)} has duplicate value `+String(o));n.set(o,i)}}return new ie({typeName:l.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:n,...c(r)})}}e.ZodDiscriminatedUnion=ie;class oe extends o{_parse(e){const{status:n,ctx:a}=this._processInputParams(e),r=(e,t)=>{var r;return(0,m.isAborted)(e)||(0,m.isAborted)(t)?m.INVALID:(r=function t(r,n){var e=(0,g.getParsedType)(r),a=(0,g.getParsedType)(n);if(r===n)return{valid:!0,data:r};if(e===g.ZodParsedType.object&&a===g.ZodParsedType.object){const u=g.util.objectKeys(n);var i=g.util.objectKeys(r).filter(e=>-1!==u.indexOf(e)),o={...r,...n};for(const d of i){var s=t(r[d],n[d]);if(!s.valid)return{valid:!1};o[d]=s.data}return{valid:!0,data:o}}if(e!==g.ZodParsedType.array||a!==g.ZodParsedType.array)return e===g.ZodParsedType.date&&a===g.ZodParsedType.date&&+r==+n?{valid:!0,data:r}:{valid:!1};if(r.length!==n.length)return{valid:!1};var l=[];for(let e=0;e<r.length;e++){var c=t(r[e],n[e]);if(!c.valid)return{valid:!1};l.push(c.data)}return{valid:!0,data:l}}(e.value,t.value)).valid?(((0,m.isDirty)(e)||(0,m.isDirty)(t))&&n.dirty(),{status:n.value,value:r.data}):((0,m.addIssueToContext)(a,{code:_.ZodIssueCode.invalid_intersection_types}),m.INVALID)};return a.common.async?Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}}(e.ZodIntersection=oe).create=(e,t,r)=>new oe({left:e,right:t,typeName:l.ZodIntersection,...c(r)});class k extends o{_parse(e){const{status:t,ctx:n}=this._processInputParams(e);return n.parsedType!==g.ZodParsedType.array?((0,m.addIssueToContext)(n,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.array,received:n.parsedType}),m.INVALID):n.data.length<this._def.items.length?((0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:\"array\"}),m.INVALID):(!this._def.rest&&n.data.length>this._def.items.length&&((0,m.addIssueToContext)(n,{code:_.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:\"array\"}),t.dirty()),e=[...n.data].map((e,t)=>{var r=this._def.items[t]||this._def.rest;return r?r._parse(new y(n,e,n.path,t)):null}).filter(e=>!!e),n.common.async?Promise.all(e).then(e=>m.ParseStatus.mergeArray(t,e)):m.ParseStatus.mergeArray(t,e))}get items(){return this._def.items}rest(e){return new k({...this._def,rest:e})}}(e.ZodTuple=k).create=(e,t)=>{if(Array.isArray(e))return new k({items:e,typeName:l.ZodTuple,rest:null,...c(t)});throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\")};class se extends o{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){var{status:e,ctx:t}=this._processInputParams(e);if(t.parsedType!==g.ZodParsedType.object)return(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.object,received:t.parsedType}),m.INVALID;var r=[],n=this._def.keyType,a=this._def.valueType;for(const i in t.data)r.push({key:n._parse(new y(t,i,t.path,i)),value:a._parse(new y(t,t.data[i],t.path,i)),alwaysSet:i in t.data});return t.common.async?m.ParseStatus.mergeObjectAsync(e,r):m.ParseStatus.mergeObjectSync(e,r)}get element(){return this._def.valueType}static create(e,t,r){return t instanceof o?new se({keyType:e,valueType:t,typeName:l.ZodRecord,...c(r)}):new se({keyType:d.create(),valueType:e,typeName:l.ZodRecord,...c(t)})}}e.ZodRecord=se;class le extends o{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:a}=this._processInputParams(e);if(a.parsedType!==g.ZodParsedType.map)return(0,m.addIssueToContext)(a,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.map,received:a.parsedType}),m.INVALID;const i=this._def.keyType,o=this._def.valueType,s=[...a.data.entries()].map(([e,t],r)=>({key:i._parse(new y(a,e,a.path,[r,\"key\"])),value:o._parse(new y(a,t,a.path,[r,\"value\"]))}));if(a.common.async){const c=new Map;return Promise.resolve().then(async()=>{for(const r of s){var e=await r.key,t=await r.value;if(\"aborted\"===e.status||\"aborted\"===t.status)return m.INVALID;\"dirty\"!==e.status&&\"dirty\"!==t.status||n.dirty(),c.set(e.value,t.value)}return{status:n.value,value:c}})}var t=new Map;for(const u of s){var r=u.key,l=u.value;if(\"aborted\"===r.status||\"aborted\"===l.status)return m.INVALID;\"dirty\"!==r.status&&\"dirty\"!==l.status||n.dirty(),t.set(r.value,l.value)}return{status:n.value,value:t}}}(e.ZodMap=le).create=(e,t,r)=>new le({valueType:t,keyType:e,typeName:l.ZodMap,...c(r)});class I extends o{_parse(e){const{status:n,ctx:r}=this._processInputParams(e);if(r.parsedType!==g.ZodParsedType.set)return(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.set,received:r.parsedType}),m.INVALID;e=this._def;null!==e.minSize&&r.data.size<e.minSize.value&&((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_small,minimum:e.minSize.value,type:\"set\",inclusive:!0,exact:!1,message:e.minSize.message}),n.dirty()),null!==e.maxSize&&r.data.size>e.maxSize.value&&((0,m.addIssueToContext)(r,{code:_.ZodIssueCode.too_big,maximum:e.maxSize.value,type:\"set\",inclusive:!0,exact:!1,message:e.maxSize.message}),n.dirty());const a=this._def.valueType;function t(e){var t=new Set;for(const r of e){if(\"aborted\"===r.status)return m.INVALID;\"dirty\"===r.status&&n.dirty(),t.add(r.value)}return{status:n.value,value:t}}e=[...r.data.values()].map((e,t)=>a._parse(new y(r,e,r.path,t)));return r.common.async?Promise.all(e).then(e=>t(e)):t(e)}min(e,t){return new I({...this._def,minSize:{value:e,message:i.errorUtil.toString(t)}})}max(e,t){return new I({...this._def,maxSize:{value:e,message:i.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}(e.ZodSet=I).create=(e,t)=>new I({valueType:e,minSize:null,maxSize:null,typeName:l.ZodSet,...c(t)});class R extends o{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const r=this._processInputParams(e)[\"ctx\"];if(r.parsedType!==g.ZodParsedType.function)return(0,m.addIssueToContext)(r,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.function,received:r.parsedType}),m.INVALID;function a(e,t){return(0,m.makeIssue)({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,(0,u.getErrorMap)(),u.defaultErrorMap].filter(e=>!!e),issueData:{code:_.ZodIssueCode.invalid_arguments,argumentsError:t}})}function i(e,t){return(0,m.makeIssue)({data:e,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,(0,u.getErrorMap)(),u.defaultErrorMap].filter(e=>!!e),issueData:{code:_.ZodIssueCode.invalid_return_type,returnTypeError:t}})}const o={errorMap:r.common.contextualErrorMap},s=r.data;if(this._def.returns instanceof P){const l=this;return(0,m.OK)(async function(...t){const r=new _.ZodError([]);var e=await l._def.args.parseAsync(t,o).catch(e=>{throw r.addIssue(a(t,e)),r});const n=await Reflect.apply(s,this,e);return await l._def.returns._def.type.parseAsync(n,o).catch(e=>{throw r.addIssue(i(n,e)),r})})}{const n=this;return(0,m.OK)(function(...e){var t=n._def.args.safeParse(e,o);if(!t.success)throw new _.ZodError([a(e,t.error)]);e=Reflect.apply(s,this,t.data),t=n._def.returns.safeParse(e,o);if(t.success)return t.data;throw new _.ZodError([i(e,t.error)])})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new R({...this._def,args:k.create(e).rest(S.create())})}returns(e){return new R({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new R({args:e||k.create([]).rest(S.create()),returns:t||S.create(),typeName:l.ZodFunction,...c(r)})}}e.ZodFunction=R;class ce extends o{get schema(){return this._def.getter()}_parse(e){e=this._processInputParams(e).ctx;return this._def.getter()._parse({data:e.data,path:e.path,parent:e})}}(e.ZodLazy=ce).create=(e,t)=>new ce({getter:e,typeName:l.ZodLazy,...c(t)});class ue extends o{_parse(e){var t;return e.data!==this._def.value?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{received:t.data,code:_.ZodIssueCode.invalid_literal,expected:this._def.value}),m.INVALID):{status:\"valid\",value:e.data}}get value(){return this._def.value}}function H(e,t){return new N({values:e,typeName:l.ZodEnum,...c(t)})}(e.ZodLiteral=ue).create=(e,t)=>new ue({value:e,typeName:l.ZodLiteral,...c(t)});class N extends o{constructor(){super(...arguments),n.set(this,void 0)}_parse(e){var t,r;return\"string\"!=typeof e.data?(r=this._getOrReturnCtx(e),t=this._def.values,(0,m.addIssueToContext)(r,{expected:g.util.joinValues(t),received:r.parsedType,code:_.ZodIssueCode.invalid_type}),m.INVALID):(F(this,n,\"f\")||U(this,n,new Set(this._def.values),\"f\"),F(this,n,\"f\").has(e.data)?(0,m.OK)(e.data):(t=this._getOrReturnCtx(e),r=this._def.values,(0,m.addIssueToContext)(t,{received:t.data,code:_.ZodIssueCode.invalid_enum_value,options:r}),m.INVALID))}get options(){return this._def.values}get enum(){var e={};for(const t of this._def.values)e[t]=t;return e}get Values(){var e={};for(const t of this._def.values)e[t]=t;return e}get Enum(){var e={};for(const t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return N.create(e,{...this._def,...t})}exclude(t,e=this._def){return N.create(this.options.filter(e=>!t.includes(e)),{...this._def,...e})}}e.ZodEnum=N,n=new WeakMap,N.create=H;class M extends o{constructor(){super(...arguments),a.set(this,void 0)}_parse(e){var t,r=g.util.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);return n.parsedType!==g.ZodParsedType.string&&n.parsedType!==g.ZodParsedType.number?(t=g.util.objectValues(r),(0,m.addIssueToContext)(n,{expected:g.util.joinValues(t),received:n.parsedType,code:_.ZodIssueCode.invalid_type}),m.INVALID):(F(this,a,\"f\")||U(this,a,new Set(g.util.getValidEnumValues(this._def.values)),\"f\"),F(this,a,\"f\").has(e.data)?(0,m.OK)(e.data):(t=g.util.objectValues(r),(0,m.addIssueToContext)(n,{received:n.data,code:_.ZodIssueCode.invalid_enum_value,options:t}),m.INVALID))}get enum(){return this._def.values}}e.ZodNativeEnum=M,a=new WeakMap,M.create=(e,t)=>new M({values:e,typeName:l.ZodNativeEnum,...c(t)});class P extends o{unwrap(){return this._def.type}_parse(e){const t=this._processInputParams(e)[\"ctx\"];return t.parsedType!==g.ZodParsedType.promise&&!1===t.common.async?((0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.promise,received:t.parsedType}),m.INVALID):(e=t.parsedType===g.ZodParsedType.promise?t.data:Promise.resolve(t.data),(0,m.OK)(e.then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap}))))}}(e.ZodPromise=P).create=(e,t)=>new P({type:e,typeName:l.ZodPromise,...c(t)});class D extends o{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===l.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:t,ctx:r}=this._processInputParams(e),n=this._def.effect||null,a={addIssue:e=>{(0,m.addIssueToContext)(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),\"preprocess\"===n.type)return e=n.transform(r.data,a),r.common.async?Promise.resolve(e).then(async e=>{return\"aborted\"===t.value||\"aborted\"===(e=await this._def.schema._parseAsync({data:e,path:r.path,parent:r})).status?m.INVALID:\"dirty\"===e.status||\"dirty\"===t.value?(0,m.DIRTY)(e.value):e}):\"aborted\"===t.value||\"aborted\"===(e=this._def.schema._parseSync({data:e,path:r.path,parent:r})).status?m.INVALID:\"dirty\"===e.status||\"dirty\"===t.value?(0,m.DIRTY)(e.value):e;if(\"refinement\"===n.type){const i=e=>{var t=n.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");return e};return!1===r.common.async?\"aborted\"===(e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r})).status?m.INVALID:(\"dirty\"===e.status&&t.dirty(),i(e.value),{status:t.value,value:e.value}):this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>\"aborted\"===e.status?m.INVALID:(\"dirty\"===e.status&&t.dirty(),i(e.value).then(()=>({status:t.value,value:e.value}))))}if(\"transform\"===n.type){if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>(0,m.isValid)(e)?Promise.resolve(n.transform(e.value,a)).then(e=>({status:t.value,value:e})):e);e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!(0,m.isValid)(e))return e;e=n.transform(e.value,a);if(e instanceof Promise)throw new Error(\"Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.\");return{status:t.value,value:e}}g.util.assertNever(n)}}e.ZodEffects=D,(e.ZodTransformer=D).create=(e,t,r)=>new D({schema:e,typeName:l.ZodEffects,effect:t,...c(r)}),D.createWithPreprocess=(e,t,r)=>new D({schema:t,effect:{type:\"preprocess\",transform:e},typeName:l.ZodEffects,...c(r)});class x extends o{_parse(e){return this._getType(e)===g.ZodParsedType.undefined?(0,m.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}(e.ZodOptional=x).create=(e,t)=>new x({innerType:e,typeName:l.ZodOptional,...c(t)});class L extends o{_parse(e){return this._getType(e)===g.ZodParsedType.null?(0,m.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}(e.ZodNullable=L).create=(e,t)=>new L({innerType:e,typeName:l.ZodNullable,...c(t)});class de extends o{_parse(e){e=this._processInputParams(e).ctx;let t=e.data;return e.parsedType===g.ZodParsedType.undefined&&(t=this._def.defaultValue()),this._def.innerType._parse({data:t,path:e.path,parent:e})}removeDefault(){return this._def.innerType}}(e.ZodDefault=de).create=(e,t)=>new de({innerType:e,typeName:l.ZodDefault,defaultValue:\"function\"==typeof t.default?t.default:()=>t.default,...c(t)});class pe extends o{_parse(e){e=this._processInputParams(e).ctx;const t={...e,common:{...e.common,issues:[]}};e=this._def.innerType._parse({data:t.data,path:t.path,parent:{...t}});return(0,m.isAsync)(e)?e.then(e=>({status:\"valid\",value:\"valid\"===e.status?e.value:this._def.catchValue({get error(){return new _.ZodError(t.common.issues)},input:t.data})})):{status:\"valid\",value:\"valid\"===e.status?e.value:this._def.catchValue({get error(){return new _.ZodError(t.common.issues)},input:t.data})}}removeCatch(){return this._def.innerType}}(e.ZodCatch=pe).create=(e,t)=>new pe({innerType:e,typeName:l.ZodCatch,catchValue:\"function\"==typeof t.catch?t.catch:()=>t.catch,...c(t)});class fe extends o{_parse(e){var t;return this._getType(e)!==g.ZodParsedType.nan?(t=this._getOrReturnCtx(e),(0,m.addIssueToContext)(t,{code:_.ZodIssueCode.invalid_type,expected:g.ZodParsedType.nan,received:t.parsedType}),m.INVALID):{status:\"valid\",value:e.data}}}(e.ZodNaN=fe).create=e=>new fe({typeName:l.ZodNaN,...c(e)}),e.BRAND=Symbol(\"zod_brand\");class he extends o{_parse(e){var e=this._processInputParams(e)[\"ctx\"],t=e.data;return this._def.type._parse({data:t,path:e.path,parent:e})}unwrap(){return this._def.type}}e.ZodBranded=he;class me extends o{_parse(e){const{status:t,ctx:r}=this._processInputParams(e);return r.common.async?(async()=>{var e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return\"aborted\"===e.status?m.INVALID:\"dirty\"===e.status?(t.dirty(),(0,m.DIRTY)(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})():\"aborted\"===(e=this._def.in._parseSync({data:r.data,path:r.path,parent:r})).status?m.INVALID:\"dirty\"===e.status?(t.dirty(),{status:\"dirty\",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}static create(e,t){return new me({in:e,out:t,typeName:l.ZodPipeline})}}e.ZodPipeline=me;class ge extends o{_parse(e){e=this._def.innerType._parse(e);const t=e=>((0,m.isValid)(e)&&(e.value=Object.freeze(e.value)),e);return(0,m.isAsync)(e)?e.then(e=>t(e)):t(e)}unwrap(){return this._def.innerType}}function G(n,a={},i){return n?E.create().superRefine((e,t)=>{var r;n(e)||(r=null==(r=null!=(r=(e=\"function\"==typeof a?a(e):\"string\"==typeof a?{message:a}:a).fatal)?r:i)||r,t.addIssue({code:\"custom\",...\"string\"==typeof e?{message:e}:e,fatal:r}))}):E.create()}(e.ZodReadonly=ge).create=(e,t)=>new ge({innerType:e,typeName:l.ZodReadonly,...c(t)}),e.custom=G,e.late={object:C.lazycreate},(t=l=e.ZodFirstPartyTypeKind||(e.ZodFirstPartyTypeKind={})).ZodString=\"ZodString\",t.ZodNumber=\"ZodNumber\",t.ZodNaN=\"ZodNaN\",t.ZodBigInt=\"ZodBigInt\",t.ZodBoolean=\"ZodBoolean\",t.ZodDate=\"ZodDate\",t.ZodSymbol=\"ZodSymbol\",t.ZodUndefined=\"ZodUndefined\",t.ZodNull=\"ZodNull\",t.ZodAny=\"ZodAny\",t.ZodUnknown=\"ZodUnknown\",t.ZodNever=\"ZodNever\",t.ZodVoid=\"ZodVoid\",t.ZodArray=\"ZodArray\",t.ZodObject=\"ZodObject\",t.ZodUnion=\"ZodUnion\",t.ZodDiscriminatedUnion=\"ZodDiscriminatedUnion\",t.ZodIntersection=\"ZodIntersection\",t.ZodTuple=\"ZodTuple\",t.ZodRecord=\"ZodRecord\",t.ZodMap=\"ZodMap\",t.ZodSet=\"ZodSet\",t.ZodFunction=\"ZodFunction\",t.ZodLazy=\"ZodLazy\",t.ZodLiteral=\"ZodLiteral\",t.ZodEnum=\"ZodEnum\",t.ZodEffects=\"ZodEffects\",t.ZodNativeEnum=\"ZodNativeEnum\",t.ZodOptional=\"ZodOptional\",t.ZodNullable=\"ZodNullable\",t.ZodDefault=\"ZodDefault\",t.ZodCatch=\"ZodCatch\",t.ZodPromise=\"ZodPromise\",t.ZodBranded=\"ZodBranded\",t.ZodPipeline=\"ZodPipeline\",t.ZodReadonly=\"ZodReadonly\";e.instanceof=(t,e={message:\"Input not instance of \"+t.name})=>G(e=>e instanceof t,e);const _e=d.create,ye=(e.string=_e,p.create);e.number=ye;var r=fe.create,r=(e.nan=r,f.create);e.bigint=r;const Te=h.create;e.boolean=Te;r=T.create,e.date=r,r=re.create,e.symbol=r,r=v.create,e.undefined=r,r=b.create,e.null=r,r=E.create,e.any=r,r=S.create,e.unknown=r,r=A.create,e.never=r,r=ne.create,e.void=r,r=O.create,e.array=r,r=C.create,e.object=r,r=C.strictCreate,e.strictObject=r,r=ae.create,e.union=r,r=ie.create,e.discriminatedUnion=r,r=oe.create,e.intersection=r,r=k.create,e.tuple=r,r=se.create,e.record=r,r=le.create,e.map=r,r=I.create,e.set=r,r=R.create,e.function=r,r=ce.create,e.lazy=r,r=ue.create,e.literal=r,r=N.create,e.enum=r,r=M.create,e.nativeEnum=r,r=P.create,e.promise=r,r=D.create,e.effect=r,e.transformer=r,r=x.create,e.optional=r,r=L.create,e.nullable=r,r=D.createWithPreprocess,e.preprocess=r,r=me.create;e.pipeline=r,e.ostring=()=>_e().optional(),e.onumber=()=>ye().optional();e.oboolean=()=>Te().optional(),e.coerce={string:e=>d.create({...e,coerce:!0}),number:e=>p.create({...e,coerce:!0}),boolean:e=>h.create({...e,coerce:!0}),bigint:e=>f.create({...e,coerce:!0}),date:e=>T.create({...e,coerce:!0})},e.NEVER=m.INVALID}}return Ze}function ie(){var e,n,t;return re||(re=1,e=H,n=ve&&ve.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),t=ve&&ve.__exportStar||function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},Object.defineProperty(e,\"__esModule\",{value:!0}),t(ke(),e),t(Ie(),e),t((ee||(ee=1,Object.defineProperty(te,\"__esModule\",{value:!0})),te),e),t(Ce(),e),t(ae(),e),t(we(),e)),H}function Ne(){var e,n,a,t,r;return ne||(ne=1,e=B,n=ve&&ve.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),a=ve&&ve.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),t=ve&&ve.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)\"default\"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return a(t,e),t},r=ve&&ve.__exportStar||function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},Object.defineProperty(e,\"__esModule\",{value:!0}),e.z=void 0,t=t(ie()),e.z=t,r(ie(),e),e.default=t),B}var oe;var se,le,ce,ue={},de={exports:{}};function pe(){if(!le){le=1;var e,i=Object.defineProperty,L=Object.getOwnPropertyDescriptor,F=Object.getOwnPropertyNames,U=Object.prototype.hasOwnProperty,t={},B=t,r={Immer:()=>p,applyPatches:()=>z,castDraft:()=>function(e){return e},castImmutable:()=>function(e){return e},createDraft:()=>W,current:()=>ne,enableMapSet:()=>function(){class r extends Map{constructor(e,t){super(),this[l]={o:2,i:t,n:t?t.n:s,s:!1,c:!1,e:void 0,r:void 0,t:e,u:this,l:!1,m:!1}}get size(){return v(this[l]).size}has(e){return v(this[l]).has(e)}set(e,t){var r=this[l];return o(r),v(r).has(e)&&v(r).get(e)===t||(n(r),P(r),r.r.set(e,!0),r.e.set(e,t),r.r.set(e,!0)),this}delete(e){var t;return!!this.has(e)&&(o(t=this[l]),n(t),P(t),t.t.has(e)?t.r.set(e,!1):t.r.delete(e),t.e.delete(e),!0)}clear(){let t=this[l];o(t),v(t).size&&(n(t),P(t),t.r=new Map,A(t.t,e=>{t.r.set(e,!1)}),t.e.clear())}forEach(n,a){v(this[l]).forEach((e,t,r)=>{n.call(a,this.get(t),t,this)})}get(e){var t=this[l],r=(o(t),v(t).get(e));return t.c||!m(r)||r!==t.t.get(e)||(r=x(r,t),n(t),t.e.set(e,r)),r}keys(){return v(this[l]).keys()}values(){let t=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{var e=t.next();return e.done?e:{done:!1,value:this.get(e.value)}}}}entries(){let r=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{var e,t=r.next();return t.done?t:(e=this.get(t.value),{done:!1,value:[t.value,e]})}}}[Symbol.iterator](){return this.entries()}}function n(e){e.e||(e.r=new Map,e.e=new Map(e.t))}class a extends Set{constructor(e,t){super(),this[l]={o:3,i:t,n:t?t.n:s,s:!1,c:!1,e:void 0,t:e,u:this,a:new Map,m:!1,l:!1}}get size(){return v(this[l]).size}has(e){var t=this[l];return o(t),t.e?!!(t.e.has(e)||t.a.has(e)&&t.e.has(t.a.get(e))):t.t.has(e)}add(e){var t=this[l];return o(t),this.has(e)||(i(t),P(t),t.e.add(e)),this}delete(e){var t;return!!this.has(e)&&(o(t=this[l]),i(t),P(t),t.e.delete(e)||!!t.a.has(e)&&t.e.delete(t.a.get(e)))}clear(){var e=this[l];o(e),v(e).size&&(i(e),P(e),e.e.clear())}values(){var e=this[l];return o(e),i(e),e.e.values()}entries(){var e=this[l];return o(e),i(e),e.e.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(e,t){let r=this.values(),n=r.next();for(;!n.done;)e.call(t,n.value,n.value,this),n=r.next()}}function i(r){r.e||(r.e=new Set,r.t.forEach(e=>{var t;m(e)?(t=x(e,r),r.a.set(e,t),r.e.add(t)):r.e.add(e)}))}function o(e){e.m&&f(3,JSON.stringify(v(e)))}J(\"MapSet\",{I:function(e,t){return new r(e,t)},D:function(e,t){return new a(e,t)}})},enablePatches:()=>function(){let v=\"replace\",b=\"add\",E=\"remove\";function l(e){if(!m(e))return e;if(Array.isArray(e))return e.map(l);if(y(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,l(t)]));if(T(e))return new Set(Array.from(e).map(l));var t,r=Object.create(u(e));for(t in e)r[t]=l(e[t]);return O(e,n)&&(r[n]=e[n]),r}function S(e){return h(e)?l(e):e}J(\"Patches\",{A:function(s,e){return e.forEach(e=>{let{path:n,op:t}=e,a=s;for(let r=0;r<n.length-1;r++){let e=_(a),t=n[r];\"string\"!=typeof t&&\"number\"!=typeof t&&(t=\"\"+t),0!==e&&1!==e||\"__proto__\"!==t&&\"constructor\"!==t||f(19),\"function\"==typeof a&&\"prototype\"===t&&f(19),\"object\"!=typeof(a=C(a,t))&&f(18,n.join(\"/\"))}var r=_(a),i=l(e.value),o=n[n.length-1];switch(t){case v:switch(r){case 2:return a.set(o,i);case 3:f(16);default:return a[o]=i}case b:switch(r){case 1:return\"-\"===o?a.push(i):a.splice(o,0,i);case 2:return a.set(o,i);case 3:return a.add(i);default:return a[o]=i}case E:switch(r){case 1:return a.splice(o,1);case 2:return a.delete(o);case 3:return a.delete(e.value);default:return delete a[o]}default:f(17)}}),s},g:function(e,o,s,l){switch(e.o){case 0:case 2:{var c=e;var u=o;var d=s;var p=l;let{t:a,e:i}=c;A(c.r,(e,t)=>{var r=C(a,e),n=C(i,e),t=t?O(a,e)?v:b:E;r===n&&t===v||(e=u.concat(e),d.push(t===E?{op:t,path:e}:{op:t,path:e,value:n}),p.push(t===b?{op:E,path:e}:t===E?{op:b,path:e,value:S(r)}:{op:v,path:e,value:S(r)}))});return}case 1:{c=e;var a=o;var i=s;var f=l;let{t,r}=c,n=c.e;n.length<t.length&&([t,n]=[n,t],[i,f]=[f,i]);for(let e=0;e<t.length;e++){var h;r[e]&&n[e]!==t[e]&&(h=a.concat([e]),i.push({op:v,path:h,value:S(n[e])}),f.push({op:v,path:h,value:S(t[e])}))}for(let e=t.length;e<n.length;e++){var m=a.concat([e]);i.push({op:b,path:m,value:S(n[e])})}for(let e=n.length-1;t.length<=e;--e){var g=a.concat([e]);f.push({op:E,path:g})}return}case 3:{var t=e;var _=o;var y=s;var T=l;let{t:r,e:n}=t,a=0;r.forEach(e=>{var t;n.has(e)||(t=_.concat([a]),y.push({op:E,path:t,value:e}),T.unshift({op:b,path:t,value:e})),a++}),a=0,n.forEach(e=>{var t;r.has(e)||(t=_.concat([a]),y.push({op:b,path:t,value:e}),T.unshift({op:E,path:t,value:e})),a++});return}}},T:function(e,t,r,n){r.push({op:v,path:[],value:t===c?void 0:t}),n.push({op:v,path:[],value:e})}})},finishDraft:()=>$,freeze:()=>E,immerable:()=>n,isDraft:()=>h,isDraftable:()=>m,nothing:()=>c,original:()=>function(e){return h(e)||f(15),e[l].t},produce:()=>H,produceWithPatches:()=>G,setAutoFreeze:()=>V,setUseStrictShallowCopy:()=>q};for(e in r)i(B,e,{get:r[e],enumerable:!0});se=(e=>{var t=i({},\"__esModule\",{value:!0}),r=e,n=void 0,a=void 0;if(r&&\"object\"==typeof r||\"function\"==typeof r)for(let e of F(r))U.call(t,e)||e===n||i(t,e,{get:()=>r[e],enumerable:!(a=L(r,e))||a.enumerable});return t})(t);var s,c=Symbol.for(\"immer-nothing\"),n=Symbol.for(\"immer-draftable\"),l=Symbol.for(\"immer-state\"),u=Object.getPrototypeOf,j=Object.prototype.constructor.toString(),a={},o={get(e,t){var r,n;return t===l?e:O(r=v(e),t)?(n=r[t],!e.c&&m(n)&&n===M(e.t,t)?(D(e),e.e[t]=x(n,e)):n):(n=e,(e=re(e=r,t))?\"value\"in e?e.value:e.get?.call(n.u):void 0)},has(e,t){return t in v(e)},ownKeys(e){return Reflect.ownKeys(v(e))},set(e,t,r){var n=re(v(e),t);if(n?.set)n.set.call(e.u,r);else{if(!e.s){var n=M(v(e),t),a=n?.[l];if(a&&a.t===r)return e.e[t]=r,!(e.r[t]=!1);if(((a=r)===(n=n)?0!==a||1/a==1/n:a!=a&&n!=n)&&(void 0!==r||O(e.t,t)))return!0;D(e),P(e)}e.e[t]===r&&(void 0!==r||t in e.e)||Number.isNaN(r)&&Number.isNaN(e.e[t])||(e.e[t]=r,e.r[t]=!0)}return!0},deleteProperty(e,t){return void 0!==M(e.t,t)||t in e.t?(e.r[t]=!1,D(e),P(e)):delete e.r[t],e.e&&delete e.e[t],!0},getOwnPropertyDescriptor(e,t){var r=v(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:1!==e.o||\"length\"!==t,enumerable:n.enumerable,value:r[t]}},defineProperty(){f(11)},getPrototypeOf(e){return u(e.t)},setPrototypeOf(){f(12)}},d={},p=(A(o,(e,t)=>{d[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),d.deleteProperty=function(e,t){return d.set.call(this,e,t,void 0)},d.set=function(e,t,r){return o.set.call(this,e[0],t,r,e[0])},class{constructor(e){this.y=!0,this.S=!1,this.produce=(a,i,n)=>{if(\"function\"==typeof a&&\"function\"!=typeof i){let r=i,n=(i=a,this);return function(e=r,...t){return n.produce(e,e=>i.call(this,e,...t))}}\"function\"!=typeof i&&f(6),void 0!==n&&\"function\"!=typeof n&&f(7);let o;if(m(a)){let e=Z(this),t=x(a,void 0),r=!0;try{o=i(t),r=!1}finally{(r?k:I)(e)}return Q(e,n),ee(o,e)}var e,t;if(!a||\"object\"!=typeof a)return(o=void 0===(o=i(a))?a:o)===c&&(o=void 0),this.y&&E(o,!0),n&&(e=[],t=[],w(\"Patches\").T(a,o,e,t),n(e,t)),o;f(1)},this.produceWithPatches=(r,e)=>{if(\"function\"==typeof r)return(e,...t)=>this.produceWithPatches(e,e=>r(e,...t));let n,a;return[this.produce(r,e,(e,t)=>{n=e,a=t}),n,a]},\"boolean\"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),\"boolean\"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){m(e)||f(8),h(e)&&(e=ne(e));var t=Z(this),e=x(e,void 0);return e[l].l=!0,I(t),e}finishDraft(e,t){e=e&&e[l],e&&e.l||f(9),e=e.n;return Q(e,t),ee(void 0,e)}setAutoFreeze(e){this.y=e}setUseStrictShallowCopy(e){this.S=e}applyPatches(e,t){let r;for(r=t.length-1;0<=r;r--){var n=t[r];if(0===n.path.length&&\"replace\"===n.op){e=n.value;break}}-1<r&&(t=t.slice(r+1));let a=w(\"Patches\").A;return h(e)?a(e,t):this.produce(e,e=>a(e,t))}}),t=new p,H=t.produce,G=t.produceWithPatches.bind(t),V=t.setAutoFreeze.bind(t),q=t.setUseStrictShallowCopy.bind(t),z=t.applyPatches.bind(t),W=t.createDraft.bind(t),$=t.finishDraft.bind(t)}return se;function f(e){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}function h(e){return!!e&&!!e[l]}function m(e){return!!e&&(g(e)||Array.isArray(e)||!!e[n]||!!e.constructor?.[n]||y(e)||T(e))}function g(e){return!(!e||\"object\"!=typeof e)&&(null===(e=u(e))||(e=Object.hasOwnProperty.call(e,\"constructor\")&&e.constructor)===Object||\"function\"==typeof e&&Function.toString.call(e)===j)}function A(r,n){0===_(r)?Reflect.ownKeys(r).forEach(e=>{n(e,r[e],r)}):r.forEach((e,t)=>n(t,e,r))}function _(e){var t=e[l];return t?t.o:Array.isArray(e)?1:y(e)?2:T(e)?3:0}function O(e,t){return 2===_(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function C(e,t){return 2===_(e)?e.get(t):e[t]}function K(e,t,r){var n=_(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function y(e){return e instanceof Map}function T(e){return e instanceof Set}function v(e){return e.e||e.t}function b(t,e){if(y(t))return new Map(t);if(T(t))return new Set(t);if(Array.isArray(t))return Array.prototype.slice.call(t);var r=g(t);if(!0===e||\"class_only\"===e&&!r){var n=Object.getOwnPropertyDescriptors(t),a=(delete n[l],Reflect.ownKeys(n));for(let e=0;e<a.length;e++){var i=a[e],o=n[i];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(n[i]={configurable:!0,writable:!0,enumerable:o.enumerable,value:t[i]})}return Object.create(u(t),n)}return null!==(e=u(t))&&r?{...t}:(r=Object.create(e),Object.assign(r,t))}function E(e,t=!1){return S(e)||h(e)||!m(e)||(1<_(e)&&(e.set=e.add=e.clear=e.delete=Y),Object.freeze(e),t&&Object.entries(e).forEach(([,e])=>E(e,!0))),e}function Y(){f(2)}function S(e){return Object.isFrozen(e)}function w(e){e=a[e];return e||f(0),e}function J(e,t){a[e]||(a[e]=t)}function Q(e,t){t&&(w(\"Patches\"),e.f=[],e.h=[],e.b=t)}function k(e){I(e),e.a.forEach(X),e.a=null}function I(e){e===s&&(s=e.i)}function Z(e){return s={a:[],i:s,p:e,P:!0,d:0}}function X(e){e=e[l];0===e.o||1===e.o?e.x():e.m=!0}function ee(e,t){t.d=t.a.length;var r=t.a[0];return void 0!==e&&e!==r?(r[l].s&&(k(t),f(4)),m(e)&&(e=R(t,e),t.i||N(t,e)),t.f&&w(\"Patches\").T(r[l].t,e,t.f,t.h)):e=R(t,r,[]),k(t),t.f&&t.b(t.f,t.h),e!==c?e:void 0}function R(a,r,i){if(S(r))return r;let o=r[l];if(!o)return A(r,(e,t)=>te(a,o,r,e,t,i)),r;if(o.n!==a)return r;if(!o.s)return N(a,o.t,!0),o.t;if(!o.c){o.c=!0,o.n.d--;let r=o.e,e=r,n=!1;3===o.o&&(e=new Set(r),r.clear(),n=!0),A(e,(e,t)=>te(a,o,r,e,t,i,n)),N(a,r,!1),i&&a.f&&w(\"Patches\").g(o,i,a.f,a.h)}return o.e}function te(e,t,r,n,a,i,o){if(h(a)){i=R(e,a,i&&t&&3!==t.o&&!O(t.r,n)?i.concat(n):void 0);if(K(r,n,i),!h(i))return;e.P=!1}else o&&r.add(a);!m(a)||S(a)||!e.p.y&&e.d<1||(R(e,a),t&&t.n.i)||\"symbol\"==typeof n||!Object.prototype.propertyIsEnumerable.call(r,n)||N(e,a)}function N(e,t,r=!1){!e.i&&e.p.y&&e.P&&E(t,r)}function M(e,t){var r=e[l];return(r?v(r):e)[t]}function re(t,r){if(r in t){let e=u(t);for(;e;){var n=Object.getOwnPropertyDescriptor(e,r);if(n)return n;e=u(e)}}}function P(e){e.s||(e.s=!0,e.i&&P(e.i))}function D(e){e.e||(e.e=b(e.t,e.n.p.S))}function x(e,t){e=y(e)?w(\"MapSet\").I(e,t):T(e)?w(\"MapSet\").D(e,t):function(e,t){let r=Array.isArray(e),n={o:r?1:0,n:t?t.n:s,s:!1,c:!1,r:{},i:t,t:e,u:null,e:null,x:null,l:!1},a=n,i=o;r&&(a=[n],i=d);var{revoke:t,proxy:e}=Proxy.revocable(a,i);return n.u=e,n.x=t,e}(e,t);return(t?t.n:s).a.push(e),e}function ne(e){return h(e)||f(10),function r(e){if(!m(e)||S(e))return e;let t=e[l],n;if(t){if(!t.s)return t.t;t.c=!0,n=b(e,t.n.p.S)}else n=b(e,!0);return A(n,(e,t)=>{K(n,e,r(t))}),t&&(t.c=!1),n}(e)}}function fe(){return ce||(ce=1,de.exports=pe()),de.exports}var he,me,ge={},_e={};function ye(){return me||(me=1,he=function(e,t){var r=new Array(arguments.length-1),i=0,n=2,o=!0;for(;n<arguments.length;)r[i++]=arguments[n++];return new Promise(function(n,a){r[i]=function(e){if(o)if(o=!1,e)a(e);else{for(var t=new Array(arguments.length-1),r=0;r<t.length;)t[r++]=arguments[r];n.apply(null,t)}};try{e.apply(t||null,r)}catch(e){o&&(o=!1,a(e))}})}),he}var Te,et,tt,rt,nt,at,it,ot={};function st(){if(!Te){Te=1;for(var e=ot,c=(e.length=function(e){var t=e.length;if(!t)return 0;for(var r=0;1<--t%4&&\"=\"===e.charAt(t);)++r;return Math.ceil(3*e.length)/4-r},new Array(64)),l=new Array(123),t=0;t<64;)l[c[t]=t<26?t+65:t<52?t+71:t<62?t-4:t-59|43]=t++;e.encode=function(e,t,r){for(var n,a=null,i=[],o=0,s=0;t<r;){var l=e[t++];switch(s){case 0:i[o++]=c[l>>2],n=(3&l)<<4,s=1;break;case 1:i[o++]=c[n|l>>4],n=(15&l)<<2,s=2;break;case 2:i[o++]=c[n|l>>6],i[o++]=c[63&l],s=0}8191<o&&((a=a||[]).push(String.fromCharCode.apply(String,i)),o=0)}return s&&(i[o++]=c[n],i[o++]=61,1===s)&&(i[o++]=61),a?(o&&a.push(String.fromCharCode.apply(String,i.slice(0,o))),a.join(\"\")):String.fromCharCode.apply(String,i.slice(0,o))};var u=\"invalid encoding\";e.decode=function(e,t,r){for(var n,a=r,i=0,o=0;o<e.length;){var s=e.charCodeAt(o++);if(61===s&&1<i)break;if(void 0===(s=l[s]))throw Error(u);switch(i){case 0:n=s,i=1;break;case 1:t[r++]=n<<2|(48&s)>>4,n=s,i=2;break;case 2:t[r++]=(15&n)<<4|(60&s)>>2,n=s,i=3;break;case 3:t[r++]=(3&n)<<6|s,i=0}}if(1===i)throw Error(u);return r-a},e.test=function(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}}return ot}function lt(){return nt||(nt=1,rt=e(e)),rt;function e(e){function t(e,t,r,n){var a=t<0?1:0;0===(t=a?-t:t)?e(0<1/t?0:2147483648,r,n):isNaN(t)?e(2143289344,r,n):e(34028234663852886e22<t?(a<<31|2139095040)>>>0:t<11754943508222875e-54?(a<<31|Math.round(t/1401298464324817e-60))>>>0:(a<<31|(e=Math.floor(Math.log(t)/Math.LN2))+127<<23|8388607&Math.round(t*Math.pow(2,-e)*8388608))>>>0,r,n)}function r(e,t,r){e=e(t,r),t=2*(e>>31)+1,r=e>>>23&255,e&=8388607;return 255==r?e?NaN:1/0*t:0==r?1401298464324817e-60*t*e:t*Math.pow(2,r-150)*(8388608+e)}function n(e,t,r){s[0]=e,t[r]=l[0],t[r+1]=l[1],t[r+2]=l[2],t[r+3]=l[3]}function a(e,t,r){s[0]=e,t[r]=l[3],t[r+1]=l[2],t[r+2]=l[1],t[r+3]=l[0]}function i(e,t){return l[0]=e[t],l[1]=e[t+1],l[2]=e[t+2],l[3]=e[t+3],s[0]}function o(e,t){return l[3]=e[t],l[2]=e[t+1],l[1]=e[t+2],l[0]=e[t+3],s[0]}var s,l,c,u,d;function p(e,t,r,n,a,i){var o,s,l=n<0?1:0;0===(n=l?-n:n)?(e(0,a,i+t),e(0<1/n?0:2147483648,a,i+r)):isNaN(n)?(e(0,a,i+t),e(2146959360,a,i+r)):17976931348623157e292<n?(e(0,a,i+t),e((l<<31|2146435072)>>>0,a,i+r)):n<22250738585072014e-324?(e((o=n/5e-324)>>>0,a,i+t),e((l<<31|o/4294967296)>>>0,a,i+r)):(1024===(s=Math.floor(Math.log(n)/Math.LN2))&&(s=1023),e(4503599627370496*(o=n*Math.pow(2,-s))>>>0,a,i+t),e((l<<31|s+1023<<20|1048576*o&1048575)>>>0,a,i+r))}function f(e,t,r,n,a){t=e(n,a+t),e=e(n,a+r),n=2*(e>>31)+1,a=e>>>20&2047,r=4294967296*(1048575&e)+t;return 2047==a?r?NaN:1/0*n:0==a?5e-324*n*r:n*Math.pow(2,a-1075)*(r+4503599627370496)}function h(e,t,r){c[0]=e,t[r]=u[0],t[r+1]=u[1],t[r+2]=u[2],t[r+3]=u[3],t[r+4]=u[4],t[r+5]=u[5],t[r+6]=u[6],t[r+7]=u[7]}function m(e,t,r){c[0]=e,t[r]=u[7],t[r+1]=u[6],t[r+2]=u[5],t[r+3]=u[4],t[r+4]=u[3],t[r+5]=u[2],t[r+6]=u[1],t[r+7]=u[0]}function g(e,t){return u[0]=e[t],u[1]=e[t+1],u[2]=e[t+2],u[3]=e[t+3],u[4]=e[t+4],u[5]=e[t+5],u[6]=e[t+6],u[7]=e[t+7],c[0]}function _(e,t){return u[7]=e[t],u[6]=e[t+1],u[5]=e[t+2],u[4]=e[t+3],u[3]=e[t+4],u[2]=e[t+5],u[1]=e[t+6],u[0]=e[t+7],c[0]}return\"undefined\"!=typeof Float32Array?(s=new Float32Array([-0]),l=new Uint8Array(s.buffer),d=128===l[3],e.writeFloatLE=d?n:a,e.writeFloatBE=d?a:n,e.readFloatLE=d?i:o,e.readFloatBE=d?o:i):(e.writeFloatLE=t.bind(null,y),e.writeFloatBE=t.bind(null,T),e.readFloatLE=r.bind(null,v),e.readFloatBE=r.bind(null,b)),\"undefined\"!=typeof Float64Array?(c=new Float64Array([-0]),u=new Uint8Array(c.buffer),d=128===u[7],e.writeDoubleLE=d?h:m,e.writeDoubleBE=d?m:h,e.readDoubleLE=d?g:_,e.readDoubleBE=d?_:g):(e.writeDoubleLE=p.bind(null,y,0,4),e.writeDoubleBE=p.bind(null,T,4,0),e.readDoubleLE=f.bind(null,v,0,4),e.readDoubleBE=f.bind(null,b,4,0)),e}function y(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}function T(e,t,r){t[r]=e>>>24,t[r+1]=e>>>16&255,t[r+2]=e>>>8&255,t[r+3]=255&e}function v(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function b(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}}var ct,ut,dt,pt,ft,ht,mt,gt,_t,yt,Tt,vt,bt,Et,St={};function At(){return dt||(dt=1,ut=function(t,r,e){var n=e||8192,a=n>>>1,i=null,o=n;return function(e){if(e<1||a<e)return t(e);n<o+e&&(i=t(n),o=0);e=r.call(i,o,o+=e);return 7&o&&(o=1+(7|o)),e}}),ut}function Ot(){var e,t,n,r,a;return ht||(ht=1,(a=_e).asPromise=ye(),a.base64=st(),a.EventEmitter=(tt||(tt=1,(et=i).prototype.on=function(e,t,r){return(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:r||this}),this},i.prototype.off=function(e,t){if(void 0===e)this._listeners={};else if(void 0===t)this._listeners[e]=[];else for(var r=this._listeners[e],n=0;n<r.length;)r[n].fn===t?r.splice(n,1):++n;return this},i.prototype.emit=function(e){var t=this._listeners[e];if(t){for(var r=[],n=1;n<arguments.length;)r.push(arguments[n++]);for(n=0;n<t.length;)t[n].fn.apply(t[n++].ctx,r)}return this}),et),a.float=lt(),a.inquire=(it||(it=1,at=function(e){try{}catch(e){}return null}),at),a.utf8=(ct||(ct=1,(e=St).length=function(e){for(var t,r=0,n=0;n<e.length;++n)(t=e.charCodeAt(n))<128?r+=1:t<2048?r+=2:55296==(64512&t)&&56320==(64512&e.charCodeAt(n+1))?(++n,r+=4):r+=3;return r},e.read=function(e,t,r){if(r-t<1)return\"\";for(var n,a=null,i=[],o=0;t<r;)(n=e[t++])<128?i[o++]=n:191<n&&n<224?i[o++]=(31&n)<<6|63&e[t++]:239<n&&n<365?(n=((7&n)<<18|(63&e[t++])<<12|(63&e[t++])<<6|63&e[t++])-65536,i[o++]=55296+(n>>10),i[o++]=56320+(1023&n)):i[o++]=(15&n)<<12|(63&e[t++])<<6|63&e[t++],8191<o&&((a=a||[]).push(String.fromCharCode.apply(String,i)),o=0);return a?(o&&a.push(String.fromCharCode.apply(String,i.slice(0,o))),a.join(\"\")):String.fromCharCode.apply(String,i.slice(0,o))},e.write=function(e,t,r){for(var n,a,i=r,o=0;o<e.length;++o)(n=e.charCodeAt(o))<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(55296==(64512&n)&&56320==(64512&(a=e.charCodeAt(o+1)))?(++o,t[r++]=(n=65536+((1023&n)<<10)+(1023&a))>>18|240,t[r++]=n>>12&63|128):t[r++]=n>>12|224,t[r++]=n>>6&63|128),t[r++]=63&n|128);return r-i}),St),a.pool=At(),a.LongBits=(ft||(ft=1,pt=o,t=Ot(),(n=o.zero=new o(0,0)).toNumber=function(){return 0},n.zzEncode=n.zzDecode=function(){return this},n.length=function(){return 1},o.zeroHash=\"\\0\\0\\0\\0\\0\\0\\0\\0\",o.fromNumber=function(e){var t,r;return 0===e?n:(r=(e=(t=e<0)?-e:e)>>>0,e=(e-r)/4294967296>>>0,t&&(e=~e>>>0,r=~r>>>0,4294967295<++r)&&(r=0,4294967295<++e)&&(e=0),new o(r,e))},o.from=function(e){if(\"number\"==typeof e)return o.fromNumber(e);if(t.isString(e)){if(!t.Long)return o.fromNumber(parseInt(e,10));e=t.Long.fromString(e)}return e.low||e.high?new o(e.low>>>0,e.high>>>0):n},o.prototype.toNumber=function(e){var t;return!e&&this.hi>>>31?(e=1+~this.lo>>>0,t=~this.hi>>>0,-(e+4294967296*(t=e?t:t+1>>>0))):this.lo+4294967296*this.hi},o.prototype.toLong=function(e){return t.Long?new t.Long(0|this.lo,0|this.hi,Boolean(e)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(e)}},r=String.prototype.charCodeAt,o.fromHash=function(e){return\"\\0\\0\\0\\0\\0\\0\\0\\0\"===e?n:new o((r.call(e,0)|r.call(e,1)<<8|r.call(e,2)<<16|r.call(e,3)<<24)>>>0,(r.call(e,4)|r.call(e,5)<<8|r.call(e,6)<<16|r.call(e,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this},o.prototype.zzDecode=function(){var e=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this},o.prototype.length=function(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return 0==r?0==t?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:r<128?9:10}),pt),a.isNode=Boolean(void 0!==ve&&ve&&ve.process&&ve.process.versions&&ve.process.versions.node),a.global=a.isNode&&ve||\"undefined\"!=typeof window&&window||\"undefined\"!=typeof self&&self||ve,a.emptyArray=Object.freeze?Object.freeze([]):[],a.emptyObject=Object.freeze?Object.freeze({}):{},a.isInteger=Number.isInteger||function(e){return\"number\"==typeof e&&isFinite(e)&&Math.floor(e)===e},a.isString=function(e){return\"string\"==typeof e||e instanceof String},a.isObject=function(e){return e&&\"object\"==typeof e},a.isset=a.isSet=function(e,t){var r=e[t];return!(null==r||!e.hasOwnProperty(t))&&(\"object\"!=typeof r||0<(Array.isArray(r)?r:Object.keys(r)).length)},a.Buffer=function(){try{var e=a.inquire(\"buffer\").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}(),a._Buffer_from=null,a._Buffer_allocUnsafe=null,a.newBuffer=function(e){return\"number\"==typeof e?a.Buffer?a._Buffer_allocUnsafe(e):new a.Array(e):a.Buffer?a._Buffer_from(e):\"undefined\"==typeof Uint8Array?e:new Uint8Array(e)},a.Array=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,a.Long=a.global.dcodeIO&&a.global.dcodeIO.Long||a.global.Long||a.inquire(\"long\"),a.key2Re=/^true|false|0|1$/,a.key32Re=/^-?(?:0|[1-9][0-9]*)$/,a.key64Re=/^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,a.longToHash=function(e){return e?a.LongBits.from(e).toHash():a.LongBits.zeroHash},a.longFromHash=function(e,t){e=a.LongBits.fromHash(e);return a.Long?a.Long.fromBits(e.lo,e.hi,t):e.toNumber(Boolean(t))},a.merge=s,a.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},a.newError=l,a.ProtocolError=l(\"ProtocolError\"),a.oneOfGetter=function(e){for(var r={},t=0;t<e.length;++t)r[e[t]]=1;return function(){for(var e=Object.keys(this),t=e.length-1;-1<t;--t)if(1===r[e[t]]&&void 0!==this[e[t]]&&null!==this[e[t]])return e[t]}},a.oneOfSetter=function(r){return function(e){for(var t=0;t<r.length;++t)r[t]!==e&&delete this[r[t]]}},a.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},a._configure=function(){var r=a.Buffer;r?(a._Buffer_from=r.from!==Uint8Array.from&&r.from||function(e,t){return new r(e,t)},a._Buffer_allocUnsafe=r.allocUnsafe||function(e){return new r(e)}):a._Buffer_from=a._Buffer_allocUnsafe=null}),_e;function i(){this._listeners={}}function o(e,t){this.lo=e>>>0,this.hi=t>>>0}function s(e,t,r){for(var n=Object.keys(t),a=0;a<n.length;++a)void 0!==e[n[a]]&&r||(e[n[a]]=t[n[a]]);return e}function l(e){function r(e,t){if(!(this instanceof r))return new r(e,t);Object.defineProperty(this,\"message\",{get:function(){return e}}),Error.captureStackTrace?Error.captureStackTrace(this,r):Object.defineProperty(this,\"stack\",{value:(new Error).stack||\"\"}),t&&s(this,t)}return r.prototype=Object.create(Error.prototype,{constructor:{value:r,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return e},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+\": \"+this.message},writable:!0,enumerable:!1,configurable:!0}}),r}}function Ct(){var n,t,r,a,i,o,s;return gt||(gt=1,mt=u,n=Ot(),r=n.LongBits,a=n.base64,i=n.utf8,u.create=(o=function(){return n.Buffer?function(){return(u.create=function(){return new t})()}:function(){return new u}})(),u.alloc=function(e){return new n.Array(e)},n.Array!==Array&&(u.alloc=n.pool(u.alloc,n.Array.prototype.subarray)),u.prototype._push=function(e,t,r){return this.tail=this.tail.next=new l(e,t,r),this.len+=t,this},(p.prototype=Object.create(l.prototype)).fn=function(e,t,r){for(;127<e;)t[r++]=127&e|128,e>>>=7;t[r]=e},u.prototype.uint32=function(e){return this.len+=(this.tail=this.tail.next=new p((e>>>=0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this},u.prototype.int32=function(e){return e<0?this._push(f,10,r.fromNumber(e)):this.uint32(e)},u.prototype.sint32=function(e){return this.uint32((e<<1^e>>31)>>>0)},u.prototype.int64=u.prototype.uint64=function(e){e=r.from(e);return this._push(f,e.length(),e)},u.prototype.sint64=function(e){e=r.from(e).zzEncode();return this._push(f,e.length(),e)},u.prototype.bool=function(e){return this._push(d,1,e?1:0)},u.prototype.sfixed32=u.prototype.fixed32=function(e){return this._push(h,4,e>>>0)},u.prototype.sfixed64=u.prototype.fixed64=function(e){e=r.from(e);return this._push(h,4,e.lo)._push(h,4,e.hi)},u.prototype.float=function(e){return this._push(n.float.writeFloatLE,4,e)},u.prototype.double=function(e){return this._push(n.float.writeDoubleLE,8,e)},s=n.Array.prototype.set?function(e,t,r){t.set(e,r)}:function(e,t,r){for(var n=0;n<e.length;++n)t[r+n]=e[n]},u.prototype.bytes=function(e){var t,r=e.length>>>0;return r?(n.isString(e)&&(t=u.alloc(r=a.length(e)),a.decode(e,t,0),e=t),this.uint32(r)._push(s,r,e)):this._push(d,1,0)},u.prototype.string=function(e){var t=i.length(e);return t?this.uint32(t)._push(i.write,t,e):this._push(d,1,0)},u.prototype.fork=function(){return this.states=new c(this),this.head=this.tail=new l(e,0,0),this.len=0,this},u.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new l(e,0,0),this.len=0),this},u.prototype.ldelim=function(){var e=this.head,t=this.tail,r=this.len;return this.reset().uint32(r),r&&(this.tail.next=e.next,this.tail=t,this.len+=r),this},u.prototype.finish=function(){for(var e=this.head.next,t=this.constructor.alloc(this.len),r=0;e;)e.fn(e.val,t,r),r+=e.len,e=e.next;return t},u._configure=function(e){t=e,u.create=o(),t._configure()}),mt;function l(e,t,r){this.fn=e,this.len=t,this.next=void 0,this.val=r}function e(){}function c(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}function u(){this.len=0,this.head=new l(e,0,0),this.tail=this.head,this.states=null}function d(e,t,r){t[r]=255&e}function p(e,t){this.len=e,this.next=void 0,this.val=t}function f(e,t,r){for(;e.hi;)t[r++]=127&e.lo|128,e.lo=(e.lo>>>7|e.hi<<25)>>>0,e.hi>>>=7;for(;127<e.lo;)t[r++]=127&e.lo|128,e.lo=e.lo>>>7;t[r++]=e.lo}function h(e,t,r){t[r]=255&e,t[r+1]=e>>>8&255,t[r+2]=e>>>16&255,t[r+3]=e>>>24}}function wt(){var n,r,a,t,i,o,e;return vt||(vt=1,Tt=l,n=Ot(),a=n.LongBits,t=n.utf8,i=\"undefined\"!=typeof Uint8Array?function(e){if(e instanceof Uint8Array||Array.isArray(e))return new l(e);throw Error(\"illegal buffer\")}:function(e){if(Array.isArray(e))return new l(e);throw Error(\"illegal buffer\")},l.create=(o=function(){return n.Buffer?function(e){return(l.create=function(e){return n.Buffer.isBuffer(e)?new r(e):i(e)})(e)}:i})(),l.prototype._slice=n.Array.prototype.subarray||n.Array.prototype.slice,l.prototype.uint32=(e=4294967295,function(){if(e=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128||(e=(e|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)||!((this.pos+=5)>this.len))return e;throw this.pos=this.len,s(this,10)}),l.prototype.int32=function(){return 0|this.uint32()},l.prototype.sint32=function(){var e=this.uint32();return e>>>1^-(1&e)|0},l.prototype.bool=function(){return 0!==this.uint32()},l.prototype.fixed32=function(){if(this.pos+4>this.len)throw s(this,4);return u(this.buf,this.pos+=4)},l.prototype.sfixed32=function(){if(this.pos+4>this.len)throw s(this,4);return 0|u(this.buf,this.pos+=4)},l.prototype.float=function(){if(this.pos+4>this.len)throw s(this,4);var e=n.float.readFloatLE(this.buf,this.pos);return this.pos+=4,e},l.prototype.double=function(){if(this.pos+8>this.len)throw s(this,4);var e=n.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,e},l.prototype.bytes=function(){var e=this.uint32(),t=this.pos,r=this.pos+e;if(r>this.len)throw s(this,e);return this.pos+=e,Array.isArray(this.buf)?this.buf.slice(t,r):t===r?(e=n.Buffer)?e.alloc(0):new this.buf.constructor(0):this._slice.call(this.buf,t,r)},l.prototype.string=function(){var e=this.bytes();return t.read(e,0,e.length)},l.prototype.skip=function(e){if(\"number\"==typeof e){if(this.pos+e>this.len)throw s(this,e);this.pos+=e}else do{if(this.pos>=this.len)throw s(this)}while(128&this.buf[this.pos++]);return this},l.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(e=7&this.uint32());)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(\"invalid wire type \"+e+\" at offset \"+this.pos)}return this},l._configure=function(e){r=e,l.create=o(),r._configure();var t=n.Long?\"toLong\":\"toNumber\";n.merge(l.prototype,{int64:function(){return c.call(this)[t](!1)},uint64:function(){return c.call(this)[t](!0)},sint64:function(){return c.call(this).zzDecode()[t](!1)},fixed64:function(){return d.call(this)[t](!0)},sfixed64:function(){return d.call(this)[t](!1)}})}),Tt;function s(e,t){return RangeError(\"index out of range: \"+e.pos+\" + \"+(t||1)+\" > \"+e.len)}function l(e){this.buf=e,this.pos=0,this.len=e.length}function c(){var e=new a(0,0),t=0;if(!(4<this.len-this.pos)){for(;t<3;++t){if(this.pos>=this.len)throw s(this);if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(127&this.buf[this.pos++])<<7*t)>>>0,e}for(;t<4;++t)if(e.lo=(e.lo|(127&this.buf[this.pos])<<7*t)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(127&this.buf[this.pos])<<28)>>>0,e.hi=(e.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return e;if(t=0,4<this.len-this.pos){for(;t<5;++t)if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw s(this);if(e.hi=(e.hi|(127&this.buf[this.pos])<<7*t+3)>>>0,this.buf[this.pos++]<128)return e}throw Error(\"invalid varint encoding\")}function u(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}function d(){if(this.pos+8>this.len)throw s(this,8);return new a(u(this.buf,this.pos+=4),u(this.buf,this.pos+=4))}}var kt,It,Rt,Nt,Pt,Dt,xt,Lt,Ft,Ut={};function Bt(){var s;return Rt||(Rt=1,Ut.Service=(It||(It=1,kt=e,s=Ot(),((e.prototype=Object.create(s.EventEmitter.prototype)).constructor=e).prototype.rpcCall=function e(r,t,n,a,i){if(!a)throw TypeError(\"request must be specified\");var o=this;if(!i)return s.asPromise(e,o,r,t,n,a);if(o.rpcImpl)try{return o.rpcImpl(r,t[o.requestDelimited?\"encodeDelimited\":\"encode\"](a).finish(),function(e,t){if(e)return o.emit(\"error\",e,r),i(e);if(null!==t){if(!(t instanceof n))try{t=n[o.responseDelimited?\"decodeDelimited\":\"decode\"](t)}catch(e){return o.emit(\"error\",e,r),i(e)}return o.emit(\"data\",t,r),i(null,t)}o.end(!0)})}catch(e){o.emit(\"error\",e,r),setTimeout(function(){i(e)},0)}else setTimeout(function(){i(Error(\"already ended\"))},0)},e.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit(\"end\").off()),this}),kt)),Ut;function e(e,t,r){if(\"function\"!=typeof e)throw TypeError(\"rpcImpl must be a function\");s.EventEmitter.call(this),this.rpcImpl=e,this.requestDelimited=Boolean(t),this.responseDelimited=Boolean(r)}}function jt(){var e,n,t,r,a;return Dt||(Dt=1,(a=ge).build=\"minimal\",a.Writer=Ct(),a.BufferWriter=(yt||(yt=1,_t=i,e=Ct(),(i.prototype=Object.create(e.prototype)).constructor=i,n=Ot(),i._configure=function(){i.alloc=n._Buffer_allocUnsafe,i.writeBytesBuffer=n.Buffer&&n.Buffer.prototype instanceof Uint8Array&&\"set\"===n.Buffer.prototype.set.name?function(e,t,r){t.set(e,r)}:function(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n<e.length;)t[r++]=e[n++]}},i.prototype.bytes=function(e){var t=(e=n.isString(e)?n._Buffer_from(e,\"base64\"):e).length>>>0;return this.uint32(t),t&&this._push(i.writeBytesBuffer,t,e),this},i.prototype.string=function(e){var t=n.Buffer.byteLength(e);return this.uint32(t),t&&this._push(o,t,e),this},i._configure()),_t),a.Reader=wt(),a.BufferReader=(Et||(Et=1,bt=s,t=wt(),(s.prototype=Object.create(t.prototype)).constructor=s,r=Ot(),s._configure=function(){r.Buffer&&(s.prototype._slice=r.Buffer.prototype.slice)},s.prototype.string=function(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString(\"utf-8\",this.pos,this.pos=Math.min(this.pos+e,this.len))},s._configure()),bt),a.util=Ot(),a.rpc=Bt(),a.roots=(Pt||(Pt=1,Nt={}),Nt),a.configure=l,l()),ge;function i(){e.call(this)}function o(e,t,r){e.length<40?n.utf8.write(e,t,r):t.utf8Write?t.utf8Write(e,r):t.write(e,r)}function s(e){t.call(this,e)}function l(){a.util._configure(),a.Writer._configure(a.BufferWriter),a.Reader._configure(a.BufferReader)}}function Qr(){return Lt||(Lt=1,xt=jt()),xt}function Ht(){if(!Ft){Ft=1,Object.defineProperty(ue,\"__esModule\",{value:!0});var t=Jr;const r=fe(),n=t.__importDefault(Qr());let e=!1;if(e)throw new Error(\"initialize() should be called exactly once\");(0,r.enablePatches)(),(0,r.enableMapSet)(),(0,r.setAutoFreeze)(!0),n.default.util.Long=void 0,n.default.configure(),e=!0}}var Gt,Vt={},qt={},zt={},Wt={},$t={},Kt={};function Yt(){return Gt||(Gt=1,Object.defineProperty(Kt,\"__esModule\",{value:!0}),Kt.SCM_REVISION=Kt.VERSION=void 0,Kt.VERSION=\"v52.0-6b9586def\",Kt.SCM_REVISION=\"6b9586defccdef92d77b32e1338db72c8e5d5e7c\"),Kt}var Jt,Qt,Zt,Xt={};function Me(){return Jt||(Jt=1,Object.defineProperty(Xt,\"__esModule\",{value:!0}),Xt.exists=function(e){return null!=e},Xt.escapeCSSSelector=function(e){return e.replace(/([!\"#$%&'()*+,.\\/:;<=>?@[\\\\\\]^`{|}~])/g,\"\\\\$1\")},Xt.getOrCreate=function(e,t,r){var n=e.get(t);return void 0===n&&(n=r(),e.set(t,n)),n},Xt.createProxy=function(e,a){return new Proxy(e,{get:(e,t,r)=>{var n=a[t];return void 0!==n?\"function\"==typeof n?n.bind(a):n:\"function\"==typeof(n=Reflect.get(e,t,r))?n.bind(e):n}})}),Xt}function Pe(){if(!Qt){Qt=1,Object.defineProperty($t,\"__esModule\",{value:!0}),$t.assertExists=function(e,t){if(null!=e)return e;throw new Error(t??\"Value doesn't exist\")},$t.assertDefined=function(e){if(void 0===e)throw new Error(\"Value is undefined\");return e},$t.assertIsInstance=function(e,t,r){return n(e instanceof t,r??\"Value is not an instance of \"+t.name),e},$t.assertTrue=n,$t.assertFalse=function(e,t){n(!e,t)},$t.assertUnreachable=function(e,t){throw new Error(t??\"This code should not be reachable \"+e)},$t.addErrorHandler=function(e){p.includes(e)||p.push(e)},$t.reportError=function(t){let r=void 0,n=\"\",e;var a=[],i=location.protocol+\"//\"+location.host;t instanceof ErrorEvent?(e=\"ERROR\",r=null===t.error||void 0===t.error?(s=(\"\"+t.message).split(\"\\n\"),n=s[0],{stack:s.slice(1).join(\"\\n\")}):(n=\"\"+t.error,t.error)):t instanceof PromiseRejectionEvent?(e=\"PROMISE_REJ\",n=\"\"+t.reason,r=t.reason):(e=\"OTHER\",n=\"\"+t);if(n=(n=(n=n.replace(/^Uncaught Error:/,\"\")).replace(/^Error:/,\"\")).trim(),void 0!==r&&null!==r){var o,s=r.stack;let e=void 0!==s?\"\"+s:\"\";for(o of(e=e.replaceAll(/\\r/g,\"\")).split(\"\\n\"))if(!n.includes(o)){var l=(o=(o=o.replace(/^\\s*at\\s*/,\"\")).replace(/\\s*\\(([^)]+)\\)$/,\"@$1\")).lastIndexOf(\"@\");let e=\"\",t=\"\";0<=l?(t=o.substring(l+1),e=o.substring(0,l)):t=o,t.includes(i)&&(t=(t=t.replace(i,\"\")).replace(`/${u.VERSION}/`,\"\")),a.push({name:e,location:t})}t=a.find(e=>e.name.includes(\"perfetto::\"))?.name;n.includes(\"RuntimeError\")&&(0,d.exists)(t)&&(n+=\" @ \"+t.trim())}for(const c of p)c({errType:e,message:n,stack:a})};const u=Yt(),d=Me(),p=[];function n(e,t){if(!e)throw new Error(t??\"Failed assertion\")}}return $t}function j(){if(!Zt){Zt=1,Object.defineProperty(Wt,\"__esModule\",{value:!0}),Wt.base64Encode=function(e){return(0,n.encode)(e,0,e.length)},Wt.base64Decode=function(e){var e=e.replaceAll(\"-\",\"+\").replaceAll(\"_\",\"/\"),t=new Uint8Array((0,n.length)(e)),e=(0,n.decode)(e,t,0);return(0,a.assertTrue)(e===t.length),t},Wt.hexEncode=function(e){return e.reduce((e,t)=>e+(\"0\"+t.toString(16)).slice(-2),\"\")},Wt.utf8Encode=function(e){return(r=r??new TextEncoder).encode(e)},Wt.utf8Decode=function(e){return(t=t??new TextDecoder).decode(e)},Wt.binaryEncode=function(t){let r=\"\";for(let e=0;e<t.length;e++)r+=String.fromCharCode(t[e]);return r},Wt.binaryDecode=function(t){var r=new Uint8Array(t.length),n=t.length;for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r},Wt.sqliteString=function(e){return`'${e.replaceAll(\"'\",\"''\")}'`},Wt.sqlNameSafe=function(e){return e.replace(/[^a-zA-Z0-9_]+/g,\"_\")},Wt.undoCommonChatAppReplacements=function(e){return e.replaceAll(\" \",\" \")},Wt.cropText=function(r,n,a){let i=\"\";a=Math.floor(a/n)-1;if(r.length<=a)i=r;else{let e=a,t=\"\";1<a&&(e=a-1,t=\"…\");n=r.charCodeAt(e-1);e+=55296<=n&&n<56320?1:0,i=r.substring(0,e)+t}return i},Wt.splitLinesNonEmpty=function(e){return e.split(\"\\n\").map(e=>e.trim()).filter(e=>\"\"!==e)};const n=st(),a=Pe();let t=void 0,r=void 0}return Wt}var er,tr={},rr={},nr={};var ar,ir={};var or,sr,lr,cr={},ur={},dr={};function pr(){var t,e;return sr||(sr=1,Object.defineProperty(ur,\"__esModule\",{value:!0}),ur.default=void 0,or||(or=1,Object.defineProperty(dr,\"__esModule\",{value:!0}),dr.default=void 0,dr.default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i),t=(e=dr)&&e.__esModule?e:{default:e},ur.default=function(e){return\"string\"==typeof e&&t.default.test(e)}),ur}function fr(){var n,e;return lr||(lr=1,Object.defineProperty(cr,\"__esModule\",{value:!0}),cr.default=void 0,n=(e=pr())&&e.__esModule?e:{default:e},cr.default=function(e){var t,r;if((0,n.default)(e))return(r=new Uint8Array(16))[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r;throw TypeError(\"Invalid UUID\")}),cr}var hr,mr={};function gr(){if(!hr){hr=1,Object.defineProperty(mr,\"__esModule\",{value:!0}),mr.default=void 0,mr.unsafeStringify=a;for(var e,r=(e=pr())&&e.__esModule?e:{default:e},n=[],t=0;t<256;++t)n.push((t+256).toString(16).slice(1));mr.default=function(e,t=0){if(e=a(e,t),(0,r.default)(e))return e;throw TypeError(\"Stringified UUID is invalid\")}}return mr;function a(e,t=0){return(n[e[t+0]]+n[e[t+1]]+n[e[t+2]]+n[e[t+3]]+\"-\"+n[e[t+4]]+n[e[t+5]]+\"-\"+n[e[t+6]]+n[e[t+7]]+\"-\"+n[e[t+8]]+n[e[t+9]]+\"-\"+n[e[t+10]]+n[e[t+11]]+n[e[t+12]]+n[e[t+13]]+n[e[t+14]]+n[e[t+15]]).toLowerCase()}}var _r,yr,Tr={},vr={};function br(){var e,t;return _r||(_r=1,Object.defineProperty(vr,\"__esModule\",{value:!0}),vr.default=function(){if(!e&&!(e=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error(\"crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported\");return e(t)},t=new Uint8Array(16)),vr}function Er(){var u,e,d,p,f,h,m;return yr||(yr=1,Object.defineProperty(Tr,\"__esModule\",{value:!0}),Tr.default=void 0,u=(e=br())&&e.__esModule?e:{default:e},d=gr(),m=h=0,Tr.default=function(e,t,r){var n=t&&r||0,a=t||new Array(16),i=(e=e||{}).node,r=e.clockseq,o=(e._v6||(i=i||p,null==r&&(r=f)),null!=i&&null!=r||(o=e.random||(e.rng||u.default)(),null==i&&(i=[o[0],o[1],o[2],o[3],o[4],o[5]],p||e._v6||(i[0]|=1,p=i)),null==r&&(r=16383&(o[6]<<8|o[7]),void 0!==f||e._v6||(f=r))),void 0!==e.msecs?e.msecs:Date.now()),s=void 0!==e.nsecs?e.nsecs:m+1,l=o-h+(s-m)/1e4;if(l<0&&void 0===e.clockseq&&(r=r+1&16383),1e4<=(s=(l<0||h<o)&&void 0===e.nsecs?0:s))throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");h=o,f=r,l=(1e4*(268435455&(o+=122192928e5))+(m=s))%4294967296,a[n++]=l>>>24&255,a[n++]=l>>>16&255,a[n++]=l>>>8&255,a[n++]=255&l,e=o/4294967296*1e4&268435455,a[n++]=e>>>8&255,a[n++]=255&e,a[n++]=e>>>24&15|16,a[n++]=e>>>16&255,a[n++]=r>>>8|128,a[n++]=255&r;for(var c=0;c<6;++c)a[n+c]=i[c];return t||(0,d.unsafeStringify)(a)}),Tr}var Sr,Ar={};function Or(){var r,e,n;return Sr||(Sr=1,Object.defineProperty(Ar,\"__esModule\",{value:!0}),Ar.default=function(e){var t=function(e){return Uint8Array.of((15&e[6])<<4|e[7]>>4&15,(15&e[7])<<4|(240&e[4])>>4,(15&e[4])<<4|(240&e[5])>>4,(15&e[5])<<4|(240&e[0])>>4,(15&e[0])<<4|(240&e[1])>>4,(15&e[1])<<4|(240&e[2])>>4,96|15&e[2],e[3],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}(\"string\"==typeof e?(0,r.default)(e):e);return\"string\"==typeof e?(0,n.unsafeStringify)(t):t},r=(e=fr())&&e.__esModule?e:{default:e},n=gr()),Ar}var Cr,wr={},kr={};function Ir(){var c,u,e,r,n;return Cr||(Cr=1,Object.defineProperty(kr,\"__esModule\",{value:!0}),kr.URL=kr.DNS=void 0,kr.default=function(e,s,l){function t(e,t,r,n){var a;if(\"string\"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),16!==(null==(a=t=\"string\"==typeof t?(0,u.default)(t):t)?void 0:a.length))throw TypeError(\"Namespace must be array-like (16 iterable integer values, 0-255)\");var i=new Uint8Array(16+e.length);if(i.set(t),i.set(e,t.length),(i=l(i))[6]=15&i[6]|s,i[8]=63&i[8]|128,r){n=n||0;for(var o=0;o<16;++o)r[n+o]=i[o];return r}return(0,c.unsafeStringify)(i)}try{t.name=e}catch(e){}return t.DNS=r,t.URL=n,t},c=gr(),u=(e=fr())&&e.__esModule?e:{default:e},r=kr.DNS=\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\",n=kr.URL=\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"),kr}var Rr,Nr,Mr={};function Pr(){return Rr||(Rr=1,Object.defineProperty(Mr,\"__esModule\",{value:!0}),Mr.default=void 0,Mr.default=function(e){if(\"string\"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}for(var n=function(e,t){e[t>>5]|=128<<t%32,e[d(t)-1]=t;for(var r=1732584193,n=-271733879,a=-1732584194,i=271733878,o=0;o<e.length;o+=16){var s=r,l=n,c=a,u=i;r=f(r,n,a,i,e[o],7,-680876936),i=f(i,r,n,a,e[o+1],12,-389564586),a=f(a,i,r,n,e[o+2],17,606105819),n=f(n,a,i,r,e[o+3],22,-1044525330),r=f(r,n,a,i,e[o+4],7,-176418897),i=f(i,r,n,a,e[o+5],12,1200080426),a=f(a,i,r,n,e[o+6],17,-1473231341),n=f(n,a,i,r,e[o+7],22,-45705983),r=f(r,n,a,i,e[o+8],7,1770035416),i=f(i,r,n,a,e[o+9],12,-1958414417),a=f(a,i,r,n,e[o+10],17,-42063),n=f(n,a,i,r,e[o+11],22,-1990404162),r=f(r,n,a,i,e[o+12],7,1804603682),i=f(i,r,n,a,e[o+13],12,-40341101),a=f(a,i,r,n,e[o+14],17,-1502002290),n=f(n,a,i,r,e[o+15],22,1236535329),r=h(r,n,a,i,e[o+1],5,-165796510),i=h(i,r,n,a,e[o+6],9,-1069501632),a=h(a,i,r,n,e[o+11],14,643717713),n=h(n,a,i,r,e[o],20,-373897302),r=h(r,n,a,i,e[o+5],5,-701558691),i=h(i,r,n,a,e[o+10],9,38016083),a=h(a,i,r,n,e[o+15],14,-660478335),n=h(n,a,i,r,e[o+4],20,-405537848),r=h(r,n,a,i,e[o+9],5,568446438),i=h(i,r,n,a,e[o+14],9,-1019803690),a=h(a,i,r,n,e[o+3],14,-187363961),n=h(n,a,i,r,e[o+8],20,1163531501),r=h(r,n,a,i,e[o+13],5,-1444681467),i=h(i,r,n,a,e[o+2],9,-51403784),a=h(a,i,r,n,e[o+7],14,1735328473),n=h(n,a,i,r,e[o+12],20,-1926607734),r=m(r,n,a,i,e[o+5],4,-378558),i=m(i,r,n,a,e[o+8],11,-2022574463),a=m(a,i,r,n,e[o+11],16,1839030562),n=m(n,a,i,r,e[o+14],23,-35309556),r=m(r,n,a,i,e[o+1],4,-1530992060),i=m(i,r,n,a,e[o+4],11,1272893353),a=m(a,i,r,n,e[o+7],16,-155497632),n=m(n,a,i,r,e[o+10],23,-1094730640),r=m(r,n,a,i,e[o+13],4,681279174),i=m(i,r,n,a,e[o],11,-358537222),a=m(a,i,r,n,e[o+3],16,-722521979),n=m(n,a,i,r,e[o+6],23,76029189),r=m(r,n,a,i,e[o+9],4,-640364487),i=m(i,r,n,a,e[o+12],11,-421815835),a=m(a,i,r,n,e[o+15],16,530742520),n=m(n,a,i,r,e[o+2],23,-995338651),r=g(r,n,a,i,e[o],6,-198630844),i=g(i,r,n,a,e[o+7],10,1126891415),a=g(a,i,r,n,e[o+14],15,-1416354905),n=g(n,a,i,r,e[o+5],21,-57434055),r=g(r,n,a,i,e[o+12],6,1700485571),i=g(i,r,n,a,e[o+3],10,-1894986606),a=g(a,i,r,n,e[o+10],15,-1051523),n=g(n,a,i,r,e[o+1],21,-2054922799),r=g(r,n,a,i,e[o+8],6,1873313359),i=g(i,r,n,a,e[o+15],10,-30611744),a=g(a,i,r,n,e[o+6],15,-1560198380),n=g(n,a,i,r,e[o+13],21,1309151649),r=g(r,n,a,i,e[o+4],6,-145523070),i=g(i,r,n,a,e[o+11],10,-1120210379),a=g(a,i,r,n,e[o+2],15,718787259),n=g(n,a,i,r,e[o+9],21,-343485551),r=p(r,s),n=p(n,l),a=p(a,c),i=p(i,u)}return[r,n,a,i]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(d(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length),a=[],i=32*n.length,o=\"0123456789abcdef\",s=0;s<i;s+=8){var l=n[s>>5]>>>s%32&255,l=parseInt(o.charAt(l>>>4&15)+o.charAt(15&l),16);a.push(l)}return a}),Mr;function d(e){return 14+(e+64>>>9<<4)+1}function p(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function s(e,t,r,n,a,i){return p((t=p(p(t,e),p(n,i)))<<a|t>>>32-a,r)}function f(e,t,r,n,a,i,o){return s(t&r|~t&n,e,t,a,i,o)}function h(e,t,r,n,a,i,o){return s(t&n|r&~n,e,t,a,i,o)}function m(e,t,r,n,a,i,o){return s(t^r^n,e,t,a,i,o)}function g(e,t,r,n,a,i,o){return s(r^(t|~n),e,t,a,i,o)}}var Dr,xr,Lr={},Fr={};function Ur(){var i,e,o,s;return xr||(xr=1,Object.defineProperty(Lr,\"__esModule\",{value:!0}),Lr.default=void 0,i=t((Dr||(Dr=1,Object.defineProperty(Fr,\"__esModule\",{value:!0}),Fr.default=void 0,e=\"undefined\"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Fr.default={randomUUID:e}),Fr)),o=t(br()),s=gr(),Lr.default=function(e,t,r){if(i.default.randomUUID&&!t&&!e)return i.default.randomUUID();var n=(e=e||{}).random||(e.rng||o.default)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var a=0;a<16;++a)t[r+a]=n[a];return t}return(0,s.unsafeStringify)(n)}),Lr;function t(e){return e&&e.__esModule?e:{default:e}}}var Br,jr,Hr={},Gr={};function Vr(){return Br||(Br=1,Object.defineProperty(Gr,\"__esModule\",{value:!0}),Gr.default=void 0,Gr.default=function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(\"string\"==typeof e){var n=unescape(encodeURIComponent(e));e=[];for(var a=0;a<n.length;++a)e.push(n.charCodeAt(a))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,o=Math.ceil(i/16),s=new Array(o),l=0;l<o;++l){for(var c=new Uint32Array(16),u=0;u<16;++u)c[u]=e[64*l+4*u]<<24|e[64*l+4*u+1]<<16|e[64*l+4*u+2]<<8|e[64*l+4*u+3];s[l]=c}s[o-1][14]=8*(e.length-1)/Math.pow(2,32),s[o-1][14]=Math.floor(s[o-1][14]),s[o-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<o;++d){for(var p=new Uint32Array(80),f=0;f<16;++f)p[f]=s[d][f];for(var h=16;h<80;++h)p[h]=E(p[h-3]^p[h-8]^p[h-14]^p[h-16],1);for(var m=r[0],g=r[1],_=r[2],y=r[3],T=r[4],v=0;v<80;++v)var b=Math.floor(v/20),b=E(m,5)+function(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:return t^r^n;case 2:return t&r^t&n^r&n;case 3:return t^r^n}}(b,g,_,y)+T+t[b]+p[v]>>>0,T=y,y=_,_=E(g,30)>>>0,g=m,m=b;r[0]=r[0]+m>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+_>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+T>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]}),Gr;function E(e,t){return e<<t|e>>>32-t}}var qr,zr={};function Wr(){var i,o,s;return qr||(qr=1,Object.defineProperty(zr,\"__esModule\",{value:!0}),zr.default=function(e={},t,r=0){var n=(0,o.default)(l(l({},e),{},{_v6:!0}),new Uint8Array(16));if(n=(0,s.default)(n),t){for(var a=0;a<16;a++)t[r+a]=n[a];return t}return(0,i.unsafeStringify)(n)},i=gr(),o=e(Er()),s=e(Or())),zr;function e(e){return e&&e.__esModule?e:{default:e}}function t(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function l(n){for(var e=1;e<arguments.length;e++){var a=null!=arguments[e]?arguments[e]:{};e%2?t(Object(a),!0).forEach(function(e){var t,r;t=n,r=a[e=e],(e=function(e){e=function(e,t){if(\"object\"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return(\"string\"===t?String:Number)(e);r=r.call(e,t||\"default\");if(\"object\"!=typeof r)return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}(e,\"string\");return\"symbol\"==typeof e?e:e+\"\"}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(a,e))})}return n}}var $r,Kr={};function Yr(){var r,e,n;return $r||($r=1,Object.defineProperty(Kr,\"__esModule\",{value:!0}),Kr.default=function(e){var t=function(e){return Uint8Array.of((15&e[3])<<4|e[4]>>4&15,(15&e[4])<<4|(240&e[5])>>4,(15&e[5])<<4|15&e[6],e[7],(15&e[1])<<4|(240&e[2])>>4,(15&e[2])<<4|(240&e[3])>>4,16|(240&e[0])>>4,(15&e[0])<<4|(240&e[1])>>4,e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}(\"string\"==typeof e?(0,r.default)(e):e);return\"string\"==typeof e?(0,n.unsafeStringify)(t):t},r=(e=fr())&&e.__esModule?e:{default:e},n=gr()),Kr}var Zr,Xr={};function en(){var c,e,u,d,p,f;return Zr||(Zr=1,Object.defineProperty(Xr,\"__esModule\",{value:!0}),Xr.default=void 0,c=(e=br())&&e.__esModule?e:{default:e},u=gr(),p=d=null,f=0,Xr.default=function(e,t,r){e=e||{};var r=t&&r||0,n=t||new Uint8Array(16),a=e.random||(e.rng||c.default)(),i=void 0!==e.msecs?e.msecs:Date.now(),o=void 0!==e.seq?e.seq:null,s=p,l=d;return f<i&&void 0===e.msecs&&(f=i,null!==o)&&(l=s=null),null!==o&&(s=(o=2147483647<o?2147483647:o)>>>19&4095,l=524287&o),null!==s&&null!==l||(s=(s=127&a[6])<<8|a[7],l=(l=(l=63&a[8])<<8|a[9])<<5|a[10]>>>3),f<i+1e4&&null===o?524287<++l&&(l=0,4095<++s)&&(s=0,f++):f=i,p=s,d=l,n[r++]=f/1099511627776&255,n[r++]=f/4294967296&255,n[r++]=f/16777216&255,n[r++]=f/65536&255,n[r++]=f/256&255,n[r++]=255&f,n[r++]=s>>>4&15|112,n[r++]=255&s,n[r++]=l>>>13&63|128,n[r++]=l>>>5&255,n[r++]=l<<3&255|7&a[10],n[r++]=a[11],n[r++]=a[12],n[r++]=a[13],n[r++]=a[14],n[+r]=a[15],t||(0,u.unsafeStringify)(n)}),Xr}var tn,rn,nn,an={};function on(){var t,e;return tn||(tn=1,Object.defineProperty(an,\"__esModule\",{value:!0}),an.default=void 0,t=(e=pr())&&e.__esModule?e:{default:e},an.default=function(e){if((0,t.default)(e))return parseInt(e.slice(14,15),16);throw TypeError(\"Invalid UUID\")}),an}function sn(){var e,t,r,n,a,i,o,s,l,c,u,d,p,f,h,m;return rn||(rn=1,e=rr,Object.defineProperty(e,\"__esModule\",{value:!0}),Object.defineProperty(e,\"MAX\",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,\"NIL\",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(e,\"parse\",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,\"stringify\",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(e,\"v1\",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(e,\"v1ToV6\",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,\"v3\",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(e,\"v4\",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,\"v5\",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,\"v6\",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(e,\"v6ToV1\",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(e,\"v7\",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(e,\"validate\",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(e,\"version\",{enumerable:!0,get:function(){return m.default}}),t=y((er||(er=1,Object.defineProperty(nr,\"__esModule\",{value:!0}),nr.default=void 0,nr.default=\"ffffffff-ffff-ffff-ffff-ffffffffffff\"),nr)),r=y((ar||(ar=1,Object.defineProperty(ir,\"__esModule\",{value:!0}),ir.default=void 0,ir.default=\"00000000-0000-0000-0000-000000000000\"),ir)),n=y(fr()),a=y(gr()),i=y(Er()),o=y(Or()),s=y((Nr||(Nr=1,Object.defineProperty(wr,\"__esModule\",{value:!0}),wr.default=void 0,e=g(Ir()),l=g(Pr()),e=(0,e.default)(\"v3\",48,l.default),wr.default=e),wr)),c=y(Ur()),u=y((jr||(jr=1,Object.defineProperty(Hr,\"__esModule\",{value:!0}),Hr.default=void 0,l=_(Ir()),e=_(Vr()),l=(0,l.default)(\"v5\",80,e.default),Hr.default=l),Hr)),d=y(Wr()),p=y(Yr()),f=y(en()),h=y(pr()),m=y(on())),rr;function g(e){return e&&e.__esModule?e:{default:e}}function _(e){return e&&e.__esModule?e:{default:e}}function y(e){return e&&e.__esModule?e:{default:e}}}function ln(){if(!nn){nn=1;{var t=tr;Object.defineProperty(t,\"__esModule\",{value:!0}),t.uuidv4=void 0,t.uuidv4Sql=function(e){e=e??(0,t.uuidv4)();return(0,r.sqlNameSafe)(e)};var e=sn();const r=j();t.uuidv4=e.v4}}return tr}var cn,un,dn={},pn={},fn={};function hn(){if(!cn){cn=1,Object.defineProperty(fn,\"__esModule\",{value:!0}),fn.getPath=function(e,t){let r=e;for(const n of t){if(void 0===r)return;r=r[n]}return r},fn.setPath=function(e,t,r){var n=[...t];let a=e;for(;1<n.length;){const i=(0,o.assertExists)(n.shift());a=a[i]}const i=n.shift();if(!(0,s.exists)(i))throw TypeError(\"Path array is empty\");a[i]=r},fn.shallowEquals=function(e,t){if(e!==t){if(void 0===e||void 0===t)return!1;if(null===e||null===t)return!1;var r=e,n=t;for(const a of Object.keys(r))if(r[a]!==n[a])return!1;for(const i of Object.keys(n))if(r[i]!==n[i])return!1}return!0},fn.isString=function(e){return\"string\"==typeof e||e instanceof String},fn.isEnumValue=function(e,t){return Object.values(e).includes(t)};const o=Pe(),s=Me()}return fn}function De(){if(!un){un=1,Object.defineProperty(pn,\"__esModule\",{value:!0}),pn.constraintsToQuerySuffix=function(e){var t=[],r=(e.joins??[]).filter(n);0<r.length&&t.push(...r);r=(e.filters??[]).filter(n);0<r.length&&t.push(\"WHERE \"+r.join(\" and \"));r=(e.groupBy??[]).filter(n);0<r.length&&(r=r.join(\", \"),t.push(\"GROUP BY \"+r));r=(e.orderBy??[]).filter(n);0<r.length&&(r=r.map(e=>{var t;return(0,o.isString)(e)?e:(t=e.direction?\" \"+e.direction:\"\",e.fieldName+t)}),t.push(\"ORDER BY \"+r.join(\", \")));e.limit&&t.push(\"LIMIT \"+e.limit);return t.join(\"\\n\")},pn.fromNumNull=function(e){if(null!==e)return e},pn.sqlValueToReadableString=function(e){if(void 0===e)return;if(e instanceof Uint8Array)return`<blob length=${e.length}>`;return null!==e?e.toString():\"NULL\"},pn.sqlValueToSqliteString=function t(e){if(Array.isArray(e))return e.map(e=>t(e)).join(\",\");if(e instanceof Uint8Array)throw new Error(\"Can't pass blob back to trace processor as value\");if(null===e)return\"NULL\";if(\"string\"==typeof e)return(0,r.sqliteString)(e);return\"\"+e},pn.createPerfettoTable=async function(e){var{engine:e,as:t,name:r=a()}=e;return await e.query(`CREATE PERFETTO TABLE ${r} AS `+t),i(e,r,\"TABLE\")},pn.createTable=async function(e){var{engine:e,as:t,name:r=a()}=e;return await e.query(`CREATE TABLE ${r} AS `+t),i(e,r,\"TABLE\")},pn.createPerfettoView=async function(e){var{engine:e,as:t,name:r=a()}=e;return await e.query(`CREATE PERFETTO VIEW ${r} AS `+t),i(e,r,\"VIEW\")},pn.createView=async function(e){var{engine:e,as:t,name:r=a()}=e;return await e.query(`CREATE VIEW ${r} AS `+t),i(e,r,\"VIEW\")},pn.createPerfettoIndex=async function(e){var{engine:e,on:t,name:r=a()}=e;return await e.query(`CREATE PERFETTO INDEX ${r} ON `+t),i(e,r,\"INDEX\")},pn.createIndex=async function(e){var{engine:e,on:t,name:r=a()}=e;return await e.query(`CREATE INDEX ${r} ON `+t),i(e,r,\"INDEX\")},pn.createVirtualTable=async function(e){const{engine:t,using:r,name:n=a()}=e;return await t.query(`CREATE VIRTUAL TABLE ${n} USING `+r),{name:n,[Symbol.asyncDispose]:async()=>{await t.tryQuery(\"DROP TABLE IF EXISTS \"+n)}}};const o=hn(),r=j();function n(e){return void 0!==e}function a(){return\"__temp_\"+Math.random().toString(36).substring(2,15)}async function i(e,t,r){return{name:t,[Symbol.asyncDispose]:async()=>{await e.tryQuery(`DROP ${r} IF EXISTS `+t)}}}}return pn}var mn,gn,_n,yn,Tn,vn,bn,En,Sn,An,On,Cn,wn,kn,In={};function Rn(){return gn||(gn=1,a.normalize=function(e){return Array.isArray(e)?a(\"[\",void 0,void 0,a.normalizeChildren(e),void 0,void 0):null==e||\"boolean\"==typeof e?null:\"object\"==typeof e?e:a(\"#\",void 0,void 0,String(e),void 0,void 0)},a.normalizeChildren=function(e){var t=[];if(e.length){for(var r=null!=e[0]&&null!=e[0].key,n=1;n<e.length;n++)if((null!=e[n]&&null!=e[n].key)!=r)throw new TypeError(!r||null==e[n]&&\"boolean\"!=typeof e[n]?\"In fragments, vnodes must either all have keys or none have keys.\":\"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.\");for(n=0;n<e.length;n++)t[n]=a.normalize(e[n])}return t},mn=a),mn;function a(e,t,r,n,a,i){return{tag:e,key:t,attrs:r,children:n,text:a,dom:i,domSize:void 0,state:void 0,events:void 0,instance:void 0}}}function Nn(){var n;return yn||(yn=1,n=Rn(),_n=function(){var e,t=arguments[this],r=this+1;if(null==t?t={}:\"object\"==typeof t&&null==t.tag&&!Array.isArray(t)||(t={},r=this),arguments.length===r+1)e=arguments[r],Array.isArray(e)||(e=[e]);else for(e=[];r<arguments.length;)e.push(arguments[r++]);return n(\"\",t.key,t,e)}),_n}function Mn(){return vn||(vn=1,Tn={}.hasOwnProperty),Tn}function Pn(){var s,l,c,u,d;return En||(En=1,s=Rn(),l=Nn(),c=Mn(),u=/(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g,d={},bn=function(e){if(null==e||\"string\"!=typeof e&&\"function\"!=typeof e&&\"function\"!=typeof e.view)throw Error(\"The selector must be either a string or a component.\");var t=l.apply(1,arguments);if(\"string\"!=typeof e||(t.children=s.normalizeChildren(t.children),\"[\"===e))return t.tag=e,t;var r=d[e]||function(e){for(var t,r=\"div\",n=[],a={};t=u.exec(e);){var i=t[1],o=t[2];\"\"===i&&\"\"!==o?r=o:\"#\"===i?a.id=o:\".\"===i?n.push(o):\"[\"===t[3][0]&&(i=(i=t[6])&&i.replace(/\\\\([\"'])/g,\"$1\").replace(/\\\\\\\\/g,\"\\\\\"),\"class\"===t[4]?n.push(i):a[t[4]]=\"\"===i?i:i||!0)}return 0<n.length&&(a.className=n.join(\" \")),d[e]={tag:r,attrs:a}}(e),n=t,a=n.attrs,e=c.call(a,\"class\"),t=e?a.class:a.className;if(n.tag=r.tag,n.attrs={},!p(r.attrs)&&!p(a)){var i,o={};for(i in a)c.call(a,i)&&(o[i]=a[i]);a=o}for(i in r.attrs)c.call(r.attrs,i)&&\"className\"!==i&&!c.call(a,i)&&(a[i]=r.attrs[i]);for(i in null==t&&null==r.attrs.className||(a.className=null!=t?null!=r.attrs.className?String(r.attrs.className)+\" \"+String(t):t:null!=r.attrs.className?r.attrs.className:null),e&&(a.class=null),a)if(c.call(a,i)&&\"key\"!==i){n.attrs=a;break}return n}),bn;function p(e){for(var t in e)if(c.call(e,t))return;return 1}}function Dn(){var e,t,r,n;return kn||(kn=1,(e=Pn()).trust=(An||(An=1,t=Rn(),Sn=function(e){return t(\"<\",void 0,void 0,e=null==e?\"\":e,void 0,void 0)}),Sn),e.fragment=(Cn||(Cn=1,r=Rn(),n=Nn(),On=function(){var e=n.apply(0,arguments);return e.tag=\"[\",e.children=r.normalizeChildren(e.children),e}),On),wn=e),wn}var xn,Ln,Fn,Un,Bn,jn,Hn,Gn,Vn,qn,zn,Wn,$n,Kn,Yn,Jn,Qn,Zn,Xn,ea,ta,ra,na,aa,ia,oa,sa,la,ca,ua,da,pa,fa,ha,ma,ga={exports:{}};function _a(){var p;return Ln||(Ln=1,(p=function(e){if(!(this instanceof p))throw new Error(\"Promise must be called with 'new'.\");if(\"function\"!=typeof e)throw new TypeError(\"executor must be a function.\");var i=this,o=[],s=[],a=t(o,!0),l=t(s,!1),c=i._instance={resolvers:o,rejectors:s},u=\"function\"==typeof setImmediate?setImmediate:setTimeout;function t(n,a){return function t(r){var e;try{if(!a||null==r||\"object\"!=typeof r&&\"function\"!=typeof r||\"function\"!=typeof(e=r.then))u(function(){a||0!==n.length||console.error(\"Possible unhandled promise rejection:\",r);for(var e=0;e<n.length;e++)n[e](r);o.length=0,s.length=0,c.state=a,c.retry=function(){t(r)}});else{if(r===i)throw new TypeError(\"Promise can't be resolved with itself.\");d(e.bind(r))}}catch(e){l(e)}}}function d(e){var r=0;function t(t){return function(e){0<r++||t(e)}}var n=t(l);try{e(t(a),n)}catch(e){n(e)}}d(e)}).prototype.then=function(e,t){var a,i,o=this._instance;function r(t,e,r,n){e.push(function(e){if(\"function\"!=typeof t)r(e);else try{a(t(e))}catch(e){i&&i(e)}}),\"function\"==typeof o.retry&&n===o.state&&o.retry()}var n=new p(function(e,t){a=e,i=t});return r(e,o.resolvers,a,!0),r(t,o.rejectors,i,!1),n},p.prototype.catch=function(e){return this.then(null,e)},p.prototype.finally=function(t){return this.then(function(e){return p.resolve(t()).then(function(){return e})},function(e){return p.resolve(t()).then(function(){return p.reject(e)})})},p.resolve=function(t){return t instanceof p?t:new p(function(e){e(t)})},p.reject=function(r){return new p(function(e,t){t(r)})},p.all=function(s){return new p(function(r,n){var a=s.length,i=0,o=[];if(0===s.length)r([]);else for(var e=0;e<s.length;e++)!function(t){function e(e){i++,o[t]=e,i===a&&r(o)}null==s[t]||\"object\"!=typeof s[t]&&\"function\"!=typeof s[t]||\"function\"!=typeof s[t].then?e(s[t]):s[t].then(e,n)}(e)})},p.race=function(n){return new p(function(e,t){for(var r=0;r<n.length;r++)n[r].then(e,t)})},xn=p),xn}function ya(){var e;return Fn||(Fn=1,e=_a(),\"undefined\"!=typeof window?(void 0===window.Promise?window.Promise=e:window.Promise.prototype.finally||(window.Promise.prototype.finally=e.prototype.finally),ga.exports=window.Promise):void 0!==ve?(void 0===ve.Promise?ve.Promise=e:ve.Promise.prototype.finally||(ve.Promise.prototype.finally=e.prototype.finally),ga.exports=ve.Promise):ga.exports=e),ga.exports}function Ta(){var ee;return Bn||(Bn=1,ee=Rn(),Un=function(e){var c,C=e&&e.document,t={svg:\"http://www.w3.org/2000/svg\",math:\"http://www.w3.org/1998/Math/MathML\"};function U(e){return e.attrs&&e.attrs.xmlns||t[e.tag]}function u(e,t){if(e.state!==t)throw new Error(\"'vnode.state' must not be modified.\")}function B(e){var t=e.state;try{return this.apply(t,arguments)}finally{u(e,t)}}function j(){try{return C.activeElement}catch(e){return null}}function w(e,t,r,n,a,i,o){for(var s=r;s<n;s++){var l=t[s];null!=l&&H(e,l,a,o,i)}}function H(e,t,r,n,a){var i,o,s,l,c=t.tag;if(\"string\"==typeof c)switch(t.state={},null!=t.attrs&&P(t.attrs,t,r),c){case\"#\":u=e,p=a,(d=t).dom=C.createTextNode(d.children),N(u,d.dom,p);break;case\"<\":G(e,t,n,a);break;case\"[\":var u=e,d=t,p=r,f=n,h=a,m=C.createDocumentFragment();null!=d.children&&(g=d.children,w(m,g,0,g.length,p,null,f)),d.dom=m.firstChild,d.domSize=m.childNodes.length,N(u,m,h);break;default:var g=e,f=t,m=r,h=n,_=a,y=f.tag,T=f.attrs,v=T&&T.is,v=(h=U(f)||h)?v?C.createElementNS(h,y,{is:v}):C.createElementNS(h,y):v?C.createElement(y,{is:v}):C.createElement(y);if(f.dom=v,null!=T){var b=f;var E=T;var S=h;\"input\"===b.tag&&null!=E.type&&b.dom.setAttribute(\"type\",E.type);var A,O=null!=E&&\"input\"===b.tag&&\"file\"===E.type;for(A in E)K(b,A,null,E[A],S,O)}if(N(g,v,_),!z(f))if(null!=f.children&&(y=f.children,w(v,y,0,y.length,m,null,h),\"select\"===f.tag)&&null!=T){_=f;v=T;\"value\"in v&&(null===v.value?-1!==_.dom.selectedIndex&&(_.dom.value=null):(y=\"\"+v.value,_.dom.value===y&&-1!==_.dom.selectedIndex||(_.dom.value=y)));\"selectedIndex\"in v&&K(_,\"selectedIndex\",null,v.selectedIndex,void 0)}return}else c=e,s=n,l=a,function(e,t){var r;if(\"function\"==typeof e.tag.view){if(e.state=Object.create(e.tag),null!=(r=e.state.view).$$reentrantLock$$)return;r.$$reentrantLock$$=!0}else{if(e.state=void 0,null!=(r=e.tag).$$reentrantLock$$)return;r.$$reentrantLock$$=!0,e.state=null!=e.tag.prototype&&\"function\"==typeof e.tag.prototype.view?new e.tag(e):e.tag(e)}P(e.state,e,t),null!=e.attrs&&P(e.attrs,e,t);if(e.instance=ee.normalize(B.call(e.state.view,e)),e.instance===e)throw Error(\"A view cannot return the vnode it received as argument\");r.$$reentrantLock$$=null}(i=t,o=r),null!=i.instance?(H(c,i.instance,o,s,l),i.dom=i.instance.dom,i.domSize=null!=i.dom?i.instance.domSize:0):i.domSize=0}var l={caption:\"table\",thead:\"table\",tbody:\"table\",tfoot:\"table\",tr:\"tbody\",th:\"tr\",td:\"tr\",colgroup:\"table\",col:\"colgroup\"};function G(e,t,r,n){for(var a,i=t.children.match(/^\\s*?<(\\w+)/im)||[],o=C.createElement(l[i[1]]||\"div\"),s=(\"http://www.w3.org/2000/svg\"===r?(o.innerHTML='<svg xmlns=\"http://www.w3.org/2000/svg\">'+t.children+\"</svg>\",o=o.firstChild):o.innerHTML=t.children,t.dom=o.firstChild,t.domSize=o.childNodes.length,t.instance=[],C.createDocumentFragment());a=o.firstChild;)t.instance.push(a),s.appendChild(a);N(e,s,n)}function V(e,t,r,n,a,i){if(t!==r&&(null!=t||null!=r))if(null==t||0===t.length)w(e,r,0,r.length,n,a,i);else if(null==r||0===r.length)M(e,t,0,t.length);else{var o=null!=t[0]&&null!=t[0].key,s=null!=r[0]&&null!=r[0].key,l=0,c=0;if(!o)for(;c<t.length&&null==t[c];)c++;if(!s)for(;l<r.length&&null==r[l];)l++;if(o!=s)M(e,t,c,t.length),w(e,r,l,r.length,n,a,i);else if(s){for(var u,d,p,f,h=t.length-1,m=r.length-1;c<=h&&l<=m&&(p=t[h],A=r[m],p.key===A.key);)p!==A&&q(e,p,A,n,a,i),null!=A.dom&&(a=A.dom),h--,m--;for(;c<=h&&l<=m&&(u=t[c],d=r[l],u.key===d.key);)c++,l++,u!==d&&q(e,u,d,n,I(t,c,a),i);for(;c<=h&&l<=m&&l!==m&&u.key===A.key&&p.key===d.key;)R(e,p,f=I(t,c,a)),p!==d&&q(e,p,d,n,f,i),++l<=--m&&R(e,u,a),u!==A&&q(e,u,A,n,a,i),null!=A.dom&&(a=A.dom),p=t[--h],A=r[m],u=t[++c],d=r[l];for(;c<=h&&l<=m&&p.key===A.key;)p!==A&&q(e,p,A,n,a,i),null!=A.dom&&(a=A.dom),p=t[--h],A=r[--m];if(m<l)M(e,t,c,h+1);else if(h<c)w(e,r,l,m+1,n,a,i);else{for(var g,_,o=a,y=m-l+1,T=new Array(y),v=0,b=0,E=2147483647,S=0,b=0;b<y;b++)T[b]=-1;for(b=m;l<=b;b--){var A,O=(g=null==g?function(e,t,r){for(var n=Object.create(null);t<r;t++){var a=e[t];null!=a&&null!=(a=a.key)&&(n[a]=t)}return n}(t,c,h+1):g)[(A=r[b]).key];null!=O&&(E=O<E?O:-1,p=t[T[b-l]=O],t[O]=null,p!==A&&q(e,p,A,n,a,i),null!=A.dom&&(a=A.dom),S++)}if(a=o,S!==h-c+1&&M(e,t,c,h+1),0===S)w(e,r,l,m+1,n,a,i);else if(-1===E)for(v=(_=function(e){for(var t=[0],r=0,n=0,a=0,i=k.length=e.length,a=0;a<i;a++)k[a]=e[a];for(a=0;a<i;++a)if(-1!==e[a]){var o=t[t.length-1];if(e[o]<e[a])k[a]=o,t.push(a);else{for(r=0,n=t.length-1;r<n;){var s=(r>>>1)+(n>>>1)+(r&n&1);e[t[s]]<e[a]?r=1+s:n=s}e[a]<e[t[r]]&&(0<r&&(k[a]=t[r-1]),t[r]=a)}}r=t.length,n=t[r-1];for(;0<r--;)t[r]=n,n=k[n];return k.length=0,t}(T)).length-1,b=m;l<=b;b--)d=r[b],-1===T[b-l]?H(e,d,n,i,a):_[v]===b-l?v--:R(e,d,a),null!=d.dom&&(a=r[b].dom);else for(b=m;l<=b;b--)d=r[b],-1===T[b-l]&&H(e,d,n,i,a),null!=d.dom&&(a=r[b].dom)}}else{for(var C=(t.length<r.length?t:r).length,l=l<c?l:c;l<C;l++)(u=t[l])===(d=r[l])||null==u&&null==d||(null==u?H(e,d,n,i,I(t,l+1,a)):null==d?W(e,u):q(e,u,d,n,I(t,l+1,a),i));t.length>C&&M(e,t,l,t.length),r.length>C&&w(e,r,l,r.length,n,a,i)}}}function q(e,t,r,n,a,i){var o=t.tag;if(o===r.tag){if(r.state=t.state,r.events=t.events,!function(e,t){do{var r;if(null!=e.attrs&&\"function\"==typeof e.attrs.onbeforeupdate)if(void 0!==(r=B.call(e.attrs.onbeforeupdate,e,t))&&!r)break;if(\"string\"!=typeof e.tag&&\"function\"==typeof e.state.onbeforeupdate)if(void 0!==(r=B.call(e.state.onbeforeupdate,e,t))&&!r)break;return}while(0);return e.dom=t.dom,e.domSize=t.domSize,e.instance=t.instance,e.attrs=t.attrs,e.children=t.children,e.text=t.text,1}(r,t))if(\"string\"==typeof o)switch(null!=r.attrs&&X(r.attrs,r,n),o){case\"#\":var s=t,l=r;s.children.toString()!==l.children.toString()&&(s.dom.nodeValue=l.children),l.dom=s.dom;break;case\"<\":l=e,s=r,u=i,d=a,(p=t).children!==s.children?($(l,p),G(l,s,u,d)):(s.dom=p.dom,s.domSize=p.domSize,s.instance=p.instance);break;case\"[\":var c=r,u=n,d=a,p=i,f=(V(e,t.children,c.children,u,d,p),0),h=c.children;if((c.dom=null)!=h){for(var m=0;m<h.length;m++){var g=h[m];null!=g&&null!=g.dom&&(null==c.dom&&(c.dom=g.dom),f+=g.domSize||1)}1!==f&&(c.domSize=f)}break;default:var _,y=t,T=r,v=n,b=i,L=T.dom=y.dom,E=(b=U(T)||b,\"textarea\"!==T.tag||null==T.attrs&&(T.attrs={}),T),S=y.attrs,A=T.attrs,O=b;if(S&&S===A&&console.warn(\"Don't reuse attrs object, use new object for every redraw, this will throw in next major\"),null!=A){\"input\"===E.tag&&null!=A.type&&E.dom.setAttribute(\"type\",A.type);var F=\"input\"===E.tag&&\"file\"===A.type;for(C in A)K(E,C,S&&S[C],A[C],O,F)}if(null!=S)for(var C in S)if(null!=(_=S[C])&&(null==A||null==A[C])){w=void 0;k=void 0;I=void 0;R=void 0;var w=E;var k=C;var I=_;var R=O;\"key\"===k||\"is\"===k||null==I||Y(k)||(\"o\"===k[0]&&\"n\"===k[1]?Z(w,k,void 0):\"style\"===k?Q(w.dom,I,null):!J(w,k,R)||\"className\"===k||\"title\"===k||\"value\"===k&&(\"option\"===w.tag||\"select\"===w.tag&&-1===w.dom.selectedIndex&&w.dom===j())||\"input\"===w.tag&&\"type\"===k?(-1!==(R=k.indexOf(\":\"))&&(k=k.slice(R+1)),!1!==I&&w.dom.removeAttribute(\"className\"===k?\"class\":k)):w.dom[k]=null)}return void(z(T)||V(L,y.children,T.children,v,null,b))}else{var o=e,N=t,M=r,P=n,D=a,x=i;if(M.instance=ee.normalize(B.call(M.state.view,M)),M.instance===M)throw Error(\"A view cannot return the vnode it received as argument\");X(M.state,M,P),null!=M.attrs&&X(M.attrs,M,P),null!=M.instance?(null==N.instance?H(o,M.instance,P,x,D):q(o,N.instance,M.instance,P,D,x),M.dom=M.instance.dom,M.domSize=M.instance.domSize):null!=N.instance?(W(o,N.instance),M.dom=void 0,M.domSize=0):(M.dom=N.dom,M.domSize=N.domSize)}}else W(e,t),H(e,r,n,i,a)}var k=[];function I(e,t,r){for(;t<e.length;t++)if(null!=e[t]&&null!=e[t].dom)return e[t].dom;return r}function R(e,t,r){var n=C.createDocumentFragment();!function e(t,r,n){for(;null!=n.dom&&n.dom.parentNode===t;){if(\"string\"!=typeof n.tag){if(null!=(n=n.instance))continue}else if(\"<\"===n.tag)for(var a=0;a<n.instance.length;a++)r.appendChild(n.instance[a]);else if(\"[\"!==n.tag)r.appendChild(n.dom);else if(1===n.children.length){if(null!=(n=n.children[0]))continue}else for(a=0;a<n.children.length;a++){var i=n.children[a];null!=i&&e(t,r,i)}break}}(e,n,t),N(e,n,r)}function N(e,t,r){null!=r?e.insertBefore(t,r):e.appendChild(t)}function z(e){if(null!=e.attrs&&(null!=e.attrs.contenteditable||null!=e.attrs.contentEditable)){var t=e.children;if(null!=t&&1===t.length&&\"<\"===t[0].tag){var r=t[0].children;e.dom.innerHTML!==r&&(e.dom.innerHTML=r)}else if(null!=t&&0!==t.length)throw new Error(\"Child node of a contenteditable must be trusted.\");return 1}}function M(e,t,r,n){for(var a=r;a<n;a++){var i=t[a];null!=i&&W(e,i)}}function W(e,t){var r,n,a,i,o=0,s=t.state;function l(){u(t,s),p(t),d(e,t)}\"string\"!=typeof t.tag&&\"function\"==typeof t.state.onbeforeremove&&null!=(a=B.call(t.state.onbeforeremove,t))&&\"function\"==typeof a.then&&(o=1,r=a),t.attrs&&\"function\"==typeof t.attrs.onbeforeremove&&null!=(a=B.call(t.attrs.onbeforeremove,t))&&\"function\"==typeof a.then&&(o|=2,n=a),u(t,s),o?(null!=r&&r.then(i=function(){1&o&&((o&=2)||l())},i),null!=n&&n.then(i=function(){2&o&&((o&=1)||l())},i)):(p(t),d(e,t))}function $(e,t){for(var r=0;r<t.instance.length;r++)e.removeChild(t.instance[r])}function d(e,t){for(;null!=t.dom&&t.dom.parentNode===e;){if(\"string\"!=typeof t.tag){if(null!=(t=t.instance))continue}else if(\"<\"===t.tag)$(e,t);else{if(\"[\"!==t.tag&&(e.removeChild(t.dom),!Array.isArray(t.children)))break;if(1===t.children.length){if(null!=(t=t.children[0]))continue}else for(var r=0;r<t.children.length;r++){var n=t.children[r];null!=n&&d(e,n)}}break}}function p(e){if(\"string\"!=typeof e.tag&&\"function\"==typeof e.state.onremove&&B.call(e.state.onremove,e),e.attrs&&\"function\"==typeof e.attrs.onremove&&B.call(e.attrs.onremove,e),\"string\"!=typeof e.tag)null!=e.instance&&p(e.instance);else{var t=e.children;if(Array.isArray(t))for(var r=0;r<t.length;r++){var n=t[r];null!=n&&p(n)}}}function K(e,t,r,n,a,i){if(\"key\"!==t&&\"is\"!==t&&null!=n&&!Y(t)&&(r!==n||(o=e,\"value\"===(s=t))||\"checked\"===s||\"selectedIndex\"===s||\"selected\"===s&&o.dom===j()||\"option\"===o.tag&&o.dom.parentNode===C.activeElement||\"object\"==typeof n)&&(\"type\"!==t||\"input\"!==e.tag)){var o,s;if(\"o\"===t[0]&&\"n\"===t[1])return Z(e,t,n);if(\"xlink:\"===t.slice(0,6))e.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\",t.slice(6),n);else if(\"style\"===t)Q(e.dom,r,n);else if(J(e,t,a)){if(\"value\"===t){if((\"input\"===e.tag||\"textarea\"===e.tag)&&e.dom.value===\"\"+n&&(i||e.dom===j()))return;if(\"select\"===e.tag&&null!==r&&e.dom.value===\"\"+n)return;if(\"option\"===e.tag&&null!==r&&e.dom.value===\"\"+n)return;if(i&&\"\"+n!=\"\")return void console.error(\"`value` is read-only on file inputs!\")}e.dom[t]=n}else\"boolean\"==typeof n?n?e.dom.setAttribute(t,\"\"):e.dom.removeAttribute(t):e.dom.setAttribute(\"className\"===t?\"class\":t,n)}}function Y(e){return\"oninit\"===e||\"oncreate\"===e||\"onupdate\"===e||\"onremove\"===e||\"onbeforeremove\"===e||\"onbeforeupdate\"===e}function J(e,t,r){return void 0===r&&(-1<e.tag.indexOf(\"-\")||null!=e.attrs&&e.attrs.is||\"href\"!==t&&\"list\"!==t&&\"form\"!==t&&\"width\"!==t&&\"height\"!==t)&&t in e.dom}var f,r=/[A-Z]/g;function n(e){return\"-\"+e.toLowerCase()}function i(e){return\"-\"===e[0]&&\"-\"===e[1]?e:\"cssFloat\"===e?\"float\":e.replace(r,n)}function Q(e,t,r){if(t!==r)if(null==r)e.style.cssText=\"\";else if(\"object\"!=typeof r)e.style.cssText=r;else if(null==t||\"object\"!=typeof t)for(var n in e.style.cssText=\"\",r)null!=(a=r[n])&&e.style.setProperty(i(n),String(a));else{for(var n in r){var a;null!=(a=r[n])&&(a=String(a))!==String(t[n])&&e.style.setProperty(i(n),a)}for(var n in t)null!=t[n]&&null==r[n]&&e.style.removeProperty(i(n))}}function a(){this._=c}function Z(e,t,r){null!=e.events?(e.events._=c,e.events[t]!==r&&(null==r||\"function\"!=typeof r&&\"object\"!=typeof r?(null!=e.events[t]&&e.dom.removeEventListener(t.slice(2),e.events,!1),e.events[t]=void 0):(null==e.events[t]&&e.dom.addEventListener(t.slice(2),e.events,!1),e.events[t]=r))):null==r||\"function\"!=typeof r&&\"object\"!=typeof r||(e.events=new a,e.dom.addEventListener(t.slice(2),e.events,!1),e.events[t]=r)}function P(e,t,r){\"function\"==typeof e.oninit&&B.call(e.oninit,t),\"function\"==typeof e.oncreate&&r.push(B.bind(e.oncreate,t))}function X(e,t,r){\"function\"==typeof e.onupdate&&r.push(B.bind(e.onupdate,t))}return(a.prototype=Object.create(null)).handleEvent=function(e){var t,r=this[\"on\"+e.type];\"function\"==typeof r?t=r.call(e.currentTarget,e):\"function\"==typeof r.handleEvent&&r.handleEvent(e),this._&&!1!==e.redraw&&(0,this._)(),!1===t&&(e.preventDefault(),e.stopPropagation())},function(e,t,r){if(!e)throw new TypeError(\"DOM element being rendered to does not exist.\");if(null!=f&&e.contains(f))throw new TypeError(\"Node is currently being rendered to and thus is locked.\");var n=c,a=f,i=[],o=j(),s=e.namespaceURI;f=e,c=\"function\"==typeof r?r:void 0;try{null==e.vnodes&&(e.textContent=\"\"),t=ee.normalizeChildren(Array.isArray(t)?t:[t]),V(e,e.vnodes,t,i,null,\"http://www.w3.org/1999/xhtml\"===s?void 0:s),e.vnodes=t,null!=o&&j()!==o&&\"function\"==typeof o.focus&&o.focus();for(var l=0;l<i.length;l++)i[l]()}finally{c=n,f=a}}}),Un}function va(){return Hn||(Hn=1,jn=Ta()(\"undefined\"!=typeof window?window:null)),jn}function ba(){var l;return Vn||(Vn=1,l=Rn(),Gn=function(n,e,t){var a=[],r=!1,i=-1;function o(){for(i=0;i<a.length;i+=2)try{n(a[i],l(a[i+1]),s)}catch(e){t.error(e)}i=-1}function s(){r||(r=!0,e(function(){r=!1,o()}))}return s.sync=o,{mount:function(e,t){if(null!=t&&null==t.view&&\"function\"!=typeof t)throw new TypeError(\"m.mount expects a component, not a vnode.\");var r=a.indexOf(e);0<=r&&(a.splice(r,2),r<=i&&(i-=2),n(e,[])),null!=t&&(a.push(e,t),n(e,l(t),s))},redraw:s}}),Gn}function Ea(){var e;return zn||(zn=1,e=va(),qn=ba()(e,\"undefined\"!=typeof requestAnimationFrame?requestAnimationFrame:null,\"undefined\"!=typeof console?console:null)),qn}function Sa(){return $n||($n=1,Wn=function(e){if(\"[object Object]\"!==Object.prototype.toString.call(e))return\"\";var t,a=[];for(t in e)!function e(t,r){if(Array.isArray(r))for(var n=0;n<r.length;n++)e(t+\"[\"+n+\"]\",r[n]);else if(\"[object Object]\"===Object.prototype.toString.call(r))for(var n in r)e(t+\"[\"+n+\"]\",r[n]);else a.push(encodeURIComponent(t)+(null!=r&&\"\"!==r?\"=\"+encodeURIComponent(r):\"\"))}(t,e[t]);return a.join(\"&\")}),Wn}function Aa(){var n;return Yn||(Yn=1,n=Mn(),Kn=Object.assign||function(e,t){for(var r in t)n.call(t,r)&&(e[r]=t[r])}),Kn}function Oa(){var d,p;return Qn||(Qn=1,d=Sa(),p=Aa(),Jn=function(e,n){if(/:([^\\/\\.-]+)(\\.{3})?:/.test(e))throw new SyntaxError(\"Template parameter names must be separated by either a '/', '-', or '.'.\");var t,r,a,i,o,s,l,c,u;return null==n?e:(t=e.indexOf(\"?\"),u=(r=e.indexOf(\"#\"))<0?e.length:r,i=e.slice(0,t<0?u:t),p(a={},n),o=(i=i.replace(/:([^\\/\\.-]+)(\\.{3})?/g,function(e,t,r){return delete a[t],null==n[t]?e:r?n[t]:encodeURIComponent(String(n[t]))})).indexOf(\"?\"),l=(s=i.indexOf(\"#\"))<0?i.length:s,c=i.slice(0,o<0?l:o),0<=t&&(c+=e.slice(t,u)),0<=o&&(c+=(t<0?\"?\":\"&\")+i.slice(o,l)),(u=d(a))&&(c+=(t<0&&o<0?\"?\":\"&\")+u),0<=r&&(c+=e.slice(r)),0<=s&&(c+=(r<0?\"\":\"&\")+i.slice(s)),c)}),Jn}function Ca(){var c,_;return Xn||(Xn=1,c=Oa(),_=Mn(),Zn=function(m,r,s){var o=0;function l(e){return new r(e)}function e(o){return function(t,n){\"string\"!=typeof t?t=(n=t).url:null==n&&(n={});var a,e=new r(function(r,e){o(c(t,n.params),n,function(e){if(\"function\"==typeof n.type)if(Array.isArray(e))for(var t=0;t<e.length;t++)e[t]=new n.type(e[t]);else e=new n.type(e);r(e)},e)});return!0===n.background?e:(a=0,function t(r){var n=r.then;r.constructor=l;r.then=function(){a++;var e=n.apply(r,arguments);return e.then(i,function(e){if(i(),0===a)throw e}),t(e)};return r}(e));function i(){0==--a&&\"function\"==typeof s&&s()}}}function g(e,t){for(var r in e.headers)if(_.call(e.headers,r)&&r.toLowerCase()===t)return 1}return l.prototype=r.prototype,l.__proto__=r,{request:e(function(i,o,s,l){var e,t,r=null!=o.method?o.method.toUpperCase():\"GET\",n=o.body,a=(null==o.serialize||o.serialize===JSON.serialize)&&!(n instanceof m.FormData||n instanceof m.URLSearchParams),c=o.responseType||(\"function\"==typeof o.extract?\"\":\"json\"),u=new m.XMLHttpRequest,d=!1,p=!1,f=u,h=u.abort;for(t in u.abort=function(){d=!0,h.call(this)},u.open(r,i,!1!==o.async,\"string\"==typeof o.user?o.user:void 0,\"string\"==typeof o.password?o.password:void 0),a&&null!=n&&!g(o,\"content-type\")&&u.setRequestHeader(\"Content-Type\",\"application/json; charset=utf-8\"),\"function\"==typeof o.deserialize||g(o,\"accept\")||u.setRequestHeader(\"Accept\",\"application/json, text/*\"),o.withCredentials&&(u.withCredentials=o.withCredentials),o.timeout&&(u.timeout=o.timeout),u.responseType=c,o.headers)_.call(o.headers,t)&&u.setRequestHeader(t,o.headers[t]);u.onreadystatechange=function(t){if(!d&&4===t.target.readyState)try{var r,e,n=200<=t.target.status&&t.target.status<300||304===t.target.status||/^file:\\/\\//i.test(i),a=t.target.response;if(\"json\"===c){if(!t.target.responseType&&\"function\"!=typeof o.extract)try{a=JSON.parse(t.target.responseText)}catch(e){a=null}}else c&&\"text\"!==c||null==a&&(a=t.target.responseText);\"function\"==typeof o.extract?(a=o.extract(t.target,o),n=!0):\"function\"==typeof o.deserialize&&(a=o.deserialize(a)),n?s(a):(e=function(){try{r=t.target.responseText}catch(e){r=a}var e=new Error(r);e.code=t.target.status,e.response=a,l(e)},0===u.status?setTimeout(function(){p||e()}):e())}catch(e){l(e)}},u.ontimeout=function(e){p=!0;var t=new Error(\"Request timed out\");t.code=e.target.status,l(t)},\"function\"==typeof o.config&&(u=o.config(u,o,i)||u)!==f&&(e=u.abort,u.abort=function(){d=!0,e.call(this)}),null==n?u.send():\"function\"==typeof o.serialize?u.send(o.serialize(n)):n instanceof m.FormData||n instanceof m.URLSearchParams?u.send(n):u.send(JSON.stringify(n))}),jsonp:e(function(e,t,r,n){var a=t.callbackName||\"_mithril_\"+Math.round(1e16*Math.random())+\"_\"+o++,i=m.document.createElement(\"script\");m[a]=function(e){delete m[a],i.parentNode.removeChild(i),r(e)},i.onerror=function(){delete m[a],i.parentNode.removeChild(i),n(new Error(\"JSONP request failed\"))},i.src=e+(e.indexOf(\"?\")<0?\"?\":\"&\")+encodeURIComponent(t.callbackKey||\"callback\")+\"=\"+encodeURIComponent(a),m.document.documentElement.appendChild(i)})}}),Zn}function wa(){return na||(na=1,ra=function(e){if(\"\"===e||null==e)return{};for(var t=(e=\"?\"===e.charAt(0)?e.slice(1):e).split(\"&\"),r={},n={},a=0;a<t.length;a++){var i=t[a].split(\"=\"),o=h(i[0]),s=2===i.length?h(i[1]):\"\",l=(\"true\"===s?s=!0:\"false\"===s&&(s=!1),o.split(/\\]\\[?|\\[/)),c=n;-1<o.indexOf(\"[\")&&l.pop();for(var u=0;u<l.length;u++){var d,p=l[u],f=l[u+1],f=\"\"==f||!isNaN(parseInt(f,10));if(\"\"===p)null==r[o=l.slice(0,u).join()]&&(r[o]=Array.isArray(c)?c.length:0),p=r[o]++;else if(\"__proto__\"===p)break;u===l.length-1?c[p]=s:(null==(d=null!=(d=Object.getOwnPropertyDescriptor(c,p))?d.value:d)&&(c[p]=d=f?[]:{}),c=d)}}return n}),ra;function h(t){try{return decodeURIComponent(t)}catch(e){return t}}}function ka(){var a;return ia||(ia=1,a=wa(),aa=function(e){var t=e.indexOf(\"?\"),r=e.indexOf(\"#\"),r=r<0?e.length:r,n=e.slice(0,t<0?r:t).replace(/\\/{2,}/g,\"/\");return n?1<(n=\"/\"!==n[0]?\"/\"+n:n).length&&\"/\"===n[n.length-1]&&(n=n.slice(0,-1)):n=\"/\",{path:n,params:t<0?{}:a(e.slice(t+1,r))}}),aa}function Ia(){var a,i;return ca||(ca=1,a=Mn(),i=new RegExp(\"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$\"),la=function(e,t){var r={};if(null!=t)for(var n in e)a.call(e,n)&&!i.test(n)&&t.indexOf(n)<0&&(r[n]=e[n]);else for(var n in e)a.call(e,n)&&!i.test(n)&&(r[n]=e[n]);return r}),la}function Ra(){var r,E,n,S,A,O,t,C,w,k;return da||(da=1,r=Rn(),E=Pn(),n=ya(),S=Oa(),A=ka(),sa||(sa=1,t=ka(),oa=function(e){var n=t(e),a=Object.keys(n.params),i=[],o=new RegExp(\"^\"+n.path.replace(/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,function(e,t,r){return null==t?\"\\\\\"+e:(i.push({k:t,r:\"...\"===r}),\"...\"===r?\"(.*)\":\".\"===r?\"([^/]+)\\\\.\":\"([^/]+)\"+(r||\"\"))})+\"$\");return function(e){for(var t=0;t<a.length;t++)if(n.params[a[t]]!==e.params[a[t]])return!1;if(!i.length)return o.test(e.path);var r=o.exec(e.path);if(null==r)return!1;for(t=0;t<i.length;t++)e.params[i[t].k]=i[t].r?r[t+1]:decodeURIComponent(r[t+1]);return!0}}),O=oa,C=Aa(),w=Ia(),k={},ua=function(a,c){var u,d,p,f,h,m,e=null==a?null:\"function\"==typeof a.setImmediate?a.setImmediate:a.setTimeout,g=n.resolve(),t=!1,i=!1,_=0,y=k,o={onbeforeupdate:function(){return!(!(_=_?2:1)||k===y)},onremove:function(){a.removeEventListener(\"popstate\",l,!1),a.removeEventListener(\"hashchange\",s,!1)},view:function(){var e;if(_&&k!==y)return e=[r(p,f.key,f)],y?y.render(e[0]):e}},T=b.SKIP={};function s(){t=!1;var e=a.location.hash,o=(e=\"#\"!==b.prefix[0]&&(e=a.location.search+e,\"?\"!==b.prefix[0])&&\"/\"!==(e=a.location.pathname+e)[0]?\"/\"+e:e).concat().replace(/(?:%[a-f89][a-f0-9])+/gim,I).slice(b.prefix.length),s=A(o);function l(e){console.error(e),v(d,null,{replace:!0})}C(s.params,a.history.state),function t(r){for(;r<u.length;r++){var n,e,a,i;if(u[r].check(s))return n=u[r].component,e=u[r].route,i=m=function(e){if(i===m){if(e===T)return t(r+1);p=null==e||\"function\"!=typeof e.view&&\"function\"!=typeof e?\"div\":e,f=s.params,h=o,m=null,y=n.render?n:null,2===_?c.redraw():(_=2,c.redraw.sync())}},void((a=n).view||\"function\"==typeof n?(n={},i(a)):n.onmatch?g.then(function(){return n.onmatch(s.params,o,e)}).then(i,o===d?null:l):i(\"div\"))}if(o===d)throw new Error(\"Could not resolve default route \"+d+\".\");v(d,null,{replace:!0})}(0)}function l(){t||(t=!0,e(s))}function v(e,t,r){var n;e=S(e,t),i?(l(),t=r?r.state:null,n=r?r.title:null,r&&r.replace?a.history.replaceState(t,n,b.prefix+e):a.history.pushState(t,n,b.prefix+e)):a.location.href=b.prefix+e}function b(e,t,r){if(!e)throw new TypeError(\"DOM element being rendered to does not exist.\");if(u=Object.keys(r).map(function(e){if(\"/\"!==e[0])throw new SyntaxError(\"Routes must start with a '/'.\");if(/:([^\\/\\.-]+)(\\.{3})?:/.test(e))throw new SyntaxError(\"Route parameter names must be separated with either '/', '.', or '-'.\");return{route:e,component:r[e],check:O(e)}}),null!=(d=t)){var n=A(t);if(!u.some(function(e){return e.check(n)}))throw new ReferenceError(\"Default route doesn't match any known routes.\")}\"function\"==typeof a.history.pushState?a.addEventListener(\"popstate\",l,!1):\"#\"===b.prefix[0]&&a.addEventListener(\"hashchange\",s,!1),i=!0,c.mount(e,o),s()}return b.set=function(e,t,r){null!=m&&((r=r||{}).replace=!0),m=null,v(e,t,r)},b.get=function(){return h},b.prefix=\"#!\",b.Link={view:function(e){var r,n,a,t=E(e.attrs.selector||\"a\",w(e.attrs,[\"options\",\"params\",\"selector\",\"onclick\"]),e.children);return(t.attrs.disabled=Boolean(t.attrs.disabled))?(t.attrs.href=null,t.attrs[\"aria-disabled\"]=\"true\"):(r=e.attrs.options,n=e.attrs.onclick,a=S(t.attrs.href,e.attrs.params),t.attrs.href=b.prefix+a,t.attrs.onclick=function(e){var t;\"function\"==typeof n?t=n.call(e.currentTarget,e):null!=n&&\"object\"==typeof n&&\"function\"==typeof n.handleEvent&&n.handleEvent(e),!1===t||e.defaultPrevented||0!==e.button&&0!==e.which&&1!==e.which||e.currentTarget.target&&\"_self\"!==e.currentTarget.target||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(e.preventDefault(),e.redraw=!1,b.set(a,null,r))}),t}},b.param=function(e){return f&&null!=e?f[e]:f},b}),ua;function I(t){try{return decodeURIComponent(t)}catch(e){return t}}}function xe(){var e,t,r,n,a;return ma||(ma=1,e=Dn(),ta||(ta=1,t=ya(),r=Ea(),ea=Ca()(\"undefined\"!=typeof window?window:null,t,r.redraw)),t=ea,r=Ea(),(n=function(){return e.apply(this,arguments)}).m=e,n.trust=e.trust,n.fragment=e.fragment,n.Fragment=\"[\",n.mount=r.mount,n.route=(fa||(fa=1,a=Ea(),pa=Ra()(\"undefined\"!=typeof window?window:null,a)),pa),n.render=va(),n.redraw=r.redraw,n.request=t.request,n.jsonp=t.jsonp,n.parseQueryString=wa(),n.buildQueryString=Sa(),n.parsePathname=ka(),n.buildPathname=Oa(),n.vnode=Rn(),n.PromisePolyfill=_a(),n.censor=Ia(),ha=n),ha}var Na,Ma={};function Pa(){return Na||(Na=1,Object.defineProperty(Ma,\"__esModule\",{value:!0}),Ma.search=r,Ma.searchEq=function(e,t,r){var r=i(e,t,r),[n,a]=r;return e[n]===t?r:[a,a]},Ma.searchRange=i,Ma.searchSegment=function(e,t){if(!e.length)return[-1,-1];t=r(e,t);return-1===t?[t,0]:t+1===e.length?[t,-1]:[t,t+1]}),Ma;function r(e,t){return function e(t,r,n,a){var i;return n===a?-1:n+1===a?r>=t[n]?n:-1:r<t[i=Math.floor((a-n)/2)+n]?e(t,r,n,i):e(t,r,i,a)}(e,t,0,e.length)}function i(e,t,r){var[r,n]=r||[0,e.length];return function e(t,r,n,a){if(n!==a){if(n+1===a)return t[n]<=r?[n,a]:[n,n];var i=Math.floor((a-n)/2)+n,o=t[i];if(r<o)return e(t,r,n,i);if(o<r)return e(t,r,i,a);for(;t[n]!==r;)n++;for(;t[a-1]!==r;)a--}return[n,a]}(e,t,r,n)}}var Da,xa={};function Le(){if(!Da){Da=1,Object.defineProperty(xa,\"__esModule\",{value:!0}),xa.AsyncDisposableStack=xa.DisposableStack=void 0;class r{resources;isDisposed=!1;constructor(){this.resources=[]}use(e){return null!=e&&this.resources.push(e),e}defer(e){this.resources.push({[Symbol.dispose]:e})}[Symbol.dispose](){for(this.isDisposed=!0;;){var e=this.resources.pop();if(void 0===e)break;e[Symbol.dispose]()}}dispose(){this[Symbol.dispose]()}adopt(e,t){return this.resources.push({[Symbol.dispose]:()=>t(e)}),e}move(){var e=new r;for(const t of this.resources)e.resources.push(t);return this.resources.length=0,e}[Symbol.toStringTag]=\"DisposableStack\";get disposed(){return this.isDisposed}}xa.DisposableStack=r;class n{resources;isDisposed=!1;constructor(){this.resources=[]}use(e){return null!=e&&(Symbol.asyncDispose in e?this.resources.push(e):Symbol.dispose in e&&this.resources.push({[Symbol.asyncDispose]:async()=>{e[Symbol.dispose]()}})),e}defer(e){this.resources.push({[Symbol.asyncDispose]:e})}async[Symbol.asyncDispose](){for(this.isDisposed=!0;;){var e=this.resources.pop();if(void 0===e)break;await e[Symbol.asyncDispose]()}}asyncDispose(){return this[Symbol.asyncDispose]()}adopt(e,t){return this.resources.push({[Symbol.asyncDispose]:async()=>t(e)}),e}move(){var e=new n;for(const t of this.resources)e.resources.push(t);return this.resources.length=0,e}[Symbol.toStringTag]=\"AsyncDisposableStack\";get disposed(){return this.isDisposed}}xa.AsyncDisposableStack=n}return xa}var La,Fa,Ua={},Ba={};function ja(){if(!La){La=1,Object.defineProperty(Ba,\"__esModule\",{value:!0}),Ba.BigintMath=void 0;class r{static INT64_MAX=2n**63n-1n;static INT64_MIN=-(2n**63n);static bitCeil(e){let t=1n;for(;t<e;)t<<=1n;return t}static bitFloor(e){let t=1n;for(;t<<1n<=e;)t<<=1n;return t}static log2(e){let t=1n,r=0;for(;t<<1n<=e;)t<<=1n,++r;return r}static quant(e,t){return(t=r.max(1n,t))*((e+t/2n)/t)}static quantFloor(e,t){return t=r.max(1n,t),0<=e?e-e%t:e-e%t-(e%t===0n?0n:t)}static quantCeil(e,t){return t=r.max(1n,t),0<=e?e-e%t+(e%t===0n?0n:t):e-e%t}static max(e,t){return t<e?e:t}static min(e,t){return e<t?e:t}static popcount(e){if(e<0n)throw Error(\"Can't get popcount of negative number \"+e);let t=0;for(;e;)1n&e&&++t,e>>=1n;return t}static ratio(e,t){return Number(e)/Number(t)}static abs(e){return e<0n?-1n*e:e}}Ba.BigintMath=r}return Ba}function Fe(){if(Fa)return Ua;Fa=1,Object.defineProperty(Ua,\"__esModule\",{value:!0}),Ua.timezoneOffsetMap=Ua.TimeSpan=Ua.Timecode=Ua.Duration=Ua.Time=void 0,Ua.currentDateHourAndMinute=function(){var e=new Date;return`${e.toISOString().substr(0,10)}-${e.getHours()}-`+e.getMinutes()},Ua.formatDate=function(e,{tzOffsetMins:t=0,printDate:r=!0,printTime:n=!0,printTimezone:a=!0}={}){var e=e.getTime(),i=60*t*1e3,e=new Date(e+i),i=[];r&&(r=e.getUTCFullYear(),o=String(e.getUTCMonth()+1).padStart(2,\"0\"),s=String(e.getUTCDate()).padStart(2,\"0\"),i.push(r+`-${o}-`+s));{var o,s;n&&(r=String(e.getUTCHours()).padStart(2,\"0\"),o=String(e.getUTCMinutes()).padStart(2,\"0\"),s=String(e.getUTCSeconds()).padStart(2,\"0\"),n=String(e.getUTCMilliseconds()).padStart(3,\"0\"),i.push(r+`:${o}:${s}.`+n))}a&&i.push(l(t));return i.join(\" \")},Ua.formatTimezone=l;const s=ja(),r=Pe();class n{static INVALID=n.fromRaw(-1n);static MIN=n.fromRaw(0n);static MAX=n.fromRaw(s.BigintMath.INT64_MAX);static ZERO=n.fromRaw(0n);static fromRaw(e){return e}static fromSeconds(e){return n.fromRaw(BigInt(Math.floor(1e9*e)))}static toSeconds(e){return Number(e)/1e9}static fromMillis(e){return n.fromRaw(BigInt(Math.floor(1e6*e)))}static toMillis(e){return Number(e)/1e6}static fromMicros(e){return n.fromRaw(BigInt(Math.floor(1e3*e)))}static toMicros(e){return Number(e)/1e3}static fromDate(e,t){e=e.getTime();return n.add(n.fromMillis(e),t)}static toDate(e,t){e=n.toMillis(n.sub(e,t));return new Date(e)}static add(e,t){return n.fromRaw(e+t)}static sub(e,t){return n.fromRaw(e-t)}static diff(e,t){return e-t}static durationBetween(e,t){return t-e}static min(e,t){return n.fromRaw(s.BigintMath.min(e,t))}static max(e,t){return n.fromRaw(s.BigintMath.max(e,t))}static quantFloor(e,t){return n.fromRaw(s.BigintMath.quantFloor(e,t))}static quantCeil(e,t){return n.fromRaw(s.BigintMath.quantCeil(e,t))}static quant(e,t){return n.fromRaw(s.BigintMath.quant(e,t))}static formatSeconds(e){return n.toSeconds(e).toString()+\" s\"}static formatMilliseconds(e){return n.toMillis(e).toString()+\" ms\"}static formatMicroseconds(e){return n.toMicros(e).toString()+\" µs\"}static toTimecode(e){return new a(e)}}Ua.Time=n;class t{static MIN=s.BigintMath.INT64_MIN;static MAX=s.BigintMath.INT64_MAX;static ZERO=0n;static fromRaw(e){return e}static min(e,t){return s.BigintMath.min(e,t)}static max(e,t){return s.BigintMath.max(e,t)}static fromMillis(e){return BigInt(Math.floor(e/1e3*1e9))}static toSeconds(e){return Number(e)/1e9}static toMilliseconds(e){return Number(e)/1e6}static toMicroSeconds(e){return Number(e)/1e3}static humanise(e){if(e<1)return\"0s\";var t=[\"ns\",\"µs\",\"ms\",\"s\"];let r=Math.abs(Number(e)),n=0;for(;1e3<=r&&n+1<t.length;)r/=1e3,++n;return\"\"+function(t,r){var e=Math.sign(t);t=Math.abs(t);let n=1,a=0;for(let e=0;e<r;e++,n*=10)t<n&&a++;return(e<0?\"-\":\"\")+(t===Math.round(t)?t:t.toFixed(a))}(Math.sign(Number(e))*r,4)+t[n]}static format(n){let a=\"\";return n<1?\"0s\":([[\"y\",31536000000000000n],[\"d\",86400000000000n],[\"h\",3600000000000n],[\"m\",60000000000n],[\"s\",1000000000n],[\"ms\",1000000n],[\"µs\",1000n],[\"ns\",1n]].forEach(([e,t])=>{var r;t<=n&&(r=n/t,a+=r.toLocaleString()+e+\" \",n%=t)}),a.slice(0,-1))}static formatSeconds(e){return t.toSeconds(e).toString()+\" s\"}static formatMilliseconds(e){return t.toMilliseconds(e).toString()+\" ms\"}static formatMicroseconds(e){return t.toMicroSeconds(e).toString()+\" µs\"}}Ua.Duration=t;class a{sign;days;hours;minutes;seconds;millis;micros;nanos;constructor(e){this.sign=e<0?\"-\":\"\";var e=s.BigintMath.abs(e),t=e/86400000000000n,r=e/3600000000000n%24n,n=e/60000000000n%60n,a=e/1000000000n%60n,i=e/1000000n%1000n,o=e/1000n%1000n,e=e%1000n;this.days=t.toString(),this.hours=r.toString().padStart(2,\"0\"),this.minutes=n.toString().padStart(2,\"0\"),this.seconds=a.toString().padStart(2,\"0\"),this.millis=i.toString().padStart(3,\"0\"),this.micros=o.toString().padStart(3,\"0\"),this.nanos=e.toString().padStart(3,\"0\")}get dhhmmss(){var e=\"0\"===this.days?\"\":this.days+\"d\";return this.sign+e+this.hours+`:${this.minutes}:`+this.seconds}subsec(e=\" \"){return\"\"+this.millis+e+this.micros+e+this.nanos}toString(e=\" \"){return this.dhhmmss+\".\"+this.subsec(e)}}Ua.Timecode=a;class i{static ZERO=new i(n.ZERO,n.ZERO);start;end;constructor(e,t){(0,r.assertTrue)(e<=t,`Span start [${e}] cannot be greater than end [${t}]`),this.start=e,this.end=t}static fromTimeAndDuration(e,t){return new i(e,n.add(e,t))}get duration(){return this.end-this.start}get midpoint(){return n.fromRaw((this.start+this.end)/2n)}contains(e){return this.start<=e&&e<this.end}containsSpan(e,t){return this.start<=e&&t<=this.end}overlaps(e,t){return!(t<=this.start||e>=this.end)}equals(e){return this.start===e.start&&this.end===e.end}translate(e){return new i(n.add(this.start,e),n.add(this.end,e))}pad(e){return new i(n.sub(this.start,e),n.add(this.end,e))}}function l(e){var t=0<=e?\"+\":\"-\",e=Math.abs(e),r=Math.floor(e/60),e=e%60;return`UTC${t}${String(r).padStart(2,\"0\")}:`+String(e).padStart(2,\"0\")}return Ua.TimeSpan=i,Ua.timezoneOffsetMap={\"(UTC-12:00) International Date Line West\":-720,\"(UTC-11:00) Coordinated Universal Time-11\":-660,\"(UTC-10:00) Hawaii\":-600,\"(UTC-09:30) Marquesas Islands\":-570,\"(UTC-09:00) Alaska\":-540,\"(UTC-08:00) Pacific Time (US & Canada)\":-480,\"(UTC-07:00) Mountain Time (US & Canada)\":-420,\"(UTC-06:00) Central Time (US & Canada), Mexico City\":-360,\"(UTC-05:00) Eastern Time (US & Canada), Bogota, Lima\":-300,\"(UTC-04:00) Atlantic Time (Canada), La Paz\":-240,\"(UTC-03:30) Newfoundland\":-210,\"(UTC-03:00) Buenos Aires, São Paulo\":-180,\"(UTC-02:00) Coordinated Universal Time-02\":-120,\"(UTC-01:00) Azores, Cape Verde Is.\":-60,\"(UTC+00:00) London, Dublin, Lisbon, Casablanca\":0,\"(UTC+01:00) Amsterdam, Berlin, Paris, Rome, Madrid\":60,\"(UTC+02:00) Athens, Cairo, Johannesburg, Helsinki\":120,\"(UTC+03:00) Moscow, Istanbul, Riyadh, Nairobi\":180,\"(UTC+03:30) Tehran\":210,\"(UTC+04:00) Dubai, Abu Dhabi, Muscat, Baku\":240,\"(UTC+04:30) Kabul\":270,\"(UTC+05:00) Karachi, Tashkent\":300,\"(UTC+05:30) Mumbai, New Delhi, Kolkata, Colombo\":330,\"(UTC+05:45) Kathmandu\":345,\"(UTC+06:00) Almaty, Dhaka\":360,\"(UTC+06:30) Yangon (Rangoon)\":390,\"(UTC+07:00) Bangkok, Hanoi, Jakarta\":420,\"(UTC+08:00) Beijing, Hong Kong, Singapore, Taipei, Perth\":480,\"(UTC+08:45) Eucla\":525,\"(UTC+09:00) Tokyo, Seoul, Osaka, Sapporo\":540,\"(UTC+09:30) Adelaide, Darwin\":570,\"(UTC+10:00) Sydney, Melbourne, Brisbane, Guam\":600,\"(UTC+10:30) Lord Howe Island\":630,\"(UTC+11:00) Solomon Is., New Caledonia\":660,\"(UTC+12:00) Auckland, Wellington, Fiji\":720,\"(UTC+12:45) Chatham Islands\":765,\"(UTC+13:00) Nuku'alofa\":780,\"(UTC+14:00) Kiritimati\":840},Ua}var Ha,Ga,Va={},qa={};function za(){if(!Ha){Ha=1,Object.defineProperty(qa,\"__esModule\",{value:!0}),qa.PerfStats=void 0,qa.runningStatStr=function(e){return`Last: ${e.last.toFixed(2)}ms | `+`Avg: ${e.mean.toFixed(2)}ms | `+`Avg${e.maxBufferSize}: ${e.bufferMean.toFixed(2)}ms`};qa.PerfStats=class{_maxBufferSize;_count=0;_mean=0;_lastValue=0;_ptr=0;buffer=[];constructor(e=10){this._maxBufferSize=e}addValue(e){this._lastValue=e,this.buffer.length>=this._maxBufferSize?(this.buffer[this._ptr++]=e,this._ptr>=this.buffer.length&&(this._ptr-=this.buffer.length)):this.buffer.push(e),this._mean=(this._mean*this._count+e)/(this._count+1),this._count++}get mean(){return this._mean}get count(){return this._count}get bufferMean(){return this.buffer.reduce((e,t)=>e+t,0)/this.buffer.length}get bufferSize(){return this.buffer.length}get maxBufferSize(){return this._maxBufferSize}get last(){return this._lastValue}}}return qa}function K(){if(!Ga){Ga=1,Object.defineProperty(Va,\"__esModule\",{value:!0}),Va.raf=Va.RafScheduler=void 0;var e=Jr,t=za();const r=e.__importDefault(xe());class n{animationCallbacks=new Set;canvasRedrawCallbacks=new Set;postRedrawCallbacks=new Array;hasScheduledNextFrame=!1;requestedFullRedraw=!1;isRedrawing=!1;_shutdown=!1;recordPerfStats=!1;mounts=new Map;perfStats={rafActions:new t.PerfStats,rafCanvas:new t.PerfStats,rafDom:new t.PerfStats,rafTotal:new t.PerfStats,domRedraw:new t.PerfStats};constructor(){var e=r.default.redraw.sync,t=()=>this.scheduleFullRedraw();t.sync=e,r.default.redraw=t,r.default.mount=this.mount.bind(this)}scheduleFullRedraw(e){this.requestedFullRedraw=!0,e&&this.postRedrawCallbacks.push(e),this.maybeScheduleAnimationFrame(!0)}scheduleCanvasRedraw(){this.maybeScheduleAnimationFrame(!0)}startAnimation(e){this.animationCallbacks.add(e),this.maybeScheduleAnimationFrame()}stopAnimation(e){this.animationCallbacks.delete(e)}addCanvasRedrawCallback(e){this.canvasRedrawCallbacks.add(e);const t=this.canvasRedrawCallbacks;return{[Symbol.dispose](){t.delete(e)}}}mount(e,t){var r=this.mounts;null===t?r.delete(e):r.set(e,t),this.syncDomRedrawMountEntry(e,t)}shutdown(){this._shutdown=!0}setPerfStatsEnabled(e){this.recordPerfStats=e}get hasPendingRedraws(){return this.isRedrawing||this.hasScheduledNextFrame}syncDomRedraw(){var e,t,r=performance.now();for([e,t]of this.mounts.entries())this.syncDomRedrawMountEntry(e,t);this.recordPerfStats&&this.perfStats.domRedraw.addValue(performance.now()-r)}syncDomRedrawMountEntry(e,t){(0,r.default.render)(e,null!==t?(0,r.default)(t):null,()=>this.scheduleFullRedraw())}syncCanvasRedraw(){var e=performance.now();this.isRedrawing||(this.isRedrawing=!0,this.canvasRedrawCallbacks.forEach(e=>e()),this.isRedrawing=!1,this.recordPerfStats&&this.perfStats.rafCanvas.addValue(performance.now()-e))}maybeScheduleAnimationFrame(e=!1){this.hasScheduledNextFrame||0===this.animationCallbacks.size&&!e||(this.hasScheduledNextFrame=!0,window.requestAnimationFrame(this.onAnimationFrame.bind(this)))}onAnimationFrame(t){var e,r,n,a,i;this._shutdown||(this.hasScheduledNextFrame=!1,e=this.requestedFullRedraw,this.requestedFullRedraw=!1,r=performance.now(),this.animationCallbacks.forEach(e=>e(t)),n=performance.now(),e&&this.syncDomRedraw(),a=performance.now(),this.syncCanvasRedraw(),i=performance.now(),this.updatePerfStats(n-r,a-n,i-a,i-r),this.maybeScheduleAnimationFrame(),e&&0<this.postRedrawCallbacks.length&&this.postRedrawCallbacks.splice(0).forEach(e=>e()))}updatePerfStats(e,t,r,n){this.recordPerfStats&&(this.perfStats.rafActions.addValue(e),this.perfStats.rafDom.addValue(t),this.perfStats.rafCanvas.addValue(r),this.perfStats.rafTotal.addValue(n))}}Va.RafScheduler=n,Va.raf=new n}return Va}var Wa,$a,Ka={},Ya={};function Ja(){return Wa||(Wa=1,Object.defineProperty(Ya,\"__esModule\",{value:!0}),Ya.defer=function(){let r=null,n=null;var e=new Promise((e,t)=>[r,n]=[e,t]);return Object.assign(e,{resolve:r,reject:n})}),Ya}function Ue(){return $a||($a=1,function(l){Object.defineProperty(l,\"__esModule\",{value:!0}),l.QueryError=l.LONG_NULL=l.LONG=l.BLOB_NULL=l.BLOB=l.STR_NULL=l.NUM_NULL=l.STR=l.NUM=l.UNKNOWN=void 0,l.checkExtends=function(e,t){if(e===t)return!0;t=a(t);return t.includes(e)},l.unionTypes=function(e,t){if(e===t)return e;var e=a(e),r=a(t);for(const n of e)if(r.includes(n))return n;return},l.decodeInt64Varint=f,l.createQueryResult=function(e){return new T(e)},l.timeFromSql=function(e){{if(\"bigint\"==typeof e)return r.Time.fromRaw(e);if(\"number\"==typeof e)return r.Time.fromRaw(BigInt(Math.floor(e)));if(null===e)return r.Time.ZERO;throw Error(\"Refusing to create time from unrelated type \"+e)}},l.durationFromSql=function(e){{if(\"bigint\"==typeof e)return e;if(\"number\"==typeof e)return BigInt(Math.floor(e));if(null===e)return r.Duration.ZERO;throw Error(\"Refusing to create duration from unrelated type \"+e)}};var c,e=Jr;Ht();const u=e.__importDefault(Qr()),t=Ja(),d=Pe(),s=j(),r=Fe(),p=(l.UNKNOWN=null,l.NUM=0,l.STR=\"str\",l.NUM_NULL=1,l.STR_NULL=\"str_null\",l.BLOB=new Uint8Array,l.BLOB_NULL=new Uint8Array,l.LONG=0n,l.LONG_NULL=1n,32n),n=new Map([[l.NUM,{extends:l.NUM_NULL}],[l.NUM_NULL,{extends:l.UNKNOWN}],[l.LONG,{extends:l.LONG_NULL}],[l.LONG_NULL,{extends:l.UNKNOWN}],[l.BLOB,{extends:l.BLOB_NULL}],[l.BLOB_NULL,{extends:l.UNKNOWN}],[l.STR,{extends:l.STR_NULL}],[l.STR_NULL,{extends:l.UNKNOWN}],[l.UNKNOWN,{}]]);function a(e){var t=[e];let r=n.get(e);for(;r&&void 0!==r.extends;)t.push(r.extends),r=n.get(r.extends);return t}function f(e,t){let r=0,n=0,a=0;if(!(4<e.length-t)){for(;a<3;++a){if(t>=e.length)throw Error(\"Index out of range\");if(n=(n|(127&e[t])<<7*a)>>>0,e[t++]<128)return BigInt(n)}return n=(n|(127&e[t++])<<7*a)>>>0,BigInt(r)<<p|BigInt(n)}for(;a<4;++a)if(n=(n|(127&e[t])<<7*a)>>>0,e[t++]<128)return BigInt(n);if(n=(n|(127&e[t])<<28)>>>0,r=(r|(127&e[t])>>4)>>>0,e[t++]<128)return BigInt(r)<<p|BigInt(n);if(a=0,4<e.length-t)for(;a<5;++a){var i;if(r=(r|(127&e[t])<<7*a+3)>>>0,e[t++]<128)return i=BigInt(r)<<p|BigInt(n),BigInt.asIntN(64,i)}else for(;a<5;++a){if(t>=e.length)throw Error(\"Index out of range\");var o;if(r=(r|(127&e[t])<<7*a+3)>>>0,e[t++]<128)return o=BigInt(r)<<p|BigInt(n),BigInt.asIntN(64,o)}throw Error(\"invalid varint encoding\")}class i extends Error{query;constructor(e,t){super(e),this.query=t.query}toString(){return super.toString()+`\nQuery:\n`+this.query}}function o(e){switch(e){case l.NUM:return\"NUM\";case l.NUM_NULL:return\"NUM_NULL\";case l.STR:return\"STR\";case l.STR_NULL:return\"STR_NULL\";case l.BLOB:return\"BLOB\";case l.BLOB_NULL:return\"BLOB_NULL\";case l.LONG:return\"LONG\";case l.LONG_NULL:return\"LONG_NULL\";case l.UNKNOWN:return\"UNKNOWN\";default:return`INVALID(${e})`}}l.QueryError=i,(e=c=c||{})[e.CELL_NULL=1]=\"CELL_NULL\",e[e.CELL_VARINT=2]=\"CELL_VARINT\",e[e.CELL_FLOAT64=3]=\"CELL_FLOAT64\",e[e.CELL_STRING=4]=\"CELL_STRING\",e[e.CELL_BLOB=5]=\"CELL_BLOB\";const h=[\"UNKNOWN\",\"NULL\",\"VARINT\",\"FLOAT64\",\"STRING\",\"BLOB\"];class m{columnNames=[];_error;_numRows=0;_isComplete=!1;_errorInfo;_statementCount=0;_statementWithOutputCount=0;_lastStatementSql=\"\";constructor(e){this._errorInfo=e}batches=[];allRowsPromise;moreRowsPromise;isComplete(){return this._isComplete}numRows(){return this._numRows}error(){return this._error}columns(){return this.columnNames}statementCount(){return this._statementCount}statementWithOutputCount(){return this._statementWithOutputCount}lastStatementSql(){return this._lastStatementSql}iter(e){return new y(e,this)}firstRow(e){e=new y(e,this);return(0,d.assertTrue)(e.valid()),e}maybeFirstRow(e){e=new y(e,this);if(e.valid())return e}waitAllRows(){return(0,d.assertTrue)(void 0===this.allRowsPromise),this.allRowsPromise=(0,t.defer)(),this._isComplete&&this.resolveOrReject(this.allRowsPromise,this),this.allRowsPromise}waitMoreRows(){var e;return void 0!==this.moreRowsPromise?this.moreRowsPromise:(e=(0,t.defer)(),this._isComplete?this.resolveOrReject(e,this):this.moreRowsPromise=e,e)}appendResultBatch(e){for(var r=u.default.Reader.create(e),n=((0,d.assertTrue)(0===r.pos),0===this.columnNames.length),a=new Set;r.pos<r.len;){var i=r.uint32();switch(i>>>3){case 1:(0,d.assertTrue)(n);var o=r.string();let t=o;for(let e=1;a.has(t);++e)t=o+\"_\"+e,(0,d.assertTrue)(e<100);a.add(t),this.columnNames.push(t);break;case 2:var s=r.string();this._error=void 0!==s&&s.length?s:void 0;break;case 3:var s=r.uint32(),l=e.subarray(r.pos,r.pos+s),l=(r.pos+=s,new g(l)),c=(this.batches.push(l),this._isComplete=l.isLastBatch,this.columnNames.length);0!==c?((0,d.assertTrue)(l.numCells%c==0),this._numRows+=l.numCells/c):(0,d.assertTrue)(0===l.numCells);break;case 4:this._statementCount=r.uint32();break;case 5:this._statementWithOutputCount=r.uint32();break;case 6:this._lastStatementSql=r.string();break;default:console.warn(\"Unexpected QueryResult field \"+(i>>>3)),r.skipType(7&i)}}void 0!==this.moreRowsPromise&&(this.resolveOrReject(this.moreRowsPromise,this),this.moreRowsPromise=void 0),this._isComplete&&void 0!==this.allRowsPromise&&this.resolveOrReject(this.allRowsPromise,this)}ensureAllRowsPromise(){return void 0===this.allRowsPromise&&this.waitAllRows(),(0,d.assertExists)(this.allRowsPromise)}get errorInfo(){return this._errorInfo}resolveOrReject(e,t){void 0===this._error?e.resolve(t):e.reject(new i(this._error,this._errorInfo))}}class g{isLastBatch=!1;batchBytes;cellTypesOff=0;cellTypesLen=0;varintOff=0;varintLen=0;float64Cells=new Float64Array;blobCells=[];stringCells=[];constructor(e){this.batchBytes=e;for(var t=u.default.Reader.create(e),r=((0,d.assertTrue)(0===t.pos),t.len);t.pos<r;){var n=t.uint32();switch(n>>>3){case 1:(0,d.assertTrue)(2==(7&n)),this.cellTypesLen=t.uint32(),this.cellTypesOff=t.pos,t.pos+=this.cellTypesLen;break;case 2:(0,d.assertTrue)(2==(7&n));var a=t.uint32();this.varintOff=t.pos,this.varintLen=a,(0,d.assertTrue)(t.buf===e),(0,d.assertTrue)(this.varintOff+this.varintLen<=e.byteOffset+e.byteLength),t.pos+=a;break;case 3:(0,d.assertTrue)(2==(7&n));var a=t.uint32(),i=((0,d.assertTrue)(a%8==0),a/8),o=e.byteOffset+t.pos;o%8==0?this.float64Cells=new Float64Array(e.buffer,o,i):(i=e.buffer.slice(o,o+a),this.float64Cells=new Float64Array(i)),t.pos+=a;break;case 4:(0,d.assertTrue)(2==(7&n)),this.blobCells.push(new Uint8Array(t.bytes()));break;case 5:(0,d.assertTrue)(2==(7&n));o=t.uint32(),i=((0,d.assertTrue)(t.pos+o<=r),e.subarray(t.pos,t.pos+o));(0,d.assertTrue)(i.length===o),this.stringCells=(0,s.utf8Decode)(i).split(\"\\0\"),t.pos+=o;break;case 6:this.isLastBatch=!!t.bool();break;case 7:t.skipType(7&n);break;default:console.warn(\"Unexpected QueryResult.CellsBatch field \"+(n>>>3)),t.skipType(7&n)}}}get numCells(){return this.cellTypesLen}}class _{rowSpec;rowData;resultObj;batchIdx=-1;batchBytes=new Uint8Array;columnNames=[];numColumns=0;cellTypesEnd=-1;float64Cells=new Float64Array;varIntReader=u.default.Reader.create(this.batchBytes);blobCells=[];stringCells=[];nextCellTypeOff=0;nextFloat64Cell=0;nextStringCell=0;nextBlobCell=0;isValid=!1;constructor(e,t,r){Object.assign(this,e),this.rowData=t,this.rowSpec={...e},this.resultObj=r,this.next()}valid(){return this.isValid}makeError(e){return new i(e,this.resultObj.errorInfo)}get(e){var t=this.rowData[e];if(void 0===t)throw this.makeError(`Column '${e}' doesn't exist. `+`Actual columns: [${this.columnNames.join(\",\")}]`);return t}next(){for(;this.nextCellTypeOff+this.numColumns>this.cellTypesEnd;)if((0,d.assertTrue)(this.nextCellTypeOff===this.cellTypesEnd||-1===this.cellTypesEnd),!this.tryMoveToNextBatch())return void(this.isValid=!1);var t=this.rowData,r=this.numColumns;for(let e=0;e<r;e++){var n,a=this.batchBytes[this.nextCellTypeOff++],i=this.columnNames[e],o=this.rowSpec[i];switch(a){case c.CELL_NULL:t[i]=null;break;case c.CELL_VARINT:o===l.NUM||o===l.NUM_NULL?(n=this.varIntReader.int64(),t[i]=n):(n=f(this.batchBytes,this.varIntReader.pos),t[i]=n,this.varIntReader.skip());break;case c.CELL_FLOAT64:t[i]=this.float64Cells[this.nextFloat64Cell++];break;case c.CELL_STRING:t[i]=this.stringCells[this.nextStringCell++];break;case c.CELL_BLOB:var s=this.blobCells[this.nextBlobCell++];t[i]=s;break;default:throw this.makeError(\"Invalid cell type \"+a)}}this.isValid=!0}tryMoveToNextBatch(){var e=this.batchIdx+1;if(e>=this.resultObj.batches.length)return!1;this.columnNames=this.resultObj.columnNames,this.numColumns=this.columnNames.length,this.batchIdx=e;e=(0,d.assertExists)(this.resultObj.batches[e]);this.batchBytes=e.batchBytes,this.nextCellTypeOff=e.cellTypesOff,this.cellTypesEnd=e.cellTypesOff+e.cellTypesLen,this.float64Cells=e.float64Cells,this.blobCells=e.blobCells,this.stringCells=e.stringCells,this.varIntReader=u.default.Reader.create(e.batchBytes),this.varIntReader.pos=e.varintOff,this.varIntReader.len=e.varintOff+e.varintLen,this.nextFloat64Cell=0,this.nextStringCell=0,this.nextBlobCell=0;for(const t of Object.keys(this.rowSpec))if(this.columnNames.indexOf(t)<0)throw this.makeError(`Column ${t} not found in the SQL result `+`set {${this.columnNames.join(\" \")}}`);var r=this.numColumns;if(0===e.numCells)return(0,d.assertTrue)(e.isLastBatch),!1;(0,d.assertTrue)(0<r);for(let t=this.nextCellTypeOff;t<this.cellTypesEnd;t++){var n=(t-this.nextCellTypeOff)%r,n=this.columnNames[n],a=this.batchBytes[t],i=this.rowSpec[n];if(void 0!==i){let e=\"\";if(0<(e=!function(e,t){switch(e){case c.CELL_NULL:return t===l.NUM_NULL||t===l.STR_NULL||t===l.BLOB_NULL||t===l.LONG_NULL||t===l.UNKNOWN;case c.CELL_VARINT:return t===l.NUM||t===l.NUM_NULL||t===l.LONG||t===l.LONG_NULL||t===l.UNKNOWN;case c.CELL_FLOAT64:return t===l.NUM||t===l.NUM_NULL||t===l.UNKNOWN;case c.CELL_STRING:return t===l.STR||t===l.STR_NULL||t===l.UNKNOWN;case c.CELL_BLOB:return t===l.BLOB||t===l.BLOB_NULL||t===l.UNKNOWN;default:throw new Error(\"Unknown CellType \"+e)}}(a,i)?a===c.CELL_NULL?\"SQL value is NULL but that was not expected\"+` (expected type: ${o(i)}). `+\"Did you mean NUM_NULL, LONG_NULL, STR_NULL or BLOB_NULL?\":`Incompatible cell type. Expected: ${o(i)} actual: `+h[a]:e).length)throw i=`Error @ row: ${Math.floor(t/r)} col: '${n}': `+e,this.makeError(i)}}return!0}}class y{_impl;next;valid;get;constructor(e,t){Object.assign(this,e),this._impl=new _(e,this,t),this.next=this._impl.next.bind(this._impl),this.valid=this._impl.valid.bind(this._impl),this.get=this._impl.get.bind(this._impl)}}class T{impl;thenCalled=!1;constructor(e){this.impl=new m(e)}iter(e){return this.impl.iter(e)}firstRow(e){return this.impl.firstRow(e)}maybeFirstRow(e){return this.impl.maybeFirstRow(e)}waitAllRows(){return this.impl.waitAllRows()}waitMoreRows(){return this.impl.waitMoreRows()}isComplete(){return this.impl.isComplete()}numRows(){return this.impl.numRows()}columns(){return this.impl.columns()}error(){return this.impl.error()}statementCount(){return this.impl.statementCount()}statementWithOutputCount(){return this.impl.statementWithOutputCount()}lastStatementSql(){return this.impl.lastStatementSql()}appendResultBatch(e){return this.impl.appendResultBatch(e)}then(e,t){return(0,d.assertFalse)(this.thenCalled),this.thenCalled=!0,this.impl.ensureAllRowsPromise().then(e,t)}catch(e){return this.impl.ensureAllRowsPromise().catch(e)}finally(e){return this.impl.ensureAllRowsPromise().finally(e)}get[Symbol.toStringTag](){return\"Promise<WaitableQueryResult>\"}}}(Ka)),Ka}var Qa,Za={},Xa={};function be(){return Qa||(Qa=1,Object.defineProperty(Xa,\"__esModule\",{value:!0}),Xa.classNames=function(...t){let r=\"\";for(let e=0;e<t.length;++e)t[e]&&(r+=r?\" \"+t[e]:t[e]);return r||void 0}),Xa}var ei,ti={};function Be(){if(!ei){ei=1,Object.defineProperty(ti,\"__esModule\",{value:!0}),ti.Intent=void 0,ti.classForIntent=function(e){switch(e){case t.None:return;case t.Primary:return\"pf-intent-primary\";case t.Success:return\"pf-intent-success\";case t.Danger:return\"pf-intent-danger\";case t.Warning:return\"pf-intent-warning\";default:return(0,r.assertUnreachable)(e)}},ti.classForSpacing=function(e){switch(e){case\"none\":return\"pf-spacing-none\";case\"small\":return\"pf-spacing-small\";case\"medium\":return\"pf-spacing-medium\";case\"large\":return\"pf-spacing-large\";default:(0,r.assertUnreachable)(e)}};const r=Pe();var t,e;(e=t||(ti.Intent=t={})).None=\"None\",e.Primary=\"Primary\",e.Success=\"Success\",e.Danger=\"Danger\",e.Warning=\"Warning\"}return ti}var ri,ni={};function Ee(){if(!ri){ri=1,Object.defineProperty(ni,\"__esModule\",{value:!0}),ni.Icon=void 0;const o=Jr.__importDefault(xe()),s=be(),l=Be();ni.Icon=class{view({attrs:e}){const{icon:t,filled:r,className:n,intent:a=l.Intent.None,...i}=e;return(0,o.default)(\"i.pf-icon\",{...i,className:(0,s.classNames)(n,r&&\"pf-filled\",(0,l.classForIntent)(a))},t)}}}return ni}var ai,ii={},oi={};function si(){var C,w,T,k,I,R,N,M,P,D,v,_,d,p,y,x,L,A,f,l,e,t,O,r,n,a,i,o,V,q,z,W,$,K,Y;return ai||(ai=1,Object.defineProperty(oi,\"__esModule\",{value:!0}),C=Math.max,w=Math.min,T=Math.round,M=\"auto\",D=\"start\",v=\"end\",_=\"clippingParents\",d=\"viewport\",p=\"popper\",y=\"reference\",x=(P=[k=\"top\",I=\"bottom\",R=\"right\",N=\"left\"]).reduce(function(e,t){return e.concat([t+\"-\"+D,t+\"-\"+v])},[]),L=[].concat(P,[M]).reduce(function(e,t){return e.concat([t,t+\"-\"+D,t+\"-\"+v])},[]),A=[\"beforeRead\",\"read\",\"afterRead\",\"beforeMain\",\"main\",\"afterMain\",\"beforeWrite\",\"write\",\"afterWrite\"],f={placement:\"bottom\",modifiers:[],strategy:\"absolute\"},O={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"},i={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},o={start:\"end\",end:\"start\"},$=ge({defaultModifiers:[e={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:function(e){var t=e.state,r=e.instance,n=(e=e.options).scroll,a=void 0===n||n,i=void 0===(n=e.resize)||n,o=b(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&s.forEach(function(e){e.addEventListener(\"scroll\",r.update,l)}),i&&o.addEventListener(\"resize\",r.update,l),function(){a&&s.forEach(function(e){e.removeEventListener(\"scroll\",r.update,l)}),i&&o.removeEventListener(\"resize\",r.update,l)}},data:{}},t={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:function(e){var t=e.state,e=e.name;t.modifiersData[e]=de({reference:t.rects.reference,element:t.rects.popper,strategy:\"absolute\",placement:t.placement})},data:{}},r={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:function(e){var t=e.state,e=e.options,r=void 0===(r=e.gpuAcceleration)||r,n=void 0===(n=e.adaptive)||n,e=void 0===(e=e.roundOffsets)||e,r={placement:U(t.placement),variation:B(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:\"fixed\"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,_e(Object.assign({},r,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n,roundOffsets:e})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,_e(Object.assign({},r,{offsets:t.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:e})))),t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-placement\":t.placement})},data:{}},n={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:function(e){var a=e.state;Object.keys(a.elements).forEach(function(e){var t=a.styles[e]||{},r=a.attributes[e]||{},n=a.elements[e];c(n)&&u(n)&&(Object.assign(n.style,t),Object.keys(r).forEach(function(e){var t=r[e];!1===t?n.removeAttribute(e):n.setAttribute(e,!0===t?\"\":t)}))})},effect:function(e){var n=e.state,a={popper:{position:n.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(n.elements.popper.style,a.popper),n.styles=a,n.elements.arrow&&Object.assign(n.elements.arrow.style,a.arrow),function(){Object.keys(n.elements).forEach(function(e){var t=n.elements[e],r=n.attributes[e]||{},e=Object.keys((n.styles.hasOwnProperty(e)?n.styles:a)[e]).reduce(function(e,t){return e[t]=\"\",e},{});c(t)&&u(t)&&(Object.assign(t.style,e),Object.keys(r).forEach(function(e){t.removeAttribute(e)}))})}},requires:[\"computeStyles\"]}]}),Y=ge({defaultModifiers:K=[e,t,r,n,a={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:function(e){var o=e.state,t=e.options,e=e.name,s=void 0===(t=t.offset)?[0,0]:t,t=L.reduce(function(e,t){var r,n,a,i;return e[t]=(t=t,r=o.rects,n=s,a=U(t),i=0<=[N,k].indexOf(a)?-1:1,t=(r=\"function\"==typeof n?n(Object.assign({},r,{placement:t})):n)[0]||0,n=(r[1]||0)*i,0<=[N,R].indexOf(a)?{x:n,y:t}:{x:t,y:n}),e},{}),r=(n=t[o.placement]).x,n=n.y;null!=o.modifiersData.popperOffsets&&(o.modifiersData.popperOffsets.x+=r,o.modifiersData.popperOffsets.y+=n),o.modifiersData[e]=t}},V={name:\"flip\",enabled:!0,phase:\"main\",fn:function(e){var d=e.state,t=e.options,e=e.name;if(!d.modifiersData[e]._skip){for(var r=t.mainAxis,n=void 0===r||r,r=t.altAxis,a=void 0===r||r,r=t.fallbackPlacements,p=t.padding,f=t.boundary,h=t.rootBoundary,i=t.altBoundary,o=t.flipVariations,m=void 0===o||o,g=t.allowedAutoPlacements,o=d.options.placement,t=U(o),r=r||(t===o||!m?[H(o)]:U(r=o)===M?[]:(t=H(r),[ye(r),t,ye(t)])),s=[o].concat(r).reduce(function(e,t){return e.concat(U(t)===M?(r=d,n=(e=e=void 0===(e={placement:t,boundary:f,rootBoundary:h,padding:p,flipVariations:m,allowedAutoPlacements:g})?{}:e).placement,a=e.boundary,i=e.rootBoundary,o=e.padding,s=e.flipVariations,l=void 0===(e=e.allowedAutoPlacements)?L:e,c=B(n),e=c?s?x:x.filter(function(e){return B(e)===c}):P,u=(n=0===(n=e.filter(function(e){return 0<=l.indexOf(e)})).length?e:n).reduce(function(e,t){return e[t]=j(r,{placement:t,boundary:a,rootBoundary:i,padding:o})[U(t)],e},{}),Object.keys(u).sort(function(e,t){return u[e]-u[t]})):t);var r,n,a,i,o,s,l,c,u},[]),l=d.rects.reference,c=d.rects.popper,u=new Map,_=!0,y=s[0],T=0;T<s.length;T++){var v=s[T],b=U(v),E=B(v)===D,S=0<=[k,I].indexOf(b),A=S?\"width\":\"height\",O=j(d,{placement:v,boundary:f,rootBoundary:h,altBoundary:i,padding:p}),S=S?E?R:N:E?I:k,E=(l[A]>c[A]&&(S=H(S)),H(S)),A=[];if(n&&A.push(O[b]<=0),a&&A.push(O[S]<=0,O[E]<=0),A.every(function(e){return e})){y=v,_=!1;break}u.set(v,A)}if(_)for(var C=m?3:1;0<C;C--)if(\"break\"===function(t){var e=s.find(function(e){e=u.get(e);if(e)return e.slice(0,t).every(function(e){return e})});if(e)return y=e,\"break\"}(C))break;d.placement!==y&&(d.modifiersData[e]._skip=!0,d.placement=y,d.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!(l={passive:!0})}},q={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(e){var t,r,n,a,i,o,s,l,c,u=e.state,d=e.options,e=e.name,p=void 0===(p=d.mainAxis)||p,f=void 0!==(f=d.altAxis)&&f,h=d.boundary,m=d.rootBoundary,g=d.altBoundary,_=d.padding,y=void 0===(y=d.tether)||y,d=void 0===(d=d.tetherOffset)?0:d,h=j(u,{boundary:h,rootBoundary:m,padding:_,altBoundary:g}),m=U(u.placement),g=!(_=B(u.placement)),T=ue(m),v=\"x\"===T?\"y\":\"x\",b=u.modifiersData.popperOffsets,E=u.rects.reference,S=u.rects.popper,d=\"number\"==typeof(d=\"function\"==typeof d?d(Object.assign({},u.rects,{placement:u.placement})):d)?{mainAxis:d,altAxis:d}:Object.assign({mainAxis:0,altAxis:0},d),A=u.modifiersData.offset?u.modifiersData.offset[u.placement]:null,O={x:0,y:0};b&&(p&&(p=\"y\"===T?\"height\":\"width\",o=(s=b[T])+h[r=\"y\"===T?k:N],l=s-h[c=\"y\"===T?I:R],t=y?-S[p]/2:0,a=(_===D?E:S)[p],_=_===D?-S[p]:-E[p],i=u.elements.arrow,i=y&&i?ne(i):{width:0,height:0},r=(n=u.modifiersData[\"arrow#persistent\"]?u.modifiersData[\"arrow#persistent\"].padding:pe())[r],n=n[c],c=G(0,E[p],i[p]),i=g?E[p]/2-t-c-r-d.mainAxis:a-c-r-d.mainAxis,a=g?-E[p]/2+t+c+n+d.mainAxis:_+c+n+d.mainAxis,g=(r=u.elements.arrow&&F(u.elements.arrow))?\"y\"===T?r.clientTop||0:r.clientLeft||0:0,_=s+a-(t=null!=(p=null==A?void 0:A[T])?p:0),c=G(y?w(o,s+i-t-g):o,s,y?C(l,_):l),b[T]=c,O[T]=c-s),f&&(n=\"y\"==v?\"height\":\"width\",a=(r=b[v])+h[\"x\"===T?k:N],p=r-h[\"x\"===T?I:R],i=-1!==[k,N].indexOf(m),g=null!=(t=null==A?void 0:A[v])?t:0,o=i?a:r-E[n]-S[n]-g+d.altAxis,_=i?r+E[n]+S[n]-g-d.altAxis:p,s=y&&i?(l=G(l=o,r,c=_),c<l?c:l):G(y?o:a,r,y?_:p),b[v]=s,O[v]=s-r),u.modifiersData[e]=O)},requiresIfExists:[\"offset\"]},z={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(e){var t,r,n,a,i=e.state,o=e.name,e=e.options,s=i.elements.arrow,l=i.modifiersData.popperOffsets,c=ue(u=U(i.placement)),u=0<=[N,R].indexOf(u)?\"height\":\"width\";s&&l&&(e=e.padding,r=i,r=fe(\"number\"!=typeof(e=\"function\"==typeof e?e(Object.assign({},r.rects,{placement:r.placement})):e)?e:he(e,P)),e=ne(s),a=\"y\"===c?k:N,n=\"y\"===c?I:R,t=i.rects.reference[u]+i.rects.reference[c]-l[c]-i.rects.popper[u],l=l[c]-i.rects.reference[c],s=(s=F(s))?\"y\"===c?s.clientHeight||0:s.clientWidth||0:0,a=r[a],r=s-e[u]-r[n],a=G(a,n=s/2-e[u]/2+(t/2-l/2),r),i.modifiersData[o]=((s={})[c]=a,s.centerOffset=a-n,s))},effect:function(e){var t=e.state;null!=(e=void 0===(e=e.options.element)?\"[data-popper-arrow]\":e)&&(\"string\"!=typeof e||(e=t.elements.popper.querySelector(e)))&&oe(t.elements.popper,e)&&(t.elements.arrow=e)},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]},W={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(e){var t=e.state,e=e.name,r=t.rects.reference,n=t.rects.popper,a=t.modifiersData.preventOverflow,i=j(t,{elementContext:\"reference\"}),o=j(t,{altBoundary:!0}),i=Te(i,r),r=Te(o,n,a),o=ve(i),n=ve(r);t.modifiersData[e]={referenceClippingOffsets:i,popperEscapeOffsets:r,isReferenceHidden:o,hasPopperEscaped:n},t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-reference-hidden\":o,\"data-popper-escaped\":n})}}]}),oi.applyStyles=n,oi.arrow=z,oi.computeStyles=r,oi.createPopper=Y,oi.createPopperLite=$,oi.defaultModifiers=K,oi.detectOverflow=j,oi.eventListeners=e,oi.flip=V,oi.hide=W,oi.offset=a,oi.popperGenerator=ge,oi.popperOffsets=t,oi.preventOverflow=q),oi;function b(e){var t;return null==e?window:\"[object Window]\"!==e.toString()?(t=e.ownerDocument)&&t.defaultView||window:e}function h(e){return e instanceof b(e).Element||e instanceof Element}function c(e){return e instanceof b(e).HTMLElement||e instanceof HTMLElement}function J(e){return\"undefined\"!=typeof ShadowRoot&&(e instanceof b(e).ShadowRoot||e instanceof ShadowRoot)}function Q(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+\"/\"+e.version}).join(\" \"):navigator.userAgent}function Z(){return!/^((?!chrome|android).)*safari/i.test(Q())}function m(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!1);var n=e.getBoundingClientRect(),a=1,i=1;t&&c(e)&&(a=0<e.offsetWidth&&T(n.width)/e.offsetWidth||1,i=0<e.offsetHeight&&T(n.height)/e.offsetHeight||1);t=(h(e)?b(e):window).visualViewport,e=!Z()&&r,r=(n.left+(e&&t?t.offsetLeft:0))/a,e=(n.top+(e&&t?t.offsetTop:0))/i,t=n.width/a,a=n.height/i;return{width:t,height:a,top:e,right:r+t,bottom:e+a,left:r,x:r,y:e}}function X(e){e=b(e);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function u(e){return e?(e.nodeName||\"\").toLowerCase():null}function E(e){return((h(e)?e.ownerDocument:e.document)||window.document).documentElement}function ee(e){return m(E(e)).left+X(e).scrollLeft}function S(e){return b(e).getComputedStyle(e)}function te(e){var e=S(e),t=e.overflow,r=e.overflowX,e=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+e+r)}function re(e,t,r){void 0===r&&(r=!1);var n=c(t),a=c(t)&&(o=(a=t).getBoundingClientRect(),i=T(o.width)/a.offsetWidth||1,o=T(o.height)/a.offsetHeight||1,1!==i||1!==o),i=E(t),o=m(e,a,r),e={scrollLeft:0,scrollTop:0},s={x:0,y:0};return!n&&r||(\"body\"===u(t)&&!te(i)||(e=(n=t)!==b(n)&&c(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:X(n)),c(t)?((s=m(t,!0)).x+=t.clientLeft,s.y+=t.clientTop):i&&(s.x=ee(i))),{x:o.left+e.scrollLeft-s.x,y:o.top+e.scrollTop-s.y,width:o.width,height:o.height}}function ne(e){var t=m(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function s(e){return\"html\"===u(e)?e:e.assignedSlot||e.parentNode||(J(e)?e.host:null)||E(e)}function g(e,t){void 0===t&&(t=[]);var r=function e(t){return 0<=[\"html\",\"body\",\"#document\"].indexOf(u(t))?t.ownerDocument.body:c(t)&&te(t)?t:e(s(t))}(e),e=r===(null==(e=e.ownerDocument)?void 0:e.body),n=b(r),n=e?[n].concat(n.visualViewport||[],te(r)?r:[]):r,r=t.concat(n);return e?r:r.concat(g(s(n)))}function ae(e){return c(e)&&\"fixed\"!==S(e).position?e.offsetParent:null}function F(e){for(var t,r=b(e),n=ae(e);n&&(t=n,0<=[\"table\",\"td\",\"th\"].indexOf(u(t)))&&\"static\"===S(n).position;)n=ae(n);return(!n||\"html\"!==u(n)&&(\"body\"!==u(n)||\"static\"!==S(n).position))&&(n||function(e){var t=/firefox/i.test(Q()),r=/Trident/i.test(Q());if(!r||!c(e)||\"fixed\"!==S(e).position){var n=s(e);for(J(n)&&(n=n.host);c(n)&&[\"html\",\"body\"].indexOf(u(n))<0;){var a=S(n);if(\"none\"!==a.transform||\"none\"!==a.perspective||\"paint\"===a.contain||-1!==[\"transform\",\"perspective\"].indexOf(a.willChange)||t&&\"filter\"===a.willChange||t&&a.filter&&\"none\"!==a.filter)return n;n=n.parentNode}}return null}(e))||r}function ie(e){var r=new Map,n=new Set,a=[];return e.forEach(function(e){r.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||!function t(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){n.has(e)||(e=r.get(e))&&t(e)}),a.push(e)}(e)}),a}function oe(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&J(r)){var n=t;do{if(n&&e.isSameNode(n))return!0}while(n=n.parentNode||n.host)}return!1}function se(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function le(e,t,r){return t===d?se((a=r,o=b(n=e),s=E(n),o=o.visualViewport,l=s.clientWidth,s=s.clientHeight,u=c=0,o&&(l=o.width,s=o.height,(i=Z())||!i&&\"fixed\"===a)&&(c=o.offsetLeft,u=o.offsetTop),{width:l,height:s,x:c+ee(n),y:u})):h(t)?((a=m(i=t,!1,\"fixed\"===(a=r))).top=a.top+i.clientTop,a.left=a.left+i.clientLeft,a.bottom=a.top+i.clientHeight,a.right=a.left+i.clientWidth,a.width=i.clientWidth,a.height=i.clientHeight,a.x=a.left,a.y=a.top,a):se((o=E(e),l=E(o),s=X(o),c=null==(c=o.ownerDocument)?void 0:c.body,n=C(l.scrollWidth,l.clientWidth,c?c.scrollWidth:0,c?c.clientWidth:0),u=C(l.scrollHeight,l.clientHeight,c?c.scrollHeight:0,c?c.clientHeight:0),o=-s.scrollLeft+ee(o),s=-s.scrollTop,\"rtl\"===S(c||l).direction&&(o+=C(l.clientWidth,c?c.clientWidth:0)-n),{width:n,height:u,x:o,y:s}));var n,a,i,o,s,l,c,u}function ce(r,e,t,n){var a,i=\"clippingParents\"===e?(o=g(s(i=r)),h(a=0<=[\"absolute\",\"fixed\"].indexOf(S(i).position)&&c(i)?F(i):i)?o.filter(function(e){return h(e)&&oe(e,a)&&\"body\"!==u(e)}):[]):[].concat(e),o=[].concat(i,[t]),e=o[0],t=o.reduce(function(e,t){t=le(r,t,n);return e.top=C(t.top,e.top),e.right=w(t.right,e.right),e.bottom=w(t.bottom,e.bottom),e.left=C(t.left,e.left),e},le(r,e,n));return t.width=t.right-t.left,t.height=t.bottom-t.top,t.x=t.left,t.y=t.top,t}function U(e){return e.split(\"-\")[0]}function B(e){return e.split(\"-\")[1]}function ue(e){return 0<=[\"top\",\"bottom\"].indexOf(e)?\"x\":\"y\"}function de(e){var t,r=e.reference,n=e.element,e=e.placement,a=e?U(e):null,e=e?B(e):null,i=r.x+r.width/2-n.width/2,o=r.y+r.height/2-n.height/2;switch(a){case k:t={x:i,y:r.y-n.height};break;case I:t={x:i,y:r.y+r.height};break;case R:t={x:r.x+r.width,y:o};break;case N:t={x:r.x-n.width,y:o};break;default:t={x:r.x,y:r.y}}var s=a?ue(a):null;if(null!=s){var l=\"y\"===s?\"height\":\"width\";switch(e){case D:t[s]=t[s]-(r[l]/2-n[l]/2);break;case v:t[s]=t[s]+(r[l]/2-n[l]/2)}}return t}function pe(){return{top:0,right:0,bottom:0,left:0}}function fe(e){return Object.assign({},pe(),e)}function he(r,e){return e.reduce(function(e,t){return e[t]=r,e},{})}function j(e,t){var n,t=t=void 0===t?{}:t,r=t.placement,r=void 0===r?e.placement:r,a=t.strategy,a=void 0===a?e.strategy:a,i=t.boundary,i=void 0===i?_:i,o=t.rootBoundary,o=void 0===o?d:o,s=t.elementContext,s=void 0===s?p:s,l=t.altBoundary,l=void 0!==l&&l,t=t.padding,t=void 0===t?0:t,t=fe(\"number\"!=typeof t?t:he(t,P)),c=e.rects.popper,l=e.elements[l?s===p?y:p:s],l=ce(h(l)?l:l.contextElement||E(e.elements.popper),i,o,a),i=m(e.elements.reference),o=de({reference:i,element:c,strategy:\"absolute\",placement:r}),a=se(Object.assign({},c,o)),c=s===p?a:i,u={top:l.top-c.top+t.top,bottom:c.bottom-l.bottom+t.bottom,left:l.left-c.left+t.left,right:c.right-l.right+t.right},o=e.modifiersData.offset;return s===p&&o&&(n=o[r],Object.keys(u).forEach(function(e){var t=0<=[R,I].indexOf(e)?1:-1,r=0<=[k,I].indexOf(e)?\"y\":\"x\";u[e]+=n[r]*t})),u}function me(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(e){return!(e&&\"function\"==typeof e.getBoundingClientRect)})}function ge(e){var e=e=void 0===e?{}:e,t=e.defaultModifiers,d=void 0===t?[]:t,t=e.defaultOptions,p=void 0===t?f:t;return function(n,a,t){void 0===t&&(t=p);var r,i,o={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},f,p),modifiersData:{},elements:{reference:n,popper:a},attributes:{},styles:{}},s=[],l=!1,c={state:o,setOptions:function(e){var r,t,e=\"function\"==typeof e?e(o.options):e,e=(u(),o.options=Object.assign({},p,o.options,e),o.scrollParents={reference:h(n)?g(n):n.contextElement?g(n.contextElement):[],popper:g(a)},e=[].concat(d,o.options.modifiers),t=e.reduce(function(e,t){var r=e[t.name];return e[t.name]=r?Object.assign({},r,t,{options:Object.assign({},r.options,t.options),data:Object.assign({},r.data,t.data)}):t,e},{}),e=Object.keys(t).map(function(e){return t[e]}),r=ie(e),A.reduce(function(e,t){return e.concat(r.filter(function(e){return e.phase===t}))},[]));return o.orderedModifiers=e.filter(function(e){return e.enabled}),o.orderedModifiers.forEach(function(e){var t=e.name,r=e.options,e=e.effect;\"function\"==typeof e&&(e=e({state:o,name:t,instance:c,options:void 0===r?{}:r}),s.push(e||function(){}))}),c.update()},forceUpdate:function(){if(!l){var e=o.elements,t=e.reference,e=e.popper;if(me(t,e)){o.rects={reference:re(t,F(e),\"fixed\"===o.options.strategy),popper:ne(e)},o.reset=!1,o.placement=o.options.placement,o.orderedModifiers.forEach(function(e){return o.modifiersData[e.name]=Object.assign({},e.data)});for(var r,n,a,i=0;i<o.orderedModifiers.length;i++)!0===o.reset?(o.reset=!1,i=-1):(r=(a=o.orderedModifiers[i]).fn,n=a.options,a=a.name,\"function\"==typeof r&&(o=r({state:o,options:void 0===n?{}:n,name:a,instance:c})||o))}}},update:(r=function(){return new Promise(function(e){c.forceUpdate(),e(o)})},function(){return i=i||new Promise(function(e){Promise.resolve().then(function(){i=void 0,e(r())})})}),destroy:function(){u(),l=!0}};return me(n,a)&&c.setOptions(t).then(function(e){!l&&t.onFirstUpdate&&t.onFirstUpdate(e)}),c;function u(){s.forEach(function(e){return e()}),s=[]}}}function _e(e){var t,r=e.popper,n=e.popperRect,a=e.placement,i=e.variation,o=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,e=e.isFixed,d=o.x,d=void 0===d?0:d,p=o.y,p=void 0===p?0:p,f=\"function\"==typeof u?u({x:d,y:p}):{x:d,y:p},f=(d=f.x,p=f.y,o.hasOwnProperty(\"x\")),o=o.hasOwnProperty(\"y\"),h=N,m=k,g=window,_=(c&&(_=\"clientHeight\",t=\"clientWidth\",(y=F(r))===b(r)&&\"static\"!==S(y=E(r)).position&&\"absolute\"===s&&(_=\"scrollHeight\",t=\"scrollWidth\"),a!==k&&(a!==N&&a!==R||i!==v)||(m=I,p=(p-((e&&y===g&&g.visualViewport?g.visualViewport.height:y[_])-n.height))*(l?1:-1)),a!==N&&(a!==k&&a!==I||i!==v)||(h=R,d=(d-((e&&y===g&&g.visualViewport?g.visualViewport.width:y[t])-n.width))*(l?1:-1))),Object.assign({position:s},c&&O)),y=!0===u?(a={x:d,y:p},i=b(r),e=a.x,a=a.y,i=i.devicePixelRatio||1,{x:T(e*i)/i||0,y:T(a*i)/i||0}):{x:d,y:p};return d=y.x,p=y.y,l?Object.assign({},_,((t={})[m]=o?\"0\":\"\",t[h]=f?\"0\":\"\",t.transform=(g.devicePixelRatio||1)<=1?\"translate(\"+d+\"px, \"+p+\"px)\":\"translate3d(\"+d+\"px, \"+p+\"px, 0)\",t)):Object.assign({},_,((n={})[m]=o?p+\"px\":\"\",n[h]=f?d+\"px\":\"\",n.transform=\"\",n))}function H(e){return e.replace(/left|right|bottom|top/g,function(e){return i[e]})}function ye(e){return e.replace(/start|end/g,function(e){return o[e]})}function G(e,t,r){return C(e,w(t,r))}function Te(e,t,r){return{top:e.top-t.height-(r=void 0===r?{x:0,y:0}:r).y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function ve(t){return[k,R,I,N].some(function(e){return 0<=t[e]})}}var li,ci={};function ui(){if(!li){li=1,Object.defineProperty(ci,\"__esModule\",{value:!0}),ci.Portal=void 0;const a=Jr.__importDefault(xe());ci.Portal=class{portalElement;containerElement;contentComponent;constructor({children:e}){this.contentComponent={view:()=>e}}view(){return(0,a.default)(\"span\",{style:{display:\"none\"}})}oncreate({attrs:e,dom:t}){var{onContentMount:r=()=>{},onBeforeContentMount:n=()=>({})}=e,{container:n=document.body}=n(t);this.containerElement=n,this.portalElement=document.createElement(\"div\"),n.appendChild(this.portalElement),this.applyPortalProps(e),a.default.mount(this.portalElement,this.contentComponent),r(this.portalElement)}onbeforeupdate({children:e}){this.contentComponent.view=()=>e}onupdate({attrs:e}){var{onContentUpdate:t=()=>{}}=e;this.portalElement&&(this.applyPortalProps(e),t(this.portalElement))}applyPortalProps(e){this.portalElement&&(this.portalElement.className=e.className??\"\",Object.assign(this.portalElement.style,e.style))}onremove({attrs:e}){var{onContentUnmount:e=()=>{}}=e,t=this.containerElement??document.body;this.portalElement&&t.contains(this.portalElement)&&(e(this.portalElement),a.default.mount(this.portalElement,null),t.removeChild(this.portalElement))}}}return ci}var di,pi,fi,hi={},mi={};function gi(){if(!di){di=1,Object.defineProperty(mi,\"__esModule\",{value:!0}),mi.Rect2D=mi.Vector2D=void 0;mi.Vector2D=class t{x;y;constructor({x:e,y:t}){this.x=e,this.y=t}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}scale(e){return new t({x:this.x*e,y:this.y*e})}get manhattanDistance(){return Math.abs(this.x)+Math.abs(this.y)}get magnitude(){return Math.sqrt(this.x*this.x+this.y*this.y)}};mi.Rect2D=class a{left;top;right;bottom;x;y;width;height;static fromPoints(e,t){return new a({top:Math.min(e.y,t.y),left:Math.min(e.x,t.x),right:Math.max(e.x,t.x),bottom:Math.max(e.y,t.y)})}static fromPointAndSize(e){var{x:e,y:t,width:r,height:n}=e;return new a({top:t,left:e,right:e+r,bottom:t+n})}constructor({left:e,top:t,right:r,bottom:n}){this.left=this.x=e,this.top=this.y=t,this.right=r,this.bottom=n,this.width=r-e,this.height=n-t}intersect(e){return new a({top:Math.max(this.top,e.top),left:Math.max(this.left,e.left),bottom:Math.min(this.bottom,e.bottom),right:Math.min(this.right,e.right)})}expand(e){var t;return\"number\"==typeof e?new a({top:this.top-e,left:this.left-e,bottom:this.bottom+e,right:this.right+e}):({width:e,height:t}=e,new a({top:this.top-t,left:this.left-e,bottom:this.bottom+t,right:this.right+e}))}reframe(e){return new a({left:this.left-e.x,right:this.right-e.x,top:this.top-e.y,bottom:this.bottom-e.y})}contains(e){return!(e.top<this.top||e.bottom>this.bottom||e.left<this.left||e.right>this.right)}containsPoint(e){return e.y>=this.top&&e.y<this.bottom&&e.x>=this.left&&e.x<this.right}overlaps(e){return this.left<e.right&&this.right>e.left&&this.top<e.bottom&&this.bottom>e.top}translate(e){return new a({top:this.top+e.y,left:this.left+e.x,bottom:this.bottom+e.y,right:this.right+e.x})}equals(e){return e.top===this.top&&e.left===this.left&&e.right===this.right&&e.bottom===this.bottom}}}return mi}function _i(){if(!pi){pi=1,Object.defineProperty(hi,\"__esModule\",{value:!0}),hi.isOrContains=function(e,t){return e===t||e.contains(t)},hi.findRef=function(e,t){t=`[ref=${t}]`;return e.matches(t)?e:e.querySelector(t)},hi.toHTMLElement=function(e){if(e instanceof HTMLElement)return e;throw new Error(\"Element is not an HTMLElement\")},hi.elementIsEditable=function(e){if(null===e)return!1;if(!(e instanceof Element))return!1;e=e.closest(\"input, textarea, [contenteditable=true]\");if(null===e)return!1;if(e instanceof HTMLInputElement&&[\"radio\",\"checkbox\",\"button\"].includes(e.type))return!1;return!0},hi.currentTargetOffset=function(e){var t,r;if(e.currentTarget!==e.target&&e.currentTarget&&e.currentTarget instanceof Element)return r=e.currentTarget.getBoundingClientRect(),t=e.clientX-r.left,r=e.clientY-r.top,new n.Vector2D({x:t,y:r});return new n.Vector2D({x:e.offsetX,y:e.offsetY})},hi.bindEventListener=function(e,t,r,n){return e.addEventListener(t,r,n),{[Symbol.dispose](){e.removeEventListener(t,r)}}};const n=gi()}return hi}function yi(){if(!fi){fi=1,Object.defineProperty(ii,\"__esModule\",{value:!0}),ii.Popup=ii.PopupPosition=void 0;var s,e=Jr;const l=si(),u=e.__importDefault(xe()),d=ui(),p=be(),f=_i(),h=Pe();(e=s||(ii.PopupPosition=s={})).Auto=\"auto\",e.AutoStart=\"auto-start\",e.AutoEnd=\"auto-end\",e.Top=\"top\",e.TopStart=\"top-start\",e.TopEnd=\"top-end\",e.Bottom=\"bottom\",e.BottomStart=\"bottom-start\",e.BottomEnd=\"bottom-end\",e.Right=\"right\",e.RightStart=\"right-start\",e.RightEnd=\"right-end\",e.Left=\"left\",e.LeftStart=\"left-start\",e.LeftEnd=\"left-end\";ii.Popup=class m{isOpen=!1;triggerElement;popupElement;popper;onChange=()=>{};closeOnEscape;closeOnOutsideClick;static TRIGGER_REF=\"trigger\";static POPUP_REF=\"popup\";static POPUP_GROUP_CLASS=\"pf-popup-group\";static DISMISS_POPUP_GROUP_CLASS=\"pf-dismiss-popup-group\";view({attrs:e,children:t}){var{trigger:r,isOpen:n=this.isOpen,onChange:a=()=>{},closeOnEscape:i=!0,closeOnOutsideClick:o=!0}=e;return this.onChange=a,this.closeOnEscape=i,this.closeOnOutsideClick=o,[this.renderTrigger(r,n),n&&this.renderPopup(e,t)]}renderTrigger(e,t){return e.attrs={...e.attrs,ref:m.TRIGGER_REF,onclick:e=>{this.togglePopup(),e.preventDefault()},active:t},e}renderPopup(r,e){const{className:t,showArrow:n=!0,createNewGroup:a=!0,onPopupMount:i=()=>{},onPopupUnMount:o=()=>{},matchWidth:s,fitContent:l}=r;var c={className:\"pf-popup-portal\",onBeforeContentMount:e=>{var t=e.closest(`[ref=${m.POPUP_REF}]`);return(t=(t=t||e.closest(\".pf-modal-dialog\"))||e.closest(\".pf-overlay-container\"))?{container:t}:{container:void 0}},onContentMount:e=>{var t=(0,f.toHTMLElement)((0,h.assertExists)((0,f.findRef)(e,m.POPUP_REF)));this.popupElement=t,this.createOrUpdatePopper(r),document.addEventListener(\"mousedown\",this.handleDocMouseDown),document.addEventListener(\"keydown\",this.handleDocKeyPress),e.addEventListener(\"click\",this.handleContentClick),i(t)},onContentUpdate:()=>{this.popper&&this.popper.update()},onContentUnmount:e=>{this.popupElement&&o(this.popupElement),e.removeEventListener(\"click\",this.handleContentClick),document.removeEventListener(\"keydown\",this.handleDocKeyPress),document.removeEventListener(\"mousedown\",this.handleDocMouseDown),this.popper&&this.popper.destroy(),this.popper=void 0,this.popupElement=void 0}};return(0,u.default)(d.Portal,c,(0,u.default)(\".pf-popup\",{class:(0,p.classNames)(t,a&&m.POPUP_GROUP_CLASS,s&&\"pf-popup--match-width\",l&&\"pf-popup--fit-content\"),ref:m.POPUP_REF},n&&(0,u.default)(\".pf-popup-arrow[data-popper-arrow]\"),(0,u.default)(\".pf-popup-content\",e)))}oncreate({dom:e}){this.triggerElement=(0,h.assertExists)((0,f.findRef)(e,m.TRIGGER_REF))}onupdate({attrs:e}){this.createOrUpdatePopper(e)}onremove(e){this.triggerElement=void 0}createOrUpdatePopper(e){const{position:t=s.Auto,showArrow:r=!0,matchWidth:n=!1,offset:a=0,edgeOffset:i=0}=e;let o;e={placement:t,modifiers:[{name:\"offset\",options:{offset:({placement:e})=>{let t=0;return e.includes(\"-end\")?t=i:e.includes(\"-start\")&&(t=-i),[t,r?a+8:a]}}},{name:\"preventOverflow\",options:{padding:8}},{name:\"arrow\",options:{padding:2}},...o=n?[{name:\"sameWidth\",enabled:!0,phase:\"beforeWrite\",requires:[\"computeStyles\"],fn:({state:e})=>{e.styles.popper.width=e.rects.reference.width+\"px\"},effect:({state:e})=>{var t=e.elements.reference;e.elements.popper.style.width=t.offsetWidth+\"px\"}}]:[]]},this.popper?this.popper.setOptions(e):this.popupElement&&this.triggerElement&&(this.popper=(0,l.createPopper)(this.triggerElement,this.popupElement,e))}eventInPopupOrTrigger(e){var e=e.target,t=(0,f.isOrContains)((0,h.assertExists)(this.triggerElement),e),e=(0,f.isOrContains)((0,h.assertExists)(this.popupElement),e);return t||e}handleDocMouseDown=e=>{this.closeOnOutsideClick&&!this.eventInPopupOrTrigger(e)&&this.closePopup()};handleDocKeyPress=e=>{this.popupElement?.querySelector(\".\"+m.POPUP_GROUP_CLASS)||this.closeOnEscape&&\"Escape\"===e.key&&this.closePopup()};handleContentClick=e=>{var e=e.target,t=this.popupElement?.querySelector(\".\"+m.POPUP_GROUP_CLASS);t&&t.contains(e)||e.closest(\".\"+m.DISMISS_POPUP_GROUP_CLASS)&&this.closePopup()};closePopup(){this.isOpen=!1,this.onChange(!1),u.default.redraw()}togglePopup(){this.isOpen=!this.isOpen,this.onChange(this.isOpen)}}}return ii}var Ti,vi,bi={};function Ei(){if(!Ti){Ti=1,Object.defineProperty(bi,\"__esModule\",{value:!0}),bi.Spinner=void 0;const r=Jr.__importDefault(xe()),n=be();bi.Spinner=class{view({attrs:e}){var{easing:e=!1,className:t}=e,e=(0,n.classNames)(e&&\"easing\",t);return(0,r.default)(\".pf-spinner\",{class:e})}}}return bi}function je(){if(!vi){var m,e;vi=1,Object.defineProperty(Za,\"__esModule\",{value:!0}),Za.ButtonGroup=Za.ButtonBar=Za.Button=Za.ButtonVariant=void 0;const g=Jr.__importDefault(xe()),_=be(),y=Be(),T=Ee(),v=yi(),a=Ei(),b=Pe();(e=m||(Za.ButtonVariant=m={})).Filled=\"Filled\",e.Outlined=\"Outlined\",e.Minimal=\"Minimal\";Za.Button=class{view({attrs:e}){const{icon:t,active:r,compact:n,rightIcon:a,className:i,dismissPopup:o,iconFilled:s,intent:l=y.Intent.None,variant:c=m.Minimal,rounded:u,shrink:d,...p}=e;var f=\"label\"in e?e.label:void 0,h=Boolean(t&&!f),h=(0,_.classNames)(r&&\"pf-active\",n&&\"pf-compact\",function(e){switch(e){case m.Filled:return\"pf-button--filled\";case m.Outlined:return\"pf-button--outlined\";case m.Minimal:return\"pf-button--minimal\";default:(0,b.assertUnreachable)(e)}}(c),(0,y.classForIntent)(l),h&&\"pf-icon-only\",o&&v.Popup.DISMISS_POPUP_GROUP_CLASS,u&&\"pf-button--rounded\",d&&\"pf-button--shrink\",i);return(0,g.default)(\"button.pf-button\",{...p,className:h},this.renderIcon(e),(0,g.default)(\"span\",{className:\"pf-button__label\"},f),a&&(0,g.default)(T.Icon,{className:\"pf-right-icon\",icon:a,filled:s}))}renderIcon(e){var{icon:t,iconFilled:r}=e,n=\"pf-left-icon\";return e.loading?(0,g.default)(a.Spinner,{className:n}):t?(0,g.default)(T.Icon,{className:n,icon:t,filled:r}):void 0}};Za.ButtonBar=class{view({attrs:e,children:t}){return(0,g.default)(\".pf-button-bar\",e,t)}};Za.ButtonGroup=class{view({attrs:e,children:t}){return(0,g.default)(\".pf-button-group\",e,t)}}}return Za}var Si,Ai,Oi={},Ci={};function wi(){if(!Si){Si=1,Object.defineProperty(Ci,\"__esModule\",{value:!0}),Ci.Gate=Ci.Passthrough=void 0,Ci.hasChildren=function({children:e}){return Array.isArray(e)&&0<e.length&&e.some(e=>e)};const r=Jr.__importDefault(xe());Ci.Passthrough={view({children:e}){return e}};Ci.Gate=class{previousChildren;wasOpen;view({attrs:e,children:t}){return(0,r.default)(\"\",{style:{display:e.open?\"contents\":\"none\"}},this.renderChildren(e.open,t))}renderChildren(e,t){return(e||this.wasOpen)&&(this.previousChildren=t),this.wasOpen=e,this.previousChildren}}}return Ci}function Se(){if(Ai)return Oi;Ai=1,Object.defineProperty(Oi,\"__esModule\",{value:!0}),Oi.PopupMenu=Oi.Menu=Oi.MenuTitle=Oi.MenuDivider=Oi.MenuItem=void 0;const c=Jr.__importDefault(xe()),u=be(),t=wi(),d=Ee(),p=yi();Oi.MenuItem=class s{view(e){return(0,t.hasChildren)(e)?this.renderNested(e):this.renderSingle(e)}renderNested({attrs:e,children:t}){const{rightIcon:r=\"chevron_right\",closePopupOnClick:n=!1,...a}=e;return(0,c.default)(o,{popupPosition:p.PopupPosition.RightStart,trigger:(0,c.default)(s,{rightIcon:r,closePopupOnClick:n,...a}),showArrow:!1,createNewGroup:!1,edgeOffset:5},t)}renderSingle({attrs:e}){const{label:t,icon:r,rightIcon:n,disabled:a,active:i,closePopupOnClick:o=!0,className:s,...l}=e;return e=(0,u.classNames)(i&&\"pf-active\",!a&&o&&p.Popup.DISMISS_POPUP_GROUP_CLASS,s),(0,c.default)(\"button.pf-menu-item\"+(a?\"[disabled]\":\"\"),{...l,className:e},r&&(0,c.default)(d.Icon,{className:\"pf-menu-item__left-icon\",icon:r}),(0,c.default)(\".pf-menu-item__label\",t),n&&(0,c.default)(d.Icon,{className:\"pf-menu-item__right-icon\",icon:n}))}};Oi.MenuDivider=class{view(){return(0,c.default)(\".pf-menu-divider\")}};Oi.MenuTitle=class{view({attrs:e}){return(0,c.default)(\".pf-menu-title\",e.label)}};class i{view({attrs:e,children:t}){return(0,c.default)(\".pf-menu\",e,t)}}Oi.Menu=i;class o{view({attrs:e,children:t}){const{trigger:r,popupPosition:n=p.PopupPosition.Bottom,...a}=e;return(0,c.default)(p.Popup,{trigger:r,position:n,className:\"pf-popup-menu\",...a},(0,c.default)(i,t))}}return Oi.PopupMenu=o,Oi}var ki,Ii,Ri={},Ni={};function Mi(){var t;return ki||(ki=1,t=Ni,Object.defineProperty(t,\"__esModule\",{value:!0}),t.COLOR_NEUTRAL=t.COLOR_TEXT_MUTED=t.COLOR_TEXT=t.COLOR_BACKGROUND=t.COLOR_ACCENT=t.COLOR_BACKGROUND_SECONDARY=t.COLOR_BORDER_SECONDARY=t.COLOR_BORDER=t.FONT_COMPACT=t.DEFAULT_DETAILS_CONTENT_HEIGHT=t.TRACK_SHELL_WIDTH=void 0,t.initCssConstants=function(r){function n(e){var t;if(\"undefined\"!=typeof window)return t=r??window.document.body,\"\"===(t=window.getComputedStyle(t).getPropertyValue(e))?void 0:t}function e(e){e=n(e);if(void 0!==e){var t=e.match(/^\\W*(\\d+)px(|\\!important')$/);if(t)return Number(t[1]);throw Error(`Could not parse CSS property \"${e}\" as a number`)}}t.TRACK_SHELL_WIDTH=e(\"--track-shell-width\")??t.TRACK_SHELL_WIDTH,t.COLOR_BORDER=n(\"--pf-color-border\")??t.COLOR_BORDER,t.COLOR_BORDER_SECONDARY=n(\"--pf-color-border-secondary\")??t.COLOR_BORDER_SECONDARY,t.COLOR_BACKGROUND_SECONDARY=n(\"--pf-color-background-secondary\")??t.COLOR_BACKGROUND_SECONDARY,t.COLOR_ACCENT=n(\"--pf-color-accent\")??t.COLOR_ACCENT,t.DEFAULT_DETAILS_CONTENT_HEIGHT=e(\"--details-content-height\")??t.DEFAULT_DETAILS_CONTENT_HEIGHT,t.COLOR_BACKGROUND=n(\"--pf-color-background\")??t.COLOR_BACKGROUND,t.COLOR_TEXT=n(\"--pf-color-text\")??t.COLOR_TEXT,t.FONT_COMPACT=n(\"--pf-font-compact\")??t.FONT_COMPACT,t.COLOR_TEXT_MUTED=n(\"--pf-color-text-muted\")??t.COLOR_TEXT_MUTED,t.COLOR_NEUTRAL=n(\"--pf-color-neutral\")??t.COLOR_NEUTRAL},t.TRACK_SHELL_WIDTH=100,t.DEFAULT_DETAILS_CONTENT_HEIGHT=308,t.FONT_COMPACT='\"Roboto Condensed\", sans-serif',t.COLOR_BORDER=\"hotpink\",t.COLOR_BORDER_SECONDARY=\"hotpink\",t.COLOR_BACKGROUND_SECONDARY=\"hotpink\",t.COLOR_ACCENT=\"hotpink\",t.COLOR_BACKGROUND=\"hotpink\",t.COLOR_TEXT=\"hotpink\",t.COLOR_TEXT_MUTED=\"hotpink\",t.COLOR_NEUTRAL=\"hotpink\"),Ni}function Pi(){if(!Ii){Ii=1,Object.defineProperty(Ri,\"__esModule\",{value:!0}),Ri.checkerboard=o,Ri.checkerboardExcept=function(e,t,r,n,a,i){i<=r||n<=a?o(e,t,r,n):(r<a&&o(e,t,r,a),i<n&&o(e,t,i,n))};const s=Mi(),l=\"Loading...\";let i=0;function o(e,t,r,n){var n=n-r,a=(e.font=\"12px Roboto Condensed\",e.fillStyle=s.COLOR_BACKGROUND_SECONDARY,e.fillRect(r,0,n,t),e.fillStyle=s.COLOR_TEXT_MUTED,e.textBaseline);e.textBaseline=\"middle\",(i=0===i?e.measureText(l).width:i)<=n&&e.fillText(l,r+n/2-i/2,t/2),e.textBaseline=a}}return Ri}var Di,xi={};function Li(){if(!Di){Di=1;{var a=xi;Object.defineProperty(a,\"__esModule\",{value:!0}),a.CacheKey=a.BUCKETS_PER_PIXEL=void 0;const i=ja(),o=Fe();a.BUCKETS_PER_PIXEL=2;a.CacheKey=class s{start;end;bucketSize;windowSizePx;static create(e,t,r){var n=(t-e)/BigInt(Math.round(r*a.BUCKETS_PER_PIXEL));return new s(e,t,i.BigintMath.max(1n,n),r)}constructor(e,t,r,n){this.start=e,this.end=t,this.bucketSize=r,this.windowSizePx=n}static zero(){return new s(o.Time.ZERO,o.Time.ZERO,0n,100)}get normalizedBucketNs(){return i.BigintMath.max(1n,i.BigintMath.bitFloor(this.bucketSize))}get normalizedWindowSizePx(){return Math.max(100,100*Math.round(this.windowSizePx/100))}normalize(){var e=this.normalizedWindowSizePx,t=this.normalizedBucketNs,r=BigInt(e*a.BUCKETS_PER_PIXEL)*t,n=o.Time.quantFloor(this.start,r),r=o.Time.quantCeil(this.end,r);return new s(n,r,t,e)}isNormalized(){return this.toString()===this.normalize().toString()}isCoveredBy(e){return e.start<=this.start&&e.end>=this.end&&e.normalizedBucketNs===this.normalizedBucketNs&&e.normalizedWindowSizePx===this.normalizedWindowSizePx}toString(){return`CacheKey<${this.start}, ${this.end}, ${this.bucketSize}, ${this.windowSizePx}>`}}}}return xi}var Fi,Ui,Bi,ji={};function Hi(){return Fi||(Fi=1,Object.defineProperty(ji,\"__esModule\",{value:!0}),ji.range=function(t){if(t<0)throw new Error(\"range size should be non-negative!\");var r=new Array(t);for(let e=0;e<t;e++)r[e]=e;return r},ji.allUnique=function(e){return e.length==new Set(e).size},ji.arrayEquals=function(t,r){if(t.length!==r.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==r[e])return!1;return!0},ji.isArrayOf=function(e,t){return t.every(e)},ji.removeFalsyValues=function(e){return e.filter(Boolean)},ji.moveArrayItem=function(e,t,r){var n;t!==r&&(n=e[t],e.splice(t,1),t<r&&--r,e.splice(r,0,n))},ji.valueIfAllEqual=function(t){return 0!==t.length&&t.every(e=>e===t[0])?t[0]:void 0}),ji}function Gi(){if(!Ui){Ui=1,Object.defineProperty(In,\"__esModule\",{value:!0}),In.BaseCounterTrack=void 0;var e=Jr;const f=e.__importDefault(xe());e=e.__importDefault(Ne());const h=Pa(),m=Le(),w=Pe(),k=Fe();var t=ln();const g=K(),_=Ue(),y=je(),T=Se(),I=Pi(),v=Li(),b=Hi();class E{static traceToRangeSharer=new WeakMap;tagToRange;keyToEnabled;constructor(){this.tagToRange=new Map,this.keyToEnabled=new Map}static getRangeSharer(e){let t=E.traceToRangeSharer.get(e);return void 0===t&&(t=new E,E.traceToRangeSharer.set(e,t)),t}isEnabled(e){e=this.keyToEnabled.get(e);return void 0===e||e}setEnabled(e,t){this.keyToEnabled.set(e,t)}share(e,[t,r]){var n=e.yRangeSharingKey;return void 0!==n&&this.isEnabled(n)?(n=`${e.yRangeSharingKey}-${e.yMode}-${e.yDisplay}-`+e.chartHeightSize,void 0===(e=this.tagToRange.get(n))?(this.tagToRange.set(n,[t,r]),[t,r]):(e[0]=Math.min(t,e[0]),e[1]=Math.max(r,e[1]),[e[0],e[1]])):[t,r]}}const S=[[\"Small (1x)\",1],[\"Medium (4x)\",4],[\"Large (8x)\",8],[\"XLarge (16x)\",16],[\"XXLarge (32x)\",32]],A=\"radio_button_checked\",O=\"radio_button_unchecked\";var r=e.default.enum([\"value\",\"delta\",\"rate\"]),n=e.default.union([e.default.literal(\"all\"),e.default.literal(\"viewport\")]),a=e.default.enum([\"zero\",\"minmax\",\"log\"]),i=e.default.union([e.default.literal(\"strict\"),e.default.literal(\"human_readable\")]),e=e.default.union([e.default.literal(1),e.default.literal(4),e.default.literal(8),e.default.literal(16),e.default.literal(32)]),o={id:\"yMode\",name:\"Mode\",description:\"value, delta, rate\",schema:r,defaultValue:\"value\",render(e,t){t=(0,b.valueIfAllEqual)(t);return(0,f.default)(T.MenuItem,{label:`Mode (currently: ${t??\"mixed\"})`},[(0,f.default)(T.MenuItem,{label:\"Value\",onclick:()=>e(\"value\"),icon:\"value\"===t?A:O}),(0,f.default)(T.MenuItem,{label:\"Delta\",onclick:()=>e(\"delta\"),icon:\"delta\"===t?A:O}),(0,f.default)(T.MenuItem,{label:\"Rate\",onclick:()=>e(\"rate\"),icon:\"rate\"===t?A:O})])}},s={id:\"yRange\",name:\"Y-axis range\",description:\"all, viewport\",schema:n,defaultValue:\"all\",render(e,t){const r=(0,b.valueIfAllEqual)(t);t=(()=>{switch(r){case\"viewport\":return\"check_box\";case\"all\":return\"check_box_outline_blank\";default:return\"indeterminate_check_box\"}})();return(0,f.default)(T.MenuItem,{label:\"Zoom on scroll\",icon:t,onclick:()=>{\"all\"===r?e(\"viewport\"):e(\"all\")}})}},l={id:\"yDisplay\",name:\"Y-axis display\",description:\"zero, minmax, log\",schema:a,defaultValue:\"zero\",render(e,t){t=(0,b.valueIfAllEqual)(t);return(0,f.default)(T.MenuItem,{label:`Display (currently: ${t??\"mixed\"})`},[(0,f.default)(T.MenuItem,{label:\"Zero-based\",onclick:()=>e(\"zero\"),icon:\"zero\"===t?A:O}),(0,f.default)(T.MenuItem,{label:\"Min/Max\",onclick:()=>e(\"minmax\"),icon:\"minmax\"===t?A:O}),(0,f.default)(T.MenuItem,{label:\"Log\",onclick:()=>e(\"log\"),icon:\"log\"===t?A:O})])}},c={id:\"yRangeRounding\",name:\"Y-axis rounding\",description:\"strict, human_readable\",schema:i,defaultValue:\"human_readable\",render(e,t){const r=(0,b.valueIfAllEqual)(t);t=(()=>{switch(r){case\"human_readable\":return\"check_box\";case\"strict\":return\"check_box_outline_blank\";default:return\"indeterminate_check_box\"}})();return(0,f.default)(T.MenuItem,{label:\"Round y-axis scale\",icon:t,onclick:()=>{\"human_readable\"===r?e(\"strict\"):e(\"human_readable\")}})}},u={id:\"chartHeightSize\",name:\"Chart height\",description:\"1, 4, 8, 16, 32\",schema:e,defaultValue:1,render(r,e){const n=(0,b.valueIfAllEqual)(e);return(0,f.default)(T.MenuItem,{label:`Enlarge (currently: ${n??\"mixed\"})`},[S.map(([e,t])=>(0,f.default)(T.MenuItem,{label:e,onclick:()=>r(t),icon:n===t?A:O}))])}};function d(e){var t=Math.ceil(Math.log10(Math.max(Math.abs(e),1))),t=Math.pow(10,t);return Math.sign(e)*(Math.ceil(Math.abs(e)/(t/20))*(t/20))}function p(e){if(0===e)return\"0\";var t=[[1e-9,\"n\"],[1e-6,\"u\"],[.001,\"m\"],[1,\"\"],[1e3,\"K\"],[1e6,\"M\"],[1e9,\"G\"],[1e12,\"T\"]];let r,n;[r,n]=t[0];var a,i,o=Math.abs(e);for([a,i]of t){if(a>o)break;[r,n]=[a,i]}return\"\"+Math.round(e/r)+n}In.BaseCounterTrack=class{trace;uri;defaultOptions;trackUuid=(0,t.uuidv4Sql)();countersKey=v.CacheKey.zero();counters={timestamps:new BigInt64Array(0),minDisplayValues:new Float64Array(0),maxDisplayValues:new Float64Array(0),lastDisplayValues:new Float64Array(0),displayValueRange:[0,0]};limits;hover;options;rangeSharer;trash;getCounterOptions(){if(void 0===this.options){var e,t,r=this.getDefaultCounterOptions();for([e,t]of Object.entries(this.defaultOptions))void 0!==t&&(r[e]=t);this.options=r}return this.options}renderTooltip(){var e;if(this.hover)return e=\"log\"===this.options?.yDisplay?Math.exp(this.hover.lastDisplayValue):this.hover.lastDisplayValue,(0,f.default)(\".pf-track__tooltip\",this.formatValue(e))}formatValue(e){var t=this.getCounterOptions(),r=this.unit;switch(t.yMode){case\"value\":return e.toLocaleString()+\" \"+r;case\"delta\":return e.toLocaleString()+\" Δ\"+r;case\"rate\":return e.toLocaleString()+\" \"+this.rateUnit;default:(0,w.assertUnreachable)(t.yMode)}}async onInit(){}getDefaultCounterOptions(){return{yRange:\"all\",yRangeRounding:\"human_readable\",yMode:\"value\",yDisplay:\"zero\",chartHeightSize:1}}constructor(e,t,r={}){this.trace=e,this.uri=t,this.defaultOptions=r,this.trash=new m.AsyncDisposableStack,this.rangeSharer=E.getRangeSharer(e)}getHeight(){return 40*this.getCounterOptions().chartHeightSize}getCounterContextMenuItems(){const r=this.getCounterOptions();return[(0,f.default)(T.MenuItem,{label:`Display (currently: ${r.yDisplay})`},(0,f.default)(T.MenuItem,{label:\"Zero-based\",icon:\"zero\"===r.yDisplay?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yDisplay=\"zero\",this.invalidate()}}),(0,f.default)(T.MenuItem,{label:\"Min/Max\",icon:\"minmax\"===r.yDisplay?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yDisplay=\"minmax\",this.invalidate()}}),(0,f.default)(T.MenuItem,{label:\"Log\",icon:\"log\"===r.yDisplay?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yDisplay=\"log\",this.invalidate()}})),(0,f.default)(T.MenuItem,{label:`Enlarge (currently: ${r.chartHeightSize}x)`},S.map(([e,t])=>(0,f.default)(T.MenuItem,{label:e,icon:r.chartHeightSize===t?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.chartHeightSize=t,this.invalidate()}}))),(0,f.default)(T.MenuItem,{label:\"Zoom on scroll\",icon:\"viewport\"===r.yRange?\"check_box\":\"check_box_outline_blank\",onclick:()=>{r.yRange=\"viewport\"===r.yRange?\"all\":\"viewport\",this.invalidate()}}),r.yRangeSharingKey&&(0,f.default)(T.MenuItem,{label:`Share y-axis scale (group: ${r.yRangeSharingKey})`,icon:this.rangeSharer.isEnabled(r.yRangeSharingKey)?\"check_box\":\"check_box_outline_blank\",onclick:()=>{var e=r.yRangeSharingKey;void 0!==e&&(this.rangeSharer.setEnabled(e,!this.rangeSharer.isEnabled(e)),this.invalidate())}}),(0,f.default)(T.MenuDivider),(0,f.default)(T.MenuItem,{label:`Mode (currently: ${r.yMode})`},(0,f.default)(T.MenuItem,{label:\"Value\",icon:\"value\"===r.yMode?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yMode=\"value\",this.invalidate()}}),(0,f.default)(T.MenuItem,{label:\"Delta\",icon:\"delta\"===r.yMode?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yMode=\"delta\",this.invalidate()}}),(0,f.default)(T.MenuItem,{label:\"Rate\",icon:\"rate\"===r.yMode?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.yMode=\"rate\",this.invalidate()}})),(0,f.default)(T.MenuItem,{label:\"Round y-axis scale\",icon:\"human_readable\"===r.yRangeRounding?\"check_box\":\"check_box_outline_blank\",onclick:()=>{r.yRangeRounding=\"human_readable\"===r.yRangeRounding?\"strict\":\"human_readable\",this.invalidate()}})]}invalidate(){this.limits=void 0,this.countersKey=v.CacheKey.zero(),this.counters={timestamps:new BigInt64Array(0),minDisplayValues:new Float64Array(0),maxDisplayValues:new Float64Array(0),lastDisplayValues:new Float64Array(0),displayValueRange:[0,0]},this.hover=void 0,g.raf.scheduleFullRedraw()}getCounterContextMenu(){return(0,f.default)(T.PopupMenu,{trigger:(0,f.default)(y.Button,{icon:\"show_chart\",compact:!0})},this.getCounterContextMenuItems())}getTrackShellButtons(){return this.getCounterContextMenu()}async onCreate(){var e=await this.onInit();e&&this.trash.use(e),this.limits=await this.createTableAndFetchLimits(!1)}yModeSetting={descriptor:o,getValue:()=>this.getCounterOptions().yMode,setValue:e=>{this.options={...this.getCounterOptions(),yMode:e},this.invalidate()}};yRangeSetting={descriptor:s,getValue:()=>this.getCounterOptions().yRange,setValue:e=>{this.options={...this.getCounterOptions(),yRange:e},this.invalidate()}};yDisplaySetting={descriptor:l,getValue:()=>this.getCounterOptions().yDisplay,setValue:e=>{this.options={...this.getCounterOptions(),yDisplay:e},this.invalidate()}};yRangeRoundingSetting={descriptor:c,getValue:()=>this.getCounterOptions().yRangeRounding,setValue:e=>{this.options={...this.getCounterOptions(),yRangeRounding:e},this.invalidate()}};chartHeightSizeSetting={descriptor:u,getValue:()=>this.getCounterOptions().chartHeightSize,setValue:e=>{this.options={...this.getCounterOptions(),chartHeightSize:e},this.invalidate()}};settings=[this.yModeSetting,this.yRangeSetting,this.yDisplaySetting,this.yRangeRoundingSetting,this.chartHeightSizeSetting];async onUpdate({visibleWindow:e,size:t}){t=Math.max(1,t.width),e=e.toTimeSpan(),e=v.CacheKey.create(e.start,e.end,t);await this.maybeRequestData(e)}render({ctx:r,size:n,timescale:a,theme:i}){var o=this.limits,s=this.counters;if(0!==s.timestamps.length&&void 0!==o){(0,w.assertTrue)(s.timestamps.length===s.minDisplayValues.length),(0,w.assertTrue)(s.timestamps.length===s.maxDisplayValues.length),(0,w.assertTrue)(s.timestamps.length===s.lastDisplayValues.length);var l=s.timestamps,c=s.minDisplayValues,u=s.maxDisplayValues,d=s.lastDisplayValues;const{yRange:b,yMin:E,yMax:S,yLabel:A}=this.computeYRange(o,s.displayValueRange),O=this.getHeight()-3.5;var o=n.width,s=Math.ceil(Math.log10(Math.max(S,1))),s=Math.min(s-3,9),s=(180-Math.floor(30*s)+360)%360,p=(r.fillStyle=`hsla(${s}, 45%, 50%, 0.6)`,r.strokeStyle=`hsl(${s}, 45%, 50%)`,e=>Math.floor(a.timeToPx(e))),f=e=>3.5+O-Math.round((e-E)/b*O);let e;e=0<=E?O+3.5:S<0?3.5:O*(S/(S-E))+3.5,r.beginPath();const C=k.Time.fromRaw(l[0]);r.moveTo(Math.max(0,p(C)),e);let t=e;for(let e=0;e<l.length;e++){const C=k.Time.fromRaw(l[e]);var h=Math.max(0,p(C)),m=f(c[e]),g=f(u[e]),_=f(d[e]);r.lineTo(h,t),m===g?(0,w.assertTrue)(_===m):(r.lineTo(h,m),r.lineTo(h,g)),r.lineTo(h,_),t=_}r.lineTo(o,t),r.lineTo(o,e),r.closePath(),r.fill(),r.stroke(),E<0&&0<S&&(r.strokeStyle=`hsl(${s}, 10%, 71%)`,r.beginPath(),r.setLineDash([2,4]),r.moveTo(0,e),r.lineTo(o,e),r.closePath(),r.stroke(),r.setLineDash([])),r.font=\"10px Roboto Condensed\";var y,T,v=this.hover;void 0!==v&&(r.fillStyle=`hsl(${s}, 45%, 75%)`,r.strokeStyle=`hsl(${s}, 45%, 45%)`,s=p(v.ts),y=Math.max(0,s),T=void 0===v.tsEnd?o:Math.floor(a.timeToPx(v.tsEnd)),v=3.5+O-Math.round((v.lastDisplayValue-E)/b*O),r.beginPath(),r.moveTo(y,v),r.lineTo(T,v),r.lineWidth=3,r.stroke(),r.lineWidth=1,-6<=s)&&(r.beginPath(),r.arc(y,v,3,0,2*Math.PI),r.fill(),r.stroke()),r.textBaseline=\"alphabetic\",r.fillStyle=i.COLOR_BACKGROUND,r.globalAlpha=.6,r.fillRect(0,0,42,18),r.globalAlpha=1,r.fillStyle=i.COLOR_TEXT,r.textAlign=\"left\",r.fillText(\"\"+A,4,14),1/0<o&&(r.fillStyle=\"#0000001f\",r.fillRect(1/0,0,o-1/0,this.getHeight()))}(0,I.checkerboardExcept)(r,this.getHeight(),0,n.width,a.timeToPx(this.countersKey.start),a.timeToPx(this.countersKey.end))}onMouseMove({x:e,timescale:t}){var r,n=this.counters;void 0!==n&&(t=t.pxToHpTime(e),[e,t]=(0,h.searchSegment)(n.timestamps,t.toTime()),-1===e?this.hover=void 0:(r=k.Time.fromRaw(n.timestamps[e]),t=-1===t?void 0:k.Time.fromRaw(n.timestamps[t]),n=n.lastDisplayValues[e],this.hover={ts:r,tsEnd:t,lastDisplayValue:n},g.raf.scheduleFullRedraw()))}onMouseOut(){this.hover=void 0}async onDestroy(){await this.trash.asyncDispose()}computeYRange(e,t){var r=this.getCounterOptions();let n=e.minDisplayValue,a=e.maxDisplayValue;\"viewport\"===r.yRange&&([n,a]=t),\"zero\"===r.yDisplay&&(n=Math.min(0,n),a=Math.max(0,a)),void 0!==r.yOverrideMaximum&&(a=Math.max(r.yOverrideMaximum,a)),void 0!==r.yOverrideMinimum&&(n=Math.min(r.yOverrideMinimum,n)),\"human_readable\"===r.yRangeRounding&&(n=\"log\"===r.yDisplay?(a=Math.log(d(Math.exp(a))),Math.log(d(Math.exp(n)))):(a=d(a),d(n))),[n,a]=this.rangeSharer.share(r,[n,a]);let i;if(\"minmax\"===r.yDisplay)i=\"min - max\";else{let e=a,t=n;\"log\"===r.yDisplay&&(e=Math.exp(e),t=Math.exp(t)),i=e<0?p(t-e):p(e-t)}var o=this.unit;switch(r.yMode){case\"value\":i+=\" \"+o;break;case\"delta\":i+=\"Δ\"+o;break;case\"rate\":i+=\" \"+this.rateUnit;break;default:(0,w.assertUnreachable)(r.yMode)}return\"log\"===r.yDisplay&&(i=`log(${i})`),{yMin:n,yMax:a,yLabel:i,yRange:a-n}}getValueExpression(){var e=this.getCounterOptions();let t;switch(e.yMode){case\"value\":t=\"value\";break;case\"delta\":t=\"lead(value, 1, value) over (order by ts) - value\";break;case\"rate\":t=\"(lead(value, 1, value) over (order by ts) - value) / ((lead(ts, 1, 100) over (order by ts) - ts) / 1e9)\";break;default:(0,w.assertUnreachable)(e.yMode)}return\"log\"===e.yDisplay?`ifnull(ln(${t}), 0)`:t}getTableName(){return\"counter_\"+this.trackUuid}async maybeRequestData(e){if(!e.isCoveredBy(this.countersKey)){var n=e.normalize();if(!e.isCoveredBy(n))throw new Error(`Normalization error ${n.toString()} `+e.toString());void 0===this.limits&&(this.limits=await this.createTableAndFetchLimits(!0));var e=await this.engine.query(`\n      SELECT\n        min_value as minDisplayValue,\n        max_value as maxDisplayValue,\n        last_ts as ts,\n        last_value as lastDisplayValue\n      FROM ${this.getTableName()}(\n        ${n.start},\n        ${n.end},\n        ${n.bucketSize}\n      );\n    `),a=e.iter({ts:_.LONG,minDisplayValue:_.NUM,maxDisplayValue:_.NUM,lastDisplayValue:_.NUM}),e=e.numRows(),i={timestamps:new BigInt64Array(e),minDisplayValues:new Float64Array(e),maxDisplayValues:new Float64Array(e),lastDisplayValues:new Float64Array(e),displayValueRange:[0,0]};let t=0,r=0;for(let e=0;a.valid();a.next(),e++)i.timestamps[e]=k.Time.fromRaw(a.ts),i.minDisplayValues[e]=a.minDisplayValue,i.maxDisplayValues[e]=a.maxDisplayValue,i.lastDisplayValues[e]=a.lastDisplayValue,t=Math.min(t,a.minDisplayValue),r=Math.max(r,a.maxDisplayValue);i.displayValueRange=[t,r],this.countersKey=n,this.counters=i,g.raf.scheduleCanvasRedraw()}}async createTableAndFetchLimits(e){var e=e?`drop table ${this.getTableName()};`:\"\",e=await this.engine.query(`\n      ${e}\n      create virtual table ${this.getTableName()}\n      using __intrinsic_counter_mipmap((\n        select\n          ts,\n          ${this.getValueExpression()} as value\n        from (${this.getSqlSource()})\n      ));\n      select\n        min_value as minDisplayValue,\n        max_value as maxDisplayValue\n      from ${this.getTableName()}(\n        trace_start(), trace_end() + 1, trace_dur() + 1\n      );\n    `),{minDisplayValue:e,maxDisplayValue:t}=(this.trash.defer(async()=>{this.engine.tryQuery(\"drop table if exists \"+this.getTableName())}),e.firstRow({minDisplayValue:_.NUM,maxDisplayValue:_.NUM}));return{minDisplayValue:e,maxDisplayValue:t}}get unit(){return this.getCounterOptions().unit??\"\"}get rateUnit(){return this.getCounterOptions().rateUnit??`Δ${this.unit}/s`}get engine(){return this.trace.engine}}}return In}function Vi(){if(Bi)return dn;Bi=1,Object.defineProperty(dn,\"__esModule\",{value:!0}),dn.SqlTableCounterTrack=void 0,dn.createQueryCounterTrack=async function(e){var t=\"__query_counter_track_\"+(0,r.sqlNameSafe)(e.uri);return await async function(e,t,r,n={}){var{ts:n=\"ts\",value:a=\"value\"}=n,r=`\n    with data as (\n      ${r.sqlSource}\n    )\n    select\n      ${n} as ts,\n      ${a} as value\n    from data\n    order by ts\n  `;return(0,i.createPerfettoTable)({engine:e,name:t,as:r})}(e.trace.engine,t,e.data,e.columns),new n(e.trace,e.uri,t,e.options)};const i=De(),r=j();class n extends Gi().BaseCounterTrack{sqlSource;constructor(e,t,r,n){super(e,t,n),this.sqlSource=r}getSqlSource(){return`select * from (${this.sqlSource})`}}return dn.SqlTableCounterTrack=n,dn}var qi,zi,Wi,$i,Ki,Yi,Ji,Qi,Zi={},Xi={},eo={};function to(){if(!$i){$i=1;zi||(zi=1,qi={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]});const o=qi,s={};for(const r of Object.keys(o))s[o[r]]=r;const l={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};Wi=l;for(const n of Object.keys(l)){if(!(\"channels\"in l[n]))throw new Error(\"missing channels property: \"+n);if(!(\"labels\"in l[n]))throw new Error(\"missing channel labels property: \"+n);if(l[n].labels.length!==l[n].channels)throw new Error(\"channel and label counts mismatch: \"+n);var{channels:e,labels:t}=l[n];delete l[n].channels,delete l[n].labels,Object.defineProperty(l[n],\"channels\",{value:e}),Object.defineProperty(l[n],\"labels\",{value:t})}l.rgb.hsl=function(e){var t=e[0]/255,r=e[1]/255,e=e[2]/255,n=Math.min(t,r,e),a=Math.max(t,r,e),i=a-n;let o,s;a===n?o=0:t===a?o=(r-e)/i:r===a?o=2+(e-t)/i:e===a&&(o=4+(t-r)/i),(o=Math.min(60*o,360))<0&&(o+=360);e=(n+a)/2;return s=a===n?0:e<=.5?i/(a+n):i/(2-a-n),[o,100*s,100*e]},l.rgb.hsv=function(e){var t,r,n;let a,i;var o=e[0]/255,s=e[1]/255,e=e[2]/255;const l=Math.max(o,s,e),c=l-Math.min(o,s,e);function u(e){return(l-e)/6/c+.5}return 0===c?(a=0,i=0):(i=c/l,t=u(o),r=u(s),n=u(e),o===l?a=n-r:s===l?a=1/3+t-n:e===l&&(a=2/3+r-t),a<0?a+=1:1<a&&--a),[360*a,100*i,100*l]},l.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2];return[l.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(r,n))),100*(1-1/255*Math.max(t,Math.max(r,n)))]},l.rgb.cmyk=function(e){var t=e[0]/255,r=e[1]/255,e=e[2]/255,n=Math.min(1-t,1-r,1-e);return[100*((1-t-n)/(1-n)||0),100*((1-r-n)/(1-n)||0),100*((1-e-n)/(1-n)||0),100*n]},l.rgb.keyword=function(e){var t=s[e];if(t)return t;let r=1/0,n;for(const i of Object.keys(o)){var a=o[i],a=(e[0]-a[0])**2+(e[1]-a[1])**2+(e[2]-a[2])**2;a<r&&(r=a,n=i)}return n},l.keyword.rgb=function(e){return o[e]},l.rgb.xyz=function(e){var t=e[0]/255,r=e[1]/255,e=e[2]/255;return[100*(.4124*(t=.04045<t?((.055+t)/1.055)**2.4:t/12.92)+.3576*(r=.04045<r?((.055+r)/1.055)**2.4:r/12.92)+.1805*(e=.04045<e?((.055+e)/1.055)**2.4:e/12.92)),100*(.2126*t+.7152*r+.0722*e),100*(.0193*t+.1192*r+.9505*e)]},l.rgb.lab=function(e){var e=l.rgb.xyz(e),t=e[0],r=e[1],e=e[2];return[116*(r=.008856<(r/=100)?r**(1/3):7.787*r+16/116)-16,500*((.008856<(t/=95.047)?t**(1/3):7.787*t+16/116)-r),200*(r-(.008856<(e/=108.883)?e**(1/3):7.787*e+16/116))]},l.hsl.rgb=function(e){var t=e[0]/360,r=e[1]/100,e=e[2]/100;let n,a,i;if(0==r)return[i=255*e,i,i];var o=2*e-(n=e<.5?e*(1+r):e+r-e*r),s=[0,0,0];for(let e=0;e<3;e++)(a=t+1/3*-(e-1))<0&&a++,1<a&&a--,i=6*a<1?o+6*(n-o)*a:2*a<1?n:3*a<2?o+(n-o)*(2/3-a)*6:o,s[e]=255*i;return s},l.hsl.hsv=function(e){var t=e[0],r=e[1]/100,e=e[2]/100,n=r,a=Math.max(e,.01),i=(n*=a<=1?a:2-a,((e*=2)+(r*=e<=1?e:2-e))/2);return[t,100*(0==e?2*n/(a+n):2*r/(e+r)),100*i]},l.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,e=Math.floor(t)%6,t=t-Math.floor(t),a=255*n*(1-r),i=255*n*(1-r*t),o=255*n*(1-r*(1-t));switch(n*=255,e){case 0:return[n,o,a];case 1:return[i,n,a];case 2:return[a,n,o];case 3:return[a,i,n];case 4:return[o,a,n];case 5:return[n,a,i]}},l.hsv.hsl=function(e){var t=e[0],r=e[1]/100,e=e[2]/100,n=Math.max(e,.01),e=(2-r)*e,a=(2-r)*n,r=r*n;return[t,100*((r/=a<=1?a:2-a)||0),100*(e/=2)]},l.hwb.rgb=function(e){var t=e[0]/360;let r=e[1]/100,n=e[2]/100;e=r+n;let a;1<e&&(r/=e,n/=e);var e=Math.floor(6*t),i=1-n,o=(a=6*t-e,0!=(1&e)&&(a=1-a),r+a*(i-r));let s,l,c;switch(e){default:case 6:case 0:s=i,l=o,c=r;break;case 1:s=o,l=i,c=r;break;case 2:s=r,l=i,c=o;break;case 3:s=r,l=o,c=i;break;case 4:s=o,l=r,c=i;break;case 5:s=i,l=r,c=o}return[255*s,255*l,255*c]},l.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,e=e[3]/100;return[255*(1-Math.min(1,t*(1-e)+e)),255*(1-Math.min(1,r*(1-e)+e)),255*(1-Math.min(1,n*(1-e)+e))]},l.xyz.rgb=function(e){var t=e[0]/100,r=e[1]/100,e=e[2]/100,n=3.2406*t+-1.5372*r+-.4986*e,a=-.9689*t+1.8758*r+.0415*e,t=.0557*t+-.204*r+1.057*e;return a=.0031308<a?1.055*a**(1/2.4)-.055:12.92*a,t=.0031308<t?1.055*t**(1/2.4)-.055:12.92*t,[255*Math.min(Math.max(0,.0031308<n?1.055*n**(1/2.4)-.055:12.92*n),1),255*Math.min(Math.max(0,a),1),255*Math.min(Math.max(0,t),1)]},l.xyz.lab=function(e){var t=e[0],r=e[1],e=e[2];return[116*(r=.008856<(r/=100)?r**(1/3):7.787*r+16/116)-16,500*((.008856<(t/=95.047)?t**(1/3):7.787*t+16/116)-r),200*(r-(.008856<(e/=108.883)?e**(1/3):7.787*e+16/116))]},l.lab.xyz=function(e){var t=(e[0]+16)/116,r=e[1]/500+t,e=t-e[2]/200,n=t**3,a=r**3,i=e**3;return t=.008856<n?n:(t-16/116)/7.787,r=.008856<a?a:(r-16/116)/7.787,e=.008856<i?i:(e-16/116)/7.787,[r*=95.047,t*=100,e*=108.883]},l.lab.lch=function(e){var t=e[0],r=e[1],e=e[2];let n;var a=Math.atan2(e,r),a=((n=360*a/2/Math.PI)<0&&(n+=360),Math.sqrt(r*r+e*e));return[t,a,n]},l.lch.lab=function(e){var t=e[0],r=e[1],e=e[2]/360*2*Math.PI;return[t,r*Math.cos(e),r*Math.sin(e)]},l.rgb.ansi16=function(e,t=null){var[r,n,a]=e,e=null===t?l.rgb.hsv(e)[2]:t;if(0===(e=Math.round(e/50)))return 30;let i=30+(Math.round(a/255)<<2|Math.round(n/255)<<1|Math.round(r/255));return 2===e&&(i+=60),i},l.hsv.ansi16=function(e){return l.rgb.ansi16(l.hsv.rgb(e),e[2])},l.rgb.ansi256=function(e){var t=e[0],r=e[1],e=e[2];return t===r&&r===e?t<8?16:248<t?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(e/255*5)},l.ansi16.rgb=function(e){let t=e%10;return 0===t||7===t?(50<e&&(t+=3.5),[t=t/10.5*255,t,t]):(e=.5*(1+~~(50<e)),[(1&t)*e*255,(t>>1&1)*e*255,(t>>2&1)*e*255])},l.ansi256.rgb=function(e){var t;return 232<=e?[t=10*(e-232)+8,t,t]:(e-=16,[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255])},l.rgb.hex=function(e){e=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return\"000000\".substring(e.length)+e},l.hex.rgb=function(e){e=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];3===e[0].length&&(t=t.split(\"\").map(e=>e+e).join(\"\"));e=parseInt(t,16);return[e>>16&255,e>>8&255,255&e]},l.rgb.hcg=function(e){var t=e[0]/255,r=e[1]/255,e=e[2]/255,n=Math.max(Math.max(t,r),e),a=Math.min(Math.min(t,r),e),i=n-a;let o,s;return o=i<1?a/(1-i):0,[360*(s=(s=i<=0?0:n===t?(r-e)/i%6:n===r?2+(e-t)/i:4+(t-r)/i)/6%1),100*i,100*o]},l.hsl.hcg=function(e){var t=e[1]/100,r=e[2]/100,t=r<.5?2*t*r:2*t*(1-r);let n=t<1?(r-.5*t)/(1-t):0;return[e[0],100*t,100*n]},l.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,t=t*r;let n=t<1?(r-t)/(1-t):0;return[e[0],100*t,100*n]},l.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,e=e[2]/100;if(0==r)return[255*e,255*e,255*e];var n=[0,0,0],t=t%1*6,a=t%1,i=1-a;switch(Math.floor(t)){case 0:n[0]=1,n[1]=a,n[2]=0;break;case 1:n[0]=i,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=a;break;case 3:n[0]=0,n[1]=i,n[2]=1;break;case 4:n[0]=a,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=i}return[255*(r*n[0]+(t=(1-r)*e)),255*(r*n[1]+t),255*(r*n[2]+t)]},l.hcg.hsv=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);let n=0<r?t/r:0;return[e[0],100*n,100*r]},l.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let n=0;return 0<r&&r<.5?n=t/(2*r):.5<=r&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},l.hcg.hwb=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},l.hwb.hcg=function(e){var t=e[1]/100,r=1-e[2]/100,t=r-t;let n=t<1?(r-t)/(1-t):0;return[e[0],100*t,100*n]},l.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},l.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},l.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},l.gray.hsl=function(e){return[0,0,e[0]]},l.gray.hsv=l.gray.hsl,l.gray.hwb=function(e){return[0,100,e[0]]},l.gray.cmyk=function(e){return[0,0,0,e[0]]},l.gray.lab=function(e){return[e[0],0,0]},l.gray.hex=function(e){e=255&Math.round(e[0]/100*255),e=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(e.length)+e},l.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}}return Wi}function ro(){if(!Yi){Yi=1;const l=to();function t(e){var r=function(){var r={},n=Object.keys(l);for(let e=n.length,t=0;t<e;t++)r[n[t]]={distance:-1,parent:null};return r}(),n=[e];for(r[e].distance=0;n.length;){var a=n.pop(),i=Object.keys(l[a]);for(let e=i.length,t=0;t<e;t++){var o=i[t],s=r[o];-1===s.distance&&(s.distance=r[a].distance+1,s.parent=a,n.unshift(o))}}return r}function o(e,t){var r=[t[e].parent,e];let n=l[t[e].parent][e],a=t[e].parent;for(;t[a].parent;)r.unshift(t[a].parent),n=function(t,r){return function(e){return r(t(e))}}(l[t[a].parent][a],n),a=t[a].parent;return n.conversion=r,n}Ki=function(e){var r=t(e),n={},a=Object.keys(r);for(let e=a.length,t=0;t<e;t++){var i=a[t];null!==r[i].parent&&(n[i]=o(i,r))}return n}}return Ki}function no(){if(!Qi){Qi=1;const e=to(),t=ro(),o={};function a(r){function e(...e){var t=e[0];return null==t?t:(1<t.length&&(e=t),r(e))}return\"conversion\"in r&&(e.conversion=r.conversion),e}function i(n){function e(...e){var t=e[0];if(null==t)return t;1<t.length&&(e=t);var r=n(e);if(\"object\"==typeof r)for(let e=r.length,t=0;t<e;t++)r[t]=Math.round(r[t]);return r}return\"conversion\"in n&&(e.conversion=n.conversion),e}Object.keys(e).forEach(r=>{o[r]={},Object.defineProperty(o[r],\"channels\",{value:e[r].channels}),Object.defineProperty(o[r],\"labels\",{value:e[r].labels});const n=t(r);Object.keys(n).forEach(e=>{var t=n[e];o[r][e]=i(t),o[r][e].raw=a(t)})}),Ji=o}return Ji}var ao,io={};function oo(){return ao||(ao=1,Object.defineProperty(io,\"__esModule\",{value:!0}),io.hash=function(t,e){let r=18652613;for(let e=0;e<t.length;e++)r=16777619*(r^=t.charCodeAt(e))&4294967295;return Math.abs(r)%e}),io}var so,lo={},co={};function uo(){return so||(so=1,Object.defineProperty(co,\"__esModule\",{value:!0}),co.OverrideState=void 0,co.OverrideState={DEFAULT:\"DEFAULT\",TRUE:\"OVERRIDE_TRUE\",FALSE:\"OVERRIDE_FALSE\"}),co}var po,fo,ho={};function mo(){if(!po){po=1,Object.defineProperty(ho,\"__esModule\",{value:!0}),ho.LocalStorage=void 0;ho.LocalStorage=class{key;constructor(e){this.key=e}load(){var e=localStorage.getItem(this.key);let t;try{t=JSON.parse(e??\"{}\")}catch(e){return{}}return\"object\"!=typeof t||null===t?{}:t}save(e){e=JSON.stringify(e);localStorage.setItem(this.key,e)}}}return ho}function go(){if(fo)return lo;fo=1,Object.defineProperty(lo,\"__esModule\",{value:!0}),lo.featureFlags=lo.FlagsForTesting=void 0;const r=Ne(),n=uo();var e=mo();class t{store;flags;overrides;constructor(e){this.store=e,this.flags=new Map,this.overrides={},this.load()}register(e){var t=e.id;if(this.flags.has(t))throw new Error(`Flag with id \"${t}\" is already registered.`);var r=this.overrides[t],r=void 0===r?n.OverrideState.DEFAULT:r,r=new a(this,r,e);return this.flags.set(t,r),r}allFlags(){const t=[\"127.0.0.1\",\"::1\",\"localhost\"].includes(window.location.hostname);let e=[...this.flags.values()];return(e=e.filter(e=>t||!e.devOnly)).sort((e,t)=>e.name.localeCompare(t.name)),e}resetAll(){for(const e of this.flags.values())e.state=n.OverrideState.DEFAULT;this.save()}load(){var e=this.store.load(),{success:e,data:t}=r.z.record(r.z.string(),r.z.union([r.z.literal(n.OverrideState.TRUE),r.z.literal(n.OverrideState.FALSE)])).safeParse(e);e&&(this.overrides=t)}save(){for(const e of this.flags.values())e.isOverridden()?this.overrides[e.id]=e.state:delete this.overrides[e.id];this.store.save(this.overrides)}}class a{registry;state;id;name;description;defaultValue;devOnly;constructor(e,t,r){this.registry=e,this.id=r.id,this.state=t,this.description=r.description,this.defaultValue=r.defaultValue,this.name=r.name??r.id,this.devOnly=r.devOnly||!1}get(){switch(this.state){case n.OverrideState.TRUE:return!0;case n.OverrideState.FALSE:return!1;default:n.OverrideState.DEFAULT;return this.defaultValue}}set(e){e=e?n.OverrideState.TRUE:n.OverrideState.FALSE;this.state!==e&&(this.state=e,this.registry.save())}overriddenState(){return this.state}reset(){this.state=n.OverrideState.DEFAULT,this.registry.save()}isOverridden(){return this.state!==n.OverrideState.DEFAULT}}return lo.FlagsForTesting=t,lo.featureFlags=new t(new e.LocalStorage(\"perfettoFeatureFlags\")),lo}var _o,yo,To={};var vo,bo,Eo={};function So(){if(!vo){vo=1,Object.defineProperty(Eo,\"__esModule\",{value:!0}),Eo.clamp=function(e,t,r){return Math.max(t,Math.min(r,e))},Eo.floatEqual=function(e,t,r=n){return Math.abs(e-t)<r};const n=1e-9}return Eo}function Ao(){if(!bo){bo=1,Object.defineProperty(To,\"__esModule\",{value:!0}),To.HSLuvColor=To.HSLColor=void 0,To.hslToRgb=n,To.hexToRgb=a,To.rgbToHsl=i,To.colorCompare=function(e,t){return e.cssString.localeCompare(t.cssString)};yo||(yo=1,(p={Geometry:function(){}}).Geometry.intersectLineLine=function(e,t){t=(e.intercept-t.intercept)/(t.slope-e.slope);return{x:t,y:e.slope*t+e.intercept}},p.Geometry.distanceFromOrigin=function(e){return Math.sqrt(Math.pow(e.x,2)+Math.pow(e.y,2))},p.Geometry.distanceLineFromOrigin=function(e){return Math.abs(e.intercept)/Math.sqrt(Math.pow(e.slope,2)+1)},p.Geometry.perpendicularThroughPoint=function(e,t){e=-1/e.slope;return{slope:e,intercept:t.y-e*t.x}},p.Geometry.angleFromOrigin=function(e){return Math.atan2(e.y,e.x)},p.Geometry.normalizeAngle=function(e){var t=2*Math.PI;return(e%t+t)%t},p.Geometry.lengthOfRayUntilIntersect=function(e,t){return t.intercept/(Math.sin(e)-t.slope*Math.cos(e))},p.Hsluv=function(){},p.Hsluv.getBounds=function(e){for(var t=[],r=Math.pow(e+16,3)/1560896,n=r>p.Hsluv.epsilon?r:e/p.Hsluv.kappa,a=0;a<3;)for(var i=a++,o=p.Hsluv.m[i][0],s=p.Hsluv.m[i][1],l=p.Hsluv.m[i][2],c=0;c<2;){var u=c++,d=(632260*l-126452*s)*n+126452*u;t.push({slope:(284517*o-94839*l)*n/d,intercept:((838422*l+769860*s+731718*o)*e*n-769860*u*e)/d})}return t},p.Hsluv.maxSafeChromaForL=function(e){for(var t=p.Hsluv.getBounds(e),r=1/0,n=0;n<t.length;)var a=t[n],a=(++n,p.Geometry.distanceLineFromOrigin(a)),r=Math.min(r,a);return r},p.Hsluv.maxChromaForLH=function(e,t){for(var r=t/360*Math.PI*2,n=p.Hsluv.getBounds(e),a=1/0,i=0;i<n.length;){var o=n[i],o=(++i,p.Geometry.lengthOfRayUntilIntersect(r,o));0<=o&&(a=Math.min(a,o))}return a},p.Hsluv.dotProduct=function(e,t){for(var r=0,n=0,a=e.length;n<a;){var i=n++;r+=e[i]*t[i]}return r},p.Hsluv.fromLinear=function(e){return e<=.0031308?12.92*e:1.055*Math.pow(e,.4166666666666667)-.055},p.Hsluv.toLinear=function(e){return.04045<e?Math.pow((e+.055)/1.055,2.4):e/12.92},p.Hsluv.xyzToRgb=function(e){return[p.Hsluv.fromLinear(p.Hsluv.dotProduct(p.Hsluv.m[0],e)),p.Hsluv.fromLinear(p.Hsluv.dotProduct(p.Hsluv.m[1],e)),p.Hsluv.fromLinear(p.Hsluv.dotProduct(p.Hsluv.m[2],e))]},p.Hsluv.rgbToXyz=function(e){e=[p.Hsluv.toLinear(e[0]),p.Hsluv.toLinear(e[1]),p.Hsluv.toLinear(e[2])];return[p.Hsluv.dotProduct(p.Hsluv.minv[0],e),p.Hsluv.dotProduct(p.Hsluv.minv[1],e),p.Hsluv.dotProduct(p.Hsluv.minv[2],e)]},p.Hsluv.yToL=function(e){return e<=p.Hsluv.epsilon?e/p.Hsluv.refY*p.Hsluv.kappa:116*Math.pow(e/p.Hsluv.refY,.3333333333333333)-16},p.Hsluv.lToY=function(e){return e<=8?p.Hsluv.refY*e/p.Hsluv.kappa:p.Hsluv.refY*Math.pow((e+16)/116,3)},p.Hsluv.xyzToLuv=function(e){var t=e[0],r=e[1],e=t+15*r+3*e[2],t=4*t,n=9*r,e=(0!=e?(t/=e,n/=e):n=t=NaN,p.Hsluv.yToL(r));return 0==e?[0,0,0]:[e,13*e*(t-p.Hsluv.refU),13*e*(n-p.Hsluv.refV)]},p.Hsluv.luvToXyz=function(e){var t=e[0],r=e[1],e=e[2];return 0==t?[0,0,0]:(r=r/(13*t)+p.Hsluv.refU,e=e/(13*t)+p.Hsluv.refV,[r=0-9*(t=p.Hsluv.lToY(t))*r/((r-4)*e-r*e),t,(9*t-15*e*t-e*r)/(3*e)])},p.Hsluv.luvToLch=function(e){var t,r=e[0],n=e[1],e=e[2],a=Math.sqrt(n*n+e*e);return a<1e-8?t=0:(t=180*Math.atan2(e,n)/Math.PI)<0&&(t=360+t),[r,a,t]},p.Hsluv.lchToLuv=function(e){var t=e[0],r=e[1],e=e[2]/360*2*Math.PI;return[t,Math.cos(e)*r,Math.sin(e)*r]},p.Hsluv.hsluvToLch=function(e){var t=e[0],r=e[1],e=e[2];return 99.9999999<e?[100,0,t]:e<1e-8?[0,0,t]:[e,p.Hsluv.maxChromaForLH(e,t)/100*r,t]},p.Hsluv.lchToHsluv=function(e){var t=e[0],r=e[1],e=e[2];return 99.9999999<t?[e,0,100]:t<1e-8?[e,0,0]:[e,r/p.Hsluv.maxChromaForLH(t,e)*100,t]},p.Hsluv.hpluvToLch=function(e){var t=e[0],r=e[1],e=e[2];return 99.9999999<e?[100,0,t]:e<1e-8?[0,0,t]:[e,p.Hsluv.maxSafeChromaForL(e)/100*r,t]},p.Hsluv.lchToHpluv=function(e){var t=e[0],r=e[1],e=e[2];return 99.9999999<t?[e,0,100]:t<1e-8?[e,0,0]:[e,r/p.Hsluv.maxSafeChromaForL(t)*100,t]},p.Hsluv.rgbToHex=function(e){for(var t=\"#\",r=0;r<3;){var n=e[r++],n=Math.round(255*n),a=n%16;t+=p.Hsluv.hexChars.charAt((n-a)/16|0)+p.Hsluv.hexChars.charAt(a)}return t},p.Hsluv.hexToRgb=function(e){e=e.toLowerCase();for(var t=[],r=0;r<3;){var n=r++,a=p.Hsluv.hexChars.indexOf(e.charAt(2*n+1)),n=p.Hsluv.hexChars.indexOf(e.charAt(2*n+2));t.push((16*a+n)/255)}return t},p.Hsluv.lchToRgb=function(e){return p.Hsluv.xyzToRgb(p.Hsluv.luvToXyz(p.Hsluv.lchToLuv(e)))},p.Hsluv.rgbToLch=function(e){return p.Hsluv.luvToLch(p.Hsluv.xyzToLuv(p.Hsluv.rgbToXyz(e)))},p.Hsluv.hsluvToRgb=function(e){return p.Hsluv.lchToRgb(p.Hsluv.hsluvToLch(e))},p.Hsluv.rgbToHsluv=function(e){return p.Hsluv.lchToHsluv(p.Hsluv.rgbToLch(e))},p.Hsluv.hpluvToRgb=function(e){return p.Hsluv.lchToRgb(p.Hsluv.hpluvToLch(e))},p.Hsluv.rgbToHpluv=function(e){return p.Hsluv.lchToHpluv(p.Hsluv.rgbToLch(e))},p.Hsluv.hsluvToHex=function(e){return p.Hsluv.rgbToHex(p.Hsluv.hsluvToRgb(e))},p.Hsluv.hpluvToHex=function(e){return p.Hsluv.rgbToHex(p.Hsluv.hpluvToRgb(e))},p.Hsluv.hexToHsluv=function(e){return p.Hsluv.rgbToHsluv(p.Hsluv.hexToRgb(e))},p.Hsluv.hexToHpluv=function(e){return p.Hsluv.rgbToHpluv(p.Hsluv.hexToRgb(e))},p.Hsluv.m=[[3.240969941904521,-1.537383177570093,-.498610760293],[-.96924363628087,1.87596750150772,.041555057407175],[.055630079696993,-.20397695888897,1.056971514242878]],p.Hsluv.minv=[[.41239079926595,.35758433938387,.18048078840183],[.21263900587151,.71516867876775,.072192315360733],[.019330818715591,.11919477979462,.95053215224966]],p.Hsluv.refY=1,p.Hsluv.refU=.19783000664283,p.Hsluv.refV=.46831999493879,p.Hsluv.kappa=903.2962962,p.Hsluv.epsilon=.0088564516,p.Hsluv.hexChars=\"0123456789abcdef\",e={hsluvToRgb:p.Hsluv.hsluvToRgb,rgbToHsluv:p.Hsluv.rgbToHsluv,hpluvToRgb:p.Hsluv.hpluvToRgb,rgbToHpluv:p.Hsluv.rgbToHpluv,hsluvToHex:p.Hsluv.hsluvToHex,hexToHsluv:p.Hsluv.hexToHsluv,hpluvToHex:p.Hsluv.hpluvToHex,hexToHpluv:p.Hsluv.hexToHpluv,lchToHpluv:p.Hsluv.lchToHpluv,hpluvToLch:p.Hsluv.hpluvToLch,lchToHsluv:p.Hsluv.lchToHsluv,hsluvToLch:p.Hsluv.hsluvToLch,lchToLuv:p.Hsluv.lchToLuv,luvToLch:p.Hsluv.luvToLch,xyzToLuv:p.Hsluv.xyzToLuv,luvToXyz:p.Hsluv.luvToXyz,xyzToRgb:p.Hsluv.xyzToRgb,rgbToXyz:p.Hsluv.rgbToXyz,lchToRgb:p.Hsluv.lchToRgb,rgbToLch:p.Hsluv.rgbToLch},_o=e);const s=_o;var p,e;const l=So(),c=100,u=100;class t{hsl;alpha;constructor(e,t){var r;Array.isArray(e)?this.hsl=e:\"string\"==typeof e?(r=a(e),this.hsl=i(r)):this.hsl=[e.h,e.s,e.l],this.alpha=t}lighten(e,t=c){var[r,n,a]=this.hsl,a=(0,l.clamp)(a+e,0,t);return this.create([r,n,a],this.alpha)}darken(e,t=0){var[r,n,a]=this.hsl,a=(0,l.clamp)(a-e,t,c);return this.create([r,n,a],this.alpha)}saturate(e,t=u){var[r,n,a]=this.hsl,n=(0,l.clamp)(n+e,0,t);return this.create([r,n,a],this.alpha)}desaturate(e,t=0){var[r,n,a]=this.hsl,n=(0,l.clamp)(n-e,t,u);return this.create([r,n,a],this.alpha)}setHSL(e){var[t,r,n]=this.hsl;return this.create({h:t,s:r,l:n,...e},this.alpha)}setAlpha(e){return this.create(this.hsl,e)}}class r extends t{cssString;perceivedBrightness;constructor(e,t){super(e,t);var[e,t,r]=n(...this.hsl);this.perceivedBrightness=o(e,t,r),void 0===this.alpha?this.cssString=`rgb(${e} ${t} ${r})`:this.cssString=`rgb(${e} ${t} ${r} / ${this.alpha})`}create(e,t){return new r(e,t)}}To.HSLColor=r;class d extends t{cssString;perceivedBrightness;constructor(e,t){super(e,t);var e=(0,s.hsluvToRgb)(this.hsl),t=Math.floor(255*e[0]),r=Math.floor(255*e[1]),e=Math.floor(255*e[2]);this.perceivedBrightness=o(t,r,e),void 0===this.alpha?this.cssString=`rgb(${t} ${r} ${e})`:this.cssString=`rgb(${t} ${r} ${e} / ${this.alpha})`}create(e,t){return new d(e,t)}}function n(e,t,r){t/=u,r/=c;var t=(1-Math.abs(2*r-1))*t,n=t*(1-Math.abs(e/60%2-1)),r=r-t/2;let[a,i,o]=[0,0,0];return 0<=e&&e<60?[a,i,o]=[t,n,0]:60<=e&&e<120?[a,i,o]=[n,t,0]:120<=e&&e<180?[a,i,o]=[0,t,n]:180<=e&&e<240?[a,i,o]=[0,n,t]:240<=e&&e<300?[a,i,o]=[n,0,t]:300<=e&&e<360&&([a,i,o]=[t,0,n]),a=Math.round(255*(a+r)),i=Math.round(255*(i+r)),o=Math.round(255*(o+r)),[a,i,o]}function a(e){let t=0,r=0,n=0;return 4===e.length?(t=parseInt(e[1]+e[1],16),r=parseInt(e[2]+e[2],16),n=parseInt(e[3]+e[3],16)):7===e.length&&(t=parseInt(e.substring(1,3),16),r=parseInt(e.substring(3,5),16),n=parseInt(e.substring(5,7),16)),[t,r,n]}function i(e){var[t,r,n]=e,e=(t/=255,r/=255,n/=255,Math.max(t,r,n)),a=Math.min(t,r,n);let i=(e+a)/2,o=(e+a)/2;var s=(e+a)/2;if(e===a)i=o=0;else{var l=e-a;switch(o=.5<s?l/(2-e-a):l/(e+a),e){case t:i=(r-n)/l+(r<n?6:0);break;case r:i=(n-t)/l+2;break;case n:i=(t-r)/l+4}i/=6}return[360*i,100*o,100*s]}function o(e,t,r){return(299*e+587*t+114*r)/1e3}To.HSLuvColor=d}return To}var Oo,Co,wo={};function ko(){if(!Oo){Oo=1,Object.defineProperty(wo,\"__esModule\",{value:!0}),wo.pseudoRand=function(e){return(e=e??a).seed=(r*e.seed+n)%t,e.seed/t};const t=2**31-1,r=48271,n=1,a={seed:0}}return wo}function He(){if(!Co){Co=1;{var r=eo;Object.defineProperty(r,\"__esModule\",{value:!0}),r.UNEXPECTED_PINK=r.GRAY=r.GRAY_COLOR=r.BLACK_COLOR=r.WHITE_COLOR=void 0,r.makeColorScheme=n,r.materialColorScheme=a,r.colorForTid=t,r.colorForThread=function(e){if(void 0===e)return r.GRAY;e=e.pid??e.tid;return t(e)},r.colorForCpu=function(e){return d.get()?a(e.toString()).base:(e=(128+32*e)%256,new l.HSLColor({h:e,s:50,l:50}))},r.randomColor=function(){var e=(0,c.pseudoRand)(p);return d.get()?a(e.toString()).base.cssString:(e=9*Math.floor(40*e),\"#\"+o.hsl.hex([e,90,30]))},r.getColorForSlice=function(e,{stripTrailingDigits:t=!0}={}){t=t?e.replace(/( )?\\d+/g,\"\"):e;return(d.get()?a:i)(t)},r.getColorForSample=function(e){return(d.get()?a:i)(String(e))};const o=no(),s=oo();var e=go();const l=Ao(),c=ko(),u=180,d=e.featureFlags.register({id:\"useConsistentColors\",name:\"Use common color palette for timeline elements\",description:\"Use the same color palette for all timeline elements.\",defaultValue:!1}),p={seed:0};e=[new l.HSLColor({h:4,s:90,l:58}),new l.HSLColor({h:340,s:82,l:52}),new l.HSLColor({h:291,s:64,l:42}),new l.HSLColor({h:262,s:52,l:47}),new l.HSLColor({h:231,s:48,l:48}),new l.HSLColor({h:207,s:90,l:54}),new l.HSLColor({h:199,s:98,l:48}),new l.HSLColor({h:187,s:100,l:42}),new l.HSLColor({h:174,s:100,l:29}),new l.HSLColor({h:122,s:39,l:49}),new l.HSLColor({h:88,s:50,l:53}),new l.HSLColor({h:66,s:70,l:54}),new l.HSLColor({h:45,s:100,l:51}),new l.HSLColor({h:36,s:100,l:50}),new l.HSLColor({h:14,s:100,l:57}),new l.HSLColor({h:16,s:25,l:38}),new l.HSLColor({h:200,s:18,l:46}),new l.HSLColor({h:54,s:100,l:62})];r.WHITE_COLOR=new l.HSLColor([0,0,100]),r.BLACK_COLOR=new l.HSLColor([0,0,0]),r.GRAY_COLOR=new l.HSLColor([0,0,50]).setAlpha(.5);const f=e.map(e=>{var e=e.desaturate(20),t=e.desaturate(20).setAlpha(.8);return{base:e,variant:t,disabled:r.GRAY_COLOR,textBase:r.WHITE_COLOR,textVariant:r.WHITE_COLOR,textDisabled:r.WHITE_COLOR.setAlpha(.5)}});function n(e,t){return t=t??e.darken(15).saturate(15),{base:e,variant:t,disabled:r.GRAY_COLOR,textBase:e.perceivedBrightness>=u?r.BLACK_COLOR:r.WHITE_COLOR,textVariant:t.perceivedBrightness>=u?r.BLACK_COLOR:r.WHITE_COLOR,textDisabled:r.WHITE_COLOR}}function a(e){e=(0,s.hash)(e,f.length);return f[e]}r.GRAY=n(new l.HSLColor([0,0,62])),r.UNEXPECTED_PINK=n(new l.HSLColor([330,100,70]));const h=new Map;function i(e){const t=h.get(e);if(t)return t;{var r=(0,s.hash)(e,360);const t=n(new l.HSLuvColor({h:r,s:80,l:(0,s.hash)(e+\"x\",40)+40}),new l.HSLuvColor({h:r,s:80,l:30}));return h.set(e,t),t}}function t(e){return a(e.toString())}}}return eo}var Io,Ro,No={},Mo={};function Po(){return Io||(Io=1,Object.defineProperty(Mo,\"__esModule\",{value:!0}),Mo.DurationPrecision=Mo.TimestampFormat=void 0,Mo.TimestampFormat={Timecode:\"timecode\",TraceNs:\"traceNs\",TraceNsLocale:\"traceNsLocale\",Seconds:\"seconds\",Milliseconds:\"milliseconds\",Microseconds:\"microseconds\",UTC:\"utc\",CustomTimezone:\"customTimezone\",TraceTz:\"traceTz\"},Mo.DurationPrecision={Full:\"full\",HumanReadable:\"human_readable\"}),Mo}function Do(){if(!Ro){Ro=1,Object.defineProperty(No,\"__esModule\",{value:!0}),No.renderTimecode=function(e){var{dhhmmss:e,millis:t,micros:r,nanos:n}=i.Time.toTimecode(e);return(0,a.default)(\"span.pf-timecode\",(0,a.default)(\"span.pf-timecode-hms\",e),\".\",(0,a.default)(\"span.pf-timecode-millis\",t),(0,a.default)(\"span.pf-timecode-micros\",r),(0,a.default)(\"span.pf-timecode-nanos\",n))},No.formatDuration=function(e,t){var r=e.timeline.timestampFormat;switch(r){case n.TimestampFormat.UTC:case n.TimestampFormat.TraceTz:case n.TimestampFormat.Timecode:case n.TimestampFormat.CustomTimezone:return function(e,t){var r=e.timeline.durationPrecision;switch(r){case n.DurationPrecision.HumanReadable:return i.Duration.humanise(t);case n.DurationPrecision.Full:return i.Duration.format(t);default:throw new Error(\"Invalid format \"+r)}}(e,t);case n.TimestampFormat.TraceNs:return t.toString();case n.TimestampFormat.TraceNsLocale:return t.toLocaleString();case n.TimestampFormat.Seconds:return i.Duration.formatSeconds(t);case n.TimestampFormat.Milliseconds:return i.Duration.formatMilliseconds(t);case n.TimestampFormat.Microseconds:return i.Duration.formatMicroseconds(t);default:throw new Error(\"Invalid format \"+r)}};const a=Jr.__importDefault(xe()),i=Fe(),n=Po()}return No}var xo,Lo,Fo,Uo={},Bo={};function jo(){return xo||(xo=1,Object.defineProperty(Bo,\"__esModule\",{value:!0}),Bo.drawDoubleHeadedArrow=function(e,t,r,n,a,i=2,o=\"black\"){e.beginPath(),e.lineWidth=i,e.lineCap=\"round\",e.strokeStyle=o,e.moveTo(t,r),e.lineTo(t+n,r),e.stroke(),e.closePath(),a&&(e.beginPath(),e.moveTo(t+n-8,r-4),e.lineTo(t+n,r),e.lineTo(t+n-8,r+4),e.stroke(),e.closePath(),e.beginPath(),e.moveTo(t+8,r-4),e.lineTo(t,r),e.lineTo(t+8,r+4),e.stroke(),e.closePath())},Bo.drawIncompleteSlice=function(e,t,r,n,a,i,o=!0){var s;n<=0||a<=0||(e.beginPath(),s=a/4,e.moveTo(t,r),e.lineTo(t+n,r),e.lineTo(t+n-3,r+.5*s),e.lineTo(t+n,r+s),e.lineTo(t+n-3,r+1.5*s),e.lineTo(t+n,r+2*s),e.lineTo(t+n-3,r+2.5*s),e.lineTo(t+n,r+3*s),e.lineTo(t+n-3,r+3.5*s),e.lineTo(t+n,r+4*s),e.lineTo(t,r+a),s=e.fillStyle,o&&((o=e.createLinearGradient(t,r,t+n,r+a)).addColorStop(.66,i.cssString),o.addColorStop(1,i.setAlpha(0).cssString),e.fillStyle=o),e.fill(),e.fillStyle=s)},Bo.canvasClip=function(e,t,r,n,a){e.beginPath(),\"number\"==typeof t?e.rect(t,r,n,a):e.rect(t.x,t.y,t.width,t.height);e.clip()},Bo.canvasSave=function(e){return e.save(),{[Symbol.dispose](){e.restore()}}}),Bo}function Ge(){if(!Fo){Fo=1,Object.defineProperty(Xi,\"__esModule\",{value:!0}),Xi.DatasetSliceTrack=void 0,Xi.renderTooltip=t;const a=Jr.__importDefault(xe()),s=Fe(),i=Ue(),r=He(),l=Do(),c=function(){if(!Lo){Lo=1;{var P=Uo;Object.defineProperty(P,\"__esModule\",{value:!0}),P.BaseSliceTrack=P.BASE_ROW=P.filterVisibleSlicesForTesting=P.FADE_THIN_SLICES_FLAG=P.CROP_INCOMPLETE_SLICE_FLAG=P.SLICE_FLAGS_INSTANT=P.SLICE_FLAGS_INCOMPLETE=void 0;const D=jo(),x=Ao(),l=Le(),a=Pe(),L=So(),F=j(),i=Fe(),o=Me();var e=ln(),t=go();const s=K(),c=Ue(),U=Pi();var r=He();const u=Li(),B=(P.SLICE_FLAGS_INCOMPLETE=1,P.SLICE_FLAGS_INSTANT=2,1/u.BUCKETS_PER_PIXEL),d=r.UNEXPECTED_PINK;function n(e,t,r){var n=e[0];return(0,o.exists)(n)&&n.startNs>r?[]:e.filter(e=>e.startNs<=r&&e.endNs>=t)}P.CROP_INCOMPLETE_SLICE_FLAG=t.featureFlags.register({id:\"cropIncompleteSlice\",name:\"Crop incomplete slices\",description:\"Display incomplete slices in short form\",defaultValue:!1}),P.FADE_THIN_SLICES_FLAG=t.featureFlags.register({id:\"fadeThinSlices\",name:\"Fade thin slices\",description:\"Display sub-pixel slices in a faded way\",defaultValue:!1}),P.filterVisibleSlicesForTesting=n,P.BASE_ROW={id:c.NUM,ts:c.LONG,dur:c.LONG,tsQ:c.LONG,durQ:c.LONG,count:c.NUM,depth:c.NUM};P.BaseSliceTrack=class{trace;uri;rowSpec;depthGuess;instantWidthPx;forceTimestampRenderOrder;sliceLayout;trackUuid=(0,e.uuidv4Sql)();slicesKey=u.CacheKey.zero();slices=new Array;incomplete=new Array;selectedSlice;extraSqlColumns;charWidth=-1;hoveredSlice;maxDataDepth=0;computedTrackHeight=0;trash;async onInit(){}renderTooltipForSlice(e){}onSliceOver(e){}onSliceOut(e){}onSliceClick({slice:e}){this.trace.selection.selectTrackEvent(this.uri,e.id)}onUpdatedSlices(e){this.highlightHoveredAndSameTitle(e)}drawSchedLatencyArrow(e,t){}constructor(e,t,r,n={},a=0,i=10,o=!1){this.trace=e,this.uri=t,this.rowSpec=r,this.depthGuess=a,this.instantWidthPx=i,this.forceTimestampRenderOrder=o;e=Object.keys(r);const s=Object.keys(P.BASE_ROW);this.extraSqlColumns=e.filter(e=>!s.includes(e)),this.trash=new l.AsyncDisposableStack,this.sliceLayout={padding:n.padding??3,rowGap:n.rowGap??0,sliceHeight:n.sliceHeight??18,titleSizePx:n.titleSizePx??12,subtitleSizePx:n.subtitleSizePx??8}}onFullRedraw(){this.onUpdatedSlices(this.slices),this.onUpdatedSlices(this.incomplete),void 0!==this.selectedSlice&&this.onUpdatedSlices([this.selectedSlice])}getTitleFont(){return this.sliceLayout.titleSizePx+\"px Roboto Condensed\"}getSubtitleFont(){return this.sliceLayout.subtitleSizePx+\"px Roboto Condensed\"}getTableName(){return\"slice_\"+this.trackUuid}oldQuery;async initialize(){await this.trash.asyncDispose();var e=await this.onInit(),e=(e&&this.trash.use(e),await this.getRowCount()),t=this.extraSqlColumns.join(\",\");let r;r=P.CROP_INCOMPLETE_SLICE_FLAG.get()?await this.engine.query(`\n          select\n            depth,\n            ts as tsQ,\n            ts,\n            1 as count,\n            -1 as durQ,\n            -1 as dur,\n            id\n            ${t?\",\"+t:\"\"}\n          from (${this.getSqlSource()})\n          where dur = -1;\n        `):await this.engine.query(`\n        select\n          depth,\n          max(ts) as tsQ,\n          ts,\n          1 as count,\n          -1 as durQ,\n          -1 as dur,\n          id\n          ${t?\",\"+t:\"\"}\n        from (${this.getSqlSource()})\n        group by 1\n        having dur = -1\n      `);var n=new Array(r.numRows()),a=r.iter(this.rowSpec);for(let e=0;a.valid();a.next(),++e)n[e]=this.rowToSliceInternal(a);this.onUpdatedSlices(n),this.incomplete=n,await this.engine.query(`\n      create virtual table ${this.getTableName()}\n      using __intrinsic_slice_mipmap((\n        select id, ts, dur, ((layer * ${e??1}) + depth) as depth\n        from (${this.getSqlSource()})\n        where dur != -1\n      ));\n    `),this.trash.defer(async()=>{await this.engine.tryQuery(\"drop table \"+this.getTableName()),this.oldQuery=void 0,this.slicesKey=u.CacheKey.zero()})}async getRowCount(){return(await this.engine.query(`\n      SELECT\n        IFNULL(depth, 0) + 1 AS rowCount\n      FROM (${this.getSqlSource()})\n      ORDER BY depth DESC\n      LIMIT 1\n    `)).maybeFirstRow({rowCount:c.NUM})?.rowCount}async onUpdate({visibleWindow:e,size:t}){var r=this.getSqlSource(),r=(r!==this.oldQuery&&(await this.initialize(),this.oldQuery=r),Math.max(1,t.width)),t=e.toTimeSpan(),e=u.CacheKey.create(t.start,t.end,r);await this.maybeRequestData(e)}render({ctx:e,size:t,visibleWindow:r,timescale:n}){let a=this.charWidth;a<0&&(e.font=this.getTitleFont(),a=this.charWidth=e.measureText(\"dbpqaouk\").width/8);var r=this.getVisibleSlicesInternal(r.start.toTime(\"floor\"),r.end.toTime(\"ceil\")),i=this.trace.selection.selection,o=\"track_event\"===i.kind&&i.trackUri===this.uri?i.eventId:void 0;void 0===o&&(this.selectedSlice=void 0);let s;var l=this.sliceLayout.sliceHeight,c=this.sliceLayout.padding,u=this.sliceLayout.rowGap,d=t.width;for(const k of r){if(k.x=n.timeToPx(k.startNs),k.w=n.durationToPx(k.durNs),k.flags&P.SLICE_FLAGS_INSTANT)k.x-=this.instantWidthPx/2,k.w=this.instantWidthPx;else if(k.flags&P.SLICE_FLAGS_INCOMPLETE){let e;P.CROP_INCOMPLETE_SLICE_FLAG.get()?(e=0<k.x?Math.min(d,20):Math.max(0,20+k.x),k.x=Math.max(k.x,0)):(k.x=Math.max(k.x,0),e=d-k.x),k.w=e}else{var p=Math.min(k.x+k.w,d);k.x=Math.max(k.x,0),k.w=p-k.x}o===k.id&&(s=k)}var f,h,m,g,_,y,T,v,b,E,S,i=r.slice();this.forceTimestampRenderOrder||i.sort((e,t)=>(0,x.colorCompare)(e.colorScheme.base,t.colorScheme.base));let A=void 0;for(const I of r){var O,C=I.isHighlighted?I.colorScheme.variant:I.colorScheme.base,w=C.cssString,w=(w!==A&&(A=w,e.fillStyle=w),c+I.depth*(l+u));I.flags&P.SLICE_FLAGS_INSTANT?this.drawChevron(e,I.x,w,l):I.flags&P.SLICE_FLAGS_INCOMPLETE?(O=P.CROP_INCOMPLETE_SLICE_FLAG.get()?I.w:Math.max(I.w-2,2),(0,D.drawIncompleteSlice)(e,I.x,w,O,l,C,!P.CROP_INCOMPLETE_SLICE_FLAG.get())):(O=Math.max(I.w,P.FADE_THIN_SLICES_FLAG.get()?.1:B),e.fillRect(I.x,w,O,l))}e.fillStyle=\"#FFFFFF50\";for(const R of i)R.flags&(P.SLICE_FLAGS_INCOMPLETE|P.SLICE_FLAGS_INSTANT)||(f=(0,L.clamp)(R.fillRatio,0,1),(0,L.floatEqual)(f,1))||(f=(m=Math.max(R.w,B))*(1-f))<1||(h=c+R.depth*(l+u),m=R.x+(m-f),e.fillRect(m,h,f,l));e.textAlign=\"center\",e.font=this.getTitleFont(),e.textBaseline=\"middle\";for(const N of r)N.flags&P.SLICE_FLAGS_INSTANT||!N.title||N.w<5||(g=N.isHighlighted?N.colorScheme.textVariant:N.colorScheme.textBase,e.fillStyle=g.cssString,g=(0,F.cropText)(N.title,a,N.w),_=N.x+N.w/2,T=c+N.depth*(l+u),y=N.subTitle?3:2,T=Math.floor(T+l/y)+.5,e.fillText(g,_,T));e.fillStyle=\"rgba(255, 255, 255, 0.6)\",e.font=this.getSubtitleFont();for(const M of r)M.w<5||!M.subTitle||M.flags&P.SLICE_FLAGS_INSTANT||(v=M.x+M.w/2,b=(0,F.cropText)(M.subTitle,a,M.w),E=c+M.depth*(l+u),E=Math.ceil(E+2*l/3)+1.5,e.fillText(b,v,E));void 0!==s&&(r=(i=this.selectedSlice=s).colorScheme,S=c+i.depth*(l+u),e.strokeStyle=r.base.setHSL({s:100,l:10}).cssString,e.beginPath(),e.lineWidth=3,e.strokeRect(i.x,S-1.5,i.w,l+3),e.closePath()),(0,U.checkerboardExcept)(e,this.getHeight(),0,t.width,n.timeToPx(this.slicesKey.start),n.timeToPx(this.slicesKey.end)),this.drawSchedLatencyArrow(e,this.selectedSlice)}async onDestroy(){await this.trash.asyncDispose()}renderTooltip(){var e=this.hoveredSlice;if(e)return this.renderTooltipForSlice(e)}async maybeRequestData(e){if(!e.isCoveredBy(this.slicesKey)){var r=e.normalize();if(!e.isCoveredBy(r))throw new Error(`Normalization error ${r.toString()} `+e.toString());var n=new Array,e=r.bucketSize,a=this.extraSqlColumns.join(\",\"),i=(await this.engine.query(`\n      SELECT\n        (z.ts / ${e}) * ${e} as tsQ,\n        ((z.dur + ${e-1n}) / ${e}) * ${e} as durQ,\n        z.count as count,\n        s.ts as ts,\n        s.dur as dur,\n        s.id,\n        s.depth\n        ${a?\",\"+a:\"\"}\n      FROM ${this.getTableName()}(\n        ${r.start},\n        ${r.end},\n        ${e}\n      ) z\n      CROSS JOIN (${this.getSqlSource()}) s using (id)\n    `)).iter(this.rowSpec);let t=this.maxDataDepth;for(let e=0;i.valid();i.next(),++e)-1n!==i.dur&&(t=Math.max(t,i.depth),n.push(this.rowToSliceInternal(i)));for(const o of this.incomplete)t=Math.max(t,o.depth);this.maxDataDepth=t,this.slicesKey=r,this.onUpdatedSlices(n),this.slices=n,s.raf.scheduleCanvasRedraw()}}rowToSliceInternal(e){e=this.rowToSlice(e);return this.selectedSlice?.id===e.id&&(this.selectedSlice=void 0),{...e,x:-1,w:-1}}rowToSliceBase(e){let t=0;return-1n===e.dur?t|=P.SLICE_FLAGS_INCOMPLETE:0n===e.dur&&(t|=P.SLICE_FLAGS_INSTANT),{id:e.id,startNs:i.Time.fromRaw(e.tsQ),endNs:i.Time.fromRaw(e.tsQ+e.durQ),durNs:e.durQ,ts:i.Time.fromRaw(e.ts),count:e.count,dur:e.dur,flags:t,depth:e.depth,title:\"\",subTitle:\"\",fillRatio:1,colorScheme:d,isHighlighted:!1}}findSlice({x:e,y:t,timescale:r}){var n=this.computedTrackHeight,a=this.sliceLayout.sliceHeight,i=this.sliceLayout.padding,o=this.sliceLayout.rowGap;if(0!==a){var s=Math.floor((t-i)/(a+o));if(i<=t&&t<=n-i)for(const u of this.slices)if(u.depth===s&&u.x<=e&&e<=u.x+u.w)return u;for(const d of this.incomplete){var l=P.CROP_INCOMPLETE_SLICE_FLAG.get()?r.timeToPx(d.startNs):d.x,c=!P.CROP_INCOMPLETE_SLICE_FLAG.get()||e<=l+20;if(d.depth===s&&l<=e&&c)return d}}}onMouseMove(e){this.updateHoveredSlice(this.findSlice(e)),this.trace.raf.scheduleFullRedraw()}onMouseOut(){this.updateHoveredSlice(void 0)}updateHoveredSlice(e){var t=this.hoveredSlice;(this.hoveredSlice=e)!==t&&(void 0===this.hoveredSlice?(this.trace.timeline.highlightedSliceId=void 0,this.onSliceOut({slice:(0,a.assertExists)(t)})):(e={slice:this.hoveredSlice},this.trace.timeline.highlightedSliceId=this.hoveredSlice.id,this.onSliceOver(e)))}onMouseClick(e){e=this.findSlice(e);return void 0!==e&&(this.onSliceClick({slice:e}),!0)}getVisibleSlicesInternal(e,t){e=i.Time.sub(e,this.slicesKey.bucketSize),t=i.Time.add(t,this.slicesKey.bucketSize);let r=n(this.slices,e,t);return r=r.concat(this.incomplete),this.selectedSlice&&!this.slices.includes(this.selectedSlice)&&r.push(this.selectedSlice),r}updateSliceAndTrackHeight(){var e=Math.max(this.maxDataDepth,this.depthGuess)+1,{padding:t=2,sliceHeight:r=12,rowGap:n=0}=this.sliceLayout;this.computedTrackHeight=2*t+e*(r+n)}drawChevron(e,t,r,n){var a=t+5;e.beginPath(),e.moveTo(a,r),e.lineTo(t+10,r+n),e.lineTo(a,r+n-5),e.lineTo(t,r+n),e.lineTo(a,r),e.closePath(),e.fill()}highlightHoveredAndSameTitle(e){for(const r of e){var t=this.trace.timeline.highlightedSliceId===r.id||this.hoveredSlice&&this.hoveredSlice.title===r.title;r.isHighlighted=!!t}}getHeight(){return this.updateSliceAndTrackHeight(),this.computedTrackHeight}getSliceVerticalBounds(e){this.updateSliceAndTrackHeight();var t=this.sliceLayout.rowGap+this.sliceLayout.sliceHeight,e=this.sliceLayout.padding+e*t;return{top:e,bottom:e+this.sliceLayout.sliceHeight}}get engine(){return this.trace.engine}}}}return Uo}(),u=Me(),d=Hi();i.NUM,i.LONG;class e extends c.BaseSliceTrack{attrs;rootTableName;constructor(e){var t=o(e);super(e.trace,e.uri,{...c.BASE_ROW,...t.schema},e.sliceLayout,e.initialMaxDepth,e.instantStyle?.width,e.forceTsRenderOrder??!1),this.attrs=e,this.rootTableName=e.rootTableName}rowToSlice(e){var t=this.rowToSliceBase(e),r=this.getTitle(e),n=this.getColor(e,r),a=o(this.attrs);const i=Object.keys(a.schema);a=Object.fromEntries(Object.entries(e).filter(([e])=>i.includes(e)));return{...t,title:r,colorScheme:n,fillRatio:this.attrs.fillRatio?.(e)??t.fillRatio,row:a}}generateRenderQuery(e){var t=e.implements({layer:i.NUM}),r=e.implements({depth:i.NUM}),n=e.implements({dur:i.LONG}),t=(0,d.removeFalsyValues)([!t&&\"0 as layer\",!r&&n&&`\n          internal_layout(ts, dur) OVER (\n            ORDER BY ts ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW\n          ) AS depth\n        `,!r&&!n&&\"0 as depth\",!n&&\"0 as dur\"]);return 0===t.length?e.query():`select ${t.join(\", \")}, * from (${e.query()})`}getTitle(e){return this.attrs.sliceName?this.attrs.sliceName(e):\"name\"in e&&\"string\"==typeof e.name?e.name:void 0}getColor(e,t){return this.attrs.colorizer?this.attrs.colorizer(e):t?(0,r.getColorForSlice)(t):(0,r.getColorForSlice)(\"\"+e.id)}getSqlSource(){var e=\"function\"==typeof this.attrs.dataset?this.attrs.dataset():this.attrs.dataset;return this.generateRenderQuery(e)}getDataset(){return o(this.attrs)}detailsPanel(e){if(this.attrs.detailsPanel)return this.attrs.detailsPanel(e)}async getSelectionDetails(e){var t=this.attrs[\"trace\"],r=o(this.attrs),t=await t.engine.query(`\n      SELECT *\n      FROM (${r.query()})\n      WHERE id = ${e}\n    `),n=t.iter(r.schema);if(n.valid()){var a={};for(const i of t.columns())a[i]=n.get(i);return{...a,ts:s.Time.fromRaw(n.ts)}}}onUpdatedSlices(e){for(const t of e)t.isHighlighted=t===this.hoveredSlice}getTrackShellButtons(){return this.attrs.shellButtons?.()}renderTooltipForSlice(e){return this.attrs.tooltip?.(e)??t(this.trace,e)}drawChevron(e,t,r,n){this.attrs.instantStyle?.render?this.attrs.instantStyle.render(e,{x:t,y:r,height:n,width:this.attrs.instantStyle.width}):super.drawChevron(e,t,r,n)}}function o(e){e=e.dataset;return\"function\"==typeof e?e():e}function t(e,t,r={}){var e=function(e,t){var{dur:t,flags:r}=t;return r&c.SLICE_FLAGS_INCOMPLETE?\"[Incomplete]\":r&c.SLICE_FLAGS_INSTANT?void 0:(0,l.formatDuration)(e,t)}(e,t),{title:r=t.title,extras:n}=r;return[(0,a.default)(\"\",(0,u.exists)(e)&&(0,a.default)(\"b\",e),\" \",r),n,1<t.count&&(0,a.default)(\"div\",`and ${t.count-1} other events`)]}Xi.DatasetSliceTrack=e}return Xi}var Ho,Go={},Vo={},qo={};function Ae(){if(!Ho){Ho=1,Object.defineProperty(qo,\"__esModule\",{value:!0}),qo.Icons=void 0;qo.Icons=class{static ExternalLink=\"open_in_new\";static UpdateSelection=\"call_made\";static ChangeViewport=\"query_stats\";static ContextMenu=\"arrow_drop_down\";static Menu=\"menu\";static Copy=\"content_copy\";static Delete=\"delete\";static SortedAsc=\"arrow_upward\";static SortedDesc=\"arrow_downward\";static GoBack=\"chevron_left\";static GoForward=\"chevron_right\";static Add=\"add\";static Close=\"close\";static Hide=\"visibility_off\";static Filter=\"filter_list\";static BlankCheckbox=\"check_box_outline_blank\";static Checkbox=\"check_box\";static IndeterminateCheckbox=\"indeterminate_check_box\";static ExpandDown=\"expand_more\";static ExpandUp=\"expand_less\";static Pin=\"push_pin\";static LibraryAddCheck=\"library_add_check\";static SelectAll=\"select_all\";static Deselect=\"deselect\";static Star=\"star\";static ChangeTab=\"tab\";static Crashed=\"warning\";static Chart=\"bar_chart\";static Change=\"change_circle\";static GoTo=\"arrow_forward\";static ContextMenuAlt=\"more_vert\";static Info=\"info\";static Warning=\"warning\";static Help=\"help\";static Download=\"download\";static Check=\"check\";static Search=\"search\";static Save=\"save\";static NextPage=\"chevron_right\";static PrevPage=\"chevron_left\";static LastPage=\"last_page\";static FirstPage=\"first_page\";static SortAsc=\"arrow_upward\";static SortDesc=\"arrow_downward\";static ResetState=\"restart_alt\";static Remove=\"clear\";static Play=\"play_arrow\";static Edit=\"edit\"}}return qo}var zo,Wo={};function $o(){if(!zo){zo=1,Object.defineProperty(Wo,\"__esModule\",{value:!0}),Wo.convertArgsToTree=t,Wo.convertArgsToObject=function(e){e=t(e);return r(e)};const s=hn(),n=Me();function t(e){var t=[];for(const n of e){var r=n[\"key\"];!function e(t,r,n,a){const i=r.shift();let o=t.find(e=>e.key===i);o||(o={key:i},t.push(o));0<r.length?(void 0===o.children&&(o.children=[]),e(o.children,r,n,a)):o.value=a}(t,function(e){var t=[];var r;var n=/([^\\.\\[\\]]+)|\\[(\\d+)\\]/g;for(;null!==(r=n.exec(e));)t.push(r[2]?parseInt(r[2]):r[1]);return t}(r),r,n)}return t}function r(e){if(e.every(({key:e})=>(0,s.isString)(e))){var t={};for(const a of e){if(a.key in t)throw new Error(\"Duplicate key \"+a.key);t[a.key]=o(a)}return t}if(e.every(({key:e})=>\"number\"==typeof e)){var r=[];for(const i of e){var n=i.key;if(n in r)throw new Error(\"Duplicate array index \"+n);r[n]=o(i)}return r}throw new Error(\"Invalid mix of node key types\")}function o({value:e,children:t}){if((0,n.exists)(e)&&!(0,n.exists)(t))return e.value;if(!(0,n.exists)(e)&&(0,n.exists)(t))return r(t);throw new Error(\"Invalid node type\")}}return Wo}var Ko,Yo={};function Oe(){if(!Ko){Ko=1,Object.defineProperty(Yo,\"__esModule\",{value:!0}),Yo.Anchor=void 0,Yo.linkify=function(e){e=e.split(/(https?:\\/\\/[^\\s]+)|(go\\/[^\\s]+)/g);return(0,a.default)(\"span\",e.map(e=>/^(https?:\\/\\/[^\\s]+)$/.test(e)?(0,a.default)(t,{href:e,target:\"_blank\"},e.split(\"://\")[1]):/^(go\\/[^\\s]+)$/.test(e)?(0,a.default)(t,{href:\"http://\"+e,target:\"_blank\"},e):e))};const a=Jr.__importDefault(xe()),i=Ee();class t{view({attrs:e,children:t}){const{icon:r,...n}=e;return(0,a.default)(\"a.pf-anchor\",n,t,r&&(0,a.default)(i.Icon,{icon:r}))}}Yo.Anchor=t}return Yo}var Jo,Qo,Zo={};function Ve(){if(!Jo){Jo=1,Object.defineProperty(Zo,\"__esModule\",{value:!0}),Zo.LazyTreeNode=Zo.TreeNode=Zo.Tree=void 0,Zo.dictToTreeNodes=t,Zo.dictToTree=function(e){return(0,s.default)(r,t(e))};const s=Jr.__importDefault(xe()),i=be(),o=wi();class r{view({attrs:e,children:t}){var{className:e=\"\"}=e,e=(0,i.classNames)(e);return(0,s.default)(\".pf-tree\",{class:e},t)}}Zo.Tree=r;class l{collapsed;constructor({attrs:e}){this.collapsed=e.startsCollapsed??!1}view(e){const{children:t,attrs:r,attrs:{left:n,onCollapseChanged:a=()=>{}}}=e;return[(0,s.default)(\".pf-tree-node\",{class:(0,i.classNames)(this.getClassNameForNode(e))},(0,s.default)(\".pf-tree-left\",(0,s.default)(\"span.pf-tree-gutter\",{onclick:()=>{this.collapsed=!this.isCollapsed(e),a(this.collapsed,r)}}),n),this.renderRight(e)),(0,o.hasChildren)(e)&&(0,s.default)(\".pf-tree-children\",t)]}getClassNameForNode(e){var{loading:t=!1,showCaret:r=!1}=e.attrs;return t?\"pf-loading\":(0,o.hasChildren)(e)||r?this.isCollapsed(e)?\"pf-collapsed\":\"pf-expanded\":void 0}renderRight(e){var{right:t,summary:r}=e[\"attrs\"];return(0,o.hasChildren)(e)&&this.isCollapsed(e)?(0,s.default)(\".pf-tree-right\",r??t):(0,s.default)(\".pf-tree-right\",t)}isCollapsed({attrs:e}){var{collapsed:e=this.collapsed}=e;return e}}Zo.TreeNode=l;function t(e){var t=[];for(const r of Object.keys(e))null!=e[r]&&t.push((0,s.default)(l,{left:r,right:e[r]}));return t}Zo.LazyTreeNode=class{collapsed=!0;loading=!1;renderChildren;view({attrs:e}){const{left:t,right:r,icon:n,summary:a,fetchData:i,unloadOnCollapse:o=!1}=e;return(0,s.default)(l,{left:t,right:r,icon:n,summary:a,showCaret:!0,loading:this.loading,collapsed:this.collapsed,onCollapseChanged:e=>{e?o&&(this.renderChildren=void 0):this.renderChildren?this.collapsed=!1:(this.loading=!0,i().then(e=>{this.loading=!1,this.collapsed=!1,this.renderChildren=e})),this.collapsed=e}},this.renderChildren&&this.renderChildren())}}}return Zo}function Xo(){if(!Qo){Qo=1,Object.defineProperty(Vo,\"__esModule\",{value:!0}),Vo.renderArguments=function(e,t,r){if(0<t.length)return t=(0,n.convertArgsToTree)(t),function o(s,e,l){return e.map(e=>{const{key:t,value:r,children:n}=e;if(n&&1===n.length){const a=n[0],i={...a,key:p(t,a.key)};return o(s,[i],l)}return(0,f.default)(m.TreeNode,{left:c(p(t),r,l),right:(0,h.exists)(r)&&u(r),summary:n&&d(n)},n&&o(s,n,l))})}(e,t,r)},Vo.hasArgs=function(e){return(0,h.exists)(e)&&0<e.length};const f=Jr.__importDefault(xe()),r=hn(),a=Ae(),h=Me(),n=$o(),i=Oe(),o=Se(),m=Ve();function c(e,t,r){if(void 0===t)return e;{const n=t[\"key\"];return(0,f.default)(o.PopupMenu,{trigger:(0,f.default)(i.Anchor,{icon:a.Icons.ContextMenu},e)},(0,f.default)(o.MenuItem,{label:\"Copy full key\",icon:\"content_copy\",onclick:()=>navigator.clipboard.writeText(n)}),r?.(t))}}function u({value:e}){return t=e,(0,r.isString)(t)&&(t.startsWith(\"http://\")||t.startsWith(\"https://\"))?(t=e,(0,f.default)(i.Anchor,{href:t,target:\"_blank\",icon:\"open_in_new\"},t)):\"\"+e;var t}function d(e){var t=e.slice(0,2).map(({key:e})=>e).join(\", \"),e=e.length-2;return 0<e?`{${t}, ... (${e} more items)}`:`{${t}}`}function p(...e){return e.map((e,t)=>\"number\"==typeof e?`[${e}]`:(0===t?\"\":\".\")+e).join(\"\")}}return Vo}var es,ts={},rs={};function ns(){return es||(es=1,Object.defineProperty(rs,\"__esModule\",{value:!0}),rs.asUpid=function(e){return e},rs.asUtid=function(e){return e},rs.asSliceSqlId=function(e){return e},rs.asSchedSqlId=function(e){return e},rs.asThreadStateSqlId=function(e){return e},rs.asArgSetId=function(e){return e},rs.asArgId=function(e){return e}),rs}var as,is={};function os(){if(!as){as=1,Object.defineProperty(is,\"__esModule\",{value:!0}),is.getArgs=async function(e,t){var e=await e.query(`\n    SELECT\n      id,\n      flat_key as flatKey,\n      key,\n      int_value as intValue,\n      string_value as stringValue,\n      real_value as realValue,\n      value_type as valueType,\n      display_value as displayValue\n    FROM args\n    WHERE arg_set_id = ${t}\n    ORDER BY id`),r=e.iter({id:i.NUM,flatKey:i.STR,key:i.STR,intValue:i.LONG_NULL,stringValue:i.STR_NULL,realValue:i.NUM_NULL,valueType:i.STR,displayValue:i.STR_NULL}),n=[];for(;r.valid();r.next()){var a=function(e,t){switch(e){case\"int\":case\"uint\":return t.intValue;case\"pointer\":return null===t.intValue?null:\"0x\"+t.intValue.toString(16);case\"string\":return t.stringValue;case\"bool\":return null===t.intValue?null:0n!==t.intValue;case\"real\":return t.realValue;case\"null\":return null;default:throw new Error(\"Unable to process arg of type \"+e)}}(r.valueType,r);n.push({id:(0,o.asArgId)(r.id),flatKey:r.flatKey,key:r.key,value:a,displayValue:r.displayValue??\"NULL\"})}return n};const i=Ue(),o=ns()}return is}var ss,ls,cs,us={},ds={};function ps(){if(!ss){ss=1,Object.defineProperty(ds,\"__esModule\",{value:!0}),ds.getProcessInfo=async function(e,t){e=await e.query(`\n    include perfetto module android.process_metadata;\n    select\n      p.upid,\n      p.pid,\n      p.name,\n      p.uid,\n      m.package_name as packageName,\n      m.version_code as versionCode\n    from process p\n    left join android_process_metadata m using (upid)\n    where upid = ${t};\n  `),e=e.firstRow({upid:r.NUM,pid:r.NUM,name:r.STR_NULL,uid:r.NUM_NULL,packageName:r.STR_NULL,versionCode:r.NUM_NULL});return{upid:t,pid:e.pid,name:e.name??void 0,uid:(0,n.fromNumNull)(e.uid),packageName:e.packageName??void 0,versionCode:(0,n.fromNumNull)(e.versionCode)}},ds.getProcessName=function(e){return function(e,t){return void 0!==e?void 0===t?e:e+` [${t}]`:void 0===t?void 0:\"\"+t}(e?.name,e?.pid)};const r=Ue(),n=De()}return ds}function fs(){if(!ls){ls=1,Object.defineProperty(us,\"__esModule\",{value:!0}),us.getThreadInfo=async function(e,t){var r=(await e.query(`\n        SELECT tid, name, upid\n        FROM thread\n        WHERE utid = ${t};\n    `)).iter({tid:a.NUM,name:a.STR_NULL,upid:a.NUM_NULL});if(!r.valid())return{utid:t};var n=(0,i.fromNumNull)(r.upid);return{utid:t,tid:r.tid,name:r.name??void 0,process:n?await(0,o.getProcessInfo)(e,n):void 0}},us.getThreadName=t,us.getFullThreadName=function(e){return void 0!==e?.process?t(e)+\" \"+(0,o.getProcessName)(e.process):t(e)};const a=Ue(),i=De(),o=ps();function t(e){return t=e?.name,e=e?.tid,void 0===t?void 0===e?void 0:\"\"+e:void 0===e?t:t+` [${e}]`;var t}}return us}function hs(){if(!cs){cs=1,Object.defineProperty(ts,\"__esModule\",{value:!0}),ts.getSliceFromConstraints=o,ts.getSlice=s,ts.getDescendantSliceTree=async function(e,t){const r=await s(e,t);if(void 0===r)return;var e=await o(e,{filters:[\"track_id=\"+r.trackId,\"depth >= \"+r.depth,\"ts >= \"+r.ts,0<=r.dur?`ts <= (${r.ts} + ${r.dur})`:void 0],orderBy:[\"ts\",\"depth\"]}),n=Object.fromEntries(e.map(e=>[e.id,{children:[],...e}]));for(const[i,r]of Object.entries(n)){var a;void 0!==r.parentId&&(a=n[r.parentId],(r.parent=a).children.push(r))}return n[t]};const l=Fe(),c=Me(),u=Ue(),d=De(),p=ns(),f=os(),h=fs(),m=ps();async function o(e,t){for(var r=(await e.query(`\n    SELECT\n      id,\n      name,\n      ts,\n      dur,\n      track_id as trackId,\n      depth,\n      parent_id as parentId,\n      thread_dur as threadDur,\n      thread_ts as threadTs,\n      category,\n      arg_set_id as argSetId,\n      ABS_TIME_STR(ts) as absTime\n    FROM slice\n    `+(0,d.constraintsToQuerySuffix)(t))).iter({id:u.NUM,name:u.STR,ts:u.LONG,dur:u.LONG,trackId:u.NUM,depth:u.NUM,parentId:u.NUM_NULL,threadDur:u.LONG_NULL,threadTs:u.LONG_NULL,category:u.STR_NULL,argSetId:u.NUM_NULL,absTime:u.STR_NULL}),n=[];r.valid();r.next()){var{utid:a,upid:i}=await async function(e,t){var{upid:e,utid:t}=(await e.query(`\n      SELECT\n        extract_arg(dimension_arg_set_id, 'upid') as upid,\n        extract_arg(dimension_arg_set_id, 'utid') as utid\n      FROM track\n      WHERE id = ${t}\n    `)).firstRow({upid:u.NUM_NULL,utid:u.NUM_NULL});return{upid:(0,p.asUpid)(e??void 0),utid:(0,p.asUtid)(t??void 0)}}(e,r.trackId),a=void 0===a?void 0:await(0,h.getThreadInfo)(e,a),i=void 0!==a?a.process:void 0===i?void 0:await(0,m.getProcessInfo)(e,i);n.push({id:(0,p.asSliceSqlId)(r.id),name:r.name,ts:l.Time.fromRaw(r.ts),dur:r.dur,trackId:r.trackId,depth:r.depth,parentId:(0,p.asSliceSqlId)(r.parentId??void 0),thread:a,process:i,threadDur:r.threadDur??void 0,threadTs:(0,c.exists)(r.threadTs)?l.Time.fromRaw(r.threadTs):void 0,category:r.category??void 0,args:(0,c.exists)(r.argSetId)?await(0,f.getArgs)(e,(0,p.asArgSetId)(r.argSetId)):void 0,absTime:r.absTime??void 0})}return n}async function s(e,t){e=await o(e,{filters:[\"id=\"+t]});if(1<e.length)throw new Error(\"slice table has more than one row with id \"+t);if(0!==e.length)return e[0]}}return ts}var ms,gs={};function _s(){if(!ms){ms=1,Object.defineProperty(gs,\"__esModule\",{value:!0}),gs.translateState=i,gs.getThreadStateFromConstraints=r,gs.getThreadState=async function(e,t){e=await r(e,{filters:[\"id=\"+t]});if(1<e.length)throw new Error(\"thread_state table has more than one row with id \"+t);if(0!==e.length)return e[0]};const o=Fe(),s=Ue(),l=De(),c=ns(),u=fs(),n={R:\"Runnable\",S:\"Sleeping\",D:\"Uninterruptible Sleep\",T:\"Stopped\",t:\"Traced\",X:\"Exit (Dead)\",Z:\"Exit (Zombie)\",x:\"Task Dead\",I:\"Idle\",K:\"Wake Kill\",W:\"Waking\",P:\"Parked\",N:\"No Load\",\"+\":\"(Preempted)\"};function i(t,e=void 0){if(void 0===t)return\"\";switch(t){case\"Created\":case\"Running\":case\"Initialized\":case\"Deferred Ready\":case\"Transition\":case\"Stand By\":case\"Waiting\":return t}if(null===t)return\"Unknown\";let r=n[t[0]];!0===e?r+=\" (IO)\":!1===e&&(r+=\" (non-IO)\");for(let e=1;e<t.length;e++)r=(r+=\"+\"===t[e]?\" \":\" + \")+n[t[e]];return void 0===r?t:r}async function r(e,t){for(var r=(await e.query(`\n    WITH raw AS (\n      SELECT\n      ts.id,\n      sched.id AS sched_id,\n      ts.ts,\n      ts.dur,\n      ts.cpu,\n      ts.state,\n      ts.blocked_function,\n      ts.io_wait,\n      ts.utid,\n      ts.waker_utid,\n      ts.waker_id,\n      ts.irq_context,\n      sched.priority\n    FROM thread_state ts\n    LEFT JOIN sched USING (utid, ts)\n    )\n    SELECT * FROM raw\n\n    `+(0,l.constraintsToQuerySuffix)(t))).iter({id:s.NUM,sched_id:s.NUM_NULL,ts:s.LONG,dur:s.LONG,cpu:s.NUM_NULL,state:s.STR_NULL,blocked_function:s.STR_NULL,io_wait:s.NUM_NULL,utid:s.NUM,waker_utid:s.NUM_NULL,waker_id:s.NUM_NULL,irq_context:s.NUM_NULL,priority:s.NUM_NULL}),n=[];r.valid();r.next()){var a=null===r.io_wait?void 0:0<r.io_wait;n.push({id:r.id,schedSqlId:(0,l.fromNumNull)(r.sched_id),ts:o.Time.fromRaw(r.ts),dur:r.dur,cpu:(0,l.fromNumNull)(r.cpu),state:i(r.state??void 0,a),blockedFunction:r.blocked_function??void 0,thread:await(0,u.getThreadInfo)(e,(0,c.asUtid)(r.utid)),wakerUtid:(0,c.asUtid)(r.waker_utid??void 0),wakerId:(0,c.asThreadStateSqlId)(r.waker_id??void 0),wakerInterruptCtx:(0,l.fromNumNull)(r.irq_context),priority:(0,l.fromNumNull)(r.priority)})}return n}}return gs}var ys,Ts={},vs={};function bs(){return ys||(ys=1,Object.defineProperty(vs,\"__esModule\",{value:!0}),vs.copyToClipboard=async function(t){try{await navigator.clipboard.writeText(t)}catch(e){console.error(`Failed to copy \"${t}\" to clipboard: `+e)}}),vs}var Es,Ss={};var As,Os,Cs={};function ws(){if(!As){As=1,Object.defineProperty(Cs,\"__esModule\",{value:!0}),Cs.TimestampFormatMenuItem=void 0;const a=Jr.__importDefault(xe()),i=Se(),o=Po(),s=Fe();Cs.TimestampFormatMenuItem=class{view({attrs:e}){const r=e.trace.timeline;function t(e,t){return(0,a.default)(i.MenuItem,{label:t,active:e===r.timestampFormat,onclick:()=>{r.timestampFormat=e}})}e=(0,s.formatTimezone)(e.trace.traceInfo.tzOffMin);const n=o.TimestampFormat;return(0,a.default)(i.MenuItem,{label:\"Time format\"},t(n.Timecode,\"Timecode\"),t(n.UTC,\"Realtime (UTC)\"),t(n.TraceTz,`Realtime (Trace TZ - ${e})`),t(n.Seconds,\"Seconds\"),t(n.Milliseconds,\"Milliseconds\"),t(n.Microseconds,\"Microseconds\"),t(n.TraceNs,\"Raw\"),t(n.TraceNsLocale,\"Raw (with locale-specific formatting)\"),(0,a.default)(i.MenuItem,{label:\"Custom\",active:n.CustomTimezone===r.timestampFormat},Object.keys(s.timezoneOffsetMap).map(e=>{const t=r.timezoneOverride;return(0,a.default)(i.MenuItem,{label:e,active:e===t.get(),onclick:()=>{r.timestampFormat=n.CustomTimezone,t.set(e)}})})))}}}return Cs}function ks(){if(!Os){Os=1,Object.defineProperty(Ts,\"__esModule\",{value:!0}),Ts.DurationWidget=void 0;const a=Jr.__importDefault(xe()),i=bs(),o=Ae(),s=Oe(),l=Se(),c=Do(),u=function(){if(!Es){Es=1,Object.defineProperty(Ss,\"__esModule\",{value:!0}),Ss.DurationPrecisionMenuItem=void 0;const n=Jr.__importDefault(xe()),a=Se(),t=Po();Ss.DurationPrecisionMenuItem=class{view({attrs:r}){function e(e,t){return(0,n.default)(a.MenuItem,{label:t,active:e===r.trace.timeline.durationPrecision,onclick:()=>{r.trace.timeline.durationPrecision=e}})}return(0,n.default)(a.MenuItem,{label:\"Duration precision\",disabled:!function(){switch(r.trace.timeline.timestampFormat){case t.TimestampFormat.Timecode:case t.TimestampFormat.UTC:case t.TimestampFormat.TraceTz:return 1;default:return}}(),title:\"Not configurable with current time format\"},e(t.DurationPrecision.Full,\"Full\"),e(t.DurationPrecision.HumanReadable,\"Human readable\"))}}}return Ss}(),d=ws();Ts.DurationWidget=class{view({attrs:e}){const{trace:t,dur:r}=e;var n=-1n===r?(0,a.default)(\"i\",\"(Did not end)\"):(0,c.formatDuration)(t,r);return(0,a.default)(l.PopupMenu,{trigger:(0,a.default)(s.Anchor,n)},(0,a.default)(l.MenuItem,{icon:o.Icons.Copy,label:\"Copy raw value\",onclick:()=>{(0,i.copyToClipboard)(r.toString())}}),(0,a.default)(d.TimestampFormatMenuItem,{trace:t}),(0,a.default)(u.DurationPrecisionMenuItem,{trace:t}),e.extraMenuItems?[(0,a.default)(l.MenuDivider),e.extraMenuItems]:null)}}}return Ts}var Is,Rs={};function Ns(){if(!Is){Is=1,Object.defineProperty(Rs,\"__esModule\",{value:!0}),Rs.Timestamp=void 0;const a=Jr.__importDefault(xe()),i=bs(),o=Ae(),n=Fe(),s=Oe(),l=Se(),c=ws(),u=Do(),d=Po();Rs.Timestamp=class{view({attrs:e}){const{trace:t,ts:r}=e,n=t.timeline;return(0,a.default)(l.PopupMenu,{trigger:(0,a.default)(s.Anchor,{onmouseover:()=>n.hoverCursorTimestamp=r,onmouseout:()=>n.hoverCursorTimestamp=void 0},e.display??this.formatTimestamp(t,n.toDomainTime(r)))},(0,a.default)(l.MenuItem,{icon:o.Icons.Copy,label:\"Copy raw value\",onclick:()=>{(0,i.copyToClipboard)(r.toString())}}),(0,a.default)(c.TimestampFormatMenuItem,{trace:t}),e.extraMenuItems?[(0,a.default)(l.MenuDivider),e.extraMenuItems]:null)}formatTimestamp(e,t){var r=e.timeline.timestampFormat;switch(r){case d.TimestampFormat.UTC:case d.TimestampFormat.TraceTz:case d.TimestampFormat.Timecode:case d.TimestampFormat.CustomTimezone:return(0,u.renderTimecode)(t);case d.TimestampFormat.TraceNs:return t.toString();case d.TimestampFormat.TraceNsLocale:return t.toLocaleString();case d.TimestampFormat.Seconds:return n.Time.formatSeconds(t);case d.TimestampFormat.Milliseconds:return n.Time.formatMilliseconds(t);case d.TimestampFormat.Microseconds:return n.Time.formatMicroseconds(t);default:throw new Error(\"Invalid timestamp \"+r)}}}}return Rs}var Ms,Ps={};function qe(){if(!Ms){Ms=1,Object.defineProperty(Ps,\"__esModule\",{value:!0}),Ps.DetailsShell=void 0;const o=Jr.__importDefault(xe()),s=be();Ps.DetailsShell=class{view({attrs:e,children:t}){var{title:e,description:r,buttons:n,fillParent:a=!0,className:i}=e;return(0,o.default)(\"section.pf-details-shell\",{class:(0,s.classNames)(a&&\"pf-fill-parent\",i)},(0,o.default)(\"header.pf-header-bar\",(0,o.default)(\"h1.pf-header-title\",e),(0,o.default)(\"span.pf-header-description\",r),(0,o.default)(\"nav.pf-header-buttons\",n)),(0,o.default)(\"article.pf-content\",t))}}}return Ps}var Ds,xs={};function Ls(){if(!Ds){Ds=1,Object.defineProperty(xs,\"__esModule\",{value:!0}),xs.GridLayoutColumn=xs.GridLayout=void 0;const t=Jr.__importDefault(xe());xs.GridLayout=class{view({children:e}){return(0,t.default)(\"div.pf-grid-layout\",e)}};xs.GridLayoutColumn=class{view({children:e}){return(0,t.default)(\"div.pf-grid-layout-column\",e)}}}return xs}var Fs,Us={};function Bs(){if(!Fs){Fs=1,Object.defineProperty(Us,\"__esModule\",{value:!0}),Us.Section=void 0;const a=Jr.__importDefault(xe());Us.Section=class{view({attrs:e,children:t}){const{title:r,...n}=e;return(0,a.default)(\"section.pf-section\",n,(0,a.default)(\"header\",(0,a.default)(\"h1\",r)),(0,a.default)(\"article\",t))}}}return Us}var js,Hs={};function Gs(){if(!js){js=1,Object.defineProperty(Hs,\"__esModule\",{value:!0}),Hs.ThreadStateRef=void 0,Hs.threadStateRef=function(e,t){return void 0===t.thread?null:(0,r.default)(a,{trace:e,id:t.id})};const r=Jr.__importDefault(xe()),t=Oe(),n=Ae();class a{view(e){return(0,r.default)(t.Anchor,{icon:n.Icons.UpdateSelection,onclick:()=>{e.attrs.trace.selection.selectSqlEvent(\"thread_state\",e.attrs.id,{switchToCurrentSelectionTab:e.attrs.switchToCurrentSelectionTab,scrollToSelection:!0})}},e.attrs.name??\"Thread State \"+e.attrs.id)}}Hs.ThreadStateRef=a}return Hs}var Vs,qs,zs={},Ws={};function $s(){return Vs||(Vs=1,Object.defineProperty(Ws,\"__esModule\",{value:!0}),Ws.sqlIdRegistry=void 0,Ws.createSqlIdRefRenderer=function(e,t){return{fetch:e,render:t}},Ws.sqlIdRegistry={}),Ws}function Ks(){if(!qs){qs=1,Object.defineProperty(zs,\"__esModule\",{value:!0}),zs.SliceRef=void 0,zs.sliceRef=n;const a=Jr.__importDefault(xe()),r=ns(),t=Oe(),i=Ae(),o=hs();var e=$s();class s{view(e){return(0,a.default)(t.Anchor,{icon:i.Icons.UpdateSelection,onclick:()=>{e.attrs.trace.selection.selectSqlEvent(\"slice\",e.attrs.id,{switchToCurrentSelectionTab:e.attrs.switchToCurrentSelectionTab,scrollToSelection:!0})}},e.attrs.name)}}function n(e,t,r){return(0,a.default)(s,{trace:e,id:t.id,name:r??t.name})}zs.SliceRef=s,e.sqlIdRegistry.slice=(0,e.createSqlIdRefRenderer)(async(e,t)=>({id:t,slice:await(0,o.getSlice)(e,(0,r.asSliceSqlId)(Number(t)))}),(e,{id:t,slice:r})=>({value:void 0!==r?n(e,r):\"Unknown slice \"+t}))}return zs}var Ys,Js={};function Qs(){if(!Ys){Ys=1,Object.defineProperty(Js,\"__esModule\",{value:!0}),Js.SqlRef=void 0;const a=Jr.__importDefault(xe()),i=bs(),o=Ae(),s=Oe(),l=Se();Js.SqlRef=class{view({attrs:e}){const{table:t,id:r,additionalMenuItems:n}=e;return void 0!==r?(0,a.default)(l.PopupMenu,{trigger:(0,a.default)(s.Anchor,{icon:o.Icons.ContextMenu},`${t}[${r}]`)},(0,a.default)(l.MenuItem,{label:\"Copy ID\",icon:\"content_copy\",onclick:()=>(0,i.copyToClipboard)(\"\"+r)}),(0,a.default)(l.MenuItem,{label:\"Copy SQL query\",icon:\"file_copy\",onclick:()=>(0,i.copyToClipboard)(`select * from ${t} where id=`+r)}),n):t+\"[Unknown]\"}}}return Js}var Zs,Xs={},el={};function tl(){return Zs||(Zs=1,Object.defineProperty(el,\"__esModule\",{value:!0}),el.extensions=void 0,el.configureExtensions=function(e){el.extensions=e}),el}var rl,nl,al,il={};function ol(){var r;return rl||(rl=1,r=il,Object.defineProperty(r,\"__esModule\",{value:!0}),r.sqlTableRegistry=void 0,r.getSqlTableDescription=function(e,t){return r.sqlTableRegistry[t]?.(e)},r.sqlTableRegistry={}),il}function sl(){if(!nl){nl=1,Object.defineProperty(Xs,\"__esModule\",{value:!0}),Xs.renderSliceArguments=function(e,t){return(0,a.renderArguments)(e,t,t=>[(0,r.default)(n.MenuItem,{label:\"Find slices with same arg value\",icon:\"search\",onclick:()=>{i.extensions.addLegacySqlTableTab(e,{table:(0,o.assertExists)((0,s.getSqlTableDescription)(e,\"slice\")),filters:[{op:e=>e[0]+\" = \"+(0,l.sqliteString)(t.displayValue),columns:[{column:\"display_value\",source:{table:\"args\",joinOn:{arg_set_id:\"arg_set_id\",key:(0,l.sqliteString)(t.flatKey)}}}]}]})}}),(0,r.default)(n.MenuItem,{label:\"Visualize argument values\",icon:\"query_stats\",onclick:()=>{i.extensions.addVisualizedArgTracks(e,t.flatKey)}})])};const r=Jr.__importDefault(xe()),n=Se(),a=Xo(),i=tl(),o=Pe(),s=ol(),l=j()}return Xs}function ll(){if(!al){al=1;{var n=Go;Object.defineProperty(n,\"__esModule\",{value:!0}),n.DebugSliceTrackDetailsPanel=n.RAW_PREFIX=void 0;const i=Jr.__importDefault(xe()),o=Fe(),s=Xo(),l=hs(),c=ns(),u=_s(),d=ks(),p=Ns(),f=Ue(),h=De(),m=qe(),g=Ls(),_=Bs(),y=Ve(),e=Gs(),t=fs(),r=ps(),T=Ks(),v=Qs(),b=sl(),E=os();function a(e){return\"bigint\"==typeof e?Number(e):\"number\"==typeof e?e:void 0}n.RAW_PREFIX=\"raw_\";n.DebugSliceTrackDetailsPanel=class{trace;tableName;eventId;argSetIdCol;data;args;threadState;slice;constructor(e,t,r,n){this.trace=e,this.tableName=t,this.eventId=r,this.argSetIdCol=n}async maybeLoadThreadState(e,t,r,n,a){return void 0!==e&&void 0!==a&&void 0!==(e=await(0,u.getThreadState)(this.trace.engine,e))&&(\"thread_state\"===n||e.ts===t&&e.dur===r&&e.thread?.utid===a)?e:void 0}renderThreadStateInfo(){return void 0===this.threadState?null:(0,i.default)(y.TreeNode,{left:(0,e.threadStateRef)(this.trace,this.threadState),right:\"\"},function(e){var t=[];for(const r of Object.keys(e))null!==e[r]&&void 0!==e[r]&&t.push((0,i.default)(y.TreeNode,{left:r,right:e[r]}));return t}({Thread:(0,t.getThreadName)(this.threadState.thread),Process:(0,r.getProcessName)(this.threadState.thread?.process),State:this.threadState.state}))}async maybeLoadSlice(e,t,r,n,a){return void 0!==e&&(\"slice\"===n||void 0!==a)&&void 0!==(e=await(0,l.getSlice)(this.trace.engine,(0,c.asSliceSqlId)(e)))&&(\"slice\"===n||e.ts===t&&e.dur===r&&e.trackId===a)?e:void 0}renderSliceInfo(){return void 0===this.slice?null:(0,i.default)(y.TreeNode,{left:(0,T.sliceRef)(this.trace,this.slice,\"Slice\"),right:\"\"},(0,i.default)(y.TreeNode,{left:\"Name\",right:this.slice.name}),(0,i.default)(y.TreeNode,{left:\"Thread\",right:(0,t.getThreadName)(this.slice.thread)}),(0,i.default)(y.TreeNode,{left:\"Process\",right:(0,r.getProcessName)(this.slice.process)}),(0,s.hasArgs)(this.slice.args)&&(0,i.default)(y.TreeNode,{left:\"Args\"},(0,b.renderSliceArguments)(this.trace,this.slice.args)))}async load(){var e,t=(await this.trace.engine.query(`\n      SELECT *\n      FROM ${this.tableName}\n      WHERE id = ${this.eventId}\n    `)).firstRow({ts:f.LONG,dur:f.LONG,name:f.STR,...this.argSetIdCol&&{arg_set_id:f.NUM_NULL}});this.data={name:t.name,ts:o.Time.fromRaw(t.ts),dur:t.dur,rawCols:{}},null!=t.arg_set_id&&(this.args=await(0,E.getArgs)(this.trace.engine,(0,c.asArgSetId)(t.arg_set_id)));for(const r of Object.keys(t))r.startsWith(n.RAW_PREFIX)&&(this.data.rawCols[r.substr(n.RAW_PREFIX.length)]=t[r]);this.threadState=await this.maybeLoadThreadState(a(this.data.rawCols.id),this.data.ts,this.data.dur,(0,h.sqlValueToReadableString)(this.data.rawCols.table_name),\"bigint\"==typeof(e=this.data.rawCols.utid)?Number(e):\"number\"==typeof e?e:void 0),this.slice=await this.maybeLoadSlice(a(this.data.rawCols.id)??a(this.data.rawCols.slice_id),this.data.ts,this.data.dur,(0,h.sqlValueToReadableString)(this.data.rawCols.table_name),a(this.data.rawCols.track_id))}render(){if(void 0===this.data)return(0,i.default)(\"h2\",\"Loading\");var e=(0,y.dictToTreeNodes)({Name:this.data.name,\"Start time\":(0,i.default)(p.Timestamp,{trace:this.trace,ts:(0,f.timeFromSql)(this.data.ts)}),Duration:(0,i.default)(d.DurationWidget,{trace:this.trace,dur:(0,f.durationFromSql)(this.data.dur)}),\"SQL ID\":(0,i.default)(v.SqlRef,{table:this.tableName,id:this.eventId})}),t=(e.push(this.renderThreadStateInfo()),e.push(this.renderSliceInfo()),{});for(const r of Object.keys(this.data.rawCols))t[r]=(0,h.sqlValueToReadableString)(this.data.rawCols[r]);return e.push((0,i.default)(y.TreeNode,{left:\"Raw columns\"},(0,y.dictToTreeNodes)(t))),(0,i.default)(m.DetailsShell,{title:\"Slice\"},(0,i.default)(g.GridLayout,(0,i.default)(_.Section,{title:\"Details\"},(0,i.default)(y.Tree,e)),this.args&&(0,i.default)(_.Section,{title:\"Arguments\"},(0,i.default)(y.Tree,(0,s.renderArguments)(this.trace,this.args)))))}getTitle(){return\"Current Selection\"}isLoading(){return void 0===this.data}}}}return Go}var cl,ul,dl={};function ze(){if(!cl){cl=1,Object.defineProperty(dl,\"__esModule\",{value:!0}),dl.UnionDataset=dl.SourceDataset=void 0;const e=Pe(),a=Me(),s=Ue(),t=De();class i{src;schema;filter;constructor(e){this.src=e.src,this.schema=e.schema,this.filter=e.filter}query(e){e=e??this.schema;var e=`select ${Object.keys(e).join(\", \")} from (${this.src})`,t=this.filterQuery();return void 0===t?e:e+\" where \"+t}optimize(){return this}implements(e){return Object.entries(e).every(([e,t])=>e in this.schema&&(0,s.checkExtends)(t,this.schema[e]))}filterQuery(){if(this.filter)return\"eq\"in this.filter?this.filter.col+\" = \"+(0,t.sqlValueToSqliteString)(this.filter.eq):\"in\"in this.filter?`${this.filter.col} in (${(0,t.sqlValueToSqliteString)(this.filter.in)})`:void(0,e.assertUnreachable)(this.filter)}}dl.SourceDataset=i;dl.UnionDataset=class o{union;constructor(e){this.union=e}get schema(){let o=void 0;return this.union.forEach(e=>{var t=e.schema;if(void 0===o)o=t;else{var r,n,a,i={};for([r,n]of Object.entries(o))r in t&&void 0!==(a=(0,s.unionTypes)(n,t[r]))&&(i[r]=a);o=i}}),o??{}}query(t){t=t??this.schema;var r=this.union.map(e=>e.query(t));if(r.length<=500)return r.join(\"\\nunion all\\n\");let n=\"with\\n\";var a=[];for(let e=0;e<r.length;e+=500){var i=r.slice(e,e+500),o=\"union_batch_\"+Math.floor(e/500);a.push(o),n+=o+` as (\n${i.join(\"\\nunion all\\n\")}\n)`,e+500<r.length&&(n+=\",\\n\")}const s=Object.keys(t);return n=(n+=\"\\n\")+a.map(e=>`select ${s.join(\",\")} from `+e).join(\"\\nunion all\\n\")}optimize(){var e=this.union.map(e=>e.optimize()),t=new Map,r=[];for(const n of e)(n instanceof i?(0,a.getOrCreate)(t,n.src,()=>[]):r).push(n);return 1===(e=[...Array.from(t.values()).map(e=>{if(1===e.length)return e[0];var t,r=e.reduce((e,t)=>(Object.assign(e,t.schema),e),{}),n=[];for({filter:t}of e)t&&(\"eq\"in t?n.push({col:t.col,in:[t.eq]}):n.push(t));var a=function(e){var t;if(0!==e.length)return t=e[0].col,e=new Set(e.flatMap(e=>e.in)),{col:t,in:Array.from(e)}}(n);return new i({src:e[0].src,schema:r,filter:a})}),...r]).length?e[0]:new o(e)}implements(e){return Object.entries(e).every(([e,t])=>e in this.schema&&(0,s.checkExtends)(t,this.schema[e]))}}}return dl}function pl(){if(!ul){ul=1,Object.defineProperty(Zi,\"__esModule\",{value:!0}),Zi.createQuerySliceTrack=async function(t){const r=\"__query_slice_track_\"+(0,n.sqlNameSafe)(t.uri);return await async function(e,t,r,n={},a=[]){var{ts:n=\"ts\",dur:i=\"dur\",name:o=\"name\"}=n,s=void 0!==r.columns?`(${r.columns.join(\", \")})`:\"\",s=`\n    with data${s} as (\n      ${r.sqlSource}\n    ),\n    prepared_data as (\n      select\n        ${n} as ts,\n        ifnull(cast(${i} as int), -1) as dur,\n        printf('%s', ${o}) as name\n        ${0<a.length?\",\":\"\"}\n        ${a.map(e=>e+\" as \"+l.RAW_PREFIX+e).join(\",\\n\")}\n      from data\n    )\n    select\n      row_number() over (order by ts) as id,\n      *\n    from prepared_data\n    order by ts\n  `;return(0,c.createPerfettoTable)({engine:e,name:t,as:s})}(t.trace.engine,r,t.data,t.columns,t.argColumns),new e.DatasetSliceTrack({trace:t.trace,uri:t.uri,dataset:new a.SourceDataset({schema:{id:i.NUM,ts:i.LONG,dur:i.LONG,name:i.STR},src:r}),detailsPanel:e=>new l.DebugSliceTrackDetailsPanel(t.trace,r,e.id)})};const e=Ge(),l=ll(),c=De(),n=j(),a=ze(),i=Ue()}return Zi}var fl,hl,ml,gl,_l={},yl={};function Tl(){return fl||(fl=1,Object.defineProperty(yl,\"__esModule\",{value:!0}),yl.errResult=function(e){return{ok:!1,error:e,value:void 0}},yl.okResult=function(e){return{ok:!0,value:e}}),yl}function We(){if(!hl){hl=1,Object.defineProperty(_l,\"__esModule\",{value:!0}),_l.Workspace=_l.TrackNode=void 0;const n=Pe(),a=Tl();let e=0;class i{id;name;uri;sortOrder;headless;isSummary;removable;_collapsed=!0;_children=[];tracksById=new Map;tracksByUri=new Map;_parent;_workspace;get parent(){return this._parent}constructor(e){var{name:e=\"\",uri:t,headless:r=!1,sortOrder:n,collapsed:a=!0,isSummary:i=!1,removable:o=!1}=e??{};this.id=s(),this.uri=t,this.headless=r,this.name=e,this.sortOrder=n,this.isSummary=i,this._collapsed=a,this.removable=o}remove(){this.workspace?.unpinTrack(this),this.parent?.removeChild(this)}pin(){this.workspace?.pinTrack(this)}unpin(){this.workspace?.unpinTrack(this)}get isPinned(){return Boolean(this.workspace?.hasPinnedTrack(this))}findClosestVisibleAncestor(){var e=[];let t=this.parent;for(;t;)e.unshift(t),t=t.parent;return e.find(e=>e.collapsed)??this}reveal(){let e=this.parent;for(;e;)e.expand(),e=e.parent}getAncestors(){var e=[];let t=this.parent;for(;t&&\"\"!==t.name;)e.push(t),t=t.parent;return e.reverse()}get rootNode(){let e=this;for(;e.parent;)e=e.parent;return e}get workspace(){return this.rootNode._workspace}expand(){this._collapsed=!1}collapse(){this._collapsed=!0}toggleCollapsed(){this._collapsed=!this._collapsed}get collapsed(){return this._collapsed}get expanded(){return!this._collapsed}get fullPath(){let e=[this.name],t=this.parent;for(;t;)t.headless||\"\"===t.name||(e=[t.name,...e]),t=t.parent;return e}get hasChildren(){return 0<this._children.length}get children(){return this._children}addChildInOrder(t){var e=this._children.find(e=>(e.sortOrder??0)>(t.sortOrder??0));return e?this.addChildBefore(t,e):this.addChildLast(t)}addChildLast(e){var t=this.adopt(e);return t.ok&&this._children.push(e),t}addChildFirst(e){var t=this.adopt(e);return t.ok&&this._children.unshift(e),t}addChildBefore(e,t){if(e!==t){(0,n.assertTrue)(this.children.includes(t));var r=this.adopt(e);if(!r.ok)return r;r=this.children.indexOf(t);this._children.splice(r,0,e)}return(0,a.okResult)()}addChildAfter(e,t){if(e!==t){(0,n.assertTrue)(this.children.includes(t));var r=this.adopt(e);if(!r.ok)return r;r=this.children.indexOf(t);this._children.splice(r+1,0,e)}return(0,a.okResult)()}removeChild(t){this._children=this.children.filter(e=>t!==e),t._parent=void 0,this.removeFromIndex(t),this.propagateRemoval(t)}get flatTracksOrdered(){var e=[];return this.collectFlatTracks(e),e}collectFlatTracks(t){for(let e=0;e<this.children.length;++e)t.push(this.children[e]),this.children[e].collectFlatTracks(t)}get flatTracks(){return Array.from(this.tracksById.values())}clear(){this._children=[],this.tracksById.clear()}getTrackById(e){return this.tracksById.get(e)}getTrackByUri(e){return this.tracksByUri.get(e)}clone(t=!1){const r=new i({...this,id:void 0});return t&&this.children.forEach(e=>{r.addChildLast(e.clone(t))}),r}adopt(e){return e===this||e.getTrackById(this.id)?(0,a.errResult)(\"Cannot move track into itself or one of its descendants\"):(e.parent&&e.parent.removeChild(e),(e._parent=this).addToIndex(e),this.propagateAddition(e),(0,a.okResult)())}addToIndex(e){this.tracksById.set(e.id,e);for(var[t,r]of e.tracksById)this.tracksById.set(t,r);e.uri&&this.tracksByUri.set(e.uri,e);for(var[n,a]of e.tracksByUri)this.tracksByUri.set(n,a)}removeFromIndex(e){this.tracksById.delete(e.id);for(var[t]of e.tracksById)this.tracksById.delete(t);e.uri&&this.tracksByUri.delete(e.uri);for(var[r]of e.tracksByUri)this.tracksByUri.delete(r)}propagateAddition(e){this.parent&&(this.parent.addToIndex(e),this.parent.propagateAddition(e))}propagateRemoval(e){this.parent&&(this.parent.removeFromIndex(e),this.parent.propagateRemoval(e))}}_l.TrackNode=i;function s(){return(e++).toString()}_l.Workspace=class{title=\"<untitled-workspace>\";id;userEditable=!0;pinnedTracksNode=new i;tracks=new i;get pinnedTracks(){return this.pinnedTracksNode.children}constructor(){this.id=s(),((this.pinnedTracksNode._workspace=this).tracks._workspace=this).pinnedTracksNode.expand(),this.tracks.expand()}clear(){this.pinnedTracksNode.clear(),this.tracks.clear()}pinTrack(e){e=new i({uri:e.uri,name:e.name,removable:e.removable});this.pinnedTracksNode.addChildLast(e)}unpinTrack(t){var e=this.pinnedTracksNode.children.find(e=>e.uri===t.uri);e&&this.pinnedTracksNode.removeChild(e)}hasPinnedTrack(t){return this.pinnedTracksNode.flatTracks.some(e=>e.uri===t.uri)}getTrackByUri(t){return this.tracks.flatTracks.find(e=>e.uri===t)}getTrackById(e){return this.tracks.getTrackById(e)||this.pinnedTracksNode.getTrackById(e)}get children(){return this.tracks.children}addChildInOrder(e){return this.tracks.addChildInOrder(e)}addChildLast(e){return this.tracks.addChildLast(e)}addChildFirst(e){return this.tracks.addChildFirst(e)}addChildBefore(e,t){return this.tracks.addChildBefore(e,t)}addChildAfter(e,t){return this.tracks.addChildAfter(e,t)}removeChild(e){this.tracks.removeChild(e)}get flatTracksOrdered(){return this.tracks.flatTracksOrdered}get flatTracks(){return this.tracks.flatTracks}}}return _l}function vl(){if(!ml){ml=1,Object.defineProperty(zt,\"__esModule\",{value:!0}),zt.BreakdownTracks=zt.BreakdownTrackAggType=void 0;const r=j(),i=ln(),n=Vi(),o=pl(),s=We(),a=Ue();var t,m,e;(e=t||(zt.BreakdownTrackAggType=t={})).COUNT=\"COUNT\",e.MAX=\"MAX\",e.SUM=\"SUM\",(e=m=m||{})[e.AGGREGATION=0]=\"AGGREGATION\",e[e.SLICE=1]=\"SLICE\",e[e.PIVOT=2]=\"PIVOT\";function g(e){return e.map(e=>\"\"+function(e){var{columnName:e,value:t}=e,t=function(e){if(void 0===e||!e.trim())return\"\";var t=Number(e);if(!isNaN(t)&&String(t)==e.trim())return t;try{return BigInt(e)}catch{return(0,r.sqliteString)(e)}}(t);return e+\" = \"+(void 0===t?\"\":t)}(e)).join(\" AND \")}zt.BreakdownTracks=class{props;uri;modulesClause;sliceJoinClause;pivotJoinClause;constructor(e){this.props=e,this.uri=\"/breakdown_tracks_\"+this.props.aggregation.tableName,this.modulesClause=e.modules?e.modules.map(e=>`INCLUDE PERFETTO MODULE ${e};`).join(\"\\n\"):\"\",this.props.aggregationType===t.COUNT&&(this.modulesClause+=`\nINCLUDE PERFETTO MODULE intervals.overlap;`),void 0!==this.props.slice?.joins&&(this.sliceJoinClause=this.getJoinClause(this.props.slice.joins)),void 0!==this.props.pivots?.joins&&(this.pivotJoinClause=this.getJoinClause(this.props.pivots.joins))}getAggregationQuery(e){return this.props.aggregationType===t.COUNT?`\n        intervals_overlap_count\n        !((\n            SELECT ${this.props.aggregation.tsCol} AS ts,\n            ${this.props.aggregation.durCol} AS dur\n            FROM ${this.props.aggregation.tableName}\n            ${e}\n        ), ts, dur)\n      `:`\n      SELECT\n      ${this.props.aggregation.tsCol} AS ts,\n      ${this.props.aggregation.durCol} dur,\n      ${this.props.aggregationType}(${this.props.aggregation.valueCol}) AS value\n      FROM _ui_dev_perfetto_breakdown_tracks_intervals\n      ${e}\n      GROUP BY ${this.props.aggregation.tsCol}\n    `}getIntervals(){const{tsCol:e,durCol:t,valueCol:r,columns:n,tableName:a}=this.props.aggregation;return`\n      CREATE OR REPLACE PERFETTO TABLE _ui_dev_perfetto_breakdown_tracks_intervals\n      AS\n      WITH\n        x AS (\n          SELECT overlap.*,\n          lead(${e}) OVER (PARTITION BY group_name ORDER BY ${e}) - ${e} AS dur\n          FROM intervals_overlap_count_by_group!(${a}, ${e}, ${t}, ${n[n.length-1]}) overlap\n        )\n      SELECT x.ts, x.dur,\n        ${n.map(e=>a+\".\"+e).join(\", \")},\n        ${a}.${r}\n      FROM x\n      JOIN ${a}\n        ON\n          ${a}.${n[n.length-1]} = x.group_name\n          AND _ui_dev_perfetto_breakdown_tracks_is_spans_overlapping(x.ts, x.ts + x.dur, ${a}.${e}, ${a}.${e} + ${a}.${t});\n    `}getJoinClause(e){return e.map(({joinTableName:e,joinColumns:t})=>`JOIN ${e} USING(${t.join(\", \")})`).join(\"\\n\")}async createTracks(){\"\"!==this.modulesClause&&await this.props.trace.engine.query(this.modulesClause),this.props.aggregationType!==t.COUNT&&await this.props.trace.engine.query(`\n        CREATE OR REPLACE PERFETTO FUNCTION _ui_dev_perfetto_breakdown_tracks_is_spans_overlapping(\n          ts1 LONG,\n          ts_end1 LONG,\n          ts2 LONG,\n          ts_end2 LONG)\n        RETURNS BOOL\n        AS\n        SELECT (IIF($ts1 < $ts2, $ts2, $ts1) < IIF($ts_end1 < $ts_end2, $ts_end1, $ts_end2));\n\n        ${this.getIntervals()}\n      `);var e=await this.createCounterTrackNode(\"\"+this.props.trackTitle,[]);return this.createBreakdownHierarchy([],e,this.props.aggregation,0,m.AGGREGATION),e}async createBreakdownHierarchy(a,i,o,s,l){var c=o[\"columns\"];if(s!==c.length)for(var u=c[s],e=this.getTrackSpecificJoinClause(l),e=`\n      ${this.modulesClause}\n\n      SELECT DISTINCT ${u}\n      FROM ${this.props.aggregation.tableName}\n      ${void 0!==e?e:\"\"}\n      ${0<a.length?\"WHERE \"+g(a):\"\"}\n    `,d=(await this.props.trace.engine.query(e)).iter({});d.valid();d.next()){var p=d.get(u),p=null===p?\"NULL\":p.toString(),f=p,h=[...a,{columnName:u,value:p}];let e,t=l,r=s+1,n=o;switch(l){case m.AGGREGATION:e=await this.createCounterTrackNode(f,h),this.props.slice&&s===c.length-1&&(t=m.SLICE,r=0,n=this.props.slice);break;case m.SLICE:e=await this.createSliceTrackNode(f,h,s,o,l),this.props.pivots&&s===c.length-1&&(t=m.PIVOT,r=0,n=this.props.pivots);break;default:e=await this.createSliceTrackNode(f,h,s,o,l)}i.addChildInOrder(e),this.createBreakdownHierarchy(h,e,n,r,t)}}getTrackSpecificJoinClause(e){switch(e){case m.SLICE:return this.sliceJoinClause;case m.PIVOT:return this.pivotJoinClause;default:return}}async createSliceTrackNode(e,t,r,n,a){let i=\"\";return this.sliceJoinClause&&a===m.SLICE?i=this.sliceJoinClause:this.pivotJoinClause&&a===m.PIVOT&&(i=this.pivotJoinClause),this.createTrackNode(e,t,(e,t)=>(0,o.createQuerySliceTrack)({trace:this.props.trace,uri:e,data:{sqlSource:`\n            SELECT ${n.tsCol} AS ts,\n              ${n.durCol} AS dur,\n              ${n.columns[r]} AS name\n            FROM ${this.props.aggregation.tableName}\n            ${i}\n            ${t}\n          `,columns:[\"ts\",\"dur\",\"name\"]}}))}async getCounterTrackSortOrder(e){e=this.getAggregationQuery(e),e=(await this.props.trace.engine.query(`\n      SELECT MAX(value) as max_value FROM (${e})\n    `)).firstRow({max_value:a.NUM_NULL}).max_value;return null===e?0:e}async createCounterTrackNode(e,t){return this.createTrackNode(e,t,(e,t)=>(0,n.createQueryCounterTrack)({trace:this.props.trace,uri:e,data:{sqlSource:`\n              SELECT ts, value FROM\n              (${this.getAggregationQuery(t)})\n            `},columns:{ts:\"ts\",value:\"value\"}}),e=>this.getCounterTrackSortOrder(e))}async createTrackNode(e,t,r,n){var t=0<t.length?`\nWHERE `+g(t):\"\",a=this.uri+\"_\"+(0,i.uuidv4)(),r=await r(a,t),r=(this.props.trace.tracks.registerTrack({uri:a,renderer:r}),await n?.(t));return new s.TrackNode({name:e,uri:a,sortOrder:void 0!==r?-r:void 0})}}}return zt}var bl,El,Sl={},Al={};function Ol(){if(!bl){bl=1,Object.defineProperty(Al,\"__esModule\",{value:!0}),Al.addDebugSliceTrack=async function(e){var t=a++,r=\"__debug_track_\"+t,n=e.title?.trim()||\"Debug Slice Track \"+t,t=\"debug.track\"+t;await async function(e,t,r,n={},a,i,o){var{ts:n=\"ts\",dur:s=\"dur\",name:l=\"name\"}=n,c=void 0!==r.columns?`(${r.columns.join(\", \")})`:\"\",n=[n+\" as ts\",`ifnull(cast(${s} as int), -1) as dur`,`printf('%s', ${l}) as name`,a&&a.map(e=>e+\" as \"+g.RAW_PREFIX+e),i&&i+\" as pivot\",o&&o+\" as arg_set_id\"].flat().filter(Boolean).join(\",\"),s=`\n    with data${c} as (\n      ${r.sqlSource}\n    ),\n    prepared_data as (\n      select ${n}\n      from data\n    )\n    select\n      row_number() over (order by ts) as id,\n      *\n    from prepared_data\n    order by ts\n  `;return(0,h.createPerfettoTable)({engine:e,name:t,as:s})}(e.trace.engine,r,e.data,e.columns,e.argColumns,e.pivotOn,e.argSetIdColumn),e.pivotOn?async function(t,r,e,n,a){var i=await t.engine.query(`\n    SELECT DISTINCT pivot\n    FROM ${r}\n    ORDER BY pivot\n  `);let o=0;for(var s=i.iter({});s.valid();s.next()){var l=n+\"_\"+o++,c=s.get(\"pivot\"),u=e+`: ${a} = `+(0,h.sqlValueToReadableString)(c),c=(t.tracks.registerTrack({uri:l,renderer:new m.DatasetSliceTrack({trace:t,uri:l,dataset:new p.SourceDataset({schema:{id:f.NUM,ts:f.LONG,dur:f.LONG,name:f.STR},src:r,filter:{col:\"pivot\",eq:c}}),detailsPanel:e=>new g.DebugSliceTrackDetailsPanel(t,r,e.id)})}),new d.TrackNode({uri:l,name:u,removable:!0}));t.workspace.pinnedTracksNode.addChildLast(c)}}(e.trace,r,n,t,e.pivotOn):function(t,r,e,n,a){t.tracks.registerTrack({uri:n,renderer:new m.DatasetSliceTrack({trace:t,uri:n,dataset:new p.SourceDataset({schema:{id:f.NUM,ts:f.LONG,dur:f.LONG,name:f.STR},src:r}),detailsPanel:e=>new g.DebugSliceTrackDetailsPanel(t,r,e.id,a)})});n=new d.TrackNode({uri:n,name:e,removable:!0});t.workspace.pinnedTracksNode.addChildLast(n)}(e.trace,r,n,t,e.argSetIdColumn)},Al.addDebugCounterTrack=async function(e){var t=a++,r=\"__debug_track_\"+t,n=e.title?.trim()||\"Debug Slice Track \"+t,t=\"debug.track\"+t;await async function(e,t,r,n={},a){var{ts:n=\"ts\",value:i=\"value\"}=n,n=[n+\" as ts\",i+\" as value\",a&&a+\" as pivot\"].flat().filter(Boolean).join(\",\"),i=`\n    with data as (\n      ${r.sqlSource}\n    )\n    select ${n}\n    from data\n    order by ts\n  `;return(0,h.createPerfettoTable)({engine:e,name:t,as:i})}(e.trace.engine,r,e.data,e.columns,e.pivotOn),e.pivotOn?async function(e,t,r,n,a){var i=await e.engine.query(`\n    SELECT DISTINCT pivot\n    FROM ${t}\n    ORDER BY pivot\n  `);let o=0;for(var s=i.iter({});s.valid();s.next()){var l=n+\"_\"+o++,c=s.get(\"pivot\"),u=r+`: ${a} = `+(0,h.sqlValueToReadableString)(c),c=(e.tracks.registerTrack({uri:l,renderer:new _.SqlTableCounterTrack(e,l,`\n          SELECT *\n          FROM ${t}\n          WHERE pivot = ${(0,h.sqlValueToSqliteString)(c)}\n        `)}),new d.TrackNode({uri:l,name:u,removable:!0}));e.workspace.pinnedTracksNode.addChildLast(c)}}(e.trace,r,n,t,e.pivotOn):function(e,t,r,n){e.tracks.registerTrack({uri:n,renderer:new _.SqlTableCounterTrack(e,n,t)});t=new d.TrackNode({uri:n,name:r,removable:!0});e.workspace.pinnedTracksNode.addChildLast(t)}(e.trace,r,n,t)};const d=We(),p=ze(),f=Ue(),h=De(),m=Ge(),g=ll(),_=Vi();let a=0}return Al}var Cl,wl={};var kl,Il={},Rl={},Nl={};function Ml(){return kl||(kl=1,Object.defineProperty(Nl,\"__esModule\",{value:!0}),Nl.runQueryForQueryTable=async function(e,t){var r=performance.now(),t=await t.tryQuery(e);{if(t.ok){for(var n=t.value,a=performance.now()-r,i=[],o=n.columns(),s=n.iter({});s.valid();s.next()){var l={};for(const u of o){var c=s.get(u);l[u]=c}i.push(l)}return{query:e,durationMs:a,error:n.error(),totalRowCount:n.numRows(),columns:o,rows:i,statementCount:n.statementCount(),statementWithOutputCount:n.statementWithOutputCount(),lastStatementSql:n.lastStatementSql()}}return{query:e,durationMs:performance.now()-r,error:t.error,totalRowCount:0,columns:[],rows:[],statementCount:0,statementWithOutputCount:0,lastStatementSql:\"\"}}},Nl.formatAsDelimited=function(e,t=\"\\t\"){var r=[];r.push(e.columns);for(const i of e.rows){var n=[];for(const o of e.columns){var a=i[o];n.push(null===a?\"NULL\":\"\"+a)}r.push(n)}return r.map(e=>e.join(t)).join(\"\\n\")},Nl.formatAsMarkdownTable=function(t){if(0===t.columns.length)return\"\";var e=[];e.push(t.columns),e.push(t.columns.map(e=>\"---\"));for(const a of t.rows)e.push(t.columns.map(e=>{e=a[e];return null===e?\"NULL\":\"\"+e}));const n=Array(t.columns.length).fill(0);for(const i of e)for(let e=0;e<t.columns.length;e++)i[e].length>n[e]&&(n[e]=i[e].length);var r=e.map((e,t)=>{const r=1===t?\"-\":\" \";return`| ${e.map((e,t)=>e+r.repeat(n[t]-e.length)).join(\" | \")} |`}).join(\"\\n\");return r}),Nl}var Pl,Dl={},xl={};function Ll(){if(!Pl){Pl=1,Object.defineProperty(xl,\"__esModule\",{value:!0}),xl.FormLabel=xl.Form=void 0;const c=Jr.__importDefault(xe()),u=je(),d=yi(),p=Be();xl.Form=class{view({attrs:e,children:t}){const{submitIcon:r=void 0,submitLabel:n=\"Submit\",cancelLabel:a,resetLabel:i,onSubmit:o=()=>{},preventDefault:s=!0,...l}=e;return(0,c.default)(\"form.pf-form\",l,t,(0,c.default)(\".pf-form-button-bar\",(0,c.default)(u.Button,{type:\"submit\",label:n,rightIcon:r,className:d.Popup.DISMISS_POPUP_GROUP_CLASS,intent:p.Intent.Primary,variant:u.ButtonVariant.Filled,onclick:e=>{s&&e.preventDefault(),o()}}),a&&(0,c.default)(u.Button,{type:\"button\",label:a,variant:u.ButtonVariant.Filled,className:d.Popup.DISMISS_POPUP_GROUP_CLASS}),i&&(0,c.default)(u.Button,{label:i,variant:u.ButtonVariant.Filled,type:\"reset\"})))}};xl.FormLabel=class{view({attrs:e,children:t}){return(0,c.default)(\"label.pf-form-label\",e,t)}}}return xl}var Fl,Ul={};function Bl(){if(!Fl){Fl=1,Object.defineProperty(Ul,\"__esModule\",{value:!0}),Ul.Select=void 0;const r=Jr.__importDefault(xe());Ul.Select=class{view({attrs:e,children:t}){return(0,r.default)(\"select.pf-select\",e,t)}}}return Ul}var jl,Hl,Gl={};function Vl(){if(!jl){jl=1,Object.defineProperty(Gl,\"__esModule\",{value:!0}),Gl.TextInput=void 0;const a=Jr.__importDefault(xe()),i=Ee();Gl.TextInput=class{oncreate(e){e.attrs.autofocus&&(e=e.dom.querySelector(\"input\"))&&e.focus()}view({attrs:e}){const{leftIcon:t,className:r,...n}=e;return(0,a.default)(\".pf-text-input\",{className:r},t&&(0,a.default)(i.Icon,{icon:t,className:\"pf-text-input__left-icon\"}),(0,a.default)(\"input.pf-text-input__input\",{...n}))}}}return Gl}function ql(){if(!Hl){Hl=1,Object.defineProperty(Dl,\"__esModule\",{value:!0}),Dl.AddDebugTrackMenu=void 0;const n=Jr.__importDefault(xe()),r=_i(),a=Pe(),i=Ll(),o=Bl(),s=Vl(),l=Ol(),c=\"TRACK_NAME_FIELD\",e=[\"slice\",\"counter\"];function t(e,t){var r=e.find(e=>e===t);return r||e.find(e=>e.endsWith(\"_\"+t))||(\"dur\"===t?\"0\":\"\")}Dl.AddDebugTrackMenu=class{trackName=\"\";trackType=\"slice\";options;constructor({attrs:e}){e=e.availableColumns;this.options={ts:t(e,\"ts\"),dur:t(e,\"dur\"),name:t(e,\"name\"),value:t(e,\"value\"),argSetId:t(e,\"arg_set_id\"),pivot:\"\"}}oncreate({dom:e}){this.focusTrackNameField(e)}focusTrackNameField(e){e=(0,r.findRef)(e,c);e&&e instanceof HTMLInputElement&&e.focus()}view({attrs:e}){return(0,n.default)(i.Form,{onSubmit:()=>this.createTracks(e),submitLabel:\"Add Track\"},(0,n.default)(i.FormLabel,{for:\"track_name\"},\"Track name\"),(0,n.default)(s.TextInput,{id:\"track_name\",ref:c,onkeydown:e=>{e.key},oninput:e=>{e.target&&(this.trackName=e.target.value)}},this.trackName),(0,n.default)(i.FormLabel,{for:\"track_type\"},\"Track type\"),this.renderTrackTypeSelect(),this.renderOptions(e.availableColumns))}renderTrackTypeSelect(){return(0,n.default)(o.Select,{id:\"track_type\",oninput:e=>{e.target&&(this.trackType=e.target.value)}},e.map(e=>(0,n.default)(\"option\",{value:e,selected:this.trackType===e},e)))}renderOptions(e){switch(this.trackType){case\"slice\":return this.renderSliceOptions(e);case\"counter\":return this.renderCounterTrackOptions(e);default:(0,a.assertUnreachable)(this.trackType)}}renderSliceOptions(e){return[this.renderFormSelectInput(\"ts\",\"ts\",e),this.renderFormSelectInput(\"dur\",\"dur\",[\"0\",...e]),this.renderFormSelectInput(\"name\",\"name\",e),this.renderFormSelectInput(\"arg_set_id\",\"argSetId\",[\"\",...e]),this.renderFormSelectInput(\"pivot\",\"pivot\",[\"\",...e])]}renderCounterTrackOptions(e){return[this.renderFormSelectInput(\"ts\",\"ts\",e),this.renderFormSelectInput(\"value\",\"value\",e),this.renderFormSelectInput(\"pivot\",\"pivot\",[\"\",...e])]}renderFormSelectInput(e,t,r){return[(0,n.default)(i.FormLabel,{for:e},e),(0,n.default)(o.Select,{id:e,oninput:e=>{e.target&&(this.options[t]=e.target.value)},value:this.options[t]},r.map(e=>(0,n.default)(\"option\",{selected:this.options[t]===e},e)))]}createTracks(e){switch(this.trackType){case\"slice\":(0,l.addDebugSliceTrack)({trace:e.trace,data:{sqlSource:e.query,columns:e.availableColumns},title:this.trackName,columns:{ts:this.options.ts,dur:this.options.dur,name:this.options.name},argSetIdColumn:this.options.argSetId,argColumns:e.availableColumns,pivotOn:this.options.pivot});break;case\"counter\":(0,l.addDebugCounterTrack)({trace:e.trace,data:{sqlSource:e.query,columns:e.availableColumns},title:this.trackName,columns:{ts:this.options.ts,value:this.options.value},pivotOn:this.options.pivot});break;default:(0,a.assertUnreachable)(this.trackType)}}}}return Dl}var zl,Wl={},$l={};function Kl(){if(!zl){zl=1,Object.defineProperty($l,\"__esModule\",{value:!0}),$l.Callout=void 0;const l=Jr.__importDefault(xe()),c=Be(),u=je(),d=Ee(),p=be();$l.Callout=class{view({attrs:e,children:t}){const{icon:r,intent:n=c.Intent.None,className:a,dismissable:i=!1,onDismiss:o,...s}=e;e=i&&(0,l.default)(u.Button,{icon:\"close\",onclick:o,compact:!0});return(0,l.default)(\".pf-callout\",{className:(0,p.classNames)((0,c.classForIntent)(n),a),...s},r&&(0,l.default)(d.Icon,{className:\"pf-left-icon\",icon:r}),(0,l.default)(\"span\",t),e)}}}return $l}var Yl,Jl,Ql={},Zl={};function Xl(){if(!Jl){Jl=1;{var c=Ql;var e,t;Object.defineProperty(c,\"__esModule\",{value:!0}),c.Router=c.ROUTE_PREFIX=void 0;const a=Jr.__importDefault(xe()),r=Pe(),n=(Yl||(Yl=1,Object.defineProperty(Zl,\"__esModule\",{value:!0}),Zl.ROUTE_SCHEMA=void 0,t=(e=Ne()).z.union([e.z.string(),e.z.boolean()]),Zl.ROUTE_SCHEMA=e.z.object({local_cache_key:e.z.string().optional().catch(void 0),openFromAndroidBugTool:e.z.boolean().optional().catch(void 0),s:e.z.string().optional().catch(void 0),p:e.z.string().optional().catch(void 0),url:e.z.string().optional().catch(void 0),rpc_port:e.z.string().regex(/\\d+/).optional().catch(void 0),referrer:e.z.string().optional().catch(void 0),mode:e.z.enum([\"embedded\"]).optional().catch(void 0),hideSidebar:e.z.boolean().optional().catch(void 0),enablePlugins:e.z.string().optional().catch(void 0),table:e.z.string().optional().catch(void 0),ts:e.z.string().optional().catch(void 0),dur:e.z.string().optional().catch(void 0),tid:e.z.string().optional().catch(void 0),pid:e.z.string().optional().catch(void 0),query:e.z.string().optional().catch(void 0),visStart:e.z.string().optional().catch(void 0),visEnd:e.z.string().optional().catch(void 0),startupCommands:e.z.string().optional().catch(void 0)}).catchall(t).default({})),Zl);function u(e){e=n.ROUTE_SCHEMA.safeParse(e);return e.success?e.data:{}}c.ROUTE_PREFIX=\"#!\";class d{recentChanges=[];onRouteChanged=()=>{};constructor(){window.onhashchange=e=>this.onHashChange(e);var e=d.parseUrl(window.location.href);this.onRouteChanged(e)}onHashChange(e){this.crashIfLivelock();var t=d.parseUrl(e.oldURL),r=d.parseUrl(e.newURL),t=(void 0===r.args.local_cache_key&&t.args.local_cache_key&&(r.args.local_cache_key=t.args.local_cache_key),a.default.buildQueryString(r.args));let n=\"#!\"+r.page+r.subpage;t.length&&(n+=\"?\"+t),r.fragment&&(n+=\"#\"+r.fragment),e.newURL.endsWith(n)?this.onRouteChanged(r):location.replace(n)}static navigate(e){(0,r.assertTrue)(e.startsWith(c.ROUTE_PREFIX)),window.location.hash=e}static parseFragment(e){e=e.startsWith(c.ROUTE_PREFIX)?e.substring(c.ROUTE_PREFIX.length):\"\";var e=new URL(\"https://example.com\"+e),t=e.pathname;let r=t,n=\"\";var a=t.indexOf(\"/\",1);0<a&&(r=t.substring(0,a),n=t.substring(a)),\"/\"===r&&(r=\"\");let i={};var o=u(i=e.search?d.parseQueryString(e.search):i);for(const l of Object.keys(o))void 0===o[l]&&delete o[l];let s=e.hash;return s.startsWith(\"#\")&&(s=s.substring(1)),{page:r,subpage:n,args:o,fragment:s}}static parseQueryString(e){return e=e.replaceAll(\"+\",\" \"),a.default.parseQueryString(e)}static parseSearchParams(e){e=new URL(e).search;return u(d.parseQueryString(e))}static parseUrl(e){var t=d.parseSearchParams(e),r=e.indexOf(\"#\"),e=r<0?\"\":e.substring(r),r=d.parseFragment(e);return r.args=Object.assign({},t,r.args),r}crashIfLivelock(){for(var e=Date.now();0<this.recentChanges.length&&1e3<e-this.recentChanges[0];)this.recentChanges.shift();if(this.recentChanges.push(e),20<this.recentChanges.length)throw new Error(\"History rewriting livelock\")}}c.Router=d}}return Ql}var ec,tc={},rc={};function nc(){if(!ec){ec=1,Object.defineProperty(rc,\"__esModule\",{value:!0}),rc.download=async function({content:t,fileName:e,mimeType:r,filePicker:n}){let a;{var i;a=t instanceof File||t instanceof Blob?t:(i=\"string\"==typeof t?\"text/plain\":\"application/octet-stream\",new Blob([t],{type:r??i}))}if(n&&(0,c.exists)(window.showSaveFilePicker))try{var o=await(await window.showSaveFilePicker({suggestedName:e,types:n.types})).createWritable();await o.write(a),await o.close()}catch(e){console.error(e)}else{t={stack:[],error:void 0,hasError:!1};try{s({url:l.__addDisposableResource(t,function(e){const t=URL.createObjectURL(e);return{[Symbol.dispose]:()=>URL.revokeObjectURL(t),value:t}}(a),!1).value,fileName:e})}catch(e){t.error=e,t.hasError=!0}finally{l.__disposeResources(t)}}},rc.downloadUrl=s;const l=Jr,c=Me();function s({fileName:e,url:t}){var r=document.createElement(\"a\");r.href=t,r.download=e,r.target=\"_blank\",document.body.appendChild(r),r.click(),document.body.removeChild(r)}}return rc}var ac,ic={};function oc(){if(!ac){ac=1,Object.defineProperty(ic,\"__esModule\",{value:!0}),ic.Chip=void 0;const f=Jr.__importDefault(xe()),h=be(),m=Be(),g=Ee(),a=Ei(),_=je();ic.Chip=class{view({attrs:e}){const{icon:t,compact:r,rightIcon:n,className:a,iconFilled:i,intent:o=m.Intent.None,rounded:s,removable:l,onRemove:c,...u}=e;var d=\"label\"in e?e.label:void 0,p=(0,h.classNames)(r&&\"pf-compact\",(0,m.classForIntent)(o),t&&!d&&\"pf-icon-only\",a,s&&\"pf-chip--rounded\");return(0,f.default)(\".pf-chip\",{...u,className:p},this.renderIcon(e),n&&(0,f.default)(g.Icon,{className:\"pf-right-icon\",icon:n,filled:i}),d||\"​\",l&&(0,f.default)(_.Button,{compact:!0,rounded:s,icon:\"close\",onclick:()=>c?.()}))}renderIcon(e){var{icon:t,iconFilled:r}=e,n=\"pf-left-icon\";return e.loading?(0,f.default)(a.Spinner,{className:n}):t?(0,f.default)(g.Icon,{className:n,icon:t,filled:r}):void 0}}}return ic}var sc,lc,cc={},uc={};function dc(){return sc||(sc=1,Object.defineProperty(uc,\"__esModule\",{value:!0}),uc.areAggregateArraysEqual=function(t,r){if(t!==r){if(!t||!r)return!1;if(t.length!==r.length)return!1;for(let e=0;e<t.length;e++)if(!n(t[e],r[e]))return!1}return!0},uc.areAggregatesEqual=n),uc;function n(e,t){return e.col===t.col&&e.func===t.func}}function pc(){if(!lc){lc=1,Object.defineProperty(cc,\"__esModule\",{value:!0}),cc.InMemoryDataSource=void 0;const n=dc();function a(t,r){if(t===r)return!0;if(t instanceof Uint8Array&&r instanceof Uint8Array){if(t.length!==r.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==r[e])return!1;return!0}return!1}function r(e){return\"number\"==typeof e||\"bigint\"==typeof e}function i(e,t){if(null===e&&null===t)return 0;if(null===e)return-1;if(null===t)return 1;if(r(e)&&r(t))return\"number\"==typeof e&&\"number\"==typeof t?e-t:\"bigint\"==typeof e&&\"bigint\"==typeof t?Number(e-t):Number(e)-Number(t);throw new Error(\"Cannot compare non-numeric values\")}cc.InMemoryDataSource=class{data=[];filteredSortedData=[];aggregateResults={};oldSorting={direction:\"UNSORTED\"};oldFilters=[];aggregates;constructor(e){this.data=e,this.filteredSortedData=e}get rows(){return{rowOffset:0,rows:this.filteredSortedData,totalRows:this.filteredSortedData.length,aggregates:this.aggregateResults}}notifyUpdate({sorting:e={direction:\"UNSORTED\"},filters:t=[],aggregates:r}){this.isSortByEqual(e,this.oldSorting)&&this.areFiltersEqual(t,this.oldFilters)&&(0,n.areAggregateArraysEqual)(r,this.aggregates)||(this.oldSorting=e,this.oldFilters=t,this.aggregates=r,t=this.applyFilters(this.data,t),t=this.applySorting(t,e),this.filteredSortedData=t,r&&(this.aggregateResults=this.calcAggregates(t,r)))}calcAggregates(e,t){var r={};for(const a of t){const{col:i,func:o}=a;var n=e.map(e=>e[i]).filter(e=>null!==e);if(0===n.length)r[i]=null;else switch(o){case\"SUM\":r[i]=n.reduce((e,t)=>e+(Number(t)||0),0);break;case\"AVG\":r[i]=n.reduce((e,t)=>e+(Number(t)||0),0)/n.length;break;case\"COUNT\":r[i]=n.length;break;case\"MIN\":r[i]=n.reduce((e,t)=>t<e?t:e,n[0]);break;case\"MAX\":r[i]=n.reduce((e,t)=>e<t?t:e,n[0])}}return r}isSortByEqual(e,t){return e===t||\"UNSORTED\"===e.direction&&\"UNSORTED\"===t.direction||\"UNSORTED\"!==e.direction&&\"UNSORTED\"!==t.direction&&e.column===t.column&&e.direction===t.direction}areFiltersEqual(e,r){return e===r||e.length===r.length&&e.every((e,t)=>{t=r[t];return e.column===t.column&&e.op===t.op&&(!(\"value\"in e)||!(\"value\"in t)||this.isValueEqual(e.value,t.value))})}isValueEqual(e,r){return e===r||e instanceof Uint8Array&&r instanceof Uint8Array&&e.length===r.length&&e.every((e,t)=>e===r[t])}applyFilters(e,t){return 0===t.length?e:e.filter(n=>t.every(e=>{var t,r=n[e.column];switch(e.op){case\"=\":return a(r,e.value);case\"!=\":return!a(r,e.value);case\"<\":return i(r,e.value)<0;case\"<=\":return i(r,e.value)<=0;case\">\":return 0<i(r,e.value);case\">=\":return 0<=i(r,e.value);case\"is null\":return null===r;case\"is not null\":return null!==r;case\"glob\":return\"string\"==typeof r&&\"string\"==typeof e.value?(t=e.value.replace(/\\*/g,\".*\").replace(/\\?/g,\".\").replace(/\\[!([^\\]]+)\\]/g,\"[^$1]\"),new RegExp(`^${t}$`).test(r)):!1;default:return!1}}))}applySorting(e,t){if(\"UNSORTED\"===t.direction)return e;const r=t.column,n=t.direction;return[...e].sort((e,t)=>{var e=e[r],t=t[r];return null===e&&null===t?0:null===e?\"ASC\"===n?-1:1:null===t?\"ASC\"===n?1:-1:\"number\"==typeof e&&\"number\"==typeof t?\"ASC\"===n?e-t:t-e:\"bigint\"==typeof e&&\"bigint\"==typeof t?\"ASC\"===n?Number(e-t):Number(t-e):\"string\"==typeof e&&\"string\"==typeof t?\"ASC\"===n?e.localeCompare(t):t.localeCompare(e):e instanceof Uint8Array&&t instanceof Uint8Array?\"ASC\"===n?e.length-t.length:t.length-e.length:(e=String(e),t=String(t),\"ASC\"===n?e.localeCompare(t):t.localeCompare(e))})}}}return cc}var fc,hc={};function mc(){if(!fc){fc=1,Object.defineProperty(hc,\"__esModule\",{value:!0}),hc.StackFixed=hc.StackAuto=hc.Stack=void 0;const c=Jr.__importDefault(xe()),u=be(),d=Be();hc.Stack=class{view({attrs:e,children:t}){const{orientation:r=\"vertical\",fillHeight:n=!1,spacing:a=\"medium\",className:i,wrap:o,inline:s,...l}=e;return(0,c.default)(\".pf-stack\",{className:(0,u.classNames)(\"horizontal\"===r&&\"pf-stack--horiz\",n&&\"pf-stack--fill-height\",(0,d.classForSpacing)(a),o&&\"pf-stack--wrap\",s&&\"pf-stack--inline\",i),...l},t)}};hc.StackAuto=class{view({attrs:e,children:t}){return(0,c.default)(\".pf-stack-auto\",e,t)}};hc.StackFixed=class{view({attrs:e,children:t}){return(0,c.default)(\".pf-stack-fixed\",e,t)}}}return hc}var gc,_c={};function yc(){if(!gc){gc=1,Object.defineProperty(_c,\"__esModule\",{value:!0}),_c.Box=void 0;const o=Jr.__importDefault(xe()),s=be(),l=Be();_c.Box=class{view({attrs:e,children:t}){const{fillHeight:r=!1,className:n,spacing:a=\"medium\",...i}=e;return(0,o.default)(\".pf-box\",{...i,className:(0,s.classNames)(n,r&&\"pf-box--fill-height\",(0,l.classForSpacing)(a))},t)}}}return _c}var Tc,vc={};function bc(){if(!Tc){Tc=1,Object.defineProperty(vc,\"__esModule\",{value:!0}),vc.LinearProgress=void 0;const t=Jr.__importDefault(xe()),r=be();vc.LinearProgress=class{view({attrs:e}){return(0,t.default)(\".pf-linear-progress\",{...e,className:(0,r.classNames)(\"indeterminate\"===e.state&&\"pf-linear-progress--anim\",e.className)})}}}return vc}var Ec,Sc,Ac,Oc,Cc,wc={};function kc(){if(!Ec){Ec=1,Object.defineProperty(wc,\"__esModule\",{value:!0}),wc.PageControl=wc.GridDataCell=wc.GridHeaderCell=wc.GridRow=wc.GridBody=wc.GridHeader=wc.Grid=void 0,wc.renderSortMenuItems=function(e,t){return[\"DESC\"!==e&&(0,f.default)(_.MenuItem,{label:\"Sort: highest first\",icon:m.Icons.SortedDesc,onclick:()=>t(\"DESC\")}),\"ASC\"!==e&&(0,f.default)(_.MenuItem,{label:\"Sort: lowest first\",icon:m.Icons.SortedAsc,onclick:()=>t(\"ASC\")}),void 0!==e&&(0,f.default)(_.MenuItem,{label:\"Unsort\",icon:m.Icons.Close,onclick:()=>t(void 0)})]};const f=Jr.__importDefault(xe()),h=be(),m=Ae(),g=je(),_=Se();wc.Grid=class{view({attrs:e,children:t}){var{fillHeight:e=!1,className:r}=e;return(0,f.default)(\".pf-grid\",{className:(0,h.classNames)(e&&\"pf-grid--fill-height\",r)},(0,f.default)(\".pf-grid__table\",(0,f.default)(\"table\",t)))}};wc.GridHeader=class{view({children:e}){return(0,f.default)(\"thead\",e)}};wc.GridBody=class{view({children:e}){return(0,f.default)(\"tbody\",e)}};wc.GridRow=class{view({children:e}){return(0,f.default)(\"tr\",e)}};wc.GridHeaderCell=class{dragOverState={count:0,position:\"after\"};view({attrs:a,children:e,key:t}){const{sort:r,onSort:n,menuItems:i,aggregation:o,reorderable:s,onReorder:l,thickRightBorder:c,...u}=a;var d=void 0!==o;const p=s?.handle;return(0,f.default)(\"th\",{...u,draggable:void 0!==s,className:(0,h.classNames)(0<this.dragOverState.count&&\"pf-drag-over\",0<this.dragOverState.count&&\"pf-drag-over--\"+this.dragOverState.position,c&&\"pf-grid-cell--thick-right-border\"),ondragstart:e=>{e.redraw=!1,e.dataTransfer.setData(s.handle,JSON.stringify({key:t}))},ondragenter:e=>{p&&e.dataTransfer.types.includes(p)&&++this.dragOverState.count},ondragleave:e=>{p&&e.dataTransfer.types.includes(p)&&--this.dragOverState.count},ondragover:e=>{var t;e.preventDefault(),p&&e.dataTransfer.types.includes(p)?(e.dataTransfer.dropEffect=\"move\",t=e.currentTarget.getBoundingClientRect(),this.dragOverState.position=e.clientX<t.left+t.width/2?\"before\":\"after\"):e.dataTransfer.dropEffect=\"none\"},ondrop:e=>{var t,r,n;this.dragOverState.count=0,p&&(t=e.dataTransfer.getData(p))&&(e.preventDefault(),t=JSON.parse(t)[\"key\"],r=a.key,n=e.currentTarget.getBoundingClientRect(),e=e.clientX<n.left+n.width/2?\"before\":\"after\",l?.(t,r,e))}},(0,f.default)(\".pf-grid-cell-header\",[(0,f.default)(\".pf-grid-cell\",[(0,f.default)(\".pf-grid-cell__content-container\",[(0,f.default)(\".pf-grid-cell__content\",e),(()=>{if(!n)return null;const t=(()=>{if(r){if(\"ASC\"===r)return\"DESC\";r}return\"ASC\"})();return(0,f.default)(g.Button,{className:(0,h.classNames)(!r&&\"pf-grid-cell__hint\",!r&&\"pf-visible-on-hover\"),rounded:!0,icon:\"DESC\"===r?m.Icons.SortDesc:m.Icons.SortAsc,onclick:e=>{n(t),e.stopPropagation()}})})()]),void 0===i?null:(0,f.default)(_.PopupMenu,{trigger:(0,f.default)(g.Button,{className:\"pf-visible-on-hover pf-grid-cell__menu-button\",icon:m.Icons.ContextMenuAlt,rounded:!0})},i)]),d&&(0,f.default)(\".pf-grid-cell__aggregation\",(0,f.default)(\".pf-grid-cell__aggregation-left\",o.left),(0,f.default)(\".pf-grid-cell__aggregation-right\",o.right))]))}};wc.GridDataCell=class{view({attrs:e,children:t}){const{menuItems:r,align:n,isMissing:a,thickRightBorder:i,className:o,...s}=e;return(0,f.default)(\"td\",{...s,className:(0,h.classNames)(o,i&&\"pf-grid-cell--thick-right-border\")},(0,f.default)(\".pf-grid-cell\",[(0,f.default)(\".pf-grid-cell__content-container\",{className:(0,h.classNames)(n&&\"pf-grid-cell--align-\"+n,a&&\"pf-grid-cell--missing\")},(0,f.default)(\".pf-grid-cell__content\",t)),void 0===r?null:(0,f.default)(\".pf-grid-cell__actions\",(0,f.default)(_.PopupMenu,{trigger:(0,f.default)(g.Button,{className:\"pf-grid-cell__menu-button pf-visible-on-hover\",icon:m.Icons.ContextMenuAlt,rounded:!0})},r))]))}};const c=mc();wc.PageControl=class{view({attrs:e}){var{from:e,to:t,of:r,firstPageClick:n,prevPageClick:a,nextPageClick:i,lastPageClick:o}=e,s=1===e,l=t===r;return(0,f.default)(c.Stack,{className:\"pf-page-control\",orientation:\"horizontal\"},[(0,f.default)(\"span\",e+` - ${t} of `+r),(0,f.default)(g.Button,{icon:m.Icons.FirstPage,disabled:s,title:\"First Page\",onclick:n}),(0,f.default)(g.Button,{icon:m.Icons.PrevPage,disabled:s,title:\"Previous Page\",onclick:a}),(0,f.default)(g.Button,{icon:m.Icons.NextPage,disabled:l,title:\"Next Page\",onclick:i}),(0,f.default)(g.Button,{icon:m.Icons.LastPage,disabled:l,title:\"Last Page\",onclick:o})])}}}return wc}function Ic(){if(!Sc){Sc=1,Object.defineProperty(tc,\"__esModule\",{value:!0}),tc.DataGrid=void 0,tc.renderCell=S,tc.isNumeric=p;const A=Jr.__importDefault(xe()),d=je(),r=nc(),n=Oe(),O=Se(),f=oc(),h=Ae(),C=pc(),m=mc(),g=yc(),w=bc(),k=kc(),I=be();function E(){}function S(e,t){return e instanceof Uint8Array?(0,A.default)(n.Anchor,{icon:h.Icons.Download,onclick:()=>(0,r.download)({fileName:t+\".blob\",content:e})},`Blob (${e.length} bytes)`):\"number\"==typeof e||\"bigint\"==typeof e?(0,A.default)(\"span.pf-data-grid__cell--number\",\"\"+e):null===e?(0,A.default)(\"span.pf-data-grid__cell--null\",\"null\"):(0,A.default)(\"span\",\"\"+e)}function p(e){return\"number\"==typeof e||\"bigint\"==typeof e}tc.DataGrid=class{currentPage=0;sorting={direction:\"UNSORTED\"};filters=[];oninit({attrs:e}){e.initialSorting&&(this.sorting=e.initialSorting),e.initialFilters&&(this.filters=e.initialFilters)}view({attrs:e}){const{columns:t,data:r,sorting:n=this.sorting,onSortingChanged:a=n===this.sorting?e=>this.sorting=e:E,filters:i=this.filters,onFiltersChanged:o=i===this.filters?e=>this.filters=e:E,cellRenderer:s=S,maxRowsPerPage:l=50,showFiltersInToolbar:c=!0,fillHeight:u=!1,showResetButton:d=!1,toolbarItemsLeft:p,toolbarItemsRight:f,className:h}=e;e=o===E?E:e=>{o(e),this.currentPage=0};const m=a===E?E:e=>{a(e),this.currentPage=0};let g;g=Array.isArray(r)?new C.InMemoryDataSource(r):r;var _=this.currentPage*l,y=l,_=(g.notifyUpdate({columns:t.map(e=>e.name),sorting:n,filters:i,pagination:{offset:_,limit:y},aggregates:t.filter(e=>e.aggregation).map(e=>({col:e.name,func:e.aggregation}))}),g.rows?.totalRows??0),y=Math.max(1,Math.ceil(_/l));this.currentPage>=y&&0<y&&(this.currentPage=Math.max(0,y-1));const T=e===E?E:e=>o([...i,e]),v=m!==E,b=e!==E;return(0,A.default)(\".pf-data-grid\",{className:(0,I.classNames)(u&&\"pf-data-grid--fill-height\",h)},this.renderTableToolbar(y,_,i,n,m,e,l,c,d,p,f),(0,A.default)(w.LinearProgress,{className:\"pf-data-grid__loading\",state:g.isLoading?\"indeterminate\":\"none\"}),(0,A.default)(k.Grid,{className:\"pf-data-grid__table\"},[(0,A.default)(k.GridHeader,(0,A.default)(k.GridRow,t.map(t=>{var e=(()=>{if(\"UNSORTED\"!==n.direction&&n.column===t.name)return n.direction})(),r=[];return v&&r.push((0,k.renderSortMenuItems)(e,e=>{e?m({column:t.name,direction:e}):m({direction:\"UNSORTED\"})})),b&&v&&0<r.length&&r.push((0,A.default)(O.MenuDivider)),b&&r.push((0,A.default)(O.MenuItem,{label:\"Filter out nulls\",onclick:()=>{T({column:t.name,op:\"is not null\"})}}),(0,A.default)(O.MenuItem,{label:\"Only show nulls\",onclick:()=>{T({column:t.name,op:\"is null\"})}})),(0,A.default)(k.GridHeaderCell,{sort:e,onSort:v?e=>{m({column:t.name,direction:e})}:void 0,menuItems:0<r.length?r:void 0,aggregation:t.aggregation&&g.rows?.aggregates&&{left:(0,A.default)(\"span\",{title:t.aggregation},function(e){switch(e){case\"SUM\":return\"Σ\";case\"COUNT\":return\"#\";case\"AVG\":return\"⌀\";case\"MIN\":return\"↓\";case\"MAX\":return\"↑\";default:throw new Error(\"Unknown aggregation function: \"+e)}}(t.aggregation)),right:s(g.rows.aggregates[t.name],t.name,g.rows.aggregates)}},t.title??t.name)}))),g.rows&&(0,A.default)(k.GridBody,this.renderTableBody(t,g.rows,i,e,s,l))]))}renderTableToolbar(e,t,r,n,a,i,o,s,l,c,u){if(1!==e||0!==r.length||Boolean(c)||Boolean(u)||!1!==l)return(0,A.default)(g.Box,{className:\"pf-data-grid__toolbar\",spacing:\"small\"},[(0,A.default)(m.Stack,{orientation:\"horizontal\",spacing:\"small\"},[c,l&&(0,A.default)(d.Button,{icon:h.Icons.ResetState,label:\"Reset\",disabled:0===r.length&&\"UNSORTED\"===n.direction,title:\"Reset grid state\",onclick:()=>{a({direction:\"UNSORTED\"}),i([])}}),(0,A.default)(m.StackAuto,[s&&(0,A.default)(m.Stack,{orientation:\"horizontal\",wrap:!0},[r.map(t=>(0,A.default)(f.Chip,{label:this.formatFilter(t),removable:!0,onRemove:()=>{var e=r.filter(e=>e!==t);this.filters=e,i(e),this.currentPage=0}}))])]),(0,A.default)(k.PageControl,{from:this.currentPage*o+1,to:Math.min((this.currentPage+1)*o,t),of:t,firstPageClick:()=>{0!==this.currentPage&&(this.currentPage=0)},prevPageClick:()=>{0<this.currentPage&&--this.currentPage},nextPageClick:()=>{this.currentPage<e-1&&(this.currentPage+=1)},lastPageClick:()=>{this.currentPage<e-1&&(this.currentPage=Math.max(0,e-1))}}),u])])}formatFilter(e){return\"value\"in e?`${e.column} ${e.op} `+e.value:e.column+\" \"+e.op}renderTableBody(t,e,r,n,a,i){const{rows:o,totalRows:s,rowOffset:l}=e,c=this.currentPage*i;e=Math.min(c+i,s),i=Math.max(0,e-c);const u=n!==E;e=Array.from({length:i},(e,t)=>c+t);const d=e=>n([...r,e]);return e.map(e=>{e-=l;const n=0<=e&&e<o.length?o[e]:void 0;if(n)return(0,A.default)(k.GridRow,t.map(e=>{const t=n[e.name];var r=[];return u&&(null!==t&&r.push((0,A.default)(O.MenuItem,{label:\"Filter equal to this\",onclick:()=>{d({column:e.name,op:\"=\",value:t})}}),(0,A.default)(O.MenuItem,{label:\"Filter not equal to this\",onclick:()=>{d({column:e.name,op:\"!=\",value:t})}})),p(t)&&r.push((0,A.default)(O.MenuItem,{label:\"Filter greater than this\",onclick:()=>{d({column:e.name,op:\">\",value:t})}}),(0,A.default)(O.MenuItem,{label:\"Filter greater than or equal to this\",onclick:()=>{d({column:e.name,op:\">=\",value:t})}}),(0,A.default)(O.MenuItem,{label:\"Filter less than this\",onclick:()=>{d({column:e.name,op:\"<\",value:t})}}),(0,A.default)(O.MenuItem,{label:\"Filter less than or equal to this\",onclick:()=>{d({column:e.name,op:\"<=\",value:t})}})),null===t)&&r.push((0,A.default)(O.MenuItem,{label:\"Filter out nulls\",onclick:()=>{d({column:e.name,op:\"is not null\"})}}),(0,A.default)(O.MenuItem,{label:\"Only show nulls\",onclick:()=>{d({column:e.name,op:\"is null\"})}})),(0,A.default)(k.GridDataCell,{menuItems:0<r.length?r:void 0,align:p(t)?\"right\":null===t?\"center\":\"left\",isMissing:null===t},a(t,e.name,n))}))})}}}return tc}function Rc(){if(!Ac){Ac=1,Object.defineProperty(Wl,\"__esModule\",{value:!0}),Wl.QueryTable=void 0,Wl.isSliceish=i,Wl.getSliceId=o;const s=Jr.__importDefault(xe()),n=bs(),a=Ml(),l=je(),c=Kl(),u=qe(),d=Xl(),p=Se(),f=Ae(),h=Ic(),m=pc(),g=Oe(),_=yc();function r(e){return\"bigint\"==typeof e||\"number\"==typeof e&&Number.isInteger(e)}function i(e){return\"ts\"in(t=e)&&r(t.ts)&&\"dur\"in(t=e)&&r(t.dur)&&\"track_id\"in(t=e)&&r(t.track_id);var t}function o(e){if(\"slice_id\"in(t=e)&&r(t.slice_id))return Number(e.slice_id);var t}Wl.QueryTable=class{trace;dataSource;constructor({attrs:e}){this.trace=e.trace,e.resp&&(this.dataSource=new m.InMemoryDataSource(e.resp.rows))}onbeforeupdate(e,t){e.attrs.resp!==t.attrs.resp&&(e.attrs.resp?this.dataSource=new m.InMemoryDataSource(e.attrs.resp.rows):this.dataSource=void 0)}view({attrs:e}){var{resp:e,query:t,contextButtons:r=[],fillParent:n}=e;return(0,s.default)(u.DetailsShell,{className:\"pf-query-table\",title:this.renderTitle(e),description:t,buttons:this.renderButtons(t,r,e),fillParent:n},e&&this.dataSource&&this.renderTableContent(e,this.dataSource))}renderTitle(e){return e?`Query result (${e.error?\"error\":e.rows.length+\" rows\"}) - ${e.durationMs.toLocaleString()}ms`:\"Query - running\"}renderButtons(e,t,r){return[t,(0,s.default)(p.PopupMenu,{trigger:(0,s.default)(l.Button,{label:\"Copy\",rightIcon:f.Icons.ContextMenu})},(0,s.default)(p.MenuItem,{label:\"Query\",onclick:()=>(0,n.copyToClipboard)(e)}),r&&void 0===r.error&&[(0,s.default)(p.MenuItem,{label:\"Result (.tsv)\",onclick:async()=>{var e=(0,a.formatAsDelimited)(r);await(0,n.copyToClipboard)(e)}}),(0,s.default)(p.MenuItem,{label:\"Result (.md)\",onclick:async()=>{var e=(0,a.formatAsMarkdownTable)(r);await(0,n.copyToClipboard)(e)}})])]}renderTableContent(e,t){return(0,s.default)(\".pf-query-panel\",1<e.statementWithOutputCount&&(0,s.default)(_.Box,[(0,s.default)(c.Callout,{icon:\"warning\"},[`${e.statementWithOutputCount} out of ${e.statementCount} `,\"statements returned a result. \",\"Only the results for the last statement are displayed.\"])]),this.renderContent(e,t))}renderContent(e,t){if(e.error)return(0,s.default)(\".pf-query-panel__query-error\",\"SQL error: \"+e.error);const a=\"/viewer\"===d.Router.parseUrl(window.location.href).page;return(0,s.default)(h.DataGrid,{fillHeight:!0,filters:[],columns:e.columns.map(e=>({name:e})),data:t,cellRenderer:(e,t,r)=>{const n=o(r);e=(0,h.renderCell)(e,t);return\"id\"===t&&void 0!==n&&a&&i(r)?(0,s.default)(g.Anchor,{title:\"Go to slice\",icon:f.Icons.UpdateSelection,onclick:()=>this.goToSlice(n,!1),ondblclick:()=>this.goToSlice(n,!0)},e):e}})}goToSlice(e,t){this.trace.selection.selectSqlEvent(\"slice\",e,{switchToCurrentSelectionTab:t,scrollToSelection:!0})}}}return Wl}function Nc(){if(Oc)return Rl;Oc=1,Object.defineProperty(Rl,\"__esModule\",{value:!0}),Rl.QueryResultTab=void 0,Rl.addQueryResultsTab=function(e,t,r){t=new u(e,t),r=\"queryResults#\"+(r??(0,n.v4)());e.tabs.registerTab({uri:r,content:t,isEphemeral:!0}),e.tabs.showTab(r)},Rl.uuidToViewName=d;const e=Jr.__importDefault(xe()),n=sn(),t=Pe(),r=Ml(),a=Ue(),i=ql(),o=je(),s=Se(),l=yi(),c=Rc();class u{trace;args;queryResponse;sqlViewName;constructor(e,t){this.trace=e,this.args=t,this.initTrack()}async initTrack(){if(void 0!==this.args.prefetchedResponse)this.queryResponse=this.args.prefetchedResponse;else{var e=await(0,r.runQueryForQueryTable)(this.args.query,this.trace.engine);if(void 0!==(this.queryResponse=e).error)return}this.sqlViewName=await this.createViewForDebugTrack((0,n.v4)())}getTitle(){var e=this.queryResponse?` (${this.queryResponse.rows.length})`:\"\";return this.args.title+e}render(){return(0,e.default)(c.QueryTable,{trace:this.trace,query:this.args.query,resp:this.queryResponse,fillParent:!0,contextButtons:[void 0===this.sqlViewName?null:(0,e.default)(s.PopupMenu,{trigger:(0,e.default)(o.Button,{label:\"Show debug track\"}),popupPosition:l.PopupPosition.Top},(0,e.default)(i.AddDebugTrackMenu,{trace:this.trace,query:\"select * from \"+this.sqlViewName,availableColumns:(0,t.assertExists)(this.queryResponse).columns}))]})}isLoading(){return void 0===this.queryResponse}async createViewForDebugTrack(e){var e=d(e),t=this.queryResponse&&void 0===this.queryResponse.error?this.queryResponse.lastStatementSql:this.args.query;try{if((await this.trace.engine.query(`create view ${e} as `+t)).error())return\"\"}catch(e){if(e instanceof a.QueryError)return\"\";throw e}return e}}function d(e){return\"view_\"+e.split(\"-\").join(\"_\")}return Rl.QueryResultTab=u,Rl}function Mc(){if(Cc)return Il;Cc=1,Object.defineProperty(Il,\"__esModule\",{value:!0}),Il.addJankCUJDebugTrack=r,Il.addLatencyCUJDebugTrack=async function(e,t,r){var r=function(e=[]){return u(e,s,l)}(r),n=await e.engine.query(r.data.sqlSource);return 0!==n.numRows()&&((0,a.addDebugSliceTrack)({trace:e,title:t,...r}),!0)};const a=Ol(),t=Nc();async function r(e,t,r){[r=[]]=[r];r=u(r,i,o);return 0!==(await e.engine.query(r.data.sqlSource)).numRows()&&((0,a.addDebugSliceTrack)({trace:e,title:t,...r}),!0)}const n=`\n  SELECT RUN_METRIC('android/android_jank_cuj.sql');\n  INCLUDE PERFETTO MODULE android.critical_blocking_calls;\n`;const i=`\n    SELECT\n      CASE\n        WHEN\n          EXISTS(\n              SELECT 1\n              FROM slice AS cuj_state_marker\n                     JOIN track marker_track\n                          ON marker_track.id = cuj_state_marker.track_id\n              WHERE\n                cuj_state_marker.ts >= cuj.ts\n                AND cuj_state_marker.ts + cuj_state_marker.dur <= cuj.ts + cuj.dur\n                AND\n                ( /* e.g. J<CUJ_NAME>#FT#cancel#0 this for backward compatibility */\n                      cuj_state_marker.name GLOB(cuj.name || '#FT#cancel*')\n                    OR (marker_track.name = cuj.name AND cuj_state_marker.name GLOB 'FT#cancel*')\n                  )\n            )\n          THEN ' ❌ '\n        WHEN\n          EXISTS(\n              SELECT 1\n              FROM slice AS cuj_state_marker\n                     JOIN track marker_track\n                          ON marker_track.id = cuj_state_marker.track_id\n              WHERE\n                cuj_state_marker.ts >= cuj.ts\n                AND cuj_state_marker.ts + cuj_state_marker.dur <= cuj.ts + cuj.dur\n                AND\n                ( /* e.g. J<CUJ_NAME>#FT#end#0 this for backward compatibility */\n                      cuj_state_marker.name GLOB(cuj.name || '#FT#end*')\n                    OR (marker_track.name = cuj.name AND cuj_state_marker.name GLOB 'FT#end*')\n                  )\n            )\n          THEN ' ✅ '\n        ELSE ' ❓ '\n        END || cuj.name AS name,\n      total_frames,\n      missed_app_frames,\n      missed_sf_frames,\n      sf_callback_missed_frames,\n      hwui_callback_missed_frames,\n      cuj_layer.layer_name,\n      /* Boundaries table doesn't contain ts and dur when a CUJ didn't complete successfully.\n        In that case we still want to show that it was canceled, so let's take the slice timestamps. */\n      CASE WHEN boundaries.ts IS NOT NULL THEN boundaries.ts ELSE cuj.ts END AS ts,\n      CASE WHEN boundaries.dur IS NOT NULL THEN boundaries.dur ELSE cuj.dur END AS dur,\n      cuj.track_id,\n      cuj.slice_id\n    FROM slice AS cuj\n           JOIN process_track AS pt ON cuj.track_id = pt.id\n           LEFT JOIN android_jank_cuj jc\n                     ON pt.upid = jc.upid AND cuj.name = jc.cuj_slice_name AND cuj.ts = jc.ts\n           LEFT JOIN android_jank_cuj_main_thread_cuj_boundary boundaries using (cuj_id)\n           LEFT JOIN android_jank_cuj_layer_name cuj_layer USING (cuj_id)\n           LEFT JOIN android_jank_cuj_counter_metrics USING (cuj_id)\n    WHERE cuj.name GLOB 'J<*>'\n      AND cuj.dur > 0\n`,o=[\"name\",\"total_frames\",\"missed_app_frames\",\"missed_sf_frames\",\"sf_callback_missed_frames\",\"hwui_callback_missed_frames\",\"layer_name\",\"ts\",\"dur\",\"track_id\",\"slice_id\"];const s=`\n    SELECT\n      CASE\n        WHEN\n          EXISTS(\n              SELECT 1\n              FROM slice AS cuj_state_marker\n                     JOIN track marker_track\n                          ON marker_track.id = cuj_state_marker.track_id\n              WHERE\n                cuj_state_marker.ts >= cuj.ts\n                AND cuj_state_marker.ts + cuj_state_marker.dur <= cuj.ts + cuj.dur\n                AND marker_track.name = cuj.name AND (\n                    cuj_state_marker.name GLOB 'cancel'\n                    OR cuj_state_marker.name GLOB 'timeout')\n            )\n          THEN ' ❌ '\n        ELSE ' ✅ '\n        END || cuj.name AS name,\n      cuj.dur / 1e6 as dur_ms,\n      cuj.ts,\n      cuj.dur,\n      cuj.track_id,\n      cuj.slice_id\n    FROM slice AS cuj\n           JOIN process_track AS pt\n                ON cuj.track_id = pt.id\n    WHERE cuj.name GLOB 'L<*>'\n      AND cuj.dur > 0\n`,l=[\"name\",\"dur_ms\",\"ts\",\"dur\",\"track_id\",\"slice_id\"],c=[\"slice_id\",\"name\",\"ts\",\"cuj_ts\",\"dur\",\"cuj_id\",\"cuj_name\",\"process_name\",\"upid\",\"utid\",\"table_name\"];function u(e=[],t,r){e=\"string\"==typeof e?[e]:e;return{data:{sqlSource:t+(0<e?.length?` AND cuj.name IN (${e.map(e=>`'L<${e}>','J<${e}>'`).join(\",\")})`:\"\"),columns:r},argColumns:r}}return Il.default=class{static id=\"com.android.AndroidCujs\";async onTraceLoad(e){e.commands.registerCommand({id:\"com.android.PinJankCUJs\",name:\"Add track: Android jank CUJs\",callback:async()=>{await this.pinJankCujs(e)}}),e.commands.registerCommand({id:\"com.android.ListJankCUJs\",name:\"Run query: Android jank CUJs\",callback:async()=>{await e.engine.query(n),(0,t.addQueryResultsTab)(e,{query:i,title:\"Android Jank CUJs\"})}}),e.commands.registerCommand({id:\"com.android.PinLatencyCUJs\",name:\"Add track: Android latency CUJs\",callback:async()=>{await this.pinLatencyCujs(e)}}),e.commands.registerCommand({id:\"com.android.ListLatencyCUJs\",name:\"Run query: Android Latency CUJs\",callback:()=>(0,t.addQueryResultsTab)(e,{query:s,title:\"Android Latency CUJs\"})}),e.commands.registerCommand({id:\"com.android.PinBlockingCalls\",name:\"Add track: Android Blocking calls during CUJs\",callback:()=>{e.engine.query(n).then(()=>(0,a.addDebugSliceTrack)({trace:e,data:{sqlSource:`\n    SELECT\n      s.id AS slice_id,\n      s.name,\n      max(s.ts, cuj.ts) AS ts,\n      min(s.ts + s.dur, cuj.ts_end) as ts_end,\n      min(s.ts + s.dur, cuj.ts_end) - max(s.ts, cuj.ts) AS dur,\n      cuj.cuj_id,\n      cuj.cuj_name,\n      s.process_name,\n      s.upid,\n      s.utid,\n      'slice' AS table_name\n    FROM _android_critical_blocking_calls s\n      JOIN  android_jank_cuj cuj\n      -- only when there is an overlap\n      ON s.ts + s.dur > cuj.ts AND s.ts < cuj.ts_end\n          -- and are from the same process\n          AND s.upid = cuj.upid\n`,columns:c},title:\"Blocking calls during CUJs\",argColumns:c}))}})}async pinJankCujs(e){await e.engine.query(n),await r(e,\"Jank CUJs\")}async pinLatencyCujs(e){(0,a.addDebugSliceTrack)({trace:e,data:{sqlSource:s,columns:l},title:\"Latency CUJs\"})}},Il}var Pc,Dc={};var xc,Lc={},Fc={};function $e(){return xc||(xc=1,Object.defineProperty(Fc,\"__esModule\",{value:!0}),Fc.ANDROID_LOGS_TRACK_KIND=Fc.COUNTER_TRACK_KIND=Fc.SLICE_TRACK_KIND=Fc.THREAD_STATE_TRACK_KIND=Fc.CPU_SLICE_TRACK_KIND=void 0,Fc.CPU_SLICE_TRACK_KIND=\"CpuSliceTrack\",Fc.THREAD_STATE_TRACK_KIND=\"ThreadStateTrack\",Fc.SLICE_TRACK_KIND=\"SliceTrack\",Fc.COUNTER_TRACK_KIND=\"CounterTrack\",Fc.ANDROID_LOGS_TRACK_KIND=\"AndroidLogTrack\"),Fc}var Uc,Bc,jc={},Hc={};function Gc(){if(!Uc){Uc=1,Object.defineProperty(Hc,\"__esModule\",{value:!0}),Hc.Cpu=void 0,Hc.maybeMachineLabel=function(e){e=e??0;return 0<e?` (machine ${e})`:\"\"};Hc.Cpu=class{ucpu;cpu;machine;constructor(e,t,r){this.ucpu=e,this.cpu=t,this.machine=r}maybeMachineLabel(){return 0<this.machine?` (machine ${this.machine})`:\"\"}toString(){return\"\"+this.cpu+this.maybeMachineLabel()}}}return Hc}function Vc(){if(!Bc){Bc=1,Object.defineProperty(jc,\"__esModule\",{value:!0});const c=Gc(),u=We(),d=Ue();function s(e){return\"/\"===e[0]?e.split(\"/\").slice(-1)[0]:e}function l(e,t){return e?s(e)+\" \"+t:\"Thread \"+t}jc.default=class{ctx;static id=\"dev.perfetto.ProcessThreadGroups\";processGroups=new Map;threadGroups=new Map;constructor(e){this.ctx=e}getGroupForProcess(e){return this.processGroups.get(e)}getGroupForThread(e){return this.threadGroups.get(e)}async onTraceLoad(e){await this.addKernelThreadGrouping(),await this.addProcessGroups(),await this.addThreadGroups(),e.onTraceReady.addListener(()=>{var e=e=>{e.hasChildren||e.remove()};this.processGroups.forEach(e),this.threadGroups.forEach(e)})}async addKernelThreadGrouping(){var e=(await this.ctx.engine.query(`\n      select\n        t.utid, p.upid, (case p.pid when 2 then 1 else 0 end) isKthreadd\n      from\n        thread t\n        join process p using (upid)\n        left join process parent on (p.parent_upid = parent.upid)\n        join\n          (select true from metadata m\n             where (m.name = 'system_name' and m.str_value = 'Linux')\n           union\n           select 1 from (select true from sched limit 1))\n      where\n        p.pid = 2 or parent.pid = 2\n      order by isKthreadd desc\n    `)).iter({utid:d.NUM,upid:d.NUM});if(e.valid()){var t=new u.TrackNode({name:\"Kernel threads\",uri:\"/kernel\",sortOrder:50,isSummary:!0});for(this.ctx.workspace.addChildInOrder(t);e.valid();e.next()){var r=e[\"utid\"],n=new u.TrackNode({uri:\"thread\"+r,name:\"Thread \"+r,isSummary:!0,headless:!0});t.addChildInOrder(n),this.threadGroups.set(r,n)}}}async addProcessGroups(){for(var e=(await this.ctx.engine.query(`\n      with processGroups as (\n        select\n          upid,\n          process.pid as pid,\n          process.name as processName,\n          sum_running_dur as sumRunningDur,\n          thread_slice_count + process_slice_count as sliceCount,\n          perf_sample_count as perfSampleCount,\n          instruments_sample_count as instrumentsSampleCount,\n          allocation_count as heapProfileAllocationCount,\n          graph_object_count as heapGraphObjectCount,\n          (\n            select group_concat(string_value)\n            from args\n            where\n              process.arg_set_id is not null and\n              arg_set_id = process.arg_set_id and\n              flat_key = 'chrome.process_label'\n          ) chromeProcessLabels,\n          case process.name\n            when 'Browser' then 3\n            when 'Gpu' then 2\n            when 'Renderer' then 1\n            else 0\n          end as chromeProcessRank,\n          ifnull(machine_id, 0) as machine\n        from _process_available_info_summary\n        join process using(upid)\n      ),\n      threadGroups as (\n        select\n          utid,\n          tid,\n          thread.name as threadName,\n          sum_running_dur as sumRunningDur,\n          slice_count as sliceCount,\n          perf_sample_count as perfSampleCount,\n          instruments_sample_count as instrumentsSampleCount,\n          ifnull(machine_id, 0) as machine\n        from _thread_available_info_summary\n        join thread using (utid)\n        where upid is null\n      )\n      select *\n      from (\n        select\n          'process' as kind,\n          upid as uid,\n          pid as id,\n          processName as name,\n          machine\n        from processGroups\n        order by\n          chromeProcessRank desc,\n          heapProfileAllocationCount desc,\n          heapGraphObjectCount desc,\n          perfSampleCount desc,\n          instrumentsSampleCount desc,\n          sumRunningDur desc,\n          sliceCount desc,\n          processName asc,\n          upid asc\n      )\n      union all\n      select *\n      from (\n        select\n          'thread' as kind,\n          utid as uid,\n          tid as id,\n          threadName as name,\n          machine\n        from threadGroups\n        order by\n          perfSampleCount desc,\n          instrumentsSampleCount desc,\n          sumRunningDur desc,\n          sliceCount desc,\n          threadName asc,\n          utid asc\n      )\n  `)).iter({kind:d.STR,uid:d.NUM,id:d.NUM,name:d.STR_NULL,machine:d.NUM});e.valid();e.next()){var{kind:t,uid:r,id:n,name:a}=e;if(\"process\"===t){if(!this.processGroups.has(r)){const o=(0,c.maybeMachineLabel)(e.machine);t=n;var i=(i=a??void 0)?s(i)+\" \"+t+o:\"Process \"+t+o,t=new u.TrackNode({uri:\"/process_\"+r,name:i,isSummary:!0,sortOrder:50});this.ctx.workspace.addChildInOrder(t),this.processGroups.set(r,t)}}else this.threadGroups.has(r)||(i=l(a??void 0,n),t=new u.TrackNode({uri:\"/thread_\"+r,name:i,isSummary:!0,sortOrder:50}),this.ctx.workspace.addChildInOrder(t),this.threadGroups.set(r,t))}}async addThreadGroups(){for(var e=(await this.ctx.engine.query(`\n      with threadGroups as (\n        select\n          utid,\n          upid,\n          tid,\n          thread.name as threadName,\n          CASE\n            WHEN thread.is_main_thread = 1 THEN 10\n            WHEN thread.name = 'CrBrowserMain' THEN 10\n            WHEN thread.name = 'CrRendererMain' THEN 10\n            WHEN thread.name = 'CrGpuMain' THEN 10\n            WHEN thread.name glob '*RenderThread*' THEN 9\n            WHEN thread.name glob '*GPU completion*' THEN 8\n            WHEN thread.name = 'Chrome_ChildIOThread' THEN 7\n            WHEN thread.name = 'Chrome_IOThread' THEN 7\n            WHEN thread.name = 'Compositor' THEN 6\n            WHEN thread.name = 'VizCompositorThread' THEN 6\n            ELSE 5\n          END as priority\n        from _thread_available_info_summary\n        join thread using (utid)\n        where upid is not null\n      )\n      select *\n      from (\n        select\n          utid,\n          upid,\n          tid,\n          threadName\n        from threadGroups\n        order by\n          priority desc,\n          tid asc\n      )\n  `)).iter({utid:d.NUM,tid:d.NUM,upid:d.NUM,threadName:d.STR_NULL});e.valid();e.next()){var{utid:t,tid:r,upid:n,threadName:a}=e;this.threadGroups.has(t)||(a=new u.TrackNode({uri:\"/thread_\"+t,name:l(a??void 0,r),isSummary:!0,headless:!0}),this.threadGroups.set(t,a),this.processGroups.get(n)?.addChildInOrder(a))}}}}return jc}var qc,zc={};function Wc(){if(!qc){qc=1,Object.defineProperty(zc,\"__esModule\",{value:!0});const r=We();function e(e,t=!0){return new r.TrackNode({name:e,isSummary:!0,collapsed:t})}zc.default=class{static id=\"dev.perfetto.StandardGroups\";groups={USER_INTERACTION:e(\"User Interaction\",!1),THERMALS:e(\"Thermals\"),POWER:e(\"Power\"),CPU:e(\"CPU\"),GPU:e(\"GPU\"),HARDWARE:e(\"Hardware\"),IO:e(\"IO\"),MEMORY:e(\"Memory\"),NETWORK:e(\"Network\"),DEVICE_STATE:e(\"Device State\"),SYSTEM:e(\"System\"),KERNEL:e(\"Kernel\"),HYPERVISOR:e(\"Hypervisor\")};async onTraceLoad(){}getOrCreateStandardGroup(e,t){t=this.groups[t];return void 0===t.parent&&e.addChildInOrder(t),t}}}return zc}var $c,Kc={},Yc={},Jc={};function Qc(){if(!$c){$c=1,Object.defineProperty(Jc,\"__esModule\",{value:!0}),Jc.AsyncLimiter=void 0;const r=Ja();Jc.AsyncLimiter=class{taskQueue=[];isRunning=!1;schedule(e){var t=(0,r.defer)();return this.taskQueue.push({work:e,deferred:t}),this.isRunning||(this.isRunning=!0,this.runTaskQueue().finally(()=>this.isRunning=!1)),t}async runTaskQueue(){for(var t;t=this.taskQueue.shift();)if(0<this.taskQueue.length)t.deferred.resolve();else try{await t.work(),t.deferred.resolve()}catch(e){t.deferred.reject(e)}}}}return Jc}var Zc,Xc={};function eu(){if(!Zc){Zc=1,Object.defineProperty(Xc,\"__esModule\",{value:!0}),Xc.areaSelectionsEqual=function(e,t){return e.start===t.start&&e.end===t.end&&!!(0,r.arrayEquals)(e.trackUris,t.trackUris)};const r=Hi()}return Xc}var tu,ru={};function nu(){if(!tu){tu=1,Object.defineProperty(ru,\"__esModule\",{value:!0}),ru.EmptyState=void 0;const i=Jr.__importDefault(xe()),o=be(),s=Ee(),l=Ae();ru.EmptyState=class{view({attrs:e,children:t}){var{icon:e=l.Icons.Search,title:r,className:n,fillHeight:a}=e;return(0,i.default)(\".pf-empty-state\",{className:(0,o.classNames)(n,a&&\"pf-empty-state--fill-height\")},(0,i.default)(s.Icon,{className:\"pf-empty-state__main-icon\",icon:e}),r&&(0,i.default)(\".pf-empty-state__title\",r),(0,i.default)(\".pf-empty-state__content\",t))}}}return ru}var au,iu={};var ou,su,lu={};function cu(){if(!ou){ou=1,Object.defineProperty(lu,\"__esModule\",{value:!0}),lu.SQLDataSource=void 0;var e=Qc();const r=Ue(),n=Ml(),p=dc();function a(e){switch(e.op){case\"=\":case\"!=\":case\"<\":case\"<=\":case\">\":case\">=\":return`${e.column} ${e.op} `+t(e.value);case\"glob\":return e.column+\" GLOB \"+t(e.value);case\"is null\":return e.column+\" IS NULL\";case\"is not null\":return e.column+\" IS NOT NULL\";default:return\"1=1\"}}function t(e){return\"string\"==typeof e?`'${e.replace(/'/g,\"''\")}'`:\"number\"==typeof e||\"bigint\"==typeof e?e.toString():\"boolean\"==typeof e?e?\"1\":\"0\":`'${String(e)}'`}lu.SQLDataSource=class{engine;limiter=new e.AsyncLimiter;baseQuery;workingQuery=\"\";pagination;aggregates;cachedResult;isLoadingFlag=!1;constructor(e,t){this.engine=e,this.baseQuery=t}get rows(){return this.cachedResult}get isLoading(){return this.isLoadingFlag}notifyUpdate({columns:s,sorting:l={direction:\"UNSORTED\"},filters:c=[],pagination:u,aggregates:d}){this.limiter.schedule(async()=>{this.isLoadingFlag=!0;try{var e,t,r,n,a=this.buildWorkingQuery(s,c,l);a!==this.workingQuery&&(this.workingQuery=a,this.cachedResult=void 0,this.pagination=void 0,this.aggregates=void 0,e=await this.getRowCount(a),this.cachedResult={rowOffset:0,totalRows:e,rows:[],aggregates:{}}),(0,p.areAggregateArraysEqual)(this.aggregates,d)||(this.aggregates=d)&&(t=await this.getAggregates(a,d),this.cachedResult={...this.cachedResult,aggregates:t}),i=this.pagination,o=u,!i&&!o||i&&o&&i.limit===o.limit&&i.offset===o.offset||(this.pagination=u,{offset:r,rows:n}=await this.getRows(a,u),this.cachedResult={...this.cachedResult,rowOffset:r,rows:n})}finally{this.isLoadingFlag=!1}var i,o})}buildWorkingQuery(e,t,r){let n=`\nSELECT ${(e??[\"*\"]).join()} FROM (${this.baseQuery})`;return 0<t.length&&(e=t.map(a).join(\" AND \"),n+=`\nWHERE `+e),\"UNSORTED\"!==r.direction&&({column:t,direction:e}=r,n+=`\nORDER BY ${t} `+e.toUpperCase()),n}async getRowCount(e){return(await this.engine.query(`\n      WITH data AS (${e})\n      SELECT COUNT(*) AS total_count\n      FROM data\n    `)).firstRow({total_count:r.NUM}).total_count}async getAggregates(e,t){e=`\n      WITH data AS (${e})\n      SELECT\n        ${t.map(e=>`${e.func}(${e.col}) AS `+e.col)}\n      FROM data\n    `;return(await(0,n.runQueryForQueryTable)(e,this.engine)).rows[0]}async getRows(e,t){let r=`\n      WITH data AS (${e})\n      SELECT *\n      FROM data\n    `;t&&(r+=`LIMIT ${t.limit} OFFSET `+t.offset);e=await(0,n.runQueryForQueryTable)(r,this.engine);return{offset:t?.offset??0,rows:e.rows}}}}return lu}function uu(){if(!su){su=1,Object.defineProperty(Yc,\"__esModule\",{value:!0}),Yc.selectTracksAndGetDataset=function(e,t,r){e=e.filter(e=>void 0===r||e.tags?.kind===r).map(e=>e.renderer.getDataset?.()).filter(n.exists).filter(e=>e.implements(t));if(0<e.length)return new a.UnionDataset(e).optimize()},Yc.createIITable=async function(e,t,r,n){var a={stack:[],error:void 0,hasError:!1};try{var i,o,s=d.Time.durationBetween(r,n);return s<=0n?(0,_.createPerfettoTable)({engine:e,as:`\n        SELECT * \n        FROM (${t.query()})\n        LIMIT 0\n      `}):(i=l.__addDisposableResource(a,await(0,_.createPerfettoTable)({engine:e,as:`\n      WITH slices AS (${t.query()})\n      SELECT * FROM slices\n      WHERE dur >= 0\n      ORDER BY id\n    `}),!0),o=Object.keys(t.schema).filter(e=>\"dur\"!==e&&\"ts\"!==e),await e.query(\"INCLUDE PERFETTO MODULE intervals.intersect\"),await(0,_.createPerfettoTable)({engine:e,as:`\n      SELECT\n        ${o.map(e=>\"slices.\"+e).join()},\n        ii.dur AS dur,\n        ii.ts AS ts\n      FROM _interval_intersect_single!(\n        ${r},\n        ${s},\n        ${i.name}\n      ) AS ii\n      JOIN ${i.name} AS slices USING (id)\n    `}))}catch(e){a.error=e,a.hasError=!0}finally{n=l.__disposeResources(a);n&&await n}},Yc.createAggregationTab=function(t,r,e=0){const n=new u.AsyncLimiter;let a,i,o,s;return{id:r.id,name:r.getTabName(),priority:e,render(e){if(void 0!==a&&(0,p.areaSelectionsEqual)(e,a)||(a=e,i=r.probe(e),n.schedule(async()=>{var e;s=void 0,o=void 0,i&&(e=await i?.prepareData(t.engine),s=new g.SQLDataSource(t.engine,e.tableName),o=e.barChartData)})),i)return s?(e=r.Panel??m.AggregationPanel,{isLoading:!1,content:(0,c.default)(e,{key:r.id,dataSource:s,columns:r.getColumnDefinitions(),sorting:r.getDefaultSorting(),barChartData:o})}):{isLoading:!0,content:(0,c.default)(f.EmptyState,{icon:\"mediation\",title:\"Computing aggregation ...\",className:\"pf-aggregation-loading\"},(0,c.default)(h.Spinner,{easing:!0}))}}}};const l=Jr,c=l.__importDefault(xe()),u=Qc(),d=Fe(),n=Me(),p=eu(),a=ze(),f=nu(),h=Ei(),m=function(){if(!au){au=1,Object.defineProperty(iu,\"__esModule\",{value:!0}),iu.AggregationPanel=void 0;const a=Jr.__importDefault(xe()),n=Fe(),i=yc(),o=mc(),s=Ic();iu.AggregationPanel=class{view({attrs:e}){var{dataSource:e,sorting:t,columns:r,barChartData:n}=e;return(0,a.default)(o.Stack,{fillHeight:!0,spacing:\"none\"},[n&&(0,a.default)(o.StackFixed,(0,a.default)(i.Box,this.renderBarChart(n))),(0,a.default)(o.StackAuto,this.renderTable(e,t,r))])}renderTable(e,t,r){const n=new Map(r.map(e=>[e.columnId,e]));return(0,a.default)(s.DataGrid,{fillHeight:!0,showResetButton:!1,columns:r.map(e=>({name:e.columnId,title:e.title,aggregation:e.sum?\"SUM\":void 0})),data:e,initialSorting:t,cellRenderer:(e,t)=>{var r=n.get(t)?.formatHint;return this.renderCell(e,t,r)}})}renderBarChart(e){const r=e.reduce((e,t)=>e+t.value,0);return(0,a.default)(\".pf-aggregation-panel__bar-chart\",e.map(e=>{var t=e.value/r*100;return(0,a.default)(\".pf-aggregation-panel__bar-chart-bar\",{style:{background:e.color.base.cssString,color:e.color.textBase.cssString,borderColor:e.color.variant.cssString,width:t+\"%\"}},e.title)}))}renderCell(e,t,r){return\"DURATION_NS\"===r&&\"bigint\"==typeof e?(0,a.default)(\"span.pf-data-grid__cell--number\",n.Duration.humanise(e)):\"PERCENT\"===r&&\"number\"==typeof e?(0,a.default)(\"span.pf-data-grid__cell--number\",(100*e).toFixed(2)+\"%\"):(0,s.renderCell)(e,t)}}}return iu}(),g=cu(),_=De()}return Yc}var du,pu={},fu={};function hu(){if(!du){du=1,Object.defineProperty(fu,\"__esModule\",{value:!0}),fu.Monitor=void 0;fu.Monitor=class{reducers;cached;constructor(e){this.reducers=e,this.cached=e.map(()=>{})}ifStateChanged(e){const r=this.cached;var t=this.reducers.map(e=>e());return!!(this.cached=t).some((e,t)=>e!==r[t])&&(e?.(),!0)}}}return fu}var mu,gu={},_u={};function yu(){if(!mu){mu=1,Object.defineProperty(_u,\"__esModule\",{value:!0}),_u.TagInput=void 0;const d=Jr.__importDefault(xe()),p=Be(),f=_i(),h=oc(),m=mc();_u.TagInput=class{view({attrs:e}){const{value:t,onChange:i,tags:r,onTagAdd:n,onTagRemove:o,onfocus:a,onblur:s,placeholder:l,...c}=e,u=void 0!==t;return(0,d.default)(\".pf-tag-input\",{onclick:e=>{e=e.currentTarget,e=(0,f.findRef)(e,\"input\");e&&e.focus()},...c},(0,d.default)(m.Stack,{orientation:\"horizontal\",spacing:\"small\"},r.map((e,t)=>{return r=e,n=i,a=()=>o(t),(0,d.default)(h.Chip,{ondblclick:n?()=>{n(r),a()}:void 0,label:r,removable:!0,compact:!0,intent:p.Intent.Primary,onRemove:()=>a()});var r,n,a})),(0,d.default)(\"input\",{ref:\"input\",value:t,placeholder:l,onkeydown:e=>{var t;\"Enter\"===e.key?\"\"!==(t=e.target).value.trim()&&(n(t.value),u||(t.value=\"\")):\"Backspace\"===e.key&&\"\"===e.target.value&&0!==r.length&&(t=r.length-1,o(t))},oninput:e=>{e=e.target;i?.(e.value)},onfocus:a,onblur:s}))}}}return _u}var Tu,vu={};function bu(){if(!Tu){Tu=1,Object.defineProperty(vu,\"__esModule\",{value:!0}),vu.SegmentedButtons=void 0;const o=Jr.__importDefault(xe()),s=je();vu.SegmentedButtons=class{view({attrs:e}){const{options:t,selectedOption:r,disabled:n,onOptionSelected:a,...i}=e;return(0,o.default)(\".pf-segmented-buttons\",i,t.map((e,t)=>(0,o.default)(s.Button,{...e,disabled:n,active:t===r,onclick:()=>a(t)})))}}}return vu}var Eu,Su,Au,Ou,Cu={},wu={};function ku(){if(!Eu){Eu=1,Object.defineProperty(wu,\"__esModule\",{value:!0}),wu.VirtualCanvas=void 0;var e=Le();const d=gi();class t{_trash=new e.DisposableStack;_canvasElement;_targetElement;_canvasRect;_viewportLimits;_layoutShiftListener;_canvasResizeListener;_dpr;constructor(r,n,e){const{overdrawPx:a=200,tolerancePx:t=100,overdrawAxes:i=\"none\"}=e??{},o=a-t;const s=()=>{t=new d.Rect2D(n.getBoundingClientRect()),e=r.getBoundingClientRect();var e,t=t.intersect(e).reframe(e);return this._viewportLimits.contains(t)?this._canvasRect:(e=t.expand({height:\"both\"===i||\"y\"===i?a:0,width:\"both\"===i||\"x\"===i?a:0}),this._viewportLimits=t.expand({height:\"both\"===i||\"y\"===i?o:0,width:\"both\"===i||\"x\"===i?o:0}),e)},l=()=>{let e=!1;var t=s(),r=this._canvasRect;this._canvasRect=t,r.width===t.width&&r.height===t.height&&devicePixelRatio===this._dpr||(this._dpr=devicePixelRatio,u.style.width=t.width+\"px\",u.style.height=t.height+\"px\",this._canvasResizeListener?.(u,t.width,t.height),e=!0),r.left===t.left&&r.top===t.top||(u.style.transform=`translate(${t.left}px, ${t.top}px)`,e=!0),e&&this._layoutShiftListener?.(u,t)},c=(n.addEventListener(\"scroll\",l,{passive:!0}),this._trash.defer(()=>n.removeEventListener(\"scroll\",l)),new ResizeObserver(e=>{l()})),u=(c.observe(n),c.observe(r),this._trash.defer(()=>{c.disconnect()}),r.style.overflow=\"hidden\",document.createElement(\"canvas\"));u.style.position=\"absolute\",r.appendChild(u),this._trash.defer(()=>{r.removeChild(u)}),this._canvasElement=u,this._targetElement=r,this._canvasRect=new d.Rect2D({left:0,top:0,bottom:0,right:0}),this._viewportLimits=this._canvasRect}setLayoutShiftListener(e){this._layoutShiftListener=e}setCanvasResizeListener(e){this._canvasResizeListener=e}get canvasElement(){return this._canvasElement}get targetElement(){return this._targetElement}get size(){return{width:this._targetElement.clientWidth,height:this._targetElement.clientHeight}}get canvasRect(){return this._canvasRect}[Symbol.dispose](){this._trash.dispose()}overlapsCanvas(e){var t=this._canvasRect,r=e.top<t.bottom&&e.bottom>t.top;return e.left<t.right&&e.right>t.left&&r}}wu.VirtualCanvas=t}return wu}function Iu(){if(!Su){Su=1,Object.defineProperty(Cu,\"__esModule\",{value:!0}),Cu.VirtualOverlayCanvas=void 0;const a=Jr.__importDefault(xe());var e=Le();const i=_i(),o=Pe(),s=ku(),l=\"canvas-container\";Cu.VirtualOverlayCanvas=class{trash=new e.DisposableStack;ctx;virtualCanvas;attrs;view({attrs:e,children:t}){var{overflowX:r=\"visible\",overflowY:n=\"visible\"}=this.attrs=e;return(0,a.default)(\".pf-virtual-overlay-canvas\",{className:e.className,style:{overflowX:r,overflowY:n}},(0,a.default)(\".pf-virtual-overlay-canvas__content\",t,(0,a.default)(\".pf-virtual-overlay-canvas__canvas-container\",{ref:l})))}oncreate({attrs:e,dom:t}){var r=(0,i.toHTMLElement)((0,o.assertExists)((0,i.findRef)(t,l))),{overflowX:n=\"visible\",overflowY:a=\"visible\"}=e,a=new s.VirtualCanvas(r,t,{overdrawPx:300,tolerancePx:100,overdrawAxes:(r=a,\"auto\"===(t=n)&&\"auto\"===r?\"both\":\"auto\"===t?\"x\":\"auto\"===r?\"y\":\"none\")}),n=(this.trash.use(a),this.virtualCanvas=a,this.ctx=(0,o.assertExists)(a.canvasElement.getContext(\"2d\")),a.setCanvasResizeListener((e,t,r)=>{var n=window.devicePixelRatio;e.width=t*n,e.height=r*n}),a.setLayoutShiftListener(()=>{this.redrawCanvas()}),e.onMount?.(this.redrawCanvas.bind(this)));n&&this.trash.use(n),e.disableCanvasRedrawOnMithrilUpdates||this.redrawCanvas()}onupdate({attrs:e}){e.disableCanvasRedrawOnMithrilUpdates||this.redrawCanvas()}onremove(){this.trash.dispose()}redrawCanvas(){var e=(0,o.assertExists)(this.ctx),t=(0,o.assertExists)(this.virtualCanvas),r=(e.resetTransform(),e.clearRect(0,0,e.canvas.width,e.canvas.height),window.devicePixelRatio);e.scale(r,r),e.translate(-t.canvasRect.left,-t.canvasRect.top),(0,o.assertExists)(this.attrs).onCanvasRedraw?.({ctx:e,virtualCanvasSize:t.size,canvasRect:t.canvasRect})}}}return Cu}function Ru(){if(!Au){Au=1,Object.defineProperty(gu,\"__esModule\",{value:!0}),gu.Flamegraph=gu.FLAMEGRAPH_STATE_SCHEMA=void 0;const E=Jr.__importDefault(xe()),A=Pe();var e=hu();const O=je(),a=nu(),i=yi(),o=Bl(),s=Ei(),l=yu(),c=bu();var t=Ne();const u=Iu(),d=Se(),C=20,w=3;const p=`\nAvailable filters:\n- \"Show Stack: foo\" or \"SS: foo\" or \"foo\" to show only stacks containing \"foo\"\n- \"Hide Stack: foo\" or \"HS: foo\" to hide all stacks containing \"foo\"\n- \"Show From Frame: foo\" or \"SFF: foo\" to show frames containing \"foo\" and all descendants\n- \"Hide Frame: foo\" or \"HF: foo\" to hide all frames containing \"foo\"\n- \"Pivot: foo\" or \"P: foo\" to pivot on frames containing \"foo\".\nNote: Pivot applies after all other filters and only one pivot can be active at a time.\n\n`;var r=t.z.object({kind:t.z.union([t.z.literal(\"SHOW_STACK\").readonly(),t.z.literal(\"HIDE_STACK\").readonly(),t.z.literal(\"SHOW_FROM_FRAME\").readonly(),t.z.literal(\"HIDE_FRAME\").readonly(),t.z.literal(\"OPTIONS\").readonly()]).readonly(),filter:t.z.string().readonly()}).readonly(),n=t.z.discriminatedUnion(\"kind\",[t.z.object({kind:t.z.literal(\"TOP_DOWN\").readonly()}),t.z.object({kind:t.z.literal(\"BOTTOM_UP\").readonly()}),t.z.object({kind:t.z.literal(\"PIVOT\").readonly(),pivot:t.z.string().readonly()})]).readonly();gu.FLAMEGRAPH_STATE_SCHEMA=t.z.object({selectedMetricName:t.z.string().readonly(),filters:t.z.array(r).readonly(),view:n}).readonly();function S(e,t){return(0,A.assertTrue)(0!==e,\"Handling zooming root not possible in this function\"),0<e&&\"BELOW_ROOT\"===t.type||e<0&&\"ABOVE_ROOT\"===t.type}function _(e,t,{x:r,y:n,width:a}){return void 0!==e&&void 0!==t&&r<=e&&e<r+a&&n<=t&&t<n+C}function y(e,t){if(\"\"===t)return e.toLocaleString();if(0===e)return\"0 \"+t;let r,n;switch(t){case\"B\":r=1024,n=[\"B\",\"KiB\",\"MiB\",\"GiB\"];break;case\"ns\":r=1e3,n=[\"ns\",\"us\",\"ms\",\"s\"];break;default:r=1e3,n=[t,\"K\"+t,\"M\"+t,\"G\"+t]}var a=Math.min(Math.trunc(Math.log(e)/Math.log(r)),n.length-1),i=Math.pow(r,a),o=e/i;return(e%i==0?o.toString():o.toFixed(2))+\" \"+n[a]}function T(e,t){return 0===t?\"[NULL]%\":(e/t*100).toFixed(2)+\"%\"}function v(e,t){return{...e,filters:e.filters.concat([t])}}function b(t,e,r){if(e)return`hsl(0deg, 0%, ${r?85:80}%)`;if(\"unknown\"===t||\"root\"===t)return`hsl(0deg, 0%, ${r?78:73}%)`;let n=0;for(let e=0;e<t.length;++e)n+=t.charCodeAt(e)%64;return`hsl(${n%360}deg, 45%, ${r?78:73}%)`}gu.Flamegraph=class{attrs;rawFilterText=\"\";filterFocus=!1;dataChangeMonitor=new e.Monitor([()=>this.attrs.data]);zoomRegion;renderNodesMonitor=new e.Monitor([()=>this.attrs.data,()=>this.canvasWidth,()=>this.zoomRegion]);renderNodes;tooltipPos;lastClickedNode;hoveredX;hoveredY;canvasWidth=0;labelCharWidth=0;constructor({attrs:e}){this.attrs=e}view({attrs:e}){var t,r;return this.attrs=e,this.dataChangeMonitor.ifStateChanged()&&(this.zoomRegion=void 0,this.lastClickedNode=void 0,this.tooltipPos=void 0),void 0===e.data?(0,E.default)(\".pf-flamegraph\",this.renderFilterBar(e),(0,E.default)(\".loading-container\",(0,E.default)(a.EmptyState,{icon:\"bar_chart\",title:\"Computing graph ...\",className:\"flamegraph-loading\"},(0,E.default)(s.Spinner,{easing:!0})))):({minDepth:r,maxDepth:t}=e.data,t=Math.max(t-r+8,8)*C,r=this.renderNodes?.find(e=>_(this.hoveredX,this.hoveredY,e)),(0,E.default)(\".pf-flamegraph\",this.renderFilterBar(e),(0,E.default)(u.VirtualOverlayCanvas,{className:\"pf-virtual-canvas\",overflowX:\"hidden\",overflowY:\"auto\",onCanvasRedraw:({ctx:e,virtualCanvasSize:t,canvasRect:r})=>{this.drawCanvas(e,t,r)}},(0,E.default)(\"div\",{style:{height:t+\"px\",cursor:void 0===r?\"default\":\"pointer\"},onmousemove:({offsetX:t,offsetY:r})=>{var e;this.hoveredX=t,this.hoveredY=r,\"CLICK\"!==this.tooltipPos?.state&&(void 0===(e=this.renderNodes?.find(e=>_(t,r,e)))?this.tooltipPos=void 0:_(this.tooltipPos?.x,this.tooltipPos?.y,e)||(this.tooltipPos={x:t,y:e.y,source:e.source,state:\"HOVER\"}))},onmouseout:()=>{this.hoveredX=void 0,this.hoveredY=void 0,\"HOVER\"!==this.tooltipPos?.state&&\"DECLICK\"!==this.tooltipPos?.state||(this.tooltipPos=void 0)},onclick:({offsetX:t,offsetY:r})=>{var e=this.renderNodes?.find(e=>_(t,r,e));void 0===(this.lastClickedNode=e)?this.tooltipPos=void 0:_(this.tooltipPos?.x,this.tooltipPos?.y,e)?this.tooltipPos.state=\"CLICK\"===this.tooltipPos?.state?\"DECLICK\":\"CLICK\":this.tooltipPos={x:t,y:e.y,source:e.source,state:\"CLICK\"}},ondblclick:({offsetX:t,offsetY:r})=>{var e=this.renderNodes?.find(e=>_(t,r,e));\"MERGED\"!==e?.source.kind&&(this.zoomRegion=e?.source)}},(0,E.default)(i.Popup,{trigger:(0,E.default)(\".popup-anchor\",{style:{left:this.tooltipPos?.x+\"px\",top:this.tooltipPos?.y+\"px\"}}),fitContent:!0,position:i.PopupPosition.Bottom,isOpen:\"HOVER\"===this.tooltipPos?.state||\"CLICK\"===this.tooltipPos?.state,className:\"pf-flamegraph-tooltip-popup\",offset:C},this.renderTooltip())))))}static createDefaultState(e){return{selectedMetricName:e[0].name,filters:[],view:{kind:\"TOP_DOWN\"}}}drawCanvas(t,e,r){if(this.canvasWidth=e.width,this.renderNodesMonitor.ifStateChanged()&&(void 0===this.attrs.data?(this.renderNodes=void 0,this.lastClickedNode=void 0):(this.renderNodes=function({nodes:t,allRootsCumulativeValue:r,minDepth:n},a,i){var o=[],s=new Map,l=new Map,c=(o.push({x:0,y:-n*C,width:i,source:{kind:\"ROOT\",queryXStart:0,queryXEnd:r,type:\"ROOT\"},state:0===a.queryXStart&&a.queryXEnd===r?\"NORMAL\":\"PARTIAL\"}),a.queryXEnd-a.queryXStart);for(let e=0;e<t.length;e++){var u,d,p,f,h,m,g,{id:_,parentId:y,depth:T,xStart:v,xEnd:b}=t[e],E=((0,A.assertTrue)(0!==T),S(T,a));E&&(b<=a.queryXStart||v>=a.queryXEnd)||(m=E?c/i:r/i,u=E?v-a.queryXStart:v,p=(E?b-a.queryXStart:b)-u,u=Math.max(0,u)/m,d=C*(T-n),p=E?Math.min(p,c)/m:p/m,E=function(e,t,r,n){if(n){if(e===r.queryXStart&&t===r.queryXEnd)return\"SELECTED\";if(e<r.queryXStart||t>r.queryXEnd)return\"PARTIAL\"}return\"NORMAL\"}(v,b,a,E),p<w?(_=_+\"_\"+(0<T?T+1:T-1),void 0!==(g=l.get(f=y+\"_\"+T))?(h=o[g],m=S(T,a)?Math.min(b-h.source.queryXStart,c)/m:(b-h.source.queryXStart)/m,o[g]={...h,width:Math.max(m,w),source:{...h.source,queryXEnd:b}},s.set(_,h.x)):(g=s.get(y+\"_\"+T)??u,o.push({x:g,y:d,width:Math.max(p,w),source:{kind:\"MERGED\",queryXStart:v,queryXEnd:b,type:0<T?\"BELOW_ROOT\":\"ABOVE_ROOT\"},state:E}),l.set(f,o.length-1),s.set(_,g))):o.push({x:u,y:d,width:p,source:{kind:\"NODE\",queryXStart:v,queryXEnd:b,queryIdx:e,type:0<T?\"BELOW_ROOT\":\"ABOVE_ROOT\"},state:E}))}return o}(this.attrs.data,this.zoomRegion??{queryXStart:0,queryXEnd:this.attrs.data.allRootsCumulativeValue,type:\"ROOT\"},e.width),this.lastClickedNode=this.renderNodes?.find(e=>_(this.lastClickedNode?.x,this.lastClickedNode?.y,e))),this.tooltipPos=void 0),void 0!==this.attrs.data&&void 0!==this.renderNodes){var n=r.top,a=r.bottom,{allRootsCumulativeValue:i,unfilteredCumulativeValue:o,nodes:s}=this.attrs.data,l=(0,A.assertExists)(this.selectedMetric).unit;t.font=\"12px Roboto\",t.textBaseline=\"middle\",t.strokeStyle=\"white\",t.lineWidth=.5,0===this.labelCharWidth&&(this.labelCharWidth=t.measureText(\"_\").width);for(let e=0;e<this.renderNodes.length;e++){var c=this.renderNodes[e],{x:u,y:d,width:p,source:f,state:h}=c;if(!(d+C<=n||a<=d)){var m,c=_(this.hoveredX,this.hoveredY,c);let e;\"ROOT\"===f.kind?(g=y(i,l),m=T(i,o),e=`root: ${g} (${m})`,t.fillStyle=b(\"root\",\"PARTIAL\"===h,c)):\"MERGED\"===f.kind?(e=\"(merged)\",t.fillStyle=b(e,\"PARTIAL\"===h,!1)):(e=s[f.queryIdx].name,t.fillStyle=b(e,\"PARTIAL\"===h,c)),t.fillRect(u,d,p-1,C-1);var g=p-10;5<=g&&(t.fillStyle=\"black\",t.fillText(e.substring(0,g/this.labelCharWidth),u+5,d+(C-1)/2,g)),this.lastClickedNode?.x===u&&this.lastClickedNode?.y===d&&(t.strokeStyle=\"blue\",t.lineWidth=2,t.beginPath(),t.moveTo(u,d),t.lineTo(u+p,d),t.lineTo(u+p,d+C-1),t.lineTo(u,d+C-1),t.lineTo(u,d),t.stroke(),t.strokeStyle=\"white\",t.lineWidth=.5)}}}}renderFilterBar(t){const r=this;return(0,E.default)(\".filter-bar\",(0,E.default)(o.Select,{value:t.state.selectedMetricName,onchange:e=>{e=e.target;t.onStateChange({...r.attrs.state,selectedMetricName:e.value})}},t.metrics.map(e=>(0,E.default)(\"option\",{value:e.name},e.name))),(0,E.default)(i.Popup,{trigger:(0,E.default)(l.TagInput,{tags:function(e){const t=e.filters.map(e=>{var t=e;switch(t.kind){case\"HIDE_FRAME\":return\"Hide Frame: \"+t.filter;case\"HIDE_STACK\":return\"Hide Stack: \"+t.filter;case\"SHOW_FROM_FRAME\":return\"Show From Frame: \"+t.filter;case\"SHOW_STACK\":return\"Show Stack: \"+t.filter;case\"OPTIONS\":return\"Options\"}});return t.concat(\"PIVOT\"===e.view.kind?[\"Pivot: \"+e.view.pivot]:[])}(r.attrs.state),value:this.rawFilterText,onChange:e=>{r.rawFilterText=e},onTagAdd:e=>{r.rawFilterText=\"\",r.attrs.onStateChange(function(e,t){var r=t.toLowerCase(),n=e=>e.substring(e.indexOf(\":\")+1).trim();{if(r.startsWith(\"ss:\")||r.startsWith(\"show stack:\"))return v(e,{kind:\"SHOW_STACK\",filter:n(t)});if(r.startsWith(\"hs:\")||r.startsWith(\"hide stack:\"))return v(e,{kind:\"HIDE_STACK\",filter:n(t)});if(r.startsWith(\"sff:\")||r.startsWith(\"show from frame:\"))return v(e,{kind:\"SHOW_FROM_FRAME\",filter:n(t)});if(r.startsWith(\"hf:\")||r.startsWith(\"hide frame:\"))return v(e,{kind:\"HIDE_FRAME\",filter:n(t)});if(r.startsWith(\"p:\")||r.startsWith(\"pivot:\"))return{...e,view:{kind:\"PIVOT\",pivot:n(t)}}}return v(e,{kind:\"SHOW_STACK\",filter:t.trim()})}(r.attrs.state,e))},onTagRemove(e){var t;e===r.attrs.state.filters.length?r.attrs.onStateChange({...r.attrs.state,view:{kind:\"TOP_DOWN\"}}):((t=Array.from(r.attrs.state.filters)).splice(e,1),r.attrs.onStateChange({...r.attrs.state,filters:t}))},onfocus(){r.filterFocus=!0},onblur(){r.filterFocus=!1},placeholder:\"Add filter...\"}),isOpen:r.filterFocus&&0===this.rawFilterText.length,position:i.PopupPosition.Bottom},(0,E.default)(\".pf-flamegraph-filter-bar-popup-content\",p.trim())),(0,E.default)(c.SegmentedButtons,{options:[{label:\"Top Down\"},{label:\"Bottom Up\"}],selectedOption:\"TOP_DOWN\"===this.attrs.state.view.kind?0:1,onOptionSelected:e=>{r.attrs.onStateChange({...this.attrs.state,view:{kind:0===e?\"TOP_DOWN\":\"BOTTOM_UP\"}})},disabled:\"PIVOT\"===this.attrs.state.view.kind}))}renderTooltip(){if(void 0!==this.tooltipPos){const c=this.tooltipPos[\"source\"];if(\"MERGED\"===c.kind)return(0,E.default)(\"div\",(0,E.default)(\".tooltip-bold-text\",\"(merged)\"),(0,E.default)(\".tooltip-text\",\"Nodes too small to show, please use filters\"));var{nodes:r,allRootsCumulativeValue:n,unfilteredCumulativeValue:a,nodeActions:i,rootActions:o}=(0,A.assertExists)(this.attrs.data),s=(0,A.assertExists)(this.selectedMetric)[\"unit\"];if(\"ROOT\"===c.kind){var l=y(n,s);const g=T(n,a);return(0,E.default)(\"div\",(0,E.default)(\".tooltip-bold-text\",\"root\"),(0,E.default)(\".tooltip-text-line\",(0,E.default)(\".tooltip-bold-text\",\"Cumulative:\"),(0,E.default)(\".tooltip-text\",l+\", \"+g),this.renderActionsMenu(o,new Map)))}n=c[\"queryIdx\"];const{name:u,cumulativeValue:d,selfValue:p,parentCumulativeValue:f,properties:h}=r[n],m=e=>{this.attrs.onStateChange(e),this.tooltipPos=void 0},g=T(d,a);l=T(p,a);let e=\"all: \"+g,t=\"all: \"+l;return void 0!==f&&(o=T(d,f),e+=\", parent: \"+o,r=T(p,f),t+=\", parent: \"+r),(0,E.default)(\"div\",(0,E.default)(\".tooltip-bold-text\",u),(0,E.default)(\".tooltip-text-line\",(0,E.default)(\".tooltip-bold-text\",\"Cumulative:\"),(0,E.default)(\".tooltip-text\",`${y(d,s)} (${e})`)),(0,E.default)(\".tooltip-text-line\",(0,E.default)(\".tooltip-bold-text\",\"Self:\"),(0,E.default)(\".tooltip-text\",`${y(p,s)} (${t})`)),Array.from(h,([,e])=>e.isVisible?(0,E.default)(\".tooltip-text-line\",(0,E.default)(\".tooltip-bold-text\",e.displayName+\":\"),(0,E.default)(\".tooltip-text\",e.value)):null),(0,E.default)(O.ButtonBar,{},(0,E.default)(O.Button,{label:\"Zoom\",onclick:()=>{this.zoomRegion=c}}),(0,E.default)(O.Button,{label:\"Show Stack\",onclick:()=>{m(v(this.attrs.state,{kind:\"SHOW_STACK\",filter:`^${u}$`}))}}),(0,E.default)(O.Button,{label:\"Hide Stack\",onclick:()=>{m(v(this.attrs.state,{kind:\"HIDE_STACK\",filter:`^${u}$`}))}}),(0,E.default)(O.Button,{label:\"Hide Frame\",onclick:()=>{m(v(this.attrs.state,{kind:\"HIDE_FRAME\",filter:`^${u}$`}))}}),(0,E.default)(O.Button,{label:\"Show From Frame\",onclick:()=>{m(v(this.attrs.state,{kind:\"SHOW_FROM_FRAME\",filter:`^${u}$`}))}}),(0,E.default)(O.Button,{label:\"Pivot\",onclick:()=>{m({...this.attrs.state,view:{kind:\"PIVOT\",pivot:`^${u}$`}})}}),this.renderActionsMenu(i,h)))}}get selectedMetric(){return this.attrs.metrics.find(e=>e.name===this.attrs.state.selectedMetricName)}renderActionsMenu(e,t){return 0===e.length?null:(0,E.default)(d.PopupMenu,{trigger:(0,E.default)(O.Button,{icon:\"menu\",compact:!0}),position:i.PopupPosition.Bottom},e.map(e=>this.renderMenuItem(e,t)))}renderMenuItem(e,t){return void 0!==e.subActions&&0<e.subActions.length?this.renderParentMenuItem(e,e.subActions,t):e.execute?this.renderExecutableMenuItem(e,t):this.renderDisabledMenuItem(e)}renderParentMenuItem(e,t,r){return(0,E.default)(d.MenuItem,{label:e.name},t.map(e=>this.renderMenuItem(e,r)))}renderExecutableMenuItem(t,r){return(0,E.default)(d.MenuItem,{label:t.name,onclick:()=>{var e=this.createReducedProperties(r);t.execute(e),this.tooltipPos=void 0}})}renderDisabledMenuItem(e){return(0,E.default)(d.MenuItem,{label:e.name,disabled:!0})}createReducedProperties(e){return new Map([...e].map(([e,{value:t}])=>[e,t]))}}}return gu}function Nu(){if(!Ou){Ou=1,Object.defineProperty(pu,\"__esModule\",{value:!0}),pu.QueryFlamegraph=void 0,pu.metricsFromTableOrSubquery=function(e,t,r,n,a,i){var o=[];for(var{name:s,unit:l,columnName:c}of t)o.push({name:s,unit:l,dependencySql:r,statement:`\n        select *, ${c} as value\n        from ${e}\n      `,unaggregatableProperties:n,aggregatableProperties:a,optionalActions:i});return o};const q=Jr,n=q.__importDefault(xe());var e=Qc();const z=Le(),a=Pe();var t=hu();const W=ln(),$=De(),K=Ue(),i=Ru(),Y=j();pu.QueryFlamegraph=class{trace;metrics;state;data;selMonitor=new t.Monitor([()=>this.state.state]);queryLimiter=new e.AsyncLimiter;constructor(e,t,r){this.trace=e,this.metrics=t,this.state=r}render(){if(this.selMonitor.ifStateChanged()){const e=(0,a.assertExists)(this.metrics.find(e=>this.state.state.selectedMetricName===e.name)),t=this.trace.engine,r=this.state;this.data=void 0,this.queryLimiter.schedule(async()=>{this.data=void 0,this.data=await async function(a,{dependencySql:i,statement:o,unaggregatableProperties:s,aggregatableProperties:l,optionalNodeActions:c,optionalRootActions:u},{filters:d,view:p}){var f={stack:[],error:void 0,hasError:!1};try{var h=d.filter(e=>\"SHOW_STACK\"===e.kind).map(e=>e.filter),m=d.filter(e=>\"HIDE_STACK\"===e.kind).map(e=>e.filter),g=d.filter(e=>\"SHOW_FROM_FRAME\"===e.kind).map(e=>e.filter),_=d.filter(e=>\"HIDE_FRAME\"===e.kind).map(e=>e.filter),y=[...h],T=(\"PIVOT\"===p.kind&&y.push(p.pivot),l??[]),v=T.map(e=>e.name),b=s??[],E=b.map(e=>e.name);const F=[\"name\",...E],U=t=>F.map(e=>`(IFNULL(${e}, '') like ${(0,Y.sqliteString)(function(e){if(e.startsWith(\"^\")&&e.endsWith(\"$\"))return e.slice(1,-1);return`%${e}%`}(t))} escape '\\\\')`);var S=0===y.length?\"0\":y.map((e,t)=>`((${U(e).join(\" OR \")}) << ${t})`).join(\" | \"),A=(1<<y.length)-1,O=0===m.length?\"false\":m.map(e=>U(e)).flat().join(\" OR \"),C=0===g.length?\"0\":g.map((e,t)=>`((${U(e).join(\" OR \")}) << ${t})`).join(\" | \"),w=(1<<g.length)-1,k=0===_.length?\"false\":_.map(e=>U(e)).flat().join(\" OR \"),j=function(e,t){return\"PIVOT\"!==e.kind?\"BOTTOM_UP\"!==e.kind?\"0\":\"value > 0\":t(e.pivot).join(\" OR \")}(p,U),H=c??[],G=u??[],I=`(${(0===E.length?[\"groupingColumn\"]:E).join()})`,R=`(${(0===v.length?[\"groupedColumn\"]:v).join()})`,N=(void 0!==i&&await a.query(i),await a.query(\"include perfetto module viz.flamegraph;\"),(0,W.uuidv4Sql)()),M=q.__addDisposableResource(f,new z.AsyncDisposableStack,!0);M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_materialized_statement_\"+N,as:o})),M.use(await(0,$.createPerfettoIndex)({engine:a,name:`_flamegraph_materialized_statement_${N}_index`,on:`_flamegraph_materialized_statement_${N}(parentId)`})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_source_\"+N,as:`\n        select *\n        from _viz_flamegraph_prepare_filter!(\n          (\n            select\n              s.id,\n              s.parentId,\n              s.name,\n              s.value,\n              ${(0===E.length?[\"'' as groupingColumn\"]:E.map(e=>\"s.\"+e)).join()},\n              ${(0===v.length?[\"'' as groupedColumn\"]:v.map(e=>\"s.\"+e)).join()}\n            from _flamegraph_materialized_statement_${N} s\n          ),\n          (${S}),\n          (${O}),\n          (${C}),\n          (${k}),\n          (${j}),\n          ${1<<y.length},\n          ${I}\n        )\n      `})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_filtered_\"+N,as:`\n        select *\n        from _viz_flamegraph_filter_frames!(\n          _flamegraph_source_${N},\n          ${w}\n        )\n      `})),M.use(await(0,$.createPerfettoIndex)({engine:a,name:`_flamegraph_filtered_${N}_index`,on:`_flamegraph_filtered_${N}(parentId)`})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_accumulated_\"+N,as:`\n        select *\n        from _viz_flamegraph_accumulate!(\n          _flamegraph_filtered_${N},\n          ${A}\n        )\n      `})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_hash_\"+N,as:`\n        select *\n        from _viz_flamegraph_downwards_hash!(\n          _flamegraph_source_${N},\n          _flamegraph_filtered_${N},\n          _flamegraph_accumulated_${N},\n          ${I},\n          ${R},\n          ${\"BOTTOM_UP\"===p.kind?\"FALSE\":\"TRUE\"}\n        )\n        union all\n        select *\n        from _viz_flamegraph_upwards_hash!(\n          _flamegraph_source_${N},\n          _flamegraph_filtered_${N},\n          _flamegraph_accumulated_${N},\n          ${I},\n          ${R}\n        )\n        order by hash\n      `})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_merged_\"+N,as:`\n        select *\n        from _viz_flamegraph_merge_hashes!(\n          _flamegraph_hash_${N},\n          ${I},\n          ${function(e){return`(${0===e.length?\"groupedColumn\":e.map(e=>{var t=e;switch(t.mergeAggregation){case\"ONE_OR_SUMMARY\":return`\n          ${t.name} || IIF(\n            COUNT() = 1,\n            '',\n            ' ' || ' and ' || cast_string!(COUNT(DISTINCT ${t.name})) || ' others'\n          ) AS ${t.name}\n        `;case\"SUM\":return`SUM(${t.name}) AS `+t.name;case\"CONCAT_WITH_COMMA\":return`GROUP_CONCAT(${t.name}, ',') AS `+t.name}}).join(\",\")})`}(T)}\n        )\n      `})),M.use(await(0,$.createPerfettoIndex)({engine:a,name:`_flamegraph_merged_${N}_index`,on:`_flamegraph_merged_${N}(parentId)`})),M.use(await(0,$.createPerfettoTable)({engine:a,name:\"_flamegraph_layout_\"+N,as:`\n        select *\n        from _viz_flamegraph_local_layout!(\n          _flamegraph_merged_${N}\n        );\n      `}));var P=(await a.query(`\n    select *\n    from _viz_flamegraph_global_layout!(\n      _flamegraph_merged_${N},\n      _flamegraph_layout_${N},\n      ${I},\n      ${R}\n    )\n  `)).iter({id:K.NUM,parentId:K.NUM,depth:K.NUM,name:K.STR,selfValue:K.NUM,cumulativeValue:K.NUM,parentCumulativeValue:K.NUM_NULL,xStart:K.NUM,xEnd:K.NUM,...Object.fromEntries(E.map(e=>[e,K.STR_NULL])),...Object.fromEntries(v.map(e=>[e,K.UNKNOWN]))});let e=0,t=0,r=0,n=0;for(var D=[];P.valid();P.next()){var x=new Map;for(const B of[...T,...b]){var L=P.get(B.name);null!==L&&x.set(B.name,{displayName:B.displayName,value:L,isVisible:B.isVisible??!0})}D.push({id:P.id,parentId:P.parentId,depth:P.depth,name:P.name,selfValue:P.selfValue,cumulativeValue:P.cumulativeValue,parentCumulativeValue:P.parentCumulativeValue??void 0,xStart:P.xStart,xEnd:P.xEnd,properties:x}),1===P.depth?e+=P.cumulativeValue:-1===P.depth&&(t+=P.cumulativeValue),r=Math.min(r,P.depth),n=Math.max(n,P.depth)}var V=(await a.query(\"select sum(value) v from _flamegraph_source_\"+N)).firstRow({v:K.NUM_NULL}).v??0;return{nodes:D,allRootsCumulativeValue:\"BOTTOM_UP\"===p.kind?t:e,unfilteredCumulativeValue:V,minDepth:r,maxDepth:n,nodeActions:H,rootActions:G}}catch(e){f.error=e,f.hasError=!0}finally{d=q.__disposeResources(f);d&&await d}}(t,e,r.state)})}return(0,n.default)(i.Flamegraph,{metrics:this.metrics,data:this.data,state:this.state.state,onStateChange:e=>{this.state.state=e}})}}}return pu}var Mu,Pu={};function Du(){if(!Mu){Mu=1,Object.defineProperty(Pu,\"__esModule\",{value:!0}),Pu.getTrackName=function(e){var{name:e,upid:t,utid:r,processName:n,threadName:a,pid:i,tid:o,userName:s,uid:l,kind:c,threadTrack:u,uidTrack:d,machine:p}=e,f=null!=e&&\"[NULL]\"!==e,h=null!=t,m=null!=r,g=null!=n,_=null!=a,y=null!=s,T=null!=o,v=null!=i,b=null!=l,E=void 0!==c,u=void 0!==u&&u,d=void 0!==d&&d,S=E?` (${c})`:\"\",p=(0,A.maybeMachineLabel)(p??void 0);{if(u&&f&&T)return e+` (${o})`;if(d&&f&&y)return e+` (${s})`;if(d&&f&&b)return e+\" \"+l;if(f&&!h&&!m)return\"\"+e+p;if(f)return\"\"+e;if(_&&T)return a+\" \"+o;if(T)return\"Thread \"+o;if(h&&v&&g)return n+\" \"+i+p;if(h&&v)return\"Process \"+i+p;if(h)return\"upid: \"+t+S;if(m)return\"utid: \"+r+S;if(b)return\"uid: \"+l+S;if(E)return\"Unnamed \"+c}return\"Unknown\"},Pu.getThreadOrProcUri=function(e,t){{if((0,n.exists)(e))return\"/process_\"+e;if((0,n.exists)(t))return\"/thread_\"+t;throw new Error(\"No upid or utid defined...\")}},Pu.getThreadUriPrefix=function(e,t){return(0,n.exists)(e)?`/process_${e}/thread_`+t:\"/thread_\"+t},Pu.getTimeSpanOfSelectionOrVisibleWindow=async function(e){var t=await e.selection.getTimeSpanOfSelection();return(0,n.exists)(t)?new r.TimeSpan(t.start,t.end):e.timeline.visibleWindow.toTimeSpan()};const r=Fe(),n=Me(),A=Gc()}return Pu}var xu,Lu={};function Fu(){var r,e;return xu||(xu=1,Object.defineProperty(Lu,\"__esModule\",{value:!0}),Lu.escapeQuery=function(e){return t(e)},Lu.escapeSearchQuery=function(e){return t(e,r.CaseInsensitive|r.MatchAny)},Lu.escapeGlob=function(e){return`'*${e=e.replaceAll(\"'\",\"''\")}*'`},(e=r=r||{})[e.CaseInsensitive=1]=\"CaseInsensitive\",e[e.MatchAny=2]=\"MatchAny\"),Lu;function t(e,t){return t=void 0===t?0:t,e=(e=e.replaceAll(\"'\",\"''\")).replaceAll(\"[\",\"[[]\"),e=(e=(e=t&r.CaseInsensitive?e.replace(/[a-zA-Z]/g,e=>{return`[${e.toLowerCase()}${e.toUpperCase()}]`}):e).replaceAll(\"?\",\"[?]\")).replaceAll(\"*\",\"[*]\"),e=`'${e=t&r.MatchAny?`*${e}*`:e}'`}}var Uu,Bu={};var ju,Hu={};var Gu,Vu,qu={},zu={},Wu={},$u={};function Ku(){if(!Gu){Gu=1,Object.defineProperty($u,\"__esModule\",{value:!0}),$u.SqlExpression=void 0,$u.sqlColumnId=r,$u.isSqlColumnEqual=function(e,t){return r(e)===r(t)};const n=Hi();class a{op;columns;id;constructor(e,t,r){this.op=e,this.columns=t,this.id=r,this.op=e}}function r(e){var t;return\"string\"==typeof e?e:e instanceof a?void 0!==e.id?e.id:\"\"+e.op(e.columns.map(r)):(0,n.arrayEquals)(Object.keys(e.source.joinOn),[\"id\"])?`${e.source.table}[${r(Object.values(e.source.joinOn)[0])}].`+e.column:(t=Object.entries(e.source.joinOn).map(([e,t])=>{return e===r(t)?e:e+\"=\"+r(t)}).join(\", \"),e.source.table+`[${t}].`+e.column)}$u.SqlExpression=a}return $u}function Yu(){if(!Vu){Vu=1,Object.defineProperty(Wu,\"__esModule\",{value:!0}),Wu.tableColumnId=t,Wu.tableColumnAlias=function(e){return t(e).replace(/[^a-zA-Z0-9_]/g,\"__\")},Wu.columnTitle=function(e){if(void 0!==e.getTitle){var t=e.getTitle();if(void 0!==t)return t}return(0,r.sqlColumnId)(e.column)};const r=Ku();function t(e){return(0,r.sqlColumnId)(e.column)}}return Wu}var Ju,Qu,Zu={},Xu={};function ed(){if(!Ju){Ju=1,Object.defineProperty(Xu,\"__esModule\",{value:!0}),Xu.parseHotkey=o,Xu.formatHotkey=function(e,t){e=o(e);return e&&function({modifier:e,key:t},r){return\"\"+function(e,t){t=t||u(),t=\"Mac\"===t?n:a;return t.get(e)??e}(e,r)+t}(e,t)},Xu.checkHotkey=function(e,t,r){e=o(e);if(!e)return!1;var{key:n,allowInEditable:a}=e,{target:i=null}=t,i=(0,s.elementIsEditable)(i);return!(i&&!a)&&function(e,t){return e.key.toLowerCase()===t.toLowerCase()}(t,n)&&function(e,t,r){var r=r??u(),{key:t,modifier:n}=t,{ctrlKey:e=!1,altKey:a=!1,shiftKey:i=!1,metaKey:o=!1}=e,s=n.includes(\"Shift\"),l=n.includes(\"Alt\"),c=\"Mac\"===r?n.includes(\"Ctrl\"):n.includes(\"Ctrl\")||n.includes(\"Mod\"),r=\"Mac\"===r&&n.includes(\"Mod\"),n=d.includes(t)||i===s;return o===r&&Boolean(n)&&a===l&&e===c}(t,e,r)},Xu.getPlatform=u,Xu.hasModKey=function(e){return\"Mac\"===u()?e.metaKey:e.ctrlKey},Xu.modKey=function(){return\"Mac\"===u()?{metaKey:!0}:{ctrlKey:!0}};const s=_i(),d=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"/\",\"?\",\"!\",\"[\",\"]\",\".\",\",\"],n=new Map([[\"\",\"\"],[\"Mod+\",\"⌘\"],[\"Shift+\",\"⇧\"],[\"Ctrl+\",\"⌃\"],[\"Alt+\",\"⌥\"],[\"Mod+Shift+\",\"⌘⇧\"],[\"Mod+Alt+\",\"⌘⌥\"],[\"Mod+Shift+Alt+\",\"⌘⇧⌥\"],[\"Ctrl+Shift+\",\"⌃⇧\"],[\"Ctrl+Alt\",\"⌃⌥\"],[\"Ctrl+Shift+Alt\",\"⌃⇧⌥\"]]),a=new Map([[\"\",\"\"],[\"Mod+\",\"Ctrl+\"],[\"Mod+Shift+\",\"Ctrl+Shift+\"],[\"Mod+Alt+\",\"Ctrl+Alt+\"],[\"Mod+Shift+Alt+\",\"Ctrl+Shift+Alt+\"]]);function o(e){e=e.match(/^(!?)((?:Mod\\+|Shift\\+|Alt\\+|Ctrl\\+)*)(.*)$/);if(e)return{allowInEditable:\"!\"===e[1],modifier:e[2],key:e[3]}}function u(){return-1!==window.navigator.platform.indexOf(\"Mac\")?\"Mac\":\"PC\"}}return Xu}function td(){if(Qu)return Zu;Qu=1,Object.defineProperty(Zu,\"__esModule\",{value:!0}),Zu.SelectColumnMenu=void 0;const o=Jr.__importDefault(xe()),s=Yu(),l=Se(),t=K(),c=ln(),u=ed(),d=Vl(),p=Ei();function f(t,r){if(void 0!==r)return e=>{r(t),(0,u.hasModKey)(e)&&e.stopPropagation()}}class h{size;oncreate(e){this.size={width:e.dom.clientWidth,height:e.dom.clientHeight}}view({attrs:i}){return(0,o.default)(\".pf-sql-table__select-column-menu\",{style:{minWidth:this.size&&this.size.width+\"px\",minHeight:this.size&&this.size.height+\"px\"}},i.columns.map(({key:e,column:t},r)=>{const n=t.listDerivedColumns?.(i.manager);var a=void 0===n?i.columnMenu?.(t):void 0;return(0,o.default)(l.MenuItem,{id:0===r?i.firstButtonUuid:void 0,label:e,rightIcon:a?.rightIcon,onclick:void 0===n?f(t,i.onColumnSelected):void 0},void 0!==n&&(0,o.default)(m,{primaryColumn:{key:e,column:t},existingColumnIds:i.existingColumnIds,onColumnSelected:i.onColumnSelected,columnMenu:i.columnMenu,manager:i.manager,columns:async()=>{return[...(await n()).entries()].map(([e,t])=>({key:e,column:t}))}}),a?.children)}))}}class m{searchText=\"\";columns;constructor(e){Array.isArray(e.attrs.columns)?this.columns=e.attrs.columns:e.attrs.columns().then(e=>{this.columns=e,t.raf.scheduleFullRedraw()})}view(e){var t=this.columns||[];const r=e[\"attrs\"];e=[...t].filter(({column:e})=>!r.existingColumnIds?.has((0,s.tableColumnId)(e))||void 0!==e.listDerivedColumns?.(r.manager)),t=\"on\"===r.filterable||void 0===r.filterable&&10<e.length;const n=e.filter(({key:e})=>e.toLowerCase().includes(this.searchText.toLowerCase()));var e=r.primaryColumn,a=void 0===e?void 0:r.columnMenu?.(e?.column);const i=(0,c.uuidv4)();return[e&&(0,o.default)(l.MenuItem,{label:e.key,disabled:r.existingColumnIds?.has((0,s.tableColumnId)(e.column)),onclick:f(e.column,r.onColumnSelected),rightIcon:a?.rightIcon},a?.children),e&&(0,o.default)(l.MenuDivider),t&&(0,o.default)(d.TextInput,{autofocus:!0,oninput:e=>{e=e.target;this.searchText=e.value},onkeydown:e=>{var t;0===n.length||\"Enter\"!==e.key||1!==n.length&&!(0,u.hasModKey)(e)||(t={bubbles:!0},(0,u.hasModKey)(e)&&Object.assign(t,(0,u.modKey)()),e=new PointerEvent(\"click\",t),document.getElementById(i)?.dispatchEvent(e))},value:this.searchText,placeholder:\"Filter...\",className:\"pf-sql-table__column-filter\"}),t&&(0,o.default)(l.MenuDivider),void 0===this.columns&&(0,o.default)(p.Spinner),void 0!==this.columns&&(0,o.default)(h,{columns:n,manager:r.manager,existingColumnIds:r.existingColumnIds,onColumnSelected:r.onColumnSelected,columnMenu:r.columnMenu,firstButtonUuid:i})]}}return Zu.SelectColumnMenu=m,Zu}var rd,nd={};function ad(){if(!rd){rd=1,Object.defineProperty(nd,\"__esModule\",{value:!0}),nd.buildSqlQuery=function(e){const r=new p(e.table),t=Object.fromEntries(Object.entries(e.columns).map(([e,t])=>[e,r.normalise(t)])),n=(e.filters||[]).map(e=>({op:e.op,columns:e.columns.map(e=>r.normalise(e))})),a=(e.orderBy||[]).map(e=>({order:e.direction,column:r.normalise(e.column)})),i=(e.groupBy||[]).map(e=>r.normalise(e)),o=0===n.length?\"\":`WHERE\n `+n.map(e=>e.op(e.columns.map(e=>r.printReference(e)))).join(\"\\n  AND \"),s=r.tables.map((e,t)=>r.printJoin(t)).join(\"\\n\"),l=i.map(e=>r.printReference(e)),c=void 0===e.groupBy?\"\":`GROUP BY\n  `+l.join(\", \"),u=a.map(e=>r.printReference(e.column)+\" \"+e.order),d=0===a.length?\"\":`ORDER BY\n  `+u.join(\",  \");return`\n    ${void 0===e.prefix?\"\":e.prefix}\n    SELECT\n      ${Object.entries(t).map(([e,t])=>r.printReference(t)+\" AS \"+e).join(\",\\n  \")}\n    FROM ${e.table} AS ${r.tableAlias}\n    ${s}\n    ${o}\n    ${c}\n    ${d}\n  `};const e=Ku();class p{tables=[];tableAlias;expressionIndex=0;constructor(e){this.tableAlias=e+\"_0\"}normalise(t){if(\"string\"==typeof t)return{kind:\"table_column\",column:t};if(t instanceof e.SqlExpression)return{kind:\"expression\",index:this.expressionIndex++,op:t.op,columns:t.columns.map(e=>this.normalise(e))};var r=Object.fromEntries(Object.entries(t.source.joinOn).map(([e,t])=>[e,this.normalise(t)]));for(let e=0;e<this.tables.length;++e){var n=this.tables[e];if(n.table===t.source.table&&n.innerJoin===(t.source.innerJoin??!1)&&a(n.joinOn,r))return{kind:\"table_column\",column:t.column,sourceTableId:e}}return this.tables.push({table:t.source.table,joinOn:r,innerJoin:t.source.innerJoin??!1}),{kind:\"table_column\",column:t.column,sourceTableId:this.tables.length-1}}printReference(e){return\"expression\"===e.kind?e.op(e.columns.map(e=>this.printReference(e))):void 0===e.sourceTableId?/^[A-Za-z0-9_]*$/.test(e.column)?this.tableAlias+\".\"+e.column:e.column:`${this.tables[e.sourceTableId].table}_${e.sourceTableId+1}.`+e.column}printJoin(e){var t=this.tables[e];const r=t.table+\"_\"+(e+1);e=Object.entries(t.joinOn).map(([e,t])=>r+`.${e} = `+this.printReference(t));return`${t.innerJoin?\"\":\"LEFT \"}JOIN ${t.table} AS ${r} ON `+e.join(\" AND \")}}function a(e,t){if(Object.keys(e).length===Object.keys(t).length){for(const r of Object.keys(e))if(!function t(r,n){if(void 0!==r&&void 0!==n){if(\"table_column\"===r.kind)return\"table_column\"===n.kind&&r.column===n.column&&r.sourceTableId===n.sourceTableId;if(\"expression\"===n.kind&&r.columns.length===n.columns.length){for(let e=0;e<r.columns.length;++e)if(!t(r.columns[e],n.columns[e]))return;var e=Array.from({length:r.columns.length},(e,t)=>\"__$\"+t);return r.op(e)===n.op(e)}}}(e[r],t[r]))return;return 1}}}return nd}var id,od,sd,ld={},cd={};function ud(){if(!id){id=1,Object.defineProperty(cd,\"__esModule\",{value:!0}),cd.pivotId=function(e){return(0,t.sqlColumnId)(e.column)},cd.aggregationId=function(e){return\"count\"===e.op?\"count\":`${e.op}(${(0,t.sqlColumnId)(e.column.column)})`};const t=Ku()}return cd}function dd(){if(!od){od=1,Object.defineProperty(ld,\"__esModule\",{value:!0}),ld.basicAggregations=ld.AGGREGATIONS=void 0,ld.expandAggregations=function(e){var t=[];for(const r of e)\"average\"===r.op?(t.push({op:\"sum\",column:r.column}),t.push({op:\"count\",column:r.column})):t.push(r);return t},ld.getAggregationValue=function(e,t){if(\"average\"!==e.op)return t[(0,a.aggregationId)(e)];var r=n(t[(0,a.aggregationId)({op:\"sum\",column:e.column})]),t=n(t[(0,a.aggregationId)({op:\"count\",column:e.column})]);return null===r||null===t?null:r/t};const a=ud();function n(e){return\"number\"==typeof e?e:\"bigint\"==typeof e?Number(e):null}ld.AGGREGATIONS=[\"sum\",\"min\",\"max\",\"average\"],ld.basicAggregations={sum:(e,t)=>null===e?t:null===t?e:\"number\"==typeof e&&\"number\"==typeof t||\"bigint\"==typeof e&&\"bigint\"==typeof t?e+t:null,count:(e,t)=>null===e?t:null===t?e:\"number\"==typeof e&&\"number\"==typeof t||\"bigint\"==typeof e&&\"bigint\"==typeof t?e+t:null,min:(e,t)=>null===e||null!==t&&t<e?t:e,max:(e,t)=>null===e||null!==t&&e<t?t:e}}return ld}function pd(){if(!sd){sd=1,Object.defineProperty(zu,\"__esModule\",{value:!0}),zu.PivotTable=void 0;const c=Jr.__importDefault(xe()),i=Ei(),u=je(),d=Ae(),o=Yu(),s=Se(),l=td(),p=ad(),f=dd(),h=ud(),m=kc();zu.PivotTable=class{view({attrs:n}){const o=n.state;var e=o.getData();const s=o.getPivots(),l=o.getAggregations(),r=n.extraRowButton;var t=[...s.map((t,e)=>{var r=o.isSortedByPivot(t);return(0,c.default)(m.GridHeaderCell,{key:\"pivot-\"+(0,h.pivotId)(t),reorderable:{handle:\"pivot\"},onReorder:(t,r,e)=>{var n=s.findIndex(e=>\"pivot-\"+(0,h.pivotId)(e)===t);let a=s.findIndex(e=>\"pivot-\"+(0,h.pivotId)(e)===r);\"after\"===e&&a++,o.movePivot(n,a)},sort:r,onSort:e=>o.sortByPivot(t,e),menuItems:this.renderPivotColumnMenu(n,t,e),thickRightBorder:e===s.length-1},(0,h.pivotId)(t))}),...l.map((t,e)=>(0,c.default)(m.GridHeaderCell,{key:\"agg-\"+(0,h.aggregationId)(t),reorderable:{handle:\"aggregation\"},onReorder:(t,r,e)=>{var n=l.findIndex(e=>\"agg-\"+(0,h.aggregationId)(e)===t);let a=l.findIndex(e=>\"agg-\"+(0,h.aggregationId)(e)===r);\"after\"===e&&a++,o.moveAggregation(n,a)},sort:o.isSortedByAggregation(t),onSort:e=>o.sortByAggregation(t,e),menuItems:this.renderAggregationColumnMenu(n,t,e)},(0,h.aggregationId)(t)))],a=(r&&t.push((0,c.default)(m.GridHeaderCell,{key:\"action-button\"})),e?[...e.listDescendants()]:[]);return[(0,c.default)(m.Grid,{fillHeight:!0,className:\"pf-pivot-table\"},[(0,c.default)(m.GridHeader,(0,c.default)(m.GridRow,t)),(0,c.default)(m.GridBody,a.map(i=>{var e=i.isRoot()?[(0,c.default)(m.GridDataCell,{align:\"right\",colspan:s.length,thickRightBorder:!0},(0,c.default)(\".pf-pivot-table__total-values\",\"Total values:\"))]:s.map((e,t)=>{var r=i.getPivotDisplayStatus(t);const n=i.getPivotValue(t);var a=function(){if(void 0!==n)return o.getPivots()[t].renderCell(n)}(),r=[(\"collapsed\"===r||\"expanded\"===r)&&(0,c.default)(u.Button,{icon:\"collapsed\"===r?\"chevron_right\":d.Icons.ExpandDown,onclick:()=>{i.collapsed=!i.collapsed,c.default.redraw()},compact:!0}),\"auto_expanded\"===r&&(0,c.default)(u.Button,{icon:\"chevron_right\",disabled:!0,compact:!0}),\"pivoted_value\"===r&&(0,c.default)(\"span.pf-pivot-table__cell--indent\"),a&&a.content,\"hidden_behind_collapsed\"===r&&\"...\"];return(0,c.default)(m.GridDataCell,{thickRightBorder:t===s.length-1,align:a?.isNull?\"center\":a?.isNumerical?\"right\":\"left\",isMissing:a?.isNull},r)}),t=l.map((e,t)=>{e=e.column.renderCell(i.getAggregationValue(t));return(0,c.default)(m.GridDataCell,{align:e?.isNull?\"center\":e?.isNumerical?\"right\":\"left\",isMissing:e?.isNull},e.content)}),e=[...e,...t];return r&&e.push((0,c.default)(m.GridDataCell,{className:\"action-button\"},r(i))),(0,c.default)(m.GridRow,e)}))]),void 0===e&&(0,c.default)(i.Spinner)]}renderPivotColumnMenu(e,t,r){const n=e.state;var e=n.isSortedByPivot(t),a=[];return a.push((0,m.renderSortMenuItems)(e,e=>n.sortByPivot(t,e)),(0,c.default)(s.MenuDivider),(0,c.default)(s.MenuItem,{label:\"Add pivot\",icon:d.Icons.Add},(0,c.default)(l.SelectColumnMenu,{columns:n.table.columns.map(e=>({key:(0,o.tableColumnId)(e),column:e})),manager:{filters:n.filters,trace:n.trace,getSqlQuery:e=>(0,p.buildSqlQuery)({table:n.table.name,columns:e,filters:n.filters.get()})},existingColumnIds:new Set(n.getPivots().map(h.pivotId)),onColumnSelected:e=>n.addPivot(e,r)})),(0,c.default)(s.MenuDivider),(0,c.default)(s.MenuItem,{disabled:1===n.getPivots().length,label:\"Remove\",icon:d.Icons.Delete,onclick:()=>n.removePivot(r)})),a}renderAggregationColumnMenu(e,t,r){const n=e.state;var e=n.isSortedByAggregation(t),a=[];return a.push((0,m.renderSortMenuItems)(e,e=>n.sortByAggregation(t,e)),\"count\"!==t.op&&[(0,c.default)(s.MenuDivider),(0,c.default)(s.MenuItem,{label:\"Change aggregation\",icon:d.Icons.Change},f.AGGREGATIONS.filter(e=>e!==t.op).map(e=>(0,c.default)(s.MenuItem,{label:e,onclick:()=>n.replaceAggregation(r,{op:e,column:t.column})}))),(0,c.default)(s.MenuItem,{label:\"Duplicate\",icon:d.Icons.Copy,onclick:()=>n.addAggregation(t,r+1)}),(0,c.default)(s.MenuItem,{label:\"Remove\",icon:d.Icons.Delete,onclick:()=>n.removeAggregation(r)})],(0,c.default)(s.MenuDivider),(0,c.default)(s.MenuItem,{label:\"Add aggregation\",icon:d.Icons.Add},(0,c.default)(l.SelectColumnMenu,{columns:n.table.columns.map(e=>({key:(0,o.tableColumnId)(e),column:e})),manager:{filters:n.filters,trace:n.trace,getSqlQuery:e=>(0,p.buildSqlQuery)({table:n.table.name,columns:e,filters:n.filters.get()})},columnMenu:t=>({rightIcon:\"\",children:f.AGGREGATIONS.map(e=>(0,c.default)(s.MenuItem,{label:e,onclick:()=>n.addAggregation({op:e,column:t},r)}))})}))),a}}}return zu}var fd,hd={},md={};function gd(){if(!fd){fd=1,Object.defineProperty(md,\"__esModule\",{value:!0}),md.StandardFilters=md.Filters=void 0,md.formatFilter=t,md.filterTitle=r,md.isFilterEqual=n,md.areFiltersEqual=function(e,r){return e.length===r.length&&e.every((e,t)=>n(e,r[t]))},md.renderFilters=function(t){return(0,a.default)(e.Stack,{orientation:\"horizontal\"},[t.get().map(e=>(0,a.default)(s.Chip,{label:r(e),removable:!0,onRemove:()=>t.removeFilter(e)}))])};const a=Jr.__importDefault(xe()),i=Ku(),o=De(),s=oc(),e=mc();md.Filters=class{filters=[];observers=[];constructor(e=[]){this.filters=[...e]}addFilter(e){this.filters.push(e),this.notify()}addFilters(e){this.filters.push(...e),this.notify()}removeFilter(t){var e=this.filters.findIndex(e=>n(e,t));if(-1===e)throw new Error(\"Filter not found\");this.filters.splice(e,1),this.notify()}setFilters(e){this.filters=[...e],this.notify()}clear(){this.setFilters([])}get(){return this.filters}addObserver(e){this.observers.push(e)}notify(){this.observers.forEach(e=>e())}};class l{static valueEquals(e,t){return null===t?{columns:[e],op:e=>e[0]+\" IS NULL\"}:{columns:[e],op:e=>e[0]+\" = \"+(0,o.sqlValueToSqliteString)(t)}}static valueNotEquals(e,t){return null===t?{columns:[e],op:e=>e[0]+\" IS NOT NULL\"}:{columns:[e],op:e=>e[0]+\" != \"+(0,o.sqlValueToSqliteString)(t)}}static valueIsOneOf(e,t){return 1===t.length?l.valueEquals(e,t[0]):0===t.length?{columns:[],op:()=>\"FALSE\"}:{op:e=>`${e[0]} IN (${t.map(o.sqlValueToSqliteString).join(\", \")})`,columns:[e]}}}function t(e){return e.op(e.columns.map(e=>(0,i.sqlColumnId)(e)))}function r(e){return void 0!==e.getTitle?e.getTitle():t(e)}function n(e,r){return e.op===r.op&&e.columns.length===r.columns.length&&e.columns.every((e,t)=>(0,i.isSqlColumnEqual)(e,r.columns[t]))}md.StandardFilters=l}return md}var _d,yd,Td={},vd={};function bd(){if(!_d){_d=1;{var a=vd;Object.defineProperty(a,\"__esModule\",{value:!0}),a.NULL_FILTER_OPTIONS=a.STRING_FILTER_OPTIONS=a.NUMERIC_FILTER_OPTIONS=a.LegacySqlTableFilterOptions=void 0,a.getStandardFilters=o,a.getStandardContextMenuItems=s,a.displayValue=l,a.renderStandardCell=function(e,t,r){var n={content:l(e),isNumerical:\"number\"==typeof e||\"bigint\"==typeof e,isNull:null==e};if(void 0===r)return n;e=s(e,t,r);return{...n,menu:e}};const c=Jr.__importDefault(xe()),u=Se(),d=hn(),p=j(),f=Ae(),h=bs(),t=De();function i(e,t,r,n){return(0,c.default)(u.MenuItem,{label:e,onclick:()=>{n.filters.addFilter({op:r,columns:[t]})}})}function o(r,e,n){return null===r?a.NULL_FILTER_OPTIONS.map(t=>i(t,e,e=>e[0]+\" \"+a.LegacySqlTableFilterOptions[t].op,n)):(0,d.isString)(r)?a.STRING_FILTER_OPTIONS.map(t=>i(t,e,e=>`${e[0]} ${a.LegacySqlTableFilterOptions[t].op} `+(0,p.sqliteString)(r),n)):\"bigint\"==typeof r||\"number\"==typeof r?a.NUMERIC_FILTER_OPTIONS.map(t=>i(t,e,e=>`${e[0]} ${a.LegacySqlTableFilterOptions[t].op} `+r,n)):[]}function s(e,t,r){var n,a=[],i=((0,d.isString)(e)&&a.push((i=\"Copy\",n=e,(0,c.default)(u.MenuItem,{icon:f.Icons.Copy,label:i,onclick:()=>{(0,h.copyToClipboard)(n)}}))),o(e,t,r));return 0<i.length&&a.push((0,c.default)(u.MenuItem,{label:\"Add filter\",icon:f.Icons.Filter},...i)),a}function l(e){return null===e?\"null\":(0,t.sqlValueToReadableString)(e)}a.LegacySqlTableFilterOptions={glob:{op:\"glob\",label:\"glob\",requiresParam:!0},\"equals to\":{op:\"=\",label:\"equals to\",requiresParam:!0},\"not equals to\":{op:\"!=\",label:\"not equals to\",requiresParam:!0},\"greater than\":{op:\">\",label:\"greater than\",requiresParam:!0},\"greater or equals than\":{op:\">=\",label:\"greater or equals than\",requiresParam:!0},\"less than\":{op:\"<\",label:\"less than\",requiresParam:!0},\"less or equals than\":{op:\"<=\",label:\"less or equals than\",requiresParam:!0},\"is null\":{op:\"IS NULL\",label:\"is null\",requiresParam:!1},\"is not null\":{op:\"IS NOT NULL\",label:\"is not null\",requiresParam:!1}},a.NUMERIC_FILTER_OPTIONS=[\"equals to\",\"not equals to\",\"greater than\",\"greater or equals than\",\"less than\",\"less or equals than\"],a.STRING_FILTER_OPTIONS=[\"equals to\",\"not equals to\"],a.NULL_FILTER_OPTIONS=[\"is null\",\"is not null\"]}}return vd}var Ed,Sd,Ad,Od={};function Cd(){if(!Sd){Sd=1,Object.defineProperty(hd,\"__esModule\",{value:!0}),hd.PivotTableState=void 0;var e=Qc();const a=gd(),c=ad(),r=function(){if(!yd){yd=1,Object.defineProperty(Td,\"__esModule\",{value:!0}),Td.SimpleColumn=void 0;const r=bd();Td.SimpleColumn=class{column;constructor(e){this.column=e}primaryColumn(){return this.column}renderCell(e,t){return(0,r.renderStandardCell)(e,this.column,t)}}}return Td}(),u=Ku(),n=Hi(),s=Pe(),d=dd(),i=function(){if(!Ed){Ed=1,Object.defineProperty(Od,\"__esModule\",{value:!0}),Od.PivotTreeNode=void 0;const c=Pe(),e=gd(),s=dd(),u=ud();class l{config;parent;pivotValue;depth;children;aggregationValuesSelf;aggregationValues;collapsed;constructor(e){this.config=e.config,this.parent=e.parent,this.pivotValue=e.pivotValue,this.depth=void 0===this.parent?0:this.parent.depth+1,this.aggregationValuesSelf=Object.fromEntries(this.config.basicAggregations.map(e=>[(0,u.aggregationId)(e),null])),this.aggregationValues=Object.fromEntries(this.config.basicAggregations.map(e=>[(0,u.aggregationId)(e),null])),this.children=new Map,this.collapsed=0<this.depth}isRoot(){return void 0===this.parent}getPivotIndex(){return this.depth-1}static buildTree(e,t){var r=new l({config:{pivots:[...t.pivots],aggregations:[...t.aggregations],basicAggregations:(0,s.expandAggregations)(t.aggregations)}});for(const a of e){let e=r;for(const i of t.pivots)e=e.getOrCreateChild(a[(0,u.pivotId)(i)]);for(const o of r.config.basicAggregations){var n=(0,u.aggregationId)(o);e.aggregationValuesSelf[n]=s.basicAggregations[o.op](e.aggregationValuesSelf[n],a[(0,u.aggregationId)(o)])}}return r.update(),r}getPivotValue(e){if(!(e>this.getPivotIndex()))return e===this.getPivotIndex()?this.pivotValue:(0,c.assertExists)(this.parent).getPivotValue(e)}getPivotDisplayStatus(t){if(t===this.getPivotIndex())return t+1===this.config.pivots.length?\"last_pivot\":this.collapsed?\"collapsed\":\"expanded\";if(t>this.getPivotIndex())return this.collapsed?\"hidden_behind_collapsed\":\"empty\";let r=this,n=!0;for(let e=t;e<this.getPivotIndex();e++)r=(0,c.assertExists)(r.parent),n=n&&1===r.children.size;return n?\"auto_expanded\":\"pivoted_value\"}getAggregationValue(e){return(0,s.getAggregationValue)(this.config.aggregations[e],this.aggregationValues)}*listDescendants(){if(1===this.children.size||(yield this,!this.collapsed))for(const e of this.children.values())yield*e.listDescendants()}sort(r){if(0!==r.length){for(const t of this.children.values())t.sort(r);var e=[...this.children.values()].sort((e,t)=>l.compare(e,t,r));this.children.clear();for(const n of e)this.children.set((0,c.assertDefined)(n.pivotValue),n)}}copyExpandedState(e){if(void 0!==e&&((0,c.assertTrue)(this.getPivotIndex()===e.getPivotIndex()),this.getPivotId()===e.getPivotId())){this.collapsed=e.collapsed;for(var[t,r]of this.children)r.copyExpandedState(e.children.get(t))}}getFilters(){var e=[];let t=this;for(;void 0!==t.parent;)e.push(t.getFilter()),t=t.parent;return e.reverse()}getFilter(){return e.StandardFilters.valueEquals(this.config.pivots[this.getPivotIndex()].column,(0,c.assertDefined)(this.pivotValue))}getPivotId(){var e=this.getPivotIndex();if(-1!==e)return(0,u.pivotId)(this.config.pivots[e])}getOrCreateChild(e){return this.children.has(e)||this.children.set(e,new l({config:this.config,parent:this,pivotValue:e})),(0,c.assertExists)(this.children.get(e))}update(){this.aggregationValues={...this.aggregationValuesSelf};for(const t of this.children.values()){t.update();for(const r of this.config.basicAggregations){var e=(0,u.aggregationId)(r);this.aggregationValues[e]=s.basicAggregations[r.op](this.aggregationValues[e]??null,t.aggregationValues[e])}}}static compare(e,t,r){(0,c.assertTrue)(e.config===t.config&&e.depth===t.depth&&e.parent===t.parent);var n=(e,t)=>e===t?0:null===e||null!==t&&e<t?-1:1;for(const{type:o,id:s,direction:l}of r)if(\"aggregation\"===o){var a=e.config.aggregations.findIndex(e=>(0,u.aggregationId)(e)===s),a=((0,c.assertTrue)(-1!==a),n(e.getAggregationValue(a),t.getAggregationValue(a)));if(0!==a)return\"ASC\"===l?a:-a}else{a=e.config.pivots.findIndex(e=>(0,u.pivotId)(e)===s);if((0,c.assertTrue)(-1!==a),a+1===e.depth){var i=n((0,c.assertDefined)(e.pivotValue),(0,c.assertDefined)(t.pivotValue));if(0!==i)return\"ASC\"===l?i:-i}}return 0}}Od.PivotTreeNode=l}return Od}(),p=ud();hd.PivotTableState=class{args;table;trace;filters;pivots=[];aggregations=[];orderBy;limiter=new e.AsyncLimiter;data;oldTree;constructor(e){this.args=e,this.table=e.table,this.trace=e.trace,this.pivots=[...e.pivots],this.aggregations=void 0!==e.aggregations?[...e.aggregations]:[];var t={op:\"count\",column:new r.SimpleColumn(new u.SqlExpression(()=>\"1\",[]))};this.aggregations.push(t),this.orderBy=[{type:\"aggregation\",id:(0,p.aggregationId)(t),direction:\"DESC\"}],this.filters=e?.filters??new a.Filters,this.filters.addObserver(()=>this.reload()),this.data={columnIds:new Set,filters:[],query:\"\"},this.reload()}getData(){return this.data.result?.tree}getPivots(){return this.pivots}getAggregations(){return this.aggregations}addPivot(e,t){this.pivots.splice(t+1,0,e),this.reload()}addAggregation(e,t){this.aggregations.splice(t+1,0,e),this.reload()}removePivot(e){this.sortByPivot(this.pivots[e],void 0),this.pivots.splice(e,1),this.reload()}removeAggregation(e){this.sortByAggregation(this.aggregations[e],void 0),this.aggregations.splice(e,1),this.reload()}movePivot(e,t){(0,n.moveArrayItem)(this.pivots,e,t),this.reload()}moveAggregation(e,t){(0,n.moveArrayItem)(this.aggregations,e,t),this.reload()}replaceAggregation(e,t){this.aggregations[e]=t,this.reload()}sortByPivot(e,t){const r=(0,p.pivotId)(e);this.orderBy=this.orderBy.filter(e=>!(\"pivot\"===e.type&&e.id===r)),void 0!==t&&(this.orderBy.unshift({type:\"pivot\",id:r,direction:t}),this.data.result?.tree.sort(this.orderBy))}sortByAggregation(e,t){const r=(0,p.aggregationId)(e);this.orderBy=this.orderBy.filter(e=>!(\"aggregation\"===e.type&&e.id===r)),void 0!==t&&(this.orderBy.unshift({type:\"aggregation\",id:r,direction:t}),this.data.result?.tree.sort(this.orderBy))}clearPivotSort(e){const t=(0,p.pivotId)(e);this.orderBy=this.orderBy.filter(e=>!(\"pivot\"===e.type&&e.id===t)),this.data.result?.tree.sort(this.orderBy)}clearAggregationSort(e){const t=(0,p.aggregationId)(e);this.orderBy=this.orderBy.filter(e=>!(\"aggregation\"===e.type&&e.id===t)),this.data.result?.tree.sort(this.orderBy)}isSortedByPivot(e){var t;if(0!==this.orderBy.length)return e=(0,p.pivotId)(e),\"pivot\"===(t=this.orderBy[0]).type&&t.id===e?t.direction:void 0}isSortedByAggregation(e){var t;if(0!==this.orderBy.length)return e=(0,p.aggregationId)(e),\"aggregation\"===(t=this.orderBy[0]).type&&t.id===e?t.direction:void 0}async reload(){this.oldTree=this.data.result?.tree??this.oldTree,this.limiter.schedule(async()=>{var{query:e,columnIds:t,aliasToIds:r}=this.buildQuery();let n=void 0!==this.data.error||!(0,a.areFiltersEqual)(this.filters.get(),this.data.filters)||![...t].every(e=>this.data.columnIds.has(e))?void 0:this.data.result?.rows;this.data={columnIds:new Set(r.values()),filters:[...this.filters.get()],query:e},void 0===n&&(t=await this.loadData(e,r),this.data.error=t.error,n=t.rows),void 0===this.data.error&&((e=i.PivotTreeNode.buildTree(n,{pivots:this.getPivots(),aggregations:this.getAggregations()})).copyExpandedState(this.oldTree),this.oldTree=void 0,e.sort(this.orderBy),this.data.result={rows:n,tree:e})})}buildQuery(){var e={},t=new Set,r=new Map,n=[];for(const s of this.pivots){a=s;var a=(0,p.pivotId)(a).replace(/[^a-zA-Z0-9_]/g,\"__\");e[a]=s.column,t.add((0,p.pivotId)(s)),r.set(a,(0,p.pivotId)(s)),n.push(s.column)}for(const l of(0,d.expandAggregations)(this.aggregations)){i=l;var i=`__${(0,u.sqlColumnId)(i.column.column).replace(/[^a-zA-Z0-9_]/g,\"__\")}__`+i.op;e[i]=new u.SqlExpression(e=>`${l.op}(${e[0]})`,[l.column.column]),t.add((0,p.aggregationId)(l)),r.set(i,(0,p.aggregationId)(l))}var o=(0,c.buildSqlQuery)({table:this.args.table.name,columns:e,groupBy:n,filters:this.filters.get()});return{query:\"\"+(this.table.imports??[]).map(e=>`INCLUDE PERFETTO MODULE ${e};\n`).join(\"\")+o,columnIds:t,aliasToIds:r}}async loadData(e,t){var r=await this.args.trace.engine.query(e);if(void 0!==r.error())return{rows:[],error:r.error()};for(var n=[],a=r.iter({});a.valid();a.next()){var i={};for(const o of r.columns())i[(0,s.assertExists)(t.get(o))]=a.get(o);n.push(i)}return{rows:n}}}}return hd}var wd,kd={};var Id,Rd={};var Nd,Md,Pd={},Dd={};function xd(){if(!Nd){Nd=1,Object.defineProperty(Dd,\"__esModule\",{value:!0}),Dd.CounterDetailsPanel=void 0;var e=Jr;const o=Fe(),s=Ue(),r=e.__importDefault(xe()),n=qe(),a=Ls(),i=Bs(),l=Ve(),c=Ns(),u=ks(),d=Xo(),p=ns(),f=os();Dd.CounterDetailsPanel=class{trace;engine;trackId;rootTable;trackName;counterDetails;constructor(e,t,r,n=\"counter\"){this.trace=e,this.engine=e.engine,this.trackId=t,this.trackName=r,this.rootTable=n}async load({eventId:e}){var t,r,n,a,i;this.counterDetails=(t=this.engine,r=this.trackId,e=e,n=this.rootTable,e=`\n    WITH CURRENT AS (\n      SELECT\n        id,\n        ts,\n        value,\n        arg_set_id\n      FROM ${n}\n      WHERE track_id = ${r} and id = ${e}\n    ),\n    PREV as (\n      SELECT\n        value\n      FROM ${n}\n      WHERE track_id = ${r} AND ts < (select ts from CURRENT)\n      ORDER BY ts DESC\n      LIMIT 1\n    ),\n    NEXT as (\n      SELECT\n        ts\n      FROM ${n}\n      WHERE track_id = ${r} AND ts > (select ts from CURRENT)\n      ORDER BY ts ASC\n      LIMIT 1\n    )\n    SELECT\n      id,\n      ts as leftTs,\n      value,\n      arg_set_id as argSetId,\n      (SELECT value FROM PREV) as prevValue,\n      (SELECT ts FROM NEXT) as rightTs\n    FROM CURRENT\n  `,n=await t.query(e),r=n.iter({value:s.NUM,prevValue:s.NUM_NULL,leftTs:s.LONG,rightTs:s.LONG_NULL,argSetId:s.NUM_NULL}),e=r.value,n=o.Time.fromRaw(r.leftTs),a=null!==r.rightTs?o.Time.fromRaw(r.rightTs):n,i=null!==r.prevValue?r.prevValue:e,i=e-i,a-=n,r=r.argSetId,t=null==r?void 0:await(0,f.getArgs)(t,(0,p.asArgSetId)(r)),await{ts:n,value:e,delta:i,duration:a,args:t})}render(){var e,t=this.counterDetails;return t?(e=(0,d.hasArgs)(t.args)&&(0,r.default)(i.Section,{title:\"Arguments\"},(0,r.default)(l.Tree,(0,d.renderArguments)(this.trace,t.args))),(0,r.default)(n.DetailsShell,{title:\"Counter\",description:\"\"+this.trackName},(0,r.default)(a.GridLayout,(0,r.default)(i.Section,{title:\"Properties\"},(0,r.default)(l.Tree,(0,r.default)(l.TreeNode,{left:\"Name\",right:\"\"+this.trackName}),(0,r.default)(l.TreeNode,{left:\"Start time\",right:(0,r.default)(c.Timestamp,{trace:this.trace,ts:t.ts})}),(0,r.default)(l.TreeNode,{left:\"Value\",right:\"\"+t.value.toLocaleString()}),(0,r.default)(l.TreeNode,{left:\"Delta\",right:\"\"+t.delta.toLocaleString()}),(0,r.default)(l.TreeNode,{left:\"Duration\",right:(0,r.default)(u.DurationWidget,{trace:this.trace,dur:t.duration})}))),e))):(0,r.default)(n.DetailsShell,{title:\"Counter\",description:\"Loading...\"})}isLoading(){return void 0===this.counterDetails}}}return Dd}function Ld(){if(!Md){Md=1,Object.defineProperty(Pd,\"__esModule\",{value:!0}),Pd.TraceProcessorCounterTrack=void 0;const r=Fe();var e=Gi();const n=Ue(),t=xd();class a extends e.BaseCounterTrack{trackId;trackName;rootTable;constructor(e,t,r,n,a,i=\"counter\"){super(e,t,r),this.trackId=n,this.trackName=a,this.rootTable=i}getSqlSource(){return`\n      select\n        id,\n        ts,\n        value\n      from ${this.rootTable}\n      where track_id = ${this.trackId}\n    `}onMouseClick({x:e,timescale:t}){t=t.pxToHpTime(e).toTime(\"floor\"),e=`\n      select\n        id\n      from ${this.rootTable}\n      where\n        track_id = ${this.trackId}\n        and ts < ${t}\n      order by ts DESC\n      limit 1\n    `;return this.engine.query(e).then(e=>{var e=e.iter({id:n.NUM});e.valid()&&(e=e.id,this.trace.selection.selectTrackEvent(this.uri,e))}),!0}async getSelectionDetails(e){var e=`\n      WITH CTE AS (\n        SELECT\n          id,\n          ts as leftTs\n        FROM ${this.rootTable}\n        WHERE track_id = ${this.trackId} AND id = ${e}\n      )\n      SELECT\n        *,\n        (\n          SELECT\n            ts\n          FROM ${this.rootTable}\n          WHERE track_id = ${this.trackId} AND ts > leftTs\n          ORDER BY ts ASC\n          LIMIT 1\n        ) as rightTs\n      FROM CTE\n    `,e=(await this.engine.query(e)).iter({leftTs:n.LONG,rightTs:n.LONG_NULL}),t=r.Time.fromRaw(e.leftTs);return{ts:t,dur:(null!==e.rightTs?r.Time.fromRaw(e.rightTs):t)-t}}detailsPanel(){return new t.CounterDetailsPanel(this.trace,this.trackId,this.trackName)}}Pd.TraceProcessorCounterTrack=a}return Pd}var Fd,Ud={},Bd={},jd={},Hd={};function Gd(){if(!Fd){Fd=1,Object.defineProperty(Hd,\"__esModule\",{value:!0}),Hd.BreakdownByThreadStateTreeNode=void 0,Hd.breakDownIntervalByThreadState=async function(e,t,r){var e=await e.query(`\n    INCLUDE PERFETTO MODULE sched.time_in_state;\n    INCLUDE PERFETTO MODULE sched.states;\n    INCLUDE PERFETTO MODULE android.cpu.cluster_type;\n\n    SELECT\n      sched_state_io_to_human_readable_string(state, io_wait) as state,\n      state AS rawState,\n      cluster_type AS clusterType,\n      cpu,\n      blocked_function AS blockedFunction,\n      dur\n    FROM sched_time_in_state_and_cpu_for_thread_in_interval(${t.start}, ${t.duration}, ${r})\n    LEFT JOIN android_cpu_cluster_mapping USING(cpu);\n  `),n=e.iter({state:i.STR,rawState:i.STR,clusterType:i.STR_NULL,cpu:i.NUM_NULL,blockedFunction:i.STR_NULL,dur:i.LONG}),a=new o;for(;n.valid();n.next()){let e=a;e=e.getOrCreateChild(n.state),null!==n.clusterType&&(e=e.getOrCreateChild(n.clusterType)),null!==n.cpu&&(e=e.getOrCreateChild(\"CPU \"+n.cpu)),(e=null!==n.blockedFunction?e.getOrCreateChild(\"\"+n.blockedFunction):e).addDuration(n.dur)}return{root:a}};const l=Jr.__importDefault(xe()),i=Ue(),c=Ve(),u=ks();class o{parent;children;dur;startsCollapsed=!0;constructor(e){this.parent=e,this.children=new Map,this.dur=0n}getOrCreateChild(e){let t=this.children.get(e);return t||(t=new o(this),this.children.set(e,t)),t}addDuration(e){let t=this;for(;void 0!==t;)t.dur+=e,t=t.parent}}function s(i,e,o){return Array.from(e.children.entries()).map(([e,t])=>{return r=i,t=t,e=e,n=o,a=100*Number(t.dur)/Number(n),(0,l.default)(c.TreeNode,{left:e,right:[(0,l.default)(u.DurationWidget,{trace:r,dur:t.dur}),` (${a.toFixed(2)}%)`],startsCollapsed:t.startsCollapsed},s(r,t,n));var r,n,a})}Hd.BreakdownByThreadStateTreeNode=class{view({attrs:e}){return s(e.trace,e.data.root,e.dur)}}}return Hd}var Vd,qd={},zd={};function Wd(){if(!Vd){Vd=1,Object.defineProperty(zd,\"__esModule\",{value:!0}),zd.addEphemeralTab=function(e,t,r){t=t+\"#\"+(0,n.uuidv4)(),e=e.tabs;void 0!==e&&(e.registerTab({uri:t,content:r,isEphemeral:!0}),e.showTab(t))};const n=ln()}return zd}var $d,Kd,Yd,Jd,Qd={},Zd={},Xd={};function ep(){if(!$d){$d=1,Object.defineProperty(Xd,\"__esModule\",{value:!0}),Xd.renderError=function(e){return(0,t.default)(\".pf-error\",e)};const t=Jr.__importDefault(xe())}return Xd}function tp(){if(Kd)return Zd;Kd=1,Object.defineProperty(Zd,\"__esModule\",{value:!0}),Zd.Details=Zd.DetailsSchema=void 0;const A=Jr.__importDefault(xe()),O=Fe(),C=Me(),l=K(),w=De(),c=os(),u=ns(),k=Oe(),I=ep(),n=Qs(),R=Ve(),N=Xo(),M=ks(),P=Ns(),a=$s(),D=sl();Zd.DetailsSchema={Dict:function(e){return new i(e.data,{skipIfEmpty:e.skipIfEmpty})},Arr:function(e){return new o(e.data,{skipIfEmpty:e.skipIfEmpty})},Timestamp:function(e,t){return new s(\"timestamp\",e,t)},Duration:function(e,t){return new s(\"duration\",e,t)},Interval:function(e,t,r){return new d(e,t,r)},ThreadInterval:function(e,t,r,n){return new p(e,t,r,n)},ArgSetId:function(e,t){return new s(\"arg_set_id\",e,t)},Value:function(e,t){return new s(\"value\",e,t)},URLValue:function(e,t){return new s(\"url\",e,t)},Boolean:function(e,t){return new s(\"boolean\",e,t)},SqlIdRef:function(e,t,r){return new f(e,t,r)}};Zd.Details=class{trace;sqlTable;id;constructor(e,t,r,n){this.trace=e,this.sqlTable=t,this.id=r,this.dataController=new h(e,t,r,a.sqlIdRegistry),this.resolvedSchema={kind:\"dict\",data:Object.fromEntries(Object.entries(n).map(([e,t])=>[e,function r(e,n){if(\"string\"==typeof e)return{kind:\"value\",source:n.addExpression(e)};if(Array.isArray(e))return{kind:\"array\",data:e.map(e=>r(e,n))};if(e instanceof o)return{kind:\"array\",data:e.data.map(e=>r(e,n)),...e.params};if(e instanceof s)return\"arg_set_id\"===e.kind?{kind:e.kind,source:n.addArgSet(e.sourceExpression),...e.params}:{kind:e.kind,source:n.addExpression(e.sourceExpression),...e.params};if(e instanceof d)return{kind:\"interval\",ts:n.addExpression(e.ts),dur:n.addExpression(e.dur),...e.params};if(e instanceof p)return{kind:\"thread_interval\",ts:n.addExpression(e.ts),dur:n.addExpression(e.dur),utid:n.addExpression(e.utid),...e.params};if(e instanceof f)return{kind:\"sql_id_ref\",ref:n.addSqlIdRef(e.table,e.id),...e.params};if(e instanceof i)return{kind:\"dict\",data:Object.fromEntries(Object.entries(e.data).map(([e,t])=>[e,r(t,n)])),...e.params};return{kind:\"dict\",data:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,r(t,n)]))}}(t,this.dataController)]))},this.dataController.fetch()}isLoading(){return void 0===this.dataController.data}render(){if(void 0===this.dataController.data)return(0,A.default)(\"h2\",\"Loading\");var e,t,r=[];for([e,t]of Object.entries(this.resolvedSchema.data))r.push(function r(n,a,i,o,s){switch(i.kind){case\"value\":return null===o.values[i.source]&&i.skipIfNull?null:(0,A.default)(R.TreeNode,{left:a,right:(0,w.sqlValueToReadableString)(o.values[i.source])});case\"url\":{const d=o.values[i.source];let e;if(null===d){if(i.skipIfNull)return null;e=L()}else e=\"string\"!=typeof d?(0,I.renderError)(`Incorrect type for URL ${o.valueExpressions[i.source]}: expected string, got `+typeof d):(0,A.default)(k.Anchor,{href:d,target:\"_blank\",icon:\"open_in_new\"},d);return(0,A.default)(R.TreeNode,{left:a,right:e})}case\"boolean\":{const p=o.values[i.source];if(null===p&&i.skipIfNull)return null;let e;return e=\"bigint\"!=typeof p&&\"number\"!=typeof p?(0,I.renderError)(`Incorrect type for boolean ${o.valueExpressions[i.source]}: expected bigint or number, got `+typeof p):p?\"true\":\"false\",(0,A.default)(R.TreeNode,{left:a,right:e})}case\"timestamp\":{const f=o.values[i.source];let e;if(null===f){if(i.skipIfNull)return null;e=(0,A.default)(\"i\",\"NULL\")}else e=\"bigint\"!=typeof f?(0,I.renderError)(`Incorrect type for timestamp ${o.valueExpressions[i.source]}: expected bigint, got `+typeof f):(0,A.default)(P.Timestamp,{trace:n,ts:O.Time.fromRaw(f)});return(0,A.default)(R.TreeNode,{left:a,right:e})}case\"duration\":{const h=o.values[i.source];return(0,A.default)(R.TreeNode,{left:a,right:\"bigint\"==typeof h&&(0,A.default)(M.DurationWidget,{trace:n,dur:h})})}case\"interval\":case\"thread_interval\":{const m=o.values[i.dur];return(0,A.default)(R.TreeNode,{left:a,right:\"bigint\"==typeof m&&(0,A.default)(M.DurationWidget,{trace:n,dur:m})})}case\"sql_id_ref\":const l=o.sqlIdRefs[i.ref],c=o.sqlIdRefData[i.ref];let e,t;if(c instanceof x)e=(0,I.renderError)(c.message);else if(null===c.id&&!0===i.skipIfNull)e=L();else{const g=s[l.tableName];if(void 0===g)e=(0,I.renderError)(`Unknown table ${l.tableName} (${l.tableName}[${c.id}])`);else{const _=g.render(n,c.data);e=_.value,t=_.children}}return(0,A.default)(R.TreeNode,{left:a,right:e},t);case\"arg_set_id\":const u=o.argSets[i.source];return u instanceof x?(0,I.renderError)(u.message):(0,N.hasArgs)(u)&&(0,A.default)(R.TreeNode,{left:a},(0,D.renderSliceArguments)(n,u));case\"array\":{const y=[];for(const T of i.data){const v=r(n,`[${y.length}]`,T,o,s);(0,C.exists)(v)&&y.push(v)}return 0===y.length&&i.skipIfEmpty?null:(0,A.default)(R.TreeNode,{left:a},y)}case\"dict\":{const b=[];for(const[a,E]of Object.entries(i.data)){const S=r(n,a,E,o,s);(0,C.exists)(S)&&b.push(S)}return 0===b.length&&i.skipIfEmpty?null:(0,A.default)(R.TreeNode,{left:a},b)}}}(this.trace,e,t,this.dataController.data,this.dataController.sqlIdRefRenderers));return r.push((0,A.default)(R.TreeNode,{left:\"SQL ID\",right:(0,A.default)(n.SqlRef,{table:this.sqlTable,id:this.id})})),(0,A.default)(R.Tree,r)}dataController;resolvedSchema};class i{data;params;constructor(e,t){this.data=e,this.params=t}}class o{data;params;constructor(e,t){this.data=e,this.params=t}}class s{kind;sourceExpression;params;constructor(e,t,r){this.kind=e,this.sourceExpression=t,this.params=r}}class d{ts;dur;params;constructor(e,t,r){this.ts=e,this.dur=t,this.params=r}}class p{ts;dur;utid;params;constructor(e,t,r,n){this.ts=e,this.dur=t,this.utid=r,this.params=n}}class f{table;id;params;constructor(e,t,r){this.table=e,this.id=t,this.params=r}}class x{message;constructor(e){this.message=e}}class h{trace;sqlTable;id;sqlIdRefRenderers;expressions=[];argSets=[];sqlIdRefs=[];data;constructor(e,t,r,n){this.trace=e,this.sqlTable=t,this.id=r,this.sqlIdRefRenderers=n}async fetch(){var t={valueExpressions:this.expressions,values:[],argSetExpressions:this.argSets.map(e=>this.expressions[e]),argSets:[],sqlIdRefs:this.sqlIdRefs.map(e=>({tableName:e.tableName,idExpression:this.expressions[e.id]})),sqlIdRefData:[]};const r=e=>\"col_\"+e;var n=(await this.trace.engine.query(`\n      SELECT\n        ${this.expressions.map((e,t)=>e+\" as \"+r(t)).join(\",\\n\")}\n      FROM ${this.sqlTable}\n      WHERE id = ${this.id}\n    `)).firstRow({});for(let e=0;e<this.expressions.length;++e)t.values.push(n[r(e)]);for(const o of this.argSets){var e=t.values[o];null===e?t.argSets.push([]):\"number\"!=typeof e&&\"bigint\"!=typeof e?t.argSets.push(new x(`Incorrect type for arg set ${t.argSetExpressions[o]}: expected a number, got ${typeof e} instead}`)):t.argSets.push(await(0,c.getArgs)(this.trace.engine,(0,u.asArgSetId)(Number(e))))}for(const s of this.sqlIdRefs){var a,i=this.sqlIdRefRenderers[s.tableName];void 0===i?t.sqlIdRefData.push(new x(\"Unknown table \"+s.tableName)):null===(a=t.values[s.id])?t.sqlIdRefData.push({data:{},id:a}):\"bigint\"!=typeof a?t.sqlIdRefData.push(new x(`Incorrect type for SQL reference ${t.valueExpressions[s.id]}: expected a bigint, got ${typeof a} instead}`)):void 0===(i=await i.fetch(this.trace.engine,a))?t.sqlIdRefData.push(new x(`Failed to fetch the data with id ${a} for table `+s.tableName)):t.sqlIdRefData.push({data:i,id:a})}this.data=t,l.raf.scheduleFullRedraw()}addExpression(e){var t=this.expressions.length;return this.expressions.push(e),t}addArgSet(e){var t=this.argSets.length;return this.argSets.push(this.addExpression(e)),t}addSqlIdRef(e,t){var r=this.sqlIdRefs.length;return this.sqlIdRefs.push({tableName:e,id:this.addExpression(t)}),r}}function L(){return(0,A.default)(\"i\",\"NULL\")}return Zd}function rp(){if(!Jd){Jd=1,Object.defineProperty(qd,\"__esModule\",{value:!0}),qd.showProcessDetailsMenuItem=n,qd.processRefMenuItems=r,qd.renderProcessRef=a;const i=Jr.__importDefault(xe()),o=bs(),s=Ae(),l=Me(),c=Wd(),u=ps(),d=Oe(),p=Se(),f=function(){if(!Yd){Yd=1,Object.defineProperty(Qd,\"__esModule\",{value:!0}),Qd.ProcessDetailsTab=void 0;const e=Jr.__importDefault(xe()),t=qe(),r=Ls(),n=Bs(),a=tp();Qd.ProcessDetailsTab=class{args;data;constructor(e){this.args=e,this.data=new a.Details(e.trace,\"process\",e.upid,{pid:a.DetailsSchema.Value(\"pid\"),Name:a.DetailsSchema.Value(\"name\"),\"Start time\":a.DetailsSchema.Timestamp(\"start_ts\",{skipIfNull:!0}),\"End time\":a.DetailsSchema.Timestamp(\"end_ts\",{skipIfNull:!0}),\"Parent process\":a.DetailsSchema.SqlIdRef(\"process\",\"parent_upid\",{skipIfNull:!0}),\"User ID\":a.DetailsSchema.Value(\"uid\",{skipIfNull:!0}),\"Android app ID\":a.DetailsSchema.Value(\"android_appid\",{skipIfNull:!0}),\"Command line\":a.DetailsSchema.Value(\"cmdline\",{skipIfNull:!0}),\"Machine id\":a.DetailsSchema.Value(\"machine_id\",{skipIfNull:!0}),Args:a.DetailsSchema.ArgSetId(\"arg_set_id\")})}render(){return(0,e.default)(t.DetailsShell,{title:this.getTitle()},(0,e.default)(r.GridLayout,(0,e.default)(r.GridLayoutColumn,(0,e.default)(n.Section,{title:\"Details\"},this.data.render()))))}getTitle(){return void 0!==this.args.pid?\"Process \"+this.args.pid:\"Process upid:\"+this.args.upid}}}return Qd}();var e=$s();const h=ns();function n(e,t,r){return(0,i.default)(p.MenuItem,{icon:s.Icons.ExternalLink,label:\"Show process details\",onclick:()=>{(0,c.addEphemeralTab)(e,\"processDetails\",new f.ProcessDetailsTab({trace:e,upid:t,pid:r}))}})}function r(e,t){const r=t.name;return[(0,l.exists)(r)&&(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy process name\",onclick:()=>(0,o.copyToClipboard)(r)}),(0,l.exists)(t.pid)&&(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy pid\",onclick:()=>(0,o.copyToClipboard)(\"\"+t.pid)}),(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy upid\",onclick:()=>(0,o.copyToClipboard)(\"\"+t.upid)}),n(e,t.upid,t.pid)]}function a(e,t){return(0,i.default)(p.PopupMenu,{trigger:(0,i.default)(d.Anchor,(0,u.getProcessName)(t))},r(e,t))}e.sqlIdRegistry.process=(0,e.createSqlIdRefRenderer)(async(e,t)=>(0,u.getProcessInfo)(e,(0,h.asUpid)(Number(t))),(e,t)=>({value:a(e,t)}))}return qd}var np,ap,ip,op={},sp={};function lp(){if(!ap){ap=1,Object.defineProperty(op,\"__esModule\",{value:!0}),op.showThreadDetailsMenuItem=n,op.threadRefMenuItems=r,op.renderThreadRef=a;const i=Jr.__importDefault(xe()),o=bs(),s=Ae(),l=Me(),c=Wd(),u=fs(),d=Oe(),p=Se(),f=function(){if(!np){np=1,Object.defineProperty(sp,\"__esModule\",{value:!0}),sp.ThreadDetailsTab=void 0;const e=Jr.__importDefault(xe()),t=qe(),r=Ls(),n=Bs(),a=tp();sp.ThreadDetailsTab=class{args;data;constructor(e){this.args=e,this.data=new a.Details(e.trace,\"thread\",e.utid,{tid:a.DetailsSchema.Value(\"tid\"),Name:a.DetailsSchema.Value(\"name\"),Process:a.DetailsSchema.SqlIdRef(\"process\",\"upid\"),\"Is main thread\":a.DetailsSchema.Boolean(\"is_main_thread\"),\"Start time\":a.DetailsSchema.Timestamp(\"start_ts\",{skipIfNull:!0}),\"End time\":a.DetailsSchema.Timestamp(\"end_ts\",{skipIfNull:!0}),\"Machine id\":a.DetailsSchema.Value(\"machine_id\",{skipIfNull:!0})})}render(){return(0,e.default)(t.DetailsShell,{title:this.getTitle()},(0,e.default)(r.GridLayout,(0,e.default)(r.GridLayoutColumn,(0,e.default)(n.Section,{title:\"Details\"},this.data.render()))))}getTitle(){return void 0!==this.args.tid?\"Thread \"+this.args.tid:\"Thread utid:\"+this.args.utid}}}return sp}();var e=$s();const h=ns();function n(e,t,r){return(0,i.default)(p.MenuItem,{icon:s.Icons.ExternalLink,label:\"Show thread details\",onclick:()=>{void 0!==e&&(0,c.addEphemeralTab)(e,\"threadDetails\",new f.ThreadDetailsTab({trace:e,utid:t,tid:r}))}})}function r(e,t){const r=t.name;return[(0,l.exists)(r)&&(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy thread name\",onclick:()=>(0,o.copyToClipboard)(r)}),(0,l.exists)(t.tid)&&(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy tid\",onclick:()=>(0,o.copyToClipboard)(\"\"+t.tid)}),(0,i.default)(p.MenuItem,{icon:s.Icons.Copy,label:\"Copy utid\",onclick:()=>(0,o.copyToClipboard)(\"\"+t.utid)}),n(e,t.utid,t.tid)]}function a(e,t){return(0,i.default)(p.PopupMenu,{trigger:(0,i.default)(d.Anchor,(0,u.getThreadName)(t))},r(e,t))}e.sqlIdRegistry.thread=(0,e.createSqlIdRefRenderer)(async(e,t)=>(0,u.getThreadInfo)(e,(0,h.asUtid)(Number(t))),(e,t)=>({value:a(e,t)}))}return op}function cp(){if(!ip){ip=1,Object.defineProperty(jd,\"__esModule\",{value:!0}),jd.renderDetails=function(e,t,r){return(0,n.default)(c.Section,{title:\"Details\"},(0,n.default)(d.Tree,(0,n.default)(d.TreeNode,{left:\"Name\",right:(0,n.default)(l.PopupMenu,{trigger:(0,n.default)(s.Anchor,t.name)},(0,n.default)(l.MenuItem,{label:\"Slices with the same name\",onclick:()=>{T.extensions.addLegacySqlTableTab(e,{table:(0,y.assertExists)((0,_.getSqlTableDescription)(e,\"slice\")),filters:[{op:e=>e[0]+\" = \"+(0,i.sqliteString)(t.name),columns:[\"name\"]}]})}}))}),(0,n.default)(d.TreeNode,{left:\"Category\",right:t.category&&\"[NULL]\"!==t.category?t.category:\"N/A\"}),(0,n.default)(d.TreeNode,{left:\"Start time\",right:(0,n.default)(g.Timestamp,{trace:e,ts:t.ts})}),(0,o.exists)(t.absTime)&&(0,n.default)(d.TreeNode,{left:\"Absolute Time\",right:t.absTime}),(0,n.default)(d.TreeNode,{left:\"Duration\",right:(0,n.default)(f.DurationWidget,{trace:e,dur:t.dur})},(0,o.exists)(r)&&0<t.dur&&(0,n.default)(p.BreakdownByThreadStateTreeNode,{trace:e,data:r,dur:t.dur})),function(e,t){{var r;if((0,o.exists)(t.threadTs)&&(0,o.exists)(t.threadDur))return r=a.BigintMath.ratio(t.threadDur,t.dur),r=-1n===t.threadDur?\"\":` (${(100*r).toFixed(2)}%)`,(0,n.default)(d.TreeNode,{left:\"Thread duration\",right:[(0,n.default)(f.DurationWidget,{trace:e,dur:t.threadDur}),r]})}}(e,t),t.thread&&(0,n.default)(d.TreeNode,{left:\"Thread\",right:(0,m.renderThreadRef)(e,t.thread)}),t.process&&(0,n.default)(d.TreeNode,{left:\"Process\",right:(0,h.renderProcessRef)(e,t.process)}),t.process&&(0,o.exists)(t.process.uid)&&(0,n.default)(d.TreeNode,{left:\"User ID\",right:t.process.uid}),t.process&&t.process.packageName&&(0,n.default)(d.TreeNode,{left:\"Package name\",right:t.process.packageName}),t.process&&(0,o.exists)(t.process.versionCode)&&(0,n.default)(d.TreeNode,{left:\"Version code\",right:t.process.versionCode}),(0,n.default)(d.TreeNode,{left:\"SQL ID\",right:(0,n.default)(u.SqlRef,{table:\"slice\",id:t.id})})))};const n=Jr.__importDefault(xe()),a=ja(),i=j(),o=Me(),s=Oe(),l=Se(),c=Bs(),u=Qs(),d=Ve(),p=Gd(),f=ks(),h=rp(),m=lp(),g=Ns(),_=ol(),y=Pe(),T=tl()}return jd}var up,dp={},pp={};function fp(){if(up)return pp;up=1,Object.defineProperty(pp,\"__esModule\",{value:!0}),pp.createStore=function(e){return new t(e)};const n=fe(),a=hn();class t{internalState;subscriptions=new Set;constructor(e){this.internalState=(0,n.produce)(e,()=>{})}get state(){return this.internalState}edit(e){Array.isArray(e)?this.applyEdits(e):this.applyEdits([e])}applyEdits(e){const t=this.internalState;e=e.reduce((e,t)=>(0,n.produce)(e,t),t);this.internalState=e,this.subscriptions.forEach(e=>{e(this,t)})}createSubStore(e,t){return new r(this,e,t)}subscribe(e){return this.subscriptions.add(e),{[Symbol.dispose]:()=>{this.subscriptions.delete(e)}}}[Symbol.dispose](){}}class r{parentStore;path;migrate;parentState;cachedState;parentStoreSubscription;subscriptions=new Set;constructor(e,t,r){this.parentStore=e,this.path=t,this.migrate=r,this.parentState=(0,a.getPath)(this.parentStore.state,this.path),this.cachedState=(0,n.produce)(r(this.parentState),()=>{}),this.parentStoreSubscription=this.parentStore.subscribe(()=>{(0,a.getPath)(this.parentStore.state,this.path)!==this.parentState&&this.subscriptions.forEach(e=>{e(this,this.cachedState)})})}get state(){const e=(0,a.getPath)(this.parentStore.state,this.path);return this.parentState===e?this.cachedState:(this.parentState=e,this.cachedState=(0,n.produce)(this.cachedState,()=>this.migrate(e)))}edit(e){Array.isArray(e)?this.applyEdits(e):this.applyEdits([e])}applyEdits(e){const t=this.cachedState,r=e.reduce((e,t)=>(0,n.produce)(e,t),t);this.parentState=r;try{this.parentStore.edit(e=>{(0,a.setPath)(e,this.path,r)})}catch(e){if(!(e instanceof TypeError))throw e;console.warn(\"Failed to update parent store at \",this.path)}this.cachedState=r,this.subscriptions.forEach(e=>{e(this,t)})}createSubStore(e,t){return new r(this,e,t)}subscribe(e){return this.subscriptions.add(e),{[Symbol.dispose]:()=>{this.subscriptions.delete(e)}}}[Symbol.dispose](){this.parentStoreSubscription[Symbol.dispose]()}}return pp}var hp,mp,gp,_p={},yp={},Tp={};function vp(){if(!hp){hp=1,Object.defineProperty(Tp,\"__esModule\",{value:!0}),Tp.HighPrecisionTime=void 0;const t=Pe(),r=Fe();class n{static ZERO=new n(r.Time.fromRaw(0n));integral;fractional;constructor(e,t=0){var r=Math.floor(t);this.integral=e+BigInt(r),this.fractional=t-r}static max(e,t){return e.integral>t.integral||!(e.integral<t.integral)&&e.fractional>t.fractional?e:t}static min(e,t){return n.max(e,t)===e?t:e}toTime(e=\"floor\"){switch(e){case\"round\":return r.Time.fromRaw(this.integral+BigInt(Math.round(this.fractional)));case\"floor\":return r.Time.fromRaw(this.integral);case\"ceil\":return r.Time.fromRaw(this.integral+BigInt(Math.ceil(this.fractional)));default:(0,t.assertUnreachable)(e)}}toNumber(){return Number(this.integral)+this.fractional}add(e){return new n(r.Time.add(this.integral,e.integral),this.fractional+e.fractional)}addTime(e){return new n(r.Time.add(this.integral,e),this.fractional)}addNumber(e){return new n(this.integral,this.fractional+e)}sub(e){return new n(r.Time.sub(this.integral,e.integral),this.fractional-e.fractional)}subTime(e){return new n(r.Time.sub(this.integral,e),this.fractional)}subNumber(e){return new n(this.integral,this.fractional-e)}equals(e,t=1e-6){return Math.abs(this.sub(e).toNumber())<t}containedWithin(e,t){return this.integral>=e&&this.integral<t}lt(e){return this.integral<e}lte(e){return this.integral<e||this.integral===e&&Math.abs(+this.fractional)<Number.EPSILON}gt(e){return this.integral>e||this.integral===e&&Math.abs(+this.fractional)>Number.EPSILON}gte(e){return this.integral>=e}clamp(e,t){return this.integral<e?new n(e):this.integral>=t?new n(t):this}abs(){var e,t;return 0n<=this.integral?this:(e=r.Time.fromRaw(-this.integral),t=-this.fractional,new n(e,t))}toString(){var e=this.fractional.toString();return\"0\"===e?this.integral.toString():\"\"+this.integral+e.substring(1)}}Tp.HighPrecisionTime=n}return Tp}function bp(){if(!mp){mp=1,Object.defineProperty(yp,\"__esModule\",{value:!0}),yp.HighPrecisionTimeSpan=void 0;const e=Fe(),n=vp();class a{static ZERO=new a(n.HighPrecisionTime.ZERO,0);start;duration;constructor(e,t){this.start=e,this.duration=t}static fromHpTimes(e,t){var r=n.HighPrecisionTime.min(e,t),e=n.HighPrecisionTime.max(e,t);return new a(r,Number(e.sub(r)))}static fromTime(e,t){return new a(new n.HighPrecisionTime(e),Number(t-e))}get midpoint(){return this.start.addNumber(this.duration/2)}get end(){return this.start.addNumber(this.duration)}equals(e){return this.start.equals(e.start)&&this.duration===e.duration}translate(e){return new a(this.start.addNumber(e),this.duration)}pad(e){return new a(this.start.subNumber(e),this.duration+2*e)}scale(e,t,r){var n=this.duration,e=Math.max(n*e,r),r=this.start.addNumber((n-e)*t);return new a(r,e)}intersect(e,t){var r;return this.overlaps(e,t)?(r=this.start.clamp(e,t),e=this.end.clamp(e,t).sub(r).toNumber(),new a(r,e)):a.ZERO}fitWithin(e,t){return this.duration>Number(t-e)?a.fromTime(e,t):this.start.integral<e?new a(new n.HighPrecisionTime(e),this.duration):this.end.gt(t)?new a(new n.HighPrecisionTime(t).subNumber(this.duration),this.duration):this}clampDuration(e){return this.duration<e?new a(this.start,e):this}contains(e){return this.start.lte(e)&&this.end.gt(e)}containsSpan(e,t){return this.start.lte(e)&&this.end.gte(t)}overlaps(e,t){return!(this.start.gte(t)||this.end.lte(e))}toTimeSpan(){return new e.TimeSpan(this.start.toTime(\"floor\"),this.end.toTime(\"ceil\"))}}yp.HighPrecisionTimeSpan=a}return yp}function Ep(){if(!gp){gp=1,Object.defineProperty(_p,\"__esModule\",{value:!0}),_p.TimelineImpl=void 0;const r=Pe(),n=Fe(),a=bp(),i=K(),o=vp(),s=Po();function t(e,t,r){e=function(e,t){e=e.getTime(),t=60*t*1e3,e=new Date(e+t);return e.setUTCHours(0,0,0,0),new Date(e.getTime()-t)}(n.Time.toDate(e,t),r);return n.Time.fromDate(e,t)}_p.TimelineImpl=class{traceInfo;_timestampFormat;_durationPrecision;timezoneOverride;_visibleWindow;_hoverCursorTimestamp;_highlightedSliceId;_hoveredNoteTimestamp;_hoveredUtid;_hoveredPid;selectedSpan;get highlightedSliceId(){return this._highlightedSliceId}set highlightedSliceId(e){this._highlightedSliceId=e,i.raf.scheduleCanvasRedraw()}get hoveredNoteTimestamp(){return this._hoveredNoteTimestamp}set hoveredNoteTimestamp(e){this._hoveredNoteTimestamp=e,i.raf.scheduleCanvasRedraw()}get hoveredUtid(){return this._hoveredUtid}set hoveredUtid(e){this._hoveredUtid=e,i.raf.scheduleCanvasRedraw()}get hoveredPid(){return this._hoveredPid}set hoveredPid(e){this._hoveredPid=e,i.raf.scheduleCanvasRedraw()}constructor(e,t,r,n){this.traceInfo=e,this._timestampFormat=t,this._durationPrecision=r,this.timezoneOverride=n,this._visibleWindow=a.HighPrecisionTimeSpan.fromTime(e.start,e.end)}zoomVisibleWindow(e,t){this._visibleWindow=this._visibleWindow.scale(e,t,10).fitWithin(this.traceInfo.start,this.traceInfo.end),i.raf.scheduleCanvasRedraw()}panVisibleWindow(e){this._visibleWindow=this._visibleWindow.translate(e).fitWithin(this.traceInfo.start,this.traceInfo.end),i.raf.scheduleCanvasRedraw()}panToTimestamp(e){var t;this._visibleWindow.contains(e)||(t=this.visibleWindow.duration/2,e=new o.HighPrecisionTime(e).subNumber(t),t=new a.HighPrecisionTimeSpan(e,this._visibleWindow.duration),this.updateVisibleTimeHP(t))}updateVisibleTime(e){this.updateVisibleTimeHP(a.HighPrecisionTimeSpan.fromTime(e.start,e.end))}setViewportTime(e,t){this.updateVisibleTime(new n.TimeSpan(e,t))}moveStart(e){this.updateVisibleTimeHP(new a.HighPrecisionTimeSpan(this._visibleWindow.start.addNumber(e),this.visibleWindow.duration-e))}moveEnd(e){this.updateVisibleTimeHP(new a.HighPrecisionTimeSpan(this._visibleWindow.start,this.visibleWindow.duration+e))}updateVisibleTimeHP(e){this._visibleWindow=e.clampDuration(10).fitWithin(this.traceInfo.start,this.traceInfo.end),i.raf.scheduleCanvasRedraw()}get visibleWindow(){return this._visibleWindow}get hoverCursorTimestamp(){return this._hoverCursorTimestamp}set hoverCursorTimestamp(e){this._hoverCursorTimestamp=e,i.raf.scheduleCanvasRedraw()}getTimeAxisOrigin(){var e=this.timestampFormat;switch(e){case s.TimestampFormat.Timecode:case s.TimestampFormat.Seconds:case s.TimestampFormat.Milliseconds:case s.TimestampFormat.Microseconds:return this.traceInfo.start;case s.TimestampFormat.TraceNs:case s.TimestampFormat.TraceNsLocale:return n.Time.ZERO;case s.TimestampFormat.UTC:return t(this.traceInfo.start,this.traceInfo.unixOffset,0);case s.TimestampFormat.CustomTimezone:return t(this.traceInfo.start,this.traceInfo.unixOffset,n.timezoneOffsetMap[this.timezoneOverride.get()]);case s.TimestampFormat.TraceTz:return t(this.traceInfo.start,this.traceInfo.unixOffset,this.traceInfo.tzOffMin);default:(0,r.assertUnreachable)(e)}}toDomainTime(e){return n.Time.sub(e,this.getTimeAxisOrigin())}get timestampFormat(){return this._timestampFormat.get()}set timestampFormat(e){this._timestampFormat.set(e)}get durationPrecision(){return this._durationPrecision.get()}set durationPrecision(e){this._durationPrecision.set(e)}get customTimezoneOffset(){return n.timezoneOffsetMap[this.timezoneOverride.get()]}}}return _p}var Sp={},Ap={};function Op(e){throw new Error('Could not dynamically require \"'+e+'\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Cp,wp,kp={exports:{}};function Ip(){if(!Cp){Cp=1;var e=kp.exports;{const r={216:\"O\",223:\"s\",248:\"o\",273:\"d\",295:\"h\",305:\"i\",320:\"l\",322:\"l\",359:\"t\",383:\"s\",384:\"b\",385:\"B\",387:\"b\",390:\"O\",392:\"c\",393:\"D\",394:\"D\",396:\"d\",398:\"E\",400:\"E\",402:\"f\",403:\"G\",407:\"I\",409:\"k\",410:\"l\",412:\"M\",413:\"N\",414:\"n\",415:\"O\",421:\"p\",427:\"t\",429:\"t\",430:\"T\",434:\"V\",436:\"y\",438:\"z\",477:\"e\",485:\"g\",544:\"N\",545:\"d\",549:\"z\",564:\"l\",565:\"n\",566:\"t\",567:\"j\",570:\"A\",571:\"C\",572:\"c\",573:\"L\",574:\"T\",575:\"s\",576:\"z\",579:\"B\",580:\"U\",581:\"V\",582:\"E\",583:\"e\",584:\"J\",585:\"j\",586:\"Q\",587:\"q\",588:\"R\",589:\"r\",590:\"Y\",591:\"y\",592:\"a\",593:\"a\",595:\"b\",596:\"o\",597:\"c\",598:\"d\",599:\"d\",600:\"e\",603:\"e\",604:\"e\",605:\"e\",606:\"e\",607:\"j\",608:\"g\",609:\"g\",610:\"G\",613:\"h\",614:\"h\",616:\"i\",618:\"I\",619:\"l\",620:\"l\",621:\"l\",623:\"m\",624:\"m\",625:\"m\",626:\"n\",627:\"n\",628:\"N\",629:\"o\",633:\"r\",634:\"r\",635:\"r\",636:\"r\",637:\"r\",638:\"r\",639:\"r\",640:\"R\",641:\"R\",642:\"s\",647:\"t\",648:\"t\",649:\"u\",651:\"v\",652:\"v\",653:\"w\",654:\"y\",655:\"Y\",656:\"z\",657:\"z\",663:\"c\",665:\"B\",666:\"e\",667:\"G\",668:\"H\",669:\"j\",670:\"k\",671:\"L\",672:\"q\",686:\"h\",867:\"a\",868:\"e\",869:\"i\",870:\"o\",871:\"u\",872:\"c\",873:\"d\",874:\"h\",875:\"m\",876:\"r\",877:\"t\",878:\"v\",879:\"x\",7424:\"A\",7427:\"B\",7428:\"C\",7429:\"D\",7431:\"E\",7432:\"e\",7433:\"i\",7434:\"J\",7435:\"K\",7436:\"L\",7437:\"M\",7438:\"N\",7439:\"O\",7440:\"O\",7441:\"o\",7442:\"o\",7443:\"o\",7446:\"o\",7447:\"o\",7448:\"P\",7449:\"R\",7450:\"R\",7451:\"T\",7452:\"U\",7453:\"u\",7454:\"u\",7455:\"m\",7456:\"V\",7457:\"W\",7458:\"Z\",7522:\"i\",7523:\"r\",7524:\"u\",7525:\"v\",7834:\"a\",7835:\"s\",8305:\"i\",8341:\"h\",8342:\"k\",8343:\"l\",8344:\"m\",8345:\"n\",8346:\"p\",8347:\"s\",8348:\"t\",8580:\"c\"};for(let e=\"̀\".codePointAt(0);e<=\"ͯ\".codePointAt(0);++e){var d=String.fromCodePoint(e);for(const le of\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"){var p=(le+d).normalize().codePointAt(0);126<p&&(r[p]=le)}}var t={a:[7844,7863],e:[7870,7879],o:[7888,7907],u:[7912,7921]};for(const u of Object.keys(t)){var f=u.toUpperCase();for(let e=t[u][0];e<=t[u][1];++e)r[e]=e%2==0?f:u}function ue(e){var t;return!(e<192||8580<e)&&void 0!==(t=r[e])?t.codePointAt(0):e}function de(e,t){return t<e?e:t}const h=e=>e.split(\"\").map(e=>e.codePointAt(0)),m=e=>e.map(e=>String.fromCodePoint(e)).join(\"\"),n=new Set(` \f\n\\r\t\u000b      　﻿`.split(\"\").map(e=>e.codePointAt(0)));for(let e=\" \".codePointAt(0);e<=\" \".codePointAt(0);e++)n.add(e);const T=e=>n.has(e),v=e=>{let t=0;for(const r of e){if(!T(r))break;t++}return t},b=t=>{let r=0;for(let e=t.length-1;0<=e&&T(t[e]);e--)r++;return r},ge=\"\".codePointAt(0),E=\"A\".codePointAt(0),S=\"Z\".codePointAt(0),o=\"a\".codePointAt(0),s=\"z\".codePointAt(0),q=\"0\".codePointAt(0),z=\"9\".codePointAt(0);function g(e,t,r){return r?e:t-e-1}const _e=16,ye=-3,Te=-1,ve=_e/2,W=_e/2,$=ve+Te,be=-(ye+Te),Ee=2;function pe(e){return e?new Set:null}function fe(e,t,r){return null!==t&&t.i16.length>e+r?[e+r,t.i16.subarray(e,e+r)]:[e,new Int16Array(r)]}function Ae(e,t,r){return null!==t&&t.i32.length>e+r?[e+r,t.i32.subarray(e,e+r)]:[e,new Int32Array(r)]}function Oe(e){return e>=o&&e<=s?1:e>=E&&e<=S?2:e>=q&&e<=z?4:0}function Ce(e){e=String.fromCodePoint(e);return e!==e.toUpperCase()?1:e!==e.toLowerCase()?2:null!==e.match(/\\p{Number}/gu)?4:null!==e.match(/\\p{Letter}/gu)?3:0}function _(e){return(e<=ge?Oe:Ce)(e)}function he(e,t){return 0===e&&0!==t?ve:1===e&&2===t||4!==e&&4===t?$:0===t?W:0}function O(e,t){return 0===t?ve:he(_(e[t-1]),_(e[t]))}function C(e,t,r,n){let a=e.slice(n),i=a.indexOf(r);return 0===i?n:(i=!t&&r>=o&&r<=s&&0<=(e=(a=0<i?a.slice(0,i):a).indexOf(r-32))?e:i)<0?-1:n+i}function w(e){for(const t of e)if(128<=t)return;return 1}function me(t,r,n){if(!w(t))return 0;if(!w(r))return-1;let a=0,i=0;for(let e=0;e<r.length;e++){if((i=C(t,n,r[e],i))<0)return-1;0===e&&0<i&&(a=i-1),i++}return a}const a=(t,L,a,r,n,e,i)=>{var o=n.length;if(0===o)return[{start:0,end:0,score:0},pe(e)];var s=r.length;if(null!==i&&s*o>i.i16.length)return Se(t,L,a,r,n,e);var l=me(r,n,t);if(l<0)return[{start:-1,end:-1,score:0},null];var c=0,u=0,d=null,F=null,p=null,f=null,[,h]=([c,d]=fe(0,i,s),[c,F]=fe(c,i,s),[c,p]=fe(c,i,s),[u,f]=Ae(0,i,o),Ae(u,i,s));for(let e=0;e<h.length;e++)h[e]=r[e];let m=0,g=0,_=0,y=0;var T,v,U=n[0];let B=n[0],j=0,H=0,G=!1,b=h.subarray(l),E=d.subarray(l).subarray(0,b.length),V=F.subarray(l).subarray(0,b.length),q=p.subarray(l).subarray(0,b.length);for([T,v]of b.entries()){let e=null;v<=ge?(e=Oe(v),t||2!==e||(v+=32)):(e=Ce(v),t||2!==e||(v=String.fromCodePoint(v).toLowerCase().codePointAt(0)),L&&(v=ue(v))),b[T]=v;var z=he(H,e);if(q[T]=z,H=e,v===B&&(_<o&&(f[_]=l+T,_++,B=n[Math.min(_,o-1)]),y=l+T),v===U){var S=_e+z*Ee;if(E[T]=S,(V[T]=1)===o&&(a&&S>m||!a&&S>=m)&&(m=S,g=l+T,a)&&z===ve)break;G=!1}else G?E[T]=de(j+Te,0):E[T]=de(j+ye,0),V[T]=0,G=!0;j=E[T]}if(_!==o)return[{start:-1,end:-1,score:0},null];if(1===o)return u={start:g,end:g+1,score:m},e?((s=new Set).add(g),[u,s]):[u,null];var W,$,A=f[0],O=y-A+1,C=null;[c,C]=fe(c,i,O*o);for([W,$]of d.subarray(A,y+1).entries())C[W]=$;var K,Y,[,w]=fe(c,i,O*o);for([K,Y]of F.subarray(A,y+1).entries())w[K]=Y;var J,k,s=f.subarray(1),Q=n.slice(1).slice(0,s.length);for([J,k]of s.entries()){let e=!1;var I,Z,X=Q[J],ee=J+1,R=ee*O,N=h.subarray(k,y+1),te=p.subarray(k).subarray(0,N.length),re=w.subarray(R+k-A).subarray(0,N.length),ne=w.subarray(R+k-A-1-O).subarray(0,N.length),ae=C.subarray(R+k-A).subarray(0,N.length),ie=C.subarray(R+k-A-1-O).subarray(0,N.length),oe=C.subarray(R+k-A-1).subarray(0,N.length);oe[0]=0;for([I,Z]of N.entries()){var se=I+k;let t=0,r=0,n=0;if(r=e?oe[I]+Te:oe[I]+ye,X===Z){t=ie[I]+_e;let e=te[I];n=ne[I]+1,e===ve?n=1:1<n&&(e=de(e,de(be,p[se-n+1]))),t+e<r?(t+=te[I],n=0):t+=e}re[I]=n,e=t<r;var M=de(de(t,r),0);ee===o-1&&(a&&M>m||!a&&M>=m)&&(m=M,g=se),ae[I]=M}}var le=pe(e);let P=A;if(e&&null!==le){let r=o-1,n=(P=g,!0);for(;;){var D=r*O,x=P-A,ce=C[D+x];let e=0,t=0;if(0<r&&P>=f[r]&&(e=C[D-O+x-1]),P>f[r]&&(t=C[D+x-1]),ce>e&&(ce>t||ce===t&&n)){if(le.add(P),0===r)break;r--}n=1<w[D+x]||D+O+x+1<w.length&&0<w[D+O+x+1],P--}}return[{start:P,end:g+1,score:m},le]};function y(r,n,a,i,e,o,s){let l=0,c=0,u=!1,d=0,p=0;var f=pe(s);let h=0;0<e&&(h=_(a[e-1]));for(let t=e;t<o;t++){let e=a[t];var m=_(e);if(r||(e>=E&&e<=S?e+=32:e>ge&&(e=String.fromCodePoint(e).toLowerCase().codePointAt(0))),(e=n?ue(e):e)===i[l]){s&&null!==f&&f.add(t),c+=_e;let e=he(h,m);0===d?p=e:(e===ve&&(p=e),e=de(de(e,p),be)),0===l?c+=e*Ee:c+=e,u=!1,d++,l++}else u?c+=Te:c+=ye,u=!0,d=0,p=0;h=m}return[c,f]}const Se=(i,o,s,l,c,e,t)=>{if(0===c.length)return[{start:0,end:0,score:0},null];if(!(me(l,c,i)<0)){let r=0,n=-1,a=-1;var u=l.length,d=c.length;for(let t=0;t<u;t++){let e=l[g(t,u,s)];i||(e>=E&&e<=S?e+=32:e>ge&&(e=String.fromCodePoint(e).toLowerCase().codePointAt(0))),o&&(e=ue(e));var p=c[g(r,d,s)];if(e===p&&(n<0&&(n=t),++r===d)){a=t+1;break}}if(0<=n&&0<=a){r--;for(let t=a-1;t>=n;t--){let e=l[g(t,u,s)];i||(e>=E&&e<=S?e+=32:e>ge&&(e=String.fromCodePoint(e).toLowerCase().codePointAt(0)));var f=c[g(r,d,s)];if(e===f&&--r<0){n=t;break}}s||(h=n,n=u-a,a=u-h);var[h,e]=y(i,o,l,c,n,a,e);return[{start:n,end:a,score:h},e]}}return[{start:-1,end:-1,score:0},null]},l=(o,s,l,c,u,e,t)=>{if(0===u.length)return[{start:0,end:0,score:0},null];var d=c.length,p=u.length;if(!(d<p||me(c,u,o)<0)){let r=0,n=-1,a=0,i=-1;for(let t=0;t<d;t++){var f=g(t,d,l);let e=c[f];o||(e>=E&&e<=S?e+=32:e>ge&&(e=String.fromCodePoint(e).toLowerCase().codePointAt(0))),s&&(e=ue(e));var h=g(r,p,l);if(u[h]===e){if(0===h&&(a=O(c,f)),++r===p){if(a>i&&(n=t,i=a),a===ve)break;t-=r-1,r=0,a=0}}else t-=r,r=0,a=0}if(0<=n){let e=0,t=0;t=l?(e=n-p+1,n+1):(e=d-(n+1),d-(n-p+1));var[m]=y(o,s,c,u,e,t,!1);return[{start:e,end:t,score:m},null]}}return[{start:-1,end:-1,score:0},null]},K=(t,r,e,n,a,i,o)=>{if(0===a.length)return[{start:0,end:0,score:0},null];let s=0;if(T(a[0])||(s=v(n)),n.length-s<a.length)return[{start:-1,end:-1,score:0},null];for(var[l,c]of a.entries()){let e=n[s+l];if(t||(e=String.fromCodePoint(e).toLowerCase().codePointAt(0)),(e=r?ue(e):e)!==c)return[{start:-1,end:-1,score:0},null]}var u=a.length,[a]=y(t,r,n,a,s,s+u,!1);return[{start:s,end:s+u,score:a},null]},Y=(t,r,e,n,a,i,o)=>{let s=n.length;if(0!==a.length&&T(a[a.length-1])||(s-=b(n)),0===a.length)return[{start:s,end:s,score:0},null];var l,c,u=s-a.length;if(u<0)return[{start:-1,end:-1,score:0},null];for([l,c]of a.entries()){let e=n[l+u];if(t||(e=String.fromCodePoint(e).toLowerCase().codePointAt(0)),(e=r?ue(e):e)!==c)return[{start:-1,end:-1,score:0},null]}var d=a.length,d=s-d,p=s,[a]=y(t,r,n,a,d,p,!1);return[{start:d,end:p,score:a},null]},J=(t,e,r,n,a,i,o)=>{var s=a.length;if(0===s)return[{start:-1,end:-1,score:0},null];let l=0,c=(T(a[0])||(l=v(n)),0);if(T(a[s-1])||(c=b(n)),n.length-l-c!=s)return[{start:-1,end:-1,score:0},null];let u=!0;if(e){var d,p,f=n;for([d,p]of a.entries()){let e=f[l+d];if(t||(e=String.fromCodePoint(e).toLowerCase().codePointAt(0)),ue(p)!==ue(e)){u=!1;break}}}else{let e=m(n).substring(l,n.length-c);t||(e=e.toLowerCase()),u=e===m(a)}return u?[{start:l,end:l+s,score:(_e+ve)*s+(Ee-1)*ve},null]:[{start:-1,end:-1,score:0},null]};function k(e,t){return{i16:new Int16Array(e),i32:new Int32Array(t)}}const A=k(102400,2048);var I=(e=>(e[e.Fuzzy=0]=\"Fuzzy\",e[e.Exact=1]=\"Exact\",e[e.Prefix=2]=\"Prefix\",e[e.Suffix=3]=\"Suffix\",e[e.Equal=4]=\"Equal\",e))({});const Q={[0]:a,1:l,2:K,3:Y,4:J};function R(e,t,r,n){let a=!0;var i=(n=n.trimLeft()).trimRight();let o=!1,s;e:for(const u of s=N(e,t,r,n=i.endsWith(\"\\\\\")&&\" \"===n[i.length]?i+\" \":i))for(var[l,c]of u.entries())if(c.inv||(o=!0),(!a||0<l||c.inv||e&&0!==c.typ||!e&&1!==c.typ)&&(a=!1,o))break e;return{str:n,termSets:s,sortable:o,cacheable:a,fuzzy:e}}function N(e,a,i,t){var o=[];let s=[],l=!1,c=!1;for(const f of(t=t.replace(/\\\\ /g,\"\\t\")).split(/ +/)){let t=0,r=!1,n=f.replace(/\\t/g,\" \");var u=n.toLowerCase(),d=\"case-sensitive\"===a||\"smart-case\"===a&&n!==u,p=i&&u===m(h(u).map(ue));if(d||(n=u),e||(t=1),0<s.length&&!c&&\"|\"===n)l=!1,c=!0;else if(c=!1,n.startsWith(\"!\")&&(r=!0,t=1,n=n.substring(1)),\"$\"!==n&&n.endsWith(\"$\")&&(t=3,n=n.substring(0,n.length-1)),n.startsWith(\"'\")?(t=e&&!r?1:0,n=n.substring(1)):n.startsWith(\"^\")&&(t=3===t?4:2,n=n.substring(1)),0<n.length){l&&(o.push(s),s=[]);let e=h(n);p&&(e=e.map(ue)),s.push({typ:t,inv:r,text:e,caseSensitive:d,normalize:p}),l=!0}}return 0<s.length&&o.push(s),o}const Z=(e,t,r)=>{let n=!1;switch(t){case\"smart-case\":e.toLowerCase()!==e&&(n=!0);break;case\"case-sensitive\":n=!0;break;case\"case-insensitive\":e=e.toLowerCase(),n=!1}let a=h(e);return{queryRunes:a=r?a.map(ue):a,caseSensitive:n}};function M(e,t,r,n,a,i,o){for(const d of t){var[s,l]=e(r,n,a,d.text,i,!0,o);if(0<=s.start){var c=s.start+d.prefixLength,u=s.end+d.prefixLength;if(null===l)return[[c,u],s.score,l];{const p=new Set;return l.forEach(e=>p.add(d.prefixLength+e)),[[c,u],s.score,p]}}}return[[-1,-1],0,null]}function P(e,t,a,i){var o=[{text:e,prefixLength:0}],s=[];let l=0;const c=new Set;for(const f of t.termSets){let t=[0,0],r=0,n=!1;for(const h of f){let e=Q[h.typ];var[u,d,p]=M(e=h.typ===I.Fuzzy?a:e,o,h.caseSensitive,h.normalize,i,h.text,A);if(0<=u[0]){if(!h.inv){if(t=u,r=d,n=!0,null!==p)p.forEach(e=>c.add(e));else for(let e=u[0];e<u[1];++e)c.add(e);break}}else if(h.inv){t=[0,0],r=0,n=!0;continue}}n&&(s.push(t),l+=r)}return{offsets:s,totalScore:l,allPos:c}}function i(e,t){let r=[];for(const n of Object.keys(e).map(e=>parseInt(e,10)).sort((e,t)=>t-e))if(r=r.concat(e[n]),r.length>=t)break;return r}function D(a,i,o){return e=>{var n=this.runesList[e];if(!(i.length>n.length)){let[t,r]=this.algoFn(o,this.opts.normalize,this.opts.forward,n,i,!0,A);if(-1!==t.start){if(!1===this.opts.fuzzy){r=new Set;for(let e=t.start;e<t.end;++e)r.add(e)}n=this.opts.sort?t.score:0;void 0===a[n]&&(a[n]=[]),a[n].push({item:this.items[e],...t,positions:null!=r?r:new Set})}}}}function x(i,e){return r=>{var n=P(this.runesList[r],e,this.algoFn,this.opts.forward);if(n.offsets.length===e.termSets.length){let e=-1,t=-1;0<n.allPos.size&&(e=Math.min(...n.allPos),t=Math.max(...n.allPos)+1);var a=this.opts.sort?n.totalScore:0;void 0===i[a]&&(i[a]=[]),i[a].push({score:n.totalScore,item:this.items[r],positions:n.allPos,start:e,end:t})}}}function L(e){var{queryRunes:e,caseSensitive:t}=Z(e,this.opts.casing,this.opts.normalize),r={},n=D.bind(this)(r,e,t);for(let e=0,t=this.runesList.length;e<t;++e)n(e);return i(r,this.opts.limit)}function F(e){var e=R(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,e),t={},r=x.bind(this)(t,e);for(let e=0,t=this.runesList.length;e<t;++e)r(e);return i(t,this.opts.limit)}const X=void 0!==Op&&\"undefined\"==typeof window;function U(i,o,s,l){return new Promise((e,t)=>{let r=0,n=Math.min(1e3,o);const a=()=>{if(i.cancelled)return t(\"search cancelled\");for(;r<n;++r)s(r);n<o?(n=Math.min(n+1e3,o),(X?setImmediate:setTimeout)(a)):e(l())};a()})}function B(e,t){const{queryRunes:r,caseSensitive:n}=Z(e,this.opts.casing,this.opts.normalize),a={};return U(t,this.runesList.length,D.bind(this)(a,r,n),()=>i(a,this.opts.limit))}function j(e,t){const r=R(Boolean(this.opts.fuzzy),this.opts.casing,this.opts.normalize,e),n={};return U(t,this.runesList.length,x.bind(this)(n,r),()=>i(n,this.opts.limit))}const c={limit:1/0,selector:e=>e,casing:\"smart-case\",normalize:!0,fuzzy:\"v2\",tiebreakers:[],sort:!0,forward:!0};class ee{constructor(e,...t){switch(this.opts={...c,...t[0]},this.items=e,this.runesList=e.map(e=>h(this.opts.selector(e).normalize())),this.algoFn=l,this.opts.fuzzy){case\"v2\":this.algoFn=a;break;case\"v1\":this.algoFn=Se}}}const te={...c,match:L};class re extends ee{constructor(e,...t){super(e,...t),this.opts={...te,...t[0]}}find(e){return 0===e.length||0===this.items.length?this.items.slice(0,this.opts.limit).map(ie):(e=e.normalize(),H(this.opts.match.bind(this)(e),this.opts))}}const ne={...c,match:B};class ae extends ee{constructor(e,...t){super(e,...t),this.opts={...ne,...t[0]},this.token={cancelled:!1}}async find(e){return this.token.cancelled=!0,this.token={cancelled:!1},0===e.length||0===this.items.length?this.items.slice(0,this.opts.limit).map(ie):(e=e.normalize(),H(await this.opts.match.bind(this)(e,this.token),this.opts))}}const ie=e=>({item:e,start:-1,end:-1,score:0,positions:new Set});function H(e,a){if(a.sort){const i=a[\"selector\"];e.sort((e,t)=>{if(e.score===t.score)for(const n of a.tiebreakers){var r=n(e,t,i);if(0!==r)return r}return 0})}return Number.isFinite(a.limit)&&e.splice(a.limit),e}function G(e,t,r){return r(e.item).length-r(t.item).length}function V(e,t){return e.start-t.start}class oe{constructor(e,...t){this.finder=new re(e,...t),this.find=this.finder.find.bind(this.finder)}}class se{constructor(e,...t){this.finder=new ae(e,...t),this.find=this.finder.find.bind(this.finder)}}e.AsyncFzf=se,e.Fzf=oe,e.asyncBasicMatch=B,e.asyncExtendedMatch=j,e.basicMatch=L,e.byLengthAsc=G,e.byStartAsc=V,e.extendedMatch=F,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:\"Module\"}})}}return kp.exports}function Rp(){if(!wp){wp=1,Object.defineProperty(Ap,\"__esModule\",{value:!0}),Ap.FuzzyFinder=void 0,Ap.fuzzyMatch=function(e,...t){for(const n of t){var r=new Array(n.length);if(function(t,r,n){let a=0,i=!0;for(let e=0;e<t.length;++e){for(var o=t[e].toLowerCase();a<r.length;++a)if(r[a].toLowerCase()===o){n[e]=a;break}if(a===r.length){i=!1;break}++a}return i}(n,e,r))return{matches:!0,segments:a(r,e)}}return{matches:!1,segments:[]}};const r=Ip();function a(e,t){var r=[];let n=0,a=\"\";for(const i of e)n<i&&(\"\"!==a&&(r.push({matching:!0,value:a}),a=\"\"),r.push({matching:!1,value:t.slice(n,i)})),a+=t[i],n=i+1;return\"\"!==a&&r.push({matching:!0,value:a}),n<t.length&&r.push({matching:!1,value:t.slice(n)}),r}Ap.FuzzyFinder=class{keyLookup;fzf;constructor(e,t){t=[{selector:this.keyLookup=t,tiebreakers:[r.byLengthAsc]}];this.fzf=new r.Fzf(e,...t)}find(e){return this.fzf.find(e).map(e=>{var t=this.keyLookup(e.item);return{item:e.item,segments:a(Array.from(e.positions).sort((e,t)=>e-t),t)}})}}}return Ap}var Np,Mp,Pp={};function Dp(){if(!Np){Np=1,Object.defineProperty(Pp,\"__esModule\",{value:!0}),Pp.Registry=Pp.RegistryError=void 0;class r extends Error{constructor(e){super(e),this.name=this.constructor.name}}Pp.RegistryError=r;Pp.Registry=class e{key;registry;static kindRegistry(){return new e(e=>e.kind)}constructor(e){this.registry=new Map,this.key=e}register(e){const t=this.key(e);if(this.registry.has(t))throw new r(`Registrant ${t} already exists in the registry`);return this.registry.set(t,e),{[Symbol.dispose]:()=>this.registry.delete(t)}}has(e){return this.registry.has(e)}get(e){var t=this.registry.get(e);if(void 0===t)throw new r(e+\" has not been registered.\");return t}tryGet(e){return this.registry.get(e)}*values(){yield*this.registry.values()}valuesAsArray(){return Array.from(this.values())}unregisterAllForTesting(){this.registry.clear()}}}return Pp}function xp(){if(!Mp){Mp=1;{var r=Sp;Object.defineProperty(r,\"__esModule\",{value:!0}),r.CommandManagerImpl=r.commandInvocationArraySchema=r.commandInvocationSchema=void 0,r.parseUrlCommands=function(e){if(!e)return;try{var t=JSON.parse(e);return r.commandInvocationArraySchema.parse(t)}catch{}};var e=Ne();const n=Rp();var t=Dp();const a=K();r.commandInvocationSchema=e.z.object({id:e.z.string(),args:e.z.array(e.z.string())}),r.commandInvocationArraySchema=e.z.array(r.commandInvocationSchema);r.CommandManagerImpl=class{registry=new t.Registry(e=>e.id);allowlistCheckFn=()=>!0;getCommand(e){return this.registry.get(e)}hasCommand(e){return this.registry.has(e)}get commands(){return Array.from(this.registry.values())}registerCommand(e){return this.registry.register(e)}setAllowlistCheck(e){this.allowlistCheckFn=e}runCommand(e,...t){if(this.allowlistCheckFn(e))return t=this.registry.get(e).callback(...t),Promise.resolve(t).finally(()=>a.raf.scheduleFullRedraw()),t;console.warn(`Command ${e} is not allowed in current execution context`)}fuzzyFilterCommands(e){return new n.FuzzyFinder(this.commands,({name:e})=>e).find(e).map(e=>({segments:e.segments,...e.item}))}hasStartupCommands(){throw new Error(\"hasStartupCommands() should only be called on trace command manager\")}async runStartupCommands(){throw new Error(\"runStartupCommands() should only be called on trace command manager\")}}}}return Sp}var Lp,Fp={};var Up,Bp={};function jp(){if(!Up){Up=1,Object.defineProperty(Bp,\"__esModule\",{value:!0}),Bp.OmniboxManagerImpl=Bp.OmniboxMode=void 0;const n=K();var i,e;(e=i||(Bp.OmniboxMode=i={}))[e.Search=0]=\"Search\",e[e.Query=1]=\"Query\",e[e.Command=2]=\"Command\",e[e.Prompt=3]=\"Prompt\";const t=i.Search;Bp.OmniboxManagerImpl=class{_mode=t;_focusOmniboxNextRender=!1;_pendingCursorPlacement;_pendingPrompt;_omniboxSelectionIndex=0;_forceShortTextSearch=!1;_text=\"\";_statusMessageContainer={};_promptsDisabled=!1;get mode(){return this._mode}get pendingPrompt(){return this._pendingPrompt}get text(){return this._text}get selectionIndex(){return this._omniboxSelectionIndex}get focusOmniboxNextRender(){return this._focusOmniboxNextRender}get pendingCursorPlacement(){return this._pendingCursorPlacement}get forceShortTextSearch(){return this._forceShortTextSearch}setText(e){this._text=e}setSelectionIndex(e){this._omniboxSelectionIndex=e}focus(e){this._focusOmniboxNextRender=!0,this._pendingCursorPlacement=e}clearFocusFlag(){this._focusOmniboxNextRender=!1,this._pendingCursorPlacement=void 0}setMode(e,t=!0){this._mode=e,this._focusOmniboxNextRender=t,this._omniboxSelectionIndex=0,this._text=\"\",this.rejectPendingPrompt()}showStatusMessage(e,t=2e3){const r={msg:e};0<t&&setTimeout(()=>{r.msg=void 0,n.raf.scheduleFullRedraw()},t),this._statusMessageContainer=r}get statusMessage(){return this._statusMessageContainer.msg}prompt(n,e){if(this._promptsDisabled)return Promise.resolve(void 0);if(this._mode=i.Prompt,this._omniboxSelectionIndex=0,this.rejectPendingPrompt(),this._focusOmniboxNextRender=!0,void 0!==e&&\"object\"==typeof e&&\"getName\"in e){const a=e;return new Promise(t=>{const r=new Map(a.values.map(e=>[a.getName(e),e]));this._pendingPrompt={text:n,options:Array.from(r.keys()).map(e=>({key:e,displayName:e})),resolve:e=>t(r.get(e))}})}if(void 0!==e&&Array.isArray(e)){const r=e;return new Promise(e=>{this._pendingPrompt={text:n,options:r.map(e=>({key:e,displayName:e})),resolve:e}})}const t=\"string\"==typeof e?e:void 0;return new Promise(e=>{void 0!==t&&this.setText(t),this._pendingPrompt={text:n,resolve:e}})}resolvePrompt(e){this._pendingPrompt&&(this._pendingPrompt.resolve(e),this._pendingPrompt=void 0),this.setMode(i.Search)}rejectPrompt(){this.rejectPendingPrompt(),this.setMode(i.Search)}reset(e=!0){this.setMode(t,e),this._omniboxSelectionIndex=0,this._statusMessageContainer={}}disablePrompts(){this._promptsDisabled=!0,this.rejectPendingPrompt()}enablePrompts(){this._promptsDisabled=!1}rejectPendingPrompt(){this._pendingPrompt&&(this._pendingPrompt.resolve(void 0),this._pendingPrompt=void 0)}}}return Bp}var Hp,Gp,Vp={},qp={};function zp(){if(!Hp){Hp=1,Object.defineProperty(qp,\"__esModule\",{value:!0}),qp.searchTrackEvents=async function(e,t,r,n){let a=[];for(const c of r){var i,o=c.selectTracks(t);0!==o.length&&(i=await c.getSearchFilter(n))&&(o=await async function(e,t,r){t=function(e){var t=new Map;for(const n of e){var r=n.renderer.getDataset?.();if(r){const a=r.src;!function(e,t,r){var n=r.filter,r=r.schema;for(var[a,i]of Object.entries(r))e.schema[a]=i;if(void 0===n)e.nonPartitioned.push(t);else{const s=(0,d.getOrCreate)(e.partitioned,n.col,()=>new Map);var o=e=>{e=\"number\"==typeof(e=e)&&Number.isInteger(e)?BigInt(e):e;(0,d.getOrCreate)(s,e,()=>[]).push(t)};if(\"eq\"in n)o(n.eq);else for(const l of n.in)o(l)}}((0,d.getOrCreate)(t,a,()=>({src:a,schema:{},nonPartitioned:[],partitioned:new Map})),n,r)}}return t}(t),e=await async function(e,t,r){let n=[];for(const i of t.values()){var a;new p.SourceDataset({src:i.src,schema:i.schema}).implements({id:m.NUM,ts:m.LONG})&&(a=await async function(e,t,r){var n=[],a=Array.from(e.partitioned.keys()),i=Object.fromEntries(a.map(e=>[e,m.UNKNOWN])),i={id:m.NUM,ts:m.LONG,...i},o=[\"id\",\"ts\",...a],o=`\n    SELECT\n      ${o.map(e=>`source.${e} AS `+e).join()}\n    FROM (${e.src}) AS source\n    ${t.join?\"JOIN \"+t.join:\"\"}\n    WHERE ${t.where}\n  `,t=await r.query(o);for(var s=t.iter(i);s.valid();s.next()){var l=s.id,c=h.Time.fromRaw(s.ts);for(const d of a){var u=s.get(d),u=e.partitioned.get(d)?.get(u);if(u)for(const p of u)n.push({id:l,ts:c,track:p})}for(const f of e.nonPartitioned)n.push({id:l,ts:c,track:f})}return n}(i,r,e),n=n.concat(a))}return n}(e,t,r);return e}(e,o,i),a=a.concat(o))}var s=new Map;for(const u of a){var l=u.id+\"-\"+u.track.uri;s.has(l)||s.set(l,u)}r=Array.from(s.values()).sort((e,t)=>Number(e.ts-t.ts));return r};const h=Fe(),d=Me(),p=ze(),m=Ue()}return qp}var Wp,$p,Kp={},Yp={};function Ke(){if(!Wp){Wp=1,Object.defineProperty(Yp,\"__esModule\",{value:!0}),Yp.Modal=void 0,Yp.maybeRenderFullscreenModalDialog=function(){if(void 0===i)return[];let e;e=void 0===i.content?null:\"function\"==typeof i.content?i.content():i.content;return[(0,c.default)(t,i,e)]},Yp.showModal=async function(e){const t=(0,u.defer)(),r=e.onClose??(()=>{}),n=e.key??\"\"+ ++o,a={...e,key:n,onClose:()=>{r(),t.resolve()}};return i=a,s(),t},Yp.redrawModal=s,Yp.closeModal=l,Yp.getCurrentModalKey=function(){return i?.key};const c=Jr.__importDefault(xe()),u=Ja(),d=Ee(),p=je(),f=Be();class t{onbeforeremove(e){const t=(0,u.defer)();return e.dom.addEventListener(\"animationend\",()=>{c.default.redraw(),t.resolve()}),e.dom.classList.add(\"modal-fadeout\"),t}onremove(e){void 0!==e.attrs.onClose&&e.attrs.onClose()}oncreate(e){e.dom instanceof HTMLElement&&((e.dom.querySelector(\".pf-button.pf-intent-primary\")||e.dom).focus(),e.dom.scrollIntoView({block:\"center\"}))}view(e){const t=e.attrs;var r=[];for(const i of t.buttons||[])r.push((0,c.default)(p.Button,{intent:i.primary?f.Intent.Primary:f.Intent.None,variant:p.ButtonVariant.Filled,id:i.id,onclick:()=>{l(t.key),void 0!==i.action&&i.action()},label:i.text,disabled:i.disabled}));var n=\"TOP\"===t.vAlign?\".pf-modal-dialog-valign-top\":\"\",a=t.className?\".\"+t.className:\"\";return(0,c.default)(\".pf-modal-backdrop\",{onclick:this.onBackdropClick.bind(this,t),onkeydown:this.onBackdropKeydown.bind(this,t),tabIndex:0},(0,c.default)(`.pf-modal-dialog${n}${a}[aria-labelledby=mm-title][aria-model][role=dialog]`,(0,c.default)(\"header\",(0,c.default)(\".modal-title\",t.icon&&(0,c.default)(d.Icon,{icon:t.icon}),(0,c.default)(\"h2\",{id:\"mm-title\"},t.title)),(0,c.default)(\"button[aria-label=Close Modal]\",{onclick:()=>l(t.key)},(0,c.default)(d.Icon,{icon:\"close\"}))),(0,c.default)(\"main\",e.children),0<r.length?(0,c.default)(\"footer\",r):null))}onBackdropClick(e,t){t.stopPropagation();t=t.target;t instanceof Element&&t.classList.contains(\"modal-backdrop\")&&l(e.key)}onBackdropKeydown(e,t){t.stopPropagation(),\"Escape\"===t.key&&l(e.key)}}Yp.Modal=t;let i=void 0,o=0;function s(){void 0!==i&&c.default.redraw()}function l(e){void 0===i||void 0!==e&&i.key!==e||(i=void 0,c.default.redraw())}}return Yp}var Jp,Qp,Zp,Xp,ef={},tf={},rf={},nf={};function af(){if(!Jp){Jp=1,Object.defineProperty(nf,\"__esModule\",{value:!0}),nf.TouchscreenHandler=void 0,nf.convertTouchIntoMouseEvents=function(l,t){return new n(l,{onTapDown(e){t.includes(\"down-up-move\")&&l.dispatchEvent(new MouseEvent(\"mousedown\",{bubbles:!0,buttons:1,...e}))},onTapUp(e){t.includes(\"down-up-move\")&&l.dispatchEvent(new MouseEvent(\"mouseup\",{bubbles:!0,buttons:0,...e}))},onTapMove(e){t.includes(\"down-up-move\")&&l.dispatchEvent(new MouseEvent(\"mousemove\",{bubbles:!0,buttons:1,movementX:e.deltaX,movementY:e.deltaY,...e}))},onPan(r){if(Math.abs(r.deltaX)>Math.abs(r.deltaY)&&t.includes(\"pan-x\")){var n=r.deltaX;var a=0;var i=e=>l.dispatchEvent(new WheelEvent(\"wheel\",{...r,deltaX:e,deltaY:0,ctrlKey:!1}));var e=void 0;const o=e?.friction??.8,s=e?.minVelocity??.05;let t=null;t=requestAnimationFrame(function e(){n*=o,a*=o,Math.abs(n)<s&&Math.abs(a)<s?null!==t&&cancelAnimationFrame(t):(i(n,a),t=requestAnimationFrame(e))})}},onPinchZoom(e){t.includes(\"pinch-zoom-as-ctrl-wheel\")&&l.dispatchEvent(new WheelEvent(\"wheel\",{...e,deltaX:0,deltaY:e.deltaY,ctrlKey:!0}))}})};var e=Le();const r=_i(),t=Pe();class n{trash=new e.DisposableStack;callbacks;tapStart;tapStartTime=0;tapGeneration=0;lastTouch;lastPinch;mode;constructor(e,t){this.callbacks=t,this.trash.use((0,r.bindEventListener)(e,\"touchstart\",this.onTouchStart.bind(this))),this.trash.use((0,r.bindEventListener)(e,\"touchmove\",this.onTouchMove.bind(this),{passive:!1})),this.trash.use((0,r.bindEventListener)(e,\"touchend\",this.onTouchEnd.bind(this)))}[Symbol.dispose](){this.trash.dispose()}onTouchStart=e=>{if(2===e.touches.length)this.mode=\"pinch\";else if(1===e.touches.length){const t=e.touches[0],r=(this.tapStart=t,this.tapStartTime=performance.now(),this.lastTouch=t,this.mode=\"deciding\",++this.tapGeneration);self.setTimeout(()=>{this.tapGeneration===r&&\"deciding\"===this.mode&&this.initiateMouseEmulation(t)},200)}};initiateMouseEmulation(e){(0,t.assertTrue)(\"deciding\"===this.mode),this.mode=\"mouse_emulation\",this.callbacks.onTapDown?.({deltaX:0,deltaY:0,clientX:e.clientX,clientY:e.clientY})}onTouchMove=e=>{if(!(e.touches.length<1||2<e.touches.length)&&this.tapStart)if(2===e.touches.length)e.preventDefault(),\"mouse_emulation\"===this.mode&&void 0!==this.tapStart&&this.callbacks.onTapUp?.({deltaX:0,deltaY:0,...this.tapStart}),this.mode=\"pinch\",this.handlePinch(e);else if(\"pinch\"===this.mode)e.preventDefault();else{var t=e.touches[0],r=t.clientX-this.tapStart.clientX,n=t.clientY-this.tapStart.clientY,r=r*r+n*n,n=(this.lastTouch||=this.tapStart,this.lastTouch.clientX-t.clientX),a=this.lastTouch.clientY-t.clientY,n={clientX:t.clientX,clientY:t.clientY,deltaX:n,deltaY:a},a=(this.lastTouch=t,performance.now()-this.tapStartTime);if(\"deciding\"===this.mode)if(25<r&&a<200)this.mode=\"pan\";else{if(!(200<=a))return;this.initiateMouseEmulation(this.tapStart)}\"mouse_emulation\"===this.mode?(e.preventDefault(),this.callbacks.onTapMove?.({...n})):\"pan\"===this.mode&&this.callbacks.onPan?.({...n})}};onTouchEnd=e=>{this.tapStart=void 0;var t=this.mode;this.mode=void 0,this.lastTouch=void 0,this.lastPinch=void 0,\"mouse_emulation\"===t&&(t=e.changedTouches[0],this.callbacks.onTapUp?.({deltaX:0,deltaY:0,clientX:t.clientX,clientY:t.clientY}))};handlePinch(e){var t,r;function n(e){var t=e[0].clientX-e[1].clientX,e=e[0].clientY-e[1].clientY;return Math.sqrt(t*t+e*e)}2===e.touches.length&&(void 0===this.lastPinch&&(this.lastPinch=[e.touches[0],e.touches[1]]),t=Math.round(n(this.lastPinch)-n(e.touches)),this.lastPinch=[e.touches[0],e.touches[1]],r=(e.touches[0].clientX+e.touches[1].clientX)/2,e=(e.touches[0].clientY+e.touches[1].clientY)/2,this.callbacks.onPinchZoom?.({clientX:Math.round(r),clientY:Math.round(e),deltaX:t,deltaY:t}))}}nf.TouchscreenHandler=n}return nf}function of(){if(!Zp){Zp=1,Object.defineProperty(tf,\"__esModule\",{value:!0}),tf.SplitPanel=tf.SplitPanelDrawerVisibility=tf.Tab=void 0,tf.toggleVisibility=n;const l=Jr.__importDefault(xe());var s,e,t=Le();const o=_i(),c=function(){if(!Qp){Qp=1,Object.defineProperty(rf,\"__esModule\",{value:!0}),rf.DragGestureHandler=void 0;const t=Jr.__importDefault(xe());var e=Le();const a=af();class r{element;onDrag;onDragStarted;onDragFinished;boundOnMouseDown=this.onMouseDown.bind(this);boundOnMouseMove=this.onMouseMove.bind(this);boundOnMouseUp=this.onMouseUp.bind(this);clientRect;pendingMouseDownEvent;_isDragging=!1;_trash=new e.DisposableStack;constructor(e,t,r=()=>{},n=()=>{}){this.element=e,this.onDrag=t,this.onDragStarted=r,this.onDragFinished=n,e.addEventListener(\"mousedown\",this.boundOnMouseDown),this._trash.use((0,a.convertTouchIntoMouseEvents)(e,[\"down-up-move\"])),this._trash.defer(()=>{this._isDragging&&this.onMouseUp(),document.body.removeEventListener(\"mousedown\",this.boundOnMouseDown),document.body.removeEventListener(\"mousemove\",this.boundOnMouseMove),document.body.removeEventListener(\"mouseup\",this.boundOnMouseUp)})}onMouseDown(e){this._isDragging=!0,document.body.addEventListener(\"mousemove\",this.boundOnMouseMove),document.body.addEventListener(\"mouseup\",this.boundOnMouseUp),this.pendingMouseDownEvent=e}startDragGesture(e){this.clientRect=this.element.getBoundingClientRect(),this.onDragStarted(e.clientX-this.clientRect.left,e.clientY-this.clientRect.top),t.default.redraw()}onMouseMove(e){if(0===e.buttons)return this.onMouseUp();this.pendingMouseDownEvent&&(1<Math.abs(e.clientX-this.pendingMouseDownEvent.clientX)||1<Math.abs(e.clientY-this.pendingMouseDownEvent.clientY))&&(this.startDragGesture(this.pendingMouseDownEvent),this.pendingMouseDownEvent=void 0),this.pendingMouseDownEvent||this.onDrag(e.clientX-this.clientRect.left,e.clientY-this.clientRect.top)}onMouseUp(){this._isDragging=!1,document.body.removeEventListener(\"mousemove\",this.boundOnMouseMove),document.body.removeEventListener(\"mouseup\",this.boundOnMouseUp),this.pendingMouseDownEvent||(this.onDragFinished(),t.default.redraw())}get isDragging(){return this._isDragging}[Symbol.dispose](){this._trash.dispose()}}rf.DragGestureHandler=r}return rf}(),u=Pe(),i=je(),d=be(),p=Ae();tf.Tab=class{view({attrs:t,children:e}){const{active:r,hasCloseButton:n,...a}=t;return(0,l.default)(\".pf-split-panel__tab\",{...a,className:(0,d.classNames)(r&&\"pf-split-panel__tab--active\"),onauxclick:()=>{t.onClose?.()}},(0,l.default)(\".pf-split-panel__tab-title\",e),n&&(0,l.default)(i.Button,{compact:!0,icon:p.Icons.Close,onclick:e=>{e.stopPropagation(),t.onClose?.()}}))}},(e=s||(tf.SplitPanelDrawerVisibility=s={}))[e.VISIBLE=0]=\"VISIBLE\",e[e.FULLSCREEN=1]=\"FULLSCREEN\",e[e.COLLAPSED=2]=\"COLLAPSED\";function n(e){switch(e){case s.COLLAPSED:case s.FULLSCREEN:return s.VISIBLE;case s.VISIBLE:return s.COLLAPSED;default:(0,u.assertUnreachable)(e)}}tf.SplitPanel=class{trash=new t.DisposableStack;height=0;resizableHeight;fullscreenHeight=0;visibility=s.VISIBLE;constructor({attrs:e}){this.resizableHeight=e.startingHeight??100}view({attrs:e,children:t}){var{leftHandleContent:e,drawerContent:r,visibility:n=this.visibility,className:a,onVisibilityChange:i,tabs:o}=e;switch(n){case s.VISIBLE:this.height=Math.min(Math.max(this.resizableHeight,0),this.fullscreenHeight);break;case s.FULLSCREEN:this.height=this.fullscreenHeight;break;case s.COLLAPSED:this.height=0}return(0,l.default)(\".pf-split-panel\",{className:a},(0,l.default)(\".pf-split-panel__main\",t),(0,l.default)(\".pf-split-panel__handle\",[e,(0,l.default)(\".pf-split-panel__tabs\",o),this.renderTabResizeButtons(n,i)]),(0,l.default)(\".pf-split-panel__drawer\",{style:{height:this.height+\"px\"}},r))}oncreate(r){let n=0,a=0;var e=(0,o.toHTMLElement)((0,u.assertExists)(r.dom.querySelector(\".pf-split-panel__handle\")));this.trash.use(new c.DragGestureHandler(e,(e,t)=>{t=n-t;this.resizableHeight=a+t,l.default.redraw()},(e,t)=>{this.resizableHeight=this.height,a=this.height,n=t,this.updatePanelVisibility(s.VISIBLE,r.attrs.onVisibilityChange)},()=>{}));const t=(0,u.assertExists)(r.dom.parentElement),i=(this.fullscreenHeight=t.clientHeight,new ResizeObserver(()=>{this.fullscreenHeight=t.clientHeight,l.default.redraw()}));i.observe(t),this.trash.defer(()=>i.disconnect())}onremove(){this.trash.dispose()}renderTabResizeButtons(e,t){var r=e===s.COLLAPSED;return(0,l.default)(i.ButtonBar,(0,l.default)(i.Button,{title:\"Open fullscreen\",disabled:e===s.FULLSCREEN,icon:\"vertical_align_top\",onclick:()=>{this.updatePanelVisibility(s.FULLSCREEN,t)}}),(0,l.default)(i.Button,{onclick:()=>{this.updatePanelVisibility(n(e),t)},title:r?\"Show panel\":\"Hide panel\",icon:r?\"keyboard_arrow_up\":\"keyboard_arrow_down\"}))}updatePanelVisibility(e,t){this.visibility=e,t?.(e)}}}return tf}var sf,lf={};function cf(){if(sf)return lf;sf=1,Object.defineProperty(lf,\"__esModule\",{value:!0}),lf.TrackManagerImpl=lf.TrackFilterState=void 0,lf.trackMatchesFilter=function(e,t){var r=e.tracks.filters;if(\"\"!==r.nameFilter){var n=r.nameFilter.split(\",\").map(e=>e.trim()).filter(e=>\"\"!==e);const a=t.name.toLowerCase();if(!n.some(e=>a.includes(e.toLowerCase())))return!1}for(const[i,o]of r.criteriaFilters){const s=e.tracks.trackFilterCriteria.find(e=>e.name===i);if(s&&!o.some(e=>s.predicate(t,e)))return!1}return!0};var e=Dp(),t=Qc();class r{nameFilter=\"\";criteriaFilters=new Map;clearAll(){this.nameFilter=\"\",this.criteriaFilters.clear()}areFiltersSet(){return\"\"!==this.nameFilter||0<this.criteriaFilters.size}}lf.TrackFilterState=r;lf.TrackManagerImpl=class{tracks=new e.Registry(e=>e.desc.uri);_overlays=[];scrollToTrackNodeId;filterCriteria=[];filters=new r;registerTrack(e){return this.tracks.register(new n(e))}registerOverlay(t){return this._overlays.push(t),{[Symbol.dispose]:()=>{var e=this._overlays.indexOf(t);-1!==e&&this._overlays.splice(e,1)}}}findTrack(e){for(const t of this.tracks.values())if(e(t.desc))return t.desc}getAllTracks(){return Array.from(this.tracks.valuesAsArray().map(e=>e.desc))}getTrack(e){return this.tracks.tryGet(e)?.desc}getTrackFSM(e){e=this.tracks.tryGet(e);return e?.markUsed(),e}flushOldTracks(){for(const e of this.tracks.values())e.tick()}registerTrackFilterCriteria(e){this.filterCriteria.push(e)}get trackFilterCriteria(){return this.filterCriteria}get overlays(){return this._overlays}};class n{desc;limiter=new t.AsyncLimiter;error;tickSinceLastUsed=0;created=!1;constructor(e){this.desc=e}markUsed(){this.tickSinceLastUsed=0}tick(){1==this.tickSinceLastUsed++&&this.limiter.schedule(async()=>{if(void 0===this.error)try{this.created&&(await Promise.resolve(this.track.onDestroy?.()),this.created=!1)}catch(e){this.error=e}})}render(e){this.limiter.schedule(async()=>{if(void 0===this.error)try{this.created||(await this.track.onCreate?.(e),this.created=!0),await Promise.resolve(this.track.onUpdate?.(e))}catch(e){this.error=e}}),this.track.render(e)}getError(){return this.error}get track(){return this.desc.renderer}}return lf}var uf,df={};var pf,ff={};var hf,mf={};function gf(){if(!hf){hf=1,Object.defineProperty(mf,\"__esModule\",{value:!0}),mf.FlowManager=void 0;const E=Fe();var e=go();const S=ns(),A=Ue(),t=e.featureFlags.register({id:\"showIndirectPrecedingFlows\",name:\"Show indirect preceding flows\",description:\"Show indirect preceding flows (connected through ancestor slices) when a slice is selected.\",defaultValue:!1});function a(e,t){let r=!1;if(0===e.length)return-1;for(const n of e){if(r)return n.id;n.id===t&&(r=!0)}return e[0].id}mf.FlowManager=class{engine;trackMgr;selectionMgr;_connectedFlows=[];_selectedFlows=[];_curSelection;_focusedFlowIdLeft=-1;_focusedFlowIdRight=-1;_visibleCategories=new Map;_initialized=!1;constructor(e,t,r){this.engine=e,this.trackMgr=t,this.selectionMgr=r}initialize(){this._initialized||(this._initialized=!0,this.engine.query(`\n      SELECT CREATE_FUNCTION(\n        'CHROME_CUSTOM_SLICE_NAME(slice_id LONG)',\n        'STRING',\n        'select case\n           when name=\"Receive mojo message\" then\n            printf(\"Receive mojo message (interface=%s, hash=%s)\",\n              EXTRACT_ARG(arg_set_id,\n                          \"chrome_mojo_event_info.mojo_interface_tag\"),\n              EXTRACT_ARG(arg_set_id, \"chrome_mojo_event_info.ipc_hash\"))\n           when name=\"ThreadControllerImpl::RunTask\" or\n                name=\"ThreadPool_RunTask\" then\n            printf(\"RunTask(posted_from=%s:%s)\",\n             EXTRACT_ARG(arg_set_id, \"task.posted_from.file_name\"),\n             EXTRACT_ARG(arg_set_id, \"task.posted_from.function_name\"))\n         end\n         from slice where id=$slice_id'\n    );`))}async queryFlowEvents(e){var t=[];const r=(await this.engine.query(e)).iter({beginSliceId:A.NUM,beginTrackId:A.NUM,beginSliceName:A.STR_NULL,beginSliceChromeCustomName:A.STR_NULL,beginSliceCategory:A.STR_NULL,beginSliceStartTs:A.LONG,beginSliceEndTs:A.LONG,beginDepth:A.NUM,beginThreadName:A.STR_NULL,beginProcessName:A.STR_NULL,endSliceId:A.NUM,endTrackId:A.NUM,endSliceName:A.STR_NULL,endSliceChromeCustomName:A.STR_NULL,endSliceCategory:A.STR_NULL,endSliceStartTs:A.LONG,endSliceEndTs:A.LONG,endDepth:A.NUM,endThreadName:A.STR_NULL,endProcessName:A.STR_NULL,name:A.STR_NULL,category:A.STR_NULL,id:A.NUM,flowToDescendant:A.NUM});for(var n=e=>null===e?\"NULL\":e,a=e=>null===e?void 0:e,i=[];r.valid();r.next()){var o=a(r.category),s=a(r.name),l=r.id,c={trackId:r.beginTrackId,sliceId:(0,S.asSliceSqlId)(r.beginSliceId),sliceName:n(r.beginSliceName),sliceChromeCustomName:a(r.beginSliceChromeCustomName),sliceCategory:n(r.beginSliceCategory),sliceStartTs:E.Time.fromRaw(r.beginSliceStartTs),sliceEndTs:E.Time.fromRaw(r.beginSliceEndTs),depth:r.beginDepth,threadName:n(r.beginThreadName),processName:n(r.beginProcessName)},u={trackId:r.endTrackId,sliceId:(0,S.asSliceSqlId)(r.endSliceId),sliceName:n(r.endSliceName),sliceChromeCustomName:a(r.endSliceChromeCustomName),sliceCategory:n(r.endSliceCategory),sliceStartTs:E.Time.fromRaw(r.endSliceStartTs),sliceEndTs:E.Time.fromRaw(r.endSliceEndTs),depth:r.endDepth,threadName:n(r.endThreadName),processName:n(r.endProcessName)};i.push(c),i.push(u),t.push({id:l,begin:c,end:u,dur:r.endSliceStartTs-r.beginSliceEndTs,category:o,name:s,flowToDescendant:!!r.flowToDescendant})}const d=new Map,p=new Map,f=new Map;this.trackMgr.getAllTracks().forEach(t=>t.tags?.trackIds?.forEach(e=>f.set(e,t)));var h,m;for(const T of i){h=T.trackId;var g=(m=g=void 0)!==(m=p.get(h))?m:void 0===(g=f.get(h))?(p.set(h,null),null):void 0!==(m=d.get(g.uri))?m:void 0===(m=g?.tags?.trackIds)||m.length<=1?(d.set(g.uri,null),p.set(h,null),null):(m={siblingTrackIds:[...m],sliceIds:[],nodes:[]},d.set(g.uri,m),p.set(h,m),m);null!==g&&(g.sliceIds.push(T.sliceId),g.nodes.push(T))}for(const v of d.values())if(null!==v){const r=(await this.engine.query(`\n        SELECT\n          id,\n          layout_depth as depth\n        FROM\n          experimental_slice_layout('${v.siblingTrackIds.join(\",\")}')\n        WHERE\n          id in (${v.sliceIds.join(\", \")})\n      `)).iter({id:A.NUM,depth:A.NUM});for(var _=new Map;r.valid();r.next())_.set(r.id,r.depth);for(const b of v.nodes){var y=_.get(b.sliceId);void 0!==y&&(b.depth=y)}}return t.forEach(e=>{e.begin.trackUri=f.get(e.begin.trackId)?.uri,e.end.trackUri=f.get(e.end.trackId)?.uri}),t}sliceSelected(e){e=t.get()?`(\n           select * from directly_connected_flow(${e})\n           union\n           select * from preceding_flow(${e})\n         )`:`directly_connected_flow(${e})`;this.queryFlowEvents(`\n    -- Include slices.flow to initialise indexes on 'flow.slice_in' and 'flow.slice_out'.\n    INCLUDE PERFETTO MODULE slices.flow;\n\n    select\n      f.slice_out as beginSliceId,\n      t1.track_id as beginTrackId,\n      t1.name as beginSliceName,\n      CHROME_CUSTOM_SLICE_NAME(t1.slice_id) as beginSliceChromeCustomName,\n      t1.category as beginSliceCategory,\n      t1.ts as beginSliceStartTs,\n      (t1.ts+t1.dur) as beginSliceEndTs,\n      t1.depth as beginDepth,\n      (thread_out.name || ' ' || thread_out.tid) as beginThreadName,\n      (process_out.name || ' ' || process_out.pid) as beginProcessName,\n      f.slice_in as endSliceId,\n      t2.track_id as endTrackId,\n      t2.name as endSliceName,\n      CHROME_CUSTOM_SLICE_NAME(t2.slice_id) as endSliceChromeCustomName,\n      t2.category as endSliceCategory,\n      t2.ts as endSliceStartTs,\n      (t2.ts+t2.dur) as endSliceEndTs,\n      t2.depth as endDepth,\n      (thread_in.name || ' ' || thread_in.tid) as endThreadName,\n      (process_in.name || ' ' || process_in.pid) as endProcessName,\n      extract_arg(f.arg_set_id, 'cat') as category,\n      extract_arg(f.arg_set_id, 'name') as name,\n      f.id as id,\n      slice_is_ancestor(t1.slice_id, t2.slice_id) as flowToDescendant\n    from ${e} f\n    join slice t1 on f.slice_out = t1.slice_id\n    join slice t2 on f.slice_in = t2.slice_id\n    left join thread_track track_out on track_out.id = t1.track_id\n    left join thread thread_out on thread_out.utid = track_out.utid\n    left join thread_track track_in on track_in.id = t2.track_id\n    left join thread thread_in on thread_in.utid = track_in.utid\n    left join process process_out on process_out.upid = thread_out.upid\n    left join process process_in on process_in.upid = thread_in.upid\n    `).then(e=>this.setConnectedFlows(e))}areaSelected(e){var t=[];for(const i of e.tracks){var r=i.renderer.rootTableName;if(\"slice\"===r&&i?.tags?.trackIds)for(const o of i.tags.trackIds)t.push(o)}var n=`(${t.join(\",\")})`,a=e.start,e=e.end;this.queryFlowEvents(`\n    select\n      f.slice_out as beginSliceId,\n      t1.track_id as beginTrackId,\n      t1.name as beginSliceName,\n      CHROME_CUSTOM_SLICE_NAME(t1.slice_id) as beginSliceChromeCustomName,\n      t1.category as beginSliceCategory,\n      t1.ts as beginSliceStartTs,\n      (t1.ts+t1.dur) as beginSliceEndTs,\n      t1.depth as beginDepth,\n      NULL as beginThreadName,\n      NULL as beginProcessName,\n      f.slice_in as endSliceId,\n      t2.track_id as endTrackId,\n      t2.name as endSliceName,\n      CHROME_CUSTOM_SLICE_NAME(t2.slice_id) as endSliceChromeCustomName,\n      t2.category as endSliceCategory,\n      t2.ts as endSliceStartTs,\n      (t2.ts+t2.dur) as endSliceEndTs,\n      t2.depth as endDepth,\n      NULL as endThreadName,\n      NULL as endProcessName,\n      extract_arg(f.arg_set_id, 'cat') as category,\n      extract_arg(f.arg_set_id, 'name') as name,\n      f.id as id,\n      slice_is_ancestor(t1.slice_id, t2.slice_id) as flowToDescendant\n    from flow f\n    join slice t1 on f.slice_out = t1.slice_id\n    join slice t2 on f.slice_in = t2.slice_id\n    where\n      (t1.track_id in ${n}\n        and (t1.ts+t1.dur <= ${e} and t1.ts+t1.dur >= ${a}))\n      or\n      (t2.track_id in ${n}\n        and (t2.ts <= ${e} and t2.ts >= ${a}))\n    `).then(e=>this.setSelectedFlows(e))}setConnectedFlows(e){if(this._connectedFlows=e,this._focusedFlowIdLeft=-1,this._focusedFlowIdRight=-1,\"track_event\"===this._curSelection?.kind){var t=this._curSelection.eventId;for(const r of e)r.begin.sliceId===t&&(this._focusedFlowIdRight=r.id),r.end.sliceId===t&&(this._focusedFlowIdLeft=r.id)}}setSelectedFlows(e){this._selectedFlows=e}updateFlows(e){this.initialize(),\"empty\"===(this._curSelection=e).kind?(this.setConnectedFlows([]),this.setSelectedFlows([])):(\"track_event\"===e.kind&&\"slice\"===this.trackMgr.getTrack(e.trackUri)?.renderer.rootTableName?this.sliceSelected(e.eventId):this.setConnectedFlows([]),\"area\"===e.kind?this.areaSelected(e):this.setConnectedFlows([]))}focusOtherFlow(t){var e,r=this._curSelection;if(r&&\"track_event\"===r.kind){const n=r.eventId;-1!==n&&(r=this._connectedFlows.filter(e=>e.begin.sliceId===n&&\"Forward\"===t||e.end.sliceId===n&&\"Backward\"===t),\"Backward\"===t?(e=a(r,this._focusedFlowIdLeft),this._focusedFlowIdLeft=e):(e=a(r,this._focusedFlowIdRight),this._focusedFlowIdRight=e))}}moveByFocusedFlow(e){var t=this._curSelection;if(t&&\"track_event\"===t.kind){var r,t=t.eventId,n=\"Backward\"===e?this._focusedFlowIdLeft:this._focusedFlowIdRight;if(-1!==t&&-1!==n)for(const a of this._connectedFlows)a.id===n&&(r=\"Backward\"===e?a.begin:a.end,this.selectionMgr.selectSqlEvent(\"slice\",r.sliceId,{scrollToSelection:!0}))}}get connectedFlows(){return this._connectedFlows}get selectedFlows(){return this._selectedFlows}get focusedFlowIdLeft(){return this._focusedFlowIdLeft}get focusedFlowIdRight(){return this._focusedFlowIdRight}get visibleCategories(){return this._visibleCategories}setCategoryVisible(e,t){this._visibleCategories.set(e,t)}}}return mf}var _f,yf,Tf={},vf={};function bf(){if(!yf){yf=1,Object.defineProperty(Tf,\"__esModule\",{value:!0}),Tf.PluginManagerImpl=Tf.CORE_PLUGIN_ID=void 0;const t=Pe();var e=Dp();_f||(_f=1,Object.defineProperty(vf,\"__esModule\",{value:!0}),vf.defaultPlugins=void 0,vf.defaultPlugins=[\"com.android.AndroidClientServer\",\"com.android.AndroidCujs\",\"com.android.AndroidDmabuf\",\"com.android.AndroidLog\",\"com.android.AndroidLongBatteryTracing\",\"com.android.AndroidNetwork\",\"com.android.AndroidPerf\",\"com.android.AndroidPerfTraceCounters\",\"com.android.AndroidStartup\",\"com.android.Bluetooth\",\"com.android.ContainedTraces\",\"com.android.CpuPerUid\",\"com.android.DayExplorer\",\"com.android.GpuWorkPeriod\",\"com.android.LargeScreensPerf\",\"com.android.PinAndroidPerfMetrics\",\"com.android.PinSysUITracks\",\"com.android.SysUIWorkspace\",\"com.google.PixelCpmTrace\",\"com.google.PixelMemory\",\"dev.perfetto.AutoPinAndExpandTracks\",\"dev.perfetto.BookmarkletApi\",\"dev.perfetto.CoreCommands\",\"dev.perfetto.CpuFreq\",\"dev.perfetto.CpuidleTimeInState\",\"dev.perfetto.CpuProfile\",\"dev.perfetto.CriticalPath\",\"dev.perfetto.DebugTracks\",\"dev.perfetto.DeeplinkQuerystring\",\"dev.perfetto.EntityStateResidency\",\"dev.perfetto.ExampleTraces\",\"dev.perfetto.FlagsPage\",\"dev.perfetto.FlowEventsPanel\",\"dev.perfetto.Frames\",\"dev.perfetto.Ftrace\",\"dev.perfetto.GlobalGroups\",\"dev.perfetto.GpuFreq\",\"dev.perfetto.HeapProfile\",\"dev.perfetto.InstrumentsSamplesProfile\",\"dev.perfetto.KernelTrackEvent\",\"dev.perfetto.LinuxPerf\",\"dev.perfetto.MetricsPage\",\"dev.perfetto.Notes\",\"dev.perfetto.PowerRails\",\"dev.perfetto.Process\",\"dev.perfetto.ProcessSummary\",\"dev.perfetto.ProcessThreadGroups\",\"dev.perfetto.QueryLog\",\"dev.perfetto.QueryPage\",\"dev.perfetto.RecordTraceV2\",\"dev.perfetto.Sched\",\"dev.perfetto.Screenshots\",\"dev.perfetto.SettingsPage\",\"dev.perfetto.SqlModules\",\"dev.perfetto.StandardGroups\",\"dev.perfetto.Thread\",\"dev.perfetto.TimelineSync\",\"dev.perfetto.TraceInfoPage\",\"dev.perfetto.TraceMetadata\",\"dev.perfetto.TraceProcessorTrack\",\"dev.perfetto.TrackEvent\",\"dev.perfetto.TrackUtils\",\"org.Chromium.OpenTableCommands\",\"org.kernel.LinuxKernelSubsystems\",\"org.kernel.SuspendResumeLatency\",\"org.kernel.Wattson\"]);const n=vf,a=go();Tf.CORE_PLUGIN_ID=\"__core__\";Tf.PluginManagerImpl=class{app;registry=new e.Registry(e=>e.desc.id);orderedPlugins=[];constructor(e){this.app=e}registerPlugin(e){var t=\"plugin_\"+e.id,r=\"Plugin: \"+e.id,t=a.featureFlags.register({id:t,name:r,description:`Overrides '${e.id}' plugin.`,defaultValue:n.defaultPlugins.includes(e.id)});this.registry.register({desc:e,enableFlag:t,enabled:t.get()})}activatePlugins(t=[]){var e=this.registry.valuesAsArray().filter(e=>e.enableFlag.get()||t.includes(e.desc.id));this.orderedPlugins=this.sortPluginsTopologically(e),this.orderedPlugins.forEach(e=>{var t;e.active||(t=this.app.forkForPlugin(e.desc.id),e.desc.onActivate?.(t),e.active=!0)})}async onTraceLoad(e,t){for(const i of this.orderedPlugins){var r,n,a;i.active&&(t?.(i.desc.id),a=e.forkForPlugin(i.desc.id),r=performance.now(),await(n=new i.desc(a)).onTraceLoad?.(a),a=performance.now()-r,i.traceContext={instance:n,loadTimeMs:a},e.trash.defer(()=>{i.traceContext=void 0}))}}metricVisualisations(){return this.registry.valuesAsArray().flatMap(e=>e.active?e.desc.metricVisualisations?.()??[]:[])}getAllPlugins(){return this.registry.valuesAsArray()}getPluginContainer(e){return this.registry.tryGet(e)}getPlugin(e){e=this.registry.get(e.id);return(0,t.assertExists)(e.traceContext).instance}sortPluginsTopologically(e){const r=new Array,n=new Set,a=e=>{if(!r.includes(e)){var t;if(n.has(e.desc.id))throw t=Array.from(n).concat(e.desc.id),new Error(\"Cyclic plugin dependency detected: \"+t.join(\" -> \"));n.add(e.desc.id),e.desc.dependencies?.forEach(e=>{a(this.registry.get(e.id))}),n.delete(e.desc.id),r.push(e)}};return e.forEach(e=>a(e)),r}}}return Tf}var Ef,Sf={};function Af(){if(!Ef){Ef=1,Object.defineProperty(Sf,\"__esModule\",{value:!0}),Sf.fetchWithTimeout=function(n,a,i){return new Promise((t,r)=>{const e=setTimeout(()=>r(new Error(`fetch(${n}) timed out after ${i} ms`)),i);fetch(n,a).then(e=>t(e)).catch(e=>r(e)).finally(()=>clearTimeout(e))})},Sf.fetchWithProgress=function(n,a){return new Promise((e,t)=>{const r=new XMLHttpRequest;r.open(\"GET\",n,!0),r.responseType=\"blob\",r.onprogress=e=>{e.lengthComputable&&(e=Math.round(e.loaded/e.total*100),a?.(e))},r.onload=()=>{200<=r.status&&r.status<300?e(r.response):t(new Error(`Failed to download: ${r.status} `+r.statusText))},r.onerror=()=>{t(new Error(`Network error in fetchWithProgress(${n})`))},r.send()})},Sf.getServingRoot=function(){var e=document.currentScript;if(null===e)return(0,r.assertTrue)(\"undefined\"!=typeof jest),\"\";let t=e.src;return t=t.substring(0,t.lastIndexOf(\"/\")+1)};const r=Pe()}return Sf}var Of,Cf={};function wf(){if(!Of){Of=1,Object.defineProperty(Cf,\"__esModule\",{value:!0}),Cf.EvtSource=void 0;Cf.EvtSource=class{listeners=[];addListener(t){const r=this.listeners;return r.push(t),{[Symbol.dispose](){var e=r.indexOf(t);r.splice(0<=e?e:r.length,1)}}}async notify(e){var t=[];for(const r of this.listeners)t.push(Promise.resolve(r(e)));await Promise.allSettled(t)}}}return Cf}var kf,If={};var Rf,Nf,Mf={},Pf={};function Df(){if(!Rf){Rf=1,Object.defineProperty(Pf,\"__esModule\",{value:!0}),Pf.calculateResolution=function(e,t){if(t<=0)return(0,n.errResult)('Parameter \"widthPx\" must be greater than 0.');e=e.duration;if(e<=0)return(0,n.errResult)('The duration of the \"timeSpan\" parameter must be greater than 0.');e=Number(e)/t;return(0,n.okResult)(r.BigintMath.bitFloor(BigInt(Math.floor(e))))};const r=ja(),n=Tl()}return Pf}var xf,Lf,Ff={};function Uf(){if(!xf){xf=1;{var e=Ff;Object.defineProperty(e,\"__esModule\",{value:!0}),e.STARTUP_COMMAND_ALLOWLIST=void 0,e.isStartupCommandAllowed=function(e){if(t.has(e))return!0;if(e.startsWith(\"dev.perfetto.UserMacro.\"))return!0;return!1},e.STARTUP_COMMAND_ALLOWLIST=[\"dev.perfetto.PinTracksByRegex\",\"dev.perfetto.ExpandTracksByRegex\",\"dev.perfetto.CollapseTracksByRegex\",\"dev.perfetto.AddDebugSliceTrack\",\"dev.perfetto.AddDebugSliceTrackWithPivot\",\"dev.perfetto.AddDebugCounterTrack\",\"dev.perfetto.AddDebugCounterTrackWithPivot\",\"dev.perfetto.CreateWorkspace\",\"dev.perfetto.SwitchWorkspace\",\"dev.perfetto.CopyTracksToWorkspaceByRegex\",\"dev.perfetto.CopyTracksToWorkspaceByRegexWithAncestors\",\"dev.perfetto.RunQuery\",\"dev.perfetto.RunQueryAndShowTab\"];const t=new Set(e.STARTUP_COMMAND_ALLOWLIST)}}return Ff}function Bf(){if(Lf)return dp;Lf=1,Object.defineProperty(dp,\"__esModule\",{value:!0}),dp.TraceImpl=dp.TraceContext=void 0;var e=Le(),t=fp();const n=Ep(),l=xp();var r=function(){if(!Lp){Lp=1,Object.defineProperty(Fp,\"__esModule\",{value:!0}),Fp.NoteManagerImpl=void 0;const r=He();Fp.NoteManagerImpl=class{_lastNodeId=0;_notes=new Map;onNoteDeleted;get notes(){return this._notes}getNote(e){return this._notes.get(e)}addNote(e){var t=e.id??\"note_\"+ ++this._lastNodeId;return this._notes.set(t,{...e,noteType:\"DEFAULT\",id:t,color:e.color??(0,r.randomColor)(),text:e.text??\"\"}),t}addSpanNote(e){var t=e.id??\"note_\"+ ++this._lastNodeId;return this._notes.set(t,{...e,noteType:\"SPAN\",id:t,color:e.color??(0,r.randomColor)(),text:e.text??\"\"}),t}changeNote(e,t){var r=this._notes.get(e);void 0!==r&&this._notes.set(e,{...r,color:t.color??r.color,text:t.text??r.text})}removeNote(e){this._notes.delete(e),this.onNoteDeleted?.(e)}}}return Fp}(),a=jp();const i=function(){if(!Gp){Gp=1,Object.defineProperty(Vp,\"__esModule\",{value:!0}),Vp.SearchManagerImpl=void 0;var e=Qc();const g=j(),r=Fe(),_=Me(),y=$e(),T=Ue(),v=Fu(),u=zp();var t=go();const n=K(),a=t.featureFlags.register({id:\"datasetSearch\",name:\"Use dataset search\",description:\"[Experimental] use dataset for search, which allows searching all tracks with a matching dataset. Might be slower than normal search.\",defaultValue:!1});Vp.SearchManagerImpl=class{_searchGeneration=0;_searchText=\"\";_results;_resultIndex=-1;_searchInProgress=!1;_timeline;_trackManager;_workspace;_engine;_limiter=new e.AsyncLimiter;_onResultStep;_providers=[];constructor(e){this._timeline=e?.timeline,this._trackManager=e?.trackManager,this._engine=e?.engine,this._workspace=e?.workspace,this._onResultStep=e?.onResultStep}registerSearchProvider(e){this._providers.push(e)}search(e){e!==this._searchText&&(this._searchText=e,this._searchGeneration++,this._results=void 0,this._resultIndex=-1,this._searchInProgress=!1,\"\"!==e)&&(this._searchInProgress=!0,this._limiter.schedule(async()=>{a.get()?await this.executeDatasetSearch():await this.executeSearch(),this._searchInProgress=!1,n.raf.scheduleFullRedraw()}))}reset(){this.search(\"\")}stepForward(){this.stepInternal(!1)}stepBackwards(){this.stepInternal(!0)}stepInternal(e=!1){void 0!==this._results&&0!==this._results.totalResults&&(e?(--this._resultIndex,this._resultIndex<0&&(this._resultIndex=this._results.totalResults-1)):(++this._resultIndex,this._resultIndex>this._results.totalResults-1&&(this._resultIndex=0)),this._onResultStep?.({eventId:this._results.eventIds[this._resultIndex],ts:r.Time.fromRaw(this._results.tses[this._resultIndex]),trackUri:this._results.trackUris[this._resultIndex],source:this._results.sources[this._resultIndex]}))}get hasResults(){return void 0!==this._results}get searchResults(){return this._results}get resultIndex(){return this._resultIndex}get searchText(){return this._searchText}get searchGeneration(){return this._searchGeneration}get searchInProgress(){return this._searchInProgress}async executeSearch(){var e=this._searchText,t=(0,v.escapeSearchQuery)(this._searchText),r=this._searchGeneration,n=this._engine,a=this._trackManager,i=this._workspace;if(n&&a&&i){const d=new Map;var o=a.getAllTracks();o.forEach(e=>{var t=e?.tags,r=t?.cpu,t=t?.kind;(0,_.exists)(r)&&t===y.CPU_SLICE_TRACK_KIND&&d.set(r,e.uri)});const p=new Map;o.forEach(t=>{(t?.tags?.trackIds??[]).forEach(e=>p.set(e,t.uri))});var s=[];for(const f=(await n.query(`select utid from thread join process\n    using(upid) where\n      thread.name glob ${t} or\n      process.name glob `+t)).iter({utid:T.NUM});f.valid();f.next())s.push(f.utid);var o=await n.query(`\n      select\n        id as sliceId,\n        ts,\n        'cpu' as source,\n        cpu as sourceId,\n        utid\n      from sched where utid in (${s.join(\",\")})\n      union all\n      select *\n      from (\n        select\n          slice_id as sliceId,\n          ts,\n          'slice' as source,\n          track_id as sourceId,\n          0 as utid\n          from slice\n          where slice.name glob ${t}\n            or (\n              0 != CAST(${(0,g.sqliteString)(e)} AS INT) and\n              sliceId = CAST(${(0,g.sqliteString)(e)} AS INT)\n            )\n        union\n        select\n          slice_id as sliceId,\n          ts,\n          'slice' as source,\n          track_id as sourceId,\n          0 as utid\n        from slice\n        join args using(arg_set_id)\n        where string_value glob ${t} or key glob ${t}\n      )\n      union all\n      select\n        id as sliceId,\n        ts,\n        'log' as source,\n        0 as sourceId,\n        utid\n      from android_logs where msg glob ${t}\n      order by ts\n    `),l={eventIds:new Float64Array(0),tses:new BigInt64Array(0),utids:new Float64Array(0),sources:[],trackUris:[],totalResults:0},c=e.toLowerCase();for(const h of i.flatTracksOrdered)h.uri&&-1!==h.name.toLowerCase().indexOf(c)&&(l.totalResults++,l.sources.push(\"track\"),l.trackUris.push(h.uri));var u,n=o.numRows();l.eventIds=new Float64Array(l.totalResults+n),l.tses=new BigInt64Array(l.totalResults+n),l.utids=new Float64Array(l.totalResults+n);for(let e=0;e<l.totalResults;++e)l.eventIds[e]=-1,l.tses[e]=-1n,l.utids[e]=-1;const f=o.iter({sliceId:T.NUM,ts:T.LONG,source:T.STR,sourceId:T.NUM,utid:T.NUM});for(;f.valid();f.next()){let e=void 0;\"cpu\"===f.source?e=d.get(f.sourceId):\"slice\"===f.source?e=p.get(f.sourceId):\"log\"===f.source&&(e=a.getAllTracks().find(e=>e.tags?.kind===y.ANDROID_LOGS_TRACK_KIND)?.uri),void 0!==e&&(u=l.totalResults++,l.trackUris.push(e),l.sources.push(f.source),l.eventIds[u]=f.sliceId,l.tses[u]=f.ts,l.utids[u]=f.utid)}if(r===this._searchGeneration){this._results=l;const m=this._timeline?.visibleWindow.toTimeSpan();m?(t=this._results.tses.findIndex(e=>e>=m.start),this._resultIndex=-1===t?-1:t-1):this._resultIndex=-1}}}async executeDatasetSearch(){var e=this._trackManager,t=this._engine;if(t&&e){var r=this._searchGeneration,n=await(0,u.searchTrackEvents)(t,e.getAllTracks(),this._providers,this._searchText),a=n.length,i={eventIds:new Float64Array(a),tses:new BigInt64Array(a),utids:new Float64Array(a).fill(-1),sources:[],trackUris:[],totalResults:a};for(let e=0;e<a;e++){var{id:o,ts:s,track:l}=n[e];i.eventIds[e]=o,i.tses[e]=s,i.trackUris.push(l.uri),i.sources.push(\"event\")}if(r===this._searchGeneration){this._results=i;var c=this._timeline?.visibleWindow.toTimeSpan();if(c&&0<this._results.totalResults){let t=-1;for(let e=0;e<this._results.tses.length;e++)if(this._results.tses[e]>=c.start){t=e;break}this._resultIndex=-1===t?-1:t-1}else this._resultIndex=-1}}}}}return Vp}(),o=function(){if(!$p){$p=1,Object.defineProperty(Kp,\"__esModule\",{value:!0}),Kp.SelectionManagerImpl=void 0;var e=Jr;const s=Pe(),a=Fe(),i=K(),u=Me();var t=Qc();const r=e.__importDefault(xe()),n=Ke(),d=Ue(),p=ze(),o=vp();Kp.SelectionManagerImpl=class{engine;timeline;trackManager;noteManager;scrollHelper;onSelectionChange;detailsPanelLimiter=new t.AsyncLimiter;_selection={kind:\"empty\"};detailsPanels=new WeakMap;areaSelectionTabs=[];constructor(e,t,r,n,a,i){this.engine=e,this.timeline=t,this.trackManager=r,this.noteManager=n,this.scrollHelper=a,this.onSelectionChange=i}clearSelection(){this.setSelection({kind:\"empty\"})}async selectTrackEvent(e,t,r){this.selectTrackEventInternal(e,t,r)}selectTrack(e,t){this.setSelection({kind:\"track\",trackUri:e},t)}selectNote(e,t){this.setSelection({kind:\"note\",id:e.id},t)}selectArea(e,t){var{start:r,end:n}=e,a=((0,s.assertTrue)(r<=n),[]);for(const o of e.trackUris){var i=this.trackManager.getTrack(o);void 0!==i&&a.push(i)}this.setSelection({...e,kind:\"area\",tracks:a},t)}deserialize(e){void 0!==e&&this.deserializeInternal(e)}async deserializeInternal(e){try{switch(e.kind){case\"TRACK_EVENT\":await this.selectTrackEventInternal(e.trackKey,parseInt(e.eventId),void 0,e.detailsPanel);break;case\"AREA\":this.selectArea({start:e.start,end:e.end,trackUris:e.trackUris})}}catch(e){(0,n.showModal)({title:\"Failed to restore the selected event\",content:(0,r.default)(\"div\",(0,r.default)(\"p\",`Due to a version skew between the version of the UI the trace was\n             shared with and the version of the UI you are using, we were\n             unable to restore the selected event.`),(0,r.default)(\"p\",`These backwards incompatible changes are very rare but is in some\n             cases unavoidable. We apologise for the inconvenience.`)),buttons:[{text:\"Continue\",primary:!0}]})}}toggleTrackAreaSelection(t){var r=this._selection;if(\"area\"===r.kind){let e=r.trackUris.slice();e.includes(t)?e=e.filter(e=>e!==t):e.push(t),this.selectArea({...r,trackUris:e})}}toggleGroupAreaSelection(r){const n=this._selection;if(\"area\"===n.kind){var e=r.every(e=>n.trackUris.includes(e));let t;e?t=n.trackUris.filter(e=>!r.includes(e)):(t=n.trackUris.slice(),r.forEach(e=>{t.includes(e)||t.push(e)})),this.selectArea({...n,trackUris:t})}}get selection(){return this._selection}getDetailsPanelForSelection(){return this.detailsPanels.get(this._selection)}async resolveSqlEvent(t,r){const n=new Map,a=[];this.trackManager.getAllTracks().filter(e=>e.renderer.rootTableName===t).map(e=>{var t=e.renderer.getDataset?.();if(t)return[t,e]}).filter(u.exists).filter(([e])=>e.implements({id:d.NUM})).forEach(([e,t])=>{var r=e.filter?.col;(r?(0,u.getOrCreate)(n,r,()=>[]):a).push([e,t])});for(var[e,i]of a){e=`select id from (${e.query()}) where id = `+r;if(0<(await this.engine.query(e)).numRows())return{eventId:r,trackUri:i.uri}}for(var[o,s]of n){const c=new Map;s.forEach(([e,t])=>{e=e.filter;e&&(\"eq\"in e&&c.set(e.eq,t.uri),\"in\"in e)&&e.in.forEach(e=>c.set(e,t.uri))});var s=s.map(([e])=>e),s=new p.UnionDataset(s).optimize(),l={...s.schema,[o]:d.UNKNOWN},s=`select * from (${s.query(l)}) where id = `+r,s=(await this.engine.query(s)).iter(l).get(o);let e=c.get(s);if(e=void 0===e&&\"bigint\"==typeof s?c.get(Number(s)):e)return{eventId:r,trackUri:e}}}selectSqlEvent(e,t,r){this.resolveSqlEvent(e,t).then(e=>{e&&this.selectTrackEvent(e.trackUri,e.eventId,r)})}setSelection(e,t){this._selection=e,this.onSelectionChange(e,t??{}),t?.scrollToSelection&&this.scrollToSelection()}selectSearchResult(e){var{source:t,eventId:r,trackUri:n}=e;if(void 0!==r)switch(t){case\"track\":this.selectTrack(n,{clearSearch:!1,scrollToSelection:!0});break;case\"cpu\":this.selectSqlEvent(\"sched_slice\",r,{clearSearch:!1,scrollToSelection:!0,switchToCurrentSelectionTab:!0});break;case\"log\":this.selectSqlEvent(\"android_logs\",r,{clearSearch:!1,scrollToSelection:!0,switchToCurrentSelectionTab:!0});break;case\"slice\":this.selectSqlEvent(\"slice\",r,{clearSearch:!1,scrollToSelection:!0,switchToCurrentSelectionTab:!0});break;case\"event\":this.selectTrackEvent(n,r,{clearSearch:!1,scrollToSelection:!0,switchToCurrentSelectionTab:!0});break;default:(0,s.assertUnreachable)(t)}}scrollToSelection(){var e=(()=>{switch(this.selection.kind){case\"track_event\":case\"track\":return this.selection.trackUri;default:return}})(),t=this.getTimeSpanOfSelection();this.scrollHelper.scrollTo({time:t?{...t}:void 0,track:e?{uri:e,expandGroup:!0}:void 0})}zoomOnSelection(){var e,t,r=(()=>{switch(this.selection.kind){case\"track_event\":case\"track\":return this.selection.trackUri;default:return}})(),n=this.getTimeSpanOfSelection();n&&(t=(e=this.timeline.visibleWindow.duration/100)/2,n=a.Time.fromRaw(n.start+n.duration/2n),n=new o.HighPrecisionTime(n).subNumber(t),this.scrollHelper.scrollTo({time:{start:n.toTime(),end:n.addNumber(e).toTime()},track:r?{uri:r,expandGroup:!0}:void 0}))}async selectTrackEventInternal(e,t,r,n){var a=this.trackManager.getTrack(e);if(!a)throw new Error(`Unable to resolve selection details: Track ${e} not found`);a=a.renderer;if(!a.getSelectionDetails)throw new Error(`Unable to resolve selection details: Track ${e} does not support selection details`);a=await a.getSelectionDetails(t);if(!(0,u.exists)(a))throw new Error(`Unable to resolve selection details: Track ${e} returned no details for event `+t);a={...a,kind:\"track_event\",trackUri:e,eventId:t};this.createTrackEventDetailsPanel(a,n),this.setSelection(a,r)}createTrackEventDetailsPanel(e,t){var r=this.trackManager.getTrack(e.trackUri);if(r){const n=r.renderer.detailsPanel?.(e);if(n){n.serialization&&void 0!==t&&(r=n.serialization.schema.safeParse(t)).success&&(n.serialization.state=r.data);const a={render:()=>n.render(),serializatonState:()=>n.serialization?.state,isLoading:!0};this.detailsPanels.set(e,a),this.detailsPanelLimiter.schedule(async()=>{await n?.load?.(e),a.isLoading=!1,i.raf.scheduleFullRedraw()})}}}getTimeSpanOfSelection(){var e=this.selection;if(\"area\"===e.kind)return new a.TimeSpan(e.start,e.end);if(\"note\"===e.kind){var t=this.noteManager.getNote(e.id);if(void 0!==t){var r=t.noteType;switch(r){case\"SPAN\":return new a.TimeSpan(t.start,t.end);case\"DEFAULT\":return new a.TimeSpan(t.timestamp,t.timestamp);default:(0,s.assertUnreachable)(r)}}}else if(\"track_event\"===e.kind)switch(e.dur){case void 0:case-1n:return a.TimeSpan.fromTimeAndDuration(e.ts,0n);default:return a.TimeSpan.fromTimeAndDuration(e.ts,e.dur)}}registerAreaSelectionTab(e){this.areaSelectionTabs.push(e)}}}return Kp}();var s=function(){if(!Xp){Xp=1,Object.defineProperty(ef,\"__esModule\",{value:!0}),ef.TabManagerImpl=void 0;const e=of();class t{_registry=new Map;_defaultTabs=new Set;_detailsPanelRegistry=new Set;_instantiatedTabs=new Map;_openTabs=[];_currentTab=\"current_selection\";_tabPanelVisibility=e.SplitPanelDrawerVisibility.COLLAPSED;_tabPanelVisibilityChanged=!1;[Symbol.dispose](){for(const e of this._instantiatedTabs.values())this.disposeTab(e);this._instantiatedTabs.clear()}registerTab(e){return this._registry.set(e.uri,e),{[Symbol.dispose]:()=>this._registry.delete(e.uri)}}addDefaultTab(e){return this._defaultTabs.add(e),{[Symbol.dispose]:()=>this._defaultTabs.delete(e)}}resolveTab(e){return this._registry.get(e)}showCurrentSelectionTab(){this.showTab(\"current_selection\")}showTab(t){\"current_selection\"===t||this._openTabs.some(e=>e===t)||this._openTabs.push(t),this._currentTab=t,this._tabPanelVisibilityChanged||this._tabPanelVisibility!==e.SplitPanelDrawerVisibility.COLLAPSED||this.setTabPanelVisibility(e.SplitPanelDrawerVisibility.VISIBLE)}hideTab(t){var e;t===this._currentTab?(e=this._openTabs.findIndex(e=>e===t),this._openTabs=this._openTabs.filter(e=>e!==t),-1!==e&&(0===this._openTabs.length?this._currentTab=\"current_selection\":e<this._openTabs.length-1?this._currentTab=this._openTabs[e]:(e=this._openTabs[this._openTabs.length-1],this._currentTab=e))):this._openTabs=this._openTabs.filter(e=>e!==t)}toggleTab(e){return this.isOpen(e)?this.hideTab(e):this.showTab(e)}isOpen(t){return void 0!==this._openTabs.find(e=>e==t)}get currentTabUri(){return this._currentTab}get openTabsUri(){return this._openTabs}get tabs(){return Array.from(this._registry.values())}get defaultTabs(){return Array.from(this._defaultTabs)}get detailsPanels(){return Array.from(this._detailsPanelRegistry)}resolveTabs(e){const r=new Map,n=[];e.forEach(e=>{var t=this._registry.get(e);n.push({uri:e,tab:t}),t&&r.set(e,t)});for(var[t,a]of r)this._instantiatedTabs.get(t)||this.initTab(a);for(var[i,o]of this._instantiatedTabs)r.get(i)||this.disposeTab(o);return this._instantiatedTabs=r,n}setTabPanelVisibility(e){this._tabPanelVisibility=e,this._tabPanelVisibilityChanged=!0}toggleTabPanelVisibility(){this.setTabPanelVisibility((0,e.toggleVisibility)(this._tabPanelVisibility))}get tabPanelVisibility(){return this._tabPanelVisibility}initTab(e){e.onShow?.()}disposeTab(e){e.onHide?.(),e.isEphemeral&&this._registry.delete(e.uri)}}ef.TabManagerImpl=t}return ef}(),c=cf(),u=function(){if(!uf){uf=1,Object.defineProperty(df,\"__esModule\",{value:!0}),df.WorkspaceManagerImpl=void 0;const t=Pe(),r=We();var e=go();const n=e.featureFlags.register({id:\"defaultWorkspaceEditable\",name:\"Enable Default Workspace Editing\",description:\"Allows tracks within the default workspace to be removed and rearranged using drag-and-drop operations.\",defaultValue:!1});df.WorkspaceManagerImpl=class{defaultWorkspace=new r.Workspace;_workspaces=[];_currentWorkspace;constructor(){this.defaultWorkspace.title=\"Default Workspace\",this.defaultWorkspace.userEditable=n.get(),this._currentWorkspace=this.defaultWorkspace}createEmptyWorkspace(e){var t=new r.Workspace;return t.title=e,this._workspaces.push(t),t}removeWorkspace(t){t===this.currentWorkspace&&(this._currentWorkspace=this.defaultWorkspace),this._workspaces=this._workspaces.filter(e=>e!==t)}switchWorkspace(e){(0,t.assertTrue)(this._workspaces.includes(e)||e===this.defaultWorkspace),this._currentWorkspace=e}get all(){return[this.defaultWorkspace].concat(this._workspaces)}get currentWorkspace(){return this._currentWorkspace}}}return df}();const d=function(){if(!pf){pf=1,Object.defineProperty(ff,\"__esModule\",{value:!0}),ff.ScrollHelper=void 0;const n=bp(),r=K();ff.ScrollHelper=class{traceInfo;timeline;workspace;trackManager;constructor(e,t,r,n){this.traceInfo=e,this.timeline=t,this.workspace=r,this.trackManager=n}scrollTo(e){var{time:e,track:t}=e;r.raf.scheduleCanvasRedraw(),void 0!==e&&(void 0===e.end||e.start===e.end?this.timeline.panToTimestamp(e.start):void 0!==e.viewPercentage?this.focusHorizontalRangePercentage(e.start,e.end,e.viewPercentage):this.focusHorizontalRange(e.start,e.end)),void 0!==t&&this.verticalScrollToTrack(t.uri,t.expandGroup??!1)}focusHorizontalRangePercentage(e,t,r){e=n.HighPrecisionTimeSpan.fromTime(e,t),(r<=0||1<r)&&(console.warn(\"Invalid value for [viewPercentage]. Value must be between 0.0 (exclusive) and 1.0 (inclusive).\"),r=.5),t=1-r,r=e.duration*t/2;this.timeline.updateVisibleTimeHP(e.pad(r))}focusHorizontalRange(e,t){var r=this.timeline.visibleWindow,e=n.HighPrecisionTimeSpan.fromTime(e,t);2*e.duration>r.duration?(t=e.pad(2*e.duration),this.timeline.updateVisibleTimeHP(t)):(t=e.midpoint.subNumber(r.duration/2),(t=new n.HighPrecisionTimeSpan(t,r.duration).fitWithin(this.traceInfo.start,this.traceInfo.end)).equals(r)?(r=e.pad(2*e.duration),this.timeline.updateVisibleTimeHP(r)):this.timeline.updateVisibleTimeHP(t))}verticalScrollToTrack(e,t){var r,e=this.workspace.getTrackByUri(e);e&&((r=document.getElementById(e.id))?r.scrollIntoView({behavior:\"smooth\",block:\"nearest\"}):t?(e.reveal(),this.trackManager.scrollToTrackNodeId=e.id):(r=e.findClosestVisibleAncestor(),document.getElementById(r.id)?.scrollIntoView({behavior:\"smooth\",block:\"nearest\"})))}}}return ff}(),p=gf(),f=bf(),h=Me(),m=Af(),g=Me(),_=go();var y=wf(),T=function(){if(!kf){kf=1,Object.defineProperty(If,\"__esModule\",{value:!0}),If.StatusbarManagerImpl=void 0;If.StatusbarManagerImpl=class{_statusBarItems=[];registerItem(e){this._statusBarItems.push(e)}get statusBarItems(){return this._statusBarItems}}}return If}(),v=function(){if(!Nf){Nf=1,Object.defineProperty(Mf,\"__esModule\",{value:!0}),Mf.MinimapManagerImpl=void 0;const n=bp(),a=Df();Mf.MinimapManagerImpl=class{contentProviders=[];rows;getLoad(){return this.rows}registerContentProvider(e){this.contentProviders.push(e),this.contentProviders.sort((e,t)=>t.priority-e.priority)}getContentProvider(){return this.contentProviders[0]}async load(e,t){var r=this.getContentProvider();r&&(e=n.HighPrecisionTimeSpan.fromTime(e,t),(t=(0,a.calculateResolution)(e,100)).ok)&&(this.rows=await r.getData(e,t.value))}}}return Mf}();const b=Uf();class E{pluginInstances=new Map;appCtx;engine;omniboxMgr=new a.OmniboxManagerImpl;searchMgr;selectionMgr;tabMgr=new s.TabManagerImpl;timeline;traceInfo;trackMgr=new c.TrackManagerImpl;workspaceMgr=new u.WorkspaceManagerImpl;noteMgr=new r.NoteManagerImpl;flowMgr;pluginSerializableState=(0,t.createStore)({});scrollHelper;trash=new e.DisposableStack;onTraceReady=new y.EvtSource;statusbarMgr=new T.StatusbarManagerImpl;minimapManager=new v.MinimapManagerImpl;loadingErrors=[];constructor(e,t,r){this.appCtx=e,this.engine=t,this.trash.use(t),this.traceInfo=r,this.timeline=new n.TimelineImpl(r,this.appCtx.timestampFormat,this.appCtx.durationPrecision,this.appCtx.timezoneOverride),this.scrollHelper=new d.ScrollHelper(this.traceInfo,this.timeline,this.workspaceMgr.currentWorkspace,this.trackMgr),this.selectionMgr=new o.SelectionManagerImpl(this.engine,this.timeline,this.trackMgr,this.noteMgr,this.scrollHelper,this.onSelectionChange.bind(this)),this.noteMgr.onNoteDeleted=e=>{\"note\"===this.selectionMgr.selection.kind&&this.selectionMgr.selection.id===e&&this.selectionMgr.clearSelection()},this.flowMgr=new p.FlowManager(t.getProxy(\"FlowManager\"),this.trackMgr,this.selectionMgr),this.searchMgr=new i.SearchManagerImpl({timeline:this.timeline,trackManager:this.trackMgr,engine:this.engine,workspace:this.workspaceMgr.currentWorkspace,onResultStep:this.onResultStep.bind(this)})}onSelectionChange(e,t){var{clearSearch:t=!0,switchToCurrentSelectionTab:r=!0}=t;t&&this.searchMgr.reset(),r&&\"empty\"!==e.kind&&this.tabMgr.showCurrentSelectionTab(),this.flowMgr.updateFlows(e)}onResultStep(e){this.selectionMgr.selectSearchResult(e)}forPlugin(t){return(0,h.getOrCreate)(this.pluginInstances,t,()=>{var e=this.appCtx.forPlugin(t);return new S(e,this)})}[Symbol.dispose](){this.trash.dispose()}}dp.TraceContext=E;class S{appImpl;traceCtx;engineProxy;trackMgrProxy;commandMgrProxy;sidebarProxy;pageMgrProxy;settingsProxy;static createInstanceForCore(e,t,r){return new E(e.__appCtxForTrace,t,r).forPlugin(f.CORE_PLUGIN_ID)}constructor(t,r){const n=t.pluginId,a=(this.appImpl=t,(this.traceCtx=r).trash);this.engineProxy=r.engine.getProxy(n),a.use(this.engineProxy),this.trackMgrProxy=(0,g.createProxy)(r.trackMgr,{registerTrack(e){return r.trackMgr.registerTrack({...e,pluginId:n})}});var e=(0,l.parseUrlCommands)(r.appCtx.initialRouteArgs.startupCommands)??[],i=r.appCtx.startupCommandsSetting.get();const o=[...e,...i],s=r.appCtx.enforceStartupCommandAllowlistSetting.get();this.commandMgrProxy=(0,g.createProxy)(r.appCtx.commandMgr,{registerCommand(e){e=t.commands.registerCommand(e);return a.use(e),e},hasStartupCommands(){return 0<o.length},async runStartupCommands(){s&&r.appCtx.commandMgr.setAllowlistCheck(b.isStartupCommandAllowed);try{for(const t of o)try{await r.appCtx.commandMgr.runCommand(t.id,...t.args)}catch(e){console.warn(`Startup command ${t.id} failed:`,e)}}finally{r.appCtx.commandMgr.setAllowlistCheck(()=>!0)}}}),this.sidebarProxy=(0,g.createProxy)(r.appCtx.sidebarMgr,{addMenuItem(e){e=t.sidebar.addMenuItem(e);return a.use(e),e}}),this.pageMgrProxy=(0,g.createProxy)(r.appCtx.pageMgr,{registerPage(e){e=t.pages.registerPage({...e,pluginId:t.pluginId});return a.use(e),e}}),this.settingsProxy=(0,g.createProxy)(r.appCtx.settingsManager,{register(e){e=r.appCtx.settingsManager.register(e);return a.use(e),e}})}scrollTo(e){this.traceCtx.scrollHelper.scrollTo(e)}forkForPlugin(e){return this.traceCtx.forPlugin(e)}mountStore(e){return this.traceCtx.pluginSerializableState.createSubStore([this.pluginId],e)}getPluginStoreForSerialization(){return this.traceCtx.pluginSerializableState}async getTraceFile(){var e=this.traceInfo.source;if(this.traceInfo.downloadable){if(\"ARRAY_BUFFER\"===e.type)return new Blob([e.buffer]);if(\"FILE\"===e.type)return e.file;if(\"URL\"===e.type)return(0,m.fetchWithProgress)(e.url,e=>this.omnibox.showStatusMessage(`Downloading trace ${e}%`))}throw new Error(`Cannot getTraceFile(${e.type})`)}get openerPluginArgs(){var e=this.traceCtx.traceInfo.source;if(\"ARRAY_BUFFER\"===e.type)return(e.pluginArgs??{})[this.pluginId]}get trace(){return this}get minimap(){return this.traceCtx.minimapManager}get engine(){return this.engineProxy}get timeline(){return this.traceCtx.timeline}get tracks(){return this.trackMgrProxy}get tabs(){return this.traceCtx.tabMgr}get workspace(){return this.traceCtx.workspaceMgr.currentWorkspace}get workspaces(){return this.traceCtx.workspaceMgr}get search(){return this.traceCtx.searchMgr}get selection(){return this.traceCtx.selectionMgr}get traceInfo(){return this.traceCtx.traceInfo}get statusbar(){return this.traceCtx.statusbarMgr}get notes(){return this.traceCtx.noteMgr}get flows(){return this.traceCtx.flowMgr}get loadingErrors(){return this.traceCtx.loadingErrors}addLoadingError(e){this.traceCtx.loadingErrors.push(e)}get pluginId(){return this.appImpl.pluginId}get commands(){return this.commandMgrProxy}get sidebar(){return this.sidebarProxy}get pages(){return this.pageMgrProxy}get omnibox(){return this.appImpl.omnibox}get plugins(){return this.appImpl.plugins}get analytics(){return this.appImpl.analytics}get initialRouteArgs(){return this.appImpl.initialRouteArgs}get initialPluginRouteArgs(){return this.appImpl.initialPluginRouteArgs}get featureFlags(){return{register:e=>_.featureFlags.register(e)}}get raf(){return this.appImpl.raf}navigate(e){this.appImpl.navigate(e)}openTraceFromFile(e){this.appImpl.openTraceFromFile(e)}openTraceFromUrl(e,t){this.appImpl.openTraceFromUrl(e,t)}openTraceFromBuffer(e,t){this.appImpl.openTraceFromBuffer(e,t)}closeCurrentTrace(){this.appImpl.closeCurrentTrace()}get onTraceReady(){return this.traceCtx.onTraceReady}get perfDebugging(){return this.appImpl.perfDebugging}get trash(){return this.traceCtx.trash}get __traceCtxForApp(){return this.traceCtx}get settings(){return this.settingsProxy}get isInternalUser(){return this.appImpl.isInternalUser}}return dp.TraceImpl=S,dp}var jf,Hf={exports:{}};function Gf(){var e,l,r,t,R,n,c,u,d,p,f,a,i,h;return jf||(jf=1,e=Hf,i=\"undefined\"!=typeof window?window:\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},r=/(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i,t=0,n={},R={manual:(l=i).Prism&&l.Prism.manual,disableWorkerMessageHandler:l.Prism&&l.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof N?new N(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\\u00a0/g,\" \")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,\"__id\",{value:++t}),e.__id},clone:function r(e,n){var a,t;switch(n=n||{},R.util.type(e)){case\"Object\":if(t=R.util.objId(e),n[t])return n[t];for(var i in a={},n[t]=a,e)e.hasOwnProperty(i)&&(a[i]=r(e[i],n));return a;case\"Array\":return(t=R.util.objId(e),n[t])?n[t]:(a=[],n[t]=a,e.forEach(function(e,t){a[t]=r(e,n)}),a);default:return e}},getLanguage:function(e){for(;e;){var t=r.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return\"none\"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(r,\"gi\"),\"\"),e.classList.add(\"language-\"+t)},currentScript:function(){if(\"undefined\"==typeof document)return null;if(\"currentScript\"in document)return document.currentScript;try{throw new Error}catch(e){var t=(/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(e.stack)||[])[1];if(t){var r,n=document.getElementsByTagName(\"script\");for(r in n)if(n[r].src==t)return n[r]}return null}},isActive:function(e,t,r){for(var n=\"no-\"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(n))return!1;e=e.parentElement}return!!r}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var r,n=R.util.clone(R.languages[e]);for(r in t)n[r]=t[r];return n},insertBefore:function(r,e,t,n){var a,i=(n=n||R.languages)[r],o={};for(a in i)if(i.hasOwnProperty(a)){if(a==e)for(var s in t)t.hasOwnProperty(s)&&(o[s]=t[s]);t.hasOwnProperty(a)||(o[a]=i[a])}var l=n[r];return n[r]=o,R.languages.DFS(R.languages,function(e,t){t===l&&e!=r&&(this[e]=o)}),o},DFS:function e(t,r,n,a){a=a||{};var i,o,s,l=R.util.objId;for(i in t)t.hasOwnProperty(i)&&(r.call(t,i,t[i],n||i),o=t[i],\"Object\"!==(s=R.util.type(o))||a[l(o)]?\"Array\"!==s||a[l(o)]||(a[l(o)]=!0,e(o,r,i,a)):(a[l(o)]=!0,e(o,r,null,a)))}},plugins:{},highlightAll:function(e,t){R.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,r){var n={callback:r,container:e,selector:'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'};R.hooks.run(\"before-highlightall\",n),n.elements=Array.prototype.slice.apply(n.container.querySelectorAll(n.selector)),R.hooks.run(\"before-all-elements-highlight\",n);for(var a,i=0;a=n.elements[i++];)R.highlightElement(a,!0===t,n.callback)},highlightElement:function(e,t,r){var n=R.util.getLanguage(e),a=R.languages[n],i=(R.util.setLanguage(e,n),e.parentElement);i&&\"pre\"===i.nodeName.toLowerCase()&&R.util.setLanguage(i,n);var o={element:e,language:n,grammar:a,code:e.textContent};function s(e){o.highlightedCode=e,R.hooks.run(\"before-insert\",o),o.element.innerHTML=o.highlightedCode,R.hooks.run(\"after-highlight\",o),R.hooks.run(\"complete\",o),r&&r.call(o.element)}R.hooks.run(\"before-sanity-check\",o),(i=o.element.parentElement)&&\"pre\"===i.nodeName.toLowerCase()&&!i.hasAttribute(\"tabindex\")&&i.setAttribute(\"tabindex\",\"0\"),o.code?(R.hooks.run(\"before-highlight\",o),o.grammar?t&&l.Worker?((n=new Worker(R.filename)).onmessage=function(e){s(e.data)},n.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))):s(R.highlight(o.code,o.grammar,o.language)):s(R.util.encode(o.code))):(R.hooks.run(\"complete\",o),r&&r.call(o.element))},highlight:function(e,t,r){e={code:e,grammar:t,language:r};if(R.hooks.run(\"before-tokenize\",e),e.grammar)return e.tokens=R.tokenize(e.code,e.grammar),R.hooks.run(\"after-tokenize\",e),N.stringify(R.util.encode(e.tokens),e.language);throw new Error('The language \"'+e.language+'\" has no grammar.')},tokenize:function(e,t){var r=t.rest;if(r){for(var n in r)t[n]=r[n];delete t.rest}for(var a=new m,i=(P(a,a.head,e),!function e(t,r,n,a,i,o){for(var s in n)if(n.hasOwnProperty(s)&&n[s]){var l=n[s];l=Array.isArray(l)?l:[l];for(var c=0;c<l.length;++c){if(o&&o.cause==s+\",\"+c)return;for(var u,d=l[c],p=d.inside,f=!!d.lookbehind,h=!!d.greedy,m=d.alias,g=(h&&!d.pattern.global&&(u=d.pattern.toString().match(/[imsuy]*$/)[0],d.pattern=RegExp(d.pattern.source,u+\"g\")),d.pattern||d),_=a.next,y=i;_!==r.tail&&!(o&&y>=o.reach);y+=_.value.length,_=_.next){var T=_.value;if(r.length>t.length)return;if(!(T instanceof N)){var v,b=1;if(h){if(!(v=M(g,y,t,f))||v.index>=t.length)break;var E=v.index,S=v.index+v[0].length,A=y;for(A+=_.value.length;A<=E;)_=_.next,A+=_.value.length;if(A-=_.value.length,y=A,_.value instanceof N)continue;for(var O=_;O!==r.tail&&(A<S||\"string\"==typeof O.value);O=O.next)b++,A+=O.value.length;b--,T=t.slice(y,A),v.index-=y}else if(!(v=M(g,0,T,f)))continue;var E=v.index,C=v[0],w=T.slice(0,E),k=T.slice(E+C.length),T=y+T.length,I=(o&&T>o.reach&&(o.reach=T),_.prev),w=(w&&(I=P(r,I,w),y+=w.length),D(r,I,b),new N(s,p?R.tokenize(C,p):C,m,C));_=P(r,I,w),k&&P(r,_,k),1<b&&(C={cause:s+\",\"+c,reach:T},e(t,r,n,_.prev,y,C),o)&&C.reach>o.reach&&(o.reach=C.reach)}}}}}(e,a,t,a.head,0),a),o=[],s=i.head.next;s!==i.tail;)o.push(s.value),s=s.next;return o},hooks:{all:{},add:function(e,t){var r=R.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=R.hooks.all[e];if(r&&r.length)for(var n,a=0;n=r[a++];)n(t)}},Token:N},l.Prism=R,N.stringify=function t(e,r){if(\"string\"==typeof e)return e;var n;if(Array.isArray(e))return n=\"\",e.forEach(function(e){n+=t(e,r)}),n;var a,i={type:e.type,content:t(e.content,r),tag:\"span\",classes:[\"token\",e.type],attributes:{},language:r},e=e.alias,o=(e&&(Array.isArray(e)?Array.prototype.push.apply(i.classes,e):i.classes.push(e)),R.hooks.run(\"wrap\",i),\"\");for(a in i.attributes)o+=\" \"+a+'=\"'+(i.attributes[a]||\"\").replace(/\"/g,\"&quot;\")+'\"';return\"<\"+i.tag+' class=\"'+i.classes.join(\" \")+'\"'+o+\">\"+i.content+\"</\"+i.tag+\">\"},l.document?((n=R.util.currentScript())&&(R.filename=n.src,n.hasAttribute(\"data-manual\"))&&(R.manual=!0),R.manual||(\"loading\"===(i=document.readyState)||\"interactive\"===i&&n&&n.defer?document.addEventListener(\"DOMContentLoaded\",o):window.requestAnimationFrame?window.requestAnimationFrame(o):window.setTimeout(o,16))):l.addEventListener&&!R.disableWorkerMessageHandler&&l.addEventListener(\"message\",function(e){var e=JSON.parse(e.data),t=e.language,r=e.code,e=e.immediateClose;l.postMessage(R.highlight(r,R.languages[t],t)),e&&l.close()},!1),h=R,e.exports&&(e.exports=h),void 0!==ve&&(ve.Prism=h),h.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},h.languages.markup.tag.inside[\"attr-value\"].inside.entity=h.languages.markup.entity,h.languages.markup.doctype.inside[\"internal-subset\"].inside=h.languages.markup,h.hooks.add(\"wrap\",function(e){\"entity\"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,\"&\"))}),Object.defineProperty(h.languages.markup.tag,\"addInlined\",{value:function(e,t){var r={},r=(r[\"language-\"+t]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:h.languages[t]},r.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i,{\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:r}}),t=(r[\"language-\"+t]={pattern:/[\\s\\S]+/,inside:h.languages[t]},{});t[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g,function(){return e}),\"i\"),lookbehind:!0,greedy:!0,inside:r},h.languages.insertBefore(\"markup\",\"cdata\",t)}}),Object.defineProperty(h.languages.markup.tag,\"addAttribute\",{value:function(e,t){h.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(/(^|[\"'\\s])/.source+\"(?:\"+e+\")\"+/\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[t,\"language-\"+t],inside:h.languages[t]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),h.languages.html=h.languages.markup,h.languages.mathml=h.languages.markup,h.languages.svg=h.languages.markup,h.languages.xml=h.languages.extend(\"markup\",{}),h.languages.ssml=h.languages.xml,h.languages.atom=h.languages.xml,h.languages.rss=h.languages.xml,i=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/,(n=h).languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:\"+/[^;{\\s\"']|\\s+(?!\\s)/.source+\"|\"+i.source+\")*?\"+/(?:;|(?=\\s*\\{))/.source),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+i.source+\"|\"+/(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source+\")\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+i.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+i.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:i,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},n.languages.css.atrule.inside.rest=n.languages.css,(i=n.languages.markup)&&(i.tag.addInlined(\"style\",\"css\"),i.tag.addAttribute(\"style\",\"css\")),h.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/},h.languages.javascript=h.languages.extend(\"clike\",{\"class-name\":[h.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(/(^|[^\\w$])/.source+\"(?:\"+/NaN|Infinity/.source+\"|\"+/0[bB][01]+(?:_[01]+)*n?/.source+\"|\"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+\"|\"+/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source+\"|\"+/\\d+(?:_\\d+)*n/.source+\"|\"+/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source+\")\"+/(?![\\w$])/.source),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),h.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,h.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source+/\\//.source+\"(?:\"+/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source+\"|\"+/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+\")\"+/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:h.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:h.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:h.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:h.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:h.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),h.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:h.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),h.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),h.languages.markup&&(h.languages.markup.tag.addInlined(\"script\",\"javascript\"),h.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\"javascript\")),h.languages.js=h.languages.javascript,void 0!==h&&\"undefined\"!=typeof document&&(Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),c=function(e,t){return\"✖ Error \"+e+\" while fetching file: \"+t},u=\"✖ Error: File does not exist or is empty\",d={js:\"javascript\",py:\"python\",rb:\"ruby\",ps1:\"powershell\",psm1:\"powershell\",sh:\"bash\",bat:\"batch\",h:\"c\",tex:\"latex\"},f=\"pre[data-src]:not([\"+(p=\"data-src-status\")+'=\"loaded\"]):not(['+p+'=\"loading\"])',h.hooks.add(\"before-highlightall\",function(e){e.selector+=\", \"+f}),h.hooks.add(\"before-sanity-check\",function(e){var a,t,r,n,i,o,s=e.element;s.matches(f)&&(e.code=\"\",s.setAttribute(p,\"loading\"),(a=s.appendChild(document.createElement(\"CODE\"))).textContent=\"Loading…\",t=s.getAttribute(\"data-src\"),\"none\"===(e=e.language)&&(r=(/\\.(\\w+)$/.exec(t)||[,\"none\"])[1],e=d[r]||r),h.util.setLanguage(a,e),h.util.setLanguage(s,e),(r=h.plugins.autoloader)&&r.loadLanguages(e),r=t,n=function(e){s.setAttribute(p,\"loaded\");var t,r,n=function(e){var t,r;if(e=/^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(e||\"\"))return t=Number(e[1]),r=e[2],e=e[3],r?e?[t,Number(e)]:[t,void 0]:[t,t]}(s.getAttribute(\"data-range\"));n&&(t=e.split(/\\r\\n?|\\n/g),r=n[0],n=null==n[1]?t.length:n[1],r<0&&(r+=t.length),r=Math.max(0,Math.min(r-1,t.length)),n<0&&(n+=t.length),n=Math.max(0,Math.min(n,t.length)),e=t.slice(r,n).join(\"\\n\"),s.hasAttribute(\"data-start\")||s.setAttribute(\"data-start\",String(r+1))),a.textContent=e,h.highlightElement(a)},i=function(e){s.setAttribute(p,\"failed\"),a.textContent=e},(o=new XMLHttpRequest).open(\"GET\",r,!0),o.onreadystatechange=function(){4==o.readyState&&(o.status<400&&o.responseText?n(o.responseText):400<=o.status?i(c(o.status,o.statusText)):i(u))},o.send(null))}),a=!(h.plugins.fileHighlight={highlight:function(e){for(var t,r=(e||document).querySelectorAll(f),n=0;t=r[n++];)h.highlightElement(t)}}),h.fileHighlight=function(){a||(console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\"),a=!0),h.plugins.fileHighlight.highlight.apply(this,arguments)})),Hf.exports;function N(e,t,r,n){this.type=e,this.content=t,this.alias=r,this.length=0|(n||\"\").length}function M(e,t,r,n){e.lastIndex=t;t=e.exec(r);return t&&n&&t[1]&&(e=t[1].length,t.index+=e,t[0]=t[0].slice(e)),t}function m(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function P(e,t,r){var n=t.next,r={value:r,prev:t,next:n};return t.next=r,n.prev=r,e.length++,r}function D(e,t,r){for(var n=t.next,a=0;a<r&&n!==e.tail;a++)n=n.next;(t.next=n).prev=t,e.length-=a}function o(){R.manual||R.highlightAll()}}var Vf;var qf;function zf(){var a,i,e,t;function o(e){0!=(e=e.filter(function(e){e=((e=e)?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null)[\"white-space\"];return\"pre-wrap\"===e||\"pre-line\"===e})).length&&((e=e.map(function(e){var t,r=e.querySelector(\"code\"),n=e.querySelector(\".line-numbers-rows\");if(r&&n)return n=e.querySelector(\".line-numbers-sizer\"),t=r.textContent.split(i),n||((n=document.createElement(\"span\")).className=\"line-numbers-sizer\",r.appendChild(n)),n.innerHTML=\"0\",n.style.display=\"block\",r=n.getBoundingClientRect().height,n.innerHTML=\"\",{element:e,lines:t,lineHeights:[],oneLinerHeight:r,sizer:n}}).filter(Boolean)).forEach(function(e){var n=e.sizer,t=e.lines,a=e.lineHeights,i=e.oneLinerHeight;a[t.length-1]=void 0,t.forEach(function(e,t){var r;e&&1<e.length?((r=n.appendChild(document.createElement(\"span\"))).style.display=\"block\",r.textContent=e):a[t]=i})}),e.forEach(function(e){for(var t=e.sizer,r=e.lineHeights,n=0,a=0;a<r.length;a++)void 0===r[a]&&(r[a]=t.children[n++].getBoundingClientRect().height)}),e.forEach(function(e){var t=e.sizer,r=e.element.querySelector(\".line-numbers-rows\");t.style.display=\"none\",t.innerHTML=\"\",e.lineHeights.forEach(function(e,t){r.children[t].style.height=e+\"px\"})}))}qf||(qf=1,\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document&&(a=\"line-numbers\",i=/\\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,t){if(\"PRE\"===e.tagName&&e.classList.contains(a)){var r,n=e.querySelector(\".line-numbers-rows\");if(n)return r=(t=(r=(e=parseInt(e.getAttribute(\"data-start\"),10)||1)+(n.children.length-1))<(t=t<e?e:t)?r:t)-e,n.children[r]}},resize:function(e){o([e])},assumeViewportIndependence:!0},t=void 0,window.addEventListener(\"resize\",function(){e.assumeViewportIndependence&&t===window.innerWidth||(t=window.innerWidth,o(Array.prototype.slice.call(document.querySelectorAll(\"pre.\"+a))))}),Prism.hooks.add(\"complete\",function(e){var t,r,n;e.code&&(t=(r=e.element).parentNode)&&/pre/i.test(t.nodeName)&&(r.querySelector(\".line-numbers-rows\")||Prism.util.isActive(r,a)&&(r.classList.remove(a),t.classList.add(a),r=(r=e.code.match(i))?r.length+1:1,r=new Array(r+1).join(\"<span></span>\"),(n=document.createElement(\"span\")).setAttribute(\"aria-hidden\",\"true\"),n.className=\"line-numbers-rows\",n.innerHTML=r,t.hasAttribute(\"data-start\")&&(t.style.counterReset=\"linenumber \"+(parseInt(t.getAttribute(\"data-start\"),10)-1)),e.element.appendChild(n),o([t]),Prism.hooks.run(\"line-numbers\",e)))}),Prism.hooks.add(\"line-numbers\",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})))}var Wf,$f={},Kf={};var Yf,Jf,Qf={},Zf={};function Xf(){if(!Yf){Yf=1;{var r=Zf;Object.defineProperty(r,\"__esModule\",{value:!0}),r.DEFAULT_CHANNEL=void 0,r.getCurrentChannel=n,r.getNextChannel=a,r.channelChanged=function(){return n()!==a()},r.setChannel=function(e){n(),t=e,localStorage.setItem(i,e)},r.DEFAULT_CHANNEL=\"stable\";const i=\"perfettoUiChannel\";let e=void 0,t=void 0;function n(){return e=void 0===e?localStorage.getItem(i)??r.DEFAULT_CHANNEL:e}function a(){return void 0!==t?t:n()}}}return Zf}function eh(){if(Jf)return Qf;Jf=1,Object.defineProperty(Qf,\"__esModule\",{value:!0}),Qf.initAnalytics=function(e,t,r){return new(!window.location.origin.startsWith(\"http://localhost:\")&&!window.location.origin.endsWith(\".perfetto.dev\")||e||t||!r?c:u)};const r=Xf(),n=Yt(),t=Xl(),a=\"G-BD89KT2P3C\",i=\"no-page-title\";function o(){var e=t.Router.parseUrl(window.location.href).args.referrer;if(e)return e}function s(){var e=o();return e?function(e){let t;try{t=new URL(e)}catch(e){return}return\"http:\"===t.protocol||\"https:\"===t.protocol}(e)?e:`https://${e.replaceAll(\"_\",\"-\")}.example.com/converted_non_url_referrer`:document.referrer.split(\"?\")[0]}const l=window;class c{initialize(e){}logEvent(e,t){}logError(e){}isEnabled(){return!1}}class u{initialized_=!1;constructor(){l.dataLayer=l.dataLayer||[],l.gtag=function(){l.dataLayer.push(arguments)},l.gtag(\"js\",new Date)}initialize(e){var t;this.initialized_||(this.initialized_=!0,(t=document.createElement(\"script\")).src=\"https://www.googletagmanager.com/gtag/js?id=\"+a,t.defer=!0,document.head.appendChild(t),t=window.location.href,console.log(\"GA initialized. route=\"+t,\"isInternalUser=\"+e),l.gtag(\"config\",a,{allow_google_signals:!1,anonymize_ip:!0,page_location:t,page_referrer:s(),send_page_view:!1,page_title:i,perfetto_is_internal_user:e?\"1\":\"0\",perfetto_version:n.VERSION,perfetto_channel:(0,r.getCurrentChannel)(),perfetto_referrer_override:o()??\"\"}),l.gtag(\"event\",\"page_view\",{page_path:t,page_title:i}))}logEvent(e,t){l.gtag(\"event\",t,{event_category:e})}logError(e){let t=\"\";for(const n of e.stack){var r=n.location.replace(\"frontend_bundle.js\",\"$\");t+=n.name+`(${r}),`}t=t.substring(0,t.length-1),l.gtag(\"event\",\"exception\",{description:e.message,error_type:e.errType,page_location:\"http://crash?/\"+encodeURI(t)})}isEnabled(){return!0}}return Qf}var th,rh={},nh={};function ah(){if(!th){th=1,Object.defineProperty(nh,\"__esModule\",{value:!0}),nh.cacheTrace=async function(e,t){let r,n=\"\",a=\"\",i=\"\",o=0,s=!1;switch(e.type){case\"ARRAY_BUFFER\":r=e.buffer,n=e.title,a=e.fileName??\"\",i=e.url??\"\",o=e.buffer.byteLength,s=e.localOnly||!1;break;case\"FILE\":r=e.file.stream(),n=e.file.name,o=e.file.size;break;default:return!1}var l=new Headers([[\"x-trace-title\",encodeURI(n)],[\"x-trace-url\",i],[\"x-trace-filename\",a],[\"x-trace-local-only\",\"\"+s],[\"content-type\",\"application/octet-stream\"],[\"content-length\",\"\"+o],[\"expires\",new Date((new Date).getTime()+6048e5).toUTCString()]]),t=(await d(),`/_${p}/`+t),l=(await async function(e,t){try{var r=await c();void 0!==r&&await r.put(e,t)}catch(e){}}(t,new Response(r,{headers:l})),await u(t));return!!l||(console.error(`Failed to cache trace '${n}', likely file too large: ${o} bytes`),!1)},nh.tryGetTrace=async function(e){await d();var t=await u(`/_${p}/`+e);if(t)return{type:\"ARRAY_BUFFER\",buffer:await t.arrayBuffer(),title:decodeURI(t.headers.get(\"x-trace-title\")??\"\"),fileName:t.headers.get(\"x-trace-filename\")??void 0,url:t.headers.get(\"x-trace-url\")??void 0,uuid:e,localOnly:\"true\"===t.headers.get(\"x-trace-local-only\")}};const p=\"cached_traces\",l=10;let e=void 0;async function c(){if(void 0!==self.caches)return e=void 0===e?await caches.open(p):e}async function s(e){try{var t=await c();return void 0===t?!1:await t.delete(e)}catch(e){return!1}}async function u(e){try{var t=await c();if(void 0!==t)return await t.match(e)}catch(e){}}async function d(){var e=await async function(){try{var e=await c();return void 0===e?[]:await e.keys()}catch(e){return[]}}(),t=[],r=new Date,n=[];for(const i of e){var a=await u(i);void 0!==a&&(null==(a=a.headers.get(\"expires\"))||(a=new Date(a))<r?n.push(s(i)):t.push({key:i,date:a}))}for(const o of t.sort((e,t)=>t.date.getTime()-e.date.getTime()).slice(l))n.push(s(o.key));await Promise.all(n)}}return nh}var ih,oh,sh,lh,ch={},uh={};function dh(){var n,o,a,i,s,e,t,r,L;return sh||(sh=1,Object.defineProperty(uh,\"__esModule\",{value:!0}),e=Jr.__importDefault((oh||(oh=1,n=Qr(),o=n.Reader,a=n.Writer,i=n.util,(s=n.roots.default||(n.roots.default={})).perfetto=((L={}).protos=((r={}).ConsumerPort=(((l.prototype=Object.create(n.rpc.Service.prototype)).constructor=l).create=function(e,t,r){return new this(e,t,r)},Object.defineProperty(l.prototype.enableTracing=function e(t,r){return this.rpcCall(e,s.perfetto.protos.EnableTracingRequest,s.perfetto.protos.EnableTracingResponse,t,r)},\"name\",{value:\"EnableTracing\"}),Object.defineProperty(l.prototype.disableTracing=function e(t,r){return this.rpcCall(e,s.perfetto.protos.DisableTracingRequest,s.perfetto.protos.DisableTracingResponse,t,r)},\"name\",{value:\"DisableTracing\"}),Object.defineProperty(l.prototype.readBuffers=function e(t,r){return this.rpcCall(e,s.perfetto.protos.ReadBuffersRequest,s.perfetto.protos.ReadBuffersResponse,t,r)},\"name\",{value:\"ReadBuffers\"}),Object.defineProperty(l.prototype.freeBuffers=function e(t,r){return this.rpcCall(e,s.perfetto.protos.FreeBuffersRequest,s.perfetto.protos.FreeBuffersResponse,t,r)},\"name\",{value:\"FreeBuffers\"}),Object.defineProperty(l.prototype.flush=function e(t,r){return this.rpcCall(e,s.perfetto.protos.FlushRequest,s.perfetto.protos.FlushResponse,t,r)},\"name\",{value:\"Flush\"}),Object.defineProperty(l.prototype.startTracing=function e(t,r){return this.rpcCall(e,s.perfetto.protos.StartTracingRequest,s.perfetto.protos.StartTracingResponse,t,r)},\"name\",{value:\"StartTracing\"}),Object.defineProperty(l.prototype.changeTraceConfig=function e(t,r){return this.rpcCall(e,s.perfetto.protos.ChangeTraceConfigRequest,s.perfetto.protos.ChangeTraceConfigResponse,t,r)},\"name\",{value:\"ChangeTraceConfig\"}),Object.defineProperty(l.prototype.detach=function e(t,r){return this.rpcCall(e,s.perfetto.protos.DetachRequest,s.perfetto.protos.DetachResponse,t,r)},\"name\",{value:\"Detach\"}),Object.defineProperty(l.prototype.attach=function e(t,r){return this.rpcCall(e,s.perfetto.protos.AttachRequest,s.perfetto.protos.AttachResponse,t,r)},\"name\",{value:\"Attach\"}),Object.defineProperty(l.prototype.getTraceStats=function e(t,r){return this.rpcCall(e,s.perfetto.protos.GetTraceStatsRequest,s.perfetto.protos.GetTraceStatsResponse,t,r)},\"name\",{value:\"GetTraceStats\"}),Object.defineProperty(l.prototype.observeEvents=function e(t,r){return this.rpcCall(e,s.perfetto.protos.ObserveEventsRequest,s.perfetto.protos.ObserveEventsResponse,t,r)},\"name\",{value:\"ObserveEvents\"}),Object.defineProperty(l.prototype.queryServiceState=function e(t,r){return this.rpcCall(e,s.perfetto.protos.QueryServiceStateRequest,s.perfetto.protos.QueryServiceStateResponse,t,r)},\"name\",{value:\"QueryServiceState\"}),Object.defineProperty(l.prototype.queryCapabilities=function e(t,r){return this.rpcCall(e,s.perfetto.protos.QueryCapabilitiesRequest,s.perfetto.protos.QueryCapabilitiesResponse,t,r)},\"name\",{value:\"QueryCapabilities\"}),Object.defineProperty(l.prototype.saveTraceForBugreport=function e(t,r){return this.rpcCall(e,s.perfetto.protos.SaveTraceForBugreportRequest,s.perfetto.protos.SaveTraceForBugreportResponse,t,r)},\"name\",{value:\"SaveTraceForBugreport\"}),Object.defineProperty(l.prototype.cloneSession=function e(t,r){return this.rpcCall(e,s.perfetto.protos.CloneSessionRequest,s.perfetto.protos.CloneSessionResponse,t,r)},\"name\",{value:\"CloneSession\"}),l),r.EnableTracingRequest=(F.prototype.traceConfig=null,F.prototype.attachNotificationOnly=!1,F.create=function(e){return new F(e)},F.encode=function(e,t){return t=t||a.create(),null!=e.traceConfig&&Object.hasOwnProperty.call(e,\"traceConfig\")&&s.perfetto.protos.TraceConfig.encode(e.traceConfig,t.uint32(10).fork()).ldelim(),null!=e.attachNotificationOnly&&Object.hasOwnProperty.call(e,\"attachNotificationOnly\")&&t.uint32(16).bool(e.attachNotificationOnly),t},F.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EnableTracingRequest;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.traceConfig=s.perfetto.protos.TraceConfig.decode(e,e.uint32());break;case 2:n.attachNotificationOnly=e.bool();break;default:e.skipType(7&a)}}return n},F.fromObject=function(e){if(e instanceof s.perfetto.protos.EnableTracingRequest)return e;var t=new s.perfetto.protos.EnableTracingRequest;if(null!=e.traceConfig){if(\"object\"!=typeof e.traceConfig)throw TypeError(\".perfetto.protos.EnableTracingRequest.traceConfig: object expected\");t.traceConfig=s.perfetto.protos.TraceConfig.fromObject(e.traceConfig)}return null!=e.attachNotificationOnly&&(t.attachNotificationOnly=Boolean(e.attachNotificationOnly)),t},F.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.traceConfig=null,r.attachNotificationOnly=!1),null!=e.traceConfig&&e.hasOwnProperty(\"traceConfig\")&&(r.traceConfig=s.perfetto.protos.TraceConfig.toObject(e.traceConfig,t)),null!=e.attachNotificationOnly&&e.hasOwnProperty(\"attachNotificationOnly\")&&(r.attachNotificationOnly=e.attachNotificationOnly),r},F.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},F.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnableTracingRequest\"},F),r.EnableTracingResponse=(U.prototype.disabled=null,U.prototype.error=\"\",Object.defineProperty(U.prototype,\"state\",{get:i.oneOfGetter(e=[\"disabled\"]),set:i.oneOfSetter(e)}),U.create=function(e){return new U(e)},U.encode=function(e,t){return t=t||a.create(),null!=e.disabled&&Object.hasOwnProperty.call(e,\"disabled\")&&t.uint32(8).bool(e.disabled),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(26).string(e.error),t},U.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EnableTracingResponse;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.disabled=e.bool();break;case 3:n.error=e.string();break;default:e.skipType(7&a)}}return n},U.fromObject=function(e){var t;return e instanceof s.perfetto.protos.EnableTracingResponse?e:(t=new s.perfetto.protos.EnableTracingResponse,null!=e.disabled&&(t.disabled=Boolean(e.disabled)),null!=e.error&&(t.error=String(e.error)),t)},U.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.disabled&&e.hasOwnProperty(\"disabled\")&&(r.disabled=e.disabled,t.oneofs)&&(r.state=\"disabled\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},U.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},U.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnableTracingResponse\"},U),r.StartTracingRequest=(B.create=function(e){return new B(e)},B.encode=function(e,t){return t=t||a.create()},B.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.StartTracingRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},B.fromObject=function(e){return e instanceof s.perfetto.protos.StartTracingRequest?e:new s.perfetto.protos.StartTracingRequest},B.toObject=function(){return{}},B.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},B.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StartTracingRequest\"},B),r.StartTracingResponse=(j.create=function(e){return new j(e)},j.encode=function(e,t){return t=t||a.create()},j.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.StartTracingResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},j.fromObject=function(e){return e instanceof s.perfetto.protos.StartTracingResponse?e:new s.perfetto.protos.StartTracingResponse},j.toObject=function(){return{}},j.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},j.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StartTracingResponse\"},j),r.ChangeTraceConfigRequest=(H.prototype.traceConfig=null,H.create=function(e){return new H(e)},H.encode=function(e,t){return t=t||a.create(),null!=e.traceConfig&&Object.hasOwnProperty.call(e,\"traceConfig\")&&s.perfetto.protos.TraceConfig.encode(e.traceConfig,t.uint32(10).fork()).ldelim(),t},H.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ChangeTraceConfigRequest;e.pos<r;){var a=e.uint32();a>>>3==1?n.traceConfig=s.perfetto.protos.TraceConfig.decode(e,e.uint32()):e.skipType(7&a)}return n},H.fromObject=function(e){if(e instanceof s.perfetto.protos.ChangeTraceConfigRequest)return e;var t=new s.perfetto.protos.ChangeTraceConfigRequest;if(null!=e.traceConfig){if(\"object\"!=typeof e.traceConfig)throw TypeError(\".perfetto.protos.ChangeTraceConfigRequest.traceConfig: object expected\");t.traceConfig=s.perfetto.protos.TraceConfig.fromObject(e.traceConfig)}return t},H.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.traceConfig=null),null!=e.traceConfig&&e.hasOwnProperty(\"traceConfig\")&&(r.traceConfig=s.perfetto.protos.TraceConfig.toObject(e.traceConfig,t)),r},H.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},H.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChangeTraceConfigRequest\"},H),r.ChangeTraceConfigResponse=(G.create=function(e){return new G(e)},G.encode=function(e,t){return t=t||a.create()},G.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.ChangeTraceConfigResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},G.fromObject=function(e){return e instanceof s.perfetto.protos.ChangeTraceConfigResponse?e:new s.perfetto.protos.ChangeTraceConfigResponse},G.toObject=function(){return{}},G.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},G.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChangeTraceConfigResponse\"},G),r.DisableTracingRequest=(V.create=function(e){return new V(e)},V.encode=function(e,t){return t=t||a.create()},V.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.DisableTracingRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},V.fromObject=function(e){return e instanceof s.perfetto.protos.DisableTracingRequest?e:new s.perfetto.protos.DisableTracingRequest},V.toObject=function(){return{}},V.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},V.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DisableTracingRequest\"},V),r.DisableTracingResponse=(q.create=function(e){return new q(e)},q.encode=function(e,t){return t=t||a.create()},q.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.DisableTracingResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},q.fromObject=function(e){return e instanceof s.perfetto.protos.DisableTracingResponse?e:new s.perfetto.protos.DisableTracingResponse},q.toObject=function(){return{}},q.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},q.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DisableTracingResponse\"},q),r.ReadBuffersRequest=(z.create=function(e){return new z(e)},z.encode=function(e,t){return t=t||a.create()},z.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.ReadBuffersRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},z.fromObject=function(e){return e instanceof s.perfetto.protos.ReadBuffersRequest?e:new s.perfetto.protos.ReadBuffersRequest},z.toObject=function(){return{}},z.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},z.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ReadBuffersRequest\"},z),r.ReadBuffersResponse=(W.prototype.slices=i.emptyArray,W.create=function(e){return new W(e)},W.encode=function(e,t){if(t=t||a.create(),null!=e.slices&&e.slices.length)for(var r=0;r<e.slices.length;++r)s.perfetto.protos.ReadBuffersResponse.Slice.encode(e.slices[r],t.uint32(18).fork()).ldelim();return t},W.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ReadBuffersResponse;e.pos<r;){var a=e.uint32();a>>>3==2?(n.slices&&n.slices.length||(n.slices=[]),n.slices.push(s.perfetto.protos.ReadBuffersResponse.Slice.decode(e,e.uint32()))):e.skipType(7&a)}return n},W.fromObject=function(e){if(e instanceof s.perfetto.protos.ReadBuffersResponse)return e;var t=new s.perfetto.protos.ReadBuffersResponse;if(e.slices){if(!Array.isArray(e.slices))throw TypeError(\".perfetto.protos.ReadBuffersResponse.slices: array expected\");t.slices=[];for(var r=0;r<e.slices.length;++r){if(\"object\"!=typeof e.slices[r])throw TypeError(\".perfetto.protos.ReadBuffersResponse.slices: object expected\");t.slices[r]=s.perfetto.protos.ReadBuffersResponse.Slice.fromObject(e.slices[r])}}return t},W.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.slices=[]),e.slices&&e.slices.length){r.slices=[];for(var n=0;n<e.slices.length;++n)r.slices[n]=s.perfetto.protos.ReadBuffersResponse.Slice.toObject(e.slices[n],t)}return r},W.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},W.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ReadBuffersResponse\"},W.Slice=($.prototype.data=i.newBuffer([]),$.prototype.lastSliceForPacket=!1,$.create=function(e){return new $(e)},$.encode=function(e,t){return t=t||a.create(),null!=e.data&&Object.hasOwnProperty.call(e,\"data\")&&t.uint32(10).bytes(e.data),null!=e.lastSliceForPacket&&Object.hasOwnProperty.call(e,\"lastSliceForPacket\")&&t.uint32(16).bool(e.lastSliceForPacket),t},$.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ReadBuffersResponse.Slice;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.data=e.bytes();break;case 2:n.lastSliceForPacket=e.bool();break;default:e.skipType(7&a)}}return n},$.fromObject=function(e){var t;return e instanceof s.perfetto.protos.ReadBuffersResponse.Slice?e:(t=new s.perfetto.protos.ReadBuffersResponse.Slice,null!=e.data&&(\"string\"==typeof e.data?i.base64.decode(e.data,t.data=i.newBuffer(i.base64.length(e.data)),0):0<=e.data.length&&(t.data=e.data)),null!=e.lastSliceForPacket&&(t.lastSliceForPacket=Boolean(e.lastSliceForPacket)),t)},$.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(t.bytes===String?r.data=\"\":(r.data=[],t.bytes!==Array&&(r.data=i.newBuffer(r.data))),r.lastSliceForPacket=!1),null!=e.data&&e.hasOwnProperty(\"data\")&&(r.data=t.bytes===String?i.base64.encode(e.data,0,e.data.length):t.bytes===Array?Array.prototype.slice.call(e.data):e.data),null!=e.lastSliceForPacket&&e.hasOwnProperty(\"lastSliceForPacket\")&&(r.lastSliceForPacket=e.lastSliceForPacket),r},$.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},$.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ReadBuffersResponse.Slice\"},$),W),r.FreeBuffersRequest=(K.prototype.bufferIds=i.emptyArray,K.create=function(e){return new K(e)},K.encode=function(e,t){if(t=t||a.create(),null!=e.bufferIds&&e.bufferIds.length)for(var r=0;r<e.bufferIds.length;++r)t.uint32(8).uint32(e.bufferIds[r]);return t},K.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FreeBuffersRequest;e.pos<r;){var a=e.uint32();if(a>>>3==1)if(n.bufferIds&&n.bufferIds.length||(n.bufferIds=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.bufferIds.push(e.uint32());else n.bufferIds.push(e.uint32());else e.skipType(7&a)}return n},K.fromObject=function(e){if(e instanceof s.perfetto.protos.FreeBuffersRequest)return e;var t=new s.perfetto.protos.FreeBuffersRequest;if(e.bufferIds){if(!Array.isArray(e.bufferIds))throw TypeError(\".perfetto.protos.FreeBuffersRequest.bufferIds: array expected\");t.bufferIds=[];for(var r=0;r<e.bufferIds.length;++r)t.bufferIds[r]=e.bufferIds[r]>>>0}return t},K.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.bufferIds=[]),e.bufferIds&&e.bufferIds.length){r.bufferIds=[];for(var n=0;n<e.bufferIds.length;++n)r.bufferIds[n]=e.bufferIds[n]}return r},K.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},K.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FreeBuffersRequest\"},K),r.FreeBuffersResponse=(Y.create=function(e){return new Y(e)},Y.encode=function(e,t){return t=t||a.create()},Y.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.FreeBuffersResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Y.fromObject=function(e){return e instanceof s.perfetto.protos.FreeBuffersResponse?e:new s.perfetto.protos.FreeBuffersResponse},Y.toObject=function(){return{}},Y.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Y.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FreeBuffersResponse\"},Y),r.FlushRequest=(J.prototype.timeoutMs=0,J.prototype.flags=i.Long?i.Long.fromBits(0,0,!0):0,J.create=function(e){return new J(e)},J.encode=function(e,t){return t=t||a.create(),null!=e.timeoutMs&&Object.hasOwnProperty.call(e,\"timeoutMs\")&&t.uint32(8).uint32(e.timeoutMs),null!=e.flags&&Object.hasOwnProperty.call(e,\"flags\")&&t.uint32(16).uint64(e.flags),t},J.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FlushRequest;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.timeoutMs=e.uint32();break;case 2:n.flags=e.uint64();break;default:e.skipType(7&a)}}return n},J.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FlushRequest?e:(t=new s.perfetto.protos.FlushRequest,null!=e.timeoutMs&&(t.timeoutMs=e.timeoutMs>>>0),null!=e.flags&&(i.Long?(t.flags=i.Long.fromValue(e.flags)).unsigned=!0:\"string\"==typeof e.flags?t.flags=parseInt(e.flags,10):\"number\"==typeof e.flags?t.flags=e.flags:\"object\"==typeof e.flags&&(t.flags=new i.LongBits(e.flags.low>>>0,e.flags.high>>>0).toNumber(!0))),t)},J.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.timeoutMs=0,i.Long?(r=new i.Long(0,0,!0),n.flags=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.flags=t.longs===String?\"0\":0),null!=e.timeoutMs&&e.hasOwnProperty(\"timeoutMs\")&&(n.timeoutMs=e.timeoutMs),null!=e.flags&&e.hasOwnProperty(\"flags\")&&(\"number\"==typeof e.flags?n.flags=t.longs===String?String(e.flags):e.flags:n.flags=t.longs===String?i.Long.prototype.toString.call(e.flags):t.longs===Number?new i.LongBits(e.flags.low>>>0,e.flags.high>>>0).toNumber(!0):e.flags),n},J.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},J.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FlushRequest\"},J),r.FlushResponse=(Q.create=function(e){return new Q(e)},Q.encode=function(e,t){return t=t||a.create()},Q.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.FlushResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Q.fromObject=function(e){return e instanceof s.perfetto.protos.FlushResponse?e:new s.perfetto.protos.FlushResponse},Q.toObject=function(){return{}},Q.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Q.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FlushResponse\"},Q),r.DetachRequest=(Z.prototype.key=\"\",Z.create=function(e){return new Z(e)},Z.encode=function(e,t){return t=t||a.create(),null!=e.key&&Object.hasOwnProperty.call(e,\"key\")&&t.uint32(10).string(e.key),t},Z.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DetachRequest;e.pos<r;){var a=e.uint32();a>>>3==1?n.key=e.string():e.skipType(7&a)}return n},Z.fromObject=function(e){var t;return e instanceof s.perfetto.protos.DetachRequest?e:(t=new s.perfetto.protos.DetachRequest,null!=e.key&&(t.key=String(e.key)),t)},Z.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.key=\"\"),null!=e.key&&e.hasOwnProperty(\"key\")&&(r.key=e.key),r},Z.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Z.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DetachRequest\"},Z),r.DetachResponse=(X.create=function(e){return new X(e)},X.encode=function(e,t){return t=t||a.create()},X.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.DetachResponse;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},X.fromObject=function(e){return e instanceof s.perfetto.protos.DetachResponse?e:new s.perfetto.protos.DetachResponse},X.toObject=function(){return{}},X.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},X.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DetachResponse\"},X),r.AttachRequest=(ee.prototype.key=\"\",ee.create=function(e){return new ee(e)},ee.encode=function(e,t){return t=t||a.create(),null!=e.key&&Object.hasOwnProperty.call(e,\"key\")&&t.uint32(10).string(e.key),t},ee.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AttachRequest;e.pos<r;){var a=e.uint32();a>>>3==1?n.key=e.string():e.skipType(7&a)}return n},ee.fromObject=function(e){var t;return e instanceof s.perfetto.protos.AttachRequest?e:(t=new s.perfetto.protos.AttachRequest,null!=e.key&&(t.key=String(e.key)),t)},ee.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.key=\"\"),null!=e.key&&e.hasOwnProperty(\"key\")&&(r.key=e.key),r},ee.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ee.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AttachRequest\"},ee),r.AttachResponse=(te.prototype.traceConfig=null,te.create=function(e){return new te(e)},te.encode=function(e,t){return t=t||a.create(),null!=e.traceConfig&&Object.hasOwnProperty.call(e,\"traceConfig\")&&s.perfetto.protos.TraceConfig.encode(e.traceConfig,t.uint32(10).fork()).ldelim(),t},te.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AttachResponse;e.pos<r;){var a=e.uint32();a>>>3==1?n.traceConfig=s.perfetto.protos.TraceConfig.decode(e,e.uint32()):e.skipType(7&a)}return n},te.fromObject=function(e){if(e instanceof s.perfetto.protos.AttachResponse)return e;var t=new s.perfetto.protos.AttachResponse;if(null!=e.traceConfig){if(\"object\"!=typeof e.traceConfig)throw TypeError(\".perfetto.protos.AttachResponse.traceConfig: object expected\");t.traceConfig=s.perfetto.protos.TraceConfig.fromObject(e.traceConfig)}return t},te.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.traceConfig=null),null!=e.traceConfig&&e.hasOwnProperty(\"traceConfig\")&&(r.traceConfig=s.perfetto.protos.TraceConfig.toObject(e.traceConfig,t)),r},te.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},te.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AttachResponse\"},te),r.GetTraceStatsRequest=(re.create=function(e){return new re(e)},re.encode=function(e,t){return t=t||a.create()},re.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.GetTraceStatsRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},re.fromObject=function(e){return e instanceof s.perfetto.protos.GetTraceStatsRequest?e:new s.perfetto.protos.GetTraceStatsRequest},re.toObject=function(){return{}},re.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},re.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GetTraceStatsRequest\"},re),r.GetTraceStatsResponse=(ne.prototype.traceStats=null,ne.create=function(e){return new ne(e)},ne.encode=function(e,t){return t=t||a.create(),null!=e.traceStats&&Object.hasOwnProperty.call(e,\"traceStats\")&&s.perfetto.protos.TraceStats.encode(e.traceStats,t.uint32(10).fork()).ldelim(),t},ne.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GetTraceStatsResponse;e.pos<r;){var a=e.uint32();a>>>3==1?n.traceStats=s.perfetto.protos.TraceStats.decode(e,e.uint32()):e.skipType(7&a)}return n},ne.fromObject=function(e){if(e instanceof s.perfetto.protos.GetTraceStatsResponse)return e;var t=new s.perfetto.protos.GetTraceStatsResponse;if(null!=e.traceStats){if(\"object\"!=typeof e.traceStats)throw TypeError(\".perfetto.protos.GetTraceStatsResponse.traceStats: object expected\");t.traceStats=s.perfetto.protos.TraceStats.fromObject(e.traceStats)}return t},ne.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.traceStats=null),null!=e.traceStats&&e.hasOwnProperty(\"traceStats\")&&(r.traceStats=s.perfetto.protos.TraceStats.toObject(e.traceStats,t)),r},ne.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ne.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GetTraceStatsResponse\"},ne),r.ObserveEventsRequest=(ae.prototype.eventsToObserve=i.emptyArray,ae.create=function(e){return new ae(e)},ae.encode=function(e,t){if(t=t||a.create(),null!=e.eventsToObserve&&e.eventsToObserve.length)for(var r=0;r<e.eventsToObserve.length;++r)t.uint32(8).int32(e.eventsToObserve[r]);return t},ae.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ObserveEventsRequest;e.pos<r;){var a=e.uint32();if(a>>>3==1)if(n.eventsToObserve&&n.eventsToObserve.length||(n.eventsToObserve=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.eventsToObserve.push(e.int32());else n.eventsToObserve.push(e.int32());else e.skipType(7&a)}return n},ae.fromObject=function(e){if(e instanceof s.perfetto.protos.ObserveEventsRequest)return e;var t=new s.perfetto.protos.ObserveEventsRequest;if(e.eventsToObserve){if(!Array.isArray(e.eventsToObserve))throw TypeError(\".perfetto.protos.ObserveEventsRequest.eventsToObserve: array expected\");t.eventsToObserve=[];for(var r=0;r<e.eventsToObserve.length;++r)switch(e.eventsToObserve[r]){default:if(\"number\"==typeof e.eventsToObserve[r]){t.eventsToObserve[r]=e.eventsToObserve[r];break}case\"TYPE_UNSPECIFIED\":case 0:t.eventsToObserve[r]=0;break;case\"TYPE_DATA_SOURCES_INSTANCES\":case 1:t.eventsToObserve[r]=1;break;case\"TYPE_ALL_DATA_SOURCES_STARTED\":case 2:t.eventsToObserve[r]=2;break;case\"TYPE_CLONE_TRIGGER_HIT\":case 4:t.eventsToObserve[r]=4}}return t},ae.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.eventsToObserve=[]),e.eventsToObserve&&e.eventsToObserve.length){r.eventsToObserve=[];for(var n=0;n<e.eventsToObserve.length;++n)r.eventsToObserve[n]=t.enums!==String||void 0===s.perfetto.protos.ObservableEvents.Type[e.eventsToObserve[n]]?e.eventsToObserve[n]:s.perfetto.protos.ObservableEvents.Type[e.eventsToObserve[n]]}return r},ae.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ae.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ObserveEventsRequest\"},ae),r.ObserveEventsResponse=(ie.prototype.events=null,ie.create=function(e){return new ie(e)},ie.encode=function(e,t){return t=t||a.create(),null!=e.events&&Object.hasOwnProperty.call(e,\"events\")&&s.perfetto.protos.ObservableEvents.encode(e.events,t.uint32(10).fork()).ldelim(),t},ie.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ObserveEventsResponse;e.pos<r;){var a=e.uint32();a>>>3==1?n.events=s.perfetto.protos.ObservableEvents.decode(e,e.uint32()):e.skipType(7&a)}return n},ie.fromObject=function(e){if(e instanceof s.perfetto.protos.ObserveEventsResponse)return e;var t=new s.perfetto.protos.ObserveEventsResponse;if(null!=e.events){if(\"object\"!=typeof e.events)throw TypeError(\".perfetto.protos.ObserveEventsResponse.events: object expected\");t.events=s.perfetto.protos.ObservableEvents.fromObject(e.events)}return t},ie.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.events=null),null!=e.events&&e.hasOwnProperty(\"events\")&&(r.events=s.perfetto.protos.ObservableEvents.toObject(e.events,t)),r},ie.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ie.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ObserveEventsResponse\"},ie),r.QueryServiceStateRequest=(oe.prototype.sessionsOnly=!1,oe.create=function(e){return new oe(e)},oe.encode=function(e,t){return t=t||a.create(),null!=e.sessionsOnly&&Object.hasOwnProperty.call(e,\"sessionsOnly\")&&t.uint32(8).bool(e.sessionsOnly),t},oe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryServiceStateRequest;e.pos<r;){var a=e.uint32();a>>>3==1?n.sessionsOnly=e.bool():e.skipType(7&a)}return n},oe.fromObject=function(e){var t;return e instanceof s.perfetto.protos.QueryServiceStateRequest?e:(t=new s.perfetto.protos.QueryServiceStateRequest,null!=e.sessionsOnly&&(t.sessionsOnly=Boolean(e.sessionsOnly)),t)},oe.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.sessionsOnly=!1),null!=e.sessionsOnly&&e.hasOwnProperty(\"sessionsOnly\")&&(r.sessionsOnly=e.sessionsOnly),r},oe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},oe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryServiceStateRequest\"},oe),r.QueryServiceStateResponse=(se.prototype.serviceState=null,se.create=function(e){return new se(e)},se.encode=function(e,t){return t=t||a.create(),null!=e.serviceState&&Object.hasOwnProperty.call(e,\"serviceState\")&&s.perfetto.protos.TracingServiceState.encode(e.serviceState,t.uint32(10).fork()).ldelim(),t},se.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryServiceStateResponse;e.pos<r;){var a=e.uint32();a>>>3==1?n.serviceState=s.perfetto.protos.TracingServiceState.decode(e,e.uint32()):e.skipType(7&a)}return n},se.fromObject=function(e){if(e instanceof s.perfetto.protos.QueryServiceStateResponse)return e;var t=new s.perfetto.protos.QueryServiceStateResponse;if(null!=e.serviceState){if(\"object\"!=typeof e.serviceState)throw TypeError(\".perfetto.protos.QueryServiceStateResponse.serviceState: object expected\");t.serviceState=s.perfetto.protos.TracingServiceState.fromObject(e.serviceState)}return t},se.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.serviceState=null),null!=e.serviceState&&e.hasOwnProperty(\"serviceState\")&&(r.serviceState=s.perfetto.protos.TracingServiceState.toObject(e.serviceState,t)),r},se.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},se.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryServiceStateResponse\"},se),r.QueryCapabilitiesRequest=(le.create=function(e){return new le(e)},le.encode=function(e,t){return t=t||a.create()},le.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.QueryCapabilitiesRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},le.fromObject=function(e){return e instanceof s.perfetto.protos.QueryCapabilitiesRequest?e:new s.perfetto.protos.QueryCapabilitiesRequest},le.toObject=function(){return{}},le.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},le.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryCapabilitiesRequest\"},le),r.QueryCapabilitiesResponse=(ce.prototype.capabilities=null,ce.create=function(e){return new ce(e)},ce.encode=function(e,t){return t=t||a.create(),null!=e.capabilities&&Object.hasOwnProperty.call(e,\"capabilities\")&&s.perfetto.protos.TracingServiceCapabilities.encode(e.capabilities,t.uint32(10).fork()).ldelim(),t},ce.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryCapabilitiesResponse;e.pos<r;){var a=e.uint32();a>>>3==1?n.capabilities=s.perfetto.protos.TracingServiceCapabilities.decode(e,e.uint32()):e.skipType(7&a)}return n},ce.fromObject=function(e){if(e instanceof s.perfetto.protos.QueryCapabilitiesResponse)return e;var t=new s.perfetto.protos.QueryCapabilitiesResponse;if(null!=e.capabilities){if(\"object\"!=typeof e.capabilities)throw TypeError(\".perfetto.protos.QueryCapabilitiesResponse.capabilities: object expected\");t.capabilities=s.perfetto.protos.TracingServiceCapabilities.fromObject(e.capabilities)}return t},ce.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.capabilities=null),null!=e.capabilities&&e.hasOwnProperty(\"capabilities\")&&(r.capabilities=s.perfetto.protos.TracingServiceCapabilities.toObject(e.capabilities,t)),r},ce.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ce.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryCapabilitiesResponse\"},ce),r.SaveTraceForBugreportRequest=(ue.create=function(e){return new ue(e)},ue.encode=function(e,t){return t=t||a.create()},ue.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.SaveTraceForBugreportRequest;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},ue.fromObject=function(e){return e instanceof s.perfetto.protos.SaveTraceForBugreportRequest?e:new s.perfetto.protos.SaveTraceForBugreportRequest},ue.toObject=function(){return{}},ue.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ue.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SaveTraceForBugreportRequest\"},ue),r.SaveTraceForBugreportResponse=(de.prototype.success=!1,de.prototype.msg=\"\",de.create=function(e){return new de(e)},de.encode=function(e,t){return t=t||a.create(),null!=e.success&&Object.hasOwnProperty.call(e,\"success\")&&t.uint32(8).bool(e.success),null!=e.msg&&Object.hasOwnProperty.call(e,\"msg\")&&t.uint32(18).string(e.msg),t},de.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.SaveTraceForBugreportResponse;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.success=e.bool();break;case 2:n.msg=e.string();break;default:e.skipType(7&a)}}return n},de.fromObject=function(e){var t;return e instanceof s.perfetto.protos.SaveTraceForBugreportResponse?e:(t=new s.perfetto.protos.SaveTraceForBugreportResponse,null!=e.success&&(t.success=Boolean(e.success)),null!=e.msg&&(t.msg=String(e.msg)),t)},de.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.success=!1,r.msg=\"\"),null!=e.success&&e.hasOwnProperty(\"success\")&&(r.success=e.success),null!=e.msg&&e.hasOwnProperty(\"msg\")&&(r.msg=e.msg),r},de.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},de.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SaveTraceForBugreportResponse\"},de),r.CloneSessionRequest=(c.prototype.sessionId=null,c.prototype.uniqueSessionName=null,c.prototype.skipTraceFilter=!1,c.prototype.forBugreport=!1,c.prototype.cloneTriggerName=\"\",c.prototype.cloneTriggerProducerName=\"\",c.prototype.cloneTriggerTrustedProducerUid=0,c.prototype.cloneTriggerBootTimeNs=i.Long?i.Long.fromBits(0,0,!0):0,c.prototype.cloneTriggerDelayMs=i.Long?i.Long.fromBits(0,0,!0):0,Object.defineProperty(c.prototype,\"selector\",{get:i.oneOfGetter(e=[\"sessionId\",\"uniqueSessionName\"]),set:i.oneOfSetter(e)}),c.create=function(e){return new c(e)},c.encode=function(e,t){return t=t||a.create(),null!=e.sessionId&&Object.hasOwnProperty.call(e,\"sessionId\")&&t.uint32(8).uint64(e.sessionId),null!=e.skipTraceFilter&&Object.hasOwnProperty.call(e,\"skipTraceFilter\")&&t.uint32(16).bool(e.skipTraceFilter),null!=e.forBugreport&&Object.hasOwnProperty.call(e,\"forBugreport\")&&t.uint32(24).bool(e.forBugreport),null!=e.uniqueSessionName&&Object.hasOwnProperty.call(e,\"uniqueSessionName\")&&t.uint32(34).string(e.uniqueSessionName),null!=e.cloneTriggerName&&Object.hasOwnProperty.call(e,\"cloneTriggerName\")&&t.uint32(42).string(e.cloneTriggerName),null!=e.cloneTriggerProducerName&&Object.hasOwnProperty.call(e,\"cloneTriggerProducerName\")&&t.uint32(50).string(e.cloneTriggerProducerName),null!=e.cloneTriggerTrustedProducerUid&&Object.hasOwnProperty.call(e,\"cloneTriggerTrustedProducerUid\")&&t.uint32(56).int32(e.cloneTriggerTrustedProducerUid),null!=e.cloneTriggerBootTimeNs&&Object.hasOwnProperty.call(e,\"cloneTriggerBootTimeNs\")&&t.uint32(64).uint64(e.cloneTriggerBootTimeNs),null!=e.cloneTriggerDelayMs&&Object.hasOwnProperty.call(e,\"cloneTriggerDelayMs\")&&t.uint32(72).uint64(e.cloneTriggerDelayMs),t},c.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.CloneSessionRequest;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sessionId=e.uint64();break;case 4:n.uniqueSessionName=e.string();break;case 2:n.skipTraceFilter=e.bool();break;case 3:n.forBugreport=e.bool();break;case 5:n.cloneTriggerName=e.string();break;case 6:n.cloneTriggerProducerName=e.string();break;case 7:n.cloneTriggerTrustedProducerUid=e.int32();break;case 8:n.cloneTriggerBootTimeNs=e.uint64();break;case 9:n.cloneTriggerDelayMs=e.uint64();break;default:e.skipType(7&a)}}return n},c.fromObject=function(e){var t;return e instanceof s.perfetto.protos.CloneSessionRequest?e:(t=new s.perfetto.protos.CloneSessionRequest,null!=e.sessionId&&(i.Long?(t.sessionId=i.Long.fromValue(e.sessionId)).unsigned=!0:\"string\"==typeof e.sessionId?t.sessionId=parseInt(e.sessionId,10):\"number\"==typeof e.sessionId?t.sessionId=e.sessionId:\"object\"==typeof e.sessionId&&(t.sessionId=new i.LongBits(e.sessionId.low>>>0,e.sessionId.high>>>0).toNumber(!0))),null!=e.uniqueSessionName&&(t.uniqueSessionName=String(e.uniqueSessionName)),null!=e.skipTraceFilter&&(t.skipTraceFilter=Boolean(e.skipTraceFilter)),null!=e.forBugreport&&(t.forBugreport=Boolean(e.forBugreport)),null!=e.cloneTriggerName&&(t.cloneTriggerName=String(e.cloneTriggerName)),null!=e.cloneTriggerProducerName&&(t.cloneTriggerProducerName=String(e.cloneTriggerProducerName)),null!=e.cloneTriggerTrustedProducerUid&&(t.cloneTriggerTrustedProducerUid=0|e.cloneTriggerTrustedProducerUid),null!=e.cloneTriggerBootTimeNs&&(i.Long?(t.cloneTriggerBootTimeNs=i.Long.fromValue(e.cloneTriggerBootTimeNs)).unsigned=!0:\"string\"==typeof e.cloneTriggerBootTimeNs?t.cloneTriggerBootTimeNs=parseInt(e.cloneTriggerBootTimeNs,10):\"number\"==typeof e.cloneTriggerBootTimeNs?t.cloneTriggerBootTimeNs=e.cloneTriggerBootTimeNs:\"object\"==typeof e.cloneTriggerBootTimeNs&&(t.cloneTriggerBootTimeNs=new i.LongBits(e.cloneTriggerBootTimeNs.low>>>0,e.cloneTriggerBootTimeNs.high>>>0).toNumber(!0))),null!=e.cloneTriggerDelayMs&&(i.Long?(t.cloneTriggerDelayMs=i.Long.fromValue(e.cloneTriggerDelayMs)).unsigned=!0:\"string\"==typeof e.cloneTriggerDelayMs?t.cloneTriggerDelayMs=parseInt(e.cloneTriggerDelayMs,10):\"number\"==typeof e.cloneTriggerDelayMs?t.cloneTriggerDelayMs=e.cloneTriggerDelayMs:\"object\"==typeof e.cloneTriggerDelayMs&&(t.cloneTriggerDelayMs=new i.LongBits(e.cloneTriggerDelayMs.low>>>0,e.cloneTriggerDelayMs.high>>>0).toNumber(!0))),t)},c.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.skipTraceFilter=!1,n.forBugreport=!1,n.cloneTriggerName=\"\",n.cloneTriggerProducerName=\"\",n.cloneTriggerTrustedProducerUid=0,i.Long?(r=new i.Long(0,0,!0),n.cloneTriggerBootTimeNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.cloneTriggerBootTimeNs=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.cloneTriggerDelayMs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.cloneTriggerDelayMs=t.longs===String?\"0\":0),null!=e.sessionId&&e.hasOwnProperty(\"sessionId\")&&(\"number\"==typeof e.sessionId?n.sessionId=t.longs===String?String(e.sessionId):e.sessionId:n.sessionId=t.longs===String?i.Long.prototype.toString.call(e.sessionId):t.longs===Number?new i.LongBits(e.sessionId.low>>>0,e.sessionId.high>>>0).toNumber(!0):e.sessionId,t.oneofs)&&(n.selector=\"sessionId\"),null!=e.skipTraceFilter&&e.hasOwnProperty(\"skipTraceFilter\")&&(n.skipTraceFilter=e.skipTraceFilter),null!=e.forBugreport&&e.hasOwnProperty(\"forBugreport\")&&(n.forBugreport=e.forBugreport),null!=e.uniqueSessionName&&e.hasOwnProperty(\"uniqueSessionName\")&&(n.uniqueSessionName=e.uniqueSessionName,t.oneofs)&&(n.selector=\"uniqueSessionName\"),null!=e.cloneTriggerName&&e.hasOwnProperty(\"cloneTriggerName\")&&(n.cloneTriggerName=e.cloneTriggerName),null!=e.cloneTriggerProducerName&&e.hasOwnProperty(\"cloneTriggerProducerName\")&&(n.cloneTriggerProducerName=e.cloneTriggerProducerName),null!=e.cloneTriggerTrustedProducerUid&&e.hasOwnProperty(\"cloneTriggerTrustedProducerUid\")&&(n.cloneTriggerTrustedProducerUid=e.cloneTriggerTrustedProducerUid),null!=e.cloneTriggerBootTimeNs&&e.hasOwnProperty(\"cloneTriggerBootTimeNs\")&&(\"number\"==typeof e.cloneTriggerBootTimeNs?n.cloneTriggerBootTimeNs=t.longs===String?String(e.cloneTriggerBootTimeNs):e.cloneTriggerBootTimeNs:n.cloneTriggerBootTimeNs=t.longs===String?i.Long.prototype.toString.call(e.cloneTriggerBootTimeNs):t.longs===Number?new i.LongBits(e.cloneTriggerBootTimeNs.low>>>0,e.cloneTriggerBootTimeNs.high>>>0).toNumber(!0):e.cloneTriggerBootTimeNs),null!=e.cloneTriggerDelayMs&&e.hasOwnProperty(\"cloneTriggerDelayMs\")&&(\"number\"==typeof e.cloneTriggerDelayMs?n.cloneTriggerDelayMs=t.longs===String?String(e.cloneTriggerDelayMs):e.cloneTriggerDelayMs:n.cloneTriggerDelayMs=t.longs===String?i.Long.prototype.toString.call(e.cloneTriggerDelayMs):t.longs===Number?new i.LongBits(e.cloneTriggerDelayMs.low>>>0,e.cloneTriggerDelayMs.high>>>0).toNumber(!0):e.cloneTriggerDelayMs),n},c.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},c.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.CloneSessionRequest\"},c),r.CloneSessionResponse=(pe.prototype.success=!1,pe.prototype.error=\"\",pe.prototype.uuidMsb=i.Long?i.Long.fromBits(0,0,!1):0,pe.prototype.uuidLsb=i.Long?i.Long.fromBits(0,0,!1):0,pe.create=function(e){return new pe(e)},pe.encode=function(e,t){return t=t||a.create(),null!=e.success&&Object.hasOwnProperty.call(e,\"success\")&&t.uint32(8).bool(e.success),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(18).string(e.error),null!=e.uuidMsb&&Object.hasOwnProperty.call(e,\"uuidMsb\")&&t.uint32(24).int64(e.uuidMsb),null!=e.uuidLsb&&Object.hasOwnProperty.call(e,\"uuidLsb\")&&t.uint32(32).int64(e.uuidLsb),t},pe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.CloneSessionResponse;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.success=e.bool();break;case 2:n.error=e.string();break;case 3:n.uuidMsb=e.int64();break;case 4:n.uuidLsb=e.int64();break;default:e.skipType(7&a)}}return n},pe.fromObject=function(e){var t;return e instanceof s.perfetto.protos.CloneSessionResponse?e:(t=new s.perfetto.protos.CloneSessionResponse,null!=e.success&&(t.success=Boolean(e.success)),null!=e.error&&(t.error=String(e.error)),null!=e.uuidMsb&&(i.Long?(t.uuidMsb=i.Long.fromValue(e.uuidMsb)).unsigned=!1:\"string\"==typeof e.uuidMsb?t.uuidMsb=parseInt(e.uuidMsb,10):\"number\"==typeof e.uuidMsb?t.uuidMsb=e.uuidMsb:\"object\"==typeof e.uuidMsb&&(t.uuidMsb=new i.LongBits(e.uuidMsb.low>>>0,e.uuidMsb.high>>>0).toNumber())),null!=e.uuidLsb&&(i.Long?(t.uuidLsb=i.Long.fromValue(e.uuidLsb)).unsigned=!1:\"string\"==typeof e.uuidLsb?t.uuidLsb=parseInt(e.uuidLsb,10):\"number\"==typeof e.uuidLsb?t.uuidLsb=e.uuidLsb:\"object\"==typeof e.uuidLsb&&(t.uuidLsb=new i.LongBits(e.uuidLsb.low>>>0,e.uuidLsb.high>>>0).toNumber())),t)},pe.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.success=!1,n.error=\"\",i.Long?(r=new i.Long(0,0,!1),n.uuidMsb=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.uuidMsb=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.uuidLsb=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.uuidLsb=t.longs===String?\"0\":0),null!=e.success&&e.hasOwnProperty(\"success\")&&(n.success=e.success),null!=e.error&&e.hasOwnProperty(\"error\")&&(n.error=e.error),null!=e.uuidMsb&&e.hasOwnProperty(\"uuidMsb\")&&(\"number\"==typeof e.uuidMsb?n.uuidMsb=t.longs===String?String(e.uuidMsb):e.uuidMsb:n.uuidMsb=t.longs===String?i.Long.prototype.toString.call(e.uuidMsb):t.longs===Number?new i.LongBits(e.uuidMsb.low>>>0,e.uuidMsb.high>>>0).toNumber():e.uuidMsb),null!=e.uuidLsb&&e.hasOwnProperty(\"uuidLsb\")&&(\"number\"==typeof e.uuidLsb?n.uuidLsb=t.longs===String?String(e.uuidLsb):e.uuidLsb:n.uuidLsb=t.longs===String?i.Long.prototype.toString.call(e.uuidLsb):t.longs===Number?new i.LongBits(e.uuidLsb.low>>>0,e.uuidLsb.high>>>0).toNumber():e.uuidLsb),n},pe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},pe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.CloneSessionResponse\"},pe),r.ObservableEvents=(fe.prototype.instanceStateChanges=i.emptyArray,fe.prototype.allDataSourcesStarted=!1,fe.prototype.cloneTriggerHit=null,fe.create=function(e){return new fe(e)},fe.encode=function(e,t){if(t=t||a.create(),null!=e.instanceStateChanges&&e.instanceStateChanges.length)for(var r=0;r<e.instanceStateChanges.length;++r)s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange.encode(e.instanceStateChanges[r],t.uint32(10).fork()).ldelim();return null!=e.allDataSourcesStarted&&Object.hasOwnProperty.call(e,\"allDataSourcesStarted\")&&t.uint32(16).bool(e.allDataSourcesStarted),null!=e.cloneTriggerHit&&Object.hasOwnProperty.call(e,\"cloneTriggerHit\")&&s.perfetto.protos.ObservableEvents.CloneTriggerHit.encode(e.cloneTriggerHit,t.uint32(26).fork()).ldelim(),t},fe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ObservableEvents;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.instanceStateChanges&&n.instanceStateChanges.length||(n.instanceStateChanges=[]),n.instanceStateChanges.push(s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange.decode(e,e.uint32()));break;case 2:n.allDataSourcesStarted=e.bool();break;case 3:n.cloneTriggerHit=s.perfetto.protos.ObservableEvents.CloneTriggerHit.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},fe.fromObject=function(e){if(e instanceof s.perfetto.protos.ObservableEvents)return e;var t=new s.perfetto.protos.ObservableEvents;if(e.instanceStateChanges){if(!Array.isArray(e.instanceStateChanges))throw TypeError(\".perfetto.protos.ObservableEvents.instanceStateChanges: array expected\");t.instanceStateChanges=[];for(var r=0;r<e.instanceStateChanges.length;++r){if(\"object\"!=typeof e.instanceStateChanges[r])throw TypeError(\".perfetto.protos.ObservableEvents.instanceStateChanges: object expected\");t.instanceStateChanges[r]=s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange.fromObject(e.instanceStateChanges[r])}}if(null!=e.allDataSourcesStarted&&(t.allDataSourcesStarted=Boolean(e.allDataSourcesStarted)),null!=e.cloneTriggerHit){if(\"object\"!=typeof e.cloneTriggerHit)throw TypeError(\".perfetto.protos.ObservableEvents.cloneTriggerHit: object expected\");t.cloneTriggerHit=s.perfetto.protos.ObservableEvents.CloneTriggerHit.fromObject(e.cloneTriggerHit)}return t},fe.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.instanceStateChanges=[]),t.defaults&&(r.allDataSourcesStarted=!1,r.cloneTriggerHit=null),e.instanceStateChanges&&e.instanceStateChanges.length){r.instanceStateChanges=[];for(var n=0;n<e.instanceStateChanges.length;++n)r.instanceStateChanges[n]=s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange.toObject(e.instanceStateChanges[n],t)}return null!=e.allDataSourcesStarted&&e.hasOwnProperty(\"allDataSourcesStarted\")&&(r.allDataSourcesStarted=e.allDataSourcesStarted),null!=e.cloneTriggerHit&&e.hasOwnProperty(\"cloneTriggerHit\")&&(r.cloneTriggerHit=s.perfetto.protos.ObservableEvents.CloneTriggerHit.toObject(e.cloneTriggerHit,t)),r},fe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},fe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ObservableEvents\"},fe.Type=(e={},(t=Object.create(e))[e[0]=\"TYPE_UNSPECIFIED\"]=0,t[e[1]=\"TYPE_DATA_SOURCES_INSTANCES\"]=1,t[e[2]=\"TYPE_ALL_DATA_SOURCES_STARTED\"]=2,t[e[4]=\"TYPE_CLONE_TRIGGER_HIT\"]=4,t),fe.DataSourceInstanceState=(e={},(t=Object.create(e))[e[1]=\"DATA_SOURCE_INSTANCE_STATE_STOPPED\"]=1,t[e[2]=\"DATA_SOURCE_INSTANCE_STATE_STARTED\"]=2,t),fe.DataSourceInstanceStateChange=(he.prototype.producerName=\"\",he.prototype.dataSourceName=\"\",he.prototype.state=1,he.create=function(e){return new he(e)},he.encode=function(e,t){return t=t||a.create(),null!=e.producerName&&Object.hasOwnProperty.call(e,\"producerName\")&&t.uint32(10).string(e.producerName),null!=e.dataSourceName&&Object.hasOwnProperty.call(e,\"dataSourceName\")&&t.uint32(18).string(e.dataSourceName),null!=e.state&&Object.hasOwnProperty.call(e,\"state\")&&t.uint32(24).int32(e.state),t},he.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.producerName=e.string();break;case 2:n.dataSourceName=e.string();break;case 3:n.state=e.int32();break;default:e.skipType(7&a)}}return n},he.fromObject=function(e){if(e instanceof s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange)return e;var t=new s.perfetto.protos.ObservableEvents.DataSourceInstanceStateChange;switch(null!=e.producerName&&(t.producerName=String(e.producerName)),null!=e.dataSourceName&&(t.dataSourceName=String(e.dataSourceName)),e.state){default:\"number\"==typeof e.state&&(t.state=e.state);break;case\"DATA_SOURCE_INSTANCE_STATE_STOPPED\":case 1:t.state=1;break;case\"DATA_SOURCE_INSTANCE_STATE_STARTED\":case 2:t.state=2}return t},he.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.producerName=\"\",r.dataSourceName=\"\",r.state=t.enums===String?\"DATA_SOURCE_INSTANCE_STATE_STOPPED\":1),null!=e.producerName&&e.hasOwnProperty(\"producerName\")&&(r.producerName=e.producerName),null!=e.dataSourceName&&e.hasOwnProperty(\"dataSourceName\")&&(r.dataSourceName=e.dataSourceName),null!=e.state&&e.hasOwnProperty(\"state\")&&(r.state=t.enums!==String||void 0===s.perfetto.protos.ObservableEvents.DataSourceInstanceState[e.state]?e.state:s.perfetto.protos.ObservableEvents.DataSourceInstanceState[e.state]),r},he.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},he.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ObservableEvents.DataSourceInstanceStateChange\"},he),fe.CloneTriggerHit=(me.prototype.tracingSessionId=i.Long?i.Long.fromBits(0,0,!1):0,me.prototype.triggerName=\"\",me.prototype.producerName=\"\",me.prototype.producerUid=0,me.prototype.bootTimeNs=i.Long?i.Long.fromBits(0,0,!0):0,me.prototype.triggerDelayMs=i.Long?i.Long.fromBits(0,0,!0):0,me.create=function(e){return new me(e)},me.encode=function(e,t){return t=t||a.create(),null!=e.tracingSessionId&&Object.hasOwnProperty.call(e,\"tracingSessionId\")&&t.uint32(8).int64(e.tracingSessionId),null!=e.triggerName&&Object.hasOwnProperty.call(e,\"triggerName\")&&t.uint32(18).string(e.triggerName),null!=e.producerName&&Object.hasOwnProperty.call(e,\"producerName\")&&t.uint32(26).string(e.producerName),null!=e.producerUid&&Object.hasOwnProperty.call(e,\"producerUid\")&&t.uint32(32).uint32(e.producerUid),null!=e.bootTimeNs&&Object.hasOwnProperty.call(e,\"bootTimeNs\")&&t.uint32(40).uint64(e.bootTimeNs),null!=e.triggerDelayMs&&Object.hasOwnProperty.call(e,\"triggerDelayMs\")&&t.uint32(48).uint64(e.triggerDelayMs),t},me.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ObservableEvents.CloneTriggerHit;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.tracingSessionId=e.int64();break;case 2:n.triggerName=e.string();break;case 3:n.producerName=e.string();break;case 4:n.producerUid=e.uint32();break;case 5:n.bootTimeNs=e.uint64();break;case 6:n.triggerDelayMs=e.uint64();break;default:e.skipType(7&a)}}return n},me.fromObject=function(e){var t;return e instanceof s.perfetto.protos.ObservableEvents.CloneTriggerHit?e:(t=new s.perfetto.protos.ObservableEvents.CloneTriggerHit,null!=e.tracingSessionId&&(i.Long?(t.tracingSessionId=i.Long.fromValue(e.tracingSessionId)).unsigned=!1:\"string\"==typeof e.tracingSessionId?t.tracingSessionId=parseInt(e.tracingSessionId,10):\"number\"==typeof e.tracingSessionId?t.tracingSessionId=e.tracingSessionId:\"object\"==typeof e.tracingSessionId&&(t.tracingSessionId=new i.LongBits(e.tracingSessionId.low>>>0,e.tracingSessionId.high>>>0).toNumber())),null!=e.triggerName&&(t.triggerName=String(e.triggerName)),null!=e.producerName&&(t.producerName=String(e.producerName)),null!=e.producerUid&&(t.producerUid=e.producerUid>>>0),null!=e.bootTimeNs&&(i.Long?(t.bootTimeNs=i.Long.fromValue(e.bootTimeNs)).unsigned=!0:\"string\"==typeof e.bootTimeNs?t.bootTimeNs=parseInt(e.bootTimeNs,10):\"number\"==typeof e.bootTimeNs?t.bootTimeNs=e.bootTimeNs:\"object\"==typeof e.bootTimeNs&&(t.bootTimeNs=new i.LongBits(e.bootTimeNs.low>>>0,e.bootTimeNs.high>>>0).toNumber(!0))),null!=e.triggerDelayMs&&(i.Long?(t.triggerDelayMs=i.Long.fromValue(e.triggerDelayMs)).unsigned=!0:\"string\"==typeof e.triggerDelayMs?t.triggerDelayMs=parseInt(e.triggerDelayMs,10):\"number\"==typeof e.triggerDelayMs?t.triggerDelayMs=e.triggerDelayMs:\"object\"==typeof e.triggerDelayMs&&(t.triggerDelayMs=new i.LongBits(e.triggerDelayMs.low>>>0,e.triggerDelayMs.high>>>0).toNumber(!0))),t)},me.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!1),n.tracingSessionId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.tracingSessionId=t.longs===String?\"0\":0,n.triggerName=\"\",n.producerName=\"\",n.producerUid=0,i.Long?(r=new i.Long(0,0,!0),n.bootTimeNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.bootTimeNs=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.triggerDelayMs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.triggerDelayMs=t.longs===String?\"0\":0),null!=e.tracingSessionId&&e.hasOwnProperty(\"tracingSessionId\")&&(\"number\"==typeof e.tracingSessionId?n.tracingSessionId=t.longs===String?String(e.tracingSessionId):e.tracingSessionId:n.tracingSessionId=t.longs===String?i.Long.prototype.toString.call(e.tracingSessionId):t.longs===Number?new i.LongBits(e.tracingSessionId.low>>>0,e.tracingSessionId.high>>>0).toNumber():e.tracingSessionId),null!=e.triggerName&&e.hasOwnProperty(\"triggerName\")&&(n.triggerName=e.triggerName),null!=e.producerName&&e.hasOwnProperty(\"producerName\")&&(n.producerName=e.producerName),null!=e.producerUid&&e.hasOwnProperty(\"producerUid\")&&(n.producerUid=e.producerUid),null!=e.bootTimeNs&&e.hasOwnProperty(\"bootTimeNs\")&&(\"number\"==typeof e.bootTimeNs?n.bootTimeNs=t.longs===String?String(e.bootTimeNs):e.bootTimeNs:n.bootTimeNs=t.longs===String?i.Long.prototype.toString.call(e.bootTimeNs):t.longs===Number?new i.LongBits(e.bootTimeNs.low>>>0,e.bootTimeNs.high>>>0).toNumber(!0):e.bootTimeNs),null!=e.triggerDelayMs&&e.hasOwnProperty(\"triggerDelayMs\")&&(\"number\"==typeof e.triggerDelayMs?n.triggerDelayMs=t.longs===String?String(e.triggerDelayMs):e.triggerDelayMs:n.triggerDelayMs=t.longs===String?i.Long.prototype.toString.call(e.triggerDelayMs):t.longs===Number?new i.LongBits(e.triggerDelayMs.low>>>0,e.triggerDelayMs.high>>>0).toNumber(!0):e.triggerDelayMs),n},me.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},me.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ObservableEvents.CloneTriggerHit\"},me),fe),r.TracingServiceState=(u.prototype.producers=i.emptyArray,u.prototype.dataSources=i.emptyArray,u.prototype.tracingSessions=i.emptyArray,u.prototype.supportsTracingSessions=!1,u.prototype.numSessions=0,u.prototype.numSessionsStarted=0,u.prototype.tracingServiceVersion=\"\",u.create=function(e){return new u(e)},u.encode=function(e,t){if(t=t||a.create(),null!=e.producers&&e.producers.length)for(var r=0;r<e.producers.length;++r)s.perfetto.protos.TracingServiceState.Producer.encode(e.producers[r],t.uint32(10).fork()).ldelim();if(null!=e.dataSources&&e.dataSources.length)for(r=0;r<e.dataSources.length;++r)s.perfetto.protos.TracingServiceState.DataSource.encode(e.dataSources[r],t.uint32(18).fork()).ldelim();if(null!=e.numSessions&&Object.hasOwnProperty.call(e,\"numSessions\")&&t.uint32(24).int32(e.numSessions),null!=e.numSessionsStarted&&Object.hasOwnProperty.call(e,\"numSessionsStarted\")&&t.uint32(32).int32(e.numSessionsStarted),null!=e.tracingServiceVersion&&Object.hasOwnProperty.call(e,\"tracingServiceVersion\")&&t.uint32(42).string(e.tracingServiceVersion),null!=e.tracingSessions&&e.tracingSessions.length)for(r=0;r<e.tracingSessions.length;++r)s.perfetto.protos.TracingServiceState.TracingSession.encode(e.tracingSessions[r],t.uint32(50).fork()).ldelim();return null!=e.supportsTracingSessions&&Object.hasOwnProperty.call(e,\"supportsTracingSessions\")&&t.uint32(56).bool(e.supportsTracingSessions),t},u.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TracingServiceState;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.producers&&n.producers.length||(n.producers=[]),n.producers.push(s.perfetto.protos.TracingServiceState.Producer.decode(e,e.uint32()));break;case 2:n.dataSources&&n.dataSources.length||(n.dataSources=[]),n.dataSources.push(s.perfetto.protos.TracingServiceState.DataSource.decode(e,e.uint32()));break;case 6:n.tracingSessions&&n.tracingSessions.length||(n.tracingSessions=[]),n.tracingSessions.push(s.perfetto.protos.TracingServiceState.TracingSession.decode(e,e.uint32()));break;case 7:n.supportsTracingSessions=e.bool();break;case 3:n.numSessions=e.int32();break;case 4:n.numSessionsStarted=e.int32();break;case 5:n.tracingServiceVersion=e.string();break;default:e.skipType(7&a)}}return n},u.fromObject=function(e){if(e instanceof s.perfetto.protos.TracingServiceState)return e;var t=new s.perfetto.protos.TracingServiceState;if(e.producers){if(!Array.isArray(e.producers))throw TypeError(\".perfetto.protos.TracingServiceState.producers: array expected\");t.producers=[];for(var r=0;r<e.producers.length;++r){if(\"object\"!=typeof e.producers[r])throw TypeError(\".perfetto.protos.TracingServiceState.producers: object expected\");t.producers[r]=s.perfetto.protos.TracingServiceState.Producer.fromObject(e.producers[r])}}if(e.dataSources){if(!Array.isArray(e.dataSources))throw TypeError(\".perfetto.protos.TracingServiceState.dataSources: array expected\");t.dataSources=[];for(r=0;r<e.dataSources.length;++r){if(\"object\"!=typeof e.dataSources[r])throw TypeError(\".perfetto.protos.TracingServiceState.dataSources: object expected\");t.dataSources[r]=s.perfetto.protos.TracingServiceState.DataSource.fromObject(e.dataSources[r])}}if(e.tracingSessions){if(!Array.isArray(e.tracingSessions))throw TypeError(\".perfetto.protos.TracingServiceState.tracingSessions: array expected\");t.tracingSessions=[];for(r=0;r<e.tracingSessions.length;++r){if(\"object\"!=typeof e.tracingSessions[r])throw TypeError(\".perfetto.protos.TracingServiceState.tracingSessions: object expected\");t.tracingSessions[r]=s.perfetto.protos.TracingServiceState.TracingSession.fromObject(e.tracingSessions[r])}}return null!=e.supportsTracingSessions&&(t.supportsTracingSessions=Boolean(e.supportsTracingSessions)),null!=e.numSessions&&(t.numSessions=0|e.numSessions),null!=e.numSessionsStarted&&(t.numSessionsStarted=0|e.numSessionsStarted),null!=e.tracingServiceVersion&&(t.tracingServiceVersion=String(e.tracingServiceVersion)),t},u.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.producers=[],r.dataSources=[],r.tracingSessions=[]),t.defaults&&(r.numSessions=0,r.numSessionsStarted=0,r.tracingServiceVersion=\"\",r.supportsTracingSessions=!1),e.producers&&e.producers.length){r.producers=[];for(var n=0;n<e.producers.length;++n)r.producers[n]=s.perfetto.protos.TracingServiceState.Producer.toObject(e.producers[n],t)}if(e.dataSources&&e.dataSources.length){r.dataSources=[];for(n=0;n<e.dataSources.length;++n)r.dataSources[n]=s.perfetto.protos.TracingServiceState.DataSource.toObject(e.dataSources[n],t)}if(null!=e.numSessions&&e.hasOwnProperty(\"numSessions\")&&(r.numSessions=e.numSessions),null!=e.numSessionsStarted&&e.hasOwnProperty(\"numSessionsStarted\")&&(r.numSessionsStarted=e.numSessionsStarted),null!=e.tracingServiceVersion&&e.hasOwnProperty(\"tracingServiceVersion\")&&(r.tracingServiceVersion=e.tracingServiceVersion),e.tracingSessions&&e.tracingSessions.length){r.tracingSessions=[];for(n=0;n<e.tracingSessions.length;++n)r.tracingSessions[n]=s.perfetto.protos.TracingServiceState.TracingSession.toObject(e.tracingSessions[n],t)}return null!=e.supportsTracingSessions&&e.hasOwnProperty(\"supportsTracingSessions\")&&(r.supportsTracingSessions=e.supportsTracingSessions),r},u.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},u.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TracingServiceState\"},u.Producer=(ge.prototype.id=0,ge.prototype.name=\"\",ge.prototype.pid=0,ge.prototype.uid=0,ge.prototype.sdkVersion=\"\",ge.prototype.frozen=!1,ge.create=function(e){return new ge(e)},ge.encode=function(e,t){return t=t||a.create(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(8).int32(e.id),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(18).string(e.name),null!=e.uid&&Object.hasOwnProperty.call(e,\"uid\")&&t.uint32(24).int32(e.uid),null!=e.sdkVersion&&Object.hasOwnProperty.call(e,\"sdkVersion\")&&t.uint32(34).string(e.sdkVersion),null!=e.pid&&Object.hasOwnProperty.call(e,\"pid\")&&t.uint32(40).int32(e.pid),null!=e.frozen&&Object.hasOwnProperty.call(e,\"frozen\")&&t.uint32(48).bool(e.frozen),t},ge.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TracingServiceState.Producer;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.id=e.int32();break;case 2:n.name=e.string();break;case 5:n.pid=e.int32();break;case 3:n.uid=e.int32();break;case 4:n.sdkVersion=e.string();break;case 6:n.frozen=e.bool();break;default:e.skipType(7&a)}}return n},ge.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TracingServiceState.Producer?e:(t=new s.perfetto.protos.TracingServiceState.Producer,null!=e.id&&(t.id=0|e.id),null!=e.name&&(t.name=String(e.name)),null!=e.pid&&(t.pid=0|e.pid),null!=e.uid&&(t.uid=0|e.uid),null!=e.sdkVersion&&(t.sdkVersion=String(e.sdkVersion)),null!=e.frozen&&(t.frozen=Boolean(e.frozen)),t)},ge.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.id=0,r.name=\"\",r.uid=0,r.sdkVersion=\"\",r.pid=0,r.frozen=!1),null!=e.id&&e.hasOwnProperty(\"id\")&&(r.id=e.id),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.uid&&e.hasOwnProperty(\"uid\")&&(r.uid=e.uid),null!=e.sdkVersion&&e.hasOwnProperty(\"sdkVersion\")&&(r.sdkVersion=e.sdkVersion),null!=e.pid&&e.hasOwnProperty(\"pid\")&&(r.pid=e.pid),null!=e.frozen&&e.hasOwnProperty(\"frozen\")&&(r.frozen=e.frozen),r},ge.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ge.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TracingServiceState.Producer\"},ge),u.DataSource=(_e.prototype.dsDescriptor=null,_e.prototype.producerId=0,_e.create=function(e){return new _e(e)},_e.encode=function(e,t){return t=t||a.create(),null!=e.dsDescriptor&&Object.hasOwnProperty.call(e,\"dsDescriptor\")&&s.perfetto.protos.DataSourceDescriptor.encode(e.dsDescriptor,t.uint32(10).fork()).ldelim(),null!=e.producerId&&Object.hasOwnProperty.call(e,\"producerId\")&&t.uint32(16).int32(e.producerId),t},_e.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TracingServiceState.DataSource;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.dsDescriptor=s.perfetto.protos.DataSourceDescriptor.decode(e,e.uint32());break;case 2:n.producerId=e.int32();break;default:e.skipType(7&a)}}return n},_e.fromObject=function(e){if(e instanceof s.perfetto.protos.TracingServiceState.DataSource)return e;var t=new s.perfetto.protos.TracingServiceState.DataSource;if(null!=e.dsDescriptor){if(\"object\"!=typeof e.dsDescriptor)throw TypeError(\".perfetto.protos.TracingServiceState.DataSource.dsDescriptor: object expected\");t.dsDescriptor=s.perfetto.protos.DataSourceDescriptor.fromObject(e.dsDescriptor)}return null!=e.producerId&&(t.producerId=0|e.producerId),t},_e.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.dsDescriptor=null,r.producerId=0),null!=e.dsDescriptor&&e.hasOwnProperty(\"dsDescriptor\")&&(r.dsDescriptor=s.perfetto.protos.DataSourceDescriptor.toObject(e.dsDescriptor,t)),null!=e.producerId&&e.hasOwnProperty(\"producerId\")&&(r.producerId=e.producerId),r},_e.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},_e.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TracingServiceState.DataSource\"},_e),u.TracingSession=(d.prototype.id=i.Long?i.Long.fromBits(0,0,!0):0,d.prototype.consumerUid=0,d.prototype.state=\"\",d.prototype.uniqueSessionName=\"\",d.prototype.bufferSizeKb=i.emptyArray,d.prototype.durationMs=0,d.prototype.numDataSources=0,d.prototype.startRealtimeNs=i.Long?i.Long.fromBits(0,0,!1):0,d.prototype.bugreportScore=0,d.prototype.bugreportFilename=\"\",d.prototype.isStarted=!1,d.create=function(e){return new d(e)},d.encode=function(e,t){if(t=t||a.create(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(8).uint64(e.id),null!=e.consumerUid&&Object.hasOwnProperty.call(e,\"consumerUid\")&&t.uint32(16).int32(e.consumerUid),null!=e.state&&Object.hasOwnProperty.call(e,\"state\")&&t.uint32(26).string(e.state),null!=e.uniqueSessionName&&Object.hasOwnProperty.call(e,\"uniqueSessionName\")&&t.uint32(34).string(e.uniqueSessionName),null!=e.bufferSizeKb&&e.bufferSizeKb.length)for(var r=0;r<e.bufferSizeKb.length;++r)t.uint32(40).uint32(e.bufferSizeKb[r]);return null!=e.durationMs&&Object.hasOwnProperty.call(e,\"durationMs\")&&t.uint32(48).uint32(e.durationMs),null!=e.numDataSources&&Object.hasOwnProperty.call(e,\"numDataSources\")&&t.uint32(56).uint32(e.numDataSources),null!=e.startRealtimeNs&&Object.hasOwnProperty.call(e,\"startRealtimeNs\")&&t.uint32(64).int64(e.startRealtimeNs),null!=e.bugreportScore&&Object.hasOwnProperty.call(e,\"bugreportScore\")&&t.uint32(72).int32(e.bugreportScore),null!=e.bugreportFilename&&Object.hasOwnProperty.call(e,\"bugreportFilename\")&&t.uint32(82).string(e.bugreportFilename),null!=e.isStarted&&Object.hasOwnProperty.call(e,\"isStarted\")&&t.uint32(88).bool(e.isStarted),t},d.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TracingServiceState.TracingSession;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.id=e.uint64();break;case 2:n.consumerUid=e.int32();break;case 3:n.state=e.string();break;case 4:n.uniqueSessionName=e.string();break;case 5:if(n.bufferSizeKb&&n.bufferSizeKb.length||(n.bufferSizeKb=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.bufferSizeKb.push(e.uint32());else n.bufferSizeKb.push(e.uint32());break;case 6:n.durationMs=e.uint32();break;case 7:n.numDataSources=e.uint32();break;case 8:n.startRealtimeNs=e.int64();break;case 9:n.bugreportScore=e.int32();break;case 10:n.bugreportFilename=e.string();break;case 11:n.isStarted=e.bool();break;default:e.skipType(7&a)}}return n},d.fromObject=function(e){if(e instanceof s.perfetto.protos.TracingServiceState.TracingSession)return e;var t=new s.perfetto.protos.TracingServiceState.TracingSession;if(null!=e.id&&(i.Long?(t.id=i.Long.fromValue(e.id)).unsigned=!0:\"string\"==typeof e.id?t.id=parseInt(e.id,10):\"number\"==typeof e.id?t.id=e.id:\"object\"==typeof e.id&&(t.id=new i.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.consumerUid&&(t.consumerUid=0|e.consumerUid),null!=e.state&&(t.state=String(e.state)),null!=e.uniqueSessionName&&(t.uniqueSessionName=String(e.uniqueSessionName)),e.bufferSizeKb){if(!Array.isArray(e.bufferSizeKb))throw TypeError(\".perfetto.protos.TracingServiceState.TracingSession.bufferSizeKb: array expected\");t.bufferSizeKb=[];for(var r=0;r<e.bufferSizeKb.length;++r)t.bufferSizeKb[r]=e.bufferSizeKb[r]>>>0}return null!=e.durationMs&&(t.durationMs=e.durationMs>>>0),null!=e.numDataSources&&(t.numDataSources=e.numDataSources>>>0),null!=e.startRealtimeNs&&(i.Long?(t.startRealtimeNs=i.Long.fromValue(e.startRealtimeNs)).unsigned=!1:\"string\"==typeof e.startRealtimeNs?t.startRealtimeNs=parseInt(e.startRealtimeNs,10):\"number\"==typeof e.startRealtimeNs?t.startRealtimeNs=e.startRealtimeNs:\"object\"==typeof e.startRealtimeNs&&(t.startRealtimeNs=new i.LongBits(e.startRealtimeNs.low>>>0,e.startRealtimeNs.high>>>0).toNumber())),null!=e.bugreportScore&&(t.bugreportScore=0|e.bugreportScore),null!=e.bugreportFilename&&(t.bugreportFilename=String(e.bugreportFilename)),null!=e.isStarted&&(t.isStarted=Boolean(e.isStarted)),t},d.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.bufferSizeKb=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.id=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.id=t.longs===String?\"0\":0,n.consumerUid=0,n.state=\"\",n.uniqueSessionName=\"\",n.durationMs=0,n.numDataSources=0,i.Long?(r=new i.Long(0,0,!1),n.startRealtimeNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.startRealtimeNs=t.longs===String?\"0\":0,n.bugreportScore=0,n.bugreportFilename=\"\",n.isStarted=!1),null!=e.id&&e.hasOwnProperty(\"id\")&&(\"number\"==typeof e.id?n.id=t.longs===String?String(e.id):e.id:n.id=t.longs===String?i.Long.prototype.toString.call(e.id):t.longs===Number?new i.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.consumerUid&&e.hasOwnProperty(\"consumerUid\")&&(n.consumerUid=e.consumerUid),null!=e.state&&e.hasOwnProperty(\"state\")&&(n.state=e.state),null!=e.uniqueSessionName&&e.hasOwnProperty(\"uniqueSessionName\")&&(n.uniqueSessionName=e.uniqueSessionName),e.bufferSizeKb&&e.bufferSizeKb.length){n.bufferSizeKb=[];for(var a=0;a<e.bufferSizeKb.length;++a)n.bufferSizeKb[a]=e.bufferSizeKb[a]}return null!=e.durationMs&&e.hasOwnProperty(\"durationMs\")&&(n.durationMs=e.durationMs),null!=e.numDataSources&&e.hasOwnProperty(\"numDataSources\")&&(n.numDataSources=e.numDataSources),null!=e.startRealtimeNs&&e.hasOwnProperty(\"startRealtimeNs\")&&(\"number\"==typeof e.startRealtimeNs?n.startRealtimeNs=t.longs===String?String(e.startRealtimeNs):e.startRealtimeNs:n.startRealtimeNs=t.longs===String?i.Long.prototype.toString.call(e.startRealtimeNs):t.longs===Number?new i.LongBits(e.startRealtimeNs.low>>>0,e.startRealtimeNs.high>>>0).toNumber():e.startRealtimeNs),null!=e.bugreportScore&&e.hasOwnProperty(\"bugreportScore\")&&(n.bugreportScore=e.bugreportScore),null!=e.bugreportFilename&&e.hasOwnProperty(\"bugreportFilename\")&&(n.bugreportFilename=e.bugreportFilename),null!=e.isStarted&&e.hasOwnProperty(\"isStarted\")&&(n.isStarted=e.isStarted),n},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TracingServiceState.TracingSession\"},d),u),r.DataSourceDescriptor=(p.prototype.name=\"\",p.prototype.id=i.Long?i.Long.fromBits(0,0,!0):0,p.prototype.willNotifyOnStop=!1,p.prototype.willNotifyOnStart=!1,p.prototype.handlesIncrementalStateClear=!1,p.prototype.noFlush=!1,p.prototype.gpuCounterDescriptor=null,p.prototype.trackEventDescriptor=null,p.prototype.ftraceDescriptor=null,p.create=function(e){return new p(e)},p.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.willNotifyOnStop&&Object.hasOwnProperty.call(e,\"willNotifyOnStop\")&&t.uint32(16).bool(e.willNotifyOnStop),null!=e.willNotifyOnStart&&Object.hasOwnProperty.call(e,\"willNotifyOnStart\")&&t.uint32(24).bool(e.willNotifyOnStart),null!=e.handlesIncrementalStateClear&&Object.hasOwnProperty.call(e,\"handlesIncrementalStateClear\")&&t.uint32(32).bool(e.handlesIncrementalStateClear),null!=e.gpuCounterDescriptor&&Object.hasOwnProperty.call(e,\"gpuCounterDescriptor\")&&s.perfetto.protos.GpuCounterDescriptor.encode(e.gpuCounterDescriptor,t.uint32(42).fork()).ldelim(),null!=e.trackEventDescriptor&&Object.hasOwnProperty.call(e,\"trackEventDescriptor\")&&s.perfetto.protos.TrackEventDescriptor.encode(e.trackEventDescriptor,t.uint32(50).fork()).ldelim(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(56).uint64(e.id),null!=e.ftraceDescriptor&&Object.hasOwnProperty.call(e,\"ftraceDescriptor\")&&s.perfetto.protos.FtraceDescriptor.encode(e.ftraceDescriptor,t.uint32(66).fork()).ldelim(),null!=e.noFlush&&Object.hasOwnProperty.call(e,\"noFlush\")&&t.uint32(72).bool(e.noFlush),t},p.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DataSourceDescriptor;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 7:n.id=e.uint64();break;case 2:n.willNotifyOnStop=e.bool();break;case 3:n.willNotifyOnStart=e.bool();break;case 4:n.handlesIncrementalStateClear=e.bool();break;case 9:n.noFlush=e.bool();break;case 5:n.gpuCounterDescriptor=s.perfetto.protos.GpuCounterDescriptor.decode(e,e.uint32());break;case 6:n.trackEventDescriptor=s.perfetto.protos.TrackEventDescriptor.decode(e,e.uint32());break;case 8:n.ftraceDescriptor=s.perfetto.protos.FtraceDescriptor.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},p.fromObject=function(e){if(e instanceof s.perfetto.protos.DataSourceDescriptor)return e;var t=new s.perfetto.protos.DataSourceDescriptor;if(null!=e.name&&(t.name=String(e.name)),null!=e.id&&(i.Long?(t.id=i.Long.fromValue(e.id)).unsigned=!0:\"string\"==typeof e.id?t.id=parseInt(e.id,10):\"number\"==typeof e.id?t.id=e.id:\"object\"==typeof e.id&&(t.id=new i.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.willNotifyOnStop&&(t.willNotifyOnStop=Boolean(e.willNotifyOnStop)),null!=e.willNotifyOnStart&&(t.willNotifyOnStart=Boolean(e.willNotifyOnStart)),null!=e.handlesIncrementalStateClear&&(t.handlesIncrementalStateClear=Boolean(e.handlesIncrementalStateClear)),null!=e.noFlush&&(t.noFlush=Boolean(e.noFlush)),null!=e.gpuCounterDescriptor){if(\"object\"!=typeof e.gpuCounterDescriptor)throw TypeError(\".perfetto.protos.DataSourceDescriptor.gpuCounterDescriptor: object expected\");t.gpuCounterDescriptor=s.perfetto.protos.GpuCounterDescriptor.fromObject(e.gpuCounterDescriptor)}if(null!=e.trackEventDescriptor){if(\"object\"!=typeof e.trackEventDescriptor)throw TypeError(\".perfetto.protos.DataSourceDescriptor.trackEventDescriptor: object expected\");t.trackEventDescriptor=s.perfetto.protos.TrackEventDescriptor.fromObject(e.trackEventDescriptor)}if(null!=e.ftraceDescriptor){if(\"object\"!=typeof e.ftraceDescriptor)throw TypeError(\".perfetto.protos.DataSourceDescriptor.ftraceDescriptor: object expected\");t.ftraceDescriptor=s.perfetto.protos.FtraceDescriptor.fromObject(e.ftraceDescriptor)}return t},p.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.name=\"\",n.willNotifyOnStop=!1,n.willNotifyOnStart=!1,n.handlesIncrementalStateClear=!1,n.gpuCounterDescriptor=null,n.trackEventDescriptor=null,i.Long?(r=new i.Long(0,0,!0),n.id=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.id=t.longs===String?\"0\":0,n.ftraceDescriptor=null,n.noFlush=!1),null!=e.name&&e.hasOwnProperty(\"name\")&&(n.name=e.name),null!=e.willNotifyOnStop&&e.hasOwnProperty(\"willNotifyOnStop\")&&(n.willNotifyOnStop=e.willNotifyOnStop),null!=e.willNotifyOnStart&&e.hasOwnProperty(\"willNotifyOnStart\")&&(n.willNotifyOnStart=e.willNotifyOnStart),null!=e.handlesIncrementalStateClear&&e.hasOwnProperty(\"handlesIncrementalStateClear\")&&(n.handlesIncrementalStateClear=e.handlesIncrementalStateClear),null!=e.gpuCounterDescriptor&&e.hasOwnProperty(\"gpuCounterDescriptor\")&&(n.gpuCounterDescriptor=s.perfetto.protos.GpuCounterDescriptor.toObject(e.gpuCounterDescriptor,t)),null!=e.trackEventDescriptor&&e.hasOwnProperty(\"trackEventDescriptor\")&&(n.trackEventDescriptor=s.perfetto.protos.TrackEventDescriptor.toObject(e.trackEventDescriptor,t)),null!=e.id&&e.hasOwnProperty(\"id\")&&(\"number\"==typeof e.id?n.id=t.longs===String?String(e.id):e.id:n.id=t.longs===String?i.Long.prototype.toString.call(e.id):t.longs===Number?new i.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.ftraceDescriptor&&e.hasOwnProperty(\"ftraceDescriptor\")&&(n.ftraceDescriptor=s.perfetto.protos.FtraceDescriptor.toObject(e.ftraceDescriptor,t)),null!=e.noFlush&&e.hasOwnProperty(\"noFlush\")&&(n.noFlush=e.noFlush),n},p.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},p.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DataSourceDescriptor\"},p),r.FtraceDescriptor=(ye.prototype.atraceCategories=i.emptyArray,ye.create=function(e){return new ye(e)},ye.encode=function(e,t){if(t=t||a.create(),null!=e.atraceCategories&&e.atraceCategories.length)for(var r=0;r<e.atraceCategories.length;++r)s.perfetto.protos.FtraceDescriptor.AtraceCategory.encode(e.atraceCategories[r],t.uint32(10).fork()).ldelim();return t},ye.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceDescriptor;e.pos<r;){var a=e.uint32();a>>>3==1?(n.atraceCategories&&n.atraceCategories.length||(n.atraceCategories=[]),n.atraceCategories.push(s.perfetto.protos.FtraceDescriptor.AtraceCategory.decode(e,e.uint32()))):e.skipType(7&a)}return n},ye.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceDescriptor)return e;var t=new s.perfetto.protos.FtraceDescriptor;if(e.atraceCategories){if(!Array.isArray(e.atraceCategories))throw TypeError(\".perfetto.protos.FtraceDescriptor.atraceCategories: array expected\");t.atraceCategories=[];for(var r=0;r<e.atraceCategories.length;++r){if(\"object\"!=typeof e.atraceCategories[r])throw TypeError(\".perfetto.protos.FtraceDescriptor.atraceCategories: object expected\");t.atraceCategories[r]=s.perfetto.protos.FtraceDescriptor.AtraceCategory.fromObject(e.atraceCategories[r])}}return t},ye.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.atraceCategories=[]),e.atraceCategories&&e.atraceCategories.length){r.atraceCategories=[];for(var n=0;n<e.atraceCategories.length;++n)r.atraceCategories[n]=s.perfetto.protos.FtraceDescriptor.AtraceCategory.toObject(e.atraceCategories[n],t)}return r},ye.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ye.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceDescriptor\"},ye.AtraceCategory=(Te.prototype.name=\"\",Te.prototype.description=\"\",Te.create=function(e){return new Te(e)},Te.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.description&&Object.hasOwnProperty.call(e,\"description\")&&t.uint32(18).string(e.description),t},Te.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceDescriptor.AtraceCategory;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.description=e.string();break;default:e.skipType(7&a)}}return n},Te.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FtraceDescriptor.AtraceCategory?e:(t=new s.perfetto.protos.FtraceDescriptor.AtraceCategory,null!=e.name&&(t.name=String(e.name)),null!=e.description&&(t.description=String(e.description)),t)},Te.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.description=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.description&&e.hasOwnProperty(\"description\")&&(r.description=e.description),r},Te.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Te.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceDescriptor.AtraceCategory\"},Te),ye),r.GpuCounterDescriptor=(f.prototype.specs=i.emptyArray,f.prototype.blocks=i.emptyArray,f.prototype.minSamplingPeriodNs=i.Long?i.Long.fromBits(0,0,!0):0,f.prototype.maxSamplingPeriodNs=i.Long?i.Long.fromBits(0,0,!0):0,f.prototype.supportsInstrumentedSampling=!1,f.create=function(e){return new f(e)},f.encode=function(e,t){if(t=t||a.create(),null!=e.specs&&e.specs.length)for(var r=0;r<e.specs.length;++r)s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.encode(e.specs[r],t.uint32(10).fork()).ldelim();if(null!=e.blocks&&e.blocks.length)for(r=0;r<e.blocks.length;++r)s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.encode(e.blocks[r],t.uint32(18).fork()).ldelim();return null!=e.minSamplingPeriodNs&&Object.hasOwnProperty.call(e,\"minSamplingPeriodNs\")&&t.uint32(24).uint64(e.minSamplingPeriodNs),null!=e.maxSamplingPeriodNs&&Object.hasOwnProperty.call(e,\"maxSamplingPeriodNs\")&&t.uint32(32).uint64(e.maxSamplingPeriodNs),null!=e.supportsInstrumentedSampling&&Object.hasOwnProperty.call(e,\"supportsInstrumentedSampling\")&&t.uint32(40).bool(e.supportsInstrumentedSampling),t},f.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GpuCounterDescriptor;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.specs&&n.specs.length||(n.specs=[]),n.specs.push(s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.decode(e,e.uint32()));break;case 2:n.blocks&&n.blocks.length||(n.blocks=[]),n.blocks.push(s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.decode(e,e.uint32()));break;case 3:n.minSamplingPeriodNs=e.uint64();break;case 4:n.maxSamplingPeriodNs=e.uint64();break;case 5:n.supportsInstrumentedSampling=e.bool();break;default:e.skipType(7&a)}}return n},f.fromObject=function(e){if(e instanceof s.perfetto.protos.GpuCounterDescriptor)return e;var t=new s.perfetto.protos.GpuCounterDescriptor;if(e.specs){if(!Array.isArray(e.specs))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.specs: array expected\");t.specs=[];for(var r=0;r<e.specs.length;++r){if(\"object\"!=typeof e.specs[r])throw TypeError(\".perfetto.protos.GpuCounterDescriptor.specs: object expected\");t.specs[r]=s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.fromObject(e.specs[r])}}if(e.blocks){if(!Array.isArray(e.blocks))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.blocks: array expected\");t.blocks=[];for(r=0;r<e.blocks.length;++r){if(\"object\"!=typeof e.blocks[r])throw TypeError(\".perfetto.protos.GpuCounterDescriptor.blocks: object expected\");t.blocks[r]=s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.fromObject(e.blocks[r])}}return null!=e.minSamplingPeriodNs&&(i.Long?(t.minSamplingPeriodNs=i.Long.fromValue(e.minSamplingPeriodNs)).unsigned=!0:\"string\"==typeof e.minSamplingPeriodNs?t.minSamplingPeriodNs=parseInt(e.minSamplingPeriodNs,10):\"number\"==typeof e.minSamplingPeriodNs?t.minSamplingPeriodNs=e.minSamplingPeriodNs:\"object\"==typeof e.minSamplingPeriodNs&&(t.minSamplingPeriodNs=new i.LongBits(e.minSamplingPeriodNs.low>>>0,e.minSamplingPeriodNs.high>>>0).toNumber(!0))),null!=e.maxSamplingPeriodNs&&(i.Long?(t.maxSamplingPeriodNs=i.Long.fromValue(e.maxSamplingPeriodNs)).unsigned=!0:\"string\"==typeof e.maxSamplingPeriodNs?t.maxSamplingPeriodNs=parseInt(e.maxSamplingPeriodNs,10):\"number\"==typeof e.maxSamplingPeriodNs?t.maxSamplingPeriodNs=e.maxSamplingPeriodNs:\"object\"==typeof e.maxSamplingPeriodNs&&(t.maxSamplingPeriodNs=new i.LongBits(e.maxSamplingPeriodNs.low>>>0,e.maxSamplingPeriodNs.high>>>0).toNumber(!0))),null!=e.supportsInstrumentedSampling&&(t.supportsInstrumentedSampling=Boolean(e.supportsInstrumentedSampling)),t},f.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.specs=[],n.blocks=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.minSamplingPeriodNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.minSamplingPeriodNs=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.maxSamplingPeriodNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxSamplingPeriodNs=t.longs===String?\"0\":0,n.supportsInstrumentedSampling=!1),e.specs&&e.specs.length){n.specs=[];for(var a=0;a<e.specs.length;++a)n.specs[a]=s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.toObject(e.specs[a],t)}if(e.blocks&&e.blocks.length){n.blocks=[];for(a=0;a<e.blocks.length;++a)n.blocks[a]=s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.toObject(e.blocks[a],t)}return null!=e.minSamplingPeriodNs&&e.hasOwnProperty(\"minSamplingPeriodNs\")&&(\"number\"==typeof e.minSamplingPeriodNs?n.minSamplingPeriodNs=t.longs===String?String(e.minSamplingPeriodNs):e.minSamplingPeriodNs:n.minSamplingPeriodNs=t.longs===String?i.Long.prototype.toString.call(e.minSamplingPeriodNs):t.longs===Number?new i.LongBits(e.minSamplingPeriodNs.low>>>0,e.minSamplingPeriodNs.high>>>0).toNumber(!0):e.minSamplingPeriodNs),null!=e.maxSamplingPeriodNs&&e.hasOwnProperty(\"maxSamplingPeriodNs\")&&(\"number\"==typeof e.maxSamplingPeriodNs?n.maxSamplingPeriodNs=t.longs===String?String(e.maxSamplingPeriodNs):e.maxSamplingPeriodNs:n.maxSamplingPeriodNs=t.longs===String?i.Long.prototype.toString.call(e.maxSamplingPeriodNs):t.longs===Number?new i.LongBits(e.maxSamplingPeriodNs.low>>>0,e.maxSamplingPeriodNs.high>>>0).toNumber(!0):e.maxSamplingPeriodNs),null!=e.supportsInstrumentedSampling&&e.hasOwnProperty(\"supportsInstrumentedSampling\")&&(n.supportsInstrumentedSampling=e.supportsInstrumentedSampling),n},f.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},f.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GpuCounterDescriptor\"},f.GpuCounterGroup=(e={},(t=Object.create(e))[e[0]=\"UNCLASSIFIED\"]=0,t[e[1]=\"SYSTEM\"]=1,t[e[2]=\"VERTICES\"]=2,t[e[3]=\"FRAGMENTS\"]=3,t[e[4]=\"PRIMITIVES\"]=4,t[e[5]=\"MEMORY\"]=5,t[e[6]=\"COMPUTE\"]=6,t),f.GpuCounterSpec=(h.prototype.counterId=0,h.prototype.name=\"\",h.prototype.description=\"\",h.prototype.intPeakValue=null,h.prototype.doublePeakValue=null,h.prototype.numeratorUnits=i.emptyArray,h.prototype.denominatorUnits=i.emptyArray,h.prototype.selectByDefault=!1,h.prototype.groups=i.emptyArray,Object.defineProperty(h.prototype,\"peakValue\",{get:i.oneOfGetter(e=[\"intPeakValue\",\"doublePeakValue\"]),set:i.oneOfSetter(e)}),h.create=function(e){return new h(e)},h.encode=function(e,t){if(t=t||a.create(),null!=e.counterId&&Object.hasOwnProperty.call(e,\"counterId\")&&t.uint32(8).uint32(e.counterId),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(18).string(e.name),null!=e.description&&Object.hasOwnProperty.call(e,\"description\")&&t.uint32(26).string(e.description),null!=e.intPeakValue&&Object.hasOwnProperty.call(e,\"intPeakValue\")&&t.uint32(40).int64(e.intPeakValue),null!=e.doublePeakValue&&Object.hasOwnProperty.call(e,\"doublePeakValue\")&&t.uint32(49).double(e.doublePeakValue),null!=e.numeratorUnits&&e.numeratorUnits.length)for(var r=0;r<e.numeratorUnits.length;++r)t.uint32(56).int32(e.numeratorUnits[r]);if(null!=e.denominatorUnits&&e.denominatorUnits.length)for(r=0;r<e.denominatorUnits.length;++r)t.uint32(64).int32(e.denominatorUnits[r]);if(null!=e.selectByDefault&&Object.hasOwnProperty.call(e,\"selectByDefault\")&&t.uint32(72).bool(e.selectByDefault),null!=e.groups&&e.groups.length)for(r=0;r<e.groups.length;++r)t.uint32(80).int32(e.groups[r]);return t},h.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.counterId=e.uint32();break;case 2:n.name=e.string();break;case 3:n.description=e.string();break;case 5:n.intPeakValue=e.int64();break;case 6:n.doublePeakValue=e.double();break;case 7:if(n.numeratorUnits&&n.numeratorUnits.length||(n.numeratorUnits=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.numeratorUnits.push(e.int32());else n.numeratorUnits.push(e.int32());break;case 8:if(n.denominatorUnits&&n.denominatorUnits.length||(n.denominatorUnits=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.denominatorUnits.push(e.int32());else n.denominatorUnits.push(e.int32());break;case 9:n.selectByDefault=e.bool();break;case 10:if(n.groups&&n.groups.length||(n.groups=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.groups.push(e.int32());else n.groups.push(e.int32());break;default:e.skipType(7&a)}}return n},h.fromObject=function(e){if(e instanceof s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec)return e;var t=new s.perfetto.protos.GpuCounterDescriptor.GpuCounterSpec;if(null!=e.counterId&&(t.counterId=e.counterId>>>0),null!=e.name&&(t.name=String(e.name)),null!=e.description&&(t.description=String(e.description)),null!=e.intPeakValue&&(i.Long?(t.intPeakValue=i.Long.fromValue(e.intPeakValue)).unsigned=!1:\"string\"==typeof e.intPeakValue?t.intPeakValue=parseInt(e.intPeakValue,10):\"number\"==typeof e.intPeakValue?t.intPeakValue=e.intPeakValue:\"object\"==typeof e.intPeakValue&&(t.intPeakValue=new i.LongBits(e.intPeakValue.low>>>0,e.intPeakValue.high>>>0).toNumber())),null!=e.doublePeakValue&&(t.doublePeakValue=Number(e.doublePeakValue)),e.numeratorUnits){if(!Array.isArray(e.numeratorUnits))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.numeratorUnits: array expected\");t.numeratorUnits=[];for(var r=0;r<e.numeratorUnits.length;++r)switch(e.numeratorUnits[r]){default:if(\"number\"==typeof e.numeratorUnits[r]){t.numeratorUnits[r]=e.numeratorUnits[r];break}case\"NONE\":case 0:t.numeratorUnits[r]=0;break;case\"BIT\":case 1:t.numeratorUnits[r]=1;break;case\"KILOBIT\":case 2:t.numeratorUnits[r]=2;break;case\"MEGABIT\":case 3:t.numeratorUnits[r]=3;break;case\"GIGABIT\":case 4:t.numeratorUnits[r]=4;break;case\"TERABIT\":case 5:t.numeratorUnits[r]=5;break;case\"PETABIT\":case 6:t.numeratorUnits[r]=6;break;case\"BYTE\":case 7:t.numeratorUnits[r]=7;break;case\"KILOBYTE\":case 8:t.numeratorUnits[r]=8;break;case\"MEGABYTE\":case 9:t.numeratorUnits[r]=9;break;case\"GIGABYTE\":case 10:t.numeratorUnits[r]=10;break;case\"TERABYTE\":case 11:t.numeratorUnits[r]=11;break;case\"PETABYTE\":case 12:t.numeratorUnits[r]=12;break;case\"HERTZ\":case 13:t.numeratorUnits[r]=13;break;case\"KILOHERTZ\":case 14:t.numeratorUnits[r]=14;break;case\"MEGAHERTZ\":case 15:t.numeratorUnits[r]=15;break;case\"GIGAHERTZ\":case 16:t.numeratorUnits[r]=16;break;case\"TERAHERTZ\":case 17:t.numeratorUnits[r]=17;break;case\"PETAHERTZ\":case 18:t.numeratorUnits[r]=18;break;case\"NANOSECOND\":case 19:t.numeratorUnits[r]=19;break;case\"MICROSECOND\":case 20:t.numeratorUnits[r]=20;break;case\"MILLISECOND\":case 21:t.numeratorUnits[r]=21;break;case\"SECOND\":case 22:t.numeratorUnits[r]=22;break;case\"MINUTE\":case 23:t.numeratorUnits[r]=23;break;case\"HOUR\":case 24:t.numeratorUnits[r]=24;break;case\"VERTEX\":case 25:t.numeratorUnits[r]=25;break;case\"PIXEL\":case 26:t.numeratorUnits[r]=26;break;case\"TRIANGLE\":case 27:t.numeratorUnits[r]=27;break;case\"PRIMITIVE\":case 38:t.numeratorUnits[r]=38;break;case\"FRAGMENT\":case 39:t.numeratorUnits[r]=39;break;case\"MILLIWATT\":case 28:t.numeratorUnits[r]=28;break;case\"WATT\":case 29:t.numeratorUnits[r]=29;break;case\"KILOWATT\":case 30:t.numeratorUnits[r]=30;break;case\"JOULE\":case 31:t.numeratorUnits[r]=31;break;case\"VOLT\":case 32:t.numeratorUnits[r]=32;break;case\"AMPERE\":case 33:t.numeratorUnits[r]=33;break;case\"CELSIUS\":case 34:t.numeratorUnits[r]=34;break;case\"FAHRENHEIT\":case 35:t.numeratorUnits[r]=35;break;case\"KELVIN\":case 36:t.numeratorUnits[r]=36;break;case\"PERCENT\":case 37:t.numeratorUnits[r]=37;break;case\"INSTRUCTION\":case 40:t.numeratorUnits[r]=40}}if(e.denominatorUnits){if(!Array.isArray(e.denominatorUnits))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.denominatorUnits: array expected\");t.denominatorUnits=[];for(r=0;r<e.denominatorUnits.length;++r)switch(e.denominatorUnits[r]){default:if(\"number\"==typeof e.denominatorUnits[r]){t.denominatorUnits[r]=e.denominatorUnits[r];break}case\"NONE\":case 0:t.denominatorUnits[r]=0;break;case\"BIT\":case 1:t.denominatorUnits[r]=1;break;case\"KILOBIT\":case 2:t.denominatorUnits[r]=2;break;case\"MEGABIT\":case 3:t.denominatorUnits[r]=3;break;case\"GIGABIT\":case 4:t.denominatorUnits[r]=4;break;case\"TERABIT\":case 5:t.denominatorUnits[r]=5;break;case\"PETABIT\":case 6:t.denominatorUnits[r]=6;break;case\"BYTE\":case 7:t.denominatorUnits[r]=7;break;case\"KILOBYTE\":case 8:t.denominatorUnits[r]=8;break;case\"MEGABYTE\":case 9:t.denominatorUnits[r]=9;break;case\"GIGABYTE\":case 10:t.denominatorUnits[r]=10;break;case\"TERABYTE\":case 11:t.denominatorUnits[r]=11;break;case\"PETABYTE\":case 12:t.denominatorUnits[r]=12;break;case\"HERTZ\":case 13:t.denominatorUnits[r]=13;break;case\"KILOHERTZ\":case 14:t.denominatorUnits[r]=14;break;case\"MEGAHERTZ\":case 15:t.denominatorUnits[r]=15;break;case\"GIGAHERTZ\":case 16:t.denominatorUnits[r]=16;break;case\"TERAHERTZ\":case 17:t.denominatorUnits[r]=17;break;case\"PETAHERTZ\":case 18:t.denominatorUnits[r]=18;break;case\"NANOSECOND\":case 19:t.denominatorUnits[r]=19;break;case\"MICROSECOND\":case 20:t.denominatorUnits[r]=20;break;case\"MILLISECOND\":case 21:t.denominatorUnits[r]=21;break;case\"SECOND\":case 22:t.denominatorUnits[r]=22;break;case\"MINUTE\":case 23:t.denominatorUnits[r]=23;break;case\"HOUR\":case 24:t.denominatorUnits[r]=24;break;case\"VERTEX\":case 25:t.denominatorUnits[r]=25;break;case\"PIXEL\":case 26:t.denominatorUnits[r]=26;break;case\"TRIANGLE\":case 27:t.denominatorUnits[r]=27;break;case\"PRIMITIVE\":case 38:t.denominatorUnits[r]=38;break;case\"FRAGMENT\":case 39:t.denominatorUnits[r]=39;break;case\"MILLIWATT\":case 28:t.denominatorUnits[r]=28;break;case\"WATT\":case 29:t.denominatorUnits[r]=29;break;case\"KILOWATT\":case 30:t.denominatorUnits[r]=30;break;case\"JOULE\":case 31:t.denominatorUnits[r]=31;break;case\"VOLT\":case 32:t.denominatorUnits[r]=32;break;case\"AMPERE\":case 33:t.denominatorUnits[r]=33;break;case\"CELSIUS\":case 34:t.denominatorUnits[r]=34;break;case\"FAHRENHEIT\":case 35:t.denominatorUnits[r]=35;break;case\"KELVIN\":case 36:t.denominatorUnits[r]=36;break;case\"PERCENT\":case 37:t.denominatorUnits[r]=37;break;case\"INSTRUCTION\":case 40:t.denominatorUnits[r]=40}}if(null!=e.selectByDefault&&(t.selectByDefault=Boolean(e.selectByDefault)),e.groups){if(!Array.isArray(e.groups))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.GpuCounterSpec.groups: array expected\");t.groups=[];for(r=0;r<e.groups.length;++r)switch(e.groups[r]){default:if(\"number\"==typeof e.groups[r]){t.groups[r]=e.groups[r];break}case\"UNCLASSIFIED\":case 0:t.groups[r]=0;break;case\"SYSTEM\":case 1:t.groups[r]=1;break;case\"VERTICES\":case 2:t.groups[r]=2;break;case\"FRAGMENTS\":case 3:t.groups[r]=3;break;case\"PRIMITIVES\":case 4:t.groups[r]=4;break;case\"MEMORY\":case 5:t.groups[r]=5;break;case\"COMPUTE\":case 6:t.groups[r]=6}}return t},h.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.numeratorUnits=[],r.denominatorUnits=[],r.groups=[]),t.defaults&&(r.counterId=0,r.name=\"\",r.description=\"\",r.selectByDefault=!1),null!=e.counterId&&e.hasOwnProperty(\"counterId\")&&(r.counterId=e.counterId),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.description&&e.hasOwnProperty(\"description\")&&(r.description=e.description),null!=e.intPeakValue&&e.hasOwnProperty(\"intPeakValue\")&&(\"number\"==typeof e.intPeakValue?r.intPeakValue=t.longs===String?String(e.intPeakValue):e.intPeakValue:r.intPeakValue=t.longs===String?i.Long.prototype.toString.call(e.intPeakValue):t.longs===Number?new i.LongBits(e.intPeakValue.low>>>0,e.intPeakValue.high>>>0).toNumber():e.intPeakValue,t.oneofs)&&(r.peakValue=\"intPeakValue\"),null!=e.doublePeakValue&&e.hasOwnProperty(\"doublePeakValue\")&&(r.doublePeakValue=t.json&&!isFinite(e.doublePeakValue)?String(e.doublePeakValue):e.doublePeakValue,t.oneofs)&&(r.peakValue=\"doublePeakValue\"),e.numeratorUnits&&e.numeratorUnits.length){r.numeratorUnits=[];for(var n=0;n<e.numeratorUnits.length;++n)r.numeratorUnits[n]=t.enums!==String||void 0===s.perfetto.protos.GpuCounterDescriptor.MeasureUnit[e.numeratorUnits[n]]?e.numeratorUnits[n]:s.perfetto.protos.GpuCounterDescriptor.MeasureUnit[e.numeratorUnits[n]]}if(e.denominatorUnits&&e.denominatorUnits.length){r.denominatorUnits=[];for(n=0;n<e.denominatorUnits.length;++n)r.denominatorUnits[n]=t.enums!==String||void 0===s.perfetto.protos.GpuCounterDescriptor.MeasureUnit[e.denominatorUnits[n]]?e.denominatorUnits[n]:s.perfetto.protos.GpuCounterDescriptor.MeasureUnit[e.denominatorUnits[n]]}if(null!=e.selectByDefault&&e.hasOwnProperty(\"selectByDefault\")&&(r.selectByDefault=e.selectByDefault),e.groups&&e.groups.length){r.groups=[];for(n=0;n<e.groups.length;++n)r.groups[n]=t.enums!==String||void 0===s.perfetto.protos.GpuCounterDescriptor.GpuCounterGroup[e.groups[n]]?e.groups[n]:s.perfetto.protos.GpuCounterDescriptor.GpuCounterGroup[e.groups[n]]}return r},h.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},h.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GpuCounterDescriptor.GpuCounterSpec\"},h),f.GpuCounterBlock=(ve.prototype.blockId=0,ve.prototype.blockCapacity=0,ve.prototype.name=\"\",ve.prototype.description=\"\",ve.prototype.counterIds=i.emptyArray,ve.create=function(e){return new ve(e)},ve.encode=function(e,t){if(t=t||a.create(),null!=e.blockId&&Object.hasOwnProperty.call(e,\"blockId\")&&t.uint32(8).uint32(e.blockId),null!=e.blockCapacity&&Object.hasOwnProperty.call(e,\"blockCapacity\")&&t.uint32(16).uint32(e.blockCapacity),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(26).string(e.name),null!=e.description&&Object.hasOwnProperty.call(e,\"description\")&&t.uint32(34).string(e.description),null!=e.counterIds&&e.counterIds.length)for(var r=0;r<e.counterIds.length;++r)t.uint32(40).uint32(e.counterIds[r]);return t},ve.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.blockId=e.uint32();break;case 2:n.blockCapacity=e.uint32();break;case 3:n.name=e.string();break;case 4:n.description=e.string();break;case 5:if(n.counterIds&&n.counterIds.length||(n.counterIds=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.counterIds.push(e.uint32());else n.counterIds.push(e.uint32());break;default:e.skipType(7&a)}}return n},ve.fromObject=function(e){if(e instanceof s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock)return e;var t=new s.perfetto.protos.GpuCounterDescriptor.GpuCounterBlock;if(null!=e.blockId&&(t.blockId=e.blockId>>>0),null!=e.blockCapacity&&(t.blockCapacity=e.blockCapacity>>>0),null!=e.name&&(t.name=String(e.name)),null!=e.description&&(t.description=String(e.description)),e.counterIds){if(!Array.isArray(e.counterIds))throw TypeError(\".perfetto.protos.GpuCounterDescriptor.GpuCounterBlock.counterIds: array expected\");t.counterIds=[];for(var r=0;r<e.counterIds.length;++r)t.counterIds[r]=e.counterIds[r]>>>0}return t},ve.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.counterIds=[]),t.defaults&&(r.blockId=0,r.blockCapacity=0,r.name=\"\",r.description=\"\"),null!=e.blockId&&e.hasOwnProperty(\"blockId\")&&(r.blockId=e.blockId),null!=e.blockCapacity&&e.hasOwnProperty(\"blockCapacity\")&&(r.blockCapacity=e.blockCapacity),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.description&&e.hasOwnProperty(\"description\")&&(r.description=e.description),e.counterIds&&e.counterIds.length){r.counterIds=[];for(var n=0;n<e.counterIds.length;++n)r.counterIds[n]=e.counterIds[n]}return r},ve.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ve.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GpuCounterDescriptor.GpuCounterBlock\"},ve),f.MeasureUnit=(t={},(e=Object.create(t))[t[0]=\"NONE\"]=0,e[t[1]=\"BIT\"]=1,e[t[2]=\"KILOBIT\"]=2,e[t[3]=\"MEGABIT\"]=3,e[t[4]=\"GIGABIT\"]=4,e[t[5]=\"TERABIT\"]=5,e[t[6]=\"PETABIT\"]=6,e[t[7]=\"BYTE\"]=7,e[t[8]=\"KILOBYTE\"]=8,e[t[9]=\"MEGABYTE\"]=9,e[t[10]=\"GIGABYTE\"]=10,e[t[11]=\"TERABYTE\"]=11,e[t[12]=\"PETABYTE\"]=12,e[t[13]=\"HERTZ\"]=13,e[t[14]=\"KILOHERTZ\"]=14,e[t[15]=\"MEGAHERTZ\"]=15,e[t[16]=\"GIGAHERTZ\"]=16,e[t[17]=\"TERAHERTZ\"]=17,e[t[18]=\"PETAHERTZ\"]=18,e[t[19]=\"NANOSECOND\"]=19,e[t[20]=\"MICROSECOND\"]=20,e[t[21]=\"MILLISECOND\"]=21,e[t[22]=\"SECOND\"]=22,e[t[23]=\"MINUTE\"]=23,e[t[24]=\"HOUR\"]=24,e[t[25]=\"VERTEX\"]=25,e[t[26]=\"PIXEL\"]=26,e[t[27]=\"TRIANGLE\"]=27,e[t[38]=\"PRIMITIVE\"]=38,e[t[39]=\"FRAGMENT\"]=39,e[t[28]=\"MILLIWATT\"]=28,e[t[29]=\"WATT\"]=29,e[t[30]=\"KILOWATT\"]=30,e[t[31]=\"JOULE\"]=31,e[t[32]=\"VOLT\"]=32,e[t[33]=\"AMPERE\"]=33,e[t[34]=\"CELSIUS\"]=34,e[t[35]=\"FAHRENHEIT\"]=35,e[t[36]=\"KELVIN\"]=36,e[t[37]=\"PERCENT\"]=37,e[t[40]=\"INSTRUCTION\"]=40,e),f),r.TrackEventCategory=(be.prototype.name=\"\",be.prototype.description=\"\",be.prototype.tags=i.emptyArray,be.create=function(e){return new be(e)},be.encode=function(e,t){if(t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.description&&Object.hasOwnProperty.call(e,\"description\")&&t.uint32(18).string(e.description),null!=e.tags&&e.tags.length)for(var r=0;r<e.tags.length;++r)t.uint32(26).string(e.tags[r]);return t},be.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TrackEventCategory;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.description=e.string();break;case 3:n.tags&&n.tags.length||(n.tags=[]),n.tags.push(e.string());break;default:e.skipType(7&a)}}return n},be.fromObject=function(e){if(e instanceof s.perfetto.protos.TrackEventCategory)return e;var t=new s.perfetto.protos.TrackEventCategory;if(null!=e.name&&(t.name=String(e.name)),null!=e.description&&(t.description=String(e.description)),e.tags){if(!Array.isArray(e.tags))throw TypeError(\".perfetto.protos.TrackEventCategory.tags: array expected\");t.tags=[];for(var r=0;r<e.tags.length;++r)t.tags[r]=String(e.tags[r])}return t},be.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.tags=[]),t.defaults&&(r.name=\"\",r.description=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.description&&e.hasOwnProperty(\"description\")&&(r.description=e.description),e.tags&&e.tags.length){r.tags=[];for(var n=0;n<e.tags.length;++n)r.tags[n]=e.tags[n]}return r},be.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},be.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TrackEventCategory\"},be),r.TrackEventDescriptor=(Ee.prototype.availableCategories=i.emptyArray,Ee.create=function(e){return new Ee(e)},Ee.encode=function(e,t){if(t=t||a.create(),null!=e.availableCategories&&e.availableCategories.length)for(var r=0;r<e.availableCategories.length;++r)s.perfetto.protos.TrackEventCategory.encode(e.availableCategories[r],t.uint32(10).fork()).ldelim();return t},Ee.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TrackEventDescriptor;e.pos<r;){var a=e.uint32();a>>>3==1?(n.availableCategories&&n.availableCategories.length||(n.availableCategories=[]),n.availableCategories.push(s.perfetto.protos.TrackEventCategory.decode(e,e.uint32()))):e.skipType(7&a)}return n},Ee.fromObject=function(e){if(e instanceof s.perfetto.protos.TrackEventDescriptor)return e;var t=new s.perfetto.protos.TrackEventDescriptor;if(e.availableCategories){if(!Array.isArray(e.availableCategories))throw TypeError(\".perfetto.protos.TrackEventDescriptor.availableCategories: array expected\");t.availableCategories=[];for(var r=0;r<e.availableCategories.length;++r){if(\"object\"!=typeof e.availableCategories[r])throw TypeError(\".perfetto.protos.TrackEventDescriptor.availableCategories: object expected\");t.availableCategories[r]=s.perfetto.protos.TrackEventCategory.fromObject(e.availableCategories[r])}}return t},Ee.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.availableCategories=[]),e.availableCategories&&e.availableCategories.length){r.availableCategories=[];for(var n=0;n<e.availableCategories.length;++n)r.availableCategories[n]=s.perfetto.protos.TrackEventCategory.toObject(e.availableCategories[n],t)}return r},Ee.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ee.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TrackEventDescriptor\"},Ee),r.TracingServiceCapabilities=(Se.prototype.hasQueryCapabilities=!1,Se.prototype.observableEvents=i.emptyArray,Se.prototype.hasTraceConfigOutputPath=!1,Se.prototype.hasCloneSession=!1,Se.create=function(e){return new Se(e)},Se.encode=function(e,t){if(t=t||a.create(),null!=e.hasQueryCapabilities&&Object.hasOwnProperty.call(e,\"hasQueryCapabilities\")&&t.uint32(8).bool(e.hasQueryCapabilities),null!=e.observableEvents&&e.observableEvents.length)for(var r=0;r<e.observableEvents.length;++r)t.uint32(16).int32(e.observableEvents[r]);return null!=e.hasTraceConfigOutputPath&&Object.hasOwnProperty.call(e,\"hasTraceConfigOutputPath\")&&t.uint32(24).bool(e.hasTraceConfigOutputPath),null!=e.hasCloneSession&&Object.hasOwnProperty.call(e,\"hasCloneSession\")&&t.uint32(32).bool(e.hasCloneSession),t},Se.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TracingServiceCapabilities;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.hasQueryCapabilities=e.bool();break;case 2:if(n.observableEvents&&n.observableEvents.length||(n.observableEvents=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.observableEvents.push(e.int32());else n.observableEvents.push(e.int32());break;case 3:n.hasTraceConfigOutputPath=e.bool();break;case 4:n.hasCloneSession=e.bool();break;default:e.skipType(7&a)}}return n},Se.fromObject=function(e){if(e instanceof s.perfetto.protos.TracingServiceCapabilities)return e;var t=new s.perfetto.protos.TracingServiceCapabilities;if(null!=e.hasQueryCapabilities&&(t.hasQueryCapabilities=Boolean(e.hasQueryCapabilities)),e.observableEvents){if(!Array.isArray(e.observableEvents))throw TypeError(\".perfetto.protos.TracingServiceCapabilities.observableEvents: array expected\");t.observableEvents=[];for(var r=0;r<e.observableEvents.length;++r)switch(e.observableEvents[r]){default:if(\"number\"==typeof e.observableEvents[r]){t.observableEvents[r]=e.observableEvents[r];break}case\"TYPE_UNSPECIFIED\":case 0:t.observableEvents[r]=0;break;case\"TYPE_DATA_SOURCES_INSTANCES\":case 1:t.observableEvents[r]=1;break;case\"TYPE_ALL_DATA_SOURCES_STARTED\":case 2:t.observableEvents[r]=2;break;case\"TYPE_CLONE_TRIGGER_HIT\":case 4:t.observableEvents[r]=4}}return null!=e.hasTraceConfigOutputPath&&(t.hasTraceConfigOutputPath=Boolean(e.hasTraceConfigOutputPath)),null!=e.hasCloneSession&&(t.hasCloneSession=Boolean(e.hasCloneSession)),t},Se.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.observableEvents=[]),t.defaults&&(r.hasQueryCapabilities=!1,r.hasTraceConfigOutputPath=!1,r.hasCloneSession=!1),null!=e.hasQueryCapabilities&&e.hasOwnProperty(\"hasQueryCapabilities\")&&(r.hasQueryCapabilities=e.hasQueryCapabilities),e.observableEvents&&e.observableEvents.length){r.observableEvents=[];for(var n=0;n<e.observableEvents.length;++n)r.observableEvents[n]=t.enums!==String||void 0===s.perfetto.protos.ObservableEvents.Type[e.observableEvents[n]]?e.observableEvents[n]:s.perfetto.protos.ObservableEvents.Type[e.observableEvents[n]]}return null!=e.hasTraceConfigOutputPath&&e.hasOwnProperty(\"hasTraceConfigOutputPath\")&&(r.hasTraceConfigOutputPath=e.hasTraceConfigOutputPath),null!=e.hasCloneSession&&e.hasOwnProperty(\"hasCloneSession\")&&(r.hasCloneSession=e.hasCloneSession),r},Se.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Se.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TracingServiceCapabilities\"},Se),r.TraceStats=(m.prototype.bufferStats=i.emptyArray,m.prototype.chunkPayloadHistogramDef=i.emptyArray,m.prototype.writerStats=i.emptyArray,m.prototype.producersConnected=0,m.prototype.producersSeen=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.dataSourcesRegistered=0,m.prototype.dataSourcesSeen=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.tracingSessions=0,m.prototype.totalBuffers=0,m.prototype.chunksDiscarded=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.patchesDiscarded=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.invalidPackets=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.filterStats=null,m.prototype.flushesRequested=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.flushesSucceeded=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.flushesFailed=i.Long?i.Long.fromBits(0,0,!0):0,m.prototype.finalFlushOutcome=0,m.create=function(e){return new m(e)},m.encode=function(e,t){if(t=t||a.create(),null!=e.bufferStats&&e.bufferStats.length)for(var r=0;r<e.bufferStats.length;++r)s.perfetto.protos.TraceStats.BufferStats.encode(e.bufferStats[r],t.uint32(10).fork()).ldelim();if(null!=e.producersConnected&&Object.hasOwnProperty.call(e,\"producersConnected\")&&t.uint32(16).uint32(e.producersConnected),null!=e.producersSeen&&Object.hasOwnProperty.call(e,\"producersSeen\")&&t.uint32(24).uint64(e.producersSeen),null!=e.dataSourcesRegistered&&Object.hasOwnProperty.call(e,\"dataSourcesRegistered\")&&t.uint32(32).uint32(e.dataSourcesRegistered),null!=e.dataSourcesSeen&&Object.hasOwnProperty.call(e,\"dataSourcesSeen\")&&t.uint32(40).uint64(e.dataSourcesSeen),null!=e.tracingSessions&&Object.hasOwnProperty.call(e,\"tracingSessions\")&&t.uint32(48).uint32(e.tracingSessions),null!=e.totalBuffers&&Object.hasOwnProperty.call(e,\"totalBuffers\")&&t.uint32(56).uint32(e.totalBuffers),null!=e.chunksDiscarded&&Object.hasOwnProperty.call(e,\"chunksDiscarded\")&&t.uint32(64).uint64(e.chunksDiscarded),null!=e.patchesDiscarded&&Object.hasOwnProperty.call(e,\"patchesDiscarded\")&&t.uint32(72).uint64(e.patchesDiscarded),null!=e.invalidPackets&&Object.hasOwnProperty.call(e,\"invalidPackets\")&&t.uint32(80).uint64(e.invalidPackets),null!=e.filterStats&&Object.hasOwnProperty.call(e,\"filterStats\")&&s.perfetto.protos.TraceStats.FilterStats.encode(e.filterStats,t.uint32(90).fork()).ldelim(),null!=e.flushesRequested&&Object.hasOwnProperty.call(e,\"flushesRequested\")&&t.uint32(96).uint64(e.flushesRequested),null!=e.flushesSucceeded&&Object.hasOwnProperty.call(e,\"flushesSucceeded\")&&t.uint32(104).uint64(e.flushesSucceeded),null!=e.flushesFailed&&Object.hasOwnProperty.call(e,\"flushesFailed\")&&t.uint32(112).uint64(e.flushesFailed),null!=e.finalFlushOutcome&&Object.hasOwnProperty.call(e,\"finalFlushOutcome\")&&t.uint32(120).int32(e.finalFlushOutcome),null!=e.chunkPayloadHistogramDef&&e.chunkPayloadHistogramDef.length)for(r=0;r<e.chunkPayloadHistogramDef.length;++r)t.uint32(136).int64(e.chunkPayloadHistogramDef[r]);if(null!=e.writerStats&&e.writerStats.length)for(r=0;r<e.writerStats.length;++r)s.perfetto.protos.TraceStats.WriterStats.encode(e.writerStats[r],t.uint32(146).fork()).ldelim();return t},m.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceStats;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.bufferStats&&n.bufferStats.length||(n.bufferStats=[]),n.bufferStats.push(s.perfetto.protos.TraceStats.BufferStats.decode(e,e.uint32()));break;case 17:if(n.chunkPayloadHistogramDef&&n.chunkPayloadHistogramDef.length||(n.chunkPayloadHistogramDef=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.chunkPayloadHistogramDef.push(e.int64());else n.chunkPayloadHistogramDef.push(e.int64());break;case 18:n.writerStats&&n.writerStats.length||(n.writerStats=[]),n.writerStats.push(s.perfetto.protos.TraceStats.WriterStats.decode(e,e.uint32()));break;case 2:n.producersConnected=e.uint32();break;case 3:n.producersSeen=e.uint64();break;case 4:n.dataSourcesRegistered=e.uint32();break;case 5:n.dataSourcesSeen=e.uint64();break;case 6:n.tracingSessions=e.uint32();break;case 7:n.totalBuffers=e.uint32();break;case 8:n.chunksDiscarded=e.uint64();break;case 9:n.patchesDiscarded=e.uint64();break;case 10:n.invalidPackets=e.uint64();break;case 11:n.filterStats=s.perfetto.protos.TraceStats.FilterStats.decode(e,e.uint32());break;case 12:n.flushesRequested=e.uint64();break;case 13:n.flushesSucceeded=e.uint64();break;case 14:n.flushesFailed=e.uint64();break;case 15:n.finalFlushOutcome=e.int32();break;default:e.skipType(7&a)}}return n},m.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceStats)return e;var t=new s.perfetto.protos.TraceStats;if(e.bufferStats){if(!Array.isArray(e.bufferStats))throw TypeError(\".perfetto.protos.TraceStats.bufferStats: array expected\");t.bufferStats=[];for(var r=0;r<e.bufferStats.length;++r){if(\"object\"!=typeof e.bufferStats[r])throw TypeError(\".perfetto.protos.TraceStats.bufferStats: object expected\");t.bufferStats[r]=s.perfetto.protos.TraceStats.BufferStats.fromObject(e.bufferStats[r])}}if(e.chunkPayloadHistogramDef){if(!Array.isArray(e.chunkPayloadHistogramDef))throw TypeError(\".perfetto.protos.TraceStats.chunkPayloadHistogramDef: array expected\");t.chunkPayloadHistogramDef=[];for(r=0;r<e.chunkPayloadHistogramDef.length;++r)i.Long?(t.chunkPayloadHistogramDef[r]=i.Long.fromValue(e.chunkPayloadHistogramDef[r])).unsigned=!1:\"string\"==typeof e.chunkPayloadHistogramDef[r]?t.chunkPayloadHistogramDef[r]=parseInt(e.chunkPayloadHistogramDef[r],10):\"number\"==typeof e.chunkPayloadHistogramDef[r]?t.chunkPayloadHistogramDef[r]=e.chunkPayloadHistogramDef[r]:\"object\"==typeof e.chunkPayloadHistogramDef[r]&&(t.chunkPayloadHistogramDef[r]=new i.LongBits(e.chunkPayloadHistogramDef[r].low>>>0,e.chunkPayloadHistogramDef[r].high>>>0).toNumber())}if(e.writerStats){if(!Array.isArray(e.writerStats))throw TypeError(\".perfetto.protos.TraceStats.writerStats: array expected\");t.writerStats=[];for(r=0;r<e.writerStats.length;++r){if(\"object\"!=typeof e.writerStats[r])throw TypeError(\".perfetto.protos.TraceStats.writerStats: object expected\");t.writerStats[r]=s.perfetto.protos.TraceStats.WriterStats.fromObject(e.writerStats[r])}}if(null!=e.producersConnected&&(t.producersConnected=e.producersConnected>>>0),null!=e.producersSeen&&(i.Long?(t.producersSeen=i.Long.fromValue(e.producersSeen)).unsigned=!0:\"string\"==typeof e.producersSeen?t.producersSeen=parseInt(e.producersSeen,10):\"number\"==typeof e.producersSeen?t.producersSeen=e.producersSeen:\"object\"==typeof e.producersSeen&&(t.producersSeen=new i.LongBits(e.producersSeen.low>>>0,e.producersSeen.high>>>0).toNumber(!0))),null!=e.dataSourcesRegistered&&(t.dataSourcesRegistered=e.dataSourcesRegistered>>>0),null!=e.dataSourcesSeen&&(i.Long?(t.dataSourcesSeen=i.Long.fromValue(e.dataSourcesSeen)).unsigned=!0:\"string\"==typeof e.dataSourcesSeen?t.dataSourcesSeen=parseInt(e.dataSourcesSeen,10):\"number\"==typeof e.dataSourcesSeen?t.dataSourcesSeen=e.dataSourcesSeen:\"object\"==typeof e.dataSourcesSeen&&(t.dataSourcesSeen=new i.LongBits(e.dataSourcesSeen.low>>>0,e.dataSourcesSeen.high>>>0).toNumber(!0))),null!=e.tracingSessions&&(t.tracingSessions=e.tracingSessions>>>0),null!=e.totalBuffers&&(t.totalBuffers=e.totalBuffers>>>0),null!=e.chunksDiscarded&&(i.Long?(t.chunksDiscarded=i.Long.fromValue(e.chunksDiscarded)).unsigned=!0:\"string\"==typeof e.chunksDiscarded?t.chunksDiscarded=parseInt(e.chunksDiscarded,10):\"number\"==typeof e.chunksDiscarded?t.chunksDiscarded=e.chunksDiscarded:\"object\"==typeof e.chunksDiscarded&&(t.chunksDiscarded=new i.LongBits(e.chunksDiscarded.low>>>0,e.chunksDiscarded.high>>>0).toNumber(!0))),null!=e.patchesDiscarded&&(i.Long?(t.patchesDiscarded=i.Long.fromValue(e.patchesDiscarded)).unsigned=!0:\"string\"==typeof e.patchesDiscarded?t.patchesDiscarded=parseInt(e.patchesDiscarded,10):\"number\"==typeof e.patchesDiscarded?t.patchesDiscarded=e.patchesDiscarded:\"object\"==typeof e.patchesDiscarded&&(t.patchesDiscarded=new i.LongBits(e.patchesDiscarded.low>>>0,e.patchesDiscarded.high>>>0).toNumber(!0))),null!=e.invalidPackets&&(i.Long?(t.invalidPackets=i.Long.fromValue(e.invalidPackets)).unsigned=!0:\"string\"==typeof e.invalidPackets?t.invalidPackets=parseInt(e.invalidPackets,10):\"number\"==typeof e.invalidPackets?t.invalidPackets=e.invalidPackets:\"object\"==typeof e.invalidPackets&&(t.invalidPackets=new i.LongBits(e.invalidPackets.low>>>0,e.invalidPackets.high>>>0).toNumber(!0))),null!=e.filterStats){if(\"object\"!=typeof e.filterStats)throw TypeError(\".perfetto.protos.TraceStats.filterStats: object expected\");t.filterStats=s.perfetto.protos.TraceStats.FilterStats.fromObject(e.filterStats)}switch(null!=e.flushesRequested&&(i.Long?(t.flushesRequested=i.Long.fromValue(e.flushesRequested)).unsigned=!0:\"string\"==typeof e.flushesRequested?t.flushesRequested=parseInt(e.flushesRequested,10):\"number\"==typeof e.flushesRequested?t.flushesRequested=e.flushesRequested:\"object\"==typeof e.flushesRequested&&(t.flushesRequested=new i.LongBits(e.flushesRequested.low>>>0,e.flushesRequested.high>>>0).toNumber(!0))),null!=e.flushesSucceeded&&(i.Long?(t.flushesSucceeded=i.Long.fromValue(e.flushesSucceeded)).unsigned=!0:\"string\"==typeof e.flushesSucceeded?t.flushesSucceeded=parseInt(e.flushesSucceeded,10):\"number\"==typeof e.flushesSucceeded?t.flushesSucceeded=e.flushesSucceeded:\"object\"==typeof e.flushesSucceeded&&(t.flushesSucceeded=new i.LongBits(e.flushesSucceeded.low>>>0,e.flushesSucceeded.high>>>0).toNumber(!0))),null!=e.flushesFailed&&(i.Long?(t.flushesFailed=i.Long.fromValue(e.flushesFailed)).unsigned=!0:\"string\"==typeof e.flushesFailed?t.flushesFailed=parseInt(e.flushesFailed,10):\"number\"==typeof e.flushesFailed?t.flushesFailed=e.flushesFailed:\"object\"==typeof e.flushesFailed&&(t.flushesFailed=new i.LongBits(e.flushesFailed.low>>>0,e.flushesFailed.high>>>0).toNumber(!0))),e.finalFlushOutcome){default:\"number\"==typeof e.finalFlushOutcome&&(t.finalFlushOutcome=e.finalFlushOutcome);break;case\"FINAL_FLUSH_UNSPECIFIED\":case 0:t.finalFlushOutcome=0;break;case\"FINAL_FLUSH_SUCCEEDED\":case 1:t.finalFlushOutcome=1;break;case\"FINAL_FLUSH_FAILED\":case 2:t.finalFlushOutcome=2}return t},m.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.bufferStats=[],n.chunkPayloadHistogramDef=[],n.writerStats=[]),t.defaults&&(n.producersConnected=0,i.Long?(r=new i.Long(0,0,!0),n.producersSeen=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.producersSeen=t.longs===String?\"0\":0,n.dataSourcesRegistered=0,i.Long?(r=new i.Long(0,0,!0),n.dataSourcesSeen=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.dataSourcesSeen=t.longs===String?\"0\":0,n.tracingSessions=0,n.totalBuffers=0,i.Long?(r=new i.Long(0,0,!0),n.chunksDiscarded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksDiscarded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.patchesDiscarded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.patchesDiscarded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.invalidPackets=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.invalidPackets=t.longs===String?\"0\":0,n.filterStats=null,i.Long?(r=new i.Long(0,0,!0),n.flushesRequested=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.flushesRequested=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.flushesSucceeded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.flushesSucceeded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.flushesFailed=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.flushesFailed=t.longs===String?\"0\":0,n.finalFlushOutcome=t.enums===String?\"FINAL_FLUSH_UNSPECIFIED\":0),e.bufferStats&&e.bufferStats.length){n.bufferStats=[];for(var a=0;a<e.bufferStats.length;++a)n.bufferStats[a]=s.perfetto.protos.TraceStats.BufferStats.toObject(e.bufferStats[a],t)}if(null!=e.producersConnected&&e.hasOwnProperty(\"producersConnected\")&&(n.producersConnected=e.producersConnected),null!=e.producersSeen&&e.hasOwnProperty(\"producersSeen\")&&(\"number\"==typeof e.producersSeen?n.producersSeen=t.longs===String?String(e.producersSeen):e.producersSeen:n.producersSeen=t.longs===String?i.Long.prototype.toString.call(e.producersSeen):t.longs===Number?new i.LongBits(e.producersSeen.low>>>0,e.producersSeen.high>>>0).toNumber(!0):e.producersSeen),null!=e.dataSourcesRegistered&&e.hasOwnProperty(\"dataSourcesRegistered\")&&(n.dataSourcesRegistered=e.dataSourcesRegistered),null!=e.dataSourcesSeen&&e.hasOwnProperty(\"dataSourcesSeen\")&&(\"number\"==typeof e.dataSourcesSeen?n.dataSourcesSeen=t.longs===String?String(e.dataSourcesSeen):e.dataSourcesSeen:n.dataSourcesSeen=t.longs===String?i.Long.prototype.toString.call(e.dataSourcesSeen):t.longs===Number?new i.LongBits(e.dataSourcesSeen.low>>>0,e.dataSourcesSeen.high>>>0).toNumber(!0):e.dataSourcesSeen),null!=e.tracingSessions&&e.hasOwnProperty(\"tracingSessions\")&&(n.tracingSessions=e.tracingSessions),null!=e.totalBuffers&&e.hasOwnProperty(\"totalBuffers\")&&(n.totalBuffers=e.totalBuffers),null!=e.chunksDiscarded&&e.hasOwnProperty(\"chunksDiscarded\")&&(\"number\"==typeof e.chunksDiscarded?n.chunksDiscarded=t.longs===String?String(e.chunksDiscarded):e.chunksDiscarded:n.chunksDiscarded=t.longs===String?i.Long.prototype.toString.call(e.chunksDiscarded):t.longs===Number?new i.LongBits(e.chunksDiscarded.low>>>0,e.chunksDiscarded.high>>>0).toNumber(!0):e.chunksDiscarded),null!=e.patchesDiscarded&&e.hasOwnProperty(\"patchesDiscarded\")&&(\"number\"==typeof e.patchesDiscarded?n.patchesDiscarded=t.longs===String?String(e.patchesDiscarded):e.patchesDiscarded:n.patchesDiscarded=t.longs===String?i.Long.prototype.toString.call(e.patchesDiscarded):t.longs===Number?new i.LongBits(e.patchesDiscarded.low>>>0,e.patchesDiscarded.high>>>0).toNumber(!0):e.patchesDiscarded),null!=e.invalidPackets&&e.hasOwnProperty(\"invalidPackets\")&&(\"number\"==typeof e.invalidPackets?n.invalidPackets=t.longs===String?String(e.invalidPackets):e.invalidPackets:n.invalidPackets=t.longs===String?i.Long.prototype.toString.call(e.invalidPackets):t.longs===Number?new i.LongBits(e.invalidPackets.low>>>0,e.invalidPackets.high>>>0).toNumber(!0):e.invalidPackets),null!=e.filterStats&&e.hasOwnProperty(\"filterStats\")&&(n.filterStats=s.perfetto.protos.TraceStats.FilterStats.toObject(e.filterStats,t)),null!=e.flushesRequested&&e.hasOwnProperty(\"flushesRequested\")&&(\"number\"==typeof e.flushesRequested?n.flushesRequested=t.longs===String?String(e.flushesRequested):e.flushesRequested:n.flushesRequested=t.longs===String?i.Long.prototype.toString.call(e.flushesRequested):t.longs===Number?new i.LongBits(e.flushesRequested.low>>>0,e.flushesRequested.high>>>0).toNumber(!0):e.flushesRequested),null!=e.flushesSucceeded&&e.hasOwnProperty(\"flushesSucceeded\")&&(\"number\"==typeof e.flushesSucceeded?n.flushesSucceeded=t.longs===String?String(e.flushesSucceeded):e.flushesSucceeded:n.flushesSucceeded=t.longs===String?i.Long.prototype.toString.call(e.flushesSucceeded):t.longs===Number?new i.LongBits(e.flushesSucceeded.low>>>0,e.flushesSucceeded.high>>>0).toNumber(!0):e.flushesSucceeded),null!=e.flushesFailed&&e.hasOwnProperty(\"flushesFailed\")&&(\"number\"==typeof e.flushesFailed?n.flushesFailed=t.longs===String?String(e.flushesFailed):e.flushesFailed:n.flushesFailed=t.longs===String?i.Long.prototype.toString.call(e.flushesFailed):t.longs===Number?new i.LongBits(e.flushesFailed.low>>>0,e.flushesFailed.high>>>0).toNumber(!0):e.flushesFailed),null!=e.finalFlushOutcome&&e.hasOwnProperty(\"finalFlushOutcome\")&&(n.finalFlushOutcome=t.enums!==String||void 0===s.perfetto.protos.TraceStats.FinalFlushOutcome[e.finalFlushOutcome]?e.finalFlushOutcome:s.perfetto.protos.TraceStats.FinalFlushOutcome[e.finalFlushOutcome]),e.chunkPayloadHistogramDef&&e.chunkPayloadHistogramDef.length){n.chunkPayloadHistogramDef=[];for(a=0;a<e.chunkPayloadHistogramDef.length;++a)\"number\"==typeof e.chunkPayloadHistogramDef[a]?n.chunkPayloadHistogramDef[a]=t.longs===String?String(e.chunkPayloadHistogramDef[a]):e.chunkPayloadHistogramDef[a]:n.chunkPayloadHistogramDef[a]=t.longs===String?i.Long.prototype.toString.call(e.chunkPayloadHistogramDef[a]):t.longs===Number?new i.LongBits(e.chunkPayloadHistogramDef[a].low>>>0,e.chunkPayloadHistogramDef[a].high>>>0).toNumber():e.chunkPayloadHistogramDef[a]}if(e.writerStats&&e.writerStats.length){n.writerStats=[];for(a=0;a<e.writerStats.length;++a)n.writerStats[a]=s.perfetto.protos.TraceStats.WriterStats.toObject(e.writerStats[a],t)}return n},m.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},m.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceStats\"},m.BufferStats=(g.prototype.bufferSize=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.bytesWritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.bytesOverwritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.bytesRead=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.paddingBytesWritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.paddingBytesCleared=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksWritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksRewritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksOverwritten=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksDiscarded=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksRead=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.chunksCommittedOutOfOrder=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.writeWrapCount=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.patchesSucceeded=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.patchesFailed=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.readaheadsSucceeded=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.readaheadsFailed=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.abiViolations=i.Long?i.Long.fromBits(0,0,!0):0,g.prototype.traceWriterPacketLoss=i.Long?i.Long.fromBits(0,0,!0):0,g.create=function(e){return new g(e)},g.encode=function(e,t){return t=t||a.create(),null!=e.bytesWritten&&Object.hasOwnProperty.call(e,\"bytesWritten\")&&t.uint32(8).uint64(e.bytesWritten),null!=e.chunksWritten&&Object.hasOwnProperty.call(e,\"chunksWritten\")&&t.uint32(16).uint64(e.chunksWritten),null!=e.chunksOverwritten&&Object.hasOwnProperty.call(e,\"chunksOverwritten\")&&t.uint32(24).uint64(e.chunksOverwritten),null!=e.writeWrapCount&&Object.hasOwnProperty.call(e,\"writeWrapCount\")&&t.uint32(32).uint64(e.writeWrapCount),null!=e.patchesSucceeded&&Object.hasOwnProperty.call(e,\"patchesSucceeded\")&&t.uint32(40).uint64(e.patchesSucceeded),null!=e.patchesFailed&&Object.hasOwnProperty.call(e,\"patchesFailed\")&&t.uint32(48).uint64(e.patchesFailed),null!=e.readaheadsSucceeded&&Object.hasOwnProperty.call(e,\"readaheadsSucceeded\")&&t.uint32(56).uint64(e.readaheadsSucceeded),null!=e.readaheadsFailed&&Object.hasOwnProperty.call(e,\"readaheadsFailed\")&&t.uint32(64).uint64(e.readaheadsFailed),null!=e.abiViolations&&Object.hasOwnProperty.call(e,\"abiViolations\")&&t.uint32(72).uint64(e.abiViolations),null!=e.chunksRewritten&&Object.hasOwnProperty.call(e,\"chunksRewritten\")&&t.uint32(80).uint64(e.chunksRewritten),null!=e.chunksCommittedOutOfOrder&&Object.hasOwnProperty.call(e,\"chunksCommittedOutOfOrder\")&&t.uint32(88).uint64(e.chunksCommittedOutOfOrder),null!=e.bufferSize&&Object.hasOwnProperty.call(e,\"bufferSize\")&&t.uint32(96).uint64(e.bufferSize),null!=e.bytesOverwritten&&Object.hasOwnProperty.call(e,\"bytesOverwritten\")&&t.uint32(104).uint64(e.bytesOverwritten),null!=e.bytesRead&&Object.hasOwnProperty.call(e,\"bytesRead\")&&t.uint32(112).uint64(e.bytesRead),null!=e.paddingBytesWritten&&Object.hasOwnProperty.call(e,\"paddingBytesWritten\")&&t.uint32(120).uint64(e.paddingBytesWritten),null!=e.paddingBytesCleared&&Object.hasOwnProperty.call(e,\"paddingBytesCleared\")&&t.uint32(128).uint64(e.paddingBytesCleared),null!=e.chunksRead&&Object.hasOwnProperty.call(e,\"chunksRead\")&&t.uint32(136).uint64(e.chunksRead),null!=e.chunksDiscarded&&Object.hasOwnProperty.call(e,\"chunksDiscarded\")&&t.uint32(144).uint64(e.chunksDiscarded),null!=e.traceWriterPacketLoss&&Object.hasOwnProperty.call(e,\"traceWriterPacketLoss\")&&t.uint32(152).uint64(e.traceWriterPacketLoss),t},g.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceStats.BufferStats;e.pos<r;){var a=e.uint32();switch(a>>>3){case 12:n.bufferSize=e.uint64();break;case 1:n.bytesWritten=e.uint64();break;case 13:n.bytesOverwritten=e.uint64();break;case 14:n.bytesRead=e.uint64();break;case 15:n.paddingBytesWritten=e.uint64();break;case 16:n.paddingBytesCleared=e.uint64();break;case 2:n.chunksWritten=e.uint64();break;case 10:n.chunksRewritten=e.uint64();break;case 3:n.chunksOverwritten=e.uint64();break;case 18:n.chunksDiscarded=e.uint64();break;case 17:n.chunksRead=e.uint64();break;case 11:n.chunksCommittedOutOfOrder=e.uint64();break;case 4:n.writeWrapCount=e.uint64();break;case 5:n.patchesSucceeded=e.uint64();break;case 6:n.patchesFailed=e.uint64();break;case 7:n.readaheadsSucceeded=e.uint64();break;case 8:n.readaheadsFailed=e.uint64();break;case 9:n.abiViolations=e.uint64();break;case 19:n.traceWriterPacketLoss=e.uint64();break;default:e.skipType(7&a)}}return n},g.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceStats.BufferStats?e:(t=new s.perfetto.protos.TraceStats.BufferStats,null!=e.bufferSize&&(i.Long?(t.bufferSize=i.Long.fromValue(e.bufferSize)).unsigned=!0:\"string\"==typeof e.bufferSize?t.bufferSize=parseInt(e.bufferSize,10):\"number\"==typeof e.bufferSize?t.bufferSize=e.bufferSize:\"object\"==typeof e.bufferSize&&(t.bufferSize=new i.LongBits(e.bufferSize.low>>>0,e.bufferSize.high>>>0).toNumber(!0))),null!=e.bytesWritten&&(i.Long?(t.bytesWritten=i.Long.fromValue(e.bytesWritten)).unsigned=!0:\"string\"==typeof e.bytesWritten?t.bytesWritten=parseInt(e.bytesWritten,10):\"number\"==typeof e.bytesWritten?t.bytesWritten=e.bytesWritten:\"object\"==typeof e.bytesWritten&&(t.bytesWritten=new i.LongBits(e.bytesWritten.low>>>0,e.bytesWritten.high>>>0).toNumber(!0))),null!=e.bytesOverwritten&&(i.Long?(t.bytesOverwritten=i.Long.fromValue(e.bytesOverwritten)).unsigned=!0:\"string\"==typeof e.bytesOverwritten?t.bytesOverwritten=parseInt(e.bytesOverwritten,10):\"number\"==typeof e.bytesOverwritten?t.bytesOverwritten=e.bytesOverwritten:\"object\"==typeof e.bytesOverwritten&&(t.bytesOverwritten=new i.LongBits(e.bytesOverwritten.low>>>0,e.bytesOverwritten.high>>>0).toNumber(!0))),null!=e.bytesRead&&(i.Long?(t.bytesRead=i.Long.fromValue(e.bytesRead)).unsigned=!0:\"string\"==typeof e.bytesRead?t.bytesRead=parseInt(e.bytesRead,10):\"number\"==typeof e.bytesRead?t.bytesRead=e.bytesRead:\"object\"==typeof e.bytesRead&&(t.bytesRead=new i.LongBits(e.bytesRead.low>>>0,e.bytesRead.high>>>0).toNumber(!0))),null!=e.paddingBytesWritten&&(i.Long?(t.paddingBytesWritten=i.Long.fromValue(e.paddingBytesWritten)).unsigned=!0:\"string\"==typeof e.paddingBytesWritten?t.paddingBytesWritten=parseInt(e.paddingBytesWritten,10):\"number\"==typeof e.paddingBytesWritten?t.paddingBytesWritten=e.paddingBytesWritten:\"object\"==typeof e.paddingBytesWritten&&(t.paddingBytesWritten=new i.LongBits(e.paddingBytesWritten.low>>>0,e.paddingBytesWritten.high>>>0).toNumber(!0))),null!=e.paddingBytesCleared&&(i.Long?(t.paddingBytesCleared=i.Long.fromValue(e.paddingBytesCleared)).unsigned=!0:\"string\"==typeof e.paddingBytesCleared?t.paddingBytesCleared=parseInt(e.paddingBytesCleared,10):\"number\"==typeof e.paddingBytesCleared?t.paddingBytesCleared=e.paddingBytesCleared:\"object\"==typeof e.paddingBytesCleared&&(t.paddingBytesCleared=new i.LongBits(e.paddingBytesCleared.low>>>0,e.paddingBytesCleared.high>>>0).toNumber(!0))),null!=e.chunksWritten&&(i.Long?(t.chunksWritten=i.Long.fromValue(e.chunksWritten)).unsigned=!0:\"string\"==typeof e.chunksWritten?t.chunksWritten=parseInt(e.chunksWritten,10):\"number\"==typeof e.chunksWritten?t.chunksWritten=e.chunksWritten:\"object\"==typeof e.chunksWritten&&(t.chunksWritten=new i.LongBits(e.chunksWritten.low>>>0,e.chunksWritten.high>>>0).toNumber(!0))),null!=e.chunksRewritten&&(i.Long?(t.chunksRewritten=i.Long.fromValue(e.chunksRewritten)).unsigned=!0:\"string\"==typeof e.chunksRewritten?t.chunksRewritten=parseInt(e.chunksRewritten,10):\"number\"==typeof e.chunksRewritten?t.chunksRewritten=e.chunksRewritten:\"object\"==typeof e.chunksRewritten&&(t.chunksRewritten=new i.LongBits(e.chunksRewritten.low>>>0,e.chunksRewritten.high>>>0).toNumber(!0))),null!=e.chunksOverwritten&&(i.Long?(t.chunksOverwritten=i.Long.fromValue(e.chunksOverwritten)).unsigned=!0:\"string\"==typeof e.chunksOverwritten?t.chunksOverwritten=parseInt(e.chunksOverwritten,10):\"number\"==typeof e.chunksOverwritten?t.chunksOverwritten=e.chunksOverwritten:\"object\"==typeof e.chunksOverwritten&&(t.chunksOverwritten=new i.LongBits(e.chunksOverwritten.low>>>0,e.chunksOverwritten.high>>>0).toNumber(!0))),null!=e.chunksDiscarded&&(i.Long?(t.chunksDiscarded=i.Long.fromValue(e.chunksDiscarded)).unsigned=!0:\"string\"==typeof e.chunksDiscarded?t.chunksDiscarded=parseInt(e.chunksDiscarded,10):\"number\"==typeof e.chunksDiscarded?t.chunksDiscarded=e.chunksDiscarded:\"object\"==typeof e.chunksDiscarded&&(t.chunksDiscarded=new i.LongBits(e.chunksDiscarded.low>>>0,e.chunksDiscarded.high>>>0).toNumber(!0))),null!=e.chunksRead&&(i.Long?(t.chunksRead=i.Long.fromValue(e.chunksRead)).unsigned=!0:\"string\"==typeof e.chunksRead?t.chunksRead=parseInt(e.chunksRead,10):\"number\"==typeof e.chunksRead?t.chunksRead=e.chunksRead:\"object\"==typeof e.chunksRead&&(t.chunksRead=new i.LongBits(e.chunksRead.low>>>0,e.chunksRead.high>>>0).toNumber(!0))),null!=e.chunksCommittedOutOfOrder&&(i.Long?(t.chunksCommittedOutOfOrder=i.Long.fromValue(e.chunksCommittedOutOfOrder)).unsigned=!0:\"string\"==typeof e.chunksCommittedOutOfOrder?t.chunksCommittedOutOfOrder=parseInt(e.chunksCommittedOutOfOrder,10):\"number\"==typeof e.chunksCommittedOutOfOrder?t.chunksCommittedOutOfOrder=e.chunksCommittedOutOfOrder:\"object\"==typeof e.chunksCommittedOutOfOrder&&(t.chunksCommittedOutOfOrder=new i.LongBits(e.chunksCommittedOutOfOrder.low>>>0,e.chunksCommittedOutOfOrder.high>>>0).toNumber(!0))),null!=e.writeWrapCount&&(i.Long?(t.writeWrapCount=i.Long.fromValue(e.writeWrapCount)).unsigned=!0:\"string\"==typeof e.writeWrapCount?t.writeWrapCount=parseInt(e.writeWrapCount,10):\"number\"==typeof e.writeWrapCount?t.writeWrapCount=e.writeWrapCount:\"object\"==typeof e.writeWrapCount&&(t.writeWrapCount=new i.LongBits(e.writeWrapCount.low>>>0,e.writeWrapCount.high>>>0).toNumber(!0))),null!=e.patchesSucceeded&&(i.Long?(t.patchesSucceeded=i.Long.fromValue(e.patchesSucceeded)).unsigned=!0:\"string\"==typeof e.patchesSucceeded?t.patchesSucceeded=parseInt(e.patchesSucceeded,10):\"number\"==typeof e.patchesSucceeded?t.patchesSucceeded=e.patchesSucceeded:\"object\"==typeof e.patchesSucceeded&&(t.patchesSucceeded=new i.LongBits(e.patchesSucceeded.low>>>0,e.patchesSucceeded.high>>>0).toNumber(!0))),null!=e.patchesFailed&&(i.Long?(t.patchesFailed=i.Long.fromValue(e.patchesFailed)).unsigned=!0:\"string\"==typeof e.patchesFailed?t.patchesFailed=parseInt(e.patchesFailed,10):\"number\"==typeof e.patchesFailed?t.patchesFailed=e.patchesFailed:\"object\"==typeof e.patchesFailed&&(t.patchesFailed=new i.LongBits(e.patchesFailed.low>>>0,e.patchesFailed.high>>>0).toNumber(!0))),null!=e.readaheadsSucceeded&&(i.Long?(t.readaheadsSucceeded=i.Long.fromValue(e.readaheadsSucceeded)).unsigned=!0:\"string\"==typeof e.readaheadsSucceeded?t.readaheadsSucceeded=parseInt(e.readaheadsSucceeded,10):\"number\"==typeof e.readaheadsSucceeded?t.readaheadsSucceeded=e.readaheadsSucceeded:\"object\"==typeof e.readaheadsSucceeded&&(t.readaheadsSucceeded=new i.LongBits(e.readaheadsSucceeded.low>>>0,e.readaheadsSucceeded.high>>>0).toNumber(!0))),null!=e.readaheadsFailed&&(i.Long?(t.readaheadsFailed=i.Long.fromValue(e.readaheadsFailed)).unsigned=!0:\"string\"==typeof e.readaheadsFailed?t.readaheadsFailed=parseInt(e.readaheadsFailed,10):\"number\"==typeof e.readaheadsFailed?t.readaheadsFailed=e.readaheadsFailed:\"object\"==typeof e.readaheadsFailed&&(t.readaheadsFailed=new i.LongBits(e.readaheadsFailed.low>>>0,e.readaheadsFailed.high>>>0).toNumber(!0))),null!=e.abiViolations&&(i.Long?(t.abiViolations=i.Long.fromValue(e.abiViolations)).unsigned=!0:\"string\"==typeof e.abiViolations?t.abiViolations=parseInt(e.abiViolations,10):\"number\"==typeof e.abiViolations?t.abiViolations=e.abiViolations:\"object\"==typeof e.abiViolations&&(t.abiViolations=new i.LongBits(e.abiViolations.low>>>0,e.abiViolations.high>>>0).toNumber(!0))),null!=e.traceWriterPacketLoss&&(i.Long?(t.traceWriterPacketLoss=i.Long.fromValue(e.traceWriterPacketLoss)).unsigned=!0:\"string\"==typeof e.traceWriterPacketLoss?t.traceWriterPacketLoss=parseInt(e.traceWriterPacketLoss,10):\"number\"==typeof e.traceWriterPacketLoss?t.traceWriterPacketLoss=e.traceWriterPacketLoss:\"object\"==typeof e.traceWriterPacketLoss&&(t.traceWriterPacketLoss=new i.LongBits(e.traceWriterPacketLoss.low>>>0,e.traceWriterPacketLoss.high>>>0).toNumber(!0))),t)},g.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!0),n.bytesWritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.bytesWritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksWritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksWritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksOverwritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksOverwritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.writeWrapCount=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.writeWrapCount=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.patchesSucceeded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.patchesSucceeded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.patchesFailed=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.patchesFailed=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.readaheadsSucceeded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.readaheadsSucceeded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.readaheadsFailed=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.readaheadsFailed=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.abiViolations=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.abiViolations=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksRewritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksRewritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksCommittedOutOfOrder=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksCommittedOutOfOrder=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.bufferSize=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.bufferSize=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.bytesOverwritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.bytesOverwritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.bytesRead=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.bytesRead=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.paddingBytesWritten=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.paddingBytesWritten=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.paddingBytesCleared=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.paddingBytesCleared=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksRead=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksRead=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.chunksDiscarded=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.chunksDiscarded=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.traceWriterPacketLoss=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.traceWriterPacketLoss=t.longs===String?\"0\":0),null!=e.bytesWritten&&e.hasOwnProperty(\"bytesWritten\")&&(\"number\"==typeof e.bytesWritten?n.bytesWritten=t.longs===String?String(e.bytesWritten):e.bytesWritten:n.bytesWritten=t.longs===String?i.Long.prototype.toString.call(e.bytesWritten):t.longs===Number?new i.LongBits(e.bytesWritten.low>>>0,e.bytesWritten.high>>>0).toNumber(!0):e.bytesWritten),null!=e.chunksWritten&&e.hasOwnProperty(\"chunksWritten\")&&(\"number\"==typeof e.chunksWritten?n.chunksWritten=t.longs===String?String(e.chunksWritten):e.chunksWritten:n.chunksWritten=t.longs===String?i.Long.prototype.toString.call(e.chunksWritten):t.longs===Number?new i.LongBits(e.chunksWritten.low>>>0,e.chunksWritten.high>>>0).toNumber(!0):e.chunksWritten),null!=e.chunksOverwritten&&e.hasOwnProperty(\"chunksOverwritten\")&&(\"number\"==typeof e.chunksOverwritten?n.chunksOverwritten=t.longs===String?String(e.chunksOverwritten):e.chunksOverwritten:n.chunksOverwritten=t.longs===String?i.Long.prototype.toString.call(e.chunksOverwritten):t.longs===Number?new i.LongBits(e.chunksOverwritten.low>>>0,e.chunksOverwritten.high>>>0).toNumber(!0):e.chunksOverwritten),null!=e.writeWrapCount&&e.hasOwnProperty(\"writeWrapCount\")&&(\"number\"==typeof e.writeWrapCount?n.writeWrapCount=t.longs===String?String(e.writeWrapCount):e.writeWrapCount:n.writeWrapCount=t.longs===String?i.Long.prototype.toString.call(e.writeWrapCount):t.longs===Number?new i.LongBits(e.writeWrapCount.low>>>0,e.writeWrapCount.high>>>0).toNumber(!0):e.writeWrapCount),null!=e.patchesSucceeded&&e.hasOwnProperty(\"patchesSucceeded\")&&(\"number\"==typeof e.patchesSucceeded?n.patchesSucceeded=t.longs===String?String(e.patchesSucceeded):e.patchesSucceeded:n.patchesSucceeded=t.longs===String?i.Long.prototype.toString.call(e.patchesSucceeded):t.longs===Number?new i.LongBits(e.patchesSucceeded.low>>>0,e.patchesSucceeded.high>>>0).toNumber(!0):e.patchesSucceeded),null!=e.patchesFailed&&e.hasOwnProperty(\"patchesFailed\")&&(\"number\"==typeof e.patchesFailed?n.patchesFailed=t.longs===String?String(e.patchesFailed):e.patchesFailed:n.patchesFailed=t.longs===String?i.Long.prototype.toString.call(e.patchesFailed):t.longs===Number?new i.LongBits(e.patchesFailed.low>>>0,e.patchesFailed.high>>>0).toNumber(!0):e.patchesFailed),null!=e.readaheadsSucceeded&&e.hasOwnProperty(\"readaheadsSucceeded\")&&(\"number\"==typeof e.readaheadsSucceeded?n.readaheadsSucceeded=t.longs===String?String(e.readaheadsSucceeded):e.readaheadsSucceeded:n.readaheadsSucceeded=t.longs===String?i.Long.prototype.toString.call(e.readaheadsSucceeded):t.longs===Number?new i.LongBits(e.readaheadsSucceeded.low>>>0,e.readaheadsSucceeded.high>>>0).toNumber(!0):e.readaheadsSucceeded),null!=e.readaheadsFailed&&e.hasOwnProperty(\"readaheadsFailed\")&&(\"number\"==typeof e.readaheadsFailed?n.readaheadsFailed=t.longs===String?String(e.readaheadsFailed):e.readaheadsFailed:n.readaheadsFailed=t.longs===String?i.Long.prototype.toString.call(e.readaheadsFailed):t.longs===Number?new i.LongBits(e.readaheadsFailed.low>>>0,e.readaheadsFailed.high>>>0).toNumber(!0):e.readaheadsFailed),null!=e.abiViolations&&e.hasOwnProperty(\"abiViolations\")&&(\"number\"==typeof e.abiViolations?n.abiViolations=t.longs===String?String(e.abiViolations):e.abiViolations:n.abiViolations=t.longs===String?i.Long.prototype.toString.call(e.abiViolations):t.longs===Number?new i.LongBits(e.abiViolations.low>>>0,e.abiViolations.high>>>0).toNumber(!0):e.abiViolations),null!=e.chunksRewritten&&e.hasOwnProperty(\"chunksRewritten\")&&(\"number\"==typeof e.chunksRewritten?n.chunksRewritten=t.longs===String?String(e.chunksRewritten):e.chunksRewritten:n.chunksRewritten=t.longs===String?i.Long.prototype.toString.call(e.chunksRewritten):t.longs===Number?new i.LongBits(e.chunksRewritten.low>>>0,e.chunksRewritten.high>>>0).toNumber(!0):e.chunksRewritten),null!=e.chunksCommittedOutOfOrder&&e.hasOwnProperty(\"chunksCommittedOutOfOrder\")&&(\"number\"==typeof e.chunksCommittedOutOfOrder?n.chunksCommittedOutOfOrder=t.longs===String?String(e.chunksCommittedOutOfOrder):e.chunksCommittedOutOfOrder:n.chunksCommittedOutOfOrder=t.longs===String?i.Long.prototype.toString.call(e.chunksCommittedOutOfOrder):t.longs===Number?new i.LongBits(e.chunksCommittedOutOfOrder.low>>>0,e.chunksCommittedOutOfOrder.high>>>0).toNumber(!0):e.chunksCommittedOutOfOrder),null!=e.bufferSize&&e.hasOwnProperty(\"bufferSize\")&&(\"number\"==typeof e.bufferSize?n.bufferSize=t.longs===String?String(e.bufferSize):e.bufferSize:n.bufferSize=t.longs===String?i.Long.prototype.toString.call(e.bufferSize):t.longs===Number?new i.LongBits(e.bufferSize.low>>>0,e.bufferSize.high>>>0).toNumber(!0):e.bufferSize),null!=e.bytesOverwritten&&e.hasOwnProperty(\"bytesOverwritten\")&&(\"number\"==typeof e.bytesOverwritten?n.bytesOverwritten=t.longs===String?String(e.bytesOverwritten):e.bytesOverwritten:n.bytesOverwritten=t.longs===String?i.Long.prototype.toString.call(e.bytesOverwritten):t.longs===Number?new i.LongBits(e.bytesOverwritten.low>>>0,e.bytesOverwritten.high>>>0).toNumber(!0):e.bytesOverwritten),null!=e.bytesRead&&e.hasOwnProperty(\"bytesRead\")&&(\"number\"==typeof e.bytesRead?n.bytesRead=t.longs===String?String(e.bytesRead):e.bytesRead:n.bytesRead=t.longs===String?i.Long.prototype.toString.call(e.bytesRead):t.longs===Number?new i.LongBits(e.bytesRead.low>>>0,e.bytesRead.high>>>0).toNumber(!0):e.bytesRead),null!=e.paddingBytesWritten&&e.hasOwnProperty(\"paddingBytesWritten\")&&(\"number\"==typeof e.paddingBytesWritten?n.paddingBytesWritten=t.longs===String?String(e.paddingBytesWritten):e.paddingBytesWritten:n.paddingBytesWritten=t.longs===String?i.Long.prototype.toString.call(e.paddingBytesWritten):t.longs===Number?new i.LongBits(e.paddingBytesWritten.low>>>0,e.paddingBytesWritten.high>>>0).toNumber(!0):e.paddingBytesWritten),null!=e.paddingBytesCleared&&e.hasOwnProperty(\"paddingBytesCleared\")&&(\"number\"==typeof e.paddingBytesCleared?n.paddingBytesCleared=t.longs===String?String(e.paddingBytesCleared):e.paddingBytesCleared:n.paddingBytesCleared=t.longs===String?i.Long.prototype.toString.call(e.paddingBytesCleared):t.longs===Number?new i.LongBits(e.paddingBytesCleared.low>>>0,e.paddingBytesCleared.high>>>0).toNumber(!0):e.paddingBytesCleared),null!=e.chunksRead&&e.hasOwnProperty(\"chunksRead\")&&(\"number\"==typeof e.chunksRead?n.chunksRead=t.longs===String?String(e.chunksRead):e.chunksRead:n.chunksRead=t.longs===String?i.Long.prototype.toString.call(e.chunksRead):t.longs===Number?new i.LongBits(e.chunksRead.low>>>0,e.chunksRead.high>>>0).toNumber(!0):e.chunksRead),null!=e.chunksDiscarded&&e.hasOwnProperty(\"chunksDiscarded\")&&(\"number\"==typeof e.chunksDiscarded?n.chunksDiscarded=t.longs===String?String(e.chunksDiscarded):e.chunksDiscarded:n.chunksDiscarded=t.longs===String?i.Long.prototype.toString.call(e.chunksDiscarded):t.longs===Number?new i.LongBits(e.chunksDiscarded.low>>>0,e.chunksDiscarded.high>>>0).toNumber(!0):e.chunksDiscarded),null!=e.traceWriterPacketLoss&&e.hasOwnProperty(\"traceWriterPacketLoss\")&&(\"number\"==typeof e.traceWriterPacketLoss?n.traceWriterPacketLoss=t.longs===String?String(e.traceWriterPacketLoss):e.traceWriterPacketLoss:n.traceWriterPacketLoss=t.longs===String?i.Long.prototype.toString.call(e.traceWriterPacketLoss):t.longs===Number?new i.LongBits(e.traceWriterPacketLoss.low>>>0,e.traceWriterPacketLoss.high>>>0).toNumber(!0):e.traceWriterPacketLoss),n},g.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},g.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceStats.BufferStats\"},g),m.WriterStats=(Ae.prototype.sequenceId=i.Long?i.Long.fromBits(0,0,!0):0,Ae.prototype.buffer=0,Ae.prototype.chunkPayloadHistogramCounts=i.emptyArray,Ae.prototype.chunkPayloadHistogramSum=i.emptyArray,Ae.create=function(e){return new Ae(e)},Ae.encode=function(e,t){if(t=t||a.create(),null!=e.sequenceId&&Object.hasOwnProperty.call(e,\"sequenceId\")&&t.uint32(8).uint64(e.sequenceId),null!=e.chunkPayloadHistogramCounts&&e.chunkPayloadHistogramCounts.length){t.uint32(18).fork();for(var r=0;r<e.chunkPayloadHistogramCounts.length;++r)t.uint64(e.chunkPayloadHistogramCounts[r]);t.ldelim()}if(null!=e.chunkPayloadHistogramSum&&e.chunkPayloadHistogramSum.length){t.uint32(26).fork();for(r=0;r<e.chunkPayloadHistogramSum.length;++r)t.int64(e.chunkPayloadHistogramSum[r]);t.ldelim()}return null!=e.buffer&&Object.hasOwnProperty.call(e,\"buffer\")&&t.uint32(32).uint32(e.buffer),t},Ae.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceStats.WriterStats;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sequenceId=e.uint64();break;case 4:n.buffer=e.uint32();break;case 2:if(n.chunkPayloadHistogramCounts&&n.chunkPayloadHistogramCounts.length||(n.chunkPayloadHistogramCounts=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.chunkPayloadHistogramCounts.push(e.uint64());else n.chunkPayloadHistogramCounts.push(e.uint64());break;case 3:if(n.chunkPayloadHistogramSum&&n.chunkPayloadHistogramSum.length||(n.chunkPayloadHistogramSum=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.chunkPayloadHistogramSum.push(e.int64());else n.chunkPayloadHistogramSum.push(e.int64());break;default:e.skipType(7&a)}}return n},Ae.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceStats.WriterStats)return e;var t=new s.perfetto.protos.TraceStats.WriterStats;if(null!=e.sequenceId&&(i.Long?(t.sequenceId=i.Long.fromValue(e.sequenceId)).unsigned=!0:\"string\"==typeof e.sequenceId?t.sequenceId=parseInt(e.sequenceId,10):\"number\"==typeof e.sequenceId?t.sequenceId=e.sequenceId:\"object\"==typeof e.sequenceId&&(t.sequenceId=new i.LongBits(e.sequenceId.low>>>0,e.sequenceId.high>>>0).toNumber(!0))),null!=e.buffer&&(t.buffer=e.buffer>>>0),e.chunkPayloadHistogramCounts){if(!Array.isArray(e.chunkPayloadHistogramCounts))throw TypeError(\".perfetto.protos.TraceStats.WriterStats.chunkPayloadHistogramCounts: array expected\");t.chunkPayloadHistogramCounts=[];for(var r=0;r<e.chunkPayloadHistogramCounts.length;++r)i.Long?(t.chunkPayloadHistogramCounts[r]=i.Long.fromValue(e.chunkPayloadHistogramCounts[r])).unsigned=!0:\"string\"==typeof e.chunkPayloadHistogramCounts[r]?t.chunkPayloadHistogramCounts[r]=parseInt(e.chunkPayloadHistogramCounts[r],10):\"number\"==typeof e.chunkPayloadHistogramCounts[r]?t.chunkPayloadHistogramCounts[r]=e.chunkPayloadHistogramCounts[r]:\"object\"==typeof e.chunkPayloadHistogramCounts[r]&&(t.chunkPayloadHistogramCounts[r]=new i.LongBits(e.chunkPayloadHistogramCounts[r].low>>>0,e.chunkPayloadHistogramCounts[r].high>>>0).toNumber(!0))}if(e.chunkPayloadHistogramSum){if(!Array.isArray(e.chunkPayloadHistogramSum))throw TypeError(\".perfetto.protos.TraceStats.WriterStats.chunkPayloadHistogramSum: array expected\");t.chunkPayloadHistogramSum=[];for(r=0;r<e.chunkPayloadHistogramSum.length;++r)i.Long?(t.chunkPayloadHistogramSum[r]=i.Long.fromValue(e.chunkPayloadHistogramSum[r])).unsigned=!1:\"string\"==typeof e.chunkPayloadHistogramSum[r]?t.chunkPayloadHistogramSum[r]=parseInt(e.chunkPayloadHistogramSum[r],10):\"number\"==typeof e.chunkPayloadHistogramSum[r]?t.chunkPayloadHistogramSum[r]=e.chunkPayloadHistogramSum[r]:\"object\"==typeof e.chunkPayloadHistogramSum[r]&&(t.chunkPayloadHistogramSum[r]=new i.LongBits(e.chunkPayloadHistogramSum[r].low>>>0,e.chunkPayloadHistogramSum[r].high>>>0).toNumber())}return t},Ae.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.chunkPayloadHistogramCounts=[],n.chunkPayloadHistogramSum=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.sequenceId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.sequenceId=t.longs===String?\"0\":0,n.buffer=0),null!=e.sequenceId&&e.hasOwnProperty(\"sequenceId\")&&(\"number\"==typeof e.sequenceId?n.sequenceId=t.longs===String?String(e.sequenceId):e.sequenceId:n.sequenceId=t.longs===String?i.Long.prototype.toString.call(e.sequenceId):t.longs===Number?new i.LongBits(e.sequenceId.low>>>0,e.sequenceId.high>>>0).toNumber(!0):e.sequenceId),e.chunkPayloadHistogramCounts&&e.chunkPayloadHistogramCounts.length){n.chunkPayloadHistogramCounts=[];for(var a=0;a<e.chunkPayloadHistogramCounts.length;++a)\"number\"==typeof e.chunkPayloadHistogramCounts[a]?n.chunkPayloadHistogramCounts[a]=t.longs===String?String(e.chunkPayloadHistogramCounts[a]):e.chunkPayloadHistogramCounts[a]:n.chunkPayloadHistogramCounts[a]=t.longs===String?i.Long.prototype.toString.call(e.chunkPayloadHistogramCounts[a]):t.longs===Number?new i.LongBits(e.chunkPayloadHistogramCounts[a].low>>>0,e.chunkPayloadHistogramCounts[a].high>>>0).toNumber(!0):e.chunkPayloadHistogramCounts[a]}if(e.chunkPayloadHistogramSum&&e.chunkPayloadHistogramSum.length){n.chunkPayloadHistogramSum=[];for(a=0;a<e.chunkPayloadHistogramSum.length;++a)\"number\"==typeof e.chunkPayloadHistogramSum[a]?n.chunkPayloadHistogramSum[a]=t.longs===String?String(e.chunkPayloadHistogramSum[a]):e.chunkPayloadHistogramSum[a]:n.chunkPayloadHistogramSum[a]=t.longs===String?i.Long.prototype.toString.call(e.chunkPayloadHistogramSum[a]):t.longs===Number?new i.LongBits(e.chunkPayloadHistogramSum[a].low>>>0,e.chunkPayloadHistogramSum[a].high>>>0).toNumber():e.chunkPayloadHistogramSum[a]}return null!=e.buffer&&e.hasOwnProperty(\"buffer\")&&(n.buffer=e.buffer),n},Ae.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ae.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceStats.WriterStats\"},Ae),m.FilterStats=(Oe.prototype.inputPackets=i.Long?i.Long.fromBits(0,0,!0):0,Oe.prototype.inputBytes=i.Long?i.Long.fromBits(0,0,!0):0,Oe.prototype.outputBytes=i.Long?i.Long.fromBits(0,0,!0):0,Oe.prototype.errors=i.Long?i.Long.fromBits(0,0,!0):0,Oe.prototype.timeTakenNs=i.Long?i.Long.fromBits(0,0,!0):0,Oe.prototype.bytesDiscardedPerBuffer=i.emptyArray,Oe.create=function(e){return new Oe(e)},Oe.encode=function(e,t){if(t=t||a.create(),null!=e.inputPackets&&Object.hasOwnProperty.call(e,\"inputPackets\")&&t.uint32(8).uint64(e.inputPackets),null!=e.inputBytes&&Object.hasOwnProperty.call(e,\"inputBytes\")&&t.uint32(16).uint64(e.inputBytes),null!=e.outputBytes&&Object.hasOwnProperty.call(e,\"outputBytes\")&&t.uint32(24).uint64(e.outputBytes),null!=e.errors&&Object.hasOwnProperty.call(e,\"errors\")&&t.uint32(32).uint64(e.errors),null!=e.timeTakenNs&&Object.hasOwnProperty.call(e,\"timeTakenNs\")&&t.uint32(40).uint64(e.timeTakenNs),null!=e.bytesDiscardedPerBuffer&&e.bytesDiscardedPerBuffer.length)for(var r=0;r<e.bytesDiscardedPerBuffer.length;++r)t.uint32(160).uint64(e.bytesDiscardedPerBuffer[r]);return t},Oe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceStats.FilterStats;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.inputPackets=e.uint64();break;case 2:n.inputBytes=e.uint64();break;case 3:n.outputBytes=e.uint64();break;case 4:n.errors=e.uint64();break;case 5:n.timeTakenNs=e.uint64();break;case 20:if(n.bytesDiscardedPerBuffer&&n.bytesDiscardedPerBuffer.length||(n.bytesDiscardedPerBuffer=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.bytesDiscardedPerBuffer.push(e.uint64());else n.bytesDiscardedPerBuffer.push(e.uint64());break;default:e.skipType(7&a)}}return n},Oe.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceStats.FilterStats)return e;var t=new s.perfetto.protos.TraceStats.FilterStats;if(null!=e.inputPackets&&(i.Long?(t.inputPackets=i.Long.fromValue(e.inputPackets)).unsigned=!0:\"string\"==typeof e.inputPackets?t.inputPackets=parseInt(e.inputPackets,10):\"number\"==typeof e.inputPackets?t.inputPackets=e.inputPackets:\"object\"==typeof e.inputPackets&&(t.inputPackets=new i.LongBits(e.inputPackets.low>>>0,e.inputPackets.high>>>0).toNumber(!0))),null!=e.inputBytes&&(i.Long?(t.inputBytes=i.Long.fromValue(e.inputBytes)).unsigned=!0:\"string\"==typeof e.inputBytes?t.inputBytes=parseInt(e.inputBytes,10):\"number\"==typeof e.inputBytes?t.inputBytes=e.inputBytes:\"object\"==typeof e.inputBytes&&(t.inputBytes=new i.LongBits(e.inputBytes.low>>>0,e.inputBytes.high>>>0).toNumber(!0))),null!=e.outputBytes&&(i.Long?(t.outputBytes=i.Long.fromValue(e.outputBytes)).unsigned=!0:\"string\"==typeof e.outputBytes?t.outputBytes=parseInt(e.outputBytes,10):\"number\"==typeof e.outputBytes?t.outputBytes=e.outputBytes:\"object\"==typeof e.outputBytes&&(t.outputBytes=new i.LongBits(e.outputBytes.low>>>0,e.outputBytes.high>>>0).toNumber(!0))),null!=e.errors&&(i.Long?(t.errors=i.Long.fromValue(e.errors)).unsigned=!0:\"string\"==typeof e.errors?t.errors=parseInt(e.errors,10):\"number\"==typeof e.errors?t.errors=e.errors:\"object\"==typeof e.errors&&(t.errors=new i.LongBits(e.errors.low>>>0,e.errors.high>>>0).toNumber(!0))),null!=e.timeTakenNs&&(i.Long?(t.timeTakenNs=i.Long.fromValue(e.timeTakenNs)).unsigned=!0:\"string\"==typeof e.timeTakenNs?t.timeTakenNs=parseInt(e.timeTakenNs,10):\"number\"==typeof e.timeTakenNs?t.timeTakenNs=e.timeTakenNs:\"object\"==typeof e.timeTakenNs&&(t.timeTakenNs=new i.LongBits(e.timeTakenNs.low>>>0,e.timeTakenNs.high>>>0).toNumber(!0))),e.bytesDiscardedPerBuffer){if(!Array.isArray(e.bytesDiscardedPerBuffer))throw TypeError(\".perfetto.protos.TraceStats.FilterStats.bytesDiscardedPerBuffer: array expected\");t.bytesDiscardedPerBuffer=[];for(var r=0;r<e.bytesDiscardedPerBuffer.length;++r)i.Long?(t.bytesDiscardedPerBuffer[r]=i.Long.fromValue(e.bytesDiscardedPerBuffer[r])).unsigned=!0:\"string\"==typeof e.bytesDiscardedPerBuffer[r]?t.bytesDiscardedPerBuffer[r]=parseInt(e.bytesDiscardedPerBuffer[r],10):\"number\"==typeof e.bytesDiscardedPerBuffer[r]?t.bytesDiscardedPerBuffer[r]=e.bytesDiscardedPerBuffer[r]:\"object\"==typeof e.bytesDiscardedPerBuffer[r]&&(t.bytesDiscardedPerBuffer[r]=new i.LongBits(e.bytesDiscardedPerBuffer[r].low>>>0,e.bytesDiscardedPerBuffer[r].high>>>0).toNumber(!0))}return t},Oe.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.bytesDiscardedPerBuffer=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.inputPackets=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.inputPackets=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.inputBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.inputBytes=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.outputBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.outputBytes=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.errors=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.errors=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.timeTakenNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.timeTakenNs=t.longs===String?\"0\":0),null!=e.inputPackets&&e.hasOwnProperty(\"inputPackets\")&&(\"number\"==typeof e.inputPackets?n.inputPackets=t.longs===String?String(e.inputPackets):e.inputPackets:n.inputPackets=t.longs===String?i.Long.prototype.toString.call(e.inputPackets):t.longs===Number?new i.LongBits(e.inputPackets.low>>>0,e.inputPackets.high>>>0).toNumber(!0):e.inputPackets),null!=e.inputBytes&&e.hasOwnProperty(\"inputBytes\")&&(\"number\"==typeof e.inputBytes?n.inputBytes=t.longs===String?String(e.inputBytes):e.inputBytes:n.inputBytes=t.longs===String?i.Long.prototype.toString.call(e.inputBytes):t.longs===Number?new i.LongBits(e.inputBytes.low>>>0,e.inputBytes.high>>>0).toNumber(!0):e.inputBytes),null!=e.outputBytes&&e.hasOwnProperty(\"outputBytes\")&&(\"number\"==typeof e.outputBytes?n.outputBytes=t.longs===String?String(e.outputBytes):e.outputBytes:n.outputBytes=t.longs===String?i.Long.prototype.toString.call(e.outputBytes):t.longs===Number?new i.LongBits(e.outputBytes.low>>>0,e.outputBytes.high>>>0).toNumber(!0):e.outputBytes),null!=e.errors&&e.hasOwnProperty(\"errors\")&&(\"number\"==typeof e.errors?n.errors=t.longs===String?String(e.errors):e.errors:n.errors=t.longs===String?i.Long.prototype.toString.call(e.errors):t.longs===Number?new i.LongBits(e.errors.low>>>0,e.errors.high>>>0).toNumber(!0):e.errors),null!=e.timeTakenNs&&e.hasOwnProperty(\"timeTakenNs\")&&(\"number\"==typeof e.timeTakenNs?n.timeTakenNs=t.longs===String?String(e.timeTakenNs):e.timeTakenNs:n.timeTakenNs=t.longs===String?i.Long.prototype.toString.call(e.timeTakenNs):t.longs===Number?new i.LongBits(e.timeTakenNs.low>>>0,e.timeTakenNs.high>>>0).toNumber(!0):e.timeTakenNs),e.bytesDiscardedPerBuffer&&e.bytesDiscardedPerBuffer.length){n.bytesDiscardedPerBuffer=[];for(var a=0;a<e.bytesDiscardedPerBuffer.length;++a)\"number\"==typeof e.bytesDiscardedPerBuffer[a]?n.bytesDiscardedPerBuffer[a]=t.longs===String?String(e.bytesDiscardedPerBuffer[a]):e.bytesDiscardedPerBuffer[a]:n.bytesDiscardedPerBuffer[a]=t.longs===String?i.Long.prototype.toString.call(e.bytesDiscardedPerBuffer[a]):t.longs===Number?new i.LongBits(e.bytesDiscardedPerBuffer[a].low>>>0,e.bytesDiscardedPerBuffer[a].high>>>0).toNumber(!0):e.bytesDiscardedPerBuffer[a]}return n},Oe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Oe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceStats.FilterStats\"},Oe),m.FinalFlushOutcome=(t={},(e=Object.create(t))[t[0]=\"FINAL_FLUSH_UNSPECIFIED\"]=0,e[t[1]=\"FINAL_FLUSH_SUCCEEDED\"]=1,e[t[2]=\"FINAL_FLUSH_FAILED\"]=2,e),m),r.TraceConfig=(_.prototype.buffers=i.emptyArray,_.prototype.dataSources=i.emptyArray,_.prototype.builtinDataSources=null,_.prototype.durationMs=0,_.prototype.preferSuspendClockForDuration=!1,_.prototype.enableExtraGuardrails=!1,_.prototype.lockdownMode=0,_.prototype.producers=i.emptyArray,_.prototype.statsdMetadata=null,_.prototype.writeIntoFile=!1,_.prototype.outputPath=\"\",_.prototype.fileWritePeriodMs=0,_.prototype.maxFileSizeBytes=i.Long?i.Long.fromBits(0,0,!0):0,_.prototype.guardrailOverrides=null,_.prototype.deferredStart=!1,_.prototype.flushPeriodMs=0,_.prototype.flushTimeoutMs=0,_.prototype.dataSourceStopTimeoutMs=0,_.prototype.notifyTraceur=!1,_.prototype.bugreportScore=0,_.prototype.bugreportFilename=\"\",_.prototype.triggerConfig=null,_.prototype.activateTriggers=i.emptyArray,_.prototype.incrementalStateConfig=null,_.prototype.allowUserBuildTracing=!1,_.prototype.uniqueSessionName=\"\",_.prototype.compressionType=0,_.prototype.incidentReportConfig=null,_.prototype.statsdLogging=0,_.prototype.traceUuidMsb=i.Long?i.Long.fromBits(0,0,!1):0,_.prototype.traceUuidLsb=i.Long?i.Long.fromBits(0,0,!1):0,_.prototype.traceFilter=null,_.prototype.androidReportConfig=null,_.prototype.cmdTraceStartDelay=null,_.prototype.sessionSemaphores=i.emptyArray,_.prototype.priorityBoost=null,_.prototype.exclusivePrio=0,_.create=function(e){return new _(e)},_.encode=function(e,t){if(t=t||a.create(),null!=e.buffers&&e.buffers.length)for(var r=0;r<e.buffers.length;++r)s.perfetto.protos.TraceConfig.BufferConfig.encode(e.buffers[r],t.uint32(10).fork()).ldelim();if(null!=e.dataSources&&e.dataSources.length)for(r=0;r<e.dataSources.length;++r)s.perfetto.protos.TraceConfig.DataSource.encode(e.dataSources[r],t.uint32(18).fork()).ldelim();if(null!=e.durationMs&&Object.hasOwnProperty.call(e,\"durationMs\")&&t.uint32(24).uint32(e.durationMs),null!=e.enableExtraGuardrails&&Object.hasOwnProperty.call(e,\"enableExtraGuardrails\")&&t.uint32(32).bool(e.enableExtraGuardrails),null!=e.lockdownMode&&Object.hasOwnProperty.call(e,\"lockdownMode\")&&t.uint32(40).int32(e.lockdownMode),null!=e.producers&&e.producers.length)for(r=0;r<e.producers.length;++r)s.perfetto.protos.TraceConfig.ProducerConfig.encode(e.producers[r],t.uint32(50).fork()).ldelim();if(null!=e.statsdMetadata&&Object.hasOwnProperty.call(e,\"statsdMetadata\")&&s.perfetto.protos.TraceConfig.StatsdMetadata.encode(e.statsdMetadata,t.uint32(58).fork()).ldelim(),null!=e.writeIntoFile&&Object.hasOwnProperty.call(e,\"writeIntoFile\")&&t.uint32(64).bool(e.writeIntoFile),null!=e.fileWritePeriodMs&&Object.hasOwnProperty.call(e,\"fileWritePeriodMs\")&&t.uint32(72).uint32(e.fileWritePeriodMs),null!=e.maxFileSizeBytes&&Object.hasOwnProperty.call(e,\"maxFileSizeBytes\")&&t.uint32(80).uint64(e.maxFileSizeBytes),null!=e.guardrailOverrides&&Object.hasOwnProperty.call(e,\"guardrailOverrides\")&&s.perfetto.protos.TraceConfig.GuardrailOverrides.encode(e.guardrailOverrides,t.uint32(90).fork()).ldelim(),null!=e.deferredStart&&Object.hasOwnProperty.call(e,\"deferredStart\")&&t.uint32(96).bool(e.deferredStart),null!=e.flushPeriodMs&&Object.hasOwnProperty.call(e,\"flushPeriodMs\")&&t.uint32(104).uint32(e.flushPeriodMs),null!=e.flushTimeoutMs&&Object.hasOwnProperty.call(e,\"flushTimeoutMs\")&&t.uint32(112).uint32(e.flushTimeoutMs),null!=e.notifyTraceur&&Object.hasOwnProperty.call(e,\"notifyTraceur\")&&t.uint32(128).bool(e.notifyTraceur),null!=e.triggerConfig&&Object.hasOwnProperty.call(e,\"triggerConfig\")&&s.perfetto.protos.TraceConfig.TriggerConfig.encode(e.triggerConfig,t.uint32(138).fork()).ldelim(),null!=e.activateTriggers&&e.activateTriggers.length)for(r=0;r<e.activateTriggers.length;++r)t.uint32(146).string(e.activateTriggers[r]);if(null!=e.allowUserBuildTracing&&Object.hasOwnProperty.call(e,\"allowUserBuildTracing\")&&t.uint32(152).bool(e.allowUserBuildTracing),null!=e.builtinDataSources&&Object.hasOwnProperty.call(e,\"builtinDataSources\")&&s.perfetto.protos.TraceConfig.BuiltinDataSource.encode(e.builtinDataSources,t.uint32(162).fork()).ldelim(),null!=e.incrementalStateConfig&&Object.hasOwnProperty.call(e,\"incrementalStateConfig\")&&s.perfetto.protos.TraceConfig.IncrementalStateConfig.encode(e.incrementalStateConfig,t.uint32(170).fork()).ldelim(),null!=e.uniqueSessionName&&Object.hasOwnProperty.call(e,\"uniqueSessionName\")&&t.uint32(178).string(e.uniqueSessionName),null!=e.dataSourceStopTimeoutMs&&Object.hasOwnProperty.call(e,\"dataSourceStopTimeoutMs\")&&t.uint32(184).uint32(e.dataSourceStopTimeoutMs),null!=e.compressionType&&Object.hasOwnProperty.call(e,\"compressionType\")&&t.uint32(192).int32(e.compressionType),null!=e.incidentReportConfig&&Object.hasOwnProperty.call(e,\"incidentReportConfig\")&&s.perfetto.protos.TraceConfig.IncidentReportConfig.encode(e.incidentReportConfig,t.uint32(202).fork()).ldelim(),null!=e.traceUuidMsb&&Object.hasOwnProperty.call(e,\"traceUuidMsb\")&&t.uint32(216).int64(e.traceUuidMsb),null!=e.traceUuidLsb&&Object.hasOwnProperty.call(e,\"traceUuidLsb\")&&t.uint32(224).int64(e.traceUuidLsb),null!=e.outputPath&&Object.hasOwnProperty.call(e,\"outputPath\")&&t.uint32(234).string(e.outputPath),null!=e.bugreportScore&&Object.hasOwnProperty.call(e,\"bugreportScore\")&&t.uint32(240).int32(e.bugreportScore),null!=e.statsdLogging&&Object.hasOwnProperty.call(e,\"statsdLogging\")&&t.uint32(248).int32(e.statsdLogging),null!=e.traceFilter&&Object.hasOwnProperty.call(e,\"traceFilter\")&&s.perfetto.protos.TraceConfig.TraceFilter.encode(e.traceFilter,t.uint32(266).fork()).ldelim(),null!=e.androidReportConfig&&Object.hasOwnProperty.call(e,\"androidReportConfig\")&&s.perfetto.protos.TraceConfig.AndroidReportConfig.encode(e.androidReportConfig,t.uint32(274).fork()).ldelim(),null!=e.cmdTraceStartDelay&&Object.hasOwnProperty.call(e,\"cmdTraceStartDelay\")&&s.perfetto.protos.TraceConfig.CmdTraceStartDelay.encode(e.cmdTraceStartDelay,t.uint32(282).fork()).ldelim(),null!=e.preferSuspendClockForDuration&&Object.hasOwnProperty.call(e,\"preferSuspendClockForDuration\")&&t.uint32(288).bool(e.preferSuspendClockForDuration),null!=e.bugreportFilename&&Object.hasOwnProperty.call(e,\"bugreportFilename\")&&t.uint32(306).string(e.bugreportFilename),null!=e.sessionSemaphores&&e.sessionSemaphores.length)for(r=0;r<e.sessionSemaphores.length;++r)s.perfetto.protos.TraceConfig.SessionSemaphore.encode(e.sessionSemaphores[r],t.uint32(314).fork()).ldelim();return null!=e.priorityBoost&&Object.hasOwnProperty.call(e,\"priorityBoost\")&&s.perfetto.protos.PriorityBoostConfig.encode(e.priorityBoost,t.uint32(322).fork()).ldelim(),null!=e.exclusivePrio&&Object.hasOwnProperty.call(e,\"exclusivePrio\")&&t.uint32(328).uint32(e.exclusivePrio),t},_.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.buffers&&n.buffers.length||(n.buffers=[]),n.buffers.push(s.perfetto.protos.TraceConfig.BufferConfig.decode(e,e.uint32()));break;case 2:n.dataSources&&n.dataSources.length||(n.dataSources=[]),n.dataSources.push(s.perfetto.protos.TraceConfig.DataSource.decode(e,e.uint32()));break;case 20:n.builtinDataSources=s.perfetto.protos.TraceConfig.BuiltinDataSource.decode(e,e.uint32());break;case 3:n.durationMs=e.uint32();break;case 36:n.preferSuspendClockForDuration=e.bool();break;case 4:n.enableExtraGuardrails=e.bool();break;case 5:n.lockdownMode=e.int32();break;case 6:n.producers&&n.producers.length||(n.producers=[]),n.producers.push(s.perfetto.protos.TraceConfig.ProducerConfig.decode(e,e.uint32()));break;case 7:n.statsdMetadata=s.perfetto.protos.TraceConfig.StatsdMetadata.decode(e,e.uint32());break;case 8:n.writeIntoFile=e.bool();break;case 29:n.outputPath=e.string();break;case 9:n.fileWritePeriodMs=e.uint32();break;case 10:n.maxFileSizeBytes=e.uint64();break;case 11:n.guardrailOverrides=s.perfetto.protos.TraceConfig.GuardrailOverrides.decode(e,e.uint32());break;case 12:n.deferredStart=e.bool();break;case 13:n.flushPeriodMs=e.uint32();break;case 14:n.flushTimeoutMs=e.uint32();break;case 23:n.dataSourceStopTimeoutMs=e.uint32();break;case 16:n.notifyTraceur=e.bool();break;case 30:n.bugreportScore=e.int32();break;case 38:n.bugreportFilename=e.string();break;case 17:n.triggerConfig=s.perfetto.protos.TraceConfig.TriggerConfig.decode(e,e.uint32());break;case 18:n.activateTriggers&&n.activateTriggers.length||(n.activateTriggers=[]),n.activateTriggers.push(e.string());break;case 21:n.incrementalStateConfig=s.perfetto.protos.TraceConfig.IncrementalStateConfig.decode(e,e.uint32());break;case 19:n.allowUserBuildTracing=e.bool();break;case 22:n.uniqueSessionName=e.string();break;case 24:n.compressionType=e.int32();break;case 25:n.incidentReportConfig=s.perfetto.protos.TraceConfig.IncidentReportConfig.decode(e,e.uint32());break;case 31:n.statsdLogging=e.int32();break;case 27:n.traceUuidMsb=e.int64();break;case 28:n.traceUuidLsb=e.int64();break;case 33:n.traceFilter=s.perfetto.protos.TraceConfig.TraceFilter.decode(e,e.uint32());break;case 34:n.androidReportConfig=s.perfetto.protos.TraceConfig.AndroidReportConfig.decode(e,e.uint32());break;case 35:n.cmdTraceStartDelay=s.perfetto.protos.TraceConfig.CmdTraceStartDelay.decode(e,e.uint32());break;case 39:n.sessionSemaphores&&n.sessionSemaphores.length||(n.sessionSemaphores=[]),n.sessionSemaphores.push(s.perfetto.protos.TraceConfig.SessionSemaphore.decode(e,e.uint32()));break;case 40:n.priorityBoost=s.perfetto.protos.PriorityBoostConfig.decode(e,e.uint32());break;case 41:n.exclusivePrio=e.uint32();break;default:e.skipType(7&a)}}return n},_.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig)return e;var t=new s.perfetto.protos.TraceConfig;if(e.buffers){if(!Array.isArray(e.buffers))throw TypeError(\".perfetto.protos.TraceConfig.buffers: array expected\");t.buffers=[];for(var r=0;r<e.buffers.length;++r){if(\"object\"!=typeof e.buffers[r])throw TypeError(\".perfetto.protos.TraceConfig.buffers: object expected\");t.buffers[r]=s.perfetto.protos.TraceConfig.BufferConfig.fromObject(e.buffers[r])}}if(e.dataSources){if(!Array.isArray(e.dataSources))throw TypeError(\".perfetto.protos.TraceConfig.dataSources: array expected\");t.dataSources=[];for(r=0;r<e.dataSources.length;++r){if(\"object\"!=typeof e.dataSources[r])throw TypeError(\".perfetto.protos.TraceConfig.dataSources: object expected\");t.dataSources[r]=s.perfetto.protos.TraceConfig.DataSource.fromObject(e.dataSources[r])}}if(null!=e.builtinDataSources){if(\"object\"!=typeof e.builtinDataSources)throw TypeError(\".perfetto.protos.TraceConfig.builtinDataSources: object expected\");t.builtinDataSources=s.perfetto.protos.TraceConfig.BuiltinDataSource.fromObject(e.builtinDataSources)}switch(null!=e.durationMs&&(t.durationMs=e.durationMs>>>0),null!=e.preferSuspendClockForDuration&&(t.preferSuspendClockForDuration=Boolean(e.preferSuspendClockForDuration)),null!=e.enableExtraGuardrails&&(t.enableExtraGuardrails=Boolean(e.enableExtraGuardrails)),e.lockdownMode){default:\"number\"==typeof e.lockdownMode&&(t.lockdownMode=e.lockdownMode);break;case\"LOCKDOWN_UNCHANGED\":case 0:t.lockdownMode=0;break;case\"LOCKDOWN_CLEAR\":case 1:t.lockdownMode=1;break;case\"LOCKDOWN_SET\":case 2:t.lockdownMode=2}if(e.producers){if(!Array.isArray(e.producers))throw TypeError(\".perfetto.protos.TraceConfig.producers: array expected\");t.producers=[];for(r=0;r<e.producers.length;++r){if(\"object\"!=typeof e.producers[r])throw TypeError(\".perfetto.protos.TraceConfig.producers: object expected\");t.producers[r]=s.perfetto.protos.TraceConfig.ProducerConfig.fromObject(e.producers[r])}}if(null!=e.statsdMetadata){if(\"object\"!=typeof e.statsdMetadata)throw TypeError(\".perfetto.protos.TraceConfig.statsdMetadata: object expected\");t.statsdMetadata=s.perfetto.protos.TraceConfig.StatsdMetadata.fromObject(e.statsdMetadata)}if(null!=e.writeIntoFile&&(t.writeIntoFile=Boolean(e.writeIntoFile)),null!=e.outputPath&&(t.outputPath=String(e.outputPath)),null!=e.fileWritePeriodMs&&(t.fileWritePeriodMs=e.fileWritePeriodMs>>>0),null!=e.maxFileSizeBytes&&(i.Long?(t.maxFileSizeBytes=i.Long.fromValue(e.maxFileSizeBytes)).unsigned=!0:\"string\"==typeof e.maxFileSizeBytes?t.maxFileSizeBytes=parseInt(e.maxFileSizeBytes,10):\"number\"==typeof e.maxFileSizeBytes?t.maxFileSizeBytes=e.maxFileSizeBytes:\"object\"==typeof e.maxFileSizeBytes&&(t.maxFileSizeBytes=new i.LongBits(e.maxFileSizeBytes.low>>>0,e.maxFileSizeBytes.high>>>0).toNumber(!0))),null!=e.guardrailOverrides){if(\"object\"!=typeof e.guardrailOverrides)throw TypeError(\".perfetto.protos.TraceConfig.guardrailOverrides: object expected\");t.guardrailOverrides=s.perfetto.protos.TraceConfig.GuardrailOverrides.fromObject(e.guardrailOverrides)}if(null!=e.deferredStart&&(t.deferredStart=Boolean(e.deferredStart)),null!=e.flushPeriodMs&&(t.flushPeriodMs=e.flushPeriodMs>>>0),null!=e.flushTimeoutMs&&(t.flushTimeoutMs=e.flushTimeoutMs>>>0),null!=e.dataSourceStopTimeoutMs&&(t.dataSourceStopTimeoutMs=e.dataSourceStopTimeoutMs>>>0),null!=e.notifyTraceur&&(t.notifyTraceur=Boolean(e.notifyTraceur)),null!=e.bugreportScore&&(t.bugreportScore=0|e.bugreportScore),null!=e.bugreportFilename&&(t.bugreportFilename=String(e.bugreportFilename)),null!=e.triggerConfig){if(\"object\"!=typeof e.triggerConfig)throw TypeError(\".perfetto.protos.TraceConfig.triggerConfig: object expected\");t.triggerConfig=s.perfetto.protos.TraceConfig.TriggerConfig.fromObject(e.triggerConfig)}if(e.activateTriggers){if(!Array.isArray(e.activateTriggers))throw TypeError(\".perfetto.protos.TraceConfig.activateTriggers: array expected\");t.activateTriggers=[];for(r=0;r<e.activateTriggers.length;++r)t.activateTriggers[r]=String(e.activateTriggers[r])}if(null!=e.incrementalStateConfig){if(\"object\"!=typeof e.incrementalStateConfig)throw TypeError(\".perfetto.protos.TraceConfig.incrementalStateConfig: object expected\");t.incrementalStateConfig=s.perfetto.protos.TraceConfig.IncrementalStateConfig.fromObject(e.incrementalStateConfig)}switch(null!=e.allowUserBuildTracing&&(t.allowUserBuildTracing=Boolean(e.allowUserBuildTracing)),null!=e.uniqueSessionName&&(t.uniqueSessionName=String(e.uniqueSessionName)),e.compressionType){default:\"number\"==typeof e.compressionType&&(t.compressionType=e.compressionType);break;case\"COMPRESSION_TYPE_UNSPECIFIED\":case 0:t.compressionType=0;break;case\"COMPRESSION_TYPE_DEFLATE\":case 1:t.compressionType=1}if(null!=e.incidentReportConfig){if(\"object\"!=typeof e.incidentReportConfig)throw TypeError(\".perfetto.protos.TraceConfig.incidentReportConfig: object expected\");t.incidentReportConfig=s.perfetto.protos.TraceConfig.IncidentReportConfig.fromObject(e.incidentReportConfig)}switch(e.statsdLogging){default:\"number\"==typeof e.statsdLogging&&(t.statsdLogging=e.statsdLogging);break;case\"STATSD_LOGGING_UNSPECIFIED\":case 0:t.statsdLogging=0;break;case\"STATSD_LOGGING_ENABLED\":case 1:t.statsdLogging=1;break;case\"STATSD_LOGGING_DISABLED\":case 2:t.statsdLogging=2}if(null!=e.traceUuidMsb&&(i.Long?(t.traceUuidMsb=i.Long.fromValue(e.traceUuidMsb)).unsigned=!1:\"string\"==typeof e.traceUuidMsb?t.traceUuidMsb=parseInt(e.traceUuidMsb,10):\"number\"==typeof e.traceUuidMsb?t.traceUuidMsb=e.traceUuidMsb:\"object\"==typeof e.traceUuidMsb&&(t.traceUuidMsb=new i.LongBits(e.traceUuidMsb.low>>>0,e.traceUuidMsb.high>>>0).toNumber())),null!=e.traceUuidLsb&&(i.Long?(t.traceUuidLsb=i.Long.fromValue(e.traceUuidLsb)).unsigned=!1:\"string\"==typeof e.traceUuidLsb?t.traceUuidLsb=parseInt(e.traceUuidLsb,10):\"number\"==typeof e.traceUuidLsb?t.traceUuidLsb=e.traceUuidLsb:\"object\"==typeof e.traceUuidLsb&&(t.traceUuidLsb=new i.LongBits(e.traceUuidLsb.low>>>0,e.traceUuidLsb.high>>>0).toNumber())),null!=e.traceFilter){if(\"object\"!=typeof e.traceFilter)throw TypeError(\".perfetto.protos.TraceConfig.traceFilter: object expected\");t.traceFilter=s.perfetto.protos.TraceConfig.TraceFilter.fromObject(e.traceFilter)}if(null!=e.androidReportConfig){if(\"object\"!=typeof e.androidReportConfig)throw TypeError(\".perfetto.protos.TraceConfig.androidReportConfig: object expected\");t.androidReportConfig=s.perfetto.protos.TraceConfig.AndroidReportConfig.fromObject(e.androidReportConfig)}if(null!=e.cmdTraceStartDelay){if(\"object\"!=typeof e.cmdTraceStartDelay)throw TypeError(\".perfetto.protos.TraceConfig.cmdTraceStartDelay: object expected\");t.cmdTraceStartDelay=s.perfetto.protos.TraceConfig.CmdTraceStartDelay.fromObject(e.cmdTraceStartDelay)}if(e.sessionSemaphores){if(!Array.isArray(e.sessionSemaphores))throw TypeError(\".perfetto.protos.TraceConfig.sessionSemaphores: array expected\");t.sessionSemaphores=[];for(r=0;r<e.sessionSemaphores.length;++r){if(\"object\"!=typeof e.sessionSemaphores[r])throw TypeError(\".perfetto.protos.TraceConfig.sessionSemaphores: object expected\");t.sessionSemaphores[r]=s.perfetto.protos.TraceConfig.SessionSemaphore.fromObject(e.sessionSemaphores[r])}}if(null!=e.priorityBoost){if(\"object\"!=typeof e.priorityBoost)throw TypeError(\".perfetto.protos.TraceConfig.priorityBoost: object expected\");t.priorityBoost=s.perfetto.protos.PriorityBoostConfig.fromObject(e.priorityBoost)}return null!=e.exclusivePrio&&(t.exclusivePrio=e.exclusivePrio>>>0),t},_.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.buffers=[],n.dataSources=[],n.producers=[],n.activateTriggers=[],n.sessionSemaphores=[]),t.defaults&&(n.durationMs=0,n.enableExtraGuardrails=!1,n.lockdownMode=t.enums===String?\"LOCKDOWN_UNCHANGED\":0,n.statsdMetadata=null,n.writeIntoFile=!1,n.fileWritePeriodMs=0,i.Long?(r=new i.Long(0,0,!0),n.maxFileSizeBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxFileSizeBytes=t.longs===String?\"0\":0,n.guardrailOverrides=null,n.deferredStart=!1,n.flushPeriodMs=0,n.flushTimeoutMs=0,n.notifyTraceur=!1,n.triggerConfig=null,n.allowUserBuildTracing=!1,n.builtinDataSources=null,n.incrementalStateConfig=null,n.uniqueSessionName=\"\",n.dataSourceStopTimeoutMs=0,n.compressionType=t.enums===String?\"COMPRESSION_TYPE_UNSPECIFIED\":0,n.incidentReportConfig=null,i.Long?(r=new i.Long(0,0,!1),n.traceUuidMsb=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.traceUuidMsb=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.traceUuidLsb=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.traceUuidLsb=t.longs===String?\"0\":0,n.outputPath=\"\",n.bugreportScore=0,n.statsdLogging=t.enums===String?\"STATSD_LOGGING_UNSPECIFIED\":0,n.traceFilter=null,n.androidReportConfig=null,n.cmdTraceStartDelay=null,n.preferSuspendClockForDuration=!1,n.bugreportFilename=\"\",n.priorityBoost=null,n.exclusivePrio=0),e.buffers&&e.buffers.length){n.buffers=[];for(var a=0;a<e.buffers.length;++a)n.buffers[a]=s.perfetto.protos.TraceConfig.BufferConfig.toObject(e.buffers[a],t)}if(e.dataSources&&e.dataSources.length){n.dataSources=[];for(a=0;a<e.dataSources.length;++a)n.dataSources[a]=s.perfetto.protos.TraceConfig.DataSource.toObject(e.dataSources[a],t)}if(null!=e.durationMs&&e.hasOwnProperty(\"durationMs\")&&(n.durationMs=e.durationMs),null!=e.enableExtraGuardrails&&e.hasOwnProperty(\"enableExtraGuardrails\")&&(n.enableExtraGuardrails=e.enableExtraGuardrails),null!=e.lockdownMode&&e.hasOwnProperty(\"lockdownMode\")&&(n.lockdownMode=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.LockdownModeOperation[e.lockdownMode]?e.lockdownMode:s.perfetto.protos.TraceConfig.LockdownModeOperation[e.lockdownMode]),e.producers&&e.producers.length){n.producers=[];for(a=0;a<e.producers.length;++a)n.producers[a]=s.perfetto.protos.TraceConfig.ProducerConfig.toObject(e.producers[a],t)}if(null!=e.statsdMetadata&&e.hasOwnProperty(\"statsdMetadata\")&&(n.statsdMetadata=s.perfetto.protos.TraceConfig.StatsdMetadata.toObject(e.statsdMetadata,t)),null!=e.writeIntoFile&&e.hasOwnProperty(\"writeIntoFile\")&&(n.writeIntoFile=e.writeIntoFile),null!=e.fileWritePeriodMs&&e.hasOwnProperty(\"fileWritePeriodMs\")&&(n.fileWritePeriodMs=e.fileWritePeriodMs),null!=e.maxFileSizeBytes&&e.hasOwnProperty(\"maxFileSizeBytes\")&&(\"number\"==typeof e.maxFileSizeBytes?n.maxFileSizeBytes=t.longs===String?String(e.maxFileSizeBytes):e.maxFileSizeBytes:n.maxFileSizeBytes=t.longs===String?i.Long.prototype.toString.call(e.maxFileSizeBytes):t.longs===Number?new i.LongBits(e.maxFileSizeBytes.low>>>0,e.maxFileSizeBytes.high>>>0).toNumber(!0):e.maxFileSizeBytes),null!=e.guardrailOverrides&&e.hasOwnProperty(\"guardrailOverrides\")&&(n.guardrailOverrides=s.perfetto.protos.TraceConfig.GuardrailOverrides.toObject(e.guardrailOverrides,t)),null!=e.deferredStart&&e.hasOwnProperty(\"deferredStart\")&&(n.deferredStart=e.deferredStart),null!=e.flushPeriodMs&&e.hasOwnProperty(\"flushPeriodMs\")&&(n.flushPeriodMs=e.flushPeriodMs),null!=e.flushTimeoutMs&&e.hasOwnProperty(\"flushTimeoutMs\")&&(n.flushTimeoutMs=e.flushTimeoutMs),null!=e.notifyTraceur&&e.hasOwnProperty(\"notifyTraceur\")&&(n.notifyTraceur=e.notifyTraceur),null!=e.triggerConfig&&e.hasOwnProperty(\"triggerConfig\")&&(n.triggerConfig=s.perfetto.protos.TraceConfig.TriggerConfig.toObject(e.triggerConfig,t)),e.activateTriggers&&e.activateTriggers.length){n.activateTriggers=[];for(a=0;a<e.activateTriggers.length;++a)n.activateTriggers[a]=e.activateTriggers[a]}if(null!=e.allowUserBuildTracing&&e.hasOwnProperty(\"allowUserBuildTracing\")&&(n.allowUserBuildTracing=e.allowUserBuildTracing),null!=e.builtinDataSources&&e.hasOwnProperty(\"builtinDataSources\")&&(n.builtinDataSources=s.perfetto.protos.TraceConfig.BuiltinDataSource.toObject(e.builtinDataSources,t)),null!=e.incrementalStateConfig&&e.hasOwnProperty(\"incrementalStateConfig\")&&(n.incrementalStateConfig=s.perfetto.protos.TraceConfig.IncrementalStateConfig.toObject(e.incrementalStateConfig,t)),null!=e.uniqueSessionName&&e.hasOwnProperty(\"uniqueSessionName\")&&(n.uniqueSessionName=e.uniqueSessionName),null!=e.dataSourceStopTimeoutMs&&e.hasOwnProperty(\"dataSourceStopTimeoutMs\")&&(n.dataSourceStopTimeoutMs=e.dataSourceStopTimeoutMs),null!=e.compressionType&&e.hasOwnProperty(\"compressionType\")&&(n.compressionType=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.CompressionType[e.compressionType]?e.compressionType:s.perfetto.protos.TraceConfig.CompressionType[e.compressionType]),null!=e.incidentReportConfig&&e.hasOwnProperty(\"incidentReportConfig\")&&(n.incidentReportConfig=s.perfetto.protos.TraceConfig.IncidentReportConfig.toObject(e.incidentReportConfig,t)),null!=e.traceUuidMsb&&e.hasOwnProperty(\"traceUuidMsb\")&&(\"number\"==typeof e.traceUuidMsb?n.traceUuidMsb=t.longs===String?String(e.traceUuidMsb):e.traceUuidMsb:n.traceUuidMsb=t.longs===String?i.Long.prototype.toString.call(e.traceUuidMsb):t.longs===Number?new i.LongBits(e.traceUuidMsb.low>>>0,e.traceUuidMsb.high>>>0).toNumber():e.traceUuidMsb),null!=e.traceUuidLsb&&e.hasOwnProperty(\"traceUuidLsb\")&&(\"number\"==typeof e.traceUuidLsb?n.traceUuidLsb=t.longs===String?String(e.traceUuidLsb):e.traceUuidLsb:n.traceUuidLsb=t.longs===String?i.Long.prototype.toString.call(e.traceUuidLsb):t.longs===Number?new i.LongBits(e.traceUuidLsb.low>>>0,e.traceUuidLsb.high>>>0).toNumber():e.traceUuidLsb),null!=e.outputPath&&e.hasOwnProperty(\"outputPath\")&&(n.outputPath=e.outputPath),null!=e.bugreportScore&&e.hasOwnProperty(\"bugreportScore\")&&(n.bugreportScore=e.bugreportScore),null!=e.statsdLogging&&e.hasOwnProperty(\"statsdLogging\")&&(n.statsdLogging=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.StatsdLogging[e.statsdLogging]?e.statsdLogging:s.perfetto.protos.TraceConfig.StatsdLogging[e.statsdLogging]),null!=e.traceFilter&&e.hasOwnProperty(\"traceFilter\")&&(n.traceFilter=s.perfetto.protos.TraceConfig.TraceFilter.toObject(e.traceFilter,t)),null!=e.androidReportConfig&&e.hasOwnProperty(\"androidReportConfig\")&&(n.androidReportConfig=s.perfetto.protos.TraceConfig.AndroidReportConfig.toObject(e.androidReportConfig,t)),null!=e.cmdTraceStartDelay&&e.hasOwnProperty(\"cmdTraceStartDelay\")&&(n.cmdTraceStartDelay=s.perfetto.protos.TraceConfig.CmdTraceStartDelay.toObject(e.cmdTraceStartDelay,t)),null!=e.preferSuspendClockForDuration&&e.hasOwnProperty(\"preferSuspendClockForDuration\")&&(n.preferSuspendClockForDuration=e.preferSuspendClockForDuration),null!=e.bugreportFilename&&e.hasOwnProperty(\"bugreportFilename\")&&(n.bugreportFilename=e.bugreportFilename),e.sessionSemaphores&&e.sessionSemaphores.length){n.sessionSemaphores=[];for(a=0;a<e.sessionSemaphores.length;++a)n.sessionSemaphores[a]=s.perfetto.protos.TraceConfig.SessionSemaphore.toObject(e.sessionSemaphores[a],t)}return null!=e.priorityBoost&&e.hasOwnProperty(\"priorityBoost\")&&(n.priorityBoost=s.perfetto.protos.PriorityBoostConfig.toObject(e.priorityBoost,t)),null!=e.exclusivePrio&&e.hasOwnProperty(\"exclusivePrio\")&&(n.exclusivePrio=e.exclusivePrio),n},_.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},_.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig\"},_.BufferConfig=(Ce.prototype.sizeKb=0,Ce.prototype.fillPolicy=0,Ce.prototype.transferOnClone=!1,Ce.prototype.clearBeforeClone=!1,Ce.create=function(e){return new Ce(e)},Ce.encode=function(e,t){return t=t||a.create(),null!=e.sizeKb&&Object.hasOwnProperty.call(e,\"sizeKb\")&&t.uint32(8).uint32(e.sizeKb),null!=e.fillPolicy&&Object.hasOwnProperty.call(e,\"fillPolicy\")&&t.uint32(32).int32(e.fillPolicy),null!=e.transferOnClone&&Object.hasOwnProperty.call(e,\"transferOnClone\")&&t.uint32(40).bool(e.transferOnClone),null!=e.clearBeforeClone&&Object.hasOwnProperty.call(e,\"clearBeforeClone\")&&t.uint32(48).bool(e.clearBeforeClone),t},Ce.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.BufferConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sizeKb=e.uint32();break;case 4:n.fillPolicy=e.int32();break;case 5:n.transferOnClone=e.bool();break;case 6:n.clearBeforeClone=e.bool();break;default:e.skipType(7&a)}}return n},Ce.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.BufferConfig)return e;var t=new s.perfetto.protos.TraceConfig.BufferConfig;switch(null!=e.sizeKb&&(t.sizeKb=e.sizeKb>>>0),e.fillPolicy){default:\"number\"==typeof e.fillPolicy&&(t.fillPolicy=e.fillPolicy);break;case\"UNSPECIFIED\":case 0:t.fillPolicy=0;break;case\"RING_BUFFER\":case 1:t.fillPolicy=1;break;case\"DISCARD\":case 2:t.fillPolicy=2}return null!=e.transferOnClone&&(t.transferOnClone=Boolean(e.transferOnClone)),null!=e.clearBeforeClone&&(t.clearBeforeClone=Boolean(e.clearBeforeClone)),t},Ce.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.sizeKb=0,r.fillPolicy=t.enums===String?\"UNSPECIFIED\":0,r.transferOnClone=!1,r.clearBeforeClone=!1),null!=e.sizeKb&&e.hasOwnProperty(\"sizeKb\")&&(r.sizeKb=e.sizeKb),null!=e.fillPolicy&&e.hasOwnProperty(\"fillPolicy\")&&(r.fillPolicy=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.BufferConfig.FillPolicy[e.fillPolicy]?e.fillPolicy:s.perfetto.protos.TraceConfig.BufferConfig.FillPolicy[e.fillPolicy]),null!=e.transferOnClone&&e.hasOwnProperty(\"transferOnClone\")&&(r.transferOnClone=e.transferOnClone),null!=e.clearBeforeClone&&e.hasOwnProperty(\"clearBeforeClone\")&&(r.clearBeforeClone=e.clearBeforeClone),r},Ce.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ce.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.BufferConfig\"},Ce.FillPolicy=(t={},(e=Object.create(t))[t[0]=\"UNSPECIFIED\"]=0,e[t[1]=\"RING_BUFFER\"]=1,e[t[2]=\"DISCARD\"]=2,e),Ce),_.DataSource=(we.prototype.config=null,we.prototype.producerNameFilter=i.emptyArray,we.prototype.producerNameRegexFilter=i.emptyArray,we.prototype.machineNameFilter=i.emptyArray,we.create=function(e){return new we(e)},we.encode=function(e,t){if(t=t||a.create(),null!=e.config&&Object.hasOwnProperty.call(e,\"config\")&&s.perfetto.protos.DataSourceConfig.encode(e.config,t.uint32(10).fork()).ldelim(),null!=e.producerNameFilter&&e.producerNameFilter.length)for(var r=0;r<e.producerNameFilter.length;++r)t.uint32(18).string(e.producerNameFilter[r]);if(null!=e.producerNameRegexFilter&&e.producerNameRegexFilter.length)for(r=0;r<e.producerNameRegexFilter.length;++r)t.uint32(26).string(e.producerNameRegexFilter[r]);if(null!=e.machineNameFilter&&e.machineNameFilter.length)for(r=0;r<e.machineNameFilter.length;++r)t.uint32(34).string(e.machineNameFilter[r]);return t},we.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.DataSource;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.config=s.perfetto.protos.DataSourceConfig.decode(e,e.uint32());break;case 2:n.producerNameFilter&&n.producerNameFilter.length||(n.producerNameFilter=[]),n.producerNameFilter.push(e.string());break;case 3:n.producerNameRegexFilter&&n.producerNameRegexFilter.length||(n.producerNameRegexFilter=[]),n.producerNameRegexFilter.push(e.string());break;case 4:n.machineNameFilter&&n.machineNameFilter.length||(n.machineNameFilter=[]),n.machineNameFilter.push(e.string());break;default:e.skipType(7&a)}}return n},we.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.DataSource)return e;var t=new s.perfetto.protos.TraceConfig.DataSource;if(null!=e.config){if(\"object\"!=typeof e.config)throw TypeError(\".perfetto.protos.TraceConfig.DataSource.config: object expected\");t.config=s.perfetto.protos.DataSourceConfig.fromObject(e.config)}if(e.producerNameFilter){if(!Array.isArray(e.producerNameFilter))throw TypeError(\".perfetto.protos.TraceConfig.DataSource.producerNameFilter: array expected\");t.producerNameFilter=[];for(var r=0;r<e.producerNameFilter.length;++r)t.producerNameFilter[r]=String(e.producerNameFilter[r])}if(e.producerNameRegexFilter){if(!Array.isArray(e.producerNameRegexFilter))throw TypeError(\".perfetto.protos.TraceConfig.DataSource.producerNameRegexFilter: array expected\");t.producerNameRegexFilter=[];for(r=0;r<e.producerNameRegexFilter.length;++r)t.producerNameRegexFilter[r]=String(e.producerNameRegexFilter[r])}if(e.machineNameFilter){if(!Array.isArray(e.machineNameFilter))throw TypeError(\".perfetto.protos.TraceConfig.DataSource.machineNameFilter: array expected\");t.machineNameFilter=[];for(r=0;r<e.machineNameFilter.length;++r)t.machineNameFilter[r]=String(e.machineNameFilter[r])}return t},we.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.producerNameFilter=[],r.producerNameRegexFilter=[],r.machineNameFilter=[]),t.defaults&&(r.config=null),null!=e.config&&e.hasOwnProperty(\"config\")&&(r.config=s.perfetto.protos.DataSourceConfig.toObject(e.config,t)),e.producerNameFilter&&e.producerNameFilter.length){r.producerNameFilter=[];for(var n=0;n<e.producerNameFilter.length;++n)r.producerNameFilter[n]=e.producerNameFilter[n]}if(e.producerNameRegexFilter&&e.producerNameRegexFilter.length){r.producerNameRegexFilter=[];for(n=0;n<e.producerNameRegexFilter.length;++n)r.producerNameRegexFilter[n]=e.producerNameRegexFilter[n]}if(e.machineNameFilter&&e.machineNameFilter.length){r.machineNameFilter=[];for(n=0;n<e.machineNameFilter.length;++n)r.machineNameFilter[n]=e.machineNameFilter[n]}return r},we.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},we.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.DataSource\"},we),_.BuiltinDataSource=(y.prototype.disableClockSnapshotting=!1,y.prototype.disableTraceConfig=!1,y.prototype.disableSystemInfo=!1,y.prototype.disableServiceEvents=!1,y.prototype.primaryTraceClock=0,y.prototype.snapshotIntervalMs=0,y.prototype.preferSuspendClockForSnapshot=!1,y.prototype.disableChunkUsageHistograms=!1,y.create=function(e){return new y(e)},y.encode=function(e,t){return t=t||a.create(),null!=e.disableClockSnapshotting&&Object.hasOwnProperty.call(e,\"disableClockSnapshotting\")&&t.uint32(8).bool(e.disableClockSnapshotting),null!=e.disableTraceConfig&&Object.hasOwnProperty.call(e,\"disableTraceConfig\")&&t.uint32(16).bool(e.disableTraceConfig),null!=e.disableSystemInfo&&Object.hasOwnProperty.call(e,\"disableSystemInfo\")&&t.uint32(24).bool(e.disableSystemInfo),null!=e.disableServiceEvents&&Object.hasOwnProperty.call(e,\"disableServiceEvents\")&&t.uint32(32).bool(e.disableServiceEvents),null!=e.primaryTraceClock&&Object.hasOwnProperty.call(e,\"primaryTraceClock\")&&t.uint32(40).int32(e.primaryTraceClock),null!=e.snapshotIntervalMs&&Object.hasOwnProperty.call(e,\"snapshotIntervalMs\")&&t.uint32(48).uint32(e.snapshotIntervalMs),null!=e.preferSuspendClockForSnapshot&&Object.hasOwnProperty.call(e,\"preferSuspendClockForSnapshot\")&&t.uint32(56).bool(e.preferSuspendClockForSnapshot),null!=e.disableChunkUsageHistograms&&Object.hasOwnProperty.call(e,\"disableChunkUsageHistograms\")&&t.uint32(64).bool(e.disableChunkUsageHistograms),t},y.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.BuiltinDataSource;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.disableClockSnapshotting=e.bool();break;case 2:n.disableTraceConfig=e.bool();break;case 3:n.disableSystemInfo=e.bool();break;case 4:n.disableServiceEvents=e.bool();break;case 5:n.primaryTraceClock=e.int32();break;case 6:n.snapshotIntervalMs=e.uint32();break;case 7:n.preferSuspendClockForSnapshot=e.bool();break;case 8:n.disableChunkUsageHistograms=e.bool();break;default:e.skipType(7&a)}}return n},y.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.BuiltinDataSource)return e;var t=new s.perfetto.protos.TraceConfig.BuiltinDataSource;switch(null!=e.disableClockSnapshotting&&(t.disableClockSnapshotting=Boolean(e.disableClockSnapshotting)),null!=e.disableTraceConfig&&(t.disableTraceConfig=Boolean(e.disableTraceConfig)),null!=e.disableSystemInfo&&(t.disableSystemInfo=Boolean(e.disableSystemInfo)),null!=e.disableServiceEvents&&(t.disableServiceEvents=Boolean(e.disableServiceEvents)),e.primaryTraceClock){default:\"number\"==typeof e.primaryTraceClock&&(t.primaryTraceClock=e.primaryTraceClock);break;case\"BUILTIN_CLOCK_UNKNOWN\":case 0:t.primaryTraceClock=0;break;case\"BUILTIN_CLOCK_REALTIME\":case 1:t.primaryTraceClock=1;break;case\"BUILTIN_CLOCK_REALTIME_COARSE\":case 2:t.primaryTraceClock=2;break;case\"BUILTIN_CLOCK_MONOTONIC\":case 3:t.primaryTraceClock=3;break;case\"BUILTIN_CLOCK_MONOTONIC_COARSE\":case 4:t.primaryTraceClock=4;break;case\"BUILTIN_CLOCK_MONOTONIC_RAW\":case 5:t.primaryTraceClock=5;break;case\"BUILTIN_CLOCK_BOOTTIME\":case 6:t.primaryTraceClock=6;break;case\"BUILTIN_CLOCK_TSC\":case 9:t.primaryTraceClock=9;break;case\"BUILTIN_CLOCK_PERF\":case 10:t.primaryTraceClock=10;break;case\"BUILTIN_CLOCK_MAX_ID\":case 63:t.primaryTraceClock=63}return null!=e.snapshotIntervalMs&&(t.snapshotIntervalMs=e.snapshotIntervalMs>>>0),null!=e.preferSuspendClockForSnapshot&&(t.preferSuspendClockForSnapshot=Boolean(e.preferSuspendClockForSnapshot)),null!=e.disableChunkUsageHistograms&&(t.disableChunkUsageHistograms=Boolean(e.disableChunkUsageHistograms)),t},y.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.disableClockSnapshotting=!1,r.disableTraceConfig=!1,r.disableSystemInfo=!1,r.disableServiceEvents=!1,r.primaryTraceClock=t.enums===String?\"BUILTIN_CLOCK_UNKNOWN\":0,r.snapshotIntervalMs=0,r.preferSuspendClockForSnapshot=!1,r.disableChunkUsageHistograms=!1),null!=e.disableClockSnapshotting&&e.hasOwnProperty(\"disableClockSnapshotting\")&&(r.disableClockSnapshotting=e.disableClockSnapshotting),null!=e.disableTraceConfig&&e.hasOwnProperty(\"disableTraceConfig\")&&(r.disableTraceConfig=e.disableTraceConfig),null!=e.disableSystemInfo&&e.hasOwnProperty(\"disableSystemInfo\")&&(r.disableSystemInfo=e.disableSystemInfo),null!=e.disableServiceEvents&&e.hasOwnProperty(\"disableServiceEvents\")&&(r.disableServiceEvents=e.disableServiceEvents),null!=e.primaryTraceClock&&e.hasOwnProperty(\"primaryTraceClock\")&&(r.primaryTraceClock=t.enums!==String||void 0===s.perfetto.protos.BuiltinClock[e.primaryTraceClock]?e.primaryTraceClock:s.perfetto.protos.BuiltinClock[e.primaryTraceClock]),null!=e.snapshotIntervalMs&&e.hasOwnProperty(\"snapshotIntervalMs\")&&(r.snapshotIntervalMs=e.snapshotIntervalMs),null!=e.preferSuspendClockForSnapshot&&e.hasOwnProperty(\"preferSuspendClockForSnapshot\")&&(r.preferSuspendClockForSnapshot=e.preferSuspendClockForSnapshot),null!=e.disableChunkUsageHistograms&&e.hasOwnProperty(\"disableChunkUsageHistograms\")&&(r.disableChunkUsageHistograms=e.disableChunkUsageHistograms),r},y.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},y.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.BuiltinDataSource\"},y),_.LockdownModeOperation=(t={},(e=Object.create(t))[t[0]=\"LOCKDOWN_UNCHANGED\"]=0,e[t[1]=\"LOCKDOWN_CLEAR\"]=1,e[t[2]=\"LOCKDOWN_SET\"]=2,e),_.ProducerConfig=(ke.prototype.producerName=\"\",ke.prototype.shmSizeKb=0,ke.prototype.pageSizeKb=0,ke.create=function(e){return new ke(e)},ke.encode=function(e,t){return t=t||a.create(),null!=e.producerName&&Object.hasOwnProperty.call(e,\"producerName\")&&t.uint32(10).string(e.producerName),null!=e.shmSizeKb&&Object.hasOwnProperty.call(e,\"shmSizeKb\")&&t.uint32(16).uint32(e.shmSizeKb),null!=e.pageSizeKb&&Object.hasOwnProperty.call(e,\"pageSizeKb\")&&t.uint32(24).uint32(e.pageSizeKb),t},ke.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.ProducerConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.producerName=e.string();break;case 2:n.shmSizeKb=e.uint32();break;case 3:n.pageSizeKb=e.uint32();break;default:e.skipType(7&a)}}return n},ke.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.ProducerConfig?e:(t=new s.perfetto.protos.TraceConfig.ProducerConfig,null!=e.producerName&&(t.producerName=String(e.producerName)),null!=e.shmSizeKb&&(t.shmSizeKb=e.shmSizeKb>>>0),null!=e.pageSizeKb&&(t.pageSizeKb=e.pageSizeKb>>>0),t)},ke.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.producerName=\"\",r.shmSizeKb=0,r.pageSizeKb=0),null!=e.producerName&&e.hasOwnProperty(\"producerName\")&&(r.producerName=e.producerName),null!=e.shmSizeKb&&e.hasOwnProperty(\"shmSizeKb\")&&(r.shmSizeKb=e.shmSizeKb),null!=e.pageSizeKb&&e.hasOwnProperty(\"pageSizeKb\")&&(r.pageSizeKb=e.pageSizeKb),r},ke.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ke.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.ProducerConfig\"},ke),_.StatsdMetadata=(Ie.prototype.triggeringAlertId=i.Long?i.Long.fromBits(0,0,!1):0,Ie.prototype.triggeringConfigUid=0,Ie.prototype.triggeringConfigId=i.Long?i.Long.fromBits(0,0,!1):0,Ie.prototype.triggeringSubscriptionId=i.Long?i.Long.fromBits(0,0,!1):0,Ie.create=function(e){return new Ie(e)},Ie.encode=function(e,t){return t=t||a.create(),null!=e.triggeringAlertId&&Object.hasOwnProperty.call(e,\"triggeringAlertId\")&&t.uint32(8).int64(e.triggeringAlertId),null!=e.triggeringConfigUid&&Object.hasOwnProperty.call(e,\"triggeringConfigUid\")&&t.uint32(16).int32(e.triggeringConfigUid),null!=e.triggeringConfigId&&Object.hasOwnProperty.call(e,\"triggeringConfigId\")&&t.uint32(24).int64(e.triggeringConfigId),null!=e.triggeringSubscriptionId&&Object.hasOwnProperty.call(e,\"triggeringSubscriptionId\")&&t.uint32(32).int64(e.triggeringSubscriptionId),t},Ie.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.StatsdMetadata;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.triggeringAlertId=e.int64();break;case 2:n.triggeringConfigUid=e.int32();break;case 3:n.triggeringConfigId=e.int64();break;case 4:n.triggeringSubscriptionId=e.int64();break;default:e.skipType(7&a)}}return n},Ie.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.StatsdMetadata?e:(t=new s.perfetto.protos.TraceConfig.StatsdMetadata,null!=e.triggeringAlertId&&(i.Long?(t.triggeringAlertId=i.Long.fromValue(e.triggeringAlertId)).unsigned=!1:\"string\"==typeof e.triggeringAlertId?t.triggeringAlertId=parseInt(e.triggeringAlertId,10):\"number\"==typeof e.triggeringAlertId?t.triggeringAlertId=e.triggeringAlertId:\"object\"==typeof e.triggeringAlertId&&(t.triggeringAlertId=new i.LongBits(e.triggeringAlertId.low>>>0,e.triggeringAlertId.high>>>0).toNumber())),null!=e.triggeringConfigUid&&(t.triggeringConfigUid=0|e.triggeringConfigUid),null!=e.triggeringConfigId&&(i.Long?(t.triggeringConfigId=i.Long.fromValue(e.triggeringConfigId)).unsigned=!1:\"string\"==typeof e.triggeringConfigId?t.triggeringConfigId=parseInt(e.triggeringConfigId,10):\"number\"==typeof e.triggeringConfigId?t.triggeringConfigId=e.triggeringConfigId:\"object\"==typeof e.triggeringConfigId&&(t.triggeringConfigId=new i.LongBits(e.triggeringConfigId.low>>>0,e.triggeringConfigId.high>>>0).toNumber())),null!=e.triggeringSubscriptionId&&(i.Long?(t.triggeringSubscriptionId=i.Long.fromValue(e.triggeringSubscriptionId)).unsigned=!1:\"string\"==typeof e.triggeringSubscriptionId?t.triggeringSubscriptionId=parseInt(e.triggeringSubscriptionId,10):\"number\"==typeof e.triggeringSubscriptionId?t.triggeringSubscriptionId=e.triggeringSubscriptionId:\"object\"==typeof e.triggeringSubscriptionId&&(t.triggeringSubscriptionId=new i.LongBits(e.triggeringSubscriptionId.low>>>0,e.triggeringSubscriptionId.high>>>0).toNumber())),t)},Ie.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!1),n.triggeringAlertId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.triggeringAlertId=t.longs===String?\"0\":0,n.triggeringConfigUid=0,i.Long?(r=new i.Long(0,0,!1),n.triggeringConfigId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.triggeringConfigId=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.triggeringSubscriptionId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.triggeringSubscriptionId=t.longs===String?\"0\":0),null!=e.triggeringAlertId&&e.hasOwnProperty(\"triggeringAlertId\")&&(\"number\"==typeof e.triggeringAlertId?n.triggeringAlertId=t.longs===String?String(e.triggeringAlertId):e.triggeringAlertId:n.triggeringAlertId=t.longs===String?i.Long.prototype.toString.call(e.triggeringAlertId):t.longs===Number?new i.LongBits(e.triggeringAlertId.low>>>0,e.triggeringAlertId.high>>>0).toNumber():e.triggeringAlertId),null!=e.triggeringConfigUid&&e.hasOwnProperty(\"triggeringConfigUid\")&&(n.triggeringConfigUid=e.triggeringConfigUid),null!=e.triggeringConfigId&&e.hasOwnProperty(\"triggeringConfigId\")&&(\"number\"==typeof e.triggeringConfigId?n.triggeringConfigId=t.longs===String?String(e.triggeringConfigId):e.triggeringConfigId:n.triggeringConfigId=t.longs===String?i.Long.prototype.toString.call(e.triggeringConfigId):t.longs===Number?new i.LongBits(e.triggeringConfigId.low>>>0,e.triggeringConfigId.high>>>0).toNumber():e.triggeringConfigId),null!=e.triggeringSubscriptionId&&e.hasOwnProperty(\"triggeringSubscriptionId\")&&(\"number\"==typeof e.triggeringSubscriptionId?n.triggeringSubscriptionId=t.longs===String?String(e.triggeringSubscriptionId):e.triggeringSubscriptionId:n.triggeringSubscriptionId=t.longs===String?i.Long.prototype.toString.call(e.triggeringSubscriptionId):t.longs===Number?new i.LongBits(e.triggeringSubscriptionId.low>>>0,e.triggeringSubscriptionId.high>>>0).toNumber():e.triggeringSubscriptionId),n},Ie.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ie.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.StatsdMetadata\"},Ie),_.GuardrailOverrides=(Re.prototype.maxUploadPerDayBytes=i.Long?i.Long.fromBits(0,0,!0):0,Re.prototype.maxTracingBufferSizeKb=0,Re.create=function(e){return new Re(e)},Re.encode=function(e,t){return t=t||a.create(),null!=e.maxUploadPerDayBytes&&Object.hasOwnProperty.call(e,\"maxUploadPerDayBytes\")&&t.uint32(8).uint64(e.maxUploadPerDayBytes),null!=e.maxTracingBufferSizeKb&&Object.hasOwnProperty.call(e,\"maxTracingBufferSizeKb\")&&t.uint32(16).uint32(e.maxTracingBufferSizeKb),t},Re.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.GuardrailOverrides;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.maxUploadPerDayBytes=e.uint64();break;case 2:n.maxTracingBufferSizeKb=e.uint32();break;default:e.skipType(7&a)}}return n},Re.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.GuardrailOverrides?e:(t=new s.perfetto.protos.TraceConfig.GuardrailOverrides,null!=e.maxUploadPerDayBytes&&(i.Long?(t.maxUploadPerDayBytes=i.Long.fromValue(e.maxUploadPerDayBytes)).unsigned=!0:\"string\"==typeof e.maxUploadPerDayBytes?t.maxUploadPerDayBytes=parseInt(e.maxUploadPerDayBytes,10):\"number\"==typeof e.maxUploadPerDayBytes?t.maxUploadPerDayBytes=e.maxUploadPerDayBytes:\"object\"==typeof e.maxUploadPerDayBytes&&(t.maxUploadPerDayBytes=new i.LongBits(e.maxUploadPerDayBytes.low>>>0,e.maxUploadPerDayBytes.high>>>0).toNumber(!0))),null!=e.maxTracingBufferSizeKb&&(t.maxTracingBufferSizeKb=e.maxTracingBufferSizeKb>>>0),t)},Re.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!0),n.maxUploadPerDayBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxUploadPerDayBytes=t.longs===String?\"0\":0,n.maxTracingBufferSizeKb=0),null!=e.maxUploadPerDayBytes&&e.hasOwnProperty(\"maxUploadPerDayBytes\")&&(\"number\"==typeof e.maxUploadPerDayBytes?n.maxUploadPerDayBytes=t.longs===String?String(e.maxUploadPerDayBytes):e.maxUploadPerDayBytes:n.maxUploadPerDayBytes=t.longs===String?i.Long.prototype.toString.call(e.maxUploadPerDayBytes):t.longs===Number?new i.LongBits(e.maxUploadPerDayBytes.low>>>0,e.maxUploadPerDayBytes.high>>>0).toNumber(!0):e.maxUploadPerDayBytes),null!=e.maxTracingBufferSizeKb&&e.hasOwnProperty(\"maxTracingBufferSizeKb\")&&(n.maxTracingBufferSizeKb=e.maxTracingBufferSizeKb),n},Re.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Re.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.GuardrailOverrides\"},Re),_.TriggerConfig=(Ne.prototype.triggerMode=0,Ne.prototype.useCloneSnapshotIfAvailable=!1,Ne.prototype.triggers=i.emptyArray,Ne.prototype.triggerTimeoutMs=0,Ne.create=function(e){return new Ne(e)},Ne.encode=function(e,t){if(t=t||a.create(),null!=e.triggerMode&&Object.hasOwnProperty.call(e,\"triggerMode\")&&t.uint32(8).int32(e.triggerMode),null!=e.triggers&&e.triggers.length)for(var r=0;r<e.triggers.length;++r)s.perfetto.protos.TraceConfig.TriggerConfig.Trigger.encode(e.triggers[r],t.uint32(18).fork()).ldelim();return null!=e.triggerTimeoutMs&&Object.hasOwnProperty.call(e,\"triggerTimeoutMs\")&&t.uint32(24).uint32(e.triggerTimeoutMs),null!=e.useCloneSnapshotIfAvailable&&Object.hasOwnProperty.call(e,\"useCloneSnapshotIfAvailable\")&&t.uint32(40).bool(e.useCloneSnapshotIfAvailable),t},Ne.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.TriggerConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.triggerMode=e.int32();break;case 5:n.useCloneSnapshotIfAvailable=e.bool();break;case 2:n.triggers&&n.triggers.length||(n.triggers=[]),n.triggers.push(s.perfetto.protos.TraceConfig.TriggerConfig.Trigger.decode(e,e.uint32()));break;case 3:n.triggerTimeoutMs=e.uint32();break;default:e.skipType(7&a)}}return n},Ne.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.TriggerConfig)return e;var t=new s.perfetto.protos.TraceConfig.TriggerConfig;switch(e.triggerMode){default:\"number\"==typeof e.triggerMode&&(t.triggerMode=e.triggerMode);break;case\"UNSPECIFIED\":case 0:t.triggerMode=0;break;case\"START_TRACING\":case 1:t.triggerMode=1;break;case\"STOP_TRACING\":case 2:t.triggerMode=2;break;case\"CLONE_SNAPSHOT\":case 4:t.triggerMode=4}if(null!=e.useCloneSnapshotIfAvailable&&(t.useCloneSnapshotIfAvailable=Boolean(e.useCloneSnapshotIfAvailable)),e.triggers){if(!Array.isArray(e.triggers))throw TypeError(\".perfetto.protos.TraceConfig.TriggerConfig.triggers: array expected\");t.triggers=[];for(var r=0;r<e.triggers.length;++r){if(\"object\"!=typeof e.triggers[r])throw TypeError(\".perfetto.protos.TraceConfig.TriggerConfig.triggers: object expected\");t.triggers[r]=s.perfetto.protos.TraceConfig.TriggerConfig.Trigger.fromObject(e.triggers[r])}}return null!=e.triggerTimeoutMs&&(t.triggerTimeoutMs=e.triggerTimeoutMs>>>0),t},Ne.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.triggers=[]),t.defaults&&(r.triggerMode=t.enums===String?\"UNSPECIFIED\":0,r.triggerTimeoutMs=0,r.useCloneSnapshotIfAvailable=!1),null!=e.triggerMode&&e.hasOwnProperty(\"triggerMode\")&&(r.triggerMode=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.TriggerConfig.TriggerMode[e.triggerMode]?e.triggerMode:s.perfetto.protos.TraceConfig.TriggerConfig.TriggerMode[e.triggerMode]),e.triggers&&e.triggers.length){r.triggers=[];for(var n=0;n<e.triggers.length;++n)r.triggers[n]=s.perfetto.protos.TraceConfig.TriggerConfig.Trigger.toObject(e.triggers[n],t)}return null!=e.triggerTimeoutMs&&e.hasOwnProperty(\"triggerTimeoutMs\")&&(r.triggerTimeoutMs=e.triggerTimeoutMs),null!=e.useCloneSnapshotIfAvailable&&e.hasOwnProperty(\"useCloneSnapshotIfAvailable\")&&(r.useCloneSnapshotIfAvailable=e.useCloneSnapshotIfAvailable),r},Ne.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ne.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.TriggerConfig\"},Ne.TriggerMode=(t={},(e=Object.create(t))[t[0]=\"UNSPECIFIED\"]=0,e[t[1]=\"START_TRACING\"]=1,e[t[2]=\"STOP_TRACING\"]=2,e[t[4]=\"CLONE_SNAPSHOT\"]=4,e),Ne.Trigger=(Me.prototype.name=\"\",Me.prototype.producerNameRegex=\"\",Me.prototype.stopDelayMs=0,Me.prototype.maxPer_24H=0,Me.prototype.skipProbability=0,Me.create=function(e){return new Me(e)},Me.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.producerNameRegex&&Object.hasOwnProperty.call(e,\"producerNameRegex\")&&t.uint32(18).string(e.producerNameRegex),null!=e.stopDelayMs&&Object.hasOwnProperty.call(e,\"stopDelayMs\")&&t.uint32(24).uint32(e.stopDelayMs),null!=e.maxPer_24H&&Object.hasOwnProperty.call(e,\"maxPer_24H\")&&t.uint32(32).uint32(e.maxPer_24H),null!=e.skipProbability&&Object.hasOwnProperty.call(e,\"skipProbability\")&&t.uint32(41).double(e.skipProbability),t},Me.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.TriggerConfig.Trigger;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.producerNameRegex=e.string();break;case 3:n.stopDelayMs=e.uint32();break;case 4:n.maxPer_24H=e.uint32();break;case 5:n.skipProbability=e.double();break;default:e.skipType(7&a)}}return n},Me.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.TriggerConfig.Trigger?e:(t=new s.perfetto.protos.TraceConfig.TriggerConfig.Trigger,null!=e.name&&(t.name=String(e.name)),null!=e.producerNameRegex&&(t.producerNameRegex=String(e.producerNameRegex)),null!=e.stopDelayMs&&(t.stopDelayMs=e.stopDelayMs>>>0),null!=e.maxPer_24H&&(t.maxPer_24H=e.maxPer_24H>>>0),null!=e.skipProbability&&(t.skipProbability=Number(e.skipProbability)),t)},Me.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.producerNameRegex=\"\",r.stopDelayMs=0,r.maxPer_24H=0,r.skipProbability=0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.producerNameRegex&&e.hasOwnProperty(\"producerNameRegex\")&&(r.producerNameRegex=e.producerNameRegex),null!=e.stopDelayMs&&e.hasOwnProperty(\"stopDelayMs\")&&(r.stopDelayMs=e.stopDelayMs),null!=e.maxPer_24H&&e.hasOwnProperty(\"maxPer_24H\")&&(r.maxPer_24H=e.maxPer_24H),null!=e.skipProbability&&e.hasOwnProperty(\"skipProbability\")&&(r.skipProbability=t.json&&!isFinite(e.skipProbability)?String(e.skipProbability):e.skipProbability),r},Me.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Me.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.TriggerConfig.Trigger\"},Me),Ne),_.IncrementalStateConfig=(Pe.prototype.clearPeriodMs=0,Pe.create=function(e){return new Pe(e)},Pe.encode=function(e,t){return t=t||a.create(),null!=e.clearPeriodMs&&Object.hasOwnProperty.call(e,\"clearPeriodMs\")&&t.uint32(8).uint32(e.clearPeriodMs),t},Pe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.IncrementalStateConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.clearPeriodMs=e.uint32():e.skipType(7&a)}return n},Pe.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.IncrementalStateConfig?e:(t=new s.perfetto.protos.TraceConfig.IncrementalStateConfig,null!=e.clearPeriodMs&&(t.clearPeriodMs=e.clearPeriodMs>>>0),t)},Pe.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.clearPeriodMs=0),null!=e.clearPeriodMs&&e.hasOwnProperty(\"clearPeriodMs\")&&(r.clearPeriodMs=e.clearPeriodMs),r},Pe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Pe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.IncrementalStateConfig\"},Pe),_.CompressionType=(t={},(e=Object.create(t))[t[0]=\"COMPRESSION_TYPE_UNSPECIFIED\"]=0,e[t[1]=\"COMPRESSION_TYPE_DEFLATE\"]=1,e),_.IncidentReportConfig=(De.prototype.destinationPackage=\"\",De.prototype.destinationClass=\"\",De.prototype.privacyLevel=0,De.prototype.skipIncidentd=!1,De.prototype.skipDropbox=!1,De.create=function(e){return new De(e)},De.encode=function(e,t){return t=t||a.create(),null!=e.destinationPackage&&Object.hasOwnProperty.call(e,\"destinationPackage\")&&t.uint32(10).string(e.destinationPackage),null!=e.destinationClass&&Object.hasOwnProperty.call(e,\"destinationClass\")&&t.uint32(18).string(e.destinationClass),null!=e.privacyLevel&&Object.hasOwnProperty.call(e,\"privacyLevel\")&&t.uint32(24).int32(e.privacyLevel),null!=e.skipDropbox&&Object.hasOwnProperty.call(e,\"skipDropbox\")&&t.uint32(32).bool(e.skipDropbox),null!=e.skipIncidentd&&Object.hasOwnProperty.call(e,\"skipIncidentd\")&&t.uint32(40).bool(e.skipIncidentd),t},De.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.IncidentReportConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.destinationPackage=e.string();break;case 2:n.destinationClass=e.string();break;case 3:n.privacyLevel=e.int32();break;case 5:n.skipIncidentd=e.bool();break;case 4:n.skipDropbox=e.bool();break;default:e.skipType(7&a)}}return n},De.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.IncidentReportConfig?e:(t=new s.perfetto.protos.TraceConfig.IncidentReportConfig,null!=e.destinationPackage&&(t.destinationPackage=String(e.destinationPackage)),null!=e.destinationClass&&(t.destinationClass=String(e.destinationClass)),null!=e.privacyLevel&&(t.privacyLevel=0|e.privacyLevel),null!=e.skipIncidentd&&(t.skipIncidentd=Boolean(e.skipIncidentd)),null!=e.skipDropbox&&(t.skipDropbox=Boolean(e.skipDropbox)),t)},De.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.destinationPackage=\"\",r.destinationClass=\"\",r.privacyLevel=0,r.skipDropbox=!1,r.skipIncidentd=!1),null!=e.destinationPackage&&e.hasOwnProperty(\"destinationPackage\")&&(r.destinationPackage=e.destinationPackage),null!=e.destinationClass&&e.hasOwnProperty(\"destinationClass\")&&(r.destinationClass=e.destinationClass),null!=e.privacyLevel&&e.hasOwnProperty(\"privacyLevel\")&&(r.privacyLevel=e.privacyLevel),null!=e.skipDropbox&&e.hasOwnProperty(\"skipDropbox\")&&(r.skipDropbox=e.skipDropbox),null!=e.skipIncidentd&&e.hasOwnProperty(\"skipIncidentd\")&&(r.skipIncidentd=e.skipIncidentd),r},De.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},De.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.IncidentReportConfig\"},De),_.StatsdLogging=(t={},(e=Object.create(t))[t[0]=\"STATSD_LOGGING_UNSPECIFIED\"]=0,e[t[1]=\"STATSD_LOGGING_ENABLED\"]=1,e[t[2]=\"STATSD_LOGGING_DISABLED\"]=2,e),_.TraceFilter=(xe.prototype.bytecode=i.newBuffer([]),xe.prototype.bytecodeV2=i.newBuffer([]),xe.prototype.stringFilterChain=null,xe.create=function(e){return new xe(e)},xe.encode=function(e,t){return t=t||a.create(),null!=e.bytecode&&Object.hasOwnProperty.call(e,\"bytecode\")&&t.uint32(10).bytes(e.bytecode),null!=e.bytecodeV2&&Object.hasOwnProperty.call(e,\"bytecodeV2\")&&t.uint32(18).bytes(e.bytecodeV2),null!=e.stringFilterChain&&Object.hasOwnProperty.call(e,\"stringFilterChain\")&&s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.encode(e.stringFilterChain,t.uint32(26).fork()).ldelim(),t},xe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.TraceFilter;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.bytecode=e.bytes();break;case 2:n.bytecodeV2=e.bytes();break;case 3:n.stringFilterChain=s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},xe.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.TraceFilter)return e;var t=new s.perfetto.protos.TraceConfig.TraceFilter;if(null!=e.bytecode&&(\"string\"==typeof e.bytecode?i.base64.decode(e.bytecode,t.bytecode=i.newBuffer(i.base64.length(e.bytecode)),0):0<=e.bytecode.length&&(t.bytecode=e.bytecode)),null!=e.bytecodeV2&&(\"string\"==typeof e.bytecodeV2?i.base64.decode(e.bytecodeV2,t.bytecodeV2=i.newBuffer(i.base64.length(e.bytecodeV2)),0):0<=e.bytecodeV2.length&&(t.bytecodeV2=e.bytecodeV2)),null!=e.stringFilterChain){if(\"object\"!=typeof e.stringFilterChain)throw TypeError(\".perfetto.protos.TraceConfig.TraceFilter.stringFilterChain: object expected\");t.stringFilterChain=s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.fromObject(e.stringFilterChain)}return t},xe.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(t.bytes===String?r.bytecode=\"\":(r.bytecode=[],t.bytes!==Array&&(r.bytecode=i.newBuffer(r.bytecode))),t.bytes===String?r.bytecodeV2=\"\":(r.bytecodeV2=[],t.bytes!==Array&&(r.bytecodeV2=i.newBuffer(r.bytecodeV2))),r.stringFilterChain=null),null!=e.bytecode&&e.hasOwnProperty(\"bytecode\")&&(r.bytecode=t.bytes===String?i.base64.encode(e.bytecode,0,e.bytecode.length):t.bytes===Array?Array.prototype.slice.call(e.bytecode):e.bytecode),null!=e.bytecodeV2&&e.hasOwnProperty(\"bytecodeV2\")&&(r.bytecodeV2=t.bytes===String?i.base64.encode(e.bytecodeV2,0,e.bytecodeV2.length):t.bytes===Array?Array.prototype.slice.call(e.bytecodeV2):e.bytecodeV2),null!=e.stringFilterChain&&e.hasOwnProperty(\"stringFilterChain\")&&(r.stringFilterChain=s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.toObject(e.stringFilterChain,t)),r},xe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},xe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.TraceFilter\"},xe.StringFilterPolicy=(t={},(e=Object.create(t))[t[0]=\"SFP_UNSPECIFIED\"]=0,e[t[1]=\"SFP_MATCH_REDACT_GROUPS\"]=1,e[t[2]=\"SFP_ATRACE_MATCH_REDACT_GROUPS\"]=2,e[t[3]=\"SFP_MATCH_BREAK\"]=3,e[t[4]=\"SFP_ATRACE_MATCH_BREAK\"]=4,e[t[5]=\"SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS\"]=5,e),xe.StringFilterRule=(Le.prototype.policy=0,Le.prototype.regexPattern=\"\",Le.prototype.atracePayloadStartsWith=\"\",Le.create=function(e){return new Le(e)},Le.encode=function(e,t){return t=t||a.create(),null!=e.policy&&Object.hasOwnProperty.call(e,\"policy\")&&t.uint32(8).int32(e.policy),null!=e.regexPattern&&Object.hasOwnProperty.call(e,\"regexPattern\")&&t.uint32(18).string(e.regexPattern),null!=e.atracePayloadStartsWith&&Object.hasOwnProperty.call(e,\"atracePayloadStartsWith\")&&t.uint32(26).string(e.atracePayloadStartsWith),t},Le.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.policy=e.int32();break;case 2:n.regexPattern=e.string();break;case 3:n.atracePayloadStartsWith=e.string();break;default:e.skipType(7&a)}}return n},Le.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule)return e;var t=new s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule;switch(e.policy){default:\"number\"==typeof e.policy&&(t.policy=e.policy);break;case\"SFP_UNSPECIFIED\":case 0:t.policy=0;break;case\"SFP_MATCH_REDACT_GROUPS\":case 1:t.policy=1;break;case\"SFP_ATRACE_MATCH_REDACT_GROUPS\":case 2:t.policy=2;break;case\"SFP_MATCH_BREAK\":case 3:t.policy=3;break;case\"SFP_ATRACE_MATCH_BREAK\":case 4:t.policy=4;break;case\"SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS\":case 5:t.policy=5}return null!=e.regexPattern&&(t.regexPattern=String(e.regexPattern)),null!=e.atracePayloadStartsWith&&(t.atracePayloadStartsWith=String(e.atracePayloadStartsWith)),t},Le.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.policy=t.enums===String?\"SFP_UNSPECIFIED\":0,r.regexPattern=\"\",r.atracePayloadStartsWith=\"\"),null!=e.policy&&e.hasOwnProperty(\"policy\")&&(r.policy=t.enums!==String||void 0===s.perfetto.protos.TraceConfig.TraceFilter.StringFilterPolicy[e.policy]?e.policy:s.perfetto.protos.TraceConfig.TraceFilter.StringFilterPolicy[e.policy]),null!=e.regexPattern&&e.hasOwnProperty(\"regexPattern\")&&(r.regexPattern=e.regexPattern),null!=e.atracePayloadStartsWith&&e.hasOwnProperty(\"atracePayloadStartsWith\")&&(r.atracePayloadStartsWith=e.atracePayloadStartsWith),r},Le.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Le.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.TraceFilter.StringFilterRule\"},Le),xe.StringFilterChain=(Fe.prototype.rules=i.emptyArray,Fe.create=function(e){return new Fe(e)},Fe.encode=function(e,t){if(t=t||a.create(),null!=e.rules&&e.rules.length)for(var r=0;r<e.rules.length;++r)s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule.encode(e.rules[r],t.uint32(10).fork()).ldelim();return t},Fe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain;e.pos<r;){var a=e.uint32();a>>>3==1?(n.rules&&n.rules.length||(n.rules=[]),n.rules.push(s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule.decode(e,e.uint32()))):e.skipType(7&a)}return n},Fe.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain)return e;var t=new s.perfetto.protos.TraceConfig.TraceFilter.StringFilterChain;if(e.rules){if(!Array.isArray(e.rules))throw TypeError(\".perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.rules: array expected\");t.rules=[];for(var r=0;r<e.rules.length;++r){if(\"object\"!=typeof e.rules[r])throw TypeError(\".perfetto.protos.TraceConfig.TraceFilter.StringFilterChain.rules: object expected\");t.rules[r]=s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule.fromObject(e.rules[r])}}return t},Fe.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.rules=[]),e.rules&&e.rules.length){r.rules=[];for(var n=0;n<e.rules.length;++n)r.rules[n]=s.perfetto.protos.TraceConfig.TraceFilter.StringFilterRule.toObject(e.rules[n],t)}return r},Fe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Fe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.TraceFilter.StringFilterChain\"},Fe),xe),_.AndroidReportConfig=(Ue.prototype.reporterServicePackage=\"\",Ue.prototype.reporterServiceClass=\"\",Ue.prototype.skipReport=!1,Ue.prototype.usePipeInFrameworkForTesting=!1,Ue.create=function(e){return new Ue(e)},Ue.encode=function(e,t){return t=t||a.create(),null!=e.reporterServicePackage&&Object.hasOwnProperty.call(e,\"reporterServicePackage\")&&t.uint32(10).string(e.reporterServicePackage),null!=e.reporterServiceClass&&Object.hasOwnProperty.call(e,\"reporterServiceClass\")&&t.uint32(18).string(e.reporterServiceClass),null!=e.skipReport&&Object.hasOwnProperty.call(e,\"skipReport\")&&t.uint32(24).bool(e.skipReport),null!=e.usePipeInFrameworkForTesting&&Object.hasOwnProperty.call(e,\"usePipeInFrameworkForTesting\")&&t.uint32(32).bool(e.usePipeInFrameworkForTesting),t},Ue.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.AndroidReportConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.reporterServicePackage=e.string();break;case 2:n.reporterServiceClass=e.string();break;case 3:n.skipReport=e.bool();break;case 4:n.usePipeInFrameworkForTesting=e.bool();break;default:e.skipType(7&a)}}return n},Ue.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.AndroidReportConfig?e:(t=new s.perfetto.protos.TraceConfig.AndroidReportConfig,null!=e.reporterServicePackage&&(t.reporterServicePackage=String(e.reporterServicePackage)),null!=e.reporterServiceClass&&(t.reporterServiceClass=String(e.reporterServiceClass)),null!=e.skipReport&&(t.skipReport=Boolean(e.skipReport)),null!=e.usePipeInFrameworkForTesting&&(t.usePipeInFrameworkForTesting=Boolean(e.usePipeInFrameworkForTesting)),t)},Ue.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.reporterServicePackage=\"\",r.reporterServiceClass=\"\",r.skipReport=!1,r.usePipeInFrameworkForTesting=!1),null!=e.reporterServicePackage&&e.hasOwnProperty(\"reporterServicePackage\")&&(r.reporterServicePackage=e.reporterServicePackage),null!=e.reporterServiceClass&&e.hasOwnProperty(\"reporterServiceClass\")&&(r.reporterServiceClass=e.reporterServiceClass),null!=e.skipReport&&e.hasOwnProperty(\"skipReport\")&&(r.skipReport=e.skipReport),null!=e.usePipeInFrameworkForTesting&&e.hasOwnProperty(\"usePipeInFrameworkForTesting\")&&(r.usePipeInFrameworkForTesting=e.usePipeInFrameworkForTesting),r},Ue.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ue.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.AndroidReportConfig\"},Ue),_.CmdTraceStartDelay=(Be.prototype.minDelayMs=0,Be.prototype.maxDelayMs=0,Be.create=function(e){return new Be(e)},Be.encode=function(e,t){return t=t||a.create(),null!=e.minDelayMs&&Object.hasOwnProperty.call(e,\"minDelayMs\")&&t.uint32(8).uint32(e.minDelayMs),null!=e.maxDelayMs&&Object.hasOwnProperty.call(e,\"maxDelayMs\")&&t.uint32(16).uint32(e.maxDelayMs),t},Be.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.CmdTraceStartDelay;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.minDelayMs=e.uint32();break;case 2:n.maxDelayMs=e.uint32();break;default:e.skipType(7&a)}}return n},Be.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.CmdTraceStartDelay?e:(t=new s.perfetto.protos.TraceConfig.CmdTraceStartDelay,null!=e.minDelayMs&&(t.minDelayMs=e.minDelayMs>>>0),null!=e.maxDelayMs&&(t.maxDelayMs=e.maxDelayMs>>>0),t)},Be.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.minDelayMs=0,r.maxDelayMs=0),null!=e.minDelayMs&&e.hasOwnProperty(\"minDelayMs\")&&(r.minDelayMs=e.minDelayMs),null!=e.maxDelayMs&&e.hasOwnProperty(\"maxDelayMs\")&&(r.maxDelayMs=e.maxDelayMs),r},Be.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Be.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.CmdTraceStartDelay\"},Be),_.SessionSemaphore=(je.prototype.name=\"\",je.prototype.maxOtherSessionCount=i.Long?i.Long.fromBits(0,0,!0):0,je.create=function(e){return new je(e)},je.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.maxOtherSessionCount&&Object.hasOwnProperty.call(e,\"maxOtherSessionCount\")&&t.uint32(16).uint64(e.maxOtherSessionCount),t},je.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceConfig.SessionSemaphore;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.maxOtherSessionCount=e.uint64();break;default:e.skipType(7&a)}}return n},je.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceConfig.SessionSemaphore?e:(t=new s.perfetto.protos.TraceConfig.SessionSemaphore,null!=e.name&&(t.name=String(e.name)),null!=e.maxOtherSessionCount&&(i.Long?(t.maxOtherSessionCount=i.Long.fromValue(e.maxOtherSessionCount)).unsigned=!0:\"string\"==typeof e.maxOtherSessionCount?t.maxOtherSessionCount=parseInt(e.maxOtherSessionCount,10):\"number\"==typeof e.maxOtherSessionCount?t.maxOtherSessionCount=e.maxOtherSessionCount:\"object\"==typeof e.maxOtherSessionCount&&(t.maxOtherSessionCount=new i.LongBits(e.maxOtherSessionCount.low>>>0,e.maxOtherSessionCount.high>>>0).toNumber(!0))),t)},je.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.name=\"\",i.Long?(r=new i.Long(0,0,!0),n.maxOtherSessionCount=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxOtherSessionCount=t.longs===String?\"0\":0),null!=e.name&&e.hasOwnProperty(\"name\")&&(n.name=e.name),null!=e.maxOtherSessionCount&&e.hasOwnProperty(\"maxOtherSessionCount\")&&(\"number\"==typeof e.maxOtherSessionCount?n.maxOtherSessionCount=t.longs===String?String(e.maxOtherSessionCount):e.maxOtherSessionCount:n.maxOtherSessionCount=t.longs===String?i.Long.prototype.toString.call(e.maxOtherSessionCount):t.longs===Number?new i.LongBits(e.maxOtherSessionCount.low>>>0,e.maxOtherSessionCount.high>>>0).toNumber(!0):e.maxOtherSessionCount),n},je.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},je.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceConfig.SessionSemaphore\"},je),_),r.BuiltinClock=(t={},(e=Object.create(t))[t[0]=\"BUILTIN_CLOCK_UNKNOWN\"]=0,e[t[1]=\"BUILTIN_CLOCK_REALTIME\"]=1,e[t[2]=\"BUILTIN_CLOCK_REALTIME_COARSE\"]=2,e[t[3]=\"BUILTIN_CLOCK_MONOTONIC\"]=3,e[t[4]=\"BUILTIN_CLOCK_MONOTONIC_COARSE\"]=4,e[t[5]=\"BUILTIN_CLOCK_MONOTONIC_RAW\"]=5,e[t[6]=\"BUILTIN_CLOCK_BOOTTIME\"]=6,e[t[9]=\"BUILTIN_CLOCK_TSC\"]=9,e[t[10]=\"BUILTIN_CLOCK_PERF\"]=10,e[t[63]=\"BUILTIN_CLOCK_MAX_ID\"]=63,e),r.DataSourceConfig=(T.prototype.name=\"\",T.prototype.targetBuffer=0,T.prototype.traceDurationMs=0,T.prototype.preferSuspendClockForDuration=!1,T.prototype.stopTimeoutMs=0,T.prototype.enableExtraGuardrails=!1,T.prototype.sessionInitiator=0,T.prototype.tracingSessionId=i.Long?i.Long.fromBits(0,0,!0):0,T.prototype.bufferExhaustedPolicy=0,T.prototype.priorityBoost=null,T.prototype.ftraceConfig=null,T.prototype.inodeFileConfig=null,T.prototype.processStatsConfig=null,T.prototype.sysStatsConfig=null,T.prototype.heapprofdConfig=null,T.prototype.javaHprofConfig=null,T.prototype.androidPowerConfig=null,T.prototype.androidLogConfig=null,T.prototype.gpuCounterConfig=null,T.prototype.androidGameInterventionListConfig=null,T.prototype.packagesListConfig=null,T.prototype.perfEventConfig=null,T.prototype.vulkanMemoryConfig=null,T.prototype.trackEventConfig=null,T.prototype.androidPolledStateConfig=null,T.prototype.androidSystemPropertyConfig=null,T.prototype.statsdTracingConfig=null,T.prototype.systemInfoConfig=null,T.prototype.frozenFtraceConfig=null,T.prototype.chromeConfig=null,T.prototype.v8Config=null,T.prototype.interceptorConfig=null,T.prototype.networkPacketTraceConfig=null,T.prototype.surfaceflingerLayersConfig=null,T.prototype.surfaceflingerTransactionsConfig=null,T.prototype.androidSdkSyspropGuardConfig=null,T.prototype.etwConfig=null,T.prototype.protologConfig=null,T.prototype.androidInputEventConfig=null,T.prototype.pixelModemConfig=null,T.prototype.windowmanagerConfig=null,T.prototype.chromiumSystemMetrics=null,T.prototype.kernelWakelocksConfig=null,T.prototype.gpuRenderstagesConfig=null,T.prototype.chromiumHistogramSamples=null,T.prototype.appWakelocksConfig=null,T.prototype.cpuPerUidConfig=null,T.prototype.legacyConfig=\"\",T.prototype.forTesting=null,T.create=function(e){return new T(e)},T.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.targetBuffer&&Object.hasOwnProperty.call(e,\"targetBuffer\")&&t.uint32(16).uint32(e.targetBuffer),null!=e.traceDurationMs&&Object.hasOwnProperty.call(e,\"traceDurationMs\")&&t.uint32(24).uint32(e.traceDurationMs),null!=e.tracingSessionId&&Object.hasOwnProperty.call(e,\"tracingSessionId\")&&t.uint32(32).uint64(e.tracingSessionId),null!=e.enableExtraGuardrails&&Object.hasOwnProperty.call(e,\"enableExtraGuardrails\")&&t.uint32(48).bool(e.enableExtraGuardrails),null!=e.stopTimeoutMs&&Object.hasOwnProperty.call(e,\"stopTimeoutMs\")&&t.uint32(56).uint32(e.stopTimeoutMs),null!=e.sessionInitiator&&Object.hasOwnProperty.call(e,\"sessionInitiator\")&&t.uint32(64).int32(e.sessionInitiator),null!=e.bufferExhaustedPolicy&&Object.hasOwnProperty.call(e,\"bufferExhaustedPolicy\")&&t.uint32(72).int32(e.bufferExhaustedPolicy),null!=e.priorityBoost&&Object.hasOwnProperty.call(e,\"priorityBoost\")&&s.perfetto.protos.PriorityBoostConfig.encode(e.priorityBoost,t.uint32(82).fork()).ldelim(),null!=e.ftraceConfig&&Object.hasOwnProperty.call(e,\"ftraceConfig\")&&s.perfetto.protos.FtraceConfig.encode(e.ftraceConfig,t.uint32(802).fork()).ldelim(),null!=e.chromeConfig&&Object.hasOwnProperty.call(e,\"chromeConfig\")&&s.perfetto.protos.ChromeConfig.encode(e.chromeConfig,t.uint32(810).fork()).ldelim(),null!=e.inodeFileConfig&&Object.hasOwnProperty.call(e,\"inodeFileConfig\")&&s.perfetto.protos.InodeFileConfig.encode(e.inodeFileConfig,t.uint32(818).fork()).ldelim(),null!=e.processStatsConfig&&Object.hasOwnProperty.call(e,\"processStatsConfig\")&&s.perfetto.protos.ProcessStatsConfig.encode(e.processStatsConfig,t.uint32(826).fork()).ldelim(),null!=e.sysStatsConfig&&Object.hasOwnProperty.call(e,\"sysStatsConfig\")&&s.perfetto.protos.SysStatsConfig.encode(e.sysStatsConfig,t.uint32(834).fork()).ldelim(),null!=e.heapprofdConfig&&Object.hasOwnProperty.call(e,\"heapprofdConfig\")&&s.perfetto.protos.HeapprofdConfig.encode(e.heapprofdConfig,t.uint32(842).fork()).ldelim(),null!=e.androidPowerConfig&&Object.hasOwnProperty.call(e,\"androidPowerConfig\")&&s.perfetto.protos.AndroidPowerConfig.encode(e.androidPowerConfig,t.uint32(850).fork()).ldelim(),null!=e.androidLogConfig&&Object.hasOwnProperty.call(e,\"androidLogConfig\")&&s.perfetto.protos.AndroidLogConfig.encode(e.androidLogConfig,t.uint32(858).fork()).ldelim(),null!=e.gpuCounterConfig&&Object.hasOwnProperty.call(e,\"gpuCounterConfig\")&&s.perfetto.protos.GpuCounterConfig.encode(e.gpuCounterConfig,t.uint32(866).fork()).ldelim(),null!=e.packagesListConfig&&Object.hasOwnProperty.call(e,\"packagesListConfig\")&&s.perfetto.protos.PackagesListConfig.encode(e.packagesListConfig,t.uint32(874).fork()).ldelim(),null!=e.javaHprofConfig&&Object.hasOwnProperty.call(e,\"javaHprofConfig\")&&s.perfetto.protos.JavaHprofConfig.encode(e.javaHprofConfig,t.uint32(882).fork()).ldelim(),null!=e.perfEventConfig&&Object.hasOwnProperty.call(e,\"perfEventConfig\")&&s.perfetto.protos.PerfEventConfig.encode(e.perfEventConfig,t.uint32(890).fork()).ldelim(),null!=e.vulkanMemoryConfig&&Object.hasOwnProperty.call(e,\"vulkanMemoryConfig\")&&s.perfetto.protos.VulkanMemoryConfig.encode(e.vulkanMemoryConfig,t.uint32(898).fork()).ldelim(),null!=e.trackEventConfig&&Object.hasOwnProperty.call(e,\"trackEventConfig\")&&s.perfetto.protos.TrackEventConfig.encode(e.trackEventConfig,t.uint32(906).fork()).ldelim(),null!=e.androidPolledStateConfig&&Object.hasOwnProperty.call(e,\"androidPolledStateConfig\")&&s.perfetto.protos.AndroidPolledStateConfig.encode(e.androidPolledStateConfig,t.uint32(914).fork()).ldelim(),null!=e.interceptorConfig&&Object.hasOwnProperty.call(e,\"interceptorConfig\")&&s.perfetto.protos.InterceptorConfig.encode(e.interceptorConfig,t.uint32(922).fork()).ldelim(),null!=e.androidGameInterventionListConfig&&Object.hasOwnProperty.call(e,\"androidGameInterventionListConfig\")&&s.perfetto.protos.AndroidGameInterventionListConfig.encode(e.androidGameInterventionListConfig,t.uint32(930).fork()).ldelim(),null!=e.statsdTracingConfig&&Object.hasOwnProperty.call(e,\"statsdTracingConfig\")&&s.perfetto.protos.StatsdTracingConfig.encode(e.statsdTracingConfig,t.uint32(938).fork()).ldelim(),null!=e.androidSystemPropertyConfig&&Object.hasOwnProperty.call(e,\"androidSystemPropertyConfig\")&&s.perfetto.protos.AndroidSystemPropertyConfig.encode(e.androidSystemPropertyConfig,t.uint32(946).fork()).ldelim(),null!=e.systemInfoConfig&&Object.hasOwnProperty.call(e,\"systemInfoConfig\")&&s.perfetto.protos.SystemInfoConfig.encode(e.systemInfoConfig,t.uint32(954).fork()).ldelim(),null!=e.networkPacketTraceConfig&&Object.hasOwnProperty.call(e,\"networkPacketTraceConfig\")&&s.perfetto.protos.NetworkPacketTraceConfig.encode(e.networkPacketTraceConfig,t.uint32(962).fork()).ldelim(),null!=e.surfaceflingerLayersConfig&&Object.hasOwnProperty.call(e,\"surfaceflingerLayersConfig\")&&s.perfetto.protos.SurfaceFlingerLayersConfig.encode(e.surfaceflingerLayersConfig,t.uint32(970).fork()).ldelim(),null!=e.preferSuspendClockForDuration&&Object.hasOwnProperty.call(e,\"preferSuspendClockForDuration\")&&t.uint32(976).bool(e.preferSuspendClockForDuration),null!=e.surfaceflingerTransactionsConfig&&Object.hasOwnProperty.call(e,\"surfaceflingerTransactionsConfig\")&&s.perfetto.protos.SurfaceFlingerTransactionsConfig.encode(e.surfaceflingerTransactionsConfig,t.uint32(986).fork()).ldelim(),null!=e.androidSdkSyspropGuardConfig&&Object.hasOwnProperty.call(e,\"androidSdkSyspropGuardConfig\")&&s.perfetto.protos.AndroidSdkSyspropGuardConfig.encode(e.androidSdkSyspropGuardConfig,t.uint32(994).fork()).ldelim(),null!=e.etwConfig&&Object.hasOwnProperty.call(e,\"etwConfig\")&&s.perfetto.protos.EtwConfig.encode(e.etwConfig,t.uint32(1002).fork()).ldelim(),null!=e.protologConfig&&Object.hasOwnProperty.call(e,\"protologConfig\")&&s.perfetto.protos.ProtoLogConfig.encode(e.protologConfig,t.uint32(1010).fork()).ldelim(),null!=e.v8Config&&Object.hasOwnProperty.call(e,\"v8Config\")&&s.perfetto.protos.V8Config.encode(e.v8Config,t.uint32(1018).fork()).ldelim(),null!=e.androidInputEventConfig&&Object.hasOwnProperty.call(e,\"androidInputEventConfig\")&&s.perfetto.protos.AndroidInputEventConfig.encode(e.androidInputEventConfig,t.uint32(1026).fork()).ldelim(),null!=e.pixelModemConfig&&Object.hasOwnProperty.call(e,\"pixelModemConfig\")&&s.perfetto.protos.PixelModemConfig.encode(e.pixelModemConfig,t.uint32(1034).fork()).ldelim(),null!=e.windowmanagerConfig&&Object.hasOwnProperty.call(e,\"windowmanagerConfig\")&&s.perfetto.protos.WindowManagerConfig.encode(e.windowmanagerConfig,t.uint32(1042).fork()).ldelim(),null!=e.chromiumSystemMetrics&&Object.hasOwnProperty.call(e,\"chromiumSystemMetrics\")&&s.perfetto.protos.ChromiumSystemMetricsConfig.encode(e.chromiumSystemMetrics,t.uint32(1050).fork()).ldelim(),null!=e.kernelWakelocksConfig&&Object.hasOwnProperty.call(e,\"kernelWakelocksConfig\")&&s.perfetto.protos.KernelWakelocksConfig.encode(e.kernelWakelocksConfig,t.uint32(1058).fork()).ldelim(),null!=e.gpuRenderstagesConfig&&Object.hasOwnProperty.call(e,\"gpuRenderstagesConfig\")&&s.perfetto.protos.GpuRenderStagesConfig.encode(e.gpuRenderstagesConfig,t.uint32(1066).fork()).ldelim(),null!=e.chromiumHistogramSamples&&Object.hasOwnProperty.call(e,\"chromiumHistogramSamples\")&&s.perfetto.protos.ChromiumHistogramSamplesConfig.encode(e.chromiumHistogramSamples,t.uint32(1074).fork()).ldelim(),null!=e.appWakelocksConfig&&Object.hasOwnProperty.call(e,\"appWakelocksConfig\")&&s.perfetto.protos.AppWakelocksConfig.encode(e.appWakelocksConfig,t.uint32(1082).fork()).ldelim(),null!=e.frozenFtraceConfig&&Object.hasOwnProperty.call(e,\"frozenFtraceConfig\")&&s.perfetto.protos.FrozenFtraceConfig.encode(e.frozenFtraceConfig,t.uint32(1090).fork()).ldelim(),null!=e.cpuPerUidConfig&&Object.hasOwnProperty.call(e,\"cpuPerUidConfig\")&&s.perfetto.protos.CpuPerUidConfig.encode(e.cpuPerUidConfig,t.uint32(1098).fork()).ldelim(),null!=e.legacyConfig&&Object.hasOwnProperty.call(e,\"legacyConfig\")&&t.uint32(8002).string(e.legacyConfig),null!=e.forTesting&&Object.hasOwnProperty.call(e,\"forTesting\")&&s.perfetto.protos.TestConfig.encode(e.forTesting,t.uint32(8010).fork()).ldelim(),t},T.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DataSourceConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.targetBuffer=e.uint32();break;case 3:n.traceDurationMs=e.uint32();break;case 122:n.preferSuspendClockForDuration=e.bool();break;case 7:n.stopTimeoutMs=e.uint32();break;case 6:n.enableExtraGuardrails=e.bool();break;case 8:n.sessionInitiator=e.int32();break;case 4:n.tracingSessionId=e.uint64();break;case 9:n.bufferExhaustedPolicy=e.int32();break;case 10:n.priorityBoost=s.perfetto.protos.PriorityBoostConfig.decode(e,e.uint32());break;case 100:n.ftraceConfig=s.perfetto.protos.FtraceConfig.decode(e,e.uint32());break;case 102:n.inodeFileConfig=s.perfetto.protos.InodeFileConfig.decode(e,e.uint32());break;case 103:n.processStatsConfig=s.perfetto.protos.ProcessStatsConfig.decode(e,e.uint32());break;case 104:n.sysStatsConfig=s.perfetto.protos.SysStatsConfig.decode(e,e.uint32());break;case 105:n.heapprofdConfig=s.perfetto.protos.HeapprofdConfig.decode(e,e.uint32());break;case 110:n.javaHprofConfig=s.perfetto.protos.JavaHprofConfig.decode(e,e.uint32());break;case 106:n.androidPowerConfig=s.perfetto.protos.AndroidPowerConfig.decode(e,e.uint32());break;case 107:n.androidLogConfig=s.perfetto.protos.AndroidLogConfig.decode(e,e.uint32());break;case 108:n.gpuCounterConfig=s.perfetto.protos.GpuCounterConfig.decode(e,e.uint32());break;case 116:n.androidGameInterventionListConfig=s.perfetto.protos.AndroidGameInterventionListConfig.decode(e,e.uint32());break;case 109:n.packagesListConfig=s.perfetto.protos.PackagesListConfig.decode(e,e.uint32());break;case 111:n.perfEventConfig=s.perfetto.protos.PerfEventConfig.decode(e,e.uint32());break;case 112:n.vulkanMemoryConfig=s.perfetto.protos.VulkanMemoryConfig.decode(e,e.uint32());break;case 113:n.trackEventConfig=s.perfetto.protos.TrackEventConfig.decode(e,e.uint32());break;case 114:n.androidPolledStateConfig=s.perfetto.protos.AndroidPolledStateConfig.decode(e,e.uint32());break;case 118:n.androidSystemPropertyConfig=s.perfetto.protos.AndroidSystemPropertyConfig.decode(e,e.uint32());break;case 117:n.statsdTracingConfig=s.perfetto.protos.StatsdTracingConfig.decode(e,e.uint32());break;case 119:n.systemInfoConfig=s.perfetto.protos.SystemInfoConfig.decode(e,e.uint32());break;case 136:n.frozenFtraceConfig=s.perfetto.protos.FrozenFtraceConfig.decode(e,e.uint32());break;case 101:n.chromeConfig=s.perfetto.protos.ChromeConfig.decode(e,e.uint32());break;case 127:n.v8Config=s.perfetto.protos.V8Config.decode(e,e.uint32());break;case 115:n.interceptorConfig=s.perfetto.protos.InterceptorConfig.decode(e,e.uint32());break;case 120:n.networkPacketTraceConfig=s.perfetto.protos.NetworkPacketTraceConfig.decode(e,e.uint32());break;case 121:n.surfaceflingerLayersConfig=s.perfetto.protos.SurfaceFlingerLayersConfig.decode(e,e.uint32());break;case 123:n.surfaceflingerTransactionsConfig=s.perfetto.protos.SurfaceFlingerTransactionsConfig.decode(e,e.uint32());break;case 124:n.androidSdkSyspropGuardConfig=s.perfetto.protos.AndroidSdkSyspropGuardConfig.decode(e,e.uint32());break;case 125:n.etwConfig=s.perfetto.protos.EtwConfig.decode(e,e.uint32());break;case 126:n.protologConfig=s.perfetto.protos.ProtoLogConfig.decode(e,e.uint32());break;case 128:n.androidInputEventConfig=s.perfetto.protos.AndroidInputEventConfig.decode(e,e.uint32());break;case 129:n.pixelModemConfig=s.perfetto.protos.PixelModemConfig.decode(e,e.uint32());break;case 130:n.windowmanagerConfig=s.perfetto.protos.WindowManagerConfig.decode(e,e.uint32());break;case 131:n.chromiumSystemMetrics=s.perfetto.protos.ChromiumSystemMetricsConfig.decode(e,e.uint32());break;case 132:n.kernelWakelocksConfig=s.perfetto.protos.KernelWakelocksConfig.decode(e,e.uint32());break;case 133:n.gpuRenderstagesConfig=s.perfetto.protos.GpuRenderStagesConfig.decode(e,e.uint32());break;case 134:n.chromiumHistogramSamples=s.perfetto.protos.ChromiumHistogramSamplesConfig.decode(e,e.uint32());break;case 135:n.appWakelocksConfig=s.perfetto.protos.AppWakelocksConfig.decode(e,e.uint32());break;case 137:n.cpuPerUidConfig=s.perfetto.protos.CpuPerUidConfig.decode(e,e.uint32());break;case 1e3:n.legacyConfig=e.string();break;case 1001:n.forTesting=s.perfetto.protos.TestConfig.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},T.fromObject=function(e){if(e instanceof s.perfetto.protos.DataSourceConfig)return e;var t=new s.perfetto.protos.DataSourceConfig;switch(null!=e.name&&(t.name=String(e.name)),null!=e.targetBuffer&&(t.targetBuffer=e.targetBuffer>>>0),null!=e.traceDurationMs&&(t.traceDurationMs=e.traceDurationMs>>>0),null!=e.preferSuspendClockForDuration&&(t.preferSuspendClockForDuration=Boolean(e.preferSuspendClockForDuration)),null!=e.stopTimeoutMs&&(t.stopTimeoutMs=e.stopTimeoutMs>>>0),null!=e.enableExtraGuardrails&&(t.enableExtraGuardrails=Boolean(e.enableExtraGuardrails)),e.sessionInitiator){default:\"number\"==typeof e.sessionInitiator&&(t.sessionInitiator=e.sessionInitiator);break;case\"SESSION_INITIATOR_UNSPECIFIED\":case 0:t.sessionInitiator=0;break;case\"SESSION_INITIATOR_TRUSTED_SYSTEM\":case 1:t.sessionInitiator=1}switch(null!=e.tracingSessionId&&(i.Long?(t.tracingSessionId=i.Long.fromValue(e.tracingSessionId)).unsigned=!0:\"string\"==typeof e.tracingSessionId?t.tracingSessionId=parseInt(e.tracingSessionId,10):\"number\"==typeof e.tracingSessionId?t.tracingSessionId=e.tracingSessionId:\"object\"==typeof e.tracingSessionId&&(t.tracingSessionId=new i.LongBits(e.tracingSessionId.low>>>0,e.tracingSessionId.high>>>0).toNumber(!0))),e.bufferExhaustedPolicy){default:\"number\"==typeof e.bufferExhaustedPolicy&&(t.bufferExhaustedPolicy=e.bufferExhaustedPolicy);break;case\"BUFFER_EXHAUSTED_UNSPECIFIED\":case 0:t.bufferExhaustedPolicy=0;break;case\"BUFFER_EXHAUSTED_DROP\":case 1:t.bufferExhaustedPolicy=1;break;case\"BUFFER_EXHAUSTED_STALL_THEN_ABORT\":case 2:t.bufferExhaustedPolicy=2;break;case\"BUFFER_EXHAUSTED_STALL_THEN_DROP\":case 3:t.bufferExhaustedPolicy=3}if(null!=e.priorityBoost){if(\"object\"!=typeof e.priorityBoost)throw TypeError(\".perfetto.protos.DataSourceConfig.priorityBoost: object expected\");t.priorityBoost=s.perfetto.protos.PriorityBoostConfig.fromObject(e.priorityBoost)}if(null!=e.ftraceConfig){if(\"object\"!=typeof e.ftraceConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.ftraceConfig: object expected\");t.ftraceConfig=s.perfetto.protos.FtraceConfig.fromObject(e.ftraceConfig)}if(null!=e.inodeFileConfig){if(\"object\"!=typeof e.inodeFileConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.inodeFileConfig: object expected\");t.inodeFileConfig=s.perfetto.protos.InodeFileConfig.fromObject(e.inodeFileConfig)}if(null!=e.processStatsConfig){if(\"object\"!=typeof e.processStatsConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.processStatsConfig: object expected\");t.processStatsConfig=s.perfetto.protos.ProcessStatsConfig.fromObject(e.processStatsConfig)}if(null!=e.sysStatsConfig){if(\"object\"!=typeof e.sysStatsConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.sysStatsConfig: object expected\");t.sysStatsConfig=s.perfetto.protos.SysStatsConfig.fromObject(e.sysStatsConfig)}if(null!=e.heapprofdConfig){if(\"object\"!=typeof e.heapprofdConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.heapprofdConfig: object expected\");t.heapprofdConfig=s.perfetto.protos.HeapprofdConfig.fromObject(e.heapprofdConfig)}if(null!=e.javaHprofConfig){if(\"object\"!=typeof e.javaHprofConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.javaHprofConfig: object expected\");t.javaHprofConfig=s.perfetto.protos.JavaHprofConfig.fromObject(e.javaHprofConfig)}if(null!=e.androidPowerConfig){if(\"object\"!=typeof e.androidPowerConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidPowerConfig: object expected\");t.androidPowerConfig=s.perfetto.protos.AndroidPowerConfig.fromObject(e.androidPowerConfig)}if(null!=e.androidLogConfig){if(\"object\"!=typeof e.androidLogConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidLogConfig: object expected\");t.androidLogConfig=s.perfetto.protos.AndroidLogConfig.fromObject(e.androidLogConfig)}if(null!=e.gpuCounterConfig){if(\"object\"!=typeof e.gpuCounterConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.gpuCounterConfig: object expected\");t.gpuCounterConfig=s.perfetto.protos.GpuCounterConfig.fromObject(e.gpuCounterConfig)}if(null!=e.androidGameInterventionListConfig){if(\"object\"!=typeof e.androidGameInterventionListConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidGameInterventionListConfig: object expected\");t.androidGameInterventionListConfig=s.perfetto.protos.AndroidGameInterventionListConfig.fromObject(e.androidGameInterventionListConfig)}if(null!=e.packagesListConfig){if(\"object\"!=typeof e.packagesListConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.packagesListConfig: object expected\");t.packagesListConfig=s.perfetto.protos.PackagesListConfig.fromObject(e.packagesListConfig)}if(null!=e.perfEventConfig){if(\"object\"!=typeof e.perfEventConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.perfEventConfig: object expected\");t.perfEventConfig=s.perfetto.protos.PerfEventConfig.fromObject(e.perfEventConfig)}if(null!=e.vulkanMemoryConfig){if(\"object\"!=typeof e.vulkanMemoryConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.vulkanMemoryConfig: object expected\");t.vulkanMemoryConfig=s.perfetto.protos.VulkanMemoryConfig.fromObject(e.vulkanMemoryConfig)}if(null!=e.trackEventConfig){if(\"object\"!=typeof e.trackEventConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.trackEventConfig: object expected\");t.trackEventConfig=s.perfetto.protos.TrackEventConfig.fromObject(e.trackEventConfig)}if(null!=e.androidPolledStateConfig){if(\"object\"!=typeof e.androidPolledStateConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidPolledStateConfig: object expected\");t.androidPolledStateConfig=s.perfetto.protos.AndroidPolledStateConfig.fromObject(e.androidPolledStateConfig)}if(null!=e.androidSystemPropertyConfig){if(\"object\"!=typeof e.androidSystemPropertyConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidSystemPropertyConfig: object expected\");t.androidSystemPropertyConfig=s.perfetto.protos.AndroidSystemPropertyConfig.fromObject(e.androidSystemPropertyConfig)}if(null!=e.statsdTracingConfig){if(\"object\"!=typeof e.statsdTracingConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.statsdTracingConfig: object expected\");t.statsdTracingConfig=s.perfetto.protos.StatsdTracingConfig.fromObject(e.statsdTracingConfig)}if(null!=e.systemInfoConfig){if(\"object\"!=typeof e.systemInfoConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.systemInfoConfig: object expected\");t.systemInfoConfig=s.perfetto.protos.SystemInfoConfig.fromObject(e.systemInfoConfig)}if(null!=e.frozenFtraceConfig){if(\"object\"!=typeof e.frozenFtraceConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.frozenFtraceConfig: object expected\");t.frozenFtraceConfig=s.perfetto.protos.FrozenFtraceConfig.fromObject(e.frozenFtraceConfig)}if(null!=e.chromeConfig){if(\"object\"!=typeof e.chromeConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.chromeConfig: object expected\");t.chromeConfig=s.perfetto.protos.ChromeConfig.fromObject(e.chromeConfig)}if(null!=e.v8Config){if(\"object\"!=typeof e.v8Config)throw TypeError(\".perfetto.protos.DataSourceConfig.v8Config: object expected\");t.v8Config=s.perfetto.protos.V8Config.fromObject(e.v8Config)}if(null!=e.interceptorConfig){if(\"object\"!=typeof e.interceptorConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.interceptorConfig: object expected\");t.interceptorConfig=s.perfetto.protos.InterceptorConfig.fromObject(e.interceptorConfig)}if(null!=e.networkPacketTraceConfig){if(\"object\"!=typeof e.networkPacketTraceConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.networkPacketTraceConfig: object expected\");t.networkPacketTraceConfig=s.perfetto.protos.NetworkPacketTraceConfig.fromObject(e.networkPacketTraceConfig)}if(null!=e.surfaceflingerLayersConfig){if(\"object\"!=typeof e.surfaceflingerLayersConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.surfaceflingerLayersConfig: object expected\");t.surfaceflingerLayersConfig=s.perfetto.protos.SurfaceFlingerLayersConfig.fromObject(e.surfaceflingerLayersConfig)}if(null!=e.surfaceflingerTransactionsConfig){if(\"object\"!=typeof e.surfaceflingerTransactionsConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.surfaceflingerTransactionsConfig: object expected\");t.surfaceflingerTransactionsConfig=s.perfetto.protos.SurfaceFlingerTransactionsConfig.fromObject(e.surfaceflingerTransactionsConfig)}if(null!=e.androidSdkSyspropGuardConfig){if(\"object\"!=typeof e.androidSdkSyspropGuardConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidSdkSyspropGuardConfig: object expected\");t.androidSdkSyspropGuardConfig=s.perfetto.protos.AndroidSdkSyspropGuardConfig.fromObject(e.androidSdkSyspropGuardConfig)}if(null!=e.etwConfig){if(\"object\"!=typeof e.etwConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.etwConfig: object expected\");t.etwConfig=s.perfetto.protos.EtwConfig.fromObject(e.etwConfig)}if(null!=e.protologConfig){if(\"object\"!=typeof e.protologConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.protologConfig: object expected\");t.protologConfig=s.perfetto.protos.ProtoLogConfig.fromObject(e.protologConfig)}if(null!=e.androidInputEventConfig){if(\"object\"!=typeof e.androidInputEventConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.androidInputEventConfig: object expected\");t.androidInputEventConfig=s.perfetto.protos.AndroidInputEventConfig.fromObject(e.androidInputEventConfig)}if(null!=e.pixelModemConfig){if(\"object\"!=typeof e.pixelModemConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.pixelModemConfig: object expected\");t.pixelModemConfig=s.perfetto.protos.PixelModemConfig.fromObject(e.pixelModemConfig)}if(null!=e.windowmanagerConfig){if(\"object\"!=typeof e.windowmanagerConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.windowmanagerConfig: object expected\");t.windowmanagerConfig=s.perfetto.protos.WindowManagerConfig.fromObject(e.windowmanagerConfig)}if(null!=e.chromiumSystemMetrics){if(\"object\"!=typeof e.chromiumSystemMetrics)throw TypeError(\".perfetto.protos.DataSourceConfig.chromiumSystemMetrics: object expected\");t.chromiumSystemMetrics=s.perfetto.protos.ChromiumSystemMetricsConfig.fromObject(e.chromiumSystemMetrics)}if(null!=e.kernelWakelocksConfig){if(\"object\"!=typeof e.kernelWakelocksConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.kernelWakelocksConfig: object expected\");t.kernelWakelocksConfig=s.perfetto.protos.KernelWakelocksConfig.fromObject(e.kernelWakelocksConfig)}if(null!=e.gpuRenderstagesConfig){if(\"object\"!=typeof e.gpuRenderstagesConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.gpuRenderstagesConfig: object expected\");t.gpuRenderstagesConfig=s.perfetto.protos.GpuRenderStagesConfig.fromObject(e.gpuRenderstagesConfig)}if(null!=e.chromiumHistogramSamples){if(\"object\"!=typeof e.chromiumHistogramSamples)throw TypeError(\".perfetto.protos.DataSourceConfig.chromiumHistogramSamples: object expected\");t.chromiumHistogramSamples=s.perfetto.protos.ChromiumHistogramSamplesConfig.fromObject(e.chromiumHistogramSamples)}if(null!=e.appWakelocksConfig){if(\"object\"!=typeof e.appWakelocksConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.appWakelocksConfig: object expected\");t.appWakelocksConfig=s.perfetto.protos.AppWakelocksConfig.fromObject(e.appWakelocksConfig)}if(null!=e.cpuPerUidConfig){if(\"object\"!=typeof e.cpuPerUidConfig)throw TypeError(\".perfetto.protos.DataSourceConfig.cpuPerUidConfig: object expected\");t.cpuPerUidConfig=s.perfetto.protos.CpuPerUidConfig.fromObject(e.cpuPerUidConfig)}if(null!=e.legacyConfig&&(t.legacyConfig=String(e.legacyConfig)),null!=e.forTesting){if(\"object\"!=typeof e.forTesting)throw TypeError(\".perfetto.protos.DataSourceConfig.forTesting: object expected\");t.forTesting=s.perfetto.protos.TestConfig.fromObject(e.forTesting)}return t},T.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.name=\"\",n.targetBuffer=0,n.traceDurationMs=0,i.Long?(r=new i.Long(0,0,!0),n.tracingSessionId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.tracingSessionId=t.longs===String?\"0\":0,n.enableExtraGuardrails=!1,n.stopTimeoutMs=0,n.sessionInitiator=t.enums===String?\"SESSION_INITIATOR_UNSPECIFIED\":0,n.bufferExhaustedPolicy=t.enums===String?\"BUFFER_EXHAUSTED_UNSPECIFIED\":0,n.priorityBoost=null,n.ftraceConfig=null,n.chromeConfig=null,n.inodeFileConfig=null,n.processStatsConfig=null,n.sysStatsConfig=null,n.heapprofdConfig=null,n.androidPowerConfig=null,n.androidLogConfig=null,n.gpuCounterConfig=null,n.packagesListConfig=null,n.javaHprofConfig=null,n.perfEventConfig=null,n.vulkanMemoryConfig=null,n.trackEventConfig=null,n.androidPolledStateConfig=null,n.interceptorConfig=null,n.androidGameInterventionListConfig=null,n.statsdTracingConfig=null,n.androidSystemPropertyConfig=null,n.systemInfoConfig=null,n.networkPacketTraceConfig=null,n.surfaceflingerLayersConfig=null,n.preferSuspendClockForDuration=!1,n.surfaceflingerTransactionsConfig=null,n.androidSdkSyspropGuardConfig=null,n.etwConfig=null,n.protologConfig=null,n.v8Config=null,n.androidInputEventConfig=null,n.pixelModemConfig=null,n.windowmanagerConfig=null,n.chromiumSystemMetrics=null,n.kernelWakelocksConfig=null,n.gpuRenderstagesConfig=null,n.chromiumHistogramSamples=null,n.appWakelocksConfig=null,n.frozenFtraceConfig=null,n.cpuPerUidConfig=null,n.legacyConfig=\"\",n.forTesting=null),null!=e.name&&e.hasOwnProperty(\"name\")&&(n.name=e.name),null!=e.targetBuffer&&e.hasOwnProperty(\"targetBuffer\")&&(n.targetBuffer=e.targetBuffer),null!=e.traceDurationMs&&e.hasOwnProperty(\"traceDurationMs\")&&(n.traceDurationMs=e.traceDurationMs),null!=e.tracingSessionId&&e.hasOwnProperty(\"tracingSessionId\")&&(\"number\"==typeof e.tracingSessionId?n.tracingSessionId=t.longs===String?String(e.tracingSessionId):e.tracingSessionId:n.tracingSessionId=t.longs===String?i.Long.prototype.toString.call(e.tracingSessionId):t.longs===Number?new i.LongBits(e.tracingSessionId.low>>>0,e.tracingSessionId.high>>>0).toNumber(!0):e.tracingSessionId),null!=e.enableExtraGuardrails&&e.hasOwnProperty(\"enableExtraGuardrails\")&&(n.enableExtraGuardrails=e.enableExtraGuardrails),null!=e.stopTimeoutMs&&e.hasOwnProperty(\"stopTimeoutMs\")&&(n.stopTimeoutMs=e.stopTimeoutMs),null!=e.sessionInitiator&&e.hasOwnProperty(\"sessionInitiator\")&&(n.sessionInitiator=t.enums!==String||void 0===s.perfetto.protos.DataSourceConfig.SessionInitiator[e.sessionInitiator]?e.sessionInitiator:s.perfetto.protos.DataSourceConfig.SessionInitiator[e.sessionInitiator]),null!=e.bufferExhaustedPolicy&&e.hasOwnProperty(\"bufferExhaustedPolicy\")&&(n.bufferExhaustedPolicy=t.enums!==String||void 0===s.perfetto.protos.DataSourceConfig.BufferExhaustedPolicy[e.bufferExhaustedPolicy]?e.bufferExhaustedPolicy:s.perfetto.protos.DataSourceConfig.BufferExhaustedPolicy[e.bufferExhaustedPolicy]),null!=e.priorityBoost&&e.hasOwnProperty(\"priorityBoost\")&&(n.priorityBoost=s.perfetto.protos.PriorityBoostConfig.toObject(e.priorityBoost,t)),null!=e.ftraceConfig&&e.hasOwnProperty(\"ftraceConfig\")&&(n.ftraceConfig=s.perfetto.protos.FtraceConfig.toObject(e.ftraceConfig,t)),null!=e.chromeConfig&&e.hasOwnProperty(\"chromeConfig\")&&(n.chromeConfig=s.perfetto.protos.ChromeConfig.toObject(e.chromeConfig,t)),null!=e.inodeFileConfig&&e.hasOwnProperty(\"inodeFileConfig\")&&(n.inodeFileConfig=s.perfetto.protos.InodeFileConfig.toObject(e.inodeFileConfig,t)),null!=e.processStatsConfig&&e.hasOwnProperty(\"processStatsConfig\")&&(n.processStatsConfig=s.perfetto.protos.ProcessStatsConfig.toObject(e.processStatsConfig,t)),null!=e.sysStatsConfig&&e.hasOwnProperty(\"sysStatsConfig\")&&(n.sysStatsConfig=s.perfetto.protos.SysStatsConfig.toObject(e.sysStatsConfig,t)),null!=e.heapprofdConfig&&e.hasOwnProperty(\"heapprofdConfig\")&&(n.heapprofdConfig=s.perfetto.protos.HeapprofdConfig.toObject(e.heapprofdConfig,t)),null!=e.androidPowerConfig&&e.hasOwnProperty(\"androidPowerConfig\")&&(n.androidPowerConfig=s.perfetto.protos.AndroidPowerConfig.toObject(e.androidPowerConfig,t)),null!=e.androidLogConfig&&e.hasOwnProperty(\"androidLogConfig\")&&(n.androidLogConfig=s.perfetto.protos.AndroidLogConfig.toObject(e.androidLogConfig,t)),null!=e.gpuCounterConfig&&e.hasOwnProperty(\"gpuCounterConfig\")&&(n.gpuCounterConfig=s.perfetto.protos.GpuCounterConfig.toObject(e.gpuCounterConfig,t)),null!=e.packagesListConfig&&e.hasOwnProperty(\"packagesListConfig\")&&(n.packagesListConfig=s.perfetto.protos.PackagesListConfig.toObject(e.packagesListConfig,t)),null!=e.javaHprofConfig&&e.hasOwnProperty(\"javaHprofConfig\")&&(n.javaHprofConfig=s.perfetto.protos.JavaHprofConfig.toObject(e.javaHprofConfig,t)),null!=e.perfEventConfig&&e.hasOwnProperty(\"perfEventConfig\")&&(n.perfEventConfig=s.perfetto.protos.PerfEventConfig.toObject(e.perfEventConfig,t)),null!=e.vulkanMemoryConfig&&e.hasOwnProperty(\"vulkanMemoryConfig\")&&(n.vulkanMemoryConfig=s.perfetto.protos.VulkanMemoryConfig.toObject(e.vulkanMemoryConfig,t)),null!=e.trackEventConfig&&e.hasOwnProperty(\"trackEventConfig\")&&(n.trackEventConfig=s.perfetto.protos.TrackEventConfig.toObject(e.trackEventConfig,t)),null!=e.androidPolledStateConfig&&e.hasOwnProperty(\"androidPolledStateConfig\")&&(n.androidPolledStateConfig=s.perfetto.protos.AndroidPolledStateConfig.toObject(e.androidPolledStateConfig,t)),null!=e.interceptorConfig&&e.hasOwnProperty(\"interceptorConfig\")&&(n.interceptorConfig=s.perfetto.protos.InterceptorConfig.toObject(e.interceptorConfig,t)),null!=e.androidGameInterventionListConfig&&e.hasOwnProperty(\"androidGameInterventionListConfig\")&&(n.androidGameInterventionListConfig=s.perfetto.protos.AndroidGameInterventionListConfig.toObject(e.androidGameInterventionListConfig,t)),null!=e.statsdTracingConfig&&e.hasOwnProperty(\"statsdTracingConfig\")&&(n.statsdTracingConfig=s.perfetto.protos.StatsdTracingConfig.toObject(e.statsdTracingConfig,t)),null!=e.androidSystemPropertyConfig&&e.hasOwnProperty(\"androidSystemPropertyConfig\")&&(n.androidSystemPropertyConfig=s.perfetto.protos.AndroidSystemPropertyConfig.toObject(e.androidSystemPropertyConfig,t)),null!=e.systemInfoConfig&&e.hasOwnProperty(\"systemInfoConfig\")&&(n.systemInfoConfig=s.perfetto.protos.SystemInfoConfig.toObject(e.systemInfoConfig,t)),null!=e.networkPacketTraceConfig&&e.hasOwnProperty(\"networkPacketTraceConfig\")&&(n.networkPacketTraceConfig=s.perfetto.protos.NetworkPacketTraceConfig.toObject(e.networkPacketTraceConfig,t)),null!=e.surfaceflingerLayersConfig&&e.hasOwnProperty(\"surfaceflingerLayersConfig\")&&(n.surfaceflingerLayersConfig=s.perfetto.protos.SurfaceFlingerLayersConfig.toObject(e.surfaceflingerLayersConfig,t)),null!=e.preferSuspendClockForDuration&&e.hasOwnProperty(\"preferSuspendClockForDuration\")&&(n.preferSuspendClockForDuration=e.preferSuspendClockForDuration),null!=e.surfaceflingerTransactionsConfig&&e.hasOwnProperty(\"surfaceflingerTransactionsConfig\")&&(n.surfaceflingerTransactionsConfig=s.perfetto.protos.SurfaceFlingerTransactionsConfig.toObject(e.surfaceflingerTransactionsConfig,t)),null!=e.androidSdkSyspropGuardConfig&&e.hasOwnProperty(\"androidSdkSyspropGuardConfig\")&&(n.androidSdkSyspropGuardConfig=s.perfetto.protos.AndroidSdkSyspropGuardConfig.toObject(e.androidSdkSyspropGuardConfig,t)),null!=e.etwConfig&&e.hasOwnProperty(\"etwConfig\")&&(n.etwConfig=s.perfetto.protos.EtwConfig.toObject(e.etwConfig,t)),null!=e.protologConfig&&e.hasOwnProperty(\"protologConfig\")&&(n.protologConfig=s.perfetto.protos.ProtoLogConfig.toObject(e.protologConfig,t)),null!=e.v8Config&&e.hasOwnProperty(\"v8Config\")&&(n.v8Config=s.perfetto.protos.V8Config.toObject(e.v8Config,t)),null!=e.androidInputEventConfig&&e.hasOwnProperty(\"androidInputEventConfig\")&&(n.androidInputEventConfig=s.perfetto.protos.AndroidInputEventConfig.toObject(e.androidInputEventConfig,t)),null!=e.pixelModemConfig&&e.hasOwnProperty(\"pixelModemConfig\")&&(n.pixelModemConfig=s.perfetto.protos.PixelModemConfig.toObject(e.pixelModemConfig,t)),null!=e.windowmanagerConfig&&e.hasOwnProperty(\"windowmanagerConfig\")&&(n.windowmanagerConfig=s.perfetto.protos.WindowManagerConfig.toObject(e.windowmanagerConfig,t)),null!=e.chromiumSystemMetrics&&e.hasOwnProperty(\"chromiumSystemMetrics\")&&(n.chromiumSystemMetrics=s.perfetto.protos.ChromiumSystemMetricsConfig.toObject(e.chromiumSystemMetrics,t)),null!=e.kernelWakelocksConfig&&e.hasOwnProperty(\"kernelWakelocksConfig\")&&(n.kernelWakelocksConfig=s.perfetto.protos.KernelWakelocksConfig.toObject(e.kernelWakelocksConfig,t)),null!=e.gpuRenderstagesConfig&&e.hasOwnProperty(\"gpuRenderstagesConfig\")&&(n.gpuRenderstagesConfig=s.perfetto.protos.GpuRenderStagesConfig.toObject(e.gpuRenderstagesConfig,t)),null!=e.chromiumHistogramSamples&&e.hasOwnProperty(\"chromiumHistogramSamples\")&&(n.chromiumHistogramSamples=s.perfetto.protos.ChromiumHistogramSamplesConfig.toObject(e.chromiumHistogramSamples,t)),null!=e.appWakelocksConfig&&e.hasOwnProperty(\"appWakelocksConfig\")&&(n.appWakelocksConfig=s.perfetto.protos.AppWakelocksConfig.toObject(e.appWakelocksConfig,t)),null!=e.frozenFtraceConfig&&e.hasOwnProperty(\"frozenFtraceConfig\")&&(n.frozenFtraceConfig=s.perfetto.protos.FrozenFtraceConfig.toObject(e.frozenFtraceConfig,t)),null!=e.cpuPerUidConfig&&e.hasOwnProperty(\"cpuPerUidConfig\")&&(n.cpuPerUidConfig=s.perfetto.protos.CpuPerUidConfig.toObject(e.cpuPerUidConfig,t)),null!=e.legacyConfig&&e.hasOwnProperty(\"legacyConfig\")&&(n.legacyConfig=e.legacyConfig),null!=e.forTesting&&e.hasOwnProperty(\"forTesting\")&&(n.forTesting=s.perfetto.protos.TestConfig.toObject(e.forTesting,t)),n},T.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},T.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DataSourceConfig\"},T.SessionInitiator=(t={},(e=Object.create(t))[t[0]=\"SESSION_INITIATOR_UNSPECIFIED\"]=0,e[t[1]=\"SESSION_INITIATOR_TRUSTED_SYSTEM\"]=1,e),T.BufferExhaustedPolicy=(t={},(e=Object.create(t))[t[0]=\"BUFFER_EXHAUSTED_UNSPECIFIED\"]=0,e[t[1]=\"BUFFER_EXHAUSTED_DROP\"]=1,e[t[2]=\"BUFFER_EXHAUSTED_STALL_THEN_ABORT\"]=2,e[t[3]=\"BUFFER_EXHAUSTED_STALL_THEN_DROP\"]=3,e),T),r.AndroidGameInterventionListConfig=(He.prototype.packageNameFilter=i.emptyArray,He.create=function(e){return new He(e)},He.encode=function(e,t){if(t=t||a.create(),null!=e.packageNameFilter&&e.packageNameFilter.length)for(var r=0;r<e.packageNameFilter.length;++r)t.uint32(10).string(e.packageNameFilter[r]);return t},He.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidGameInterventionListConfig;e.pos<r;){var a=e.uint32();a>>>3==1?(n.packageNameFilter&&n.packageNameFilter.length||(n.packageNameFilter=[]),n.packageNameFilter.push(e.string())):e.skipType(7&a)}return n},He.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidGameInterventionListConfig)return e;var t=new s.perfetto.protos.AndroidGameInterventionListConfig;if(e.packageNameFilter){if(!Array.isArray(e.packageNameFilter))throw TypeError(\".perfetto.protos.AndroidGameInterventionListConfig.packageNameFilter: array expected\");t.packageNameFilter=[];for(var r=0;r<e.packageNameFilter.length;++r)t.packageNameFilter[r]=String(e.packageNameFilter[r])}return t},He.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.packageNameFilter=[]),e.packageNameFilter&&e.packageNameFilter.length){r.packageNameFilter=[];for(var n=0;n<e.packageNameFilter.length;++n)r.packageNameFilter[n]=e.packageNameFilter[n]}return r},He.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},He.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidGameInterventionListConfig\"},He),r.AndroidInputEventConfig=(Ge.prototype.mode=0,Ge.prototype.rules=i.emptyArray,Ge.prototype.traceDispatcherInputEvents=!1,Ge.prototype.traceDispatcherWindowDispatch=!1,Ge.create=function(e){return new Ge(e)},Ge.encode=function(e,t){if(t=t||a.create(),null!=e.mode&&Object.hasOwnProperty.call(e,\"mode\")&&t.uint32(8).int32(e.mode),null!=e.rules&&e.rules.length)for(var r=0;r<e.rules.length;++r)s.perfetto.protos.AndroidInputEventConfig.TraceRule.encode(e.rules[r],t.uint32(18).fork()).ldelim();return null!=e.traceDispatcherInputEvents&&Object.hasOwnProperty.call(e,\"traceDispatcherInputEvents\")&&t.uint32(24).bool(e.traceDispatcherInputEvents),null!=e.traceDispatcherWindowDispatch&&Object.hasOwnProperty.call(e,\"traceDispatcherWindowDispatch\")&&t.uint32(32).bool(e.traceDispatcherWindowDispatch),t},Ge.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidInputEventConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.mode=e.int32();break;case 2:n.rules&&n.rules.length||(n.rules=[]),n.rules.push(s.perfetto.protos.AndroidInputEventConfig.TraceRule.decode(e,e.uint32()));break;case 3:n.traceDispatcherInputEvents=e.bool();break;case 4:n.traceDispatcherWindowDispatch=e.bool();break;default:e.skipType(7&a)}}return n},Ge.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidInputEventConfig)return e;var t=new s.perfetto.protos.AndroidInputEventConfig;switch(e.mode){default:\"number\"==typeof e.mode&&(t.mode=e.mode);break;case\"TRACE_MODE_TRACE_ALL\":case 0:t.mode=0;break;case\"TRACE_MODE_USE_RULES\":case 1:t.mode=1}if(e.rules){if(!Array.isArray(e.rules))throw TypeError(\".perfetto.protos.AndroidInputEventConfig.rules: array expected\");t.rules=[];for(var r=0;r<e.rules.length;++r){if(\"object\"!=typeof e.rules[r])throw TypeError(\".perfetto.protos.AndroidInputEventConfig.rules: object expected\");t.rules[r]=s.perfetto.protos.AndroidInputEventConfig.TraceRule.fromObject(e.rules[r])}}return null!=e.traceDispatcherInputEvents&&(t.traceDispatcherInputEvents=Boolean(e.traceDispatcherInputEvents)),null!=e.traceDispatcherWindowDispatch&&(t.traceDispatcherWindowDispatch=Boolean(e.traceDispatcherWindowDispatch)),t},Ge.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.rules=[]),t.defaults&&(r.mode=t.enums===String?\"TRACE_MODE_TRACE_ALL\":0,r.traceDispatcherInputEvents=!1,r.traceDispatcherWindowDispatch=!1),null!=e.mode&&e.hasOwnProperty(\"mode\")&&(r.mode=t.enums!==String||void 0===s.perfetto.protos.AndroidInputEventConfig.TraceMode[e.mode]?e.mode:s.perfetto.protos.AndroidInputEventConfig.TraceMode[e.mode]),e.rules&&e.rules.length){r.rules=[];for(var n=0;n<e.rules.length;++n)r.rules[n]=s.perfetto.protos.AndroidInputEventConfig.TraceRule.toObject(e.rules[n],t)}return null!=e.traceDispatcherInputEvents&&e.hasOwnProperty(\"traceDispatcherInputEvents\")&&(r.traceDispatcherInputEvents=e.traceDispatcherInputEvents),null!=e.traceDispatcherWindowDispatch&&e.hasOwnProperty(\"traceDispatcherWindowDispatch\")&&(r.traceDispatcherWindowDispatch=e.traceDispatcherWindowDispatch),r},Ge.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ge.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidInputEventConfig\"},Ge.TraceMode=(t={},(e=Object.create(t))[t[0]=\"TRACE_MODE_TRACE_ALL\"]=0,e[t[1]=\"TRACE_MODE_USE_RULES\"]=1,e),Ge.TraceLevel=(t={},(e=Object.create(t))[t[0]=\"TRACE_LEVEL_NONE\"]=0,e[t[1]=\"TRACE_LEVEL_REDACTED\"]=1,e[t[2]=\"TRACE_LEVEL_COMPLETE\"]=2,e),Ge.TraceRule=(Ve.prototype.traceLevel=0,Ve.prototype.matchAllPackages=i.emptyArray,Ve.prototype.matchAnyPackages=i.emptyArray,Ve.prototype.matchSecure=!1,Ve.prototype.matchImeConnectionActive=!1,Ve.create=function(e){return new Ve(e)},Ve.encode=function(e,t){if(t=t||a.create(),null!=e.traceLevel&&Object.hasOwnProperty.call(e,\"traceLevel\")&&t.uint32(8).int32(e.traceLevel),null!=e.matchAllPackages&&e.matchAllPackages.length)for(var r=0;r<e.matchAllPackages.length;++r)t.uint32(18).string(e.matchAllPackages[r]);if(null!=e.matchAnyPackages&&e.matchAnyPackages.length)for(r=0;r<e.matchAnyPackages.length;++r)t.uint32(26).string(e.matchAnyPackages[r]);return null!=e.matchSecure&&Object.hasOwnProperty.call(e,\"matchSecure\")&&t.uint32(32).bool(e.matchSecure),null!=e.matchImeConnectionActive&&Object.hasOwnProperty.call(e,\"matchImeConnectionActive\")&&t.uint32(40).bool(e.matchImeConnectionActive),t},Ve.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidInputEventConfig.TraceRule;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.traceLevel=e.int32();break;case 2:n.matchAllPackages&&n.matchAllPackages.length||(n.matchAllPackages=[]),n.matchAllPackages.push(e.string());break;case 3:n.matchAnyPackages&&n.matchAnyPackages.length||(n.matchAnyPackages=[]),n.matchAnyPackages.push(e.string());break;case 4:n.matchSecure=e.bool();break;case 5:n.matchImeConnectionActive=e.bool();break;default:e.skipType(7&a)}}return n},Ve.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidInputEventConfig.TraceRule)return e;var t=new s.perfetto.protos.AndroidInputEventConfig.TraceRule;switch(e.traceLevel){default:\"number\"==typeof e.traceLevel&&(t.traceLevel=e.traceLevel);break;case\"TRACE_LEVEL_NONE\":case 0:t.traceLevel=0;break;case\"TRACE_LEVEL_REDACTED\":case 1:t.traceLevel=1;break;case\"TRACE_LEVEL_COMPLETE\":case 2:t.traceLevel=2}if(e.matchAllPackages){if(!Array.isArray(e.matchAllPackages))throw TypeError(\".perfetto.protos.AndroidInputEventConfig.TraceRule.matchAllPackages: array expected\");t.matchAllPackages=[];for(var r=0;r<e.matchAllPackages.length;++r)t.matchAllPackages[r]=String(e.matchAllPackages[r])}if(e.matchAnyPackages){if(!Array.isArray(e.matchAnyPackages))throw TypeError(\".perfetto.protos.AndroidInputEventConfig.TraceRule.matchAnyPackages: array expected\");t.matchAnyPackages=[];for(r=0;r<e.matchAnyPackages.length;++r)t.matchAnyPackages[r]=String(e.matchAnyPackages[r])}return null!=e.matchSecure&&(t.matchSecure=Boolean(e.matchSecure)),null!=e.matchImeConnectionActive&&(t.matchImeConnectionActive=Boolean(e.matchImeConnectionActive)),t},Ve.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.matchAllPackages=[],r.matchAnyPackages=[]),t.defaults&&(r.traceLevel=t.enums===String?\"TRACE_LEVEL_NONE\":0,r.matchSecure=!1,r.matchImeConnectionActive=!1),null!=e.traceLevel&&e.hasOwnProperty(\"traceLevel\")&&(r.traceLevel=t.enums!==String||void 0===s.perfetto.protos.AndroidInputEventConfig.TraceLevel[e.traceLevel]?e.traceLevel:s.perfetto.protos.AndroidInputEventConfig.TraceLevel[e.traceLevel]),e.matchAllPackages&&e.matchAllPackages.length){r.matchAllPackages=[];for(var n=0;n<e.matchAllPackages.length;++n)r.matchAllPackages[n]=e.matchAllPackages[n]}if(e.matchAnyPackages&&e.matchAnyPackages.length){r.matchAnyPackages=[];for(n=0;n<e.matchAnyPackages.length;++n)r.matchAnyPackages[n]=e.matchAnyPackages[n]}return null!=e.matchSecure&&e.hasOwnProperty(\"matchSecure\")&&(r.matchSecure=e.matchSecure),null!=e.matchImeConnectionActive&&e.hasOwnProperty(\"matchImeConnectionActive\")&&(r.matchImeConnectionActive=e.matchImeConnectionActive),r},Ve.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ve.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidInputEventConfig.TraceRule\"},Ve),Ge),r.AndroidLogConfig=(qe.prototype.logIds=i.emptyArray,qe.prototype.minPrio=0,qe.prototype.filterTags=i.emptyArray,qe.create=function(e){return new qe(e)},qe.encode=function(e,t){if(t=t||a.create(),null!=e.logIds&&e.logIds.length)for(var r=0;r<e.logIds.length;++r)t.uint32(8).int32(e.logIds[r]);if(null!=e.minPrio&&Object.hasOwnProperty.call(e,\"minPrio\")&&t.uint32(24).int32(e.minPrio),null!=e.filterTags&&e.filterTags.length)for(r=0;r<e.filterTags.length;++r)t.uint32(34).string(e.filterTags[r]);return t},qe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidLogConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.logIds&&n.logIds.length||(n.logIds=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.logIds.push(e.int32());else n.logIds.push(e.int32());break;case 3:n.minPrio=e.int32();break;case 4:n.filterTags&&n.filterTags.length||(n.filterTags=[]),n.filterTags.push(e.string());break;default:e.skipType(7&a)}}return n},qe.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidLogConfig)return e;var t=new s.perfetto.protos.AndroidLogConfig;if(e.logIds){if(!Array.isArray(e.logIds))throw TypeError(\".perfetto.protos.AndroidLogConfig.logIds: array expected\");t.logIds=[];for(var r=0;r<e.logIds.length;++r)switch(e.logIds[r]){default:if(\"number\"==typeof e.logIds[r]){t.logIds[r]=e.logIds[r];break}case\"LID_DEFAULT\":case 0:t.logIds[r]=0;break;case\"LID_RADIO\":case 1:t.logIds[r]=1;break;case\"LID_EVENTS\":case 2:t.logIds[r]=2;break;case\"LID_SYSTEM\":case 3:t.logIds[r]=3;break;case\"LID_CRASH\":case 4:t.logIds[r]=4;break;case\"LID_STATS\":case 5:t.logIds[r]=5;break;case\"LID_SECURITY\":case 6:t.logIds[r]=6;break;case\"LID_KERNEL\":case 7:t.logIds[r]=7}}switch(e.minPrio){default:\"number\"==typeof e.minPrio&&(t.minPrio=e.minPrio);break;case\"PRIO_UNSPECIFIED\":case 0:t.minPrio=0;break;case\"PRIO_UNUSED\":case 1:t.minPrio=1;break;case\"PRIO_VERBOSE\":case 2:t.minPrio=2;break;case\"PRIO_DEBUG\":case 3:t.minPrio=3;break;case\"PRIO_INFO\":case 4:t.minPrio=4;break;case\"PRIO_WARN\":case 5:t.minPrio=5;break;case\"PRIO_ERROR\":case 6:t.minPrio=6;break;case\"PRIO_FATAL\":case 7:t.minPrio=7}if(e.filterTags){if(!Array.isArray(e.filterTags))throw TypeError(\".perfetto.protos.AndroidLogConfig.filterTags: array expected\");t.filterTags=[];for(r=0;r<e.filterTags.length;++r)t.filterTags[r]=String(e.filterTags[r])}return t},qe.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.logIds=[],r.filterTags=[]),t.defaults&&(r.minPrio=t.enums===String?\"PRIO_UNSPECIFIED\":0),e.logIds&&e.logIds.length){r.logIds=[];for(var n=0;n<e.logIds.length;++n)r.logIds[n]=t.enums!==String||void 0===s.perfetto.protos.AndroidLogId[e.logIds[n]]?e.logIds[n]:s.perfetto.protos.AndroidLogId[e.logIds[n]]}if(null!=e.minPrio&&e.hasOwnProperty(\"minPrio\")&&(r.minPrio=t.enums!==String||void 0===s.perfetto.protos.AndroidLogPriority[e.minPrio]?e.minPrio:s.perfetto.protos.AndroidLogPriority[e.minPrio]),e.filterTags&&e.filterTags.length){r.filterTags=[];for(n=0;n<e.filterTags.length;++n)r.filterTags[n]=e.filterTags[n]}return r},qe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},qe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidLogConfig\"},qe),r.AndroidLogId=(t={},(e=Object.create(t))[t[0]=\"LID_DEFAULT\"]=0,e[t[1]=\"LID_RADIO\"]=1,e[t[2]=\"LID_EVENTS\"]=2,e[t[3]=\"LID_SYSTEM\"]=3,e[t[4]=\"LID_CRASH\"]=4,e[t[5]=\"LID_STATS\"]=5,e[t[6]=\"LID_SECURITY\"]=6,e[t[7]=\"LID_KERNEL\"]=7,e),r.AndroidLogPriority=(t={},(e=Object.create(t))[t[0]=\"PRIO_UNSPECIFIED\"]=0,e[t[1]=\"PRIO_UNUSED\"]=1,e[t[2]=\"PRIO_VERBOSE\"]=2,e[t[3]=\"PRIO_DEBUG\"]=3,e[t[4]=\"PRIO_INFO\"]=4,e[t[5]=\"PRIO_WARN\"]=5,e[t[6]=\"PRIO_ERROR\"]=6,e[t[7]=\"PRIO_FATAL\"]=7,e),r.AndroidPolledStateConfig=(ze.prototype.pollMs=0,ze.create=function(e){return new ze(e)},ze.encode=function(e,t){return t=t||a.create(),null!=e.pollMs&&Object.hasOwnProperty.call(e,\"pollMs\")&&t.uint32(8).uint32(e.pollMs),t},ze.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidPolledStateConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.pollMs=e.uint32():e.skipType(7&a)}return n},ze.fromObject=function(e){var t;return e instanceof s.perfetto.protos.AndroidPolledStateConfig?e:(t=new s.perfetto.protos.AndroidPolledStateConfig,null!=e.pollMs&&(t.pollMs=e.pollMs>>>0),t)},ze.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.pollMs=0),null!=e.pollMs&&e.hasOwnProperty(\"pollMs\")&&(r.pollMs=e.pollMs),r},ze.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ze.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidPolledStateConfig\"},ze),r.AndroidSystemPropertyConfig=(We.prototype.pollMs=0,We.prototype.propertyName=i.emptyArray,We.create=function(e){return new We(e)},We.encode=function(e,t){if(t=t||a.create(),null!=e.pollMs&&Object.hasOwnProperty.call(e,\"pollMs\")&&t.uint32(8).uint32(e.pollMs),null!=e.propertyName&&e.propertyName.length)for(var r=0;r<e.propertyName.length;++r)t.uint32(18).string(e.propertyName[r]);return t},We.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidSystemPropertyConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.pollMs=e.uint32();break;case 2:n.propertyName&&n.propertyName.length||(n.propertyName=[]),n.propertyName.push(e.string());break;default:e.skipType(7&a)}}return n},We.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidSystemPropertyConfig)return e;var t=new s.perfetto.protos.AndroidSystemPropertyConfig;if(null!=e.pollMs&&(t.pollMs=e.pollMs>>>0),e.propertyName){if(!Array.isArray(e.propertyName))throw TypeError(\".perfetto.protos.AndroidSystemPropertyConfig.propertyName: array expected\");t.propertyName=[];for(var r=0;r<e.propertyName.length;++r)t.propertyName[r]=String(e.propertyName[r])}return t},We.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.propertyName=[]),t.defaults&&(r.pollMs=0),null!=e.pollMs&&e.hasOwnProperty(\"pollMs\")&&(r.pollMs=e.pollMs),e.propertyName&&e.propertyName.length){r.propertyName=[];for(var n=0;n<e.propertyName.length;++n)r.propertyName[n]=e.propertyName[n]}return r},We.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},We.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidSystemPropertyConfig\"},We),r.AndroidSdkSyspropGuardConfig=($e.prototype.surfaceflingerSkiaTrackEvents=!1,$e.prototype.hwuiSkiaTrackEvents=!1,$e.prototype.hwuiPackageNameFilter=i.emptyArray,$e.create=function(e){return new $e(e)},$e.encode=function(e,t){if(t=t||a.create(),null!=e.surfaceflingerSkiaTrackEvents&&Object.hasOwnProperty.call(e,\"surfaceflingerSkiaTrackEvents\")&&t.uint32(8).bool(e.surfaceflingerSkiaTrackEvents),null!=e.hwuiSkiaTrackEvents&&Object.hasOwnProperty.call(e,\"hwuiSkiaTrackEvents\")&&t.uint32(16).bool(e.hwuiSkiaTrackEvents),null!=e.hwuiPackageNameFilter&&e.hwuiPackageNameFilter.length)for(var r=0;r<e.hwuiPackageNameFilter.length;++r)t.uint32(26).string(e.hwuiPackageNameFilter[r]);return t},$e.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidSdkSyspropGuardConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.surfaceflingerSkiaTrackEvents=e.bool();break;case 2:n.hwuiSkiaTrackEvents=e.bool();break;case 3:n.hwuiPackageNameFilter&&n.hwuiPackageNameFilter.length||(n.hwuiPackageNameFilter=[]),n.hwuiPackageNameFilter.push(e.string());break;default:e.skipType(7&a)}}return n},$e.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidSdkSyspropGuardConfig)return e;var t=new s.perfetto.protos.AndroidSdkSyspropGuardConfig;if(null!=e.surfaceflingerSkiaTrackEvents&&(t.surfaceflingerSkiaTrackEvents=Boolean(e.surfaceflingerSkiaTrackEvents)),null!=e.hwuiSkiaTrackEvents&&(t.hwuiSkiaTrackEvents=Boolean(e.hwuiSkiaTrackEvents)),e.hwuiPackageNameFilter){if(!Array.isArray(e.hwuiPackageNameFilter))throw TypeError(\".perfetto.protos.AndroidSdkSyspropGuardConfig.hwuiPackageNameFilter: array expected\");t.hwuiPackageNameFilter=[];for(var r=0;r<e.hwuiPackageNameFilter.length;++r)t.hwuiPackageNameFilter[r]=String(e.hwuiPackageNameFilter[r])}return t},$e.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.hwuiPackageNameFilter=[]),t.defaults&&(r.surfaceflingerSkiaTrackEvents=!1,r.hwuiSkiaTrackEvents=!1),null!=e.surfaceflingerSkiaTrackEvents&&e.hasOwnProperty(\"surfaceflingerSkiaTrackEvents\")&&(r.surfaceflingerSkiaTrackEvents=e.surfaceflingerSkiaTrackEvents),null!=e.hwuiSkiaTrackEvents&&e.hasOwnProperty(\"hwuiSkiaTrackEvents\")&&(r.hwuiSkiaTrackEvents=e.hwuiSkiaTrackEvents),e.hwuiPackageNameFilter&&e.hwuiPackageNameFilter.length){r.hwuiPackageNameFilter=[];for(var n=0;n<e.hwuiPackageNameFilter.length;++n)r.hwuiPackageNameFilter[n]=e.hwuiPackageNameFilter[n]}return r},$e.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},$e.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidSdkSyspropGuardConfig\"},$e),r.AppWakelocksConfig=(Ke.prototype.writeDelayMs=0,Ke.prototype.filterDurationBelowMs=0,Ke.prototype.dropOwnerPid=!1,Ke.create=function(e){return new Ke(e)},Ke.encode=function(e,t){return t=t||a.create(),null!=e.writeDelayMs&&Object.hasOwnProperty.call(e,\"writeDelayMs\")&&t.uint32(8).int32(e.writeDelayMs),null!=e.filterDurationBelowMs&&Object.hasOwnProperty.call(e,\"filterDurationBelowMs\")&&t.uint32(16).int32(e.filterDurationBelowMs),null!=e.dropOwnerPid&&Object.hasOwnProperty.call(e,\"dropOwnerPid\")&&t.uint32(24).bool(e.dropOwnerPid),t},Ke.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AppWakelocksConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.writeDelayMs=e.int32();break;case 2:n.filterDurationBelowMs=e.int32();break;case 3:n.dropOwnerPid=e.bool();break;default:e.skipType(7&a)}}return n},Ke.fromObject=function(e){var t;return e instanceof s.perfetto.protos.AppWakelocksConfig?e:(t=new s.perfetto.protos.AppWakelocksConfig,null!=e.writeDelayMs&&(t.writeDelayMs=0|e.writeDelayMs),null!=e.filterDurationBelowMs&&(t.filterDurationBelowMs=0|e.filterDurationBelowMs),null!=e.dropOwnerPid&&(t.dropOwnerPid=Boolean(e.dropOwnerPid)),t)},Ke.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.writeDelayMs=0,r.filterDurationBelowMs=0,r.dropOwnerPid=!1),null!=e.writeDelayMs&&e.hasOwnProperty(\"writeDelayMs\")&&(r.writeDelayMs=e.writeDelayMs),null!=e.filterDurationBelowMs&&e.hasOwnProperty(\"filterDurationBelowMs\")&&(r.filterDurationBelowMs=e.filterDurationBelowMs),null!=e.dropOwnerPid&&e.hasOwnProperty(\"dropOwnerPid\")&&(r.dropOwnerPid=e.dropOwnerPid),r},Ke.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ke.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AppWakelocksConfig\"},Ke),r.CpuPerUidConfig=(Ye.prototype.pollMs=0,Ye.create=function(e){return new Ye(e)},Ye.encode=function(e,t){return t=t||a.create(),null!=e.pollMs&&Object.hasOwnProperty.call(e,\"pollMs\")&&t.uint32(8).uint32(e.pollMs),t},Ye.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.CpuPerUidConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.pollMs=e.uint32():e.skipType(7&a)}return n},Ye.fromObject=function(e){var t;return e instanceof s.perfetto.protos.CpuPerUidConfig?e:(t=new s.perfetto.protos.CpuPerUidConfig,null!=e.pollMs&&(t.pollMs=e.pollMs>>>0),t)},Ye.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.pollMs=0),null!=e.pollMs&&e.hasOwnProperty(\"pollMs\")&&(r.pollMs=e.pollMs),r},Ye.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ye.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.CpuPerUidConfig\"},Ye),r.KernelWakelocksConfig=(Je.prototype.pollMs=0,Je.create=function(e){return new Je(e)},Je.encode=function(e,t){return t=t||a.create(),null!=e.pollMs&&Object.hasOwnProperty.call(e,\"pollMs\")&&t.uint32(8).uint32(e.pollMs),t},Je.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.KernelWakelocksConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.pollMs=e.uint32():e.skipType(7&a)}return n},Je.fromObject=function(e){var t;return e instanceof s.perfetto.protos.KernelWakelocksConfig?e:(t=new s.perfetto.protos.KernelWakelocksConfig,null!=e.pollMs&&(t.pollMs=e.pollMs>>>0),t)},Je.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.pollMs=0),null!=e.pollMs&&e.hasOwnProperty(\"pollMs\")&&(r.pollMs=e.pollMs),r},Je.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Je.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.KernelWakelocksConfig\"},Je),r.NetworkPacketTraceConfig=(Qe.prototype.pollMs=0,Qe.prototype.aggregationThreshold=0,Qe.prototype.internLimit=0,Qe.prototype.dropLocalPort=!1,Qe.prototype.dropRemotePort=!1,Qe.prototype.dropTcpFlags=!1,Qe.create=function(e){return new Qe(e)},Qe.encode=function(e,t){return t=t||a.create(),null!=e.pollMs&&Object.hasOwnProperty.call(e,\"pollMs\")&&t.uint32(8).uint32(e.pollMs),null!=e.aggregationThreshold&&Object.hasOwnProperty.call(e,\"aggregationThreshold\")&&t.uint32(16).uint32(e.aggregationThreshold),null!=e.internLimit&&Object.hasOwnProperty.call(e,\"internLimit\")&&t.uint32(24).uint32(e.internLimit),null!=e.dropLocalPort&&Object.hasOwnProperty.call(e,\"dropLocalPort\")&&t.uint32(32).bool(e.dropLocalPort),null!=e.dropRemotePort&&Object.hasOwnProperty.call(e,\"dropRemotePort\")&&t.uint32(40).bool(e.dropRemotePort),null!=e.dropTcpFlags&&Object.hasOwnProperty.call(e,\"dropTcpFlags\")&&t.uint32(48).bool(e.dropTcpFlags),t},Qe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.NetworkPacketTraceConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.pollMs=e.uint32();break;case 2:n.aggregationThreshold=e.uint32();break;case 3:n.internLimit=e.uint32();break;case 4:n.dropLocalPort=e.bool();break;case 5:n.dropRemotePort=e.bool();break;case 6:n.dropTcpFlags=e.bool();break;default:e.skipType(7&a)}}return n},Qe.fromObject=function(e){var t;return e instanceof s.perfetto.protos.NetworkPacketTraceConfig?e:(t=new s.perfetto.protos.NetworkPacketTraceConfig,null!=e.pollMs&&(t.pollMs=e.pollMs>>>0),null!=e.aggregationThreshold&&(t.aggregationThreshold=e.aggregationThreshold>>>0),null!=e.internLimit&&(t.internLimit=e.internLimit>>>0),null!=e.dropLocalPort&&(t.dropLocalPort=Boolean(e.dropLocalPort)),null!=e.dropRemotePort&&(t.dropRemotePort=Boolean(e.dropRemotePort)),null!=e.dropTcpFlags&&(t.dropTcpFlags=Boolean(e.dropTcpFlags)),t)},Qe.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.pollMs=0,r.aggregationThreshold=0,r.internLimit=0,r.dropLocalPort=!1,r.dropRemotePort=!1,r.dropTcpFlags=!1),null!=e.pollMs&&e.hasOwnProperty(\"pollMs\")&&(r.pollMs=e.pollMs),null!=e.aggregationThreshold&&e.hasOwnProperty(\"aggregationThreshold\")&&(r.aggregationThreshold=e.aggregationThreshold),null!=e.internLimit&&e.hasOwnProperty(\"internLimit\")&&(r.internLimit=e.internLimit),null!=e.dropLocalPort&&e.hasOwnProperty(\"dropLocalPort\")&&(r.dropLocalPort=e.dropLocalPort),null!=e.dropRemotePort&&e.hasOwnProperty(\"dropRemotePort\")&&(r.dropRemotePort=e.dropRemotePort),null!=e.dropTcpFlags&&e.hasOwnProperty(\"dropTcpFlags\")&&(r.dropTcpFlags=e.dropTcpFlags),r},Qe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Qe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.NetworkPacketTraceConfig\"},Qe),r.PackagesListConfig=(Ze.prototype.packageNameFilter=i.emptyArray,Ze.prototype.onlyWriteOnCpuUseEveryMs=0,Ze.create=function(e){return new Ze(e)},Ze.encode=function(e,t){if(t=t||a.create(),null!=e.packageNameFilter&&e.packageNameFilter.length)for(var r=0;r<e.packageNameFilter.length;++r)t.uint32(10).string(e.packageNameFilter[r]);return null!=e.onlyWriteOnCpuUseEveryMs&&Object.hasOwnProperty.call(e,\"onlyWriteOnCpuUseEveryMs\")&&t.uint32(16).uint32(e.onlyWriteOnCpuUseEveryMs),t},Ze.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PackagesListConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.packageNameFilter&&n.packageNameFilter.length||(n.packageNameFilter=[]),n.packageNameFilter.push(e.string());break;case 2:n.onlyWriteOnCpuUseEveryMs=e.uint32();break;default:e.skipType(7&a)}}return n},Ze.fromObject=function(e){if(e instanceof s.perfetto.protos.PackagesListConfig)return e;var t=new s.perfetto.protos.PackagesListConfig;if(e.packageNameFilter){if(!Array.isArray(e.packageNameFilter))throw TypeError(\".perfetto.protos.PackagesListConfig.packageNameFilter: array expected\");t.packageNameFilter=[];for(var r=0;r<e.packageNameFilter.length;++r)t.packageNameFilter[r]=String(e.packageNameFilter[r])}return null!=e.onlyWriteOnCpuUseEveryMs&&(t.onlyWriteOnCpuUseEveryMs=e.onlyWriteOnCpuUseEveryMs>>>0),t},Ze.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.packageNameFilter=[]),t.defaults&&(r.onlyWriteOnCpuUseEveryMs=0),e.packageNameFilter&&e.packageNameFilter.length){r.packageNameFilter=[];for(var n=0;n<e.packageNameFilter.length;++n)r.packageNameFilter[n]=e.packageNameFilter[n]}return null!=e.onlyWriteOnCpuUseEveryMs&&e.hasOwnProperty(\"onlyWriteOnCpuUseEveryMs\")&&(r.onlyWriteOnCpuUseEveryMs=e.onlyWriteOnCpuUseEveryMs),r},Ze.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ze.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PackagesListConfig\"},Ze),r.PixelModemConfig=(Xe.prototype.eventGroup=0,Xe.prototype.pigweedHashAllowList=i.emptyArray,Xe.prototype.pigweedHashDenyList=i.emptyArray,Xe.create=function(e){return new Xe(e)},Xe.encode=function(e,t){if(t=t||a.create(),null!=e.eventGroup&&Object.hasOwnProperty.call(e,\"eventGroup\")&&t.uint32(8).int32(e.eventGroup),null!=e.pigweedHashAllowList&&e.pigweedHashAllowList.length)for(var r=0;r<e.pigweedHashAllowList.length;++r)t.uint32(16).int64(e.pigweedHashAllowList[r]);if(null!=e.pigweedHashDenyList&&e.pigweedHashDenyList.length)for(r=0;r<e.pigweedHashDenyList.length;++r)t.uint32(24).int64(e.pigweedHashDenyList[r]);return t},Xe.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PixelModemConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.eventGroup=e.int32();break;case 2:if(n.pigweedHashAllowList&&n.pigweedHashAllowList.length||(n.pigweedHashAllowList=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.pigweedHashAllowList.push(e.int64());else n.pigweedHashAllowList.push(e.int64());break;case 3:if(n.pigweedHashDenyList&&n.pigweedHashDenyList.length||(n.pigweedHashDenyList=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.pigweedHashDenyList.push(e.int64());else n.pigweedHashDenyList.push(e.int64());break;default:e.skipType(7&a)}}return n},Xe.fromObject=function(e){if(e instanceof s.perfetto.protos.PixelModemConfig)return e;var t=new s.perfetto.protos.PixelModemConfig;switch(e.eventGroup){default:\"number\"==typeof e.eventGroup&&(t.eventGroup=e.eventGroup);break;case\"EVENT_GROUP_UNKNOWN\":case 0:t.eventGroup=0;break;case\"EVENT_GROUP_LOW_BANDWIDTH\":case 1:t.eventGroup=1;break;case\"EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH\":case 2:t.eventGroup=2}if(e.pigweedHashAllowList){if(!Array.isArray(e.pigweedHashAllowList))throw TypeError(\".perfetto.protos.PixelModemConfig.pigweedHashAllowList: array expected\");t.pigweedHashAllowList=[];for(var r=0;r<e.pigweedHashAllowList.length;++r)i.Long?(t.pigweedHashAllowList[r]=i.Long.fromValue(e.pigweedHashAllowList[r])).unsigned=!1:\"string\"==typeof e.pigweedHashAllowList[r]?t.pigweedHashAllowList[r]=parseInt(e.pigweedHashAllowList[r],10):\"number\"==typeof e.pigweedHashAllowList[r]?t.pigweedHashAllowList[r]=e.pigweedHashAllowList[r]:\"object\"==typeof e.pigweedHashAllowList[r]&&(t.pigweedHashAllowList[r]=new i.LongBits(e.pigweedHashAllowList[r].low>>>0,e.pigweedHashAllowList[r].high>>>0).toNumber())}if(e.pigweedHashDenyList){if(!Array.isArray(e.pigweedHashDenyList))throw TypeError(\".perfetto.protos.PixelModemConfig.pigweedHashDenyList: array expected\");t.pigweedHashDenyList=[];for(r=0;r<e.pigweedHashDenyList.length;++r)i.Long?(t.pigweedHashDenyList[r]=i.Long.fromValue(e.pigweedHashDenyList[r])).unsigned=!1:\"string\"==typeof e.pigweedHashDenyList[r]?t.pigweedHashDenyList[r]=parseInt(e.pigweedHashDenyList[r],10):\"number\"==typeof e.pigweedHashDenyList[r]?t.pigweedHashDenyList[r]=e.pigweedHashDenyList[r]:\"object\"==typeof e.pigweedHashDenyList[r]&&(t.pigweedHashDenyList[r]=new i.LongBits(e.pigweedHashDenyList[r].low>>>0,e.pigweedHashDenyList[r].high>>>0).toNumber())}return t},Xe.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.pigweedHashAllowList=[],r.pigweedHashDenyList=[]),t.defaults&&(r.eventGroup=t.enums===String?\"EVENT_GROUP_UNKNOWN\":0),null!=e.eventGroup&&e.hasOwnProperty(\"eventGroup\")&&(r.eventGroup=t.enums!==String||void 0===s.perfetto.protos.PixelModemConfig.EventGroup[e.eventGroup]?e.eventGroup:s.perfetto.protos.PixelModemConfig.EventGroup[e.eventGroup]),e.pigweedHashAllowList&&e.pigweedHashAllowList.length){r.pigweedHashAllowList=[];for(var n=0;n<e.pigweedHashAllowList.length;++n)\"number\"==typeof e.pigweedHashAllowList[n]?r.pigweedHashAllowList[n]=t.longs===String?String(e.pigweedHashAllowList[n]):e.pigweedHashAllowList[n]:r.pigweedHashAllowList[n]=t.longs===String?i.Long.prototype.toString.call(e.pigweedHashAllowList[n]):t.longs===Number?new i.LongBits(e.pigweedHashAllowList[n].low>>>0,e.pigweedHashAllowList[n].high>>>0).toNumber():e.pigweedHashAllowList[n]}if(e.pigweedHashDenyList&&e.pigweedHashDenyList.length){r.pigweedHashDenyList=[];for(n=0;n<e.pigweedHashDenyList.length;++n)\"number\"==typeof e.pigweedHashDenyList[n]?r.pigweedHashDenyList[n]=t.longs===String?String(e.pigweedHashDenyList[n]):e.pigweedHashDenyList[n]:r.pigweedHashDenyList[n]=t.longs===String?i.Long.prototype.toString.call(e.pigweedHashDenyList[n]):t.longs===Number?new i.LongBits(e.pigweedHashDenyList[n].low>>>0,e.pigweedHashDenyList[n].high>>>0).toNumber():e.pigweedHashDenyList[n]}return r},Xe.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Xe.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PixelModemConfig\"},Xe.EventGroup=(t={},(e=Object.create(t))[t[0]=\"EVENT_GROUP_UNKNOWN\"]=0,e[t[1]=\"EVENT_GROUP_LOW_BANDWIDTH\"]=1,e[t[2]=\"EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH\"]=2,e),Xe),r.ProtoLogConfig=(et.prototype.groupOverrides=i.emptyArray,et.prototype.tracingMode=0,et.prototype.defaultLogFromLevel=0,et.create=function(e){return new et(e)},et.encode=function(e,t){if(t=t||a.create(),null!=e.groupOverrides&&e.groupOverrides.length)for(var r=0;r<e.groupOverrides.length;++r)s.perfetto.protos.ProtoLogGroup.encode(e.groupOverrides[r],t.uint32(10).fork()).ldelim();return null!=e.tracingMode&&Object.hasOwnProperty.call(e,\"tracingMode\")&&t.uint32(16).int32(e.tracingMode),null!=e.defaultLogFromLevel&&Object.hasOwnProperty.call(e,\"defaultLogFromLevel\")&&t.uint32(24).int32(e.defaultLogFromLevel),t},et.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ProtoLogConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.groupOverrides&&n.groupOverrides.length||(n.groupOverrides=[]),n.groupOverrides.push(s.perfetto.protos.ProtoLogGroup.decode(e,e.uint32()));break;case 2:n.tracingMode=e.int32();break;case 3:n.defaultLogFromLevel=e.int32();break;default:e.skipType(7&a)}}return n},et.fromObject=function(e){if(e instanceof s.perfetto.protos.ProtoLogConfig)return e;var t=new s.perfetto.protos.ProtoLogConfig;if(e.groupOverrides){if(!Array.isArray(e.groupOverrides))throw TypeError(\".perfetto.protos.ProtoLogConfig.groupOverrides: array expected\");t.groupOverrides=[];for(var r=0;r<e.groupOverrides.length;++r){if(\"object\"!=typeof e.groupOverrides[r])throw TypeError(\".perfetto.protos.ProtoLogConfig.groupOverrides: object expected\");t.groupOverrides[r]=s.perfetto.protos.ProtoLogGroup.fromObject(e.groupOverrides[r])}}switch(e.tracingMode){default:\"number\"==typeof e.tracingMode&&(t.tracingMode=e.tracingMode);break;case\"DEFAULT\":case 0:t.tracingMode=0;break;case\"ENABLE_ALL\":case 1:t.tracingMode=1}switch(e.defaultLogFromLevel){default:\"number\"==typeof e.defaultLogFromLevel&&(t.defaultLogFromLevel=e.defaultLogFromLevel);break;case\"PROTOLOG_LEVEL_UNDEFINED\":case 0:t.defaultLogFromLevel=0;break;case\"PROTOLOG_LEVEL_DEBUG\":case 1:t.defaultLogFromLevel=1;break;case\"PROTOLOG_LEVEL_VERBOSE\":case 2:t.defaultLogFromLevel=2;break;case\"PROTOLOG_LEVEL_INFO\":case 3:t.defaultLogFromLevel=3;break;case\"PROTOLOG_LEVEL_WARN\":case 4:t.defaultLogFromLevel=4;break;case\"PROTOLOG_LEVEL_ERROR\":case 5:t.defaultLogFromLevel=5;break;case\"PROTOLOG_LEVEL_WTF\":case 6:t.defaultLogFromLevel=6}return t},et.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.groupOverrides=[]),t.defaults&&(r.tracingMode=t.enums===String?\"DEFAULT\":0,r.defaultLogFromLevel=t.enums===String?\"PROTOLOG_LEVEL_UNDEFINED\":0),e.groupOverrides&&e.groupOverrides.length){r.groupOverrides=[];for(var n=0;n<e.groupOverrides.length;++n)r.groupOverrides[n]=s.perfetto.protos.ProtoLogGroup.toObject(e.groupOverrides[n],t)}return null!=e.tracingMode&&e.hasOwnProperty(\"tracingMode\")&&(r.tracingMode=t.enums!==String||void 0===s.perfetto.protos.ProtoLogConfig.TracingMode[e.tracingMode]?e.tracingMode:s.perfetto.protos.ProtoLogConfig.TracingMode[e.tracingMode]),null!=e.defaultLogFromLevel&&e.hasOwnProperty(\"defaultLogFromLevel\")&&(r.defaultLogFromLevel=t.enums!==String||void 0===s.perfetto.protos.ProtoLogLevel[e.defaultLogFromLevel]?e.defaultLogFromLevel:s.perfetto.protos.ProtoLogLevel[e.defaultLogFromLevel]),r},et.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},et.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ProtoLogConfig\"},et.TracingMode=(t={},(e=Object.create(t))[t[0]=\"DEFAULT\"]=0,e[t[1]=\"ENABLE_ALL\"]=1,e),et),r.ProtoLogGroup=(tt.prototype.groupName=\"\",tt.prototype.logFrom=0,tt.prototype.collectStacktrace=!1,tt.create=function(e){return new tt(e)},tt.encode=function(e,t){return t=t||a.create(),null!=e.groupName&&Object.hasOwnProperty.call(e,\"groupName\")&&t.uint32(10).string(e.groupName),null!=e.logFrom&&Object.hasOwnProperty.call(e,\"logFrom\")&&t.uint32(16).int32(e.logFrom),null!=e.collectStacktrace&&Object.hasOwnProperty.call(e,\"collectStacktrace\")&&t.uint32(24).bool(e.collectStacktrace),t},tt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ProtoLogGroup;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.groupName=e.string();break;case 2:n.logFrom=e.int32();break;case 3:n.collectStacktrace=e.bool();break;default:e.skipType(7&a)}}return n},tt.fromObject=function(e){if(e instanceof s.perfetto.protos.ProtoLogGroup)return e;var t=new s.perfetto.protos.ProtoLogGroup;switch(null!=e.groupName&&(t.groupName=String(e.groupName)),e.logFrom){default:\"number\"==typeof e.logFrom&&(t.logFrom=e.logFrom);break;case\"PROTOLOG_LEVEL_UNDEFINED\":case 0:t.logFrom=0;break;case\"PROTOLOG_LEVEL_DEBUG\":case 1:t.logFrom=1;break;case\"PROTOLOG_LEVEL_VERBOSE\":case 2:t.logFrom=2;break;case\"PROTOLOG_LEVEL_INFO\":case 3:t.logFrom=3;break;case\"PROTOLOG_LEVEL_WARN\":case 4:t.logFrom=4;break;case\"PROTOLOG_LEVEL_ERROR\":case 5:t.logFrom=5;break;case\"PROTOLOG_LEVEL_WTF\":case 6:t.logFrom=6}return null!=e.collectStacktrace&&(t.collectStacktrace=Boolean(e.collectStacktrace)),t},tt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.groupName=\"\",r.logFrom=t.enums===String?\"PROTOLOG_LEVEL_UNDEFINED\":0,r.collectStacktrace=!1),null!=e.groupName&&e.hasOwnProperty(\"groupName\")&&(r.groupName=e.groupName),null!=e.logFrom&&e.hasOwnProperty(\"logFrom\")&&(r.logFrom=t.enums!==String||void 0===s.perfetto.protos.ProtoLogLevel[e.logFrom]?e.logFrom:s.perfetto.protos.ProtoLogLevel[e.logFrom]),null!=e.collectStacktrace&&e.hasOwnProperty(\"collectStacktrace\")&&(r.collectStacktrace=e.collectStacktrace),r},tt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},tt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ProtoLogGroup\"},tt),r.ProtoLogLevel=(t={},(e=Object.create(t))[t[0]=\"PROTOLOG_LEVEL_UNDEFINED\"]=0,e[t[1]=\"PROTOLOG_LEVEL_DEBUG\"]=1,e[t[2]=\"PROTOLOG_LEVEL_VERBOSE\"]=2,e[t[3]=\"PROTOLOG_LEVEL_INFO\"]=3,e[t[4]=\"PROTOLOG_LEVEL_WARN\"]=4,e[t[5]=\"PROTOLOG_LEVEL_ERROR\"]=5,e[t[6]=\"PROTOLOG_LEVEL_WTF\"]=6,e),r.SurfaceFlingerLayersConfig=(rt.prototype.mode=0,rt.prototype.traceFlags=i.emptyArray,rt.create=function(e){return new rt(e)},rt.encode=function(e,t){if(t=t||a.create(),null!=e.mode&&Object.hasOwnProperty.call(e,\"mode\")&&t.uint32(8).int32(e.mode),null!=e.traceFlags&&e.traceFlags.length)for(var r=0;r<e.traceFlags.length;++r)t.uint32(16).int32(e.traceFlags[r]);return t},rt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.SurfaceFlingerLayersConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.mode=e.int32();break;case 2:if(n.traceFlags&&n.traceFlags.length||(n.traceFlags=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.traceFlags.push(e.int32());else n.traceFlags.push(e.int32());break;default:e.skipType(7&a)}}return n},rt.fromObject=function(e){if(e instanceof s.perfetto.protos.SurfaceFlingerLayersConfig)return e;var t=new s.perfetto.protos.SurfaceFlingerLayersConfig;switch(e.mode){default:\"number\"==typeof e.mode&&(t.mode=e.mode);break;case\"MODE_UNSPECIFIED\":case 0:t.mode=0;break;case\"MODE_ACTIVE\":case 1:t.mode=1;break;case\"MODE_GENERATED\":case 2:t.mode=2;break;case\"MODE_DUMP\":case 3:t.mode=3;break;case\"MODE_GENERATED_BUGREPORT_ONLY\":case 4:t.mode=4}if(e.traceFlags){if(!Array.isArray(e.traceFlags))throw TypeError(\".perfetto.protos.SurfaceFlingerLayersConfig.traceFlags: array expected\");t.traceFlags=[];for(var r=0;r<e.traceFlags.length;++r)switch(e.traceFlags[r]){default:if(\"number\"==typeof e.traceFlags[r]){t.traceFlags[r]=e.traceFlags[r];break}case\"TRACE_FLAG_UNSPECIFIED\":case 0:t.traceFlags[r]=0;break;case\"TRACE_FLAG_INPUT\":case 2:t.traceFlags[r]=2;break;case\"TRACE_FLAG_COMPOSITION\":case 4:t.traceFlags[r]=4;break;case\"TRACE_FLAG_EXTRA\":case 8:t.traceFlags[r]=8;break;case\"TRACE_FLAG_HWC\":case 16:t.traceFlags[r]=16;break;case\"TRACE_FLAG_BUFFERS\":case 32:t.traceFlags[r]=32;break;case\"TRACE_FLAG_VIRTUAL_DISPLAYS\":case 64:t.traceFlags[r]=64;break;case\"TRACE_FLAG_ALL\":case 14:t.traceFlags[r]=14}}return t},rt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.traceFlags=[]),t.defaults&&(r.mode=t.enums===String?\"MODE_UNSPECIFIED\":0),null!=e.mode&&e.hasOwnProperty(\"mode\")&&(r.mode=t.enums!==String||void 0===s.perfetto.protos.SurfaceFlingerLayersConfig.Mode[e.mode]?e.mode:s.perfetto.protos.SurfaceFlingerLayersConfig.Mode[e.mode]),e.traceFlags&&e.traceFlags.length){r.traceFlags=[];for(var n=0;n<e.traceFlags.length;++n)r.traceFlags[n]=t.enums!==String||void 0===s.perfetto.protos.SurfaceFlingerLayersConfig.TraceFlag[e.traceFlags[n]]?e.traceFlags[n]:s.perfetto.protos.SurfaceFlingerLayersConfig.TraceFlag[e.traceFlags[n]]}return r},rt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},rt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SurfaceFlingerLayersConfig\"},rt.Mode=(t={},(e=Object.create(t))[t[0]=\"MODE_UNSPECIFIED\"]=0,e[t[1]=\"MODE_ACTIVE\"]=1,e[t[2]=\"MODE_GENERATED\"]=2,e[t[3]=\"MODE_DUMP\"]=3,e[t[4]=\"MODE_GENERATED_BUGREPORT_ONLY\"]=4,e),rt.TraceFlag=(t={},(e=Object.create(t))[t[0]=\"TRACE_FLAG_UNSPECIFIED\"]=0,e[t[2]=\"TRACE_FLAG_INPUT\"]=2,e[t[4]=\"TRACE_FLAG_COMPOSITION\"]=4,e[t[8]=\"TRACE_FLAG_EXTRA\"]=8,e[t[16]=\"TRACE_FLAG_HWC\"]=16,e[t[32]=\"TRACE_FLAG_BUFFERS\"]=32,e[t[64]=\"TRACE_FLAG_VIRTUAL_DISPLAYS\"]=64,e[t[14]=\"TRACE_FLAG_ALL\"]=14,e),rt),r.SurfaceFlingerTransactionsConfig=(nt.prototype.mode=0,nt.create=function(e){return new nt(e)},nt.encode=function(e,t){return t=t||a.create(),null!=e.mode&&Object.hasOwnProperty.call(e,\"mode\")&&t.uint32(8).int32(e.mode),t},nt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.SurfaceFlingerTransactionsConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.mode=e.int32():e.skipType(7&a)}return n},nt.fromObject=function(e){if(e instanceof s.perfetto.protos.SurfaceFlingerTransactionsConfig)return e;var t=new s.perfetto.protos.SurfaceFlingerTransactionsConfig;switch(e.mode){default:\"number\"==typeof e.mode&&(t.mode=e.mode);break;case\"MODE_UNSPECIFIED\":case 0:t.mode=0;break;case\"MODE_CONTINUOUS\":case 1:t.mode=1;break;case\"MODE_ACTIVE\":case 2:t.mode=2}return t},nt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.mode=t.enums===String?\"MODE_UNSPECIFIED\":0),null!=e.mode&&e.hasOwnProperty(\"mode\")&&(r.mode=t.enums!==String||void 0===s.perfetto.protos.SurfaceFlingerTransactionsConfig.Mode[e.mode]?e.mode:s.perfetto.protos.SurfaceFlingerTransactionsConfig.Mode[e.mode]),r},nt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},nt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SurfaceFlingerTransactionsConfig\"},nt.Mode=(t={},(e=Object.create(t))[t[0]=\"MODE_UNSPECIFIED\"]=0,e[t[1]=\"MODE_CONTINUOUS\"]=1,e[t[2]=\"MODE_ACTIVE\"]=2,e),nt),r.WindowManagerConfig=(at.prototype.logFrequency=0,at.prototype.logLevel=0,at.create=function(e){return new at(e)},at.encode=function(e,t){return t=t||a.create(),null!=e.logFrequency&&Object.hasOwnProperty.call(e,\"logFrequency\")&&t.uint32(8).int32(e.logFrequency),null!=e.logLevel&&Object.hasOwnProperty.call(e,\"logLevel\")&&t.uint32(16).int32(e.logLevel),t},at.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.WindowManagerConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.logFrequency=e.int32();break;case 2:n.logLevel=e.int32();break;default:e.skipType(7&a)}}return n},at.fromObject=function(e){if(e instanceof s.perfetto.protos.WindowManagerConfig)return e;var t=new s.perfetto.protos.WindowManagerConfig;switch(e.logFrequency){default:\"number\"==typeof e.logFrequency&&(t.logFrequency=e.logFrequency);break;case\"LOG_FREQUENCY_UNSPECIFIED\":case 0:t.logFrequency=0;break;case\"LOG_FREQUENCY_FRAME\":case 1:t.logFrequency=1;break;case\"LOG_FREQUENCY_TRANSACTION\":case 2:t.logFrequency=2;break;case\"LOG_FREQUENCY_SINGLE_DUMP\":case 3:t.logFrequency=3}switch(e.logLevel){default:\"number\"==typeof e.logLevel&&(t.logLevel=e.logLevel);break;case\"LOG_LEVEL_UNSPECIFIED\":case 0:t.logLevel=0;break;case\"LOG_LEVEL_VERBOSE\":case 1:t.logLevel=1;break;case\"LOG_LEVEL_DEBUG\":case 2:t.logLevel=2;break;case\"LOG_LEVEL_CRITICAL\":case 3:t.logLevel=3}return t},at.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.logFrequency=t.enums===String?\"LOG_FREQUENCY_UNSPECIFIED\":0,r.logLevel=t.enums===String?\"LOG_LEVEL_UNSPECIFIED\":0),null!=e.logFrequency&&e.hasOwnProperty(\"logFrequency\")&&(r.logFrequency=t.enums!==String||void 0===s.perfetto.protos.WindowManagerConfig.LogFrequency[e.logFrequency]?e.logFrequency:s.perfetto.protos.WindowManagerConfig.LogFrequency[e.logFrequency]),null!=e.logLevel&&e.hasOwnProperty(\"logLevel\")&&(r.logLevel=t.enums!==String||void 0===s.perfetto.protos.WindowManagerConfig.LogLevel[e.logLevel]?e.logLevel:s.perfetto.protos.WindowManagerConfig.LogLevel[e.logLevel]),r},at.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},at.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.WindowManagerConfig\"},at.LogFrequency=(t={},(e=Object.create(t))[t[0]=\"LOG_FREQUENCY_UNSPECIFIED\"]=0,e[t[1]=\"LOG_FREQUENCY_FRAME\"]=1,e[t[2]=\"LOG_FREQUENCY_TRANSACTION\"]=2,e[t[3]=\"LOG_FREQUENCY_SINGLE_DUMP\"]=3,e),at.LogLevel=(t={},(e=Object.create(t))[t[0]=\"LOG_LEVEL_UNSPECIFIED\"]=0,e[t[1]=\"LOG_LEVEL_VERBOSE\"]=1,e[t[2]=\"LOG_LEVEL_DEBUG\"]=2,e[t[3]=\"LOG_LEVEL_CRITICAL\"]=3,e),at),r.ChromeConfig=(it.prototype.traceConfig=\"\",it.prototype.privacyFilteringEnabled=!1,it.prototype.convertToLegacyJson=!1,it.prototype.clientPriority=0,it.prototype.jsonAgentLabelFilter=\"\",it.prototype.eventPackageNameFilterEnabled=!1,it.create=function(e){return new it(e)},it.encode=function(e,t){return t=t||a.create(),null!=e.traceConfig&&Object.hasOwnProperty.call(e,\"traceConfig\")&&t.uint32(10).string(e.traceConfig),null!=e.privacyFilteringEnabled&&Object.hasOwnProperty.call(e,\"privacyFilteringEnabled\")&&t.uint32(16).bool(e.privacyFilteringEnabled),null!=e.convertToLegacyJson&&Object.hasOwnProperty.call(e,\"convertToLegacyJson\")&&t.uint32(24).bool(e.convertToLegacyJson),null!=e.clientPriority&&Object.hasOwnProperty.call(e,\"clientPriority\")&&t.uint32(32).int32(e.clientPriority),null!=e.jsonAgentLabelFilter&&Object.hasOwnProperty.call(e,\"jsonAgentLabelFilter\")&&t.uint32(42).string(e.jsonAgentLabelFilter),null!=e.eventPackageNameFilterEnabled&&Object.hasOwnProperty.call(e,\"eventPackageNameFilterEnabled\")&&t.uint32(48).bool(e.eventPackageNameFilterEnabled),t},it.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ChromeConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.traceConfig=e.string();break;case 2:n.privacyFilteringEnabled=e.bool();break;case 3:n.convertToLegacyJson=e.bool();break;case 4:n.clientPriority=e.int32();break;case 5:n.jsonAgentLabelFilter=e.string();break;case 6:n.eventPackageNameFilterEnabled=e.bool();break;default:e.skipType(7&a)}}return n},it.fromObject=function(e){if(e instanceof s.perfetto.protos.ChromeConfig)return e;var t=new s.perfetto.protos.ChromeConfig;switch(null!=e.traceConfig&&(t.traceConfig=String(e.traceConfig)),null!=e.privacyFilteringEnabled&&(t.privacyFilteringEnabled=Boolean(e.privacyFilteringEnabled)),null!=e.convertToLegacyJson&&(t.convertToLegacyJson=Boolean(e.convertToLegacyJson)),e.clientPriority){default:\"number\"==typeof e.clientPriority&&(t.clientPriority=e.clientPriority);break;case\"UNKNOWN\":case 0:t.clientPriority=0;break;case\"BACKGROUND\":case 1:t.clientPriority=1;break;case\"USER_INITIATED\":case 2:t.clientPriority=2}return null!=e.jsonAgentLabelFilter&&(t.jsonAgentLabelFilter=String(e.jsonAgentLabelFilter)),null!=e.eventPackageNameFilterEnabled&&(t.eventPackageNameFilterEnabled=Boolean(e.eventPackageNameFilterEnabled)),t},it.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.traceConfig=\"\",r.privacyFilteringEnabled=!1,r.convertToLegacyJson=!1,r.clientPriority=t.enums===String?\"UNKNOWN\":0,r.jsonAgentLabelFilter=\"\",r.eventPackageNameFilterEnabled=!1),null!=e.traceConfig&&e.hasOwnProperty(\"traceConfig\")&&(r.traceConfig=e.traceConfig),null!=e.privacyFilteringEnabled&&e.hasOwnProperty(\"privacyFilteringEnabled\")&&(r.privacyFilteringEnabled=e.privacyFilteringEnabled),null!=e.convertToLegacyJson&&e.hasOwnProperty(\"convertToLegacyJson\")&&(r.convertToLegacyJson=e.convertToLegacyJson),null!=e.clientPriority&&e.hasOwnProperty(\"clientPriority\")&&(r.clientPriority=t.enums!==String||void 0===s.perfetto.protos.ChromeConfig.ClientPriority[e.clientPriority]?e.clientPriority:s.perfetto.protos.ChromeConfig.ClientPriority[e.clientPriority]),null!=e.jsonAgentLabelFilter&&e.hasOwnProperty(\"jsonAgentLabelFilter\")&&(r.jsonAgentLabelFilter=e.jsonAgentLabelFilter),null!=e.eventPackageNameFilterEnabled&&e.hasOwnProperty(\"eventPackageNameFilterEnabled\")&&(r.eventPackageNameFilterEnabled=e.eventPackageNameFilterEnabled),r},it.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},it.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChromeConfig\"},it.ClientPriority=(t={},(e=Object.create(t))[t[0]=\"UNKNOWN\"]=0,e[t[1]=\"BACKGROUND\"]=1,e[t[2]=\"USER_INITIATED\"]=2,e),it),r.V8Config=(ot.prototype.logScriptSources=!1,ot.prototype.logInstructions=!1,ot.create=function(e){return new ot(e)},ot.encode=function(e,t){return t=t||a.create(),null!=e.logScriptSources&&Object.hasOwnProperty.call(e,\"logScriptSources\")&&t.uint32(8).bool(e.logScriptSources),null!=e.logInstructions&&Object.hasOwnProperty.call(e,\"logInstructions\")&&t.uint32(16).bool(e.logInstructions),t},ot.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.V8Config;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.logScriptSources=e.bool();break;case 2:n.logInstructions=e.bool();break;default:e.skipType(7&a)}}return n},ot.fromObject=function(e){var t;return e instanceof s.perfetto.protos.V8Config?e:(t=new s.perfetto.protos.V8Config,null!=e.logScriptSources&&(t.logScriptSources=Boolean(e.logScriptSources)),null!=e.logInstructions&&(t.logInstructions=Boolean(e.logInstructions)),t)},ot.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.logScriptSources=!1,r.logInstructions=!1),null!=e.logScriptSources&&e.hasOwnProperty(\"logScriptSources\")&&(r.logScriptSources=e.logScriptSources),null!=e.logInstructions&&e.hasOwnProperty(\"logInstructions\")&&(r.logInstructions=e.logInstructions),r},ot.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ot.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.V8Config\"},ot),r.EtwConfig=(st.prototype.kernelFlags=i.emptyArray,st.prototype.schedulerProviderEvents=i.emptyArray,st.prototype.memoryProviderEvents=i.emptyArray,st.create=function(e){return new st(e)},st.encode=function(e,t){if(t=t||a.create(),null!=e.kernelFlags&&e.kernelFlags.length)for(var r=0;r<e.kernelFlags.length;++r)t.uint32(8).int32(e.kernelFlags[r]);if(null!=e.schedulerProviderEvents&&e.schedulerProviderEvents.length)for(r=0;r<e.schedulerProviderEvents.length;++r)t.uint32(18).string(e.schedulerProviderEvents[r]);if(null!=e.memoryProviderEvents&&e.memoryProviderEvents.length)for(r=0;r<e.memoryProviderEvents.length;++r)t.uint32(26).string(e.memoryProviderEvents[r]);return t},st.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EtwConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.kernelFlags&&n.kernelFlags.length||(n.kernelFlags=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.kernelFlags.push(e.int32());else n.kernelFlags.push(e.int32());break;case 2:n.schedulerProviderEvents&&n.schedulerProviderEvents.length||(n.schedulerProviderEvents=[]),n.schedulerProviderEvents.push(e.string());break;case 3:n.memoryProviderEvents&&n.memoryProviderEvents.length||(n.memoryProviderEvents=[]),n.memoryProviderEvents.push(e.string());break;default:e.skipType(7&a)}}return n},st.fromObject=function(e){if(e instanceof s.perfetto.protos.EtwConfig)return e;var t=new s.perfetto.protos.EtwConfig;if(e.kernelFlags){if(!Array.isArray(e.kernelFlags))throw TypeError(\".perfetto.protos.EtwConfig.kernelFlags: array expected\");t.kernelFlags=[];for(var r=0;r<e.kernelFlags.length;++r)switch(e.kernelFlags[r]){default:if(\"number\"==typeof e.kernelFlags[r]){t.kernelFlags[r]=e.kernelFlags[r];break}case\"CSWITCH\":case 0:t.kernelFlags[r]=0;break;case\"DISPATCHER\":case 1:t.kernelFlags[r]=1}}if(e.schedulerProviderEvents){if(!Array.isArray(e.schedulerProviderEvents))throw TypeError(\".perfetto.protos.EtwConfig.schedulerProviderEvents: array expected\");t.schedulerProviderEvents=[];for(r=0;r<e.schedulerProviderEvents.length;++r)t.schedulerProviderEvents[r]=String(e.schedulerProviderEvents[r])}if(e.memoryProviderEvents){if(!Array.isArray(e.memoryProviderEvents))throw TypeError(\".perfetto.protos.EtwConfig.memoryProviderEvents: array expected\");t.memoryProviderEvents=[];for(r=0;r<e.memoryProviderEvents.length;++r)t.memoryProviderEvents[r]=String(e.memoryProviderEvents[r])}return t},st.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.kernelFlags=[],r.schedulerProviderEvents=[],r.memoryProviderEvents=[]),e.kernelFlags&&e.kernelFlags.length){r.kernelFlags=[];for(var n=0;n<e.kernelFlags.length;++n)r.kernelFlags[n]=t.enums!==String||void 0===s.perfetto.protos.EtwConfig.KernelFlag[e.kernelFlags[n]]?e.kernelFlags[n]:s.perfetto.protos.EtwConfig.KernelFlag[e.kernelFlags[n]]}if(e.schedulerProviderEvents&&e.schedulerProviderEvents.length){r.schedulerProviderEvents=[];for(n=0;n<e.schedulerProviderEvents.length;++n)r.schedulerProviderEvents[n]=e.schedulerProviderEvents[n]}if(e.memoryProviderEvents&&e.memoryProviderEvents.length){r.memoryProviderEvents=[];for(n=0;n<e.memoryProviderEvents.length;++n)r.memoryProviderEvents[n]=e.memoryProviderEvents[n]}return r},st.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},st.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EtwConfig\"},st.KernelFlag=(t={},(e=Object.create(t))[t[0]=\"CSWITCH\"]=0,e[t[1]=\"DISPATCHER\"]=1,e),st),r.ChromiumSystemMetricsConfig=(lt.prototype.samplingIntervalMs=0,lt.create=function(e){return new lt(e)},lt.encode=function(e,t){return t=t||a.create(),null!=e.samplingIntervalMs&&Object.hasOwnProperty.call(e,\"samplingIntervalMs\")&&t.uint32(8).uint32(e.samplingIntervalMs),t},lt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ChromiumSystemMetricsConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.samplingIntervalMs=e.uint32():e.skipType(7&a)}return n},lt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.ChromiumSystemMetricsConfig?e:(t=new s.perfetto.protos.ChromiumSystemMetricsConfig,null!=e.samplingIntervalMs&&(t.samplingIntervalMs=e.samplingIntervalMs>>>0),t)},lt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.samplingIntervalMs=0),null!=e.samplingIntervalMs&&e.hasOwnProperty(\"samplingIntervalMs\")&&(r.samplingIntervalMs=e.samplingIntervalMs),r},lt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},lt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChromiumSystemMetricsConfig\"},lt),r.FtraceConfig=(v.prototype.ftraceEvents=i.emptyArray,v.prototype.atraceCategories=i.emptyArray,v.prototype.atraceApps=i.emptyArray,v.prototype.atraceCategoriesPreferSdk=i.emptyArray,v.prototype.atraceUserspaceOnly=!1,v.prototype.bufferSizeKb=0,v.prototype.bufferSizeLowerBound=!1,v.prototype.drainPeriodMs=0,v.prototype.drainBufferPercent=0,v.prototype.compactSched=null,v.prototype.printFilter=null,v.prototype.symbolizeKsyms=!1,v.prototype.ksymsMemPolicy=0,v.prototype.throttleRssStat=!1,v.prototype.denserGenericEventEncoding=!1,v.prototype.disableGenericEvents=!1,v.prototype.syscallEvents=i.emptyArray,v.prototype.enableFunctionGraph=!1,v.prototype.functionFilters=i.emptyArray,v.prototype.functionGraphRoots=i.emptyArray,v.prototype.functionGraphMaxDepth=0,v.prototype.kprobeEvents=i.emptyArray,v.prototype.preserveFtraceBuffer=!1,v.prototype.useMonotonicRawClock=!1,v.prototype.instanceName=\"\",v.prototype.debugFtraceAbi=!1,v.prototype.tidsToTrace=i.emptyArray,v.prototype.tracefsOptions=i.emptyArray,v.prototype.tracingCpumask=\"\",v.prototype.initializeKsymsSynchronouslyForTesting=!1,v.create=function(e){return new v(e)},v.encode=function(e,t){if(t=t||a.create(),null!=e.ftraceEvents&&e.ftraceEvents.length)for(var r=0;r<e.ftraceEvents.length;++r)t.uint32(10).string(e.ftraceEvents[r]);if(null!=e.atraceCategories&&e.atraceCategories.length)for(r=0;r<e.atraceCategories.length;++r)t.uint32(18).string(e.atraceCategories[r]);if(null!=e.atraceApps&&e.atraceApps.length)for(r=0;r<e.atraceApps.length;++r)t.uint32(26).string(e.atraceApps[r]);if(null!=e.bufferSizeKb&&Object.hasOwnProperty.call(e,\"bufferSizeKb\")&&t.uint32(80).uint32(e.bufferSizeKb),null!=e.drainPeriodMs&&Object.hasOwnProperty.call(e,\"drainPeriodMs\")&&t.uint32(88).uint32(e.drainPeriodMs),null!=e.compactSched&&Object.hasOwnProperty.call(e,\"compactSched\")&&s.perfetto.protos.FtraceConfig.CompactSchedConfig.encode(e.compactSched,t.uint32(98).fork()).ldelim(),null!=e.symbolizeKsyms&&Object.hasOwnProperty.call(e,\"symbolizeKsyms\")&&t.uint32(104).bool(e.symbolizeKsyms),null!=e.initializeKsymsSynchronouslyForTesting&&Object.hasOwnProperty.call(e,\"initializeKsymsSynchronouslyForTesting\")&&t.uint32(112).bool(e.initializeKsymsSynchronouslyForTesting),null!=e.throttleRssStat&&Object.hasOwnProperty.call(e,\"throttleRssStat\")&&t.uint32(120).bool(e.throttleRssStat),null!=e.disableGenericEvents&&Object.hasOwnProperty.call(e,\"disableGenericEvents\")&&t.uint32(128).bool(e.disableGenericEvents),null!=e.ksymsMemPolicy&&Object.hasOwnProperty.call(e,\"ksymsMemPolicy\")&&t.uint32(136).int32(e.ksymsMemPolicy),null!=e.syscallEvents&&e.syscallEvents.length)for(r=0;r<e.syscallEvents.length;++r)t.uint32(146).string(e.syscallEvents[r]);if(null!=e.enableFunctionGraph&&Object.hasOwnProperty.call(e,\"enableFunctionGraph\")&&t.uint32(152).bool(e.enableFunctionGraph),null!=e.functionFilters&&e.functionFilters.length)for(r=0;r<e.functionFilters.length;++r)t.uint32(162).string(e.functionFilters[r]);if(null!=e.functionGraphRoots&&e.functionGraphRoots.length)for(r=0;r<e.functionGraphRoots.length;++r)t.uint32(170).string(e.functionGraphRoots[r]);if(null!=e.printFilter&&Object.hasOwnProperty.call(e,\"printFilter\")&&s.perfetto.protos.FtraceConfig.PrintFilter.encode(e.printFilter,t.uint32(178).fork()).ldelim(),null!=e.preserveFtraceBuffer&&Object.hasOwnProperty.call(e,\"preserveFtraceBuffer\")&&t.uint32(184).bool(e.preserveFtraceBuffer),null!=e.useMonotonicRawClock&&Object.hasOwnProperty.call(e,\"useMonotonicRawClock\")&&t.uint32(192).bool(e.useMonotonicRawClock),null!=e.instanceName&&Object.hasOwnProperty.call(e,\"instanceName\")&&t.uint32(202).string(e.instanceName),null!=e.bufferSizeLowerBound&&Object.hasOwnProperty.call(e,\"bufferSizeLowerBound\")&&t.uint32(216).bool(e.bufferSizeLowerBound),null!=e.atraceCategoriesPreferSdk&&e.atraceCategoriesPreferSdk.length)for(r=0;r<e.atraceCategoriesPreferSdk.length;++r)t.uint32(226).string(e.atraceCategoriesPreferSdk[r]);if(null!=e.drainBufferPercent&&Object.hasOwnProperty.call(e,\"drainBufferPercent\")&&t.uint32(232).uint32(e.drainBufferPercent),null!=e.kprobeEvents&&e.kprobeEvents.length)for(r=0;r<e.kprobeEvents.length;++r)s.perfetto.protos.FtraceConfig.KprobeEvent.encode(e.kprobeEvents[r],t.uint32(242).fork()).ldelim();if(null!=e.debugFtraceAbi&&Object.hasOwnProperty.call(e,\"debugFtraceAbi\")&&t.uint32(248).bool(e.debugFtraceAbi),null!=e.denserGenericEventEncoding&&Object.hasOwnProperty.call(e,\"denserGenericEventEncoding\")&&t.uint32(256).bool(e.denserGenericEventEncoding),null!=e.functionGraphMaxDepth&&Object.hasOwnProperty.call(e,\"functionGraphMaxDepth\")&&t.uint32(264).uint32(e.functionGraphMaxDepth),null!=e.atraceUserspaceOnly&&Object.hasOwnProperty.call(e,\"atraceUserspaceOnly\")&&t.uint32(272).bool(e.atraceUserspaceOnly),null!=e.tidsToTrace&&e.tidsToTrace.length)for(r=0;r<e.tidsToTrace.length;++r)t.uint32(280).uint32(e.tidsToTrace[r]);if(null!=e.tracefsOptions&&e.tracefsOptions.length)for(r=0;r<e.tracefsOptions.length;++r)s.perfetto.protos.FtraceConfig.TracefsOption.encode(e.tracefsOptions[r],t.uint32(290).fork()).ldelim();return null!=e.tracingCpumask&&Object.hasOwnProperty.call(e,\"tracingCpumask\")&&t.uint32(298).string(e.tracingCpumask),t},v.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.ftraceEvents&&n.ftraceEvents.length||(n.ftraceEvents=[]),n.ftraceEvents.push(e.string());break;case 2:n.atraceCategories&&n.atraceCategories.length||(n.atraceCategories=[]),n.atraceCategories.push(e.string());break;case 3:n.atraceApps&&n.atraceApps.length||(n.atraceApps=[]),n.atraceApps.push(e.string());break;case 28:n.atraceCategoriesPreferSdk&&n.atraceCategoriesPreferSdk.length||(n.atraceCategoriesPreferSdk=[]),n.atraceCategoriesPreferSdk.push(e.string());break;case 34:n.atraceUserspaceOnly=e.bool();break;case 10:n.bufferSizeKb=e.uint32();break;case 27:n.bufferSizeLowerBound=e.bool();break;case 11:n.drainPeriodMs=e.uint32();break;case 29:n.drainBufferPercent=e.uint32();break;case 12:n.compactSched=s.perfetto.protos.FtraceConfig.CompactSchedConfig.decode(e,e.uint32());break;case 22:n.printFilter=s.perfetto.protos.FtraceConfig.PrintFilter.decode(e,e.uint32());break;case 13:n.symbolizeKsyms=e.bool();break;case 17:n.ksymsMemPolicy=e.int32();break;case 15:n.throttleRssStat=e.bool();break;case 32:n.denserGenericEventEncoding=e.bool();break;case 16:n.disableGenericEvents=e.bool();break;case 18:n.syscallEvents&&n.syscallEvents.length||(n.syscallEvents=[]),n.syscallEvents.push(e.string());break;case 19:n.enableFunctionGraph=e.bool();break;case 20:n.functionFilters&&n.functionFilters.length||(n.functionFilters=[]),n.functionFilters.push(e.string());break;case 21:n.functionGraphRoots&&n.functionGraphRoots.length||(n.functionGraphRoots=[]),n.functionGraphRoots.push(e.string());break;case 33:n.functionGraphMaxDepth=e.uint32();break;case 30:n.kprobeEvents&&n.kprobeEvents.length||(n.kprobeEvents=[]),n.kprobeEvents.push(s.perfetto.protos.FtraceConfig.KprobeEvent.decode(e,e.uint32()));break;case 23:n.preserveFtraceBuffer=e.bool();break;case 24:n.useMonotonicRawClock=e.bool();break;case 25:n.instanceName=e.string();break;case 31:n.debugFtraceAbi=e.bool();break;case 35:if(n.tidsToTrace&&n.tidsToTrace.length||(n.tidsToTrace=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.tidsToTrace.push(e.uint32());else n.tidsToTrace.push(e.uint32());break;case 36:n.tracefsOptions&&n.tracefsOptions.length||(n.tracefsOptions=[]),n.tracefsOptions.push(s.perfetto.protos.FtraceConfig.TracefsOption.decode(e,e.uint32()));break;case 37:n.tracingCpumask=e.string();break;case 14:n.initializeKsymsSynchronouslyForTesting=e.bool();break;default:e.skipType(7&a)}}return n},v.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceConfig)return e;var t=new s.perfetto.protos.FtraceConfig;if(e.ftraceEvents){if(!Array.isArray(e.ftraceEvents))throw TypeError(\".perfetto.protos.FtraceConfig.ftraceEvents: array expected\");t.ftraceEvents=[];for(var r=0;r<e.ftraceEvents.length;++r)t.ftraceEvents[r]=String(e.ftraceEvents[r])}if(e.atraceCategories){if(!Array.isArray(e.atraceCategories))throw TypeError(\".perfetto.protos.FtraceConfig.atraceCategories: array expected\");t.atraceCategories=[];for(r=0;r<e.atraceCategories.length;++r)t.atraceCategories[r]=String(e.atraceCategories[r])}if(e.atraceApps){if(!Array.isArray(e.atraceApps))throw TypeError(\".perfetto.protos.FtraceConfig.atraceApps: array expected\");t.atraceApps=[];for(r=0;r<e.atraceApps.length;++r)t.atraceApps[r]=String(e.atraceApps[r])}if(e.atraceCategoriesPreferSdk){if(!Array.isArray(e.atraceCategoriesPreferSdk))throw TypeError(\".perfetto.protos.FtraceConfig.atraceCategoriesPreferSdk: array expected\");t.atraceCategoriesPreferSdk=[];for(r=0;r<e.atraceCategoriesPreferSdk.length;++r)t.atraceCategoriesPreferSdk[r]=String(e.atraceCategoriesPreferSdk[r])}if(null!=e.atraceUserspaceOnly&&(t.atraceUserspaceOnly=Boolean(e.atraceUserspaceOnly)),null!=e.bufferSizeKb&&(t.bufferSizeKb=e.bufferSizeKb>>>0),null!=e.bufferSizeLowerBound&&(t.bufferSizeLowerBound=Boolean(e.bufferSizeLowerBound)),null!=e.drainPeriodMs&&(t.drainPeriodMs=e.drainPeriodMs>>>0),null!=e.drainBufferPercent&&(t.drainBufferPercent=e.drainBufferPercent>>>0),null!=e.compactSched){if(\"object\"!=typeof e.compactSched)throw TypeError(\".perfetto.protos.FtraceConfig.compactSched: object expected\");t.compactSched=s.perfetto.protos.FtraceConfig.CompactSchedConfig.fromObject(e.compactSched)}if(null!=e.printFilter){if(\"object\"!=typeof e.printFilter)throw TypeError(\".perfetto.protos.FtraceConfig.printFilter: object expected\");t.printFilter=s.perfetto.protos.FtraceConfig.PrintFilter.fromObject(e.printFilter)}switch(null!=e.symbolizeKsyms&&(t.symbolizeKsyms=Boolean(e.symbolizeKsyms)),e.ksymsMemPolicy){default:\"number\"==typeof e.ksymsMemPolicy&&(t.ksymsMemPolicy=e.ksymsMemPolicy);break;case\"KSYMS_UNSPECIFIED\":case 0:t.ksymsMemPolicy=0;break;case\"KSYMS_CLEANUP_ON_STOP\":case 1:t.ksymsMemPolicy=1;break;case\"KSYMS_RETAIN\":case 2:t.ksymsMemPolicy=2}if(null!=e.throttleRssStat&&(t.throttleRssStat=Boolean(e.throttleRssStat)),null!=e.denserGenericEventEncoding&&(t.denserGenericEventEncoding=Boolean(e.denserGenericEventEncoding)),null!=e.disableGenericEvents&&(t.disableGenericEvents=Boolean(e.disableGenericEvents)),e.syscallEvents){if(!Array.isArray(e.syscallEvents))throw TypeError(\".perfetto.protos.FtraceConfig.syscallEvents: array expected\");t.syscallEvents=[];for(r=0;r<e.syscallEvents.length;++r)t.syscallEvents[r]=String(e.syscallEvents[r])}if(null!=e.enableFunctionGraph&&(t.enableFunctionGraph=Boolean(e.enableFunctionGraph)),e.functionFilters){if(!Array.isArray(e.functionFilters))throw TypeError(\".perfetto.protos.FtraceConfig.functionFilters: array expected\");t.functionFilters=[];for(r=0;r<e.functionFilters.length;++r)t.functionFilters[r]=String(e.functionFilters[r])}if(e.functionGraphRoots){if(!Array.isArray(e.functionGraphRoots))throw TypeError(\".perfetto.protos.FtraceConfig.functionGraphRoots: array expected\");t.functionGraphRoots=[];for(r=0;r<e.functionGraphRoots.length;++r)t.functionGraphRoots[r]=String(e.functionGraphRoots[r])}if(null!=e.functionGraphMaxDepth&&(t.functionGraphMaxDepth=e.functionGraphMaxDepth>>>0),e.kprobeEvents){if(!Array.isArray(e.kprobeEvents))throw TypeError(\".perfetto.protos.FtraceConfig.kprobeEvents: array expected\");t.kprobeEvents=[];for(r=0;r<e.kprobeEvents.length;++r){if(\"object\"!=typeof e.kprobeEvents[r])throw TypeError(\".perfetto.protos.FtraceConfig.kprobeEvents: object expected\");t.kprobeEvents[r]=s.perfetto.protos.FtraceConfig.KprobeEvent.fromObject(e.kprobeEvents[r])}}if(null!=e.preserveFtraceBuffer&&(t.preserveFtraceBuffer=Boolean(e.preserveFtraceBuffer)),null!=e.useMonotonicRawClock&&(t.useMonotonicRawClock=Boolean(e.useMonotonicRawClock)),null!=e.instanceName&&(t.instanceName=String(e.instanceName)),null!=e.debugFtraceAbi&&(t.debugFtraceAbi=Boolean(e.debugFtraceAbi)),e.tidsToTrace){if(!Array.isArray(e.tidsToTrace))throw TypeError(\".perfetto.protos.FtraceConfig.tidsToTrace: array expected\");t.tidsToTrace=[];for(r=0;r<e.tidsToTrace.length;++r)t.tidsToTrace[r]=e.tidsToTrace[r]>>>0}if(e.tracefsOptions){if(!Array.isArray(e.tracefsOptions))throw TypeError(\".perfetto.protos.FtraceConfig.tracefsOptions: array expected\");t.tracefsOptions=[];for(r=0;r<e.tracefsOptions.length;++r){if(\"object\"!=typeof e.tracefsOptions[r])throw TypeError(\".perfetto.protos.FtraceConfig.tracefsOptions: object expected\");t.tracefsOptions[r]=s.perfetto.protos.FtraceConfig.TracefsOption.fromObject(e.tracefsOptions[r])}}return null!=e.tracingCpumask&&(t.tracingCpumask=String(e.tracingCpumask)),null!=e.initializeKsymsSynchronouslyForTesting&&(t.initializeKsymsSynchronouslyForTesting=Boolean(e.initializeKsymsSynchronouslyForTesting)),t},v.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.ftraceEvents=[],r.atraceCategories=[],r.atraceApps=[],r.syscallEvents=[],r.functionFilters=[],r.functionGraphRoots=[],r.atraceCategoriesPreferSdk=[],r.kprobeEvents=[],r.tidsToTrace=[],r.tracefsOptions=[]),t.defaults&&(r.bufferSizeKb=0,r.drainPeriodMs=0,r.compactSched=null,r.symbolizeKsyms=!1,r.initializeKsymsSynchronouslyForTesting=!1,r.throttleRssStat=!1,r.disableGenericEvents=!1,r.ksymsMemPolicy=t.enums===String?\"KSYMS_UNSPECIFIED\":0,r.enableFunctionGraph=!1,r.printFilter=null,r.preserveFtraceBuffer=!1,r.useMonotonicRawClock=!1,r.instanceName=\"\",r.bufferSizeLowerBound=!1,r.drainBufferPercent=0,r.debugFtraceAbi=!1,r.denserGenericEventEncoding=!1,r.functionGraphMaxDepth=0,r.atraceUserspaceOnly=!1,r.tracingCpumask=\"\"),e.ftraceEvents&&e.ftraceEvents.length){r.ftraceEvents=[];for(var n=0;n<e.ftraceEvents.length;++n)r.ftraceEvents[n]=e.ftraceEvents[n]}if(e.atraceCategories&&e.atraceCategories.length){r.atraceCategories=[];for(n=0;n<e.atraceCategories.length;++n)r.atraceCategories[n]=e.atraceCategories[n]}if(e.atraceApps&&e.atraceApps.length){r.atraceApps=[];for(n=0;n<e.atraceApps.length;++n)r.atraceApps[n]=e.atraceApps[n]}if(null!=e.bufferSizeKb&&e.hasOwnProperty(\"bufferSizeKb\")&&(r.bufferSizeKb=e.bufferSizeKb),null!=e.drainPeriodMs&&e.hasOwnProperty(\"drainPeriodMs\")&&(r.drainPeriodMs=e.drainPeriodMs),null!=e.compactSched&&e.hasOwnProperty(\"compactSched\")&&(r.compactSched=s.perfetto.protos.FtraceConfig.CompactSchedConfig.toObject(e.compactSched,t)),null!=e.symbolizeKsyms&&e.hasOwnProperty(\"symbolizeKsyms\")&&(r.symbolizeKsyms=e.symbolizeKsyms),null!=e.initializeKsymsSynchronouslyForTesting&&e.hasOwnProperty(\"initializeKsymsSynchronouslyForTesting\")&&(r.initializeKsymsSynchronouslyForTesting=e.initializeKsymsSynchronouslyForTesting),null!=e.throttleRssStat&&e.hasOwnProperty(\"throttleRssStat\")&&(r.throttleRssStat=e.throttleRssStat),null!=e.disableGenericEvents&&e.hasOwnProperty(\"disableGenericEvents\")&&(r.disableGenericEvents=e.disableGenericEvents),null!=e.ksymsMemPolicy&&e.hasOwnProperty(\"ksymsMemPolicy\")&&(r.ksymsMemPolicy=t.enums!==String||void 0===s.perfetto.protos.FtraceConfig.KsymsMemPolicy[e.ksymsMemPolicy]?e.ksymsMemPolicy:s.perfetto.protos.FtraceConfig.KsymsMemPolicy[e.ksymsMemPolicy]),e.syscallEvents&&e.syscallEvents.length){r.syscallEvents=[];for(n=0;n<e.syscallEvents.length;++n)r.syscallEvents[n]=e.syscallEvents[n]}if(null!=e.enableFunctionGraph&&e.hasOwnProperty(\"enableFunctionGraph\")&&(r.enableFunctionGraph=e.enableFunctionGraph),e.functionFilters&&e.functionFilters.length){r.functionFilters=[];for(n=0;n<e.functionFilters.length;++n)r.functionFilters[n]=e.functionFilters[n]}if(e.functionGraphRoots&&e.functionGraphRoots.length){r.functionGraphRoots=[];for(n=0;n<e.functionGraphRoots.length;++n)r.functionGraphRoots[n]=e.functionGraphRoots[n]}if(null!=e.printFilter&&e.hasOwnProperty(\"printFilter\")&&(r.printFilter=s.perfetto.protos.FtraceConfig.PrintFilter.toObject(e.printFilter,t)),null!=e.preserveFtraceBuffer&&e.hasOwnProperty(\"preserveFtraceBuffer\")&&(r.preserveFtraceBuffer=e.preserveFtraceBuffer),null!=e.useMonotonicRawClock&&e.hasOwnProperty(\"useMonotonicRawClock\")&&(r.useMonotonicRawClock=e.useMonotonicRawClock),null!=e.instanceName&&e.hasOwnProperty(\"instanceName\")&&(r.instanceName=e.instanceName),null!=e.bufferSizeLowerBound&&e.hasOwnProperty(\"bufferSizeLowerBound\")&&(r.bufferSizeLowerBound=e.bufferSizeLowerBound),e.atraceCategoriesPreferSdk&&e.atraceCategoriesPreferSdk.length){r.atraceCategoriesPreferSdk=[];for(n=0;n<e.atraceCategoriesPreferSdk.length;++n)r.atraceCategoriesPreferSdk[n]=e.atraceCategoriesPreferSdk[n]}if(null!=e.drainBufferPercent&&e.hasOwnProperty(\"drainBufferPercent\")&&(r.drainBufferPercent=e.drainBufferPercent),e.kprobeEvents&&e.kprobeEvents.length){r.kprobeEvents=[];for(n=0;n<e.kprobeEvents.length;++n)r.kprobeEvents[n]=s.perfetto.protos.FtraceConfig.KprobeEvent.toObject(e.kprobeEvents[n],t)}if(null!=e.debugFtraceAbi&&e.hasOwnProperty(\"debugFtraceAbi\")&&(r.debugFtraceAbi=e.debugFtraceAbi),null!=e.denserGenericEventEncoding&&e.hasOwnProperty(\"denserGenericEventEncoding\")&&(r.denserGenericEventEncoding=e.denserGenericEventEncoding),null!=e.functionGraphMaxDepth&&e.hasOwnProperty(\"functionGraphMaxDepth\")&&(r.functionGraphMaxDepth=e.functionGraphMaxDepth),null!=e.atraceUserspaceOnly&&e.hasOwnProperty(\"atraceUserspaceOnly\")&&(r.atraceUserspaceOnly=e.atraceUserspaceOnly),e.tidsToTrace&&e.tidsToTrace.length){r.tidsToTrace=[];for(n=0;n<e.tidsToTrace.length;++n)r.tidsToTrace[n]=e.tidsToTrace[n]}if(e.tracefsOptions&&e.tracefsOptions.length){r.tracefsOptions=[];for(n=0;n<e.tracefsOptions.length;++n)r.tracefsOptions[n]=s.perfetto.protos.FtraceConfig.TracefsOption.toObject(e.tracefsOptions[n],t)}return null!=e.tracingCpumask&&e.hasOwnProperty(\"tracingCpumask\")&&(r.tracingCpumask=e.tracingCpumask),r},v.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},v.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig\"},v.CompactSchedConfig=(ct.prototype.enabled=!1,ct.create=function(e){return new ct(e)},ct.encode=function(e,t){return t=t||a.create(),null!=e.enabled&&Object.hasOwnProperty.call(e,\"enabled\")&&t.uint32(8).bool(e.enabled),t},ct.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.CompactSchedConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.enabled=e.bool():e.skipType(7&a)}return n},ct.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FtraceConfig.CompactSchedConfig?e:(t=new s.perfetto.protos.FtraceConfig.CompactSchedConfig,null!=e.enabled&&(t.enabled=Boolean(e.enabled)),t)},ct.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.enabled=!1),null!=e.enabled&&e.hasOwnProperty(\"enabled\")&&(r.enabled=e.enabled),r},ct.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ct.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.CompactSchedConfig\"},ct),v.PrintFilter=(ut.prototype.rules=i.emptyArray,ut.create=function(e){return new ut(e)},ut.encode=function(e,t){if(t=t||a.create(),null!=e.rules&&e.rules.length)for(var r=0;r<e.rules.length;++r)s.perfetto.protos.FtraceConfig.PrintFilter.Rule.encode(e.rules[r],t.uint32(10).fork()).ldelim();return t},ut.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.PrintFilter;e.pos<r;){var a=e.uint32();a>>>3==1?(n.rules&&n.rules.length||(n.rules=[]),n.rules.push(s.perfetto.protos.FtraceConfig.PrintFilter.Rule.decode(e,e.uint32()))):e.skipType(7&a)}return n},ut.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceConfig.PrintFilter)return e;var t=new s.perfetto.protos.FtraceConfig.PrintFilter;if(e.rules){if(!Array.isArray(e.rules))throw TypeError(\".perfetto.protos.FtraceConfig.PrintFilter.rules: array expected\");t.rules=[];for(var r=0;r<e.rules.length;++r){if(\"object\"!=typeof e.rules[r])throw TypeError(\".perfetto.protos.FtraceConfig.PrintFilter.rules: object expected\");t.rules[r]=s.perfetto.protos.FtraceConfig.PrintFilter.Rule.fromObject(e.rules[r])}}return t},ut.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.rules=[]),e.rules&&e.rules.length){r.rules=[];for(var n=0;n<e.rules.length;++n)r.rules[n]=s.perfetto.protos.FtraceConfig.PrintFilter.Rule.toObject(e.rules[n],t)}return r},ut.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ut.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.PrintFilter\"},ut.Rule=(dt.prototype.prefix=null,dt.prototype.atraceMsg=null,dt.prototype.allow=!1,Object.defineProperty(dt.prototype,\"match\",{get:i.oneOfGetter(t=[\"prefix\",\"atraceMsg\"]),set:i.oneOfSetter(t)}),dt.create=function(e){return new dt(e)},dt.encode=function(e,t){return t=t||a.create(),null!=e.prefix&&Object.hasOwnProperty.call(e,\"prefix\")&&t.uint32(10).string(e.prefix),null!=e.allow&&Object.hasOwnProperty.call(e,\"allow\")&&t.uint32(16).bool(e.allow),null!=e.atraceMsg&&Object.hasOwnProperty.call(e,\"atraceMsg\")&&s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage.encode(e.atraceMsg,t.uint32(26).fork()).ldelim(),t},dt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.PrintFilter.Rule;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.prefix=e.string();break;case 3:n.atraceMsg=s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage.decode(e,e.uint32());break;case 2:n.allow=e.bool();break;default:e.skipType(7&a)}}return n},dt.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceConfig.PrintFilter.Rule)return e;var t=new s.perfetto.protos.FtraceConfig.PrintFilter.Rule;if(null!=e.prefix&&(t.prefix=String(e.prefix)),null!=e.atraceMsg){if(\"object\"!=typeof e.atraceMsg)throw TypeError(\".perfetto.protos.FtraceConfig.PrintFilter.Rule.atraceMsg: object expected\");t.atraceMsg=s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage.fromObject(e.atraceMsg)}return null!=e.allow&&(t.allow=Boolean(e.allow)),t},dt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.allow=!1),null!=e.prefix&&e.hasOwnProperty(\"prefix\")&&(r.prefix=e.prefix,t.oneofs)&&(r.match=\"prefix\"),null!=e.allow&&e.hasOwnProperty(\"allow\")&&(r.allow=e.allow),null!=e.atraceMsg&&e.hasOwnProperty(\"atraceMsg\")&&(r.atraceMsg=s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage.toObject(e.atraceMsg,t),t.oneofs)&&(r.match=\"atraceMsg\"),r},dt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},dt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.PrintFilter.Rule\"},dt.AtraceMessage=(pt.prototype.type=\"\",pt.prototype.prefix=\"\",pt.create=function(e){return new pt(e)},pt.encode=function(e,t){return t=t||a.create(),null!=e.type&&Object.hasOwnProperty.call(e,\"type\")&&t.uint32(10).string(e.type),null!=e.prefix&&Object.hasOwnProperty.call(e,\"prefix\")&&t.uint32(18).string(e.prefix),t},pt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.type=e.string();break;case 2:n.prefix=e.string();break;default:e.skipType(7&a)}}return n},pt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage?e:(t=new s.perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage,null!=e.type&&(t.type=String(e.type)),null!=e.prefix&&(t.prefix=String(e.prefix)),t)},pt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.type=\"\",r.prefix=\"\"),null!=e.type&&e.hasOwnProperty(\"type\")&&(r.type=e.type),null!=e.prefix&&e.hasOwnProperty(\"prefix\")&&(r.prefix=e.prefix),r},pt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},pt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.PrintFilter.Rule.AtraceMessage\"},pt),dt),ut),v.KsymsMemPolicy=(t={},(e=Object.create(t))[t[0]=\"KSYMS_UNSPECIFIED\"]=0,e[t[1]=\"KSYMS_CLEANUP_ON_STOP\"]=1,e[t[2]=\"KSYMS_RETAIN\"]=2,e),v.KprobeEvent=(ft.prototype.probe=\"\",ft.prototype.type=0,ft.create=function(e){return new ft(e)},ft.encode=function(e,t){return t=t||a.create(),null!=e.probe&&Object.hasOwnProperty.call(e,\"probe\")&&t.uint32(10).string(e.probe),null!=e.type&&Object.hasOwnProperty.call(e,\"type\")&&t.uint32(16).int32(e.type),t},ft.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.KprobeEvent;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.probe=e.string();break;case 2:n.type=e.int32();break;default:e.skipType(7&a)}}return n},ft.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceConfig.KprobeEvent)return e;var t=new s.perfetto.protos.FtraceConfig.KprobeEvent;switch(null!=e.probe&&(t.probe=String(e.probe)),e.type){default:\"number\"==typeof e.type&&(t.type=e.type);break;case\"KPROBE_TYPE_UNKNOWN\":case 0:t.type=0;break;case\"KPROBE_TYPE_KPROBE\":case 1:t.type=1;break;case\"KPROBE_TYPE_KRETPROBE\":case 2:t.type=2;break;case\"KPROBE_TYPE_BOTH\":case 3:t.type=3}return t},ft.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.probe=\"\",r.type=t.enums===String?\"KPROBE_TYPE_UNKNOWN\":0),null!=e.probe&&e.hasOwnProperty(\"probe\")&&(r.probe=e.probe),null!=e.type&&e.hasOwnProperty(\"type\")&&(r.type=t.enums!==String||void 0===s.perfetto.protos.FtraceConfig.KprobeEvent.KprobeType[e.type]?e.type:s.perfetto.protos.FtraceConfig.KprobeEvent.KprobeType[e.type]),r},ft.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ft.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.KprobeEvent\"},ft.KprobeType=(t={},(e=Object.create(t))[t[0]=\"KPROBE_TYPE_UNKNOWN\"]=0,e[t[1]=\"KPROBE_TYPE_KPROBE\"]=1,e[t[2]=\"KPROBE_TYPE_KRETPROBE\"]=2,e[t[3]=\"KPROBE_TYPE_BOTH\"]=3,e),ft),v.TracefsOption=(ht.prototype.name=\"\",ht.prototype.state=0,ht.create=function(e){return new ht(e)},ht.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.state&&Object.hasOwnProperty.call(e,\"state\")&&t.uint32(16).int32(e.state),t},ht.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FtraceConfig.TracefsOption;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.state=e.int32();break;default:e.skipType(7&a)}}return n},ht.fromObject=function(e){if(e instanceof s.perfetto.protos.FtraceConfig.TracefsOption)return e;var t=new s.perfetto.protos.FtraceConfig.TracefsOption;switch(null!=e.name&&(t.name=String(e.name)),e.state){default:\"number\"==typeof e.state&&(t.state=e.state);break;case\"STATE_UNKNOWN\":case 0:t.state=0;break;case\"STATE_ENABLED\":case 1:t.state=1;break;case\"STATE_DISABLED\":case 2:t.state=2}return t},ht.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.state=t.enums===String?\"STATE_UNKNOWN\":0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.state&&e.hasOwnProperty(\"state\")&&(r.state=t.enums!==String||void 0===s.perfetto.protos.FtraceConfig.TracefsOption.State[e.state]?e.state:s.perfetto.protos.FtraceConfig.TracefsOption.State[e.state]),r},ht.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ht.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FtraceConfig.TracefsOption\"},ht.State=(t={},(e=Object.create(t))[t[0]=\"STATE_UNKNOWN\"]=0,e[t[1]=\"STATE_ENABLED\"]=1,e[t[2]=\"STATE_DISABLED\"]=2,e),ht),v),r.FrozenFtraceConfig=(mt.prototype.instanceName=\"\",mt.create=function(e){return new mt(e)},mt.encode=function(e,t){return t=t||a.create(),null!=e.instanceName&&Object.hasOwnProperty.call(e,\"instanceName\")&&t.uint32(10).string(e.instanceName),t},mt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FrozenFtraceConfig;e.pos<r;){var a=e.uint32();a>>>3==1?n.instanceName=e.string():e.skipType(7&a)}return n},mt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FrozenFtraceConfig?e:(t=new s.perfetto.protos.FrozenFtraceConfig,null!=e.instanceName&&(t.instanceName=String(e.instanceName)),t)},mt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.instanceName=\"\"),null!=e.instanceName&&e.hasOwnProperty(\"instanceName\")&&(r.instanceName=e.instanceName),r},mt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},mt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FrozenFtraceConfig\"},mt),r.GpuCounterConfig=(gt.prototype.counterPeriodNs=i.Long?i.Long.fromBits(0,0,!0):0,gt.prototype.counterIds=i.emptyArray,gt.prototype.instrumentedSampling=!1,gt.prototype.fixGpuClock=!1,gt.create=function(e){return new gt(e)},gt.encode=function(e,t){if(t=t||a.create(),null!=e.counterPeriodNs&&Object.hasOwnProperty.call(e,\"counterPeriodNs\")&&t.uint32(8).uint64(e.counterPeriodNs),null!=e.counterIds&&e.counterIds.length)for(var r=0;r<e.counterIds.length;++r)t.uint32(16).uint32(e.counterIds[r]);return null!=e.instrumentedSampling&&Object.hasOwnProperty.call(e,\"instrumentedSampling\")&&t.uint32(24).bool(e.instrumentedSampling),null!=e.fixGpuClock&&Object.hasOwnProperty.call(e,\"fixGpuClock\")&&t.uint32(32).bool(e.fixGpuClock),t},gt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GpuCounterConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.counterPeriodNs=e.uint64();break;case 2:if(n.counterIds&&n.counterIds.length||(n.counterIds=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.counterIds.push(e.uint32());else n.counterIds.push(e.uint32());break;case 3:n.instrumentedSampling=e.bool();break;case 4:n.fixGpuClock=e.bool();break;default:e.skipType(7&a)}}return n},gt.fromObject=function(e){if(e instanceof s.perfetto.protos.GpuCounterConfig)return e;var t=new s.perfetto.protos.GpuCounterConfig;if(null!=e.counterPeriodNs&&(i.Long?(t.counterPeriodNs=i.Long.fromValue(e.counterPeriodNs)).unsigned=!0:\"string\"==typeof e.counterPeriodNs?t.counterPeriodNs=parseInt(e.counterPeriodNs,10):\"number\"==typeof e.counterPeriodNs?t.counterPeriodNs=e.counterPeriodNs:\"object\"==typeof e.counterPeriodNs&&(t.counterPeriodNs=new i.LongBits(e.counterPeriodNs.low>>>0,e.counterPeriodNs.high>>>0).toNumber(!0))),e.counterIds){if(!Array.isArray(e.counterIds))throw TypeError(\".perfetto.protos.GpuCounterConfig.counterIds: array expected\");t.counterIds=[];for(var r=0;r<e.counterIds.length;++r)t.counterIds[r]=e.counterIds[r]>>>0}return null!=e.instrumentedSampling&&(t.instrumentedSampling=Boolean(e.instrumentedSampling)),null!=e.fixGpuClock&&(t.fixGpuClock=Boolean(e.fixGpuClock)),t},gt.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.counterIds=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.counterPeriodNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.counterPeriodNs=t.longs===String?\"0\":0,n.instrumentedSampling=!1,n.fixGpuClock=!1),null!=e.counterPeriodNs&&e.hasOwnProperty(\"counterPeriodNs\")&&(\"number\"==typeof e.counterPeriodNs?n.counterPeriodNs=t.longs===String?String(e.counterPeriodNs):e.counterPeriodNs:n.counterPeriodNs=t.longs===String?i.Long.prototype.toString.call(e.counterPeriodNs):t.longs===Number?new i.LongBits(e.counterPeriodNs.low>>>0,e.counterPeriodNs.high>>>0).toNumber(!0):e.counterPeriodNs),e.counterIds&&e.counterIds.length){n.counterIds=[];for(var a=0;a<e.counterIds.length;++a)n.counterIds[a]=e.counterIds[a]}return null!=e.instrumentedSampling&&e.hasOwnProperty(\"instrumentedSampling\")&&(n.instrumentedSampling=e.instrumentedSampling),null!=e.fixGpuClock&&e.hasOwnProperty(\"fixGpuClock\")&&(n.fixGpuClock=e.fixGpuClock),n},gt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},gt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GpuCounterConfig\"},gt),r.VulkanMemoryConfig=(_t.prototype.trackDriverMemoryUsage=!1,_t.prototype.trackDeviceMemoryUsage=!1,_t.create=function(e){return new _t(e)},_t.encode=function(e,t){return t=t||a.create(),null!=e.trackDriverMemoryUsage&&Object.hasOwnProperty.call(e,\"trackDriverMemoryUsage\")&&t.uint32(8).bool(e.trackDriverMemoryUsage),null!=e.trackDeviceMemoryUsage&&Object.hasOwnProperty.call(e,\"trackDeviceMemoryUsage\")&&t.uint32(16).bool(e.trackDeviceMemoryUsage),t},_t.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.VulkanMemoryConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.trackDriverMemoryUsage=e.bool();break;case 2:n.trackDeviceMemoryUsage=e.bool();break;default:e.skipType(7&a)}}return n},_t.fromObject=function(e){var t;return e instanceof s.perfetto.protos.VulkanMemoryConfig?e:(t=new s.perfetto.protos.VulkanMemoryConfig,null!=e.trackDriverMemoryUsage&&(t.trackDriverMemoryUsage=Boolean(e.trackDriverMemoryUsage)),null!=e.trackDeviceMemoryUsage&&(t.trackDeviceMemoryUsage=Boolean(e.trackDeviceMemoryUsage)),t)},_t.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.trackDriverMemoryUsage=!1,r.trackDeviceMemoryUsage=!1),null!=e.trackDriverMemoryUsage&&e.hasOwnProperty(\"trackDriverMemoryUsage\")&&(r.trackDriverMemoryUsage=e.trackDriverMemoryUsage),null!=e.trackDeviceMemoryUsage&&e.hasOwnProperty(\"trackDeviceMemoryUsage\")&&(r.trackDeviceMemoryUsage=e.trackDeviceMemoryUsage),r},_t.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},_t.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.VulkanMemoryConfig\"},_t),r.GpuRenderStagesConfig=(yt.prototype.fullLoadstore=!1,yt.prototype.lowOverhead=!1,yt.prototype.traceMetrics=i.emptyArray,yt.create=function(e){return new yt(e)},yt.encode=function(e,t){if(t=t||a.create(),null!=e.fullLoadstore&&Object.hasOwnProperty.call(e,\"fullLoadstore\")&&t.uint32(8).bool(e.fullLoadstore),null!=e.lowOverhead&&Object.hasOwnProperty.call(e,\"lowOverhead\")&&t.uint32(16).bool(e.lowOverhead),null!=e.traceMetrics&&e.traceMetrics.length)for(var r=0;r<e.traceMetrics.length;++r)t.uint32(26).string(e.traceMetrics[r]);return t},yt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.GpuRenderStagesConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.fullLoadstore=e.bool();break;case 2:n.lowOverhead=e.bool();break;case 3:n.traceMetrics&&n.traceMetrics.length||(n.traceMetrics=[]),n.traceMetrics.push(e.string());break;default:e.skipType(7&a)}}return n},yt.fromObject=function(e){if(e instanceof s.perfetto.protos.GpuRenderStagesConfig)return e;var t=new s.perfetto.protos.GpuRenderStagesConfig;if(null!=e.fullLoadstore&&(t.fullLoadstore=Boolean(e.fullLoadstore)),null!=e.lowOverhead&&(t.lowOverhead=Boolean(e.lowOverhead)),e.traceMetrics){if(!Array.isArray(e.traceMetrics))throw TypeError(\".perfetto.protos.GpuRenderStagesConfig.traceMetrics: array expected\");t.traceMetrics=[];for(var r=0;r<e.traceMetrics.length;++r)t.traceMetrics[r]=String(e.traceMetrics[r])}return t},yt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.traceMetrics=[]),t.defaults&&(r.fullLoadstore=!1,r.lowOverhead=!1),null!=e.fullLoadstore&&e.hasOwnProperty(\"fullLoadstore\")&&(r.fullLoadstore=e.fullLoadstore),null!=e.lowOverhead&&e.hasOwnProperty(\"lowOverhead\")&&(r.lowOverhead=e.lowOverhead),e.traceMetrics&&e.traceMetrics.length){r.traceMetrics=[];for(var n=0;n<e.traceMetrics.length;++n)r.traceMetrics[n]=e.traceMetrics[n]}return r},yt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},yt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.GpuRenderStagesConfig\"},yt),r.InodeFileConfig=(Tt.prototype.scanIntervalMs=0,Tt.prototype.scanDelayMs=0,Tt.prototype.scanBatchSize=0,Tt.prototype.doNotScan=!1,Tt.prototype.scanMountPoints=i.emptyArray,Tt.prototype.mountPointMapping=i.emptyArray,Tt.create=function(e){return new Tt(e)},Tt.encode=function(e,t){if(t=t||a.create(),null!=e.scanIntervalMs&&Object.hasOwnProperty.call(e,\"scanIntervalMs\")&&t.uint32(8).uint32(e.scanIntervalMs),null!=e.scanDelayMs&&Object.hasOwnProperty.call(e,\"scanDelayMs\")&&t.uint32(16).uint32(e.scanDelayMs),null!=e.scanBatchSize&&Object.hasOwnProperty.call(e,\"scanBatchSize\")&&t.uint32(24).uint32(e.scanBatchSize),null!=e.doNotScan&&Object.hasOwnProperty.call(e,\"doNotScan\")&&t.uint32(32).bool(e.doNotScan),null!=e.scanMountPoints&&e.scanMountPoints.length)for(var r=0;r<e.scanMountPoints.length;++r)t.uint32(42).string(e.scanMountPoints[r]);if(null!=e.mountPointMapping&&e.mountPointMapping.length)for(r=0;r<e.mountPointMapping.length;++r)s.perfetto.protos.InodeFileConfig.MountPointMappingEntry.encode(e.mountPointMapping[r],t.uint32(50).fork()).ldelim();return t},Tt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.InodeFileConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.scanIntervalMs=e.uint32();break;case 2:n.scanDelayMs=e.uint32();break;case 3:n.scanBatchSize=e.uint32();break;case 4:n.doNotScan=e.bool();break;case 5:n.scanMountPoints&&n.scanMountPoints.length||(n.scanMountPoints=[]),n.scanMountPoints.push(e.string());break;case 6:n.mountPointMapping&&n.mountPointMapping.length||(n.mountPointMapping=[]),n.mountPointMapping.push(s.perfetto.protos.InodeFileConfig.MountPointMappingEntry.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Tt.fromObject=function(e){if(e instanceof s.perfetto.protos.InodeFileConfig)return e;var t=new s.perfetto.protos.InodeFileConfig;if(null!=e.scanIntervalMs&&(t.scanIntervalMs=e.scanIntervalMs>>>0),null!=e.scanDelayMs&&(t.scanDelayMs=e.scanDelayMs>>>0),null!=e.scanBatchSize&&(t.scanBatchSize=e.scanBatchSize>>>0),null!=e.doNotScan&&(t.doNotScan=Boolean(e.doNotScan)),e.scanMountPoints){if(!Array.isArray(e.scanMountPoints))throw TypeError(\".perfetto.protos.InodeFileConfig.scanMountPoints: array expected\");t.scanMountPoints=[];for(var r=0;r<e.scanMountPoints.length;++r)t.scanMountPoints[r]=String(e.scanMountPoints[r])}if(e.mountPointMapping){if(!Array.isArray(e.mountPointMapping))throw TypeError(\".perfetto.protos.InodeFileConfig.mountPointMapping: array expected\");t.mountPointMapping=[];for(r=0;r<e.mountPointMapping.length;++r){if(\"object\"!=typeof e.mountPointMapping[r])throw TypeError(\".perfetto.protos.InodeFileConfig.mountPointMapping: object expected\");t.mountPointMapping[r]=s.perfetto.protos.InodeFileConfig.MountPointMappingEntry.fromObject(e.mountPointMapping[r])}}return t},Tt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.scanMountPoints=[],r.mountPointMapping=[]),t.defaults&&(r.scanIntervalMs=0,r.scanDelayMs=0,r.scanBatchSize=0,r.doNotScan=!1),null!=e.scanIntervalMs&&e.hasOwnProperty(\"scanIntervalMs\")&&(r.scanIntervalMs=e.scanIntervalMs),null!=e.scanDelayMs&&e.hasOwnProperty(\"scanDelayMs\")&&(r.scanDelayMs=e.scanDelayMs),null!=e.scanBatchSize&&e.hasOwnProperty(\"scanBatchSize\")&&(r.scanBatchSize=e.scanBatchSize),null!=e.doNotScan&&e.hasOwnProperty(\"doNotScan\")&&(r.doNotScan=e.doNotScan),e.scanMountPoints&&e.scanMountPoints.length){r.scanMountPoints=[];for(var n=0;n<e.scanMountPoints.length;++n)r.scanMountPoints[n]=e.scanMountPoints[n]}if(e.mountPointMapping&&e.mountPointMapping.length){r.mountPointMapping=[];for(n=0;n<e.mountPointMapping.length;++n)r.mountPointMapping[n]=s.perfetto.protos.InodeFileConfig.MountPointMappingEntry.toObject(e.mountPointMapping[n],t)}return r},Tt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Tt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.InodeFileConfig\"},Tt.MountPointMappingEntry=(vt.prototype.mountpoint=\"\",vt.prototype.scanRoots=i.emptyArray,vt.create=function(e){return new vt(e)},vt.encode=function(e,t){if(t=t||a.create(),null!=e.mountpoint&&Object.hasOwnProperty.call(e,\"mountpoint\")&&t.uint32(10).string(e.mountpoint),null!=e.scanRoots&&e.scanRoots.length)for(var r=0;r<e.scanRoots.length;++r)t.uint32(18).string(e.scanRoots[r]);return t},vt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.InodeFileConfig.MountPointMappingEntry;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.mountpoint=e.string();break;case 2:n.scanRoots&&n.scanRoots.length||(n.scanRoots=[]),n.scanRoots.push(e.string());break;default:e.skipType(7&a)}}return n},vt.fromObject=function(e){if(e instanceof s.perfetto.protos.InodeFileConfig.MountPointMappingEntry)return e;var t=new s.perfetto.protos.InodeFileConfig.MountPointMappingEntry;if(null!=e.mountpoint&&(t.mountpoint=String(e.mountpoint)),e.scanRoots){if(!Array.isArray(e.scanRoots))throw TypeError(\".perfetto.protos.InodeFileConfig.MountPointMappingEntry.scanRoots: array expected\");t.scanRoots=[];for(var r=0;r<e.scanRoots.length;++r)t.scanRoots[r]=String(e.scanRoots[r])}return t},vt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.scanRoots=[]),t.defaults&&(r.mountpoint=\"\"),null!=e.mountpoint&&e.hasOwnProperty(\"mountpoint\")&&(r.mountpoint=e.mountpoint),e.scanRoots&&e.scanRoots.length){r.scanRoots=[];for(var n=0;n<e.scanRoots.length;++n)r.scanRoots[n]=e.scanRoots[n]}return r},vt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},vt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.InodeFileConfig.MountPointMappingEntry\"},vt),Tt),r.InterceptorConfig=(bt.prototype.name=\"\",bt.prototype.consoleConfig=null,bt.create=function(e){return new bt(e)},bt.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.consoleConfig&&Object.hasOwnProperty.call(e,\"consoleConfig\")&&s.perfetto.protos.ConsoleConfig.encode(e.consoleConfig,t.uint32(802).fork()).ldelim(),t},bt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.InterceptorConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 100:n.consoleConfig=s.perfetto.protos.ConsoleConfig.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},bt.fromObject=function(e){if(e instanceof s.perfetto.protos.InterceptorConfig)return e;var t=new s.perfetto.protos.InterceptorConfig;if(null!=e.name&&(t.name=String(e.name)),null!=e.consoleConfig){if(\"object\"!=typeof e.consoleConfig)throw TypeError(\".perfetto.protos.InterceptorConfig.consoleConfig: object expected\");t.consoleConfig=s.perfetto.protos.ConsoleConfig.fromObject(e.consoleConfig)}return t},bt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.consoleConfig=null),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.consoleConfig&&e.hasOwnProperty(\"consoleConfig\")&&(r.consoleConfig=s.perfetto.protos.ConsoleConfig.toObject(e.consoleConfig,t)),r},bt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},bt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.InterceptorConfig\"},bt),r.ConsoleConfig=(Et.prototype.output=0,Et.prototype.enableColors=!1,Et.create=function(e){return new Et(e)},Et.encode=function(e,t){return t=t||a.create(),null!=e.output&&Object.hasOwnProperty.call(e,\"output\")&&t.uint32(8).int32(e.output),null!=e.enableColors&&Object.hasOwnProperty.call(e,\"enableColors\")&&t.uint32(16).bool(e.enableColors),t},Et.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ConsoleConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.output=e.int32();break;case 2:n.enableColors=e.bool();break;default:e.skipType(7&a)}}return n},Et.fromObject=function(e){if(e instanceof s.perfetto.protos.ConsoleConfig)return e;var t=new s.perfetto.protos.ConsoleConfig;switch(e.output){default:\"number\"==typeof e.output&&(t.output=e.output);break;case\"OUTPUT_UNSPECIFIED\":case 0:t.output=0;break;case\"OUTPUT_STDOUT\":case 1:t.output=1;break;case\"OUTPUT_STDERR\":case 2:t.output=2}return null!=e.enableColors&&(t.enableColors=Boolean(e.enableColors)),t},Et.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.output=t.enums===String?\"OUTPUT_UNSPECIFIED\":0,r.enableColors=!1),null!=e.output&&e.hasOwnProperty(\"output\")&&(r.output=t.enums!==String||void 0===s.perfetto.protos.ConsoleConfig.Output[e.output]?e.output:s.perfetto.protos.ConsoleConfig.Output[e.output]),null!=e.enableColors&&e.hasOwnProperty(\"enableColors\")&&(r.enableColors=e.enableColors),r},Et.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Et.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ConsoleConfig\"},Et.Output=(t={},(e=Object.create(t))[t[0]=\"OUTPUT_UNSPECIFIED\"]=0,e[t[1]=\"OUTPUT_STDOUT\"]=1,e[t[2]=\"OUTPUT_STDERR\"]=2,e),Et),r.AndroidPowerConfig=(St.prototype.batteryPollMs=0,St.prototype.batteryCounters=i.emptyArray,St.prototype.collectPowerRails=!1,St.prototype.collectEnergyEstimationBreakdown=!1,St.prototype.collectEntityStateResidency=!1,St.create=function(e){return new St(e)},St.encode=function(e,t){if(t=t||a.create(),null!=e.batteryPollMs&&Object.hasOwnProperty.call(e,\"batteryPollMs\")&&t.uint32(8).uint32(e.batteryPollMs),null!=e.batteryCounters&&e.batteryCounters.length)for(var r=0;r<e.batteryCounters.length;++r)t.uint32(16).int32(e.batteryCounters[r]);return null!=e.collectPowerRails&&Object.hasOwnProperty.call(e,\"collectPowerRails\")&&t.uint32(24).bool(e.collectPowerRails),null!=e.collectEnergyEstimationBreakdown&&Object.hasOwnProperty.call(e,\"collectEnergyEstimationBreakdown\")&&t.uint32(32).bool(e.collectEnergyEstimationBreakdown),null!=e.collectEntityStateResidency&&Object.hasOwnProperty.call(e,\"collectEntityStateResidency\")&&t.uint32(40).bool(e.collectEntityStateResidency),t},St.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AndroidPowerConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.batteryPollMs=e.uint32();break;case 2:if(n.batteryCounters&&n.batteryCounters.length||(n.batteryCounters=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.batteryCounters.push(e.int32());else n.batteryCounters.push(e.int32());break;case 3:n.collectPowerRails=e.bool();break;case 4:n.collectEnergyEstimationBreakdown=e.bool();break;case 5:n.collectEntityStateResidency=e.bool();break;default:e.skipType(7&a)}}return n},St.fromObject=function(e){if(e instanceof s.perfetto.protos.AndroidPowerConfig)return e;var t=new s.perfetto.protos.AndroidPowerConfig;if(null!=e.batteryPollMs&&(t.batteryPollMs=e.batteryPollMs>>>0),e.batteryCounters){if(!Array.isArray(e.batteryCounters))throw TypeError(\".perfetto.protos.AndroidPowerConfig.batteryCounters: array expected\");t.batteryCounters=[];for(var r=0;r<e.batteryCounters.length;++r)switch(e.batteryCounters[r]){default:if(\"number\"==typeof e.batteryCounters[r]){t.batteryCounters[r]=e.batteryCounters[r];break}case\"BATTERY_COUNTER_UNSPECIFIED\":case 0:t.batteryCounters[r]=0;break;case\"BATTERY_COUNTER_CHARGE\":case 1:t.batteryCounters[r]=1;break;case\"BATTERY_COUNTER_CAPACITY_PERCENT\":case 2:t.batteryCounters[r]=2;break;case\"BATTERY_COUNTER_CURRENT\":case 3:t.batteryCounters[r]=3;break;case\"BATTERY_COUNTER_CURRENT_AVG\":case 4:t.batteryCounters[r]=4;break;case\"BATTERY_COUNTER_VOLTAGE\":case 5:t.batteryCounters[r]=5}}return null!=e.collectPowerRails&&(t.collectPowerRails=Boolean(e.collectPowerRails)),null!=e.collectEnergyEstimationBreakdown&&(t.collectEnergyEstimationBreakdown=Boolean(e.collectEnergyEstimationBreakdown)),null!=e.collectEntityStateResidency&&(t.collectEntityStateResidency=Boolean(e.collectEntityStateResidency)),t},St.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.batteryCounters=[]),t.defaults&&(r.batteryPollMs=0,r.collectPowerRails=!1,r.collectEnergyEstimationBreakdown=!1,r.collectEntityStateResidency=!1),null!=e.batteryPollMs&&e.hasOwnProperty(\"batteryPollMs\")&&(r.batteryPollMs=e.batteryPollMs),e.batteryCounters&&e.batteryCounters.length){r.batteryCounters=[];for(var n=0;n<e.batteryCounters.length;++n)r.batteryCounters[n]=t.enums!==String||void 0===s.perfetto.protos.AndroidPowerConfig.BatteryCounters[e.batteryCounters[n]]?e.batteryCounters[n]:s.perfetto.protos.AndroidPowerConfig.BatteryCounters[e.batteryCounters[n]]}return null!=e.collectPowerRails&&e.hasOwnProperty(\"collectPowerRails\")&&(r.collectPowerRails=e.collectPowerRails),null!=e.collectEnergyEstimationBreakdown&&e.hasOwnProperty(\"collectEnergyEstimationBreakdown\")&&(r.collectEnergyEstimationBreakdown=e.collectEnergyEstimationBreakdown),null!=e.collectEntityStateResidency&&e.hasOwnProperty(\"collectEntityStateResidency\")&&(r.collectEntityStateResidency=e.collectEntityStateResidency),r},St.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},St.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AndroidPowerConfig\"},St.BatteryCounters=(t={},(e=Object.create(t))[t[0]=\"BATTERY_COUNTER_UNSPECIFIED\"]=0,e[t[1]=\"BATTERY_COUNTER_CHARGE\"]=1,e[t[2]=\"BATTERY_COUNTER_CAPACITY_PERCENT\"]=2,e[t[3]=\"BATTERY_COUNTER_CURRENT\"]=3,e[t[4]=\"BATTERY_COUNTER_CURRENT_AVG\"]=4,e[t[5]=\"BATTERY_COUNTER_VOLTAGE\"]=5,e),St),r.StatsdTracingConfig=(At.prototype.pushAtomId=i.emptyArray,At.prototype.rawPushAtomId=i.emptyArray,At.prototype.pullConfig=i.emptyArray,At.create=function(e){return new At(e)},At.encode=function(e,t){if(t=t||a.create(),null!=e.pushAtomId&&e.pushAtomId.length)for(var r=0;r<e.pushAtomId.length;++r)t.uint32(8).int32(e.pushAtomId[r]);if(null!=e.rawPushAtomId&&e.rawPushAtomId.length)for(r=0;r<e.rawPushAtomId.length;++r)t.uint32(16).int32(e.rawPushAtomId[r]);if(null!=e.pullConfig&&e.pullConfig.length)for(r=0;r<e.pullConfig.length;++r)s.perfetto.protos.StatsdPullAtomConfig.encode(e.pullConfig[r],t.uint32(26).fork()).ldelim();return t},At.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.StatsdTracingConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.pushAtomId&&n.pushAtomId.length||(n.pushAtomId=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.pushAtomId.push(e.int32());else n.pushAtomId.push(e.int32());break;case 2:if(n.rawPushAtomId&&n.rawPushAtomId.length||(n.rawPushAtomId=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.rawPushAtomId.push(e.int32());else n.rawPushAtomId.push(e.int32());break;case 3:n.pullConfig&&n.pullConfig.length||(n.pullConfig=[]),n.pullConfig.push(s.perfetto.protos.StatsdPullAtomConfig.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},At.fromObject=function(e){if(e instanceof s.perfetto.protos.StatsdTracingConfig)return e;var t=new s.perfetto.protos.StatsdTracingConfig;if(e.pushAtomId){if(!Array.isArray(e.pushAtomId))throw TypeError(\".perfetto.protos.StatsdTracingConfig.pushAtomId: array expected\");t.pushAtomId=[];for(var r=0;r<e.pushAtomId.length;++r)switch(e.pushAtomId[r]){default:if(\"number\"==typeof e.pushAtomId[r]){t.pushAtomId[r]=e.pushAtomId[r];break}case\"ATOM_UNSPECIFIED\":case 0:t.pushAtomId[r]=0;break;case\"ATOM_BLE_SCAN_STATE_CHANGED\":case 2:t.pushAtomId[r]=2;break;case\"ATOM_PROCESS_STATE_CHANGED\":case 3:t.pushAtomId[r]=3;break;case\"ATOM_BLE_SCAN_RESULT_RECEIVED\":case 4:t.pushAtomId[r]=4;break;case\"ATOM_SENSOR_STATE_CHANGED\":case 5:t.pushAtomId[r]=5;break;case\"ATOM_GPS_SCAN_STATE_CHANGED\":case 6:t.pushAtomId[r]=6;break;case\"ATOM_SYNC_STATE_CHANGED\":case 7:t.pushAtomId[r]=7;break;case\"ATOM_SCHEDULED_JOB_STATE_CHANGED\":case 8:t.pushAtomId[r]=8;break;case\"ATOM_SCREEN_BRIGHTNESS_CHANGED\":case 9:t.pushAtomId[r]=9;break;case\"ATOM_WAKELOCK_STATE_CHANGED\":case 10:t.pushAtomId[r]=10;break;case\"ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED\":case 11:t.pushAtomId[r]=11;break;case\"ATOM_MOBILE_RADIO_POWER_STATE_CHANGED\":case 12:t.pushAtomId[r]=12;break;case\"ATOM_WIFI_RADIO_POWER_STATE_CHANGED\":case 13:t.pushAtomId[r]=13;break;case\"ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED\":case 14:t.pushAtomId[r]=14;break;case\"ATOM_MEMORY_FACTOR_STATE_CHANGED\":case 15:t.pushAtomId[r]=15;break;case\"ATOM_EXCESSIVE_CPU_USAGE_REPORTED\":case 16:t.pushAtomId[r]=16;break;case\"ATOM_CACHED_KILL_REPORTED\":case 17:t.pushAtomId[r]=17;break;case\"ATOM_PROCESS_MEMORY_STAT_REPORTED\":case 18:t.pushAtomId[r]=18;break;case\"ATOM_LAUNCHER_EVENT\":case 19:t.pushAtomId[r]=19;break;case\"ATOM_BATTERY_SAVER_MODE_STATE_CHANGED\":case 20:t.pushAtomId[r]=20;break;case\"ATOM_DEVICE_IDLE_MODE_STATE_CHANGED\":case 21:t.pushAtomId[r]=21;break;case\"ATOM_DEVICE_IDLING_MODE_STATE_CHANGED\":case 22:t.pushAtomId[r]=22;break;case\"ATOM_AUDIO_STATE_CHANGED\":case 23:t.pushAtomId[r]=23;break;case\"ATOM_MEDIA_CODEC_STATE_CHANGED\":case 24:t.pushAtomId[r]=24;break;case\"ATOM_CAMERA_STATE_CHANGED\":case 25:t.pushAtomId[r]=25;break;case\"ATOM_FLASHLIGHT_STATE_CHANGED\":case 26:t.pushAtomId[r]=26;break;case\"ATOM_UID_PROCESS_STATE_CHANGED\":case 27:t.pushAtomId[r]=27;break;case\"ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED\":case 28:t.pushAtomId[r]=28;break;case\"ATOM_SCREEN_STATE_CHANGED\":case 29:t.pushAtomId[r]=29;break;case\"ATOM_BATTERY_LEVEL_CHANGED\":case 30:t.pushAtomId[r]=30;break;case\"ATOM_CHARGING_STATE_CHANGED\":case 31:t.pushAtomId[r]=31;break;case\"ATOM_PLUGGED_STATE_CHANGED\":case 32:t.pushAtomId[r]=32;break;case\"ATOM_INTERACTIVE_STATE_CHANGED\":case 33:t.pushAtomId[r]=33;break;case\"ATOM_TOUCH_EVENT_REPORTED\":case 34:t.pushAtomId[r]=34;break;case\"ATOM_WAKEUP_ALARM_OCCURRED\":case 35:t.pushAtomId[r]=35;break;case\"ATOM_KERNEL_WAKEUP_REPORTED\":case 36:t.pushAtomId[r]=36;break;case\"ATOM_WIFI_LOCK_STATE_CHANGED\":case 37:t.pushAtomId[r]=37;break;case\"ATOM_WIFI_SIGNAL_STRENGTH_CHANGED\":case 38:t.pushAtomId[r]=38;break;case\"ATOM_WIFI_SCAN_STATE_CHANGED\":case 39:t.pushAtomId[r]=39;break;case\"ATOM_PHONE_SIGNAL_STRENGTH_CHANGED\":case 40:t.pushAtomId[r]=40;break;case\"ATOM_SETTING_CHANGED\":case 41:t.pushAtomId[r]=41;break;case\"ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED\":case 42:t.pushAtomId[r]=42;break;case\"ATOM_ISOLATED_UID_CHANGED\":case 43:t.pushAtomId[r]=43;break;case\"ATOM_PACKET_WAKEUP_OCCURRED\":case 44:t.pushAtomId[r]=44;break;case\"ATOM_WALL_CLOCK_TIME_SHIFTED\":case 45:t.pushAtomId[r]=45;break;case\"ATOM_ANOMALY_DETECTED\":case 46:t.pushAtomId[r]=46;break;case\"ATOM_APP_BREADCRUMB_REPORTED\":case 47:t.pushAtomId[r]=47;break;case\"ATOM_APP_START_OCCURRED\":case 48:t.pushAtomId[r]=48;break;case\"ATOM_APP_START_CANCELED\":case 49:t.pushAtomId[r]=49;break;case\"ATOM_APP_START_FULLY_DRAWN\":case 50:t.pushAtomId[r]=50;break;case\"ATOM_LMK_KILL_OCCURRED\":case 51:t.pushAtomId[r]=51;break;case\"ATOM_PICTURE_IN_PICTURE_STATE_CHANGED\":case 52:t.pushAtomId[r]=52;break;case\"ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED\":case 53:t.pushAtomId[r]=53;break;case\"ATOM_APP_START_MEMORY_STATE_CAPTURED\":case 55:t.pushAtomId[r]=55;break;case\"ATOM_SHUTDOWN_SEQUENCE_REPORTED\":case 56:t.pushAtomId[r]=56;break;case\"ATOM_BOOT_SEQUENCE_REPORTED\":case 57:t.pushAtomId[r]=57;break;case\"ATOM_OVERLAY_STATE_CHANGED\":case 59:t.pushAtomId[r]=59;break;case\"ATOM_FOREGROUND_SERVICE_STATE_CHANGED\":case 60:t.pushAtomId[r]=60;break;case\"ATOM_CALL_STATE_CHANGED\":case 61:t.pushAtomId[r]=61;break;case\"ATOM_KEYGUARD_STATE_CHANGED\":case 62:t.pushAtomId[r]=62;break;case\"ATOM_KEYGUARD_BOUNCER_STATE_CHANGED\":case 63:t.pushAtomId[r]=63;break;case\"ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED\":case 64:t.pushAtomId[r]=64;break;case\"ATOM_APP_DIED\":case 65:t.pushAtomId[r]=65;break;case\"ATOM_RESOURCE_CONFIGURATION_CHANGED\":case 66:t.pushAtomId[r]=66;break;case\"ATOM_BLUETOOTH_ENABLED_STATE_CHANGED\":case 67:t.pushAtomId[r]=67;break;case\"ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED\":case 68:t.pushAtomId[r]=68;break;case\"ATOM_GPS_SIGNAL_QUALITY_CHANGED\":case 69:t.pushAtomId[r]=69;break;case\"ATOM_USB_CONNECTOR_STATE_CHANGED\":case 70:t.pushAtomId[r]=70;break;case\"ATOM_SPEAKER_IMPEDANCE_REPORTED\":case 71:t.pushAtomId[r]=71;break;case\"ATOM_HARDWARE_FAILED\":case 72:t.pushAtomId[r]=72;break;case\"ATOM_PHYSICAL_DROP_DETECTED\":case 73:t.pushAtomId[r]=73;break;case\"ATOM_CHARGE_CYCLES_REPORTED\":case 74:t.pushAtomId[r]=74;break;case\"ATOM_MOBILE_CONNECTION_STATE_CHANGED\":case 75:t.pushAtomId[r]=75;break;case\"ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED\":case 76:t.pushAtomId[r]=76;break;case\"ATOM_USB_DEVICE_ATTACHED\":case 77:t.pushAtomId[r]=77;break;case\"ATOM_APP_CRASH_OCCURRED\":case 78:t.pushAtomId[r]=78;break;case\"ATOM_ANR_OCCURRED\":case 79:t.pushAtomId[r]=79;break;case\"ATOM_WTF_OCCURRED\":case 80:t.pushAtomId[r]=80;break;case\"ATOM_LOW_MEM_REPORTED\":case 81:t.pushAtomId[r]=81;break;case\"ATOM_GENERIC_ATOM\":case 82:t.pushAtomId[r]=82;break;case\"ATOM_VIBRATOR_STATE_CHANGED\":case 84:t.pushAtomId[r]=84;break;case\"ATOM_DEFERRED_JOB_STATS_REPORTED\":case 85:t.pushAtomId[r]=85;break;case\"ATOM_THERMAL_THROTTLING\":case 86:t.pushAtomId[r]=86;break;case\"ATOM_BIOMETRIC_ACQUIRED\":case 87:t.pushAtomId[r]=87;break;case\"ATOM_BIOMETRIC_AUTHENTICATED\":case 88:t.pushAtomId[r]=88;break;case\"ATOM_BIOMETRIC_ERROR_OCCURRED\":case 89:t.pushAtomId[r]=89;break;case\"ATOM_UI_EVENT_REPORTED\":case 90:t.pushAtomId[r]=90;break;case\"ATOM_BATTERY_HEALTH_SNAPSHOT\":case 91:t.pushAtomId[r]=91;break;case\"ATOM_SLOW_IO\":case 92:t.pushAtomId[r]=92;break;case\"ATOM_BATTERY_CAUSED_SHUTDOWN\":case 93:t.pushAtomId[r]=93;break;case\"ATOM_PHONE_SERVICE_STATE_CHANGED\":case 94:t.pushAtomId[r]=94;break;case\"ATOM_PHONE_STATE_CHANGED\":case 95:t.pushAtomId[r]=95;break;case\"ATOM_USER_RESTRICTION_CHANGED\":case 96:t.pushAtomId[r]=96;break;case\"ATOM_SETTINGS_UI_CHANGED\":case 97:t.pushAtomId[r]=97;break;case\"ATOM_CONNECTIVITY_STATE_CHANGED\":case 98:t.pushAtomId[r]=98;break;case\"ATOM_SERVICE_STATE_CHANGED\":case 99:t.pushAtomId[r]=99;break;case\"ATOM_SERVICE_LAUNCH_REPORTED\":case 100:t.pushAtomId[r]=100;break;case\"ATOM_FLAG_FLIP_UPDATE_OCCURRED\":case 101:t.pushAtomId[r]=101;break;case\"ATOM_BINARY_PUSH_STATE_CHANGED\":case 102:t.pushAtomId[r]=102;break;case\"ATOM_DEVICE_POLICY_EVENT\":case 103:t.pushAtomId[r]=103;break;case\"ATOM_DOCS_UI_FILE_OP_CANCELED\":case 104:t.pushAtomId[r]=104;break;case\"ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED\":case 105:t.pushAtomId[r]=105;break;case\"ATOM_DOCS_UI_FILE_OP_FAILURE\":case 106:t.pushAtomId[r]=106;break;case\"ATOM_DOCS_UI_PROVIDER_FILE_OP\":case 107:t.pushAtomId[r]=107;break;case\"ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST\":case 108:t.pushAtomId[r]=108;break;case\"ATOM_DOCS_UI_LAUNCH_REPORTED\":case 109:t.pushAtomId[r]=109;break;case\"ATOM_DOCS_UI_ROOT_VISITED\":case 110:t.pushAtomId[r]=110;break;case\"ATOM_DOCS_UI_STARTUP_MS\":case 111:t.pushAtomId[r]=111;break;case\"ATOM_DOCS_UI_USER_ACTION_REPORTED\":case 112:t.pushAtomId[r]=112;break;case\"ATOM_WIFI_ENABLED_STATE_CHANGED\":case 113:t.pushAtomId[r]=113;break;case\"ATOM_WIFI_RUNNING_STATE_CHANGED\":case 114:t.pushAtomId[r]=114;break;case\"ATOM_APP_COMPACTED\":case 115:t.pushAtomId[r]=115;break;case\"ATOM_NETWORK_DNS_EVENT_REPORTED\":case 116:t.pushAtomId[r]=116;break;case\"ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED\":case 117:t.pushAtomId[r]=117;break;case\"ATOM_DOCS_UI_PICK_RESULT_REPORTED\":case 118:t.pushAtomId[r]=118;break;case\"ATOM_DOCS_UI_SEARCH_MODE_REPORTED\":case 119:t.pushAtomId[r]=119;break;case\"ATOM_DOCS_UI_SEARCH_TYPE_REPORTED\":case 120:t.pushAtomId[r]=120;break;case\"ATOM_DATA_STALL_EVENT\":case 121:t.pushAtomId[r]=121;break;case\"ATOM_RESCUE_PARTY_RESET_REPORTED\":case 122:t.pushAtomId[r]=122;break;case\"ATOM_SIGNED_CONFIG_REPORTED\":case 123:t.pushAtomId[r]=123;break;case\"ATOM_GNSS_NI_EVENT_REPORTED\":case 124:t.pushAtomId[r]=124;break;case\"ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT\":case 125:t.pushAtomId[r]=125;break;case\"ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED\":case 126:t.pushAtomId[r]=126;break;case\"ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED\":case 127:t.pushAtomId[r]=127;break;case\"ATOM_APP_DOWNGRADED\":case 128:t.pushAtomId[r]=128;break;case\"ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED\":case 129:t.pushAtomId[r]=129;break;case\"ATOM_LOW_STORAGE_STATE_CHANGED\":case 130:t.pushAtomId[r]=130;break;case\"ATOM_GNSS_NFW_NOTIFICATION_REPORTED\":case 131:t.pushAtomId[r]=131;break;case\"ATOM_GNSS_CONFIGURATION_REPORTED\":case 132:t.pushAtomId[r]=132;break;case\"ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED\":case 133:t.pushAtomId[r]=133;break;case\"ATOM_NFC_ERROR_OCCURRED\":case 134:t.pushAtomId[r]=134;break;case\"ATOM_NFC_STATE_CHANGED\":case 135:t.pushAtomId[r]=135;break;case\"ATOM_NFC_BEAM_OCCURRED\":case 136:t.pushAtomId[r]=136;break;case\"ATOM_NFC_CARDEMULATION_OCCURRED\":case 137:t.pushAtomId[r]=137;break;case\"ATOM_NFC_TAG_OCCURRED\":case 138:t.pushAtomId[r]=138;break;case\"ATOM_NFC_HCE_TRANSACTION_OCCURRED\":case 139:t.pushAtomId[r]=139;break;case\"ATOM_SE_STATE_CHANGED\":case 140:t.pushAtomId[r]=140;break;case\"ATOM_SE_OMAPI_REPORTED\":case 141:t.pushAtomId[r]=141;break;case\"ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED\":case 142:t.pushAtomId[r]=142;break;case\"ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED\":case 143:t.pushAtomId[r]=143;break;case\"ATOM_ADB_CONNECTION_CHANGED\":case 144:t.pushAtomId[r]=144;break;case\"ATOM_SPEECH_DSP_STAT_REPORTED\":case 145:t.pushAtomId[r]=145;break;case\"ATOM_USB_CONTAMINANT_REPORTED\":case 146:t.pushAtomId[r]=146;break;case\"ATOM_WATCHDOG_ROLLBACK_OCCURRED\":case 147:t.pushAtomId[r]=147;break;case\"ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED\":case 148:t.pushAtomId[r]=148;break;case\"ATOM_BUBBLE_UI_CHANGED\":case 149:t.pushAtomId[r]=149;break;case\"ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED\":case 150:t.pushAtomId[r]=150;break;case\"ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED\":case 151:t.pushAtomId[r]=151;break;case\"ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED\":case 152:t.pushAtomId[r]=152;break;case\"ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED\":case 153:t.pushAtomId[r]=153;break;case\"ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED\":case 154:t.pushAtomId[r]=154;break;case\"ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED\":case 155:t.pushAtomId[r]=155;break;case\"ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED\":case 156:t.pushAtomId[r]=156;break;case\"ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED\":case 157:t.pushAtomId[r]=157;break;case\"ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED\":case 158:t.pushAtomId[r]=158;break;case\"ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED\":case 159:t.pushAtomId[r]=159;break;case\"ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED\":case 160:t.pushAtomId[r]=160;break;case\"ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED\":case 161:t.pushAtomId[r]=161;break;case\"ATOM_BLUETOOTH_DEVICE_INFO_REPORTED\":case 162:t.pushAtomId[r]=162;break;case\"ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED\":case 163:t.pushAtomId[r]=163;break;case\"ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED\":case 164:t.pushAtomId[r]=164;break;case\"ATOM_BLUETOOTH_BOND_STATE_CHANGED\":case 165:t.pushAtomId[r]=165;break;case\"ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED\":case 166:t.pushAtomId[r]=166;break;case\"ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED\":case 167:t.pushAtomId[r]=167;break;case\"ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED\":case 168:t.pushAtomId[r]=168;break;case\"ATOM_PROCESS_START_TIME\":case 169:t.pushAtomId[r]=169;break;case\"ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED\":case 170:t.pushAtomId[r]=170;break;case\"ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED\":case 171:t.pushAtomId[r]=171;break;case\"ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED\":case 172:t.pushAtomId[r]=172;break;case\"ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED\":case 173:t.pushAtomId[r]=173;break;case\"ATOM_ASSIST_GESTURE_STAGE_REPORTED\":case 174:t.pushAtomId[r]=174;break;case\"ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED\":case 175:t.pushAtomId[r]=175;break;case\"ATOM_ASSIST_GESTURE_PROGRESS_REPORTED\":case 176:t.pushAtomId[r]=176;break;case\"ATOM_TOUCH_GESTURE_CLASSIFIED\":case 177:t.pushAtomId[r]=177;break;case\"ATOM_HIDDEN_API_USED\":case 178:t.pushAtomId[r]=178;break;case\"ATOM_STYLE_UI_CHANGED\":case 179:t.pushAtomId[r]=179;break;case\"ATOM_PRIVACY_INDICATORS_INTERACTED\":case 180:t.pushAtomId[r]=180;break;case\"ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED\":case 181:t.pushAtomId[r]=181;break;case\"ATOM_NETWORK_STACK_REPORTED\":case 182:t.pushAtomId[r]=182;break;case\"ATOM_APP_MOVED_STORAGE_REPORTED\":case 183:t.pushAtomId[r]=183;break;case\"ATOM_BIOMETRIC_ENROLLED\":case 184:t.pushAtomId[r]=184;break;case\"ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED\":case 185:t.pushAtomId[r]=185;break;case\"ATOM_TOMB_STONE_OCCURRED\":case 186:t.pushAtomId[r]=186;break;case\"ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED\":case 187:t.pushAtomId[r]=187;break;case\"ATOM_INTELLIGENCE_EVENT_REPORTED\":case 188:t.pushAtomId[r]=188;break;case\"ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED\":case 189:t.pushAtomId[r]=189;break;case\"ATOM_ROLE_REQUEST_RESULT_REPORTED\":case 190:t.pushAtomId[r]=190;break;case\"ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED\":case 191:t.pushAtomId[r]=191;break;case\"ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED\":case 192:t.pushAtomId[r]=192;break;case\"ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED\":case 193:t.pushAtomId[r]=193;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED\":case 194:t.pushAtomId[r]=194;break;case\"ATOM_MEDIAMETRICS_CODEC_REPORTED\":case 195:t.pushAtomId[r]=195;break;case\"ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED\":case 196:t.pushAtomId[r]=196;break;case\"ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED\":case 197:t.pushAtomId[r]=197;break;case\"ATOM_MEDIAMETRICS_MEDIADRM_REPORTED\":case 198:t.pushAtomId[r]=198;break;case\"ATOM_MEDIAMETRICS_NUPLAYER_REPORTED\":case 199:t.pushAtomId[r]=199;break;case\"ATOM_MEDIAMETRICS_RECORDER_REPORTED\":case 200:t.pushAtomId[r]=200;break;case\"ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED\":case 201:t.pushAtomId[r]=201;break;case\"ATOM_CAR_POWER_STATE_CHANGED\":case 203:t.pushAtomId[r]=203;break;case\"ATOM_GARAGE_MODE_INFO\":case 204:t.pushAtomId[r]=204;break;case\"ATOM_TEST_ATOM_REPORTED\":case 205:t.pushAtomId[r]=205;break;case\"ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED\":case 206:t.pushAtomId[r]=206;break;case\"ATOM_CONTENT_CAPTURE_SERVICE_EVENTS\":case 207:t.pushAtomId[r]=207;break;case\"ATOM_CONTENT_CAPTURE_SESSION_EVENTS\":case 208:t.pushAtomId[r]=208;break;case\"ATOM_CONTENT_CAPTURE_FLUSHED\":case 209:t.pushAtomId[r]=209;break;case\"ATOM_LOCATION_MANAGER_API_USAGE_REPORTED\":case 210:t.pushAtomId[r]=210;break;case\"ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED\":case 211:t.pushAtomId[r]=211;break;case\"ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT\":case 212:t.pushAtomId[r]=212;break;case\"ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS\":case 213:t.pushAtomId[r]=213;break;case\"ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION\":case 214:t.pushAtomId[r]=214;break;case\"ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED\":case 215:t.pushAtomId[r]=215;break;case\"ATOM_APP_PERMISSION_FRAGMENT_VIEWED\":case 216:t.pushAtomId[r]=216;break;case\"ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED\":case 217:t.pushAtomId[r]=217;break;case\"ATOM_PERMISSION_APPS_FRAGMENT_VIEWED\":case 218:t.pushAtomId[r]=218;break;case\"ATOM_TEXT_SELECTION_EVENT\":case 219:t.pushAtomId[r]=219;break;case\"ATOM_TEXT_LINKIFY_EVENT\":case 220:t.pushAtomId[r]=220;break;case\"ATOM_CONVERSATION_ACTIONS_EVENT\":case 221:t.pushAtomId[r]=221;break;case\"ATOM_LANGUAGE_DETECTION_EVENT\":case 222:t.pushAtomId[r]=222;break;case\"ATOM_EXCLUSION_RECT_STATE_CHANGED\":case 223:t.pushAtomId[r]=223;break;case\"ATOM_BACK_GESTURE_REPORTED_REPORTED\":case 224:t.pushAtomId[r]=224;break;case\"ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED\":case 225:t.pushAtomId[r]=225;break;case\"ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED\":case 226:t.pushAtomId[r]=226;break;case\"ATOM_CAMERA_ACTION_EVENT\":case 227:t.pushAtomId[r]=227;break;case\"ATOM_APP_COMPATIBILITY_CHANGE_REPORTED\":case 228:t.pushAtomId[r]=228;break;case\"ATOM_PERFETTO_UPLOADED\":case 229:t.pushAtomId[r]=229;break;case\"ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED\":case 230:t.pushAtomId[r]=230;break;case\"ATOM_MEDIA_PROVIDER_SCAN_OCCURRED\":case 233:t.pushAtomId[r]=233;break;case\"ATOM_MEDIA_CONTENT_DELETED\":case 234:t.pushAtomId[r]=234;break;case\"ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED\":case 235:t.pushAtomId[r]=235;break;case\"ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED\":case 236:t.pushAtomId[r]=236;break;case\"ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED\":case 237:t.pushAtomId[r]=237;break;case\"ATOM_REBOOT_ESCROW_RECOVERY_REPORTED\":case 238:t.pushAtomId[r]=238;break;case\"ATOM_BOOT_TIME_EVENT_DURATION_REPORTED\":case 239:t.pushAtomId[r]=239;break;case\"ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED\":case 240:t.pushAtomId[r]=240;break;case\"ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED\":case 241:t.pushAtomId[r]=241;break;case\"ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED\":case 242:t.pushAtomId[r]=242;break;case\"ATOM_USERSPACE_REBOOT_REPORTED\":case 243:t.pushAtomId[r]=243;break;case\"ATOM_NOTIFICATION_REPORTED\":case 244:t.pushAtomId[r]=244;break;case\"ATOM_NOTIFICATION_PANEL_REPORTED\":case 245:t.pushAtomId[r]=245;break;case\"ATOM_NOTIFICATION_CHANNEL_MODIFIED\":case 246:t.pushAtomId[r]=246;break;case\"ATOM_INTEGRITY_CHECK_RESULT_REPORTED\":case 247:t.pushAtomId[r]=247;break;case\"ATOM_INTEGRITY_RULES_PUSHED\":case 248:t.pushAtomId[r]=248;break;case\"ATOM_CB_MESSAGE_REPORTED\":case 249:t.pushAtomId[r]=249;break;case\"ATOM_CB_MESSAGE_ERROR\":case 250:t.pushAtomId[r]=250;break;case\"ATOM_WIFI_HEALTH_STAT_REPORTED\":case 251:t.pushAtomId[r]=251;break;case\"ATOM_WIFI_FAILURE_STAT_REPORTED\":case 252:t.pushAtomId[r]=252;break;case\"ATOM_WIFI_CONNECTION_RESULT_REPORTED\":case 253:t.pushAtomId[r]=253;break;case\"ATOM_APP_FREEZE_CHANGED\":case 254:t.pushAtomId[r]=254;break;case\"ATOM_SNAPSHOT_MERGE_REPORTED\":case 255:t.pushAtomId[r]=255;break;case\"ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED\":case 256:t.pushAtomId[r]=256;break;case\"ATOM_DISPLAY_JANK_REPORTED\":case 257:t.pushAtomId[r]=257;break;case\"ATOM_APP_STANDBY_BUCKET_CHANGED\":case 258:t.pushAtomId[r]=258;break;case\"ATOM_SHARESHEET_STARTED\":case 259:t.pushAtomId[r]=259;break;case\"ATOM_RANKING_SELECTED\":case 260:t.pushAtomId[r]=260;break;case\"ATOM_TVSETTINGS_UI_INTERACTED\":case 261:t.pushAtomId[r]=261;break;case\"ATOM_LAUNCHER_SNAPSHOT\":case 262:t.pushAtomId[r]=262;break;case\"ATOM_PACKAGE_INSTALLER_V2_REPORTED\":case 263:t.pushAtomId[r]=263;break;case\"ATOM_USER_LIFECYCLE_JOURNEY_REPORTED\":case 264:t.pushAtomId[r]=264;break;case\"ATOM_USER_LIFECYCLE_EVENT_OCCURRED\":case 265:t.pushAtomId[r]=265;break;case\"ATOM_ACCESSIBILITY_SHORTCUT_REPORTED\":case 266:t.pushAtomId[r]=266;break;case\"ATOM_ACCESSIBILITY_SERVICE_REPORTED\":case 267:t.pushAtomId[r]=267;break;case\"ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED\":case 268:t.pushAtomId[r]=268;break;case\"ATOM_APP_USAGE_EVENT_OCCURRED\":case 269:t.pushAtomId[r]=269;break;case\"ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED\":case 270:t.pushAtomId[r]=270;break;case\"ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED\":case 271:t.pushAtomId[r]=271;break;case\"ATOM_AUTO_REVOKED_APP_INTERACTION\":case 272:t.pushAtomId[r]=272;break;case\"ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION\":case 273:t.pushAtomId[r]=273;break;case\"ATOM_EVS_USAGE_STATS_REPORTED\":case 274:t.pushAtomId[r]=274;break;case\"ATOM_AUDIO_POWER_USAGE_DATA_REPORTED\":case 275:t.pushAtomId[r]=275;break;case\"ATOM_TV_TUNER_STATE_CHANGED\":case 276:t.pushAtomId[r]=276;break;case\"ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED\":case 277:t.pushAtomId[r]=277;break;case\"ATOM_CB_MESSAGE_FILTERED\":case 278:t.pushAtomId[r]=278;break;case\"ATOM_TV_TUNER_DVR_STATUS\":case 279:t.pushAtomId[r]=279;break;case\"ATOM_TV_CAS_SESSION_OPEN_STATUS\":case 280:t.pushAtomId[r]=280;break;case\"ATOM_ASSISTANT_INVOCATION_REPORTED\":case 281:t.pushAtomId[r]=281;break;case\"ATOM_DISPLAY_WAKE_REPORTED\":case 282:t.pushAtomId[r]=282;break;case\"ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED\":case 283:t.pushAtomId[r]=283;break;case\"ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED\":case 284:t.pushAtomId[r]=284;break;case\"ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED\":case 285:t.pushAtomId[r]=285;break;case\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED\":case 286:t.pushAtomId[r]=286;break;case\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED\":case 287:t.pushAtomId[r]=287;break;case\"ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED\":case 288:t.pushAtomId[r]=288;break;case\"ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED\":case 289:t.pushAtomId[r]=289;break;case\"ATOM_NETWORK_IP_PROVISIONING_REPORTED\":case 290:t.pushAtomId[r]=290;break;case\"ATOM_NETWORK_DHCP_RENEW_REPORTED\":case 291:t.pushAtomId[r]=291;break;case\"ATOM_NETWORK_VALIDATION_REPORTED\":case 292:t.pushAtomId[r]=292;break;case\"ATOM_NETWORK_STACK_QUIRK_REPORTED\":case 293:t.pushAtomId[r]=293;break;case\"ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED\":case 294:t.pushAtomId[r]=294;break;case\"ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED\":case 295:t.pushAtomId[r]=295;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED\":case 296:t.pushAtomId[r]=296;break;case\"ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED\":case 297:t.pushAtomId[r]=297;break;case\"ATOM_BLOB_COMMITTED\":case 298:t.pushAtomId[r]=298;break;case\"ATOM_BLOB_LEASED\":case 299:t.pushAtomId[r]=299;break;case\"ATOM_BLOB_OPENED\":case 300:t.pushAtomId[r]=300;break;case\"ATOM_CONTACTS_PROVIDER_STATUS_REPORTED\":case 301:t.pushAtomId[r]=301;break;case\"ATOM_KEYSTORE_KEY_EVENT_REPORTED\":case 302:t.pushAtomId[r]=302;break;case\"ATOM_NETWORK_TETHERING_REPORTED\":case 303:t.pushAtomId[r]=303;break;case\"ATOM_IME_TOUCH_REPORTED\":case 304:t.pushAtomId[r]=304;break;case\"ATOM_UI_INTERACTION_FRAME_INFO_REPORTED\":case 305:t.pushAtomId[r]=305;break;case\"ATOM_UI_ACTION_LATENCY_REPORTED\":case 306:t.pushAtomId[r]=306;break;case\"ATOM_WIFI_DISCONNECT_REPORTED\":case 307:t.pushAtomId[r]=307;break;case\"ATOM_WIFI_CONNECTION_STATE_CHANGED\":case 308:t.pushAtomId[r]=308;break;case\"ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED\":case 309:t.pushAtomId[r]=309;break;case\"ATOM_HDMI_CEC_MESSAGE_REPORTED\":case 310:t.pushAtomId[r]=310;break;case\"ATOM_AIRPLANE_MODE\":case 311:t.pushAtomId[r]=311;break;case\"ATOM_MODEM_RESTART\":case 312:t.pushAtomId[r]=312;break;case\"ATOM_CARRIER_ID_MISMATCH_REPORTED\":case 313:t.pushAtomId[r]=313;break;case\"ATOM_CARRIER_ID_TABLE_UPDATED\":case 314:t.pushAtomId[r]=314;break;case\"ATOM_DATA_STALL_RECOVERY_REPORTED\":case 315:t.pushAtomId[r]=315;break;case\"ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED\":case 316:t.pushAtomId[r]=316;break;case\"ATOM_TLS_HANDSHAKE_REPORTED\":case 317:t.pushAtomId[r]=317;break;case\"ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED\":case 318:t.pushAtomId[r]=318;break;case\"ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED\":case 319:t.pushAtomId[r]=319;break;case\"ATOM_MEDIAMETRICS_PLAYBACK_REPORTED\":case 320:t.pushAtomId[r]=320;break;case\"ATOM_MEDIA_NETWORK_INFO_CHANGED\":case 321:t.pushAtomId[r]=321;break;case\"ATOM_MEDIA_PLAYBACK_STATE_CHANGED\":case 322:t.pushAtomId[r]=322;break;case\"ATOM_MEDIA_PLAYBACK_ERROR_REPORTED\":case 323:t.pushAtomId[r]=323;break;case\"ATOM_MEDIA_PLAYBACK_TRACK_CHANGED\":case 324:t.pushAtomId[r]=324;break;case\"ATOM_WIFI_SCAN_REPORTED\":case 325:t.pushAtomId[r]=325;break;case\"ATOM_WIFI_PNO_SCAN_REPORTED\":case 326:t.pushAtomId[r]=326;break;case\"ATOM_TIF_TUNE_CHANGED\":case 327:t.pushAtomId[r]=327;break;case\"ATOM_AUTO_ROTATE_REPORTED\":case 328:t.pushAtomId[r]=328;break;case\"ATOM_PERFETTO_TRIGGER\":case 329:t.pushAtomId[r]=329;break;case\"ATOM_TRANSCODING_DATA\":case 330:t.pushAtomId[r]=330;break;case\"ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED\":case 331:t.pushAtomId[r]=331;break;case\"ATOM_DEVICE_ROTATED\":case 333:t.pushAtomId[r]=333;break;case\"ATOM_SIM_SPECIFIC_SETTINGS_RESTORED\":case 334:t.pushAtomId[r]=334;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED\":case 335:t.pushAtomId[r]=335;break;case\"ATOM_PIN_STORAGE_EVENT\":case 336:t.pushAtomId[r]=336;break;case\"ATOM_FACE_DOWN_REPORTED\":case 337:t.pushAtomId[r]=337;break;case\"ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED\":case 338:t.pushAtomId[r]=338;break;case\"ATOM_REBOOT_ESCROW_PREPARATION_REPORTED\":case 339:t.pushAtomId[r]=339;break;case\"ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED\":case 340:t.pushAtomId[r]=340;break;case\"ATOM_REBOOT_ESCROW_REBOOT_REPORTED\":case 341:t.pushAtomId[r]=341;break;case\"ATOM_BINDER_LATENCY_REPORTED\":case 342:t.pushAtomId[r]=342;break;case\"ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED\":case 343:t.pushAtomId[r]=343;break;case\"ATOM_MEDIA_TRANSCODING_SESSION_ENDED\":case 344:t.pushAtomId[r]=344;break;case\"ATOM_MAGNIFICATION_USAGE_REPORTED\":case 345:t.pushAtomId[r]=345;break;case\"ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED\":case 346:t.pushAtomId[r]=346;break;case\"ATOM_APP_SEARCH_CALL_STATS_REPORTED\":case 347:t.pushAtomId[r]=347;break;case\"ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED\":case 348:t.pushAtomId[r]=348;break;case\"ATOM_DEVICE_CONTROL_CHANGED\":case 349:t.pushAtomId[r]=349;break;case\"ATOM_DEVICE_STATE_CHANGED\":case 350:t.pushAtomId[r]=350;break;case\"ATOM_INPUTDEVICE_REGISTERED\":case 351:t.pushAtomId[r]=351;break;case\"ATOM_SMARTSPACE_CARD_REPORTED\":case 352:t.pushAtomId[r]=352;break;case\"ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED\":case 353:t.pushAtomId[r]=353;break;case\"ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED\":case 354:t.pushAtomId[r]=354;break;case\"ATOM_AUTH_ENROLL_ACTION_INVOKED\":case 355:t.pushAtomId[r]=355;break;case\"ATOM_AUTH_DEPRECATED_API_USED\":case 356:t.pushAtomId[r]=356;break;case\"ATOM_UNATTENDED_REBOOT_OCCURRED\":case 357:t.pushAtomId[r]=357;break;case\"ATOM_LONG_REBOOT_BLOCKING_REPORTED\":case 358:t.pushAtomId[r]=358;break;case\"ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED\":case 359:t.pushAtomId[r]=359;break;case\"ATOM_FDTRACK_EVENT_OCCURRED\":case 364:t.pushAtomId[r]=364;break;case\"ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED\":case 365:t.pushAtomId[r]=365;break;case\"ATOM_ALARM_BATCH_DELIVERED\":case 367:t.pushAtomId[r]=367;break;case\"ATOM_ALARM_SCHEDULED\":case 368:t.pushAtomId[r]=368;break;case\"ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED\":case 369:t.pushAtomId[r]=369;break;case\"ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED\":case 370:t.pushAtomId[r]=370;break;case\"ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED\":case 371:t.pushAtomId[r]=371;break;case\"ATOM_APP_SEARCH_QUERY_STATS_REPORTED\":case 372:t.pushAtomId[r]=372;break;case\"ATOM_APP_PROCESS_DIED\":case 373:t.pushAtomId[r]=373;break;case\"ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED\":case 374:t.pushAtomId[r]=374;break;case\"ATOM_SLOW_INPUT_EVENT_REPORTED\":case 375:t.pushAtomId[r]=375;break;case\"ATOM_ANR_OCCURRED_PROCESSING_STARTED\":case 376:t.pushAtomId[r]=376;break;case\"ATOM_APP_SEARCH_REMOVE_STATS_REPORTED\":case 377:t.pushAtomId[r]=377;break;case\"ATOM_MEDIA_CODEC_REPORTED\":case 378:t.pushAtomId[r]=378;break;case\"ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION\":case 379:t.pushAtomId[r]=379;break;case\"ATOM_PERMISSION_DETAILS_INTERACTION\":case 380:t.pushAtomId[r]=380;break;case\"ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION\":case 381:t.pushAtomId[r]=381;break;case\"ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION\":case 382:t.pushAtomId[r]=382;break;case\"ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED\":case 383:t.pushAtomId[r]=383;break;case\"ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT\":case 384:t.pushAtomId[r]=384;break;case\"ATOM_APP_COMPAT_STATE_CHANGED\":case 386:t.pushAtomId[r]=386;break;case\"ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED\":case 387:t.pushAtomId[r]=387;break;case\"ATOM_SPLITSCREEN_UI_CHANGED\":case 388:t.pushAtomId[r]=388;break;case\"ATOM_NETWORK_DNS_HANDSHAKE_REPORTED\":case 389:t.pushAtomId[r]=389;break;case\"ATOM_BLUETOOTH_CODE_PATH_COUNTER\":case 390:t.pushAtomId[r]=390;break;case\"ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY\":case 392:t.pushAtomId[r]=392;break;case\"ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED\":case 393:t.pushAtomId[r]=393;break;case\"ATOM_NEURALNETWORKS_COMPILATION_COMPLETED\":case 394:t.pushAtomId[r]=394;break;case\"ATOM_NEURALNETWORKS_EXECUTION_COMPLETED\":case 395:t.pushAtomId[r]=395;break;case\"ATOM_NEURALNETWORKS_COMPILATION_FAILED\":case 396:t.pushAtomId[r]=396;break;case\"ATOM_NEURALNETWORKS_EXECUTION_FAILED\":case 397:t.pushAtomId[r]=397;break;case\"ATOM_CONTEXT_HUB_BOOTED\":case 398:t.pushAtomId[r]=398;break;case\"ATOM_CONTEXT_HUB_RESTARTED\":case 399:t.pushAtomId[r]=399;break;case\"ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED\":case 400:t.pushAtomId[r]=400;break;case\"ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED\":case 401:t.pushAtomId[r]=401;break;case\"ATOM_UWB_SESSION_INITED\":case 402:t.pushAtomId[r]=402;break;case\"ATOM_UWB_SESSION_CLOSED\":case 403:t.pushAtomId[r]=403;break;case\"ATOM_UWB_FIRST_RANGING_RECEIVED\":case 404:t.pushAtomId[r]=404;break;case\"ATOM_UWB_RANGING_MEASUREMENT_RECEIVED\":case 405:t.pushAtomId[r]=405;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED\":case 406:t.pushAtomId[r]=406;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED\":case 407:t.pushAtomId[r]=407;break;case\"ATOM_CLIPBOARD_CLEARED\":case 408:t.pushAtomId[r]=408;break;case\"ATOM_VM_CREATION_REQUESTED\":case 409:t.pushAtomId[r]=409;break;case\"ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED\":case 410:t.pushAtomId[r]=410;break;case\"ATOM_APPLICATION_LOCALES_CHANGED\":case 412:t.pushAtomId[r]=412;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED\":case 413:t.pushAtomId[r]=413;break;case\"ATOM_FOLD_STATE_DURATION_REPORTED\":case 414:t.pushAtomId[r]=414;break;case\"ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED\":case 415:t.pushAtomId[r]=415;break;case\"ATOM_DISPLAY_HBM_STATE_CHANGED\":case 416:t.pushAtomId[r]=416;break;case\"ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED\":case 417:t.pushAtomId[r]=417;break;case\"ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED\":case 418:t.pushAtomId[r]=418;break;case\"ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED\":case 419:t.pushAtomId[r]=419;break;case\"ATOM_VBMETA_DIGEST_REPORTED\":case 420:t.pushAtomId[r]=420;break;case\"ATOM_APEX_INFO_GATHERED\":case 421:t.pushAtomId[r]=421;break;case\"ATOM_PVM_INFO_GATHERED\":case 422:t.pushAtomId[r]=422;break;case\"ATOM_WEAR_SETTINGS_UI_INTERACTED\":case 423:t.pushAtomId[r]=423;break;case\"ATOM_TRACING_SERVICE_REPORT_EVENT\":case 424:t.pushAtomId[r]=424;break;case\"ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED\":case 425:t.pushAtomId[r]=425;break;case\"ATOM_LAUNCHER_LATENCY\":case 426:t.pushAtomId[r]=426;break;case\"ATOM_DROPBOX_ENTRY_DROPPED\":case 427:t.pushAtomId[r]=427;break;case\"ATOM_WIFI_P2P_CONNECTION_REPORTED\":case 428:t.pushAtomId[r]=428;break;case\"ATOM_GAME_STATE_CHANGED\":case 429:t.pushAtomId[r]=429;break;case\"ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED\":case 430:t.pushAtomId[r]=430;break;case\"ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED\":case 431:t.pushAtomId[r]=431;break;case\"ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED\":case 432:t.pushAtomId[r]=432;break;case\"ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED\":case 433:t.pushAtomId[r]=433;break;case\"ATOM_HOTWORD_DETECTOR_EVENTS\":case 434:t.pushAtomId[r]=434;break;case\"ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED\":case 437:t.pushAtomId[r]=437;break;case\"ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED\":case 440:t.pushAtomId[r]=440;break;case\"ATOM_APP_BACKGROUND_RESTRICTIONS_INFO\":case 441:t.pushAtomId[r]=441;break;case\"ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED\":case 442:t.pushAtomId[r]=442;break;case\"ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED\":case 443:t.pushAtomId[r]=443;break;case\"ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED\":case 444:t.pushAtomId[r]=444;break;case\"ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED\":case 445:t.pushAtomId[r]=445;break;case\"ATOM_GNSS_PSDS_DOWNLOAD_REPORTED\":case 446:t.pushAtomId[r]=446;break;case\"ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED\":case 447:t.pushAtomId[r]=447;break;case\"ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED\":case 448:t.pushAtomId[r]=448;break;case\"ATOM_DREAM_UI_EVENT_REPORTED\":case 449:t.pushAtomId[r]=449;break;case\"ATOM_TASK_MANAGER_EVENT_REPORTED\":case 450:t.pushAtomId[r]=450;break;case\"ATOM_CDM_ASSOCIATION_ACTION\":case 451:t.pushAtomId[r]=451;break;case\"ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED\":case 452:t.pushAtomId[r]=452;break;case\"ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED\":case 453:t.pushAtomId[r]=453;break;case\"ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED\":case 454:t.pushAtomId[r]=454;break;case\"ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED\":case 455:t.pushAtomId[r]=455;break;case\"ATOM_UWB_DEVICE_ERROR_REPORTED\":case 456:t.pushAtomId[r]=456;break;case\"ATOM_ISOLATED_COMPILATION_SCHEDULED\":case 457:t.pushAtomId[r]=457;break;case\"ATOM_ISOLATED_COMPILATION_ENDED\":case 458:t.pushAtomId[r]=458;break;case\"ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE\":case 459:t.pushAtomId[r]=459;break;case\"ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED\":case 460:t.pushAtomId[r]=460;break;case\"ATOM_TELEPHONY_ANOMALY_DETECTED\":case 461:t.pushAtomId[r]=461;break;case\"ATOM_LETTERBOX_POSITION_CHANGED\":case 462:t.pushAtomId[r]=462;break;case\"ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT\":case 463:t.pushAtomId[r]=463;break;case\"ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO\":case 464:t.pushAtomId[r]=464;break;case\"ATOM_REMOTE_KEY_PROVISIONING_TIMING\":case 465:t.pushAtomId[r]=465;break;case\"ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT\":case 466:t.pushAtomId[r]=466;break;case\"ATOM_SYNC_EXEMPTION_OCCURRED\":case 468:t.pushAtomId[r]=468;break;case\"ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED\":case 469:t.pushAtomId[r]=469;break;case\"ATOM_DOCK_STATE_CHANGED\":case 470:t.pushAtomId[r]=470;break;case\"ATOM_SAFETY_SOURCE_STATE_COLLECTED\":case 471:t.pushAtomId[r]=471;break;case\"ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED\":case 472:t.pushAtomId[r]=472;break;case\"ATOM_SAFETY_CENTER_INTERACTION_REPORTED\":case 473:t.pushAtomId[r]=473;break;case\"ATOM_SETTINGS_PROVIDER_SETTING_CHANGED\":case 474:t.pushAtomId[r]=474;break;case\"ATOM_BROADCAST_DELIVERY_EVENT_REPORTED\":case 475:t.pushAtomId[r]=475;break;case\"ATOM_SERVICE_REQUEST_EVENT_REPORTED\":case 476:t.pushAtomId[r]=476;break;case\"ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED\":case 477:t.pushAtomId[r]=477;break;case\"ATOM_BLUETOOTH_DEVICE_NAME_REPORTED\":case 478:t.pushAtomId[r]=478;break;case\"ATOM_CB_CONFIG_UPDATED\":case 479:t.pushAtomId[r]=479;break;case\"ATOM_CB_MODULE_ERROR_REPORTED\":case 480:t.pushAtomId[r]=480;break;case\"ATOM_CB_SERVICE_FEATURE_CHANGED\":case 481:t.pushAtomId[r]=481;break;case\"ATOM_CB_RECEIVER_FEATURE_CHANGED\":case 482:t.pushAtomId[r]=482;break;case\"ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION\":case 484:t.pushAtomId[r]=484;break;case\"ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION\":case 485:t.pushAtomId[r]=485;break;case\"ATOM_PRIVACY_SIGNALS_JOB_FAILURE\":case 486:t.pushAtomId[r]=486;break;case\"ATOM_VIBRATION_REPORTED\":case 487:t.pushAtomId[r]=487;break;case\"ATOM_UWB_RANGING_START\":case 489:t.pushAtomId[r]=489;break;case\"ATOM_APP_COMPACTED_V2\":case 491:t.pushAtomId[r]=491;break;case\"ATOM_DISPLAY_BRIGHTNESS_CHANGED\":case 494:t.pushAtomId[r]=494;break;case\"ATOM_ACTIVITY_ACTION_BLOCKED\":case 495:t.pushAtomId[r]=495;break;case\"ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED\":case 504:t.pushAtomId[r]=504;break;case\"ATOM_VM_BOOTED\":case 505:t.pushAtomId[r]=505;break;case\"ATOM_VM_EXITED\":case 506:t.pushAtomId[r]=506;break;case\"ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED\":case 507:t.pushAtomId[r]=507;break;case\"ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED\":case 508:t.pushAtomId[r]=508;break;case\"ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED\":case 509:t.pushAtomId[r]=509;break;case\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED\":case 510:t.pushAtomId[r]=510;break;case\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED\":case 511:t.pushAtomId[r]=511;break;case\"ATOM_HEARING_AID_INFO_REPORTED\":case 513:t.pushAtomId[r]=513;break;case\"ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED\":case 514:t.pushAtomId[r]=514;break;case\"ATOM_AMBIENT_MODE_CHANGED\":case 515:t.pushAtomId[r]=515;break;case\"ATOM_ANR_LATENCY_REPORTED\":case 516:t.pushAtomId[r]=516;break;case\"ATOM_RESOURCE_API_INFO\":case 517:t.pushAtomId[r]=517;break;case\"ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED\":case 518:t.pushAtomId[r]=518;break;case\"ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED\":case 519:t.pushAtomId[r]=519;break;case\"ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED\":case 520:t.pushAtomId[r]=520;break;case\"ATOM_AIRPLANE_MODE_SESSION_REPORTED\":case 521:t.pushAtomId[r]=521;break;case\"ATOM_VM_CPU_STATUS_REPORTED\":case 522:t.pushAtomId[r]=522;break;case\"ATOM_VM_MEM_STATUS_REPORTED\":case 523:t.pushAtomId[r]=523;break;case\"ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED\":case 524:t.pushAtomId[r]=524;break;case\"ATOM_DEFAULT_NETWORK_REMATCH_INFO\":case 525:t.pushAtomId[r]=525;break;case\"ATOM_NETWORK_SELECTION_PERFORMANCE\":case 526:t.pushAtomId[r]=526;break;case\"ATOM_NETWORK_NSD_REPORTED\":case 527:t.pushAtomId[r]=527;break;case\"ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED\":case 529:t.pushAtomId[r]=529;break;case\"ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED\":case 530:t.pushAtomId[r]=530;break;case\"ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED\":case 531:t.pushAtomId[r]=531;break;case\"ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED\":case 532:t.pushAtomId[r]=532;break;case\"ATOM_BLUETOOTH_GATT_APP_INFO\":case 533:t.pushAtomId[r]=533;break;case\"ATOM_BRIGHTNESS_CONFIGURATION_UPDATED\":case 534:t.pushAtomId[r]=534;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED\":case 538:t.pushAtomId[r]=538;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED\":case 539:t.pushAtomId[r]=539;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED\":case 540:t.pushAtomId[r]=540;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED\":case 541:t.pushAtomId[r]=541;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY\":case 542:t.pushAtomId[r]=542;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY\":case 543:t.pushAtomId[r]=543;break;case\"ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED\":case 544:t.pushAtomId[r]=544;break;case\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED\":case 545:t.pushAtomId[r]=545;break;case\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED\":case 546:t.pushAtomId[r]=546;break;case\"ATOM_LAUNCHER_IMPRESSION_EVENT\":case 547:t.pushAtomId[r]=547;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY\":case 549:t.pushAtomId[r]=549;break;case\"ATOM_WS_WATCH_FACE_EDITED\":case 551:t.pushAtomId[r]=551;break;case\"ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED\":case 552:t.pushAtomId[r]=552;break;case\"ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED\":case 553:t.pushAtomId[r]=553;break;case\"ATOM_PACKAGE_UNINSTALLATION_REPORTED\":case 554:t.pushAtomId[r]=554;break;case\"ATOM_GAME_MODE_CHANGED\":case 555:t.pushAtomId[r]=555;break;case\"ATOM_GAME_MODE_CONFIGURATION_CHANGED\":case 556:t.pushAtomId[r]=556;break;case\"ATOM_BEDTIME_MODE_STATE_CHANGED\":case 557:t.pushAtomId[r]=557;break;case\"ATOM_NETWORK_SLICE_SESSION_ENDED\":case 558:t.pushAtomId[r]=558;break;case\"ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED\":case 559:t.pushAtomId[r]=559;break;case\"ATOM_NFC_TAG_TYPE_OCCURRED\":case 560:t.pushAtomId[r]=560;break;case\"ATOM_NFC_AID_CONFLICT_OCCURRED\":case 561:t.pushAtomId[r]=561;break;case\"ATOM_NFC_READER_CONFLICT_OCCURRED\":case 562:t.pushAtomId[r]=562;break;case\"ATOM_WS_TILE_LIST_CHANGED\":case 563:t.pushAtomId[r]=563;break;case\"ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION\":case 564:t.pushAtomId[r]=564;break;case\"ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED\":case 566:t.pushAtomId[r]=566;break;case\"ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED\":case 567:t.pushAtomId[r]=567;break;case\"ATOM_MEDIA_DRM_CREATED\":case 568:t.pushAtomId[r]=568;break;case\"ATOM_MEDIA_DRM_ERRORED\":case 569:t.pushAtomId[r]=569;break;case\"ATOM_MEDIA_DRM_SESSION_OPENED\":case 570:t.pushAtomId[r]=570;break;case\"ATOM_MEDIA_DRM_SESSION_CLOSED\":case 571:t.pushAtomId[r]=571;break;case\"ATOM_USER_SELECTED_RESOLUTION\":case 572:t.pushAtomId[r]=572;break;case\"ATOM_UNSAFE_INTENT_EVENT_REPORTED\":case 573:t.pushAtomId[r]=573;break;case\"ATOM_PERFORMANCE_HINT_SESSION_REPORTED\":case 574:t.pushAtomId[r]=574;break;case\"ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED\":case 576:t.pushAtomId[r]=576;break;case\"ATOM_BIOMETRIC_TOUCH_REPORTED\":case 577:t.pushAtomId[r]=577;break;case\"ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED\":case 578:t.pushAtomId[r]=578;break;case\"ATOM_LOCATION_ENABLED_STATE_CHANGED\":case 580:t.pushAtomId[r]=580;break;case\"ATOM_IME_REQUEST_FINISHED\":case 581:t.pushAtomId[r]=581;break;case\"ATOM_USB_COMPLIANCE_WARNINGS_REPORTED\":case 582:t.pushAtomId[r]=582;break;case\"ATOM_APP_SUPPORTED_LOCALES_CHANGED\":case 583:t.pushAtomId[r]=583;break;case\"ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED\":case 586:t.pushAtomId[r]=586;break;case\"ATOM_BIOMETRIC_PROPERTIES_COLLECTED\":case 587:t.pushAtomId[r]=587;break;case\"ATOM_KERNEL_WAKEUP_ATTRIBUTED\":case 588:t.pushAtomId[r]=588;break;case\"ATOM_SCREEN_STATE_CHANGED_V2\":case 589:t.pushAtomId[r]=589;break;case\"ATOM_WS_BACKUP_ACTION_REPORTED\":case 590:t.pushAtomId[r]=590;break;case\"ATOM_WS_RESTORE_ACTION_REPORTED\":case 591:t.pushAtomId[r]=591;break;case\"ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED\":case 592:t.pushAtomId[r]=592;break;case\"ATOM_MEDIA_SESSION_UPDATED\":case 594:t.pushAtomId[r]=594;break;case\"ATOM_WEAR_OOBE_STATE_CHANGED\":case 595:t.pushAtomId[r]=595;break;case\"ATOM_WS_NOTIFICATION_UPDATED\":case 596:t.pushAtomId[r]=596;break;case\"ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED\":case 601:t.pushAtomId[r]=601;break;case\"ATOM_WS_COMPLICATION_TAPPED\":case 602:t.pushAtomId[r]=602;break;case\"ATOM_WS_NOTIFICATION_BLOCKING\":case 780:t.pushAtomId[r]=780;break;case\"ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED\":case 822:t.pushAtomId[r]=822;break;case\"ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED\":case 823:t.pushAtomId[r]=823;break;case\"ATOM_WS_NOTIFICATION_ACTIONED\":case 824:t.pushAtomId[r]=824;break;case\"ATOM_WS_NOTIFICATION_LATENCY\":case 880:t.pushAtomId[r]=880;break;case\"ATOM_WIFI_BYTES_TRANSFER\":case 1e4:t.pushAtomId[r]=1e4;break;case\"ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG\":case 10001:t.pushAtomId[r]=10001;break;case\"ATOM_MOBILE_BYTES_TRANSFER\":case 10002:t.pushAtomId[r]=10002;break;case\"ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG\":case 10003:t.pushAtomId[r]=10003;break;case\"ATOM_BLUETOOTH_BYTES_TRANSFER\":case 10006:t.pushAtomId[r]=10006;break;case\"ATOM_KERNEL_WAKELOCK\":case 10004:t.pushAtomId[r]=10004;break;case\"ATOM_SUBSYSTEM_SLEEP_STATE\":case 10005:t.pushAtomId[r]=10005;break;case\"ATOM_CPU_TIME_PER_UID\":case 10009:t.pushAtomId[r]=10009;break;case\"ATOM_CPU_TIME_PER_UID_FREQ\":case 10010:t.pushAtomId[r]=10010;break;case\"ATOM_WIFI_ACTIVITY_INFO\":case 10011:t.pushAtomId[r]=10011;break;case\"ATOM_MODEM_ACTIVITY_INFO\":case 10012:t.pushAtomId[r]=10012;break;case\"ATOM_BLUETOOTH_ACTIVITY_INFO\":case 10007:t.pushAtomId[r]=10007;break;case\"ATOM_PROCESS_MEMORY_STATE\":case 10013:t.pushAtomId[r]=10013;break;case\"ATOM_SYSTEM_ELAPSED_REALTIME\":case 10014:t.pushAtomId[r]=10014;break;case\"ATOM_SYSTEM_UPTIME\":case 10015:t.pushAtomId[r]=10015;break;case\"ATOM_CPU_ACTIVE_TIME\":case 10016:t.pushAtomId[r]=10016;break;case\"ATOM_CPU_CLUSTER_TIME\":case 10017:t.pushAtomId[r]=10017;break;case\"ATOM_DISK_SPACE\":case 10018:t.pushAtomId[r]=10018;break;case\"ATOM_REMAINING_BATTERY_CAPACITY\":case 10019:t.pushAtomId[r]=10019;break;case\"ATOM_FULL_BATTERY_CAPACITY\":case 10020:t.pushAtomId[r]=10020;break;case\"ATOM_TEMPERATURE\":case 10021:t.pushAtomId[r]=10021;break;case\"ATOM_BINDER_CALLS\":case 10022:t.pushAtomId[r]=10022;break;case\"ATOM_BINDER_CALLS_EXCEPTIONS\":case 10023:t.pushAtomId[r]=10023;break;case\"ATOM_LOOPER_STATS\":case 10024:t.pushAtomId[r]=10024;break;case\"ATOM_DISK_STATS\":case 10025:t.pushAtomId[r]=10025;break;case\"ATOM_DIRECTORY_USAGE\":case 10026:t.pushAtomId[r]=10026;break;case\"ATOM_APP_SIZE\":case 10027:t.pushAtomId[r]=10027;break;case\"ATOM_CATEGORY_SIZE\":case 10028:t.pushAtomId[r]=10028;break;case\"ATOM_PROC_STATS\":case 10029:t.pushAtomId[r]=10029;break;case\"ATOM_BATTERY_VOLTAGE\":case 10030:t.pushAtomId[r]=10030;break;case\"ATOM_NUM_FINGERPRINTS_ENROLLED\":case 10031:t.pushAtomId[r]=10031;break;case\"ATOM_DISK_IO\":case 10032:t.pushAtomId[r]=10032;break;case\"ATOM_POWER_PROFILE\":case 10033:t.pushAtomId[r]=10033;break;case\"ATOM_PROC_STATS_PKG_PROC\":case 10034:t.pushAtomId[r]=10034;break;case\"ATOM_PROCESS_CPU_TIME\":case 10035:t.pushAtomId[r]=10035;break;case\"ATOM_CPU_TIME_PER_THREAD_FREQ\":case 10037:t.pushAtomId[r]=10037;break;case\"ATOM_ON_DEVICE_POWER_MEASUREMENT\":case 10038:t.pushAtomId[r]=10038;break;case\"ATOM_DEVICE_CALCULATED_POWER_USE\":case 10039:t.pushAtomId[r]=10039;break;case\"ATOM_PROCESS_MEMORY_HIGH_WATER_MARK\":case 10042:t.pushAtomId[r]=10042;break;case\"ATOM_BATTERY_LEVEL\":case 10043:t.pushAtomId[r]=10043;break;case\"ATOM_BUILD_INFORMATION\":case 10044:t.pushAtomId[r]=10044;break;case\"ATOM_BATTERY_CYCLE_COUNT\":case 10045:t.pushAtomId[r]=10045;break;case\"ATOM_DEBUG_ELAPSED_CLOCK\":case 10046:t.pushAtomId[r]=10046;break;case\"ATOM_DEBUG_FAILING_ELAPSED_CLOCK\":case 10047:t.pushAtomId[r]=10047;break;case\"ATOM_NUM_FACES_ENROLLED\":case 10048:t.pushAtomId[r]=10048;break;case\"ATOM_ROLE_HOLDER\":case 10049:t.pushAtomId[r]=10049;break;case\"ATOM_DANGEROUS_PERMISSION_STATE\":case 10050:t.pushAtomId[r]=10050;break;case\"ATOM_TRAIN_INFO\":case 10051:t.pushAtomId[r]=10051;break;case\"ATOM_TIME_ZONE_DATA_INFO\":case 10052:t.pushAtomId[r]=10052;break;case\"ATOM_EXTERNAL_STORAGE_INFO\":case 10053:t.pushAtomId[r]=10053;break;case\"ATOM_GPU_STATS_GLOBAL_INFO\":case 10054:t.pushAtomId[r]=10054;break;case\"ATOM_GPU_STATS_APP_INFO\":case 10055:t.pushAtomId[r]=10055;break;case\"ATOM_SYSTEM_ION_HEAP_SIZE\":case 10056:t.pushAtomId[r]=10056;break;case\"ATOM_APPS_ON_EXTERNAL_STORAGE_INFO\":case 10057:t.pushAtomId[r]=10057;break;case\"ATOM_FACE_SETTINGS\":case 10058:t.pushAtomId[r]=10058;break;case\"ATOM_COOLING_DEVICE\":case 10059:t.pushAtomId[r]=10059;break;case\"ATOM_APP_OPS\":case 10060:t.pushAtomId[r]=10060;break;case\"ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE\":case 10061:t.pushAtomId[r]=10061;break;case\"ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO\":case 10062:t.pushAtomId[r]=10062;break;case\"ATOM_SURFACEFLINGER_STATS_LAYER_INFO\":case 10063:t.pushAtomId[r]=10063;break;case\"ATOM_PROCESS_MEMORY_SNAPSHOT\":case 10064:t.pushAtomId[r]=10064;break;case\"ATOM_VMS_CLIENT_STATS\":case 10065:t.pushAtomId[r]=10065;break;case\"ATOM_NOTIFICATION_REMOTE_VIEWS\":case 10066:t.pushAtomId[r]=10066;break;case\"ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED\":case 10067:t.pushAtomId[r]=10067;break;case\"ATOM_GRAPHICS_STATS\":case 10068:t.pushAtomId[r]=10068;break;case\"ATOM_RUNTIME_APP_OP_ACCESS\":case 10069:t.pushAtomId[r]=10069;break;case\"ATOM_ION_HEAP_SIZE\":case 10070:t.pushAtomId[r]=10070;break;case\"ATOM_PACKAGE_NOTIFICATION_PREFERENCES\":case 10071:t.pushAtomId[r]=10071;break;case\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES\":case 10072:t.pushAtomId[r]=10072;break;case\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES\":case 10073:t.pushAtomId[r]=10073;break;case\"ATOM_GNSS_STATS\":case 10074:t.pushAtomId[r]=10074;break;case\"ATOM_ATTRIBUTED_APP_OPS\":case 10075:t.pushAtomId[r]=10075;break;case\"ATOM_VOICE_CALL_SESSION\":case 10076:t.pushAtomId[r]=10076;break;case\"ATOM_VOICE_CALL_RAT_USAGE\":case 10077:t.pushAtomId[r]=10077;break;case\"ATOM_SIM_SLOT_STATE\":case 10078:t.pushAtomId[r]=10078;break;case\"ATOM_SUPPORTED_RADIO_ACCESS_FAMILY\":case 10079:t.pushAtomId[r]=10079;break;case\"ATOM_SETTING_SNAPSHOT\":case 10080:t.pushAtomId[r]=10080;break;case\"ATOM_BLOB_INFO\":case 10081:t.pushAtomId[r]=10081;break;case\"ATOM_DATA_USAGE_BYTES_TRANSFER\":case 10082:t.pushAtomId[r]=10082;break;case\"ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED\":case 10083:t.pushAtomId[r]=10083;break;case\"ATOM_DND_MODE_RULE\":case 10084:t.pushAtomId[r]=10084;break;case\"ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS\":case 10085:t.pushAtomId[r]=10085;break;case\"ATOM_INCOMING_SMS\":case 10086:t.pushAtomId[r]=10086;break;case\"ATOM_OUTGOING_SMS\":case 10087:t.pushAtomId[r]=10087;break;case\"ATOM_CARRIER_ID_TABLE_VERSION\":case 10088:t.pushAtomId[r]=10088;break;case\"ATOM_DATA_CALL_SESSION\":case 10089:t.pushAtomId[r]=10089;break;case\"ATOM_CELLULAR_SERVICE_STATE\":case 10090:t.pushAtomId[r]=10090;break;case\"ATOM_CELLULAR_DATA_SERVICE_SWITCH\":case 10091:t.pushAtomId[r]=10091;break;case\"ATOM_SYSTEM_MEMORY\":case 10092:t.pushAtomId[r]=10092;break;case\"ATOM_IMS_REGISTRATION_TERMINATION\":case 10093:t.pushAtomId[r]=10093;break;case\"ATOM_IMS_REGISTRATION_STATS\":case 10094:t.pushAtomId[r]=10094;break;case\"ATOM_CPU_TIME_PER_CLUSTER_FREQ\":case 10095:t.pushAtomId[r]=10095;break;case\"ATOM_CPU_CYCLES_PER_UID_CLUSTER\":case 10096:t.pushAtomId[r]=10096;break;case\"ATOM_DEVICE_ROTATED_DATA\":case 10097:t.pushAtomId[r]=10097;break;case\"ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER\":case 10098:t.pushAtomId[r]=10098;break;case\"ATOM_MEDIA_DRM_ACTIVITY_INFO\":case 10099:t.pushAtomId[r]=10099;break;case\"ATOM_OEM_MANAGED_BYTES_TRANSFER\":case 10100:t.pushAtomId[r]=10100;break;case\"ATOM_GNSS_POWER_STATS\":case 10101:t.pushAtomId[r]=10101;break;case\"ATOM_TIME_ZONE_DETECTOR_STATE\":case 10102:t.pushAtomId[r]=10102;break;case\"ATOM_KEYSTORE2_STORAGE_STATS\":case 10103:t.pushAtomId[r]=10103;break;case\"ATOM_RKP_POOL_STATS\":case 10104:t.pushAtomId[r]=10104;break;case\"ATOM_PROCESS_DMABUF_MEMORY\":case 10105:t.pushAtomId[r]=10105;break;case\"ATOM_PENDING_ALARM_INFO\":case 10106:t.pushAtomId[r]=10106;break;case\"ATOM_USER_LEVEL_HIBERNATED_APPS\":case 10107:t.pushAtomId[r]=10107;break;case\"ATOM_LAUNCHER_LAYOUT_SNAPSHOT\":case 10108:t.pushAtomId[r]=10108;break;case\"ATOM_GLOBAL_HIBERNATED_APPS\":case 10109:t.pushAtomId[r]=10109;break;case\"ATOM_INPUT_EVENT_LATENCY_SKETCH\":case 10110:t.pushAtomId[r]=10110;break;case\"ATOM_BATTERY_USAGE_STATS_BEFORE_RESET\":case 10111:t.pushAtomId[r]=10111;break;case\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET\":case 10112:t.pushAtomId[r]=10112;break;case\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL\":case 10113:t.pushAtomId[r]=10113;break;case\"ATOM_INSTALLED_INCREMENTAL_PACKAGE\":case 10114:t.pushAtomId[r]=10114;break;case\"ATOM_TELEPHONY_NETWORK_REQUESTS\":case 10115:t.pushAtomId[r]=10115;break;case\"ATOM_APP_SEARCH_STORAGE_INFO\":case 10116:t.pushAtomId[r]=10116;break;case\"ATOM_VMSTAT\":case 10117:t.pushAtomId[r]=10117;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO\":case 10118:t.pushAtomId[r]=10118;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO\":case 10119:t.pushAtomId[r]=10119;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO\":case 10120:t.pushAtomId[r]=10120;break;case\"ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW\":case 10121:t.pushAtomId[r]=10121;break;case\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO\":case 10122:t.pushAtomId[r]=10122;break;case\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO\":case 10123:t.pushAtomId[r]=10123;break;case\"ATOM_RKP_ERROR_STATS\":case 10124:t.pushAtomId[r]=10124;break;case\"ATOM_KEYSTORE2_CRASH_STATS\":case 10125:t.pushAtomId[r]=10125;break;case\"ATOM_VENDOR_APEX_INFO\":case 10126:t.pushAtomId[r]=10126;break;case\"ATOM_ACCESSIBILITY_SHORTCUT_STATS\":case 10127:t.pushAtomId[r]=10127;break;case\"ATOM_ACCESSIBILITY_FLOATING_MENU_STATS\":case 10128:t.pushAtomId[r]=10128;break;case\"ATOM_DATA_USAGE_BYTES_TRANSFER_V2\":case 10129:t.pushAtomId[r]=10129;break;case\"ATOM_MEDIA_CAPABILITIES\":case 10130:t.pushAtomId[r]=10130;break;case\"ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY\":case 10131:t.pushAtomId[r]=10131;break;case\"ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY\":case 10132:t.pushAtomId[r]=10132;break;case\"ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS\":case 10133:t.pushAtomId[r]=10133;break;case\"ATOM_RCS_CLIENT_PROVISIONING_STATS\":case 10134:t.pushAtomId[r]=10134;break;case\"ATOM_RCS_ACS_PROVISIONING_STATS\":case 10135:t.pushAtomId[r]=10135;break;case\"ATOM_SIP_DELEGATE_STATS\":case 10136:t.pushAtomId[r]=10136;break;case\"ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS\":case 10137:t.pushAtomId[r]=10137;break;case\"ATOM_SIP_MESSAGE_RESPONSE\":case 10138:t.pushAtomId[r]=10138;break;case\"ATOM_SIP_TRANSPORT_SESSION\":case 10139:t.pushAtomId[r]=10139;break;case\"ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT\":case 10140:t.pushAtomId[r]=10140;break;case\"ATOM_IMS_DEDICATED_BEARER_EVENT\":case 10141:t.pushAtomId[r]=10141;break;case\"ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS\":case 10142:t.pushAtomId[r]=10142;break;case\"ATOM_UCE_EVENT_STATS\":case 10143:t.pushAtomId[r]=10143;break;case\"ATOM_PRESENCE_NOTIFY_EVENT\":case 10144:t.pushAtomId[r]=10144;break;case\"ATOM_GBA_EVENT\":case 10145:t.pushAtomId[r]=10145;break;case\"ATOM_PER_SIM_STATUS\":case 10146:t.pushAtomId[r]=10146;break;case\"ATOM_GPU_WORK_PER_UID\":case 10147:t.pushAtomId[r]=10147;break;case\"ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE\":case 10148:t.pushAtomId[r]=10148;break;case\"ATOM_SIGNED_PARTITION_INFO\":case 10149:t.pushAtomId[r]=10149;break;case\"ATOM_PINNED_FILE_SIZES_PER_PACKAGE\":case 10150:t.pushAtomId[r]=10150;break;case\"ATOM_PENDING_INTENTS_PER_PACKAGE\":case 10151:t.pushAtomId[r]=10151;break;case\"ATOM_USER_INFO\":case 10152:t.pushAtomId[r]=10152;break;case\"ATOM_TELEPHONY_NETWORK_REQUESTS_V2\":case 10153:t.pushAtomId[r]=10153;break;case\"ATOM_DEVICE_TELEPHONY_PROPERTIES\":case 10154:t.pushAtomId[r]=10154;break;case\"ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS\":case 10155:t.pushAtomId[r]=10155;break;case\"ATOM_SAFETY_STATE\":case 10156:t.pushAtomId[r]=10156;break;case\"ATOM_INCOMING_MMS\":case 10157:t.pushAtomId[r]=10157;break;case\"ATOM_OUTGOING_MMS\":case 10158:t.pushAtomId[r]=10158;break;case\"ATOM_MULTI_USER_INFO\":case 10160:t.pushAtomId[r]=10160;break;case\"ATOM_NETWORK_BPF_MAP_INFO\":case 10161:t.pushAtomId[r]=10161;break;case\"ATOM_OUTGOING_SHORT_CODE_SMS\":case 10162:t.pushAtomId[r]=10162;break;case\"ATOM_CONNECTIVITY_STATE_SAMPLE\":case 10163:t.pushAtomId[r]=10163;break;case\"ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO\":case 10164:t.pushAtomId[r]=10164;break;case\"ATOM_GAME_MODE_INFO\":case 10165:t.pushAtomId[r]=10165;break;case\"ATOM_GAME_MODE_CONFIGURATION\":case 10166:t.pushAtomId[r]=10166;break;case\"ATOM_GAME_MODE_LISTENER\":case 10167:t.pushAtomId[r]=10167;break;case\"ATOM_NETWORK_SLICE_REQUEST_COUNT\":case 10168:t.pushAtomId[r]=10168;break;case\"ATOM_WS_TILE_SNAPSHOT\":case 10169:t.pushAtomId[r]=10169;break;case\"ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT\":case 10170:t.pushAtomId[r]=10170;break;case\"ATOM_PROCESS_STATE\":case 10171:t.pushAtomId[r]=10171;break;case\"ATOM_PROCESS_ASSOCIATION\":case 10172:t.pushAtomId[r]=10172;break;case\"ATOM_ADPF_SYSTEM_COMPONENT_INFO\":case 10173:t.pushAtomId[r]=10173;break;case\"ATOM_NOTIFICATION_MEMORY_USE\":case 10174:t.pushAtomId[r]=10174;break;case\"ATOM_HDR_CAPABILITIES\":case 10175:t.pushAtomId[r]=10175;break;case\"ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT\":case 10176:t.pushAtomId[r]=10176;break;case\"ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED\":case 910:t.pushAtomId[r]=910;break;case\"ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED\":case 820:t.pushAtomId[r]=820;break;case\"ATOM_THERMAL_STATUS_CALLED\":case 772:t.pushAtomId[r]=772;break;case\"ATOM_THERMAL_HEADROOM_CALLED\":case 773:t.pushAtomId[r]=773;break;case\"ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED\":case 774:t.pushAtomId[r]=774;break;case\"ATOM_ADPF_HINT_SESSION_TID_CLEANUP\":case 839:t.pushAtomId[r]=839;break;case\"ATOM_THERMAL_HEADROOM_THRESHOLDS\":case 10201:t.pushAtomId[r]=10201;break;case\"ATOM_ADPF_SESSION_SNAPSHOT\":case 10218:t.pushAtomId[r]=10218;break;case\"ATOM_JSSCRIPTENGINE_LATENCY_REPORTED\":case 483:t.pushAtomId[r]=483;break;case\"ATOM_AD_SERVICES_API_CALLED\":case 435:t.pushAtomId[r]=435;break;case\"ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED\":case 436:t.pushAtomId[r]=436;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED\":case 490:t.pushAtomId[r]=490;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED\":case 502:t.pushAtomId[r]=502;break;case\"ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED\":case 493:t.pushAtomId[r]=493;break;case\"ATOM_BACKGROUND_FETCH_PROCESS_REPORTED\":case 496:t.pushAtomId[r]=496;break;case\"ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED\":case 497:t.pushAtomId[r]=497;break;case\"ATOM_RUN_AD_BIDDING_PROCESS_REPORTED\":case 498:t.pushAtomId[r]=498;break;case\"ATOM_RUN_AD_SCORING_PROCESS_REPORTED\":case 499:t.pushAtomId[r]=499;break;case\"ATOM_RUN_AD_SELECTION_PROCESS_REPORTED\":case 500:t.pushAtomId[r]=500;break;case\"ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED\":case 501:t.pushAtomId[r]=501;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED\":case 503:t.pushAtomId[r]=503;break;case\"ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS\":case 512:t.pushAtomId[r]=512;break;case\"ATOM_AD_SERVICES_GET_TOPICS_REPORTED\":case 535:t.pushAtomId[r]=535;break;case\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED\":case 536:t.pushAtomId[r]=536;break;case\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\":case 537:t.pushAtomId[r]=537;break;case\"ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED\":case 598:t.pushAtomId[r]=598;break;case\"ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\":case 599:t.pushAtomId[r]=599;break;case\"ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS\":case 640:t.pushAtomId[r]=640;break;case\"ATOM_AD_SERVICES_ERROR_REPORTED\":case 662:t.pushAtomId[r]=662;break;case\"ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED\":case 663:t.pushAtomId[r]=663;break;case\"ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION\":case 673:t.pushAtomId[r]=673;break;case\"ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION\":case 674:t.pushAtomId[r]=674;break;case\"ATOM_AD_SERVICES_MEASUREMENT_JOBS\":case 675:t.pushAtomId[r]=675;break;case\"ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT\":case 676:t.pushAtomId[r]=676;break;case\"ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS\":case 695:t.pushAtomId[r]=695;break;case\"ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED\":case 697:t.pushAtomId[r]=697;break;case\"ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED\":case 698:t.pushAtomId[r]=698;break;case\"ATOM_AD_SERVICES_ENROLLMENT_MATCHED\":case 699:t.pushAtomId[r]=699;break;case\"ATOM_AD_SERVICES_CONSENT_MIGRATED\":case 702:t.pushAtomId[r]=702;break;case\"ATOM_AD_SERVICES_ENROLLMENT_FAILED\":case 714:t.pushAtomId[r]=714;break;case\"ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION\":case 756:t.pushAtomId[r]=756;break;case\"ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED\":case 765:t.pushAtomId[r]=765;break;case\"ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED\":case 766:t.pushAtomId[r]=766;break;case\"ATOM_DESTINATION_REGISTERED_BEACONS\":case 767:t.pushAtomId[r]=767;break;case\"ATOM_REPORT_INTERACTION_API_CALLED\":case 768:t.pushAtomId[r]=768;break;case\"ATOM_INTERACTION_REPORTING_TABLE_CLEARED\":case 769:t.pushAtomId[r]=769;break;case\"ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED\":case 788:t.pushAtomId[r]=788;break;case\"ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED\":case 793:t.pushAtomId[r]=793;break;case\"ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED\":case 794:t.pushAtomId[r]=794;break;case\"ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED\":case 795:t.pushAtomId[r]=795;break;case\"ATOM_SIGNATURE_VERIFICATION\":case 807:t.pushAtomId[r]=807;break;case\"ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED\":case 808:t.pushAtomId[r]=808;break;case\"ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED\":case 809:t.pushAtomId[r]=809;break;case\"ATOM_K_ANON_INITIALIZE_STATUS_REPORTED\":case 810:t.pushAtomId[r]=810;break;case\"ATOM_K_ANON_SIGN_STATUS_REPORTED\":case 811:t.pushAtomId[r]=811;break;case\"ATOM_K_ANON_JOIN_STATUS_REPORTED\":case 812:t.pushAtomId[r]=812;break;case\"ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED\":case 813:t.pushAtomId[r]=813;break;case\"ATOM_GET_AD_SELECTION_DATA_API_CALLED\":case 814:t.pushAtomId[r]=814;break;case\"ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED\":case 815:t.pushAtomId[r]=815;break;case\"ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED\":case 834:t.pushAtomId[r]=834;break;case\"ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED\":case 840:t.pushAtomId[r]=840;break;case\"ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED\":case 841:t.pushAtomId[r]=841;break;case\"ATOM_ADSERVICES_SHELL_COMMAND_CALLED\":case 842:t.pushAtomId[r]=842;break;case\"ATOM_UPDATE_SIGNALS_API_CALLED\":case 843:t.pushAtomId[r]=843;break;case\"ATOM_ENCODING_JOB_RUN\":case 844:t.pushAtomId[r]=844;break;case\"ATOM_ENCODING_JS_FETCH\":case 845:t.pushAtomId[r]=845;break;case\"ATOM_ENCODING_JS_EXECUTION\":case 846:t.pushAtomId[r]=846;break;case\"ATOM_PERSIST_AD_SELECTION_RESULT_CALLED\":case 847:t.pushAtomId[r]=847;break;case\"ATOM_SERVER_AUCTION_KEY_FETCH_CALLED\":case 848:t.pushAtomId[r]=848;break;case\"ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED\":case 849:t.pushAtomId[r]=849;break;case\"ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION\":case 864:t.pushAtomId[r]=864;break;case\"ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP\":case 865:t.pushAtomId[r]=865;break;case\"ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED\":case 876:t.pushAtomId[r]=876;break;case\"ATOM_REPORT_IMPRESSION_API_CALLED\":case 877:t.pushAtomId[r]=877;break;case\"ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS\":case 885:t.pushAtomId[r]=885;break;case\"ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED\":case 902:t.pushAtomId[r]=902;break;case\"ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED\":case 903:t.pushAtomId[r]=903;break;case\"ATOM_UPDATE_SIGNALS_PROCESS_REPORTED\":case 905:t.pushAtomId[r]=905;break;case\"ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED\":case 930:t.pushAtomId[r]=930;break;case\"ATOM_AI_WALLPAPERS_BUTTON_PRESSED\":case 706:t.pushAtomId[r]=706;break;case\"ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED\":case 707:t.pushAtomId[r]=707;break;case\"ATOM_AI_WALLPAPERS_TERM_SELECTED\":case 708:t.pushAtomId[r]=708;break;case\"ATOM_AI_WALLPAPERS_WALLPAPER_SET\":case 709:t.pushAtomId[r]=709;break;case\"ATOM_AI_WALLPAPERS_SESSION_SUMMARY\":case 710:t.pushAtomId[r]=710;break;case\"ATOM_APEX_INSTALLATION_REQUESTED\":case 732:t.pushAtomId[r]=732;break;case\"ATOM_APEX_INSTALLATION_STAGED\":case 733:t.pushAtomId[r]=733;break;case\"ATOM_APEX_INSTALLATION_ENDED\":case 734:t.pushAtomId[r]=734;break;case\"ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED\":case 385:t.pushAtomId[r]=385;break;case\"ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED\":case 579:t.pushAtomId[r]=579;break;case\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED\":case 825:t.pushAtomId[r]=825;break;case\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED\":case 826:t.pushAtomId[r]=826;break;case\"ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED\":case 909:t.pushAtomId[r]=909;break;case\"ATOM_ART_DATUM_REPORTED\":case 332:t.pushAtomId[r]=332;break;case\"ATOM_ART_DEVICE_DATUM_REPORTED\":case 550:t.pushAtomId[r]=550;break;case\"ATOM_ART_DATUM_DELTA_REPORTED\":case 565:t.pushAtomId[r]=565;break;case\"ATOM_ART_DEX2OAT_REPORTED\":case 929:t.pushAtomId[r]=929;break;case\"ATOM_ART_DEVICE_STATUS\":case 10205:t.pushAtomId[r]=10205;break;case\"ATOM_BACKGROUND_DEXOPT_JOB_ENDED\":case 467:t.pushAtomId[r]=467;break;case\"ATOM_PREREBOOT_DEXOPT_JOB_ENDED\":case 883:t.pushAtomId[r]=883;break;case\"ATOM_ODREFRESH_REPORTED\":case 366:t.pushAtomId[r]=366;break;case\"ATOM_ODSIGN_REPORTED\":case 548:t.pushAtomId[r]=548;break;case\"ATOM_AUTOFILL_UI_EVENT_REPORTED\":case 603:t.pushAtomId[r]=603;break;case\"ATOM_AUTOFILL_FILL_REQUEST_REPORTED\":case 604:t.pushAtomId[r]=604;break;case\"ATOM_AUTOFILL_FILL_RESPONSE_REPORTED\":case 605:t.pushAtomId[r]=605;break;case\"ATOM_AUTOFILL_SAVE_EVENT_REPORTED\":case 606:t.pushAtomId[r]=606;break;case\"ATOM_AUTOFILL_SESSION_COMMITTED\":case 607:t.pushAtomId[r]=607;break;case\"ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED\":case 659:t.pushAtomId[r]=659;break;case\"ATOM_CAR_RECENTS_EVENT_REPORTED\":case 770:t.pushAtomId[r]=770;break;case\"ATOM_CAR_CALM_MODE_EVENT_REPORTED\":case 797:t.pushAtomId[r]=797;break;case\"ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED\":case 852:t.pushAtomId[r]=852;break;case\"ATOM_PLUGIN_INITIALIZED\":case 655:t.pushAtomId[r]=655;break;case\"ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED\":case 613:t.pushAtomId[r]=613;break;case\"ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION\":case 614:t.pushAtomId[r]=614;break;case\"ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION\":case 615:t.pushAtomId[r]=615;break;case\"ATOM_BLUETOOTH_LE_SESSION_CONNECTED\":case 656:t.pushAtomId[r]=656;break;case\"ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED\":case 666:t.pushAtomId[r]=666;break;case\"ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED\":case 696:t.pushAtomId[r]=696;break;case\"ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED\":case 781:t.pushAtomId[r]=781;break;case\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED\":case 782:t.pushAtomId[r]=782;break;case\"ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID\":case 862:t.pushAtomId[r]=862;break;case\"ATOM_LE_APP_SCAN_STATE_CHANGED\":case 870:t.pushAtomId[r]=870;break;case\"ATOM_LE_RADIO_SCAN_STOPPED\":case 871:t.pushAtomId[r]=871;break;case\"ATOM_LE_SCAN_RESULT_RECEIVED\":case 872:t.pushAtomId[r]=872;break;case\"ATOM_LE_SCAN_ABUSED\":case 873:t.pushAtomId[r]=873;break;case\"ATOM_LE_ADV_STATE_CHANGED\":case 874:t.pushAtomId[r]=874;break;case\"ATOM_LE_ADV_ERROR_REPORTED\":case 875:t.pushAtomId[r]=875;break;case\"ATOM_A2DP_SESSION_REPORTED\":case 904:t.pushAtomId[r]=904;break;case\"ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED\":case 916:t.pushAtomId[r]=916;break;case\"ATOM_BROADCAST_AUDIO_SESSION_REPORTED\":case 927:t.pushAtomId[r]=927;break;case\"ATOM_BROADCAST_AUDIO_SYNC_REPORTED\":case 928:t.pushAtomId[r]=928;break;case\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE\":case 982:t.pushAtomId[r]=982;break;case\"ATOM_BLUETOOTH_LE_CONNECTION\":case 988:t.pushAtomId[r]=988;break;case\"ATOM_BROADCAST_SENT\":case 922:t.pushAtomId[r]=922;break;case\"ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT\":case 900:t.pushAtomId[r]=900;break;case\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED\":case 934:t.pushAtomId[r]=934;break;case\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED\":case 972:t.pushAtomId[r]=972;break;case\"ATOM_DAILY_KEEPALIVE_INFO_REPORTED\":case 650:t.pushAtomId[r]=650;break;case\"ATOM_NETWORK_REQUEST_STATE_CHANGED\":case 779:t.pushAtomId[r]=779;break;case\"ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED\":case 925:t.pushAtomId[r]=925;break;case\"ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED\":case 783:t.pushAtomId[r]=783;break;case\"ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED\":case 979:t.pushAtomId[r]=979;break;case\"ATOM_APF_SESSION_INFO_REPORTED\":case 777:t.pushAtomId[r]=777;break;case\"ATOM_IP_CLIENT_RA_INFO_REPORTED\":case 778:t.pushAtomId[r]=778;break;case\"ATOM_VPN_CONNECTION_STATE_CHANGED\":case 850:t.pushAtomId[r]=850;break;case\"ATOM_VPN_CONNECTION_REPORTED\":case 851:t.pushAtomId[r]=851;break;case\"ATOM_CPU_POLICY\":case 10199:t.pushAtomId[r]=10199;break;case\"ATOM_CREDENTIAL_MANAGER_API_CALLED\":case 585:t.pushAtomId[r]=585;break;case\"ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED\":case 651:t.pushAtomId[r]=651;break;case\"ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED\":case 652:t.pushAtomId[r]=652;break;case\"ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED\":case 653:t.pushAtomId[r]=653;break;case\"ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED\":case 667:t.pushAtomId[r]=667;break;case\"ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED\":case 668:t.pushAtomId[r]=668;break;case\"ATOM_CREDENTIAL_MANAGER_GET_REPORTED\":case 669:t.pushAtomId[r]=669;break;case\"ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED\":case 670:t.pushAtomId[r]=670;break;case\"ATOM_CREDENTIAL_MANAGER_APIV2_CALLED\":case 671:t.pushAtomId[r]=671;break;case\"ATOM_CRONET_ENGINE_CREATED\":case 703:t.pushAtomId[r]=703;break;case\"ATOM_CRONET_TRAFFIC_REPORTED\":case 704:t.pushAtomId[r]=704;break;case\"ATOM_CRONET_ENGINE_BUILDER_INITIALIZED\":case 762:t.pushAtomId[r]=762;break;case\"ATOM_CRONET_HTTP_FLAGS_INITIALIZED\":case 763:t.pushAtomId[r]=763;break;case\"ATOM_CRONET_INITIALIZED\":case 764:t.pushAtomId[r]=764;break;case\"ATOM_DESKTOP_MODE_UI_CHANGED\":case 818:t.pushAtomId[r]=818;break;case\"ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE\":case 819:t.pushAtomId[r]=819;break;case\"ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED\":case 935:t.pushAtomId[r]=935;break;case\"ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED\":case 726:t.pushAtomId[r]=726;break;case\"ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED\":case 727:t.pushAtomId[r]=727;break;case\"ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED\":case 728:t.pushAtomId[r]=728;break;case\"ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED\":case 789:t.pushAtomId[r]=789;break;case\"ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED\":case 790:t.pushAtomId[r]=790;break;case\"ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED\":case 791:t.pushAtomId[r]=791;break;case\"ATOM_DEVICE_POLICY_MANAGEMENT_MODE\":case 10216:t.pushAtomId[r]=10216;break;case\"ATOM_DEVICE_POLICY_STATE\":case 10217:t.pushAtomId[r]=10217;break;case\"ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED\":case 792:t.pushAtomId[r]=792;break;case\"ATOM_EXTERNAL_DISPLAY_STATE_CHANGED\":case 806:t.pushAtomId[r]=806;break;case\"ATOM_DND_STATE_CHANGED\":case 657:t.pushAtomId[r]=657;break;case\"ATOM_DREAM_SETTING_CHANGED\":case 705:t.pushAtomId[r]=705;break;case\"ATOM_DREAM_SETTING_SNAPSHOT\":case 10192:t.pushAtomId[r]=10192;break;case\"ATOM_EXPRESS_EVENT_REPORTED\":case 528:t.pushAtomId[r]=528;break;case\"ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED\":case 593:t.pushAtomId[r]=593;break;case\"ATOM_EXPRESS_UID_EVENT_REPORTED\":case 644:t.pushAtomId[r]=644;break;case\"ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED\":case 658:t.pushAtomId[r]=658;break;case\"ATOM_FEDERATED_COMPUTE_API_CALLED\":case 712:t.pushAtomId[r]=712;break;case\"ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED\":case 771:t.pushAtomId[r]=771;break;case\"ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED\":case 838:t.pushAtomId[r]=838;break;case\"ATOM_FULL_SCREEN_INTENT_LAUNCHED\":case 631:t.pushAtomId[r]=631;break;case\"ATOM_BAL_ALLOWED\":case 632:t.pushAtomId[r]=632;break;case\"ATOM_IN_TASK_ACTIVITY_STARTED\":case 685:t.pushAtomId[r]=685;break;case\"ATOM_DEVICE_ORIENTATION_CHANGED\":case 906:t.pushAtomId[r]=906;break;case\"ATOM_CACHED_APPS_HIGH_WATERMARK\":case 10189:t.pushAtomId[r]=10189;break;case\"ATOM_STYLUS_PREDICTION_METRICS_REPORTED\":case 718:t.pushAtomId[r]=718;break;case\"ATOM_USER_RISK_EVENT_REPORTED\":case 725:t.pushAtomId[r]=725;break;case\"ATOM_MEDIA_PROJECTION_STATE_CHANGED\":case 729:t.pushAtomId[r]=729;break;case\"ATOM_MEDIA_PROJECTION_TARGET_CHANGED\":case 730:t.pushAtomId[r]=730;break;case\"ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED\":case 853:t.pushAtomId[r]=853;break;case\"ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG\":case 10200:t.pushAtomId[r]=10200;break;case\"ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE\":case 10204:t.pushAtomId[r]=10204;break;case\"ATOM_BIOMETRIC_FRR_NOTIFICATION\":case 817:t.pushAtomId[r]=817;break;case\"ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION\":case 830:t.pushAtomId[r]=830;break;case\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION\":case 831:t.pushAtomId[r]=831;break;case\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED\":case 832:t.pushAtomId[r]=832;break;case\"ATOM_SENSITIVE_NOTIFICATION_REDACTION\":case 833:t.pushAtomId[r]=833;break;case\"ATOM_SENSITIVE_CONTENT_APP_PROTECTION\":case 835:t.pushAtomId[r]=835;break;case\"ATOM_APP_RESTRICTION_STATE_CHANGED\":case 866:t.pushAtomId[r]=866;break;case\"ATOM_BATTERY_USAGE_STATS_PER_UID\":case 10209:t.pushAtomId[r]=10209;break;case\"ATOM_POSTGC_MEMORY_SNAPSHOT\":case 924:t.pushAtomId[r]=924;break;case\"ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED\":case 926:t.pushAtomId[r]=926;break;case\"ATOM_APP_OP_ACCESS_TRACKED\":case 931:t.pushAtomId[r]=931;break;case\"ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED\":case 933:t.pushAtomId[r]=933;break;case\"ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED\":case 584:t.pushAtomId[r]=584;break;case\"ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED\":case 816:t.pushAtomId[r]=816;break;case\"ATOM_BATTERY_HEALTH\":case 10220:t.pushAtomId[r]=10220;break;case\"ATOM_HDMI_EARC_STATUS_REPORTED\":case 701:t.pushAtomId[r]=701;break;case\"ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED\":case 724:t.pushAtomId[r]=724;break;case\"ATOM_HEALTH_CONNECT_API_CALLED\":case 616:t.pushAtomId[r]=616;break;case\"ATOM_HEALTH_CONNECT_USAGE_STATS\":case 617:t.pushAtomId[r]=617;break;case\"ATOM_HEALTH_CONNECT_STORAGE_STATS\":case 618:t.pushAtomId[r]=618;break;case\"ATOM_HEALTH_CONNECT_API_INVOKED\":case 643:t.pushAtomId[r]=643;break;case\"ATOM_EXERCISE_ROUTE_API_CALLED\":case 654:t.pushAtomId[r]=654;break;case\"ATOM_HEALTH_CONNECT_EXPORT_INVOKED\":case 907:t.pushAtomId[r]=907;break;case\"ATOM_HEALTH_CONNECT_IMPORT_INVOKED\":case 918:t.pushAtomId[r]=918;break;case\"ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED\":case 919:t.pushAtomId[r]=919;break;case\"ATOM_HEALTH_CONNECT_UI_IMPRESSION\":case 623:t.pushAtomId[r]=623;break;case\"ATOM_HEALTH_CONNECT_UI_INTERACTION\":case 624:t.pushAtomId[r]=624;break;case\"ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED\":case 625:t.pushAtomId[r]=625;break;case\"ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED\":case 761:t.pushAtomId[r]=761;break;case\"ATOM_IKE_SESSION_TERMINATED\":case 678:t.pushAtomId[r]=678;break;case\"ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED\":case 760:t.pushAtomId[r]=760;break;case\"ATOM_NEGOTIATED_SECURITY_ASSOCIATION\":case 821:t.pushAtomId[r]=821;break;case\"ATOM_KEYBOARD_CONFIGURED\":case 682:t.pushAtomId[r]=682;break;case\"ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED\":case 683:t.pushAtomId[r]=683;break;case\"ATOM_INPUTDEVICE_USAGE_REPORTED\":case 686:t.pushAtomId[r]=686;break;case\"ATOM_INPUT_EVENT_LATENCY_REPORTED\":case 932:t.pushAtomId[r]=932;break;case\"ATOM_TOUCHPAD_USAGE\":case 10191:t.pushAtomId[r]=10191;break;case\"ATOM_KERNEL_OOM_KILL_OCCURRED\":case 754:t.pushAtomId[r]=754;break;case\"ATOM_EMERGENCY_STATE_CHANGED\":case 633:t.pushAtomId[r]=633;break;case\"ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED\":case 868:t.pushAtomId[r]=868;break;case\"ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED\":case 1002:t.pushAtomId[r]=1002;break;case\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED\":case 1003:t.pushAtomId[r]=1003;break;case\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED\":case 1004:t.pushAtomId[r]=1004;break;case\"ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED\":case 600:t.pushAtomId[r]=600;break;case\"ATOM_MEDIA_CODEC_STARTED\":case 641:t.pushAtomId[r]=641;break;case\"ATOM_MEDIA_CODEC_STOPPED\":case 642:t.pushAtomId[r]=642;break;case\"ATOM_MEDIA_CODEC_RENDERED\":case 684:t.pushAtomId[r]=684;break;case\"ATOM_MEDIA_EDITING_ENDED_REPORTED\":case 798:t.pushAtomId[r]=798;break;case\"ATOM_MTE_STATE\":case 10181:t.pushAtomId[r]=10181;break;case\"ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED\":case 901:t.pushAtomId[r]=901;break;case\"ATOM_NFC_OBSERVE_MODE_STATE_CHANGED\":case 855:t.pushAtomId[r]=855;break;case\"ATOM_NFC_FIELD_CHANGED\":case 856:t.pushAtomId[r]=856;break;case\"ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED\":case 857:t.pushAtomId[r]=857;break;case\"ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED\":case 858:t.pushAtomId[r]=858;break;case\"ATOM_ONDEVICEPERSONALIZATION_API_CALLED\":case 711:t.pushAtomId[r]=711;break;case\"ATOM_COMPONENT_STATE_CHANGED_REPORTED\":case 863:t.pushAtomId[r]=863;break;case\"ATOM_PDF_LOAD_REPORTED\":case 859:t.pushAtomId[r]=859;break;case\"ATOM_PDF_API_USAGE_REPORTED\":case 860:t.pushAtomId[r]=860;break;case\"ATOM_PDF_SEARCH_REPORTED\":case 861:t.pushAtomId[r]=861;break;case\"ATOM_PRESSURE_STALL_INFORMATION\":case 10229:t.pushAtomId[r]=10229;break;case\"ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED\":case 645:t.pushAtomId[r]=645;break;case\"ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED\":case 646:t.pushAtomId[r]=646;break;case\"ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION\":case 647:t.pushAtomId[r]=647;break;case\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED\":case 648:t.pushAtomId[r]=648;break;case\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED\":case 649:t.pushAtomId[r]=649;break;case\"ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED\":case 827:t.pushAtomId[r]=827;break;case\"ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED\":case 828:t.pushAtomId[r]=828;break;case\"ATOM_PHOTOPICKER_SESSION_INFO_REPORTED\":case 886:t.pushAtomId[r]=886;break;case\"ATOM_PHOTOPICKER_API_INFO_REPORTED\":case 887:t.pushAtomId[r]=887;break;case\"ATOM_PHOTOPICKER_UI_EVENT_LOGGED\":case 888:t.pushAtomId[r]=888;break;case\"ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED\":case 889:t.pushAtomId[r]=889;break;case\"ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED\":case 890:t.pushAtomId[r]=890;break;case\"ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED\":case 891:t.pushAtomId[r]=891;break;case\"ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED\":case 892:t.pushAtomId[r]=892;break;case\"ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED\":case 893:t.pushAtomId[r]=893;break;case\"ATOM_PHOTOPICKER_PAGE_INFO_LOGGED\":case 894:t.pushAtomId[r]=894;break;case\"ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED\":case 895:t.pushAtomId[r]=895;break;case\"ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED\":case 896:t.pushAtomId[r]=896;break;case\"ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED\":case 897:t.pushAtomId[r]=897;break;case\"ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED\":case 898:t.pushAtomId[r]=898;break;case\"ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED\":case 899:t.pushAtomId[r]=899;break;case\"ATOM_ATOM_9999\":case 9999:t.pushAtomId[r]=9999;break;case\"ATOM_ATOM_99999\":case 99999:t.pushAtomId[r]=99999;break;case\"ATOM_SCREEN_OFF_REPORTED\":case 776:t.pushAtomId[r]=776;break;case\"ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED\":case 836:t.pushAtomId[r]=836;break;case\"ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED\":case 837:t.pushAtomId[r]=837;break;case\"ATOM_SCREEN_DIM_REPORTED\":case 867:t.pushAtomId[r]=867;break;case\"ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED\":case 784:t.pushAtomId[r]=784;break;case\"ATOM_BACKUP_SETUP_STATUS_REPORTED\":case 785:t.pushAtomId[r]=785;break;case\"ATOM_RANGING_SESSION_CONFIGURED\":case 993:t.pushAtomId[r]=993;break;case\"ATOM_RANGING_SESSION_STARTED\":case 994:t.pushAtomId[r]=994;break;case\"ATOM_RANGING_SESSION_CLOSED\":case 995:t.pushAtomId[r]=995;break;case\"ATOM_RANGING_TECHNOLOGY_STARTED\":case 996:t.pushAtomId[r]=996;break;case\"ATOM_RANGING_TECHNOLOGY_STOPPED\":case 997:t.pushAtomId[r]=997;break;case\"ATOM_RKPD_POOL_STATS\":case 664:t.pushAtomId[r]=664;break;case\"ATOM_RKPD_CLIENT_OPERATION\":case 665:t.pushAtomId[r]=665;break;case\"ATOM_SANDBOX_API_CALLED\":case 488:t.pushAtomId[r]=488;break;case\"ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED\":case 735:t.pushAtomId[r]=735;break;case\"ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION\":case 796:t.pushAtomId[r]=796;break;case\"ATOM_SANDBOX_SDK_STORAGE\":case 10159:t.pushAtomId[r]=10159;break;case\"ATOM_SELINUX_AUDIT_LOG\":case 799:t.pushAtomId[r]=799;break;case\"ATOM_SETTINGS_SPA_REPORTED\":case 622:t.pushAtomId[r]=622;break;case\"ATOM_TEST_EXTENSION_ATOM_REPORTED\":case 660:t.pushAtomId[r]=660;break;case\"ATOM_TEST_RESTRICTED_ATOM_REPORTED\":case 672:t.pushAtomId[r]=672;break;case\"ATOM_STATS_SOCKET_LOSS_REPORTED\":case 752:t.pushAtomId[r]=752;break;case\"ATOM_LOCKSCREEN_SHORTCUT_SELECTED\":case 611:t.pushAtomId[r]=611;break;case\"ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED\":case 612:t.pushAtomId[r]=612;break;case\"ATOM_LAUNCHER_IMPRESSION_EVENT_V2\":case 716:t.pushAtomId[r]=716;break;case\"ATOM_DISPLAY_SWITCH_LATENCY_TRACKED\":case 753:t.pushAtomId[r]=753;break;case\"ATOM_NOTIFICATION_LISTENER_SERVICE\":case 829:t.pushAtomId[r]=829;break;case\"ATOM_NAV_HANDLE_TOUCH_POINTS\":case 869:t.pushAtomId[r]=869;break;case\"ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED\":case 908:t.pushAtomId[r]=908;break;case\"ATOM_COMMUNAL_HUB_SNAPSHOT\":case 10226:t.pushAtomId[r]=10226;break;case\"ATOM_EMERGENCY_NUMBER_DIALED\":case 637:t.pushAtomId[r]=637;break;case\"ATOM_CALL_STATS\":case 10221:t.pushAtomId[r]=10221;break;case\"ATOM_CALL_AUDIO_ROUTE_STATS\":case 10222:t.pushAtomId[r]=10222;break;case\"ATOM_TELECOM_API_STATS\":case 10223:t.pushAtomId[r]=10223;break;case\"ATOM_TELECOM_ERROR_STATS\":case 10224:t.pushAtomId[r]=10224;break;case\"ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED\":case 713:t.pushAtomId[r]=713;break;case\"ATOM_EMERGENCY_NUMBERS_INFO\":case 10180:t.pushAtomId[r]=10180;break;case\"ATOM_DATA_NETWORK_VALIDATION\":case 10207:t.pushAtomId[r]=10207;break;case\"ATOM_DATA_RAT_STATE_CHANGED\":case 854:t.pushAtomId[r]=854;break;case\"ATOM_CONNECTED_CHANNEL_CHANGED\":case 882:t.pushAtomId[r]=882;break;case\"ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED\":case 923:t.pushAtomId[r]=923;break;case\"ATOM_QUALIFIED_RAT_LIST_CHANGED\":case 634:t.pushAtomId[r]=634;break;case\"ATOM_QNS_IMS_CALL_DROP_STATS\":case 635:t.pushAtomId[r]=635;break;case\"ATOM_QNS_FALLBACK_RESTRICTION_CHANGED\":case 636:t.pushAtomId[r]=636;break;case\"ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO\":case 10177:t.pushAtomId[r]=10177;break;case\"ATOM_QNS_HANDOVER_TIME_MILLIS\":case 10178:t.pushAtomId[r]=10178;break;case\"ATOM_QNS_HANDOVER_PINGPONG\":case 10179:t.pushAtomId[r]=10179;break;case\"ATOM_SATELLITE_CONTROLLER\":case 10182:t.pushAtomId[r]=10182;break;case\"ATOM_SATELLITE_SESSION\":case 10183:t.pushAtomId[r]=10183;break;case\"ATOM_SATELLITE_INCOMING_DATAGRAM\":case 10184:t.pushAtomId[r]=10184;break;case\"ATOM_SATELLITE_OUTGOING_DATAGRAM\":case 10185:t.pushAtomId[r]=10185;break;case\"ATOM_SATELLITE_PROVISION\":case 10186:t.pushAtomId[r]=10186;break;case\"ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER\":case 10187:t.pushAtomId[r]=10187;break;case\"ATOM_CARRIER_ROAMING_SATELLITE_SESSION\":case 10211:t.pushAtomId[r]=10211;break;case\"ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS\":case 10212:t.pushAtomId[r]=10212;break;case\"ATOM_CONTROLLER_STATS_PER_PACKAGE\":case 10213:t.pushAtomId[r]=10213;break;case\"ATOM_SATELLITE_ENTITLEMENT\":case 10214:t.pushAtomId[r]=10214;break;case\"ATOM_SATELLITE_CONFIG_UPDATER\":case 10215:t.pushAtomId[r]=10215;break;case\"ATOM_SATELLITE_ACCESS_CONTROLLER\":case 10219:t.pushAtomId[r]=10219;break;case\"ATOM_CELLULAR_IDENTIFIER_DISCLOSED\":case 800:t.pushAtomId[r]=800;break;case\"ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED\":case 738:t.pushAtomId[r]=738;break;case\"ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED\":case 739:t.pushAtomId[r]=739;break;case\"ATOM_THREADNETWORK_DEVICE_INFO_REPORTED\":case 740:t.pushAtomId[r]=740;break;case\"ATOM_BOOT_INTEGRITY_INFO_REPORTED\":case 775:t.pushAtomId[r]=775;break;case\"ATOM_TV_LOW_POWER_STANDBY_POLICY\":case 679:t.pushAtomId[r]=679;break;case\"ATOM_EXTERNAL_TV_INPUT_EVENT\":case 717:t.pushAtomId[r]=717;break;case\"ATOM_TEST_UPROBESTATS_ATOM_REPORTED\":case 915:t.pushAtomId[r]=915;break;case\"ATOM_UWB_ACTIVITY_INFO\":case 10188:t.pushAtomId[r]=10188;break;case\"ATOM_MEDIATOR_UPDATED\":case 721:t.pushAtomId[r]=721;break;case\"ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER\":case 10196:t.pushAtomId[r]=10196;break;case\"ATOM_SYSPROXY_CONNECTION_UPDATED\":case 786:t.pushAtomId[r]=786;break;case\"ATOM_WEAR_COMPANION_CONNECTION_STATE\":case 921:t.pushAtomId[r]=921;break;case\"ATOM_MEDIA_ACTION_REPORTED\":case 608:t.pushAtomId[r]=608;break;case\"ATOM_MEDIA_CONTROLS_LAUNCHED\":case 609:t.pushAtomId[r]=609;break;case\"ATOM_MEDIA_SESSION_STATE_CHANGED\":case 677:t.pushAtomId[r]=677;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY\":case 757:t.pushAtomId[r]=757;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE\":case 758:t.pushAtomId[r]=758;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT\":case 759:t.pushAtomId[r]=759;break;case\"ATOM_WEAR_MODE_STATE_CHANGED\":case 715:t.pushAtomId[r]=715;break;case\"ATOM_RENDERER_INITIALIZED\":case 736:t.pushAtomId[r]=736;break;case\"ATOM_SCHEMA_VERSION_RECEIVED\":case 737:t.pushAtomId[r]=737;break;case\"ATOM_LAYOUT_INSPECTED\":case 741:t.pushAtomId[r]=741;break;case\"ATOM_LAYOUT_EXPRESSION_INSPECTED\":case 742:t.pushAtomId[r]=742;break;case\"ATOM_LAYOUT_ANIMATIONS_INSPECTED\":case 743:t.pushAtomId[r]=743;break;case\"ATOM_MATERIAL_COMPONENTS_INSPECTED\":case 744:t.pushAtomId[r]=744;break;case\"ATOM_TILE_REQUESTED\":case 745:t.pushAtomId[r]=745;break;case\"ATOM_STATE_RESPONSE_RECEIVED\":case 746:t.pushAtomId[r]=746;break;case\"ATOM_TILE_RESPONSE_RECEIVED\":case 747:t.pushAtomId[r]=747;break;case\"ATOM_INFLATION_FINISHED\":case 748:t.pushAtomId[r]=748;break;case\"ATOM_INFLATION_FAILED\":case 749:t.pushAtomId[r]=749;break;case\"ATOM_IGNORED_INFLATION_FAILURES_REPORTED\":case 750:t.pushAtomId[r]=750;break;case\"ATOM_DRAWABLE_RENDERED\":case 751:t.pushAtomId[r]=751;break;case\"ATOM_WEAR_TIME_SYNC_REQUESTED\":case 911:t.pushAtomId[r]=911;break;case\"ATOM_WEAR_TIME_UPDATE_STARTED\":case 912:t.pushAtomId[r]=912;break;case\"ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED\":case 913:t.pushAtomId[r]=913;break;case\"ATOM_WEAR_TIME_CHANGED\":case 914:t.pushAtomId[r]=914;break;case\"ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED\":case 619:t.pushAtomId[r]=619;break;case\"ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED\":case 620:t.pushAtomId[r]=620;break;case\"ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED\":case 621:t.pushAtomId[r]=621;break;case\"ATOM_WS_WEAR_TIME_SESSION\":case 610:t.pushAtomId[r]=610;break;case\"ATOM_WS_INCOMING_CALL_ACTION_REPORTED\":case 626:t.pushAtomId[r]=626;break;case\"ATOM_WS_CALL_DISCONNECTION_REPORTED\":case 627:t.pushAtomId[r]=627;break;case\"ATOM_WS_CALL_DURATION_REPORTED\":case 628:t.pushAtomId[r]=628;break;case\"ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED\":case 629:t.pushAtomId[r]=629;break;case\"ATOM_WS_CALL_INTERACTION_REPORTED\":case 630:t.pushAtomId[r]=630;break;case\"ATOM_WS_ON_BODY_STATE_CHANGED\":case 787:t.pushAtomId[r]=787;break;case\"ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED\":case 802:t.pushAtomId[r]=802;break;case\"ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED\":case 803:t.pushAtomId[r]=803;break;case\"ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED\":case 804:t.pushAtomId[r]=804;break;case\"ATOM_WS_REMOTE_EVENT_USAGE_REPORTED\":case 920:t.pushAtomId[r]=920;break;case\"ATOM_WS_BUGREPORT_REQUESTED\":case 936:t.pushAtomId[r]=936;break;case\"ATOM_WS_BUGREPORT_TRIGGERED\":case 937:t.pushAtomId[r]=937;break;case\"ATOM_WS_BUGREPORT_FINISHED\":case 938:t.pushAtomId[r]=938;break;case\"ATOM_WS_BUGREPORT_RESULT_RECEIVED\":case 939:t.pushAtomId[r]=939;break;case\"ATOM_WS_STANDALONE_MODE_SNAPSHOT\":case 10197:t.pushAtomId[r]=10197;break;case\"ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT\":case 10206:t.pushAtomId[r]=10206;break;case\"ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT\":case 10225:t.pushAtomId[r]=10225;break;case\"ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT\":case 10227:t.pushAtomId[r]=10227;break;case\"ATOM_WEAR_POWER_MENU_OPENED\":case 731:t.pushAtomId[r]=731;break;case\"ATOM_WEAR_ASSISTANT_OPENED\":case 755:t.pushAtomId[r]=755;break;case\"ATOM_FIRST_OVERLAY_STATE_CHANGED\":case 917:t.pushAtomId[r]=917;break;case\"ATOM_WIFI_AWARE_NDP_REPORTED\":case 638:t.pushAtomId[r]=638;break;case\"ATOM_WIFI_AWARE_ATTACH_REPORTED\":case 639:t.pushAtomId[r]=639;break;case\"ATOM_WIFI_SELF_RECOVERY_TRIGGERED\":case 661:t.pushAtomId[r]=661;break;case\"ATOM_SOFT_AP_STARTED\":case 680:t.pushAtomId[r]=680;break;case\"ATOM_SOFT_AP_STOPPED\":case 681:t.pushAtomId[r]=681;break;case\"ATOM_WIFI_LOCK_RELEASED\":case 687:t.pushAtomId[r]=687;break;case\"ATOM_WIFI_LOCK_DEACTIVATED\":case 688:t.pushAtomId[r]=688;break;case\"ATOM_WIFI_CONFIG_SAVED\":case 689:t.pushAtomId[r]=689;break;case\"ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED\":case 690:t.pushAtomId[r]=690;break;case\"ATOM_WIFI_AWARE_HAL_API_CALLED\":case 691:t.pushAtomId[r]=691;break;case\"ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED\":case 692:t.pushAtomId[r]=692;break;case\"ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED\":case 693:t.pushAtomId[r]=693;break;case\"ATOM_WIFI_THREAD_TASK_EXECUTED\":case 694:t.pushAtomId[r]=694;break;case\"ATOM_WIFI_STATE_CHANGED\":case 700:t.pushAtomId[r]=700;break;case\"ATOM_PNO_SCAN_STARTED\":case 719:t.pushAtomId[r]=719;break;case\"ATOM_PNO_SCAN_STOPPED\":case 720:t.pushAtomId[r]=720;break;case\"ATOM_WIFI_IS_UNUSABLE_REPORTED\":case 722:t.pushAtomId[r]=722;break;case\"ATOM_WIFI_AP_CAPABILITIES_REPORTED\":case 723:t.pushAtomId[r]=723;break;case\"ATOM_SOFT_AP_STATE_CHANGED\":case 805:t.pushAtomId[r]=805;break;case\"ATOM_SCORER_PREDICTION_RESULT_REPORTED\":case 884:t.pushAtomId[r]=884;break;case\"ATOM_WIFI_AWARE_CAPABILITIES\":case 10190:t.pushAtomId[r]=10190;break;case\"ATOM_WIFI_MODULE_INFO\":case 10193:t.pushAtomId[r]=10193;break;case\"ATOM_WIFI_SETTING_INFO\":case 10194:t.pushAtomId[r]=10194;break;case\"ATOM_WIFI_COMPLEX_SETTING_INFO\":case 10195:t.pushAtomId[r]=10195;break;case\"ATOM_WIFI_CONFIGURED_NETWORK_INFO\":case 10198:t.pushAtomId[r]=10198}}if(e.rawPushAtomId){if(!Array.isArray(e.rawPushAtomId))throw TypeError(\".perfetto.protos.StatsdTracingConfig.rawPushAtomId: array expected\");t.rawPushAtomId=[];for(r=0;r<e.rawPushAtomId.length;++r)t.rawPushAtomId[r]=0|e.rawPushAtomId[r]}if(e.pullConfig){if(!Array.isArray(e.pullConfig))throw TypeError(\".perfetto.protos.StatsdTracingConfig.pullConfig: array expected\");t.pullConfig=[];for(r=0;r<e.pullConfig.length;++r){if(\"object\"!=typeof e.pullConfig[r])throw TypeError(\".perfetto.protos.StatsdTracingConfig.pullConfig: object expected\");t.pullConfig[r]=s.perfetto.protos.StatsdPullAtomConfig.fromObject(e.pullConfig[r])}}return t},At.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.pushAtomId=[],r.rawPushAtomId=[],r.pullConfig=[]),e.pushAtomId&&e.pushAtomId.length){r.pushAtomId=[];for(var n=0;n<e.pushAtomId.length;++n)r.pushAtomId[n]=t.enums!==String||void 0===s.perfetto.protos.AtomId[e.pushAtomId[n]]?e.pushAtomId[n]:s.perfetto.protos.AtomId[e.pushAtomId[n]]}if(e.rawPushAtomId&&e.rawPushAtomId.length){r.rawPushAtomId=[];for(n=0;n<e.rawPushAtomId.length;++n)r.rawPushAtomId[n]=e.rawPushAtomId[n]}if(e.pullConfig&&e.pullConfig.length){r.pullConfig=[];for(n=0;n<e.pullConfig.length;++n)r.pullConfig[n]=s.perfetto.protos.StatsdPullAtomConfig.toObject(e.pullConfig[n],t)}return r},At.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},At.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StatsdTracingConfig\"},At),r.StatsdPullAtomConfig=(Ot.prototype.pullAtomId=i.emptyArray,Ot.prototype.rawPullAtomId=i.emptyArray,Ot.prototype.pullFrequencyMs=0,Ot.prototype.packages=i.emptyArray,Ot.create=function(e){return new Ot(e)},Ot.encode=function(e,t){if(t=t||a.create(),null!=e.pullAtomId&&e.pullAtomId.length)for(var r=0;r<e.pullAtomId.length;++r)t.uint32(8).int32(e.pullAtomId[r]);if(null!=e.rawPullAtomId&&e.rawPullAtomId.length)for(r=0;r<e.rawPullAtomId.length;++r)t.uint32(16).int32(e.rawPullAtomId[r]);if(null!=e.pullFrequencyMs&&Object.hasOwnProperty.call(e,\"pullFrequencyMs\")&&t.uint32(24).int32(e.pullFrequencyMs),null!=e.packages&&e.packages.length)for(r=0;r<e.packages.length;++r)t.uint32(34).string(e.packages[r]);return t},Ot.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.StatsdPullAtomConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.pullAtomId&&n.pullAtomId.length||(n.pullAtomId=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.pullAtomId.push(e.int32());else n.pullAtomId.push(e.int32());break;case 2:if(n.rawPullAtomId&&n.rawPullAtomId.length||(n.rawPullAtomId=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.rawPullAtomId.push(e.int32());else n.rawPullAtomId.push(e.int32());break;case 3:n.pullFrequencyMs=e.int32();break;case 4:n.packages&&n.packages.length||(n.packages=[]),n.packages.push(e.string());break;default:e.skipType(7&a)}}return n},Ot.fromObject=function(e){if(e instanceof s.perfetto.protos.StatsdPullAtomConfig)return e;var t=new s.perfetto.protos.StatsdPullAtomConfig;if(e.pullAtomId){if(!Array.isArray(e.pullAtomId))throw TypeError(\".perfetto.protos.StatsdPullAtomConfig.pullAtomId: array expected\");t.pullAtomId=[];for(var r=0;r<e.pullAtomId.length;++r)switch(e.pullAtomId[r]){default:if(\"number\"==typeof e.pullAtomId[r]){t.pullAtomId[r]=e.pullAtomId[r];break}case\"ATOM_UNSPECIFIED\":case 0:t.pullAtomId[r]=0;break;case\"ATOM_BLE_SCAN_STATE_CHANGED\":case 2:t.pullAtomId[r]=2;break;case\"ATOM_PROCESS_STATE_CHANGED\":case 3:t.pullAtomId[r]=3;break;case\"ATOM_BLE_SCAN_RESULT_RECEIVED\":case 4:t.pullAtomId[r]=4;break;case\"ATOM_SENSOR_STATE_CHANGED\":case 5:t.pullAtomId[r]=5;break;case\"ATOM_GPS_SCAN_STATE_CHANGED\":case 6:t.pullAtomId[r]=6;break;case\"ATOM_SYNC_STATE_CHANGED\":case 7:t.pullAtomId[r]=7;break;case\"ATOM_SCHEDULED_JOB_STATE_CHANGED\":case 8:t.pullAtomId[r]=8;break;case\"ATOM_SCREEN_BRIGHTNESS_CHANGED\":case 9:t.pullAtomId[r]=9;break;case\"ATOM_WAKELOCK_STATE_CHANGED\":case 10:t.pullAtomId[r]=10;break;case\"ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED\":case 11:t.pullAtomId[r]=11;break;case\"ATOM_MOBILE_RADIO_POWER_STATE_CHANGED\":case 12:t.pullAtomId[r]=12;break;case\"ATOM_WIFI_RADIO_POWER_STATE_CHANGED\":case 13:t.pullAtomId[r]=13;break;case\"ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED\":case 14:t.pullAtomId[r]=14;break;case\"ATOM_MEMORY_FACTOR_STATE_CHANGED\":case 15:t.pullAtomId[r]=15;break;case\"ATOM_EXCESSIVE_CPU_USAGE_REPORTED\":case 16:t.pullAtomId[r]=16;break;case\"ATOM_CACHED_KILL_REPORTED\":case 17:t.pullAtomId[r]=17;break;case\"ATOM_PROCESS_MEMORY_STAT_REPORTED\":case 18:t.pullAtomId[r]=18;break;case\"ATOM_LAUNCHER_EVENT\":case 19:t.pullAtomId[r]=19;break;case\"ATOM_BATTERY_SAVER_MODE_STATE_CHANGED\":case 20:t.pullAtomId[r]=20;break;case\"ATOM_DEVICE_IDLE_MODE_STATE_CHANGED\":case 21:t.pullAtomId[r]=21;break;case\"ATOM_DEVICE_IDLING_MODE_STATE_CHANGED\":case 22:t.pullAtomId[r]=22;break;case\"ATOM_AUDIO_STATE_CHANGED\":case 23:t.pullAtomId[r]=23;break;case\"ATOM_MEDIA_CODEC_STATE_CHANGED\":case 24:t.pullAtomId[r]=24;break;case\"ATOM_CAMERA_STATE_CHANGED\":case 25:t.pullAtomId[r]=25;break;case\"ATOM_FLASHLIGHT_STATE_CHANGED\":case 26:t.pullAtomId[r]=26;break;case\"ATOM_UID_PROCESS_STATE_CHANGED\":case 27:t.pullAtomId[r]=27;break;case\"ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED\":case 28:t.pullAtomId[r]=28;break;case\"ATOM_SCREEN_STATE_CHANGED\":case 29:t.pullAtomId[r]=29;break;case\"ATOM_BATTERY_LEVEL_CHANGED\":case 30:t.pullAtomId[r]=30;break;case\"ATOM_CHARGING_STATE_CHANGED\":case 31:t.pullAtomId[r]=31;break;case\"ATOM_PLUGGED_STATE_CHANGED\":case 32:t.pullAtomId[r]=32;break;case\"ATOM_INTERACTIVE_STATE_CHANGED\":case 33:t.pullAtomId[r]=33;break;case\"ATOM_TOUCH_EVENT_REPORTED\":case 34:t.pullAtomId[r]=34;break;case\"ATOM_WAKEUP_ALARM_OCCURRED\":case 35:t.pullAtomId[r]=35;break;case\"ATOM_KERNEL_WAKEUP_REPORTED\":case 36:t.pullAtomId[r]=36;break;case\"ATOM_WIFI_LOCK_STATE_CHANGED\":case 37:t.pullAtomId[r]=37;break;case\"ATOM_WIFI_SIGNAL_STRENGTH_CHANGED\":case 38:t.pullAtomId[r]=38;break;case\"ATOM_WIFI_SCAN_STATE_CHANGED\":case 39:t.pullAtomId[r]=39;break;case\"ATOM_PHONE_SIGNAL_STRENGTH_CHANGED\":case 40:t.pullAtomId[r]=40;break;case\"ATOM_SETTING_CHANGED\":case 41:t.pullAtomId[r]=41;break;case\"ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED\":case 42:t.pullAtomId[r]=42;break;case\"ATOM_ISOLATED_UID_CHANGED\":case 43:t.pullAtomId[r]=43;break;case\"ATOM_PACKET_WAKEUP_OCCURRED\":case 44:t.pullAtomId[r]=44;break;case\"ATOM_WALL_CLOCK_TIME_SHIFTED\":case 45:t.pullAtomId[r]=45;break;case\"ATOM_ANOMALY_DETECTED\":case 46:t.pullAtomId[r]=46;break;case\"ATOM_APP_BREADCRUMB_REPORTED\":case 47:t.pullAtomId[r]=47;break;case\"ATOM_APP_START_OCCURRED\":case 48:t.pullAtomId[r]=48;break;case\"ATOM_APP_START_CANCELED\":case 49:t.pullAtomId[r]=49;break;case\"ATOM_APP_START_FULLY_DRAWN\":case 50:t.pullAtomId[r]=50;break;case\"ATOM_LMK_KILL_OCCURRED\":case 51:t.pullAtomId[r]=51;break;case\"ATOM_PICTURE_IN_PICTURE_STATE_CHANGED\":case 52:t.pullAtomId[r]=52;break;case\"ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED\":case 53:t.pullAtomId[r]=53;break;case\"ATOM_APP_START_MEMORY_STATE_CAPTURED\":case 55:t.pullAtomId[r]=55;break;case\"ATOM_SHUTDOWN_SEQUENCE_REPORTED\":case 56:t.pullAtomId[r]=56;break;case\"ATOM_BOOT_SEQUENCE_REPORTED\":case 57:t.pullAtomId[r]=57;break;case\"ATOM_OVERLAY_STATE_CHANGED\":case 59:t.pullAtomId[r]=59;break;case\"ATOM_FOREGROUND_SERVICE_STATE_CHANGED\":case 60:t.pullAtomId[r]=60;break;case\"ATOM_CALL_STATE_CHANGED\":case 61:t.pullAtomId[r]=61;break;case\"ATOM_KEYGUARD_STATE_CHANGED\":case 62:t.pullAtomId[r]=62;break;case\"ATOM_KEYGUARD_BOUNCER_STATE_CHANGED\":case 63:t.pullAtomId[r]=63;break;case\"ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED\":case 64:t.pullAtomId[r]=64;break;case\"ATOM_APP_DIED\":case 65:t.pullAtomId[r]=65;break;case\"ATOM_RESOURCE_CONFIGURATION_CHANGED\":case 66:t.pullAtomId[r]=66;break;case\"ATOM_BLUETOOTH_ENABLED_STATE_CHANGED\":case 67:t.pullAtomId[r]=67;break;case\"ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED\":case 68:t.pullAtomId[r]=68;break;case\"ATOM_GPS_SIGNAL_QUALITY_CHANGED\":case 69:t.pullAtomId[r]=69;break;case\"ATOM_USB_CONNECTOR_STATE_CHANGED\":case 70:t.pullAtomId[r]=70;break;case\"ATOM_SPEAKER_IMPEDANCE_REPORTED\":case 71:t.pullAtomId[r]=71;break;case\"ATOM_HARDWARE_FAILED\":case 72:t.pullAtomId[r]=72;break;case\"ATOM_PHYSICAL_DROP_DETECTED\":case 73:t.pullAtomId[r]=73;break;case\"ATOM_CHARGE_CYCLES_REPORTED\":case 74:t.pullAtomId[r]=74;break;case\"ATOM_MOBILE_CONNECTION_STATE_CHANGED\":case 75:t.pullAtomId[r]=75;break;case\"ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED\":case 76:t.pullAtomId[r]=76;break;case\"ATOM_USB_DEVICE_ATTACHED\":case 77:t.pullAtomId[r]=77;break;case\"ATOM_APP_CRASH_OCCURRED\":case 78:t.pullAtomId[r]=78;break;case\"ATOM_ANR_OCCURRED\":case 79:t.pullAtomId[r]=79;break;case\"ATOM_WTF_OCCURRED\":case 80:t.pullAtomId[r]=80;break;case\"ATOM_LOW_MEM_REPORTED\":case 81:t.pullAtomId[r]=81;break;case\"ATOM_GENERIC_ATOM\":case 82:t.pullAtomId[r]=82;break;case\"ATOM_VIBRATOR_STATE_CHANGED\":case 84:t.pullAtomId[r]=84;break;case\"ATOM_DEFERRED_JOB_STATS_REPORTED\":case 85:t.pullAtomId[r]=85;break;case\"ATOM_THERMAL_THROTTLING\":case 86:t.pullAtomId[r]=86;break;case\"ATOM_BIOMETRIC_ACQUIRED\":case 87:t.pullAtomId[r]=87;break;case\"ATOM_BIOMETRIC_AUTHENTICATED\":case 88:t.pullAtomId[r]=88;break;case\"ATOM_BIOMETRIC_ERROR_OCCURRED\":case 89:t.pullAtomId[r]=89;break;case\"ATOM_UI_EVENT_REPORTED\":case 90:t.pullAtomId[r]=90;break;case\"ATOM_BATTERY_HEALTH_SNAPSHOT\":case 91:t.pullAtomId[r]=91;break;case\"ATOM_SLOW_IO\":case 92:t.pullAtomId[r]=92;break;case\"ATOM_BATTERY_CAUSED_SHUTDOWN\":case 93:t.pullAtomId[r]=93;break;case\"ATOM_PHONE_SERVICE_STATE_CHANGED\":case 94:t.pullAtomId[r]=94;break;case\"ATOM_PHONE_STATE_CHANGED\":case 95:t.pullAtomId[r]=95;break;case\"ATOM_USER_RESTRICTION_CHANGED\":case 96:t.pullAtomId[r]=96;break;case\"ATOM_SETTINGS_UI_CHANGED\":case 97:t.pullAtomId[r]=97;break;case\"ATOM_CONNECTIVITY_STATE_CHANGED\":case 98:t.pullAtomId[r]=98;break;case\"ATOM_SERVICE_STATE_CHANGED\":case 99:t.pullAtomId[r]=99;break;case\"ATOM_SERVICE_LAUNCH_REPORTED\":case 100:t.pullAtomId[r]=100;break;case\"ATOM_FLAG_FLIP_UPDATE_OCCURRED\":case 101:t.pullAtomId[r]=101;break;case\"ATOM_BINARY_PUSH_STATE_CHANGED\":case 102:t.pullAtomId[r]=102;break;case\"ATOM_DEVICE_POLICY_EVENT\":case 103:t.pullAtomId[r]=103;break;case\"ATOM_DOCS_UI_FILE_OP_CANCELED\":case 104:t.pullAtomId[r]=104;break;case\"ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED\":case 105:t.pullAtomId[r]=105;break;case\"ATOM_DOCS_UI_FILE_OP_FAILURE\":case 106:t.pullAtomId[r]=106;break;case\"ATOM_DOCS_UI_PROVIDER_FILE_OP\":case 107:t.pullAtomId[r]=107;break;case\"ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST\":case 108:t.pullAtomId[r]=108;break;case\"ATOM_DOCS_UI_LAUNCH_REPORTED\":case 109:t.pullAtomId[r]=109;break;case\"ATOM_DOCS_UI_ROOT_VISITED\":case 110:t.pullAtomId[r]=110;break;case\"ATOM_DOCS_UI_STARTUP_MS\":case 111:t.pullAtomId[r]=111;break;case\"ATOM_DOCS_UI_USER_ACTION_REPORTED\":case 112:t.pullAtomId[r]=112;break;case\"ATOM_WIFI_ENABLED_STATE_CHANGED\":case 113:t.pullAtomId[r]=113;break;case\"ATOM_WIFI_RUNNING_STATE_CHANGED\":case 114:t.pullAtomId[r]=114;break;case\"ATOM_APP_COMPACTED\":case 115:t.pullAtomId[r]=115;break;case\"ATOM_NETWORK_DNS_EVENT_REPORTED\":case 116:t.pullAtomId[r]=116;break;case\"ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED\":case 117:t.pullAtomId[r]=117;break;case\"ATOM_DOCS_UI_PICK_RESULT_REPORTED\":case 118:t.pullAtomId[r]=118;break;case\"ATOM_DOCS_UI_SEARCH_MODE_REPORTED\":case 119:t.pullAtomId[r]=119;break;case\"ATOM_DOCS_UI_SEARCH_TYPE_REPORTED\":case 120:t.pullAtomId[r]=120;break;case\"ATOM_DATA_STALL_EVENT\":case 121:t.pullAtomId[r]=121;break;case\"ATOM_RESCUE_PARTY_RESET_REPORTED\":case 122:t.pullAtomId[r]=122;break;case\"ATOM_SIGNED_CONFIG_REPORTED\":case 123:t.pullAtomId[r]=123;break;case\"ATOM_GNSS_NI_EVENT_REPORTED\":case 124:t.pullAtomId[r]=124;break;case\"ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT\":case 125:t.pullAtomId[r]=125;break;case\"ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED\":case 126:t.pullAtomId[r]=126;break;case\"ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED\":case 127:t.pullAtomId[r]=127;break;case\"ATOM_APP_DOWNGRADED\":case 128:t.pullAtomId[r]=128;break;case\"ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED\":case 129:t.pullAtomId[r]=129;break;case\"ATOM_LOW_STORAGE_STATE_CHANGED\":case 130:t.pullAtomId[r]=130;break;case\"ATOM_GNSS_NFW_NOTIFICATION_REPORTED\":case 131:t.pullAtomId[r]=131;break;case\"ATOM_GNSS_CONFIGURATION_REPORTED\":case 132:t.pullAtomId[r]=132;break;case\"ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED\":case 133:t.pullAtomId[r]=133;break;case\"ATOM_NFC_ERROR_OCCURRED\":case 134:t.pullAtomId[r]=134;break;case\"ATOM_NFC_STATE_CHANGED\":case 135:t.pullAtomId[r]=135;break;case\"ATOM_NFC_BEAM_OCCURRED\":case 136:t.pullAtomId[r]=136;break;case\"ATOM_NFC_CARDEMULATION_OCCURRED\":case 137:t.pullAtomId[r]=137;break;case\"ATOM_NFC_TAG_OCCURRED\":case 138:t.pullAtomId[r]=138;break;case\"ATOM_NFC_HCE_TRANSACTION_OCCURRED\":case 139:t.pullAtomId[r]=139;break;case\"ATOM_SE_STATE_CHANGED\":case 140:t.pullAtomId[r]=140;break;case\"ATOM_SE_OMAPI_REPORTED\":case 141:t.pullAtomId[r]=141;break;case\"ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED\":case 142:t.pullAtomId[r]=142;break;case\"ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED\":case 143:t.pullAtomId[r]=143;break;case\"ATOM_ADB_CONNECTION_CHANGED\":case 144:t.pullAtomId[r]=144;break;case\"ATOM_SPEECH_DSP_STAT_REPORTED\":case 145:t.pullAtomId[r]=145;break;case\"ATOM_USB_CONTAMINANT_REPORTED\":case 146:t.pullAtomId[r]=146;break;case\"ATOM_WATCHDOG_ROLLBACK_OCCURRED\":case 147:t.pullAtomId[r]=147;break;case\"ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED\":case 148:t.pullAtomId[r]=148;break;case\"ATOM_BUBBLE_UI_CHANGED\":case 149:t.pullAtomId[r]=149;break;case\"ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED\":case 150:t.pullAtomId[r]=150;break;case\"ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED\":case 151:t.pullAtomId[r]=151;break;case\"ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED\":case 152:t.pullAtomId[r]=152;break;case\"ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED\":case 153:t.pullAtomId[r]=153;break;case\"ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED\":case 154:t.pullAtomId[r]=154;break;case\"ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED\":case 155:t.pullAtomId[r]=155;break;case\"ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED\":case 156:t.pullAtomId[r]=156;break;case\"ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED\":case 157:t.pullAtomId[r]=157;break;case\"ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED\":case 158:t.pullAtomId[r]=158;break;case\"ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED\":case 159:t.pullAtomId[r]=159;break;case\"ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED\":case 160:t.pullAtomId[r]=160;break;case\"ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED\":case 161:t.pullAtomId[r]=161;break;case\"ATOM_BLUETOOTH_DEVICE_INFO_REPORTED\":case 162:t.pullAtomId[r]=162;break;case\"ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED\":case 163:t.pullAtomId[r]=163;break;case\"ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED\":case 164:t.pullAtomId[r]=164;break;case\"ATOM_BLUETOOTH_BOND_STATE_CHANGED\":case 165:t.pullAtomId[r]=165;break;case\"ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED\":case 166:t.pullAtomId[r]=166;break;case\"ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED\":case 167:t.pullAtomId[r]=167;break;case\"ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED\":case 168:t.pullAtomId[r]=168;break;case\"ATOM_PROCESS_START_TIME\":case 169:t.pullAtomId[r]=169;break;case\"ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED\":case 170:t.pullAtomId[r]=170;break;case\"ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED\":case 171:t.pullAtomId[r]=171;break;case\"ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED\":case 172:t.pullAtomId[r]=172;break;case\"ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED\":case 173:t.pullAtomId[r]=173;break;case\"ATOM_ASSIST_GESTURE_STAGE_REPORTED\":case 174:t.pullAtomId[r]=174;break;case\"ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED\":case 175:t.pullAtomId[r]=175;break;case\"ATOM_ASSIST_GESTURE_PROGRESS_REPORTED\":case 176:t.pullAtomId[r]=176;break;case\"ATOM_TOUCH_GESTURE_CLASSIFIED\":case 177:t.pullAtomId[r]=177;break;case\"ATOM_HIDDEN_API_USED\":case 178:t.pullAtomId[r]=178;break;case\"ATOM_STYLE_UI_CHANGED\":case 179:t.pullAtomId[r]=179;break;case\"ATOM_PRIVACY_INDICATORS_INTERACTED\":case 180:t.pullAtomId[r]=180;break;case\"ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED\":case 181:t.pullAtomId[r]=181;break;case\"ATOM_NETWORK_STACK_REPORTED\":case 182:t.pullAtomId[r]=182;break;case\"ATOM_APP_MOVED_STORAGE_REPORTED\":case 183:t.pullAtomId[r]=183;break;case\"ATOM_BIOMETRIC_ENROLLED\":case 184:t.pullAtomId[r]=184;break;case\"ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED\":case 185:t.pullAtomId[r]=185;break;case\"ATOM_TOMB_STONE_OCCURRED\":case 186:t.pullAtomId[r]=186;break;case\"ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED\":case 187:t.pullAtomId[r]=187;break;case\"ATOM_INTELLIGENCE_EVENT_REPORTED\":case 188:t.pullAtomId[r]=188;break;case\"ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED\":case 189:t.pullAtomId[r]=189;break;case\"ATOM_ROLE_REQUEST_RESULT_REPORTED\":case 190:t.pullAtomId[r]=190;break;case\"ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED\":case 191:t.pullAtomId[r]=191;break;case\"ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED\":case 192:t.pullAtomId[r]=192;break;case\"ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED\":case 193:t.pullAtomId[r]=193;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED\":case 194:t.pullAtomId[r]=194;break;case\"ATOM_MEDIAMETRICS_CODEC_REPORTED\":case 195:t.pullAtomId[r]=195;break;case\"ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED\":case 196:t.pullAtomId[r]=196;break;case\"ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED\":case 197:t.pullAtomId[r]=197;break;case\"ATOM_MEDIAMETRICS_MEDIADRM_REPORTED\":case 198:t.pullAtomId[r]=198;break;case\"ATOM_MEDIAMETRICS_NUPLAYER_REPORTED\":case 199:t.pullAtomId[r]=199;break;case\"ATOM_MEDIAMETRICS_RECORDER_REPORTED\":case 200:t.pullAtomId[r]=200;break;case\"ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED\":case 201:t.pullAtomId[r]=201;break;case\"ATOM_CAR_POWER_STATE_CHANGED\":case 203:t.pullAtomId[r]=203;break;case\"ATOM_GARAGE_MODE_INFO\":case 204:t.pullAtomId[r]=204;break;case\"ATOM_TEST_ATOM_REPORTED\":case 205:t.pullAtomId[r]=205;break;case\"ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED\":case 206:t.pullAtomId[r]=206;break;case\"ATOM_CONTENT_CAPTURE_SERVICE_EVENTS\":case 207:t.pullAtomId[r]=207;break;case\"ATOM_CONTENT_CAPTURE_SESSION_EVENTS\":case 208:t.pullAtomId[r]=208;break;case\"ATOM_CONTENT_CAPTURE_FLUSHED\":case 209:t.pullAtomId[r]=209;break;case\"ATOM_LOCATION_MANAGER_API_USAGE_REPORTED\":case 210:t.pullAtomId[r]=210;break;case\"ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED\":case 211:t.pullAtomId[r]=211;break;case\"ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT\":case 212:t.pullAtomId[r]=212;break;case\"ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS\":case 213:t.pullAtomId[r]=213;break;case\"ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION\":case 214:t.pullAtomId[r]=214;break;case\"ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED\":case 215:t.pullAtomId[r]=215;break;case\"ATOM_APP_PERMISSION_FRAGMENT_VIEWED\":case 216:t.pullAtomId[r]=216;break;case\"ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED\":case 217:t.pullAtomId[r]=217;break;case\"ATOM_PERMISSION_APPS_FRAGMENT_VIEWED\":case 218:t.pullAtomId[r]=218;break;case\"ATOM_TEXT_SELECTION_EVENT\":case 219:t.pullAtomId[r]=219;break;case\"ATOM_TEXT_LINKIFY_EVENT\":case 220:t.pullAtomId[r]=220;break;case\"ATOM_CONVERSATION_ACTIONS_EVENT\":case 221:t.pullAtomId[r]=221;break;case\"ATOM_LANGUAGE_DETECTION_EVENT\":case 222:t.pullAtomId[r]=222;break;case\"ATOM_EXCLUSION_RECT_STATE_CHANGED\":case 223:t.pullAtomId[r]=223;break;case\"ATOM_BACK_GESTURE_REPORTED_REPORTED\":case 224:t.pullAtomId[r]=224;break;case\"ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED\":case 225:t.pullAtomId[r]=225;break;case\"ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED\":case 226:t.pullAtomId[r]=226;break;case\"ATOM_CAMERA_ACTION_EVENT\":case 227:t.pullAtomId[r]=227;break;case\"ATOM_APP_COMPATIBILITY_CHANGE_REPORTED\":case 228:t.pullAtomId[r]=228;break;case\"ATOM_PERFETTO_UPLOADED\":case 229:t.pullAtomId[r]=229;break;case\"ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED\":case 230:t.pullAtomId[r]=230;break;case\"ATOM_MEDIA_PROVIDER_SCAN_OCCURRED\":case 233:t.pullAtomId[r]=233;break;case\"ATOM_MEDIA_CONTENT_DELETED\":case 234:t.pullAtomId[r]=234;break;case\"ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED\":case 235:t.pullAtomId[r]=235;break;case\"ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED\":case 236:t.pullAtomId[r]=236;break;case\"ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED\":case 237:t.pullAtomId[r]=237;break;case\"ATOM_REBOOT_ESCROW_RECOVERY_REPORTED\":case 238:t.pullAtomId[r]=238;break;case\"ATOM_BOOT_TIME_EVENT_DURATION_REPORTED\":case 239:t.pullAtomId[r]=239;break;case\"ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED\":case 240:t.pullAtomId[r]=240;break;case\"ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED\":case 241:t.pullAtomId[r]=241;break;case\"ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED\":case 242:t.pullAtomId[r]=242;break;case\"ATOM_USERSPACE_REBOOT_REPORTED\":case 243:t.pullAtomId[r]=243;break;case\"ATOM_NOTIFICATION_REPORTED\":case 244:t.pullAtomId[r]=244;break;case\"ATOM_NOTIFICATION_PANEL_REPORTED\":case 245:t.pullAtomId[r]=245;break;case\"ATOM_NOTIFICATION_CHANNEL_MODIFIED\":case 246:t.pullAtomId[r]=246;break;case\"ATOM_INTEGRITY_CHECK_RESULT_REPORTED\":case 247:t.pullAtomId[r]=247;break;case\"ATOM_INTEGRITY_RULES_PUSHED\":case 248:t.pullAtomId[r]=248;break;case\"ATOM_CB_MESSAGE_REPORTED\":case 249:t.pullAtomId[r]=249;break;case\"ATOM_CB_MESSAGE_ERROR\":case 250:t.pullAtomId[r]=250;break;case\"ATOM_WIFI_HEALTH_STAT_REPORTED\":case 251:t.pullAtomId[r]=251;break;case\"ATOM_WIFI_FAILURE_STAT_REPORTED\":case 252:t.pullAtomId[r]=252;break;case\"ATOM_WIFI_CONNECTION_RESULT_REPORTED\":case 253:t.pullAtomId[r]=253;break;case\"ATOM_APP_FREEZE_CHANGED\":case 254:t.pullAtomId[r]=254;break;case\"ATOM_SNAPSHOT_MERGE_REPORTED\":case 255:t.pullAtomId[r]=255;break;case\"ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED\":case 256:t.pullAtomId[r]=256;break;case\"ATOM_DISPLAY_JANK_REPORTED\":case 257:t.pullAtomId[r]=257;break;case\"ATOM_APP_STANDBY_BUCKET_CHANGED\":case 258:t.pullAtomId[r]=258;break;case\"ATOM_SHARESHEET_STARTED\":case 259:t.pullAtomId[r]=259;break;case\"ATOM_RANKING_SELECTED\":case 260:t.pullAtomId[r]=260;break;case\"ATOM_TVSETTINGS_UI_INTERACTED\":case 261:t.pullAtomId[r]=261;break;case\"ATOM_LAUNCHER_SNAPSHOT\":case 262:t.pullAtomId[r]=262;break;case\"ATOM_PACKAGE_INSTALLER_V2_REPORTED\":case 263:t.pullAtomId[r]=263;break;case\"ATOM_USER_LIFECYCLE_JOURNEY_REPORTED\":case 264:t.pullAtomId[r]=264;break;case\"ATOM_USER_LIFECYCLE_EVENT_OCCURRED\":case 265:t.pullAtomId[r]=265;break;case\"ATOM_ACCESSIBILITY_SHORTCUT_REPORTED\":case 266:t.pullAtomId[r]=266;break;case\"ATOM_ACCESSIBILITY_SERVICE_REPORTED\":case 267:t.pullAtomId[r]=267;break;case\"ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED\":case 268:t.pullAtomId[r]=268;break;case\"ATOM_APP_USAGE_EVENT_OCCURRED\":case 269:t.pullAtomId[r]=269;break;case\"ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED\":case 270:t.pullAtomId[r]=270;break;case\"ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED\":case 271:t.pullAtomId[r]=271;break;case\"ATOM_AUTO_REVOKED_APP_INTERACTION\":case 272:t.pullAtomId[r]=272;break;case\"ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION\":case 273:t.pullAtomId[r]=273;break;case\"ATOM_EVS_USAGE_STATS_REPORTED\":case 274:t.pullAtomId[r]=274;break;case\"ATOM_AUDIO_POWER_USAGE_DATA_REPORTED\":case 275:t.pullAtomId[r]=275;break;case\"ATOM_TV_TUNER_STATE_CHANGED\":case 276:t.pullAtomId[r]=276;break;case\"ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED\":case 277:t.pullAtomId[r]=277;break;case\"ATOM_CB_MESSAGE_FILTERED\":case 278:t.pullAtomId[r]=278;break;case\"ATOM_TV_TUNER_DVR_STATUS\":case 279:t.pullAtomId[r]=279;break;case\"ATOM_TV_CAS_SESSION_OPEN_STATUS\":case 280:t.pullAtomId[r]=280;break;case\"ATOM_ASSISTANT_INVOCATION_REPORTED\":case 281:t.pullAtomId[r]=281;break;case\"ATOM_DISPLAY_WAKE_REPORTED\":case 282:t.pullAtomId[r]=282;break;case\"ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED\":case 283:t.pullAtomId[r]=283;break;case\"ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED\":case 284:t.pullAtomId[r]=284;break;case\"ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED\":case 285:t.pullAtomId[r]=285;break;case\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED\":case 286:t.pullAtomId[r]=286;break;case\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED\":case 287:t.pullAtomId[r]=287;break;case\"ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED\":case 288:t.pullAtomId[r]=288;break;case\"ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED\":case 289:t.pullAtomId[r]=289;break;case\"ATOM_NETWORK_IP_PROVISIONING_REPORTED\":case 290:t.pullAtomId[r]=290;break;case\"ATOM_NETWORK_DHCP_RENEW_REPORTED\":case 291:t.pullAtomId[r]=291;break;case\"ATOM_NETWORK_VALIDATION_REPORTED\":case 292:t.pullAtomId[r]=292;break;case\"ATOM_NETWORK_STACK_QUIRK_REPORTED\":case 293:t.pullAtomId[r]=293;break;case\"ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED\":case 294:t.pullAtomId[r]=294;break;case\"ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED\":case 295:t.pullAtomId[r]=295;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED\":case 296:t.pullAtomId[r]=296;break;case\"ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED\":case 297:t.pullAtomId[r]=297;break;case\"ATOM_BLOB_COMMITTED\":case 298:t.pullAtomId[r]=298;break;case\"ATOM_BLOB_LEASED\":case 299:t.pullAtomId[r]=299;break;case\"ATOM_BLOB_OPENED\":case 300:t.pullAtomId[r]=300;break;case\"ATOM_CONTACTS_PROVIDER_STATUS_REPORTED\":case 301:t.pullAtomId[r]=301;break;case\"ATOM_KEYSTORE_KEY_EVENT_REPORTED\":case 302:t.pullAtomId[r]=302;break;case\"ATOM_NETWORK_TETHERING_REPORTED\":case 303:t.pullAtomId[r]=303;break;case\"ATOM_IME_TOUCH_REPORTED\":case 304:t.pullAtomId[r]=304;break;case\"ATOM_UI_INTERACTION_FRAME_INFO_REPORTED\":case 305:t.pullAtomId[r]=305;break;case\"ATOM_UI_ACTION_LATENCY_REPORTED\":case 306:t.pullAtomId[r]=306;break;case\"ATOM_WIFI_DISCONNECT_REPORTED\":case 307:t.pullAtomId[r]=307;break;case\"ATOM_WIFI_CONNECTION_STATE_CHANGED\":case 308:t.pullAtomId[r]=308;break;case\"ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED\":case 309:t.pullAtomId[r]=309;break;case\"ATOM_HDMI_CEC_MESSAGE_REPORTED\":case 310:t.pullAtomId[r]=310;break;case\"ATOM_AIRPLANE_MODE\":case 311:t.pullAtomId[r]=311;break;case\"ATOM_MODEM_RESTART\":case 312:t.pullAtomId[r]=312;break;case\"ATOM_CARRIER_ID_MISMATCH_REPORTED\":case 313:t.pullAtomId[r]=313;break;case\"ATOM_CARRIER_ID_TABLE_UPDATED\":case 314:t.pullAtomId[r]=314;break;case\"ATOM_DATA_STALL_RECOVERY_REPORTED\":case 315:t.pullAtomId[r]=315;break;case\"ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED\":case 316:t.pullAtomId[r]=316;break;case\"ATOM_TLS_HANDSHAKE_REPORTED\":case 317:t.pullAtomId[r]=317;break;case\"ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED\":case 318:t.pullAtomId[r]=318;break;case\"ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED\":case 319:t.pullAtomId[r]=319;break;case\"ATOM_MEDIAMETRICS_PLAYBACK_REPORTED\":case 320:t.pullAtomId[r]=320;break;case\"ATOM_MEDIA_NETWORK_INFO_CHANGED\":case 321:t.pullAtomId[r]=321;break;case\"ATOM_MEDIA_PLAYBACK_STATE_CHANGED\":case 322:t.pullAtomId[r]=322;break;case\"ATOM_MEDIA_PLAYBACK_ERROR_REPORTED\":case 323:t.pullAtomId[r]=323;break;case\"ATOM_MEDIA_PLAYBACK_TRACK_CHANGED\":case 324:t.pullAtomId[r]=324;break;case\"ATOM_WIFI_SCAN_REPORTED\":case 325:t.pullAtomId[r]=325;break;case\"ATOM_WIFI_PNO_SCAN_REPORTED\":case 326:t.pullAtomId[r]=326;break;case\"ATOM_TIF_TUNE_CHANGED\":case 327:t.pullAtomId[r]=327;break;case\"ATOM_AUTO_ROTATE_REPORTED\":case 328:t.pullAtomId[r]=328;break;case\"ATOM_PERFETTO_TRIGGER\":case 329:t.pullAtomId[r]=329;break;case\"ATOM_TRANSCODING_DATA\":case 330:t.pullAtomId[r]=330;break;case\"ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED\":case 331:t.pullAtomId[r]=331;break;case\"ATOM_DEVICE_ROTATED\":case 333:t.pullAtomId[r]=333;break;case\"ATOM_SIM_SPECIFIC_SETTINGS_RESTORED\":case 334:t.pullAtomId[r]=334;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED\":case 335:t.pullAtomId[r]=335;break;case\"ATOM_PIN_STORAGE_EVENT\":case 336:t.pullAtomId[r]=336;break;case\"ATOM_FACE_DOWN_REPORTED\":case 337:t.pullAtomId[r]=337;break;case\"ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED\":case 338:t.pullAtomId[r]=338;break;case\"ATOM_REBOOT_ESCROW_PREPARATION_REPORTED\":case 339:t.pullAtomId[r]=339;break;case\"ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED\":case 340:t.pullAtomId[r]=340;break;case\"ATOM_REBOOT_ESCROW_REBOOT_REPORTED\":case 341:t.pullAtomId[r]=341;break;case\"ATOM_BINDER_LATENCY_REPORTED\":case 342:t.pullAtomId[r]=342;break;case\"ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED\":case 343:t.pullAtomId[r]=343;break;case\"ATOM_MEDIA_TRANSCODING_SESSION_ENDED\":case 344:t.pullAtomId[r]=344;break;case\"ATOM_MAGNIFICATION_USAGE_REPORTED\":case 345:t.pullAtomId[r]=345;break;case\"ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED\":case 346:t.pullAtomId[r]=346;break;case\"ATOM_APP_SEARCH_CALL_STATS_REPORTED\":case 347:t.pullAtomId[r]=347;break;case\"ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED\":case 348:t.pullAtomId[r]=348;break;case\"ATOM_DEVICE_CONTROL_CHANGED\":case 349:t.pullAtomId[r]=349;break;case\"ATOM_DEVICE_STATE_CHANGED\":case 350:t.pullAtomId[r]=350;break;case\"ATOM_INPUTDEVICE_REGISTERED\":case 351:t.pullAtomId[r]=351;break;case\"ATOM_SMARTSPACE_CARD_REPORTED\":case 352:t.pullAtomId[r]=352;break;case\"ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED\":case 353:t.pullAtomId[r]=353;break;case\"ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED\":case 354:t.pullAtomId[r]=354;break;case\"ATOM_AUTH_ENROLL_ACTION_INVOKED\":case 355:t.pullAtomId[r]=355;break;case\"ATOM_AUTH_DEPRECATED_API_USED\":case 356:t.pullAtomId[r]=356;break;case\"ATOM_UNATTENDED_REBOOT_OCCURRED\":case 357:t.pullAtomId[r]=357;break;case\"ATOM_LONG_REBOOT_BLOCKING_REPORTED\":case 358:t.pullAtomId[r]=358;break;case\"ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED\":case 359:t.pullAtomId[r]=359;break;case\"ATOM_FDTRACK_EVENT_OCCURRED\":case 364:t.pullAtomId[r]=364;break;case\"ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED\":case 365:t.pullAtomId[r]=365;break;case\"ATOM_ALARM_BATCH_DELIVERED\":case 367:t.pullAtomId[r]=367;break;case\"ATOM_ALARM_SCHEDULED\":case 368:t.pullAtomId[r]=368;break;case\"ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED\":case 369:t.pullAtomId[r]=369;break;case\"ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED\":case 370:t.pullAtomId[r]=370;break;case\"ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED\":case 371:t.pullAtomId[r]=371;break;case\"ATOM_APP_SEARCH_QUERY_STATS_REPORTED\":case 372:t.pullAtomId[r]=372;break;case\"ATOM_APP_PROCESS_DIED\":case 373:t.pullAtomId[r]=373;break;case\"ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED\":case 374:t.pullAtomId[r]=374;break;case\"ATOM_SLOW_INPUT_EVENT_REPORTED\":case 375:t.pullAtomId[r]=375;break;case\"ATOM_ANR_OCCURRED_PROCESSING_STARTED\":case 376:t.pullAtomId[r]=376;break;case\"ATOM_APP_SEARCH_REMOVE_STATS_REPORTED\":case 377:t.pullAtomId[r]=377;break;case\"ATOM_MEDIA_CODEC_REPORTED\":case 378:t.pullAtomId[r]=378;break;case\"ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION\":case 379:t.pullAtomId[r]=379;break;case\"ATOM_PERMISSION_DETAILS_INTERACTION\":case 380:t.pullAtomId[r]=380;break;case\"ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION\":case 381:t.pullAtomId[r]=381;break;case\"ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION\":case 382:t.pullAtomId[r]=382;break;case\"ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED\":case 383:t.pullAtomId[r]=383;break;case\"ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT\":case 384:t.pullAtomId[r]=384;break;case\"ATOM_APP_COMPAT_STATE_CHANGED\":case 386:t.pullAtomId[r]=386;break;case\"ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED\":case 387:t.pullAtomId[r]=387;break;case\"ATOM_SPLITSCREEN_UI_CHANGED\":case 388:t.pullAtomId[r]=388;break;case\"ATOM_NETWORK_DNS_HANDSHAKE_REPORTED\":case 389:t.pullAtomId[r]=389;break;case\"ATOM_BLUETOOTH_CODE_PATH_COUNTER\":case 390:t.pullAtomId[r]=390;break;case\"ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY\":case 392:t.pullAtomId[r]=392;break;case\"ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED\":case 393:t.pullAtomId[r]=393;break;case\"ATOM_NEURALNETWORKS_COMPILATION_COMPLETED\":case 394:t.pullAtomId[r]=394;break;case\"ATOM_NEURALNETWORKS_EXECUTION_COMPLETED\":case 395:t.pullAtomId[r]=395;break;case\"ATOM_NEURALNETWORKS_COMPILATION_FAILED\":case 396:t.pullAtomId[r]=396;break;case\"ATOM_NEURALNETWORKS_EXECUTION_FAILED\":case 397:t.pullAtomId[r]=397;break;case\"ATOM_CONTEXT_HUB_BOOTED\":case 398:t.pullAtomId[r]=398;break;case\"ATOM_CONTEXT_HUB_RESTARTED\":case 399:t.pullAtomId[r]=399;break;case\"ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED\":case 400:t.pullAtomId[r]=400;break;case\"ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED\":case 401:t.pullAtomId[r]=401;break;case\"ATOM_UWB_SESSION_INITED\":case 402:t.pullAtomId[r]=402;break;case\"ATOM_UWB_SESSION_CLOSED\":case 403:t.pullAtomId[r]=403;break;case\"ATOM_UWB_FIRST_RANGING_RECEIVED\":case 404:t.pullAtomId[r]=404;break;case\"ATOM_UWB_RANGING_MEASUREMENT_RECEIVED\":case 405:t.pullAtomId[r]=405;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED\":case 406:t.pullAtomId[r]=406;break;case\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED\":case 407:t.pullAtomId[r]=407;break;case\"ATOM_CLIPBOARD_CLEARED\":case 408:t.pullAtomId[r]=408;break;case\"ATOM_VM_CREATION_REQUESTED\":case 409:t.pullAtomId[r]=409;break;case\"ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED\":case 410:t.pullAtomId[r]=410;break;case\"ATOM_APPLICATION_LOCALES_CHANGED\":case 412:t.pullAtomId[r]=412;break;case\"ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED\":case 413:t.pullAtomId[r]=413;break;case\"ATOM_FOLD_STATE_DURATION_REPORTED\":case 414:t.pullAtomId[r]=414;break;case\"ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED\":case 415:t.pullAtomId[r]=415;break;case\"ATOM_DISPLAY_HBM_STATE_CHANGED\":case 416:t.pullAtomId[r]=416;break;case\"ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED\":case 417:t.pullAtomId[r]=417;break;case\"ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED\":case 418:t.pullAtomId[r]=418;break;case\"ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED\":case 419:t.pullAtomId[r]=419;break;case\"ATOM_VBMETA_DIGEST_REPORTED\":case 420:t.pullAtomId[r]=420;break;case\"ATOM_APEX_INFO_GATHERED\":case 421:t.pullAtomId[r]=421;break;case\"ATOM_PVM_INFO_GATHERED\":case 422:t.pullAtomId[r]=422;break;case\"ATOM_WEAR_SETTINGS_UI_INTERACTED\":case 423:t.pullAtomId[r]=423;break;case\"ATOM_TRACING_SERVICE_REPORT_EVENT\":case 424:t.pullAtomId[r]=424;break;case\"ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED\":case 425:t.pullAtomId[r]=425;break;case\"ATOM_LAUNCHER_LATENCY\":case 426:t.pullAtomId[r]=426;break;case\"ATOM_DROPBOX_ENTRY_DROPPED\":case 427:t.pullAtomId[r]=427;break;case\"ATOM_WIFI_P2P_CONNECTION_REPORTED\":case 428:t.pullAtomId[r]=428;break;case\"ATOM_GAME_STATE_CHANGED\":case 429:t.pullAtomId[r]=429;break;case\"ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED\":case 430:t.pullAtomId[r]=430;break;case\"ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED\":case 431:t.pullAtomId[r]=431;break;case\"ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED\":case 432:t.pullAtomId[r]=432;break;case\"ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED\":case 433:t.pullAtomId[r]=433;break;case\"ATOM_HOTWORD_DETECTOR_EVENTS\":case 434:t.pullAtomId[r]=434;break;case\"ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED\":case 437:t.pullAtomId[r]=437;break;case\"ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED\":case 440:t.pullAtomId[r]=440;break;case\"ATOM_APP_BACKGROUND_RESTRICTIONS_INFO\":case 441:t.pullAtomId[r]=441;break;case\"ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED\":case 442:t.pullAtomId[r]=442;break;case\"ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED\":case 443:t.pullAtomId[r]=443;break;case\"ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED\":case 444:t.pullAtomId[r]=444;break;case\"ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED\":case 445:t.pullAtomId[r]=445;break;case\"ATOM_GNSS_PSDS_DOWNLOAD_REPORTED\":case 446:t.pullAtomId[r]=446;break;case\"ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED\":case 447:t.pullAtomId[r]=447;break;case\"ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED\":case 448:t.pullAtomId[r]=448;break;case\"ATOM_DREAM_UI_EVENT_REPORTED\":case 449:t.pullAtomId[r]=449;break;case\"ATOM_TASK_MANAGER_EVENT_REPORTED\":case 450:t.pullAtomId[r]=450;break;case\"ATOM_CDM_ASSOCIATION_ACTION\":case 451:t.pullAtomId[r]=451;break;case\"ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED\":case 452:t.pullAtomId[r]=452;break;case\"ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED\":case 453:t.pullAtomId[r]=453;break;case\"ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED\":case 454:t.pullAtomId[r]=454;break;case\"ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED\":case 455:t.pullAtomId[r]=455;break;case\"ATOM_UWB_DEVICE_ERROR_REPORTED\":case 456:t.pullAtomId[r]=456;break;case\"ATOM_ISOLATED_COMPILATION_SCHEDULED\":case 457:t.pullAtomId[r]=457;break;case\"ATOM_ISOLATED_COMPILATION_ENDED\":case 458:t.pullAtomId[r]=458;break;case\"ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE\":case 459:t.pullAtomId[r]=459;break;case\"ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED\":case 460:t.pullAtomId[r]=460;break;case\"ATOM_TELEPHONY_ANOMALY_DETECTED\":case 461:t.pullAtomId[r]=461;break;case\"ATOM_LETTERBOX_POSITION_CHANGED\":case 462:t.pullAtomId[r]=462;break;case\"ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT\":case 463:t.pullAtomId[r]=463;break;case\"ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO\":case 464:t.pullAtomId[r]=464;break;case\"ATOM_REMOTE_KEY_PROVISIONING_TIMING\":case 465:t.pullAtomId[r]=465;break;case\"ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT\":case 466:t.pullAtomId[r]=466;break;case\"ATOM_SYNC_EXEMPTION_OCCURRED\":case 468:t.pullAtomId[r]=468;break;case\"ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED\":case 469:t.pullAtomId[r]=469;break;case\"ATOM_DOCK_STATE_CHANGED\":case 470:t.pullAtomId[r]=470;break;case\"ATOM_SAFETY_SOURCE_STATE_COLLECTED\":case 471:t.pullAtomId[r]=471;break;case\"ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED\":case 472:t.pullAtomId[r]=472;break;case\"ATOM_SAFETY_CENTER_INTERACTION_REPORTED\":case 473:t.pullAtomId[r]=473;break;case\"ATOM_SETTINGS_PROVIDER_SETTING_CHANGED\":case 474:t.pullAtomId[r]=474;break;case\"ATOM_BROADCAST_DELIVERY_EVENT_REPORTED\":case 475:t.pullAtomId[r]=475;break;case\"ATOM_SERVICE_REQUEST_EVENT_REPORTED\":case 476:t.pullAtomId[r]=476;break;case\"ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED\":case 477:t.pullAtomId[r]=477;break;case\"ATOM_BLUETOOTH_DEVICE_NAME_REPORTED\":case 478:t.pullAtomId[r]=478;break;case\"ATOM_CB_CONFIG_UPDATED\":case 479:t.pullAtomId[r]=479;break;case\"ATOM_CB_MODULE_ERROR_REPORTED\":case 480:t.pullAtomId[r]=480;break;case\"ATOM_CB_SERVICE_FEATURE_CHANGED\":case 481:t.pullAtomId[r]=481;break;case\"ATOM_CB_RECEIVER_FEATURE_CHANGED\":case 482:t.pullAtomId[r]=482;break;case\"ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION\":case 484:t.pullAtomId[r]=484;break;case\"ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION\":case 485:t.pullAtomId[r]=485;break;case\"ATOM_PRIVACY_SIGNALS_JOB_FAILURE\":case 486:t.pullAtomId[r]=486;break;case\"ATOM_VIBRATION_REPORTED\":case 487:t.pullAtomId[r]=487;break;case\"ATOM_UWB_RANGING_START\":case 489:t.pullAtomId[r]=489;break;case\"ATOM_APP_COMPACTED_V2\":case 491:t.pullAtomId[r]=491;break;case\"ATOM_DISPLAY_BRIGHTNESS_CHANGED\":case 494:t.pullAtomId[r]=494;break;case\"ATOM_ACTIVITY_ACTION_BLOCKED\":case 495:t.pullAtomId[r]=495;break;case\"ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED\":case 504:t.pullAtomId[r]=504;break;case\"ATOM_VM_BOOTED\":case 505:t.pullAtomId[r]=505;break;case\"ATOM_VM_EXITED\":case 506:t.pullAtomId[r]=506;break;case\"ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED\":case 507:t.pullAtomId[r]=507;break;case\"ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED\":case 508:t.pullAtomId[r]=508;break;case\"ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED\":case 509:t.pullAtomId[r]=509;break;case\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED\":case 510:t.pullAtomId[r]=510;break;case\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED\":case 511:t.pullAtomId[r]=511;break;case\"ATOM_HEARING_AID_INFO_REPORTED\":case 513:t.pullAtomId[r]=513;break;case\"ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED\":case 514:t.pullAtomId[r]=514;break;case\"ATOM_AMBIENT_MODE_CHANGED\":case 515:t.pullAtomId[r]=515;break;case\"ATOM_ANR_LATENCY_REPORTED\":case 516:t.pullAtomId[r]=516;break;case\"ATOM_RESOURCE_API_INFO\":case 517:t.pullAtomId[r]=517;break;case\"ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED\":case 518:t.pullAtomId[r]=518;break;case\"ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED\":case 519:t.pullAtomId[r]=519;break;case\"ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED\":case 520:t.pullAtomId[r]=520;break;case\"ATOM_AIRPLANE_MODE_SESSION_REPORTED\":case 521:t.pullAtomId[r]=521;break;case\"ATOM_VM_CPU_STATUS_REPORTED\":case 522:t.pullAtomId[r]=522;break;case\"ATOM_VM_MEM_STATUS_REPORTED\":case 523:t.pullAtomId[r]=523;break;case\"ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED\":case 524:t.pullAtomId[r]=524;break;case\"ATOM_DEFAULT_NETWORK_REMATCH_INFO\":case 525:t.pullAtomId[r]=525;break;case\"ATOM_NETWORK_SELECTION_PERFORMANCE\":case 526:t.pullAtomId[r]=526;break;case\"ATOM_NETWORK_NSD_REPORTED\":case 527:t.pullAtomId[r]=527;break;case\"ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED\":case 529:t.pullAtomId[r]=529;break;case\"ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED\":case 530:t.pullAtomId[r]=530;break;case\"ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED\":case 531:t.pullAtomId[r]=531;break;case\"ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED\":case 532:t.pullAtomId[r]=532;break;case\"ATOM_BLUETOOTH_GATT_APP_INFO\":case 533:t.pullAtomId[r]=533;break;case\"ATOM_BRIGHTNESS_CONFIGURATION_UPDATED\":case 534:t.pullAtomId[r]=534;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED\":case 538:t.pullAtomId[r]=538;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED\":case 539:t.pullAtomId[r]=539;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED\":case 540:t.pullAtomId[r]=540;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED\":case 541:t.pullAtomId[r]=541;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY\":case 542:t.pullAtomId[r]=542;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY\":case 543:t.pullAtomId[r]=543;break;case\"ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED\":case 544:t.pullAtomId[r]=544;break;case\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED\":case 545:t.pullAtomId[r]=545;break;case\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED\":case 546:t.pullAtomId[r]=546;break;case\"ATOM_LAUNCHER_IMPRESSION_EVENT\":case 547:t.pullAtomId[r]=547;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY\":case 549:t.pullAtomId[r]=549;break;case\"ATOM_WS_WATCH_FACE_EDITED\":case 551:t.pullAtomId[r]=551;break;case\"ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED\":case 552:t.pullAtomId[r]=552;break;case\"ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED\":case 553:t.pullAtomId[r]=553;break;case\"ATOM_PACKAGE_UNINSTALLATION_REPORTED\":case 554:t.pullAtomId[r]=554;break;case\"ATOM_GAME_MODE_CHANGED\":case 555:t.pullAtomId[r]=555;break;case\"ATOM_GAME_MODE_CONFIGURATION_CHANGED\":case 556:t.pullAtomId[r]=556;break;case\"ATOM_BEDTIME_MODE_STATE_CHANGED\":case 557:t.pullAtomId[r]=557;break;case\"ATOM_NETWORK_SLICE_SESSION_ENDED\":case 558:t.pullAtomId[r]=558;break;case\"ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED\":case 559:t.pullAtomId[r]=559;break;case\"ATOM_NFC_TAG_TYPE_OCCURRED\":case 560:t.pullAtomId[r]=560;break;case\"ATOM_NFC_AID_CONFLICT_OCCURRED\":case 561:t.pullAtomId[r]=561;break;case\"ATOM_NFC_READER_CONFLICT_OCCURRED\":case 562:t.pullAtomId[r]=562;break;case\"ATOM_WS_TILE_LIST_CHANGED\":case 563:t.pullAtomId[r]=563;break;case\"ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION\":case 564:t.pullAtomId[r]=564;break;case\"ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED\":case 566:t.pullAtomId[r]=566;break;case\"ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED\":case 567:t.pullAtomId[r]=567;break;case\"ATOM_MEDIA_DRM_CREATED\":case 568:t.pullAtomId[r]=568;break;case\"ATOM_MEDIA_DRM_ERRORED\":case 569:t.pullAtomId[r]=569;break;case\"ATOM_MEDIA_DRM_SESSION_OPENED\":case 570:t.pullAtomId[r]=570;break;case\"ATOM_MEDIA_DRM_SESSION_CLOSED\":case 571:t.pullAtomId[r]=571;break;case\"ATOM_USER_SELECTED_RESOLUTION\":case 572:t.pullAtomId[r]=572;break;case\"ATOM_UNSAFE_INTENT_EVENT_REPORTED\":case 573:t.pullAtomId[r]=573;break;case\"ATOM_PERFORMANCE_HINT_SESSION_REPORTED\":case 574:t.pullAtomId[r]=574;break;case\"ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED\":case 576:t.pullAtomId[r]=576;break;case\"ATOM_BIOMETRIC_TOUCH_REPORTED\":case 577:t.pullAtomId[r]=577;break;case\"ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED\":case 578:t.pullAtomId[r]=578;break;case\"ATOM_LOCATION_ENABLED_STATE_CHANGED\":case 580:t.pullAtomId[r]=580;break;case\"ATOM_IME_REQUEST_FINISHED\":case 581:t.pullAtomId[r]=581;break;case\"ATOM_USB_COMPLIANCE_WARNINGS_REPORTED\":case 582:t.pullAtomId[r]=582;break;case\"ATOM_APP_SUPPORTED_LOCALES_CHANGED\":case 583:t.pullAtomId[r]=583;break;case\"ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED\":case 586:t.pullAtomId[r]=586;break;case\"ATOM_BIOMETRIC_PROPERTIES_COLLECTED\":case 587:t.pullAtomId[r]=587;break;case\"ATOM_KERNEL_WAKEUP_ATTRIBUTED\":case 588:t.pullAtomId[r]=588;break;case\"ATOM_SCREEN_STATE_CHANGED_V2\":case 589:t.pullAtomId[r]=589;break;case\"ATOM_WS_BACKUP_ACTION_REPORTED\":case 590:t.pullAtomId[r]=590;break;case\"ATOM_WS_RESTORE_ACTION_REPORTED\":case 591:t.pullAtomId[r]=591;break;case\"ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED\":case 592:t.pullAtomId[r]=592;break;case\"ATOM_MEDIA_SESSION_UPDATED\":case 594:t.pullAtomId[r]=594;break;case\"ATOM_WEAR_OOBE_STATE_CHANGED\":case 595:t.pullAtomId[r]=595;break;case\"ATOM_WS_NOTIFICATION_UPDATED\":case 596:t.pullAtomId[r]=596;break;case\"ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED\":case 601:t.pullAtomId[r]=601;break;case\"ATOM_WS_COMPLICATION_TAPPED\":case 602:t.pullAtomId[r]=602;break;case\"ATOM_WS_NOTIFICATION_BLOCKING\":case 780:t.pullAtomId[r]=780;break;case\"ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED\":case 822:t.pullAtomId[r]=822;break;case\"ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED\":case 823:t.pullAtomId[r]=823;break;case\"ATOM_WS_NOTIFICATION_ACTIONED\":case 824:t.pullAtomId[r]=824;break;case\"ATOM_WS_NOTIFICATION_LATENCY\":case 880:t.pullAtomId[r]=880;break;case\"ATOM_WIFI_BYTES_TRANSFER\":case 1e4:t.pullAtomId[r]=1e4;break;case\"ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG\":case 10001:t.pullAtomId[r]=10001;break;case\"ATOM_MOBILE_BYTES_TRANSFER\":case 10002:t.pullAtomId[r]=10002;break;case\"ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG\":case 10003:t.pullAtomId[r]=10003;break;case\"ATOM_BLUETOOTH_BYTES_TRANSFER\":case 10006:t.pullAtomId[r]=10006;break;case\"ATOM_KERNEL_WAKELOCK\":case 10004:t.pullAtomId[r]=10004;break;case\"ATOM_SUBSYSTEM_SLEEP_STATE\":case 10005:t.pullAtomId[r]=10005;break;case\"ATOM_CPU_TIME_PER_UID\":case 10009:t.pullAtomId[r]=10009;break;case\"ATOM_CPU_TIME_PER_UID_FREQ\":case 10010:t.pullAtomId[r]=10010;break;case\"ATOM_WIFI_ACTIVITY_INFO\":case 10011:t.pullAtomId[r]=10011;break;case\"ATOM_MODEM_ACTIVITY_INFO\":case 10012:t.pullAtomId[r]=10012;break;case\"ATOM_BLUETOOTH_ACTIVITY_INFO\":case 10007:t.pullAtomId[r]=10007;break;case\"ATOM_PROCESS_MEMORY_STATE\":case 10013:t.pullAtomId[r]=10013;break;case\"ATOM_SYSTEM_ELAPSED_REALTIME\":case 10014:t.pullAtomId[r]=10014;break;case\"ATOM_SYSTEM_UPTIME\":case 10015:t.pullAtomId[r]=10015;break;case\"ATOM_CPU_ACTIVE_TIME\":case 10016:t.pullAtomId[r]=10016;break;case\"ATOM_CPU_CLUSTER_TIME\":case 10017:t.pullAtomId[r]=10017;break;case\"ATOM_DISK_SPACE\":case 10018:t.pullAtomId[r]=10018;break;case\"ATOM_REMAINING_BATTERY_CAPACITY\":case 10019:t.pullAtomId[r]=10019;break;case\"ATOM_FULL_BATTERY_CAPACITY\":case 10020:t.pullAtomId[r]=10020;break;case\"ATOM_TEMPERATURE\":case 10021:t.pullAtomId[r]=10021;break;case\"ATOM_BINDER_CALLS\":case 10022:t.pullAtomId[r]=10022;break;case\"ATOM_BINDER_CALLS_EXCEPTIONS\":case 10023:t.pullAtomId[r]=10023;break;case\"ATOM_LOOPER_STATS\":case 10024:t.pullAtomId[r]=10024;break;case\"ATOM_DISK_STATS\":case 10025:t.pullAtomId[r]=10025;break;case\"ATOM_DIRECTORY_USAGE\":case 10026:t.pullAtomId[r]=10026;break;case\"ATOM_APP_SIZE\":case 10027:t.pullAtomId[r]=10027;break;case\"ATOM_CATEGORY_SIZE\":case 10028:t.pullAtomId[r]=10028;break;case\"ATOM_PROC_STATS\":case 10029:t.pullAtomId[r]=10029;break;case\"ATOM_BATTERY_VOLTAGE\":case 10030:t.pullAtomId[r]=10030;break;case\"ATOM_NUM_FINGERPRINTS_ENROLLED\":case 10031:t.pullAtomId[r]=10031;break;case\"ATOM_DISK_IO\":case 10032:t.pullAtomId[r]=10032;break;case\"ATOM_POWER_PROFILE\":case 10033:t.pullAtomId[r]=10033;break;case\"ATOM_PROC_STATS_PKG_PROC\":case 10034:t.pullAtomId[r]=10034;break;case\"ATOM_PROCESS_CPU_TIME\":case 10035:t.pullAtomId[r]=10035;break;case\"ATOM_CPU_TIME_PER_THREAD_FREQ\":case 10037:t.pullAtomId[r]=10037;break;case\"ATOM_ON_DEVICE_POWER_MEASUREMENT\":case 10038:t.pullAtomId[r]=10038;break;case\"ATOM_DEVICE_CALCULATED_POWER_USE\":case 10039:t.pullAtomId[r]=10039;break;case\"ATOM_PROCESS_MEMORY_HIGH_WATER_MARK\":case 10042:t.pullAtomId[r]=10042;break;case\"ATOM_BATTERY_LEVEL\":case 10043:t.pullAtomId[r]=10043;break;case\"ATOM_BUILD_INFORMATION\":case 10044:t.pullAtomId[r]=10044;break;case\"ATOM_BATTERY_CYCLE_COUNT\":case 10045:t.pullAtomId[r]=10045;break;case\"ATOM_DEBUG_ELAPSED_CLOCK\":case 10046:t.pullAtomId[r]=10046;break;case\"ATOM_DEBUG_FAILING_ELAPSED_CLOCK\":case 10047:t.pullAtomId[r]=10047;break;case\"ATOM_NUM_FACES_ENROLLED\":case 10048:t.pullAtomId[r]=10048;break;case\"ATOM_ROLE_HOLDER\":case 10049:t.pullAtomId[r]=10049;break;case\"ATOM_DANGEROUS_PERMISSION_STATE\":case 10050:t.pullAtomId[r]=10050;break;case\"ATOM_TRAIN_INFO\":case 10051:t.pullAtomId[r]=10051;break;case\"ATOM_TIME_ZONE_DATA_INFO\":case 10052:t.pullAtomId[r]=10052;break;case\"ATOM_EXTERNAL_STORAGE_INFO\":case 10053:t.pullAtomId[r]=10053;break;case\"ATOM_GPU_STATS_GLOBAL_INFO\":case 10054:t.pullAtomId[r]=10054;break;case\"ATOM_GPU_STATS_APP_INFO\":case 10055:t.pullAtomId[r]=10055;break;case\"ATOM_SYSTEM_ION_HEAP_SIZE\":case 10056:t.pullAtomId[r]=10056;break;case\"ATOM_APPS_ON_EXTERNAL_STORAGE_INFO\":case 10057:t.pullAtomId[r]=10057;break;case\"ATOM_FACE_SETTINGS\":case 10058:t.pullAtomId[r]=10058;break;case\"ATOM_COOLING_DEVICE\":case 10059:t.pullAtomId[r]=10059;break;case\"ATOM_APP_OPS\":case 10060:t.pullAtomId[r]=10060;break;case\"ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE\":case 10061:t.pullAtomId[r]=10061;break;case\"ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO\":case 10062:t.pullAtomId[r]=10062;break;case\"ATOM_SURFACEFLINGER_STATS_LAYER_INFO\":case 10063:t.pullAtomId[r]=10063;break;case\"ATOM_PROCESS_MEMORY_SNAPSHOT\":case 10064:t.pullAtomId[r]=10064;break;case\"ATOM_VMS_CLIENT_STATS\":case 10065:t.pullAtomId[r]=10065;break;case\"ATOM_NOTIFICATION_REMOTE_VIEWS\":case 10066:t.pullAtomId[r]=10066;break;case\"ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED\":case 10067:t.pullAtomId[r]=10067;break;case\"ATOM_GRAPHICS_STATS\":case 10068:t.pullAtomId[r]=10068;break;case\"ATOM_RUNTIME_APP_OP_ACCESS\":case 10069:t.pullAtomId[r]=10069;break;case\"ATOM_ION_HEAP_SIZE\":case 10070:t.pullAtomId[r]=10070;break;case\"ATOM_PACKAGE_NOTIFICATION_PREFERENCES\":case 10071:t.pullAtomId[r]=10071;break;case\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES\":case 10072:t.pullAtomId[r]=10072;break;case\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES\":case 10073:t.pullAtomId[r]=10073;break;case\"ATOM_GNSS_STATS\":case 10074:t.pullAtomId[r]=10074;break;case\"ATOM_ATTRIBUTED_APP_OPS\":case 10075:t.pullAtomId[r]=10075;break;case\"ATOM_VOICE_CALL_SESSION\":case 10076:t.pullAtomId[r]=10076;break;case\"ATOM_VOICE_CALL_RAT_USAGE\":case 10077:t.pullAtomId[r]=10077;break;case\"ATOM_SIM_SLOT_STATE\":case 10078:t.pullAtomId[r]=10078;break;case\"ATOM_SUPPORTED_RADIO_ACCESS_FAMILY\":case 10079:t.pullAtomId[r]=10079;break;case\"ATOM_SETTING_SNAPSHOT\":case 10080:t.pullAtomId[r]=10080;break;case\"ATOM_BLOB_INFO\":case 10081:t.pullAtomId[r]=10081;break;case\"ATOM_DATA_USAGE_BYTES_TRANSFER\":case 10082:t.pullAtomId[r]=10082;break;case\"ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED\":case 10083:t.pullAtomId[r]=10083;break;case\"ATOM_DND_MODE_RULE\":case 10084:t.pullAtomId[r]=10084;break;case\"ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS\":case 10085:t.pullAtomId[r]=10085;break;case\"ATOM_INCOMING_SMS\":case 10086:t.pullAtomId[r]=10086;break;case\"ATOM_OUTGOING_SMS\":case 10087:t.pullAtomId[r]=10087;break;case\"ATOM_CARRIER_ID_TABLE_VERSION\":case 10088:t.pullAtomId[r]=10088;break;case\"ATOM_DATA_CALL_SESSION\":case 10089:t.pullAtomId[r]=10089;break;case\"ATOM_CELLULAR_SERVICE_STATE\":case 10090:t.pullAtomId[r]=10090;break;case\"ATOM_CELLULAR_DATA_SERVICE_SWITCH\":case 10091:t.pullAtomId[r]=10091;break;case\"ATOM_SYSTEM_MEMORY\":case 10092:t.pullAtomId[r]=10092;break;case\"ATOM_IMS_REGISTRATION_TERMINATION\":case 10093:t.pullAtomId[r]=10093;break;case\"ATOM_IMS_REGISTRATION_STATS\":case 10094:t.pullAtomId[r]=10094;break;case\"ATOM_CPU_TIME_PER_CLUSTER_FREQ\":case 10095:t.pullAtomId[r]=10095;break;case\"ATOM_CPU_CYCLES_PER_UID_CLUSTER\":case 10096:t.pullAtomId[r]=10096;break;case\"ATOM_DEVICE_ROTATED_DATA\":case 10097:t.pullAtomId[r]=10097;break;case\"ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER\":case 10098:t.pullAtomId[r]=10098;break;case\"ATOM_MEDIA_DRM_ACTIVITY_INFO\":case 10099:t.pullAtomId[r]=10099;break;case\"ATOM_OEM_MANAGED_BYTES_TRANSFER\":case 10100:t.pullAtomId[r]=10100;break;case\"ATOM_GNSS_POWER_STATS\":case 10101:t.pullAtomId[r]=10101;break;case\"ATOM_TIME_ZONE_DETECTOR_STATE\":case 10102:t.pullAtomId[r]=10102;break;case\"ATOM_KEYSTORE2_STORAGE_STATS\":case 10103:t.pullAtomId[r]=10103;break;case\"ATOM_RKP_POOL_STATS\":case 10104:t.pullAtomId[r]=10104;break;case\"ATOM_PROCESS_DMABUF_MEMORY\":case 10105:t.pullAtomId[r]=10105;break;case\"ATOM_PENDING_ALARM_INFO\":case 10106:t.pullAtomId[r]=10106;break;case\"ATOM_USER_LEVEL_HIBERNATED_APPS\":case 10107:t.pullAtomId[r]=10107;break;case\"ATOM_LAUNCHER_LAYOUT_SNAPSHOT\":case 10108:t.pullAtomId[r]=10108;break;case\"ATOM_GLOBAL_HIBERNATED_APPS\":case 10109:t.pullAtomId[r]=10109;break;case\"ATOM_INPUT_EVENT_LATENCY_SKETCH\":case 10110:t.pullAtomId[r]=10110;break;case\"ATOM_BATTERY_USAGE_STATS_BEFORE_RESET\":case 10111:t.pullAtomId[r]=10111;break;case\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET\":case 10112:t.pullAtomId[r]=10112;break;case\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL\":case 10113:t.pullAtomId[r]=10113;break;case\"ATOM_INSTALLED_INCREMENTAL_PACKAGE\":case 10114:t.pullAtomId[r]=10114;break;case\"ATOM_TELEPHONY_NETWORK_REQUESTS\":case 10115:t.pullAtomId[r]=10115;break;case\"ATOM_APP_SEARCH_STORAGE_INFO\":case 10116:t.pullAtomId[r]=10116;break;case\"ATOM_VMSTAT\":case 10117:t.pullAtomId[r]=10117;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO\":case 10118:t.pullAtomId[r]=10118;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO\":case 10119:t.pullAtomId[r]=10119;break;case\"ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO\":case 10120:t.pullAtomId[r]=10120;break;case\"ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW\":case 10121:t.pullAtomId[r]=10121;break;case\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO\":case 10122:t.pullAtomId[r]=10122;break;case\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO\":case 10123:t.pullAtomId[r]=10123;break;case\"ATOM_RKP_ERROR_STATS\":case 10124:t.pullAtomId[r]=10124;break;case\"ATOM_KEYSTORE2_CRASH_STATS\":case 10125:t.pullAtomId[r]=10125;break;case\"ATOM_VENDOR_APEX_INFO\":case 10126:t.pullAtomId[r]=10126;break;case\"ATOM_ACCESSIBILITY_SHORTCUT_STATS\":case 10127:t.pullAtomId[r]=10127;break;case\"ATOM_ACCESSIBILITY_FLOATING_MENU_STATS\":case 10128:t.pullAtomId[r]=10128;break;case\"ATOM_DATA_USAGE_BYTES_TRANSFER_V2\":case 10129:t.pullAtomId[r]=10129;break;case\"ATOM_MEDIA_CAPABILITIES\":case 10130:t.pullAtomId[r]=10130;break;case\"ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY\":case 10131:t.pullAtomId[r]=10131;break;case\"ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY\":case 10132:t.pullAtomId[r]=10132;break;case\"ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS\":case 10133:t.pullAtomId[r]=10133;break;case\"ATOM_RCS_CLIENT_PROVISIONING_STATS\":case 10134:t.pullAtomId[r]=10134;break;case\"ATOM_RCS_ACS_PROVISIONING_STATS\":case 10135:t.pullAtomId[r]=10135;break;case\"ATOM_SIP_DELEGATE_STATS\":case 10136:t.pullAtomId[r]=10136;break;case\"ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS\":case 10137:t.pullAtomId[r]=10137;break;case\"ATOM_SIP_MESSAGE_RESPONSE\":case 10138:t.pullAtomId[r]=10138;break;case\"ATOM_SIP_TRANSPORT_SESSION\":case 10139:t.pullAtomId[r]=10139;break;case\"ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT\":case 10140:t.pullAtomId[r]=10140;break;case\"ATOM_IMS_DEDICATED_BEARER_EVENT\":case 10141:t.pullAtomId[r]=10141;break;case\"ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS\":case 10142:t.pullAtomId[r]=10142;break;case\"ATOM_UCE_EVENT_STATS\":case 10143:t.pullAtomId[r]=10143;break;case\"ATOM_PRESENCE_NOTIFY_EVENT\":case 10144:t.pullAtomId[r]=10144;break;case\"ATOM_GBA_EVENT\":case 10145:t.pullAtomId[r]=10145;break;case\"ATOM_PER_SIM_STATUS\":case 10146:t.pullAtomId[r]=10146;break;case\"ATOM_GPU_WORK_PER_UID\":case 10147:t.pullAtomId[r]=10147;break;case\"ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE\":case 10148:t.pullAtomId[r]=10148;break;case\"ATOM_SIGNED_PARTITION_INFO\":case 10149:t.pullAtomId[r]=10149;break;case\"ATOM_PINNED_FILE_SIZES_PER_PACKAGE\":case 10150:t.pullAtomId[r]=10150;break;case\"ATOM_PENDING_INTENTS_PER_PACKAGE\":case 10151:t.pullAtomId[r]=10151;break;case\"ATOM_USER_INFO\":case 10152:t.pullAtomId[r]=10152;break;case\"ATOM_TELEPHONY_NETWORK_REQUESTS_V2\":case 10153:t.pullAtomId[r]=10153;break;case\"ATOM_DEVICE_TELEPHONY_PROPERTIES\":case 10154:t.pullAtomId[r]=10154;break;case\"ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS\":case 10155:t.pullAtomId[r]=10155;break;case\"ATOM_SAFETY_STATE\":case 10156:t.pullAtomId[r]=10156;break;case\"ATOM_INCOMING_MMS\":case 10157:t.pullAtomId[r]=10157;break;case\"ATOM_OUTGOING_MMS\":case 10158:t.pullAtomId[r]=10158;break;case\"ATOM_MULTI_USER_INFO\":case 10160:t.pullAtomId[r]=10160;break;case\"ATOM_NETWORK_BPF_MAP_INFO\":case 10161:t.pullAtomId[r]=10161;break;case\"ATOM_OUTGOING_SHORT_CODE_SMS\":case 10162:t.pullAtomId[r]=10162;break;case\"ATOM_CONNECTIVITY_STATE_SAMPLE\":case 10163:t.pullAtomId[r]=10163;break;case\"ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO\":case 10164:t.pullAtomId[r]=10164;break;case\"ATOM_GAME_MODE_INFO\":case 10165:t.pullAtomId[r]=10165;break;case\"ATOM_GAME_MODE_CONFIGURATION\":case 10166:t.pullAtomId[r]=10166;break;case\"ATOM_GAME_MODE_LISTENER\":case 10167:t.pullAtomId[r]=10167;break;case\"ATOM_NETWORK_SLICE_REQUEST_COUNT\":case 10168:t.pullAtomId[r]=10168;break;case\"ATOM_WS_TILE_SNAPSHOT\":case 10169:t.pullAtomId[r]=10169;break;case\"ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT\":case 10170:t.pullAtomId[r]=10170;break;case\"ATOM_PROCESS_STATE\":case 10171:t.pullAtomId[r]=10171;break;case\"ATOM_PROCESS_ASSOCIATION\":case 10172:t.pullAtomId[r]=10172;break;case\"ATOM_ADPF_SYSTEM_COMPONENT_INFO\":case 10173:t.pullAtomId[r]=10173;break;case\"ATOM_NOTIFICATION_MEMORY_USE\":case 10174:t.pullAtomId[r]=10174;break;case\"ATOM_HDR_CAPABILITIES\":case 10175:t.pullAtomId[r]=10175;break;case\"ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT\":case 10176:t.pullAtomId[r]=10176;break;case\"ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED\":case 910:t.pullAtomId[r]=910;break;case\"ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED\":case 820:t.pullAtomId[r]=820;break;case\"ATOM_THERMAL_STATUS_CALLED\":case 772:t.pullAtomId[r]=772;break;case\"ATOM_THERMAL_HEADROOM_CALLED\":case 773:t.pullAtomId[r]=773;break;case\"ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED\":case 774:t.pullAtomId[r]=774;break;case\"ATOM_ADPF_HINT_SESSION_TID_CLEANUP\":case 839:t.pullAtomId[r]=839;break;case\"ATOM_THERMAL_HEADROOM_THRESHOLDS\":case 10201:t.pullAtomId[r]=10201;break;case\"ATOM_ADPF_SESSION_SNAPSHOT\":case 10218:t.pullAtomId[r]=10218;break;case\"ATOM_JSSCRIPTENGINE_LATENCY_REPORTED\":case 483:t.pullAtomId[r]=483;break;case\"ATOM_AD_SERVICES_API_CALLED\":case 435:t.pullAtomId[r]=435;break;case\"ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED\":case 436:t.pullAtomId[r]=436;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED\":case 490:t.pullAtomId[r]=490;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED\":case 502:t.pullAtomId[r]=502;break;case\"ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED\":case 493:t.pullAtomId[r]=493;break;case\"ATOM_BACKGROUND_FETCH_PROCESS_REPORTED\":case 496:t.pullAtomId[r]=496;break;case\"ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED\":case 497:t.pullAtomId[r]=497;break;case\"ATOM_RUN_AD_BIDDING_PROCESS_REPORTED\":case 498:t.pullAtomId[r]=498;break;case\"ATOM_RUN_AD_SCORING_PROCESS_REPORTED\":case 499:t.pullAtomId[r]=499;break;case\"ATOM_RUN_AD_SELECTION_PROCESS_REPORTED\":case 500:t.pullAtomId[r]=500;break;case\"ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED\":case 501:t.pullAtomId[r]=501;break;case\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED\":case 503:t.pullAtomId[r]=503;break;case\"ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS\":case 512:t.pullAtomId[r]=512;break;case\"ATOM_AD_SERVICES_GET_TOPICS_REPORTED\":case 535:t.pullAtomId[r]=535;break;case\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED\":case 536:t.pullAtomId[r]=536;break;case\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\":case 537:t.pullAtomId[r]=537;break;case\"ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED\":case 598:t.pullAtomId[r]=598;break;case\"ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\":case 599:t.pullAtomId[r]=599;break;case\"ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS\":case 640:t.pullAtomId[r]=640;break;case\"ATOM_AD_SERVICES_ERROR_REPORTED\":case 662:t.pullAtomId[r]=662;break;case\"ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED\":case 663:t.pullAtomId[r]=663;break;case\"ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION\":case 673:t.pullAtomId[r]=673;break;case\"ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION\":case 674:t.pullAtomId[r]=674;break;case\"ATOM_AD_SERVICES_MEASUREMENT_JOBS\":case 675:t.pullAtomId[r]=675;break;case\"ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT\":case 676:t.pullAtomId[r]=676;break;case\"ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS\":case 695:t.pullAtomId[r]=695;break;case\"ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED\":case 697:t.pullAtomId[r]=697;break;case\"ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED\":case 698:t.pullAtomId[r]=698;break;case\"ATOM_AD_SERVICES_ENROLLMENT_MATCHED\":case 699:t.pullAtomId[r]=699;break;case\"ATOM_AD_SERVICES_CONSENT_MIGRATED\":case 702:t.pullAtomId[r]=702;break;case\"ATOM_AD_SERVICES_ENROLLMENT_FAILED\":case 714:t.pullAtomId[r]=714;break;case\"ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION\":case 756:t.pullAtomId[r]=756;break;case\"ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED\":case 765:t.pullAtomId[r]=765;break;case\"ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED\":case 766:t.pullAtomId[r]=766;break;case\"ATOM_DESTINATION_REGISTERED_BEACONS\":case 767:t.pullAtomId[r]=767;break;case\"ATOM_REPORT_INTERACTION_API_CALLED\":case 768:t.pullAtomId[r]=768;break;case\"ATOM_INTERACTION_REPORTING_TABLE_CLEARED\":case 769:t.pullAtomId[r]=769;break;case\"ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED\":case 788:t.pullAtomId[r]=788;break;case\"ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED\":case 793:t.pullAtomId[r]=793;break;case\"ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED\":case 794:t.pullAtomId[r]=794;break;case\"ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED\":case 795:t.pullAtomId[r]=795;break;case\"ATOM_SIGNATURE_VERIFICATION\":case 807:t.pullAtomId[r]=807;break;case\"ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED\":case 808:t.pullAtomId[r]=808;break;case\"ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED\":case 809:t.pullAtomId[r]=809;break;case\"ATOM_K_ANON_INITIALIZE_STATUS_REPORTED\":case 810:t.pullAtomId[r]=810;break;case\"ATOM_K_ANON_SIGN_STATUS_REPORTED\":case 811:t.pullAtomId[r]=811;break;case\"ATOM_K_ANON_JOIN_STATUS_REPORTED\":case 812:t.pullAtomId[r]=812;break;case\"ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED\":case 813:t.pullAtomId[r]=813;break;case\"ATOM_GET_AD_SELECTION_DATA_API_CALLED\":case 814:t.pullAtomId[r]=814;break;case\"ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED\":case 815:t.pullAtomId[r]=815;break;case\"ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED\":case 834:t.pullAtomId[r]=834;break;case\"ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED\":case 840:t.pullAtomId[r]=840;break;case\"ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED\":case 841:t.pullAtomId[r]=841;break;case\"ATOM_ADSERVICES_SHELL_COMMAND_CALLED\":case 842:t.pullAtomId[r]=842;break;case\"ATOM_UPDATE_SIGNALS_API_CALLED\":case 843:t.pullAtomId[r]=843;break;case\"ATOM_ENCODING_JOB_RUN\":case 844:t.pullAtomId[r]=844;break;case\"ATOM_ENCODING_JS_FETCH\":case 845:t.pullAtomId[r]=845;break;case\"ATOM_ENCODING_JS_EXECUTION\":case 846:t.pullAtomId[r]=846;break;case\"ATOM_PERSIST_AD_SELECTION_RESULT_CALLED\":case 847:t.pullAtomId[r]=847;break;case\"ATOM_SERVER_AUCTION_KEY_FETCH_CALLED\":case 848:t.pullAtomId[r]=848;break;case\"ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED\":case 849:t.pullAtomId[r]=849;break;case\"ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION\":case 864:t.pullAtomId[r]=864;break;case\"ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP\":case 865:t.pullAtomId[r]=865;break;case\"ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED\":case 876:t.pullAtomId[r]=876;break;case\"ATOM_REPORT_IMPRESSION_API_CALLED\":case 877:t.pullAtomId[r]=877;break;case\"ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS\":case 885:t.pullAtomId[r]=885;break;case\"ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED\":case 902:t.pullAtomId[r]=902;break;case\"ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED\":case 903:t.pullAtomId[r]=903;break;case\"ATOM_UPDATE_SIGNALS_PROCESS_REPORTED\":case 905:t.pullAtomId[r]=905;break;case\"ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED\":case 930:t.pullAtomId[r]=930;break;case\"ATOM_AI_WALLPAPERS_BUTTON_PRESSED\":case 706:t.pullAtomId[r]=706;break;case\"ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED\":case 707:t.pullAtomId[r]=707;break;case\"ATOM_AI_WALLPAPERS_TERM_SELECTED\":case 708:t.pullAtomId[r]=708;break;case\"ATOM_AI_WALLPAPERS_WALLPAPER_SET\":case 709:t.pullAtomId[r]=709;break;case\"ATOM_AI_WALLPAPERS_SESSION_SUMMARY\":case 710:t.pullAtomId[r]=710;break;case\"ATOM_APEX_INSTALLATION_REQUESTED\":case 732:t.pullAtomId[r]=732;break;case\"ATOM_APEX_INSTALLATION_STAGED\":case 733:t.pullAtomId[r]=733;break;case\"ATOM_APEX_INSTALLATION_ENDED\":case 734:t.pullAtomId[r]=734;break;case\"ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED\":case 385:t.pullAtomId[r]=385;break;case\"ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED\":case 579:t.pullAtomId[r]=579;break;case\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED\":case 825:t.pullAtomId[r]=825;break;case\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED\":case 826:t.pullAtomId[r]=826;break;case\"ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED\":case 909:t.pullAtomId[r]=909;break;case\"ATOM_ART_DATUM_REPORTED\":case 332:t.pullAtomId[r]=332;break;case\"ATOM_ART_DEVICE_DATUM_REPORTED\":case 550:t.pullAtomId[r]=550;break;case\"ATOM_ART_DATUM_DELTA_REPORTED\":case 565:t.pullAtomId[r]=565;break;case\"ATOM_ART_DEX2OAT_REPORTED\":case 929:t.pullAtomId[r]=929;break;case\"ATOM_ART_DEVICE_STATUS\":case 10205:t.pullAtomId[r]=10205;break;case\"ATOM_BACKGROUND_DEXOPT_JOB_ENDED\":case 467:t.pullAtomId[r]=467;break;case\"ATOM_PREREBOOT_DEXOPT_JOB_ENDED\":case 883:t.pullAtomId[r]=883;break;case\"ATOM_ODREFRESH_REPORTED\":case 366:t.pullAtomId[r]=366;break;case\"ATOM_ODSIGN_REPORTED\":case 548:t.pullAtomId[r]=548;break;case\"ATOM_AUTOFILL_UI_EVENT_REPORTED\":case 603:t.pullAtomId[r]=603;break;case\"ATOM_AUTOFILL_FILL_REQUEST_REPORTED\":case 604:t.pullAtomId[r]=604;break;case\"ATOM_AUTOFILL_FILL_RESPONSE_REPORTED\":case 605:t.pullAtomId[r]=605;break;case\"ATOM_AUTOFILL_SAVE_EVENT_REPORTED\":case 606:t.pullAtomId[r]=606;break;case\"ATOM_AUTOFILL_SESSION_COMMITTED\":case 607:t.pullAtomId[r]=607;break;case\"ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED\":case 659:t.pullAtomId[r]=659;break;case\"ATOM_CAR_RECENTS_EVENT_REPORTED\":case 770:t.pullAtomId[r]=770;break;case\"ATOM_CAR_CALM_MODE_EVENT_REPORTED\":case 797:t.pullAtomId[r]=797;break;case\"ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED\":case 852:t.pullAtomId[r]=852;break;case\"ATOM_PLUGIN_INITIALIZED\":case 655:t.pullAtomId[r]=655;break;case\"ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED\":case 613:t.pullAtomId[r]=613;break;case\"ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION\":case 614:t.pullAtomId[r]=614;break;case\"ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION\":case 615:t.pullAtomId[r]=615;break;case\"ATOM_BLUETOOTH_LE_SESSION_CONNECTED\":case 656:t.pullAtomId[r]=656;break;case\"ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED\":case 666:t.pullAtomId[r]=666;break;case\"ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED\":case 696:t.pullAtomId[r]=696;break;case\"ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED\":case 781:t.pullAtomId[r]=781;break;case\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED\":case 782:t.pullAtomId[r]=782;break;case\"ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID\":case 862:t.pullAtomId[r]=862;break;case\"ATOM_LE_APP_SCAN_STATE_CHANGED\":case 870:t.pullAtomId[r]=870;break;case\"ATOM_LE_RADIO_SCAN_STOPPED\":case 871:t.pullAtomId[r]=871;break;case\"ATOM_LE_SCAN_RESULT_RECEIVED\":case 872:t.pullAtomId[r]=872;break;case\"ATOM_LE_SCAN_ABUSED\":case 873:t.pullAtomId[r]=873;break;case\"ATOM_LE_ADV_STATE_CHANGED\":case 874:t.pullAtomId[r]=874;break;case\"ATOM_LE_ADV_ERROR_REPORTED\":case 875:t.pullAtomId[r]=875;break;case\"ATOM_A2DP_SESSION_REPORTED\":case 904:t.pullAtomId[r]=904;break;case\"ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED\":case 916:t.pullAtomId[r]=916;break;case\"ATOM_BROADCAST_AUDIO_SESSION_REPORTED\":case 927:t.pullAtomId[r]=927;break;case\"ATOM_BROADCAST_AUDIO_SYNC_REPORTED\":case 928:t.pullAtomId[r]=928;break;case\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE\":case 982:t.pullAtomId[r]=982;break;case\"ATOM_BLUETOOTH_LE_CONNECTION\":case 988:t.pullAtomId[r]=988;break;case\"ATOM_BROADCAST_SENT\":case 922:t.pullAtomId[r]=922;break;case\"ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT\":case 900:t.pullAtomId[r]=900;break;case\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED\":case 934:t.pullAtomId[r]=934;break;case\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED\":case 972:t.pullAtomId[r]=972;break;case\"ATOM_DAILY_KEEPALIVE_INFO_REPORTED\":case 650:t.pullAtomId[r]=650;break;case\"ATOM_NETWORK_REQUEST_STATE_CHANGED\":case 779:t.pullAtomId[r]=779;break;case\"ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED\":case 925:t.pullAtomId[r]=925;break;case\"ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED\":case 783:t.pullAtomId[r]=783;break;case\"ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED\":case 979:t.pullAtomId[r]=979;break;case\"ATOM_APF_SESSION_INFO_REPORTED\":case 777:t.pullAtomId[r]=777;break;case\"ATOM_IP_CLIENT_RA_INFO_REPORTED\":case 778:t.pullAtomId[r]=778;break;case\"ATOM_VPN_CONNECTION_STATE_CHANGED\":case 850:t.pullAtomId[r]=850;break;case\"ATOM_VPN_CONNECTION_REPORTED\":case 851:t.pullAtomId[r]=851;break;case\"ATOM_CPU_POLICY\":case 10199:t.pullAtomId[r]=10199;break;case\"ATOM_CREDENTIAL_MANAGER_API_CALLED\":case 585:t.pullAtomId[r]=585;break;case\"ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED\":case 651:t.pullAtomId[r]=651;break;case\"ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED\":case 652:t.pullAtomId[r]=652;break;case\"ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED\":case 653:t.pullAtomId[r]=653;break;case\"ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED\":case 667:t.pullAtomId[r]=667;break;case\"ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED\":case 668:t.pullAtomId[r]=668;break;case\"ATOM_CREDENTIAL_MANAGER_GET_REPORTED\":case 669:t.pullAtomId[r]=669;break;case\"ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED\":case 670:t.pullAtomId[r]=670;break;case\"ATOM_CREDENTIAL_MANAGER_APIV2_CALLED\":case 671:t.pullAtomId[r]=671;break;case\"ATOM_CRONET_ENGINE_CREATED\":case 703:t.pullAtomId[r]=703;break;case\"ATOM_CRONET_TRAFFIC_REPORTED\":case 704:t.pullAtomId[r]=704;break;case\"ATOM_CRONET_ENGINE_BUILDER_INITIALIZED\":case 762:t.pullAtomId[r]=762;break;case\"ATOM_CRONET_HTTP_FLAGS_INITIALIZED\":case 763:t.pullAtomId[r]=763;break;case\"ATOM_CRONET_INITIALIZED\":case 764:t.pullAtomId[r]=764;break;case\"ATOM_DESKTOP_MODE_UI_CHANGED\":case 818:t.pullAtomId[r]=818;break;case\"ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE\":case 819:t.pullAtomId[r]=819;break;case\"ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED\":case 935:t.pullAtomId[r]=935;break;case\"ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED\":case 726:t.pullAtomId[r]=726;break;case\"ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED\":case 727:t.pullAtomId[r]=727;break;case\"ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED\":case 728:t.pullAtomId[r]=728;break;case\"ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED\":case 789:t.pullAtomId[r]=789;break;case\"ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED\":case 790:t.pullAtomId[r]=790;break;case\"ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED\":case 791:t.pullAtomId[r]=791;break;case\"ATOM_DEVICE_POLICY_MANAGEMENT_MODE\":case 10216:t.pullAtomId[r]=10216;break;case\"ATOM_DEVICE_POLICY_STATE\":case 10217:t.pullAtomId[r]=10217;break;case\"ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED\":case 792:t.pullAtomId[r]=792;break;case\"ATOM_EXTERNAL_DISPLAY_STATE_CHANGED\":case 806:t.pullAtomId[r]=806;break;case\"ATOM_DND_STATE_CHANGED\":case 657:t.pullAtomId[r]=657;break;case\"ATOM_DREAM_SETTING_CHANGED\":case 705:t.pullAtomId[r]=705;break;case\"ATOM_DREAM_SETTING_SNAPSHOT\":case 10192:t.pullAtomId[r]=10192;break;case\"ATOM_EXPRESS_EVENT_REPORTED\":case 528:t.pullAtomId[r]=528;break;case\"ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED\":case 593:t.pullAtomId[r]=593;break;case\"ATOM_EXPRESS_UID_EVENT_REPORTED\":case 644:t.pullAtomId[r]=644;break;case\"ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED\":case 658:t.pullAtomId[r]=658;break;case\"ATOM_FEDERATED_COMPUTE_API_CALLED\":case 712:t.pullAtomId[r]=712;break;case\"ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED\":case 771:t.pullAtomId[r]=771;break;case\"ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED\":case 838:t.pullAtomId[r]=838;break;case\"ATOM_FULL_SCREEN_INTENT_LAUNCHED\":case 631:t.pullAtomId[r]=631;break;case\"ATOM_BAL_ALLOWED\":case 632:t.pullAtomId[r]=632;break;case\"ATOM_IN_TASK_ACTIVITY_STARTED\":case 685:t.pullAtomId[r]=685;break;case\"ATOM_DEVICE_ORIENTATION_CHANGED\":case 906:t.pullAtomId[r]=906;break;case\"ATOM_CACHED_APPS_HIGH_WATERMARK\":case 10189:t.pullAtomId[r]=10189;break;case\"ATOM_STYLUS_PREDICTION_METRICS_REPORTED\":case 718:t.pullAtomId[r]=718;break;case\"ATOM_USER_RISK_EVENT_REPORTED\":case 725:t.pullAtomId[r]=725;break;case\"ATOM_MEDIA_PROJECTION_STATE_CHANGED\":case 729:t.pullAtomId[r]=729;break;case\"ATOM_MEDIA_PROJECTION_TARGET_CHANGED\":case 730:t.pullAtomId[r]=730;break;case\"ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED\":case 853:t.pullAtomId[r]=853;break;case\"ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG\":case 10200:t.pullAtomId[r]=10200;break;case\"ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE\":case 10204:t.pullAtomId[r]=10204;break;case\"ATOM_BIOMETRIC_FRR_NOTIFICATION\":case 817:t.pullAtomId[r]=817;break;case\"ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION\":case 830:t.pullAtomId[r]=830;break;case\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION\":case 831:t.pullAtomId[r]=831;break;case\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED\":case 832:t.pullAtomId[r]=832;break;case\"ATOM_SENSITIVE_NOTIFICATION_REDACTION\":case 833:t.pullAtomId[r]=833;break;case\"ATOM_SENSITIVE_CONTENT_APP_PROTECTION\":case 835:t.pullAtomId[r]=835;break;case\"ATOM_APP_RESTRICTION_STATE_CHANGED\":case 866:t.pullAtomId[r]=866;break;case\"ATOM_BATTERY_USAGE_STATS_PER_UID\":case 10209:t.pullAtomId[r]=10209;break;case\"ATOM_POSTGC_MEMORY_SNAPSHOT\":case 924:t.pullAtomId[r]=924;break;case\"ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED\":case 926:t.pullAtomId[r]=926;break;case\"ATOM_APP_OP_ACCESS_TRACKED\":case 931:t.pullAtomId[r]=931;break;case\"ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED\":case 933:t.pullAtomId[r]=933;break;case\"ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED\":case 584:t.pullAtomId[r]=584;break;case\"ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED\":case 816:t.pullAtomId[r]=816;break;case\"ATOM_BATTERY_HEALTH\":case 10220:t.pullAtomId[r]=10220;break;case\"ATOM_HDMI_EARC_STATUS_REPORTED\":case 701:t.pullAtomId[r]=701;break;case\"ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED\":case 724:t.pullAtomId[r]=724;break;case\"ATOM_HEALTH_CONNECT_API_CALLED\":case 616:t.pullAtomId[r]=616;break;case\"ATOM_HEALTH_CONNECT_USAGE_STATS\":case 617:t.pullAtomId[r]=617;break;case\"ATOM_HEALTH_CONNECT_STORAGE_STATS\":case 618:t.pullAtomId[r]=618;break;case\"ATOM_HEALTH_CONNECT_API_INVOKED\":case 643:t.pullAtomId[r]=643;break;case\"ATOM_EXERCISE_ROUTE_API_CALLED\":case 654:t.pullAtomId[r]=654;break;case\"ATOM_HEALTH_CONNECT_EXPORT_INVOKED\":case 907:t.pullAtomId[r]=907;break;case\"ATOM_HEALTH_CONNECT_IMPORT_INVOKED\":case 918:t.pullAtomId[r]=918;break;case\"ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED\":case 919:t.pullAtomId[r]=919;break;case\"ATOM_HEALTH_CONNECT_UI_IMPRESSION\":case 623:t.pullAtomId[r]=623;break;case\"ATOM_HEALTH_CONNECT_UI_INTERACTION\":case 624:t.pullAtomId[r]=624;break;case\"ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED\":case 625:t.pullAtomId[r]=625;break;case\"ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED\":case 761:t.pullAtomId[r]=761;break;case\"ATOM_IKE_SESSION_TERMINATED\":case 678:t.pullAtomId[r]=678;break;case\"ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED\":case 760:t.pullAtomId[r]=760;break;case\"ATOM_NEGOTIATED_SECURITY_ASSOCIATION\":case 821:t.pullAtomId[r]=821;break;case\"ATOM_KEYBOARD_CONFIGURED\":case 682:t.pullAtomId[r]=682;break;case\"ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED\":case 683:t.pullAtomId[r]=683;break;case\"ATOM_INPUTDEVICE_USAGE_REPORTED\":case 686:t.pullAtomId[r]=686;break;case\"ATOM_INPUT_EVENT_LATENCY_REPORTED\":case 932:t.pullAtomId[r]=932;break;case\"ATOM_TOUCHPAD_USAGE\":case 10191:t.pullAtomId[r]=10191;break;case\"ATOM_KERNEL_OOM_KILL_OCCURRED\":case 754:t.pullAtomId[r]=754;break;case\"ATOM_EMERGENCY_STATE_CHANGED\":case 633:t.pullAtomId[r]=633;break;case\"ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED\":case 868:t.pullAtomId[r]=868;break;case\"ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED\":case 1002:t.pullAtomId[r]=1002;break;case\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED\":case 1003:t.pullAtomId[r]=1003;break;case\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED\":case 1004:t.pullAtomId[r]=1004;break;case\"ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED\":case 600:t.pullAtomId[r]=600;break;case\"ATOM_MEDIA_CODEC_STARTED\":case 641:t.pullAtomId[r]=641;break;case\"ATOM_MEDIA_CODEC_STOPPED\":case 642:t.pullAtomId[r]=642;break;case\"ATOM_MEDIA_CODEC_RENDERED\":case 684:t.pullAtomId[r]=684;break;case\"ATOM_MEDIA_EDITING_ENDED_REPORTED\":case 798:t.pullAtomId[r]=798;break;case\"ATOM_MTE_STATE\":case 10181:t.pullAtomId[r]=10181;break;case\"ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED\":case 901:t.pullAtomId[r]=901;break;case\"ATOM_NFC_OBSERVE_MODE_STATE_CHANGED\":case 855:t.pullAtomId[r]=855;break;case\"ATOM_NFC_FIELD_CHANGED\":case 856:t.pullAtomId[r]=856;break;case\"ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED\":case 857:t.pullAtomId[r]=857;break;case\"ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED\":case 858:t.pullAtomId[r]=858;break;case\"ATOM_ONDEVICEPERSONALIZATION_API_CALLED\":case 711:t.pullAtomId[r]=711;break;case\"ATOM_COMPONENT_STATE_CHANGED_REPORTED\":case 863:t.pullAtomId[r]=863;break;case\"ATOM_PDF_LOAD_REPORTED\":case 859:t.pullAtomId[r]=859;break;case\"ATOM_PDF_API_USAGE_REPORTED\":case 860:t.pullAtomId[r]=860;break;case\"ATOM_PDF_SEARCH_REPORTED\":case 861:t.pullAtomId[r]=861;break;case\"ATOM_PRESSURE_STALL_INFORMATION\":case 10229:t.pullAtomId[r]=10229;break;case\"ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED\":case 645:t.pullAtomId[r]=645;break;case\"ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED\":case 646:t.pullAtomId[r]=646;break;case\"ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION\":case 647:t.pullAtomId[r]=647;break;case\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED\":case 648:t.pullAtomId[r]=648;break;case\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED\":case 649:t.pullAtomId[r]=649;break;case\"ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED\":case 827:t.pullAtomId[r]=827;break;case\"ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED\":case 828:t.pullAtomId[r]=828;break;case\"ATOM_PHOTOPICKER_SESSION_INFO_REPORTED\":case 886:t.pullAtomId[r]=886;break;case\"ATOM_PHOTOPICKER_API_INFO_REPORTED\":case 887:t.pullAtomId[r]=887;break;case\"ATOM_PHOTOPICKER_UI_EVENT_LOGGED\":case 888:t.pullAtomId[r]=888;break;case\"ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED\":case 889:t.pullAtomId[r]=889;break;case\"ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED\":case 890:t.pullAtomId[r]=890;break;case\"ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED\":case 891:t.pullAtomId[r]=891;break;case\"ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED\":case 892:t.pullAtomId[r]=892;break;case\"ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED\":case 893:t.pullAtomId[r]=893;break;case\"ATOM_PHOTOPICKER_PAGE_INFO_LOGGED\":case 894:t.pullAtomId[r]=894;break;case\"ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED\":case 895:t.pullAtomId[r]=895;break;case\"ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED\":case 896:t.pullAtomId[r]=896;break;case\"ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED\":case 897:t.pullAtomId[r]=897;break;case\"ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED\":case 898:t.pullAtomId[r]=898;break;case\"ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED\":case 899:t.pullAtomId[r]=899;break;case\"ATOM_ATOM_9999\":case 9999:t.pullAtomId[r]=9999;break;case\"ATOM_ATOM_99999\":case 99999:t.pullAtomId[r]=99999;break;case\"ATOM_SCREEN_OFF_REPORTED\":case 776:t.pullAtomId[r]=776;break;case\"ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED\":case 836:t.pullAtomId[r]=836;break;case\"ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED\":case 837:t.pullAtomId[r]=837;break;case\"ATOM_SCREEN_DIM_REPORTED\":case 867:t.pullAtomId[r]=867;break;case\"ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED\":case 784:t.pullAtomId[r]=784;break;case\"ATOM_BACKUP_SETUP_STATUS_REPORTED\":case 785:t.pullAtomId[r]=785;break;case\"ATOM_RANGING_SESSION_CONFIGURED\":case 993:t.pullAtomId[r]=993;break;case\"ATOM_RANGING_SESSION_STARTED\":case 994:t.pullAtomId[r]=994;break;case\"ATOM_RANGING_SESSION_CLOSED\":case 995:t.pullAtomId[r]=995;break;case\"ATOM_RANGING_TECHNOLOGY_STARTED\":case 996:t.pullAtomId[r]=996;break;case\"ATOM_RANGING_TECHNOLOGY_STOPPED\":case 997:t.pullAtomId[r]=997;break;case\"ATOM_RKPD_POOL_STATS\":case 664:t.pullAtomId[r]=664;break;case\"ATOM_RKPD_CLIENT_OPERATION\":case 665:t.pullAtomId[r]=665;break;case\"ATOM_SANDBOX_API_CALLED\":case 488:t.pullAtomId[r]=488;break;case\"ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED\":case 735:t.pullAtomId[r]=735;break;case\"ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION\":case 796:t.pullAtomId[r]=796;break;case\"ATOM_SANDBOX_SDK_STORAGE\":case 10159:t.pullAtomId[r]=10159;break;case\"ATOM_SELINUX_AUDIT_LOG\":case 799:t.pullAtomId[r]=799;break;case\"ATOM_SETTINGS_SPA_REPORTED\":case 622:t.pullAtomId[r]=622;break;case\"ATOM_TEST_EXTENSION_ATOM_REPORTED\":case 660:t.pullAtomId[r]=660;break;case\"ATOM_TEST_RESTRICTED_ATOM_REPORTED\":case 672:t.pullAtomId[r]=672;break;case\"ATOM_STATS_SOCKET_LOSS_REPORTED\":case 752:t.pullAtomId[r]=752;break;case\"ATOM_LOCKSCREEN_SHORTCUT_SELECTED\":case 611:t.pullAtomId[r]=611;break;case\"ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED\":case 612:t.pullAtomId[r]=612;break;case\"ATOM_LAUNCHER_IMPRESSION_EVENT_V2\":case 716:t.pullAtomId[r]=716;break;case\"ATOM_DISPLAY_SWITCH_LATENCY_TRACKED\":case 753:t.pullAtomId[r]=753;break;case\"ATOM_NOTIFICATION_LISTENER_SERVICE\":case 829:t.pullAtomId[r]=829;break;case\"ATOM_NAV_HANDLE_TOUCH_POINTS\":case 869:t.pullAtomId[r]=869;break;case\"ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED\":case 908:t.pullAtomId[r]=908;break;case\"ATOM_COMMUNAL_HUB_SNAPSHOT\":case 10226:t.pullAtomId[r]=10226;break;case\"ATOM_EMERGENCY_NUMBER_DIALED\":case 637:t.pullAtomId[r]=637;break;case\"ATOM_CALL_STATS\":case 10221:t.pullAtomId[r]=10221;break;case\"ATOM_CALL_AUDIO_ROUTE_STATS\":case 10222:t.pullAtomId[r]=10222;break;case\"ATOM_TELECOM_API_STATS\":case 10223:t.pullAtomId[r]=10223;break;case\"ATOM_TELECOM_ERROR_STATS\":case 10224:t.pullAtomId[r]=10224;break;case\"ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED\":case 713:t.pullAtomId[r]=713;break;case\"ATOM_EMERGENCY_NUMBERS_INFO\":case 10180:t.pullAtomId[r]=10180;break;case\"ATOM_DATA_NETWORK_VALIDATION\":case 10207:t.pullAtomId[r]=10207;break;case\"ATOM_DATA_RAT_STATE_CHANGED\":case 854:t.pullAtomId[r]=854;break;case\"ATOM_CONNECTED_CHANNEL_CHANGED\":case 882:t.pullAtomId[r]=882;break;case\"ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED\":case 923:t.pullAtomId[r]=923;break;case\"ATOM_QUALIFIED_RAT_LIST_CHANGED\":case 634:t.pullAtomId[r]=634;break;case\"ATOM_QNS_IMS_CALL_DROP_STATS\":case 635:t.pullAtomId[r]=635;break;case\"ATOM_QNS_FALLBACK_RESTRICTION_CHANGED\":case 636:t.pullAtomId[r]=636;break;case\"ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO\":case 10177:t.pullAtomId[r]=10177;break;case\"ATOM_QNS_HANDOVER_TIME_MILLIS\":case 10178:t.pullAtomId[r]=10178;break;case\"ATOM_QNS_HANDOVER_PINGPONG\":case 10179:t.pullAtomId[r]=10179;break;case\"ATOM_SATELLITE_CONTROLLER\":case 10182:t.pullAtomId[r]=10182;break;case\"ATOM_SATELLITE_SESSION\":case 10183:t.pullAtomId[r]=10183;break;case\"ATOM_SATELLITE_INCOMING_DATAGRAM\":case 10184:t.pullAtomId[r]=10184;break;case\"ATOM_SATELLITE_OUTGOING_DATAGRAM\":case 10185:t.pullAtomId[r]=10185;break;case\"ATOM_SATELLITE_PROVISION\":case 10186:t.pullAtomId[r]=10186;break;case\"ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER\":case 10187:t.pullAtomId[r]=10187;break;case\"ATOM_CARRIER_ROAMING_SATELLITE_SESSION\":case 10211:t.pullAtomId[r]=10211;break;case\"ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS\":case 10212:t.pullAtomId[r]=10212;break;case\"ATOM_CONTROLLER_STATS_PER_PACKAGE\":case 10213:t.pullAtomId[r]=10213;break;case\"ATOM_SATELLITE_ENTITLEMENT\":case 10214:t.pullAtomId[r]=10214;break;case\"ATOM_SATELLITE_CONFIG_UPDATER\":case 10215:t.pullAtomId[r]=10215;break;case\"ATOM_SATELLITE_ACCESS_CONTROLLER\":case 10219:t.pullAtomId[r]=10219;break;case\"ATOM_CELLULAR_IDENTIFIER_DISCLOSED\":case 800:t.pullAtomId[r]=800;break;case\"ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED\":case 738:t.pullAtomId[r]=738;break;case\"ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED\":case 739:t.pullAtomId[r]=739;break;case\"ATOM_THREADNETWORK_DEVICE_INFO_REPORTED\":case 740:t.pullAtomId[r]=740;break;case\"ATOM_BOOT_INTEGRITY_INFO_REPORTED\":case 775:t.pullAtomId[r]=775;break;case\"ATOM_TV_LOW_POWER_STANDBY_POLICY\":case 679:t.pullAtomId[r]=679;break;case\"ATOM_EXTERNAL_TV_INPUT_EVENT\":case 717:t.pullAtomId[r]=717;break;case\"ATOM_TEST_UPROBESTATS_ATOM_REPORTED\":case 915:t.pullAtomId[r]=915;break;case\"ATOM_UWB_ACTIVITY_INFO\":case 10188:t.pullAtomId[r]=10188;break;case\"ATOM_MEDIATOR_UPDATED\":case 721:t.pullAtomId[r]=721;break;case\"ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER\":case 10196:t.pullAtomId[r]=10196;break;case\"ATOM_SYSPROXY_CONNECTION_UPDATED\":case 786:t.pullAtomId[r]=786;break;case\"ATOM_WEAR_COMPANION_CONNECTION_STATE\":case 921:t.pullAtomId[r]=921;break;case\"ATOM_MEDIA_ACTION_REPORTED\":case 608:t.pullAtomId[r]=608;break;case\"ATOM_MEDIA_CONTROLS_LAUNCHED\":case 609:t.pullAtomId[r]=609;break;case\"ATOM_MEDIA_SESSION_STATE_CHANGED\":case 677:t.pullAtomId[r]=677;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY\":case 757:t.pullAtomId[r]=757;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE\":case 758:t.pullAtomId[r]=758;break;case\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT\":case 759:t.pullAtomId[r]=759;break;case\"ATOM_WEAR_MODE_STATE_CHANGED\":case 715:t.pullAtomId[r]=715;break;case\"ATOM_RENDERER_INITIALIZED\":case 736:t.pullAtomId[r]=736;break;case\"ATOM_SCHEMA_VERSION_RECEIVED\":case 737:t.pullAtomId[r]=737;break;case\"ATOM_LAYOUT_INSPECTED\":case 741:t.pullAtomId[r]=741;break;case\"ATOM_LAYOUT_EXPRESSION_INSPECTED\":case 742:t.pullAtomId[r]=742;break;case\"ATOM_LAYOUT_ANIMATIONS_INSPECTED\":case 743:t.pullAtomId[r]=743;break;case\"ATOM_MATERIAL_COMPONENTS_INSPECTED\":case 744:t.pullAtomId[r]=744;break;case\"ATOM_TILE_REQUESTED\":case 745:t.pullAtomId[r]=745;break;case\"ATOM_STATE_RESPONSE_RECEIVED\":case 746:t.pullAtomId[r]=746;break;case\"ATOM_TILE_RESPONSE_RECEIVED\":case 747:t.pullAtomId[r]=747;break;case\"ATOM_INFLATION_FINISHED\":case 748:t.pullAtomId[r]=748;break;case\"ATOM_INFLATION_FAILED\":case 749:t.pullAtomId[r]=749;break;case\"ATOM_IGNORED_INFLATION_FAILURES_REPORTED\":case 750:t.pullAtomId[r]=750;break;case\"ATOM_DRAWABLE_RENDERED\":case 751:t.pullAtomId[r]=751;break;case\"ATOM_WEAR_TIME_SYNC_REQUESTED\":case 911:t.pullAtomId[r]=911;break;case\"ATOM_WEAR_TIME_UPDATE_STARTED\":case 912:t.pullAtomId[r]=912;break;case\"ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED\":case 913:t.pullAtomId[r]=913;break;case\"ATOM_WEAR_TIME_CHANGED\":case 914:t.pullAtomId[r]=914;break;case\"ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED\":case 619:t.pullAtomId[r]=619;break;case\"ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED\":case 620:t.pullAtomId[r]=620;break;case\"ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED\":case 621:t.pullAtomId[r]=621;break;case\"ATOM_WS_WEAR_TIME_SESSION\":case 610:t.pullAtomId[r]=610;break;case\"ATOM_WS_INCOMING_CALL_ACTION_REPORTED\":case 626:t.pullAtomId[r]=626;break;case\"ATOM_WS_CALL_DISCONNECTION_REPORTED\":case 627:t.pullAtomId[r]=627;break;case\"ATOM_WS_CALL_DURATION_REPORTED\":case 628:t.pullAtomId[r]=628;break;case\"ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED\":case 629:t.pullAtomId[r]=629;break;case\"ATOM_WS_CALL_INTERACTION_REPORTED\":case 630:t.pullAtomId[r]=630;break;case\"ATOM_WS_ON_BODY_STATE_CHANGED\":case 787:t.pullAtomId[r]=787;break;case\"ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED\":case 802:t.pullAtomId[r]=802;break;case\"ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED\":case 803:t.pullAtomId[r]=803;break;case\"ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED\":case 804:t.pullAtomId[r]=804;break;case\"ATOM_WS_REMOTE_EVENT_USAGE_REPORTED\":case 920:t.pullAtomId[r]=920;break;case\"ATOM_WS_BUGREPORT_REQUESTED\":case 936:t.pullAtomId[r]=936;break;case\"ATOM_WS_BUGREPORT_TRIGGERED\":case 937:t.pullAtomId[r]=937;break;case\"ATOM_WS_BUGREPORT_FINISHED\":case 938:t.pullAtomId[r]=938;break;case\"ATOM_WS_BUGREPORT_RESULT_RECEIVED\":case 939:t.pullAtomId[r]=939;break;case\"ATOM_WS_STANDALONE_MODE_SNAPSHOT\":case 10197:t.pullAtomId[r]=10197;break;case\"ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT\":case 10206:t.pullAtomId[r]=10206;break;case\"ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT\":case 10225:t.pullAtomId[r]=10225;break;case\"ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT\":case 10227:t.pullAtomId[r]=10227;break;case\"ATOM_WEAR_POWER_MENU_OPENED\":case 731:t.pullAtomId[r]=731;break;case\"ATOM_WEAR_ASSISTANT_OPENED\":case 755:t.pullAtomId[r]=755;break;case\"ATOM_FIRST_OVERLAY_STATE_CHANGED\":case 917:t.pullAtomId[r]=917;break;case\"ATOM_WIFI_AWARE_NDP_REPORTED\":case 638:t.pullAtomId[r]=638;break;case\"ATOM_WIFI_AWARE_ATTACH_REPORTED\":case 639:t.pullAtomId[r]=639;break;case\"ATOM_WIFI_SELF_RECOVERY_TRIGGERED\":case 661:t.pullAtomId[r]=661;break;case\"ATOM_SOFT_AP_STARTED\":case 680:t.pullAtomId[r]=680;break;case\"ATOM_SOFT_AP_STOPPED\":case 681:t.pullAtomId[r]=681;break;case\"ATOM_WIFI_LOCK_RELEASED\":case 687:t.pullAtomId[r]=687;break;case\"ATOM_WIFI_LOCK_DEACTIVATED\":case 688:t.pullAtomId[r]=688;break;case\"ATOM_WIFI_CONFIG_SAVED\":case 689:t.pullAtomId[r]=689;break;case\"ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED\":case 690:t.pullAtomId[r]=690;break;case\"ATOM_WIFI_AWARE_HAL_API_CALLED\":case 691:t.pullAtomId[r]=691;break;case\"ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED\":case 692:t.pullAtomId[r]=692;break;case\"ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED\":case 693:t.pullAtomId[r]=693;break;case\"ATOM_WIFI_THREAD_TASK_EXECUTED\":case 694:t.pullAtomId[r]=694;break;case\"ATOM_WIFI_STATE_CHANGED\":case 700:t.pullAtomId[r]=700;break;case\"ATOM_PNO_SCAN_STARTED\":case 719:t.pullAtomId[r]=719;break;case\"ATOM_PNO_SCAN_STOPPED\":case 720:t.pullAtomId[r]=720;break;case\"ATOM_WIFI_IS_UNUSABLE_REPORTED\":case 722:t.pullAtomId[r]=722;break;case\"ATOM_WIFI_AP_CAPABILITIES_REPORTED\":case 723:t.pullAtomId[r]=723;break;case\"ATOM_SOFT_AP_STATE_CHANGED\":case 805:t.pullAtomId[r]=805;break;case\"ATOM_SCORER_PREDICTION_RESULT_REPORTED\":case 884:t.pullAtomId[r]=884;break;case\"ATOM_WIFI_AWARE_CAPABILITIES\":case 10190:t.pullAtomId[r]=10190;break;case\"ATOM_WIFI_MODULE_INFO\":case 10193:t.pullAtomId[r]=10193;break;case\"ATOM_WIFI_SETTING_INFO\":case 10194:t.pullAtomId[r]=10194;break;case\"ATOM_WIFI_COMPLEX_SETTING_INFO\":case 10195:t.pullAtomId[r]=10195;break;case\"ATOM_WIFI_CONFIGURED_NETWORK_INFO\":case 10198:t.pullAtomId[r]=10198}}if(e.rawPullAtomId){if(!Array.isArray(e.rawPullAtomId))throw TypeError(\".perfetto.protos.StatsdPullAtomConfig.rawPullAtomId: array expected\");t.rawPullAtomId=[];for(r=0;r<e.rawPullAtomId.length;++r)t.rawPullAtomId[r]=0|e.rawPullAtomId[r]}if(null!=e.pullFrequencyMs&&(t.pullFrequencyMs=0|e.pullFrequencyMs),e.packages){if(!Array.isArray(e.packages))throw TypeError(\".perfetto.protos.StatsdPullAtomConfig.packages: array expected\");t.packages=[];for(r=0;r<e.packages.length;++r)t.packages[r]=String(e.packages[r])}return t},Ot.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.pullAtomId=[],r.rawPullAtomId=[],r.packages=[]),t.defaults&&(r.pullFrequencyMs=0),e.pullAtomId&&e.pullAtomId.length){r.pullAtomId=[];for(var n=0;n<e.pullAtomId.length;++n)r.pullAtomId[n]=t.enums!==String||void 0===s.perfetto.protos.AtomId[e.pullAtomId[n]]?e.pullAtomId[n]:s.perfetto.protos.AtomId[e.pullAtomId[n]]}if(e.rawPullAtomId&&e.rawPullAtomId.length){r.rawPullAtomId=[];for(n=0;n<e.rawPullAtomId.length;++n)r.rawPullAtomId[n]=e.rawPullAtomId[n]}if(null!=e.pullFrequencyMs&&e.hasOwnProperty(\"pullFrequencyMs\")&&(r.pullFrequencyMs=e.pullFrequencyMs),e.packages&&e.packages.length){r.packages=[];for(n=0;n<e.packages.length;++n)r.packages[n]=e.packages[n]}return r},Ot.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ot.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StatsdPullAtomConfig\"},Ot),r.AtomId=(t={},(e=Object.create(t))[t[0]=\"ATOM_UNSPECIFIED\"]=0,e[t[2]=\"ATOM_BLE_SCAN_STATE_CHANGED\"]=2,e[t[3]=\"ATOM_PROCESS_STATE_CHANGED\"]=3,e[t[4]=\"ATOM_BLE_SCAN_RESULT_RECEIVED\"]=4,e[t[5]=\"ATOM_SENSOR_STATE_CHANGED\"]=5,e[t[6]=\"ATOM_GPS_SCAN_STATE_CHANGED\"]=6,e[t[7]=\"ATOM_SYNC_STATE_CHANGED\"]=7,e[t[8]=\"ATOM_SCHEDULED_JOB_STATE_CHANGED\"]=8,e[t[9]=\"ATOM_SCREEN_BRIGHTNESS_CHANGED\"]=9,e[t[10]=\"ATOM_WAKELOCK_STATE_CHANGED\"]=10,e[t[11]=\"ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED\"]=11,e[t[12]=\"ATOM_MOBILE_RADIO_POWER_STATE_CHANGED\"]=12,e[t[13]=\"ATOM_WIFI_RADIO_POWER_STATE_CHANGED\"]=13,e[t[14]=\"ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED\"]=14,e[t[15]=\"ATOM_MEMORY_FACTOR_STATE_CHANGED\"]=15,e[t[16]=\"ATOM_EXCESSIVE_CPU_USAGE_REPORTED\"]=16,e[t[17]=\"ATOM_CACHED_KILL_REPORTED\"]=17,e[t[18]=\"ATOM_PROCESS_MEMORY_STAT_REPORTED\"]=18,e[t[19]=\"ATOM_LAUNCHER_EVENT\"]=19,e[t[20]=\"ATOM_BATTERY_SAVER_MODE_STATE_CHANGED\"]=20,e[t[21]=\"ATOM_DEVICE_IDLE_MODE_STATE_CHANGED\"]=21,e[t[22]=\"ATOM_DEVICE_IDLING_MODE_STATE_CHANGED\"]=22,e[t[23]=\"ATOM_AUDIO_STATE_CHANGED\"]=23,e[t[24]=\"ATOM_MEDIA_CODEC_STATE_CHANGED\"]=24,e[t[25]=\"ATOM_CAMERA_STATE_CHANGED\"]=25,e[t[26]=\"ATOM_FLASHLIGHT_STATE_CHANGED\"]=26,e[t[27]=\"ATOM_UID_PROCESS_STATE_CHANGED\"]=27,e[t[28]=\"ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED\"]=28,e[t[29]=\"ATOM_SCREEN_STATE_CHANGED\"]=29,e[t[30]=\"ATOM_BATTERY_LEVEL_CHANGED\"]=30,e[t[31]=\"ATOM_CHARGING_STATE_CHANGED\"]=31,e[t[32]=\"ATOM_PLUGGED_STATE_CHANGED\"]=32,e[t[33]=\"ATOM_INTERACTIVE_STATE_CHANGED\"]=33,e[t[34]=\"ATOM_TOUCH_EVENT_REPORTED\"]=34,e[t[35]=\"ATOM_WAKEUP_ALARM_OCCURRED\"]=35,e[t[36]=\"ATOM_KERNEL_WAKEUP_REPORTED\"]=36,e[t[37]=\"ATOM_WIFI_LOCK_STATE_CHANGED\"]=37,e[t[38]=\"ATOM_WIFI_SIGNAL_STRENGTH_CHANGED\"]=38,e[t[39]=\"ATOM_WIFI_SCAN_STATE_CHANGED\"]=39,e[t[40]=\"ATOM_PHONE_SIGNAL_STRENGTH_CHANGED\"]=40,e[t[41]=\"ATOM_SETTING_CHANGED\"]=41,e[t[42]=\"ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED\"]=42,e[t[43]=\"ATOM_ISOLATED_UID_CHANGED\"]=43,e[t[44]=\"ATOM_PACKET_WAKEUP_OCCURRED\"]=44,e[t[45]=\"ATOM_WALL_CLOCK_TIME_SHIFTED\"]=45,e[t[46]=\"ATOM_ANOMALY_DETECTED\"]=46,e[t[47]=\"ATOM_APP_BREADCRUMB_REPORTED\"]=47,e[t[48]=\"ATOM_APP_START_OCCURRED\"]=48,e[t[49]=\"ATOM_APP_START_CANCELED\"]=49,e[t[50]=\"ATOM_APP_START_FULLY_DRAWN\"]=50,e[t[51]=\"ATOM_LMK_KILL_OCCURRED\"]=51,e[t[52]=\"ATOM_PICTURE_IN_PICTURE_STATE_CHANGED\"]=52,e[t[53]=\"ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED\"]=53,e[t[55]=\"ATOM_APP_START_MEMORY_STATE_CAPTURED\"]=55,e[t[56]=\"ATOM_SHUTDOWN_SEQUENCE_REPORTED\"]=56,e[t[57]=\"ATOM_BOOT_SEQUENCE_REPORTED\"]=57,e[t[59]=\"ATOM_OVERLAY_STATE_CHANGED\"]=59,e[t[60]=\"ATOM_FOREGROUND_SERVICE_STATE_CHANGED\"]=60,e[t[61]=\"ATOM_CALL_STATE_CHANGED\"]=61,e[t[62]=\"ATOM_KEYGUARD_STATE_CHANGED\"]=62,e[t[63]=\"ATOM_KEYGUARD_BOUNCER_STATE_CHANGED\"]=63,e[t[64]=\"ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED\"]=64,e[t[65]=\"ATOM_APP_DIED\"]=65,e[t[66]=\"ATOM_RESOURCE_CONFIGURATION_CHANGED\"]=66,e[t[67]=\"ATOM_BLUETOOTH_ENABLED_STATE_CHANGED\"]=67,e[t[68]=\"ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED\"]=68,e[t[69]=\"ATOM_GPS_SIGNAL_QUALITY_CHANGED\"]=69,e[t[70]=\"ATOM_USB_CONNECTOR_STATE_CHANGED\"]=70,e[t[71]=\"ATOM_SPEAKER_IMPEDANCE_REPORTED\"]=71,e[t[72]=\"ATOM_HARDWARE_FAILED\"]=72,e[t[73]=\"ATOM_PHYSICAL_DROP_DETECTED\"]=73,e[t[74]=\"ATOM_CHARGE_CYCLES_REPORTED\"]=74,e[t[75]=\"ATOM_MOBILE_CONNECTION_STATE_CHANGED\"]=75,e[t[76]=\"ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED\"]=76,e[t[77]=\"ATOM_USB_DEVICE_ATTACHED\"]=77,e[t[78]=\"ATOM_APP_CRASH_OCCURRED\"]=78,e[t[79]=\"ATOM_ANR_OCCURRED\"]=79,e[t[80]=\"ATOM_WTF_OCCURRED\"]=80,e[t[81]=\"ATOM_LOW_MEM_REPORTED\"]=81,e[t[82]=\"ATOM_GENERIC_ATOM\"]=82,e[t[84]=\"ATOM_VIBRATOR_STATE_CHANGED\"]=84,e[t[85]=\"ATOM_DEFERRED_JOB_STATS_REPORTED\"]=85,e[t[86]=\"ATOM_THERMAL_THROTTLING\"]=86,e[t[87]=\"ATOM_BIOMETRIC_ACQUIRED\"]=87,e[t[88]=\"ATOM_BIOMETRIC_AUTHENTICATED\"]=88,e[t[89]=\"ATOM_BIOMETRIC_ERROR_OCCURRED\"]=89,e[t[90]=\"ATOM_UI_EVENT_REPORTED\"]=90,e[t[91]=\"ATOM_BATTERY_HEALTH_SNAPSHOT\"]=91,e[t[92]=\"ATOM_SLOW_IO\"]=92,e[t[93]=\"ATOM_BATTERY_CAUSED_SHUTDOWN\"]=93,e[t[94]=\"ATOM_PHONE_SERVICE_STATE_CHANGED\"]=94,e[t[95]=\"ATOM_PHONE_STATE_CHANGED\"]=95,e[t[96]=\"ATOM_USER_RESTRICTION_CHANGED\"]=96,e[t[97]=\"ATOM_SETTINGS_UI_CHANGED\"]=97,e[t[98]=\"ATOM_CONNECTIVITY_STATE_CHANGED\"]=98,e[t[99]=\"ATOM_SERVICE_STATE_CHANGED\"]=99,e[t[100]=\"ATOM_SERVICE_LAUNCH_REPORTED\"]=100,e[t[101]=\"ATOM_FLAG_FLIP_UPDATE_OCCURRED\"]=101,e[t[102]=\"ATOM_BINARY_PUSH_STATE_CHANGED\"]=102,e[t[103]=\"ATOM_DEVICE_POLICY_EVENT\"]=103,e[t[104]=\"ATOM_DOCS_UI_FILE_OP_CANCELED\"]=104,e[t[105]=\"ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED\"]=105,e[t[106]=\"ATOM_DOCS_UI_FILE_OP_FAILURE\"]=106,e[t[107]=\"ATOM_DOCS_UI_PROVIDER_FILE_OP\"]=107,e[t[108]=\"ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST\"]=108,e[t[109]=\"ATOM_DOCS_UI_LAUNCH_REPORTED\"]=109,e[t[110]=\"ATOM_DOCS_UI_ROOT_VISITED\"]=110,e[t[111]=\"ATOM_DOCS_UI_STARTUP_MS\"]=111,e[t[112]=\"ATOM_DOCS_UI_USER_ACTION_REPORTED\"]=112,e[t[113]=\"ATOM_WIFI_ENABLED_STATE_CHANGED\"]=113,e[t[114]=\"ATOM_WIFI_RUNNING_STATE_CHANGED\"]=114,e[t[115]=\"ATOM_APP_COMPACTED\"]=115,e[t[116]=\"ATOM_NETWORK_DNS_EVENT_REPORTED\"]=116,e[t[117]=\"ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED\"]=117,e[t[118]=\"ATOM_DOCS_UI_PICK_RESULT_REPORTED\"]=118,e[t[119]=\"ATOM_DOCS_UI_SEARCH_MODE_REPORTED\"]=119,e[t[120]=\"ATOM_DOCS_UI_SEARCH_TYPE_REPORTED\"]=120,e[t[121]=\"ATOM_DATA_STALL_EVENT\"]=121,e[t[122]=\"ATOM_RESCUE_PARTY_RESET_REPORTED\"]=122,e[t[123]=\"ATOM_SIGNED_CONFIG_REPORTED\"]=123,e[t[124]=\"ATOM_GNSS_NI_EVENT_REPORTED\"]=124,e[t[125]=\"ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT\"]=125,e[t[126]=\"ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED\"]=126,e[t[127]=\"ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED\"]=127,e[t[128]=\"ATOM_APP_DOWNGRADED\"]=128,e[t[129]=\"ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED\"]=129,e[t[130]=\"ATOM_LOW_STORAGE_STATE_CHANGED\"]=130,e[t[131]=\"ATOM_GNSS_NFW_NOTIFICATION_REPORTED\"]=131,e[t[132]=\"ATOM_GNSS_CONFIGURATION_REPORTED\"]=132,e[t[133]=\"ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED\"]=133,e[t[134]=\"ATOM_NFC_ERROR_OCCURRED\"]=134,e[t[135]=\"ATOM_NFC_STATE_CHANGED\"]=135,e[t[136]=\"ATOM_NFC_BEAM_OCCURRED\"]=136,e[t[137]=\"ATOM_NFC_CARDEMULATION_OCCURRED\"]=137,e[t[138]=\"ATOM_NFC_TAG_OCCURRED\"]=138,e[t[139]=\"ATOM_NFC_HCE_TRANSACTION_OCCURRED\"]=139,e[t[140]=\"ATOM_SE_STATE_CHANGED\"]=140,e[t[141]=\"ATOM_SE_OMAPI_REPORTED\"]=141,e[t[142]=\"ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED\"]=142,e[t[143]=\"ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED\"]=143,e[t[144]=\"ATOM_ADB_CONNECTION_CHANGED\"]=144,e[t[145]=\"ATOM_SPEECH_DSP_STAT_REPORTED\"]=145,e[t[146]=\"ATOM_USB_CONTAMINANT_REPORTED\"]=146,e[t[147]=\"ATOM_WATCHDOG_ROLLBACK_OCCURRED\"]=147,e[t[148]=\"ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED\"]=148,e[t[149]=\"ATOM_BUBBLE_UI_CHANGED\"]=149,e[t[150]=\"ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED\"]=150,e[t[151]=\"ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED\"]=151,e[t[152]=\"ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED\"]=152,e[t[153]=\"ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED\"]=153,e[t[154]=\"ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED\"]=154,e[t[155]=\"ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED\"]=155,e[t[156]=\"ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED\"]=156,e[t[157]=\"ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED\"]=157,e[t[158]=\"ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED\"]=158,e[t[159]=\"ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED\"]=159,e[t[160]=\"ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED\"]=160,e[t[161]=\"ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED\"]=161,e[t[162]=\"ATOM_BLUETOOTH_DEVICE_INFO_REPORTED\"]=162,e[t[163]=\"ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED\"]=163,e[t[164]=\"ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED\"]=164,e[t[165]=\"ATOM_BLUETOOTH_BOND_STATE_CHANGED\"]=165,e[t[166]=\"ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED\"]=166,e[t[167]=\"ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED\"]=167,e[t[168]=\"ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED\"]=168,e[t[169]=\"ATOM_PROCESS_START_TIME\"]=169,e[t[170]=\"ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED\"]=170,e[t[171]=\"ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED\"]=171,e[t[172]=\"ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED\"]=172,e[t[173]=\"ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED\"]=173,e[t[174]=\"ATOM_ASSIST_GESTURE_STAGE_REPORTED\"]=174,e[t[175]=\"ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED\"]=175,e[t[176]=\"ATOM_ASSIST_GESTURE_PROGRESS_REPORTED\"]=176,e[t[177]=\"ATOM_TOUCH_GESTURE_CLASSIFIED\"]=177,e[t[178]=\"ATOM_HIDDEN_API_USED\"]=178,e[t[179]=\"ATOM_STYLE_UI_CHANGED\"]=179,e[t[180]=\"ATOM_PRIVACY_INDICATORS_INTERACTED\"]=180,e[t[181]=\"ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED\"]=181,e[t[182]=\"ATOM_NETWORK_STACK_REPORTED\"]=182,e[t[183]=\"ATOM_APP_MOVED_STORAGE_REPORTED\"]=183,e[t[184]=\"ATOM_BIOMETRIC_ENROLLED\"]=184,e[t[185]=\"ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED\"]=185,e[t[186]=\"ATOM_TOMB_STONE_OCCURRED\"]=186,e[t[187]=\"ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED\"]=187,e[t[188]=\"ATOM_INTELLIGENCE_EVENT_REPORTED\"]=188,e[t[189]=\"ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED\"]=189,e[t[190]=\"ATOM_ROLE_REQUEST_RESULT_REPORTED\"]=190,e[t[191]=\"ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED\"]=191,e[t[192]=\"ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED\"]=192,e[t[193]=\"ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED\"]=193,e[t[194]=\"ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED\"]=194,e[t[195]=\"ATOM_MEDIAMETRICS_CODEC_REPORTED\"]=195,e[t[196]=\"ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED\"]=196,e[t[197]=\"ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED\"]=197,e[t[198]=\"ATOM_MEDIAMETRICS_MEDIADRM_REPORTED\"]=198,e[t[199]=\"ATOM_MEDIAMETRICS_NUPLAYER_REPORTED\"]=199,e[t[200]=\"ATOM_MEDIAMETRICS_RECORDER_REPORTED\"]=200,e[t[201]=\"ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED\"]=201,e[t[203]=\"ATOM_CAR_POWER_STATE_CHANGED\"]=203,e[t[204]=\"ATOM_GARAGE_MODE_INFO\"]=204,e[t[205]=\"ATOM_TEST_ATOM_REPORTED\"]=205,e[t[206]=\"ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED\"]=206,e[t[207]=\"ATOM_CONTENT_CAPTURE_SERVICE_EVENTS\"]=207,e[t[208]=\"ATOM_CONTENT_CAPTURE_SESSION_EVENTS\"]=208,e[t[209]=\"ATOM_CONTENT_CAPTURE_FLUSHED\"]=209,e[t[210]=\"ATOM_LOCATION_MANAGER_API_USAGE_REPORTED\"]=210,e[t[211]=\"ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED\"]=211,e[t[212]=\"ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT\"]=212,e[t[213]=\"ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS\"]=213,e[t[214]=\"ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION\"]=214,e[t[215]=\"ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED\"]=215,e[t[216]=\"ATOM_APP_PERMISSION_FRAGMENT_VIEWED\"]=216,e[t[217]=\"ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED\"]=217,e[t[218]=\"ATOM_PERMISSION_APPS_FRAGMENT_VIEWED\"]=218,e[t[219]=\"ATOM_TEXT_SELECTION_EVENT\"]=219,e[t[220]=\"ATOM_TEXT_LINKIFY_EVENT\"]=220,e[t[221]=\"ATOM_CONVERSATION_ACTIONS_EVENT\"]=221,e[t[222]=\"ATOM_LANGUAGE_DETECTION_EVENT\"]=222,e[t[223]=\"ATOM_EXCLUSION_RECT_STATE_CHANGED\"]=223,e[t[224]=\"ATOM_BACK_GESTURE_REPORTED_REPORTED\"]=224,e[t[225]=\"ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED\"]=225,e[t[226]=\"ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED\"]=226,e[t[227]=\"ATOM_CAMERA_ACTION_EVENT\"]=227,e[t[228]=\"ATOM_APP_COMPATIBILITY_CHANGE_REPORTED\"]=228,e[t[229]=\"ATOM_PERFETTO_UPLOADED\"]=229,e[t[230]=\"ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED\"]=230,e[t[233]=\"ATOM_MEDIA_PROVIDER_SCAN_OCCURRED\"]=233,e[t[234]=\"ATOM_MEDIA_CONTENT_DELETED\"]=234,e[t[235]=\"ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED\"]=235,e[t[236]=\"ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED\"]=236,e[t[237]=\"ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED\"]=237,e[t[238]=\"ATOM_REBOOT_ESCROW_RECOVERY_REPORTED\"]=238,e[t[239]=\"ATOM_BOOT_TIME_EVENT_DURATION_REPORTED\"]=239,e[t[240]=\"ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED\"]=240,e[t[241]=\"ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED\"]=241,e[t[242]=\"ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED\"]=242,e[t[243]=\"ATOM_USERSPACE_REBOOT_REPORTED\"]=243,e[t[244]=\"ATOM_NOTIFICATION_REPORTED\"]=244,e[t[245]=\"ATOM_NOTIFICATION_PANEL_REPORTED\"]=245,e[t[246]=\"ATOM_NOTIFICATION_CHANNEL_MODIFIED\"]=246,e[t[247]=\"ATOM_INTEGRITY_CHECK_RESULT_REPORTED\"]=247,e[t[248]=\"ATOM_INTEGRITY_RULES_PUSHED\"]=248,e[t[249]=\"ATOM_CB_MESSAGE_REPORTED\"]=249,e[t[250]=\"ATOM_CB_MESSAGE_ERROR\"]=250,e[t[251]=\"ATOM_WIFI_HEALTH_STAT_REPORTED\"]=251,e[t[252]=\"ATOM_WIFI_FAILURE_STAT_REPORTED\"]=252,e[t[253]=\"ATOM_WIFI_CONNECTION_RESULT_REPORTED\"]=253,e[t[254]=\"ATOM_APP_FREEZE_CHANGED\"]=254,e[t[255]=\"ATOM_SNAPSHOT_MERGE_REPORTED\"]=255,e[t[256]=\"ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED\"]=256,e[t[257]=\"ATOM_DISPLAY_JANK_REPORTED\"]=257,e[t[258]=\"ATOM_APP_STANDBY_BUCKET_CHANGED\"]=258,e[t[259]=\"ATOM_SHARESHEET_STARTED\"]=259,e[t[260]=\"ATOM_RANKING_SELECTED\"]=260,e[t[261]=\"ATOM_TVSETTINGS_UI_INTERACTED\"]=261,e[t[262]=\"ATOM_LAUNCHER_SNAPSHOT\"]=262,e[t[263]=\"ATOM_PACKAGE_INSTALLER_V2_REPORTED\"]=263,e[t[264]=\"ATOM_USER_LIFECYCLE_JOURNEY_REPORTED\"]=264,e[t[265]=\"ATOM_USER_LIFECYCLE_EVENT_OCCURRED\"]=265,e[t[266]=\"ATOM_ACCESSIBILITY_SHORTCUT_REPORTED\"]=266,e[t[267]=\"ATOM_ACCESSIBILITY_SERVICE_REPORTED\"]=267,e[t[268]=\"ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED\"]=268,e[t[269]=\"ATOM_APP_USAGE_EVENT_OCCURRED\"]=269,e[t[270]=\"ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED\"]=270,e[t[271]=\"ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED\"]=271,e[t[272]=\"ATOM_AUTO_REVOKED_APP_INTERACTION\"]=272,e[t[273]=\"ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION\"]=273,e[t[274]=\"ATOM_EVS_USAGE_STATS_REPORTED\"]=274,e[t[275]=\"ATOM_AUDIO_POWER_USAGE_DATA_REPORTED\"]=275,e[t[276]=\"ATOM_TV_TUNER_STATE_CHANGED\"]=276,e[t[277]=\"ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED\"]=277,e[t[278]=\"ATOM_CB_MESSAGE_FILTERED\"]=278,e[t[279]=\"ATOM_TV_TUNER_DVR_STATUS\"]=279,e[t[280]=\"ATOM_TV_CAS_SESSION_OPEN_STATUS\"]=280,e[t[281]=\"ATOM_ASSISTANT_INVOCATION_REPORTED\"]=281,e[t[282]=\"ATOM_DISPLAY_WAKE_REPORTED\"]=282,e[t[283]=\"ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED\"]=283,e[t[284]=\"ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED\"]=284,e[t[285]=\"ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED\"]=285,e[t[286]=\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED\"]=286,e[t[287]=\"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED\"]=287,e[t[288]=\"ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED\"]=288,e[t[289]=\"ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED\"]=289,e[t[290]=\"ATOM_NETWORK_IP_PROVISIONING_REPORTED\"]=290,e[t[291]=\"ATOM_NETWORK_DHCP_RENEW_REPORTED\"]=291,e[t[292]=\"ATOM_NETWORK_VALIDATION_REPORTED\"]=292,e[t[293]=\"ATOM_NETWORK_STACK_QUIRK_REPORTED\"]=293,e[t[294]=\"ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED\"]=294,e[t[295]=\"ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED\"]=295,e[t[296]=\"ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED\"]=296,e[t[297]=\"ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED\"]=297,e[t[298]=\"ATOM_BLOB_COMMITTED\"]=298,e[t[299]=\"ATOM_BLOB_LEASED\"]=299,e[t[300]=\"ATOM_BLOB_OPENED\"]=300,e[t[301]=\"ATOM_CONTACTS_PROVIDER_STATUS_REPORTED\"]=301,e[t[302]=\"ATOM_KEYSTORE_KEY_EVENT_REPORTED\"]=302,e[t[303]=\"ATOM_NETWORK_TETHERING_REPORTED\"]=303,e[t[304]=\"ATOM_IME_TOUCH_REPORTED\"]=304,e[t[305]=\"ATOM_UI_INTERACTION_FRAME_INFO_REPORTED\"]=305,e[t[306]=\"ATOM_UI_ACTION_LATENCY_REPORTED\"]=306,e[t[307]=\"ATOM_WIFI_DISCONNECT_REPORTED\"]=307,e[t[308]=\"ATOM_WIFI_CONNECTION_STATE_CHANGED\"]=308,e[t[309]=\"ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED\"]=309,e[t[310]=\"ATOM_HDMI_CEC_MESSAGE_REPORTED\"]=310,e[t[311]=\"ATOM_AIRPLANE_MODE\"]=311,e[t[312]=\"ATOM_MODEM_RESTART\"]=312,e[t[313]=\"ATOM_CARRIER_ID_MISMATCH_REPORTED\"]=313,e[t[314]=\"ATOM_CARRIER_ID_TABLE_UPDATED\"]=314,e[t[315]=\"ATOM_DATA_STALL_RECOVERY_REPORTED\"]=315,e[t[316]=\"ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED\"]=316,e[t[317]=\"ATOM_TLS_HANDSHAKE_REPORTED\"]=317,e[t[318]=\"ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED\"]=318,e[t[319]=\"ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED\"]=319,e[t[320]=\"ATOM_MEDIAMETRICS_PLAYBACK_REPORTED\"]=320,e[t[321]=\"ATOM_MEDIA_NETWORK_INFO_CHANGED\"]=321,e[t[322]=\"ATOM_MEDIA_PLAYBACK_STATE_CHANGED\"]=322,e[t[323]=\"ATOM_MEDIA_PLAYBACK_ERROR_REPORTED\"]=323,e[t[324]=\"ATOM_MEDIA_PLAYBACK_TRACK_CHANGED\"]=324,e[t[325]=\"ATOM_WIFI_SCAN_REPORTED\"]=325,e[t[326]=\"ATOM_WIFI_PNO_SCAN_REPORTED\"]=326,e[t[327]=\"ATOM_TIF_TUNE_CHANGED\"]=327,e[t[328]=\"ATOM_AUTO_ROTATE_REPORTED\"]=328,e[t[329]=\"ATOM_PERFETTO_TRIGGER\"]=329,e[t[330]=\"ATOM_TRANSCODING_DATA\"]=330,e[t[331]=\"ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED\"]=331,e[t[333]=\"ATOM_DEVICE_ROTATED\"]=333,e[t[334]=\"ATOM_SIM_SPECIFIC_SETTINGS_RESTORED\"]=334,e[t[335]=\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED\"]=335,e[t[336]=\"ATOM_PIN_STORAGE_EVENT\"]=336,e[t[337]=\"ATOM_FACE_DOWN_REPORTED\"]=337,e[t[338]=\"ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED\"]=338,e[t[339]=\"ATOM_REBOOT_ESCROW_PREPARATION_REPORTED\"]=339,e[t[340]=\"ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED\"]=340,e[t[341]=\"ATOM_REBOOT_ESCROW_REBOOT_REPORTED\"]=341,e[t[342]=\"ATOM_BINDER_LATENCY_REPORTED\"]=342,e[t[343]=\"ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED\"]=343,e[t[344]=\"ATOM_MEDIA_TRANSCODING_SESSION_ENDED\"]=344,e[t[345]=\"ATOM_MAGNIFICATION_USAGE_REPORTED\"]=345,e[t[346]=\"ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED\"]=346,e[t[347]=\"ATOM_APP_SEARCH_CALL_STATS_REPORTED\"]=347,e[t[348]=\"ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED\"]=348,e[t[349]=\"ATOM_DEVICE_CONTROL_CHANGED\"]=349,e[t[350]=\"ATOM_DEVICE_STATE_CHANGED\"]=350,e[t[351]=\"ATOM_INPUTDEVICE_REGISTERED\"]=351,e[t[352]=\"ATOM_SMARTSPACE_CARD_REPORTED\"]=352,e[t[353]=\"ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED\"]=353,e[t[354]=\"ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED\"]=354,e[t[355]=\"ATOM_AUTH_ENROLL_ACTION_INVOKED\"]=355,e[t[356]=\"ATOM_AUTH_DEPRECATED_API_USED\"]=356,e[t[357]=\"ATOM_UNATTENDED_REBOOT_OCCURRED\"]=357,e[t[358]=\"ATOM_LONG_REBOOT_BLOCKING_REPORTED\"]=358,e[t[359]=\"ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED\"]=359,e[t[364]=\"ATOM_FDTRACK_EVENT_OCCURRED\"]=364,e[t[365]=\"ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED\"]=365,e[t[367]=\"ATOM_ALARM_BATCH_DELIVERED\"]=367,e[t[368]=\"ATOM_ALARM_SCHEDULED\"]=368,e[t[369]=\"ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED\"]=369,e[t[370]=\"ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED\"]=370,e[t[371]=\"ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED\"]=371,e[t[372]=\"ATOM_APP_SEARCH_QUERY_STATS_REPORTED\"]=372,e[t[373]=\"ATOM_APP_PROCESS_DIED\"]=373,e[t[374]=\"ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED\"]=374,e[t[375]=\"ATOM_SLOW_INPUT_EVENT_REPORTED\"]=375,e[t[376]=\"ATOM_ANR_OCCURRED_PROCESSING_STARTED\"]=376,e[t[377]=\"ATOM_APP_SEARCH_REMOVE_STATS_REPORTED\"]=377,e[t[378]=\"ATOM_MEDIA_CODEC_REPORTED\"]=378,e[t[379]=\"ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION\"]=379,e[t[380]=\"ATOM_PERMISSION_DETAILS_INTERACTION\"]=380,e[t[381]=\"ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION\"]=381,e[t[382]=\"ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION\"]=382,e[t[383]=\"ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED\"]=383,e[t[384]=\"ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT\"]=384,e[t[386]=\"ATOM_APP_COMPAT_STATE_CHANGED\"]=386,e[t[387]=\"ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED\"]=387,e[t[388]=\"ATOM_SPLITSCREEN_UI_CHANGED\"]=388,e[t[389]=\"ATOM_NETWORK_DNS_HANDSHAKE_REPORTED\"]=389,e[t[390]=\"ATOM_BLUETOOTH_CODE_PATH_COUNTER\"]=390,e[t[392]=\"ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY\"]=392,e[t[393]=\"ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED\"]=393,e[t[394]=\"ATOM_NEURALNETWORKS_COMPILATION_COMPLETED\"]=394,e[t[395]=\"ATOM_NEURALNETWORKS_EXECUTION_COMPLETED\"]=395,e[t[396]=\"ATOM_NEURALNETWORKS_COMPILATION_FAILED\"]=396,e[t[397]=\"ATOM_NEURALNETWORKS_EXECUTION_FAILED\"]=397,e[t[398]=\"ATOM_CONTEXT_HUB_BOOTED\"]=398,e[t[399]=\"ATOM_CONTEXT_HUB_RESTARTED\"]=399,e[t[400]=\"ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED\"]=400,e[t[401]=\"ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED\"]=401,e[t[402]=\"ATOM_UWB_SESSION_INITED\"]=402,e[t[403]=\"ATOM_UWB_SESSION_CLOSED\"]=403,e[t[404]=\"ATOM_UWB_FIRST_RANGING_RECEIVED\"]=404,e[t[405]=\"ATOM_UWB_RANGING_MEASUREMENT_RECEIVED\"]=405,e[t[406]=\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED\"]=406,e[t[407]=\"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED\"]=407,e[t[408]=\"ATOM_CLIPBOARD_CLEARED\"]=408,e[t[409]=\"ATOM_VM_CREATION_REQUESTED\"]=409,e[t[410]=\"ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED\"]=410,e[t[412]=\"ATOM_APPLICATION_LOCALES_CHANGED\"]=412,e[t[413]=\"ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED\"]=413,e[t[414]=\"ATOM_FOLD_STATE_DURATION_REPORTED\"]=414,e[t[415]=\"ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED\"]=415,e[t[416]=\"ATOM_DISPLAY_HBM_STATE_CHANGED\"]=416,e[t[417]=\"ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED\"]=417,e[t[418]=\"ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED\"]=418,e[t[419]=\"ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED\"]=419,e[t[420]=\"ATOM_VBMETA_DIGEST_REPORTED\"]=420,e[t[421]=\"ATOM_APEX_INFO_GATHERED\"]=421,e[t[422]=\"ATOM_PVM_INFO_GATHERED\"]=422,e[t[423]=\"ATOM_WEAR_SETTINGS_UI_INTERACTED\"]=423,e[t[424]=\"ATOM_TRACING_SERVICE_REPORT_EVENT\"]=424,e[t[425]=\"ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED\"]=425,e[t[426]=\"ATOM_LAUNCHER_LATENCY\"]=426,e[t[427]=\"ATOM_DROPBOX_ENTRY_DROPPED\"]=427,e[t[428]=\"ATOM_WIFI_P2P_CONNECTION_REPORTED\"]=428,e[t[429]=\"ATOM_GAME_STATE_CHANGED\"]=429,e[t[430]=\"ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED\"]=430,e[t[431]=\"ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED\"]=431,e[t[432]=\"ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED\"]=432,e[t[433]=\"ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED\"]=433,e[t[434]=\"ATOM_HOTWORD_DETECTOR_EVENTS\"]=434,e[t[437]=\"ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED\"]=437,e[t[440]=\"ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED\"]=440,e[t[441]=\"ATOM_APP_BACKGROUND_RESTRICTIONS_INFO\"]=441,e[t[442]=\"ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED\"]=442,e[t[443]=\"ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED\"]=443,e[t[444]=\"ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED\"]=444,e[t[445]=\"ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED\"]=445,e[t[446]=\"ATOM_GNSS_PSDS_DOWNLOAD_REPORTED\"]=446,e[t[447]=\"ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED\"]=447,e[t[448]=\"ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED\"]=448,e[t[449]=\"ATOM_DREAM_UI_EVENT_REPORTED\"]=449,e[t[450]=\"ATOM_TASK_MANAGER_EVENT_REPORTED\"]=450,e[t[451]=\"ATOM_CDM_ASSOCIATION_ACTION\"]=451,e[t[452]=\"ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED\"]=452,e[t[453]=\"ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED\"]=453,e[t[454]=\"ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED\"]=454,e[t[455]=\"ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED\"]=455,e[t[456]=\"ATOM_UWB_DEVICE_ERROR_REPORTED\"]=456,e[t[457]=\"ATOM_ISOLATED_COMPILATION_SCHEDULED\"]=457,e[t[458]=\"ATOM_ISOLATED_COMPILATION_ENDED\"]=458,e[t[459]=\"ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE\"]=459,e[t[460]=\"ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED\"]=460,e[t[461]=\"ATOM_TELEPHONY_ANOMALY_DETECTED\"]=461,e[t[462]=\"ATOM_LETTERBOX_POSITION_CHANGED\"]=462,e[t[463]=\"ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT\"]=463,e[t[464]=\"ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO\"]=464,e[t[465]=\"ATOM_REMOTE_KEY_PROVISIONING_TIMING\"]=465,e[t[466]=\"ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT\"]=466,e[t[468]=\"ATOM_SYNC_EXEMPTION_OCCURRED\"]=468,e[t[469]=\"ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED\"]=469,e[t[470]=\"ATOM_DOCK_STATE_CHANGED\"]=470,e[t[471]=\"ATOM_SAFETY_SOURCE_STATE_COLLECTED\"]=471,e[t[472]=\"ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED\"]=472,e[t[473]=\"ATOM_SAFETY_CENTER_INTERACTION_REPORTED\"]=473,e[t[474]=\"ATOM_SETTINGS_PROVIDER_SETTING_CHANGED\"]=474,e[t[475]=\"ATOM_BROADCAST_DELIVERY_EVENT_REPORTED\"]=475,e[t[476]=\"ATOM_SERVICE_REQUEST_EVENT_REPORTED\"]=476,e[t[477]=\"ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED\"]=477,e[t[478]=\"ATOM_BLUETOOTH_DEVICE_NAME_REPORTED\"]=478,e[t[479]=\"ATOM_CB_CONFIG_UPDATED\"]=479,e[t[480]=\"ATOM_CB_MODULE_ERROR_REPORTED\"]=480,e[t[481]=\"ATOM_CB_SERVICE_FEATURE_CHANGED\"]=481,e[t[482]=\"ATOM_CB_RECEIVER_FEATURE_CHANGED\"]=482,e[t[484]=\"ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION\"]=484,e[t[485]=\"ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION\"]=485,e[t[486]=\"ATOM_PRIVACY_SIGNALS_JOB_FAILURE\"]=486,e[t[487]=\"ATOM_VIBRATION_REPORTED\"]=487,e[t[489]=\"ATOM_UWB_RANGING_START\"]=489,e[t[491]=\"ATOM_APP_COMPACTED_V2\"]=491,e[t[494]=\"ATOM_DISPLAY_BRIGHTNESS_CHANGED\"]=494,e[t[495]=\"ATOM_ACTIVITY_ACTION_BLOCKED\"]=495,e[t[504]=\"ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED\"]=504,e[t[505]=\"ATOM_VM_BOOTED\"]=505,e[t[506]=\"ATOM_VM_EXITED\"]=506,e[t[507]=\"ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED\"]=507,e[t[508]=\"ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED\"]=508,e[t[509]=\"ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED\"]=509,e[t[510]=\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED\"]=510,e[t[511]=\"ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED\"]=511,e[t[513]=\"ATOM_HEARING_AID_INFO_REPORTED\"]=513,e[t[514]=\"ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED\"]=514,e[t[515]=\"ATOM_AMBIENT_MODE_CHANGED\"]=515,e[t[516]=\"ATOM_ANR_LATENCY_REPORTED\"]=516,e[t[517]=\"ATOM_RESOURCE_API_INFO\"]=517,e[t[518]=\"ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED\"]=518,e[t[519]=\"ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED\"]=519,e[t[520]=\"ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED\"]=520,e[t[521]=\"ATOM_AIRPLANE_MODE_SESSION_REPORTED\"]=521,e[t[522]=\"ATOM_VM_CPU_STATUS_REPORTED\"]=522,e[t[523]=\"ATOM_VM_MEM_STATUS_REPORTED\"]=523,e[t[524]=\"ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED\"]=524,e[t[525]=\"ATOM_DEFAULT_NETWORK_REMATCH_INFO\"]=525,e[t[526]=\"ATOM_NETWORK_SELECTION_PERFORMANCE\"]=526,e[t[527]=\"ATOM_NETWORK_NSD_REPORTED\"]=527,e[t[529]=\"ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED\"]=529,e[t[530]=\"ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED\"]=530,e[t[531]=\"ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED\"]=531,e[t[532]=\"ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED\"]=532,e[t[533]=\"ATOM_BLUETOOTH_GATT_APP_INFO\"]=533,e[t[534]=\"ATOM_BRIGHTNESS_CONFIGURATION_UPDATED\"]=534,e[t[538]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED\"]=538,e[t[539]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED\"]=539,e[t[540]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED\"]=540,e[t[541]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED\"]=541,e[t[542]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY\"]=542,e[t[543]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY\"]=543,e[t[544]=\"ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED\"]=544,e[t[545]=\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED\"]=545,e[t[546]=\"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED\"]=546,e[t[547]=\"ATOM_LAUNCHER_IMPRESSION_EVENT\"]=547,e[t[549]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY\"]=549,e[t[551]=\"ATOM_WS_WATCH_FACE_EDITED\"]=551,e[t[552]=\"ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED\"]=552,e[t[553]=\"ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED\"]=553,e[t[554]=\"ATOM_PACKAGE_UNINSTALLATION_REPORTED\"]=554,e[t[555]=\"ATOM_GAME_MODE_CHANGED\"]=555,e[t[556]=\"ATOM_GAME_MODE_CONFIGURATION_CHANGED\"]=556,e[t[557]=\"ATOM_BEDTIME_MODE_STATE_CHANGED\"]=557,e[t[558]=\"ATOM_NETWORK_SLICE_SESSION_ENDED\"]=558,e[t[559]=\"ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED\"]=559,e[t[560]=\"ATOM_NFC_TAG_TYPE_OCCURRED\"]=560,e[t[561]=\"ATOM_NFC_AID_CONFLICT_OCCURRED\"]=561,e[t[562]=\"ATOM_NFC_READER_CONFLICT_OCCURRED\"]=562,e[t[563]=\"ATOM_WS_TILE_LIST_CHANGED\"]=563,e[t[564]=\"ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION\"]=564,e[t[566]=\"ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED\"]=566,e[t[567]=\"ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED\"]=567,e[t[568]=\"ATOM_MEDIA_DRM_CREATED\"]=568,e[t[569]=\"ATOM_MEDIA_DRM_ERRORED\"]=569,e[t[570]=\"ATOM_MEDIA_DRM_SESSION_OPENED\"]=570,e[t[571]=\"ATOM_MEDIA_DRM_SESSION_CLOSED\"]=571,e[t[572]=\"ATOM_USER_SELECTED_RESOLUTION\"]=572,e[t[573]=\"ATOM_UNSAFE_INTENT_EVENT_REPORTED\"]=573,e[t[574]=\"ATOM_PERFORMANCE_HINT_SESSION_REPORTED\"]=574,e[t[576]=\"ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED\"]=576,e[t[577]=\"ATOM_BIOMETRIC_TOUCH_REPORTED\"]=577,e[t[578]=\"ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED\"]=578,e[t[580]=\"ATOM_LOCATION_ENABLED_STATE_CHANGED\"]=580,e[t[581]=\"ATOM_IME_REQUEST_FINISHED\"]=581,e[t[582]=\"ATOM_USB_COMPLIANCE_WARNINGS_REPORTED\"]=582,e[t[583]=\"ATOM_APP_SUPPORTED_LOCALES_CHANGED\"]=583,e[t[586]=\"ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED\"]=586,e[t[587]=\"ATOM_BIOMETRIC_PROPERTIES_COLLECTED\"]=587,e[t[588]=\"ATOM_KERNEL_WAKEUP_ATTRIBUTED\"]=588,e[t[589]=\"ATOM_SCREEN_STATE_CHANGED_V2\"]=589,e[t[590]=\"ATOM_WS_BACKUP_ACTION_REPORTED\"]=590,e[t[591]=\"ATOM_WS_RESTORE_ACTION_REPORTED\"]=591,e[t[592]=\"ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED\"]=592,e[t[594]=\"ATOM_MEDIA_SESSION_UPDATED\"]=594,e[t[595]=\"ATOM_WEAR_OOBE_STATE_CHANGED\"]=595,e[t[596]=\"ATOM_WS_NOTIFICATION_UPDATED\"]=596,e[t[601]=\"ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED\"]=601,e[t[602]=\"ATOM_WS_COMPLICATION_TAPPED\"]=602,e[t[780]=\"ATOM_WS_NOTIFICATION_BLOCKING\"]=780,e[t[822]=\"ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED\"]=822,e[t[823]=\"ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED\"]=823,e[t[824]=\"ATOM_WS_NOTIFICATION_ACTIONED\"]=824,e[t[880]=\"ATOM_WS_NOTIFICATION_LATENCY\"]=880,e[t[1e4]=\"ATOM_WIFI_BYTES_TRANSFER\"]=1e4,e[t[10001]=\"ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG\"]=10001,e[t[10002]=\"ATOM_MOBILE_BYTES_TRANSFER\"]=10002,e[t[10003]=\"ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG\"]=10003,e[t[10006]=\"ATOM_BLUETOOTH_BYTES_TRANSFER\"]=10006,e[t[10004]=\"ATOM_KERNEL_WAKELOCK\"]=10004,e[t[10005]=\"ATOM_SUBSYSTEM_SLEEP_STATE\"]=10005,e[t[10009]=\"ATOM_CPU_TIME_PER_UID\"]=10009,e[t[10010]=\"ATOM_CPU_TIME_PER_UID_FREQ\"]=10010,e[t[10011]=\"ATOM_WIFI_ACTIVITY_INFO\"]=10011,e[t[10012]=\"ATOM_MODEM_ACTIVITY_INFO\"]=10012,e[t[10007]=\"ATOM_BLUETOOTH_ACTIVITY_INFO\"]=10007,e[t[10013]=\"ATOM_PROCESS_MEMORY_STATE\"]=10013,e[t[10014]=\"ATOM_SYSTEM_ELAPSED_REALTIME\"]=10014,e[t[10015]=\"ATOM_SYSTEM_UPTIME\"]=10015,e[t[10016]=\"ATOM_CPU_ACTIVE_TIME\"]=10016,e[t[10017]=\"ATOM_CPU_CLUSTER_TIME\"]=10017,e[t[10018]=\"ATOM_DISK_SPACE\"]=10018,e[t[10019]=\"ATOM_REMAINING_BATTERY_CAPACITY\"]=10019,e[t[10020]=\"ATOM_FULL_BATTERY_CAPACITY\"]=10020,e[t[10021]=\"ATOM_TEMPERATURE\"]=10021,e[t[10022]=\"ATOM_BINDER_CALLS\"]=10022,e[t[10023]=\"ATOM_BINDER_CALLS_EXCEPTIONS\"]=10023,e[t[10024]=\"ATOM_LOOPER_STATS\"]=10024,e[t[10025]=\"ATOM_DISK_STATS\"]=10025,e[t[10026]=\"ATOM_DIRECTORY_USAGE\"]=10026,e[t[10027]=\"ATOM_APP_SIZE\"]=10027,e[t[10028]=\"ATOM_CATEGORY_SIZE\"]=10028,e[t[10029]=\"ATOM_PROC_STATS\"]=10029,e[t[10030]=\"ATOM_BATTERY_VOLTAGE\"]=10030,e[t[10031]=\"ATOM_NUM_FINGERPRINTS_ENROLLED\"]=10031,e[t[10032]=\"ATOM_DISK_IO\"]=10032,e[t[10033]=\"ATOM_POWER_PROFILE\"]=10033,e[t[10034]=\"ATOM_PROC_STATS_PKG_PROC\"]=10034,e[t[10035]=\"ATOM_PROCESS_CPU_TIME\"]=10035,e[t[10037]=\"ATOM_CPU_TIME_PER_THREAD_FREQ\"]=10037,e[t[10038]=\"ATOM_ON_DEVICE_POWER_MEASUREMENT\"]=10038,e[t[10039]=\"ATOM_DEVICE_CALCULATED_POWER_USE\"]=10039,e[t[10042]=\"ATOM_PROCESS_MEMORY_HIGH_WATER_MARK\"]=10042,e[t[10043]=\"ATOM_BATTERY_LEVEL\"]=10043,e[t[10044]=\"ATOM_BUILD_INFORMATION\"]=10044,e[t[10045]=\"ATOM_BATTERY_CYCLE_COUNT\"]=10045,e[t[10046]=\"ATOM_DEBUG_ELAPSED_CLOCK\"]=10046,e[t[10047]=\"ATOM_DEBUG_FAILING_ELAPSED_CLOCK\"]=10047,e[t[10048]=\"ATOM_NUM_FACES_ENROLLED\"]=10048,e[t[10049]=\"ATOM_ROLE_HOLDER\"]=10049,e[t[10050]=\"ATOM_DANGEROUS_PERMISSION_STATE\"]=10050,e[t[10051]=\"ATOM_TRAIN_INFO\"]=10051,e[t[10052]=\"ATOM_TIME_ZONE_DATA_INFO\"]=10052,e[t[10053]=\"ATOM_EXTERNAL_STORAGE_INFO\"]=10053,e[t[10054]=\"ATOM_GPU_STATS_GLOBAL_INFO\"]=10054,e[t[10055]=\"ATOM_GPU_STATS_APP_INFO\"]=10055,e[t[10056]=\"ATOM_SYSTEM_ION_HEAP_SIZE\"]=10056,e[t[10057]=\"ATOM_APPS_ON_EXTERNAL_STORAGE_INFO\"]=10057,e[t[10058]=\"ATOM_FACE_SETTINGS\"]=10058,e[t[10059]=\"ATOM_COOLING_DEVICE\"]=10059,e[t[10060]=\"ATOM_APP_OPS\"]=10060,e[t[10061]=\"ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE\"]=10061,e[t[10062]=\"ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO\"]=10062,e[t[10063]=\"ATOM_SURFACEFLINGER_STATS_LAYER_INFO\"]=10063,e[t[10064]=\"ATOM_PROCESS_MEMORY_SNAPSHOT\"]=10064,e[t[10065]=\"ATOM_VMS_CLIENT_STATS\"]=10065,e[t[10066]=\"ATOM_NOTIFICATION_REMOTE_VIEWS\"]=10066,e[t[10067]=\"ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED\"]=10067,e[t[10068]=\"ATOM_GRAPHICS_STATS\"]=10068,e[t[10069]=\"ATOM_RUNTIME_APP_OP_ACCESS\"]=10069,e[t[10070]=\"ATOM_ION_HEAP_SIZE\"]=10070,e[t[10071]=\"ATOM_PACKAGE_NOTIFICATION_PREFERENCES\"]=10071,e[t[10072]=\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES\"]=10072,e[t[10073]=\"ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES\"]=10073,e[t[10074]=\"ATOM_GNSS_STATS\"]=10074,e[t[10075]=\"ATOM_ATTRIBUTED_APP_OPS\"]=10075,e[t[10076]=\"ATOM_VOICE_CALL_SESSION\"]=10076,e[t[10077]=\"ATOM_VOICE_CALL_RAT_USAGE\"]=10077,e[t[10078]=\"ATOM_SIM_SLOT_STATE\"]=10078,e[t[10079]=\"ATOM_SUPPORTED_RADIO_ACCESS_FAMILY\"]=10079,e[t[10080]=\"ATOM_SETTING_SNAPSHOT\"]=10080,e[t[10081]=\"ATOM_BLOB_INFO\"]=10081,e[t[10082]=\"ATOM_DATA_USAGE_BYTES_TRANSFER\"]=10082,e[t[10083]=\"ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED\"]=10083,e[t[10084]=\"ATOM_DND_MODE_RULE\"]=10084,e[t[10085]=\"ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS\"]=10085,e[t[10086]=\"ATOM_INCOMING_SMS\"]=10086,e[t[10087]=\"ATOM_OUTGOING_SMS\"]=10087,e[t[10088]=\"ATOM_CARRIER_ID_TABLE_VERSION\"]=10088,e[t[10089]=\"ATOM_DATA_CALL_SESSION\"]=10089,e[t[10090]=\"ATOM_CELLULAR_SERVICE_STATE\"]=10090,e[t[10091]=\"ATOM_CELLULAR_DATA_SERVICE_SWITCH\"]=10091,e[t[10092]=\"ATOM_SYSTEM_MEMORY\"]=10092,e[t[10093]=\"ATOM_IMS_REGISTRATION_TERMINATION\"]=10093,e[t[10094]=\"ATOM_IMS_REGISTRATION_STATS\"]=10094,e[t[10095]=\"ATOM_CPU_TIME_PER_CLUSTER_FREQ\"]=10095,e[t[10096]=\"ATOM_CPU_CYCLES_PER_UID_CLUSTER\"]=10096,e[t[10097]=\"ATOM_DEVICE_ROTATED_DATA\"]=10097,e[t[10098]=\"ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER\"]=10098,e[t[10099]=\"ATOM_MEDIA_DRM_ACTIVITY_INFO\"]=10099,e[t[10100]=\"ATOM_OEM_MANAGED_BYTES_TRANSFER\"]=10100,e[t[10101]=\"ATOM_GNSS_POWER_STATS\"]=10101,e[t[10102]=\"ATOM_TIME_ZONE_DETECTOR_STATE\"]=10102,e[t[10103]=\"ATOM_KEYSTORE2_STORAGE_STATS\"]=10103,e[t[10104]=\"ATOM_RKP_POOL_STATS\"]=10104,e[t[10105]=\"ATOM_PROCESS_DMABUF_MEMORY\"]=10105,e[t[10106]=\"ATOM_PENDING_ALARM_INFO\"]=10106,e[t[10107]=\"ATOM_USER_LEVEL_HIBERNATED_APPS\"]=10107,e[t[10108]=\"ATOM_LAUNCHER_LAYOUT_SNAPSHOT\"]=10108,e[t[10109]=\"ATOM_GLOBAL_HIBERNATED_APPS\"]=10109,e[t[10110]=\"ATOM_INPUT_EVENT_LATENCY_SKETCH\"]=10110,e[t[10111]=\"ATOM_BATTERY_USAGE_STATS_BEFORE_RESET\"]=10111,e[t[10112]=\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET\"]=10112,e[t[10113]=\"ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL\"]=10113,e[t[10114]=\"ATOM_INSTALLED_INCREMENTAL_PACKAGE\"]=10114,e[t[10115]=\"ATOM_TELEPHONY_NETWORK_REQUESTS\"]=10115,e[t[10116]=\"ATOM_APP_SEARCH_STORAGE_INFO\"]=10116,e[t[10117]=\"ATOM_VMSTAT\"]=10117,e[t[10118]=\"ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO\"]=10118,e[t[10119]=\"ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO\"]=10119,e[t[10120]=\"ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO\"]=10120,e[t[10121]=\"ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW\"]=10121,e[t[10122]=\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO\"]=10122,e[t[10123]=\"ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO\"]=10123,e[t[10124]=\"ATOM_RKP_ERROR_STATS\"]=10124,e[t[10125]=\"ATOM_KEYSTORE2_CRASH_STATS\"]=10125,e[t[10126]=\"ATOM_VENDOR_APEX_INFO\"]=10126,e[t[10127]=\"ATOM_ACCESSIBILITY_SHORTCUT_STATS\"]=10127,e[t[10128]=\"ATOM_ACCESSIBILITY_FLOATING_MENU_STATS\"]=10128,e[t[10129]=\"ATOM_DATA_USAGE_BYTES_TRANSFER_V2\"]=10129,e[t[10130]=\"ATOM_MEDIA_CAPABILITIES\"]=10130,e[t[10131]=\"ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY\"]=10131,e[t[10132]=\"ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY\"]=10132,e[t[10133]=\"ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS\"]=10133,e[t[10134]=\"ATOM_RCS_CLIENT_PROVISIONING_STATS\"]=10134,e[t[10135]=\"ATOM_RCS_ACS_PROVISIONING_STATS\"]=10135,e[t[10136]=\"ATOM_SIP_DELEGATE_STATS\"]=10136,e[t[10137]=\"ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS\"]=10137,e[t[10138]=\"ATOM_SIP_MESSAGE_RESPONSE\"]=10138,e[t[10139]=\"ATOM_SIP_TRANSPORT_SESSION\"]=10139,e[t[10140]=\"ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT\"]=10140,e[t[10141]=\"ATOM_IMS_DEDICATED_BEARER_EVENT\"]=10141,e[t[10142]=\"ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS\"]=10142,e[t[10143]=\"ATOM_UCE_EVENT_STATS\"]=10143,e[t[10144]=\"ATOM_PRESENCE_NOTIFY_EVENT\"]=10144,e[t[10145]=\"ATOM_GBA_EVENT\"]=10145,e[t[10146]=\"ATOM_PER_SIM_STATUS\"]=10146,e[t[10147]=\"ATOM_GPU_WORK_PER_UID\"]=10147,e[t[10148]=\"ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE\"]=10148,e[t[10149]=\"ATOM_SIGNED_PARTITION_INFO\"]=10149,e[t[10150]=\"ATOM_PINNED_FILE_SIZES_PER_PACKAGE\"]=10150,e[t[10151]=\"ATOM_PENDING_INTENTS_PER_PACKAGE\"]=10151,e[t[10152]=\"ATOM_USER_INFO\"]=10152,e[t[10153]=\"ATOM_TELEPHONY_NETWORK_REQUESTS_V2\"]=10153,e[t[10154]=\"ATOM_DEVICE_TELEPHONY_PROPERTIES\"]=10154,e[t[10155]=\"ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS\"]=10155,e[t[10156]=\"ATOM_SAFETY_STATE\"]=10156,e[t[10157]=\"ATOM_INCOMING_MMS\"]=10157,e[t[10158]=\"ATOM_OUTGOING_MMS\"]=10158,e[t[10160]=\"ATOM_MULTI_USER_INFO\"]=10160,e[t[10161]=\"ATOM_NETWORK_BPF_MAP_INFO\"]=10161,e[t[10162]=\"ATOM_OUTGOING_SHORT_CODE_SMS\"]=10162,e[t[10163]=\"ATOM_CONNECTIVITY_STATE_SAMPLE\"]=10163,e[t[10164]=\"ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO\"]=10164,e[t[10165]=\"ATOM_GAME_MODE_INFO\"]=10165,e[t[10166]=\"ATOM_GAME_MODE_CONFIGURATION\"]=10166,e[t[10167]=\"ATOM_GAME_MODE_LISTENER\"]=10167,e[t[10168]=\"ATOM_NETWORK_SLICE_REQUEST_COUNT\"]=10168,e[t[10169]=\"ATOM_WS_TILE_SNAPSHOT\"]=10169,e[t[10170]=\"ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT\"]=10170,e[t[10171]=\"ATOM_PROCESS_STATE\"]=10171,e[t[10172]=\"ATOM_PROCESS_ASSOCIATION\"]=10172,e[t[10173]=\"ATOM_ADPF_SYSTEM_COMPONENT_INFO\"]=10173,e[t[10174]=\"ATOM_NOTIFICATION_MEMORY_USE\"]=10174,e[t[10175]=\"ATOM_HDR_CAPABILITIES\"]=10175,e[t[10176]=\"ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT\"]=10176,e[t[910]=\"ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED\"]=910,e[t[820]=\"ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED\"]=820,e[t[772]=\"ATOM_THERMAL_STATUS_CALLED\"]=772,e[t[773]=\"ATOM_THERMAL_HEADROOM_CALLED\"]=773,e[t[774]=\"ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED\"]=774,e[t[839]=\"ATOM_ADPF_HINT_SESSION_TID_CLEANUP\"]=839,e[t[10201]=\"ATOM_THERMAL_HEADROOM_THRESHOLDS\"]=10201,e[t[10218]=\"ATOM_ADPF_SESSION_SNAPSHOT\"]=10218,e[t[483]=\"ATOM_JSSCRIPTENGINE_LATENCY_REPORTED\"]=483,e[t[435]=\"ATOM_AD_SERVICES_API_CALLED\"]=435,e[t[436]=\"ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED\"]=436,e[t[490]=\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED\"]=490,e[t[502]=\"ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED\"]=502,e[t[493]=\"ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED\"]=493,e[t[496]=\"ATOM_BACKGROUND_FETCH_PROCESS_REPORTED\"]=496,e[t[497]=\"ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED\"]=497,e[t[498]=\"ATOM_RUN_AD_BIDDING_PROCESS_REPORTED\"]=498,e[t[499]=\"ATOM_RUN_AD_SCORING_PROCESS_REPORTED\"]=499,e[t[500]=\"ATOM_RUN_AD_SELECTION_PROCESS_REPORTED\"]=500,e[t[501]=\"ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED\"]=501,e[t[503]=\"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED\"]=503,e[t[512]=\"ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS\"]=512,e[t[535]=\"ATOM_AD_SERVICES_GET_TOPICS_REPORTED\"]=535,e[t[536]=\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED\"]=536,e[t[537]=\"ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\"]=537,e[t[598]=\"ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED\"]=598,e[t[599]=\"ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED\"]=599,e[t[640]=\"ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS\"]=640,e[t[662]=\"ATOM_AD_SERVICES_ERROR_REPORTED\"]=662,e[t[663]=\"ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED\"]=663,e[t[673]=\"ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION\"]=673,e[t[674]=\"ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION\"]=674,e[t[675]=\"ATOM_AD_SERVICES_MEASUREMENT_JOBS\"]=675,e[t[676]=\"ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT\"]=676,e[t[695]=\"ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS\"]=695,e[t[697]=\"ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED\"]=697,e[t[698]=\"ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED\"]=698,e[t[699]=\"ATOM_AD_SERVICES_ENROLLMENT_MATCHED\"]=699,e[t[702]=\"ATOM_AD_SERVICES_CONSENT_MIGRATED\"]=702,e[t[714]=\"ATOM_AD_SERVICES_ENROLLMENT_FAILED\"]=714,e[t[756]=\"ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION\"]=756,e[t[765]=\"ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED\"]=765,e[t[766]=\"ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED\"]=766,e[t[767]=\"ATOM_DESTINATION_REGISTERED_BEACONS\"]=767,e[t[768]=\"ATOM_REPORT_INTERACTION_API_CALLED\"]=768,e[t[769]=\"ATOM_INTERACTION_REPORTING_TABLE_CLEARED\"]=769,e[t[788]=\"ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED\"]=788,e[t[793]=\"ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED\"]=793,e[t[794]=\"ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED\"]=794,e[t[795]=\"ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED\"]=795,e[t[807]=\"ATOM_SIGNATURE_VERIFICATION\"]=807,e[t[808]=\"ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED\"]=808,e[t[809]=\"ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED\"]=809,e[t[810]=\"ATOM_K_ANON_INITIALIZE_STATUS_REPORTED\"]=810,e[t[811]=\"ATOM_K_ANON_SIGN_STATUS_REPORTED\"]=811,e[t[812]=\"ATOM_K_ANON_JOIN_STATUS_REPORTED\"]=812,e[t[813]=\"ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED\"]=813,e[t[814]=\"ATOM_GET_AD_SELECTION_DATA_API_CALLED\"]=814,e[t[815]=\"ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED\"]=815,e[t[834]=\"ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED\"]=834,e[t[840]=\"ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED\"]=840,e[t[841]=\"ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED\"]=841,e[t[842]=\"ATOM_ADSERVICES_SHELL_COMMAND_CALLED\"]=842,e[t[843]=\"ATOM_UPDATE_SIGNALS_API_CALLED\"]=843,e[t[844]=\"ATOM_ENCODING_JOB_RUN\"]=844,e[t[845]=\"ATOM_ENCODING_JS_FETCH\"]=845,e[t[846]=\"ATOM_ENCODING_JS_EXECUTION\"]=846,e[t[847]=\"ATOM_PERSIST_AD_SELECTION_RESULT_CALLED\"]=847,e[t[848]=\"ATOM_SERVER_AUCTION_KEY_FETCH_CALLED\"]=848,e[t[849]=\"ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED\"]=849,e[t[864]=\"ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION\"]=864,e[t[865]=\"ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP\"]=865,e[t[876]=\"ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED\"]=876,e[t[877]=\"ATOM_REPORT_IMPRESSION_API_CALLED\"]=877,e[t[885]=\"ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS\"]=885,e[t[902]=\"ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED\"]=902,e[t[903]=\"ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED\"]=903,e[t[905]=\"ATOM_UPDATE_SIGNALS_PROCESS_REPORTED\"]=905,e[t[930]=\"ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED\"]=930,e[t[706]=\"ATOM_AI_WALLPAPERS_BUTTON_PRESSED\"]=706,e[t[707]=\"ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED\"]=707,e[t[708]=\"ATOM_AI_WALLPAPERS_TERM_SELECTED\"]=708,e[t[709]=\"ATOM_AI_WALLPAPERS_WALLPAPER_SET\"]=709,e[t[710]=\"ATOM_AI_WALLPAPERS_SESSION_SUMMARY\"]=710,e[t[732]=\"ATOM_APEX_INSTALLATION_REQUESTED\"]=732,e[t[733]=\"ATOM_APEX_INSTALLATION_STAGED\"]=733,e[t[734]=\"ATOM_APEX_INSTALLATION_ENDED\"]=734,e[t[385]=\"ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED\"]=385,e[t[579]=\"ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED\"]=579,e[t[825]=\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED\"]=825,e[t[826]=\"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED\"]=826,e[t[909]=\"ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED\"]=909,e[t[332]=\"ATOM_ART_DATUM_REPORTED\"]=332,e[t[550]=\"ATOM_ART_DEVICE_DATUM_REPORTED\"]=550,e[t[565]=\"ATOM_ART_DATUM_DELTA_REPORTED\"]=565,e[t[929]=\"ATOM_ART_DEX2OAT_REPORTED\"]=929,e[t[10205]=\"ATOM_ART_DEVICE_STATUS\"]=10205,e[t[467]=\"ATOM_BACKGROUND_DEXOPT_JOB_ENDED\"]=467,e[t[883]=\"ATOM_PREREBOOT_DEXOPT_JOB_ENDED\"]=883,e[t[366]=\"ATOM_ODREFRESH_REPORTED\"]=366,e[t[548]=\"ATOM_ODSIGN_REPORTED\"]=548,e[t[603]=\"ATOM_AUTOFILL_UI_EVENT_REPORTED\"]=603,e[t[604]=\"ATOM_AUTOFILL_FILL_REQUEST_REPORTED\"]=604,e[t[605]=\"ATOM_AUTOFILL_FILL_RESPONSE_REPORTED\"]=605,e[t[606]=\"ATOM_AUTOFILL_SAVE_EVENT_REPORTED\"]=606,e[t[607]=\"ATOM_AUTOFILL_SESSION_COMMITTED\"]=607,e[t[659]=\"ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED\"]=659,e[t[770]=\"ATOM_CAR_RECENTS_EVENT_REPORTED\"]=770,e[t[797]=\"ATOM_CAR_CALM_MODE_EVENT_REPORTED\"]=797,e[t[852]=\"ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED\"]=852,e[t[655]=\"ATOM_PLUGIN_INITIALIZED\"]=655,e[t[613]=\"ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED\"]=613,e[t[614]=\"ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION\"]=614,e[t[615]=\"ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION\"]=615,e[t[656]=\"ATOM_BLUETOOTH_LE_SESSION_CONNECTED\"]=656,e[t[666]=\"ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED\"]=666,e[t[696]=\"ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED\"]=696,e[t[781]=\"ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED\"]=781,e[t[782]=\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED\"]=782,e[t[862]=\"ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID\"]=862,e[t[870]=\"ATOM_LE_APP_SCAN_STATE_CHANGED\"]=870,e[t[871]=\"ATOM_LE_RADIO_SCAN_STOPPED\"]=871,e[t[872]=\"ATOM_LE_SCAN_RESULT_RECEIVED\"]=872,e[t[873]=\"ATOM_LE_SCAN_ABUSED\"]=873,e[t[874]=\"ATOM_LE_ADV_STATE_CHANGED\"]=874,e[t[875]=\"ATOM_LE_ADV_ERROR_REPORTED\"]=875,e[t[904]=\"ATOM_A2DP_SESSION_REPORTED\"]=904,e[t[916]=\"ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED\"]=916,e[t[927]=\"ATOM_BROADCAST_AUDIO_SESSION_REPORTED\"]=927,e[t[928]=\"ATOM_BROADCAST_AUDIO_SYNC_REPORTED\"]=928,e[t[982]=\"ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE\"]=982,e[t[988]=\"ATOM_BLUETOOTH_LE_CONNECTION\"]=988,e[t[922]=\"ATOM_BROADCAST_SENT\"]=922,e[t[900]=\"ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT\"]=900,e[t[934]=\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED\"]=934,e[t[972]=\"ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED\"]=972,e[t[650]=\"ATOM_DAILY_KEEPALIVE_INFO_REPORTED\"]=650,e[t[779]=\"ATOM_NETWORK_REQUEST_STATE_CHANGED\"]=779,e[t[925]=\"ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED\"]=925,e[t[783]=\"ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED\"]=783,e[t[979]=\"ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED\"]=979,e[t[777]=\"ATOM_APF_SESSION_INFO_REPORTED\"]=777,e[t[778]=\"ATOM_IP_CLIENT_RA_INFO_REPORTED\"]=778,e[t[850]=\"ATOM_VPN_CONNECTION_STATE_CHANGED\"]=850,e[t[851]=\"ATOM_VPN_CONNECTION_REPORTED\"]=851,e[t[10199]=\"ATOM_CPU_POLICY\"]=10199,e[t[585]=\"ATOM_CREDENTIAL_MANAGER_API_CALLED\"]=585,e[t[651]=\"ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED\"]=651,e[t[652]=\"ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED\"]=652,e[t[653]=\"ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED\"]=653,e[t[667]=\"ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED\"]=667,e[t[668]=\"ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED\"]=668,e[t[669]=\"ATOM_CREDENTIAL_MANAGER_GET_REPORTED\"]=669,e[t[670]=\"ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED\"]=670,e[t[671]=\"ATOM_CREDENTIAL_MANAGER_APIV2_CALLED\"]=671,e[t[703]=\"ATOM_CRONET_ENGINE_CREATED\"]=703,e[t[704]=\"ATOM_CRONET_TRAFFIC_REPORTED\"]=704,e[t[762]=\"ATOM_CRONET_ENGINE_BUILDER_INITIALIZED\"]=762,e[t[763]=\"ATOM_CRONET_HTTP_FLAGS_INITIALIZED\"]=763,e[t[764]=\"ATOM_CRONET_INITIALIZED\"]=764,e[t[818]=\"ATOM_DESKTOP_MODE_UI_CHANGED\"]=818,e[t[819]=\"ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE\"]=819,e[t[935]=\"ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED\"]=935,e[t[726]=\"ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED\"]=726,e[t[727]=\"ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED\"]=727,e[t[728]=\"ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED\"]=728,e[t[789]=\"ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED\"]=789,e[t[790]=\"ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED\"]=790,e[t[791]=\"ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED\"]=791,e[t[10216]=\"ATOM_DEVICE_POLICY_MANAGEMENT_MODE\"]=10216,e[t[10217]=\"ATOM_DEVICE_POLICY_STATE\"]=10217,e[t[792]=\"ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED\"]=792,e[t[806]=\"ATOM_EXTERNAL_DISPLAY_STATE_CHANGED\"]=806,e[t[657]=\"ATOM_DND_STATE_CHANGED\"]=657,e[t[705]=\"ATOM_DREAM_SETTING_CHANGED\"]=705,e[t[10192]=\"ATOM_DREAM_SETTING_SNAPSHOT\"]=10192,e[t[528]=\"ATOM_EXPRESS_EVENT_REPORTED\"]=528,e[t[593]=\"ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED\"]=593,e[t[644]=\"ATOM_EXPRESS_UID_EVENT_REPORTED\"]=644,e[t[658]=\"ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED\"]=658,e[t[712]=\"ATOM_FEDERATED_COMPUTE_API_CALLED\"]=712,e[t[771]=\"ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED\"]=771,e[t[838]=\"ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED\"]=838,e[t[631]=\"ATOM_FULL_SCREEN_INTENT_LAUNCHED\"]=631,e[t[632]=\"ATOM_BAL_ALLOWED\"]=632,e[t[685]=\"ATOM_IN_TASK_ACTIVITY_STARTED\"]=685,e[t[906]=\"ATOM_DEVICE_ORIENTATION_CHANGED\"]=906,e[t[10189]=\"ATOM_CACHED_APPS_HIGH_WATERMARK\"]=10189,e[t[718]=\"ATOM_STYLUS_PREDICTION_METRICS_REPORTED\"]=718,e[t[725]=\"ATOM_USER_RISK_EVENT_REPORTED\"]=725,e[t[729]=\"ATOM_MEDIA_PROJECTION_STATE_CHANGED\"]=729,e[t[730]=\"ATOM_MEDIA_PROJECTION_TARGET_CHANGED\"]=730,e[t[853]=\"ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED\"]=853,e[t[10200]=\"ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG\"]=10200,e[t[10204]=\"ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE\"]=10204,e[t[817]=\"ATOM_BIOMETRIC_FRR_NOTIFICATION\"]=817,e[t[830]=\"ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION\"]=830,e[t[831]=\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION\"]=831,e[t[832]=\"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED\"]=832,e[t[833]=\"ATOM_SENSITIVE_NOTIFICATION_REDACTION\"]=833,e[t[835]=\"ATOM_SENSITIVE_CONTENT_APP_PROTECTION\"]=835,e[t[866]=\"ATOM_APP_RESTRICTION_STATE_CHANGED\"]=866,e[t[10209]=\"ATOM_BATTERY_USAGE_STATS_PER_UID\"]=10209,e[t[924]=\"ATOM_POSTGC_MEMORY_SNAPSHOT\"]=924,e[t[926]=\"ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED\"]=926,e[t[931]=\"ATOM_APP_OP_ACCESS_TRACKED\"]=931,e[t[933]=\"ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED\"]=933,e[t[584]=\"ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED\"]=584,e[t[816]=\"ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED\"]=816,e[t[10220]=\"ATOM_BATTERY_HEALTH\"]=10220,e[t[701]=\"ATOM_HDMI_EARC_STATUS_REPORTED\"]=701,e[t[724]=\"ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED\"]=724,e[t[616]=\"ATOM_HEALTH_CONNECT_API_CALLED\"]=616,e[t[617]=\"ATOM_HEALTH_CONNECT_USAGE_STATS\"]=617,e[t[618]=\"ATOM_HEALTH_CONNECT_STORAGE_STATS\"]=618,e[t[643]=\"ATOM_HEALTH_CONNECT_API_INVOKED\"]=643,e[t[654]=\"ATOM_EXERCISE_ROUTE_API_CALLED\"]=654,e[t[907]=\"ATOM_HEALTH_CONNECT_EXPORT_INVOKED\"]=907,e[t[918]=\"ATOM_HEALTH_CONNECT_IMPORT_INVOKED\"]=918,e[t[919]=\"ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED\"]=919,e[t[623]=\"ATOM_HEALTH_CONNECT_UI_IMPRESSION\"]=623,e[t[624]=\"ATOM_HEALTH_CONNECT_UI_INTERACTION\"]=624,e[t[625]=\"ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED\"]=625,e[t[761]=\"ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED\"]=761,e[t[678]=\"ATOM_IKE_SESSION_TERMINATED\"]=678,e[t[760]=\"ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED\"]=760,e[t[821]=\"ATOM_NEGOTIATED_SECURITY_ASSOCIATION\"]=821,e[t[682]=\"ATOM_KEYBOARD_CONFIGURED\"]=682,e[t[683]=\"ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED\"]=683,e[t[686]=\"ATOM_INPUTDEVICE_USAGE_REPORTED\"]=686,e[t[932]=\"ATOM_INPUT_EVENT_LATENCY_REPORTED\"]=932,e[t[10191]=\"ATOM_TOUCHPAD_USAGE\"]=10191,e[t[754]=\"ATOM_KERNEL_OOM_KILL_OCCURRED\"]=754,e[t[633]=\"ATOM_EMERGENCY_STATE_CHANGED\"]=633,e[t[868]=\"ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED\"]=868,e[t[1002]=\"ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED\"]=1002,e[t[1003]=\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED\"]=1003,e[t[1004]=\"ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED\"]=1004,e[t[600]=\"ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED\"]=600,e[t[641]=\"ATOM_MEDIA_CODEC_STARTED\"]=641,e[t[642]=\"ATOM_MEDIA_CODEC_STOPPED\"]=642,e[t[684]=\"ATOM_MEDIA_CODEC_RENDERED\"]=684,e[t[798]=\"ATOM_MEDIA_EDITING_ENDED_REPORTED\"]=798,e[t[10181]=\"ATOM_MTE_STATE\"]=10181,e[t[901]=\"ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED\"]=901,e[t[855]=\"ATOM_NFC_OBSERVE_MODE_STATE_CHANGED\"]=855,e[t[856]=\"ATOM_NFC_FIELD_CHANGED\"]=856,e[t[857]=\"ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED\"]=857,e[t[858]=\"ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED\"]=858,e[t[711]=\"ATOM_ONDEVICEPERSONALIZATION_API_CALLED\"]=711,e[t[863]=\"ATOM_COMPONENT_STATE_CHANGED_REPORTED\"]=863,e[t[859]=\"ATOM_PDF_LOAD_REPORTED\"]=859,e[t[860]=\"ATOM_PDF_API_USAGE_REPORTED\"]=860,e[t[861]=\"ATOM_PDF_SEARCH_REPORTED\"]=861,e[t[10229]=\"ATOM_PRESSURE_STALL_INFORMATION\"]=10229,e[t[645]=\"ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED\"]=645,e[t[646]=\"ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED\"]=646,e[t[647]=\"ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION\"]=647,e[t[648]=\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED\"]=648,e[t[649]=\"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED\"]=649,e[t[827]=\"ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED\"]=827,e[t[828]=\"ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED\"]=828,e[t[886]=\"ATOM_PHOTOPICKER_SESSION_INFO_REPORTED\"]=886,e[t[887]=\"ATOM_PHOTOPICKER_API_INFO_REPORTED\"]=887,e[t[888]=\"ATOM_PHOTOPICKER_UI_EVENT_LOGGED\"]=888,e[t[889]=\"ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED\"]=889,e[t[890]=\"ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED\"]=890,e[t[891]=\"ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED\"]=891,e[t[892]=\"ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED\"]=892,e[t[893]=\"ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED\"]=893,e[t[894]=\"ATOM_PHOTOPICKER_PAGE_INFO_LOGGED\"]=894,e[t[895]=\"ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED\"]=895,e[t[896]=\"ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED\"]=896,e[t[897]=\"ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED\"]=897,e[t[898]=\"ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED\"]=898,e[t[899]=\"ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED\"]=899,e[t[9999]=\"ATOM_ATOM_9999\"]=9999,e[t[99999]=\"ATOM_ATOM_99999\"]=99999,e[t[776]=\"ATOM_SCREEN_OFF_REPORTED\"]=776,e[t[836]=\"ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED\"]=836,e[t[837]=\"ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED\"]=837,e[t[867]=\"ATOM_SCREEN_DIM_REPORTED\"]=867,e[t[784]=\"ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED\"]=784,e[t[785]=\"ATOM_BACKUP_SETUP_STATUS_REPORTED\"]=785,e[t[993]=\"ATOM_RANGING_SESSION_CONFIGURED\"]=993,e[t[994]=\"ATOM_RANGING_SESSION_STARTED\"]=994,e[t[995]=\"ATOM_RANGING_SESSION_CLOSED\"]=995,e[t[996]=\"ATOM_RANGING_TECHNOLOGY_STARTED\"]=996,e[t[997]=\"ATOM_RANGING_TECHNOLOGY_STOPPED\"]=997,e[t[664]=\"ATOM_RKPD_POOL_STATS\"]=664,e[t[665]=\"ATOM_RKPD_CLIENT_OPERATION\"]=665,e[t[488]=\"ATOM_SANDBOX_API_CALLED\"]=488,e[t[735]=\"ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED\"]=735,e[t[796]=\"ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION\"]=796,e[t[10159]=\"ATOM_SANDBOX_SDK_STORAGE\"]=10159,e[t[799]=\"ATOM_SELINUX_AUDIT_LOG\"]=799,e[t[622]=\"ATOM_SETTINGS_SPA_REPORTED\"]=622,e[t[660]=\"ATOM_TEST_EXTENSION_ATOM_REPORTED\"]=660,e[t[672]=\"ATOM_TEST_RESTRICTED_ATOM_REPORTED\"]=672,e[t[752]=\"ATOM_STATS_SOCKET_LOSS_REPORTED\"]=752,e[t[611]=\"ATOM_LOCKSCREEN_SHORTCUT_SELECTED\"]=611,e[t[612]=\"ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED\"]=612,e[t[716]=\"ATOM_LAUNCHER_IMPRESSION_EVENT_V2\"]=716,e[t[753]=\"ATOM_DISPLAY_SWITCH_LATENCY_TRACKED\"]=753,e[t[829]=\"ATOM_NOTIFICATION_LISTENER_SERVICE\"]=829,e[t[869]=\"ATOM_NAV_HANDLE_TOUCH_POINTS\"]=869,e[t[908]=\"ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED\"]=908,e[t[10226]=\"ATOM_COMMUNAL_HUB_SNAPSHOT\"]=10226,e[t[637]=\"ATOM_EMERGENCY_NUMBER_DIALED\"]=637,e[t[10221]=\"ATOM_CALL_STATS\"]=10221,e[t[10222]=\"ATOM_CALL_AUDIO_ROUTE_STATS\"]=10222,e[t[10223]=\"ATOM_TELECOM_API_STATS\"]=10223,e[t[10224]=\"ATOM_TELECOM_ERROR_STATS\"]=10224,e[t[713]=\"ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED\"]=713,e[t[10180]=\"ATOM_EMERGENCY_NUMBERS_INFO\"]=10180,e[t[10207]=\"ATOM_DATA_NETWORK_VALIDATION\"]=10207,e[t[854]=\"ATOM_DATA_RAT_STATE_CHANGED\"]=854,e[t[882]=\"ATOM_CONNECTED_CHANNEL_CHANGED\"]=882,e[t[923]=\"ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED\"]=923,e[t[634]=\"ATOM_QUALIFIED_RAT_LIST_CHANGED\"]=634,e[t[635]=\"ATOM_QNS_IMS_CALL_DROP_STATS\"]=635,e[t[636]=\"ATOM_QNS_FALLBACK_RESTRICTION_CHANGED\"]=636,e[t[10177]=\"ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO\"]=10177,e[t[10178]=\"ATOM_QNS_HANDOVER_TIME_MILLIS\"]=10178,e[t[10179]=\"ATOM_QNS_HANDOVER_PINGPONG\"]=10179,e[t[10182]=\"ATOM_SATELLITE_CONTROLLER\"]=10182,e[t[10183]=\"ATOM_SATELLITE_SESSION\"]=10183,e[t[10184]=\"ATOM_SATELLITE_INCOMING_DATAGRAM\"]=10184,e[t[10185]=\"ATOM_SATELLITE_OUTGOING_DATAGRAM\"]=10185,e[t[10186]=\"ATOM_SATELLITE_PROVISION\"]=10186,e[t[10187]=\"ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER\"]=10187,e[t[10211]=\"ATOM_CARRIER_ROAMING_SATELLITE_SESSION\"]=10211,e[t[10212]=\"ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS\"]=10212,e[t[10213]=\"ATOM_CONTROLLER_STATS_PER_PACKAGE\"]=10213,e[t[10214]=\"ATOM_SATELLITE_ENTITLEMENT\"]=10214,e[t[10215]=\"ATOM_SATELLITE_CONFIG_UPDATER\"]=10215,e[t[10219]=\"ATOM_SATELLITE_ACCESS_CONTROLLER\"]=10219,e[t[800]=\"ATOM_CELLULAR_IDENTIFIER_DISCLOSED\"]=800,e[t[738]=\"ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED\"]=738,e[t[739]=\"ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED\"]=739,e[t[740]=\"ATOM_THREADNETWORK_DEVICE_INFO_REPORTED\"]=740,e[t[775]=\"ATOM_BOOT_INTEGRITY_INFO_REPORTED\"]=775,e[t[679]=\"ATOM_TV_LOW_POWER_STANDBY_POLICY\"]=679,e[t[717]=\"ATOM_EXTERNAL_TV_INPUT_EVENT\"]=717,e[t[915]=\"ATOM_TEST_UPROBESTATS_ATOM_REPORTED\"]=915,e[t[10188]=\"ATOM_UWB_ACTIVITY_INFO\"]=10188,e[t[721]=\"ATOM_MEDIATOR_UPDATED\"]=721,e[t[10196]=\"ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER\"]=10196,e[t[786]=\"ATOM_SYSPROXY_CONNECTION_UPDATED\"]=786,e[t[921]=\"ATOM_WEAR_COMPANION_CONNECTION_STATE\"]=921,e[t[608]=\"ATOM_MEDIA_ACTION_REPORTED\"]=608,e[t[609]=\"ATOM_MEDIA_CONTROLS_LAUNCHED\"]=609,e[t[677]=\"ATOM_MEDIA_SESSION_STATE_CHANGED\"]=677,e[t[757]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY\"]=757,e[t[758]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE\"]=758,e[t[759]=\"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT\"]=759,e[t[715]=\"ATOM_WEAR_MODE_STATE_CHANGED\"]=715,e[t[736]=\"ATOM_RENDERER_INITIALIZED\"]=736,e[t[737]=\"ATOM_SCHEMA_VERSION_RECEIVED\"]=737,e[t[741]=\"ATOM_LAYOUT_INSPECTED\"]=741,e[t[742]=\"ATOM_LAYOUT_EXPRESSION_INSPECTED\"]=742,e[t[743]=\"ATOM_LAYOUT_ANIMATIONS_INSPECTED\"]=743,e[t[744]=\"ATOM_MATERIAL_COMPONENTS_INSPECTED\"]=744,e[t[745]=\"ATOM_TILE_REQUESTED\"]=745,e[t[746]=\"ATOM_STATE_RESPONSE_RECEIVED\"]=746,e[t[747]=\"ATOM_TILE_RESPONSE_RECEIVED\"]=747,e[t[748]=\"ATOM_INFLATION_FINISHED\"]=748,e[t[749]=\"ATOM_INFLATION_FAILED\"]=749,e[t[750]=\"ATOM_IGNORED_INFLATION_FAILURES_REPORTED\"]=750,e[t[751]=\"ATOM_DRAWABLE_RENDERED\"]=751,e[t[911]=\"ATOM_WEAR_TIME_SYNC_REQUESTED\"]=911,e[t[912]=\"ATOM_WEAR_TIME_UPDATE_STARTED\"]=912,e[t[913]=\"ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED\"]=913,e[t[914]=\"ATOM_WEAR_TIME_CHANGED\"]=914,e[t[619]=\"ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED\"]=619,e[t[620]=\"ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED\"]=620,e[t[621]=\"ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED\"]=621,e[t[610]=\"ATOM_WS_WEAR_TIME_SESSION\"]=610,e[t[626]=\"ATOM_WS_INCOMING_CALL_ACTION_REPORTED\"]=626,e[t[627]=\"ATOM_WS_CALL_DISCONNECTION_REPORTED\"]=627,e[t[628]=\"ATOM_WS_CALL_DURATION_REPORTED\"]=628,e[t[629]=\"ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED\"]=629,e[t[630]=\"ATOM_WS_CALL_INTERACTION_REPORTED\"]=630,e[t[787]=\"ATOM_WS_ON_BODY_STATE_CHANGED\"]=787,e[t[802]=\"ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED\"]=802,e[t[803]=\"ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED\"]=803,e[t[804]=\"ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED\"]=804,e[t[920]=\"ATOM_WS_REMOTE_EVENT_USAGE_REPORTED\"]=920,e[t[936]=\"ATOM_WS_BUGREPORT_REQUESTED\"]=936,e[t[937]=\"ATOM_WS_BUGREPORT_TRIGGERED\"]=937,e[t[938]=\"ATOM_WS_BUGREPORT_FINISHED\"]=938,e[t[939]=\"ATOM_WS_BUGREPORT_RESULT_RECEIVED\"]=939,e[t[10197]=\"ATOM_WS_STANDALONE_MODE_SNAPSHOT\"]=10197,e[t[10206]=\"ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT\"]=10206,e[t[10225]=\"ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT\"]=10225,e[t[10227]=\"ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT\"]=10227,e[t[731]=\"ATOM_WEAR_POWER_MENU_OPENED\"]=731,e[t[755]=\"ATOM_WEAR_ASSISTANT_OPENED\"]=755,e[t[917]=\"ATOM_FIRST_OVERLAY_STATE_CHANGED\"]=917,e[t[638]=\"ATOM_WIFI_AWARE_NDP_REPORTED\"]=638,e[t[639]=\"ATOM_WIFI_AWARE_ATTACH_REPORTED\"]=639,e[t[661]=\"ATOM_WIFI_SELF_RECOVERY_TRIGGERED\"]=661,e[t[680]=\"ATOM_SOFT_AP_STARTED\"]=680,e[t[681]=\"ATOM_SOFT_AP_STOPPED\"]=681,e[t[687]=\"ATOM_WIFI_LOCK_RELEASED\"]=687,e[t[688]=\"ATOM_WIFI_LOCK_DEACTIVATED\"]=688,e[t[689]=\"ATOM_WIFI_CONFIG_SAVED\"]=689,e[t[690]=\"ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED\"]=690,e[t[691]=\"ATOM_WIFI_AWARE_HAL_API_CALLED\"]=691,e[t[692]=\"ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED\"]=692,e[t[693]=\"ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED\"]=693,e[t[694]=\"ATOM_WIFI_THREAD_TASK_EXECUTED\"]=694,e[t[700]=\"ATOM_WIFI_STATE_CHANGED\"]=700,e[t[719]=\"ATOM_PNO_SCAN_STARTED\"]=719,e[t[720]=\"ATOM_PNO_SCAN_STOPPED\"]=720,e[t[722]=\"ATOM_WIFI_IS_UNUSABLE_REPORTED\"]=722,e[t[723]=\"ATOM_WIFI_AP_CAPABILITIES_REPORTED\"]=723,e[t[805]=\"ATOM_SOFT_AP_STATE_CHANGED\"]=805,e[t[884]=\"ATOM_SCORER_PREDICTION_RESULT_REPORTED\"]=884,e[t[10190]=\"ATOM_WIFI_AWARE_CAPABILITIES\"]=10190,e[t[10193]=\"ATOM_WIFI_MODULE_INFO\"]=10193,e[t[10194]=\"ATOM_WIFI_SETTING_INFO\"]=10194,e[t[10195]=\"ATOM_WIFI_COMPLEX_SETTING_INFO\"]=10195,e[t[10198]=\"ATOM_WIFI_CONFIGURED_NETWORK_INFO\"]=10198,e),r.PriorityBoostConfig=(Ct.prototype.policy=0,Ct.prototype.priority=0,Ct.create=function(e){return new Ct(e)},Ct.encode=function(e,t){return t=t||a.create(),null!=e.policy&&Object.hasOwnProperty.call(e,\"policy\")&&t.uint32(8).int32(e.policy),null!=e.priority&&Object.hasOwnProperty.call(e,\"priority\")&&t.uint32(16).uint32(e.priority),t},Ct.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PriorityBoostConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.policy=e.int32();break;case 2:n.priority=e.uint32();break;default:e.skipType(7&a)}}return n},Ct.fromObject=function(e){if(e instanceof s.perfetto.protos.PriorityBoostConfig)return e;var t=new s.perfetto.protos.PriorityBoostConfig;switch(e.policy){default:\"number\"==typeof e.policy&&(t.policy=e.policy);break;case\"POLICY_UNSPECIFIED\":case 0:t.policy=0;break;case\"POLICY_SCHED_OTHER\":case 1:t.policy=1;break;case\"POLICY_SCHED_FIFO\":case 2:t.policy=2}return null!=e.priority&&(t.priority=e.priority>>>0),t},Ct.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.policy=t.enums===String?\"POLICY_UNSPECIFIED\":0,r.priority=0),null!=e.policy&&e.hasOwnProperty(\"policy\")&&(r.policy=t.enums!==String||void 0===s.perfetto.protos.PriorityBoostConfig.BoostPolicy[e.policy]?e.policy:s.perfetto.protos.PriorityBoostConfig.BoostPolicy[e.policy]),null!=e.priority&&e.hasOwnProperty(\"priority\")&&(r.priority=e.priority),r},Ct.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ct.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PriorityBoostConfig\"},Ct.BoostPolicy=(t={},(e=Object.create(t))[t[0]=\"POLICY_UNSPECIFIED\"]=0,e[t[1]=\"POLICY_SCHED_OTHER\"]=1,e[t[2]=\"POLICY_SCHED_FIFO\"]=2,e),Ct),r.ProcessStatsConfig=(b.prototype.quirks=i.emptyArray,b.prototype.scanAllProcessesOnStart=!1,b.prototype.recordThreadNames=!1,b.prototype.procStatsPollMs=0,b.prototype.procStatsCacheTtlMs=0,b.prototype.scanSmapsRollup=!1,b.prototype.recordProcessAge=!1,b.prototype.recordProcessRuntime=!1,b.prototype.recordProcessDmabufRss=!1,b.prototype.resolveProcessFds=!1,b.create=function(e){return new b(e)},b.encode=function(e,t){if(t=t||a.create(),null!=e.quirks&&e.quirks.length)for(var r=0;r<e.quirks.length;++r)t.uint32(8).int32(e.quirks[r]);return null!=e.scanAllProcessesOnStart&&Object.hasOwnProperty.call(e,\"scanAllProcessesOnStart\")&&t.uint32(16).bool(e.scanAllProcessesOnStart),null!=e.recordThreadNames&&Object.hasOwnProperty.call(e,\"recordThreadNames\")&&t.uint32(24).bool(e.recordThreadNames),null!=e.procStatsPollMs&&Object.hasOwnProperty.call(e,\"procStatsPollMs\")&&t.uint32(32).uint32(e.procStatsPollMs),null!=e.procStatsCacheTtlMs&&Object.hasOwnProperty.call(e,\"procStatsCacheTtlMs\")&&t.uint32(48).uint32(e.procStatsCacheTtlMs),null!=e.resolveProcessFds&&Object.hasOwnProperty.call(e,\"resolveProcessFds\")&&t.uint32(72).bool(e.resolveProcessFds),null!=e.scanSmapsRollup&&Object.hasOwnProperty.call(e,\"scanSmapsRollup\")&&t.uint32(80).bool(e.scanSmapsRollup),null!=e.recordProcessAge&&Object.hasOwnProperty.call(e,\"recordProcessAge\")&&t.uint32(88).bool(e.recordProcessAge),null!=e.recordProcessRuntime&&Object.hasOwnProperty.call(e,\"recordProcessRuntime\")&&t.uint32(96).bool(e.recordProcessRuntime),null!=e.recordProcessDmabufRss&&Object.hasOwnProperty.call(e,\"recordProcessDmabufRss\")&&t.uint32(104).bool(e.recordProcessDmabufRss),t},b.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ProcessStatsConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.quirks&&n.quirks.length||(n.quirks=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.quirks.push(e.int32());else n.quirks.push(e.int32());break;case 2:n.scanAllProcessesOnStart=e.bool();break;case 3:n.recordThreadNames=e.bool();break;case 4:n.procStatsPollMs=e.uint32();break;case 6:n.procStatsCacheTtlMs=e.uint32();break;case 10:n.scanSmapsRollup=e.bool();break;case 11:n.recordProcessAge=e.bool();break;case 12:n.recordProcessRuntime=e.bool();break;case 13:n.recordProcessDmabufRss=e.bool();break;case 9:n.resolveProcessFds=e.bool();break;default:e.skipType(7&a)}}return n},b.fromObject=function(e){if(e instanceof s.perfetto.protos.ProcessStatsConfig)return e;var t=new s.perfetto.protos.ProcessStatsConfig;if(e.quirks){if(!Array.isArray(e.quirks))throw TypeError(\".perfetto.protos.ProcessStatsConfig.quirks: array expected\");t.quirks=[];for(var r=0;r<e.quirks.length;++r)switch(e.quirks[r]){default:if(\"number\"==typeof e.quirks[r]){t.quirks[r]=e.quirks[r];break}case\"QUIRKS_UNSPECIFIED\":case 0:t.quirks[r]=0;break;case\"DISABLE_INITIAL_DUMP\":case 1:t.quirks[r]=1;break;case\"DISABLE_ON_DEMAND\":case 2:t.quirks[r]=2}}return null!=e.scanAllProcessesOnStart&&(t.scanAllProcessesOnStart=Boolean(e.scanAllProcessesOnStart)),null!=e.recordThreadNames&&(t.recordThreadNames=Boolean(e.recordThreadNames)),null!=e.procStatsPollMs&&(t.procStatsPollMs=e.procStatsPollMs>>>0),null!=e.procStatsCacheTtlMs&&(t.procStatsCacheTtlMs=e.procStatsCacheTtlMs>>>0),null!=e.scanSmapsRollup&&(t.scanSmapsRollup=Boolean(e.scanSmapsRollup)),null!=e.recordProcessAge&&(t.recordProcessAge=Boolean(e.recordProcessAge)),null!=e.recordProcessRuntime&&(t.recordProcessRuntime=Boolean(e.recordProcessRuntime)),null!=e.recordProcessDmabufRss&&(t.recordProcessDmabufRss=Boolean(e.recordProcessDmabufRss)),null!=e.resolveProcessFds&&(t.resolveProcessFds=Boolean(e.resolveProcessFds)),t},b.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.quirks=[]),t.defaults&&(r.scanAllProcessesOnStart=!1,r.recordThreadNames=!1,r.procStatsPollMs=0,r.procStatsCacheTtlMs=0,r.resolveProcessFds=!1,r.scanSmapsRollup=!1,r.recordProcessAge=!1,r.recordProcessRuntime=!1,r.recordProcessDmabufRss=!1),e.quirks&&e.quirks.length){r.quirks=[];for(var n=0;n<e.quirks.length;++n)r.quirks[n]=t.enums!==String||void 0===s.perfetto.protos.ProcessStatsConfig.Quirks[e.quirks[n]]?e.quirks[n]:s.perfetto.protos.ProcessStatsConfig.Quirks[e.quirks[n]]}return null!=e.scanAllProcessesOnStart&&e.hasOwnProperty(\"scanAllProcessesOnStart\")&&(r.scanAllProcessesOnStart=e.scanAllProcessesOnStart),null!=e.recordThreadNames&&e.hasOwnProperty(\"recordThreadNames\")&&(r.recordThreadNames=e.recordThreadNames),null!=e.procStatsPollMs&&e.hasOwnProperty(\"procStatsPollMs\")&&(r.procStatsPollMs=e.procStatsPollMs),null!=e.procStatsCacheTtlMs&&e.hasOwnProperty(\"procStatsCacheTtlMs\")&&(r.procStatsCacheTtlMs=e.procStatsCacheTtlMs),null!=e.resolveProcessFds&&e.hasOwnProperty(\"resolveProcessFds\")&&(r.resolveProcessFds=e.resolveProcessFds),null!=e.scanSmapsRollup&&e.hasOwnProperty(\"scanSmapsRollup\")&&(r.scanSmapsRollup=e.scanSmapsRollup),null!=e.recordProcessAge&&e.hasOwnProperty(\"recordProcessAge\")&&(r.recordProcessAge=e.recordProcessAge),null!=e.recordProcessRuntime&&e.hasOwnProperty(\"recordProcessRuntime\")&&(r.recordProcessRuntime=e.recordProcessRuntime),null!=e.recordProcessDmabufRss&&e.hasOwnProperty(\"recordProcessDmabufRss\")&&(r.recordProcessDmabufRss=e.recordProcessDmabufRss),r},b.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},b.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ProcessStatsConfig\"},b.Quirks=(t={},(e=Object.create(t))[t[0]=\"QUIRKS_UNSPECIFIED\"]=0,e[t[1]=\"DISABLE_INITIAL_DUMP\"]=1,e[t[2]=\"DISABLE_ON_DEMAND\"]=2,e),b),r.HeapprofdConfig=(E.prototype.samplingIntervalBytes=i.Long?i.Long.fromBits(0,0,!0):0,E.prototype.adaptiveSamplingShmemThreshold=i.Long?i.Long.fromBits(0,0,!0):0,E.prototype.adaptiveSamplingMaxSamplingIntervalBytes=i.Long?i.Long.fromBits(0,0,!0):0,E.prototype.processCmdline=i.emptyArray,E.prototype.pid=i.emptyArray,E.prototype.targetInstalledBy=i.emptyArray,E.prototype.heaps=i.emptyArray,E.prototype.excludeHeaps=i.emptyArray,E.prototype.streamAllocations=!1,E.prototype.heapSamplingIntervals=i.emptyArray,E.prototype.allHeaps=!1,E.prototype.all=!1,E.prototype.minAnonymousMemoryKb=0,E.prototype.maxHeapprofdMemoryKb=0,E.prototype.maxHeapprofdCpuSecs=i.Long?i.Long.fromBits(0,0,!0):0,E.prototype.skipSymbolPrefix=i.emptyArray,E.prototype.continuousDumpConfig=null,E.prototype.shmemSizeBytes=i.Long?i.Long.fromBits(0,0,!0):0,E.prototype.blockClient=!1,E.prototype.blockClientTimeoutUs=0,E.prototype.noStartup=!1,E.prototype.noRunning=!1,E.prototype.dumpAtMax=!1,E.prototype.disableForkTeardown=!1,E.prototype.disableVforkDetection=!1,E.create=function(e){return new E(e)},E.encode=function(e,t){if(t=t||a.create(),null!=e.samplingIntervalBytes&&Object.hasOwnProperty.call(e,\"samplingIntervalBytes\")&&t.uint32(8).uint64(e.samplingIntervalBytes),null!=e.processCmdline&&e.processCmdline.length)for(var r=0;r<e.processCmdline.length;++r)t.uint32(18).string(e.processCmdline[r]);if(null!=e.pid&&e.pid.length)for(r=0;r<e.pid.length;++r)t.uint32(32).uint64(e.pid[r]);if(null!=e.all&&Object.hasOwnProperty.call(e,\"all\")&&t.uint32(40).bool(e.all),null!=e.continuousDumpConfig&&Object.hasOwnProperty.call(e,\"continuousDumpConfig\")&&s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig.encode(e.continuousDumpConfig,t.uint32(50).fork()).ldelim(),null!=e.skipSymbolPrefix&&e.skipSymbolPrefix.length)for(r=0;r<e.skipSymbolPrefix.length;++r)t.uint32(58).string(e.skipSymbolPrefix[r]);if(null!=e.shmemSizeBytes&&Object.hasOwnProperty.call(e,\"shmemSizeBytes\")&&t.uint32(64).uint64(e.shmemSizeBytes),null!=e.blockClient&&Object.hasOwnProperty.call(e,\"blockClient\")&&t.uint32(72).bool(e.blockClient),null!=e.noStartup&&Object.hasOwnProperty.call(e,\"noStartup\")&&t.uint32(80).bool(e.noStartup),null!=e.noRunning&&Object.hasOwnProperty.call(e,\"noRunning\")&&t.uint32(88).bool(e.noRunning),null!=e.dumpAtMax&&Object.hasOwnProperty.call(e,\"dumpAtMax\")&&t.uint32(104).bool(e.dumpAtMax),null!=e.blockClientTimeoutUs&&Object.hasOwnProperty.call(e,\"blockClientTimeoutUs\")&&t.uint32(112).uint32(e.blockClientTimeoutUs),null!=e.minAnonymousMemoryKb&&Object.hasOwnProperty.call(e,\"minAnonymousMemoryKb\")&&t.uint32(120).uint32(e.minAnonymousMemoryKb),null!=e.maxHeapprofdMemoryKb&&Object.hasOwnProperty.call(e,\"maxHeapprofdMemoryKb\")&&t.uint32(128).uint32(e.maxHeapprofdMemoryKb),null!=e.maxHeapprofdCpuSecs&&Object.hasOwnProperty.call(e,\"maxHeapprofdCpuSecs\")&&t.uint32(136).uint64(e.maxHeapprofdCpuSecs),null!=e.disableForkTeardown&&Object.hasOwnProperty.call(e,\"disableForkTeardown\")&&t.uint32(144).bool(e.disableForkTeardown),null!=e.disableVforkDetection&&Object.hasOwnProperty.call(e,\"disableVforkDetection\")&&t.uint32(152).bool(e.disableVforkDetection),null!=e.heaps&&e.heaps.length)for(r=0;r<e.heaps.length;++r)t.uint32(162).string(e.heaps[r]);if(null!=e.allHeaps&&Object.hasOwnProperty.call(e,\"allHeaps\")&&t.uint32(168).bool(e.allHeaps),null!=e.heapSamplingIntervals&&e.heapSamplingIntervals.length)for(r=0;r<e.heapSamplingIntervals.length;++r)t.uint32(176).uint64(e.heapSamplingIntervals[r]);if(null!=e.streamAllocations&&Object.hasOwnProperty.call(e,\"streamAllocations\")&&t.uint32(184).bool(e.streamAllocations),null!=e.adaptiveSamplingShmemThreshold&&Object.hasOwnProperty.call(e,\"adaptiveSamplingShmemThreshold\")&&t.uint32(192).uint64(e.adaptiveSamplingShmemThreshold),null!=e.adaptiveSamplingMaxSamplingIntervalBytes&&Object.hasOwnProperty.call(e,\"adaptiveSamplingMaxSamplingIntervalBytes\")&&t.uint32(200).uint64(e.adaptiveSamplingMaxSamplingIntervalBytes),null!=e.targetInstalledBy&&e.targetInstalledBy.length)for(r=0;r<e.targetInstalledBy.length;++r)t.uint32(210).string(e.targetInstalledBy[r]);if(null!=e.excludeHeaps&&e.excludeHeaps.length)for(r=0;r<e.excludeHeaps.length;++r)t.uint32(218).string(e.excludeHeaps[r]);return t},E.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.HeapprofdConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.samplingIntervalBytes=e.uint64();break;case 24:n.adaptiveSamplingShmemThreshold=e.uint64();break;case 25:n.adaptiveSamplingMaxSamplingIntervalBytes=e.uint64();break;case 2:n.processCmdline&&n.processCmdline.length||(n.processCmdline=[]),n.processCmdline.push(e.string());break;case 4:if(n.pid&&n.pid.length||(n.pid=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.pid.push(e.uint64());else n.pid.push(e.uint64());break;case 26:n.targetInstalledBy&&n.targetInstalledBy.length||(n.targetInstalledBy=[]),n.targetInstalledBy.push(e.string());break;case 20:n.heaps&&n.heaps.length||(n.heaps=[]),n.heaps.push(e.string());break;case 27:n.excludeHeaps&&n.excludeHeaps.length||(n.excludeHeaps=[]),n.excludeHeaps.push(e.string());break;case 23:n.streamAllocations=e.bool();break;case 22:if(n.heapSamplingIntervals&&n.heapSamplingIntervals.length||(n.heapSamplingIntervals=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.heapSamplingIntervals.push(e.uint64());else n.heapSamplingIntervals.push(e.uint64());break;case 21:n.allHeaps=e.bool();break;case 5:n.all=e.bool();break;case 15:n.minAnonymousMemoryKb=e.uint32();break;case 16:n.maxHeapprofdMemoryKb=e.uint32();break;case 17:n.maxHeapprofdCpuSecs=e.uint64();break;case 7:n.skipSymbolPrefix&&n.skipSymbolPrefix.length||(n.skipSymbolPrefix=[]),n.skipSymbolPrefix.push(e.string());break;case 6:n.continuousDumpConfig=s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig.decode(e,e.uint32());break;case 8:n.shmemSizeBytes=e.uint64();break;case 9:n.blockClient=e.bool();break;case 14:n.blockClientTimeoutUs=e.uint32();break;case 10:n.noStartup=e.bool();break;case 11:n.noRunning=e.bool();break;case 13:n.dumpAtMax=e.bool();break;case 18:n.disableForkTeardown=e.bool();break;case 19:n.disableVforkDetection=e.bool();break;default:e.skipType(7&a)}}return n},E.fromObject=function(e){if(e instanceof s.perfetto.protos.HeapprofdConfig)return e;var t=new s.perfetto.protos.HeapprofdConfig;if(null!=e.samplingIntervalBytes&&(i.Long?(t.samplingIntervalBytes=i.Long.fromValue(e.samplingIntervalBytes)).unsigned=!0:\"string\"==typeof e.samplingIntervalBytes?t.samplingIntervalBytes=parseInt(e.samplingIntervalBytes,10):\"number\"==typeof e.samplingIntervalBytes?t.samplingIntervalBytes=e.samplingIntervalBytes:\"object\"==typeof e.samplingIntervalBytes&&(t.samplingIntervalBytes=new i.LongBits(e.samplingIntervalBytes.low>>>0,e.samplingIntervalBytes.high>>>0).toNumber(!0))),null!=e.adaptiveSamplingShmemThreshold&&(i.Long?(t.adaptiveSamplingShmemThreshold=i.Long.fromValue(e.adaptiveSamplingShmemThreshold)).unsigned=!0:\"string\"==typeof e.adaptiveSamplingShmemThreshold?t.adaptiveSamplingShmemThreshold=parseInt(e.adaptiveSamplingShmemThreshold,10):\"number\"==typeof e.adaptiveSamplingShmemThreshold?t.adaptiveSamplingShmemThreshold=e.adaptiveSamplingShmemThreshold:\"object\"==typeof e.adaptiveSamplingShmemThreshold&&(t.adaptiveSamplingShmemThreshold=new i.LongBits(e.adaptiveSamplingShmemThreshold.low>>>0,e.adaptiveSamplingShmemThreshold.high>>>0).toNumber(!0))),null!=e.adaptiveSamplingMaxSamplingIntervalBytes&&(i.Long?(t.adaptiveSamplingMaxSamplingIntervalBytes=i.Long.fromValue(e.adaptiveSamplingMaxSamplingIntervalBytes)).unsigned=!0:\"string\"==typeof e.adaptiveSamplingMaxSamplingIntervalBytes?t.adaptiveSamplingMaxSamplingIntervalBytes=parseInt(e.adaptiveSamplingMaxSamplingIntervalBytes,10):\"number\"==typeof e.adaptiveSamplingMaxSamplingIntervalBytes?t.adaptiveSamplingMaxSamplingIntervalBytes=e.adaptiveSamplingMaxSamplingIntervalBytes:\"object\"==typeof e.adaptiveSamplingMaxSamplingIntervalBytes&&(t.adaptiveSamplingMaxSamplingIntervalBytes=new i.LongBits(e.adaptiveSamplingMaxSamplingIntervalBytes.low>>>0,e.adaptiveSamplingMaxSamplingIntervalBytes.high>>>0).toNumber(!0))),e.processCmdline){if(!Array.isArray(e.processCmdline))throw TypeError(\".perfetto.protos.HeapprofdConfig.processCmdline: array expected\");t.processCmdline=[];for(var r=0;r<e.processCmdline.length;++r)t.processCmdline[r]=String(e.processCmdline[r])}if(e.pid){if(!Array.isArray(e.pid))throw TypeError(\".perfetto.protos.HeapprofdConfig.pid: array expected\");t.pid=[];for(r=0;r<e.pid.length;++r)i.Long?(t.pid[r]=i.Long.fromValue(e.pid[r])).unsigned=!0:\"string\"==typeof e.pid[r]?t.pid[r]=parseInt(e.pid[r],10):\"number\"==typeof e.pid[r]?t.pid[r]=e.pid[r]:\"object\"==typeof e.pid[r]&&(t.pid[r]=new i.LongBits(e.pid[r].low>>>0,e.pid[r].high>>>0).toNumber(!0))}if(e.targetInstalledBy){if(!Array.isArray(e.targetInstalledBy))throw TypeError(\".perfetto.protos.HeapprofdConfig.targetInstalledBy: array expected\");t.targetInstalledBy=[];for(r=0;r<e.targetInstalledBy.length;++r)t.targetInstalledBy[r]=String(e.targetInstalledBy[r])}if(e.heaps){if(!Array.isArray(e.heaps))throw TypeError(\".perfetto.protos.HeapprofdConfig.heaps: array expected\");t.heaps=[];for(r=0;r<e.heaps.length;++r)t.heaps[r]=String(e.heaps[r])}if(e.excludeHeaps){if(!Array.isArray(e.excludeHeaps))throw TypeError(\".perfetto.protos.HeapprofdConfig.excludeHeaps: array expected\");t.excludeHeaps=[];for(r=0;r<e.excludeHeaps.length;++r)t.excludeHeaps[r]=String(e.excludeHeaps[r])}if(null!=e.streamAllocations&&(t.streamAllocations=Boolean(e.streamAllocations)),e.heapSamplingIntervals){if(!Array.isArray(e.heapSamplingIntervals))throw TypeError(\".perfetto.protos.HeapprofdConfig.heapSamplingIntervals: array expected\");t.heapSamplingIntervals=[];for(r=0;r<e.heapSamplingIntervals.length;++r)i.Long?(t.heapSamplingIntervals[r]=i.Long.fromValue(e.heapSamplingIntervals[r])).unsigned=!0:\"string\"==typeof e.heapSamplingIntervals[r]?t.heapSamplingIntervals[r]=parseInt(e.heapSamplingIntervals[r],10):\"number\"==typeof e.heapSamplingIntervals[r]?t.heapSamplingIntervals[r]=e.heapSamplingIntervals[r]:\"object\"==typeof e.heapSamplingIntervals[r]&&(t.heapSamplingIntervals[r]=new i.LongBits(e.heapSamplingIntervals[r].low>>>0,e.heapSamplingIntervals[r].high>>>0).toNumber(!0))}if(null!=e.allHeaps&&(t.allHeaps=Boolean(e.allHeaps)),null!=e.all&&(t.all=Boolean(e.all)),null!=e.minAnonymousMemoryKb&&(t.minAnonymousMemoryKb=e.minAnonymousMemoryKb>>>0),null!=e.maxHeapprofdMemoryKb&&(t.maxHeapprofdMemoryKb=e.maxHeapprofdMemoryKb>>>0),null!=e.maxHeapprofdCpuSecs&&(i.Long?(t.maxHeapprofdCpuSecs=i.Long.fromValue(e.maxHeapprofdCpuSecs)).unsigned=!0:\"string\"==typeof e.maxHeapprofdCpuSecs?t.maxHeapprofdCpuSecs=parseInt(e.maxHeapprofdCpuSecs,10):\"number\"==typeof e.maxHeapprofdCpuSecs?t.maxHeapprofdCpuSecs=e.maxHeapprofdCpuSecs:\"object\"==typeof e.maxHeapprofdCpuSecs&&(t.maxHeapprofdCpuSecs=new i.LongBits(e.maxHeapprofdCpuSecs.low>>>0,e.maxHeapprofdCpuSecs.high>>>0).toNumber(!0))),e.skipSymbolPrefix){if(!Array.isArray(e.skipSymbolPrefix))throw TypeError(\".perfetto.protos.HeapprofdConfig.skipSymbolPrefix: array expected\");t.skipSymbolPrefix=[];for(r=0;r<e.skipSymbolPrefix.length;++r)t.skipSymbolPrefix[r]=String(e.skipSymbolPrefix[r])}if(null!=e.continuousDumpConfig){if(\"object\"!=typeof e.continuousDumpConfig)throw TypeError(\".perfetto.protos.HeapprofdConfig.continuousDumpConfig: object expected\");t.continuousDumpConfig=s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig.fromObject(e.continuousDumpConfig)}return null!=e.shmemSizeBytes&&(i.Long?(t.shmemSizeBytes=i.Long.fromValue(e.shmemSizeBytes)).unsigned=!0:\"string\"==typeof e.shmemSizeBytes?t.shmemSizeBytes=parseInt(e.shmemSizeBytes,10):\"number\"==typeof e.shmemSizeBytes?t.shmemSizeBytes=e.shmemSizeBytes:\"object\"==typeof e.shmemSizeBytes&&(t.shmemSizeBytes=new i.LongBits(e.shmemSizeBytes.low>>>0,e.shmemSizeBytes.high>>>0).toNumber(!0))),null!=e.blockClient&&(t.blockClient=Boolean(e.blockClient)),null!=e.blockClientTimeoutUs&&(t.blockClientTimeoutUs=e.blockClientTimeoutUs>>>0),null!=e.noStartup&&(t.noStartup=Boolean(e.noStartup)),null!=e.noRunning&&(t.noRunning=Boolean(e.noRunning)),null!=e.dumpAtMax&&(t.dumpAtMax=Boolean(e.dumpAtMax)),null!=e.disableForkTeardown&&(t.disableForkTeardown=Boolean(e.disableForkTeardown)),null!=e.disableVforkDetection&&(t.disableVforkDetection=Boolean(e.disableVforkDetection)),t},E.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.processCmdline=[],n.pid=[],n.skipSymbolPrefix=[],n.heaps=[],n.heapSamplingIntervals=[],n.targetInstalledBy=[],n.excludeHeaps=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.samplingIntervalBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.samplingIntervalBytes=t.longs===String?\"0\":0,n.all=!1,n.continuousDumpConfig=null,i.Long?(r=new i.Long(0,0,!0),n.shmemSizeBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.shmemSizeBytes=t.longs===String?\"0\":0,n.blockClient=!1,n.noStartup=!1,n.noRunning=!1,n.dumpAtMax=!1,n.blockClientTimeoutUs=0,n.minAnonymousMemoryKb=0,n.maxHeapprofdMemoryKb=0,i.Long?(r=new i.Long(0,0,!0),n.maxHeapprofdCpuSecs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxHeapprofdCpuSecs=t.longs===String?\"0\":0,n.disableForkTeardown=!1,n.disableVforkDetection=!1,n.allHeaps=!1,n.streamAllocations=!1,i.Long?(r=new i.Long(0,0,!0),n.adaptiveSamplingShmemThreshold=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.adaptiveSamplingShmemThreshold=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.adaptiveSamplingMaxSamplingIntervalBytes=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.adaptiveSamplingMaxSamplingIntervalBytes=t.longs===String?\"0\":0),null!=e.samplingIntervalBytes&&e.hasOwnProperty(\"samplingIntervalBytes\")&&(\"number\"==typeof e.samplingIntervalBytes?n.samplingIntervalBytes=t.longs===String?String(e.samplingIntervalBytes):e.samplingIntervalBytes:n.samplingIntervalBytes=t.longs===String?i.Long.prototype.toString.call(e.samplingIntervalBytes):t.longs===Number?new i.LongBits(e.samplingIntervalBytes.low>>>0,e.samplingIntervalBytes.high>>>0).toNumber(!0):e.samplingIntervalBytes),e.processCmdline&&e.processCmdline.length){n.processCmdline=[];for(var a=0;a<e.processCmdline.length;++a)n.processCmdline[a]=e.processCmdline[a]}if(e.pid&&e.pid.length){n.pid=[];for(a=0;a<e.pid.length;++a)\"number\"==typeof e.pid[a]?n.pid[a]=t.longs===String?String(e.pid[a]):e.pid[a]:n.pid[a]=t.longs===String?i.Long.prototype.toString.call(e.pid[a]):t.longs===Number?new i.LongBits(e.pid[a].low>>>0,e.pid[a].high>>>0).toNumber(!0):e.pid[a]}if(null!=e.all&&e.hasOwnProperty(\"all\")&&(n.all=e.all),null!=e.continuousDumpConfig&&e.hasOwnProperty(\"continuousDumpConfig\")&&(n.continuousDumpConfig=s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig.toObject(e.continuousDumpConfig,t)),e.skipSymbolPrefix&&e.skipSymbolPrefix.length){n.skipSymbolPrefix=[];for(a=0;a<e.skipSymbolPrefix.length;++a)n.skipSymbolPrefix[a]=e.skipSymbolPrefix[a]}if(null!=e.shmemSizeBytes&&e.hasOwnProperty(\"shmemSizeBytes\")&&(\"number\"==typeof e.shmemSizeBytes?n.shmemSizeBytes=t.longs===String?String(e.shmemSizeBytes):e.shmemSizeBytes:n.shmemSizeBytes=t.longs===String?i.Long.prototype.toString.call(e.shmemSizeBytes):t.longs===Number?new i.LongBits(e.shmemSizeBytes.low>>>0,e.shmemSizeBytes.high>>>0).toNumber(!0):e.shmemSizeBytes),null!=e.blockClient&&e.hasOwnProperty(\"blockClient\")&&(n.blockClient=e.blockClient),null!=e.noStartup&&e.hasOwnProperty(\"noStartup\")&&(n.noStartup=e.noStartup),null!=e.noRunning&&e.hasOwnProperty(\"noRunning\")&&(n.noRunning=e.noRunning),null!=e.dumpAtMax&&e.hasOwnProperty(\"dumpAtMax\")&&(n.dumpAtMax=e.dumpAtMax),null!=e.blockClientTimeoutUs&&e.hasOwnProperty(\"blockClientTimeoutUs\")&&(n.blockClientTimeoutUs=e.blockClientTimeoutUs),null!=e.minAnonymousMemoryKb&&e.hasOwnProperty(\"minAnonymousMemoryKb\")&&(n.minAnonymousMemoryKb=e.minAnonymousMemoryKb),null!=e.maxHeapprofdMemoryKb&&e.hasOwnProperty(\"maxHeapprofdMemoryKb\")&&(n.maxHeapprofdMemoryKb=e.maxHeapprofdMemoryKb),null!=e.maxHeapprofdCpuSecs&&e.hasOwnProperty(\"maxHeapprofdCpuSecs\")&&(\"number\"==typeof e.maxHeapprofdCpuSecs?n.maxHeapprofdCpuSecs=t.longs===String?String(e.maxHeapprofdCpuSecs):e.maxHeapprofdCpuSecs:n.maxHeapprofdCpuSecs=t.longs===String?i.Long.prototype.toString.call(e.maxHeapprofdCpuSecs):t.longs===Number?new i.LongBits(e.maxHeapprofdCpuSecs.low>>>0,e.maxHeapprofdCpuSecs.high>>>0).toNumber(!0):e.maxHeapprofdCpuSecs),null!=e.disableForkTeardown&&e.hasOwnProperty(\"disableForkTeardown\")&&(n.disableForkTeardown=e.disableForkTeardown),null!=e.disableVforkDetection&&e.hasOwnProperty(\"disableVforkDetection\")&&(n.disableVforkDetection=e.disableVforkDetection),e.heaps&&e.heaps.length){n.heaps=[];for(a=0;a<e.heaps.length;++a)n.heaps[a]=e.heaps[a]}if(null!=e.allHeaps&&e.hasOwnProperty(\"allHeaps\")&&(n.allHeaps=e.allHeaps),e.heapSamplingIntervals&&e.heapSamplingIntervals.length){n.heapSamplingIntervals=[];for(a=0;a<e.heapSamplingIntervals.length;++a)\"number\"==typeof e.heapSamplingIntervals[a]?n.heapSamplingIntervals[a]=t.longs===String?String(e.heapSamplingIntervals[a]):e.heapSamplingIntervals[a]:n.heapSamplingIntervals[a]=t.longs===String?i.Long.prototype.toString.call(e.heapSamplingIntervals[a]):t.longs===Number?new i.LongBits(e.heapSamplingIntervals[a].low>>>0,e.heapSamplingIntervals[a].high>>>0).toNumber(!0):e.heapSamplingIntervals[a]}if(null!=e.streamAllocations&&e.hasOwnProperty(\"streamAllocations\")&&(n.streamAllocations=e.streamAllocations),null!=e.adaptiveSamplingShmemThreshold&&e.hasOwnProperty(\"adaptiveSamplingShmemThreshold\")&&(\"number\"==typeof e.adaptiveSamplingShmemThreshold?n.adaptiveSamplingShmemThreshold=t.longs===String?String(e.adaptiveSamplingShmemThreshold):e.adaptiveSamplingShmemThreshold:n.adaptiveSamplingShmemThreshold=t.longs===String?i.Long.prototype.toString.call(e.adaptiveSamplingShmemThreshold):t.longs===Number?new i.LongBits(e.adaptiveSamplingShmemThreshold.low>>>0,e.adaptiveSamplingShmemThreshold.high>>>0).toNumber(!0):e.adaptiveSamplingShmemThreshold),null!=e.adaptiveSamplingMaxSamplingIntervalBytes&&e.hasOwnProperty(\"adaptiveSamplingMaxSamplingIntervalBytes\")&&(\"number\"==typeof e.adaptiveSamplingMaxSamplingIntervalBytes?n.adaptiveSamplingMaxSamplingIntervalBytes=t.longs===String?String(e.adaptiveSamplingMaxSamplingIntervalBytes):e.adaptiveSamplingMaxSamplingIntervalBytes:n.adaptiveSamplingMaxSamplingIntervalBytes=t.longs===String?i.Long.prototype.toString.call(e.adaptiveSamplingMaxSamplingIntervalBytes):t.longs===Number?new i.LongBits(e.adaptiveSamplingMaxSamplingIntervalBytes.low>>>0,e.adaptiveSamplingMaxSamplingIntervalBytes.high>>>0).toNumber(!0):e.adaptiveSamplingMaxSamplingIntervalBytes),e.targetInstalledBy&&e.targetInstalledBy.length){n.targetInstalledBy=[];for(a=0;a<e.targetInstalledBy.length;++a)n.targetInstalledBy[a]=e.targetInstalledBy[a]}if(e.excludeHeaps&&e.excludeHeaps.length){n.excludeHeaps=[];for(a=0;a<e.excludeHeaps.length;++a)n.excludeHeaps[a]=e.excludeHeaps[a]}return n},E.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},E.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.HeapprofdConfig\"},E.ContinuousDumpConfig=(wt.prototype.dumpPhaseMs=0,wt.prototype.dumpIntervalMs=0,wt.create=function(e){return new wt(e)},wt.encode=function(e,t){return t=t||a.create(),null!=e.dumpPhaseMs&&Object.hasOwnProperty.call(e,\"dumpPhaseMs\")&&t.uint32(40).uint32(e.dumpPhaseMs),null!=e.dumpIntervalMs&&Object.hasOwnProperty.call(e,\"dumpIntervalMs\")&&t.uint32(48).uint32(e.dumpIntervalMs),t},wt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 5:n.dumpPhaseMs=e.uint32();break;case 6:n.dumpIntervalMs=e.uint32();break;default:e.skipType(7&a)}}return n},wt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig?e:(t=new s.perfetto.protos.HeapprofdConfig.ContinuousDumpConfig,null!=e.dumpPhaseMs&&(t.dumpPhaseMs=e.dumpPhaseMs>>>0),null!=e.dumpIntervalMs&&(t.dumpIntervalMs=e.dumpIntervalMs>>>0),t)},wt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.dumpPhaseMs=0,r.dumpIntervalMs=0),null!=e.dumpPhaseMs&&e.hasOwnProperty(\"dumpPhaseMs\")&&(r.dumpPhaseMs=e.dumpPhaseMs),null!=e.dumpIntervalMs&&e.hasOwnProperty(\"dumpIntervalMs\")&&(r.dumpIntervalMs=e.dumpIntervalMs),r},wt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},wt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.HeapprofdConfig.ContinuousDumpConfig\"},wt),E),r.JavaHprofConfig=(kt.prototype.processCmdline=i.emptyArray,kt.prototype.pid=i.emptyArray,kt.prototype.targetInstalledBy=i.emptyArray,kt.prototype.continuousDumpConfig=null,kt.prototype.minAnonymousMemoryKb=0,kt.prototype.dumpSmaps=!1,kt.prototype.ignoredTypes=i.emptyArray,kt.create=function(e){return new kt(e)},kt.encode=function(e,t){if(t=t||a.create(),null!=e.processCmdline&&e.processCmdline.length)for(var r=0;r<e.processCmdline.length;++r)t.uint32(10).string(e.processCmdline[r]);if(null!=e.pid&&e.pid.length)for(r=0;r<e.pid.length;++r)t.uint32(16).uint64(e.pid[r]);if(null!=e.continuousDumpConfig&&Object.hasOwnProperty.call(e,\"continuousDumpConfig\")&&s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig.encode(e.continuousDumpConfig,t.uint32(26).fork()).ldelim(),null!=e.minAnonymousMemoryKb&&Object.hasOwnProperty.call(e,\"minAnonymousMemoryKb\")&&t.uint32(32).uint32(e.minAnonymousMemoryKb),null!=e.dumpSmaps&&Object.hasOwnProperty.call(e,\"dumpSmaps\")&&t.uint32(40).bool(e.dumpSmaps),null!=e.ignoredTypes&&e.ignoredTypes.length)for(r=0;r<e.ignoredTypes.length;++r)t.uint32(50).string(e.ignoredTypes[r]);if(null!=e.targetInstalledBy&&e.targetInstalledBy.length)for(r=0;r<e.targetInstalledBy.length;++r)t.uint32(58).string(e.targetInstalledBy[r]);return t},kt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.JavaHprofConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.processCmdline&&n.processCmdline.length||(n.processCmdline=[]),n.processCmdline.push(e.string());break;case 2:if(n.pid&&n.pid.length||(n.pid=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.pid.push(e.uint64());else n.pid.push(e.uint64());break;case 7:n.targetInstalledBy&&n.targetInstalledBy.length||(n.targetInstalledBy=[]),n.targetInstalledBy.push(e.string());break;case 3:n.continuousDumpConfig=s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig.decode(e,e.uint32());break;case 4:n.minAnonymousMemoryKb=e.uint32();break;case 5:n.dumpSmaps=e.bool();break;case 6:n.ignoredTypes&&n.ignoredTypes.length||(n.ignoredTypes=[]),n.ignoredTypes.push(e.string());break;default:e.skipType(7&a)}}return n},kt.fromObject=function(e){if(e instanceof s.perfetto.protos.JavaHprofConfig)return e;var t=new s.perfetto.protos.JavaHprofConfig;if(e.processCmdline){if(!Array.isArray(e.processCmdline))throw TypeError(\".perfetto.protos.JavaHprofConfig.processCmdline: array expected\");t.processCmdline=[];for(var r=0;r<e.processCmdline.length;++r)t.processCmdline[r]=String(e.processCmdline[r])}if(e.pid){if(!Array.isArray(e.pid))throw TypeError(\".perfetto.protos.JavaHprofConfig.pid: array expected\");t.pid=[];for(r=0;r<e.pid.length;++r)i.Long?(t.pid[r]=i.Long.fromValue(e.pid[r])).unsigned=!0:\"string\"==typeof e.pid[r]?t.pid[r]=parseInt(e.pid[r],10):\"number\"==typeof e.pid[r]?t.pid[r]=e.pid[r]:\"object\"==typeof e.pid[r]&&(t.pid[r]=new i.LongBits(e.pid[r].low>>>0,e.pid[r].high>>>0).toNumber(!0))}if(e.targetInstalledBy){if(!Array.isArray(e.targetInstalledBy))throw TypeError(\".perfetto.protos.JavaHprofConfig.targetInstalledBy: array expected\");t.targetInstalledBy=[];for(r=0;r<e.targetInstalledBy.length;++r)t.targetInstalledBy[r]=String(e.targetInstalledBy[r])}if(null!=e.continuousDumpConfig){if(\"object\"!=typeof e.continuousDumpConfig)throw TypeError(\".perfetto.protos.JavaHprofConfig.continuousDumpConfig: object expected\");t.continuousDumpConfig=s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig.fromObject(e.continuousDumpConfig)}if(null!=e.minAnonymousMemoryKb&&(t.minAnonymousMemoryKb=e.minAnonymousMemoryKb>>>0),null!=e.dumpSmaps&&(t.dumpSmaps=Boolean(e.dumpSmaps)),e.ignoredTypes){if(!Array.isArray(e.ignoredTypes))throw TypeError(\".perfetto.protos.JavaHprofConfig.ignoredTypes: array expected\");t.ignoredTypes=[];for(r=0;r<e.ignoredTypes.length;++r)t.ignoredTypes[r]=String(e.ignoredTypes[r])}return t},kt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.processCmdline=[],r.pid=[],r.ignoredTypes=[],r.targetInstalledBy=[]),t.defaults&&(r.continuousDumpConfig=null,r.minAnonymousMemoryKb=0,r.dumpSmaps=!1),e.processCmdline&&e.processCmdline.length){r.processCmdline=[];for(var n=0;n<e.processCmdline.length;++n)r.processCmdline[n]=e.processCmdline[n]}if(e.pid&&e.pid.length){r.pid=[];for(n=0;n<e.pid.length;++n)\"number\"==typeof e.pid[n]?r.pid[n]=t.longs===String?String(e.pid[n]):e.pid[n]:r.pid[n]=t.longs===String?i.Long.prototype.toString.call(e.pid[n]):t.longs===Number?new i.LongBits(e.pid[n].low>>>0,e.pid[n].high>>>0).toNumber(!0):e.pid[n]}if(null!=e.continuousDumpConfig&&e.hasOwnProperty(\"continuousDumpConfig\")&&(r.continuousDumpConfig=s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig.toObject(e.continuousDumpConfig,t)),null!=e.minAnonymousMemoryKb&&e.hasOwnProperty(\"minAnonymousMemoryKb\")&&(r.minAnonymousMemoryKb=e.minAnonymousMemoryKb),null!=e.dumpSmaps&&e.hasOwnProperty(\"dumpSmaps\")&&(r.dumpSmaps=e.dumpSmaps),e.ignoredTypes&&e.ignoredTypes.length){r.ignoredTypes=[];for(n=0;n<e.ignoredTypes.length;++n)r.ignoredTypes[n]=e.ignoredTypes[n]}if(e.targetInstalledBy&&e.targetInstalledBy.length){r.targetInstalledBy=[];for(n=0;n<e.targetInstalledBy.length;++n)r.targetInstalledBy[n]=e.targetInstalledBy[n]}return r},kt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},kt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.JavaHprofConfig\"},kt.ContinuousDumpConfig=(It.prototype.dumpPhaseMs=0,It.prototype.dumpIntervalMs=0,It.prototype.scanPidsOnlyOnStart=!1,It.create=function(e){return new It(e)},It.encode=function(e,t){return t=t||a.create(),null!=e.dumpPhaseMs&&Object.hasOwnProperty.call(e,\"dumpPhaseMs\")&&t.uint32(8).uint32(e.dumpPhaseMs),null!=e.dumpIntervalMs&&Object.hasOwnProperty.call(e,\"dumpIntervalMs\")&&t.uint32(16).uint32(e.dumpIntervalMs),null!=e.scanPidsOnlyOnStart&&Object.hasOwnProperty.call(e,\"scanPidsOnlyOnStart\")&&t.uint32(24).bool(e.scanPidsOnlyOnStart),t},It.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.dumpPhaseMs=e.uint32();break;case 2:n.dumpIntervalMs=e.uint32();break;case 3:n.scanPidsOnlyOnStart=e.bool();break;default:e.skipType(7&a)}}return n},It.fromObject=function(e){var t;return e instanceof s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig?e:(t=new s.perfetto.protos.JavaHprofConfig.ContinuousDumpConfig,null!=e.dumpPhaseMs&&(t.dumpPhaseMs=e.dumpPhaseMs>>>0),null!=e.dumpIntervalMs&&(t.dumpIntervalMs=e.dumpIntervalMs>>>0),null!=e.scanPidsOnlyOnStart&&(t.scanPidsOnlyOnStart=Boolean(e.scanPidsOnlyOnStart)),t)},It.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.dumpPhaseMs=0,r.dumpIntervalMs=0,r.scanPidsOnlyOnStart=!1),null!=e.dumpPhaseMs&&e.hasOwnProperty(\"dumpPhaseMs\")&&(r.dumpPhaseMs=e.dumpPhaseMs),null!=e.dumpIntervalMs&&e.hasOwnProperty(\"dumpIntervalMs\")&&(r.dumpIntervalMs=e.dumpIntervalMs),null!=e.scanPidsOnlyOnStart&&e.hasOwnProperty(\"scanPidsOnlyOnStart\")&&(r.scanPidsOnlyOnStart=e.scanPidsOnlyOnStart),r},It.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},It.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.JavaHprofConfig.ContinuousDumpConfig\"},It),kt),r.PerfEventConfig=(S.prototype.timebase=null,S.prototype.followers=i.emptyArray,S.prototype.callstackSampling=null,S.prototype.targetCpu=i.emptyArray,S.prototype.ringBufferReadPeriodMs=0,S.prototype.ringBufferPages=0,S.prototype.maxEnqueuedFootprintKb=i.Long?i.Long.fromBits(0,0,!0):0,S.prototype.maxDaemonMemoryKb=0,S.prototype.remoteDescriptorTimeoutMs=0,S.prototype.unwindStateClearPeriodMs=0,S.prototype.targetInstalledBy=i.emptyArray,S.prototype.allCpus=!1,S.prototype.samplingFrequency=0,S.prototype.kernelFrames=!1,S.prototype.targetPid=i.emptyArray,S.prototype.targetCmdline=i.emptyArray,S.prototype.excludePid=i.emptyArray,S.prototype.excludeCmdline=i.emptyArray,S.prototype.additionalCmdlineCount=0,S.create=function(e){return new S(e)},S.encode=function(e,t){if(t=t||a.create(),null!=e.allCpus&&Object.hasOwnProperty.call(e,\"allCpus\")&&t.uint32(8).bool(e.allCpus),null!=e.samplingFrequency&&Object.hasOwnProperty.call(e,\"samplingFrequency\")&&t.uint32(16).uint32(e.samplingFrequency),null!=e.ringBufferPages&&Object.hasOwnProperty.call(e,\"ringBufferPages\")&&t.uint32(24).uint32(e.ringBufferPages),null!=e.targetPid&&e.targetPid.length)for(var r=0;r<e.targetPid.length;++r)t.uint32(32).int32(e.targetPid[r]);if(null!=e.targetCmdline&&e.targetCmdline.length)for(r=0;r<e.targetCmdline.length;++r)t.uint32(42).string(e.targetCmdline[r]);if(null!=e.excludePid&&e.excludePid.length)for(r=0;r<e.excludePid.length;++r)t.uint32(48).int32(e.excludePid[r]);if(null!=e.excludeCmdline&&e.excludeCmdline.length)for(r=0;r<e.excludeCmdline.length;++r)t.uint32(58).string(e.excludeCmdline[r]);if(null!=e.ringBufferReadPeriodMs&&Object.hasOwnProperty.call(e,\"ringBufferReadPeriodMs\")&&t.uint32(64).uint32(e.ringBufferReadPeriodMs),null!=e.remoteDescriptorTimeoutMs&&Object.hasOwnProperty.call(e,\"remoteDescriptorTimeoutMs\")&&t.uint32(72).uint32(e.remoteDescriptorTimeoutMs),null!=e.unwindStateClearPeriodMs&&Object.hasOwnProperty.call(e,\"unwindStateClearPeriodMs\")&&t.uint32(80).uint32(e.unwindStateClearPeriodMs),null!=e.additionalCmdlineCount&&Object.hasOwnProperty.call(e,\"additionalCmdlineCount\")&&t.uint32(88).uint32(e.additionalCmdlineCount),null!=e.kernelFrames&&Object.hasOwnProperty.call(e,\"kernelFrames\")&&t.uint32(96).bool(e.kernelFrames),null!=e.maxDaemonMemoryKb&&Object.hasOwnProperty.call(e,\"maxDaemonMemoryKb\")&&t.uint32(104).uint32(e.maxDaemonMemoryKb),null!=e.timebase&&Object.hasOwnProperty.call(e,\"timebase\")&&s.perfetto.protos.PerfEvents.Timebase.encode(e.timebase,t.uint32(122).fork()).ldelim(),null!=e.callstackSampling&&Object.hasOwnProperty.call(e,\"callstackSampling\")&&s.perfetto.protos.PerfEventConfig.CallstackSampling.encode(e.callstackSampling,t.uint32(130).fork()).ldelim(),null!=e.maxEnqueuedFootprintKb&&Object.hasOwnProperty.call(e,\"maxEnqueuedFootprintKb\")&&t.uint32(136).uint64(e.maxEnqueuedFootprintKb),null!=e.targetInstalledBy&&e.targetInstalledBy.length)for(r=0;r<e.targetInstalledBy.length;++r)t.uint32(146).string(e.targetInstalledBy[r]);if(null!=e.followers&&e.followers.length)for(r=0;r<e.followers.length;++r)s.perfetto.protos.FollowerEvent.encode(e.followers[r],t.uint32(154).fork()).ldelim();if(null!=e.targetCpu&&e.targetCpu.length)for(r=0;r<e.targetCpu.length;++r)t.uint32(160).uint32(e.targetCpu[r]);return t},S.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEventConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 15:n.timebase=s.perfetto.protos.PerfEvents.Timebase.decode(e,e.uint32());break;case 19:n.followers&&n.followers.length||(n.followers=[]),n.followers.push(s.perfetto.protos.FollowerEvent.decode(e,e.uint32()));break;case 16:n.callstackSampling=s.perfetto.protos.PerfEventConfig.CallstackSampling.decode(e,e.uint32());break;case 20:if(n.targetCpu&&n.targetCpu.length||(n.targetCpu=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.targetCpu.push(e.uint32());else n.targetCpu.push(e.uint32());break;case 8:n.ringBufferReadPeriodMs=e.uint32();break;case 3:n.ringBufferPages=e.uint32();break;case 17:n.maxEnqueuedFootprintKb=e.uint64();break;case 13:n.maxDaemonMemoryKb=e.uint32();break;case 9:n.remoteDescriptorTimeoutMs=e.uint32();break;case 10:n.unwindStateClearPeriodMs=e.uint32();break;case 18:n.targetInstalledBy&&n.targetInstalledBy.length||(n.targetInstalledBy=[]),n.targetInstalledBy.push(e.string());break;case 1:n.allCpus=e.bool();break;case 2:n.samplingFrequency=e.uint32();break;case 12:n.kernelFrames=e.bool();break;case 4:if(n.targetPid&&n.targetPid.length||(n.targetPid=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.targetPid.push(e.int32());else n.targetPid.push(e.int32());break;case 5:n.targetCmdline&&n.targetCmdline.length||(n.targetCmdline=[]),n.targetCmdline.push(e.string());break;case 6:if(n.excludePid&&n.excludePid.length||(n.excludePid=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.excludePid.push(e.int32());else n.excludePid.push(e.int32());break;case 7:n.excludeCmdline&&n.excludeCmdline.length||(n.excludeCmdline=[]),n.excludeCmdline.push(e.string());break;case 11:n.additionalCmdlineCount=e.uint32();break;default:e.skipType(7&a)}}return n},S.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfEventConfig)return e;var t=new s.perfetto.protos.PerfEventConfig;if(null!=e.timebase){if(\"object\"!=typeof e.timebase)throw TypeError(\".perfetto.protos.PerfEventConfig.timebase: object expected\");t.timebase=s.perfetto.protos.PerfEvents.Timebase.fromObject(e.timebase)}if(e.followers){if(!Array.isArray(e.followers))throw TypeError(\".perfetto.protos.PerfEventConfig.followers: array expected\");t.followers=[];for(var r=0;r<e.followers.length;++r){if(\"object\"!=typeof e.followers[r])throw TypeError(\".perfetto.protos.PerfEventConfig.followers: object expected\");t.followers[r]=s.perfetto.protos.FollowerEvent.fromObject(e.followers[r])}}if(null!=e.callstackSampling){if(\"object\"!=typeof e.callstackSampling)throw TypeError(\".perfetto.protos.PerfEventConfig.callstackSampling: object expected\");t.callstackSampling=s.perfetto.protos.PerfEventConfig.CallstackSampling.fromObject(e.callstackSampling)}if(e.targetCpu){if(!Array.isArray(e.targetCpu))throw TypeError(\".perfetto.protos.PerfEventConfig.targetCpu: array expected\");t.targetCpu=[];for(r=0;r<e.targetCpu.length;++r)t.targetCpu[r]=e.targetCpu[r]>>>0}if(null!=e.ringBufferReadPeriodMs&&(t.ringBufferReadPeriodMs=e.ringBufferReadPeriodMs>>>0),null!=e.ringBufferPages&&(t.ringBufferPages=e.ringBufferPages>>>0),null!=e.maxEnqueuedFootprintKb&&(i.Long?(t.maxEnqueuedFootprintKb=i.Long.fromValue(e.maxEnqueuedFootprintKb)).unsigned=!0:\"string\"==typeof e.maxEnqueuedFootprintKb?t.maxEnqueuedFootprintKb=parseInt(e.maxEnqueuedFootprintKb,10):\"number\"==typeof e.maxEnqueuedFootprintKb?t.maxEnqueuedFootprintKb=e.maxEnqueuedFootprintKb:\"object\"==typeof e.maxEnqueuedFootprintKb&&(t.maxEnqueuedFootprintKb=new i.LongBits(e.maxEnqueuedFootprintKb.low>>>0,e.maxEnqueuedFootprintKb.high>>>0).toNumber(!0))),null!=e.maxDaemonMemoryKb&&(t.maxDaemonMemoryKb=e.maxDaemonMemoryKb>>>0),null!=e.remoteDescriptorTimeoutMs&&(t.remoteDescriptorTimeoutMs=e.remoteDescriptorTimeoutMs>>>0),null!=e.unwindStateClearPeriodMs&&(t.unwindStateClearPeriodMs=e.unwindStateClearPeriodMs>>>0),e.targetInstalledBy){if(!Array.isArray(e.targetInstalledBy))throw TypeError(\".perfetto.protos.PerfEventConfig.targetInstalledBy: array expected\");t.targetInstalledBy=[];for(r=0;r<e.targetInstalledBy.length;++r)t.targetInstalledBy[r]=String(e.targetInstalledBy[r])}if(null!=e.allCpus&&(t.allCpus=Boolean(e.allCpus)),null!=e.samplingFrequency&&(t.samplingFrequency=e.samplingFrequency>>>0),null!=e.kernelFrames&&(t.kernelFrames=Boolean(e.kernelFrames)),e.targetPid){if(!Array.isArray(e.targetPid))throw TypeError(\".perfetto.protos.PerfEventConfig.targetPid: array expected\");t.targetPid=[];for(r=0;r<e.targetPid.length;++r)t.targetPid[r]=0|e.targetPid[r]}if(e.targetCmdline){if(!Array.isArray(e.targetCmdline))throw TypeError(\".perfetto.protos.PerfEventConfig.targetCmdline: array expected\");t.targetCmdline=[];for(r=0;r<e.targetCmdline.length;++r)t.targetCmdline[r]=String(e.targetCmdline[r])}if(e.excludePid){if(!Array.isArray(e.excludePid))throw TypeError(\".perfetto.protos.PerfEventConfig.excludePid: array expected\");t.excludePid=[];for(r=0;r<e.excludePid.length;++r)t.excludePid[r]=0|e.excludePid[r]}if(e.excludeCmdline){if(!Array.isArray(e.excludeCmdline))throw TypeError(\".perfetto.protos.PerfEventConfig.excludeCmdline: array expected\");t.excludeCmdline=[];for(r=0;r<e.excludeCmdline.length;++r)t.excludeCmdline[r]=String(e.excludeCmdline[r])}return null!=e.additionalCmdlineCount&&(t.additionalCmdlineCount=e.additionalCmdlineCount>>>0),t},S.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.targetPid=[],n.targetCmdline=[],n.excludePid=[],n.excludeCmdline=[],n.targetInstalledBy=[],n.followers=[],n.targetCpu=[]),t.defaults&&(n.allCpus=!1,n.samplingFrequency=0,n.ringBufferPages=0,n.ringBufferReadPeriodMs=0,n.remoteDescriptorTimeoutMs=0,n.unwindStateClearPeriodMs=0,n.additionalCmdlineCount=0,n.kernelFrames=!1,n.maxDaemonMemoryKb=0,n.timebase=null,n.callstackSampling=null,i.Long?(r=new i.Long(0,0,!0),n.maxEnqueuedFootprintKb=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxEnqueuedFootprintKb=t.longs===String?\"0\":0),null!=e.allCpus&&e.hasOwnProperty(\"allCpus\")&&(n.allCpus=e.allCpus),null!=e.samplingFrequency&&e.hasOwnProperty(\"samplingFrequency\")&&(n.samplingFrequency=e.samplingFrequency),null!=e.ringBufferPages&&e.hasOwnProperty(\"ringBufferPages\")&&(n.ringBufferPages=e.ringBufferPages),e.targetPid&&e.targetPid.length){n.targetPid=[];for(var a=0;a<e.targetPid.length;++a)n.targetPid[a]=e.targetPid[a]}if(e.targetCmdline&&e.targetCmdline.length){n.targetCmdline=[];for(a=0;a<e.targetCmdline.length;++a)n.targetCmdline[a]=e.targetCmdline[a]}if(e.excludePid&&e.excludePid.length){n.excludePid=[];for(a=0;a<e.excludePid.length;++a)n.excludePid[a]=e.excludePid[a]}if(e.excludeCmdline&&e.excludeCmdline.length){n.excludeCmdline=[];for(a=0;a<e.excludeCmdline.length;++a)n.excludeCmdline[a]=e.excludeCmdline[a]}if(null!=e.ringBufferReadPeriodMs&&e.hasOwnProperty(\"ringBufferReadPeriodMs\")&&(n.ringBufferReadPeriodMs=e.ringBufferReadPeriodMs),null!=e.remoteDescriptorTimeoutMs&&e.hasOwnProperty(\"remoteDescriptorTimeoutMs\")&&(n.remoteDescriptorTimeoutMs=e.remoteDescriptorTimeoutMs),null!=e.unwindStateClearPeriodMs&&e.hasOwnProperty(\"unwindStateClearPeriodMs\")&&(n.unwindStateClearPeriodMs=e.unwindStateClearPeriodMs),null!=e.additionalCmdlineCount&&e.hasOwnProperty(\"additionalCmdlineCount\")&&(n.additionalCmdlineCount=e.additionalCmdlineCount),null!=e.kernelFrames&&e.hasOwnProperty(\"kernelFrames\")&&(n.kernelFrames=e.kernelFrames),null!=e.maxDaemonMemoryKb&&e.hasOwnProperty(\"maxDaemonMemoryKb\")&&(n.maxDaemonMemoryKb=e.maxDaemonMemoryKb),null!=e.timebase&&e.hasOwnProperty(\"timebase\")&&(n.timebase=s.perfetto.protos.PerfEvents.Timebase.toObject(e.timebase,t)),null!=e.callstackSampling&&e.hasOwnProperty(\"callstackSampling\")&&(n.callstackSampling=s.perfetto.protos.PerfEventConfig.CallstackSampling.toObject(e.callstackSampling,t)),null!=e.maxEnqueuedFootprintKb&&e.hasOwnProperty(\"maxEnqueuedFootprintKb\")&&(\"number\"==typeof e.maxEnqueuedFootprintKb?n.maxEnqueuedFootprintKb=t.longs===String?String(e.maxEnqueuedFootprintKb):e.maxEnqueuedFootprintKb:n.maxEnqueuedFootprintKb=t.longs===String?i.Long.prototype.toString.call(e.maxEnqueuedFootprintKb):t.longs===Number?new i.LongBits(e.maxEnqueuedFootprintKb.low>>>0,e.maxEnqueuedFootprintKb.high>>>0).toNumber(!0):e.maxEnqueuedFootprintKb),e.targetInstalledBy&&e.targetInstalledBy.length){n.targetInstalledBy=[];for(a=0;a<e.targetInstalledBy.length;++a)n.targetInstalledBy[a]=e.targetInstalledBy[a]}if(e.followers&&e.followers.length){n.followers=[];for(a=0;a<e.followers.length;++a)n.followers[a]=s.perfetto.protos.FollowerEvent.toObject(e.followers[a],t)}if(e.targetCpu&&e.targetCpu.length){n.targetCpu=[];for(a=0;a<e.targetCpu.length;++a)n.targetCpu[a]=e.targetCpu[a]}return n},S.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},S.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEventConfig\"},S.CallstackSampling=(Rt.prototype.scope=null,Rt.prototype.kernelFrames=!1,Rt.prototype.userFrames=0,Rt.create=function(e){return new Rt(e)},Rt.encode=function(e,t){return t=t||a.create(),null!=e.scope&&Object.hasOwnProperty.call(e,\"scope\")&&s.perfetto.protos.PerfEventConfig.Scope.encode(e.scope,t.uint32(10).fork()).ldelim(),null!=e.kernelFrames&&Object.hasOwnProperty.call(e,\"kernelFrames\")&&t.uint32(16).bool(e.kernelFrames),null!=e.userFrames&&Object.hasOwnProperty.call(e,\"userFrames\")&&t.uint32(24).int32(e.userFrames),t},Rt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEventConfig.CallstackSampling;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.scope=s.perfetto.protos.PerfEventConfig.Scope.decode(e,e.uint32());break;case 2:n.kernelFrames=e.bool();break;case 3:n.userFrames=e.int32();break;default:e.skipType(7&a)}}return n},Rt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfEventConfig.CallstackSampling)return e;var t=new s.perfetto.protos.PerfEventConfig.CallstackSampling;if(null!=e.scope){if(\"object\"!=typeof e.scope)throw TypeError(\".perfetto.protos.PerfEventConfig.CallstackSampling.scope: object expected\");t.scope=s.perfetto.protos.PerfEventConfig.Scope.fromObject(e.scope)}switch(null!=e.kernelFrames&&(t.kernelFrames=Boolean(e.kernelFrames)),e.userFrames){default:\"number\"==typeof e.userFrames&&(t.userFrames=e.userFrames);break;case\"UNWIND_UNKNOWN\":case 0:t.userFrames=0;break;case\"UNWIND_SKIP\":case 1:t.userFrames=1;break;case\"UNWIND_DWARF\":case 2:t.userFrames=2;break;case\"UNWIND_FRAME_POINTER\":case 3:t.userFrames=3}return t},Rt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.scope=null,r.kernelFrames=!1,r.userFrames=t.enums===String?\"UNWIND_UNKNOWN\":0),null!=e.scope&&e.hasOwnProperty(\"scope\")&&(r.scope=s.perfetto.protos.PerfEventConfig.Scope.toObject(e.scope,t)),null!=e.kernelFrames&&e.hasOwnProperty(\"kernelFrames\")&&(r.kernelFrames=e.kernelFrames),null!=e.userFrames&&e.hasOwnProperty(\"userFrames\")&&(r.userFrames=t.enums!==String||void 0===s.perfetto.protos.PerfEventConfig.UnwindMode[e.userFrames]?e.userFrames:s.perfetto.protos.PerfEventConfig.UnwindMode[e.userFrames]),r},Rt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Rt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEventConfig.CallstackSampling\"},Rt),S.Scope=(Nt.prototype.targetPid=i.emptyArray,Nt.prototype.targetCmdline=i.emptyArray,Nt.prototype.excludePid=i.emptyArray,Nt.prototype.excludeCmdline=i.emptyArray,Nt.prototype.additionalCmdlineCount=0,Nt.prototype.processShardCount=0,Nt.create=function(e){return new Nt(e)},Nt.encode=function(e,t){if(t=t||a.create(),null!=e.targetPid&&e.targetPid.length)for(var r=0;r<e.targetPid.length;++r)t.uint32(8).int32(e.targetPid[r]);if(null!=e.targetCmdline&&e.targetCmdline.length)for(r=0;r<e.targetCmdline.length;++r)t.uint32(18).string(e.targetCmdline[r]);if(null!=e.excludePid&&e.excludePid.length)for(r=0;r<e.excludePid.length;++r)t.uint32(24).int32(e.excludePid[r]);if(null!=e.excludeCmdline&&e.excludeCmdline.length)for(r=0;r<e.excludeCmdline.length;++r)t.uint32(34).string(e.excludeCmdline[r]);return null!=e.additionalCmdlineCount&&Object.hasOwnProperty.call(e,\"additionalCmdlineCount\")&&t.uint32(40).uint32(e.additionalCmdlineCount),null!=e.processShardCount&&Object.hasOwnProperty.call(e,\"processShardCount\")&&t.uint32(48).uint32(e.processShardCount),t},Nt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEventConfig.Scope;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.targetPid&&n.targetPid.length||(n.targetPid=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.targetPid.push(e.int32());else n.targetPid.push(e.int32());break;case 2:n.targetCmdline&&n.targetCmdline.length||(n.targetCmdline=[]),n.targetCmdline.push(e.string());break;case 3:if(n.excludePid&&n.excludePid.length||(n.excludePid=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.excludePid.push(e.int32());else n.excludePid.push(e.int32());break;case 4:n.excludeCmdline&&n.excludeCmdline.length||(n.excludeCmdline=[]),n.excludeCmdline.push(e.string());break;case 5:n.additionalCmdlineCount=e.uint32();break;case 6:n.processShardCount=e.uint32();break;default:e.skipType(7&a)}}return n},Nt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfEventConfig.Scope)return e;var t=new s.perfetto.protos.PerfEventConfig.Scope;if(e.targetPid){if(!Array.isArray(e.targetPid))throw TypeError(\".perfetto.protos.PerfEventConfig.Scope.targetPid: array expected\");t.targetPid=[];for(var r=0;r<e.targetPid.length;++r)t.targetPid[r]=0|e.targetPid[r]}if(e.targetCmdline){if(!Array.isArray(e.targetCmdline))throw TypeError(\".perfetto.protos.PerfEventConfig.Scope.targetCmdline: array expected\");t.targetCmdline=[];for(r=0;r<e.targetCmdline.length;++r)t.targetCmdline[r]=String(e.targetCmdline[r])}if(e.excludePid){if(!Array.isArray(e.excludePid))throw TypeError(\".perfetto.protos.PerfEventConfig.Scope.excludePid: array expected\");t.excludePid=[];for(r=0;r<e.excludePid.length;++r)t.excludePid[r]=0|e.excludePid[r]}if(e.excludeCmdline){if(!Array.isArray(e.excludeCmdline))throw TypeError(\".perfetto.protos.PerfEventConfig.Scope.excludeCmdline: array expected\");t.excludeCmdline=[];for(r=0;r<e.excludeCmdline.length;++r)t.excludeCmdline[r]=String(e.excludeCmdline[r])}return null!=e.additionalCmdlineCount&&(t.additionalCmdlineCount=e.additionalCmdlineCount>>>0),null!=e.processShardCount&&(t.processShardCount=e.processShardCount>>>0),t},Nt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.targetPid=[],r.targetCmdline=[],r.excludePid=[],r.excludeCmdline=[]),t.defaults&&(r.additionalCmdlineCount=0,r.processShardCount=0),e.targetPid&&e.targetPid.length){r.targetPid=[];for(var n=0;n<e.targetPid.length;++n)r.targetPid[n]=e.targetPid[n]}if(e.targetCmdline&&e.targetCmdline.length){r.targetCmdline=[];for(n=0;n<e.targetCmdline.length;++n)r.targetCmdline[n]=e.targetCmdline[n]}if(e.excludePid&&e.excludePid.length){r.excludePid=[];for(n=0;n<e.excludePid.length;++n)r.excludePid[n]=e.excludePid[n]}if(e.excludeCmdline&&e.excludeCmdline.length){r.excludeCmdline=[];for(n=0;n<e.excludeCmdline.length;++n)r.excludeCmdline[n]=e.excludeCmdline[n]}return null!=e.additionalCmdlineCount&&e.hasOwnProperty(\"additionalCmdlineCount\")&&(r.additionalCmdlineCount=e.additionalCmdlineCount),null!=e.processShardCount&&e.hasOwnProperty(\"processShardCount\")&&(r.processShardCount=e.processShardCount),r},Nt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Nt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEventConfig.Scope\"},Nt),S.UnwindMode=(t={},(e=Object.create(t))[t[0]=\"UNWIND_UNKNOWN\"]=0,e[t[1]=\"UNWIND_SKIP\"]=1,e[t[2]=\"UNWIND_DWARF\"]=2,e[t[3]=\"UNWIND_FRAME_POINTER\"]=3,e),S),r.PerfEvents=(Mt.create=function(e){return new Mt(e)},Mt.encode=function(e,t){return t=t||a.create()},Mt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.PerfEvents;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Mt.fromObject=function(e){return e instanceof s.perfetto.protos.PerfEvents?e:new s.perfetto.protos.PerfEvents},Mt.toObject=function(){return{}},Mt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Mt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEvents\"},Mt.Timebase=(A.prototype.frequency=null,A.prototype.period=null,A.prototype.pollPeriodMs=null,A.prototype.counter=null,A.prototype.tracepoint=null,A.prototype.rawEvent=null,A.prototype.timestampClock=0,A.prototype.name=\"\",Object.defineProperty(A.prototype,\"interval\",{get:i.oneOfGetter(t=[\"frequency\",\"period\",\"pollPeriodMs\"]),set:i.oneOfSetter(t)}),Object.defineProperty(A.prototype,\"event\",{get:i.oneOfGetter(t=[\"counter\",\"tracepoint\",\"rawEvent\"]),set:i.oneOfSetter(t)}),A.create=function(e){return new A(e)},A.encode=function(e,t){return t=t||a.create(),null!=e.period&&Object.hasOwnProperty.call(e,\"period\")&&t.uint32(8).uint64(e.period),null!=e.frequency&&Object.hasOwnProperty.call(e,\"frequency\")&&t.uint32(16).uint64(e.frequency),null!=e.tracepoint&&Object.hasOwnProperty.call(e,\"tracepoint\")&&s.perfetto.protos.PerfEvents.Tracepoint.encode(e.tracepoint,t.uint32(26).fork()).ldelim(),null!=e.counter&&Object.hasOwnProperty.call(e,\"counter\")&&t.uint32(32).int32(e.counter),null!=e.rawEvent&&Object.hasOwnProperty.call(e,\"rawEvent\")&&s.perfetto.protos.PerfEvents.RawEvent.encode(e.rawEvent,t.uint32(42).fork()).ldelim(),null!=e.pollPeriodMs&&Object.hasOwnProperty.call(e,\"pollPeriodMs\")&&t.uint32(48).uint32(e.pollPeriodMs),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(82).string(e.name),null!=e.timestampClock&&Object.hasOwnProperty.call(e,\"timestampClock\")&&t.uint32(88).int32(e.timestampClock),t},A.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEvents.Timebase;e.pos<r;){var a=e.uint32();switch(a>>>3){case 2:n.frequency=e.uint64();break;case 1:n.period=e.uint64();break;case 6:n.pollPeriodMs=e.uint32();break;case 4:n.counter=e.int32();break;case 3:n.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.decode(e,e.uint32());break;case 5:n.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.decode(e,e.uint32());break;case 11:n.timestampClock=e.int32();break;case 10:n.name=e.string();break;default:e.skipType(7&a)}}return n},A.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfEvents.Timebase)return e;var t=new s.perfetto.protos.PerfEvents.Timebase;switch(null!=e.frequency&&(i.Long?(t.frequency=i.Long.fromValue(e.frequency)).unsigned=!0:\"string\"==typeof e.frequency?t.frequency=parseInt(e.frequency,10):\"number\"==typeof e.frequency?t.frequency=e.frequency:\"object\"==typeof e.frequency&&(t.frequency=new i.LongBits(e.frequency.low>>>0,e.frequency.high>>>0).toNumber(!0))),null!=e.period&&(i.Long?(t.period=i.Long.fromValue(e.period)).unsigned=!0:\"string\"==typeof e.period?t.period=parseInt(e.period,10):\"number\"==typeof e.period?t.period=e.period:\"object\"==typeof e.period&&(t.period=new i.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber(!0))),null!=e.pollPeriodMs&&(t.pollPeriodMs=e.pollPeriodMs>>>0),e.counter){default:\"number\"==typeof e.counter&&(t.counter=e.counter);break;case\"UNKNOWN_COUNTER\":case 0:t.counter=0;break;case\"SW_CPU_CLOCK\":case 1:t.counter=1;break;case\"SW_PAGE_FAULTS\":case 2:t.counter=2;break;case\"SW_TASK_CLOCK\":case 3:t.counter=3;break;case\"SW_CONTEXT_SWITCHES\":case 4:t.counter=4;break;case\"SW_CPU_MIGRATIONS\":case 5:t.counter=5;break;case\"SW_PAGE_FAULTS_MIN\":case 6:t.counter=6;break;case\"SW_PAGE_FAULTS_MAJ\":case 7:t.counter=7;break;case\"SW_ALIGNMENT_FAULTS\":case 8:t.counter=8;break;case\"SW_EMULATION_FAULTS\":case 9:t.counter=9;break;case\"SW_DUMMY\":case 20:t.counter=20;break;case\"HW_CPU_CYCLES\":case 10:t.counter=10;break;case\"HW_INSTRUCTIONS\":case 11:t.counter=11;break;case\"HW_CACHE_REFERENCES\":case 12:t.counter=12;break;case\"HW_CACHE_MISSES\":case 13:t.counter=13;break;case\"HW_BRANCH_INSTRUCTIONS\":case 14:t.counter=14;break;case\"HW_BRANCH_MISSES\":case 15:t.counter=15;break;case\"HW_BUS_CYCLES\":case 16:t.counter=16;break;case\"HW_STALLED_CYCLES_FRONTEND\":case 17:t.counter=17;break;case\"HW_STALLED_CYCLES_BACKEND\":case 18:t.counter=18;break;case\"HW_REF_CPU_CYCLES\":case 19:t.counter=19}if(null!=e.tracepoint){if(\"object\"!=typeof e.tracepoint)throw TypeError(\".perfetto.protos.PerfEvents.Timebase.tracepoint: object expected\");t.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.fromObject(e.tracepoint)}if(null!=e.rawEvent){if(\"object\"!=typeof e.rawEvent)throw TypeError(\".perfetto.protos.PerfEvents.Timebase.rawEvent: object expected\");t.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.fromObject(e.rawEvent)}switch(e.timestampClock){default:\"number\"==typeof e.timestampClock&&(t.timestampClock=e.timestampClock);break;case\"UNKNOWN_PERF_CLOCK\":case 0:t.timestampClock=0;break;case\"PERF_CLOCK_REALTIME\":case 1:t.timestampClock=1;break;case\"PERF_CLOCK_MONOTONIC\":case 2:t.timestampClock=2;break;case\"PERF_CLOCK_MONOTONIC_RAW\":case 3:t.timestampClock=3;break;case\"PERF_CLOCK_BOOTTIME\":case 4:t.timestampClock=4}return null!=e.name&&(t.name=String(e.name)),t},A.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.timestampClock=t.enums===String?\"UNKNOWN_PERF_CLOCK\":0),null!=e.period&&e.hasOwnProperty(\"period\")&&(\"number\"==typeof e.period?r.period=t.longs===String?String(e.period):e.period:r.period=t.longs===String?i.Long.prototype.toString.call(e.period):t.longs===Number?new i.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber(!0):e.period,t.oneofs)&&(r.interval=\"period\"),null!=e.frequency&&e.hasOwnProperty(\"frequency\")&&(\"number\"==typeof e.frequency?r.frequency=t.longs===String?String(e.frequency):e.frequency:r.frequency=t.longs===String?i.Long.prototype.toString.call(e.frequency):t.longs===Number?new i.LongBits(e.frequency.low>>>0,e.frequency.high>>>0).toNumber(!0):e.frequency,t.oneofs)&&(r.interval=\"frequency\"),null!=e.tracepoint&&e.hasOwnProperty(\"tracepoint\")&&(r.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.toObject(e.tracepoint,t),t.oneofs)&&(r.event=\"tracepoint\"),null!=e.counter&&e.hasOwnProperty(\"counter\")&&(r.counter=t.enums!==String||void 0===s.perfetto.protos.PerfEvents.Counter[e.counter]?e.counter:s.perfetto.protos.PerfEvents.Counter[e.counter],t.oneofs)&&(r.event=\"counter\"),null!=e.rawEvent&&e.hasOwnProperty(\"rawEvent\")&&(r.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.toObject(e.rawEvent,t),t.oneofs)&&(r.event=\"rawEvent\"),null!=e.pollPeriodMs&&e.hasOwnProperty(\"pollPeriodMs\")&&(r.pollPeriodMs=e.pollPeriodMs,t.oneofs)&&(r.interval=\"pollPeriodMs\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.timestampClock&&e.hasOwnProperty(\"timestampClock\")&&(r.timestampClock=t.enums!==String||void 0===s.perfetto.protos.PerfEvents.PerfClock[e.timestampClock]?e.timestampClock:s.perfetto.protos.PerfEvents.PerfClock[e.timestampClock]),r},A.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},A.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEvents.Timebase\"},A),Mt.Counter=(t={},(e=Object.create(t))[t[0]=\"UNKNOWN_COUNTER\"]=0,e[t[1]=\"SW_CPU_CLOCK\"]=1,e[t[2]=\"SW_PAGE_FAULTS\"]=2,e[t[3]=\"SW_TASK_CLOCK\"]=3,e[t[4]=\"SW_CONTEXT_SWITCHES\"]=4,e[t[5]=\"SW_CPU_MIGRATIONS\"]=5,e[t[6]=\"SW_PAGE_FAULTS_MIN\"]=6,e[t[7]=\"SW_PAGE_FAULTS_MAJ\"]=7,e[t[8]=\"SW_ALIGNMENT_FAULTS\"]=8,e[t[9]=\"SW_EMULATION_FAULTS\"]=9,e[t[20]=\"SW_DUMMY\"]=20,e[t[10]=\"HW_CPU_CYCLES\"]=10,e[t[11]=\"HW_INSTRUCTIONS\"]=11,e[t[12]=\"HW_CACHE_REFERENCES\"]=12,e[t[13]=\"HW_CACHE_MISSES\"]=13,e[t[14]=\"HW_BRANCH_INSTRUCTIONS\"]=14,e[t[15]=\"HW_BRANCH_MISSES\"]=15,e[t[16]=\"HW_BUS_CYCLES\"]=16,e[t[17]=\"HW_STALLED_CYCLES_FRONTEND\"]=17,e[t[18]=\"HW_STALLED_CYCLES_BACKEND\"]=18,e[t[19]=\"HW_REF_CPU_CYCLES\"]=19,e),Mt.Tracepoint=(Pt.prototype.name=\"\",Pt.prototype.filter=\"\",Pt.create=function(e){return new Pt(e)},Pt.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.filter&&Object.hasOwnProperty.call(e,\"filter\")&&t.uint32(18).string(e.filter),t},Pt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEvents.Tracepoint;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.filter=e.string();break;default:e.skipType(7&a)}}return n},Pt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfEvents.Tracepoint?e:(t=new s.perfetto.protos.PerfEvents.Tracepoint,null!=e.name&&(t.name=String(e.name)),null!=e.filter&&(t.filter=String(e.filter)),t)},Pt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.filter=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.filter&&e.hasOwnProperty(\"filter\")&&(r.filter=e.filter),r},Pt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Pt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEvents.Tracepoint\"},Pt),Mt.RawEvent=(Dt.prototype.type=0,Dt.prototype.config=i.Long?i.Long.fromBits(0,0,!0):0,Dt.prototype.config1=i.Long?i.Long.fromBits(0,0,!0):0,Dt.prototype.config2=i.Long?i.Long.fromBits(0,0,!0):0,Dt.create=function(e){return new Dt(e)},Dt.encode=function(e,t){return t=t||a.create(),null!=e.type&&Object.hasOwnProperty.call(e,\"type\")&&t.uint32(8).uint32(e.type),null!=e.config&&Object.hasOwnProperty.call(e,\"config\")&&t.uint32(16).uint64(e.config),null!=e.config1&&Object.hasOwnProperty.call(e,\"config1\")&&t.uint32(24).uint64(e.config1),null!=e.config2&&Object.hasOwnProperty.call(e,\"config2\")&&t.uint32(32).uint64(e.config2),t},Dt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfEvents.RawEvent;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.type=e.uint32();break;case 2:n.config=e.uint64();break;case 3:n.config1=e.uint64();break;case 4:n.config2=e.uint64();break;default:e.skipType(7&a)}}return n},Dt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfEvents.RawEvent?e:(t=new s.perfetto.protos.PerfEvents.RawEvent,null!=e.type&&(t.type=e.type>>>0),null!=e.config&&(i.Long?(t.config=i.Long.fromValue(e.config)).unsigned=!0:\"string\"==typeof e.config?t.config=parseInt(e.config,10):\"number\"==typeof e.config?t.config=e.config:\"object\"==typeof e.config&&(t.config=new i.LongBits(e.config.low>>>0,e.config.high>>>0).toNumber(!0))),null!=e.config1&&(i.Long?(t.config1=i.Long.fromValue(e.config1)).unsigned=!0:\"string\"==typeof e.config1?t.config1=parseInt(e.config1,10):\"number\"==typeof e.config1?t.config1=e.config1:\"object\"==typeof e.config1&&(t.config1=new i.LongBits(e.config1.low>>>0,e.config1.high>>>0).toNumber(!0))),null!=e.config2&&(i.Long?(t.config2=i.Long.fromValue(e.config2)).unsigned=!0:\"string\"==typeof e.config2?t.config2=parseInt(e.config2,10):\"number\"==typeof e.config2?t.config2=e.config2:\"object\"==typeof e.config2&&(t.config2=new i.LongBits(e.config2.low>>>0,e.config2.high>>>0).toNumber(!0))),t)},Dt.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.type=0,i.Long?(r=new i.Long(0,0,!0),n.config=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.config=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.config1=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.config1=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!0),n.config2=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.config2=t.longs===String?\"0\":0),null!=e.type&&e.hasOwnProperty(\"type\")&&(n.type=e.type),null!=e.config&&e.hasOwnProperty(\"config\")&&(\"number\"==typeof e.config?n.config=t.longs===String?String(e.config):e.config:n.config=t.longs===String?i.Long.prototype.toString.call(e.config):t.longs===Number?new i.LongBits(e.config.low>>>0,e.config.high>>>0).toNumber(!0):e.config),null!=e.config1&&e.hasOwnProperty(\"config1\")&&(\"number\"==typeof e.config1?n.config1=t.longs===String?String(e.config1):e.config1:n.config1=t.longs===String?i.Long.prototype.toString.call(e.config1):t.longs===Number?new i.LongBits(e.config1.low>>>0,e.config1.high>>>0).toNumber(!0):e.config1),null!=e.config2&&e.hasOwnProperty(\"config2\")&&(\"number\"==typeof e.config2?n.config2=t.longs===String?String(e.config2):e.config2:n.config2=t.longs===String?i.Long.prototype.toString.call(e.config2):t.longs===Number?new i.LongBits(e.config2.low>>>0,e.config2.high>>>0).toNumber(!0):e.config2),n},Dt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Dt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfEvents.RawEvent\"},Dt),Mt.PerfClock=(t={},(e=Object.create(t))[t[0]=\"UNKNOWN_PERF_CLOCK\"]=0,e[t[1]=\"PERF_CLOCK_REALTIME\"]=1,e[t[2]=\"PERF_CLOCK_MONOTONIC\"]=2,e[t[3]=\"PERF_CLOCK_MONOTONIC_RAW\"]=3,e[t[4]=\"PERF_CLOCK_BOOTTIME\"]=4,e),Mt),r.FollowerEvent=(xt.prototype.counter=null,xt.prototype.tracepoint=null,xt.prototype.rawEvent=null,xt.prototype.name=\"\",Object.defineProperty(xt.prototype,\"event\",{get:i.oneOfGetter(t=[\"counter\",\"tracepoint\",\"rawEvent\"]),set:i.oneOfSetter(t)}),xt.create=function(e){return new xt(e)},xt.encode=function(e,t){return t=t||a.create(),null!=e.counter&&Object.hasOwnProperty.call(e,\"counter\")&&t.uint32(8).int32(e.counter),null!=e.tracepoint&&Object.hasOwnProperty.call(e,\"tracepoint\")&&s.perfetto.protos.PerfEvents.Tracepoint.encode(e.tracepoint,t.uint32(18).fork()).ldelim(),null!=e.rawEvent&&Object.hasOwnProperty.call(e,\"rawEvent\")&&s.perfetto.protos.PerfEvents.RawEvent.encode(e.rawEvent,t.uint32(26).fork()).ldelim(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(34).string(e.name),t},xt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FollowerEvent;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.counter=e.int32();break;case 2:n.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.decode(e,e.uint32());break;case 3:n.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.decode(e,e.uint32());break;case 4:n.name=e.string();break;default:e.skipType(7&a)}}return n},xt.fromObject=function(e){if(e instanceof s.perfetto.protos.FollowerEvent)return e;var t=new s.perfetto.protos.FollowerEvent;switch(e.counter){default:\"number\"==typeof e.counter&&(t.counter=e.counter);break;case\"UNKNOWN_COUNTER\":case 0:t.counter=0;break;case\"SW_CPU_CLOCK\":case 1:t.counter=1;break;case\"SW_PAGE_FAULTS\":case 2:t.counter=2;break;case\"SW_TASK_CLOCK\":case 3:t.counter=3;break;case\"SW_CONTEXT_SWITCHES\":case 4:t.counter=4;break;case\"SW_CPU_MIGRATIONS\":case 5:t.counter=5;break;case\"SW_PAGE_FAULTS_MIN\":case 6:t.counter=6;break;case\"SW_PAGE_FAULTS_MAJ\":case 7:t.counter=7;break;case\"SW_ALIGNMENT_FAULTS\":case 8:t.counter=8;break;case\"SW_EMULATION_FAULTS\":case 9:t.counter=9;break;case\"SW_DUMMY\":case 20:t.counter=20;break;case\"HW_CPU_CYCLES\":case 10:t.counter=10;break;case\"HW_INSTRUCTIONS\":case 11:t.counter=11;break;case\"HW_CACHE_REFERENCES\":case 12:t.counter=12;break;case\"HW_CACHE_MISSES\":case 13:t.counter=13;break;case\"HW_BRANCH_INSTRUCTIONS\":case 14:t.counter=14;break;case\"HW_BRANCH_MISSES\":case 15:t.counter=15;break;case\"HW_BUS_CYCLES\":case 16:t.counter=16;break;case\"HW_STALLED_CYCLES_FRONTEND\":case 17:t.counter=17;break;case\"HW_STALLED_CYCLES_BACKEND\":case 18:t.counter=18;break;case\"HW_REF_CPU_CYCLES\":case 19:t.counter=19}if(null!=e.tracepoint){if(\"object\"!=typeof e.tracepoint)throw TypeError(\".perfetto.protos.FollowerEvent.tracepoint: object expected\");t.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.fromObject(e.tracepoint)}if(null!=e.rawEvent){if(\"object\"!=typeof e.rawEvent)throw TypeError(\".perfetto.protos.FollowerEvent.rawEvent: object expected\");t.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.fromObject(e.rawEvent)}return null!=e.name&&(t.name=String(e.name)),t},xt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\"),null!=e.counter&&e.hasOwnProperty(\"counter\")&&(r.counter=t.enums!==String||void 0===s.perfetto.protos.PerfEvents.Counter[e.counter]?e.counter:s.perfetto.protos.PerfEvents.Counter[e.counter],t.oneofs)&&(r.event=\"counter\"),null!=e.tracepoint&&e.hasOwnProperty(\"tracepoint\")&&(r.tracepoint=s.perfetto.protos.PerfEvents.Tracepoint.toObject(e.tracepoint,t),t.oneofs)&&(r.event=\"tracepoint\"),null!=e.rawEvent&&e.hasOwnProperty(\"rawEvent\")&&(r.rawEvent=s.perfetto.protos.PerfEvents.RawEvent.toObject(e.rawEvent,t),t.oneofs)&&(r.event=\"rawEvent\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),r},xt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},xt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FollowerEvent\"},xt),r.SysStatsConfig=(O.prototype.meminfoPeriodMs=0,O.prototype.meminfoCounters=i.emptyArray,O.prototype.vmstatPeriodMs=0,O.prototype.vmstatCounters=i.emptyArray,O.prototype.statPeriodMs=0,O.prototype.statCounters=i.emptyArray,O.prototype.devfreqPeriodMs=0,O.prototype.cpufreqPeriodMs=0,O.prototype.buddyinfoPeriodMs=0,O.prototype.diskstatPeriodMs=0,O.prototype.psiPeriodMs=0,O.prototype.thermalPeriodMs=0,O.prototype.cpuidlePeriodMs=0,O.prototype.gpufreqPeriodMs=0,O.create=function(e){return new O(e)},O.encode=function(e,t){if(t=t||a.create(),null!=e.meminfoPeriodMs&&Object.hasOwnProperty.call(e,\"meminfoPeriodMs\")&&t.uint32(8).uint32(e.meminfoPeriodMs),null!=e.meminfoCounters&&e.meminfoCounters.length)for(var r=0;r<e.meminfoCounters.length;++r)t.uint32(16).int32(e.meminfoCounters[r]);if(null!=e.vmstatPeriodMs&&Object.hasOwnProperty.call(e,\"vmstatPeriodMs\")&&t.uint32(24).uint32(e.vmstatPeriodMs),null!=e.vmstatCounters&&e.vmstatCounters.length)for(r=0;r<e.vmstatCounters.length;++r)t.uint32(32).int32(e.vmstatCounters[r]);if(null!=e.statPeriodMs&&Object.hasOwnProperty.call(e,\"statPeriodMs\")&&t.uint32(40).uint32(e.statPeriodMs),null!=e.statCounters&&e.statCounters.length)for(r=0;r<e.statCounters.length;++r)t.uint32(48).int32(e.statCounters[r]);return null!=e.devfreqPeriodMs&&Object.hasOwnProperty.call(e,\"devfreqPeriodMs\")&&t.uint32(56).uint32(e.devfreqPeriodMs),null!=e.cpufreqPeriodMs&&Object.hasOwnProperty.call(e,\"cpufreqPeriodMs\")&&t.uint32(64).uint32(e.cpufreqPeriodMs),null!=e.buddyinfoPeriodMs&&Object.hasOwnProperty.call(e,\"buddyinfoPeriodMs\")&&t.uint32(72).uint32(e.buddyinfoPeriodMs),null!=e.diskstatPeriodMs&&Object.hasOwnProperty.call(e,\"diskstatPeriodMs\")&&t.uint32(80).uint32(e.diskstatPeriodMs),null!=e.psiPeriodMs&&Object.hasOwnProperty.call(e,\"psiPeriodMs\")&&t.uint32(88).uint32(e.psiPeriodMs),null!=e.thermalPeriodMs&&Object.hasOwnProperty.call(e,\"thermalPeriodMs\")&&t.uint32(96).uint32(e.thermalPeriodMs),null!=e.cpuidlePeriodMs&&Object.hasOwnProperty.call(e,\"cpuidlePeriodMs\")&&t.uint32(104).uint32(e.cpuidlePeriodMs),null!=e.gpufreqPeriodMs&&Object.hasOwnProperty.call(e,\"gpufreqPeriodMs\")&&t.uint32(112).uint32(e.gpufreqPeriodMs),t},O.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.SysStatsConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.meminfoPeriodMs=e.uint32();break;case 2:if(n.meminfoCounters&&n.meminfoCounters.length||(n.meminfoCounters=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.meminfoCounters.push(e.int32());else n.meminfoCounters.push(e.int32());break;case 3:n.vmstatPeriodMs=e.uint32();break;case 4:if(n.vmstatCounters&&n.vmstatCounters.length||(n.vmstatCounters=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.vmstatCounters.push(e.int32());else n.vmstatCounters.push(e.int32());break;case 5:n.statPeriodMs=e.uint32();break;case 6:if(n.statCounters&&n.statCounters.length||(n.statCounters=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.statCounters.push(e.int32());else n.statCounters.push(e.int32());break;case 7:n.devfreqPeriodMs=e.uint32();break;case 8:n.cpufreqPeriodMs=e.uint32();break;case 9:n.buddyinfoPeriodMs=e.uint32();break;case 10:n.diskstatPeriodMs=e.uint32();break;case 11:n.psiPeriodMs=e.uint32();break;case 12:n.thermalPeriodMs=e.uint32();break;case 13:n.cpuidlePeriodMs=e.uint32();break;case 14:n.gpufreqPeriodMs=e.uint32();break;default:e.skipType(7&a)}}return n},O.fromObject=function(e){if(e instanceof s.perfetto.protos.SysStatsConfig)return e;var t=new s.perfetto.protos.SysStatsConfig;if(null!=e.meminfoPeriodMs&&(t.meminfoPeriodMs=e.meminfoPeriodMs>>>0),e.meminfoCounters){if(!Array.isArray(e.meminfoCounters))throw TypeError(\".perfetto.protos.SysStatsConfig.meminfoCounters: array expected\");t.meminfoCounters=[];for(var r=0;r<e.meminfoCounters.length;++r)switch(e.meminfoCounters[r]){default:if(\"number\"==typeof e.meminfoCounters[r]){t.meminfoCounters[r]=e.meminfoCounters[r];break}case\"MEMINFO_UNSPECIFIED\":case 0:t.meminfoCounters[r]=0;break;case\"MEMINFO_MEM_TOTAL\":case 1:t.meminfoCounters[r]=1;break;case\"MEMINFO_MEM_FREE\":case 2:t.meminfoCounters[r]=2;break;case\"MEMINFO_MEM_AVAILABLE\":case 3:t.meminfoCounters[r]=3;break;case\"MEMINFO_BUFFERS\":case 4:t.meminfoCounters[r]=4;break;case\"MEMINFO_CACHED\":case 5:t.meminfoCounters[r]=5;break;case\"MEMINFO_SWAP_CACHED\":case 6:t.meminfoCounters[r]=6;break;case\"MEMINFO_ACTIVE\":case 7:t.meminfoCounters[r]=7;break;case\"MEMINFO_INACTIVE\":case 8:t.meminfoCounters[r]=8;break;case\"MEMINFO_ACTIVE_ANON\":case 9:t.meminfoCounters[r]=9;break;case\"MEMINFO_INACTIVE_ANON\":case 10:t.meminfoCounters[r]=10;break;case\"MEMINFO_ACTIVE_FILE\":case 11:t.meminfoCounters[r]=11;break;case\"MEMINFO_INACTIVE_FILE\":case 12:t.meminfoCounters[r]=12;break;case\"MEMINFO_UNEVICTABLE\":case 13:t.meminfoCounters[r]=13;break;case\"MEMINFO_MLOCKED\":case 14:t.meminfoCounters[r]=14;break;case\"MEMINFO_SWAP_TOTAL\":case 15:t.meminfoCounters[r]=15;break;case\"MEMINFO_SWAP_FREE\":case 16:t.meminfoCounters[r]=16;break;case\"MEMINFO_DIRTY\":case 17:t.meminfoCounters[r]=17;break;case\"MEMINFO_WRITEBACK\":case 18:t.meminfoCounters[r]=18;break;case\"MEMINFO_ANON_PAGES\":case 19:t.meminfoCounters[r]=19;break;case\"MEMINFO_MAPPED\":case 20:t.meminfoCounters[r]=20;break;case\"MEMINFO_SHMEM\":case 21:t.meminfoCounters[r]=21;break;case\"MEMINFO_SLAB\":case 22:t.meminfoCounters[r]=22;break;case\"MEMINFO_SLAB_RECLAIMABLE\":case 23:t.meminfoCounters[r]=23;break;case\"MEMINFO_SLAB_UNRECLAIMABLE\":case 24:t.meminfoCounters[r]=24;break;case\"MEMINFO_KERNEL_STACK\":case 25:t.meminfoCounters[r]=25;break;case\"MEMINFO_PAGE_TABLES\":case 26:t.meminfoCounters[r]=26;break;case\"MEMINFO_COMMIT_LIMIT\":case 27:t.meminfoCounters[r]=27;break;case\"MEMINFO_COMMITED_AS\":case 28:t.meminfoCounters[r]=28;break;case\"MEMINFO_VMALLOC_TOTAL\":case 29:t.meminfoCounters[r]=29;break;case\"MEMINFO_VMALLOC_USED\":case 30:t.meminfoCounters[r]=30;break;case\"MEMINFO_VMALLOC_CHUNK\":case 31:t.meminfoCounters[r]=31;break;case\"MEMINFO_CMA_TOTAL\":case 32:t.meminfoCounters[r]=32;break;case\"MEMINFO_CMA_FREE\":case 33:t.meminfoCounters[r]=33;break;case\"MEMINFO_GPU\":case 34:t.meminfoCounters[r]=34;break;case\"MEMINFO_ZRAM\":case 35:t.meminfoCounters[r]=35;break;case\"MEMINFO_MISC\":case 36:t.meminfoCounters[r]=36;break;case\"MEMINFO_ION_HEAP\":case 37:t.meminfoCounters[r]=37;break;case\"MEMINFO_ION_HEAP_POOL\":case 38:t.meminfoCounters[r]=38}}if(null!=e.vmstatPeriodMs&&(t.vmstatPeriodMs=e.vmstatPeriodMs>>>0),e.vmstatCounters){if(!Array.isArray(e.vmstatCounters))throw TypeError(\".perfetto.protos.SysStatsConfig.vmstatCounters: array expected\");t.vmstatCounters=[];for(r=0;r<e.vmstatCounters.length;++r)switch(e.vmstatCounters[r]){default:if(\"number\"==typeof e.vmstatCounters[r]){t.vmstatCounters[r]=e.vmstatCounters[r];break}case\"VMSTAT_UNSPECIFIED\":case 0:t.vmstatCounters[r]=0;break;case\"VMSTAT_NR_FREE_PAGES\":case 1:t.vmstatCounters[r]=1;break;case\"VMSTAT_NR_ALLOC_BATCH\":case 2:t.vmstatCounters[r]=2;break;case\"VMSTAT_NR_INACTIVE_ANON\":case 3:t.vmstatCounters[r]=3;break;case\"VMSTAT_NR_ACTIVE_ANON\":case 4:t.vmstatCounters[r]=4;break;case\"VMSTAT_NR_INACTIVE_FILE\":case 5:t.vmstatCounters[r]=5;break;case\"VMSTAT_NR_ACTIVE_FILE\":case 6:t.vmstatCounters[r]=6;break;case\"VMSTAT_NR_UNEVICTABLE\":case 7:t.vmstatCounters[r]=7;break;case\"VMSTAT_NR_MLOCK\":case 8:t.vmstatCounters[r]=8;break;case\"VMSTAT_NR_ANON_PAGES\":case 9:t.vmstatCounters[r]=9;break;case\"VMSTAT_NR_MAPPED\":case 10:t.vmstatCounters[r]=10;break;case\"VMSTAT_NR_FILE_PAGES\":case 11:t.vmstatCounters[r]=11;break;case\"VMSTAT_NR_DIRTY\":case 12:t.vmstatCounters[r]=12;break;case\"VMSTAT_NR_WRITEBACK\":case 13:t.vmstatCounters[r]=13;break;case\"VMSTAT_NR_SLAB_RECLAIMABLE\":case 14:t.vmstatCounters[r]=14;break;case\"VMSTAT_NR_SLAB_UNRECLAIMABLE\":case 15:t.vmstatCounters[r]=15;break;case\"VMSTAT_NR_PAGE_TABLE_PAGES\":case 16:t.vmstatCounters[r]=16;break;case\"VMSTAT_NR_KERNEL_STACK\":case 17:t.vmstatCounters[r]=17;break;case\"VMSTAT_NR_OVERHEAD\":case 18:t.vmstatCounters[r]=18;break;case\"VMSTAT_NR_UNSTABLE\":case 19:t.vmstatCounters[r]=19;break;case\"VMSTAT_NR_BOUNCE\":case 20:t.vmstatCounters[r]=20;break;case\"VMSTAT_NR_VMSCAN_WRITE\":case 21:t.vmstatCounters[r]=21;break;case\"VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM\":case 22:t.vmstatCounters[r]=22;break;case\"VMSTAT_NR_WRITEBACK_TEMP\":case 23:t.vmstatCounters[r]=23;break;case\"VMSTAT_NR_ISOLATED_ANON\":case 24:t.vmstatCounters[r]=24;break;case\"VMSTAT_NR_ISOLATED_FILE\":case 25:t.vmstatCounters[r]=25;break;case\"VMSTAT_NR_SHMEM\":case 26:t.vmstatCounters[r]=26;break;case\"VMSTAT_NR_DIRTIED\":case 27:t.vmstatCounters[r]=27;break;case\"VMSTAT_NR_WRITTEN\":case 28:t.vmstatCounters[r]=28;break;case\"VMSTAT_NR_PAGES_SCANNED\":case 29:t.vmstatCounters[r]=29;break;case\"VMSTAT_WORKINGSET_REFAULT\":case 30:t.vmstatCounters[r]=30;break;case\"VMSTAT_WORKINGSET_ACTIVATE\":case 31:t.vmstatCounters[r]=31;break;case\"VMSTAT_WORKINGSET_NODERECLAIM\":case 32:t.vmstatCounters[r]=32;break;case\"VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES\":case 33:t.vmstatCounters[r]=33;break;case\"VMSTAT_NR_FREE_CMA\":case 34:t.vmstatCounters[r]=34;break;case\"VMSTAT_NR_SWAPCACHE\":case 35:t.vmstatCounters[r]=35;break;case\"VMSTAT_NR_DIRTY_THRESHOLD\":case 36:t.vmstatCounters[r]=36;break;case\"VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD\":case 37:t.vmstatCounters[r]=37;break;case\"VMSTAT_PGPGIN\":case 38:t.vmstatCounters[r]=38;break;case\"VMSTAT_PGPGOUT\":case 39:t.vmstatCounters[r]=39;break;case\"VMSTAT_PGPGOUTCLEAN\":case 40:t.vmstatCounters[r]=40;break;case\"VMSTAT_PSWPIN\":case 41:t.vmstatCounters[r]=41;break;case\"VMSTAT_PSWPOUT\":case 42:t.vmstatCounters[r]=42;break;case\"VMSTAT_PGALLOC_DMA\":case 43:t.vmstatCounters[r]=43;break;case\"VMSTAT_PGALLOC_NORMAL\":case 44:t.vmstatCounters[r]=44;break;case\"VMSTAT_PGALLOC_MOVABLE\":case 45:t.vmstatCounters[r]=45;break;case\"VMSTAT_PGFREE\":case 46:t.vmstatCounters[r]=46;break;case\"VMSTAT_PGACTIVATE\":case 47:t.vmstatCounters[r]=47;break;case\"VMSTAT_PGDEACTIVATE\":case 48:t.vmstatCounters[r]=48;break;case\"VMSTAT_PGFAULT\":case 49:t.vmstatCounters[r]=49;break;case\"VMSTAT_PGMAJFAULT\":case 50:t.vmstatCounters[r]=50;break;case\"VMSTAT_PGREFILL_DMA\":case 51:t.vmstatCounters[r]=51;break;case\"VMSTAT_PGREFILL_NORMAL\":case 52:t.vmstatCounters[r]=52;break;case\"VMSTAT_PGREFILL_MOVABLE\":case 53:t.vmstatCounters[r]=53;break;case\"VMSTAT_PGSTEAL_KSWAPD_DMA\":case 54:t.vmstatCounters[r]=54;break;case\"VMSTAT_PGSTEAL_KSWAPD_NORMAL\":case 55:t.vmstatCounters[r]=55;break;case\"VMSTAT_PGSTEAL_KSWAPD_MOVABLE\":case 56:t.vmstatCounters[r]=56;break;case\"VMSTAT_PGSTEAL_DIRECT_DMA\":case 57:t.vmstatCounters[r]=57;break;case\"VMSTAT_PGSTEAL_DIRECT_NORMAL\":case 58:t.vmstatCounters[r]=58;break;case\"VMSTAT_PGSTEAL_DIRECT_MOVABLE\":case 59:t.vmstatCounters[r]=59;break;case\"VMSTAT_PGSCAN_KSWAPD_DMA\":case 60:t.vmstatCounters[r]=60;break;case\"VMSTAT_PGSCAN_KSWAPD_NORMAL\":case 61:t.vmstatCounters[r]=61;break;case\"VMSTAT_PGSCAN_KSWAPD_MOVABLE\":case 62:t.vmstatCounters[r]=62;break;case\"VMSTAT_PGSCAN_DIRECT_DMA\":case 63:t.vmstatCounters[r]=63;break;case\"VMSTAT_PGSCAN_DIRECT_NORMAL\":case 64:t.vmstatCounters[r]=64;break;case\"VMSTAT_PGSCAN_DIRECT_MOVABLE\":case 65:t.vmstatCounters[r]=65;break;case\"VMSTAT_PGSCAN_DIRECT_THROTTLE\":case 66:t.vmstatCounters[r]=66;break;case\"VMSTAT_PGINODESTEAL\":case 67:t.vmstatCounters[r]=67;break;case\"VMSTAT_SLABS_SCANNED\":case 68:t.vmstatCounters[r]=68;break;case\"VMSTAT_KSWAPD_INODESTEAL\":case 69:t.vmstatCounters[r]=69;break;case\"VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY\":case 70:t.vmstatCounters[r]=70;break;case\"VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY\":case 71:t.vmstatCounters[r]=71;break;case\"VMSTAT_PAGEOUTRUN\":case 72:t.vmstatCounters[r]=72;break;case\"VMSTAT_ALLOCSTALL\":case 73:t.vmstatCounters[r]=73;break;case\"VMSTAT_PGROTATED\":case 74:t.vmstatCounters[r]=74;break;case\"VMSTAT_DROP_PAGECACHE\":case 75:t.vmstatCounters[r]=75;break;case\"VMSTAT_DROP_SLAB\":case 76:t.vmstatCounters[r]=76;break;case\"VMSTAT_PGMIGRATE_SUCCESS\":case 77:t.vmstatCounters[r]=77;break;case\"VMSTAT_PGMIGRATE_FAIL\":case 78:t.vmstatCounters[r]=78;break;case\"VMSTAT_COMPACT_MIGRATE_SCANNED\":case 79:t.vmstatCounters[r]=79;break;case\"VMSTAT_COMPACT_FREE_SCANNED\":case 80:t.vmstatCounters[r]=80;break;case\"VMSTAT_COMPACT_ISOLATED\":case 81:t.vmstatCounters[r]=81;break;case\"VMSTAT_COMPACT_STALL\":case 82:t.vmstatCounters[r]=82;break;case\"VMSTAT_COMPACT_FAIL\":case 83:t.vmstatCounters[r]=83;break;case\"VMSTAT_COMPACT_SUCCESS\":case 84:t.vmstatCounters[r]=84;break;case\"VMSTAT_COMPACT_DAEMON_WAKE\":case 85:t.vmstatCounters[r]=85;break;case\"VMSTAT_UNEVICTABLE_PGS_CULLED\":case 86:t.vmstatCounters[r]=86;break;case\"VMSTAT_UNEVICTABLE_PGS_SCANNED\":case 87:t.vmstatCounters[r]=87;break;case\"VMSTAT_UNEVICTABLE_PGS_RESCUED\":case 88:t.vmstatCounters[r]=88;break;case\"VMSTAT_UNEVICTABLE_PGS_MLOCKED\":case 89:t.vmstatCounters[r]=89;break;case\"VMSTAT_UNEVICTABLE_PGS_MUNLOCKED\":case 90:t.vmstatCounters[r]=90;break;case\"VMSTAT_UNEVICTABLE_PGS_CLEARED\":case 91:t.vmstatCounters[r]=91;break;case\"VMSTAT_UNEVICTABLE_PGS_STRANDED\":case 92:t.vmstatCounters[r]=92;break;case\"VMSTAT_NR_ZSPAGES\":case 93:t.vmstatCounters[r]=93;break;case\"VMSTAT_NR_ION_HEAP\":case 94:t.vmstatCounters[r]=94;break;case\"VMSTAT_NR_GPU_HEAP\":case 95:t.vmstatCounters[r]=95;break;case\"VMSTAT_ALLOCSTALL_DMA\":case 96:t.vmstatCounters[r]=96;break;case\"VMSTAT_ALLOCSTALL_MOVABLE\":case 97:t.vmstatCounters[r]=97;break;case\"VMSTAT_ALLOCSTALL_NORMAL\":case 98:t.vmstatCounters[r]=98;break;case\"VMSTAT_COMPACT_DAEMON_FREE_SCANNED\":case 99:t.vmstatCounters[r]=99;break;case\"VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED\":case 100:t.vmstatCounters[r]=100;break;case\"VMSTAT_NR_FASTRPC\":case 101:t.vmstatCounters[r]=101;break;case\"VMSTAT_NR_INDIRECTLY_RECLAIMABLE\":case 102:t.vmstatCounters[r]=102;break;case\"VMSTAT_NR_ION_HEAP_POOL\":case 103:t.vmstatCounters[r]=103;break;case\"VMSTAT_NR_KERNEL_MISC_RECLAIMABLE\":case 104:t.vmstatCounters[r]=104;break;case\"VMSTAT_NR_SHADOW_CALL_STACK_BYTES\":case 105:t.vmstatCounters[r]=105;break;case\"VMSTAT_NR_SHMEM_HUGEPAGES\":case 106:t.vmstatCounters[r]=106;break;case\"VMSTAT_NR_SHMEM_PMDMAPPED\":case 107:t.vmstatCounters[r]=107;break;case\"VMSTAT_NR_UNRECLAIMABLE_PAGES\":case 108:t.vmstatCounters[r]=108;break;case\"VMSTAT_NR_ZONE_ACTIVE_ANON\":case 109:t.vmstatCounters[r]=109;break;case\"VMSTAT_NR_ZONE_ACTIVE_FILE\":case 110:t.vmstatCounters[r]=110;break;case\"VMSTAT_NR_ZONE_INACTIVE_ANON\":case 111:t.vmstatCounters[r]=111;break;case\"VMSTAT_NR_ZONE_INACTIVE_FILE\":case 112:t.vmstatCounters[r]=112;break;case\"VMSTAT_NR_ZONE_UNEVICTABLE\":case 113:t.vmstatCounters[r]=113;break;case\"VMSTAT_NR_ZONE_WRITE_PENDING\":case 114:t.vmstatCounters[r]=114;break;case\"VMSTAT_OOM_KILL\":case 115:t.vmstatCounters[r]=115;break;case\"VMSTAT_PGLAZYFREE\":case 116:t.vmstatCounters[r]=116;break;case\"VMSTAT_PGLAZYFREED\":case 117:t.vmstatCounters[r]=117;break;case\"VMSTAT_PGREFILL\":case 118:t.vmstatCounters[r]=118;break;case\"VMSTAT_PGSCAN_DIRECT\":case 119:t.vmstatCounters[r]=119;break;case\"VMSTAT_PGSCAN_KSWAPD\":case 120:t.vmstatCounters[r]=120;break;case\"VMSTAT_PGSKIP_DMA\":case 121:t.vmstatCounters[r]=121;break;case\"VMSTAT_PGSKIP_MOVABLE\":case 122:t.vmstatCounters[r]=122;break;case\"VMSTAT_PGSKIP_NORMAL\":case 123:t.vmstatCounters[r]=123;break;case\"VMSTAT_PGSTEAL_DIRECT\":case 124:t.vmstatCounters[r]=124;break;case\"VMSTAT_PGSTEAL_KSWAPD\":case 125:t.vmstatCounters[r]=125;break;case\"VMSTAT_SWAP_RA\":case 126:t.vmstatCounters[r]=126;break;case\"VMSTAT_SWAP_RA_HIT\":case 127:t.vmstatCounters[r]=127;break;case\"VMSTAT_WORKINGSET_RESTORE\":case 128:t.vmstatCounters[r]=128;break;case\"VMSTAT_ALLOCSTALL_DEVICE\":case 129:t.vmstatCounters[r]=129;break;case\"VMSTAT_ALLOCSTALL_DMA32\":case 130:t.vmstatCounters[r]=130;break;case\"VMSTAT_BALLOON_DEFLATE\":case 131:t.vmstatCounters[r]=131;break;case\"VMSTAT_BALLOON_INFLATE\":case 132:t.vmstatCounters[r]=132;break;case\"VMSTAT_BALLOON_MIGRATE\":case 133:t.vmstatCounters[r]=133;break;case\"VMSTAT_CMA_ALLOC_FAIL\":case 134:t.vmstatCounters[r]=134;break;case\"VMSTAT_CMA_ALLOC_SUCCESS\":case 135:t.vmstatCounters[r]=135;break;case\"VMSTAT_NR_FILE_HUGEPAGES\":case 136:t.vmstatCounters[r]=136;break;case\"VMSTAT_NR_FILE_PMDMAPPED\":case 137:t.vmstatCounters[r]=137;break;case\"VMSTAT_NR_FOLL_PIN_ACQUIRED\":case 138:t.vmstatCounters[r]=138;break;case\"VMSTAT_NR_FOLL_PIN_RELEASED\":case 139:t.vmstatCounters[r]=139;break;case\"VMSTAT_NR_SEC_PAGE_TABLE_PAGES\":case 140:t.vmstatCounters[r]=140;break;case\"VMSTAT_NR_SHADOW_CALL_STACK\":case 141:t.vmstatCounters[r]=141;break;case\"VMSTAT_NR_SWAPCACHED\":case 142:t.vmstatCounters[r]=142;break;case\"VMSTAT_NR_THROTTLED_WRITTEN\":case 143:t.vmstatCounters[r]=143;break;case\"VMSTAT_PGALLOC_DEVICE\":case 144:t.vmstatCounters[r]=144;break;case\"VMSTAT_PGALLOC_DMA32\":case 145:t.vmstatCounters[r]=145;break;case\"VMSTAT_PGDEMOTE_DIRECT\":case 146:t.vmstatCounters[r]=146;break;case\"VMSTAT_PGDEMOTE_KSWAPD\":case 147:t.vmstatCounters[r]=147;break;case\"VMSTAT_PGREUSE\":case 148:t.vmstatCounters[r]=148;break;case\"VMSTAT_PGSCAN_ANON\":case 149:t.vmstatCounters[r]=149;break;case\"VMSTAT_PGSCAN_FILE\":case 150:t.vmstatCounters[r]=150;break;case\"VMSTAT_PGSKIP_DEVICE\":case 151:t.vmstatCounters[r]=151;break;case\"VMSTAT_PGSKIP_DMA32\":case 152:t.vmstatCounters[r]=152;break;case\"VMSTAT_PGSTEAL_ANON\":case 153:t.vmstatCounters[r]=153;break;case\"VMSTAT_PGSTEAL_FILE\":case 154:t.vmstatCounters[r]=154;break;case\"VMSTAT_THP_COLLAPSE_ALLOC\":case 155:t.vmstatCounters[r]=155;break;case\"VMSTAT_THP_COLLAPSE_ALLOC_FAILED\":case 156:t.vmstatCounters[r]=156;break;case\"VMSTAT_THP_DEFERRED_SPLIT_PAGE\":case 157:t.vmstatCounters[r]=157;break;case\"VMSTAT_THP_FAULT_ALLOC\":case 158:t.vmstatCounters[r]=158;break;case\"VMSTAT_THP_FAULT_FALLBACK\":case 159:t.vmstatCounters[r]=159;break;case\"VMSTAT_THP_FAULT_FALLBACK_CHARGE\":case 160:t.vmstatCounters[r]=160;break;case\"VMSTAT_THP_FILE_ALLOC\":case 161:t.vmstatCounters[r]=161;break;case\"VMSTAT_THP_FILE_FALLBACK\":case 162:t.vmstatCounters[r]=162;break;case\"VMSTAT_THP_FILE_FALLBACK_CHARGE\":case 163:t.vmstatCounters[r]=163;break;case\"VMSTAT_THP_FILE_MAPPED\":case 164:t.vmstatCounters[r]=164;break;case\"VMSTAT_THP_MIGRATION_FAIL\":case 165:t.vmstatCounters[r]=165;break;case\"VMSTAT_THP_MIGRATION_SPLIT\":case 166:t.vmstatCounters[r]=166;break;case\"VMSTAT_THP_MIGRATION_SUCCESS\":case 167:t.vmstatCounters[r]=167;break;case\"VMSTAT_THP_SCAN_EXCEED_NONE_PTE\":case 168:t.vmstatCounters[r]=168;break;case\"VMSTAT_THP_SCAN_EXCEED_SHARE_PTE\":case 169:t.vmstatCounters[r]=169;break;case\"VMSTAT_THP_SCAN_EXCEED_SWAP_PTE\":case 170:t.vmstatCounters[r]=170;break;case\"VMSTAT_THP_SPLIT_PAGE\":case 171:t.vmstatCounters[r]=171;break;case\"VMSTAT_THP_SPLIT_PAGE_FAILED\":case 172:t.vmstatCounters[r]=172;break;case\"VMSTAT_THP_SPLIT_PMD\":case 173:t.vmstatCounters[r]=173;break;case\"VMSTAT_THP_SWPOUT\":case 174:t.vmstatCounters[r]=174;break;case\"VMSTAT_THP_SWPOUT_FALLBACK\":case 175:t.vmstatCounters[r]=175;break;case\"VMSTAT_THP_ZERO_PAGE_ALLOC\":case 176:t.vmstatCounters[r]=176;break;case\"VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED\":case 177:t.vmstatCounters[r]=177;break;case\"VMSTAT_VMA_LOCK_ABORT\":case 178:t.vmstatCounters[r]=178;break;case\"VMSTAT_VMA_LOCK_MISS\":case 179:t.vmstatCounters[r]=179;break;case\"VMSTAT_VMA_LOCK_RETRY\":case 180:t.vmstatCounters[r]=180;break;case\"VMSTAT_VMA_LOCK_SUCCESS\":case 181:t.vmstatCounters[r]=181;break;case\"VMSTAT_WORKINGSET_ACTIVATE_ANON\":case 182:t.vmstatCounters[r]=182;break;case\"VMSTAT_WORKINGSET_ACTIVATE_FILE\":case 183:t.vmstatCounters[r]=183;break;case\"VMSTAT_WORKINGSET_NODES\":case 184:t.vmstatCounters[r]=184;break;case\"VMSTAT_WORKINGSET_REFAULT_ANON\":case 185:t.vmstatCounters[r]=185;break;case\"VMSTAT_WORKINGSET_REFAULT_FILE\":case 186:t.vmstatCounters[r]=186;break;case\"VMSTAT_WORKINGSET_RESTORE_ANON\":case 187:t.vmstatCounters[r]=187;break;case\"VMSTAT_WORKINGSET_RESTORE_FILE\":case 188:t.vmstatCounters[r]=188}}if(null!=e.statPeriodMs&&(t.statPeriodMs=e.statPeriodMs>>>0),e.statCounters){if(!Array.isArray(e.statCounters))throw TypeError(\".perfetto.protos.SysStatsConfig.statCounters: array expected\");t.statCounters=[];for(r=0;r<e.statCounters.length;++r)switch(e.statCounters[r]){default:if(\"number\"==typeof e.statCounters[r]){t.statCounters[r]=e.statCounters[r];break}case\"STAT_UNSPECIFIED\":case 0:t.statCounters[r]=0;break;case\"STAT_CPU_TIMES\":case 1:t.statCounters[r]=1;break;case\"STAT_IRQ_COUNTS\":case 2:t.statCounters[r]=2;break;case\"STAT_SOFTIRQ_COUNTS\":case 3:t.statCounters[r]=3;break;case\"STAT_FORK_COUNT\":case 4:t.statCounters[r]=4}}return null!=e.devfreqPeriodMs&&(t.devfreqPeriodMs=e.devfreqPeriodMs>>>0),null!=e.cpufreqPeriodMs&&(t.cpufreqPeriodMs=e.cpufreqPeriodMs>>>0),null!=e.buddyinfoPeriodMs&&(t.buddyinfoPeriodMs=e.buddyinfoPeriodMs>>>0),null!=e.diskstatPeriodMs&&(t.diskstatPeriodMs=e.diskstatPeriodMs>>>0),null!=e.psiPeriodMs&&(t.psiPeriodMs=e.psiPeriodMs>>>0),null!=e.thermalPeriodMs&&(t.thermalPeriodMs=e.thermalPeriodMs>>>0),null!=e.cpuidlePeriodMs&&(t.cpuidlePeriodMs=e.cpuidlePeriodMs>>>0),null!=e.gpufreqPeriodMs&&(t.gpufreqPeriodMs=e.gpufreqPeriodMs>>>0),t},O.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.meminfoCounters=[],r.vmstatCounters=[],r.statCounters=[]),t.defaults&&(r.meminfoPeriodMs=0,r.vmstatPeriodMs=0,r.statPeriodMs=0,r.devfreqPeriodMs=0,r.cpufreqPeriodMs=0,r.buddyinfoPeriodMs=0,r.diskstatPeriodMs=0,r.psiPeriodMs=0,r.thermalPeriodMs=0,r.cpuidlePeriodMs=0,r.gpufreqPeriodMs=0),null!=e.meminfoPeriodMs&&e.hasOwnProperty(\"meminfoPeriodMs\")&&(r.meminfoPeriodMs=e.meminfoPeriodMs),e.meminfoCounters&&e.meminfoCounters.length){r.meminfoCounters=[];for(var n=0;n<e.meminfoCounters.length;++n)r.meminfoCounters[n]=t.enums!==String||void 0===s.perfetto.protos.MeminfoCounters[e.meminfoCounters[n]]?e.meminfoCounters[n]:s.perfetto.protos.MeminfoCounters[e.meminfoCounters[n]]}if(null!=e.vmstatPeriodMs&&e.hasOwnProperty(\"vmstatPeriodMs\")&&(r.vmstatPeriodMs=e.vmstatPeriodMs),e.vmstatCounters&&e.vmstatCounters.length){r.vmstatCounters=[];for(n=0;n<e.vmstatCounters.length;++n)r.vmstatCounters[n]=t.enums!==String||void 0===s.perfetto.protos.VmstatCounters[e.vmstatCounters[n]]?e.vmstatCounters[n]:s.perfetto.protos.VmstatCounters[e.vmstatCounters[n]]}if(null!=e.statPeriodMs&&e.hasOwnProperty(\"statPeriodMs\")&&(r.statPeriodMs=e.statPeriodMs),e.statCounters&&e.statCounters.length){r.statCounters=[];for(n=0;n<e.statCounters.length;++n)r.statCounters[n]=t.enums!==String||void 0===s.perfetto.protos.SysStatsConfig.StatCounters[e.statCounters[n]]?e.statCounters[n]:s.perfetto.protos.SysStatsConfig.StatCounters[e.statCounters[n]]}return null!=e.devfreqPeriodMs&&e.hasOwnProperty(\"devfreqPeriodMs\")&&(r.devfreqPeriodMs=e.devfreqPeriodMs),null!=e.cpufreqPeriodMs&&e.hasOwnProperty(\"cpufreqPeriodMs\")&&(r.cpufreqPeriodMs=e.cpufreqPeriodMs),null!=e.buddyinfoPeriodMs&&e.hasOwnProperty(\"buddyinfoPeriodMs\")&&(r.buddyinfoPeriodMs=e.buddyinfoPeriodMs),null!=e.diskstatPeriodMs&&e.hasOwnProperty(\"diskstatPeriodMs\")&&(r.diskstatPeriodMs=e.diskstatPeriodMs),null!=e.psiPeriodMs&&e.hasOwnProperty(\"psiPeriodMs\")&&(r.psiPeriodMs=e.psiPeriodMs),null!=e.thermalPeriodMs&&e.hasOwnProperty(\"thermalPeriodMs\")&&(r.thermalPeriodMs=e.thermalPeriodMs),null!=e.cpuidlePeriodMs&&e.hasOwnProperty(\"cpuidlePeriodMs\")&&(r.cpuidlePeriodMs=e.cpuidlePeriodMs),null!=e.gpufreqPeriodMs&&e.hasOwnProperty(\"gpufreqPeriodMs\")&&(r.gpufreqPeriodMs=e.gpufreqPeriodMs),r},O.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},O.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SysStatsConfig\"},O.StatCounters=(e={},(t=Object.create(e))[e[0]=\"STAT_UNSPECIFIED\"]=0,t[e[1]=\"STAT_CPU_TIMES\"]=1,t[e[2]=\"STAT_IRQ_COUNTS\"]=2,t[e[3]=\"STAT_SOFTIRQ_COUNTS\"]=3,t[e[4]=\"STAT_FORK_COUNT\"]=4,t),O),r.MeminfoCounters=(e={},(t=Object.create(e))[e[0]=\"MEMINFO_UNSPECIFIED\"]=0,t[e[1]=\"MEMINFO_MEM_TOTAL\"]=1,t[e[2]=\"MEMINFO_MEM_FREE\"]=2,t[e[3]=\"MEMINFO_MEM_AVAILABLE\"]=3,t[e[4]=\"MEMINFO_BUFFERS\"]=4,t[e[5]=\"MEMINFO_CACHED\"]=5,t[e[6]=\"MEMINFO_SWAP_CACHED\"]=6,t[e[7]=\"MEMINFO_ACTIVE\"]=7,t[e[8]=\"MEMINFO_INACTIVE\"]=8,t[e[9]=\"MEMINFO_ACTIVE_ANON\"]=9,t[e[10]=\"MEMINFO_INACTIVE_ANON\"]=10,t[e[11]=\"MEMINFO_ACTIVE_FILE\"]=11,t[e[12]=\"MEMINFO_INACTIVE_FILE\"]=12,t[e[13]=\"MEMINFO_UNEVICTABLE\"]=13,t[e[14]=\"MEMINFO_MLOCKED\"]=14,t[e[15]=\"MEMINFO_SWAP_TOTAL\"]=15,t[e[16]=\"MEMINFO_SWAP_FREE\"]=16,t[e[17]=\"MEMINFO_DIRTY\"]=17,t[e[18]=\"MEMINFO_WRITEBACK\"]=18,t[e[19]=\"MEMINFO_ANON_PAGES\"]=19,t[e[20]=\"MEMINFO_MAPPED\"]=20,t[e[21]=\"MEMINFO_SHMEM\"]=21,t[e[22]=\"MEMINFO_SLAB\"]=22,t[e[23]=\"MEMINFO_SLAB_RECLAIMABLE\"]=23,t[e[24]=\"MEMINFO_SLAB_UNRECLAIMABLE\"]=24,t[e[25]=\"MEMINFO_KERNEL_STACK\"]=25,t[e[26]=\"MEMINFO_PAGE_TABLES\"]=26,t[e[27]=\"MEMINFO_COMMIT_LIMIT\"]=27,t[e[28]=\"MEMINFO_COMMITED_AS\"]=28,t[e[29]=\"MEMINFO_VMALLOC_TOTAL\"]=29,t[e[30]=\"MEMINFO_VMALLOC_USED\"]=30,t[e[31]=\"MEMINFO_VMALLOC_CHUNK\"]=31,t[e[32]=\"MEMINFO_CMA_TOTAL\"]=32,t[e[33]=\"MEMINFO_CMA_FREE\"]=33,t[e[34]=\"MEMINFO_GPU\"]=34,t[e[35]=\"MEMINFO_ZRAM\"]=35,t[e[36]=\"MEMINFO_MISC\"]=36,t[e[37]=\"MEMINFO_ION_HEAP\"]=37,t[e[38]=\"MEMINFO_ION_HEAP_POOL\"]=38,t),r.VmstatCounters=(e={},(t=Object.create(e))[e[0]=\"VMSTAT_UNSPECIFIED\"]=0,t[e[1]=\"VMSTAT_NR_FREE_PAGES\"]=1,t[e[2]=\"VMSTAT_NR_ALLOC_BATCH\"]=2,t[e[3]=\"VMSTAT_NR_INACTIVE_ANON\"]=3,t[e[4]=\"VMSTAT_NR_ACTIVE_ANON\"]=4,t[e[5]=\"VMSTAT_NR_INACTIVE_FILE\"]=5,t[e[6]=\"VMSTAT_NR_ACTIVE_FILE\"]=6,t[e[7]=\"VMSTAT_NR_UNEVICTABLE\"]=7,t[e[8]=\"VMSTAT_NR_MLOCK\"]=8,t[e[9]=\"VMSTAT_NR_ANON_PAGES\"]=9,t[e[10]=\"VMSTAT_NR_MAPPED\"]=10,t[e[11]=\"VMSTAT_NR_FILE_PAGES\"]=11,t[e[12]=\"VMSTAT_NR_DIRTY\"]=12,t[e[13]=\"VMSTAT_NR_WRITEBACK\"]=13,t[e[14]=\"VMSTAT_NR_SLAB_RECLAIMABLE\"]=14,t[e[15]=\"VMSTAT_NR_SLAB_UNRECLAIMABLE\"]=15,t[e[16]=\"VMSTAT_NR_PAGE_TABLE_PAGES\"]=16,t[e[17]=\"VMSTAT_NR_KERNEL_STACK\"]=17,t[e[18]=\"VMSTAT_NR_OVERHEAD\"]=18,t[e[19]=\"VMSTAT_NR_UNSTABLE\"]=19,t[e[20]=\"VMSTAT_NR_BOUNCE\"]=20,t[e[21]=\"VMSTAT_NR_VMSCAN_WRITE\"]=21,t[e[22]=\"VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM\"]=22,t[e[23]=\"VMSTAT_NR_WRITEBACK_TEMP\"]=23,t[e[24]=\"VMSTAT_NR_ISOLATED_ANON\"]=24,t[e[25]=\"VMSTAT_NR_ISOLATED_FILE\"]=25,t[e[26]=\"VMSTAT_NR_SHMEM\"]=26,t[e[27]=\"VMSTAT_NR_DIRTIED\"]=27,t[e[28]=\"VMSTAT_NR_WRITTEN\"]=28,t[e[29]=\"VMSTAT_NR_PAGES_SCANNED\"]=29,t[e[30]=\"VMSTAT_WORKINGSET_REFAULT\"]=30,t[e[31]=\"VMSTAT_WORKINGSET_ACTIVATE\"]=31,t[e[32]=\"VMSTAT_WORKINGSET_NODERECLAIM\"]=32,t[e[33]=\"VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES\"]=33,t[e[34]=\"VMSTAT_NR_FREE_CMA\"]=34,t[e[35]=\"VMSTAT_NR_SWAPCACHE\"]=35,t[e[36]=\"VMSTAT_NR_DIRTY_THRESHOLD\"]=36,t[e[37]=\"VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD\"]=37,t[e[38]=\"VMSTAT_PGPGIN\"]=38,t[e[39]=\"VMSTAT_PGPGOUT\"]=39,t[e[40]=\"VMSTAT_PGPGOUTCLEAN\"]=40,t[e[41]=\"VMSTAT_PSWPIN\"]=41,t[e[42]=\"VMSTAT_PSWPOUT\"]=42,t[e[43]=\"VMSTAT_PGALLOC_DMA\"]=43,t[e[44]=\"VMSTAT_PGALLOC_NORMAL\"]=44,t[e[45]=\"VMSTAT_PGALLOC_MOVABLE\"]=45,t[e[46]=\"VMSTAT_PGFREE\"]=46,t[e[47]=\"VMSTAT_PGACTIVATE\"]=47,t[e[48]=\"VMSTAT_PGDEACTIVATE\"]=48,t[e[49]=\"VMSTAT_PGFAULT\"]=49,t[e[50]=\"VMSTAT_PGMAJFAULT\"]=50,t[e[51]=\"VMSTAT_PGREFILL_DMA\"]=51,t[e[52]=\"VMSTAT_PGREFILL_NORMAL\"]=52,t[e[53]=\"VMSTAT_PGREFILL_MOVABLE\"]=53,t[e[54]=\"VMSTAT_PGSTEAL_KSWAPD_DMA\"]=54,t[e[55]=\"VMSTAT_PGSTEAL_KSWAPD_NORMAL\"]=55,t[e[56]=\"VMSTAT_PGSTEAL_KSWAPD_MOVABLE\"]=56,t[e[57]=\"VMSTAT_PGSTEAL_DIRECT_DMA\"]=57,t[e[58]=\"VMSTAT_PGSTEAL_DIRECT_NORMAL\"]=58,t[e[59]=\"VMSTAT_PGSTEAL_DIRECT_MOVABLE\"]=59,t[e[60]=\"VMSTAT_PGSCAN_KSWAPD_DMA\"]=60,t[e[61]=\"VMSTAT_PGSCAN_KSWAPD_NORMAL\"]=61,t[e[62]=\"VMSTAT_PGSCAN_KSWAPD_MOVABLE\"]=62,t[e[63]=\"VMSTAT_PGSCAN_DIRECT_DMA\"]=63,t[e[64]=\"VMSTAT_PGSCAN_DIRECT_NORMAL\"]=64,t[e[65]=\"VMSTAT_PGSCAN_DIRECT_MOVABLE\"]=65,t[e[66]=\"VMSTAT_PGSCAN_DIRECT_THROTTLE\"]=66,t[e[67]=\"VMSTAT_PGINODESTEAL\"]=67,t[e[68]=\"VMSTAT_SLABS_SCANNED\"]=68,t[e[69]=\"VMSTAT_KSWAPD_INODESTEAL\"]=69,t[e[70]=\"VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY\"]=70,t[e[71]=\"VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY\"]=71,t[e[72]=\"VMSTAT_PAGEOUTRUN\"]=72,t[e[73]=\"VMSTAT_ALLOCSTALL\"]=73,t[e[74]=\"VMSTAT_PGROTATED\"]=74,t[e[75]=\"VMSTAT_DROP_PAGECACHE\"]=75,t[e[76]=\"VMSTAT_DROP_SLAB\"]=76,t[e[77]=\"VMSTAT_PGMIGRATE_SUCCESS\"]=77,t[e[78]=\"VMSTAT_PGMIGRATE_FAIL\"]=78,t[e[79]=\"VMSTAT_COMPACT_MIGRATE_SCANNED\"]=79,t[e[80]=\"VMSTAT_COMPACT_FREE_SCANNED\"]=80,t[e[81]=\"VMSTAT_COMPACT_ISOLATED\"]=81,t[e[82]=\"VMSTAT_COMPACT_STALL\"]=82,t[e[83]=\"VMSTAT_COMPACT_FAIL\"]=83,t[e[84]=\"VMSTAT_COMPACT_SUCCESS\"]=84,t[e[85]=\"VMSTAT_COMPACT_DAEMON_WAKE\"]=85,t[e[86]=\"VMSTAT_UNEVICTABLE_PGS_CULLED\"]=86,t[e[87]=\"VMSTAT_UNEVICTABLE_PGS_SCANNED\"]=87,t[e[88]=\"VMSTAT_UNEVICTABLE_PGS_RESCUED\"]=88,t[e[89]=\"VMSTAT_UNEVICTABLE_PGS_MLOCKED\"]=89,t[e[90]=\"VMSTAT_UNEVICTABLE_PGS_MUNLOCKED\"]=90,t[e[91]=\"VMSTAT_UNEVICTABLE_PGS_CLEARED\"]=91,t[e[92]=\"VMSTAT_UNEVICTABLE_PGS_STRANDED\"]=92,t[e[93]=\"VMSTAT_NR_ZSPAGES\"]=93,t[e[94]=\"VMSTAT_NR_ION_HEAP\"]=94,t[e[95]=\"VMSTAT_NR_GPU_HEAP\"]=95,t[e[96]=\"VMSTAT_ALLOCSTALL_DMA\"]=96,t[e[97]=\"VMSTAT_ALLOCSTALL_MOVABLE\"]=97,t[e[98]=\"VMSTAT_ALLOCSTALL_NORMAL\"]=98,t[e[99]=\"VMSTAT_COMPACT_DAEMON_FREE_SCANNED\"]=99,t[e[100]=\"VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED\"]=100,t[e[101]=\"VMSTAT_NR_FASTRPC\"]=101,t[e[102]=\"VMSTAT_NR_INDIRECTLY_RECLAIMABLE\"]=102,t[e[103]=\"VMSTAT_NR_ION_HEAP_POOL\"]=103,t[e[104]=\"VMSTAT_NR_KERNEL_MISC_RECLAIMABLE\"]=104,t[e[105]=\"VMSTAT_NR_SHADOW_CALL_STACK_BYTES\"]=105,t[e[106]=\"VMSTAT_NR_SHMEM_HUGEPAGES\"]=106,t[e[107]=\"VMSTAT_NR_SHMEM_PMDMAPPED\"]=107,t[e[108]=\"VMSTAT_NR_UNRECLAIMABLE_PAGES\"]=108,t[e[109]=\"VMSTAT_NR_ZONE_ACTIVE_ANON\"]=109,t[e[110]=\"VMSTAT_NR_ZONE_ACTIVE_FILE\"]=110,t[e[111]=\"VMSTAT_NR_ZONE_INACTIVE_ANON\"]=111,t[e[112]=\"VMSTAT_NR_ZONE_INACTIVE_FILE\"]=112,t[e[113]=\"VMSTAT_NR_ZONE_UNEVICTABLE\"]=113,t[e[114]=\"VMSTAT_NR_ZONE_WRITE_PENDING\"]=114,t[e[115]=\"VMSTAT_OOM_KILL\"]=115,t[e[116]=\"VMSTAT_PGLAZYFREE\"]=116,t[e[117]=\"VMSTAT_PGLAZYFREED\"]=117,t[e[118]=\"VMSTAT_PGREFILL\"]=118,t[e[119]=\"VMSTAT_PGSCAN_DIRECT\"]=119,t[e[120]=\"VMSTAT_PGSCAN_KSWAPD\"]=120,t[e[121]=\"VMSTAT_PGSKIP_DMA\"]=121,t[e[122]=\"VMSTAT_PGSKIP_MOVABLE\"]=122,t[e[123]=\"VMSTAT_PGSKIP_NORMAL\"]=123,t[e[124]=\"VMSTAT_PGSTEAL_DIRECT\"]=124,t[e[125]=\"VMSTAT_PGSTEAL_KSWAPD\"]=125,t[e[126]=\"VMSTAT_SWAP_RA\"]=126,t[e[127]=\"VMSTAT_SWAP_RA_HIT\"]=127,t[e[128]=\"VMSTAT_WORKINGSET_RESTORE\"]=128,t[e[129]=\"VMSTAT_ALLOCSTALL_DEVICE\"]=129,t[e[130]=\"VMSTAT_ALLOCSTALL_DMA32\"]=130,t[e[131]=\"VMSTAT_BALLOON_DEFLATE\"]=131,t[e[132]=\"VMSTAT_BALLOON_INFLATE\"]=132,t[e[133]=\"VMSTAT_BALLOON_MIGRATE\"]=133,t[e[134]=\"VMSTAT_CMA_ALLOC_FAIL\"]=134,t[e[135]=\"VMSTAT_CMA_ALLOC_SUCCESS\"]=135,t[e[136]=\"VMSTAT_NR_FILE_HUGEPAGES\"]=136,t[e[137]=\"VMSTAT_NR_FILE_PMDMAPPED\"]=137,t[e[138]=\"VMSTAT_NR_FOLL_PIN_ACQUIRED\"]=138,t[e[139]=\"VMSTAT_NR_FOLL_PIN_RELEASED\"]=139,t[e[140]=\"VMSTAT_NR_SEC_PAGE_TABLE_PAGES\"]=140,t[e[141]=\"VMSTAT_NR_SHADOW_CALL_STACK\"]=141,t[e[142]=\"VMSTAT_NR_SWAPCACHED\"]=142,t[e[143]=\"VMSTAT_NR_THROTTLED_WRITTEN\"]=143,t[e[144]=\"VMSTAT_PGALLOC_DEVICE\"]=144,t[e[145]=\"VMSTAT_PGALLOC_DMA32\"]=145,t[e[146]=\"VMSTAT_PGDEMOTE_DIRECT\"]=146,t[e[147]=\"VMSTAT_PGDEMOTE_KSWAPD\"]=147,t[e[148]=\"VMSTAT_PGREUSE\"]=148,t[e[149]=\"VMSTAT_PGSCAN_ANON\"]=149,t[e[150]=\"VMSTAT_PGSCAN_FILE\"]=150,t[e[151]=\"VMSTAT_PGSKIP_DEVICE\"]=151,t[e[152]=\"VMSTAT_PGSKIP_DMA32\"]=152,t[e[153]=\"VMSTAT_PGSTEAL_ANON\"]=153,t[e[154]=\"VMSTAT_PGSTEAL_FILE\"]=154,t[e[155]=\"VMSTAT_THP_COLLAPSE_ALLOC\"]=155,t[e[156]=\"VMSTAT_THP_COLLAPSE_ALLOC_FAILED\"]=156,t[e[157]=\"VMSTAT_THP_DEFERRED_SPLIT_PAGE\"]=157,t[e[158]=\"VMSTAT_THP_FAULT_ALLOC\"]=158,t[e[159]=\"VMSTAT_THP_FAULT_FALLBACK\"]=159,t[e[160]=\"VMSTAT_THP_FAULT_FALLBACK_CHARGE\"]=160,t[e[161]=\"VMSTAT_THP_FILE_ALLOC\"]=161,t[e[162]=\"VMSTAT_THP_FILE_FALLBACK\"]=162,t[e[163]=\"VMSTAT_THP_FILE_FALLBACK_CHARGE\"]=163,t[e[164]=\"VMSTAT_THP_FILE_MAPPED\"]=164,t[e[165]=\"VMSTAT_THP_MIGRATION_FAIL\"]=165,t[e[166]=\"VMSTAT_THP_MIGRATION_SPLIT\"]=166,t[e[167]=\"VMSTAT_THP_MIGRATION_SUCCESS\"]=167,t[e[168]=\"VMSTAT_THP_SCAN_EXCEED_NONE_PTE\"]=168,t[e[169]=\"VMSTAT_THP_SCAN_EXCEED_SHARE_PTE\"]=169,t[e[170]=\"VMSTAT_THP_SCAN_EXCEED_SWAP_PTE\"]=170,t[e[171]=\"VMSTAT_THP_SPLIT_PAGE\"]=171,t[e[172]=\"VMSTAT_THP_SPLIT_PAGE_FAILED\"]=172,t[e[173]=\"VMSTAT_THP_SPLIT_PMD\"]=173,t[e[174]=\"VMSTAT_THP_SWPOUT\"]=174,t[e[175]=\"VMSTAT_THP_SWPOUT_FALLBACK\"]=175,t[e[176]=\"VMSTAT_THP_ZERO_PAGE_ALLOC\"]=176,t[e[177]=\"VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED\"]=177,t[e[178]=\"VMSTAT_VMA_LOCK_ABORT\"]=178,t[e[179]=\"VMSTAT_VMA_LOCK_MISS\"]=179,t[e[180]=\"VMSTAT_VMA_LOCK_RETRY\"]=180,t[e[181]=\"VMSTAT_VMA_LOCK_SUCCESS\"]=181,t[e[182]=\"VMSTAT_WORKINGSET_ACTIVATE_ANON\"]=182,t[e[183]=\"VMSTAT_WORKINGSET_ACTIVATE_FILE\"]=183,t[e[184]=\"VMSTAT_WORKINGSET_NODES\"]=184,t[e[185]=\"VMSTAT_WORKINGSET_REFAULT_ANON\"]=185,t[e[186]=\"VMSTAT_WORKINGSET_REFAULT_FILE\"]=186,t[e[187]=\"VMSTAT_WORKINGSET_RESTORE_ANON\"]=187,t[e[188]=\"VMSTAT_WORKINGSET_RESTORE_FILE\"]=188,t),r.TestConfig=(Lt.prototype.messageCount=0,Lt.prototype.maxMessagesPerSecond=0,Lt.prototype.seed=0,Lt.prototype.messageSize=0,Lt.prototype.sendBatchOnRegister=!1,Lt.prototype.dummyFields=null,Lt.create=function(e){return new Lt(e)},Lt.encode=function(e,t){return t=t||a.create(),null!=e.messageCount&&Object.hasOwnProperty.call(e,\"messageCount\")&&t.uint32(8).uint32(e.messageCount),null!=e.maxMessagesPerSecond&&Object.hasOwnProperty.call(e,\"maxMessagesPerSecond\")&&t.uint32(16).uint32(e.maxMessagesPerSecond),null!=e.seed&&Object.hasOwnProperty.call(e,\"seed\")&&t.uint32(24).uint32(e.seed),null!=e.messageSize&&Object.hasOwnProperty.call(e,\"messageSize\")&&t.uint32(32).uint32(e.messageSize),null!=e.sendBatchOnRegister&&Object.hasOwnProperty.call(e,\"sendBatchOnRegister\")&&t.uint32(40).bool(e.sendBatchOnRegister),null!=e.dummyFields&&Object.hasOwnProperty.call(e,\"dummyFields\")&&s.perfetto.protos.TestConfig.DummyFields.encode(e.dummyFields,t.uint32(50).fork()).ldelim(),t},Lt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TestConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.messageCount=e.uint32();break;case 2:n.maxMessagesPerSecond=e.uint32();break;case 3:n.seed=e.uint32();break;case 4:n.messageSize=e.uint32();break;case 5:n.sendBatchOnRegister=e.bool();break;case 6:n.dummyFields=s.perfetto.protos.TestConfig.DummyFields.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},Lt.fromObject=function(e){if(e instanceof s.perfetto.protos.TestConfig)return e;var t=new s.perfetto.protos.TestConfig;if(null!=e.messageCount&&(t.messageCount=e.messageCount>>>0),null!=e.maxMessagesPerSecond&&(t.maxMessagesPerSecond=e.maxMessagesPerSecond>>>0),null!=e.seed&&(t.seed=e.seed>>>0),null!=e.messageSize&&(t.messageSize=e.messageSize>>>0),null!=e.sendBatchOnRegister&&(t.sendBatchOnRegister=Boolean(e.sendBatchOnRegister)),null!=e.dummyFields){if(\"object\"!=typeof e.dummyFields)throw TypeError(\".perfetto.protos.TestConfig.dummyFields: object expected\");t.dummyFields=s.perfetto.protos.TestConfig.DummyFields.fromObject(e.dummyFields)}return t},Lt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.messageCount=0,r.maxMessagesPerSecond=0,r.seed=0,r.messageSize=0,r.sendBatchOnRegister=!1,r.dummyFields=null),null!=e.messageCount&&e.hasOwnProperty(\"messageCount\")&&(r.messageCount=e.messageCount),null!=e.maxMessagesPerSecond&&e.hasOwnProperty(\"maxMessagesPerSecond\")&&(r.maxMessagesPerSecond=e.maxMessagesPerSecond),null!=e.seed&&e.hasOwnProperty(\"seed\")&&(r.seed=e.seed),null!=e.messageSize&&e.hasOwnProperty(\"messageSize\")&&(r.messageSize=e.messageSize),null!=e.sendBatchOnRegister&&e.hasOwnProperty(\"sendBatchOnRegister\")&&(r.sendBatchOnRegister=e.sendBatchOnRegister),null!=e.dummyFields&&e.hasOwnProperty(\"dummyFields\")&&(r.dummyFields=s.perfetto.protos.TestConfig.DummyFields.toObject(e.dummyFields,t)),r},Lt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Lt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TestConfig\"},Lt.DummyFields=(C.prototype.fieldUint32=0,C.prototype.fieldInt32=0,C.prototype.fieldUint64=i.Long?i.Long.fromBits(0,0,!0):0,C.prototype.fieldInt64=i.Long?i.Long.fromBits(0,0,!1):0,C.prototype.fieldFixed64=i.Long?i.Long.fromBits(0,0,!1):0,C.prototype.fieldSfixed64=i.Long?i.Long.fromBits(0,0,!1):0,C.prototype.fieldFixed32=0,C.prototype.fieldSfixed32=0,C.prototype.fieldDouble=0,C.prototype.fieldFloat=0,C.prototype.fieldSint64=i.Long?i.Long.fromBits(0,0,!1):0,C.prototype.fieldSint32=0,C.prototype.fieldString=\"\",C.prototype.fieldBytes=i.newBuffer([]),C.create=function(e){return new C(e)},C.encode=function(e,t){return t=t||a.create(),null!=e.fieldUint32&&Object.hasOwnProperty.call(e,\"fieldUint32\")&&t.uint32(8).uint32(e.fieldUint32),null!=e.fieldInt32&&Object.hasOwnProperty.call(e,\"fieldInt32\")&&t.uint32(16).int32(e.fieldInt32),null!=e.fieldUint64&&Object.hasOwnProperty.call(e,\"fieldUint64\")&&t.uint32(24).uint64(e.fieldUint64),null!=e.fieldInt64&&Object.hasOwnProperty.call(e,\"fieldInt64\")&&t.uint32(32).int64(e.fieldInt64),null!=e.fieldFixed64&&Object.hasOwnProperty.call(e,\"fieldFixed64\")&&t.uint32(41).fixed64(e.fieldFixed64),null!=e.fieldSfixed64&&Object.hasOwnProperty.call(e,\"fieldSfixed64\")&&t.uint32(49).sfixed64(e.fieldSfixed64),null!=e.fieldFixed32&&Object.hasOwnProperty.call(e,\"fieldFixed32\")&&t.uint32(61).fixed32(e.fieldFixed32),null!=e.fieldSfixed32&&Object.hasOwnProperty.call(e,\"fieldSfixed32\")&&t.uint32(69).sfixed32(e.fieldSfixed32),null!=e.fieldDouble&&Object.hasOwnProperty.call(e,\"fieldDouble\")&&t.uint32(73).double(e.fieldDouble),null!=e.fieldFloat&&Object.hasOwnProperty.call(e,\"fieldFloat\")&&t.uint32(85).float(e.fieldFloat),null!=e.fieldSint64&&Object.hasOwnProperty.call(e,\"fieldSint64\")&&t.uint32(88).sint64(e.fieldSint64),null!=e.fieldSint32&&Object.hasOwnProperty.call(e,\"fieldSint32\")&&t.uint32(96).sint32(e.fieldSint32),null!=e.fieldString&&Object.hasOwnProperty.call(e,\"fieldString\")&&t.uint32(106).string(e.fieldString),null!=e.fieldBytes&&Object.hasOwnProperty.call(e,\"fieldBytes\")&&t.uint32(114).bytes(e.fieldBytes),t},C.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TestConfig.DummyFields;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.fieldUint32=e.uint32();break;case 2:n.fieldInt32=e.int32();break;case 3:n.fieldUint64=e.uint64();break;case 4:n.fieldInt64=e.int64();break;case 5:n.fieldFixed64=e.fixed64();break;case 6:n.fieldSfixed64=e.sfixed64();break;case 7:n.fieldFixed32=e.fixed32();break;case 8:n.fieldSfixed32=e.sfixed32();break;case 9:n.fieldDouble=e.double();break;case 10:n.fieldFloat=e.float();break;case 11:n.fieldSint64=e.sint64();break;case 12:n.fieldSint32=e.sint32();break;case 13:n.fieldString=e.string();break;case 14:n.fieldBytes=e.bytes();break;default:e.skipType(7&a)}}return n},C.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TestConfig.DummyFields?e:(t=new s.perfetto.protos.TestConfig.DummyFields,null!=e.fieldUint32&&(t.fieldUint32=e.fieldUint32>>>0),null!=e.fieldInt32&&(t.fieldInt32=0|e.fieldInt32),null!=e.fieldUint64&&(i.Long?(t.fieldUint64=i.Long.fromValue(e.fieldUint64)).unsigned=!0:\"string\"==typeof e.fieldUint64?t.fieldUint64=parseInt(e.fieldUint64,10):\"number\"==typeof e.fieldUint64?t.fieldUint64=e.fieldUint64:\"object\"==typeof e.fieldUint64&&(t.fieldUint64=new i.LongBits(e.fieldUint64.low>>>0,e.fieldUint64.high>>>0).toNumber(!0))),null!=e.fieldInt64&&(i.Long?(t.fieldInt64=i.Long.fromValue(e.fieldInt64)).unsigned=!1:\"string\"==typeof e.fieldInt64?t.fieldInt64=parseInt(e.fieldInt64,10):\"number\"==typeof e.fieldInt64?t.fieldInt64=e.fieldInt64:\"object\"==typeof e.fieldInt64&&(t.fieldInt64=new i.LongBits(e.fieldInt64.low>>>0,e.fieldInt64.high>>>0).toNumber())),null!=e.fieldFixed64&&(i.Long?(t.fieldFixed64=i.Long.fromValue(e.fieldFixed64)).unsigned=!1:\"string\"==typeof e.fieldFixed64?t.fieldFixed64=parseInt(e.fieldFixed64,10):\"number\"==typeof e.fieldFixed64?t.fieldFixed64=e.fieldFixed64:\"object\"==typeof e.fieldFixed64&&(t.fieldFixed64=new i.LongBits(e.fieldFixed64.low>>>0,e.fieldFixed64.high>>>0).toNumber())),null!=e.fieldSfixed64&&(i.Long?(t.fieldSfixed64=i.Long.fromValue(e.fieldSfixed64)).unsigned=!1:\"string\"==typeof e.fieldSfixed64?t.fieldSfixed64=parseInt(e.fieldSfixed64,10):\"number\"==typeof e.fieldSfixed64?t.fieldSfixed64=e.fieldSfixed64:\"object\"==typeof e.fieldSfixed64&&(t.fieldSfixed64=new i.LongBits(e.fieldSfixed64.low>>>0,e.fieldSfixed64.high>>>0).toNumber())),null!=e.fieldFixed32&&(t.fieldFixed32=e.fieldFixed32>>>0),null!=e.fieldSfixed32&&(t.fieldSfixed32=0|e.fieldSfixed32),null!=e.fieldDouble&&(t.fieldDouble=Number(e.fieldDouble)),null!=e.fieldFloat&&(t.fieldFloat=Number(e.fieldFloat)),null!=e.fieldSint64&&(i.Long?(t.fieldSint64=i.Long.fromValue(e.fieldSint64)).unsigned=!1:\"string\"==typeof e.fieldSint64?t.fieldSint64=parseInt(e.fieldSint64,10):\"number\"==typeof e.fieldSint64?t.fieldSint64=e.fieldSint64:\"object\"==typeof e.fieldSint64&&(t.fieldSint64=new i.LongBits(e.fieldSint64.low>>>0,e.fieldSint64.high>>>0).toNumber())),null!=e.fieldSint32&&(t.fieldSint32=0|e.fieldSint32),null!=e.fieldString&&(t.fieldString=String(e.fieldString)),null!=e.fieldBytes&&(\"string\"==typeof e.fieldBytes?i.base64.decode(e.fieldBytes,t.fieldBytes=i.newBuffer(i.base64.length(e.fieldBytes)),0):0<=e.fieldBytes.length&&(t.fieldBytes=e.fieldBytes)),t)},C.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.fieldUint32=0,n.fieldInt32=0,i.Long?(r=new i.Long(0,0,!0),n.fieldUint64=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.fieldUint64=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.fieldInt64=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.fieldInt64=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.fieldFixed64=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.fieldFixed64=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.fieldSfixed64=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.fieldSfixed64=t.longs===String?\"0\":0,n.fieldFixed32=0,n.fieldSfixed32=0,n.fieldDouble=0,n.fieldFloat=0,i.Long?(r=new i.Long(0,0,!1),n.fieldSint64=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.fieldSint64=t.longs===String?\"0\":0,n.fieldSint32=0,n.fieldString=\"\",t.bytes===String?n.fieldBytes=\"\":(n.fieldBytes=[],t.bytes!==Array&&(n.fieldBytes=i.newBuffer(n.fieldBytes)))),null!=e.fieldUint32&&e.hasOwnProperty(\"fieldUint32\")&&(n.fieldUint32=e.fieldUint32),null!=e.fieldInt32&&e.hasOwnProperty(\"fieldInt32\")&&(n.fieldInt32=e.fieldInt32),null!=e.fieldUint64&&e.hasOwnProperty(\"fieldUint64\")&&(\"number\"==typeof e.fieldUint64?n.fieldUint64=t.longs===String?String(e.fieldUint64):e.fieldUint64:n.fieldUint64=t.longs===String?i.Long.prototype.toString.call(e.fieldUint64):t.longs===Number?new i.LongBits(e.fieldUint64.low>>>0,e.fieldUint64.high>>>0).toNumber(!0):e.fieldUint64),null!=e.fieldInt64&&e.hasOwnProperty(\"fieldInt64\")&&(\"number\"==typeof e.fieldInt64?n.fieldInt64=t.longs===String?String(e.fieldInt64):e.fieldInt64:n.fieldInt64=t.longs===String?i.Long.prototype.toString.call(e.fieldInt64):t.longs===Number?new i.LongBits(e.fieldInt64.low>>>0,e.fieldInt64.high>>>0).toNumber():e.fieldInt64),null!=e.fieldFixed64&&e.hasOwnProperty(\"fieldFixed64\")&&(\"number\"==typeof e.fieldFixed64?n.fieldFixed64=t.longs===String?String(e.fieldFixed64):e.fieldFixed64:n.fieldFixed64=t.longs===String?i.Long.prototype.toString.call(e.fieldFixed64):t.longs===Number?new i.LongBits(e.fieldFixed64.low>>>0,e.fieldFixed64.high>>>0).toNumber():e.fieldFixed64),null!=e.fieldSfixed64&&e.hasOwnProperty(\"fieldSfixed64\")&&(\"number\"==typeof e.fieldSfixed64?n.fieldSfixed64=t.longs===String?String(e.fieldSfixed64):e.fieldSfixed64:n.fieldSfixed64=t.longs===String?i.Long.prototype.toString.call(e.fieldSfixed64):t.longs===Number?new i.LongBits(e.fieldSfixed64.low>>>0,e.fieldSfixed64.high>>>0).toNumber():e.fieldSfixed64),null!=e.fieldFixed32&&e.hasOwnProperty(\"fieldFixed32\")&&(n.fieldFixed32=e.fieldFixed32),null!=e.fieldSfixed32&&e.hasOwnProperty(\"fieldSfixed32\")&&(n.fieldSfixed32=e.fieldSfixed32),null!=e.fieldDouble&&e.hasOwnProperty(\"fieldDouble\")&&(n.fieldDouble=t.json&&!isFinite(e.fieldDouble)?String(e.fieldDouble):e.fieldDouble),null!=e.fieldFloat&&e.hasOwnProperty(\"fieldFloat\")&&(n.fieldFloat=t.json&&!isFinite(e.fieldFloat)?String(e.fieldFloat):e.fieldFloat),null!=e.fieldSint64&&e.hasOwnProperty(\"fieldSint64\")&&(\"number\"==typeof e.fieldSint64?n.fieldSint64=t.longs===String?String(e.fieldSint64):e.fieldSint64:n.fieldSint64=t.longs===String?i.Long.prototype.toString.call(e.fieldSint64):t.longs===Number?new i.LongBits(e.fieldSint64.low>>>0,e.fieldSint64.high>>>0).toNumber():e.fieldSint64),null!=e.fieldSint32&&e.hasOwnProperty(\"fieldSint32\")&&(n.fieldSint32=e.fieldSint32),null!=e.fieldString&&e.hasOwnProperty(\"fieldString\")&&(n.fieldString=e.fieldString),null!=e.fieldBytes&&e.hasOwnProperty(\"fieldBytes\")&&(n.fieldBytes=t.bytes===String?i.base64.encode(e.fieldBytes,0,e.fieldBytes.length):t.bytes===Array?Array.prototype.slice.call(e.fieldBytes):e.fieldBytes),n},C.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},C.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TestConfig.DummyFields\"},C),Lt),r.TrackEventConfig=(w.prototype.disabledCategories=i.emptyArray,w.prototype.enabledCategories=i.emptyArray,w.prototype.disabledTags=i.emptyArray,w.prototype.enabledTags=i.emptyArray,w.prototype.disableIncrementalTimestamps=!1,w.prototype.timestampUnitMultiplier=i.Long?i.Long.fromBits(0,0,!0):0,w.prototype.filterDebugAnnotations=!1,w.prototype.enableThreadTimeSampling=!1,w.prototype.threadTimeSubsamplingNs=i.Long?i.Long.fromBits(0,0,!0):0,w.prototype.filterDynamicEventNames=!1,w.create=function(e){return new w(e)},w.encode=function(e,t){if(t=t||a.create(),null!=e.disabledCategories&&e.disabledCategories.length)for(var r=0;r<e.disabledCategories.length;++r)t.uint32(10).string(e.disabledCategories[r]);if(null!=e.enabledCategories&&e.enabledCategories.length)for(r=0;r<e.enabledCategories.length;++r)t.uint32(18).string(e.enabledCategories[r]);if(null!=e.disabledTags&&e.disabledTags.length)for(r=0;r<e.disabledTags.length;++r)t.uint32(26).string(e.disabledTags[r]);if(null!=e.enabledTags&&e.enabledTags.length)for(r=0;r<e.enabledTags.length;++r)t.uint32(34).string(e.enabledTags[r]);return null!=e.disableIncrementalTimestamps&&Object.hasOwnProperty.call(e,\"disableIncrementalTimestamps\")&&t.uint32(40).bool(e.disableIncrementalTimestamps),null!=e.timestampUnitMultiplier&&Object.hasOwnProperty.call(e,\"timestampUnitMultiplier\")&&t.uint32(48).uint64(e.timestampUnitMultiplier),null!=e.filterDebugAnnotations&&Object.hasOwnProperty.call(e,\"filterDebugAnnotations\")&&t.uint32(56).bool(e.filterDebugAnnotations),null!=e.enableThreadTimeSampling&&Object.hasOwnProperty.call(e,\"enableThreadTimeSampling\")&&t.uint32(64).bool(e.enableThreadTimeSampling),null!=e.filterDynamicEventNames&&Object.hasOwnProperty.call(e,\"filterDynamicEventNames\")&&t.uint32(72).bool(e.filterDynamicEventNames),null!=e.threadTimeSubsamplingNs&&Object.hasOwnProperty.call(e,\"threadTimeSubsamplingNs\")&&t.uint32(80).uint64(e.threadTimeSubsamplingNs),t},w.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TrackEventConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.disabledCategories&&n.disabledCategories.length||(n.disabledCategories=[]),n.disabledCategories.push(e.string());break;case 2:n.enabledCategories&&n.enabledCategories.length||(n.enabledCategories=[]),n.enabledCategories.push(e.string());break;case 3:n.disabledTags&&n.disabledTags.length||(n.disabledTags=[]),n.disabledTags.push(e.string());break;case 4:n.enabledTags&&n.enabledTags.length||(n.enabledTags=[]),n.enabledTags.push(e.string());break;case 5:n.disableIncrementalTimestamps=e.bool();break;case 6:n.timestampUnitMultiplier=e.uint64();break;case 7:n.filterDebugAnnotations=e.bool();break;case 8:n.enableThreadTimeSampling=e.bool();break;case 10:n.threadTimeSubsamplingNs=e.uint64();break;case 9:n.filterDynamicEventNames=e.bool();break;default:e.skipType(7&a)}}return n},w.fromObject=function(e){if(e instanceof s.perfetto.protos.TrackEventConfig)return e;var t=new s.perfetto.protos.TrackEventConfig;if(e.disabledCategories){if(!Array.isArray(e.disabledCategories))throw TypeError(\".perfetto.protos.TrackEventConfig.disabledCategories: array expected\");t.disabledCategories=[];for(var r=0;r<e.disabledCategories.length;++r)t.disabledCategories[r]=String(e.disabledCategories[r])}if(e.enabledCategories){if(!Array.isArray(e.enabledCategories))throw TypeError(\".perfetto.protos.TrackEventConfig.enabledCategories: array expected\");t.enabledCategories=[];for(r=0;r<e.enabledCategories.length;++r)t.enabledCategories[r]=String(e.enabledCategories[r])}if(e.disabledTags){if(!Array.isArray(e.disabledTags))throw TypeError(\".perfetto.protos.TrackEventConfig.disabledTags: array expected\");t.disabledTags=[];for(r=0;r<e.disabledTags.length;++r)t.disabledTags[r]=String(e.disabledTags[r])}if(e.enabledTags){if(!Array.isArray(e.enabledTags))throw TypeError(\".perfetto.protos.TrackEventConfig.enabledTags: array expected\");t.enabledTags=[];for(r=0;r<e.enabledTags.length;++r)t.enabledTags[r]=String(e.enabledTags[r])}return null!=e.disableIncrementalTimestamps&&(t.disableIncrementalTimestamps=Boolean(e.disableIncrementalTimestamps)),null!=e.timestampUnitMultiplier&&(i.Long?(t.timestampUnitMultiplier=i.Long.fromValue(e.timestampUnitMultiplier)).unsigned=!0:\"string\"==typeof e.timestampUnitMultiplier?t.timestampUnitMultiplier=parseInt(e.timestampUnitMultiplier,10):\"number\"==typeof e.timestampUnitMultiplier?t.timestampUnitMultiplier=e.timestampUnitMultiplier:\"object\"==typeof e.timestampUnitMultiplier&&(t.timestampUnitMultiplier=new i.LongBits(e.timestampUnitMultiplier.low>>>0,e.timestampUnitMultiplier.high>>>0).toNumber(!0))),null!=e.filterDebugAnnotations&&(t.filterDebugAnnotations=Boolean(e.filterDebugAnnotations)),null!=e.enableThreadTimeSampling&&(t.enableThreadTimeSampling=Boolean(e.enableThreadTimeSampling)),null!=e.threadTimeSubsamplingNs&&(i.Long?(t.threadTimeSubsamplingNs=i.Long.fromValue(e.threadTimeSubsamplingNs)).unsigned=!0:\"string\"==typeof e.threadTimeSubsamplingNs?t.threadTimeSubsamplingNs=parseInt(e.threadTimeSubsamplingNs,10):\"number\"==typeof e.threadTimeSubsamplingNs?t.threadTimeSubsamplingNs=e.threadTimeSubsamplingNs:\"object\"==typeof e.threadTimeSubsamplingNs&&(t.threadTimeSubsamplingNs=new i.LongBits(e.threadTimeSubsamplingNs.low>>>0,e.threadTimeSubsamplingNs.high>>>0).toNumber(!0))),null!=e.filterDynamicEventNames&&(t.filterDynamicEventNames=Boolean(e.filterDynamicEventNames)),t},w.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.disabledCategories=[],n.enabledCategories=[],n.disabledTags=[],n.enabledTags=[]),t.defaults&&(n.disableIncrementalTimestamps=!1,i.Long?(r=new i.Long(0,0,!0),n.timestampUnitMultiplier=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.timestampUnitMultiplier=t.longs===String?\"0\":0,n.filterDebugAnnotations=!1,n.enableThreadTimeSampling=!1,n.filterDynamicEventNames=!1,i.Long?(r=new i.Long(0,0,!0),n.threadTimeSubsamplingNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.threadTimeSubsamplingNs=t.longs===String?\"0\":0),e.disabledCategories&&e.disabledCategories.length){n.disabledCategories=[];for(var a=0;a<e.disabledCategories.length;++a)n.disabledCategories[a]=e.disabledCategories[a]}if(e.enabledCategories&&e.enabledCategories.length){n.enabledCategories=[];for(a=0;a<e.enabledCategories.length;++a)n.enabledCategories[a]=e.enabledCategories[a]}if(e.disabledTags&&e.disabledTags.length){n.disabledTags=[];for(a=0;a<e.disabledTags.length;++a)n.disabledTags[a]=e.disabledTags[a]}if(e.enabledTags&&e.enabledTags.length){n.enabledTags=[];for(a=0;a<e.enabledTags.length;++a)n.enabledTags[a]=e.enabledTags[a]}return null!=e.disableIncrementalTimestamps&&e.hasOwnProperty(\"disableIncrementalTimestamps\")&&(n.disableIncrementalTimestamps=e.disableIncrementalTimestamps),null!=e.timestampUnitMultiplier&&e.hasOwnProperty(\"timestampUnitMultiplier\")&&(\"number\"==typeof e.timestampUnitMultiplier?n.timestampUnitMultiplier=t.longs===String?String(e.timestampUnitMultiplier):e.timestampUnitMultiplier:n.timestampUnitMultiplier=t.longs===String?i.Long.prototype.toString.call(e.timestampUnitMultiplier):t.longs===Number?new i.LongBits(e.timestampUnitMultiplier.low>>>0,e.timestampUnitMultiplier.high>>>0).toNumber(!0):e.timestampUnitMultiplier),null!=e.filterDebugAnnotations&&e.hasOwnProperty(\"filterDebugAnnotations\")&&(n.filterDebugAnnotations=e.filterDebugAnnotations),null!=e.enableThreadTimeSampling&&e.hasOwnProperty(\"enableThreadTimeSampling\")&&(n.enableThreadTimeSampling=e.enableThreadTimeSampling),null!=e.filterDynamicEventNames&&e.hasOwnProperty(\"filterDynamicEventNames\")&&(n.filterDynamicEventNames=e.filterDynamicEventNames),null!=e.threadTimeSubsamplingNs&&e.hasOwnProperty(\"threadTimeSubsamplingNs\")&&(\"number\"==typeof e.threadTimeSubsamplingNs?n.threadTimeSubsamplingNs=t.longs===String?String(e.threadTimeSubsamplingNs):e.threadTimeSubsamplingNs:n.threadTimeSubsamplingNs=t.longs===String?i.Long.prototype.toString.call(e.threadTimeSubsamplingNs):t.longs===Number?new i.LongBits(e.threadTimeSubsamplingNs.low>>>0,e.threadTimeSubsamplingNs.high>>>0).toNumber(!0):e.threadTimeSubsamplingNs),n},w.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},w.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TrackEventConfig\"},w),r.SystemInfoConfig=(Ft.create=function(e){return new Ft(e)},Ft.encode=function(e,t){return t=t||a.create()},Ft.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.SystemInfoConfig;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Ft.fromObject=function(e){return e instanceof s.perfetto.protos.SystemInfoConfig?e:new s.perfetto.protos.SystemInfoConfig},Ft.toObject=function(){return{}},Ft.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ft.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.SystemInfoConfig\"},Ft),r.ChromiumHistogramSamplesConfig=(Ut.prototype.histograms=i.emptyArray,Ut.prototype.filterHistogramNames=!1,Ut.create=function(e){return new Ut(e)},Ut.encode=function(e,t){if(t=t||a.create(),null!=e.histograms&&e.histograms.length)for(var r=0;r<e.histograms.length;++r)s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample.encode(e.histograms[r],t.uint32(10).fork()).ldelim();return null!=e.filterHistogramNames&&Object.hasOwnProperty.call(e,\"filterHistogramNames\")&&t.uint32(16).bool(e.filterHistogramNames),t},Ut.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ChromiumHistogramSamplesConfig;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.histograms&&n.histograms.length||(n.histograms=[]),n.histograms.push(s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample.decode(e,e.uint32()));break;case 2:n.filterHistogramNames=e.bool();break;default:e.skipType(7&a)}}return n},Ut.fromObject=function(e){if(e instanceof s.perfetto.protos.ChromiumHistogramSamplesConfig)return e;var t=new s.perfetto.protos.ChromiumHistogramSamplesConfig;if(e.histograms){if(!Array.isArray(e.histograms))throw TypeError(\".perfetto.protos.ChromiumHistogramSamplesConfig.histograms: array expected\");t.histograms=[];for(var r=0;r<e.histograms.length;++r){if(\"object\"!=typeof e.histograms[r])throw TypeError(\".perfetto.protos.ChromiumHistogramSamplesConfig.histograms: object expected\");t.histograms[r]=s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample.fromObject(e.histograms[r])}}return null!=e.filterHistogramNames&&(t.filterHistogramNames=Boolean(e.filterHistogramNames)),t},Ut.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.histograms=[]),t.defaults&&(r.filterHistogramNames=!1),e.histograms&&e.histograms.length){r.histograms=[];for(var n=0;n<e.histograms.length;++n)r.histograms[n]=s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample.toObject(e.histograms[n],t)}return null!=e.filterHistogramNames&&e.hasOwnProperty(\"filterHistogramNames\")&&(r.filterHistogramNames=e.filterHistogramNames),r},Ut.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ut.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChromiumHistogramSamplesConfig\"},Ut.HistogramSample=(Bt.prototype.histogramName=\"\",Bt.prototype.minValue=i.Long?i.Long.fromBits(0,0,!1):0,Bt.prototype.maxValue=i.Long?i.Long.fromBits(0,0,!1):0,Bt.create=function(e){return new Bt(e)},Bt.encode=function(e,t){return t=t||a.create(),null!=e.histogramName&&Object.hasOwnProperty.call(e,\"histogramName\")&&t.uint32(10).string(e.histogramName),null!=e.minValue&&Object.hasOwnProperty.call(e,\"minValue\")&&t.uint32(16).int64(e.minValue),null!=e.maxValue&&Object.hasOwnProperty.call(e,\"maxValue\")&&t.uint32(24).int64(e.maxValue),t},Bt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.histogramName=e.string();break;case 2:n.minValue=e.int64();break;case 3:n.maxValue=e.int64();break;default:e.skipType(7&a)}}return n},Bt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample?e:(t=new s.perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample,null!=e.histogramName&&(t.histogramName=String(e.histogramName)),null!=e.minValue&&(i.Long?(t.minValue=i.Long.fromValue(e.minValue)).unsigned=!1:\"string\"==typeof e.minValue?t.minValue=parseInt(e.minValue,10):\"number\"==typeof e.minValue?t.minValue=e.minValue:\"object\"==typeof e.minValue&&(t.minValue=new i.LongBits(e.minValue.low>>>0,e.minValue.high>>>0).toNumber())),null!=e.maxValue&&(i.Long?(t.maxValue=i.Long.fromValue(e.maxValue)).unsigned=!1:\"string\"==typeof e.maxValue?t.maxValue=parseInt(e.maxValue,10):\"number\"==typeof e.maxValue?t.maxValue=e.maxValue:\"object\"==typeof e.maxValue&&(t.maxValue=new i.LongBits(e.maxValue.low>>>0,e.maxValue.high>>>0).toNumber())),t)},Bt.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(n.histogramName=\"\",i.Long?(r=new i.Long(0,0,!1),n.minValue=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.minValue=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.maxValue=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.maxValue=t.longs===String?\"0\":0),null!=e.histogramName&&e.hasOwnProperty(\"histogramName\")&&(n.histogramName=e.histogramName),null!=e.minValue&&e.hasOwnProperty(\"minValue\")&&(\"number\"==typeof e.minValue?n.minValue=t.longs===String?String(e.minValue):e.minValue:n.minValue=t.longs===String?i.Long.prototype.toString.call(e.minValue):t.longs===Number?new i.LongBits(e.minValue.low>>>0,e.minValue.high>>>0).toNumber():e.minValue),null!=e.maxValue&&e.hasOwnProperty(\"maxValue\")&&(\"number\"==typeof e.maxValue?n.maxValue=t.longs===String?String(e.maxValue):e.maxValue:n.maxValue=t.longs===String?i.Long.prototype.toString.call(e.maxValue):t.longs===Number?new i.LongBits(e.maxValue.low>>>0,e.maxValue.high>>>0).toNumber():e.maxValue),n},Bt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Bt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ChromiumHistogramSamplesConfig.HistogramSample\"},Bt),Ut),r.IPCFrame=(k.prototype.requestId=i.Long?i.Long.fromBits(0,0,!0):0,k.prototype.msgBindService=null,k.prototype.msgBindServiceReply=null,k.prototype.msgInvokeMethod=null,k.prototype.msgInvokeMethodReply=null,k.prototype.msgRequestError=null,k.prototype.setPeerIdentity=null,k.prototype.dataForTesting=i.emptyArray,Object.defineProperty(k.prototype,\"msg\",{get:i.oneOfGetter(e=[\"msgBindService\",\"msgBindServiceReply\",\"msgInvokeMethod\",\"msgInvokeMethodReply\",\"msgRequestError\",\"setPeerIdentity\"]),set:i.oneOfSetter(e)}),k.create=function(e){return new k(e)},k.encode=function(e,t){if(t=t||a.create(),null!=e.dataForTesting&&e.dataForTesting.length)for(var r=0;r<e.dataForTesting.length;++r)t.uint32(10).bytes(e.dataForTesting[r]);return null!=e.requestId&&Object.hasOwnProperty.call(e,\"requestId\")&&t.uint32(16).uint64(e.requestId),null!=e.msgBindService&&Object.hasOwnProperty.call(e,\"msgBindService\")&&s.perfetto.protos.IPCFrame.BindService.encode(e.msgBindService,t.uint32(26).fork()).ldelim(),null!=e.msgBindServiceReply&&Object.hasOwnProperty.call(e,\"msgBindServiceReply\")&&s.perfetto.protos.IPCFrame.BindServiceReply.encode(e.msgBindServiceReply,t.uint32(34).fork()).ldelim(),null!=e.msgInvokeMethod&&Object.hasOwnProperty.call(e,\"msgInvokeMethod\")&&s.perfetto.protos.IPCFrame.InvokeMethod.encode(e.msgInvokeMethod,t.uint32(42).fork()).ldelim(),null!=e.msgInvokeMethodReply&&Object.hasOwnProperty.call(e,\"msgInvokeMethodReply\")&&s.perfetto.protos.IPCFrame.InvokeMethodReply.encode(e.msgInvokeMethodReply,t.uint32(50).fork()).ldelim(),null!=e.msgRequestError&&Object.hasOwnProperty.call(e,\"msgRequestError\")&&s.perfetto.protos.IPCFrame.RequestError.encode(e.msgRequestError,t.uint32(58).fork()).ldelim(),null!=e.setPeerIdentity&&Object.hasOwnProperty.call(e,\"setPeerIdentity\")&&s.perfetto.protos.IPCFrame.SetPeerIdentity.encode(e.setPeerIdentity,t.uint32(66).fork()).ldelim(),t},k.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame;e.pos<r;){var a=e.uint32();switch(a>>>3){case 2:n.requestId=e.uint64();break;case 3:n.msgBindService=s.perfetto.protos.IPCFrame.BindService.decode(e,e.uint32());break;case 4:n.msgBindServiceReply=s.perfetto.protos.IPCFrame.BindServiceReply.decode(e,e.uint32());break;case 5:n.msgInvokeMethod=s.perfetto.protos.IPCFrame.InvokeMethod.decode(e,e.uint32());break;case 6:n.msgInvokeMethodReply=s.perfetto.protos.IPCFrame.InvokeMethodReply.decode(e,e.uint32());break;case 7:n.msgRequestError=s.perfetto.protos.IPCFrame.RequestError.decode(e,e.uint32());break;case 8:n.setPeerIdentity=s.perfetto.protos.IPCFrame.SetPeerIdentity.decode(e,e.uint32());break;case 1:n.dataForTesting&&n.dataForTesting.length||(n.dataForTesting=[]),n.dataForTesting.push(e.bytes());break;default:e.skipType(7&a)}}return n},k.fromObject=function(e){if(e instanceof s.perfetto.protos.IPCFrame)return e;var t=new s.perfetto.protos.IPCFrame;if(null!=e.requestId&&(i.Long?(t.requestId=i.Long.fromValue(e.requestId)).unsigned=!0:\"string\"==typeof e.requestId?t.requestId=parseInt(e.requestId,10):\"number\"==typeof e.requestId?t.requestId=e.requestId:\"object\"==typeof e.requestId&&(t.requestId=new i.LongBits(e.requestId.low>>>0,e.requestId.high>>>0).toNumber(!0))),null!=e.msgBindService){if(\"object\"!=typeof e.msgBindService)throw TypeError(\".perfetto.protos.IPCFrame.msgBindService: object expected\");t.msgBindService=s.perfetto.protos.IPCFrame.BindService.fromObject(e.msgBindService)}if(null!=e.msgBindServiceReply){if(\"object\"!=typeof e.msgBindServiceReply)throw TypeError(\".perfetto.protos.IPCFrame.msgBindServiceReply: object expected\");t.msgBindServiceReply=s.perfetto.protos.IPCFrame.BindServiceReply.fromObject(e.msgBindServiceReply)}if(null!=e.msgInvokeMethod){if(\"object\"!=typeof e.msgInvokeMethod)throw TypeError(\".perfetto.protos.IPCFrame.msgInvokeMethod: object expected\");t.msgInvokeMethod=s.perfetto.protos.IPCFrame.InvokeMethod.fromObject(e.msgInvokeMethod)}if(null!=e.msgInvokeMethodReply){if(\"object\"!=typeof e.msgInvokeMethodReply)throw TypeError(\".perfetto.protos.IPCFrame.msgInvokeMethodReply: object expected\");t.msgInvokeMethodReply=s.perfetto.protos.IPCFrame.InvokeMethodReply.fromObject(e.msgInvokeMethodReply)}if(null!=e.msgRequestError){if(\"object\"!=typeof e.msgRequestError)throw TypeError(\".perfetto.protos.IPCFrame.msgRequestError: object expected\");t.msgRequestError=s.perfetto.protos.IPCFrame.RequestError.fromObject(e.msgRequestError)}if(null!=e.setPeerIdentity){if(\"object\"!=typeof e.setPeerIdentity)throw TypeError(\".perfetto.protos.IPCFrame.setPeerIdentity: object expected\");t.setPeerIdentity=s.perfetto.protos.IPCFrame.SetPeerIdentity.fromObject(e.setPeerIdentity)}if(e.dataForTesting){if(!Array.isArray(e.dataForTesting))throw TypeError(\".perfetto.protos.IPCFrame.dataForTesting: array expected\");t.dataForTesting=[];for(var r=0;r<e.dataForTesting.length;++r)\"string\"==typeof e.dataForTesting[r]?i.base64.decode(e.dataForTesting[r],t.dataForTesting[r]=i.newBuffer(i.base64.length(e.dataForTesting[r])),0):0<=e.dataForTesting[r].length&&(t.dataForTesting[r]=e.dataForTesting[r])}return t},k.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.dataForTesting=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.requestId=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.requestId=t.longs===String?\"0\":0),e.dataForTesting&&e.dataForTesting.length){n.dataForTesting=[];for(var a=0;a<e.dataForTesting.length;++a)n.dataForTesting[a]=t.bytes===String?i.base64.encode(e.dataForTesting[a],0,e.dataForTesting[a].length):t.bytes===Array?Array.prototype.slice.call(e.dataForTesting[a]):e.dataForTesting[a]}return null!=e.requestId&&e.hasOwnProperty(\"requestId\")&&(\"number\"==typeof e.requestId?n.requestId=t.longs===String?String(e.requestId):e.requestId:n.requestId=t.longs===String?i.Long.prototype.toString.call(e.requestId):t.longs===Number?new i.LongBits(e.requestId.low>>>0,e.requestId.high>>>0).toNumber(!0):e.requestId),null!=e.msgBindService&&e.hasOwnProperty(\"msgBindService\")&&(n.msgBindService=s.perfetto.protos.IPCFrame.BindService.toObject(e.msgBindService,t),t.oneofs)&&(n.msg=\"msgBindService\"),null!=e.msgBindServiceReply&&e.hasOwnProperty(\"msgBindServiceReply\")&&(n.msgBindServiceReply=s.perfetto.protos.IPCFrame.BindServiceReply.toObject(e.msgBindServiceReply,t),t.oneofs)&&(n.msg=\"msgBindServiceReply\"),null!=e.msgInvokeMethod&&e.hasOwnProperty(\"msgInvokeMethod\")&&(n.msgInvokeMethod=s.perfetto.protos.IPCFrame.InvokeMethod.toObject(e.msgInvokeMethod,t),t.oneofs)&&(n.msg=\"msgInvokeMethod\"),null!=e.msgInvokeMethodReply&&e.hasOwnProperty(\"msgInvokeMethodReply\")&&(n.msgInvokeMethodReply=s.perfetto.protos.IPCFrame.InvokeMethodReply.toObject(e.msgInvokeMethodReply,t),t.oneofs)&&(n.msg=\"msgInvokeMethodReply\"),null!=e.msgRequestError&&e.hasOwnProperty(\"msgRequestError\")&&(n.msgRequestError=s.perfetto.protos.IPCFrame.RequestError.toObject(e.msgRequestError,t),t.oneofs)&&(n.msg=\"msgRequestError\"),null!=e.setPeerIdentity&&e.hasOwnProperty(\"setPeerIdentity\")&&(n.setPeerIdentity=s.perfetto.protos.IPCFrame.SetPeerIdentity.toObject(e.setPeerIdentity,t),t.oneofs)&&(n.msg=\"setPeerIdentity\"),n},k.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},k.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame\"},k.BindService=(jt.prototype.serviceName=\"\",jt.create=function(e){return new jt(e)},jt.encode=function(e,t){return t=t||a.create(),null!=e.serviceName&&Object.hasOwnProperty.call(e,\"serviceName\")&&t.uint32(10).string(e.serviceName),t},jt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.BindService;e.pos<r;){var a=e.uint32();a>>>3==1?n.serviceName=e.string():e.skipType(7&a)}return n},jt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.BindService?e:(t=new s.perfetto.protos.IPCFrame.BindService,null!=e.serviceName&&(t.serviceName=String(e.serviceName)),t)},jt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.serviceName=\"\"),null!=e.serviceName&&e.hasOwnProperty(\"serviceName\")&&(r.serviceName=e.serviceName),r},jt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},jt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.BindService\"},jt),k.BindServiceReply=(Ht.prototype.success=!1,Ht.prototype.serviceId=0,Ht.prototype.methods=i.emptyArray,Ht.create=function(e){return new Ht(e)},Ht.encode=function(e,t){if(t=t||a.create(),null!=e.success&&Object.hasOwnProperty.call(e,\"success\")&&t.uint32(8).bool(e.success),null!=e.serviceId&&Object.hasOwnProperty.call(e,\"serviceId\")&&t.uint32(16).uint32(e.serviceId),null!=e.methods&&e.methods.length)for(var r=0;r<e.methods.length;++r)s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo.encode(e.methods[r],t.uint32(26).fork()).ldelim();return t},Ht.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.BindServiceReply;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.success=e.bool();break;case 2:n.serviceId=e.uint32();break;case 3:n.methods&&n.methods.length||(n.methods=[]),n.methods.push(s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Ht.fromObject=function(e){if(e instanceof s.perfetto.protos.IPCFrame.BindServiceReply)return e;var t=new s.perfetto.protos.IPCFrame.BindServiceReply;if(null!=e.success&&(t.success=Boolean(e.success)),null!=e.serviceId&&(t.serviceId=e.serviceId>>>0),e.methods){if(!Array.isArray(e.methods))throw TypeError(\".perfetto.protos.IPCFrame.BindServiceReply.methods: array expected\");t.methods=[];for(var r=0;r<e.methods.length;++r){if(\"object\"!=typeof e.methods[r])throw TypeError(\".perfetto.protos.IPCFrame.BindServiceReply.methods: object expected\");t.methods[r]=s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo.fromObject(e.methods[r])}}return t},Ht.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.methods=[]),t.defaults&&(r.success=!1,r.serviceId=0),null!=e.success&&e.hasOwnProperty(\"success\")&&(r.success=e.success),null!=e.serviceId&&e.hasOwnProperty(\"serviceId\")&&(r.serviceId=e.serviceId),e.methods&&e.methods.length){r.methods=[];for(var n=0;n<e.methods.length;++n)r.methods[n]=s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo.toObject(e.methods[n],t)}return r},Ht.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ht.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.BindServiceReply\"},Ht.MethodInfo=(Gt.prototype.id=0,Gt.prototype.name=\"\",Gt.create=function(e){return new Gt(e)},Gt.encode=function(e,t){return t=t||a.create(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(8).uint32(e.id),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(18).string(e.name),t},Gt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.id=e.uint32();break;case 2:n.name=e.string();break;default:e.skipType(7&a)}}return n},Gt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo?e:(t=new s.perfetto.protos.IPCFrame.BindServiceReply.MethodInfo,null!=e.id&&(t.id=e.id>>>0),null!=e.name&&(t.name=String(e.name)),t)},Gt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.id=0,r.name=\"\"),null!=e.id&&e.hasOwnProperty(\"id\")&&(r.id=e.id),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),r},Gt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Gt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.BindServiceReply.MethodInfo\"},Gt),Ht),k.InvokeMethod=(Vt.prototype.serviceId=0,Vt.prototype.methodId=0,Vt.prototype.argsProto=i.newBuffer([]),Vt.prototype.dropReply=!1,Vt.create=function(e){return new Vt(e)},Vt.encode=function(e,t){return t=t||a.create(),null!=e.serviceId&&Object.hasOwnProperty.call(e,\"serviceId\")&&t.uint32(8).uint32(e.serviceId),null!=e.methodId&&Object.hasOwnProperty.call(e,\"methodId\")&&t.uint32(16).uint32(e.methodId),null!=e.argsProto&&Object.hasOwnProperty.call(e,\"argsProto\")&&t.uint32(26).bytes(e.argsProto),null!=e.dropReply&&Object.hasOwnProperty.call(e,\"dropReply\")&&t.uint32(32).bool(e.dropReply),t},Vt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.InvokeMethod;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.serviceId=e.uint32();break;case 2:n.methodId=e.uint32();break;case 3:n.argsProto=e.bytes();break;case 4:n.dropReply=e.bool();break;default:e.skipType(7&a)}}return n},Vt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.InvokeMethod?e:(t=new s.perfetto.protos.IPCFrame.InvokeMethod,null!=e.serviceId&&(t.serviceId=e.serviceId>>>0),null!=e.methodId&&(t.methodId=e.methodId>>>0),null!=e.argsProto&&(\"string\"==typeof e.argsProto?i.base64.decode(e.argsProto,t.argsProto=i.newBuffer(i.base64.length(e.argsProto)),0):0<=e.argsProto.length&&(t.argsProto=e.argsProto)),null!=e.dropReply&&(t.dropReply=Boolean(e.dropReply)),t)},Vt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.serviceId=0,r.methodId=0,t.bytes===String?r.argsProto=\"\":(r.argsProto=[],t.bytes!==Array&&(r.argsProto=i.newBuffer(r.argsProto))),r.dropReply=!1),null!=e.serviceId&&e.hasOwnProperty(\"serviceId\")&&(r.serviceId=e.serviceId),null!=e.methodId&&e.hasOwnProperty(\"methodId\")&&(r.methodId=e.methodId),null!=e.argsProto&&e.hasOwnProperty(\"argsProto\")&&(r.argsProto=t.bytes===String?i.base64.encode(e.argsProto,0,e.argsProto.length):t.bytes===Array?Array.prototype.slice.call(e.argsProto):e.argsProto),null!=e.dropReply&&e.hasOwnProperty(\"dropReply\")&&(r.dropReply=e.dropReply),r},Vt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Vt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.InvokeMethod\"},Vt),k.InvokeMethodReply=(qt.prototype.success=!1,qt.prototype.hasMore=!1,qt.prototype.replyProto=i.newBuffer([]),qt.create=function(e){return new qt(e)},qt.encode=function(e,t){return t=t||a.create(),null!=e.success&&Object.hasOwnProperty.call(e,\"success\")&&t.uint32(8).bool(e.success),null!=e.hasMore&&Object.hasOwnProperty.call(e,\"hasMore\")&&t.uint32(16).bool(e.hasMore),null!=e.replyProto&&Object.hasOwnProperty.call(e,\"replyProto\")&&t.uint32(26).bytes(e.replyProto),t},qt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.InvokeMethodReply;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.success=e.bool();break;case 2:n.hasMore=e.bool();break;case 3:n.replyProto=e.bytes();break;default:e.skipType(7&a)}}return n},qt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.InvokeMethodReply?e:(t=new s.perfetto.protos.IPCFrame.InvokeMethodReply,null!=e.success&&(t.success=Boolean(e.success)),null!=e.hasMore&&(t.hasMore=Boolean(e.hasMore)),null!=e.replyProto&&(\"string\"==typeof e.replyProto?i.base64.decode(e.replyProto,t.replyProto=i.newBuffer(i.base64.length(e.replyProto)),0):0<=e.replyProto.length&&(t.replyProto=e.replyProto)),t)},qt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.success=!1,r.hasMore=!1,t.bytes===String?r.replyProto=\"\":(r.replyProto=[],t.bytes!==Array&&(r.replyProto=i.newBuffer(r.replyProto)))),null!=e.success&&e.hasOwnProperty(\"success\")&&(r.success=e.success),null!=e.hasMore&&e.hasOwnProperty(\"hasMore\")&&(r.hasMore=e.hasMore),null!=e.replyProto&&e.hasOwnProperty(\"replyProto\")&&(r.replyProto=t.bytes===String?i.base64.encode(e.replyProto,0,e.replyProto.length):t.bytes===Array?Array.prototype.slice.call(e.replyProto):e.replyProto),r},qt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},qt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.InvokeMethodReply\"},qt),k.RequestError=(zt.prototype.error=\"\",zt.create=function(e){return new zt(e)},zt.encode=function(e,t){return t=t||a.create(),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(10).string(e.error),t},zt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.RequestError;e.pos<r;){var a=e.uint32();a>>>3==1?n.error=e.string():e.skipType(7&a)}return n},zt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.RequestError?e:(t=new s.perfetto.protos.IPCFrame.RequestError,null!=e.error&&(t.error=String(e.error)),t)},zt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},zt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},zt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.RequestError\"},zt),k.SetPeerIdentity=(Wt.prototype.pid=0,Wt.prototype.uid=0,Wt.prototype.machineIdHint=\"\",Wt.prototype.machineName=\"\",Wt.create=function(e){return new Wt(e)},Wt.encode=function(e,t){return t=t||a.create(),null!=e.pid&&Object.hasOwnProperty.call(e,\"pid\")&&t.uint32(8).int32(e.pid),null!=e.uid&&Object.hasOwnProperty.call(e,\"uid\")&&t.uint32(16).int32(e.uid),null!=e.machineIdHint&&Object.hasOwnProperty.call(e,\"machineIdHint\")&&t.uint32(26).string(e.machineIdHint),null!=e.machineName&&Object.hasOwnProperty.call(e,\"machineName\")&&t.uint32(34).string(e.machineName),t},Wt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.IPCFrame.SetPeerIdentity;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.pid=e.int32();break;case 2:n.uid=e.int32();break;case 3:n.machineIdHint=e.string();break;case 4:n.machineName=e.string();break;default:e.skipType(7&a)}}return n},Wt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.IPCFrame.SetPeerIdentity?e:(t=new s.perfetto.protos.IPCFrame.SetPeerIdentity,null!=e.pid&&(t.pid=0|e.pid),null!=e.uid&&(t.uid=0|e.uid),null!=e.machineIdHint&&(t.machineIdHint=String(e.machineIdHint)),null!=e.machineName&&(t.machineName=String(e.machineName)),t)},Wt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.pid=0,r.uid=0,r.machineIdHint=\"\",r.machineName=\"\"),null!=e.pid&&e.hasOwnProperty(\"pid\")&&(r.pid=e.pid),null!=e.uid&&e.hasOwnProperty(\"uid\")&&(r.uid=e.uid),null!=e.machineIdHint&&e.hasOwnProperty(\"machineIdHint\")&&(r.machineIdHint=e.machineIdHint),null!=e.machineName&&e.hasOwnProperty(\"machineName\")&&(r.machineName=e.machineName),r},Wt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Wt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.IPCFrame.SetPeerIdentity\"},Wt),k),r.PerfettoMetatrace=(I.prototype.eventId=null,I.prototype.counterId=null,I.prototype.eventName=null,I.prototype.eventNameIid=null,I.prototype.counterName=null,I.prototype.eventDurationNs=i.Long?i.Long.fromBits(0,0,!0):0,I.prototype.counterValue=0,I.prototype.threadId=0,I.prototype.hasOverruns=!1,I.prototype.args=i.emptyArray,I.prototype.internedStrings=i.emptyArray,Object.defineProperty(I.prototype,\"recordType\",{get:i.oneOfGetter(t=[\"eventId\",\"counterId\",\"eventName\",\"eventNameIid\",\"counterName\"]),set:i.oneOfSetter(t)}),I.create=function(e){return new I(e)},I.encode=function(e,t){if(t=t||a.create(),null!=e.eventId&&Object.hasOwnProperty.call(e,\"eventId\")&&t.uint32(8).uint32(e.eventId),null!=e.counterId&&Object.hasOwnProperty.call(e,\"counterId\")&&t.uint32(16).uint32(e.counterId),null!=e.eventDurationNs&&Object.hasOwnProperty.call(e,\"eventDurationNs\")&&t.uint32(24).uint64(e.eventDurationNs),null!=e.counterValue&&Object.hasOwnProperty.call(e,\"counterValue\")&&t.uint32(32).int32(e.counterValue),null!=e.threadId&&Object.hasOwnProperty.call(e,\"threadId\")&&t.uint32(40).uint32(e.threadId),null!=e.hasOverruns&&Object.hasOwnProperty.call(e,\"hasOverruns\")&&t.uint32(48).bool(e.hasOverruns),null!=e.args&&e.args.length)for(var r=0;r<e.args.length;++r)s.perfetto.protos.PerfettoMetatrace.Arg.encode(e.args[r],t.uint32(58).fork()).ldelim();if(null!=e.eventName&&Object.hasOwnProperty.call(e,\"eventName\")&&t.uint32(66).string(e.eventName),null!=e.counterName&&Object.hasOwnProperty.call(e,\"counterName\")&&t.uint32(74).string(e.counterName),null!=e.internedStrings&&e.internedStrings.length)for(r=0;r<e.internedStrings.length;++r)s.perfetto.protos.PerfettoMetatrace.InternedString.encode(e.internedStrings[r],t.uint32(82).fork()).ldelim();return null!=e.eventNameIid&&Object.hasOwnProperty.call(e,\"eventNameIid\")&&t.uint32(88).uint64(e.eventNameIid),t},I.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoMetatrace;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.eventId=e.uint32();break;case 2:n.counterId=e.uint32();break;case 8:n.eventName=e.string();break;case 11:n.eventNameIid=e.uint64();break;case 9:n.counterName=e.string();break;case 3:n.eventDurationNs=e.uint64();break;case 4:n.counterValue=e.int32();break;case 5:n.threadId=e.uint32();break;case 6:n.hasOverruns=e.bool();break;case 7:n.args&&n.args.length||(n.args=[]),n.args.push(s.perfetto.protos.PerfettoMetatrace.Arg.decode(e,e.uint32()));break;case 10:n.internedStrings&&n.internedStrings.length||(n.internedStrings=[]),n.internedStrings.push(s.perfetto.protos.PerfettoMetatrace.InternedString.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},I.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoMetatrace)return e;var t=new s.perfetto.protos.PerfettoMetatrace;if(null!=e.eventId&&(t.eventId=e.eventId>>>0),null!=e.counterId&&(t.counterId=e.counterId>>>0),null!=e.eventName&&(t.eventName=String(e.eventName)),null!=e.eventNameIid&&(i.Long?(t.eventNameIid=i.Long.fromValue(e.eventNameIid)).unsigned=!0:\"string\"==typeof e.eventNameIid?t.eventNameIid=parseInt(e.eventNameIid,10):\"number\"==typeof e.eventNameIid?t.eventNameIid=e.eventNameIid:\"object\"==typeof e.eventNameIid&&(t.eventNameIid=new i.LongBits(e.eventNameIid.low>>>0,e.eventNameIid.high>>>0).toNumber(!0))),null!=e.counterName&&(t.counterName=String(e.counterName)),null!=e.eventDurationNs&&(i.Long?(t.eventDurationNs=i.Long.fromValue(e.eventDurationNs)).unsigned=!0:\"string\"==typeof e.eventDurationNs?t.eventDurationNs=parseInt(e.eventDurationNs,10):\"number\"==typeof e.eventDurationNs?t.eventDurationNs=e.eventDurationNs:\"object\"==typeof e.eventDurationNs&&(t.eventDurationNs=new i.LongBits(e.eventDurationNs.low>>>0,e.eventDurationNs.high>>>0).toNumber(!0))),null!=e.counterValue&&(t.counterValue=0|e.counterValue),null!=e.threadId&&(t.threadId=e.threadId>>>0),null!=e.hasOverruns&&(t.hasOverruns=Boolean(e.hasOverruns)),e.args){if(!Array.isArray(e.args))throw TypeError(\".perfetto.protos.PerfettoMetatrace.args: array expected\");t.args=[];for(var r=0;r<e.args.length;++r){if(\"object\"!=typeof e.args[r])throw TypeError(\".perfetto.protos.PerfettoMetatrace.args: object expected\");t.args[r]=s.perfetto.protos.PerfettoMetatrace.Arg.fromObject(e.args[r])}}if(e.internedStrings){if(!Array.isArray(e.internedStrings))throw TypeError(\".perfetto.protos.PerfettoMetatrace.internedStrings: array expected\");t.internedStrings=[];for(r=0;r<e.internedStrings.length;++r){if(\"object\"!=typeof e.internedStrings[r])throw TypeError(\".perfetto.protos.PerfettoMetatrace.internedStrings: object expected\");t.internedStrings[r]=s.perfetto.protos.PerfettoMetatrace.InternedString.fromObject(e.internedStrings[r])}}return t},I.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.args=[],n.internedStrings=[]),t.defaults&&(i.Long?(r=new i.Long(0,0,!0),n.eventDurationNs=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.eventDurationNs=t.longs===String?\"0\":0,n.counterValue=0,n.threadId=0,n.hasOverruns=!1),null!=e.eventId&&e.hasOwnProperty(\"eventId\")&&(n.eventId=e.eventId,t.oneofs)&&(n.recordType=\"eventId\"),null!=e.counterId&&e.hasOwnProperty(\"counterId\")&&(n.counterId=e.counterId,t.oneofs)&&(n.recordType=\"counterId\"),null!=e.eventDurationNs&&e.hasOwnProperty(\"eventDurationNs\")&&(\"number\"==typeof e.eventDurationNs?n.eventDurationNs=t.longs===String?String(e.eventDurationNs):e.eventDurationNs:n.eventDurationNs=t.longs===String?i.Long.prototype.toString.call(e.eventDurationNs):t.longs===Number?new i.LongBits(e.eventDurationNs.low>>>0,e.eventDurationNs.high>>>0).toNumber(!0):e.eventDurationNs),null!=e.counterValue&&e.hasOwnProperty(\"counterValue\")&&(n.counterValue=e.counterValue),null!=e.threadId&&e.hasOwnProperty(\"threadId\")&&(n.threadId=e.threadId),null!=e.hasOverruns&&e.hasOwnProperty(\"hasOverruns\")&&(n.hasOverruns=e.hasOverruns),e.args&&e.args.length){n.args=[];for(var a=0;a<e.args.length;++a)n.args[a]=s.perfetto.protos.PerfettoMetatrace.Arg.toObject(e.args[a],t)}if(null!=e.eventName&&e.hasOwnProperty(\"eventName\")&&(n.eventName=e.eventName,t.oneofs)&&(n.recordType=\"eventName\"),null!=e.counterName&&e.hasOwnProperty(\"counterName\")&&(n.counterName=e.counterName,t.oneofs)&&(n.recordType=\"counterName\"),e.internedStrings&&e.internedStrings.length){n.internedStrings=[];for(a=0;a<e.internedStrings.length;++a)n.internedStrings[a]=s.perfetto.protos.PerfettoMetatrace.InternedString.toObject(e.internedStrings[a],t)}return null!=e.eventNameIid&&e.hasOwnProperty(\"eventNameIid\")&&(\"number\"==typeof e.eventNameIid?n.eventNameIid=t.longs===String?String(e.eventNameIid):e.eventNameIid:n.eventNameIid=t.longs===String?i.Long.prototype.toString.call(e.eventNameIid):t.longs===Number?new i.LongBits(e.eventNameIid.low>>>0,e.eventNameIid.high>>>0).toNumber(!0):e.eventNameIid,t.oneofs)&&(n.recordType=\"eventNameIid\"),n},I.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},I.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoMetatrace\"},I.Arg=($t.prototype.key=null,$t.prototype.keyIid=null,$t.prototype.value=null,$t.prototype.valueIid=null,Object.defineProperty($t.prototype,\"keyOrInternedKey\",{get:i.oneOfGetter(t=[\"key\",\"keyIid\"]),set:i.oneOfSetter(t)}),Object.defineProperty($t.prototype,\"valueOrInternedValue\",{get:i.oneOfGetter(t=[\"value\",\"valueIid\"]),set:i.oneOfSetter(t)}),$t.create=function(e){return new $t(e)},$t.encode=function(e,t){return t=t||a.create(),null!=e.key&&Object.hasOwnProperty.call(e,\"key\")&&t.uint32(10).string(e.key),null!=e.value&&Object.hasOwnProperty.call(e,\"value\")&&t.uint32(18).string(e.value),null!=e.keyIid&&Object.hasOwnProperty.call(e,\"keyIid\")&&t.uint32(24).uint64(e.keyIid),null!=e.valueIid&&Object.hasOwnProperty.call(e,\"valueIid\")&&t.uint32(32).uint64(e.valueIid),t},$t.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoMetatrace.Arg;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.key=e.string();break;case 3:n.keyIid=e.uint64();break;case 2:n.value=e.string();break;case 4:n.valueIid=e.uint64();break;default:e.skipType(7&a)}}return n},$t.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfettoMetatrace.Arg?e:(t=new s.perfetto.protos.PerfettoMetatrace.Arg,null!=e.key&&(t.key=String(e.key)),null!=e.keyIid&&(i.Long?(t.keyIid=i.Long.fromValue(e.keyIid)).unsigned=!0:\"string\"==typeof e.keyIid?t.keyIid=parseInt(e.keyIid,10):\"number\"==typeof e.keyIid?t.keyIid=e.keyIid:\"object\"==typeof e.keyIid&&(t.keyIid=new i.LongBits(e.keyIid.low>>>0,e.keyIid.high>>>0).toNumber(!0))),null!=e.value&&(t.value=String(e.value)),null!=e.valueIid&&(i.Long?(t.valueIid=i.Long.fromValue(e.valueIid)).unsigned=!0:\"string\"==typeof e.valueIid?t.valueIid=parseInt(e.valueIid,10):\"number\"==typeof e.valueIid?t.valueIid=e.valueIid:\"object\"==typeof e.valueIid&&(t.valueIid=new i.LongBits(e.valueIid.low>>>0,e.valueIid.high>>>0).toNumber(!0))),t)},$t.toObject=function(e,t){t=t||{};var r={};return null!=e.key&&e.hasOwnProperty(\"key\")&&(r.key=e.key,t.oneofs)&&(r.keyOrInternedKey=\"key\"),null!=e.value&&e.hasOwnProperty(\"value\")&&(r.value=e.value,t.oneofs)&&(r.valueOrInternedValue=\"value\"),null!=e.keyIid&&e.hasOwnProperty(\"keyIid\")&&(\"number\"==typeof e.keyIid?r.keyIid=t.longs===String?String(e.keyIid):e.keyIid:r.keyIid=t.longs===String?i.Long.prototype.toString.call(e.keyIid):t.longs===Number?new i.LongBits(e.keyIid.low>>>0,e.keyIid.high>>>0).toNumber(!0):e.keyIid,t.oneofs)&&(r.keyOrInternedKey=\"keyIid\"),null!=e.valueIid&&e.hasOwnProperty(\"valueIid\")&&(\"number\"==typeof e.valueIid?r.valueIid=t.longs===String?String(e.valueIid):e.valueIid:r.valueIid=t.longs===String?i.Long.prototype.toString.call(e.valueIid):t.longs===Number?new i.LongBits(e.valueIid.low>>>0,e.valueIid.high>>>0).toNumber(!0):e.valueIid,t.oneofs)&&(r.valueOrInternedValue=\"valueIid\"),r},$t.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},$t.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoMetatrace.Arg\"},$t),I.InternedString=(Kt.prototype.iid=i.Long?i.Long.fromBits(0,0,!0):0,Kt.prototype.value=\"\",Kt.create=function(e){return new Kt(e)},Kt.encode=function(e,t){return t=t||a.create(),null!=e.iid&&Object.hasOwnProperty.call(e,\"iid\")&&t.uint32(8).uint64(e.iid),null!=e.value&&Object.hasOwnProperty.call(e,\"value\")&&t.uint32(18).string(e.value),t},Kt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoMetatrace.InternedString;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.iid=e.uint64();break;case 2:n.value=e.string();break;default:e.skipType(7&a)}}return n},Kt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfettoMetatrace.InternedString?e:(t=new s.perfetto.protos.PerfettoMetatrace.InternedString,null!=e.iid&&(i.Long?(t.iid=i.Long.fromValue(e.iid)).unsigned=!0:\"string\"==typeof e.iid?t.iid=parseInt(e.iid,10):\"number\"==typeof e.iid?t.iid=e.iid:\"object\"==typeof e.iid&&(t.iid=new i.LongBits(e.iid.low>>>0,e.iid.high>>>0).toNumber(!0))),null!=e.value&&(t.value=String(e.value)),t)},Kt.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!0),n.iid=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.iid=t.longs===String?\"0\":0,n.value=\"\"),null!=e.iid&&e.hasOwnProperty(\"iid\")&&(\"number\"==typeof e.iid?n.iid=t.longs===String?String(e.iid):e.iid:n.iid=t.longs===String?i.Long.prototype.toString.call(e.iid):t.longs===Number?new i.LongBits(e.iid.low>>>0,e.iid.high>>>0).toNumber(!0):e.iid),null!=e.value&&e.hasOwnProperty(\"value\")&&(n.value=e.value),n},Kt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Kt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoMetatrace.InternedString\"},Kt),I),r.PerfettoSqlStructuredQuery=(R.prototype.id=\"\",R.prototype.referencedModules=i.emptyArray,R.prototype.table=null,R.prototype.sql=null,R.prototype.simpleSlices=null,R.prototype.innerQuery=null,R.prototype.innerQueryId=null,R.prototype.intervalIntersect=null,R.prototype.filters=i.emptyArray,R.prototype.groupBy=null,R.prototype.selectColumns=i.emptyArray,Object.defineProperty(R.prototype,\"source\",{get:i.oneOfGetter(e=[\"table\",\"sql\",\"simpleSlices\",\"innerQuery\",\"innerQueryId\",\"intervalIntersect\"]),set:i.oneOfSetter(e)}),R.create=function(e){return new R(e)},R.encode=function(e,t){if(t=t||a.create(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(10).string(e.id),null!=e.table&&Object.hasOwnProperty.call(e,\"table\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.Table.encode(e.table,t.uint32(18).fork()).ldelim(),null!=e.sql&&Object.hasOwnProperty.call(e,\"sql\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.encode(e.sql,t.uint32(26).fork()).ldelim(),null!=e.simpleSlices&&Object.hasOwnProperty.call(e,\"simpleSlices\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices.encode(e.simpleSlices,t.uint32(34).fork()).ldelim(),null!=e.innerQuery&&Object.hasOwnProperty.call(e,\"innerQuery\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.innerQuery,t.uint32(42).fork()).ldelim(),null!=e.innerQueryId&&Object.hasOwnProperty.call(e,\"innerQueryId\")&&t.uint32(50).string(e.innerQueryId),null!=e.intervalIntersect&&Object.hasOwnProperty.call(e,\"intervalIntersect\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.encode(e.intervalIntersect,t.uint32(58).fork()).ldelim(),null!=e.filters&&e.filters.length)for(var r=0;r<e.filters.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.encode(e.filters[r],t.uint32(66).fork()).ldelim();if(null!=e.groupBy&&Object.hasOwnProperty.call(e,\"groupBy\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.encode(e.groupBy,t.uint32(74).fork()).ldelim(),null!=e.selectColumns&&e.selectColumns.length)for(r=0;r<e.selectColumns.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn.encode(e.selectColumns[r],t.uint32(82).fork()).ldelim();if(null!=e.referencedModules&&e.referencedModules.length)for(r=0;r<e.referencedModules.length;++r)t.uint32(90).string(e.referencedModules[r]);return t},R.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.id=e.string();break;case 11:n.referencedModules&&n.referencedModules.length||(n.referencedModules=[]),n.referencedModules.push(e.string());break;case 2:n.table=s.perfetto.protos.PerfettoSqlStructuredQuery.Table.decode(e,e.uint32());break;case 3:n.sql=s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.decode(e,e.uint32());break;case 4:n.simpleSlices=s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices.decode(e,e.uint32());break;case 5:n.innerQuery=s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32());break;case 6:n.innerQueryId=e.string();break;case 7:n.intervalIntersect=s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.decode(e,e.uint32());break;case 8:n.filters&&n.filters.length||(n.filters=[]),n.filters.push(s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.decode(e,e.uint32()));break;case 9:n.groupBy=s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.decode(e,e.uint32());break;case 10:n.selectColumns&&n.selectColumns.length||(n.selectColumns=[]),n.selectColumns.push(s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},R.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery;if(null!=e.id&&(t.id=String(e.id)),e.referencedModules){if(!Array.isArray(e.referencedModules))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.referencedModules: array expected\");t.referencedModules=[];for(var r=0;r<e.referencedModules.length;++r)t.referencedModules[r]=String(e.referencedModules[r])}if(null!=e.table){if(\"object\"!=typeof e.table)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.table: object expected\");t.table=s.perfetto.protos.PerfettoSqlStructuredQuery.Table.fromObject(e.table)}if(null!=e.sql){if(\"object\"!=typeof e.sql)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.sql: object expected\");t.sql=s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.fromObject(e.sql)}if(null!=e.simpleSlices){if(\"object\"!=typeof e.simpleSlices)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.simpleSlices: object expected\");t.simpleSlices=s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices.fromObject(e.simpleSlices)}if(null!=e.innerQuery){if(\"object\"!=typeof e.innerQuery)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.innerQuery: object expected\");t.innerQuery=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.innerQuery)}if(null!=e.innerQueryId&&(t.innerQueryId=String(e.innerQueryId)),null!=e.intervalIntersect){if(\"object\"!=typeof e.intervalIntersect)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.intervalIntersect: object expected\");t.intervalIntersect=s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.fromObject(e.intervalIntersect)}if(e.filters){if(!Array.isArray(e.filters))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.filters: array expected\");t.filters=[];for(r=0;r<e.filters.length;++r){if(\"object\"!=typeof e.filters[r])throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.filters: object expected\");t.filters[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.fromObject(e.filters[r])}}if(null!=e.groupBy){if(\"object\"!=typeof e.groupBy)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.groupBy: object expected\");t.groupBy=s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.fromObject(e.groupBy)}if(e.selectColumns){if(!Array.isArray(e.selectColumns))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.selectColumns: array expected\");t.selectColumns=[];for(r=0;r<e.selectColumns.length;++r){if(\"object\"!=typeof e.selectColumns[r])throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.selectColumns: object expected\");t.selectColumns[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn.fromObject(e.selectColumns[r])}}return t},R.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.filters=[],r.selectColumns=[],r.referencedModules=[]),t.defaults&&(r.id=\"\",r.groupBy=null),null!=e.id&&e.hasOwnProperty(\"id\")&&(r.id=e.id),null!=e.table&&e.hasOwnProperty(\"table\")&&(r.table=s.perfetto.protos.PerfettoSqlStructuredQuery.Table.toObject(e.table,t),t.oneofs)&&(r.source=\"table\"),null!=e.sql&&e.hasOwnProperty(\"sql\")&&(r.sql=s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.toObject(e.sql,t),t.oneofs)&&(r.source=\"sql\"),null!=e.simpleSlices&&e.hasOwnProperty(\"simpleSlices\")&&(r.simpleSlices=s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices.toObject(e.simpleSlices,t),t.oneofs)&&(r.source=\"simpleSlices\"),null!=e.innerQuery&&e.hasOwnProperty(\"innerQuery\")&&(r.innerQuery=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.innerQuery,t),t.oneofs)&&(r.source=\"innerQuery\"),null!=e.innerQueryId&&e.hasOwnProperty(\"innerQueryId\")&&(r.innerQueryId=e.innerQueryId,t.oneofs)&&(r.source=\"innerQueryId\"),null!=e.intervalIntersect&&e.hasOwnProperty(\"intervalIntersect\")&&(r.intervalIntersect=s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.toObject(e.intervalIntersect,t),t.oneofs)&&(r.source=\"intervalIntersect\"),e.filters&&e.filters.length){r.filters=[];for(var n=0;n<e.filters.length;++n)r.filters[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.toObject(e.filters[n],t)}if(null!=e.groupBy&&e.hasOwnProperty(\"groupBy\")&&(r.groupBy=s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.toObject(e.groupBy,t)),e.selectColumns&&e.selectColumns.length){r.selectColumns=[];for(n=0;n<e.selectColumns.length;++n)r.selectColumns[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn.toObject(e.selectColumns[n],t)}if(e.referencedModules&&e.referencedModules.length){r.referencedModules=[];for(n=0;n<e.referencedModules.length;++n)r.referencedModules[n]=e.referencedModules[n]}return r},R.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},R.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery\"},R.Table=(Yt.prototype.tableName=\"\",Yt.prototype.columnNames=i.emptyArray,Yt.prototype.moduleName=\"\",Yt.create=function(e){return new Yt(e)},Yt.encode=function(e,t){if(t=t||a.create(),null!=e.tableName&&Object.hasOwnProperty.call(e,\"tableName\")&&t.uint32(10).string(e.tableName),null!=e.moduleName&&Object.hasOwnProperty.call(e,\"moduleName\")&&t.uint32(18).string(e.moduleName),null!=e.columnNames&&e.columnNames.length)for(var r=0;r<e.columnNames.length;++r)t.uint32(26).string(e.columnNames[r]);return t},Yt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.Table;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.tableName=e.string();break;case 3:n.columnNames&&n.columnNames.length||(n.columnNames=[]),n.columnNames.push(e.string());break;case 2:n.moduleName=e.string();break;default:e.skipType(7&a)}}return n},Yt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.Table)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.Table;if(null!=e.tableName&&(t.tableName=String(e.tableName)),e.columnNames){if(!Array.isArray(e.columnNames))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Table.columnNames: array expected\");t.columnNames=[];for(var r=0;r<e.columnNames.length;++r)t.columnNames[r]=String(e.columnNames[r])}return null!=e.moduleName&&(t.moduleName=String(e.moduleName)),t},Yt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.columnNames=[]),t.defaults&&(r.tableName=\"\",r.moduleName=\"\"),null!=e.tableName&&e.hasOwnProperty(\"tableName\")&&(r.tableName=e.tableName),null!=e.moduleName&&e.hasOwnProperty(\"moduleName\")&&(r.moduleName=e.moduleName),e.columnNames&&e.columnNames.length){r.columnNames=[];for(var n=0;n<e.columnNames.length;++n)r.columnNames[n]=e.columnNames[n]}return r},Yt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Yt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.Table\"},Yt),R.SimpleSlices=(Jt.prototype.sliceNameGlob=\"\",Jt.prototype.threadNameGlob=\"\",Jt.prototype.processNameGlob=\"\",Jt.prototype.trackNameGlob=\"\",Jt.create=function(e){return new Jt(e)},Jt.encode=function(e,t){return t=t||a.create(),null!=e.sliceNameGlob&&Object.hasOwnProperty.call(e,\"sliceNameGlob\")&&t.uint32(10).string(e.sliceNameGlob),null!=e.threadNameGlob&&Object.hasOwnProperty.call(e,\"threadNameGlob\")&&t.uint32(18).string(e.threadNameGlob),null!=e.processNameGlob&&Object.hasOwnProperty.call(e,\"processNameGlob\")&&t.uint32(26).string(e.processNameGlob),null!=e.trackNameGlob&&Object.hasOwnProperty.call(e,\"trackNameGlob\")&&t.uint32(34).string(e.trackNameGlob),t},Jt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sliceNameGlob=e.string();break;case 2:n.threadNameGlob=e.string();break;case 3:n.processNameGlob=e.string();break;case 4:n.trackNameGlob=e.string();break;default:e.skipType(7&a)}}return n},Jt.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices?e:(t=new s.perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices,null!=e.sliceNameGlob&&(t.sliceNameGlob=String(e.sliceNameGlob)),null!=e.threadNameGlob&&(t.threadNameGlob=String(e.threadNameGlob)),null!=e.processNameGlob&&(t.processNameGlob=String(e.processNameGlob)),null!=e.trackNameGlob&&(t.trackNameGlob=String(e.trackNameGlob)),t)},Jt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.sliceNameGlob=\"\",r.threadNameGlob=\"\",r.processNameGlob=\"\",r.trackNameGlob=\"\"),null!=e.sliceNameGlob&&e.hasOwnProperty(\"sliceNameGlob\")&&(r.sliceNameGlob=e.sliceNameGlob),null!=e.threadNameGlob&&e.hasOwnProperty(\"threadNameGlob\")&&(r.threadNameGlob=e.threadNameGlob),null!=e.processNameGlob&&e.hasOwnProperty(\"processNameGlob\")&&(r.processNameGlob=e.processNameGlob),null!=e.trackNameGlob&&e.hasOwnProperty(\"trackNameGlob\")&&(r.trackNameGlob=e.trackNameGlob),r},Jt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Jt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.SimpleSlices\"},Jt),R.Sql=(Qt.prototype.sql=\"\",Qt.prototype.columnNames=i.emptyArray,Qt.prototype.dependencies=i.emptyArray,Qt.prototype.preamble=\"\",Qt.create=function(e){return new Qt(e)},Qt.encode=function(e,t){if(t=t||a.create(),null!=e.sql&&Object.hasOwnProperty.call(e,\"sql\")&&t.uint32(10).string(e.sql),null!=e.columnNames&&e.columnNames.length)for(var r=0;r<e.columnNames.length;++r)t.uint32(18).string(e.columnNames[r]);if(null!=e.preamble&&Object.hasOwnProperty.call(e,\"preamble\")&&t.uint32(26).string(e.preamble),null!=e.dependencies&&e.dependencies.length)for(r=0;r<e.dependencies.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency.encode(e.dependencies[r],t.uint32(34).fork()).ldelim();return t},Qt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.Sql;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sql=e.string();break;case 2:n.columnNames&&n.columnNames.length||(n.columnNames=[]),n.columnNames.push(e.string());break;case 4:n.dependencies&&n.dependencies.length||(n.dependencies=[]),n.dependencies.push(s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency.decode(e,e.uint32()));break;case 3:n.preamble=e.string();break;default:e.skipType(7&a)}}return n},Qt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.Sql)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.Sql;if(null!=e.sql&&(t.sql=String(e.sql)),e.columnNames){if(!Array.isArray(e.columnNames))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Sql.columnNames: array expected\");t.columnNames=[];for(var r=0;r<e.columnNames.length;++r)t.columnNames[r]=String(e.columnNames[r])}if(e.dependencies){if(!Array.isArray(e.dependencies))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Sql.dependencies: array expected\");t.dependencies=[];for(r=0;r<e.dependencies.length;++r){if(\"object\"!=typeof e.dependencies[r])throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Sql.dependencies: object expected\");t.dependencies[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency.fromObject(e.dependencies[r])}}return null!=e.preamble&&(t.preamble=String(e.preamble)),t},Qt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.columnNames=[],r.dependencies=[]),t.defaults&&(r.sql=\"\",r.preamble=\"\"),null!=e.sql&&e.hasOwnProperty(\"sql\")&&(r.sql=e.sql),e.columnNames&&e.columnNames.length){r.columnNames=[];for(var n=0;n<e.columnNames.length;++n)r.columnNames[n]=e.columnNames[n]}if(null!=e.preamble&&e.hasOwnProperty(\"preamble\")&&(r.preamble=e.preamble),e.dependencies&&e.dependencies.length){r.dependencies=[];for(n=0;n<e.dependencies.length;++n)r.dependencies[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency.toObject(e.dependencies[n],t)}return r},Qt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Qt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.Sql\"},Qt.Dependency=(Zt.prototype.alias=\"\",Zt.prototype.query=null,Zt.create=function(e){return new Zt(e)},Zt.encode=function(e,t){return t=t||a.create(),null!=e.alias&&Object.hasOwnProperty.call(e,\"alias\")&&t.uint32(10).string(e.alias),null!=e.query&&Object.hasOwnProperty.call(e,\"query\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.query,t.uint32(18).fork()).ldelim(),t},Zt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.alias=e.string();break;case 2:n.query=s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},Zt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency;if(null!=e.alias&&(t.alias=String(e.alias)),null!=e.query){if(\"object\"!=typeof e.query)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency.query: object expected\");t.query=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.query)}return t},Zt.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.alias=\"\",r.query=null),null!=e.alias&&e.hasOwnProperty(\"alias\")&&(r.alias=e.alias),null!=e.query&&e.hasOwnProperty(\"query\")&&(r.query=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.query,t)),r},Zt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Zt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.Sql.Dependency\"},Zt),Qt),R.IntervalIntersect=(Xt.prototype.base=null,Xt.prototype.intervalIntersect=i.emptyArray,Xt.create=function(e){return new Xt(e)},Xt.encode=function(e,t){if(t=t||a.create(),null!=e.base&&Object.hasOwnProperty.call(e,\"base\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.base,t.uint32(10).fork()).ldelim(),null!=e.intervalIntersect&&e.intervalIntersect.length)for(var r=0;r<e.intervalIntersect.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.intervalIntersect[r],t.uint32(18).fork()).ldelim();return t},Xt.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.base=s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32());break;case 2:n.intervalIntersect&&n.intervalIntersect.length||(n.intervalIntersect=[]),n.intervalIntersect.push(s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Xt.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect;if(null!=e.base){if(\"object\"!=typeof e.base)throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.base: object expected\");t.base=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.base)}if(e.intervalIntersect){if(!Array.isArray(e.intervalIntersect))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.intervalIntersect: array expected\");t.intervalIntersect=[];for(var r=0;r<e.intervalIntersect.length;++r){if(\"object\"!=typeof e.intervalIntersect[r])throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect.intervalIntersect: object expected\");t.intervalIntersect[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.intervalIntersect[r])}}return t},Xt.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.intervalIntersect=[]),t.defaults&&(r.base=null),null!=e.base&&e.hasOwnProperty(\"base\")&&(r.base=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.base,t)),e.intervalIntersect&&e.intervalIntersect.length){r.intervalIntersect=[];for(var n=0;n<e.intervalIntersect.length;++n)r.intervalIntersect[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.intervalIntersect[n],t)}return r},Xt.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Xt.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.IntervalIntersect\"},Xt),R.Filter=(er.prototype.columnName=\"\",er.prototype.op=0,er.prototype.stringRhs=i.emptyArray,er.prototype.doubleRhs=i.emptyArray,er.prototype.int64Rhs=i.emptyArray,er.create=function(e){return new er(e)},er.encode=function(e,t){if(t=t||a.create(),null!=e.columnName&&Object.hasOwnProperty.call(e,\"columnName\")&&t.uint32(10).string(e.columnName),null!=e.op&&Object.hasOwnProperty.call(e,\"op\")&&t.uint32(16).int32(e.op),null!=e.stringRhs&&e.stringRhs.length)for(var r=0;r<e.stringRhs.length;++r)t.uint32(26).string(e.stringRhs[r]);if(null!=e.doubleRhs&&e.doubleRhs.length)for(r=0;r<e.doubleRhs.length;++r)t.uint32(33).double(e.doubleRhs[r]);if(null!=e.int64Rhs&&e.int64Rhs.length)for(r=0;r<e.int64Rhs.length;++r)t.uint32(40).int64(e.int64Rhs[r]);return t},er.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.Filter;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.columnName=e.string();break;case 2:n.op=e.int32();break;case 3:n.stringRhs&&n.stringRhs.length||(n.stringRhs=[]),n.stringRhs.push(e.string());break;case 4:if(n.doubleRhs&&n.doubleRhs.length||(n.doubleRhs=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.doubleRhs.push(e.double());else n.doubleRhs.push(e.double());break;case 5:if(n.int64Rhs&&n.int64Rhs.length||(n.int64Rhs=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.int64Rhs.push(e.int64());else n.int64Rhs.push(e.int64());break;default:e.skipType(7&a)}}return n},er.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.Filter)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.Filter;switch(null!=e.columnName&&(t.columnName=String(e.columnName)),e.op){default:\"number\"==typeof e.op&&(t.op=e.op);break;case\"UNKNOWN\":case 0:t.op=0;break;case\"EQUAL\":case 1:t.op=1;break;case\"NOT_EQUAL\":case 2:t.op=2;break;case\"LESS_THAN\":case 3:t.op=3;break;case\"LESS_THAN_EQUAL\":case 4:t.op=4;break;case\"GREATER_THAN\":case 5:t.op=5;break;case\"GREATER_THAN_EQUAL\":case 6:t.op=6;break;case\"IS_NULL\":case 8:t.op=8;break;case\"IS_NOT_NULL\":case 9:t.op=9;break;case\"GLOB\":case 7:t.op=7}if(e.stringRhs){if(!Array.isArray(e.stringRhs))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Filter.stringRhs: array expected\");t.stringRhs=[];for(var r=0;r<e.stringRhs.length;++r)t.stringRhs[r]=String(e.stringRhs[r])}if(e.doubleRhs){if(!Array.isArray(e.doubleRhs))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Filter.doubleRhs: array expected\");t.doubleRhs=[];for(r=0;r<e.doubleRhs.length;++r)t.doubleRhs[r]=Number(e.doubleRhs[r])}if(e.int64Rhs){if(!Array.isArray(e.int64Rhs))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.Filter.int64Rhs: array expected\");t.int64Rhs=[];for(r=0;r<e.int64Rhs.length;++r)i.Long?(t.int64Rhs[r]=i.Long.fromValue(e.int64Rhs[r])).unsigned=!1:\"string\"==typeof e.int64Rhs[r]?t.int64Rhs[r]=parseInt(e.int64Rhs[r],10):\"number\"==typeof e.int64Rhs[r]?t.int64Rhs[r]=e.int64Rhs[r]:\"object\"==typeof e.int64Rhs[r]&&(t.int64Rhs[r]=new i.LongBits(e.int64Rhs[r].low>>>0,e.int64Rhs[r].high>>>0).toNumber())}return t},er.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.stringRhs=[],r.doubleRhs=[],r.int64Rhs=[]),t.defaults&&(r.columnName=\"\",r.op=t.enums===String?\"UNKNOWN\":0),null!=e.columnName&&e.hasOwnProperty(\"columnName\")&&(r.columnName=e.columnName),null!=e.op&&e.hasOwnProperty(\"op\")&&(r.op=t.enums!==String||void 0===s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.Operator[e.op]?e.op:s.perfetto.protos.PerfettoSqlStructuredQuery.Filter.Operator[e.op]),e.stringRhs&&e.stringRhs.length){r.stringRhs=[];for(var n=0;n<e.stringRhs.length;++n)r.stringRhs[n]=e.stringRhs[n]}if(e.doubleRhs&&e.doubleRhs.length){r.doubleRhs=[];for(n=0;n<e.doubleRhs.length;++n)r.doubleRhs[n]=t.json&&!isFinite(e.doubleRhs[n])?String(e.doubleRhs[n]):e.doubleRhs[n]}if(e.int64Rhs&&e.int64Rhs.length){r.int64Rhs=[];for(n=0;n<e.int64Rhs.length;++n)\"number\"==typeof e.int64Rhs[n]?r.int64Rhs[n]=t.longs===String?String(e.int64Rhs[n]):e.int64Rhs[n]:r.int64Rhs[n]=t.longs===String?i.Long.prototype.toString.call(e.int64Rhs[n]):t.longs===Number?new i.LongBits(e.int64Rhs[n].low>>>0,e.int64Rhs[n].high>>>0).toNumber():e.int64Rhs[n]}return r},er.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},er.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.Filter\"},er.Operator=(e={},(t=Object.create(e))[e[0]=\"UNKNOWN\"]=0,t[e[1]=\"EQUAL\"]=1,t[e[2]=\"NOT_EQUAL\"]=2,t[e[3]=\"LESS_THAN\"]=3,t[e[4]=\"LESS_THAN_EQUAL\"]=4,t[e[5]=\"GREATER_THAN\"]=5,t[e[6]=\"GREATER_THAN_EQUAL\"]=6,t[e[8]=\"IS_NULL\"]=8,t[e[9]=\"IS_NOT_NULL\"]=9,t[e[7]=\"GLOB\"]=7,t),er),R.GroupBy=(tr.prototype.columnNames=i.emptyArray,tr.prototype.aggregates=i.emptyArray,tr.create=function(e){return new tr(e)},tr.encode=function(e,t){if(t=t||a.create(),null!=e.columnNames&&e.columnNames.length)for(var r=0;r<e.columnNames.length;++r)t.uint32(10).string(e.columnNames[r]);if(null!=e.aggregates&&e.aggregates.length)for(r=0;r<e.aggregates.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.encode(e.aggregates[r],t.uint32(18).fork()).ldelim();return t},tr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.columnNames&&n.columnNames.length||(n.columnNames=[]),n.columnNames.push(e.string());break;case 2:n.aggregates&&n.aggregates.length||(n.aggregates=[]),n.aggregates.push(s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},tr.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy;if(e.columnNames){if(!Array.isArray(e.columnNames))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.columnNames: array expected\");t.columnNames=[];for(var r=0;r<e.columnNames.length;++r)t.columnNames[r]=String(e.columnNames[r])}if(e.aggregates){if(!Array.isArray(e.aggregates))throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.aggregates: array expected\");t.aggregates=[];for(r=0;r<e.aggregates.length;++r){if(\"object\"!=typeof e.aggregates[r])throw TypeError(\".perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.aggregates: object expected\");t.aggregates[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.fromObject(e.aggregates[r])}}return t},tr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.columnNames=[],r.aggregates=[]),e.columnNames&&e.columnNames.length){r.columnNames=[];for(var n=0;n<e.columnNames.length;++n)r.columnNames[n]=e.columnNames[n]}if(e.aggregates&&e.aggregates.length){r.aggregates=[];for(n=0;n<e.aggregates.length;++n)r.aggregates[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.toObject(e.aggregates[n],t)}return r},tr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},tr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.GroupBy\"},tr.Aggregate=(rr.prototype.columnName=\"\",rr.prototype.op=0,rr.prototype.resultColumnName=\"\",rr.create=function(e){return new rr(e)},rr.encode=function(e,t){return t=t||a.create(),null!=e.columnName&&Object.hasOwnProperty.call(e,\"columnName\")&&t.uint32(10).string(e.columnName),null!=e.op&&Object.hasOwnProperty.call(e,\"op\")&&t.uint32(16).int32(e.op),null!=e.resultColumnName&&Object.hasOwnProperty.call(e,\"resultColumnName\")&&t.uint32(26).string(e.resultColumnName),t},rr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.columnName=e.string();break;case 2:n.op=e.int32();break;case 3:n.resultColumnName=e.string();break;default:e.skipType(7&a)}}return n},rr.fromObject=function(e){if(e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate)return e;var t=new s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate;switch(null!=e.columnName&&(t.columnName=String(e.columnName)),e.op){default:\"number\"==typeof e.op&&(t.op=e.op);break;case\"UNSPECIFIED\":case 0:t.op=0;break;case\"COUNT\":case 1:t.op=1;break;case\"SUM\":case 2:t.op=2;break;case\"MIN\":case 3:t.op=3;break;case\"MAX\":case 4:t.op=4;break;case\"MEAN\":case 5:t.op=5;break;case\"MEDIAN\":case 6:t.op=6;break;case\"DURATION_WEIGHTED_MEAN\":case 7:t.op=7}return null!=e.resultColumnName&&(t.resultColumnName=String(e.resultColumnName)),t},rr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.columnName=\"\",r.op=t.enums===String?\"UNSPECIFIED\":0,r.resultColumnName=\"\"),null!=e.columnName&&e.hasOwnProperty(\"columnName\")&&(r.columnName=e.columnName),null!=e.op&&e.hasOwnProperty(\"op\")&&(r.op=t.enums!==String||void 0===s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.Op[e.op]?e.op:s.perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate.Op[e.op]),null!=e.resultColumnName&&e.hasOwnProperty(\"resultColumnName\")&&(r.resultColumnName=e.resultColumnName),r},rr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},rr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.GroupBy.Aggregate\"},rr.Op=(e={},(t=Object.create(e))[e[0]=\"UNSPECIFIED\"]=0,t[e[1]=\"COUNT\"]=1,t[e[2]=\"SUM\"]=2,t[e[3]=\"MIN\"]=3,t[e[4]=\"MAX\"]=4,t[e[5]=\"MEAN\"]=5,t[e[6]=\"MEDIAN\"]=6,t[e[7]=\"DURATION_WEIGHTED_MEAN\"]=7,t),rr),tr),R.SelectColumn=(nr.prototype.columnNameOrExpression=\"\",nr.prototype.alias=\"\",nr.prototype.columnName=\"\",nr.create=function(e){return new nr(e)},nr.encode=function(e,t){return t=t||a.create(),null!=e.columnName&&Object.hasOwnProperty.call(e,\"columnName\")&&t.uint32(10).string(e.columnName),null!=e.alias&&Object.hasOwnProperty.call(e,\"alias\")&&t.uint32(18).string(e.alias),null!=e.columnNameOrExpression&&Object.hasOwnProperty.call(e,\"columnNameOrExpression\")&&t.uint32(26).string(e.columnNameOrExpression),t},nr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn;e.pos<r;){var a=e.uint32();switch(a>>>3){case 3:n.columnNameOrExpression=e.string();break;case 2:n.alias=e.string();break;case 1:n.columnName=e.string();break;default:e.skipType(7&a)}}return n},nr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn?e:(t=new s.perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn,null!=e.columnNameOrExpression&&(t.columnNameOrExpression=String(e.columnNameOrExpression)),null!=e.alias&&(t.alias=String(e.alias)),null!=e.columnName&&(t.columnName=String(e.columnName)),t)},nr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.columnName=\"\",r.alias=\"\",r.columnNameOrExpression=\"\"),null!=e.columnName&&e.hasOwnProperty(\"columnName\")&&(r.columnName=e.columnName),null!=e.alias&&e.hasOwnProperty(\"alias\")&&(r.alias=e.alias),null!=e.columnNameOrExpression&&e.hasOwnProperty(\"columnNameOrExpression\")&&(r.columnNameOrExpression=e.columnNameOrExpression),r},nr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},nr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.PerfettoSqlStructuredQuery.SelectColumn\"},nr),R),r.TraceProcessorApiVersion=(e={},(t=Object.create(e))[e[14]=\"TRACE_PROCESSOR_CURRENT_API_VERSION\"]=14,t),r.TraceProcessorRpcStream=(ar.prototype.msg=i.emptyArray,ar.create=function(e){return new ar(e)},ar.encode=function(e,t){if(t=t||a.create(),null!=e.msg&&e.msg.length)for(var r=0;r<e.msg.length;++r)s.perfetto.protos.TraceProcessorRpc.encode(e.msg[r],t.uint32(10).fork()).ldelim();return t},ar.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceProcessorRpcStream;e.pos<r;){var a=e.uint32();a>>>3==1?(n.msg&&n.msg.length||(n.msg=[]),n.msg.push(s.perfetto.protos.TraceProcessorRpc.decode(e,e.uint32()))):e.skipType(7&a)}return n},ar.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceProcessorRpcStream)return e;var t=new s.perfetto.protos.TraceProcessorRpcStream;if(e.msg){if(!Array.isArray(e.msg))throw TypeError(\".perfetto.protos.TraceProcessorRpcStream.msg: array expected\");t.msg=[];for(var r=0;r<e.msg.length;++r){if(\"object\"!=typeof e.msg[r])throw TypeError(\".perfetto.protos.TraceProcessorRpcStream.msg: object expected\");t.msg[r]=s.perfetto.protos.TraceProcessorRpc.fromObject(e.msg[r])}}return t},ar.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.msg=[]),e.msg&&e.msg.length){r.msg=[];for(var n=0;n<e.msg.length;++n)r.msg[n]=s.perfetto.protos.TraceProcessorRpc.toObject(e.msg[n],t)}return r},ar.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ar.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceProcessorRpcStream\"},ar),r.TraceProcessorRpc=(N.prototype.seq=i.Long?i.Long.fromBits(0,0,!1):0,N.prototype.fatalError=\"\",N.prototype.request=null,N.prototype.response=null,N.prototype.invalidRequest=null,N.prototype.appendTraceData=null,N.prototype.queryArgs=null,N.prototype.computeMetricArgs=null,N.prototype.enableMetatraceArgs=null,N.prototype.resetTraceProcessorArgs=null,N.prototype.registerSqlPackageArgs=null,N.prototype.analyzeStructuredQueryArgs=null,N.prototype.traceSummaryArgs=null,N.prototype.appendResult=null,N.prototype.queryResult=null,N.prototype.metricResult=null,N.prototype.metricDescriptors=null,N.prototype.metatrace=null,N.prototype.status=null,N.prototype.registerSqlPackageResult=null,N.prototype.finalizeDataResult=null,N.prototype.analyzeStructuredQueryResult=null,N.prototype.traceSummaryResult=null,Object.defineProperty(N.prototype,\"type\",{get:i.oneOfGetter(e=[\"request\",\"response\",\"invalidRequest\"]),set:i.oneOfSetter(e)}),Object.defineProperty(N.prototype,\"args\",{get:i.oneOfGetter(e=[\"appendTraceData\",\"queryArgs\",\"computeMetricArgs\",\"enableMetatraceArgs\",\"resetTraceProcessorArgs\",\"registerSqlPackageArgs\",\"analyzeStructuredQueryArgs\",\"traceSummaryArgs\",\"appendResult\",\"queryResult\",\"metricResult\",\"metricDescriptors\",\"metatrace\",\"status\",\"registerSqlPackageResult\",\"finalizeDataResult\",\"analyzeStructuredQueryResult\",\"traceSummaryResult\"]),set:i.oneOfSetter(e)}),N.create=function(e){return new N(e)},N.encode=function(e,t){return t=t||a.create(),null!=e.seq&&Object.hasOwnProperty.call(e,\"seq\")&&t.uint32(8).int64(e.seq),null!=e.request&&Object.hasOwnProperty.call(e,\"request\")&&t.uint32(16).int32(e.request),null!=e.response&&Object.hasOwnProperty.call(e,\"response\")&&t.uint32(24).int32(e.response),null!=e.invalidRequest&&Object.hasOwnProperty.call(e,\"invalidRequest\")&&t.uint32(32).int32(e.invalidRequest),null!=e.fatalError&&Object.hasOwnProperty.call(e,\"fatalError\")&&t.uint32(42).string(e.fatalError),null!=e.appendTraceData&&Object.hasOwnProperty.call(e,\"appendTraceData\")&&t.uint32(810).bytes(e.appendTraceData),null!=e.queryArgs&&Object.hasOwnProperty.call(e,\"queryArgs\")&&s.perfetto.protos.QueryArgs.encode(e.queryArgs,t.uint32(826).fork()).ldelim(),null!=e.computeMetricArgs&&Object.hasOwnProperty.call(e,\"computeMetricArgs\")&&s.perfetto.protos.ComputeMetricArgs.encode(e.computeMetricArgs,t.uint32(842).fork()).ldelim(),null!=e.enableMetatraceArgs&&Object.hasOwnProperty.call(e,\"enableMetatraceArgs\")&&s.perfetto.protos.EnableMetatraceArgs.encode(e.enableMetatraceArgs,t.uint32(850).fork()).ldelim(),null!=e.resetTraceProcessorArgs&&Object.hasOwnProperty.call(e,\"resetTraceProcessorArgs\")&&s.perfetto.protos.ResetTraceProcessorArgs.encode(e.resetTraceProcessorArgs,t.uint32(858).fork()).ldelim(),null!=e.registerSqlPackageArgs&&Object.hasOwnProperty.call(e,\"registerSqlPackageArgs\")&&s.perfetto.protos.RegisterSqlPackageArgs.encode(e.registerSqlPackageArgs,t.uint32(866).fork()).ldelim(),null!=e.analyzeStructuredQueryArgs&&Object.hasOwnProperty.call(e,\"analyzeStructuredQueryArgs\")&&s.perfetto.protos.AnalyzeStructuredQueryArgs.encode(e.analyzeStructuredQueryArgs,t.uint32(874).fork()).ldelim(),null!=e.traceSummaryArgs&&Object.hasOwnProperty.call(e,\"traceSummaryArgs\")&&s.perfetto.protos.TraceSummaryArgs.encode(e.traceSummaryArgs,t.uint32(882).fork()).ldelim(),null!=e.appendResult&&Object.hasOwnProperty.call(e,\"appendResult\")&&s.perfetto.protos.AppendTraceDataResult.encode(e.appendResult,t.uint32(1610).fork()).ldelim(),null!=e.queryResult&&Object.hasOwnProperty.call(e,\"queryResult\")&&s.perfetto.protos.QueryResult.encode(e.queryResult,t.uint32(1626).fork()).ldelim(),null!=e.metricResult&&Object.hasOwnProperty.call(e,\"metricResult\")&&s.perfetto.protos.ComputeMetricResult.encode(e.metricResult,t.uint32(1642).fork()).ldelim(),null!=e.metricDescriptors&&Object.hasOwnProperty.call(e,\"metricDescriptors\")&&s.perfetto.protos.DescriptorSet.encode(e.metricDescriptors,t.uint32(1650).fork()).ldelim(),null!=e.metatrace&&Object.hasOwnProperty.call(e,\"metatrace\")&&s.perfetto.protos.DisableAndReadMetatraceResult.encode(e.metatrace,t.uint32(1674).fork()).ldelim(),null!=e.status&&Object.hasOwnProperty.call(e,\"status\")&&s.perfetto.protos.StatusResult.encode(e.status,t.uint32(1682).fork()).ldelim(),null!=e.registerSqlPackageResult&&Object.hasOwnProperty.call(e,\"registerSqlPackageResult\")&&s.perfetto.protos.RegisterSqlPackageResult.encode(e.registerSqlPackageResult,t.uint32(1690).fork()).ldelim(),null!=e.finalizeDataResult&&Object.hasOwnProperty.call(e,\"finalizeDataResult\")&&s.perfetto.protos.FinalizeDataResult.encode(e.finalizeDataResult,t.uint32(1698).fork()).ldelim(),null!=e.analyzeStructuredQueryResult&&Object.hasOwnProperty.call(e,\"analyzeStructuredQueryResult\")&&s.perfetto.protos.AnalyzeStructuredQueryResult.encode(e.analyzeStructuredQueryResult,t.uint32(1706).fork()).ldelim(),null!=e.traceSummaryResult&&Object.hasOwnProperty.call(e,\"traceSummaryResult\")&&s.perfetto.protos.TraceSummaryResult.encode(e.traceSummaryResult,t.uint32(1714).fork()).ldelim(),t},N.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceProcessorRpc;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.seq=e.int64();break;case 5:n.fatalError=e.string();break;case 2:n.request=e.int32();break;case 3:n.response=e.int32();break;case 4:n.invalidRequest=e.int32();break;case 101:n.appendTraceData=e.bytes();break;case 103:n.queryArgs=s.perfetto.protos.QueryArgs.decode(e,e.uint32());break;case 105:n.computeMetricArgs=s.perfetto.protos.ComputeMetricArgs.decode(e,e.uint32());break;case 106:n.enableMetatraceArgs=s.perfetto.protos.EnableMetatraceArgs.decode(e,e.uint32());break;case 107:n.resetTraceProcessorArgs=s.perfetto.protos.ResetTraceProcessorArgs.decode(e,e.uint32());break;case 108:n.registerSqlPackageArgs=s.perfetto.protos.RegisterSqlPackageArgs.decode(e,e.uint32());break;case 109:n.analyzeStructuredQueryArgs=s.perfetto.protos.AnalyzeStructuredQueryArgs.decode(e,e.uint32());break;case 110:n.traceSummaryArgs=s.perfetto.protos.TraceSummaryArgs.decode(e,e.uint32());break;case 201:n.appendResult=s.perfetto.protos.AppendTraceDataResult.decode(e,e.uint32());break;case 203:n.queryResult=s.perfetto.protos.QueryResult.decode(e,e.uint32());break;case 205:n.metricResult=s.perfetto.protos.ComputeMetricResult.decode(e,e.uint32());break;case 206:n.metricDescriptors=s.perfetto.protos.DescriptorSet.decode(e,e.uint32());break;case 209:n.metatrace=s.perfetto.protos.DisableAndReadMetatraceResult.decode(e,e.uint32());break;case 210:n.status=s.perfetto.protos.StatusResult.decode(e,e.uint32());break;case 211:n.registerSqlPackageResult=s.perfetto.protos.RegisterSqlPackageResult.decode(e,e.uint32());break;case 212:n.finalizeDataResult=s.perfetto.protos.FinalizeDataResult.decode(e,e.uint32());break;case 213:n.analyzeStructuredQueryResult=s.perfetto.protos.AnalyzeStructuredQueryResult.decode(e,e.uint32());break;case 214:n.traceSummaryResult=s.perfetto.protos.TraceSummaryResult.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},N.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceProcessorRpc)return e;var t=new s.perfetto.protos.TraceProcessorRpc;switch(null!=e.seq&&(i.Long?(t.seq=i.Long.fromValue(e.seq)).unsigned=!1:\"string\"==typeof e.seq?t.seq=parseInt(e.seq,10):\"number\"==typeof e.seq?t.seq=e.seq:\"object\"==typeof e.seq&&(t.seq=new i.LongBits(e.seq.low>>>0,e.seq.high>>>0).toNumber())),null!=e.fatalError&&(t.fatalError=String(e.fatalError)),e.request){default:\"number\"==typeof e.request&&(t.request=e.request);break;case\"TPM_UNSPECIFIED\":case 0:t.request=0;break;case\"TPM_APPEND_TRACE_DATA\":case 1:t.request=1;break;case\"TPM_FINALIZE_TRACE_DATA\":case 2:t.request=2;break;case\"TPM_QUERY_STREAMING\":case 3:t.request=3;break;case\"TPM_COMPUTE_METRIC\":case 5:t.request=5;break;case\"TPM_GET_METRIC_DESCRIPTORS\":case 6:t.request=6;break;case\"TPM_RESTORE_INITIAL_TABLES\":case 7:t.request=7;break;case\"TPM_ENABLE_METATRACE\":case 8:t.request=8;break;case\"TPM_DISABLE_AND_READ_METATRACE\":case 9:t.request=9;break;case\"TPM_GET_STATUS\":case 10:t.request=10;break;case\"TPM_RESET_TRACE_PROCESSOR\":case 11:t.request=11;break;case\"TPM_REGISTER_SQL_PACKAGE\":case 13:t.request=13;break;case\"TPM_ANALYZE_STRUCTURED_QUERY\":case 14:t.request=14;break;case\"TPM_SUMMARIZE_TRACE\":case 15:t.request=15}switch(e.response){default:\"number\"==typeof e.response&&(t.response=e.response);break;case\"TPM_UNSPECIFIED\":case 0:t.response=0;break;case\"TPM_APPEND_TRACE_DATA\":case 1:t.response=1;break;case\"TPM_FINALIZE_TRACE_DATA\":case 2:t.response=2;break;case\"TPM_QUERY_STREAMING\":case 3:t.response=3;break;case\"TPM_COMPUTE_METRIC\":case 5:t.response=5;break;case\"TPM_GET_METRIC_DESCRIPTORS\":case 6:t.response=6;break;case\"TPM_RESTORE_INITIAL_TABLES\":case 7:t.response=7;break;case\"TPM_ENABLE_METATRACE\":case 8:t.response=8;break;case\"TPM_DISABLE_AND_READ_METATRACE\":case 9:t.response=9;break;case\"TPM_GET_STATUS\":case 10:t.response=10;break;case\"TPM_RESET_TRACE_PROCESSOR\":case 11:t.response=11;break;case\"TPM_REGISTER_SQL_PACKAGE\":case 13:t.response=13;break;case\"TPM_ANALYZE_STRUCTURED_QUERY\":case 14:t.response=14;break;case\"TPM_SUMMARIZE_TRACE\":case 15:t.response=15}switch(e.invalidRequest){default:\"number\"==typeof e.invalidRequest&&(t.invalidRequest=e.invalidRequest);break;case\"TPM_UNSPECIFIED\":case 0:t.invalidRequest=0;break;case\"TPM_APPEND_TRACE_DATA\":case 1:t.invalidRequest=1;break;case\"TPM_FINALIZE_TRACE_DATA\":case 2:t.invalidRequest=2;break;case\"TPM_QUERY_STREAMING\":case 3:t.invalidRequest=3;break;case\"TPM_COMPUTE_METRIC\":case 5:t.invalidRequest=5;break;case\"TPM_GET_METRIC_DESCRIPTORS\":case 6:t.invalidRequest=6;break;case\"TPM_RESTORE_INITIAL_TABLES\":case 7:t.invalidRequest=7;break;case\"TPM_ENABLE_METATRACE\":case 8:t.invalidRequest=8;break;case\"TPM_DISABLE_AND_READ_METATRACE\":case 9:t.invalidRequest=9;break;case\"TPM_GET_STATUS\":case 10:t.invalidRequest=10;break;case\"TPM_RESET_TRACE_PROCESSOR\":case 11:t.invalidRequest=11;break;case\"TPM_REGISTER_SQL_PACKAGE\":case 13:t.invalidRequest=13;break;case\"TPM_ANALYZE_STRUCTURED_QUERY\":case 14:t.invalidRequest=14;break;case\"TPM_SUMMARIZE_TRACE\":case 15:t.invalidRequest=15}if(null!=e.appendTraceData&&(\"string\"==typeof e.appendTraceData?i.base64.decode(e.appendTraceData,t.appendTraceData=i.newBuffer(i.base64.length(e.appendTraceData)),0):0<=e.appendTraceData.length&&(t.appendTraceData=e.appendTraceData)),null!=e.queryArgs){if(\"object\"!=typeof e.queryArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.queryArgs: object expected\");t.queryArgs=s.perfetto.protos.QueryArgs.fromObject(e.queryArgs)}if(null!=e.computeMetricArgs){if(\"object\"!=typeof e.computeMetricArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.computeMetricArgs: object expected\");t.computeMetricArgs=s.perfetto.protos.ComputeMetricArgs.fromObject(e.computeMetricArgs)}if(null!=e.enableMetatraceArgs){if(\"object\"!=typeof e.enableMetatraceArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.enableMetatraceArgs: object expected\");t.enableMetatraceArgs=s.perfetto.protos.EnableMetatraceArgs.fromObject(e.enableMetatraceArgs)}if(null!=e.resetTraceProcessorArgs){if(\"object\"!=typeof e.resetTraceProcessorArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.resetTraceProcessorArgs: object expected\");t.resetTraceProcessorArgs=s.perfetto.protos.ResetTraceProcessorArgs.fromObject(e.resetTraceProcessorArgs)}if(null!=e.registerSqlPackageArgs){if(\"object\"!=typeof e.registerSqlPackageArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.registerSqlPackageArgs: object expected\");t.registerSqlPackageArgs=s.perfetto.protos.RegisterSqlPackageArgs.fromObject(e.registerSqlPackageArgs)}if(null!=e.analyzeStructuredQueryArgs){if(\"object\"!=typeof e.analyzeStructuredQueryArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.analyzeStructuredQueryArgs: object expected\");t.analyzeStructuredQueryArgs=s.perfetto.protos.AnalyzeStructuredQueryArgs.fromObject(e.analyzeStructuredQueryArgs)}if(null!=e.traceSummaryArgs){if(\"object\"!=typeof e.traceSummaryArgs)throw TypeError(\".perfetto.protos.TraceProcessorRpc.traceSummaryArgs: object expected\");t.traceSummaryArgs=s.perfetto.protos.TraceSummaryArgs.fromObject(e.traceSummaryArgs)}if(null!=e.appendResult){if(\"object\"!=typeof e.appendResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.appendResult: object expected\");t.appendResult=s.perfetto.protos.AppendTraceDataResult.fromObject(e.appendResult)}if(null!=e.queryResult){if(\"object\"!=typeof e.queryResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.queryResult: object expected\");t.queryResult=s.perfetto.protos.QueryResult.fromObject(e.queryResult)}if(null!=e.metricResult){if(\"object\"!=typeof e.metricResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.metricResult: object expected\");t.metricResult=s.perfetto.protos.ComputeMetricResult.fromObject(e.metricResult)}if(null!=e.metricDescriptors){if(\"object\"!=typeof e.metricDescriptors)throw TypeError(\".perfetto.protos.TraceProcessorRpc.metricDescriptors: object expected\");t.metricDescriptors=s.perfetto.protos.DescriptorSet.fromObject(e.metricDescriptors)}if(null!=e.metatrace){if(\"object\"!=typeof e.metatrace)throw TypeError(\".perfetto.protos.TraceProcessorRpc.metatrace: object expected\");t.metatrace=s.perfetto.protos.DisableAndReadMetatraceResult.fromObject(e.metatrace)}if(null!=e.status){if(\"object\"!=typeof e.status)throw TypeError(\".perfetto.protos.TraceProcessorRpc.status: object expected\");t.status=s.perfetto.protos.StatusResult.fromObject(e.status)}if(null!=e.registerSqlPackageResult){if(\"object\"!=typeof e.registerSqlPackageResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.registerSqlPackageResult: object expected\");t.registerSqlPackageResult=s.perfetto.protos.RegisterSqlPackageResult.fromObject(e.registerSqlPackageResult)}if(null!=e.finalizeDataResult){if(\"object\"!=typeof e.finalizeDataResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.finalizeDataResult: object expected\");t.finalizeDataResult=s.perfetto.protos.FinalizeDataResult.fromObject(e.finalizeDataResult)}if(null!=e.analyzeStructuredQueryResult){if(\"object\"!=typeof e.analyzeStructuredQueryResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.analyzeStructuredQueryResult: object expected\");t.analyzeStructuredQueryResult=s.perfetto.protos.AnalyzeStructuredQueryResult.fromObject(e.analyzeStructuredQueryResult)}if(null!=e.traceSummaryResult){if(\"object\"!=typeof e.traceSummaryResult)throw TypeError(\".perfetto.protos.TraceProcessorRpc.traceSummaryResult: object expected\");t.traceSummaryResult=s.perfetto.protos.TraceSummaryResult.fromObject(e.traceSummaryResult)}return t},N.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!1),n.seq=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.seq=t.longs===String?\"0\":0,n.fatalError=\"\"),null!=e.seq&&e.hasOwnProperty(\"seq\")&&(\"number\"==typeof e.seq?n.seq=t.longs===String?String(e.seq):e.seq:n.seq=t.longs===String?i.Long.prototype.toString.call(e.seq):t.longs===Number?new i.LongBits(e.seq.low>>>0,e.seq.high>>>0).toNumber():e.seq),null!=e.request&&e.hasOwnProperty(\"request\")&&(n.request=t.enums!==String||void 0===s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.request]?e.request:s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.request],t.oneofs)&&(n.type=\"request\"),null!=e.response&&e.hasOwnProperty(\"response\")&&(n.response=t.enums!==String||void 0===s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.response]?e.response:s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.response],t.oneofs)&&(n.type=\"response\"),null!=e.invalidRequest&&e.hasOwnProperty(\"invalidRequest\")&&(n.invalidRequest=t.enums!==String||void 0===s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.invalidRequest]?e.invalidRequest:s.perfetto.protos.TraceProcessorRpc.TraceProcessorMethod[e.invalidRequest],t.oneofs)&&(n.type=\"invalidRequest\"),null!=e.fatalError&&e.hasOwnProperty(\"fatalError\")&&(n.fatalError=e.fatalError),null!=e.appendTraceData&&e.hasOwnProperty(\"appendTraceData\")&&(n.appendTraceData=t.bytes===String?i.base64.encode(e.appendTraceData,0,e.appendTraceData.length):t.bytes===Array?Array.prototype.slice.call(e.appendTraceData):e.appendTraceData,t.oneofs)&&(n.args=\"appendTraceData\"),null!=e.queryArgs&&e.hasOwnProperty(\"queryArgs\")&&(n.queryArgs=s.perfetto.protos.QueryArgs.toObject(e.queryArgs,t),t.oneofs)&&(n.args=\"queryArgs\"),null!=e.computeMetricArgs&&e.hasOwnProperty(\"computeMetricArgs\")&&(n.computeMetricArgs=s.perfetto.protos.ComputeMetricArgs.toObject(e.computeMetricArgs,t),t.oneofs)&&(n.args=\"computeMetricArgs\"),null!=e.enableMetatraceArgs&&e.hasOwnProperty(\"enableMetatraceArgs\")&&(n.enableMetatraceArgs=s.perfetto.protos.EnableMetatraceArgs.toObject(e.enableMetatraceArgs,t),t.oneofs)&&(n.args=\"enableMetatraceArgs\"),null!=e.resetTraceProcessorArgs&&e.hasOwnProperty(\"resetTraceProcessorArgs\")&&(n.resetTraceProcessorArgs=s.perfetto.protos.ResetTraceProcessorArgs.toObject(e.resetTraceProcessorArgs,t),t.oneofs)&&(n.args=\"resetTraceProcessorArgs\"),null!=e.registerSqlPackageArgs&&e.hasOwnProperty(\"registerSqlPackageArgs\")&&(n.registerSqlPackageArgs=s.perfetto.protos.RegisterSqlPackageArgs.toObject(e.registerSqlPackageArgs,t),t.oneofs)&&(n.args=\"registerSqlPackageArgs\"),null!=e.analyzeStructuredQueryArgs&&e.hasOwnProperty(\"analyzeStructuredQueryArgs\")&&(n.analyzeStructuredQueryArgs=s.perfetto.protos.AnalyzeStructuredQueryArgs.toObject(e.analyzeStructuredQueryArgs,t),t.oneofs)&&(n.args=\"analyzeStructuredQueryArgs\"),null!=e.traceSummaryArgs&&e.hasOwnProperty(\"traceSummaryArgs\")&&(n.traceSummaryArgs=s.perfetto.protos.TraceSummaryArgs.toObject(e.traceSummaryArgs,t),t.oneofs)&&(n.args=\"traceSummaryArgs\"),null!=e.appendResult&&e.hasOwnProperty(\"appendResult\")&&(n.appendResult=s.perfetto.protos.AppendTraceDataResult.toObject(e.appendResult,t),t.oneofs)&&(n.args=\"appendResult\"),null!=e.queryResult&&e.hasOwnProperty(\"queryResult\")&&(n.queryResult=s.perfetto.protos.QueryResult.toObject(e.queryResult,t),t.oneofs)&&(n.args=\"queryResult\"),null!=e.metricResult&&e.hasOwnProperty(\"metricResult\")&&(n.metricResult=s.perfetto.protos.ComputeMetricResult.toObject(e.metricResult,t),t.oneofs)&&(n.args=\"metricResult\"),null!=e.metricDescriptors&&e.hasOwnProperty(\"metricDescriptors\")&&(n.metricDescriptors=s.perfetto.protos.DescriptorSet.toObject(e.metricDescriptors,t),t.oneofs)&&(n.args=\"metricDescriptors\"),null!=e.metatrace&&e.hasOwnProperty(\"metatrace\")&&(n.metatrace=s.perfetto.protos.DisableAndReadMetatraceResult.toObject(e.metatrace,t),t.oneofs)&&(n.args=\"metatrace\"),null!=e.status&&e.hasOwnProperty(\"status\")&&(n.status=s.perfetto.protos.StatusResult.toObject(e.status,t),t.oneofs)&&(n.args=\"status\"),null!=e.registerSqlPackageResult&&e.hasOwnProperty(\"registerSqlPackageResult\")&&(n.registerSqlPackageResult=s.perfetto.protos.RegisterSqlPackageResult.toObject(e.registerSqlPackageResult,t),t.oneofs)&&(n.args=\"registerSqlPackageResult\"),null!=e.finalizeDataResult&&e.hasOwnProperty(\"finalizeDataResult\")&&(n.finalizeDataResult=s.perfetto.protos.FinalizeDataResult.toObject(e.finalizeDataResult,t),t.oneofs)&&(n.args=\"finalizeDataResult\"),null!=e.analyzeStructuredQueryResult&&e.hasOwnProperty(\"analyzeStructuredQueryResult\")&&(n.analyzeStructuredQueryResult=s.perfetto.protos.AnalyzeStructuredQueryResult.toObject(e.analyzeStructuredQueryResult,t),t.oneofs)&&(n.args=\"analyzeStructuredQueryResult\"),null!=e.traceSummaryResult&&e.hasOwnProperty(\"traceSummaryResult\")&&(n.traceSummaryResult=s.perfetto.protos.TraceSummaryResult.toObject(e.traceSummaryResult,t),t.oneofs)&&(n.args=\"traceSummaryResult\"),n},N.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},N.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceProcessorRpc\"},N.TraceProcessorMethod=(e={},(t=Object.create(e))[e[0]=\"TPM_UNSPECIFIED\"]=0,t[e[1]=\"TPM_APPEND_TRACE_DATA\"]=1,t[e[2]=\"TPM_FINALIZE_TRACE_DATA\"]=2,t[e[3]=\"TPM_QUERY_STREAMING\"]=3,t[e[5]=\"TPM_COMPUTE_METRIC\"]=5,t[e[6]=\"TPM_GET_METRIC_DESCRIPTORS\"]=6,t[e[7]=\"TPM_RESTORE_INITIAL_TABLES\"]=7,t[e[8]=\"TPM_ENABLE_METATRACE\"]=8,t[e[9]=\"TPM_DISABLE_AND_READ_METATRACE\"]=9,t[e[10]=\"TPM_GET_STATUS\"]=10,t[e[11]=\"TPM_RESET_TRACE_PROCESSOR\"]=11,t[e[13]=\"TPM_REGISTER_SQL_PACKAGE\"]=13,t[e[14]=\"TPM_ANALYZE_STRUCTURED_QUERY\"]=14,t[e[15]=\"TPM_SUMMARIZE_TRACE\"]=15,t),N),r.AppendTraceDataResult=(ir.prototype.totalBytesParsed=i.Long?i.Long.fromBits(0,0,!1):0,ir.prototype.error=\"\",ir.create=function(e){return new ir(e)},ir.encode=function(e,t){return t=t||a.create(),null!=e.totalBytesParsed&&Object.hasOwnProperty.call(e,\"totalBytesParsed\")&&t.uint32(8).int64(e.totalBytesParsed),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(18).string(e.error),t},ir.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AppendTraceDataResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.totalBytesParsed=e.int64();break;case 2:n.error=e.string();break;default:e.skipType(7&a)}}return n},ir.fromObject=function(e){var t;return e instanceof s.perfetto.protos.AppendTraceDataResult?e:(t=new s.perfetto.protos.AppendTraceDataResult,null!=e.totalBytesParsed&&(i.Long?(t.totalBytesParsed=i.Long.fromValue(e.totalBytesParsed)).unsigned=!1:\"string\"==typeof e.totalBytesParsed?t.totalBytesParsed=parseInt(e.totalBytesParsed,10):\"number\"==typeof e.totalBytesParsed?t.totalBytesParsed=e.totalBytesParsed:\"object\"==typeof e.totalBytesParsed&&(t.totalBytesParsed=new i.LongBits(e.totalBytesParsed.low>>>0,e.totalBytesParsed.high>>>0).toNumber())),null!=e.error&&(t.error=String(e.error)),t)},ir.toObject=function(e,t){var r,n={};return(t=t||{}).defaults&&(i.Long?(r=new i.Long(0,0,!1),n.totalBytesParsed=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.totalBytesParsed=t.longs===String?\"0\":0,n.error=\"\"),null!=e.totalBytesParsed&&e.hasOwnProperty(\"totalBytesParsed\")&&(\"number\"==typeof e.totalBytesParsed?n.totalBytesParsed=t.longs===String?String(e.totalBytesParsed):e.totalBytesParsed:n.totalBytesParsed=t.longs===String?i.Long.prototype.toString.call(e.totalBytesParsed):t.longs===Number?new i.LongBits(e.totalBytesParsed.low>>>0,e.totalBytesParsed.high>>>0).toNumber():e.totalBytesParsed),null!=e.error&&e.hasOwnProperty(\"error\")&&(n.error=e.error),n},ir.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ir.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AppendTraceDataResult\"},ir),r.QueryArgs=(or.prototype.sqlQuery=\"\",or.prototype.tag=\"\",or.create=function(e){return new or(e)},or.encode=function(e,t){return t=t||a.create(),null!=e.sqlQuery&&Object.hasOwnProperty.call(e,\"sqlQuery\")&&t.uint32(10).string(e.sqlQuery),null!=e.tag&&Object.hasOwnProperty.call(e,\"tag\")&&t.uint32(26).string(e.tag),t},or.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryArgs;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sqlQuery=e.string();break;case 3:n.tag=e.string();break;default:e.skipType(7&a)}}return n},or.fromObject=function(e){var t;return e instanceof s.perfetto.protos.QueryArgs?e:(t=new s.perfetto.protos.QueryArgs,null!=e.sqlQuery&&(t.sqlQuery=String(e.sqlQuery)),null!=e.tag&&(t.tag=String(e.tag)),t)},or.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.sqlQuery=\"\",r.tag=\"\"),null!=e.sqlQuery&&e.hasOwnProperty(\"sqlQuery\")&&(r.sqlQuery=e.sqlQuery),null!=e.tag&&e.hasOwnProperty(\"tag\")&&(r.tag=e.tag),r},or.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},or.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryArgs\"},or),r.QueryResult=(sr.prototype.columnNames=i.emptyArray,sr.prototype.error=\"\",sr.prototype.batch=i.emptyArray,sr.prototype.statementCount=0,sr.prototype.statementWithOutputCount=0,sr.prototype.lastStatementSql=\"\",sr.create=function(e){return new sr(e)},sr.encode=function(e,t){if(t=t||a.create(),null!=e.columnNames&&e.columnNames.length)for(var r=0;r<e.columnNames.length;++r)t.uint32(10).string(e.columnNames[r]);if(null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(18).string(e.error),null!=e.batch&&e.batch.length)for(r=0;r<e.batch.length;++r)s.perfetto.protos.QueryResult.CellsBatch.encode(e.batch[r],t.uint32(26).fork()).ldelim();return null!=e.statementCount&&Object.hasOwnProperty.call(e,\"statementCount\")&&t.uint32(32).uint32(e.statementCount),null!=e.statementWithOutputCount&&Object.hasOwnProperty.call(e,\"statementWithOutputCount\")&&t.uint32(40).uint32(e.statementWithOutputCount),null!=e.lastStatementSql&&Object.hasOwnProperty.call(e,\"lastStatementSql\")&&t.uint32(50).string(e.lastStatementSql),t},sr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.columnNames&&n.columnNames.length||(n.columnNames=[]),n.columnNames.push(e.string());break;case 2:n.error=e.string();break;case 3:n.batch&&n.batch.length||(n.batch=[]),n.batch.push(s.perfetto.protos.QueryResult.CellsBatch.decode(e,e.uint32()));break;case 4:n.statementCount=e.uint32();break;case 5:n.statementWithOutputCount=e.uint32();break;case 6:n.lastStatementSql=e.string();break;default:e.skipType(7&a)}}return n},sr.fromObject=function(e){if(e instanceof s.perfetto.protos.QueryResult)return e;var t=new s.perfetto.protos.QueryResult;if(e.columnNames){if(!Array.isArray(e.columnNames))throw TypeError(\".perfetto.protos.QueryResult.columnNames: array expected\");t.columnNames=[];for(var r=0;r<e.columnNames.length;++r)t.columnNames[r]=String(e.columnNames[r])}if(null!=e.error&&(t.error=String(e.error)),e.batch){if(!Array.isArray(e.batch))throw TypeError(\".perfetto.protos.QueryResult.batch: array expected\");t.batch=[];for(r=0;r<e.batch.length;++r){if(\"object\"!=typeof e.batch[r])throw TypeError(\".perfetto.protos.QueryResult.batch: object expected\");t.batch[r]=s.perfetto.protos.QueryResult.CellsBatch.fromObject(e.batch[r])}}return null!=e.statementCount&&(t.statementCount=e.statementCount>>>0),null!=e.statementWithOutputCount&&(t.statementWithOutputCount=e.statementWithOutputCount>>>0),null!=e.lastStatementSql&&(t.lastStatementSql=String(e.lastStatementSql)),t},sr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.columnNames=[],r.batch=[]),t.defaults&&(r.error=\"\",r.statementCount=0,r.statementWithOutputCount=0,r.lastStatementSql=\"\"),e.columnNames&&e.columnNames.length){r.columnNames=[];for(var n=0;n<e.columnNames.length;++n)r.columnNames[n]=e.columnNames[n]}if(null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),e.batch&&e.batch.length){r.batch=[];for(n=0;n<e.batch.length;++n)r.batch[n]=s.perfetto.protos.QueryResult.CellsBatch.toObject(e.batch[n],t)}return null!=e.statementCount&&e.hasOwnProperty(\"statementCount\")&&(r.statementCount=e.statementCount),null!=e.statementWithOutputCount&&e.hasOwnProperty(\"statementWithOutputCount\")&&(r.statementWithOutputCount=e.statementWithOutputCount),null!=e.lastStatementSql&&e.hasOwnProperty(\"lastStatementSql\")&&(r.lastStatementSql=e.lastStatementSql),r},sr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},sr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryResult\"},sr.CellsBatch=(lr.prototype.cells=i.emptyArray,lr.prototype.varintCells=i.emptyArray,lr.prototype.float64Cells=i.emptyArray,lr.prototype.blobCells=i.emptyArray,lr.prototype.stringCells=\"\",lr.prototype.isLastBatch=!1,lr.create=function(e){return new lr(e)},lr.encode=function(e,t){if(t=t||a.create(),null!=e.cells&&e.cells.length){t.uint32(10).fork();for(var r=0;r<e.cells.length;++r)t.int32(e.cells[r]);t.ldelim()}if(null!=e.varintCells&&e.varintCells.length){t.uint32(18).fork();for(r=0;r<e.varintCells.length;++r)t.int64(e.varintCells[r]);t.ldelim()}if(null!=e.float64Cells&&e.float64Cells.length){t.uint32(26).fork();for(r=0;r<e.float64Cells.length;++r)t.double(e.float64Cells[r]);t.ldelim()}if(null!=e.blobCells&&e.blobCells.length)for(r=0;r<e.blobCells.length;++r)t.uint32(34).bytes(e.blobCells[r]);return null!=e.stringCells&&Object.hasOwnProperty.call(e,\"stringCells\")&&t.uint32(42).string(e.stringCells),null!=e.isLastBatch&&Object.hasOwnProperty.call(e,\"isLastBatch\")&&t.uint32(48).bool(e.isLastBatch),t},lr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.QueryResult.CellsBatch;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:if(n.cells&&n.cells.length||(n.cells=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.cells.push(e.int32());else n.cells.push(e.int32());break;case 2:if(n.varintCells&&n.varintCells.length||(n.varintCells=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.varintCells.push(e.int64());else n.varintCells.push(e.int64());break;case 3:if(n.float64Cells&&n.float64Cells.length||(n.float64Cells=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.float64Cells.push(e.double());else n.float64Cells.push(e.double());break;case 4:n.blobCells&&n.blobCells.length||(n.blobCells=[]),n.blobCells.push(e.bytes());break;case 5:n.stringCells=e.string();break;case 6:n.isLastBatch=e.bool();break;default:e.skipType(7&a)}}return n},lr.fromObject=function(e){if(e instanceof s.perfetto.protos.QueryResult.CellsBatch)return e;var t=new s.perfetto.protos.QueryResult.CellsBatch;if(e.cells){if(!Array.isArray(e.cells))throw TypeError(\".perfetto.protos.QueryResult.CellsBatch.cells: array expected\");t.cells=[];for(var r=0;r<e.cells.length;++r)switch(e.cells[r]){default:if(\"number\"==typeof e.cells[r]){t.cells[r]=e.cells[r];break}case\"CELL_INVALID\":case 0:t.cells[r]=0;break;case\"CELL_NULL\":case 1:t.cells[r]=1;break;case\"CELL_VARINT\":case 2:t.cells[r]=2;break;case\"CELL_FLOAT64\":case 3:t.cells[r]=3;break;case\"CELL_STRING\":case 4:t.cells[r]=4;break;case\"CELL_BLOB\":case 5:t.cells[r]=5}}if(e.varintCells){if(!Array.isArray(e.varintCells))throw TypeError(\".perfetto.protos.QueryResult.CellsBatch.varintCells: array expected\");t.varintCells=[];for(r=0;r<e.varintCells.length;++r)i.Long?(t.varintCells[r]=i.Long.fromValue(e.varintCells[r])).unsigned=!1:\"string\"==typeof e.varintCells[r]?t.varintCells[r]=parseInt(e.varintCells[r],10):\"number\"==typeof e.varintCells[r]?t.varintCells[r]=e.varintCells[r]:\"object\"==typeof e.varintCells[r]&&(t.varintCells[r]=new i.LongBits(e.varintCells[r].low>>>0,e.varintCells[r].high>>>0).toNumber())}if(e.float64Cells){if(!Array.isArray(e.float64Cells))throw TypeError(\".perfetto.protos.QueryResult.CellsBatch.float64Cells: array expected\");t.float64Cells=[];for(r=0;r<e.float64Cells.length;++r)t.float64Cells[r]=Number(e.float64Cells[r])}if(e.blobCells){if(!Array.isArray(e.blobCells))throw TypeError(\".perfetto.protos.QueryResult.CellsBatch.blobCells: array expected\");t.blobCells=[];for(r=0;r<e.blobCells.length;++r)\"string\"==typeof e.blobCells[r]?i.base64.decode(e.blobCells[r],t.blobCells[r]=i.newBuffer(i.base64.length(e.blobCells[r])),0):0<=e.blobCells[r].length&&(t.blobCells[r]=e.blobCells[r])}return null!=e.stringCells&&(t.stringCells=String(e.stringCells)),null!=e.isLastBatch&&(t.isLastBatch=Boolean(e.isLastBatch)),t},lr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.cells=[],r.varintCells=[],r.float64Cells=[],r.blobCells=[]),t.defaults&&(r.stringCells=\"\",r.isLastBatch=!1),e.cells&&e.cells.length){r.cells=[];for(var n=0;n<e.cells.length;++n)r.cells[n]=t.enums!==String||void 0===s.perfetto.protos.QueryResult.CellsBatch.CellType[e.cells[n]]?e.cells[n]:s.perfetto.protos.QueryResult.CellsBatch.CellType[e.cells[n]]}if(e.varintCells&&e.varintCells.length){r.varintCells=[];for(n=0;n<e.varintCells.length;++n)\"number\"==typeof e.varintCells[n]?r.varintCells[n]=t.longs===String?String(e.varintCells[n]):e.varintCells[n]:r.varintCells[n]=t.longs===String?i.Long.prototype.toString.call(e.varintCells[n]):t.longs===Number?new i.LongBits(e.varintCells[n].low>>>0,e.varintCells[n].high>>>0).toNumber():e.varintCells[n]}if(e.float64Cells&&e.float64Cells.length){r.float64Cells=[];for(n=0;n<e.float64Cells.length;++n)r.float64Cells[n]=t.json&&!isFinite(e.float64Cells[n])?String(e.float64Cells[n]):e.float64Cells[n]}if(e.blobCells&&e.blobCells.length){r.blobCells=[];for(n=0;n<e.blobCells.length;++n)r.blobCells[n]=t.bytes===String?i.base64.encode(e.blobCells[n],0,e.blobCells[n].length):t.bytes===Array?Array.prototype.slice.call(e.blobCells[n]):e.blobCells[n]}return null!=e.stringCells&&e.hasOwnProperty(\"stringCells\")&&(r.stringCells=e.stringCells),null!=e.isLastBatch&&e.hasOwnProperty(\"isLastBatch\")&&(r.isLastBatch=e.isLastBatch),r},lr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},lr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.QueryResult.CellsBatch\"},lr.CellType=(e={},(t=Object.create(e))[e[0]=\"CELL_INVALID\"]=0,t[e[1]=\"CELL_NULL\"]=1,t[e[2]=\"CELL_VARINT\"]=2,t[e[3]=\"CELL_FLOAT64\"]=3,t[e[4]=\"CELL_STRING\"]=4,t[e[5]=\"CELL_BLOB\"]=5,t),lr),sr),r.StatusArgs=(cr.create=function(e){return new cr(e)},cr.encode=function(e,t){return t=t||a.create()},cr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.StatusArgs;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},cr.fromObject=function(e){return e instanceof s.perfetto.protos.StatusArgs?e:new s.perfetto.protos.StatusArgs},cr.toObject=function(){return{}},cr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},cr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StatusArgs\"},cr),r.StatusResult=(ur.prototype.loadedTraceName=\"\",ur.prototype.humanReadableVersion=\"\",ur.prototype.apiVersion=0,ur.prototype.versionCode=\"\",ur.create=function(e){return new ur(e)},ur.encode=function(e,t){return t=t||a.create(),null!=e.loadedTraceName&&Object.hasOwnProperty.call(e,\"loadedTraceName\")&&t.uint32(10).string(e.loadedTraceName),null!=e.humanReadableVersion&&Object.hasOwnProperty.call(e,\"humanReadableVersion\")&&t.uint32(18).string(e.humanReadableVersion),null!=e.apiVersion&&Object.hasOwnProperty.call(e,\"apiVersion\")&&t.uint32(24).int32(e.apiVersion),null!=e.versionCode&&Object.hasOwnProperty.call(e,\"versionCode\")&&t.uint32(34).string(e.versionCode),t},ur.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.StatusResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.loadedTraceName=e.string();break;case 2:n.humanReadableVersion=e.string();break;case 3:n.apiVersion=e.int32();break;case 4:n.versionCode=e.string();break;default:e.skipType(7&a)}}return n},ur.fromObject=function(e){var t;return e instanceof s.perfetto.protos.StatusResult?e:(t=new s.perfetto.protos.StatusResult,null!=e.loadedTraceName&&(t.loadedTraceName=String(e.loadedTraceName)),null!=e.humanReadableVersion&&(t.humanReadableVersion=String(e.humanReadableVersion)),null!=e.apiVersion&&(t.apiVersion=0|e.apiVersion),null!=e.versionCode&&(t.versionCode=String(e.versionCode)),t)},ur.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.loadedTraceName=\"\",r.humanReadableVersion=\"\",r.apiVersion=0,r.versionCode=\"\"),null!=e.loadedTraceName&&e.hasOwnProperty(\"loadedTraceName\")&&(r.loadedTraceName=e.loadedTraceName),null!=e.humanReadableVersion&&e.hasOwnProperty(\"humanReadableVersion\")&&(r.humanReadableVersion=e.humanReadableVersion),null!=e.apiVersion&&e.hasOwnProperty(\"apiVersion\")&&(r.apiVersion=e.apiVersion),null!=e.versionCode&&e.hasOwnProperty(\"versionCode\")&&(r.versionCode=e.versionCode),r},ur.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},ur.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.StatusResult\"},ur),r.ComputeMetricArgs=(dr.prototype.metricNames=i.emptyArray,dr.prototype.format=0,dr.create=function(e){return new dr(e)},dr.encode=function(e,t){if(t=t||a.create(),null!=e.metricNames&&e.metricNames.length)for(var r=0;r<e.metricNames.length;++r)t.uint32(10).string(e.metricNames[r]);return null!=e.format&&Object.hasOwnProperty.call(e,\"format\")&&t.uint32(16).int32(e.format),t},dr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ComputeMetricArgs;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.metricNames&&n.metricNames.length||(n.metricNames=[]),n.metricNames.push(e.string());break;case 2:n.format=e.int32();break;default:e.skipType(7&a)}}return n},dr.fromObject=function(e){if(e instanceof s.perfetto.protos.ComputeMetricArgs)return e;var t=new s.perfetto.protos.ComputeMetricArgs;if(e.metricNames){if(!Array.isArray(e.metricNames))throw TypeError(\".perfetto.protos.ComputeMetricArgs.metricNames: array expected\");t.metricNames=[];for(var r=0;r<e.metricNames.length;++r)t.metricNames[r]=String(e.metricNames[r])}switch(e.format){default:\"number\"==typeof e.format&&(t.format=e.format);break;case\"BINARY_PROTOBUF\":case 0:t.format=0;break;case\"TEXTPROTO\":case 1:t.format=1;break;case\"JSON\":case 2:t.format=2}return t},dr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.metricNames=[]),t.defaults&&(r.format=t.enums===String?\"BINARY_PROTOBUF\":0),e.metricNames&&e.metricNames.length){r.metricNames=[];for(var n=0;n<e.metricNames.length;++n)r.metricNames[n]=e.metricNames[n]}return null!=e.format&&e.hasOwnProperty(\"format\")&&(r.format=t.enums!==String||void 0===s.perfetto.protos.ComputeMetricArgs.ResultFormat[e.format]?e.format:s.perfetto.protos.ComputeMetricArgs.ResultFormat[e.format]),r},dr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},dr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ComputeMetricArgs\"},dr.ResultFormat=(e={},(t=Object.create(e))[e[0]=\"BINARY_PROTOBUF\"]=0,t[e[1]=\"TEXTPROTO\"]=1,t[e[2]=\"JSON\"]=2,t),dr),r.ComputeMetricResult=(pr.prototype.metrics=null,pr.prototype.metricsAsPrototext=null,pr.prototype.metricsAsJson=null,pr.prototype.error=\"\",Object.defineProperty(pr.prototype,\"result\",{get:i.oneOfGetter(e=[\"metrics\",\"metricsAsPrototext\",\"metricsAsJson\"]),set:i.oneOfSetter(e)}),pr.create=function(e){return new pr(e)},pr.encode=function(e,t){return t=t||a.create(),null!=e.metrics&&Object.hasOwnProperty.call(e,\"metrics\")&&t.uint32(10).bytes(e.metrics),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(18).string(e.error),null!=e.metricsAsPrototext&&Object.hasOwnProperty.call(e,\"metricsAsPrototext\")&&t.uint32(26).string(e.metricsAsPrototext),null!=e.metricsAsJson&&Object.hasOwnProperty.call(e,\"metricsAsJson\")&&t.uint32(34).string(e.metricsAsJson),t},pr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ComputeMetricResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.metrics=e.bytes();break;case 3:n.metricsAsPrototext=e.string();break;case 4:n.metricsAsJson=e.string();break;case 2:n.error=e.string();break;default:e.skipType(7&a)}}return n},pr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.ComputeMetricResult?e:(t=new s.perfetto.protos.ComputeMetricResult,null!=e.metrics&&(\"string\"==typeof e.metrics?i.base64.decode(e.metrics,t.metrics=i.newBuffer(i.base64.length(e.metrics)),0):0<=e.metrics.length&&(t.metrics=e.metrics)),null!=e.metricsAsPrototext&&(t.metricsAsPrototext=String(e.metricsAsPrototext)),null!=e.metricsAsJson&&(t.metricsAsJson=String(e.metricsAsJson)),null!=e.error&&(t.error=String(e.error)),t)},pr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.metrics&&e.hasOwnProperty(\"metrics\")&&(r.metrics=t.bytes===String?i.base64.encode(e.metrics,0,e.metrics.length):t.bytes===Array?Array.prototype.slice.call(e.metrics):e.metrics,t.oneofs)&&(r.result=\"metrics\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),null!=e.metricsAsPrototext&&e.hasOwnProperty(\"metricsAsPrototext\")&&(r.metricsAsPrototext=e.metricsAsPrototext,t.oneofs)&&(r.result=\"metricsAsPrototext\"),null!=e.metricsAsJson&&e.hasOwnProperty(\"metricsAsJson\")&&(r.metricsAsJson=e.metricsAsJson,t.oneofs)&&(r.result=\"metricsAsJson\"),r},pr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},pr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ComputeMetricResult\"},pr),r.EnableMetatraceArgs=(fr.prototype.categories=1,fr.create=function(e){return new fr(e)},fr.encode=function(e,t){return t=t||a.create(),null!=e.categories&&Object.hasOwnProperty.call(e,\"categories\")&&t.uint32(8).int32(e.categories),t},fr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EnableMetatraceArgs;e.pos<r;){var a=e.uint32();a>>>3==1?n.categories=e.int32():e.skipType(7&a)}return n},fr.fromObject=function(e){if(e instanceof s.perfetto.protos.EnableMetatraceArgs)return e;var t=new s.perfetto.protos.EnableMetatraceArgs;switch(e.categories){default:\"number\"==typeof e.categories&&(t.categories=e.categories);break;case\"QUERY_TIMELINE\":case 1:t.categories=1;break;case\"QUERY_DETAILED\":case 2:t.categories=2;break;case\"FUNCTION_CALL\":case 4:t.categories=4;break;case\"DB\":case 8:t.categories=8;break;case\"API_TIMELINE\":case 16:t.categories=16;break;case\"NONE\":case 0:t.categories=0;break;case\"ALL\":case 31:t.categories=31}return t},fr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.categories=t.enums===String?\"QUERY_TIMELINE\":1),null!=e.categories&&e.hasOwnProperty(\"categories\")&&(r.categories=t.enums!==String||void 0===s.perfetto.protos.MetatraceCategories[e.categories]?e.categories:s.perfetto.protos.MetatraceCategories[e.categories]),r},fr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},fr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnableMetatraceArgs\"},fr),r.EnableMetatraceResult=(hr.create=function(e){return new hr(e)},hr.encode=function(e,t){return t=t||a.create()},hr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.EnableMetatraceResult;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},hr.fromObject=function(e){return e instanceof s.perfetto.protos.EnableMetatraceResult?e:new s.perfetto.protos.EnableMetatraceResult},hr.toObject=function(){return{}},hr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},hr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnableMetatraceResult\"},hr),r.DisableAndReadMetatraceArgs=(mr.create=function(e){return new mr(e)},mr.encode=function(e,t){return t=t||a.create()},mr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.DisableAndReadMetatraceArgs;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},mr.fromObject=function(e){return e instanceof s.perfetto.protos.DisableAndReadMetatraceArgs?e:new s.perfetto.protos.DisableAndReadMetatraceArgs},mr.toObject=function(){return{}},mr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},mr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DisableAndReadMetatraceArgs\"},mr),r.DisableAndReadMetatraceResult=(gr.prototype.metatrace=i.newBuffer([]),gr.prototype.error=\"\",gr.create=function(e){return new gr(e)},gr.encode=function(e,t){return t=t||a.create(),null!=e.metatrace&&Object.hasOwnProperty.call(e,\"metatrace\")&&t.uint32(10).bytes(e.metatrace),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(18).string(e.error),t},gr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DisableAndReadMetatraceResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.metatrace=e.bytes();break;case 2:n.error=e.string();break;default:e.skipType(7&a)}}return n},gr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.DisableAndReadMetatraceResult?e:(t=new s.perfetto.protos.DisableAndReadMetatraceResult,null!=e.metatrace&&(\"string\"==typeof e.metatrace?i.base64.decode(e.metatrace,t.metatrace=i.newBuffer(i.base64.length(e.metatrace)),0):0<=e.metatrace.length&&(t.metatrace=e.metatrace)),null!=e.error&&(t.error=String(e.error)),t)},gr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(t.bytes===String?r.metatrace=\"\":(r.metatrace=[],t.bytes!==Array&&(r.metatrace=i.newBuffer(r.metatrace))),r.error=\"\"),null!=e.metatrace&&e.hasOwnProperty(\"metatrace\")&&(r.metatrace=t.bytes===String?i.base64.encode(e.metatrace,0,e.metatrace.length):t.bytes===Array?Array.prototype.slice.call(e.metatrace):e.metatrace),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},gr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},gr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DisableAndReadMetatraceResult\"},gr),r.DescriptorSet=(_r.prototype.descriptors=i.emptyArray,_r.create=function(e){return new _r(e)},_r.encode=function(e,t){if(t=t||a.create(),null!=e.descriptors&&e.descriptors.length)for(var r=0;r<e.descriptors.length;++r)s.perfetto.protos.DescriptorProto.encode(e.descriptors[r],t.uint32(10).fork()).ldelim();return t},_r.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DescriptorSet;e.pos<r;){var a=e.uint32();a>>>3==1?(n.descriptors&&n.descriptors.length||(n.descriptors=[]),n.descriptors.push(s.perfetto.protos.DescriptorProto.decode(e,e.uint32()))):e.skipType(7&a)}return n},_r.fromObject=function(e){if(e instanceof s.perfetto.protos.DescriptorSet)return e;var t=new s.perfetto.protos.DescriptorSet;if(e.descriptors){if(!Array.isArray(e.descriptors))throw TypeError(\".perfetto.protos.DescriptorSet.descriptors: array expected\");t.descriptors=[];for(var r=0;r<e.descriptors.length;++r){if(\"object\"!=typeof e.descriptors[r])throw TypeError(\".perfetto.protos.DescriptorSet.descriptors: object expected\");t.descriptors[r]=s.perfetto.protos.DescriptorProto.fromObject(e.descriptors[r])}}return t},_r.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.descriptors=[]),e.descriptors&&e.descriptors.length){r.descriptors=[];for(var n=0;n<e.descriptors.length;++n)r.descriptors[n]=s.perfetto.protos.DescriptorProto.toObject(e.descriptors[n],t)}return r},_r.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},_r.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DescriptorSet\"},_r),r.ResetTraceProcessorArgs=(yr.prototype.dropTrackEventDataBefore=0,yr.prototype.ingestFtraceInRawTable=!1,yr.prototype.analyzeTraceProtoContent=!1,yr.prototype.ftraceDropUntilAllCpusValid=!1,yr.prototype.parsingMode=0,yr.create=function(e){return new yr(e)},yr.encode=function(e,t){return t=t||a.create(),null!=e.dropTrackEventDataBefore&&Object.hasOwnProperty.call(e,\"dropTrackEventDataBefore\")&&t.uint32(8).int32(e.dropTrackEventDataBefore),null!=e.ingestFtraceInRawTable&&Object.hasOwnProperty.call(e,\"ingestFtraceInRawTable\")&&t.uint32(16).bool(e.ingestFtraceInRawTable),null!=e.analyzeTraceProtoContent&&Object.hasOwnProperty.call(e,\"analyzeTraceProtoContent\")&&t.uint32(24).bool(e.analyzeTraceProtoContent),null!=e.ftraceDropUntilAllCpusValid&&Object.hasOwnProperty.call(e,\"ftraceDropUntilAllCpusValid\")&&t.uint32(32).bool(e.ftraceDropUntilAllCpusValid),null!=e.parsingMode&&Object.hasOwnProperty.call(e,\"parsingMode\")&&t.uint32(40).int32(e.parsingMode),t},yr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.ResetTraceProcessorArgs;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.dropTrackEventDataBefore=e.int32();break;case 2:n.ingestFtraceInRawTable=e.bool();break;case 3:n.analyzeTraceProtoContent=e.bool();break;case 4:n.ftraceDropUntilAllCpusValid=e.bool();break;case 5:n.parsingMode=e.int32();break;default:e.skipType(7&a)}}return n},yr.fromObject=function(e){if(e instanceof s.perfetto.protos.ResetTraceProcessorArgs)return e;var t=new s.perfetto.protos.ResetTraceProcessorArgs;switch(e.dropTrackEventDataBefore){default:\"number\"==typeof e.dropTrackEventDataBefore&&(t.dropTrackEventDataBefore=e.dropTrackEventDataBefore);break;case\"NO_DROP\":case 0:t.dropTrackEventDataBefore=0;break;case\"TRACK_EVENT_RANGE_OF_INTEREST\":case 1:t.dropTrackEventDataBefore=1}switch(null!=e.ingestFtraceInRawTable&&(t.ingestFtraceInRawTable=Boolean(e.ingestFtraceInRawTable)),null!=e.analyzeTraceProtoContent&&(t.analyzeTraceProtoContent=Boolean(e.analyzeTraceProtoContent)),null!=e.ftraceDropUntilAllCpusValid&&(t.ftraceDropUntilAllCpusValid=Boolean(e.ftraceDropUntilAllCpusValid)),e.parsingMode){default:\"number\"==typeof e.parsingMode&&(t.parsingMode=e.parsingMode);break;case\"DEFAULT\":case 0:t.parsingMode=0;break;case\"TOKENIZE_ONLY\":case 1:t.parsingMode=1;break;case\"TOKENIZE_AND_SORT\":case 2:t.parsingMode=2}return t},yr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.dropTrackEventDataBefore=t.enums===String?\"NO_DROP\":0,r.ingestFtraceInRawTable=!1,r.analyzeTraceProtoContent=!1,r.ftraceDropUntilAllCpusValid=!1,r.parsingMode=t.enums===String?\"DEFAULT\":0),null!=e.dropTrackEventDataBefore&&e.hasOwnProperty(\"dropTrackEventDataBefore\")&&(r.dropTrackEventDataBefore=t.enums!==String||void 0===s.perfetto.protos.ResetTraceProcessorArgs.DropTrackEventDataBefore[e.dropTrackEventDataBefore]?e.dropTrackEventDataBefore:s.perfetto.protos.ResetTraceProcessorArgs.DropTrackEventDataBefore[e.dropTrackEventDataBefore]),null!=e.ingestFtraceInRawTable&&e.hasOwnProperty(\"ingestFtraceInRawTable\")&&(r.ingestFtraceInRawTable=e.ingestFtraceInRawTable),null!=e.analyzeTraceProtoContent&&e.hasOwnProperty(\"analyzeTraceProtoContent\")&&(r.analyzeTraceProtoContent=e.analyzeTraceProtoContent),null!=e.ftraceDropUntilAllCpusValid&&e.hasOwnProperty(\"ftraceDropUntilAllCpusValid\")&&(r.ftraceDropUntilAllCpusValid=e.ftraceDropUntilAllCpusValid),null!=e.parsingMode&&e.hasOwnProperty(\"parsingMode\")&&(r.parsingMode=t.enums!==String||void 0===s.perfetto.protos.ResetTraceProcessorArgs.ParsingMode[e.parsingMode]?e.parsingMode:s.perfetto.protos.ResetTraceProcessorArgs.ParsingMode[e.parsingMode]),r},yr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},yr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.ResetTraceProcessorArgs\"},yr.DropTrackEventDataBefore=(t={},(e=Object.create(t))[t[0]=\"NO_DROP\"]=0,e[t[1]=\"TRACK_EVENT_RANGE_OF_INTEREST\"]=1,e),yr.ParsingMode=(t={},(e=Object.create(t))[t[0]=\"DEFAULT\"]=0,e[t[1]=\"TOKENIZE_ONLY\"]=1,e[t[2]=\"TOKENIZE_AND_SORT\"]=2,e),yr),r.RegisterSqlPackageArgs=(Tr.prototype.packageName=\"\",Tr.prototype.modules=i.emptyArray,Tr.prototype.allowOverride=!1,Tr.create=function(e){return new Tr(e)},Tr.encode=function(e,t){if(t=t||a.create(),null!=e.packageName&&Object.hasOwnProperty.call(e,\"packageName\")&&t.uint32(10).string(e.packageName),null!=e.modules&&e.modules.length)for(var r=0;r<e.modules.length;++r)s.perfetto.protos.RegisterSqlPackageArgs.Module.encode(e.modules[r],t.uint32(18).fork()).ldelim();return null!=e.allowOverride&&Object.hasOwnProperty.call(e,\"allowOverride\")&&t.uint32(24).bool(e.allowOverride),t},Tr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.RegisterSqlPackageArgs;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.packageName=e.string();break;case 2:n.modules&&n.modules.length||(n.modules=[]),n.modules.push(s.perfetto.protos.RegisterSqlPackageArgs.Module.decode(e,e.uint32()));break;case 3:n.allowOverride=e.bool();break;default:e.skipType(7&a)}}return n},Tr.fromObject=function(e){if(e instanceof s.perfetto.protos.RegisterSqlPackageArgs)return e;var t=new s.perfetto.protos.RegisterSqlPackageArgs;if(null!=e.packageName&&(t.packageName=String(e.packageName)),e.modules){if(!Array.isArray(e.modules))throw TypeError(\".perfetto.protos.RegisterSqlPackageArgs.modules: array expected\");t.modules=[];for(var r=0;r<e.modules.length;++r){if(\"object\"!=typeof e.modules[r])throw TypeError(\".perfetto.protos.RegisterSqlPackageArgs.modules: object expected\");t.modules[r]=s.perfetto.protos.RegisterSqlPackageArgs.Module.fromObject(e.modules[r])}}return null!=e.allowOverride&&(t.allowOverride=Boolean(e.allowOverride)),t},Tr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.modules=[]),t.defaults&&(r.packageName=\"\",r.allowOverride=!1),null!=e.packageName&&e.hasOwnProperty(\"packageName\")&&(r.packageName=e.packageName),e.modules&&e.modules.length){r.modules=[];for(var n=0;n<e.modules.length;++n)r.modules[n]=s.perfetto.protos.RegisterSqlPackageArgs.Module.toObject(e.modules[n],t)}return null!=e.allowOverride&&e.hasOwnProperty(\"allowOverride\")&&(r.allowOverride=e.allowOverride),r},Tr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Tr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.RegisterSqlPackageArgs\"},Tr.Module=(vr.prototype.name=\"\",vr.prototype.sql=\"\",vr.create=function(e){return new vr(e)},vr.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.sql&&Object.hasOwnProperty.call(e,\"sql\")&&t.uint32(18).string(e.sql),t},vr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.RegisterSqlPackageArgs.Module;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.sql=e.string();break;default:e.skipType(7&a)}}return n},vr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.RegisterSqlPackageArgs.Module?e:(t=new s.perfetto.protos.RegisterSqlPackageArgs.Module,null!=e.name&&(t.name=String(e.name)),null!=e.sql&&(t.sql=String(e.sql)),t)},vr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.sql=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.sql&&e.hasOwnProperty(\"sql\")&&(r.sql=e.sql),r},vr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},vr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.RegisterSqlPackageArgs.Module\"},vr),Tr),r.RegisterSqlPackageResult=(br.prototype.error=\"\",br.create=function(e){return new br(e)},br.encode=function(e,t){return t=t||a.create(),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(10).string(e.error),t},br.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.RegisterSqlPackageResult;e.pos<r;){var a=e.uint32();a>>>3==1?n.error=e.string():e.skipType(7&a)}return n},br.fromObject=function(e){var t;return e instanceof s.perfetto.protos.RegisterSqlPackageResult?e:(t=new s.perfetto.protos.RegisterSqlPackageResult,null!=e.error&&(t.error=String(e.error)),t)},br.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},br.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},br.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.RegisterSqlPackageResult\"},br),r.FinalizeDataResult=(Er.prototype.error=\"\",Er.create=function(e){return new Er(e)},Er.encode=function(e,t){return t=t||a.create(),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(10).string(e.error),t},Er.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FinalizeDataResult;e.pos<r;){var a=e.uint32();a>>>3==1?n.error=e.string():e.skipType(7&a)}return n},Er.fromObject=function(e){var t;return e instanceof s.perfetto.protos.FinalizeDataResult?e:(t=new s.perfetto.protos.FinalizeDataResult,null!=e.error&&(t.error=String(e.error)),t)},Er.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},Er.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Er.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FinalizeDataResult\"},Er),r.AnalyzeStructuredQueryArgs=(Sr.prototype.queries=i.emptyArray,Sr.create=function(e){return new Sr(e)},Sr.encode=function(e,t){if(t=t||a.create(),null!=e.queries&&e.queries.length)for(var r=0;r<e.queries.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.queries[r],t.uint32(10).fork()).ldelim();return t},Sr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AnalyzeStructuredQueryArgs;e.pos<r;){var a=e.uint32();a>>>3==1?(n.queries&&n.queries.length||(n.queries=[]),n.queries.push(s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32()))):e.skipType(7&a)}return n},Sr.fromObject=function(e){if(e instanceof s.perfetto.protos.AnalyzeStructuredQueryArgs)return e;var t=new s.perfetto.protos.AnalyzeStructuredQueryArgs;if(e.queries){if(!Array.isArray(e.queries))throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryArgs.queries: array expected\");t.queries=[];for(var r=0;r<e.queries.length;++r){if(\"object\"!=typeof e.queries[r])throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryArgs.queries: object expected\");t.queries[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.queries[r])}}return t},Sr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.queries=[]),e.queries&&e.queries.length){r.queries=[];for(var n=0;n<e.queries.length;++n)r.queries[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.queries[n],t)}return r},Sr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Sr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AnalyzeStructuredQueryArgs\"},Sr),r.AnalyzeStructuredQueryResult=(Ar.prototype.error=\"\",Ar.prototype.results=i.emptyArray,Ar.create=function(e){return new Ar(e)},Ar.encode=function(e,t){if(t=t||a.create(),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(10).string(e.error),null!=e.results&&e.results.length)for(var r=0;r<e.results.length;++r)s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.encode(e.results[r],t.uint32(18).fork()).ldelim();return t},Ar.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AnalyzeStructuredQueryResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.error=e.string();break;case 2:n.results&&n.results.length||(n.results=[]),n.results.push(s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Ar.fromObject=function(e){if(e instanceof s.perfetto.protos.AnalyzeStructuredQueryResult)return e;var t=new s.perfetto.protos.AnalyzeStructuredQueryResult;if(null!=e.error&&(t.error=String(e.error)),e.results){if(!Array.isArray(e.results))throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryResult.results: array expected\");t.results=[];for(var r=0;r<e.results.length;++r){if(\"object\"!=typeof e.results[r])throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryResult.results: object expected\");t.results[r]=s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.fromObject(e.results[r])}}return t},Ar.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.results=[]),t.defaults&&(r.error=\"\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),e.results&&e.results.length){r.results=[];for(var n=0;n<e.results.length;++n)r.results[n]=s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.toObject(e.results[n],t)}return r},Ar.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ar.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AnalyzeStructuredQueryResult\"},Ar.StructuredQueryResult=(Or.prototype.sql=\"\",Or.prototype.textproto=\"\",Or.prototype.modules=i.emptyArray,Or.prototype.preambles=i.emptyArray,Or.prototype.columns=i.emptyArray,Or.create=function(e){return new Or(e)},Or.encode=function(e,t){if(t=t||a.create(),null!=e.sql&&Object.hasOwnProperty.call(e,\"sql\")&&t.uint32(10).string(e.sql),null!=e.modules&&e.modules.length)for(var r=0;r<e.modules.length;++r)t.uint32(18).string(e.modules[r]);if(null!=e.preambles&&e.preambles.length)for(r=0;r<e.preambles.length;++r)t.uint32(26).string(e.preambles[r]);if(null!=e.textproto&&Object.hasOwnProperty.call(e,\"textproto\")&&t.uint32(34).string(e.textproto),null!=e.columns&&e.columns.length)for(r=0;r<e.columns.length;++r)t.uint32(42).string(e.columns[r]);return t},Or.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.sql=e.string();break;case 4:n.textproto=e.string();break;case 2:n.modules&&n.modules.length||(n.modules=[]),n.modules.push(e.string());break;case 3:n.preambles&&n.preambles.length||(n.preambles=[]),n.preambles.push(e.string());break;case 5:n.columns&&n.columns.length||(n.columns=[]),n.columns.push(e.string());break;default:e.skipType(7&a)}}return n},Or.fromObject=function(e){if(e instanceof s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult)return e;var t=new s.perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult;if(null!=e.sql&&(t.sql=String(e.sql)),null!=e.textproto&&(t.textproto=String(e.textproto)),e.modules){if(!Array.isArray(e.modules))throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.modules: array expected\");t.modules=[];for(var r=0;r<e.modules.length;++r)t.modules[r]=String(e.modules[r])}if(e.preambles){if(!Array.isArray(e.preambles))throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.preambles: array expected\");t.preambles=[];for(r=0;r<e.preambles.length;++r)t.preambles[r]=String(e.preambles[r])}if(e.columns){if(!Array.isArray(e.columns))throw TypeError(\".perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult.columns: array expected\");t.columns=[];for(r=0;r<e.columns.length;++r)t.columns[r]=String(e.columns[r])}return t},Or.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.modules=[],r.preambles=[],r.columns=[]),t.defaults&&(r.sql=\"\",r.textproto=\"\"),null!=e.sql&&e.hasOwnProperty(\"sql\")&&(r.sql=e.sql),e.modules&&e.modules.length){r.modules=[];for(var n=0;n<e.modules.length;++n)r.modules[n]=e.modules[n]}if(e.preambles&&e.preambles.length){r.preambles=[];for(n=0;n<e.preambles.length;++n)r.preambles[n]=e.preambles[n]}if(null!=e.textproto&&e.hasOwnProperty(\"textproto\")&&(r.textproto=e.textproto),e.columns&&e.columns.length){r.columns=[];for(n=0;n<e.columns.length;++n)r.columns[n]=e.columns[n]}return r},Or.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Or.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.AnalyzeStructuredQueryResult.StructuredQueryResult\"},Or),Ar),r.TraceSummaryArgs=(Cr.prototype.protoSpecs=i.emptyArray,Cr.prototype.textprotoSpecs=i.emptyArray,Cr.prototype.computationSpec=null,Cr.prototype.outputFormat=0,Cr.create=function(e){return new Cr(e)},Cr.encode=function(e,t){if(t=t||a.create(),null!=e.protoSpecs&&e.protoSpecs.length)for(var r=0;r<e.protoSpecs.length;++r)s.perfetto.protos.TraceSummarySpec.encode(e.protoSpecs[r],t.uint32(10).fork()).ldelim();if(null!=e.textprotoSpecs&&e.textprotoSpecs.length)for(r=0;r<e.textprotoSpecs.length;++r)t.uint32(18).string(e.textprotoSpecs[r]);return null!=e.computationSpec&&Object.hasOwnProperty.call(e,\"computationSpec\")&&s.perfetto.protos.TraceSummaryArgs.ComputationSpec.encode(e.computationSpec,t.uint32(26).fork()).ldelim(),null!=e.outputFormat&&Object.hasOwnProperty.call(e,\"outputFormat\")&&t.uint32(32).int32(e.outputFormat),t},Cr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummaryArgs;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.protoSpecs&&n.protoSpecs.length||(n.protoSpecs=[]),n.protoSpecs.push(s.perfetto.protos.TraceSummarySpec.decode(e,e.uint32()));break;case 2:n.textprotoSpecs&&n.textprotoSpecs.length||(n.textprotoSpecs=[]),n.textprotoSpecs.push(e.string());break;case 3:n.computationSpec=s.perfetto.protos.TraceSummaryArgs.ComputationSpec.decode(e,e.uint32());break;case 4:n.outputFormat=e.int32();break;default:e.skipType(7&a)}}return n},Cr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceSummaryArgs)return e;var t=new s.perfetto.protos.TraceSummaryArgs;if(e.protoSpecs){if(!Array.isArray(e.protoSpecs))throw TypeError(\".perfetto.protos.TraceSummaryArgs.protoSpecs: array expected\");t.protoSpecs=[];for(var r=0;r<e.protoSpecs.length;++r){if(\"object\"!=typeof e.protoSpecs[r])throw TypeError(\".perfetto.protos.TraceSummaryArgs.protoSpecs: object expected\");t.protoSpecs[r]=s.perfetto.protos.TraceSummarySpec.fromObject(e.protoSpecs[r])}}if(e.textprotoSpecs){if(!Array.isArray(e.textprotoSpecs))throw TypeError(\".perfetto.protos.TraceSummaryArgs.textprotoSpecs: array expected\");t.textprotoSpecs=[];for(r=0;r<e.textprotoSpecs.length;++r)t.textprotoSpecs[r]=String(e.textprotoSpecs[r])}if(null!=e.computationSpec){if(\"object\"!=typeof e.computationSpec)throw TypeError(\".perfetto.protos.TraceSummaryArgs.computationSpec: object expected\");t.computationSpec=s.perfetto.protos.TraceSummaryArgs.ComputationSpec.fromObject(e.computationSpec)}switch(e.outputFormat){default:\"number\"==typeof e.outputFormat&&(t.outputFormat=e.outputFormat);break;case\"BINARY_PROTOBUF\":case 0:t.outputFormat=0;break;case\"TEXTPROTO\":case 1:t.outputFormat=1}return t},Cr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.protoSpecs=[],r.textprotoSpecs=[]),t.defaults&&(r.computationSpec=null,r.outputFormat=t.enums===String?\"BINARY_PROTOBUF\":0),e.protoSpecs&&e.protoSpecs.length){r.protoSpecs=[];for(var n=0;n<e.protoSpecs.length;++n)r.protoSpecs[n]=s.perfetto.protos.TraceSummarySpec.toObject(e.protoSpecs[n],t)}if(e.textprotoSpecs&&e.textprotoSpecs.length){r.textprotoSpecs=[];for(n=0;n<e.textprotoSpecs.length;++n)r.textprotoSpecs[n]=e.textprotoSpecs[n]}return null!=e.computationSpec&&e.hasOwnProperty(\"computationSpec\")&&(r.computationSpec=s.perfetto.protos.TraceSummaryArgs.ComputationSpec.toObject(e.computationSpec,t)),null!=e.outputFormat&&e.hasOwnProperty(\"outputFormat\")&&(r.outputFormat=t.enums!==String||void 0===s.perfetto.protos.TraceSummaryArgs.Format[e.outputFormat]?e.outputFormat:s.perfetto.protos.TraceSummaryArgs.Format[e.outputFormat]),r},Cr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Cr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummaryArgs\"},Cr.ComputationSpec=(wr.prototype.metricIds=i.emptyArray,wr.prototype.runAllMetrics=!1,wr.prototype.metadataQueryId=\"\",wr.create=function(e){return new wr(e)},wr.encode=function(e,t){if(t=t||a.create(),null!=e.metricIds&&e.metricIds.length)for(var r=0;r<e.metricIds.length;++r)t.uint32(10).string(e.metricIds[r]);return null!=e.metadataQueryId&&Object.hasOwnProperty.call(e,\"metadataQueryId\")&&t.uint32(18).string(e.metadataQueryId),null!=e.runAllMetrics&&Object.hasOwnProperty.call(e,\"runAllMetrics\")&&t.uint32(24).bool(e.runAllMetrics),t},wr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummaryArgs.ComputationSpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.metricIds&&n.metricIds.length||(n.metricIds=[]),n.metricIds.push(e.string());break;case 3:n.runAllMetrics=e.bool();break;case 2:n.metadataQueryId=e.string();break;default:e.skipType(7&a)}}return n},wr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceSummaryArgs.ComputationSpec)return e;var t=new s.perfetto.protos.TraceSummaryArgs.ComputationSpec;if(e.metricIds){if(!Array.isArray(e.metricIds))throw TypeError(\".perfetto.protos.TraceSummaryArgs.ComputationSpec.metricIds: array expected\");t.metricIds=[];for(var r=0;r<e.metricIds.length;++r)t.metricIds[r]=String(e.metricIds[r])}return null!=e.runAllMetrics&&(t.runAllMetrics=Boolean(e.runAllMetrics)),null!=e.metadataQueryId&&(t.metadataQueryId=String(e.metadataQueryId)),t},wr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.metricIds=[]),t.defaults&&(r.metadataQueryId=\"\",r.runAllMetrics=!1),e.metricIds&&e.metricIds.length){r.metricIds=[];for(var n=0;n<e.metricIds.length;++n)r.metricIds[n]=e.metricIds[n]}return null!=e.metadataQueryId&&e.hasOwnProperty(\"metadataQueryId\")&&(r.metadataQueryId=e.metadataQueryId),null!=e.runAllMetrics&&e.hasOwnProperty(\"runAllMetrics\")&&(r.runAllMetrics=e.runAllMetrics),r},wr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},wr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummaryArgs.ComputationSpec\"},wr),Cr.Format=(t={},(e=Object.create(t))[t[0]=\"BINARY_PROTOBUF\"]=0,e[t[1]=\"TEXTPROTO\"]=1,e),Cr),r.TraceSummaryResult=(kr.prototype.protoSummary=null,kr.prototype.textprotoSummary=null,kr.prototype.error=\"\",Object.defineProperty(kr.prototype,\"summary\",{get:i.oneOfGetter(t=[\"protoSummary\",\"textprotoSummary\"]),set:i.oneOfSetter(t)}),kr.create=function(e){return new kr(e)},kr.encode=function(e,t){return t=t||a.create(),null!=e.protoSummary&&Object.hasOwnProperty.call(e,\"protoSummary\")&&t.uint32(10).bytes(e.protoSummary),null!=e.textprotoSummary&&Object.hasOwnProperty.call(e,\"textprotoSummary\")&&t.uint32(18).string(e.textprotoSummary),null!=e.error&&Object.hasOwnProperty.call(e,\"error\")&&t.uint32(26).string(e.error),t},kr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummaryResult;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.protoSummary=e.bytes();break;case 2:n.textprotoSummary=e.string();break;case 3:n.error=e.string();break;default:e.skipType(7&a)}}return n},kr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceSummaryResult?e:(t=new s.perfetto.protos.TraceSummaryResult,null!=e.protoSummary&&(\"string\"==typeof e.protoSummary?i.base64.decode(e.protoSummary,t.protoSummary=i.newBuffer(i.base64.length(e.protoSummary)),0):0<=e.protoSummary.length&&(t.protoSummary=e.protoSummary)),null!=e.textprotoSummary&&(t.textprotoSummary=String(e.textprotoSummary)),null!=e.error&&(t.error=String(e.error)),t)},kr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.error=\"\"),null!=e.protoSummary&&e.hasOwnProperty(\"protoSummary\")&&(r.protoSummary=t.bytes===String?i.base64.encode(e.protoSummary,0,e.protoSummary.length):t.bytes===Array?Array.prototype.slice.call(e.protoSummary):e.protoSummary,t.oneofs)&&(r.summary=\"protoSummary\"),null!=e.textprotoSummary&&e.hasOwnProperty(\"textprotoSummary\")&&(r.textprotoSummary=e.textprotoSummary,t.oneofs)&&(r.summary=\"textprotoSummary\"),null!=e.error&&e.hasOwnProperty(\"error\")&&(r.error=e.error),r},kr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},kr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummaryResult\"},kr),r.FileDescriptorSet=(Ir.prototype.file=i.emptyArray,Ir.create=function(e){return new Ir(e)},Ir.encode=function(e,t){if(t=t||a.create(),null!=e.file&&e.file.length)for(var r=0;r<e.file.length;++r)s.perfetto.protos.FileDescriptorProto.encode(e.file[r],t.uint32(10).fork()).ldelim();return t},Ir.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FileDescriptorSet;e.pos<r;){var a=e.uint32();a>>>3==1?(n.file&&n.file.length||(n.file=[]),n.file.push(s.perfetto.protos.FileDescriptorProto.decode(e,e.uint32()))):e.skipType(7&a)}return n},Ir.fromObject=function(e){if(e instanceof s.perfetto.protos.FileDescriptorSet)return e;var t=new s.perfetto.protos.FileDescriptorSet;if(e.file){if(!Array.isArray(e.file))throw TypeError(\".perfetto.protos.FileDescriptorSet.file: array expected\");t.file=[];for(var r=0;r<e.file.length;++r){if(\"object\"!=typeof e.file[r])throw TypeError(\".perfetto.protos.FileDescriptorSet.file: object expected\");t.file[r]=s.perfetto.protos.FileDescriptorProto.fromObject(e.file[r])}}return t},Ir.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.file=[]),e.file&&e.file.length){r.file=[];for(var n=0;n<e.file.length;++n)r.file[n]=s.perfetto.protos.FileDescriptorProto.toObject(e.file[n],t)}return r},Ir.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ir.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FileDescriptorSet\"},Ir),r.FileDescriptorProto=(Rr.prototype.name=\"\",Rr.prototype.package=\"\",Rr.prototype.dependency=i.emptyArray,Rr.prototype.publicDependency=i.emptyArray,Rr.prototype.weakDependency=i.emptyArray,Rr.prototype.messageType=i.emptyArray,Rr.prototype.enumType=i.emptyArray,Rr.prototype.extension=i.emptyArray,Rr.create=function(e){return new Rr(e)},Rr.encode=function(e,t){if(t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.package&&Object.hasOwnProperty.call(e,\"package\")&&t.uint32(18).string(e.package),null!=e.dependency&&e.dependency.length)for(var r=0;r<e.dependency.length;++r)t.uint32(26).string(e.dependency[r]);if(null!=e.messageType&&e.messageType.length)for(r=0;r<e.messageType.length;++r)s.perfetto.protos.DescriptorProto.encode(e.messageType[r],t.uint32(34).fork()).ldelim();if(null!=e.enumType&&e.enumType.length)for(r=0;r<e.enumType.length;++r)s.perfetto.protos.EnumDescriptorProto.encode(e.enumType[r],t.uint32(42).fork()).ldelim();if(null!=e.extension&&e.extension.length)for(r=0;r<e.extension.length;++r)s.perfetto.protos.FieldDescriptorProto.encode(e.extension[r],t.uint32(58).fork()).ldelim();if(null!=e.publicDependency&&e.publicDependency.length)for(r=0;r<e.publicDependency.length;++r)t.uint32(80).int32(e.publicDependency[r]);if(null!=e.weakDependency&&e.weakDependency.length)for(r=0;r<e.weakDependency.length;++r)t.uint32(88).int32(e.weakDependency[r]);return t},Rr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FileDescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.package=e.string();break;case 3:n.dependency&&n.dependency.length||(n.dependency=[]),n.dependency.push(e.string());break;case 10:if(n.publicDependency&&n.publicDependency.length||(n.publicDependency=[]),2==(7&a))for(var i=e.uint32()+e.pos;e.pos<i;)n.publicDependency.push(e.int32());else n.publicDependency.push(e.int32());break;case 11:if(n.weakDependency&&n.weakDependency.length||(n.weakDependency=[]),2==(7&a))for(i=e.uint32()+e.pos;e.pos<i;)n.weakDependency.push(e.int32());else n.weakDependency.push(e.int32());break;case 4:n.messageType&&n.messageType.length||(n.messageType=[]),n.messageType.push(s.perfetto.protos.DescriptorProto.decode(e,e.uint32()));break;case 5:n.enumType&&n.enumType.length||(n.enumType=[]),n.enumType.push(s.perfetto.protos.EnumDescriptorProto.decode(e,e.uint32()));break;case 7:n.extension&&n.extension.length||(n.extension=[]),n.extension.push(s.perfetto.protos.FieldDescriptorProto.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Rr.fromObject=function(e){if(e instanceof s.perfetto.protos.FileDescriptorProto)return e;var t=new s.perfetto.protos.FileDescriptorProto;if(null!=e.name&&(t.name=String(e.name)),null!=e.package&&(t.package=String(e.package)),e.dependency){if(!Array.isArray(e.dependency))throw TypeError(\".perfetto.protos.FileDescriptorProto.dependency: array expected\");t.dependency=[];for(var r=0;r<e.dependency.length;++r)t.dependency[r]=String(e.dependency[r])}if(e.publicDependency){if(!Array.isArray(e.publicDependency))throw TypeError(\".perfetto.protos.FileDescriptorProto.publicDependency: array expected\");t.publicDependency=[];for(r=0;r<e.publicDependency.length;++r)t.publicDependency[r]=0|e.publicDependency[r]}if(e.weakDependency){if(!Array.isArray(e.weakDependency))throw TypeError(\".perfetto.protos.FileDescriptorProto.weakDependency: array expected\");t.weakDependency=[];for(r=0;r<e.weakDependency.length;++r)t.weakDependency[r]=0|e.weakDependency[r]}if(e.messageType){if(!Array.isArray(e.messageType))throw TypeError(\".perfetto.protos.FileDescriptorProto.messageType: array expected\");t.messageType=[];for(r=0;r<e.messageType.length;++r){if(\"object\"!=typeof e.messageType[r])throw TypeError(\".perfetto.protos.FileDescriptorProto.messageType: object expected\");t.messageType[r]=s.perfetto.protos.DescriptorProto.fromObject(e.messageType[r])}}if(e.enumType){if(!Array.isArray(e.enumType))throw TypeError(\".perfetto.protos.FileDescriptorProto.enumType: array expected\");t.enumType=[];for(r=0;r<e.enumType.length;++r){if(\"object\"!=typeof e.enumType[r])throw TypeError(\".perfetto.protos.FileDescriptorProto.enumType: object expected\");t.enumType[r]=s.perfetto.protos.EnumDescriptorProto.fromObject(e.enumType[r])}}if(e.extension){if(!Array.isArray(e.extension))throw TypeError(\".perfetto.protos.FileDescriptorProto.extension: array expected\");t.extension=[];for(r=0;r<e.extension.length;++r){if(\"object\"!=typeof e.extension[r])throw TypeError(\".perfetto.protos.FileDescriptorProto.extension: object expected\");t.extension[r]=s.perfetto.protos.FieldDescriptorProto.fromObject(e.extension[r])}}return t},Rr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.dependency=[],r.messageType=[],r.enumType=[],r.extension=[],r.publicDependency=[],r.weakDependency=[]),t.defaults&&(r.name=\"\",r.package=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.package&&e.hasOwnProperty(\"package\")&&(r.package=e.package),e.dependency&&e.dependency.length){r.dependency=[];for(var n=0;n<e.dependency.length;++n)r.dependency[n]=e.dependency[n]}if(e.messageType&&e.messageType.length){r.messageType=[];for(n=0;n<e.messageType.length;++n)r.messageType[n]=s.perfetto.protos.DescriptorProto.toObject(e.messageType[n],t)}if(e.enumType&&e.enumType.length){r.enumType=[];for(n=0;n<e.enumType.length;++n)r.enumType[n]=s.perfetto.protos.EnumDescriptorProto.toObject(e.enumType[n],t)}if(e.extension&&e.extension.length){r.extension=[];for(n=0;n<e.extension.length;++n)r.extension[n]=s.perfetto.protos.FieldDescriptorProto.toObject(e.extension[n],t)}if(e.publicDependency&&e.publicDependency.length){r.publicDependency=[];for(n=0;n<e.publicDependency.length;++n)r.publicDependency[n]=e.publicDependency[n]}if(e.weakDependency&&e.weakDependency.length){r.weakDependency=[];for(n=0;n<e.weakDependency.length;++n)r.weakDependency[n]=e.weakDependency[n]}return r},Rr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Rr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FileDescriptorProto\"},Rr),r.DescriptorProto=(M.prototype.name=\"\",M.prototype.field=i.emptyArray,M.prototype.extension=i.emptyArray,M.prototype.nestedType=i.emptyArray,M.prototype.enumType=i.emptyArray,M.prototype.oneofDecl=i.emptyArray,M.prototype.reservedRange=i.emptyArray,M.prototype.reservedName=i.emptyArray,M.create=function(e){return new M(e)},M.encode=function(e,t){if(t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.field&&e.field.length)for(var r=0;r<e.field.length;++r)s.perfetto.protos.FieldDescriptorProto.encode(e.field[r],t.uint32(18).fork()).ldelim();if(null!=e.nestedType&&e.nestedType.length)for(r=0;r<e.nestedType.length;++r)s.perfetto.protos.DescriptorProto.encode(e.nestedType[r],t.uint32(26).fork()).ldelim();if(null!=e.enumType&&e.enumType.length)for(r=0;r<e.enumType.length;++r)s.perfetto.protos.EnumDescriptorProto.encode(e.enumType[r],t.uint32(34).fork()).ldelim();if(null!=e.extension&&e.extension.length)for(r=0;r<e.extension.length;++r)s.perfetto.protos.FieldDescriptorProto.encode(e.extension[r],t.uint32(50).fork()).ldelim();if(null!=e.oneofDecl&&e.oneofDecl.length)for(r=0;r<e.oneofDecl.length;++r)s.perfetto.protos.OneofDescriptorProto.encode(e.oneofDecl[r],t.uint32(66).fork()).ldelim();if(null!=e.reservedRange&&e.reservedRange.length)for(r=0;r<e.reservedRange.length;++r)s.perfetto.protos.DescriptorProto.ReservedRange.encode(e.reservedRange[r],t.uint32(74).fork()).ldelim();if(null!=e.reservedName&&e.reservedName.length)for(r=0;r<e.reservedName.length;++r)t.uint32(82).string(e.reservedName[r]);return t},M.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.field&&n.field.length||(n.field=[]),n.field.push(s.perfetto.protos.FieldDescriptorProto.decode(e,e.uint32()));break;case 6:n.extension&&n.extension.length||(n.extension=[]),n.extension.push(s.perfetto.protos.FieldDescriptorProto.decode(e,e.uint32()));break;case 3:n.nestedType&&n.nestedType.length||(n.nestedType=[]),n.nestedType.push(s.perfetto.protos.DescriptorProto.decode(e,e.uint32()));break;case 4:n.enumType&&n.enumType.length||(n.enumType=[]),n.enumType.push(s.perfetto.protos.EnumDescriptorProto.decode(e,e.uint32()));break;case 8:n.oneofDecl&&n.oneofDecl.length||(n.oneofDecl=[]),n.oneofDecl.push(s.perfetto.protos.OneofDescriptorProto.decode(e,e.uint32()));break;case 9:n.reservedRange&&n.reservedRange.length||(n.reservedRange=[]),n.reservedRange.push(s.perfetto.protos.DescriptorProto.ReservedRange.decode(e,e.uint32()));break;case 10:n.reservedName&&n.reservedName.length||(n.reservedName=[]),n.reservedName.push(e.string());break;default:e.skipType(7&a)}}return n},M.fromObject=function(e){if(e instanceof s.perfetto.protos.DescriptorProto)return e;var t=new s.perfetto.protos.DescriptorProto;if(null!=e.name&&(t.name=String(e.name)),e.field){if(!Array.isArray(e.field))throw TypeError(\".perfetto.protos.DescriptorProto.field: array expected\");t.field=[];for(var r=0;r<e.field.length;++r){if(\"object\"!=typeof e.field[r])throw TypeError(\".perfetto.protos.DescriptorProto.field: object expected\");t.field[r]=s.perfetto.protos.FieldDescriptorProto.fromObject(e.field[r])}}if(e.extension){if(!Array.isArray(e.extension))throw TypeError(\".perfetto.protos.DescriptorProto.extension: array expected\");t.extension=[];for(r=0;r<e.extension.length;++r){if(\"object\"!=typeof e.extension[r])throw TypeError(\".perfetto.protos.DescriptorProto.extension: object expected\");t.extension[r]=s.perfetto.protos.FieldDescriptorProto.fromObject(e.extension[r])}}if(e.nestedType){if(!Array.isArray(e.nestedType))throw TypeError(\".perfetto.protos.DescriptorProto.nestedType: array expected\");t.nestedType=[];for(r=0;r<e.nestedType.length;++r){if(\"object\"!=typeof e.nestedType[r])throw TypeError(\".perfetto.protos.DescriptorProto.nestedType: object expected\");t.nestedType[r]=s.perfetto.protos.DescriptorProto.fromObject(e.nestedType[r])}}if(e.enumType){if(!Array.isArray(e.enumType))throw TypeError(\".perfetto.protos.DescriptorProto.enumType: array expected\");t.enumType=[];for(r=0;r<e.enumType.length;++r){if(\"object\"!=typeof e.enumType[r])throw TypeError(\".perfetto.protos.DescriptorProto.enumType: object expected\");t.enumType[r]=s.perfetto.protos.EnumDescriptorProto.fromObject(e.enumType[r])}}if(e.oneofDecl){if(!Array.isArray(e.oneofDecl))throw TypeError(\".perfetto.protos.DescriptorProto.oneofDecl: array expected\");t.oneofDecl=[];for(r=0;r<e.oneofDecl.length;++r){if(\"object\"!=typeof e.oneofDecl[r])throw TypeError(\".perfetto.protos.DescriptorProto.oneofDecl: object expected\");t.oneofDecl[r]=s.perfetto.protos.OneofDescriptorProto.fromObject(e.oneofDecl[r])}}if(e.reservedRange){if(!Array.isArray(e.reservedRange))throw TypeError(\".perfetto.protos.DescriptorProto.reservedRange: array expected\");t.reservedRange=[];for(r=0;r<e.reservedRange.length;++r){if(\"object\"!=typeof e.reservedRange[r])throw TypeError(\".perfetto.protos.DescriptorProto.reservedRange: object expected\");t.reservedRange[r]=s.perfetto.protos.DescriptorProto.ReservedRange.fromObject(e.reservedRange[r])}}if(e.reservedName){if(!Array.isArray(e.reservedName))throw TypeError(\".perfetto.protos.DescriptorProto.reservedName: array expected\");t.reservedName=[];for(r=0;r<e.reservedName.length;++r)t.reservedName[r]=String(e.reservedName[r])}return t},M.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.field=[],r.nestedType=[],r.enumType=[],r.extension=[],r.oneofDecl=[],r.reservedRange=[],r.reservedName=[]),t.defaults&&(r.name=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),e.field&&e.field.length){r.field=[];for(var n=0;n<e.field.length;++n)r.field[n]=s.perfetto.protos.FieldDescriptorProto.toObject(e.field[n],t)}if(e.nestedType&&e.nestedType.length){r.nestedType=[];for(n=0;n<e.nestedType.length;++n)r.nestedType[n]=s.perfetto.protos.DescriptorProto.toObject(e.nestedType[n],t)}if(e.enumType&&e.enumType.length){r.enumType=[];for(n=0;n<e.enumType.length;++n)r.enumType[n]=s.perfetto.protos.EnumDescriptorProto.toObject(e.enumType[n],t)}if(e.extension&&e.extension.length){r.extension=[];for(n=0;n<e.extension.length;++n)r.extension[n]=s.perfetto.protos.FieldDescriptorProto.toObject(e.extension[n],t)}if(e.oneofDecl&&e.oneofDecl.length){r.oneofDecl=[];for(n=0;n<e.oneofDecl.length;++n)r.oneofDecl[n]=s.perfetto.protos.OneofDescriptorProto.toObject(e.oneofDecl[n],t)}if(e.reservedRange&&e.reservedRange.length){r.reservedRange=[];for(n=0;n<e.reservedRange.length;++n)r.reservedRange[n]=s.perfetto.protos.DescriptorProto.ReservedRange.toObject(e.reservedRange[n],t)}if(e.reservedName&&e.reservedName.length){r.reservedName=[];for(n=0;n<e.reservedName.length;++n)r.reservedName[n]=e.reservedName[n]}return r},M.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},M.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DescriptorProto\"},M.ReservedRange=(Nr.prototype.start=0,Nr.prototype.end=0,Nr.create=function(e){return new Nr(e)},Nr.encode=function(e,t){return t=t||a.create(),null!=e.start&&Object.hasOwnProperty.call(e,\"start\")&&t.uint32(8).int32(e.start),null!=e.end&&Object.hasOwnProperty.call(e,\"end\")&&t.uint32(16).int32(e.end),t},Nr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.DescriptorProto.ReservedRange;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.start=e.int32();break;case 2:n.end=e.int32();break;default:e.skipType(7&a)}}return n},Nr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.DescriptorProto.ReservedRange?e:(t=new s.perfetto.protos.DescriptorProto.ReservedRange,null!=e.start&&(t.start=0|e.start),null!=e.end&&(t.end=0|e.end),t)},Nr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.start=0,r.end=0),null!=e.start&&e.hasOwnProperty(\"start\")&&(r.start=e.start),null!=e.end&&e.hasOwnProperty(\"end\")&&(r.end=e.end),r},Nr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Nr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.DescriptorProto.ReservedRange\"},Nr),M),r.UninterpretedOption=(Mr.prototype.name=i.emptyArray,Mr.prototype.identifierValue=\"\",Mr.prototype.positiveIntValue=i.Long?i.Long.fromBits(0,0,!0):0,Mr.prototype.negativeIntValue=i.Long?i.Long.fromBits(0,0,!1):0,Mr.prototype.doubleValue=0,Mr.prototype.stringValue=i.newBuffer([]),Mr.prototype.aggregateValue=\"\",Mr.create=function(e){return new Mr(e)},Mr.encode=function(e,t){if(t=t||a.create(),null!=e.name&&e.name.length)for(var r=0;r<e.name.length;++r)s.perfetto.protos.UninterpretedOption.NamePart.encode(e.name[r],t.uint32(18).fork()).ldelim();return null!=e.identifierValue&&Object.hasOwnProperty.call(e,\"identifierValue\")&&t.uint32(26).string(e.identifierValue),null!=e.positiveIntValue&&Object.hasOwnProperty.call(e,\"positiveIntValue\")&&t.uint32(32).uint64(e.positiveIntValue),null!=e.negativeIntValue&&Object.hasOwnProperty.call(e,\"negativeIntValue\")&&t.uint32(40).int64(e.negativeIntValue),null!=e.doubleValue&&Object.hasOwnProperty.call(e,\"doubleValue\")&&t.uint32(49).double(e.doubleValue),null!=e.stringValue&&Object.hasOwnProperty.call(e,\"stringValue\")&&t.uint32(58).bytes(e.stringValue),null!=e.aggregateValue&&Object.hasOwnProperty.call(e,\"aggregateValue\")&&t.uint32(66).string(e.aggregateValue),t},Mr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.UninterpretedOption;e.pos<r;){var a=e.uint32();switch(a>>>3){case 2:n.name&&n.name.length||(n.name=[]),n.name.push(s.perfetto.protos.UninterpretedOption.NamePart.decode(e,e.uint32()));break;case 3:n.identifierValue=e.string();break;case 4:n.positiveIntValue=e.uint64();break;case 5:n.negativeIntValue=e.int64();break;case 6:n.doubleValue=e.double();break;case 7:n.stringValue=e.bytes();break;case 8:n.aggregateValue=e.string();break;default:e.skipType(7&a)}}return n},Mr.fromObject=function(e){if(e instanceof s.perfetto.protos.UninterpretedOption)return e;var t=new s.perfetto.protos.UninterpretedOption;if(e.name){if(!Array.isArray(e.name))throw TypeError(\".perfetto.protos.UninterpretedOption.name: array expected\");t.name=[];for(var r=0;r<e.name.length;++r){if(\"object\"!=typeof e.name[r])throw TypeError(\".perfetto.protos.UninterpretedOption.name: object expected\");t.name[r]=s.perfetto.protos.UninterpretedOption.NamePart.fromObject(e.name[r])}}return null!=e.identifierValue&&(t.identifierValue=String(e.identifierValue)),null!=e.positiveIntValue&&(i.Long?(t.positiveIntValue=i.Long.fromValue(e.positiveIntValue)).unsigned=!0:\"string\"==typeof e.positiveIntValue?t.positiveIntValue=parseInt(e.positiveIntValue,10):\"number\"==typeof e.positiveIntValue?t.positiveIntValue=e.positiveIntValue:\"object\"==typeof e.positiveIntValue&&(t.positiveIntValue=new i.LongBits(e.positiveIntValue.low>>>0,e.positiveIntValue.high>>>0).toNumber(!0))),null!=e.negativeIntValue&&(i.Long?(t.negativeIntValue=i.Long.fromValue(e.negativeIntValue)).unsigned=!1:\"string\"==typeof e.negativeIntValue?t.negativeIntValue=parseInt(e.negativeIntValue,10):\"number\"==typeof e.negativeIntValue?t.negativeIntValue=e.negativeIntValue:\"object\"==typeof e.negativeIntValue&&(t.negativeIntValue=new i.LongBits(e.negativeIntValue.low>>>0,e.negativeIntValue.high>>>0).toNumber())),null!=e.doubleValue&&(t.doubleValue=Number(e.doubleValue)),null!=e.stringValue&&(\"string\"==typeof e.stringValue?i.base64.decode(e.stringValue,t.stringValue=i.newBuffer(i.base64.length(e.stringValue)),0):0<=e.stringValue.length&&(t.stringValue=e.stringValue)),null!=e.aggregateValue&&(t.aggregateValue=String(e.aggregateValue)),t},Mr.toObject=function(e,t){var r,n={};if(((t=t||{}).arrays||t.defaults)&&(n.name=[]),t.defaults&&(n.identifierValue=\"\",i.Long?(r=new i.Long(0,0,!0),n.positiveIntValue=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.positiveIntValue=t.longs===String?\"0\":0,i.Long?(r=new i.Long(0,0,!1),n.negativeIntValue=t.longs===String?r.toString():t.longs===Number?r.toNumber():r):n.negativeIntValue=t.longs===String?\"0\":0,n.doubleValue=0,t.bytes===String?n.stringValue=\"\":(n.stringValue=[],t.bytes!==Array&&(n.stringValue=i.newBuffer(n.stringValue))),n.aggregateValue=\"\"),e.name&&e.name.length){n.name=[];for(var a=0;a<e.name.length;++a)n.name[a]=s.perfetto.protos.UninterpretedOption.NamePart.toObject(e.name[a],t)}return null!=e.identifierValue&&e.hasOwnProperty(\"identifierValue\")&&(n.identifierValue=e.identifierValue),null!=e.positiveIntValue&&e.hasOwnProperty(\"positiveIntValue\")&&(\"number\"==typeof e.positiveIntValue?n.positiveIntValue=t.longs===String?String(e.positiveIntValue):e.positiveIntValue:n.positiveIntValue=t.longs===String?i.Long.prototype.toString.call(e.positiveIntValue):t.longs===Number?new i.LongBits(e.positiveIntValue.low>>>0,e.positiveIntValue.high>>>0).toNumber(!0):e.positiveIntValue),null!=e.negativeIntValue&&e.hasOwnProperty(\"negativeIntValue\")&&(\"number\"==typeof e.negativeIntValue?n.negativeIntValue=t.longs===String?String(e.negativeIntValue):e.negativeIntValue:n.negativeIntValue=t.longs===String?i.Long.prototype.toString.call(e.negativeIntValue):t.longs===Number?new i.LongBits(e.negativeIntValue.low>>>0,e.negativeIntValue.high>>>0).toNumber():e.negativeIntValue),null!=e.doubleValue&&e.hasOwnProperty(\"doubleValue\")&&(n.doubleValue=t.json&&!isFinite(e.doubleValue)?String(e.doubleValue):e.doubleValue),null!=e.stringValue&&e.hasOwnProperty(\"stringValue\")&&(n.stringValue=t.bytes===String?i.base64.encode(e.stringValue,0,e.stringValue.length):t.bytes===Array?Array.prototype.slice.call(e.stringValue):e.stringValue),null!=e.aggregateValue&&e.hasOwnProperty(\"aggregateValue\")&&(n.aggregateValue=e.aggregateValue),n},Mr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Mr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.UninterpretedOption\"},Mr.NamePart=(Pr.prototype.namePart=\"\",Pr.prototype.isExtension=!1,Pr.create=function(e){return new Pr(e)},Pr.encode=function(e,t){return t=t||a.create(),null!=e.namePart&&Object.hasOwnProperty.call(e,\"namePart\")&&t.uint32(10).string(e.namePart),null!=e.isExtension&&Object.hasOwnProperty.call(e,\"isExtension\")&&t.uint32(16).bool(e.isExtension),t},Pr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.UninterpretedOption.NamePart;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.namePart=e.string();break;case 2:n.isExtension=e.bool();break;default:e.skipType(7&a)}}return n},Pr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.UninterpretedOption.NamePart?e:(t=new s.perfetto.protos.UninterpretedOption.NamePart,null!=e.namePart&&(t.namePart=String(e.namePart)),null!=e.isExtension&&(t.isExtension=Boolean(e.isExtension)),t)},Pr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.namePart=\"\",r.isExtension=!1),null!=e.namePart&&e.hasOwnProperty(\"namePart\")&&(r.namePart=e.namePart),null!=e.isExtension&&e.hasOwnProperty(\"isExtension\")&&(r.isExtension=e.isExtension),r},Pr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Pr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.UninterpretedOption.NamePart\"},Pr),Mr),r.FieldOptions=(Dr.prototype.packed=!1,Dr.prototype.uninterpretedOption=i.emptyArray,Dr.create=function(e){return new Dr(e)},Dr.encode=function(e,t){if(t=t||a.create(),null!=e.packed&&Object.hasOwnProperty.call(e,\"packed\")&&t.uint32(16).bool(e.packed),null!=e.uninterpretedOption&&e.uninterpretedOption.length)for(var r=0;r<e.uninterpretedOption.length;++r)s.perfetto.protos.UninterpretedOption.encode(e.uninterpretedOption[r],t.uint32(7994).fork()).ldelim();return t},Dr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FieldOptions;e.pos<r;){var a=e.uint32();switch(a>>>3){case 2:n.packed=e.bool();break;case 999:n.uninterpretedOption&&n.uninterpretedOption.length||(n.uninterpretedOption=[]),n.uninterpretedOption.push(s.perfetto.protos.UninterpretedOption.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Dr.fromObject=function(e){if(e instanceof s.perfetto.protos.FieldOptions)return e;var t=new s.perfetto.protos.FieldOptions;if(null!=e.packed&&(t.packed=Boolean(e.packed)),e.uninterpretedOption){if(!Array.isArray(e.uninterpretedOption))throw TypeError(\".perfetto.protos.FieldOptions.uninterpretedOption: array expected\");t.uninterpretedOption=[];for(var r=0;r<e.uninterpretedOption.length;++r){if(\"object\"!=typeof e.uninterpretedOption[r])throw TypeError(\".perfetto.protos.FieldOptions.uninterpretedOption: object expected\");t.uninterpretedOption[r]=s.perfetto.protos.UninterpretedOption.fromObject(e.uninterpretedOption[r])}}return t},Dr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.uninterpretedOption=[]),t.defaults&&(r.packed=!1),null!=e.packed&&e.hasOwnProperty(\"packed\")&&(r.packed=e.packed),e.uninterpretedOption&&e.uninterpretedOption.length){r.uninterpretedOption=[];for(var n=0;n<e.uninterpretedOption.length;++n)r.uninterpretedOption[n]=s.perfetto.protos.UninterpretedOption.toObject(e.uninterpretedOption[n],t)}return r},Dr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Dr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FieldOptions\"},Dr),r.FieldDescriptorProto=(P.prototype.name=\"\",P.prototype.number=0,P.prototype.label=1,P.prototype.type=1,P.prototype.typeName=\"\",P.prototype.extendee=\"\",P.prototype.defaultValue=\"\",P.prototype.options=null,P.prototype.oneofIndex=0,P.create=function(e){return new P(e)},P.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.extendee&&Object.hasOwnProperty.call(e,\"extendee\")&&t.uint32(18).string(e.extendee),null!=e.number&&Object.hasOwnProperty.call(e,\"number\")&&t.uint32(24).int32(e.number),null!=e.label&&Object.hasOwnProperty.call(e,\"label\")&&t.uint32(32).int32(e.label),null!=e.type&&Object.hasOwnProperty.call(e,\"type\")&&t.uint32(40).int32(e.type),null!=e.typeName&&Object.hasOwnProperty.call(e,\"typeName\")&&t.uint32(50).string(e.typeName),null!=e.defaultValue&&Object.hasOwnProperty.call(e,\"defaultValue\")&&t.uint32(58).string(e.defaultValue),null!=e.options&&Object.hasOwnProperty.call(e,\"options\")&&s.perfetto.protos.FieldOptions.encode(e.options,t.uint32(66).fork()).ldelim(),null!=e.oneofIndex&&Object.hasOwnProperty.call(e,\"oneofIndex\")&&t.uint32(72).int32(e.oneofIndex),t},P.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.FieldDescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 3:n.number=e.int32();break;case 4:n.label=e.int32();break;case 5:n.type=e.int32();break;case 6:n.typeName=e.string();break;case 2:n.extendee=e.string();break;case 7:n.defaultValue=e.string();break;case 8:n.options=s.perfetto.protos.FieldOptions.decode(e,e.uint32());break;case 9:n.oneofIndex=e.int32();break;default:e.skipType(7&a)}}return n},P.fromObject=function(e){if(e instanceof s.perfetto.protos.FieldDescriptorProto)return e;var t=new s.perfetto.protos.FieldDescriptorProto;switch(null!=e.name&&(t.name=String(e.name)),null!=e.number&&(t.number=0|e.number),e.label){default:\"number\"==typeof e.label&&(t.label=e.label);break;case\"LABEL_OPTIONAL\":case 1:t.label=1;break;case\"LABEL_REQUIRED\":case 2:t.label=2;break;case\"LABEL_REPEATED\":case 3:t.label=3}switch(e.type){default:\"number\"==typeof e.type&&(t.type=e.type);break;case\"TYPE_DOUBLE\":case 1:t.type=1;break;case\"TYPE_FLOAT\":case 2:t.type=2;break;case\"TYPE_INT64\":case 3:t.type=3;break;case\"TYPE_UINT64\":case 4:t.type=4;break;case\"TYPE_INT32\":case 5:t.type=5;break;case\"TYPE_FIXED64\":case 6:t.type=6;break;case\"TYPE_FIXED32\":case 7:t.type=7;break;case\"TYPE_BOOL\":case 8:t.type=8;break;case\"TYPE_STRING\":case 9:t.type=9;break;case\"TYPE_GROUP\":case 10:t.type=10;break;case\"TYPE_MESSAGE\":case 11:t.type=11;break;case\"TYPE_BYTES\":case 12:t.type=12;break;case\"TYPE_UINT32\":case 13:t.type=13;break;case\"TYPE_ENUM\":case 14:t.type=14;break;case\"TYPE_SFIXED32\":case 15:t.type=15;break;case\"TYPE_SFIXED64\":case 16:t.type=16;break;case\"TYPE_SINT32\":case 17:t.type=17;break;case\"TYPE_SINT64\":case 18:t.type=18}if(null!=e.typeName&&(t.typeName=String(e.typeName)),null!=e.extendee&&(t.extendee=String(e.extendee)),null!=e.defaultValue&&(t.defaultValue=String(e.defaultValue)),null!=e.options){if(\"object\"!=typeof e.options)throw TypeError(\".perfetto.protos.FieldDescriptorProto.options: object expected\");t.options=s.perfetto.protos.FieldOptions.fromObject(e.options)}return null!=e.oneofIndex&&(t.oneofIndex=0|e.oneofIndex),t},P.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.extendee=\"\",r.number=0,r.label=t.enums===String?\"LABEL_OPTIONAL\":1,r.type=t.enums===String?\"TYPE_DOUBLE\":1,r.typeName=\"\",r.defaultValue=\"\",r.options=null,r.oneofIndex=0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.extendee&&e.hasOwnProperty(\"extendee\")&&(r.extendee=e.extendee),null!=e.number&&e.hasOwnProperty(\"number\")&&(r.number=e.number),null!=e.label&&e.hasOwnProperty(\"label\")&&(r.label=t.enums!==String||void 0===s.perfetto.protos.FieldDescriptorProto.Label[e.label]?e.label:s.perfetto.protos.FieldDescriptorProto.Label[e.label]),null!=e.type&&e.hasOwnProperty(\"type\")&&(r.type=t.enums!==String||void 0===s.perfetto.protos.FieldDescriptorProto.Type[e.type]?e.type:s.perfetto.protos.FieldDescriptorProto.Type[e.type]),null!=e.typeName&&e.hasOwnProperty(\"typeName\")&&(r.typeName=e.typeName),null!=e.defaultValue&&e.hasOwnProperty(\"defaultValue\")&&(r.defaultValue=e.defaultValue),null!=e.options&&e.hasOwnProperty(\"options\")&&(r.options=s.perfetto.protos.FieldOptions.toObject(e.options,t)),null!=e.oneofIndex&&e.hasOwnProperty(\"oneofIndex\")&&(r.oneofIndex=e.oneofIndex),r},P.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},P.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.FieldDescriptorProto\"},P.Type=(e={},(t=Object.create(e))[e[1]=\"TYPE_DOUBLE\"]=1,t[e[2]=\"TYPE_FLOAT\"]=2,t[e[3]=\"TYPE_INT64\"]=3,t[e[4]=\"TYPE_UINT64\"]=4,t[e[5]=\"TYPE_INT32\"]=5,t[e[6]=\"TYPE_FIXED64\"]=6,t[e[7]=\"TYPE_FIXED32\"]=7,t[e[8]=\"TYPE_BOOL\"]=8,t[e[9]=\"TYPE_STRING\"]=9,t[e[10]=\"TYPE_GROUP\"]=10,t[e[11]=\"TYPE_MESSAGE\"]=11,t[e[12]=\"TYPE_BYTES\"]=12,t[e[13]=\"TYPE_UINT32\"]=13,t[e[14]=\"TYPE_ENUM\"]=14,t[e[15]=\"TYPE_SFIXED32\"]=15,t[e[16]=\"TYPE_SFIXED64\"]=16,t[e[17]=\"TYPE_SINT32\"]=17,t[e[18]=\"TYPE_SINT64\"]=18,t),P.Label=(e={},(t=Object.create(e))[e[1]=\"LABEL_OPTIONAL\"]=1,t[e[2]=\"LABEL_REQUIRED\"]=2,t[e[3]=\"LABEL_REPEATED\"]=3,t),P),r.OneofDescriptorProto=(xr.prototype.name=\"\",xr.prototype.options=null,xr.create=function(e){return new xr(e)},xr.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.options&&Object.hasOwnProperty.call(e,\"options\")&&s.perfetto.protos.OneofOptions.encode(e.options,t.uint32(18).fork()).ldelim(),t},xr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.OneofDescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.options=s.perfetto.protos.OneofOptions.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},xr.fromObject=function(e){if(e instanceof s.perfetto.protos.OneofDescriptorProto)return e;var t=new s.perfetto.protos.OneofDescriptorProto;if(null!=e.name&&(t.name=String(e.name)),null!=e.options){if(\"object\"!=typeof e.options)throw TypeError(\".perfetto.protos.OneofDescriptorProto.options: object expected\");t.options=s.perfetto.protos.OneofOptions.fromObject(e.options)}return t},xr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.options=null),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.options&&e.hasOwnProperty(\"options\")&&(r.options=s.perfetto.protos.OneofOptions.toObject(e.options,t)),r},xr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},xr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.OneofDescriptorProto\"},xr),r.EnumDescriptorProto=(Lr.prototype.name=\"\",Lr.prototype.value=i.emptyArray,Lr.prototype.reservedName=i.emptyArray,Lr.create=function(e){return new Lr(e)},Lr.encode=function(e,t){if(t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.value&&e.value.length)for(var r=0;r<e.value.length;++r)s.perfetto.protos.EnumValueDescriptorProto.encode(e.value[r],t.uint32(18).fork()).ldelim();if(null!=e.reservedName&&e.reservedName.length)for(r=0;r<e.reservedName.length;++r)t.uint32(42).string(e.reservedName[r]);return t},Lr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EnumDescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.value&&n.value.length||(n.value=[]),n.value.push(s.perfetto.protos.EnumValueDescriptorProto.decode(e,e.uint32()));break;case 5:n.reservedName&&n.reservedName.length||(n.reservedName=[]),n.reservedName.push(e.string());break;default:e.skipType(7&a)}}return n},Lr.fromObject=function(e){if(e instanceof s.perfetto.protos.EnumDescriptorProto)return e;var t=new s.perfetto.protos.EnumDescriptorProto;if(null!=e.name&&(t.name=String(e.name)),e.value){if(!Array.isArray(e.value))throw TypeError(\".perfetto.protos.EnumDescriptorProto.value: array expected\");t.value=[];for(var r=0;r<e.value.length;++r){if(\"object\"!=typeof e.value[r])throw TypeError(\".perfetto.protos.EnumDescriptorProto.value: object expected\");t.value[r]=s.perfetto.protos.EnumValueDescriptorProto.fromObject(e.value[r])}}if(e.reservedName){if(!Array.isArray(e.reservedName))throw TypeError(\".perfetto.protos.EnumDescriptorProto.reservedName: array expected\");t.reservedName=[];for(r=0;r<e.reservedName.length;++r)t.reservedName[r]=String(e.reservedName[r])}return t},Lr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.value=[],r.reservedName=[]),t.defaults&&(r.name=\"\"),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),e.value&&e.value.length){r.value=[];for(var n=0;n<e.value.length;++n)r.value[n]=s.perfetto.protos.EnumValueDescriptorProto.toObject(e.value[n],t)}if(e.reservedName&&e.reservedName.length){r.reservedName=[];for(n=0;n<e.reservedName.length;++n)r.reservedName[n]=e.reservedName[n]}return r},Lr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Lr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnumDescriptorProto\"},Lr),r.EnumValueDescriptorProto=(Fr.prototype.name=\"\",Fr.prototype.number=0,Fr.create=function(e){return new Fr(e)},Fr.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.number&&Object.hasOwnProperty.call(e,\"number\")&&t.uint32(16).int32(e.number),t},Fr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.EnumValueDescriptorProto;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.number=e.int32();break;default:e.skipType(7&a)}}return n},Fr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.EnumValueDescriptorProto?e:(t=new s.perfetto.protos.EnumValueDescriptorProto,null!=e.name&&(t.name=String(e.name)),null!=e.number&&(t.number=0|e.number),t)},Fr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.number=0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.number&&e.hasOwnProperty(\"number\")&&(r.number=e.number),r},Fr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Fr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.EnumValueDescriptorProto\"},Fr),r.OneofOptions=(Ur.create=function(e){return new Ur(e)},Ur.encode=function(e,t){return t=t||a.create()},Ur.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.OneofOptions;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Ur.fromObject=function(e){return e instanceof s.perfetto.protos.OneofOptions?e:new s.perfetto.protos.OneofOptions},Ur.toObject=function(){return{}},Ur.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Ur.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.OneofOptions\"},Ur),r.MetatraceCategories=(e={},(t=Object.create(e))[e[1]=\"QUERY_TIMELINE\"]=1,t[e[2]=\"QUERY_DETAILED\"]=2,t[e[4]=\"FUNCTION_CALL\"]=4,t[e[8]=\"DB\"]=8,t[e[16]=\"API_TIMELINE\"]=16,t[e[0]=\"NONE\"]=0,t[e[31]=\"ALL\"]=31,t),r.TraceSummarySpec=(Br.prototype.metricSpec=i.emptyArray,Br.prototype.query=i.emptyArray,Br.prototype.metricTemplateSpec=i.emptyArray,Br.create=function(e){return new Br(e)},Br.encode=function(e,t){if(t=t||a.create(),null!=e.metricSpec&&e.metricSpec.length)for(var r=0;r<e.metricSpec.length;++r)s.perfetto.protos.TraceMetricV2Spec.encode(e.metricSpec[r],t.uint32(10).fork()).ldelim();if(null!=e.query&&e.query.length)for(r=0;r<e.query.length;++r)s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.query[r],t.uint32(18).fork()).ldelim();if(null!=e.metricTemplateSpec&&e.metricTemplateSpec.length)for(r=0;r<e.metricTemplateSpec.length;++r)s.perfetto.protos.TraceMetricV2TemplateSpec.encode(e.metricTemplateSpec[r],t.uint32(26).fork()).ldelim();return t},Br.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummarySpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.metricSpec&&n.metricSpec.length||(n.metricSpec=[]),n.metricSpec.push(s.perfetto.protos.TraceMetricV2Spec.decode(e,e.uint32()));break;case 2:n.query&&n.query.length||(n.query=[]),n.query.push(s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32()));break;case 3:n.metricTemplateSpec&&n.metricTemplateSpec.length||(n.metricTemplateSpec=[]),n.metricTemplateSpec.push(s.perfetto.protos.TraceMetricV2TemplateSpec.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},Br.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceSummarySpec)return e;var t=new s.perfetto.protos.TraceSummarySpec;if(e.metricSpec){if(!Array.isArray(e.metricSpec))throw TypeError(\".perfetto.protos.TraceSummarySpec.metricSpec: array expected\");t.metricSpec=[];for(var r=0;r<e.metricSpec.length;++r){if(\"object\"!=typeof e.metricSpec[r])throw TypeError(\".perfetto.protos.TraceSummarySpec.metricSpec: object expected\");t.metricSpec[r]=s.perfetto.protos.TraceMetricV2Spec.fromObject(e.metricSpec[r])}}if(e.query){if(!Array.isArray(e.query))throw TypeError(\".perfetto.protos.TraceSummarySpec.query: array expected\");t.query=[];for(r=0;r<e.query.length;++r){if(\"object\"!=typeof e.query[r])throw TypeError(\".perfetto.protos.TraceSummarySpec.query: object expected\");t.query[r]=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.query[r])}}if(e.metricTemplateSpec){if(!Array.isArray(e.metricTemplateSpec))throw TypeError(\".perfetto.protos.TraceSummarySpec.metricTemplateSpec: array expected\");t.metricTemplateSpec=[];for(r=0;r<e.metricTemplateSpec.length;++r){if(\"object\"!=typeof e.metricTemplateSpec[r])throw TypeError(\".perfetto.protos.TraceSummarySpec.metricTemplateSpec: object expected\");t.metricTemplateSpec[r]=s.perfetto.protos.TraceMetricV2TemplateSpec.fromObject(e.metricTemplateSpec[r])}}return t},Br.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.metricSpec=[],r.query=[],r.metricTemplateSpec=[]),e.metricSpec&&e.metricSpec.length){r.metricSpec=[];for(var n=0;n<e.metricSpec.length;++n)r.metricSpec[n]=s.perfetto.protos.TraceMetricV2Spec.toObject(e.metricSpec[n],t)}if(e.query&&e.query.length){r.query=[];for(n=0;n<e.query.length;++n)r.query[n]=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.query[n],t)}if(e.metricTemplateSpec&&e.metricTemplateSpec.length){r.metricTemplateSpec=[];for(n=0;n<e.metricTemplateSpec.length;++n)r.metricTemplateSpec[n]=s.perfetto.protos.TraceMetricV2TemplateSpec.toObject(e.metricTemplateSpec[n],t)}return r},Br.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Br.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummarySpec\"},Br),r.TraceSummary=(jr.prototype.metricBundles=i.emptyArray,jr.prototype.metadata=i.emptyArray,jr.create=function(e){return new jr(e)},jr.encode=function(e,t){if(t=t||a.create(),null!=e.metadata&&e.metadata.length)for(var r=0;r<e.metadata.length;++r)s.perfetto.protos.TraceSummary.Metadata.encode(e.metadata[r],t.uint32(18).fork()).ldelim();if(null!=e.metricBundles&&e.metricBundles.length)for(r=0;r<e.metricBundles.length;++r)s.perfetto.protos.TraceMetricV2Bundle.encode(e.metricBundles[r],t.uint32(26).fork()).ldelim();return t},jr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummary;e.pos<r;){var a=e.uint32();switch(a>>>3){case 3:n.metricBundles&&n.metricBundles.length||(n.metricBundles=[]),n.metricBundles.push(s.perfetto.protos.TraceMetricV2Bundle.decode(e,e.uint32()));break;case 2:n.metadata&&n.metadata.length||(n.metadata=[]),n.metadata.push(s.perfetto.protos.TraceSummary.Metadata.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},jr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceSummary)return e;var t=new s.perfetto.protos.TraceSummary;if(e.metricBundles){if(!Array.isArray(e.metricBundles))throw TypeError(\".perfetto.protos.TraceSummary.metricBundles: array expected\");t.metricBundles=[];for(var r=0;r<e.metricBundles.length;++r){if(\"object\"!=typeof e.metricBundles[r])throw TypeError(\".perfetto.protos.TraceSummary.metricBundles: object expected\");t.metricBundles[r]=s.perfetto.protos.TraceMetricV2Bundle.fromObject(e.metricBundles[r])}}if(e.metadata){if(!Array.isArray(e.metadata))throw TypeError(\".perfetto.protos.TraceSummary.metadata: array expected\");t.metadata=[];for(r=0;r<e.metadata.length;++r){if(\"object\"!=typeof e.metadata[r])throw TypeError(\".perfetto.protos.TraceSummary.metadata: object expected\");t.metadata[r]=s.perfetto.protos.TraceSummary.Metadata.fromObject(e.metadata[r])}}return t},jr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.metadata=[],r.metricBundles=[]),e.metadata&&e.metadata.length){r.metadata=[];for(var n=0;n<e.metadata.length;++n)r.metadata[n]=s.perfetto.protos.TraceSummary.Metadata.toObject(e.metadata[n],t)}if(e.metricBundles&&e.metricBundles.length){r.metricBundles=[];for(n=0;n<e.metricBundles.length;++n)r.metricBundles[n]=s.perfetto.protos.TraceMetricV2Bundle.toObject(e.metricBundles[n],t)}return r},jr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},jr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummary\"},jr.Metadata=(Hr.prototype.key=\"\",Hr.prototype.value=\"\",Hr.create=function(e){return new Hr(e)},Hr.encode=function(e,t){return t=t||a.create(),null!=e.key&&Object.hasOwnProperty.call(e,\"key\")&&t.uint32(10).string(e.key),null!=e.value&&Object.hasOwnProperty.call(e,\"value\")&&t.uint32(18).string(e.value),t},Hr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceSummary.Metadata;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.key=e.string();break;case 2:n.value=e.string();break;default:e.skipType(7&a)}}return n},Hr.fromObject=function(e){var t;return e instanceof s.perfetto.protos.TraceSummary.Metadata?e:(t=new s.perfetto.protos.TraceSummary.Metadata,null!=e.key&&(t.key=String(e.key)),null!=e.value&&(t.value=String(e.value)),t)},Hr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.key=\"\",r.value=\"\"),null!=e.key&&e.hasOwnProperty(\"key\")&&(r.key=e.key),null!=e.value&&e.hasOwnProperty(\"value\")&&(r.value=e.value),r},Hr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Hr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceSummary.Metadata\"},Hr),jr),r.TraceMetricV2Spec=(D.prototype.id=\"\",D.prototype.dimensionsSpecs=i.emptyArray,D.prototype.dimensions=i.emptyArray,D.prototype.value=\"\",D.prototype.query=null,D.prototype.dimensionUniqueness=0,D.prototype.bundleId=\"\",D.prototype.unit=null,D.prototype.customUnit=null,D.prototype.polarity=0,Object.defineProperty(D.prototype,\"unitOneof\",{get:i.oneOfGetter(e=[\"unit\",\"customUnit\"]),set:i.oneOfSetter(e)}),D.create=function(e){return new D(e)},D.encode=function(e,t){if(t=t||a.create(),null!=e.id&&Object.hasOwnProperty.call(e,\"id\")&&t.uint32(10).string(e.id),null!=e.dimensions&&e.dimensions.length)for(var r=0;r<e.dimensions.length;++r)t.uint32(18).string(e.dimensions[r]);if(null!=e.value&&Object.hasOwnProperty.call(e,\"value\")&&t.uint32(26).string(e.value),null!=e.query&&Object.hasOwnProperty.call(e,\"query\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.query,t.uint32(34).fork()).ldelim(),null!=e.dimensionsSpecs&&e.dimensionsSpecs.length)for(r=0;r<e.dimensionsSpecs.length;++r)s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.encode(e.dimensionsSpecs[r],t.uint32(42).fork()).ldelim();return null!=e.dimensionUniqueness&&Object.hasOwnProperty.call(e,\"dimensionUniqueness\")&&t.uint32(48).int32(e.dimensionUniqueness),null!=e.bundleId&&Object.hasOwnProperty.call(e,\"bundleId\")&&t.uint32(58).string(e.bundleId),null!=e.unit&&Object.hasOwnProperty.call(e,\"unit\")&&t.uint32(64).int32(e.unit),null!=e.customUnit&&Object.hasOwnProperty.call(e,\"customUnit\")&&t.uint32(74).string(e.customUnit),null!=e.polarity&&Object.hasOwnProperty.call(e,\"polarity\")&&t.uint32(80).int32(e.polarity),t},D.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Spec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.id=e.string();break;case 5:n.dimensionsSpecs&&n.dimensionsSpecs.length||(n.dimensionsSpecs=[]),n.dimensionsSpecs.push(s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.decode(e,e.uint32()));break;case 2:n.dimensions&&n.dimensions.length||(n.dimensions=[]),n.dimensions.push(e.string());break;case 3:n.value=e.string();break;case 4:n.query=s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32());break;case 6:n.dimensionUniqueness=e.int32();break;case 7:n.bundleId=e.string();break;case 8:n.unit=e.int32();break;case 9:n.customUnit=e.string();break;case 10:n.polarity=e.int32();break;default:e.skipType(7&a)}}return n},D.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Spec)return e;var t=new s.perfetto.protos.TraceMetricV2Spec;if(null!=e.id&&(t.id=String(e.id)),e.dimensionsSpecs){if(!Array.isArray(e.dimensionsSpecs))throw TypeError(\".perfetto.protos.TraceMetricV2Spec.dimensionsSpecs: array expected\");t.dimensionsSpecs=[];for(var r=0;r<e.dimensionsSpecs.length;++r){if(\"object\"!=typeof e.dimensionsSpecs[r])throw TypeError(\".perfetto.protos.TraceMetricV2Spec.dimensionsSpecs: object expected\");t.dimensionsSpecs[r]=s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.fromObject(e.dimensionsSpecs[r])}}if(e.dimensions){if(!Array.isArray(e.dimensions))throw TypeError(\".perfetto.protos.TraceMetricV2Spec.dimensions: array expected\");t.dimensions=[];for(r=0;r<e.dimensions.length;++r)t.dimensions[r]=String(e.dimensions[r])}if(null!=e.value&&(t.value=String(e.value)),null!=e.query){if(\"object\"!=typeof e.query)throw TypeError(\".perfetto.protos.TraceMetricV2Spec.query: object expected\");t.query=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.query)}switch(e.dimensionUniqueness){default:\"number\"==typeof e.dimensionUniqueness&&(t.dimensionUniqueness=e.dimensionUniqueness);break;case\"DIMENSION_UNIQUENESS_UNSPECIFIED\":case 0:t.dimensionUniqueness=0;break;case\"NOT_UNIQUE\":case 1:t.dimensionUniqueness=1;break;case\"UNIQUE\":case 2:t.dimensionUniqueness=2}switch(null!=e.bundleId&&(t.bundleId=String(e.bundleId)),e.unit){default:\"number\"==typeof e.unit&&(t.unit=e.unit);break;case\"METRIC_UNIT_UNSPECIFIED\":case 0:t.unit=0;break;case\"COUNT\":case 1:t.unit=1;break;case\"TIME_NANOS\":case 2:t.unit=2;break;case\"TIME_MICROS\":case 3:t.unit=3;break;case\"TIME_MILLIS\":case 4:t.unit=4;break;case\"TIME_SECONDS\":case 5:t.unit=5;break;case\"TIME_HOURS\":case 6:t.unit=6;break;case\"TIME_DAYS\":case 7:t.unit=7;break;case\"BYTES\":case 8:t.unit=8;break;case\"KILOBYTES\":case 9:t.unit=9;break;case\"MEGABYTES\":case 10:t.unit=10;break;case\"SECONDS_PER_HOUR\":case 11:t.unit=11;break;case\"BOUNDED_PERCENTAGE\":case 12:t.unit=12;break;case\"PERCENTAGE\":case 13:t.unit=13;break;case\"MINUTES_PER_DAY\":case 14:t.unit=14;break;case\"MILLI_AMPS\":case 15:t.unit=15;break;case\"PERCENT_PER_HOUR\":case 16:t.unit=16;break;case\"MILLI_AMP_HOURS\":case 17:t.unit=17;break;case\"PERCENT_PER_HOUR_LEGACY\":case 18:t.unit=18;break;case\"MILLI_WATTS\":case 19:t.unit=19;break;case\"COUNT_PER_SECOND\":case 20:t.unit=20;break;case\"KILOBYTES_PER_HOUR\":case 21:t.unit=21;break;case\"MILLI_WATT_HOURS\":case 22:t.unit=22;break;case\"COUNT_PER_HOUR\":case 23:t.unit=23;break;case\"COUNT_DELTA_PER_HOUR\":case 24:t.unit=24;break;case\"BYTES_DELTA_PER_HOUR\":case 25:t.unit=25;break;case\"CORRELATION_COEFFICIENT\":case 26:t.unit=26;break;case\"MILLI_VOLTS\":case 27:t.unit=27}switch(null!=e.customUnit&&(t.customUnit=String(e.customUnit)),e.polarity){default:\"number\"==typeof e.polarity&&(t.polarity=e.polarity);break;case\"POLARITY_UNSPECIFIED\":case 0:t.polarity=0;break;case\"HIGHER_IS_BETTER\":case 1:t.polarity=1;break;case\"LOWER_IS_BETTER\":case 2:t.polarity=2;break;case\"NOT_APPLICABLE\":case 3:t.polarity=3}return t},D.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.dimensions=[],r.dimensionsSpecs=[]),t.defaults&&(r.id=\"\",r.value=\"\",r.query=null,r.dimensionUniqueness=t.enums===String?\"DIMENSION_UNIQUENESS_UNSPECIFIED\":0,r.bundleId=\"\",r.polarity=t.enums===String?\"POLARITY_UNSPECIFIED\":0),null!=e.id&&e.hasOwnProperty(\"id\")&&(r.id=e.id),e.dimensions&&e.dimensions.length){r.dimensions=[];for(var n=0;n<e.dimensions.length;++n)r.dimensions[n]=e.dimensions[n]}if(null!=e.value&&e.hasOwnProperty(\"value\")&&(r.value=e.value),null!=e.query&&e.hasOwnProperty(\"query\")&&(r.query=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.query,t)),e.dimensionsSpecs&&e.dimensionsSpecs.length){r.dimensionsSpecs=[];for(n=0;n<e.dimensionsSpecs.length;++n)r.dimensionsSpecs[n]=s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.toObject(e.dimensionsSpecs[n],t)}return null!=e.dimensionUniqueness&&e.hasOwnProperty(\"dimensionUniqueness\")&&(r.dimensionUniqueness=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.DimensionUniqueness[e.dimensionUniqueness]?e.dimensionUniqueness:s.perfetto.protos.TraceMetricV2Spec.DimensionUniqueness[e.dimensionUniqueness]),null!=e.bundleId&&e.hasOwnProperty(\"bundleId\")&&(r.bundleId=e.bundleId),null!=e.unit&&e.hasOwnProperty(\"unit\")&&(r.unit=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.MetricUnit[e.unit]?e.unit:s.perfetto.protos.TraceMetricV2Spec.MetricUnit[e.unit],t.oneofs)&&(r.unitOneof=\"unit\"),null!=e.customUnit&&e.hasOwnProperty(\"customUnit\")&&(r.customUnit=e.customUnit,t.oneofs)&&(r.unitOneof=\"customUnit\"),null!=e.polarity&&e.hasOwnProperty(\"polarity\")&&(r.polarity=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.MetricPolarity[e.polarity]?e.polarity:s.perfetto.protos.TraceMetricV2Spec.MetricPolarity[e.polarity]),r},D.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},D.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Spec\"},D.DimensionType=(e={},(t=Object.create(e))[e[0]=\"DIMENSION_TYPE_UNSPECIFIED\"]=0,t[e[1]=\"STRING\"]=1,t[e[2]=\"INT64\"]=2,t[e[3]=\"DOUBLE\"]=3,t),D.DimensionSpec=(Gr.prototype.name=\"\",Gr.prototype.type=0,Gr.create=function(e){return new Gr(e)},Gr.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.type&&Object.hasOwnProperty.call(e,\"type\")&&t.uint32(16).int32(e.type),t},Gr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Spec.DimensionSpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.type=e.int32();break;default:e.skipType(7&a)}}return n},Gr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Spec.DimensionSpec)return e;var t=new s.perfetto.protos.TraceMetricV2Spec.DimensionSpec;switch(null!=e.name&&(t.name=String(e.name)),e.type){default:\"number\"==typeof e.type&&(t.type=e.type);break;case\"DIMENSION_TYPE_UNSPECIFIED\":case 0:t.type=0;break;case\"STRING\":case 1:t.type=1;break;case\"INT64\":case 2:t.type=2;break;case\"DOUBLE\":case 3:t.type=3}return t},Gr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.type=t.enums===String?\"DIMENSION_TYPE_UNSPECIFIED\":0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.type&&e.hasOwnProperty(\"type\")&&(r.type=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.DimensionType[e.type]?e.type:s.perfetto.protos.TraceMetricV2Spec.DimensionType[e.type]),r},Gr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Gr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Spec.DimensionSpec\"},Gr),D.DimensionUniqueness=(e={},(t=Object.create(e))[e[0]=\"DIMENSION_UNIQUENESS_UNSPECIFIED\"]=0,t[e[1]=\"NOT_UNIQUE\"]=1,t[e[2]=\"UNIQUE\"]=2,t),D.MetricUnit=(e={},(t=Object.create(e))[e[0]=\"METRIC_UNIT_UNSPECIFIED\"]=0,t[e[1]=\"COUNT\"]=1,t[e[2]=\"TIME_NANOS\"]=2,t[e[3]=\"TIME_MICROS\"]=3,t[e[4]=\"TIME_MILLIS\"]=4,t[e[5]=\"TIME_SECONDS\"]=5,t[e[6]=\"TIME_HOURS\"]=6,t[e[7]=\"TIME_DAYS\"]=7,t[e[8]=\"BYTES\"]=8,t[e[9]=\"KILOBYTES\"]=9,t[e[10]=\"MEGABYTES\"]=10,t[e[11]=\"SECONDS_PER_HOUR\"]=11,t[e[12]=\"BOUNDED_PERCENTAGE\"]=12,t[e[13]=\"PERCENTAGE\"]=13,t[e[14]=\"MINUTES_PER_DAY\"]=14,t[e[15]=\"MILLI_AMPS\"]=15,t[e[16]=\"PERCENT_PER_HOUR\"]=16,t[e[17]=\"MILLI_AMP_HOURS\"]=17,t[e[18]=\"PERCENT_PER_HOUR_LEGACY\"]=18,t[e[19]=\"MILLI_WATTS\"]=19,t[e[20]=\"COUNT_PER_SECOND\"]=20,t[e[21]=\"KILOBYTES_PER_HOUR\"]=21,t[e[22]=\"MILLI_WATT_HOURS\"]=22,t[e[23]=\"COUNT_PER_HOUR\"]=23,t[e[24]=\"COUNT_DELTA_PER_HOUR\"]=24,t[e[25]=\"BYTES_DELTA_PER_HOUR\"]=25,t[e[26]=\"CORRELATION_COEFFICIENT\"]=26,t[e[27]=\"MILLI_VOLTS\"]=27,t),D.MetricPolarity=(e={},(t=Object.create(e))[e[0]=\"POLARITY_UNSPECIFIED\"]=0,t[e[1]=\"HIGHER_IS_BETTER\"]=1,t[e[2]=\"LOWER_IS_BETTER\"]=2,t[e[3]=\"NOT_APPLICABLE\"]=3,t),D),r.TraceMetricV2TemplateSpec=(x.prototype.idPrefix=\"\",x.prototype.dimensionsSpecs=i.emptyArray,x.prototype.dimensions=i.emptyArray,x.prototype.valueColumns=i.emptyArray,x.prototype.valueColumnSpecs=i.emptyArray,x.prototype.query=null,x.prototype.dimensionUniqueness=0,x.prototype.disableAutoBundling=!1,x.create=function(e){return new x(e)},x.encode=function(e,t){if(t=t||a.create(),null!=e.idPrefix&&Object.hasOwnProperty.call(e,\"idPrefix\")&&t.uint32(10).string(e.idPrefix),null!=e.dimensions&&e.dimensions.length)for(var r=0;r<e.dimensions.length;++r)t.uint32(18).string(e.dimensions[r]);if(null!=e.valueColumns&&e.valueColumns.length)for(r=0;r<e.valueColumns.length;++r)t.uint32(26).string(e.valueColumns[r]);if(null!=e.query&&Object.hasOwnProperty.call(e,\"query\")&&s.perfetto.protos.PerfettoSqlStructuredQuery.encode(e.query,t.uint32(34).fork()).ldelim(),null!=e.dimensionsSpecs&&e.dimensionsSpecs.length)for(r=0;r<e.dimensionsSpecs.length;++r)s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.encode(e.dimensionsSpecs[r],t.uint32(42).fork()).ldelim();if(null!=e.dimensionUniqueness&&Object.hasOwnProperty.call(e,\"dimensionUniqueness\")&&t.uint32(48).int32(e.dimensionUniqueness),null!=e.disableAutoBundling&&Object.hasOwnProperty.call(e,\"disableAutoBundling\")&&t.uint32(56).bool(e.disableAutoBundling),null!=e.valueColumnSpecs&&e.valueColumnSpecs.length)for(r=0;r<e.valueColumnSpecs.length;++r)s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec.encode(e.valueColumnSpecs[r],t.uint32(66).fork()).ldelim();return t},x.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2TemplateSpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.idPrefix=e.string();break;case 5:n.dimensionsSpecs&&n.dimensionsSpecs.length||(n.dimensionsSpecs=[]),n.dimensionsSpecs.push(s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.decode(e,e.uint32()));break;case 2:n.dimensions&&n.dimensions.length||(n.dimensions=[]),n.dimensions.push(e.string());break;case 3:n.valueColumns&&n.valueColumns.length||(n.valueColumns=[]),n.valueColumns.push(e.string());break;case 8:n.valueColumnSpecs&&n.valueColumnSpecs.length||(n.valueColumnSpecs=[]),n.valueColumnSpecs.push(s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec.decode(e,e.uint32()));break;case 4:n.query=s.perfetto.protos.PerfettoSqlStructuredQuery.decode(e,e.uint32());break;case 6:n.dimensionUniqueness=e.int32();break;case 7:n.disableAutoBundling=e.bool();break;default:e.skipType(7&a)}}return n},x.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2TemplateSpec)return e;var t=new s.perfetto.protos.TraceMetricV2TemplateSpec;if(null!=e.idPrefix&&(t.idPrefix=String(e.idPrefix)),e.dimensionsSpecs){if(!Array.isArray(e.dimensionsSpecs))throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.dimensionsSpecs: array expected\");t.dimensionsSpecs=[];for(var r=0;r<e.dimensionsSpecs.length;++r){if(\"object\"!=typeof e.dimensionsSpecs[r])throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.dimensionsSpecs: object expected\");t.dimensionsSpecs[r]=s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.fromObject(e.dimensionsSpecs[r])}}if(e.dimensions){if(!Array.isArray(e.dimensions))throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.dimensions: array expected\");t.dimensions=[];for(r=0;r<e.dimensions.length;++r)t.dimensions[r]=String(e.dimensions[r])}if(e.valueColumns){if(!Array.isArray(e.valueColumns))throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.valueColumns: array expected\");t.valueColumns=[];for(r=0;r<e.valueColumns.length;++r)t.valueColumns[r]=String(e.valueColumns[r])}if(e.valueColumnSpecs){if(!Array.isArray(e.valueColumnSpecs))throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.valueColumnSpecs: array expected\");t.valueColumnSpecs=[];for(r=0;r<e.valueColumnSpecs.length;++r){if(\"object\"!=typeof e.valueColumnSpecs[r])throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.valueColumnSpecs: object expected\");t.valueColumnSpecs[r]=s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec.fromObject(e.valueColumnSpecs[r])}}if(null!=e.query){if(\"object\"!=typeof e.query)throw TypeError(\".perfetto.protos.TraceMetricV2TemplateSpec.query: object expected\");t.query=s.perfetto.protos.PerfettoSqlStructuredQuery.fromObject(e.query)}switch(e.dimensionUniqueness){default:\"number\"==typeof e.dimensionUniqueness&&(t.dimensionUniqueness=e.dimensionUniqueness);break;case\"DIMENSION_UNIQUENESS_UNSPECIFIED\":case 0:t.dimensionUniqueness=0;break;case\"NOT_UNIQUE\":case 1:t.dimensionUniqueness=1;break;case\"UNIQUE\":case 2:t.dimensionUniqueness=2}return null!=e.disableAutoBundling&&(t.disableAutoBundling=Boolean(e.disableAutoBundling)),t},x.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.dimensions=[],r.valueColumns=[],r.dimensionsSpecs=[],r.valueColumnSpecs=[]),t.defaults&&(r.idPrefix=\"\",r.query=null,r.dimensionUniqueness=t.enums===String?\"DIMENSION_UNIQUENESS_UNSPECIFIED\":0,r.disableAutoBundling=!1),null!=e.idPrefix&&e.hasOwnProperty(\"idPrefix\")&&(r.idPrefix=e.idPrefix),e.dimensions&&e.dimensions.length){r.dimensions=[];for(var n=0;n<e.dimensions.length;++n)r.dimensions[n]=e.dimensions[n]}if(e.valueColumns&&e.valueColumns.length){r.valueColumns=[];for(n=0;n<e.valueColumns.length;++n)r.valueColumns[n]=e.valueColumns[n]}if(null!=e.query&&e.hasOwnProperty(\"query\")&&(r.query=s.perfetto.protos.PerfettoSqlStructuredQuery.toObject(e.query,t)),e.dimensionsSpecs&&e.dimensionsSpecs.length){r.dimensionsSpecs=[];for(n=0;n<e.dimensionsSpecs.length;++n)r.dimensionsSpecs[n]=s.perfetto.protos.TraceMetricV2Spec.DimensionSpec.toObject(e.dimensionsSpecs[n],t)}if(null!=e.dimensionUniqueness&&e.hasOwnProperty(\"dimensionUniqueness\")&&(r.dimensionUniqueness=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.DimensionUniqueness[e.dimensionUniqueness]?e.dimensionUniqueness:s.perfetto.protos.TraceMetricV2Spec.DimensionUniqueness[e.dimensionUniqueness]),null!=e.disableAutoBundling&&e.hasOwnProperty(\"disableAutoBundling\")&&(r.disableAutoBundling=e.disableAutoBundling),e.valueColumnSpecs&&e.valueColumnSpecs.length){r.valueColumnSpecs=[];for(n=0;n<e.valueColumnSpecs.length;++n)r.valueColumnSpecs[n]=s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec.toObject(e.valueColumnSpecs[n],t)}return r},x.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},x.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2TemplateSpec\"},x.ValueColumnSpec=(Vr.prototype.name=\"\",Vr.prototype.unit=null,Vr.prototype.customUnit=null,Vr.prototype.polarity=0,Object.defineProperty(Vr.prototype,\"unitOneof\",{get:i.oneOfGetter(e=[\"unit\",\"customUnit\"]),set:i.oneOfSetter(e)}),Vr.create=function(e){return new Vr(e)},Vr.encode=function(e,t){return t=t||a.create(),null!=e.name&&Object.hasOwnProperty.call(e,\"name\")&&t.uint32(10).string(e.name),null!=e.unit&&Object.hasOwnProperty.call(e,\"unit\")&&t.uint32(16).int32(e.unit),null!=e.customUnit&&Object.hasOwnProperty.call(e,\"customUnit\")&&t.uint32(26).string(e.customUnit),null!=e.polarity&&Object.hasOwnProperty.call(e,\"polarity\")&&t.uint32(32).int32(e.polarity),t},Vr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.name=e.string();break;case 2:n.unit=e.int32();break;case 3:n.customUnit=e.string();break;case 4:n.polarity=e.int32();break;default:e.skipType(7&a)}}return n},Vr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec)return e;var t=new s.perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec;switch(null!=e.name&&(t.name=String(e.name)),e.unit){default:\"number\"==typeof e.unit&&(t.unit=e.unit);break;case\"METRIC_UNIT_UNSPECIFIED\":case 0:t.unit=0;break;case\"COUNT\":case 1:t.unit=1;break;case\"TIME_NANOS\":case 2:t.unit=2;break;case\"TIME_MICROS\":case 3:t.unit=3;break;case\"TIME_MILLIS\":case 4:t.unit=4;break;case\"TIME_SECONDS\":case 5:t.unit=5;break;case\"TIME_HOURS\":case 6:t.unit=6;break;case\"TIME_DAYS\":case 7:t.unit=7;break;case\"BYTES\":case 8:t.unit=8;break;case\"KILOBYTES\":case 9:t.unit=9;break;case\"MEGABYTES\":case 10:t.unit=10;break;case\"SECONDS_PER_HOUR\":case 11:t.unit=11;break;case\"BOUNDED_PERCENTAGE\":case 12:t.unit=12;break;case\"PERCENTAGE\":case 13:t.unit=13;break;case\"MINUTES_PER_DAY\":case 14:t.unit=14;break;case\"MILLI_AMPS\":case 15:t.unit=15;break;case\"PERCENT_PER_HOUR\":case 16:t.unit=16;break;case\"MILLI_AMP_HOURS\":case 17:t.unit=17;break;case\"PERCENT_PER_HOUR_LEGACY\":case 18:t.unit=18;break;case\"MILLI_WATTS\":case 19:t.unit=19;break;case\"COUNT_PER_SECOND\":case 20:t.unit=20;break;case\"KILOBYTES_PER_HOUR\":case 21:t.unit=21;break;case\"MILLI_WATT_HOURS\":case 22:t.unit=22;break;case\"COUNT_PER_HOUR\":case 23:t.unit=23;break;case\"COUNT_DELTA_PER_HOUR\":case 24:t.unit=24;break;case\"BYTES_DELTA_PER_HOUR\":case 25:t.unit=25;break;case\"CORRELATION_COEFFICIENT\":case 26:t.unit=26;break;case\"MILLI_VOLTS\":case 27:t.unit=27}switch(null!=e.customUnit&&(t.customUnit=String(e.customUnit)),e.polarity){default:\"number\"==typeof e.polarity&&(t.polarity=e.polarity);break;case\"POLARITY_UNSPECIFIED\":case 0:t.polarity=0;break;case\"HIGHER_IS_BETTER\":case 1:t.polarity=1;break;case\"LOWER_IS_BETTER\":case 2:t.polarity=2;break;case\"NOT_APPLICABLE\":case 3:t.polarity=3}return t},Vr.toObject=function(e,t){var r={};return(t=t||{}).defaults&&(r.name=\"\",r.polarity=t.enums===String?\"POLARITY_UNSPECIFIED\":0),null!=e.name&&e.hasOwnProperty(\"name\")&&(r.name=e.name),null!=e.unit&&e.hasOwnProperty(\"unit\")&&(r.unit=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.MetricUnit[e.unit]?e.unit:s.perfetto.protos.TraceMetricV2Spec.MetricUnit[e.unit],t.oneofs)&&(r.unitOneof=\"unit\"),null!=e.customUnit&&e.hasOwnProperty(\"customUnit\")&&(r.customUnit=e.customUnit,t.oneofs)&&(r.unitOneof=\"customUnit\"),null!=e.polarity&&e.hasOwnProperty(\"polarity\")&&(r.polarity=t.enums!==String||void 0===s.perfetto.protos.TraceMetricV2Spec.MetricPolarity[e.polarity]?e.polarity:s.perfetto.protos.TraceMetricV2Spec.MetricPolarity[e.polarity]),r},Vr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Vr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2TemplateSpec.ValueColumnSpec\"},Vr),x),r.TraceMetricV2Bundle=(qr.prototype.bundleId=\"\",qr.prototype.row=i.emptyArray,qr.prototype.specs=i.emptyArray,qr.create=function(e){return new qr(e)},qr.encode=function(e,t){if(t=t||a.create(),null!=e.bundleId&&Object.hasOwnProperty.call(e,\"bundleId\")&&t.uint32(10).string(e.bundleId),null!=e.row&&e.row.length)for(var r=0;r<e.row.length;++r)s.perfetto.protos.TraceMetricV2Bundle.Row.encode(e.row[r],t.uint32(18).fork()).ldelim();if(null!=e.specs&&e.specs.length)for(r=0;r<e.specs.length;++r)s.perfetto.protos.TraceMetricV2Spec.encode(e.specs[r],t.uint32(26).fork()).ldelim();return t},qr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Bundle;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.bundleId=e.string();break;case 2:n.row&&n.row.length||(n.row=[]),n.row.push(s.perfetto.protos.TraceMetricV2Bundle.Row.decode(e,e.uint32()));break;case 3:n.specs&&n.specs.length||(n.specs=[]),n.specs.push(s.perfetto.protos.TraceMetricV2Spec.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},qr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Bundle)return e;var t=new s.perfetto.protos.TraceMetricV2Bundle;if(null!=e.bundleId&&(t.bundleId=String(e.bundleId)),e.row){if(!Array.isArray(e.row))throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.row: array expected\");t.row=[];for(var r=0;r<e.row.length;++r){if(\"object\"!=typeof e.row[r])throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.row: object expected\");t.row[r]=s.perfetto.protos.TraceMetricV2Bundle.Row.fromObject(e.row[r])}}if(e.specs){if(!Array.isArray(e.specs))throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.specs: array expected\");t.specs=[];for(r=0;r<e.specs.length;++r){if(\"object\"!=typeof e.specs[r])throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.specs: object expected\");t.specs[r]=s.perfetto.protos.TraceMetricV2Spec.fromObject(e.specs[r])}}return t},qr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.row=[],r.specs=[]),t.defaults&&(r.bundleId=\"\"),null!=e.bundleId&&e.hasOwnProperty(\"bundleId\")&&(r.bundleId=e.bundleId),e.row&&e.row.length){r.row=[];for(var n=0;n<e.row.length;++n)r.row[n]=s.perfetto.protos.TraceMetricV2Bundle.Row.toObject(e.row[n],t)}if(e.specs&&e.specs.length){r.specs=[];for(n=0;n<e.specs.length;++n)r.specs[n]=s.perfetto.protos.TraceMetricV2Spec.toObject(e.specs[n],t)}return r},qr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},qr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle\"},qr.Row=(zr.prototype.values=i.emptyArray,zr.prototype.dimension=i.emptyArray,zr.create=function(e){return new zr(e)},zr.encode=function(e,t){if(t=t||a.create(),null!=e.values&&e.values.length)for(var r=0;r<e.values.length;++r)s.perfetto.protos.TraceMetricV2Bundle.Row.Value.encode(e.values[r],t.uint32(10).fork()).ldelim();if(null!=e.dimension&&e.dimension.length)for(r=0;r<e.dimension.length;++r)s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.encode(e.dimension[r],t.uint32(18).fork()).ldelim();return t},zr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Bundle.Row;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.values&&n.values.length||(n.values=[]),n.values.push(s.perfetto.protos.TraceMetricV2Bundle.Row.Value.decode(e,e.uint32()));break;case 2:n.dimension&&n.dimension.length||(n.dimension=[]),n.dimension.push(s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.decode(e,e.uint32()));break;default:e.skipType(7&a)}}return n},zr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Bundle.Row)return e;var t=new s.perfetto.protos.TraceMetricV2Bundle.Row;if(e.values){if(!Array.isArray(e.values))throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.values: array expected\");t.values=[];for(var r=0;r<e.values.length;++r){if(\"object\"!=typeof e.values[r])throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.values: object expected\");t.values[r]=s.perfetto.protos.TraceMetricV2Bundle.Row.Value.fromObject(e.values[r])}}if(e.dimension){if(!Array.isArray(e.dimension))throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.dimension: array expected\");t.dimension=[];for(r=0;r<e.dimension.length;++r){if(\"object\"!=typeof e.dimension[r])throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.dimension: object expected\");t.dimension[r]=s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.fromObject(e.dimension[r])}}return t},zr.toObject=function(e,t){var r={};if(((t=t||{}).arrays||t.defaults)&&(r.values=[],r.dimension=[]),e.values&&e.values.length){r.values=[];for(var n=0;n<e.values.length;++n)r.values[n]=s.perfetto.protos.TraceMetricV2Bundle.Row.Value.toObject(e.values[n],t)}if(e.dimension&&e.dimension.length){r.dimension=[];for(n=0;n<e.dimension.length;++n)r.dimension[n]=s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.toObject(e.dimension[n],t)}return r},zr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},zr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle.Row\"},zr.Value=(Wr.prototype.nullValue=null,Wr.prototype.doubleValue=null,Object.defineProperty(Wr.prototype,\"valueOneof\",{get:i.oneOfGetter(t=[\"nullValue\",\"doubleValue\"]),set:i.oneOfSetter(t)}),Wr.create=function(e){return new Wr(e)},Wr.encode=function(e,t){return t=t||a.create(),null!=e.nullValue&&Object.hasOwnProperty.call(e,\"nullValue\")&&s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null.encode(e.nullValue,t.uint32(10).fork()).ldelim(),null!=e.doubleValue&&Object.hasOwnProperty.call(e,\"doubleValue\")&&t.uint32(17).double(e.doubleValue),t},Wr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Bundle.Row.Value;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null.decode(e,e.uint32());break;case 2:n.doubleValue=e.double();break;default:e.skipType(7&a)}}return n},Wr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Bundle.Row.Value)return e;var t=new s.perfetto.protos.TraceMetricV2Bundle.Row.Value;if(null!=e.nullValue){if(\"object\"!=typeof e.nullValue)throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.Value.nullValue: object expected\");t.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null.fromObject(e.nullValue)}return null!=e.doubleValue&&(t.doubleValue=Number(e.doubleValue)),t},Wr.toObject=function(e,t){t=t||{};var r={};return null!=e.nullValue&&e.hasOwnProperty(\"nullValue\")&&(r.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null.toObject(e.nullValue,t),t.oneofs)&&(r.valueOneof=\"nullValue\"),null!=e.doubleValue&&e.hasOwnProperty(\"doubleValue\")&&(r.doubleValue=t.json&&!isFinite(e.doubleValue)?String(e.doubleValue):e.doubleValue,t.oneofs)&&(r.valueOneof=\"doubleValue\"),r},Wr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Wr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle.Row.Value\"},Wr.Null=($r.create=function(e){return new $r(e)},$r.encode=function(e,t){return t=t||a.create()},$r.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},$r.fromObject=function(e){return e instanceof s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null?e:new s.perfetto.protos.TraceMetricV2Bundle.Row.Value.Null},$r.toObject=function(){return{}},$r.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},$r.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle.Row.Value.Null\"},$r),Wr),zr.Dimension=(Kr.prototype.stringValue=null,Kr.prototype.int64Value=null,Kr.prototype.doubleValue=null,Kr.prototype.nullValue=null,Object.defineProperty(Kr.prototype,\"valueOneof\",{get:i.oneOfGetter(t=[\"stringValue\",\"int64Value\",\"doubleValue\",\"nullValue\"]),set:i.oneOfSetter(t)}),Kr.create=function(e){return new Kr(e)},Kr.encode=function(e,t){return t=t||a.create(),null!=e.stringValue&&Object.hasOwnProperty.call(e,\"stringValue\")&&t.uint32(10).string(e.stringValue),null!=e.int64Value&&Object.hasOwnProperty.call(e,\"int64Value\")&&t.uint32(16).int64(e.int64Value),null!=e.doubleValue&&Object.hasOwnProperty.call(e,\"doubleValue\")&&t.uint32(25).double(e.doubleValue),null!=e.nullValue&&Object.hasOwnProperty.call(e,\"nullValue\")&&s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null.encode(e.nullValue,t.uint32(34).fork()).ldelim(),t},Kr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,n=new s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension;e.pos<r;){var a=e.uint32();switch(a>>>3){case 1:n.stringValue=e.string();break;case 2:n.int64Value=e.int64();break;case 3:n.doubleValue=e.double();break;case 4:n.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null.decode(e,e.uint32());break;default:e.skipType(7&a)}}return n},Kr.fromObject=function(e){if(e instanceof s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension)return e;var t=new s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension;if(null!=e.stringValue&&(t.stringValue=String(e.stringValue)),null!=e.int64Value&&(i.Long?(t.int64Value=i.Long.fromValue(e.int64Value)).unsigned=!1:\"string\"==typeof e.int64Value?t.int64Value=parseInt(e.int64Value,10):\"number\"==typeof e.int64Value?t.int64Value=e.int64Value:\"object\"==typeof e.int64Value&&(t.int64Value=new i.LongBits(e.int64Value.low>>>0,e.int64Value.high>>>0).toNumber())),null!=e.doubleValue&&(t.doubleValue=Number(e.doubleValue)),null!=e.nullValue){if(\"object\"!=typeof e.nullValue)throw TypeError(\".perfetto.protos.TraceMetricV2Bundle.Row.Dimension.nullValue: object expected\");t.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null.fromObject(e.nullValue)}return t},Kr.toObject=function(e,t){t=t||{};var r={};return null!=e.stringValue&&e.hasOwnProperty(\"stringValue\")&&(r.stringValue=e.stringValue,t.oneofs)&&(r.valueOneof=\"stringValue\"),null!=e.int64Value&&e.hasOwnProperty(\"int64Value\")&&(\"number\"==typeof e.int64Value?r.int64Value=t.longs===String?String(e.int64Value):e.int64Value:r.int64Value=t.longs===String?i.Long.prototype.toString.call(e.int64Value):t.longs===Number?new i.LongBits(e.int64Value.low>>>0,e.int64Value.high>>>0).toNumber():e.int64Value,t.oneofs)&&(r.valueOneof=\"int64Value\"),null!=e.doubleValue&&e.hasOwnProperty(\"doubleValue\")&&(r.doubleValue=t.json&&!isFinite(e.doubleValue)?String(e.doubleValue):e.doubleValue,t.oneofs)&&(r.valueOneof=\"doubleValue\"),null!=e.nullValue&&e.hasOwnProperty(\"nullValue\")&&(r.nullValue=s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null.toObject(e.nullValue,t),t.oneofs)&&(r.valueOneof=\"nullValue\"),r},Kr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Kr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle.Row.Dimension\"},Kr.Null=(Yr.create=function(e){return new Yr(e)},Yr.encode=function(e,t){return t=t||a.create()},Yr.decode=function(e,t){e instanceof o||(e=o.create(e));for(var r=void 0===t?e.len:e.pos+t,t=new s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null;e.pos<r;){var n=e.uint32();e.skipType(7&n)}return t},Yr.fromObject=function(e){return e instanceof s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null?e:new s.perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null},Yr.toObject=function(){return{}},Yr.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},Yr.getTypeUrl=function(e){return(e=void 0===e?\"type.googleapis.com\":e)+\"/perfetto.protos.TraceMetricV2Bundle.Row.Dimension.Null\"},Yr),Kr),zr),qr),r),L),ih=s),ih)),uh.default=e.default.perfetto.protos),uh;function l(e,t,r){n.rpc.Service.call(this,e,t,r)}function F(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function U(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function B(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function j(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function H(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function G(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function V(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function q(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function z(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function W(e){if(this.slices=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function $(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function K(e){if(this.bufferIds=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Y(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function J(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Q(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Z(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function X(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ee(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function te(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function re(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ne(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ae(e){if(this.eventsToObserve=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ie(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function oe(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function se(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function le(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ce(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ue(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function de(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function c(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function pe(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function fe(e){if(this.instanceStateChanges=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function he(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function me(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function u(e){if(this.producers=[],this.dataSources=[],this.tracingSessions=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ge(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function _e(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function d(e){if(this.bufferSizeKb=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function p(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ye(e){if(this.atraceCategories=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Te(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function f(e){if(this.specs=[],this.blocks=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function h(e){if(this.numeratorUnits=[],this.denominatorUnits=[],this.groups=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ve(e){if(this.counterIds=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function be(e){if(this.tags=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ee(e){if(this.availableCategories=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Se(e){if(this.observableEvents=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function m(e){if(this.bufferStats=[],this.chunkPayloadHistogramDef=[],this.writerStats=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function g(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ae(e){if(this.chunkPayloadHistogramCounts=[],this.chunkPayloadHistogramSum=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Oe(e){if(this.bytesDiscardedPerBuffer=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function _(e){if(this.buffers=[],this.dataSources=[],this.producers=[],this.activateTriggers=[],this.sessionSemaphores=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ce(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function we(e){if(this.producerNameFilter=[],this.producerNameRegexFilter=[],this.machineNameFilter=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function y(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ke(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ie(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Re(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ne(e){if(this.triggers=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Me(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Pe(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function De(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function xe(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Le(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Fe(e){if(this.rules=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ue(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Be(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function je(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function T(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function He(e){if(this.packageNameFilter=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ge(e){if(this.rules=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ve(e){if(this.matchAllPackages=[],this.matchAnyPackages=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function qe(e){if(this.logIds=[],this.filterTags=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ze(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function We(e){if(this.propertyName=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function $e(e){if(this.hwuiPackageNameFilter=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ke(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ye(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Je(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Qe(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ze(e){if(this.packageNameFilter=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Xe(e){if(this.pigweedHashAllowList=[],this.pigweedHashDenyList=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function et(e){if(this.groupOverrides=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function tt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function rt(e){if(this.traceFlags=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function nt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function at(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function it(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ot(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function st(e){if(this.kernelFlags=[],this.schedulerProviderEvents=[],this.memoryProviderEvents=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function lt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function v(e){if(this.ftraceEvents=[],this.atraceCategories=[],this.atraceApps=[],this.atraceCategoriesPreferSdk=[],this.syscallEvents=[],this.functionFilters=[],this.functionGraphRoots=[],this.kprobeEvents=[],this.tidsToTrace=[],this.tracefsOptions=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ct(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ut(e){if(this.rules=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function dt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function pt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ft(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ht(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function mt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function gt(e){if(this.counterIds=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function _t(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function yt(e){if(this.traceMetrics=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Tt(e){if(this.scanMountPoints=[],this.mountPointMapping=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function vt(e){if(this.scanRoots=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function bt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Et(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function St(e){if(this.batteryCounters=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function At(e){if(this.pushAtomId=[],this.rawPushAtomId=[],this.pullConfig=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ot(e){if(this.pullAtomId=[],this.rawPullAtomId=[],this.packages=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ct(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function b(e){if(this.quirks=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function E(e){if(this.processCmdline=[],this.pid=[],this.targetInstalledBy=[],this.heaps=[],this.excludeHeaps=[],this.heapSamplingIntervals=[],this.skipSymbolPrefix=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function wt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function kt(e){if(this.processCmdline=[],this.pid=[],this.targetInstalledBy=[],this.ignoredTypes=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function It(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function S(e){if(this.followers=[],this.targetCpu=[],this.targetInstalledBy=[],this.targetPid=[],this.targetCmdline=[],this.excludePid=[],this.excludeCmdline=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Rt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Nt(e){if(this.targetPid=[],this.targetCmdline=[],this.excludePid=[],this.excludeCmdline=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Mt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function A(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Pt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Dt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function xt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function O(e){if(this.meminfoCounters=[],this.vmstatCounters=[],this.statCounters=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Lt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function C(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function w(e){if(this.disabledCategories=[],this.enabledCategories=[],this.disabledTags=[],this.enabledTags=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ft(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ut(e){if(this.histograms=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Bt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function k(e){if(this.dataForTesting=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function jt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ht(e){if(this.methods=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Gt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Vt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function qt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function zt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Wt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function I(e){if(this.args=[],this.internedStrings=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function $t(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Kt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function R(e){if(this.referencedModules=[],this.filters=[],this.selectColumns=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Yt(e){if(this.columnNames=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Jt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Qt(e){if(this.columnNames=[],this.dependencies=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Zt(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Xt(e){if(this.intervalIntersect=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function er(e){if(this.stringRhs=[],this.doubleRhs=[],this.int64Rhs=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function tr(e){if(this.columnNames=[],this.aggregates=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function rr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function nr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ar(e){if(this.msg=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function N(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ir(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function or(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function sr(e){if(this.columnNames=[],this.batch=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function lr(e){if(this.cells=[],this.varintCells=[],this.float64Cells=[],this.blobCells=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function cr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function ur(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function dr(e){if(this.metricNames=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function pr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function fr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function hr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function mr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function gr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function _r(e){if(this.descriptors=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function yr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Tr(e){if(this.modules=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function vr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function br(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Er(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Sr(e){if(this.queries=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ar(e){if(this.results=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Or(e){if(this.modules=[],this.preambles=[],this.columns=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Cr(e){if(this.protoSpecs=[],this.textprotoSpecs=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function wr(e){if(this.metricIds=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function kr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ir(e){if(this.file=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Rr(e){if(this.dependency=[],this.publicDependency=[],this.weakDependency=[],this.messageType=[],this.enumType=[],this.extension=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function M(e){if(this.field=[],this.extension=[],this.nestedType=[],this.enumType=[],this.oneofDecl=[],this.reservedRange=[],this.reservedName=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Nr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Mr(e){if(this.name=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Pr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Dr(e){if(this.uninterpretedOption=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function P(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function xr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Lr(e){if(this.value=[],this.reservedName=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Fr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Ur(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Br(e){if(this.metricSpec=[],this.query=[],this.metricTemplateSpec=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function jr(e){if(this.metricBundles=[],this.metadata=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Hr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function D(e){if(this.dimensionsSpecs=[],this.dimensions=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Gr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function x(e){if(this.dimensionsSpecs=[],this.dimensions=[],this.valueColumns=[],this.valueColumnSpecs=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Vr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function qr(e){if(this.row=[],this.specs=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function zr(e){if(this.values=[],this.dimension=[],e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Wr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function $r(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Kr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}function Yr(e){if(e)for(var t=Object.keys(e),r=0;r<t.length;++r)null!=e[t[r]]&&(this[t[r]]=e[t[r]])}}function ph(){if(!lh){lh=1,Object.defineProperty(ch,\"__esModule\",{value:!0}),ch.MetatraceTrackId=void 0,ch.enableMetatracing=function(e){t=void 0===e||e===c.default.MetatraceCategories.NONE?a():e},ch.disableMetatracingAndGetTrace=function(){return t=void 0,function(){var e=[];for(const a of h)e.push((e=>{var t,r,n=c.default.PerfettoMetatrace.create({eventName:e.eventName,threadId:e.track,eventDurationNs:e.durNs});for([t,r]of Object.entries(e.args??{}))n.args.push(c.default.PerfettoMetatrace.Arg.create({key:t,value:r}));var a=u.default.Writer.create();return a.uint32(10),a.fork(),a.uint32(64).int64(e.startNs),a.uint32(464).int32(1),a.uint32(394).bytes(c.default.PerfettoMetatrace.encode(n).finish()),a.ldelim(),a.finish()})(a));var t=e.reduce((e,t)=>e+t.length,0),r=new Uint8Array(t);let n=0;for(const i of e)r.set(i,n),n+=i.length;return r}()},ch.isMetatracingEnabled=i,ch.getEnabledMetatracingCategories=function(){return t},ch.traceEvent=function(e,t,r){e=s(e,r);try{return t()}finally{l(e)}},ch.traceEventBegin=s,ch.traceEventEnd=l,ch.flattenArgs=function n(e,a=\"\"){if(\"object\"!=typeof e||null===e)return{[a]:String(e)};if(Array.isArray(e)){const i={};return e.forEach((e,t)=>{const r=a+`[${t}]`;Object.assign(i,n(e,r))}),i}const i={};Object.entries(e).forEach(([e,t])=>{const r=a?a+\".\"+e:e;Object.assign(i,n(t,r))});return i};var r,e=Jr,n=go();const c=e.__importDefault(dh()),u=e.__importDefault(Qr()),d=1e5,p=((e=r||(ch.MetatraceTrackId=r={}))[e.kMainThread=2]=\"kMainThread\",e[e.kOmniboxStatus=3]=\"kOmniboxStatus\",n.featureFlags.register({id:\"alwaysOnMetatracing\",name:\"Enable always-on-metatracing\",description:\"Enables trace events in the UI and trace processor\",defaultValue:!1})),f=n.featureFlags.register({id:\"detailedMetatracing\",name:\"Detailed metatracing\",description:\"Enables recording additional events for trace event\",defaultValue:!1});let t=function(){if(p.get())return a()}();const h=[],m=(new Date).getTime()-performance.now();function a(){return f.get()?c.default.MetatraceCategories.ALL:c.default.MetatraceCategories.QUERY_TIMELINE|c.default.MetatraceCategories.API_TIMELINE}function i(){return void 0!==t}function o(){return e=m+performance.now(),Math.round(1e6*e);var e}function s(e,t){return{eventName:e,startNs:o(),params:t}}function l(e){if(i())for(h.push({eventName:e.eventName,startNs:e.startNs,durNs:o()-e.startNs,track:e.params?.track??r.kMainThread,args:e.params?.args});h.length>d;)h.shift()}}return ch}var fh,hh,mh,gh={},_h={},yh={};function Th(){if(!fh){fh=1,Object.defineProperty(yh,\"__esModule\",{value:!0}),yh.ProtoRingBuffer=void 0;const s=Pe(),l=1073741824;yh.ProtoRingBuffer=class{mode;buf=new Uint8Array(131072);fastpath;rd=0;wr=0;constructor(e=\"PROTO_PREAMBLE\"){this.mode=e}append(e){(0,s.assertTrue)(this.wr<=this.buf.length),(0,s.assertTrue)(this.rd<=this.wr),this.rd===this.wr&&(this.rd=this.wr=0);var t=e.length;if(0!==t){if((0,s.assertTrue)(void 0===this.fastpath),this.rd===this.wr){var r=this.tryReadMessage(e,0,t);if(void 0!==r&&r.byteOffset+r.length===e.byteOffset+t)return void(this.fastpath=r)}r=this.buf.length-this.wr;if(r<t&&(this.buf.copyWithin(0,this.rd,this.wr),r+=this.rd,this.wr-=this.rd,this.rd=0,r<t)){let e=this.buf.length;for(;t>e-this.wr;)e+=131072;(0,s.assertTrue)(e<=2*l);r=new Uint8Array(e);r.set(this.buf),this.buf=r}this.buf.set(e,this.wr),this.wr+=t}}readMessage(){if(void 0!==this.fastpath){(0,s.assertTrue)(this.rd===this.wr);const e=this.fastpath;return this.fastpath=void 0,e}if((0,s.assertTrue)(this.rd<=this.wr),!(this.rd>=this.wr)){const e=this.tryReadMessage(this.buf,this.rd,this.wr);if(void 0!==e)return(0,s.assertTrue)(e.buffer===this.buf.buffer),(0,s.assertTrue)(0===this.buf.byteOffset),this.rd=e.byteOffset+e.length,e.slice()}}tryReadMessage(r,e,n){(0,s.assertTrue)(n<=r.length);let a=e;if(!(a>=n)){let t=0;if(\"PROTO_PREAMBLE\"===this.mode){e=r[a++];if(128<=e||2!=(7&e))throw new Error(`RPC framing error, unexpected tag ${e} @ offset `+(a-1));for(let e=0;;e+=7){if(a>=n)return;var i=r[a++];if(t|=(127&i)<<e>>>0,i<128)break}}else if(\"FIXED_SIZE\"===this.mode)for(let e=0;e<4;e++){if(a>=n)return;var o=255&r[a++];t|=o<<8*e>>>0}else(0,s.assertUnreachable)(this.mode);if(t>=l)throw new Error(`RPC framing error, message too large (${t} > `+l);e=a+t;if(!(n<e))return r.subarray(a,e)}}}}return yh}function vh(){if(hh)return _h;hh=1,Object.defineProperty(_h,\"__esModule\",{value:!0}),_h.EngineProxy=_h.EngineBase=void 0;const l=Jr.__importDefault(dh()),c=Ja(),u=Pe();var e=Th();const o=Ue();var d=l.default.TraceProcessorRpc.TraceProcessorMethod;const s=Me(),n=Tl();_h.EngineBase=class{txSeqId=0;rxSeqId=0;rxBuf=new e.ProtoRingBuffer;pendingParses=new Array;pendingEOFs=new Array;pendingResetTraceProcessors=new Array;pendingQueries=new Array;pendingRestoreTables=new Array;pendingComputeMetrics=new Array;pendingReadMetatrace;pendingRegisterSqlPackage;pendingAnalyzeStructuredQueries;pendingTraceSummary;_numRequestsPending=0;_failed=void 0;_queryLog=[];get queryLog(){return this._queryLog}onResponseReceived;onRpcResponseBytes(e){for(this.rxBuf.append(e);;){var t=this.rxBuf.readMessage();if(void 0===t)break;this.onRpcResponseMessage(t)}}onRpcResponseMessage(n){l.default.QueryResult.decode=(e,t)=>{var r=l.default.QueryResult.create();return r.rawQueryResult=e.buf.subarray(e.pos,e.pos+t),(0,u.assertTrue)(r.rawQueryResult.buffer===n.buffer),e.pos+=t,r};var e=l.default.TraceProcessorRpc.decode(n);void 0!==e.fatalError&&0<e.fatalError.length&&this.fail(\"\"+e.fatalError),e.seq!==this.rxSeqId+1&&0!==this.rxSeqId&&0!==e.seq&&this.fail(\"RPC sequence id mismatch \"+`cur=${e.seq} last=${this.rxSeqId} (ERR:rpc_seq)`),this.rxSeqId=e.seq;let t=!0;switch(e.response){case d.TPM_APPEND_TRACE_DATA:var r=(0,u.assertExists)(e.appendResult),a=(0,u.assertExists)(this.pendingParses.shift());(0,s.exists)(r.error)&&0<r.error.length?a.reject(r.error):a.resolve();break;case d.TPM_FINALIZE_TRACE_DATA:r=(0,u.assertExists)(e.finalizeDataResult),a=(0,u.assertExists)(this.pendingEOFs.shift());(0,s.exists)(r.error)&&0<r.error.length?a.reject(r.error):a.resolve();break;case d.TPM_RESET_TRACE_PROCESSOR:(0,u.assertExists)(this.pendingResetTraceProcessors.shift()).resolve();break;case d.TPM_RESTORE_INITIAL_TABLES:(0,u.assertExists)(this.pendingRestoreTables.shift()).resolve();break;case d.TPM_QUERY_STREAMING:r=(0,u.assertExists)(e.queryResult),a=(0,u.assertExists)(this.pendingQueries[0]);a.appendResultBatch(r.rawQueryResult),a.isComplete()?this.pendingQueries.shift():t=!1;break;case d.TPM_COMPUTE_METRIC:r=(0,u.assertExists)(e.metricResult),a=(0,u.assertExists)(this.pendingComputeMetrics.shift());(0,s.exists)(r.error)&&0<r.error.length?(i=new o.QueryError(\"ComputeMetric() error: \"+r.error,{query:\"COMPUTE_METRIC\"}),a.reject(i)):(i=r.metricsAsPrototext??r.metricsAsJson??r.metrics??\"\",a.resolve(i));break;case d.TPM_DISABLE_AND_READ_METATRACE:r=(0,u.assertExists)(e.metatrace);(0,u.assertExists)(this.pendingReadMetatrace).resolve(r),this.pendingReadMetatrace=void 0;break;case d.TPM_REGISTER_SQL_PACKAGE:var a=(0,u.assertExists)(e.registerSqlPackageResult),i=(0,u.assertExists)(this.pendingRegisterSqlPackage);(0,s.exists)(a.error)&&0<a.error.length?i.reject(a.error):i.resolve();break;case d.TPM_SUMMARIZE_TRACE:r=(0,u.assertExists)(e.traceSummaryResult);(0,u.assertExists)(this.pendingTraceSummary).resolve(r),this.pendingTraceSummary=void 0;break;case d.TPM_ANALYZE_STRUCTURED_QUERY:a=(0,u.assertExists)(e.analyzeStructuredQueryResult);(0,u.assertExists)(this.pendingAnalyzeStructuredQueries).resolve(a),this.pendingAnalyzeStructuredQueries=void 0;break;case d.TPM_ENABLE_METATRACE:break;default:console.log(\"Unexpected TraceProcessor response received: \",e.response)}t&&--this._numRequestsPending,this.onResponseReceived?.()}parse(e){var t=(0,c.defer)(),r=(this.pendingParses.push(t),l.default.TraceProcessorRpc.create());return r.request=d.TPM_APPEND_TRACE_DATA,r.appendTraceData=e,this.rpcSendRequest(r),t}notifyEof(){var e=(0,c.defer)(),t=(this.pendingEOFs.push(e),l.default.TraceProcessorRpc.create());return t.request=d.TPM_FINALIZE_TRACE_DATA,this.rpcSendRequest(t),e}resetTraceProcessor({tokenizeOnly:e,cropTrackEvents:t,ingestFtraceInRawTable:r,analyzeTraceProtoContent:n,ftraceDropUntilAllCpusValid:a}){var i=(0,c.defer)(),o=(this.pendingResetTraceProcessors.push(i),l.default.TraceProcessorRpc.create()),s=(o.request=d.TPM_RESET_TRACE_PROCESSOR,o.resetTraceProcessorArgs=new l.default.ResetTraceProcessorArgs);return s.dropTrackEventDataBefore=t?l.default.ResetTraceProcessorArgs.DropTrackEventDataBefore.TRACK_EVENT_RANGE_OF_INTEREST:l.default.ResetTraceProcessorArgs.DropTrackEventDataBefore.NO_DROP,s.ingestFtraceInRawTable=r,s.analyzeTraceProtoContent=n,s.ftraceDropUntilAllCpusValid=a,s.parsingMode=e?l.default.ResetTraceProcessorArgs.ParsingMode.TOKENIZE_ONLY:l.default.ResetTraceProcessorArgs.ParsingMode.DEFAULT,this.rpcSendRequest(o),i}restoreInitialTables(){var e=(0,c.defer)(),t=(this.pendingRestoreTables.push(e),l.default.TraceProcessorRpc.create());return t.request=d.TPM_RESTORE_INITIAL_TABLES,this.rpcSendRequest(t),e}async computeMetric(e,t){var r=(0,c.defer)(),n=(this.pendingComputeMetrics.push(r),l.default.TraceProcessorRpc.create()),a=(n.request=d.TPM_COMPUTE_METRIC,n.computeMetricArgs=new l.default.ComputeMetricArgs);if(a.metricNames=e,\"json\"===t)a.format=l.default.ComputeMetricArgs.ResultFormat.JSON;else if(\"prototext\"===t)a.format=l.default.ComputeMetricArgs.ResultFormat.TEXTPROTO;else{if(\"proto\"!==t)throw new Error(\"Unknown compute metric format \"+t);a.format=l.default.ComputeMetricArgs.ResultFormat.BINARY_PROTOBUF}return this.rpcSendRequest(n),r}summarizeTrace(e,t,r,n){if(this.pendingTraceSummary)return Promise.reject(new Error(\"Already summarizing trace\"));if(0===e.length)return Promise.reject(new Error(\"No summary specs provided\"));var a=(0,c.defer)(),i=l.default.TraceProcessorRpc.create(),o=(i.request=d.TPM_SUMMARIZE_TRACE,i.traceSummaryArgs=new l.default.TraceSummaryArgs),s=new l.default.TraceSummaryArgs.ComputationSpec;switch(t?s.metricIds=t:s.runAllMetrics=!0,r&&(s.metadataQueryId=r),o.computationSpec=s,\"string\"==typeof e[0]?o.textprotoSpecs=e:o.protoSpecs=e,n){case\"prototext\":o.outputFormat=l.default.TraceSummaryArgs.Format.TEXTPROTO;break;case\"proto\":o.outputFormat=l.default.TraceSummaryArgs.Format.BINARY_PROTOBUF;break;default:(0,u.assertUnreachable)(n)}return this.pendingTraceSummary=a,this.rpcSendRequest(i),a}streamingQuery(e,t){var r=l.default.TraceProcessorRpc.create(),t=(r.request=d.TPM_QUERY_STREAMING,r.queryArgs=new l.default.QueryArgs,r.queryArgs.sqlQuery=e,t&&(r.queryArgs.tag=t),(0,o.createQueryResult)({query:e}));return this.pendingQueries.push(t),this.rpcSendRequest(r),t}logQueryStart(e,t){e={query:e,tag:t,startTime:performance.now()};return this._queryLog.push(e),100<this._queryLog.length&&this._queryLog.shift(),e}async query(e,t){var r=this.logQueryStart(e);try{var n=await this.streamingQuery(e,t);return r.success=!0,n}catch(e){throw a(e),r.success=!1,e}finally{r.endTime=performance.now()}}async tryQuery(t,e){try{var r=await this.query(t,e);return(0,n.okResult)(r)}catch(e){t=\"message\"in e?\"\"+e.message:\"\"+e;return(0,n.errResult)(t)}}enableMetatrace(e){var t=l.default.TraceProcessorRpc.create();t.request=d.TPM_ENABLE_METATRACE,void 0!==e&&e!==l.default.MetatraceCategories.NONE&&(t.enableMetatraceArgs=new l.default.EnableMetatraceArgs,t.enableMetatraceArgs.categories=e),this.rpcSendRequest(t)}stopAndGetMetatrace(){var e,t;return this.pendingReadMetatrace?Promise.reject(new Error(\"Already finalising a metatrace\")):(e=(0,c.defer)(),(t=l.default.TraceProcessorRpc.create()).request=d.TPM_DISABLE_AND_READ_METATRACE,this.pendingReadMetatrace=e,this.rpcSendRequest(t),e)}registerSqlPackages(e){var t,r,n;return this.pendingRegisterSqlPackage?Promise.reject(new Error(\"Already registering SQL package\")):(t=(0,c.defer)(),(r=l.default.TraceProcessorRpc.create()).request=d.TPM_REGISTER_SQL_PACKAGE,(n=r.registerSqlPackageArgs=new l.default.RegisterSqlPackageArgs).packageName=e.name,n.modules=e.modules,n.allowOverride=!0,this.pendingRegisterSqlPackage=t,this.rpcSendRequest(r),t)}analyzeStructuredQuery(e){var t,r;return this.pendingAnalyzeStructuredQueries?Promise.reject(new Error(\"Already analyzing structured queries\")):(t=(0,c.defer)(),(r=l.default.TraceProcessorRpc.create()).request=d.TPM_ANALYZE_STRUCTURED_QUERY,(r.analyzeStructuredQueryArgs=new l.default.AnalyzeStructuredQueryArgs).queries=e,this.pendingAnalyzeStructuredQueries=t,this.rpcSendRequest(r),t)}rpcSendRequest(e){e.seq=this.txSeqId++;var t=l.default.TraceProcessorRpcStream.create(),e=(t.msg.push(e),l.default.TraceProcessorRpcStream.encode(t).finish());++this._numRequestsPending,this.rpcSendRequestBytes(e)}get engineId(){return this.id}get numRequestsPending(){return this._numRequestsPending}getProxy(e){return new t(this,e)}fail(e){throw this._failed=e,new Error(e)}get failed(){return this._failed}};class t{engine;tag;disposed=!1;get queryLog(){return this.engine.queryLog}constructor(e,t){this.engine=e,this.tag=t}async query(e,t){return this.disposed?(0,o.createQueryResult)({query:e}):this.engine.query(e,t)}async tryQuery(e,t){return this.disposed?(0,n.errResult)(`EngineProxy ${this.tag} was disposed`):this.engine.tryQuery(e,t)}async computeMetric(e,t){return this.disposed?(0,c.defer)():this.engine.computeMetric(e,t)}summarizeTrace(e,t,r,n){return this.engine.summarizeTrace(e,t,r,n)}enableMetatrace(e){this.engine.enableMetatrace(e)}stopAndGetMetatrace(){return this.engine.stopAndGetMetatrace()}analyzeStructuredQuery(e){return this.engine.analyzeStructuredQuery(e)}get engineId(){return this.engine.id}getProxy(e){return this.engine.getProxy(this.tag+\"/\"+e)}get numRequestsPending(){return this.engine.numRequestsPending}get mode(){return this.engine.mode}get failed(){return this.engine.failed}[Symbol.dispose](){this.disposed=!0}}function a(e){var t=(new Error).stack;\"captureStackTrace\"in Error?Error.captureStackTrace(e,a):Object.defineProperty(e,\"stack\",{value:t,writable:!0,configurable:!0})}return _h.EngineProxy=t,_h}function bh(){if(!mh){mh=1,Object.defineProperty(gh,\"__esModule\",{value:!0}),gh.HttpRpcEngine=void 0;const a=Jr.__importDefault(dh()),i=Af(),t=Pe();var e=vh();class o extends e.EngineBase{mode=\"HTTP_RPC\";id;requestQueue=new Array;websocket;connected=!1;disposed=!1;queue=[];isProcessingQueue=!1;static rpcPort=\"9001\";constructor(e){super(),this.id=e}rpcSendRequestBytes(e){if(void 0===this.websocket){if(this.disposed)return;var t=`ws://${o.hostAndPort}/websocket`;this.websocket=new WebSocket(t),this.websocket.onopen=()=>this.onWebsocketConnected(),this.websocket.onmessage=e=>this.onWebsocketMessage(e),this.websocket.onclose=e=>this.onWebsocketClosed(e),this.websocket.onerror=e=>super.fail(`WebSocket error rs=${e.target?.readyState} (ERR:ws)`)}this.connected?this.websocket.send(e):this.requestQueue.push(e)}onWebsocketConnected(){for(;;){var e=this.requestQueue.shift();if(void 0===e)break;(0,t.assertExists)(this.websocket).send(e)}this.connected=!0}onWebsocketClosed(e){this.disposed||(1006===e.code&&this.connected?(console.log(\"Websocket closed, reconnecting\"),this.websocket=void 0,this.connected=!1,this.rpcSendRequestBytes(new Uint8Array)):super.fail(`Websocket closed (${e.code}: ${e.reason}) (ERR:ws)`))}onWebsocketMessage(e){e=(0,t.assertExists)(e.data);this.queue.push(e),this.processQueue()}async processQueue(){if(!this.isProcessingQueue){for(this.isProcessingQueue=!0;0<this.queue.length;)try{var e=await(0,t.assertExists)(this.queue.shift()).arrayBuffer();super.onRpcResponseBytes(new Uint8Array(e))}catch(e){(0,t.reportError)(e)}this.isProcessingQueue=!1}}static async checkConnection(){var e=`http://${o.hostAndPort}/`,t={connected:!1};console.info(`It's safe to ignore the ERR_CONNECTION_REFUSED on ${e} below. `+\"That might happen while probing the external native accelerator. The error is non-fatal and unlikely to be the culprit for any UI bug.\");try{var r,n=await(0,i.fetchWithTimeout)(e+\"status\",{method:\"post\",cache:\"no-cache\"},2e3);200!==n.status?t.failure=n.status+\" - \"+n.statusText:(r=new Uint8Array(await n.arrayBuffer()),t.status=a.default.StatusResult.decode(r),t.connected=!0)}catch(e){t.failure=\"\"+e}return t}static get hostAndPort(){return\"127.0.0.1:\"+o.rpcPort}[Symbol.dispose](){this.disposed=!0,this.connected=!1;var e=this.websocket;this.websocket=void 0,e?.close()}}gh.HttpRpcEngine=o}return gh}var Eh,Sh,Ah={},Oh={};function Ch(){if(!Eh){Eh=1,Object.defineProperty(Oh,\"__esModule\",{value:!0}),Oh.initAssets=function(){t=(0,e.getServingRoot)()},Oh.assetSrc=function(e){return t+e};const e=Af();let t=\"\"}return Oh}function wh(){if(!Sh){Sh=1,Object.defineProperty(Ah,\"__esModule\",{value:!0}),Ah.WasmEngineProxy=void 0,Ah.initWasm=function(){r=new Worker((0,n.assetSrc)(\"engine_bundle.js\"))};const n=Ch(),a=Pe();var e=vh();let r;class t extends e.EngineBase{mode=\"WASM\";id;port;worker;constructor(e){super(),this.id=e;var e=new MessageChannel,t=e.port1;this.port=e.port2,this.worker=(0,a.assertExists)(r),r=new Worker((0,n.assetSrc)(\"engine_bundle.js\")),this.worker.postMessage(t,[t]),this.port.onmessage=this.onMessage.bind(this)}onMessage(e){(0,a.assertTrue)(e.data instanceof Uint8Array),super.onRpcResponseBytes(e.data)}rpcSendRequestBytes(e){this.port.postMessage(e)}[Symbol.dispose](){this.worker.terminate()}}Ah.WasmEngineProxy=t}return Ah}var kh,Ih={};function Rh(){if(!kh){kh=1,Object.defineProperty(Ih,\"__esModule\",{value:!0}),Ih.TraceMultipleFilesStream=Ih.TraceHttpStream=Ih.TraceBufferStream=Ih.TraceFileStream=void 0;const t=Ja(),s=Pe(),l=Me();class c{traceFile;reader;pendingRead;bytesRead=0;constructor(e){this.traceFile=e,this.reader=new FileReader,this.reader.onloadend=()=>this.onLoad()}readChunk(){var e=Math.min(this.bytesRead+33554432,this.traceFile.size),e=this.traceFile.slice(this.bytesRead,e);return this.pendingRead=(0,t.defer)(),this.reader.readAsArrayBuffer(e),this.pendingRead}onLoad(){var e,t=(0,s.assertExists)(this.pendingRead);this.pendingRead=void 0,this.reader.error?t.reject(this.reader.error):(e=(0,s.assertExists)(this.reader.result),this.bytesRead+=e.byteLength,t.resolve({data:new Uint8Array(e),eof:this.bytesRead>=this.traceFile.size,bytesRead:this.bytesRead,bytesTotal:this.traceFile.size}))}}Ih.TraceFileStream=c;Ih.TraceBufferStream=class{traceBuf;bytesRead=0;constructor(e){(0,s.assertTrue)(e instanceof ArrayBuffer),this.traceBuf=e}readChunk(){(0,s.assertTrue)(this.bytesRead<=this.traceBuf.byteLength);var e=Math.min(33554432,this.traceBuf.byteLength-this.bytesRead),t=new Uint8Array(this.traceBuf,this.bytesRead,e);return this.bytesRead+=e,Promise.resolve({data:t,eof:this.bytesRead>=this.traceBuf.byteLength,bytesRead:this.bytesRead,bytesTotal:this.traceBuf.byteLength})}};Ih.TraceHttpStream=class{bytesRead=0;bytesTotal=0;uri;httpStream;constructor(e){(0,s.assertTrue)(e.startsWith(\"http://\")||e.startsWith(\"https://\")),this.uri=e}async readChunk(){if(void 0===this.httpStream){var e=await fetch(this.uri);if(200!==e.status)throw new Error(`HTTP ${e.status} - `+e.statusText);var t=e.headers.get(\"Content-Length\");this.bytesTotal=(0,l.exists)(t)?Number.parseInt(t,10):0,this.httpStream=e.body.getReader()}let r=!1,n=0;for(var a=[];!r&&n<33554432;){var i=await this.httpStream.read();i.value&&(a.push(i.value),n+=i.value.length),r=i.done}let o;if(1===a.length)o=a[0];else{o=new Uint8Array(n);let e=0;for(const s of a)o.set(s,e),e+=s.length}return this.bytesRead+=o.length,{data:o,eof:r,bytesRead:this.bytesRead,bytesTotal:this.bytesTotal}}};Ih.TraceMultipleFilesStream=class{traceFiles;state={kind:\"HEADER\"};bytesRead;bytesTotal;index=0;stream;constructor(e){this.traceFiles=e,this.stream=new c(e[this.index]),this.bytesRead=0,this.bytesTotal=this.traceFiles.reduce((e,t)=>e+512+512*Math.ceil(t.size/512),1024)}async readChunk(){switch(this.state.kind){case\"HEADER\":var t=new Uint8Array(512),r=this.traceFiles[this.index].name;for(let e=0;e<Math.max(r.length,99);++e)t[e]=r.charCodeAt(e);var e=this.traceFiles[this.index].size.toString(8);if(12<=e.length)throw new Error(\"Trace file size is too big to encode as tar file\");var n=e.padStart(12,\"0\");for(let e=0;e<n.length;++e)t[124+e]=n.charCodeAt(e);return t[156]=48,t[257]=117,t[258]=115,t[259]=116,t[260]=97,t[261]=114,t[263]=48,t[264]=48,this.bytesRead+=512,{data:t,eof:!(this.state={kind:\"CONTENT\"}),bytesRead:this.bytesRead,bytesTotal:this.bytesTotal};case\"CONTENT\":var{data:e,eof:a,bytesRead:i,bytesTotal:o}=await this.stream.readChunk();return a&&(this.state={kind:\"CONTENT_PADDING\",lastBlockSize:o%512}),this.bytesRead+=i,{data:e,eof:!1,bytesRead:this.bytesRead,bytesTotal:this.bytesTotal};case\"CONTENT_PADDING\":a=this.state.lastBlockSize;if(this.index==this.traceFiles.length-1?this.state={kind:\"EOF\"}:(this.state={kind:\"HEADER\"},this.stream=new c(this.traceFiles[++this.index])),0===a)return this.readChunk();(0,s.assertTrue)(0<a&&a<512);o=512-a;return this.bytesRead+=o,{data:new Uint8Array(o),eof:!1,bytesRead:this.bytesRead,bytesTotal:this.bytesTotal};case\"EOF\":return this.bytesRead+=1024,{data:new Uint8Array(1024),eof:!0,bytesRead:this.bytesRead,bytesTotal:this.bytesTotal}}}}}return Ih}var Nh,Mh,Ph,Dh={},xh={};function Lh(){if(!Nh){Nh=1,Object.defineProperty(xh,\"__esModule\",{value:!0}),xh.APP_STATE_SCHEMA=xh.SERIALIZED_STATE_VERSION=void 0;var e=Ne();const i=Fe();xh.SERIALIZED_STATE_VERSION=1;var t=e.z.string().regex(/[-]?\\d+/).transform(e=>i.Time.fromRaw(BigInt(e))),r=e.z.discriminatedUnion(\"kind\",[e.z.object({kind:e.z.literal(\"TRACK_EVENT\"),trackKey:e.z.string(),eventId:e.z.string(),detailsPanel:e.z.unknown()}),e.z.object({kind:e.z.literal(\"AREA\"),start:t,end:t,trackUris:e.z.array(e.z.string()).readonly()})]),n=e.z.object({id:e.z.string(),start:t,color:e.z.string(),text:e.z.string()}).and(e.z.discriminatedUnion(\"noteType\",[e.z.object({noteType:e.z.literal(\"DEFAULT\")}),e.z.object({noteType:e.z.literal(\"SPAN\"),end:t})])),a=e.z.object({id:e.z.string(),state:e.z.any()});xh.APP_STATE_SCHEMA=e.z.object({version:e.z.number(),pinnedTracks:e.z.array(e.z.string()).default([]),viewport:e.z.object({start:t,end:t}).optional(),selection:e.z.array(r).default([]),notes:e.z.array(n).default([]),plugins:e.z.array(a).default([])})}return xh}function Fh(){if(!Mh){Mh=1,Object.defineProperty(Dh,\"__esModule\",{value:!0}),Dh.serializeAppState=function(e){var t=e.timeline.visibleWindow.toTimeSpan(),r=new Array;for(var[n,a]of e.notes.notes.entries())\"DEFAULT\"===a.noteType?r.push({noteType:\"DEFAULT\",id:n,start:a.timestamp,color:a.color,text:a.text}):\"SPAN\"===a.noteType&&r.push({noteType:\"SPAN\",id:n,start:a.start,end:a.end,color:a.color,text:a.text});var i=new Array,o=e.selection.selection;\"track_event\"===o.kind?i.push({kind:\"TRACK_EVENT\",trackKey:o.trackUri,eventId:o.eventId.toString(),detailsPanel:e.selection.getDetailsPanelForSelection()?.serializatonState()}):\"area\"===o.kind&&i.push({kind:\"AREA\",trackUris:o.trackUris,start:o.start,end:o.end});var s=new Array,o=e.getPluginStoreForSerialization();for(var[l,c]of Object.entries(o))s.push({id:l,state:c});return{version:u.SERIALIZED_STATE_VERSION,pinnedTracks:e.workspace.pinnedTracks.map(e=>e.uri).filter(e=>void 0!==e),viewport:{start:t.start,end:t.end},notes:r,selection:i,plugins:s}},Dh.parseAppState=function(e){e=u.APP_STATE_SCHEMA.safeParse(e);if(e.success)return e.data.version==u.SERIALIZED_STATE_VERSION?(0,t.okResult)(e.data):(0,t.errResult)(\"SERIALIZED_STATE_VERSION mismatch \"+`(actual: ${e.data.version}, `+`expected: ${u.SERIALIZED_STATE_VERSION})`);return(0,t.errResult)(e.error.toString())},Dh.deserializeAppStatePhase1=function(r,e){e.getPluginStoreForSerialization().edit(e=>{for(const t of r.plugins??[])e[t.id]=t.state??{}})},Dh.deserializeAppStatePhase2=function(e,t){void 0!==e.viewport&&t.timeline.updateVisibleTime(new o.TimeSpan(e.viewport.start,e.viewport.end));for(const a of e.pinnedTracks){var r=t.workspace.getTrackByUri(a);r&&r.pin()}for(const i of e.notes){var n={id:i.id,timestamp:i.start,color:i.color,text:i.text};\"DEFAULT\"===i.noteType?t.notes.addNote({...n}):\"SPAN\"===i.noteType&&t.notes.addSpanNote({...n,start:n.timestamp,end:i.end})}t.selection.deserialize(e.selection[0])},Dh.JsonSerialize=function(e){return JSON.stringify(e,(e,t)=>\"bigint\"==typeof t?t.toString():t)};const u=Lh(),o=Fe(),t=Tl()}return Dh}function Uh(){if(!Ph){Ph=1,Object.defineProperty(rh,\"__esModule\",{value:!0}),rh.loadTrace=async function(e,t){_(e,\"Opening trace\");var r=\"\"+ ++n,r=await async function(e,t){let r=!1;\"USE_HTTP_RPC_IF_AVAILABLE\"===e.httpRpc.newEngineMode&&(r=(await E.HttpRpcEngine.checkConnection()).connected);let n;r?(console.log(\"Opening trace using native accelerator over HTTP+RPC\"),n=new E.HttpRpcEngine(t)):(console.log(\"Opening trace using built-in WASM engine\"),(n=new i.WasmEngineProxy(t)).resetTraceProcessor({tokenizeOnly:!1,cropTrackEvents:s.get(),ingestFtraceInRawTable:l.get(),analyzeTraceProtoContent:c.get(),ftraceDropUntilAllCpusValid:u.get()}));n.onResponseReceived=()=>o.raf.scheduleFullRedraw(),(0,a.isMetatracingEnabled)()&&n.enableMetatrace((0,y.assertExists)((0,a.getEnabledMetatracingCategories)()));return n}(e,r);return async function(t,e,r){let n;var a=e.serializedAppState;if(\"FILE\"===e.type)n=new f.TraceFileStream(e.file);else if(\"ARRAY_BUFFER\"===e.type)n=new f.TraceBufferStream(e.buffer);else if(\"URL\"===e.type)n=new f.TraceHttpStream(e.url);else if(\"HTTP_RPC\"===e.type)n=void 0;else{if(\"MULTIPLE_FILES\"!==e.type)throw new Error(\"Unknown source: \"+JSON.stringify(e));n=new f.TraceMultipleFilesStream(e.files)}if(void 0!==n){for(var i=performance.now();;){var o,s=await n.readChunk(),l=(await r.parse(s.data),(performance.now()-i)/1e3);let e=\"Loading trace \";if(0<s.bytesTotal?(o=Math.round(s.bytesRead/s.bytesTotal*100),e+=o+\"%\"):e+=Math.round(s.bytesRead/1e6)+\" MB\",e+=` - ${Math.ceil(s.bytesRead/l/1e6)} MB/s`,_(t,e),s.eof)break}await r.notifyEof()}else(0,y.assertTrue)(r instanceof E.HttpRpcEngine),await r.restoreInitialTables();for(const d of t.extraSqlPackages)await r.registerSqlPackages(d);var e=await async function(e,t,r){var n=await async function(e){e=await e.query(\"select start_ts as startTs, end_ts as endTs from trace_bounds\"),e=e.firstRow({startTs:S.LONG,endTs:S.LONG});return new T.TimeSpan(T.Time.fromRaw(e.startTs),T.Time.fromRaw(e.endTs))}(e),a=await e.query(`select\n          ts,\n          clock_value as clockValue,\n          clock_name as clockName\n        from clock_snapshot\n        where\n          snapshot_id = 0 AND\n          clock_name in ('REALTIME', 'REALTIME_COARSE')\n        `),i=a.iter({ts:S.LONG,clockValue:S.LONG,clockName:S.STR});let o={clockName:\"\",ts:T.Time.ZERO,clockValue:T.Time.ZERO};for(let e=0;i.valid();i.next(),e++){if(\"REALTIME\"===i.clockName){o={clockName:i.clockName,ts:T.Time.fromRaw(i.ts),clockValue:T.Time.fromRaw(i.clockValue)};break}\"REALTIME_COARSE\"===i.clockName&&\"REALTIME\"!==o.clockName&&(o={clockName:i.clockName,ts:T.Time.fromRaw(i.ts),clockValue:T.Time.fromRaw(i.clockValue)})}var a=await(0,y.assertExists)(e).query(`select max(int_value) as tzOffMin from metadata\n        where name = 'timezone_off_mins'`),a=a.firstRow({tzOffMin:S.NUM_NULL}).tzOffMin??0,s=T.Time.sub(o.ts,o.clockValue);let l=\"\",c=\"\";switch(r.type){case\"FILE\":l=r.file.name.split(/[/\\\\]/).pop();var u=Math.ceil(r.file.size/1e6);l+=` (${u} MB)`;break;case\"URL\":c=r.url,l=c.split(\"/\").pop();break;case\"ARRAY_BUFFER\":l=r.title,c=r.url??\"\";u=Math.ceil(r.buffer.byteLength/1e6);l+=` (${u} MB)`;break;case\"HTTP_RPC\":l=\"RPC @ \"+E.HttpRpcEngine.hostAndPort}var d=await async function(e){e=await e.query(\"select str_value from metadata where name = 'trace_type'\");return 0===e.numRows()?void 0:e.firstRow({str_value:S.STR}).str_value}(e),p=0<(await e.query(\"select * from ftrace_event limit 1\")).numRows(),f=await e.query(`select str_value as uuid from metadata\n    where name = 'trace_uuid'`),f=0<f.numRows()?f.firstRow({uuid:S.STR}).uuid:\"\",t=(_(t,\"Caching trace...\"),await(0,v.cacheTrace)(r,f)),h=\"ARRAY_BUFFER\"===r.type&&!r.localOnly||\"FILE\"===r.type||\"URL\"===r.type;let m=void 0;{var g;\"URL\"===r.type&&r.url.endsWith(\"localtrace\")&&(g=await fetch(r.url.replace(\"localtrace\",\"file_info\"))).ok&&(m=await g.json())}return{...n,traceTitle:l,traceUrl:c,tzOffMin:a,unixOffset:s,cpus:await async function(e){var t=[],e=await e.query(\"select ucpu, cpu, ifnull(machine_id, 0) as machine from cpu\");for(var r=e.iter({ucpu:S.NUM,cpu:S.NUM,machine:S.NUM});r.valid();r.next())t.push(new b.Cpu(r.ucpu,r.cpu,r.machine));return t}(e),importErrors:await async function(e){e=await e.query(\"SELECT sum(value) as errs FROM stats WHERE severity != 'info'\");return e.firstRow({errs:S.NUM}).errs}(e),source:r,traceType:d,hasFtrace:p,uuid:f,cached:t,vizTracerSourceStorage:m,downloadable:h}}(r,t,e),c=m.TraceImpl.createInstanceForCore(t,r,e),u=(t.setActiveTrace(c),await async function(e,t,r,n){let a=e,i=t;e=await async function(e){e=await e.query(`select\n       name,\n       int_value as intValue\n       from metadata\n       where name = 'tracing_started_ns' or name = 'tracing_disabled_ns'\n       or name = 'all_data_source_started_ns'`);let t=T.Time.MIN,r=T.Time.MAX;var n=e.iter({name:S.STR,intValue:S.LONG_NULL});for(;n.valid();n.next()){var a=n.name,i=n.intValue;null!==i&&(\"tracing_disabled_ns\"===a?r=T.Time.min(r,T.Time.fromRaw(i)):t=T.Time.max(t,T.Time.fromRaw(i)))}return new T.TimeSpan(t,r)}(n);T.Time.max(a,e.start)<T.Time.min(i,e.end)&&(a=T.Time.max(a,e.start),i=T.Time.min(i,e.end));!r&&A.get()&&(t=await p(n),a=T.Time.max(a,t));e=await async function(e){var e=await e.query(`\n    SELECT min(ts) as start, max(ts) as end FROM ftrace_event;\n  `),{start:e,end:t}=e.firstRow({start:S.LONG_NULL,end:S.LONG_NULL});return null===e||null===t?null:new T.TimeSpan(T.Time.fromRaw(e),T.Time.fromRaw(t))}(n);null!==e&&(a=T.Time.min(e.start,i));return new T.TimeSpan(a,i)}(e.start,e.end,\"json\"===c.traceInfo.traceType,r)),u=(c.timeline.updateVisibleTime(u),e.cached?e.uuid:\"\");g.Router.navigate(\"#!/viewer?local_cache_key=\"+u),await async function(e){var t=e.engine;_(e,\"Creating slice summaries\"),await t.query(\"include perfetto module viz.summary.slices;\"),_(e,\"Creating counter summaries\"),await t.query(\"include perfetto module viz.summary.counters;\"),_(e,\"Creating thread summaries\"),await t.query(\"include perfetto module viz.summary.threads;\"),_(e,\"Creating processes summaries\"),await t.query(\"include perfetto module viz.summary.processes;\")}(c),await r.query(`\n    create perfetto function __max_layout_depth(track_count INT, track_ids STRING)\n    returns INT AS\n    select iif(\n      $track_count = 1,\n      (\n        select max_depth\n        from _slice_track_summary\n        where id = cast($track_ids AS int)\n      ),\n      (\n        select max(layout_depth)\n        from experimental_slice_layout($track_ids)\n      )\n    );\n  `),void 0!==a&&(0,h.deserializeAppStatePhase1)(a,c);await t.plugins.onTraceLoad(c,e=>{_(t,\"Running plugin: \"+e)}),function(e){for(const t of e.tabs.defaultTabs)e.tabs.showTab(t)}(c),_(t,\"Loading minimap\"),await c.minimap.load(e.start,e.end),\"json\"!==c.traceInfo.traceType&&O.get()&&0<(u=await p(r))&&c.notes.addNote({timestamp:u,color:\"#ff0000\",text:\"Reliable Range Start\"});await c.onTraceReady.notify(),void 0!==a&&(0,h.deserializeAppStatePhase2)(a,c);if(c.commands.hasStartupCommands()){_(t,\"Running startup commands\"),t.omnibox.disablePrompts();try{await c.commands.runStartupCommands()}finally{t.omnibox.enablePrompts()}}return c}(e,t,r)};const y=Pe(),T=Fe(),v=ah(),b=Gc(),a=ph();var e=go();const E=bh(),S=Ue(),i=wh(),f=Rh(),h=Fh(),o=K(),m=Bf(),g=Xl(),A=e.featureFlags.register({id:\"enableChromeReliableRangeZoom\",name:\"Enable Chrome reliable range zoom\",description:\"Automatically zoom into the reliable range for Chrome traces\",defaultValue:!1}),O=e.featureFlags.register({id:\"enableChromeReliableRangeAnnotation\",name:\"Enable Chrome reliable range annotation\",description:\"Automatically adds an annotation for the reliable range start\",defaultValue:!1}),s=e.featureFlags.register({id:\"cropTrackEvents\",name:\"Crop track events\",description:\"Ignores track events outside of the range of interest\",defaultValue:!1}),l=e.featureFlags.register({id:\"ingestFtraceInRawTable\",name:\"Ingest ftrace in raw table\",description:\"Enables ingestion of typed ftrace events into the raw table\",defaultValue:!0}),c=e.featureFlags.register({id:\"analyzeTraceProtoContent\",name:\"Analyze trace proto content\",description:\"Enables trace proto content analysis (experimental_proto_content table)\",defaultValue:!1}),u=e.featureFlags.register({id:\"ftraceDropUntilAllCpusValid\",name:\"Crop ftrace events\",description:\"Drop ftrace events until all per-cpu data streams are known to be valid\",defaultValue:!0});let n=0;function _(e,t){e.omnibox.showStatusMessage(t,0)}async function p(e){e=(await e.query(`SELECT RUN_METRIC('chrome/chrome_reliable_range.sql');\n       SELECT start FROM chrome_reliable_range`)).firstRow({start:S.LONG});return T.Time.fromRaw(e.start)}}return rh}var Bh,jh={};var Hh,Gh={};var Vh,qh,zh,Wh,$h,Kh,Yh={};function Jh(){if(qh)return $f;qh=1,Object.defineProperty($f,\"__esModule\",{value:!0}),$f.AppImpl=$f.AppContext=void 0;var e=Qc();const t=Pe(),r=Me(),n=function(){if(!Wf){Wf=1,Object.defineProperty(Kf,\"__esModule\",{value:!0}),Kf.ServiceWorkerController=void 0;var e=Af();const t=Pe(),r=K(),n=\"BYPASS_SERVICE_WORKER\";class a{static async isBypassed(){try{return await caches.has(n)}catch(e){return!1}}static async setBypass(e){try{e?await caches.open(n):await caches.delete(n)}catch(e){}}}Kf.ServiceWorkerController=class{servingRoot=(0,e.getServingRoot)();_bypassed=!1;_installing=!1;async setBypass(e){if(\"serviceWorker\"in navigator){if(this._bypassed=e){await a.setBypass(!0);for(const t of await navigator.serviceWorker.getRegistrations())await t.unregister()}else await a.setBypass(!1),window.localStorage&&window.localStorage.setItem(\"bypassDisabled\",\"1\"),this.install();r.raf.scheduleFullRedraw()}}onStateChange(e){r.raf.scheduleFullRedraw(),\"installing\"===e.state?this._installing=!0:\"activated\"===e.state&&(this._installing=!1)}monitorWorker(e){e&&(e.addEventListener(\"error\",e=>(0,t.reportError)(e)),e.addEventListener(\"statechange\",()=>this.onStateChange(e)),this.onStateChange(e))}async install(){var e,t,r=this.servingRoot.split(\"/\").slice(-2)[0];\"serviceWorker\"in navigator&&\"/\"===location.pathname&&(e=location.hostname,e=[\"127.0.0.1\",\"::1\",\"localhost\"].includes(e),t=window.localStorage&&\"1\"===window.localStorage.getItem(\"bypassDisabled\"),e&&!t&&await this.setBypass(!0),await a.isBypassed()?(this._bypassed=!0,console.log(\"Skipping service worker registration, disabled by the user\")):navigator.serviceWorker.register(\"/service_worker.js?v=\"+r).then(e=>{this.monitorWorker(e.installing),this.monitorWorker(e.active),e.addEventListener(\"updatefound\",()=>{this.monitorWorker(e.installing)})}))}get bypassed(){return this._bypassed}get installing(){return this._installing}}}return Kf}(),a=eh();var i=xp();const o=go(),s=Uh();var l=jp(),c=function(){if(!Bh){Bh=1,Object.defineProperty(jh,\"__esModule\",{value:!0}),jh.PageManagerImpl=void 0;const n=Jr.__importDefault(xe()),a=Pe();var e=Dp();const t=Xl(),i=wi();jh.PageManagerImpl=class{registry=new e.Registry(e=>e.route);previousPages=new Map;registerPage(e){return(0,a.assertTrue)(null!==/^\\/\\w*$/.exec(e.route)),(0,a.assertExists)(e.pluginId),this.registry.register(e)}renderPageForCurrentRoute(){const r=t.Router.parseFragment(location.hash);return this.previousPages.set(r.page,{page:r.page,subpage:r.subpage}),Array.from(this.previousPages.entries()).map(([e,{page:t,subpage:r}])=>{return[e,this.renderPageForRoute(t,r)??(0,a.assertExists)(this.renderPageForRoute(\"/\",\"\"))]}).map(([e,t])=>(0,n.default)(i.Gate,{open:e===r.page},t))}renderPageForRoute(e,t){e=this.registry.tryGet(e);if(void 0!==e)return e.render(t)}}}return jh}(),u=function(){if(Hh)return Gh;Hh=1,Object.defineProperty(Gh,\"__esModule\",{value:!0}),Gh.PerfManager=void 0;const a=Jr.__importDefault(xe()),r=K(),e=za(),t=je(),n=Ae();Gh.PerfManager=class{_enabled=!1;containers=[];get enabled(){return this._enabled}set enabled(t){this._enabled=t,r.raf.setPerfStatsEnabled(!0),this.containers.forEach(e=>e.setPerfStatsEnabled(t))}addContainer(t){return this.containers.push(t),{[Symbol.dispose]:()=>{var e=this.containers.indexOf(t);this.containers.splice(e,1)}}}renderPerfStats(){if(this._enabled){const n=this;let r=!1;return(0,a.default)(\".pf-perf-stats\",{oncreate(e){const t=e=>{r||(a.default.render(e,(0,a.default)(i,{perfMgr:n})),requestAnimationFrame(()=>t(e)))};t(e.dom)},onremove(){r=!0}})}}};class i{view({attrs:e}){return(0,a.default)(\".pf-perf-stats\",(0,a.default)(\"section\",this.renderRafSchedulerStats()),(0,a.default)(t.Button,{className:\"pf-perf-stats__close\",icon:n.Icons.Close,onclick:()=>{e.perfMgr.enabled=!1,r.raf.scheduleFullRedraw()}}),e.perfMgr.containers.map((e,t)=>(0,a.default)(\"section\",(0,a.default)(\"div\",\"Container #\"+(t+1)),e.renderPerfStats())))}renderRafSchedulerStats(){return(0,a.default)(\"div\",(0,a.default)(\"div\",[(0,a.default)(\"button\",{onclick:e=>{e.redraw=!1,r.raf.scheduleCanvasRedraw()}},\"Do Canvas Redraw\"),\"   |   \",(0,a.default)(\"button\",{onclick:()=>r.raf.scheduleFullRedraw()},\"Do Full Redraw\")]),(0,a.default)(\"div\",\"Raf Timing (Total may not add up due to imprecision)\"),(0,a.default)(\"table\",this.statTableHeader(),this.statTableRow(\"Actions\",r.raf.perfStats.rafActions),this.statTableRow(\"Dom\",r.raf.perfStats.rafDom),this.statTableRow(\"Canvas\",r.raf.perfStats.rafCanvas),this.statTableRow(\"Total\",r.raf.perfStats.rafTotal)),(0,a.default)(\"div\",\"Dom redraw: \"+`Count: ${r.raf.perfStats.domRedraw.count} | `+(0,e.runningStatStr)(r.raf.perfStats.domRedraw)))}statTableHeader(){return(0,a.default)(\"tr\",(0,a.default)(\"th\",\"\"),(0,a.default)(\"th\",\"Last (ms)\"),(0,a.default)(\"th\",\"Avg (ms)\"),(0,a.default)(\"th\",\"Avg-10 (ms)\"))}statTableRow(e,t){return(0,a.default)(\"tr\",(0,a.default)(\"td\",e),(0,a.default)(\"td\",t.last.toFixed(2)),(0,a.default)(\"td\",t.mean.toFixed(2)),(0,a.default)(\"td\",t.bufferMean.toFixed(2)))}}return Gh}();const d=bf(),p=K(),f=Xl(),h=function(){if(!Vh){Vh=1,Object.defineProperty(Yh,\"__esModule\",{value:!0}),Yh.SidebarManagerImpl=void 0;var e=Dp();Yh.SidebarManagerImpl=class{enabled;_visible;lastId=0;menuItems=new e.Registry(e=>e.id);constructor(e){this.enabled=!e.disabled,this._visible=!e.hidden}addMenuItem(e){var t=\"sidebar_\"+ ++this.lastId,e={...e,id:t};return this.menuItems.register(e)}get visible(){return this._visible}toggleVisibility(){this.enabled&&(this._visible=!this._visible)}}}return Yh}();class m{pluginInstances=new Map;commandMgr=new i.CommandManagerImpl;omniboxMgr=new l.OmniboxManagerImpl;pageMgr=new c.PageManagerImpl;sidebarMgr;pluginMgr;perfMgr=new u.PerfManager;analytics;serviceWorkerController;httpRpc={newEngineMode:\"USE_HTTP_RPC_IF_AVAILABLE\",httpRpcAvailable:!1};initialRouteArgs;isLoadingTrace=!1;initArgs;embeddedMode;testingMode;openTraceAsyncLimiter=new e.AsyncLimiter;settingsManager;extraSqlPackages=[];extraMacros={};currentTrace;static _instance;static initialize(e){return(0,t.assertTrue)(void 0===m._instance),m._instance=new m(e)}static get instance(){return(0,t.assertExists)(m._instance)}timestampFormat;durationPrecision;timezoneOverride;startupCommandsSetting;enforceStartupCommandAllowlistSetting;_isInternalUser;constructor(e){this.timestampFormat=e.timestampFormatSetting,this.durationPrecision=e.durationPrecisionSetting,this.timezoneOverride=e.timezoneOverrideSetting,this.startupCommandsSetting=e.startupCommandsSetting,this.enforceStartupCommandAllowlistSetting=e.enforceStartupCommandAllowlistSetting,this.settingsManager=e.settingsManager,this.initArgs=e,this.initialRouteArgs=e.initialRouteArgs,this.serviceWorkerController=new n.ServiceWorkerController,this.embeddedMode=\"embedded\"===this.initialRouteArgs.mode,this.testingMode=void 0!==self.location&&0<=self.location.search.indexOf(\"testing=1\"),this.sidebarMgr=new h.SidebarManagerImpl({disabled:this.embeddedMode,hidden:this.initialRouteArgs.hideSidebar}),this.analytics=(0,a.initAnalytics)(this.testingMode,this.embeddedMode,e.analyticsSetting.get()),this.pluginMgr=new d.PluginManagerImpl({forkForPlugin:e=>this.forPlugin(e),get trace(){return g.instance.trace}})}forPlugin(e){return(0,r.getOrCreate)(this.pluginInstances,e,()=>new g(this,e))}closeCurrentTrace(){this.omniboxMgr.reset(!1),void 0!==this.currentTrace&&(this.currentTrace[Symbol.dispose](),this.currentTrace=void 0)}setActiveTrace(e){this.closeCurrentTrace(),this.currentTrace=e}get isInternalUser(){return void 0===this._isInternalUser&&(this._isInternalUser=\"1\"===localStorage.getItem(\"isInternalUser\")),this._isInternalUser}set isInternalUser(e){localStorage.setItem(\"isInternalUser\",e?\"1\":\"0\"),this._isInternalUser=e,p.raf.scheduleFullRedraw()}}$f.AppContext=m;class g{pluginId;initialPluginRouteArgs;appCtx;pageMgrProxy;static initialize(e){m.initialize(e).forPlugin(d.CORE_PLUGIN_ID)}static get instance(){return m.instance.forPlugin(d.CORE_PLUGIN_ID)}constructor(t,a){this.appCtx=t,this.pluginId=a;this.initialPluginRouteArgs=Object.entries(t.initialRouteArgs).reduce((e,[t,r])=>{var n=new RegExp(`^${a}:(.+)$`),t=t.match(n);return t&&(e[t[1]]=r),e},{}),this.pageMgrProxy=(0,r.createProxy)(this.appCtx.pageMgr,{registerPage(e){return t.pageMgr.registerPage({...e,pluginId:a})}})}forPlugin(e){return this.appCtx.forPlugin(e)}get commands(){return this.appCtx.commandMgr}get sidebar(){return this.appCtx.sidebarMgr}get omnibox(){return this.appCtx.omniboxMgr}get plugins(){return this.appCtx.pluginMgr}get analytics(){return this.appCtx.analytics}get pages(){return this.pageMgrProxy}get trace(){return this.appCtx.currentTrace?.forPlugin(this.pluginId)}get raf(){return p.raf}get httpRpc(){return this.appCtx.httpRpc}get initialRouteArgs(){return this.appCtx.initialRouteArgs}get settings(){return this.appCtx.settingsManager}get featureFlags(){return{register:e=>o.featureFlags.register(e)}}openTraceFromFile(e){this.openTrace({type:\"FILE\",file:e})}openTraceFromMultipleFiles(e){this.openTrace({type:\"MULTIPLE_FILES\",files:e})}openTraceFromUrl(e,t){this.openTrace({type:\"URL\",url:e,serializedAppState:t})}openTraceFromBuffer(e,t){this.openTrace({...e,type:\"ARRAY_BUFFER\",serializedAppState:t})}openTraceFromHttpRpc(){this.openTrace({type:\"HTTP_RPC\"})}async openTrace(e){\"ARRAY_BUFFER\"===e.type&&e.buffer instanceof Uint8Array&&(e=0===e.buffer.byteOffset&&e.buffer.byteLength===e.buffer.buffer.byteLength?{...e,buffer:e.buffer.buffer}:{...e,buffer:e.buffer.slice().buffer}),this.appCtx.openTraceAsyncLimiter.schedule(async()=>{this.appCtx.closeCurrentTrace(),this.appCtx.isLoadingTrace=!0;try{await(0,s.loadTrace)(this,e),this.omnibox.reset(!1)}finally{this.appCtx.isLoadingTrace=!1,p.raf.scheduleFullRedraw()}})}setActiveTrace(e){this.appCtx.setActiveTrace(e.__traceCtxForApp)}closeCurrentTrace(){this.appCtx.closeCurrentTrace()}get embeddedMode(){return this.appCtx.embeddedMode}get testingMode(){return this.appCtx.testingMode}get isLoadingTrace(){return this.appCtx.isLoadingTrace}get extraSqlPackages(){return this.appCtx.extraSqlPackages}get extraMacros(){return this.appCtx.extraMacros}get perfDebugging(){return this.appCtx.perfMgr}get serviceWorkerController(){return this.appCtx.serviceWorkerController}get __appCtxForTrace(){return this.appCtx}navigate(e){f.Router.navigate(e)}get isInternalUser(){return this.appCtx.isInternalUser}set isInternalUser(e){this.appCtx.isInternalUser=e}}return $f.AppImpl=g,$f}function Qh(){if(!zh){zh=1,Object.defineProperty(Bd,\"__esModule\",{value:!0}),Bd.ThreadSliceDetailsPanel=void 0;var e=Jr;const o=e.__importDefault(xe()),s=Ae(),l=Fe(),t=Me(),c=je(),u=qe(),d=Ls(),p=Se(),f=Bs(),h=Ve(),m=Xo(),g=cp(),_=hs(),y=Gd(),T=ns(),v=ks(),b=Ks(),E=kc(),S=ol(),A=Pe(),O=tl(),C=Bf(),w=sl(),k=e.__importStar(Gf()),I=(Vf||(Vf=1,Prism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python),zf(),Jh()),R=Ch(),N=[{name:\"Ancestor slices\",shouldDisplay:e=>void 0!==e.parentId,run:(t,e)=>O.extensions.addLegacySqlTableTab(e,{table:(0,A.assertExists)((0,S.getSqlTableDescription)(e,\"slice\")),filters:[{op:e=>`${e[0]} IN (SELECT id FROM _slice_ancestor_and_self(${t.id}))`,columns:[\"id\"]}],imports:[\"slices.hierarchy\"]})},{name:\"Descendant slices\",shouldDisplay:()=>!0,run:(t,e)=>O.extensions.addLegacySqlTableTab(e,{table:(0,A.assertExists)((0,S.getSqlTableDescription)(e,\"slice\")),filters:[{op:e=>`${e[0]} IN (SELECT id FROM _slice_descendant_and_self(${t.id}))`,columns:[\"id\"]}],imports:[\"slices.hierarchy\"]})},{name:\"Average duration of slice name\",shouldDisplay:e=>void 0!==e.name,run:(e,t)=>O.extensions.addQueryResultsTab(t,{query:`SELECT AVG(dur) / 1e9 FROM slice WHERE name = '${e.name}'`,title:e.name+\" average dur\"})},{name:\"Binder txn names + monitor contention on thread\",shouldDisplay:e=>{return void 0!==a(e)&&void 0!==i(e)&&void 0!==r(e)&&void 0!==n(e)},run:(e,t)=>{t.engine.query(`INCLUDE PERFETTO MODULE android.binder;\n           INCLUDE PERFETTO MODULE android.monitor_contention;`).then(()=>O.extensions.addDebugSliceTrack({trace:t,data:{sqlSource:`\n                                WITH merged AS (\n                                  SELECT s.ts, s.dur, tx.aidl_name AS name, 0 AS depth\n                                  FROM android_binder_txns tx\n                                  JOIN slice s\n                                    ON tx.binder_txn_id = s.id\n                                  JOIN thread_track\n                                    ON s.track_id = thread_track.id\n                                  JOIN thread\n                                    USING (utid)\n                                  JOIN process\n                                    USING (upid)\n                                  WHERE pid = ${n(e)}\n                                        AND tid = ${r(e)}\n                                        AND aidl_name IS NOT NULL\n                                  UNION ALL\n                                  SELECT\n                                    s.ts,\n                                    s.dur,\n                                    short_blocked_method || ' -> ' || blocking_thread_name || ':' || short_blocking_method AS name,\n                                    1 AS depth\n                                  FROM android_binder_txns tx\n                                  JOIN android_monitor_contention m\n                                    ON m.binder_reply_tid = tx.server_tid AND m.binder_reply_ts = tx.server_ts\n                                  JOIN slice s\n                                    ON tx.binder_txn_id = s.id\n                                  JOIN thread_track\n                                    ON s.track_id = thread_track.id\n                                  JOIN thread ON thread.utid = thread_track.utid\n                                  JOIN process ON process.upid = thread.upid\n                                  WHERE process.pid = ${n(e)}\n                                        AND thread.tid = ${r(e)}\n                                        AND short_blocked_method IS NOT NULL\n                                  ORDER BY depth\n                                ) SELECT ts, dur, name FROM merged`},title:`Binder names (${a(e)}:${i(e)})`}))}}];class M{sliceDetails;breakdownByThreadState;trace;static lastRenderTimestamp=0;static currRenderTimestamp=0;static lastClickedSliceId=-1;static doubleClickHandled=!1;constructor(e){this.trace=(0,A.assertIsInstance)(e,C.TraceImpl)}async load({eventId:e}){var t,r=this[\"trace\"],n=(n=r.engine,t=e,await(0,_.getSlice)(n,(0,T.asSliceSqlId)(t)));M.lastRenderTimestamp=M.currRenderTimestamp,M.currRenderTimestamp=Date.now(),M.lastClickedSliceId==e?M.doubleClickHandled=!1:M.doubleClickHandled=!0,M.lastClickedSliceId=e,void 0!==n&&void 0!==n.thread&&0<n.dur&&(this.breakdownByThreadState=await(0,y.breakDownIntervalByThreadState)(r.engine,l.TimeSpan.fromTimeAndDuration(n.ts,n.dur),n.thread.utid)),this.sliceDetails=n}render(){var e;return(0,t.exists)(this.sliceDetails)?(e=this.sliceDetails,(0,o.default)(u.DetailsShell,{title:\"Slice\",description:e.name,buttons:this.renderContextButton(e)},(0,o.default)(d.GridLayout,(0,o.default)(d.GridLayoutColumn,(0,g.renderDetails)(this.trace,e,this.breakdownByThreadState),this.renderRhs(this.trace,e)),(0,o.default)(d.GridLayoutColumn,this.renderVsCodeButton(e),this.renderSourceCode(this.trace,e))))):(0,o.default)(u.DetailsShell,{title:\"Slice\",description:\"Loading...\"})}renderRhs(e,t){var r=this.renderPrecedingFlows(t),n=this.renderFollowingFlows(t),e=(0,m.hasArgs)(t.args)&&(0,o.default)(f.Section,{title:\"Arguments\"},(0,o.default)(h.Tree,(0,w.renderSliceArguments)(e,t.args)));if(r??n??e)return(0,o.default)(d.GridLayoutColumn,r,n,e)}renderPrecedingFlows(t){var e=this.trace.flows.connectedFlows.filter(({end:e})=>e.sliceId===t.id);if(0<e.length){const r=\"ThreadControllerImpl::RunTask\"===t.name||\"ThreadPool_RunTask\"===t.name;return(0,o.default)(f.Section,{title:\"Preceding Flows\"},(0,o.default)(E.Grid,(0,o.default)(E.GridHeader,(0,o.default)(E.GridRow,(0,o.default)(E.GridHeaderCell,\"Slice\"),(0,o.default)(E.GridHeaderCell,\"Delay\"),(0,o.default)(E.GridHeaderCell,\"Thread\"))),(0,o.default)(E.GridBody,e.map(e=>(0,o.default)(E.GridRow,(0,o.default)(E.GridDataCell,(0,o.default)(b.SliceRef,{trace:this.trace,id:(0,T.asSliceSqlId)(e.begin.sliceId),name:e.begin.sliceChromeCustomName??e.begin.sliceName})),(0,o.default)(E.GridDataCell,(0,o.default)(v.DurationWidget,{trace:this.trace,dur:e.end.sliceStartTs-e.begin.sliceEndTs})),(0,o.default)(E.GridDataCell,this.getThreadNameForFlow(e.begin,!r)))))))}return null}renderFollowingFlows(t){var e=this.trace.flows.connectedFlows.filter(({begin:e})=>e.sliceId===t.id);if(0<e.length){const r=\"ThreadPool_PostTask\"===t.name||\"SequenceManager PostTask\"===t.name;return(0,o.default)(f.Section,{title:\"Following Flows\"},(0,o.default)(E.Grid,(0,o.default)(E.GridHeader,(0,o.default)(E.GridRow,(0,o.default)(E.GridHeaderCell,\"Slice\"),(0,o.default)(E.GridHeaderCell,\"Delay\"),(0,o.default)(E.GridHeaderCell,\"Thread\"))),(0,o.default)(E.GridBody,e.map(e=>(0,o.default)(E.GridRow,(0,o.default)(E.GridDataCell,(0,o.default)(b.SliceRef,{trace:this.trace,id:(0,T.asSliceSqlId)(e.end.sliceId),name:e.end.sliceChromeCustomName??e.end.sliceName})),(0,o.default)(E.GridDataCell,(0,o.default)(v.DurationWidget,{trace:this.trace,dur:e.end.sliceStartTs-e.begin.sliceEndTs})),(0,o.default)(E.GridDataCell,this.getThreadNameForFlow(e.end,!r)))))))}return null}getThreadNameForFlow(e,t){return t?`${e.threadName} (${e.processName})`:e.threadName}renderContextButton(r){t=r;var t,e,n=N.filter(e=>e.shouldDisplay(t));if(0<n.length)return e=(0,o.default)(c.Button,{compact:!0,label:\"Contextual Options\",rightIcon:s.Icons.ContextMenu}),(0,o.default)(p.PopupMenu,{trigger:e},n.map(({name:e,run:t})=>(0,o.default)(p.MenuItem,{label:e,onclick:()=>t(r,this.trace)})))}renderVsCodeButton(e){var e=e.name,t=I.AppImpl.instance.trace?.traceInfo.vizTracerSourceStorage;if((I.AppImpl.instance.settings.get(\"inVscode\")?.get()||!1)&&t&&t.functions){const r=t.functions[e]||null;if(r)return!M.doubleClickHandled&&M.currRenderTimestamp-M.lastRenderTimestamp<500&&(M.doubleClickHandled=!0,window.parent.postMessage({type:\"viztracer\",action:\"openfile\",file:r[0],line:r[1]},\"*\")),(0,o.default)(\"button\",{style:{display:\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"background-color\":\"#2d2d2d\",padding:\"4px\",\"border-radius\":\"6px\",color:\"#fff\"},onclick:()=>{window.parent.postMessage({type:\"viztracer\",action:\"openfile\",file:r[0],line:r[1]},\"*\")}},\"Open in VSCode\",(0,o.default)(\"img\",{src:(0,R.assetSrc)(\"assets/vscode-icon.png\"),style:{\"margin-left\":\"6px\",width:\"12px\"}}))}return(0,o.default)(\"div\",{style:{display:\"none\"}})}renderSourceCode(e,t){var r=t.name,e=e.traceInfo.vizTracerSourceStorage;if(e&&e.functions){r=e.functions[r]||null;if(r){var n=r[0];const a=r[1];r=e.files[n][0];const i=e.files[n][1];e=document.createElement(\"pre\"),n=document.createElement(\"code\"),n=(e.className=\"language-py line-numbers\",n.className=\"language-py\",e.appendChild(n),n.innerHTML=k.highlight(r,k.languages.python,\"python\"),{element:n,language:\"python\",grammar:k.languages.python,code:r});return k.hooks.run(\"complete\",n),(0,o.default)(\"pre.language-py.line-numbers\",{oncreate:e=>{this.resize(e,a,i,!0)},onupdate:e=>{this.resize(e,a,i)}},o.default.trust(e.innerHTML))}}r=this.getObjStr(t);return r?this.renderObjStr(r):(0,o.default)(\"h1\",\"No source code found\")}resize(e,t,r,n=!1){var a=document.getElementsByClassName(\"pf-split-panel__drawer\")[0]?.clientHeight,i=document.getElementsByClassName(\"pf-split-panel__handle\")[0]?.clientHeight,o=document.getElementsByClassName(\"pf-header-bar\")[0]?.clientHeight,s=e.dom,e=e.dom.children[0];s.style.height=a-i-o+\"px\",n&&(s.scrollTop=12+(t-1)/r*e.offsetHeight)}renderObjStr(e){var t=document.createElement(\"pre\"),r=document.createElement(\"code\"),r=(t.className=\"language-py\",r.className=\"language-py\",t.appendChild(r),r.innerHTML=k.highlight(e,k.languages.python,\"python\"),{element:r,language:\"python\",grammar:k.languages.python,code:e});return k.hooks.run(\"complete\",r),(0,o.default)(\"pre.language-py\",{oncreate:e=>{this.resize(e,-1,-1)},onupdate:e=>{this.resize(e,-1,-1)}},o.default.trust(t.innerHTML))}getObjStr(e){if(e.args)for(const n of e.args){var t=n.key,r=n.value;if(\"args.object\"==t&&\"string\"==typeof r)return r}return\"\"}}function r(e){return e.thread?.tid}function n(e){return e.process?.pid}function a(e){return e.process?.name}function i(e){return e.thread?.name}Bd.ThreadSliceDetailsPanel=M}return Bd}function Zh(){if(!Wh){Wh=1,Object.defineProperty(Ud,\"__esModule\",{value:!0}),Ud.createTraceProcessorSliceTrack=async function({trace:t,uri:e,maxDepth:r,trackIds:n,detailsPanel:a}){return new d.DatasetSliceTrack({trace:t,uri:e,dataset:await async function(e,t){{var r;return(0,o.assertTrue)(0<t.length),1===t.length?new p.SourceDataset({schema:h,src:`\n        select\n          slice.id,\n          ts,\n          dur,\n          depth,\n          name,\n          thread_dur,\n          track_id,\n          category,\n          extract_arg(arg_set_id, 'correlation_id') as correlation_id,\n          arg_set_id,\n          parent_id\n        from slice\n      `,filter:{col:\"track_id\",in:t}}):(r=\"__async_slice_depth_\"+t[0],await e.query(`\n      create perfetto table ${r} as\n      select\n        id,\n        layout_depth as depth\n      from experimental_slice_layout('${t.join(\",\")}')\n    `),new p.SourceDataset({schema:h,src:`\n        select\n          slice.id,\n          ts,\n          dur,\n          d.depth as depth,\n          name,\n          thread_dur,\n          track_id,\n          category,\n          extract_arg(arg_set_id, 'correlation_id') as correlation_id,\n          arg_set_id,\n          parent_id\n        from slice\n        join ${r} d using (id)\n      `}))}}(t.engine,n),sliceName:e=>null===e.name?\"[null]\":e.name,initialMaxDepth:r,rootTableName:\"slice\",fillRatio:e=>0n<e.dur&&null!==e.thread_dur?(0,s.clamp)(i.BigintMath.ratio(e.thread_dur,e.dur),0,1):1,tooltip:e=>(0,d.renderTooltip)(t,e,{title:e.title,extras:(0,l.exists)(e.row.category)&&(0,f.default)(\"\",\"Category: \",e.row.category)}),detailsPanel:a?e=>a(e):()=>new u.ThreadSliceDetailsPanel(t),colorizer:e=>e.correlation_id?(0,c.getColorForSlice)(e.correlation_id,{stripTrailingDigits:!1}):e.name?(0,c.getColorForSlice)(e.name):(0,c.getColorForSlice)(\"\"+e.id)})};var e=Jr;const i=ja(),o=Pe(),s=So(),l=Me(),c=He(),u=Qh(),d=Ge(),p=ze();var t=Ue();const f=e.__importDefault(xe()),h={id:t.NUM,ts:t.LONG,dur:t.LONG,name:t.STR_NULL,depth:t.NUM,thread_dur:t.LONG_NULL,category:t.STR_NULL,correlation_id:t.STR_NULL,arg_set_id:t.NUM_NULL,parent_id:t.NUM_NULL}}return Ud}function Xh(){if(!$h){$h=1,Object.defineProperty(Kc,\"__esModule\",{value:!0});var e=Jr;const v=Hi(),_=Pe(),y=Fe(),t=uu(),i=Nu(),o=eu(),b=$e(),E=Du(),S=We(),A=Ue(),r=Fu(),s=Ru(),T=e.__importDefault(Vc()),l=e.__importDefault(Wc()),n=function(){if(!Uu){Uu=1,Object.defineProperty(Bu,\"__esModule\",{value:!0}),Bu.CounterSelectionAggregator=void 0;const o=Fe(),t=$e();Bu.CounterSelectionAggregator=class{id=\"counter_aggregation\";probe(a){const i=[];for(const e of a.tracks)e?.tags?.kind===t.COUNTER_TRACK_KIND&&e.tags?.trackIds&&i.push(...e.tags.trackIds);if(0!==i.length)return{prepareData:async e=>{var t=a.end-a.start,r=o.Duration.toSeconds(t);await e.query(\"include perfetto module counters.intervals\");let n;return n=1===i.length?`\n            CREATE OR REPLACE PERFETTO TABLE ${this.id} AS\n            WITH\n              res AS (\n                select c.*\n                from counter_leading_intervals!((\n                  SELECT counter.*\n                  FROM counter\n                  WHERE counter.track_id = ${i[0]}\n                    AND counter.ts <= ${a.end}\n                )) c\n                WHERE c.ts + c.dur >= ${a.start}\n              ),\n              aggregated AS (\n                SELECT\n                  COUNT(1) AS count,\n                  ROUND(SUM(\n                    (MIN(ts + dur, ${a.end}) - MAX(ts,${a.start}))*value)/${t},\n                    2\n                  ) AS avg_value,\n                  value_at_max_ts(ts, value) AS last_value,\n                  value_at_max_ts(-ts, value) AS first_value,\n                  MIN(value) AS min_value,\n                  MAX(value) AS max_value\n                FROM res\n              )\n            SELECT\n              (SELECT name FROM counter_track WHERE id = ${i[0]}) AS name,\n              *,\n              MAX(last_value) - MIN(first_value) AS delta_value,\n              ROUND((MAX(last_value) - MIN(first_value))/${r}, 2) AS rate\n            FROM aggregated`:`\n            CREATE OR REPLACE PERFETTO TABLE ${this.id} AS\n            WITH\n              res AS (\n                select c.*\n                from counter_leading_intervals!((\n                  SELECT counter.*\n                  FROM counter\n                  WHERE counter.track_id in (${i})\n                    AND counter.ts <= ${a.end}\n                )) c\n                where c.ts + c.dur >= ${a.start}\n              ),\n              aggregated AS (\n                SELECT track_id,\n                  COUNT(1) AS count,\n                  ROUND(SUM(\n                    (MIN(ts + dur, ${a.end}) - MAX(ts,${a.start}))*value)/${t},\n                    2\n                  ) AS avg_value,\n                  value_at_max_ts(-ts, value) AS first,\n                  value_at_max_ts(ts, value) AS last,\n                  MIN(value) AS min_value,\n                  MAX(value) AS max_value\n                FROM res\n                GROUP BY track_id\n              )\n            SELECT\n              name,\n              count,\n              avg_value,\n              last AS last_value,\n              first AS first_value,\n              last - first AS delta_value,\n              ROUND((last - first)/${r}, 2) AS rate,\n              min_value,\n              max_value\n            FROM aggregated JOIN counter_track ON\n              track_id = counter_track.id\n            GROUP BY track_id`,await e.query(n),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Name\",columnId:\"name\"},{title:\"Delta value\",columnId:\"delta_value\"},{title:\"Rate /s\",columnId:\"rate\"},{title:\"Weighted avg value\",columnId:\"avg_value\"},{title:\"Count\",columnId:\"count\",sum:!0},{title:\"First value\",columnId:\"first_value\"},{title:\"Last value\",columnId:\"last_value\"},{title:\"Min value\",columnId:\"min_value\"},{title:\"Max value\",columnId:\"max_value\"}]}getTabName(){return\"Counters\"}getDefaultSorting(){return{column:\"name\",direction:\"DESC\"}}}}return Bu}(),O=(ju||(ju=1,Object.defineProperty(Hu,\"__esModule\",{value:!0}),Hu.COUNTER_TRACK_SCHEMAS=void 0,Hu.COUNTER_TRACK_SCHEMAS=[{type:\"acpm_cooling_device_counter\",topLevelGroup:\"THERMALS\",group:\"ACPM Cooling Devices\"},{type:\"acpm_thermal_temperature\",topLevelGroup:\"THERMALS\",group:\"ACPM Temperature\"},{type:\"android_energy_estimation_breakdown_per_uid\",topLevelGroup:\"POWER\",group:\"Android Energy Estimates (per uid)\"},{type:\"android_energy_estimation_breakdown\",topLevelGroup:\"POWER\",group:\"Android Energy Estimates\"},{type:\"atrace_counter\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"battery_counter\",topLevelGroup:\"POWER\",group:\"Battery Counters\"},{type:\"battery_stats\",topLevelGroup:\"POWER\",group:\"Battery Stats\"},{type:\"bcl_irq\",topLevelGroup:void 0,group:\"BCL IRQ\"},{type:\"block_io\",topLevelGroup:\"IO\",group:\"Block IO\"},{type:\"buddyinfo\",topLevelGroup:\"MEMORY\",group:\"Buddyinfo\"},{type:\"chrome_process_stats\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"clock_frequency\",topLevelGroup:\"HARDWARE\",group:\"Clock Frequency\"},{type:\"clock_state\",topLevelGroup:\"HARDWARE\",group:\"Clock State\"},{type:\"cooling_device_counter\",topLevelGroup:\"THERMALS\",group:\"Cooling Devices\"},{type:\"cpu_capacity\",topLevelGroup:\"CPU\",group:\"CPU Capacity\"},{type:\"cpu_frequency_throttle\",topLevelGroup:\"CPU\",group:\"CPU Frequency Throttling\"},{type:\"cpu_max_frequency_limit\",topLevelGroup:\"CPU\",group:\"CPU Max Frequency\"},{type:\"cpu_min_frequency_limit\",topLevelGroup:\"CPU\",group:\"CPU Min Frequency\"},{type:\"cpu_nr_running\",topLevelGroup:\"CPU\",group:\"CPU Number Running\"},{type:\"cpu_utilization\",topLevelGroup:\"CPU\",group:\"CPU Utilization\"},{type:\"cpustat\",topLevelGroup:\"CPU\",group:\"CPU Stat\"},{type:\"cros_ec_sensorhub_data\",topLevelGroup:\"HARDWARE\",group:\"ChromeOS EC Sensorhub\"},{type:\"diskstat\",topLevelGroup:\"IO\",group:\"Diskstat\"},{type:\"etw_meminfo\",topLevelGroup:\"MEMORY\",group:\"ETW Memory Counters\"},{type:\"f2fs_iostat_latency\",topLevelGroup:\"IO\",group:\"F2FS IOStat Latency\"},{type:\"f2fs_iostat\",topLevelGroup:\"IO\",group:\"F2FS IOStat\"},{type:\"fastrpc_change\",topLevelGroup:\"PROCESS\",group:\"Fastrpc\"},{type:\"fastrpc\",topLevelGroup:\"HARDWARE\",group:\"Fastrpc\"},{type:\"fuchsia_counter\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"gpu_counter\",topLevelGroup:\"GPU\",group:\"GPU Counters\"},{type:\"gpu_memory\",topLevelGroup:\"GPU\",group:void 0},{type:\"ion_change\",topLevelGroup:\"THREAD\",group:void 0},{type:\"ion\",topLevelGroup:\"MEMORY\",group:void 0},{type:\"json_counter_thread_fallback\",topLevelGroup:\"THREAD\",group:void 0},{type:\"json_counter\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"linux_device_frequency\",topLevelGroup:\"HARDWARE\",group:\"Linux Device Frequency\"},{type:\"linux_rpm\",topLevelGroup:\"HARDWARE\",group:\"Linux RPM\"},{type:\"meminfo\",topLevelGroup:\"MEMORY\",group:\"Meminfo\"},{type:\"metatrace_counter\",topLevelGroup:\"THREAD\",group:void 0},{type:\"mm_event_thread_fallback\",topLevelGroup:\"THREAD\",group:\"MM Event\"},{type:\"mm_event\",topLevelGroup:\"PROCESS\",group:\"MM Event\"},{type:\"net_kfree_skb\",topLevelGroup:\"NETWORK\",group:\"Network Packet Frees\"},{type:\"net_receive\",topLevelGroup:\"NETWORK\",group:\"Network Receive\",mode:\"rate\"},{type:\"net_transmit\",topLevelGroup:\"NETWORK\",group:\"Network Send\",mode:\"rate\"},{type:\"num_forks\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"num_irq_total\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"num_irq\",topLevelGroup:\"SYSTEM\",group:\"IRQ Count\"},{type:\"num_softirq_total\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"num_softirq\",topLevelGroup:\"SYSTEM\",group:\"Softirq Count\"},{type:\"oom_score_adj_thread_fallback\",topLevelGroup:\"THREAD\",group:void 0},{type:\"oom_score_adj\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"pixel_cpm_counters\",topLevelGroup:\"HARDWARE\",group:\"CPM Counters\"},{type:\"proc_stat_runtime\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"process_gpu_memory\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"process_memory_thread_fallback\",topLevelGroup:\"THREAD\",group:void 0},{type:\"process_memory\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"psi\",group:\"PSI\",topLevelGroup:\"SYSTEM\",mode:\"rate\"},{type:\"screen_state\",topLevelGroup:\"SYSTEM\",group:\"Screen State\"},{type:\"smaps\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"sysprop_counter\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"thermal_temperature_sys\",topLevelGroup:\"THERMALS\",group:\"Temperature (/sys)\"},{type:\"thermal_temperature\",topLevelGroup:\"THERMALS\",group:\"Temperature\"},{type:\"ufs_clkgating\",topLevelGroup:\"IO\",group:void 0},{type:\"ufs_command_count\",topLevelGroup:\"IO\",group:void 0},{type:\"virtgpu_latency\",topLevelGroup:\"GPU\",group:\"Virtgpu Latency\"},{type:\"virtgpu_num_free\",topLevelGroup:\"GPU\",group:\"Virtgpu num_free\"},{type:\"vmstat\",topLevelGroup:\"MEMORY\",group:\"vmstat\"},{type:\"vulkan_device_mem_allocation\",topLevelGroup:\"GPU\",group:\"Vulkan Allocations\"},{type:\"vulkan_device_mem_bind\",topLevelGroup:\"GPU\",group:\"Vulkan Binds\"},{type:\"vulkan_driver_mem\",topLevelGroup:\"GPU\",group:\"Vulkan Driver Memory\"},{type:\"battery_status\",topLevelGroup:\"POWER\",group:void 0},{type:\"battery_plugged_status\",topLevelGroup:\"POWER\",group:void 0},{type:\"ion\",topLevelGroup:\"MEMORY\",group:void 0},{type:\"ion_change\",topLevelGroup:\"MEMORY\",group:void 0},{type:\"android_dma_heap_change\",topLevelGroup:\"THREAD\",group:void 0}]),Hu),a=function(){if(!Ad){Ad=1,Object.defineProperty(qu,\"__esModule\",{value:!0}),qu.PivotTableTab=void 0;const n=Jr.__importDefault(xe()),a=Pe(),i=Ae(),e=pd(),o=Cd(),s=ol(),l=eu(),c=$e(),u=je(),d=tl();qu.PivotTableTab=class{trace;id=\"pivot_table\";name=\"Pivot Table\";state;previousSelection;trackIds=[];constructor(e){this.trace=e}render(t){if(void 0!==this.previousSelection&&(0,l.areaSelectionsEqual)(this.previousSelection,t)||(this.previousSelection=t,this.trackIds=t.tracks.filter(e=>e.tags?.kind==c.SLICE_TRACK_KIND).flatMap(e=>e.tags?.trackIds??[]),this.getOrCreateState().filters.setFilters([{op:e=>`${e[0]} + ${e[1]} > `+t.start,columns:[\"ts\",\"dur\"]},{op:e=>e[0]+\" < \"+t.end,columns:[\"ts\"]},{op:e=>`${e[0]} in (${this.trackIds.join(\", \")})`,columns:[\"track_id\"]}])),0!==this.trackIds.length){const r=this.getOrCreateState();return{isLoading:void 0===r?.getData(),content:(0,n.default)(e.PivotTable,{state:r,extraRowButton:e=>(0,n.default)(u.Button,{icon:i.Icons.GoTo,onclick:()=>{d.extensions.addLegacySqlTableTab(this.trace,{table:(0,a.assertExists)((0,s.getSqlTableDescription)(this.trace,\"slice\")),filters:[...r?.filters.get()??[],...e.getFilters()]})}})})}}}getOrCreateState(){var e,t,r;return void 0===this.state&&(e=(0,a.assertExists)((0,s.getSqlTableDescription)(this.trace,\"slice\")),t=(0,a.assertExists)(e.columns.find(e=>\"name\"===e.column)),r=(0,a.assertExists)(e.columns.find(e=>\"dur\"===e.column)),this.state=new o.PivotTableState({trace:this.trace,table:e,pivots:[t],aggregations:[{column:r,op:\"sum\"}]})),this.state}}}return qu}(),c=function(){if(!wd){wd=1,Object.defineProperty(kd,\"__esModule\",{value:!0}),kd.SliceSelectionAggregator=void 0;const o=Jr,s=uu(),e=Ue(),l=De();kd.SliceSelectionAggregator=class{id=\"slice_aggregation\";probe(a){const i=(0,s.selectTracksAndGetDataset)(a.tracks,{id:e.NUM,name:e.STR_NULL,ts:e.LONG,dur:e.LONG,parent_id:e.NUM_NULL});if(i)return{prepareData:async e=>{var t={stack:[],error:void 0,hasError:!1};try{var r=o.__addDisposableResource(t,await(0,s.createIITable)(e,i,a.start,a.end),!0),n=o.__addDisposableResource(t,await(0,l.createPerfettoTable)({engine:e,as:`\n            SELECT\n              parent_id AS id,\n              SUM(dur) AS child_dur\n            FROM (${r.name})\n            WHERE parent_id IS NOT NULL\n            GROUP BY parent_id\n          `}),!0);return await e.query(`\n          create or replace perfetto table ${this.id} as\n          select\n            name,\n            sum(dur) AS total_dur,\n            sum(dur)/count() as avg_dur,\n            count() as occurrences,\n            SUM(dur - COALESCE(child_dur, 0)) AS total_self_dur\n          from (${r.name})\n          LEFT JOIN ${n.name} USING(id)\n          group by name\n        `),{tableName:this.id}}catch(e){t.error=e,t.hasError=!0}finally{e=o.__disposeResources(t);e&&await e}}}}getTabName(){return\"Slices\"}getDefaultSorting(){return{column:\"total_dur\",direction:\"DESC\"}}getColumnDefinitions(){return[{title:\"Name\",columnId:\"name\"},{title:\"Wall duration\",formatHint:\"DURATION_NS\",columnId:\"total_dur\",sum:!0},{title:\"Self duration\",formatHint:\"DURATION_NS\",columnId:\"total_self_dur\",sum:!0},{title:\"Avg Wall duration\",formatHint:\"DURATION_NS\",columnId:\"avg_dur\"},{title:\"Occurrences\",columnId:\"occurrences\",sum:!0}]}}}return kd}(),C=(Id||(Id=1,Object.defineProperty(Rd,\"__esModule\",{value:!0}),Rd.SLICE_TRACK_SCHEMAS=void 0,Rd.SLICE_TRACK_SCHEMAS=[{type:\"battery_stats\",topLevelGroup:\"POWER\",group:\"Battery Stats\"},{type:\"bluetooth_trace_event\",topLevelGroup:\"SYSTEM\",group:\"Bluetooth\"},{type:\"app_wakelock_events\",topLevelGroup:\"POWER\",group:\"App Wakelocks\"},{type:\"legacy_async_process_slice\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"legacy_async_global_slice\",topLevelGroup:void 0,group:\"Global Legacy Events\"},{type:\"legacy_chrome_global_instants\",group:void 0,topLevelGroup:void 0},{type:\"android_device_state\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"android_lmk\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"chrome_process_instant\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"drm_vblank\",topLevelGroup:\"HARDWARE\",group:\"DRM VBlank\"},{type:\"disp_dpu_underrun\",topLevelGroup:\"HARDWARE\",group:\"Display\"},{type:\"disp_vblank_irq_enable\",topLevelGroup:\"HARDWARE\",group:\"Display\"},{type:\"drm_sched_ring\",topLevelGroup:\"HARDWARE\",group:\"DRM Sched Ring\"},{type:\"drm_fence\",topLevelGroup:\"HARDWARE\",group:\"DRM Fence\"},{type:\"interconnect_events\",topLevelGroup:\"HARDWARE\",group:void 0},{type:\"cpu_irq\",topLevelGroup:\"CPU\",group:\"IRQs\"},{type:\"cpu_softirq\",topLevelGroup:\"CPU\",group:\"Softirqs\"},{type:\"cpu_hrtimer\",topLevelGroup:\"CPU\",group:\"HRTimers\"},{type:\"net_socket_set_state\",topLevelGroup:\"NETWORK\",group:\"Socket Set State\"},{type:\"net_tcp_retransmit_skb\",topLevelGroup:\"NETWORK\",group:\"TCP Retransmit SKB\"},{type:\"cpu_napi_gro\",topLevelGroup:\"CPU\",group:\"NAPI GRO\"},{type:\"ufs_command_tag\",topLevelGroup:\"IO\",group:\"UFS Command Tag\"},{type:\"wakesource_wakelock\",topLevelGroup:\"POWER\",group:\"Kernel Wakelocks\"},{type:\"dumpstate_wakelocks\",topLevelGroup:\"POWER\",group:\"Kernel Wakelocks\"},{type:\"cpu_funcgraph\",topLevelGroup:\"CPU\",group:\"Funcgraph\"},{type:\"android_ion_allocations\",topLevelGroup:\"MEMORY\",group:\"ION\"},{type:\"android_fs\",topLevelGroup:\"IO\",group:void 0},{type:\"cpu_mali_irq\",topLevelGroup:\"CPU\",group:void 0},{type:\"mali_mcu_state\",topLevelGroup:\"GPU\",group:void 0},{type:\"pkvm_hypervisor\",topLevelGroup:\"HYPERVISOR\",group:void 0},{type:\"virtgpu_queue_event\",topLevelGroup:\"GPU\",group:\"Virtio GPU Events\"},{type:\"virtio_video_queue_event\",topLevelGroup:\"SYSTEM\",group:\"Virtio Video Queue Events\"},{type:\"virtio_video_command\",topLevelGroup:\"SYSTEM\",group:\"Virtio Video Command Events\"},{type:\"android_camera_event\",topLevelGroup:\"HARDWARE\",group:void 0},{type:\"gpu_render_stage\",topLevelGroup:\"GPU\",group:\"Render Stage\"},{type:\"vulkan_events\",topLevelGroup:\"GPU\",group:void 0},{type:\"gpu_log\",topLevelGroup:\"GPU\",group:void 0},{type:\"graphics_frame_event\",topLevelGroup:\"GPU\",group:void 0},{type:\"triggers\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"network_packets\",topLevelGroup:\"NETWORK\",group:void 0},{type:\"pixel_modem_event\",topLevelGroup:\"HARDWARE\",group:void 0},{type:\"statsd_atoms\",topLevelGroup:\"SYSTEM\",group:void 0},{type:\"atrace_async_slice\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"atrace_async_slice_for_track\",topLevelGroup:\"PROCESS\",group:void 0},{type:\"thread_execution\",topLevelGroup:\"THREAD\",group:void 0},{type:\"thread_funcgraph\",topLevelGroup:\"THREAD\",group:void 0}]),Rd),w=Ld(),k=Zh();class u{static id=\"dev.perfetto.TraceProcessorTrack\";static dependencies=[T.default,l.default];groups=new Map;async onTraceLoad(e){await this.addCounters(e),await this.addSlices(e),this.addAggregations(e),this.addMinimapContentProvider(e),this.addSearchProviders(e)}async addCounters(e){for(var t=await e.engine.query(`\n      include perfetto module viz.threads;\n\n      with tracks_summary as (\n        select\n          ct.type,\n          ct.name,\n          ct.id,\n          ct.unit,\n          ct.machine_id as machine,\n          extract_arg(ct.dimension_arg_set_id, 'utid') as utid,\n          extract_arg(ct.dimension_arg_set_id, 'upid') as upid\n        from counter_track ct\n        join _counter_track_summary using (id)\n        order by ct.name\n      )\n      select\n        s.*,\n        thread.tid,\n        thread.name as threadName,\n        ifnull(p.pid, tp.pid) as pid,\n        ifnull(p.name, tp.name) as processName,\n        ifnull(thread.is_main_thread, 0) as isMainThread,\n        ifnull(k.is_kernel_thread, 0) AS isKernelThread\n      from tracks_summary s\n      left join process p on s.upid = p.upid\n      left join thread using (utid)\n      left join _threads_with_kernel_flag k using (utid)\n      left join process tp on thread.upid = tp.upid\n      order by lower(s.name)\n    `),r=new Map(O.COUNTER_TRACK_SCHEMAS.map(e=>[e.type,e])),n=t.iter({id:A.NUM,type:A.STR,name:A.STR_NULL,unit:A.STR_NULL,utid:A.NUM_NULL,upid:A.NUM_NULL,threadName:A.STR_NULL,processName:A.STR_NULL,tid:A.NUM_NULL,pid:A.NUM_NULL,isMainThread:A.NUM,isKernelThread:A.NUM,machine:A.NUM_NULL});n.valid();n.next()){var a,i,{type:o,id:s,name:l,unit:c,utid:u,upid:d,threadName:p,processName:f,tid:h,pid:m,isMainThread:g,isKernelThread:_,machine:y}=n,T=r.get(o);void 0!==T&&({group:a,topLevelGroup:i}=T,l=(0,E.getTrackName)({name:l,tid:h,threadName:p,pid:m,processName:f,upid:d,utid:u,kind:b.COUNTER_TRACK_KIND,threadTrack:void 0!==u,machine:y}),e.tracks.registerTrack({uri:h=\"/counter_\"+s,tags:{kind:b.COUNTER_TRACK_KIND,trackIds:[s],type:o,upid:d??void 0,utid:u??void 0,...1===_&&{kernelThread:!0}},chips:(0,v.removeFalsyValues)([0===_&&1===g&&\"main thread\"]),renderer:new w.TraceProcessorCounterTrack(e,h,{yMode:T.mode,yRangeSharingKey:T.shareYAxis?n.type:void 0,unit:c??void 0},s,l)}),this.addTrack(e,i,a,d,u,new S.TrackNode({uri:h,name:l,sortOrder:void 0!==u||void 0!==d?30:0})))}}async addSlices(e){for(var t=await e.engine.query(`\n      include perfetto module viz.threads;\n\n      with grouped as materialized (\n        select\n          t.type,\n          min(t.name) as name,\n          lower(min(t.name)) as lower_name,\n          extract_arg(t.dimension_arg_set_id, 'utid') as utid,\n          extract_arg(t.dimension_arg_set_id, 'upid') as upid,\n          group_concat(t.id) as trackIds,\n          count() as trackCount\n        from _slice_track_summary s\n        join track t using (id)\n        group by type, upid, utid, t.track_group_id, ifnull(t.track_group_id, t.id)\n      )\n      select\n        s.type,\n        s.name,\n        s.utid,\n        ifnull(s.upid, tp.upid) as upid,\n        s.trackIds as trackIds,\n        __max_layout_depth(s.trackCount, s.trackIds) as maxDepth,\n        thread.tid,\n        thread.name as threadName,\n        ifnull(p.pid, tp.pid) as pid,\n        ifnull(p.name, tp.name) as processName,\n        ifnull(thread.is_main_thread, 0) as isMainThread,\n        ifnull(k.is_kernel_thread, 0) AS isKernelThread\n      from grouped s\n      left join process p on s.upid = p.upid\n      left join thread using (utid)\n      left join _threads_with_kernel_flag k using (utid)\n      left join process tp on thread.upid = tp.upid\n      order by lower_name\n    `),r=new Map(C.SLICE_TRACK_SCHEMAS.map(e=>[e.type,e])),n=t.iter({type:A.STR,name:A.STR_NULL,utid:A.NUM_NULL,upid:A.NUM_NULL,trackIds:A.STR,maxDepth:A.NUM,tid:A.NUM_NULL,threadName:A.STR_NULL,pid:A.NUM_NULL,processName:A.STR_NULL,isMainThread:A.NUM,isKernelThread:A.NUM});n.valid();n.next()){var a,{trackIds:i,type:o,name:s,maxDepth:l,utid:c,upid:u,threadName:d,processName:p,tid:f,pid:h,isMainThread:m,isKernelThread:g}=n,_=r.get(o);void 0!==_&&(i=i.split(\",\").map(e=>Number(e)),{group:_,topLevelGroup:a}=_,s=(0,E.getTrackName)({name:s,tid:f,threadName:d,pid:h,processName:p,upid:u,utid:c,kind:b.SLICE_TRACK_KIND,threadTrack:void 0!==c}),f=\"/slice_\"+i[0],e.tracks.registerTrack({uri:f,tags:{kind:b.SLICE_TRACK_KIND,trackIds:i,type:o,upid:u??void 0,utid:c??void 0,...1===g&&{kernelThread:!0}},chips:(0,v.removeFalsyValues)([0===g&&1===m&&\"main thread\"]),renderer:await(0,k.createTraceProcessorSliceTrack)({trace:e,uri:f,maxDepth:l,trackIds:i})}),this.addTrack(e,a,_,u,c,new S.TrackNode({uri:f,name:s,sortOrder:void 0!==c||void 0!==u?20:0})))}}addTrack(e,t,r,n,a,i){switch(t){case\"PROCESS\":var o=(0,_.assertExists)(e.plugins.getPlugin(T.default).getGroupForProcess((0,_.assertExists)(n)));this.getGroupByName(o,r,n).addChildInOrder(i);break;case\"THREAD\":o=(0,_.assertExists)(e.plugins.getPlugin(T.default).getGroupForThread((0,_.assertExists)(a)));this.getGroupByName(o,r,a).addChildInOrder(i);break;case void 0:this.getGroupByName(e.workspace.tracks,r,n).addChildInOrder(i);break;default:o=e.plugins.getPlugin(l.default).getOrCreateStandardGroup(e.workspace,t);this.getGroupByName(o,r,null).addChildInOrder(i)}}getGroupByName(e,t,r){var n,a;return void 0===t?e:(n=\"string\"==typeof t?t:t.name,a=\"string\"!=typeof t&&(t.expanded??!1),r=`tp_group_${r}_`+n.toLowerCase().replace(\" \",\"_\"),this.groups.get(r)||(t=new S.TrackNode({uri:\"/\"+t,isSummary:!0,name:n,collapsed:!a}),e.addChildInOrder(t),this.groups.set(r,t),t))}addAggregations(e){e.selection.registerAreaSelectionTab((0,t.createAggregationTab)(e,new n.CounterSelectionAggregator)),e.selection.registerAreaSelectionTab((0,t.createAggregationTab)(e,new c.SliceSelectionAggregator)),e.selection.registerAreaSelectionTab(new a.PivotTableTab(e)),e.selection.registerAreaSelectionTab(function(r){let n,a;return{id:\"slice_flamegraph_selection\",name:\"Slice Flamegraph\",render(e){var t=void 0===n||!(0,o.areaSelectionsEqual)(n,e);if(n=e,void 0!==(a=t?function(e,t){var r=[];for(const n of t.tracks)n?.tags?.kind===b.SLICE_TRACK_KIND&&void 0!==n.tags?.trackIds&&r.push(...n.tags.trackIds);if(0===r.length)return;t=(0,i.metricsFromTableOrSubquery)(`\n      (\n        select *\n        from _viz_slice_ancestor_agg!((\n          select s.id, s.dur\n          from slice s\n          left join slice t on t.parent_id = s.id\n          where s.ts >= ${t.start}\n            and s.ts <= ${t.end}\n            and s.track_id in (${r.join(\",\")})\n            and t.id is null\n        ))\n      )\n    `,[{name:\"Duration\",unit:\"ns\",columnName:\"self_dur\"},{name:\"Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module viz.slices;\",void 0,[{name:\"simple_count\",displayName:\"Slice Count\",mergeAggregation:\"SUM\",isVisible:!0}]);return new i.QueryFlamegraph(e,t,{state:s.Flamegraph.createDefaultState(t)})}(r,e):a))return{isLoading:!1,content:a.render()}}}}(e))}addMinimapContentProvider(g){g.minimap.registerContentProvider({priority:1,getData:async(e,t)=>{for(var r=e.toTimeSpan(),e=await g.engine.query(`\n              SELECT\n                bucket,\n                upid,\n                IFNULL(SUM(utid_sum) / CAST(${t} AS FLOAT), 0) AS load\n              FROM thread\n              INNER JOIN (\n                SELECT\n                  IFNULL(CAST((ts - ${r.start}) / ${t} AS INT), 0) AS bucket,\n                  SUM(dur) AS utid_sum,\n                  utid\n                FROM slice\n                INNER JOIN thread_track ON slice.track_id = thread_track.id\n                GROUP BY\n                  bucket,\n                  utid\n              ) USING(utid)\n              WHERE\n                upid IS NOT NULL\n              GROUP BY\n                bucket,\n                upid;\n            `),n=new Map,a=e.iter({bucket:A.LONG,upid:A.NUM,load:A.NUM});a.valid();a.next()){var i=a.bucket,o=a.upid,s=a.load,i=y.Time.add(r.start,t*i);let e=n.get(o);void 0===e&&(e=[],n.set(o,e)),e.push({ts:i,dur:t,load:s})}var l=g.plugins.getPlugin(T.default),c=g.workspace.children;const u=new Map;for(const h of n.keys()){var d=l.getGroupForProcess(h);d&&0<=(d=c.indexOf(d))&&u.set(h,d)}var p=[];for(const m of Array.from(u.keys()).sort((e,t)=>{return(0,_.assertExists)(u.get(e))-(0,_.assertExists)(u.get(t))})){var f=n.get(m);f&&p.push(f)}return p}})}addSearchProviders(e){e.search.registerSearchProvider({name:\"Slices by name\",selectTracks(e){return e.filter(e=>e.tags?.kind===b.SLICE_TRACK_KIND).filter(e=>e.renderer.getDataset?.()?.implements({name:A.STR_NULL}))},async getSearchFilter(e){return{where:\"name GLOB \"+(0,r.escapeSearchQuery)(e)}}}),e.search.registerSearchProvider({name:\"Slices by id\",selectTracks(e){return e.filter(e=>e.tags?.kind===b.SLICE_TRACK_KIND).filter(e=>e.renderer.getDataset?.()?.implements({id:A.NUM_NULL}))},async getSearchFilter(e){var t=Number(e);if(Number.isInteger(t))return{where:\"id = \"+e}}}),e.search.registerSearchProvider({name:\"Slice arguments\",selectTracks(e){return e.filter(e=>e.tags?.kind===b.SLICE_TRACK_KIND).filter(e=>e.renderer.getDataset?.()?.implements({arg_set_id:A.NUM_NULL}))},async getSearchFilter(e){e=(0,r.escapeSearchQuery)(e);return{join:\"args USING(arg_set_id)\",where:`\n            args.string_value GLOB ${e}\n            OR\n            args.key GLOB ${e}\n          `}}})}}Kc.default=u}return Kc}function em(){if(!Kh){Kh=1,Object.defineProperty(Lc,\"__esModule\",{value:!0});var e=Jr;const n=Vi(),l=$e(),c=We(),u=Ue(),d=e.__importDefault(Vc()),p=e.__importDefault(Wc());e=e.__importDefault(Xh());const f=Ld(),h=Zh();class t{static id=\"com.android.AndroidDmabuf\";static dependencies=[d.default,p.default,e.default];async onTraceLoad(e){var t=e.engine;await t.query(\"INCLUDE PERFETTO MODULE android.memory.dmabuf\");for(var r,n,a=(await t.query(\"SELECT DISTINCT upid, IIF(upid IS NULL, utid, NULL) AS utid FROM android_memory_cumulative_dmabuf\")).iter({upid:u.NUM_NULL,utid:u.NUM_NULL});a.valid();a.next())null!=a.upid?(n=\"/android_process_dmabuf_upid_\"+a.upid,r={sqlSource:`SELECT ts, value FROM android_memory_cumulative_dmabuf\n                 WHERE upid = `+a.upid},await s(e,n,r),e.plugins.getPlugin(d.default).getGroupForProcess(a.upid)?.addChildInOrder(new c.TrackNode({uri:n,name:\"dmabuf allocs\"}))):null!=a.utid&&(r=\"/android_process_dmabuf_utid_\"+a.utid,n={sqlSource:`SELECT ts, value FROM android_memory_cumulative_dmabuf\n                 WHERE utid = `+a.utid},await s(e,r,n),e.plugins.getPlugin(d.default).getGroupForThread(a.utid)?.addChildInOrder(new c.TrackNode({uri:r,name:\"dmabuf allocs\"})));const i=()=>e.plugins.getPlugin(p.default).getOrCreateStandardGroup(e.workspace,\"MEMORY\"),o=await async function(e,t){var r=await e.engine.query(`\n    select id, name\n    from track\n    where type = 'android_dma_heap'\n  `),r=r.maybeFirstRow({id:u.NUM,name:u.STR});if(!r)return;var{id:r,name:n}=r,a=\"/android_dmabuf_counter\",e=(e.tracks.registerTrack({uri:a,tags:{kind:l.COUNTER_TRACK_KIND,trackIds:[r]},renderer:new f.TraceProcessorCounterTrack(e,a,{},r,n)}),new c.TrackNode({uri:a,name:n}));return t().addChildInOrder(e),e}(e,i);(async function(e,t){var r=await e.engine.query(`\n    select min(name) as name, group_concat(id) as trackIds\n    from track\n    where type = 'android_dma_allocations'\n    group by track_group_id\n  `),r=r.maybeFirstRow({trackIds:u.STR,name:u.STR});if(!r)return;var{trackIds:r,name:n}=r,a=\"/android_dmabuf_allocs\",r=r.split(\",\").map(e=>Number(e)),e=(e.tracks.registerTrack({uri:a,tags:{kind:l.SLICE_TRACK_KIND,trackIds:r},renderer:await(0,h.createTraceProcessorSliceTrack)({trace:e,uri:a,trackIds:r})}),new c.TrackNode({uri:a,name:n}));t().addChildInOrder(e)})(e,()=>o??i())}}async function s(e,t,r){r=await(0,n.createQueryCounterTrack)({trace:e,uri:t,data:r});e.tracks.registerTrack({uri:t,renderer:r})}Lc.default=t}return Lc}var tm,rm,nm={},am={},im={},om={};function sm(){if(!tm){tm=1,Object.defineProperty(om,\"__esModule\",{value:!0}),om.Checkbox=void 0;const o=Jr.__importDefault(xe()),s=be();om.Checkbox=class{view({attrs:e}){const{label:t,disabled:r,checked:n,className:a,...i}=e;e=(0,s.classNames)(r&&\"pf-disabled\",a);return(0,o.default)(\"label.pf-checkbox\",{...i,className:e},(0,o.default)(\"input[type=checkbox]\",{disabled:r,checked:n}),(0,o.default)(\"span\"),t)}}}return om}function lm(){if(!rm){rm=1,Object.defineProperty(im,\"__esModule\",{value:!0}),im.PopupMultiSelect=im.MultiSelect=void 0;const s=Jr.__importDefault(xe()),l=Ae(),c=je(),i=sm(),u=nu(),o=yi(),e=Vl();class d{searchText=\"\";view({attrs:e}){var{options:t,fixedSize:r=!0}=e,t=t.filter(({name:e})=>e.toLowerCase().includes(this.searchText.toLowerCase()));return(0,s.default)(r?\".pf-multiselect-panel.pf-multi-select-fixed-size\":\".pf-multiselect-panel\",this.renderSearchBox(),this.renderListOfItems(e,t))}renderListOfItems(e,t){const{repeatCheckedItemsAtTop:r,onChange:n=()=>{},showSelectAllButton:a=!0}=e;var i=t.every(({checked:e})=>e),o=t.some(({checked:e})=>e);return 0===t.length?(0,s.default)(u.EmptyState,{title:`No results for '${this.searchText}'`}):[(0,s.default)(\".pf-list\",r&&o&&(0,s.default)(\".pf-multiselect-container\",(0,s.default)(\".pf-multiselect-header\",(0,s.default)(\"span\",\"\"===this.searchText?\"Selected\":\"Selected (Filtered)\"),(0,s.default)(c.Button,{label:\"\"===this.searchText?\"Clear All\":\"Clear Filtered\",icon:l.Icons.Deselect,onclick:()=>{var e=t.filter(({checked:e})=>e).map(({id:e})=>({id:e,checked:!1}));n(e)},disabled:!o})),this.renderOptions(e,t.filter(({checked:e})=>e))),(0,s.default)(\".pf-multiselect-container\",(0,s.default)(\".pf-multiselect-header\",(0,s.default)(\"span\",\"\"===this.searchText?\"Options\":\"Options (Filtered)\"),a&&(0,s.default)(c.Button,{label:\"\"===this.searchText?\"Select All\":\"Select Filtered\",icon:l.Icons.SelectAll,compact:!0,onclick:()=>{var e=t.filter(({checked:e})=>!e).map(({id:e})=>({id:e,checked:!0}));n(e)},disabled:i}),(0,s.default)(c.Button,{label:\"\"===this.searchText?\"Clear All\":\"Clear Filtered\",icon:l.Icons.Deselect,compact:!0,onclick:()=>{var e=t.filter(({checked:e})=>e).map(({id:e})=>({id:e,checked:!1}));n(e)},disabled:!o})),this.renderOptions(e,t)))]}renderSearchBox(){return(0,s.default)(\".pf-search-bar\",(0,s.default)(e.TextInput,{oninput:e=>{e=e.target;this.searchText=e.value},leftIcon:l.Icons.Search,value:this.searchText,placeholder:\"Filter options...\",className:\"pf-search-box\"}),this.renderClearButton())}renderClearButton(){return\"\"!=this.searchText?(0,s.default)(c.Button,{onclick:()=>{this.searchText=\"\"},label:\"\",icon:\"close\"}):null}renderOptions(e,t){const{onChange:a=()=>{}}=e;return t.map(e=>{const{checked:t,name:r,id:n}=e;return(0,s.default)(i.Checkbox,{label:r,key:n,checked:t,className:\"pf-multiselect-item\",onchange:()=>{a([{id:n,checked:!t}])}})})}}im.MultiSelect=d;im.PopupMultiSelect=class{view({attrs:e}){var{icon:t,popupPosition:r=o.PopupPosition.Auto,intent:n,compact:a}=e;return(0,s.default)(o.Popup,{trigger:(0,s.default)(c.Button,{label:this.labelText(e),icon:t,intent:n,compact:a}),position:r},(0,s.default)(d,e))}labelText(e){var{options:e,showNumSelected:t,label:r}=e;return t?r+` (${e.filter(({checked:e})=>e).length} selected)`:r}}}return im}var cm,um,dm,pm={},fm={};function hm(){if(!cm){cm=1,Object.defineProperty(fm,\"__esModule\",{value:!0}),fm.VirtualScrollHelper=void 0;var e=Le();const u=gi();class t{_trash=new e.DisposableStack;_data=[];constructor(s,l,e=[]){this._data=e.map(e=>({opts:e}));const t=()=>{this._data.forEach(e=>{var t,r=s,n=l,{tolerancePx:a,overdrawPx:i,callback:o}=e.opts;e.rect?(a=new u.Rect2D(n.getBoundingClientRect()).expand(a),t=r.getBoundingClientRect(),(a=a.intersect(t)).translate({x:t.x,y:t.y}).contains(a)||(t=c(r,n,i),o(t),e.rect=t)):(a=c(r,n,i),o(a),e.rect=a)})},r=(l.addEventListener(\"scroll\",t,{passive:!0}),this._trash.defer(()=>l.removeEventListener(\"scroll\",t)),new ResizeObserver(()=>{t()}));r.observe(l),r.observe(s),this._trash.defer(()=>{r.disconnect()})}[Symbol.dispose](){this._trash.dispose()}}function c(e,t,r){e=e.getBoundingClientRect();return new u.Rect2D(t.getBoundingClientRect()).intersect(e).expand(r).intersect(e).reframe(e)}fm.VirtualScrollHelper=t}return fm}function mm(){if(!um){um=1,Object.defineProperty(pm,\"__esModule\",{value:!0}),pm.VirtualTable=void 0;const c=Jr.__importDefault(xe()),s=_i(),l=Pe(),u=hm();var e=Le();pm.VirtualTable=class{CONTAINER_REF=\"CONTAINER\";SLIDER_REF=\"SLIDER\";trash=new e.DisposableStack;renderBounds={rowStart:0,rowEnd:0};view({attrs:e}){var{columns:t,className:r,numRows:n,rowHeight:a,style:i}=e;return(0,c.default)(\".pf-vtable\",{className:r,style:i,ref:this.CONTAINER_REF},(0,c.default)(\".pf-vtable-content\",(0,c.default)(\".pf-vtable-header\",t.map(e=>(0,c.default)(\".pf-vtable-data\",{style:{width:e.width}},e.header))),(0,c.default)(\".pf-vtable-slider\",{ref:this.SLIDER_REF,style:{height:a*n+\"px\"}},(0,c.default)(\".pf-vtable-puck\",{style:{transform:`translateY(${this.renderBounds.rowStart*a}px)`}},this.renderContent(e)))))}renderContent(t){var r=[];for(let e=this.renderBounds.rowStart;e<this.renderBounds.rowEnd;++e)r.push(this.renderRow(t,e));return r}renderRow(e,t){const{rows:r,firstRowOffset:n,rowHeight:a,columns:i,onRowHover:o,onRowOut:s}=e;if(n<=t&&t<n+r.length){const l=r[t-n];return(0,c.default)(\".pf-vtable-row\",{className:l.className,style:{height:a+\"px\"},onmouseover:()=>{o?.(l.id)},onmouseout:()=>{s?.(l.id)}},l.cells.map((e,t)=>(0,c.default)(\".pf-vtable-data\",{style:{width:i[t].width}},e)))}return(0,c.default)(\"\",{style:{height:a+\"px\"}})}oncreate({dom:e,attrs:r}){var{renderOverdrawPx:t=200,renderTolerancePx:n=100,queryOverdrawPx:a=1e4,queryTolerancePx:i=5e3}=r,o=(0,s.toHTMLElement)((0,l.assertExists)((0,s.findRef)(e,this.SLIDER_REF))),e=(0,l.assertExists)((0,s.findRef)(e,this.CONTAINER_REF)),o=new u.VirtualScrollHelper(o,e,[{overdrawPx:t,tolerancePx:n,callback:e=>{var t=2*Math.floor(e.top/r.rowHeight/2),e=2*Math.ceil(e.height/r.rowHeight/2);this.renderBounds={rowStart:t,rowEnd:t+e},c.default.redraw()}},{overdrawPx:a,tolerancePx:i,callback:e=>{var t=2*Math.floor(e.top/r.rowHeight/2),e=Math.ceil(e.bottom/r.rowHeight);r.onReload?.(t,e-t),c.default.redraw()}}]);this.trash.use(o)}onremove(e){this.trash.dispose()}}}return pm}function gm(){if(!dm){dm=1;{var g=am;Object.defineProperty(g,\"__esModule\",{value:!0}),g.LogsFilters=g.LOG_PRIORITIES=g.LogPanel=void 0;const _=Jr.__importDefault(xe()),h=Fe(),a=qe(),y=Ns(),m=Ue(),t=hu();var e=Qc();const i=Fu(),o=Bl(),r=lm(),s=yi(),n=je(),l=Vl(),c=mm(),T=be(),u=yu();g.LogPanel=class{trace;entries;pagination={offset:0,count:0};rowsMonitor;filterMonitor;queryLimiter=new e.AsyncLimiter;constructor({attrs:e}){this.trace=e.trace,this.rowsMonitor=new t.Monitor([()=>e.filterStore.state,()=>e.trace.timeline.visibleWindow.toTimeSpan().start,()=>e.trace.timeline.visibleWindow.toTimeSpan().end]),this.filterMonitor=new t.Monitor([()=>e.filterStore.state])}view({attrs:r}){this.rowsMonitor.ifStateChanged()&&this.reloadData(r);var e=1<r.cache.uniqueMachineIds.length,t=this.entries&&0<this.entries.processName.filter(e=>e).length,n=this.entries?.totalEvents??0;return(0,_.default)(a.DetailsShell,{title:\"Android Logs\",description:\"Total messages: \"+n,buttons:(0,_.default)(v,{trace:r.trace,cache:r.cache,store:r.filterStore})},(0,_.default)(c.VirtualTable,{className:\"pf-logs-panel\",columns:[...e?[{header:\"Machine\",width:\"6em\"}]:[],{header:\"Timestamp\",width:\"13em\"},{header:\"PID\",width:\"3em\"},{header:\"TID\",width:\"3em\"},{header:\"Level\",width:\"4em\"},{header:\"Tag\",width:\"13em\"},...t?[{header:\"Process\",width:\"18em\"}]:[],{header:\"Message\",width:\"\"}],rows:this.renderRows(e,t),firstRowOffset:this.entries?.offset??0,numRows:this.entries?.totalEvents??0,rowHeight:20,onReload:(e,t)=>{this.pagination={offset:e,count:t},this.reloadData(r)},onRowHover:e=>{e=this.entries?.timestamps[e];void 0!==e&&(r.trace.timeline.hoverCursorTimestamp=e)},onRowOut:()=>{r.trace.timeline.hoverCursorTimestamp=void 0}}))}reloadData(a){this.queryLimiter.schedule(async()=>{var e=a.trace.timeline.visibleWindow.toTimeSpan();if(this.filterMonitor.ifStateChanged()){{var t=a.trace.engine;var r=a.filterStore.state;await t.query(\"drop view if exists filtered_logs\");var n=function(e,t){return e?`msg glob ${(0,i.escapeGlob)(t)} as is_msg_chosen,\n      (process.name is not null and process.name glob ${(0,i.escapeGlob)(t)}) as is_process_chosen,\n      0 as is_msg_highlighted,\n      0 as is_process_highlighted`:t?`1 as is_msg_chosen,\n      1 as is_process_chosen,\n      msg glob ${(0,i.escapeGlob)(t)} as is_msg_highlighted,\n      (process.name is not null and process.name glob ${(0,i.escapeGlob)(t)}) as is_process_highlighted`:`1 as is_msg_chosen,\n      1 as is_process_chosen,\n      0 as is_msg_highlighted,\n      0 as is_process_highlighted`}(r.hideNonMatching,r.textEntry);let e=`select prio, ts, pid, tid, tag, msg,\n      process.name as process_name,\n      process.machine_id as machine_id, ${n}\n      from android_logs\n      left join thread using(utid)\n      left join process using(upid)\n      where prio >= `+r.minimumLevel;r.tags.length&&(e+=` and tag in (${function(e){return e.map(e=>(0,i.escapeQuery)(e)).join()}(r.tags)})`);r.machineExcludeList.length&&(e+=` and ifnull(process.machine_id, 0) not in (${r.machineExcludeList.join(\",\")})`);await t.query(`create view filtered_logs as select *\n    from (${e})\n    where is_msg_chosen is 1 or is_process_chosen is 1`)}await 0}this.entries=await async function(e,t,r){var n=await e.query(`\n        select\n          ts,\n          pid,\n          tid,\n          prio,\n          ifnull(tag, '[NULL]') as tag,\n          ifnull(msg, '[NULL]') as msg,\n          is_msg_highlighted as isMsgHighlighted,\n          is_process_highlighted as isProcessHighlighted,\n          ifnull(process_name, '') as processName,\n          machine_id as machineId\n        from filtered_logs\n        where ts >= ${t.start} and ts <= ${t.end}\n        order by ts\n        limit ${r.offset}, ${r.count}\n    `),a=[],i=[],o=[],s=[],l=[],c=[],u=[],d=[],p=[],f=n.iter({ts:m.LONG,pid:m.NUM,tid:m.NUM,prio:m.NUM,tag:m.STR,msg:m.STR,isMsgHighlighted:m.NUM_NULL,isProcessHighlighted:m.NUM,processName:m.STR,machineId:m.NUM_NULL});for(;f.valid();f.next())i.push(h.Time.fromRaw(f.ts)),o.push(f.pid),s.push(f.tid),l.push(f.prio),c.push(f.tag),u.push(f.msg),d.push(1===f.isMsgHighlighted||1===f.isProcessHighlighted),p.push(f.processName),a.push(f.machineId??0);n=await e.query(`\n    select\n      count(*) as totalEvents\n    from filtered_logs\n    where ts >= ${t.start} and ts <= ${t.end}\n  `),e=n.firstRow({totalEvents:m.NUM}).totalEvents;return{offset:r.offset,machineIds:a,timestamps:i,pids:o,tids:s,priorities:l,tags:c,messages:u,isHighlighted:d,processName:p,totalEvents:e}}(a.trace.engine,e,this.pagination)})}renderRows(t,r){if(!this.entries)return[];var n=this.trace,a=this.entries.machineIds,i=this.entries.timestamps,o=this.entries.pids,s=this.entries.tids,l=this.entries.priorities,c=this.entries.tags,u=this.entries.messages,d=this.entries.processName,p=[];for(let e=0;e<this.entries.timestamps.length;e++){var f=l[e],h=g.LOG_PRIORITIES[f][0],m=i[e],f=\"pf-logs-panel__row--\"+function(e){switch(e){case 2:return\"verbose\";case 3:return\"debug\";case 4:return\"info\";case 5:return\"warn\";case 6:return\"error\";case 7:return\"fatal\";default:return}}(f);p.push({id:e,className:(0,T.classNames)(f,this.entries.isHighlighted[e]&&\"pf-logs-panel__row--highlighted\"),cells:[...t?[a[e]]:[],(0,_.default)(y.Timestamp,{trace:n,ts:m}),o[e],s[e],h||\"?\",c[e],...r?[d[e]]:[],u[e]]})}return p}},g.LOG_PRIORITIES=[\"-\",\"-\",\"Verbose\",\"Debug\",\"Info\",\"Warn\",\"Error\",\"Fatal\"];class d{view(e){const t=e.attrs;var r=[];for(let e=2;e<t.options.length;e++){var n=e===t.selectedIndex;r.push((0,_.default)(\"option\",{value:e,selected:n},t.options[e]))}return(0,_.default)(o.Select,{onchange:e=>{e=e.target.value;t.onSelect(Number(e))}},r)}}class p{view({attrs:t}){return(0,_.default)(l.TextInput,{placeholder:\"Search logs...\",onkeyup:e=>{e=e.target;t.onChange(e.value)}})}}class f{view({attrs:e}){var t=e.hideNonMatching?\"unfold_less\":\"unfold_more\",r=e.hideNonMatching?\"Expand all and view highlighted\":\"Collapse all\";return(0,_.default)(n.Button,{icon:t,title:r,disabled:e.disabled,onclick:e.onClick})}}class v{view({attrs:e}){var t=1<e.cache.uniqueMachineIds.length;return[(0,_.default)(\"span\",\"Log Level\"),(0,_.default)(d,{trace:e.trace,options:g.LOG_PRIORITIES,selectedIndex:e.store.state.minimumLevel,onSelect:t=>{e.store.edit(e=>{e.minimumLevel=t})}}),(0,_.default)(u.TagInput,{placeholder:\"Filter by tag...\",tags:e.store.state.tags,onTagAdd:t=>{e.store.edit(e=>{e.tags.push(t)})},onTagRemove:t=>{e.store.edit(e=>{e.tags.splice(t,1)})}}),(0,_.default)(p,{trace:e.trace,onChange:t=>{e.store.edit(e=>{e.textEntry=t})}}),(0,_.default)(f,{hideNonMatching:e.store.state.hideNonMatching,onClick:()=>{e.store.edit(e=>{e.hideNonMatching=!e.hideNonMatching})},disabled:\"\"===e.store.state.textEntry}),t&&this.renderFilterPanel(e)]}renderFilterPanel(t){const n=t.store.state.machineExcludeList;var e=t.cache.uniqueMachineIds.map(t=>({id:String(t),name:\"Machine \"+t,checked:!n.some(e=>e===t)}));return(0,_.default)(r.PopupMultiSelect,{label:\"Filter by machine\",icon:\"filter_list_alt\",popupPosition:s.PopupPosition.Top,options:e,onChange:e=>{const r=new Set(n);e.forEach(({checked:e,id:t})=>{t=Number(t);e?r.delete(t):r.add(t)}),t.store.edit(e=>{e.machineExcludeList=Array.from(r)})}})}}g.LogsFilters=v}}return am}var _m,ym,Tm={};function vm(){if(!_m){_m=1,Object.defineProperty(Tm,\"__esModule\",{value:!0}),Tm.createAndroidLogTrack=function(r,e){return new i.DatasetSliceTrack({trace:r,uri:e,rootTableName:\"android_logs\",dataset:new o.SourceDataset({src:`\n        select\n          id,\n          ts,\n          prio,\n          utid,\n          tag,\n          msg,\n          CASE\n            WHEN prio <= 3 THEN 0\n            WHEN prio = 4 THEN 1\n            WHEN prio = 5 THEN 2\n            WHEN prio = 6 THEN 3\n            WHEN prio = 7 THEN 4\n            ELSE -1\n          END as depth\n        from android_logs\n        order by ts\n        -- android_logs aren't guaranteed to be ordered by ts, but this is a\n        -- requirements for DatasetSliceTrack's mipmap operator to work \n        -- correctly, so we must explicitly sort them above.\n      `,schema:{id:a.NUM,ts:a.LONG,prio:a.NUM,utid:a.NUM,depth:a.NUM,tag:a.STR_NULL,msg:a.STR_NULL}}),initialMaxDepth:4,colorizer:e=>h[e.depth],tooltip:e=>[(0,n.default)(\"\",(0,n.default)(\"b\",e.row.tag)),(0,n.default)(\"\",e.row.msg)],instantStyle:{width:m,render:(e,t)=>e.fillRect(t.x,t.y,t.width,t.height)},sliceLayout:{padding:2,sliceHeight:7},detailsPanel:e=>{let t;return r.engine.query(\"select msg from android_logs where id = \"+e.id).then(e=>{e=e.maybeFirstRow({msg:a.STR});t=e?.msg}),{render(){return(0,n.default)(d.DetailsShell,{title:\"Android Log\"},(0,n.default)(p.GridLayout,(0,n.default)(p.GridLayoutColumn,(0,n.default)(s.Section,{title:\"Details\"},(0,n.default)(l.Tree,(0,n.default)(l.TreeNode,{left:\"ID\",right:e.id}),(0,n.default)(l.TreeNode,{left:\"Timestamp\",right:(0,n.default)(c.Timestamp,{trace:r,ts:u.Time.fromRaw(e.ts)})}),(0,n.default)(l.TreeNode,{left:\"Priority\",right:e.prio}),(0,n.default)(l.TreeNode,{left:\"Tag\",right:e.tag}),(0,n.default)(l.TreeNode,{left:\"Utid\",right:e.utid}),(0,n.default)(l.TreeNode,{left:\"Message\",right:t||(0,n.default)(f.Spinner)}))))))}}}})};const n=Jr.__importDefault(xe()),a=Ue(),i=Ge(),o=ze();var e=He(),t=Ao();const s=Bs(),l=Ve(),c=Ns(),u=Fe(),d=qe(),p=Ls(),f=Ei(),h=[(0,e.makeColorScheme)(new t.HSLColor({h:122,s:39,l:49})),(0,e.makeColorScheme)(new t.HSLColor({h:0,s:0,l:70})),(0,e.makeColorScheme)(new t.HSLColor({h:45,s:100,l:51})),(0,e.makeColorScheme)(new t.HSLColor({h:4,s:90,l:58})),(0,e.makeColorScheme)(new t.HSLColor({h:291,s:64,l:42}))],m=6}return Tm}function bm(){if(!ym){ym=1,Object.defineProperty(nm,\"__esModule\",{value:!0});const s=Jr.__importDefault(xe()),l=gm(),c=$e(),u=Ue(),d=vm(),p=Me(),f=We(),h=Fu(),m=Oe(),g=Ae(),_={version:1,filter:{minimumLevel:2,tags:[],textEntry:\"\",hideNonMatching:!0,machineExcludeList:[]}};nm.default=class{static id=\"com.android.AndroidLog\";async onTraceLoad(e){var t=e.mountStore(e=>(0,p.exists)(e)&&1===e.version?e:_),r=(await e.engine.query(\"select count(1) as cnt from android_logs\")).firstRow({cnt:u.NUM}).cnt,n=\"perfetto.AndroidLog\";0<r&&(e.tracks.registerTrack({uri:n,description:()=>(0,s.default)(\"\",[\"Android log (logcat) messages.\",(0,s.default)(\"br\"),(0,s.default)(m.Anchor,{href:\"https://perfetto.dev/docs/data-sources/android-log\",target:\"_blank\",icon:g.Icons.ExternalLink},\"Documentation\")]),tags:{kind:c.ANDROID_LOGS_TRACK_KIND},renderer:(0,d.createAndroidLogTrack)(e,n)}),n=new f.TrackNode({name:\"Android logs\",uri:n}),e.workspace.addChildInOrder(n));const a=\"perfetto.AndroidLog#tab\",i=t.createSubStore([\"filter\"],e=>e),o={uniqueMachineIds:await async function(e){for(var t=[],r=(await e.query(\"SELECT DISTINCT(machine_id) FROM cpu ORDER BY machine_id\")).iter({machine_id:u.NUM_NULL});r.valid();r.next())t.push(r.machine_id??0);return t}(e.engine)};e.tabs.registerTab({isEphemeral:!1,uri:a,content:{render:()=>(0,s.default)(l.LogPanel,{filterStore:i,cache:o,trace:e}),getTitle:()=>\"Android Logs\"}}),0<r&&e.tabs.addDefaultTab(a),e.commands.registerCommand({id:\"com.android.ShowAndroidLogsTab\",name:\"Show android logs tab\",callback:()=>{e.tabs.showTab(a)}}),e.search.registerSearchProvider({name:\"Android logs\",selectTracks(e){return e.filter(e=>e.tags?.kind===c.ANDROID_LOGS_TRACK_KIND).filter(e=>e.renderer.getDataset?.()?.implements({msg:u.STR_NULL}))},async getSearchFilter(e){return{where:\"msg GLOB \"+(0,h.escapeSearchQuery)(e)}}})}}}return nm}var Em,Sm={};function Am(){if(!Em){Em=1,Object.defineProperty(Sm,\"__esModule\",{value:!0});var e=Jr.__importDefault(Wc());const s=pl(),l=Vi(),c=We(),a=Ue();class t{static id=\"com.android.AndroidLongBatterySupport\";static dependencies=[e.default];groups=new Map;getOrCreateGroup(e,t,r=!0){var n=this.groups.get(t);return n||(n=new c.TrackNode({name:t,isSummary:!0,collapsed:r}),this.groups.set(t,n),e.workspace.addChildInOrder(n),n)}addTrack(e,t,r,n=!0){(r?this.getOrCreateGroup(e,r,n):e.workspace).addChildInOrder(t)}async addSliceTrack(e,t,r,n,a=[],i=!0){var o=\"/long_battery_tracing_\"+t,r=await(0,s.createQuerySliceTrack)({trace:e,uri:o,data:{sqlSource:r,columns:[\"ts\",\"dur\",\"name\",...a]},argColumns:a}),a=(e.tracks.registerTrack({uri:o,renderer:r}),new c.TrackNode({uri:o,name:t}));this.addTrack(e,a,n,i)}async addCounterTrack(e,t,r,n,a,i=!0){var o=\"/long_battery_tracing_\"+t,r=await(0,l.createQueryCounterTrack)({trace:e,uri:o,data:{sqlSource:r,columns:[\"ts\",\"value\"]},options:a}),a=(e.tracks.registerTrack({uri:o,renderer:r}),new c.TrackNode({uri:o,name:t}));this.addTrack(e,a,n,i)}_features;async features(e){return this._features||(this._features=this.findFeatures(e)),this._features}async findFeatures(r){const n=new Set;var e=async e=>{for(var t=(await r.query(e)).iter({feature:a.STR});t.valid();t.next())n.add(t.feature)};await e(`\n      select distinct 'atom.' || s.name as feature\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'`),await e(`\n      select distinct\n        case when name like '%wlan%' then 'net.wifi'\n            when name like '%rmnet%' then 'net.modem'\n            else 'net.other'\n        end as feature\n      from track\n      where name like '%Transmitted' or name like '%Received'`),await e(`\n      select distinct 'track.' || lower(name) as feature\n      from track where name in ('RIL', 'suspend_backoff') or name like 'battery_stats.%'`),await e(`\n      select distinct 'track.battery_stats.*' as feature\n      from track where name like 'battery_stats.%'`);try{await r.query(`INCLUDE PERFETTO MODULE\n              google3.wireless.android.telemetry.trace_extractor.modules.atom_counters_slices`),n.add(\"google3\")}catch(r){}return n}async onTraceLoad(){}}Sm.default=t}return Sm}var Om,Cm={};function wm(){if(!Om){Om=1,Object.defineProperty(Cm,\"__esModule\",{value:!0});var e=Jr;const o=e.__importDefault(Wc()),u=Ue(),t=e.__importDefault(Am()),s=[\"item\",\"type\",\"raw_wakeup\",\"on_device_attribution\",\"suspend_quality\",\"backoff_state\",\"backoff_reason\",\"backoff_count\",\"backoff_millis\"];class r{static id=\"com.android.AndroidLongBatteryTracing\";static dependencies=[o.default,t.default];support(e){return e.plugins.getPlugin(t.default)}async addBatteryStatsState(e,t,r,n,a,i){i.has(\"track.\"+n)&&await t.addSliceTrack(e,r,`SELECT ts, safe_dur AS dur, value_name AS name\n    FROM android_battery_stats_state\n    WHERE track_name = \"${n}\"`,a)}async addBatteryStatsEvent(e,t,r,n,a,i){i.has(\"track.\"+n)&&await t.addSliceTrack(e,r,`SELECT ts, safe_dur AS dur, str_value AS name\n    FROM android_battery_stats_event_slices\n    WHERE track_name = \"${n}\"`,a)}async addDeviceState(r,n,a){if(a.has(\"track.battery_stats.*\")){const i=\"Device State\";var e=r.plugins.getPlugin(o.default).getOrCreateStandardGroup(r.workspace,\"DEVICE_STATE\"),e=(n.groups.set(i,e),(e,t)=>this.addBatteryStatsEvent(r,n,e,t,i,a)),t=r.engine;await t.query(\"INCLUDE PERFETTO MODULE android.battery_stats;\"),await t.query(\"INCLUDE PERFETTO MODULE android.suspend;\"),await t.query(\"INCLUDE PERFETTO MODULE android.battery.charging_states;\"),await t.query(\"INCLUDE PERFETTO MODULE android.battery.doze;\"),await t.query(\"INCLUDE PERFETTO MODULE android.screen_state;\"),await n.addSliceTrack(r,\"Screen state\",\"SELECT ts, dur, screen_state AS name FROM android_screen_state\",i),await n.addSliceTrack(r,\"Charging\",\"SELECT ts, dur, charging_state AS name FROM android_charging_states\",i),await n.addSliceTrack(r,\"Suspend / resume\",`\n  SELECT\n    ts,\n    dur,\n    'Suspended' AS name\n  FROM android_suspend_state\n  WHERE power_state = 'suspended'`,i),await n.addSliceTrack(r,\"Doze light state\",\"SELECT ts, dur, light_idle_state AS name FROM android_light_idle_state\",i),await n.addSliceTrack(r,\"Doze deep state\",\"SELECT ts, dur, deep_idle_state AS name FROM android_deep_idle_state\",i),e(\"Top app\",\"battery_stats.top\"),await n.addSliceTrack(r,\"Long wakelocks\",`SELECT\n            ts - 60000000000 as ts,\n            safe_dur + 60000000000 as dur,\n            str_value AS name,\n            package_name as package\n        FROM add_package_name!((\n          select *, int_value as uid\n          from android_battery_stats_event_slices\n          WHERE track_name = \"battery_stats.longwake\"\n        ))`,i,[\"package\"]),e(\"Foreground apps\",\"battery_stats.fg\"),a.has(\"atom.scheduled_job_state_changed\")&&a.has(\"google3\")?(await t.query(`INCLUDE PERFETTO MODULE\n         google3.wireless.android.telemetry.trace_extractor.modules.power.jobs;`),await n.addSliceTrack(r,\"Jobs\",\"SELECT ts, dur, tag AS name, uid FROM jobs\",i,[\"uid\"])):e(\"Jobs\",\"battery_stats.job\"),a.has(\"atom.thermal_throttling_severity_state_changed\")&&await n.addSliceTrack(r,\"Thermal throttling\",`\n  with step1 as (\n      select\n          ts,\n          EXTRACT_ARG(arg_set_id, 'thermal_throttling_severity_state_changed.sensor_type') as sensor_type,\n          EXTRACT_ARG(arg_set_id, 'thermal_throttling_severity_state_changed.sensor_name') as sensor_name,\n          EXTRACT_ARG(arg_set_id, 'thermal_throttling_severity_state_changed.temperature_deci_celsius') / 10.0 as temperature_celcius,\n          EXTRACT_ARG(arg_set_id, 'thermal_throttling_severity_state_changed.severity') as severity\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n      and s.name = 'thermal_throttling_severity_state_changed'\n  ),\n  step2 as (\n      select\n          ts,\n          lead(ts) over (partition by sensor_type, sensor_name order by ts) - ts as dur,\n          sensor_type,\n          sensor_name,\n          temperature_celcius,\n          severity\n      from step1\n      where sensor_type not like 'TEMPERATURE_TYPE_BCL_%'\n  )\n  select\n    ts,\n    dur,\n    case sensor_name\n        when 'VIRTUAL-SKIN' then ''\n        else sensor_name || ' is '\n    end || severity || ' (' || temperature_celcius || 'C)' as name\n  from step2\n  where severity != 'NONE'`,i)}}async addAtomCounters(e,t){var r=e.engine;await r.query(`INCLUDE PERFETTO MODULE\n          google3.wireless.android.telemetry.trace_extractor.modules.atom_counters_slices`);for(var n=(await r.query(`select distinct ui_group, ui_name, ui_unit, counter_name\n       from atom_counters\n       where ui_name is not null`)).iter({ui_group:u.STR,ui_name:u.STR,ui_unit:u.STR,counter_name:u.STR});n.valid();n.next()){var a=n.ui_unit;await t.addCounterTrack(e,n.ui_name,`select ts, ${\"%\"===a?100:1} * counter_value as value\n         from atom_counters\n         where counter_name = '${n.counter_name}'`,n.ui_group,\"%\"===a?{yOverrideMaximum:100,unit:\"%\"}:void 0!==a?{unit:a}:void 0)}}async addAtomSlices(e,t){var r=e.engine;await r.query(`INCLUDE PERFETTO MODULE\n          google3.wireless.android.telemetry.trace_extractor.modules.atom_counters_slices`);for(var n,a,i=(await r.query(`select distinct ui_group, ui_name, atom, field\n       from atom_slices\n       where ui_name is not null\n       order by 1, 2, 3, 4`)).iter({atom:u.STR,ui_group:u.STR,ui_name:u.STR,field:u.STR}),o=new Map,s=new Map;i.valid();i.next()){var l=i.atom;let e=s.get(l);void 0===e&&(e=[],s.set(l,e)),e.push(i.field),o.set(l,{ui_group:i.ui_group,ui_name:i.ui_name})}for([n,a]of s){function c(e){return e.replaceAll(/[[\\]]/g,\"\").replaceAll(/\\./g,\"_\")}await t.addSliceTrack(e,o.get(n).ui_name,`select ts, dur, slice_name as name, ${a.map(e=>{return`max(case when field = '${e}' then ifnull(string_value, int_value) end)\n                as `+c(e)}).join(\", \")}\n         from atom_slices\n         where atom = '${n}'\n         group by ts, dur, name`,o.get(n).ui_group,a.map(e=>c(e)))}}async addNetworkSummary(e,t,r){if(r.has(\"net.modem\")||r.has(\"net.wifi\")){var n=\"Network Summary\",a=e.engine;if(await a.query(\"INCLUDE PERFETTO MODULE android.battery_stats;\"),await a.query(\"INCLUDE PERFETTO MODULE android.network_packets;\"),await a.query(`\n  create or replace perfetto table network_summary as\n  with base as (\n      select\n          cast(ts / 5000000000 as int64) * 5000000000 AS ts,\n          case\n              when iface glob '*wlan*' then 'wifi'\n              when iface glob '*rmnet*' then 'modem'\n              else 'unknown'\n          end as dev_type,\n          package_name as pkg,\n          sum(packet_length) AS value\n      from android_network_packets\n      where (iface glob '*wlan*' or iface glob '*rmnet*')\n      group by 1,2,3\n  ),\n  zeroes as (\n      select\n          ts,\n          dev_type,\n          pkg,\n          value\n      from base\n      union all\n      select\n          ts + 5000000000 as ts,\n          dev_type,\n          pkg,\n          0 as value\n      from base\n  ),\n  final as (\n      select\n          ts,\n          dev_type,\n          pkg,\n          sum(value) as value\n      from zeroes\n      group by 1, 2, 3\n  )\n  select * from final where ts is not null`),await a.query(`\n  create or replace perfetto view radio_transport_data_conn as\n  select ts, safe_dur AS dur, value_name as data_conn, value AS data_conn_val\n  from android_battery_stats_state\n  where track_name = \"battery_stats.data_conn\";\n\n  create or replace perfetto view radio_transport_nr_state as\n  select ts, safe_dur AS dur, value AS nr_state_val\n  from android_battery_stats_state\n  where track_name = \"battery_stats.nr_state\";\n\n  drop table if exists radio_transport_join;\n  create virtual table radio_transport_join\n  using span_left_join(radio_transport_data_conn, radio_transport_nr_state);\n\n  create or replace perfetto view radio_transport as\n  select\n    ts, dur,\n    case data_conn_val\n      -- On LTE with NR connected is 5G NSA.\n      when 13 then iif(nr_state_val = 3, '5G (NSA)', data_conn)\n      -- On NR with NR state present, is 5G SA.\n      when 20 then iif(nr_state_val is null, '5G (SA or NSA)', '5G (SA)')\n      else data_conn\n    end as name\n  from radio_transport_join;`),await t.addSliceTrack(e,\"Default network\",`\n  with base as (\n      select\n          ts,\n          substr(s.name, 6) as conn\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'battery_stats.conn'\n  ),\n  diff as (\n      select\n          ts,\n          conn,\n          conn != lag(conn) over (order by ts) as keep\n      from base\n  )\n  select\n      ts,\n      ifnull(lead(ts) over (order by ts), (select end_ts from trace_bounds)) - ts as dur,\n      case\n        when conn like '-1:%' then 'Disconnected'\n        when conn like '0:%' then 'Modem'\n        when conn like '1:%' then 'WiFi'\n        when conn like '4:%' then 'VPN'\n        else conn\n      end as name\n  from diff where keep is null or keep`,n),r.has(\"atom.network_tethering_reported\")&&await t.addSliceTrack(e,\"Tethering\",`\n  with base as (\n      select\n          ts as ts_end,\n          EXTRACT_ARG(arg_set_id, 'network_tethering_reported.duration_millis') * 1000000 as dur\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n        and s.name = 'network_tethering_reported'\n  )\n  select ts_end - dur as ts, dur, 'Tethering' as name from base`,n),r.has(\"net.wifi\")){await t.addCounterTrack(e,\"Wifi total bytes\",\"select ts, sum(value) as value from network_summary where dev_type = 'wifi' group by 1\",n,{yDisplay:\"log\",yRangeSharingKey:\"net_bytes\",unit:\"byte\"});for(var i=(await a.query(\"select pkg, sum(value) from network_summary where dev_type='wifi' group by 1 order by 2 desc limit 10\")).iter({pkg:u.STR});i.valid();i.next())await t.addCounterTrack(e,\"Top wifi: \"+i.pkg,`select ts, value from network_summary where dev_type = 'wifi' and pkg = '${i.pkg}'`,n,{yDisplay:\"log\",yRangeSharingKey:\"net_bytes\",unit:\"byte\"})}if(this.addBatteryStatsState(e,t,\"Wifi interface\",\"battery_stats.wifi_radio\",n,r),this.addBatteryStatsState(e,t,\"Wifi supplicant state\",\"battery_stats.wifi_suppl\",n,r),this.addBatteryStatsState(e,t,\"Wifi strength\",\"battery_stats.wifi_signal_strength\",n,r),r.has(\"net.modem\")){await t.addCounterTrack(e,\"Modem total bytes\",\"select ts, sum(value) as value from network_summary where dev_type = 'modem' group by 1\",n,{yDisplay:\"log\",yRangeSharingKey:\"net_bytes\",unit:\"byte\"});for(var o=(await a.query(\"select pkg, sum(value) from network_summary where dev_type='modem' group by 1 order by 2 desc limit 10\")).iter({pkg:u.STR});o.valid();o.next())await t.addCounterTrack(e,\"Top modem: \"+o.pkg,`select ts, value from network_summary where dev_type = 'modem' and pkg = '${o.pkg}'`,n,{yDisplay:\"log\",yRangeSharingKey:\"net_bytes\",unit:\"byte\"})}this.addBatteryStatsState(e,t,\"Cellular interface\",\"battery_stats.mobile_radio\",n,r),await t.addSliceTrack(e,\"Cellular connection\",\"select ts, dur, name from radio_transport\",n),this.addBatteryStatsState(e,t,\"Cellular strength\",\"battery_stats.phone_signal_strength\",n,r)}}async addModemTeaData(e,t){var r=e.engine,n=\"Modem Detail\";await r.query(`INCLUDE PERFETTO MODULE\n          google3.wireless.android.telemetry.trace_extractor.modules.modem_tea_metrics`);for(var a=(await r.query(\"select distinct name from pixel_modem_counters\")).iter({name:u.STR});a.valid();a.next())await t.addCounterTrack(e,a.name,`select ts, value from pixel_modem_counters where name = '${a.name}'`,n);for(var i=(await r.query(\"select distinct track_name from pixel_modem_slices\")).iter({track_name:u.STR});i.valid();i.next())await t.addSliceTrack(e,i.track_name,`select ts, dur, slice_name as name from pixel_modem_slices\n            where track_name = '${i.track_name}'`,n)}async addKernelWakelocks(e,t){var r=e.engine;await r.query(\"INCLUDE PERFETTO MODULE android.kernel_wakelocks;\");for(var n=(await r.query(\"SELECT DISTINCT name, type FROM android_kernel_wakelocks\")).iter({name:u.STR,type:u.STR});n.valid();n.next())await t.addCounterTrack(e,n.name,`SELECT ts, dur, held_ratio * 100 AS value\n         FROM android_kernel_wakelocks\n         WHERE name = \"${n.name}\"`,\"Kernel Wakelock Summary\",{yRangeSharingKey:\"kernel_wakelock\",unit:\"%\"})}async addKernelWakelocksStatsd(e,t,r){if(r.has(\"atom.kernel_wakelock\")){r=e.engine;await r.query(\"INCLUDE PERFETTO MODULE android.suspend;\"),await r.query(`\n  create or replace perfetto table kernel_wakelocks_statsd as\n  with kernel_wakelock_args as (\n    select\n      arg_set_id,\n      min(iif(key = 'kernel_wakelock.name', string_value, null)) as wakelock_name,\n      min(iif(key = 'kernel_wakelock.count', int_value, null)) as count,\n      min(iif(key = 'kernel_wakelock.time_micros', int_value, null)) as time_micros\n    from args\n    where key in (\n      'kernel_wakelock.name',\n      'kernel_wakelock.count',\n      'kernel_wakelock.time_micros'\n    )\n    group by 1\n  ),\n  interesting as (\n    select wakelock_name\n    from (\n      select wakelock_name, max(time_micros)-min(time_micros) as delta_us\n      from kernel_wakelock_args\n      group by 1\n    )\n    -- Only consider wakelocks with over 1 second of time during the whole trace\n    where delta_us > 1e6\n  ),\n  step1 as (\n    select ts, wakelock_name, count, time_micros\n    from kernel_wakelock_args\n    join interesting using (wakelock_name)\n    join slice using (arg_set_id)\n  ),\n  step2 as (\n    select\n      ts,\n      wakelock_name,\n      lead(ts) over (partition by wakelock_name order by ts) as ts_end,\n      lead(count) over (partition by wakelock_name order by ts) - count as count,\n      (lead(time_micros) over (partition by wakelock_name order by ts) - time_micros) * 1000 as wakelock_dur\n    from step1\n  ),\n  step3 as (\n    select\n      ts,\n      ts_end,\n      ifnull((select sum(dur) from android_suspend_state s\n              where power_state = 'suspended'\n                and s.ts > step2.ts\n                and s.ts < step2.ts_end), 0) as suspended_dur,\n      wakelock_name,\n      count,\n      wakelock_dur\n    from step2\n    where wakelock_dur is not null\n      and wakelock_dur >= 0\n  )\n  select\n    ts,\n    ts_end - ts as dur,\n    wakelock_name,\n    min(100.0 * wakelock_dur / (ts_end - ts - suspended_dur), 100) as value\n  from step3`);for(var n=(await r.query(`\n  select wakelock_name, max(value) as max_value\n  from kernel_wakelocks_statsd\n  where wakelock_name not in ('PowerManager.SuspendLockout', 'PowerManagerService.Display')\n  group by 1\n  having max_value > 1\n  order by 1;`)).iter({wakelock_name:u.STR});n.valid();n.next())await t.addCounterTrack(e,n.wakelock_name+\" (statsd)\",`select ts, dur, value\n         from kernel_wakelocks_statsd\n         where wakelock_name = \"${n.wakelock_name}\"`,\"Kernel Wakelock Summary (statsd)\",{yRangeSharingKey:\"kernel_wakelock_statsd\",unit:\"%\"})}}async addWakeups(t,r,n){if(n.has(\"track.suspend_backoff\")){n=t.engine;await n.query(\"INCLUDE PERFETTO MODULE android.wakeups;\");var a=(await n.query(`select\n          item,\n          sum(dur) as sum_dur\n      from android_wakeups\n      group by 1\n      having sum_dur > 600e9`)).iter({item:u.STR}),i=`select\n                ts,\n                dur,\n                item || case backoff_reason\n                  when 'short' then ' (Short suspend backoff)'\n                  when 'failed' then ' (Failed suspend backoff)'\n                  else ''\n                end as name,\n                item,\n                type,\n                raw_wakeup,\n                on_device_attribution,\n                suspend_quality,\n                backoff_state,\n                backoff_reason,\n                backoff_count,\n                backoff_millis\n            from android_wakeups`,o=[];let e=!1;for(;a.valid();a.next())e=!0,await r.addSliceTrack(t,\"Wakeup \"+a.item,i+` where item=\"${a.item}\"`,\"Wakeups\",s),o.push(a.item);await r.addSliceTrack(t,e?\"Other wakeups\":\"Wakeups\",i+` where item not in ('${o.join(\"','\")}')`,\"Wakeups\",s)}}async addHighCpu(e,t,r){if(r.has(\"atom.cpu_cycles_per_uid_cluster\")){r=e.engine;await r.query(`\n  create or replace perfetto table high_cpu as\n  with cpu_cycles_args AS (\n    select\n      arg_set_id,\n      min(iif(key = 'cpu_cycles_per_uid_cluster.uid', int_value, null)) as uid,\n      min(iif(key = 'cpu_cycles_per_uid_cluster.cluster', int_value, null)) as cluster,\n      min(iif(key = 'cpu_cycles_per_uid_cluster.time_millis', int_value, null)) as time_millis\n    from args\n    where key in (\n      'cpu_cycles_per_uid_cluster.uid',\n      'cpu_cycles_per_uid_cluster.cluster',\n      'cpu_cycles_per_uid_cluster.time_millis'\n    )\n    group by 1\n  ),\n  interesting AS (\n    select uid, cluster\n    from (\n      select uid, cluster, max(time_millis)-min(time_millis) as delta_ms\n      from cpu_cycles_args\n      group by 1, 2\n    )\n    -- Only consider tracks with over 1 second of cpu during the whole trace\n    where delta_ms > 1e3\n  ),\n  base as (\n    select ts, uid, cluster, sum(time_millis) as time_millis\n    from cpu_cycles_args\n    join interesting using (uid, cluster)\n    join slice using (arg_set_id)\n    group by 1, 2, 3\n  ),\n  with_windows as (\n    select\n      ts,\n      uid,\n      cluster,\n      lead(ts) over (partition by uid, cluster order by ts) - ts as dur,\n      (lead(time_millis) over (partition by uid, cluster order by ts) - time_millis) * 1000000.0 as cpu_dur\n    from base\n  ),\n  with_ratio as (\n    select\n      ts,\n      iif(dur is null, 0, max(0, 100.0 * cpu_dur / dur)) as value,\n      case cluster when 0 then 'little' when 1 then 'mid' when 2 then 'big' else 'cl-' || cluster end as cluster,\n      package_name as pkg\n    from add_package_name!(with_windows)\n  )\n  select ts, sum(value) as value, cluster, pkg\n  from with_ratio\n  group by 1, 3, 4`);for(var n=(await r.query(\"select distinct pkg, cluster from high_cpu where value > 10 order by 1, 2\")).iter({pkg:u.STR,cluster:u.STR});n.valid();n.next())await t.addCounterTrack(e,`CPU (${n.cluster}): `+n.pkg,`select ts, value from high_cpu where pkg = \"${n.pkg}\" and cluster=\"${n.cluster}\"`,\"CPU per UID (major users)\",{yOverrideMaximum:100,unit:\"%\"})}}async onTraceLoad(e){var t=this.support(e),r=await t.features(e.engine);await e.engine.query(`\n  create or replace perfetto table package_name_lookup as\n  with installed as (\n    select uid, string_agg(package_name, ',') as name\n    from package_list\n    where uid >= 10000\n    group by 1\n  ),\n  system(uid, name) as (\n    values\n      (0, 'AID_ROOT'),\n      (1000, 'AID_SYSTEM_USER'),\n      (1001, 'AID_RADIO'),\n      (1082, 'AID_ARTD')\n  )\n  select uid, name from installed\n  union all\n  select uid, name from system\n  order by uid;\n\n  -- Adds a \"package_name\" column by joining on \"uid\" from the source table.\n  create or replace perfetto macro add_package_name(src TableOrSubquery) returns TableOrSubquery as (\n    select A.*, ifnull(B.name, \"uid=\" || A.uid) as package_name\n    from $src as A\n    left join package_name_lookup as B\n    on (B.uid = (A.uid % 100000))\n  );\n`),await this.addNetworkSummary(e,t,r),await this.addKernelWakelocks(e,t),await this.addKernelWakelocksStatsd(e,t,r),await this.addWakeups(e,t,r),await this.addDeviceState(e,t,r),await this.addHighCpu(e,t,r),r.has(\"google3\")&&(await this.addAtomCounters(e,t),await this.addAtomSlices(e,t),await this.addModemTeaData(e,t))}}Cm.default=r}return Cm}var km,Im={};var Rm,Nm={};var Mm,Pm={};var Dm,xm,Lm={},Fm={};function Um(){if(!Dm){Dm=1,Object.defineProperty(Fm,\"__esModule\",{value:!0}),Fm.optimizationsTrack=async function(t){var e=await t.engine.query(`\n      INCLUDE PERFETTO MODULE android.startup.startups;\n      SELECT startup_id as id, package FROM android_startups;\n    `,h);if(0===e.numRows())return;var r=[],n=e.iter({id:c.NUM,package:c.STR});for(;n.valid();n.next()){var a=l(t,{id:n.id,package:n.package});r.push(a)}await t.engine.query(`\n      CREATE PERFETTO FUNCTION _startup_compilation_state(filter STRING)\n      RETURNS STRING\n      AS\n      SELECT CASE\n        WHEN $filter IN ('verify', 'speed') OR $filter IS NULL\n          THEN FORMAT('Sub-optimal compilation state (%s)', ifnull($filter, 'unknown'))\n        WHEN $filter = 'speed-profile'\n          THEN 'Ideal compilation state (speed-profile)'\n        ELSE\n          FORMAT('Unknown compilation state (%s)', $filter)\n      END;\n\n      CREATE PERFETTO FUNCTION _startup_compilation_state_details(filter STRING)\n      RETURNS STRING\n      AS\n      SELECT CASE\n        WHEN $filter = 'verify' or $filter IS NULL\n          THEN 'No methods are precompiled, and class loading is unoptimized'\n        WHEN $filter = 'speed'\n          THEN 'Methods are all precompiled, and class loading is unoptimized'\n        WHEN $filter = 'speed-profile'\n          THEN 'Methods and classes in the profile are optimized'\n        ELSE\n          FORMAT('Unknown compilation state (%s)', $filter)\n      END;\n\n      CREATE PERFETTO FUNCTION _startup_filter_extraction(startup_id INT)\n      RETURNS TABLE(compile_ts LONG, filter STRING)\n      AS\n      SELECT\n        MAX(slice_ts) AS compile_ts,\n        regexp_extract(slice_name, 'filter=([^\\\\s]+)') as filter\n      FROM android_thread_slices_for_all_startups\n      WHERE slice_name GLOB 'location=* status=* filter=* reason=*'\n        AND startup_id = $startup_id;\n\n      CREATE PERFETTO TABLE _startup_optimization_slices AS\n      SELECT\n        s.ts,\n        s.ts_end - s.ts as dur,\n        s.startup_id as id,\n        _startup_compilation_state(f.filter) AS name,\n        _startup_compilation_state_details(f.filter) AS raw_details\n      FROM android_startups s\n      LEFT JOIN _startup_filter_extraction(s.startup_id) f\n    `,h);const i=\"/android_startups_optimization_status\",o=\"_startup_optimization_slices\",s=(t.tracks.registerTrack({uri:i,renderer:new d.DatasetSliceTrack({trace:t,uri:i,dataset:new p.SourceDataset({src:o,schema:{id:c.NUM,ts:c.LONG,dur:c.LONG,name:c.STR,raw_details:c.STR}}),detailsPanel:e=>new f.DebugSliceTrackDetailsPanel(t,o,e.id)})}),new u.TrackNode({name:\"Optimization Status\",uri:i}));for(const l of r)s.addChildLast(l);return s};const c=Ue(),u=We(),d=Ge(),p=ze(),f=ll(),h=\"DexOptInsights\";function l(e,t){var r=`/android_startups/${t.id}/classloading`;return e.tracks.registerTrack({uri:r,renderer:new d.DatasetSliceTrack({trace:e,uri:r,dataset:new p.SourceDataset({src:`\n          SELECT\n            slice_ts as ts,\n            slice_dur as dur,\n            slice_name AS name,\n            slice_id as id\n          FROM android_class_loading_for_startup\n        `,schema:{id:c.NUM,ts:c.LONG,dur:c.LONG,name:c.STR},filter:{col:\"id\",eq:t.id}})})}),new u.TrackNode({name:`Unoptimized Class Loading in (${t.package})`,uri:r})}}return Fm}var Bm,jm={};var Hm,Gm={};var Vm,qm={};var zm,Wm={};var $m,Km={};var Ym,Jm={};var Qm,Zm={};var Xm,eg={};var tg,rg,ng={},ag={},ig={},og={};function sg(){return tg||(tg=1,Object.defineProperty(og,\"__esModule\",{value:!0}),og.expandProcessName=function(e){return e.includes(\"systemui\")?\"com.android.systemui\":e.includes(\"launcher\")?\"com.google.android.apps.nexuslauncher\":e.includes(\"surfaceflinger\")?\"/system/bin/surfaceflinger\":e}),og}var lg,cg={};var ug,dg,pg={},fg={};function hg(){return ug||(ug=1,Object.defineProperty(fg,\"__esModule\",{value:!0}),fg.focusOnSlice=function(e,t){e.selection.selectSqlEvent(\"slice\",t,{scrollToSelection:!0})}),fg}var mg,gg={};var _g,yg,Tg,vg={};function bg(){var e,t,r,n,a;return yg||(yg=1,Object.defineProperty(ag,\"__esModule\",{value:!0}),ag.METRIC_HANDLERS=void 0,e=function(){if(!rg){rg=1,Object.defineProperty(ig,\"__esModule\",{value:!0}),ig.pinBlockingCallHandlerInstance=void 0;const t=sg(),a=Mc(),n=Ol(),i=Ue();ig.pinBlockingCallHandlerInstance=new class{match(e){e=/perfetto_android_blocking_call(?:_per_frame)?-cuj-name-(?<process>.*)-name-(?<cujName>.*)-blocking_calls-name-(?<blockingCallName>([^\\-]*))-(?<aggregation>.*)/.exec(e);if(e?.groups)return{process:(0,t.expandProcessName)(e.groups.process),cujName:e.groups.cujName,blockingCallName:e.groups.blockingCallName,aggregation:e.groups.aggregation}}async addMetricTrack(e,t){this.pinSingleCuj(t,e);var r=this.blockingCallTrackConfig(e);(0,n.addDebugSliceTrack)({trace:t,...r});\"max_dur_per_frame_ns-mean\"===e.aggregation&&(r=await this.frameWithMaxDurBlockingCallTrackConfig(t,e),(0,n.addDebugSliceTrack)({trace:t,...r}))}async pinSingleCuj(e,t){var r=\"Jank CUJ: \"+t.cujName,n=\"Latency CUJ: \"+t.cujName;await(0,a.addJankCUJDebugTrack)(e,r,t.cujName)||(0,a.addLatencyCUJDebugTrack)(e,n,t.cujName)}blockingCallTrackConfig(e){var t=e.cujName,r=e.process;return{data:{sqlSource:`\n  SELECT name, ts, dur\n  FROM main_thread_slices_scoped_to_cujs\n  WHERE process_name = \"${r}\"\n      AND cuj_name = \"${t}\"\n      AND name = \"${e.blockingCallName}\"\n  `,columns:[\"name\",\"ts\",\"dur\"]},columns:{ts:\"ts\",dur:\"dur\",name:\"name\"},argColumns:[\"name\",\"ts\",\"dur\"],title:\"Blocking calls in \"+r}}async getFrameIdWithMaxDurationBlockingCall(e,t){var r=t.cujName,n=t.process,t=t.blockingCallName;return e.engine.query(`\n      INCLUDE PERFETTO MODULE android.frame_blocking_calls.blocking_calls_aggregation;\n\n      SELECT\n        frame_id\n      FROM _blocking_calls_frame_cuj\n      WHERE\n        process_name = '${n}'\n        AND name = '${t}'\n        AND cuj_name = '${r}'\n      -- select frame_id for the metric with the maximum duration.\n      ORDER BY dur DESC\n      LIMIT 1`)}async frameWithMaxDurBlockingCallTrackConfig(e,t){let r={frame_id:null};try{r=(await this.getFrameIdWithMaxDurationBlockingCall(e,t)).firstRow({frame_id:i.LONG})}catch(e){throw new Error(e.message+\" caused by: No frame found for the given process, CUJ and blocking call.\")}return{data:{sqlSource:`\n      SELECT\n        cast_string!(frame_id) AS frame_id,\n        ts,\n        dur\n      FROM android_frames_layers\n      WHERE frame_id = ${r.frame_id}\n      `,columns:[\"frame_id\",\"ts\",\"dur\"]},columns:{ts:\"ts\",dur:\"dur\",name:\"frame_id\"},argColumns:[\"frame_id\",\"ts\",\"dur\"],title:\"Frame with max duration blocking call\"}}}}return ig}(),t=function(){if(!lg){lg=1,Object.defineProperty(cg,\"__esModule\",{value:!0}),cg.pinNotificationsBlockingCallHandlerInstance=void 0;const r=Ol();cg.pinNotificationsBlockingCallHandlerInstance=new class{match(e){e=/perfetto_android_notifications_blocking_call-blocking_calls-name-(?<blockingCallName>([^\\-]*))-(?<aggregation>.*)/.exec(e);if(e?.groups)return{notificationName:e.groups.blockingCallName,aggregation:e.groups.aggregation}}addMetricTrack(e,t){e=this.notificationsBlockingCallTrackConfig(e);(0,r.addDebugSliceTrack)({trace:t,...e})}notificationsBlockingCallTrackConfig(e){return{data:{sqlSource:`\nSELECT\n    s.name name,\n    s.ts ts,\n    s.dur dur\nFROM slice s\n    JOIN thread_track ON s.track_id = thread_track.id\n    JOIN thread USING (utid)\nWHERE\n    thread.is_main_thread AND\n    _is_relevant_notifications_blocking_call(s.name, s.dur)\n  `,columns:[\"name\",\"ts\",\"dur\"]},columns:{ts:\"ts\",dur:\"dur\",name:\"name\"},argColumns:[\"name\",\"ts\",\"dur\"],title:e.notificationName+\" blocking calls\"}}}}return cg}(),r=function(){if(!dg){dg=1,Object.defineProperty(pg,\"__esModule\",{value:!0}),pg.pinCujScopedJankInstance=void 0;const t=sg(),r=Ue(),n=hg(),a=Ol();pg.pinCujScopedJankInstance=new class{match(e){e=/perfetto_cuj_(?<process>.*)-(?<cujName>.*)-.*-missed_(?<jankType>frames|sf_frames|app_frames)/.exec(e);if(e?.groups)return{process:(0,t.expandProcessName)(e.groups.process),cujName:e.groups.cujName,jankType:e.groups.jankType}}async addMetricTrack(e,t){const{tableName:r,...n}=await this.cujScopedTrackConfig(e,t);(0,a.addDebugSliceTrack)({trace:t,...n}),await this.focusOnFirstJank(t,r)}async cujScopedTrackConfig(e,t){let r=\"AND (app_missed > 0 OR sf_missed > 0)\",n=\"all\";e.jankType?.includes(\"app\")?(r=\" AND app_missed > 0\",n=\"app\"):e.jankType?.includes(\"sf\")&&(r=\" AND sf_missed > 0\",n=\"sf\");var a=e.cujName,e=e.process,i=\"_janky_frames_during_cuj_from_metric_key_\"+Math.floor(1e6*Math.random()),a=`\n      CREATE OR REPLACE PERFETTO TABLE ${i} AS\n      SELECT\n        f.vsync as id,\n        f.ts AS ts,\n        f.dur as dur\n      FROM android_jank_cuj_frame f LEFT JOIN android_jank_cuj cuj USING (cuj_id)\n      WHERE cuj.process_name = \"${e}\"\n      AND cuj_name = \"${a}\" ${r}\n    `,t=(await t.engine.query(a),`\n      SELECT id, ts, dur\n      FROM ${i}\n    `);return{...{data:{sqlSource:t,columns:[\"id\",\"ts\",\"dur\"]},columns:{ts:\"ts\",dur:\"dur\",name:\"id\"},argColumns:[\"id\",\"ts\",\"dur\"],title:n+\" missed frames in \"+e},tableName:i}}async focusOnFirstJank(e,t){var t=await e.engine.query(`\n      SELECT id as slice_id, track_id\n      FROM actual_frame_timeline_slice\n      WHERE name = cast_string!(\n        (SELECT id FROM ${t} LIMIT 1)\n      );\n    `);0!==t.numRows()&&(t=t.firstRow({slice_id:r.NUM,track_id:r.NUM}),(0,n.focusOnSlice)(e,t.slice_id))}}}return pg}(),n=function(){if(!mg){mg=1,Object.defineProperty(gg,\"__esModule\",{value:!0}),gg.pinFullTraceJankInstance=void 0;const t=sg(),r=Ol();gg.pinFullTraceJankInstance=new class{match(e){e=/perfetto_ft_(?<process>.*)-missed_(?<jankType>frames|sf_frames|app_frames)/.exec(e);if(e?.groups)return{process:(0,t.expandProcessName)(e.groups.process),jankType:e.groups.jankType}}async addMetricTrack(e,t){e=this.fullTraceJankConfig(e);await t.engine.query(`\n    INCLUDE PERFETTO MODULE android.frames.jank_type;\n    INCLUDE PERFETTO MODULE slices.with_context;\n    `),(0,r.addDebugSliceTrack)({trace:t,...e})}fullTraceJankConfig(e){let t,r;r=e.jankType?.includes(\"app\")?(t=\" android_is_app_jank_type(display_value)\",\"app\"):e.jankType?.includes(\"sf\")?(t=\" android_is_sf_jank_type(display_value)\",\"sf\"):(t=\" android_is_missed_frame_type(display_value)\",\"all\");var e=e.process,n=[\"name\",\"ts\",\"dur\",\"track_id\",\"slice_id\",\"category\",\"thread_name\",\"tid\",\"process_name\",\"pid\"];return{data:{sqlSource:`\n      WITH filtered_args AS (\n        SELECT DISTINCT arg_set_id\n        FROM args\n        WHERE key = 'Jank type'\n        ${t?\"AND \"+t:\"\"}\n      )\n      SELECT\n        name,\n        ts as ts,\n        dur as dur,\n        track_id as track_id,\n        id as slice_id,\n        category,\n        thread_name,\n        tid as tid,\n        process_name,\n        pid as pid\n      FROM thread_or_process_slice\n      JOIN filtered_args ON filtered_args.arg_set_id = thread_or_process_slice.arg_set_id\n      WHERE process_name = '${e}'`,columns:n},columns:{ts:\"ts\",dur:\"dur\",name:\"name\"},argColumns:n,title:r+\" missed frames in \"+e}}}}return gg}(),a=function(){if(!_g){_g=1,Object.defineProperty(vg,\"__esModule\",{value:!0}),vg.pinCujInstance=void 0;const n=Mc();vg.pinCujInstance=new class{match(e){e=/perfetto_cuj_(?<process>.*)-(?<cujName>.*)-.*-missed_.*/.exec(e);if(e?.groups)return{cujName:e.groups.cujName}}async addMetricTrack(e,t){this.pinSingleCuj(t,e.cujName)}pinSingleCuj(e,t){var r=\"Jank CUJ: \"+t;(0,n.addJankCUJDebugTrack)(e,r,t)}}}return vg}(),ag.METRIC_HANDLERS=[a.pinCujInstance,r.pinCujScopedJankInstance,e.pinBlockingCallHandlerInstance,t.pinNotificationsBlockingCallHandlerInstance,n.pinFullTraceJankInstance]),ag}function Eg(){if(!Tg){Tg=1,Object.defineProperty(ng,\"__esModule\",{value:!0});var e=Jr;const s=bg(),n=e.__importDefault(Mc());let r;class t{static id=\"com.android.PinAndroidPerfMetrics\";static dependencies=[n.default];static onActivate(){r=function(){var e=location.hash,t=new RegExp(\"dev.perfetto.PinAndroidPerfMetrics:metrics=(.*)\");if(null===(e=e.match(t)))return[];t=e[1];let r=[];return(r=t.includes(\"--\")?t.split(\"--\"):[t]).map(e=>decodeURIComponent(e))}()}async onTraceLoad(t){var e;t.commands.registerCommand({id:\"com.android.PinAndroidPerfMetrics\",name:\"Add and Pin: Jank Metric Slice\",callback:async()=>{var e=await t.omnibox.prompt(\"Metrics names (separated by comma)\");void 0!==e&&(e=e.split(\",\"),this.callHandlers(e,t))}}),0!==r.length&&(await(e=t.plugins.getPlugin(n.default)).pinJankCujs(t),await e.pinLatencyCujs(t),this.callHandlers(r,t))}async callHandlers(e,t){e=this.getMetricsToShow(e);if(0!==e.length){await t.engine.query(`\n  SELECT RUN_METRIC('android/android_blocking_calls_cuj_metric.sql');\n`);for(var{metricData:r,metricHandler:n}of e)n.addMetricTrack(r,t)}}getMetricsToShow(e){var e=[...e].sort(),t=[],r=new Set;for(const i of e)for(const o of s.METRIC_HANDLERS){var n,a=o.match(i);a&&(n=this.metricDataToJson(a),r.has(n)||(r.add(n),t.push({metricData:a,metricHandler:o})))}return t}metricDataToJson(e){return JSON.stringify(e,Object.keys(e).sort())}}ng.default=t}return ng}var Sg,Ag={};var Og,Cg={};var wg,kg={};function Ig(){if(wg)return kg;wg=1,Object.defineProperty(kg,\"__esModule\",{value:!0});const a=Ue(),i=We(),t=[\"L<\",\"UI Events\",\"IKeyguardService\",\"Transition:\"];kg.default=class{static id=\"com.android.SysUIWorkspace\";async onTraceLoad(e){e.commands.registerCommand({id:\"com.android.CreateSysUIWorkspace\",name:\"Create System UI workspace\",callback:()=>o.create(e,\"com.android.systemui\",\"System UI\",t)})}};class o{trace;process;workspaceName;topLevelTracksToPin;ws;processTracks;constructor(e,t,r,n=[]){this.trace=e,this.process=t,this.workspaceName=r,this.topLevelTracksToPin=n,this.processTracks=this.findProcessTracks(),this.ws=this.trace.workspaces.createEmptyWorkspace(this.workspaceName)}static async create(e,t,r,n=[]){e.workspaces.all.find(e=>e.title===r)||(t=await async function(e,t){e=await e.engine.query(`\n      INCLUDE PERFETTO MODULE android.process_metadata;\n      select\n        _process_available_info_summary.upid,\n        process.name\n      from _process_available_info_summary\n      join process using(upid)\n      where process.name = '${t}';\n    `);if(0!==e.numRows())return e.firstRow({upid:a.NUM,name:a.STR})}(e,t))&&await new o(e,t,r,n).createWorkspace()}async createWorkspace(){this.pinTracksContaining(\"Actual Timeline\",\"Expected Timeline\"),this.pinMainThread(),this.pinFirstRenderThread(),await this.pinUiThreads(),this.topLevelTracksToPin.forEach(e=>this.pinTracksContainingInGroupIfNeeded(e)),this.createGroups(),this.trace.workspaces.switchWorkspace(this.ws)}findProcessTracks(){return this.trace.workspace.flatTracks.filter(e=>{return!!e.uri&&this.trace.tracks.getTrack(e.uri)?.tags?.upid===this.process.upid})}pinTracksContaining(...e){e.forEach(e=>this.pinTrackContaining(e))}pinTrackContaining(e){this.getTracksContaining(e).forEach(e=>this.ws.addChildLast(e.clone()))}pinTracksContainingInGroupIfNeeded(e,t=2){var r=this.getTracksContaining(e);if(0!=r.length)if(r.length>=t){const n=new i.TrackNode({name:e,isSummary:!0});this.ws.addChildLast(n),r.forEach(e=>n.addChildLast(e.clone()))}else r.forEach(e=>this.ws.addChildLast(e.clone()))}getTracksContaining(t){return this.processTracks.filter(e=>e.name.includes(t))}pinMainThread(){this.processTracks.filter(e=>this.getTrackUtid(e)==this.process.upid).forEach(e=>this.ws.addChildLast(e.clone()))}pinFirstRenderThread(){var e=this.getTracksContaining(\"RenderThread\"),t=e.map(e=>this.getTrackUtid(e)).filter(e=>void 0!==e);const r=Math.min(...t);e.filter(e=>this.getTrackUtid(e)==r).forEach(e=>this.ws.addChildLast(e.clone()))}async pinUiThreads(){var e=await this.trace.engine.query(`\n      INCLUDE PERFETTO MODULE slices.with_context;\n      SELECT DISTINCT utid FROM thread_or_process_slice\n      WHERE upid = ${this.process.upid}\n       AND upid != utid -- main thread excluded\n       AND name GLOB \"Choreographer#doFrame*\"\n    `);if(0!==e.numRows()){const r=new Set;for(var t=e.iter({utid:a.NUM});t.valid();t.next())r.add(t.utid);e=this.processTracks.filter(e=>{e=this.getTrackUtid(e);return null!=e&&r.has(e)});e.sort((e,t)=>e.name.localeCompare(t.name));const n=new i.TrackNode({name:\"UI Threads\",isSummary:!0});this.ws.addChildLast(n),e.forEach(e=>n.addChildLast(e.clone()))}}getTrackUtid(e){return this.trace.tracks.getTrack(e.uri)?.tags?.utid}createGroups(){const n=/(?<groupName>.*)##(?<trackName>.*)/,a=new Map;this.processTracks.forEach(e=>{var t,r=e.name.match(n);r?.groups&&({groupName:r,trackName:t}=r.groups,(e=e.clone()).name=t,a.has(r)||(t=new i.TrackNode({name:r,isSummary:!0}),this.ws.addChildLast(t),a.set(r,t)),a.get(r).addChildLast(e))})}}return kg}var Rg,Ng={};var Mg,Pg={};var Dg,xg={};var Lg,Fg={};var Ug,Bg={};var jg,Hg={};var Gg,Vg={};function qg(){if(!Gg){Gg=1,Object.defineProperty(Vg,\"__esModule\",{value:!0});const h=Jr.__importDefault(xe()),m=We(),g=Ge(),_=Ue(),y=ze(),T=He(),v=Ao();Vg.default=class{static id=\"com.example.Tracks\";static description=\"Example plugin showcasing different ways to create tracks.\";async onTraceLoad(e){var t,r,n,a;r=(n=e).traceInfo.start,t=n.traceInfo.end-n.traceInfo.start,a=\"example_events\",await n.engine.tryQuery(\"drop table if exists \"+a),await n.engine.query(`\n      create table ${a} (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        name TEXT,\n        ts INTEGER,\n        dur INTEGER,\n        arg TEXT\n      );\n\n      insert into ${a} (name, ts, dur, arg)\n      values\n        ('Foo', ${r}, ${t}, 'aaa'),\n        ('Bar', ${r}, ${t/2n}, 'bbb'),\n        ('Baz', ${r}, ${t/3n}, 'aaa'),\n        ('Qux', ${r+t/2n}, ${t/2n}, 'bbb')\n      ;\n    `),n=\"com.example.Tracks#BasicSliceTrack\",(a=e).tracks.registerTrack({uri:n,renderer:new g.DatasetSliceTrack({trace:a,uri:n,dataset:new y.SourceDataset({src:\"example_events\",schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR}})})}),await!a.workspace.addChildInOrder(new m.TrackNode({uri:n,name:\"All Example Events\"})),r=\"com.example.Tracks#FilteredSliceTrack\",(t=e).tracks.registerTrack({uri:r,renderer:new g.DatasetSliceTrack({trace:t,uri:r,dataset:new y.SourceDataset({src:`\n          select\n            id,\n            ts,\n            dur,\n            name\n          from example_events -- Use our dummy table\n          where name glob 'B*'\n        `,schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR}})})}),await!t.workspace.addChildInOrder(new m.TrackNode({uri:r,name:'Slices starting with \"B\"'})),a=\"com.example.Tracks#SliceTrackColorized\",(n=e).tracks.registerTrack({uri:a,renderer:new g.DatasetSliceTrack({trace:n,uri:a,dataset:new y.SourceDataset({src:\"example_events\",schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR,arg:_.STR}}),colorizer:e=>(0,T.getColorForSlice)(e.arg)})}),await!n.workspace.addChildInOrder(new m.TrackNode({uri:a,name:\"Slices colorized by arg\"})),t=\"com.example.Tracks#InstantTrack\",(r=e).tracks.registerTrack({uri:t,renderer:new g.DatasetSliceTrack({trace:r,uri:t,dataset:new y.SourceDataset({src:\"example_events\",schema:{id:_.NUM,ts:_.LONG,name:_.STR}})})}),await!r.workspace.addChildInOrder(new m.TrackNode({uri:t,name:\"Instant Events\"})),n=\"com.example.Tracks#FlatSliceTrack\",(a=e).tracks.registerTrack({uri:n,renderer:new g.DatasetSliceTrack({trace:a,uri:n,dataset:new y.SourceDataset({src:\"select 0 as depth, * from example_events\",schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR,depth:_.NUM}})})}),await!a.workspace.addChildInOrder(new m.TrackNode({uri:n,name:\"Flat Slices (Depth 0)\"})),r=\"com.example.Tracks#FixedColorSliceTrack\",(t=e).tracks.registerTrack({uri:r,renderer:new g.DatasetSliceTrack({trace:t,uri:r,dataset:new y.SourceDataset({src:\"example_events\",schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR}}),colorizer:()=>(0,T.makeColorScheme)(new v.HSLColor({h:0,s:50,l:50}))})}),await!t.workspace.addChildInOrder(new m.TrackNode({uri:r,name:\"Fixed Color Slices (Red)\"}));{var i=e;const o=\"com.example.Tracks#BasicSliceTrack\",s=new m.TrackNode({name:\"Nested Track Group\"}),l=new m.TrackNode({uri:o,name:\"Nested 1\"}),c=new m.TrackNode({uri:o,name:\"Nested 2\"}),u=new m.TrackNode({uri:o,name:\"Nested 1.1\"}),d=new m.TrackNode({uri:o,name:\"Nested 1.2\"}),p=new m.TrackNode({uri:o,name:\"Nested 1.2.1\"}),f=new m.TrackNode({uri:o,name:\"Nested 2.1\"});i.workspace.addChildInOrder(s),s.addChildLast(l),s.addChildLast(c),l.addChildLast(u),l.addChildLast(d),d.addChildLast(p),c.addChildLast(f),i.commands.registerCommand({id:\"com.example.CloneNestedGroupToNewWorkspace\",name:\"Clone nested group to new workspace\",callback:()=>{var e=i.workspaces.createEmptyWorkspace(\"New workspace\");e.addChildLast(s.clone()),i.workspaces.switchWorkspace(e)}}),i.commands.registerCommand({id:\"com.example.DeepCloneNestedGroupToNewWorkspace\",name:\"Clone nested group and children to new workspace\",callback:()=>{var e=i.workspaces.createEmptyWorkspace(\"Deep workspace\");e.addChildLast(s.clone(!0)),i.workspaces.switchWorkspace(e)}})}await 0,a=\"com.example.Tracks#TrackWithHelpText\",(n=e).tracks.registerTrack({uri:a,renderer:new g.DatasetSliceTrack({trace:n,uri:a,dataset:new y.SourceDataset({src:\"example_events\",schema:{id:_.NUM,ts:_.LONG,dur:_.LONG,name:_.STR}})}),description:()=>[\"This track demonstrates how to add help text.\",(0,h.default)(\"br\"),\"Use Mithril vnodes for formatting.\"]}),(n=function(e){var t=\"com.example.Tracks#GroupWithHelpText\",t=(e.tracks.registerTrack({uri:t,renderer:{render:()=>{}},description:()=>[\"This is a group track with some help text.\",(0,h.default)(\"br\"),\"Use Mithril vnodes for formatting.\"]}),new m.TrackNode({uri:t,name:\"Group with Help Text\"}));return e.workspace.addChildInOrder(t),t}(n)).addChildLast(new m.TrackNode({uri:a,name:\"Track with Help Text\"}))}}}return Vg}var zg,Wg,$g={},Kg={},Yg={},Jg={},Qg={};function Zg(){if(!zg){zg=1;{var t=Qg;Object.defineProperty(t,\"__esModule\",{value:!0}),t.UnsubscribeRequestSchema=t.SubscribeRequestSchema=t.ResourceListChangedNotificationSchema=t.ReadResourceResultSchema=t.ReadResourceRequestSchema=t.ListResourceTemplatesResultSchema=t.ListResourceTemplatesRequestSchema=t.ListResourcesResultSchema=t.ListResourcesRequestSchema=t.ResourceTemplateSchema=t.ResourceSchema=t.BlobResourceContentsSchema=t.TextResourceContentsSchema=t.ResourceContentsSchema=t.PaginatedResultSchema=t.PaginatedRequestSchema=t.ProgressNotificationSchema=t.ProgressSchema=t.PingRequestSchema=t.isInitializedNotification=t.InitializedNotificationSchema=t.InitializeResultSchema=t.ServerCapabilitiesSchema=t.isInitializeRequest=t.InitializeRequestSchema=t.ClientCapabilitiesSchema=t.ImplementationSchema=t.BaseMetadataSchema=t.CancelledNotificationSchema=t.EmptyResultSchema=t.JSONRPCMessageSchema=t.isJSONRPCError=t.JSONRPCErrorSchema=t.ErrorCode=t.isJSONRPCResponse=t.JSONRPCResponseSchema=t.isJSONRPCNotification=t.JSONRPCNotificationSchema=t.isJSONRPCRequest=t.JSONRPCRequestSchema=t.RequestIdSchema=t.ResultSchema=t.NotificationSchema=t.RequestSchema=t.CursorSchema=t.ProgressTokenSchema=t.JSONRPC_VERSION=t.SUPPORTED_PROTOCOL_VERSIONS=t.DEFAULT_NEGOTIATED_PROTOCOL_VERSION=t.LATEST_PROTOCOL_VERSION=void 0,t.ClientResultSchema=t.ClientNotificationSchema=t.ClientRequestSchema=t.RootsListChangedNotificationSchema=t.ListRootsResultSchema=t.ListRootsRequestSchema=t.RootSchema=t.CompleteResultSchema=t.CompleteRequestSchema=t.PromptReferenceSchema=t.ResourceReferenceSchema=t.ResourceTemplateReferenceSchema=t.ElicitResultSchema=t.ElicitRequestSchema=t.PrimitiveSchemaDefinitionSchema=t.EnumSchemaSchema=t.NumberSchemaSchema=t.StringSchemaSchema=t.BooleanSchemaSchema=t.CreateMessageResultSchema=t.CreateMessageRequestSchema=t.SamplingMessageSchema=t.ModelPreferencesSchema=t.ModelHintSchema=t.LoggingMessageNotificationSchema=t.SetLevelRequestSchema=t.LoggingLevelSchema=t.ToolListChangedNotificationSchema=t.CallToolRequestSchema=t.CompatibilityCallToolResultSchema=t.CallToolResultSchema=t.ListToolsResultSchema=t.ListToolsRequestSchema=t.ToolSchema=t.ToolAnnotationsSchema=t.PromptListChangedNotificationSchema=t.GetPromptResultSchema=t.PromptMessageSchema=t.ContentBlockSchema=t.ResourceLinkSchema=t.EmbeddedResourceSchema=t.AudioContentSchema=t.ImageContentSchema=t.TextContentSchema=t.GetPromptRequestSchema=t.ListPromptsResultSchema=t.ListPromptsRequestSchema=t.PromptSchema=t.PromptArgumentSchema=t.ResourceUpdatedNotificationSchema=void 0,t.McpError=t.ServerResultSchema=t.ServerNotificationSchema=t.ServerRequestSchema=void 0;var e=Ne(),r=(t.LATEST_PROTOCOL_VERSION=\"2025-06-18\",t.DEFAULT_NEGOTIATED_PROTOCOL_VERSION=\"2025-03-26\",t.SUPPORTED_PROTOCOL_VERSIONS=[t.LATEST_PROTOCOL_VERSION,\"2025-03-26\",\"2024-11-05\",\"2024-10-07\"],t.JSONRPC_VERSION=\"2.0\",t.ProgressTokenSchema=e.z.union([e.z.string(),e.z.number().int()]),t.CursorSchema=e.z.string(),e.z.object({progressToken:e.z.optional(t.ProgressTokenSchema)}).passthrough()),r=e.z.object({_meta:e.z.optional(r)}).passthrough(),n=(t.RequestSchema=e.z.object({method:e.z.string(),params:e.z.optional(r)}),e.z.object({_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough()),a=(t.NotificationSchema=e.z.object({method:e.z.string(),params:e.z.optional(n)}),t.ResultSchema=e.z.object({_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.RequestIdSchema=e.z.union([e.z.string(),e.z.number().int()]),t.JSONRPCRequestSchema=e.z.object({jsonrpc:e.z.literal(t.JSONRPC_VERSION),id:t.RequestIdSchema}).merge(t.RequestSchema).strict(),t.isJSONRPCRequest=e=>t.JSONRPCRequestSchema.safeParse(e).success,t.JSONRPCNotificationSchema=e.z.object({jsonrpc:e.z.literal(t.JSONRPC_VERSION)}).merge(t.NotificationSchema).strict(),t.isJSONRPCNotification=e=>t.JSONRPCNotificationSchema.safeParse(e).success,t.JSONRPCResponseSchema=e.z.object({jsonrpc:e.z.literal(t.JSONRPC_VERSION),id:t.RequestIdSchema,result:t.ResultSchema}).strict(),t.isJSONRPCResponse=e=>t.JSONRPCResponseSchema.safeParse(e).success,t.ErrorCode={ConnectionClosed:-32e3,\"-32000\":\"ConnectionClosed\",RequestTimeout:-32001,\"-32001\":\"RequestTimeout\",ParseError:-32700,\"-32700\":\"ParseError\",InvalidRequest:-32600,\"-32600\":\"InvalidRequest\",MethodNotFound:-32601,\"-32601\":\"MethodNotFound\",InvalidParams:-32602,\"-32602\":\"InvalidParams\",InternalError:-32603,\"-32603\":\"InternalError\"},t.JSONRPCErrorSchema=e.z.object({jsonrpc:e.z.literal(t.JSONRPC_VERSION),id:t.RequestIdSchema,error:e.z.object({code:e.z.number().int(),message:e.z.string(),data:e.z.optional(e.z.unknown())})}).strict(),t.isJSONRPCError=e=>t.JSONRPCErrorSchema.safeParse(e).success,t.JSONRPCMessageSchema=e.z.union([t.JSONRPCRequestSchema,t.JSONRPCNotificationSchema,t.JSONRPCResponseSchema,t.JSONRPCErrorSchema]),t.EmptyResultSchema=t.ResultSchema.strict(),t.CancelledNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/cancelled\"),params:n.extend({requestId:t.RequestIdSchema,reason:e.z.string().optional()})}),t.BaseMetadataSchema=e.z.object({name:e.z.string(),title:e.z.optional(e.z.string())}).passthrough(),t.ImplementationSchema=t.BaseMetadataSchema.extend({version:e.z.string()}),t.ClientCapabilitiesSchema=e.z.object({experimental:e.z.optional(e.z.object({}).passthrough()),sampling:e.z.optional(e.z.object({}).passthrough()),elicitation:e.z.optional(e.z.object({}).passthrough()),roots:e.z.optional(e.z.object({listChanged:e.z.optional(e.z.boolean())}).passthrough())}).passthrough(),t.InitializeRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"initialize\"),params:r.extend({protocolVersion:e.z.string(),capabilities:t.ClientCapabilitiesSchema,clientInfo:t.ImplementationSchema})}),t.isInitializeRequest=e=>t.InitializeRequestSchema.safeParse(e).success,t.ServerCapabilitiesSchema=e.z.object({experimental:e.z.optional(e.z.object({}).passthrough()),logging:e.z.optional(e.z.object({}).passthrough()),completions:e.z.optional(e.z.object({}).passthrough()),prompts:e.z.optional(e.z.object({listChanged:e.z.optional(e.z.boolean())}).passthrough()),resources:e.z.optional(e.z.object({subscribe:e.z.optional(e.z.boolean()),listChanged:e.z.optional(e.z.boolean())}).passthrough()),tools:e.z.optional(e.z.object({listChanged:e.z.optional(e.z.boolean())}).passthrough())}).passthrough(),t.InitializeResultSchema=t.ResultSchema.extend({protocolVersion:e.z.string(),capabilities:t.ServerCapabilitiesSchema,serverInfo:t.ImplementationSchema,instructions:e.z.optional(e.z.string())}),t.InitializedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/initialized\")}),t.isInitializedNotification=e=>t.InitializedNotificationSchema.safeParse(e).success,t.PingRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"ping\")}),t.ProgressSchema=e.z.object({progress:e.z.number(),total:e.z.optional(e.z.number()),message:e.z.optional(e.z.string())}).passthrough(),t.ProgressNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/progress\"),params:n.merge(t.ProgressSchema).extend({progressToken:t.ProgressTokenSchema})}),t.PaginatedRequestSchema=t.RequestSchema.extend({params:r.extend({cursor:e.z.optional(t.CursorSchema)}).optional()}),t.PaginatedResultSchema=t.ResultSchema.extend({nextCursor:e.z.optional(t.CursorSchema)}),t.ResourceContentsSchema=e.z.object({uri:e.z.string(),mimeType:e.z.optional(e.z.string()),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.TextResourceContentsSchema=t.ResourceContentsSchema.extend({text:e.z.string()}),e.z.string().refine(e=>{try{return atob(e),!0}catch(e){return!1}},{message:\"Invalid Base64 string\"}));t.BlobResourceContentsSchema=t.ResourceContentsSchema.extend({blob:a}),t.ResourceSchema=t.BaseMetadataSchema.extend({uri:e.z.string(),description:e.z.optional(e.z.string()),mimeType:e.z.optional(e.z.string()),_meta:e.z.optional(e.z.object({}).passthrough())}),t.ResourceTemplateSchema=t.BaseMetadataSchema.extend({uriTemplate:e.z.string(),description:e.z.optional(e.z.string()),mimeType:e.z.optional(e.z.string()),_meta:e.z.optional(e.z.object({}).passthrough())}),t.ListResourcesRequestSchema=t.PaginatedRequestSchema.extend({method:e.z.literal(\"resources/list\")}),t.ListResourcesResultSchema=t.PaginatedResultSchema.extend({resources:e.z.array(t.ResourceSchema)}),t.ListResourceTemplatesRequestSchema=t.PaginatedRequestSchema.extend({method:e.z.literal(\"resources/templates/list\")}),t.ListResourceTemplatesResultSchema=t.PaginatedResultSchema.extend({resourceTemplates:e.z.array(t.ResourceTemplateSchema)}),t.ReadResourceRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"resources/read\"),params:r.extend({uri:e.z.string()})}),t.ReadResourceResultSchema=t.ResultSchema.extend({contents:e.z.array(e.z.union([t.TextResourceContentsSchema,t.BlobResourceContentsSchema]))}),t.ResourceListChangedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/resources/list_changed\")}),t.SubscribeRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"resources/subscribe\"),params:r.extend({uri:e.z.string()})}),t.UnsubscribeRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"resources/unsubscribe\"),params:r.extend({uri:e.z.string()})}),t.ResourceUpdatedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/resources/updated\"),params:n.extend({uri:e.z.string()})}),t.PromptArgumentSchema=e.z.object({name:e.z.string(),description:e.z.optional(e.z.string()),required:e.z.optional(e.z.boolean())}).passthrough(),t.PromptSchema=t.BaseMetadataSchema.extend({description:e.z.optional(e.z.string()),arguments:e.z.optional(e.z.array(t.PromptArgumentSchema)),_meta:e.z.optional(e.z.object({}).passthrough())}),t.ListPromptsRequestSchema=t.PaginatedRequestSchema.extend({method:e.z.literal(\"prompts/list\")}),t.ListPromptsResultSchema=t.PaginatedResultSchema.extend({prompts:e.z.array(t.PromptSchema)}),t.GetPromptRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"prompts/get\"),params:r.extend({name:e.z.string(),arguments:e.z.optional(e.z.record(e.z.string()))})}),t.TextContentSchema=e.z.object({type:e.z.literal(\"text\"),text:e.z.string(),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.ImageContentSchema=e.z.object({type:e.z.literal(\"image\"),data:a,mimeType:e.z.string(),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.AudioContentSchema=e.z.object({type:e.z.literal(\"audio\"),data:a,mimeType:e.z.string(),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.EmbeddedResourceSchema=e.z.object({type:e.z.literal(\"resource\"),resource:e.z.union([t.TextResourceContentsSchema,t.BlobResourceContentsSchema]),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.ResourceLinkSchema=t.ResourceSchema.extend({type:e.z.literal(\"resource_link\")}),t.ContentBlockSchema=e.z.union([t.TextContentSchema,t.ImageContentSchema,t.AudioContentSchema,t.ResourceLinkSchema,t.EmbeddedResourceSchema]),t.PromptMessageSchema=e.z.object({role:e.z.enum([\"user\",\"assistant\"]),content:t.ContentBlockSchema}).passthrough(),t.GetPromptResultSchema=t.ResultSchema.extend({description:e.z.optional(e.z.string()),messages:e.z.array(t.PromptMessageSchema)}),t.PromptListChangedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/prompts/list_changed\")}),t.ToolAnnotationsSchema=e.z.object({title:e.z.optional(e.z.string()),readOnlyHint:e.z.optional(e.z.boolean()),destructiveHint:e.z.optional(e.z.boolean()),idempotentHint:e.z.optional(e.z.boolean()),openWorldHint:e.z.optional(e.z.boolean())}).passthrough(),t.ToolSchema=t.BaseMetadataSchema.extend({description:e.z.optional(e.z.string()),inputSchema:e.z.object({type:e.z.literal(\"object\"),properties:e.z.optional(e.z.object({}).passthrough()),required:e.z.optional(e.z.array(e.z.string()))}).passthrough(),outputSchema:e.z.optional(e.z.object({type:e.z.literal(\"object\"),properties:e.z.optional(e.z.object({}).passthrough()),required:e.z.optional(e.z.array(e.z.string()))}).passthrough()),annotations:e.z.optional(t.ToolAnnotationsSchema),_meta:e.z.optional(e.z.object({}).passthrough())}),t.ListToolsRequestSchema=t.PaginatedRequestSchema.extend({method:e.z.literal(\"tools/list\")}),t.ListToolsResultSchema=t.PaginatedResultSchema.extend({tools:e.z.array(t.ToolSchema)}),t.CallToolResultSchema=t.ResultSchema.extend({content:e.z.array(t.ContentBlockSchema).default([]),structuredContent:e.z.object({}).passthrough().optional(),isError:e.z.optional(e.z.boolean())}),t.CompatibilityCallToolResultSchema=t.CallToolResultSchema.or(t.ResultSchema.extend({toolResult:e.z.unknown()})),t.CallToolRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"tools/call\"),params:r.extend({name:e.z.string(),arguments:e.z.optional(e.z.record(e.z.unknown()))})}),t.ToolListChangedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/tools/list_changed\")}),t.LoggingLevelSchema=e.z.enum([\"debug\",\"info\",\"notice\",\"warning\",\"error\",\"critical\",\"alert\",\"emergency\"]),t.SetLevelRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"logging/setLevel\"),params:r.extend({level:t.LoggingLevelSchema})}),t.LoggingMessageNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/message\"),params:n.extend({level:t.LoggingLevelSchema,logger:e.z.optional(e.z.string()),data:e.z.unknown()})}),t.ModelHintSchema=e.z.object({name:e.z.string().optional()}).passthrough(),t.ModelPreferencesSchema=e.z.object({hints:e.z.optional(e.z.array(t.ModelHintSchema)),costPriority:e.z.optional(e.z.number().min(0).max(1)),speedPriority:e.z.optional(e.z.number().min(0).max(1)),intelligencePriority:e.z.optional(e.z.number().min(0).max(1))}).passthrough(),t.SamplingMessageSchema=e.z.object({role:e.z.enum([\"user\",\"assistant\"]),content:e.z.union([t.TextContentSchema,t.ImageContentSchema,t.AudioContentSchema])}).passthrough(),t.CreateMessageRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"sampling/createMessage\"),params:r.extend({messages:e.z.array(t.SamplingMessageSchema),systemPrompt:e.z.optional(e.z.string()),includeContext:e.z.optional(e.z.enum([\"none\",\"thisServer\",\"allServers\"])),temperature:e.z.optional(e.z.number()),maxTokens:e.z.number().int(),stopSequences:e.z.optional(e.z.array(e.z.string())),metadata:e.z.optional(e.z.object({}).passthrough()),modelPreferences:e.z.optional(t.ModelPreferencesSchema)})}),t.CreateMessageResultSchema=t.ResultSchema.extend({model:e.z.string(),stopReason:e.z.optional(e.z.enum([\"endTurn\",\"stopSequence\",\"maxTokens\"]).or(e.z.string())),role:e.z.enum([\"user\",\"assistant\"]),content:e.z.discriminatedUnion(\"type\",[t.TextContentSchema,t.ImageContentSchema,t.AudioContentSchema])}),t.BooleanSchemaSchema=e.z.object({type:e.z.literal(\"boolean\"),title:e.z.optional(e.z.string()),description:e.z.optional(e.z.string()),default:e.z.optional(e.z.boolean())}).passthrough(),t.StringSchemaSchema=e.z.object({type:e.z.literal(\"string\"),title:e.z.optional(e.z.string()),description:e.z.optional(e.z.string()),minLength:e.z.optional(e.z.number()),maxLength:e.z.optional(e.z.number()),format:e.z.optional(e.z.enum([\"email\",\"uri\",\"date\",\"date-time\"]))}).passthrough(),t.NumberSchemaSchema=e.z.object({type:e.z.enum([\"number\",\"integer\"]),title:e.z.optional(e.z.string()),description:e.z.optional(e.z.string()),minimum:e.z.optional(e.z.number()),maximum:e.z.optional(e.z.number())}).passthrough(),t.EnumSchemaSchema=e.z.object({type:e.z.literal(\"string\"),title:e.z.optional(e.z.string()),description:e.z.optional(e.z.string()),enum:e.z.array(e.z.string()),enumNames:e.z.optional(e.z.array(e.z.string()))}).passthrough(),t.PrimitiveSchemaDefinitionSchema=e.z.union([t.BooleanSchemaSchema,t.StringSchemaSchema,t.NumberSchemaSchema,t.EnumSchemaSchema]),t.ElicitRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"elicitation/create\"),params:r.extend({message:e.z.string(),requestedSchema:e.z.object({type:e.z.literal(\"object\"),properties:e.z.record(e.z.string(),t.PrimitiveSchemaDefinitionSchema),required:e.z.optional(e.z.array(e.z.string()))}).passthrough()})}),t.ElicitResultSchema=t.ResultSchema.extend({action:e.z.enum([\"accept\",\"decline\",\"cancel\"]),content:e.z.optional(e.z.record(e.z.string(),e.z.unknown()))}),t.ResourceTemplateReferenceSchema=e.z.object({type:e.z.literal(\"ref/resource\"),uri:e.z.string()}).passthrough(),t.ResourceReferenceSchema=t.ResourceTemplateReferenceSchema,t.PromptReferenceSchema=e.z.object({type:e.z.literal(\"ref/prompt\"),name:e.z.string()}).passthrough(),t.CompleteRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"completion/complete\"),params:r.extend({ref:e.z.union([t.PromptReferenceSchema,t.ResourceTemplateReferenceSchema]),argument:e.z.object({name:e.z.string(),value:e.z.string()}).passthrough(),context:e.z.optional(e.z.object({arguments:e.z.optional(e.z.record(e.z.string(),e.z.string()))}))})}),t.CompleteResultSchema=t.ResultSchema.extend({completion:e.z.object({values:e.z.array(e.z.string()).max(100),total:e.z.optional(e.z.number().int()),hasMore:e.z.optional(e.z.boolean())}).passthrough()}),t.RootSchema=e.z.object({uri:e.z.string().startsWith(\"file://\"),name:e.z.optional(e.z.string()),_meta:e.z.optional(e.z.object({}).passthrough())}).passthrough(),t.ListRootsRequestSchema=t.RequestSchema.extend({method:e.z.literal(\"roots/list\")}),t.ListRootsResultSchema=t.ResultSchema.extend({roots:e.z.array(t.RootSchema)}),t.RootsListChangedNotificationSchema=t.NotificationSchema.extend({method:e.z.literal(\"notifications/roots/list_changed\")}),t.ClientRequestSchema=e.z.union([t.PingRequestSchema,t.InitializeRequestSchema,t.CompleteRequestSchema,t.SetLevelRequestSchema,t.GetPromptRequestSchema,t.ListPromptsRequestSchema,t.ListResourcesRequestSchema,t.ListResourceTemplatesRequestSchema,t.ReadResourceRequestSchema,t.SubscribeRequestSchema,t.UnsubscribeRequestSchema,t.CallToolRequestSchema,t.ListToolsRequestSchema]),t.ClientNotificationSchema=e.z.union([t.CancelledNotificationSchema,t.ProgressNotificationSchema,t.InitializedNotificationSchema,t.RootsListChangedNotificationSchema]),t.ClientResultSchema=e.z.union([t.EmptyResultSchema,t.CreateMessageResultSchema,t.ElicitResultSchema,t.ListRootsResultSchema]),t.ServerRequestSchema=e.z.union([t.PingRequestSchema,t.CreateMessageRequestSchema,t.ElicitRequestSchema,t.ListRootsRequestSchema]),t.ServerNotificationSchema=e.z.union([t.CancelledNotificationSchema,t.ProgressNotificationSchema,t.LoggingMessageNotificationSchema,t.ResourceUpdatedNotificationSchema,t.ResourceListChangedNotificationSchema,t.ToolListChangedNotificationSchema,t.PromptListChangedNotificationSchema]),t.ServerResultSchema=e.z.union([t.EmptyResultSchema,t.InitializeResultSchema,t.CompleteResultSchema,t.GetPromptResultSchema,t.ListPromptsResultSchema,t.ListResourcesResultSchema,t.ListResourceTemplatesResultSchema,t.ReadResourceResultSchema,t.CallToolResultSchema,t.ListToolsResultSchema]);class i extends Error{constructor(e,t,r){super(`MCP error ${e}: `+t),this.code=e,this.data=r,this.name=\"McpError\"}}t.McpError=i}}return Qg}function Xg(){if(!Wg){Wg=1;{var f=Jg;Object.defineProperty(f,\"__esModule\",{value:!0}),f.Protocol=f.DEFAULT_REQUEST_TIMEOUT_MSEC=void 0,f.mergeCapabilities=function(e,t){return Object.entries(t).reduce((e,[t,r])=>(e[t]=r&&\"object\"==typeof r&&e[t]?{...e[t],...r}:r,e),{...e})};const h=Zg();f.DEFAULT_REQUEST_TIMEOUT_MSEC=6e4;f.Protocol=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this.setNotificationHandler(h.CancelledNotificationSchema,e=>{var t=this._requestHandlerAbortControllers.get(e.params.requestId);null!=t&&t.abort(e.params.reason)}),this.setNotificationHandler(h.ProgressNotificationSchema,e=>{this._onprogress(e)}),this.setRequestHandler(h.PingRequestSchema,e=>({}))}_setupTimeout(e,t,r,n,a=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(n,t),startTime:Date.now(),timeout:t,maxTotalTimeout:r,resetTimeoutOnProgress:a,onTimeout:n})}_resetTimeout(e){var t=this._timeoutInfo.get(e);if(!t)return!1;var r=Date.now()-t.startTime;if(t.maxTotalTimeout&&r>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),new h.McpError(h.ErrorCode.RequestTimeout,\"Maximum total timeout exceeded\",{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:r});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){var t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){this._transport=e;const t=null==(e=this.transport)?void 0:e.onclose,r=(this._transport.onclose=()=>{null!==t&&void 0!==t&&t(),this._onclose()},null==(e=this.transport)?void 0:e.onerror),n=(this._transport.onerror=e=>{null!==r&&void 0!==r&&r(e),this._onerror(e)},null==(e=this._transport)?void 0:e.onmessage);this._transport.onmessage=(e,t)=>{null!==n&&void 0!==n&&n(e,t),(0,h.isJSONRPCResponse)(e)||(0,h.isJSONRPCError)(e)?this._onresponse(e):(0,h.isJSONRPCRequest)(e)?this._onrequest(e,t):(0,h.isJSONRPCNotification)(e)?this._onnotification(e):this._onerror(new Error(\"Unknown message type: \"+JSON.stringify(e)))},await this._transport.start()}_onclose(){var e,t=this._responseHandlers,r=(this._responseHandlers=new Map,this._progressHandlers.clear(),this._pendingDebouncedNotifications.clear(),this._transport=void 0,null!=(e=this.onclose)&&e.call(this),new h.McpError(h.ErrorCode.ConnectionClosed,\"Connection closed\"));for(const n of t.values())n(r)}_onerror(e){var t;null!=(t=this.onerror)&&t.call(this,e)}_onnotification(e){var t;const r=null!=(t=this._notificationHandlers.get(e.method))?t:this.fallbackNotificationHandler;void 0!==r&&Promise.resolve().then(()=>r(e)).catch(e=>this._onerror(new Error(\"Uncaught error in notification handler: \"+e)))}_onrequest(n,e){var t;const r=null!=(t=this._requestHandlers.get(n.method))?t:this.fallbackRequestHandler,a=this._transport;if(void 0===r)null!==a&&void 0!==a&&a.send({jsonrpc:\"2.0\",id:n.id,error:{code:h.ErrorCode.MethodNotFound,message:\"Method not found\"}}).catch(e=>this._onerror(new Error(\"Failed to send an error response: \"+e)));else{const i=new AbortController,o=(this._requestHandlerAbortControllers.set(n.id,i),{signal:i.signal,sessionId:null===a||void 0===a?void 0:a.sessionId,_meta:null==(t=n.params)?void 0:t._meta,sendNotification:e=>this.notification(e,{relatedRequestId:n.id}),sendRequest:(e,t,r)=>this.request(e,t,{...r,relatedRequestId:n.id}),authInfo:null==e?void 0:e.authInfo,requestId:n.id,requestInfo:null==e?void 0:e.requestInfo});Promise.resolve().then(()=>r(n,o)).then(e=>i.signal.aborted||(null===a||void 0===a)?void 0:a.send({result:e,jsonrpc:\"2.0\",id:n.id}),e=>{return i.signal.aborted||null===a||void 0===a?void 0:a.send({jsonrpc:\"2.0\",id:n.id,error:{code:Number.isSafeInteger(e.code)?e.code:h.ErrorCode.InternalError,message:null!=(e=e.message)?e:\"Internal error\"}})}).catch(e=>this._onerror(new Error(\"Failed to send response: \"+e))).finally(()=>{this._requestHandlerAbortControllers.delete(n.id)})}}_onprogress(e){const{progressToken:t,...r}=e.params;var n=Number(t),a=this._progressHandlers.get(n);if(a){var i=this._responseHandlers.get(n),o=this._timeoutInfo.get(n);if(o&&i&&o.resetTimeoutOnProgress)try{this._resetTimeout(n)}catch(e){return void i(e)}a(r)}else this._onerror(new Error(\"Received a progress notification for an unknown token: \"+JSON.stringify(e)))}_onresponse(e){var t=Number(e.id),r=this._responseHandlers.get(t);void 0===r?this._onerror(new Error(\"Received a response for an unknown message ID: \"+JSON.stringify(e))):(this._responseHandlers.delete(t),this._progressHandlers.delete(t),this._cleanupTimeout(t),(0,h.isJSONRPCResponse)(e)?r(e):r(new h.McpError(e.error.code,e.error.message,e.error.data)))}get transport(){return this._transport}async close(){var e;await(null==(e=this._transport)?void 0:e.close())}request(s,l,c){const{relatedRequestId:u,resumptionToken:d,onresumptiontoken:p}=null!=c?c:{};return new Promise((n,a)=>{var e;if(this._transport){!0===(null==(t=this._options)?void 0:t.enforceStrictCapabilities)&&this.assertCapabilityForMethod(s.method),null!=(t=null==c?void 0:c.signal)&&t.throwIfAborted();const r=this._requestMessageId++;var t={...s,jsonrpc:\"2.0\",id:r};null!=c&&c.onprogress&&(this._progressHandlers.set(r,c.onprogress),t.params={...s.params,_meta:{...(null==(e=s.params)?void 0:e._meta)||{},progressToken:r}});const i=e=>{var t;this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),null!=(t=this._transport)&&t.send({jsonrpc:\"2.0\",method:\"notifications/cancelled\",params:{requestId:r,reason:String(e)}},{relatedRequestId:u,resumptionToken:d,onresumptiontoken:p}).catch(e=>this._onerror(new Error(\"Failed to send cancellation: \"+e))),a(e)},o=(this._responseHandlers.set(r,e=>{var t;if(null==(t=null==c?void 0:c.signal)||!t.aborted){if(e instanceof Error)return a(e);try{var r=l.parse(e.result);n(r)}catch(e){a(e)}}}),null!=(e=null==c?void 0:c.signal)&&e.addEventListener(\"abort\",()=>{var e;i(null==(e=null==c?void 0:c.signal)?void 0:e.reason)}),null!=(e=null==c?void 0:c.timeout)?e:f.DEFAULT_REQUEST_TIMEOUT_MSEC);this._setupTimeout(r,o,null==c?void 0:c.maxTotalTimeout,()=>i(new h.McpError(h.ErrorCode.RequestTimeout,\"Request timed out\",{timeout:o})),null!=(e=null==c?void 0:c.resetTimeoutOnProgress)&&e),this._transport.send(t,{relatedRequestId:u,resumptionToken:d,onresumptiontoken:p}).catch(e=>{this._cleanupTimeout(r),a(e)})}else a(new Error(\"Not connected\"))})}async notification(r,n){if(!this._transport)throw new Error(\"Not connected\");if(this.assertNotificationCapability(r.method),(null!=(e=null==(e=this._options)?void 0:e.debouncedNotificationMethods)?e:[]).includes(r.method)&&!r.params&&!(null!=n&&n.relatedRequestId))return this._pendingDebouncedNotifications.has(r.method)?void 0:(this._pendingDebouncedNotifications.add(r.method),void Promise.resolve().then(()=>{var e,t;this._pendingDebouncedNotifications.delete(r.method),this._transport&&(t={...r,jsonrpc:\"2.0\"},null!=(e=this._transport))&&e.send(t,n).catch(e=>this._onerror(e))}));var e={...r,jsonrpc:\"2.0\"};await this._transport.send(e,n)}setRequestHandler(r,n){var e=r.shape.method.value;this.assertRequestHandlerCapability(e),this._requestHandlers.set(e,(e,t)=>Promise.resolve(n(r.parse(e),t)))}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(t,r){this._notificationHandlers.set(t.shape.method.value,e=>Promise.resolve(r(t.parse(e))))}removeNotificationHandler(e){this._notificationHandlers.delete(e)}}}}return Jg}var e_,t_,r_,n_,a_,i_,o_,s_,l_,c_={exports:{}};function u_(){var e,s,l,d,A,N,M,P,D,x,L,F,O,C,w,k,a,U,B,I,j,H,R,V,g,c,q,z,n,i,o,W,t,$,r,K,Y,J,f,Q,Z,X,u,ee,p,te,re;return e_||(e_=1,e=c_.exports,s=ae(!1),l=ae(!0),d=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){var r=t,n=[],a=!0,t=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!r||n.length!==r);a=!0);}catch(e){t=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(t)throw i}}return n}throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},A=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)},N=2147483647,D=26,x=72,L=128,F=\"-\",O=/^xn--/,C=/[^\\0-\\x7E]/,w=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,k={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},a=(M=36)-(P=1),U=Math.floor,B=String.fromCharCode,I=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:M},j=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},H=function(e,t,r){var n=0;for(e=r?U(e/700):e>>1,e+=U(e/t);a*D>>1<e;n+=M)e=U(e/a);return U(n+(1+a)*e/(e+38))},g={version:\"2.1.0\",ucs2:{decode:oe,encode:function(e){return String.fromCodePoint.apply(String,A(e))}},decode:R=function(e){var t=[],r=e.length,n=0,a=L,i=x,o=e.lastIndexOf(F);o<0&&(o=0);for(var s=0;s<o;++s)128<=e.charCodeAt(s)&&G(\"not-basic\"),t.push(e.charCodeAt(s));for(var l=0<o?o+1:0;l<r;){for(var c=n,u=1,d=M;;d+=M){r<=l&&G(\"invalid-input\");var p=I(e.charCodeAt(l++)),f=((M<=p||p>U((N-n)/u))&&G(\"overflow\"),n+=p*u,d<=i?P:i+D<=d?D:d-i);if(p<f)break;p=M-f;u>U(N/p)&&G(\"overflow\"),u*=p}var h=t.length+1,i=H(n-c,h,0==c);U(n/h)>N-a&&G(\"overflow\"),a+=U(n/h),n%=h,t.splice(n++,0,a)}return String.fromCodePoint.apply(String,t)},encode:V=function(e){var t=[],r=(e=oe(e)).length,n=L,a=0,i=x,o=!0,s=!1,l=void 0;try{for(var c,u=e[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){var d=c.value;d<128&&t.push(B(d))}}catch(e){s=!0,l=e}finally{try{!o&&u.return&&u.return()}finally{if(s)throw l}}var p=t.length,f=p;for(p&&t.push(F);f<r;){var h=N,m=!0,g=!1,_=void 0;try{for(var y,T=e[Symbol.iterator]();!(m=(y=T.next()).done);m=!0){var v=y.value;n<=v&&v<h&&(h=v)}}catch(e){g=!0,_=e}finally{try{!m&&T.return&&T.return()}finally{if(g)throw _}}var b=f+1,E=(h-n>U((N-a)/b)&&G(\"overflow\"),a+=(h-n)*b,n=h,!0),g=!1,_=void 0;try{for(var S,A=e[Symbol.iterator]();!(E=(S=A.next()).done);E=!0){var O=S.value;if(O<n&&++a>N&&G(\"overflow\"),O==n){for(var C=a,w=M;;w+=M){var k=w<=i?P:i+D<=w?D:w-i;if(C<k)break;var I=C-k,R=M-k;t.push(B(j(k+I%R,0))),C=U(I/R)}t.push(B(j(C,0))),i=H(a,b,f==p),a=0,++f}}}catch(e){g=!0,_=e}finally{try{!E&&A.return&&A.return()}finally{if(g)throw _}}++a,++n}return t.join(\"\")},toASCII:function(e){return ie(e,function(e){return C.test(e)?\"xn--\"+V(e):e})},toUnicode:function(e){return ie(e,function(e){return O.test(e)?R(e.slice(4).toLowerCase()):e})}},c={},q=/^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i,z=void 0===\"\".match(/(){0}/)[1],n=/^\\.\\.?\\//,i=/^\\/\\.(\\/|$)/,o=/^\\/\\.\\.(\\/|$)/,W=/^\\/?(?:.|\\n)*?(?=\\/|$)/,$={scheme:\"https\",domainHost:(t={scheme:\"http\",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||\"HTTP URIs must have a host.\"),e},serialize:function(e,t){var r=\"https\"===String(e.scheme).toLowerCase();return e.port!==(r?443:80)&&\"\"!==e.port||(e.port=void 0),e.path||(e.path=\"/\"),e}}).domainHost,parse:t.parse,serialize:t.serialize},K={scheme:\"wss\",domainHost:(r={scheme:\"ws\",domainHost:!0,parse:function(e,t){return e.secure=pe(e),e.resourceName=(e.path||\"/\")+(e.query?\"?\"+e.query:\"\"),e.path=void 0,e.query=void 0,e},serialize:function(e,t){var r,n;return e.port!==(pe(e)?443:80)&&\"\"!==e.port||(e.port=void 0),\"boolean\"==typeof e.secure&&(e.scheme=e.secure?\"wss\":\"ws\",e.secure=void 0),e.resourceName&&(n=e.resourceName.split(\"?\"),r=(n=d(n,2))[0],n=n[1],e.path=r&&\"/\"!==r?r:void 0,e.query=n,e.resourceName=void 0),e.fragment=void 0,e}}).domainHost,parse:r.parse,serialize:r.serialize},Y={},p=\"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\",T(T(\"%[EFef]\"+(u=\"[0-9A-Fa-f]\")+\"%\"+u+u+\"%\"+u+u)+\"|\"+T(\"%[89A-Fa-f]\"+u+\"%\"+u+u)+\"|\"+T(\"%\"+u+u)),u=y(\"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\",'[\\\\\"\\\\\\\\]'),J=new RegExp(p,\"g\"),f=new RegExp(\"(?:(?:%[EFef][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[89A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f])|(?:%[0-9A-Fa-f][0-9A-Fa-f]))\",\"g\"),Q=new RegExp(y(\"[^]\",\"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\",\"[\\\\.]\",'[\\\\\"]',u),\"g\"),Z=new RegExp(y(\"[^]\",p,\"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\"),\"g\"),X=Z,u={scheme:\"mailto\",parse:function(e,t){var r=e,n=r.to=r.path?r.path.split(\",\"):[];if(r.path=void 0,r.query){for(var a=!1,i={},o=r.query.split(\"&\"),s=0,l=o.length;s<l;++s){var c=o[s].split(\"=\");switch(c[0]){case\"to\":for(var u=c[1].split(\",\"),d=0,p=u.length;d<p;++d)n.push(u[d]);break;case\"subject\":r.subject=S(c[1],t);break;case\"body\":r.body=S(c[1],t);break;default:a=!0,i[S(c[0],t)]=S(c[1],t)}}a&&(r.headers=i)}r.query=void 0;for(var f=0,h=n.length;f<h;++f){var m=n[f].split(\"@\");if(m[0]=S(m[0]),t.unicodeSupport)m[1]=S(m[1],t).toLowerCase();else try{m[1]=g.toASCII(S(m[1],t).toLowerCase())}catch(e){r.error=r.error||\"Email address's domain name can not be converted to ASCII via punycode: \"+e}n[f]=m.join(\"@\")}return r},serialize:function(e,t){var r,n=e,a=null!=(r=e.to)?r instanceof Array?r:\"number\"!=typeof r.length||r.split||r.setInterval||r.call?[r]:Array.prototype.slice.call(r):[];if(a){for(var i=0,o=a.length;i<o;++i){var s=String(a[i]),l=s.lastIndexOf(\"@\"),c=s.slice(0,l).replace(f,fe).replace(f,h).replace(Q,m),s=s.slice(l+1);try{s=t.iri?g.toUnicode(s):g.toASCII(S(s,t).toLowerCase())}catch(e){n.error=n.error||\"Email address's domain name can not be converted to \"+(t.iri?\"Unicode\":\"ASCII\")+\" via punycode: \"+e}a[i]=c+\"@\"+s}n.path=a.join(\",\")}var u,d=e.headers=e.headers||{},p=(e.subject&&(d.subject=e.subject),e.body&&(d.body=e.body),[]);for(u in d)d[u]!==Y[u]&&p.push(u.replace(f,fe).replace(f,h).replace(Z,m)+\"=\"+d[u].replace(f,fe).replace(f,h).replace(X,m));return p.length&&(n.query=p.join(\"&\")),n}},ee=/^([^\\:]+)\\:(.*)/,p={scheme:\"urn\",parse:function(e,t){var r,n,a=e.path&&e.path.match(ee);return a?(n=t.scheme||e.scheme||\"urn\",r=a[1].toLowerCase(),a=a[2],n=n+\":\"+(t.nid||r),n=c[n],e.nid=r,e.nss=a,e.path=void 0,n&&(e=n.parse(e,t))):e.error=e.error||\"URN can not be parsed.\",e},serialize:function(e,t){var r=t.scheme||e.scheme||\"urn\",n=e.nid,r=r+\":\"+(t.nid||n),r=c[r],r=e=r?r.serialize(e,t):e,e=e.nss;return r.path=(n||t.nid)+\":\"+e,r}},te=/^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/,re={scheme:\"urn:uuid\",parse:function(e,t){return e.uuid=e.nss,e.nss=void 0,t.tolerant||e.uuid&&e.uuid.match(te)||(e.error=e.error||\"UUID is not valid.\"),e},serialize:function(e,t){var r=e;return r.nss=(e.uuid||\"\").toLowerCase(),r}},c[t.scheme]=t,c[$.scheme]=$,c[r.scheme]=r,c[K.scheme]=K,c[u.scheme]=u,c[p.scheme]=p,c[re.scheme]=re,e.SCHEMES=c,e.pctEncChar=m,e.pctDecChars=_,e.parse=v,e.removeDotSegments=b,e.serialize=E,e.resolveComponents=de,e.resolve=function(e,t,r){r=function(e,t){var r=e;if(t)for(var n in t)r[n]=t[n];return r}({scheme:\"null\"},r);return E(de(v(e,r),v(t,r),r,!0),r)},e.normalize=function(e,t){\"string\"==typeof e?e=E(v(e,t),t):\"object\"===ne(e)&&(e=v(E(e,t),t));return e},e.equal=function(e,t,r){\"string\"==typeof e?e=E(v(e,r),r):\"object\"===ne(e)&&(e=E(e,r));\"string\"==typeof t?t=E(v(t,r),r):\"object\"===ne(t)&&(t=E(t,r));return e===t},e.escapeComponent=function(e,t){return e&&e.toString().replace((t&&t.iri?l:s).ESCAPE,m)},e.unescapeComponent=S,Object.defineProperty(e,\"__esModule\",{value:!0})),c_.exports;function y(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];if(1<t.length){t[0]=t[0].slice(0,-1);for(var n=t.length-1,a=1;a<n;++a)t[a]=t[a].slice(1,-1);return t[n]=t[n].slice(1),t.join(\"\")}return t[0]}function T(e){return\"(?:\"+e+\")\"}function ne(e){return void 0===e?\"undefined\":null===e?\"null\":Object.prototype.toString.call(e).split(\" \").pop().split(\"]\").shift().toLowerCase()}function h(e){return e.toUpperCase()}function ae(e){var t=\"[A-Za-z]\",r=\"[0-9]\",n=y(r,\"[A-Fa-f]\"),a=T(T(\"%[EFef]\"+n+\"%\"+n+n+\"%\"+n+n)+\"|\"+T(\"%[89A-Fa-f]\"+n+\"%\"+n+n)+\"|\"+T(\"%\"+n+n)),i=\"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",o=y(\"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",i),s=e?\"[\\\\uE000-\\\\uF8FF]\":\"[]\",e=y(t,r,\"[\\\\-\\\\.\\\\_\\\\~]\",e?\"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\":\"[]\"),l=(y(t,r,\"[\\\\+\\\\-\\\\.]\"),T(a+\"|\"+y(e,i,\"[\\\\:]\")),\"(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9][0-9])|(?:0?[1-9][0-9])|0?0?[0-9])\"),l=T(l+\"\\\\.\"+l+\"\\\\.\"+l+\"\\\\.\"+l),c=T(n+\"{1,4}\"),u=T(T(c+\"\\\\:\"+c)+\"|\"+l),d=T(T(c+\"\\\\:\")+\"{6}\"+u),p=T(\"\\\\:\\\\:\"+T(c+\"\\\\:\")+\"{5}\"+u),f=T(T(c)+\"?\\\\:\\\\:\"+T(c+\"\\\\:\")+\"{4}\"+u),h=T(T(T(c+\"\\\\:\")+\"{0,1}\"+c)+\"?\\\\:\\\\:\"+T(c+\"\\\\:\")+\"{3}\"+u),m=T(T(T(c+\"\\\\:\")+\"{0,2}\"+c)+\"?\\\\:\\\\:\"+T(c+\"\\\\:\")+\"{2}\"+u),g=T(T(T(c+\"\\\\:\")+\"{0,3}\"+c)+\"?\\\\:\\\\:\"+c+\"\\\\:\"+u),u=T(T(T(c+\"\\\\:\")+\"{0,4}\"+c)+\"?\\\\:\\\\:\"+u),_=T(T(T(c+\"\\\\:\")+\"{0,5}\"+c)+\"?\\\\:\\\\:\"+c),c=T(T(T(c+\"\\\\:\")+\"{0,6}\"+c)+\"?\\\\:\\\\:\"),d=T([d,p,f,h,m,g,u,_,c].join(\"|\")),p=T(T(e+\"|\"+a)+\"+\"),f=(y(e,i,\"[\\\\:]\"),T(a+\"|\"+y(e,i)),T(a+\"|\"+y(e,i,\"[\\\\:\\\\@]\")));return T(a+\"|\"+y(e,i,\"[\\\\@]\")),T(f+\"|\"+y(\"[\\\\/\\\\?]\",s)),{NOT_SCHEME:new RegExp(y(\"[^]\",t,r,\"[\\\\+\\\\-\\\\.]\"),\"g\"),NOT_USERINFO:new RegExp(y(\"[^\\\\%\\\\:]\",e,i),\"g\"),NOT_HOST:new RegExp(y(\"[^\\\\%\\\\[\\\\]\\\\:]\",e,i),\"g\"),NOT_PATH:new RegExp(y(\"[^\\\\%\\\\/\\\\:\\\\@]\",e,i),\"g\"),NOT_PATH_NOSCHEME:new RegExp(y(\"[^\\\\%\\\\/\\\\@]\",e,i),\"g\"),NOT_QUERY:new RegExp(y(\"[^\\\\%]\",e,i,\"[\\\\:\\\\@\\\\/\\\\?]\",s),\"g\"),NOT_FRAGMENT:new RegExp(y(\"[^\\\\%]\",e,i,\"[\\\\:\\\\@\\\\/\\\\?]\"),\"g\"),ESCAPE:new RegExp(y(\"[^]\",e,i),\"g\"),UNRESERVED:new RegExp(e,\"g\"),OTHER_CHARS:new RegExp(y(\"[^\\\\%]\",e,o),\"g\"),PCT_ENCODED:new RegExp(a,\"g\"),IPV4ADDRESS:new RegExp(\"^(\"+l+\")$\"),IPV6ADDRESS:new RegExp(\"^\\\\[?(\"+d+\")\"+T(T(\"\\\\%25|\\\\%(?!\"+n+\"{2})\")+\"(\"+p+\")\")+\"?\\\\]?$\")}}function G(e){throw new RangeError(k[e])}function ie(e,t){var r=e.split(\"@\"),n=\"\",r=(1<r.length&&(n=r[0]+\"@\",e=r[1]),(e=e.replace(w,\".\")).split(\".\"));return n+function(e,t){for(var r=[],n=e.length;n--;)r[n]=t(e[n]);return r}(r,t).join(\".\")}function oe(e){for(var t=[],r=0,n=e.length;r<n;){var a,i=e.charCodeAt(r++);55296<=i&&i<=56319&&r<n?56320==(64512&(a=e.charCodeAt(r++)))?t.push(((1023&i)<<10)+(1023&a)+65536):(t.push(i),r--):t.push(i)}return t}function m(e){e=e.charCodeAt(0);return e<16?\"%0\"+e.toString(16).toUpperCase():e<128?\"%\"+e.toString(16).toUpperCase():e<2048?\"%\"+(e>>6|192).toString(16).toUpperCase()+\"%\"+(63&e|128).toString(16).toUpperCase():\"%\"+(e>>12|224).toString(16).toUpperCase()+\"%\"+(e>>6&63|128).toString(16).toUpperCase()+\"%\"+(63&e|128).toString(16).toUpperCase()}function _(e){for(var t=\"\",r=0,n=e.length;r<n;){var a,i,o=parseInt(e.substr(r+1,2),16);o<128?(t+=String.fromCharCode(o),r+=3):194<=o&&o<224?(6<=n-r?(a=parseInt(e.substr(r+4,2),16),t+=String.fromCharCode((31&o)<<6|63&a)):t+=e.substr(r,6),r+=6):224<=o?(9<=n-r?(a=parseInt(e.substr(r+4,2),16),i=parseInt(e.substr(r+7,2),16),t+=String.fromCharCode((15&o)<<12|(63&a)<<6|63&i)):t+=e.substr(r,9),r+=9):(t+=e.substr(r,3),r+=3)}return t}function se(e,r){function t(e){var t=_(e);return t.match(r.UNRESERVED)?t:e}e.scheme&&(e.scheme=String(e.scheme).replace(r.PCT_ENCODED,t).toLowerCase().replace(r.NOT_SCHEME,\"\")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(r.PCT_ENCODED,t).replace(r.NOT_USERINFO,m).replace(r.PCT_ENCODED,h)),void 0!==e.host&&(e.host=String(e.host).replace(r.PCT_ENCODED,t).toLowerCase().replace(r.NOT_HOST,m).replace(r.PCT_ENCODED,h)),void 0!==e.path&&(e.path=String(e.path).replace(r.PCT_ENCODED,t).replace(e.scheme?r.NOT_PATH:r.NOT_PATH_NOSCHEME,m).replace(r.PCT_ENCODED,h)),void 0!==e.query&&(e.query=String(e.query).replace(r.PCT_ENCODED,t).replace(r.NOT_QUERY,m).replace(r.PCT_ENCODED,h)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(r.PCT_ENCODED,t).replace(r.NOT_FRAGMENT,m).replace(r.PCT_ENCODED,h))}function le(e){return e.replace(/^0*(.*)/,\"$1\")||\"0\"}function ce(e,t){t=e.match(t.IPV4ADDRESS)||[],t=d(t,2)[1];return t?t.split(\".\").map(le).join(\".\"):e}function ue(e,t){var r=e.match(t.IPV6ADDRESS)||[],r=d(r,3),n=r[1],r=r[2];if(n){for(var n=n.toLowerCase().split(\"::\").reverse(),n=d(n,2),a=n[0],n=n[1],i=n?n.split(\":\").map(le):[],o=a.split(\":\").map(le),n=t.IPV4ADDRESS.test(o[o.length-1]),s=n?7:8,l=o.length-s,c=Array(s),u=0;u<s;++u)c[u]=i[u]||o[l+u]||\"\";n&&(c[s-1]=ce(c[s-1],t));var a=c.reduce(function(e,t,r){return t&&\"0\"!==t||((t=e[e.length-1])&&t.index+t.length===r?t.length++:e.push({index:r,length:1})),e},[]).sort(function(e,t){return t.length-e.length})[0],n=void 0;return n=a&&1<a.length?(t=c.slice(0,a.index),a=c.slice(a.index+a.length),t.join(\":\")+\"::\"+a.join(\":\")):c.join(\":\"),r&&(n+=\"%\"+r),n}return e}function v(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r={},n=!1!==t.iri?l:s,a=(e=\"suffix\"===t.reference?(t.scheme?t.scheme+\":\":\"\")+\"//\"+e:e).match(q);if(a){z?(r.scheme=a[1],r.userinfo=a[3],r.host=a[4],r.port=parseInt(a[5],10),r.path=a[6]||\"\",r.query=a[7],r.fragment=a[8],isNaN(r.port)&&(r.port=a[5])):(r.scheme=a[1]||void 0,r.userinfo=-1!==e.indexOf(\"@\")?a[3]:void 0,r.host=-1!==e.indexOf(\"//\")?a[4]:void 0,r.port=parseInt(a[5],10),r.path=a[6]||\"\",r.query=-1!==e.indexOf(\"?\")?a[7]:void 0,r.fragment=-1!==e.indexOf(\"#\")?a[8]:void 0,isNaN(r.port)&&(r.port=e.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/)?a[4]:void 0)),r.host&&(r.host=ue(ce(r.host,n),n)),r.reference=void 0!==r.scheme||void 0!==r.userinfo||void 0!==r.host||void 0!==r.port||r.path||void 0!==r.query?void 0===r.scheme?\"relative\":void 0===r.fragment?\"absolute\":\"uri\":\"same-document\",t.reference&&\"suffix\"!==t.reference&&t.reference!==r.reference&&(r.error=r.error||\"URI is not a \"+t.reference+\" reference.\");e=c[(t.scheme||r.scheme||\"\").toLowerCase()];if(t.unicodeSupport||e&&e.unicodeSupport)se(r,n);else{if(r.host&&(t.domainHost||e&&e.domainHost))try{r.host=g.toASCII(r.host.replace(n.PCT_ENCODED,_).toLowerCase())}catch(e){r.error=r.error||\"Host's domain name can not be converted to ASCII via punycode: \"+e}se(r,s)}e&&e.parse&&e.parse(r,t)}else r.error=r.error||\"URI can not be parsed.\";return r}function b(e){for(var t=[];e.length;)if(e.match(n))e=e.replace(n,\"\");else if(e.match(i))e=e.replace(i,\"/\");else if(e.match(o))e=e.replace(o,\"/\"),t.pop();else if(\".\"===e||\"..\"===e)e=\"\";else{var r=e.match(W);if(!r)throw new Error(\"Unexpected dot segment condition\");r=r[0];e=e.slice(r.length),t.push(r)}return t.join(\"\")}function E(t){var r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=r.iri?l:s,n=[],a=c[(r.scheme||t.scheme||\"\").toLowerCase()];if(a&&a.serialize&&a.serialize(t,r),t.host&&!e.IPV6ADDRESS.test(t.host)&&(r.domainHost||a&&a.domainHost))try{t.host=r.iri?g.toUnicode(t.host):g.toASCII(t.host.replace(e.PCT_ENCODED,_).toLowerCase())}catch(e){t.error=t.error||\"Host's domain name can not be converted to \"+(r.iri?\"Unicode\":\"ASCII\")+\" via punycode: \"+e}se(t,e),\"suffix\"!==r.reference&&t.scheme&&(n.push(t.scheme),n.push(\":\"));e=t,o=!1!==(o=r).iri?l:s,i=[],void 0!==e.userinfo&&(i.push(e.userinfo),i.push(\"@\")),void 0!==e.host&&i.push(ue(ce(String(e.host),o),o).replace(o.IPV6ADDRESS,function(e,t,r){return\"[\"+t+(r?\"%25\"+r:\"\")+\"]\"})),\"number\"!=typeof e.port&&\"string\"!=typeof e.port||(i.push(\":\"),i.push(String(e.port)));var i,o=i.length?i.join(\"\"):void 0;return void 0!==o&&(\"suffix\"!==r.reference&&n.push(\"//\"),n.push(o),t.path)&&\"/\"!==t.path.charAt(0)&&n.push(\"/\"),void 0!==t.path&&(e=t.path,r.absolutePath||a&&a.absolutePath||(e=b(e)),void 0===o&&(e=e.replace(/^\\/\\//,\"/%2F\")),n.push(e)),void 0!==t.query&&(n.push(\"?\"),n.push(t.query)),void 0!==t.fragment&&(n.push(\"#\"),n.push(t.fragment)),n.join(\"\")}function de(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},n={};return arguments[3]||(e=v(E(e,r),r),t=v(E(t,r),r)),!(r||{}).tolerant&&t.scheme?(n.scheme=t.scheme,n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=b(t.path||\"\"),n.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(n.userinfo=t.userinfo,n.host=t.host,n.port=t.port,n.path=b(t.path||\"\"),n.query=t.query):(t.path?(\"/\"===t.path.charAt(0)?n.path=b(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?n.path=e.path.slice(0,e.path.lastIndexOf(\"/\")+1)+t.path:n.path=t.path:n.path=\"/\"+t.path,n.path=b(n.path)),n.query=t.query):(n.path=e.path,void 0!==t.query?n.query=t.query:n.query=e.query),n.userinfo=e.userinfo,n.host=e.host,n.port=e.port),n.scheme=e.scheme),n.fragment=t.fragment,n}function S(e,t){return e&&e.toString().replace((t&&t.iri?l:s).PCT_ENCODED,_)}function pe(e){return\"boolean\"==typeof e.secure?e.secure:\"wss\"===String(e.scheme).toLowerCase()}function fe(e){var t=_(e);return t.match(J)?t:e}}function d_(){return r_||(r_=1,t_=function e(t,r){if(t===r)return!0;if(t&&r&&\"object\"==typeof t&&\"object\"==typeof r){if(t.constructor!==r.constructor)return!1;var n,a,i;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(a=n;0!=a--;)if(!e(t[a],r[a]))return!1}else{if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(i=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(a=n;0!=a--;)if(!Object.prototype.hasOwnProperty.call(r,i[a]))return!1;for(a=n;0!=a--;){var o=i[a];if(!e(t[o],r[o]))return!1}}return!0}return t!=t&&r!=r}),t_}function p_(){var i,t,r,u,d;return o_||(o_=1,i_={copy:function(e,t){for(var r in t=t||{},e)t[r]=e[r];return t},checkDataType:o,checkDataTypes:function(e,t,r){{if(1===e.length)return o(e[0],t,r,!0);var n,a=\"\",e=s(e);for(n in e.array&&e.object&&(a=e.null?\"(\":\"(!\"+t+\" || \",a+=\"typeof \"+t+' !== \"object\")',delete e.null,delete e.array,delete e.object),e.number&&delete e.integer,e)a+=(a?\" && \":\"\")+o(n,t,r,!0);return a}},coerceToTypes:function(e,t){{if(!Array.isArray(t))return i[t]?[t]:\"array\"===e&&\"array\"===t?[\"array\"]:void 0;for(var r=[],n=0;n<t.length;n++){var a=t[n];(i[a]||\"array\"===e&&\"array\"===a)&&(r[r.length]=a)}return r.length?r:void 0}},toHash:s,getProperty:p,escapeQuotes:n,equal:d_(),ucs2length:(a_||(a_=1,n_=function(e){for(var t,r=0,n=e.length,a=0;a<n;)r++,55296<=(t=e.charCodeAt(a++))&&t<=56319&&a<n&&56320==(64512&e.charCodeAt(a))&&a++;return r}),n_),varOccurences:function(e,t){t+=\"[^0-9]\";e=e.match(new RegExp(t,\"g\"));return e?e.length:0},varReplace:function(e,t,r){return t+=\"([^0-9])\",r=r.replace(/\\$/g,\"$$$$\"),e.replace(new RegExp(t,\"g\"),r+\"$1\")},schemaHasRules:function(e,t){if(\"boolean\"==typeof e)return!e;for(var r in e)if(t[r])return!0},schemaHasRulesExcept:function(e,t,r){if(\"boolean\"==typeof e)return!e&&\"not\"!=r;for(var n in e)if(n!=r&&t[n])return!0},schemaUnknownRules:function(e,t){if(\"boolean\"!=typeof e)for(var r in e)if(!t[r])return r},toQuotedString:a,getPathExpr:function(e,t,r,n){return l(e,r?\"'/' + \"+t+(n?\"\":\".replace(/~/g, '~0').replace(/\\\\//g, '~1')\"):n?\"'[' + \"+t+\" + ']'\":\"'[\\\\'' + \"+t+\" + '\\\\']'\")},getPath:function(e,t,r){r=a(r?\"/\"+c(t):p(t));return l(e,r)},getData:function(e,t,r){var n,a,i;if(\"\"===e)return\"rootData\";if(\"/\"==e[0]){if(!u.test(e))throw new Error(\"Invalid JSON-pointer: \"+e);n=e,a=\"rootData\"}else{if(!(i=e.match(d)))throw new Error(\"Invalid JSON-pointer: \"+e);if(e=+i[1],\"#\"==(n=i[2])){if(t<=e)throw new Error(\"Cannot access property/index \"+e+\" levels up, current level is \"+t);return r[t-e]}if(t<e)throw new Error(\"Cannot access data \"+e+\" levels up, current level is \"+t);if(a=\"data\"+(t-e||\"\"),!n)return a}for(var o=a,s=n.split(\"/\"),l=0;l<s.length;l++){var c=s[l];c&&(a+=p(f(c)),o+=\" && \"+a)}return o},unescapeFragment:function(e){return f(decodeURIComponent(e))},unescapeJsonPointer:f,escapeFragment:function(e){return encodeURIComponent(c(e))},escapeJsonPointer:c},i=s([\"string\",\"number\",\"integer\",\"boolean\",\"null\"]),t=/^[a-z$_][a-z$_0-9]*$/i,r=/'|\\\\/g,u=/^\\/(?:[^~]|~0|~1)*$/,d=/^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/),i_;function o(e,t,r,n){var a=n?\" !== \":\" === \",i=n?\" || \":\" && \",o=n?\"!\":\"\",s=n?\"\":\"!\";switch(e){case\"null\":return t+a+\"null\";case\"array\":return o+\"Array.isArray(\"+t+\")\";case\"object\":return\"(\"+o+t+i+\"typeof \"+t+a+'\"object\"'+i+s+\"Array.isArray(\"+t+\"))\";case\"integer\":return\"(typeof \"+t+a+'\"number\"'+i+s+\"(\"+t+\" % 1)\"+i+t+a+t+(r?i+o+\"isFinite(\"+t+\")\":\"\")+\")\";case\"number\":return\"(typeof \"+t+a+'\"'+e+'\"'+(r?i+o+\"isFinite(\"+t+\")\":\"\")+\")\";default:return\"typeof \"+t+a+'\"'+e+'\"'}}function s(e){for(var t={},r=0;r<e.length;r++)t[e[r]]=!0;return t}function p(e){return\"number\"==typeof e?\"[\"+e+\"]\":t.test(e)?\".\"+e:\"['\"+n(e)+\"']\"}function n(e){return e.replace(r,\"\\\\$&\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/\\f/g,\"\\\\f\").replace(/\\t/g,\"\\\\t\")}function a(e){return\"'\"+n(e)+\"'\"}function l(e,t){return'\"\"'==e?t:(e+\" + \"+t).replace(/([^\\\\])' \\+ '/g,\"$1\")}function c(e){return e.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}function f(e){return e.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}}function f_(){var t;return l_||(l_=1,t=p_(),s_=function(e){t.copy(e,this)}),s_}var h_,m_,g_,__,y_,T_,v_,b_,E_,S_,A_,O_={exports:{}};function C_(){var m;return h_||(h_=1,(m=O_.exports=function(e,t,r){\"function\"==typeof t&&(r=t,t={}),function e(t,r,n,a,i,o,s,l,c,u){if(a&&\"object\"==typeof a&&!Array.isArray(a)){for(var d in r(a,i,o,s,l,c,u),a){var p=a[d];if(Array.isArray(p)){if(d in m.arrayKeywords)for(var f=0;f<p.length;f++)e(t,r,n,p[f],i+\"/\"+d+\"/\"+f,o,i,d,a,f)}else if(d in m.propsKeywords){if(p&&\"object\"==typeof p)for(var h in p)e(t,r,n,p[h],i+\"/\"+d+\"/\"+g(h),o,i,d,a,h)}else(d in m.keywords||t.allKeys&&!(d in m.skipKeywords))&&e(t,r,n,p,i+\"/\"+d,o,i,d,a)}n(a,i,o,s,l,c,u)}}(t,\"function\"==typeof(r=t.cb||r)?r:r.pre||function(){},r.post||function(){},e,\"\",e)}).keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0},m.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},m.propsKeywords={definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},m.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0}),O_.exports;function g(e){return e.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}}function w_(){var f,h,m,s,r,l,o,t;return g_||(g_=1,f=u_(),h=d_(),m=p_(),s=f_(),r=C_(),(m_=c).normalizeId=y,c.fullPath=g,c.url=T,c.ids=function(e){var t=y(this._getId(e)),c={\"\":t},u={\"\":g(t,!1)},d={},p=this;return r(e,{allKeys:!0},function(e,t,r,n,a,i,o){if(\"\"!==t){var s=p._getId(e),l=c[n],n=u[n]+\"/\"+a;if(void 0!==o&&(n+=\"/\"+(\"number\"==typeof o?o:m.escapeFragment(o))),\"string\"==typeof s){s=l=y(l?f.resolve(l,s):s),a=p._refs[s];if((a=\"string\"==typeof a?p._refs[a]:a)&&a.schema){if(!h(e,a.schema))throw new Error('id \"'+s+'\" resolves to more than one schema')}else if(s!=y(n))if(\"#\"==s[0]){if(d[s]&&!h(e,d[s]))throw new Error('id \"'+s+'\" resolves to more than one schema');d[s]=e}else p._refs[s]=n}c[t]=l,u[t]=n}}),d},c.inlineRef=p,c.schema=u,l=m.toHash([\"properties\",\"patternProperties\",\"enum\",\"dependencies\",\"definitions\"]),o=m.toHash([\"type\",\"format\",\"pattern\",\"maxLength\",\"minLength\",\"maxProperties\",\"minProperties\",\"maxItems\",\"minItems\",\"maximum\",\"minimum\",\"uniqueItems\",\"multipleOf\",\"required\",\"enum\"]),t=/#\\/?$/),m_;function c(e,t,r){var n,a,i,o=this._refs[r];if(\"string\"==typeof o){if(!this._refs[o])return c.call(this,e,t,o);o=this._refs[o]}return(o=o||this._schemas[r])instanceof s?p(o.schema,this._opts.inlineRefs)?o.schema:o.validate||this._compile(o):((o=u.call(this,t,r))&&(n=o.schema,t=o.root,i=o.baseId),n instanceof s?a=n.validate||e.call(this,n.schema,t,void 0,i):void 0!==n&&(a=p(n,this._opts.inlineRefs)?n:e.call(this,n,t,void 0,i)),a)}function u(e,t){var r=f.parse(t),n=_(r),a=g(this._getId(e.schema));if(0===Object.keys(e.schema).length||n!==a){var n=y(n),i=this._refs[n];if(\"string\"==typeof i)return function(e,t,r){t=u.call(this,e,t);{var n,a;if(t)return n=t.schema,a=t.baseId,e=t.root,(t=this._getId(n))&&(a=T(a,t)),d.call(this,r,a,n,e)}}.call(this,e,i,r);if(i instanceof s)i.validate||this._compile(i);else{if(!((i=this._schemas[n])instanceof s))return;if(i.validate||this._compile(i),n==y(t))return{schema:i,root:e,baseId:a}}if(!(e=i).schema)return;a=g(this._getId(e.schema))}return d.call(this,r,a,e.schema,e)}function d(e,t,r,n){if(e.fragment=e.fragment||\"\",\"/\"==e.fragment.slice(0,1)){for(var a=e.fragment.split(\"/\"),i=1;i<a.length;i++){var o=a[i];if(o){if(void 0===(r=r[o=m.unescapeFragment(o)]))break;l[o]||((o=this._getId(r))&&(t=T(t,o)),r.$ref&&(o=T(t,r.$ref),o=u.call(this,n,o))&&(r=o.schema,n=o.root,t=o.baseId))}}return void 0!==r&&r!==n.schema?{schema:r,root:n,baseId:t}:void 0}}function p(e,t){return!1!==t&&(void 0===t||!0===t?function e(t){var r;if(Array.isArray(t)){for(var n=0;n<t.length;n++)if(\"object\"==typeof(r=t[n])&&!e(r))return!1}else for(var a in t){if(\"$ref\"==a)return!1;if(\"object\"==typeof(r=t[a])&&!e(r))return!1}return!0}(e):t?function e(t){var r,n=0;if(Array.isArray(t)){for(var a=0;a<t.length;a++)if(\"object\"==typeof(r=t[a])&&(n+=e(r)),n==1/0)return 1/0}else for(var i in t){if(\"$ref\"==i)return 1/0;if(o[i])n++;else if(\"object\"==typeof(r=t[i])&&(n+=e(r)+1),n==1/0)return 1/0}return n}(e)<=t:void 0)}function g(e,t){return!1!==t&&(e=y(e)),_(f.parse(e))}function _(e){return f.serialize(e).split(\"#\")[0]+\"#\"}function y(e){return e?e.replace(t,\"\"):\"\"}function T(e,t){return t=y(t),f.resolve(e,t)}}function k_(){var n;return y_||(y_=1,n=w_(),__={Validation:e(function(e){this.message=\"validation failed\",this.errors=e,this.ajv=this.validation=!0}),MissingRef:e(a)},a.message=function(e,t){return\"can't resolve reference \"+t+\" from id \"+e}),__;function a(e,t,r){this.message=r||a.message(e,t),this.missingRef=n.url(e,t),this.missingSchema=n.normalizeId(n.fullPath(this.missingRef))}function e(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e}}function I_(){return v_||(v_=1,T_=function(e,t){var n,l=\"boolean\"==typeof(t=\"function\"==typeof(t=t||{})?{cmp:t}:t).cycles&&t.cycles,c=t.cmp&&(n=t.cmp,function(r){return function(e,t){e={key:e,value:r[e]},t={key:t,value:r[t]};return n(e,t)}}),u=[];return function e(t){if(void 0!==(t=t&&t.toJSON&&\"function\"==typeof t.toJSON?t.toJSON():t)){if(\"number\"==typeof t)return isFinite(t)?\"\"+t:\"null\";if(\"object\"!=typeof t)return JSON.stringify(t);if(Array.isArray(t)){for(a=\"[\",i=0;i<t.length;i++)i&&(a+=\",\"),a+=e(t[i])||\"null\";return a+\"]\"}if(null===t)return\"null\";if(-1!==u.indexOf(t)){if(l)return JSON.stringify(\"__cycle__\");throw new TypeError(\"Converting circular structure to JSON\")}for(var r=u.push(t)-1,n=Object.keys(t).sort(c&&c(t)),a=\"\",i=0;i<n.length;i++){var o=n[i],s=e(t[o]);s&&(a&&(a+=\",\"),a+=JSON.stringify(o)+\":\"+s)}return u.splice(r,1),\"{\"+a+\"}\"}}(e)}),T_}function R_(){return E_||(E_=1,b_=function(n,e,L){var t=\"\",r=!0===n.schema.$async,a=n.util.schemaHasRulesExcept(n.schema,n.RULES.all,\"$ref\"),i=n.self._getId(n.schema);if(n.opts.strictKeywords){var o=n.util.schemaUnknownRules(n.schema,n.RULES.keywords);if(o){o=\"unknown keyword: \"+o;if(\"log\"!==n.opts.strictKeywords)throw new Error(o);n.logger.warn(o)}}if(n.isTop&&(t+=\" var validate = \",r&&(n.async=!0,t+=\"async \"),t+=\"function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; \",i)&&(n.opts.sourceCode||n.opts.processCode)&&(t+=\" /*# sourceURL=\"+i+\" */ \"),\"boolean\"==typeof n.schema||!a&&!n.schema.$ref)l=n.level,c=n.dataLevel,I=n.schema[e=\"false schema\"],v=n.schemaPath+n.util.getProperty(e),b=n.errSchemaPath+\"/\"+e,f=!n.opts.allErrors,u=\"data\"+(c||\"\"),p=\"valid\"+l,!1===n.schema?(n.isTop?f=!0:t+=\" var \"+p+\" = false; \",(D=D||[]).push(t),t=\"\",!1!==n.createErrors?(t+=\" { keyword: 'false schema' , dataPath: (dataPath || '') + \"+n.errorPath+\" , schemaPath: \"+n.util.toQuotedString(b)+\" , params: {} \",!1!==n.opts.messages&&(t+=\" , message: 'boolean schema is false' \"),n.opts.verbose&&(t+=\" , schema: false , parentSchema: validate.schema\"+n.schemaPath+\" , data: \"+u+\" \"),t+=\" } \"):t+=\" {} \",w=t,t=D.pop(),!n.compositeRule&&f?n.async?t+=\" throw new ValidationError([\"+w+\"]); \":t+=\" validate.errors = [\"+w+\"]; return false; \":t+=\" var err = \"+w+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"):n.isTop?t+=r?\" return data; \":\" validate.errors = null; return true; \":t+=\" var \"+p+\" = true; \",n.isTop&&(t+=\" }; return validate; \");else{if(n.isTop){var s=n.isTop,l=n.level=0,c=n.dataLevel=0,u=\"data\";if(n.rootId=n.resolve.fullPath(n.self._getId(n.root.schema)),n.baseId=n.baseId||n.rootId,delete n.isTop,n.dataPathArr=[\"\"],void 0!==n.schema.default&&n.opts.useDefaults&&n.opts.strictDefaults){var d=\"default is ignored in the schema root\";if(\"log\"!==n.opts.strictDefaults)throw new Error(d);n.logger.warn(d)}t=(t+=\" var vErrors = null; \")+\" var errors = 0;     \"+\" if (rootData === undefined) rootData = data; \"}else{l=n.level,u=\"data\"+((c=n.dataLevel)||\"\");if(i&&(n.baseId=n.resolve.url(n.baseId,i)),r&&!n.async)throw new Error(\"async schema in sync schema\");t+=\" var errs_\"+l+\" = errors;\"}var p=\"valid\"+l,f=!n.opts.allErrors,h=\"\",m=\"\",g=n.schema.type,_=Array.isArray(g);if(g&&n.opts.nullable&&!0===n.schema.nullable&&(_?-1==g.indexOf(\"null\")&&(g=g.concat(\"null\")):\"null\"!=g&&(g=[g,\"null\"],_=!0)),_&&1==g.length&&(g=g[0],_=!1),n.schema.$ref&&a){if(\"fail\"==n.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path \"'+n.errSchemaPath+'\" (see option extendRefs)');!0!==n.opts.extendRefs&&(a=!1,n.logger.warn('$ref: keywords ignored in schema at path \"'+n.errSchemaPath+'\"'))}if(n.schema.$comment&&n.opts.$comment&&(t+=\" \"+n.RULES.all.$comment.code(n,\"$comment\")),g){n.opts.coerceTypes&&(y=n.util.coerceToTypes(n.opts.coerceTypes,g));var y,T=n.RULES.types[g];if(y||_||!0===T||T&&!$(T)){var v=n.schemaPath+\".type\",b=n.errSchemaPath+\"/type\",v=n.schemaPath+\".type\",b=n.errSchemaPath+\"/type\";if(t+=\" if (\"+n.util[_?\"checkDataTypes\":\"checkDataType\"](g,u,n.opts.strictNumbers,!0)+\") { \",y){var E=\"dataType\"+l,S=\"coerced\"+l,A=(t+=\" var \"+E+\" = typeof \"+u+\"; var \"+S+\" = undefined; \",\"array\"==n.opts.coerceTypes&&(t+=\" if (\"+E+\" == 'object' && Array.isArray(\"+u+\") && \"+u+\".length == 1) { \"+u+\" = \"+u+\"[0]; \"+E+\" = typeof \"+u+\"; if (\"+n.util.checkDataType(n.schema.type,u,n.opts.strictNumbers)+\") \"+S+\" = \"+u+\"; } \"),t+=\" if (\"+S+\" !== undefined) ; \",y);if(A)for(var O,C=-1,F=A.length-1;C<F;)\"string\"==(O=A[C+=1])?t+=\" else if (\"+E+\" == 'number' || \"+E+\" == 'boolean') \"+S+\" = '' + \"+u+\"; else if (\"+u+\" === null) \"+S+\" = ''; \":\"number\"==O||\"integer\"==O?(t+=\" else if (\"+E+\" == 'boolean' || \"+u+\" === null || (\"+E+\" == 'string' && \"+u+\" && \"+u+\" == +\"+u+\" \",\"integer\"==O&&(t+=\" && !(\"+u+\" % 1)\"),t+=\")) \"+S+\" = +\"+u+\"; \"):\"boolean\"==O?t+=\" else if (\"+u+\" === 'false' || \"+u+\" === 0 || \"+u+\" === null) \"+S+\" = false; else if (\"+u+\" === 'true' || \"+u+\" === 1) \"+S+\" = true; \":\"null\"==O?t+=\" else if (\"+u+\" === '' || \"+u+\" === 0 || \"+u+\" === false) \"+S+\" = null; \":\"array\"==n.opts.coerceTypes&&\"array\"==O&&(t+=\" else if (\"+E+\" == 'string' || \"+E+\" == 'number' || \"+E+\" == 'boolean' || \"+u+\" == null) \"+S+\" = [\"+u+\"]; \");(D=D||[]).push(t+=\" else {   \"),t=\"\",!1!==n.createErrors?(t=(t+=\" { keyword: 'type' , dataPath: (dataPath || '') + \"+n.errorPath+\" , schemaPath: \"+n.util.toQuotedString(b)+\" , params: { type: '\")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' } \",!1!==n.opts.messages&&(t=(t+=\" , message: 'should be \")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' \"),n.opts.verbose&&(t+=\" , schema: validate.schema\"+v+\" , parentSchema: validate.schema\"+n.schemaPath+\" , data: \"+u+\" \"),t+=\" } \"):t+=\" {} \";var w=t,o=(t=D.pop(),!n.compositeRule&&f?n.async?t+=\" throw new ValidationError([\"+w+\"]); \":t+=\" validate.errors = [\"+w+\"]; return false; \":t+=\" var err = \"+w+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",c?\"data\"+(c-1||\"\"):\"parentData\");t=t+(\" } if (\"+S+\" !== undefined) {  \")+(\" \"+u+\" = \"+S+\"; \"),c||(t+=\"if (\"+o+\" !== undefined)\"),t+=\" \"+o+\"[\"+(c?n.dataPathArr[c]:\"parentDataProperty\")+\"] = \"+S+\"; } \"}else{w=((D=D||[]).push(t),t=\"\",!1!==n.createErrors?(t=(t+=\" { keyword: 'type' , dataPath: (dataPath || '') + \"+n.errorPath+\" , schemaPath: \"+n.util.toQuotedString(b)+\" , params: { type: '\")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' } \",!1!==n.opts.messages&&(t=(t+=\" , message: 'should be \")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' \"),n.opts.verbose&&(t+=\" , schema: validate.schema\"+v+\" , parentSchema: validate.schema\"+n.schemaPath+\" , data: \"+u+\" \"),t+=\" } \"):t+=\" {} \",t);t=D.pop(),!n.compositeRule&&f?n.async?t+=\" throw new ValidationError([\"+w+\"]); \":t+=\" validate.errors = [\"+w+\"]; return false; \":t+=\" var err = \"+w+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"}t+=\" } \"}}if(n.schema.$ref&&!a)t+=\" \"+n.RULES.all.$ref.code(n,\"$ref\")+\" \",f&&(t=(t+=\" } if (errors === \")+(s?\"0\":\"errs_\"+l)+\") { \",m+=\"}\");else{var k=n.RULES;if(k)for(var U=-1,B=k.length-1;U<B;)if($(T=k[U+=1])){if(T.type&&(t+=\" if (\"+n.util.checkDataType(T.type,u,n.opts.strictNumbers)+\") { \"),n.opts.useDefaults)if(\"object\"==T.type&&n.schema.properties){var I=n.schema.properties,R=Object.keys(I);if(R)for(var j,H=-1,G=R.length-1;H<G;)if(void 0!==(P=I[j=R[H+=1]]).default){var N=u+n.util.getProperty(j);if(n.compositeRule){if(n.opts.strictDefaults){d=\"default is ignored for: \"+N;if(\"log\"!==n.opts.strictDefaults)throw new Error(d);n.logger.warn(d)}}else t+=\" if (\"+N+\" === undefined \",\"empty\"==n.opts.useDefaults&&(t+=\" || \"+N+\" === null || \"+N+\" === '' \"),t+=\" ) \"+N+\" = \",\"shared\"==n.opts.useDefaults?t+=\" \"+n.useDefault(P.default)+\" \":t+=\" \"+JSON.stringify(P.default)+\" \",t+=\"; \"}}else if(\"array\"==T.type&&Array.isArray(n.schema.items)){var M=n.schema.items;if(M)for(var P,C=-1,V=M.length-1;C<V;)if(void 0!==(P=M[C+=1]).default){N=u+\"[\"+C+\"]\";if(n.compositeRule){if(n.opts.strictDefaults){d=\"default is ignored for: \"+N;if(\"log\"!==n.opts.strictDefaults)throw new Error(d);n.logger.warn(d)}}else t+=\" if (\"+N+\" === undefined \",\"empty\"==n.opts.useDefaults&&(t+=\" || \"+N+\" === null || \"+N+\" === '' \"),t+=\" ) \"+N+\" = \",\"shared\"==n.opts.useDefaults?t+=\" \"+n.useDefault(P.default)+\" \":t+=\" \"+JSON.stringify(P.default)+\" \",t+=\"; \"}}var D,q=T.rules;if(q)for(var x,z=-1,W=q.length-1;z<W;)K(x=q[z+=1])&&(x=x.code(n,x.keyword,T.type))&&(t+=\" \"+x+\" \",f)&&(h+=\"}\");f&&(t+=\" \"+h+\" \",h=\"\"),T.type&&(t+=\" } \",g)&&g===T.type&&!y&&(t+=\" else { \",v=n.schemaPath+\".type\",b=n.errSchemaPath+\"/type\",(D=D||[]).push(t),t=\"\",!1!==n.createErrors?(t=(t+=\" { keyword: 'type' , dataPath: (dataPath || '') + \"+n.errorPath+\" , schemaPath: \"+n.util.toQuotedString(b)+\" , params: { type: '\")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' } \",!1!==n.opts.messages&&(t=(t+=\" , message: 'should be \")+(_?\"\"+g.join(\",\"):\"\"+g)+\"' \"),n.opts.verbose&&(t+=\" , schema: validate.schema\"+v+\" , parentSchema: validate.schema\"+n.schemaPath+\" , data: \"+u+\" \"),t+=\" } \"):t+=\" {} \",w=t,t=D.pop(),!n.compositeRule&&f?n.async?t+=\" throw new ValidationError([\"+w+\"]); \":t+=\" validate.errors = [\"+w+\"]; return false; \":t+=\" var err = \"+w+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",t+=\" } \"),f&&(t=(t+=\" if (errors === \")+(s?\"0\":\"errs_\"+l)+\") { \",m+=\"}\")}}f&&(t+=\" \"+m+\" \"),s?t=t+(r?\" if (errors === 0) return data;            else throw new ValidationError(vErrors); \":\" validate.errors = vErrors;  return errors === 0;       \")+\" }; return validate;\":t+=\" var \"+p+\" = errors === errs_\"+l+\";\"}return t;function $(e){for(var t=e.rules,r=0;r<t.length;r++)if(K(t[r]))return 1}function K(e){return void 0!==n.schema[e.keyword]||e.implements&&function(e){for(var t=e.implements,r=0;r<t.length;r++)if(void 0!==n.schema[t[r]])return 1}(e)}}),b_}function N_(){var w,k,I,R,N,M,P,D;return A_||(A_=1,w=w_(),k=p_(),I=k_(),R=I_(),N=R_(),M=k.ucs2length,P=d_(),D=I.Validation,S_=x),S_;function x(e,o,s,t){var l=this,c=this._opts,u=[void 0],d={},p=[],r={},f=[],n={},h=[],a=(o=o||{schema:e,refVal:u,refs:d},function(e,t,r){var n=L.call(this,e,t,r);return 0<=n?{index:n,compiling:!0}:(n=this._compilations.length,this._compilations[n]={schema:e,root:t,baseId:r},{index:n,compiling:!1})}.call(this,e,o,t)),i=this._compilations[a.index];if(a.compiling)return i.callValidate=T;var m=this._formats,g=this.RULES;try{var _=v(e,o,s,t),y=(i.validate=_,i.callValidate);return y&&(y.schema=_.schema,y.errors=null,y.refs=_.refs,y.refVal=_.refVal,y.root=_.root,y.$async=_.$async,c.sourceCode)&&(y.source=_.source),_}finally{!function(e,t,r){e=L.call(this,e,t,r);0<=e&&this._compilations.splice(e,1)}.call(this,e,o,t)}function T(){var e=i.validate,t=e.apply(this,arguments);return T.errors=e.errors,t}function v(e,t,r,n){var a=!t||t.schema==e;if(t.schema!=o.schema)return x.call(l,e,t,r,n);r=!0===e.$async,n=N({isTop:!0,schema:e,isRoot:a,baseId:n,root:t,schemaPath:\"\",errSchemaPath:\"#\",errorPath:'\"\"',MissingRefError:I.MissingRef,RULES:g,validate:N,util:k,resolve:w,resolveRef:b,usePattern:A,useDefault:O,useCustomRule:C,opts:c,formats:m,logger:l.logger,self:l}),n=H(u,B)+H(p,F)+H(f,U)+H(h,j)+n;c.processCode&&(n=c.processCode(n,e));try{var i=new Function(\"self\",\"RULES\",\"formats\",\"root\",\"refVal\",\"defaults\",\"customRules\",\"equal\",\"ucs2length\",\"ValidationError\",n)(l,g,m,o,u,f,h,P,M,D);u[0]=i}catch(e){throw l.logger.error(\"Error compiling schema, function code:\",n),e}return i.schema=e,i.errors=null,i.refs=d,i.refVal=u,i.root=a?i:t,r&&(i.$async=!0),!0===c.sourceCode&&(i.source={code:n,patterns:p,defaults:f}),i}function b(e,t,r){t=w.url(e,t);var n=d[t];if(void 0!==n)return S(a=u[n],i=\"refVal[\"+n+\"]\");if(!r&&o.refs){n=o.refs[t];if(void 0!==n)return S(a=o.refVal[n],i=E(t,a))}var a,i=E(t),r=w.call(l,v,o,t);if(void 0!==(r=void 0===r&&(n=s&&s[t])?w.inlineRef(n,c.inlineRefs)?n:x.call(l,n,o,s,e):r))return a=r,n=d[n=t],u[n]=a,S(r,i);delete d[t]}function E(e,t){var r=u.length;return u[r]=t,\"refVal\"+(d[e]=r)}function S(e,t){return\"object\"==typeof e||\"boolean\"==typeof e?{code:t,schema:e,inline:!0}:{code:t,$async:e&&!!e.$async}}function A(e){var t=r[e];return void 0===t&&(t=r[e]=p.length,p[t]=e),\"pattern\"+t}function O(e){switch(typeof e){case\"boolean\":case\"number\":return\"\"+e;case\"string\":return k.toQuotedString(e);case\"object\":var t,r;return null===e?\"null\":(t=R(e),void 0===(r=n[t])&&(r=n[t]=f.length,f[r]=e),\"default\"+r)}}function C(e,t,r,n){if(!1!==l._opts.validateSchema){var a=e.definition.dependencies;if(a&&!a.every(function(e){return Object.prototype.hasOwnProperty.call(r,e)}))throw new Error(\"parent schema must have all required keywords: \"+a.join(\",\"));a=e.definition.validateSchema;if(a)if(!a(t)){a=\"keyword schema is invalid: \"+l.errorsText(a.errors);if(\"log\"!=l._opts.validateSchema)throw new Error(a);l.logger.error(a)}}var i,a=e.definition.compile,o=e.definition.inline,s=e.definition.macro;if(a)i=a.call(l,t,r,n);else if(s)i=s.call(l,t,r,n),!1!==c.validateSchema&&l.validateSchema(i,!0);else if(o)i=o.call(l,n,e.keyword,t,r);else if(!(i=e.definition.validate))return;if(void 0===i)throw new Error('custom keyword \"'+e.keyword+'\"failed to compile');a=h.length;return{code:\"customRule\"+a,validate:h[a]=i}}}function L(e,t,r){for(var n=0;n<this._compilations.length;n++){var a=this._compilations[n];if(a.schema==e&&a.root==t&&a.baseId==r)return n}return-1}function F(e,t){return\"var pattern\"+e+\" = new RegExp(\"+k.toQuotedString(t[e])+\");\"}function U(e){return\"var default\"+e+\" = defaults[\"+e+\"];\"}function B(e,t){return void 0===t[e]?\"\":\"var refVal\"+e+\" = refVal[\"+e+\"];\"}function j(e){return\"var customRule\"+e+\" = customRules[\"+e+\"];\"}function H(e,t){if(!e.length)return\"\";for(var r=\"\",n=0;n<e.length;n++)r+=t(n,e);return r}}var M_,P_,D_,x_,L_,F_,U_,B_,j_,H_,G_,V_,q_,z_,W_,$_,K_,Y_,J_,Q_,Z_,X_,e0,t0,r0,n0,a0,i0,o0,s0,l0,c0,u0,d0,p0,f0,h0,m0,g0,_0,y0,T0,v0,b0,E0,S0,A0,O0,C0,w0,k0,I0,R0,N0,M0,P0,D0,x0,L0,F0={exports:{}};function U0(){var t,n,a,i,e,r,o,s,l,c,u,d,p,f,h;return D_||(D_=1,t=p_(),n=/^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/,a=[0,31,28,31,30,31,30,31,31,30,31,30,31],i=/^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,r=/^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,(P_=m).fast={date:/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,time:/^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\"date-time\":/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,uri:/^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\"uri-reference\":/^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\"uri-template\":o=/^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,url:s=/^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:e=/^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,ipv6:/^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,regex:y,uuid:l=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\"json-pointer\":c=/^(?:\\/(?:[^~/]|~0|~1)*)*$/,\"json-pointer-uri-fragment\":u=/^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\"relative-json-pointer\":d=/^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/},m.full={date:g,time:_,\"date-time\":function(e){e=e.split(p);return 2==e.length&&g(e[0])&&_(e[1],!0)},uri:function(e){return f.test(e)&&r.test(e)},\"uri-reference\":/^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\"uri-template\":o,url:s,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:e,ipv4:/^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,ipv6:/^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,regex:y,uuid:l,\"json-pointer\":c,\"json-pointer-uri-fragment\":u,\"relative-json-pointer\":d},p=/t|\\s/i,f=/\\/|:/,h=/[^\\\\]\\\\Z/),P_;function m(e){return t.copy(m[e=\"full\"==e?\"full\":\"fast\"])}function g(e){var t,r,e=e.match(n);return!!e&&(t=+e[1],r=+e[2],e=+e[3],1<=r)&&r<=12&&1<=e&&e<=(2!=r||(e=t)%4!=0||e%100==0&&e%400!=0?a[r]:29)}function _(e,t){var r,n,a,e=e.match(i);return!!e&&(r=e[1],n=e[2],a=e[3],e=e[5],r<=23&&n<=59&&a<=59||23==r&&59==n&&60==a)&&(!t||e)}function y(e){if(h.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}}function B0(){return a0||(a0=1,n0=function(e,t,r){var n,a,i,o,s,l=\" \",c=e.level,u=e.dataLevel,d=e.schema[t],p=e.schemaPath+e.util.getProperty(t),f=e.errSchemaPath+\"/\"+t,h=!e.opts.allErrors,m=\"data\"+(u||\"\"),g=e.opts.$data&&d&&d.$data,_=g?(l+=\" var schema\"+c+\" = \"+e.util.getData(d.$data,u,e.dataPathArr)+\"; \",\"schema\"+c):d,y=\"maximum\"==t,T=y?\"exclusiveMaximum\":\"exclusiveMinimum\",v=e.schema[T],b=e.opts.$data&&v&&v.$data,E=y?\"<\":\">\",S=y?\">\":\"<\",A=void 0;if(!g&&\"number\"!=typeof d&&void 0!==d)throw new Error(t+\" must be number\");if(!b&&void 0!==v&&\"number\"!=typeof v&&\"boolean\"!=typeof v)throw new Error(T+\" must be number or boolean\");b?(u=e.util.getData(v.$data,u,e.dataPathArr),i=\"exclIsNumber\"+c,o=\"' + \"+(s=\"op\"+c)+\" + '\",A=T,(O=O||[]).push(l=l+(\" var schemaExcl\"+c+\" = \"+u+\"; \")+(\" var \"+(n=\"exclusive\"+c)+\"; var \"+(a=\"exclType\"+c)+\" = typeof \"+(u=\"schemaExcl\"+c)+\"; if (\"+a+\" != 'boolean' && \"+a+\" != 'undefined' && \"+a+\" != 'number') { \")),l=\"\",!1!==e.createErrors?(l+=\" { keyword: '\"+(A||\"_exclusiveLimit\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(f)+\" , params: {} \",!1!==e.opts.messages&&(l+=\" , message: '\"+T+\" should be boolean' \"),e.opts.verbose&&(l+=\" , schema: validate.schema\"+p+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+m+\" \"),l+=\" } \"):l+=\" {} \",C=l,l=O.pop(),!e.compositeRule&&h?e.async?l+=\" throw new ValidationError([\"+C+\"]); \":l+=\" validate.errors = [\"+C+\"]; return false; \":l+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",l+=\" } else if ( \",g&&(l+=\" (\"+_+\" !== undefined && typeof \"+_+\" != 'number') || \"),l+=\" \"+a+\" == 'number' ? ( (\"+n+\" = \"+_+\" === undefined || \"+u+\" \"+E+\"= \"+_+\") ? \"+m+\" \"+S+\"= \"+u+\" : \"+m+\" \"+S+\" \"+_+\" ) : ( (\"+n+\" = \"+u+\" === true) ? \"+m+\" \"+S+\"= \"+_+\" : \"+m+\" \"+S+\" \"+_+\" ) || \"+m+\" !== \"+m+\") { var op\"+c+\" = \"+n+\" ? '\"+E+\"' : '\"+E+\"='; \",void 0===d&&(f=e.errSchemaPath+\"/\"+(A=T),_=u,g=b)):(o=E,(i=\"number\"==typeof v)&&g?(s=\"'\"+o+\"'\",l+=\" if ( \",g&&(l+=\" (\"+_+\" !== undefined && typeof \"+_+\" != 'number') || \"),l+=\" ( \"+_+\" === undefined || \"+v+\" \"+E+\"= \"+_+\" ? \"+m+\" \"+S+\"= \"+v+\" : \"+m+\" \"+S+\" \"+_+\" ) || \"+m+\" !== \"+m+\") { \"):(i&&void 0===d?(n=!0,f=e.errSchemaPath+\"/\"+(A=T),_=v,S+=\"=\"):(i&&(_=Math[y?\"min\":\"max\"](v,d)),v===(!i||_)?(n=!0,f=e.errSchemaPath+\"/\"+(A=T),S+=\"=\"):(n=!1,o+=\"=\")),s=\"'\"+o+\"'\",l+=\" if ( \",g&&(l+=\" (\"+_+\" !== undefined && typeof \"+_+\" != 'number') || \"),l+=\" \"+m+\" \"+S+\" \"+_+\" || \"+m+\" !== \"+m+\") { \")),A=A||t;(O=O||[]).push(l),l=\"\",!1!==e.createErrors?(l+=\" { keyword: '\"+(A||\"_limit\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(f)+\" , params: { comparison: \"+s+\", limit: \"+_+\", exclusive: \"+n+\" } \",!1!==e.opts.messages&&(l=l+\" , message: 'should be \"+o+\" \"+(g?\"' + \"+_:_+\"'\")),e.opts.verbose&&(l=(l+=\" , schema:  \")+(g?\"validate.schema\"+p:\"\"+d)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+m+\" \"),l+=\" } \"):l+=\" {} \";var O,C=l;return l=O.pop(),!e.compositeRule&&h?e.async?l+=\" throw new ValidationError([\"+C+\"]); \":l+=\" validate.errors = [\"+C+\"]; return false; \":l+=\" var err = \"+C+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",l+=\" } \",h&&(l+=\" else { \"),l}),n0}function j0(){return o0||(o0=1,i0=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,d=\"data\"+(o||\"\"),p=e.opts.$data&&s&&s.$data,o=p?(a+=\" var schema\"+i+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \",\"schema\"+i):s;if(p||\"number\"==typeof s)return a+=\"if ( \",p&&(a+=\" (\"+o+\" !== undefined && typeof \"+o+\" != 'number') || \"),(i=[]).push(a+=\" \"+d+\".length \"+(\"maxItems\"==(n=t)?\">\":\"<\")+\" \"+o+\") { \"),a=\"\",!1!==e.createErrors?(a+=\" { keyword: '\"+(n||\"_limitItems\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { limit: \"+o+\" } \",!1!==e.opts.messages&&(a=(a=(a+=\" , message: 'should NOT have \")+(\"maxItems\"==t?\"more\":\"fewer\")+\" than \")+(p?\"' + \"+o+\" + '\":\"\"+s)+\" items' \"),e.opts.verbose&&(a=(a+=\" , schema:  \")+(p?\"validate.schema\"+l:\"\"+s)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),a+=\" } \"):a+=\" {} \",n=a,a=i.pop(),!e.compositeRule&&u?e.async?a+=\" throw new ValidationError([\"+n+\"]); \":a+=\" validate.errors = [\"+n+\"]; return false; \":a+=\" var err = \"+n+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",a+=\"} \",u&&(a+=\" else { \"),a;throw new Error(t+\" must be number\")}),i0}function H0(){return l0||(l0=1,s0=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,d=\"data\"+(o||\"\"),p=e.opts.$data&&s&&s.$data,o=p?(a+=\" var schema\"+i+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \",\"schema\"+i):s;if(p||\"number\"==typeof s)return a+=\"if ( \",p&&(a+=\" (\"+o+\" !== undefined && typeof \"+o+\" != 'number') || \"),!1===e.opts.unicode?a+=\" \"+d+\".length \":a+=\" ucs2length(\"+d+\") \",(i=[]).push(a+=\" \"+(\"maxLength\"==(n=t)?\">\":\"<\")+\" \"+o+\") { \"),a=\"\",!1!==e.createErrors?(a+=\" { keyword: '\"+(n||\"_limitLength\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { limit: \"+o+\" } \",!1!==e.opts.messages&&(a=(a=(a+=\" , message: 'should NOT be \")+(\"maxLength\"==t?\"longer\":\"shorter\")+\" than \")+(p?\"' + \"+o+\" + '\":\"\"+s)+\" characters' \"),e.opts.verbose&&(a=(a+=\" , schema:  \")+(p?\"validate.schema\"+l:\"\"+s)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),a+=\" } \"):a+=\" {} \",n=a,a=i.pop(),!e.compositeRule&&u?e.async?a+=\" throw new ValidationError([\"+n+\"]); \":a+=\" validate.errors = [\"+n+\"]; return false; \":a+=\" var err = \"+n+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",a+=\"} \",u&&(a+=\" else { \"),a;throw new Error(t+\" must be number\")}),s0}function G0(){return u0||(u0=1,c0=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,d=\"data\"+(o||\"\"),p=e.opts.$data&&s&&s.$data,o=p?(a+=\" var schema\"+i+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \",\"schema\"+i):s;if(p||\"number\"==typeof s)return a+=\"if ( \",p&&(a+=\" (\"+o+\" !== undefined && typeof \"+o+\" != 'number') || \"),(i=[]).push(a+=\" Object.keys(\"+d+\").length \"+(\"maxProperties\"==(n=t)?\">\":\"<\")+\" \"+o+\") { \"),a=\"\",!1!==e.createErrors?(a+=\" { keyword: '\"+(n||\"_limitProperties\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { limit: \"+o+\" } \",!1!==e.opts.messages&&(a=(a=(a+=\" , message: 'should NOT have \")+(\"maxProperties\"==t?\"more\":\"fewer\")+\" than \")+(p?\"' + \"+o+\" + '\":\"\"+s)+\" properties' \"),e.opts.verbose&&(a=(a+=\" , schema:  \")+(p?\"validate.schema\"+l:\"\"+s)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),a+=\" } \"):a+=\" {} \",n=a,a=i.pop(),!e.compositeRule&&u?e.async?a+=\" throw new ValidationError([\"+n+\"]); \":a+=\" validate.errors = [\"+n+\"]; return false; \":a+=\" var err = \"+n+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",a+=\"} \",u&&(a+=\" else { \"),a;throw new Error(t+\" must be number\")}),c0}function V0(){return k0||(k0=1,w0={$ref:(L_||(L_=1,x_=function(e,t,r){var n,a,i=\" \",o=e.level,s=e.dataLevel,l=e.schema[t],t=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(s||\"\"),o=\"valid\"+o;if(\"#\"==l||\"#/\"==l)a=e.isRoot?(n=e.async,\"validate\"):(n=!0===e.root.schema.$async,\"root.refVal[0]\");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p=e.MissingRefError.message(e.baseId,l);if(\"fail\"==e.opts.missingRefs){e.logger.error(p);(f=f||[]).push(i),i=\"\",!1!==e.createErrors?(i+=\" { keyword: '$ref' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { ref: '\"+e.util.escapeQuotes(l)+\"' } \",!1!==e.opts.messages&&(i+=\" , message: 'can\\\\'t resolve reference \"+e.util.escapeQuotes(l)+\"' \"),e.opts.verbose&&(i+=\" , schema: \"+e.util.toQuotedString(l)+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),i+=\" } \"):i+=\" {} \";t=i,i=f.pop();!e.compositeRule&&c?e.async?i+=\" throw new ValidationError([\"+t+\"]); \":i+=\" validate.errors = [\"+t+\"]; return false; \":i+=\" var err = \"+t+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",c&&(i+=\" if (false) { \")}else{if(\"ignore\"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,p);e.logger.warn(p),c&&(i+=\" if (true) { \")}}else d.inline?((t=e.util.copy(e)).level++,p=\"valid\"+t.level,t.schema=d.schema,t.schemaPath=\"\",t.errSchemaPath=l,i+=\" \"+e.validate(t).replace(/validate\\.schema/g,d.code)+\" \",c&&(i+=\" if (\"+p+\") { \")):(n=!0===d.$async||e.async&&!1!==d.$async,a=d.code)}if(a){(f=f||[]).push(i),i=\"\",e.opts.passContext?i+=\" \"+a+\".call(this, \":i+=\" \"+a+\"( \",i+=\" \"+u+\", (dataPath || '')\",'\"\"'!=e.errorPath&&(i+=\" + \"+e.errorPath);var f,l=s?\"data\"+(s-1||\"\"):\"parentData\",t=i+=\" , \"+l+\" , \"+(s?e.dataPathArr[s]:\"parentDataProperty\")+\", rootData)  \";if(i=f.pop(),n){if(!e.async)throw new Error(\"async schema referenced by sync schema\");c&&(i+=\" var \"+o+\"; \"),i+=\" try { await \"+t+\"; \",c&&(i+=\" \"+o+\" = true; \"),i+=\" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; \",c&&(i+=\" \"+o+\" = false; \"),i+=\" } \",c&&(i+=\" if (\"+o+\") { \")}else i+=\" if (!\"+t+\") { if (vErrors === null) vErrors = \"+a+\".errors; else vErrors = vErrors.concat(\"+a+\".errors); errors = vErrors.length; } \",c&&(i+=\" else { \")}return i}),x_),allOf:(U_||(U_=1,F_=function(e,t,r){var n=\" \",a=e.schema[t],i=e.schemaPath+e.util.getProperty(t),o=e.errSchemaPath+\"/\"+t,s=!e.opts.allErrors,l=e.util.copy(e),c=\"\",u=(l.level++,\"valid\"+l.level),d=l.baseId,p=!0,f=a;if(f)for(var h,m=-1,g=f.length-1;m<g;)h=f[m+=1],(e.opts.strictKeywords?\"object\"==typeof h&&0<Object.keys(h).length||!1===h:e.util.schemaHasRules(h,e.RULES.all))&&(p=!1,l.schema=h,l.schemaPath=i+\"[\"+m+\"]\",l.errSchemaPath=o+\"/\"+m,n+=\"  \"+e.validate(l)+\" \",l.baseId=d,s)&&(n+=\" if (\"+u+\") { \",c+=\"}\");return s&&(n+=p?\" if (true) { \":\" \"+c.slice(0,-1)+\" \"),n}),F_),anyOf:(j_||(j_=1,B_=function(t,e,r){var n=\" \",a=t.level,i=t.dataLevel,o=t.schema[e],s=t.schemaPath+t.util.getProperty(e),l=t.errSchemaPath+\"/\"+e,e=!t.opts.allErrors,i=\"data\"+(i||\"\"),c=\"valid\"+a,a=\"errs__\"+a,u=t.util.copy(t),d=\"\",p=(u.level++,\"valid\"+u.level);if(o.every(function(e){return t.opts.strictKeywords?\"object\"==typeof e&&0<Object.keys(e).length||!1===e:t.util.schemaHasRules(e,t.RULES.all)})){var f=u.baseId,h=(n+=\" var \"+a+\" = errors; var \"+c+\" = false;  \",t.compositeRule),m=(t.compositeRule=u.compositeRule=!0,o);if(m)for(var g,_=-1,y=m.length-1;_<y;)g=m[_+=1],u.schema=g,u.schemaPath=s+\"[\"+_+\"]\",u.errSchemaPath=l+\"/\"+_,n+=\"  \"+t.validate(u)+\" \",u.baseId=f,n+=\" \"+c+\" = \"+c+\" || \"+p+\"; if (!\"+c+\") { \",d+=\"}\";t.compositeRule=u.compositeRule=h,n+=\" \"+d+\" if (!\"+c+\") {   var err =   \",!1!==t.createErrors?(n+=\" { keyword: 'anyOf' , dataPath: (dataPath || '') + \"+t.errorPath+\" , schemaPath: \"+t.util.toQuotedString(l)+\" , params: {} \",!1!==t.opts.messages&&(n+=\" , message: 'should match some schema in anyOf' \"),t.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+t.schemaPath+\" , data: \"+i+\" \"),n+=\" } \"):n+=\" {} \",n+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!t.compositeRule&&e&&(t.async?n+=\" throw new ValidationError(vErrors); \":n+=\" validate.errors = vErrors; return false; \"),n+=\" } else {  errors = \"+a+\"; if (vErrors !== null) { if (\"+a+\") vErrors.length = \"+a+\"; else vErrors = null; } \",t.opts.allErrors&&(n+=\" } \")}else e&&(n+=\" if (true) { \");return n}),B_),$comment:(G_||(G_=1,H_=function(e,t,r){var n=\" \",a=e.schema[t],t=e.errSchemaPath+\"/\"+t,a=(e.opts.allErrors,e.util.toQuotedString(a));return!0===e.opts.$comment?n+=\" console.log(\"+a+\");\":\"function\"==typeof e.opts.$comment&&(n+=\" self._opts.$comment(\"+a+\", \"+e.util.toQuotedString(t)+\", validate.root.schema);\"),n}),H_),const:(q_||(q_=1,V_=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,c=\"data\"+(i||\"\"),u=\"valid\"+a,d=e.opts.$data&&o&&o.$data,o=(d&&(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \"),d||(n+=\" var schema\"+a+\" = validate.schema\"+s+\";\"),[]),i=(o.push(n+=\"var \"+u+\" = equal(\"+c+\", schema\"+a+\"); if (!\"+u+\") {   \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'const' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { allowedValue: schema\"+a+\" } \",!1!==e.opts.messages&&(n+=\" , message: 'should be equal to constant' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n),n=o.pop();return!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+i+\"]); \":n+=\" validate.errors = [\"+i+\"]; return false; \":n+=\" var err = \"+i+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" }\",l&&(n+=\" else { \"),n}),V_),contains:(W_||(W_=1,z_=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,i=\"data\"+(i||\"\"),c=\"valid\"+a,u=\"errs__\"+a,d=e.util.copy(e),p=(d.level++,\"valid\"+d.level),a=\"i\"+a,f=d.dataLevel=e.dataLevel+1,h=\"data\"+f,m=e.baseId,g=e.opts.strictKeywords?\"object\"==typeof o&&0<Object.keys(o).length||!1===o:e.util.schemaHasRules(o,e.RULES.all),a=(n+=\"var \"+u+\" = errors;var \"+c+\";\",g?(c=e.compositeRule,e.compositeRule=d.compositeRule=!0,d.schema=o,d.schemaPath=s,d.errSchemaPath=t,n+=\" var \"+p+\" = false; for (var \"+a+\" = 0; \"+a+\" < \"+i+\".length; \"+a+\"++) { \",d.errorPath=e.util.getPathExpr(e.errorPath,a,e.opts.jsonPointers,!0),o=i+\"[\"+a+\"]\",d.dataPathArr[f]=a,f=e.validate(d),d.baseId=m,e.util.varOccurences(f,h)<2?n+=\" \"+e.util.varReplace(f,h,o)+\" \":n+=\" var \"+h+\" = \"+o+\"; \"+f+\" \",n+=\" if (\"+p+\") break; }  \",e.compositeRule=d.compositeRule=c,n+=\"  if (!\"+p+\") {\"):n+=\" if (\"+i+\".length == 0) {\",[]),m=(a.push(n),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'contains' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: {} \",!1!==e.opts.messages&&(n+=\" , message: 'should contain a valid item' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+i+\" \"),n+=\" } \"):n+=\" {} \",n),n=a.pop();return!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+m+\"]); \":n+=\" validate.errors = [\"+m+\"]; return false; \":n+=\" var err = \"+m+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" } else { \",g&&(n+=\"  errors = \"+u+\"; if (vErrors !== null) { if (\"+u+\") vErrors.length = \"+u+\"; else vErrors = null; } \"),e.opts.allErrors&&(n+=\" } \"),n}),z_),dependencies:(K_||(K_=1,$_=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,d=\"data\"+(o||\"\"),t=\"errs__\"+i,p=e.util.copy(e),f=\"\",h=(p.level++,\"valid\"+p.level),m={},g={},_=e.opts.ownProperties;for(N in s)\"__proto__\"!=N&&(P=s[N],(n=Array.isArray(P)?g:m)[N]=P);var y=e.errorPath;for(N in a=a+(\"var \"+t+\" = errors;\")+(\"var missing\"+i+\";\"),g)if((n=g[N]).length){if(a+=\" if ( \"+d+e.util.getProperty(N)+\" !== undefined \",_&&(a+=\" && Object.prototype.hasOwnProperty.call(\"+d+\", '\"+e.util.escapeQuotes(N)+\"') \"),u){a+=\" && ( \";var T=n;if(T)for(var v=-1,b=T.length-1;v<b;)C=T[v+=1],v&&(a+=\" || \"),a+=\" ( ( \"+(R=d+(I=e.util.getProperty(C)))+\" === undefined \",_&&(a+=\" || ! Object.prototype.hasOwnProperty.call(\"+d+\", '\"+e.util.escapeQuotes(C)+\"') \"),a+=\") && (missing\"+i+\" = \"+e.util.toQuotedString(e.opts.jsonPointers?C:I)+\") ) \";a+=\")) {  \";var E=\"missing\"+i,S=\"' + \"+E+\" + '\",A=(e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(y,E,!0):y+\" + \"+E),A||[]),E=(A.push(a),a=\"\",!1!==e.createErrors?(a+=\" { keyword: 'dependencies' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { property: '\"+e.util.escapeQuotes(N)+\"', missingProperty: '\"+S+\"', depsCount: \"+n.length+\", deps: '\"+e.util.escapeQuotes(1==n.length?n[0]:n.join(\", \"))+\"' } \",!1!==e.opts.messages&&(a+=\" , message: 'should have \",1==n.length?a+=\"property \"+e.util.escapeQuotes(n[0]):a+=\"properties \"+e.util.escapeQuotes(n.join(\", \")),a+=\" when property \"+e.util.escapeQuotes(N)+\" is present' \"),e.opts.verbose&&(a+=\" , schema: validate.schema\"+l+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),a+=\" } \"):a+=\" {} \",a),a=A.pop();!e.compositeRule&&u?e.async?a+=\" throw new ValidationError([\"+E+\"]); \":a+=\" validate.errors = [\"+E+\"]; return false; \":a+=\" var err = \"+E+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \"}else{a+=\" ) { \";var O=n;if(O)for(var C,w=-1,k=O.length-1;w<k;){C=O[w+=1];var I=e.util.getProperty(C),S=e.util.escapeQuotes(C),R=d+I;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(y,C,e.opts.jsonPointers)),a+=\" if ( \"+R+\" === undefined \",_&&(a+=\" || ! Object.prototype.hasOwnProperty.call(\"+d+\", '\"+e.util.escapeQuotes(C)+\"') \"),a+=\") {  var err =   \",!1!==e.createErrors?(a+=\" { keyword: 'dependencies' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(c)+\" , params: { property: '\"+e.util.escapeQuotes(N)+\"', missingProperty: '\"+S+\"', depsCount: \"+n.length+\", deps: '\"+e.util.escapeQuotes(1==n.length?n[0]:n.join(\", \"))+\"' } \",!1!==e.opts.messages&&(a+=\" , message: 'should have \",1==n.length?a+=\"property \"+e.util.escapeQuotes(n[0]):a+=\"properties \"+e.util.escapeQuotes(n.join(\", \")),a+=\" when property \"+e.util.escapeQuotes(N)+\" is present' \"),e.opts.verbose&&(a+=\" , schema: validate.schema\"+l+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+d+\" \"),a+=\" } \"):a+=\" {} \",a+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } \"}}a+=\" }   \",u&&(f+=\"}\",a+=\" else { \")}e.errorPath=y;var N,M=p.baseId;for(N in m){var P=m[N];(e.opts.strictKeywords?\"object\"==typeof P&&0<Object.keys(P).length||!1===P:e.util.schemaHasRules(P,e.RULES.all))&&(a+=\" \"+h+\" = true; if ( \"+d+e.util.getProperty(N)+\" !== undefined \",_&&(a+=\" && Object.prototype.hasOwnProperty.call(\"+d+\", '\"+e.util.escapeQuotes(N)+\"') \"),a+=\") { \",p.schema=P,p.schemaPath=l+e.util.getProperty(N),p.errSchemaPath=c+\"/\"+e.util.escapeFragment(N),a+=\"  \"+e.validate(p)+\" \",p.baseId=M,a+=\" }  \",u)&&(a+=\" if (\"+h+\") { \",f+=\"}\")}return u&&(a+=\"   \"+f+\" if (\"+t+\" == errors) {\"),a}),$_),enum:(J_||(J_=1,Y_=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,c=\"data\"+(i||\"\"),u=\"valid\"+a,d=e.opts.$data&&o&&o.$data,o=(d&&(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \"),\"i\"+a),i=\"schema\"+a,i=(d||(n+=\" var \"+i+\" = validate.schema\"+s+\";\"),n+=\"var \"+u+\";\",d&&(n+=\" if (schema\"+a+\" === undefined) \"+u+\" = true; else if (!Array.isArray(schema\"+a+\")) \"+u+\" = false; else {\"),n+=u+\" = false;for (var \"+o+\"=0; \"+o+\"<\"+i+\".length; \"+o+\"++) if (equal(\"+c+\", \"+i+\"[\"+o+\"])) { \"+u+\" = true; break; }\",d&&(n+=\"  }  \"),[]),o=(i.push(n+=\" if (!\"+u+\") {   \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'enum' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { allowedValues: schema\"+a+\" } \",!1!==e.opts.messages&&(n+=\" , message: 'should be equal to one of the allowed values' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n),n=i.pop();return!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+o+\"]); \":n+=\" validate.errors = [\"+o+\"]; return false; \":n+=\" var err = \"+o+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" }\",l&&(n+=\" else { \"),n}),Y_),format:(Z_||(Z_=1,Q_=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,c=\"data\"+(i||\"\");if(!1===e.opts.format)l&&(n+=\" if (true) { \");else{var u,d=e.opts.$data&&o&&o.$data,i=d?(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \",\"schema\"+a):o,p=e.opts.unknownFormats,f=Array.isArray(p);if(d)n+=\" var \"+(u=\"format\"+a)+\" = formats[\"+i+\"]; var \"+(h=\"isObject\"+a)+\" = typeof \"+u+\" == 'object' && !(\"+u+\" instanceof RegExp) && \"+u+\".validate; var \"+(g=\"formatType\"+a)+\" = \"+h+\" && \"+u+\".type || 'string'; if (\"+h+\") { \",e.async&&(n+=\" var async\"+a+\" = \"+u+\".async; \"),n+=\" \"+u+\" = \"+u+\".validate; } if (  \",d&&(n+=\" (\"+i+\" !== undefined && typeof \"+i+\" != 'string') || \"),n+=\" (\",\"ignore\"!=p&&(n+=\" (\"+i+\" && !\"+u+\" \",f&&(n+=\" && self._opts.unknownFormats.indexOf(\"+i+\") == -1 \"),n+=\") || \"),n+=\" (\"+u+\" && \"+g+\" == '\"+r+\"' && !(typeof \"+u+\" == 'function' ? \",e.async?n+=\" (async\"+a+\" ? await \"+u+\"(\"+c+\") : \"+u+\"(\"+c+\")) \":n+=\" \"+u+\"(\"+c+\") \",n+=\" : \"+u+\".test(\"+c+\"))))) {\";else{if(!(u=e.formats[o])){if(\"ignore\"==p)return e.logger.warn('unknown format \"'+o+'\" ignored in schema at path \"'+e.errSchemaPath+'\"'),l&&(n+=\" if (true) { \"),n;if(f&&0<=p.indexOf(o))return l&&(n+=\" if (true) { \"),n;throw new Error('unknown format \"'+o+'\" is used in schema at path \"'+e.errSchemaPath+'\"')}var h,m,g=(h=\"object\"==typeof u&&!(u instanceof RegExp)&&u.validate)&&u.type||\"string\";if(h&&(m=!0===u.async,u=u.validate),g!=r)return l&&(n+=\" if (true) { \"),n;if(m){if(!e.async)throw new Error(\"async format in sync schema\");n+=\" if (!(await \"+(_=\"formats\"+e.util.getProperty(o)+\".validate\")+\"(\"+c+\"))) { \"}else{n+=\" if (! \";var _=\"formats\"+e.util.getProperty(o);h&&(_+=\".validate\"),n=n+(\"function\"==typeof u?\" \"+_+\"(\"+c+\") \":\" \"+_+\".test(\"+c+\") \")+\") { \"}}a=[],f=(a.push(n),n=\"\",!1!==e.createErrors?(n=(n+=\" { keyword: 'format' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { format:  \")+(d?\"\"+i:\"\"+e.util.toQuotedString(o))+\"  } \",!1!==e.opts.messages&&(n=(n+=\" , message: 'should match format \\\"\")+(d?\"' + \"+i+\" + '\":\"\"+e.util.escapeQuotes(o))+\"\\\"' \"),e.opts.verbose&&(n=(n=(n+=\" , schema:  \")+(d?\"validate.schema\"+s:\"\"+e.util.toQuotedString(o)))+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n),n=a.pop();!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+f+\"]); \":n+=\" validate.errors = [\"+f+\"]; return false; \":n+=\" var err = \"+f+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" } \",l&&(n+=\" else { \")}return n}),Q_),if:(e0||(e0=1,X_=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,o=\"data\"+(o||\"\"),u=\"valid\"+i,d=\"errs__\"+i,p=e.util.copy(e),f=(p.level++,\"valid\"+p.level),h=e.schema.then,m=e.schema.else,h=void 0!==h&&(e.opts.strictKeywords?\"object\"==typeof h&&0<Object.keys(h).length||!1===h:e.util.schemaHasRules(h,e.RULES.all)),m=void 0!==m&&(e.opts.strictKeywords?\"object\"==typeof m&&0<Object.keys(m).length||!1===m:e.util.schemaHasRules(m,e.RULES.all)),g=p.baseId;return h||m?(p.createErrors=!1,p.schema=s,p.schemaPath=l,p.errSchemaPath=t,a+=\" var \"+d+\" = errors; var \"+u+\" = true;  \",s=e.compositeRule,e.compositeRule=p.compositeRule=!0,a+=\"  \"+e.validate(p)+\" \",p.baseId=g,p.createErrors=!0,a+=\"  errors = \"+d+\"; if (vErrors !== null) { if (\"+d+\") vErrors.length = \"+d+\"; else vErrors = null; }  \",e.compositeRule=p.compositeRule=s,h?(a+=\" if (\"+f+\") {  \",p.schema=e.schema.then,p.schemaPath=e.schemaPath+\".then\",p.errSchemaPath=e.errSchemaPath+\"/then\",a+=\"  \"+e.validate(p)+\" \",p.baseId=g,a+=\" \"+u+\" = \"+f+\"; \",h&&m?a+=\" var \"+(n=\"ifClause\"+i)+\" = 'then'; \":n=\"'then'\",a+=\" } \",m&&(a+=\" else { \")):a+=\" if (!\"+f+\") { \",m&&(p.schema=e.schema.else,p.schemaPath=e.schemaPath+\".else\",p.errSchemaPath=e.errSchemaPath+\"/else\",a+=\"  \"+e.validate(p)+\" \",p.baseId=g,a+=\" \"+u+\" = \"+f+\"; \",h&&m?a+=\" var \"+(n=\"ifClause\"+i)+\" = 'else'; \":n=\"'else'\",a+=\" } \"),a+=\" if (!\"+u+\") {   var err =   \",!1!==e.createErrors?(a+=\" { keyword: 'if' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { failingKeyword: \"+n+\" } \",!1!==e.opts.messages&&(a+=\" , message: 'should match \\\"' + \"+n+\" + '\\\" schema' \"),e.opts.verbose&&(a+=\" , schema: validate.schema\"+l+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+o+\" \"),a+=\" } \"):a+=\" {} \",a+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&c&&(e.async?a+=\" throw new ValidationError(vErrors); \":a+=\" validate.errors = vErrors; return false; \"),a+=\" }   \",c&&(a+=\" else { \")):c&&(a+=\" if (true) { \"),a}),X_),items:(r0||(r0=1,t0=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(i||\"\"),t=\"valid\"+a,i=\"errs__\"+a,d=e.util.copy(e),p=\"\",f=(d.level++,\"valid\"+d.level),a=\"i\"+a,h=d.dataLevel=e.dataLevel+1,m=\"data\"+h,g=e.baseId;if(n+=\"var \"+i+\" = errors;var \"+t+\";\",Array.isArray(o)){var _,y,T=e.schema.additionalItems,v=(!1===T&&(n+=\" \"+t+\" = \"+u+\".length <= \"+o.length+\"; \",_=l,l=e.errSchemaPath+\"/additionalItems\",(y=y||[]).push(n+=\"  if (!\"+t+\") {   \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'additionalItems' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { limit: \"+o.length+\" } \",!1!==e.opts.messages&&(n+=\" , message: 'should NOT have more than \"+o.length+\" items' \"),e.opts.verbose&&(n+=\" , schema: false , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),n+=\" } \"):n+=\" {} \",t=n,n=y.pop(),!e.compositeRule&&c?e.async?n+=\" throw new ValidationError([\"+t+\"]); \":n+=\" validate.errors = [\"+t+\"]; return false; \":n+=\" var err = \"+t+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" } \",l=_,c)&&(p+=\"}\",n+=\" else { \"),o);if(v)for(var b=-1,E=v.length-1;b<E;){var S,A,O=v[b+=1];(e.opts.strictKeywords?\"object\"==typeof O&&0<Object.keys(O).length||!1===O:e.util.schemaHasRules(O,e.RULES.all))&&(n+=\" \"+f+\" = true; if (\"+u+\".length > \"+b+\") { \",S=u+\"[\"+b+\"]\",d.schema=O,d.schemaPath=s+\"[\"+b+\"]\",d.errSchemaPath=l+\"/\"+b,d.errorPath=e.util.getPathExpr(e.errorPath,b,e.opts.jsonPointers,!0),d.dataPathArr[h]=b,A=e.validate(d),d.baseId=g,e.util.varOccurences(A,m)<2?n+=\" \"+e.util.varReplace(A,m,S)+\" \":n+=\" var \"+m+\" = \"+S+\"; \"+A+\" \",n+=\" }  \",c)&&(n+=\" if (\"+f+\") { \",p+=\"}\")}\"object\"==typeof T&&(e.opts.strictKeywords?\"object\"==typeof T&&0<Object.keys(T).length||!1===T:e.util.schemaHasRules(T,e.RULES.all))&&(d.schema=T,d.schemaPath=e.schemaPath+\".additionalItems\",d.errSchemaPath=e.errSchemaPath+\"/additionalItems\",n+=\" \"+f+\" = true; if (\"+u+\".length > \"+o.length+\") {  for (var \"+a+\" = \"+o.length+\"; \"+a+\" < \"+u+\".length; \"+a+\"++) { \",d.errorPath=e.util.getPathExpr(e.errorPath,a,e.opts.jsonPointers,!0),S=u+\"[\"+a+\"]\",d.dataPathArr[h]=a,A=e.validate(d),d.baseId=g,e.util.varOccurences(A,m)<2?n+=\" \"+e.util.varReplace(A,m,S)+\" \":n+=\" var \"+m+\" = \"+S+\"; \"+A+\" \",c&&(n+=\" if (!\"+f+\") break; \"),n+=\" } }  \",c)&&(n+=\" if (\"+f+\") { \",p+=\"}\")}else(e.opts.strictKeywords?\"object\"==typeof o&&0<Object.keys(o).length||!1===o:e.util.schemaHasRules(o,e.RULES.all))&&(d.schema=o,d.schemaPath=s,d.errSchemaPath=l,n+=\"  for (var \"+a+\" = 0; \"+a+\" < \"+u+\".length; \"+a+\"++) { \",d.errorPath=e.util.getPathExpr(e.errorPath,a,e.opts.jsonPointers,!0),S=u+\"[\"+a+\"]\",d.dataPathArr[h]=a,A=e.validate(d),d.baseId=g,e.util.varOccurences(A,m)<2?n+=\" \"+e.util.varReplace(A,m,S)+\" \":n+=\" var \"+m+\" = \"+S+\"; \"+A+\" \",c&&(n+=\" if (!\"+f+\") break; \"),n+=\" }\");return c&&(n+=\" \"+p+\" if (\"+i+\" == errors) {\"),n}),t0),maximum:B0(),minimum:B0(),maxItems:j0(),minItems:j0(),maxLength:H0(),minLength:H0(),maxProperties:G0(),minProperties:G0(),multipleOf:(p0||(p0=1,d0=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(i||\"\"),d=e.opts.$data&&o&&o.$data,i=d?(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \",\"schema\"+a):o;if(!d&&\"number\"!=typeof o)throw new Error(t+\" must be number\");n+=\"var division\"+a+\";if (\",d&&(n+=\" \"+i+\" !== undefined && ( typeof \"+i+\" != 'number' || \"),n+=\" (division\"+a+\" = \"+u+\" / \"+i+\", \",e.opts.multipleOfPrecision?n+=\" Math.abs(Math.round(division\"+a+\") - division\"+a+\") > 1e-\"+e.opts.multipleOfPrecision+\" \":n+=\" division\"+a+\" !== parseInt(division\"+a+\") \",n+=\" ) \",d&&(n+=\"  )  \");t=[],t.push(n+=\" ) {   \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'multipleOf' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { multipleOf: \"+i+\" } \",!1!==e.opts.messages&&(n=n+\" , message: 'should be multiple of \"+(d?\"' + \"+i:i+\"'\")),e.opts.verbose&&(n=(n+=\" , schema:  \")+(d?\"validate.schema\"+s:\"\"+o)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),n+=\" } \"):n+=\" {} \",a=n,n=t.pop();return!e.compositeRule&&c?e.async?n+=\" throw new ValidationError([\"+a+\"]); \":n+=\" validate.errors = [\"+a+\"]; return false; \":n+=\" var err = \"+a+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\"} \",c&&(n+=\" else { \"),n}),d0),not:(h0||(h0=1,f0=function(e,t,r){var n,a,i=\" \",o=e.level,s=e.dataLevel,l=e.schema[t],c=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,u=!e.opts.allErrors,s=\"data\"+(s||\"\"),o=\"errs__\"+o,d=e.util.copy(e),p=(d.level++,\"valid\"+d.level);return(e.opts.strictKeywords?\"object\"==typeof l&&0<Object.keys(l).length||!1===l:e.util.schemaHasRules(l,e.RULES.all))?(d.schema=l,d.schemaPath=c,d.errSchemaPath=t,i+=\" var \"+o+\" = errors;  \",l=e.compositeRule,e.compositeRule=d.compositeRule=!0,d.createErrors=!1,d.opts.allErrors&&(a=d.opts.allErrors,d.opts.allErrors=!1),i+=\" \"+e.validate(d)+\" \",d.createErrors=!0,a&&(d.opts.allErrors=a),e.compositeRule=d.compositeRule=l,(n=n||[]).push(i+=\" if (\"+p+\") {   \"),i=\"\",!1!==e.createErrors?(i+=\" { keyword: 'not' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT be valid' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+c+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+s+\" \"),i+=\" } \"):i+=\" {} \",a=i,i=n.pop(),!e.compositeRule&&u?e.async?i+=\" throw new ValidationError([\"+a+\"]); \":i+=\" validate.errors = [\"+a+\"]; return false; \":i+=\" var err = \"+a+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",i+=\" } else {  errors = \"+o+\"; if (vErrors !== null) { if (\"+o+\") vErrors.length = \"+o+\"; else vErrors = null; } \",e.opts.allErrors&&(i+=\" } \")):(i+=\"  var err =   \",!1!==e.createErrors?(i+=\" { keyword: 'not' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: {} \",!1!==e.opts.messages&&(i+=\" , message: 'should NOT be valid' \"),e.opts.verbose&&(i+=\" , schema: validate.schema\"+c+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+s+\" \"),i+=\" } \"):i+=\" {} \",i+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",u&&(i+=\" if (false) { \")),i}),f0),oneOf:(g0||(g0=1,m0=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,t=!e.opts.allErrors,i=\"data\"+(i||\"\"),c=\"valid\"+a,u=\"errs__\"+a,d=e.util.copy(e),p=\"\",f=(d.level++,\"valid\"+d.level),h=d.baseId,m=\"prevValid\"+a,g=\"passingSchemas\"+a,a=(n+=\"var \"+u+\" = errors , \"+m+\" = false , \"+c+\" = false , \"+g+\" = null; \",e.compositeRule),_=(e.compositeRule=d.compositeRule=!0,o);if(_)for(var y,T=-1,v=_.length-1;T<v;)y=_[T+=1],(e.opts.strictKeywords?\"object\"==typeof y&&0<Object.keys(y).length||!1===y:e.util.schemaHasRules(y,e.RULES.all))?(d.schema=y,d.schemaPath=s+\"[\"+T+\"]\",d.errSchemaPath=l+\"/\"+T,n+=\"  \"+e.validate(d)+\" \",d.baseId=h):n+=\" var \"+f+\" = true; \",T&&(n+=\" if (\"+f+\" && \"+m+\") { \"+c+\" = false; \"+g+\" = [\"+g+\", \"+T+\"]; } else { \",p+=\"}\"),n+=\" if (\"+f+\") { \"+c+\" = \"+m+\" = true; \"+g+\" = \"+T+\"; }\";return e.compositeRule=d.compositeRule=a,n+=p+\"if (!\"+c+\") {   var err =   \",!1!==e.createErrors?(n+=\" { keyword: 'oneOf' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { passingSchemas: \"+g+\" } \",!1!==e.opts.messages&&(n+=\" , message: 'should match exactly one schema in oneOf' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+i+\" \"),n+=\" } \"):n+=\" {} \",n+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&t&&(e.async?n+=\" throw new ValidationError(vErrors); \":n+=\" validate.errors = vErrors; return false; \"),n+=\"} else {  errors = \"+u+\"; if (vErrors !== null) { if (\"+u+\") vErrors.length = \"+u+\"; else vErrors = null; }\",e.opts.allErrors&&(n+=\" } \"),n}),m0),pattern:(y0||(y0=1,_0=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,c=\"data\"+(i||\"\"),u=e.opts.$data&&o&&o.$data,i=u?(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \",\"schema\"+a):o,a=u?\"(new RegExp(\"+i+\"))\":e.usePattern(o),d=(n+=\"if ( \",u&&(n+=\" (\"+i+\" !== undefined && typeof \"+i+\" != 'string') || \"),[]),a=(d.push(n+=\" !\"+a+\".test(\"+c+\") ) {   \"),n=\"\",!1!==e.createErrors?(n=(n+=\" { keyword: 'pattern' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { pattern:  \")+(u?\"\"+i:\"\"+e.util.toQuotedString(o))+\"  } \",!1!==e.opts.messages&&(n=(n+=\" , message: 'should match pattern \\\"\")+(u?\"' + \"+i+\" + '\":\"\"+e.util.escapeQuotes(o))+\"\\\"' \"),e.opts.verbose&&(n=(n=(n+=\" , schema:  \")+(u?\"validate.schema\"+s:\"\"+e.util.toQuotedString(o)))+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n),n=d.pop();return!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+a+\"]); \":n+=\" validate.errors = [\"+a+\"]; return false; \":n+=\" var err = \"+a+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\"} \",l&&(n+=\" else { \"),n}),_0),properties:(v0||(v0=1,T0=function(e,t,L){var r,n=\" \",a=e.level,i=e.dataLevel,F=e.schema[t],o=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+\"/\"+t,l=!e.opts.allErrors,c=\"data\"+(i||\"\"),t=\"errs__\"+a,u=e.util.copy(e),d=\"\",p=(u.level++,\"valid\"+u.level),f=\"key\"+a,h=\"idx\"+a,m=u.dataLevel=e.dataLevel+1,g=\"data\"+m,_=\"dataProperties\"+a,i=Object.keys(F||{}).filter(G),U=e.schema.patternProperties||{},y=Object.keys(U).filter(G),T=e.schema.additionalProperties,B=i.length||y.length,j=!1===T,H=\"object\"==typeof T&&Object.keys(T).length,v=e.opts.removeAdditional,b=j||H||v,E=e.opts.ownProperties,S=e.baseId,A=e.schema.required;function G(e){return\"__proto__\"!==e}if(A&&(!e.opts.$data||!A.$data)&&A.length<e.opts.loopRequired&&(r=e.util.toHash(A)),n+=\"var \"+t+\" = errors;var \"+p+\" = true;\",E&&(n+=\" var \"+_+\" = undefined;\"),b){if(n+=E?\" \"+_+\" = \"+_+\" || Object.keys(\"+c+\"); for (var \"+h+\"=0; \"+h+\"<\"+_+\".length; \"+h+\"++) { var \"+f+\" = \"+_+\"[\"+h+\"]; \":\" for (var \"+f+\" in \"+c+\") { \",B){if(n+=\" var isAdditional\"+a+\" = !(false \",i.length)if(8<i.length)n+=\" || validate.schema\"+o+\".hasOwnProperty(\"+f+\") \";else{var V=i;if(V)for(var q=-1,z=V.length-1;q<z;)O=V[q+=1],n+=\" || \"+f+\" == \"+e.util.toQuotedString(O)+\" \"}if(y.length){var W=y;if(W)for(var $=-1,K=W.length-1;$<K;)P=W[$+=1],n+=\" || \"+e.usePattern(P)+\".test(\"+f+\") \"}n+=\" ); if (isAdditional\"+a+\") { \"}\"all\"==v?n+=\" delete \"+c+\"[\"+f+\"]; \":(w=e.errorPath,A=\"' + \"+f+\" + '\",e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers)),j?v?n+=\" delete \"+c+\"[\"+f+\"]; \":(k=s,s=e.errSchemaPath+\"/additionalProperties\",(R=R||[]).push(n+=\" \"+p+\" = false; \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'additionalProperties' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(s)+\" , params: { additionalProperty: '\"+A+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is an invalid additional property\":n+=\"should NOT have additional properties\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: false , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",N=n,n=R.pop(),!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+N+\"]); \":n+=\" validate.errors = [\"+N+\"]; return false; \":n+=\" var err = \"+N+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",s=k,l&&(n+=\" break; \")):H&&(\"failing\"==v?(n+=\" var \"+t+\" = errors;  \",b=e.compositeRule,e.compositeRule=u.compositeRule=!0,u.schema=T,u.schemaPath=e.schemaPath+\".additionalProperties\",u.errSchemaPath=e.errSchemaPath+\"/additionalProperties\",u.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers),D=c+\"[\"+f+\"]\",u.dataPathArr[m]=f,x=e.validate(u),u.baseId=S,e.util.varOccurences(x,g)<2?n+=\" \"+e.util.varReplace(x,g,D)+\" \":n+=\" var \"+g+\" = \"+D+\"; \"+x+\" \",n+=\" if (!\"+p+\") { errors = \"+t+\"; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete \"+c+\"[\"+f+\"]; }  \",e.compositeRule=u.compositeRule=b):(u.schema=T,u.schemaPath=e.schemaPath+\".additionalProperties\",u.errSchemaPath=e.errSchemaPath+\"/additionalProperties\",u.errorPath=e.opts._errorDataPathProperty?e.errorPath:e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers),D=c+\"[\"+f+\"]\",u.dataPathArr[m]=f,x=e.validate(u),u.baseId=S,e.util.varOccurences(x,g)<2?n+=\" \"+e.util.varReplace(x,g,D)+\" \":n+=\" var \"+g+\" = \"+D+\"; \"+x+\" \",l&&(n+=\" if (!\"+p+\") break; \"))),e.errorPath=w),B&&(n+=\" } \"),n+=\" }  \",l&&(n+=\" if (\"+p+\") { \",d+=\"}\")}var Y=e.opts.useDefaults&&!e.compositeRule;if(i.length){var J=i;if(J)for(var O,Q=-1,Z=J.length-1;Q<Z;){var X,C,w,k,I,R,N,M=F[O=J[Q+=1]];(e.opts.strictKeywords?\"object\"==typeof M&&0<Object.keys(M).length||!1===M:e.util.schemaHasRules(M,e.RULES.all))&&(D=c+(I=e.util.getProperty(O)),X=Y&&void 0!==M.default,u.schema=M,u.schemaPath=o+I,u.errSchemaPath=s+\"/\"+e.util.escapeFragment(O),u.errorPath=e.util.getPath(e.errorPath,O,e.opts.jsonPointers),u.dataPathArr[m]=e.util.toQuotedString(O),x=e.validate(u),u.baseId=S,e.util.varOccurences(x,g)<2?(x=e.util.varReplace(x,g,D),C=D):n+=\" var \"+(C=g)+\" = \"+D+\"; \",X?n+=\" \"+x+\" \":(r&&r[O]?(n+=\" if ( \"+C+\" === undefined \",E&&(n+=\" || ! Object.prototype.hasOwnProperty.call(\"+c+\", '\"+e.util.escapeQuotes(O)+\"') \"),n+=\") { \"+p+\" = false; \",w=e.errorPath,k=s,I=e.util.escapeQuotes(O),e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(w,O,e.opts.jsonPointers)),s=e.errSchemaPath+\"/required\",(R=R||[]).push(n),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(s)+\" , params: { missingProperty: '\"+I+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+I+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+o+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",N=n,n=R.pop(),!e.compositeRule&&l?e.async?n+=\" throw new ValidationError([\"+N+\"]); \":n+=\" validate.errors = [\"+N+\"]; return false; \":n+=\" var err = \"+N+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",s=k,e.errorPath=w,n+=\" } else { \"):l?(n+=\" if ( \"+C+\" === undefined \",E&&(n+=\" || ! Object.prototype.hasOwnProperty.call(\"+c+\", '\"+e.util.escapeQuotes(O)+\"') \"),n+=\") { \"+p+\" = true; } else { \"):(n+=\" if (\"+C+\" !== undefined \",E&&(n+=\" &&   Object.prototype.hasOwnProperty.call(\"+c+\", '\"+e.util.escapeQuotes(O)+\"') \"),n+=\" ) { \"),n+=\" \"+x+\" } \")),l&&(n+=\" if (\"+p+\") { \",d+=\"}\")}}if(y.length){var ee=y;if(ee)for(var P,te=-1,re=ee.length-1;te<re;){var D,x,M=U[P=ee[te+=1]];(e.opts.strictKeywords?\"object\"==typeof M&&0<Object.keys(M).length||!1===M:e.util.schemaHasRules(M,e.RULES.all))&&(u.schema=M,u.schemaPath=e.schemaPath+\".patternProperties\"+e.util.getProperty(P),u.errSchemaPath=e.errSchemaPath+\"/patternProperties/\"+e.util.escapeFragment(P),n=(n+=E?\" \"+_+\" = \"+_+\" || Object.keys(\"+c+\"); for (var \"+h+\"=0; \"+h+\"<\"+_+\".length; \"+h+\"++) { var \"+f+\" = \"+_+\"[\"+h+\"]; \":\" for (var \"+f+\" in \"+c+\") { \")+\" if (\"+e.usePattern(P)+\".test(\"+f+\")) { \",u.errorPath=e.util.getPathExpr(e.errorPath,f,e.opts.jsonPointers),D=c+\"[\"+f+\"]\",u.dataPathArr[m]=f,x=e.validate(u),u.baseId=S,e.util.varOccurences(x,g)<2?n+=\" \"+e.util.varReplace(x,g,D)+\" \":n+=\" var \"+g+\" = \"+D+\"; \"+x+\" \",l&&(n+=\" if (!\"+p+\") break; \"),n+=\" } \",l&&(n+=\" else \"+p+\" = true; \"),n+=\" }  \",l)&&(n+=\" if (\"+p+\") { \",d+=\"}\")}}return l&&(n+=\" \"+d+\" if (\"+t+\" == errors) {\"),n}),T0),propertyNames:(E0||(E0=1,b0=function(e,t,r){var n,a,i,o,s,l,c,u=\" \",d=e.level,p=e.dataLevel,f=e.schema[t],h=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,m=!e.opts.allErrors,p=\"data\"+(p||\"\"),g=\"errs__\"+d,_=e.util.copy(e),y=(_.level++,\"valid\"+_.level);return u+=\"var \"+g+\" = errors;\",(e.opts.strictKeywords?\"object\"==typeof f&&0<Object.keys(f).length||!1===f:e.util.schemaHasRules(f,e.RULES.all))&&(_.schema=f,_.schemaPath=h,_.errSchemaPath=t,f=\"idx\"+d,a=\"i\"+d,i=\"' + \"+(n=\"key\"+d)+\" + '\",o=\"data\"+(_.dataLevel=e.dataLevel+1),c=\"dataProperties\"+d,l=e.opts.ownProperties,s=e.baseId,l&&(u+=\" var \"+c+\" = undefined; \"),u=u+(l?\" \"+c+\" = \"+c+\" || Object.keys(\"+p+\"); for (var \"+f+\"=0; \"+f+\"<\"+c+\".length; \"+f+\"++) { var \"+n+\" = \"+c+\"[\"+f+\"]; \":\" for (var \"+n+\" in \"+p+\") { \")+\" var startErrs\"+d+\" = errors; \",l=n,c=e.compositeRule,e.compositeRule=_.compositeRule=!0,f=e.validate(_),_.baseId=s,e.util.varOccurences(f,o)<2?u+=\" \"+e.util.varReplace(f,o,l)+\" \":u+=\" var \"+o+\" = \"+l+\"; \"+f+\" \",e.compositeRule=_.compositeRule=c,u+=\" if (!\"+y+\") { for (var \"+a+\"=startErrs\"+d+\"; \"+a+\"<errors; \"+a+\"++) { vErrors[\"+a+\"].propertyName = \"+n+\"; }   var err =   \",!1!==e.createErrors?(u+=\" { keyword: 'propertyNames' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { propertyName: '\"+i+\"' } \",!1!==e.opts.messages&&(u+=\" , message: 'property name \\\\'\"+i+\"\\\\' is invalid' \"),e.opts.verbose&&(u+=\" , schema: validate.schema\"+h+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+p+\" \"),u+=\" } \"):u+=\" {} \",u+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&m&&(e.async?u+=\" throw new ValidationError(vErrors); \":u+=\" validate.errors = vErrors; return false; \"),m&&(u+=\" break; \"),u+=\" } }\"),m&&(u+=\"  if (\"+g+\" == errors) {\"),u}),b0),required:(A0||(A0=1,S0=function(e,t,r){var n=\" \",a=e.level,i=e.dataLevel,o=e.schema[t],s=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+\"/\"+t,t=!e.opts.allErrors,c=\"data\"+(i||\"\"),u=\"valid\"+a,d=e.opts.$data&&o&&o.$data,i=(d&&(n+=\" var schema\"+a+\" = \"+e.util.getData(o.$data,i,e.dataPathArr)+\"; \"),\"schema\"+a);if(!d)if(o.length<e.opts.loopRequired&&e.schema.properties&&Object.keys(e.schema.properties).length){var p=[],f=o;if(f)for(var h=-1,m=f.length-1;h<m;){var g=f[h+=1],_=e.schema.properties[g];_&&(e.opts.strictKeywords?\"object\"==typeof _&&0<Object.keys(_).length||!1===_:e.util.schemaHasRules(_,e.RULES.all))||(p[p.length]=g)}}else p=o;if(d||p.length){var y=e.errorPath,o=d||p.length>=e.opts.loopRequired,T=e.opts.ownProperties;if(t){if(n+=\" var missing\"+a+\"; \",o){d||(n+=\" var \"+i+\" = validate.schema\"+s+\"; \");var v=\"' + \"+(C=\"schema\"+a+\"[\"+(S=\"i\"+a)+\"]\")+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,C,e.opts.jsonPointers)),n+=\" var \"+u+\" = true; \",d&&(n+=\" if (schema\"+a+\" === undefined) \"+u+\" = true; else if (!Array.isArray(schema\"+a+\")) \"+u+\" = false; else {\"),n+=\" for (var \"+S+\" = 0; \"+S+\" < \"+i+\".length; \"+S+\"++) { \"+u+\" = \"+c+\"[\"+i+\"[\"+S+\"]] !== undefined \",T&&(n+=\" &&   Object.prototype.hasOwnProperty.call(\"+c+\", \"+i+\"[\"+S+\"]) \"),n+=\"; if (!\"+u+\") break; } \",d&&(n+=\"  }  \");(O=O||[]).push(n+=\"  if (!\"+u+\") {   \"),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+v+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+v+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \";var b=n,n=O.pop()}else{n+=\" if ( \";var E=p;if(E)for(var S=-1,A=E.length-1;S<A;)k=E[S+=1],S&&(n+=\" || \"),n+=\" ( ( \"+(M=c+(N=e.util.getProperty(k)))+\" === undefined \",T&&(n+=\" || ! Object.prototype.hasOwnProperty.call(\"+c+\", '\"+e.util.escapeQuotes(k)+\"') \"),n+=\") && (missing\"+a+\" = \"+e.util.toQuotedString(e.opts.jsonPointers?k:N)+\") ) \";n+=\") {  \";v=\"' + \"+(C=\"missing\"+a)+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(y,C,!0):y+\" + \"+C);(O=O||[]).push(n),n=\"\",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+v+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+v+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \";var O,b=n;n=O.pop()}!e.compositeRule&&t?e.async?n+=\" throw new ValidationError([\"+b+\"]); \":n+=\" validate.errors = [\"+b+\"]; return false; \":n+=\" var err = \"+b+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",n+=\" } else { \"}else if(o){d||(n+=\" var \"+i+\" = validate.schema\"+s+\"; \");var C,v=\"' + \"+(C=\"schema\"+a+\"[\"+(S=\"i\"+a)+\"]\")+\" + '\";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(y,C,e.opts.jsonPointers)),d&&(n+=\" if (\"+i+\" && !Array.isArray(\"+i+\")) {  var err =   \",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+v+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+v+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (\"+i+\" !== undefined) { \"),n+=\" for (var \"+S+\" = 0; \"+S+\" < \"+i+\".length; \"+S+\"++) { if (\"+c+\"[\"+i+\"[\"+S+\"]] === undefined \",T&&(n+=\" || ! Object.prototype.hasOwnProperty.call(\"+c+\", \"+i+\"[\"+S+\"]) \"),n+=\") {  var err =   \",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+v+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+v+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } \",d&&(n+=\"  }  \")}else{var w=p;if(w)for(var k,I=-1,R=w.length-1;I<R;){k=w[I+=1];var N=e.util.getProperty(k),v=e.util.escapeQuotes(k),M=c+N;e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(y,k,e.opts.jsonPointers)),n+=\" if ( \"+M+\" === undefined \",T&&(n+=\" || ! Object.prototype.hasOwnProperty.call(\"+c+\", '\"+e.util.escapeQuotes(k)+\"') \"),n+=\") {  var err =   \",!1!==e.createErrors?(n+=\" { keyword: 'required' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(l)+\" , params: { missingProperty: '\"+v+\"' } \",!1!==e.opts.messages&&(n+=\" , message: '\",e.opts._errorDataPathProperty?n+=\"is a required property\":n+=\"should have required property \\\\'\"+v+\"\\\\'\",n+=\"' \"),e.opts.verbose&&(n+=\" , schema: validate.schema\"+s+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+c+\" \"),n+=\" } \"):n+=\" {} \",n+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } \"}}e.errorPath=y}else t&&(n+=\" if (true) {\");return n}),S0),uniqueItems:(C0||(C0=1,O0=function(e,t,r){var n,a=\" \",i=e.level,o=e.dataLevel,s=e.schema[t],l=e.schemaPath+e.util.getProperty(t),t=e.errSchemaPath+\"/\"+t,c=!e.opts.allErrors,u=\"data\"+(o||\"\"),d=\"valid\"+i,p=e.opts.$data&&s&&s.$data,o=p?(a+=\" var schema\"+i+\" = \"+e.util.getData(s.$data,o,e.dataPathArr)+\"; \",\"schema\"+i):s;return(s||p)&&!1!==e.opts.uniqueItems?(p&&(a+=\" var \"+d+\"; if (\"+o+\" === false || \"+o+\" === undefined) \"+d+\" = true; else if (typeof \"+o+\" != 'boolean') \"+d+\" = false; else { \"),a+=\" var i = \"+u+\".length , \"+d+\" = true , j; if (i > 1) { \",i=e.schema.items&&e.schema.items.type,o=Array.isArray(i),!i||\"object\"==i||\"array\"==i||o&&(0<=i.indexOf(\"object\")||0<=i.indexOf(\"array\"))?a+=\" outer: for (;i--;) { for (j = i; j--;) { if (equal(\"+u+\"[i], \"+u+\"[j])) { \"+d+\" = false; break outer; } } } \":(a=(a+=\" var itemIndices = {}, item; for (;i--;) { var item = \"+u+\"[i]; \")+\" if (\"+e.util[\"checkDataType\"+(o?\"s\":\"\")](i,\"item\",e.opts.strictNumbers,!0)+\") continue; \",o&&(a+=\" if (typeof item == 'string') item = '\\\"' + item; \"),a+=\" if (typeof itemIndices[item] == 'number') { \"+d+\" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } \"),a+=\" } \",p&&(a+=\"  }  \"),(n=n||[]).push(a+=\" if (!\"+d+\") {   \"),a=\"\",!1!==e.createErrors?(a+=\" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(t)+\" , params: { i: i, j: j } \",!1!==e.opts.messages&&(a+=\" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' \"),e.opts.verbose&&(a=(a+=\" , schema:  \")+(p?\"validate.schema\"+l:\"\"+s)+\"         , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+u+\" \"),a+=\" } \"):a+=\" {} \",i=a,a=n.pop(),!e.compositeRule&&c?e.async?a+=\" throw new ValidationError([\"+i+\"]); \":a+=\" validate.errors = [\"+i+\"]; return false; \":a+=\" var err = \"+i+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",a+=\" } \",c&&(a+=\" else { \")):c&&(a+=\" if (true) { \"),a}),O0),validate:R_()}),w0}function q0(){var n;return D0||(D0=1,n=k_().MissingRef,P0=a),P0;function a(t,o,r){var s=this;if(\"function\"!=typeof this._opts.loadSchema)throw new Error(\"options.loadSchema should be a function\");\"function\"==typeof o&&(r=o,o=void 0);var e=l(t).then(function(){var e=s._addSchema(t,void 0,o);return e.validate||function a(i){try{return s._compile(i)}catch(e){if(e instanceof n)return t(e);throw e}function t(e){var t=e.missingSchema;if(n(t))throw new Error(\"Schema \"+t+\" is loaded but \"+e.missingRef+\" cannot be resolved\");e=s._loadingSchemas[t];return e||(e=s._loadingSchemas[t]=s._opts.loadSchema(t)).then(r,r),e.then(function(e){if(!n(t))return l(e).then(function(){n(t)||s.addSchema(e,t,void 0,o)})}).then(function(){return a(i)});function r(){delete s._loadingSchemas[t]}function n(e){return s._refs[e]||s._schemas[e]}}}(e)});return r&&e.then(function(e){r(null,e)},r),e;function l(e){e=e.$schema;return e&&!s.getSchema(e)?a.call(s,{$ref:e},!0):Promise.resolve()}}}var z0,W0,$0,K0,Y0={$schema:\"http://json-schema.org/draft-07/schema#\",$id:\"http://json-schema.org/draft-07/schema#\",title:\"Core schema meta-schema\",definitions:{schemaArray:{type:\"array\",minItems:1,items:{$ref:\"#\"}},nonNegativeInteger:{type:\"integer\",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:\"#/definitions/nonNegativeInteger\"},{default:0}]},simpleTypes:{enum:[\"array\",\"boolean\",\"integer\",\"null\",\"number\",\"object\",\"string\"]},stringArray:{type:\"array\",items:{type:\"string\"},uniqueItems:!0,default:[]}},type:[\"object\",\"boolean\"],properties:{$id:{type:\"string\",format:\"uri-reference\"},$schema:{type:\"string\",format:\"uri\"},$ref:{type:\"string\",format:\"uri-reference\"},$comment:{type:\"string\"},title:{type:\"string\"},description:{type:\"string\"},default:!0,readOnly:{type:\"boolean\",default:!1},examples:{type:\"array\",items:!0},multipleOf:{type:\"number\",exclusiveMinimum:0},maximum:{type:\"number\"},exclusiveMaximum:{type:\"number\"},minimum:{type:\"number\"},exclusiveMinimum:{type:\"number\"},maxLength:{$ref:\"#/definitions/nonNegativeInteger\"},minLength:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},pattern:{type:\"string\",format:\"regex\"},additionalItems:{$ref:\"#\"},items:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/schemaArray\"}],default:!0},maxItems:{$ref:\"#/definitions/nonNegativeInteger\"},minItems:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},uniqueItems:{type:\"boolean\",default:!1},contains:{$ref:\"#\"},maxProperties:{$ref:\"#/definitions/nonNegativeInteger\"},minProperties:{$ref:\"#/definitions/nonNegativeIntegerDefault0\"},required:{$ref:\"#/definitions/stringArray\"},additionalProperties:{$ref:\"#\"},definitions:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},properties:{type:\"object\",additionalProperties:{$ref:\"#\"},default:{}},patternProperties:{type:\"object\",additionalProperties:{$ref:\"#\"},propertyNames:{format:\"regex\"},default:{}},dependencies:{type:\"object\",additionalProperties:{anyOf:[{$ref:\"#\"},{$ref:\"#/definitions/stringArray\"}]}},propertyNames:{$ref:\"#\"},const:!0,enum:{type:\"array\",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:\"#/definitions/simpleTypes\"},{type:\"array\",items:{$ref:\"#/definitions/simpleTypes\"},minItems:1,uniqueItems:!0}]},format:{type:\"string\"},contentMediaType:{type:\"string\"},contentEncoding:{type:\"string\"},if:{$ref:\"#\"},then:{$ref:\"#\"},else:{$ref:\"#\"},allOf:{$ref:\"#/definitions/schemaArray\"},anyOf:{$ref:\"#/definitions/schemaArray\"},oneOf:{$ref:\"#/definitions/schemaArray\"},not:{$ref:\"#\"}},default:!0};function J0(){var s,l,n;return K0||(K0=1,s=/^[a-z_$][a-z0-9_$-]*$/i,L0||(L0=1,x0=function(e,t,r){var n,a,i,o=\" \",s=e.level,l=e.dataLevel,c=e.schema[t],u=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+\"/\"+t,p=!e.opts.allErrors,f=\"data\"+(l||\"\"),h=\"valid\"+s,m=\"errs__\"+s,g=e.opts.$data&&c&&c.$data,_=g?(o+=\" var schema\"+s+\" = \"+e.util.getData(c.$data,l,e.dataPathArr)+\"; \",\"schema\"+s):c,y=\"definition\"+s,T=this.definition,v=\"\";if(g&&T.$data){var b=\"keywordValidate\"+s,E=T.validateSchema;o+=\" var \"+y+\" = RULES.custom['\"+t+\"'].definition; var \"+b+\" = \"+y+\".validate;\"}else{if(!(C=e.useCustomRule(this,c,e.schema,e)))return;_=\"validate.schema\"+u,b=C.code,n=T.compile,a=T.inline,i=T.macro}var S,A,O,C,w,t=b+\".errors\",c=\"i\"+s,k=\"ruleErr\"+s,I=T.async;if(I&&!e.async)throw new Error(\"async keyword in sync schema\");return a||i||(o+=t+\" = null;\"),o+=\"var \"+m+\" = errors;var \"+h+\";\",g&&T.$data&&(v+=\"}\",o+=\" if (\"+_+\" === undefined) { \"+h+\" = true; } else { \",E)&&(v+=\"}\",o+=\" \"+h+\" = \"+y+\".validateSchema(\"+_+\"); if (\"+h+\") { \"),a?T.statements?o+=\" \"+C.validate+\" \":o+=\" \"+h+\" = \"+C.validate+\"; \":i?(v=\"\",(g=e.util.copy(e)).level++,S=\"valid\"+g.level,g.schema=C.validate,g.schemaPath=\"\",E=e.compositeRule,e.compositeRule=g.compositeRule=!0,y=e.validate(g).replace(/validate\\.schema/g,b),e.compositeRule=g.compositeRule=E,o+=\" \"+y):((w=w||[]).push(o),o=\"\",o+=\"  \"+b+\".call( \",e.opts.passContext?o+=\"this\":o+=\"self\",n||!1===T.schema?o+=\" , \"+f+\" \":o+=\" , \"+_+\" , \"+f+\" , validate.schema\"+e.schemaPath+\" \",o+=\" , (dataPath || '')\",'\"\"'!=e.errorPath&&(o+=\" + \"+e.errorPath),C=o+=\" , \"+(A=l?\"data\"+(l-1||\"\"):\"parentData\")+\" , \"+(O=l?e.dataPathArr[l]:\"parentDataProperty\")+\" , rootData )  \",o=w.pop(),!1===T.errors?(o+=\" \"+h+\" = \",I&&(o+=\"await \"),o+=C+\"; \"):o+=I?\" var \"+(t=\"customErrors\"+s)+\" = null; try { \"+h+\" = await \"+C+\"; } catch (e) { \"+h+\" = false; if (e instanceof ValidationError) \"+t+\" = e.errors; else throw e; } \":\" \"+t+\" = null; \"+h+\" = \"+C+\"; \"),T.modifying&&(o+=\" if (\"+A+\") \"+f+\" = \"+A+\"[\"+O+\"];\"),o+=\"\"+v,T.valid?p&&(o+=\" if (true) { \"):(o+=\" if ( \",void 0===T.valid?o=o+\" !\"+(i?\"\"+S:h):o+=\" \"+!T.valid+\" \",g=this.keyword,(w=w||[]).push(o+=\") { \"),(w=w||[]).push(o=\"\"),o=\"\",!1!==e.createErrors?(o+=\" { keyword: '\"+(g||\"custom\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(d)+\" , params: { keyword: '\"+this.keyword+\"' } \",!1!==e.opts.messages&&(o+=\" , message: 'should pass \\\"\"+this.keyword+\"\\\" keyword validation' \"),e.opts.verbose&&(o+=\" , schema: validate.schema\"+u+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+f+\" \"),o+=\" } \"):o+=\" {} \",E=o,o=w.pop(),!e.compositeRule&&p?e.async?o+=\" throw new ValidationError([\"+E+\"]); \":o+=\" validate.errors = [\"+E+\"]; return false; \":o+=\" var err = \"+E+\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",y=o,o=w.pop(),a?T.errors?\"full\"!=T.errors&&(o+=\"  for (var \"+c+\"=\"+m+\"; \"+c+\"<errors; \"+c+\"++) { var \"+k+\" = vErrors[\"+c+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\"; if (\"+k+\".schemaPath === undefined) { \"+k+'.schemaPath = \"'+d+'\"; } ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+_+\"; \"+k+\".data = \"+f+\"; \"),o+=\" } \"):!1===T.errors?o+=\" \"+y+\" \":(o+=\" if (\"+m+\" == errors) { \"+y+\" } else {  for (var \"+c+\"=\"+m+\"; \"+c+\"<errors; \"+c+\"++) { var \"+k+\" = vErrors[\"+c+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\"; if (\"+k+\".schemaPath === undefined) { \"+k+'.schemaPath = \"'+d+'\"; } ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+_+\"; \"+k+\".data = \"+f+\"; \"),o+=\" } } \"):i?(o+=\"   var err =   \",!1!==e.createErrors?(o+=\" { keyword: '\"+(g||\"custom\")+\"' , dataPath: (dataPath || '') + \"+e.errorPath+\" , schemaPath: \"+e.util.toQuotedString(d)+\" , params: { keyword: '\"+this.keyword+\"' } \",!1!==e.opts.messages&&(o+=\" , message: 'should pass \\\"\"+this.keyword+\"\\\" keyword validation' \"),e.opts.verbose&&(o+=\" , schema: validate.schema\"+u+\" , parentSchema: validate.schema\"+e.schemaPath+\" , data: \"+f+\" \"),o+=\" } \"):o+=\" {} \",o+=\";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; \",!e.compositeRule&&p&&(e.async?o+=\" throw new ValidationError(vErrors); \":o+=\" validate.errors = vErrors; return false; \")):!1===T.errors?o+=\" \"+y+\" \":(o+=\" if (Array.isArray(\"+t+\")) { if (vErrors === null) vErrors = \"+t+\"; else vErrors = vErrors.concat(\"+t+\"); errors = vErrors.length;  for (var \"+c+\"=\"+m+\"; \"+c+\"<errors; \"+c+\"++) { var \"+k+\" = vErrors[\"+c+\"]; if (\"+k+\".dataPath === undefined) \"+k+\".dataPath = (dataPath || '') + \"+e.errorPath+\";  \"+k+'.schemaPath = \"'+d+'\";  ',e.opts.verbose&&(o+=\" \"+k+\".schema = \"+_+\"; \"+k+\".data = \"+f+\"; \"),o+=\" } } else { \"+y+\" } \"),o+=\" } \",p&&(o+=\" else { \")),o}),l=x0,W0||(W0=1,z0={$id:\"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js\",definitions:{simpleTypes:Y0.definitions.simpleTypes},type:\"object\",dependencies:{schema:[\"validate\"],$data:[\"validate\"],statements:[\"inline\"],valid:{not:{required:[\"macro\"]}}},properties:{type:Y0.properties.type,schema:{type:\"boolean\"},statements:{type:\"boolean\"},dependencies:{type:\"array\",items:{type:\"string\"}},metaSchema:{type:\"object\"},modifying:{type:\"boolean\"},valid:{type:\"boolean\"},$data:{type:\"boolean\"},async:{type:\"boolean\"},errors:{anyOf:[{type:\"boolean\"},{const:\"full\"}]}}}),n=z0,$0={add:function(e,t){var o=this.RULES;if(o.keywords[e])throw new Error(\"Keyword \"+e+\" is already defined\");if(!s.test(e))throw new Error(\"Keyword \"+e+\" is not a valid identifier\");if(t){this.validateKeyword(t,!0);var r=t.type;if(Array.isArray(r))for(var n=0;n<r.length;n++)i(e,r[n],t);else i(e,r,t);var a=t.metaSchema;a&&(t.$data&&this._opts.$data&&(a={anyOf:[a,{$ref:\"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\"}]}),t.validateSchema=this.compile(a,!0))}function i(e,t,r){for(var n,a=0;a<o.length;a++){var i=o[a];if(i.type==t){n=i;break}}n||o.push(n={type:t,rules:[]});r={keyword:e,definition:r,custom:!0,code:l,implements:r.implements};n.rules.push(r),o.custom[e]=r}return o.keywords[e]=o.all[e]=!0,this},get:function(e){var t=this.RULES.custom[e];return t?t.definition:this.RULES.keywords[e]||!1},remove:function(e){var t=this.RULES;delete t.keywords[e],delete t.all[e],delete t.custom[e];for(var r=0;r<t.length;r++)for(var n=t[r].rules,a=0;a<n.length;a++)if(n[a].keyword==e){n.splice(a,1);break}return this},validate:a}),$0;function a(e,t){a.errors=null;var r=this._validateKeyword=this._validateKeyword||this.compile(n,!0);if(r(e))return!0;if(a.errors=r.errors,t)throw new Error(\"custom keyword definition is invalid: \"+this.errorsText(r.errors));return!1}}var Q0,Z0,X0,ey={$schema:\"http://json-schema.org/draft-07/schema#\",$id:\"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",description:\"Meta-schema for $data reference (JSON Schema extension proposal)\",type:\"object\",required:[\"$data\"],properties:{$data:{type:\"string\",anyOf:[{format:\"relative-json-pointer\"},{format:\"json-pointer\"}]}},additionalProperties:!1};function ty(){var o,l,p,c,f,h,m,g,_,u,i,e,t,r,y,T,v;return Z0||(Z0=1,o=N_(),l=w_(),M_||(M_=1,(t=F0.exports=function(){this._cache={}}).prototype.put=function(e,t){this._cache[e]=t},t.prototype.get=function(e){return this._cache[e]},t.prototype.del=function(e){delete this._cache[e]},t.prototype.clear=function(){this._cache={}}),p=F0.exports,c=f_(),f=I_(),h=U0(),R0||(R0=1,i=V0(),e=p_().toHash,I0=function(){var n=[{type:\"number\",rules:[{maximum:[\"exclusiveMaximum\"]},{minimum:[\"exclusiveMinimum\"]},\"multipleOf\",\"format\"]},{type:\"string\",rules:[\"maxLength\",\"minLength\",\"pattern\",\"format\"]},{type:\"array\",rules:[\"maxItems\",\"minItems\",\"items\",\"contains\",\"uniqueItems\"]},{type:\"object\",rules:[\"maxProperties\",\"minProperties\",\"required\",\"dependencies\",\"propertyNames\",{properties:[\"additionalProperties\",\"patternProperties\"]}]},{rules:[\"$ref\",\"const\",\"enum\",\"not\",\"anyOf\",\"oneOf\",\"allOf\",\"if\"]}],a=[\"type\",\"$comment\"];return n.all=e(a),n.types=e([\"number\",\"integer\",\"string\",\"array\",\"object\",\"boolean\",\"null\"]),n.forEach(function(e){e.rules=e.rules.map(function(e){var t,r;return\"object\"==typeof e&&(r=e[t=Object.keys(e)[0]],e=t,r.forEach(function(e){a.push(e),n.all[e]=!0})),a.push(e),n.all[e]={keyword:e,code:i[e],implements:r}}),n.all.$comment={keyword:\"$comment\",code:i.$comment},e.type&&(n.types[e.type]=e)}),n.keywords=e(a.concat([\"$schema\",\"$id\",\"id\",\"$data\",\"$async\",\"title\",\"description\",\"default\",\"definitions\",\"examples\",\"readOnly\",\"writeOnly\",\"contentMediaType\",\"contentEncoding\",\"additionalItems\",\"then\",\"else\"])),n.custom={},n}),m=I0,M0||(M0=1,u=[\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"additionalItems\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxProperties\",\"minProperties\",\"required\",\"additionalProperties\",\"enum\",\"format\",\"const\"],N0=function(e,t){for(var r=0;r<t.length;r++){e=JSON.parse(JSON.stringify(e));for(var n=t[r].split(\"/\"),a=e,i=1;i<n.length;i++)a=a[n[i]];for(i=0;i<u.length;i++){var o=u[i],s=a[o];s&&(a[o]={anyOf:[s,{$ref:\"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\"}]})}}return e}),g=N0,_=p_(),(Q0=b).prototype.validate=function(e,t){var r;if(\"string\"==typeof e){if(!(r=this.getSchema(e)))throw new Error('no schema with key or ref \"'+e+'\"')}else{e=this._addSchema(e);r=e.validate||this._compile(e)}e=r(t);!0!==r.$async&&(this.errors=r.errors);return e},b.prototype.compile=function(e,t){e=this._addSchema(e,void 0,t);return e.validate||this._compile(e)},b.prototype.addSchema=function(e,t,r,n){if(Array.isArray(e))for(var a=0;a<e.length;a++)this.addSchema(e[a],void 0,r,n);else{var i=this._getId(e);if(void 0!==i&&\"string\"!=typeof i)throw new Error(\"schema id must be string\");d(this,t=l.normalizeId(t||i)),this._schemas[t]=this._addSchema(e,r,n,!0)}return this},b.prototype.addMetaSchema=function(e,t,r){return this.addSchema(e,t,r,!0),this},b.prototype.validateSchema=function(e,t){var r=e.$schema;if(void 0!==r&&\"string\"!=typeof r)throw new Error(\"$schema must be a string\");if(!(r=r||this._opts.defaultMeta||function(e){var t=e._opts.meta;return e._opts.defaultMeta=\"object\"==typeof t?e._getId(t)||t:e.getSchema(y)?y:void 0,e._opts.defaultMeta}(this)))return this.logger.warn(\"meta-schema not available\"),!(this.errors=null);r=this.validate(r,e);if(!r&&t){e=\"schema is invalid: \"+this.errorsText();if(\"log\"!=this._opts.validateSchema)throw new Error(e);this.logger.error(e)}return r},b.prototype.getSchema=function(e){var t=n(this,e);switch(typeof t){case\"object\":return t.validate||this._compile(t);case\"string\":return this.getSchema(t);case\"undefined\":return function(e,t){var r=l.schema.call(e,{schema:{}},t);{var n,a,i;if(r)return n=r.schema,a=r.root,r=r.baseId,i=o.call(e,n,a,void 0,r),e._fragments[t]=new c({ref:t,fragment:!0,schema:n,root:a,baseId:r,validate:i}),i}}(this,e)}},b.prototype.removeSchema=function(e){if(e instanceof RegExp)a(this,this._schemas,e),a(this,this._refs,e);else switch(typeof e){case\"undefined\":return a(this,this._schemas),a(this,this._refs),this._cache.clear(),this;case\"string\":var t=n(this,e);return t&&this._cache.del(t.cacheKey),delete this._schemas[e],delete this._refs[e],this;case\"object\":t=this._opts.serialize,t=t?t(e):e,t=(this._cache.del(t),this._getId(e));t&&(t=l.normalizeId(t),delete this._schemas[t],delete this._refs[t])}return this},b.prototype.addFormat=function(e,t){\"string\"==typeof t&&(t=new RegExp(t));return this._formats[e]=t,this},b.prototype.errorsText=function(e,t){if(!(e=e||this.errors))return\"No errors\";for(var r=void 0===(t=t||{}).separator?\", \":t.separator,n=void 0===t.dataVar?\"data\":t.dataVar,a=\"\",i=0;i<e.length;i++){var o=e[i];o&&(a+=n+o.dataPath+\" \"+o.message+r)}return a.slice(0,-r.length)},b.prototype._addSchema=function(e,t,r,n){if(\"object\"!=typeof e&&\"boolean\"!=typeof e)throw new Error(\"schema should be object or boolean\");var a=this._opts.serialize,a=a?a(e):e,i=this._cache.get(a);if(i)return i;n=n||!1!==this._opts.addUsedSchema;i=l.normalizeId(this._getId(e));i&&n&&d(this,i);var o,t=!1!==this._opts.validateSchema&&!t;t&&!(o=i&&i==l.normalizeId(e.$schema))&&this.validateSchema(e,!0);var s=l.ids.call(this,e),s=new c({id:i,schema:e,localRefs:s,cacheKey:a,meta:r});\"#\"!=i[0]&&n&&(this._refs[i]=s);this._cache.put(a,s),t&&o&&this.validateSchema(e,!0);return s},b.prototype._compile=function(r,e){if(r.compiling)return(r.validate=a).schema=r.schema,a.errors=null,a.root=e||a,!0===r.schema.$async&&(a.$async=!0),a;var t,n;r.compiling=!0,r.meta&&(t=this._opts,this._opts=this._metaOpts);try{n=o.call(this,r.schema,e,r.localRefs)}catch(e){throw delete r.validate,e}finally{r.compiling=!1,r.meta&&(this._opts=t)}return r.validate=n,r.refs=n.refs,r.refVal=n.refVal,r.root=n.root,n;function a(){var e=r.validate,t=e.apply(this,arguments);return a.errors=e.errors,t}},b.prototype.compileAsync=q0(),t=J0(),b.prototype.addKeyword=t.add,b.prototype.getKeyword=t.get,b.prototype.removeKeyword=t.remove,b.prototype.validateKeyword=t.validate,r=k_(),b.ValidationError=r.Validation,b.MissingRefError=r.MissingRef,b.$dataMetaSchema=g,y=\"http://json-schema.org/draft-07/schema\",T=[\"removeAdditional\",\"useDefaults\",\"coerceTypes\",\"strictDefaults\"],v=[\"/properties\"]),Q0;function b(e){if(!(this instanceof b))return new b(e);e=this._opts=_.copy(e)||{};var t=this,r=t._opts.logger;if(!1===r)t.logger={log:O,warn:O,error:O};else{if(!(\"object\"==typeof(r=void 0===r?console:r)&&r.log&&r.warn&&r.error))throw new Error(\"logger must implement log, warn and error methods\");t.logger=r}if(this._schemas={},this._refs={},this._fragments={},this._formats=h(e.format),this._cache=e.cache||new p,this._loadingSchemas={},this._compilations=[],this.RULES=m(),this._getId=function(e){switch(e.schemaId){case\"auto\":return A;case\"id\":return E;default:return S}}(e),e.loopRequired=e.loopRequired||1/0,\"property\"==e.errorDataPath&&(e._errorDataPathProperty=!0),void 0===e.serialize&&(e.serialize=f),this._metaOpts=function(e){for(var t=_.copy(e._opts),r=0;r<T.length;r++)delete t[T[r]];return t}(this),e.formats){var n,a=this;for(n in a._opts.formats){var i=a._opts.formats[n];a.addFormat(n,i)}}if(e.keywords){var o,s=this;for(o in s._opts.keywords){var l=s._opts.keywords[o];s.addKeyword(o,l)}}var t=this,c=(t._opts.$data&&t.addMetaSchema(ey,ey.$id,!0),!1!==t._opts.meta&&(r=Y0,t._opts.$data&&(r=g(r,v)),t.addMetaSchema(r,y,!0),t._refs[\"http://json-schema.org/schema\"]=y),\"object\"==typeof e.meta&&this.addMetaSchema(e.meta),e.nullable&&this.addKeyword(\"nullable\",{metaSchema:{type:\"boolean\"}}),this),u=c._opts.schemas;if(u)if(Array.isArray(u))c.addSchema(u);else for(var d in u)c.addSchema(u[d],d)}function n(e,t){return t=l.normalizeId(t),e._schemas[t]||e._refs[t]||e._fragments[t]}function a(e,t,r){for(var n in t){var a=t[n];a.meta||r&&!r.test(n)||(e._cache.del(a.cacheKey),delete t[n])}}function E(e){return e.$id&&this.logger.warn(\"schema $id ignored\",e.$id),e.id}function S(e){return e.id&&this.logger.warn(\"schema id ignored\",e.id),e.$id}function A(e){if(e.$id&&e.id&&e.$id!=e.id)throw new Error(\"schema $id is different from id\");return e.$id||e.id}function d(e,t){if(e._schemas[t]||e._refs[t])throw new Error('schema with key or id \"'+t+'\" already exists')}function O(){}}var ry,ny={},ay={};function iy(){var t;return ry||(ry=1,t=ay,Object.defineProperty(t,\"__esModule\",{value:!0}),t.getDefaultOptions=t.defaultOptions=t.jsonDescription=t.ignoreOverride=void 0,t.ignoreOverride=Symbol(\"Let zodToJsonSchema decide on which parser to use\"),t.jsonDescription=(e,t)=>{if(t.description)try{return{...e,...JSON.parse(t.description)}}catch{}return e},t.defaultOptions={name:void 0,$refStrategy:\"root\",basePath:[\"#\"],effectStrategy:\"input\",pipeStrategy:\"all\",dateStrategy:\"format:date-time\",mapStrategy:\"entries\",removeAdditionalStrategy:\"passthrough\",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:\"definitions\",target:\"jsonSchema7\",strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:\"escape\",applyRegexFlags:!1,emailStrategy:\"format:email\",base64Strategy:\"contentEncoding:base64\",nameStrategy:\"ref\",openAiAnyTypeName:\"OpenAiAnyType\"},t.getDefaultOptions=e=>\"string\"==typeof e?{...t.defaultOptions,name:e}:{...t.defaultOptions,...e}),ay}var oy,sy={};function ly(){if(!oy){oy=1,Object.defineProperty(sy,\"__esModule\",{value:!0}),sy.getRefs=void 0;const t=iy();sy.getRefs=e=>{const r=(0,t.getDefaultOptions)(e);e=void 0!==r.name?[...r.basePath,r.definitionPath,r.name]:r.basePath;return{...r,flags:{hasReferencedOpenAiAnyType:!1},currentPath:e,propertyPath:void 0,seen:new Map(Object.entries(r.definitions).map(([e,t])=>[t._def,{def:t._def,path:[...r.basePath,r.definitionPath,e],jsonSchema:void 0}]))}}}return sy}var cy,uy={};function dy(){return cy||(cy=1,Object.defineProperty(uy,\"__esModule\",{value:!0}),uy.setResponseValueAndErrors=uy.addErrorMessage=void 0,uy.addErrorMessage=i,uy.setResponseValueAndErrors=function(e,t,r,n,a){e[t]=r,i(e,t,n,a)}),uy;function i(e,t,r,n){n?.errorMessages&&r&&(e.errorMessage={...e.errorMessage,[t]:r})}}var py,fy={};function hy(){return py||(py=1,Object.defineProperty(fy,\"__esModule\",{value:!0}),fy.getRelativePath=void 0,fy.getRelativePath=(e,t)=>{let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];r++);return[(e.length-r).toString(),...t.slice(r)].join(\"/\")}),fy}var my,gy={},_y={},yy={};function Ty(){if(!my){my=1,Object.defineProperty(yy,\"__esModule\",{value:!0}),yy.parseAnyDef=void 0;const r=hy();yy.parseAnyDef=function(e){var t;return\"openAi\"!==e.target?{}:(t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName],e.flags.hasReferencedOpenAiAnyType=!0,{$ref:\"relative\"===e.$refStrategy?(0,r.getRelativePath)(t,e.currentPath):t.join(\"/\")})}}return yy}var vy,by={};function Ey(){if(!vy){vy=1,Object.defineProperty(by,\"__esModule\",{value:!0}),by.parseArrayDef=void 0;const n=Ne(),a=dy(),i=rv();by.parseArrayDef=function(e,t){var r={type:\"array\"};return e.type?._def&&e.type?._def?.typeName!==n.ZodFirstPartyTypeKind.ZodAny&&(r.items=(0,i.parseDef)(e.type._def,{...t,currentPath:[...t.currentPath,\"items\"]})),e.minLength&&(0,a.setResponseValueAndErrors)(r,\"minItems\",e.minLength.value,e.minLength.message,t),e.maxLength&&(0,a.setResponseValueAndErrors)(r,\"maxItems\",e.maxLength.value,e.maxLength.message,t),e.exactLength&&((0,a.setResponseValueAndErrors)(r,\"minItems\",e.exactLength.value,e.exactLength.message,t),(0,a.setResponseValueAndErrors)(r,\"maxItems\",e.exactLength.value,e.exactLength.message,t)),r}}return by}var Sy,Ay={};function Oy(){if(!Sy){Sy=1,Object.defineProperty(Ay,\"__esModule\",{value:!0}),Ay.parseBigintDef=void 0;const a=dy();Ay.parseBigintDef=function(e,t){var r={type:\"integer\",format:\"int64\"};if(e.checks)for(const n of e.checks)switch(n.kind){case\"min\":\"jsonSchema7\"===t.target?n.inclusive?(0,a.setResponseValueAndErrors)(r,\"minimum\",n.value,n.message,t):(0,a.setResponseValueAndErrors)(r,\"exclusiveMinimum\",n.value,n.message,t):(n.inclusive||(r.exclusiveMinimum=!0),(0,a.setResponseValueAndErrors)(r,\"minimum\",n.value,n.message,t));break;case\"max\":\"jsonSchema7\"===t.target?n.inclusive?(0,a.setResponseValueAndErrors)(r,\"maximum\",n.value,n.message,t):(0,a.setResponseValueAndErrors)(r,\"exclusiveMaximum\",n.value,n.message,t):(n.inclusive||(r.exclusiveMaximum=!0),(0,a.setResponseValueAndErrors)(r,\"maximum\",n.value,n.message,t));break;case\"multipleOf\":(0,a.setResponseValueAndErrors)(r,\"multipleOf\",n.value,n.message,t)}return r}}return Ay}var Cy,wy={};function ky(){return Cy||(Cy=1,Object.defineProperty(wy,\"__esModule\",{value:!0}),wy.parseBooleanDef=void 0,wy.parseBooleanDef=function(){return{type:\"boolean\"}}),wy}var Iy,Ry={};function Ny(){if(!Iy){Iy=1,Object.defineProperty(Ry,\"__esModule\",{value:!0}),Ry.parseBrandedDef=void 0;const r=rv();Ry.parseBrandedDef=function(e,t){return(0,r.parseDef)(e.type._def,t)}}return Ry}var My,Py={};function Dy(){if(!My){My=1,Object.defineProperty(Py,\"__esModule\",{value:!0}),Py.parseCatchDef=void 0;const r=rv();Py.parseCatchDef=(e,t)=>(0,r.parseDef)(e.innerType._def,t)}return Py}var xy,Ly={};function Fy(){if(xy)return Ly;xy=1,Object.defineProperty(Ly,\"__esModule\",{value:!0}),Ly.parseDateDef=void 0;const a=dy();Ly.parseDateDef=function r(n,a,e){e=e??a.dateStrategy;if(Array.isArray(e))return{anyOf:e.map((e,t)=>r(n,a,e))};switch(e){case\"string\":case\"format:date-time\":return{type:\"string\",format:\"date-time\"};case\"format:date\":return{type:\"string\",format:\"date\"};case\"integer\":return t(n,a)}};const t=(e,t)=>{var r={type:\"integer\",format:\"unix-time\"};if(\"openApi3\"!==t.target)for(const n of e.checks)switch(n.kind){case\"min\":(0,a.setResponseValueAndErrors)(r,\"minimum\",n.value,n.message,t);break;case\"max\":(0,a.setResponseValueAndErrors)(r,\"maximum\",n.value,n.message,t)}return r};return Ly}var Uy,By={};function jy(){if(!Uy){Uy=1,Object.defineProperty(By,\"__esModule\",{value:!0}),By.parseDefaultDef=void 0;const r=rv();By.parseDefaultDef=function(e,t){return{...(0,r.parseDef)(e.innerType._def,t),default:e.defaultValue()}}}return By}var Hy,Gy={};function Vy(){if(!Hy){Hy=1,Object.defineProperty(Gy,\"__esModule\",{value:!0}),Gy.parseEffectsDef=void 0;const r=rv(),n=Ty();Gy.parseEffectsDef=function(e,t){return\"input\"===t.effectStrategy?(0,r.parseDef)(e.schema._def,t):(0,n.parseAnyDef)(t)}}return Gy}var qy,zy={};function Wy(){return qy||(qy=1,Object.defineProperty(zy,\"__esModule\",{value:!0}),zy.parseEnumDef=void 0,zy.parseEnumDef=function(e){return{type:\"string\",enum:Array.from(e.values)}}),zy}var $y,Ky={};function Yy(){if(!$y){$y=1,Object.defineProperty(Ky,\"__esModule\",{value:!0}),Ky.parseIntersectionDef=void 0;const r=rv();Ky.parseIntersectionDef=function(e,t){e=[(0,r.parseDef)(e.left._def,{...t,currentPath:[...t.currentPath,\"allOf\",\"0\"]}),(0,r.parseDef)(e.right._def,{...t,currentPath:[...t.currentPath,\"allOf\",\"1\"]})].filter(e=>!!e);let a=\"jsonSchema2019-09\"===t.target?{unevaluatedProperties:!1}:void 0;const i=[];return e.forEach(t=>{if(!(\"type\"in(e=t)&&\"string\"===e.type)&&\"allOf\"in e)i.push(...t.allOf),void 0===t.unevaluatedProperties&&(a=void 0);else{let e=t;if(\"additionalProperties\"in t&&!1===t.additionalProperties){const{additionalProperties:r,...n}=t;e=n}else a=void 0;i.push(e)}var e}),i.length?{allOf:i,...a}:void 0}}return Ky}var Jy,Qy={};function Zy(){return Jy||(Jy=1,Object.defineProperty(Qy,\"__esModule\",{value:!0}),Qy.parseLiteralDef=void 0,Qy.parseLiteralDef=function(e,t){var r=typeof e.value;return\"bigint\"!=r&&\"number\"!=r&&\"boolean\"!=r&&\"string\"!=r?{type:Array.isArray(e.value)?\"array\":\"object\"}:\"openApi3\"===t.target?{type:\"bigint\"==r?\"integer\":r,enum:[e.value]}:{type:\"bigint\"==r?\"integer\":r,const:e.value}}),Qy}var Xy,eT,tT,rT={},nT={},aT={};function iT(){if(!Xy){Xy=1;{var a=aT;Object.defineProperty(a,\"__esModule\",{value:!0}),a.parseStringDef=a.zodPatterns=void 0;const c=dy();let e=void 0;function i(e,t){if(\"escape\"!==t.patternStrategy)return e;{var r=e;let t=\"\";for(let e=0;e<r.length;e++)n.has(r[e])||(t+=\"\\\\\"),t+=r[e];return t}}a.zodPatterns={cuid:/^[cC][^\\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,emoji:()=>e=void 0===e?RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\"u\"):e,uuid:/^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/},a.parseStringDef=function(e,t){var r={type:\"string\"};if(e.checks)for(const n of e.checks)switch(n.kind){case\"min\":(0,c.setResponseValueAndErrors)(r,\"minLength\",\"number\"==typeof r.minLength?Math.max(r.minLength,n.value):n.value,n.message,t);break;case\"max\":(0,c.setResponseValueAndErrors)(r,\"maxLength\",\"number\"==typeof r.maxLength?Math.min(r.maxLength,n.value):n.value,n.message,t);break;case\"email\":switch(t.emailStrategy){case\"format:email\":o(r,\"email\",n.message,t);break;case\"format:idn-email\":o(r,\"idn-email\",n.message,t);break;case\"pattern:zod\":s(r,a.zodPatterns.email,n.message,t)}break;case\"url\":o(r,\"uri\",n.message,t);break;case\"uuid\":o(r,\"uuid\",n.message,t);break;case\"regex\":s(r,n.regex,n.message,t);break;case\"cuid\":s(r,a.zodPatterns.cuid,n.message,t);break;case\"cuid2\":s(r,a.zodPatterns.cuid2,n.message,t);break;case\"startsWith\":s(r,RegExp(\"^\"+i(n.value,t)),n.message,t);break;case\"endsWith\":s(r,RegExp(i(n.value,t)+\"$\"),n.message,t);break;case\"datetime\":o(r,\"date-time\",n.message,t);break;case\"date\":o(r,\"date\",n.message,t);break;case\"time\":o(r,\"time\",n.message,t);break;case\"duration\":o(r,\"duration\",n.message,t);break;case\"length\":(0,c.setResponseValueAndErrors)(r,\"minLength\",\"number\"==typeof r.minLength?Math.max(r.minLength,n.value):n.value,n.message,t),(0,c.setResponseValueAndErrors)(r,\"maxLength\",\"number\"==typeof r.maxLength?Math.min(r.maxLength,n.value):n.value,n.message,t);break;case\"includes\":s(r,RegExp(i(n.value,t)),n.message,t);break;case\"ip\":\"v6\"!==n.version&&o(r,\"ipv4\",n.message,t),\"v4\"!==n.version&&o(r,\"ipv6\",n.message,t);break;case\"base64url\":s(r,a.zodPatterns.base64url,n.message,t);break;case\"jwt\":s(r,a.zodPatterns.jwt,n.message,t);break;case\"cidr\":\"v6\"!==n.version&&s(r,a.zodPatterns.ipv4Cidr,n.message,t),\"v4\"!==n.version&&s(r,a.zodPatterns.ipv6Cidr,n.message,t);break;case\"emoji\":s(r,a.zodPatterns.emoji(),n.message,t);break;case\"ulid\":s(r,a.zodPatterns.ulid,n.message,t);break;case\"base64\":switch(t.base64Strategy){case\"format:binary\":o(r,\"binary\",n.message,t);break;case\"contentEncoding:base64\":(0,c.setResponseValueAndErrors)(r,\"contentEncoding\",\"base64\",n.message,t);break;case\"pattern:zod\":s(r,a.zodPatterns.base64,n.message,t)}break;case\"nanoid\":s(r,a.zodPatterns.nanoid,n.message,t)}return r};const n=new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");function o(e,t,r,n){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&n.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage)&&(delete e.errorMessage.format,0===Object.keys(e.errorMessage).length)&&delete e.errorMessage,e.anyOf.push({format:t,...r&&n.errorMessages&&{errorMessage:{format:r}}})):(0,c.setResponseValueAndErrors)(e,\"format\",t,r,n)}function s(e,t,r,n){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&n.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage)&&(delete e.errorMessage.pattern,0===Object.keys(e.errorMessage).length)&&delete e.errorMessage,e.allOf.push({pattern:l(t,n),...r&&n.errorMessages&&{errorMessage:{pattern:r}}})):(0,c.setResponseValueAndErrors)(e,\"pattern\",l(t,n),r,n)}function l(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;const r=e.flags.includes(\"i\"),n=e.flags.includes(\"m\"),a=e.flags.includes(\"s\");var i=r?e.source.toLowerCase():e.source;let o=\"\",s=!1,l=!1,c=!1;for(let e=0;e<i.length;e++)if(s)o+=i[e],s=!1;else{if(r)if(l){if(i[e].match(/[a-z]/)){c?(o=(o+=i[e])+(i[e-2]+\"-\"+i[e]).toUpperCase(),c=!1):\"-\"===i[e+1]&&i[e+2]?.match(/[a-z]/)?(o+=i[e],c=!0):o+=\"\"+i[e]+i[e].toUpperCase();continue}}else if(i[e].match(/[a-z]/)){o+=`[${i[e]}${i[e].toUpperCase()}]`;continue}if(n){if(\"^\"===i[e]){o+=`(^|(?<=[\\r\n]))`;continue}if(\"$\"===i[e]){o+=`($|(?=[\\r\n]))`;continue}}a&&\".\"===i[e]?o+=l?i[e]+`\\r\n`:`[${i[e]}\\r\n]`:(o+=i[e],\"\\\\\"===i[e]?s=!0:l&&\"]\"===i[e]?l=!1:l||\"[\"!==i[e]||(l=!0))}try{new RegExp(o)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return o}}}return aT}function oT(){if(!eT){eT=1,Object.defineProperty(nT,\"__esModule\",{value:!0}),nT.parseRecordDef=void 0;const s=Ne(),l=rv(),c=iT(),u=Ny(),d=Ty();nT.parseRecordDef=function(r,n){if(\"openAi\"===n.target&&console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\"),\"openApi3\"===n.target&&r.keyType?._def.typeName===s.ZodFirstPartyTypeKind.ZodEnum)return{type:\"object\",required:r.keyType._def.values,properties:r.keyType._def.values.reduce((e,t)=>({...e,[t]:(0,l.parseDef)(r.valueType._def,{...n,currentPath:[...n.currentPath,\"properties\",t]})??(0,d.parseAnyDef)(n)}),{}),additionalProperties:n.rejectedAdditionalProperties};var e={type:\"object\",additionalProperties:(0,l.parseDef)(r.valueType._def,{...n,currentPath:[...n.currentPath,\"additionalProperties\"]})??n.allowedAdditionalProperties};if(\"openApi3\"!==n.target){if(r.keyType?._def.typeName===s.ZodFirstPartyTypeKind.ZodString&&r.keyType._def.checks?.length){const{type:t,...a}=(0,c.parseStringDef)(r.keyType._def,n);return{...e,propertyNames:a}}if(r.keyType?._def.typeName===s.ZodFirstPartyTypeKind.ZodEnum)return{...e,propertyNames:{enum:r.keyType._def.values}};if(r.keyType?._def.typeName===s.ZodFirstPartyTypeKind.ZodBranded&&r.keyType._def.type._def.typeName===s.ZodFirstPartyTypeKind.ZodString&&r.keyType._def.type._def.checks?.length){const{type:i,...o}=(0,u.parseBrandedDef)(r.keyType._def,n);return{...e,propertyNames:o}}}return e}}return nT}function sT(){if(!tT){tT=1,Object.defineProperty(rT,\"__esModule\",{value:!0}),rT.parseMapDef=void 0;const r=rv(),n=oT(),a=Ty();rT.parseMapDef=function(e,t){return\"record\"===t.mapStrategy?(0,n.parseRecordDef)(e,t):{type:\"array\",maxItems:125,items:{type:\"array\",items:[(0,r.parseDef)(e.keyType._def,{...t,currentPath:[...t.currentPath,\"items\",\"items\",\"0\"]})||(0,a.parseAnyDef)(t),(0,r.parseDef)(e.valueType._def,{...t,currentPath:[...t.currentPath,\"items\",\"items\",\"1\"]})||(0,a.parseAnyDef)(t)],minItems:2,maxItems:2}}}}return rT}var lT,cT={};function uT(){return lT||(lT=1,Object.defineProperty(cT,\"__esModule\",{value:!0}),cT.parseNativeEnumDef=void 0,cT.parseNativeEnumDef=function(e){const t=e.values;var e=Object.keys(e.values).filter(e=>\"number\"!=typeof t[t[e]]).map(e=>t[e]),r=Array.from(new Set(e.map(e=>typeof e)));return{type:1===r.length?\"string\"===r[0]?\"string\":\"number\":[\"string\",\"number\"],enum:e}}),cT}var dT,pT={};function fT(){if(!dT){dT=1,Object.defineProperty(pT,\"__esModule\",{value:!0}),pT.parseNeverDef=void 0;const t=Ty();pT.parseNeverDef=function(e){return\"openAi\"===e.target?void 0:{not:(0,t.parseAnyDef)({...e,currentPath:[...e.currentPath,\"not\"]})}}}return pT}var hT,mT={};function gT(){return hT||(hT=1,Object.defineProperty(mT,\"__esModule\",{value:!0}),mT.parseNullDef=void 0,mT.parseNullDef=function(e){return\"openApi3\"===e.target?{enum:[\"null\"],nullable:!0}:{type:\"null\"}}),mT}var _T,yT,TT={},vT={};function bT(){if(!_T){_T=1;{var a=vT;Object.defineProperty(a,\"__esModule\",{value:!0}),a.parseUnionDef=a.primitiveMappings=void 0;const n=rv();a.primitiveMappings={ZodString:\"string\",ZodNumber:\"number\",ZodBigInt:\"integer\",ZodBoolean:\"boolean\",ZodNull:\"null\"},a.parseUnionDef=function(e,t){if(\"openApi3\"!==t.target){var r=e.options instanceof Map?Array.from(e.options.values()):e.options;if(r.every(e=>e._def.typeName in a.primitiveMappings&&(!e._def.checks||!e._def.checks.length)))return{type:1<(n=r.reduce((e,t)=>{t=a.primitiveMappings[t._def.typeName];return t&&!e.includes(t)?[...e,t]:e},[])).length?n:n[0]};if(r.every(e=>\"ZodLiteral\"===e._def.typeName&&!e.description)){var n=r.reduce((e,t)=>{var r=typeof t._def.value;switch(r){case\"string\":case\"number\":case\"boolean\":return[...e,r];case\"bigint\":return[...e,\"integer\"];case\"object\":if(null===t._def.value)return[...e,\"null\"];default:return e}},[]);if(n.length===r.length)return{type:1<(n=n.filter((e,t,r)=>r.indexOf(e)===t)).length?n:n[0],enum:r.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}else if(r.every(e=>\"ZodEnum\"===e._def.typeName))return{type:\"string\",enum:r.reduce((t,e)=>[...t,...e._def.values.filter(e=>!t.includes(e))],[])}}return i(e,t)};const i=(e,r)=>{e=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,t)=>(0,n.parseDef)(e._def,{...r,currentPath:[...r.currentPath,\"anyOf\",\"\"+t]})).filter(e=>!!e&&(!r.strictUnions||\"object\"==typeof e&&0<Object.keys(e).length));return e.length?{anyOf:e}:void 0}}}return vT}function ET(){if(!yT){yT=1,Object.defineProperty(TT,\"__esModule\",{value:!0}),TT.parseNullableDef=void 0;const n=rv(),a=bT();TT.parseNullableDef=function(e,t){if([\"ZodString\",\"ZodNumber\",\"ZodBigInt\",\"ZodBoolean\",\"ZodNull\"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return\"openApi3\"===t.target?{type:a.primitiveMappings[e.innerType._def.typeName],nullable:!0}:{type:[a.primitiveMappings[e.innerType._def.typeName],\"null\"]};if(\"openApi3\"===t.target){const r=(0,n.parseDef)(e.innerType._def,{...t,currentPath:[...t.currentPath]});return r&&\"$ref\"in r?{allOf:[r],nullable:!0}:r&&{...r,nullable:!0}}const r=(0,n.parseDef)(e.innerType._def,{...t,currentPath:[...t.currentPath,\"anyOf\",\"0\"]});return r&&{anyOf:[r,{type:\"null\"}]}}}return TT}var ST,AT={};function OT(){if(!ST){ST=1,Object.defineProperty(AT,\"__esModule\",{value:!0}),AT.parseNumberDef=void 0;const a=dy();AT.parseNumberDef=function(e,t){var r={type:\"number\"};if(e.checks)for(const n of e.checks)switch(n.kind){case\"int\":r.type=\"integer\",(0,a.addErrorMessage)(r,\"type\",n.message,t);break;case\"min\":\"jsonSchema7\"===t.target?n.inclusive?(0,a.setResponseValueAndErrors)(r,\"minimum\",n.value,n.message,t):(0,a.setResponseValueAndErrors)(r,\"exclusiveMinimum\",n.value,n.message,t):(n.inclusive||(r.exclusiveMinimum=!0),(0,a.setResponseValueAndErrors)(r,\"minimum\",n.value,n.message,t));break;case\"max\":\"jsonSchema7\"===t.target?n.inclusive?(0,a.setResponseValueAndErrors)(r,\"maximum\",n.value,n.message,t):(0,a.setResponseValueAndErrors)(r,\"exclusiveMaximum\",n.value,n.message,t):(n.inclusive||(r.exclusiveMaximum=!0),(0,a.setResponseValueAndErrors)(r,\"maximum\",n.value,n.message,t));break;case\"multipleOf\":(0,a.setResponseValueAndErrors)(r,\"multipleOf\",n.value,n.message,t)}return r}}return AT}var CT,wT={};function kT(){if(!CT){CT=1,Object.defineProperty(wT,\"__esModule\",{value:!0}),wT.parseObjectDef=void 0;const c=rv();wT.parseObjectDef=function(e,r){var n=\"openAi\"===r.target,a={type:\"object\",properties:{}},i=[],o=e.shape();for(const l in o){let t=o[l];if(void 0!==t&&void 0!==t._def){let e=function(e){try{return e.isOptional()}catch{return!0}}(t);e&&n&&((t=\"ZodOptional\"===t._def.typeName?t._def.innerType:t).isNullable()||(t=t.nullable()),e=!1);var s=(0,c.parseDef)(t._def,{...r,currentPath:[...r.currentPath,\"properties\",l],propertyPath:[...r.currentPath,\"properties\",l]});void 0===s||(a.properties[l]=s,e)||i.push(l)}}return i.length&&(a.required=i),void 0!==(e=function(e,t){if(\"ZodNever\"!==e.catchall._def.typeName)return(0,c.parseDef)(e.catchall._def,{...t,currentPath:[...t.currentPath,\"additionalProperties\"]});switch(e.unknownKeys){case\"passthrough\":return t.allowedAdditionalProperties;case\"strict\":return t.rejectedAdditionalProperties;case\"strip\":return\"strict\"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,r))&&(a.additionalProperties=e),a}}return wT}var IT,RT={};function NT(){if(!IT){IT=1,Object.defineProperty(RT,\"__esModule\",{value:!0}),RT.parseOptionalDef=void 0;const r=rv(),n=Ty();RT.parseOptionalDef=(e,t)=>{return t.currentPath.toString()===t.propertyPath?.toString()?(0,r.parseDef)(e.innerType._def,t):(e=(0,r.parseDef)(e.innerType._def,{...t,currentPath:[...t.currentPath,\"anyOf\",\"1\"]}))?{anyOf:[{not:(0,n.parseAnyDef)(t)},e]}:(0,n.parseAnyDef)(t)}}return RT}var MT,PT={};function DT(){if(!MT){MT=1,Object.defineProperty(PT,\"__esModule\",{value:!0}),PT.parsePipelineDef=void 0;const n=rv();PT.parsePipelineDef=(e,t)=>{var r;return\"input\"===t.pipeStrategy?(0,n.parseDef)(e.in._def,t):\"output\"===t.pipeStrategy?(0,n.parseDef)(e.out._def,t):{allOf:[r=(0,n.parseDef)(e.in._def,{...t,currentPath:[...t.currentPath,\"allOf\",\"0\"]}),(0,n.parseDef)(e.out._def,{...t,currentPath:[...t.currentPath,\"allOf\",r?\"1\":\"0\"]})].filter(e=>void 0!==e)}}}return PT}var xT,LT={};function FT(){if(!xT){xT=1,Object.defineProperty(LT,\"__esModule\",{value:!0}),LT.parsePromiseDef=void 0;const r=rv();LT.parsePromiseDef=function(e,t){return(0,r.parseDef)(e.type._def,t)}}return LT}var UT,BT={};function jT(){if(!UT){UT=1,Object.defineProperty(BT,\"__esModule\",{value:!0}),BT.parseSetDef=void 0;const n=dy(),a=rv();BT.parseSetDef=function(e,t){var r={type:\"array\",uniqueItems:!0,items:(0,a.parseDef)(e.valueType._def,{...t,currentPath:[...t.currentPath,\"items\"]})};return e.minSize&&(0,n.setResponseValueAndErrors)(r,\"minItems\",e.minSize.value,e.minSize.message,t),e.maxSize&&(0,n.setResponseValueAndErrors)(r,\"maxItems\",e.maxSize.value,e.maxSize.message,t),r}}return BT}var HT,GT={};function VT(){if(!HT){HT=1,Object.defineProperty(GT,\"__esModule\",{value:!0}),GT.parseTupleDef=void 0;const n=rv();GT.parseTupleDef=function(e,r){return e.rest?{type:\"array\",minItems:e.items.length,items:e.items.map((e,t)=>(0,n.parseDef)(e._def,{...r,currentPath:[...r.currentPath,\"items\",\"\"+t]})).reduce((e,t)=>void 0===t?e:[...e,t],[]),additionalItems:(0,n.parseDef)(e.rest._def,{...r,currentPath:[...r.currentPath,\"additionalItems\"]})}:{type:\"array\",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,t)=>(0,n.parseDef)(e._def,{...r,currentPath:[...r.currentPath,\"items\",\"\"+t]})).reduce((e,t)=>void 0===t?e:[...e,t],[])}}}return GT}var qT,zT={};function WT(){if(!qT){qT=1,Object.defineProperty(zT,\"__esModule\",{value:!0}),zT.parseUndefinedDef=void 0;const t=Ty();zT.parseUndefinedDef=function(e){return{not:(0,t.parseAnyDef)(e)}}}return zT}var $T,KT={};function YT(){if(!$T){$T=1,Object.defineProperty(KT,\"__esModule\",{value:!0}),KT.parseUnknownDef=void 0;const t=Ty();KT.parseUnknownDef=function(e){return(0,t.parseAnyDef)(e)}}return KT}var JT,QT,ZT,XT={};function ev(){if(!JT){JT=1,Object.defineProperty(XT,\"__esModule\",{value:!0}),XT.parseReadonlyDef=void 0;const r=rv();XT.parseReadonlyDef=(e,t)=>(0,r.parseDef)(e.innerType._def,t)}return XT}function tv(){if(!QT){QT=1,Object.defineProperty(_y,\"__esModule\",{value:!0}),_y.selectParser=void 0;const n=Ne(),a=Ty(),i=Ey(),o=Oy(),s=ky(),l=Ny(),c=Dy(),u=Fy(),d=jy(),p=Vy(),f=Wy(),h=Yy(),m=Zy(),g=sT(),_=uT(),y=fT(),T=gT(),v=ET(),b=OT(),E=kT(),S=NT(),A=DT(),O=FT(),C=oT(),w=jT(),k=iT(),I=VT(),R=WT(),N=bT(),M=YT(),P=ev();_y.selectParser=(e,t,r)=>{switch(t){case n.ZodFirstPartyTypeKind.ZodString:return(0,k.parseStringDef)(e,r);case n.ZodFirstPartyTypeKind.ZodNumber:return(0,b.parseNumberDef)(e,r);case n.ZodFirstPartyTypeKind.ZodObject:return(0,E.parseObjectDef)(e,r);case n.ZodFirstPartyTypeKind.ZodBigInt:return(0,o.parseBigintDef)(e,r);case n.ZodFirstPartyTypeKind.ZodBoolean:return(0,s.parseBooleanDef)();case n.ZodFirstPartyTypeKind.ZodDate:return(0,u.parseDateDef)(e,r);case n.ZodFirstPartyTypeKind.ZodUndefined:return(0,R.parseUndefinedDef)(r);case n.ZodFirstPartyTypeKind.ZodNull:return(0,T.parseNullDef)(r);case n.ZodFirstPartyTypeKind.ZodArray:return(0,i.parseArrayDef)(e,r);case n.ZodFirstPartyTypeKind.ZodUnion:case n.ZodFirstPartyTypeKind.ZodDiscriminatedUnion:return(0,N.parseUnionDef)(e,r);case n.ZodFirstPartyTypeKind.ZodIntersection:return(0,h.parseIntersectionDef)(e,r);case n.ZodFirstPartyTypeKind.ZodTuple:return(0,I.parseTupleDef)(e,r);case n.ZodFirstPartyTypeKind.ZodRecord:return(0,C.parseRecordDef)(e,r);case n.ZodFirstPartyTypeKind.ZodLiteral:return(0,m.parseLiteralDef)(e,r);case n.ZodFirstPartyTypeKind.ZodEnum:return(0,f.parseEnumDef)(e);case n.ZodFirstPartyTypeKind.ZodNativeEnum:return(0,_.parseNativeEnumDef)(e);case n.ZodFirstPartyTypeKind.ZodNullable:return(0,v.parseNullableDef)(e,r);case n.ZodFirstPartyTypeKind.ZodOptional:return(0,S.parseOptionalDef)(e,r);case n.ZodFirstPartyTypeKind.ZodMap:return(0,g.parseMapDef)(e,r);case n.ZodFirstPartyTypeKind.ZodSet:return(0,w.parseSetDef)(e,r);case n.ZodFirstPartyTypeKind.ZodLazy:return()=>e.getter()._def;case n.ZodFirstPartyTypeKind.ZodPromise:return(0,O.parsePromiseDef)(e,r);case n.ZodFirstPartyTypeKind.ZodNaN:case n.ZodFirstPartyTypeKind.ZodNever:return(0,y.parseNeverDef)(r);case n.ZodFirstPartyTypeKind.ZodEffects:return(0,p.parseEffectsDef)(e,r);case n.ZodFirstPartyTypeKind.ZodAny:return(0,a.parseAnyDef)(r);case n.ZodFirstPartyTypeKind.ZodUnknown:return(0,M.parseUnknownDef)(r);case n.ZodFirstPartyTypeKind.ZodDefault:return(0,d.parseDefaultDef)(e,r);case n.ZodFirstPartyTypeKind.ZodBranded:return(0,l.parseBrandedDef)(e,r);case n.ZodFirstPartyTypeKind.ZodReadonly:return(0,P.parseReadonlyDef)(e,r);case n.ZodFirstPartyTypeKind.ZodCatch:return(0,c.parseCatchDef)(e,r);case n.ZodFirstPartyTypeKind.ZodPipeline:return(0,A.parsePipelineDef)(e,r);case n.ZodFirstPartyTypeKind.ZodFunction:case n.ZodFirstPartyTypeKind.ZodVoid:case n.ZodFirstPartyTypeKind.ZodSymbol:default:return}}}return _y}function rv(){if(ZT)return gy;ZT=1,Object.defineProperty(gy,\"__esModule\",{value:!0}),gy.parseDef=void 0;const o=iy(),s=tv(),t=hy(),n=Ty();gy.parseDef=function e(t,r,n=!1){var a=r.seen.get(t);if(r.override)if((i=r.override?.(t,r,a,n))!==o.ignoreOverride)return i;if(a&&!n&&void 0!==(i=l(a,r)))return i;var n={def:t,path:r.currentPath,jsonSchema:void 0},a=(r.seen.set(t,n),(0,s.selectParser)(t,t.typeName,r)),i=\"function\"==typeof a?e(a(),r):a;return i&&c(t,r,i),r.postProcess?(a=r.postProcess(i,t,r),n.jsonSchema=i,a):n.jsonSchema=i};const l=(e,r)=>{switch(r.$refStrategy){case\"root\":return{$ref:e.path.join(\"/\")};case\"relative\":return{$ref:(0,t.getRelativePath)(r.currentPath,e.path)};case\"none\":case\"seen\":return e.path.length<r.currentPath.length&&e.path.every((e,t)=>r.currentPath[t]===e)?(console.warn(`Recursive reference detected at ${r.currentPath.join(\"/\")}! Defaulting to any`),(0,n.parseAnyDef)(r)):\"seen\"===r.$refStrategy?(0,n.parseAnyDef)(r):void 0}},c=(e,t,r)=>(e.description&&(r.description=e.description,t.markdownDescription)&&(r.markdownDescription=e.description),r);return gy}var nv,av={};var iv,ov,sv={};function lv(){if(!iv){iv=1,Object.defineProperty(sv,\"__esModule\",{value:!0}),sv.zodToJsonSchema=void 0;const i=rv(),o=ly(),s=Ty();sv.zodToJsonSchema=(e,t)=>{const n=(0,o.getRefs)(t);let r=\"object\"==typeof t&&t.definitions?Object.entries(t.definitions).reduce((e,[t,r])=>({...e,[t]:(0,i.parseDef)(r._def,{...n,currentPath:[...n.basePath,n.definitionPath,t]},!0)??(0,s.parseAnyDef)(n)}),{}):void 0;var a=\"string\"==typeof t?t:\"title\"===t?.nameStrategy?void 0:t?.name,e=(0,i.parseDef)(e._def,void 0===a?n:{...n,currentPath:[...n.basePath,n.definitionPath,a]},!1)??(0,s.parseAnyDef)(n),t=\"object\"==typeof t&&void 0!==t.name&&\"title\"===t.nameStrategy?t.name:void 0,t=(void 0!==t&&(e.title=t),!n.flags.hasReferencedOpenAiAnyType||(r=r||{})[n.openAiAnyTypeName]||(r[n.openAiAnyTypeName]={type:[\"string\",\"number\",\"integer\",\"boolean\",\"array\",\"null\"],items:{$ref:\"relative\"===n.$refStrategy?\"1\":[...n.basePath,n.definitionPath,n.openAiAnyTypeName].join(\"/\")}}),void 0===a?r?{...e,[n.definitionPath]:r}:e:{$ref:[...\"relative\"===n.$refStrategy?[]:n.basePath,n.definitionPath,a].join(\"/\"),[n.definitionPath]:{...r,[a]:e}});return\"jsonSchema7\"===n.target?t.$schema=\"http://json-schema.org/draft-07/schema#\":\"jsonSchema2019-09\"!==n.target&&\"openAi\"!==n.target||(t.$schema=\"https://json-schema.org/draft/2019-09/schema#\"),\"openAi\"===n.target&&(\"anyOf\"in t||\"oneOf\"in t||\"allOf\"in t||\"type\"in t&&Array.isArray(t.type))&&console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\"),t}}return sv}function cv(){var e,n,t;return ov||(ov=1,e=ny,n=ve&&ve.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var a=Object.getOwnPropertyDescriptor(t,r);a&&(\"get\"in a?t.__esModule:!a.writable&&!a.configurable)||(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,a)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),t=ve&&ve.__exportStar||function(e,t){for(var r in e)\"default\"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},Object.defineProperty(e,\"__esModule\",{value:!0}),t(iy(),e),t(ly(),e),t(dy(),e),t(hy(),e),t(rv(),e),t((nv||(nv=1,Object.defineProperty(av,\"__esModule\",{value:!0})),av),e),t(Ty(),e),t(Ey(),e),t(Oy(),e),t(ky(),e),t(Ny(),e),t(Dy(),e),t(Fy(),e),t(jy(),e),t(Vy(),e),t(Wy(),e),t(Yy(),e),t(Zy(),e),t(sT(),e),t(uT(),e),t(fT(),e),t(gT(),e),t(ET(),e),t(OT(),e),t(kT(),e),t(NT(),e),t(DT(),e),t(FT(),e),t(ev(),e),t(oT(),e),t(jT(),e),t(iT(),e),t(VT(),e),t(WT(),e),t(bT(),e),t(YT(),e),t(tv(),e),t(lv(),e),t=lv(),e.default=t.zodToJsonSchema),ny}var uv,dv={};function pv(){if(!uv){uv=1,Object.defineProperty(dv,\"__esModule\",{value:!0}),dv.Completable=dv.McpZodTypeKind=void 0,dv.completable=function(e,t){return n.create(e,{...e._def,complete:t})};var r,e=Ne();(r||(dv.McpZodTypeKind=r={})).Completable=\"McpCompletable\";class n extends e.ZodType{_parse(e){var e=this._processInputParams(e)[\"ctx\"],t=e.data;return this._def.type._parse({data:t,path:e.path,parent:e})}unwrap(){return this._def.type}}(dv.Completable=n).create=(e,t)=>new n({type:e,typeName:r.Completable,complete:t.complete,...function(a){if(!a)return{};const{errorMap:e,invalid_type_error:i,required_error:o,description:t}=a;if(e&&(i||o))throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);if(e)return{errorMap:e,description:t};return{errorMap:(e,t)=>{var r,n=a[\"message\"];return\"invalid_enum_value\"===e.code?{message:null!=n?n:t.defaultError}:void 0===t.data?{message:null!=(r=null!=n?n:o)?r:t.defaultError}:\"invalid_type\"!==e.code?{message:t.defaultError}:{message:null!=(r=null!=n?n:i)?r:t.defaultError}},description:t}}(t)})}return dv}var fv,hv,mv={};function gv(){if(hv)return Kg;hv=1,Object.defineProperty(Kg,\"__esModule\",{value:!0}),Kg.ResourceTemplate=Kg.McpServer=void 0;const r=function(){if(!X0){X0=1;var e=ve&&ve.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Yg,\"__esModule\",{value:!0}),Yg.Server=void 0;const t=Xg(),a=Zg(),i=e(ty());class r extends t.Protocol{constructor(e,t){super(t),this._serverInfo=e,this._capabilities=null!=(e=null==t?void 0:t.capabilities)?e:{},this._instructions=null==t?void 0:t.instructions,this.setRequestHandler(a.InitializeRequestSchema,e=>this._oninitialize(e)),this.setNotificationHandler(a.InitializedNotificationSchema,()=>{var e;return null==(e=this.oninitialized)?void 0:e.call(this)})}registerCapabilities(e){if(this.transport)throw new Error(\"Cannot register capabilities after connecting to transport\");this._capabilities=(0,t.mergeCapabilities)(this._capabilities,e)}assertCapabilityForMethod(e){var t;switch(e){case\"sampling/createMessage\":if(null!=(t=this._clientCapabilities)&&t.sampling)break;throw new Error(`Client does not support sampling (required for ${e})`);case\"elicitation/create\":if(null!=(t=this._clientCapabilities)&&t.elicitation)break;throw new Error(`Client does not support elicitation (required for ${e})`);case\"roots/list\":if(null!=(t=this._clientCapabilities)&&t.roots)break;throw new Error(`Client does not support listing roots (required for ${e})`)}}assertNotificationCapability(e){switch(e){case\"notifications/message\":if(this._capabilities.logging)break;throw new Error(`Server does not support logging (required for ${e})`);case\"notifications/resources/updated\":case\"notifications/resources/list_changed\":if(this._capabilities.resources)break;throw new Error(`Server does not support notifying about resources (required for ${e})`);case\"notifications/tools/list_changed\":if(this._capabilities.tools)break;throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);case\"notifications/prompts/list_changed\":if(this._capabilities.prompts)break;throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`)}}assertRequestHandlerCapability(e){switch(e){case\"sampling/createMessage\":if(this._capabilities.sampling)break;throw new Error(`Server does not support sampling (required for ${e})`);case\"logging/setLevel\":if(this._capabilities.logging)break;throw new Error(`Server does not support logging (required for ${e})`);case\"prompts/get\":case\"prompts/list\":if(this._capabilities.prompts)break;throw new Error(`Server does not support prompts (required for ${e})`);case\"resources/list\":case\"resources/templates/list\":case\"resources/read\":if(this._capabilities.resources)break;throw new Error(`Server does not support resources (required for ${e})`);case\"tools/call\":case\"tools/list\":if(this._capabilities.tools)break;throw new Error(`Server does not support tools (required for ${e})`)}}async _oninitialize(e){var t=e.params.protocolVersion,e=(this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,a.SUPPORTED_PROTOCOL_VERSIONS.includes(t)?t:a.LATEST_PROTOCOL_VERSION);return{protocolVersion:e,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:\"ping\"},a.EmptyResultSchema)}async createMessage(e,t){return this.request({method:\"sampling/createMessage\",params:e},a.CreateMessageResultSchema,t)}async elicitInput(e,t){t=await this.request({method:\"elicitation/create\",params:e},a.ElicitResultSchema,t);if(\"accept\"===t.action&&t.content)try{var r=new i.default,n=r.compile(e.requestedSchema);if(!n(t.content))throw new a.McpError(a.ErrorCode.InvalidParams,\"Elicitation response content does not match requested schema: \"+r.errorsText(n.errors))}catch(e){if(e instanceof a.McpError)throw e;throw new a.McpError(a.ErrorCode.InternalError,\"Error validating elicitation response: \"+e)}return t}async listRoots(e,t){return this.request({method:\"roots/list\",params:e},a.ListRootsResultSchema,t)}async sendLoggingMessage(e){return this.notification({method:\"notifications/message\",params:e})}async sendResourceUpdated(e){return this.notification({method:\"notifications/resources/updated\",params:e})}async sendResourceListChanged(){return this.notification({method:\"notifications/resources/list_changed\"})}async sendToolListChanged(){return this.notification({method:\"notifications/tools/list_changed\"})}async sendPromptListChanged(){return this.notification({method:\"notifications/prompts/list_changed\"})}}Yg.Server=r}return Yg}(),n=cv(),l=Ne(),o=Zg(),a=pv(),i=function(){if(!fv){fv=1,Object.defineProperty(mv,\"__esModule\",{value:!0}),mv.UriTemplate=void 0;class p{static isTemplate(e){return/\\{[^}\\s]+\\}/.test(e)}static validateLength(e,t,r){if(e.length>t)throw new Error(`${r} exceeds maximum length of ${t} characters (got ${e.length})`)}get variableNames(){return this.parts.flatMap(e=>\"string\"==typeof e?[]:e.names)}constructor(e){p.validateLength(e,1e6,\"Template\"),this.template=e,this.parts=this.parse(e)}toString(){return this.template}parse(e){var t=[];let r=\"\",n=0,a=0;for(;n<e.length;)if(\"{\"===e[n]){r&&(t.push(r),r=\"\");var i=e.indexOf(\"}\",n);if(-1===i)throw new Error(\"Unclosed template expression\");if(1e4<++a)throw new Error(\"Template contains too many expressions (max 10000)\");var o=e.slice(n+1,i),s=this.getOperator(o),l=o.includes(\"*\"),o=this.getNames(o),c=o[0];for(const u of o)p.validateLength(u,1e6,\"Variable name\");t.push({name:c,operator:s,names:o,exploded:l}),n=i+1}else r+=e[n],n++;return r&&t.push(r),t}getOperator(t){return[\"+\",\"#\",\".\",\"/\",\"?\",\"&\"].find(e=>t.startsWith(e))||\"\"}getNames(e){var t=this.getOperator(e);return e.slice(t.length).split(\",\").map(e=>e.replace(\"*\",\"\").trim()).filter(e=>0<e.length)}encodeValue(e,t){return p.validateLength(e,1e6,\"Variable value\"),(\"+\"===t||\"#\"===t?encodeURI:encodeURIComponent)(e)}expandPart(r,n){if(\"?\"===r.operator||\"&\"===r.operator)return 0===(e=r.names.map(e=>{var t=n[e];return void 0===t?\"\":e+\"=\"+(Array.isArray(t)?t.map(e=>this.encodeValue(e,r.operator)).join(\",\"):this.encodeValue(t.toString(),r.operator))}).filter(e=>0<e.length)).length?\"\":(\"?\"===r.operator?\"?\":\"&\")+e.join(\"&\");if(1<r.names.length){const t=r.names.map(e=>n[e]).filter(e=>void 0!==e);return 0===t.length?\"\":t.map(e=>Array.isArray(e)?e[0]:e).join(\",\")}var e=n[r.name];if(void 0===e)return\"\";const t=Array.isArray(e)?e:[e];var a=t.map(e=>this.encodeValue(e,r.operator));switch(r.operator){case\"\":case\"+\":return a.join(\",\");case\"#\":return\"#\"+a.join(\",\");case\".\":return\".\"+a.join(\".\");case\"/\":return\"/\"+a.join(\"/\");default:return a.join(\",\")}}expand(e){let t=\"\",r=!1;for(const a of this.parts){var n;\"string\"==typeof a?t+=a:(n=this.expandPart(a,e))&&(\"?\"!==a.operator&&\"&\"!==a.operator||!r?t+=n:t+=n.replace(\"?\",\"&\"),\"?\"!==a.operator&&\"&\"!==a.operator||(r=!0))}return t}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}partToRegExp(t){var r=[];for(const a of t.names)p.validateLength(a,1e6,\"Variable name\");if(\"?\"===t.operator||\"&\"===t.operator)for(let e=0;e<t.names.length;e++){const a=t.names[e];var n=0===e?\"\\\\\"+t.operator:\"&\";r.push({pattern:n+this.escapeRegExp(a)+\"=([^&]+)\",name:a})}else{let e;const a=t.name;switch(t.operator){case\"\":e=t.exploded?\"([^/]+(?:,[^/]+)*)\":\"([^/,]+)\";break;case\"+\":case\"#\":e=\"(.+)\";break;case\".\":e=\"\\\\.([^/,]+)\";break;case\"/\":e=\"/\"+(t.exploded?\"([^/]+(?:,[^/]+)*)\":\"([^/,]+)\");break;default:e=\"([^/]+)\"}r.push({pattern:e,name:a})}return r}match(e){p.validateLength(e,1e6,\"URI\");let t=\"^\";var r,n,a=[];for(const d of this.parts)if(\"string\"==typeof d)t+=this.escapeRegExp(d);else for({pattern:r,name:n}of this.partToRegExp(d))t+=r,a.push({name:n,exploded:d.exploded});t+=\"$\",p.validateLength(t,1e6,\"Generated regex pattern\");var i=new RegExp(t),o=e.match(i);if(!o)return null;var s={};for(let e=0;e<a.length;e++){var{name:l,exploded:c}=a[e],u=o[e+1],l=l.replace(\"*\",\"\");c&&u.includes(\",\")?s[l]=u.split(\",\"):s[l]=u}return s}}mv.UriTemplate=p}return mv}();Kg.McpServer=class{constructor(e,t){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new r.Server(e,t)}async connect(e){return this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||(this.server.assertCanSetRequestHandler(o.ListToolsRequestSchema.shape.method.value),this.server.assertCanSetRequestHandler(o.CallToolRequestSchema.shape.method.value),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(o.ListToolsRequestSchema,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,t])=>{e={name:e,title:t.title,description:t.description,inputSchema:t.inputSchema?(0,n.zodToJsonSchema)(t.inputSchema,{strictUnions:!0}):s,annotations:t.annotations};return t.outputSchema&&(e.outputSchema=(0,n.zodToJsonSchema)(t.outputSchema,{strictUnions:!0})),e})})),this.server.setRequestHandler(o.CallToolRequestSchema,async(e,t)=>{var r=this._registeredTools[e.params.name];if(!r)throw new o.McpError(o.ErrorCode.InvalidParams,`Tool ${e.params.name} not found`);if(!r.enabled)throw new o.McpError(o.ErrorCode.InvalidParams,`Tool ${e.params.name} disabled`);let n;if(r.inputSchema){var a=await r.inputSchema.safeParseAsync(e.params.arguments);if(!a.success)throw new o.McpError(o.ErrorCode.InvalidParams,`Invalid arguments for tool ${e.params.name}: `+a.error.message);var a=a.data,i=r.callback;try{n=await Promise.resolve(i(a,t))}catch(e){n={content:[{type:\"text\",text:e instanceof Error?e.message:String(e)}],isError:!0}}}else{i=r.callback;try{n=await Promise.resolve(i(t))}catch(e){n={content:[{type:\"text\",text:e instanceof Error?e.message:String(e)}],isError:!0}}}if(r.outputSchema&&!n.isError){if(!n.structuredContent)throw new o.McpError(o.ErrorCode.InvalidParams,`Tool ${e.params.name} has an output schema but no structured content was provided`);a=await r.outputSchema.safeParseAsync(n.structuredContent);if(!a.success)throw new o.McpError(o.ErrorCode.InvalidParams,`Invalid structured content for tool ${e.params.name}: `+a.error.message)}return n}),this._toolHandlersInitialized=!0)}setCompletionRequestHandler(){this._completionHandlerInitialized||(this.server.assertCanSetRequestHandler(o.CompleteRequestSchema.shape.method.value),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(o.CompleteRequestSchema,async e=>{switch(e.params.ref.type){case\"ref/prompt\":return this.handlePromptCompletion(e,e.params.ref);case\"ref/resource\":return this.handleResourceCompletion(e,e.params.ref);default:throw new o.McpError(o.ErrorCode.InvalidParams,\"Invalid completion reference: \"+e.params.ref)}}),this._completionHandlerInitialized=!0)}async handlePromptCompletion(e,t){var r=this._registeredPrompts[t.name];if(!r)throw new o.McpError(o.ErrorCode.InvalidParams,`Prompt ${t.name} not found`);if(r.enabled)return r.argsSchema&&(r=r.argsSchema.shape[e.params.argument.name])instanceof a.Completable?u(await r._def.complete(e.params.argument.value,e.params.context)):d;throw new o.McpError(o.ErrorCode.InvalidParams,`Prompt ${t.name} disabled`)}async handleResourceCompletion(e,t){var r=Object.values(this._registeredResourceTemplates).find(e=>e.resourceTemplate.uriTemplate.toString()===t.uri);if(r)return(r=r.resourceTemplate.completeCallback(e.params.argument.name))?u(await r(e.params.argument.value,e.params.context)):d;if(this._registeredResources[t.uri])return d;throw new o.McpError(o.ErrorCode.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}setResourceRequestHandlers(){this._resourceHandlersInitialized||(this.server.assertCanSetRequestHandler(o.ListResourcesRequestSchema.shape.method.value),this.server.assertCanSetRequestHandler(o.ListResourceTemplatesRequestSchema.shape.method.value),this.server.assertCanSetRequestHandler(o.ReadResourceRequestSchema.shape.method.value),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(o.ListResourcesRequestSchema,async(e,t)=>{var r=Object.entries(this._registeredResources).filter(([,e])=>e.enabled).map(([e,t])=>({uri:e,name:t.name,...t.metadata})),n=[];for(const a of Object.values(this._registeredResourceTemplates))if(a.resourceTemplate.listCallback)for(const i of(await a.resourceTemplate.listCallback(t)).resources)n.push({...a.metadata,...i});return{resources:[...r,...n]}}),this.server.setRequestHandler(o.ListResourceTemplatesRequestSchema,async()=>{return{resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([e,t])=>({name:e,uriTemplate:t.resourceTemplate.uriTemplate.toString(),...t.metadata}))}}),this.server.setRequestHandler(o.ReadResourceRequestSchema,async(e,t)=>{var r=new URL(e.params.uri),e=this._registeredResources[r.toString()];if(e){if(e.enabled)return e.readCallback(r,t);throw new o.McpError(o.ErrorCode.InvalidParams,`Resource ${r} disabled`)}for(const a of Object.values(this._registeredResourceTemplates)){var n=a.resourceTemplate.uriTemplate.match(r.toString());if(n)return a.readCallback(r,n,t)}throw new o.McpError(o.ErrorCode.InvalidParams,`Resource ${r} not found`)}),this.setCompletionRequestHandler(),this._resourceHandlersInitialized=!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||(this.server.assertCanSetRequestHandler(o.ListPromptsRequestSchema.shape.method.value),this.server.assertCanSetRequestHandler(o.GetPromptRequestSchema.shape.method.value),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(o.ListPromptsRequestSchema,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,t])=>{return{name:e,title:t.title,description:t.description,arguments:t.argsSchema?(e=t.argsSchema,Object.entries(e.shape).map(([e,t])=>({name:e,description:t.description,required:!t.isOptional()}))):void 0}})})),this.server.setRequestHandler(o.GetPromptRequestSchema,async(e,t)=>{var r=this._registeredPrompts[e.params.name];if(!r)throw new o.McpError(o.ErrorCode.InvalidParams,`Prompt ${e.params.name} not found`);if(!r.enabled)throw new o.McpError(o.ErrorCode.InvalidParams,`Prompt ${e.params.name} disabled`);if(r.argsSchema){var n,a,i=await r.argsSchema.safeParseAsync(e.params.arguments);if(i.success)return n=i.data,a=r.callback,Promise.resolve(a(n,t));throw new o.McpError(o.ErrorCode.InvalidParams,`Invalid arguments for prompt ${e.params.name}: `+i.error.message)}return a=r.callback,Promise.resolve(a(t))}),this.setCompletionRequestHandler(),this._promptHandlersInitialized=!0)}resource(e,t,...r){let n;\"object\"==typeof r[0]&&(n=r.shift());r=r[0];if(\"string\"==typeof t){if(this._registeredResources[t])throw new Error(`Resource ${t} is already registered`);var a=this._createRegisteredResource(e,void 0,t,n,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);a=this._createRegisteredResourceTemplate(e,void 0,t,n,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}registerResource(e,t,r,n){if(\"string\"==typeof t){if(this._registeredResources[t])throw new Error(`Resource ${t} is already registered`);var a=this._createRegisteredResource(e,r.title,t,r,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}if(this._registeredResourceTemplates[e])throw new Error(`Resource template ${e} is already registered`);a=this._createRegisteredResourceTemplate(e,r.title,t,r,n);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),a}_createRegisteredResource(e,t,r,n,a){const i={name:e,title:t,metadata:n,readCallback:a,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({uri:null}),update:e=>{void 0!==e.uri&&e.uri!==r&&(delete this._registeredResources[r],e.uri)&&(this._registeredResources[e.uri]=i),void 0!==e.name&&(i.name=e.name),void 0!==e.title&&(i.title=e.title),void 0!==e.metadata&&(i.metadata=e.metadata),void 0!==e.callback&&(i.readCallback=e.callback),void 0!==e.enabled&&(i.enabled=e.enabled),this.sendResourceListChanged()}};return this._registeredResources[r]=i}_createRegisteredResourceTemplate(t,e,r,n,a){const i={resourceTemplate:r,title:e,metadata:n,readCallback:a,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:e=>{void 0!==e.name&&e.name!==t&&(delete this._registeredResourceTemplates[t],e.name)&&(this._registeredResourceTemplates[e.name]=i),void 0!==e.title&&(i.title=e.title),void 0!==e.template&&(i.resourceTemplate=e.template),void 0!==e.metadata&&(i.metadata=e.metadata),void 0!==e.callback&&(i.readCallback=e.callback),void 0!==e.enabled&&(i.enabled=e.enabled),this.sendResourceListChanged()}};return this._registeredResourceTemplates[t]=i}_createRegisteredPrompt(t,e,r,n,a){const i={title:e,description:r,argsSchema:void 0===n?void 0:l.z.object(n),callback:a,enabled:!0,disable:()=>i.update({enabled:!1}),enable:()=>i.update({enabled:!0}),remove:()=>i.update({name:null}),update:e=>{void 0!==e.name&&e.name!==t&&(delete this._registeredPrompts[t],e.name)&&(this._registeredPrompts[e.name]=i),void 0!==e.title&&(i.title=e.title),void 0!==e.description&&(i.description=e.description),void 0!==e.argsSchema&&(i.argsSchema=l.z.object(e.argsSchema)),void 0!==e.callback&&(i.callback=e.callback),void 0!==e.enabled&&(i.enabled=e.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[t]=i}_createRegisteredTool(t,e,r,n,a,i,o){const s={title:e,description:r,inputSchema:void 0===n?void 0:l.z.object(n),outputSchema:void 0===a?void 0:l.z.object(a),annotations:i,callback:o,enabled:!0,disable:()=>s.update({enabled:!1}),enable:()=>s.update({enabled:!0}),remove:()=>s.update({name:null}),update:e=>{void 0!==e.name&&e.name!==t&&(delete this._registeredTools[t],e.name)&&(this._registeredTools[e.name]=s),void 0!==e.title&&(s.title=e.title),void 0!==e.description&&(s.description=e.description),void 0!==e.paramsSchema&&(s.inputSchema=l.z.object(e.paramsSchema)),void 0!==e.callback&&(s.callback=e.callback),void 0!==e.annotations&&(s.annotations=e.annotations),void 0!==e.enabled&&(s.enabled=e.enabled),this.sendToolListChanged()}};return this._registeredTools[t]=s,this.setToolRequestHandlers(),this.sendToolListChanged(),s}tool(e,...t){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);let r,n;let a;\"string\"==typeof t[0]&&(r=t.shift()),1<t.length&&(c(i=t[0])?(n=t.shift(),1<t.length&&\"object\"==typeof t[0]&&null!==t[0]&&!c(t[0])&&(a=t.shift())):\"object\"==typeof i&&null!==i&&(a=t.shift()));var i=t[0];return this._createRegisteredTool(e,void 0,r,n,void 0,a,i)}registerTool(e,t,r){if(this._registeredTools[e])throw new Error(`Tool ${e} is already registered`);var{title:t,description:n,inputSchema:a,outputSchema:i,annotations:o}=t;return this._createRegisteredTool(e,t,n,a,i,o,r)}prompt(e,...t){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);let r;\"string\"==typeof t[0]&&(r=t.shift());let n;1<t.length&&(n=t.shift());t=t[0],e=this._createRegisteredPrompt(e,void 0,r,n,t);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),e}registerPrompt(e,t,r){if(this._registeredPrompts[e])throw new Error(`Prompt ${e} is already registered`);var{title:t,description:n,argsSchema:a}=t,e=this._createRegisteredPrompt(e,t,n,a,r);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),e}isConnected(){return void 0!==this.server.transport}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}};Kg.ResourceTemplate=class{constructor(e,t){this._callbacks=t,this._uriTemplate=\"string\"==typeof e?new i.UriTemplate(e):e}get uriTemplate(){return this._uriTemplate}get listCallback(){return this._callbacks.list}completeCallback(e){var t;return null==(t=this._callbacks.complete)?void 0:t[e]}};const s={type:\"object\",properties:{}};function c(e){return\"object\"==typeof e&&null!==e&&(0===Object.keys(e).length||Object.values(e).some(t))}function t(e){return null!==e&&\"object\"==typeof e&&\"parse\"in e&&\"function\"==typeof e.parse&&\"safeParse\"in e&&\"function\"==typeof e.safeParse}function u(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:100<e.length}}}const d={completion:{values:[],hasMore:!1}};return Kg}var _v,yv={};var Tv,vv,bv,Ev,Sv,Av,Ov,Cv,wv,kv,Iv,Rv,Nv,Mv,Pv,Dv,xv,Lv,Fv,Uv,Bv,jv,Hv,Gv,Vv,qv,zv,Wv,$v,Kv,Yv,Jv,Qv,Zv,Xv,eb,tb,rb,nb,ab,ib,ob,sb,lb,cb={};function ub(){if(!Tv){Tv=1,Object.defineProperty(cb,\"__esModule\",{value:!0}),cb.InMemoryTransport=void 0;cb.InMemoryTransport=class r{constructor(){this._messageQueue=[]}static createLinkedPair(){var e=new r,t=new r;return[(e._otherTransport=t)._otherTransport=e,t]}async start(){for(var e;0<this._messageQueue.length;){var t=this._messageQueue.shift();null!=(e=this.onmessage)&&e.call(this,t.message,t.extra)}}async close(){var e=this._otherTransport;this._otherTransport=void 0,await(null==e?void 0:e.close()),null!=(e=this.onclose)&&e.call(this)}async send(e,t){if(!this._otherTransport)throw new Error(\"Not connected\");this._otherTransport.onmessage?this._otherTransport.onmessage(e,{authInfo:null==t?void 0:t.authInfo}):this._otherTransport._messageQueue.push({message:e,extra:{authInfo:null==t?void 0:t.authInfo}})}}}return cb}let db=void 0,pb=void 0;function fb(e,t,r,n){return null!=e&&e.baseUrl?e.baseUrl:(e={geminiUrl:db,vertexUrl:pb},t?null!=(t=e.vertexUrl)?t:r:null!=(t=e.geminiUrl)?t:n)}class hb{}function c(e,n){return e.replace(/\\{([^}]+)\\}/g,(e,t)=>{var r;if(Object.prototype.hasOwnProperty.call(n,t))return null!=(r=n[t])?String(r):\"\";throw new Error(`Key '${t}' not found in valueMap.`)})}function m(e,r,n){for(let t=0;t<r.length-1;t++){var a=r[t];if(a.endsWith(\"[]\")){var i=a.slice(0,-2);if(!(i in e)){if(!Array.isArray(n))throw new Error(\"Value must be a list given an array path \"+a);e[i]=Array.from({length:n.length},()=>({}))}if(Array.isArray(e[i])){var o=e[i];if(Array.isArray(n))for(let e=0;e<o.length;e++)m(o[e],r.slice(t+1),n[e]);else for(const l of o)m(l,r.slice(t+1),n)}return}if(a.endsWith(\"[0]\"))return(i=a.slice(0,-3))in e||(e[i]=[{}]),void m(e[i][0],r.slice(t+1),n);e[a]&&\"object\"==typeof e[a]||(e[a]={}),e=e[a]}var t=r[r.length-1],s=e[t];if(void 0!==s){if(n&&(\"object\"!=typeof n||0!==Object.keys(n).length)&&n!==s){if(\"object\"!=typeof s||\"object\"!=typeof n||null===s||null===n)throw new Error(\"Cannot set value for an existing key. Key: \"+t);Object.assign(s,n)}}else e[t]=n}function g(e,r){try{if(1!==r.length||\"_self\"!==r[0])for(let t=0;t<r.length;t++){if(\"object\"!=typeof e||null===e)return;var n,a,i=r[t];if(i.endsWith(\"[]\"))return(n=i.slice(0,-2))in e&&(a=e[n],Array.isArray(a))?a.map(e=>g(e,r.slice(t+1))):void 0;e=e[i]}return e}catch(e){if(!(e instanceof TypeError))throw e}}function mb(e){if(\"string\"!=typeof e)throw new Error(\"fromImageBytes must be a string\");return e}(e=vv=vv||{}).OUTCOME_UNSPECIFIED=\"OUTCOME_UNSPECIFIED\",e.OUTCOME_OK=\"OUTCOME_OK\",e.OUTCOME_FAILED=\"OUTCOME_FAILED\",e.OUTCOME_DEADLINE_EXCEEDED=\"OUTCOME_DEADLINE_EXCEEDED\",(e=bv=bv||{}).LANGUAGE_UNSPECIFIED=\"LANGUAGE_UNSPECIFIED\",e.PYTHON=\"PYTHON\",(e=Ev=Ev||{}).TYPE_UNSPECIFIED=\"TYPE_UNSPECIFIED\",e.STRING=\"STRING\",e.NUMBER=\"NUMBER\",e.INTEGER=\"INTEGER\",e.BOOLEAN=\"BOOLEAN\",e.ARRAY=\"ARRAY\",e.OBJECT=\"OBJECT\",e.NULL=\"NULL\",(e=Sv=Sv||{}).HARM_CATEGORY_UNSPECIFIED=\"HARM_CATEGORY_UNSPECIFIED\",e.HARM_CATEGORY_HATE_SPEECH=\"HARM_CATEGORY_HATE_SPEECH\",e.HARM_CATEGORY_DANGEROUS_CONTENT=\"HARM_CATEGORY_DANGEROUS_CONTENT\",e.HARM_CATEGORY_HARASSMENT=\"HARM_CATEGORY_HARASSMENT\",e.HARM_CATEGORY_SEXUALLY_EXPLICIT=\"HARM_CATEGORY_SEXUALLY_EXPLICIT\",e.HARM_CATEGORY_CIVIC_INTEGRITY=\"HARM_CATEGORY_CIVIC_INTEGRITY\",e.HARM_CATEGORY_IMAGE_HATE=\"HARM_CATEGORY_IMAGE_HATE\",e.HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT=\"HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT\",e.HARM_CATEGORY_IMAGE_HARASSMENT=\"HARM_CATEGORY_IMAGE_HARASSMENT\",e.HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT=\"HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT\",(e=Av=Av||{}).HARM_BLOCK_METHOD_UNSPECIFIED=\"HARM_BLOCK_METHOD_UNSPECIFIED\",e.SEVERITY=\"SEVERITY\",e.PROBABILITY=\"PROBABILITY\",(e=Ov=Ov||{}).HARM_BLOCK_THRESHOLD_UNSPECIFIED=\"HARM_BLOCK_THRESHOLD_UNSPECIFIED\",e.BLOCK_LOW_AND_ABOVE=\"BLOCK_LOW_AND_ABOVE\",e.BLOCK_MEDIUM_AND_ABOVE=\"BLOCK_MEDIUM_AND_ABOVE\",e.BLOCK_ONLY_HIGH=\"BLOCK_ONLY_HIGH\",e.BLOCK_NONE=\"BLOCK_NONE\",e.OFF=\"OFF\",(e=Cv=Cv||{}).MODE_UNSPECIFIED=\"MODE_UNSPECIFIED\",e.MODE_DYNAMIC=\"MODE_DYNAMIC\",(e=wv=wv||{}).AUTH_TYPE_UNSPECIFIED=\"AUTH_TYPE_UNSPECIFIED\",e.NO_AUTH=\"NO_AUTH\",e.API_KEY_AUTH=\"API_KEY_AUTH\",e.HTTP_BASIC_AUTH=\"HTTP_BASIC_AUTH\",e.GOOGLE_SERVICE_ACCOUNT_AUTH=\"GOOGLE_SERVICE_ACCOUNT_AUTH\",e.OAUTH=\"OAUTH\",e.OIDC_AUTH=\"OIDC_AUTH\",(e=kv=kv||{}).API_SPEC_UNSPECIFIED=\"API_SPEC_UNSPECIFIED\",e.SIMPLE_SEARCH=\"SIMPLE_SEARCH\",e.ELASTIC_SEARCH=\"ELASTIC_SEARCH\",(e=Iv=Iv||{}).ENVIRONMENT_UNSPECIFIED=\"ENVIRONMENT_UNSPECIFIED\",e.ENVIRONMENT_BROWSER=\"ENVIRONMENT_BROWSER\",(e=Rv=Rv||{}).URL_RETRIEVAL_STATUS_UNSPECIFIED=\"URL_RETRIEVAL_STATUS_UNSPECIFIED\",e.URL_RETRIEVAL_STATUS_SUCCESS=\"URL_RETRIEVAL_STATUS_SUCCESS\",e.URL_RETRIEVAL_STATUS_ERROR=\"URL_RETRIEVAL_STATUS_ERROR\",(e=Nv=Nv||{}).FINISH_REASON_UNSPECIFIED=\"FINISH_REASON_UNSPECIFIED\",e.STOP=\"STOP\",e.MAX_TOKENS=\"MAX_TOKENS\",e.SAFETY=\"SAFETY\",e.RECITATION=\"RECITATION\",e.LANGUAGE=\"LANGUAGE\",e.OTHER=\"OTHER\",e.BLOCKLIST=\"BLOCKLIST\",e.PROHIBITED_CONTENT=\"PROHIBITED_CONTENT\",e.SPII=\"SPII\",e.MALFORMED_FUNCTION_CALL=\"MALFORMED_FUNCTION_CALL\",e.IMAGE_SAFETY=\"IMAGE_SAFETY\",e.UNEXPECTED_TOOL_CALL=\"UNEXPECTED_TOOL_CALL\",(e=Mv=Mv||{}).HARM_PROBABILITY_UNSPECIFIED=\"HARM_PROBABILITY_UNSPECIFIED\",e.NEGLIGIBLE=\"NEGLIGIBLE\",e.LOW=\"LOW\",e.MEDIUM=\"MEDIUM\",e.HIGH=\"HIGH\",(e=Pv=Pv||{}).HARM_SEVERITY_UNSPECIFIED=\"HARM_SEVERITY_UNSPECIFIED\",e.HARM_SEVERITY_NEGLIGIBLE=\"HARM_SEVERITY_NEGLIGIBLE\",e.HARM_SEVERITY_LOW=\"HARM_SEVERITY_LOW\",e.HARM_SEVERITY_MEDIUM=\"HARM_SEVERITY_MEDIUM\",e.HARM_SEVERITY_HIGH=\"HARM_SEVERITY_HIGH\",(e=Dv=Dv||{}).BLOCKED_REASON_UNSPECIFIED=\"BLOCKED_REASON_UNSPECIFIED\",e.SAFETY=\"SAFETY\",e.OTHER=\"OTHER\",e.BLOCKLIST=\"BLOCKLIST\",e.PROHIBITED_CONTENT=\"PROHIBITED_CONTENT\",e.IMAGE_SAFETY=\"IMAGE_SAFETY\",(e=xv=xv||{}).TRAFFIC_TYPE_UNSPECIFIED=\"TRAFFIC_TYPE_UNSPECIFIED\",e.ON_DEMAND=\"ON_DEMAND\",e.PROVISIONED_THROUGHPUT=\"PROVISIONED_THROUGHPUT\",(e=Lv=Lv||{}).MODALITY_UNSPECIFIED=\"MODALITY_UNSPECIFIED\",e.TEXT=\"TEXT\",e.IMAGE=\"IMAGE\",e.AUDIO=\"AUDIO\",(e=Fv=Fv||{}).MEDIA_RESOLUTION_UNSPECIFIED=\"MEDIA_RESOLUTION_UNSPECIFIED\",e.MEDIA_RESOLUTION_LOW=\"MEDIA_RESOLUTION_LOW\",e.MEDIA_RESOLUTION_MEDIUM=\"MEDIA_RESOLUTION_MEDIUM\",e.MEDIA_RESOLUTION_HIGH=\"MEDIA_RESOLUTION_HIGH\",(e=Uv=Uv||{}).JOB_STATE_UNSPECIFIED=\"JOB_STATE_UNSPECIFIED\",e.JOB_STATE_QUEUED=\"JOB_STATE_QUEUED\",e.JOB_STATE_PENDING=\"JOB_STATE_PENDING\",e.JOB_STATE_RUNNING=\"JOB_STATE_RUNNING\",e.JOB_STATE_SUCCEEDED=\"JOB_STATE_SUCCEEDED\",e.JOB_STATE_FAILED=\"JOB_STATE_FAILED\",e.JOB_STATE_CANCELLING=\"JOB_STATE_CANCELLING\",e.JOB_STATE_CANCELLED=\"JOB_STATE_CANCELLED\",e.JOB_STATE_PAUSED=\"JOB_STATE_PAUSED\",e.JOB_STATE_EXPIRED=\"JOB_STATE_EXPIRED\",e.JOB_STATE_UPDATING=\"JOB_STATE_UPDATING\",e.JOB_STATE_PARTIALLY_SUCCEEDED=\"JOB_STATE_PARTIALLY_SUCCEEDED\",(e=Bv=Bv||{}).ADAPTER_SIZE_UNSPECIFIED=\"ADAPTER_SIZE_UNSPECIFIED\",e.ADAPTER_SIZE_ONE=\"ADAPTER_SIZE_ONE\",e.ADAPTER_SIZE_TWO=\"ADAPTER_SIZE_TWO\",e.ADAPTER_SIZE_FOUR=\"ADAPTER_SIZE_FOUR\",e.ADAPTER_SIZE_EIGHT=\"ADAPTER_SIZE_EIGHT\",e.ADAPTER_SIZE_SIXTEEN=\"ADAPTER_SIZE_SIXTEEN\",e.ADAPTER_SIZE_THIRTY_TWO=\"ADAPTER_SIZE_THIRTY_TWO\",(e=jv=jv||{}).FEATURE_SELECTION_PREFERENCE_UNSPECIFIED=\"FEATURE_SELECTION_PREFERENCE_UNSPECIFIED\",e.PRIORITIZE_QUALITY=\"PRIORITIZE_QUALITY\",e.BALANCED=\"BALANCED\",e.PRIORITIZE_COST=\"PRIORITIZE_COST\",(e=Hv=Hv||{}).UNSPECIFIED=\"UNSPECIFIED\",e.BLOCKING=\"BLOCKING\",e.NON_BLOCKING=\"NON_BLOCKING\",(e=Gv=Gv||{}).MODE_UNSPECIFIED=\"MODE_UNSPECIFIED\",e.MODE_DYNAMIC=\"MODE_DYNAMIC\",(e=Vv=Vv||{}).MODE_UNSPECIFIED=\"MODE_UNSPECIFIED\",e.AUTO=\"AUTO\",e.ANY=\"ANY\",e.NONE=\"NONE\",(e=qv=qv||{}).BLOCK_LOW_AND_ABOVE=\"BLOCK_LOW_AND_ABOVE\",e.BLOCK_MEDIUM_AND_ABOVE=\"BLOCK_MEDIUM_AND_ABOVE\",e.BLOCK_ONLY_HIGH=\"BLOCK_ONLY_HIGH\",e.BLOCK_NONE=\"BLOCK_NONE\",(e=zv=zv||{}).DONT_ALLOW=\"DONT_ALLOW\",e.ALLOW_ADULT=\"ALLOW_ADULT\",e.ALLOW_ALL=\"ALLOW_ALL\",(e=Wv=Wv||{}).auto=\"auto\",e.en=\"en\",e.ja=\"ja\",e.ko=\"ko\",e.hi=\"hi\",e.zh=\"zh\",e.pt=\"pt\",e.es=\"es\",(e=$v=$v||{}).MASK_MODE_DEFAULT=\"MASK_MODE_DEFAULT\",e.MASK_MODE_USER_PROVIDED=\"MASK_MODE_USER_PROVIDED\",e.MASK_MODE_BACKGROUND=\"MASK_MODE_BACKGROUND\",e.MASK_MODE_FOREGROUND=\"MASK_MODE_FOREGROUND\",e.MASK_MODE_SEMANTIC=\"MASK_MODE_SEMANTIC\",(e=Kv=Kv||{}).CONTROL_TYPE_DEFAULT=\"CONTROL_TYPE_DEFAULT\",e.CONTROL_TYPE_CANNY=\"CONTROL_TYPE_CANNY\",e.CONTROL_TYPE_SCRIBBLE=\"CONTROL_TYPE_SCRIBBLE\",e.CONTROL_TYPE_FACE_MESH=\"CONTROL_TYPE_FACE_MESH\",(e=Yv=Yv||{}).SUBJECT_TYPE_DEFAULT=\"SUBJECT_TYPE_DEFAULT\",e.SUBJECT_TYPE_PERSON=\"SUBJECT_TYPE_PERSON\",e.SUBJECT_TYPE_ANIMAL=\"SUBJECT_TYPE_ANIMAL\",e.SUBJECT_TYPE_PRODUCT=\"SUBJECT_TYPE_PRODUCT\",(e=Jv=Jv||{}).EDIT_MODE_DEFAULT=\"EDIT_MODE_DEFAULT\",e.EDIT_MODE_INPAINT_REMOVAL=\"EDIT_MODE_INPAINT_REMOVAL\",e.EDIT_MODE_INPAINT_INSERTION=\"EDIT_MODE_INPAINT_INSERTION\",e.EDIT_MODE_OUTPAINT=\"EDIT_MODE_OUTPAINT\",e.EDIT_MODE_CONTROLLED_EDITING=\"EDIT_MODE_CONTROLLED_EDITING\",e.EDIT_MODE_STYLE=\"EDIT_MODE_STYLE\",e.EDIT_MODE_BGSWAP=\"EDIT_MODE_BGSWAP\",e.EDIT_MODE_PRODUCT_IMAGE=\"EDIT_MODE_PRODUCT_IMAGE\",(e=Qv=Qv||{}).OPTIMIZED=\"OPTIMIZED\",e.LOSSLESS=\"LOSSLESS\",(e=Zv=Zv||{}).STATE_UNSPECIFIED=\"STATE_UNSPECIFIED\",e.PROCESSING=\"PROCESSING\",e.ACTIVE=\"ACTIVE\",e.FAILED=\"FAILED\",(e=Xv=Xv||{}).SOURCE_UNSPECIFIED=\"SOURCE_UNSPECIFIED\",e.UPLOADED=\"UPLOADED\",e.GENERATED=\"GENERATED\",(e=eb=eb||{}).MODALITY_UNSPECIFIED=\"MODALITY_UNSPECIFIED\",e.TEXT=\"TEXT\",e.IMAGE=\"IMAGE\",e.VIDEO=\"VIDEO\",e.AUDIO=\"AUDIO\",e.DOCUMENT=\"DOCUMENT\",(e=tb=tb||{}).START_SENSITIVITY_UNSPECIFIED=\"START_SENSITIVITY_UNSPECIFIED\",e.START_SENSITIVITY_HIGH=\"START_SENSITIVITY_HIGH\",e.START_SENSITIVITY_LOW=\"START_SENSITIVITY_LOW\",(e=rb=rb||{}).END_SENSITIVITY_UNSPECIFIED=\"END_SENSITIVITY_UNSPECIFIED\",e.END_SENSITIVITY_HIGH=\"END_SENSITIVITY_HIGH\",e.END_SENSITIVITY_LOW=\"END_SENSITIVITY_LOW\",(e=nb=nb||{}).ACTIVITY_HANDLING_UNSPECIFIED=\"ACTIVITY_HANDLING_UNSPECIFIED\",e.START_OF_ACTIVITY_INTERRUPTS=\"START_OF_ACTIVITY_INTERRUPTS\",e.NO_INTERRUPTION=\"NO_INTERRUPTION\",(e=ab=ab||{}).TURN_COVERAGE_UNSPECIFIED=\"TURN_COVERAGE_UNSPECIFIED\",e.TURN_INCLUDES_ONLY_ACTIVITY=\"TURN_INCLUDES_ONLY_ACTIVITY\",e.TURN_INCLUDES_ALL_INPUT=\"TURN_INCLUDES_ALL_INPUT\",(e=ib=ib||{}).SCHEDULING_UNSPECIFIED=\"SCHEDULING_UNSPECIFIED\",e.SILENT=\"SILENT\",e.WHEN_IDLE=\"WHEN_IDLE\",e.INTERRUPT=\"INTERRUPT\",(e=ob=ob||{}).SCALE_UNSPECIFIED=\"SCALE_UNSPECIFIED\",e.C_MAJOR_A_MINOR=\"C_MAJOR_A_MINOR\",e.D_FLAT_MAJOR_B_FLAT_MINOR=\"D_FLAT_MAJOR_B_FLAT_MINOR\",e.D_MAJOR_B_MINOR=\"D_MAJOR_B_MINOR\",e.E_FLAT_MAJOR_C_MINOR=\"E_FLAT_MAJOR_C_MINOR\",e.E_MAJOR_D_FLAT_MINOR=\"E_MAJOR_D_FLAT_MINOR\",e.F_MAJOR_D_MINOR=\"F_MAJOR_D_MINOR\",e.G_FLAT_MAJOR_E_FLAT_MINOR=\"G_FLAT_MAJOR_E_FLAT_MINOR\",e.G_MAJOR_E_MINOR=\"G_MAJOR_E_MINOR\",e.A_FLAT_MAJOR_F_MINOR=\"A_FLAT_MAJOR_F_MINOR\",e.A_MAJOR_G_FLAT_MINOR=\"A_MAJOR_G_FLAT_MINOR\",e.B_FLAT_MAJOR_G_MINOR=\"B_FLAT_MAJOR_G_MINOR\",e.B_MAJOR_A_FLAT_MINOR=\"B_MAJOR_A_FLAT_MINOR\",(e=sb=sb||{}).PLAYBACK_CONTROL_UNSPECIFIED=\"PLAYBACK_CONTROL_UNSPECIFIED\",e.PLAY=\"PLAY\",e.PAUSE=\"PAUSE\",e.STOP=\"STOP\",e.RESET_CONTEXT=\"RESET_CONTEXT\";function gb(e){return{text:e}}function _b(e){return\"object\"==typeof e&&null!==e&&(\"fileData\"in e||\"text\"in e||\"functionCall\"in e||\"functionResponse\"in e||\"inlineData\"in e||\"videoMetadata\"in e||\"codeExecutionResult\"in e||\"executableCode\"in e)}function yb(e){var t=[];if(\"string\"==typeof e)t.push(gb(e));else if(_b(e))t.push(e);else{if(!Array.isArray(e))throw new Error(\"partOrString must be a Part object, string, or array\");if(0===e.length)throw new Error(\"partOrString cannot be an empty array\");for(const r of e)if(\"string\"==typeof r)t.push(gb(r));else{if(!_b(r))throw new Error(\"element in PartUnion must be a Part object or string\");t.push(r)}}return t}class Tb{constructor(e){var t={};for(const r of e.headers.entries())t[r[0]]=r[1];this.headers=t,this.responseInternal=e}json(){return this.responseInternal.json()}}class vb{get text(){var r;if(0!==(null==(r=null==(r=null==(r=null==(r=this.candidates)?void 0:r[0])?void 0:r.content)?void 0:r.parts)?void 0:r.length)){this.candidates&&1<this.candidates.length&&console.warn(\"there are multiple candidates in the response, returning text from the first one.\");let e=\"\",t=!1;var n=[];for(const o of null!=(r=null==(r=null==(r=null==(r=this.candidates)?void 0:r[0])?void 0:r.content)?void 0:r.parts)?r:[]){for(var[a,i]of Object.entries(o))\"text\"===a||\"thought\"===a||null===i&&void 0===i||n.push(a);\"string\"!=typeof o.text||\"boolean\"==typeof o.thought&&o.thought||(t=!0,e+=o.text)}return 0<n.length&&console.warn(`there are non-text parts ${n} in the response, returning concatenation of all text parts. Please refer to the non text parts for a full response from model.`),t?e:void 0}}get data(){var t;if(0!==(null==(t=null==(t=null==(t=null==(t=this.candidates)?void 0:t[0])?void 0:t.content)?void 0:t.parts)?void 0:t.length)){this.candidates&&1<this.candidates.length&&console.warn(\"there are multiple candidates in the response, returning data from the first one.\");let e=\"\";var r=[];for(const i of null!=(t=null==(t=null==(t=null==(t=this.candidates)?void 0:t[0])?void 0:t.content)?void 0:t.parts)?t:[]){for(var[n,a]of Object.entries(i))\"inlineData\"===n||null===a&&void 0===a||r.push(n);i.inlineData&&\"string\"==typeof i.inlineData.data&&(e+=atob(i.inlineData.data))}return 0<r.length&&console.warn(`there are non-data parts ${r} in the response, returning concatenation of all data parts. Please refer to the non data parts for a full response from model.`),0<e.length?btoa(e):void 0}}get functionCalls(){if(0!==(null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.length)){this.candidates&&1<this.candidates.length&&console.warn(\"there are multiple candidates in the response, returning function calls from the first one.\");var e=null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.filter(e=>e.functionCall).map(e=>e.functionCall).filter(e=>void 0!==e);if(0!==(null==e?void 0:e.length))return e}}get executableCode(){var e;if(0!==(null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.length))return this.candidates&&1<this.candidates.length&&console.warn(\"there are multiple candidates in the response, returning executable code from the first one.\"),0===(null==(e=null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.filter(e=>e.executableCode).map(e=>e.executableCode).filter(e=>void 0!==e))?void 0:e.length)||null==(e=null==e?void 0:e[0])?void 0:e.code}get codeExecutionResult(){var e;if(0!==(null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.length))return this.candidates&&1<this.candidates.length&&console.warn(\"there are multiple candidates in the response, returning code execution result from the first one.\"),0===(null==(e=null==(e=null==(e=null==(e=null==(e=this.candidates)?void 0:e[0])?void 0:e.content)?void 0:e.parts)?void 0:e.filter(e=>e.codeExecutionResult).map(e=>e.codeExecutionResult).filter(e=>void 0!==e))?void 0:e.length)||null==(e=null==e?void 0:e[0])?void 0:e.output}}class bb{}class Eb{}class Sb{}class Ab{}class Ob{}class Cb{}class wb{}class kb{}class Ib{}class Rb{}class Nb{}class Mb{}class Pb{}class Db{}class xb{}class Lb{}class Fb{get text(){var e;let t=\"\",r=!1;var n=[];for(const o of null!=(e=null==(e=null==(e=this.serverContent)?void 0:e.modelTurn)?void 0:e.parts)?e:[]){for(var[a,i]of Object.entries(o))\"text\"!==a&&\"thought\"!==a&&null!==i&&n.push(a);\"string\"!=typeof o.text||\"boolean\"==typeof o.thought&&o.thought||(r=!0,t+=o.text)}return 0<n.length&&console.warn(`there are non-text parts ${n} in the response, returning concatenation of all text parts. Please refer to the non text parts for a full response from model.`),r?t:void 0}get data(){var e;let t=\"\";var r=[];for(const i of null!=(e=null==(e=null==(e=this.serverContent)?void 0:e.modelTurn)?void 0:e.parts)?e:[]){for(var[n,a]of Object.entries(i))\"inlineData\"!==n&&null!==a&&r.push(n);i.inlineData&&\"string\"==typeof i.inlineData.data&&(t+=atob(i.inlineData.data))}return 0<r.length&&console.warn(`there are non-data parts ${r} in the response, returning concatenation of all data parts. Please refer to the non data parts for a full response from model.`),0<t.length?btoa(t):void 0}}class Ub{_fromAPIResponse({apiResponse:e,isVertexAI:t}){var r,n,a=new Ub;return a.name=e.name,a.metadata=e.metadata,a.done=e.done,a.error=e.error,t?(t=e.response)&&(n=new Ib,r=t.videos,n.generatedVideos=null==r?void 0:r.map(e=>({video:{uri:e.gcsUri,videoBytes:e.bytesBase64Encoded?mb(e.bytesBase64Encoded):void 0,mimeType:e.mimeType}})),n.raiMediaFilteredCount=t.raiMediaFilteredCount,n.raiMediaFilteredReasons=t.raiMediaFilteredReasons,a.response=n):(r=e.response)&&(t=new Ib,e=null==(n=r.generateVideoResponse)?void 0:n.generatedSamples,t.generatedVideos=null==e?void 0:e.map(e=>{var t=e.video;return{video:{uri:null==t?void 0:t.uri,videoBytes:null!=t&&t.encodedVideo?mb(null==t?void 0:t.encodedVideo):void 0,mimeType:e.encoding}}}),t.raiMediaFilteredCount=null==n?void 0:n.raiMediaFilteredCount,t.raiMediaFilteredReasons=null==n?void 0:n.raiMediaFilteredReasons,a.response=t),a}}class Bb{get audioChunk(){if(this.serverContent&&this.serverContent.audioChunks&&0<this.serverContent.audioChunks.length)return this.serverContent.audioChunks[0]}}function _(e,t){if(t&&\"string\"==typeof t)return e.isVertexAI()?t.startsWith(\"publishers/\")||t.startsWith(\"projects/\")||t.startsWith(\"models/\")?t:0<=t.indexOf(\"/\")?`publishers/${(e=t.split(\"/\",2))[0]}/models/`+e[1]:\"publishers/google/models/\"+t:t.startsWith(\"models/\")||t.startsWith(\"tunedModels/\")?t:\"models/\"+t;throw new Error(\"model is required and must be a string\")}function jb(e,t){t=_(e,t);return t?t.startsWith(\"publishers/\")&&e.isVertexAI()?`projects/${e.getProject()}/locations/${e.getLocation()}/`+t:t.startsWith(\"models/\")&&e.isVertexAI()?`projects/${e.getProject()}/locations/${e.getLocation()}/publishers/google/`+t:t:\"\"}function Hb(e){return Array.isArray(e)?e.map(e=>Gb(e)):[Gb(e)]}function Gb(e){if(\"object\"==typeof e&&null!==e)return e;throw new Error(\"Could not parse input as Blob. Unsupported blob type: \"+typeof e)}function Vb(e){e=Gb(e);if(e.mimeType&&e.mimeType.startsWith(\"image/\"))return e;throw new Error(\"Unsupported mime type: \"+e.mimeType)}function qb(e){e=Gb(e);if(e.mimeType&&e.mimeType.startsWith(\"audio/\"))return e;throw new Error(\"Unsupported mime type: \"+e.mimeType)}function zb(e){if(null==e)throw new Error(\"PartUnion is required\");if(\"object\"==typeof e)return e;if(\"string\"==typeof e)return{text:e};throw new Error(\"Unsupported part type: \"+typeof e)}function Wb(e){if(null==e||Array.isArray(e)&&0===e.length)throw new Error(\"PartListUnion is required\");return Array.isArray(e)?e.map(e=>zb(e)):[zb(e)]}function $b(e){return null!=e&&\"object\"==typeof e&&\"parts\"in e&&Array.isArray(e.parts)}function Kb(e){return null!=e&&\"object\"==typeof e&&\"functionCall\"in e}function Yb(e){return null!=e&&\"object\"==typeof e&&\"functionResponse\"in e}function Jb(e){if(null==e)throw new Error(\"ContentUnion is required\");return $b(e)?e:{role:\"user\",parts:Wb(e)}}function Qb(e,t){return t?e.isVertexAI()&&Array.isArray(t)?t.flatMap(e=>{e=Jb(e);return e.parts&&0<e.parts.length&&void 0!==e.parts[0].text?[e.parts[0].text]:[]}):e.isVertexAI()?(e=Jb(t)).parts&&0<e.parts.length&&void 0!==e.parts[0].text?[e.parts[0].text]:[]:Array.isArray(t)?t.map(e=>Jb(e)):[Jb(t)]:[]}function Zb(e){if(null==e||Array.isArray(e)&&0===e.length)throw new Error(\"contents are required\");if(!Array.isArray(e)){if(Kb(e)||Yb(e))throw new Error(\"To specify functionCall or functionResponse parts, please wrap them in a Content object, specifying the role for them\");return[Jb(e)]}var t=[],r=[],n=$b(e[0]);for(const i of e){var a=$b(i);if(a!=n)throw new Error(\"Mixing Content and Parts is not supported, please group the parts into a the appropriate Content objects and specify the roles for them\");if(a)t.push(i);else{if(Kb(i)||Yb(i))throw new Error(\"To specify functionCall or functionResponse parts, please wrap them, and any other parts, in Content objects as appropriate, specifying the role for them\");r.push(i)}}return n||t.push({role:\"user\",parts:Wb(r)}),t}function Xb(e){var t={},r=[\"items\"],n=[\"anyOf\"],a=[\"properties\"];if(e.type&&e.anyOf)throw new Error(\"type and anyOf cannot be both populated.\");var i,o,s=e.anyOf;if(null!=s&&2==s.length&&(\"null\"===s[0].type?(t.nullable=!0,e=s[1]):\"null\"===s[1].type&&(t.nullable=!0,e=s[0])),e.type instanceof Array){var s=e.type,l=t;if(s.includes(\"null\")&&(l.nullable=!0),1===(s=s.filter(e=>\"null\"!==e)).length)l.type=Object.values(Ev).includes(s[0].toUpperCase())?s[0].toUpperCase():Ev.TYPE_UNSPECIFIED;else{l.anyOf=[];for(const f of s)l.anyOf.push({type:Object.values(Ev).includes(f.toUpperCase())?f.toUpperCase():Ev.TYPE_UNSPECIFIED})}}for([i,o]of Object.entries(e))if(null!=o)if(\"type\"==i){if(\"null\"===o)throw new Error(\"type: null can not be the only possible type for the field.\");o instanceof Array||(t.type=Object.values(Ev).includes(o.toUpperCase())?o.toUpperCase():Ev.TYPE_UNSPECIFIED)}else if(r.includes(i))t[i]=Xb(o);else if(n.includes(i)){var c=[];for(const h of o)\"null\"==h.type?t.nullable=!0:c.push(Xb(h));t[i]=c}else if(a.includes(i)){var u,d,p={};for([u,d]of Object.entries(o))p[u]=Xb(d);t[i]=p}else\"additionalProperties\"!==i&&(t[i]=o);return t}function eE(e){return Xb(e)}function tE(e){if(\"object\"==typeof e)return e;if(\"string\"==typeof e)return{voiceConfig:{prebuiltVoiceConfig:{voiceName:e}}};throw new Error(\"Unsupported speechConfig type: \"+typeof e)}function rE(e){if(\"multiSpeakerVoiceConfig\"in e)throw new Error(\"multiSpeakerVoiceConfig is not supported in the live API.\");return e}function nE(e){if(e.functionDeclarations)for(const t of e.functionDeclarations)t.parameters&&(Object.keys(t.parameters).includes(\"$schema\")?t.parametersJsonSchema||(t.parametersJsonSchema=t.parameters,delete t.parameters):t.parameters=Xb(t.parameters)),t.response&&(Object.keys(t.response).includes(\"$schema\")?t.responseJsonSchema||(t.responseJsonSchema=t.response,delete t.response):t.response=Xb(t.response));return e}function aE(e){if(null==e)throw new Error(\"tools is required\");if(!Array.isArray(e))throw new Error(\"tools is required and must be an array of Tools\");var t=[];for(const r of e)t.push(r);return t}function iE(e,t){if(\"string\"!=typeof t)throw new Error(\"name must be a string\");return e=e,r=\"cachedContents\",n=1,n=!(t=t).startsWith(r+\"/\")&&t.split(\"/\").length===n,e.isVertexAI()?t.startsWith(\"projects/\")?t:t.startsWith(\"locations/\")?`projects/${e.getProject()}/`+t:t.startsWith(r+\"/\")?`projects/${e.getProject()}/locations/${e.getLocation()}/`+t:n?`projects/${e.getProject()}/locations/${e.getLocation()}/${r}/`+t:t:n?r+\"/\"+t:t;var r,n}function oE(e){switch(e){case\"STATE_UNSPECIFIED\":return\"JOB_STATE_UNSPECIFIED\";case\"CREATING\":return\"JOB_STATE_RUNNING\";case\"ACTIVE\":return\"JOB_STATE_SUCCEEDED\";case\"FAILED\":return\"JOB_STATE_FAILED\";default:return e}}function sE(e){return mb(e)}function lE(e){let t;if((null!=(r=e)&&\"object\"==typeof r&&\"name\"in r&&(t=e.name),!(null!=(r=e)&&\"object\"==typeof r&&\"uri\"in r&&void 0===(t=e.uri)))&&!(null!=(r=e)&&\"object\"==typeof r&&\"video\"in r&&void 0===(t=null==(r=e.video)?void 0:r.uri))){if(void 0===(t=\"string\"==typeof e?e:t))throw new Error(\"Could not extract file name from the provided input.\");if(t.startsWith(\"https://\")){var r=t.split(\"files/\")[1].match(/[a-z0-9]+/);if(null===r)throw new Error(\"Could not extract file name from URI \"+t);t=r[0]}else t.startsWith(\"files/\")&&(t=t.split(\"files/\")[1]);return t}}function cE(e,t){let r;return r=e.isVertexAI()?t?\"publishers/google/models\":\"models\":t?\"models\":\"tunedModels\"}function uE(e){for(const n of[\"models\",\"tunedModels\",\"publisherModels\"])if(t=e,r=n,null!==t&&\"object\"==typeof t&&r in t)return e[n];var t,r;return[]}function dE(e,t){if(\"string\"!=typeof t&&!Array.isArray(t)){if(e&&e.isVertexAI()){if(t.gcsUri&&t.bigqueryUri)throw new Error(\"Only one of `gcsUri` or `bigqueryUri` can be set.\");if(!t.gcsUri&&!t.bigqueryUri)throw new Error(\"One of `gcsUri` or `bigqueryUri` must be set.\")}else{if(t.inlinedRequests&&t.fileName)throw new Error(\"Only one of `inlinedRequests` or `fileName` can be set.\");if(!t.inlinedRequests&&!t.fileName)throw new Error(\"One of `inlinedRequests` or `fileName` must be set.\")}return t}if(Array.isArray(t))return{inlinedRequests:t};if(\"string\"==typeof t){if(t.startsWith(\"gs://\"))return{format:\"jsonl\",gcsUri:[t]};if(t.startsWith(\"bq://\"))return{format:\"bigquery\",bigqueryUri:t};if(t.startsWith(\"files/\"))return{fileName:t}}throw new Error(\"Unsupported source: \"+t)}function pE(e,t){if(e.isVertexAI()){if(/^projects\\/[^/]+\\/locations\\/[^/]+\\/batchPredictionJobs\\/[^/]+$/.test(t))return t.split(\"/\").pop();if(/^\\d+$/.test(t))return t}else if(/batches\\/[^/]+$/.test(t))return t.split(\"/\").pop();throw new Error(`Invalid batch job name: ${t}.`)}function fE(e){return\"BATCH_STATE_UNSPECIFIED\"===e?\"JOB_STATE_UNSPECIFIED\":\"BATCH_STATE_PENDING\"===e?\"JOB_STATE_PENDING\":\"BATCH_STATE_SUCCEEDED\"===e?\"JOB_STATE_SUCCEEDED\":\"BATCH_STATE_FAILED\"===e?\"JOB_STATE_FAILED\":\"BATCH_STATE_CANCELLED\"===e?\"JOB_STATE_CANCELLED\":e}function hE(e){var t={},r=g(e,[\"videoMetadata\"]),r=(null!=r&&m(t,[\"videoMetadata\"],(a={},null!=(n=g(r=r,[\"fps\"]))&&m(a,[\"fps\"],n),null!=(n=g(r,[\"endOffset\"]))&&m(a,[\"endOffset\"],n),null!=(n=g(r,[\"startOffset\"]))&&m(a,[\"startOffset\"],n),a)),g(e,[\"thought\"])),n=(null!=r&&m(t,[\"thought\"],r),g(e,[\"inlineData\"])),a=(null!=n&&m(t,[\"inlineData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"data\"]);return null!=r&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),g(e,[\"fileData\"])),r=(null!=a&&m(t,[\"fileData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"fileUri\"]);return null!=r&&m(t,[\"fileUri\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(a)),g(e,[\"thoughtSignature\"])),r=(null!=r&&m(t,[\"thoughtSignature\"],r),g(e,[\"codeExecutionResult\"])),r=(null!=r&&m(t,[\"codeExecutionResult\"],r),g(e,[\"executableCode\"])),r=(null!=r&&m(t,[\"executableCode\"],r),g(e,[\"functionCall\"])),r=(null!=r&&m(t,[\"functionCall\"],r),g(e,[\"functionResponse\"])),r=(null!=r&&m(t,[\"functionResponse\"],r),g(e,[\"text\"]));return null!=r&&m(t,[\"text\"],r),t}function mE(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>hE(e)):e)}r=g(e,[\"role\"]);return null!=r&&m(t,[\"role\"],r),t}function gE(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function _E(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function yE(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"behavior\"]))&&m(t,[\"behavior\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t;var t,r})),m(t,[\"functionDeclarations\"],e)}if(void 0!==g(e,[\"retrieval\"]))throw new Error(\"retrieval parameter is not supported in Gemini API.\");r=g(e,[\"googleSearch\"]),null!=r&&m(t,[\"googleSearch\"],gE(r)),r=g(e,[\"googleSearchRetrieval\"]);if(null!=r&&m(t,[\"googleSearchRetrieval\"],_E(r)),void 0!==g(e,[\"enterpriseWebSearch\"]))throw new Error(\"enterpriseWebSearch parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"googleMaps\"]))throw new Error(\"googleMaps parameter is not supported in Gemini API.\");null!=g(e,[\"urlContext\"])&&m(t,[\"urlContext\"],{});r=g(e,[\"codeExecution\"]),null!=r&&m(t,[\"codeExecution\"],r),r=g(e,[\"computerUse\"]);return null!=r&&m(t,[\"computerUse\"],r),t}function TE(e){var t,r,n={},a=g(e,[\"latLng\"]),a=(null!=a&&m(n,[\"latLng\"],(t={},null!=(r=g(a=a,[\"latitude\"]))&&m(t,[\"latitude\"],r),null!=(r=g(a,[\"longitude\"]))&&m(t,[\"longitude\"],r),t)),g(e,[\"languageCode\"]));return null!=a&&m(n,[\"languageCode\"],a),n}function vE(e){var t,r,n={},a=g(e,[\"functionCallingConfig\"]),a=(null!=a&&m(n,[\"functionCallingConfig\"],(t={},null!=(r=g(a=a,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(a,[\"allowedFunctionNames\"]))&&m(t,[\"allowedFunctionNames\"],r),t)),g(e,[\"retrievalConfig\"]));return null!=a&&m(n,[\"retrievalConfig\"],TE(a)),n}function bE(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function EE(t){var r={},t=g(t,[\"speakerVoiceConfigs\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"speaker\"]))&&m(t,[\"speaker\"],r),null!=(r=g(e,[\"voiceConfig\"]))&&m(t,[\"voiceConfig\"],bE(r)),t;var t,r})),m(r,[\"speakerVoiceConfigs\"],e)}return r}function SE(e,t,r){var n={},a=g(t,[\"systemInstruction\"]),a=(void 0!==r&&null!=a&&m(r,[\"systemInstruction\"],mE(Jb(a))),g(t,[\"temperature\"])),a=(null!=a&&m(n,[\"temperature\"],a),g(t,[\"topP\"])),a=(null!=a&&m(n,[\"topP\"],a),g(t,[\"topK\"])),a=(null!=a&&m(n,[\"topK\"],a),g(t,[\"candidateCount\"])),a=(null!=a&&m(n,[\"candidateCount\"],a),g(t,[\"maxOutputTokens\"])),a=(null!=a&&m(n,[\"maxOutputTokens\"],a),g(t,[\"stopSequences\"])),a=(null!=a&&m(n,[\"stopSequences\"],a),g(t,[\"responseLogprobs\"])),a=(null!=a&&m(n,[\"responseLogprobs\"],a),g(t,[\"logprobs\"])),a=(null!=a&&m(n,[\"logprobs\"],a),g(t,[\"presencePenalty\"])),a=(null!=a&&m(n,[\"presencePenalty\"],a),g(t,[\"frequencyPenalty\"])),a=(null!=a&&m(n,[\"frequencyPenalty\"],a),g(t,[\"seed\"])),a=(null!=a&&m(n,[\"seed\"],a),g(t,[\"responseMimeType\"])),a=(null!=a&&m(n,[\"responseMimeType\"],a),g(t,[\"responseSchema\"])),a=(null!=a&&m(n,[\"responseSchema\"],function(e){{var t={},r=g(e,[\"anyOf\"]);null!=r&&m(t,[\"anyOf\"],r),null!=(r=g(e,[\"default\"]))&&m(t,[\"default\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"enum\"]))&&m(t,[\"enum\"],r),null!=(r=g(e,[\"example\"]))&&m(t,[\"example\"],r),null!=(r=g(e,[\"format\"]))&&m(t,[\"format\"],r),null!=(r=g(e,[\"items\"]))&&m(t,[\"items\"],r),null!=(r=g(e,[\"maxItems\"]))&&m(t,[\"maxItems\"],r),null!=(r=g(e,[\"maxLength\"]))&&m(t,[\"maxLength\"],r),null!=(r=g(e,[\"maxProperties\"]))&&m(t,[\"maxProperties\"],r),null!=(r=g(e,[\"maximum\"]))&&m(t,[\"maximum\"],r)}return null!=(r=g(e,[\"minItems\"]))&&m(t,[\"minItems\"],r),null!=(r=g(e,[\"minLength\"]))&&m(t,[\"minLength\"],r),null!=(r=g(e,[\"minProperties\"]))&&m(t,[\"minProperties\"],r),null!=(r=g(e,[\"minimum\"]))&&m(t,[\"minimum\"],r),null!=(r=g(e,[\"nullable\"]))&&m(t,[\"nullable\"],r),null!=(r=g(e,[\"pattern\"]))&&m(t,[\"pattern\"],r),null!=(r=g(e,[\"properties\"]))&&m(t,[\"properties\"],r),null!=(r=g(e,[\"propertyOrdering\"]))&&m(t,[\"propertyOrdering\"],r),null!=(r=g(e,[\"required\"]))&&m(t,[\"required\"],r),null!=(r=g(e,[\"title\"]))&&m(t,[\"title\"],r),null!=(r=g(e,[\"type\"]))&&m(t,[\"type\"],r),t}(eE(a))),g(t,[\"responseJsonSchema\"]));if(null!=a&&m(n,[\"responseJsonSchema\"],a),void 0!==g(t,[\"routingConfig\"]))throw new Error(\"routingConfig parameter is not supported in Gemini API.\");if(void 0!==g(t,[\"modelSelectionConfig\"]))throw new Error(\"modelSelectionConfig parameter is not supported in Gemini API.\");a=g(t,[\"safetySettings\"]);if(void 0!==r&&null!=a){let e=a;Array.isArray(e)&&(e=e.map(e=>{var t={};if(void 0!==g(e,[\"method\"]))throw new Error(\"method parameter is not supported in Gemini API.\");var r=g(e,[\"category\"]);return null!=r&&m(t,[\"category\"],r),null!=(r=g(e,[\"threshold\"]))&&m(t,[\"threshold\"],r),t})),m(r,[\"safetySettings\"],e)}a=g(t,[\"tools\"]);if(void 0!==r&&null!=a){let e=aE(a);m(r,[\"tools\"],e=Array.isArray(e)?e.map(e=>yE(nE(e))):e)}a=g(t,[\"toolConfig\"]);if(void 0!==r&&null!=a&&m(r,[\"toolConfig\"],vE(a)),void 0!==g(t,[\"labels\"]))throw new Error(\"labels parameter is not supported in Gemini API.\");var a=g(t,[\"cachedContent\"]),r=(void 0!==r&&null!=a&&m(r,[\"cachedContent\"],iE(e,a)),g(t,[\"responseModalities\"])),e=(null!=r&&m(n,[\"responseModalities\"],r),g(t,[\"mediaResolution\"])),a=(null!=e&&m(n,[\"mediaResolution\"],e),g(t,[\"speechConfig\"]));if(null!=a&&m(n,[\"speechConfig\"],(r=tE(a),e={},null!=(a=g(r,[\"voiceConfig\"]))&&m(e,[\"voiceConfig\"],bE(a)),null!=(a=g(r,[\"multiSpeakerVoiceConfig\"]))&&m(e,[\"multiSpeakerVoiceConfig\"],EE(a)),null!=(a=g(r,[\"languageCode\"]))&&m(e,[\"languageCode\"],a),e)),void 0!==g(t,[\"audioTimestamp\"]))throw new Error(\"audioTimestamp parameter is not supported in Gemini API.\");r=g(t,[\"thinkingConfig\"]);return null!=r&&m(n,[\"thinkingConfig\"],(a={},null!=(t=g(e=r,[\"includeThoughts\"]))&&m(a,[\"includeThoughts\"],t),null!=(t=g(e,[\"thinkingBudget\"]))&&m(a,[\"thinkingBudget\"],t),a)),n}function AE(a,e){var t={};if(void 0!==g(e,[\"format\"]))throw new Error(\"format parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"gcsUri\"]))throw new Error(\"gcsUri parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"bigqueryUri\"]))throw new Error(\"bigqueryUri parameter is not supported in Gemini API.\");var r=g(e,[\"fileName\"]),r=(null!=r&&m(t,[\"fileName\"],r),g(e,[\"inlinedRequests\"]));if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{var t=a,r={},n=g(e,[\"model\"]);if(null!=n&&m(r,[\"request\",\"model\"],_(t,n)),null!=(n=g(e,[\"contents\"]))){let e=Zb(n);m(r,[\"request\",\"contents\"],e=Array.isArray(e)?e.map(e=>mE(e)):e)}return null!=(n=g(e,[\"config\"]))&&m(r,[\"request\",\"generationConfig\"],SE(t,n,r)),r})),m(t,[\"requests\",\"requests\"],e)}return t}function OE(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"src\"])),e=(null!=n&&m(r,[\"batch\",\"inputConfig\"],AE(e,dE(e,n))),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],function(e,t){var r=g(e,[\"displayName\"]);if(void 0!==t&&null!=r&&m(t,[\"batch\",\"displayName\"],r),void 0!==g(e,[\"dest\"]))throw new Error(\"dest parameter is not supported in Gemini API.\");return{}}(e,r)),r}function CE(e){var t={},e=g(e,[\"config\"]);return null!=e&&m(t,[\"config\"],function(e,t){var r=g(e,[\"pageSize\"]),r=(void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),g(e,[\"pageToken\"]));if(void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),void 0!==g(e,[\"filter\"]))throw new Error(\"filter parameter is not supported in Gemini API.\");return{}}(e,t)),t}function wE(e,t){var r=g(e,[\"displayName\"]),r=(void 0!==t&&null!=r&&m(t,[\"displayName\"],r),g(e,[\"dest\"]));return void 0!==t&&null!=r&&m(t,[\"outputConfig\"],function(e){var t={},r=g(e,[\"format\"]);if(null!=r&&m(t,[\"predictionsFormat\"],r),null!=(r=g(e,[\"gcsUri\"]))&&m(t,[\"gcsDestination\",\"outputUriPrefix\"],r),null!=(r=g(e,[\"bigqueryUri\"]))&&m(t,[\"bigqueryDestination\",\"outputUri\"],r),void 0!==g(e,[\"fileName\"]))throw new Error(\"fileName parameter is not supported in Vertex AI.\");if(void 0!==g(e,[\"inlinedResponses\"]))throw new Error(\"inlinedResponses parameter is not supported in Vertex AI.\");return t}(function(e){if(\"string\"!=typeof e)return e;if(e.startsWith(\"gs://\"))return{format:\"jsonl\",gcsUri:e};if(e.startsWith(\"bq://\"))return{format:\"bigquery\",bigqueryUri:e};throw new Error(\"Unsupported destination: \"+e)}(r))),{}}function kE(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"model\"],_(e,n)),g(t,[\"src\"])),e=(null!=n&&m(r,[\"inputConfig\"],function(e){var t={},r=g(e,[\"format\"]);if(null!=r&&m(t,[\"instancesFormat\"],r),null!=(r=g(e,[\"gcsUri\"]))&&m(t,[\"gcsSource\",\"uris\"],r),null!=(r=g(e,[\"bigqueryUri\"]))&&m(t,[\"bigquerySource\",\"inputUri\"],r),void 0!==g(e,[\"fileName\"]))throw new Error(\"fileName parameter is not supported in Vertex AI.\");if(void 0!==g(e,[\"inlinedRequests\"]))throw new Error(\"inlinedRequests parameter is not supported in Vertex AI.\");return t}(dE(e,n))),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],wE(e,r)),r}function IE(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),r=g(e,[\"filter\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"filter\"],r),{})),n}function RE(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function NE(t){var r={},t=g(t,[\"urlMetadata\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"retrievedUrl\"]))&&m(t,[\"retrievedUrl\"],r),null!=(r=g(e,[\"urlRetrievalStatus\"]))&&m(t,[\"urlRetrievalStatus\"],r),t;var t,r})),m(r,[\"urlMetadata\"],e)}return r}function ME(e){var t={},r=g(e,[\"content\"]),r=(null!=r&&m(t,[\"content\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>RE(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(r)),g(e,[\"citationMetadata\"])),r=(null!=r&&m(t,[\"citationMetadata\"],(n={},null!=(r=g(r=r,[\"citationSources\"]))&&m(n,[\"citations\"],r),n)),g(e,[\"tokenCount\"])),n=(null!=r&&m(t,[\"tokenCount\"],r),g(e,[\"finishReason\"])),r=(null!=n&&m(t,[\"finishReason\"],n),g(e,[\"urlContextMetadata\"])),r=(null!=r&&m(t,[\"urlContextMetadata\"],NE(r)),g(e,[\"avgLogprobs\"])),r=(null!=r&&m(t,[\"avgLogprobs\"],r),g(e,[\"groundingMetadata\"])),r=(null!=r&&m(t,[\"groundingMetadata\"],r),g(e,[\"index\"])),r=(null!=r&&m(t,[\"index\"],r),g(e,[\"logprobsResult\"])),r=(null!=r&&m(t,[\"logprobsResult\"],r),g(e,[\"safetyRatings\"]));return null!=r&&m(t,[\"safetyRatings\"],r),t}function PE(e){var t={},r=g(e,[\"details\"]),r=(null!=r&&m(t,[\"details\"],r),g(e,[\"code\"])),r=(null!=r&&m(t,[\"code\"],r),g(e,[\"message\"]));return null!=r&&m(t,[\"message\"],r),t}function DE(e){var t={},r=g(e,[\"response\"]),r=(null!=r&&m(t,[\"response\"],function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"candidates\"]))){let e=r;m(t,[\"candidates\"],e=Array.isArray(e)?e.map(e=>ME(e)):e)}return null!=(r=g(e,[\"modelVersion\"]))&&m(t,[\"modelVersion\"],r),null!=(r=g(e,[\"promptFeedback\"]))&&m(t,[\"promptFeedback\"],r),null!=(r=g(e,[\"usageMetadata\"]))&&m(t,[\"usageMetadata\"],r),t}(r)),g(e,[\"error\"]));return null!=r&&m(t,[\"error\"],PE(r)),t}function xE(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"metadata\",\"displayName\"])),r=(null!=r&&m(t,[\"displayName\"],r),g(e,[\"metadata\",\"state\"])),r=(null!=r&&m(t,[\"state\"],fE(r)),g(e,[\"metadata\",\"createTime\"])),r=(null!=r&&m(t,[\"createTime\"],r),g(e,[\"metadata\",\"endTime\"])),r=(null!=r&&m(t,[\"endTime\"],r),g(e,[\"metadata\",\"updateTime\"])),r=(null!=r&&m(t,[\"updateTime\"],r),g(e,[\"metadata\",\"model\"])),r=(null!=r&&m(t,[\"model\"],r),g(e,[\"metadata\",\"output\"]));return null!=r&&m(t,[\"dest\"],function(e){var t={},r=g(e,[\"responsesFile\"]);if(null!=r&&m(t,[\"fileName\"],r),null!=(r=g(e,[\"inlinedResponses\",\"inlinedResponses\"]))){let e=r;m(t,[\"inlinedResponses\"],e=Array.isArray(e)?e.map(e=>DE(e)):e)}return t}(r)),t}function LE(e){var t={},r=g(e,[\"details\"]),r=(null!=r&&m(t,[\"details\"],r),g(e,[\"code\"])),r=(null!=r&&m(t,[\"code\"],r),g(e,[\"message\"]));return null!=r&&m(t,[\"message\"],r),t}function FE(e){var t,r,n={},a=g(e,[\"name\"]),a=(null!=a&&m(n,[\"name\"],a),g(e,[\"displayName\"])),a=(null!=a&&m(n,[\"displayName\"],a),g(e,[\"state\"])),a=(null!=a&&m(n,[\"state\"],fE(a)),g(e,[\"error\"])),a=(null!=a&&m(n,[\"error\"],LE(a)),g(e,[\"createTime\"])),a=(null!=a&&m(n,[\"createTime\"],a),g(e,[\"startTime\"])),a=(null!=a&&m(n,[\"startTime\"],a),g(e,[\"endTime\"])),a=(null!=a&&m(n,[\"endTime\"],a),g(e,[\"updateTime\"])),a=(null!=a&&m(n,[\"updateTime\"],a),g(e,[\"model\"])),a=(null!=a&&m(n,[\"model\"],a),g(e,[\"inputConfig\"])),a=(null!=a&&m(n,[\"src\"],(t={},null!=(r=g(a=a,[\"instancesFormat\"]))&&m(t,[\"format\"],r),null!=(r=g(a,[\"gcsSource\",\"uris\"]))&&m(t,[\"gcsUri\"],r),null!=(r=g(a,[\"bigquerySource\",\"inputUri\"]))&&m(t,[\"bigqueryUri\"],r),t)),g(e,[\"outputConfig\"]));return null!=a&&m(n,[\"dest\"],(r={},null!=(e=g(t=a,[\"predictionsFormat\"]))&&m(r,[\"format\"],e),null!=(e=g(t,[\"gcsDestination\",\"outputUriPrefix\"]))&&m(r,[\"gcsUri\"],e),null!=(e=g(t,[\"bigqueryDestination\",\"outputUri\"]))&&m(r,[\"bigqueryUri\"],e),r)),n}(e=lb=lb||{}).PAGED_ITEM_BATCH_JOBS=\"batchJobs\",e.PAGED_ITEM_MODELS=\"models\",e.PAGED_ITEM_TUNING_JOBS=\"tuningJobs\",e.PAGED_ITEM_FILES=\"files\",e.PAGED_ITEM_CACHED_CONTENTS=\"cachedContents\";class UE{constructor(e,t,r,n){this.pageInternal=[],this.paramsInternal={},this.requestInternal=t,this.init(e,r,n)}init(e,t,r){this.nameInternal=e,this.pageInternal=t[this.nameInternal]||[],this.sdkHttpResponseInternal=null==t?void 0:t.sdkHttpResponse,this.idxInternal=0;let n={config:{}};(n=r&&0!==Object.keys(r).length?\"object\"==typeof r?Object.assign({},r):r:{config:{}}).config&&(n.config.pageToken=t.nextPageToken),this.paramsInternal=n,this.pageInternalSize=null!=(r=null==(e=n.config)?void 0:e.pageSize)?r:this.pageInternal.length}initNextPage(e){this.init(this.nameInternal,e,this.paramsInternal)}get page(){return this.pageInternal}get name(){return this.nameInternal}get pageSize(){return this.pageInternalSize}get sdkHttpResponse(){return this.sdkHttpResponseInternal}get params(){return this.paramsInternal}get pageLength(){return this.pageInternal.length}getItem(e){return this.pageInternal[e]}[Symbol.asyncIterator](){return{next:async()=>{if(this.idxInternal>=this.pageLength){if(!this.hasNextPage())return{value:void 0,done:!0};await this.nextPage()}var e=this.getItem(this.idxInternal);return this.idxInternal+=1,{value:e,done:!1}},return:async()=>({value:void 0,done:!0})}}async nextPage(){var e;if(this.hasNextPage())return e=await this.requestInternal(this.params),this.initNextPage(e),this.page;throw new Error(\"No more pages to fetch.\")}hasNextPage(){var e;return void 0!==(null==(e=this.params.config)?void 0:e.pageToken)}}class BE extends hb{constructor(e){super(),this.apiClient=e,this.create=async e=>{if(this.apiClient.isVertexAI()){var t=Date.now().toString();if(Array.isArray(e.src))throw new Error(\"InlinedRequest[] is not supported in Vertex AI. Please use Google Cloud Storage URI or BigQuery URI instead.\");if(e.config=e.config||{},void 0===e.config.displayName&&(e.config.displayName=\"genaiBatchJob_${timestampStr}\"),void 0===e.config.dest&&\"string\"==typeof e.src)if(e.src.startsWith(\"gs://\")&&e.src.endsWith(\".jsonl\"))e.config.dest=e.src.slice(0,-6)+\"/dest\";else{if(!e.src.startsWith(\"bq://\"))throw new Error(\"Unsupported source:\"+e.src);e.config.dest=e.src+\"_dest_\"+t}}return this.createInternal(e)},this.list=async(e={})=>new UE(lb.PAGED_ITEM_BATCH_JOBS,e=>this.listInternal(e),await this.listInternal(e),e)}async createInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=kE(this.apiClient,e),n=c(\"batchPredictionJobs\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return FE(e)})):(t=OE(this.apiClient,e),n=c(\"{model}:batchGenerateContent\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return xE(e)}))}async get(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"name\"]))&&m(a,[\"_url\",\"name\"],pE(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"batchPredictionJobs/{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"GET\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(e=>{return FE(e)})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"name\"]))&&m(i,[\"_url\",\"name\"],pE(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"batches/{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return xE(e)}))}async cancel(e){var t,r,n,a,i;let o=\"\",s={};this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"name\"]))&&m(a,[\"_url\",\"name\"],pE(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,o=c(\"batchPredictionJobs/{name}:cancel\",i._url),s=i._query,delete i.config,delete i._url,delete i._query,await this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(i),httpMethod:\"POST\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"name\"]))&&m(i,[\"_url\",\"name\"],pE(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,o=c(\"batches/{name}:cancel\",t._url),s=t._query,delete t.config,delete t._url,delete t._query,await this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}))}async listInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=IE(e),n=c(\"batchPredictionJobs\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"batchPredictionJobs\"]))){let e=r;m(t,[\"batchJobs\"],e=Array.isArray(e)?e.map(e=>FE(e)):e)}return t}(e),t=new Lb;return Object.assign(t,e),t})):(t=CE(e),n=c(\"batches\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"operations\"]))){let e=r;m(t,[\"batchJobs\"],e=Array.isArray(e)?e.map(e=>xE(e)):e)}return t}(e),t=new Lb;return Object.assign(t,e),t}))}async delete(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"name\"]))&&m(a,[\"_url\",\"name\"],pE(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"batchPredictionJobs/{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"DELETE\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(e=>{var t,r;return t={},null!=(r=g(e=e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"done\"]))&&m(t,[\"done\"],r),null!=(r=g(e,[\"error\"]))&&m(t,[\"error\"],LE(r)),t})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"name\"]))&&m(i,[\"_url\",\"name\"],pE(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"batches/{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"DELETE\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{var t,r;return t={},null!=(r=g(e=e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"done\"]))&&m(t,[\"done\"],r),null!=(r=g(e,[\"error\"]))&&m(t,[\"error\"],PE(r)),t}))}}function jE(e){var t={},r=g(e,[\"videoMetadata\"]),r=(null!=r&&m(t,[\"videoMetadata\"],(a={},null!=(n=g(r=r,[\"fps\"]))&&m(a,[\"fps\"],n),null!=(n=g(r,[\"endOffset\"]))&&m(a,[\"endOffset\"],n),null!=(n=g(r,[\"startOffset\"]))&&m(a,[\"startOffset\"],n),a)),g(e,[\"thought\"])),n=(null!=r&&m(t,[\"thought\"],r),g(e,[\"inlineData\"])),a=(null!=n&&m(t,[\"inlineData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"data\"]);return null!=r&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),g(e,[\"fileData\"])),r=(null!=a&&m(t,[\"fileData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"fileUri\"]);return null!=r&&m(t,[\"fileUri\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(a)),g(e,[\"thoughtSignature\"])),r=(null!=r&&m(t,[\"thoughtSignature\"],r),g(e,[\"codeExecutionResult\"])),r=(null!=r&&m(t,[\"codeExecutionResult\"],r),g(e,[\"executableCode\"])),r=(null!=r&&m(t,[\"executableCode\"],r),g(e,[\"functionCall\"])),r=(null!=r&&m(t,[\"functionCall\"],r),g(e,[\"functionResponse\"])),r=(null!=r&&m(t,[\"functionResponse\"],r),g(e,[\"text\"]));return null!=r&&m(t,[\"text\"],r),t}function HE(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>jE(e)):e)}r=g(e,[\"role\"]);return null!=r&&m(t,[\"role\"],r),t}function GE(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function VE(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function qE(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"behavior\"]))&&m(t,[\"behavior\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t;var t,r})),m(t,[\"functionDeclarations\"],e)}if(void 0!==g(e,[\"retrieval\"]))throw new Error(\"retrieval parameter is not supported in Gemini API.\");r=g(e,[\"googleSearch\"]),null!=r&&m(t,[\"googleSearch\"],GE(r)),r=g(e,[\"googleSearchRetrieval\"]);if(null!=r&&m(t,[\"googleSearchRetrieval\"],VE(r)),void 0!==g(e,[\"enterpriseWebSearch\"]))throw new Error(\"enterpriseWebSearch parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"googleMaps\"]))throw new Error(\"googleMaps parameter is not supported in Gemini API.\");null!=g(e,[\"urlContext\"])&&m(t,[\"urlContext\"],{});r=g(e,[\"codeExecution\"]),null!=r&&m(t,[\"codeExecution\"],r),r=g(e,[\"computerUse\"]);return null!=r&&m(t,[\"computerUse\"],r),t}function zE(e){var t,r,n={},a=g(e,[\"latLng\"]),a=(null!=a&&m(n,[\"latLng\"],(t={},null!=(r=g(a=a,[\"latitude\"]))&&m(t,[\"latitude\"],r),null!=(r=g(a,[\"longitude\"]))&&m(t,[\"longitude\"],r),t)),g(e,[\"languageCode\"]));return null!=a&&m(n,[\"languageCode\"],a),n}function WE(e){var t,r,n={},a=g(e,[\"functionCallingConfig\"]),a=(null!=a&&m(n,[\"functionCallingConfig\"],(t={},null!=(r=g(a=a,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(a,[\"allowedFunctionNames\"]))&&m(t,[\"allowedFunctionNames\"],r),t)),g(e,[\"retrievalConfig\"]));return null!=a&&m(n,[\"retrievalConfig\"],zE(a)),n}function $E(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"model\"],jb(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],function(e,t){var r=g(e,[\"ttl\"]),r=(void 0!==t&&null!=r&&m(t,[\"ttl\"],r),g(e,[\"expireTime\"])),r=(void 0!==t&&null!=r&&m(t,[\"expireTime\"],r),g(e,[\"displayName\"])),r=(void 0!==t&&null!=r&&m(t,[\"displayName\"],r),g(e,[\"contents\"]));if(void 0!==t&&null!=r){let e=Zb(r);m(t,[\"contents\"],e=Array.isArray(e)?e.map(e=>HE(e)):e)}if(r=g(e,[\"systemInstruction\"]),void 0!==t&&null!=r&&m(t,[\"systemInstruction\"],HE(Jb(r))),r=g(e,[\"tools\"]),void 0!==t&&null!=r){let e=r;m(t,[\"tools\"],e=Array.isArray(e)?e.map(e=>qE(e)):e)}if(r=g(e,[\"toolConfig\"]),void 0!==t&&null!=r&&m(t,[\"toolConfig\"],WE(r)),void 0!==g(e,[\"kmsKeyName\"]))throw new Error(\"kmsKeyName parameter is not supported in Gemini API.\");return{}}(e,r)),r}function KE(e,t){var r={},n=g(t,[\"name\"]),e=(null!=n&&m(r,[\"_url\",\"name\"],iE(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"ttl\"]),void 0!==n&&null!=e&&m(n,[\"ttl\"],e),e=g(t,[\"expireTime\"]),void 0!==n&&null!=e&&m(n,[\"expireTime\"],e),{})),r}function YE(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),{})),n}function JE(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"displayName\"]))&&m(t,[\"displayName\"],r),null!=(r=g(a,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"displayName\"]))&&m(r,[\"displayName\"],o),null!=(o=g(a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function QE(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>JE(e)):e)}r=g(e,[\"role\"]);return null!=r&&m(t,[\"role\"],r),t}function ZE(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function XE(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function eS(e){var t={},r=g(e,[\"apiKeyConfig\"]),r=(null!=r&&m(t,[\"apiKeyConfig\"],(n={},null!=(r=g(r=r,[\"apiKeyString\"]))&&m(n,[\"apiKeyString\"],r),n)),g(e,[\"authType\"])),n=(null!=r&&m(t,[\"authType\"],r),g(e,[\"googleServiceAccountConfig\"])),r=(null!=n&&m(t,[\"googleServiceAccountConfig\"],n),g(e,[\"httpBasicAuthConfig\"])),r=(null!=r&&m(t,[\"httpBasicAuthConfig\"],r),g(e,[\"oauthConfig\"])),r=(null!=r&&m(t,[\"oauthConfig\"],r),g(e,[\"oidcConfig\"]));return null!=r&&m(t,[\"oidcConfig\"],r),t}function tS(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{var t={};if(void 0!==g(e,[\"behavior\"]))throw new Error(\"behavior parameter is not supported in Vertex AI.\");var r=g(e,[\"description\"]);return null!=r&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t})),m(t,[\"functionDeclarations\"],e)}var r=g(e,[\"retrieval\"]),r=(null!=r&&m(t,[\"retrieval\"],r),g(e,[\"googleSearch\"])),r=(null!=r&&m(t,[\"googleSearch\"],ZE(r)),g(e,[\"googleSearchRetrieval\"])),r=(null!=r&&m(t,[\"googleSearchRetrieval\"],XE(r)),g(e,[\"enterpriseWebSearch\"])),r=(null!=r&&m(t,[\"enterpriseWebSearch\"],{}),g(e,[\"googleMaps\"])),r=(null!=r&&m(t,[\"googleMaps\"],(n={},null!=(r=g(r=r,[\"authConfig\"]))&&m(n,[\"authConfig\"],eS(r)),n)),g(e,[\"urlContext\"])),n=(null!=r&&m(t,[\"urlContext\"],{}),g(e,[\"codeExecution\"])),r=(null!=n&&m(t,[\"codeExecution\"],n),g(e,[\"computerUse\"]));return null!=r&&m(t,[\"computerUse\"],r),t}function rS(e){var t,r,n={},a=g(e,[\"latLng\"]),a=(null!=a&&m(n,[\"latLng\"],(t={},null!=(r=g(a=a,[\"latitude\"]))&&m(t,[\"latitude\"],r),null!=(r=g(a,[\"longitude\"]))&&m(t,[\"longitude\"],r),t)),g(e,[\"languageCode\"]));return null!=a&&m(n,[\"languageCode\"],a),n}function nS(e){var t,r,n={},a=g(e,[\"functionCallingConfig\"]),a=(null!=a&&m(n,[\"functionCallingConfig\"],(t={},null!=(r=g(a=a,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(a,[\"allowedFunctionNames\"]))&&m(t,[\"allowedFunctionNames\"],r),t)),g(e,[\"retrievalConfig\"]));return null!=a&&m(n,[\"retrievalConfig\"],rS(a)),n}function aS(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"model\"],jb(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],function(e,t){var r=g(e,[\"ttl\"]),r=(void 0!==t&&null!=r&&m(t,[\"ttl\"],r),g(e,[\"expireTime\"])),r=(void 0!==t&&null!=r&&m(t,[\"expireTime\"],r),g(e,[\"displayName\"])),r=(void 0!==t&&null!=r&&m(t,[\"displayName\"],r),g(e,[\"contents\"]));if(void 0!==t&&null!=r){let e=Zb(r);m(t,[\"contents\"],e=Array.isArray(e)?e.map(e=>QE(e)):e)}if(r=g(e,[\"systemInstruction\"]),void 0!==t&&null!=r&&m(t,[\"systemInstruction\"],QE(Jb(r))),r=g(e,[\"tools\"]),void 0!==t&&null!=r){let e=r;m(t,[\"tools\"],e=Array.isArray(e)?e.map(e=>tS(e)):e)}return r=g(e,[\"toolConfig\"]),void 0!==t&&null!=r&&m(t,[\"toolConfig\"],nS(r)),r=g(e,[\"kmsKeyName\"]),void 0!==t&&null!=r&&m(t,[\"encryption_spec\",\"kmsKeyName\"],r),{}}(e,r)),r}function iS(e,t){var r={},n=g(t,[\"name\"]),e=(null!=n&&m(r,[\"_url\",\"name\"],iE(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"ttl\"]),void 0!==n&&null!=e&&m(n,[\"ttl\"],e),e=g(t,[\"expireTime\"]),void 0!==n&&null!=e&&m(n,[\"expireTime\"],e),{})),r}function oS(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),{})),n}function sS(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"displayName\"])),r=(null!=r&&m(t,[\"displayName\"],r),g(e,[\"model\"])),r=(null!=r&&m(t,[\"model\"],r),g(e,[\"createTime\"])),r=(null!=r&&m(t,[\"createTime\"],r),g(e,[\"updateTime\"])),r=(null!=r&&m(t,[\"updateTime\"],r),g(e,[\"expireTime\"])),r=(null!=r&&m(t,[\"expireTime\"],r),g(e,[\"usageMetadata\"]));return null!=r&&m(t,[\"usageMetadata\"],r),t}function lS(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"displayName\"])),r=(null!=r&&m(t,[\"displayName\"],r),g(e,[\"model\"])),r=(null!=r&&m(t,[\"model\"],r),g(e,[\"createTime\"])),r=(null!=r&&m(t,[\"createTime\"],r),g(e,[\"updateTime\"])),r=(null!=r&&m(t,[\"updateTime\"],r),g(e,[\"expireTime\"])),r=(null!=r&&m(t,[\"expireTime\"],r),g(e,[\"usageMetadata\"]));return null!=r&&m(t,[\"usageMetadata\"],r),t}class cS extends hb{constructor(e){super(),this.apiClient=e,this.list=async(e={})=>new UE(lb.PAGED_ITEM_CACHED_CONTENTS,e=>this.listInternal(e),await this.listInternal(e),e)}async create(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=aS(this.apiClient,e),n=c(\"cachedContents\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return lS(e)})):(t=$E(this.apiClient,e),n=c(\"cachedContents\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return sS(e)}))}async get(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"name\"]))&&m(a,[\"_url\",\"name\"],iE(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"GET\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(e=>{return lS(e)})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"name\"]))&&m(i,[\"_url\",\"name\"],iE(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return sS(e)}))}async delete(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"name\"]))&&m(a,[\"_url\",\"name\"],iE(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"DELETE\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(()=>{var e={},t=new Nb;return Object.assign(t,e),t})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"name\"]))&&m(i,[\"_url\",\"name\"],iE(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"DELETE\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(()=>{var e={},t=new Nb;return Object.assign(t,e),t}))}async update(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=iS(this.apiClient,e),n=c(\"{name}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"PATCH\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return lS(e)})):(t=KE(this.apiClient,e),n=c(\"{name}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"PATCH\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return sS(e)}))}async listInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=oS(e),n=c(\"cachedContents\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"cachedContents\"]))){let e=r;m(t,[\"cachedContents\"],e=Array.isArray(e)?e.map(e=>lS(e)):e)}return t}(e),t=new Mb;return Object.assign(t,e),t})):(t=YE(e),n=c(\"cachedContents\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"cachedContents\"]))){let e=r;m(t,[\"cachedContents\"],e=Array.isArray(e)?e.map(e=>sS(e)):e)}return t}(e),t=new Mb;return Object.assign(t,e),t}))}}function uS(e){var t=\"function\"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function dS(e){return this instanceof dS?(this.v=e,this):new dS(e)}function pS(e,t,r){var a,i,o;if(Symbol.asyncIterator)return a=r.apply(e,t||[]),i=[],o=Object.create((\"function\"==typeof AsyncIterator?AsyncIterator:Object).prototype),n(\"next\"),n(\"throw\"),n(\"return\",function(t){return function(e){return Promise.resolve(e).then(t,c)}}),o[Symbol.asyncIterator]=function(){return this},o;throw new TypeError(\"Symbol.asyncIterator is not defined.\");function n(n,e){a[n]&&(o[n]=function(r){return new Promise(function(e,t){1<i.push([n,r,e,t])||s(n,r)})},e)&&(o[n]=e(o[n]))}function s(e,t){try{(r=a[e](t)).value instanceof dS?Promise.resolve(r.value.v).then(l,c):u(i[0][2],r)}catch(e){u(i[0][3],e)}var r}function l(e){s(\"next\",e)}function c(e){s(\"throw\",e)}function u(e,t){e(t),i.shift(),i.length&&s(i[0][0],i[0][1])}}function fS(o){var e,t;if(Symbol.asyncIterator)return(e=o[Symbol.asyncIterator])?e.call(o):(o=uS(o),t={},r(\"next\"),r(\"throw\"),r(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);throw new TypeError(\"Symbol.asyncIterator is not defined.\");function r(i){t[i]=o[i]&&function(a){return new Promise(function(e,t){var r,n;a=o[i](a),r=e,e=t,n=a.done,t=a.value,Promise.resolve(t).then(function(e){r({value:e,done:n})},e)})}}}function hS(e){if(void 0===e.parts||0===e.parts.length)return!1;for(const t of e.parts){if(void 0===t||0===Object.keys(t).length)return!1;if(!t.thought&&void 0!==t.text&&\"\"===t.text)return!1}return!0}function mS(t){if(void 0===t||0===t.length)return[];var r=[],n=t.length;let a=0;for(;a<n;)if(\"user\"===t[a].role)r.push(t[a]),a++;else{var i=[];let e=!0;for(;a<n&&\"model\"===t[a].role;)i.push(t[a]),e&&!hS(t[a])&&(e=!1),a++;e?r.push(...i):r.pop()}return r}class gS{constructor(e,t){this.modelsModule=e,this.apiClient=t}create(e){return new _S(this.apiClient,this.modelsModule,e.model,e.config,structuredClone(e.history))}}class _S{constructor(e,t,r,n={},a=[]){this.apiClient=e,this.modelsModule=t,this.model=r,this.config=n,this.history=a,this.sendPromise=Promise.resolve();e=a;if(0!==e.length)for(const i of e)if(\"user\"!==i.role&&\"model\"!==i.role)throw new Error(`Role must be user or model, but got ${i.role}.`)}async sendMessage(e){await this.sendPromise;const a=Jb(e.message),i=this.modelsModule.generateContent({model:this.model,contents:this.getHistory(!0).concat(a),config:null!=(e=e.config)?e:this.config});return this.sendPromise=(async()=>{var e=await i,t=null==(t=null==(t=e.candidates)?void 0:t[0])?void 0:t.content,e=e.automaticFunctionCallingHistory,r=this.getHistory(!0).length;let n=[];null!=e&&(n=null!=(e=e.slice(r))?e:[]);r=t?[t]:[];this.recordHistory(a,r,n)})(),await this.sendPromise.catch(()=>{this.sendPromise=Promise.resolve()}),i}async sendMessageStream(e){await this.sendPromise;var t=Jb(e.message),e=this.modelsModule.generateContentStream({model:this.model,contents:this.getHistory(!0).concat(t),config:null!=(e=e.config)?e:this.config}),e=(this.sendPromise=e.then(()=>{}).catch(()=>{}),await e);return this.processStreamResponse(e,t)}getHistory(e=!1){e=e?mS(this.history):this.history;return structuredClone(e)}processStreamResponse(d,p){var f,h;return pS(this,arguments,function*(){var e,t,r,n,a=[];try{for(var i,o=!0,s=fS(d);!(e=(i=yield dS(s.next())).done);o=!0){var l,c=i.value,o=!1,u=c;(null!=(n=u).candidates&&0!==n.candidates.length&&void 0!==(n=null==(n=n.candidates[0])?void 0:n.content)?hS(n):void 0)&&void 0!==(l=null==(h=null==(f=u.candidates)?void 0:f[0])?void 0:h.content)&&a.push(l),yield yield dS(u)}}catch(e){t={error:e}}finally{try{o||e||!(r=s.return)||(yield dS(r.call(s)))}finally{if(t)throw t.error}}this.recordHistory(p,a)})}recordHistory(e,t,r){let n=[];0<t.length&&t.every(e=>void 0!==e.role)?n=t:n.push({role:\"model\",parts:[]}),r&&0<r.length?this.history.push(...mS(r)):this.history.push(e),this.history.push(...n)}}class yS extends Error{constructor(e){super(e.message),this.name=\"ApiError\",this.status=e.status,Object.setPrototypeOf(this,yS.prototype)}}function TS(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),{})),n}function vS(e){var t,r={},n=g(e,[\"name\"]),n=(null!=n&&m(r,[\"name\"],n),g(e,[\"displayName\"])),n=(null!=n&&m(r,[\"displayName\"],n),g(e,[\"mimeType\"])),n=(null!=n&&m(r,[\"mimeType\"],n),g(e,[\"sizeBytes\"])),n=(null!=n&&m(r,[\"sizeBytes\"],n),g(e,[\"createTime\"])),n=(null!=n&&m(r,[\"createTime\"],n),g(e,[\"expirationTime\"])),n=(null!=n&&m(r,[\"expirationTime\"],n),g(e,[\"updateTime\"])),n=(null!=n&&m(r,[\"updateTime\"],n),g(e,[\"sha256Hash\"])),n=(null!=n&&m(r,[\"sha256Hash\"],n),g(e,[\"uri\"])),n=(null!=n&&m(r,[\"uri\"],n),g(e,[\"downloadUri\"])),n=(null!=n&&m(r,[\"downloadUri\"],n),g(e,[\"state\"])),n=(null!=n&&m(r,[\"state\"],n),g(e,[\"source\"])),n=(null!=n&&m(r,[\"source\"],n),g(e,[\"videoMetadata\"])),n=(null!=n&&m(r,[\"videoMetadata\"],n),g(e,[\"error\"]));return null!=n&&m(r,[\"error\"],(e={},null!=(t=g(n=n,[\"details\"]))&&m(e,[\"details\"],t),null!=(t=g(n,[\"message\"]))&&m(e,[\"message\"],t),null!=(t=g(n,[\"code\"]))&&m(e,[\"code\"],t),e)),r}function bS(e){var t,r={},n=g(e,[\"name\"]),n=(null!=n&&m(r,[\"name\"],n),g(e,[\"displayName\"])),n=(null!=n&&m(r,[\"displayName\"],n),g(e,[\"mimeType\"])),n=(null!=n&&m(r,[\"mimeType\"],n),g(e,[\"sizeBytes\"])),n=(null!=n&&m(r,[\"sizeBytes\"],n),g(e,[\"createTime\"])),n=(null!=n&&m(r,[\"createTime\"],n),g(e,[\"expirationTime\"])),n=(null!=n&&m(r,[\"expirationTime\"],n),g(e,[\"updateTime\"])),n=(null!=n&&m(r,[\"updateTime\"],n),g(e,[\"sha256Hash\"])),n=(null!=n&&m(r,[\"sha256Hash\"],n),g(e,[\"uri\"])),n=(null!=n&&m(r,[\"uri\"],n),g(e,[\"downloadUri\"])),n=(null!=n&&m(r,[\"downloadUri\"],n),g(e,[\"state\"])),n=(null!=n&&m(r,[\"state\"],n),g(e,[\"source\"])),n=(null!=n&&m(r,[\"source\"],n),g(e,[\"videoMetadata\"])),n=(null!=n&&m(r,[\"videoMetadata\"],n),g(e,[\"error\"]));return null!=n&&m(r,[\"error\"],(e={},null!=(t=g(n=n,[\"details\"]))&&m(e,[\"details\"],t),null!=(t=g(n,[\"message\"]))&&m(e,[\"message\"],t),null!=(t=g(n,[\"code\"]))&&m(e,[\"code\"],t),e)),r}class ES extends hb{constructor(e){super(),this.apiClient=e,this.list=async(e={})=>new UE(lb.PAGED_ITEM_FILES,e=>this.listInternal(e),await this.listInternal(e),e)}async upload(e){if(this.apiClient.isVertexAI())throw new Error(\"Vertex AI does not support uploading files. You can share files through a GCS bucket.\");return this.apiClient.uploadFile(e.file,e.config).then(e=>{return bS(e)})}async download(e){await this.apiClient.downloadFile(e)}async listInternal(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())throw new Error(\"This method is only supported by the Gemini Developer API.\");return r=c(\"files\",(t=TS(e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"files\"]))){let e=r;m(t,[\"files\"],e=Array.isArray(e)?e.map(e=>bS(e)):e)}return t}(e),t=new Pb;return Object.assign(t,e),t})}async createInternal(e){var t,r,n,a=\"\",i={};if(this.apiClient.isVertexAI())throw new Error(\"This method is only supported by the Gemini Developer API.\");return r={},null!=(n=g(t=e,[\"file\"]))&&m(r,[\"file\"],vS(n)),null!=(n=g(t,[\"config\"]))&&m(r,[\"config\"],n),a=c(\"upload/v1beta/files\",(t=r)._url),i=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:a,queryParams:i,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json()).then(e=>{t={},null!=(e=g(e=e,[\"sdkHttpResponse\"]))&&m(t,[\"sdkHttpResponse\"],e);var e=t,t=new Db;return Object.assign(t,e),t})}async get(e){var t,r,n,a=\"\",i={};if(this.apiClient.isVertexAI())throw new Error(\"This method is only supported by the Gemini Developer API.\");return r={},null!=(n=g(t=e,[\"name\"]))&&m(r,[\"_url\",\"file\"],lE(n)),null!=(n=g(t,[\"config\"]))&&m(r,[\"config\"],n),a=c(\"files/{file}\",(t=r)._url),i=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:a,queryParams:i,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json()).then(e=>{return bS(e)})}async delete(e){var t,r,n,a=\"\",i={};if(this.apiClient.isVertexAI())throw new Error(\"This method is only supported by the Gemini Developer API.\");return r={},null!=(n=g(t=e,[\"name\"]))&&m(r,[\"_url\",\"file\"],lE(n)),null!=(n=g(t,[\"config\"]))&&m(r,[\"config\"],n),a=c(\"files/{file}\",(t=r)._url),i=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:a,queryParams:i,body:JSON.stringify(t),httpMethod:\"DELETE\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json()).then(()=>{var e={},t=new xb;return Object.assign(t,e),t})}}function SS(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function AS(t){var r={},t=g(t,[\"speakerVoiceConfigs\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"speaker\"]))&&m(t,[\"speaker\"],r),null!=(r=g(e,[\"voiceConfig\"]))&&m(t,[\"voiceConfig\"],SS(r)),t;var t,r})),m(r,[\"speakerVoiceConfigs\"],e)}return r}function OS(e){var t={},r=g(e,[\"videoMetadata\"]),r=(null!=r&&m(t,[\"videoMetadata\"],(a={},null!=(n=g(r=r,[\"fps\"]))&&m(a,[\"fps\"],n),null!=(n=g(r,[\"endOffset\"]))&&m(a,[\"endOffset\"],n),null!=(n=g(r,[\"startOffset\"]))&&m(a,[\"startOffset\"],n),a)),g(e,[\"thought\"])),n=(null!=r&&m(t,[\"thought\"],r),g(e,[\"inlineData\"])),a=(null!=n&&m(t,[\"inlineData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"data\"]);return null!=r&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),g(e,[\"fileData\"])),r=(null!=a&&m(t,[\"fileData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"fileUri\"]);return null!=r&&m(t,[\"fileUri\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(a)),g(e,[\"thoughtSignature\"])),r=(null!=r&&m(t,[\"thoughtSignature\"],r),g(e,[\"codeExecutionResult\"])),r=(null!=r&&m(t,[\"codeExecutionResult\"],r),g(e,[\"executableCode\"])),r=(null!=r&&m(t,[\"executableCode\"],r),g(e,[\"functionCall\"])),r=(null!=r&&m(t,[\"functionCall\"],r),g(e,[\"functionResponse\"])),r=(null!=r&&m(t,[\"functionResponse\"],r),g(e,[\"text\"]));return null!=r&&m(t,[\"text\"],r),t}function CS(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function wS(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function kS(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"behavior\"]))&&m(t,[\"behavior\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t;var t,r})),m(t,[\"functionDeclarations\"],e)}if(void 0!==g(e,[\"retrieval\"]))throw new Error(\"retrieval parameter is not supported in Gemini API.\");r=g(e,[\"googleSearch\"]),null!=r&&m(t,[\"googleSearch\"],CS(r)),r=g(e,[\"googleSearchRetrieval\"]);if(null!=r&&m(t,[\"googleSearchRetrieval\"],wS(r)),void 0!==g(e,[\"enterpriseWebSearch\"]))throw new Error(\"enterpriseWebSearch parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"googleMaps\"]))throw new Error(\"googleMaps parameter is not supported in Gemini API.\");null!=g(e,[\"urlContext\"])&&m(t,[\"urlContext\"],{});r=g(e,[\"codeExecution\"]),null!=r&&m(t,[\"codeExecution\"],r),r=g(e,[\"computerUse\"]);return null!=r&&m(t,[\"computerUse\"],r),t}function IS(){return{}}function RS(e){var t,r={},n=g(e,[\"automaticActivityDetection\"]),n=(null!=n&&m(r,[\"automaticActivityDetection\"],(t={},null!=(a=g(n=n,[\"disabled\"]))&&m(t,[\"disabled\"],a),null!=(a=g(n,[\"startOfSpeechSensitivity\"]))&&m(t,[\"startOfSpeechSensitivity\"],a),null!=(a=g(n,[\"endOfSpeechSensitivity\"]))&&m(t,[\"endOfSpeechSensitivity\"],a),null!=(a=g(n,[\"prefixPaddingMs\"]))&&m(t,[\"prefixPaddingMs\"],a),null!=(a=g(n,[\"silenceDurationMs\"]))&&m(t,[\"silenceDurationMs\"],a),t)),g(e,[\"activityHandling\"])),a=(null!=n&&m(r,[\"activityHandling\"],n),g(e,[\"turnCoverage\"]));return null!=a&&m(r,[\"turnCoverage\"],a),r}function NS(e){var t={},r=g(e,[\"triggerTokens\"]),r=(null!=r&&m(t,[\"triggerTokens\"],r),g(e,[\"slidingWindow\"]));return null!=r&&m(t,[\"slidingWindow\"],(e={},null!=(r=g(r=r,[\"targetTokens\"]))&&m(e,[\"targetTokens\"],r),e)),t}function MS(e,t){var r=g(e,[\"generationConfig\"]),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\"],r),g(e,[\"responseModalities\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"responseModalities\"],r),g(e,[\"temperature\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"temperature\"],r),g(e,[\"topP\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topP\"],r),g(e,[\"topK\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topK\"],r),g(e,[\"maxOutputTokens\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"maxOutputTokens\"],r),g(e,[\"mediaResolution\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"mediaResolution\"],r),g(e,[\"seed\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"seed\"],r),g(e,[\"speechConfig\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"speechConfig\"],(r=rE(r),a={},null!=(n=g(r,[\"voiceConfig\"]))&&m(a,[\"voiceConfig\"],SS(n)),null!=(n=g(r,[\"multiSpeakerVoiceConfig\"]))&&m(a,[\"multiSpeakerVoiceConfig\"],AS(n)),null!=(n=g(r,[\"languageCode\"]))&&m(a,[\"languageCode\"],n),a)),g(e,[\"enableAffectiveDialog\"])),n=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"enableAffectiveDialog\"],r),g(e,[\"systemInstruction\"])),a=(void 0!==t&&null!=n&&m(t,[\"setup\",\"systemInstruction\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>OS(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(Jb(n))),g(e,[\"tools\"]));if(void 0!==t&&null!=a){let e=aE(a);m(t,[\"setup\",\"tools\"],e=Array.isArray(e)?e.map(e=>kS(nE(e))):e)}r=g(e,[\"sessionResumption\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"sessionResumption\"],function(e){var t={},r=g(e,[\"handle\"]);if(null!=r&&m(t,[\"handle\"],r),void 0!==g(e,[\"transparent\"]))throw new Error(\"transparent parameter is not supported in Gemini API.\");return t}(r)),r=g(e,[\"inputAudioTranscription\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"inputAudioTranscription\"],IS()),r=g(e,[\"outputAudioTranscription\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"outputAudioTranscription\"],IS()),r=g(e,[\"realtimeInputConfig\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"realtimeInputConfig\"],RS(r)),r=g(e,[\"contextWindowCompression\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"contextWindowCompression\"],NS(r)),r=g(e,[\"proactivity\"]);return void 0!==t&&null!=r&&m(t,[\"setup\",\"proactivity\"],(e={},null!=(t=g(t=r,[\"proactiveAudio\"]))&&m(e,[\"proactiveAudio\"],t),e)),{}}function PS(e){var t={},r=g(e,[\"text\"]),r=(null!=r&&m(t,[\"text\"],r),g(e,[\"weight\"]));return null!=r&&m(t,[\"weight\"],r),t}function DS(e){var t={},r=g(e,[\"temperature\"]),r=(null!=r&&m(t,[\"temperature\"],r),g(e,[\"topK\"])),r=(null!=r&&m(t,[\"topK\"],r),g(e,[\"seed\"])),r=(null!=r&&m(t,[\"seed\"],r),g(e,[\"guidance\"])),r=(null!=r&&m(t,[\"guidance\"],r),g(e,[\"bpm\"])),r=(null!=r&&m(t,[\"bpm\"],r),g(e,[\"density\"])),r=(null!=r&&m(t,[\"density\"],r),g(e,[\"brightness\"])),r=(null!=r&&m(t,[\"brightness\"],r),g(e,[\"scale\"])),r=(null!=r&&m(t,[\"scale\"],r),g(e,[\"muteBass\"])),r=(null!=r&&m(t,[\"muteBass\"],r),g(e,[\"muteDrums\"])),r=(null!=r&&m(t,[\"muteDrums\"],r),g(e,[\"onlyBassAndDrums\"]));return null!=r&&m(t,[\"onlyBassAndDrums\"],r),t}function xS(e){var t={},e=g(e,[\"model\"]);return null!=e&&m(t,[\"model\"],e),t}function LS(t){var r={},t=g(t,[\"weightedPrompts\"]);if(null!=t){let e=t;m(r,[\"weightedPrompts\"],e=Array.isArray(e)?e.map(e=>PS(e)):e)}return r}function FS(e){var t={},r=g(e,[\"setup\"]),r=(null!=r&&m(t,[\"setup\"],xS(r)),g(e,[\"clientContent\"])),r=(null!=r&&m(t,[\"clientContent\"],LS(r)),g(e,[\"musicGenerationConfig\"])),r=(null!=r&&m(t,[\"musicGenerationConfig\"],DS(r)),g(e,[\"playbackControl\"]));return null!=r&&m(t,[\"playbackControl\"],r),t}function US(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function BS(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"displayName\"]))&&m(t,[\"displayName\"],r),null!=(r=g(a,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"displayName\"]))&&m(r,[\"displayName\"],o),null!=(o=g(a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function jS(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function HS(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function GS(e){var t={},r=g(e,[\"apiKeyConfig\"]),r=(null!=r&&m(t,[\"apiKeyConfig\"],(n={},null!=(r=g(r=r,[\"apiKeyString\"]))&&m(n,[\"apiKeyString\"],r),n)),g(e,[\"authType\"])),n=(null!=r&&m(t,[\"authType\"],r),g(e,[\"googleServiceAccountConfig\"])),r=(null!=n&&m(t,[\"googleServiceAccountConfig\"],n),g(e,[\"httpBasicAuthConfig\"])),r=(null!=r&&m(t,[\"httpBasicAuthConfig\"],r),g(e,[\"oauthConfig\"])),r=(null!=r&&m(t,[\"oauthConfig\"],r),g(e,[\"oidcConfig\"]));return null!=r&&m(t,[\"oidcConfig\"],r),t}function VS(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{var t={};if(void 0!==g(e,[\"behavior\"]))throw new Error(\"behavior parameter is not supported in Vertex AI.\");var r=g(e,[\"description\"]);return null!=r&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t})),m(t,[\"functionDeclarations\"],e)}var r=g(e,[\"retrieval\"]),r=(null!=r&&m(t,[\"retrieval\"],r),g(e,[\"googleSearch\"])),r=(null!=r&&m(t,[\"googleSearch\"],jS(r)),g(e,[\"googleSearchRetrieval\"])),r=(null!=r&&m(t,[\"googleSearchRetrieval\"],HS(r)),g(e,[\"enterpriseWebSearch\"])),r=(null!=r&&m(t,[\"enterpriseWebSearch\"],{}),g(e,[\"googleMaps\"])),r=(null!=r&&m(t,[\"googleMaps\"],(n={},null!=(r=g(r=r,[\"authConfig\"]))&&m(n,[\"authConfig\"],GS(r)),n)),g(e,[\"urlContext\"])),n=(null!=r&&m(t,[\"urlContext\"],{}),g(e,[\"codeExecution\"])),r=(null!=n&&m(t,[\"codeExecution\"],n),g(e,[\"computerUse\"]));return null!=r&&m(t,[\"computerUse\"],r),t}function qS(){return{}}function zS(e){var t,r={},n=g(e,[\"automaticActivityDetection\"]),n=(null!=n&&m(r,[\"automaticActivityDetection\"],(t={},null!=(a=g(n=n,[\"disabled\"]))&&m(t,[\"disabled\"],a),null!=(a=g(n,[\"startOfSpeechSensitivity\"]))&&m(t,[\"startOfSpeechSensitivity\"],a),null!=(a=g(n,[\"endOfSpeechSensitivity\"]))&&m(t,[\"endOfSpeechSensitivity\"],a),null!=(a=g(n,[\"prefixPaddingMs\"]))&&m(t,[\"prefixPaddingMs\"],a),null!=(a=g(n,[\"silenceDurationMs\"]))&&m(t,[\"silenceDurationMs\"],a),t)),g(e,[\"activityHandling\"])),a=(null!=n&&m(r,[\"activityHandling\"],n),g(e,[\"turnCoverage\"]));return null!=a&&m(r,[\"turnCoverage\"],a),r}function WS(e){var t={},r=g(e,[\"triggerTokens\"]),r=(null!=r&&m(t,[\"triggerTokens\"],r),g(e,[\"slidingWindow\"]));return null!=r&&m(t,[\"slidingWindow\"],(e={},null!=(r=g(r=r,[\"targetTokens\"]))&&m(e,[\"targetTokens\"],r),e)),t}function $S(e,t){var r=g(e,[\"generationConfig\"]),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\"],r),g(e,[\"responseModalities\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"responseModalities\"],r),g(e,[\"temperature\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"temperature\"],r),g(e,[\"topP\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topP\"],r),g(e,[\"topK\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topK\"],r),g(e,[\"maxOutputTokens\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"maxOutputTokens\"],r),g(e,[\"mediaResolution\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"mediaResolution\"],r),g(e,[\"seed\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"seed\"],r),g(e,[\"speechConfig\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"speechConfig\"],function(e){var t={},r=g(e,[\"voiceConfig\"]);if(null!=r&&m(t,[\"voiceConfig\"],US(r)),void 0!==g(e,[\"multiSpeakerVoiceConfig\"]))throw new Error(\"multiSpeakerVoiceConfig parameter is not supported in Vertex AI.\");return null!=(r=g(e,[\"languageCode\"]))&&m(t,[\"languageCode\"],r),t}(rE(r))),g(e,[\"enableAffectiveDialog\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"enableAffectiveDialog\"],r),g(e,[\"systemInstruction\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"systemInstruction\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>BS(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(Jb(r))),g(e,[\"tools\"]));if(void 0!==t&&null!=r){let e=aE(r);m(t,[\"setup\",\"tools\"],e=Array.isArray(e)?e.map(e=>VS(nE(e))):e)}var r=g(e,[\"sessionResumption\"]),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"sessionResumption\"],(a={},null!=(n=g(r=r,[\"handle\"]))&&m(a,[\"handle\"],n),null!=(n=g(r,[\"transparent\"]))&&m(a,[\"transparent\"],n),a)),g(e,[\"inputAudioTranscription\"])),n=(void 0!==t&&null!=r&&m(t,[\"setup\",\"inputAudioTranscription\"],qS()),g(e,[\"outputAudioTranscription\"])),a=(void 0!==t&&null!=n&&m(t,[\"setup\",\"outputAudioTranscription\"],qS()),g(e,[\"realtimeInputConfig\"])),r=(void 0!==t&&null!=a&&m(t,[\"setup\",\"realtimeInputConfig\"],zS(a)),g(e,[\"contextWindowCompression\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"contextWindowCompression\"],WS(r)),g(e,[\"proactivity\"]));return void 0!==t&&null!=r&&m(t,[\"setup\",\"proactivity\"],(e={},null!=(t=g(t=r,[\"proactiveAudio\"]))&&m(e,[\"proactiveAudio\"],t),e)),{}}function KS(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function YS(e){var t={},r=g(e,[\"text\"]),r=(null!=r&&m(t,[\"text\"],r),g(e,[\"finished\"]));return null!=r&&m(t,[\"finished\"],r),t}function JS(t){var r={},t=g(t,[\"urlMetadata\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"retrievedUrl\"]))&&m(t,[\"retrievedUrl\"],r),null!=(r=g(e,[\"urlRetrievalStatus\"]))&&m(t,[\"urlRetrievalStatus\"],r),t;var t,r})),m(r,[\"urlMetadata\"],e)}return r}function QS(e){var t={},r=g(e,[\"modelTurn\"]),r=(null!=r&&m(t,[\"modelTurn\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>KS(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(r)),g(e,[\"turnComplete\"])),r=(null!=r&&m(t,[\"turnComplete\"],r),g(e,[\"interrupted\"])),r=(null!=r&&m(t,[\"interrupted\"],r),g(e,[\"groundingMetadata\"])),r=(null!=r&&m(t,[\"groundingMetadata\"],r),g(e,[\"generationComplete\"])),r=(null!=r&&m(t,[\"generationComplete\"],r),g(e,[\"inputTranscription\"])),r=(null!=r&&m(t,[\"inputTranscription\"],YS(r)),g(e,[\"outputTranscription\"])),r=(null!=r&&m(t,[\"outputTranscription\"],YS(r)),g(e,[\"urlContextMetadata\"]));return null!=r&&m(t,[\"urlContextMetadata\"],JS(r)),t}function ZS(t){var r={},t=g(t,[\"functionCalls\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"id\"]))&&m(t,[\"id\"],r),null!=(r=g(e,[\"args\"]))&&m(t,[\"args\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),t;var t,r})),m(r,[\"functionCalls\"],e)}return r}function XS(e){var t={},r=g(e,[\"modality\"]),r=(null!=r&&m(t,[\"modality\"],r),g(e,[\"tokenCount\"]));return null!=r&&m(t,[\"tokenCount\"],r),t}function eA(e){var t,r={},n=(null!=g(e,[\"setupComplete\"])&&m(r,[\"setupComplete\"],{}),g(e,[\"serverContent\"])),n=(null!=n&&m(r,[\"serverContent\"],QS(n)),g(e,[\"toolCall\"])),n=(null!=n&&m(r,[\"toolCall\"],ZS(n)),g(e,[\"toolCallCancellation\"])),n=(null!=n&&m(r,[\"toolCallCancellation\"],(a={},null!=(n=g(n=n,[\"ids\"]))&&m(a,[\"ids\"],n),a)),g(e,[\"usageMetadata\"])),a=(null!=n&&m(r,[\"usageMetadata\"],function(e){var t={},r=g(e,[\"promptTokenCount\"]);if(null!=r&&m(t,[\"promptTokenCount\"],r),null!=(r=g(e,[\"cachedContentTokenCount\"]))&&m(t,[\"cachedContentTokenCount\"],r),null!=(r=g(e,[\"responseTokenCount\"]))&&m(t,[\"responseTokenCount\"],r),null!=(r=g(e,[\"toolUsePromptTokenCount\"]))&&m(t,[\"toolUsePromptTokenCount\"],r),null!=(r=g(e,[\"thoughtsTokenCount\"]))&&m(t,[\"thoughtsTokenCount\"],r),null!=(r=g(e,[\"totalTokenCount\"]))&&m(t,[\"totalTokenCount\"],r),null!=(r=g(e,[\"promptTokensDetails\"]))){let e=r;m(t,[\"promptTokensDetails\"],e=Array.isArray(e)?e.map(e=>XS(e)):e)}if(null!=(r=g(e,[\"cacheTokensDetails\"]))){let e=r;m(t,[\"cacheTokensDetails\"],e=Array.isArray(e)?e.map(e=>XS(e)):e)}if(null!=(r=g(e,[\"responseTokensDetails\"]))){let e=r;m(t,[\"responseTokensDetails\"],e=Array.isArray(e)?e.map(e=>XS(e)):e)}if(null!=(r=g(e,[\"toolUsePromptTokensDetails\"]))){let e=r;m(t,[\"toolUsePromptTokensDetails\"],e=Array.isArray(e)?e.map(e=>XS(e)):e)}return t}(n)),g(e,[\"goAway\"])),i=(null!=a&&m(r,[\"goAway\"],(n={},null!=(i=g(i=a,[\"timeLeft\"]))&&m(n,[\"timeLeft\"],i),n)),g(e,[\"sessionResumptionUpdate\"]));return null!=i&&m(r,[\"sessionResumptionUpdate\"],(n={},null!=(t=g(e=i,[\"newHandle\"]))&&m(n,[\"newHandle\"],t),null!=(t=g(e,[\"resumable\"]))&&m(n,[\"resumable\"],t),null!=(t=g(e,[\"lastConsumedClientMessageIndex\"]))&&m(n,[\"lastConsumedClientMessageIndex\"],t),n)),r}function tA(t){var r={},t=g(t,[\"weightedPrompts\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"text\"]))&&m(t,[\"text\"],r),null!=(r=g(e,[\"weight\"]))&&m(t,[\"weight\"],r),t;var t,r})),m(r,[\"weightedPrompts\"],e)}return r}function rA(e){var t,r={},n=g(e,[\"clientContent\"]),n=(null!=n&&m(r,[\"clientContent\"],tA(n)),g(e,[\"musicGenerationConfig\"]));return null!=n&&m(r,[\"musicGenerationConfig\"],(e={},null!=(t=g(n=n,[\"temperature\"]))&&m(e,[\"temperature\"],t),null!=(t=g(n,[\"topK\"]))&&m(e,[\"topK\"],t),null!=(t=g(n,[\"seed\"]))&&m(e,[\"seed\"],t),null!=(t=g(n,[\"guidance\"]))&&m(e,[\"guidance\"],t),null!=(t=g(n,[\"bpm\"]))&&m(e,[\"bpm\"],t),null!=(t=g(n,[\"density\"]))&&m(e,[\"density\"],t),null!=(t=g(n,[\"brightness\"]))&&m(e,[\"brightness\"],t),null!=(t=g(n,[\"scale\"]))&&m(e,[\"scale\"],t),null!=(t=g(n,[\"muteBass\"]))&&m(e,[\"muteBass\"],t),null!=(t=g(n,[\"muteDrums\"]))&&m(e,[\"muteDrums\"],t),null!=(t=g(n,[\"onlyBassAndDrums\"]))&&m(e,[\"onlyBassAndDrums\"],t),e)),r}function nA(t){var r={},t=g(t,[\"audioChunks\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),null!=(r=g(e,[\"sourceMetadata\"]))&&m(t,[\"sourceMetadata\"],rA(r)),t;var t,r})),m(r,[\"audioChunks\"],e)}return r}function aA(e){var t,r={},n=(null!=g(e,[\"setupComplete\"])&&m(r,[\"setupComplete\"],{}),g(e,[\"serverContent\"])),n=(null!=n&&m(r,[\"serverContent\"],nA(n)),g(e,[\"filteredPrompt\"]));return null!=n&&m(r,[\"filteredPrompt\"],(e={},null!=(t=g(n=n,[\"text\"]))&&m(e,[\"text\"],t),null!=(t=g(n,[\"filteredReason\"]))&&m(e,[\"filteredReason\"],t),e)),r}function iA(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"displayName\"]))&&m(t,[\"displayName\"],r),null!=(r=g(a,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"displayName\"]))&&m(r,[\"displayName\"],o),null!=(o=g(a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function oA(e){var t={},r=g(e,[\"text\"]),r=(null!=r&&m(t,[\"text\"],r),g(e,[\"finished\"]));return null!=r&&m(t,[\"finished\"],r),t}function sA(e){var t={},r=g(e,[\"modelTurn\"]),r=(null!=r&&m(t,[\"modelTurn\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>iA(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(r)),g(e,[\"turnComplete\"])),r=(null!=r&&m(t,[\"turnComplete\"],r),g(e,[\"interrupted\"])),r=(null!=r&&m(t,[\"interrupted\"],r),g(e,[\"groundingMetadata\"])),r=(null!=r&&m(t,[\"groundingMetadata\"],r),g(e,[\"generationComplete\"])),r=(null!=r&&m(t,[\"generationComplete\"],r),g(e,[\"inputTranscription\"])),r=(null!=r&&m(t,[\"inputTranscription\"],oA(r)),g(e,[\"outputTranscription\"]));return null!=r&&m(t,[\"outputTranscription\"],oA(r)),t}function lA(t){var r={},t=g(t,[\"functionCalls\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"args\"]))&&m(t,[\"args\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),t;var t,r})),m(r,[\"functionCalls\"],e)}return r}function cA(e){var t={},r=g(e,[\"modality\"]),r=(null!=r&&m(t,[\"modality\"],r),g(e,[\"tokenCount\"]));return null!=r&&m(t,[\"tokenCount\"],r),t}function uA(e){var t,r={},n=g(e,[\"setupComplete\"]),n=(null!=n&&m(r,[\"setupComplete\"],(a={},null!=(n=g(n=n,[\"sessionId\"]))&&m(a,[\"sessionId\"],n),a)),g(e,[\"serverContent\"])),a=(null!=n&&m(r,[\"serverContent\"],sA(n)),g(e,[\"toolCall\"])),n=(null!=a&&m(r,[\"toolCall\"],lA(a)),g(e,[\"toolCallCancellation\"])),n=(null!=n&&m(r,[\"toolCallCancellation\"],(i={},null!=(n=g(n=n,[\"ids\"]))&&m(i,[\"ids\"],n),i)),g(e,[\"usageMetadata\"])),i=(null!=n&&m(r,[\"usageMetadata\"],function(e){var t={},r=g(e,[\"promptTokenCount\"]);if(null!=r&&m(t,[\"promptTokenCount\"],r),null!=(r=g(e,[\"cachedContentTokenCount\"]))&&m(t,[\"cachedContentTokenCount\"],r),null!=(r=g(e,[\"candidatesTokenCount\"]))&&m(t,[\"responseTokenCount\"],r),null!=(r=g(e,[\"toolUsePromptTokenCount\"]))&&m(t,[\"toolUsePromptTokenCount\"],r),null!=(r=g(e,[\"thoughtsTokenCount\"]))&&m(t,[\"thoughtsTokenCount\"],r),null!=(r=g(e,[\"totalTokenCount\"]))&&m(t,[\"totalTokenCount\"],r),null!=(r=g(e,[\"promptTokensDetails\"]))){let e=r;m(t,[\"promptTokensDetails\"],e=Array.isArray(e)?e.map(e=>cA(e)):e)}if(null!=(r=g(e,[\"cacheTokensDetails\"]))){let e=r;m(t,[\"cacheTokensDetails\"],e=Array.isArray(e)?e.map(e=>cA(e)):e)}if(null!=(r=g(e,[\"candidatesTokensDetails\"]))){let e=r;m(t,[\"responseTokensDetails\"],e=Array.isArray(e)?e.map(e=>cA(e)):e)}if(null!=(r=g(e,[\"toolUsePromptTokensDetails\"]))){let e=r;m(t,[\"toolUsePromptTokensDetails\"],e=Array.isArray(e)?e.map(e=>cA(e)):e)}return null!=(r=g(e,[\"trafficType\"]))&&m(t,[\"trafficType\"],r),t}(n)),g(e,[\"goAway\"])),o=(null!=i&&m(r,[\"goAway\"],(n={},null!=(o=g(o=i,[\"timeLeft\"]))&&m(n,[\"timeLeft\"],o),n)),g(e,[\"sessionResumptionUpdate\"]));return null!=o&&m(r,[\"sessionResumptionUpdate\"],(n={},null!=(t=g(e=o,[\"newHandle\"]))&&m(n,[\"newHandle\"],t),null!=(t=g(e,[\"resumable\"]))&&m(n,[\"resumable\"],t),null!=(t=g(e,[\"lastConsumedClientMessageIndex\"]))&&m(n,[\"lastConsumedClientMessageIndex\"],t),n)),r}function dA(e){var t={},r=g(e,[\"videoMetadata\"]),r=(null!=r&&m(t,[\"videoMetadata\"],(a={},null!=(n=g(r=r,[\"fps\"]))&&m(a,[\"fps\"],n),null!=(n=g(r,[\"endOffset\"]))&&m(a,[\"endOffset\"],n),null!=(n=g(r,[\"startOffset\"]))&&m(a,[\"startOffset\"],n),a)),g(e,[\"thought\"])),n=(null!=r&&m(t,[\"thought\"],r),g(e,[\"inlineData\"])),a=(null!=n&&m(t,[\"inlineData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"data\"]);return null!=r&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),g(e,[\"fileData\"])),r=(null!=a&&m(t,[\"fileData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"fileUri\"]);return null!=r&&m(t,[\"fileUri\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(a)),g(e,[\"thoughtSignature\"])),r=(null!=r&&m(t,[\"thoughtSignature\"],r),g(e,[\"codeExecutionResult\"])),r=(null!=r&&m(t,[\"codeExecutionResult\"],r),g(e,[\"executableCode\"])),r=(null!=r&&m(t,[\"executableCode\"],r),g(e,[\"functionCall\"])),r=(null!=r&&m(t,[\"functionCall\"],r),g(e,[\"functionResponse\"])),r=(null!=r&&m(t,[\"functionResponse\"],r),g(e,[\"text\"]));return null!=r&&m(t,[\"text\"],r),t}function pA(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>dA(e)):e)}r=g(e,[\"role\"]);return null!=r&&m(t,[\"role\"],r),t}function fA(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function hA(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function mA(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"behavior\"]))&&m(t,[\"behavior\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t;var t,r})),m(t,[\"functionDeclarations\"],e)}if(void 0!==g(e,[\"retrieval\"]))throw new Error(\"retrieval parameter is not supported in Gemini API.\");r=g(e,[\"googleSearch\"]),null!=r&&m(t,[\"googleSearch\"],fA(r)),r=g(e,[\"googleSearchRetrieval\"]);if(null!=r&&m(t,[\"googleSearchRetrieval\"],hA(r)),void 0!==g(e,[\"enterpriseWebSearch\"]))throw new Error(\"enterpriseWebSearch parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"googleMaps\"]))throw new Error(\"googleMaps parameter is not supported in Gemini API.\");null!=g(e,[\"urlContext\"])&&m(t,[\"urlContext\"],{});r=g(e,[\"codeExecution\"]),null!=r&&m(t,[\"codeExecution\"],r),r=g(e,[\"computerUse\"]);return null!=r&&m(t,[\"computerUse\"],r),t}function gA(e){var t,r,n={},a=g(e,[\"latLng\"]),a=(null!=a&&m(n,[\"latLng\"],(t={},null!=(r=g(a=a,[\"latitude\"]))&&m(t,[\"latitude\"],r),null!=(r=g(a,[\"longitude\"]))&&m(t,[\"longitude\"],r),t)),g(e,[\"languageCode\"]));return null!=a&&m(n,[\"languageCode\"],a),n}function _A(e){var t,r,n={},a=g(e,[\"functionCallingConfig\"]),a=(null!=a&&m(n,[\"functionCallingConfig\"],(t={},null!=(r=g(a=a,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(a,[\"allowedFunctionNames\"]))&&m(t,[\"allowedFunctionNames\"],r),t)),g(e,[\"retrievalConfig\"]));return null!=a&&m(n,[\"retrievalConfig\"],gA(a)),n}function yA(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function TA(t){var r={},t=g(t,[\"speakerVoiceConfigs\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"speaker\"]))&&m(t,[\"speaker\"],r),null!=(r=g(e,[\"voiceConfig\"]))&&m(t,[\"voiceConfig\"],yA(r)),t;var t,r})),m(r,[\"speakerVoiceConfigs\"],e)}return r}function vA(e,t,r){var n={},a=g(t,[\"systemInstruction\"]),a=(void 0!==r&&null!=a&&m(r,[\"systemInstruction\"],pA(Jb(a))),g(t,[\"temperature\"])),a=(null!=a&&m(n,[\"temperature\"],a),g(t,[\"topP\"])),a=(null!=a&&m(n,[\"topP\"],a),g(t,[\"topK\"])),a=(null!=a&&m(n,[\"topK\"],a),g(t,[\"candidateCount\"])),a=(null!=a&&m(n,[\"candidateCount\"],a),g(t,[\"maxOutputTokens\"])),a=(null!=a&&m(n,[\"maxOutputTokens\"],a),g(t,[\"stopSequences\"])),a=(null!=a&&m(n,[\"stopSequences\"],a),g(t,[\"responseLogprobs\"])),a=(null!=a&&m(n,[\"responseLogprobs\"],a),g(t,[\"logprobs\"])),a=(null!=a&&m(n,[\"logprobs\"],a),g(t,[\"presencePenalty\"])),a=(null!=a&&m(n,[\"presencePenalty\"],a),g(t,[\"frequencyPenalty\"])),a=(null!=a&&m(n,[\"frequencyPenalty\"],a),g(t,[\"seed\"])),a=(null!=a&&m(n,[\"seed\"],a),g(t,[\"responseMimeType\"])),a=(null!=a&&m(n,[\"responseMimeType\"],a),g(t,[\"responseSchema\"])),a=(null!=a&&m(n,[\"responseSchema\"],function(e){{var t={},r=g(e,[\"anyOf\"]);null!=r&&m(t,[\"anyOf\"],r),null!=(r=g(e,[\"default\"]))&&m(t,[\"default\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"enum\"]))&&m(t,[\"enum\"],r),null!=(r=g(e,[\"example\"]))&&m(t,[\"example\"],r),null!=(r=g(e,[\"format\"]))&&m(t,[\"format\"],r),null!=(r=g(e,[\"items\"]))&&m(t,[\"items\"],r),null!=(r=g(e,[\"maxItems\"]))&&m(t,[\"maxItems\"],r),null!=(r=g(e,[\"maxLength\"]))&&m(t,[\"maxLength\"],r),null!=(r=g(e,[\"maxProperties\"]))&&m(t,[\"maxProperties\"],r),null!=(r=g(e,[\"maximum\"]))&&m(t,[\"maximum\"],r)}return null!=(r=g(e,[\"minItems\"]))&&m(t,[\"minItems\"],r),null!=(r=g(e,[\"minLength\"]))&&m(t,[\"minLength\"],r),null!=(r=g(e,[\"minProperties\"]))&&m(t,[\"minProperties\"],r),null!=(r=g(e,[\"minimum\"]))&&m(t,[\"minimum\"],r),null!=(r=g(e,[\"nullable\"]))&&m(t,[\"nullable\"],r),null!=(r=g(e,[\"pattern\"]))&&m(t,[\"pattern\"],r),null!=(r=g(e,[\"properties\"]))&&m(t,[\"properties\"],r),null!=(r=g(e,[\"propertyOrdering\"]))&&m(t,[\"propertyOrdering\"],r),null!=(r=g(e,[\"required\"]))&&m(t,[\"required\"],r),null!=(r=g(e,[\"title\"]))&&m(t,[\"title\"],r),null!=(r=g(e,[\"type\"]))&&m(t,[\"type\"],r),t}(eE(a))),g(t,[\"responseJsonSchema\"]));if(null!=a&&m(n,[\"responseJsonSchema\"],a),void 0!==g(t,[\"routingConfig\"]))throw new Error(\"routingConfig parameter is not supported in Gemini API.\");if(void 0!==g(t,[\"modelSelectionConfig\"]))throw new Error(\"modelSelectionConfig parameter is not supported in Gemini API.\");a=g(t,[\"safetySettings\"]);if(void 0!==r&&null!=a){let e=a;Array.isArray(e)&&(e=e.map(e=>{var t={};if(void 0!==g(e,[\"method\"]))throw new Error(\"method parameter is not supported in Gemini API.\");var r=g(e,[\"category\"]);return null!=r&&m(t,[\"category\"],r),null!=(r=g(e,[\"threshold\"]))&&m(t,[\"threshold\"],r),t})),m(r,[\"safetySettings\"],e)}a=g(t,[\"tools\"]);if(void 0!==r&&null!=a){let e=aE(a);m(r,[\"tools\"],e=Array.isArray(e)?e.map(e=>mA(nE(e))):e)}a=g(t,[\"toolConfig\"]);if(void 0!==r&&null!=a&&m(r,[\"toolConfig\"],_A(a)),void 0!==g(t,[\"labels\"]))throw new Error(\"labels parameter is not supported in Gemini API.\");var a=g(t,[\"cachedContent\"]),r=(void 0!==r&&null!=a&&m(r,[\"cachedContent\"],iE(e,a)),g(t,[\"responseModalities\"])),e=(null!=r&&m(n,[\"responseModalities\"],r),g(t,[\"mediaResolution\"])),a=(null!=e&&m(n,[\"mediaResolution\"],e),g(t,[\"speechConfig\"]));if(null!=a&&m(n,[\"speechConfig\"],(r=tE(a),e={},null!=(a=g(r,[\"voiceConfig\"]))&&m(e,[\"voiceConfig\"],yA(a)),null!=(a=g(r,[\"multiSpeakerVoiceConfig\"]))&&m(e,[\"multiSpeakerVoiceConfig\"],TA(a)),null!=(a=g(r,[\"languageCode\"]))&&m(e,[\"languageCode\"],a),e)),void 0!==g(t,[\"audioTimestamp\"]))throw new Error(\"audioTimestamp parameter is not supported in Gemini API.\");r=g(t,[\"thinkingConfig\"]);return null!=r&&m(n,[\"thinkingConfig\"],(a={},null!=(t=g(e=r,[\"includeThoughts\"]))&&m(a,[\"includeThoughts\"],t),null!=(t=g(e,[\"thinkingBudget\"]))&&m(a,[\"thinkingBudget\"],t),a)),n}function bA(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"contents\"]));if(null!=n){let e=Zb(n);m(r,[\"contents\"],e=Array.isArray(e)?e.map(e=>pA(e)):e)}n=g(t,[\"config\"]);return null!=n&&m(r,[\"generationConfig\"],vA(e,n,r)),r}function EA(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"contents\"])),n=(null!=n&&m(r,[\"requests[]\",\"content\"],Qb(e,n)),g(t,[\"config\"])),n=(null!=n&&m(r,[\"config\"],function(e,t){var r=g(e,[\"taskType\"]),r=(void 0!==t&&null!=r&&m(t,[\"requests[]\",\"taskType\"],r),g(e,[\"title\"])),r=(void 0!==t&&null!=r&&m(t,[\"requests[]\",\"title\"],r),g(e,[\"outputDimensionality\"]));if(void 0!==t&&null!=r&&m(t,[\"requests[]\",\"outputDimensionality\"],r),void 0!==g(e,[\"mimeType\"]))throw new Error(\"mimeType parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"autoTruncate\"]))throw new Error(\"autoTruncate parameter is not supported in Gemini API.\");return{}}(n,r)),g(t,[\"model\"]));return void 0!==n&&m(r,[\"requests[]\",\"model\"],_(e,n)),r}function SA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"prompt\"])),n=(null!=e&&m(r,[\"instances[0]\",\"prompt\"],e),g(t,[\"config\"]));return null!=n&&m(r,[\"config\"],function(e,t){if(void 0!==g(e,[\"outputGcsUri\"]))throw new Error(\"outputGcsUri parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"negativePrompt\"]))throw new Error(\"negativePrompt parameter is not supported in Gemini API.\");var r=g(e,[\"numberOfImages\"]),r=(void 0!==t&&null!=r&&m(t,[\"parameters\",\"sampleCount\"],r),g(e,[\"aspectRatio\"])),r=(void 0!==t&&null!=r&&m(t,[\"parameters\",\"aspectRatio\"],r),g(e,[\"guidanceScale\"]));if(void 0!==t&&null!=r&&m(t,[\"parameters\",\"guidanceScale\"],r),void 0!==g(e,[\"seed\"]))throw new Error(\"seed parameter is not supported in Gemini API.\");if(r=g(e,[\"safetyFilterLevel\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"safetySetting\"],r),r=g(e,[\"personGeneration\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"personGeneration\"],r),r=g(e,[\"includeSafetyAttributes\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"includeSafetyAttributes\"],r),r=g(e,[\"includeRaiReason\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"includeRaiReason\"],r),r=g(e,[\"language\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"language\"],r),r=g(e,[\"outputMimeType\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"outputOptions\",\"mimeType\"],r),r=g(e,[\"outputCompressionQuality\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"outputOptions\",\"compressionQuality\"],r),void 0!==g(e,[\"addWatermark\"]))throw new Error(\"addWatermark parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"imageSize\"]))throw new Error(\"imageSize parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"enhancePrompt\"]))throw new Error(\"enhancePrompt parameter is not supported in Gemini API.\");return{}}(n,r)),r}function AA(e,t){var r,n,a={},t=g(t,[\"config\"]);return null!=t&&m(a,[\"config\"],(e=e,r=a,n=g(t=t,[\"pageSize\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"pageSize\"],n),n=g(t,[\"pageToken\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"pageToken\"],n),n=g(t,[\"filter\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"filter\"],n),n=g(t,[\"queryBase\"]),void 0!==r&&null!=n&&m(r,[\"_url\",\"models_url\"],cE(e,n)),{})),a}function OA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"name\"],_(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"displayName\"]),void 0!==n&&null!=e&&m(n,[\"displayName\"],e),e=g(t,[\"description\"]),void 0!==n&&null!=e&&m(n,[\"description\"],e),e=g(t,[\"defaultCheckpointId\"]),void 0!==n&&null!=e&&m(n,[\"defaultCheckpointId\"],e),{})),r}function CA(t,e){var r={},n=g(e,[\"model\"]),t=(null!=n&&m(r,[\"_url\",\"model\"],_(t,n)),g(e,[\"contents\"]));if(null!=t){let e=Zb(t);m(r,[\"contents\"],e=Array.isArray(e)?e.map(e=>pA(e)):e)}n=g(e,[\"config\"]);return null!=n&&m(r,[\"config\"],function(e){if(void 0!==g(e,[\"systemInstruction\"]))throw new Error(\"systemInstruction parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"tools\"]))throw new Error(\"tools parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"generationConfig\"]))throw new Error(\"generationConfig parameter is not supported in Gemini API.\");return{}}(n)),r}function wA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"prompt\"])),n=(null!=e&&m(r,[\"instances[0]\",\"prompt\"],e),g(t,[\"image\"]));if(null!=n&&m(r,[\"instances[0]\",\"image\"],function(e){var t={};if(void 0!==g(e,[\"gcsUri\"]))throw new Error(\"gcsUri parameter is not supported in Gemini API.\");var r=g(e,[\"imageBytes\"]);return null!=r&&m(t,[\"bytesBase64Encoded\"],sE(r)),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),void 0!==g(t,[\"video\"]))throw new Error(\"video parameter is not supported in Gemini API.\");e=g(t,[\"config\"]);return null!=e&&m(r,[\"config\"],function(e,t){var r=g(e,[\"numberOfVideos\"]);if(void 0!==t&&null!=r&&m(t,[\"parameters\",\"sampleCount\"],r),void 0!==g(e,[\"outputGcsUri\"]))throw new Error(\"outputGcsUri parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"fps\"]))throw new Error(\"fps parameter is not supported in Gemini API.\");if(r=g(e,[\"durationSeconds\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"durationSeconds\"],r),void 0!==g(e,[\"seed\"]))throw new Error(\"seed parameter is not supported in Gemini API.\");if(r=g(e,[\"aspectRatio\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"aspectRatio\"],r),void 0!==g(e,[\"resolution\"]))throw new Error(\"resolution parameter is not supported in Gemini API.\");if(r=g(e,[\"personGeneration\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"personGeneration\"],r),void 0!==g(e,[\"pubsubTopic\"]))throw new Error(\"pubsubTopic parameter is not supported in Gemini API.\");if(r=g(e,[\"negativePrompt\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"negativePrompt\"],r),r=g(e,[\"enhancePrompt\"]),void 0!==t&&null!=r&&m(t,[\"parameters\",\"enhancePrompt\"],r),void 0!==g(e,[\"generateAudio\"]))throw new Error(\"generateAudio parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"lastFrame\"]))throw new Error(\"lastFrame parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"compressionQuality\"]))throw new Error(\"compressionQuality parameter is not supported in Gemini API.\");return{}}(e,r)),r}function kA(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"displayName\"]))&&m(t,[\"displayName\"],r),null!=(r=g(a,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"displayName\"]))&&m(r,[\"displayName\"],o),null!=(o=g(a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function IA(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>kA(e)):e)}r=g(e,[\"role\"]);return null!=r&&m(t,[\"role\"],r),t}function RA(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function NA(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function MA(e){var t={},r=g(e,[\"apiKeyConfig\"]),r=(null!=r&&m(t,[\"apiKeyConfig\"],(n={},null!=(r=g(r=r,[\"apiKeyString\"]))&&m(n,[\"apiKeyString\"],r),n)),g(e,[\"authType\"])),n=(null!=r&&m(t,[\"authType\"],r),g(e,[\"googleServiceAccountConfig\"])),r=(null!=n&&m(t,[\"googleServiceAccountConfig\"],n),g(e,[\"httpBasicAuthConfig\"])),r=(null!=r&&m(t,[\"httpBasicAuthConfig\"],r),g(e,[\"oauthConfig\"])),r=(null!=r&&m(t,[\"oauthConfig\"],r),g(e,[\"oidcConfig\"]));return null!=r&&m(t,[\"oidcConfig\"],r),t}function PA(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{var t={};if(void 0!==g(e,[\"behavior\"]))throw new Error(\"behavior parameter is not supported in Vertex AI.\");var r=g(e,[\"description\"]);return null!=r&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t})),m(t,[\"functionDeclarations\"],e)}var r=g(e,[\"retrieval\"]),r=(null!=r&&m(t,[\"retrieval\"],r),g(e,[\"googleSearch\"])),r=(null!=r&&m(t,[\"googleSearch\"],RA(r)),g(e,[\"googleSearchRetrieval\"])),r=(null!=r&&m(t,[\"googleSearchRetrieval\"],NA(r)),g(e,[\"enterpriseWebSearch\"])),r=(null!=r&&m(t,[\"enterpriseWebSearch\"],{}),g(e,[\"googleMaps\"])),r=(null!=r&&m(t,[\"googleMaps\"],(n={},null!=(r=g(r=r,[\"authConfig\"]))&&m(n,[\"authConfig\"],MA(r)),n)),g(e,[\"urlContext\"])),n=(null!=r&&m(t,[\"urlContext\"],{}),g(e,[\"codeExecution\"])),r=(null!=n&&m(t,[\"codeExecution\"],n),g(e,[\"computerUse\"]));return null!=r&&m(t,[\"computerUse\"],r),t}function DA(e){var t,r,n={},a=g(e,[\"latLng\"]),a=(null!=a&&m(n,[\"latLng\"],(t={},null!=(r=g(a=a,[\"latitude\"]))&&m(t,[\"latitude\"],r),null!=(r=g(a,[\"longitude\"]))&&m(t,[\"longitude\"],r),t)),g(e,[\"languageCode\"]));return null!=a&&m(n,[\"languageCode\"],a),n}function xA(e){var t,r,n={},a=g(e,[\"functionCallingConfig\"]),a=(null!=a&&m(n,[\"functionCallingConfig\"],(t={},null!=(r=g(a=a,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(a,[\"allowedFunctionNames\"]))&&m(t,[\"allowedFunctionNames\"],r),t)),g(e,[\"retrievalConfig\"]));return null!=a&&m(n,[\"retrievalConfig\"],DA(a)),n}function LA(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function FA(e,t,r){var n={},a=g(t,[\"systemInstruction\"]),a=(void 0!==r&&null!=a&&m(r,[\"systemInstruction\"],IA(Jb(a))),g(t,[\"temperature\"])),a=(null!=a&&m(n,[\"temperature\"],a),g(t,[\"topP\"])),a=(null!=a&&m(n,[\"topP\"],a),g(t,[\"topK\"])),a=(null!=a&&m(n,[\"topK\"],a),g(t,[\"candidateCount\"])),a=(null!=a&&m(n,[\"candidateCount\"],a),g(t,[\"maxOutputTokens\"])),a=(null!=a&&m(n,[\"maxOutputTokens\"],a),g(t,[\"stopSequences\"])),a=(null!=a&&m(n,[\"stopSequences\"],a),g(t,[\"responseLogprobs\"])),a=(null!=a&&m(n,[\"responseLogprobs\"],a),g(t,[\"logprobs\"])),a=(null!=a&&m(n,[\"logprobs\"],a),g(t,[\"presencePenalty\"])),a=(null!=a&&m(n,[\"presencePenalty\"],a),g(t,[\"frequencyPenalty\"])),a=(null!=a&&m(n,[\"frequencyPenalty\"],a),g(t,[\"seed\"])),a=(null!=a&&m(n,[\"seed\"],a),g(t,[\"responseMimeType\"])),a=(null!=a&&m(n,[\"responseMimeType\"],a),g(t,[\"responseSchema\"])),a=(null!=a&&m(n,[\"responseSchema\"],function(e){{var t={},r=g(e,[\"anyOf\"]);null!=r&&m(t,[\"anyOf\"],r),null!=(r=g(e,[\"default\"]))&&m(t,[\"default\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"enum\"]))&&m(t,[\"enum\"],r),null!=(r=g(e,[\"example\"]))&&m(t,[\"example\"],r),null!=(r=g(e,[\"format\"]))&&m(t,[\"format\"],r),null!=(r=g(e,[\"items\"]))&&m(t,[\"items\"],r),null!=(r=g(e,[\"maxItems\"]))&&m(t,[\"maxItems\"],r),null!=(r=g(e,[\"maxLength\"]))&&m(t,[\"maxLength\"],r),null!=(r=g(e,[\"maxProperties\"]))&&m(t,[\"maxProperties\"],r),null!=(r=g(e,[\"maximum\"]))&&m(t,[\"maximum\"],r)}return null!=(r=g(e,[\"minItems\"]))&&m(t,[\"minItems\"],r),null!=(r=g(e,[\"minLength\"]))&&m(t,[\"minLength\"],r),null!=(r=g(e,[\"minProperties\"]))&&m(t,[\"minProperties\"],r),null!=(r=g(e,[\"minimum\"]))&&m(t,[\"minimum\"],r),null!=(r=g(e,[\"nullable\"]))&&m(t,[\"nullable\"],r),null!=(r=g(e,[\"pattern\"]))&&m(t,[\"pattern\"],r),null!=(r=g(e,[\"properties\"]))&&m(t,[\"properties\"],r),null!=(r=g(e,[\"propertyOrdering\"]))&&m(t,[\"propertyOrdering\"],r),null!=(r=g(e,[\"required\"]))&&m(t,[\"required\"],r),null!=(r=g(e,[\"title\"]))&&m(t,[\"title\"],r),null!=(r=g(e,[\"type\"]))&&m(t,[\"type\"],r),t}(eE(a))),g(t,[\"responseJsonSchema\"])),a=(null!=a&&m(n,[\"responseJsonSchema\"],a),g(t,[\"routingConfig\"])),a=(null!=a&&m(n,[\"routingConfig\"],a),g(t,[\"modelSelectionConfig\"])),a=(null!=a&&m(n,[\"modelConfig\"],(i={},null!=(a=g(a=a,[\"featureSelectionPreference\"]))&&m(i,[\"featureSelectionPreference\"],a),i)),g(t,[\"safetySettings\"]));if(void 0!==r&&null!=a){let e=a;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"method\"]))&&m(t,[\"method\"],r),null!=(r=g(e,[\"category\"]))&&m(t,[\"category\"],r),null!=(r=g(e,[\"threshold\"]))&&m(t,[\"threshold\"],r),t;var t,r})),m(r,[\"safetySettings\"],e)}var i=g(t,[\"tools\"]);if(void 0!==r&&null!=i){let e=aE(i);m(r,[\"tools\"],e=Array.isArray(e)?e.map(e=>PA(nE(e))):e)}var a=g(t,[\"toolConfig\"]),a=(void 0!==r&&null!=a&&m(r,[\"toolConfig\"],xA(a)),g(t,[\"labels\"])),a=(void 0!==r&&null!=a&&m(r,[\"labels\"],a),g(t,[\"cachedContent\"])),r=(void 0!==r&&null!=a&&m(r,[\"cachedContent\"],iE(e,a)),g(t,[\"responseModalities\"])),e=(null!=r&&m(n,[\"responseModalities\"],r),g(t,[\"mediaResolution\"])),a=(null!=e&&m(n,[\"mediaResolution\"],e),g(t,[\"speechConfig\"])),r=(null!=a&&m(n,[\"speechConfig\"],function(e){var t={},r=g(e,[\"voiceConfig\"]);if(null!=r&&m(t,[\"voiceConfig\"],LA(r)),void 0!==g(e,[\"multiSpeakerVoiceConfig\"]))throw new Error(\"multiSpeakerVoiceConfig parameter is not supported in Vertex AI.\");return null!=(r=g(e,[\"languageCode\"]))&&m(t,[\"languageCode\"],r),t}(tE(a))),g(t,[\"audioTimestamp\"])),e=(null!=r&&m(n,[\"audioTimestamp\"],r),g(t,[\"thinkingConfig\"]));return null!=e&&m(n,[\"thinkingConfig\"],(a={},null!=(t=g(r=e,[\"includeThoughts\"]))&&m(a,[\"includeThoughts\"],t),null!=(t=g(r,[\"thinkingBudget\"]))&&m(a,[\"thinkingBudget\"],t),a)),n}function UA(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"contents\"]));if(null!=n){let e=Zb(n);m(r,[\"contents\"],e=Array.isArray(e)?e.map(e=>IA(e)):e)}n=g(t,[\"config\"]);return null!=n&&m(r,[\"generationConfig\"],FA(e,n,r)),r}function BA(e,t){var r={},n=g(t,[\"model\"]),n=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"contents\"])),e=(null!=n&&m(r,[\"instances[]\",\"content\"],Qb(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"taskType\"]),void 0!==n&&null!=e&&m(n,[\"instances[]\",\"task_type\"],e),e=g(t,[\"title\"]),void 0!==n&&null!=e&&m(n,[\"instances[]\",\"title\"],e),e=g(t,[\"outputDimensionality\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"outputDimensionality\"],e),e=g(t,[\"mimeType\"]),void 0!==n&&null!=e&&m(n,[\"instances[]\",\"mimeType\"],e),e=g(t,[\"autoTruncate\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"autoTruncate\"],e),{})),r}function jA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"prompt\"])),n=(null!=e&&m(r,[\"instances[0]\",\"prompt\"],e),g(t,[\"config\"]));return null!=n&&m(r,[\"config\"],(e=r,n=g(t=n,[\"outputGcsUri\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"storageUri\"],n),n=g(t,[\"negativePrompt\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"negativePrompt\"],n),n=g(t,[\"numberOfImages\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"sampleCount\"],n),n=g(t,[\"aspectRatio\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"aspectRatio\"],n),n=g(t,[\"guidanceScale\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"guidanceScale\"],n),n=g(t,[\"seed\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"seed\"],n),n=g(t,[\"safetyFilterLevel\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"safetySetting\"],n),n=g(t,[\"personGeneration\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"personGeneration\"],n),n=g(t,[\"includeSafetyAttributes\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"includeSafetyAttributes\"],n),n=g(t,[\"includeRaiReason\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"includeRaiReason\"],n),n=g(t,[\"language\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"language\"],n),n=g(t,[\"outputMimeType\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"outputOptions\",\"mimeType\"],n),n=g(t,[\"outputCompressionQuality\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"outputOptions\",\"compressionQuality\"],n),n=g(t,[\"addWatermark\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"addWatermark\"],n),n=g(t,[\"imageSize\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"sampleImageSize\"],n),n=g(t,[\"enhancePrompt\"]),void 0!==e&&null!=n&&m(e,[\"parameters\",\"enhancePrompt\"],n),{})),r}function HA(e){var t={},r=g(e,[\"gcsUri\"]),r=(null!=r&&m(t,[\"gcsUri\"],r),g(e,[\"imageBytes\"])),r=(null!=r&&m(t,[\"bytesBase64Encoded\"],sE(r)),g(e,[\"mimeType\"]));return null!=r&&m(t,[\"mimeType\"],r),t}function GA(e){var t,r,n,a={},i=g(e,[\"referenceImage\"]),i=(null!=i&&m(a,[\"referenceImage\"],HA(i)),g(e,[\"referenceId\"])),i=(null!=i&&m(a,[\"referenceId\"],i),g(e,[\"referenceType\"])),i=(null!=i&&m(a,[\"referenceType\"],i),g(e,[\"maskImageConfig\"])),i=(null!=i&&m(a,[\"maskImageConfig\"],(t={},null!=(r=g(i=i,[\"maskMode\"]))&&m(t,[\"maskMode\"],r),null!=(r=g(i,[\"segmentationClasses\"]))&&m(t,[\"maskClasses\"],r),null!=(r=g(i,[\"maskDilation\"]))&&m(t,[\"dilation\"],r),t)),g(e,[\"controlImageConfig\"])),i=(null!=i&&m(a,[\"controlImageConfig\"],(r={},null!=(i=g(t=i,[\"controlType\"]))&&m(r,[\"controlType\"],i),null!=(i=g(t,[\"enableControlImageComputation\"]))&&m(r,[\"computeControl\"],i),r)),g(e,[\"styleImageConfig\"])),i=(null!=i&&m(a,[\"styleImageConfig\"],(n={},null!=(i=g(i=i,[\"styleDescription\"]))&&m(n,[\"styleDescription\"],i),n)),g(e,[\"subjectImageConfig\"]));return null!=i&&m(a,[\"subjectImageConfig\"],(n={},null!=(i=g(e=i,[\"subjectType\"]))&&m(n,[\"subjectType\"],i),null!=(i=g(e,[\"subjectDescription\"]))&&m(n,[\"subjectDescription\"],i),n)),a}function VA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"prompt\"])),n=(null!=e&&m(r,[\"instances[0]\",\"prompt\"],e),g(t,[\"referenceImages\"]));if(null!=n){let e=n;m(r,[\"instances[0]\",\"referenceImages\"],e=Array.isArray(e)?e.map(e=>GA(e)):e)}e=g(t,[\"config\"]);return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"outputGcsUri\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"storageUri\"],e),e=g(t,[\"negativePrompt\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"negativePrompt\"],e),e=g(t,[\"numberOfImages\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"sampleCount\"],e),e=g(t,[\"aspectRatio\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"aspectRatio\"],e),e=g(t,[\"guidanceScale\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"guidanceScale\"],e),e=g(t,[\"seed\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"seed\"],e),e=g(t,[\"safetyFilterLevel\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"safetySetting\"],e),e=g(t,[\"personGeneration\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"personGeneration\"],e),e=g(t,[\"includeSafetyAttributes\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"includeSafetyAttributes\"],e),e=g(t,[\"includeRaiReason\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"includeRaiReason\"],e),e=g(t,[\"language\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"language\"],e),e=g(t,[\"outputMimeType\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"outputOptions\",\"mimeType\"],e),e=g(t,[\"outputCompressionQuality\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"outputOptions\",\"compressionQuality\"],e),e=g(t,[\"addWatermark\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"addWatermark\"],e),e=g(t,[\"editMode\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"editMode\"],e),e=g(t,[\"baseSteps\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"editConfig\",\"baseSteps\"],e),{})),r}function qA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"image\"])),n=(null!=e&&m(r,[\"instances[0]\",\"image\"],HA(e)),g(t,[\"upscaleFactor\"])),e=(null!=n&&m(r,[\"parameters\",\"upscaleConfig\",\"upscaleFactor\"],n),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"includeRaiReason\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"includeRaiReason\"],e),e=g(t,[\"outputMimeType\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"outputOptions\",\"mimeType\"],e),e=g(t,[\"outputCompressionQuality\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"outputOptions\",\"compressionQuality\"],e),e=g(t,[\"enhanceInputImage\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"upscaleConfig\",\"enhanceInputImage\"],e),e=g(t,[\"imagePreservationFactor\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"upscaleConfig\",\"imagePreservationFactor\"],e),e=g(t,[\"numberOfImages\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"sampleCount\"],e),e=g(t,[\"mode\"]),void 0!==n&&null!=e&&m(n,[\"parameters\",\"mode\"],e),{})),r}function zA(e,t){var r,n,a={},t=g(t,[\"config\"]);return null!=t&&m(a,[\"config\"],(e=e,r=a,n=g(t=t,[\"pageSize\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"pageSize\"],n),n=g(t,[\"pageToken\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"pageToken\"],n),n=g(t,[\"filter\"]),void 0!==r&&null!=n&&m(r,[\"_query\",\"filter\"],n),n=g(t,[\"queryBase\"]),void 0!==r&&null!=n&&m(r,[\"_url\",\"models_url\"],cE(e,n)),{})),a}function WA(e,t){var r={},n=g(t,[\"model\"]),e=(null!=n&&m(r,[\"_url\",\"model\"],_(e,n)),g(t,[\"config\"]));return null!=e&&m(r,[\"config\"],(n=r,e=g(t=e,[\"displayName\"]),void 0!==n&&null!=e&&m(n,[\"displayName\"],e),e=g(t,[\"description\"]),void 0!==n&&null!=e&&m(n,[\"description\"],e),e=g(t,[\"defaultCheckpointId\"]),void 0!==n&&null!=e&&m(n,[\"defaultCheckpointId\"],e),{})),r}function $A(t,e){var r={},n=g(e,[\"model\"]),t=(null!=n&&m(r,[\"_url\",\"model\"],_(t,n)),g(e,[\"contents\"]));if(null!=t){let e=Zb(t);m(r,[\"contents\"],e=Array.isArray(e)?e.map(e=>IA(e)):e)}n=g(e,[\"config\"]);return null!=n&&m(r,[\"config\"],function(e,t){var r=g(e,[\"systemInstruction\"]),r=(void 0!==t&&null!=r&&m(t,[\"systemInstruction\"],IA(Jb(r))),g(e,[\"tools\"]));if(void 0!==t&&null!=r){let e=r;m(t,[\"tools\"],e=Array.isArray(e)?e.map(e=>PA(e)):e)}return r=g(e,[\"generationConfig\"]),void 0!==t&&null!=r&&m(t,[\"generationConfig\"],r),{}}(n,r)),r}function KA(e,t){var r,n={},a=g(t,[\"model\"]),e=(null!=a&&m(n,[\"_url\",\"model\"],_(e,a)),g(t,[\"prompt\"])),a=(null!=e&&m(n,[\"instances[0]\",\"prompt\"],e),g(t,[\"image\"])),e=(null!=a&&m(n,[\"instances[0]\",\"image\"],HA(a)),g(t,[\"video\"])),e=(null!=e&&m(n,[\"instances[0]\",\"video\"],(a={},null!=(r=g(e=e,[\"uri\"]))&&m(a,[\"gcsUri\"],r),null!=(r=g(e,[\"videoBytes\"]))&&m(a,[\"bytesBase64Encoded\"],sE(r)),null!=(r=g(e,[\"mimeType\"]))&&m(a,[\"mimeType\"],r),a)),g(t,[\"config\"]));return null!=e&&m(n,[\"config\"],(r=n,t=g(a=e,[\"numberOfVideos\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"sampleCount\"],t),t=g(a,[\"outputGcsUri\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"storageUri\"],t),t=g(a,[\"fps\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"fps\"],t),t=g(a,[\"durationSeconds\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"durationSeconds\"],t),t=g(a,[\"seed\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"seed\"],t),t=g(a,[\"aspectRatio\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"aspectRatio\"],t),t=g(a,[\"resolution\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"resolution\"],t),t=g(a,[\"personGeneration\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"personGeneration\"],t),t=g(a,[\"pubsubTopic\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"pubsubTopic\"],t),t=g(a,[\"negativePrompt\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"negativePrompt\"],t),t=g(a,[\"enhancePrompt\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"enhancePrompt\"],t),t=g(a,[\"generateAudio\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"generateAudio\"],t),t=g(a,[\"lastFrame\"]),void 0!==r&&null!=t&&m(r,[\"instances[0]\",\"lastFrame\"],HA(t)),t=g(a,[\"compressionQuality\"]),void 0!==r&&null!=t&&m(r,[\"parameters\",\"compressionQuality\"],t),{})),n}function YA(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function JA(t){var r={},t=g(t,[\"urlMetadata\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"retrievedUrl\"]))&&m(t,[\"retrievedUrl\"],r),null!=(r=g(e,[\"urlRetrievalStatus\"]))&&m(t,[\"urlRetrievalStatus\"],r),t;var t,r})),m(r,[\"urlMetadata\"],e)}return r}function QA(e){var t={},r=g(e,[\"content\"]),r=(null!=r&&m(t,[\"content\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>YA(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(r)),g(e,[\"citationMetadata\"])),r=(null!=r&&m(t,[\"citationMetadata\"],(n={},null!=(r=g(r=r,[\"citationSources\"]))&&m(n,[\"citations\"],r),n)),g(e,[\"tokenCount\"])),n=(null!=r&&m(t,[\"tokenCount\"],r),g(e,[\"finishReason\"])),r=(null!=n&&m(t,[\"finishReason\"],n),g(e,[\"urlContextMetadata\"])),r=(null!=r&&m(t,[\"urlContextMetadata\"],JA(r)),g(e,[\"avgLogprobs\"])),r=(null!=r&&m(t,[\"avgLogprobs\"],r),g(e,[\"groundingMetadata\"])),r=(null!=r&&m(t,[\"groundingMetadata\"],r),g(e,[\"index\"])),r=(null!=r&&m(t,[\"index\"],r),g(e,[\"logprobsResult\"])),r=(null!=r&&m(t,[\"logprobsResult\"],r),g(e,[\"safetyRatings\"]));return null!=r&&m(t,[\"safetyRatings\"],r),t}function ZA(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"candidates\"]));if(null!=r){let e=r;m(t,[\"candidates\"],e=Array.isArray(e)?e.map(e=>QA(e)):e)}r=g(e,[\"modelVersion\"]),null!=r&&m(t,[\"modelVersion\"],r),r=g(e,[\"promptFeedback\"]),null!=r&&m(t,[\"promptFeedback\"],r),r=g(e,[\"usageMetadata\"]);return null!=r&&m(t,[\"usageMetadata\"],r),t}function XA(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"embeddings\"]));if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(e=g(e=e,[\"values\"]))&&m(t,[\"values\"],e),t;var t})),m(t,[\"embeddings\"],e)}return null!=g(e,[\"metadata\"])&&m(t,[\"metadata\"],{}),t}function eO(e){var t={},r=g(e,[\"safetyAttributes\",\"categories\"]),r=(null!=r&&m(t,[\"categories\"],r),g(e,[\"safetyAttributes\",\"scores\"])),r=(null!=r&&m(t,[\"scores\"],r),g(e,[\"contentType\"]));return null!=r&&m(t,[\"contentType\"],r),t}function tO(e){var t,r={},n=g(e,[\"_self\"]),n=(null!=n&&m(r,[\"image\"],(t={},null!=(a=g(n=n,[\"bytesBase64Encoded\"]))&&m(t,[\"imageBytes\"],sE(a)),null!=(a=g(n,[\"mimeType\"]))&&m(t,[\"mimeType\"],a),t)),g(e,[\"raiFilteredReason\"])),a=(null!=n&&m(r,[\"raiFilteredReason\"],n),g(e,[\"_self\"]));return null!=a&&m(r,[\"safetyAttributes\"],eO(a)),r}function rO(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"displayName\"])),r=(null!=r&&m(t,[\"displayName\"],r),g(e,[\"description\"])),r=(null!=r&&m(t,[\"description\"],r),g(e,[\"version\"])),r=(null!=r&&m(t,[\"version\"],r),g(e,[\"_self\"])),r=(null!=r&&m(t,[\"tunedModelInfo\"],(a={},null!=(n=g(r=r,[\"baseModel\"]))&&m(a,[\"baseModel\"],n),null!=(n=g(r,[\"createTime\"]))&&m(a,[\"createTime\"],n),null!=(n=g(r,[\"updateTime\"]))&&m(a,[\"updateTime\"],n),a)),g(e,[\"inputTokenLimit\"])),n=(null!=r&&m(t,[\"inputTokenLimit\"],r),g(e,[\"outputTokenLimit\"])),a=(null!=n&&m(t,[\"outputTokenLimit\"],n),g(e,[\"supportedGenerationMethods\"]));return null!=a&&m(t,[\"supportedActions\"],a),t}function nO(e){var t,r,n={},e=g(e,[\"_self\"]);return null!=e&&m(n,[\"video\"],(t={},null!=(r=g(e=e,[\"video\",\"uri\"]))&&m(t,[\"uri\"],r),null!=(r=g(e,[\"video\",\"encodedVideo\"]))&&m(t,[\"videoBytes\"],sE(r)),null!=(r=g(e,[\"encoding\"]))&&m(t,[\"mimeType\"],r),t)),n}function aO(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"metadata\"])),r=(null!=r&&m(t,[\"metadata\"],r),g(e,[\"done\"])),r=(null!=r&&m(t,[\"done\"],r),g(e,[\"error\"])),r=(null!=r&&m(t,[\"error\"],r),g(e,[\"response\",\"generateVideoResponse\"]));return null!=r&&m(t,[\"response\"],function(e){var t={},r=g(e,[\"generatedSamples\"]);if(null!=r){let e=r;m(t,[\"generatedVideos\"],e=Array.isArray(e)?e.map(e=>nO(e)):e)}return null!=(r=g(e,[\"raiMediaFilteredCount\"]))&&m(t,[\"raiMediaFilteredCount\"],r),null!=(r=g(e,[\"raiMediaFilteredReasons\"]))&&m(t,[\"raiMediaFilteredReasons\"],r),t}(r)),t}function iO(e){var t,r,n={},a=g(e,[\"videoMetadata\"]),a=(null!=a&&m(n,[\"videoMetadata\"],(t={},null!=(i=g(a=a,[\"fps\"]))&&m(t,[\"fps\"],i),null!=(i=g(a,[\"endOffset\"]))&&m(t,[\"endOffset\"],i),null!=(i=g(a,[\"startOffset\"]))&&m(t,[\"startOffset\"],i),t)),g(e,[\"thought\"])),i=(null!=a&&m(n,[\"thought\"],a),g(e,[\"inlineData\"])),a=(null!=i&&m(n,[\"inlineData\"],(t={},null!=(r=g(a=i,[\"displayName\"]))&&m(t,[\"displayName\"],r),null!=(r=g(a,[\"data\"]))&&m(t,[\"data\"],r),null!=(r=g(a,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),g(e,[\"fileData\"])),a=(null!=a&&m(n,[\"fileData\"],(r={},null!=(o=g(a=a,[\"displayName\"]))&&m(r,[\"displayName\"],o),null!=(o=g(a,[\"fileUri\"]))&&m(r,[\"fileUri\"],o),null!=(o=g(a,[\"mimeType\"]))&&m(r,[\"mimeType\"],o),r)),g(e,[\"thoughtSignature\"])),o=(null!=a&&m(n,[\"thoughtSignature\"],a),g(e,[\"codeExecutionResult\"])),a=(null!=o&&m(n,[\"codeExecutionResult\"],o),g(e,[\"executableCode\"])),a=(null!=a&&m(n,[\"executableCode\"],a),g(e,[\"functionCall\"])),a=(null!=a&&m(n,[\"functionCall\"],a),g(e,[\"functionResponse\"])),a=(null!=a&&m(n,[\"functionResponse\"],a),g(e,[\"text\"]));return null!=a&&m(n,[\"text\"],a),n}function oO(t){var r={},t=g(t,[\"urlMetadata\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"retrievedUrl\"]))&&m(t,[\"retrievedUrl\"],r),null!=(r=g(e,[\"urlRetrievalStatus\"]))&&m(t,[\"urlRetrievalStatus\"],r),t;var t,r})),m(r,[\"urlMetadata\"],e)}return r}function sO(e){var t={},r=g(e,[\"content\"]),r=(null!=r&&m(t,[\"content\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>iO(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(r)),g(e,[\"citationMetadata\"])),r=(null!=r&&m(t,[\"citationMetadata\"],(n={},null!=(r=g(r=r,[\"citations\"]))&&m(n,[\"citations\"],r),n)),g(e,[\"finishMessage\"])),n=(null!=r&&m(t,[\"finishMessage\"],r),g(e,[\"finishReason\"])),r=(null!=n&&m(t,[\"finishReason\"],n),g(e,[\"urlContextMetadata\"])),r=(null!=r&&m(t,[\"urlContextMetadata\"],oO(r)),g(e,[\"avgLogprobs\"])),r=(null!=r&&m(t,[\"avgLogprobs\"],r),g(e,[\"groundingMetadata\"])),r=(null!=r&&m(t,[\"groundingMetadata\"],r),g(e,[\"index\"])),r=(null!=r&&m(t,[\"index\"],r),g(e,[\"logprobsResult\"])),r=(null!=r&&m(t,[\"logprobsResult\"],r),g(e,[\"safetyRatings\"]));return null!=r&&m(t,[\"safetyRatings\"],r),t}function lO(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"candidates\"]));if(null!=r){let e=r;m(t,[\"candidates\"],e=Array.isArray(e)?e.map(e=>sO(e)):e)}r=g(e,[\"createTime\"]),null!=r&&m(t,[\"createTime\"],r),r=g(e,[\"responseId\"]),null!=r&&m(t,[\"responseId\"],r),r=g(e,[\"modelVersion\"]),null!=r&&m(t,[\"modelVersion\"],r),r=g(e,[\"promptFeedback\"]),null!=r&&m(t,[\"promptFeedback\"],r),r=g(e,[\"usageMetadata\"]);return null!=r&&m(t,[\"usageMetadata\"],r),t}function cO(e){var t,r={},n=g(e,[\"values\"]),n=(null!=n&&m(r,[\"values\"],n),g(e,[\"statistics\"]));return null!=n&&m(r,[\"statistics\"],(e={},null!=(t=g(n=n,[\"truncated\"]))&&m(e,[\"truncated\"],t),null!=(t=g(n,[\"token_count\"]))&&m(e,[\"tokenCount\"],t),e)),r}function uO(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"predictions[]\",\"embeddings\"]));if(null!=r){let e=r;m(t,[\"embeddings\"],e=Array.isArray(e)?e.map(e=>cO(e)):e)}r=g(e,[\"metadata\"]);return null!=r&&m(t,[\"metadata\"],(e={},null!=(r=g(r=r,[\"billableCharacterCount\"]))&&m(e,[\"billableCharacterCount\"],r),e)),t}function dO(e){var t={},r=g(e,[\"safetyAttributes\",\"categories\"]),r=(null!=r&&m(t,[\"categories\"],r),g(e,[\"safetyAttributes\",\"scores\"])),r=(null!=r&&m(t,[\"scores\"],r),g(e,[\"contentType\"]));return null!=r&&m(t,[\"contentType\"],r),t}function pO(e){var t={},r=g(e,[\"_self\"]),r=(null!=r&&m(t,[\"image\"],(a={},null!=(n=g(r=r,[\"gcsUri\"]))&&m(a,[\"gcsUri\"],n),null!=(n=g(r,[\"bytesBase64Encoded\"]))&&m(a,[\"imageBytes\"],sE(n)),null!=(n=g(r,[\"mimeType\"]))&&m(a,[\"mimeType\"],n),a)),g(e,[\"raiFilteredReason\"])),n=(null!=r&&m(t,[\"raiFilteredReason\"],r),g(e,[\"_self\"])),a=(null!=n&&m(t,[\"safetyAttributes\"],dO(n)),g(e,[\"prompt\"]));return null!=a&&m(t,[\"enhancedPrompt\"],a),t}function fO(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"displayName\"])),r=(null!=r&&m(t,[\"displayName\"],r),g(e,[\"description\"])),r=(null!=r&&m(t,[\"description\"],r),g(e,[\"versionId\"])),r=(null!=r&&m(t,[\"version\"],r),g(e,[\"deployedModels\"]));if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"endpoint\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"deployedModelId\"]))&&m(t,[\"deployedModelId\"],r),t;var t,r})),m(t,[\"endpoints\"],e)}var n,r=g(e,[\"labels\"]),r=(null!=r&&m(t,[\"labels\"],r),g(e,[\"_self\"])),r=(null!=r&&m(t,[\"tunedModelInfo\"],(n={},null!=(a=g(r=r,[\"labels\",\"google-vertex-llm-tuning-base-model-id\"]))&&m(n,[\"baseModel\"],a),null!=(a=g(r,[\"createTime\"]))&&m(n,[\"createTime\"],a),null!=(a=g(r,[\"updateTime\"]))&&m(n,[\"updateTime\"],a),n)),g(e,[\"defaultCheckpointId\"])),a=(null!=r&&m(t,[\"defaultCheckpointId\"],r),g(e,[\"checkpoints\"]));if(null!=a){let e=a;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"checkpointId\"]))&&m(t,[\"checkpointId\"],r),null!=(r=g(e,[\"epoch\"]))&&m(t,[\"epoch\"],r),null!=(r=g(e,[\"step\"]))&&m(t,[\"step\"],r),t;var t,r})),m(t,[\"checkpoints\"],e)}return t}function hO(e){var t,r,n={},e=g(e,[\"_self\"]);return null!=e&&m(n,[\"video\"],(t={},null!=(r=g(e=e,[\"gcsUri\"]))&&m(t,[\"uri\"],r),null!=(r=g(e,[\"bytesBase64Encoded\"]))&&m(t,[\"videoBytes\"],sE(r)),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t)),n}function mO(e){var t={},r=g(e,[\"name\"]),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"metadata\"])),r=(null!=r&&m(t,[\"metadata\"],r),g(e,[\"done\"])),r=(null!=r&&m(t,[\"done\"],r),g(e,[\"error\"])),r=(null!=r&&m(t,[\"error\"],r),g(e,[\"response\"]));return null!=r&&m(t,[\"response\"],function(e){var t={},r=g(e,[\"videos\"]);if(null!=r){let e=r;m(t,[\"generatedVideos\"],e=Array.isArray(e)?e.map(e=>hO(e)):e)}return null!=(r=g(e,[\"raiMediaFilteredCount\"]))&&m(t,[\"raiMediaFilteredCount\"],r),null!=(r=g(e,[\"raiMediaFilteredReasons\"]))&&m(t,[\"raiMediaFilteredReasons\"],r),t}(r)),t}const gO=\"x-goog-api-client\";const _O=/^data: (.*)(?:\\n\\n|\\r\\r|\\r\\n\\r\\n)/;class yO{constructor(e){this.clientOptions=Object.assign(Object.assign({},e),{project:e.project,location:e.location,apiKey:e.apiKey,vertexai:e.vertexai});var t,r={};this.clientOptions.vertexai?(r.apiVersion=null!=(t=this.clientOptions.apiVersion)?t:\"v1beta1\",r.baseUrl=this.baseUrlFromProjectLocation(),this.normalizeAuthParameters()):(r.apiVersion=null!=(t=this.clientOptions.apiVersion)?t:\"v1beta\",r.baseUrl=\"https://generativelanguage.googleapis.com/\"),r.headers=this.getDefaultHeaders(),this.clientOptions.httpOptions=r,e.httpOptions&&(this.clientOptions.httpOptions=this.patchHttpOptions(r,e.httpOptions))}baseUrlFromProjectLocation(){return this.clientOptions.project&&this.clientOptions.location&&\"global\"!==this.clientOptions.location?`https://${this.clientOptions.location}-aiplatform.googleapis.com/`:\"https://aiplatform.googleapis.com/\"}normalizeAuthParameters(){this.clientOptions.project&&this.clientOptions.location?this.clientOptions.apiKey=void 0:(this.clientOptions.project=void 0,this.clientOptions.location=void 0)}isVertexAI(){var e;return null!=(e=this.clientOptions.vertexai)&&e}getProject(){return this.clientOptions.project}getLocation(){return this.clientOptions.location}getApiVersion(){if(this.clientOptions.httpOptions&&void 0!==this.clientOptions.httpOptions.apiVersion)return this.clientOptions.httpOptions.apiVersion;throw new Error(\"API version is not set.\")}getBaseUrl(){if(this.clientOptions.httpOptions&&void 0!==this.clientOptions.httpOptions.baseUrl)return this.clientOptions.httpOptions.baseUrl;throw new Error(\"Base URL is not set.\")}getRequestUrl(){return this.getRequestUrlInternal(this.clientOptions.httpOptions)}getHeaders(){if(this.clientOptions.httpOptions&&void 0!==this.clientOptions.httpOptions.headers)return this.clientOptions.httpOptions.headers;throw new Error(\"Headers are not set.\")}getRequestUrlInternal(e){var t;if(e&&void 0!==e.baseUrl&&void 0!==e.apiVersion)return t=[e.baseUrl.endsWith(\"/\")?e.baseUrl.slice(0,-1):e.baseUrl],e.apiVersion&&\"\"!==e.apiVersion&&t.push(e.apiVersion),t.join(\"/\");throw new Error(\"HTTP options are not correctly set.\")}getBaseResourcePath(){return`projects/${this.clientOptions.project}/locations/`+this.clientOptions.location}getApiKey(){return this.clientOptions.apiKey}getWebsocketBaseUrl(){var e=this.getBaseUrl(),e=new URL(e);return e.protocol=\"http:\"==e.protocol?\"ws\":\"wss\",e.toString()}setBaseUrl(e){if(!this.clientOptions.httpOptions)throw new Error(\"HTTP options are not correctly set.\");this.clientOptions.httpOptions.baseUrl=e}constructUrl(e,t,r){t=[this.getRequestUrlInternal(t)],r&&t.push(this.getBaseResourcePath()),\"\"!==e&&t.push(e),r=new URL(\"\"+t.join(\"/\"));return r}shouldPrependVertexProjectPath(e){return!this.clientOptions.apiKey&&!!this.clientOptions.vertexai&&!(e.path.startsWith(\"projects/\")||\"GET\"===e.httpMethod&&e.path.startsWith(\"publishers/google/models\"))}async request(e){let t=this.clientOptions.httpOptions;e.httpOptions&&(t=this.patchHttpOptions(this.clientOptions.httpOptions,e.httpOptions));var r=this.shouldPrependVertexProjectPath(e),n=this.constructUrl(e.path,t,r);if(e.queryParams)for(var[a,i]of Object.entries(e.queryParams))n.searchParams.append(a,String(i));let o={};if(\"GET\"===e.httpMethod){if(e.body&&\"{}\"!==e.body)throw new Error(\"Request body should be empty for GET request, but got non empty request body\")}else o.body=e.body;return o=await this.includeExtraHttpOptionsToRequestInit(o,t,e.abortSignal),this.unaryApiCall(n,o,e.httpMethod)}patchHttpOptions(e,t){var r,n,a=JSON.parse(JSON.stringify(e));for([r,n]of Object.entries(t))\"object\"==typeof n?a[r]=Object.assign(Object.assign({},a[r]),n):void 0!==n&&(a[r]=n);return a}async requestStream(e){let t=this.clientOptions.httpOptions;e.httpOptions&&(t=this.patchHttpOptions(this.clientOptions.httpOptions,e.httpOptions));var r=this.shouldPrependVertexProjectPath(e),r=this.constructUrl(e.path,t,r);r.searchParams.has(\"alt\")&&\"sse\"===r.searchParams.get(\"alt\")||r.searchParams.set(\"alt\",\"sse\");let n={};return n.body=e.body,n=await this.includeExtraHttpOptionsToRequestInit(n,t,e.abortSignal),this.streamApiCall(r,n,e.httpMethod)}async includeExtraHttpOptionsToRequestInit(e,t,r){if(t&&t.timeout||r){const i=new AbortController;var n,a=i.signal;t.timeout&&0<(null==t?void 0:t.timeout)&&(n=setTimeout(()=>i.abort(),t.timeout))&&\"function\"==typeof n.unref&&n.unref(),r&&r.addEventListener(\"abort\",()=>{i.abort()}),e.signal=a}return t&&null!==t.extraBody&&function(t,r){if(r&&0!==Object.keys(r).length)if(t.body instanceof Blob)console.warn(\"includeExtraBodyToRequestInit: extraBody provided but current request body is a Blob. extraBody will be ignored as merging is not supported for Blob bodies.\");else{let e={};if(\"string\"==typeof t.body&&0<t.body.length)try{var n=JSON.parse(t.body);if(\"object\"!=typeof n||null===n||Array.isArray(n))return console.warn(\"includeExtraBodyToRequestInit: Original request body is valid JSON but not a non-array object. Skip applying extraBody to the request body.\");e=n}catch(e){return console.warn(\"includeExtraBodyToRequestInit: Original request body is not valid JSON. Skip applying extraBody to the request body.\")}r=function e(t,r){const n=Object.assign({},t);for(const a in r)if(Object.prototype.hasOwnProperty.call(r,a)){const i=r[a],o=n[a];i&&\"object\"==typeof i&&!Array.isArray(i)&&o&&\"object\"==typeof o&&!Array.isArray(o)?n[a]=e(o,i):(o&&i&&typeof o!=typeof i&&console.warn(`includeExtraBodyToRequestInit:deepMerge: Type mismatch for key \"${a}\". Original type: ${typeof o}, New type: ${typeof i}. Overwriting.`),n[a]=i)}return n}(e,r);t.body=JSON.stringify(r)}}(e,t.extraBody),e.headers=await this.getHeadersInternal(t),e}async unaryApiCall(e,t,r){return this.apiCall(e.toString(),Object.assign(Object.assign({},t),{method:r})).then(async e=>(await TO(e),new Tb(e))).catch(e=>{throw e instanceof Error?e:new Error(JSON.stringify(e))})}async streamApiCall(e,t,r){return this.apiCall(e.toString(),Object.assign(Object.assign({},t),{method:r})).then(async e=>(await TO(e),this.processStreamResponse(e))).catch(e=>{throw e instanceof Error?e:new Error(JSON.stringify(e))})}processStreamResponse(h){var e;return pS(this,arguments,function*(){var r=null==(e=null==h?void 0:h.body)?void 0:e.getReader(),n=new TextDecoder(\"utf-8\");if(!r)throw new Error(\"Response body is empty\");try{let t=\"\";for(;;){var{done:a,value:i}=yield dS(r.read());if(a){if(0<t.trim().length)throw new Error(\"Incomplete JSON segment at the end\");break}var o=n.decode(i,{stream:!0});try{var s=JSON.parse(o);if(\"error\"in s){var l=JSON.parse(JSON.stringify(s.error)),c=l.status,u=l.code,d=`got status: ${c}. `+JSON.stringify(s);if(400<=u&&u<600)throw new yS({message:d,status:u})}}catch(e){if(\"ApiError\"===e.name)throw e}let e=(t+=o).match(_O);for(;e;){var p=e[1];try{var f=new Response(p,{headers:null==h?void 0:h.headers,status:null==h?void 0:h.status,statusText:null==h?void 0:h.statusText});yield yield dS(new Tb(f)),t=t.slice(e[0].length),e=t.match(_O)}catch(e){throw new Error(`exception parsing stream chunk ${p}. `+e)}}}}finally{r.releaseLock()}})}async apiCall(e,t){return fetch(e,t).catch(e=>{throw new Error(`exception ${e} sending request`)})}getDefaultHeaders(){var e={},t=\"google-genai-sdk/1.12.0 \"+this.clientOptions.userAgentExtra;return e[\"User-Agent\"]=t,e[gO]=t,e[\"Content-Type\"]=\"application/json\",e}async getHeadersInternal(e){var t=new Headers;if(e&&e.headers){for(var[r,n]of Object.entries(e.headers))t.append(r,n);e.timeout&&0<e.timeout&&t.append(\"X-Server-Timeout\",String(Math.ceil(e.timeout/1e3)))}return await this.clientOptions.auth.addAuthHeaders(t),t}async uploadFile(e,t){var r={},n=(null!=t&&(r.mimeType=t.mimeType,r.name=t.name,r.displayName=t.displayName),r.name&&!r.name.startsWith(\"files/\")&&(r.name=\"files/\"+r.name),this.clientOptions.uploader),a=await n.stat(e),i=(r.sizeBytes=String(a.size),null!=(i=null==t?void 0:t.mimeType)?i:a.type);if(void 0===i||\"\"===i)throw new Error(\"Can not determine mimeType. Please provide mimeType in the config.\");r.mimeType=i;a=await this.fetchUploadUrl(r,t);return n.upload(e,a,this)}async downloadFile(e){await this.clientOptions.downloader.download(e,this)}async fetchUploadUrl(e,t){let r={};r=null!=t&&t.httpOptions?t.httpOptions:{apiVersion:\"\",headers:{\"Content-Type\":\"application/json\",\"X-Goog-Upload-Protocol\":\"resumable\",\"X-Goog-Upload-Command\":\"start\",\"X-Goog-Upload-Header-Content-Length\":\"\"+e.sizeBytes,\"X-Goog-Upload-Header-Content-Type\":\"\"+e.mimeType}};var t={file:e},e=await this.request({path:c(\"upload/v1beta/files\",t._url),body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:r});if(!e||null==e||!e.headers)throw new Error(\"Server did not return an HttpResponse or the returned HttpResponse did not have headers.\");e=null==(t=null==e?void 0:e.headers)?void 0:t[\"x-goog-upload-url\"];if(void 0===e)throw new Error(\"Failed to get upload url. Server did not return the x-google-upload-url in the headers\");return e}}async function TO(t){if(void 0===t)throw new Error(\"response is undefined\");if(!t.ok){var r=t.status;let e;e=null!=(n=t.headers.get(\"content-type\"))&&n.includes(\"application/json\")?await t.json():{error:{message:await t.text(),code:t.status,status:t.statusText}};var n=JSON.stringify(e);if(400<=r&&r<600)throw new yS({message:n,status:r});throw new Error(n)}}let vO=!1;function bO(e){for(const r of e){if(null!==(t=r)&&\"object\"==typeof t&&t instanceof SO)return 1;if(\"object\"==typeof r&&\"inputSchema\"in r)return 1}var t;return vO}function EO(e){var t=null!=(t=e[gO])?t:\"\";e[gO]=(t+\" mcp_used/unknown\").trimStart()}class SO{constructor(e=[],t){this.mcpTools=[],this.functionNameToMcpClient={},this.mcpClients=e,this.config=t}static create(e,t){return new SO(e,t)}async initialize(){var e,t,r;if(!(0<this.mcpTools.length)){var n={},a=[];for(const d of this.mcpClients)try{for(var i,o=!0,s=(t=void 0,fS(function(a,i=100){return pS(this,arguments,function*(){let e=void 0,t=0;for(;t<i;){var r=yield dS(a.listTools({cursor:e}));for(const n of r.tools)yield yield dS(n),t++;if(!r.nextCursor)break;e=r.nextCursor}})}(d)));!(e=(i=await s.next()).done);o=!0){var l=i.value,o=!1,c=l,u=(a.push(c),c.name);if(n[u])throw new Error(`Duplicate function name ${u} found in MCP tools. Please ensure function names are unique.`);n[u]=d}}catch(e){t={error:e}}finally{try{o||e||!(r=s.return)||await r.call(s)}finally{if(t)throw t.error}}this.mcpTools=a,this.functionNameToMcpClient=n}}async tool(){await this.initialize();var e,[t,r={}]=[this.mcpTools,this.config],n=[],a=new Set;for(const o of t){var i=o.name;if(a.has(i))throw new Error(`Duplicate function name ${i} found in MCP tools. Please ensure function names are unique.`);a.add(i);[i,e={}]=[o,r],i={name:i.name,description:i.description,parametersJsonSchema:i.inputSchema},e.behavior&&(i.behavior=e.behavior);i=e={functionDeclarations:[i]};i.functionDeclarations&&n.push(...i.functionDeclarations)}return{functionDeclarations:n}}async callTool(e){await this.initialize();var t=[];for(const n of e)if(n.name in this.functionNameToMcpClient){var r=this.functionNameToMcpClient[n.name];let e=void 0;this.config.timeout&&(e={timeout:this.config.timeout});r=await r.callTool({name:n.name,arguments:n.args},void 0,e);t.push({functionResponse:{name:n.name,response:r.isError?{error:r}:r}})}return t}}class AO{constructor(e,t,r){this.apiClient=e,this.auth=t,this.webSocketFactory=r}async connect(e){if(this.apiClient.isVertexAI())throw new Error(\"Live music is not supported for Vertex AI.\");console.warn(\"Live music generation is experimental and may change in future versions.\");var t=this.apiClient.getWebsocketBaseUrl(),r=this.apiClient.getApiVersion(),n=function(e){var t=new Headers;for(var[r,n]of Object.entries(e))t.append(r,n);return t}(this.apiClient.getDefaultHeaders()),t=t+`/ws/google.ai.generativelanguage.${r}.GenerativeService.BidiGenerateMusic?key=`+this.apiClient.getApiKey();let a=()=>{};r=new Promise(e=>{a=e});const i=e.callbacks;const o=this.apiClient;var s={onopen:function(){a({})},onmessage:e=>{!async function(e,t){var r=new Bb;let n;t=aA(n=t.data instanceof Blob?JSON.parse(await t.data.text()):JSON.parse(t.data)),Object.assign(r,t),e(r)}((o,i.onmessage),e)},onerror:null!=(s=null===i||void 0===i?void 0:i.onerror)?s:function(e){},onclose:null!=(s=null===i||void 0===i?void 0:i.onclose)?s:function(e){}},t=this.webSocketFactory.create(t,function(e){const r={};return e.forEach((e,t)=>{r[t]=e}),r}(n),s),n=(t.connect(),await r,_(this.apiClient,e.model)),s=FS({setup:xS({model:n})});return t.send(JSON.stringify(s)),new OO(t,this.apiClient)}}class OO{constructor(e,t){this.conn=e,this.apiClient=t}async setWeightedPrompts(e){if(!e.weightedPrompts||0===Object.keys(e.weightedPrompts).length)throw new Error(\"Weighted prompts must be set and contain at least one entry.\");e=LS(function(t){var r={};if(null!=(t=g(t,[\"weightedPrompts\"]))){let e=t;m(r,[\"weightedPrompts\"],e=Array.isArray(e)?e.map(e=>PS(e)):e)}return r}(e));this.conn.send(JSON.stringify({clientContent:e}))}async setMusicGenerationConfig(e){e.musicGenerationConfig||(e.musicGenerationConfig={}),t={},null!=(e=g(e=e,[\"musicGenerationConfig\"]))&&m(t,[\"musicGenerationConfig\"],DS(e));var t,e=FS(t);this.conn.send(JSON.stringify(e))}sendPlaybackControl(e){e=FS({playbackControl:e});this.conn.send(JSON.stringify(e))}play(){this.sendPlaybackControl(sb.PLAY)}pause(){this.sendPlaybackControl(sb.PAUSE)}stop(){this.sendPlaybackControl(sb.STOP)}resetContext(){this.sendPlaybackControl(sb.RESET_CONTEXT)}close(){this.conn.close()}}class CO{constructor(e,t,r){this.apiClient=e,this.auth=t,this.webSocketFactory=r,this.music=new AO(this.apiClient,this.auth,this.webSocketFactory)}async connect(e){if(e.config&&e.config.httpOptions)throw new Error(\"The Live module does not support httpOptions at request-level in LiveConnectConfig yet. Please use the client-level httpOptions configuration instead.\");var r=this.apiClient.getWebsocketBaseUrl(),n=this.apiClient.getApiVersion();let a;var t=this.apiClient.getHeaders(),t=(e.config&&e.config.tools&&bO(e.config.tools)&&EO(t),function(e){var t=new Headers;for(var[r,n]of Object.entries(e))t.append(r,n);return t}(t));if(this.apiClient.isVertexAI())a=r+`/ws/google.cloud.aiplatform.${n}.LlmBidiService/BidiGenerateContent`,await this.auth.addAuthHeaders(t);else{var i=this.apiClient.getApiKey();let e=\"BidiGenerateContent\",t=\"key\";null!=i&&i.startsWith(\"auth_tokens/\")&&(console.warn(\"Warning: Ephemeral token support is experimental and may change in future versions.\"),\"v1alpha\"!==n&&console.warn(\"Warning: The SDK's ephemeral token support is in v1alpha only. Please use const ai = new GoogleGenAI({apiKey: token.name, httpOptions: { apiVersion: 'v1alpha' }}); before session connection.\"),e=\"BidiGenerateContentConstrained\",t=\"access_token\"),a=`${r}/ws/google.ai.generativelanguage.${n}.GenerativeService.${e}?${t}=`+i}let o=()=>{};var r=new Promise(e=>{o=e});const s=e.callbacks;const l=this.apiClient;var n={onopen:function(){var e;null!=(e=null===s||void 0===s?void 0:s.onopen)&&e.call(s),o({})},onmessage:e=>{!async function(e,t,r){var n=new Fb;let a;a=r.data instanceof Blob?await r.data.text():r.data instanceof ArrayBuffer?(new TextDecoder).decode(r.data):r.data,r=JSON.parse(a),e.isVertexAI()?(e=uA(r),Object.assign(n,e)):(e=eA(r),Object.assign(n,e)),t(n)}(l,s.onmessage,e)},onerror:null!=(n=null===s||void 0===s?void 0:s.onerror)?n:function(e){},onclose:null!=(i=null===s||void 0===s?void 0:s.onclose)?i:function(e){}},i=this.webSocketFactory.create(a,function(e){const r={};return e.forEach((e,t)=>{r[t]=e}),r}(t),n);i.connect(),await r;let c=_(this.apiClient,e.model),u=(this.apiClient.isVertexAI()&&c.startsWith(\"publishers/\")&&(t=this.apiClient.getProject(),n=this.apiClient.getLocation(),c=`projects/${t}/locations/${n}/`+c),{});this.apiClient.isVertexAI()&&void 0===(null==(r=e.config)?void 0:r.responseModalities)&&(void 0===e.config?e.config={responseModalities:[Lv.AUDIO]}:e.config.responseModalities=[Lv.AUDIO]),null!=(t=e.config)&&t.generationConfig&&console.warn(\"Setting `LiveConnectConfig.generation_config` is deprecated, please set the fields on `LiveConnectConfig` directly. This will become an error in a future version (not before Q3 2025).\");var d,p=[];for(const h of null!=(r=null==(n=e.config)?void 0:n.tools)?r:[])this.isCallableTool(h)?(d=h,p.push(await d.tool())):p.push(h);0<p.length&&(e.config.tools=p);var f,t={model:c,config:e.config,callbacks:e.callbacks};return delete(u=this.apiClient.isVertexAI()?(n=this.apiClient,r={},null!=(f=g(e=t,[\"model\"]))&&m(r,[\"setup\",\"model\"],_(n,f)),null!=(n=g(e,[\"config\"]))&&m(r,[\"config\"],$S(n,r)),r):(f=this.apiClient,e={},null!=(r=g(n=t,[\"model\"]))&&m(e,[\"setup\",\"model\"],_(f,r)),null!=(f=g(n,[\"config\"]))&&m(e,[\"config\"],MS(f,e)),e)).config,i.send(JSON.stringify(u)),new kO(i,this.apiClient)}isCallableTool(e){return\"callTool\"in e&&\"function\"==typeof e.callTool}}const wO={turnComplete:!0};class kO{constructor(e,t){this.conn=e,this.apiClient=t}tLiveClientContent(t,r){if(null===r.turns||void 0===r.turns)return{clientContent:{turnComplete:r.turnComplete}};{let e=[];try{e=Zb(r.turns),e=t.isVertexAI()?e.map(e=>IA(e)):e.map(e=>pA(e))}catch(e){throw new Error(`Failed to parse client content \"turns\", type: '${typeof r.turns}'`)}return{clientContent:{turns:e,turnComplete:r.turnComplete}}}}tLiveClienttToolResponse(e,t){let r=[];if(null==t.functionResponses)throw new Error(\"functionResponses is required.\");if(0===(r=Array.isArray(t.functionResponses)?t.functionResponses:[t.functionResponses]).length)throw new Error(\"functionResponses is required.\");for(const n of r){if(!(\"object\"==typeof n&&null!==n&&\"name\"in n&&\"response\"in n))throw new Error(`Could not parse function response, type '${typeof n}'.`);if(!(e.isVertexAI()||\"id\"in n))throw new Error(\"FunctionResponse request must have an `id` field from the response of a ToolCall.FunctionalCalls in Google AI.\")}return{toolResponse:{functionResponses:r}}}sendClientContent(e){e=Object.assign(Object.assign({},wO),e);e=this.tLiveClientContent(this.apiClient,e);this.conn.send(JSON.stringify(e))}sendRealtimeInput(e){let t={};var r,n,a;t=this.apiClient.isVertexAI()?{realtimeInput:(n={},null!=(a=g(r=e,[\"media\"]))&&m(n,[\"mediaChunks\"],Hb(a)),null!=(a=g(r,[\"audio\"]))&&m(n,[\"audio\"],qb(a)),null!=(a=g(r,[\"audioStreamEnd\"]))&&m(n,[\"audioStreamEnd\"],a),null!=(a=g(r,[\"video\"]))&&m(n,[\"video\"],Vb(a)),null!=(a=g(r,[\"text\"]))&&m(n,[\"text\"],a),null!=(a=g(r,[\"activityStart\"]))&&m(n,[\"activityStart\"],{}),null!=(a=g(r,[\"activityEnd\"]))&&m(n,[\"activityEnd\"],{}),n)}:{realtimeInput:(r={},null!=(n=g(a=e,[\"media\"]))&&m(r,[\"mediaChunks\"],Hb(n)),null!=(n=g(a,[\"audio\"]))&&m(r,[\"audio\"],qb(n)),null!=(n=g(a,[\"audioStreamEnd\"]))&&m(r,[\"audioStreamEnd\"],n),null!=(n=g(a,[\"video\"]))&&m(r,[\"video\"],Vb(n)),null!=(n=g(a,[\"text\"]))&&m(r,[\"text\"],n),null!=(n=g(a,[\"activityStart\"]))&&m(r,[\"activityStart\"],{}),null!=(n=g(a,[\"activityEnd\"]))&&m(r,[\"activityEnd\"],{}),r)},this.conn.send(JSON.stringify(t))}sendToolResponse(e){if(null==e.functionResponses)throw new Error(\"Tool response parameters are required.\");e=this.tLiveClienttToolResponse(this.apiClient,e);this.conn.send(JSON.stringify(e))}close(){this.conn.close()}}function IO(e){var t;if(null!=(t=null==e?void 0:e.automaticFunctionCalling)&&t.disable)return 1;let r=!1;for(const n of null!=(t=null==e?void 0:e.tools)?t:[])if(RO(n)){r=!0;break}return!r||((e=null==(t=null==e?void 0:e.automaticFunctionCalling)?void 0:t.maximumRemoteCalls)&&(e<0||!Number.isInteger(e))||0==e)&&(console.warn(\"Invalid maximumRemoteCalls value provided for automatic function calling. Disabled automatic function calling. Please provide a valid integer value greater than 0. maximumRemoteCalls provided:\",e),1)}function RO(e){return\"callTool\"in e&&\"function\"==typeof e.callTool}function NO(e){return null==(e=null==e?void 0:e.automaticFunctionCalling)||!e.ignoreCallHistory}class MO extends hb{constructor(e){super(),this.apiClient=e,this.generateContent=async e=>{var t,r,n=await this.processParamsMaybeAddMcpUsage(e);if(this.maybeMoveToResponseJsonSchem(e),null==(t=null==(t=null==(t=(t=e).config)?void 0:t.tools)?void 0:t.some(e=>RO(e)))||!t||IO(e.config))return this.generateContentInternal(n);if(null!=(t=null==(t=null==(t=(t=e).config)?void 0:t.tools)?void 0:t.some(e=>!RO(e)))&&t)throw new Error(\"Automatic function calling with CallableTools and Tools is not yet supported.\");let a;var i=Zb(n.contents),o=null!=(t=null==(t=null==(t=n.config)?void 0:t.automaticFunctionCalling)?void 0:t.maximumRemoteCalls)?t:10;let s=0;for(;s<o&&(a=await this.generateContentInternal(n)).functionCalls&&0!==a.functionCalls.length;){var l,c=a.candidates[0].content,u=[];for(const d of null!=(r=null==(r=e.config)?void 0:r.tools)?r:[])RO(d)&&(l=await d.callTool(a.functionCalls),u.push(...l));s++,r={role:\"user\",parts:u},n.contents=Zb(n.contents),n.contents.push(c),n.contents.push(r),NO(n.config)&&(i.push(c),i.push(r))}return NO(n.config)&&(a.automaticFunctionCallingHistory=i),a},this.generateContentStream=async e=>{var t;return this.maybeMoveToResponseJsonSchem(e),IO(e.config)?(t=await this.processParamsMaybeAddMcpUsage(e),this.generateContentStreamInternal(t)):this.processAfcStream(e)},this.generateImages=async e=>this.generateImagesInternal(e).then(e=>{var t;let r;var n=[];if(null!=e&&e.generatedImages)for(const i of e.generatedImages)i&&null!==i&&void 0!==i&&i.safetyAttributes&&\"Positive Prompt\"===(null==(t=null===i||void 0===i?void 0:i.safetyAttributes)?void 0:t.contentType)?r=null===i||void 0===i?void 0:i.safetyAttributes:n.push(i);let a;return a=r?{generatedImages:n,positivePromptSafetyAttributes:r,sdkHttpResponse:e.sdkHttpResponse}:{generatedImages:n,sdkHttpResponse:e.sdkHttpResponse}}),this.list=async e=>{var t,e={config:Object.assign(Object.assign({},{queryBase:!0}),null==e?void 0:e.config)};if(this.apiClient.isVertexAI()&&!e.config.queryBase){if(null!=(t=e.config)&&t.filter)throw new Error(\"Filtering tuned models list for Vertex AI is not currently supported\");e.config.filter=\"labels.tune-type:*\"}return new UE(lb.PAGED_ITEM_MODELS,e=>this.listInternal(e),await this.listInternal(e),e)},this.editImage=async e=>{var t={model:e.model,prompt:e.prompt,referenceImages:[],config:e.config};return e.referenceImages&&e.referenceImages&&(t.referenceImages=e.referenceImages.map(e=>e.toReferenceImageAPI())),this.editImageInternal(t)},this.upscaleImage=async e=>{let t={numberOfImages:1,mode:\"upscale\"};e.config&&(t=Object.assign(Object.assign({},t),e.config));e={model:e.model,image:e.image,upscaleFactor:e.upscaleFactor,config:t};return this.upscaleImageInternal(e)},this.generateVideos=async e=>this.generateVideosInternal(e)}maybeMoveToResponseJsonSchem(e){e.config&&e.config.responseSchema&&(e.config.responseJsonSchema||Object.keys(e.config.responseSchema).includes(\"$schema\")&&(e.config.responseJsonSchema=e.config.responseSchema,delete e.config.responseSchema))}async processParamsMaybeAddMcpUsage(t){var r=null==(r=t.config)?void 0:r.tools;if(!r)return t;var r=await Promise.all(r.map(async e=>{return RO(e)?e.tool():e})),n={model:t.model,contents:t.contents,config:Object.assign(Object.assign({},t.config),{tools:r})};if(n.config.tools=r,t.config&&t.config.tools&&bO(t.config.tools)){r=null!=(r=null==(r=t.config.httpOptions)?void 0:r.headers)?r:{};let e=Object.assign({},r);EO(e=0===Object.keys(e).length?this.apiClient.getDefaultHeaders():e),n.config.httpOptions=Object.assign(Object.assign({},t.config.httpOptions),{headers:e})}return n}async initAfcToolsMap(e){var t,r=new Map;for(const a of null!=(e=null==(e=e.config)?void 0:e.tools)?e:[])if(RO(a)){var n=a;for(const i of null!=(t=(await n.tool()).functionDeclarations)?t:[]){if(!i.name)throw new Error(\"Function declaration name is required.\");if(r.has(i.name))throw new Error(\"Duplicate tool declaration name: \"+i.name);r.set(i.name,n)}}return r}async processAfcStream(e){const y=null!=(t=null==(t=null==(t=e.config)?void 0:t.automaticFunctionCalling)?void 0:t.maximumRemoteCalls)?t:10;let T=!1,v=0;var t=await this.initAfcToolsMap(e);return function(f,h,m){var g,_;return pS(this,arguments,function*(){for(var e,t,r;v<y;){T&&(v++,T=!1);var n=yield dS(f.processParamsMaybeAddMcpUsage(m)),n=yield dS(f.generateContentStreamInternal(n)),a=[],i=[];try{for(var o,s=!0,l=(t=void 0,fS(n));!(e=(o=yield dS(l.next())).done);s=!0){var c=o.value,s=!1,u=c;if(yield yield dS(u),u.candidates&&null!=(g=u.candidates[0])&&g.content){i.push(u.candidates[0].content);for(const p of null!=(_=u.candidates[0].content.parts)?_:[])if(v<y&&p.functionCall){if(!p.functionCall.name)throw new Error(\"Function call name was not returned by the model.\");if(!h.has(p.functionCall.name))throw new Error(`Automatic function calling was requested, but not all the tools the model used implement the CallableTool interface. Available tools: ${h.keys()}, mising tool: `+p.functionCall.name);var d=yield dS(h.get(p.functionCall.name).callTool([p.functionCall]));a.push(...d)}}}}catch(e){t={error:e}}finally{try{s||e||!(r=l.return)||(yield dS(r.call(l)))}finally{if(t)throw t.error}}if(!(0<a.length))break;T=!0;n=new vb,n=(n.candidates=[{content:{role:\"user\",parts:a}}],yield yield dS(n),[]),n=(n.push(...i),n.push({role:\"user\",parts:a}),Zb(m.contents).concat(n));m.contents=n}})}(this,t,e)}async generateContentInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=UA(this.apiClient,e),n=c(\"{model}:generateContent\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=lO(e),t=new vb;return Object.assign(t,e),t})):(t=bA(this.apiClient,e),n=c(\"{model}:generateContent\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=ZA(e),t=new vb;return Object.assign(t,e),t}))}async generateContentStreamInternal(e){var t,r;let n,a=\"\",i={};return this.apiClient.isVertexAI()?(r=UA(this.apiClient,e),a=c(\"{model}:streamGenerateContent?alt=sse\",r._url),i=r._query,delete r.config,delete r._url,delete r._query,t=this.apiClient,(n=t.requestStream({path:a,queryParams:i,body:JSON.stringify(r),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal})).then(function(u){return pS(this,arguments,function*(){var e,t,r;try{for(var n,a=!0,i=fS(u);!(e=(n=yield dS(i.next())).done);a=!0){var o=n.value,a=!1,s=o,l=lO(yield dS(s.json())),c=(l.sdkHttpResponse={headers:s.headers},new vb);Object.assign(c,l),yield yield dS(c)}}catch(e){t={error:e}}finally{try{a||e||!(r=i.return)||(yield dS(r.call(i)))}finally{if(t)throw t.error}}})})):(t=bA(this.apiClient,e),a=c(\"{model}:streamGenerateContent?alt=sse\",t._url),i=t._query,delete t.config,delete t._url,delete t._query,r=this.apiClient,(n=r.requestStream({path:a,queryParams:i,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal})).then(function(u){return pS(this,arguments,function*(){var e,t,r;try{for(var n,a=!0,i=fS(u);!(e=(n=yield dS(i.next())).done);a=!0){var o=n.value,a=!1,s=o,l=ZA(yield dS(s.json())),c=(l.sdkHttpResponse={headers:s.headers},new vb);Object.assign(c,l),yield yield dS(c)}}catch(e){t={error:e}}finally{try{a||e||!(r=i.return)||(yield dS(r.call(i)))}finally{if(t)throw t.error}}})}))}async embedContent(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=BA(this.apiClient,e),n=c(\"{model}:predict\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=uO(e),t=new bb;return Object.assign(t,e),t})):(t=EA(this.apiClient,e),n=c(\"{model}:batchEmbedContents\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=XA(e),t=new bb;return Object.assign(t,e),t}))}async generateImagesInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=jA(this.apiClient,e),n=c(\"{model}:predict\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"predictions\"]))){let e=r;m(t,[\"generatedImages\"],e=Array.isArray(e)?e.map(e=>pO(e)):e)}return null!=(r=g(e,[\"positivePromptSafetyAttributes\"]))&&m(t,[\"positivePromptSafetyAttributes\"],dO(r)),t}(e),t=new Eb;return Object.assign(t,e),t})):(t=SA(this.apiClient,e),n=c(\"{model}:predict\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"predictions\"]))){let e=r;m(t,[\"generatedImages\"],e=Array.isArray(e)?e.map(e=>tO(e)):e)}return null!=(r=g(e,[\"positivePromptSafetyAttributes\"]))&&m(t,[\"positivePromptSafetyAttributes\"],eO(r)),t}(e),t=new Eb;return Object.assign(t,e),t}))}async editImageInternal(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())return r=c(\"{model}:predict\",(t=VA(this.apiClient,e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"predictions\"]))){let e=r;m(t,[\"generatedImages\"],e=Array.isArray(e)?e.map(e=>pO(e)):e)}return t}(e),t=new Sb;return Object.assign(t,e),t});throw new Error(\"This method is only supported by the Vertex AI.\")}async upscaleImageInternal(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())return r=c(\"{model}:predict\",(t=qA(this.apiClient,e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"predictions\"]))){let e=r;m(t,[\"generatedImages\"],e=Array.isArray(e)?e.map(e=>pO(e)):e)}return t}(e),t=new Ab;return Object.assign(t,e),t});throw new Error(\"This method is only supported by the Vertex AI.\")}async get(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"model\"]))&&m(a,[\"_url\",\"name\"],_(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"GET\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(e=>{return fO(e)})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"model\"]))&&m(i,[\"_url\",\"name\"],_(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return rO(e)}))}async listInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=zA(this.apiClient,e),n=c(\"{models_url}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"_self\"]))){let e=uE(r);m(t,[\"models\"],e=Array.isArray(e)?e.map(e=>fO(e)):e)}return t}(e),t=new Ob;return Object.assign(t,e),t})):(t=AA(this.apiClient,e),n=c(\"{models_url}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"_self\"]))){let e=uE(r);m(t,[\"models\"],e=Array.isArray(e)?e.map(e=>rO(e)):e)}return t}(e),t=new Ob;return Object.assign(t,e),t}))}async update(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=WA(this.apiClient,e),n=c(\"{model}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"PATCH\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return fO(e)})):(t=OA(this.apiClient,e),n=c(\"{name}\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"PATCH\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{return rO(e)}))}async delete(e){var t,r,n,a,i;let o,s=\"\",l={};return this.apiClient.isVertexAI()?(r=this.apiClient,a={},null!=(i=g(n=e,[\"model\"]))&&m(a,[\"_url\",\"name\"],_(r,i)),null!=(r=g(n,[\"config\"]))&&m(a,[\"config\"],r),i=a,s=c(\"{name}\",i._url),l=i._query,delete i.config,delete i._url,delete i._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(i),httpMethod:\"DELETE\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json())).then(()=>{var e={},t=new Cb;return Object.assign(t,e),t})):(a=this.apiClient,i={},null!=(r=g(n=e,[\"model\"]))&&m(i,[\"_url\",\"name\"],_(a,r)),null!=(a=g(n,[\"config\"]))&&m(i,[\"config\"],a),t=i,s=c(\"{name}\",t._url),l=t._query,delete t.config,delete t._url,delete t._query,(o=this.apiClient.request({path:s,queryParams:l,body:JSON.stringify(t),httpMethod:\"DELETE\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(()=>{var e={},t=new Cb;return Object.assign(t,e),t}))}async countTokens(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=$A(this.apiClient,e),n=c(\"{model}:countTokens\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{t={},null!=(r=g(e=e,[\"sdkHttpResponse\"]))&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"totalTokens\"]))&&m(t,[\"totalTokens\"],r);var t,e=t,r=new wb;return Object.assign(r,e),r})):(t=CA(this.apiClient,e),n=c(\"{model}:countTokens\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{t={},null!=(r=g(e=e,[\"sdkHttpResponse\"]))&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"totalTokens\"]))&&m(t,[\"totalTokens\"],r),null!=(r=g(e,[\"cachedContentTokenCount\"]))&&m(t,[\"cachedContentTokenCount\"],r);var t,e=t,r=new wb;return Object.assign(r,e),r}))}async computeTokens(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())return r=c(\"{model}:computeTokens\",(t=function(t,e){var r={},n=g(e,[\"model\"]);if(null!=n&&m(r,[\"_url\",\"model\"],_(t,n)),null!=(t=g(e,[\"contents\"]))){let e=Zb(t);m(r,[\"contents\"],e=Array.isArray(e)?e.map(e=>IA(e)):e)}return null!=(n=g(e,[\"config\"]))&&m(r,[\"config\"],n),r}(this.apiClient,e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{t={},null!=(r=g(e=e,[\"sdkHttpResponse\"]))&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"tokensInfo\"]))&&m(t,[\"tokensInfo\"],r);var t,e=t,r=new kb;return Object.assign(r,e),r});throw new Error(\"This method is only supported by the Vertex AI.\")}async generateVideosInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=KA(this.apiClient,e),n=c(\"{model}:predictLongRunning\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{var e=mO(e),t=new Ub;return Object.assign(t,e),t})):(t=wA(this.apiClient,e),n=c(\"{model}:predictLongRunning\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json())).then(e=>{var e=aO(e),t=new Ub;return Object.assign(t,e),t}))}}class PO extends hb{constructor(e){super(),this.apiClient=e}async getVideosOperation(t){var r=t.operation,t=t.config;if(void 0===r.name||\"\"===r.name)throw new Error(\"Operation name is required.\");if(this.apiClient.isVertexAI()){var n=r.name.split(\"/operations/\")[0];let e=void 0;t&&\"httpOptions\"in t&&(e=t.httpOptions);var n=await this.fetchPredictVideosOperationInternal({operationName:r.name,resourceName:n,config:{httpOptions:e}});return r._fromAPIResponse({apiResponse:n,isVertexAI:!0})}return n=await this.getVideosOperationInternal({operationName:r.name,config:t}),r._fromAPIResponse({apiResponse:n,isVertexAI:!1})}async get(t){var r=t.operation,t=t.config;if(void 0===r.name||\"\"===r.name)throw new Error(\"Operation name is required.\");if(this.apiClient.isVertexAI()){var n=r.name.split(\"/operations/\")[0];let e=void 0;t&&\"httpOptions\"in t&&(e=t.httpOptions);var n=await this.fetchPredictVideosOperationInternal({operationName:r.name,resourceName:n,config:{httpOptions:e}});return r._fromAPIResponse({apiResponse:n,isVertexAI:!0})}return n=await this.getVideosOperationInternal({operationName:r.name,config:t}),r._fromAPIResponse({apiResponse:n,isVertexAI:!1})}async getVideosOperationInternal(e){var t,r,n,a;let i,o=\"\",s={};return i=this.apiClient.isVertexAI()?(n={},null!=(a=g(r=e,[\"operationName\"]))&&m(n,[\"_url\",\"operationName\"],a),null!=(a=g(r,[\"config\"]))&&m(n,[\"config\"],a),r=n,o=c(\"{operationName}\",r._url),s=r._query,delete r.config,delete r._url,delete r._query,this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(r),httpMethod:\"GET\",httpOptions:null==(a=e.config)?void 0:a.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(e=>e.json())):(r={},null!=(n=g(a=e,[\"operationName\"]))&&m(r,[\"_url\",\"operationName\"],n),null!=(n=g(a,[\"config\"]))&&m(r,[\"config\"],n),t=r,o=c(\"{operationName}\",t._url),s=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json()))}async fetchPredictVideosOperationInternal(e){var t,r,n,a=\"\",i={};if(this.apiClient.isVertexAI())return r={},null!=(n=g(t=e,[\"operationName\"]))&&m(r,[\"operationName\"],n),null!=(n=g(t,[\"resourceName\"]))&&m(r,[\"_url\",\"resourceName\"],n),null!=(n=g(t,[\"config\"]))&&m(r,[\"config\"],n),a=c(\"{resourceName}:fetchPredictOperation\",(t=r)._url),i=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:a,queryParams:i,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(r=e.config)?void 0:r.abortSignal}).then(e=>e.json());throw new Error(\"This method is only supported by the Vertex AI.\")}}function DO(e){var t,r={},e=g(e,[\"prebuiltVoiceConfig\"]);return null!=e&&m(r,[\"prebuiltVoiceConfig\"],(t={},null!=(e=g(e=e,[\"voiceName\"]))&&m(t,[\"voiceName\"],e),t)),r}function xO(t){var r={},t=g(t,[\"speakerVoiceConfigs\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"speaker\"]))&&m(t,[\"speaker\"],r),null!=(r=g(e,[\"voiceConfig\"]))&&m(t,[\"voiceConfig\"],DO(r)),t;var t,r})),m(r,[\"speakerVoiceConfigs\"],e)}return r}function LO(e){var t={},r=g(e,[\"videoMetadata\"]),r=(null!=r&&m(t,[\"videoMetadata\"],(a={},null!=(n=g(r=r,[\"fps\"]))&&m(a,[\"fps\"],n),null!=(n=g(r,[\"endOffset\"]))&&m(a,[\"endOffset\"],n),null!=(n=g(r,[\"startOffset\"]))&&m(a,[\"startOffset\"],n),a)),g(e,[\"thought\"])),n=(null!=r&&m(t,[\"thought\"],r),g(e,[\"inlineData\"])),a=(null!=n&&m(t,[\"inlineData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"data\"]);return null!=r&&m(t,[\"data\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(n)),g(e,[\"fileData\"])),r=(null!=a&&m(t,[\"fileData\"],function(e){var t={};if(void 0!==g(e,[\"displayName\"]))throw new Error(\"displayName parameter is not supported in Gemini API.\");var r=g(e,[\"fileUri\"]);return null!=r&&m(t,[\"fileUri\"],r),null!=(r=g(e,[\"mimeType\"]))&&m(t,[\"mimeType\"],r),t}(a)),g(e,[\"thoughtSignature\"])),r=(null!=r&&m(t,[\"thoughtSignature\"],r),g(e,[\"codeExecutionResult\"])),r=(null!=r&&m(t,[\"codeExecutionResult\"],r),g(e,[\"executableCode\"])),r=(null!=r&&m(t,[\"executableCode\"],r),g(e,[\"functionCall\"])),r=(null!=r&&m(t,[\"functionCall\"],r),g(e,[\"functionResponse\"])),r=(null!=r&&m(t,[\"functionResponse\"],r),g(e,[\"text\"]));return null!=r&&m(t,[\"text\"],r),t}function FO(e){var t,r,n={},e=g(e,[\"timeRangeFilter\"]);return null!=e&&m(n,[\"timeRangeFilter\"],(t={},null!=(r=g(e=e,[\"startTime\"]))&&m(t,[\"startTime\"],r),null!=(r=g(e,[\"endTime\"]))&&m(t,[\"endTime\"],r),t)),n}function UO(e){var t,r,n={},e=g(e,[\"dynamicRetrievalConfig\"]);return null!=e&&m(n,[\"dynamicRetrievalConfig\"],(t={},null!=(r=g(e=e,[\"mode\"]))&&m(t,[\"mode\"],r),null!=(r=g(e,[\"dynamicThreshold\"]))&&m(t,[\"dynamicThreshold\"],r),t)),n}function BO(e){var t={},r=g(e,[\"functionDeclarations\"]);if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"behavior\"]))&&m(t,[\"behavior\"],r),null!=(r=g(e,[\"description\"]))&&m(t,[\"description\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"parameters\"]))&&m(t,[\"parameters\"],r),null!=(r=g(e,[\"parametersJsonSchema\"]))&&m(t,[\"parametersJsonSchema\"],r),null!=(r=g(e,[\"response\"]))&&m(t,[\"response\"],r),null!=(r=g(e,[\"responseJsonSchema\"]))&&m(t,[\"responseJsonSchema\"],r),t;var t,r})),m(t,[\"functionDeclarations\"],e)}if(void 0!==g(e,[\"retrieval\"]))throw new Error(\"retrieval parameter is not supported in Gemini API.\");r=g(e,[\"googleSearch\"]),null!=r&&m(t,[\"googleSearch\"],FO(r)),r=g(e,[\"googleSearchRetrieval\"]);if(null!=r&&m(t,[\"googleSearchRetrieval\"],UO(r)),void 0!==g(e,[\"enterpriseWebSearch\"]))throw new Error(\"enterpriseWebSearch parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"googleMaps\"]))throw new Error(\"googleMaps parameter is not supported in Gemini API.\");null!=g(e,[\"urlContext\"])&&m(t,[\"urlContext\"],{});r=g(e,[\"codeExecution\"]),null!=r&&m(t,[\"codeExecution\"],r),r=g(e,[\"computerUse\"]);return null!=r&&m(t,[\"computerUse\"],r),t}function jO(){return{}}function HO(e){var t,r={},n=g(e,[\"automaticActivityDetection\"]),n=(null!=n&&m(r,[\"automaticActivityDetection\"],(t={},null!=(a=g(n=n,[\"disabled\"]))&&m(t,[\"disabled\"],a),null!=(a=g(n,[\"startOfSpeechSensitivity\"]))&&m(t,[\"startOfSpeechSensitivity\"],a),null!=(a=g(n,[\"endOfSpeechSensitivity\"]))&&m(t,[\"endOfSpeechSensitivity\"],a),null!=(a=g(n,[\"prefixPaddingMs\"]))&&m(t,[\"prefixPaddingMs\"],a),null!=(a=g(n,[\"silenceDurationMs\"]))&&m(t,[\"silenceDurationMs\"],a),t)),g(e,[\"activityHandling\"])),a=(null!=n&&m(r,[\"activityHandling\"],n),g(e,[\"turnCoverage\"]));return null!=a&&m(r,[\"turnCoverage\"],a),r}function GO(e){var t={},r=g(e,[\"triggerTokens\"]),r=(null!=r&&m(t,[\"triggerTokens\"],r),g(e,[\"slidingWindow\"]));return null!=r&&m(t,[\"slidingWindow\"],(e={},null!=(r=g(r=r,[\"targetTokens\"]))&&m(e,[\"targetTokens\"],r),e)),t}function VO(e,t){var r=g(e,[\"generationConfig\"]),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\"],r),g(e,[\"responseModalities\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"responseModalities\"],r),g(e,[\"temperature\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"temperature\"],r),g(e,[\"topP\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topP\"],r),g(e,[\"topK\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"topK\"],r),g(e,[\"maxOutputTokens\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"maxOutputTokens\"],r),g(e,[\"mediaResolution\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"mediaResolution\"],r),g(e,[\"seed\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"seed\"],r),g(e,[\"speechConfig\"])),r=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"speechConfig\"],(r=rE(r),a={},null!=(n=g(r,[\"voiceConfig\"]))&&m(a,[\"voiceConfig\"],DO(n)),null!=(n=g(r,[\"multiSpeakerVoiceConfig\"]))&&m(a,[\"multiSpeakerVoiceConfig\"],xO(n)),null!=(n=g(r,[\"languageCode\"]))&&m(a,[\"languageCode\"],n),a)),g(e,[\"enableAffectiveDialog\"])),n=(void 0!==t&&null!=r&&m(t,[\"setup\",\"generationConfig\",\"enableAffectiveDialog\"],r),g(e,[\"systemInstruction\"])),a=(void 0!==t&&null!=n&&m(t,[\"setup\",\"systemInstruction\"],function(e){var t={},r=g(e,[\"parts\"]);if(null!=r){let e=r;m(t,[\"parts\"],e=Array.isArray(e)?e.map(e=>LO(e)):e)}return null!=(r=g(e,[\"role\"]))&&m(t,[\"role\"],r),t}(Jb(n))),g(e,[\"tools\"]));if(void 0!==t&&null!=a){let e=aE(a);m(t,[\"setup\",\"tools\"],e=Array.isArray(e)?e.map(e=>BO(nE(e))):e)}r=g(e,[\"sessionResumption\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"sessionResumption\"],function(e){var t={},r=g(e,[\"handle\"]);if(null!=r&&m(t,[\"handle\"],r),void 0!==g(e,[\"transparent\"]))throw new Error(\"transparent parameter is not supported in Gemini API.\");return t}(r)),r=g(e,[\"inputAudioTranscription\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"inputAudioTranscription\"],jO()),r=g(e,[\"outputAudioTranscription\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"outputAudioTranscription\"],jO()),r=g(e,[\"realtimeInputConfig\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"realtimeInputConfig\"],HO(r)),r=g(e,[\"contextWindowCompression\"]),void 0!==t&&null!=r&&m(t,[\"setup\",\"contextWindowCompression\"],GO(r)),r=g(e,[\"proactivity\"]);return void 0!==t&&null!=r&&m(t,[\"setup\",\"proactivity\"],(e={},null!=(t=g(t=r,[\"proactiveAudio\"]))&&m(e,[\"proactiveAudio\"],t),e)),{}}function qO(e,t,r){var n,a=g(t,[\"expireTime\"]),a=(void 0!==r&&null!=a&&m(r,[\"expireTime\"],a),g(t,[\"newSessionExpireTime\"])),a=(void 0!==r&&null!=a&&m(r,[\"newSessionExpireTime\"],a),g(t,[\"uses\"])),a=(void 0!==r&&null!=a&&m(r,[\"uses\"],a),g(t,[\"liveConnectConstraints\"])),i=(void 0!==r&&null!=a&&m(r,[\"bidiGenerateContentSetup\"],(e=e,n={},null!=(i=g(a=a,[\"model\"]))&&m(n,[\"setup\",\"model\"],_(e,i)),null!=(e=g(a,[\"config\"]))&&m(n,[\"config\"],VO(e,n)),n)),g(t,[\"lockAdditionalFields\"]));return void 0!==r&&null!=i&&m(r,[\"fieldMask\"],i),{}}function zO(t,r){let e=null;var n=t.bidiGenerateContentSetup,a=(\"object\"==typeof n&&null!==n&&\"setup\"in n?\"object\"==typeof(a=n.setup)&&null!==a?(t.bidiGenerateContentSetup=a,e=a):delete t.bidiGenerateContentSetup:void 0!==n&&delete t.bidiGenerateContentSetup,t.fieldMask);if(e){n=function(e){var t,r=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(\"object\"==typeof(t=e[n])&&null!=t&&0<Object.keys(t).length?(t=Object.keys(t).map(e=>n+\".\"+e),r.push(...t)):r.push(n));return r.join(\",\")}(e);if(Array.isArray(null==r?void 0:r.lockAdditionalFields)&&0===(null==r?void 0:r.lockAdditionalFields.length))n?t.fieldMask=n:delete t.fieldMask;else if(null!=r&&r.lockAdditionalFields&&0<r.lockAdditionalFields.length&&null!==a&&Array.isArray(a)&&0<a.length){const i=[\"temperature\",\"topK\",\"topP\",\"maxOutputTokens\",\"responseModalities\",\"seed\",\"speechConfig\"];let e=[];0<a.length&&(e=a.map(e=>i.includes(e)?\"generationConfig.\"+e:e));r=[];n&&r.push(n),0<e.length&&r.push(...e),0<r.length?t.fieldMask=r.join(\",\"):delete t.fieldMask}else delete t.fieldMask}else null!==a&&Array.isArray(a)&&0<a.length?t.fieldMask=a.join(\",\"):delete t.fieldMask;return t}class WO extends hb{constructor(e){super(),this.apiClient=e}async create(e){var t,r,n,a=\"\",i={};if(this.apiClient.isVertexAI())throw new Error(\"The client.tokens.create method is only supported by the Gemini Developer API.\");return t=this.apiClient,n={},null!=(r=g(r=e,[\"config\"]))&&m(n,[\"config\"],qO(t,r,n)),a=c(\"auth_tokens\",(t=n)._url),i=t._query,delete t.config,delete t._url,delete t._query,r=zO(t,e.config),this.apiClient.request({path:a,queryParams:i,body:JSON.stringify(r),httpMethod:\"POST\",httpOptions:null==(n=e.config)?void 0:n.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(e=>e.json()).then(e=>{var t;return t={},null!=(e=g(e=e,[\"name\"]))&&m(t,[\"name\"],e),t})}}function $O(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),r=g(e,[\"filter\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"filter\"],r),{})),n}function KO(t){var r={};if(void 0!==g(t,[\"gcsUri\"]))throw new Error(\"gcsUri parameter is not supported in Gemini API.\");if(void 0!==g(t,[\"vertexDatasetResource\"]))throw new Error(\"vertexDatasetResource parameter is not supported in Gemini API.\");t=g(t,[\"examples\"]);if(null!=t){let e=t;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"textInput\"]))&&m(t,[\"textInput\"],r),null!=(r=g(e,[\"output\"]))&&m(t,[\"output\"],r),t;var t,r})),m(r,[\"examples\",\"examples\"],e)}return r}function YO(e){var t={},r=g(e,[\"baseModel\"]),r=(null!=r&&m(t,[\"baseModel\"],r),g(e,[\"trainingDataset\"])),r=(null!=r&&m(t,[\"tuningTask\",\"trainingData\"],KO(r)),g(e,[\"config\"]));return null!=r&&m(t,[\"config\"],function(e,t){var r={};if(void 0!==g(e,[\"validationDataset\"]))throw new Error(\"validationDataset parameter is not supported in Gemini API.\");var n=g(e,[\"tunedModelDisplayName\"]);if(void 0!==t&&null!=n&&m(t,[\"displayName\"],n),void 0!==g(e,[\"description\"]))throw new Error(\"description parameter is not supported in Gemini API.\");if(n=g(e,[\"epochCount\"]),void 0!==t&&null!=n&&m(t,[\"tuningTask\",\"hyperparameters\",\"epochCount\"],n),null!=(n=g(e,[\"learningRateMultiplier\"]))&&m(r,[\"tuningTask\",\"hyperparameters\",\"learningRateMultiplier\"],n),void 0!==g(e,[\"exportLastCheckpointOnly\"]))throw new Error(\"exportLastCheckpointOnly parameter is not supported in Gemini API.\");if(void 0!==g(e,[\"adapterSize\"]))throw new Error(\"adapterSize parameter is not supported in Gemini API.\");return n=g(e,[\"batchSize\"]),void 0!==t&&null!=n&&m(t,[\"tuningTask\",\"hyperparameters\",\"batchSize\"],n),n=g(e,[\"learningRate\"]),void 0!==t&&null!=n&&m(t,[\"tuningTask\",\"hyperparameters\",\"learningRate\"],n),r}(r,t)),t}function JO(e){var t,r,n={},e=g(e,[\"config\"]);return null!=e&&m(n,[\"config\"],(t=n,r=g(e=e,[\"pageSize\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageSize\"],r),r=g(e,[\"pageToken\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"pageToken\"],r),r=g(e,[\"filter\"]),void 0!==t&&null!=r&&m(t,[\"_query\",\"filter\"],r),{})),n}function QO(e,t){var r={},n=g(e,[\"validationDataset\"]),n=(void 0!==t&&null!=n&&m(t,[\"supervisedTuningSpec\"],(a=r,o={},null!=(i=g(n=n,[\"gcsUri\"]))&&m(o,[\"validationDatasetUri\"],i),i=g(n,[\"vertexDatasetResource\"]),void 0!==a&&null!=i&&m(a,[\"supervisedTuningSpec\",\"trainingDatasetUri\"],i),o)),g(e,[\"tunedModelDisplayName\"])),a=(void 0!==t&&null!=n&&m(t,[\"tunedModelDisplayName\"],n),g(e,[\"description\"])),i=(void 0!==t&&null!=a&&m(t,[\"description\"],a),g(e,[\"epochCount\"])),o=(void 0!==t&&null!=i&&m(t,[\"supervisedTuningSpec\",\"hyperParameters\",\"epochCount\"],i),g(e,[\"learningRateMultiplier\"])),n=(void 0!==t&&null!=o&&m(t,[\"supervisedTuningSpec\",\"hyperParameters\",\"learningRateMultiplier\"],o),g(e,[\"exportLastCheckpointOnly\"])),n=(void 0!==t&&null!=n&&m(t,[\"supervisedTuningSpec\",\"exportLastCheckpointOnly\"],n),g(e,[\"adapterSize\"]));if(void 0!==t&&null!=n&&m(t,[\"supervisedTuningSpec\",\"hyperParameters\",\"adapterSize\"],n),void 0!==g(e,[\"batchSize\"]))throw new Error(\"batchSize parameter is not supported in Vertex AI.\");if(void 0!==g(e,[\"learningRate\"]))throw new Error(\"learningRate parameter is not supported in Vertex AI.\");return r}function ZO(e){var t={},r=g(e,[\"baseModel\"]),r=(null!=r&&m(t,[\"baseModel\"],r),g(e,[\"trainingDataset\"])),r=(null!=r&&m(t,[\"supervisedTuningSpec\",\"trainingDatasetUri\"],function(e,t){var r=g(e,[\"gcsUri\"]),r=(void 0!==t&&null!=r&&m(t,[\"supervisedTuningSpec\",\"trainingDatasetUri\"],r),g(e,[\"vertexDatasetResource\"]));if(void 0!==t&&null!=r&&m(t,[\"supervisedTuningSpec\",\"trainingDatasetUri\"],r),void 0!==g(e,[\"examples\"]))throw new Error(\"examples parameter is not supported in Vertex AI.\");return{}}(r,t)),g(e,[\"config\"]));return null!=r&&m(t,[\"config\"],QO(r,t)),t}function XO(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"name\"])),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"state\"])),r=(null!=r&&m(t,[\"state\"],oE(r)),g(e,[\"createTime\"])),r=(null!=r&&m(t,[\"createTime\"],r),g(e,[\"tuningTask\",\"startTime\"])),r=(null!=r&&m(t,[\"startTime\"],r),g(e,[\"tuningTask\",\"completeTime\"])),r=(null!=r&&m(t,[\"endTime\"],r),g(e,[\"updateTime\"])),r=(null!=r&&m(t,[\"updateTime\"],r),g(e,[\"description\"])),r=(null!=r&&m(t,[\"description\"],r),g(e,[\"baseModel\"])),r=(null!=r&&m(t,[\"baseModel\"],r),g(e,[\"_self\"])),r=(null!=r&&m(t,[\"tunedModel\"],(a={},null!=(n=g(r=r,[\"name\"]))&&m(a,[\"model\"],n),null!=(n=g(r,[\"name\"]))&&m(a,[\"endpoint\"],n),a)),g(e,[\"distillationSpec\"])),n=(null!=r&&m(t,[\"distillationSpec\"],r),g(e,[\"experiment\"])),a=(null!=n&&m(t,[\"experiment\"],n),g(e,[\"labels\"])),r=(null!=a&&m(t,[\"labels\"],a),g(e,[\"pipelineJob\"])),r=(null!=r&&m(t,[\"pipelineJob\"],r),g(e,[\"satisfiesPzi\"])),r=(null!=r&&m(t,[\"satisfiesPzi\"],r),g(e,[\"satisfiesPzs\"])),r=(null!=r&&m(t,[\"satisfiesPzs\"],r),g(e,[\"serviceAccount\"])),r=(null!=r&&m(t,[\"serviceAccount\"],r),g(e,[\"tunedModelDisplayName\"]));return null!=r&&m(t,[\"tunedModelDisplayName\"],r),t}function e1(e){var t={},r=g(e,[\"model\"]),r=(null!=r&&m(t,[\"model\"],r),g(e,[\"endpoint\"])),r=(null!=r&&m(t,[\"endpoint\"],r),g(e,[\"checkpoints\"]));if(null!=r){let e=r;Array.isArray(e)&&(e=e.map(e=>{return t={},null!=(r=g(e=e,[\"checkpointId\"]))&&m(t,[\"checkpointId\"],r),null!=(r=g(e,[\"epoch\"]))&&m(t,[\"epoch\"],r),null!=(r=g(e,[\"step\"]))&&m(t,[\"step\"],r),null!=(r=g(e,[\"endpoint\"]))&&m(t,[\"endpoint\"],r),t;var t,r})),m(t,[\"checkpoints\"],e)}return t}function t1(e){var t={},r=g(e,[\"sdkHttpResponse\"]),r=(null!=r&&m(t,[\"sdkHttpResponse\"],r),g(e,[\"name\"])),r=(null!=r&&m(t,[\"name\"],r),g(e,[\"state\"])),r=(null!=r&&m(t,[\"state\"],oE(r)),g(e,[\"createTime\"])),r=(null!=r&&m(t,[\"createTime\"],r),g(e,[\"startTime\"])),r=(null!=r&&m(t,[\"startTime\"],r),g(e,[\"endTime\"])),r=(null!=r&&m(t,[\"endTime\"],r),g(e,[\"updateTime\"])),r=(null!=r&&m(t,[\"updateTime\"],r),g(e,[\"error\"])),r=(null!=r&&m(t,[\"error\"],r),g(e,[\"description\"])),r=(null!=r&&m(t,[\"description\"],r),g(e,[\"baseModel\"])),r=(null!=r&&m(t,[\"baseModel\"],r),g(e,[\"tunedModel\"])),r=(null!=r&&m(t,[\"tunedModel\"],e1(r)),g(e,[\"supervisedTuningSpec\"])),r=(null!=r&&m(t,[\"supervisedTuningSpec\"],r),g(e,[\"tuningDataStats\"])),r=(null!=r&&m(t,[\"tuningDataStats\"],r),g(e,[\"encryptionSpec\"])),r=(null!=r&&m(t,[\"encryptionSpec\"],r),g(e,[\"partnerModelTuningSpec\"])),r=(null!=r&&m(t,[\"partnerModelTuningSpec\"],r),g(e,[\"distillationSpec\"])),r=(null!=r&&m(t,[\"distillationSpec\"],r),g(e,[\"experiment\"])),r=(null!=r&&m(t,[\"experiment\"],r),g(e,[\"labels\"])),r=(null!=r&&m(t,[\"labels\"],r),g(e,[\"pipelineJob\"])),r=(null!=r&&m(t,[\"pipelineJob\"],r),g(e,[\"satisfiesPzi\"])),r=(null!=r&&m(t,[\"satisfiesPzi\"],r),g(e,[\"satisfiesPzs\"])),r=(null!=r&&m(t,[\"satisfiesPzs\"],r),g(e,[\"serviceAccount\"])),r=(null!=r&&m(t,[\"serviceAccount\"],r),g(e,[\"tunedModelDisplayName\"]));return null!=r&&m(t,[\"tunedModelDisplayName\"],r),t}class r1 extends hb{constructor(e){super(),this.apiClient=e,this.get=async e=>this.getInternal(e),this.list=async(e={})=>new UE(lb.PAGED_ITEM_TUNING_JOBS,e=>this.listInternal(e),await this.listInternal(e),e),this.tune=async t=>{if(this.apiClient.isVertexAI())return this.tuneInternal(t);{t=await this.tuneMldevInternal(t);let e=\"\";return void 0!==t.metadata&&void 0!==t.metadata.tunedModel?e=t.metadata.tunedModel:void 0!==t.name&&t.name.includes(\"/operations/\")&&(e=t.name.split(\"/operations/\")[0]),{name:e,state:Uv.JOB_STATE_QUEUED}}}}async getInternal(e){var t,r,n,a;let i,o=\"\",s={};return this.apiClient.isVertexAI()?(n={},null!=(a=g(r=e,[\"name\"]))&&m(n,[\"_url\",\"name\"],a),null!=(a=g(r,[\"config\"]))&&m(n,[\"config\"],a),r=n,o=c(\"{name}\",r._url),s=r._query,delete r.config,delete r._url,delete r._query,(i=this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(r),httpMethod:\"GET\",httpOptions:null==(a=e.config)?void 0:a.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{return t1(e)})):(r={},null!=(n=g(a=e,[\"name\"]))&&m(r,[\"_url\",\"name\"],n),null!=(n=g(a,[\"config\"]))&&m(r,[\"config\"],n),t=r,o=c(\"{name}\",t._url),s=t._query,delete t.config,delete t._url,delete t._query,(i=this.apiClient.request({path:o,queryParams:s,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{return XO(e)}))}async listInternal(e){var t;let r,n=\"\",a={};return this.apiClient.isVertexAI()?(t=JO(e),n=c(\"tuningJobs\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"tuningJobs\"]))){let e=r;m(t,[\"tuningJobs\"],e=Array.isArray(e)?e.map(e=>t1(e)):e)}return t}(e),t=new Rb;return Object.assign(t,e),t})):(t=$O(e),n=c(\"tunedModels\",t._url),a=t._query,delete t.config,delete t._url,delete t._query,(r=this.apiClient.request({path:n,queryParams:a,body:JSON.stringify(t),httpMethod:\"GET\",httpOptions:null==(t=e.config)?void 0:t.httpOptions,abortSignal:null==(t=e.config)?void 0:t.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e}))).then(e=>{var e=function(e){var t={},r=g(e,[\"sdkHttpResponse\"]);if(null!=r&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"nextPageToken\"]))&&m(t,[\"nextPageToken\"],r),null!=(r=g(e,[\"tunedModels\"]))){let e=r;m(t,[\"tuningJobs\"],e=Array.isArray(e)?e.map(e=>XO(e)):e)}return t}(e),t=new Rb;return Object.assign(t,e),t}))}async tuneInternal(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())return r=c(\"tuningJobs\",(t=ZO(e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{return t1(e)});throw new Error(\"This method is only supported by the Vertex AI.\")}async tuneMldevInternal(e){var t,r=\"\",n={};if(this.apiClient.isVertexAI())throw new Error(\"This method is only supported by the Gemini Developer API.\");return r=c(\"tunedModels\",(t=YO(e))._url),n=t._query,delete t.config,delete t._url,delete t._query,this.apiClient.request({path:r,queryParams:n,body:JSON.stringify(t),httpMethod:\"POST\",httpOptions:null==(r=e.config)?void 0:r.httpOptions,abortSignal:null==(n=e.config)?void 0:n.abortSignal}).then(t=>t.json().then(e=>{return e.sdkHttpResponse={headers:t.headers},e})).then(e=>{var t,r;return t={},null!=(r=g(e=e,[\"sdkHttpResponse\"]))&&m(t,[\"sdkHttpResponse\"],r),null!=(r=g(e,[\"name\"]))&&m(t,[\"name\"],r),null!=(r=g(e,[\"metadata\"]))&&m(t,[\"metadata\"],r),null!=(r=g(e,[\"done\"]))&&m(t,[\"done\"],r),null!=(r=g(e,[\"error\"]))&&m(t,[\"error\"],r),t})}}class n1{async download(e,t){throw new Error(\"Download to file is not supported in the browser, please use a browser compliant download like an <a> tag.\")}}const a1=\"x-goog-upload-status\";async function i1(r,n,a){var i,o,e,s;let l=0,c=new Tb(new Response),u=\"upload\";for(s=r.size;l<s;){var d=Math.min(8388608,s-l),p=r.slice(l,l+d);l+d>=s&&(u+=\", finalize\");let e=0,t=1e3;for(;e<3&&(null==(i=null===(c=await a.request({path:\"\",body:p,httpMethod:\"POST\",httpOptions:{apiVersion:\"\",baseUrl:n,headers:{\"X-Goog-Upload-Command\":u,\"X-Goog-Upload-Offset\":String(l),\"Content-Length\":String(d)}}}))||void 0===c?void 0:c.headers)||!i[a1]);)e++,await function(t){return new Promise(e=>setTimeout(e,t))}(t),t*=2;if(l+=d,\"active\"!==(null==(o=null===c||void 0===c?void 0:c.headers)?void 0:o[a1]))break;if(s<=l)throw new Error(\"All content has been uploaded, but the upload status is not finalized.\")}var t=await(null===c||void 0===c?void 0:c.json());if(\"final\"!==(null==(e=null===c||void 0===c?void 0:c.headers)?void 0:e[a1]))throw new Error(\"Failed to upload file: Upload status is not finalized.\");return t.file}class o1{async upload(e,t,r){if(\"string\"==typeof e)throw new Error(\"File path is not supported in browser uploader.\");return i1(e,t,r)}async stat(e){if(\"string\"==typeof e)throw new Error(\"File path is not supported in browser uploader.\");return{size:e.size,type:e.type}}}class s1{create(e,t,r){return new l1(e,t,r)}}class l1{constructor(e,t,r){this.url=e,this.headers=t,this.callbacks=r}connect(){this.ws=new WebSocket(this.url),this.ws.onopen=this.callbacks.onopen,this.ws.onerror=this.callbacks.onerror,this.ws.onclose=this.callbacks.onclose,this.ws.onmessage=this.callbacks.onmessage}send(e){if(void 0===this.ws)throw new Error(\"WebSocket is not connected\");this.ws.send(e)}close(){if(void 0===this.ws)throw new Error(\"WebSocket is not connected\");this.ws.close()}}const c1=\"x-goog-api-key\";class u1{constructor(e){this.apiKey=e}async addAuthHeaders(e){if(null===e.get(c1)){if(this.apiKey.startsWith(\"auth_tokens/\"))throw new Error(\"Ephemeral tokens are only supported by the live API.\");if(!this.apiKey)throw new Error(\"API key is missing. Please provide a valid API key.\");e.append(c1,this.apiKey)}}}var d1,p1,f1=r(Object.freeze({__proto__:null,get ActivityHandling(){return nb},get AdapterSize(){return Bv},ApiError:yS,get ApiSpec(){return kv},get AuthType(){return wv},Batches:BE,get Behavior(){return Hv},get BlockedReason(){return Dv},Caches:cS,Chat:_S,Chats:gS,ComputeTokensResponse:kb,ControlReferenceImage:class{toReferenceImageAPI(){return{referenceType:\"REFERENCE_TYPE_CONTROL\",referenceImage:this.referenceImage,referenceId:this.referenceId,controlImageConfig:this.config}}},get ControlReferenceType(){return Kv},CountTokensResponse:wb,CreateFileResponse:Db,DeleteCachedContentResponse:Nb,DeleteFileResponse:xb,DeleteModelResponse:Cb,get DynamicRetrievalConfigMode(){return Gv},EditImageResponse:Sb,get EditMode(){return Jv},EmbedContentResponse:bb,get EndSensitivity(){return rb},get Environment(){return Iv},get FeatureSelectionPreference(){return jv},get FileSource(){return Xv},get FileState(){return Zv},Files:ES,get FinishReason(){return Nv},get FunctionCallingConfigMode(){return Vv},FunctionResponse:class{},get FunctionResponseScheduling(){return ib},GenerateContentResponse:vb,GenerateContentResponsePromptFeedback:class{},GenerateContentResponseUsageMetadata:class{},GenerateImagesResponse:Eb,GenerateVideosOperation:Ub,GenerateVideosResponse:Ib,GoogleGenAI:class{constructor(e){if(null==e.apiKey)throw new Error(\"An API Key must be set when running in a browser\");if(e.project||e.location)throw new Error(\"Vertex AI project based authentication is not supported on browser runtimes. Please do not provide a project or location.\");this.vertexai=null!=(t=e.vertexai)&&t,this.apiKey=e.apiKey;var t=fb(e.httpOptions,e.vertexai,void 0,void 0),t=(t&&(e.httpOptions?e.httpOptions.baseUrl=t:e.httpOptions={baseUrl:t}),this.apiVersion=e.apiVersion,new u1(this.apiKey));this.apiClient=new yO({auth:t,apiVersion:this.apiVersion,apiKey:this.apiKey,vertexai:this.vertexai,httpOptions:e.httpOptions,userAgentExtra:\"gl-node/web\",uploader:new o1,downloader:new n1}),this.models=new MO(this.apiClient),this.live=new CO(this.apiClient,t,new s1),this.batches=new BE(this.apiClient),this.chats=new gS(this.models,this.apiClient),this.caches=new cS(this.apiClient),this.files=new ES(this.apiClient),this.operations=new PO(this.apiClient),this.authTokens=new WO(this.apiClient),this.tunings=new r1(this.apiClient)}},get HarmBlockMethod(){return Av},get HarmBlockThreshold(){return Ov},get HarmCategory(){return Sv},get HarmProbability(){return Mv},get HarmSeverity(){return Pv},HttpResponse:Tb,get ImagePromptLanguage(){return Wv},InlinedResponse:class{},get JobState(){return Uv},get Language(){return bv},ListBatchJobsResponse:Lb,ListCachedContentsResponse:Mb,ListFilesResponse:Pb,ListModelsResponse:Ob,ListTuningJobsResponse:Rb,Live:CO,LiveClientToolResponse:class{},get LiveMusicPlaybackControl(){return sb},LiveMusicServerMessage:Bb,LiveSendToolResponseParameters:class{constructor(){this.functionResponses=[]}},LiveServerMessage:Fb,MaskReferenceImage:class{toReferenceImageAPI(){return{referenceType:\"REFERENCE_TYPE_MASK\",referenceImage:this.referenceImage,referenceId:this.referenceId,maskImageConfig:this.config}}},get MaskReferenceMode(){return $v},get MediaModality(){return eb},get MediaResolution(){return Fv},get Modality(){return Lv},get Mode(){return Cv},Models:MO,Operations:PO,get Outcome(){return vv},get PagedItem(){return lb},Pager:UE,get PersonGeneration(){return zv},RawReferenceImage:class{toReferenceImageAPI(){return{referenceType:\"REFERENCE_TYPE_RAW\",referenceImage:this.referenceImage,referenceId:this.referenceId}}},ReplayResponse:class{},get SafetyFilterLevel(){return qv},get Scale(){return ob},Session:kO,get StartSensitivity(){return tb},StyleReferenceImage:class{toReferenceImageAPI(){return{referenceType:\"REFERENCE_TYPE_STYLE\",referenceImage:this.referenceImage,referenceId:this.referenceId,styleImageConfig:this.config}}},SubjectReferenceImage:class{toReferenceImageAPI(){return{referenceType:\"REFERENCE_TYPE_SUBJECT\",referenceImage:this.referenceImage,referenceId:this.referenceId,subjectImageConfig:this.config}}},get SubjectReferenceType(){return Yv},Tokens:WO,get TrafficType(){return xv},get TurnCoverage(){return ab},get Type(){return Ev},UpscaleImageResponse:Ab,get UrlRetrievalStatus(){return Rv},get VideoCompressionQuality(){return Qv},createModelContent:function(e){return{role:\"model\",parts:yb(e)}},createPartFromBase64:function(e,t){return{inlineData:{data:e,mimeType:t}}},createPartFromCodeExecutionResult:function(e,t){return{codeExecutionResult:{outcome:e,output:t}}},createPartFromExecutableCode:function(e,t){return{executableCode:{code:e,language:t}}},createPartFromFunctionCall:function(e,t){return{functionCall:{name:e,args:t}}},createPartFromFunctionResponse:function(e,t,r){return{functionResponse:{id:e,name:t,response:r}}},createPartFromText:gb,createPartFromUri:function(e,t){return{fileData:{fileUri:e,mimeType:t}}},createUserContent:function(e){return{role:\"user\",parts:yb(e)}},mcpToTool:function(...e){if(vO=!0,0===e.length)throw new Error(\"No MCP clients provided\");var t,r=e[e.length-1];return null!==(t=r)&&\"object\"==typeof t&&\"listTools\"in t&&\"function\"==typeof t.listTools?SO.create(e,{}):SO.create(e.slice(0,e.length-1),r)},setDefaultBaseUrls:function(e){db=e.geminiUrl,pb=e.vertexUrl}})),h1={},m1={};function g1(){return d1||(d1=1,Object.defineProperty(m1,\"__esModule\",{value:!0}),m1.runQueryForMcp=async function(e,t){e=await e.query(t,\"PerfettoMcp\");return r(e)},m1.resultToJson=r),m1;async function r(e){for(var t=e.columns(),r=[],n=e.iter({});n.valid();n.next()){if(5e3<r.length)throw new Error(\"Query returned too many results, max 5000 rows. Results should be aggregates rather than raw data.\");var a={};for(const i of t){let e=n.get(i);\"bigint\"==typeof e&&(e=Number(e)),a[i]=e}r.push(a)}return JSON.stringify(r)}}function _1(){if(!p1){p1=1,Object.defineProperty(h1,\"__esModule\",{value:!0}),h1.registerTraceTools=function(e,t){e.tool(\"perfetto-execute-query\",`\n       Tool to query the perfetto trace file loaded in Perfetto UI currently.\n\n       The query is SQL to execute against Perfetto's trace_processor.\n\n       If you are not sure about a query, then it's useful to show the SQL to the user and ask them to confirm.\n\n       The stdlib is documented at https://perfetto.dev/docs/analysis/stdlib-docs\n       It is worth fetching this fully in order to use best practices in queries.\n\n       It's generally faster to use the existing stdlib tables, and aggregated results rather than\n       querying large result sets and processing after retrieved. So reuse standard views where possible\n       In addition, if querying some of the perfetto modules listed are resulting in error or empty results,\n       try using the prelude module listed at https://perfetto.dev/docs/analysis/stdlib-docs#package-prelude\n\n       The Perfetto SQL syntax is described here https://perfetto.dev/docs/analysis/perfetto-sql-syntax\n\n       Jank is a common topic and described here https://perfetto.dev/docs/data-sources/frametimeline\n       Using the information in expected_frame_timeline_slice and actual_frame_timeline_slice as the primary\n       source for jank is preferred.\n\n       Power is a less common topic and is described here https://perfetto.dev/docs/data-sources/battery-counters\n\n       CPU is described a bit here https://perfetto.dev/docs/data-sources/cpu-scheduling\n\n       Memory is described here https://perfetto.dev/docs/data-sources/memory-counters\n\n       Android logs are described here https://perfetto.dev/docs/data-sources/android-log\n\n       The perfetto stdlib can be included by executing\n        \\`INCLUDE PERFETTO MODULE\\` for \\`viz.*\\`, \\`slices.*\\`, \\`android.*\\`. More can be loaded dynamically if\n        needed. But loading extra must always be done in separate queries or it messes up the SQL results.\n        `,{query:r.z.string()},async({query:e})=>{return{content:[{type:\"text\",text:await(0,n.runQueryForMcp)(t,e)}]}}),e.tool(\"perfetto-list-android-processes\",`\n        Tool to list process details from the trace.\n\n        This lists all the processes in the trace from the \\`process\\` table.\n        `,{},async({})=>{return{content:[{type:\"text\",text:await(0,n.runQueryForMcp)(t,`select *\n      from process`)}]}}),e.tool(\"perfetto-list-interesting-tables\",`\n        Tool to list interesting tables and views.\n        \n        It's basically a query on [sqlite_schema], but excluding 'sqlite_' and '_' prefixed tables which tend to\n        be internal implementation details.\n        \n        This is relevant if queries aren't working, they may need to be loaded via the 'INCLUDE PERFETTO MODULE'\n        query.\n         \n        If tables you expect to be there based on public samples aren't, please mention it so that the user can\n        tweak the tool to automatically include them.\n        `,{},async({})=>{return{content:[{type:\"text\",text:await(0,n.runQueryForMcp)(t,`\n        SELECT \n            name, type\n        FROM \n            sqlite_schema\n        WHERE \n            type in ('table', 'view') \n            AND name NOT LIKE 'sqlite_%'\n            AND name NOT LIKE '_%' ESCAPE ''\n`)}]}}),e.tool(\"perfetto-list-macrobenchmark-slices\",`\n        Tool to list macrobenchmark slices.\n        \n        This is relevant because when a trace file includes a macrobenchmark run (a slice called 'measureBlock') \n        then the user is probably interested in the target app and the specific range of time for that 'measureBlock'.      \n\n        So a \\`measureBlock\\` in the app \\`com.google.android.horologist.mediasample.benchmark\\`, \n        would usually be testing against an app called \\`com.google.android.horologist.mediasample\\`.\n        But this is not always true, so ask the user if it's missing.\n        `,{},async({})=>{return{content:[{type:\"text\",text:await(0,n.runQueryForMcp)(t,`\n        SELECT\n          s.name AS slice_name,\n          s.ts,\n          s.dur,\n          t.name AS thread_name,\n          p.name AS process_name\n        FROM\n          slice s\n        JOIN\n          thread_track tt ON s.track_id = tt.id\n        JOIN\n          thread t ON tt.utid = t.utid\n        JOIN\n          process p ON t.upid = p.upid\n        WHERE\n          s.name = 'measureBlock'\n        ORDER BY\n          s.ts\n`)}]}}),e.tool(\"perfetto-list-table-structure\",`\n        Tool to list the structure of a table.\n        \n        It's basically a query of \\`pragma table_info('TABLE_NAME')\\`.   \n        `,{table:r.z.string()},async({table:e})=>{return{content:[{type:\"text\",text:await(0,n.runQueryForMcp)(t,`pragma table_info('${e}')`)}]}})};const r=Ne(),n=g1()}return h1}var y1,T1,v1,b1,E1={},S1={},A1={Aacute:\"Á\",aacute:\"á\",Abreve:\"Ă\",abreve:\"ă\",ac:\"∾\",acd:\"∿\",acE:\"∾̳\",Acirc:\"Â\",acirc:\"â\",acute:\"´\",Acy:\"А\",acy:\"а\",AElig:\"Æ\",aelig:\"æ\",af:\"⁡\",Afr:\"𝔄\",afr:\"𝔞\",Agrave:\"À\",agrave:\"à\",alefsym:\"ℵ\",aleph:\"ℵ\",Alpha:\"Α\",alpha:\"α\",Amacr:\"Ā\",amacr:\"ā\",amalg:\"⨿\",amp:\"&\",AMP:\"&\",andand:\"⩕\",And:\"⩓\",and:\"∧\",andd:\"⩜\",andslope:\"⩘\",andv:\"⩚\",ang:\"∠\",ange:\"⦤\",angle:\"∠\",angmsdaa:\"⦨\",angmsdab:\"⦩\",angmsdac:\"⦪\",angmsdad:\"⦫\",angmsdae:\"⦬\",angmsdaf:\"⦭\",angmsdag:\"⦮\",angmsdah:\"⦯\",angmsd:\"∡\",angrt:\"∟\",angrtvb:\"⊾\",angrtvbd:\"⦝\",angsph:\"∢\",angst:\"Å\",angzarr:\"⍼\",Aogon:\"Ą\",aogon:\"ą\",Aopf:\"𝔸\",aopf:\"𝕒\",apacir:\"⩯\",ap:\"≈\",apE:\"⩰\",ape:\"≊\",apid:\"≋\",apos:\"'\",ApplyFunction:\"⁡\",approx:\"≈\",approxeq:\"≊\",Aring:\"Å\",aring:\"å\",Ascr:\"𝒜\",ascr:\"𝒶\",Assign:\"≔\",ast:\"*\",asymp:\"≈\",asympeq:\"≍\",Atilde:\"Ã\",atilde:\"ã\",Auml:\"Ä\",auml:\"ä\",awconint:\"∳\",awint:\"⨑\",backcong:\"≌\",backepsilon:\"϶\",backprime:\"‵\",backsim:\"∽\",backsimeq:\"⋍\",Backslash:\"∖\",Barv:\"⫧\",barvee:\"⊽\",barwed:\"⌅\",Barwed:\"⌆\",barwedge:\"⌅\",bbrk:\"⎵\",bbrktbrk:\"⎶\",bcong:\"≌\",Bcy:\"Б\",bcy:\"б\",bdquo:\"„\",becaus:\"∵\",because:\"∵\",Because:\"∵\",bemptyv:\"⦰\",bepsi:\"϶\",bernou:\"ℬ\",Bernoullis:\"ℬ\",Beta:\"Β\",beta:\"β\",beth:\"ℶ\",between:\"≬\",Bfr:\"𝔅\",bfr:\"𝔟\",bigcap:\"⋂\",bigcirc:\"◯\",bigcup:\"⋃\",bigodot:\"⨀\",bigoplus:\"⨁\",bigotimes:\"⨂\",bigsqcup:\"⨆\",bigstar:\"★\",bigtriangledown:\"▽\",bigtriangleup:\"△\",biguplus:\"⨄\",bigvee:\"⋁\",bigwedge:\"⋀\",bkarow:\"⤍\",blacklozenge:\"⧫\",blacksquare:\"▪\",blacktriangle:\"▴\",blacktriangledown:\"▾\",blacktriangleleft:\"◂\",blacktriangleright:\"▸\",blank:\"␣\",blk12:\"▒\",blk14:\"░\",blk34:\"▓\",block:\"█\",bne:\"=⃥\",bnequiv:\"≡⃥\",bNot:\"⫭\",bnot:\"⌐\",Bopf:\"𝔹\",bopf:\"𝕓\",bot:\"⊥\",bottom:\"⊥\",bowtie:\"⋈\",boxbox:\"⧉\",boxdl:\"┐\",boxdL:\"╕\",boxDl:\"╖\",boxDL:\"╗\",boxdr:\"┌\",boxdR:\"╒\",boxDr:\"╓\",boxDR:\"╔\",boxh:\"─\",boxH:\"═\",boxhd:\"┬\",boxHd:\"╤\",boxhD:\"╥\",boxHD:\"╦\",boxhu:\"┴\",boxHu:\"╧\",boxhU:\"╨\",boxHU:\"╩\",boxminus:\"⊟\",boxplus:\"⊞\",boxtimes:\"⊠\",boxul:\"┘\",boxuL:\"╛\",boxUl:\"╜\",boxUL:\"╝\",boxur:\"└\",boxuR:\"╘\",boxUr:\"╙\",boxUR:\"╚\",boxv:\"│\",boxV:\"║\",boxvh:\"┼\",boxvH:\"╪\",boxVh:\"╫\",boxVH:\"╬\",boxvl:\"┤\",boxvL:\"╡\",boxVl:\"╢\",boxVL:\"╣\",boxvr:\"├\",boxvR:\"╞\",boxVr:\"╟\",boxVR:\"╠\",bprime:\"‵\",breve:\"˘\",Breve:\"˘\",brvbar:\"¦\",bscr:\"𝒷\",Bscr:\"ℬ\",bsemi:\"⁏\",bsim:\"∽\",bsime:\"⋍\",bsolb:\"⧅\",bsol:\"\\\\\",bsolhsub:\"⟈\",bull:\"•\",bullet:\"•\",bump:\"≎\",bumpE:\"⪮\",bumpe:\"≏\",Bumpeq:\"≎\",bumpeq:\"≏\",Cacute:\"Ć\",cacute:\"ć\",capand:\"⩄\",capbrcup:\"⩉\",capcap:\"⩋\",cap:\"∩\",Cap:\"⋒\",capcup:\"⩇\",capdot:\"⩀\",CapitalDifferentialD:\"ⅅ\",caps:\"∩︀\",caret:\"⁁\",caron:\"ˇ\",Cayleys:\"ℭ\",ccaps:\"⩍\",Ccaron:\"Č\",ccaron:\"č\",Ccedil:\"Ç\",ccedil:\"ç\",Ccirc:\"Ĉ\",ccirc:\"ĉ\",Cconint:\"∰\",ccups:\"⩌\",ccupssm:\"⩐\",Cdot:\"Ċ\",cdot:\"ċ\",cedil:\"¸\",Cedilla:\"¸\",cemptyv:\"⦲\",cent:\"¢\",centerdot:\"·\",CenterDot:\"·\",cfr:\"𝔠\",Cfr:\"ℭ\",CHcy:\"Ч\",chcy:\"ч\",check:\"✓\",checkmark:\"✓\",Chi:\"Χ\",chi:\"χ\",circ:\"ˆ\",circeq:\"≗\",circlearrowleft:\"↺\",circlearrowright:\"↻\",circledast:\"⊛\",circledcirc:\"⊚\",circleddash:\"⊝\",CircleDot:\"⊙\",circledR:\"®\",circledS:\"Ⓢ\",CircleMinus:\"⊖\",CirclePlus:\"⊕\",CircleTimes:\"⊗\",cir:\"○\",cirE:\"⧃\",cire:\"≗\",cirfnint:\"⨐\",cirmid:\"⫯\",cirscir:\"⧂\",ClockwiseContourIntegral:\"∲\",CloseCurlyDoubleQuote:\"”\",CloseCurlyQuote:\"’\",clubs:\"♣\",clubsuit:\"♣\",colon:\":\",Colon:\"∷\",Colone:\"⩴\",colone:\"≔\",coloneq:\"≔\",comma:\",\",commat:\"@\",comp:\"∁\",compfn:\"∘\",complement:\"∁\",complexes:\"ℂ\",cong:\"≅\",congdot:\"⩭\",Congruent:\"≡\",conint:\"∮\",Conint:\"∯\",ContourIntegral:\"∮\",copf:\"𝕔\",Copf:\"ℂ\",coprod:\"∐\",Coproduct:\"∐\",copy:\"©\",COPY:\"©\",copysr:\"℗\",CounterClockwiseContourIntegral:\"∳\",crarr:\"↵\",cross:\"✗\",Cross:\"⨯\",Cscr:\"𝒞\",cscr:\"𝒸\",csub:\"⫏\",csube:\"⫑\",csup:\"⫐\",csupe:\"⫒\",ctdot:\"⋯\",cudarrl:\"⤸\",cudarrr:\"⤵\",cuepr:\"⋞\",cuesc:\"⋟\",cularr:\"↶\",cularrp:\"⤽\",cupbrcap:\"⩈\",cupcap:\"⩆\",CupCap:\"≍\",cup:\"∪\",Cup:\"⋓\",cupcup:\"⩊\",cupdot:\"⊍\",cupor:\"⩅\",cups:\"∪︀\",curarr:\"↷\",curarrm:\"⤼\",curlyeqprec:\"⋞\",curlyeqsucc:\"⋟\",curlyvee:\"⋎\",curlywedge:\"⋏\",curren:\"¤\",curvearrowleft:\"↶\",curvearrowright:\"↷\",cuvee:\"⋎\",cuwed:\"⋏\",cwconint:\"∲\",cwint:\"∱\",cylcty:\"⌭\",dagger:\"†\",Dagger:\"‡\",daleth:\"ℸ\",darr:\"↓\",Darr:\"↡\",dArr:\"⇓\",dash:\"‐\",Dashv:\"⫤\",dashv:\"⊣\",dbkarow:\"⤏\",dblac:\"˝\",Dcaron:\"Ď\",dcaron:\"ď\",Dcy:\"Д\",dcy:\"д\",ddagger:\"‡\",ddarr:\"⇊\",DD:\"ⅅ\",dd:\"ⅆ\",DDotrahd:\"⤑\",ddotseq:\"⩷\",deg:\"°\",Del:\"∇\",Delta:\"Δ\",delta:\"δ\",demptyv:\"⦱\",dfisht:\"⥿\",Dfr:\"𝔇\",dfr:\"𝔡\",dHar:\"⥥\",dharl:\"⇃\",dharr:\"⇂\",DiacriticalAcute:\"´\",DiacriticalDot:\"˙\",DiacriticalDoubleAcute:\"˝\",DiacriticalGrave:\"`\",DiacriticalTilde:\"˜\",diam:\"⋄\",diamond:\"⋄\",Diamond:\"⋄\",diamondsuit:\"♦\",diams:\"♦\",die:\"¨\",DifferentialD:\"ⅆ\",digamma:\"ϝ\",disin:\"⋲\",div:\"÷\",divide:\"÷\",divideontimes:\"⋇\",divonx:\"⋇\",DJcy:\"Ђ\",djcy:\"ђ\",dlcorn:\"⌞\",dlcrop:\"⌍\",dollar:\"$\",Dopf:\"𝔻\",dopf:\"𝕕\",Dot:\"¨\",dot:\"˙\",DotDot:\"⃜\",doteq:\"≐\",doteqdot:\"≑\",DotEqual:\"≐\",dotminus:\"∸\",dotplus:\"∔\",dotsquare:\"⊡\",doublebarwedge:\"⌆\",DoubleContourIntegral:\"∯\",DoubleDot:\"¨\",DoubleDownArrow:\"⇓\",DoubleLeftArrow:\"⇐\",DoubleLeftRightArrow:\"⇔\",DoubleLeftTee:\"⫤\",DoubleLongLeftArrow:\"⟸\",DoubleLongLeftRightArrow:\"⟺\",DoubleLongRightArrow:\"⟹\",DoubleRightArrow:\"⇒\",DoubleRightTee:\"⊨\",DoubleUpArrow:\"⇑\",DoubleUpDownArrow:\"⇕\",DoubleVerticalBar:\"∥\",DownArrowBar:\"⤓\",downarrow:\"↓\",DownArrow:\"↓\",Downarrow:\"⇓\",DownArrowUpArrow:\"⇵\",DownBreve:\"̑\",downdownarrows:\"⇊\",downharpoonleft:\"⇃\",downharpoonright:\"⇂\",DownLeftRightVector:\"⥐\",DownLeftTeeVector:\"⥞\",DownLeftVectorBar:\"⥖\",DownLeftVector:\"↽\",DownRightTeeVector:\"⥟\",DownRightVectorBar:\"⥗\",DownRightVector:\"⇁\",DownTeeArrow:\"↧\",DownTee:\"⊤\",drbkarow:\"⤐\",drcorn:\"⌟\",drcrop:\"⌌\",Dscr:\"𝒟\",dscr:\"𝒹\",DScy:\"Ѕ\",dscy:\"ѕ\",dsol:\"⧶\",Dstrok:\"Đ\",dstrok:\"đ\",dtdot:\"⋱\",dtri:\"▿\",dtrif:\"▾\",duarr:\"⇵\",duhar:\"⥯\",dwangle:\"⦦\",DZcy:\"Џ\",dzcy:\"џ\",dzigrarr:\"⟿\",Eacute:\"É\",eacute:\"é\",easter:\"⩮\",Ecaron:\"Ě\",ecaron:\"ě\",Ecirc:\"Ê\",ecirc:\"ê\",ecir:\"≖\",ecolon:\"≕\",Ecy:\"Э\",ecy:\"э\",eDDot:\"⩷\",Edot:\"Ė\",edot:\"ė\",eDot:\"≑\",ee:\"ⅇ\",efDot:\"≒\",Efr:\"𝔈\",efr:\"𝔢\",eg:\"⪚\",Egrave:\"È\",egrave:\"è\",egs:\"⪖\",egsdot:\"⪘\",el:\"⪙\",Element:\"∈\",elinters:\"⏧\",ell:\"ℓ\",els:\"⪕\",elsdot:\"⪗\",Emacr:\"Ē\",emacr:\"ē\",empty:\"∅\",emptyset:\"∅\",EmptySmallSquare:\"◻\",emptyv:\"∅\",EmptyVerySmallSquare:\"▫\",emsp13:\" \",emsp14:\" \",emsp:\" \",ENG:\"Ŋ\",eng:\"ŋ\",ensp:\" \",Eogon:\"Ę\",eogon:\"ę\",Eopf:\"𝔼\",eopf:\"𝕖\",epar:\"⋕\",eparsl:\"⧣\",eplus:\"⩱\",epsi:\"ε\",Epsilon:\"Ε\",epsilon:\"ε\",epsiv:\"ϵ\",eqcirc:\"≖\",eqcolon:\"≕\",eqsim:\"≂\",eqslantgtr:\"⪖\",eqslantless:\"⪕\",Equal:\"⩵\",equals:\"=\",EqualTilde:\"≂\",equest:\"≟\",Equilibrium:\"⇌\",equiv:\"≡\",equivDD:\"⩸\",eqvparsl:\"⧥\",erarr:\"⥱\",erDot:\"≓\",escr:\"ℯ\",Escr:\"ℰ\",esdot:\"≐\",Esim:\"⩳\",esim:\"≂\",Eta:\"Η\",eta:\"η\",ETH:\"Ð\",eth:\"ð\",Euml:\"Ë\",euml:\"ë\",euro:\"€\",excl:\"!\",exist:\"∃\",Exists:\"∃\",expectation:\"ℰ\",exponentiale:\"ⅇ\",ExponentialE:\"ⅇ\",fallingdotseq:\"≒\",Fcy:\"Ф\",fcy:\"ф\",female:\"♀\",ffilig:\"ﬃ\",fflig:\"ﬀ\",ffllig:\"ﬄ\",Ffr:\"𝔉\",ffr:\"𝔣\",filig:\"ﬁ\",FilledSmallSquare:\"◼\",FilledVerySmallSquare:\"▪\",fjlig:\"fj\",flat:\"♭\",fllig:\"ﬂ\",fltns:\"▱\",fnof:\"ƒ\",Fopf:\"𝔽\",fopf:\"𝕗\",forall:\"∀\",ForAll:\"∀\",fork:\"⋔\",forkv:\"⫙\",Fouriertrf:\"ℱ\",fpartint:\"⨍\",frac12:\"½\",frac13:\"⅓\",frac14:\"¼\",frac15:\"⅕\",frac16:\"⅙\",frac18:\"⅛\",frac23:\"⅔\",frac25:\"⅖\",frac34:\"¾\",frac35:\"⅗\",frac38:\"⅜\",frac45:\"⅘\",frac56:\"⅚\",frac58:\"⅝\",frac78:\"⅞\",frasl:\"⁄\",frown:\"⌢\",fscr:\"𝒻\",Fscr:\"ℱ\",gacute:\"ǵ\",Gamma:\"Γ\",gamma:\"γ\",Gammad:\"Ϝ\",gammad:\"ϝ\",gap:\"⪆\",Gbreve:\"Ğ\",gbreve:\"ğ\",Gcedil:\"Ģ\",Gcirc:\"Ĝ\",gcirc:\"ĝ\",Gcy:\"Г\",gcy:\"г\",Gdot:\"Ġ\",gdot:\"ġ\",ge:\"≥\",gE:\"≧\",gEl:\"⪌\",gel:\"⋛\",geq:\"≥\",geqq:\"≧\",geqslant:\"⩾\",gescc:\"⪩\",ges:\"⩾\",gesdot:\"⪀\",gesdoto:\"⪂\",gesdotol:\"⪄\",gesl:\"⋛︀\",gesles:\"⪔\",Gfr:\"𝔊\",gfr:\"𝔤\",gg:\"≫\",Gg:\"⋙\",ggg:\"⋙\",gimel:\"ℷ\",GJcy:\"Ѓ\",gjcy:\"ѓ\",gla:\"⪥\",gl:\"≷\",glE:\"⪒\",glj:\"⪤\",gnap:\"⪊\",gnapprox:\"⪊\",gne:\"⪈\",gnE:\"≩\",gneq:\"⪈\",gneqq:\"≩\",gnsim:\"⋧\",Gopf:\"𝔾\",gopf:\"𝕘\",grave:\"`\",GreaterEqual:\"≥\",GreaterEqualLess:\"⋛\",GreaterFullEqual:\"≧\",GreaterGreater:\"⪢\",GreaterLess:\"≷\",GreaterSlantEqual:\"⩾\",GreaterTilde:\"≳\",Gscr:\"𝒢\",gscr:\"ℊ\",gsim:\"≳\",gsime:\"⪎\",gsiml:\"⪐\",gtcc:\"⪧\",gtcir:\"⩺\",gt:\">\",GT:\">\",Gt:\"≫\",gtdot:\"⋗\",gtlPar:\"⦕\",gtquest:\"⩼\",gtrapprox:\"⪆\",gtrarr:\"⥸\",gtrdot:\"⋗\",gtreqless:\"⋛\",gtreqqless:\"⪌\",gtrless:\"≷\",gtrsim:\"≳\",gvertneqq:\"≩︀\",gvnE:\"≩︀\",Hacek:\"ˇ\",hairsp:\" \",half:\"½\",hamilt:\"ℋ\",HARDcy:\"Ъ\",hardcy:\"ъ\",harrcir:\"⥈\",harr:\"↔\",hArr:\"⇔\",harrw:\"↭\",Hat:\"^\",hbar:\"ℏ\",Hcirc:\"Ĥ\",hcirc:\"ĥ\",hearts:\"♥\",heartsuit:\"♥\",hellip:\"…\",hercon:\"⊹\",hfr:\"𝔥\",Hfr:\"ℌ\",HilbertSpace:\"ℋ\",hksearow:\"⤥\",hkswarow:\"⤦\",hoarr:\"⇿\",homtht:\"∻\",hookleftarrow:\"↩\",hookrightarrow:\"↪\",hopf:\"𝕙\",Hopf:\"ℍ\",horbar:\"―\",HorizontalLine:\"─\",hscr:\"𝒽\",Hscr:\"ℋ\",hslash:\"ℏ\",Hstrok:\"Ħ\",hstrok:\"ħ\",HumpDownHump:\"≎\",HumpEqual:\"≏\",hybull:\"⁃\",hyphen:\"‐\",Iacute:\"Í\",iacute:\"í\",ic:\"⁣\",Icirc:\"Î\",icirc:\"î\",Icy:\"И\",icy:\"и\",Idot:\"İ\",IEcy:\"Е\",iecy:\"е\",iexcl:\"¡\",iff:\"⇔\",ifr:\"𝔦\",Ifr:\"ℑ\",Igrave:\"Ì\",igrave:\"ì\",ii:\"ⅈ\",iiiint:\"⨌\",iiint:\"∭\",iinfin:\"⧜\",iiota:\"℩\",IJlig:\"Ĳ\",ijlig:\"ĳ\",Imacr:\"Ī\",imacr:\"ī\",image:\"ℑ\",ImaginaryI:\"ⅈ\",imagline:\"ℐ\",imagpart:\"ℑ\",imath:\"ı\",Im:\"ℑ\",imof:\"⊷\",imped:\"Ƶ\",Implies:\"⇒\",incare:\"℅\",in:\"∈\",infin:\"∞\",infintie:\"⧝\",inodot:\"ı\",intcal:\"⊺\",int:\"∫\",Int:\"∬\",integers:\"ℤ\",Integral:\"∫\",intercal:\"⊺\",Intersection:\"⋂\",intlarhk:\"⨗\",intprod:\"⨼\",InvisibleComma:\"⁣\",InvisibleTimes:\"⁢\",IOcy:\"Ё\",iocy:\"ё\",Iogon:\"Į\",iogon:\"į\",Iopf:\"𝕀\",iopf:\"𝕚\",Iota:\"Ι\",iota:\"ι\",iprod:\"⨼\",iquest:\"¿\",iscr:\"𝒾\",Iscr:\"ℐ\",isin:\"∈\",isindot:\"⋵\",isinE:\"⋹\",isins:\"⋴\",isinsv:\"⋳\",isinv:\"∈\",it:\"⁢\",Itilde:\"Ĩ\",itilde:\"ĩ\",Iukcy:\"І\",iukcy:\"і\",Iuml:\"Ï\",iuml:\"ï\",Jcirc:\"Ĵ\",jcirc:\"ĵ\",Jcy:\"Й\",jcy:\"й\",Jfr:\"𝔍\",jfr:\"𝔧\",jmath:\"ȷ\",Jopf:\"𝕁\",jopf:\"𝕛\",Jscr:\"𝒥\",jscr:\"𝒿\",Jsercy:\"Ј\",jsercy:\"ј\",Jukcy:\"Є\",jukcy:\"є\",Kappa:\"Κ\",kappa:\"κ\",kappav:\"ϰ\",Kcedil:\"Ķ\",kcedil:\"ķ\",Kcy:\"К\",kcy:\"к\",Kfr:\"𝔎\",kfr:\"𝔨\",kgreen:\"ĸ\",KHcy:\"Х\",khcy:\"х\",KJcy:\"Ќ\",kjcy:\"ќ\",Kopf:\"𝕂\",kopf:\"𝕜\",Kscr:\"𝒦\",kscr:\"𝓀\",lAarr:\"⇚\",Lacute:\"Ĺ\",lacute:\"ĺ\",laemptyv:\"⦴\",lagran:\"ℒ\",Lambda:\"Λ\",lambda:\"λ\",lang:\"⟨\",Lang:\"⟪\",langd:\"⦑\",langle:\"⟨\",lap:\"⪅\",Laplacetrf:\"ℒ\",laquo:\"«\",larrb:\"⇤\",larrbfs:\"⤟\",larr:\"←\",Larr:\"↞\",lArr:\"⇐\",larrfs:\"⤝\",larrhk:\"↩\",larrlp:\"↫\",larrpl:\"⤹\",larrsim:\"⥳\",larrtl:\"↢\",latail:\"⤙\",lAtail:\"⤛\",lat:\"⪫\",late:\"⪭\",lates:\"⪭︀\",lbarr:\"⤌\",lBarr:\"⤎\",lbbrk:\"❲\",lbrace:\"{\",lbrack:\"[\",lbrke:\"⦋\",lbrksld:\"⦏\",lbrkslu:\"⦍\",Lcaron:\"Ľ\",lcaron:\"ľ\",Lcedil:\"Ļ\",lcedil:\"ļ\",lceil:\"⌈\",lcub:\"{\",Lcy:\"Л\",lcy:\"л\",ldca:\"⤶\",ldquo:\"“\",ldquor:\"„\",ldrdhar:\"⥧\",ldrushar:\"⥋\",ldsh:\"↲\",le:\"≤\",lE:\"≦\",LeftAngleBracket:\"⟨\",LeftArrowBar:\"⇤\",leftarrow:\"←\",LeftArrow:\"←\",Leftarrow:\"⇐\",LeftArrowRightArrow:\"⇆\",leftarrowtail:\"↢\",LeftCeiling:\"⌈\",LeftDoubleBracket:\"⟦\",LeftDownTeeVector:\"⥡\",LeftDownVectorBar:\"⥙\",LeftDownVector:\"⇃\",LeftFloor:\"⌊\",leftharpoondown:\"↽\",leftharpoonup:\"↼\",leftleftarrows:\"⇇\",leftrightarrow:\"↔\",LeftRightArrow:\"↔\",Leftrightarrow:\"⇔\",leftrightarrows:\"⇆\",leftrightharpoons:\"⇋\",leftrightsquigarrow:\"↭\",LeftRightVector:\"⥎\",LeftTeeArrow:\"↤\",LeftTee:\"⊣\",LeftTeeVector:\"⥚\",leftthreetimes:\"⋋\",LeftTriangleBar:\"⧏\",LeftTriangle:\"⊲\",LeftTriangleEqual:\"⊴\",LeftUpDownVector:\"⥑\",LeftUpTeeVector:\"⥠\",LeftUpVectorBar:\"⥘\",LeftUpVector:\"↿\",LeftVectorBar:\"⥒\",LeftVector:\"↼\",lEg:\"⪋\",leg:\"⋚\",leq:\"≤\",leqq:\"≦\",leqslant:\"⩽\",lescc:\"⪨\",les:\"⩽\",lesdot:\"⩿\",lesdoto:\"⪁\",lesdotor:\"⪃\",lesg:\"⋚︀\",lesges:\"⪓\",lessapprox:\"⪅\",lessdot:\"⋖\",lesseqgtr:\"⋚\",lesseqqgtr:\"⪋\",LessEqualGreater:\"⋚\",LessFullEqual:\"≦\",LessGreater:\"≶\",lessgtr:\"≶\",LessLess:\"⪡\",lesssim:\"≲\",LessSlantEqual:\"⩽\",LessTilde:\"≲\",lfisht:\"⥼\",lfloor:\"⌊\",Lfr:\"𝔏\",lfr:\"𝔩\",lg:\"≶\",lgE:\"⪑\",lHar:\"⥢\",lhard:\"↽\",lharu:\"↼\",lharul:\"⥪\",lhblk:\"▄\",LJcy:\"Љ\",ljcy:\"љ\",llarr:\"⇇\",ll:\"≪\",Ll:\"⋘\",llcorner:\"⌞\",Lleftarrow:\"⇚\",llhard:\"⥫\",lltri:\"◺\",Lmidot:\"Ŀ\",lmidot:\"ŀ\",lmoustache:\"⎰\",lmoust:\"⎰\",lnap:\"⪉\",lnapprox:\"⪉\",lne:\"⪇\",lnE:\"≨\",lneq:\"⪇\",lneqq:\"≨\",lnsim:\"⋦\",loang:\"⟬\",loarr:\"⇽\",lobrk:\"⟦\",longleftarrow:\"⟵\",LongLeftArrow:\"⟵\",Longleftarrow:\"⟸\",longleftrightarrow:\"⟷\",LongLeftRightArrow:\"⟷\",Longleftrightarrow:\"⟺\",longmapsto:\"⟼\",longrightarrow:\"⟶\",LongRightArrow:\"⟶\",Longrightarrow:\"⟹\",looparrowleft:\"↫\",looparrowright:\"↬\",lopar:\"⦅\",Lopf:\"𝕃\",lopf:\"𝕝\",loplus:\"⨭\",lotimes:\"⨴\",lowast:\"∗\",lowbar:\"_\",LowerLeftArrow:\"↙\",LowerRightArrow:\"↘\",loz:\"◊\",lozenge:\"◊\",lozf:\"⧫\",lpar:\"(\",lparlt:\"⦓\",lrarr:\"⇆\",lrcorner:\"⌟\",lrhar:\"⇋\",lrhard:\"⥭\",lrm:\"‎\",lrtri:\"⊿\",lsaquo:\"‹\",lscr:\"𝓁\",Lscr:\"ℒ\",lsh:\"↰\",Lsh:\"↰\",lsim:\"≲\",lsime:\"⪍\",lsimg:\"⪏\",lsqb:\"[\",lsquo:\"‘\",lsquor:\"‚\",Lstrok:\"Ł\",lstrok:\"ł\",ltcc:\"⪦\",ltcir:\"⩹\",lt:\"<\",LT:\"<\",Lt:\"≪\",ltdot:\"⋖\",lthree:\"⋋\",ltimes:\"⋉\",ltlarr:\"⥶\",ltquest:\"⩻\",ltri:\"◃\",ltrie:\"⊴\",ltrif:\"◂\",ltrPar:\"⦖\",lurdshar:\"⥊\",luruhar:\"⥦\",lvertneqq:\"≨︀\",lvnE:\"≨︀\",macr:\"¯\",male:\"♂\",malt:\"✠\",maltese:\"✠\",Map:\"⤅\",map:\"↦\",mapsto:\"↦\",mapstodown:\"↧\",mapstoleft:\"↤\",mapstoup:\"↥\",marker:\"▮\",mcomma:\"⨩\",Mcy:\"М\",mcy:\"м\",mdash:\"—\",mDDot:\"∺\",measuredangle:\"∡\",MediumSpace:\" \",Mellintrf:\"ℳ\",Mfr:\"𝔐\",mfr:\"𝔪\",mho:\"℧\",micro:\"µ\",midast:\"*\",midcir:\"⫰\",mid:\"∣\",middot:\"·\",minusb:\"⊟\",minus:\"−\",minusd:\"∸\",minusdu:\"⨪\",MinusPlus:\"∓\",mlcp:\"⫛\",mldr:\"…\",mnplus:\"∓\",models:\"⊧\",Mopf:\"𝕄\",mopf:\"𝕞\",mp:\"∓\",mscr:\"𝓂\",Mscr:\"ℳ\",mstpos:\"∾\",Mu:\"Μ\",mu:\"μ\",multimap:\"⊸\",mumap:\"⊸\",nabla:\"∇\",Nacute:\"Ń\",nacute:\"ń\",nang:\"∠⃒\",nap:\"≉\",napE:\"⩰̸\",napid:\"≋̸\",napos:\"ŉ\",napprox:\"≉\",natural:\"♮\",naturals:\"ℕ\",natur:\"♮\",nbsp:\" \",nbump:\"≎̸\",nbumpe:\"≏̸\",ncap:\"⩃\",Ncaron:\"Ň\",ncaron:\"ň\",Ncedil:\"Ņ\",ncedil:\"ņ\",ncong:\"≇\",ncongdot:\"⩭̸\",ncup:\"⩂\",Ncy:\"Н\",ncy:\"н\",ndash:\"–\",nearhk:\"⤤\",nearr:\"↗\",neArr:\"⇗\",nearrow:\"↗\",ne:\"≠\",nedot:\"≐̸\",NegativeMediumSpace:\"​\",NegativeThickSpace:\"​\",NegativeThinSpace:\"​\",NegativeVeryThinSpace:\"​\",nequiv:\"≢\",nesear:\"⤨\",nesim:\"≂̸\",NestedGreaterGreater:\"≫\",NestedLessLess:\"≪\",NewLine:\"\\n\",nexist:\"∄\",nexists:\"∄\",Nfr:\"𝔑\",nfr:\"𝔫\",ngE:\"≧̸\",nge:\"≱\",ngeq:\"≱\",ngeqq:\"≧̸\",ngeqslant:\"⩾̸\",nges:\"⩾̸\",nGg:\"⋙̸\",ngsim:\"≵\",nGt:\"≫⃒\",ngt:\"≯\",ngtr:\"≯\",nGtv:\"≫̸\",nharr:\"↮\",nhArr:\"⇎\",nhpar:\"⫲\",ni:\"∋\",nis:\"⋼\",nisd:\"⋺\",niv:\"∋\",NJcy:\"Њ\",njcy:\"њ\",nlarr:\"↚\",nlArr:\"⇍\",nldr:\"‥\",nlE:\"≦̸\",nle:\"≰\",nleftarrow:\"↚\",nLeftarrow:\"⇍\",nleftrightarrow:\"↮\",nLeftrightarrow:\"⇎\",nleq:\"≰\",nleqq:\"≦̸\",nleqslant:\"⩽̸\",nles:\"⩽̸\",nless:\"≮\",nLl:\"⋘̸\",nlsim:\"≴\",nLt:\"≪⃒\",nlt:\"≮\",nltri:\"⋪\",nltrie:\"⋬\",nLtv:\"≪̸\",nmid:\"∤\",NoBreak:\"⁠\",NonBreakingSpace:\" \",nopf:\"𝕟\",Nopf:\"ℕ\",Not:\"⫬\",not:\"¬\",NotCongruent:\"≢\",NotCupCap:\"≭\",NotDoubleVerticalBar:\"∦\",NotElement:\"∉\",NotEqual:\"≠\",NotEqualTilde:\"≂̸\",NotExists:\"∄\",NotGreater:\"≯\",NotGreaterEqual:\"≱\",NotGreaterFullEqual:\"≧̸\",NotGreaterGreater:\"≫̸\",NotGreaterLess:\"≹\",NotGreaterSlantEqual:\"⩾̸\",NotGreaterTilde:\"≵\",NotHumpDownHump:\"≎̸\",NotHumpEqual:\"≏̸\",notin:\"∉\",notindot:\"⋵̸\",notinE:\"⋹̸\",notinva:\"∉\",notinvb:\"⋷\",notinvc:\"⋶\",NotLeftTriangleBar:\"⧏̸\",NotLeftTriangle:\"⋪\",NotLeftTriangleEqual:\"⋬\",NotLess:\"≮\",NotLessEqual:\"≰\",NotLessGreater:\"≸\",NotLessLess:\"≪̸\",NotLessSlantEqual:\"⩽̸\",NotLessTilde:\"≴\",NotNestedGreaterGreater:\"⪢̸\",NotNestedLessLess:\"⪡̸\",notni:\"∌\",notniva:\"∌\",notnivb:\"⋾\",notnivc:\"⋽\",NotPrecedes:\"⊀\",NotPrecedesEqual:\"⪯̸\",NotPrecedesSlantEqual:\"⋠\",NotReverseElement:\"∌\",NotRightTriangleBar:\"⧐̸\",NotRightTriangle:\"⋫\",NotRightTriangleEqual:\"⋭\",NotSquareSubset:\"⊏̸\",NotSquareSubsetEqual:\"⋢\",NotSquareSuperset:\"⊐̸\",NotSquareSupersetEqual:\"⋣\",NotSubset:\"⊂⃒\",NotSubsetEqual:\"⊈\",NotSucceeds:\"⊁\",NotSucceedsEqual:\"⪰̸\",NotSucceedsSlantEqual:\"⋡\",NotSucceedsTilde:\"≿̸\",NotSuperset:\"⊃⃒\",NotSupersetEqual:\"⊉\",NotTilde:\"≁\",NotTildeEqual:\"≄\",NotTildeFullEqual:\"≇\",NotTildeTilde:\"≉\",NotVerticalBar:\"∤\",nparallel:\"∦\",npar:\"∦\",nparsl:\"⫽⃥\",npart:\"∂̸\",npolint:\"⨔\",npr:\"⊀\",nprcue:\"⋠\",nprec:\"⊀\",npreceq:\"⪯̸\",npre:\"⪯̸\",nrarrc:\"⤳̸\",nrarr:\"↛\",nrArr:\"⇏\",nrarrw:\"↝̸\",nrightarrow:\"↛\",nRightarrow:\"⇏\",nrtri:\"⋫\",nrtrie:\"⋭\",nsc:\"⊁\",nsccue:\"⋡\",nsce:\"⪰̸\",Nscr:\"𝒩\",nscr:\"𝓃\",nshortmid:\"∤\",nshortparallel:\"∦\",nsim:\"≁\",nsime:\"≄\",nsimeq:\"≄\",nsmid:\"∤\",nspar:\"∦\",nsqsube:\"⋢\",nsqsupe:\"⋣\",nsub:\"⊄\",nsubE:\"⫅̸\",nsube:\"⊈\",nsubset:\"⊂⃒\",nsubseteq:\"⊈\",nsubseteqq:\"⫅̸\",nsucc:\"⊁\",nsucceq:\"⪰̸\",nsup:\"⊅\",nsupE:\"⫆̸\",nsupe:\"⊉\",nsupset:\"⊃⃒\",nsupseteq:\"⊉\",nsupseteqq:\"⫆̸\",ntgl:\"≹\",Ntilde:\"Ñ\",ntilde:\"ñ\",ntlg:\"≸\",ntriangleleft:\"⋪\",ntrianglelefteq:\"⋬\",ntriangleright:\"⋫\",ntrianglerighteq:\"⋭\",Nu:\"Ν\",nu:\"ν\",num:\"#\",numero:\"№\",numsp:\" \",nvap:\"≍⃒\",nvdash:\"⊬\",nvDash:\"⊭\",nVdash:\"⊮\",nVDash:\"⊯\",nvge:\"≥⃒\",nvgt:\">⃒\",nvHarr:\"⤄\",nvinfin:\"⧞\",nvlArr:\"⤂\",nvle:\"≤⃒\",nvlt:\"<⃒\",nvltrie:\"⊴⃒\",nvrArr:\"⤃\",nvrtrie:\"⊵⃒\",nvsim:\"∼⃒\",nwarhk:\"⤣\",nwarr:\"↖\",nwArr:\"⇖\",nwarrow:\"↖\",nwnear:\"⤧\",Oacute:\"Ó\",oacute:\"ó\",oast:\"⊛\",Ocirc:\"Ô\",ocirc:\"ô\",ocir:\"⊚\",Ocy:\"О\",ocy:\"о\",odash:\"⊝\",Odblac:\"Ő\",odblac:\"ő\",odiv:\"⨸\",odot:\"⊙\",odsold:\"⦼\",OElig:\"Œ\",oelig:\"œ\",ofcir:\"⦿\",Ofr:\"𝔒\",ofr:\"𝔬\",ogon:\"˛\",Ograve:\"Ò\",ograve:\"ò\",ogt:\"⧁\",ohbar:\"⦵\",ohm:\"Ω\",oint:\"∮\",olarr:\"↺\",olcir:\"⦾\",olcross:\"⦻\",oline:\"‾\",olt:\"⧀\",Omacr:\"Ō\",omacr:\"ō\",Omega:\"Ω\",omega:\"ω\",Omicron:\"Ο\",omicron:\"ο\",omid:\"⦶\",ominus:\"⊖\",Oopf:\"𝕆\",oopf:\"𝕠\",opar:\"⦷\",OpenCurlyDoubleQuote:\"“\",OpenCurlyQuote:\"‘\",operp:\"⦹\",oplus:\"⊕\",orarr:\"↻\",Or:\"⩔\",or:\"∨\",ord:\"⩝\",order:\"ℴ\",orderof:\"ℴ\",ordf:\"ª\",ordm:\"º\",origof:\"⊶\",oror:\"⩖\",orslope:\"⩗\",orv:\"⩛\",oS:\"Ⓢ\",Oscr:\"𝒪\",oscr:\"ℴ\",Oslash:\"Ø\",oslash:\"ø\",osol:\"⊘\",Otilde:\"Õ\",otilde:\"õ\",otimesas:\"⨶\",Otimes:\"⨷\",otimes:\"⊗\",Ouml:\"Ö\",ouml:\"ö\",ovbar:\"⌽\",OverBar:\"‾\",OverBrace:\"⏞\",OverBracket:\"⎴\",OverParenthesis:\"⏜\",para:\"¶\",parallel:\"∥\",par:\"∥\",parsim:\"⫳\",parsl:\"⫽\",part:\"∂\",PartialD:\"∂\",Pcy:\"П\",pcy:\"п\",percnt:\"%\",period:\".\",permil:\"‰\",perp:\"⊥\",pertenk:\"‱\",Pfr:\"𝔓\",pfr:\"𝔭\",Phi:\"Φ\",phi:\"φ\",phiv:\"ϕ\",phmmat:\"ℳ\",phone:\"☎\",Pi:\"Π\",pi:\"π\",pitchfork:\"⋔\",piv:\"ϖ\",planck:\"ℏ\",planckh:\"ℎ\",plankv:\"ℏ\",plusacir:\"⨣\",plusb:\"⊞\",pluscir:\"⨢\",plus:\"+\",plusdo:\"∔\",plusdu:\"⨥\",pluse:\"⩲\",PlusMinus:\"±\",plusmn:\"±\",plussim:\"⨦\",plustwo:\"⨧\",pm:\"±\",Poincareplane:\"ℌ\",pointint:\"⨕\",popf:\"𝕡\",Popf:\"ℙ\",pound:\"£\",prap:\"⪷\",Pr:\"⪻\",pr:\"≺\",prcue:\"≼\",precapprox:\"⪷\",prec:\"≺\",preccurlyeq:\"≼\",Precedes:\"≺\",PrecedesEqual:\"⪯\",PrecedesSlantEqual:\"≼\",PrecedesTilde:\"≾\",preceq:\"⪯\",precnapprox:\"⪹\",precneqq:\"⪵\",precnsim:\"⋨\",pre:\"⪯\",prE:\"⪳\",precsim:\"≾\",prime:\"′\",Prime:\"″\",primes:\"ℙ\",prnap:\"⪹\",prnE:\"⪵\",prnsim:\"⋨\",prod:\"∏\",Product:\"∏\",profalar:\"⌮\",profline:\"⌒\",profsurf:\"⌓\",prop:\"∝\",Proportional:\"∝\",Proportion:\"∷\",propto:\"∝\",prsim:\"≾\",prurel:\"⊰\",Pscr:\"𝒫\",pscr:\"𝓅\",Psi:\"Ψ\",psi:\"ψ\",puncsp:\" \",Qfr:\"𝔔\",qfr:\"𝔮\",qint:\"⨌\",qopf:\"𝕢\",Qopf:\"ℚ\",qprime:\"⁗\",Qscr:\"𝒬\",qscr:\"𝓆\",quaternions:\"ℍ\",quatint:\"⨖\",quest:\"?\",questeq:\"≟\",quot:'\"',QUOT:'\"',rAarr:\"⇛\",race:\"∽̱\",Racute:\"Ŕ\",racute:\"ŕ\",radic:\"√\",raemptyv:\"⦳\",rang:\"⟩\",Rang:\"⟫\",rangd:\"⦒\",range:\"⦥\",rangle:\"⟩\",raquo:\"»\",rarrap:\"⥵\",rarrb:\"⇥\",rarrbfs:\"⤠\",rarrc:\"⤳\",rarr:\"→\",Rarr:\"↠\",rArr:\"⇒\",rarrfs:\"⤞\",rarrhk:\"↪\",rarrlp:\"↬\",rarrpl:\"⥅\",rarrsim:\"⥴\",Rarrtl:\"⤖\",rarrtl:\"↣\",rarrw:\"↝\",ratail:\"⤚\",rAtail:\"⤜\",ratio:\"∶\",rationals:\"ℚ\",rbarr:\"⤍\",rBarr:\"⤏\",RBarr:\"⤐\",rbbrk:\"❳\",rbrace:\"}\",rbrack:\"]\",rbrke:\"⦌\",rbrksld:\"⦎\",rbrkslu:\"⦐\",Rcaron:\"Ř\",rcaron:\"ř\",Rcedil:\"Ŗ\",rcedil:\"ŗ\",rceil:\"⌉\",rcub:\"}\",Rcy:\"Р\",rcy:\"р\",rdca:\"⤷\",rdldhar:\"⥩\",rdquo:\"”\",rdquor:\"”\",rdsh:\"↳\",real:\"ℜ\",realine:\"ℛ\",realpart:\"ℜ\",reals:\"ℝ\",Re:\"ℜ\",rect:\"▭\",reg:\"®\",REG:\"®\",ReverseElement:\"∋\",ReverseEquilibrium:\"⇋\",ReverseUpEquilibrium:\"⥯\",rfisht:\"⥽\",rfloor:\"⌋\",rfr:\"𝔯\",Rfr:\"ℜ\",rHar:\"⥤\",rhard:\"⇁\",rharu:\"⇀\",rharul:\"⥬\",Rho:\"Ρ\",rho:\"ρ\",rhov:\"ϱ\",RightAngleBracket:\"⟩\",RightArrowBar:\"⇥\",rightarrow:\"→\",RightArrow:\"→\",Rightarrow:\"⇒\",RightArrowLeftArrow:\"⇄\",rightarrowtail:\"↣\",RightCeiling:\"⌉\",RightDoubleBracket:\"⟧\",RightDownTeeVector:\"⥝\",RightDownVectorBar:\"⥕\",RightDownVector:\"⇂\",RightFloor:\"⌋\",rightharpoondown:\"⇁\",rightharpoonup:\"⇀\",rightleftarrows:\"⇄\",rightleftharpoons:\"⇌\",rightrightarrows:\"⇉\",rightsquigarrow:\"↝\",RightTeeArrow:\"↦\",RightTee:\"⊢\",RightTeeVector:\"⥛\",rightthreetimes:\"⋌\",RightTriangleBar:\"⧐\",RightTriangle:\"⊳\",RightTriangleEqual:\"⊵\",RightUpDownVector:\"⥏\",RightUpTeeVector:\"⥜\",RightUpVectorBar:\"⥔\",RightUpVector:\"↾\",RightVectorBar:\"⥓\",RightVector:\"⇀\",ring:\"˚\",risingdotseq:\"≓\",rlarr:\"⇄\",rlhar:\"⇌\",rlm:\"‏\",rmoustache:\"⎱\",rmoust:\"⎱\",rnmid:\"⫮\",roang:\"⟭\",roarr:\"⇾\",robrk:\"⟧\",ropar:\"⦆\",ropf:\"𝕣\",Ropf:\"ℝ\",roplus:\"⨮\",rotimes:\"⨵\",RoundImplies:\"⥰\",rpar:\")\",rpargt:\"⦔\",rppolint:\"⨒\",rrarr:\"⇉\",Rrightarrow:\"⇛\",rsaquo:\"›\",rscr:\"𝓇\",Rscr:\"ℛ\",rsh:\"↱\",Rsh:\"↱\",rsqb:\"]\",rsquo:\"’\",rsquor:\"’\",rthree:\"⋌\",rtimes:\"⋊\",rtri:\"▹\",rtrie:\"⊵\",rtrif:\"▸\",rtriltri:\"⧎\",RuleDelayed:\"⧴\",ruluhar:\"⥨\",rx:\"℞\",Sacute:\"Ś\",sacute:\"ś\",sbquo:\"‚\",scap:\"⪸\",Scaron:\"Š\",scaron:\"š\",Sc:\"⪼\",sc:\"≻\",sccue:\"≽\",sce:\"⪰\",scE:\"⪴\",Scedil:\"Ş\",scedil:\"ş\",Scirc:\"Ŝ\",scirc:\"ŝ\",scnap:\"⪺\",scnE:\"⪶\",scnsim:\"⋩\",scpolint:\"⨓\",scsim:\"≿\",Scy:\"С\",scy:\"с\",sdotb:\"⊡\",sdot:\"⋅\",sdote:\"⩦\",searhk:\"⤥\",searr:\"↘\",seArr:\"⇘\",searrow:\"↘\",sect:\"§\",semi:\";\",seswar:\"⤩\",setminus:\"∖\",setmn:\"∖\",sext:\"✶\",Sfr:\"𝔖\",sfr:\"𝔰\",sfrown:\"⌢\",sharp:\"♯\",SHCHcy:\"Щ\",shchcy:\"щ\",SHcy:\"Ш\",shcy:\"ш\",ShortDownArrow:\"↓\",ShortLeftArrow:\"←\",shortmid:\"∣\",shortparallel:\"∥\",ShortRightArrow:\"→\",ShortUpArrow:\"↑\",shy:\"­\",Sigma:\"Σ\",sigma:\"σ\",sigmaf:\"ς\",sigmav:\"ς\",sim:\"∼\",simdot:\"⩪\",sime:\"≃\",simeq:\"≃\",simg:\"⪞\",simgE:\"⪠\",siml:\"⪝\",simlE:\"⪟\",simne:\"≆\",simplus:\"⨤\",simrarr:\"⥲\",slarr:\"←\",SmallCircle:\"∘\",smallsetminus:\"∖\",smashp:\"⨳\",smeparsl:\"⧤\",smid:\"∣\",smile:\"⌣\",smt:\"⪪\",smte:\"⪬\",smtes:\"⪬︀\",SOFTcy:\"Ь\",softcy:\"ь\",solbar:\"⌿\",solb:\"⧄\",sol:\"/\",Sopf:\"𝕊\",sopf:\"𝕤\",spades:\"♠\",spadesuit:\"♠\",spar:\"∥\",sqcap:\"⊓\",sqcaps:\"⊓︀\",sqcup:\"⊔\",sqcups:\"⊔︀\",Sqrt:\"√\",sqsub:\"⊏\",sqsube:\"⊑\",sqsubset:\"⊏\",sqsubseteq:\"⊑\",sqsup:\"⊐\",sqsupe:\"⊒\",sqsupset:\"⊐\",sqsupseteq:\"⊒\",square:\"□\",Square:\"□\",SquareIntersection:\"⊓\",SquareSubset:\"⊏\",SquareSubsetEqual:\"⊑\",SquareSuperset:\"⊐\",SquareSupersetEqual:\"⊒\",SquareUnion:\"⊔\",squarf:\"▪\",squ:\"□\",squf:\"▪\",srarr:\"→\",Sscr:\"𝒮\",sscr:\"𝓈\",ssetmn:\"∖\",ssmile:\"⌣\",sstarf:\"⋆\",Star:\"⋆\",star:\"☆\",starf:\"★\",straightepsilon:\"ϵ\",straightphi:\"ϕ\",strns:\"¯\",sub:\"⊂\",Sub:\"⋐\",subdot:\"⪽\",subE:\"⫅\",sube:\"⊆\",subedot:\"⫃\",submult:\"⫁\",subnE:\"⫋\",subne:\"⊊\",subplus:\"⪿\",subrarr:\"⥹\",subset:\"⊂\",Subset:\"⋐\",subseteq:\"⊆\",subseteqq:\"⫅\",SubsetEqual:\"⊆\",subsetneq:\"⊊\",subsetneqq:\"⫋\",subsim:\"⫇\",subsub:\"⫕\",subsup:\"⫓\",succapprox:\"⪸\",succ:\"≻\",succcurlyeq:\"≽\",Succeeds:\"≻\",SucceedsEqual:\"⪰\",SucceedsSlantEqual:\"≽\",SucceedsTilde:\"≿\",succeq:\"⪰\",succnapprox:\"⪺\",succneqq:\"⪶\",succnsim:\"⋩\",succsim:\"≿\",SuchThat:\"∋\",sum:\"∑\",Sum:\"∑\",sung:\"♪\",sup1:\"¹\",sup2:\"²\",sup3:\"³\",sup:\"⊃\",Sup:\"⋑\",supdot:\"⪾\",supdsub:\"⫘\",supE:\"⫆\",supe:\"⊇\",supedot:\"⫄\",Superset:\"⊃\",SupersetEqual:\"⊇\",suphsol:\"⟉\",suphsub:\"⫗\",suplarr:\"⥻\",supmult:\"⫂\",supnE:\"⫌\",supne:\"⊋\",supplus:\"⫀\",supset:\"⊃\",Supset:\"⋑\",supseteq:\"⊇\",supseteqq:\"⫆\",supsetneq:\"⊋\",supsetneqq:\"⫌\",supsim:\"⫈\",supsub:\"⫔\",supsup:\"⫖\",swarhk:\"⤦\",swarr:\"↙\",swArr:\"⇙\",swarrow:\"↙\",swnwar:\"⤪\",szlig:\"ß\",Tab:\"\\t\",target:\"⌖\",Tau:\"Τ\",tau:\"τ\",tbrk:\"⎴\",Tcaron:\"Ť\",tcaron:\"ť\",Tcedil:\"Ţ\",tcedil:\"ţ\",Tcy:\"Т\",tcy:\"т\",tdot:\"⃛\",telrec:\"⌕\",Tfr:\"𝔗\",tfr:\"𝔱\",there4:\"∴\",therefore:\"∴\",Therefore:\"∴\",Theta:\"Θ\",theta:\"θ\",thetasym:\"ϑ\",thetav:\"ϑ\",thickapprox:\"≈\",thicksim:\"∼\",ThickSpace:\"  \",ThinSpace:\" \",thinsp:\" \",thkap:\"≈\",thksim:\"∼\",THORN:\"Þ\",thorn:\"þ\",tilde:\"˜\",Tilde:\"∼\",TildeEqual:\"≃\",TildeFullEqual:\"≅\",TildeTilde:\"≈\",timesbar:\"⨱\",timesb:\"⊠\",times:\"×\",timesd:\"⨰\",tint:\"∭\",toea:\"⤨\",topbot:\"⌶\",topcir:\"⫱\",top:\"⊤\",Topf:\"𝕋\",topf:\"𝕥\",topfork:\"⫚\",tosa:\"⤩\",tprime:\"‴\",trade:\"™\",TRADE:\"™\",triangle:\"▵\",triangledown:\"▿\",triangleleft:\"◃\",trianglelefteq:\"⊴\",triangleq:\"≜\",triangleright:\"▹\",trianglerighteq:\"⊵\",tridot:\"◬\",trie:\"≜\",triminus:\"⨺\",TripleDot:\"⃛\",triplus:\"⨹\",trisb:\"⧍\",tritime:\"⨻\",trpezium:\"⏢\",Tscr:\"𝒯\",tscr:\"𝓉\",TScy:\"Ц\",tscy:\"ц\",TSHcy:\"Ћ\",tshcy:\"ћ\",Tstrok:\"Ŧ\",tstrok:\"ŧ\",twixt:\"≬\",twoheadleftarrow:\"↞\",twoheadrightarrow:\"↠\",Uacute:\"Ú\",uacute:\"ú\",uarr:\"↑\",Uarr:\"↟\",uArr:\"⇑\",Uarrocir:\"⥉\",Ubrcy:\"Ў\",ubrcy:\"ў\",Ubreve:\"Ŭ\",ubreve:\"ŭ\",Ucirc:\"Û\",ucirc:\"û\",Ucy:\"У\",ucy:\"у\",udarr:\"⇅\",Udblac:\"Ű\",udblac:\"ű\",udhar:\"⥮\",ufisht:\"⥾\",Ufr:\"𝔘\",ufr:\"𝔲\",Ugrave:\"Ù\",ugrave:\"ù\",uHar:\"⥣\",uharl:\"↿\",uharr:\"↾\",uhblk:\"▀\",ulcorn:\"⌜\",ulcorner:\"⌜\",ulcrop:\"⌏\",ultri:\"◸\",Umacr:\"Ū\",umacr:\"ū\",uml:\"¨\",UnderBar:\"_\",UnderBrace:\"⏟\",UnderBracket:\"⎵\",UnderParenthesis:\"⏝\",Union:\"⋃\",UnionPlus:\"⊎\",Uogon:\"Ų\",uogon:\"ų\",Uopf:\"𝕌\",uopf:\"𝕦\",UpArrowBar:\"⤒\",uparrow:\"↑\",UpArrow:\"↑\",Uparrow:\"⇑\",UpArrowDownArrow:\"⇅\",updownarrow:\"↕\",UpDownArrow:\"↕\",Updownarrow:\"⇕\",UpEquilibrium:\"⥮\",upharpoonleft:\"↿\",upharpoonright:\"↾\",uplus:\"⊎\",UpperLeftArrow:\"↖\",UpperRightArrow:\"↗\",upsi:\"υ\",Upsi:\"ϒ\",upsih:\"ϒ\",Upsilon:\"Υ\",upsilon:\"υ\",UpTeeArrow:\"↥\",UpTee:\"⊥\",upuparrows:\"⇈\",urcorn:\"⌝\",urcorner:\"⌝\",urcrop:\"⌎\",Uring:\"Ů\",uring:\"ů\",urtri:\"◹\",Uscr:\"𝒰\",uscr:\"𝓊\",utdot:\"⋰\",Utilde:\"Ũ\",utilde:\"ũ\",utri:\"▵\",utrif:\"▴\",uuarr:\"⇈\",Uuml:\"Ü\",uuml:\"ü\",uwangle:\"⦧\",vangrt:\"⦜\",varepsilon:\"ϵ\",varkappa:\"ϰ\",varnothing:\"∅\",varphi:\"ϕ\",varpi:\"ϖ\",varpropto:\"∝\",varr:\"↕\",vArr:\"⇕\",varrho:\"ϱ\",varsigma:\"ς\",varsubsetneq:\"⊊︀\",varsubsetneqq:\"⫋︀\",varsupsetneq:\"⊋︀\",varsupsetneqq:\"⫌︀\",vartheta:\"ϑ\",vartriangleleft:\"⊲\",vartriangleright:\"⊳\",vBar:\"⫨\",Vbar:\"⫫\",vBarv:\"⫩\",Vcy:\"В\",vcy:\"в\",vdash:\"⊢\",vDash:\"⊨\",Vdash:\"⊩\",VDash:\"⊫\",Vdashl:\"⫦\",veebar:\"⊻\",vee:\"∨\",Vee:\"⋁\",veeeq:\"≚\",vellip:\"⋮\",verbar:\"|\",Verbar:\"‖\",vert:\"|\",Vert:\"‖\",VerticalBar:\"∣\",VerticalLine:\"|\",VerticalSeparator:\"❘\",VerticalTilde:\"≀\",VeryThinSpace:\" \",Vfr:\"𝔙\",vfr:\"𝔳\",vltri:\"⊲\",vnsub:\"⊂⃒\",vnsup:\"⊃⃒\",Vopf:\"𝕍\",vopf:\"𝕧\",vprop:\"∝\",vrtri:\"⊳\",Vscr:\"𝒱\",vscr:\"𝓋\",vsubnE:\"⫋︀\",vsubne:\"⊊︀\",vsupnE:\"⫌︀\",vsupne:\"⊋︀\",Vvdash:\"⊪\",vzigzag:\"⦚\",Wcirc:\"Ŵ\",wcirc:\"ŵ\",wedbar:\"⩟\",wedge:\"∧\",Wedge:\"⋀\",wedgeq:\"≙\",weierp:\"℘\",Wfr:\"𝔚\",wfr:\"𝔴\",Wopf:\"𝕎\",wopf:\"𝕨\",wp:\"℘\",wr:\"≀\",wreath:\"≀\",Wscr:\"𝒲\",wscr:\"𝓌\",xcap:\"⋂\",xcirc:\"◯\",xcup:\"⋃\",xdtri:\"▽\",Xfr:\"𝔛\",xfr:\"𝔵\",xharr:\"⟷\",xhArr:\"⟺\",Xi:\"Ξ\",xi:\"ξ\",xlarr:\"⟵\",xlArr:\"⟸\",xmap:\"⟼\",xnis:\"⋻\",xodot:\"⨀\",Xopf:\"𝕏\",xopf:\"𝕩\",xoplus:\"⨁\",xotime:\"⨂\",xrarr:\"⟶\",xrArr:\"⟹\",Xscr:\"𝒳\",xscr:\"𝓍\",xsqcup:\"⨆\",xuplus:\"⨄\",xutri:\"△\",xvee:\"⋁\",xwedge:\"⋀\",Yacute:\"Ý\",yacute:\"ý\",YAcy:\"Я\",yacy:\"я\",Ycirc:\"Ŷ\",ycirc:\"ŷ\",Ycy:\"Ы\",ycy:\"ы\",yen:\"¥\",Yfr:\"𝔜\",yfr:\"𝔶\",YIcy:\"Ї\",yicy:\"ї\",Yopf:\"𝕐\",yopf:\"𝕪\",Yscr:\"𝒴\",yscr:\"𝓎\",YUcy:\"Ю\",yucy:\"ю\",yuml:\"ÿ\",Yuml:\"Ÿ\",Zacute:\"Ź\",zacute:\"ź\",Zcaron:\"Ž\",zcaron:\"ž\",Zcy:\"З\",zcy:\"з\",Zdot:\"Ż\",zdot:\"ż\",zeetrf:\"ℨ\",ZeroWidthSpace:\"​\",Zeta:\"Ζ\",zeta:\"ζ\",zfr:\"𝔷\",Zfr:\"ℨ\",ZHcy:\"Ж\",zhcy:\"ж\",zigrarr:\"⇝\",zopf:\"𝕫\",Zopf:\"ℤ\",Zscr:\"𝒵\",zscr:\"𝓏\",zwj:\"‍\",zwnj:\"‌\"};function O1(){return T1||(T1=1,y1=A1),y1}function C1(){return b1||(b1=1,v1=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/),v1}var w1,k1,I1,R1,N1,M1,P1,D1,x1,L1={};function F1(){var l;return k1||(k1=1,l={},c.defaultChars=\";/?:@&=+$,-_.!~*'()#\",c.componentChars=\"-_.!~*'()\",w1=c),w1;function c(e,t,r){var n,a,i,o,s=\"\";for(\"string\"!=typeof t&&(r=t,t=c.defaultChars),void 0===r&&(r=!0),o=function(e){var t,r,n=l[e];if(!n){for(n=l[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?n.push(r):n.push(\"%\"+(\"0\"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t<e.length;t++)n[e.charCodeAt(t)]=e[t]}return n}(t),n=0,a=e.length;n<a;n++)i=e.charCodeAt(n),r&&37===i&&n+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(n+1,n+3))?(s+=e.slice(n,n+3),n+=2):i<128?s+=o[i]:55296<=i&&i<=57343?55296<=i&&i<=56319&&n+1<a&&56320<=(i=e.charCodeAt(n+1))&&i<=57343?(s+=encodeURIComponent(e[n]+e[n+1]),n++):s+=\"%EF%BF%BD\":s+=encodeURIComponent(e[n]);return s}}function U1(){var a;return R1||(R1=1,a={},r.defaultChars=\";/?:@&=+$,#\",r.componentChars=\"\",I1=r),I1;function r(e,t){var c=function(e){var t,r,n=a[e];if(!n){for(n=a[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),n.push(r);for(t=0;t<e.length;t++)n[r=e.charCodeAt(t)]=\"%\"+(\"0\"+r.toString(16).toUpperCase()).slice(-2)}return n}(t=\"string\"!=typeof t?r.defaultChars:t);return e.replace(/(%[a-f0-9]{2})+/gi,function(e){for(var t,r,n,a,i,o=\"\",s=0,l=e.length;s<l;s+=3)(t=parseInt(e.slice(s+1,s+3),16))<128?o+=c[t]:192==(224&t)&&s+3<l&&128==(192&(r=parseInt(e.slice(s+4,s+6),16)))?(o+=(i=t<<6&1984|63&r)<128?\"��\":String.fromCharCode(i),s+=3):224==(240&t)&&s+6<l&&(r=parseInt(e.slice(s+4,s+6),16),n=parseInt(e.slice(s+7,s+9),16),128==(192&r))&&128==(192&n)?(o+=(i=t<<12&61440|r<<6&4032|63&n)<2048||55296<=i&&i<=57343?\"���\":String.fromCharCode(i),s+=6):240==(248&t)&&s+9<l&&(r=parseInt(e.slice(s+4,s+6),16),n=parseInt(e.slice(s+7,s+9),16),a=parseInt(e.slice(s+10,s+12),16),128==(192&r))&&128==(192&n)&&128==(192&a)?((i=t<<18&1835008|r<<12&258048|n<<6&4032|63&a)<65536||1114111<i?o+=\"����\":(i-=65536,o+=String.fromCharCode(55296+(i>>10),56320+(1023&i))),s+=9):o+=\"�\";return o})}}function B1(){var _,r,y,e,T,v,b,E,S,A;return D1||(D1=1,_=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,y=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,e=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),e=[\"'\"].concat(e),T=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(e),v=[\"/\",\"?\",\"#\"],b=/^[+a-z0-9A-Z_-]{0,63}$/,E=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,S={javascript:!0,\"javascript:\":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0},n.prototype.parse=function(e,t){var r,n;if(i=(i=e).trim(),!t&&1===e.split(\"#\").length){e=y.exec(i);if(e)return this.pathname=e[1],e[2]&&(this.search=e[2]),this}e=_.exec(i);if(e&&(r=(e=e[0]).toLowerCase(),this.protocol=e,i=i.substr(e.length)),!(t||e||i.match(/^\\/\\/[^@\\/]+@[^@\\/]+/))||!(g=\"//\"===i.substr(0,2))||e&&S[e]||(i=i.substr(2),this.slashes=!0),!S[e]&&(g||e&&!A[e])){var a=-1;for(s=0;s<v.length;s++)-1!==(n=i.indexOf(v[s]))&&(-1===a||n<a)&&(a=n);for(-1!==(t=-1===a?i.lastIndexOf(\"@\"):i.lastIndexOf(\"@\",a))&&(g=i.slice(0,t),i=i.slice(t+1),this.auth=g),a=-1,s=0;s<T.length;s++)-1!==(n=i.indexOf(T[s]))&&(-1===a||n<a)&&(a=n);\":\"===i[(a=-1===a?i.length:a)-1]&&a--;var e=i.slice(0,a),i=i.slice(a),t=(this.parseHost(e),this.hostname=this.hostname||\"\",\"[\"===this.hostname[0]&&\"]\"===this.hostname[this.hostname.length-1]);if(!t)for(var o=this.hostname.split(/\\./),s=0,l=o.length;s<l;s++){var c=o[s];if(c&&!c.match(b)){for(var u=\"\",d=0,p=c.length;d<p;d++)127<c.charCodeAt(d)?u+=\"x\":u+=c[d];if(!u.match(b)){var f=o.slice(0,s),h=o.slice(s+1),m=c.match(E);m&&(f.push(m[1]),h.unshift(m[2])),h.length&&(i=h.join(\".\")+i),this.hostname=f.join(\".\");break}}}255<this.hostname.length&&(this.hostname=\"\"),t&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var g=i.indexOf(\"#\"),e=(-1!==g&&(this.hash=i.substr(g),i=i.slice(0,g)),i.indexOf(\"?\"));return-1!==e&&(this.search=i.substr(e),i=i.slice(0,e)),i&&(this.pathname=i),A[r]&&this.hostname&&!this.pathname&&(this.pathname=\"\"),this},n.prototype.parseHost=function(e){var t=r.exec(e);t&&(\":\"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},P1=function(e,t){var r;return e&&e instanceof n?e:((r=new n).parse(e,t),r)}),P1;function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}}function j1(){return x1||(x1=1,L1.encode=F1(),L1.decode=U1(),L1.format=(M1||(M1=1,N1=function(e){var t=\"\",t=(t=(t+=e.protocol||\"\")+(e.slashes?\"//\":\"\"))+(e.auth?e.auth+\"@\":\"\");return e.hostname&&-1!==e.hostname.indexOf(\":\")?t+=\"[\"+e.hostname+\"]\":t+=e.hostname||\"\",t=(t=(t=(t+=e.port?\":\"+e.port:\"\")+(e.pathname||\"\"))+(e.search||\"\"))+(e.hash||\"\")}),N1),L1.parse=B1()),L1}var H1,G1,V1,q1,z1,W1,$1,K1,Y1,J1,Q1={};function Z1(){return G1||(G1=1,H1=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/),H1}function X1(){return q1||(q1=1,V1=/[\\0-\\x1F\\x7F-\\x9F]/),V1}function eC(){return K1||(K1=1,$1=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/),$1}function tC(){return Y1||(Y1=1,Q1.Any=Z1(),Q1.Cc=X1(),Q1.Cf=(W1||(W1=1,z1=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/),z1),Q1.P=C1(),Q1.Z=eC()),Q1}function M(){var e,r,t,n,a,i,o,s,l,c,u;return J1||(J1=1,e=S1,r=Object.prototype.hasOwnProperty,t=/\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g,n=new RegExp(t.source+\"|\"+/&([a-z#][a-z0-9]{1,31});/gi.source,\"gi\"),a=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,i=O1(),o=/[&<>\"]/,s=/[&<>\"]/g,l={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"},c=/[.?*+^$[\\]\\\\(){}|-]/g,u=C1(),e.lib={},e.lib.mdurl=j1(),e.lib.ucmicro=tC(),e.assign=function(r){return Array.prototype.slice.call(arguments,1).forEach(function(t){if(t){if(\"object\"!=typeof t)throw new TypeError(t+\"must be object\");Object.keys(t).forEach(function(e){r[e]=t[e]})}}),r},e.isString=function(e){return\"[object String]\"===Object.prototype.toString.call(e)},e.has=d,e.unescapeMd=function(e){return e.indexOf(\"\\\\\")<0?e:e.replace(t,\"$1\")},e.unescapeAll=function(e){return e.indexOf(\"\\\\\")<0&&e.indexOf(\"&\")<0?e:e.replace(n,function(e,t,r){return t||(t=e,d(i,e=r)?i[e]:35===e.charCodeAt(0)&&a.test(e)&&p(e=\"x\"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10))?f(e):t)})},e.isValidEntityCode=p,e.fromCodePoint=f,e.escapeHtml=function(e){return o.test(e)?e.replace(s,h):e},e.arrayReplaceAt=function(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))},e.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},e.isWhiteSpace=function(e){if(8192<=e&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},e.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},e.isPunctChar=function(e){return u.test(e)},e.escapeRE=function(e){return e.replace(c,\"\\\\$&\")},e.normalizeReference=function(e){return e=e.trim().replace(/\\s+/g,\" \"),(e=\"Ṿ\"===\"ẞ\".toLowerCase()?e.replace(/ẞ/g,\"ß\"):e).toLowerCase().toUpperCase()}),S1;function d(e,t){return r.call(e,t)}function p(e){return!(55296<=e&&e<=57343||64976<=e&&e<=65007||65535==(65535&e)||65534==(65535&e)||0<=e&&e<=8||11===e||14<=e&&e<=31||127<=e&&e<=159||1114111<e)}function f(e){return 65535<e?(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e))):String.fromCharCode(e)}function h(e){return l[e]}}var rC,nC,aC,iC,oC,sC,lC,cC,uC,dC,pC,fC,hC,mC,gC,_C,yC,TC,vC,bC,EC,SC,AC,OC,CC,wC,kC,IC,RC,NC,MC,PC,DC,xC,LC,FC,UC,BC,jC,HC,GC,VC,qC,zC,WC,$C={};function KC(){var s,l;return lC||(lC=1,$C.parseLinkLabel=(nC||(nC=1,rC=function(e,t,r){var n,a,i,o,s=-1,l=e.posMax,c=e.pos;for(e.pos=t+1,n=1;e.pos<l;){if(93===(i=e.src.charCodeAt(e.pos))&&0===--n){a=!0;break}if(o=e.pos,e.md.inline.skipToken(e),91===i)if(o===e.pos-1)n++;else if(r)return e.pos=c,-1}return a&&(s=e.pos),e.pos=c,s}),rC),$C.parseLinkDestination=(iC||(iC=1,s=M().unescapeAll,aC=function(e,t,r){var n,a,i=t,o={ok:!1,pos:0,lines:0,str:\"\"};if(60===e.charCodeAt(t))for(t++;t<r;){if(10===(n=e.charCodeAt(t)))return o;if(60===n)return o;if(62===n)return o.pos=t+1,o.str=s(e.slice(i+1,t)),o.ok=!0,o;92===n&&t+1<r?t+=2:t++}else{for(a=0;t<r&&32!==(n=e.charCodeAt(t))&&!(n<32||127===n);)if(92===n&&t+1<r){if(32===e.charCodeAt(t+1))break;t+=2}else{if(40===n&&32<++a)return o;if(41===n){if(0===a)break;a--}t++}i!==t&&0===a&&(o.str=s(e.slice(i,t)),o.lines=0,o.pos=t,o.ok=!0)}return o}),aC),$C.parseLinkTitle=(sC||(sC=1,l=M().unescapeAll,oC=function(e,t,r){var n,a,i=0,o=t,s={ok:!1,pos:0,lines:0,str:\"\"};if(!(r<=t||34!==(a=e.charCodeAt(t))&&39!==a&&40!==a))for(t++,40===a&&(a=41);t<r;){if((n=e.charCodeAt(t))===a)return s.pos=t+1,s.lines=i,s.str=l(e.slice(o+1,t)),s.ok=!0,s;if(40===n&&41===a)return s;(10===n||92===n&&t+1<r&&(t++,10===e.charCodeAt(t)))&&i++,t++}return s}),oC)),$C}function YC(){return pC||(pC=1,e.prototype.__find__=function(e){for(var t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1},e.prototype.__compile__=function(){var r=this,t=[\"\"];r.__rules__.forEach(function(e){e.enabled&&e.alt.forEach(function(e){t.indexOf(e)<0&&t.push(e)})}),r.__cache__={},t.forEach(function(t){r.__cache__[t]=[],r.__rules__.forEach(function(e){!e.enabled||t&&e.alt.indexOf(t)<0||r.__cache__[t].push(e.fn)})})},e.prototype.at=function(e,t,r){var n=this.__find__(e),r=r||{};if(-1===n)throw new Error(\"Parser rule not found: \"+e);this.__rules__[n].fn=t,this.__rules__[n].alt=r.alt||[],this.__cache__=null},e.prototype.before=function(e,t,r,n){var a=this.__find__(e),n=n||{};if(-1===a)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(a,0,{name:t,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},e.prototype.after=function(e,t,r,n){var a=this.__find__(e),n=n||{};if(-1===a)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(a+1,0,{name:t,enabled:!0,fn:r,alt:n.alt||[]}),this.__cache__=null},e.prototype.push=function(e,t,r){this.__rules__.push({name:e,enabled:!0,fn:t,alt:(r||{}).alt||[]}),this.__cache__=null},e.prototype.enable=function(e,r){Array.isArray(e)||(e=[e]);var n=[];return e.forEach(function(e){var t=this.__find__(e);if(t<0){if(r)return;throw new Error(\"Rules manager: invalid rule name \"+e)}this.__rules__[t].enabled=!0,n.push(e)},this),this.__cache__=null,n},e.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach(function(e){e.enabled=!1}),this.enable(e,t)},e.prototype.disable=function(e,r){Array.isArray(e)||(e=[e]);var n=[];return e.forEach(function(e){var t=this.__find__(e);if(t<0){if(r)return;throw new Error(\"Rules manager: invalid rule name \"+e)}this.__rules__[t].enabled=!1,n.push(e)},this),this.__cache__=null,n},e.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},dC=e),dC;function e(){this.__rules__=[],this.__cache__=null}}function JC(){var u,d,p,r;return EC||(EC=1,u=/\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/,d=/\\((c|tm|r|p)\\)/i,p=/\\((c|tm|r|p)\\)/gi,r={c:\"©\",r:\"®\",p:\"§\",tm:\"™\"},bC=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;0<=t;t--)if(\"inline\"===e.tokens[t].type){if(d.test(e.tokens[t].content)){a=r=i=n=void 0;for(var r,n=e.tokens[t].children,a=0,i=n.length-1;0<=i;i--)\"text\"!==(r=n[i]).type||a||(r.content=r.content.replace(p,f)),\"link_open\"===r.type&&\"auto\"===r.info&&a--,\"link_close\"===r.type&&\"auto\"===r.info&&a++}if(u.test(e.tokens[t].content)){l=o=c=s=void 0;for(var o,s=e.tokens[t].children,l=0,c=s.length-1;0<=c;c--)\"text\"!==(o=s[c]).type||l||u.test(o.content)&&(o.content=o.content.replace(/\\+-/g,\"±\").replace(/\\.{2,}/g,\"…\").replace(/([?!])…/g,\"$1..\").replace(/([?!]){4,}/g,\"$1$1$1\").replace(/,{2,}/g,\",\").replace(/(^|[^-])---(?=[^-]|$)/gm,\"$1—\").replace(/(^|\\s)--(?=\\s|$)/gm,\"$1–\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/gm,\"$1–\")),\"link_open\"===o.type&&\"auto\"===o.info&&l--,\"link_close\"===o.type&&\"auto\"===o.info&&l++}}}),bC;function f(e,t){return r[t.toLowerCase()]}}function QC(){var O,C,w,k,I,R;return AC||(AC=1,O=M().isWhiteSpace,C=M().isPunctChar,w=M().isMdAsciiPunct,k=/['\"]/,I=/['\"]/g,R=\"’\",SC=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;0<=t;t--)if(\"inline\"===e.tokens[t].type&&k.test(e.tokens[t].content)){v=T=S=y=_=g=m=h=f=p=d=u=c=l=s=o=i=a=n=r=A=E=b=void 0;for(var r,n,a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b=e.tokens[t].children,E=e,S=[],A=0;A<b.length;A++){for(r=b[A],s=b[A].level,_=S.length-1;0<=_&&!(S[_].level<=s);_--);if(S.length=_+1,\"text\"===r.type){i=0,o=(n=r.content).length;e:for(;i<o&&(I.lastIndex=i,a=I.exec(n));){if(m=g=!0,i=a.index+1,y=\"'\"===a[0],c=32,0<=a.index-1)c=n.charCodeAt(a.index-1);else for(_=A-1;0<=_&&(\"softbreak\"!==b[_].type&&\"hardbreak\"!==b[_].type);_--)if(b[_].content){c=b[_].content.charCodeAt(b[_].content.length-1);break}if(u=32,i<o)u=n.charCodeAt(i);else for(_=A+1;_<b.length&&(\"softbreak\"!==b[_].type&&\"hardbreak\"!==b[_].type);_++)if(b[_].content){u=b[_].content.charCodeAt(0);break}if(d=w(c)||C(String.fromCharCode(c)),p=w(u)||C(String.fromCharCode(u)),f=O(c),!(h=O(u))&&(!p||f||d)||(m=!1),!f&&(!d||h||p)||(g=!1),34===u&&'\"'===a[0]&&48<=c&&c<=57&&(g=m=!1),m&&g&&(m=d,g=p),m||g){if(g)for(_=S.length-1;0<=_&&!((l=S[_]).level<s);_--)if(l.single===y&&S[_].level===s){l=S[_],v=y?(T=E.md.options.quotes[2],E.md.options.quotes[3]):(T=E.md.options.quotes[0],E.md.options.quotes[1]),r.content=N(r.content,a.index,v),b[l.token].content=N(b[l.token].content,l.pos,T),i+=v.length-1,l.token===A&&(i+=T.length-1),o=(n=r.content).length,S.length=_;continue e}m?S.push({token:A,pos:a.index,single:y,level:s}):g&&y&&(r.content=N(r.content,a.index,R))}else y&&(r.content=N(r.content,a.index,R))}}}}}),SC;function N(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}}function ZC(){return CC||(CC=1,e.prototype.attrIndex=function(e){var t,r,n;if(this.attrs)for(r=0,n=(t=this.attrs).length;r<n;r++)if(t[r][0]===e)return r;return-1},e.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},e.prototype.attrSet=function(e,t){var r=this.attrIndex(e),e=[e,t];r<0?this.attrPush(e):this.attrs[r]=e},e.prototype.attrGet=function(e){var e=this.attrIndex(e),t=null;return t=0<=e?this.attrs[e][1]:t},e.prototype.attrJoin=function(e,t){var r=this.attrIndex(e);r<0?this.attrPush([e,t]):this.attrs[r][1]=this.attrs[r][1]+\" \"+t},OC=e),OC;function e(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content=\"\",this.markup=\"\",this.info=\"\",this.meta=null,this.block=!1,this.hidden=!1}}function XC(){var t,r,y,n,a,e;return RC||(RC=1,t=YC(),r=[[\"normalize\",(hC||(hC=1,n=/\\r\\n?|\\n/g,a=/\\0/g,fC=function(e){var t=e.src.replace(n,\"\\n\");t=t.replace(a,\"�\"),e.src=t}),fC)],[\"block\",(gC||(gC=1,mC=function(e){var t;e.inlineMode?((t=new e.Token(\"inline\",\"\",0)).content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}),mC)],[\"inline\",(yC||(yC=1,_C=function(e){for(var t,r=e.tokens,n=0,a=r.length;n<a;n++)\"inline\"===(t=r[n]).type&&e.md.inline.parse(t.content,e.md,e.env,t.children)}),_C)],[\"linkify\",(vC||(vC=1,y=M().arrayReplaceAt,TC=function(e){var t,r,n,a,i,o,s,l,c,u,d,p,f,h,m,g,_=e.tokens;if(e.md.options.linkify)for(r=0,n=_.length;r<n;r++)if(\"inline\"===_[r].type&&e.md.linkify.pretest(_[r].content))for(f=0,t=(a=_[r].children).length-1;0<=t;t--)if(\"link_close\"===(o=a[t]).type)for(t--;a[t].level!==o.level&&\"link_open\"!==a[t].type;)t--;else if(\"html_inline\"===o.type&&(/^<a[>\\s]/i.test(o.content)&&0<f&&f--,/^<\\/a\\s*>/i.test(o.content))&&f++,!(0<f)&&\"text\"===o.type&&e.md.linkify.test(o.content)){for(c=o.content,g=e.md.linkify.match(c),s=[],p=o.level,l=d=0;l<g.length;l++)h=g[l].url,h=e.md.normalizeLink(h),e.md.validateLink(h)&&(m=g[l].text,m=g[l].schema?\"mailto:\"!==g[l].schema||/^mailto:/i.test(m)?e.md.normalizeLinkText(m):e.md.normalizeLinkText(\"mailto:\"+m).replace(/^mailto:/,\"\"):e.md.normalizeLinkText(\"http://\"+m).replace(/^http:\\/\\//,\"\"),d<(u=g[l].index)&&((i=new e.Token(\"text\",\"\",0)).content=c.slice(d,u),i.level=p,s.push(i)),(i=new e.Token(\"link_open\",\"a\",1)).attrs=[[\"href\",h]],i.level=p++,i.markup=\"linkify\",i.info=\"auto\",s.push(i),(i=new e.Token(\"text\",\"\",0)).content=m,i.level=p,s.push(i),(i=new e.Token(\"link_close\",\"a\",-1)).level=--p,i.markup=\"linkify\",i.info=\"auto\",s.push(i),d=g[l].lastIndex);d<c.length&&((i=new e.Token(\"text\",\"\",0)).content=c.slice(d),i.level=p,s.push(i)),_[r].children=a=y(a,t,s)}}),TC)],[\"replacements\",JC()],[\"smartquotes\",QC()]],i.prototype.process=function(e){for(var t=this.ruler.getRules(\"\"),r=0,n=t.length;r<n;r++)t[r](e)},i.prototype.State=(kC||(kC=1,e=ZC(),o.prototype.Token=e,wC=o),wC),IC=i),IC;function i(){this.ruler=new t;for(var e=0;e<r.length;e++)this.ruler.push(r[e][0],r[e][1])}function o(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}}function ew(){var o;return GC||(GC=1,o=M().isSpace,HC=function(e,t,r,n){var a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b,E,S,A,O,C,w=!1,k=!0;if(4<=e.sCount[t]-e.blkIndent)return!1;if(0<=e.listIndent&&4<=e.sCount[t]-e.listIndent&&e.sCount[t]<e.blkIndent)return!1;if(n&&\"paragraph\"===e.parentType&&e.sCount[t]>=e.blkIndent&&(w=!0),0<=(b=D(e,t))){if(l=!0,S=e.bMarks[t]+e.tShift[t],g=Number(e.src.slice(S,b-1)),w&&1!==g)return!1}else{if(!(0<=(b=P(e,t))))return!1;l=!1}if(w&&e.skipSpaces(b)>=e.eMarks[t])return!1;if(d=e.src.charCodeAt(b-1),!n){for(w=e.tokens.length,l?(C=e.push(\"ordered_list_open\",\"ol\",1),1!==g&&(C.attrs=[[\"start\",g]])):C=e.push(\"bullet_list_open\",\"ul\",1),C.map=n=[t,0],C.markup=String.fromCharCode(d),f=t,E=!1,O=e.md.block.ruler.getRules(\"list\"),g=e.parentType,e.parentType=\"list\";f<r;){for(v=b,p=e.eMarks[f],s=h=e.sCount[f]+b-(e.bMarks[t]+e.tShift[t]);v<p;){if(9===(a=e.src.charCodeAt(v)))h+=4-(h+e.bsCount[f])%4;else{if(32!==a)break;h++}v++}if(s=s+(s=4<(s=p<=(i=v)?1:h-s)?1:s),(C=e.push(\"list_item_open\",\"li\",1)).markup=String.fromCharCode(d),C.map=c=[t,0],l&&(C.info=e.src.slice(S,b-1)),T=e.tight,y=e.tShift[t],_=e.sCount[t],m=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=s,e.tight=!0,e.tShift[t]=i-e.bMarks[t],e.sCount[t]=h,p<=i&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,r):e.md.block.tokenize(e,t,r,!0),e.tight&&!E||(k=!1),E=1<e.line-t&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=m,e.tShift[t]=y,e.sCount[t]=_,e.tight=T,(C=e.push(\"list_item_close\",\"li\",-1)).markup=String.fromCharCode(d),f=t=e.line,c[1]=f,e.bMarks[t],r<=f)break;if(e.sCount[f]<e.blkIndent)break;if(4<=e.sCount[t]-e.blkIndent)break;for(A=!1,o=0,u=O.length;o<u;o++)if(O[o](e,f,r,!0)){A=!0;break}if(A)break;if(l){if((b=D(e,f))<0)break;S=e.bMarks[f]+e.tShift[f]}else if((b=P(e,f))<0)break;if(d!==e.src.charCodeAt(b-1))break}if((C=l?e.push(\"ordered_list_close\",\"ol\",-1):e.push(\"bullet_list_close\",\"ul\",-1)).markup=String.fromCharCode(d),n[1]=f,e.line=f,e.parentType=g,k)for(var I=e,n=w,R=I.level+2,N=n+2,M=I.tokens.length-2;N<M;N++)I.tokens[N].level===R&&\"paragraph_open\"===I.tokens[N].type&&(I.tokens[N+2].hidden=!0,I.tokens[N].hidden=!0,N+=2)}return!0}),HC;function P(e,t){var r=e.bMarks[t]+e.tShift[t],t=e.eMarks[t],n=e.src.charCodeAt(r++);return 42!==n&&45!==n&&43!==n||r<t&&(n=e.src.charCodeAt(r),!o(n))?-1:r}function D(e,t){var r,n=e.bMarks[t]+e.tShift[t],a=n,i=e.eMarks[t];if(i<=a+1)return-1;if((r=e.src.charCodeAt(a++))<48||57<r)return-1;for(;;){if(i<=a)return-1;if(!(48<=(r=e.src.charCodeAt(a++))&&r<=57)){if(41===r||46===r)break;return-1}if(10<=a-n)return-1}return a<i&&(r=e.src.charCodeAt(a),!o(r))?-1:a}}var tw,rw,nw,aw,iw,ow,sw,lw,cw,uw,dw,pw,fw,hw,mw,gw,_w,yw,Tw,vw,bw,Ew={};function Sw(){var e,t,r;return tw||(tw=1,r=\"<[A-Za-z][A-Za-z0-9\\\\-]*(?:\\\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\\\s*=\\\\s*(?:[^\\\"'=<>`\\\\x00-\\\\x20]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*\\\\/?>\",e=\"<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>\",t=new RegExp(\"^(?:\"+r+\"|\"+e+\"|\\x3c!----\\x3e|\\x3c!--(?:-?[^>-])(?:-?[^-])*--\\x3e|<[?][\\\\s\\\\S]*?[?]>|<![A-Z]+\\\\s+[^>]*>|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>)\"),r=new RegExp(\"^(?:\"+r+\"|\"+e+\")\"),Ew.HTML_TAG_RE=t,Ew.HTML_OPEN_CLOSE_TAG_RE=r),Ew}function Aw(){var e,t,c;return nw||(nw=1,WC||(WC=1,zC=[\"address\",\"article\",\"aside\",\"base\",\"basefont\",\"blockquote\",\"body\",\"caption\",\"center\",\"col\",\"colgroup\",\"dd\",\"details\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"frame\",\"frameset\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hr\",\"html\",\"iframe\",\"legend\",\"li\",\"link\",\"main\",\"menu\",\"menuitem\",\"nav\",\"noframes\",\"ol\",\"optgroup\",\"option\",\"p\",\"param\",\"section\",\"source\",\"summary\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"title\",\"tr\",\"track\",\"ul\"]),e=zC,t=Sw().HTML_OPEN_CLOSE_TAG_RE,c=[[/^<(script|pre|style|textarea)(?=(\\s|>|$))/i,/<\\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\\?/,/\\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\\[CDATA\\[/,/\\]\\]>/,!0],[new RegExp(\"^</?(\"+e.join(\"|\")+\")(?=(\\\\s|/?>|$))\",\"i\"),/^$/,!0],[new RegExp(t.source+\"\\\\s*$\"),/^$/,!1]],rw=function(e,t,r,n){var a,i,o,s=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(s))return!1;for(o=e.src.slice(s,l),a=0;a<c.length&&!c[a][0].test(o);a++);if(a===c.length)return!1;if(n)return c[a][2];if(i=t+1,!c[a][1].test(o))for(;i<r&&!(e.sCount[i]<e.blkIndent);i++)if(s=e.bMarks[i]+e.tShift[i],l=e.eMarks[i],o=e.src.slice(s,l),c[a][1].test(o)){0!==o.length&&i++;break}return e.line=i,(n=e.push(\"html_block\",\"\",0)).map=[t,i],n.content=e.getLines(t,i,e.blkIndent,!0),!0}),rw}function Ow(){var t,r,l,S,A,c,C,v,n,p;return fw||(fw=1,t=YC(),r=[[\"table\",(MC||(MC=1,v=M().isSpace,NC=function(e,t,r,n){var a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T;if(r<t+2)return!1;if(e.sCount[c=t+1]<e.blkIndent)return!1;if(4<=e.sCount[c]-e.blkIndent)return!1;if((o=e.bMarks[c]+e.tShift[c])>=e.eMarks[c])return!1;if(124!==(y=e.src.charCodeAt(o++))&&45!==y&&58!==y)return!1;if(o>=e.eMarks[c])return!1;if(124!==(T=e.src.charCodeAt(o++))&&45!==T&&58!==T&&!v(T))return!1;if(45===y&&v(T))return!1;for(;o<e.eMarks[c];){if(124!==(a=e.src.charCodeAt(o))&&45!==a&&58!==a&&!v(a))return!1;o++}for(u=(i=b(e,t+1)).split(\"|\"),f=[],s=0;s<u.length;s++){if(!(h=u[s].trim())){if(0===s||s===u.length-1)continue;return!1}if(!/^:?-+:?$/.test(h))return!1;58===h.charCodeAt(h.length-1)?f.push(58===h.charCodeAt(0)?\"center\":\"right\"):58===h.charCodeAt(0)?f.push(\"left\"):f.push(\"\")}if(-1===(i=b(e,t).trim()).indexOf(\"|\"))return!1;if(4<=e.sCount[t]-e.blkIndent)return!1;if((u=E(i)).length&&\"\"===u[0]&&u.shift(),u.length&&\"\"===u[u.length-1]&&u.pop(),0===(d=u.length)||d!==f.length)return!1;if(!n){for(y=e.parentType,e.parentType=\"table\",_=e.md.block.ruler.getRules(\"blockquote\"),(p=e.push(\"table_open\",\"table\",1)).map=T=[t,0],(p=e.push(\"thead_open\",\"thead\",1)).map=[t,t+1],(p=e.push(\"tr_open\",\"tr\",1)).map=[t,t+1],s=0;s<u.length;s++)p=e.push(\"th_open\",\"th\",1),f[s]&&(p.attrs=[[\"style\",\"text-align:\"+f[s]]]),(p=e.push(\"inline\",\"\",0)).content=u[s].trim(),p.children=[],p=e.push(\"th_close\",\"th\",-1);for(p=e.push(\"tr_close\",\"tr\",-1),p=e.push(\"thead_close\",\"thead\",-1),c=t+2;c<r&&!(e.sCount[c]<e.blkIndent);c++){for(g=!1,s=0,l=_.length;s<l;s++)if(_[s](e,c,r,!0)){g=!0;break}if(g)break;if(!(i=b(e,c).trim()))break;if(4<=e.sCount[c]-e.blkIndent)break;for((u=E(i)).length&&\"\"===u[0]&&u.shift(),u.length&&\"\"===u[u.length-1]&&u.pop(),c===t+2&&((p=e.push(\"tbody_open\",\"tbody\",1)).map=m=[t+2,0]),(p=e.push(\"tr_open\",\"tr\",1)).map=[c,c+1],s=0;s<d;s++)p=e.push(\"td_open\",\"td\",1),f[s]&&(p.attrs=[[\"style\",\"text-align:\"+f[s]]]),(p=e.push(\"inline\",\"\",0)).content=u[s]?u[s].trim():\"\",p.children=[],p=e.push(\"td_close\",\"td\",-1);p=e.push(\"tr_close\",\"tr\",-1)}m&&(p=e.push(\"tbody_close\",\"tbody\",-1),m[1]=c),p=e.push(\"table_close\",\"table\",-1),T[1]=c,e.parentType=y,e.line=c}return!0}),NC),[\"paragraph\",\"reference\"]],[\"code\",(DC||(DC=1,PC=function(e,t,r){var n,a,i;if(e.sCount[t]-e.blkIndent<4)return!1;for(a=n=t+1;n<r;)if(e.isEmpty(n))n++;else{if(!(4<=e.sCount[n]-e.blkIndent))break;a=++n}return e.line=a,(i=e.push(\"code_block\",\"code\",0)).content=e.getLines(t,a,4+e.blkIndent,!1)+\"\\n\",i.map=[t,e.line],!0}),PC)],[\"fence\",(LC||(LC=1,xC=function(e,t,r,n){var a,i,o,s,l,c,u=!1,d=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(p<d+3)return!1;if(126!==(a=e.src.charCodeAt(d))&&96!==a)return!1;if((i=(d=e.skipChars(l=d,a))-l)<3)return!1;if(c=e.src.slice(l,d),o=e.src.slice(d,p),96===a&&0<=o.indexOf(String.fromCharCode(a)))return!1;if(!n){for(s=t;!(r<=++s)&&!((d=l=e.bMarks[s]+e.tShift[s])<(p=e.eMarks[s])&&e.sCount[s]<e.blkIndent);)if(e.src.charCodeAt(d)===a&&!(4<=e.sCount[s]-e.blkIndent||(d=e.skipChars(d,a))-l<i||e.skipSpaces(d)<p)){u=!0;break}i=e.sCount[t],e.line=s+(u?1:0),(n=e.push(\"fence\",\"code\",0)).info=o,n.content=e.getLines(t+1,s,i,!0),n.markup=c,n.map=[t,e.line]}return!0}),xC),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"blockquote\",(UC||(UC=1,C=M().isSpace,FC=function(e,t,r,n){var a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b,E,S=e.lineMax,A=e.bMarks[t]+e.tShift[t],O=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(62!==e.src.charCodeAt(A++))return!1;if(!n){for(s=p=e.sCount[t]+1,32===e.src.charCodeAt(A)?(A++,s++,p++,y=!(a=!1)):9===e.src.charCodeAt(A)?(y=!0,a=(e.bsCount[t]+p)%4!=3||(A++,s++,p++,!1)):y=!1,f=[e.bMarks[t]],e.bMarks[t]=A;A<O&&(i=e.src.charCodeAt(A),C(i));)9===i?p+=4-(p+e.bsCount[t]+(a?1:0))%4:p++,A++;for(h=[e.bsCount[t]],e.bsCount[t]=e.sCount[t]+1+(y?1:0),c=O<=A,g=[e.sCount[t]],e.sCount[t]=p-s,_=[e.tShift[t]],e.tShift[t]=A-e.bMarks[t],v=e.md.block.ruler.getRules(\"blockquote\"),n=e.parentType,e.parentType=\"blockquote\",d=t+1;d<r&&(E=e.sCount[d]<e.blkIndent,A=e.bMarks[d]+e.tShift[d],!((O=e.eMarks[d])<=A));d++)if(62!==e.src.charCodeAt(A++)||E){if(c)break;for(T=!1,o=0,l=v.length;o<l;o++)if(v[o](e,d,r,!0)){T=!0;break}if(T){e.lineMax=d,0!==e.blkIndent&&(f.push(e.bMarks[d]),h.push(e.bsCount[d]),_.push(e.tShift[d]),g.push(e.sCount[d]),e.sCount[d]-=e.blkIndent);break}f.push(e.bMarks[d]),h.push(e.bsCount[d]),_.push(e.tShift[d]),g.push(e.sCount[d]),e.sCount[d]=-1}else{for(s=p=e.sCount[d]+1,32===e.src.charCodeAt(A)?(A++,s++,p++,y=!(a=!1)):9===e.src.charCodeAt(A)?(y=!0,a=(e.bsCount[d]+p)%4!=3||(A++,s++,p++,!1)):y=!1,f.push(e.bMarks[d]),e.bMarks[d]=A;A<O&&(i=e.src.charCodeAt(A),C(i));)9===i?p+=4-(p+e.bsCount[d]+(a?1:0))%4:p++,A++;c=O<=A,h.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(y?1:0),g.push(e.sCount[d]),e.sCount[d]=p-s,_.push(e.tShift[d]),e.tShift[d]=A-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(b=e.push(\"blockquote_open\",\"blockquote\",1)).markup=\">\",b.map=u=[t,0],e.md.block.tokenize(e,t,d),(b=e.push(\"blockquote_close\",\"blockquote\",-1)).markup=\">\",e.lineMax=S,e.parentType=n,u[1]=e.line,o=0;o<_.length;o++)e.bMarks[o+t]=f[o],e.tShift[o+t]=_[o],e.sCount[o+t]=g[o],e.bsCount[o+t]=h[o];e.blkIndent=m}return!0}),FC),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"hr\",(jC||(jC=1,c=M().isSpace,BC=function(e,t,r,n){var a,i,o,s=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(42!==(a=e.src.charCodeAt(s++))&&45!==a&&95!==a)return!1;for(i=1;s<l;){if((o=e.src.charCodeAt(s++))!==a&&!c(o))return!1;o===a&&i++}return!(i<3||(n||(e.line=t+1,(n=e.push(\"hr\",\"hr\",0)).map=[t,e.line],n.markup=Array(i+1).join(String.fromCharCode(a))),0))}),BC),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"list\",ew(),[\"paragraph\",\"reference\",\"blockquote\"]],[\"reference\",(qC||(qC=1,S=M().normalizeReference,A=M().isSpace,VC=function(e,t,r,n){var a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T=0,v=e.bMarks[t]+e.tShift[t],b=e.eMarks[t],E=t+1;if(4<=e.sCount[t]-e.blkIndent)return!1;if(91!==e.src.charCodeAt(v))return!1;for(;++v<b;)if(93===e.src.charCodeAt(v)&&92!==e.src.charCodeAt(v-1)){if(v+1===b)return!1;if(58!==e.src.charCodeAt(v+1))return!1;break}for(s=e.lineMax,_=e.md.block.ruler.getRules(\"reference\"),p=e.parentType,e.parentType=\"reference\";E<s&&!e.isEmpty(E);E++)if(!(3<e.sCount[E]-e.blkIndent||e.sCount[E]<0)){for(g=!1,c=0,u=_.length;c<u;c++)if(_[c](e,E,s,!0)){g=!0;break}if(g)break}for(b=(m=e.getLines(t,E,e.blkIndent,!1).trim()).length,v=1;v<b;v++){if(91===(a=m.charCodeAt(v)))return!1;if(93===a){d=v;break}(10===a||92===a&&++v<b&&10===m.charCodeAt(v))&&T++}if(d<0||58!==m.charCodeAt(d+1))return!1;for(v=d+2;v<b;v++)if(10===(a=m.charCodeAt(v)))T++;else if(!A(a))break;if(!(f=e.md.helpers.parseLinkDestination(m,v,b)).ok)return!1;if(l=e.md.normalizeLink(f.str),!e.md.validateLink(l))return!1;for(v=f.pos,o=T+=f.lines,h=i=v;v<b;v++)if(10===(a=m.charCodeAt(v)))T++;else if(!A(a))break;for(f=e.md.helpers.parseLinkTitle(m,v,b),v<b&&h!==v&&f.ok?(y=f.str,v=f.pos,T+=f.lines):(y=\"\",v=i,T=o);v<b&&(a=m.charCodeAt(v),A(a));)v++;if(v<b&&10!==m.charCodeAt(v)&&y)for(y=\"\",v=i,T=o;v<b&&(a=m.charCodeAt(v),A(a));)v++;return!(v<b&&10!==m.charCodeAt(v)||!(h=S(m.slice(1,d)))||(n||(void 0===e.env.references&&(e.env.references={}),void 0===e.env.references[h]&&(e.env.references[h]={title:y,href:l}),e.parentType=p,e.line=t+T+1),0))}),VC)],[\"html_block\",Aw(),[\"paragraph\",\"reference\",\"blockquote\"]],[\"heading\",(iw||(iw=1,l=M().isSpace,aw=function(e,t,r,n){var a,i,o=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(35!==(a=e.src.charCodeAt(o))||s<=o)return!1;for(i=1,a=e.src.charCodeAt(++o);35===a&&o<s&&i<=6;)i++,a=e.src.charCodeAt(++o);return!(6<i||o<s&&!l(a)||(n||(s=e.skipSpacesBack(s,o),o<(n=e.skipCharsBack(s,35,o))&&l(e.src.charCodeAt(n-1))&&(s=n),e.line=t+1,(n=e.push(\"heading_open\",\"h\"+String(i),1)).markup=\"########\".slice(0,i),n.map=[t,e.line],(n=e.push(\"inline\",\"\",0)).content=e.src.slice(o,s).trim(),n.map=[t,e.line],n.children=[],(n=e.push(\"heading_close\",\"h\"+String(i),-1)).markup=\"########\".slice(0,i)),0))}),aw),[\"paragraph\",\"reference\",\"blockquote\"]],[\"lheading\",(sw||(sw=1,ow=function(e,t,r){var n,a,i,o,s,l,c,u,d,p,f=t+1,h=e.md.block.ruler.getRules(\"paragraph\");if(4<=e.sCount[t]-e.blkIndent)return!1;for(p=e.parentType,e.parentType=\"paragraph\";f<r&&!e.isEmpty(f);f++)if(!(3<e.sCount[f]-e.blkIndent)){if(e.sCount[f]>=e.blkIndent&&(l=e.bMarks[f]+e.tShift[f])<(c=e.eMarks[f])&&(45===(d=e.src.charCodeAt(l))||61===d)&&(l=e.skipChars(l,d),c<=e.skipSpaces(l))){u=61===d?1:2;break}if(!(e.sCount[f]<0)){for(a=!1,i=0,o=h.length;i<o;i++)if(h[i](e,f,r,!0)){a=!0;break}if(a)break}}return!!u&&(n=e.getLines(t,f,e.blkIndent,!1).trim(),e.line=f+1,(s=e.push(\"heading_open\",\"h\"+String(u),1)).markup=String.fromCharCode(d),s.map=[t,e.line],(s=e.push(\"inline\",\"\",0)).content=n,s.map=[t,e.line-1],s.children=[],(s=e.push(\"heading_close\",\"h\"+String(u),-1)).markup=String.fromCharCode(d),e.parentType=p,!0)}),ow)],[\"paragraph\",(cw||(cw=1,lw=function(e,t){var r,n,a,i,o,s=t+1,l=e.md.block.ruler.getRules(\"paragraph\"),c=e.lineMax,u=e.parentType;for(e.parentType=\"paragraph\";s<c&&!e.isEmpty(s);s++)if(!(3<e.sCount[s]-e.blkIndent||e.sCount[s]<0)){for(n=!1,a=0,i=l.length;a<i;a++)if(l[a](e,s,c,!0)){n=!0;break}if(n)break}return r=e.getLines(t,s,e.blkIndent,!1).trim(),e.line=s,(o=e.push(\"paragraph_open\",\"p\",1)).map=[t,e.line],(o=e.push(\"inline\",\"\",0)).content=r,o.map=[t,e.line],o.children=[],o=e.push(\"paragraph_close\",\"p\",-1),e.parentType=u,!0}),lw)]],e.prototype.tokenize=function(e,t,r){for(var n,a=this.ruler.getRules(\"\"),i=a.length,o=t,s=!1,l=e.md.options.maxNesting;o<r&&(e.line=o=e.skipEmptyLines(o),!(r<=o))&&!(e.sCount[o]<e.blkIndent);){if(e.level>=l){e.line=r;break}for(n=0;n<i&&!a[n](e,o,r,!1);n++);e.tight=!s,e.isEmpty(e.line-1)&&(s=!0),(o=e.line)<r&&e.isEmpty(o)&&(s=!0,o++,e.line=o)}},e.prototype.parse=function(e,t,r,n){e&&(e=new this.State(e,t,r,n),this.tokenize(e,e.line,e.lineMax))},e.prototype.State=(dw||(dw=1,n=ZC(),p=M().isSpace,a.prototype.push=function(e,t,r){e=new n(e,t,r);return e.block=!0,r<0&&this.level--,e.level=this.level,0<r&&this.level++,this.tokens.push(e),e},a.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},a.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},a.prototype.skipSpaces=function(e){for(var t,r=this.src.length;e<r&&(t=this.src.charCodeAt(e),p(t));e++);return e},a.prototype.skipSpacesBack=function(e,t){if(!(e<=t))for(;t<e;)if(!p(this.src.charCodeAt(--e)))return e+1;return e},a.prototype.skipChars=function(e,t){for(var r=this.src.length;e<r&&this.src.charCodeAt(e)===t;e++);return e},a.prototype.skipCharsBack=function(e,t,r){if(!(e<=r))for(;r<e;)if(t!==this.src.charCodeAt(--e))return e+1;return e},a.prototype.getLines=function(e,t,r,n){var a,i,o,s,l,c,u,d=e;if(t<=e)return\"\";for(c=new Array(t-e),a=0;d<t;d++,a++){for(i=0,u=s=this.bMarks[d],l=d+1<t||n?this.eMarks[d]+1:this.eMarks[d];s<l&&i<r;){if(o=this.src.charCodeAt(s),p(o))9===o?i+=4-(i+this.bsCount[d])%4:i++;else{if(!(s-u<this.tShift[d]))break;i++}s++}c[a]=r<i?new Array(i-r+1).join(\" \")+this.src.slice(s,l):this.src.slice(s,l)}return c.join(\"\")},a.prototype.Token=n,uw=a),uw),pw=e),pw;function b(e,t){var r=e.bMarks[t]+e.tShift[t],t=e.eMarks[t];return e.src.substr(r,t-r)}function E(e){for(var t=[],r=0,n=e.length,a=!1,i=0,o=\"\",s=e.charCodeAt(r);r<n;)124===s&&(i=a?(o+=e.substring(i,r-1),r):(t.push(o+e.substring(i,r)),o=\"\",r+1)),a=92===s,s=e.charCodeAt(++r);return t.push(o+e.substring(i)),t}function e(){this.ruler=new t;for(var e=0;e<r.length;e++)this.ruler.push(r[e][0],r[e][1],{alt:(r[e][2]||[]).slice()})}function a(e,t,r,n){var a,i,o,s,l,c,u,d;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType=\"root\",this.level=0,this.result=\"\",d=!1,o=s=c=u=0,l=(i=this.src).length;s<l;s++){if(a=i.charCodeAt(s),!d){if(p(a)){c++,9===a?u+=4-u%4:u++;continue}d=!0}10!==a&&s!==l-1||(10!==a&&s++,this.bMarks.push(o),this.eMarks.push(s),this.tShift.push(c),this.sCount.push(u),this.bsCount.push(0),d=!1,u=c=0,o=s+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}}function Cw(){return mw||(mw=1,hw=function(e,t){for(var r=e.pos;r<e.posMax&&!function(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return 1;default:return}}(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}),hw}var ww,kw={};function Iw(){return ww||(ww=1,kw.tokenize=function(e,t){var r,n,a,i,o=e.pos,s=e.src.charCodeAt(o);if(t)return!1;if(126!==s)return!1;if(a=(n=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(s),a<2)return!1;for(a%2&&(e.push(\"text\",\"\",0).content=i,a--),r=0;r<a;r+=2)e.push(\"text\",\"\",0).content=i+i,e.delimiters.push({marker:s,length:0,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},kw.postProcess=function(e){var t,r=e.tokens_meta,n=e.tokens_meta.length;for(a(e,e.delimiters),t=0;t<n;t++)r[t]&&r[t].delimiters&&a(e,r[t].delimiters)}),kw;function a(e,t){for(var r,n,a,i,o=[],s=t.length,l=0;l<s;l++)126===(n=t[l]).marker&&-1!==n.end&&(a=t[n.end],(i=e.tokens[n.token]).type=\"s_open\",i.tag=\"s\",i.nesting=1,i.markup=\"~~\",i.content=\"\",(i=e.tokens[a.token]).type=\"s_close\",i.tag=\"s\",i.nesting=-1,i.markup=\"~~\",i.content=\"\",\"text\"===e.tokens[a.token-1].type)&&\"~\"===e.tokens[a.token-1].content&&o.push(a.token-1);for(;o.length;){for(r=(l=o.pop())+1;r<e.tokens.length&&\"s_close\"===e.tokens[r].type;)r++;l!==--r&&(i=e.tokens[r],e.tokens[r]=e.tokens[l],e.tokens[l]=i)}}}var Rw,Nw,Mw,Pw,Dw,xw,Lw,Fw,Uw,Bw,jw,Hw,Gw,Vw,qw,zw,Ww,$w,Kw,Yw,Jw,Qw,Zw,Xw,ek,tk,rk,nk,ak,ik,ok,sk,lk,ck,uk,dk,pk={};function fk(){return Rw||(Rw=1,pk.tokenize=function(e,t){var r,n,a=e.pos,i=e.src.charCodeAt(a);if(t)return!1;if(95!==i&&42!==i)return!1;for(n=e.scanDelims(e.pos,42===i),r=0;r<n.length;r++)e.push(\"text\",\"\",0).content=String.fromCharCode(i),e.delimiters.push({marker:i,length:n.length,token:e.tokens.length-1,end:-1,open:n.can_open,close:n.can_close});return e.pos+=n.length,!0},pk.postProcess=function(e){var t,r=e.tokens_meta,n=e.tokens_meta.length;for(a(e,e.delimiters),t=0;t<n;t++)r[t]&&r[t].delimiters&&a(e,r[t].delimiters)}),pk;function a(e,t){for(var r,n,a,i,o,s=t.length-1;0<=s;s--)95!==(r=t[s]).marker&&42!==r.marker||-1!==r.end&&(n=t[r.end],o=0<s&&t[s-1].end===r.end+1&&t[s-1].marker===r.marker&&t[s-1].token===r.token-1&&t[r.end+1].token===n.token+1,i=String.fromCharCode(r.marker),(a=e.tokens[r.token]).type=o?\"strong_open\":\"em_open\",a.tag=o?\"strong\":\"em\",a.nesting=1,a.markup=o?i+i:i,a.content=\"\",(a=e.tokens[n.token]).type=o?\"strong_close\":\"em_close\",a.tag=o?\"strong\":\"em\",a.nesting=-1,a.markup=o?i+i:i,a.content=\"\",o)&&(e.tokens[t[s-1].token].content=\"\",e.tokens[t[r.end+1].token].content=\"\",s--)}}function hk(){var t,r,i,o,s,l,c,u,a,d,p,f,h,m,g,_,n,y,T,v,b;return Kw||(Kw=1,t=YC(),r=[[\"text\",Cw()],[\"newline\",(_w||(_w=1,_=M().isSpace,gw=function(e,t){var r,n,a,i=e.pos;if(10!==e.src.charCodeAt(i))return!1;if(r=e.pending.length-1,n=e.posMax,!t)if(0<=r&&32===e.pending.charCodeAt(r))if(1<=r&&32===e.pending.charCodeAt(r-1)){for(a=r-1;1<=a&&32===e.pending.charCodeAt(a-1);)a--;e.pending=e.pending.slice(0,a),e.push(\"hardbreak\",\"br\",0)}else e.pending=e.pending.slice(0,-1),e.push(\"softbreak\",\"br\",0);else e.push(\"softbreak\",\"br\",0);for(i++;i<n&&_(e.src.charCodeAt(i));)i++;return e.pos=i,!0}),gw)],[\"escape\",function(){if(!Tw){Tw=1;for(var i=M().isSpace,o=[],e=0;e<256;e++)o.push(0);\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach(function(e){o[e.charCodeAt(0)]=1}),yw=function(e,t){var r,n=e.pos,a=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n<a){if((r=e.src.charCodeAt(n))<256&&0!==o[r])return t||(e.pending+=e.src[n]),e.pos+=2,!0;if(10===r){for(t||e.push(\"hardbreak\",\"br\",0),n++;n<a&&(r=e.src.charCodeAt(n),i(r));)n++;return e.pos=n,!0}}return t||(e.pending+=\"\\\\\"),e.pos++,!0}}return yw}()],[\"backticks\",(bw||(bw=1,vw=function(e,t){var r,n,a,i,o,s,l,c,u=e.pos;if(96!==e.src.charCodeAt(u))return!1;for(r=u,u++,n=e.posMax;u<n&&96===e.src.charCodeAt(u);)u++;if(l=(a=e.src.slice(r,u)).length,!(e.backticksScanned&&(e.backticks[l]||0)<=r)){for(s=u;-1!==(o=e.src.indexOf(\"`\",s));){for(s=o+1;s<n&&96===e.src.charCodeAt(s);)s++;if((c=s-o)===l)return t||((i=e.push(\"code_inline\",\"code\",0)).markup=a,i.content=e.src.slice(u,o).replace(/\\n/g,\" \").replace(/^ (.+) $/,\"$1\")),e.pos=s,!0;e.backticks[c]=o}e.backticksScanned=!0}return t||(e.pending+=a),e.pos+=l,!0}),vw)],[\"strikethrough\",Iw().tokenize],[\"emphasis\",fk().tokenize],[\"link\",(Mw||(Mw=1,m=M().normalizeReference,g=M().isSpace,Nw=function(e,t){var r,n,a,i,o,s,l=\"\",c=\"\",u=e.pos,d=e.posMax,p=e.pos,f=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(i=e.pos+1,(a=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((o=a+1)<d&&40===e.src.charCodeAt(o)){for(f=!1,o++;o<d&&(r=e.src.charCodeAt(o),g(r)||10===r);o++);if(d<=o)return!1;if(p=o,(s=e.md.helpers.parseLinkDestination(e.src,o,e.posMax)).ok){for(l=e.md.normalizeLink(s.str),e.md.validateLink(l)?o=s.pos:l=\"\",p=o;o<d&&(r=e.src.charCodeAt(o),g(r)||10===r);o++);if(s=e.md.helpers.parseLinkTitle(e.src,o,e.posMax),o<d&&p!==o&&s.ok)for(c=s.str,o=s.pos;o<d&&(r=e.src.charCodeAt(o),g(r)||10===r);o++);}(d<=o||41!==e.src.charCodeAt(o))&&(f=!0),o++}if(f){if(void 0===e.env.references)return!1;if(o<d&&91===e.src.charCodeAt(o)&&(p=o+1,0<=(o=e.md.helpers.parseLinkLabel(e,o)))?n=e.src.slice(p,o++):o=a+1,n=n||e.src.slice(i,a),!(s=e.env.references[m(n)]))return e.pos=u,!1;l=s.href,c=s.title}return t||(e.pos=i,e.posMax=a,e.push(\"link_open\",\"a\",1).attrs=f=[[\"href\",l]],c&&f.push([\"title\",c]),e.md.inline.tokenize(e),e.push(\"link_close\",\"a\",-1)),e.pos=o,e.posMax=d,!0}),Nw)],[\"image\",(Dw||(Dw=1,f=M().normalizeReference,h=M().isSpace,Pw=function(e,t){var r,n,a,i,o,s,l,c,u=\"\",d=e.pos,p=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(a=e.pos+2,(n=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((i=n+1)<p&&40===e.src.charCodeAt(i)){for(i++;i<p&&(r=e.src.charCodeAt(i),h(r)||10===r);i++);if(p<=i)return!1;for(c=i,(o=e.md.helpers.parseLinkDestination(e.src,i,e.posMax)).ok&&(u=e.md.normalizeLink(o.str),e.md.validateLink(u)?i=o.pos:u=\"\"),c=i;i<p&&(r=e.src.charCodeAt(i),h(r)||10===r);i++);if(o=e.md.helpers.parseLinkTitle(e.src,i,e.posMax),i<p&&c!==i&&o.ok)for(s=o.str,i=o.pos;i<p&&(r=e.src.charCodeAt(i),h(r)||10===r);i++);else s=\"\";if(p<=i||41!==e.src.charCodeAt(i))return e.pos=d,!1;i++}else{if(void 0===e.env.references)return!1;if(i<p&&91===e.src.charCodeAt(i)&&(c=i+1,0<=(i=e.md.helpers.parseLinkLabel(e,i)))?l=e.src.slice(c,i++):i=n+1,l=l||e.src.slice(a,n),!(o=e.env.references[f(l)]))return e.pos=d,!1;u=o.href,s=o.title}return t||(c=e.src.slice(a,n),e.md.inline.parse(c,e.md,e.env,l=[]),(d=e.push(\"image\",\"img\",0)).attrs=o=[[\"src\",u],[\"alt\",\"\"]],d.children=l,d.content=c,s&&o.push([\"title\",s])),e.pos=i,e.posMax=p,!0}),Pw)],[\"autolink\",(Lw||(Lw=1,d=/^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,p=/^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/,xw=function(e,t){var r,n,a,i,o,s=e.pos;if(60!==e.src.charCodeAt(s))return!1;for(i=e.pos,o=e.posMax;;){if(++s>=o)return!1;if(60===(a=e.src.charCodeAt(s)))return!1;if(62===a)break}return i=e.src.slice(i+1,s),p.test(i)?(r=e.md.normalizeLink(i),!!e.md.validateLink(r)&&(t||((n=e.push(\"link_open\",\"a\",1)).attrs=[[\"href\",r]],n.markup=\"autolink\",n.info=\"auto\",(n=e.push(\"text\",\"\",0)).content=e.md.normalizeLinkText(i),(n=e.push(\"link_close\",\"a\",-1)).markup=\"autolink\",n.info=\"auto\"),e.pos+=i.length+2,!0)):!!d.test(i)&&(r=e.md.normalizeLink(\"mailto:\"+i),!!e.md.validateLink(r))&&(t||((n=e.push(\"link_open\",\"a\",1)).attrs=[[\"href\",r]],n.markup=\"autolink\",n.info=\"auto\",(n=e.push(\"text\",\"\",0)).content=e.md.normalizeLinkText(i),(n=e.push(\"link_close\",\"a\",-1)).markup=\"autolink\",n.info=\"auto\"),e.pos+=i.length+2,!0)}),xw)],[\"html_inline\",(Uw||(Uw=1,a=Sw().HTML_TAG_RE,Fw=function(e,t){var r,n=e.pos;return!(!e.md.options.html||(r=e.posMax,60!==e.src.charCodeAt(n))||r<=n+2||!(33===(r=e.src.charCodeAt(n+1))||63===r||47===r||(r=r,97<=(r|=32)&&r<=122))||!(r=e.src.slice(n).match(a))||(t||(e.push(\"html_inline\",\"\",0).content=e.src.slice(n,n+r[0].length)),e.pos+=r[0].length,0))}),Fw)],[\"entity\",(jw||(jw=1,i=O1(),o=M().has,s=M().isValidEntityCode,l=M().fromCodePoint,c=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,u=/^&([a-z][a-z0-9]{1,31});/i,Bw=function(e,t){var r,n=e.pos,a=e.posMax;if(38!==e.src.charCodeAt(n))return!1;if(n+1<a)if(35===e.src.charCodeAt(n+1)){if(r=e.src.slice(n).match(c))return t||(a=\"x\"===r[1][0].toLowerCase()?parseInt(r[1].slice(1),16):parseInt(r[1],10),e.pending+=s(a)?l(a):l(65533)),e.pos+=r[0].length,!0}else if((r=e.src.slice(n).match(u))&&o(i,r[1]))return t||(e.pending+=i[r[1]]),e.pos+=r[0].length,!0;return t||(e.pending+=\"&\"),e.pos++,!0}),Bw)]],n=[[\"balance_pairs\",(Gw||(Gw=1,Hw=function(e){var t,r=e.tokens_meta,n=e.tokens_meta.length;for(E(0,e.delimiters),t=0;t<n;t++)r[t]&&r[t].delimiters&&E(0,r[t].delimiters)}),Hw)],[\"strikethrough\",Iw().postProcess],[\"emphasis\",fk().postProcess],[\"text_collapse\",(qw||(qw=1,Vw=function(e){for(var t,r=0,n=e.tokens,a=e.tokens.length,i=t=0;i<a;i++)n[i].nesting<0&&r--,n[i].level=r,0<n[i].nesting&&r++,\"text\"===n[i].type&&i+1<a&&\"text\"===n[i+1].type?n[i+1].content=n[i].content+n[i+1].content:(i!==t&&(n[t]=n[i]),t++);i!==t&&(n.length=t)}),Vw)]],e.prototype.skipToken=function(e){var t,r,n=e.pos,a=this.ruler.getRules(\"\"),i=a.length,o=e.md.options.maxNesting,s=e.cache;if(void 0!==s[n])e.pos=s[n];else{if(e.level<o)for(r=0;r<i&&(e.level++,t=a[r](e,!0),e.level--,!t);r++);else e.pos=e.posMax;t||e.pos++,s[n]=e.pos}},e.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(\"\"),a=n.length,i=e.posMax,o=e.md.options.maxNesting;e.pos<i;){if(e.level<o)for(r=0;r<a&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},e.prototype.parse=function(e,t,r,n){var a,i,o,s=new this.State(e,t,r,n);for(this.tokenize(s),o=(i=this.ruler2.getRules(\"\")).length,a=0;a<o;a++)i[a](s)},e.prototype.State=(Ww||(Ww=1,y=ZC(),T=M().isWhiteSpace,v=M().isPunctChar,b=M().isMdAsciiPunct,S.prototype.pushPending=function(){var e=new y(\"text\",\"\",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending=\"\",e},S.prototype.push=function(e,t,r){this.pending&&this.pushPending();e=new y(e,t,r),t=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),e.level=this.level,0<r&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],t={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(e),this.tokens_meta.push(t),e},S.prototype.scanDelims=function(e,t){for(var r,n,a,i,o=e,s=!0,l=!0,c=this.posMax,u=this.src.charCodeAt(e),d=0<e?this.src.charCodeAt(e-1):32;o<c&&this.src.charCodeAt(o)===u;)o++;return e=o-e,a=o<c?this.src.charCodeAt(o):32,n=b(d)||v(String.fromCharCode(d)),i=b(a)||v(String.fromCharCode(a)),d=T(d),((a=T(a))||i&&!d&&!n)&&(s=!1),(d||n&&!a&&!i)&&(l=!1),d=t?(r=s,l):(r=s&&(!l||n),l&&(!s||i)),{can_open:r,can_close:d,length:e}},S.prototype.Token=y,zw=S),zw),$w=e),$w;function E(e,t){var r,n,a,i,o,s,l={},c=t.length;if(c)for(var u=0,d=-2,p=[],f=0;f<c;f++)if(n=t[f],p.push(0),t[u].marker===n.marker&&d===n.token-1||(u=f),d=n.token,n.length=n.length||0,n.close){for(l.hasOwnProperty(n.marker)||(l[n.marker]=[-1,-1,-1,-1,-1,-1]),i=l[n.marker][(n.open?3:0)+n.length%3],o=r=u-p[u]-1;i<r;r-=p[r]+1)if((a=t[r]).marker===n.marker&&a.open&&a.end<0&&(s=!1,!(s=!a.close&&!n.open||(a.length+n.length)%3!=0||a.length%3==0&&n.length%3==0?s:!0))){s=0<r&&!t[r-1].open?p[r-1]+1:0,p[f]=f-r+s,p[r]=s,n.open=!1,a.end=f,a.close=!1,o=-1,d=-2;break}-1!==o&&(l[n.marker][(n.open?3:0)+(n.length||0)%3]=o)}}function e(){var e;for(this.ruler=new t,e=0;e<r.length;e++)this.ruler.push(r[e][0],r[e][1]);for(this.ruler2=new t,e=0;e<n.length;e++)this.ruler2.push(n[e][0],n[e][1])}function S(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\"\",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1}}function mk(){var n,a,s,i;return Zw||(n={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!(Zw=1)},a={\"http:\":{validate:function(e,t,r){e=e.slice(t);return r.re.http||(r.re.http=new RegExp(\"^\\\\/\\\\/\"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,\"i\")),r.re.http.test(e)?e.match(r.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp(\"^\"+r.re.src_auth+\"(?:localhost|(?:(?:\"+r.re.src_domain+\")\\\\.)+\"+r.re.src_domain_root+\")\"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,\"i\")),!r.re.no_http.test(n)||3<=t&&\":\"===e[t-3]||3<=t&&\"/\"===e[t-3]?0:n.match(r.re.no_http)[0].length}},\"mailto:\":{validate:function(e,t,r){e=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp(\"^\"+r.re.src_email_name+\"@\"+r.re.src_host_strict,\"i\")),r.re.mailto.test(e)?e.match(r.re.mailto)[0].length:0}}},s=\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\",i=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\"),h.prototype.add=function(e,t){return this.__schemas__[e]=t,p(this),this},h.prototype.set=function(e){return this.__opts__=o(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,a,i;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(t=a.exec(e));)if(r=this.testSchemaAt(e,t[2],a.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+r;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&0<=(i=e.search(this.re.host_fuzzy_test))&&(this.__index__<0||i<this.__index__)&&null!==(i=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(n=i.index+i[1].length,this.__index__<0||n<this.__index__)&&(this.__schema__=\"\",this.__index__=n,this.__last_index__=i.index+i[0].length),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&0<=e.indexOf(\"@\")&&null!==(i=e.match(this.re.email_fuzzy))&&(n=i.index+i[1].length,i=i.index+i[0].length,this.__index__<0||n<this.__index__||n===this.__index__&&i>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=n,this.__last_index__=i),0<=this.__index__},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},h.prototype.match=function(e){for(var t=0,r=[],n=(0<=this.__index__&&this.__text_cache__===e&&(r.push(f(this,t)),t=this.__last_index__),t?e.slice(t):e);this.test(n);)r.push(f(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,t,r){return e!==r[t-1]}).reverse(),p(this)):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,p(this)),this},h.prototype.normalize=function(e){e.schema||(e.url=\"http://\"+e.url),\"mailto:\"!==e.schema||/^mailto:/i.test(e.url)||(e.url=\"mailto:\"+e.url)},h.prototype.onCompile=function(){},Qw=h),Qw;function o(r){return Array.prototype.slice.call(arguments,1).forEach(function(t){t&&Object.keys(t).forEach(function(e){r[e]=t[e]})}),r}function l(e){return Object.prototype.toString.call(e)}function c(e){return\"[object Function]\"===l(e)}function u(e){return e.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}function d(){return function(e,t){t.normalize(e)}}function p(a){var t=a.re=(Jw||(Jw=1,Yw=function(e){var t={},r=(t.src_Any=Z1().source,t.src_Cc=X1().source,t.src_Z=eC().source,t.src_P=C1().source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join(\"|\"),t.src_ZCc=[t.src_Z,t.src_Cc].join(\"|\"),\"[><｜]\");return t.src_pseudo_letter=\"(?:(?![><｜]|\"+t.src_ZPCc+\")\"+t.src_Any+\")\",t.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",t.src_auth=\"(?:(?:(?!\"+t.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",t.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",t.src_host_terminator=\"(?=$|[><｜]|\"+t.src_ZPCc+\")(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|\"+t.src_ZPCc+\"))\",t.src_path=\"(?:[/?#](?:(?!\"+t.src_ZCc+\"|\"+r+\"|[()[\\\\]{}.,\\\"'?!\\\\-;]).|\\\\[(?:(?!\"+t.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+t.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+t.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+t.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+t.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+t.src_pseudo_letter+\"|[-]).|\\\\.{2,}[a-zA-Z0-9%/&]|\\\\.(?!\"+t.src_ZCc+\"|[.]).|\"+(e&&e[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\",(?!\"+t.src_ZCc+\").|;(?!\"+t.src_ZCc+\").|\\\\!+(?!\"+t.src_ZCc+\"|[!]).|\\\\?(?!\"+t.src_ZCc+\"|[?]).)+|\\\\/)?\",t.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',t.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",t.src_domain_root=\"(?:\"+t.src_xn+\"|\"+t.src_pseudo_letter+\"{1,63})\",t.src_domain=\"(?:\"+t.src_xn+\"|(?:\"+t.src_pseudo_letter+\")|(?:\"+t.src_pseudo_letter+\"(?:-|\"+t.src_pseudo_letter+\"){0,61}\"+t.src_pseudo_letter+\"))\",t.src_host=\"(?:(?:(?:(?:\"+t.src_domain+\")\\\\.)*\"+t.src_domain+\"))\",t.tpl_host_fuzzy=\"(?:\"+t.src_ip4+\"|(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%)))\",t.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%))\",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+t.src_ZPCc+\"|>|$))\",t.tpl_email_fuzzy='(^|[><｜]|\"|\\\\(|'+t.src_ZCc+\")(\"+t.src_email_name+\"@\"+t.tpl_host_fuzzy_strict+\")\",t.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\"+t.src_ZPCc+\"))((?![$+<=>^`|｜])\"+t.tpl_host_port_fuzzy_strict+t.src_path+\")\",t.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\"+t.src_ZPCc+\"))((?![$+<=>^`|｜])\"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+\")\",t}),Yw(a.__opts__)),e=a.__tlds__.slice();function r(e){return e.replace(\"%TLDS%\",t.src_tlds)}a.onCompile(),a.__tlds_replaced__||e.push(s),e.push(t.src_xn),t.src_tlds=e.join(\"|\"),t.email_fuzzy=RegExp(r(t.tpl_email_fuzzy),\"i\"),t.link_fuzzy=RegExp(r(t.tpl_link_fuzzy),\"i\"),t.link_no_ip_fuzzy=RegExp(r(t.tpl_link_no_ip_fuzzy),\"i\"),t.host_fuzzy_test=RegExp(r(t.tpl_host_fuzzy_test),\"i\");var i=[];function o(e,t){throw new Error('(LinkifyIt) Invalid schema \"'+e+'\": '+t)}a.__compiled__={},Object.keys(a.__schemas__).forEach(function(e){var t,r,n=a.__schemas__[e];null!==n&&(a.__compiled__[e]=t={validate:null,link:null},\"[object Object]\"===l(n)?(\"[object RegExp]\"===l(n.validate)?t.validate=(r=n.validate,function(e,t){e=e.slice(t);return r.test(e)?e.match(r)[0].length:0}):c(n.validate)?t.validate=n.validate:o(e,n),c(n.normalize)?t.normalize=n.normalize:n.normalize?o(e,n):t.normalize=d()):\"[object String]\"===l(n)?i.push(e):o(e,n))}),i.forEach(function(e){a.__compiled__[a.__schemas__[e]]&&(a.__compiled__[e].validate=a.__compiled__[a.__schemas__[e]].validate,a.__compiled__[e].normalize=a.__compiled__[a.__schemas__[e]].normalize)}),a.__compiled__[\"\"]={validate:null,normalize:d()};var e=Object.keys(a.__compiled__).filter(function(e){return 0<e.length&&a.__compiled__[e]}).map(u).join(\"|\");a.re.schema_test=RegExp(\"(^|(?!_)(?:[><｜]|\"+t.src_ZPCc+\"))(\"+e+\")\",\"i\"),a.re.schema_search=RegExp(\"(^|(?!_)(?:[><｜]|\"+t.src_ZPCc+\"))(\"+e+\")\",\"ig\"),a.re.pretest=RegExp(\"(\"+a.re.schema_test.source+\")|(\"+a.re.host_fuzzy_test.source+\")|@\",\"i\"),(e=a).__index__=-1,e.__text_cache__=\"\"}function r(e,t){var r=e.__index__,n=e.__last_index__,a=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=a,this.text=a,this.url=a}function f(e,t){t=new r(e,t);return e.__compiled__[t.schema].normalize(t,e),t}function h(e,t){if(!(this instanceof h))return new h(e,t);var r;t||(r=e,Object.keys(r||{}).reduce(function(e,t){return e||n.hasOwnProperty(t)},!1)&&(t=e,e={})),this.__opts__=o({},n,t),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=o({},a,e),this.__compiled__={},this.__tlds__=i,this.__tlds_replaced__=!1,this.re={},p(this)}}function gk(){if(!ek){const _=2147483647,y=36,T=(ek=1,26),a=38,i=700,r=/^xn--/,n=/[^\\0-\\x7F]/,o=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,s={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},l=y-1,v=Math.floor,b=String.fromCharCode;const E=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},S=function(e,t,r){let n=0;for(e=r?v(e/i):e>>1,e+=v(e/t);e>l*T>>1;n+=y)e=v(e/l);return v(n+(l+1)*e/(e+a))},c=function(n){var t=[],a=n.length;let i=0,e=128,o=72,s=n.lastIndexOf(\"-\");s<0&&(s=0);for(let e=0;e<s;++e)128<=n.charCodeAt(e)&&m(\"not-basic\"),t.push(n.charCodeAt(e));for(let r=0<s?s+1:0;r<a;){var l=i;for(let e=1,t=y;;t+=y){r>=a&&m(\"invalid-input\");var c=48<=(c=n.charCodeAt(r++))&&c<58?c-48+26:65<=c&&c<91?c-65:97<=c&&c<123?c-97:y,u=(c>=y&&m(\"invalid-input\"),c>v((_-i)/e)&&m(\"overflow\"),i+=c*e,t<=o?1:t>=o+T?T:t-o);if(c<u)break;c=y-u;e>v(_/c)&&m(\"overflow\"),e*=c}var d=t.length+1;o=S(i-l,d,0==l),v(i/d)>_-e&&m(\"overflow\"),e+=v(i/d),i%=d,t.splice(i++,0,e)}return String.fromCodePoint(...t)},u=function(t){var r=[],e=(t=g(t)).length;let n=128,a=0,i=72;for(const p of t)p<128&&r.push(b(p));var o=r.length;let s=o;for(o&&r.push(\"-\");s<e;){let e=_;for(const f of t)f>=n&&f<e&&(e=f);var l=s+1;e-n>v((_-a)/l)&&m(\"overflow\"),a+=(e-n)*l,n=e;for(const h of t)if(h<n&&++a>_&&m(\"overflow\"),h===n){let t=a;for(let e=y;;e+=y){var c=e<=i?1:e>=i+T?T:e-i;if(t<c)break;var u=t-c,d=y-c;r.push(b(E(c+u%d,0))),t=v(u/d)}r.push(b(E(t,0))),i=S(a,l,s===o),a=0,++s}++a,++n}return r.join(\"\")};var e={version:\"2.1.0\",ucs2:{decode:g,encode:e=>String.fromCodePoint(...e)},decode:c,encode:u,toASCII:function(e){return t(e,function(e){return n.test(e)?\"xn--\"+u(e):e})},toUnicode:function(e){return t(e,function(e){return r.test(e)?c(e.slice(4).toLowerCase()):e})}};function m(e){throw new RangeError(s[e])}function t(e,t){var r=e.split(\"@\");let n=\"\";1<r.length&&(n=r[0]+\"@\",e=r[1]);r=function(e,t){var r=[];let n=e.length;for(;n--;)r[n]=t(e[n]);return r}((e=e.replace(o,\".\")).split(\".\"),t).join(\".\");return n+r}function g(e){var t=[];let r=0;for(var n=e.length;r<n;){var a,i=e.charCodeAt(r++);55296<=i&&i<=56319&&r<n?56320==(64512&(a=e.charCodeAt(r++)))?t.push(((1023&i)<<10)+(1023&a)+65536):(t.push(i),r--):t.push(i)}return t}Xw=e}return Xw}function _k(){var n,r,a,e,l,c,t,i,o,s,u,d,p,f,h,m,g;return lk||(lk=1,n=M(),r=KC(),uC||(uC=1,e=M().assign,l=M().unescapeAll,c=M().escapeHtml,t={code_inline:function(e,t,r,n,a){var i=e[t];return\"<code\"+a.renderAttrs(i)+\">\"+c(e[t].content)+\"</code>\"},code_block:function(e,t,r,n,a){var i=e[t];return\"<pre\"+a.renderAttrs(i)+\"><code>\"+c(e[t].content)+\"</code></pre>\\n\"},fence:function(e,t,r,n,a){var i,e=e[t],t=e.info?l(e.info).trim():\"\",o=\"\",s=\"\";return t&&(o=(i=t.split(/(\\s+)/g))[0],s=i.slice(2).join(\"\")),0===(i=r.highlight&&r.highlight(e.content,o,s)||c(e.content)).indexOf(\"<pre\")?i+\"\\n\":t?(s=e.attrIndex(\"class\"),t=e.attrs?e.attrs.slice():[],s<0?t.push([\"class\",r.langPrefix+o]):(t[s]=t[s].slice(),t[s][1]+=\" \"+r.langPrefix+o),\"<pre><code\"+a.renderAttrs({attrs:t})+\">\"+i+\"</code></pre>\\n\"):\"<pre><code\"+a.renderAttrs(e)+\">\"+i+\"</code></pre>\\n\"},image:function(e,t,r,n,a){var i=e[t];return i.attrs[i.attrIndex(\"alt\")][1]=a.renderInlineAsText(i.children,r,n),a.renderToken(e,t,r)},hardbreak:function(e,t,r){return r.xhtmlOut?\"<br />\\n\":\"<br>\\n\"},softbreak:function(e,t,r){return r.breaks?r.xhtmlOut?\"<br />\\n\":\"<br>\\n\":\"\\n\"},text:function(e,t){return c(e[t].content)},html_block:function(e,t){return e[t].content},html_inline:function(e,t){return e[t].content}},_.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return\"\";for(n=\"\",t=0,r=e.attrs.length;t<r;t++)n+=\" \"+c(e.attrs[t][0])+'=\"'+c(e.attrs[t][1])+'\"';return n},_.prototype.renderToken=function(e,t,r){var n=\"\",a=!1,i=e[t];return i.hidden?\"\":(i.block&&-1!==i.nesting&&t&&e[t-1].hidden&&(n+=\"\\n\"),n=(n+=(-1===i.nesting?\"</\":\"<\")+i.tag)+this.renderAttrs(i),0===i.nesting&&r.xhtmlOut&&(n+=\" /\"),n+((a=i.block&&(a=!0,1===i.nesting)&&t+1<e.length&&(\"inline\"===(r=e[t+1]).type||r.hidden||-1===r.nesting&&r.tag===i.tag)?!1:a)?\">\\n\":\">\"))},_.prototype.renderInline=function(e,t,r){for(var n,a=\"\",i=this.rules,o=0,s=e.length;o<s;o++)void 0!==i[n=e[o].type]?a+=i[n](e,o,t,r,this):a+=this.renderToken(e,o,t);return a},_.prototype.renderInlineAsText=function(e,t,r){for(var n=\"\",a=0,i=e.length;a<i;a++)\"text\"===e[a].type?n+=e[a].content:\"image\"===e[a].type?n+=this.renderInlineAsText(e[a].children,t,r):\"softbreak\"===e[a].type&&(n+=\"\\n\");return n},_.prototype.render=function(e,t,r){for(var n,a=\"\",i=this.rules,o=0,s=e.length;o<s;o++)\"inline\"===(n=e[o].type)?a+=this.renderInline(e[o].children,t,r):void 0!==i[n]?a+=i[e[o].type](e,o,t,r,this):a+=this.renderToken(e,o,t,r);return a},cC=_),a=cC,i=XC(),o=Ow(),s=hk(),u=mk(),d=j1(),p=gk(),f={default:tk=rk?tk:{options:{html:!(rk=1),xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:nk=ak?nk:{options:{html:!(ak=1),xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"normalize\",\"block\",\"inline\"]},block:{rules:[\"paragraph\"]},inline:{rules:[\"text\"],rules2:[\"balance_pairs\",\"text_collapse\"]}}},commonmark:ik=ok?ik:{options:{html:!0,xhtmlOut:!0,breaks:!(ok=1),langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"normalize\",\"block\",\"inline\"]},block:{rules:[\"blockquote\",\"code\",\"fence\",\"heading\",\"hr\",\"html_block\",\"lheading\",\"list\",\"reference\",\"paragraph\"]},inline:{rules:[\"autolink\",\"backticks\",\"emphasis\",\"entity\",\"escape\",\"html_inline\",\"image\",\"link\",\"newline\",\"text\"],rules2:[\"balance_pairs\",\"emphasis\",\"text_collapse\"]}}}},h=/^(vbscript|javascript|file|data):/,m=/^data:image\\/(gif|png|jpeg|webp);/,g=[\"http:\",\"https:\",\"mailto:\"],b.prototype.set=function(e){return n.assign(this.options,e),this},b.prototype.configure=function(t){var e,r=this;if(n.isString(t)&&!(t=f[e=t]))throw new Error('Wrong `markdown-it` preset \"'+e+'\", check name');if(t)return t.options&&r.set(t.options),t.components&&Object.keys(t.components).forEach(function(e){t.components[e].rules&&r[e].ruler.enableOnly(t.components[e].rules),t.components[e].rules2&&r[e].ruler2.enableOnly(t.components[e].rules2)}),this;throw new Error(\"Wrong `markdown-it` preset, can't be empty\")},b.prototype.enable=function(t,e){var r=[],n=(Array.isArray(t)||(t=[t]),[\"core\",\"block\",\"inline\"].forEach(function(e){r=r.concat(this[e].ruler.enable(t,!0))},this),r=r.concat(this.inline.ruler2.enable(t,!0)),t.filter(function(e){return r.indexOf(e)<0}));if(n.length&&!e)throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \"+n);return this},b.prototype.disable=function(t,e){var r=[],n=(Array.isArray(t)||(t=[t]),[\"core\",\"block\",\"inline\"].forEach(function(e){r=r.concat(this[e].ruler.disable(t,!0))},this),r=r.concat(this.inline.ruler2.disable(t,!0)),t.filter(function(e){return r.indexOf(e)<0}));if(n.length&&!e)throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \"+n);return this},b.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},b.prototype.parse=function(e,t){if(\"string\"!=typeof e)throw new Error(\"Input data should be a String\");e=new this.core.State(e,this,t);return this.core.process(e),e.tokens},b.prototype.render=function(e,t){return this.renderer.render(this.parse(e,t=t||{}),this.options,t)},b.prototype.parseInline=function(e,t){e=new this.core.State(e,this,t);return e.inlineMode=!0,this.core.process(e),e.tokens},b.prototype.renderInline=function(e,t){return this.renderer.render(this.parseInline(e,t=t||{}),this.options,t)},sk=b),sk;function _(){this.rules=e({},t)}function y(e){e=e.trim().toLowerCase();return!h.test(e)||!!m.test(e)}function T(e){e=d.parse(e,!0);if(e.hostname&&(!e.protocol||0<=g.indexOf(e.protocol)))try{e.hostname=p.toASCII(e.hostname)}catch(e){}return d.encode(d.format(e))}function v(e){e=d.parse(e,!0);if(e.hostname&&(!e.protocol||0<=g.indexOf(e.protocol)))try{e.hostname=p.toUnicode(e.hostname)}catch(e){}return d.decode(d.format(e),d.decode.defaultChars+\"%\")}function b(e,t){if(!(this instanceof b))return new b(e,t);t||n.isString(e)||(t=e||{},e=\"default\"),this.inline=new s,this.block=new o,this.core=new i,this.renderer=new a,this.linkify=new u,this.validateLink=y,this.normalizeLink=T,this.normalizeLinkText=v,this.utils=n,this.helpers=n.assign({},r),this.options={},this.configure(e),t&&this.set(t)}}function yk(){if(!dk){dk=1,Object.defineProperty(E1,\"__esModule\",{value:!0}),E1.ChatPage=void 0;var e=Jr;const r=e.__importDefault(xe()),t=Vl(),n=e.__importDefault((uk||(uk=1,ck=_k()),ck)),a=je(),i=Be();E1.ChatPage=class{messages;userInput;isLoading;showThoughts;showTokens;chat;md;usage;constructor({attrs:e}){this.chat=e.chat,this.showThoughts=e.showThoughts,this.showTokens=e.showTokens,this.md=(0,n.default)(),this.userInput=\"\",this.isLoading=!1,this.messages=[{role:\"ai\",text:\"Hello! I am your friendly AI assistant. How can I help you today?\"}]}async processResponse(e){var t;this.showThoughts.get()&&void 0!==(t=e.candidates?.[0]?.content?.parts)&&t.forEach(e=>{e.thought?this.messages.push({role:\"thought\",text:e.text??\"unprintable\"}):e.functionCall&&this.messages.push({role:\"toolcall\",text:e.functionCall?.name??\"unprintable\"})}),void 0!==e.text&&this.updateAiResponse(e.text),e.usageMetadata&&(this.usage=e.usageMetadata),r.default.redraw()}updateAiResponse(e){var t=this.messages[this.messages.length-1];\"ai\"==t.role?(t.text+=e,this.messages[this.messages.length-1]=t):this.messages.push({role:\"ai\",text:e})}sendMessage=async()=>{var e=this.userInput.trim();if(\"\"!==e&&!this.isLoading){this.messages.push({role:\"user\",text:e}),this.isLoading=!0,this.userInput=\"\",r.default.redraw();try{for await(const t of await this.chat.sendMessageStream({message:e}))this.processResponse(t);this.messages.push({role:\"spacer\",text:\"\"}),r.default.redraw()}catch(e){console.error(\"AI API call failed:\",e),this.messages.push({role:\"error\",text:\"Sorry, something went wrong. \"+e})}finally{this.isLoading=!1,r.default.redraw()}}};view(){return(0,r.default)(\".pf-ai-chat-panel\",(0,r.default)(\".pf-ai-chat-panel__conversation\",{onupdate:e=>{e=e.dom;e.scrollTop=e.scrollHeight}},this.messages.map(e=>{if(!e.text&&\"spacer\"!==e.role)return null;let t=\"other\";switch(e.role){case\"ai\":t=\"AI\";break;case\"user\":t=\"You\";break;case\"error\":t=\"Error\";break;case\"toolcall\":t=\"Tool\";break;case\"thought\":t=\"Thought\";break;case\"spacer\":t=\"\"}return(0,r.default)(\".pf-ai-chat-message.pf-ai-chat-message--\"+e.role,(0,r.default)(\"b.pf-ai-chat-message--role-label\",t),(0,r.default)(\"span.pf-ai-chat-message--role-text\",r.default.trust(this.md.render(e.text))))})),(0,r.default)(\"footer.pf-ai-chat-panel__input-area\",(0,r.default)(t.TextInput,{value:this.userInput,oninput:e=>{this.userInput=e.target.value},onkeydown:e=>{\"Enter\"!==e.key||e.shiftKey||(e.preventDefault(),this.sendMessage())},placeholder:this.isLoading?\"Waiting for response...\":\"Ask me about your trace...\",disabled:this.isLoading}),this.showTokens.get()?[(0,r.default)(\".pf-ai-chat-panel__tokens\",[(0,r.default)(\"div.pf-ai-chat-panel__tokens__label\",\"Tokens\"),(0,r.default)(\"div.pf-ai-chat-panel__tokens__count\",this.usage?.totalTokenCount??\"--\")])]:[],(0,r.default)(a.Button,{icon:\"arrow_forward\",title:\"Send\",onclick:()=>this.sendMessage(),loading:this.isLoading,variant:a.ButtonVariant.Filled,intent:i.Intent.Primary})))}}}return E1}var Tk,vk,bk={};function Ek(){if(!Tk){Tk=1,Object.defineProperty(bk,\"__esModule\",{value:!0}),bk.registerUiTools=function(e,n){e.tool(\"show-perfetto-sql-view\",\"Shows a SQL query in the Perfetto SQL view.\",{query:t.z.string(),viewName:t.z.string()},async({query:e,viewName:t})=>((0,r.addQueryResultsTab)(n,{query:e,title:t}),{content:[{type:\"text\",text:\"OK\"}]})),e.tool(\"show-timeline\",`\n      Shows some context in the Timeline view.\n      'timeSpan' controls the range of time to be shown. For example { startTime: '261195375150266', endTime: '261197502806936' }\n      'focus' controls the row to be shown. For example { table: 'slice', id: 1234 }\n\n      Timestamps in Perfetto are bigints, and in most tables represent nanoseconds in 'trace processor time'.\n      These are device and trace specific, you can query the min/max of the slice table to get a valid range.\n    `,{timeSpan:t.z.object({startTime:t.z.string(),endTime:t.z.string()}).optional(),focus:t.z.object({table:t.z.string(),id:t.z.number()}).optional()},async({timeSpan:e,focus:t})=>{var r;return e&&(r=BigInt(e.startTime),e=BigInt(e.endTime),(0,i.assertTrue)(r>=n.traceInfo.start),(0,i.assertTrue)(e<=n.traceInfo.end),n.timeline.setViewportTime(a.Time.fromRaw(r),a.Time.fromRaw(e))),t&&n.selection.selectSqlEvent(t.table,t.id,{scrollToSelection:!0,switchToCurrentSelectionTab:!0}),{content:[{type:\"text\",text:\"OK\"}]}})};const t=Ne(),r=Nc(),a=Fe(),i=Pe()}return bk}function Sk(){if(!vk){vk=1,Object.defineProperty($g,\"__esModule\",{value:!0});var e=Jr;const o=gv(),s=function(){if(!_v){_v=1;var e=ve&&ve.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yv,\"__esModule\",{value:!0}),yv.Client=void 0;const t=Xg(),n=Zg(),r=e(ty());class a extends t.Protocol{constructor(e,t){super(t),this._clientInfo=e,this._cachedToolOutputValidators=new Map,this._capabilities=null!=(e=null==t?void 0:t.capabilities)?e:{},this._ajv=new r.default}registerCapabilities(e){if(this.transport)throw new Error(\"Cannot register capabilities after connecting to transport\");this._capabilities=(0,t.mergeCapabilities)(this._capabilities,e)}assertCapability(e,t){var r;if(null==(r=this._serverCapabilities)||!r[e])throw new Error(`Server does not support ${e} (required for ${t})`)}async connect(e,t){if(await super.connect(e),void 0===e.sessionId)try{var r=await this.request({method:\"initialize\",params:{protocolVersion:n.LATEST_PROTOCOL_VERSION,capabilities:this._capabilities,clientInfo:this._clientInfo}},n.InitializeResultSchema,t);if(void 0===r)throw new Error(\"Server sent invalid initialize result: \"+r);if(!n.SUPPORTED_PROTOCOL_VERSIONS.includes(r.protocolVersion))throw new Error(\"Server's protocol version is not supported: \"+r.protocolVersion);this._serverCapabilities=r.capabilities,this._serverVersion=r.serverInfo,e.setProtocolVersion&&e.setProtocolVersion(r.protocolVersion),this._instructions=r.instructions,await this.notification({method:\"notifications/initialized\"})}catch(e){throw this.close(),e}}getServerCapabilities(){return this._serverCapabilities}getServerVersion(){return this._serverVersion}getInstructions(){return this._instructions}assertCapabilityForMethod(e){var t;switch(e){case\"logging/setLevel\":if(null!=(t=this._serverCapabilities)&&t.logging)break;throw new Error(`Server does not support logging (required for ${e})`);case\"prompts/get\":case\"prompts/list\":if(null!=(t=this._serverCapabilities)&&t.prompts)break;throw new Error(`Server does not support prompts (required for ${e})`);case\"resources/list\":case\"resources/templates/list\":case\"resources/read\":case\"resources/subscribe\":case\"resources/unsubscribe\":if(null==(t=this._serverCapabilities)||!t.resources)throw new Error(`Server does not support resources (required for ${e})`);if(\"resources/subscribe\"!==e||this._serverCapabilities.resources.subscribe)break;throw new Error(`Server does not support resource subscriptions (required for ${e})`);case\"tools/call\":case\"tools/list\":if(null!=(t=this._serverCapabilities)&&t.tools)break;throw new Error(`Server does not support tools (required for ${e})`);case\"completion/complete\":if(null!=(t=this._serverCapabilities)&&t.completions)break;throw new Error(`Server does not support completions (required for ${e})`)}}assertNotificationCapability(e){var t;switch(e){case\"notifications/roots/list_changed\":if(null!=(t=this._capabilities.roots)&&t.listChanged)break;throw new Error(`Client does not support roots list changed notifications (required for ${e})`)}}assertRequestHandlerCapability(e){switch(e){case\"sampling/createMessage\":if(this._capabilities.sampling)break;throw new Error(`Client does not support sampling capability (required for ${e})`);case\"elicitation/create\":if(this._capabilities.elicitation)break;throw new Error(`Client does not support elicitation capability (required for ${e})`);case\"roots/list\":if(this._capabilities.roots)break;throw new Error(`Client does not support roots capability (required for ${e})`)}}async ping(e){return this.request({method:\"ping\"},n.EmptyResultSchema,e)}async complete(e,t){return this.request({method:\"completion/complete\",params:e},n.CompleteResultSchema,t)}async setLoggingLevel(e,t){return this.request({method:\"logging/setLevel\",params:{level:e}},n.EmptyResultSchema,t)}async getPrompt(e,t){return this.request({method:\"prompts/get\",params:e},n.GetPromptResultSchema,t)}async listPrompts(e,t){return this.request({method:\"prompts/list\",params:e},n.ListPromptsResultSchema,t)}async listResources(e,t){return this.request({method:\"resources/list\",params:e},n.ListResourcesResultSchema,t)}async listResourceTemplates(e,t){return this.request({method:\"resources/templates/list\",params:e},n.ListResourceTemplatesResultSchema,t)}async readResource(e,t){return this.request({method:\"resources/read\",params:e},n.ReadResourceResultSchema,t)}async subscribeResource(e,t){return this.request({method:\"resources/subscribe\",params:e},n.EmptyResultSchema,t)}async unsubscribeResource(e,t){return this.request({method:\"resources/unsubscribe\",params:e},n.EmptyResultSchema,t)}async callTool(e,t=n.CallToolResultSchema,r){t=await this.request({method:\"tools/call\",params:e},t,r),r=this.getToolOutputValidator(e.name);if(r){if(!t.structuredContent&&!t.isError)throw new n.McpError(n.ErrorCode.InvalidRequest,`Tool ${e.name} has an output schema but did not return structured content`);if(t.structuredContent)try{if(!r(t.structuredContent))throw new n.McpError(n.ErrorCode.InvalidParams,\"Structured content does not match the tool's output schema: \"+this._ajv.errorsText(r.errors))}catch(e){if(e instanceof n.McpError)throw e;throw new n.McpError(n.ErrorCode.InvalidParams,\"Failed to validate structured content: \"+(e instanceof Error?e.message:String(e)))}}return t}cacheToolOutputSchemas(e){this._cachedToolOutputValidators.clear();for(const r of e)if(r.outputSchema)try{var t=this._ajv.compile(r.outputSchema);this._cachedToolOutputValidators.set(r.name,t)}catch(e){}}getToolOutputValidator(e){return this._cachedToolOutputValidators.get(e)}async listTools(e,t){e=await this.request({method:\"tools/list\",params:e},n.ListToolsResultSchema,t);return this.cacheToolOutputSchemas(e.tools),e}async sendRootsListChanged(){return this.notification({method:\"notifications/roots/list_changed\"})}}yv.Client=a}return yv}(),l=ub(),c=f1,u=_1(),t=Ne(),d=yk(),p=e.__importDefault(xe()),f=Ek();class h{static id=\"com.google.PerfettoMcp\";static description=`\n    This plugin adds support for a AI Chat window. \n    This is backed by Gemini and implement MCP (Model Context Protocol).\n    While Gemini can understand and generate SQL queries, the tools allow Gemini to interact with the trace data directly\n    to answer your queries.\n    `;static tokenSetting;static promptSetting;static thoughtsSetting;static showTokensSetting;static modelNameSetting;static onActivate(e){h.tokenSetting=e.settings.register({id:e.pluginId+\"#TokenSetting\",name:\"Gemini Token\",description:\"Gemini API Token.\",schema:t.z.string(),defaultValue:\"\",requiresReload:!0}),h.thoughtsSetting=e.settings.register({id:e.pluginId+\"#ThoughtsSetting\",name:\"Show Thoughts and Tool Calls\",description:\"Show thoughts and tool calls in the chat.\",schema:t.z.boolean(),defaultValue:!0}),h.showTokensSetting=e.settings.register({id:e.pluginId+\"#ShowTokensSetting\",name:\"Show Token Usage\",description:\"Show detailed token usage.\",schema:t.z.boolean(),defaultValue:!0}),h.modelNameSetting=e.settings.register({id:e.pluginId+\"#ModelNameSetting\",name:\"Gemini Model\",description:\"The Gemini model to use, such as gemini-2.5-pro.\",schema:t.z.string(),defaultValue:\"gemini-2.5-pro\",requiresReload:!0}),h.promptSetting=e.settings.register({id:e.pluginId+\"#PromptSetting\",name:\"Gemini Prompt\",description:\"Upload a .txt or .md file containing the initial Gemini prompt.\",schema:t.z.string(),defaultValue:\"\",requiresReload:!0,render:r=>{return(0,p.default)(\"input\",{type:\"file\",accept:[\".txt\",\".md\"],onchange:e=>{e=e.target.files?.[0];if(e){const t=new FileReader;t.onload=e=>{e=e.target?.result;\"string\"==typeof e&&r.set(e)},t.onerror=()=>{console.error(\"FileReader error:\",t.error)},t.readAsText(e)}}})}})}async onTraceLoad(e){var t=new o.McpServer({name:\"PerfettoMcp\",version:\"1.0.0\"}),r=((0,u.registerTraceTools)(t,e.engine),(0,f.registerUiTools)(t,e),new s.Client({name:\"PerfettoMcpClient\",version:\"1.0\"})),[n,a]=l.InMemoryTransport.createLinkedPair(),n=(await Promise.all([r.connect(n),t.server.connect(a)]),(0,c.mcpToTool)(r));const i=await new c.GoogleGenAI({apiKey:h.tokenSetting.get()}).chats.create({model:h.modelNameSetting.get(),config:{systemInstruction:\"You are an expert in analyzing perfetto traces. \\n\\n\"+h.promptSetting.get(),tools:[n],toolConfig:{functionCallingConfig:{mode:c.FunctionCallingConfigMode.AUTO}},thinkingConfig:{includeThoughts:!0,thinkingBudget:-1},automaticFunctionCalling:{maximumRemoteCalls:20}}});e.pages.registerPage({route:\"/aichat\",render:()=>(0,p.default)(d.ChatPage,{trace:e,chat:i,showThoughts:h.thoughtsSetting,showTokens:h.showTokensSetting})}),e.sidebar.addMenuItem({section:\"current_trace\",text:\"AI Chat\",href:\"#!/aichat\",icon:\"smart_toy\",sortOrder:10})}}$g.default=h}return $g}var Ak,Ok={};var Ck,wk={};var kk,Ik={};var Rk,Nk,Mk={},Pk={};function Dk(){if(!Nk){Nk=1,Object.defineProperty(Mk,\"__esModule\",{value:!0});const t=Jr.__importStar((Rk||(Rk=1,Object.defineProperty(Pk,\"__esModule\",{value:!0}),Pk.STARTUP_RELATED_TRACKS=Pk.MAIN_THREAD_TRACK=void 0,Pk.MAIN_THREAD_TRACK=[\"id.GoogleCamera \"],Pk.STARTUP_RELATED_TRACKS=[\"FirstPreviewFrame\",\"ShutterButtonEnabled\"]),Pk));Mk.default=class{static id=\"com.google.android.GoogleCamera\";async onTraceLoad(t){t.commands.registerCommand({id:\"com.google.android.LoadGoogleCameraStartupView\",name:\"Load google camera startup view\",callback:()=>{this.loadGCAStartupView(t)}}),t.commands.registerCommand({id:\"com.google.android.PinCameraRelatedTracks\",name:\"Pin camera related tracks\",callback:async()=>{var e=(await t.omnibox.prompt(\"List of additional track names that you would like to pin separated by commas\")??\"\").split(\",\").map(e=>e.trim());this.pinTracks(t,e)}})}loadGCAStartupView(e){this.pinTracks(e,t.MAIN_THREAD_TRACK),this.pinTracks(e,t.STARTUP_RELATED_TRACKS)}pinTracks(e,r){e.workspace.flatTracks.forEach(t=>{r.forEach(e=>{t.name.match(e)&&t.pin()})})}}}return Mk}var xk,Lk={};var Fk,Uk={};function Bk(){if(!Fk){Fk=1,Object.defineProperty(Uk,\"__esModule\",{value:!0});Uk.default=class t{static id=\"dev.perfetto.BookmarkletApi\";static bookmarkletPluginCtx;static onActivate(e){this.bookmarkletPluginCtx=e,window.ctx=e}async onTraceLoad(e){(window.ctx=e).trash.defer(()=>{window.ctx=t.bookmarkletPluginCtx})}}}return Uk}var jk,Hk={};var Gk,Vk,qk,zk={},Wk={},$k={};function Kk(){if(!Gk){Gk=1,Object.defineProperty($k,\"__esModule\",{value:!0}),$k.TimelineFetcher=void 0;const n=ja(),a=Fe(),i=K();class e{doFetch;data_;latestTimespan;latestResolution;constructor(e){this.doFetch=e,this.latestTimespan=a.TimeSpan.ZERO,this.latestResolution=0n}async requestData(e,t){var r;this.shouldLoadNewData(e,t)&&(r=(e=e.pad(e.duration)).start,e=e.end,r=a.Time.fromRaw(n.BigintMath.quantFloor(r,t)),e=a.Time.fromRaw(n.BigintMath.quantCeil(e,t)),this.latestTimespan=new a.TimeSpan(r,e),this.latestResolution=t,await this.loadData())}get data(){return this.data_}invalidate(){this.data_=void 0}[Symbol.dispose](){this.data_=void 0}shouldLoadNewData(e,t){return void 0===this.data_||e.start<this.latestTimespan.start||e.end>this.latestTimespan.end||t!==this.latestResolution}async loadData(){var{start:e,end:t}=this.latestTimespan,r=this.latestResolution;this.data_=await this.doFetch(e,t,r),i.raf.scheduleCanvasRedraw()}}$k.TimelineFetcher=e}return $k}function Yk(){if(!qk){qk=1,Object.defineProperty(zk,\"__esModule\",{value:!0});const u=Jr.__importDefault(xe()),d=We(),p=Ue(),f=function(){if(!Vk){Vk=1,Object.defineProperty(Wk,\"__esModule\",{value:!0}),Wk.CpuFreqTrack=void 0;var e=Jr;const u=ja(),S=Pa(),A=Pe(),O=Fe(),C=He(),n=e.__importDefault(xe());var t=Kk();const w=Pi(),d=Ue();var r=ln();const a=De(),i=Le();Wk.CpuFreqTrack=class{config;trace;hoveredValue=void 0;hoveredTs=void 0;hoveredTsEnd=void 0;hoveredIdle=void 0;fetcher=new t.TimelineFetcher(this.onBoundsChange.bind(this));trackUuid=(0,r.uuidv4Sql)();trash;constructor(e,t){this.config=e,this.trace=t}async onCreate(){this.trash=new i.AsyncDisposableStack,await this.trace.engine.query(`\n      INCLUDE PERFETTO MODULE counters.intervals;\n    `),void 0===this.config.idleTrackId?this.trash.use(await(0,a.createView)({engine:this.trace.engine,name:\"raw_freq_idle_\"+this.trackUuid,as:`\n            select ts, dur, value as freqValue, -1 as idleValue\n            from counter_leading_intervals!((\n              select id, ts, track_id, value\n              from counter\n              where track_id = ${this.config.freqTrackId}\n            ))\n          `})):(this.trash.use(await(0,a.createPerfettoTable)({engine:this.trace.engine,name:\"raw_freq_\"+this.trackUuid,as:`\n            select ts, dur, value as freqValue\n            from counter_leading_intervals!((\n              select id, ts, track_id, value\n              from counter\n             where track_id = ${this.config.freqTrackId}\n            ))\n          `})),this.trash.use(await(0,a.createPerfettoTable)({engine:this.trace.engine,name:\"raw_idle_\"+this.trackUuid,as:`\n            select\n              ts,\n              dur,\n              iif(value = 4294967295, -1, cast(value as int)) as idleValue\n            from counter_leading_intervals!((\n              select id, ts, track_id, value\n              from counter\n              where track_id = ${this.config.idleTrackId}\n            ))\n          `})),this.trash.use(await(0,a.createVirtualTable)({engine:this.trace.engine,name:\"raw_freq_idle_\"+this.trackUuid,using:`span_join(raw_freq_${this.trackUuid}, raw_idle_${this.trackUuid})`}))),this.trash.use(await(0,a.createVirtualTable)({engine:this.trace.engine,name:\"cpu_freq_\"+this.trackUuid,using:`\n        __intrinsic_counter_mipmap((\n          select ts, freqValue as value\n          from raw_freq_idle_${this.trackUuid}\n        ))\n      `})),this.trash.use(await(0,a.createVirtualTable)({engine:this.trace.engine,name:\"cpu_idle_\"+this.trackUuid,using:`\n        __intrinsic_counter_mipmap((\n          select ts, idleValue as value\n          from raw_freq_idle_${this.trackUuid}\n        ))\n      `}))}async onUpdate({visibleWindow:e,resolution:t}){await this.fetcher.requestData(e.toTimeSpan(),t)}async onDestroy(){await this.trash.asyncDispose()}async onBoundsChange(e,t,r){(0,A.assertTrue)(1===u.BigintMath.popcount(r),r+\" not pow of 2\");var n=await this.trace.engine.query(`\n      SELECT\n        min_value as minFreq,\n        max_value as maxFreq,\n        last_ts as ts,\n        last_value as lastFreq\n      FROM cpu_freq_${this.trackUuid}(\n        ${e},\n        ${t},\n        ${r}\n      );\n    `),a=await this.trace.engine.query(`\n      SELECT last_value as lastIdle\n      FROM cpu_idle_${this.trackUuid}(\n        ${e},\n        ${t},\n        ${r}\n      );\n    `),i=n.numRows(),o=a.numRows(),s=((0,A.assertTrue)(i==o),{start:e,end:t,resolution:r,length:i,timestamps:new BigInt64Array(i),minFreqKHz:new Uint32Array(i),maxFreqKHz:new Uint32Array(i),lastFreqKHz:new Uint32Array(i),lastIdleValues:new Int8Array(i)}),l=n.iter({ts:d.LONG,minFreq:d.NUM,maxFreq:d.NUM,lastFreq:d.NUM}),c=a.iter({lastIdle:d.NUM});for(let e=0;l.valid();++e,l.next(),c.next())s.timestamps[e]=l.ts,s.minFreqKHz[e]=l.minFreq,s.maxFreqKHz[e]=l.maxFreq,s.lastFreqKHz[e]=l.lastFreq,s.lastIdleValues[e]=c.lastIdle;return s}getHeight(){return 24.5}renderTooltip(){if(void 0!==this.hoveredValue&&void 0!==this.hoveredTs){let e=this.hoveredValue.toLocaleString()+\"kHz\";return void 0!==this.hoveredIdle&&-1!==this.hoveredIdle&&(e+=` (Idle: ${(this.hoveredIdle+1).toLocaleString()})`),e}}render({ctx:r,size:n,timescale:a,visibleWindow:i,theme:o}){var s=this.fetcher.data;if(void 0!==s&&0!==s.timestamps.length){(0,A.assertTrue)(s.timestamps.length===s.lastFreqKHz.length),(0,A.assertTrue)(s.timestamps.length===s.minFreqKHz.length),(0,A.assertTrue)(s.timestamps.length===s.maxFreqKHz.length),(0,A.assertTrue)(s.timestamps.length===s.lastIdleValues.length);var l=n.width;const E=24.5;let t=this.config.maximumValue;var c=Math.ceil(Math.log10(Math.max(t,1))),u=Math.pow(10,c),u=(t=Math.ceil(t/(u/4))*(u/4),Math.floor(c/3)),c=t/Math.pow(10,3*u)+` ${[\"\",\"K\",\"M\",\"G\",\"T\",\"E\"][u+1]}Hz`,u=(0,C.colorForCpu)(this.config.cpu);let e=45;void 0!==this.trace.timeline.hoveredUtid&&(e=0),r.fillStyle=u.setHSL({s:e,l:50}).setAlpha(.6).cssString,r.strokeStyle=u.setHSL({s:e,l:50}).cssString;var d,p,f,h=e=>Math.floor(a.timeToPx(e)),m=e=>E-Math.round(e/t*20),i=i.toTimeSpan(),g=i.start,i=i.end,[g]=(0,S.searchSegment)(s.timestamps,g),g=-1===g?0:g,[,i]=(0,S.searchSegment)(s.timestamps,i),_=-1===i?s.timestamps.length:i;{r.beginPath();i=O.Time.fromRaw(s.timestamps[g]);r.moveTo(Math.max(h(i),0),E);let t=E;for(let e=g;e<_;e++){var y=O.Time.fromRaw(s.timestamps[e]),y=Math.max(0,h(y)),T=m(s.minFreqKHz[e]),v=m(s.maxFreqKHz[e]),b=m(s.lastFreqKHz[e]);r.lineTo(y,t),T===v?(0,A.assertTrue)(b===T):(r.lineTo(y,T),r.lineTo(y,v)),r.lineTo(y,b),t=b}r.lineTo(l,t),r.lineTo(l,E),r.closePath(),r.fill(),r.stroke()}r.fillStyle=\"rgba(128,128,128, 0.2)\";for(let e=g;e<_;e++)s.lastIdleValues[e]<0||(d=O.Time.fromRaw(s.timestamps[e]),d=a.timeToPx(d),p=(e===s.lastIdleValues.length-1?l:a.timeToPx(O.Time.fromRaw(s.timestamps[e+1])))-d,f=m(s.lastFreqKHz[e])-E,r.clearRect(d,E,p,f),r.fillRect(d,E,p,f));r.font=\"10px Roboto Condensed\",void 0!==this.hoveredValue&&void 0!==this.hoveredTs&&(r.fillStyle=u.setHSL({s:45,l:75}).cssString,r.strokeStyle=u.setHSL({s:45,l:45}).cssString,i=Math.floor(a.timeToPx(this.hoveredTs)),g=void 0===this.hoveredTsEnd?l:Math.floor(a.timeToPx(this.hoveredTsEnd)),u=E-Math.round(this.hoveredValue/t*20),r.beginPath(),r.moveTo(i,u),r.lineTo(g,u),r.lineWidth=3,r.stroke(),r.lineWidth=1,r.beginPath(),r.arc(i,u,3,0,2*Math.PI),r.fill(),r.stroke()),r.textBaseline=\"alphabetic\",r.fillStyle=o.COLOR_BACKGROUND,r.globalAlpha=.6,r.fillRect(0,0,42,18),r.globalAlpha=1,r.fillStyle=o.COLOR_TEXT,r.textAlign=\"left\",r.fillText(c,4,14),(0,w.checkerboardExcept)(r,this.getHeight(),0,n.width,a.timeToPx(s.start),a.timeToPx(s.end))}}onMouseMove({x:e,timescale:t}){var r=this.fetcher.data;void 0!==r&&(t=t.pxToHpTime(e),[e,t]=(0,S.searchSegment)(r.timestamps,t.toTime()),this.hoveredTs=-1===e?void 0:O.Time.fromRaw(r.timestamps[e]),this.hoveredTsEnd=-1===t?void 0:O.Time.fromRaw(r.timestamps[t]),this.hoveredValue=-1===e?void 0:r.lastFreqKHz[e],this.hoveredIdle=-1===e?void 0:r.lastIdleValues[e],n.default.redraw())}onMouseOut(){this.hoveredValue=void 0,this.hoveredTs=void 0,this.hoveredTsEnd=void 0,this.hoveredIdle=void 0}}}return Wk}(),h=Oe(),m=Ae();zk.default=class{static id=\"dev.perfetto.CpuFreq\";async onTraceLoad(e){var t=e[\"engine\"],r=await e.engine.query(`select distinct cpu, ifnull(machine_id, 0) as machine\n       from cpu_counter_track`);const n=new Set;for(var a=r.iter({cpu:p.NUM,machine:p.NUM});a.valid();a.next())n.add([a.cpu,a.machine].toString());var r=e.traceInfo.cpus.filter(e=>n.has([e.cpu,e.machine].toString())),i=(await t.query(`\n      select ifnull(max(value), 0) as freq\n      from counter c\n      join cpu_counter_track t on c.track_id = t.id\n      join _counter_track_summary s on t.id = s.id\n      where t.type = 'cpu_frequency';\n    `)).firstRow({freq:p.NUM}).freq,o=new d.TrackNode({name:\"CPU Frequency\",sortOrder:-40,isSummary:!0,collapsed:!1});for(const c of r){var s,l=await t.query(`\n        select\n          id as cpuFreqId,\n          (\n            select id\n            from cpu_counter_track t\n            where t.type = 'cpu_idle'\n            and t.cpu = ${c.cpu} and ifnull(t.machine_id, 0) = ${c.machine}\n            limit 1\n          ) as cpuIdleId\n        from cpu_counter_track t\n        join _counter_track_summary using (id)\n        where t.type = 'cpu_frequency'\n        and t.cpu = ${c.cpu} and ifnull(t.machine_id, 0) = ${c.machine}\n        limit 1;\n      `);0<l.numRows()&&(s=(l=l.firstRow({cpuFreqId:p.NUM,cpuIdleId:p.NUM_NULL})).cpuFreqId,l=null===l.cpuIdleId?void 0:l.cpuIdleId,s={cpu:c.cpu,maximumValue:i,freqTrackId:s,idleTrackId:l},l=\"/cpu_freq_cpu\"+c.ucpu,e.tracks.registerTrack({uri:l,tags:{cpu:c.ucpu},renderer:new f.CpuFreqTrack(s,e),description:()=>(0,u.default)(\"\",[`Shows the CPU frequency ${c.toString()} over time.`,(0,u.default)(\"br\"),(0,u.default)(h.Anchor,{href:\"https://perfetto.dev/docs/data-sources/cpu-freq\",target:\"_blank\",icon:m.Icons.ExternalLink},\"Documentation\")])}),s=new d.TrackNode({uri:l,name:`CPU ${c.toString()} Frequency`}),o.addChildInOrder(s))}0<o.children.length&&e.workspace.addChildInOrder(o)}}}return zk}var Jk,Qk,Zk,Xk={},eI={},tI={};function rI(){if(!Qk){Qk=1,Object.defineProperty(eI,\"__esModule\",{value:!0}),eI.createCpuProfileTrack=function(t,e,r){return new i.DatasetSliceTrack({trace:t,uri:e,dataset:new o.SourceDataset({schema:{id:n.NUM,ts:n.LONG,callsite_id:n.NUM},src:\"cpu_profile_stack_sample\",filter:{col:\"utid\",eq:r}}),sliceName:()=>\"CPU Sample\",colorizer:e=>(0,l.getColorForSample)(e.callsite_id),detailsPanel:e=>new a.CpuProfileSampleFlamegraphDetailsPanel(t,s.Time.fromRaw(e.ts),r)})};const n=Ue(),a=function(){if(!Jk){Jk=1,Object.defineProperty(tI,\"__esModule\",{value:!0}),tI.CpuProfileSampleFlamegraphDetailsPanel=void 0;const e=Jr.__importDefault(xe()),n=Nu(),t=Ns(),r=qe(),a=Ru();tI.CpuProfileSampleFlamegraphDetailsPanel=class{trace;ts;flamegraph;serialization;constructor(e,t,r){this.trace=e,this.ts=t;t=(0,n.metricsFromTableOrSubquery)(`\n        (\n          select\n            id,\n            parent_id as parentId,\n            name,\n            mapping_name,\n            source_file || ':' || line_number as source_location,\n            self_count\n          from _callstacks_for_callsites!((\n            select p.callsite_id\n            from cpu_profile_stack_sample p\n            where p.ts = ${t} and p.utid = ${r}\n          ))\n        )\n      `,[{name:\"CPU Profile Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module callstacks.stack_profile\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]);this.serialization={schema:a.FLAMEGRAPH_STATE_SCHEMA,state:a.Flamegraph.createDefaultState(t)},this.flamegraph=new n.QueryFlamegraph(e,t,this.serialization)}render(){return(0,e.default)(\".pf-flamegraph-profile\",(0,e.default)(r.DetailsShell,{fillParent:!0,title:\"CPU Profile Samples\",buttons:(0,e.default)(\"span\",\"Timestamp: \",(0,e.default)(t.Timestamp,{trace:this.trace,ts:this.ts}))},this.flamegraph.render()))}}}return tI}(),i=Ge(),o=ze(),s=Fe(),l=He()}return eI}function nI(){if(!Zk){Zk=1,Object.defineProperty(Xk,\"__esModule\",{value:!0});var e=Jr;const o=Ue(),s=rI(),l=Du(),c=Me(),u=We(),d=e.__importDefault(Vc()),p=eu(),f=Nu(),h=Ru(),m=Pe(),g=\"CpuProfileTrack\";class t{static id=\"dev.perfetto.CpuProfile\";static dependencies=[d.default];async onTraceLoad(n){for(var e=(await n.engine.query(`\n      with thread_cpu_sample as (\n        select distinct utid\n        from cpu_profile_stack_sample\n      )\n      select\n        utid,\n        tid,\n        upid,\n        thread.name as threadName\n      from thread_cpu_sample\n      join thread using(utid)\n      where not is_idle\n    `)).iter({utid:o.NUM,upid:o.NUM_NULL,tid:o.NUM_NULL,threadName:o.STR_NULL});e.valid();e.next()){var t=e.utid,r=e.upid,a=e.threadName,i=(0,l.getThreadUriPrefix)(r,t)+\"_cpu_samples\",r=(n.tracks.registerTrack({uri:i,tags:{kind:g,utid:t,...(0,c.exists)(r)&&{upid:r}},renderer:(0,s.createCpuProfileTrack)(n,i,t)}),n.plugins.getPlugin(d.default).getGroupForThread(t)),t=new u.TrackNode({uri:i,name:a+\" (CPU Stack Samples)\",sortOrder:-40});r?.addChildInOrder(t)}n.selection.registerAreaSelectionTab(function(r){let n,a;return{id:\"cpu_profile_flamegraph\",name:\"CPU Profile Sample Flamegraph\",render(e){var t=void 0===n||!(0,p.areaSelectionsEqual)(n,e);if(t&&(a=function(e,t){var r=[];for(const n of t.tracks)n?.tags?.kind===g&&r.push(n.tags?.utid);if(0===r.length)return;t=(0,f.metricsFromTableOrSubquery)(`\n      (\n        select\n          id,\n          parent_id as parentId,\n          name,\n          mapping_name,\n          source_file || ':' || line_number as source_location,\n          self_count\n        from _callstacks_for_callsites!((\n          select p.callsite_id\n          from cpu_profile_stack_sample p\n          where p.ts >= ${t.start}\n            and p.ts <= ${t.end}\n            and p.utid in (${r.join(\",\")})\n        ))\n      )\n    `,[{name:\"CPU Profile Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module callstacks.stack_profile\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]);return new f.QueryFlamegraph(e,t,{state:h.Flamegraph.createDefaultState(t)})}(r,e),n=e),void 0!==a)return{isLoading:!1,content:a.render()}}}}(n)),n.onTraceReady.addListener(async()=>{var e,t,r;e=n,await(1!==(t=await(0,m.assertExists)(e.engine).query(`\n    select utid, upid\n    from cpu_profile_stack_sample\n    join thread using(utid)\n    where callsite_id is not null and not is_idle\n    order by ts desc\n    limit 1\n  `)).numRows()||({utid:t,upid:r}=t.firstRow({utid:o.NUM,upid:o.NUM_NULL}),!e.selection.selectArea({start:e.traceInfo.start,end:e.traceInfo.end,trackUris:[(0,l.getThreadUriPrefix)(r,t)+\"_cpu_samples\"]})))})}}Xk.default=t}return Xk}var aI,iI={};var oI,sI,lI={},cI={};function uI(){return oI||(oI=1,Object.defineProperty(cI,\"__esModule\",{value:!0}),cI.CRITICAL_PATH_LITE_CMD=cI.CRITICAL_PATH_CMD=void 0,cI.CRITICAL_PATH_CMD=\"dev.perfetto.CriticalPath\",cI.CRITICAL_PATH_LITE_CMD=\"dev.perfetto.CriticalPathLite\"),cI}function dI(){if(!sI){sI=1,Object.defineProperty(lI,\"__esModule\",{value:!0});const s=fs(),l=Ol(),r=$e(),c=ns(),u=Nc(),e=Ke(),t=uI(),d=Du(),p=Ue(),f={ts:\"ts\",dur:\"dur\",name:\"name\"},h=[\"id\",\"utid\",\"ts\",\"dur\",\"name\",\"table_name\"],m={ts:\"ts\",dur:\"dur\",name:\"thread_name\"},g=[\"id\",\"utid\",\"ts\",\"dur\",\"thread_name\",\"process_name\",\"table_name\"],_={ts:\"ts\",dur:\"dur\",name:\"thread_name\"},y=[\"id\",\"utid\",\"ts\",\"dur\",\"thread_name\",\"process_name\",\"table_name\"],T={ts:\"ts\",dur:\"dur\",name:\"name\"},v=[\"id\",\"utid\",\"ts\",\"dur\",\"name\",\"table_name\"];function n(e){e=e.selection.selection;if(\"area\"===e.kind)for(const t of e.tracks)if(t?.tags?.kind===r.THREAD_STATE_TRACK_KIND&&void 0!==t?.tags?.utid)return t.tags.utid;return 0}function a(){(0,e.showModal)({title:\"Error: range selection required\",content:\"This command requires an area selection over a thread state track.\"})}function i(){(0,e.showModal)({title:\"Error: thread state selection required\",content:\"This command requires a thread state slice to be selected.\"})}async function o(e,t){t=t??await async function(e){var t=e.selection.selection;if(\"track_event\"!==t.kind)return;var r=t.trackUri,r=e.tracks.getTrack(r);if(void 0===r)return;if(r.tags&&\"utid\"in r.tags&&\"number\"==typeof r.tags.utid)return(0,c.asUtid)(r.tags.utid);r=r.renderer.getDataset?.();if(void 0===r)return;if(!r.implements({utid:p.NUM}))return;e=await e.engine.query(`\n    SELECT utid FROM (${r.query()}) WHERE id = ${t.eventId}\n  `),r=e.firstRow({utid:p.NUM});return(0,c.asUtid)(r?.utid)}(e);if(void 0!==t)return(0,s.getThreadInfo)(e.engine,t)}lI.default=class{static id=\"dev.perfetto.CriticalPath\";async onTraceLoad(r){r.commands.registerCommand({id:t.CRITICAL_PATH_LITE_CMD,name:\"Critical path lite (selected thread state slice)\",callback:async e=>{const t=await o(r,e);if(void 0===t)return i();r.engine.query(\"INCLUDE PERFETTO MODULE sched.thread_executing_span;\").then(()=>(0,l.addDebugSliceTrack)({trace:r,data:{sqlSource:`\n                SELECT\n                  cr.id,\n                  cr.utid,\n                  cr.ts,\n                  cr.dur,\n                  thread.name AS thread_name,\n                  process.name AS process_name,\n                  'thread_state' AS table_name\n                FROM\n                  _thread_executing_span_critical_path(\n                    ${t.utid},\n                    trace_bounds.start_ts,\n                    trace_bounds.end_ts - trace_bounds.start_ts) cr,\n                  trace_bounds\n                JOIN thread USING(utid)\n                LEFT JOIN process USING(upid)\n              `,columns:y},title:\"\"+t.name,columns:_,argColumns:y}))}}),r.commands.registerCommand({id:t.CRITICAL_PATH_CMD,name:\"Critical path (selected thread state slice)\",callback:async e=>{const t=await o(r,e);if(void 0===t)return i();r.engine.query(\"INCLUDE PERFETTO MODULE sched.thread_executing_span_with_slice;\").then(()=>(0,l.addDebugSliceTrack)({trace:r,data:{sqlSource:`\n                SELECT cr.id, cr.utid, cr.ts, cr.dur, cr.name, cr.table_name\n                  FROM\n                    _thread_executing_span_critical_path_stack(\n                      ${t.utid},\n                      trace_bounds.start_ts,\n                      trace_bounds.end_ts - trace_bounds.start_ts) cr,\n                    trace_bounds WHERE name IS NOT NULL\n              `,columns:v},title:\"\"+t.name,columns:T,argColumns:v}))}}),r.commands.registerCommand({id:\"dev.perfetto.CriticalPathLite_AreaSelection\",name:\"Critical path lite (over area selection)\",callback:async()=>{var e=n(r),t=await(0,d.getTimeSpanOfSelectionOrVisibleWindow)(r);if(0===e)return a();await r.engine.query(\"INCLUDE PERFETTO MODULE sched.thread_executing_span;\"),await(0,l.addDebugSliceTrack)({trace:r,data:{sqlSource:`\n                SELECT\n                  cr.id,\n                  cr.utid,\n                  cr.ts,\n                  cr.dur,\n                  thread.name AS thread_name,\n                  process.name AS process_name,\n                  'thread_state' AS table_name\n                FROM\n                  _thread_executing_span_critical_path(\n                      ${e},\n                      ${t.start},\n                      ${t.end} - ${t.start}) cr\n                JOIN thread USING(utid)\n                LEFT JOIN process USING(upid)\n                `,columns:g},title:(await(0,s.getThreadInfo)(r.engine,e)).name??\"<thread name>\",columns:m,argColumns:g})}}),r.commands.registerCommand({id:\"dev.perfetto.CriticalPath_AreaSelection\",name:\"Critical path  (over area selection)\",callback:async()=>{var e=n(r),t=await(0,d.getTimeSpanOfSelectionOrVisibleWindow)(r);if(0===e)return a();await r.engine.query(\"INCLUDE PERFETTO MODULE sched.thread_executing_span_with_slice;\"),await(0,l.addDebugSliceTrack)({trace:r,data:{sqlSource:`\n                SELECT cr.id, cr.utid, cr.ts, cr.dur, cr.name, cr.table_name\n                FROM\n                _critical_path_stack(\n                  ${e},\n                  ${t.start},\n                  ${t.end} - ${t.start}, 1, 1, 1, 1) cr\n                WHERE name IS NOT NULL\n                `,columns:h},title:(await(0,s.getThreadInfo)(r.engine,e)).name??\"<thread name>\",columns:f,argColumns:h})}}),r.commands.registerCommand({id:\"dev.perfetto.CriticalPathPprof_AreaSelection\",name:\"Critical path pprof (over area selection)\",callback:async()=>{var e=n(r),t=await(0,d.getTimeSpanOfSelectionOrVisibleWindow)(r);if(0===e)return a();(0,u.addQueryResultsTab)(r,{query:`\n              INCLUDE PERFETTO MODULE sched.thread_executing_span_with_slice;\n              SELECT *\n                FROM\n                  _thread_executing_span_critical_path_graph(\n                  \"criical_path\",\n                    ${e},\n                    ${t.start},\n                    ${t.end} - ${t.start}) cr`,title:\"Critical path\"})}})}}}return lI}var pI,fI={};var hI,mI={};function gI(){if(!hI){hI=1,Object.defineProperty(mI,\"__esModule\",{value:!0});const l=Nc(),c=Fe(),u=Me(),d=Ue();let s;mI.default=class{static id=\"dev.perfetto.DeeplinkQuerystring\";static onActivate(e){s=e.initialRouteArgs}async onTraceLoad(o){o.onTraceReady.addListener(async()=>{var e,t,r,n,a,i=s;(s=void 0)!==i&&(a=o,{table:e=\"slice\",ts:n,dur:t}=e=i,(0,u.exists)(n)&&((r=[]).push(\"ts = \"+n),(0,u.exists)(t)&&r.push(\"dur = \"+t),0!==(n=await a.engine.query(`\n    select\n      id\n    from\n      ${e}\n    where ${r.join(\" AND \")}\n  `)).numRows())&&(t=n.firstRow({id:d.NUM})[\"id\"],a.selection.selectSqlEvent(e,t,{scrollToSelection:!0,switchToCurrentSelectionTab:!1})),await 0,void 0!==i.visStart&&void 0!==i.visEnd&&(r=o,n=i.visStart,a=i.visEnd,n=c.Time.fromRaw(BigInt(n)),a=c.Time.fromRaw(BigInt(a)),n<a)&&r.traceInfo.start<=n&&a<=r.traceInfo.end&&r.timeline.setViewportTime(n,a),void 0!==i.query)&&(0,l.addQueryResultsTab)(o,{query:i.query,title:\"Deeplink Query\"})})}}}return mI}var _I,yI,TI={},vI={};function bI(){if(!yI){yI=1,Object.defineProperty(TI,\"__esModule\",{value:!0});var e=Jr;const s=uu(),l=Vi(),c=$e(),u=We(),d=Ue(),p=e.__importDefault(Wc()),f=function(){if(!_I){_I=1,Object.defineProperty(vI,\"__esModule\",{value:!0}),vI.EntityStateResidencySelectionAggregator=void 0;const a=Fe(),t=$e();vI.EntityStateResidencySelectionAggregator=class{id=\"entity_state_residency_aggregation\";probe(r){const n=[];for(const e of r.tracks)e?.tags?.kind===t.COUNTER_TRACK_KIND&&\"entity_state\"===e?.tags?.type&&e.tags?.trackIds&&n.push(...e.tags.trackIds);if(0!==n.length)return{prepareData:async e=>{var t=r.end-r.start,t=a.Duration.toSeconds(t),t=`\n          INCLUDE PERFETTO MODULE android.entity_state_residency;\n          CREATE OR REPLACE PERFETTO TABLE ${this.id} AS\n            WITH aggregated AS (\n              SELECT\n                track_id,\n                entity_name,\n                state_name,\n                COUNT(state_time_since_boot) AS count,\n                value_at_max_ts(-ts, state_time_since_boot) AS first,\n                value_at_max_ts(ts, state_time_since_boot) AS last\n              FROM android_entity_state_residency\n              WHERE track_id in (${n})\n                AND ts BETWEEN ${r.start} AND ${r.end}\n              GROUP BY track_id, entity_name, state_name\n            )\n            SELECT\n              entity_name,\n              state_name,\n              count,\n              (last - first) / 1e6 AS delta_value,\n              (last - first)/(${t} * 1e9) AS rate_percent\n            FROM aggregated\n            GROUP BY track_id, entity_name, state_name\n        `;return await e.query(t),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Entity\",columnId:\"entity_name\"},{title:\"State\",columnId:\"state_name\"},{title:\"Time in state (ms)\",columnId:\"delta_value\",sum:!0},{title:\"Time in state\",formatHint:\"PERCENT\",columnId:\"rate_percent\",sum:!0},{title:\"Sample Count\",columnId:\"count\"}]}getTabName(){return\"Entity State Residency\"}getDefaultSorting(){return{column:\"entity_name\",direction:\"DESC\"}}}}return vI}();class t{static id=\"dev.perfetto.EntityStateResidency\";static dependencies=[p.default];async onTraceLoad(e){e.selection.registerAreaSelectionTab((0,s.createAggregationTab)(e,new f.EntityStateResidencySelectionAggregator,200));let t,r;for(var n=(await e.engine.query(`\n          INCLUDE PERFETTO MODULE android.entity_state_residency;\n          SELECT\n            entity_name AS entity,\n            state_name AS state,\n            track_id AS trackId\n          FROM android_entity_state_residency\n          GROUP BY\n            entity_name, state_name, track_id\n          ORDER BY\n            entity_name, state_name\n        `)).iter({entity:d.STR,state:d.STR,trackId:d.NUM});n.valid();n.next()){t||(a=e.plugins.getPlugin(p.default).getOrCreateStandardGroup(e.workspace,\"POWER\"),t=new u.TrackNode({name:\"Entity Residency\"}),a.addChildInOrder(t)),r?.name!==n.entity&&(r=new u.TrackNode({name:n.entity,isSummary:!0}),t.addChildInOrder(r));var a=`/entity_state_residency_${n.entity}_`+n.state,i=n.state,o=await(0,l.createQueryCounterTrack)({trace:e,uri:a,data:{sqlSource:`\n              SELECT\n                ts,\n                state_time_since_boot / 1e9 AS value\n              FROM android_entity_state_residency\n              WHERE track_id = ${n.trackId}\n            `,columns:[\"ts\",\"value\"]},columns:{ts:\"ts\",value:\"value\"},options:{yMode:\"rate\",yRangeSharingKey:\"entity_state_residency_\"+n.entity,unit:\"s\"}});e.tracks.registerTrack({uri:a,tags:{kind:c.COUNTER_TRACK_KIND,trackIds:[n.trackId],type:\"entity_state\"},renderer:o}),r.addChildInOrder(new u.TrackNode({uri:a,name:i}))}}}TI.default=t}return TI}var EI,SI,AI,OI,CI,wI={},kI={},II={},RI={},NI={},MI={};function PI(){if(!EI){EI=1,Object.defineProperty(MI,\"__esModule\",{value:!0}),MI.SchedRef=void 0,MI.goToSchedSlice=function(e,t){e.selection.selectSqlEvent(\"sched_slice\",t,{scrollToSelection:!0})};const t=Jr.__importDefault(xe()),r=Oe(),n=Ae();MI.SchedRef=class{view(e){return(0,t.default)(r.Anchor,{icon:n.Icons.UpdateSelection,onclick:()=>{e.attrs.trace.selection.selectSqlEvent(\"sched_slice\",e.attrs.id,{switchToCurrentSelectionTab:e.attrs.switchToCurrentSelectionTab??!0,scrollToSelection:!0})}},e.attrs.name??\"Sched \"+e.attrs.id)}}}return MI}function DI(){if(SI)return NI;SI=1,Object.defineProperty(NI,\"__esModule\",{value:!0}),NI.ArgSetIdColumn=NI.ProcessIdColumn=NI.ThreadIdColumn=NI.ThreadStateIdColumn=NI.SchedIdColumn=NI.SliceIdColumn=NI.DurationColumn=NI.TimestampColumn=NI.StandardColumn=void 0,NI.argTableColumn=b;const r=Jr.__importDefault(xe()),t=j(),n=Fe(),a=Ue(),i=ns(),o=ep(),s=ks(),l=rp(),c=PI(),u=Ks(),d=lp(),p=Gs(),f=Ns(),h=bd(),m=Ku();function g(e,t,r){return(0,o.renderError)(`Wrong type for ${e} column ${(0,m.sqlColumnId)(t)}: bigint expected, ${typeof r} found`)}class e{column;params;constructor(e,t){this.column=e,this.params=t}renderCell(e,t){return(0,h.renderStandardCell)(e,this.column,t)}initialColumns(){return this.params?.startsHidden?[]:[this]}}NI.StandardColumn=e;class _{trace;column;constructor(e,t){this.trace=e,this.column=t}renderCell(e,t){return\"bigint\"!=typeof(e=\"number\"==typeof e?BigInt(Math.round(e)):e)?(0,h.renderStandardCell)(e,this.column,t):{content:(0,r.default)(f.Timestamp,{trace:this.trace,ts:n.Time.fromRaw(e)}),menu:[t&&(0,h.getStandardContextMenuItems)(e,this.column,t)],isNumerical:!0}}}NI.TimestampColumn=_;class y{trace;column;constructor(e,t){this.trace=e,this.column=t}renderCell(e,t){return\"bigint\"!=typeof(e=\"number\"==typeof e?BigInt(Math.round(e)):e)?(0,h.renderStandardCell)(e,this.column,t):{content:(0,r.default)(s.DurationWidget,{trace:this.trace,dur:n.Duration.fromRaw(e)}),menu:[t&&(0,h.getStandardContextMenuItems)(e,this.column,t)],isNumerical:!0}}}NI.DurationColumn=y;NI.SliceIdColumn=class E{trace;column;params;constructor(e,t,r){this.trace=e,this.column=t,this.params=r}renderCell(e,t){return t&&null!==e?{content:(0,r.default)(u.SliceRef,{trace:this.trace,id:(0,i.asSliceSqlId)(Number(e)),name:\"\"+e,switchToCurrentSelectionTab:!1}),menu:(0,h.getStandardContextMenuItems)(e,this.column,t),isNumerical:!0}:(0,h.renderStandardCell)(e,this.column,t)}listDerivedColumns(){if(\"id\"!==this.params?.type)return async()=>new Map([[\"ts\",new _(this.trace,this.getChildColumn(\"ts\"))],[\"dur\",new y(this.trace,this.getChildColumn(\"dur\"))],[\"name\",new e(this.getChildColumn(\"name\"))],[\"parent_id\",new E(this.trace,this.getChildColumn(\"parent_id\"))]])}getChildColumn(e){return{column:e,source:{table:\"slice\",joinOn:{id:this.column}}}}};NI.SchedIdColumn=class{trace;column;constructor(e,t){this.trace=e,this.column=t}renderCell(e,t){return t&&null!==e?\"bigint\"!=typeof e?{content:g(\"id\",this.column,e)}:{content:(0,r.default)(c.SchedRef,{trace:this.trace,id:(0,i.asSchedSqlId)(Number(e)),name:\"\"+e,switchToCurrentSelectionTab:!1}),menu:(0,h.getStandardContextMenuItems)(e,this.column,t),isNumerical:!0}:(0,h.renderStandardCell)(e,this.column,t)}};NI.ThreadStateIdColumn=class{trace;column;constructor(e,t){this.trace=e,this.column=t}renderCell(e,t){return t&&null!==e?\"bigint\"!=typeof e?{content:g(\"id\",this.column,e)}:{content:(0,r.default)(p.ThreadStateRef,{trace:this.trace,id:(0,i.asThreadStateSqlId)(Number(e)),name:\"\"+e,switchToCurrentSelectionTab:!1}),menu:(0,h.getStandardContextMenuItems)(e,this.column,t),isNumerical:!0}:(0,h.renderStandardCell)(e,this.column,t)}};NI.ThreadIdColumn=class{trace;column;params;constructor(e,t,r){this.trace=e,this.column=t,this.params=r}renderCell(e,t){if(!t||null===e)return(0,h.renderStandardCell)(e,this.column,t);if(\"bigint\"!=typeof e)throw new Error(\"thread.utid is expected to be bigint, got \"+typeof e);return{content:\"\"+e,menu:[(0,d.showThreadDetailsMenuItem)(this.trace,(0,i.asUtid)(Number(e))),(0,h.getStandardContextMenuItems)(e,this.column,t)],isNumerical:!0}}listDerivedColumns(){if(\"id\"!==this.params?.type)return async()=>new Map([[\"tid\",new e(this.getChildColumn(\"tid\"))],[\"name\",new e(this.getChildColumn(\"name\"))],[\"start_ts\",new _(this.trace,this.getChildColumn(\"start_ts\"))],[\"end_ts\",new _(this.trace,this.getChildColumn(\"end_ts\"))],[\"upid\",new T(this.trace,this.getChildColumn(\"upid\"))],[\"is_main_thread\",new e(this.getChildColumn(\"is_main_thread\"))]])}initialColumns(){return[this,new e(this.getChildColumn(\"tid\")),new e(this.getChildColumn(\"name\"))]}getChildColumn(e){return{column:e,source:{table:\"thread\",joinOn:{id:this.column},innerJoin:!0===this.params?.notNull}}}};class T{trace;column;params;constructor(e,t,r){this.trace=e,this.column=t,this.params=r}renderCell(e,t){if(!t||null===e)return(0,h.renderStandardCell)(e,this.column,t);if(\"bigint\"!=typeof e)throw new Error(\"thread.upid is expected to be bigint, got \"+typeof e);return{content:\"\"+e,menu:[(0,l.showProcessDetailsMenuItem)(this.trace,(0,i.asUpid)(Number(e))),(0,h.getStandardContextMenuItems)(e,this.column,t)],isNumerical:!0}}listDerivedColumns(){if(\"id\"!==this.params?.type)return async()=>new Map([[\"pid\",new e(this.getChildColumn(\"pid\"))],[\"name\",new e(this.getChildColumn(\"name\"))],[\"start_ts\",new _(this.trace,this.getChildColumn(\"start_ts\"))],[\"end_ts\",new _(this.trace,this.getChildColumn(\"end_ts\"))],[\"parent_upid\",new T(this.trace,this.getChildColumn(\"parent_upid\"))],[\"is_main_thread\",new e(this.getChildColumn(\"is_main_thread\"))]])}initialColumns(){return[this,new e(this.getChildColumn(\"pid\")),new e(this.getChildColumn(\"name\"))]}getChildColumn(e){return{column:e,source:{table:\"process\",joinOn:{id:this.column},innerJoin:!0===this.params?.notNull}}}}NI.ProcessIdColumn=T;class v{argSetId;key;column;id;constructor(e,t){this.argSetId=e,this.key=t,this.id=`${(0,m.sqlColumnId)(this.argSetId)}[${this.key}]`,this.column=new m.SqlExpression(e=>`COALESCE(${e[0]}, ${e[1]}, ${e[2]})`,[this.getRawColumn(\"string_value\"),this.getRawColumn(\"int_value\"),this.getRawColumn(\"real_value\")],this.id)}supportingColumns(){return{type:this.getRawColumn(\"value_type\")}}getRawColumn(e){return{column:e,source:{table:\"args\",joinOn:{arg_set_id:this.argSetId,key:\"\"+(0,t.sqliteString)(this.key)}},id:this.id+\".\"+e.replace(/_value$/g,\"\")}}renderCell(e,t,r){return null===e?(0,h.renderStandardCell)(e,this.getRawColumn(\"value_type\"),t):\"int\"===r?.type?(0,h.renderStandardCell)(e,this.getRawColumn(\"int_value\"),t):\"string\"===r?.type?(0,h.renderStandardCell)(e,this.getRawColumn(\"string_value\"),t):\"real\"===r?.type?(0,h.renderStandardCell)(e,this.getRawColumn(\"real_value\"),t):(0,h.renderStandardCell)(e,this.column,t)}}function b(e,t){return new v(e,t)}return NI.ArgSetIdColumn=class{column;constructor(e){this.column=e}renderCell(e,t){return(0,h.renderStandardCell)(e,this.column,t)}listDerivedColumns(n){return async()=>{for(var e=await n.trace.engine.query(`\n        SELECT\n          DISTINCT args.key\n        FROM (${n.getSqlQuery({arg_set_id:this.column})}) data\n        JOIN args USING (arg_set_id)\n      `),t=new Map,r=e.iter({key:a.STR});r.valid();r.next())t.set(r.key,b(this.column,r.key));return t}}initialColumns(){return[]}},NI}function xI(){if(!AI){AI=1,Object.defineProperty(RI,\"__esModule\",{value:!0}),RI.unknownType=void 0,RI.createTableColumnFromPerfettoSql=function(e,t,r){if(\"timestamp\"===t.type.shortName)return new n.TimestampColumn(e,t.name);if(\"duration\"===t.type.shortName)return new n.DurationColumn(e,t.name);if(\"id\"===t.type.shortName)switch(r.toLowerCase()){case\"slice\":return new n.SliceIdColumn(e,t.name,{type:\"id\"});case\"thread\":return new n.ThreadIdColumn(e,t.name,{type:\"id\"});case\"process\":return new n.ProcessIdColumn(e,t.name,{type:\"id\"});case\"thread_state\":return new n.ThreadStateIdColumn(e,t.name);case\"sched\":return new n.SchedIdColumn(e,t.name)}else if(\"joinid\"===t.type.shortName){if(void 0===t.type.tableAndColumn)return new n.StandardColumn(t.name);switch(t.type.tableAndColumn.table.toLowerCase()){case\"slice\":return new n.SliceIdColumn(e,t.name);case\"thread\":return new n.ThreadIdColumn(e,t.name);case\"process\":return new n.ProcessIdColumn(e,t.name);case\"thread_state\":return new n.ThreadStateIdColumn(e,t.name);case\"sched\":return new n.SchedIdColumn(e,t.name)}}return new n.StandardColumn(t.name)};const n=DI();RI.unknownType={name:\"unknown\",shortName:\"unknown\"}}return RI}function LI(){if(OI)return II;OI=1,Object.defineProperty(II,\"__esModule\",{value:!0}),II.SQL_MODULES_DOCS_SCHEMA=II.TableAndColumnImpl=II.StdlibModuleImpl=II.StdlibPackageImpl=II.SqlModulesImpl=void 0;var e=Ne();const t=xI();II.SqlModulesImpl=class{packages;constructor(t,e){this.packages=e.map(e=>new r(t,e))}findAllTablesWithLinkedId(t){var e=[];for(const r of this.listTables())r.linkedIdColumns.find(e=>e.type.tableAndColumn&&e.type.tableAndColumn.isEqual(t))&&e.push(r);return e}getTable(e){for(const r of this.packages){var t=r.getTable(e);if(void 0!==t)return t}}listTables(){return this.packages.flatMap(e=>e.listTables())}listTablesNames(){return this.packages.flatMap(e=>e.listTablesNames())}getModuleForTable(e){for(const r of this.packages){var t=r.getModuleForTable(e);if(t)return t}}listModules(){return this.packages.flatMap(e=>e.modules)}};class r{name;modules;constructor(e,t){this.name=t.name,this.modules=[];for(const r of t.modules)this.modules.push(new n(e,r))}getTable(e){for(const t of this.modules)for(const r of t.tables)if(r.name==e)return r}listTables(){return this.modules.flatMap(e=>e.tables)}listTablesNames(){return this.listTables().map(e=>e.name)}getModuleForTable(e){for(const t of this.modules)for(const r of t.tables)if(r.name==e)return t}getSqlTableDescription(e){for(const t of this.modules)for(const r of t.tables)if(r.name==e)return t.getSqlTableDescription(e)}}II.StdlibPackageImpl=r;class n{includeKey;tables;functions;tableFunctions;macros;constructor(t,e){this.includeKey=e.module_name;const r=this.includeKey.startsWith(\"prelude\")?void 0:this.includeKey;this.tables=e.data_objects.map(e=>new s(t,e,r)),this.functions=e.functions.map(e=>new o(e)),this.tableFunctions=e.table_functions.map(e=>new i(e)),this.macros=e.macros.map(e=>new a(e))}getTable(e){for(const t of this.tables)if(t.name==e)return t}getSqlTableDescription(e){e=this.getTable(e);if(void 0!==e)return{imports:[this.includeKey],name:e.name,columns:e.getTableColumns()}}}II.StdlibModuleImpl=n;class a{name;summaryDesc;description;args;returnType;constructor(e){this.name=e.name,this.summaryDesc=e.summary_desc,this.description=e.desc,this.returnType=e.return_type,this.args=[],this.args=e.args.map(e=>new c(e))}}class i{name;summaryDesc;description;args;returnCols;constructor(e){this.name=e.name,this.summaryDesc=e.summary_desc,this.description=e.desc,this.args=e.args.map(e=>new c(e)),this.returnCols=e.cols.map(e=>new l(e))}}class o{name;summaryDesc;description;args;returnType;returnDesc;constructor(e){this.name=e.name,this.summaryDesc=e.summary_desc,this.description=e.desc,this.returnType=e.return_type,this.returnDesc=e.return_desc,this.args=e.args.map(e=>new c(e))}}class s{trace;name;includeKey;description;type;columns;idColumn;linkedIdColumns;joinIdColumns;constructor(e,t,r){this.trace=e,this.name=t.name,this.includeKey=r,this.description=t.desc,this.type=t.type,this.columns=t.cols.map(e=>new l(e)),this.linkedIdColumns=[],this.joinIdColumns=[];for(const n of this.columns)\"id\"===n.type.name?this.idColumn=n:\"id\"===n.type.shortName?this.linkedIdColumns.push(n):\"joinid\"===n.type.shortName&&this.joinIdColumns.push(n)}getIdColumns(){return this.columns.filter(e=>\"id\"===e.type.shortName)}getJoinIdColumns(){return this.columns.filter(e=>\"joinid\"===e.type.shortName)}getIdTables(){return this.getIdColumns().map(e=>e.type.tableAndColumn).filter(e=>void 0!==e)}getJoinIdTables(){return this.getJoinIdColumns().map(e=>e.type.tableAndColumn).filter(e=>void 0!==e)}getTableColumns(){return this.columns.map(e=>(0,t.createTableColumnFromPerfettoSql)(this.trace,e,this.name))}}class l{name;type;description;constructor(e){this.type={name:e.type.toLowerCase(),shortName:e.type.split(\"(\")[0].toLowerCase(),tableAndColumn:e.table&&e.column?new u(e.table.toLowerCase(),e.column.toLowerCase()):void 0},this.description=e.desc,this.name=e.name}}class c{name;description;type;constructor(e){this.type=e.type,this.description=e.desc,this.name=e.name}}class u{table;column;constructor(e,t){this.table=e,this.column=t}isEqual(e){return e.table===this.table&&e.column===this.column}}II.TableAndColumnImpl=u;var d=e.z.object({name:e.z.string(),type:e.z.string(),desc:e.z.string(),table:e.z.string().nullable(),column:e.z.string().nullable()}),p=e.z.object({name:e.z.string(),desc:e.z.string(),summary_desc:e.z.string(),type:e.z.string(),cols:e.z.array(d)}),f=e.z.object({name:e.z.string(),desc:e.z.string(),summary_desc:e.z.string(),args:e.z.array(d),return_type:e.z.string(),return_desc:e.z.string()}),h=e.z.object({name:e.z.string(),desc:e.z.string(),summary_desc:e.z.string(),args:e.z.array(d),cols:e.z.array(d)}),d=e.z.object({name:e.z.string(),desc:e.z.string(),summary_desc:e.z.string(),return_desc:e.z.string(),return_type:e.z.string(),args:e.z.array(d)}),p=e.z.object({module_name:e.z.string(),data_objects:e.z.array(p),functions:e.z.array(f),table_functions:e.z.array(h),macros:e.z.array(d)}),f=e.z.object({name:e.z.string(),modules:e.z.array(p)});return II.SQL_MODULES_DOCS_SCHEMA=e.z.array(f),II}function FI(){if(!CI){CI=1,Object.defineProperty(kI,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=Ch();var e=Ja();const n=tl(),a=LI(),i=(0,e.defer)();kI.default=class{static id=\"dev.perfetto.SqlModules\";sqlModules;static onActivate(e){!async function(){var e=await fetch((0,r.assetSrc)(\"stdlib_docs.json\")),e=await e.json();return a.SQL_MODULES_DOCS_SCHEMA.parse(e)}().then(i.resolve.bind(i))}async onTraceLoad(r){i.then(e=>{this.sqlModules=new a.SqlModulesImpl(r,e),t.default.redraw()}),r.commands.registerCommand({id:\"dev.perfetto.OpenSqlModulesTable\",name:\"Open table...\",callback:async()=>{var e,t;this.sqlModules?(e=this.sqlModules.listTablesNames(),void 0!==(e=await r.omnibox.prompt(\"Choose a table...\",e))&&void 0!==(t=this.sqlModules.getModuleForTable(e))&&(t=t.getSqlTableDescription(e))&&n.extensions.addLegacySqlTableTab(r,{table:t})):window.alert(\"Sql modules are still loading... Please wait.\")}})}getSqlModules(){return this.sqlModules}}}return kI}var UI,BI,jI={},HI={},GI={},VI={};function qI(){return UI||(UI=1,Object.defineProperty(VI,\"__esModule\",{value:!0}),VI.columnInfoFromSqlColumn=function(e,t=!1){return{name:e.name,type:e.type.name,checked:t,column:e}},VI.columnInfoFromName=function(e,t=!1){return{name:e,type:\"NA\",checked:t,column:{name:e,type:{name:\"NA\",shortName:\"NA\"}}}},VI.newColumnInfo=r,VI.newColumnInfoList=function(e,t){return e.map(e=>r(e,t))}),VI;function r(e,t){return{name:e.alias??e.column.name,type:e.column.type.name,column:e.column,alias:void 0,checked:t??e.checked}}}function zI(){if(!BI){var i,t;BI=1,Object.defineProperty(GI,\"__esModule\",{value:!0}),GI.NodeType=void 0,GI.nextNodeId=function(){return(e++).toString()},GI.createSelectColumnsProto=function(e){if(!e.finalCols.every(e=>e.checked)){var t,r=[];for(const n of e.finalCols)!1!==n.checked&&((t=new a.default.PerfettoSqlStructuredQuery.SelectColumn).columnName=n.column.name,n.alias&&(t.alias=n.alias),r.push(t));return r}},GI.createFinalColumns=function(e){return(0,r.newColumnInfoList)(e.sourceCols,!0)},GI.queryToRun=function(e){if(void 0===e)return\"N/A\";var t=e.modules.map(e=>`INCLUDE PERFETTO MODULE ${e};`);return t.join(\"\\n\")+e.preambles.join(\"\\n\")+e.sql},GI.analyzeNode=async function(t,r){if(t.state.isExecuted&&!t.state.hasOperationChanged&&t.type!==i.kSqlSource){const a={sql:\"SELECT * FROM \"+(t.meterialisedAs??\"\"),textproto:\"\",modules:[],preambles:[],columns:[]};return a}var n=function(t){if(void 0!==t.finalCols){var r=[];let e=t;for(;e;){var n=e.getStructuredQuery();if(void 0===n)return;if(r.push(n),e.prevNodes?.[0]){if(!e.prevNodes[0].validate())return;e=e.prevNodes[0]}else e=void 0}return r.reverse()}}(t);if(void 0!==n){r=await r.analyzeStructuredQuery(n);if(r.error)return Error(r.error);if(0===r.results.length)return Error(\"No structured query results\");if(r.results.length!==n.length)return Error(`Wrong structured query results. Asked for ${n.length}, received `+r.results.length);n=r.results[r.results.length-1];if(null!==n.sql&&void 0!==n.sql){if(!n.textproto)return Error(\"No textproto in structured query results\");let e=n.sql;!function(e){return e.type!==i.kSqlSource&&e.type!=i.kIntervalIntersect}(t)||(t.meterialisedAs||(t.meterialisedAs=\"exp_\"+t.nodeId),r=`CREATE OR REPLACE PERFETTO TABLE ${t.meterialisedAs??\"exp_\"+t.nodeId} AS \n`+n.sql,t=\"SELECT * FROM \"+(t.meterialisedAs??\"exp_\"+t.nodeId),e=r+`;\n`+t);const a={sql:e,textproto:n.textproto??\"\",modules:n.modules??[],preambles:n.preambles??[],columns:n.columns??[]};return a}}},GI.setOperationChanged=function(e){let t=e;for(;t&&!t.state.hasOperationChanged;){t.state.hasOperationChanged=!0;const r=[];t.nextNodes.forEach(e=>{r.push(e)}),t=r.shift()}},GI.isAQuery=function(e){return void 0!==e&&!(e instanceof Error)&&void 0!==e.sql};const a=Jr.__importDefault(dh()),r=qI();let e=0;(t=i||(GI.NodeType=i={}))[t.kTable=0]=\"kTable\",t[t.kSimpleSlices=1]=\"kSimpleSlices\",t[t.kSqlSource=2]=\"kSqlSource\",t[t.kSubQuery=3]=\"kSubQuery\",t[t.kAggregation=4]=\"kAggregation\",t[t.kModifyColumns=5]=\"kModifyColumns\",t[t.kIntervalIntersect=6]=\"kIntervalIntersect\"}return GI}var WI,$I,KI,YI={},JI={},QI={};function ZI(){if(!WI){WI=1,Object.defineProperty(QI,\"__esModule\",{value:!0}),QI.CardStack=QI.Card=void 0;const a=Jr.__importDefault(xe()),n=be();QI.Card=class{view(e){const{interactive:t,...r}=e.attrs;return(0,a.default)(\".pf-card\",{...r,class:(0,n.classNames)(r.className,t&&\"pf-interactive\")},e.children)}};QI.CardStack=class{view({attrs:e,children:t}){const{direction:r=\"vertical\",...n}=e;e=\"horizontal\"===r?\".pf-card-stack--horizontal\":\"\";return(0,a.default)(\".pf-card-stack\"+e,n,t)}}}return QI}function XI(){if(!$I){$I=1,Object.defineProperty(JI,\"__esModule\",{value:!0}),JI.TableList=void 0;const s=Jr.__importDefault(xe()),t=Rp(),l=ZI(),n=nu();class a{view({attrs:t}){return(0,s.default)(\"input[type=text].pf-search\",{placeholder:t.placeholder??\"Search Perfetto SQL tables...\",oninput:e=>{t.onQueryChange(e.target.value)},value:t.query,oncreate:e=>{t.autofocus&&e.dom.focus()}})}}class i{view({attrs:e}){const{tableWithModule:t,segments:r,onTableClick:n}=e,{table:a,moduleName:i}=t;var e=r.map(e=>(0,s.default)(e.matching?\"strong\":\"span\",e.value)),o=i.split(\".\")[0];return(0,s.default)(l.Card,{onclick:()=>n(a.name),interactive:!0},(0,s.default)(\".pf-table-card\",(0,s.default)(\".table-name\",e),\"prelude\"===o?null:(0,s.default)(\".table-module\",i),a.description&&(0,s.default)(\".table-description\",a.description)))}}JI.TableList=class{view({attrs:r}){var e=r.sqlModules.listModules().flatMap(t=>t.tables.map(e=>({table:e,moduleName:t.includeKey}))),e=new t.FuzzyFinder(e,e=>e.table.name).find(r.searchQuery).map(({item:e,segments:t})=>(0,s.default)(i,{tableWithModule:e,segments:t,onTableClick:r.onTableClick}));return(0,s.default)(\".pf-table-list\",(0,s.default)(a,{query:r.searchQuery,onQueryChange:r.onSearchQueryChange,autofocus:r.autofocus}),(0,s.default)(l.CardStack,0<e.length?(0,s.default)(l.CardStack,e):(0,s.default)(n.EmptyState,{title:\"No tables found\"})))}}}return JI}function eR(){if(!KI){KI=1,Object.defineProperty(YI,\"__esModule\",{value:!0}),YI.ExplorePageHelp=void 0;const t=Jr.__importDefault(xe()),r=XI(),e=ZI();YI.ExplorePageHelp=class{searchQuery=\"\";view({attrs:e}){return(0,t.default)(\".pf-explore-page-help\",this.renderGettingStarted(),(0,t.default)(r.TableList,{...e,searchQuery:this.searchQuery,onSearchQueryChange:e=>{this.searchQuery=e}}))}renderGettingStarted(){return(0,t.default)(\".pf-getting-started\",(0,t.default)(e.CardStack,{direction:\"horizontal\"},(0,t.default)(e.Card,{interactive:!0},(0,t.default)(\"h4\",\"1. Add a source node\"),(0,t.default)(\"p\",\"Begin by adding a new source node from the panel on the left.\")),(0,t.default)(e.Card,{interactive:!0},(0,t.default)(\"h4\",\"2. Configure the node\"),(0,t.default)(\"p\",\"Click on a node to open its configuration options in this panel.\")),(0,t.default)(e.Card,{interactive:!0},(0,t.default)(\"h4\",\"3. View the results\"),(0,t.default)(\"p\",\"The output of the selected node will be shown in the table below.\"))))}}}return YI}var tR,rR,nR={},aR={},iR={},Mt={},oR={},sR={};function lR(){if(!tR){tR=1;let a=[],i=[];var r=\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<r.length;e++)(e%2?i:a).push(t+=r[e]);const f=8205;function o(r){if(r<768)return!1;for(let e=0,t=a.length;;){var n=e+t>>1;if(r<a[n])t=n;else{if(!(r>=i[n]))return!0;e=1+n}if(e==t)return!1}}function s(e){return 127462<=e&&e<=127487}function l(r,n,t){if(n!=r.length){n&&u(r.charCodeAt(n))&&d(r.charCodeAt(n-1))&&n--;let e=c(r,n);for(n+=p(e);n<r.length;){var a=c(r,n);if(e==f||a==f||t&&o(a))n+=p(a),e=a;else{if(!s(a))break;{let e=0,t=n-2;for(;0<=t&&s(c(r,t));)e++,t-=2;if(e%2==0)break;n+=2}}}}return n}function c(e,t){var r=e.charCodeAt(t);return d(r)&&t+1!=e.length&&u(e=e.charCodeAt(t+1))?e-56320+(r-55296<<10)+65536:r}function u(e){return 56320<=e&&e<57344}function d(e){return 55296<=e&&e<56320}function p(e){return e<65536?1:2}sR.findClusterBreak=function(e,t,r=!0,n=!0){return(r?l:function(e,t,r){for(;0<t;){var n=l(e,t-2,r);if(n<t)return n;t--}return 0})(e,t,n)},sR.isExtendingChar=o}return sR}function cR(){if(!rR){rR=1;{var c=oR;var U=lR();class g{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length `+this.length);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,r){[e,t]=l(this,e,t);var n=[];return this.decompose(0,e,n,2),r.length&&r.decompose(0,r.length,n,3),this.decompose(t,this.length,n,1),y.from(n,this.length-(t-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=l(this,e,t);var r=[];return this.decompose(e,t,r,0),y.from(r,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;var r=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),a=new o(this),i=new o(e);for(let e=r,t=r;;){if(a.next(e),i.next(e),e=0,a.lineBreak!=i.lineBreak||a.done!=i.done||a.value!=i.value)return!1;if(t+=a.value.length,a.done||t>=n)return!0}}iter(e=1){return new o(this,e)}iterRange(e,t=this.length){return new oe(this,e,t)}iterLines(e,t){let r;return r=null==e?this.iter():(null==t&&(t=this.lines+1),e=this.line(e).from,this.iterRange(e,Math.max(e,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))),new se(r)}toString(){return this.sliceString(0)}toJSON(){var e=[];return this.flatten(e),e}constructor(){}static of(e){if(0==e.length)throw new RangeError(\"A document must have at least one line\");return 1!=e.length||e[0]?e.length<=32?new _(e):y.from(_.split(e,[])):g.empty}}class _ extends g{constructor(e,t=function(e){let t=-1;for(var r of e)t+=r.length+1;return t}(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(t,r,n,a){for(let e=0;;e++){var i=this.text[e],o=a+i.length;if(t<=(r?n:o))return new le(a,o,n,i);a=o+1,n++}}decompose(e,t,r,n){t=e<=0&&t>=this.length?this:new _(B(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));1&n?(e=r.pop(),(n=a(t.text,e.text.slice(),0,t.length)).length<=32?r.push(new _(n,e.length+t.length)):(e=n.length>>1,r.push(new _(n.slice(0,e)),new _(n.slice(e))))):r.push(t)}replace(e,t,r){if(!(r instanceof _))return super.replace(e,t,r);[e,t]=l(this,e,t);var n=a(this.text,a(r.text,B(this.text,0,e)),t),r=this.length+r.length-(t-e);return n.length<=32?new _(n,r):y.from(_.split(n,[]),r)}sliceString(r,n=this.length,a=\"\\n\"){[r,n]=l(this,r,n);let i=\"\";for(let e=0,t=0;e<=n&&t<this.text.length;t++){var o=this.text[t],s=e+o.length;e>r&&t&&(i+=a),r<s&&n>e&&(i+=o.slice(Math.max(0,r-e),n-e)),e=s+1}return i}flatten(e){for(var t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],n=-1;for(var a of e)r.push(a),n+=a.length+1,32==r.length&&(t.push(new _(r,n)),r=[],n=-1);return-1<n&&t.push(new _(r,n)),t}}class y extends g{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(var r of e)this.lines+=r.lines}lineInner(t,r,n,a){for(let e=0;;e++){var i=this.children[e],o=a+i.length,s=n+i.lines-1;if(t<=(r?s:o))return i.lineInner(t,r,n,a);a=o+1,n=1+s}}decompose(r,n,a,i){for(let e=0,t=0;t<=n&&e<this.children.length;e++){var o,s=this.children[e],l=t+s.length;r<=l&&n>=t&&(o=i&((t<=r?1:0)|(n<=l?2:0)),t>=r&&l<=n&&!o?a.push(s):s.decompose(r-t,n-t,a,o)),t=l+1}}replace(r,n,a){if([r,n]=l(this,r,n),a.lines<this.lines)for(let e=0,t=0;e<this.children.length;e++){var i,o=this.children[e],s=t+o.length;if(r>=t&&n<=s)return i=o.replace(r-t,n-t,a),o=this.lines-o.lines+i.lines,i.lines<o>>4&&i.lines>o>>6?((o=this.children.slice())[e]=i,new y(o,this.length-(n-r)+a.length)):super.replace(t,s,i);t=s+1}return super.replace(r,n,a)}sliceString(r,n=this.length,a=\"\\n\"){[r,n]=l(this,r,n);let i=\"\";for(let e=0,t=0;e<this.children.length&&t<=n;e++){var o=this.children[e],s=t+o.length;t>r&&e&&(i+=a),r<s&&n>t&&(i+=o.sliceString(r-t,n-t,a)),t=s+1}return i}flatten(e){for(var t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof y))return 0;let r=0,[n,a,i,o]=0<t?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,a+=t){if(n==i||a==o)return r;var s=this.children[n],l=e.children[a];if(s!=l)return r+s.scanIdentical(l,t);r+=s.length+1}}static from(e,t=e.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(var n of e)r+=n.lines;if(r<32){var a,i=[];for(a of e)a.flatten(i);return new _(i,t)}let o=Math.max(32,r>>5),s=o<<1,l=o>>1,c=[],u=0,d=-1,p=[];function f(){0!=u&&(c.push(1==p.length?p[0]:y.from(p,d)),d=-1,u=p.length=0)}for(var h of e)!function e(t){let r;if(t.lines>s&&t instanceof y)for(var n of t.children)e(n);else t.lines>l&&(u>l||!u)?(f(),c.push(t)):t instanceof _&&u&&(r=p[p.length-1])instanceof _&&t.lines+r.lines<=32?(u+=t.lines,d+=t.length+1,p[p.length-1]=new _(r.text.concat(t.text),r.length+1+t.length)):(u+t.lines>o&&f(),u+=t.lines,d+=t.length+1,p.push(t))}(h);return f(),1==c.length?c[0]:new y(c,t)}}function a(i,o,s=0,l=1e9){for(let r=0,n=0,a=!0;n<i.length&&r<=l;n++){let e=i[n],t=r+e.length;s<=t&&(l<t&&(e=e.slice(0,l-r)),r<s&&(e=e.slice(s-r)),a?(o[o.length-1]+=e,a=!1):o.push(e)),r=t+1}return o}function B(e,t,r){return a(e,[\"\"],t,r)}g.empty=new _([\"\"],0);class o{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=\"\",this.nodes=[e],this.offsets=[0<t?1:(e instanceof _?e.text:e.children).length<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){var r=this.nodes.length-1,n=this.nodes[r],a=this.offsets[r],i=a>>1,o=(n instanceof _?n.text:n.children).length;if(i==(0<t?o:0)){if(0==r)return this.done=!0,this.value=\"\",this;0<t&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((1&a)==(0<t?0:1)){if(this.offsets[r]+=t,0==e)return this.lineBreak=!0,this.value=\"\\n\",this;e--}else if(n instanceof _){o=n.text[i+(t<0?-1:0)];if(this.offsets[r]+=t,o.length>Math.max(0,e))return this.value=0==e?o:0<t?o.slice(e):o.slice(0,o.length-e),this;e-=o.length}else{a=n.children[i+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(a),this.offsets.push(0<t?1:(a instanceof _?a.text:a.children).length<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class oe{constructor(e,t,r){this.value=\"\",this.done=!1,this.cursor=new o(e,r<t?-1:1),this.pos=r<t?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){var r,n;return(t<0?this.pos<=this.from:this.pos>=this.to)?(this.value=\"\",this.done=!0):(e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos),r=t<0?this.pos-this.from:this.to-this.pos,n=(r-=e=r<e?r:e,this.cursor.next(e))[\"value\"],this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value),this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):0<e&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&\"\"!=this.value}}class se{constructor(e){this.inner=e,this.afterBreak=!0,this.value=\"\",this.done=!1}next(e=0){var{done:e,lineBreak:t,value:r}=this.inner.next(e);return e&&this.afterBreak?(this.value=\"\",this.afterBreak=!1):e?(this.done=!0,this.value=\"\"):t?this.afterBreak?this.value=\"\":(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}}\"undefined\"!=typeof Symbol&&(g.prototype[Symbol.iterator]=function(){return this.iter()},o.prototype[Symbol.iterator]=oe.prototype[Symbol.iterator]=se.prototype[Symbol.iterator]=function(){return this});class le{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}}function l(e,t,r){return[t=Math.max(0,Math.min(e.length,t)),Math.max(t,Math.min(e.length,r))]}function u(e,t,r=!0,n=!0){return U.findClusterBreak(e,t,r,n)}const ce=/\\r\\n?|\\n/;c.MapMode=void 0,(n=c.MapMode||(c.MapMode={}))[n.Simple=0]=\"Simple\",n[n.TrackDel=1]=\"TrackDel\",n[n.TrackBefore=2]=\"TrackBefore\",n[n.TrackAfter=3]=\"TrackAfter\";class p{constructor(e){this.sections=e}get length(){let t=0;for(let e=0;e<this.sections.length;e+=2)t+=this.sections[e];return t}get newLength(){let t=0;for(let e=0;e<this.sections.length;e+=2){var r=this.sections[e+1];t+=r<0?this.sections[e]:r}return t}get empty(){return 0==this.sections.length||2==this.sections.length&&this.sections[1]<0}iterGaps(n){for(let e=0,t=0,r=0;e<this.sections.length;){var a=this.sections[e++],i=this.sections[e++];i<0?(n(t,r,a),r+=a):r+=i,t+=a}}iterChangedRanges(e,t=!1){j(this,e,t)}get invertedDesc(){var t=[];for(let e=0;e<this.sections.length;){var r=this.sections[e++],n=this.sections[e++];n<0?t.push(r,n):t.push(n,r)}return new p(t)}composeDesc(e){return this.empty?e:e.empty?this:G(this,e)}mapDesc(e,t=!1){return e.empty?this:H(this,e,t)}mapPos(t,r=-1,n=c.MapMode.Simple){let a=0,i=0;for(let e=0;e<this.sections.length;){var o=this.sections[e++],s=this.sections[e++],l=a+o;if(s<0){if(t<l)return i+(t-a);i+=o}else{if(n!=c.MapMode.Simple&&t<=l&&(n==c.MapMode.TrackDel&&a<t&&t<l||n==c.MapMode.TrackBefore&&a<t||n==c.MapMode.TrackAfter&&t<l))return null;if(t<l||l==t&&r<0&&!o)return t==a||r<0?i:i+s;i+=s}a=l}if(t>a)throw new RangeError(`Position ${t} is out of range for changeset of length `+a);return i}touchesRange(r,n=r){for(let e=0,t=0;e<this.sections.length&&t<=n;){var a=this.sections[e++],i=this.sections[e++],a=t+a;if(0<=i&&t<=n&&r<=a)return!(t<r&&n<a)||\"cover\";t=a}return!1}toString(){let t=\"\";for(let e=0;e<this.sections.length;){var r=this.sections[e++],n=this.sections[e++];t+=(t?\" \":\"\")+r+(0<=n?\":\"+n:\"\")}return t}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(e=>\"number\"!=typeof e))throw new RangeError(\"Invalid JSON representation of ChangeDesc\");return new p(e)}static create(e){return new p(e)}}class T extends p{constructor(e,t){super(e),this.inserted=t}apply(i){if(this.length!=i.length)throw new RangeError(\"Applying change set to a document with the wrong length\");return j(this,(e,t,r,n,a)=>i=i.replace(r,r+(t-e),a),!1),i}mapDesc(e,t=!1){return H(this,e,t,!0)}invert(r){var n=this.sections.slice(),a=[];for(let e=0,t=0;e<n.length;e+=2){var i=n[e],o=n[e+1];if(0<=o){n[e]=o,n[e+1]=i;for(var s=e>>1;a.length<s;)a.push(g.empty);a.push(i?r.slice(t,t+i):g.empty)}t+=i}return new T(n,a)}compose(e){return this.empty?e:e.empty?this:G(this,e,!0)}map(e,t=!1){return e.empty?this:H(this,e,t,!0)}iterChanges(e,t=!1){j(this,e,t)}get desc(){return p.create(this.sections)}filter(r){var n=[],a=[],i=[],o=new v(this);e:for(let e=0,t=0;;){for(var s=e==r.length?1e9:r[e++];t<s||t==s&&0==o.len;){if(o.done)break e;var l=Math.min(o.len,s-t),c=(f(i,l,-1),-1==o.ins?-1:0==o.off?o.ins:0);f(n,l,c),0<c&&h(a,n,o.text),o.forward(l),t+=l}for(var u=r[e++];t<u;){if(o.done)break e;var d=Math.min(o.len,u-t);f(n,d,-1),f(i,d,-1==o.ins?-1:0==o.off?o.ins:0),o.forward(d),t+=d}}return{changes:new T(n,a),filtered:p.create(i)}}toJSON(){var t=[];for(let e=0;e<this.sections.length;e+=2){var r=this.sections[e],n=this.sections[e+1];t.push(n<0?r:0==n?[r]:[r].concat(this.inserted[e>>1].toJSON()))}return t}static of(e,o,s){let l=[],c=[],u=0,d=null;function p(e=!1){(e||l.length)&&(u<o&&f(l,o-u,-1),e=new T(l,c),d=d?d.compose(e.map(d)):e,l=[],c=[],u=0)}return function e(t){if(Array.isArray(t))for(var r of t)e(r);else if(t instanceof T){if(t.length!=o)throw new RangeError(`Mismatched change set length (got ${t.length}, expected ${o})`);p(),d=d?d.compose(t.map(d)):t}else{var{from:t,to:n=t,insert:a}=t;if(n<t||t<0||o<n)throw new RangeError(`Invalid change range ${t} to ${n} (in doc of length ${o})`);var i=(a=a?\"string\"==typeof a?g.of(a.split(s||ce)):a:g.empty).length;t==n&&0==i||(t<u&&p(),t>u&&f(l,t-u,-1),f(l,n-t,i),h(c,l,a),u=n)}}(e),p(!d),d}static empty(e){return new T(e?[e,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw new RangeError(\"Invalid JSON representation of ChangeSet\");var r=[],n=[];for(let e=0;e<t.length;e++){var a=t[e];if(\"number\"==typeof a)r.push(a,-1);else{if(!Array.isArray(a)||\"number\"!=typeof a[0]||a.some((e,t)=>t&&\"string\"!=typeof e))throw new RangeError(\"Invalid JSON representation of ChangeSet\");if(1==a.length)r.push(a[0],0);else{for(;n.length<e;)n.push(g.empty);n[e]=g.of(a.slice(1)),r.push(a[0],n[e].length)}}}return new T(r,n)}static createSet(e,t){return new T(e,t)}}function f(e,t,r,n=!1){var a;0==t&&r<=0||(0<=(a=e.length-2)&&r<=0&&r==e[1+a]?e[a]+=t:0<=a&&0==t&&0==e[a]?e[1+a]+=r:n?(e[a]+=t,e[1+a]+=r):e.push(t,r))}function h(e,t,r){if(0!=r.length){var n=t.length-2>>1;if(n<e.length)e[e.length-1]=e[e.length-1].append(r);else{for(;e.length<n;)e.push(g.empty);e.push(r)}}}function j(l,c,u){var d=l.inserted;for(let i=0,o=0,s=0;s<l.sections.length;){let n=l.sections[s++],a=l.sections[s++];if(a<0)i+=n,o+=n;else{let e=i,t=o,r=g.empty;for(;e+=n,t+=a,a&&d&&(r=r.append(d[s-2>>1])),!(u||s==l.sections.length||l.sections[s+1]<0);)n=l.sections[s++],a=l.sections[s++];c(i,e,o,t,r),i=e,o=t}}}function H(e,t,n,r=!1){var a=[],i=r?[]:null,o=new v(e),s=new v(t);for(let r=-1;;){if(o.done&&s.len||s.done&&o.len)throw new Error(\"Mismatched change set lengths\");if(-1==o.ins&&-1==s.ins){var l=Math.min(o.len,s.len);f(a,l,-1),o.forward(l),s.forward(l)}else if(0<=s.ins&&(o.ins<0||r==o.i||0==o.off&&(s.len<o.len||s.len==o.len&&!n))){let e=s.len;for(f(a,s.ins,-1);e;){var c=Math.min(o.len,e);0<=o.ins&&r<o.i&&o.len<=c&&(f(a,0,o.ins),i&&h(i,a,o.text),r=o.i),o.forward(c),e-=c}s.next()}else{if(!(0<=o.ins)){if(o.done&&s.done)return i?T.createSet(a,i):p.create(a);throw new Error(\"Mismatched change set lengths\")}{let e=0,t=o.len;for(;t;)if(-1==s.ins){var u=Math.min(t,s.len);e+=u,t-=u,s.forward(u)}else{if(!(0==s.ins&&s.len<t))break;t-=s.len,s.next()}f(a,e,r<o.i?o.ins:0),i&&r<o.i&&h(i,a,o.text),r=o.i,o.forward(o.len-t)}}}}function G(e,t,r=!1){var n=[],a=r?[]:null,i=new v(e),o=new v(t);for(let e=!1;;){if(i.done&&o.done)return a?T.createSet(n,a):p.create(n);if(0==i.ins)f(n,i.len,0,e),i.next();else if(0!=o.len||o.done){if(i.done||o.done)throw new Error(\"Mismatched change set lengths\");var s,l=Math.min(i.len2,o.len),c=n.length;-1==i.ins?(f(n,l,s=-1==o.ins?-1:o.off?0:o.ins,e),a&&s&&h(a,n,o.text)):-1==o.ins?(f(n,i.off?0:i.len,l,e),a&&h(a,n,i.textBit(l))):(f(n,i.off?0:i.len,o.off?0:o.ins,e),a&&!o.off&&h(a,n,o.text)),e=(i.ins>l||0<=o.ins&&o.len>l)&&(e||c<n.length),i.forward2(l),o.forward(l)}else f(n,0,o.ins,e),a&&h(a,n,o.text),o.next()}}class v{constructor(e){this.set=e,this.i=0,this.next()}next(){var e=this.set[\"sections\"];this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return-2==this.ins}get len2(){return this.ins<0?this.len:this.ins}get text(){var e=this.set[\"inserted\"],t=this.i-2>>1;return t>=e.length?g.empty:e[t]}textBit(e){var t=this.set[\"inserted\"],r=this.i-2>>1;return r>=t.length&&!e?g.empty:t[r].slice(this.off,null==e?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){-1==this.ins?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class s{constructor(e,t,r){this.from=e,this.to=t,this.flags=r}get anchor(){return 32&this.flags?this.to:this.from}get head(){return 32&this.flags?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return 8&this.flags?-1:16&this.flags?1:0}get bidiLevel(){var e=7&this.flags;return 7==e?null:e}get goalColumn(){var e=this.flags>>6;return 16777215==e?void 0:e}map(e,t=-1){let r,n;return this.empty?r=n=e.mapPos(this.from,t):(r=e.mapPos(this.from,1),n=e.mapPos(this.to,-1)),r==this.from&&n==this.to?this:new s(r,n,this.flags)}extend(e,t=e){return e<=this.anchor&&t>=this.anchor?b.range(e,t):(t=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t,b.range(this.anchor,t))}eq(e,t=!1){return!(this.anchor!=e.anchor||this.head!=e.head||t&&this.empty&&this.assoc!=e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(e&&\"number\"==typeof e.anchor&&\"number\"==typeof e.head)return b.range(e.anchor,e.head);throw new RangeError(\"Invalid JSON representation for SelectionRange\")}static create(e,t,r){return new s(e,t,r)}}class b{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,r=-1){return t.empty?this:b.create(this.ranges.map(e=>e.map(t,r)),this.mainIndex)}eq(t,r=!1){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIndex)return!1;for(let e=0;e<this.ranges.length;e++)if(!this.ranges[e].eq(t.ranges[e],r))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return 1==this.ranges.length?this:new b([this.main],0)}addRange(e,t=!0){return b.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){var r=this.ranges.slice();return r[t]=e,b.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||\"number\"!=typeof e.main||e.main>=e.ranges.length)throw new RangeError(\"Invalid JSON representation for EditorSelection\");return new b(e.ranges.map(e=>s.fromJSON(e)),e.main)}static single(e,t=e){return new b([b.range(e,t)],0)}static create(r,n=0){if(0==r.length)throw new RangeError(\"A selection needs at least one range\");for(let e=0,t=0;t<r.length;t++){var a=r[t];if(a.empty?a.from<=e:a.from<e)return b.normalized(r.slice(),n);e=a.to}return new b(r,n)}static cursor(e,t=0,r,n){return s.create(e,e,(0==t?0:t<0?8:16)|(null==r?7:Math.min(6,r))|(null!=n?n:16777215)<<6)}static range(e,t,r,n){r=(null!=r?r:16777215)<<6|(null==n?7:Math.min(6,n));return t<e?s.create(t,e,48|r):s.create(e,t,(e<t?8:0)|r)}static normalized(t,r=0){var e=t[r];t.sort((e,t)=>e.from-t.from),r=t.indexOf(e);for(let e=1;e<t.length;e++){var n,a=t[e],i=t[e-1];(a.empty?a.from<=i.to:a.from<i.to)&&(n=i.from,i=Math.max(a.to,i.to),e<=r&&r--,t.splice(--e,2,a.anchor>a.head?b.range(i,n):b.range(n,i)))}return new b(t,r)}}function V(e,t){for(var r of e.ranges)if(r.to>t)throw new RangeError(\"Selection points outside of document\")}let i=0;class E{constructor(e,t,r,n,a){this.combine=e,this.compareInput=t,this.compare=r,this.isStatic=n,this.id=i++,this.default=e([]),this.extensions=\"function\"==typeof a?a(this):a}get reader(){return this}static define(e={}){return new E(e.combine||(e=>e),e.compareInput||((e,t)=>e===t),e.compare||(e.combine?(e,t)=>e===t:q),!!e.static,e.enables)}of(e){return new S([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error(\"Can't compute a static facet\");return new S(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error(\"Can't compute a static facet\");return new S(e,this,2,t)}from(t,r){return r=r||(e=>e),this.compute([t],e=>r(e.field(t)))}}function q(e,r){return e==r||e.length==r.length&&e.every((e,t)=>e===r[t])}class S{constructor(e,t,r,n){this.dependencies=e,this.facet=t,this.type=r,this.value=n,this.id=i++}dynamicSlot(e){var t,r;let i=this.value,o=this.facet.compareInput,s=this.id,l=e[s]>>1,c=2==this.type,n=!1,a=!1,u=[];for(r of this.dependencies)\"doc\"==r?n=!0:\"selection\"==r?a=!0:0==(1&(null!=(t=e[r.id])?t:1))&&u.push(e[r.id]);return{create(e){return e.values[l]=i(e),1},update(e,t){if(n&&t.docChanged||a&&(t.docChanged||t.selection)||W(e,u)){t=i(e);if(c?!z(t,e.values[l],o):!o(t,e.values[l]))return e.values[l]=t,1}return 0},reconfigure:(t,r)=>{let e,n=r.config.address[s];if(null!=n){var a=$(r,n);if(this.dependencies.every(e=>e instanceof E?r.facet(e)===t.facet(e):!(e instanceof O)||r.field(e,!1)==t.field(e,!1))||(c?z(e=i(t),a,o):o(e=i(t),a)))return t.values[l]=a,0}else e=i(t);return t.values[l]=e,1}}}}function z(t,r,n){if(t.length==r.length){for(let e=0;e<t.length;e++)if(!n(t[e],r[e]))return;return 1}}function W(e,t){let r=!1;for(var n of t)1&m(e,n)&&(r=!0);return r}const A=E.define({static:!0});class O{constructor(e,t,r,n,a){this.id=e,this.createF=t,this.updateF=r,this.compareF=n,this.spec=a,this.provides=void 0}static define(e){var t=new O(i++,e.create,e.update,e.compare||((e,t)=>e===t),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){var t=e.facet(A).find(e=>e.field==this);return((null==t?void 0:t.create)||this.createF)(e)}slot(e){let a=e[this.id]>>1;return{create:e=>(e.values[a]=this.create(e),1),update:(e,t)=>{var r=e.values[a],t=this.updateF(r,t);return this.compareF(r,t)?0:(e.values[a]=t,1)},reconfigure:(e,t)=>{var r=e.facet(A),n=t.facet(A);if((r=r.find(e=>e.field==this))&&r!=n.find(e=>e.field==this))e.values[a]=r.create(e);else{if(null!=t.config.address[this.id])return e.values[a]=t.field(this),0;e.values[a]=this.create(e)}return 1}}}init(e){return[this,A.of({field:this,create:e})]}get extension(){return this}}const C={lowest:4,low:3,default:2,high:1,highest:0};function t(t){return e=>new ue(e,t)}var r,n={highest:t(C.highest),high:t(C.high),default:t(C.default),low:t(C.low),lowest:t(C.lowest)};class ue{constructor(e,t){this.inner=e,this.prec=t}}class w{of(e){return new de(this,e)}reconfigure(e){return w.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class de{constructor(e,t){this.compartment=e,this.inner=t}}class pe{constructor(e,t,r,n,a,i){for(this.base=e,this.compartments=t,this.dynamicSlots=r,this.address=n,this.staticValues=a,this.facets=i,this.statusTemplate=[];this.statusTemplate.length<r.length;)this.statusTemplate.push(0)}staticFacet(e){var t=this.address[e.id];return null==t?e.default:this.staticValues[t>>1]}static resolve(e,t,n){var r,a=[],i=Object.create(null),o=new Map;for(r of function(e,o,s){let l=[[],[],[],[],[]],c=new Map;return function e(t,r){var n=c.get(t);if(null!=n){if(n<=r)return;var a=l[n].indexOf(t);-1<a&&l[n].splice(a,1),t instanceof de&&s.delete(t.compartment)}if(c.set(t,r),Array.isArray(t))for(var i of t)e(i,r);else if(t instanceof de){if(s.has(t.compartment))throw new RangeError(\"Duplicate use of compartment in extensions\");n=o.get(t.compartment)||t.inner,s.set(t.compartment,n),e(n,r)}else if(t instanceof ue)e(t.inner,t.prec);else if(t instanceof O)l[r].push(t),t.provides&&e(t.provides,r);else if(t instanceof S)l[r].push(t),t.facet.extensions&&e(t.facet.extensions,C.default);else{if(!(a=t.extension))throw new Error(`Unrecognized extension value in extension set (${t}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);e(a,r)}}(e,C.default),l.reduce((e,t)=>e.concat(t))}(e,t,o))(r instanceof O?a:i[r.facet.id]||(i[r.facet.id]=[])).push(r);let s=Object.create(null);var l=[],c=[];for(let t of a)s[t.id]=c.length<<1,c.push(e=>t.slot(e));var d,p=null==n?void 0:n.config.facets;for(d in i){let r=i[d],u=r[0].facet;var f=p&&p[d]||[];if(r.every(e=>0==e.type))s[u.id]=l.length<<1|1,q(f,r)?l.push(n.facet(u)):(f=u.combine(r.map(e=>e.value)),l.push(n&&u.compare(f,n.facet(u))?n.facet(u):f));else{for(let t of r)0==t.type?(s[t.id]=l.length<<1|1,l.push(t.value)):(s[t.id]=c.length<<1,c.push(e=>t.dynamicSlot(e)));s[u.id]=c.length<<1,c.push(e=>{{var t=e,s=u,l=r;let i=l.map(e=>t[e.id]),o=l.map(e=>e.type),n=i.filter(e=>!(1&e)),a=t[s.id]>>1;function c(t){var r=[];for(let e=0;e<i.length;e++){var n=$(t,i[e]);if(2==o[e])for(var a of n)r.push(a);else r.push(n)}return s.combine(r)}return{create(e){for(var t of i)m(e,t);return e.values[a]=c(e),1},update(e,t){var r;return!W(e,n)||(r=c(e),s.compare(r,e.values[a]))?0:(e.values[a]=r,1)},reconfigure(e,t){var r=W(e,i),n=t.config.facets[s.id],t=t.facet(s);return n&&!r&&q(l,n)||(r=c(e),s.compare(r,t))?(e.values[a]=t,0):(e.values[a]=r,1)}}}})}}t=c.map(e=>e(s));return new pe(e,o,t,s,l,i)}}function m(e,t){if(1&t)return 2;var t=t>>1,r=e.status[t];if(4==r)throw new Error(\"Cyclic dependency between fields and/or facets\");if(2&r)return r;e.status[t]=4;r=e.computeSlot(e,e.config.dynamicSlots[t]);return e.status[t]=2|r}function $(e,t){return(1&t?e.config.staticValues:e.values)[t>>1]}const fe=E.define(),he=E.define({combine:e=>e.some(e=>e),static:!0}),me=E.define({combine:e=>e.length?e[0]:void 0,static:!0}),ge=E.define(),_e=E.define(),ye=E.define(),Te=E.define({combine:e=>!!e.length&&e[0]});class k{constructor(e,t){this.type=e,this.value=t}static define(){return new ve}}class ve{of(e){return new k(this,e)}}class be{constructor(e){this.map=e}of(e){return new I(this,e)}}class I{constructor(e,t){this.type=e,this.value=t}map(e){e=this.type.map(this.value,e);return void 0===e?void 0:e==this.value?this:new I(this.type,e)}is(e){return this.type==e}static define(e={}){return new be(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;var r,n=[];for(r of e){var a=r.map(t);a&&n.push(a)}return n}}I.reconfigure=I.define(),I.appendConfig=I.define();class R{constructor(e,t,r,n,a,i){this.startState=e,this.changes=t,this.selection=r,this.effects=n,this.annotations=a,this.scrollIntoView=i,this._doc=null,this._state=null,r&&V(r,t.newLength),a.some(e=>e.type==R.time)||(this.annotations=a.concat(R.time.of(Date.now())))}static create(e,t,r,n,a,i){return new R(e,t,r,n,a,i)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(var t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){var t=this.annotation(R.userEvent);return!(!t||!(t==e||t.length>e.length&&t.slice(0,e.length)==e&&\".\"==t[e.length]))}}function K(e,t,r){let n,a,i;return{changes:i=r?(n=t.changes,a=T.empty(t.changes.length),e.changes.compose(t.changes)):(n=t.changes.map(e.changes),a=e.changes.mapDesc(t.changes,!0),e.changes.compose(n)),selection:t.selection?t.selection.map(a):null==(r=e.selection)?void 0:r.map(n),effects:I.mapEffects(e.effects,n).concat(I.mapEffects(t.effects,a)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function Y(e,t,r){let n=t.selection,a=d(t.annotations);return t.userEvent&&(a=a.concat(R.userEvent.of(t.userEvent))),{changes:t.changes instanceof T?t.changes:T.of(t.changes||[],r,e.facet(me)),selection:n&&(n instanceof b?n:b.single(n.anchor,n.head)),effects:d(t.effects),annotations:a,scrollIntoView:!!t.scrollIntoView}}function J(t,r,a){let n=Y(t,r.length?r[0]:{},t.doc.length);r.length&&!1===r[0].filter&&(a=!1);for(let e=1;e<r.length;e++){!1===r[e].filter&&(a=!1);var i=!!r[e].sequential;n=K(n,Y(t,r[e],i?n.changes.newLength:t.doc.length),i)}var e=R.create(t,n.changes,n.selection,n.effects,n.annotations,n.scrollIntoView);{var o=a?function(r){let n=r.startState,a=!0;for(var e of n.facet(ge)){e=e(r);if(!1===e){a=!1;break}Array.isArray(e)&&(a=!0===a?e:function(a,i){var o=[];for(let r=0,n=0;;){let e,t;if(r<a.length&&(n==i.length||i[n]>=a[r]))e=a[r++],t=a[r++];else{if(!(n<i.length))return o;e=i[n++],t=i[n++]}!o.length||o[o.length-1]<e?o.push(e,t):o[o.length-1]<t&&(o[o.length-1]=t)}}(a,e))}if(!0!==a){let e,t;var i;!1===a?(t=r.changes.invertedDesc,e=T.empty(n.doc.length)):(i=r.changes.filter(a),e=i.changes,t=i.filtered.mapDesc(i.changes).invertedDesc),r=R.create(n,e,r.selection&&r.selection.map(t),I.mapEffects(r.effects,t),r.annotations,r.scrollIntoView)}var t=n.facet(_e);for(let e=t.length-1;0<=e;e--){var o=t[e](r);r=o instanceof R?o:Array.isArray(o)&&1==o.length&&o[0]instanceof R?o[0]:J(n,d(o),!1)}return r}(e):e;let t=o.startState,r=t.facet(ye),n=o;for(let e=r.length-1;0<=e;e--){var s=r[e](o);s&&Object.keys(s).length&&(n=K(n,Y(t,s,o.changes.newLength),!0))}return n==o?o:R.create(t,o.changes,o.selection,n.effects,n.annotations,n.scrollIntoView)}}R.time=k.define(),R.userEvent=k.define(),R.addToHistory=k.define(),R.remote=k.define();const Ee=[];function d(e){return null==e?Ee:Array.isArray(e)?e:[e]}c.CharCategory=void 0,(r=c.CharCategory||(c.CharCategory={}))[r.Word=0]=\"Word\",r[r.Space=1]=\"Space\",r[r.Other=2]=\"Other\";const Se=/[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;let e;try{e=new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\",\"u\")}catch(e){}function Q(r){return t=>{if(!/\\S/.test(t))return c.CharCategory.Space;if(function(t){if(e)return e.test(t);for(let e=0;e<t.length;e++){var r=t[e];if(/\\w/.test(r)||\"\"<r&&(r.toUpperCase()!=r.toLowerCase()||Se.test(r)))return 1}}(t))return c.CharCategory.Word;for(let e=0;e<r.length;e++)if(-1<t.indexOf(r[e]))return c.CharCategory.Word;return c.CharCategory.Other}}class N{constructor(e,t,r,n,a,i){this.config=e,this.doc=t,this.selection=r,this.values=n,this.status=e.statusTemplate.slice(),this.computeSlot=a,i&&(i._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)m(this,e<<1);this.computeSlot=null}field(e,t=!0){e=this.config.address[e.id];if(null!=e)return m(this,e),$(this,e);if(t)throw new RangeError(\"Field is not present in this state\")}update(...e){return J(this,e,!0)}applyTransaction(r){let e=this.config,{base:t,compartments:n}=e;for(var a of r.effects)a.is(w.reconfigure)?(e&&(n=new Map,e.compartments.forEach((e,t)=>n.set(t,e)),e=null),n.set(a.value.compartment,a.value.extension)):a.is(I.reconfigure)?(e=null,t=a.value):a.is(I.appendConfig)&&(e=null,t=d(t).concat(a.value));let i;i=e?r.startState.values.slice():(e=pe.resolve(t,n,this),new N(e,this.doc,this.selection,e.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);var o=r.startState.facet(he)?r.newSelection:r.newSelection.asSingle();new N(e,r.newDoc,o,i,(e,t)=>t.update(e,r),r)}replaceSelection(t){return\"string\"==typeof t&&(t=this.toText(t)),this.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:t},range:b.cursor(e.from+t.length)}))}changeByRange(e){var r=this.selection,t=e(r.ranges[0]);let n=this.changes(t.changes),a=[t.range],i=d(t.effects);for(let t=1;t<r.ranges.length;t++){var o=e(r.ranges[t]),s=this.changes(o.changes),l=s.map(n);for(let e=0;e<t;e++)a[e]=a[e].map(l);s=n.mapDesc(s,!0);a.push(o.range.map(s)),n=n.compose(l),i=I.mapEffects(i,l).concat(I.mapEffects(d(o.effects),s))}return{changes:n,selection:b.create(a,r.mainIndex),effects:i}}changes(e=[]){return e instanceof T?e:T.of(e,this.doc.length,this.facet(N.lineSeparator))}toText(e){return g.of(e.split(this.facet(N.lineSeparator)||ce))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){var t=this.config.address[e.id];return null==t?e.default:(m(this,t),$(this,t))}toJSON(e){var t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(var r in e){var n=e[r];n instanceof O&&null!=this.config.address[n.id]&&(t[r]=n.spec.toJSON(this.field(e[r]),this))}return t}static fromJSON(e,t={},n){if(!e||\"string\"!=typeof e.doc)throw new RangeError(\"Invalid JSON representation for EditorState\");var a=[];if(n)for(var i in n)if(Object.prototype.hasOwnProperty.call(e,i)){let t=n[i],r=e[i];a.push(t.init(e=>t.spec.fromJSON(r,e)))}return N.create({doc:e.doc,selection:b.fromJSON(e.selection),extensions:t.extensions?a.concat([t.extensions]):a})}static create(e={}){var t=pe.resolve(e.extensions||[],new Map),r=e.doc instanceof g?e.doc:g.of((e.doc||\"\").split(t.staticFacet(N.lineSeparator)||ce));let n=e.selection?e.selection instanceof b?e.selection:b.single(e.selection.anchor,e.selection.head):b.single(0);return V(n,r.length),t.staticFacet(he)||(n=n.asSingle()),new N(t,r,n,t.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(N.tabSize)}get lineBreak(){return this.facet(N.lineSeparator)||\"\\n\"}get readOnly(){return this.facet(Te)}phrase(e,...r){for(var t of this.facet(N.phrases))if(Object.prototype.hasOwnProperty.call(t,e)){e=t[e];break}return e=r.length?e.replace(/\\$(\\$|\\d*)/g,(e,t)=>{return\"$\"==t?\"$\":!(t=+(t||1))||t>r.length?e:r[t-1]}):e}languageDataAt(e,t,r=-1){var n,a=[];for(n of this.facet(fe))for(var i of n(this,t,r))Object.prototype.hasOwnProperty.call(i,e)&&a.push(i[e]);return a}charCategorizer(e){return Q(this.languageDataAt(\"wordChars\",e).join(\"\"))}wordAt(e){var{text:t,from:r,length:n}=this.doc.lineAt(e),a=this.charCategorizer(e);let i=e-r,o=e-r;for(;0<i;){var s=u(t,i,!1);if(a(t.slice(s,i))!=c.CharCategory.Word)break;i=s}for(;o<n;){var l=u(t,o);if(a(t.slice(o,l))!=c.CharCategory.Word)break;o=l}return i==o?null:b.range(i+r,o+r)}}N.allowMultipleSelections=he,N.tabSize=E.define({combine:e=>e.length?e[0]:4}),N.lineSeparator=me,N.readOnly=Te,N.phrases=E.define({compare(t,r){var e=Object.keys(t),n=Object.keys(r);return e.length==n.length&&e.every(e=>t[e]==r[e])}}),N.languageData=fe,N.changeFilter=ge,N.transactionFilter=_e,N.transactionExtender=ye,w.reconfigure=I.define();class M{eq(e){return this==e}range(e,t=e){return P.create(e,t,this)}}M.prototype.startSide=M.prototype.endSide=0,M.prototype.point=!1,M.prototype.mapMode=c.MapMode.TrackDel;class P{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new P(e,t,r)}}function Z(e,t){return e.from-t.from||e.value.startSide-t.value.startSide}class Ae{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(r,n,a,i=0){var o=a?this.to:this.from;for(let e=i,t=o.length;;){if(e==t)return e;var s=e+t>>1,l=o[s]-r||(a?this.value[s].endSide:this.value[s].startSide)-n;if(s==e)return 0<=l?e:t;0<=l?t=s:e=1+s}}between(r,n,a,i){for(let e=this.findIndex(n,-1e9,!0),t=this.findIndex(a,1e9,!1,e);e<t;e++)if(!1===i(this.from[e]+r,this.to[e]+r,this.value[e]))return!1}map(o,s){let l=[],c=[],u=[],d=-1,p=-1;for(let i=0;i<this.value.length;i++){let e=this.value[i],t=this.from[i]+o,r=this.to[i]+o,n,a;if(t==r){var f=s.mapPos(t,e.startSide,e.mapMode);if(null==f)continue;if(n=a=f,e.startSide!=e.endSide&&(a=s.mapPos(t,e.endSide))<n)continue}else if(n=s.mapPos(t,e.startSide),a=s.mapPos(r,e.endSide),n>a||n==a&&0<e.startSide&&e.endSide<=0)continue;(a-n||e.endSide-e.startSide)<0||(d<0&&(d=n),e.point&&(p=Math.max(p,a-n)),l.push(e),c.push(n-d),u.push(a-d))}return{mapped:l.length?new Ae(c,u,l,p):null,pos:d}}}class D{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new D(e,t,r,n)}get length(){var e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(var t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:a=this.length}=e;var i=e.filter;if(0==t.length&&!i)return this;if(r&&(t=t.slice().sort(Z)),this.isEmpty)return t.length?D.of(t):this;let o=new Oe(this,null,-1).goto(0),s=0,l=[];for(var c,u=new x;o.value||s<t.length;)s<t.length&&0<=(o.from-t[s].from||o.startSide-t[s].value.startSide)?(c=t[s++],u.addInner(c.from,c.to,c.value)||l.push(c)):1==o.rangeIndex&&o.chunkIndex<this.chunk.length&&(s==t.length||this.chunkEnd(o.chunkIndex)<t[s].from)&&(!i||n>this.chunkEnd(o.chunkIndex)||a<this.chunkPos[o.chunkIndex])&&u.addChunk(this.chunkPos[o.chunkIndex],this.chunk[o.chunkIndex])?o.nextChunk():((!i||n>o.to||a<o.from||i(o.from,o.to,o.value))&&!u.addInner(o.from,o.to,o.value)&&l.push(P.create(o.from,o.to,o.value)),o.next());return u.finishInner(this.nextLayer.isEmpty&&!l.length?D.empty:this.nextLayer.update({add:l,filter:i,filterFrom:n,filterTo:a}))}map(t){if(t.empty||this.isEmpty)return this;let r=[],n=[],a=-1;for(let e=0;e<this.chunk.length;e++){var i=this.chunkPos[e],o=this.chunk[e],s=t.touchesRange(i,i+o.length);!1===s?(a=Math.max(a,o.maxPoint),r.push(o),n.push(t.mapPos(i))):!0===s&&({mapped:s,pos:o}=o.map(i,t),s)&&(a=Math.max(a,s.maxPoint),r.push(s),n.push(o))}var e=this.nextLayer.map(t);return 0==r.length?e:new D(n,r,e||D.empty,a)}between(t,r,n){if(!this.isEmpty){for(let e=0;e<this.chunk.length;e++){var a=this.chunkPos[e],i=this.chunk[e];if(a<=r&&t<=a+i.length&&!1===i.between(a,t-a,r-a,n))return}this.nextLayer.between(t,r,n)}}iter(e=0){return L.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return L.from(e).goto(t)}static compare(e,t,r,n,a=-1){var e=e.filter(e=>0<e.maxPoint||!e.isEmpty&&e.maxPoint>=a),t=t.filter(e=>0<e.maxPoint||!e.isEmpty&&e.maxPoint>=a),i=X(e,t,r);let o=new F(e,i,a),s=new F(t,i,a);r.iterGaps((e,t,r)=>te(o,e,s,t,r,n)),r.empty&&0==r.length&&te(o,0,s,0,0,n)}static eq(t,r,e=0,n){null==n&&(n=1e9-1);var a=t.filter(e=>!e.isEmpty&&r.indexOf(e)<0),i=r.filter(e=>!e.isEmpty&&t.indexOf(e)<0);if(a.length!=i.length)return!1;if(!a.length)return!0;for(var o=X(a,i),s=new F(a,o,0).goto(e),l=new F(i,o,0).goto(e);;){if(s.to!=l.to||!re(s.active,l.active)||s.point&&(!l.point||!s.point.eq(l.point)))return!1;if(s.to>n)return!0;s.next(),l.next()}}static spans(e,t,r,n,a=-1){let i=new F(e,null,a).goto(t),o=t,s=i.openStart;for(;;){var l,c,u=Math.min(i.to,r);if(i.point?(l=i.activeForPoint(i.to),c=i.pointFrom<t?l.length+1:i.point.startSide<0?l.length:Math.min(l.length,s),n.point(o,u,i.point,l,c,i.pointRank),s=Math.min(i.openEnd(u),l.length)):u>o&&(n.span(o,u,i.active,s),s=i.openEnd(u)),i.to>r)return s+(i.point&&i.to>r?1:0);o=i.to,i.next()}}static of(e,t=!1){var r,n=new x;for(r of e instanceof P?[e]:t?function(r){if(1<r.length)for(let e=r[0],t=1;t<r.length;t++){var n=r[t];if(0<Z(e,n))return r.slice().sort(Z);e=n}return r}(e):e)n.add(r.from,r.to,r.value);return n.finish()}static join(r){if(!r.length)return D.empty;let n=r[r.length-1];for(let t=r.length-2;0<=t;t--)for(let e=r[t];e!=D.empty;e=e.nextLayer)n=new D(e.chunkPos,e.chunk,n,Math.max(e.maxPoint,n.maxPoint));return n}}D.empty=new D([],[],null,-1),D.empty.nextLayer=D.empty;class x{finishChunk(e){this.chunks.push(new Ae(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,r){this.addInner(e,t,r)||(this.nextLayer||(this.nextLayer=new x)).add(e,t,r)}addInner(e,t,r){var n=e-this.lastTo||r.startSide-this.last.endSide;if(n<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");return!(n<0||(250==this.from.length&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=t,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),0))}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);var r=t.value.length-1;return this.last=t.value[r],this.lastFrom=t.from[r]+e,this.lastTo=t.to[r]+e,!0}finish(){return this.finishInner(D.empty)}finishInner(e){return this.from.length&&this.finishChunk(!1),0==this.chunks.length||(e=D.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint),this.from=null),e}}function X(e,t,r){var n,a=new Map;for(n of e)for(let e=0;e<n.chunk.length;e++)n.chunk[e].maxPoint<=0&&a.set(n.chunk[e],n.chunkPos[e]);var i,o=new Set;for(i of t)for(let e=0;e<i.chunk.length;e++){var s=a.get(i.chunk[e]);null==s||(r?r.mapPos(s):s)!=i.chunkPos[e]||null!=r&&r.touchesRange(s,s+i.chunk[e].length)||o.add(i.chunk[e])}return o}class Oe{constructor(e,t,r,n=0){this.layer=e,this.skip=t,this.minPoint=r,this.rank=n}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,t=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,t,!1),this}gotoInner(e,t,r){for(;this.chunkIndex<this.layer.chunk.length;){var n=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(n)||this.layer.chunkEnd(this.chunkIndex)<e||n.maxPoint<this.minPoint))break;this.chunkIndex++,r=!1}this.chunkIndex<this.layer.chunk.length&&(t=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],t,!0),!r||this.rangeIndex<t)&&this.setRangeIndex(t),this.next()}forward(e,t){(this.to-e||this.endSide-t)<0&&this.gotoInner(e,t,!0)}next(){for(;;){if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}var e=this.layer.chunkPos[this.chunkIndex],t=this.layer.chunk[this.chunkIndex],r=e+t.from[this.rangeIndex];if(this.from=r,this.to=e+t.to[this.rangeIndex],this.value=t.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class L{constructor(e){this.heap=e}static from(r,n=null,a=-1){var i=[];for(let t=0;t<r.length;t++)for(let e=r[t];!e.isEmpty;e=e.nextLayer)e.maxPoint>=a&&i.push(new Oe(e,n,a,t));return 1==i.length?i[0]:new L(i)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(var r of this.heap)r.goto(e,t);for(let e=this.heap.length>>1;0<=e;e--)ee(this.heap,e);return this.next(),this}forward(e,t){for(var r of this.heap)r.forward(e,t);for(let e=this.heap.length>>1;0<=e;e--)ee(this.heap,e);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){var e;0==this.heap.length?(this.from=this.to=1e9,this.value=null,this.rank=-1):(e=this.heap[0],this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),ee(this.heap,0))}}function ee(r,n){for(var a=r[n];;){let e=1+(n<<1);if(e>=r.length)break;let t=r[e];if(e+1<r.length&&0<=t.compare(r[e+1])&&(t=r[e+1],e++),a.compare(t)<0)break;r[e]=a,r[n]=t,n=e}}class F{constructor(e,t,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=L.from(e,t,r)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;-1<this.minActive&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){ne(this.active,e),ne(this.activeTo,e),ne(this.activeRank,e),this.minActive=ie(this.active,this.activeTo)}addActive(e){let t=0,{value:r,to:n,rank:a}=this.cursor;for(;t<this.activeRank.length&&0<(a-this.activeRank[t]||n-this.activeTo[t]);)t++;ae(this.active,t,r),ae(this.activeTo,t,n),ae(this.activeRank,t,a),e&&ae(e,t,this.cursor.from),this.minActive=ie(this.active,this.activeTo)}next(){for(var t=this.to,e=this.point,r=(this.point=null,this.openStart<0?[]:null);;){var n=this.minActive;if(-1<n&&(this.activeTo[n]-this.cursor.from||this.active[n].endSide-this.cursor.startSide)<0){if(this.activeTo[n]>t){this.to=this.activeTo[n],this.endSide=this.active[n].endSide;break}this.removeActive(n),r&&ne(r,n)}else{if(!this.cursor.value){this.to=this.endSide=1e9;break}if(this.cursor.from>t){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}n=this.cursor.value;if(n.point){if(!(e&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)){this.point=n,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=n.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else this.addActive(r);this.cursor.next()}}if(r){this.openStart=0;for(let e=r.length-1;0<=e&&r[e]<t;e--)this.openStart++}}activeForPoint(t){if(!this.active.length)return this.active;var r=[];for(let e=this.active.length-1;0<=e&&!(this.activeRank[e]<this.pointRank);e--)(this.activeTo[e]>t||this.activeTo[e]==t&&this.active[e].endSide>=this.point.endSide)&&r.push(this.active[e]);return r.reverse()}openEnd(t){let r=0;for(let e=this.activeTo.length-1;0<=e&&this.activeTo[e]>t;e--)r++;return r}}function te(e,t,r,n,a,i){e.goto(t),r.goto(n);var o=n+a;let s=n,l=n-t;for(;;){var c=e.to+l-r.to,u=c||e.endSide-r.endSide,d=u<0?e.to+l:r.to,p=Math.min(d,o);if(e.point||r.point?e.point&&r.point&&(e.point==r.point||e.point.eq(r.point))&&re(e.activeForPoint(e.to),r.activeForPoint(r.to))||i.comparePoint(s,p,e.point,r.point):p>s&&!re(e.active,r.active)&&i.compareRange(s,p,e.active,r.active),o<d)break;(c||e.openEnd!=r.openEnd)&&i.boundChange&&i.boundChange(d),s=d,u<=0&&e.next(),0<=u&&r.next()}}function re(t,r){if(t.length==r.length){for(let e=0;e<t.length;e++)if(t[e]!=r[e]&&!t[e].eq(r[e]))return;return 1}}function ne(r,n){for(let e=n,t=r.length-1;e<t;e++)r[e]=r[e+1];r.pop()}function ae(t,r,e){for(let e=t.length-1;e>=r;e--)t[e+1]=t[e];t[r]=e}function ie(t,r){let n=-1,a=1e9;for(let e=0;e<r.length;e++)(r[e]-a||t[e].endSide-t[n].endSide)<0&&(n=e,a=r[e]);return n}c.Annotation=k,c.AnnotationType=ve,c.ChangeDesc=p,c.ChangeSet=T,c.Compartment=w,c.EditorSelection=b,c.EditorState=N,c.Facet=E,c.Line=le,c.Prec=n,c.Range=P,c.RangeSet=D,c.RangeSetBuilder=x,c.RangeValue=M,c.SelectionRange=s,c.StateEffect=I,c.StateEffectType=be,c.StateField=O,c.Text=g,c.Transaction=R,c.codePointAt=function(e,t){var r,n=e.charCodeAt(t);return 55296<=(r=n)&&r<56320&&t+1!=e.length&&56320<=(e=r=e.charCodeAt(t+1))&&e<57344?r-56320+(n-55296<<10)+65536:n},c.codePointSize=function(e){return e<65536?1:2},c.combineConfig=function(e,t,r={}){var n,a,i={};for(n of e)for(var o of Object.keys(n)){var s=n[o],l=i[o];if(void 0===l)i[o]=s;else if(l!==s&&void 0!==s){if(!Object.hasOwnProperty.call(r,o))throw new Error(\"Config merge conflict for field \"+o);i[o]=r[o](l,s)}}for(a in t)void 0===i[a]&&(i[a]=t[a]);return i},c.countColumn=function(t,r,n=t.length){let a=0;for(let e=0;e<n&&e<t.length;)9==t.charCodeAt(e)?(a+=r-a%r,e++):(a++,e=u(t,e));return a},c.findClusterBreak=u,c.findColumn=function(r,n,a,e){for(let e=0,t=0;;){if(t>=n)return e;if(e==r.length)break;t+=9==r.charCodeAt(e)?a-t%a:1,e=u(r,e)}return!0===e?-1:r.length},c.fromCodePoint=function(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode(55296+(e>>10),56320+(1023&e)))}}}return oR}var uR,dR={},pR={};function fR(){var t,i,r,e,o,a;return uR||(uR=1,t=\"undefined\"==typeof Symbol?\"__ͼ\":Symbol.for(\"ͼ\"),i=\"undefined\"==typeof Symbol?\"__styleSet\"+Math.floor(1e8*Math.random()):Symbol(\"styleSet\"),r=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:{},(e=pR.StyleModule=function(e,t){this.rules=[];var r,u=(t||{}).finish;function d(e){return/^@/.test(e)?[e]:e.split(/,\\s*/)}for(r in e)!function e(r,t,n,a){var i,o=[],s=/^@(\\w+)\\b/.exec(r[0]),l=s&&\"keyframes\"==s[1];if(s&&null==t)return n.push(r[0]+\";\");for(i in t){var c=t[i];if(/&/.test(i))e(i.split(/,\\s*/).map(function(t){return r.map(function(e){return t.replace(/&/,e)})}).reduce(function(e,t){return e.concat(t)}),c,n);else if(c&&\"object\"==typeof c){if(!s)throw new RangeError(\"The value of a property (\"+i+\") should be a primitive value.\");e(d(i),c,o,l)}else null!=c&&o.push(i.replace(/_.*/,\"\").replace(/[A-Z]/g,function(e){return\"-\"+e.toLowerCase()})+\": \"+c+\";\")}(o.length||l)&&n.push((!u||s||a?r:r.map(u)).join(\", \")+\" {\"+o.join(\" \")+\"}\")}(d(r),e[r],this.rules)}).prototype.getRules=function(){return this.rules.join(\"\\n\")},e.newName=function(){var e=r[t]||1;return r[t]=e+1,\"ͼ\"+e.toString(36)},e.mount=function(e,t,r){var n=e[i],r=r&&r.nonce;n?r&&n.setNonce(r):n=new a(e,r),n.mount(Array.isArray(t)?t:[t])},o=new Map,(a=function(e,t){var r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){var a=o.get(r);if(a)return e.adoptedStyleSheets=[a.sheet].concat(e.adoptedStyleSheets),e[i]=a;this.sheet=new n.CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),o.set(r,this)}else{this.styleTag=r.createElement(\"style\"),t&&this.styleTag.setAttribute(\"nonce\",t);a=e.head||e;a.insertBefore(this.styleTag,a.firstChild)}this.modules=[],e[i]=this}).prototype.mount=function(e){for(var t=this.sheet,r=0,n=0,a=0;a<e.length;a++){var i=e[a],o=this.modules.indexOf(i);if(o<n&&-1<o&&(this.modules.splice(o,1),n--,o=-1),-1==o){if(this.modules.splice(n++,0,i),t)for(var s=0;s<i.rules.length;s++)t.insertRule(i.rules[s],r++)}else{for(;n<o;)r+=this.modules[n++].rules.length;r+=i.rules.length,n++}}if(!t){for(var l=\"\",c=0;c<this.modules.length;c++)l+=this.modules[c].getRules()+\"\\n\";this.styleTag.textContent=l}},a.prototype.setNonce=function(e){this.styleTag&&this.styleTag.getAttribute(\"nonce\")!=e&&this.styleTag.setAttribute(\"nonce\",e)}),pR}var hR,mR,gR,_R,yR={};function TR(){if(!hR){hR=1,Object.defineProperty(yR,\"__esModule\",{value:!0});for(var t={8:\"Backspace\",9:\"Tab\",10:\"Enter\",12:\"NumLock\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",44:\"PrintScreen\",45:\"Insert\",46:\"Delete\",59:\";\",61:\"=\",91:\"Meta\",92:\"Meta\",106:\"*\",107:\"+\",108:\",\",109:\"-\",110:\".\",111:\"/\",144:\"NumLock\",145:\"ScrollLock\",160:\"Shift\",161:\"Shift\",162:\"Control\",163:\"Control\",164:\"Alt\",165:\"Alt\",173:\"-\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"},r={48:\")\",49:\"!\",50:\"@\",51:\"#\",52:\"$\",53:\"%\",54:\"^\",55:\"&\",56:\"*\",57:\"(\",59:\":\",61:\"+\",173:\"_\",186:\":\",187:\"+\",188:\"<\",189:\"_\",190:\">\",191:\"?\",192:\"~\",219:\"{\",220:\"|\",221:\"}\",222:'\"'},n=\"undefined\"!=typeof navigator&&/Mac/.test(navigator.platform),a=\"undefined\"!=typeof navigator&&/MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent),e=0;e<10;e++)t[48+e]=t[96+e]=String(e);for(e=1;e<=24;e++)t[e+111]=\"F\"+e;for(var i,e=65;e<=90;e++)t[e]=String.fromCharCode(e+32),r[e]=String.fromCharCode(e);for(i in t)r.hasOwnProperty(i)||(r[i]=t[i]);yR.base=t,yR.keyName=function(e){return e=\"Down\"==(e=\"Right\"==(e=\"Up\"==(e=\"Left\"==(e=\"Del\"==(e=\"Esc\"==(e=!(n&&e.metaKey&&e.shiftKey&&!e.ctrlKey&&!e.altKey||a&&e.shiftKey&&e.key&&1==e.key.length||\"Unidentified\"==e.key)&&e.key||(e.shiftKey?r:t)[e.keyCode]||e.key||\"Unidentified\")?\"Escape\":e)?\"Delete\":e)?\"ArrowLeft\":e)?\"ArrowUp\":e)?\"ArrowRight\":e)?\"ArrowDown\":e},yR.shift=r}return yR}function vR(){return gR||(gR=1,mR=function(){var e,t=arguments[0],r=(\"string\"==typeof t&&(t=document.createElement(t)),1),n=arguments[1];if(n&&\"object\"==typeof n&&null==n.nodeType&&!Array.isArray(n)){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(\"string\"==typeof(e=n[a])?t.setAttribute(a,e):null!=e&&(t[a]=e));r++}for(;r<arguments.length;r++)!function e(t,r){if(\"string\"==typeof r)t.appendChild(document.createTextNode(r));else if(null!=r)if(null!=r.nodeType)t.appendChild(r);else{if(!Array.isArray(r))throw new RangeError(\"Unsupported child node: \"+r);for(var n=0;n<r.length;n++)e(t,r[n])}}(t,arguments[r]);return t}),mR}function bR(){if(!_R){_R=1;{var O=dR;var y=cR(),Q=fR(),Z=TR(),X=vR();function ee(e){let t;return(t=11!=e.nodeType||e.getSelection?e:e.ownerDocument).getSelection()}function te(e,t){return!!t&&(e==t||e.contains(1!=t.nodeType?t.parentNode:t))}function re(e,t){if(!t.anchorNode)return!1;try{return te(e,t.anchorNode)}catch(e){return!1}}function ne(e){return 3==e.nodeType?v(e,0,e.nodeValue.length).getClientRects():1==e.nodeType?e.getClientRects():[]}function ae(e,t,r,n){return!!r&&(oe(e,t,r,n,-1)||oe(e,t,r,n,1))}function f(e){for(var t=0;;t++)if(!(e=e.previousSibling))return t}function ie(e){return 1==e.nodeType&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(e.nodeName)}function oe(e,t,r,n,a){for(;;){if(e==r&&t==n)return!0;if(t==(a<0?0:T(e))){if(\"DIV\"==e.nodeName)return!1;var i=e.parentNode;if(!i||1!=i.nodeType)return!1;t=f(e)+(a<0?0:1),e=i}else{if(1!=e.nodeType)return!1;if(1==(e=e.childNodes[t+(a<0?-1:0)]).nodeType&&\"false\"==e.contentEditable)return!1;t=a<0?T(e):0}}}function T(e){return(3==e.nodeType?e.nodeValue:e.childNodes).length}function se(e,t){t=t?e.left:e.right;return{left:t,right:t,top:e.top,bottom:e.bottom}}function le(e,t){let r=t.width/e.offsetWidth,n=t.height/e.offsetHeight;return(.995<r&&r<1.005||!isFinite(r)||Math.abs(t.width-e.offsetWidth)<1)&&(r=1),(.995<n&&n<1.005||!isFinite(n)||Math.abs(t.height-e.offsetHeight)<1)&&(n=1),{scaleX:r,scaleY:n}}class Wt{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){var{anchorNode:t,focusNode:r}=e;this.set(t,Math.min(e.anchorOffset,t?T(t):0),r,Math.min(e.focusOffset,r?T(r):0))}set(e,t,r,n){this.anchorNode=e,this.anchorOffset=t,this.focusNode=r,this.focusOffset=n}}let e=null;function ce(t){if(t.setActive)return t.setActive();if(e)return t.focus(e);var r=[];for(let e=t;e&&(r.push(e,e.scrollTop,e.scrollLeft),e!=e.ownerDocument);e=e.parentNode);if(t.focus(null==e?{get preventScroll(){return e={preventScroll:!0},!0}}:void 0),!e){e=!1;for(let e=0;e<r.length;){var n=r[e++],a=r[e++],i=r[e++];n.scrollTop!=a&&(n.scrollTop=a),n.scrollLeft!=i&&(n.scrollLeft=i)}}}let a;function v(e,t,r=t){var n=a=a||document.createRange();return n.setEnd(e,r),n.setStart(e,t),n}function ue(e,t,r,n){t={key:t,code:t,keyCode:r,which:r,cancelable:!0},n&&({altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey}=n),r=new KeyboardEvent(\"keydown\",t),r.synthetic=!0,e.dispatchEvent(r),n=new KeyboardEvent(\"keyup\",t);return n.synthetic=!0,e.dispatchEvent(n),r.defaultPrevented||n.defaultPrevented}function de(e){for(;e.attributes.length;)e.removeAttributeNode(e.attributes[0])}function pe(e){return e.scrollTop>Math.max(1,e.scrollHeight-e.clientHeight-4)}function fe(r,n){for(let e=r,t=n;;){if(3==e.nodeType&&0<t)return{node:e,offset:t};if(1==e.nodeType&&0<t){if(\"false\"==e.contentEditable)return null;e=e.childNodes[t-1],t=T(e)}else{if(!e.parentNode||ie(e))return null;t=f(e),e=e.parentNode}}}function he(r,n){for(let e=r,t=n;;){if(3==e.nodeType&&t<e.nodeValue.length)return{node:e,offset:t};if(1==e.nodeType&&t<e.childNodes.length){if(\"false\"==e.contentEditable)return null;e=e.childNodes[t],t=0}else{if(!e.parentNode||ie(e))return null;t=f(e)+1,e=e.parentNode}}}class C{constructor(e,t,r=!0){this.node=e,this.offset=t,this.precise=r}static before(e,t){return new C(e.parentNode,f(e),t)}static after(e,t){return new C(e.parentNode,f(e)+1,t)}}const $t=[];class w{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let t=this.posAtStart;for(var r of this.children){if(r==e)return t;t+=r.length+r.breakAfter}throw new RangeError(\"Invalid child in posBefore\")}posAfter(e){return this.posBefore(e)+e.length}sync(r,n){if(2&this.flags){var a,i,o=this.dom;let e=null,t;for(a of this.children){if(7&a.flags&&(a.dom||!(t=e?e.nextSibling:o.firstChild)||(i=w.get(t))&&(i.parent||!i.canReuseDOM(a))||a.reuseDOM(t),a.sync(r,n),a.flags&=-8),t=e?e.nextSibling:o.firstChild,n&&!n.written&&n.node==o&&t!=a.dom&&(n.written=!0),a.dom.parentNode==o)for(;t&&t!=a.dom;)t=me(t);else o.insertBefore(a.dom,t);e=a.dom}for((t=e?e.nextSibling:o.firstChild)&&n&&n.node==o&&(n.written=!0);t;)t=me(t)}else if(1&this.flags)for(var e of this.children)7&e.flags&&(e.sync(r,n),e.flags&=-8)}reuseDOM(e){}localPosFromDOM(t,r){let n;if(t==this.dom)n=this.dom.childNodes[r];else{let e=0==T(t)?0:0==r?-1:1;for(;;){var a=t.parentNode;if(a==this.dom)break;0==e&&a.firstChild!=a.lastChild&&(e=t==a.firstChild?-1:1),t=a}n=e<0?t:t.nextSibling}if(n==this.dom.firstChild)return 0;for(;n&&!w.get(n);)n=n.nextSibling;if(!n)return this.length;for(let e=0,t=0;;e++){var i=this.children[e];if(i.dom==n)return t;t+=i.length+i.breakAfter}}domBoundsAround(n,a,i=0){let o=-1,s=-1,l=-1,c=-1;for(let e=0,t=i,r=i;e<this.children.length;e++){var u=this.children[e],d=t+u.length;if(t<n&&a<d)return u.domBoundsAround(n,a,t);if(n<=d&&-1==o&&(o=e,s=t),t>a&&u.dom.parentNode==this.dom){l=e,c=r;break}r=d,t=d+u.breakAfter}return{from:s,to:c<0?i+this.length:c,startDOM:(o?this.children[o-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:l<this.children.length&&0<=l?this.children[l].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(t){for(let e=this.parent;e;e=e.parent){if(t&&(e.flags|=2),1&e.flags)return;e.flags|=1,t=!1}}setParent(e){this.parent!=e&&(this.parent=e,7&this.flags)&&this.markParentsDirty(!0)}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),(this.dom=e).cmView=this)}get rootView(){for(let e=this;;){var t=e.parent;if(!t)return e;e=t}}replaceChildren(t,r,n=$t){this.markDirty();for(let e=t;e<r;e++){var a=this.children[e];a.parent==this&&n.indexOf(a)<0&&a.destroy()}n.length<250?this.children.splice(t,r-t,...n):this.children=[].concat(this.children.slice(0,t),n,this.children.slice(r));for(let e=0;e<n.length;e++)n[e].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new Kt(this.children,e,this.children.length)}childPos(e,t=1){return this.childCursor().findPos(e,t)}toString(){var e=this.constructor.name.replace(\"View\",\"\");return e+(this.children.length?\"(\"+this.children.join()+\")\":this.length?\"[\"+(\"Text\"==e?this.text:this.length)+\"]\":\"\")+(this.breakAfter?\"#\":\"\")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,t,r,n,a,i){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!(8&(this.flags|e.flags))}getSide(){return 0}destroy(){for(var e of this.children)e.parent==this&&e.destroy();this.parent=null}}function me(e){var t=e.nextSibling;return e.parentNode.removeChild(e),t}w.prototype.breakAfter=0;class Kt{constructor(e,t,r){this.children=e,this.pos=t,this.i=r,this.off=0}findPos(e,t=1){for(;;){if(e>this.pos||e==this.pos&&(0<t||0==this.i||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;var r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function ge(e,t,r,n,a,i,o,s,l){var c=e[\"children\"],u=c.length?c[t]:null,d=i.length?i[i.length-1]:null,p=d?d.breakAfter:o;if(!(t==n&&u&&!o&&!p&&i.length<2&&u.merge(r,a,i.length?d:null,0==r,s,l))){if(n<c.length){let e=c[n];e&&(a<e.length||e.breakAfter&&null!=d&&d.breakAfter)?(t==n&&(e=e.split(a),a=0),!p&&d&&e.merge(0,a,d,!0,0,l)?i[i.length-1]=e:((a||e.children.length&&!e.children[0].length)&&e.merge(0,a,null,!1,0,l),i.push(e))):null!==e&&void 0!==e&&e.breakAfter&&(d?d.breakAfter=1:o=1),n++}for(u&&(u.breakAfter=o,0<r)&&(!o&&i.length&&u.merge(r,u.length,i[0],!1,s,0)?u.breakAfter=i.shift().breakAfter:(r<u.length||u.children.length&&0==u.children[u.children.length-1].length)&&u.merge(r,u.length,null,!1,s,0),t++);t<n&&i.length;)if(c[n-1].become(i[i.length-1]))n--,i.pop(),l=i.length?0:s;else{if(!c[t].become(i[0]))break;t++,i.shift(),s=i.length?0:l}!i.length&&t&&n<c.length&&!c[t-1].breakAfter&&c[n].merge(0,0,c[t-1],!1,s,l)&&t--,(t<n||i.length)&&e.replaceChildren(t,n,i)}}function _e(e,t,r,n,a,i){var o,s=e.childCursor(),{i:l,off:c}=s.findPos(r,1),{i:s,off:u}=s.findPos(t,-1);let d=t-r;for(o of n)d+=o.length;e.length+=d,ge(e,s,u,l,c,n,0,a,i)}var ye,h,r=\"undefined\"!=typeof navigator?navigator:{userAgent:\"\",vendor:\"\",platform:\"\"},Te=\"undefined\"!=typeof document?document:{documentElement:{style:{}}},ve=/Edge\\/(\\d+)/.exec(r.userAgent),be=/MSIE \\d/.test(r.userAgent),b=/Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(r.userAgent),E=!!(be||b||ve),Ee=!E&&/gecko\\/(\\d+)/i.test(r.userAgent),Se=!E&&/Chrome\\/(\\d+)/.exec(r.userAgent),Ae=\"webkitFontSmoothing\"in Te.documentElement.style,Oe=!E&&/Apple Computer/.test(r.vendor),Ce=Oe&&(/Mobile\\/\\w+/.test(r.userAgent)||2<r.maxTouchPoints),S={mac:Ce||/Mac/.test(r.platform),windows:/Win/.test(r.platform),linux:/Linux|X11/.test(r.platform),ie:E,ie_version:be?Te.documentMode||6:b?+b[1]:ve?+ve[1]:0,gecko:Ee,gecko_version:Ee?+(/Firefox\\/(\\d+)/.exec(r.userAgent)||[0,0])[1]:0,chrome:!!Se,chrome_version:Se?+Se[1]:0,ios:Ce,android:/Android\\b/.test(r.userAgent),webkit:Ae,safari:Oe,webkit_version:Ae?+(/\\bAppleWebKit\\/(\\d+)/.exec(r.userAgent)||[0,0])[1]:0,tabSize:null!=Te.documentElement.style.tabSize?\"tab-size\":\"-moz-tab-size\"};class k extends w{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&t.node==this.dom&&(t.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){3==e.nodeType&&this.createDOM(e)}merge(e,t,r){return!(8&this.flags||r&&(!(r instanceof k)||256<this.length-(t-e)+r.length||8&r.flags)||(this.text=this.text.slice(0,e)+(r?r.text:\"\")+this.text.slice(t),this.markDirty(),0))}split(e){var t=new k(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=8&this.flags,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new C(this.dom,e)}domBoundsAround(e,t,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(a,i){{var o=this.dom,s=o.nodeValue.length;let e=a=s<a?s:a,t=a,r=0;if(0==a&&i<0||a==s&&0<=i?S.chrome||S.gecko||(a?(e--,r=1):t<s&&(t++,r=-1)):i<0?e--:t<s&&t++,!(a=v(o,e,t).getClientRects()).length)return null;let n=a[(r?r<0:0<=i)?0:a.length-1];return S.safari&&!r&&0==n.width&&(n=Array.prototype.find.call(a,e=>e.width)||n),r?se(n,r<0):n||null}}}class I extends w{constructor(e,t=[],r=0){super(),this.mark=e,this.children=t,this.length=r;for(var n of t)n.setParent(this)}setAttrs(e){if(de(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(var t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!(8&(this.flags|e.flags))}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?4&this.flags&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,r,n,a,i){return!(r&&(!(r instanceof I&&r.mark.eq(this.mark))||e&&a<=0||t<this.length&&i<=0)||(_e(this,e,t,r?r.children.slice():[],a-1,i-1),this.markDirty(),0))}split(e){let t=[],r=0,n=-1,a=0;for(var i of this.children){var o=r+i.length;e<o&&t.push(r<e?i.split(e-r):i),n<0&&r>=e&&(n=a),r=o,a++}var s=this.length-e;return this.length=e,-1<n&&(this.children.length=n,this.markDirty()),new I(this.mark,t,s)}domAtPos(e){return we(this,e)}coordsAt(e,t){return ke(this,e,t)}}class R extends w{static create(e,t,r){return new R(e,t,r)}constructor(e,t,r){super(),this.widget=e,this.length=t,this.side=r,this.prevWidget=null}split(e){var t=R.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){this.dom&&this.widget.updateDOM(this.dom,e)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable)||(this.dom.contentEditable=\"false\")}getSide(){return this.side}merge(e,t,r,n,a,i){return!(r&&(!(r instanceof R&&this.widget.compare(r.widget))||0<e&&a<=0||t<this.length&&i<=0)||(this.length=e+(r?r.length:0)+(this.length-t),0))}become(e){return e instanceof R&&e.side==this.side&&this.widget.constructor==e.widget.constructor&&(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0)}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(0==this.length)return y.Text.empty;let e=this;for(;e.parent;)e=e.parent;var t=e[\"view\"],t=t&&t.state.doc,r=this.posAtStart;return t?t.slice(r,r+this.length):y.Text.empty}domAtPos(e){return(this.length?0==e:0<this.side)?C.before(this.dom):C.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(t,e){e=this.widget.coordsAt(this.dom,t,e);if(e)return e;let r=this.dom.getClientRects(),n=null;if(!r.length)return null;var a=this.side?this.side<0:0<t;for(let e=a?r.length-1:0;n=r[e],!(0<t?0==e:e==r.length-1||n.top<n.bottom);e+=a?-1:1);return se(n,!a)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class Yt extends w{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof Yt&&e.side==this.side}split(){return new Yt(this.side)}sync(){var e;this.dom||((e=document.createElement(\"img\")).className=\"cm-widgetBuffer\",e.setAttribute(\"aria-hidden\",\"true\"),this.setDOM(e))}getSide(){return this.side}domAtPos(e){return 0<this.side?C.before(this.dom):C.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return y.Text.empty}get isHidden(){return!0}}function we(e,t){let r=e.dom,n=e[\"children\"],a=0;for(let e=0;a<n.length;a++){var i=n[a],o=e+i.length;if(!(o==e&&i.getSide()<=0)){if(t>e&&t<o&&i.dom.parentNode==r)return i.domAtPos(t-e);if(t<=e)break;e=o}}for(let e=a;0<e;e--){var s=n[e-1];if(s.dom.parentNode==r)return s.domAtPos(s.length)}for(let e=a;e<n.length;e++){var l=n[e];if(l.dom.parentNode==r)return l.domAtPos(0)}return new C(r,0)}function ke(e,t,s){let l=null,c=-1,u=null,d=-1;!function r(n,a){for(let e=0,t=0;e<n.children.length&&t<=a;e++){var i=n.children[e],o=t+i.length;a<=o&&(i.children.length?r(i,a-t):(!u||u.isHidden&&(0<s||function(e,t){return e=e.coordsAt(0,1),t=t.coordsAt(0,1),e&&t&&t.top<e.bottom}(u,i)))&&(a<o||t==o&&0<i.getSide())?(u=i,d=a-t):(t<a||t==o&&i.getSide()<0&&!i.isHidden)&&(l=i,c=a-t)),t=o}}(e,t);var t=(s<0?l:u)||l||u;return t?t.coordsAt(Math.max(0,t==l?c:d),s):(e=(t=e).dom.lastChild)?(t=ne(e))[t.length-1]||null:t.dom.getBoundingClientRect()}function Ie(e,t){for(var r in e)\"class\"==r&&t.class?t.class+=\" \"+e.class:\"style\"==r&&t.style?t.style+=\";\"+e.style:t[r]=e[r];return t}k.prototype.children=R.prototype.children=Yt.prototype.children=$t;const Jt=Object.create(null);function Re(e,t,r){if(e!=t){e=e||Jt,t=t||Jt;var n,a=Object.keys(e),i=Object.keys(t);if(a.length-(r&&-1<a.indexOf(r)?1:0)!=i.length-(r&&-1<i.indexOf(r)?1:0))return!1;for(n of a)if(n!=r&&(-1==i.indexOf(n)||e[n]!==t[n]))return!1}return!0}function Ne(e,t,r){let n=!1;if(t)for(var a in t)r&&a in r||(n=!0,\"style\"==a?e.style.cssText=\"\":e.removeAttribute(a));if(r)for(var i in r)t&&t[i]==r[i]||(n=!0,\"style\"==i?e.style.cssText=r[i]:e.setAttribute(i,r[i]));return n}class N{eq(e){return!1}updateDOM(e,t){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}O.BlockType=void 0,(E=O.BlockType||(O.BlockType={}))[E.Text=0]=\"Text\",E[E.WidgetBefore=1]=\"WidgetBefore\",E[E.WidgetAfter=2]=\"WidgetAfter\",E[E.WidgetRange=3]=\"WidgetRange\";class M extends y.RangeValue{constructor(e,t,r,n){super(),this.startSide=e,this.endSide=t,this.widget=r,this.spec=n}get heightRelevant(){return!1}static mark(e){return new Qt(e)}static widget(e){var t=Math.max(-1e4,Math.min(1e4,e.side||0)),r=!!e.block;return t+=r&&!e.inlineOrder?0<t?3e8:-4e8:0<t?1e8:-1e8,new P(e,t,t,r,e.widget||null,!1)}static replace(e){let t=!!e.block,r,n;var a,i;return n=e.isBlockGap?(r=-5e8,4e8):({start:a,end:i}=Me(e,t),r=(a?t?-3e8:-1:5e8)-1,1+(i?t?2e8:1:-6e8)),new P(e,r,n,t,e.widget||null,!0)}static line(e){return new Zt(e)}static set(e,t=!1){return y.RangeSet.of(e,t)}hasHeight(){return!!this.widget&&-1<this.widget.estimatedHeight}}M.none=y.RangeSet.empty;class Qt extends M{constructor(e){var{start:t,end:r}=Me(e);super(t?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||\"span\",this.class=e.class||\"\",this.attrs=e.attributes||null}eq(e){var t;return this==e||e instanceof Qt&&this.tagName==e.tagName&&(this.class||(null==(t=this.attrs)?void 0:t.class))==(e.class||(null==(t=e.attrs)?void 0:t.class))&&Re(this.attrs,e.attrs,\"class\")}range(e,t=e){if(t<=e)throw new RangeError(\"Mark decorations may not be empty\");return super.range(e,t)}}Qt.prototype.point=!1;class Zt extends M{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Zt&&this.spec.class==e.spec.class&&Re(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError(\"Line decoration ranges must be zero-length\");return super.range(e,t)}}Zt.prototype.mapMode=y.MapMode.TrackBefore,Zt.prototype.point=!0;class P extends M{constructor(e,t,r,n,a,i){super(t,r,a,e),this.block=n,this.isReplace=i,this.mapMode=n?t<=0?y.MapMode.TrackBefore:y.MapMode.TrackAfter:y.MapMode.TrackDel}get type(){return this.startSide!=this.endSide?O.BlockType.WidgetRange:this.startSide<=0?O.BlockType.WidgetBefore:O.BlockType.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(5<=this.widget.estimatedHeight||0<this.widget.lineBreaks)}eq(e){return e instanceof P&&(t=this.widget,r=e.widget,t==r||!!(t&&r&&t.compare(r)))&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide;var t,r}range(e,t=e){if(this.isReplace&&(t<e||e==t&&0<this.startSide&&this.endSide<=0))throw new RangeError(\"Invalid range for replacement decoration\");if(this.isReplace||t==e)return super.range(e,t);throw new RangeError(\"Widget decorations can only have zero-length ranges\")}}function Me(e,t=!1){let{inclusiveStart:r,inclusiveEnd:n}=e;return null==r&&(r=e.inclusive),null==n&&(n=e.inclusive),{start:null!==r&&void 0!==r?r:t,end:null!==n&&void 0!==n?n:t}}function Pe(e,t,r,n=0){var a=r.length-1;0<=a&&r[a]+n>=e?r[a]=Math.max(r[a],t):r.push(e,t)}P.prototype.point=!0;class D extends w{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,r,n,a,i){if(r){if(!(r instanceof D))return!1;this.dom||r.transferDOM(this)}return n&&this.setDeco(r?r.attrs:null),_e(this,e,t,r?r.children.slice():[],a,i),!0}split(r){var n=new D;if(n.breakAfter=this.breakAfter,0!=this.length){let{i:t,off:e}=this.childPos(r);e&&(n.append(this.children[t].split(e),0),this.children[t].merge(e,this.children[t].length,null,!1,0,0),t++);for(let e=t;e<this.children.length;e++)n.append(this.children[e],0);for(;0<t&&0==this.children[t-1].length;)this.children[--t].destroy();this.children.length=t,this.markDirty(),this.length=r}return n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=void 0===this.prevAttrs?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Re(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){!function e(t,r,n){let a,i=t.children;0<n&&r instanceof I&&i.length&&(a=i[i.length-1])instanceof I&&a.mark.eq(r.mark)?e(a,r.children[0],n-1):(i.push(r),r.setParent(t)),t.length+=r.length}(this,e,t)}addLineDeco(e){var t=e.spec.attributes,e=e.spec.class;t&&(this.attrs=Ie(t,this.attrs||{})),e&&(this.attrs=Ie({class:e},this.attrs||{}))}domAtPos(e){return we(this,e)}reuseDOM(e){\"DIV\"==e.nodeName&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?4&this.flags&&(de(this.dom),this.dom.className=\"cm-line\",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement(\"div\")),this.dom.className=\"cm-line\",this.prevAttrs=this.attrs?null:void 0),void 0!==this.prevAttrs&&(Ne(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add(\"cm-line\"),this.prevAttrs=void 0),super.sync(e,t);let r=this.dom.lastChild;for(;r&&w.get(r)instanceof I;)r=r.lastChild;r&&this.length&&(\"BR\"==r.nodeName||0!=(null==(e=w.get(r))?void 0:e.isEditable)||S.ios&&this.children.some(e=>e instanceof k))||((t=document.createElement(\"BR\")).cmIgnore=!0,this.dom.appendChild(t))}measureTextSize(){if(0==this.children.length||20<this.length)return null;let e=0,t;for(var r of this.children){if(!(r instanceof k)||/[^ -~]/.test(r.text))return null;r=ne(r.dom);if(1!=r.length)return null;e+=r[0].width,t=r[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){e=ke(this,e,t);if(!this.children.length&&e&&this.parent){var t=this.parent.view.viewState[\"heightOracle\"],r=e.bottom-e.top;if(Math.abs(r-t.lineHeight)<2&&t.textHeight<r)return r=(r-t.textHeight)/2,{top:e.top+r,bottom:e.bottom-r,left:e.left,right:e.left}}return e}become(e){return e instanceof D&&0==this.children.length&&0==e.children.length&&Re(this.attrs,e.attrs)&&this.breakAfter==e.breakAfter}covers(){return!0}static find(r,n){for(let e=0,t=0;e<r.children.length;e++){var a=r.children[e],i=t+a.length;if(n<=i){if(a instanceof D)return a;if(n<i)break}t=i+a.breakAfter}return null}}class x extends w{constructor(e,t,r){super(),this.widget=e,this.length=t,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,t,r,n,a,i){return!(r&&(!(r instanceof x&&this.widget.compare(r.widget))||0<e&&a<=0||t<this.length&&i<=0)||(this.length=e+(r?r.length:0)+(this.length-t),0))}domAtPos(e){return 0==e?C.before(this.dom):C.after(this.dom,e==this.length)}split(e){var t=this.length-e,e=(this.length=e,new x(this.widget,t,this.deco));return e.breakAfter=this.breakAfter,e}get children(){return $t}sync(e){this.dom&&this.widget.updateDOM(this.dom,e)||(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable)||(this.dom.contentEditable=\"false\")}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):y.Text.empty}domBoundsAround(){return null}become(e){return e instanceof x&&e.widget.constructor==this.widget.constructor&&(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.deco=e.deco,this.breakAfter=e.breakAfter,!0)}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,t){var r=this.widget.coordsAt(this.dom,e,t);return r||(this.widget instanceof Xt?null:se(this.dom.getBoundingClientRect(),this.length?0==e:t<=0))}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(e){var{startSide:t,endSide:r}=this.deco;return t!=r&&(e<0?t<0:0<r)}}class Xt extends N{constructor(e){super(),this.height=e}toDOM(){var e=document.createElement(\"div\");return e.className=\"cm-gap\",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+\"px\",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class er{constructor(e,t,r,n){this.doc=e,this.pos=t,this.end=r,this.disallowBlockEffectsFor=n,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text=\"\",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){var e;return 0==this.content.length?!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos:!((e=this.content[this.content.length-1]).breakAfter||e instanceof x&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new D),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(De(new Yt(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,this.posCovered()||e&&this.content.length&&this.content[this.content.length-1]instanceof x||this.getLine()}buildText(e,t,r){for(;0<e;){if(this.textOff==this.text.length){var{value:n,lineBreak:a,done:i}=this.cursor.next(this.skip);if(this.skip=0,i)throw new Error(\"Ran out of text content when drawing inline views\");if(a){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}this.text=n,this.textOff=0}i=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(t.slice(t.length-r)),this.getLine().append(De(new k(this.text.slice(this.textOff,this.textOff+i)),t),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=0}}span(e,t,r,n){this.buildText(t-e,r,n),this.pos=t,this.openStart<0&&(this.openStart=n)}point(e,t,r,n,a,i){if(this.disallowBlockEffectsFor[i]&&r instanceof P){if(r.block)throw new RangeError(\"Block decorations may not be specified via plugins\");if(t>this.doc.lineAt(this.pos).to)throw new RangeError(\"Decorations that replace line breaks may not be specified via plugins\")}var o,s,l,c,i=t-e;r instanceof P?r.block?(0<r.startSide&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new x(r.widget||tr.block,i,r))):(o=R.create(r.widget||tr.inline,i,i?0:r.startSide),s=this.atCursorPos&&!o.isEditable&&a<=n.length&&(e<t||0<r.startSide),l=!o.isEditable&&(e<t||a>n.length||r.startSide<=0),c=this.getLine(),2!=this.pendingBuffer||s||o.isEditable||(this.pendingBuffer=0),this.flushBuffer(n),s&&(c.append(De(new Yt(1),n),a),a=n.length+Math.max(0,a-n.length)),c.append(De(o,n),a),this.atCursorPos=l,this.pendingBuffer=l?e<t||a>n.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=n.slice())):this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r),i&&(this.textOff+i<=this.text.length?this.textOff+=i:(this.skip+=i-(this.text.length-this.textOff),this.text=\"\",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=a)}static build(e,t,r,n,a){e=new er(e,t,r,a);return e.openEnd=y.RangeSet.spans(n,t,r,e),e.openStart<0&&(e.openStart=e.openEnd),e.finish(e.openEnd),e}}function De(e,t){for(var r of t)e=new I(r,[e],e.length);return e}class tr extends N{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}tr.inline=new tr(\"span\"),tr.block=new tr(\"div\"),O.Direction=void 0,(be=O.Direction||(O.Direction={}))[be.LTR=0]=\"LTR\",be[be.RTL=1]=\"RTL\";const L=O.Direction.LTR,rr=O.Direction.RTL;function xe(t){var r=[];for(let e=0;e<t.length;e++)r.push(1<<+t[e]);return r}const nr=xe(\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\"),ar=xe(\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\"),ir=Object.create(null),F=[];for(ye of[\"()\",\"[]\",\"{}\"]){var Le=ye.charCodeAt(0),Fe=ye.charCodeAt(1);ir[Le]=Fe,ir[Fe]=-Le}function Ue(e){return e<=247?nr[e]:1424<=e&&e<=1524?2:1536<=e&&e<=1785?ar[e-1536]:1774<=e&&e<=2220?4:8192<=e&&e<=8204?256:64336<=e&&e<=65023?4:1}const or=/[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/;class U{get dir(){return this.level%2?rr:L}constructor(e,t,r){this.from=e,this.to=t,this.level=r}side(e,t){return this.dir==t==e?this.to:this.from}forward(e,t){return e==(this.dir==t)}static find(t,r,n,a){let i=-1;for(let e=0;e<t.length;e++){var o=t[e];if(o.from<=r&&o.to>=r){if(o.level==n)return e;(i<0||(0!=a?a<0?o.from<r:o.to>r:t[i].level>o.level))&&(i=e)}}if(i<0)throw new RangeError(\"Index out of range\");return i}}const B=[];function Be(e,t,r,n,a,i,o){var s=t%2?2:1,l=e,c=a,u=i,d=n,p=s;for(let e=0;e<=d.length;e++){var f=e?d[e-1].to:c,h=e<d.length?d[e].from:u,m=e?256:p;for(let t=f,r=m,n=m;t<h;t++){let e=Ue(l.charCodeAt(t));512==e?e=r:8==e&&4==n&&(e=16),B[t]=4==e?2:e,7&e&&(n=e),r=e}for(let r=f,n=m,a=m;r<h;r++){let e=B[r];if(128==e)r<h-1&&n==B[r+1]&&24&n?e=B[r]=n:B[r]=256;else if(64==e){let t=r+1;for(;t<h&&64==B[t];)t++;var g=r&&8==n||t<u&&8==B[t]?1==a?1:8:256;for(let e=r;e<t;e++)B[e]=g;r=t-1}else 8==e&&1==a&&(B[r]=1);7&(n=e)&&(a=e)}}var _=e,y=a,T=i,v=n,b=s,E=1==b?2:1;for(let e=0,a=0,i=0;e<=v.length;e++){var S=e?v[e-1].to:y,A=e<v.length?v[e].from:T;for(let t=S,e,r,n;t<A;t++)if(r=ir[e=_.charCodeAt(t)])if(r<0){for(let e=a-3;0<=e;e-=3)if(F[e+1]==-r){var O=F[e+2],O=2&O?b:4&O?1&O?E:b:0;O&&(B[t]=B[F[e]]=O),a=e;break}}else{if(189==F.length)break;F[a++]=t,F[a++]=e,F[a++]=i}else if(2==(n=B[t])||1==n){var C=n==b;i=C?0:1;for(let e=a-3;0<=e;e-=3){var w=F[e+2];if(2&w)break;if(C)F[e+2]|=2;else{if(4&w)break;F[e+2]|=4}}}}var k=a,I=i,R=n,N=s;for(let i=0,r=N;i<=R.length;i++){let e=i?R[i-1].to:k,t=i<R.length?R[i].from:I;for(let a=e;a<t;){var M=B[a];if(256==M){let n=a+1;for(;;)if(n==t){if(i==R.length)break;n=R[i++].to,t=i<R.length?R[i].from:I}else{if(256!=B[n])break;n++}var P=1==r,D=P==(1==(n<I?B[n]:N))?P?1:2:N;for(let e=n,t=i,r=t?R[t-1].to:k;e>a;)e==r&&(e=R[--t].from,r=t?R[t-1].to:k),B[--e]=D;a=n}else r=M,a++}}!function i(o,s,l,c,u,d,p){var f=c%2?2:1;if(c%2==u%2)for(let n=s,a=0;n<l;){let e=!0,t=!1;(a==d.length||n<d[a].from)&&(h=B[n])!=f&&(e=!1,t=16==h);var h,m=e||1!=f?null:[],g=e?c:c+1;let r=n;e:for(;;)if(a<d.length&&r==d[a].from){if(t)break;var _=d[a];if(!e)for(let e=_.to,t=a+1;;){if(e==l)break e;if(!(t<d.length&&d[t].from==e)){if(B[e]==f)break e;break}e=d[t++].to}a++,m?m.push(_):(_.from>n&&p.push(new U(n,_.from,g)),Be(o,_.direction==L!=!(g%2)?c+1:c,u,_.inner,_.from,_.to,p),n=_.to),r=_.to}else{if(r==l||(e?B[r]!=f:B[r]==f))break;r++}m?i(o,n,r,c+1,u,m,p):n<r&&p.push(new U(n,r,g)),n=r}else for(let n=l,a=d.length;n>s;){let e=!0,t=!1;(!a||n>d[a-1].to)&&(y=B[n-1])!=f&&(e=!1,t=16==y);var y,T=e||1!=f?null:[],v=e?c:c+1;let r=n;e:for(;;)if(a&&r==d[a-1].to){if(t)break;var b=d[--a];if(!e)for(let e=b.from,t=a;;){if(e==s)break e;if(!t||d[t-1].to!=e){if(B[e-1]==f)break e;break}e=d[--t].from}T?T.push(b):(b.to<n&&p.push(new U(b.to,n,v)),Be(o,b.direction==L!=!(v%2)?c+1:c,u,b.inner,b.from,b.to,p),n=b.from),r=b.from}else{if(r==s||(e?B[r-1]!=f:B[r-1]==f))break;r--}T?i(o,r,n,c+1,u,T,p):r<n&&p.push(new U(r,n,v)),n=r}}(e,a,i,t,r,n,o)}function je(e,t,r){if(!e)return[new U(0,0,t==rr?1:0)];if(t==L&&!r.length&&!or.test(e))return He(e.length);if(r.length)for(;e.length>B.length;)B[B.length]=256;var n=[],t=t==L?0:1;return Be(e,t,t,r,0,e.length,n),n}function He(e){return[new U(0,e,0)]}let d=\"\";function Ge(e,t,r,n,a){let i=n.head-e.from,o=U.find(t,i,null!=(c=n.bidiLevel)?c:-1,n.assoc),s=t[o],l=s.side(a,r);if(i==l){var c=o+=a?1:-1;if(c<0||c>=t.length)return null;s=t[o=c],i=s.side(!a,r),l=s.side(a,r)}let u=y.findClusterBreak(e.text,i,s.forward(a,r));(u<s.from||u>s.to)&&(u=l),d=e.text.slice(Math.min(i,u),Math.max(i,u));n=o==(a?t.length-1:0)?null:t[o+(a?1:-1)];return n&&u==l&&n.level+(a?0:1)<s.level?y.EditorSelection.cursor(n.side(!a,r)+e.from,n.forward(a,r)?1:-1,n.level):y.EditorSelection.cursor(u+e.from,s.forward(a,r)?-1:1,s.level)}const sr=y.Facet.define(),lr=y.Facet.define(),cr=y.Facet.define(),ur=y.Facet.define(),dr=y.Facet.define(),pr=y.Facet.define(),fr=y.Facet.define(),hr=y.Facet.define(),mr=y.Facet.define(),gr=y.Facet.define({combine:e=>e.some(e=>e)}),_r=y.Facet.define({combine:e=>e.some(e=>e)}),yr=y.Facet.define();class Tr{constructor(e,t=\"nearest\",r=\"nearest\",n=5,a=5,i=!1){this.range=e,this.y=t,this.x=r,this.yMargin=n,this.xMargin=a,this.isSnapshot=i}map(e){return e.empty?this:new Tr(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Tr(y.EditorSelection.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const vr=y.StateEffect.define({map:(e,t)=>e.map(t)}),br=y.StateEffect.define();function A(e,t,r){e=e.facet(ur);e.length?e[0](t):window.onerror&&window.onerror(String(t),r,void 0,void 0,t)||(r?console.error(r+\":\",t):console.error(t))}const j=y.Facet.define({combine:e=>!e.length||e[0]});let o=0;const Er=y.Facet.define({combine(n){return n.filter((t,r)=>{for(let e=0;e<r;e++)if(n[e].plugin==t.plugin)return!1;return!0})}});class H{constructor(e,t,r,n,a){this.id=e,this.create=t,this.domEventHandlers=r,this.domEventObservers=n,this.baseExtensions=a(this),this.extension=this.baseExtensions.concat(Er.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(Er.of({plugin:this,arg:e}))}static define(e,t){const{eventHandlers:r,eventObservers:n,provide:a,decorations:i}=t||{};return new H(o++,e,r,n,t=>{var e=[];return i&&e.push(Cr.of(e=>{e=e.plugin(t);return e?i(e):M.none})),a&&e.push(a(t)),e})}static fromClass(r,e){return H.define((e,t)=>new r(e,t),e)}}class Sr{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(t){if(this.value){if(this.mustUpdate){var r=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(r)}catch(e){if(A(r.state,e,\"CodeMirror plugin crashed\"),this.value.destroy)try{this.value.destroy()}catch(e){}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(t,this.spec.arg)}catch(e){A(t.state,e,\"CodeMirror plugin crashed\"),this.deactivate()}return this}destroy(t){var e;if(null!=(e=this.value)&&e.destroy)try{this.value.destroy()}catch(e){A(t.state,e,\"CodeMirror plugin crashed\")}}deactivate(){this.spec=this.value=null}}const Ar=y.Facet.define(),Or=y.Facet.define(),Cr=y.Facet.define(),wr=y.Facet.define(),kr=y.Facet.define(),Ir=y.Facet.define();function Ve(t,c){var e=t.state.facet(Ir);if(!e.length)return e;e=e.map(e=>e instanceof Function?e(t):e);let r=[];return y.RangeSet.spans(e,c.from,c.to,{point(){},span(e,t,n,a){var i,o=e-c.from,s=t-c.from;let l=r;for(let r=n.length-1;0<=r;r--,a--){let e=n[r].spec.bidiIsolate,t;null==e&&(e=function(t,r,n){for(let e=r;e<n;e++){var a=Ue(t.charCodeAt(e));if(1==a)return L;if(2==a||4==a)return rr}return L}(c.text,o,s)),l=(0<a&&l.length&&(t=l[l.length-1]).to==o&&t.direction==e?(t.to=s,t):(i={from:o,to:s,direction:e,inner:[]},l.push(i),i)).inner}}}),r}const Rr=y.Facet.define();function qe(e){let t=0,r=0,n=0,a=0;for(var i of e.state.facet(Rr)){i=i(e);i&&(null!=i.left&&(t=Math.max(t,i.left)),null!=i.right&&(r=Math.max(r,i.right)),null!=i.top&&(n=Math.max(n,i.top)),null!=i.bottom)&&(a=Math.max(a,i.bottom))}return{left:t,right:r,top:n,bottom:a}}const Nr=y.Facet.define();class G{constructor(e,t,r,n){this.fromA=e,this.toA=t,this.fromB=r,this.toB=n}join(e){return new G(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,r=this;for(;0<t;t--){var n=e[t-1];if(!(n.fromA>r.toA)){if(n.toA<r.fromA)break;r=r.join(n),e.splice(t-1,1)}}return e.splice(t,0,r),e}static extendWithRanges(a,i){if(0==i.length)return a;var o=[];for(let e=0,t=0,r=0,n=0;;e++){for(var s=e==a.length?null:a[e],l=r-n,c=s?s.fromB:1e9;t<i.length&&i[t]<c;){var u=i[t],d=i[t+1],u=Math.max(n,u),p=Math.min(c,d);if(u<=p&&new G(u+l,p+l,u,p).addToSet(o),c<d)break;t+=2}if(!s)return o;new G(s.fromA,s.toA,s.fromB,s.toB).addToSet(o),r=s.toA,n=s.toB}}}class Mr{constructor(e,t,r){this.view=e,this.state=t,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=y.ChangeSet.empty(this.startState.doc.length);for(var n of r)this.changes=this.changes.compose(n.changes);let a=[];this.changes.iterChangedRanges((e,t,r,n)=>a.push(new G(e,t,r,n))),this.changedRanges=a}static create(e,t,r){return new Mr(e,t,r)}get viewportChanged(){return 0<(4&this.flags)}get viewportMoved(){return 0<(8&this.flags)}get heightChanged(){return 0<(2&this.flags)}get geometryChanged(){return this.docChanged||0<(18&this.flags)}get focusChanged(){return 0<(1&this.flags)}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return 0==this.flags&&0==this.transactions.length}}class Pr extends w{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=M.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new D],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new G(0,0,0,e.state.doc.length)],0,null)}update(e){let t=e.changedRanges,r=(0<this.minWidth&&t.length&&(t.every(({fromA:e,toA:t})=>t<this.minWidthFrom||e>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e),-1);0<=this.view.inputState.composing&&!this.view.observer.editContext&&(null!=(a=this.domChanged)&&a.newSel?r=this.domChanged.newSel.head:function(e,r){let n=!1;r&&e.iterChangedRanges((e,t)=>{e<r.to&&t>r.from&&(n=!0)});return n}(e.changes,this.hasComposition)||e.selectionSet||(r=e.state.selection.main.head));var n,a=-1<r?function(t,e,r){r=ze(t,r);if(!r)return null;var{node:n,from:a,to:i}=r,o=n.nodeValue;if(/[\\n\\r]/.test(o))return null;if(t.state.doc.sliceString(r.from,r.to)!=o)return null;var r=e.invertedDesc,s=new G(r.mapPos(a),r.mapPos(i),a,i),l=[];for(let e=n.parentNode;;e=e.parentNode){var c=w.get(e);if(c instanceof I)l.push({node:e,deco:c.mark});else{if(c instanceof D||\"DIV\"==e.nodeName&&e.parentNode==t.contentDOM)return{range:s,text:n,marks:l,line:e};if(e==t.contentDOM)return null;l.push({node:e,deco:new Qt({inclusive:!0,attributes:function(t){var r=Object.create(null);for(let e=0;e<t.attributes.length;e++){var n=t.attributes[e];r[n.name]=n.value}return r}(e),tagName:e.tagName.toLowerCase()})})}}}(this.view,e.changes,r):null,i=(this.domChanged=null,this.hasComposition&&(this.markedForComposition.clear(),{from:i,to:o}=this.hasComposition,t=new G(i,o,e.changes.mapPos(i,-1),e.changes.mapPos(o,1)).addToSet(t.slice())),this.hasComposition=a?{from:a.range.fromB,to:a.range.toB}:null,(S.ie||S.chrome)&&!a&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0),this.decorations),o=this.updateDeco(),s=(i=i,o=o,s=e.changes,n=new l,y.RangeSet.compare(i,o,s,n),n.changes);return t=G.extendWithRanges(t,s),!!(7&this.flags||0!=t.length)&&(this.updateInner(t,e.startState.doc.length,a),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,r);let n=this.view[\"observer\"];n.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+\"px\",this.dom.style.flexBasis=this.minWidth?this.minWidth+\"px\":\"\";var e=S.chrome||S.ios?{node:n.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,e),this.flags&=-8,e&&(e.written||n.selectionRange.focusNode!=e.node)&&(this.forceSelection=!0),this.dom.style.height=\"\"}),this.markedForComposition.forEach(e=>e.flags&=-9);var a=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(var i of this.children)i instanceof x&&i.widget instanceof Xt&&a.push(i.dom);n.updateGaps(a)}updateChildren(e,t,c){var u=c?c.range.addToSet(e.slice()):e,d=this.childCursor(t);for(let l=u.length-1;;l--){var p=0<=l?u[l]:null;if(!p)break;let{fromA:e,toA:t,fromB:r,toB:n}=p,a,i,o,s;c&&c.range.fromB<n&&c.range.toB>r?(p=er.build(this.view.state.doc,r,c.range.fromB,this.decorations,this.dynamicDecorationMap),h=er.build(this.view.state.doc,c.range.toB,n,this.decorations,this.dynamicDecorationMap),i=p.breakAtStart,o=p.openStart,s=h.openEnd,f=this.compositionView(c),h.breakAtStart?f.breakAfter=1:h.content.length&&f.merge(f.length,f.length,h.content[0],!1,h.openStart,0)&&(f.breakAfter=h.content[0].breakAfter,h.content.shift()),p.content.length&&f.merge(0,0,p.content[p.content.length-1],!0,0,p.openEnd)&&p.content.pop(),a=p.content.concat(f).concat(h.content)):{content:a,breakAtStart:i,openStart:o,openEnd:s}=er.build(this.view.state.doc,r,n,this.decorations,this.dynamicDecorationMap);var{i:p,off:f}=d.findPos(t,1),{i:h,off:m}=d.findPos(e,-1);ge(this,h,m,p,f,a,i,o,s)}c&&this.fixCompositionDOM(c)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(var t of e.transactions)for(var r of t.effects)r.is(br)&&(this.editContextFormatting=r.value)}compositionView(e){let t=new k(e.text.nodeValue);t.flags|=8;for(var{deco:r}of e.marks)t=new I(r,[t],t.length);e=new D;return e.append(t,0),e}fixCompositionDOM(t){var r=(e,t)=>{t.flags|=8|(t.children.some(e=>7&e.flags)?1:0),this.markedForComposition.add(t);var r=w.get(e);r&&r!=t&&(r.dom=null),t.setDOM(e)};let n=this.childPos(t.range.fromB,1),a=this.children[n.i];r(t.line,a);for(let e=t.marks.length-1;-1<=e;e--)n=a.childPos(n.off,1),a=a.children[n.i],r(0<=e?t.marks[e].node:t.text,a)}updateSelection(e=!1,t=!1){!e&&this.view.observer.selectionRange.focusNode||this.view.observer.readSelectionRange();let s=this.view.root.activeElement,r=s==this.dom,l=!r&&!(this.view.state.facet(j)||-1<this.dom.tabIndex)&&re(this.dom,this.view.observer.selectionRange)&&!(s&&this.dom.contains(s));if(r||t||l){let t=this.forceSelection,n=(this.forceSelection=!1,this.view.state.selection.main),a=this.moveToLine(this.domAtPos(n.anchor)),i=n.empty?a:this.moveToLine(this.domAtPos(n.head));if(S.gecko&&n.empty&&!this.hasComposition&&1==(e=a).node.nodeType&&e.node.firstChild&&(0==e.offset||\"false\"==e.node.childNodes[e.offset-1].contentEditable)&&(e.offset==e.node.childNodes.length||\"false\"==e.node.childNodes[e.offset].contentEditable)){let e=document.createTextNode(\"\");this.view.observer.ignore(()=>a.node.insertBefore(e,a.node.childNodes[a.offset]||null)),a=i=new C(e,0),t=!0}let o=this.view.observer.selectionRange;!t&&o.focusNode&&(ae(a.node,a.offset,o.anchorNode,o.anchorOffset)&&ae(i.node,i.offset,o.focusNode,o.focusOffset)||this.suppressWidgetCursorChange(o,n))||(this.view.observer.ignore(()=>{S.android&&S.chrome&&this.dom.contains(o.focusNode)&&function(t,r){for(let e=t;e&&e!=r;e=e.assignedSlot||e.parentNode)if(1==e.nodeType&&\"false\"==e.contentEditable)return 1;return}(o.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));var e,t=ee(this.view.root);if(t)if(n.empty)S.gecko&&(r=a.node,e=a.offset,r=1!=r.nodeType?0:(e&&\"false\"==r.childNodes[e-1].contentEditable?1:0)|(e<r.childNodes.length&&\"false\"==r.childNodes[e].contentEditable?2:0))&&3!=r&&(e=(1==r?fe:he)(a.node,a.offset))&&(a=new C(e.node,e.offset)),t.collapse(a.node,a.offset),null!=n.bidiLevel&&void 0!==t.caretBidiLevel&&(t.caretBidiLevel=n.bidiLevel);else if(t.extend){t.collapse(a.node,a.offset);try{t.extend(i.node,i.offset)}catch(e){}}else{var r=document.createRange();n.anchor>n.head&&([a,i]=[i,a]),r.setEnd(i.node,i.offset),r.setStart(a.node,a.offset),t.removeAllRanges(),t.addRange(r)}l&&this.view.root.activeElement==this.dom&&(this.dom.blur(),s)&&s.focus()}),this.view.observer.setSelectionRange(a,i)),this.impreciseAnchor=a.precise?null:new C(o.anchorNode,o.anchorOffset),this.impreciseHead=i.precise?null:new C(o.focusNode,o.focusOffset)}}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&ae(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){var e,t,r,n,a,i,o;this.hasComposition||(e=this[\"view\"],t=e.state.selection.main,r=ee(e.root),{anchorNode:n,anchorOffset:a}=e.observer.selectionRange,r&&t.empty&&t.assoc&&r.modify&&(o=D.find(this,t.head))&&(i=o.posAtStart,t.head==i||t.head==i+o.length||(i=this.coordsAt(t.head,-1),o=this.coordsAt(t.head,1),!i)||!o||i.bottom>o.top||(i=this.domAtPos(t.head+t.assoc),r.collapse(i.node,i.offset),r.modify(\"move\",t.assoc<0?\"forward\":\"backward\",\"lineboundary\"),e.observer.readSelectionRange(),o=e.observer.selectionRange,e.docView.posFromDOM(o.anchorNode,o.anchorOffset)!=t.from&&r.collapse(n,a))))}moveToLine(t){let r=this.dom,n;if(t.node!=r)return t;for(let e=t.offset;!n&&e<r.childNodes.length;e++){var a=w.get(r.childNodes[e]);a instanceof D&&(n=a.domAtPos(0))}for(let e=t.offset-1;!n&&0<=e;e--){var i=w.get(r.childNodes[e]);i instanceof D&&(n=i.domAtPos(i.length))}return n?new C(n.node,n.offset,!0):t}nearest(t){for(let e=t;e;){var r=w.get(e);if(r&&r.rootView==this)return r;e=e.parentNode}return null}posFromDOM(e,t){var r=this.nearest(e);if(r)return r.localPosFromDOM(e,t)+r.posAtStart;throw new RangeError(\"Trying to find position for a DOM position outside of the document\")}domAtPos(e){let{i:t,off:r}=this.childCursor().findPos(e,-1);for(;t<this.children.length-1;){var n=this.children[t];if(r<n.length||n instanceof D)break;t++,r=0}return this.children[t].domAtPos(r)}coordsAt(r,n){let a=null,i=0;for(let e=this.length,t=this.children.length-1;0<=t;t--){var o=this.children[t],s=e-o.breakAfter,l=s-o.length;if(s<r)break;if(l<=r&&(l<r||o.covers(-1))&&(r<s||o.covers(1))&&(!a||o instanceof D&&!(a instanceof D&&0<=n)))a=o,i=l;else if(a&&l==r&&s==r&&o instanceof x&&Math.abs(n)<2){if(o.deco.startSide<0)break;t&&(a=null)}e=l}return a?a.coordsAt(r-i,n):null}coordsForChar(e){let{i:t,off:r}=this.childPos(e,1),n=this.children[t];if(n instanceof D){for(;n.children.length;){let{i:e,off:t}=n.childPos(r,1);for(;;e++){if(e==n.children.length)return null;if((n=n.children[e]).length)break}r=t}if(n instanceof k){e=y.findClusterBreak(n.text,r);if(e!=r){var a=v(n.dom,r,e).getClientRects();for(let e=0;e<a.length;e++){var i=a[e];if(e==a.length-1||i.top<i.bottom&&i.left<i.right)return i}}}}return null}measureVisibleLineHeights(e){var r=[],{from:n,to:a}=e,i=this.view.contentDOM.clientWidth,o=i>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1;let s=-1,l=this.view.textDirection==O.Direction.LTR;for(let e=0,t=0;t<this.children.length;t++){var c,u,d=this.children[t],p=e+d.length;if(a<p)break;e>=n&&(u=d.dom.getBoundingClientRect(),r.push(u.height),o)&&(c=(c=d.dom.lastChild)?ne(c):[]).length&&(c=c[c.length-1],(u=l?c.right-u.left:u.right-c.left)>s)&&(s=u,this.minWidth=i,this.minWidthFrom=e,this.minWidthTo=p),e=p+d.breakAfter}return r}textDirectionAt(e){e=this.childPos(e,1).i;return\"rtl\"==getComputedStyle(this.children[e].dom).direction?O.Direction.RTL:O.Direction.LTR}measureTextSize(){for(var e of this.children)if(e instanceof D){e=e.measureTextSize();if(e)return e}let t=document.createElement(\"div\"),r,n,a;return t.className=\"cm-line\",t.style.width=\"99999px\",t.style.position=\"absolute\",t.textContent=\"abc def ghi jkl mno pqr stu\",this.view.observer.ignore(()=>{this.dom.appendChild(t);var e=ne(t.firstChild)[0];r=t.getBoundingClientRect().height,n=e?e.width/27:7,a=e?e.height:r,t.remove()}),{lineHeight:r,charWidth:n,textHeight:a}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new Kt(this.children,e,t)}computeBlockGapDeco(){var r=[],n=this.view.viewState;for(let e=0,t=0;;t++){var a,i=t==n.viewports.length?null:n.viewports[t],o=i?i.from-1:this.length;if(o>e&&(a=(n.lineBlockAt(o).bottom-n.lineBlockAt(e).top)/this.view.scaleY,r.push(M.replace({widget:new Xt(a),block:!0,inclusive:!0,isBlockGap:!0}).range(e,o))),!i)break;e=i.to+1}return M.set(r)}updateDeco(){let t=1;var e=this.view.state.facet(Cr).map(e=>{return(this.dynamicDecorationMap[t++]=\"function\"==typeof e)?e(this.view):e});let n=!1,r=this.view.state.facet(wr).map((e,t)=>{var r=\"function\"==typeof e;return r&&(n=!0),r?e(this.view):e});for(r.length&&(this.dynamicDecorationMap[t++]=n,e.push(y.RangeSet.join(r))),this.decorations=[this.editContextFormatting,...e,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];t<this.decorations.length;)this.dynamicDecorationMap[t++]=!1;return this.decorations}scrollIntoView(r){if(r.isSnapshot)a=this.view.viewState.lineBlockAt(r.range.head),this.view.scrollDOM.scrollTop=a.top-r.yMargin,this.view.scrollDOM.scrollLeft=r.xMargin;else{for(var n of this.view.state.facet(yr))try{if(n(this.view,r.range,r))return!0}catch(e){A(this.view.state,e,\"scroll handler\")}var a=r[\"range\"];let e=this.coordsAt(a.head,a.empty?a.assoc:a.head>a.anchor?-1:1),t;if(e){!a.empty&&(t=this.coordsAt(a.anchor,a.anchor>a.head?-1:1))&&(e={left:Math.min(e.left,t.left),top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom)});var l,c,u,i=qe(this.view),i={left:e.left-i.left,top:e.top-i.top,right:e.right+i.right,bottom:e.bottom+i.bottom},{offsetWidth:o,offsetHeight:s}=this.view.scrollDOM,d=this.view.scrollDOM,p=i,f=a.head<a.anchor?-1:1,h=r.x,m=r.y,g=Math.max(Math.min(r.xMargin,o),-o),_=Math.max(Math.min(r.yMargin,s),-s),y=this.view.textDirection==O.Direction.LTR,T=d.ownerDocument,v=T.defaultView||window;for(let o=d,s=!1;o&&!s;)if(1==o.nodeType){let e,t=o==T.body,r=1,n=1;if(t)e=(b=void 0,(b=(u=v).visualViewport)?{left:0,right:b.width,top:0,bottom:b.height}:{left:0,right:u.innerWidth,top:0,bottom:u.innerHeight});else{if(/^(fixed|sticky)$/.test(getComputedStyle(o).position)&&(s=!0),o.scrollHeight<=o.clientHeight&&o.scrollWidth<=o.clientWidth){o=o.assignedSlot||o.parentNode;continue}var b=o.getBoundingClientRect();({scaleX:r,scaleY:n}=le(o,b)),e={left:b.left,right:b.left+o.clientWidth*r,top:b.top,bottom:b.top+o.clientHeight*n}}let a=0,i=0;if(\"nearest\"==m?p.top<e.top?(i=p.top-(e.top+_),0<f&&p.bottom>e.bottom+i&&(i=p.bottom-e.bottom+_)):p.bottom>e.bottom&&(i=p.bottom-e.bottom+_,f<0)&&p.top-i<e.top&&(i=p.top-(e.top+_)):(u=p.bottom-p.top,l=e.bottom-e.top,l=\"center\"==m&&u<=l?p.top+u/2-l/2:\"start\"==m||\"center\"==m&&f<0?p.top-_:p.bottom-l+_,i=l-e.top),\"nearest\"==h?p.left<e.left?(a=p.left-(e.left+g),0<f&&p.right>e.right+a&&(a=p.right-e.right+g)):p.right>e.right&&(a=p.right-e.right+g,f<0)&&p.left<e.left+a&&(a=p.left-(e.left+g)):(l=\"center\"==h?p.left+(p.right-p.left)/2-(e.right-e.left)/2:\"start\"==h==y?p.left-g:p.right-(e.right-e.left)+g,a=l-e.left),a||i)if(t)v.scrollBy(a,i);else{let e=0,t=0;i&&(c=o.scrollTop,o.scrollTop+=i/n,t=(o.scrollTop-c)*n),a&&(c=o.scrollLeft,o.scrollLeft+=a/r,e=(o.scrollLeft-c)*r),p={left:p.left-e,top:p.top-t,right:p.right-e,bottom:p.bottom-t},e&&Math.abs(e-a)<1&&(h=\"nearest\"),t&&Math.abs(t-i)<1&&(m=\"nearest\")}if(t)break;(p.top<e.top||p.bottom>e.bottom||p.left<e.left||p.right>e.right)&&(p={left:Math.max(p.left,e.left),right:Math.min(p.right,e.right),top:Math.max(p.top,e.top),bottom:Math.min(p.bottom,e.bottom)}),o=o.assignedSlot||o.parentNode}else{if(11!=o.nodeType)break;o=o.host}}}}}function ze(e,t){var r=e.observer.selectionRange;if(!r.focusNode)return null;var n,a=fe(r.focusNode,r.focusOffset),r=he(r.focusNode,r.focusOffset);let i=a||r;return r&&a&&r.node!=a.node&&(!(n=w.get(r.node))||n instanceof k&&n.text!=r.node.nodeValue||e.docView.lastCompositionAfterCursor&&(n=w.get(a.node))&&!(n instanceof k&&n.text!=a.node.nodeValue))&&(i=r),e.docView.lastCompositionAfterCursor=i!=a,i?{from:n=t-i.offset,to:n+i.node.nodeValue.length,node:i.node}:null}let l=class{constructor(){this.changes=[]}compareRange(e,t){Pe(e,t,this.changes)}comparePoint(e,t){Pe(e,t,this.changes)}boundChange(e){Pe(e,e,this.changes)}};function We(e,t){return e.top<t.bottom-1&&e.bottom>t.top+1}function $e(e,t){return t<e.top?{top:t,left:e.left,right:e.right,bottom:e.bottom}:e}function Ke(e,t){return t>e.bottom?{top:e.top,left:e.left,right:e.right,bottom:t}:e}function Ye(e,n,a){let i,o,s,l,c=!1,u,d,p,f;for(let r=e.firstChild;r;r=r.nextSibling){var h=ne(r);for(let t=0;t<h.length;t++){let e=h[t];o&&We(o,e)&&(e=$e(Ke(e,o.bottom),o.top));g=n;g=(_=e).left>g?_.left-g:Math.max(0,g-_.right),_=(_=a,(m=e).top>_?m.top-_:Math.max(0,_-m.bottom));if(0==g&&0==_)return(3==r.nodeType?Je:Ye)(r,n,a);(!i||l>_||l==_&&s>g)&&(i=r,o=e,s=g,m=(l=_)?a<e.top?-1:1:g?n<e.left?-1:1:0,c=!m||(0<m?t<h.length-1:0<t)),0==g?a>e.bottom&&(!p||p.bottom<e.bottom)?(u=r,p=e):a<e.top&&(!f||f.top>e.top)&&(d=r,f=e):p&&We(p,e)?p=Ke(p,e.bottom):f&&We(f,e)&&(f=$e(f,e.top))}}var m,g,_,t;return p&&p.bottom>=a?(i=u,o=p):f&&f.top<=a&&(i=d,o=f),i?(t=Math.max(o.left,Math.min(o.right,n)),3==i.nodeType?Je(i,t,a):c&&\"false\"!=i.contentEditable?Ye(i,t,a):{node:e,offset:Array.prototype.indexOf.call(e.childNodes,i)+(n>=(o.left+o.right)/2?1:0)}):{node:e,offset:0}}function Je(n,a,t){var e=n.nodeValue.length;let i=-1,o=1e9,s=0;for(let r=0;r<e;r++){var l=v(n,r,r+1).getClientRects();for(let e=0;e<l.length;e++){var c=l[e];if(c.top!=c.bottom){s=s||a-c.left;var u=(c.top>t?c.top-t:t-c.bottom)-1;if(c.left-1<=a&&c.right+1>=a&&u<o){let e=a>=(c.left+c.right)/2,t=e;if((S.chrome||S.gecko)&&v(n,r).getBoundingClientRect().left==c.right&&(t=!e),u<=0)return{node:n,offset:r+(t?1:0)};i=r+(t?1:0),o=u}}}}return{node:n,offset:-1<i?i:0<s?n.nodeValue.length:0}}function Qe(r,e,n,a=-1){var t=r.contentDOM.getBoundingClientRect(),i=t.top+r.viewState.paddingTop;let o,s=r.viewState[\"docHeight\"],{x:l,y:c}=e,u=c-i;if(u<0)return 0;if(u>s)return r.state.doc.length;for(let e=r.viewState.heightOracle.textHeight/2,t=!1;(o=r.elementAtHeight(u)).type!=O.BlockType.Text;)for(;!(0<=(u=0<a?o.bottom+e:o.top-e)&&u<=s);){if(t)return n?null:0;t=!0,a=-a}c=i+u;i=o.from;if(i<r.viewport.from)return 0==r.viewport.from?0:n?null:Ze(r,t,o,l,c);if(i>r.viewport.to)return r.viewport.to==r.state.doc.length?r.state.doc.length:n?null:Ze(r,t,o,l,c);var d=r.dom.ownerDocument,p=r.root.elementFromPoint?r.root:d;let f=p.elementFromPoint(l,c);(f=f&&!r.contentDOM.contains(f)?null:f)||(l=Math.max(t.left+1,Math.min(t.right-1,l)),(f=p.elementFromPoint(l,c))&&!r.contentDOM.contains(f)&&(f=null));let h,m=-1;if(f&&0!=(null==(t=r.docView.nearest(f))?void 0:t.isEditable)&&(d.caretPositionFromPoint?(p=d.caretPositionFromPoint(l,c))&&({offsetNode:h,offset:m}=p):d.caretRangeFromPoint&&(t=d.caretRangeFromPoint(l,c))&&({startContainer:h,startOffset:m}=t,!r.contentDOM.contains(h)||S.safari&&function(t,e,r){let n;if(3!=t.nodeType||e!=(n=t.nodeValue.length))return;for(let e=t.nextSibling;e;e=e.nextSibling)if(1!=e.nodeType||\"BR\"!=e.nodeName)return;return v(t,n-1,n).getBoundingClientRect().left>r}(h,m,l)||S.chrome&&function(t,e,r){if(0!=e)return;for(let e=t;;){var n=e.parentNode;if(!n||1!=n.nodeType||n.firstChild!=e)return;if(n.classList.contains(\"cm-line\"))break;e=n}e=(1==t.nodeType?t:v(t,0,Math.max(t.nodeValue.length,1))).getBoundingClientRect();return 5<r-e.left}(h,m,l))&&(h=void 0),h)&&(m=Math.min(T(h),m)),!h||!r.docView.dom.contains(h)){p=D.find(r.docView,i);if(!p)return u>o.top+o.height/2?o.to:o.from;({node:h,offset:m}=Ye(p.dom,l,c))}d=r.docView.nearest(h);return d?d.isWidget&&1==(null==(t=d.dom)?void 0:t.nodeType)?(i=d.dom.getBoundingClientRect(),e.y<i.top||e.y<=i.bottom&&e.x<=(i.left+i.right)/2?d.posAtStart:d.posAtEnd):d.localPosFromDOM(h,m)+d.posAtStart:null}function Ze(e,t,r,n,a){let i=Math.round((n-t.left)*e.defaultCharacterWidth);e.lineWrapping&&r.height>1.5*e.defaultLineHeight&&(n=e.viewState.heightOracle.textHeight,t=Math.floor((a-r.top-.5*(e.defaultLineHeight-n))/n),i+=t*e.viewState.heightOracle.lineLength);a=e.state.sliceDoc(r.from,r.to);return r.from+y.findColumn(a,i,e.state.tabSize)}function Xe(t,r,n){t=t.lineBlockAt(r);if(Array.isArray(t.type)){let e;for(var a of t.type){if(a.from>r)break;if(!(a.to<r)){if(a.from<r&&a.to>r)return a;e&&(a.type!=O.BlockType.Text||e.type==a.type&&!(n<0?a.from<r:a.to>r))||(e=a)}}return e||t}return t}function et(a,e,i,o){let s=a.state.doc.lineAt(e.head),l=a.bidiSpans(s);var c=a.textDirectionAt(s.from);for(let r=e,n=null;;){let e=Ge(s,l,c,r,i),t=d;if(!e){if(s.number==(i?a.state.doc.lines:1))return r;t=\"\\n\",s=a.state.doc.line(s.number+(i?1:-1)),l=a.bidiSpans(s),e=a.visualLineSide(s,!i)}if(n){if(!n(t))return r}else{if(!o)return e;n=o(t)}r=e}}function tt(e,i,o){for(;;){let a=0;for(var t of e)t.between(i-1,i+1,(e,t,r)=>{var n;e<i&&i<t&&(n=a||o||(i-e<t-i?-1:1),i=n<0?e:t,a=n)});if(!a)return i}}function rt(t,e,r){e=tt(t.state.facet(kr).map(e=>e(t)),r.from,e.head>r.from?-1:1);return e==r.from?r:y.EditorSelection.cursor(e,e<r.from?1:-1)}const Dr=\"￿\";class xr{constructor(e,t){this.points=e,this.text=\"\",this.lineSeparator=t.facet(y.EditorState.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Dr}readRange(t,r){if(t){var n=t.parentNode;for(let e=t;;){this.findPointBefore(n,e);var a=this.text.length,i=(this.readNode(e),e.nextSibling);if(i==r)break;var o=w.get(e),s=w.get(i);(o&&s?o.breakAfter:(o?o.breakAfter:ie(e))||ie(i)&&(\"BR\"!=e.nodeName||e.cmIgnore)&&this.text.length>a)&&this.lineBreak(),e=i}this.findPointBefore(n,r)}return this}readTextNode(i){var e,o=i.nodeValue;for(e of this.points)e.node==i&&(e.pos=this.text.length+Math.min(e.offset,o.length));for(let n=0,a=this.lineSeparator?null:/\\r\\n?|\\n/g;;){let e=-1,t=1,r;if(this.lineSeparator?(e=o.indexOf(this.lineSeparator,n),t=this.lineSeparator.length):(r=a.exec(o))&&(e=r.index,t=r[0].length),this.append(o.slice(n,e<0?o.length:e)),e<0)break;if(this.lineBreak(),1<t)for(var s of this.points)s.node==i&&s.pos>this.text.length&&(s.pos-=t-1);n=e+t}}readNode(e){if(!e.cmIgnore){var t=w.get(e),t=t&&t.overrideDOMText;if(null!=t){this.findPointInside(e,t.length);for(var r=t.iter();!r.next().done;)r.lineBreak?this.lineBreak():this.append(r.value)}else 3==e.nodeType?this.readTextNode(e):\"BR\"==e.nodeName?e.nextSibling&&this.lineBreak():1==e.nodeType&&this.readRange(e.firstChild,null)}}findPointBefore(e,t){for(var r of this.points)r.node==e&&e.childNodes[r.offset]==t&&(r.pos=this.text.length)}findPointInside(e,t){for(var r of this.points)(3==e.nodeType?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(function(e,t,r){for(;;){if(!t||r<T(t))return;if(t==e)return 1;r=f(t)+1,t=t.parentNode}}(e,r.node,r.offset)?t:0))}}class Lr{constructor(e,t){this.node=e,this.offset=t,this.pos=-1}}class Fr{constructor(r,n,a,i){this.typeOver=i,this.bounds=null,this.text=\"\",this.domChanged=-1<n;var{impreciseHead:i,impreciseAnchor:o}=r.docView;if(r.state.readOnly&&-1<n)this.newSel=null;else if(-1<n&&(this.bounds=r.docView.domBoundsAround(n,a,0))){var a=i||o?[]:(n=[],(a=r).root.activeElement==a.contentDOM&&({anchorNode:a,anchorOffset:e,focusNode:s,focusOffset:l}=a.observer.selectionRange,a)&&(n.push(new Lr(a,e)),s==a&&l==e||n.push(new Lr(s,l))),n),e=new xr(a,r.state);e.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=e.text,this.newSel=function(e,t){if(0==e.length)return null;var r=e[0].pos,e=2==e.length?e[1].pos:r;return-1<r&&-1<e?y.EditorSelection.single(r+t,e+t):null}(a,this.bounds.from)}else{var s=r.observer.selectionRange;let e=i&&i.node==s.focusNode&&i.offset==s.focusOffset||!te(r.contentDOM,s.focusNode)?r.state.selection.main.head:r.docView.posFromDOM(s.focusNode,s.focusOffset),t=o&&o.node==s.anchorNode&&o.offset==s.anchorOffset||!te(r.contentDOM,s.anchorNode)?r.state.selection.main.anchor:r.docView.posFromDOM(s.anchorNode,s.anchorOffset);var l=r.viewport;(S.ios||S.chrome)&&r.state.selection.main.empty&&e!=t&&(0<l.from||l.to<r.state.doc.length)&&(n=Math.min(e,t),a=Math.max(e,t),i=l.from-n,o=l.to-a,0!=i&&1!=i&&0!=n||0!=o&&-1!=o&&a!=r.state.doc.length||(e=0,t=r.state.doc.length)),this.newSel=y.EditorSelection.single(t,e)}}}function nt(r,n){let a,i=n[\"newSel\"],o=r.state.selection.main;var s=r.inputState.lastKeyTime>Date.now()-100?r.inputState.lastKeyCode:-1;if(n.bounds){var{from:l,to:c}=n.bounds;let e=o.from,t=null;(8===s||S.android&&n.text.length<c-l)&&(e=o.to,t=\"end\");c=function(e,t,r,n){let a=Math.min(e.length,t.length),i=0;for(;i<a&&e.charCodeAt(i)==t.charCodeAt(i);)i++;if(i==a&&e.length==t.length)return null;let o=e.length,s=t.length;for(;0<o&&0<s&&e.charCodeAt(o-1)==t.charCodeAt(s-1);)o--,s--;\"end\"==n&&(n=Math.max(0,i-Math.min(o,s)),r-=o+n-i);o<i&&e.length<t.length?(n=r<=i&&r>=o?i-r:0,i-=n,s=i+(s-o),o=i):s<i&&(n=r<=i&&r>=s?i-r:0,i-=n,o=i+(o-s),s=i);return{from:i,toA:o,toB:s}}(r.state.doc.sliceString(l,c,Dr),n.text,e-l,t);c&&(S.chrome&&13==s&&c.toB==c.from+2&&n.text.slice(c.from,c.toB)==Dr+Dr&&c.toB--,a={from:l+c.from,to:l+c.toA,insert:y.Text.of(n.text.slice(c.from,c.toB).split(Dr))})}else i&&(!r.hasFocus&&r.state.facet(j)||i.main.eq(o))&&(i=null);if(!a&&!i)return!1;if(!a&&n.typeOver&&!o.empty&&i&&i.main.empty?a={from:o.from,to:o.to,insert:r.state.doc.slice(o.from,o.to)}:(S.mac||S.android)&&a&&a.from==a.to&&a.from==o.head-1&&/^\\. ?$/.test(a.insert.toString())&&\"off\"==r.contentDOM.getAttribute(\"autocorrect\")?(i&&2==a.insert.length&&(i=y.EditorSelection.single(i.main.anchor-1,i.main.head-1)),a={from:a.from,to:a.to,insert:y.Text.of([a.insert.toString().replace(\".\",\" \")])}):a&&a.from>=o.from&&a.to<=o.to&&(a.from!=o.from||a.to!=o.to)&&o.to-o.from-(a.to-a.from)<=4?a={from:o.from,to:o.to,insert:r.state.doc.slice(o.from,a.from).append(a.insert).append(r.state.doc.slice(a.to,o.to))}:S.chrome&&a&&a.from==a.to&&a.from==o.head&&\"\\n \"==a.insert.toString()&&r.lineWrapping&&(i=i&&y.EditorSelection.single(i.main.anchor-1,i.main.head-1),a={from:o.from,to:o.to,insert:y.Text.of([\" \"])}),a)return at(r,a,i,s);if(!i||i.main.eq(o))return!1;{let e=!1,t=\"select\";return r.inputState.lastSelectionTime>Date.now()-50&&(\"select\"==r.inputState.lastSelectionOrigin&&(e=!0),t=r.inputState.lastSelectionOrigin),r.dispatch({selection:i,scrollIntoView:e,userEvent:t}),!0}}function at(n,a,i,e=-1){if(!S.ios||!n.inputState.flushIOSKey(a)){var t=n.state.selection.main;if(!S.android||!(a.to==t.to&&(a.from==t.from||a.from==t.from-1&&\" \"==n.state.sliceDoc(a.from,t.from))&&1==a.insert.length&&2==a.insert.lines&&ue(n.contentDOM,\"Enter\",13)||(a.from==t.from-1&&a.to==t.to&&0==a.insert.length||8==e&&a.insert.length<a.to-a.from&&a.to>t.head)&&ue(n.contentDOM,\"Backspace\",8)||a.from==t.from&&a.to==t.to+1&&0==a.insert.length&&ue(n.contentDOM,\"Delete\",46))){let t=a.insert.toString();0<=n.inputState.composing&&n.inputState.composing++;let e,r=()=>e=e||function(c,u,t){let r,d=c.state,p=d.selection.main;if(u.from>=p.from&&u.to<=p.to&&u.to-u.from>=(p.to-p.from)/3&&(!t||t.main.empty&&t.main.from==u.from+u.insert.length)&&c.inputState.composing<0){var f=p.from<u.from?d.sliceDoc(p.from,u.from):\"\",e=p.to>u.to?d.sliceDoc(u.to,p.to):\"\";r=d.replaceSelection(c.state.toText(f+u.insert.sliceString(0,void 0,c.state.lineBreak)+e))}else{let s=d.changes(u),l=t&&t.main.to<=s.newLength?t.main:void 0;if(1<d.selection.ranges.length&&0<=c.inputState.composing&&u.to<=p.to&&u.to>=p.to-10){let n=c.state.sliceDoc(u.from,u.to),a,e=t&&ze(c,t.main.head);a=e?(f=u.insert.length-(u.to-u.from),{from:e.from,to:e.to-f}):c.state.doc.lineAt(p.head);let i=p.to-u.to,o=p.to-p.from;r=d.changeByRange(e=>{var t,r;return e.from==p.from&&e.to==p.to?{changes:s,range:l||e.map(s)}:(t=(r=e.to-i)-n.length,e.to-e.from!=o||c.state.sliceDoc(t,r)!=n||e.to>=a.from&&e.from<=a.to?{range:e}:(t=d.changes({from:t,to:r,insert:u.insert}),r=e.to-p.to,{changes:t,range:l?y.EditorSelection.range(Math.max(0,l.anchor+r),Math.max(0,l.head+r)):e.map(t)}))})}else r={changes:s,selection:l&&d.selection.replaceRange(l)}}let n=\"input.type\";(c.composing||c.inputState.compositionPendingChange&&c.inputState.compositionEndedAt>Date.now()-50)&&(c.inputState.compositionPendingChange=!1,n+=\".compose\",c.inputState.compositionFirstChange)&&(n+=\".start\",c.inputState.compositionFirstChange=!1);return d.update(r,{userEvent:n,scrollIntoView:!0})}(n,a,i);n.state.facet(pr).some(e=>e(n,a.from,a.to,t,r))||n.dispatch(r())}}return!0}class Ur{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,S.safari&&e.contentDOM.addEventListener(\"input\",()=>null),S.gecko&&(e=e.contentDOM.ownerDocument,Wr.has(e)||(Wr.add(e),e.addEventListener(\"copy\",()=>{}),e.addEventListener(\"cut\",()=>{})))}handleEvent(e){!function(r,n){if(n.bubbles){if(n.defaultPrevented)return;for(let e=n.target,t;e!=r.contentDOM;e=e.parentNode)if(!e||11==e.nodeType||(t=w.get(e))&&t.ignoreEvent(n))return}return 1}(this.view,e)||this.ignoreDuringComposition(e)||\"keydown\"==e.type&&this.keydown(e)||(0!=this.view.updateState?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){e=this.handlers[e];if(e){for(var r of e.observers)r(this.view,t);for(var n of e.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){var t,r,n=function(e){let t=Object.create(null);function r(e){return t[e]||(t[e]={observers:[],handlers:[]})}for(var n of e){var a=n.spec,i=a&&a.plugin.domEventHandlers,o=a&&a.plugin.domEventObservers;if(i)for(var s in i){var l=i[s];l&&r(s).handlers.push(it(n.value,l))}if(o)for(var c in o){var u=o[c];u&&r(c).observers.push(it(n.value,u))}}for(var d in V)r(d).handlers.push(V[d]);for(var p in q)r(p).observers.push(q[p]);return t}(e),a=this.handlers,i=this.view.contentDOM;for(t in n)if(\"scroll\"!=t){var o=!n[t].handlers.length;let e=a[t];e&&o!=!e.handlers.length&&(i.removeEventListener(t,this.handleEvent),e=null),e||i.addEventListener(t,this.handleEvent,{passive:o})}for(r in a)\"scroll\"==r||n[r]||i.removeEventListener(r,this.handleEvent);this.handlers=n}keydown(t){if(this.lastKeyCode=t.keyCode,this.lastKeyTime=Date.now(),9==t.keyCode&&-1<this.tabFocusMode&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(0<this.tabFocusMode&&27!=t.keyCode&&Hr.indexOf(t.keyCode)<0&&(this.tabFocusMode=-1),S.android&&S.chrome&&!t.synthetic&&(13==t.keyCode||8==t.keyCode))return this.view.observer.delayAndroidKey(t.key,t.keyCode),!0;let e;return!S.ios||t.synthetic||t.altKey||t.metaKey||!((e=Br.find(e=>e.keyCode==t.keyCode))&&!t.ctrlKey||-1<jr.indexOf(t.key)&&t.ctrlKey&&!t.shiftKey)?(229!=t.keyCode&&this.view.observer.forceFlush(),!1):(this.pendingIOSKey=e||t,setTimeout(()=>this.flushIOSKey(),250),!0)}flushIOSKey(e){var t=this.pendingIOSKey;return!(!t||\"Enter\"==t.key&&e&&e.from<e.to&&/^\\S+$/.test(e.insert.toString()))&&(this.pendingIOSKey=void 0,ue(this.view.contentDOM,t.key,t.keyCode,t instanceof KeyboardEvent?t:void 0))}ignoreDuringComposition(e){return!!/^key/.test(e.type)&&(0<this.composing||!!(S.safari&&!S.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100)&&!(this.compositionPendingKey=!1))}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function it(r,n){return(t,e)=>{try{return n.call(r,e,t)}catch(e){A(t.state,e)}}}const Br=[{key:\"Backspace\",keyCode:8,inputType:\"deleteContentBackward\"},{key:\"Enter\",keyCode:13,inputType:\"insertParagraph\"},{key:\"Enter\",keyCode:13,inputType:\"insertLineBreak\"},{key:\"Delete\",keyCode:46,inputType:\"deleteContentForward\"}],jr=\"dthko\",Hr=[16,17,18,20,91,92,224,225];function ot(e){return.7*Math.max(0,e)+8}class Gr{constructor(t,e,r,n){this.view=t,this.startEvent=e,this.style=r,this.mustSelect=n,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=e,this.scrollParents=function(t){let r=t.ownerDocument,n,a;for(let e=t.parentNode;e&&!(e==r.body||n&&a);)if(1==e.nodeType)!a&&e.scrollHeight>e.clientHeight&&(a=e),!n&&e.scrollWidth>e.clientWidth&&(n=e),e=e.assignedSlot||e.parentNode;else{if(11!=e.nodeType)break;e=e.host}return{x:n,y:a}}(t.contentDOM),this.atoms=t.state.facet(kr).map(e=>e(t));r=t.contentDOM.ownerDocument;r.addEventListener(\"mousemove\",this.move=this.move.bind(this)),r.addEventListener(\"mouseup\",this.up=this.up.bind(this)),this.extend=e.shiftKey,this.multiple=t.state.facet(y.EditorState.allowMultipleSelections)&&function(e,t){e=e.state.facet(sr);return e.length?e[0](t):S.mac?t.metaKey:t.ctrlKey}(t,e),this.dragging=!(!function(e,t){var r=e.state.selection[\"main\"];if(!r.empty){r=ee(e.root);if(!r||0==r.rangeCount)return 1;var n=r.getRangeAt(0).getClientRects();for(let e=0;e<n.length;e++){var a=n[e];if(a.left<=t.clientX&&a.right>=t.clientX&&a.top<=t.clientY&&a.bottom>=t.clientY)return 1}}return}(t,e)||1!=dt(e))&&null}start(e){!1===this.dragging&&this.select(e)}move(o){if(0==o.buttons)return this.destroy();if(!(this.dragging||null==this.dragging&&(l=this.startEvent,s=o,Math.max(Math.abs(l.clientX-s.clientX),Math.abs(l.clientY-s.clientY))<10))){var s;this.select(this.lastEvent=o);let e=0,t=0,r=0,n=0,a=this.view.win.innerWidth,i=this.view.win.innerHeight;this.scrollParents.x&&({left:r,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:n,bottom:i}=this.scrollParents.y.getBoundingClientRect());var l=qe(this.view);o.clientX-l.left<=r+6?e=-ot(r-o.clientX):o.clientX+l.right>=a-6&&(e=ot(o.clientX-a)),o.clientY-l.top<=n+6?t=-ot(n-o.clientY):o.clientY+l.bottom>=i-6&&(t=ot(o.clientY-i)),this.setScrollSpeed(e,t)}}up(e){null==this.dragging&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);var e=this.view.contentDOM.ownerDocument;e.removeEventListener(\"mousemove\",this.move),e.removeEventListener(\"mouseup\",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):-1<this.scrolling&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),!1===this.dragging&&this.select(this.lastEvent)}skipAtoms(n){let a=null;for(let r=0;r<n.ranges.length;r++){let e=n.ranges[r],t=null;var i,o;e.empty?(i=tt(this.atoms,e.from,0))!=e.from&&(t=y.EditorSelection.cursor(i,-1)):(i=tt(this.atoms,e.from,-1),o=tt(this.atoms,e.to,1),i==e.from&&o==e.to||(t=y.EditorSelection.range(e.from==e.anchor?i:o,e.from==e.head?i:o))),t&&((a=a||n.ranges.slice())[r]=t)}return a?y.EditorSelection.create(a,n.mainIndex):n}select(e){var t=this[\"view\"],e=this.skipAtoms(this.style.get(e,this.extend,this.multiple));!this.mustSelect&&e.eq(t.state.selection,!1===this.dragging)||this.view.dispatch({selection:e,userEvent:\"select.pointer\"}),this.mustSelect=!1}update(e){e.transactions.some(e=>e.isUserEvent(\"input.type\"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}const V=Object.create(null),q=Object.create(null),Vr=S.ie&&S.ie_version<15||S.ios&&S.webkit_version<604;function st(e,t,r){for(var n of e.facet(t))r=n(r,e);return r}function lt(e,a){a=st(e.state,hr,a);let i=e[\"state\"],t,o=1,s=i.toText(a),l=s.lines==i.selection.ranges.length;if(null!=u&&i.selection.ranges.every(e=>e.empty)&&u==s.toString()){let n=-1;t=i.changeByRange(e=>{var t=i.doc.lineAt(e.from);if(t.from==n)return{range:e};n=t.from;var r=i.toText((l?s.line(o++).text:a)+i.lineBreak);return{changes:{from:t.from,insert:r},range:y.EditorSelection.cursor(e.from+r.length)}})}else t=l?i.changeByRange(e=>{var t=s.line(o++);return{changes:{from:e.from,to:e.to,insert:t.text},range:y.EditorSelection.cursor(e.from+t.length)}}):i.replaceSelection(s);e.dispatch(t,{userEvent:\"input.paste\",scrollIntoView:!0})}function ct(r,n,a,i){if(1==i)return y.EditorSelection.cursor(n,a);if(2==i){var[i,a,o=1]=[r.state,n,a];var s=i.charCategorizer(a),l=i.doc.lineAt(a),i=a-l.from;if(0==l.length)return y.EditorSelection.cursor(a);0==i?o=1:i==l.length&&(o=-1);let e=i,t=i;o<0?e=y.findClusterBreak(l.text,i,!1):t=y.findClusterBreak(l.text,i);for(var c=s(l.text.slice(e,t));0<e;){var u=y.findClusterBreak(l.text,e,!1);if(s(l.text.slice(u,e))!=c)break;e=u}for(;t<l.length;){var d=y.findClusterBreak(l.text,t);if(s(l.text.slice(t,d))!=c)break;t=d}return y.EditorSelection.range(e+l.from,t+l.from)}{a=D.find(r.docView,n),o=r.state.doc.lineAt(a?a.posAtEnd:n);let e=a?a.posAtStart:o.from,t=a?a.posAtEnd:o.to;return t<r.state.doc.length&&t==o.to&&t++,y.EditorSelection.range(e,t)}}q.scroll=e=>{e.inputState.lastScrollTop=e.scrollDOM.scrollTop,e.inputState.lastScrollLeft=e.scrollDOM.scrollLeft},V.keydown=(e,t)=>(e.inputState.setSelectionOrigin(\"select\"),27==t.keyCode&&0!=e.inputState.tabFocusMode&&(e.inputState.tabFocusMode=Date.now()+2e3),!1),q.touchstart=(e,t)=>{e.inputState.lastTouchTime=Date.now(),e.inputState.setSelectionOrigin(\"select.pointer\")},q.touchmove=e=>{e.inputState.setSelectionOrigin(\"select.pointer\")},V.mousedown=(t,r)=>{if(t.observer.flush(),!(t.inputState.lastTouchTime>Date.now()-2e3)){let e=null;for(var n of t.state.facet(cr))if(e=n(t,r))break;if(e=e||0!=r.button?e:function(s,e){let l=ut(s,e),c=dt(e),u=s.state.selection;return{update(e){e.docChanged&&(l.pos=e.changes.mapPos(l.pos),u=u.map(e.changes))},get(e,t,r){let n=ut(s,e),a,i=ct(s,n.pos,n.bias,c);var o;return l.pos==n.pos||t||(e=ct(s,l.pos,l.bias,c),o=Math.min(e.from,i.from),e=Math.max(e.to,i.to),i=o<i.from?y.EditorSelection.range(o,e):y.EditorSelection.range(e,o)),t?u.replaceRange(u.main.extend(i.from,i.to)):r&&1==c&&1<u.ranges.length&&(a=function(t,r){for(let e=0;e<t.ranges.length;e++){var{from:n,to:a}=t.ranges[e];if(n<=r&&r<=a)return y.EditorSelection.create(t.ranges.slice(0,e).concat(t.ranges.slice(e+1)),t.mainIndex==e?0:t.mainIndex-(t.mainIndex>e?1:0))}return null}(u,n.pos))?a:r?u.addRange(i):y.EditorSelection.create([i])}}}(t,r)){var a=!t.hasFocus,a=(t.inputState.startMouseSelection(new Gr(t,r,e,a)),a&&t.observer.ignore(()=>{ce(t.contentDOM);var e=t.root.activeElement;e&&!e.contains(t.contentDOM)&&e.blur()}),t.inputState.mouseSelection);if(a)return a.start(r),!1===a.dragging}}return!1};let i=(e,t,r)=>t>=r.top&&t<=r.bottom&&e>=r.left&&e<=r.right;function ut(e,t){var r,n,a=e.posAtCoords({x:t.clientX,y:t.clientY},!1);return{pos:a,bias:(e=e,a=a,r=t.clientX,t=t.clientY,(e=D.find(e.docView,a))&&0!=(a=a-e.posAtStart)&&(a==e.length||(n=e.coordsAt(a,-1))&&i(r,t,n)||(!(e=e.coordsAt(a,1))||!i(r,t,e))&&n&&n.bottom>=t)?-1:1)}}const qr=S.ie&&S.ie_version<=11;let n=null,s=0,c=0;function dt(e){var t,r;return qr?(t=n,r=c,n=e,c=Date.now(),s=!t||r>Date.now()-400&&Math.abs(t.clientX-e.clientX)<2&&Math.abs(t.clientY-e.clientY)<2?(s+1)%3:1):e.detail}function pt(e,t,r,n){var a,i;(r=st(e.state,hr,r))&&(a=e.posAtCoords({x:t.clientX,y:t.clientY},!1),i=e.inputState[\"draggedContent\"],t=n&&i&&(n=t,(t=(t=e).state.facet(lr)).length?t[0](n):S.mac?!n.altKey:!n.ctrlKey)?{from:i.from,to:i.to}:null,n={from:a,insert:r},i=e.state.changes(t?[t,n]:n),e.focus(),e.dispatch({changes:i,selection:{anchor:i.mapPos(a,-1),head:i.mapPos(a,1)},userEvent:t?\"move.drop\":\"input.drop\"}),e.inputState.draggedContent=null)}V.dragstart=(e,t)=>{let r=e.state[\"selection\"][\"main\"];var n,a=(t.target.draggable&&(n=e.docView.nearest(t.target))&&n.isWidget&&(n=(a=n.posAtStart)+n.length,a>=r.to||n<=r.from)&&(r=y.EditorSelection.range(a,n)),e)[\"inputState\"];return a.mouseSelection&&(a.mouseSelection.dragging=!0),a.draggedContent=r,t.dataTransfer&&(t.dataTransfer.setData(\"Text\",st(e.state,mr,e.state.sliceDoc(r.from,r.to))),t.dataTransfer.effectAllowed=\"copyMove\"),!1},V.dragend=e=>(e.inputState.draggedContent=null,!1),V.drop=(t,a)=>{if(!a.dataTransfer)return!1;if(t.state.readOnly)return!0;let i=a.dataTransfer.files;if(i&&i.length){let r=Array(i.length),e=0,n=()=>{++e==i.length&&pt(t,a,r.filter(e=>null!=e).join(t.state.lineBreak),!1)};for(let t=0;t<i.length;t++){let e=new FileReader;e.onerror=n,e.onload=()=>{/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(e.result)||(r[t]=e.result),n()},e.readAsText(i[t])}return!0}var e=a.dataTransfer.getData(\"Text\");return!!e&&(pt(t,a,e,!0),!0)},V.paste=(e,t)=>{if(e.state.readOnly)return!0;e.observer.flush();t=Vr?null:t.clipboardData;if(t)return lt(e,t.getData(\"text/plain\")||t.getData(\"text/uri-list\")),!0;var r=e,t=r.dom.parentNode;if(t){let e=t.appendChild(document.createElement(\"textarea\"));e.style.cssText=\"position: fixed; left: -10000px; top: 10px\",e.focus(),setTimeout(()=>{r.focus(),e.remove(),lt(r,e.value)},50)}return!1};let u=null;V.copy=V.cut=(e,t)=>{var{text:r,ranges:n,linewise:a}=function(t){let r=[],n=[],a=!1;for(var e of t.selection.ranges)e.empty||(r.push(t.sliceDoc(e.from,e.to)),n.push(e));if(!r.length){let e=-1;for(var{from:i}of t.selection.ranges){i=t.doc.lineAt(i);i.number>e&&(r.push(i.text),n.push({from:i.from,to:Math.min(t.doc.length,i.to+1)})),e=i.number}a=!0}return{text:st(t,mr,r.join(t.lineBreak)),ranges:n,linewise:a}}(e.state);if(r||a){u=a?r:null,\"cut\"!=t.type||e.state.readOnly||e.dispatch({changes:n,scrollIntoView:!0,userEvent:\"delete.cut\"});a=Vr?null:t.clipboardData;if(a)return a.clearData(),a.setData(\"text/plain\",r),!0;var i=e,n=r,t=i.dom.parentNode;if(t){let e=t.appendChild(document.createElement(\"textarea\"));e.style.cssText=\"position: fixed; left: -10000px; top: 10px\",e.value=n,e.focus(),e.selectionEnd=n.length,e.selectionStart=0,setTimeout(()=>{e.remove(),i.focus()},50)}}return!1};const zr=y.Annotation.define();function ft(e,t){var r,n=[];for(r of e.facet(fr)){var a=r(e,t);a&&n.push(a)}return n.length?e.update({effects:n,annotations:zr.of(!0)}):null}function ht(t){setTimeout(()=>{var e=t.hasFocus;e!=t.inputState.notifiedFocused&&((e=ft(t.state,e))?t.dispatch(e):t.update([]))},10)}q.focus=e=>{e.inputState.lastFocusTime=Date.now(),e.scrollDOM.scrollTop||!e.inputState.lastScrollTop&&!e.inputState.lastScrollLeft||(e.scrollDOM.scrollTop=e.inputState.lastScrollTop,e.scrollDOM.scrollLeft=e.inputState.lastScrollLeft),ht(e)},q.blur=e=>{e.observer.clearSelectionRange(),ht(e)},q.compositionstart=q.compositionupdate=e=>{e.observer.editContext||(null==e.inputState.compositionFirstChange&&(e.inputState.compositionFirstChange=!0),e.inputState.composing<0&&(e.inputState.composing=0))},q.compositionend=e=>{e.observer.editContext||(e.inputState.composing=-1,e.inputState.compositionEndedAt=Date.now(),e.inputState.compositionPendingKey=!0,e.inputState.compositionPendingChange=0<e.observer.pendingRecords().length,e.inputState.compositionFirstChange=null,S.chrome&&S.android?e.observer.flushSoon():e.inputState.compositionPendingChange?Promise.resolve().then(()=>e.observer.flush()):setTimeout(()=>{e.inputState.composing<0&&e.docView.hasComposition&&e.update([])},50))},q.contextmenu=e=>{e.inputState.lastContextMenu=Date.now()},V.beforeinput=(r,t)=>{if(\"insertReplacementText\"==t.inputType&&r.observer.editContext){var e,n=null==(n=t.dataTransfer)?void 0:n.getData(\"text/plain\"),a=t.getTargetRanges();if(n&&a.length)return a=a[0],e=r.posAtDOM(a.startContainer,a.startOffset),a=r.posAtDOM(a.endContainer,a.endOffset),at(r,{from:e,to:a,insert:r.state.toText(n)},null),!0}let i;if(S.chrome&&S.android&&(i=Br.find(e=>e.inputType==t.inputType))&&(r.observer.delayAndroidKey(i.key,i.keyCode),\"Backspace\"==i.key||\"Delete\"==i.key)){let t=(null==(e=window.visualViewport)?void 0:e.height)||0;setTimeout(()=>{var e;((null==(e=window.visualViewport)?void 0:e.height)||0)>t+10&&r.hasFocus&&(r.contentDOM.blur(),r.focus())},100)}return S.ios&&\"deleteContentForward\"==t.inputType&&r.observer.flushSoon(),S.safari&&\"insertText\"==t.inputType&&0<=r.inputState.composing&&setTimeout(()=>q.compositionend(r,t),20),!1};const Wr=new Set;const $r=[\"pre-wrap\",\"normal\",\"pre-line\",\"break-spaces\"];let _=!1;function mt(){_=!1}class Kr{constructor(e){this.lineWrapping=e,this.doc=y.Text.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let r=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((t-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return-1<$r.indexOf(e)!=this.lineWrapping}mustRefreshForHeights(t){let r=!1;for(let e=0;e<t.length;e++){var n=t[e];n<0?e++:this.heightSamples[Math.floor(10*n)]||(r=!0,this.heightSamples[Math.floor(10*n)]=!0)}return r}refresh(e,t,r,n,a,i){var e=-1<$r.indexOf(e),o=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=e;if(this.lineWrapping=e,this.lineHeight=t,this.charWidth=r,this.textHeight=n,this.lineLength=a,o){this.heightSamples={};for(let e=0;e<i.length;e++){var s=i[e];s<0?e++:this.heightSamples[Math.floor(10*s)]=!0}}return o}}class Yr{constructor(e,t){this.from=e,this.heights=t,this.index=0}get more(){return this.index<this.heights.length}}class z{constructor(e,t,r,n,a){this.from=e,this.length=t,this.top=r,this.height=n,this._content=a}get type(){return\"number\"==typeof this._content?O.BlockType.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof P?this._content.widget:null}get widgetLineBreaks(){return\"number\"==typeof this._content?this._content:0}join(e){var t=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new z(this.from,this.length+e.length,this.top,this.height+e.height,t)}}(b=h=h||{})[b.ByPos=0]=\"ByPos\",b[b.ByHeight=1]=\"ByHeight\",b[b.ByPosNoHeight=2]=\"ByPosNoHeight\";class W{constructor(e,t,r=2){this.length=e,this.height=t,this.flags=r}get outdated(){return 0<(2&this.flags)}set outdated(e){this.flags=(e?2:0)|-3&this.flags}setHeight(e){this.height!=e&&(.001<Math.abs(this.height-e)&&(_=!0),this.height=e)}replace(e,t,r){return W.of(r)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(o,s,l,c){let u=this,d=l.doc;for(let i=c.length-1;0<=i;i--){let{fromA:e,toA:t,fromB:r,toB:n}=c[i],a=u.lineAt(e,h.ByPosNoHeight,l.setDoc(s),0,0);var p=a.to>=t?a:u.lineAt(t,h.ByPosNoHeight,l,0,0);for(n+=p.to-t,t=p.to;0<i&&a.from<=c[i-1].toA;)e=c[i-1].fromA,r=c[i-1].fromB,i--,e<a.from&&(a=u.lineAt(e,h.ByPosNoHeight,l,0,0));r+=a.from-e,e=a.from;p=Zr.build(l.setDoc(d),o,r,n);u=gt(u,u.replace(e,t,p))}return u.updateHeight(l,0)}static empty(){return new $(0,0)}static of(e){if(1==e.length)return e[0];let t=0,r=e.length,n=0,a=0;for(;;){var i;if(t==r)if(n>2*a){var o=e[t-1];o.break?e.splice(--t,1,o.left,null,o.right):e.splice(--t,1,o.left,o.right),r+=1+o.break,n-=o.size}else{if(!(a>2*n))break;o=e[r];o.break?e.splice(r,1,o.left,null,o.right):e.splice(r,1,o.left,o.right),r+=2+o.break,a-=o.size}else n<a?(i=e[t++])&&(n+=i.size):(i=e[--r])&&(a+=i.size)}let s=0;return null==e[t-1]?(s=1,t--):null==e[t]&&(s=1,r++),new Qr(W.of(e.slice(0,t)),s,W.of(e.slice(r)))}}function gt(e,t){return e==t?e:(e.constructor!=t.constructor&&(_=!0),t)}W.prototype.size=1;class Jr extends W{constructor(e,t,r){super(e,t),this.deco=r}blockAt(e,t,r,n){return new z(n,this.length,r,this.height,this.deco||0)}lineAt(e,t,r,n,a){return this.blockAt(0,r,n,a)}forEachLine(e,t,r,n,a,i){e<=a+this.length&&a<=t&&i(this.blockAt(0,r,n,a))}updateHeight(e,t=0,r,n){return n&&n.from<=t&&n.more&&this.setHeight(n.heights[n.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class $ extends Jr{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,r,n){return new z(n,this.length,r,this.height,this.breaks)}replace(e,t,r){let n=r[0];return 1==r.length&&(n instanceof $||n instanceof K&&4&n.flags)&&Math.abs(this.length-n.length)<10?(n instanceof K?n=new $(n.length,this.height):n.height=this.height,this.outdated||(n.outdated=!1),n):W.of(r)}updateHeight(e,t=0,r=!1,n){return n&&n.from<=t&&n.more?this.setHeight(n.heights[n.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:\"\"}${this.widgetHeight?\":\"+this.widgetHeight:\"\"})`}}class K extends W{constructor(e){super(e,0)}heightMetrics(e,t){var r=e.doc.lineAt(t).number,t=e.doc.lineAt(t+this.length).number,n=t-r+1;let a,i=0;return e.lineWrapping?(e=Math.min(this.height,e.lineHeight*n),a=e/n,this.length>1+n&&(i=(this.height-e)/(this.length-n-1))):a=this.height/n,{firstLine:r,lastLine:t,perLine:a,perChar:i}}blockAt(e,t,r,n){var a,{firstLine:i,lastLine:o,perLine:s,perChar:l}=this.heightMetrics(t,n);return t.lineWrapping?(n=n+(e<t.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-r)/this.height))*this.length)),l=s+(n=t.doc.lineAt(n)).length*l,a=Math.max(r,e-l/2),new z(n.from,n.length,a,l,0)):(n=Math.max(0,Math.min(o-i,Math.floor((e-r)/s))),{from:a,length:l}=t.doc.line(i+n),new z(a,l,r+s*n,s,0))}lineAt(e,t,r,n,a){var i,o;return t==h.ByHeight?this.blockAt(e,r,n,a):t==h.ByPosNoHeight?({from:t,to:o}=r.doc.lineAt(e),new z(t,o-t,0,0,0)):({firstLine:o,perLine:t,perChar:i}=this.heightMetrics(r,a),e=t+(r=r.doc.lineAt(e)).length*i,o=n+t*(t=r.number-o)+i*(r.from-a-t),new z(r.from,r.length,Math.max(n,Math.min(o,n+this.height-e)),e,0))}forEachLine(r,n,a,i,o,s){r=Math.max(r,o),n=Math.min(n,o+this.length);var{firstLine:l,perLine:c,perChar:u}=this.heightMetrics(a,o);for(let e=r,t=i;e<=n;){var d=a.doc.lineAt(e),p=(e==r&&(p=d.number-l,t+=c*p+u*(r-o-p)),c+u*d.length);s(new z(d.from,d.length,t,p,0)),t+=p,e=d.to+1}}replace(e,t,r){var n,t=this.length-t;return 0<t&&((n=r[r.length-1])instanceof K?r[r.length-1]=new K(n.length+t):r.push(null,new K(t-1))),0<e&&((n=r[0])instanceof K?r[0]=new K(e+n.length):r.unshift(new K(e-1),null)),W.of(r)}decomposeLeft(e,t){t.push(new K(e-1),null)}decomposeRight(e,t){t.push(null,new K(this.length-e-1))}updateHeight(n,a=0,e=!1,i){var o=a+this.length;if(i&&i.from<=a+this.length&&i.more){let e=[],t=Math.max(a,i.from),r=-1;for(i.from>a&&e.push(new K(i.from-a-1).updateHeight(n,a));t<=o&&i.more;){var s=n.doc.lineAt(t).length,l=(e.length&&e.push(null),i.heights[i.index++]),l=(-1==r?r=l:.001<=Math.abs(l-r)&&(r=-2),new $(s,l));l.outdated=!1,e.push(l),t+=s+1}t<=o&&e.push(null,new K(o-t).updateHeight(n,t));var c=W.of(e);return(r<0||.001<=Math.abs(c.height-this.height)||.001<=Math.abs(r-this.heightMetrics(n,a).perLine))&&(_=!0),gt(this,c)}return(e||this.outdated)&&(this.setHeight(n.heightForGap(a,a+this.length)),this.outdated=!1),this}toString(){return`gap(${this.length})`}}class Qr extends W{constructor(e,t,r){super(e.length+t+r.length,e.height+r.height,t|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return 1&this.flags}blockAt(e,t,r,n){var a=r+this.left.height;return e<a?this.left.blockAt(e,t,r,n):this.right.blockAt(e,t,a,n+this.left.length+this.break)}lineAt(e,t,r,n,a){var i=n+this.left.height,o=a+this.left.length+this.break,s=t==h.ByHeight?e<i:e<o,e=s?this.left.lineAt(e,t,r,n,a):this.right.lineAt(e,t,r,i,o);return this.break||(s?e.to<o:e.from>o)?e:(t=t==h.ByPosNoHeight?h.ByPosNoHeight:h.ByPos,s?e.join(this.right.lineAt(o,t,r,i,o)):this.left.lineAt(o,t,r,n,a).join(e))}forEachLine(e,t,r,n,a,i){var o,s=n+this.left.height,l=a+this.left.length+this.break;this.break?(e<l&&this.left.forEachLine(e,t,r,n,a,i),l<=t&&this.right.forEachLine(e,t,r,s,l,i)):(e<(o=this.lineAt(l,h.ByPos,r,n,a)).from&&this.left.forEachLine(e,o.from-1,r,n,a,i),o.to>=e&&o.from<=t&&i(o),t>o.to&&this.right.forEachLine(o.to+1,t,r,s,l,i))}replace(e,t,r){var n=this.left.length+this.break;if(t<n)return this.balanced(this.left.replace(e,t,r),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-n,t-n,r));var a,i=[],n=(0<e&&this.decomposeLeft(e,i),i.length);for(a of r)i.push(a);return 0<e&&_t(i,n-1),t<this.length&&(r=i.length,this.decomposeRight(t,i),_t(i,r)),W.of(i)}decomposeLeft(e,t){let r=this.left.length;if(e<=r)return this.left.decomposeLeft(e,t);t.push(this.left),this.break&&e>=++r&&t.push(null),e>r&&this.right.decomposeLeft(e-r,t)}decomposeRight(e,t){var r=this.left.length,n=r+this.break;if(n<=e)return this.right.decomposeRight(e-n,t);e<r&&this.left.decomposeRight(e,t),this.break&&e<n&&t.push(null),t.push(this.right)}balanced(e,t){return e.size>2*t.size||t.size>2*e.size?W.of(this.break?[e,null,t]:[e,t]):(this.left=gt(this.left,e),this.right=gt(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,r=!1,n){let{left:a,right:i}=this,o=t+a.length+this.break,s=null;return n&&n.from<=t+a.length&&n.more?s=a=a.updateHeight(e,t,r,n):a.updateHeight(e,t,r),n&&n.from<=o+i.length&&n.more?s=i=i.updateHeight(e,o,r,n):i.updateHeight(e,o,r),s?this.balanced(a,i):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?\" \":\"-\")+this.right}}function _t(e,t){let r,n;null==e[t]&&(r=e[t-1])instanceof K&&(n=e[t+1])instanceof K&&e.splice(t-1,3,new K(r.length+1+n.length))}class Zr{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){var r,n;-1<this.lineStart&&(r=Math.min(t,this.lineEnd),(n=this.nodes[this.nodes.length-1])instanceof $?n.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $(r-this.pos,-1)),(this.writtenTo=r)<t)&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1),this.pos=t}point(t,r,n){if(t<r||n.heightRelevant){let e=n.widget?n.widget.estimatedHeight:0;var a=n.widget?n.widget.lineBreaks:0,i=(e<0&&(e=this.oracle.lineHeight),r-t);n.block?this.addBlock(new Jr(i,e,n)):(i||a||5<=e)&&this.addLineDeco(e,a,i)}else t<r&&this.span(t,r);-1<this.lineEnd&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){var e,t;-1<this.lineStart||({from:e,to:t}=this.oracle.doc.lineAt(this.pos),this.lineStart=e,this.lineEnd=t,this.writtenTo<e&&((this.writtenTo<e-1||null==this.nodes[this.nodes.length-1])&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new $(this.pos-e,-1)),this.writtenTo=this.pos)}blankContent(e,t){var r=new K(t-e);return this.oracle.doc.lineAt(e).to==t&&(r.flags|=4),r}ensureLine(){this.enterLine();var e=this.nodes.length?this.nodes[this.nodes.length-1]:null;return e instanceof $||(e=new $(0,-1),this.nodes.push(e)),e}addBlock(e){this.enterLine();var t=e.deco;t&&0<t.startSide&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&0<t.endSide&&(this.covering=e)}addLineDeco(e,t,r){var n=this.ensureLine();n.length+=r,n.collapsed+=r,n.widgetHeight=Math.max(n.widgetHeight,e),n.breaks+=t,this.writtenTo=this.pos=this.pos+r}finish(e){var t,r=0==this.nodes.length?null:this.nodes[this.nodes.length-1];!(-1<this.lineStart)||r instanceof $||this.isCovered?(this.writtenTo<this.pos||null==r)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos)):this.nodes.push(new $(0,-1));let n=e;for(t of this.nodes)t instanceof $&&t.updateHeight(this.oracle,n),n+=t?t.length:1;return this.nodes}static build(e,t,r,n){e=new Zr(r,e);return y.RangeSet.spans(t,r,n,e,0),e.finish(r)}}class Xr{constructor(){this.changes=[]}compareRange(){}comparePoint(e,t,r,n){(e<t||r&&r.heightRelevant||n&&n.heightRelevant)&&Pe(e,t,this.changes,5)}}class en{constructor(e,t,r,n){this.from=e,this.to=t,this.size=r,this.displaySize=n}static same(t,r){if(t.length!=r.length)return!1;for(let e=0;e<t.length;e++){var n=t[e],a=r[e];if(n.from!=a.from||n.to!=a.to||n.size!=a.size)return!1}return!0}draw(e,t){return M.replace({widget:new tn(this.displaySize*(t?e.scaleY:e.scaleX),t)}).range(this.from,this.to)}}class tn extends N{constructor(e,t){super(),this.size=e,this.vertical=t}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){var e=document.createElement(\"div\");return this.vertical?e.style.height=this.size+\"px\":(e.style.width=this.size+\"px\",e.style.height=\"2px\",e.style.display=\"inline-block\"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class rn{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!1,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=an,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=O.Direction.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;var t=e.facet(Or).some(e=>\"function\"!=typeof e&&\"cm-lineWrapping\"==e.class);this.heightOracle=new Kr(t),this.stateDeco=e.facet(Cr).filter(e=>\"function\"!=typeof e),this.heightMap=W.empty().applyChanges(this.stateDeco,y.Text.empty,this.heightOracle.setDoc(e.doc),[new G(0,0,0,e.doc.length)]);for(let e=0;e<2&&(this.viewport=this.getViewport(0,null),this.updateForViewport());e++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=M.set(this.lineGaps.map(e=>e.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){var t,n,a=[this.viewport],i=this.state.selection[\"main\"];for(let e=0;e<=1;e++){let r=e?i.head:i.anchor;a.some(({from:e,to:t})=>r>=e&&r<=t)||({from:t,to:n}=this.lineBlockAt(r),a.push(new nn(t,n)))}return this.viewports=a.sort((e,t)=>e.from-t.from),this.updateScaler()}updateScaler(){var e=this.scaler;return this.scaler=this.heightMap.height<=7e6?an:new on(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(vt(e,this.scaler))})}update(e,t=null){this.state=e.state;var r=this.stateDeco,n=(this.stateDeco=this.state.facet(Cr).filter(e=>\"function\"!=typeof e),e.changedRanges),n=G.extendWithRanges(n,(n=r,r=this.stateDeco,a=e?e.changes:y.ChangeSet.empty(this.state.doc.length),o=new Xr,y.RangeSet.compare(n,r,a,o,0),o.changes)),r=this.heightMap.height,a=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);mt(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),n),this.heightMap.height==r&&!_||(e.flags|=2),a?(this.scrollAnchorPos=e.changes.mapPos(a.from,-1),this.scrollAnchorHeight=a.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=r);let i=n.length?this.mapViewport(this.viewport,e.changes):this.viewport;var o=(i=t&&(t.range.head<i.from||t.range.head>i.to)||!this.viewportIsAppropriate(i)?this.getViewport(0,t):i).from!=this.viewport.from||i.to!=this.viewport.to;this.viewport=i,e.flags|=this.updateForViewport(),(o||!e.changes.empty||2&e.flags)&&this.updateViewportLines(),(this.lineGaps.length||4e3<this.viewport.to-this.viewport.from)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(_r)&&(this.mustEnforceCursorAssoc=!0)}measure(e){var t=e.contentDOM,r=window.getComputedStyle(t),n=this.heightOracle,a=r.whiteSpace;this.defaultTextDirection=\"rtl\"==r.direction?O.Direction.RTL:O.Direction.LTR;let i=this.heightOracle.mustRefreshForWrapping(a);var o=t.getBoundingClientRect();let s=i||this.mustMeasureContent||this.contentDOMHeight!=o.height,l=(this.contentDOMHeight=o.height,this.mustMeasureContent=!1,0),c=0;o.width&&o.height&&({scaleX:u,scaleY:d}=le(t,o),.005<u&&.005<Math.abs(this.scaleX-u)||.005<d&&.005<Math.abs(this.scaleY-d))&&(this.scaleX=u,this.scaleY=d,l|=16,i=s=!0);var u=(parseInt(r.paddingTop)||0)*this.scaleY,d=(parseInt(r.paddingBottom)||0)*this.scaleY,r=(this.paddingTop==u&&this.paddingBottom==d||(this.paddingTop=u,this.paddingBottom=d,l|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(n.lineWrapping&&(s=!0),this.editorWidth=e.scrollDOM.clientWidth,l|=16),e.scrollDOM.scrollTop*this.scaleY),u=(this.scrollTop!=r&&(this.scrollAnchorHeight=-1,this.scrollTop=r),this.scrolledToBottom=pe(e.scrollDOM),(this.printing?function(e,t){return{left:0,right:(e=e.getBoundingClientRect()).right-e.left,top:t,bottom:e.bottom-(e.top+t)}}:function(t,e){var r=t.getBoundingClientRect(),n=t.ownerDocument,a=n.defaultView||window;let i=Math.max(0,r.left),o=Math.min(a.innerWidth,r.right),s=Math.max(0,r.top),l=Math.min(a.innerHeight,r.bottom);for(let e=t.parentNode;e&&e!=n.body;)if(1==e.nodeType){var c,u=e,d=window.getComputedStyle(u);(u.scrollHeight>u.clientHeight||u.scrollWidth>u.clientWidth)&&\"visible\"!=d.overflow&&(c=u.getBoundingClientRect(),i=Math.max(i,c.left),o=Math.min(o,c.right),s=Math.max(s,c.top),l=Math.min(e==t.parentNode?a.innerHeight:l,c.bottom)),e=\"absolute\"==d.position||\"fixed\"==d.position?u.offsetParent:u.parentNode}else{if(11!=e.nodeType)break;e=e.host}return{left:i-r.left,right:Math.max(i,o)-r.left,top:s-(r.top+e),bottom:Math.max(s,l)-(r.top+e)}})(t,this.paddingTop)),d=u.top-this.pixelViewport.top,r=u.bottom-this.pixelViewport.bottom,t=(this.pixelViewport=u,this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left);if(t!=this.inView&&(this.inView=t)&&(s=!0),!(this.inView||this.scrollTarget||(u=e.dom,t=u.getBoundingClientRect(),u=u.ownerDocument.defaultView||window,t.left<u.innerWidth&&0<t.right&&t.top<u.innerHeight&&0<t.bottom)))return 0;t=o.width;if(this.contentDOMWidth==t&&this.editorHeight==e.scrollDOM.clientHeight||(this.contentDOMWidth=o.width,this.editorHeight=e.scrollDOM.clientHeight,l|=16),s){var p,f,h,m=e.docView.measureVisibleLineHeights(this.viewport);((i=n.mustRefreshForHeights(m)?!0:i)||n.lineWrapping&&Math.abs(t-this.contentDOMWidth)>n.charWidth)&&({lineHeight:o,charWidth:p,textHeight:f}=e.docView.measureTextSize(),i=0<o&&n.refresh(a,o,p,f,t/p,m))&&(e.docView.minWidth=0,l|=16),0<d&&0<r?c=Math.max(d,r):d<0&&r<0&&(c=Math.min(d,r)),mt();for(h of this.viewports){var g=h.from==this.viewport.from?m:e.docView.measureVisibleLineHeights(h);this.heightMap=(i?W.empty().applyChanges(this.stateDeco,y.Text.empty,this.heightOracle,[new G(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(n,0,i,new Yr(h.from,g))}_&&(l|=2)}a=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return a&&(2&l&&(l|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),l|=this.updateForViewport()),(2&l||a)&&this.updateViewportLines(),(this.lineGaps.length||4e3<this.viewport.to-this.viewport.from)&&this.updateLineGaps(this.ensureLineGaps(i?[]:this.lineGaps,e)),l|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),l}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,r){var e=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),n=this.heightMap,a=this.heightOracle,{visibleTop:i,visibleBottom:o}=this;let s=new nn(n.lineAt(i-1e3*e,h.ByHeight,a,0,0).from,n.lineAt(o+1e3*(1-e),h.ByHeight,a,0,0).to);if(r){i=r.range[\"head\"];if(i<s.from||i>s.to){o=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top);let e=n.lineAt(i,h.ByPos,a,0,0),t;t=\"center\"==r.y?(e.top+e.bottom)/2-o/2:\"start\"==r.y||\"nearest\"==r.y&&i<s.from?e.top:e.bottom-o,s=new nn(n.lineAt(t-500,h.ByHeight,a,0,0).from,n.lineAt(t+o+500,h.ByHeight,a,0,0).to)}}return s}mapViewport(e,t){var r=t.mapPos(e.from,-1),t=t.mapPos(e.to,1);return new nn(this.heightMap.lineAt(r,h.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(t,h.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:t},r=0){var n,a,i,o;return!this.inView||(n=this.heightMap.lineAt(e,h.ByPos,this.heightOracle,0,0)[\"top\"],a=this.heightMap.lineAt(t,h.ByPos,this.heightOracle,0,0)[\"bottom\"],{visibleTop:i,visibleBottom:o}=this,(0==e||n<=i-Math.max(10,Math.min(-r,250)))&&(t==this.state.doc.length||a>=o+Math.max(10,Math.min(r,250)))&&i-2e3<n&&a<o+2e3)}mapLineGaps(e,t){if(!e.length||t.empty)return e;var r,n=[];for(r of e)t.touchesRange(r.from,r.to)||n.push(new en(t.mapPos(r.from),t.mapPos(r.to),r.size,r.displaySize));return n}ensureLineGaps(h,u){let m=this.heightOracle.lineWrapping,g=m?1e4:2e3,d=g>>1,e=g<<1;if(this.defaultTextDirection!=O.Direction.LTR&&!m)return[];let p=[],_=(n,a,i,o)=>{if(!(a-n<d)){let e=this.state.selection.main,r=[e.from];e.empty||r.push(e.to);for(var s of r)if(s>n&&s<a)return _(n,s-10,i,o),void _(s+10,a,i,o);let t=function(e,t){for(var r of e)if(t(r))return r;return}(h,t=>t.from>=i.from&&t.to<=i.to&&Math.abs(t.from-n)<d&&Math.abs(t.to-a)<d&&!r.some(e=>t.from<e&&t.to>e));var l,c;t||(a<i.to&&u&&m&&u.visibleRanges.some(e=>e.from<=a&&e.to>=a)&&(l=u.moveToLineBoundary(y.EditorSelection.cursor(a),!1,!0).head,n<l)&&(a=l),l=this.gapSize(i,n,a,o),c=m||l<2e6?l:2e6,t=new en(n,a,l,c)),p.push(t)}};var t,r=i=>{if(!(i.length<e||i.type!=O.BlockType.Text)){var o=function(e,t,r){let n=[],a=e,i=0;y.RangeSet.spans(r,e,t,{span(){},point(e,t){e>a&&(n.push({from:a,to:e}),i+=e-a),a=t}},20),a<t&&(n.push({from:a,to:t}),i+=t-a);return{total:i,ranges:n}}(i.from,i.to,this.stateDeco);if(!(o.total<e)){var s=this.scrollTarget?this.scrollTarget.range.head:null;let n,a;if(m){var l=g/this.heightOracle.lineLength*this.heightOracle.lineHeight;let e,t;t=null!=s?(c=Tt(o,s),u=((this.visibleBottom-this.visibleTop)/2+l)/i.height,e=c-u,c+u):(e=(this.visibleTop-i.top-l)/i.height,(this.visibleBottom-i.top+l)/i.height),n=yt(o,e),a=yt(o,t)}else{var c=o.total*this.heightOracle.charWidth,u=g*this.heightOracle.charWidth;let e=0;if(2e6<c)for(var d of h)d.from>=i.from&&d.from<i.to&&d.size!=d.displaySize&&d.from*this.heightOracle.charWidth+e<this.pixelViewport.left&&(e=d.size-d.displaySize);var p,l=this.pixelViewport.left+e,f=this.pixelViewport.right+e;let t,r;r=null!=s?(s=Tt(o,s),p=((f-l)/2+u)/c,t=s-p,s+p):(t=(l-u)/c,(f+u)/c),n=yt(o,t),a=yt(o,r)}n>i.from&&_(i.from,n,i,o),a<i.to&&_(a,i.to,i,o)}}};for(t of this.viewportLines)Array.isArray(t.type)?t.type.forEach(r):r(t);return p}gapSize(e,t,r,n){r=Tt(n,r)-Tt(n,t);return this.heightOracle.lineWrapping?e.height*r:n.total*this.heightOracle.charWidth*r}updateLineGaps(e){en.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=M.set(e.map(e=>e.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(t){let e=this.stateDeco,r=(this.lineGaps.length&&(e=e.concat(this.lineGapDeco)),[]),n=(y.RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(e,t){r.push({from:e,to:t})},point(){}},20),0);if(r.length!=this.visibleRanges.length)n=12;else for(let e=0;e<r.length&&!(8&n);e++){var a=this.visibleRanges[e],i=r[e];a.from==i.from&&a.to==i.to||(n|=4,t&&t.mapPos(a.from,-1)==i.from&&t.mapPos(a.to,1)==i.to)||(n|=8)}return this.visibleRanges=r,n}lineBlockAt(t){return t>=this.viewport.from&&t<=this.viewport.to&&this.viewportLines.find(e=>e.from<=t&&e.to>=t)||vt(this.heightMap.lineAt(t,h.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(t){return t>=this.viewportLines[0].top&&t<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(e=>e.top<=t&&e.bottom>=t)||vt(this.heightMap.lineAt(this.scaler.fromDOM(t),h.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){var t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||200<this.viewportLines[0].top-e?t:this.viewportLines[0]}elementAtHeight(e){return vt(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class nn{constructor(e,t){this.from=e,this.to=t}}function yt({total:e,ranges:t},r){if(r<=0)return t[0].from;if(1<=r)return t[t.length-1].to;let n=Math.floor(e*r);for(let e=0;;e++){var{from:a,to:i}=t[e],i=i-a;if(n<=i)return a+n;n-=i}}function Tt(e,t){let r=0;for(var{from:n,to:a}of e.ranges){if(t<=a){r+=t-n;break}r+=a-n}return r/e.total}const an={toDOM(e){return e},fromDOM(e){return e},scale:1,eq(e){return e==this}};class on{constructor(a,i,e){let o=0,t=0,r=0;this.viewports=e.map(({from:e,to:t})=>{var r=i.lineAt(e,h.ByPos,a,0,0).top,n=i.lineAt(t,h.ByPos,a,0,0).bottom;return o+=n-r,{from:e,to:t,top:r,bottom:n,domTop:0,domBottom:0}}),this.scale=(7e6-o)/(i.height-o);for(var n of this.viewports)n.domTop=r+(n.top-t)*this.scale,r=n.domBottom=n.domTop+(n.bottom-n.top),t=n.bottom}toDOM(n){for(let e=0,t=0,r=0;;e++){var a=e<this.viewports.length?this.viewports[e]:null;if(!a||n<a.top)return r+(n-t)*this.scale;if(n<=a.bottom)return a.domTop+(n-a.top);t=a.bottom,r=a.domBottom}}fromDOM(n){for(let e=0,t=0,r=0;;e++){var a=e<this.viewports.length?this.viewports[e]:null;if(!a||n<a.domTop)return t+(n-r)/this.scale;if(n<=a.domBottom)return a.top+(n-a.domTop);t=a.bottom,r=a.domBottom}}eq(r){return r instanceof on&&this.scale==r.scale&&this.viewports.length==r.viewports.length&&this.viewports.every((e,t)=>e.from==r.viewports[t].from&&e.to==r.viewports[t].to)}}function vt(e,t){var r,n;return 1==t.scale?e:(r=t.toDOM(e.top),n=t.toDOM(e.bottom),new z(e.from,e.length,r,n-r,Array.isArray(e._content)?e._content.map(e=>vt(e,t)):e._content))}const sn=y.Facet.define({combine:e=>e.join(\" \")}),ln=y.Facet.define({combine:e=>-1<e.indexOf(!0)}),cn=Q.StyleModule.newName(),un=Q.StyleModule.newName(),dn=Q.StyleModule.newName(),pn={\"&light\":\".\"+un,\"&dark\":\".\"+dn};function bt(t,e,r){return new Q.StyleModule(e,{finish(e){return/&/.test(e)?e.replace(/&\\w*/,e=>{if(\"&\"==e)return t;if(r&&r[e])return r[e];throw new RangeError(\"Unsupported selector: \"+e)}):t+\" \"+e}})}const fn=bt(\".\"+cn,{\"&\":{position:\"relative !important\",boxSizing:\"border-box\",\"&.cm-focused\":{outline:\"1px dotted #212121\"},display:\"flex !important\",flexDirection:\"column\"},\".cm-scroller\":{display:\"flex !important\",alignItems:\"flex-start !important\",fontFamily:\"monospace\",lineHeight:1.4,height:\"100%\",overflowX:\"auto\",position:\"relative\",zIndex:0,overflowAnchor:\"none\"},\".cm-content\":{margin:0,flexGrow:2,flexShrink:0,display:\"block\",whiteSpace:\"pre\",wordWrap:\"normal\",boxSizing:\"border-box\",minHeight:\"100%\",padding:\"4px 0\",outline:\"none\",\"&[contenteditable=true]\":{WebkitUserModify:\"read-write-plaintext-only\"}},\".cm-lineWrapping\":{whiteSpace_fallback:\"pre-wrap\",whiteSpace:\"break-spaces\",wordBreak:\"break-word\",overflowWrap:\"anywhere\",flexShrink:1},\"&light .cm-content\":{caretColor:\"black\"},\"&dark .cm-content\":{caretColor:\"white\"},\".cm-line\":{display:\"block\",padding:\"0 2px 0 6px\"},\".cm-layer\":{position:\"absolute\",left:0,top:0,contain:\"size style\",\"& > *\":{position:\"absolute\"}},\"&light .cm-selectionBackground\":{background:\"#d9d9d9\"},\"&dark .cm-selectionBackground\":{background:\"#222\"},\"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\":{background:\"#d7d4f0\"},\"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\":{background:\"#233\"},\".cm-cursorLayer\":{pointerEvents:\"none\"},\"&.cm-focused > .cm-scroller > .cm-cursorLayer\":{animation:\"steps(1) cm-blink 1.2s infinite\"},\"@keyframes cm-blink\":{\"0%\":{},\"50%\":{opacity:0},\"100%\":{}},\"@keyframes cm-blink2\":{\"0%\":{},\"50%\":{opacity:0},\"100%\":{}},\".cm-cursor, .cm-dropCursor\":{borderLeft:\"1.2px solid black\",marginLeft:\"-0.6px\",pointerEvents:\"none\"},\".cm-cursor\":{display:\"none\"},\"&dark .cm-cursor\":{borderLeftColor:\"#ddd\"},\".cm-dropCursor\":{position:\"absolute\"},\"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\":{display:\"block\"},\".cm-iso\":{unicodeBidi:\"isolate\"},\".cm-announced\":{position:\"fixed\",top:\"-10000px\"},\"@media print\":{\".cm-announced\":{display:\"none\"}},\"&light .cm-activeLine\":{backgroundColor:\"#cceeff44\"},\"&dark .cm-activeLine\":{backgroundColor:\"#99eeff33\"},\"&light .cm-specialChar\":{color:\"red\"},\"&dark .cm-specialChar\":{color:\"#f78\"},\".cm-gutters\":{flexShrink:0,display:\"flex\",height:\"100%\",boxSizing:\"border-box\",insetInlineStart:0,zIndex:200},\"&light .cm-gutters\":{backgroundColor:\"#f5f5f5\",color:\"#6c6c6c\",borderRight:\"1px solid #ddd\"},\"&dark .cm-gutters\":{backgroundColor:\"#333338\",color:\"#ccc\"},\".cm-gutter\":{display:\"flex !important\",flexDirection:\"column\",flexShrink:0,boxSizing:\"border-box\",minHeight:\"100%\",overflow:\"hidden\"},\".cm-gutterElement\":{boxSizing:\"border-box\"},\".cm-lineNumbers .cm-gutterElement\":{padding:\"0 3px 0 5px\",minWidth:\"20px\",textAlign:\"right\",whiteSpace:\"nowrap\"},\"&light .cm-activeLineGutter\":{backgroundColor:\"#e2f2ff\"},\"&dark .cm-activeLineGutter\":{backgroundColor:\"#222227\"},\".cm-panels\":{boxSizing:\"border-box\",position:\"sticky\",left:0,right:0,zIndex:300},\"&light .cm-panels\":{backgroundColor:\"#f5f5f5\",color:\"black\"},\"&light .cm-panels-top\":{borderBottom:\"1px solid #ddd\"},\"&light .cm-panels-bottom\":{borderTop:\"1px solid #ddd\"},\"&dark .cm-panels\":{backgroundColor:\"#333338\",color:\"white\"},\".cm-dialog\":{padding:\"2px 19px 4px 6px\",position:\"relative\",\"& label\":{fontSize:\"80%\"}},\".cm-dialog-close\":{position:\"absolute\",top:\"3px\",right:\"4px\",backgroundColor:\"inherit\",border:\"none\",font:\"inherit\",fontSize:\"14px\",padding:\"0\"},\".cm-tab\":{display:\"inline-block\",overflow:\"hidden\",verticalAlign:\"bottom\"},\".cm-widgetBuffer\":{verticalAlign:\"text-top\",height:\"1em\",width:0,display:\"inline\"},\".cm-placeholder\":{color:\"#888\",display:\"inline-block\",verticalAlign:\"top\",userSelect:\"none\"},\".cm-highlightSpace\":{backgroundImage:\"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)\",backgroundPosition:\"center\"},\".cm-highlightTab\":{backgroundImage:`url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"20\"><path stroke=\"%23888\" stroke-width=\"1\" fill=\"none\" d=\"M1 10H196L190 5M190 15L196 10M197 4L197 16\"/></svg>')`,backgroundSize:\"auto 100%\",backgroundPosition:\"right 90%\",backgroundRepeat:\"no-repeat\"},\".cm-trailingSpace\":{backgroundColor:\"#ff332255\"},\".cm-button\":{verticalAlign:\"middle\",color:\"inherit\",fontSize:\"70%\",padding:\".2em 1em\",borderRadius:\"1px\"},\"&light .cm-button\":{backgroundImage:\"linear-gradient(#eff1f5, #d9d9df)\",border:\"1px solid #888\",\"&:active\":{backgroundImage:\"linear-gradient(#b4b4b4, #d0d3d6)\"}},\"&dark .cm-button\":{backgroundImage:\"linear-gradient(#393939, #111)\",border:\"1px solid #888\",\"&:active\":{backgroundImage:\"linear-gradient(#111, #333)\"}},\".cm-textfield\":{verticalAlign:\"middle\",color:\"inherit\",fontSize:\"70%\",border:\"1px solid silver\",padding:\".2em .5em\"},\"&light .cm-textfield\":{backgroundColor:\"white\"},\"&dark .cm-textfield\":{border:\"1px solid #555\",backgroundColor:\"inherit\"}},pn),hn={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},mn=S.ie&&S.ie_version<=11;class gn{constructor(r){this.view=r,this.active=!1,this.editContext=null,this.selectionRange=new Wt,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=r.contentDOM,this.observer=new MutationObserver(e=>{for(var t of e)this.queue.push(t);(S.ie&&S.ie_version<=11||S.ios&&r.composing)&&e.some(e=>\"childList\"==e.type&&e.removedNodes.length||\"characterData\"==e.type&&e.oldValue.length>e.target.nodeValue.length)?this.flushSoon():this.flush()}),!window.EditContext||!1===r.constructor.EDIT_CONTEXT||S.chrome&&S.chrome_version<126||(this.editContext=new _n(r),r.state.facet(j)&&(r.contentDOM.editContext=this.editContext.editContext)),mn&&(this.onCharData=e=>{this.queue.push({target:e.target,type:\"characterData\",oldValue:e.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia(\"print\")),\"function\"==typeof ResizeObserver&&(this.resizeScroll=new ResizeObserver(()=>{var e;(null==(e=this.view.docView)?void 0:e.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(r.scrollDOM)),this.addWindowListeners(this.win=r.win),this.start(),\"function\"==typeof IntersectionObserver&&(this.intersection=new IntersectionObserver(e=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),0<e.length&&0<e[e.length-1].intersectionRatio!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView)&&this.onScrollChanged(document.createEvent(\"Event\"))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(e=>{0<e.length&&0<e[e.length-1].intersectionRatio&&this.onScrollChanged(document.createEvent(\"Event\"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers(\"scroll\",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(\"change\"!=e.type&&e.type||e.matches)&&(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(r){if(this.gapIntersection&&(r.length!=this.gaps.length||this.gaps.some((e,t)=>e!=r[t]))){this.gapIntersection.disconnect();for(var e of r)this.gapIntersection.observe(e);this.gaps=r}}onSelectionChange(e){var t,r,n,a=this.selectionChanged;this.readSelectionRange()&&!this.delayedAndroidKey&&(t=this.view,r=this.selectionRange,t.state.facet(j)?t.root.activeElement==this.dom:re(this.dom,r))&&((n=r.anchorNode&&t.docView.nearest(r.anchorNode))&&n.ignoreEvent(e)?a||(this.selectionChanged=!1):(S.ie&&S.ie_version<=11||S.android&&S.chrome)&&!t.state.selection.main.empty&&r.focusNode&&ae(r.focusNode,r.focusOffset,r.anchorNode,r.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){var e,t=this[\"view\"],r=ee(t.root);return!!r&&!(!(r=S.safari&&11==t.root.nodeType&&t.root.activeElement==this.dom&&function(e,t){if(t.getComposedRanges){t=t.getComposedRanges(e.root)[0];if(t)return St(e,t)}let r=null;function n(e){e.preventDefault(),e.stopImmediatePropagation(),r=e.getTargetRanges()[0]}return e.contentDOM.addEventListener(\"beforeinput\",n,!0),e.dom.ownerDocument.execCommand(\"indent\"),e.contentDOM.removeEventListener(\"beforeinput\",n,!0),r?St(e,r):null}(this.view,r)||r)||this.selectionRange.eq(r)||((e=re(this.dom,r))&&!this.selectionChanged&&t.inputState.lastFocusTime>Date.now()-200&&t.inputState.lastTouchTime<Date.now()-300&&function(e,t){let r=t.focusNode,n=t.focusOffset;if(r&&t.anchorNode==r&&t.anchorOffset==n)for(n=Math.min(n,T(r));;)if(n){if(1!=r.nodeType)return;var a=r.childNodes[n-1];\"false\"==a.contentEditable?n--:(r=a,n=T(r))}else{if(r==e)return 1;n=f(r),r=r.parentNode}}(this.dom,r)?(this.view.inputState.lastFocusTime=0,t.docView.updateSelection(),1):(this.selectionRange.setRange(r),e&&(this.selectionChanged=!0),0)))}setSelectionRange(e,t){this.selectionRange.set(e.node,e.offset,t.node,t.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let t=0,r=null;for(let e=this.dom;e;)if(1==e.nodeType)!r&&t<this.scrollTargets.length&&this.scrollTargets[t]==e?t++:r=r||this.scrollTargets.slice(0,t),r&&r.push(e),e=e.assignedSlot||e.parentNode;else{if(11!=e.nodeType)break;e=e.host}if(r=t<this.scrollTargets.length&&!r?this.scrollTargets.slice(0,t):r){for(var e of this.scrollTargets)e.removeEventListener(\"scroll\",this.onScroll);for(var n of this.scrollTargets=r)n.addEventListener(\"scroll\",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,hn),mn&&this.dom.addEventListener(\"DOMCharacterDataModified\",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),mn)&&this.dom.removeEventListener(\"DOMCharacterDataModified\",this.onCharData)}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,t){this.delayedAndroidKey||(this.flushingAndroidKey=this.view.win.requestAnimationFrame(()=>{var e=this.delayedAndroidKey;e&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=e.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush())&&e.force&&ue(this.dom,e.key,e.keyCode)})),this.delayedAndroidKey&&\"Enter\"!=e||(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange<Date.now()-50||!(null==(e=this.delayedAndroidKey)||!e.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){0<=this.delayedFlush&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(var e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){var e,t=this.pendingRecords();t.length&&(this.queue=[]);let r=-1,n=-1,a=!1;for(e of t){var i=this.readMutation(e);i&&(i.typeOver&&(a=!0),-1==r?{from:r,to:n}=i:(r=Math.min(i.from,r),n=Math.max(i.to,n)))}return{from:r,to:n,typeOver:a}}readChange(){var{from:e,to:t,typeOver:r}=this.processRecords(),n=this.selectionChanged&&re(this.dom,this.selectionRange);if(e<0&&!n)return null;-1<e&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;n=new Fr(this.view,e,t,r);return this.view.docView.domChanged={newSel:n.newSel?n.newSel.main:null},n}flush(e=!0){if(0<=this.delayedFlush||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();var t,r,e=this.readChange();return e?(t=this.view.state,r=nt(this.view,e),this.view.state==t&&(e.domChanged||e.newSel&&!e.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),r):(this.view.requestMeasure(),!1)}readMutation(e){var t,r,n=this.view.docView.nearest(e.target);return!n||n.ignoreMutation(e)?null:(n.markDirty(\"attributes\"==e.type),\"attributes\"==e.type&&(n.flags|=4),\"childList\"==e.type?(t=Et(n,e.previousSibling||e.target.previousSibling,-1),r=Et(n,e.nextSibling||e.target.nextSibling,1),{from:t?n.posAfter(t):n.posAtStart,to:r?n.posBefore(r):n.posAtEnd,typeOver:!1}):\"characterData\"==e.type?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null)}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener(\"resize\",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener(\"change\",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener(\"beforeprint\",this.onPrint),e.addEventListener(\"scroll\",this.onScroll),e.document.addEventListener(\"selectionchange\",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener(\"scroll\",this.onScroll),e.removeEventListener(\"resize\",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener(\"change\",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener(\"beforeprint\",this.onPrint),e.document.removeEventListener(\"selectionchange\",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(j)!=e.state.facet(j))&&(e.view.contentDOM.editContext=e.state.facet(j)?this.editContext.editContext:null)}destroy(){var e,t;this.stop(),null!=(e=this.intersection)&&e.disconnect(),null!=(e=this.gapIntersection)&&e.disconnect(),null!=(e=this.resizeScroll)&&e.disconnect();for(t of this.scrollTargets)t.removeEventListener(\"scroll\",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Et(e,t,r){for(;t;){var n=w.get(t);if(n&&n.parent==e)return n;n=t.parentNode;t=n!=e.dom?n:0<r?t.nextSibling:t.previousSibling}return null}function St(e,t){let r=t.startContainer,n=t.startOffset,a=t.endContainer,i=t.endOffset;t=e.docView.domAtPos(e.state.selection.main.anchor);return ae(t.node,t.offset,a,i)&&([r,n,a,i]=[a,i,r,n]),{anchorNode:r,anchorOffset:n,focusNode:a,focusOffset:i}}class _n{constructor(s){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(s.state);let e=this.editContext=new window.EditContext({text:s.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,s.state.selection.main.anchor))),selectionEnd:this.toContextPos(s.state.selection.main.head)});for(var t in this.handlers.textupdate=e=>{var t=s.state.selection.main,{anchor:r,head:n}=t,a=this.toEditorPos(e.updateRangeStart),i=this.toEditorPos(e.updateRangeEnd);0<=s.inputState.composing&&!this.composing&&(this.composing={contextBase:e.updateRangeStart,editorBase:a,drifted:!1});let o={from:a,to:i,insert:y.Text.of(e.text.split(\"\\n\"))};o.from==this.from&&r<this.from?o.from=r:o.to==this.to&&r>this.to&&(o.to=r),o.from!=o.to||o.insert.length?((S.mac||S.android)&&o.from==n-1&&/^\\. ?$/.test(e.text)&&\"off\"==s.contentDOM.getAttribute(\"autocorrect\")&&(o={from:a,to:i,insert:y.Text.of([e.text.replace(\".\",\" \")])}),this.pendingContextChange=o,s.state.readOnly||(r=this.to-this.from+(o.to-o.from+o.insert.length),at(s,o,y.EditorSelection.single(this.toEditorPos(e.selectionStart,r),this.toEditorPos(e.selectionEnd,r)))),this.pendingContextChange&&(this.revertPending(s.state),this.setSelection(s.state))):(n=y.EditorSelection.single(this.toEditorPos(e.selectionStart),this.toEditorPos(e.selectionEnd))).main.eq(t)||s.dispatch({selection:n,userEvent:\"select\"})},this.handlers.characterboundsupdate=r=>{let n=[],a=null;for(let e=this.toEditorPos(r.rangeStart),t=this.toEditorPos(r.rangeEnd);e<t;e++){var i=s.coordsForChar(e);a=i&&new DOMRect(i.left,i.top,i.right-i.left,i.bottom-i.top)||a||new DOMRect,n.push(a)}e.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=e=>{var t,r=[];for(t of e.getTextFormats()){var n,a,i=t.underlineStyle,o=t.underlineThickness;\"None\"!=i&&\"None\"!=o&&(n=this.toEditorPos(t.rangeStart))<(a=this.toEditorPos(t.rangeEnd))&&(i=`text-decoration: underline ${\"Dashed\"==i?\"dashed \":\"Squiggle\"==i?\"wavy \":\"\"}${\"Thin\"==o?1:2}px`,r.push(M.mark({attributes:{style:i}}).range(n,a)))}s.dispatch({effects:br.of(M.set(r))})},this.handlers.compositionstart=()=>{s.inputState.composing<0&&(s.inputState.composing=0,s.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{var e;s.inputState.composing=-1,s.inputState.compositionFirstChange=null,this.composing&&(e=this.composing[\"drifted\"],this.composing=null,e)&&this.reset(s.state)},this.handlers)e.addEventListener(t,this.handlers[t]);this.measureReq={read:e=>{this.editContext.updateControlBounds(e.contentDOM.getBoundingClientRect());e=ee(e.root);e&&e.rangeCount&&this.editContext.updateSelectionBounds(e.getRangeAt(0).getBoundingClientRect())}}}applyEdits(o){let s=0,l=!1,c=this.pendingContextChange;return o.changes.iterChanges((e,t,r,n,a)=>{if(!l){var i=a.length-(t-e);if(c&&t>=c.to){if(c.from==e&&c.to==t&&c.insert.eq(a))return c=this.pendingContextChange=null,s+=i,void(this.to+=i);c=null,this.revertPending(o.state)}if(e+=s,(t+=s)<=this.from)this.from+=i,this.to+=i;else if(e<this.to){if(e<this.from||t>this.to||3e4<this.to-this.from+a.length)return void(l=!0);this.editContext.updateText(this.toContextPos(e),this.toContextPos(t),a.toString()),this.to+=i}s+=i}}),c&&!l&&this.revertPending(o.state),!l}update(e){var t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(e=>!e.isUserEvent(\"input.type\")&&e.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):this.applyEdits(e)&&this.rangeIsValid(e.state)?(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state):(this.pendingContextChange=null,this.reset(e.state)),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){var t=e.selection.main[\"head\"];this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){var t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){var e=e.selection[\"main\"],t=this.toContextPos(Math.max(this.from,Math.min(this.to,e.anchor))),e=this.toContextPos(e.head);this.editContext.selectionStart==t&&this.editContext.selectionEnd==e||this.editContext.updateSelection(t,e)}rangeIsValid(e){var t=e.selection.main[\"head\"];return!(0<this.from&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||3e4<this.to-this.from)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);t=this.composing;return t&&t.drifted?t.editorBase+(e-t.contextBase):e+this.from}toContextPos(e){var t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(var e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Y{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&0<this.inputState.composing}get compositionStarted(){return!!this.inputState&&0<=this.inputState.composing}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement(\"div\"),this.scrollDOM=document.createElement(\"div\"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className=\"cm-scroller\",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement(\"div\"),this.announceDOM.className=\"cm-announced\",this.announceDOM.setAttribute(\"aria-live\",\"polite\"),this.dom=document.createElement(\"div\"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let r=e[\"dispatch\"];this.dispatchTransactions=e.dispatchTransactions||(r?e=>e.forEach(e=>r(e,this)):e=>this.update(e)),this.dispatch=this.dispatch.bind(this),this._root=e.root||function(e){for(;e;){if(e&&(9==e.nodeType||11==e.nodeType&&e.host))return e;e=e.assignedSlot||e.parentNode}return null}(e.parent)||document,this.viewState=new rn(e.state||y.EditorState.create(e)),e.scrollTo&&e.scrollTo.is(vr)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Er).map(e=>new Sr(e));for(t of this.plugins)t.update(this);this.observer=new gn(this),this.inputState=new Ur(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Pr(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),null!=(e=document.fonts)&&e.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){e=1==e.length&&e[0]instanceof y.Transaction?e:1==e.length&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(e,this)}update(o){if(0!=this.updateState)throw new Error(\"Calls to EditorView.update are not allowed while an update is in progress\");let s=!1,l=!1,c,u=this.state;for(var e of o){if(e.startState!=u)throw new RangeError(\"Trying to update state with a transaction that doesn't start from the previous state.\");u=e.state}if(this.destroyed)this.viewState.state=u;else{let e=this.hasFocus,t=0,r=null,n=(o.some(e=>e.annotation(zr))?(this.inputState.notifiedFocused=e,t=1):e==this.inputState.notifiedFocused||(this.inputState.notifiedFocused=e,r=ft(u,e))||(t=1),this.observer.delayedAndroidKey),a=null;if(n?(this.observer.clearDelayedAndroidKey(),(!(a=this.observer.readChange())||this.state.doc.eq(u.doc))&&this.state.selection.eq(u.selection)||(a=null)):this.observer.clear(),u.facet(y.EditorState.phrases)!=this.state.facet(y.EditorState.phrases))return this.setState(u);(c=Mr.create(this,u,o)).flags|=t;let i=this.viewState.scrollTarget;try{this.updateState=2;for(var d of o){var p,f;i=i&&i.map(d.changes),d.scrollIntoView&&(p=d.state.selection[\"main\"],i=new Tr(p.empty?p:y.EditorSelection.cursor(p.head,p.head>p.anchor?-1:1)));for(f of d.effects)f.is(vr)&&(i=f.value.clip(this.state))}this.viewState.update(c,i),this.bidiCache=vn.update(this.bidiCache,c.changes),c.empty||(this.updatePlugins(c),this.inputState.update(c)),s=this.docView.update(c),this.state.facet(Nr)!=this.styleModules&&this.mountStyles(),l=this.updateAttrs(),this.showAnnouncements(o),this.docView.updateSelection(s,o.some(e=>e.isUserEvent(\"select.pointer\")))}finally{this.updateState=0}if(c.startState.facet(sn)!=c.state.facet(sn)&&(this.viewState.mustMeasureContent=!0),(s||l||i||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),s&&this.docViewUpdate(),!c.empty)for(var h of this.state.facet(dr))try{h(c)}catch(e){A(this.state,e,\"update listener\")}(r||a)&&Promise.resolve().then(()=>{r&&this.state==r.startState&&this.dispatch(r),a&&!nt(this,a)&&n.force&&ue(this.contentDOM,n.key,n.keyCode)})}}setState(e){if(0!=this.updateState)throw new Error(\"Calls to EditorView.setState are not allowed while an update is in progress\");if(this.destroyed)this.viewState.state=e;else{this.updateState=2;var t=this.hasFocus;try{for(var r of this.plugins)r.destroy(this);this.viewState=new rn(e),this.plugins=e.facet(Er).map(e=>new Sr(e)),this.pluginMap.clear();for(var n of this.plugins)n.update(this);this.docView.destroy(),this.docView=new Pr(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}}updatePlugins(e){var t=e.startState.facet(Er),r=e.state.facet(Er);if(t!=r){var n,a,i=[];for(n of r){var o=t.indexOf(n);o<0?i.push(new Sr(n)):((o=this.plugins[o]).mustUpdate=e,i.push(o))}for(a of this.plugins)a.mustUpdate!=e&&a.destroy(this);this.plugins=i,this.pluginMap.clear()}else for(var s of this.plugins)s.mustUpdate=e;for(let e=0;e<this.plugins.length;e++)this.plugins[e].update(this);t!=r&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(var e of this.plugins){e=e.value;if(e&&e.docViewUpdate)try{e.docViewUpdate(this)}catch(e){A(this.state,e,\"doc view update listener\")}}}measure(e=!0){if(!this.destroyed)if(-1<this.measureScheduled&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey)this.measureScheduled=-1,this.requestMeasure();else{this.measureScheduled=0,e&&this.observer.forceFlush();let a=null,i=this.scrollDOM,o=i.scrollTop*this.scaleY,{scrollAnchorPos:s,scrollAnchorHeight:l}=this.viewState;1<Math.abs(o-this.viewState.scrollTop)&&(l=-1),this.viewState.scrollAnchorHeight=-1;try{for(let n=0;;n++){l<0&&(l=pe(i)?(s=-1,this.viewState.heightMap.height):(c=this.viewState.scrollAnchorAt(o),s=c.from,c.top)),this.updateState=1;var c,u=this.viewState.measure(this);if(!u&&!this.measureRequests.length&&null==this.viewState.scrollTarget)break;if(5<n){console.warn(this.measureRequests.length?\"Measure loop restarted more than 5 times\":\"Viewport failed to stabilize\");break}let t=[];4&u||([this.measureRequests,t]=[t,this.measureRequests]);var d=t.map(e=>{try{return e.read(this)}catch(e){return A(this.state,e),Tn}});let e=Mr.create(this,this.state,[]),r=!1;e.flags|=u,a?a.flags|=u:a=e,this.updateState=2,!e.empty&&(this.updatePlugins(e),this.inputState.update(e),this.updateAttrs(),r=this.docView.update(e))&&this.docViewUpdate();for(let e=0;e<t.length;e++)if(d[e]!=Tn)try{var p=t[e];p.write&&p.write(d[e],this)}catch(e){A(this.state,e)}if(r&&this.docView.updateSelection(!0),!e.viewportChanged&&0==this.measureRequests.length){if(this.viewState.editorHeight){if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,l=-1;continue}var f=(s<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(s).top)-l;if(1<f||f<-1){o+=f,i.scrollTop=o/this.scaleY,l=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(a&&!a.empty)for(var t of this.state.facet(dr))t(a)}}get themeClasses(){return cn+\" \"+(this.state.facet(ln)?dn:un)+\" \"+this.state.facet(sn)}updateAttrs(){let r=At(this,Ar,{class:\"cm-editor\"+(this.hasFocus?\" cm-focused \":\" \")+this.themeClasses}),n={spellcheck:\"false\",autocorrect:\"off\",autocapitalize:\"off\",writingsuggestions:\"false\",translate:\"no\",contenteditable:this.state.facet(j)?\"true\":\"false\",class:\"cm-content\",style:S.tabSize+\": \"+this.state.tabSize,role:\"textbox\",\"aria-multiline\":\"true\"};this.state.readOnly&&(n[\"aria-readonly\"]=\"true\"),At(this,Or,n);var e=this.observer.ignore(()=>{var e=Ne(this.contentDOM,this.contentAttrs,n),t=Ne(this.dom,this.editorAttrs,r);return e||t});return this.editorAttrs=r,this.contentAttrs=n,e}showAnnouncements(e){let t=!0;for(var r of e)for(var n of r.effects)n.is(Y.announce)&&(t&&(this.announceDOM.textContent=\"\"),t=!1,this.announceDOM.appendChild(document.createElement(\"div\")).textContent=n.value)}mountStyles(){this.styleModules=this.state.facet(Nr);var e=this.state.facet(Y.cspNonce);Q.StyleModule.mount(this.root,this.styleModules.concat(fn).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(2==this.updateState)throw new Error(\"Reading the editor layout isn't allowed during an update\");0==this.updateState&&-1<this.measureScheduled&&this.measure(!1)}requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),t&&!(-1<this.measureRequests.indexOf(t))){if(null!=t.key)for(let e=0;e<this.measureRequests.length;e++)if(this.measureRequests[e].key===t.key)return void(this.measureRequests[e]=t);this.measureRequests.push(t)}}plugin(t){let e=this.pluginMap.get(t);return(void 0===e||e&&e.plugin!=t)&&this.pluginMap.set(t,e=this.plugins.find(e=>e.plugin==t)||null),e&&e.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,r){return rt(this,e,et(this,e,t,r))}moveByGroup(i,e){return rt(this,i,et(this,i,e,e=>{{var n=this,a=i.head;let t=n.state.charCategorizer(a),r=t(e);return e=>{e=t(e);return(r=r==y.CharCategory.Space?e:r)==e}}}))}visualLineSide(e,t){var r=this.bidiSpans(e),n=this.textDirectionAt(e.from),r=r[t?r.length-1:0];return y.EditorSelection.cursor(r.side(t,n)+e.from,r.forward(!t,n)?1:-1)}moveToLineBoundary(e,t,r=!0){var n=Xe(i=this,(e=e).head,e.assoc||-1);if(r=r&&n.type==O.BlockType.Text&&(i.lineWrapping||n.widgetLineBreaks)?i.coordsAtPos(e.assoc<0&&e.head>n.from?e.head-1:e.head):null){var e=i.dom.getBoundingClientRect(),a=i.textDirectionAt(n.from),i=i.posAtCoords({x:t==(a==O.Direction.LTR)?e.right-1:e.left+1,y:(r.top+r.bottom)/2});if(null!=i)return y.EditorSelection.cursor(i,t?-1:1)}return y.EditorSelection.cursor(t?n.to:n.from,t?-1:1)}moveVertically(e,t,r){return rt(this,e,function(t,e,r,n){var a=e.head,i=r?1:-1;if(a==(r?t.state.doc.length:0))return y.EditorSelection.cursor(a,e.assoc);let o=e.goalColumn,s;var l=t.contentDOM.getBoundingClientRect(),r=t.coordsAtPos(a,e.assoc||-1),e=t.documentTop,c=(s=r?(null==o&&(o=r.left-l.left),i<0?r.top:r.bottom):(r=t.viewState.lineBlockAt(a),null==o&&(o=Math.min(l.right-l.left,t.defaultCharacterWidth*(a-r.from))),(i<0?r.top:r.bottom)+e),l.left+o),u=null!=n?n:t.viewState.heightOracle.textHeight>>1;for(let e=0;;e+=10){var d,p=s+(u+e)*i,f=Qe(t,{x:c,y:p},!1,i);if(p<l.top||p>l.bottom||(i<0?f<a:a<f))return p=!(d=t.docView.coordsForChar(f))||p<d.top?-1:1,y.EditorSelection.cursor(f,p,void 0,o)}}(this,e,t,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),Qe(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();var r,n,a=this.docView.coordsAt(e,t);return a&&a.left!=a.right?(r=this.state.doc.lineAt(e),se(a,(n=this.bidiSpans(r))[U.find(n,e-r.from,-1,t)].dir==O.Direction.LTR==0<t)):a}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(gr)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>yn)return He(e.length);let t=this.textDirectionAt(e.from),r;for(var n of this.bidiCache)if(n.from==e.from&&n.dir==t&&(n.fresh||function t(r,n){if(r.length==n.length){for(let e=0;e<r.length;e++){var a=r[e],i=n[e];if(a.from!=i.from||a.to!=i.to||a.direction!=i.direction||!t(a.inner,i.inner))return}return 1}}(n.isolates,r=Ve(this,e))))return n.order;r=r||Ve(this,e);var a=je(e.text,t,r);return this.bidiCache.push(new vn(e.from,e.to,t,r,!0,a)),a}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||S.safari&&(null==(e=this.inputState)?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{ce(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((9==e.nodeType?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(var e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),-1<this.measureScheduled&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return vr.of(new Tr(\"number\"==typeof e?y.EditorSelection.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){var{scrollTop:e,scrollLeft:t}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return vr.of(new Tr(y.EditorSelection.cursor(r.from),\"start\",\"start\",r.top-e,t,!0))}setTabFocusMode(e){null==e?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:\"boolean\"==typeof e?this.inputState.tabFocusMode=e?0:-1:0!=this.inputState.tabFocusMode&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return H.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return H.define(()=>({}),{eventObservers:e})}static theme(e,t){var r=Q.StyleModule.newName(),r=[sn.of(r),Nr.of(bt(\".\"+r,e))];return t&&t.dark&&r.push(ln.of(!0)),r}static baseTheme(e){return y.Prec.lowest(Nr.of(bt(\".\"+cn,e,pn)))}static findFromDOM(e){var t=e.querySelector(\".cm-content\"),t=t&&w.get(t)||w.get(e);return(null==(e=null==t?void 0:t.rootView)?void 0:e.view)||null}}Y.styleModule=Nr,Y.inputHandler=pr,Y.clipboardInputFilter=hr,Y.clipboardOutputFilter=mr,Y.scrollHandler=yr,Y.focusChangeEffect=fr,Y.perLineTextDirection=gr,Y.exceptionSink=ur,Y.updateListener=dr,Y.editable=j,Y.mouseSelectionStyle=cr,Y.dragMovesSelection=lr,Y.clickAddsSelectionRange=sr,Y.decorations=Cr,Y.outerDecorations=wr,Y.atomicRanges=kr,Y.bidiIsolatedRanges=Ir,Y.scrollMargins=Rr,Y.darkTheme=ln,Y.cspNonce=y.Facet.define({combine:e=>e.length?e[0]:\"\"}),Y.contentAttributes=Or,Y.editorAttributes=Ar,Y.lineWrapping=Y.contentAttributes.of({class:\"cm-lineWrapping\"}),Y.announce=y.StateEffect.define();const yn=4096,Tn={};class vn{constructor(e,t,r,n,a,i){this.from=e,this.to=t,this.dir=r,this.isolates=n,this.fresh=a,this.order=i}static update(t,r){if(r.empty&&!t.some(e=>e.fresh))return t;var n=[],a=t.length?t[t.length-1].dir:O.Direction.LTR;for(let e=Math.max(0,t.length-10);e<t.length;e++){var i=t[e];i.dir!=a||r.touchesRange(i.from,i.to)||n.push(new vn(r.mapPos(i.from,1),r.mapPos(i.to,-1),i.dir,i.isolates,!1,i.order))}return n}}function At(r,n,a){for(let e=r.state.facet(n),t=e.length-1;0<=t;t--){var i=e[t],i=\"function\"==typeof i?i(r):i;i&&Ie(i,a)}return a}const bn=S.mac?\"mac\":S.windows?\"win\":S.linux?\"linux\":\"key\";function Ot(e,t,r){return t.altKey&&(e=\"Alt-\"+e),t.ctrlKey&&(e=\"Ctrl-\"+e),t.metaKey&&(e=\"Meta-\"+e),e=!1!==r&&t.shiftKey?\"Shift-\"+e:e}ve=y.Prec.default(Y.domEventHandlers({keydown(e,t){return wt(Ct(t.state),e,t,\"editor\")}}));const En=y.Facet.define({enables:ve}),Sn=new WeakMap;function Ct(e){e=e.facet(En);let t=Sn.get(e);return t||Sn.set(e,t=function(e,c=bn){let s=Object.create(null),n=Object.create(null),l=(e,t)=>{var r=n[e];if(null==r)n[e]=t;else if(r!=t)throw new Error(\"Key binding \"+e+\" is used both as a regular binding and as a multi-stroke prefix\")},t=(n,e,t,r,a)=>{var i=s[n]||(s[n]=Object.create(null)),o=e.split(/ (?!$)/).map(i=>{{var o=c,s=i.split(/-(?!$)/);let e=s[s.length-1];\"Space\"==e&&(e=\" \");let t,r,n,a;for(let e=0;e<s.length-1;++e){var l=s[e];if(/^(cmd|meta|m)$/i.test(l))a=!0;else if(/^a(lt)?$/i.test(l))t=!0;else if(/^(c|ctrl|control)$/i.test(l))r=!0;else if(/^s(hift)?$/i.test(l))n=!0;else{if(!/^mod$/i.test(l))throw new Error(\"Unrecognized modifier name: \"+l);\"mac\"==o?a=!0:r=!0}}return t&&(e=\"Alt-\"+e),r&&(e=\"Ctrl-\"+e),a&&(e=\"Meta-\"+e),e=n?\"Shift-\"+e:e}});for(let e=1;e<o.length;e++){let r=o.slice(0,e).join(\" \");l(r,!0),i[r]||(i[r]={preventDefault:!0,stopPropagation:!1,run:[e=>{let t=m={view:e,prefix:r,scope:n};return setTimeout(()=>{m==t&&(m=null)},An),!0}]})}var e=o.join(\" \"),e=(l(e,!1),i[e]||(i[e]={preventDefault:!1,stopPropagation:!1,run:(null==(e=null==(e=i._any)?void 0:e.run)?void 0:e.slice())||[]}));t&&e.run.push(t),r&&(e.preventDefault=!0),a&&(e.stopPropagation=!0)};for(var r of e){var a=r.scope?r.scope.split(\" \"):[\"editor\"];if(r.any)for(var i of a){var o,u=s[i]||(s[i]=Object.create(null));u._any||(u._any={preventDefault:!1,stopPropagation:!1,run:[]});let t=r[\"any\"];for(o in u)u[o].run.push(e=>t(e,g))}var d=r[c]||r.key;if(d)for(var p of a)t(p,d,r.run,r.preventDefault,r.stopPropagation),r.shift&&t(p,\"Shift-\"+d,r.shift,r.preventDefault,r.stopPropagation)}return s}(e.reduce((e,t)=>e.concat(t),[]))),t}let m=null;const An=4e3;let g=null;function wt(e,t,r,n){g=t;var a=Z.keyName(t),i=y.codePointAt(a,0),i=y.codePointSize(i)==a.length&&\" \"!=a;let o=\"\",s=!1,l=!1,c=!1,u=(m&&m.view==r&&m.scope==n&&(o=m.prefix+\" \",Hr.indexOf(t.keyCode)<0)&&(l=!0,m=null),new Set);var d=e=>{if(e){for(var t of e.run)if(!u.has(t)&&(u.add(t),t(r)))return e.stopPropagation&&(c=!0),!0;e.preventDefault&&(e.stopPropagation&&(c=!0),l=!0)}return!1};let p=e[n],f,h;return p&&(d(p[o+Ot(a,t,!i)])?s=!0:i&&(t.altKey||t.metaKey||t.ctrlKey)&&!(S.windows&&t.ctrlKey&&t.altKey)&&(f=Z.base[t.keyCode])&&f!=a?(d(p[o+Ot(f,t,!0)])||t.shiftKey&&(h=Z.shift[t.keyCode])!=a&&h!=f&&d(p[o+Ot(h,t,!1)]))&&(s=!0):i&&t.shiftKey&&d(p[o+Ot(a,t,!0)])&&(s=!0),!s)&&d(p._any)&&(s=!0),(s=l?!0:s)&&c&&t.stopPropagation(),g=null,s}class On{constructor(e,t,r,n,a){this.className=e,this.left=t,this.top=r,this.width=n,this.height=a}draw(){var e=document.createElement(\"div\");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className==this.className&&(this.adjust(e),!0)}adjust(e){e.style.left=this.left+\"px\",e.style.top=this.top+\"px\",null!=this.width&&(e.style.width=this.width+\"px\"),e.style.height=this.height+\"px\"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(d,p,f){var h;if(f.empty)return(h=d.coordsAtPos(f.head,f.assoc||1))?(v=kt(d),[new On(p,h.left-v.left,h.top-v.top,null,h.bottom-h.top)]):[];{var T=d;var m=p;var v=f;if(v.to<=T.viewport.from||v.from>=T.viewport.to)return[];let e=Math.max(v.from,T.viewport.from),t=Math.min(v.to,T.viewport.to),g=T.textDirection==O.Direction.LTR,r=T.contentDOM,n=r.getBoundingClientRect(),a=kt(T),i=r.querySelector(\".cm-line\"),o=i&&window.getComputedStyle(i),_=n.left+(o?parseInt(o.paddingLeft)+Math.min(0,parseInt(o.textIndent)):0),y=n.right-(o?parseInt(o.paddingRight):0),s=Xe(T,e,1),l=Xe(T,t,-1),c=s.type==O.BlockType.Text?s:null,u=l.type==O.BlockType.Text?l:null;c&&(T.lineWrapping||s.widgetLineBreaks)&&(c=It(T,e,1,c));u&&(T.lineWrapping||l.widgetLineBreaks)&&(u=It(T,t,-1,u));return c&&u&&c.from==u.from&&c.to==u.to?E(S(v.from,v.to,c)):(h=c?S(v.from,null,c):A(s,!1),v=u?S(null,v.to,u):A(l,!0),d=[],(c||s).to<(u||l).from-(c&&u?1:0)||1<s.widgetLineBreaks&&h.bottom+T.defaultLineHeight/2<v.top?d.push(b(_,h.bottom,y,v.top)):h.bottom<v.top&&T.elementAtHeight((h.bottom+v.top)/2).type==O.BlockType.Text&&(h.bottom=v.top=(h.bottom+v.top)/2),E(h).concat(d).concat(E(v)));function b(e,t,r,n){return new On(m,e-a.left,t-a.top,r-e,n-t)}function E({top:t,bottom:r,horizontal:n}){var a=[];for(let e=0;e<n.length;e+=2)a.push(b(n[e],t,n[e+1],r));return a}function S(r,n,i){let o=1e9,s=-1e9,l=[];function a(e,t,r,n,a){e=T.coordsAtPos(e,e==i.to?-2:2),r=T.coordsAtPos(r,r==i.from?2:-2);e&&r&&(o=Math.min(e.top,r.top,o),s=Math.max(e.bottom,r.bottom,s),a==O.Direction.LTR?l.push(g&&t?_:e.left,g&&n?y:r.right):l.push(!g&&n?_:r.left,!g&&t?y:e.right))}var c,u=null!=r?r:i.from,d=null!=n?n:i.to;for(c of T.visibleRanges)if(c.to>u&&c.from<d)for(let e=Math.max(c.from,u),t=Math.min(c.to,d);;){var p,f=T.state.doc.lineAt(e);for(p of T.bidiSpans(f)){var h=p.from+f.from,m=p.to+f.from;if(t<=h)break;m>e&&a(Math.max(h,e),null==r&&h<=u,Math.min(m,t),null==n&&d<=m,p.dir)}if((e=f.to+1)>=t)break}return 0==l.length&&a(u,null==r,d,null==n,T.textDirection),{top:o,bottom:s,horizontal:l}}function A(e,t){t=n.top+(t?e.top:e.bottom);return{top:t,bottom:t,horizontal:[]}}return}}}function kt(e){var t=e.scrollDOM.getBoundingClientRect();return{left:(e.textDirection==O.Direction.LTR?t.left:t.right-e.scrollDOM.clientWidth*e.scaleX)-e.scrollDOM.scrollLeft*e.scaleX,top:t.top-e.scrollDOM.scrollTop*e.scaleY}}function It(e,t,r,n){var a,t=e.coordsAtPos(t,2*r);return!t||(r=e.dom.getBoundingClientRect(),t=(t.top+t.bottom)/2,a=e.posAtCoords({x:r.left+1,y:t}),e=e.posAtCoords({x:r.right-1,y:t}),null==a)||null==e?n:{from:Math.max(n.from,Math.min(a,e)),to:Math.min(n.to,Math.max(a,e))}}class Cn{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement(\"div\")),this.dom.classList.add(\"cm-layer\"),t.above&&this.dom.classList.add(\"cm-layer-above\"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute(\"aria-hidden\",\"true\"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(wn)!=e.state.facet(wn)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){!1!==this.layer.updateOnDocViewUpdate&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,r=e.facet(wn);for(;t<r.length&&r[t]!=this.layer;)t++;this.dom.style.zIndex=String((this.layer.above?150:-1)-t)}measure(){return this.layer.markers(this.view)}scale(){var{scaleX:e,scaleY:t}=this.view;e==this.scaleX&&t==this.scaleY||(this.scaleX=e,this.scaleY=t,this.dom.style.transform=`scale(${1/e}, ${1/t})`)}draw(r){if(r.length!=this.drawn.length||r.some((e,t)=>{return e=e,t=this.drawn[t],!(e.constructor==t.constructor&&e.eq(t))})){let e=this.dom.firstChild,t=0;for(var n of r)n.update&&e&&n.constructor&&this.drawn[t].constructor&&n.update(e,this.drawn[t])?(e=e.nextSibling,t++):this.dom.insertBefore(n.draw(),e);for(;e;){var a=e.nextSibling;e.remove(),e=a}this.drawn=r}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const wn=y.Facet.define();function Rt(t){return[H.define(e=>new Cn(e,t)),wn.of(t)]}const kn=y.Facet.define({combine(e){return y.combineConfig(e,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function Nt(e){return e.startState.facet(kn)!=e.state.facet(kn)}const In=Rt({above:!0,markers(e){var t,r=e[\"state\"],n=r.facet(kn),a=[];for(t of r.selection.ranges){var i=t==r.selection.main;if(t.empty||n.drawRangeCursor){var o,i=i?\"cm-cursor cm-cursor-primary\":\"cm-cursor cm-cursor-secondary\",s=t.empty?t:y.EditorSelection.cursor(t.head,t.head>t.anchor?-1:1);for(o of On.forRange(e,i,s))a.push(o)}}return a},update(e,t){e.transactions.some(e=>e.selection)&&(t.style.animationName=\"cm-blink\"==t.style.animationName?\"cm-blink2\":\"cm-blink\");var r=Nt(e);return r&&Mt(e.state,t),e.docChanged||e.selectionSet||r},mount(e,t){Mt(t.state,e)},class:\"cm-cursorLayer\"});function Mt(e,t){t.style.animationDuration=e.facet(kn).cursorBlinkRate+\"ms\"}const Rn=Rt({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:On.forRange(t,\"cm-selectionBackground\",e)).reduce((e,t)=>e.concat(t))},update(e,t){return e.docChanged||e.selectionSet||e.viewportChanged||Nt(e)},class:\"cm-selectionLayer\"}),Nn=y.Prec.highest(Y.theme({\".cm-line\":{\"& ::selection, &::selection\":{backgroundColor:\"transparent !important\"},caretColor:\"transparent !important\"},\".cm-content\":{caretColor:\"transparent !important\",\"& :focus\":{caretColor:\"initial !important\",\"&::selection, & ::selection\":{backgroundColor:\"Highlight !important\"}}}})),Mn=y.StateEffect.define({map(e,t){return null==e?null:t.mapPos(e)}}),Pn=y.StateField.define({create(){return null},update(e,t){return null!=e&&(e=t.changes.mapPos(e)),t.effects.reduce((e,t)=>t.is(Mn)?t.value:e,e)}}),Dn=H.fromClass(class{constructor(e){this.view=e,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(e){var t,r=e.state.field(Pn);null==r?null!=this.cursor&&(null!=(t=this.cursor)&&t.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement(\"div\")),this.cursor.className=\"cm-dropCursor\"),(e.startState.field(Pn)!=r||e.docChanged||e.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){var e,t=this[\"view\"],r=t.state.field(Pn),r=null!=r&&t.coordsAtPos(r);return r?(e=t.scrollDOM.getBoundingClientRect(),{left:r.left-e.left+t.scrollDOM.scrollLeft*t.scaleX,top:r.top-e.top+t.scrollDOM.scrollTop*t.scaleY,height:r.bottom-r.top}):null}drawCursor(e){var t,r;this.cursor&&({scaleX:t,scaleY:r}=this.view,e?(this.cursor.style.left=e.left/t+\"px\",this.cursor.style.top=e.top/r+\"px\",this.cursor.style.height=e.height/r+\"px\"):this.cursor.style.left=\"-100000px\")}destroy(){this.cursor&&this.cursor.remove()}setDropPos(e){this.view.state.field(Pn)!=e&&this.view.dispatch({effects:Mn.of(e)})}},{eventObservers:{dragover(e){this.setDropPos(this.view.posAtCoords({x:e.clientX,y:e.clientY}))},dragleave(e){e.target!=this.view.contentDOM&&this.view.contentDOM.contains(e.relatedTarget)||this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Pt(n,a,i,o,s){a.lastIndex=0;for(let e=n.iterRange(i,o),t=i,r;!e.next().done;t+=e.value.length)if(!e.lineBreak)for(;r=a.exec(e.value);)s(t+r.index,r)}class xn{constructor(e){const{regexp:t,decoration:a,decorate:i,boundary:r,maxLength:n=1e3}=e;if(!t.global)throw new RangeError(\"The regular expression given to MatchDecorator should have its 'g' flag set\");if(this.regexp=t,i)this.addMatch=(e,t,r,n)=>i(n,r,r+e[0].length,e,t);else if(\"function\"==typeof a)this.addMatch=(e,t,r,n)=>{t=a(e,t,r);t&&n(r,r+e[0].length,t)};else{if(!a)throw new RangeError(\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\");this.addMatch=(e,t,r,n)=>n(r,r+e[0].length,a)}this.boundary=r,this.maxLength=n}createDeco(r){let e=new y.RangeSetBuilder,n=e.add.bind(e);for(var{from:t,to:a}of function(e,t){var r=e.visibleRanges;if(1==r.length&&r[0].from==e.viewport.from&&r[0].to==e.viewport.to)return r;var n,a,i=[];for({from:n,to:a}of r)n=Math.max(e.state.doc.lineAt(n).from,n-t),a=Math.min(e.state.doc.lineAt(a).to,a+t),i.length&&i[i.length-1].to>=n?i[i.length-1].to=a:i.push({from:n,to:a});return i}(r,this.maxLength))Pt(r.state.doc,this.regexp,t,a,(e,t)=>this.addMatch(t,r,e,n));return e.finish()}updateDeco(a,e){let i=1e9,o=-1;return a.docChanged&&a.changes.iterChanges((e,t,r,n)=>{n>=a.view.viewport.from&&r<=a.view.viewport.to&&(i=Math.min(r,i),o=Math.max(n,o))}),a.viewportMoved||1e3<o-i?this.createDeco(a.view):-1<o?this.updateRange(a.view,e.map(a.changes),i,o):e}updateRange(s,l,e,r){for(var c of s.visibleRanges){let t=Math.max(c.from,e),o=Math.min(c.to,r);if(o>=t){var u=s.state.doc.lineAt(t),d=u.to<o?s.state.doc.lineAt(o):u;let r=Math.max(c.from,u.from),n=Math.min(c.to,d.to);if(this.boundary){for(;t>u.from;t--)if(this.boundary.test(u.text[t-1-u.from])){r=t;break}for(;o<d.to;o++)if(this.boundary.test(d.text[o-d.from])){n=o;break}}let a=[],e,i=(e,t,r)=>a.push(r.range(e,t));if(u==d)for(this.regexp.lastIndex=r-u.from;(e=this.regexp.exec(u.text))&&e.index<n-u.from;)this.addMatch(e,s,e.index+u.from,i);else Pt(s.state.doc,this.regexp,r,n,(e,t)=>this.addMatch(t,s,e,i));l=l.update({filterFrom:r,filterTo:n,filter:(e,t)=>e<r||t>n,add:a})}}return l}}const Ln=null!=/x/.unicode?\"gu\":\"g\",Fn=new RegExp(\"[\\0-\\b\\n-\u001f-­؜​‎‏\\u2028\\u2029‭‮⁦⁧⁩\\ufeff￹-￼]\",Ln),Un={0:\"null\",7:\"bell\",8:\"backspace\",10:\"newline\",11:\"vertical tab\",13:\"carriage return\",27:\"escape\",8203:\"zero width space\",8204:\"zero width non-joiner\",8205:\"zero width joiner\",8206:\"left-to-right mark\",8207:\"right-to-left mark\",8232:\"line separator\",8237:\"left-to-right override\",8238:\"right-to-left override\",8294:\"left-to-right isolate\",8295:\"right-to-left isolate\",8297:\"pop directional isolate\",8233:\"paragraph separator\",65279:\"zero width no-break space\",65532:\"object replacement\"};let p=null;const Bn=y.Facet.define({combine(e){var t,r,e=y.combineConfig(e,{render:null,specialChars:Fn,addSpecialChars:null});return(e.replaceTabs=(null==p&&\"undefined\"!=typeof document&&document.body&&(r=document.body.style,p=null!=(null!=(t=r.tabSize)?t:r.MozTabSize)),!p))&&(e.specialChars=new RegExp(\"\\t|\"+e.specialChars.source,Ln)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+\"|\"+e.addSpecialChars.source,Ln)),e}});let t=null;const jn=\"•\";class Hn extends N{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){var t=32<=(t=this.code)?jn:10==t?\"␤\":String.fromCharCode(9216+t),e=e.state.phrase(\"Control character\")+\" \"+(Un[this.code]||\"0x\"+this.code.toString(16)),r=this.options.render&&this.options.render(this.code,e,t);return r||((r=document.createElement(\"span\")).textContent=t,r.title=e,r.setAttribute(\"aria-label\",e),r.className=\"cm-specialChar\",r)}ignoreEvent(){return!1}}class Gn extends N{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){var e=document.createElement(\"span\");return e.textContent=\"\\t\",e.className=\"cm-tab\",e.style.width=this.width+\"px\",e}ignoreEvent(){return!1}}const Vn=H.fromClass(class{constructor(){this.height=1e3,this.attrs={style:\"padding-bottom: 1000px\"}}update(e){e=e.view,e=e.viewState.editorHeight-e.defaultLineHeight-e.documentPadding.top-.5;0<=e&&e!=this.height&&(this.height=e,this.attrs={style:`padding-bottom: ${e}px`})}});const qn=M.line({class:\"cm-activeLine\"}),zn=H.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.docChanged||e.selectionSet)&&(this.decorations=this.getDeco(e.view))}getDeco(e){let t=-1,r=[];for(var n of e.state.selection.ranges){n=e.lineBlockAt(n.head);n.from>t&&(r.push(qn.range(n.from)),t=n.from)}return M.set(r)}},{decorations:e=>e.decorations});class Wn extends N{constructor(e){super(),this.content=e}toDOM(e){var t=document.createElement(\"span\");return t.className=\"cm-placeholder\",t.style.pointerEvents=\"none\",t.appendChild(\"string\"==typeof this.content?document.createTextNode(this.content):\"function\"==typeof this.content?this.content(e):this.content.cloneNode(!0)),t.setAttribute(\"aria-hidden\",\"true\"),t}coordsAt(e){var t=e.firstChild?ne(e.firstChild):[];return t.length?(e=window.getComputedStyle(e.parentNode),t=se(t[0],\"rtl\"!=e.direction),e=parseInt(e.lineHeight),t.bottom-t.top>1.5*e?{left:t.left,right:t.right,top:t.top,bottom:t.top+e}:t):null}ignoreEvent(){return!1}}function Dt(e,t){var r,n=e.posAtCoords({x:t.clientX,y:t.clientY},!1),a=e.state.doc.lineAt(n),i=n-a.from,o=2e3<i?-1:i==a.length?(r=e,t=t.clientX,(o=r.coordsAtPos(r.viewport.from))?Math.round(Math.abs((o.left-t)/r.defaultCharacterWidth)):-1):y.countColumn(a.text,e.state.tabSize,n-a.from);return{line:a.number,col:o,off:i}}function xt(n,e){let a=Dt(n,e),i=n.state.selection;return a?{update(e){var t;e.docChanged&&(t=e.changes.mapPos(e.startState.doc.line(a.line).from),t=e.state.doc.lineAt(t),a={line:t.number,col:a.col,off:Math.min(a.off,t.length)},i=i.map(e.changes))},get(e,t,r){var e=Dt(n,e);return e&&(e=function(t,e,r){var n=Math.min(e.line,r.line),a=Math.max(e.line,r.line),i=[];if(2e3<e.off||2e3<r.off||e.col<0||r.col<0){var o=Math.min(e.off,r.off),s=Math.max(e.off,r.off);for(let e=n;e<=a;e++){var l=t.doc.line(e);l.length<=s&&i.push(y.EditorSelection.range(l.from+o,l.to+s))}}else{var c=Math.min(e.col,r.col),u=Math.max(e.col,r.col);for(let e=n;e<=a;e++){var d,p=t.doc.line(e),f=y.findColumn(p.text,c,t.tabSize,!0);f<0?i.push(y.EditorSelection.cursor(p.to)):(d=y.findColumn(p.text,u,t.tabSize),i.push(y.EditorSelection.range(p.from+f,p.from+d)))}}return i}(n.state,a,e)).length?r?y.EditorSelection.create(e.concat(i.ranges)):y.EditorSelection.create(e):i}}:null}const $n={Alt:[18,e=>!!e.altKey],Control:[17,e=>!!e.ctrlKey],Shift:[16,e=>!!e.shiftKey],Meta:[91,e=>!!e.metaKey]},Kn={style:\"cursor: crosshair\"};const Yn=\"-10000px\";class Jn{constructor(e,t,r,n){this.facet=t,this.createTooltipView=r,this.removeTooltipView=n,this.input=e.state.facet(t),this.tooltips=this.input.filter(e=>e);let a=null;this.tooltipViews=this.tooltips.map(e=>a=r(e,a))}update(n,a){var e,t=n.state.facet(this.facet),i=t.filter(e=>e);if(t===this.input){for(var r of this.tooltipViews)r.update&&r.update(n);return!1}var o,s,l=[],c=a?[]:null;for(let e=0;e<i.length;e++){let t=i[e],r=-1;if(t){for(let e=0;e<this.tooltips.length;e++){var u=this.tooltips[e];u&&u.create==t.create&&(r=e)}r<0?(l[e]=this.createTooltipView(t,e?l[e-1]:null),c&&(c[e]=!!t.above)):(o=l[e]=this.tooltipViews[r],c&&(c[e]=a[r]),o.update&&o.update(n))}}for(s of this.tooltipViews)l.indexOf(s)<0&&(this.removeTooltipView(s),null!=(e=s.destroy))&&e.call(s);return a&&(c.forEach((e,t)=>a[t]=e),a.length=c.length),this.input=t,this.tooltips=i,this.tooltipViews=l,!0}}function Lt(e){e=e.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const Qn=y.Facet.define({combine:e=>{var t;return{position:S.ios?\"absolute\":(null==(t=e.find(e=>e.position))?void 0:t.position)||\"fixed\",parent:(null==(t=e.find(e=>e.parent))?void 0:t.parent)||null,tooltipSpace:(null==(t=e.find(e=>e.tooltipSpace))?void 0:t.tooltipSpace)||Lt}}}),Zn=new WeakMap,Xn=H.fromClass(class{constructor(e){this.view=e,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;var t=e.state.facet(Qn);this.position=t.position,this.parent=t.parent,this.classes=e.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=\"function\"==typeof ResizeObserver?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Jn(e,ta,(e,t)=>this.createTooltip(e,t),e=>{this.resizeObserver&&this.resizeObserver.unobserve(e.dom),e.dom.remove()}),this.above=this.manager.tooltips.map(e=>!!e.above),this.intersectionObserver=\"function\"==typeof IntersectionObserver?new IntersectionObserver(e=>{Date.now()>this.lastTransaction-50&&0<e.length&&e[e.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),e.win.addEventListener(\"resize\",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement(\"div\"),this.container.style.position=\"relative\",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(var e of this.manager.tooltipViews)this.intersectionObserver.observe(e.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(e){e.transactions.length&&(this.lastTransaction=Date.now());var t=this.manager.update(e,this.above);t&&this.observeIntersection();let r=t||e.geometryChanged;t=e.state.facet(Qn);if(t.position!=this.position&&!this.madeAbsolute){this.position=t.position;for(var n of this.manager.tooltipViews)n.dom.style.position=this.position;r=!0}if(t.parent!=this.parent){this.parent&&this.container.remove(),this.parent=t.parent,this.createContainer();for(var a of this.manager.tooltipViews)this.container.appendChild(a.dom);r=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);r&&this.maybeMeasure()}createTooltip(e,t){var r=e.create(this.view),t=t?t.dom:null;return r.dom.classList.add(\"cm-tooltip\"),e.arrow&&!r.dom.querySelector(\".cm-tooltip > .cm-tooltip-arrow\")&&((e=document.createElement(\"div\")).className=\"cm-tooltip-arrow\",r.dom.appendChild(e)),r.dom.style.position=this.position,r.dom.style.top=Yn,r.dom.style.left=\"0px\",this.container.insertBefore(r.dom,t),r.mount&&r.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(r.dom),r}destroy(){var e,t,r;this.view.win.removeEventListener(\"resize\",this.measureSoon);for(r of this.manager.tooltipViews)r.dom.remove(),null!=(e=r.destroy)&&e.call(r);this.parent&&this.container.remove(),null!=(t=this.resizeObserver)&&t.disconnect(),null!=(t=this.intersectionObserver)&&t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let e=1,t=1,r=!1;\"fixed\"==this.position&&this.manager.tooltipViews.length&&(n=this.manager.tooltipViews[0][\"dom\"],S.gecko?r=n.offsetParent!=this.container.ownerDocument.body:n.style.top==Yn&&\"0px\"==n.style.left&&(n=n.getBoundingClientRect(),r=1<Math.abs(n.top+1e4)||1<Math.abs(n.left))),!r&&\"absolute\"!=this.position||(this.parent?(n=this.parent.getBoundingClientRect()).width&&n.height&&(e=n.width/this.parent.offsetWidth,t=n.height/this.parent.offsetHeight):{scaleX:e,scaleY:t}=this.view.viewState);var n=this.view.scrollDOM.getBoundingClientRect(),a=qe(this.view);return{visible:{left:n.left+a.left,top:n.top+a.top,right:n.right-a.right,bottom:n.bottom-a.bottom},parent:(this.parent?this.container:this.view.dom).getBoundingClientRect(),pos:this.manager.tooltips.map((e,t)=>{t=this.manager.tooltipViews[t];return t.getCoords?t.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(Qn).tooltipSpace(this.view),scaleX:e,scaleY:t,makeAbsolute:r}}writeMeasure(i){if(i.makeAbsolute){this.madeAbsolute=!0,this.position=\"absolute\";for(var e of this.manager.tooltipViews)e.dom.style.position=\"absolute\"}var{visible:t,space:o,scaleX:s,scaleY:l}=i,c=[];for(let a=0;a<this.manager.tooltips.length;a++){var u=this.manager.tooltips[a],d=this.manager.tooltipViews[a],p=d[\"dom\"],f=i.pos[a],h=i.size[a];if(!f||!1!==u.clip&&(f.bottom<=Math.max(t.top,o.top)||f.top>=Math.min(t.bottom,o.bottom)||f.right<Math.max(t.left,o.left)-.1||f.left>Math.min(t.right,o.right)+.1))p.style.top=Yn;else{var m=u.arrow?d.dom.querySelector(\".cm-tooltip-arrow\"):null,g=m?7:0;let e=h.right-h.left,t=null!=(_=Zn.get(d))?_:h.bottom-h.top;var _=d.offset||ea,y=this.view.textDirection==O.Direction.LTR,T=h.width>o.right-o.left?y?o.left:o.right-h.width:y?Math.max(o.left,Math.min(f.left-(m?14:0)+_.x,o.right-e)):Math.min(Math.max(o.left,f.left-e+(m?14:0)-_.x),o.right-e);let r=this.above[a];h=((r=!u.strictSide&&(r?f.top-t-g-_.y<o.top:f.bottom+t+g+_.y>o.bottom)&&r==o.bottom-f.bottom>f.top-o.top?this.above[a]=!r:r)?f.top-o.top:o.bottom-f.bottom)-g;if(h<t&&!1!==d.resize){if(h<this.view.defaultLineHeight){p.style.top=Yn;continue}Zn.set(d,t),p.style.height=(t=h)/l+\"px\"}else p.style.height&&(p.style.height=\"\");let n=r?f.top-t-g-_.y:f.bottom+g+_.y;var v=T+e;if(!0!==d.overlap)for(var b of c)b.left<v&&b.right>T&&b.top<n+t&&b.bottom>n&&(n=r?b.top-t-2-g:b.bottom+g+2);\"absolute\"==this.position?(p.style.top=(n-i.parent.top)/l+\"px\",Ft(p,(T-i.parent.left)/s)):(p.style.top=n/l+\"px\",Ft(p,T/s)),m&&(u=f.left+(y?_.x:-_.x)-(T+14-7),m.style.left=u/s+\"px\"),!0!==d.overlap&&c.push({left:T,top:n,right:v,bottom:n+t}),p.classList.toggle(\"cm-tooltip-above\",r),p.classList.toggle(\"cm-tooltip-below\",!r),d.positioned&&d.positioned(i.space)}}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView)&&(this.inView=this.view.inView,!this.inView))for(var e of this.manager.tooltipViews)e.dom.style.top=Yn}},{eventObservers:{scroll(){this.maybeMeasure()}}});function Ft(e,t){var r=parseInt(e.style.left,10);(isNaN(r)||1<Math.abs(t-r))&&(e.style.left=t+\"px\")}Ee=Y.baseTheme({\".cm-tooltip\":{zIndex:500,boxSizing:\"border-box\"},\"&light .cm-tooltip\":{border:\"1px solid #bbb\",backgroundColor:\"#f5f5f5\"},\"&light .cm-tooltip-section:not(:first-child)\":{borderTop:\"1px solid #bbb\"},\"&dark .cm-tooltip\":{backgroundColor:\"#333338\",color:\"white\"},\".cm-tooltip-arrow\":{height:\"7px\",width:\"14px\",position:\"absolute\",zIndex:-1,overflow:\"hidden\",\"&:before, &:after\":{content:\"''\",position:\"absolute\",width:0,height:0,borderLeft:\"7px solid transparent\",borderRight:\"7px solid transparent\"},\".cm-tooltip-above &\":{bottom:\"-7px\",\"&:before\":{borderTop:\"7px solid #bbb\"},\"&:after\":{borderTop:\"7px solid #f5f5f5\",bottom:\"1px\"}},\".cm-tooltip-below &\":{top:\"-7px\",\"&:before\":{borderBottom:\"7px solid #bbb\"},\"&:after\":{borderBottom:\"7px solid #f5f5f5\",top:\"1px\"}}},\"&dark .cm-tooltip .cm-tooltip-arrow\":{\"&:before\":{borderTopColor:\"#333338\",borderBottomColor:\"#333338\"},\"&:after\":{borderTopColor:\"transparent\",borderBottomColor:\"transparent\"}}});const ea={x:0,y:0},ta=y.Facet.define({enables:[Xn,Ee]}),ra=y.Facet.define({combine:e=>e.reduce((e,t)=>e.concat(t),[])});class na{static create(e){return new na(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement(\"div\"),this.dom.classList.add(\"cm-tooltip-hover\"),this.manager=new Jn(e,ra,(e,t)=>this.createHostedView(e,t),e=>e.dom.remove())}createHostedView(e,t){e=e.create(this.view);return e.dom.classList.add(\"cm-tooltip-section\"),this.dom.insertBefore(e.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&e.mount&&e.mount(this.view),e}mount(e){for(var t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(var t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e,t;for(t of this.manager.tooltipViews)null!=(e=t.destroy)&&e.call(t)}passProp(e){let t=void 0;for(var r of this.manager.tooltipViews){r=r[e];if(void 0!==r)if(void 0===t)t=r;else if(t!==r)return}return t}get offset(){return this.passProp(\"offset\")}get getCoords(){return this.passProp(\"getCoords\")}get overlap(){return this.passProp(\"overlap\")}get resize(){return this.passProp(\"resize\")}}const aa=ta.compute([ra],e=>{e=e.facet(ra);return 0===e.length?null:{pos:Math.min(...e.map(e=>e.pos)),end:Math.max(...e.map(e=>{var t;return null!=(t=e.end)?t:e.pos})),create:na.create,above:e[0].above,arrow:e.some(e=>e.arrow)}});class ia{constructor(e,t,r,n,a){this.view=e,this.source=t,this.field=r,this.setHover=n,this.hoverTime=a,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener(\"mouseleave\",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener(\"mousemove\",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){var e;this.hoverTimeout=-1,this.active.length||((e=Date.now()-this.lastMove.time)<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover())}startHover(){clearTimeout(this.restartTimeout);let{view:n,lastMove:t}=this;var a=n.docView.nearest(t.target);if(a){let r,e=1;if(a instanceof R)r=a.posAtStart;else{if(null==(r=n.posAtCoords(t)))return;a=n.coordsAtPos(r);if(!a||t.y<a.top||t.y>a.bottom||t.x<a.left-n.defaultCharacterWidth||t.x>a.right+n.defaultCharacterWidth)return;var i=n.bidiSpans(n.state.doc.lineAt(r)).find(e=>e.from<=r&&e.to>=r),i=i&&i.dir==O.Direction.RTL?-1:1;e=t.x<a.left?-i:i}a=this.source(n,r,e);if(null!=a&&a.then){let t=this.pending={pos:r};a.then(e=>{this.pending==t&&(this.pending=null,!e||Array.isArray(e)&&!e.length||n.dispatch({effects:this.setHover.of(Array.isArray(e)?e:[e])}))},e=>A(n.state,e,\"hover tooltip\"))}else!a||Array.isArray(a)&&!a.length||n.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}}get tooltip(){var e=this.view.plugin(Xn),t=e?e.manager.tooltips.findIndex(e=>e.create==na.create):-1;return-1<t?e.manager.tooltipViews[t]:null}mousemove(e){this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));var{active:t,tooltip:r}=this;(t.length&&r&&!function(e,t){let{left:r,right:n,top:a,bottom:i}=e.getBoundingClientRect(),o;(o=e.querySelector(\".cm-tooltip-arrow\"))&&(e=o.getBoundingClientRect(),a=Math.min(e.top,a),i=Math.max(e.bottom,i));return t.clientX>=r-oa&&t.clientX<=n+oa&&t.clientY>=a-oa&&t.clientY<=i+oa}(r.dom,e)||this.pending)&&(r=(t[0]||this.pending)[\"pos\"],r==(t=null!=(t=null==(t=t[0])?void 0:t.end)?t:r)?this.view.posAtCoords(this.lastMove)!=r:!function(e,t,r,n,a){var i=e.scrollDOM.getBoundingClientRect(),o=e.documentTop+e.documentPadding.top+e.contentHeight;if(i.left>n||i.right<n||i.top>a||Math.min(i.bottom,o)<a)return;i=e.posAtCoords({x:n,y:a},!1);return t<=i&&i<=r}(this.view,r,t,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;var t=this[\"active\"];t.length&&(t=this[\"tooltip\"],t&&t.dom.contains(e.relatedTarget)?this.watchTooltipLeave(t.dom):this.view.dispatch({effects:this.setHover.of([])}))}watchTooltipLeave(t){let r=e=>{t.removeEventListener(\"mouseleave\",r),this.active.length&&!this.view.dom.contains(e.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};t.addEventListener(\"mouseleave\",r)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener(\"mouseleave\",this.mouseleave),this.view.dom.removeEventListener(\"mousemove\",this.mousemove)}}const oa=4;const sa=y.StateEffect.define();Se=sa.of(null);const la=y.Facet.define({combine(e){let t,r;for(var n of e)t=t||n.topContainer,r=r||n.bottomContainer;return{topContainer:t,bottomContainer:r}}});function Ut(e,t){e=e.plugin(ca),t=e?e.specs.indexOf(t):-1;return-1<t?e.panels[t]:null}const ca=H.fromClass(class{constructor(t){this.input=t.state.facet(da),this.specs=this.input.filter(e=>e),this.panels=this.specs.map(e=>e(t));var e,r=t.state.facet(la);this.top=new ua(t,!0,r.topContainer),this.bottom=new ua(t,!1,r.bottomContainer),this.top.sync(this.panels.filter(e=>e.top)),this.bottom.sync(this.panels.filter(e=>!e.top));for(e of this.panels)e.dom.classList.add(\"cm-panel\"),e.mount&&e.mount()}update(r){var e=r.state.facet(la),e=(this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new ua(r.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new ua(r.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses(),r.state.facet(da));if(e!=this.input){var n,t,e=e.filter(e=>e),a=[],i=[],o=[],s=[];for(n of e){let e=this.specs.indexOf(n),t;e<0?(t=n(r.view),s.push(t)):(t=this.panels[e]).update&&t.update(r),a.push(t),(t.top?i:o).push(t)}this.specs=e,this.panels=a,this.top.sync(i),this.bottom.sync(o);for(t of s)t.dom.classList.add(\"cm-panel\"),t.mount&&t.mount()}else for(var l of this.panels)l.update&&l.update(r)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Y.scrollMargins.of(e=>{e=e.plugin(t);return e&&{top:e.top.scrollMargin(),bottom:e.bottom.scrollMargin()}})});class ua{constructor(e,t,r){this.view=e,this.top=t,this.container=r,this.dom=void 0,this.classes=\"\",this.panels=[],this.syncClasses()}sync(e){for(var t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(0==this.panels.length)this.dom&&(this.dom.remove(),this.dom=void 0);else{var t,r;this.dom||(this.dom=document.createElement(\"div\"),this.dom.className=this.top?\"cm-panels cm-panels-top\":\"cm-panels cm-panels-bottom\",this.dom.style[this.top?\"top\":\"bottom\"]=\"0\",(t=this.container||this.view.dom).insertBefore(this.dom,this.top?t.firstChild:null));let e=this.dom.firstChild;for(r of this.panels)if(r.dom.parentNode==this.dom){for(;e!=r.dom;)e=Bt(e);e=e.nextSibling}else this.dom.insertBefore(r.dom,e);for(;e;)e=Bt(e)}}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(this.container&&this.classes!=this.view.themeClasses){for(var e of this.classes.split(\" \"))e&&this.container.classList.remove(e);for(var t of(this.classes=this.view.themeClasses).split(\" \"))t&&this.container.classList.add(t)}}}function Bt(e){var t=e.nextSibling;return e.remove(),t}const da=y.Facet.define({enables:ca});const pa=y.StateField.define({create(){return[]},update(e,r){for(let t of r.effects)t.is(fa)?e=[t.value].concat(e):t.is(ha)&&(e=e.filter(e=>e!=t.value));return e},provide:t=>da.computeN([t],e=>e.field(t))}),fa=y.StateEffect.define(),ha=y.StateEffect.define();class J extends y.RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}J.prototype.elementClass=\"\",J.prototype.toDOM=void 0,J.prototype.mapMode=y.MapMode.TrackBefore,J.prototype.startSide=J.prototype.endSide=-1,J.prototype.point=!0;const ma=y.Facet.define(),ga=y.Facet.define(),_a={class:\"\",renderEmptyElements:!1,elementStyle:\"\",markers:()=>y.RangeSet.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},ya=y.Facet.define();const Ta=y.Facet.define({combine:e=>e.some(e=>e)});function jt(e){var t=[va];return e&&!1===e.fixed&&t.push(Ta.of(!0)),t}const va=H.fromClass(class{constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=document.createElement(\"div\"),this.dom.className=\"cm-gutters\",this.dom.setAttribute(\"aria-hidden\",\"true\"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+\"px\",this.gutters=t.state.facet(ya).map(e=>new Ea(t,e));for(var e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!t.state.facet(Ta),this.fixed&&(this.dom.style.position=\"sticky\"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}update(e){var t,r;this.updateGutters(e)&&(r=this.prevViewport,t=e.view.viewport,r=Math.min(r.to,t.to)-Math.max(r.from,t.from),this.syncGutters(r<.8*(t.to-t.from))),e.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+\"px\"),this.view.state.facet(Ta)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?\"sticky\":\"\"),this.prevViewport=e.view.viewport}syncGutters(e){var t=this.dom.nextSibling,r=(e&&this.dom.remove(),y.RangeSet.iter(this.view.state.facet(ma),this.view.viewport.from));let n=[];var a,i,o=this.gutters.map(e=>new ba(e,this.view.viewport,-this.view.documentPadding.top));for(a of this.view.viewportLineBlocks)if(n.length&&(n=[]),Array.isArray(a.type)){let e=!0;for(var s of a.type)if(s.type==O.BlockType.Text&&e){Gt(r,n,s.from);for(var l of o)l.line(this.view,s,n);e=!1}else if(s.widget)for(var c of o)c.widget(this.view,s)}else if(a.type==O.BlockType.Text){Gt(r,n,a.from);for(var u of o)u.line(this.view,a,n)}else if(a.widget)for(var d of o)d.widget(this.view,a);for(i of o)i.finish();e&&this.view.scrollDOM.insertBefore(this.dom,t)}updateGutters(e){var t=e.startState.facet(ya),r=e.state.facet(ya);let n=e.docChanged||e.heightChanged||e.viewportChanged||!y.RangeSet.eq(e.startState.facet(ma),e.state.facet(ma),e.view.viewport.from,e.view.viewport.to);if(t==r)for(var a of this.gutters)a.update(e)&&(n=!0);else{n=!0;var i,o,s,l=[];for(i of r){var c=t.indexOf(i);c<0?l.push(new Ea(this.view,i)):(this.gutters[c].update(e),l.push(this.gutters[c]))}for(o of this.gutters)o.dom.remove(),l.indexOf(o)<0&&o.destroy();for(s of l)this.dom.appendChild(s.dom);this.gutters=l}return n}destroy(){for(var e of this.gutters)e.destroy();this.dom.remove()}},{provide:r=>Y.scrollMargins.of(e=>{var t=e.plugin(r);return t&&0!=t.gutters.length&&t.fixed?e.textDirection==O.Direction.LTR?{left:t.dom.offsetWidth*e.scaleX}:{right:t.dom.offsetWidth*e.scaleX}:null})});function Ht(e){return Array.isArray(e)?e:[e]}function Gt(e,t,r){for(;e.value&&e.from<=r;)e.from==r&&t.push(e.value),e.next()}class ba{constructor(e,t,r){this.gutter=e,this.height=r,this.i=0,this.cursor=y.RangeSet.iter(e.markers,t.from)}addElement(e,t,r){var n,a=this[\"gutter\"],i=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;this.i==a.elements.length?(n=new Sa(e,o,i,r),a.elements.push(n),a.dom.appendChild(n.dom)):a.elements[this.i].update(e,o,i,r),this.height=t.bottom,this.i++}line(e,t,r){let n=[];Gt(this.cursor,n,t.from),r.length&&(n=n.concat(r));r=this.gutter.config.lineMarker(e,t,n),r&&n.unshift(r),r=this.gutter;0==n.length&&!r.config.renderEmptyElements||this.addElement(e,t,n)}widget(e,t){let r=this.gutter.config.widgetMarker(e,t.widget,t),n=r?[r]:null;for(var a of e.state.facet(ga)){a=a(e,t.widget,t);a&&(n=n||[]).push(a)}n&&this.addElement(e,t,n)}finish(){for(var e=this.gutter;e.elements.length>this.i;){var t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class Ea{constructor(i,o){this.view=i,this.config=o,this.elements=[],this.spacer=null,this.dom=document.createElement(\"div\"),this.dom.className=\"cm-gutter\"+(this.config.class?\" \"+this.config.class:\"\");for(let a in o.domEventHandlers)this.dom.addEventListener(a,e=>{let t=e.target,r;if(t!=this.dom&&this.dom.contains(t)){for(;t.parentNode!=this.dom;)t=t.parentNode;var n=t.getBoundingClientRect();r=(n.top+n.bottom)/2}else r=e.clientY;n=i.lineBlockAtHeight(r-i.documentTop);o.domEventHandlers[a](i,n,e)&&e.preventDefault()});this.markers=Ht(o.markers(i)),o.initialSpacer&&(this.spacer=new Sa(i,0,0,[o.initialSpacer(i)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+=\"visibility: hidden; pointer-events: none\")}update(e){var t=this.markers,r=(this.markers=Ht(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer&&(r=this.config.updateSpacer(this.spacer.markers[0],e))!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[r]),e.view.viewport);return!y.RangeSet.eq(this.markers,t,r.from,r.to)||!!this.config.lineMarkerChange&&this.config.lineMarkerChange(e)}destroy(){for(var e of this.elements)e.destroy()}}class Sa{constructor(e,t,r,n){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement(\"div\"),this.dom.className=\"cm-gutterElement\",this.update(e,t,r,n)}update(e,t,r,n){this.height!=t&&(this.height=t,this.dom.style.height=t+\"px\"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+\"px\":\"\"),function(t,r){if(t.length!=r.length)return;for(let e=0;e<t.length;e++)if(!t[e].compare(r[e]))return;return 1}(this.markers,n)||this.setMarkers(e,n)}setMarkers(i,o){let s=\"cm-gutterElement\",l=this.dom.firstChild;for(let e=0,a=0;;){let t=a,r=e<o.length?o[e++]:null,n=!1;if(r){var c=r.elementClass;c&&(s+=\" \"+c);for(let e=a;e<this.markers.length;e++)if(this.markers[e].compare(r)){t=e,n=!0;break}}else t=this.markers.length;for(;a<t;){var u=this.markers[a++];u.toDOM&&(u.destroy(l),u=l.nextSibling,l.remove(),l=u)}if(!r)break;r.toDOM&&(n?l=l.nextSibling:this.dom.insertBefore(r.toDOM(i),l)),n&&a++}this.dom.className=s,this.markers=o}destroy(){this.setMarkers(null,[])}}const Aa=y.Facet.define(),Oa=y.Facet.define(),Ca=y.Facet.define({combine(e){return y.combineConfig(e,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,t){var r,i=Object.assign({},e);for(r in t){let n=i[r],a=t[r];i[r]=n?(e,t,r)=>n(e,t,r)||a(e,t,r):a}return i}})}});class wa extends J{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Vt(e,t){return e.state.facet(Ca).formatNumber(t,e.state)}const ka=ya.compute([Ca],e=>({class:\"cm-lineNumbers\",renderEmptyElements:!1,markers(e){return e.state.facet(Aa)},lineMarker(e,t,r){return r.some(e=>e.toDOM)?null:new wa(Vt(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,r)=>{for(var n of e.state.facet(Oa)){n=n(e,t,r);if(n)return n}return null},lineMarkerChange:e=>e.startState.facet(Ca)!=e.state.facet(Ca),initialSpacer(e){return new wa(Vt(e,qt(e.state.doc.lines)))},updateSpacer(e,t){t=Vt(t.view,qt(t.view.state.doc.lines));return t==e.number?e:new wa(t)},domEventHandlers:e.facet(Ca).domEventHandlers}));function qt(e){let t=9;for(;t<e;)t=10*t+9;return t}const Ia=new class extends J{constructor(){super(...arguments),this.elementClass=\"cm-activeLineGutter\"}},Ra=ma.compute([\"selection\"],e=>{let t=[],r=-1;for(var n of e.selection.ranges){n=e.doc.lineAt(n.head).from;n>r&&(r=n,t.push(Ia.range(n)))}return y.RangeSet.of(t)});function zt(t){return H.define(e=>({decorations:t.createDeco(e),update(e){this.decorations=t.updateDeco(e,this.decorations)}}),{decorations:e=>e.decorations})}const Na=M.mark({class:\"cm-highlightTab\"}),Ma=M.mark({class:\"cm-highlightSpace\"}),Pa=zt(new xn({regexp:/\\t| /g,decoration:e=>\"\\t\"==e[0]?Na:Ma,boundary:/\\S/}));const Da=zt(new xn({regexp:/\\s+$/g,decoration:M.mark({class:\"cm-trailingSpace\"})}));Ce={HeightMap:W,HeightOracle:Kr,MeasuredHeights:Yr,QueryType:h,ChangedRange:G,computeOrder:je,moveVisually:Ge,clearHeightChangeFlag:mt,getHeightChangeFlag:()=>_};O.BidiSpan=U,O.BlockInfo=z,O.Decoration=M,O.EditorView=Y,O.GutterMarker=J,O.MatchDecorator=xn,O.RectangleMarker=On,O.ViewPlugin=H,O.ViewUpdate=Mr,O.WidgetType=N,O.__test=Ce,O.closeHoverTooltips=Se,O.crosshairCursor=function(e={}){let[t,r]=$n[e.key||\"Alt\"],n=H.fromClass(class{constructor(e){this.view=e,this.isDown=!1}set(e){this.isDown!=e&&(this.isDown=e,this.view.update([]))}},{eventObservers:{keydown(e){this.set(e.keyCode==t||r(e))},keyup(e){e.keyCode!=t&&r(e)||this.set(!1)},mousemove(e){this.set(r(e))}}});return[n,Y.contentAttributes.of(e=>{return null!=(e=e.plugin(n))&&e.isDown?Kn:null})]},O.drawSelection=function(e={}){return[kn.of(e),In,Rn,Nn,_r.of(!0)]},O.dropCursor=function(){return[Pn,Dn]},O.getDialog=function(e,t){var r;for(r of e.state.field(pa,!1)||[]){var n=Ut(e,r);if(n&&n.dom.classList.contains(t))return n}return null},O.getDrawSelectionConfig=function(e){return e.facet(kn)},O.getPanel=Ut,O.getTooltip=function(e,t){return!(e=e.plugin(Xn))||(t=e.manager.tooltips.indexOf(t))<0?null:e.manager.tooltipViews[t]},O.gutter=function(e){return[jt(),ya.of({..._a,...e})]},O.gutterLineClass=ma,O.gutterWidgetClass=ga,O.gutters=jt,O.hasHoverTooltips=function(e){return e.facet(ra).some(e=>e)},O.highlightActiveLine=function(){return zn},O.highlightActiveLineGutter=function(){return Ra},O.highlightSpecialChars=function(e={}){return[Bn.of(e),t=t||H.fromClass(class{constructor(e){this.view=e,this.decorations=M.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(e.state.facet(Bn)),this.decorations=this.decorator.createDeco(e)}makeDecorator(a){return new xn({regexp:a.specialChars,decoration:(e,t,r)=>{var n=t.state[\"doc\"],e=y.codePointAt(e[0],0);return 9==e?(n=n.lineAt(r),t=t.state.tabSize,r=y.countColumn(n.text,t,r-n.from),M.replace({widget:new Gn((t-r%t)*this.view.defaultCharacterWidth/this.view.scaleX)})):this.decorationCache[e]||(this.decorationCache[e]=M.replace({widget:new Hn(a,e)}))},boundary:a.replaceTabs?void 0:/[^]/})}update(e){var t=e.state.facet(Bn);e.startState.facet(Bn)!=t?(this.decorator=this.makeDecorator(t),this.decorations=this.decorator.createDeco(e.view)):this.decorations=this.decorator.updateDeco(e,this.decorations)}},{decorations:e=>e.decorations})]},O.highlightTrailingWhitespace=function(){return Da},O.highlightWhitespace=function(){return Pa},O.hoverTooltip=function(t,s={}){let l=y.StateEffect.define(),r=y.StateField.define({create(){return[]},update(e,t){if(e.length&&(s.hideOnChange&&(t.docChanged||t.selection)?e=[]:s.hideOn&&(e=e.filter(e=>!s.hideOn(t,e))),t.docChanged)){var r,n=[];for(r of e){var a,i=t.changes.mapPos(r.pos,-1,y.MapMode.TrackDel);null!=i&&((a=Object.assign(Object.create(null),r)).pos=i,null!=a.end&&(a.end=t.changes.mapPos(a.end)),n.push(a))}e=n}for(var o of t.effects)o.is(l)&&(e=o.value),o.is(sa)&&(e=[]);return e},provide:e=>ra.from(e)});return{active:r,extension:[r,H.define(e=>new ia(e,t,r,l,s.hoverTime||300)),aa]}},O.keymap=En,O.layer=Rt,O.lineNumberMarkers=Aa,O.lineNumberWidgetMarker=Oa,O.lineNumbers=function(e={}){return[Ca.of(e),jt(),ka]},O.logException=A,O.panels=function(e){return e?[la.of(e)]:[]},O.placeholder=function(t){var e=H.fromClass(class{constructor(e){this.view=e,this.placeholder=t?M.set([M.widget({widget:new Wn(t),side:1}).range(0)]):M.none}get decorations(){return this.view.state.doc.length?M.none:this.placeholder}},{decorations:e=>e.decorations});return\"string\"==typeof t?[e,Y.contentAttributes.of({\"aria-placeholder\":t})]:e},O.rectangularSelection=function(e){let r=(null==e?void 0:e.eventFilter)||(e=>e.altKey&&0==e.button);return Y.mouseSelectionStyle.of((e,t)=>r(t)?xt(e,t):null)},O.repositionTooltips=function(e){(e=e.plugin(Xn))&&e.maybeMeasure()},O.runScopeHandlers=function(e,t,r){return wt(Ct(e.state),t,e,r)},O.scrollPastEnd=function(){return[Vn,Or.of(e=>{return(null==(e=e.plugin(Vn))?void 0:e.attrs)||null})]},O.showDialog=function(t,l){let c;var e=new Promise(e=>c=e);let r=e=>{{var n=e,a=l,i=c;let t=a.content?a.content(n,()=>s(null)):null;t||(t=X(\"form\"),a.input?(e=X(\"input\",a.input),/^(text|password|number|email|tel|url)$/.test(e.type)&&e.classList.add(\"cm-textfield\"),e.name||(e.name=\"input\"),t.appendChild(X(\"label\",(a.label||\"\")+\": \",e))):t.appendChild(document.createTextNode(a.label||\"\")),t.appendChild(document.createTextNode(\" \")),t.appendChild(X(\"button\",{class:\"cm-button\",type:\"submit\"},a.submitLabel||\"OK\")));var o=\"FORM\"==t.nodeName?[t]:t.querySelectorAll(\"form\");for(let e=0;e<o.length;e++){let t=o[e];t.addEventListener(\"keydown\",e=>{27==e.keyCode?(e.preventDefault(),s(null)):13==e.keyCode&&(e.preventDefault(),s(t))}),t.addEventListener(\"submit\",e=>{e.preventDefault(),s(t)})}let r=X(\"div\",t,X(\"button\",{onclick:()=>s(null),\"aria-label\":n.state.phrase(\"close\"),class:\"cm-dialog-close\",type:\"button\"},[\"×\"]));function s(e){r.contains(r.ownerDocument.activeElement)&&n.focus(),i(e)}return a.class&&(r.className=a.class),r.classList.add(\"cm-dialog\"),{dom:r,top:a.top,mount:()=>{if(a.focus){let e;(e=\"string\"==typeof a.focus?t.querySelector(a.focus):t.querySelector(\"input\")||t.querySelector(\"button\"))&&\"select\"in e?e.select():e&&\"focus\"in e&&e.focus()}}}}},n=(t.state.field(pa,!1)?t.dispatch({effects:fa.of(r)}):t.dispatch({effects:y.StateEffect.appendConfig.of(pa.init(()=>[r]))}),ha.of(r));return{close:n,result:e.then(e=>{return(t.win.queueMicrotask||(e=>t.win.setTimeout(e,10)))(()=>{-1<t.state.field(pa).indexOf(r)&&t.dispatch({effects:n})}),e})}},O.showPanel=da,O.showTooltip=ta,O.tooltips=function(e={}){return Qn.of(e)}}}return dR}var ER,Ye={},SR={};function AR(){if(!ER){ER=1;{var f=SR;const i=1024;let t=0;class v{constructor(e,t){this.from=e,this.to=t}}class W{constructor(e={}){this.id=t++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error(\"This node type doesn't define a deserialize function\")})}add(t){if(this.perNode)throw new RangeError(\"Can't add per-node props to node types\");return\"function\"!=typeof t&&(t=E.match(t)),e=>{e=t(e);return void 0===e?null:[this,e]}}}W.closedBy=new W({deserialize:e=>e.split(\" \")}),W.openedBy=new W({deserialize:e=>e.split(\" \")}),W.group=new W({deserialize:e=>e.split(\" \")}),W.isolate=new W({deserialize:e=>{if(e&&\"rtl\"!=e&&\"ltr\"!=e&&\"auto\"!=e)throw new RangeError(\"Invalid value for isolate: \"+e);return e||\"auto\"}}),W.contextHash=new W({perNode:!0}),W.lookAhead=new W({perNode:!0}),W.mounted=new W({perNode:!0});class b{constructor(e,t,r){this.tree=e,this.overlay=t,this.parser=r}static get(e){return e&&e.props&&e.props[W.mounted.id]}}const s=Object.create(null);class E{constructor(e,t,r,n=0){this.name=e,this.props=t,this.id=r,this.flags=n}static define(e){var t=e.props&&e.props.length?Object.create(null):s,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(null==e.name?8:0),n=new E(e.name||\"\",t,e.id,r);if(e.props)for(var a of e.props)if(a=Array.isArray(a)?a:a(n)){if(a[0].perNode)throw new RangeError(\"Can't store a per-node prop on a node type\");t[a[0].id]=a[1]}return n}prop(e){return this.props[e.id]}get isTop(){return 0<(1&this.flags)}get isSkipped(){return 0<(2&this.flags)}get isError(){return 0<(4&this.flags)}get isAnonymous(){return 0<(8&this.flags)}is(e){var t;return\"string\"==typeof e?this.name==e||!!(t=this.prop(W.group))&&-1<t.indexOf(e):this.id==e}static match(e){let a=Object.create(null);for(var t in e)for(var r of t.split(\" \"))a[r]=e[t];return r=>{for(let e=r.prop(W.group),t=-1;t<(e?e.length:0);t++){var n=a[t<0?r.name:e[t]];if(n)return n}}}}E.none=new E(\"\",Object.create(null),0,8);const a=new WeakMap,r=new WeakMap;var e;f.IterMode=void 0,(e=f.IterMode||(f.IterMode={}))[e.ExcludeBuffers=1]=\"ExcludeBuffers\",e[e.IncludeAnonymous=2]=\"IncludeAnonymous\",e[e.IgnoreMounts=4]=\"IgnoreMounts\",e[e.IgnoreOverlays=8]=\"IgnoreOverlays\";class ${constructor(e,t,r,n,a){if(this.type=e,this.children=t,this.positions=r,this.length=n,this.props=null,a&&a.length){this.props=Object.create(null);for(var[i,o]of a)this.props[\"number\"==typeof i?i:i.id]=o}}toString(){var e,t=b.get(this);if(t&&!t.overlay)return t.tree.toString();let r=\"\";for(e of this.children){var n=e.toString();n&&(r&&(r+=\",\"),r+=n)}return this.type.name?(/\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(r.length?\"(\"+r+\")\":\"\"):r}cursor(e=0){return new w(this.topNode,e)}cursorAt(e,t=0,r){var n=a.get(this)||this.topNode,n=new w(n);return n.moveTo(e,t),a.set(this,n._tree),n}get topNode(){return new S(this,0,0,null)}resolve(e,t=0){e=c(a.get(this)||this.topNode,e,t,!1);return a.set(this,e),e}resolveInner(e,t=0){e=c(r.get(this)||this.topNode,e,t,!0);return r.set(this,e),e}resolveStack(e,n=0){{var a,i=e,o=n,s,l;let t=this.resolveInner(i,o),r=null;for(let e=t instanceof S?t:t.context.parent;e;e=e.parent)e.index<0?(s=e.parent,(r=r||[t]).push(s.resolve(i,o)),e=s):(s=b.get(e.tree))&&s.overlay&&s.overlay[0].from<=i&&s.overlay[s.overlay.length-1].to>=i&&(l=new S(s.tree,s.overlay[0].from+e.from,-1,e),(r=r||[t]).push(c(l,i,o,!1)));return r?u(r):t}}iterate(e){for(var{enter:t,leave:r,from:n=0,to:a=this.length}=e,e=e.mode||0,i=0<(e&f.IterMode.IncludeAnonymous),o=this.cursor(e|f.IterMode.IncludeAnonymous);;){let e=!1;if(o.from<=a&&o.to>=n&&(!i&&o.type.isAnonymous||!1!==t(o))){if(o.firstChild())continue;e=!0}for(;e&&r&&(i||!o.type.isAnonymous)&&r(o),!o.nextSibling();){if(!o.parent())return;e=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){var e=[];if(this.props)for(var t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:z(E.none,this.children,this.positions,0,this.children.length,0,this.length,(e,t,r)=>new $(this.type,e,t,r,this.propValues),e.makeTree||((e,t,r)=>new $(E.none,e,t,r)))}static build(t){{var r=t;let{buffer:e,nodeSet:D,maxBufferLength:x=i,reused:L=[],minRepeatType:F=D.types.length}=r,U=Array.isArray(e)?new l(e,e.length):e,B=D.types,j=0,H=0;function G(r,n,e,t,a,i){for(var o,s,l,{id:c,start:u,end:d,size:p}=U,f=H,h=j;p<0;){if(U.next(),-1==p)return o=L[c],e.push(o),void t.push(u-r);if(-3==p)return void(j=c);if(-4==p)return void(H=c);throw new RangeError(\"Unrecognized record size: \"+p)}let m=B[c],g,_,y=u-r;if(d-u<=x&&(_=function(e,t){let r=U.fork(),n=0,a=0,i=0,o=r.end-x,s={size:0,start:0,skip:0};e:for(var l=r.pos-e;r.pos>l;){var c=r.size;if(r.id==t&&0<=c)s.size=n,s.start=a,s.skip=i,i+=4,n+=4,r.next();else{var u=r.pos-c;if(c<0||u<l||r.start<o)break;let e=r.id>=F?4:0;var d=r.start;for(r.next();r.pos>u;){if(r.size<0){if(-3!=r.size)break e;e+=4}else r.id>=F&&(e+=4);r.next()}a=d,n+=c,i+=e}}(t<0||n==e)&&(s.size=n,s.start=a,s.skip=i);return 4<s.size?s:void 0}(U.pos-n,a))){var T=new Uint16Array(_.size-_.skip);let e=U.pos-_.size,t=T.length;for(;U.pos>e;)t=function t(r,n,a){let{id:i,start:o,end:s,size:l}=U;U.next();if(0<=l&&i<F){let e=a;if(4<l){let e=U.pos-(l-4);for(;U.pos>e;)a=t(r,n,a)}n[--a]=e,n[--a]=s-r,n[--a]=o-r,n[--a]=i}else-3==l?j=i:-4==l&&(H=i);return a}(_.start,T,t);g=new K(T,d-_.start,D),y=_.start-r}else{var v=U.pos-p,b=(U.next(),[]),E=[],S=c>=F?c:-1;let e=0,t=d;for(;U.pos>v;)if(0<=S&&U.id==S&&0<=U.size)U.end<=t-x&&(V(b,E,u,e,U.end,t,S,f,h),e=b.length,t=U.end),U.next();else if(2500<i){A=void 0;O=void 0;C=void 0;w=void 0;k=void 0;I=void 0;R=void 0;N=void 0;M=void 0;P=void 0;var A=u;var O=v;var C=b;var w=E;let r=[],e=0,t=-1;for(;U.pos>O;){var{id:k,start:I,end:R,size:N}=U;if(!(4<N)){if(-1<t&&I<t)break;t<0&&(t=R-x),r.push(k,I,R),e++}U.next()}if(e){var M=new Uint16Array(4*e),P=r[r.length-2];for(let e=r.length-3,t=0;0<=e;e-=3)M[t++]=r[e],M[t++]=r[e+1]-P,M[t++]=r[e+2]-P,M[t++]=t;C.push(new K(M,r[2]-P,D)),w.push(P-A)}}else G(u,v,b,E,S,i+1);0<=S&&0<e&&e<b.length&&V(b,E,u,e,u,t,S,f,h),b.reverse(),E.reverse(),g=-1<S&&0<e?(l=h,z(s=m,b,E,0,b.length,0,d-u,n=(e,t,r)=>{let n=0,a=e.length-1,i,o;if(0<=a&&(i=e[a])instanceof $){if(!a&&i.type==s&&i.length==r)return i;(o=i.prop(W.lookAhead))&&(n=t[a]+i.length+o)}return q(s,e,t,r,n,l)},n)):q(m,b,E,d-u,f-d,h)}e.push(g),t.push(y)}function V(e,t,r,n,a,i,o,s,l){for(var c=[],u=[];e.length>n;)c.push(e.pop()),u.push(t.pop()+r-a);e.push(q(D.types[o],c,u,i-a,s-i,l)),t.push(a-r)}function q(e,t,r,n,a,i,o){return i&&(i=[W.contextHash,i],o=o?[i].concat(o):[i]),25<a&&(i=[W.lookAhead,a],o=o?[i].concat(o):[i]),new $(e,t,r,n,o)}for(var n=[],a=[];0<U.pos;)G(r.start||0,r.bufferStart||0,n,a,-1,0);return t=null!=(t=r.length)?t:n.length?a[0]+n[0].length:0,new $(B[r.topID],n.reverse(),a.reverse(),t)}}}$.empty=new $(E.none,[],[],0);class l{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new l(this.buffer,this.index)}}class K{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return E.none}toString(){var t=[];for(let e=0;e<this.buffer.length;)t.push(this.childString(e)),e=this.buffer[e+3];return t.join(\",\")}childString(e){var t=this.buffer[e],r=this.buffer[e+3];let n=this.set.types[t],a=n.name;if(/\\W/.test(a)&&!n.isError&&(a=JSON.stringify(a)),r==(e+=4))return a;for(var i=[];e<r;)i.push(this.childString(e)),e=this.buffer[e+3];return a+\"(\"+i.join(\",\")+\")\"}findChild(t,r,n,a,i){let o=this[\"buffer\"],s=-1;for(let e=t;e!=r&&!(p(i,a,o[e+1],o[e+2])&&(s=e,0<n));e=o[e+3]);return s}slice(r,n,a){var i=this.buffer;let o=new Uint16Array(n-r),s=0;for(let e=r,t=0;e<n;){o[t++]=i[e++],o[t++]=i[e++]-a;var l=o[t++]=i[e++]-a;o[t++]=i[e++]-r,s=Math.max(s,l)}return new K(o,s,this.set)}}function p(e,t,r,n){switch(e){case-2:return r<t;case-1:return t<=n&&r<t;case 0:return r<t&&t<n;case 1:return r<=t&&t<n;case 2:return t<n;case 4:return 1}}function c(r,n,a,e){for(var i;r.from==r.to||(a<1?r.from>=n:r.from>n)||(-1<a?r.to<=n:r.to<n);){var t=!e&&r instanceof S&&r.index<0?null:r.parent;if(!t)return r;r=t}var o=e?0:f.IterMode.IgnoreOverlays;if(e)for(let e=r,t=e.parent;t;t=(e=t).parent)e instanceof S&&e.index<0&&(null==(i=t.enter(n,a,o))?void 0:i.from)!=e.from&&(r=t);for(;;){var s=r.enter(n,a,o);if(!s)return r;r=s}}class d{cursor(e=0){return new w(this,e)}getChild(e,t=null,r=null){e=n(this,e,t,r);return e.length?e[0]:null}getChildren(e,t=null,r=null){return n(this,e,t,r)}resolve(e,t=0){return c(this,e,t,!1)}resolveInner(e,t=0){return c(this,e,t,!0)}matchContext(e){return o(this.parent,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),r=this;for(;t;){var n=t.lastChild;if(!n||n.to!=t.to)break;t=n.type.isError&&n.from==n.to?(r=t,n.prevSibling):n}return r}get node(){return this}get next(){return this.parent}}class S extends d{constructor(e,t,r,n){super(),this._tree=e,this.from=t,this.index=r,this._parent=n}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(r,n,a,i,o=0){for(let t=this;;){for(var{children:e,positions:s}=t._tree,l=0<n?e.length:-1;r!=l;r+=n){var c=e[r],u=s[r]+t.from;if(p(i,a,u,u+c.length))if(c instanceof K){if(!(o&f.IterMode.ExcludeBuffers)){var d=c.findChild(0,c.buffer.length,n,a-u,i);if(-1<d)return new O(new A(t,c,r,u),null,d)}}else if(o&f.IterMode.IncludeAnonymous||!c.type.isAnonymous||h(c)){let e;return o&f.IterMode.IgnoreMounts||!(e=b.get(c))||e.overlay?(d=new S(c,u,r,t),o&f.IterMode.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(n<0?c.children.length-1:0,n,a,i)):new S(e.tree,u,r,t)}}if(o&f.IterMode.IncludeAnonymous||!t.type.isAnonymous)return null;if(r=0<=t.index?t.index+n:n<0?-1:t._parent._tree.children.length,!(t=t._parent))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,r=0){let n;if(!(r&f.IterMode.IgnoreOverlays)&&(n=b.get(this._tree))&&n.overlay){var a,i,o=e-this.from;for({from:a,to:i}of n.overlay)if((0<t?a<=o:a<o)&&(t<0?i>=o:i>o))return new S(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&0<=this.index?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&0<=this.index?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function n(e,t,r,n){var a=e.cursor(),i=[];if(!a.firstChild())return i;if(null!=r)for(let e=!1;!e;)if(e=a.type.is(r),!a.nextSibling())return i;for(;;){if(null!=n&&a.type.is(n))return i;if(a.type.is(t)&&i.push(a.node),!a.nextSibling())return null==n?i:[]}}function o(t,r,n=r.length-1){for(let e=t;0<=n;e=e.parent){if(!e)return!1;if(!e.type.isAnonymous){if(r[n]&&r[n]!=e.name)return!1;n--}}return!0}class A{constructor(e,t,r,n){this.parent=e,this.buffer=t,this.index=r,this.start=n}}class O extends d{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){var n=this.context[\"buffer\"],n=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.context.start,r);return n<0?null:new O(this.context,this,n)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,r=0){return r&f.IterMode.ExcludeBuffers||(r=this.context.buffer,(r=r.findChild(this.index+4,r.buffer[this.index+3],0<t?1:-1,e-this.context.start,t))<0)?null:new O(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){var e=this.context[\"buffer\"],t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new O(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){var e=this.context[\"buffer\"],t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new O(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){var e,t=[],r=[],n=this.context[\"buffer\"],a=this.index+4,i=n.buffer[this.index+3];return a<i&&(e=n.buffer[this.index+1],t.push(n.slice(a,i,e)),r.push(0)),new $(this.type,t,r,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function u(t){if(!t.length)return null;let r=0,n=t[0];for(let e=1;e<t.length;e++){var a=t[e];(a.from>n.from||a.to<n.to)&&(n=a,r=e)}var e=n instanceof S&&n.index<0?null:n.parent,i=t.slice();return e?i[r]=e:i.splice(r,1),new C(i,n)}class C{constructor(e,t){this.heads=e,this.node=t}get next(){return u(this.heads)}}class w{get name(){return this.type.name}constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,t instanceof S)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let e=t._parent;e;e=e._parent)this.stack.unshift(e.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(e){return!!e&&(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0)}yieldBuf(e,t){this.index=e;var{start:r,buffer:n}=this.buffer;return this.type=t||n.set.types[n.buffer[e]],this.from=r+n.buffer[e+1],this.to=r+n.buffer[e+2],!0}yield(e){return!!e&&(e instanceof S?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)))}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){var n;return this.buffer?(n=this.buffer[\"buffer\"],!((n=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.buffer.start,r))<0)&&(this.stack.push(this.index),this.yieldBuf(n))):this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?!(r&f.IterMode.ExcludeBuffers)&&this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){var e;return this.buffer?this.stack.length?this.yieldBuf(this.stack.pop()):(e=this.mode&f.IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent(),this.buffer=null,this.yieldNode(e)):this.yieldNode(this.mode&f.IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent)}sibling(e){if(!this.buffer)return!!this._tree._parent&&this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode));var t=this.buffer[\"buffer\"],r=this.stack.length-1;if(e<0){var n=r<0?0:this.stack[r]+4;if(this.index!=n)return this.yieldBuf(t.findChild(n,this.index,-1,0,4))}else{n=t.buffer[this.index+3];if(n<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(n)}return r<0&&this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode))}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(r){let n,a,t=this[\"buffer\"];if(t){if(0<r){if(this.index<t.buffer.buffer.length)return!1}else for(let e=0;e<this.index;e++)if(t.buffer.buffer[e+3]<this.index)return!1;({index:n,parent:a}=t)}else({index:n,_parent:a}=this._tree);for(;a;{index:n,_parent:a}=a)if(-1<n)for(let e=n+r,t=r<0?-1:a._tree.children.length;e!=t;e+=r){var i=a._tree.children[e];if(this.mode&f.IterMode.IncludeAnonymous||i instanceof K||!i.type.isAnonymous||h(i))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(-1<t?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let n=this.bufferNode,a=null,i=0;if(n&&n.context==this.buffer)e:for(let t=this.index,r=this.stack.length;0<=r;){for(let e=n;e;e=e._parent)if(e.index==t){if(t==this.index)return e;a=e,i=r+1;break e}t=this.stack[--r]}for(let e=i;e<this.stack.length;e++)a=new O(this.buffer,a,this.stack[e]);return this.bufferNode=new O(this.buffer,a,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(r,n){for(let t=0;;){let e=!1;if(this.type.isAnonymous||!1!==r(this)){if(this.firstChild()){t++;continue}this.type.isAnonymous||(e=!0)}for(;;){if(e&&n&&n(this),e=this.type.isAnonymous,!t)return;if(this.nextSibling())break;this.parent(),t--,e=!0}}}matchContext(r){if(!this.buffer)return o(this.node.parent,r);var n=this.buffer[\"buffer\"],a=n.set[\"types\"];for(let e=r.length-1,t=this.stack.length-1;0<=e;t--){if(t<0)return o(this._tree,r,e);var i=a[n.buffer[this.stack[t]]];if(!i.isAnonymous){if(r[e]&&r[e]!=i.name)return!1;e--}}return!0}}function h(e){return e.children.some(e=>e instanceof K||!e.type.isAnonymous||h(e))}const k=new WeakMap;function _(e,t){if(!e.isAnonymous||t instanceof K||t.type!=e)return 1;let r=k.get(t);if(null==r){r=1;for(var n of t.children){if(n.type!=e||!(n instanceof $)){r=1;break}r+=_(e,n)}k.set(t,r)}return r}function z(d,t,e,r,n,p,a,i,f){let o=0;for(let e=r;e<n;e++)o+=_(d,t[e]);let h=Math.ceil(1.5*o/8),m=[],g=[];return function a(i,o,e,s,l){for(let n=e;n<s;){let e=n,t=o[n],r=_(d,i[n]);for(n++;n<s;n++){var c=_(d,i[n]);if(r+c>=h)break;r+=c}if(n==e+1){if(r>h){var u=i[e];a(u.children,u.positions,0,u.children.length,o[e]+l);continue}m.push(i[e])}else u=o[n-1]+i[n-1].length-t,m.push(z(d,i,o,e,n,t,u,null,f));g.push(t+l-p)}}(t,e,r,n,0),(i||f)(m,g,a)}class I{constructor(e,t,r,n,a=!1,i=!1){this.from=e,this.to=t,this.tree=r,this.offset=n,this.open=(a?1:0)|(i?2:0)}get openStart(){return 0<(1&this.open)}get openEnd(){return 0<(2&this.open)}static addTree(e,t=[],r=!1){var n,a=[new I(0,e.length,e,0,!1,r)];for(n of t)n.to>e.length&&a.push(n);return a}static applyChanges(a,e,i=128){if(!e.length)return a;var o=[];let s=1,l=a.length?a[0]:null;for(let t=0,r=0,n=0;;t++){var c,u,d=t<e.length?e[t]:null,p=d?d.fromA:1e9;if(p-r>=i)for(;l&&l.from<p;){let e=l;if((r>=e.from||p<=e.to||n)&&(c=Math.max(e.from,r)-n,u=Math.min(e.to,p)-n,e=u<=c?null:new I(c,u,e.tree,e.offset+n,0<t,!!d)),e&&o.push(e),l.to>p)break;l=s<a.length?a[s++]:null}if(!d)break;r=d.toA,n=d.toA-d.toB}return o}}class P{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}class R{constructor(e,t,r,n,a){this.parser=e,this.parse=t,this.overlay=r,this.target=n,this.from=a}}function m(e){if(!e.length||e.some(e=>e.from>=e.to))throw new RangeError(\"Invalid inner parse ranges given: \"+JSON.stringify(e))}class D{constructor(e,t,r,n,a,i,o){this.parser=e,this.predicate=t,this.mounts=r,this.index=n,this.start=a,this.target=i,this.prev=o,this.depth=0,this.ranges=[]}}const N=new W({perNode:!0});class x{constructor(e,t,r,n,a){this.nest=t,this.input=r,this.fragments=n,this.ranges=a,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){var e=this.baseParse.advance();if(!e)return null;if(this.baseParse=null,this.baseTree=e,this.startInner(),null!=this.stoppedAt)for(var t of this.inner)t.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;return e=null!=this.stoppedAt?new $(e.type,e.children,e.positions,e.length,e.propValues.concat([[N,this.stoppedAt]])):e}var r,e=this.inner[this.innerDone],n=e.parse.advance();return n&&(this.innerDone++,(r=Object.assign(Object.create(null),e.target.props))[W.mounted.id]=new b(n,e.overlay,e.parser),e.target.props=r),null}get parsedPos(){if(this.baseParse)return 0;let t=this.input.length;for(let e=this.innerDone;e<this.inner.length;e++)this.inner[e].from<t&&(t=Math.min(t,this.inner[e].parse.parsedPos));return t}stopAt(t){if(this.stoppedAt=t,this.baseParse)this.baseParse.stopAt(t);else for(let e=this.innerDone;e<this.inner.length;e++)this.inner[e].parse.stopAt(t)}startInner(){var a,i,o,s=new L(this.fragments);let l=null,c=null,u=new w(new S(this.baseTree,this.ranges[0].from,0,null),f.IterMode.IncludeAnonymous|f.IterMode.IgnoreMounts);e:for(let r,n;;){let e=!0,t;if(null!=this.stoppedAt&&u.from>=this.stoppedAt)e=!1;else if(s.hasNode(u)){if(l){var d=l.mounts.find(e=>e.frag.from<=u.from&&e.frag.to>=u.to&&e.mount.overlay);if(d)for(var p of d.mount.overlay){let t=p.from+d.pos,r=p.to+d.pos;t>=u.from&&r<=u.to&&!l.ranges.some(e=>e.from<r&&e.to>t)&&l.ranges.push({from:t,to:r})}}e=!1}else c&&(n=function(e,t,r){for(var n of e){if(n.from>=r)break;if(n.to>t)return n.from<=t&&n.to>=r?2:1}return 0}(c.ranges,u.from,u.to))?e=2!=n:!u.type.isAnonymous&&(r=this.nest(u,this.input))&&(u.from<u.to||!r.overlay)?(u.tree||function(e){let d=e[\"node\"],p=[],t=d.context.buffer;for(;p.push(e.index),e.parent(),!e.tree;);let r=e.tree,n=r.children.indexOf(t),f=r.children[n],h=f.buffer,m=[n];r.children[n]=function e(t,r,n,a,i,o){var s=p[o],l=[],c=[],t=(g(f,t,s,l,c,a),h[s+1]),u=h[s+2],u=(m.push(l.length),o?e(s+4,h[s+3],f.set.types[h[s]],t,u-t,o-1):d.toTree());return l.push(u),c.push(t-a),g(f,h[s+3],r,l,c,a),new $(n,l,c,i)}(0,h.length,E.none,0,f.length,p.length-1);for(var a of m){var i=e.tree.children[a],o=e.tree.positions[a];e.yield(new S(i,o+e.from,a,e._tree))}}(u),i=s.findMounts(u.from,r.parser),\"function\"==typeof r.overlay?l=new D(r.parser,r.overlay,i,this.inner.length,u.from,u.tree,l):((a=y(this.ranges,r.overlay||(u.from<u.to?[new v(u.from,u.to)]:[]))).length&&m(a),!a.length&&r.overlay||this.inner.push(new R(r.parser,a.length?r.parser.startParse(this.input,T(i,a),a):r.parser.startParse(\"\"),r.overlay?r.overlay.map(e=>new v(e.from-u.from,e.to-u.from)):null,u.tree,(a.length?a[0]:u).from)),r.overlay?a.length&&(c={ranges:a,depth:0,prev:c}):e=!1)):l&&(t=l.predicate(u))&&(t=!0===t?new v(u.from,u.to):t).from<t.to&&(0<=(i=l.ranges.length-1)&&l.ranges[i].to==t.from?l.ranges[i]={from:l.ranges[i].from,to:t.to}:l.ranges.push(t));if(e&&u.firstChild())l&&l.depth++,c&&c.depth++;else for(;!u.nextSibling();){if(!u.parent())break e;l&&!--l.depth&&((o=y(this.ranges,l.ranges)).length&&(m(o),this.inner.splice(l.index,0,new R(l.parser,l.parser.startParse(this.input,T(l.mounts,o),o),l.ranges.map(e=>new v(e.from-l.start,e.to-l.start)),l.target,o[0].from))),l=l.prev),c&&!--c.depth&&(c=c.prev)}}}}function g(e,t,r,n,a,i){var o;t<r&&(o=e.buffer[t+1],n.push(e.slice(t,r,o)),a.push(o-i))}class M{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(f.IterMode.IncludeAnonymous|f.IterMode.IgnoreMounts)}moveTo(e){for(var t=this[\"cursor\"],r=e-this.offset;!this.done&&t.from<r;)t.to>=e&&t.enter(r,1,f.IterMode.IgnoreOverlays|f.IterMode.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(t){if(this.moveTo(t.from),!this.done&&this.cursor.from+this.offset==t.from&&this.cursor.tree)for(let e=this.cursor.tree;;){if(e==t.tree)return!0;if(!(e.children.length&&0==e.positions[0]&&e.children[0]instanceof $))break;e=e.children[0]}return!1}}class L{constructor(e){var t;this.fragments=e,this.curTo=0,this.fragI=0,e.length?(e=this.curFrag=e[0],this.curTo=null!=(t=e.tree.prop(N))?t:e.to,this.inner=new M(e.tree,-e.offset)):this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e,t;this.fragI++,this.fragI==this.fragments.length?this.curFrag=this.inner=null:(t=this.curFrag=this.fragments[this.fragI],this.curTo=null!=(e=t.tree.prop(N))?e:t.to,this.inner=new M(t.tree,-t.offset))}findMounts(e,r){var n,a=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let t=this.inner.cursor.node;t;t=t.parent){var i=null==(n=t.tree)?void 0:n.prop(W.mounted);if(i&&i.parser==r)for(let e=this.fragI;e<this.fragments.length;e++){var o=this.fragments[e];if(o.from>=t.to)break;o.tree==this.curFrag.tree&&a.push({frag:o,pos:t.from-o.offset,mount:i})}}}return a}}function y(r,n){let a=null,i=n;for(let e=1,t=0;e<r.length;e++)for(var o=r[e-1].to,s=r[e].from;t<i.length;t++){var l=i[t];if(l.from>=s)break;l.to<=o||(a||(i=a=n.slice()),l.from<o?(a[t]=new v(l.from,o),l.to>s&&a.splice(t+1,0,new v(s,l.to))):l.to>s?a[t--]=new v(s,l.to):a.splice(t--,1))}return i}function T(e,a){var i=[];for(let{pos:t,mount:r,frag:n}of e){var o=t+(r.overlay?r.overlay[0].from:0),s=o+r.tree.length,l=Math.max(n.from,o),c=Math.min(n.to,s);if(r.overlay){var u=function(e,t,r,n){let a=0,i=0,o=!1,s=!1,l=-1e9;for(var c=[];;){var u,d,p=a==e.length?1e9:o?e[a].to:e[a].from,f=i==t.length?1e9:s?t[i].to:t[i].from;if(o!=s&&(u=Math.max(l,r))<(d=Math.min(p,f,n))&&c.push(new v(u,d)),1e9==(l=Math.min(p,f)))break;p==l&&(o?(o=!1,a++):o=!0),f==l&&(s?(s=!1,i++):s=!0)}return c}(a,r.overlay.map(e=>new v(e.from+t,e.to+t)),l,c);for(let e=0,t=l;;e++){var d=e==u.length,p=d?c:u[e].from;if(p>t&&i.push(new I(t,p,r.tree,-o,n.from>=t||n.openStart,n.to<=p||n.openEnd)),d)break;t=u[e].to}}else i.push(new I(l,c,r.tree,-o,n.from>=o||n.openStart,n.to<=s||n.openEnd))}return i}f.DefaultBufferLength=i,f.MountedTree=b,f.NodeProp=W,f.NodeSet=class F{constructor(t){this.types=t;for(let e=0;e<t.length;e++)if(t[e].id!=e)throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\")}extend(...t){var r,n=[];for(r of this.types){let e=null;for(var a of t)(a=a(r))&&((e=e||Object.assign({},r.props))[a[0].id]=a[1]);n.push(e?new E(r.name,e,r.id,r.flags):r)}return new F(n)}},f.NodeType=E,f.NodeWeakMap=class{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let n=this.map.get(e);n||this.map.set(e,n=new Map),n.set(t,r)}getBuffer(e,t){e=this.map.get(e);return e&&e.get(t)}set(e,t){e instanceof O?this.setBuffer(e.context.buffer,e.index,t):e instanceof S&&this.map.set(e.tree,t)}get(e){return e instanceof O?this.getBuffer(e.context.buffer,e.index):e instanceof S?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},f.Parser=class{startParse(e,t,r){return\"string\"==typeof e&&(e=new P(e)),r=r?r.length?r.map(e=>new v(e.from,e.to)):[new v(0,0)]:[new v(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){for(var n=this.startParse(e,t,r);;){var a=n.advance();if(a)return a}}},f.Tree=$,f.TreeBuffer=K,f.TreeCursor=w,f.TreeFragment=I,f.parseMixed=function(a){return(e,t,r,n)=>new x(e,a,t,r,n)}}}return SR}var OR,CR={};function wR(){if(OR)return CR;OR=1,Object.defineProperty(CR,\"__esModule\",{value:!0});var y=AR();let a=0;class c{constructor(e,t,r,n){this.name=e,this.set=t,this.base=r,this.modified=n,this.id=a++}toString(){let e=this[\"name\"];for(var t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){var r=\"string\"==typeof e?e:\"?\";if(null!=(t=e instanceof c?e:t)&&t.base)throw new Error(\"Can not derive from a modified tag\");var n=new c(r,[],null,[]);if(n.set.push(n),t)for(var a of t.set)n.set.push(a);return n}static defineModifier(e){let t=new u(e);return e=>-1<e.modified.indexOf(t)?e:u.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}}let t=0;class u{constructor(e){this.name=e,this.instances=[],this.id=t++}static get(n,a){if(!a.length)return n;var e=a[0].instances.find(e=>{return e.base==n&&(t=a,r=e.modified,t.length==r.length)&&t.every((e,t)=>e==r[t]);var t,r});if(e)return e;var t,r=[],i=new c(n.name,r,n,a);for(t of a)t.instances.push(i);var o,s=function(n){var a=[[]];for(let r=0;r<n.length;r++)for(let e=0,t=a.length;e<t;e++)a.push(a[e].concat(n[r]));return a.sort((e,t)=>t.length-e.length)}(a);for(o of n.set)if(!o.modified.length)for(var l of s)r.push(u.get(o,l));return i}}const n=new y.NodeProp;class T{constructor(e,t,r,n){this.tags=e,this.mode=t,this.context=r,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}function e(e,t){let a=Object.create(null);for(var r of e)if(Array.isArray(r.tag))for(var n of r.tag)a[n.id]=r.class;else a[r.tag.id]=r.class;let{scope:i,all:o=null}=t||{};return{style:e=>{let t=o;for(var r of e)for(var n of r.set){n=a[n.id];if(n){t=t?t+\" \"+n:n;break}}return t},scope:i}}function i(e,t,r,n=0,a=e.length){t=new o(n,Array.isArray(t)?t:[t],r);t.highlightRange(e.cursor(),n,a,\"\",t.highlighters),t.flush(a)}T.empty=new T([],2,null);class o{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=\"\"}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(a,i,o,s,l){let{type:t,from:c,to:u}=a;if(!(o<=c||u<=i)){t.isTop&&(l=this.highlighters.filter(e=>!e.scope||e.scope(t)));let n=s;var e=v(a)||T.empty,r=function(e,t){let r=null;for(var n of e){n=n.style(t);n&&(r=r?r+\" \"+n:n)}return r}(l,e.tags);if(r&&(n&&(n+=\" \"),n+=r,1==e.mode)&&(s+=(s?\" \":\"\")+r),this.startSpan(Math.max(i,c),n),!e.opaque){let r=a.tree&&a.tree.prop(y.NodeProp.mounted);if(r&&r.overlay){var d=a.node.enter(r.overlay[0].from+c,1),p=this.highlighters.filter(e=>!e.scope||e.scope(r.tree.type)),f=a.firstChild();for(let e=0,t=c;;e++){var h=e<r.overlay.length?r.overlay[e]:null,m=h?h.from+c:u,g=Math.max(i,t),_=Math.min(o,m);if(g<_&&f)for(;a.from<_&&(this.highlightRange(a,g,_,s,l),this.startSpan(Math.min(_,a.to),n),!(a.to>=m))&&a.nextSibling(););if(!h||o<m)break;(t=h.to+c)>i&&(this.highlightRange(d.cursor(),Math.max(i,h.from+c),Math.min(o,t),\"\",p),this.startSpan(Math.min(o,t),n))}f&&a.parent()}else if(a.firstChild()){r&&(s=\"\");do{if(!(a.to<=i)){if(a.from>=o)break;this.highlightRange(a,i,o,s,l),this.startSpan(Math.min(o,a.to),n)}}while(a.nextSibling());a.parent()}}}}}function v(e){let t=e.type.prop(n);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}var r,s=c.define,l=s(),d=s(),p=s(d),f=s(d),h=s(),m=s(h),g=s(h),_=s(),b=s(_),E=s(),S=s(),A=s(),O=s(A),C=s(),w={comment:l,lineComment:s(l),blockComment:s(l),docComment:s(l),name:d,variableName:s(d),typeName:p,tagName:s(p),propertyName:f,attributeName:s(f),className:s(d),labelName:s(d),namespace:s(d),macroName:s(d),literal:h,string:m,docString:s(m),character:s(m),attributeValue:s(m),number:g,integer:s(g),float:s(g),bool:s(h),regexp:s(h),escape:s(h),color:s(h),url:s(h),keyword:E,self:s(E),null:s(E),atom:s(E),unit:s(E),modifier:s(E),operatorKeyword:s(E),controlKeyword:s(E),definitionKeyword:s(E),moduleKeyword:s(E),operator:S,derefOperator:s(S),arithmeticOperator:s(S),logicOperator:s(S),bitwiseOperator:s(S),compareOperator:s(S),updateOperator:s(S),definitionOperator:s(S),typeOperator:s(S),controlOperator:s(S),punctuation:A,separator:s(A),bracket:O,angleBracket:s(O),squareBracket:s(O),paren:s(O),brace:s(O),content:_,heading:b,heading1:s(b),heading2:s(b),heading3:s(b),heading4:s(b),heading5:s(b),heading6:s(b),contentSeparator:s(_),list:s(_),quote:s(_),emphasis:s(_),strong:s(_),link:s(_),monospace:s(_),strikethrough:s(_),inserted:s(),deleted:s(),changed:s(),invalid:s(),meta:C,documentMeta:s(C),annotation:s(C),processingInstruction:s(C),definition:c.defineModifier(\"definition\"),constant:c.defineModifier(\"constant\"),function:c.defineModifier(\"function\"),standard:c.defineModifier(\"standard\"),local:c.defineModifier(\"local\"),special:c.defineModifier(\"special\")};for(r in w){var k=w[r];k instanceof c&&(k.name=r)}l=e([{tag:w.link,class:\"tok-link\"},{tag:w.heading,class:\"tok-heading\"},{tag:w.emphasis,class:\"tok-emphasis\"},{tag:w.strong,class:\"tok-strong\"},{tag:w.keyword,class:\"tok-keyword\"},{tag:w.atom,class:\"tok-atom\"},{tag:w.bool,class:\"tok-bool\"},{tag:w.url,class:\"tok-url\"},{tag:w.labelName,class:\"tok-labelName\"},{tag:w.inserted,class:\"tok-inserted\"},{tag:w.deleted,class:\"tok-deleted\"},{tag:w.literal,class:\"tok-literal\"},{tag:w.string,class:\"tok-string\"},{tag:w.number,class:\"tok-number\"},{tag:[w.regexp,w.escape,w.special(w.string)],class:\"tok-string2\"},{tag:w.variableName,class:\"tok-variableName\"},{tag:w.local(w.variableName),class:\"tok-variableName tok-local\"},{tag:w.definition(w.variableName),class:\"tok-variableName tok-definition\"},{tag:w.special(w.variableName),class:\"tok-variableName2\"},{tag:w.definition(w.propertyName),class:\"tok-propertyName tok-definition\"},{tag:w.typeName,class:\"tok-typeName\"},{tag:w.namespace,class:\"tok-namespace\"},{tag:w.className,class:\"tok-className\"},{tag:w.macroName,class:\"tok-macroName\"},{tag:w.propertyName,class:\"tok-propertyName\"},{tag:w.operator,class:\"tok-operator\"},{tag:w.comment,class:\"tok-comment\"},{tag:w.meta,class:\"tok-meta\"},{tag:w.invalid,class:\"tok-invalid\"},{tag:w.punctuation,class:\"tok-punctuation\"}]);return CR.Tag=c,CR.classHighlighter=l,CR.getStyleTags=v,CR.highlightCode=function(o,e,t,s,l,r=0,n=o.length){let c=r;function a(r,n){if(!(r<=c)){for(let e=o.slice(c,r),t=0;;){var a=e.indexOf(\"\\n\",t),i=a<0?e.length:a;if(i>t&&s(e.slice(t,i),n),a<0)break;l(),t=a+1}c=r}}i(e,t,(e,t,r)=>{a(e,\"\"),a(t,r)},r,n),a(n,\"\")},CR.highlightTree=i,CR.styleTags=function(t){var r,a=Object.create(null);for(r in t){let e=t[r];Array.isArray(e)||(e=[e]);for(var i of r.split(\" \"))if(i){let t=[],r=2,n=i;for(let e=0;;){if(\"...\"==n&&0<e&&e+3==i.length){r=1;break}var o=/^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(n);if(!o)throw new RangeError(\"Invalid path: \"+i);if(t.push(\"*\"==o[0]?\"\":'\"'==o[0][0]?JSON.parse(o[0]):o[0]),(e+=o[0].length)==i.length)break;o=i[e++];if(e==i.length&&\"!\"==o){r=0;break}if(\"/\"!=o)throw new RangeError(\"Invalid path: \"+i);n=i.slice(e)}var s=t.length-1,l=t[s];if(!l)throw new RangeError(\"Invalid path: \"+i);s=new T(e,r,0<s?t.slice(0,s):null);a[l]=s.sort(a[l])}}return n.add(a)},CR.tagHighlighter=e,CR.tags=w,CR}var kR,IR,RR={};function NR(){var t,i,r,e,o,a;return kR||(kR=1,t=\"undefined\"==typeof Symbol?\"__ͼ\":Symbol.for(\"ͼ\"),i=\"undefined\"==typeof Symbol?\"__styleSet\"+Math.floor(1e8*Math.random()):Symbol(\"styleSet\"),r=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:{},(e=RR.StyleModule=function(e,t){this.rules=[];var r,u=(t||{}).finish;function d(e){return/^@/.test(e)?[e]:e.split(/,\\s*/)}for(r in e)!function e(r,t,n,a){var i,o=[],s=/^@(\\w+)\\b/.exec(r[0]),l=s&&\"keyframes\"==s[1];if(s&&null==t)return n.push(r[0]+\";\");for(i in t){var c=t[i];if(/&/.test(i))e(i.split(/,\\s*/).map(function(t){return r.map(function(e){return t.replace(/&/,e)})}).reduce(function(e,t){return e.concat(t)}),c,n);else if(c&&\"object\"==typeof c){if(!s)throw new RangeError(\"The value of a property (\"+i+\") should be a primitive value.\");e(d(i),c,o,l)}else null!=c&&o.push(i.replace(/_.*/,\"\").replace(/[A-Z]/g,function(e){return\"-\"+e.toLowerCase()})+\": \"+c+\";\")}(o.length||l)&&n.push((!u||s||a?r:r.map(u)).join(\", \")+\" {\"+o.join(\" \")+\"}\")}(d(r),e[r],this.rules)}).prototype.getRules=function(){return this.rules.join(\"\\n\")},e.newName=function(){var e=r[t]||1;return r[t]=e+1,\"ͼ\"+e.toString(36)},e.mount=function(e,t,r){var n=e[i],r=r&&r.nonce;n?r&&n.setNonce(r):n=new a(e,r),n.mount(Array.isArray(t)?t:[t],e)},o=new Map,(a=function(e,t){var r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){var a=o.get(r);if(a)return e[i]=a;this.sheet=new n.CSSStyleSheet,o.set(r,this)}else this.styleTag=r.createElement(\"style\"),t&&this.styleTag.setAttribute(\"nonce\",t);this.modules=[],e[i]=this}).prototype.mount=function(e,t){for(var r=this.sheet,n=0,a=0,i=0;i<e.length;i++){var o=e[i],s=this.modules.indexOf(o);if(s<a&&-1<s&&(this.modules.splice(s,1),a--,s=-1),-1==s){if(this.modules.splice(a++,0,o),r)for(var l=0;l<o.rules.length;l++)r.insertRule(o.rules[l],n++)}else{for(;a<s;)n+=this.modules[a++].rules.length;n+=o.rules.length,a++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet].concat(t.adoptedStyleSheets));else{for(var c=\"\",u=0;u<this.modules.length;u++)c+=this.modules[u].getRules()+\"\\n\";this.styleTag.textContent=c;t=t.head||t;this.styleTag.parentNode!=t&&t.insertBefore(this.styleTag,t.firstChild)}},a.prototype.setNonce=function(e){this.styleTag&&this.styleTag.getAttribute(\"nonce\")!=e&&this.styleTag.setAttribute(\"nonce\",e)}),RR}function MR(){if(IR)return Ye;IR=1;var u=AR(),l=cR(),o=bR(),c=wR(),U=NR();const d=new u.NodeProp;function s(t){return l.Facet.define({combine:t?e=>e.concat(t):void 0})}const B=new u.NodeProp;class p{constructor(e,t,r=[],n=\"\"){this.data=e,this.name=n,l.EditorState.prototype.hasOwnProperty(\"tree\")||Object.defineProperty(l.EditorState.prototype,\"tree\",{get(){return w(this)}}),this.parser=t,this.extension=[_.of(this),l.EditorState.languageData.of((e,t,r)=>{var n=j(e,t,r),a=n.type.prop(d);if(!a)return[];var i=e.facet(a),a=n.type.prop(B);if(a){var o,s,l=n.resolve(t-n.from,r);for(o of a)if(o.test(l,e))return s=e.facet(o.facet),\"replace\"==o.type?s:s.concat(i)}return i})].concat(r)}isActiveAt(e,t,r=-1){return j(e,t,r).type.prop(d)==this.data}findRegions(e){var t=e.facet(_);if((null==t?void 0:t.data)==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let o=[],s=(t,r)=>{if(t.prop(d)==this.data)o.push({from:r,to:r+t.length});else{var e=t.prop(u.NodeProp.mounted);if(e){if(e.tree.prop(d)==this.data){if(e.overlay)for(var n of e.overlay)o.push({from:n.from+r,to:n.to+r});else o.push({from:r,to:r+t.length});return}if(e.overlay){var a=o.length;if(s(e.tree,e.overlay[0].from+r),o.length>a)return}}for(let e=0;e<t.children.length;e++){var i=t.children[e];i instanceof u.Tree&&s(i,t.positions[e]+r)}}};return s(w(e),0),o}get allowsNesting(){return!0}}function j(e,t,r){let n=e.facet(_),a=w(e).topNode;if(!n||n.allowsNesting)for(let e=a;e;e=e.enter(t,r,u.IterMode.ExcludeBuffers))e.type.isTop&&(a=e);return a}p.setState=l.StateEffect.define();class r extends p{constructor(e,t,r){super(e,t,[],r),this.parser=t}static define(e){let t=s(e.languageData);return new r(t,e.parser.configure({props:[d.add(e=>e.isTop?t:void 0)]}),e.name)}configure(e,t){return new r(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function w(e){e=e.field(p.state,!1);return e?e.tree:u.Tree.empty}function n(e,t,r=50){var n,e=null==(e=e.field(p.state,!1))?void 0:e.context;return e?(n=e.viewport,e.updateViewport({from:0,to:t}),r=e.isDone(t)||e.work(r,t)?e.tree:null,e.updateViewport(n),r):null}class t{constructor(e){this.doc=e,this.cursorPos=0,this.string=\"\",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){var r=this.cursorPos-this.string.length;return e<r||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}}let f=null;class h{constructor(e,t,r=[],n,a,i,o,s){this.parser=e,this.state=t,this.fragments=r,this.tree=n,this.treeLen=a,this.viewport=i,this.skipped=o,this.scheduleOn=s,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new h(e,t,[],u.Tree.empty,0,r,[],null)}startParse(){return this.parser.startParse(new t(this.state.doc),this.fragments)}work(r,n){return null!=n&&n>=this.state.doc.length&&(n=void 0),this.tree!=u.Tree.empty&&this.isDone(null!=n?n:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var e;if(\"number\"==typeof r){let e=Date.now()+r;r=()=>Date.now()>e}for(this.parse||(this.parse=this.startParse()),null!=n&&(null==this.parse.stoppedAt||this.parse.stoppedAt>n)&&n<this.state.doc.length&&this.parse.stopAt(n);;){var t=this.parse.advance();if(t){if(this.fragments=this.withoutTempSkipped(u.TreeFragment.addTree(t,this.fragments,null!=this.parse.stoppedAt)),this.treeLen=null!=(e=this.parse.stoppedAt)?e:this.state.doc.length,this.tree=t,this.parse=null,!(this.treeLen<(null!=n?n:this.state.doc.length)))return!0;this.parse=this.startParse()}if(r())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((null==this.parse.stoppedAt||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(u.TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){var t=f;f=this;try{return e()}finally{f=t}}withoutTempSkipped(e){for(var t;t=this.tempSkipped.pop();)e=H(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:n,treeLen:i,viewport:o,skipped:s}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((e,t,r,n)=>a.push({fromA:e,toA:t,fromB:r,toB:n})),r=u.TreeFragment.applyChanges(r,a),n=u.Tree.empty,i=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){s=[];for(var l of this.skipped){var c=e.mapPos(l.from,1),l=e.mapPos(l.to,-1);c<l&&s.push({from:c,to:l})}}}return new h(this.parser,t,r,n,i,o,s,this.scheduleOn)}updateViewport(t){if(this.viewport.from==t.from&&this.viewport.to==t.to)return!1;this.viewport=t;var e=this.skipped.length;for(let e=0;e<this.skipped.length;e++){var{from:r,to:n}=this.skipped[e];r<t.to&&n>t.from&&(this.fragments=H(this.fragments,r,n),this.skipped.splice(e--,1))}return!(this.skipped.length>=e||(this.reset(),0))}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(i){return new class extends u.Parser{createParse(e,t,r){let n=r[0].from,a=r[r.length-1].to;return{parsedPos:n,advance(){var e=f;if(e){for(var t of r)e.tempSkipped.push(t);i&&(e.scheduleOn=e.scheduleOn?Promise.all([e.scheduleOn,i]):i)}return this.parsedPos=a,new u.Tree(u.NodeType.none,[],[],a-n)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);var t=this.fragments;return this.treeLen>=e&&t.length&&0==t[0].from&&t[0].to>=e}static get(){return f}}function H(e,t,r){return u.TreeFragment.applyChanges(e,[{fromA:t,toA:r,fromB:t,toB:r}])}class m{constructor(e){this.context=e,this.tree=e.tree}apply(e){var t;return e.docChanged||this.tree!=this.context.tree?(t=this.context.changes(e.changes,e.state),e=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to),t.work(20,e)||t.takeTree(),new m(t)):this}static init(e){var t=Math.min(3e3,e.doc.length),e=h.create(e.facet(_).parser,e,{from:0,to:t});return e.work(20,t)||e.takeTree(),new m(e)}}p.state=l.StateField.define({create:m.init,update(e,t){for(var r of t.effects)if(r.is(p.setState))return r.value;return t.startState.facet(_)!=t.state.facet(_)?m.init(t.state):e.apply(t)}});let G=e=>{let t=setTimeout(()=>e(),500);return()=>clearTimeout(t)};\"undefined\"!=typeof requestIdleCallback&&(G=e=>{let t=-1,r=setTimeout(()=>{t=requestIdleCallback(e,{timeout:400})},100);return()=>t<0?clearTimeout(r):cancelIdleCallback(t)});const g=\"undefined\"!=typeof navigator&&null!=(e=navigator.scheduling)&&e.isInputPending?()=>navigator.scheduling.isInputPending():null,V=o.ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){var t=this.view.state.field(p.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){var e,t;this.working||(e=this.view[\"state\"],(t=e.field(p.state)).tree==t.context.tree&&t.context.isDone(e.doc.length))||(this.working=G(this.work))}work(t){this.working=null;var r=Date.now();if(this.chunkEnd<r&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=r+3e4,this.chunkBudget=3e3),!(this.chunkBudget<=0)){var{state:n,viewport:{to:a}}=this.view,i=n.field(p.state);if(i.tree!=i.context.tree||!i.context.isDone(a+1e5)){let e=Date.now()+Math.min(this.chunkBudget,100,t&&!g?Math.max(25,t.timeRemaining()-5):1e9);t=i.context.treeLen<a&&n.doc.length>a+1e3,n=i.context.work(()=>g&&g()||Date.now()>e,a+(t?0:1e5));this.chunkBudget-=Date.now()-r,(n||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:p.setState.of(new m(i.context))})),0<this.chunkBudget&&(!n||t)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}}}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(e=>o.logException(this.view.state,e)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||0<this.workScheduled)}},{eventHandlers:{focus(){this.scheduleWork()}}}),_=l.Facet.define({combine(e){return e.length?e[0]:null},enables:t=>[p.state,V,o.EditorView.contentAttributes.compute([t],e=>{e=e.facet(t);return e&&e.name?{\"data-language\":e.name}:{}})]});const q=l.Facet.define(),i=l.Facet.define({combine:e=>{if(!e.length)return\"  \";let t=e[0];if(!t||/\\S/.test(t)||Array.from(t).some(e=>e!=t[0]))throw new Error(\"Invalid indent unit: \"+JSON.stringify(e[0]));return t}});function y(e){var t=e.facet(i);return 9==t.charCodeAt(0)?e.tabSize*t.length:t.length}function T(e,t){let r=\"\",n=e.tabSize,a=e.facet(i)[0];if(\"\\t\"==a){for(;n<=t;)r+=\"\\t\",t-=n;a=\" \"}for(let e=0;e<t;e++)r+=a;return r}function v(e,n){for(var t of(e=e instanceof l.EditorState?new b(e):e).state.facet(q)){t=t(e,n);if(void 0!==t)return t}var a=w(e.state);if(a.length>=n){var i=e,o=n;let t=a.resolveStack(o),r=a.resolveInner(o,-1).resolve(o,0).enterUnfinishedNodesBefore(o);if(r!=t.node){var s=[];for(let e=r;e&&!(e.from<t.node.from||e.to>t.node.to||e.from==t.node.from&&e.type==t.node.type);e=e.parent)s.push(e);for(let e=s.length-1;0<=e;e--)t={node:s[e],next:t}}return z(t,i,o)}return null}class b{constructor(e,t={}){this.state=e,this.options=t,this.unit=y(e)}lineAt(e,t=1){var r=this.state.doc.lineAt(e),{simulateBreak:n,simulateDoubleBreak:a}=this.options;return null!=n&&n>=r.from&&n<=r.to?a&&n==e?{text:\"\",from:e}:(t<0?n<e:n<=e)?{text:r.text.slice(n-r.from),from:n}:{text:r.text.slice(0,n-r.from),from:r.from}:r}textAfterPos(e,t=1){var r;return this.options.simulateDoubleBreak&&e==this.options.simulateBreak?\"\":({text:t,from:r}=this.lineAt(e,t),t.slice(e-r,Math.min(t.length,e+100-r)))}column(e,t=1){var{text:t,from:r}=this.lineAt(e,t);let n=this.countColumn(t,e-r);e=this.options.overrideIndentation?this.options.overrideIndentation(r):-1;return-1<e&&(n+=e-this.countColumn(t,t.search(/\\S|$/))),n}countColumn(e,t=e.length){return l.countColumn(e,this.state.tabSize,t)}lineIndent(e,t=1){var{text:e,from:t}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){r=r(t);if(-1<r)return r}return this.countColumn(e,e.search(/\\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const E=new u.NodeProp;function z(t,r,n){for(let e=t;e;e=e.next){var a=function(e){var t=e.type.prop(E);if(t)return t;let r=e.firstChild,n;if(r&&(n=r.type.prop(u.NodeProp.closedBy))){let t=e.lastChild,r=t&&-1<n.indexOf(t.name);return e=>{return $(e,!0,1,void 0,r&&((e=e).pos!=e.options.simulateBreak||!e.options.simulateDoubleBreak)?t.from:void 0)}}return null==e.parent?W:null}(e.node);if(a)return a(S.create(r,n,e))}return 0}function W(){return 0}class S extends b{constructor(e,t,r){super(e.state,e.options),this.base=e,this.pos=t,this.context=r}get node(){return this.context.node}static create(e,t,r){return new S(e,t,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(t){let r=this.state.doc.lineAt(t.from);for(;;){let e=t.resolve(r.from);for(;e.parent&&e.parent.from==e.from;)e=e.parent;if(function(t,r){for(let e=r;e;e=e.parent)if(t==e)return 1;return}(e,t))break;r=this.state.doc.lineAt(e.from)}return this.lineIndent(r.from)}continue(){return z(this.context.next,this.base,this.pos)}}function $(e,t,r,n,a){var i=e.textAfter,o=i.match(/^\\s*/)[0].length,i=n&&i.slice(o,o+n.length)==n||a==e.pos+o,n=t?function(e){var t=e.node,r=t.childAfter(t.from),n=t.lastChild;if(!r)return null;var a=e.options.simulateBreak,i=e.state.doc.lineAt(r.from),o=null==a||a<=i.from?i.to:Math.min(i.to,a);for(let e=r.to;;){var s,l=t.childAfter(e);if(!l||l==n)return null;if(!l.type.isSkipped)return l.from>=o?null:(s=/^ */.exec(i.text.slice(r.to-i.from))[0].length,{from:r.from,to:r.to+s});e=l.to}}(e):null;return n?i?e.column(n.from):e.column(n.to):e.baseIndent+(i?0:e.unit*r)}const K=l.Facet.define(),Y=new u.NodeProp;function A(e,r,n){for(var t of e.facet(K)){t=t(e,r,n);if(t)return t}{var a=e,i=r,o=n,s,l=w(a);if(l.length<o)return null;let t=null;for(let e=l.resolveStack(o,1);e;e=e.next){var c=e.node;if(!(c.to<=o||c.from>o)){if(t&&c.from<i)break;var u,d=c.type.prop(Y);d&&(c.to<l.length-50||l.length==a.doc.length||(s=void 0,!(s=(u=c).lastChild))||s.to!=u.to||!s.type.isError)&&(u=d(c,a))&&u.from<=o&&u.from>=i&&u.to>o&&(t=u)}}return t}}function J(e,t){var r=t.mapPos(e.from,1),t=t.mapPos(e.to,-1);return t<=r?void 0:{from:r,to:t}}const O=l.StateEffect.define({map:J}),C=l.StateEffect.define({map:J});function a(e){var r=[];for(let{head:t}of e.state.selection.ranges)r.some(e=>e.from<=t&&e.to>=t)||r.push(e.lineBlockAt(t));return r}const k=l.StateField.define({create(){return o.Decoration.none},update(e,t){e=e.map(t.changes);for(let r of t.effects){var n;r.is(O)&&!function(e,r,n){let a=!1;return e.between(r,r,(e,t)=>{e==r&&t==n&&(a=!0)}),a}(e,r.value.from,r.value.to)?(n=t.state.facet(M)[\"preparePlaceholder\"],n=n?o.Decoration.replace({widget:new ae(n(t.state,r.value))}):ne,e=e.update({add:[n.range(r.value.from,r.value.to)]})):r.is(C)&&(e=e.update({filter:(e,t)=>r.value.from!=e||r.value.to!=t,filterFrom:r.value.from,filterTo:r.value.to}))}if(t.selection){let r=!1,n=t.selection.main[\"head\"];e.between(n,n,(e,t)=>{e<n&&t>n&&(r=!0)}),r&&(e=e.update({filterFrom:n,filterTo:n,filter:(e,t)=>t<=n||e>=n}))}return e},provide:e=>o.EditorView.decorations.from(e),toJSON(e,t){let r=[];return e.between(0,t.doc.length,(e,t)=>{r.push(e,t)}),r},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError(\"Invalid JSON for fold state\");var r=[];for(let e=0;e<t.length;){var n=t[e++],a=t[e++];if(\"number\"!=typeof n||\"number\"!=typeof a)throw new RangeError(\"Invalid JSON for fold state\");r.push(ne.range(n,a))}return o.Decoration.set(r,!0)}});function I(e,t,r){let n=null;return null!=(e=e.field(k,!1))&&e.between(t,r,(e,t)=>{(!n||n.from>e)&&(n={from:e,to:t})}),n}function R(e,t){return e.field(k,!1)?t:t.concat(l.StateEffect.appendConfig.of(P()))}var e=e=>{for(var t of a(e)){t=A(e.state,t.from,t.to);if(t)return e.dispatch({effects:R(e.state,[O.of(t),N(e,t)])}),!0}return!1},Q=e=>{if(!e.state.field(k,!1))return!1;var t,r=[];for(t of a(e)){var n=I(e.state,t.from,t.to);n&&r.push(C.of(n),N(e,n,!1))}return r.length&&e.dispatch({effects:r}),0<r.length};function N(e,t,r=!0){var n=e.state.doc.lineAt(t.from).number,t=e.state.doc.lineAt(t.to).number;return o.EditorView.announce.of(`${e.state.phrase(r?\"Folded lines\":\"Unfolded lines\")} ${n} ${e.state.phrase(\"to\")} ${t}.`)}var Z=t=>{var r=t[\"state\"],n=[];for(let e=0;e<r.doc.length;){var a=t.lineBlockAt(e),i=A(r,a.from,a.to);i&&n.push(O.of(i)),e=(i?t.lineBlockAt(i.to):a).to+1}return n.length&&t.dispatch({effects:R(t.state,n)}),!!n.length},X=e=>{var t=e.state.field(k,!1);if(!t||!t.size)return!1;let r=[];return t.between(0,e.state.doc.length,(e,t)=>{r.push(C.of({from:e,to:t}))}),e.dispatch({effects:r}),!0};var ee=[{key:\"Ctrl-Shift-[\",mac:\"Cmd-Alt-[\",run:e},{key:\"Ctrl-Shift-]\",mac:\"Cmd-Alt-]\",run:Q},{key:\"Ctrl-Alt-[\",run:Z},{key:\"Ctrl-Alt-]\",run:X}];const te={placeholderDOM:null,preparePlaceholder:null,placeholderText:\"…\"},M=l.Facet.define({combine(e){return l.combineConfig(e,te)}});function P(e){var t=[k,se];return e&&t.push(M.of(e)),t}function re(r,e){var t=r[\"state\"],n=t.facet(M),a=e=>{var t=r.lineBlockAt(r.posAtDOM(e.target)),t=I(r.state,t.from,t.to);t&&r.dispatch({effects:C.of(t)}),e.preventDefault()};return n.placeholderDOM?n.placeholderDOM(r,a,e):((e=document.createElement(\"span\")).textContent=n.placeholderText,e.setAttribute(\"aria-label\",t.phrase(\"folded code\")),e.title=t.phrase(\"unfold\"),e.className=\"cm-foldPlaceholder\",e.onclick=a,e)}const ne=o.Decoration.replace({widget:new class extends o.WidgetType{toDOM(e){return re(e,null)}}});class ae extends o.WidgetType{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return re(e,this.value)}}const ie={openText:\"⌄\",closedText:\"›\",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class oe extends o.GutterMarker{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){var t;return this.config.markerDOM?this.config.markerDOM(this.open):((t=document.createElement(\"span\")).textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?\"Fold line\":\"Unfold line\"),t)}}const se=o.EditorView.baseTheme({\".cm-foldPlaceholder\":{backgroundColor:\"#eee\",border:\"1px solid #ddd\",color:\"#888\",borderRadius:\".2em\",margin:\"0 1px\",padding:\"0 1px\",cursor:\"pointer\"},\".cm-foldGutter span\":{padding:\"0 1px\",cursor:\"pointer\"}});class D{constructor(e,t){this.specs=e;let r;function n(e){var t=U.StyleModule.newName();return(r=r||Object.create(null))[\".\"+t]=e,t}var a=\"string\"==typeof t.all?t.all:t.all?n(t.all):void 0;const i=t.scope;this.scope=i instanceof p?e=>e.prop(d)==i.data:i?e=>e==i:void 0,this.style=c.tagHighlighter(e.map(e=>({tag:e.tag,class:e.class||n(Object.assign({},e,{tag:null}))})),{all:a}).style,this.module=r?new U.StyleModule(r):null,this.themeType=t.themeType}static define(e,t){return new D(e,t||{})}}const le=l.Facet.define(),ce=l.Facet.define({combine(e){return e.length?[e[0]]:null}});function x(e){var t=e.facet(le);return t.length?t:e.facet(ce)}const ue=l.Prec.high(o.ViewPlugin.fromClass(class{constructor(e){this.markCache=Object.create(null),this.tree=w(e.state),this.decorations=this.buildDeco(e,x(e.state)),this.decoratedTo=e.viewport.to}update(e){var t=w(e.state),r=x(e.state),n=r!=x(e.startState),a=e.view[\"viewport\"],i=e.changes.mapPos(this.decoratedTo,1);t.length<a.to&&!n&&t.type==this.tree.type&&i>=a.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=i):(t!=this.tree||e.viewportChanged||n)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=a.to)}buildDeco(e,t){if(!t||!this.tree.length)return o.Decoration.none;let n=new l.RangeSetBuilder;for(var{from:r,to:a}of e.visibleRanges)c.highlightTree(this.tree,t,(e,t,r)=>{n.add(e,t,this.markCache[r]||(this.markCache[r]=o.Decoration.mark({class:r})))},r,a);return n.finish()}},{decorations:e=>e.decorations}));var de,pe,fe=D.define([{tag:c.tags.meta,color:\"#404740\"},{tag:c.tags.link,textDecoration:\"underline\"},{tag:c.tags.heading,textDecoration:\"underline\",fontWeight:\"bold\"},{tag:c.tags.emphasis,fontStyle:\"italic\"},{tag:c.tags.strong,fontWeight:\"bold\"},{tag:c.tags.strikethrough,textDecoration:\"line-through\"},{tag:c.tags.keyword,color:\"#708\"},{tag:[c.tags.atom,c.tags.bool,c.tags.url,c.tags.contentSeparator,c.tags.labelName],color:\"#219\"},{tag:[c.tags.literal,c.tags.inserted],color:\"#164\"},{tag:[c.tags.string,c.tags.deleted],color:\"#a11\"},{tag:[c.tags.regexp,c.tags.escape,c.tags.special(c.tags.string)],color:\"#e40\"},{tag:c.tags.definition(c.tags.variableName),color:\"#00f\"},{tag:c.tags.local(c.tags.variableName),color:\"#30a\"},{tag:[c.tags.typeName,c.tags.namespace],color:\"#085\"},{tag:c.tags.className,color:\"#167\"},{tag:[c.tags.special(c.tags.variableName),c.tags.macroName],color:\"#256\"},{tag:c.tags.definition(c.tags.propertyName),color:\"#00c\"},{tag:c.tags.comment,color:\"#940\"},{tag:c.tags.invalid,color:\"#f00\"}]),he=o.EditorView.baseTheme({\"&.cm-focused .cm-matchingBracket\":{backgroundColor:\"#328c8252\"},\"&.cm-focused .cm-nonmatchingBracket\":{backgroundColor:\"#bb555544\"}});const me=l.Facet.define({combine(e){return l.combineConfig(e,{afterCursor:!0,brackets:\"()[]{}\",maxScanDistance:1e4,renderMatch:ye})}}),ge=o.Decoration.mark({class:\"cm-matchingBracket\"}),_e=o.Decoration.mark({class:\"cm-nonmatchingBracket\"});function ye(e){var t=[],r=e.matched?ge:_e;return t.push(r.range(e.start.from,e.start.to)),e.end&&t.push(r.range(e.end.from,e.end.to)),t}const Te=[l.StateField.define({create(){return o.Decoration.none},update(e,t){if(!t.docChanged&&!t.selection)return e;let r=[];var n,a,i=t.state.facet(me);for(n of t.state.selection.ranges)n.empty&&(a=L(t.state,n.head,-1,i)||0<n.head&&L(t.state,n.head-1,1,i)||i.afterCursor&&(L(t.state,n.head,1,i)||n.head<t.state.doc.length&&L(t.state,n.head+1,-1,i)))&&(r=r.concat(i.renderMatch(a,t.state)));return o.Decoration.set(r,!0)},provide:e=>o.EditorView.decorations.from(e)}),he];const ve=new u.NodeProp;function be(e,t,r){var n=e.prop(t<0?u.NodeProp.openedBy:u.NodeProp.closedBy);if(n)return n;if(1==e.name.length){n=r.indexOf(e.name);if(-1<n&&n%2==(t<0?1:0))return[r[n+t]]}return null}function Ee(e){var t=e.type.prop(ve);return t?t(e.node):e}function L(e,i,o,a={}){var s=a.maxScanDistance||1e4,l=a.brackets||\"()[]{}\",a=w(e),c=a.resolveInner(i,o);for(let a=c;a;a=a.parent){var u=be(a.type,o,l);if(u&&a.from<a.to){var d,p=Ee(a);if(p&&(0<o?i>=p.from&&i<p.to:i>p.from&&i<=p.to)){var f=o;var h=a;var m=u;var g=l;let e=h.parent,t={from:p.from,to:p.to},r=0,n=null==e?void 0:e.cursor();if(n&&(f<0?n.childBefore(h.from):n.childAfter(h.to)))do{if(f<0?n.to<=h.from:n.from>=h.to){if(0==r&&-1<m.indexOf(n.type.name)&&n.from<n.to)return d=Ee(n),{start:t,end:d?{from:d.from,to:d.to}:void 0,matched:!0};if(be(n.type,f,g))r++;else if(be(n.type,-f,g)){if(0==r)return d=Ee(n),{start:t,end:d&&d.from<d.to?{from:d.from,to:d.to}:void 0,matched:!1};r--}}}while(f<0?n.prevSibling():n.nextSibling());return{start:t,matched:!1};return}}}{var _=i,y=o,T=a,v=c.type,b=s,E=l,a=y<0?e.sliceDoc(_-1,_):e.sliceDoc(_,_+1),S=E.indexOf(a);if(S<0||S%2==0!=0<y)return null;let r={from:y<0?_-1:_,to:0<y?_+1:_},t=e.doc.iterRange(_,0<y?e.doc.length:0),n=0;for(let e=0;!t.next().done&&e<=b;){var A=t.value,O=(y<0&&(e+=A.length),_+e*y);for(let e=0<y?0:A.length-1,t=0<y?A.length:-1;e!=t;e+=y){var C=E.indexOf(A[e]);if(!(C<0||T.resolveInner(O+e,1).type!=v))if(C%2==0==0<y)n++;else{if(1==n)return{start:r,end:{from:O+e,to:O+e+1},matched:C>>1==S>>1};n--}}0<y&&(e+=A.length)}return t.done?{start:r,matched:!1}:null}}function Se(t,r,n,a=0,e=0){null==r&&-1==(r=t.search(/[^\\s\\u00a0]/))&&(r=t.length);let i=e;for(let e=a;e<r;e++)9==t.charCodeAt(e)?i+=n-i%n:i++;return i}class Ae{constructor(e,t,r,n){this.string=e,this.tabSize=t,this.indentUnit=r,this.overrideIndent=n,this.pos=0,this.start=0,this.lastColumnPos=0,this.lastColumnValue=0}eol(){return this.pos>=this.string.length}sol(){return 0==this.pos}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)}eat(e){var t=this.string.charAt(this.pos);let r;if(r=\"string\"==typeof e?t==e:t&&(e instanceof RegExp?e.test(t):e(t)))return++this.pos,t}eatWhile(e){for(var t=this.pos;this.eat(e););return this.pos>t}eatSpace(){for(var e=this.pos;/[\\s\\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){e=this.string.indexOf(e,this.pos);if(-1<e)return this.pos=e,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPos<this.start&&(this.lastColumnValue=Se(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue),this.lastColumnPos=this.start),this.lastColumnValue}indentation(){var e;return null!=(e=this.overrideIndent)?e:Se(this.string,null,this.tabSize)}match(e,t,r){var n;return\"string\"==typeof e?(n=e=>r?e.toLowerCase():e)(this.string.substr(this.pos,e.length))==n(e)?(!1!==t&&(this.pos+=e.length),!0):null:(n=this.string.slice(this.pos).match(e))&&0<n.index?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}current(){return this.string.slice(this.start,this.pos)}}function Oe(e){if(\"object\"!=typeof e)return e;var t,r={};for(t in e){var n=e[t];r[t]=n instanceof Array?n.slice():n}return r}const Ce=new WeakMap;class we extends p{constructor(e){var t,r,n,a=s(e.languageData);let i={name:(n=e).name||\"\",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Oe,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Me,mergeTokens:!1!==n.mergeTokens},o;super(a,new class extends u.Parser{createParse(e,t,r){return new Re(o,e,t,r)}},[],e.name),this.topNode=(t=a,r=this,n=u.NodeType.define({id:F.length,name:\"Document\",props:[d.add(()=>t),E.add(()=>e=>r.getIndent(e))],top:!0}),F.push(n),n),(o=this).streamParser=i,this.stateAfter=new u.NodeProp({perNode:!0}),this.tokenTable=e.tokenTable?new Fe(i.tokenTable):Ue}static define(e){return new we(e)}getIndent(e){let t=void 0;var r=e.options[\"overrideIndentation\"];r&&null!=(t=Ce.get(e.state))&&t<e.pos-1e4&&(t=void 0);let n=ke(this,e.node.tree,e.node.from,e.node.from,null!==t&&void 0!==t?t:e.pos),a,i;if(a=n?(i=n.state,n.pos+1):(i=this.streamParser.startState(e.unit),e.node.from),1e4<e.pos-a)return null;for(;a<e.pos;){var o=e.state.doc.lineAt(a),s=Math.min(e.pos,o.to);if(o.length)for(var l=r?r(o.from):-1,c=new Ae(o.text,e.state.tabSize,e.unit,l<0?void 0:l);c.pos<s-o.from;)Ne(this.streamParser.token,c,i);else this.streamParser.blankLine(i,e.unit);if(s==e.pos)break;a=o.to+1}var u=e.lineAt(e.pos);return r&&null==t&&Ce.set(e.state,u.from),this.streamParser.indent(i,/^\\s*(.*)/.exec(u.text)[1],e)}get allowsNesting(){return!1}}function ke(t,r,n,a,i){var e=a<=n&&n+r.length<=i&&r.prop(t.stateAfter);if(e)return{state:t.streamParser.copyState(e),pos:n+r.length};for(let e=r.children.length-1;0<=e;e--){var o=r.children[e],s=n+r.positions[e],o=o instanceof u.Tree&&s<i&&ke(t,o,s,a,i);if(o)return o}return null}function Ie(r,e,n,a,t){for(var i of e){var o=i.from+(i.openStart?25:0),s=i.to-(i.openEnd?25:0);let e=o<=n&&n<s&&ke(r,i.tree,0-i.offset,n,s),t;if(e&&e.pos<=a&&(t=function t(r,n,a,i,o){if(o&&a<=0&&i>=n.length)return n;o||0!=a||n.type!=r.topNode||(o=!0);for(let e=n.children.length-1;0<=e;e--){var s=n.positions[e],l=n.children[e];if(s<i&&l instanceof u.Tree){if(l=t(r,l,a-s,i-s,o))return o?new u.Tree(n.type,n.children.slice(0,e).concat(l),n.positions.slice(0,e+1),s+l.length):l;break}}return null}(r,i.tree,n+i.offset,e.pos+i.offset,!1)))return{state:e.state,tree:t}}return{state:r.streamParser.startState(t?y(t):4),tree:u.Tree.empty}}class Re{constructor(e,t,r,n){this.lang=e,this.input=t,this.fragments=r,this.ranges=n,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=n[n.length-1].to;let a=h.get(),i=n[0].from;var{state:t,tree:o}=Ie(e,r,i,this.to,null===a||void 0===a?void 0:a.state);this.state=t,this.parsedPos=this.chunkStart=i+o.length;for(let e=0;e<o.children.length;e++)this.chunks.push(o.children[e]),this.chunkPos.push(o.positions[e]);a&&this.parsedPos<a.viewport.from-1e5&&n.some(e=>e.from<=a.viewport.from&&e.to>=a.viewport.from)&&(this.state=this.lang.streamParser.startState(y(a.state)),a.skipUntilInView(this.parsedPos,a.viewport.from),this.parsedPos=a.viewport.from),this.moveRangeIndex()}advance(){var e=h.get(),t=null==this.stoppedAt?this.to:Math.min(this.to,this.stoppedAt);let r=Math.min(t,this.chunkStart+2048);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos<r;)this.parseLine(e);return this.chunkStart<this.parsedPos&&this.finishChunk(),this.parsedPos>=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);var r;return this.input.lineChunks?\"\\n\"==t&&(t=\"\"):-1<(r=t.indexOf(\"\\n\"))&&(t=t.slice(0,r)),e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let e=this.rangeIndex;;){var n=this.ranges[e].to;if(n>=r)break;if(t=t.slice(0,n-(r-t.length)),++e==this.ranges.length)break;var n=this.ranges[e].from,a=this.lineAfter(n);t+=a,r=n+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){var n=this.ranges[this.rangeIndex].to,a=e+t;if(0<r?a<n:a<=n)break;t+=this.ranges[++this.rangeIndex].from-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let a=4;1<this.ranges.length&&(t+=n=this.skipGapsTo(t,n,1),i=this.chunk.length,r+=n=this.skipGapsTo(r,n,-1),a+=this.chunk.length-i);var i=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&4==a&&0<=i&&this.chunk[i]==e&&this.chunk[2+i]==t?this.chunk[2+i]=r:this.chunk.push(e,t,r,a),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,a=this.lang[\"streamParser\"];var i=new Ae(t,e?e.state.tabSize:4,e?y(e.state):2);if(i.eol())a.blankLine(this.state,i.indentUnit);else for(;!i.eol();){var o=Ne(a.token,i,this.state);if(o&&(n=this.emitToken(this.lang.tokenTable.resolve(o),this.parsedPos+i.start,this.parsedPos+i.pos,n)),1e4<i.start)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){var e=u.Tree.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:Pe,topID:0,maxBufferLength:2048,reused:this.chunkReused}),e=new u.Tree(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]);this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new u.Tree(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}}function Ne(t,r,n){r.start=r.pos;for(let e=0;e<10;e++){var a=t(r,n);if(r.pos>r.start)return a}throw new Error(\"Stream parser failed to advance stream.\")}const Me=Object.create(null),F=[u.NodeType.none],Pe=new u.NodeSet(F),De=[],xe=Object.create(null),Le=Object.create(null);for([de,pe]of[[\"variable\",\"variableName\"],[\"variable-2\",\"variableName.special\"],[\"string-2\",\"string.special\"],[\"def\",\"variableName.definition\"],[\"tag\",\"tagName\"],[\"attribute\",\"attributeName\"],[\"type\",\"typeName\"],[\"builtin\",\"variableName.standard\"],[\"qualifier\",\"modifier\"],[\"error\",\"invalid\"],[\"header\",\"heading\"],[\"property\",\"propertyName\"]])Le[de]=je(Me,pe);class Fe{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Le)}resolve(e){return e?this.table[e]||(this.table[e]=je(this.extra,e)):0}}const Ue=new Fe(Me);function Be(e,t){-1<De.indexOf(e)||(De.push(e),console.warn(t))}function je(t,e){var r,n,a=[];for(r of e.split(\" \")){let e=[];for(var i of r.split(\".\")){var o=t[i]||c.tags[i];o?\"function\"==typeof o?e.length?e=e.map(o):Be(i,`Modifier ${i} used at start of tag`):e.length?Be(i,`Tag ${i} used as modifier`):e=Array.isArray(o)?o:[o]:Be(i,\"Unknown highlighting tag \"+i)}for(var s of e)a.push(s)}return a.length?(n=(e=e.replace(/ /g,\"_\"))+\" \"+a.map(e=>e.id),(xe[n]||(n=xe[n]=u.NodeType.define({id:F.length,name:e,props:[c.styleTags({[e]:a})]}),F.push(n),n)).id):0}function He(e){return e.length<=4096&&/[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/.test(e)}function Ge(e){for(var t=e.iter();!t.next().done;)if(He(t.value))return!0;return!1}const Ve=l.Facet.define({combine:e=>e.some(e=>e)});const qe=o.ViewPlugin.fromClass(class{constructor(e){this.always=e.state.facet(Ve)||e.textDirection!=o.Direction.LTR||e.state.facet(o.EditorView.perLineTextDirection),this.hasRTL=!this.always&&Ge(e.state.doc),this.tree=w(e.state),this.decorations=this.always||this.hasRTL?ze(e,this.tree,this.always):o.Decoration.none}update(e){var t,r=e.state.facet(Ve)||e.view.textDirection!=o.Direction.LTR||e.state.facet(o.EditorView.perLineTextDirection);r||this.hasRTL||!function(e){let i=!1;return e.iterChanges((e,t,r,n,a)=>{!i&&Ge(a)&&(i=!0)}),i}(e.changes)||(this.hasRTL=!0),(r||this.hasRTL)&&(t=w(e.state),r!=this.always||t!=this.tree||e.docChanged||e.viewportChanged)&&(this.tree=t,this.always=r,this.decorations=ze(e.view,t,r))}},{provide:t=>{function e(e){return null!=(e=null==(e=e.plugin(t))?void 0:e.decorations)?e:o.Decoration.none}return[o.EditorView.outerDecorations.of(e),l.Prec.lowest(o.EditorView.bidiIsolatedRanges.of(e))]}});function ze(e,t,r){let n=new l.RangeSetBuilder,a=e.visibleRanges;for(var{from:i,to:o}of a=r?a:function(e,t){let r=t.iter(),n=0,a=[],i=null;for(var{from:o,to:s}of e)if(!(i&&i.to>o&&(o=i.to)>=s))for(n+r.value.length<o&&(r.next(o-(n+r.value.length)),n=o);;){var l=n,c=n+r.value.length;if(!r.lineBreak&&He(r.value)&&(i&&i.to>l-10?i.to=Math.min(s,c):a.push(i={from:l,to:Math.min(s,c)})),c>=s)break;n=c,r.next()}return a}(a,e.state.doc))t.iterate({enter:e=>{var t=e.type.prop(u.NodeProp.isolate);t&&n.add(e.from,e.to,We[t])},from:i,to:o});return n.finish()}const We={rtl:o.Decoration.mark({class:\"cm-iso\",inclusive:!0,attributes:{dir:\"rtl\"},bidiIsolate:o.Direction.RTL}),ltr:o.Decoration.mark({class:\"cm-iso\",inclusive:!0,attributes:{dir:\"ltr\"},bidiIsolate:o.Direction.LTR}),auto:o.Decoration.mark({class:\"cm-iso\",inclusive:!0,attributes:{dir:\"auto\"},bidiIsolate:null})};return Ye.DocInput=t,Ye.HighlightStyle=D,Ye.IndentContext=b,Ye.LRLanguage=r,Ye.Language=p,Ye.LanguageDescription=class $e{constructor(e,t,r,n,a,i=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=n,this.loadFunc=a,this.support=i,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError(\"Must pass either 'load' or 'support' to LanguageDescription.of\");t=()=>Promise.resolve(r)}return new $e(e.name,(e.alias||[]).concat(e.name).map(e=>e.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(var r of e)if(r.filename&&r.filename.test(t))return r;var n=/\\.([^.]+)$/.exec(t);if(n)for(var a of e)if(-1<a.extensions.indexOf(n[1]))return a;return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(var n of e)if(n.alias.some(e=>e==t))return n;if(r)for(var a of e)for(var i of a.alias){var o=t.indexOf(i);if(-1<o&&(2<i.length||!/\\w/.test(t[o-1])&&!/\\w/.test(t[o+i.length])))return a}return null}},Ye.LanguageSupport=class{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}},Ye.ParseContext=h,Ye.StreamLanguage=we,Ye.StringStream=Ae,Ye.TreeIndentContext=S,Ye.bidiIsolates=function(e={}){var t=[qe];return e.alwaysIsolate&&t.push(Ve.of(!0)),t},Ye.bracketMatching=function(e={}){return[me.of(e),Te]},Ye.bracketMatchingHandle=ve,Ye.codeFolding=P,Ye.continuedIndent=function({except:r,units:n=1}={}){return e=>{var t=r&&r.test(e.textAfter);return e.baseIndent+(t?0:n*e.unit)}},Ye.defaultHighlightStyle=fe,Ye.defineLanguageFacet=s,Ye.delimitedIndent=function({closing:t,align:r=!0,units:n=1}){return e=>$(e,r,n,t)},Ye.ensureSyntaxTree=n,Ye.flatIndent=e=>e.baseIndent,Ye.foldAll=Z,Ye.foldCode=e,Ye.foldEffect=O,Ye.foldGutter=function(e={}){let t={...ie,...e},a=new oe(t,!0),i=new oe(t,!1),r=o.ViewPlugin.fromClass(class{constructor(e){this.from=e.viewport.from,this.markers=this.buildMarkers(e)}update(e){(e.docChanged||e.viewportChanged||e.startState.facet(_)!=e.state.facet(_)||e.startState.field(k,!1)!=e.state.field(k,!1)||w(e.startState)!=w(e.state)||t.foldingChanged(e))&&(this.markers=this.buildMarkers(e.view))}buildMarkers(e){var t,r=new l.RangeSetBuilder;for(t of e.viewportLineBlocks){var n=I(e.state,t.from,t.to)?i:A(e.state,t.from,t.to)?a:null;n&&r.add(t.from,t.from,n)}return r.finish()}}),n=t[\"domEventHandlers\"];return[r,o.gutter({class:\"cm-foldGutter\",markers(e){return(null==(e=e.plugin(r))?void 0:e.markers)||l.RangeSet.empty},initialSpacer(){return new oe(t,!1)},domEventHandlers:{...n,click:(e,t,r)=>{return!((!n.click||!n.click(e,t,r))&&((r=I(e.state,t.from,t.to))?(e.dispatch({effects:C.of(r)}),0):!(r=A(e.state,t.from,t.to))||(e.dispatch({effects:O.of(r)}),0)))}}}),P()]},Ye.foldInside=function(e){var t=e.firstChild,r=e.lastChild;return t&&t.to<r.from?{from:t.to,to:r.type.isError?e.to:r.from}:null},Ye.foldKeymap=ee,Ye.foldNodeProp=Y,Ye.foldService=K,Ye.foldState=k,Ye.foldable=A,Ye.foldedRanges=function(e){return e.field(k,!1)||l.RangeSet.empty},Ye.forceParsing=function(e,t=e.viewport.to,r=100){return(t=n(e.state,t,r))!=w(e.state)&&e.dispatch({}),!!t},Ye.getIndentUnit=y,Ye.getIndentation=v,Ye.highlightingFor=function(e,t,r){e=x(e);let n=null;if(e)for(var a of e)(!a.scope||r&&a.scope(r))&&(a=a.style(t))&&(n=n?n+\" \"+a:a);return n},Ye.indentNodeProp=E,Ye.indentOnInput=function(){return l.EditorState.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent(\"input.type\")&&!e.isUserEvent(\"input.complete\"))return e;var t=e.startState.languageDataAt(\"indentOnInput\",e.startState.selection.main.head);if(!t.length)return e;var r,n=e.newDoc,a=e.newSelection.main[\"head\"],i=n.lineAt(a);if(a>i.from+200)return e;let o=n.sliceString(i.from,a);if(!t.some(e=>e.test(o)))return e;let s=e[\"state\"],l=-1,c=[];for({head:r}of s.selection.ranges){var u,d,p,f=s.doc.lineAt(r);f.from!=l&&(l=f.from,null!=(u=v(s,f.from))&&(d=/^\\s*/.exec(f.text)[0])!=(p=T(s,u)))&&c.push({from:f.from,to:f.from+d.length,insert:p})}return c.length?[e,{changes:c,sequential:!0}]:e})},Ye.indentRange=function(r,e,n){let a=Object.create(null);var i=new b(r,{overrideIndentation:e=>{return null!=(e=a[e])?e:-1}}),o=[];for(let t=e;t<=n;){var s,l,c=r.doc.lineAt(t);t=c.to+1;let e=v(i,c.from);null!=e&&(/\\S/.test(c.text)||(e=0),(s=/^\\s*/.exec(c.text)[0])!=(l=T(r,e)))&&(a[c.from]=e,o.push({from:c.from,to:c.from+s.length,insert:l}))}return r.changes(o)},Ye.indentService=q,Ye.indentString=T,Ye.indentUnit=i,Ye.language=_,Ye.languageDataProp=d,Ye.matchBrackets=L,Ye.sublanguageProp=B,Ye.syntaxHighlighting=function(t,e){let r=[ue],n;return t instanceof D&&(t.module&&r.push(o.EditorView.styleModule.of(t.module)),n=t.themeType),null!=e&&e.fallback?r.push(ce.of(t)):n?r.push(le.computeN([o.EditorView.darkTheme],e=>e.facet(o.EditorView.darkTheme)==(\"dark\"==n)?[t]:[])):r.push(le.of(t)),r},Ye.syntaxParserRunning=function(e){return(null==(e=e.plugin(V))?void 0:e.isWorking())||!1},Ye.syntaxTree=w,Ye.syntaxTreeAvailable=function(e,t=e.doc.length){var r;return(null==(r=e.field(p.state,!1))?void 0:r.context.isDone(t))||!1},Ye.toggleFold=e=>{var t,r=[];for(t of a(e)){var n=I(e.state,t.from,t.to);n?r.push(C.of(n),N(e,n,!1)):(n=function(t,r){for(let e=r;;){var n=A(t.state,e.from,e.to);if(n&&n.to>r.from)return n;if(!e.from)return null;e=t.lineBlockAt(e.from-1)}}(e,t))&&r.push(O.of(n),N(e,n))}return 0<r.length&&e.dispatch({effects:R(e.state,r)}),!!r.length},Ye.unfoldAll=X,Ye.unfoldCode=Q,Ye.unfoldEffect=C,Ye}var PR,DR,xR={};function LR(){if(!PR){PR=1;{var f=xR;const i=1024;let t=0;class v{constructor(e,t){this.from=e,this.to=t}}class q{constructor(e={}){this.id=t++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error(\"This node type doesn't define a deserialize function\")})}add(t){if(this.perNode)throw new RangeError(\"Can't add per-node props to node types\");return\"function\"!=typeof t&&(t=E.match(t)),e=>{e=t(e);return void 0===e?null:[this,e]}}}q.closedBy=new q({deserialize:e=>e.split(\" \")}),q.openedBy=new q({deserialize:e=>e.split(\" \")}),q.group=new q({deserialize:e=>e.split(\" \")}),q.isolate=new q({deserialize:e=>{if(e&&\"rtl\"!=e&&\"ltr\"!=e&&\"auto\"!=e)throw new RangeError(\"Invalid value for isolate: \"+e);return e||\"auto\"}}),q.contextHash=new q({perNode:!0}),q.lookAhead=new q({perNode:!0}),q.mounted=new q({perNode:!0});class b{constructor(e,t,r){this.tree=e,this.overlay=t,this.parser=r}static get(e){return e&&e.props&&e.props[q.mounted.id]}}const s=Object.create(null);class E{constructor(e,t,r,n=0){this.name=e,this.props=t,this.id=r,this.flags=n}static define(e){var t=e.props&&e.props.length?Object.create(null):s,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(null==e.name?8:0),n=new E(e.name||\"\",t,e.id,r);if(e.props)for(var a of e.props)if(a=Array.isArray(a)?a:a(n)){if(a[0].perNode)throw new RangeError(\"Can't store a per-node prop on a node type\");t[a[0].id]=a[1]}return n}prop(e){return this.props[e.id]}get isTop(){return 0<(1&this.flags)}get isSkipped(){return 0<(2&this.flags)}get isError(){return 0<(4&this.flags)}get isAnonymous(){return 0<(8&this.flags)}is(e){var t;return\"string\"==typeof e?this.name==e||!!(t=this.prop(q.group))&&-1<t.indexOf(e):this.id==e}static match(e){let a=Object.create(null);for(var t in e)for(var r of t.split(\" \"))a[r]=e[t];return r=>{for(let e=r.prop(q.group),t=-1;t<(e?e.length:0);t++){var n=a[t<0?r.name:e[t]];if(n)return n}}}}E.none=new E(\"\",Object.create(null),0,8);const a=new WeakMap,r=new WeakMap;var e;f.IterMode=void 0,(e=f.IterMode||(f.IterMode={}))[e.ExcludeBuffers=1]=\"ExcludeBuffers\",e[e.IncludeAnonymous=2]=\"IncludeAnonymous\",e[e.IgnoreMounts=4]=\"IgnoreMounts\",e[e.IgnoreOverlays=8]=\"IgnoreOverlays\";class z{constructor(e,t,r,n,a){if(this.type=e,this.children=t,this.positions=r,this.length=n,this.props=null,a&&a.length){this.props=Object.create(null);for(var[i,o]of a)this.props[\"number\"==typeof i?i:i.id]=o}}toString(){var e,t=b.get(this);if(t&&!t.overlay)return t.tree.toString();let r=\"\";for(e of this.children){var n=e.toString();n&&(r&&(r+=\",\"),r+=n)}return this.type.name?(/\\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(r.length?\"(\"+r+\")\":\"\"):r}cursor(e=0){return new w(this.topNode,e)}cursorAt(e,t=0,r){var n=a.get(this)||this.topNode,n=new w(n);return n.moveTo(e,t),a.set(this,n._tree),n}get topNode(){return new S(this,0,0,null)}resolve(e,t=0){e=c(a.get(this)||this.topNode,e,t,!1);return a.set(this,e),e}resolveInner(e,t=0){e=c(r.get(this)||this.topNode,e,t,!0);return r.set(this,e),e}resolveStack(e,n=0){{var a,i=e,o=n,s,l;let t=this.resolveInner(i,o),r=null;for(let e=t instanceof S?t:t.context.parent;e;e=e.parent)e.index<0?(s=e.parent,(r=r||[t]).push(s.resolve(i,o)),e=s):(s=b.get(e.tree))&&s.overlay&&s.overlay[0].from<=i&&s.overlay[s.overlay.length-1].to>=i&&(l=new S(s.tree,s.overlay[0].from+e.from,-1,e),(r=r||[t]).push(c(l,i,o,!1)));return r?u(r):t}}iterate(e){for(var{enter:t,leave:r,from:n=0,to:a=this.length}=e,e=e.mode||0,i=0<(e&f.IterMode.IncludeAnonymous),o=this.cursor(e|f.IterMode.IncludeAnonymous);;){let e=!1;if(o.from<=a&&o.to>=n&&(!i&&o.type.isAnonymous||!1!==t(o))){if(o.firstChild())continue;e=!0}for(;e&&r&&(i||!o.type.isAnonymous)&&r(o),!o.nextSibling();){if(!o.parent())return;e=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){var e=[];if(this.props)for(var t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:V(E.none,this.children,this.positions,0,this.children.length,0,this.length,(e,t,r)=>new z(this.type,e,t,r,this.propValues),e.makeTree||((e,t,r)=>new z(E.none,e,t,r)))}static build(t){{var r=t;let{buffer:e,nodeSet:M,maxBufferLength:P=i,reused:D=[],minRepeatType:x=M.types.length}=r,L=Array.isArray(e)?new l(e,e.length):e,F=M.types,U=0,B=0;function j(r,n,e,t,a,i){for(var o,s,{id:l,start:c,end:u,size:d}=L,p=B;d<0;){if(L.next(),-1==d)return o=D[l],e.push(o),void t.push(c-r);if(-3==d)return void(U=l);if(-4==d)return void(B=l);throw new RangeError(\"Unrecognized record size: \"+d)}let f=F[l],h,m,g=c-r;if(u-c<=P&&(m=function(e,t){let r=L.fork(),n=0,a=0,i=0,o=r.end-P,s={size:0,start:0,skip:0};e:for(var l=r.pos-e;r.pos>l;){var c=r.size;if(r.id==t&&0<=c)s.size=n,s.start=a,s.skip=i,i+=4,n+=4,r.next();else{var u=r.pos-c;if(c<0||u<l||r.start<o)break;let e=r.id>=x?4:0;var d=r.start;for(r.next();r.pos>u;){if(r.size<0){if(-3!=r.size)break e;e+=4}else r.id>=x&&(e+=4);r.next()}a=d,n+=c,i+=e}}(t<0||n==e)&&(s.size=n,s.start=a,s.skip=i);return 4<s.size?s:void 0}(L.pos-n,a))){var _=new Uint16Array(m.size-m.skip);let e=L.pos-m.size,t=_.length;for(;L.pos>e;)t=function t(r,n,a){let{id:i,start:o,end:s,size:l}=L;L.next();if(0<=l&&i<x){let e=a;if(4<l){let e=L.pos-(l-4);for(;L.pos>e;)a=t(r,n,a)}n[--a]=e,n[--a]=s-r,n[--a]=o-r,n[--a]=i}else-3==l?U=i:-4==l&&(B=i);return a}(m.start,_,t);h=new W(_,u-m.start,M),g=m.start-r}else{var y=L.pos-d,T=(L.next(),[]),v=[],b=l>=x?l:-1;let e=0,t=u;for(;L.pos>y;)if(0<=b&&L.id==b&&0<=L.size)L.end<=t-P&&(H(T,v,c,e,L.end,t,b,p),e=T.length,t=L.end),L.next();else if(2500<i){E=void 0;S=void 0;A=void 0;O=void 0;C=void 0;w=void 0;k=void 0;I=void 0;R=void 0;N=void 0;var E=c;var S=y;var A=T;var O=v;let r=[],e=0,t=-1;for(;L.pos>S;){var{id:C,start:w,end:k,size:I}=L;if(!(4<I)){if(-1<t&&w<t)break;t<0&&(t=k-P),r.push(C,w,k),e++}L.next()}if(e){var R=new Uint16Array(4*e),N=r[r.length-2];for(let e=r.length-3,t=0;0<=e;e-=3)R[t++]=r[e],R[t++]=r[e+1]-N,R[t++]=r[e+2]-N,R[t++]=t;A.push(new W(R,r[2]-N,M)),O.push(N-E)}}else j(c,y,T,v,b,i+1);0<=b&&0<e&&e<T.length&&H(T,v,c,e,c,t,b,p),T.reverse(),v.reverse(),h=-1<b&&0<e?V(s=f,T,v,0,T.length,0,u-c,n=(e,t,r)=>{let n=0,a=e.length-1,i,o;if(0<=a&&(i=e[a])instanceof z){if(!a&&i.type==s&&i.length==r)return i;(o=i.prop(q.lookAhead))&&(n=t[a]+i.length+o)}return G(s,e,t,r,n)},n):G(f,T,v,u-c,p-u)}e.push(h),t.push(g)}function H(e,t,r,n,a,i,o,s){for(var l=[],c=[];e.length>n;)l.push(e.pop()),c.push(t.pop()+r-a);e.push(G(M.types[o],l,c,i-a,s-i)),t.push(a-r)}function G(e,t,r,n,a=0,i){var o;return U&&(o=[q.contextHash,U],i=i?[o].concat(i):[o]),25<a&&(o=[q.lookAhead,a],i=i?[o].concat(i):[o]),new z(e,t,r,n,i)}for(var n=[],a=[];0<L.pos;)j(r.start||0,r.bufferStart||0,n,a,-1,0);return t=null!=(t=r.length)?t:n.length?a[0]+n[0].length:0,new z(F[r.topID],n.reverse(),a.reverse(),t)}}}z.empty=new z(E.none,[],[],0);class l{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new l(this.buffer,this.index)}}class W{constructor(e,t,r){this.buffer=e,this.length=t,this.set=r}get type(){return E.none}toString(){var t=[];for(let e=0;e<this.buffer.length;)t.push(this.childString(e)),e=this.buffer[e+3];return t.join(\",\")}childString(e){var t=this.buffer[e],r=this.buffer[e+3];let n=this.set.types[t],a=n.name;if(/\\W/.test(a)&&!n.isError&&(a=JSON.stringify(a)),r==(e+=4))return a;for(var i=[];e<r;)i.push(this.childString(e)),e=this.buffer[e+3];return a+\"(\"+i.join(\",\")+\")\"}findChild(t,r,n,a,i){let o=this[\"buffer\"],s=-1;for(let e=t;e!=r&&!(p(i,a,o[e+1],o[e+2])&&(s=e,0<n));e=o[e+3]);return s}slice(r,n,a){var i=this.buffer;let o=new Uint16Array(n-r),s=0;for(let e=r,t=0;e<n;){o[t++]=i[e++],o[t++]=i[e++]-a;var l=o[t++]=i[e++]-a;o[t++]=i[e++]-r,s=Math.max(s,l)}return new W(o,s,this.set)}}function p(e,t,r,n){switch(e){case-2:return r<t;case-1:return t<=n&&r<t;case 0:return r<t&&t<n;case 1:return r<=t&&t<n;case 2:return t<n;case 4:return 1}}function c(r,n,a,e){for(var i;r.from==r.to||(a<1?r.from>=n:r.from>n)||(-1<a?r.to<=n:r.to<n);){var t=!e&&r instanceof S&&r.index<0?null:r.parent;if(!t)return r;r=t}var o=e?0:f.IterMode.IgnoreOverlays;if(e)for(let e=r,t=e.parent;t;t=(e=t).parent)e instanceof S&&e.index<0&&(null==(i=t.enter(n,a,o))?void 0:i.from)!=e.from&&(r=t);for(;;){var s=r.enter(n,a,o);if(!s)return r;r=s}}class d{cursor(e=0){return new w(this,e)}getChild(e,t=null,r=null){e=n(this,e,t,r);return e.length?e[0]:null}getChildren(e,t=null,r=null){return n(this,e,t,r)}resolve(e,t=0){return c(this,e,t,!1)}resolveInner(e,t=0){return c(this,e,t,!0)}matchContext(e){return o(this,e)}enterUnfinishedNodesBefore(e){let t=this.childBefore(e),r=this;for(;t;){var n=t.lastChild;if(!n||n.to!=t.to)break;t=n.type.isError&&n.from==n.to?(r=t,n.prevSibling):n}return r}get node(){return this}get next(){return this.parent}}class S extends d{constructor(e,t,r,n){super(),this._tree=e,this.from=t,this.index=r,this._parent=n}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(r,n,a,i,o=0){for(let t=this;;){for(var{children:e,positions:s}=t._tree,l=0<n?e.length:-1;r!=l;r+=n){var c=e[r],u=s[r]+t.from;if(p(i,a,u,u+c.length))if(c instanceof W){if(!(o&f.IterMode.ExcludeBuffers)){var d=c.findChild(0,c.buffer.length,n,a-u,i);if(-1<d)return new O(new A(t,c,r,u),null,d)}}else if(o&f.IterMode.IncludeAnonymous||!c.type.isAnonymous||h(c)){let e;return o&f.IterMode.IgnoreMounts||!(e=b.get(c))||e.overlay?(d=new S(c,u,r,t),o&f.IterMode.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(n<0?c.children.length-1:0,n,a,i)):new S(e.tree,u,r,t)}}if(o&f.IterMode.IncludeAnonymous||!t.type.isAnonymous)return null;if(r=0<=t.index?t.index+n:n<0?-1:t._parent._tree.children.length,!(t=t._parent))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,r=0){let n;if(!(r&f.IterMode.IgnoreOverlays)&&(n=b.get(this._tree))&&n.overlay){var a,i,o=e-this.from;for({from:a,to:i}of n.overlay)if((0<t?a<=o:a<o)&&(t<0?i>=o:i>o))return new S(n.tree,n.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&0<=this.index?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&0<=this.index?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function n(e,t,r,n){var a=e.cursor(),i=[];if(!a.firstChild())return i;if(null!=r)for(let e=!1;!e;)if(e=a.type.is(r),!a.nextSibling())return i;for(;;){if(null!=n&&a.type.is(n))return i;if(a.type.is(t)&&i.push(a.node),!a.nextSibling())return null==n?i:[]}}function o(t,r,n=r.length-1){for(let e=t.parent;0<=n;e=e.parent){if(!e)return!1;if(!e.type.isAnonymous){if(r[n]&&r[n]!=e.name)return!1;n--}}return!0}class A{constructor(e,t,r,n){this.parent=e,this.buffer=t,this.index=r,this.start=n}}class O extends d{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,r){super(),this.context=e,this._parent=t,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,t,r){var n=this.context[\"buffer\"],n=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.context.start,r);return n<0?null:new O(this.context,this,n)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,r=0){return r&f.IterMode.ExcludeBuffers||(r=this.context.buffer,(r=r.findChild(this.index+4,r.buffer[this.index+3],0<t?1:-1,e-this.context.start,t))<0)?null:new O(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){var e=this.context[\"buffer\"],t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new O(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){var e=this.context[\"buffer\"],t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new O(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){var e,t=[],r=[],n=this.context[\"buffer\"],a=this.index+4,i=n.buffer[this.index+3];return a<i&&(e=n.buffer[this.index+1],t.push(n.slice(a,i,e)),r.push(0)),new z(this.type,t,r,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function u(t){if(!t.length)return null;let r=0,n=t[0];for(let e=1;e<t.length;e++){var a=t[e];(a.from>n.from||a.to<n.to)&&(n=a,r=e)}var e=n instanceof S&&n.index<0?null:n.parent,i=t.slice();return e?i[r]=e:i.splice(r,1),new C(i,n)}class C{constructor(e,t){this.heads=e,this.node=t}get next(){return u(this.heads)}}class w{get name(){return this.type.name}constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,t instanceof S)this.yieldNode(t);else{this._tree=t.context.parent,this.buffer=t.context;for(let e=t._parent;e;e=e._parent)this.stack.unshift(e.index);this.bufferNode=t,this.yieldBuf(t.index)}}yieldNode(e){return!!e&&(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0)}yieldBuf(e,t){this.index=e;var{start:r,buffer:n}=this.buffer;return this.type=t||n.set.types[n.buffer[e]],this.from=r+n.buffer[e+1],this.to=r+n.buffer[e+2],!0}yield(e){return!!e&&(e instanceof S?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)))}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,r){var n;return this.buffer?(n=this.buffer[\"buffer\"],!((n=n.findChild(this.index+4,n.buffer[this.index+3],e,t-this.buffer.start,r))<0)&&(this.stack.push(this.index),this.yieldBuf(n))):this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,r,this.mode))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,r=this.mode){return this.buffer?!(r&f.IterMode.ExcludeBuffers)&&this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,r))}parent(){var e;return this.buffer?this.stack.length?this.yieldBuf(this.stack.pop()):(e=this.mode&f.IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent(),this.buffer=null,this.yieldNode(e)):this.yieldNode(this.mode&f.IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent)}sibling(e){if(!this.buffer)return!!this._tree._parent&&this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode));var t=this.buffer[\"buffer\"],r=this.stack.length-1;if(e<0){var n=r<0?0:this.stack[r]+4;if(this.index!=n)return this.yieldBuf(t.findChild(n,this.index,-1,0,4))}else{n=t.buffer[this.index+3];if(n<(r<0?t.buffer.length:t.buffer[this.stack[r]+3]))return this.yieldBuf(n)}return r<0&&this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode))}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(r){let n,a,t=this[\"buffer\"];if(t){if(0<r){if(this.index<t.buffer.buffer.length)return!1}else for(let e=0;e<this.index;e++)if(t.buffer.buffer[e+3]<this.index)return!1;({index:n,parent:a}=t)}else({index:n,_parent:a}=this._tree);for(;a;{index:n,_parent:a}=a)if(-1<n)for(let e=n+r,t=r<0?-1:a._tree.children.length;e!=t;e+=r){var i=a._tree.children[e];if(this.mode&f.IterMode.IncludeAnonymous||i instanceof W||!i.type.isAnonymous||h(i))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(-1<t?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,t););return this}get node(){if(!this.buffer)return this._tree;let n=this.bufferNode,a=null,i=0;if(n&&n.context==this.buffer)e:for(let t=this.index,r=this.stack.length;0<=r;){for(let e=n;e;e=e._parent)if(e.index==t){if(t==this.index)return e;a=e,i=r+1;break e}t=this.stack[--r]}for(let e=i;e<this.stack.length;e++)a=new O(this.buffer,a,this.stack[e]);return this.bufferNode=new O(this.buffer,a,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(r,n){for(let t=0;;){let e=!1;if(this.type.isAnonymous||!1!==r(this)){if(this.firstChild()){t++;continue}this.type.isAnonymous||(e=!0)}for(;e&&n&&n(this),e=this.type.isAnonymous,!this.nextSibling();){if(!t)return;this.parent(),t--,e=!0}}}matchContext(r){if(!this.buffer)return o(this.node,r);var n=this.buffer[\"buffer\"],a=n.set[\"types\"];for(let e=r.length-1,t=this.stack.length-1;0<=e;t--){if(t<0)return o(this.node,r,e);var i=a[n.buffer[this.stack[t]]];if(!i.isAnonymous){if(r[e]&&r[e]!=i.name)return!1;e--}}return!0}}function h(e){return e.children.some(e=>e instanceof W||!e.type.isAnonymous||h(e))}const k=new WeakMap;function _(e,t){if(!e.isAnonymous||t instanceof W||t.type!=e)return 1;let r=k.get(t);if(null==r){r=1;for(var n of t.children){if(n.type!=e||!(n instanceof z)){r=1;break}r+=_(e,n)}k.set(t,r)}return r}function V(d,t,e,r,n,p,a,i,f){let o=0;for(let e=r;e<n;e++)o+=_(d,t[e]);let h=Math.ceil(1.5*o/8),m=[],g=[];return function a(i,o,e,s,l){for(let n=e;n<s;){let e=n,t=o[n],r=_(d,i[n]);for(n++;n<s;n++){var c=_(d,i[n]);if(r+c>=h)break;r+=c}if(n==e+1){if(r>h){var u=i[e];a(u.children,u.positions,0,u.children.length,o[e]+l);continue}m.push(i[e])}else u=o[n-1]+i[n-1].length-t,m.push(V(d,i,o,e,n,t,u,null,f));g.push(t+l-p)}}(t,e,r,n,0),(i||f)(m,g,a)}class I{constructor(e,t,r,n,a=!1,i=!1){this.from=e,this.to=t,this.tree=r,this.offset=n,this.open=(a?1:0)|(i?2:0)}get openStart(){return 0<(1&this.open)}get openEnd(){return 0<(2&this.open)}static addTree(e,t=[],r=!1){var n,a=[new I(0,e.length,e,0,!1,r)];for(n of t)n.to>e.length&&a.push(n);return a}static applyChanges(a,e,i=128){if(!e.length)return a;var o=[];let s=1,l=a.length?a[0]:null;for(let t=0,r=0,n=0;;t++){var c,u,d=t<e.length?e[t]:null,p=d?d.fromA:1e9;if(p-r>=i)for(;l&&l.from<p;){let e=l;if((r>=e.from||p<=e.to||n)&&(c=Math.max(e.from,r)-n,u=Math.min(e.to,p)-n,e=u<=c?null:new I(c,u,e.tree,e.offset+n,0<t,!!d)),e&&o.push(e),l.to>p)break;l=s<a.length?a[s++]:null}if(!d)break;r=d.toA,n=d.toA-d.toB}return o}}class P{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}class R{constructor(e,t,r,n,a){this.parser=e,this.parse=t,this.overlay=r,this.target=n,this.from=a}}function m(e){if(!e.length||e.some(e=>e.from>=e.to))throw new RangeError(\"Invalid inner parse ranges given: \"+JSON.stringify(e))}class D{constructor(e,t,r,n,a,i,o){this.parser=e,this.predicate=t,this.mounts=r,this.index=n,this.start=a,this.target=i,this.prev=o,this.depth=0,this.ranges=[]}}const N=new q({perNode:!0});class x{constructor(e,t,r,n,a){this.nest=t,this.input=r,this.fragments=n,this.ranges=a,this.inner=[],this.innerDone=0,this.baseTree=null,this.stoppedAt=null,this.baseParse=e}advance(){if(this.baseParse){var e=this.baseParse.advance();if(!e)return null;if(this.baseParse=null,this.baseTree=e,this.startInner(),null!=this.stoppedAt)for(var t of this.inner)t.parse.stopAt(this.stoppedAt)}if(this.innerDone==this.inner.length){let e=this.baseTree;return e=null!=this.stoppedAt?new z(e.type,e.children,e.positions,e.length,e.propValues.concat([[N,this.stoppedAt]])):e}var r,e=this.inner[this.innerDone],n=e.parse.advance();return n&&(this.innerDone++,(r=Object.assign(Object.create(null),e.target.props))[q.mounted.id]=new b(n,e.overlay,e.parser),e.target.props=r),null}get parsedPos(){if(this.baseParse)return 0;let t=this.input.length;for(let e=this.innerDone;e<this.inner.length;e++)this.inner[e].from<t&&(t=Math.min(t,this.inner[e].parse.parsedPos));return t}stopAt(t){if(this.stoppedAt=t,this.baseParse)this.baseParse.stopAt(t);else for(let e=this.innerDone;e<this.inner.length;e++)this.inner[e].parse.stopAt(t)}startInner(){var a,i,o,s=new L(this.fragments);let l=null,c=null,u=new w(new S(this.baseTree,this.ranges[0].from,0,null),f.IterMode.IncludeAnonymous|f.IterMode.IgnoreMounts);e:for(let r,n;;){let e=!0,t;if(null!=this.stoppedAt&&u.from>=this.stoppedAt)e=!1;else if(s.hasNode(u)){if(l){var d=l.mounts.find(e=>e.frag.from<=u.from&&e.frag.to>=u.to&&e.mount.overlay);if(d)for(var p of d.mount.overlay){let t=p.from+d.pos,r=p.to+d.pos;t>=u.from&&r<=u.to&&!l.ranges.some(e=>e.from<r&&e.to>t)&&l.ranges.push({from:t,to:r})}}e=!1}else c&&(n=function(e,t,r){for(var n of e){if(n.from>=r)break;if(n.to>t)return n.from<=t&&n.to>=r?2:1}return 0}(c.ranges,u.from,u.to))?e=2!=n:!u.type.isAnonymous&&(r=this.nest(u,this.input))&&(u.from<u.to||!r.overlay)?(u.tree||function(e){let d=e[\"node\"],p=[],t=d.context.buffer;for(;p.push(e.index),e.parent(),!e.tree;);let r=e.tree,n=r.children.indexOf(t),f=r.children[n],h=f.buffer,m=[n];r.children[n]=function e(t,r,n,a,i,o){var s=p[o],l=[],c=[],t=(g(f,t,s,l,c,a),h[s+1]),u=h[s+2],u=(m.push(l.length),o?e(s+4,h[s+3],f.set.types[h[s]],t,u-t,o-1):d.toTree());return l.push(u),c.push(t-a),g(f,h[s+3],r,l,c,a),new z(n,l,c,i)}(0,h.length,E.none,0,f.length,p.length-1);for(var a of m){var i=e.tree.children[a],o=e.tree.positions[a];e.yield(new S(i,o+e.from,a,e._tree))}}(u),a=s.findMounts(u.from,r.parser),\"function\"==typeof r.overlay?l=new D(r.parser,r.overlay,a,this.inner.length,u.from,u.tree,l):((i=y(this.ranges,r.overlay||(u.from<u.to?[new v(u.from,u.to)]:[]))).length&&m(i),!i.length&&r.overlay||this.inner.push(new R(r.parser,i.length?r.parser.startParse(this.input,T(a,i),i):r.parser.startParse(\"\"),r.overlay?r.overlay.map(e=>new v(e.from-u.from,e.to-u.from)):null,u.tree,(i.length?i[0]:u).from)),r.overlay?i.length&&(c={ranges:i,depth:0,prev:c}):e=!1)):l&&(t=l.predicate(u))&&(t=!0===t?new v(u.from,u.to):t).from<t.to&&l.ranges.push(t);if(e&&u.firstChild())l&&l.depth++,c&&c.depth++;else for(;!u.nextSibling();){if(!u.parent())break e;l&&!--l.depth&&((o=y(this.ranges,l.ranges)).length&&(m(o),this.inner.splice(l.index,0,new R(l.parser,l.parser.startParse(this.input,T(l.mounts,o),o),l.ranges.map(e=>new v(e.from-l.start,e.to-l.start)),l.target,o[0].from))),l=l.prev),c&&!--c.depth&&(c=c.prev)}}}}function g(e,t,r,n,a,i){var o;t<r&&(o=e.buffer[t+1],n.push(e.slice(t,r,o)),a.push(o-i))}class M{constructor(e,t){this.offset=t,this.done=!1,this.cursor=e.cursor(f.IterMode.IncludeAnonymous|f.IterMode.IgnoreMounts)}moveTo(e){for(var t=this[\"cursor\"],r=e-this.offset;!this.done&&t.from<r;)t.to>=e&&t.enter(r,1,f.IterMode.IgnoreOverlays|f.IterMode.ExcludeBuffers)||t.next(!1)||(this.done=!0)}hasNode(t){if(this.moveTo(t.from),!this.done&&this.cursor.from+this.offset==t.from&&this.cursor.tree)for(let e=this.cursor.tree;;){if(e==t.tree)return!0;if(!(e.children.length&&0==e.positions[0]&&e.children[0]instanceof z))break;e=e.children[0]}return!1}}class L{constructor(e){var t;this.fragments=e,this.curTo=0,this.fragI=0,e.length?(e=this.curFrag=e[0],this.curTo=null!=(t=e.tree.prop(N))?t:e.to,this.inner=new M(e.tree,-e.offset)):this.curFrag=this.inner=null}hasNode(e){for(;this.curFrag&&e.from>=this.curTo;)this.nextFrag();return this.curFrag&&this.curFrag.from<=e.from&&this.curTo>=e.to&&this.inner.hasNode(e)}nextFrag(){var e,t;this.fragI++,this.fragI==this.fragments.length?this.curFrag=this.inner=null:(t=this.curFrag=this.fragments[this.fragI],this.curTo=null!=(e=t.tree.prop(N))?e:t.to,this.inner=new M(t.tree,-t.offset))}findMounts(e,r){var n,a=[];if(this.inner){this.inner.cursor.moveTo(e,1);for(let t=this.inner.cursor.node;t;t=t.parent){var i=null==(n=t.tree)?void 0:n.prop(q.mounted);if(i&&i.parser==r)for(let e=this.fragI;e<this.fragments.length;e++){var o=this.fragments[e];if(o.from>=t.to)break;o.tree==this.curFrag.tree&&a.push({frag:o,pos:t.from-o.offset,mount:i})}}}return a}}function y(r,n){let a=null,i=n;for(let e=1,t=0;e<r.length;e++)for(var o=r[e-1].to,s=r[e].from;t<i.length;t++){var l=i[t];if(l.from>=s)break;l.to<=o||(a||(i=a=n.slice()),l.from<o?(a[t]=new v(l.from,o),l.to>s&&a.splice(t+1,0,new v(s,l.to))):l.to>s?a[t--]=new v(s,l.to):a.splice(t--,1))}return i}function T(e,a){var i=[];for(let{pos:t,mount:r,frag:n}of e){var o=t+(r.overlay?r.overlay[0].from:0),s=o+r.tree.length,l=Math.max(n.from,o),c=Math.min(n.to,s);if(r.overlay){var u=function(e,t,r,n){let a=0,i=0,o=!1,s=!1,l=-1e9;for(var c=[];;){var u,d,p=a==e.length?1e9:o?e[a].to:e[a].from,f=i==t.length?1e9:s?t[i].to:t[i].from;if(o!=s&&(u=Math.max(l,r))<(d=Math.min(p,f,n))&&c.push(new v(u,d)),1e9==(l=Math.min(p,f)))break;p==l&&(o?(o=!1,a++):o=!0),f==l&&(s?(s=!1,i++):s=!0)}return c}(a,r.overlay.map(e=>new v(e.from+t,e.to+t)),l,c);for(let e=0,t=l;;e++){var d=e==u.length,p=d?c:u[e].from;if(p>t&&i.push(new I(t,p,r.tree,-o,n.from>=t||n.openStart,n.to<=p||n.openEnd)),d)break;t=u[e].to}}else i.push(new I(l,c,r.tree,-o,n.from>=o||n.openStart,n.to<=s||n.openEnd))}return i}f.DefaultBufferLength=i,f.MountedTree=b,f.NodeProp=q,f.NodeSet=class F{constructor(t){this.types=t;for(let e=0;e<t.length;e++)if(t[e].id!=e)throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\")}extend(...t){var r,n=[];for(r of this.types){let e=null;for(var a of t)(a=a(r))&&((e=e||Object.assign({},r.props))[a[0].id]=a[1]);n.push(e?new E(r.name,e,r.id,r.flags):r)}return new F(n)}},f.NodeType=E,f.NodeWeakMap=class{constructor(){this.map=new WeakMap}setBuffer(e,t,r){let n=this.map.get(e);n||this.map.set(e,n=new Map),n.set(t,r)}getBuffer(e,t){e=this.map.get(e);return e&&e.get(t)}set(e,t){e instanceof O?this.setBuffer(e.context.buffer,e.index,t):e instanceof S&&this.map.set(e.tree,t)}get(e){return e instanceof O?this.getBuffer(e.context.buffer,e.index):e instanceof S?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}},f.Parser=class{startParse(e,t,r){return\"string\"==typeof e&&(e=new P(e)),r=r?r.length?r.map(e=>new v(e.from,e.to)):[new v(0,0)]:[new v(0,e.length)],this.createParse(e,t||[],r)}parse(e,t,r){for(var n=this.startParse(e,t,r);;){var a=n.advance();if(a)return a}}},f.Tree=z,f.TreeBuffer=W,f.TreeCursor=w,f.TreeFragment=I,f.parseMixed=function(a){return(e,t,r,n)=>new x(e,a,t,r,n)}}}return xR}function FR(){if(DR)return Mt;DR=1;var h=cR(),c=bR(),p=MR(),f=LR(),L=e=>{var t=e[\"state\"],t=t.doc.lineAt(t.selection.main.from),t=E(e.state,t.from);return t.line?F(e):!!t.block&&V(e)};function e(n,a){return({state:e,dispatch:t})=>{var r;return!e.readOnly&&!!(r=n(a,e))&&(t(e.update(r)),!0)}}const F=e(t,0);var U=e(t,1),B=e(t,2),j=e(r,0),H=e(r,1),G=e(r,2);const V=e((e,t)=>r(e,t,function(t){var r=[];for(var n of t.selection.ranges){var a=t.doc.lineAt(n.from);let e=n.to<=a.to?a:t.doc.lineAt(n.to);e.from>a.from&&e.from==n.to&&(e=n.to==a.to+1?a:t.doc.lineAt(n.to-1));n=r.length-1;0<=n&&r[n].to>a.from?r[n].to=e.to:r.push({from:a.from+/^\\s*/.exec(a.text)[0].length,to:e.to})}return r}(t)),0);function E(e,t){e=e.languageDataAt(\"commentTokens\",t,1);return e.length?e[0]:{}}const m=50;function r(e,p,t=p.selection.ranges){let f=t.map(e=>E(p,e.from).block);if(f.every(e=>e)){let r=t.map((r,n)=>{{var[n,{open:r,close:a},i,o]=[p,f[n],r.from,r.to],s=n.sliceDoc(i-m,i),l=n.sliceDoc(o,o+m),c=/\\s*$/.exec(s)[0].length,u=/^\\s*/.exec(l)[0].length,d=s.length-c;if(s.slice(d-r.length,d)==r&&l.slice(u,u+a.length)==a)return{open:{pos:i-c,margin:c&&1},close:{pos:o+u,margin:u&&1}};let e,t;return o-i<=2*m?e=t=n.sliceDoc(i,o):(e=n.sliceDoc(i,i+m),t=n.sliceDoc(o-m,o)),s=/^\\s*/.exec(e)[0].length,d=/\\s*$/.exec(t)[0].length,l=t.length-d-a.length,e.slice(s,s+r.length)==r&&t.slice(l,l+a.length)==a?{open:{pos:i+s+r.length,margin:/\\s/.test(e.charAt(s+r.length))?1:0},close:{pos:o-d-a.length,margin:/\\s/.test(t.charAt(l-1))?1:0}}:null}});if(2!=e&&!r.every(e=>e))return{changes:p.changes(t.map((e,t)=>r[t]?[]:[{from:e.from,insert:f[t].open+\" \"},{from:e.to,insert:\" \"+f[t].close}]))};if(1!=e&&r.some(e=>e)){var n,a,i,o=[];for(let e=0,t;e<r.length;e++)(t=r[e])&&(n=f[e],{open:a,close:i}=t,o.push({from:a.pos-n.open.length,to:a.pos+a.margin},{from:i.pos-i.margin,to:i.pos+n.close.length}));return{changes:o}}}return null}function t(e,n,t=n.selection.ranges){var a,i,o=[];let s=-1;for({from:a,to:i}of t){let t=o.length,r=1e9;var l=E(n,a).line;if(l){for(let e=a;e<=i;){var c,u,d,p=n.doc.lineAt(e);p.from>s&&(a==i||i>p.from)&&(s=p.from,u=(c=/^\\s*/.exec(p.text)[0].length)==p.length,d=p.text.slice(c,c+l.length)==l?c:-1,c<p.text.length&&c<r&&(r=c),o.push({line:p,comment:d,token:l,indent:c,empty:u,single:!1})),e=p.to+1}if(r<1e9)for(let e=t;e<o.length;e++)o[e].indent<o[e].line.text.length&&(o[e].indent=r);o.length==t+1&&(o[t].single=!0)}}if(2!=e&&o.some(e=>e.comment<0&&(!e.empty||e.single))){var r,f,h,m,g,_=[];for({line:r,token:f,indent:h,empty:m,single:g}of o)!g&&m||_.push({from:r.from+h,insert:f+\" \"});t=n.changes(_);return{changes:t,selection:n.selection.map(t,1)}}if(1!=e&&o.some(e=>0<=e.comment)){var y,T,v,b=[];for({line:y,comment:T,token:v}of o)if(0<=T){let e=y.from+T,t=e+v.length;\" \"==y.text[t-y.from]&&t++,b.push({from:e,to:t})}return{changes:b}}return null}const l=h.Annotation.define(),q=h.Annotation.define(),z=h.Facet.define(),W=h.Facet.define({combine(e){return h.combineConfig(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(r,n)=>(e,t)=>r(e,t)||n(e,t)})}}),i=h.StateField.define({create(){return g.empty},update(t,r){var n=r.state.facet(W),a=r.annotation(l);if(a){var i=s.fromTransaction(r,a.selection),o=a.side;let e=0==o?t.undone:t.done;return e=i?u(e,e.length,n.minDepth,i):te(e,r.startState.selection),new g(0==o?a.rest:e,0==o?e:a.rest)}var e,i=r.annotation(q);return\"full\"!=i&&\"before\"!=i||(t=t.isolate()),!1===r.annotation(h.Transaction.addToHistory)?r.changes.empty?t:t.addMapping(r.changes.desc):(o=s.fromTransaction(r),a=r.annotation(h.Transaction.time),e=r.annotation(h.Transaction.userEvent),o?t=t.addChanges(o,a,e,n,r):r.selection&&(t=t.addSelection(r.startState.selection,a,e,n.newGroupDelay)),\"full\"!=i&&\"after\"!=i?t:t.isolate())},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new g(e.done.map(s.fromJSON),e.undone.map(s.fromJSON))}});var $=i;function n(n,a){return function({state:e,dispatch:t}){var r;return!(!a&&e.readOnly||!(r=e.field(i,!1))||!(r=r.pop(n,e,a))||(t(r),0))}}const a=n(0,!1),o=n(1,!1);var K=n(0,!0),Y=n(1,!0);function J(t){return function(e){var e=e.field(i,!1);return e?(e=0==t?e.done:e.undone).length-(e.length&&!e[0].changes?1:0):0}}var Q=J(0),Z=J(1);class s{constructor(e,t,r,n,a){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=a}setSelAfter(e){return new s(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e;return{changes:null==(e=this.changes)?void 0:e.toJSON(),mapped:null==(e=this.mapped)?void 0:e.toJSON(),startSelection:null==(e=this.startSelection)?void 0:e.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(e){return new s(e.changes&&h.ChangeSet.fromJSON(e.changes),[],e.mapped&&h.ChangeDesc.fromJSON(e.mapped),e.startSelection&&h.EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(h.EditorSelection.fromJSON))}static fromTransaction(e,t){let r=d;for(var n of e.startState.facet(z)){n=n(e);n.length&&(r=r.concat(n))}return!r.length&&e.changes.empty?null:new s(e.changes.invert(e.startState.doc),r,void 0,t||e.startState.selection,d)}static selection(e){return new s(void 0,d,void 0,void 0,e)}}function u(e,t,r,n){e=e.slice(r+20<t+1?t-r-1:0,t);return e.push(n),e}function X(e,t){return e.length?t.length?e.concat(t):e:t}const d=[],ee=200;function te(e,t){var r,n;return e.length?(n=(r=e[e.length-1]).selectionsAfter.slice(Math.max(0,r.selectionsAfter.length-ee))).length&&n[n.length-1].eq(t)?e:(n.push(t),u(e,e.length-1,1e9,r.setSelAfter(n))):[s.selection([t])]}function re(e,t){if(!e.length)return e;let r=e.length,n=d;for(;r;){var a,i=function(e,t,r){r=X(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):d,r);if(!e.changes)return s.selection(r);var n=e.changes.map(t),a=t.mapDesc(e.changes,!0),i=e.mapped?e.mapped.composeDesc(a):a;return new s(n,h.StateEffect.mapEffects(e.effects,t),i,e.startSelection.map(a),r)}(e[r-1],t,n);if(i.changes&&!i.changes.empty||i.effects.length)return(a=e.slice(0,r))[r-1]=i,a;t=i.mapped,r--,n=i.selectionsAfter}return n.length?[s.selection(n)]:d}const ne=/^(input\\.type|delete)($|\\.)/;class g{constructor(e,t,r=0,n=void 0){this.done=e,this.undone=t,this.prevTime=r,this.prevUserEvent=n}isolate(){return this.prevTime?new g(this.done,this.undone):this}addChanges(e,t,r,n,a){let i=this.done,o=i[i.length-1];return i=o&&o.changes&&!o.changes.empty&&e.changes&&(!r||ne.test(r))&&(!o.selectionsAfter.length&&t-this.prevTime<n.newGroupDelay&&n.joinToEvent(a,function(e,t){let o=[],s=!1;return e.iterChangedRanges((e,t)=>o.push(e,t)),t.iterChangedRanges((e,t,r,n)=>{for(let e=0;e<o.length;){var a=o[e++],i=o[e++];a<=n&&r<=i&&(s=!0)}}),s}(o.changes,e.changes))||\"input.type.compose\"==r)?u(i,i.length-1,n.minDepth,new s(e.changes.compose(o.changes),X(h.StateEffect.mapEffects(e.effects,o.changes),o.effects),o.mapped,o.startSelection,d)):u(i,i.length,n.minDepth,e),new g(i,d,t,r)}addSelection(e,t,r,n){var a,i=this.done.length?this.done[this.done.length-1].selectionsAfter:d;return 0<i.length&&t-this.prevTime<n&&r==this.prevUserEvent&&r&&/^select($|\\.)/.test(r)&&(n=i[i.length-1],a=e,n.ranges.length==a.ranges.length)&&0===n.ranges.filter((e,t)=>e.empty!=a.ranges[t].empty).length?this:new g(te(this.done,e),this.undone,t,r)}addMapping(e){return new g(re(this.done,e),re(this.undone,e),this.prevTime,this.prevUserEvent)}pop(t,r,e){var n,a,i=0==t?this.done:this.undone;if(0!=i.length){var o=i[i.length-1],s=o.selectionsAfter[0]||r.selection;if(e&&o.selectionsAfter.length)return r.update({selection:o.selectionsAfter[o.selectionsAfter.length-1],annotations:l.of({side:t,rest:(n=(e=i)[e.length-1],(a=e.slice())[e.length-1]=n.setSelAfter(n.selectionsAfter.slice(0,n.selectionsAfter.length-1)),a),selection:s}),userEvent:0==t?\"select.undo\":\"select.redo\",scrollIntoView:!0});if(o.changes){let e=1==i.length?d:i.slice(0,i.length-1);return o.mapped&&(e=re(e,o.mapped)),r.update({changes:o.changes,selection:o.startSelection,effects:o.effects,annotations:l.of({side:t,rest:e,selection:s}),filter:!1,userEvent:0==t?\"undo\":\"redo\",scrollIntoView:!0})}}return null}}g.empty=new g(d,d);var ae=[{key:\"Mod-z\",run:a,preventDefault:!0},{key:\"Mod-y\",mac:\"Mod-Shift-z\",run:o,preventDefault:!0},{linux:\"Ctrl-Shift-z\",run:o,preventDefault:!0},{key:\"Mod-u\",run:K,preventDefault:!0},{key:\"Alt-u\",mac:\"Mod-Shift-u\",run:Y,preventDefault:!0}];function _(e,t){return h.EditorSelection.create(e.ranges.map(t),e.mainIndex)}function y(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:\"select\"})}function T({state:e,dispatch:t},r){r=_(e.selection,r);return!r.eq(e.selection,!0)&&(t(y(e,r)),!0)}function v(e,t){return h.EditorSelection.cursor(t?e.to:e.from)}function b(t,r){return T(t,e=>e.empty?t.moveByChar(e,r):v(e,r))}function S(e){return e.textDirectionAt(e.state.selection.main.head)==c.Direction.LTR}var ie=e=>b(e,!S(e)),oe=e=>b(e,S(e));function se(e,t,r){let n=t.head,a=e.doc.lineAt(n);return n=n==(r?a.to:a.from)?r?Math.min(e.doc.length,a.to+1):Math.max(0,a.from-1):a.from+h.findClusterBreak(a.text,n-a.from,r),h.EditorSelection.cursor(n,r?-1:1)}function le(t,r){return T(t,e=>e.empty?se(t.state,e,r):v(e,r))}function A(t,r){return T(t,e=>e.empty?t.moveByGroup(e,r):v(e,r))}var ce=e=>A(e,!S(e)),ue=e=>A(e,S(e));function de(e,t,r){let n=e.state.charCategorizer(t),a=n(r),i=a!=h.CharCategory.Space;return e=>{e=n(e);return e!=h.CharCategory.Space?i&&e==a:!(i=!1)}}const pe=\"undefined\"!=typeof Intl&&Intl.Segmenter?new Intl.Segmenter(void 0,{granularity:\"word\"}):null;function fe(n,e,a){let i=n.state.charCategorizer(e.from),o=h.CharCategory.Space,s=e.from,l=0,c=!1,u=!1,d=!1,t=e=>{if(c)return!1;s+=a?e.length:-e.length;let t=i(e),r;if(t==h.CharCategory.Word&&e.charCodeAt(0)<128&&/[\\W_]/.test(e)&&(t=-1),(o=o==h.CharCategory.Space?t:o)!=t)return!1;if(o==h.CharCategory.Word)if(e.toLowerCase()==e){if(!a&&u)return!1;d=!0}else if(d){if(a)return!1;c=!0}else{if(u&&a&&i(r=n.state.sliceDoc(s,s+1))==h.CharCategory.Word&&r.toLowerCase()==r)return!1;u=!0}return l++,!0};var r=n.moveByChar(e,a,e=>(t(e),t));if(pe&&o==h.CharCategory.Word&&r.from==e.from+l*(a?1:-1)){var p=Math.min(e.head,r.head),f=Math.max(e.head,r.head),p=n.state.sliceDoc(p,f);if(1<p.length&&/[\\u4E00-\\uffff]/.test(p)){f=Array.from(pe.segment(p));if(1<f.length)return a?h.EditorSelection.cursor(e.head+f[1].index,-1):h.EditorSelection.cursor(r.head+f[f.length-1].index,1)}}return r}function he(t,r){return T(t,e=>e.empty?fe(t,e,r):v(e,r))}function O(t,r,n){let a=p.syntaxTree(t).resolveInner(r.head);var i,o,s,l=n?f.NodeProp.closedBy:f.NodeProp.openedBy;for(let e=r.head;;){var c=n?a.childAfter(e):a.childBefore(e);if(!c)break;i=t,s=l,(o=c).type.prop(s)||(s=o.to-o.from)&&(2<s||/[^\\s,.;:]/.test(i.sliceDoc(o.from,o.to)))||o.firstChild?a=c:e=n?c.to:c.from}let e=a.type.prop(l),u,d;return d=e&&(u=n?p.matchBrackets(t,a.from,1):p.matchBrackets(t,a.to,-1))&&u.matched?n?u.end.to:u.end.from:n?a.to:a.from,h.EditorSelection.cursor(d,n?-1:1)}var me=t=>T(t,e=>O(t.state,e,!S(t))),ge=t=>T(t,e=>O(t.state,e,S(t)));function _e(r,n){return T(r,e=>{var t;return e.empty?(t=r.moveVertically(e,n)).head!=e.head?t:r.moveToLineBoundary(e,n):v(e,n)})}var ye=e=>_e(e,!1),Te=e=>_e(e,!0);function ve(e){var t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2;let r=0,n=0,a;if(t){for(var i of e.state.facet(c.EditorView.scrollMargins)){i=i(e);null!=i&&i.top&&(r=Math.max(null==i?void 0:i.top,r)),null!=i&&i.bottom&&(n=Math.max(null==i?void 0:i.bottom,n))}a=e.scrollDOM.clientHeight-r-n}else a=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:n,selfScroll:t,height:Math.max(e.defaultLineHeight,a-5)}}function be(t,r){let n=ve(t);var e,a,i,o=t[\"state\"],s=_(o.selection,e=>e.empty?t.moveVertically(e,r,n.height):v(e,r));if(s.eq(o.selection))return!1;let l;return n.selfScroll&&(e=t.coordsAtPos(o.selection.main.head),a=(i=t.scrollDOM.getBoundingClientRect()).top+n.marginTop,i=i.bottom-n.marginBottom,e)&&e.top>a&&e.bottom<i&&(l=c.EditorView.scrollIntoView(s.main.head,{y:\"start\",yMargin:e.top-a})),t.dispatch(y(o,s),{effects:l}),!0}var Ee=e=>be(e,!1),C=e=>be(e,!0);function w(e,t,r){let n=e.lineBlockAt(t.head),a=e.moveToLineBoundary(t,r);return a.head==t.head&&a.head!=(r?n.to:n.from)&&(a=e.moveToLineBoundary(t,r,!1)),a=!r&&a.head==n.from&&n.length&&(r=/^\\s*/.exec(e.state.sliceDoc(n.from,Math.min(n.from+100,n.to)))[0].length)&&t.head!=n.from+r?h.EditorSelection.cursor(n.from+r):a}var Se=t=>T(t,e=>w(t,e,!0)),Ae=t=>T(t,e=>w(t,e,!1)),Oe=t=>T(t,e=>w(t,e,!S(t))),Ce=t=>T(t,e=>w(t,e,S(t))),we=t=>T(t,e=>h.EditorSelection.cursor(t.lineBlockAt(e.head).from,1)),ke=t=>T(t,e=>h.EditorSelection.cursor(t.lineBlockAt(e.head).to,-1));function Ie(r,e,n){let a=!1,t=_(r.selection,e=>{var t=p.matchBrackets(r,e.head,-1)||p.matchBrackets(r,e.head,1)||0<e.head&&p.matchBrackets(r,e.head-1,1)||e.head<r.doc.length&&p.matchBrackets(r,e.head+1,-1);if(!t||!t.end)return e;a=!0;t=t.start.from==e.head?t.end.to:t.end.from;return n?h.EditorSelection.range(e.anchor,t):h.EditorSelection.cursor(t)});return!!a&&(e(y(r,t)),!0)}var Re=({state:e,dispatch:t})=>Ie(e,t,!1);function k(e,r){var t=_(e.state.selection,e=>{var t=r(e);return h.EditorSelection.range(e.anchor,t.head,t.goalColumn,t.bidiLevel||void 0)});return!t.eq(e.state.selection)&&(e.dispatch(y(e.state,t)),!0)}function I(t,r){return k(t,e=>t.moveByChar(e,r))}var Ne=e=>I(e,!S(e)),Me=e=>I(e,S(e));function R(t,r){return k(t,e=>t.moveByGroup(e,r))}var Pe=e=>R(e,!S(e)),De=e=>R(e,S(e));function xe(t,r){return k(t,e=>fe(t,e,r))}var Le=t=>k(t,e=>O(t.state,e,!S(t))),Fe=t=>k(t,e=>O(t.state,e,S(t)));function Ue(t,r){return k(t,e=>t.moveVertically(e,r))}var Be=e=>Ue(e,!1),je=e=>Ue(e,!0);function He(t,r){return k(t,e=>t.moveVertically(e,r,ve(t).height))}var Ge=e=>He(e,!1),Ve=e=>He(e,!0),qe=t=>k(t,e=>w(t,e,!0)),ze=t=>k(t,e=>w(t,e,!1)),We=t=>k(t,e=>w(t,e,!S(t))),$e=t=>k(t,e=>w(t,e,S(t))),Ke=t=>k(t,e=>h.EditorSelection.cursor(t.lineBlockAt(e.head).from)),Ye=t=>k(t,e=>h.EditorSelection.cursor(t.lineBlockAt(e.head).to)),Je=({state:e,dispatch:t})=>(t(y(e,{anchor:0})),!0),Qe=({state:e,dispatch:t})=>(t(y(e,{anchor:e.doc.length})),!0),Ze=({state:e,dispatch:t})=>(t(y(e,{anchor:e.selection.main.anchor,head:0})),!0),Xe=({state:e,dispatch:t})=>(t(y(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),et=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:\"select\"})),!0),tt=({state:r,dispatch:e})=>{var t=D(r).map(({from:e,to:t})=>h.EditorSelection.range(e,Math.min(t+1,r.doc.length)));return e(r.update({selection:h.EditorSelection.create(t),userEvent:\"select\"})),!0},rt=({state:e,dispatch:t})=>{var r=_(e.selection,t=>{let r=p.syntaxTree(e),n=r.resolveStack(t.from,1);var a;for(let e=n=t.empty&&(a=r.resolveStack(t.from,-1)).node.from>=n.node.from&&a.node.to<=n.node.to?a:n;e;e=e.next){var i=e[\"node\"];if((i.from<t.from&&i.to>=t.to||i.to>t.to&&i.from<=t.from)&&e.next)return h.EditorSelection.range(i.to,i.from)}return t});return!r.eq(e.selection)&&(t(y(e,r)),!0)},nt=({state:e,dispatch:t})=>{let r=e.selection,n=null;return 1<r.ranges.length?n=h.EditorSelection.create([r.main]):r.main.empty||(n=h.EditorSelection.create([h.EditorSelection.cursor(r.main.head)])),!!n&&(t(y(e,n)),!0)};function N(a,i){if(a.state.readOnly)return!1;let o=\"delete.selection\",e=a[\"state\"];var t=e.changeByRange(t=>{let{from:r,to:n}=t;if(r==n){let e=i(t);e<r?(o=\"delete.backward\",e=M(a,e,!1)):e>r&&(o=\"delete.forward\",e=M(a,e,!0)),r=Math.min(r,e),n=Math.max(n,e)}else r=M(a,r,!1),n=M(a,n,!0);return r==n?{range:t}:{changes:{from:r,to:n},range:h.EditorSelection.cursor(r,r<t.head?-1:1)}});return!t.changes.empty&&(a.dispatch(e.update(t,{scrollIntoView:!0,userEvent:o,effects:\"delete.selection\"==o?c.EditorView.announce.of(e.phrase(\"Selection deleted\")):void 0})),!0)}function M(t,r,n){if(t instanceof c.EditorView)for(var e of t.state.facet(c.EditorView.atomicRanges).map(e=>e(t)))e.between(r,r,(e,t)=>{e<r&&r<t&&(r=n?t:e)});return r}const at=(s,l,c)=>N(s,e=>{let t=e.from,r=s[\"state\"],n=r.doc.lineAt(t),a,i;if(c&&!l&&t>n.from&&t<n.from+200&&!/[^ \\t]/.test(a=n.text.slice(0,t-n.from))){if(\"\\t\"==a[a.length-1])return t-1;var o=h.countColumn(a,r.tabSize)%p.getIndentUnit(r)||p.getIndentUnit(r);for(let e=0;e<o&&\" \"==a[a.length-1-e];e++)t--;i=t}else(i=h.findClusterBreak(n.text,t-n.from,l,l)+n.from)==t&&n.number!=(l?r.doc.lines:1)?i+=l?1:-1:!l&&/[\\ufe00-\\ufe0f]/.test(n.text.slice(i-n.from,t-n.from))&&(i=h.findClusterBreak(n.text,i-n.from,!1,!1)+n.from);return i});var P=e=>at(e,!1,!0),it=e=>at(e,!0,!1);const ot=(e,c)=>N(e,t=>{let r=t.head,n=e[\"state\"],a=n.doc.lineAt(r);var i=n.charCategorizer(r);for(let e=null;;){if(r==(c?a.to:a.from)){r==t.head&&a.number!=(c?n.doc.lines:1)&&(r+=c?1:-1);break}var o=h.findClusterBreak(a.text,r-a.from,c)+a.from,s=a.text.slice(Math.min(r,o)-a.from,Math.max(r,o)-a.from),l=i(s);if(null!=e&&l!=e)break;\" \"==s&&r==t.head||(e=l),r=o}return r});var st=e=>ot(e,!1),lt=e=>ot(e,!0),ct=r=>N(r,e=>{var t=r.lineBlockAt(e.head).to;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),ut=r=>N(r,e=>{var t=r.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),dt=r=>N(r,e=>{var t=r.moveToLineBoundary(e,!0).head;return e.head<t?t:Math.min(r.state.doc.length,e.head+1)}),pt=({state:e,dispatch:t})=>{var r;return!e.readOnly&&(r=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:h.Text.of([\"\",\"\"])},range:h.EditorSelection.cursor(e.from)})),t(e.update(r,{scrollIntoView:!0,userEvent:\"input\"})),!0)},ft=({state:a,dispatch:e})=>{var t;return!a.readOnly&&!(t=a.changeByRange(e=>{var t,r,n;return e.empty&&0!=e.from&&e.from!=a.doc.length?{changes:{from:r=(t=e.from)==(n=a.doc.lineAt(t)).from?t-1:h.findClusterBreak(n.text,t-n.from,!1)+n.from,to:n=t==n.to?t+1:h.findClusterBreak(n.text,t-n.from,!0)+n.from,insert:a.doc.slice(t,n).append(a.doc.slice(r,t))},range:h.EditorSelection.cursor(n)}:{range:e}})).changes.empty&&(e(a.update(t,{scrollIntoView:!0,userEvent:\"move.character\"})),!0)};function D(r){let n=[],a=-1;for(var i of r.selection.ranges){let e=r.doc.lineAt(i.from),t=r.doc.lineAt(i.to);var o;i.empty||i.to!=t.from||(t=r.doc.lineAt(i.to-1)),a>=e.number?((o=n[n.length-1]).to=t.to,o.ranges.push(i)):n.push({from:e.from,to:t.to,ranges:[i]}),a=t.number+1}return n}function ht(e,t,r){if(e.readOnly)return!1;var n,a=[],i=[];for(n of D(e))if(r?n.to!=e.doc.length:0!=n.from){var o=e.doc.lineAt(r?n.to+1:n.from-1),s=o.length+1;if(r){a.push({from:n.to,to:o.to},{from:n.from,insert:o.text+e.lineBreak});for(var l of n.ranges)i.push(h.EditorSelection.range(Math.min(e.doc.length,l.anchor+s),Math.min(e.doc.length,l.head+s)))}else{a.push({from:o.from,to:n.from},{from:n.to,insert:e.lineBreak+o.text});for(var c of n.ranges)i.push(h.EditorSelection.range(c.anchor-s,c.head-s))}}return!!a.length&&(t(e.update({changes:a,scrollIntoView:!0,selection:h.EditorSelection.create(i,e.selection.mainIndex),userEvent:\"move.line\"})),!0)}var mt=({state:e,dispatch:t})=>ht(e,t,!1),gt=({state:e,dispatch:t})=>ht(e,t,!0);function _t(e,t,r){if(e.readOnly)return!1;var n,a=[];for(n of D(e))a.push(r?{from:n.from,insert:e.doc.slice(n.from,n.to)+e.lineBreak}:{from:n.to,insert:e.lineBreak+e.doc.slice(n.from,n.to)});return t(e.update({changes:a,scrollIntoView:!0,userEvent:\"input.copyline\"})),!0}var yt=({state:e,dispatch:t})=>_t(e,t,!1),Tt=({state:e,dispatch:t})=>_t(e,t,!0),vt=a=>{if(a.state.readOnly)return!1;let r=a[\"state\"],e=r.changes(D(r).map(({from:e,to:t})=>(0<e?e--:t<r.doc.length&&t++,{from:e,to:t})));var t=_(r.selection,e=>{let t=void 0;var r,n;return a.lineWrapping&&(r=a.lineBlockAt(e.head),n=a.coordsAtPos(e.head,e.assoc||1))&&(t=r.bottom+a.documentTop-n.bottom+a.defaultLineHeight/2),a.moveVertically(e,!0,t)}).map(e);return a.dispatch({changes:e,selection:t,scrollIntoView:!0,userEvent:\"delete.line\"}),!0};var bt=St(!1),Et=St(!0);function St(l){return({state:s,dispatch:e})=>{var t;return!s.readOnly&&(t=s.changeByRange(e=>{let{from:t,to:r}=e,n=s.doc.lineAt(t);var e=!l&&t==r&&function(e,t){if(/\\(\\)|\\[\\]|\\{\\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};var r=p.syntaxTree(e).resolveInner(t);let n=r.childBefore(t),a=r.childAfter(t),i;return n&&a&&n.to<=t&&a.from>=t&&(i=n.type.prop(f.NodeProp.closedBy))&&-1<i.indexOf(a.name)&&e.doc.lineAt(n.to).from==e.doc.lineAt(a.from).from&&!/\\S/.test(e.sliceDoc(n.to,a.from))?{from:n.to,to:a.from}:null}(s,t),a=(l&&(t=r=(r<=n.to?n:s.doc.lineAt(r)).to),new p.IndentContext(s,{simulateBreak:t,simulateDoubleBreak:!!e}));let i=p.getIndentation(a,t);for(null==i&&(i=h.countColumn(/^\\s*/.exec(s.doc.lineAt(t).text)[0],s.tabSize));r<n.to&&/\\s/.test(n.text[r-n.from]);)r++;e?{from:t,to:r}=e:t>n.from&&t<n.from+100&&!/\\S/.test(n.text.slice(0,t))&&(t=n.from);var o=[\"\",p.indentString(s,i)];return e&&o.push(p.indentString(s,a.lineIndent(n.from,-1))),{changes:{from:t,to:r,insert:h.Text.of(o)},range:h.EditorSelection.cursor(t+1+o[1].length)}}),e(s.update(t,{scrollIntoView:!0,userEvent:\"input\"})),!0)}}function At(a,i){let o=-1;return a.changeByRange(t=>{var r=[];for(let e=t.from;e<=t.to;){var n=a.doc.lineAt(e);n.number>o&&(t.empty||t.to>n.from)&&(i(n,r,t),o=n.number),e=n.to+1}var e=a.changes(r);return{changes:r,range:h.EditorSelection.range(e.mapPos(t.anchor,1),e.mapPos(t.head,1))}})}var Ot=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=Object.create(null),l=new p.IndentContext(o,{overrideIndentation:e=>{e=s[e];return null==e?-1:e}});var t=At(o,(e,t,r)=>{let n=p.getIndentation(l,e.from);var a,i;null!=n&&(/\\S/.test(e.text)||(n=0),(a=/^\\s*/.exec(e.text)[0])!=(i=p.indentString(o,n))||r.from<e.from+a.length)&&(s[e.from]=n,t.push({from:e.from,to:e.from+a.length,insert:i}))});return t.changes.empty||e(o.update(t,{userEvent:\"indent\"})),!0};const x=({state:r,dispatch:e})=>!r.readOnly&&(e(r.update(At(r,(e,t)=>{t.push({from:e.from,insert:r.facet(p.indentUnit)})}),{userEvent:\"input.indent\"})),!0);var Ct=({state:o,dispatch:e})=>!o.readOnly&&(e(o.update(At(o,(r,n)=>{var a=/^\\s*/.exec(r.text)[0];if(a){let e=h.countColumn(a,o.tabSize),t=0;for(var i=p.indentString(o,Math.max(0,e-p.getIndentUnit(o)));t<a.length&&t<i.length&&a.charCodeAt(t)==i.charCodeAt(t);)t++;n.push({from:r.from+t,to:r.from+a.length,insert:i.slice(t)})}}),{userEvent:\"delete.dedent\"})),!0),wt=e=>(e.setTabFocusMode(),!0),kt=[{key:\"Ctrl-b\",run:ie,shift:Ne,preventDefault:!0},{key:\"Ctrl-f\",run:oe,shift:Me},{key:\"Ctrl-p\",run:ye,shift:Be},{key:\"Ctrl-n\",run:Te,shift:je},{key:\"Ctrl-a\",run:we,shift:Ke},{key:\"Ctrl-e\",run:ke,shift:Ye},{key:\"Ctrl-d\",run:it},{key:\"Ctrl-h\",run:P},{key:\"Ctrl-k\",run:ct},{key:\"Ctrl-Alt-h\",run:st},{key:\"Ctrl-o\",run:pt},{key:\"Ctrl-t\",run:ft},{key:\"Ctrl-v\",run:C}],It=[{key:\"ArrowLeft\",run:ie,shift:Ne,preventDefault:!0},{key:\"Mod-ArrowLeft\",mac:\"Alt-ArrowLeft\",run:ce,shift:Pe,preventDefault:!0},{mac:\"Cmd-ArrowLeft\",run:Oe,shift:We,preventDefault:!0},{key:\"ArrowRight\",run:oe,shift:Me,preventDefault:!0},{key:\"Mod-ArrowRight\",mac:\"Alt-ArrowRight\",run:ue,shift:De,preventDefault:!0},{mac:\"Cmd-ArrowRight\",run:Ce,shift:$e,preventDefault:!0},{key:\"ArrowUp\",run:ye,shift:Be,preventDefault:!0},{mac:\"Cmd-ArrowUp\",run:Je,shift:Ze},{mac:\"Ctrl-ArrowUp\",run:Ee,shift:Ge},{key:\"ArrowDown\",run:Te,shift:je,preventDefault:!0},{mac:\"Cmd-ArrowDown\",run:Qe,shift:Xe},{mac:\"Ctrl-ArrowDown\",run:C,shift:Ve},{key:\"PageUp\",run:Ee,shift:Ge},{key:\"PageDown\",run:C,shift:Ve},{key:\"Home\",run:Ae,shift:ze,preventDefault:!0},{key:\"Mod-Home\",run:Je,shift:Ze},{key:\"End\",run:Se,shift:qe,preventDefault:!0},{key:\"Mod-End\",run:Qe,shift:Xe},{key:\"Enter\",run:bt,shift:bt},{key:\"Mod-a\",run:et},{key:\"Backspace\",run:P,shift:P},{key:\"Delete\",run:it},{key:\"Mod-Backspace\",mac:\"Alt-Backspace\",run:st},{key:\"Mod-Delete\",mac:\"Alt-Delete\",run:lt},{mac:\"Mod-Backspace\",run:ut},{mac:\"Mod-Delete\",run:dt}].concat(kt.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),Rt=[{key:\"Alt-ArrowLeft\",mac:\"Ctrl-ArrowLeft\",run:me,shift:Le},{key:\"Alt-ArrowRight\",mac:\"Ctrl-ArrowRight\",run:ge,shift:Fe},{key:\"Alt-ArrowUp\",run:mt},{key:\"Shift-Alt-ArrowUp\",run:yt},{key:\"Alt-ArrowDown\",run:gt},{key:\"Shift-Alt-ArrowDown\",run:Tt},{key:\"Escape\",run:nt},{key:\"Mod-Enter\",run:Et},{key:\"Alt-l\",mac:\"Ctrl-l\",run:tt},{key:\"Mod-i\",run:rt,preventDefault:!0},{key:\"Mod-[\",run:Ct},{key:\"Mod-]\",run:x},{key:\"Mod-Alt-\\\\\",run:Ot},{key:\"Shift-Mod-k\",run:vt},{key:\"Shift-Mod-\\\\\",run:Re},{key:\"Mod-/\",run:L},{key:\"Alt-A\",run:j},{key:\"Ctrl-m\",mac:\"Shift-Alt-m\",run:wt}].concat(It),Nt={key:\"Tab\",run:x,shift:Ct};return Mt.blockComment=H,Mt.blockUncomment=G,Mt.copyLineDown=Tt,Mt.copyLineUp=yt,Mt.cursorCharBackward=e=>b(e,!1),Mt.cursorCharBackwardLogical=e=>le(e,!1),Mt.cursorCharForward=e=>b(e,!0),Mt.cursorCharForwardLogical=e=>le(e,!0),Mt.cursorCharLeft=ie,Mt.cursorCharRight=oe,Mt.cursorDocEnd=Qe,Mt.cursorDocStart=Je,Mt.cursorGroupBackward=e=>A(e,!1),Mt.cursorGroupForward=e=>A(e,!0),Mt.cursorGroupForwardWin=r=>T(r,t=>t.empty?r.moveByChar(t,!0,e=>de(r,t.head,e)):v(t,!0)),Mt.cursorGroupLeft=ce,Mt.cursorGroupRight=ue,Mt.cursorLineBoundaryBackward=Ae,Mt.cursorLineBoundaryForward=Se,Mt.cursorLineBoundaryLeft=Oe,Mt.cursorLineBoundaryRight=Ce,Mt.cursorLineDown=Te,Mt.cursorLineEnd=ke,Mt.cursorLineStart=we,Mt.cursorLineUp=ye,Mt.cursorMatchingBracket=Re,Mt.cursorPageDown=C,Mt.cursorPageUp=Ee,Mt.cursorSubwordBackward=e=>he(e,!1),Mt.cursorSubwordForward=e=>he(e,!0),Mt.cursorSyntaxLeft=me,Mt.cursorSyntaxRight=ge,Mt.defaultKeymap=Rt,Mt.deleteCharBackward=P,Mt.deleteCharBackwardStrict=e=>at(e,!1,!1),Mt.deleteCharForward=it,Mt.deleteGroupBackward=st,Mt.deleteGroupForward=lt,Mt.deleteLine=vt,Mt.deleteLineBoundaryBackward=ut,Mt.deleteLineBoundaryForward=dt,Mt.deleteToLineEnd=ct,Mt.deleteToLineStart=r=>N(r,e=>{var t=r.lineBlockAt(e.head).from;return e.head>t?t:Math.max(0,e.head-1)}),Mt.deleteTrailingWhitespace=({state:n,dispatch:e})=>{if(n.readOnly)return!1;var a=[];for(let e=0,t=\"\",r=n.doc.iter();;){if(r.next(),r.lineBreak||r.done){var i=t.search(/\\s+$/);if(-1<i&&a.push({from:e-(t.length-i),to:e}),r.done)break;t=\"\"}else t=r.value;e+=r.value.length}return!!a.length&&(e(n.update({changes:a,userEvent:\"delete\"})),!0)},Mt.emacsStyleKeymap=kt,Mt.history=function(e={}){return[i,W.of(e),c.EditorView.domEventHandlers({beforeinput(e,t){var r=\"historyUndo\"==e.inputType?a:\"historyRedo\"==e.inputType?o:null;return!!r&&(e.preventDefault(),r(t))}})]},Mt.historyField=$,Mt.historyKeymap=ae,Mt.indentLess=Ct,Mt.indentMore=x,Mt.indentSelection=Ot,Mt.indentWithTab=Nt,Mt.insertBlankLine=Et,Mt.insertNewline=({state:e,dispatch:t})=>(t(e.update(e.replaceSelection(e.lineBreak),{scrollIntoView:!0,userEvent:\"input\"})),!0),Mt.insertNewlineAndIndent=bt,Mt.insertNewlineKeepIndent=({state:r,dispatch:e})=>(e(r.update(r.changeByRange(e=>{var t=/^\\s*/.exec(r.doc.lineAt(e.from).text)[0];return{changes:{from:e.from,to:e.to,insert:r.lineBreak+t},range:h.EditorSelection.cursor(e.from+t.length+1)}}),{scrollIntoView:!0,userEvent:\"input\"})),!0),Mt.insertTab=({state:e,dispatch:t})=>e.selection.ranges.some(e=>!e.empty)?x({state:e,dispatch:t}):(t(e.update(e.replaceSelection(\"\\t\"),{scrollIntoView:!0,userEvent:\"input\"})),!0),Mt.invertedEffects=z,Mt.isolateHistory=q,Mt.lineComment=U,Mt.lineUncomment=B,Mt.moveLineDown=gt,Mt.moveLineUp=mt,Mt.redo=o,Mt.redoDepth=Z,Mt.redoSelection=Y,Mt.selectAll=et,Mt.selectCharBackward=e=>I(e,!1),Mt.selectCharBackwardLogical=t=>k(t,e=>se(t.state,e,!1)),Mt.selectCharForward=e=>I(e,!0),Mt.selectCharForwardLogical=t=>k(t,e=>se(t.state,e,!0)),Mt.selectCharLeft=Ne,Mt.selectCharRight=Me,Mt.selectDocEnd=Xe,Mt.selectDocStart=Ze,Mt.selectGroupBackward=e=>R(e,!1),Mt.selectGroupForward=e=>R(e,!0),Mt.selectGroupForwardWin=r=>k(r,t=>r.moveByChar(t,!0,e=>de(r,t.head,e))),Mt.selectGroupLeft=Pe,Mt.selectGroupRight=De,Mt.selectLine=tt,Mt.selectLineBoundaryBackward=ze,Mt.selectLineBoundaryForward=qe,Mt.selectLineBoundaryLeft=We,Mt.selectLineBoundaryRight=$e,Mt.selectLineDown=je,Mt.selectLineEnd=Ye,Mt.selectLineStart=Ke,Mt.selectLineUp=Be,Mt.selectMatchingBracket=({state:e,dispatch:t})=>Ie(e,t,!0),Mt.selectPageDown=Ve,Mt.selectPageUp=Ge,Mt.selectParentSyntax=rt,Mt.selectSubwordBackward=e=>xe(e,!1),Mt.selectSubwordForward=e=>xe(e,!0),Mt.selectSyntaxLeft=Le,Mt.selectSyntaxRight=Fe,Mt.simplifySelection=nt,Mt.splitLine=pt,Mt.standardKeymap=It,Mt.temporarilySetTabFocusMode=e=>(e.setTabFocusMode(2e3),!0),Mt.toggleBlockComment=j,Mt.toggleBlockCommentByLine=V,Mt.toggleComment=L,Mt.toggleLineComment=F,Mt.toggleTabFocusMode=wt,Mt.transposeChars=ft,Mt.undo=a,Mt.undoDepth=Q,Mt.undoSelection=K,Mt}var UR,BR,jR={},HR={};function GR(){if(UR)return HR;UR=1,Object.defineProperty(HR,\"__esModule\",{value:!0});var y=LR();let n=0;class c{constructor(e,t,r){this.set=e,this.base=t,this.modified=r,this.id=n++}static define(e){if(null!=e&&e.base)throw new Error(\"Can not derive from a modified tag\");var t=new c([],null,[]);if(t.set.push(t),e)for(var r of e.set)t.set.push(r);return t}static defineModifier(){let t=new u;return e=>-1<e.modified.indexOf(t)?e:u.get(e.base||e,e.modified.concat(t).sort((e,t)=>e.id-t.id))}}let e=0;class u{constructor(){this.instances=[],this.id=e++}static get(n,a){if(!a.length)return n;var e=a[0].instances.find(e=>{return e.base==n&&(t=a,r=e.modified,t.length==r.length)&&t.every((e,t)=>e==r[t]);var t,r});if(e)return e;var t,r=[],i=new c(r,n,a);for(t of a)t.instances.push(i);var o,s=function(n){var a=[[]];for(let r=0;r<n.length;r++)for(let e=0,t=a.length;e<t;e++)a.push(a[e].concat(n[r]));return a.sort((e,t)=>t.length-e.length)}(a);for(o of n.set)if(!o.modified.length)for(var l of s)r.push(u.get(o,l));return i}}const d=new y.NodeProp;class T{constructor(e,t,r,n){this.tags=e,this.mode=t,this.context=r,this.next=n}get opaque(){return 0==this.mode}get inherit(){return 1==this.mode}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}function t(e,t){let a=Object.create(null);for(var r of e)if(Array.isArray(r.tag))for(var n of r.tag)a[n.id]=r.class;else a[r.tag.id]=r.class;let{scope:i,all:o=null}=t||{};return{style:e=>{let t=o;for(var r of e)for(var n of r.set){n=a[n.id];if(n){t=t?t+\" \"+n:n;break}}return t},scope:i}}T.empty=new T([],2,null);class i{constructor(e,t,r){this.at=e,this.highlighters=t,this.span=r,this.class=\"\"}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(a,i,o,s,l){let{type:t,from:c,to:u}=a;if(!(o<=c||u<=i)){t.isTop&&(l=this.highlighters.filter(e=>!e.scope||e.scope(t)));let n=s;var e=v(a)||T.empty,r=function(e,t){let r=null;for(var n of e){n=n.style(t);n&&(r=r?r+\" \"+n:n)}return r}(l,e.tags);if(r&&(n&&(n+=\" \"),n+=r,1==e.mode)&&(s+=(s?\" \":\"\")+r),this.startSpan(Math.max(i,c),n),!e.opaque){let r=a.tree&&a.tree.prop(y.NodeProp.mounted);if(r&&r.overlay){var d=a.node.enter(r.overlay[0].from+c,1),p=this.highlighters.filter(e=>!e.scope||e.scope(r.tree.type)),f=a.firstChild();for(let e=0,t=c;;e++){var h=e<r.overlay.length?r.overlay[e]:null,m=h?h.from+c:u,g=Math.max(i,t),_=Math.min(o,m);if(g<_&&f)for(;a.from<_&&(this.highlightRange(a,g,_,s,l),this.startSpan(Math.min(_,a.to),n),!(a.to>=m))&&a.nextSibling(););if(!h||o<m)break;(t=h.to+c)>i&&(this.highlightRange(d.cursor(),Math.max(i,h.from+c),Math.min(o,t),\"\",p),this.startSpan(Math.min(o,t),n))}f&&a.parent()}else if(a.firstChild()){r&&(s=\"\");do{if(!(a.to<=i)){if(a.from>=o)break;this.highlightRange(a,i,o,s,l),this.startSpan(Math.min(o,a.to),n)}}while(a.nextSibling());a.parent()}}}}}function v(e){let t=e.type.prop(d);for(;t&&t.context&&!e.matchContext(t.context);)t=t.next;return t||null}var r=c.define,a=r(),o=r(),s=r(o),l=r(o),p=r(),f=r(p),h=r(p),m=r(),g=r(m),_=r(),b=r(),E=r(),S=r(E),A=r(),a={comment:a,lineComment:r(a),blockComment:r(a),docComment:r(a),name:o,variableName:r(o),typeName:s,tagName:r(s),propertyName:l,attributeName:r(l),className:r(o),labelName:r(o),namespace:r(o),macroName:r(o),literal:p,string:f,docString:r(f),character:r(f),attributeValue:r(f),number:h,integer:r(h),float:r(h),bool:r(p),regexp:r(p),escape:r(p),color:r(p),url:r(p),keyword:_,self:r(_),null:r(_),atom:r(_),unit:r(_),modifier:r(_),operatorKeyword:r(_),controlKeyword:r(_),definitionKeyword:r(_),moduleKeyword:r(_),operator:b,derefOperator:r(b),arithmeticOperator:r(b),logicOperator:r(b),bitwiseOperator:r(b),compareOperator:r(b),updateOperator:r(b),definitionOperator:r(b),typeOperator:r(b),controlOperator:r(b),punctuation:E,separator:r(E),bracket:S,angleBracket:r(S),squareBracket:r(S),paren:r(S),brace:r(S),content:m,heading:g,heading1:r(g),heading2:r(g),heading3:r(g),heading4:r(g),heading5:r(g),heading6:r(g),contentSeparator:r(m),list:r(m),quote:r(m),emphasis:r(m),strong:r(m),link:r(m),monospace:r(m),strikethrough:r(m),inserted:r(),deleted:r(),changed:r(),invalid:r(),meta:A,documentMeta:r(A),annotation:r(A),processingInstruction:r(A),definition:c.defineModifier(),constant:c.defineModifier(),function:c.defineModifier(),standard:c.defineModifier(),local:c.defineModifier(),special:c.defineModifier()},s=t([{tag:a.link,class:\"tok-link\"},{tag:a.heading,class:\"tok-heading\"},{tag:a.emphasis,class:\"tok-emphasis\"},{tag:a.strong,class:\"tok-strong\"},{tag:a.keyword,class:\"tok-keyword\"},{tag:a.atom,class:\"tok-atom\"},{tag:a.bool,class:\"tok-bool\"},{tag:a.url,class:\"tok-url\"},{tag:a.labelName,class:\"tok-labelName\"},{tag:a.inserted,class:\"tok-inserted\"},{tag:a.deleted,class:\"tok-deleted\"},{tag:a.literal,class:\"tok-literal\"},{tag:a.string,class:\"tok-string\"},{tag:a.number,class:\"tok-number\"},{tag:[a.regexp,a.escape,a.special(a.string)],class:\"tok-string2\"},{tag:a.variableName,class:\"tok-variableName\"},{tag:a.local(a.variableName),class:\"tok-variableName tok-local\"},{tag:a.definition(a.variableName),class:\"tok-variableName tok-definition\"},{tag:a.special(a.variableName),class:\"tok-variableName2\"},{tag:a.definition(a.propertyName),class:\"tok-propertyName tok-definition\"},{tag:a.typeName,class:\"tok-typeName\"},{tag:a.namespace,class:\"tok-namespace\"},{tag:a.className,class:\"tok-className\"},{tag:a.macroName,class:\"tok-macroName\"},{tag:a.propertyName,class:\"tok-propertyName\"},{tag:a.operator,class:\"tok-operator\"},{tag:a.comment,class:\"tok-comment\"},{tag:a.meta,class:\"tok-meta\"},{tag:a.invalid,class:\"tok-invalid\"},{tag:a.punctuation,class:\"tok-punctuation\"}]);return HR.Tag=c,HR.classHighlighter=s,HR.getStyleTags=v,HR.highlightTree=function(e,t,r,n=0,a=e.length){(t=new i(n,Array.isArray(t)?t:[t],r)).highlightRange(e.cursor(),n,a,\"\",t.highlighters),t.flush(a)},HR.styleTags=function(t){var r,a=Object.create(null);for(r in t){let e=t[r];Array.isArray(e)||(e=[e]);for(var i of r.split(\" \"))if(i){let t=[],r=2,n=i;for(let e=0;;){if(\"...\"==n&&0<e&&e+3==i.length){r=1;break}var o=/^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(n);if(!o)throw new RangeError(\"Invalid path: \"+i);if(t.push(\"*\"==o[0]?\"\":'\"'==o[0][0]?JSON.parse(o[0]):o[0]),(e+=o[0].length)==i.length)break;o=i[e++];if(e==i.length&&\"!\"==o){r=0;break}if(\"/\"!=o)throw new RangeError(\"Invalid path: \"+i);n=i.slice(e)}var s=t.length-1,l=t[s];if(!l)throw new RangeError(\"Invalid path: \"+i);s=new T(e,r,0<s?t.slice(0,s):null);a[l]=s.sort(a[l])}}return d.add(a)},HR.tagHighlighter=t,HR.tags=a,HR}var VR,qR={},zR={};function WR(){if(VR)return zR;VR=1;var m=bR(),g=cR(),n=vR();const o=\"function\"==typeof String.prototype.normalize?e=>e.normalize(\"NFKD\"):e=>e;class _{constructor(e,t,r=0,n=e.length,a,i){this.test=i,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer=\"\",this.bufferPos=0,this.iter=e.iterRange(r,n),this.bufferStart=r,this.normalize=a?e=>a(o(e)):o,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return g.codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){var e=this.peek();if(e<0)return this.done=!0,this;var r=g.fromCodePoint(e),n=this.bufferStart+this.bufferPos,a=(this.bufferPos+=g.codePointSize(e),this.normalize(r));if(a.length)for(let e=0,t=n;;e++){var i=a.charCodeAt(e),o=this.match(i,t,this.bufferPos+this.bufferStart);if(e==a.length-1){if(o)return this.value=o,this;break}t==n&&e<r.length&&r.charCodeAt(e)==i&&t++}}}match(n,e,a){let i=null;for(let r=0;r<this.matches.length;r+=2){let e=this.matches[r],t=!1;this.query.charCodeAt(e)==n&&(e==this.query.length-1?i={from:this.matches[r+1],to:a}:(this.matches[r]++,t=!0)),t||(this.matches.splice(r,2),r-=2)}return this.query.charCodeAt(0)==n&&(1==this.query.length?i={from:e,to:a}:this.matches.push(1,e)),i=i&&this.test&&!this.test(i.from,i.to,this.buffer,this.bufferStart)?null:i}}\"undefined\"!=typeof Symbol&&(_.prototype[Symbol.iterator]=function(){return this});const i={from:-1,to:-1,match:/.*/.exec(\"\")},s=\"gm\"+(null==/x/.unicode?\"\":\"u\");class l{constructor(e,t,r,n=0,a=e.length){if(this.text=e,this.to=a,this.curLine=\"\",this.done=!1,this.value=i,/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(t))return new U(e,t,r,n,a);this.re=new RegExp(t,s+(null!=r&&r.ignoreCase?\"i\":\"\")),this.test=null==r?void 0:r.test,this.iter=e.iter();a=e.lineAt(n);this.curLineStart=a.from,this.matchPos=d(e,n),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine=\"\":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine=\"\":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;var t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){var r=this.curLineStart+t.index,n=r+t[0].length;if(this.matchPos=d(this.text,n+(r==n?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<n||r>this.value.to)&&(!this.test||this.test(r,n,t)))return this.value={from:r,to:n,match:t},this;e=this.matchPos-this.curLineStart}else{if(!(this.curLineStart+this.curLine.length<this.to))return this.done=!0,this;this.nextLine(),e=0}}}}const c=new WeakMap;class u{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,r){var n,a=c.get(e);if(!a||a.from>=r||a.to<=t)return n=new u(t,e.sliceString(t,r)),c.set(e,n),n;if(a.from==t&&a.to==r)return a;let{text:i,from:o}=a;return o>t&&(i=e.sliceString(t,o)+i,o=t),a.to<r&&(i+=e.sliceString(a.to,r)),c.set(e,new u(o,i)),new u(t,i.slice(t-o,r-o))}}class U{constructor(e,t,r,n,a){this.text=e,this.to=a,this.done=!1,this.value=i,this.matchPos=d(e,n),this.re=new RegExp(t,s+(null!=r&&r.ignoreCase?\"i\":\"\")),this.test=null==r?void 0:r.test,this.flat=u.get(e,n,this.chunkEnd(n+5e3))}chunkEnd(e){return(e>=this.to?this:this.text.lineAt(e)).to}next(){for(;;){var t=this.re.lastIndex=this.matchPos-this.flat.from;let e=this.re.exec(this.flat.text);if(e&&!e[0]&&e.index==t&&(this.re.lastIndex=1+t,e=this.re.exec(this.flat.text)),e){var t=this.flat.from+e.index,r=t+e[0].length;if((this.flat.to>=this.to||e.index+e[0].length<=this.flat.text.length-10)&&(!this.test||this.test(t,r,e)))return this.value={from:t,to:r,match:e},this.matchPos=d(this.text,r+(t==r?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=u.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+2*this.flat.text.length))}}}function d(r,n){if(!(n>=r.length)){let e=r.lineAt(n),t;for(;n<e.to&&56320<=(t=e.text.charCodeAt(n-e.from))&&t<57344;)n++}return n}function a(s){var e=String(s.state.doc.lineAt(s.state.selection.main.head).number);let t=n(\"input\",{class:\"cm-textfield\",name:\"line\",value:e});function r(){var r=/^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(t.value);if(r){var n=s[\"state\"],a=n.doc.lineAt(n.selection.main.head),[,r,e,i,o]=r,i=i?+i.slice(1):0;let t=e?+e:a.number;if(e&&o){let e=t/100;r&&(e=e*(\"-\"==r?-1:1)+a.number/n.doc.lines),t=Math.round(n.doc.lines*e)}else e&&r&&(t=t*(\"-\"==r?-1:1)+a.number);o=n.doc.line(Math.max(1,Math.min(n.doc.lines,t))),e=g.EditorSelection.cursor(o.from+Math.max(0,Math.min(i,o.length)));s.dispatch({effects:[p.of(!1),m.EditorView.scrollIntoView(e.from,{y:\"center\"})],selection:e}),s.focus()}}return{dom:n(\"form\",{class:\"cm-gotoLine\",onkeydown:e=>{27==e.keyCode?(e.preventDefault(),s.dispatch({effects:p.of(!1)}),s.focus()):13==e.keyCode&&(e.preventDefault(),r())},onsubmit:e=>{e.preventDefault(),r()}},n(\"label\",s.state.phrase(\"Go to line\"),\": \",t),\" \",n(\"button\",{class:\"cm-button\",type:\"submit\"},s.state.phrase(\"go\")),n(\"button\",{name:\"close\",onclick:()=>{s.dispatch({effects:p.of(!1)}),s.focus()},\"aria-label\":s.state.phrase(\"close\"),type:\"button\"},[\"×\"]))}}\"undefined\"!=typeof Symbol&&(l.prototype[Symbol.iterator]=U.prototype[Symbol.iterator]=function(){return this});const p=g.StateEffect.define(),B=g.StateField.define({create(){return!0},update(e,t){for(var r of t.effects)r.is(p)&&(e=r.value);return e},provide:e=>m.showPanel.from(e,e=>e?a:null)});var t=e=>{let t=m.getPanel(e,a);var r;return t||(r=[p.of(!0)],null==e.state.field(B,!1)&&r.push(g.StateEffect.appendConfig.of([B,j])),e.dispatch({effects:r}),t=m.getPanel(e,a)),t&&t.dom.querySelector(\"input\").select(),!0};const j=m.EditorView.baseTheme({\".cm-panel.cm-gotoLine\":{padding:\"2px 6px 4px\",position:\"relative\",\"& label\":{fontSize:\"80%\"},\"& [name=close]\":{position:\"absolute\",top:\"0\",bottom:\"0\",right:\"4px\",backgroundColor:\"inherit\",border:\"none\",font:\"inherit\",padding:\"0\"}}}),r={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},H=g.Facet.define({combine(e){return g.combineConfig(e,r,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});const G=m.Decoration.mark({class:\"cm-selectionMatch\"}),V=m.Decoration.mark({class:\"cm-selectionMatch cm-selectionMatch-main\"});function q(e,t,r,n){return!(0!=r&&e(t.sliceDoc(r-1,r))==g.CharCategory.Word||n!=t.doc.length&&e(t.sliceDoc(n,n+1))==g.CharCategory.Word)}const z=m.ViewPlugin.fromClass(class{constructor(e){this.decorations=this.getDeco(e)}update(e){(e.selectionSet||e.docChanged||e.viewportChanged)&&(this.decorations=this.getDeco(e.view))}getDeco(e){var t,r,n,a=e.state.facet(H),i=e[\"state\"],o=i.selection;if(1<o.ranges.length)return m.Decoration.none;let s=o.main,l,c=null;if(s.empty){if(!a.highlightWordAroundCursor)return m.Decoration.none;var o=i.wordAt(s.head);if(!o)return m.Decoration.none;c=i.charCategorizer(s.head),l=i.sliceDoc(o.from,o.to)}else{o=s.to-s.from;if(o<a.minSelectionLength||200<o)return m.Decoration.none;if(a.wholeWords){if(l=i.sliceDoc(s.from,s.to),!q(c=i.charCategorizer(s.head),i,s.from,s.to)||(o=c,t=i,r=s.from,n=s.to,o(t.sliceDoc(r,r+1))!=g.CharCategory.Word)||o(t.sliceDoc(n-1,n))!=g.CharCategory.Word)return m.Decoration.none}else if(!(l=i.sliceDoc(s.from,s.to)))return m.Decoration.none}var u,d=[];for(u of e.visibleRanges)for(var p=new _(i.doc,l,u.from,u.to);!p.next().done;){var{from:f,to:h}=p.value;if((!c||q(c,i,f,h))&&(s.empty&&f<=s.from&&h>=s.to?d.push(V.range(f,h)):(f>=s.to||h<=s.from)&&d.push(G.range(f,h)),d.length>a.maxMatches))return m.Decoration.none}return m.Decoration.set(d)}},{decorations:e=>e.decorations}),W=m.EditorView.baseTheme({\".cm-selectionMatch\":{backgroundColor:\"#99ff7780\"},\".cm-searchMatch .cm-selectionMatch\":{backgroundColor:\"transparent\"}});var $=({state:t,dispatch:e})=>{var r,n,a,i,o=t.selection[\"ranges\"];if(o.some(e=>e.from===e.to))return{state:r,dispatch:n}=[{state:t,dispatch:e}][0],i=r.selection,!(a=g.EditorSelection.create(i.ranges.map(e=>r.wordAt(e.head)||g.EditorSelection.cursor(e.head)),i.mainIndex)).eq(i)&&(n(r.update({selection:a})),!0);let s=t.sliceDoc(o[0].from,o[0].to);return!t.selection.ranges.some(e=>t.sliceDoc(e.from,e.to)!=s)&&!!(i=function(r,n){var{main:e,ranges:a}=r.selection,t=r.wordAt(e.head),i=t&&t.from==e.from&&t.to==e.to;for(let e=!1,t=new _(r.doc,n,a[a.length-1].to);;)if(t.next(),t.done){if(e)return null;t=new _(r.doc,n,0,Math.max(0,a[a.length-1].from-1)),e=!0}else if(!e||!a.some(e=>e.from==t.value.from)){if(i){var o=r.wordAt(t.value.from);if(!o||o.from!=t.value.from||o.to!=t.value.to)continue}return t.value}}(t,s))&&(e(t.update({selection:t.selection.addRange(g.EditorSelection.range(i.from,i.to),!1),effects:m.EditorView.scrollIntoView(i.to)})),!0)};const f=g.Facet.define({combine(e){return g.combineConfig(e,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new oe(e),scrollToMatch:e=>m.EditorView.scrollIntoView(e)})}});class h{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||\"\",this.valid=!!this.search&&(!this.regexp||function(e){try{return new RegExp(e,s),!0}catch(e){return!1}}(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\\\([nrt\\\\])/g,(e,t)=>\"n\"==t?\"\\n\":\"r\"==t?\"\\r\":\"t\"==t?\"\\t\":\"\\\\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return new(this.regexp?J:Y)(this)}getCursor(e,t=0,r){e=e.doc?e:g.EditorState.create({doc:e});return null==r&&(r=e.doc.length),(this.regexp?T:y)(this,e,t,r)}}class K{constructor(e){this.spec=e}}function y(e,t,r,n){return new _(t.doc,e.unquoted,r,n,e.caseSensitive?void 0:e=>e.toLowerCase(),e.wholeWord?(a=t.doc,i=t.charCategorizer(t.selection.main.head),(e,t,r,n)=>((e<n||n+r.length<t)&&(n=Math.max(0,e-2),r=a.sliceString(n,Math.min(a.length,t+2))),!(i(v(r,e-n))==g.CharCategory.Word&&i(b(r,e-n))==g.CharCategory.Word||i(b(r,t-n))==g.CharCategory.Word&&i(v(r,t-n))==g.CharCategory.Word))):void 0);var a,i}class Y extends K{constructor(e){super(e)}nextMatch(e,t,r){let n=y(this.spec,e,r,e.doc.length).nextOverlapping();var a;return n.done&&(a=Math.min(e.doc.length,t+this.spec.unquoted.length),n=y(this.spec,e,0,a).nextOverlapping()),n.done||n.value.from==t&&n.value.to==r?null:n.value}prevMatchInRange(n,a,e){for(let r=e;;){var i=Math.max(a,r-1e4-this.spec.unquoted.length);let e=y(this.spec,n,i,r),t=null;for(;!e.nextOverlapping().done;)t=e.value;if(t)return t;if(i==a)return null;r-=1e4}}prevMatch(e,t,r){let n=this.prevMatchInRange(e,0,t);return!(n=n||this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length))||n.from==t&&n.to==r?null:n}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){for(var r=y(this.spec,e,0,e.doc.length),n=[];!r.next().done;){if(t<=n.length)return null;n.push(r.value)}return n}highlight(e,t,r,n){for(var a=y(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));!a.next().done;)n(a.value.from,a.value.to)}}function T(e,t,r,n){return new l(t.doc,e.search,{ignoreCase:!e.caseSensitive,test:e.wholeWord?(a=t.charCategorizer(t.selection.main.head),(e,t,r)=>!r[0].length||(a(v(r.input,r.index))!=g.CharCategory.Word||a(b(r.input,r.index))!=g.CharCategory.Word)&&(a(b(r.input,r.index+r[0].length))!=g.CharCategory.Word||a(v(r.input,r.index+r[0].length))!=g.CharCategory.Word)):void 0},r,n);var a}function v(e,t){return e.slice(g.findClusterBreak(e,t,!1),t)}function b(e,t){return e.slice(t,g.findClusterBreak(e,t))}class J extends K{nextMatch(e,t,r){let n=T(this.spec,e,r,e.doc.length).next();return(n=n.done?T(this.spec,e,0,t).next():n).done?null:n.value}prevMatchInRange(n,a,i){for(let r=1;;r++){var o=Math.max(a,i-1e4*r);let e=T(this.spec,n,o,i),t=null;for(;!e.next().done;)t=e.value;if(t&&(o==a||t.from>o+10))return t;if(o==a)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(n){return this.spec.unquote(this.spec.replace).replace(/\\$([$&]|\\d+)/g,(e,t)=>{if(\"&\"==t)return n.match[0];if(\"$\"==t)return\"$\";for(let e=t.length;0<e;e--){var r=+t.slice(0,e);if(0<r&&r<n.match.length)return n.match[r]+t.slice(e)}return e})}matchAll(e,t){for(var r=T(this.spec,e,0,e.doc.length),n=[];!r.next().done;){if(t<=n.length)return null;n.push(r.value)}return n}highlight(e,t,r,n){for(var a=T(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));!a.next().done;)n(a.value.from,a.value.to)}}const E=g.StateEffect.define(),S=g.StateEffect.define(),A=g.StateField.define({create(e){return new O(R(e).create(),null)},update(e,t){for(var r of t.effects)r.is(E)?e=new O(r.value.create(),e.panel):r.is(S)&&(e=new O(e.query,r.value?I:null));return e},provide:e=>m.showPanel.from(e,e=>e.panel)});class O{constructor(e,t){this.query=e,this.panel=t}}const Q=m.Decoration.mark({class:\"cm-searchMatch\"}),Z=m.Decoration.mark({class:\"cm-searchMatch cm-searchMatch-selected\"});var X=m.ViewPlugin.fromClass(class{constructor(e){this.view=e,this.decorations=this.highlight(e.state.field(A))}update(e){var t=e.state.field(A);(t!=e.startState.field(A)||e.docChanged||e.selectionSet||e.viewportChanged)&&(this.decorations=this.highlight(t))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return m.Decoration.none;let o=this[\"view\"],s=new g.RangeSetBuilder;for(let r=0,n=o.visibleRanges,a=n.length;r<a;r++){let{from:e,to:t}=n[r];for(;r<a-1&&t>n[r+1].from-500;)t=n[++r].to;i.highlight(o.state,e,t,(t,r)=>{var e=o.state.selection.ranges.some(e=>e.from==t&&e.to==r);s.add(t,r,e?Z:Q)})}return s.finish()}},{decorations:e=>e.decorations});function e(r){return e=>{var t=e.state.field(A,!1);return t&&t.query.spec.valid?r(e,t):N(e)}}const C=e((e,{query:t})=>{var r,n=e.state.selection.main[\"to\"],t=t.nextMatch(e.state,n,n);return!!t&&(n=g.EditorSelection.single(t.from,t.to),r=e.state.facet(f),e.dispatch({selection:n,effects:[L(e,t),r.scrollToMatch(n.main,e)],userEvent:\"select.search\"}),ae(e),!0)}),w=e((e,{query:t})=>{var r=e[\"state\"],n=r.selection.main[\"from\"],t=t.prevMatch(r,n,n);return!!t&&(r=g.EditorSelection.single(t.from,t.to),n=e.state.facet(f),e.dispatch({selection:r,effects:[L(e,t),n.scrollToMatch(r.main,e)],userEvent:\"select.search\"}),ae(e),!0)}),ee=e((e,{query:t})=>{t=t.matchAll(e.state,1e3);return!(!t||!t.length||(e.dispatch({selection:g.EditorSelection.create(t.map(e=>g.EditorSelection.range(e.from,e.to))),userEvent:\"select.search.matches\"}),0))});var te=({state:e,dispatch:t})=>{var r=e.selection;if(1<r.ranges.length||r.main.empty)return!1;var{from:n,to:r}=r.main;let a=[],i=0;for(var o=new _(e.doc,e.sliceDoc(n,r));!o.next().done;){if(1e3<a.length)return!1;o.value.from==n&&(i=a.length),a.push(g.EditorSelection.range(o.value.from,o.value.to))}return t(e.update({selection:g.EditorSelection.create(a,i),userEvent:\"select.search.matches\"})),!0};const k=e((e,{query:t})=>{var r=e[\"state\"],{from:n,to:a}=r.selection.main;if(r.readOnly)return!1;var i=t.nextMatch(r,n,n);if(!i)return!1;let o=i,s=[],l,c;i=[],o.from==n&&o.to==a&&(c=r.toText(t.getReplacement(o)),s.push({from:o.from,to:o.to,insert:c}),o=t.nextMatch(r,o.from,o.to),i.push(m.EditorView.announce.of(r.phrase(\"replaced match on line $\",r.doc.lineAt(n).number)+\".\"))),a=e.state.changes(s);return o&&(l=g.EditorSelection.single(o.from,o.to).map(a),i.push(L(e,o)),i.push(r.facet(f).scrollToMatch(l.main,e))),e.dispatch({changes:a,selection:l,effects:i,userEvent:\"input.replace\"}),!0}),re=e((e,{query:n})=>{var t,r;return!e.state.readOnly&&!!(t=n.matchAll(e.state,1e9).map(e=>{var{from:t,to:r}=e;return{from:t,to:r,insert:n.getReplacement(e)}})).length&&(r=e.state.phrase(\"replaced $ matches\",t.length)+\".\",e.dispatch({changes:t,effects:m.EditorView.announce.of(r),userEvent:\"input.replace.all\"}),!0)});function I(e){return e.state.facet(f).createPanel(e)}function R(e,t){var r,n=e.selection.main,n=n.empty||n.to>n.from+100?\"\":e.sliceDoc(n.from,n.to);return t&&!n?t:(e=e.facet(f),new h({search:(null!=(r=null==t?void 0:t.literal)?r:e.literal)?n:n.replace(/\\n/g,\"\\\\n\"),caseSensitive:null!=(r=null==t?void 0:t.caseSensitive)?r:e.caseSensitive,literal:null!=(n=null==t?void 0:t.literal)?n:e.literal,regexp:null!=(r=null==t?void 0:t.regexp)?r:e.regexp,wholeWord:null!=(n=null==t?void 0:t.wholeWord)?n:e.wholeWord}))}function ne(e){e=m.getPanel(e,I);return e&&e.dom.querySelector(\"[main-field]\")}function ae(e){var t=ne(e);t&&t==e.root.activeElement&&t.select()}const N=e=>{var t,r,n=e.state.field(A,!1);return n&&n.panel?(t=ne(e))&&t!=e.root.activeElement&&((r=R(e.state,n.query.spec)).valid&&e.dispatch({effects:E.of(r)}),t.focus(),t.select()):e.dispatch({effects:[S.of(!0),n?E.of(R(e.state,n.query.spec)):g.StateEffect.appendConfig.of(F)]}),!0},M=e=>{var t=e.state.field(A,!1);return!(!t||!t.panel||((t=m.getPanel(e,I))&&t.dom.contains(e.root.activeElement)&&e.focus(),e.dispatch({effects:S.of(!1)}),0))};var ie=[{key:\"Mod-f\",run:N,scope:\"editor search-panel\"},{key:\"F3\",run:C,shift:w,scope:\"editor search-panel\",preventDefault:!0},{key:\"Mod-g\",run:C,shift:w,scope:\"editor search-panel\",preventDefault:!0},{key:\"Escape\",run:M,scope:\"editor search-panel\"},{key:\"Mod-Shift-l\",run:te},{key:\"Mod-Alt-g\",run:t},{key:\"Mod-d\",run:$,preventDefault:!0}];class oe{constructor(e){this.view=e;var t=this.query=e.state.field(A).query.spec;function r(e,t,r){return n(\"button\",{class:\"cm-button\",name:e,onclick:t,type:\"button\"},r)}this.commit=this.commit.bind(this),this.searchField=n(\"input\",{value:t.search,placeholder:P(e,\"Find\"),\"aria-label\":P(e,\"Find\"),class:\"cm-textfield\",name:\"search\",form:\"\",\"main-field\":\"true\",onchange:this.commit,onkeyup:this.commit}),this.replaceField=n(\"input\",{value:t.replace,placeholder:P(e,\"Replace\"),\"aria-label\":P(e,\"Replace\"),class:\"cm-textfield\",name:\"replace\",form:\"\",onchange:this.commit,onkeyup:this.commit}),this.caseField=n(\"input\",{type:\"checkbox\",name:\"case\",form:\"\",checked:t.caseSensitive,onchange:this.commit}),this.reField=n(\"input\",{type:\"checkbox\",name:\"re\",form:\"\",checked:t.regexp,onchange:this.commit}),this.wordField=n(\"input\",{type:\"checkbox\",name:\"word\",form:\"\",checked:t.wholeWord,onchange:this.commit}),this.dom=n(\"div\",{onkeydown:e=>this.keydown(e),class:\"cm-search\"},[this.searchField,r(\"next\",()=>C(e),[P(e,\"next\")]),r(\"prev\",()=>w(e),[P(e,\"previous\")]),r(\"select\",()=>ee(e),[P(e,\"all\")]),n(\"label\",null,[this.caseField,P(e,\"match case\")]),n(\"label\",null,[this.reField,P(e,\"regexp\")]),n(\"label\",null,[this.wordField,P(e,\"by word\")]),...e.state.readOnly?[]:[n(\"br\"),this.replaceField,r(\"replace\",()=>k(e),[P(e,\"replace\")]),r(\"replaceAll\",()=>re(e),[P(e,\"replace all\")])],n(\"button\",{name:\"close\",onclick:()=>M(e),\"aria-label\":P(e,\"close\"),type:\"button\"},[\"×\"])])}commit(){var e=new h({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:E.of(e)}))}keydown(e){m.runScopeHandlers(this.view,e,\"search-panel\")?e.preventDefault():13==e.keyCode&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?w:C)(this.view)):13==e.keyCode&&e.target==this.replaceField&&(e.preventDefault(),k(this.view))}update(e){for(var t of e.transactions)for(var r of t.effects)r.is(E)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(f).top}}function P(e,t){return e.state.phrase(t)}const D=30,x=/[\\s\\.,:;?!]/;function L(e,{from:t,to:r}){var n=e.state.doc.lineAt(t),a=e.state.doc.lineAt(r).to,t=Math.max(n.from,t-D),r=Math.min(a,r+D);let i=e.state.sliceDoc(t,r);if(t!=n.from)for(let e=0;e<D;e++)if(!x.test(i[e+1])&&x.test(i[e])){i=i.slice(e);break}if(r!=a)for(let e=i.length-1;e>i.length-D;e--)if(!x.test(i[e-1])&&x.test(i[e])){i=i.slice(0,e);break}return m.EditorView.announce.of(`${e.state.phrase(\"current match\")}. ${i} ${e.state.phrase(\"on line\")} ${n.number}.`)}var se=m.EditorView.baseTheme({\".cm-panel.cm-search\":{padding:\"2px 6px 4px\",position:\"relative\",\"& [name=close]\":{position:\"absolute\",top:\"0\",right:\"4px\",backgroundColor:\"inherit\",border:\"none\",font:\"inherit\",padding:0,margin:0},\"& input, & button, & label\":{margin:\".2em .6em .2em 0\"},\"& input[type=checkbox]\":{marginRight:\".2em\"},\"& label\":{fontSize:\"80%\",whiteSpace:\"pre\"}},\"&light .cm-searchMatch\":{backgroundColor:\"#ffff0054\"},\"&dark .cm-searchMatch\":{backgroundColor:\"#00ffff8a\"},\"&light .cm-searchMatch-selected\":{backgroundColor:\"#ff6a0054\"},\"&dark .cm-searchMatch-selected\":{backgroundColor:\"#ff00ff8a\"}});const F=[A,g.Prec.low(X),se];return zR.RegExpCursor=l,zR.SearchCursor=_,zR.SearchQuery=h,zR.closeSearchPanel=M,zR.findNext=C,zR.findPrevious=w,zR.getSearchQuery=function(e){var t=e.field(A,!1);return t?t.query.spec:R(e)},zR.gotoLine=t,zR.highlightSelectionMatches=function(e){var t=[W,z];return e&&t.push(H.of(e)),t},zR.openSearchPanel=N,zR.replaceAll=re,zR.replaceNext=k,zR.search=function(e){return e?[f.of(e),F]:F},zR.searchKeymap=ie,zR.searchPanelOpen=function(e){return null!=(null==(e=e.field(A,!1))?void 0:e.panel)},zR.selectMatches=ee,zR.selectNextOccurrence=$,zR.selectSelectionMatches=te,zR.setSearchQuery=E,zR}var $R,Je={};function KR(){if($R)return Je;$R=1;var t,r,S=cR(),h=bR(),g=MR();class o{constructor(e,t,r,n){this.state=e,this.pos=t,this.explicit=r,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=g.syntaxTree(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){var t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),t=t.text.slice(r-t.from,this.pos-t.from),e=t.search(s(e,!1));return e<0?null:{from:r+e,to:this.pos,text:t.slice(e)}}get aborted(){return null==this.abortListeners}addEventListener(e,t,r){\"abort\"==e&&this.abortListeners&&(this.abortListeners.push(t),r)&&r.onDocChange&&(this.abortOnDocChange=!0)}}function i(e){let t=Object.keys(e).join(\"\");e=/\\w/.test(t);return`[${e?\"\\\\w\":\"\"}${(t=e?t.replace(/\\w/g,\"\"):t).replace(/[^\\w\\s]/g,\"\\\\$&\")}]`}function n(e){let r=e.map(e=>\"string\"==typeof e?{label:e}:e),[n,a]=r.every(e=>/^\\w+$/.test(e.label))?[/\\w*$/,/\\w+$/]:function(e){var t,r=Object.create(null),n=Object.create(null);for({label:t}of e){r[t[0]]=!0;for(let e=1;e<t.length;e++)n[t[e]]=!0}return e=i(r)+i(n)+\"*$\",[new RegExp(\"^\"+e),new RegExp(e)]}(r);return e=>{var t=e.matchBefore(a);return t||e.explicit?{from:t?t.from:e.pos,options:r,validFor:n}:null}}class E{constructor(e,t,r,n){this.completion=e,this.source=t,this.match=r,this.score=n}}function c(e){return e.selection.main.from}function s(e,t){var r=e[\"source\"],t=t&&\"^\"!=r[0],n=\"$\"!=r[r.length-1];return t||n?new RegExp(`${t?\"^\":\"\"}(?:${r})`+(n?\"$\":\"\"),null!=(t=e.flags)?t:e.ignoreCase?\"i\":\"\"):e}const l=S.Annotation.define();function L(r,n,a,i){let o=r.selection[\"main\"],s=a-o.from,l=i-o.from;return Object.assign(Object.assign({},r.changeByRange(e=>{var t;return e!=o&&a!=i&&r.sliceDoc(e.from+s,e.from+l)!=r.sliceDoc(a,i)?{range:e}:(t=r.toText(n),{changes:{from:e.from+s,to:i==o.from?e.to:e.from+l,insert:t},range:S.EditorSelection.cursor(e.from+s+t.length)})})),{scrollIntoView:!0,userEvent:\"input.complete\"})}const F=new WeakMap;function U(e){if(!Array.isArray(e))return e;let t=F.get(e);return t||F.set(e,t=n(e)),t}const u=S.StateEffect.define(),d=S.StateEffect.define();class B{constructor(t){this.pattern=t,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let e=0;e<t.length;){var r=S.codePointAt(t,e),n=S.codePointSize(r),r=(this.chars.push(r),t.slice(e,e+n)),a=r.toUpperCase();this.folded.push(S.codePointAt(a==r?r.toLowerCase():a,0)),e+=n}this.astral=t.length!=this.chars.length}ret(e,t){return this.score=e,this.matched=t,this}match(n){if(0==this.pattern.length)return this.ret(-100,[]);if(n.length<this.pattern.length)return null;var{chars:a,folded:i,any:r,precise:o,byWord:s}=this;if(1==a.length){var t=S.codePointAt(n,0),l=S.codePointSize(t);let e=l==n.length?0:-100;if(t!=a[0]){if(t!=i[0])return null;e+=-200}return this.ret(e,[0,l])}var c=n.indexOf(this.pattern);if(0==c)return this.ret(n.length==this.pattern.length?0:-100,[0,this.pattern.length]);let u=a.length,d=0;if(c<0){for(let e=0,t=Math.min(n.length,200);e<t&&d<u;){var p=S.codePointAt(n,e);p!=a[d]&&p!=i[d]||(r[d++]=e),e+=S.codePointSize(p)}if(d<u)return null}let f=0,h=0,m=!1,g=0,_=-1,y=-1,T=/[a-z]/.test(n),v=!0;for(let e=0,t=Math.min(n.length,200),r=0;e<t&&h<u;){var b=S.codePointAt(n,e);c<0&&(f<u&&b==a[f]&&(o[f++]=e),g<u)&&(b==a[g]||b==i[g]?(0==g&&(_=e),y=e+1,g++):g=0);var E=b<255?48<=b&&b<=57||97<=b&&b<=122?2:65<=b&&b<=90?1:0:(E=S.fromCodePoint(b))!=E.toLowerCase()?1:E!=E.toUpperCase()?2:0;(!e||1==E&&T||0==r&&0!=E)&&(a[h]==b||i[h]==b&&(m=!0)?s[h++]=e:s.length&&(v=!1)),r=E,e+=S.codePointSize(b)}return h==u&&0==s[0]&&v?this.result((m?-200:0)-100,s,n):g==u&&0==_?this.ret(-200-n.length+(y==n.length?0:-100),[0,y]):-1<c?this.ret(-700-n.length,[c,c+this.pattern.length]):g==u?this.ret(-900-n.length,[_,y]):h==u?this.result((m?-200:0)-100-700+(v?0:-1100),s,n):2==a.length?null:this.result((r[0]?-700:0)-200-1100,r,n)}result(e,t,r){let n=[],a=0;for(var i of t){var o=i+(this.astral?S.codePointSize(S.codePointAt(r,i)):1);a&&n[a-1]==i?n[a-1]=o:(n[a++]=i,n[a++]=o)}return this.ret(e-r.length,n)}}class j{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){var t,r;return e.length<this.pattern.length||null==(r=(t=e.slice(0,this.pattern.length))==this.pattern?0:t.toLowerCase()==this.folded?-200:null)?null:(this.matched=[0,t.length],this.score=r+(e.length==this.pattern.length?0:-100),this)}}const A=S.Facet.define({combine(e){return S.combineConfig(e,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>\"\",optionClass:()=>\"\",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:G,filterStrict:!1,compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(t,r)=>e=>H(t(e),r(e)),optionClass:(t,r)=>e=>H(t(e),r(e)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function H(e,t){return e?t?e+\" \"+t:e:t}function G(e,t,r,n,a,i){let o=e.textDirection==h.Direction.RTL,s=o,l=!1,c=\"top\",u,d;var e=t.left-a.left,p=a.right-t.right,f=n.right-n.left,n=n.bottom-n.top,e=(s&&e<Math.min(f,p)?s=!1:!s&&p<Math.min(f,e)&&(s=!0),f<=(s?e:p)?(u=Math.max(a.top,Math.min(r.top,a.bottom-n))-t.top,d=Math.min(400,s?e:p)):(l=!0,d=Math.min(400,(o?t.right:a.right-t.left)-30),f=a.bottom-t.bottom,u=n<=f||f>t.top?r.bottom-t.top:(c=\"bottom\",t.bottom-r.top)),(t.bottom-t.top)/i.offsetHeight),p=(t.right-t.left)/i.offsetWidth;return{style:`${c}: ${u/e}px; max-width: ${d/p}px`,class:\"cm-completionInfo-\"+(l?o?\"left-narrow\":\"right-narrow\":s?\"left\":\"right\")}}function p(e,t,r){var n;return e<=r?{from:0,to:e}:(t=t<0?0:t)<=e>>1?{from:(n=Math.floor(t/r))*r,to:(n+1)*r}:{from:e-((n=Math.floor((e-t)/r))+1)*r,to:e-n*r}}class V{constructor(a,e,t){this.view=a,this.stateField=e,this.applyCompletion=t,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:e=>this.placeInfo(e),key:this},this.space=null,this.currentClass=\"\";var r,n,t=a.state.field(e),{options:i,selected:o}=t.open,s=a.state.facet(A);this.optionContent=(n=(r=s).addToOptions.slice(),r.icons&&n.push({render(e){var t=document.createElement(\"div\");return t.classList.add(\"cm-completionIcon\"),e.type&&t.classList.add(...e.type.split(/\\s+/g).map(e=>\"cm-completionIcon-\"+e)),t.setAttribute(\"aria-hidden\",\"true\"),t},position:20}),n.push({render(e,t,r,n){var a=document.createElement(\"span\");a.className=\"cm-completionLabel\";let i=e.displayLabel||e.label,o=0;for(let e=0;e<n.length;){var s=n[e++],l=n[e++],c=(s>o&&a.appendChild(document.createTextNode(i.slice(o,s))),a.appendChild(document.createElement(\"span\")));c.appendChild(document.createTextNode(i.slice(s,l))),c.className=\"cm-completionMatchedText\",o=l}return o<i.length&&a.appendChild(document.createTextNode(i.slice(o))),a},position:50},{render(e){var t;return e.detail?((t=document.createElement(\"span\")).className=\"cm-completionDetail\",t.textContent=e.detail,t):null},position:80}),n.sort((e,t)=>e.position-t.position).map(e=>e.render)),this.optionClass=s.optionClass,this.tooltipClass=s.tooltipClass,this.range=p(i.length,o,s.maxRenderedOptions),this.dom=document.createElement(\"div\"),this.dom.className=\"cm-tooltip-autocomplete\",this.updateTooltipClass(a.state),this.dom.addEventListener(\"mousedown\",r=>{var n=a.state.field(e).open[\"options\"];for(let e=r.target,t;e&&e!=this.dom;e=e.parentNode)if(\"LI\"==e.nodeName&&(t=/-(\\d+)$/.exec(e.id))&&+t[1]<n.length)return this.applyCompletion(a,n[+t[1]]),void r.preventDefault()}),this.dom.addEventListener(\"focusout\",e=>{var t=a.state.field(this.stateField,!1);t&&t.tooltip&&a.state.facet(A).closeOnBlur&&e.relatedTarget!=a.contentDOM&&a.dispatch({effects:d.of(null)})}),this.showOptions(i,t.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener(\"scroll\",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t,r,n,a=e.state.field(this.stateField),i=e.startState.field(this.stateField);this.updateTooltipClass(e.state),a!=i&&({options:t,selected:r,disabled:n}=a.open,i.open&&i.open.options==t||(this.range=p(t.length,r,e.state.facet(A).maxRenderedOptions),this.showOptions(t,a.id)),this.updateSel(),n!=(null==(r=i.open)?void 0:r.disabled))&&this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\",!!n)}updateTooltipClass(e){e=this.tooltipClass(e);if(e!=this.currentClass){for(var t of this.currentClass.split(\" \"))t&&this.dom.classList.remove(t);for(var r of e.split(\" \"))r&&this.dom.classList.add(r);this.currentClass=e}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let r=this.view.state.field(this.stateField),e=r.open;if((-1<e.selected&&e.selected<this.range.from||e.selected>=this.range.to)&&(this.range=p(e.options.length,e.selected,this.view.state.facet(A).maxRenderedOptions),this.showOptions(e.options,r.id)),this.updateSelectedOption(e.selected)){this.destroyInfo();let t=e.options[e.selected][\"completion\"];var n=t[\"info\"];n&&(n=\"string\"==typeof n?document.createTextNode(n):n(t))&&(\"then\"in n?n.then(e=>{e&&this.view.state.field(this.stateField,!1)==r&&this.addInfoPane(e,t)}).catch(e=>h.logException(this.view.state,e,\"completion info\")):this.addInfoPane(n,t))}}addInfoPane(e,t){this.destroyInfo();var r,n=this.info=document.createElement(\"div\");n.className=\"cm-tooltip cm-completionInfo\",null!=e.nodeType?(n.appendChild(e),this.infoDestroy=null):({dom:e,destroy:r}=e,n.appendChild(e),this.infoDestroy=r||null),this.dom.appendChild(n),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(r){let n=null;for(let e=this.list.firstChild,t=this.range.from;e;e=e.nextSibling,t++)\"LI\"==e.nodeName&&e.id?t==r?e.hasAttribute(\"aria-selected\")||(e.setAttribute(\"aria-selected\",\"true\"),n=e):e.hasAttribute(\"aria-selected\")&&e.removeAttribute(\"aria-selected\"):t--;var e,t,a,i;return n&&(e=this.list,t=n,a=e.getBoundingClientRect(),t=t.getBoundingClientRect(),i=a.height/e.offsetHeight,t.top<a.top?e.scrollTop-=(a.top-t.top)/i:t.bottom>a.bottom&&(e.scrollTop+=(t.bottom-a.bottom)/i)),n}measureInfo(){var e=this.dom.querySelector(\"[aria-selected]\");if(!e||!this.info)return null;var t,r=this.dom.getBoundingClientRect(),n=this.info.getBoundingClientRect(),e=e.getBoundingClientRect();let a=this.space;return a||(t=this.dom.ownerDocument.documentElement,a={left:0,top:0,right:t.clientWidth,bottom:t.clientHeight}),e.top>Math.min(a.bottom,r.bottom)-10||e.bottom<Math.max(a.top,r.top)+10?null:this.view.state.facet(A).positionInfo(this.view,r,e,n,a,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className=\"cm-tooltip cm-completionInfo \"+(e.class||\"\")):this.info.style.cssText=\"top: -1e6px\")}createListBox(t,r,n){const a=document.createElement(\"ul\");a.id=r,a.setAttribute(\"role\",\"listbox\"),a.setAttribute(\"aria-expanded\",\"true\"),a.setAttribute(\"aria-label\",this.view.state.phrase(\"Completions\")),a.addEventListener(\"mousedown\",e=>{e.target==a&&e.preventDefault()});let i=null;for(let e=n.from;e<n.to;e++){var o,s,{completion:l,match:c}=t[e],u=l[\"section\"],d=(u&&(o=\"string\"==typeof u?u:u.name)!=i&&(e>n.from||0==n.from)&&(i=o,\"string\"!=typeof u&&u.header?a.appendChild(u.header(u)):a.appendChild(document.createElement(\"completion-section\")).textContent=o),a.appendChild(document.createElement(\"li\"))),u=(d.id=r+\"-\"+e,d.setAttribute(\"role\",\"option\"),this.optionClass(l));u&&(d.className=u);for(s of this.optionContent){var p=s(l,this.view.state,this.view,c);p&&d.appendChild(p)}}return n.from&&a.classList.add(\"cm-completionListIncompleteTop\"),n.to<t.length&&a.classList.add(\"cm-completionListIncompleteBottom\"),a}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function q(e){return 100*(e.boost||0)+(e.apply?10:0)+(e.info?5:0)+(e.type?1:0)}class f{constructor(e,t,r,n,a,i){this.options=e,this.attrs=t,this.tooltip=r,this.timestamp=n,this.selected=a,this.disabled=i}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new f(this.options,$(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,r,n,a,i){if(n&&!i&&e.some(e=>e.isPending))return n.setDisabled();var o=function(e,t){let r=[],n=null;var a,i,o,s,l=e=>{r.push(e);e=e.completion.section;if(e){n=n||[];let t=\"string\"==typeof e?e:e.name;n.some(e=>e.name==t)||n.push(\"string\"==typeof e?{name:t}:e)}},c=t.facet(A);for(a of e)if(a.hasResult()){var u=a.result.getMatch;if(!1===a.result.filter)for(var d of a.result.options)l(new E(d,a.source,u?u(d):[],1e9-r.length));else{var p,f,h,m=t.sliceDoc(a.from,a.to),g=new(c.filterStrict?j:B)(m);for(f of a.result.options)(p=g.match(f.label))&&(h=f.displayLabel?u?u(f,p.matched):[]:p.matched,l(new E(f,a.source,h,p.score+(f.boost||0))))}}if(n){let e=Object.create(null),t=0;for(o of n.sort((e,t)=>{var r;return(null!=(r=e.rank)?r:1e9)-(null!=(r=t.rank)?r:1e9)||(e.name<t.name?-1:1)}))t-=1e5,e[o.name]=t;for(s of r){var _=s.completion[\"section\"];_&&(s.score+=e[\"string\"==typeof _?_:_.name])}}let y=[],T=null,v=c.compareCompletions;for(i of r.sort((e,t)=>t.score-e.score||v(e.completion,t.completion))){var b=i.completion;!T||T.label!=b.label||T.detail!=b.detail||null!=T.type&&null!=b.type&&T.type!=b.type||T.apply!=b.apply||T.boost!=b.boost?y.push(i):q(i.completion)>q(T)&&(y[y.length-1]=i),T=i.completion}return y}(e,t);if(!o.length)return n&&e.some(e=>e.isPending)?n.setDisabled():null;let s=t.facet(A).selectOnOpen?0:-1;if(n&&n.selected!=s&&-1!=n.selected){var l=n.options[n.selected].completion;for(let e=0;e<o.length;e++)if(o[e].completion==l){s=e;break}}return new f(o,$(r,s),{pos:e.reduce((e,t)=>t.hasResult()?Math.min(e,t.from):e,1e8),create:J,above:a.aboveCursor},n?n.timestamp:Date.now(),s,!1)}map(e){return new f(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected,this.disabled)}setDisabled(){return new f(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class m{constructor(e,t,r){this.active=e,this.id=t,this.open=r}static start(){return new m(K,\"cm-ac-\"+Math.floor(2e6*Math.random()).toString(36),null)}update(r){let e=r[\"state\"],n=e.facet(A);var t;let a=(n.override||e.languageDataAt(\"autocomplete\",c(e)).map(U)).map(t=>{return(this.active.find(e=>e.source==t)||new _(t,this.active.some(e=>0!=e.state)?1:0)).update(r,n)}),i=(a.length==this.active.length&&a.every((e,t)=>e==this.active[t])&&(a=this.active),this.open),o=r.effects.some(e=>e.is(T));i&&r.docChanged&&(i=i.map(r.changes)),r.selection||a.some(e=>e.hasResult()&&r.changes.touchesRange(e.from,e.to))||!function(r,n){if(r==n)return 1;for(let e=0,t=0;;){for(;e<r.length&&!r[e].hasResult();)e++;for(;t<n.length&&!n[t].hasResult();)t++;var a=e==r.length,i=t==n.length;if(a||i)return a==i;if(r[e++].result!=n[t++].result)return}}(a,this.active)||o?i=f.build(a,e,this.id,i,n,o):i&&i.disabled&&!a.some(e=>e.isPending)&&(i=null),!i&&a.every(e=>!e.isPending)&&a.some(e=>e.hasResult())&&(a=a.map(e=>e.hasResult()?new _(e.source,0):e));for(t of r.effects)t.is(v)&&(i=i&&i.setSelected(t.value,this.id));return a==this.active&&i==this.open?this:new m(a,this.id,i)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?z:W}}const z={\"aria-autocomplete\":\"list\"},W={};function $(e,t){var r={\"aria-autocomplete\":\"list\",\"aria-haspopup\":\"listbox\",\"aria-controls\":e};return-1<t&&(r[\"aria-activedescendant\"]=e+\"-\"+t),r}const K=[];function Y(e,t){if(e.isUserEvent(\"input.complete\")){var r=e.annotation(l);if(r&&t.activateOnCompletion(r))return 12}r=e.isUserEvent(\"input.type\");return r&&t.activateOnTyping?5:r?1:e.isUserEvent(\"delete.backward\")?2:e.selection?8:e.docChanged?16:0}class _{constructor(e,t,r=!1){this.source=e,this.state=t,this.explicit=r}hasResult(){return!1}get isPending(){return 1==this.state}update(e,t){let r=Y(e,t),n=this;(8&r||16&r&&this.touches(e))&&(n=new _(n.source,0)),n=(n=4&r&&0==n.state?new _(this.source,1):n).updateFor(e,r);for(var a of e.effects)if(a.is(u))n=new _(n.source,1,a.value);else if(a.is(d))n=new _(n.source,0);else if(a.is(T))for(var i of a.value)i.source==n.source&&(n=i);return n}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(c(e.state))}}class y extends _{constructor(e,t,r,n,a,i){super(e,3,t),this.limit=r,this.result=n,this.from=a,this.to=i}hasResult(){return!0}updateFor(e,t){if(!(3&t))return this.map(e.changes);let r=this.result;r.map&&!e.changes.empty&&(r=r.map(r,e.changes));var n=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),i=c(e.state);return a<i||!r||2&t&&(c(e.startState)==this.from||i<this.limit)?new _(this.source,4&t?1:0):(t=e.changes.mapPos(this.limit),function(e,t,r,n){if(!e)return;var a=t.sliceDoc(r,n);return\"function\"==typeof e?e(a,r,n,t):s(e,!0).test(a)}(r.validFor,e.state,n,a)?new y(this.source,this.explicit,t,r,n,a):r.update&&(r=r.update(r,n,a,new o(e.state,i,!1)))?new y(this.source,this.explicit,t,r,r.from,null!=(n=r.to)?n:c(e.state)):new _(this.source,1,this.explicit))}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new y(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new _(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}}const T=S.StateEffect.define({map(e,t){return e.map(e=>e.map(t))}}),v=S.StateEffect.define(),b=S.StateField.define({create(){return m.start()},update(e,t){return e.update(t)},provide:e=>[h.showTooltip.from(e,e=>e.tooltip),h.EditorView.contentAttributes.from(e,e=>e.attrs)]});function a(e,t){var r=t.completion.apply||t.completion.label,n=e.state.field(b).active.find(e=>e.source==t.source);return n instanceof y&&(\"string\"==typeof r?e.dispatch(Object.assign(Object.assign({},L(e.state,r,n.from,n.to)),{annotations:l.of(t.completion)})):r(e,t.completion,n.from,n.to),!0)}t=b,r=a;const J=e=>new V(e,t,r);function e(o,s=\"option\"){return e=>{var t=e.state.field(b,!1);if(!t||!t.open||t.open.disabled||Date.now()-t.open.timestamp<e.state.facet(A).interactionDelay)return!1;let r=1,n;\"page\"==s&&(n=h.getTooltip(e,t.open.tooltip))&&(r=Math.max(2,Math.floor(n.dom.offsetHeight/n.dom.querySelector(\"li\").offsetHeight)-1));var a=t.open.options[\"length\"];let i=-1<t.open.selected?t.open.selected+r*(o?1:-1):o?0:a-1;return i<0?i=\"page\"==s?0:a-1:i>=a&&(i=\"page\"==s?a-1:0),e.dispatch({effects:v.of(i)}),!0}}var Q=e=>{var t=e.state.field(b,!1);return!(e.state.readOnly||!t||!t.open||t.open.selected<0||t.open.disabled||Date.now()-t.open.timestamp<e.state.facet(A).interactionDelay)&&a(e,t.open.options[t.open.selected])},O=e=>{return!!e.state.field(b,!1)&&(e.dispatch({effects:u.of(!0)}),!0)},Z=e=>{var t=e.state.field(b,!1);return!(!t||!t.active.some(e=>0!=e.state)||(e.dispatch({effects:d.of(null)}),0))};class X{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const ee=h.ViewPlugin.fromClass(class{constructor(e){this.view=e,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(var t of e.state.field(b).active)t.isPending&&this.startQuery(t)}update(t){var e=t.state.field(b);let r=t.state.facet(A);if(t.selectionSet||t.docChanged||t.startState.field(b)!=e){var n=t.transactions.some(e=>{var t=Y(e,r);return 8&t||(e.selection||e.docChanged)&&!(3&t)});for(let e=0;e<this.running.length;e++){var a=this.running[e];if(n||a.context.abortOnDocChange&&t.docChanged||50<a.updates.length+t.transactions.length&&1e3<Date.now()-a.time){for(var i of a.context.abortListeners)try{i()}catch(e){h.logException(this.view.state,e)}a.context.abortListeners=null,this.running.splice(e--,1)}else a.updates.push(...t.transactions)}-1<this.debounceUpdate&&clearTimeout(this.debounceUpdate),t.transactions.some(e=>e.effects.some(e=>e.is(u)))&&(this.pendingStart=!0);var o=this.pendingStart?50:r.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(t=>t.isPending&&!this.running.some(e=>e.active.source==t.source))?setTimeout(()=>this.startUpdate(),o):-1,0!=this.composing)for(var s of t.transactions)s.isUserEvent(\"input.type\")?this.composing=2:2==this.composing&&s.selection&&(this.composing=3)}}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;var e=this.view[\"state\"],e=e.field(b);for(let t of e.active)t.isPending&&!this.running.some(e=>e.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(A).updateSyncTime))}startQuery(e){var t=this.view[\"state\"],r=c(t),t=new o(t,r,e.explicit,this.view);let n=new X(e,t);this.running.push(n),Promise.resolve(e.source(t)).then(e=>{n.context.aborted||(n.done=e||null,this.scheduleAccept())},e=>{this.view.dispatch({effects:d.of(null)}),h.logException(this.view.state,e)})}scheduleAccept(){this.running.every(e=>void 0!==e.done)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(A).updateSyncTime))}accept(){-1<this.debounceAccept&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;var r=[],n=this.view.state.facet(A),a=this.view.state.field(b);for(let e=0;e<this.running.length;e++){let t=this.running[e];if(void 0!==t.done){if(this.running.splice(e--,1),t.done){var i,o=c(t.updates.length?t.updates[0].startState:this.view.state),s=Math.min(o,t.done.from+(t.active.explicit?0:1));let e=new y(t.active.source,t.active.explicit,s,t.done,t.done.from,null!=(s=t.done.to)?s:o);for(i of t.updates)e=e.update(i,n);if(e.hasResult()){r.push(e);continue}}s=a.active.find(e=>e.source==t.active.source);if(s&&s.isPending)if(null==t.done){let e=new _(t.active.source,0);for(var l of t.updates)e=e.update(l,n);e.isPending||r.push(e)}else this.startQuery(s)}}(r.length||a.open&&a.open.disabled)&&this.view.dispatch({effects:T.of(r)})}},{eventHandlers:{blur(e){var t=this.view.state.field(b,!1);t&&t.tooltip&&this.view.state.facet(A).closeOnBlur&&((t=t.open&&h.getTooltip(this.view,t.open.tooltip))&&t.dom.contains(e.relatedTarget)||setTimeout(()=>this.view.dispatch({effects:d.of(null)}),10))},compositionstart(){this.composing=1},compositionend(){3==this.composing&&setTimeout(()=>this.view.dispatch({effects:u.of(!1)}),20),this.composing=0}}}),te=\"object\"==typeof navigator&&/Win/.test(navigator.platform),re=S.Prec.highest(h.EditorView.domEventHandlers({keydown(e,r){var n=r.state.field(b,!1);if(!(!n||!n.open||n.open.disabled||n.open.selected<0||1<e.key.length||e.ctrlKey&&(!te||!e.altKey)||e.metaKey)){let t=n.open.options[n.open.selected];n=n.active.find(e=>e.source==t.source),n=t.completion.commitCharacters||n.result.commitCharacters;n&&-1<n.indexOf(e.key)&&a(r,t)}return!1}})),ne=h.EditorView.baseTheme({\".cm-tooltip.cm-tooltip-autocomplete\":{\"& > ul\":{fontFamily:\"monospace\",whiteSpace:\"nowrap\",overflow:\"hidden auto\",maxWidth_fallback:\"700px\",maxWidth:\"min(700px, 95vw)\",minWidth:\"250px\",maxHeight:\"10em\",height:\"100%\",listStyle:\"none\",margin:0,padding:0,\"& > li, & > completion-section\":{padding:\"1px 3px\",lineHeight:1.2},\"& > li\":{overflowX:\"hidden\",textOverflow:\"ellipsis\",cursor:\"pointer\"},\"& > completion-section\":{display:\"list-item\",borderBottom:\"1px solid silver\",paddingLeft:\"0.5em\",opacity:.7}}},\"&light .cm-tooltip-autocomplete ul li[aria-selected]\":{background:\"#17c\",color:\"white\"},\"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\":{background:\"#777\"},\"&dark .cm-tooltip-autocomplete ul li[aria-selected]\":{background:\"#347\",color:\"white\"},\"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\":{background:\"#444\"},\".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\":{content:'\"···\"',opacity:.5,display:\"block\",textAlign:\"center\"},\".cm-tooltip.cm-completionInfo\":{position:\"absolute\",padding:\"3px 9px\",width:\"max-content\",maxWidth:\"400px\",boxSizing:\"border-box\",whiteSpace:\"pre-line\"},\".cm-completionInfo.cm-completionInfo-left\":{right:\"100%\"},\".cm-completionInfo.cm-completionInfo-right\":{left:\"100%\"},\".cm-completionInfo.cm-completionInfo-left-narrow\":{right:\"30px\"},\".cm-completionInfo.cm-completionInfo-right-narrow\":{left:\"30px\"},\"&light .cm-snippetField\":{backgroundColor:\"#00000022\"},\"&dark .cm-snippetField\":{backgroundColor:\"#ffffff22\"},\".cm-snippetFieldPosition\":{verticalAlign:\"text-top\",width:0,height:\"1.15em\",display:\"inline-block\",margin:\"0 -0.7px -.7em\",borderLeft:\"1.4px dotted #888\"},\".cm-completionMatchedText\":{textDecoration:\"underline\"},\".cm-completionDetail\":{marginLeft:\"0.5em\",fontStyle:\"italic\"},\".cm-completionIcon\":{fontSize:\"90%\",width:\".8em\",display:\"inline-block\",textAlign:\"center\",paddingRight:\".6em\",opacity:\"0.6\",boxSizing:\"content-box\"},\".cm-completionIcon-function, .cm-completionIcon-method\":{\"&:after\":{content:\"'ƒ'\"}},\".cm-completionIcon-class\":{\"&:after\":{content:\"'○'\"}},\".cm-completionIcon-interface\":{\"&:after\":{content:\"'◌'\"}},\".cm-completionIcon-variable\":{\"&:after\":{content:\"'𝑥'\"}},\".cm-completionIcon-constant\":{\"&:after\":{content:\"'𝐶'\"}},\".cm-completionIcon-type\":{\"&:after\":{content:\"'𝑡'\"}},\".cm-completionIcon-enum\":{\"&:after\":{content:\"'∪'\"}},\".cm-completionIcon-property\":{\"&:after\":{content:\"'□'\"}},\".cm-completionIcon-keyword\":{\"&:after\":{content:\"'🔑︎'\"}},\".cm-completionIcon-namespace\":{\"&:after\":{content:\"'▢'\"}},\".cm-completionIcon-text\":{\"&:after\":{content:\"'abc'\",fontSize:\"50%\",verticalAlign:\"middle\"}}});class ae{constructor(e,t,r,n){this.field=e,this.line=t,this.from=r,this.to=n}}class ie{constructor(e,t,r){this.field=e,this.from=t,this.to=r}map(e){var t=e.mapPos(this.from,-1,S.MapMode.TrackDel),e=e.mapPos(this.to,1,S.MapMode.TrackDel);return null==t||null==e?null:new ie(this.field,t,e)}}class oe{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(n,e){let t=[],a=[e];var i,r=n.doc.lineAt(e),o=/^\\s*/.exec(r.text)[0];for(i of this.lines){if(t.length){let t=o,r=/^\\t*/.exec(i)[0].length;for(let e=0;e<r;e++)t+=n.facet(g.indentUnit);a.push(e+t.length-r),i=t+i.slice(r)}t.push(i),e+=i.length+1}r=this.fieldPositions.map(e=>new ie(e.field,a[e.line]+e.from,a[e.line]+e.to));return{text:t,ranges:r}}static parse(e){var n,a=[];let i=[],o=[],s;for(n of e.split(/\\r\\n?|\\n/)){for(;s=/[#$]\\{(?:(\\d+)(?::([^}]*))?|((?:\\\\[{}]|[^}])*))\\}/.exec(n);){let t=s[1]?+s[1]:null,e=s[2]||s[3]||\"\",r=-1;var l=e.replace(/\\\\[{}]/g,e=>e[1]);for(let e=0;e<a.length;e++)(null!=t?a[e].seq==t:l&&a[e].name==l)&&(r=e);if(r<0){let e=0;for(;e<a.length&&(null==t||null!=a[e].seq&&a[e].seq<t);)e++;a.splice(e,0,{seq:t,name:l}),r=e;for(var c of o)c.field>=r&&c.field++}o.push(new ae(r,i.length,s.index,s.index+l.length)),n=n.slice(0,s.index)+e+n.slice(s.index+s[0].length)}n=n.replace(/\\\\([{}])/g,(e,t,r)=>{for(var n of o)n.line==i.length&&n.from>r&&(n.from--,n.to--);return t}),i.push(n)}return new oe(i,o)}}let se=h.Decoration.widget({widget:new class extends h.WidgetType{toDOM(){var e=document.createElement(\"span\");return e.className=\"cm-snippetFieldPosition\",e}ignoreEvent(){return!1}}}),le=h.Decoration.mark({class:\"cm-snippetField\"});class C{constructor(e,t){this.ranges=e,this.active=t,this.deco=h.Decoration.set(e.map(e=>(e.from==e.to?se:le).range(e.from,e.to)))}map(e){var t,r=[];for(t of this.ranges){var n=t.map(e);if(!n)return null;r.push(n)}return new C(r,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(e=>e.field==this.active&&e.from<=t.from&&e.to>=t.to))}}const w=S.StateEffect.define({map(e,t){return e&&e.map(t)}}),ce=S.StateEffect.define(),k=S.StateField.define({create(){return null},update(e,t){for(var r of t.effects){if(r.is(w))return r.value;if(r.is(ce)&&e)return new C(e.ranges,r.value)}return e=(e=e&&t.docChanged?e.map(t.changes):e)&&t.selection&&!e.selectionInsideField(t.selection)?null:e},provide:e=>h.EditorView.decorations.from(e,e=>e?e.deco:h.Decoration.none)});function I(e,t){return S.EditorSelection.create(e.filter(e=>e.field==t).map(e=>S.EditorSelection.range(e.from,e.to)))}function ue(e){let s=oe.parse(e);return(e,t,r,n)=>{var{text:a,ranges:i}=s.instantiate(e.state,r),o=e.state.selection[\"main\"],r={changes:{from:r,to:n==o.from?o.to:n,insert:S.Text.of(a)},scrollIntoView:!0,annotations:t?[l.of(t),S.Transaction.userEvent.of(\"input.complete\")]:void 0};i.length&&(r.selection=I(i,0)),i.some(e=>0<e.field)&&(o=new C(i,0),n=r.effects=[w.of(o)],void 0===e.state.field(k,!1))&&n.push(S.StateEffect.appendConfig.of([k,ge,_e,ne])),e.dispatch(e.state.update(r))}}function de(i){return({state:e,dispatch:t})=>{var r=e.field(k,!1);if(!r||i<0&&0==r.active)return!1;let n=r.active+i,a=0<i&&!r.ranges.some(e=>e.field==n+i);return t(e.update({selection:I(r.ranges,n),effects:w.of(a?null:new C(r.ranges,n)),scrollIntoView:!0})),!0}}var pe=({state:e,dispatch:t})=>{return!!e.field(k,!1)&&(t(e.update({effects:w.of(null)})),!0)},fe=de(1),he=de(-1);const me=[{key:\"Tab\",run:fe,shift:he},{key:\"Escape\",run:pe}],R=S.Facet.define({combine(e){return e.length?e[0]:me}}),ge=S.Prec.highest(h.keymap.compute([R],e=>e.facet(R)));const _e=h.EditorView.domEventHandlers({mousedown(e,t){let r=t.state.field(k,!1),n;if(!r||null==(n=t.posAtCoords({x:e.clientX,y:e.clientY})))return!1;let a=r.ranges.find(e=>e.from<=n&&e.to>=n);return!(!a||a.field==r.active||(t.dispatch({selection:I(r.ranges,a.field),effects:w.of(r.ranges.some(e=>e.field>a.field)?new C(r.ranges,a.field):null),scrollIntoView:!0}),0))}});function ye(e,t){return new RegExp(t(e.source),e.unicode?\"u\":\"\")}const Te=Object.create(null);function ve(r,n,a,i,o){for(let e=r.iterLines(),t=0;!e.next().done;){var s,l=e[\"value\"];for(n.lastIndex=0;s=n.exec(l);)if(!i[s[0]]&&t+s.index!=o&&(a.push({type:\"text\",label:s[0]}),i[s[0]]=!0,2e3<=a.length))return;t+=l.length+1}}const N={brackets:[\"(\",\"[\",\"{\",\"'\",'\"'],before:\")]}:;>\",stringPrefixes:[]},M=S.StateEffect.define({map(e,t){t=t.mapPos(e,-1,S.MapMode.TrackAfter);return null==t?void 0:t}}),P=new class extends S.RangeValue{},be=(P.startSide=1,P.endSide=-1,S.StateField.define({create(){return S.RangeSet.empty},update(e,r){if(e=e.map(r.changes),r.selection){let t=r.state.doc.lineAt(r.selection.main.head);e=e.update({filter:e=>e>=t.from&&e<=t.to})}for(var t of r.effects)t.is(M)&&(e=e.update({add:[P.range(t.value,t.value+1)]}));return e}}));const D=\"()[]{}<>«»»«［］｛｝\";function Ee(t){for(let e=0;e<D.length;e+=2)if(D.charCodeAt(e)==t)return D.charAt(e+1);return S.fromCodePoint(t<128?t:t+1)}function Se(e,t){return e.languageDataAt(\"closeBrackets\",t)[0]||N}const Ae=\"object\"==typeof navigator&&/Android\\b/.test(navigator.userAgent),Oe=h.EditorView.inputHandler.of((e,t,r,n)=>{var a;return!((Ae?e.composing:e.compositionStarted)||e.state.readOnly||(a=e.state.selection.main,2<n.length)||2==n.length&&1==S.codePointSize(S.codePointAt(n,0))||t!=a.from||r!=a.to||!(t=ke(e.state,n))||(e.dispatch(t),0))});var Ce=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let a=Se(n,n.selection.main.head).brackets||N.brackets,i=null,t=n.changeByRange(e=>{if(e.empty){var t,r=function(e,t){e=e.sliceString(t-2,t);return S.codePointSize(S.codePointAt(e,0))==e.length?e:e.slice(1)}(n.doc,e.head);for(t of a)if(t==r&&x(n.doc,e.head)==Ee(S.codePointAt(t,0)))return{changes:{from:e.head-t.length,to:e.head+t.length},range:S.EditorSelection.cursor(e.head-t.length)}}return{range:i=e}});return i||e(n.update(t,{scrollIntoView:!0,userEvent:\"delete.backward\"})),!i},we=[{key:\"Backspace\",run:Ce}];function ke(n,e){var a,t=Se(n,n.selection.main.head),r=t.brackets||N.brackets;for(a of r){var i=Ee(S.codePointAt(a,0));if(e==a)if(i==a){var s=n;var l=a;var c=-1<r.indexOf(a+a+a);var u=t;let i=u.stringPrefixes||N.stringPrefixes,o=null,e=s.changeByRange(e=>{if(!e.empty)return{changes:[{insert:l,from:e.from},{insert:l,from:e.to}],effects:M.of(e.to+l.length),range:S.EditorSelection.range(e.anchor+l.length,e.head+l.length)};let t=e.head,r=x(s.doc,t),n;if(r==l){if(Re(s,t))return{changes:{insert:l+l,from:t},effects:M.of(t+l.length),range:S.EditorSelection.cursor(t+l.length)};var a;if(Ie(s,t))return{changes:{from:t,to:t+(a=c&&s.sliceDoc(t,t+3*l.length)==l+l+l?l+l+l:l).length,insert:a},range:S.EditorSelection.cursor(t+a.length)}}else{if(c&&s.sliceDoc(t-2*l.length,t)==l+l&&-1<(n=Ne(s,t-2*l.length,i))&&Re(s,n))return{changes:{insert:l+l+l+l,from:t},effects:M.of(t+l.length),range:S.EditorSelection.cursor(t+l.length)};if(s.charCategorizer(t)(r)!=S.CharCategory.Word&&-1<Ne(s,t,i)&&!function(t,r,n,a){let i=g.syntaxTree(t).resolveInner(r,-1),o=a.reduce((e,t)=>Math.max(e,t.length),0);for(let e=0;e<5;e++){var s=t.sliceDoc(i.from,Math.min(i.to,i.from+n.length+o)),l=s.indexOf(n);if(!l||-1<l&&-1<a.indexOf(s.slice(0,l))){let e=i.firstChild;for(;e&&e.from==i.from&&e.to-e.from>n.length+l;){if(t.sliceDoc(e.to-n.length,e.to)==n)return;e=e.firstChild}return 1}s=i.to==r&&i.parent;if(!s)break;i=s}return}(s,t,l,i))return{changes:{insert:l+l,from:t},effects:M.of(t+l.length),range:S.EditorSelection.cursor(t+l.length)}}return{range:o=e}});return o?null:s.update(e,{scrollIntoView:!0,userEvent:\"input.type\"});return}else{var o=n;var d=a;var p=i;var f=t.before||N.before;let r=null,e=o.changeByRange(e=>{var t;return e.empty?!(t=x(o.doc,e.head))||/\\s/.test(t)||-1<f.indexOf(t)?{changes:{insert:d+p,from:e.head},effects:M.of(e.head+d.length),range:S.EditorSelection.cursor(e.head+d.length)}:{range:r=e}:{changes:[{insert:d,from:e.from},{insert:p,from:e.to}],effects:M.of(e.to+d.length),range:S.EditorSelection.range(e.anchor+d.length,e.head+d.length)}});return r?null:o.update(e,{scrollIntoView:!0,userEvent:\"input.type\"});return}if(e==i&&Ie(n,n.selection.main.from)){var h=n;a;var m=i;let t=null,e=h.changeByRange(e=>e.empty&&x(h.doc,e.head)==m?{changes:{from:e.head,to:e.head+m.length,insert:m},range:S.EditorSelection.cursor(e.head+m.length)}:t={range:e});return t?null:h.update(e,{scrollIntoView:!0,userEvent:\"input.type\"});return}}return null}function Ie(e,t){let r=!1;return e.field(be).between(0,e.doc.length,e=>{e==t&&(r=!0)}),r}function x(e,t){e=e.sliceString(t,t+2);return e.slice(0,S.codePointSize(S.codePointAt(e,0)))}function Re(e,t){e=g.syntaxTree(e).resolveInner(t+1);return e.parent&&e.from==t}function Ne(e,t,r){var n,a=e.charCategorizer(t);if(a(e.sliceDoc(t-1,t))!=S.CharCategory.Word)return t;for(n of r){var i=t-n.length;if(e.sliceDoc(i,t)==n&&a(e.sliceDoc(i-1,i))!=S.CharCategory.Word)return i}return-1}const Me=[{key:\"Ctrl-Space\",run:O},{mac:\"Alt-`\",run:O},{key:\"Escape\",run:Z},{key:\"ArrowDown\",run:e(!0)},{key:\"ArrowUp\",run:e(!1)},{key:\"PageDown\",run:e(!0,\"page\")},{key:\"PageUp\",run:e(!1,\"page\")},{key:\"Enter\",run:Q}],Pe=S.Prec.highest(h.keymap.computeN([A],e=>e.facet(A).defaultKeymap?[Me]:[]));const De=new WeakMap;return Je.CompletionContext=o,Je.acceptCompletion=Q,Je.autocompletion=function(e={}){return[re,b,A.of(e),ee,Pe,ne]},Je.clearSnippet=pe,Je.closeBrackets=function(){return[Oe,be]},Je.closeBracketsKeymap=we,Je.closeCompletion=Z,Je.completeAnyWord=e=>{var t=e.state.languageDataAt(\"wordChars\",e.pos).join(\"\"),r=function(t){t=t.replace(/[\\]\\-\\\\]/g,\"\\\\$&\");try{return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${t}]+`,\"ug\")}catch(e){return new RegExp(`[w${t}]`,\"g\")}}(t),n=e.matchBefore(ye(r,e=>e+\"$\"));return n||e.explicit?{from:n=n?n.from:e.pos,options:function t(r,n,a,i,o){var e=1e3<=r.length,s=e&&n.get(r);if(s)return s;var l=[],c=Object.create(null);if(r.children){let e=0;for(var u of r.children){if(1e3<=u.length)for(var d of t(u,n,a,i-e,o-e))c[d.label]||(c[d.label]=!0,l.push(d));else ve(u,a,l,c,o-e);e+=u.length+1}}else ve(r,a,l,c,o);return e&&l.length<2e3&&n.set(r,l),l}(e.state.doc,(e=t,Te[e]||(Te[e]=new WeakMap)),r,5e4,n),validFor:ye(r,e=>\"^\"+e)}:null},Je.completeFromList=n,Je.completionKeymap=Me,Je.completionStatus=function(e){return(e=e.field(b,!1))&&e.active.some(e=>e.isPending)?\"pending\":e&&e.active.some(e=>0!=e.state)?\"active\":null},Je.currentCompletions=function(e){if(!(e=null==(e=e.field(b,!1))?void 0:e.open)||e.disabled)return[];let t=De.get(e.options);return t||De.set(e.options,t=e.options.map(e=>e.completion)),t},Je.deleteBracketPair=Ce,Je.hasNextSnippetField=function(e){let t=e.field(k,!1);return!(!t||!t.ranges.some(e=>e.field==t.active+1))},Je.hasPrevSnippetField=function(e){return!!((e=e.field(k,!1))&&0<e.active)},Je.ifIn=function(r,n){return t=>{for(let e=g.syntaxTree(t.state).resolveInner(t.pos,-1);e;e=e.parent){if(-1<r.indexOf(e.name))return n(t);if(e.type.isTop)break}return null}},Je.ifNotIn=function(r,e){return t=>{for(let e=g.syntaxTree(t.state).resolveInner(t.pos,-1);e;e=e.parent){if(-1<r.indexOf(e.name))return null;if(e.type.isTop)break}return e(t)}},Je.insertBracket=ke,Je.insertCompletionText=L,Je.moveCompletionSelection=e,Je.nextSnippetField=fe,Je.pickedCompletion=l,Je.prevSnippetField=he,Je.selectedCompletion=function(e){return(e=null==(e=e.field(b,!1))?void 0:e.open)&&!e.disabled&&0<=e.selected?e.options[e.selected].completion:null},Je.selectedCompletionIndex=function(e){return(e=null==(e=e.field(b,!1))?void 0:e.open)&&!e.disabled&&0<=e.selected?e.selected:null},Je.setSelectedCompletion=function(e){return v.of(e)},Je.snippet=ue,Je.snippetCompletion=function(e,t){return Object.assign(Object.assign({},t),{apply:ue(e)})},Je.snippetKeymap=R,Je.startCompletion=O,Je}var YR,JR,QR={};function ZR(){if(YR)return QR;YR=1;var d=bR(),p=cR(),u=vR();class i{constructor(e,t,r){this.from=e,this.to=t,this.diagnostic=r}}class f{constructor(e,t,r){this.diagnostics=e,this.panel=t,this.selected=r}static init(e,t,n){var r=n.facet(v).markerFilter,a=(e=r?r(e,n):e).slice().sort((e,t)=>e.from-t.from||e.to-t.to);let i=new p.RangeSetBuilder,o=[],s=0;for(let r=0;;){var l=r==a.length?null:a[r];if(!l&&!o.length)break;let e,t;for(o.length?(e=s,t=o.reduce((e,t)=>Math.min(e,t.to),l&&l.from>e?l.from:1e8)):(e=l.from,t=l.to,o.push(l),r++);r<a.length;){var c=a[r];if(c.from!=e||!(c.to>c.from||c.to==e)){t=Math.min(c.from,t);break}o.push(c),r++,t=Math.min(c.to,t)}var u,l=I(o);o.some(e=>e.from==e.to||e.from==e.to-1&&n.doc.lineAt(e.from).to==e.from)?i.add(e,e,d.Decoration.widget({widget:new S(l),diagnostics:o.slice()})):(u=o.reduce((e,t)=>t.markClass?e+\" \"+t.markClass:e,\"\"),i.add(e,t,d.Decoration.mark({class:\"cm-lintRange cm-lintRange-\"+l+u,diagnostics:o.slice(),inclusiveEnd:o.some(e=>e.to>t)}))),s=t;for(let e=0;e<o.length;e++)o[e].to<=s&&o.splice(e--,1)}r=i.finish();return new f(r,t,h(r))}}function h(e,n=null,t=0){let a=null;return e.between(t,1e9,(e,t,{spec:r})=>{if(!(n&&r.diagnostics.indexOf(n)<0))if(a){if(r.diagnostics.indexOf(a.diagnostic)<0)return!1;a=new i(a.from,t,a.diagnostic)}else a=new i(e,t,n||r.diagnostics[0])}),a}function r(e,t){var r=t.pos,n=t.end||r,r=e.state.facet(v).hideOn(e,r,n);return null!=r?r:(r=e.startState.doc.lineAt(t.pos),!(!e.effects.some(e=>e.is(o))&&!e.changes.touchesRange(r.from,Math.max(r.to,n))))}function n(e,t){return e.field(m,!1)?t:t.concat(p.StateEffect.appendConfig.of(D))}function l(e,t){return{effects:n(e,[o.of(t)])}}const o=p.StateEffect.define(),s=p.StateEffect.define(),c=p.StateEffect.define(),m=p.StateField.define({create(){return new f(d.Decoration.none,null,null)},update(n,a){if(a.docChanged&&n.diagnostics.size){let e=n.diagnostics.map(a.changes),t=null,r=n.panel;var i;n.selected&&(i=a.changes.mapPos(n.selected.from,1),t=h(e,n.selected.diagnostic,i)||h(e,null,i)),!e.size&&r&&a.state.facet(v).autoPanel&&(r=null),n=new f(e,r,t)}for(var e of a.effects){var t;e.is(o)?(t=a.state.facet(v).autoPanel?e.value.length?O.open:null:n.panel,n=f.init(e.value,t,a.state)):e.is(s)?n=new f(n.diagnostics,e.value?O.open:null,n.selected):e.is(c)&&(n=new f(n.diagnostics,n.panel,e.value))}return n},provide:e=>[d.showPanel.from(e,e=>e.panel),d.EditorView.decorations.from(e,e=>e.diagnostics)]});const a=d.Decoration.mark({class:\"cm-lintRange cm-lintRange-active\"});function g(t,e){return u(\"ul\",{class:\"cm-tooltip-lint\"},e.map(e=>E(t,e,!1)))}var e=e=>{var t=e.state.field(m,!1),t=(t&&t.panel||e.dispatch({effects:n(e.state,[s.of(!0)])}),d.getPanel(e,O.open));return t&&t.dom.querySelector(\".cm-panel-lint ul\").focus(),!0};const _=e=>{var t=e.state.field(m,!1);return!(!t||!t.panel||(e.dispatch({effects:s.of(!1)}),0))};var t=e=>{var t=e.state.field(m,!1);if(!t)return!1;let r=e.state.selection.main,n=t.diagnostics.iter(r.to+1);return!(!n.value&&(!(n=t.diagnostics.iter(0)).value||n.from==r.from&&n.to==r.to)||(e.dispatch({selection:{anchor:n.from,head:n.to},scrollIntoView:!0}),0))},y=[{key:\"Mod-Shift-m\",run:e,preventDefault:!0},{key:\"F8\",run:t}];const T=d.ViewPlugin.fromClass(class{constructor(e){this.view=e,this.timeout=-1,this.set=!0;e=e.state.facet(v).delay;this.lintTime=Date.now()+e,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,e)}run(){clearTimeout(this.timeout);var e=Date.now();if(e<this.lintTime-10)this.timeout=setTimeout(this.run,this.lintTime-e);else{this.set=!1;let n=this.view[\"state\"],e=n.facet(v)[\"sources\"];if(e.length){var a,i=e.map(e=>Promise.resolve(e(this.view))),o=e=>{this.view.state.doc==n.doc&&this.view.dispatch(l(this.view.state,e.reduce((e,t)=>e.concat(t))))},s=e=>{d.logException(this.view.state,e)};let t=[],r=-1;for(a of i)a.then(e=>{t.push(e),clearTimeout(r),t.length==i.length?o(t):r=setTimeout(()=>o(t),200)},s)}}}update(e){var t=e.state.facet(v);(e.docChanged||t!=e.startState.facet(v)||t.needsRefresh&&t.needsRefresh(e))&&(this.lintTime=Date.now()+t.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,t.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}});const v=p.Facet.define({combine(e){return Object.assign({sources:e.map(e=>e.source).filter(e=>null!=e)},p.combineConfig(e.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{needsRefresh:(t,r)=>t?r?e=>t(e)||r(e):t:r}))}});function b(e){var r=[];if(e)e:for(var{name:n}of e){for(let e=0;e<n.length;e++){let t=n[e];if(/[a-zA-Z]/.test(t)&&!r.some(e=>e.toLowerCase()==t.toLowerCase())){r.push(t);continue e}}r.push(\"\")}return r}function E(s,l,e){let c=e?b(l.actions):[];return u(\"li\",{class:\"cm-diagnostic cm-diagnostic-\"+l.severity},u(\"span\",{class:\"cm-diagnosticText\"},l.renderMessage?l.renderMessage(s):l.message),null==(e=l.actions)?void 0:e.map((t,e)=>{let r=!1,n=e=>{e.preventDefault(),!r&&(r=!0,e=h(s.state.field(m).diagnostics,l))&&t.apply(s,e.from,e.to)};var a=t[\"name\"],i=c[e]?a.indexOf(c[e]):-1,o=i<0?a:[a.slice(0,i),u(\"u\",a.slice(i,i+1)),a.slice(i+1)];return u(\"button\",{type:\"button\",class:\"cm-diagnosticAction\",onclick:n,onmousedown:n,\"aria-label\":` Action: ${a}${i<0?\"\":` (access key \"${c[e]})\"`}.`},o)}),l.source&&u(\"div\",{class:\"cm-diagnosticSource\"},l.source))}class S extends d.WidgetType{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return u(\"span\",{class:\"cm-lintPoint cm-lintPoint-\"+this.sev})}}class A{constructor(e,t){this.diagnostic=t,this.id=\"item_\"+Math.floor(4294967295*Math.random()).toString(16),this.dom=E(e,t,!0),this.dom.id=this.id,this.dom.setAttribute(\"role\",\"option\")}}class O{constructor(i){this.view=i,this.items=[];this.list=u(\"ul\",{tabIndex:0,role:\"listbox\",\"aria-label\":this.view.state.phrase(\"Diagnostics\"),onkeydown:t=>{if(27==t.keyCode)_(this.view),this.view.focus();else if(38==t.keyCode||33==t.keyCode)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(40==t.keyCode||34==t.keyCode)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(36==t.keyCode)this.moveSelection(0);else if(35==t.keyCode)this.moveSelection(this.items.length-1);else if(13==t.keyCode)this.view.focus();else{if(!(65<=t.keyCode&&t.keyCode<=90&&0<=this.selectedIndex))return;var r,n=this.items[this.selectedIndex][\"diagnostic\"],a=b(n.actions);for(let e=0;e<a.length;e++)a[e].toUpperCase().charCodeAt(0)==t.keyCode&&(r=h(this.view.state.field(m).diagnostics,n))&&n.actions[e].apply(i,r.from,r.to)}t.preventDefault()},onclick:t=>{for(let e=0;e<this.items.length;e++)this.items[e].dom.contains(t.target)&&this.moveSelection(e)}}),this.dom=u(\"div\",{class:\"cm-panel-lint\"},this.list,u(\"button\",{type:\"button\",name:\"close\",\"aria-label\":this.view.state.phrase(\"close\"),onclick:()=>_(this.view)},\"×\")),this.update()}get selectedIndex(){var t=this.view.state.field(m).selected;if(t)for(let e=0;e<this.items.length;e++)if(this.items[e].diagnostic==t.diagnostic)return e;return-1}update(){let{diagnostics:e,selected:a}=this.view.state.field(m),i=0,o=!1,s=null,l=new Set;for(e.between(0,this.view.state.doc.length,(e,t,{spec:r})=>{for(var n of r.diagnostics)if(!l.has(n)){l.add(n);let t=-1,e;for(let e=i;e<this.items.length;e++)if(this.items[e].diagnostic==n){t=e;break}t<0?(e=new A(this.view,n),this.items.splice(i,0,e),o=!0):(e=this.items[t],t>i&&(this.items.splice(i,t-i),o=!0)),a&&e.diagnostic==a.diagnostic?e.dom.hasAttribute(\"aria-selected\")||(e.dom.setAttribute(\"aria-selected\",\"true\"),s=e):e.dom.hasAttribute(\"aria-selected\")&&e.dom.removeAttribute(\"aria-selected\"),i++}});i<this.items.length&&!(1==this.items.length&&this.items[0].diagnostic.from<0);)o=!0,this.items.pop();0==this.items.length&&(this.items.push(new A(this.view,{from:-1,to:-1,severity:\"info\",message:this.view.state.phrase(\"No diagnostics\")})),o=!0),s?(this.list.setAttribute(\"aria-activedescendant\",s.id),this.view.requestMeasure({key:this,read:()=>({sel:s.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:e,panel:t})=>{var r=t.height/this.list.offsetHeight;e.top<t.top?this.list.scrollTop-=(t.top-e.top)/r:e.bottom>t.bottom&&(this.list.scrollTop+=(e.bottom-t.bottom)/r)}})):this.selectedIndex<0&&this.list.removeAttribute(\"aria-activedescendant\"),o&&this.sync()}sync(){let t=this.list.firstChild;function e(){var e=t;t=e.nextSibling,e.remove()}for(var r of this.items)if(r.dom.parentNode==this.list){for(;t!=r.dom;)e();t=r.dom.nextSibling}else this.list.insertBefore(r.dom,t);for(;t;)e()}moveSelection(e){this.selectedIndex<0||(e=h(this.view.state.field(m).diagnostics,this.items[e].diagnostic))&&this.view.dispatch({selection:{anchor:e.from,head:e.to},scrollIntoView:!0,effects:c.of(e)})}static open(e){return new O(e)}}function C(e,t='viewBox=\"0 0 40 40\"'){return`url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" ${t}>${encodeURIComponent(e)}</svg>')`}function w(e){return C(`<path d=\"m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0\" stroke=\"${e}\" fill=\"none\" stroke-width=\".7\"/>`,'width=\"6\" height=\"3\"')}var k=d.EditorView.baseTheme({\".cm-diagnostic\":{padding:\"3px 6px 3px 8px\",marginLeft:\"-1px\",display:\"block\",whiteSpace:\"pre-wrap\"},\".cm-diagnostic-error\":{borderLeft:\"5px solid #d11\"},\".cm-diagnostic-warning\":{borderLeft:\"5px solid orange\"},\".cm-diagnostic-info\":{borderLeft:\"5px solid #999\"},\".cm-diagnostic-hint\":{borderLeft:\"5px solid #66d\"},\".cm-diagnosticAction\":{font:\"inherit\",border:\"none\",padding:\"2px 4px\",backgroundColor:\"#444\",color:\"white\",borderRadius:\"3px\",marginLeft:\"8px\",cursor:\"pointer\"},\".cm-diagnosticSource\":{fontSize:\"70%\",opacity:.7},\".cm-lintRange\":{backgroundPosition:\"left bottom\",backgroundRepeat:\"repeat-x\",paddingBottom:\"0.7px\"},\".cm-lintRange-error\":{backgroundImage:w(\"#d11\")},\".cm-lintRange-warning\":{backgroundImage:w(\"orange\")},\".cm-lintRange-info\":{backgroundImage:w(\"#999\")},\".cm-lintRange-hint\":{backgroundImage:w(\"#66d\")},\".cm-lintRange-active\":{backgroundColor:\"#ffdd9980\"},\".cm-tooltip-lint\":{padding:0,margin:0},\".cm-lintPoint\":{position:\"relative\",\"&:after\":{content:'\"\"',position:\"absolute\",bottom:0,left:\"-2px\",borderLeft:\"3px solid transparent\",borderRight:\"3px solid transparent\",borderBottom:\"4px solid #d11\"}},\".cm-lintPoint-warning\":{\"&:after\":{borderBottomColor:\"orange\"}},\".cm-lintPoint-info\":{\"&:after\":{borderBottomColor:\"#999\"}},\".cm-lintPoint-hint\":{\"&:after\":{borderBottomColor:\"#66d\"}},\".cm-panel.cm-panel-lint\":{position:\"relative\",\"& ul\":{maxHeight:\"100px\",overflowY:\"auto\",\"& [aria-selected]\":{backgroundColor:\"#ddd\",\"& u\":{textDecoration:\"underline\"}},\"&:focus [aria-selected]\":{background_fallback:\"#bdf\",backgroundColor:\"Highlight\",color_fallback:\"white\",color:\"HighlightText\"},\"& u\":{textDecoration:\"none\"},padding:0,margin:0},\"& [name=close]\":{position:\"absolute\",top:\"0\",right:\"2px\",background:\"inherit\",border:\"none\",font:\"inherit\",padding:0,margin:0}}});function I(t){let r=\"hint\",n=1;for(let e of t){a=\"error\"==(a=e.severity)?4:\"warning\"==a?3:\"info\"==a?2:1;a>n&&(n=a,r=e.severity)}var a;return r}class R extends d.GutterMarker{constructor(e){super(),this.diagnostics=e,this.severity=I(e)}toDOM(a){let s=document.createElement(\"div\"),l=(s.className=\"cm-lint-marker cm-lint-marker-\"+this.severity,this.diagnostics);var e=a.state.facet(x).tooltipFilter;return(l=e?e(l,a.state):l).length&&(s.onmouseover=()=>{{var i=a,o=s,r=l;function n(){var e=i.elementAtHeight(o.getBoundingClientRect().top+5-i.documentTop);i.coordsAtPos(e.from)&&i.dispatch({effects:M.of({pos:e.from,above:!1,clip:!1,create(){return{dom:g(i,r),getCoords:()=>o.getBoundingClientRect()}}})}),o.onmouseout=o.onmousemove=null;{var n=i,a=o;let r=t=>{var e=a.getBoundingClientRect();if(!(t.clientX>e.left-10&&t.clientX<e.right+10&&t.clientY>e.top-10&&t.clientY<e.bottom+10)){for(let e=t.target;e;e=e.parentNode)if(1==e.nodeType&&e.classList.contains(\"cm-tooltip-lint\"))return;window.removeEventListener(\"mousemove\",r),n.state.field(P)&&n.dispatch({effects:M.of(null)})}};window.addEventListener(\"mousemove\",r)}}let e=i.state.facet(x)[\"hoverTime\"],t=setTimeout(n,e);o.onmouseout=()=>{clearTimeout(t),o.onmouseout=o.onmousemove=null},o.onmousemove=()=>{clearTimeout(t),t=setTimeout(n,e)}}}),s}}const L=d.gutter({class:\"cm-gutter-lint\",markers:e=>e.state.field(N),widgetMarker:(e,t,n)=>{let a=[];return e.state.field(N).between(n.from,n.to,(e,t,r)=>{e>n.from&&e<n.to&&a.push(...r.diagnostics)}),a.length?new R(a):null}}),N=p.StateField.define({create(){return p.RangeSet.empty},update(t,r){t=t.map(r.changes);var n,a=r.state.facet(x).markerFilter;for(n of r.effects)if(n.is(o)){let e=n.value;a&&(e=a(e||[],r.state)),t=function(e,t){var r,n=Object.create(null);for(r of t){var a=e.lineAt(r.from);(n[a.from]||(n[a.from]=[])).push(r)}var i,o=[];for(i in n)o.push(new R(n[i]).range(+i));return p.RangeSet.of(o,!0)}(r.state.doc,e.slice(0))}return t}}),M=p.StateEffect.define(),P=p.StateField.define({create(){return null},update(e,t){return e&&t.docChanged&&(e=r(t,e)?null:Object.assign(Object.assign({},e),{pos:t.changes.mapPos(e.pos)})),t.effects.reduce((e,t)=>t.is(M)?t.value:e,e)},provide:e=>d.showTooltip.from(e)}),F=d.EditorView.baseTheme({\".cm-gutter-lint\":{width:\"1.4em\",\"& .cm-gutterElement\":{padding:\".2em\"}},\".cm-lint-marker\":{width:\"1em\",height:\"1em\"},\".cm-lint-marker-info\":{content:C('<path fill=\"#aaf\" stroke=\"#77e\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M5 5L35 5L35 35L5 35Z\"/>')},\".cm-lint-marker-warning\":{content:C('<path fill=\"#fe8\" stroke=\"#fd7\" stroke-width=\"6\" stroke-linejoin=\"round\" d=\"M20 6L37 35L3 35Z\"/>')},\".cm-lint-marker-error\":{content:C('<circle cx=\"20\" cy=\"20\" r=\"15\" fill=\"#f87\" stroke=\"#f43\" stroke-width=\"6\"/>')}}),D=[m,d.EditorView.decorations.compute([m],e=>{var{selected:e,panel:t}=e.field(m);return e&&t&&e.from!=e.to?d.Decoration.set([a.range(e.from,e.to)]):d.Decoration.none}),d.hoverTooltip(function(e,n,a){var t=e.state.field(m)[\"diagnostics\"];let i,o=-1,s=-1;return t.between(n-(a<0?1:0),n+(0<a?1:0),(e,t,{spec:r})=>{if(e<=n&&n<=t&&(e==t||(e<n||0<a)&&(n<t||a<0)))return i=r.diagnostics,o=e,s=t,!1}),t=e.state.facet(v).tooltipFilter,(i=i&&t?t(i,e.state):i)?{pos:o,end:s,above:e.state.doc.lineAt(o).to<s,create(){return{dom:g(e,i)}}}:null},{hideOn:r}),k],x=p.Facet.define({combine(e){return p.combineConfig(e,{hoverTime:300,markerFilter:null,tooltipFilter:null})}});return QR.closeLintPanel=_,QR.diagnosticCount=function(e){return(e=e.field(m,!1))?e.diagnostics.size:0},QR.forEachDiagnostic=function(e,a){if((e=e.field(m,!1))&&e.diagnostics.size){let t=[],r=[],n=-1;for(var i=p.RangeSet.iter([e.diagnostics]);;i.next()){for(let e=0;e<t.length;e++)(!i.value||i.value.spec.diagnostics.indexOf(t[e])<0)&&(a(t[e],r[e],n),t.splice(e,1),r.splice(e--,1));if(!i.value)break;for(var o of i.value.spec.diagnostics)t.indexOf(o)<0&&(t.push(o),r.push(i.from));n=i.to}}},QR.forceLinting=function(e){(e=e.plugin(T))&&e.force()},QR.lintGutter=function(e={}){return[x.of(e),N,L,F,P]},QR.lintKeymap=y,QR.linter=function(e,t={}){return[v.of({source:e,config:t}),T,D]},QR.nextDiagnostic=t,QR.openLintPanel=e,QR.previousDiagnostic=e=>{var t=e[\"state\"],r=t.field(m,!1);if(!r)return!1;let n=t.selection.main,a,i,o,s;return r.diagnostics.between(0,t.doc.length,(e,t)=>{t<n.to&&(null==a||a<e)&&(a=e,i=t),(null==o||e>o)&&(o=e,s=t)}),null!=o&&(null!=a||o!=n.from)&&(e.dispatch({selection:{anchor:null!==a&&void 0!==a?a:o,head:null!==i&&void 0!==i?i:s},scrollIntoView:!0}),!0)},QR.setDiagnostics=l,QR.setDiagnosticsEffect=o,QR}var XR,eN,tN,rN,nN={},aN={},iN={};function oN(){if(XR)return iN;XR=1;var _=AR();class a{constructor(e,t,r,n,a,i,o,s,l,c=0,u){this.p=e,this.stack=t,this.state=r,this.reducePos=n,this.pos=a,this.score=i,this.buffer=o,this.bufferBase=s,this.curContext=l,this.lookAhead=c,this.parent=u}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@`+this.pos+(this.score?\"!\"+this.score:\"\")}static start(e,t,r=0){var n=e.parser.context;return new a(e,[],t,r,r,0,[],0,n?new i(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t=e>>19,r=65535&e,n=this.p[\"parser\"],a=this.reducePos<this.pos-25,i=(a&&this.setLookAhead(this.pos),n.dynamicPrecedence(r));if(i&&(this.score+=i),0==t)this.pushState(n.getGoto(this.state,r,!0),this.reducePos),r<n.minRepeatTerm&&this.storeNode(r,this.reducePos,this.reducePos,a?8:4,!0),this.reduceContext(r,this.reducePos);else{var o=this.stack.length-3*(t-1)-(262144&e?6:0),i=o?this.stack[o-2]:this.p.ranges[0].from,a=this.reducePos-i,t=(2e3<=a&&(null==(t=this.p.parser.nodeSet.types[r])||!t.isAnonymous)&&(i==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=a):this.p.lastBigReductionSize<a&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=i,this.p.lastBigReductionSize=a)),o?this.stack[o-1]:0),a=this.bufferBase+this.buffer.length-t;for((r<n.minRepeatTerm||131072&e)&&(t=n.stateFlag(this.state,1)?this.pos:this.reducePos,this.storeNode(r,i,t,4+a,!0)),262144&e?this.state=this.stack[o]:(t=this.stack[o-3],this.state=n.getGoto(t,r,!0));this.stack.length>o;)this.stack.pop();this.reduceContext(r,i)}}storeNode(e,n,a,i=4,t=!1){if(0==e&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let e=this,t=this.buffer.length;if(0==t&&e.parent&&(t=e.bufferBase-e.parent.bufferBase,e=e.parent),0<t&&0==e.buffer[t-4]&&-1<e.buffer[t-1]){if(n==a)return;if(e.buffer[t-2]>=n)return void(e.buffer[t-2]=a)}}if(t&&this.pos!=a){let r=this.buffer.length;if(0<r&&0!=this.buffer[r-4]){let t=!1;for(let e=r;0<e&&this.buffer[e-2]>a;e-=4)if(0<=this.buffer[e-1]){t=!0;break}if(t)for(;0<r&&this.buffer[r-2]>a;)this.buffer[r]=this.buffer[r-4],this.buffer[r+1]=this.buffer[r-3],this.buffer[r+2]=this.buffer[r-2],this.buffer[r+3]=this.buffer[r-1],r-=4,4<i&&(i-=4)}this.buffer[r]=e,this.buffer[r+1]=n,this.buffer[r+2]=a,this.buffer[r+3]=i}else this.buffer.push(e,n,a,i)}shift(e,t,r,n){var a;131072&e?this.pushState(65535&e,this.pos):0==(262144&e)?(e=e,a=this.p[\"parser\"],(n>this.pos||t<=a.maxNode)&&(this.pos=n,a.stateFlag(e,1)||(this.reducePos=n)),this.pushState(e,r),this.shiftContext(t,r),t<=a.maxNode&&this.buffer.push(t,r,n,4)):(this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer.push(t,r,n,4))}apply(e,t,r,n){65536&e?this.reduce(e):this.shift(e,t,r,n)}useNode(e,t){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);var n=this.pos;this.reducePos=this.pos=n+e.length,this.pushState(t,n),this.buffer.push(r,n,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;0<t&&e.buffer[t-2]>e.reducePos;)t-=4;for(var r=e.buffer.slice(t),n=e.bufferBase+t;e&&n==e.bufferBase;)e=e.parent;return new a(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,n,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){var r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,r?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(var t=new n(this);;){var r=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(0==r)return!1;if(0==(65536&r))return!0;t.reduce(r)}}recoverByInsert(r){if(300<=this.stack.length)return[];let n=this.p.parser.nextStates(this.state);if(8<n.length||120<=this.stack.length){var a=[];for(let e=0,t;e<n.length;e+=2)(t=n[e+1])!=this.state&&this.p.parser.hasAction(t,r)&&a.push(n[e],t);if(this.stack.length<120)for(let e=0;a.length<8&&e<n.length;e+=2){let r=n[e+1];a.some((e,t)=>1&t&&e==r)||a.push(n[e],r)}n=a}var t=[];for(let e=0;e<n.length&&t.length<4;e+=2){var i,o=n[e+1];o!=this.state&&((i=this.split()).pushState(o,this.pos),i.storeNode(0,i.pos,i.pos,4,!0),i.shiftContext(n[e],this.pos),i.reducePos=this.pos,i.score-=200,t.push(i))}return t}forceReduce(){var e=this.p[\"parser\"];let t=e.stateSlot(this.state,5);if(0==(65536&t))return!1;if(!e.validAction(this.state,t)){var r=t>>19,n=65535&t,r=this.stack.length-3*r;if(r<0||e.getGoto(this.stack[r],n,!1)<0){e=this.findForcedReduction();if(null==e)return!1;t=e}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let i=this.p[\"parser\"],t=[],o=(e,a)=>{if(!t.includes(e))return t.push(e),i.allActions(e,e=>{if(!(393216&e))if(65536&e){var t=(e>>19)-a;if(1<t){var r=65535&e,n=this.stack.length-3*t;if(0<=n&&0<=i.getGoto(this.stack[n],r,!1))return t<<19|65536|r}}else{n=o(e,a+1);if(null!=n)return n}})};return o(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){var e;return 3==this.stack.length&&(e=this.p.parser,65535==e.data[e.stateSlot(this.state,1)])&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;e<this.stack.length;e+=3)if(this.stack[e]!=t.stack[e])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(t)))}reduceContext(e,t){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(t)))}emitContext(){var e=this.buffer.length-1;(e<0||-3!=this.buffer[e])&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){var e=this.buffer.length-1;(e<0||-4!=this.buffer[e])&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){e!=this.curContext.context&&((e=new i(this.curContext.tracker,e)).hash!=this.curContext.hash&&this.emitContext(),this.curContext=e)}setLookAhead(e){e>this.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),0<this.lookAhead&&this.emitLookAhead()}}class i{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}}class n{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){var t=65535&e,e=e>>19,e=(0==e?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=3*(e-1),this.start.p.parser.getGoto(this.stack[this.base-3],t,!0));this.state=e}}class r{constructor(e,t,r){this.stack=e,this.pos=t,this.index=r,this.buffer=e.buffer,0==this.index&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new r(e,t,t-e.bufferBase)}maybeNext(){var e=this.stack.parent;null!=e&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()}fork(){return new r(this.stack,this.pos,this.index)}}function u(i,t=Uint16Array){if(\"string\"!=typeof i)return i;let r=null;for(let a=0,e=0;a<i.length;){let n=0;for(;;){let e=i.charCodeAt(a++),t=!1;if(126==e){n=65535;break}92<=e&&e--,34<=e&&e--;let r=e-32;if(46<=r&&(r-=46,t=!0),n+=r,t)break;n*=46}r?r[e++]=n:r=new t(n)}return r}class d{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const o=new d;class s{constructor(e,t){this.input=e,this.ranges=t,this.chunk=\"\",this.chunkOff=0,this.chunk2=\"\",this.chunk2Pos=0,this.next=-1,this.token=o,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let r=this.range,n=this.rangeIndex,a=this.pos+e;for(;a<r.from;){if(!n)return null;var i=this.ranges[--n];a-=r.from-i.to,r=i}for(;t<0?a>r.to:a>=r.to;){if(n==this.ranges.length-1)return null;var o=this.ranges[++n];a+=o.from-r.to,r=o}return a}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(var t of this.ranges)if(t.to>e)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,r,n;if(0<=t&&t<this.chunk.length)r=this.pos+e,n=this.chunk.charCodeAt(t);else{e=this.resolveOffset(e,1);if(null==e)return-1;if((r=e)>=this.chunk2Pos&&r<this.chunk2Pos+this.chunk2.length)n=this.chunk2.charCodeAt(r-this.chunk2Pos);else{let e=this.rangeIndex,t=this.range;for(;t.to<=r;)t=this.ranges[++e];this.chunk2=this.input.chunk(this.chunk2Pos=r),r+this.chunk2.length>t.to&&(this.chunk2=this.chunk2.slice(0,t.to-r)),n=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),n}acceptToken(e,t=0){t=t?this.resolveOffset(t,-1):this.pos;if(null==t||t<this.token.start)throw new RangeError(\"Token end out of bounds\");this.token.value=e,this.token.end=t}acceptTokenTo(e,t){this.token.value=e,this.token.end=t}getChunk(){var e,t;this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length?({chunk:e,chunkPos:t}=this,this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=t,this.chunkOff=this.pos-this.chunkPos):(this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos,e=this.input.chunk(this.pos),t=this.pos+e.length,this.chunk=t>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0)}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk=\"\",this.next=-1}reset(e,t){if(t?((this.token=t).start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=o,this.pos!=e){if((this.pos=e)==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk=\"\",this.chunkOff=0),this.readNext()}return this}read(e,t){if(e>=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let r=\"\";for(var n of this.ranges){if(n.from>=t)break;n.to>e&&(r+=this.input.read(Math.max(n.from,e),Math.min(n.to,t)))}return r}}class p{constructor(e,t){this.data=e,this.id=t}token(e,t){var r=t.p[\"parser\"];l(this.data,e,t,this.id,r.data,r.tokenPrecTable)}}p.prototype.contextual=p.prototype.fallback=p.prototype.extend=!1;class e{constructor(e,t,r){this.precTable=t,this.elseToken=r,this.data=\"string\"==typeof e?u(e):e}token(e,t){let r=e.pos,n=0;for(;;){var a=e.next<0,i=e.resolveOffset(1,1);if(l(this.data,e,t,0,this.data,this.precTable),-1<e.token.value)break;if(null==this.elseToken)return;if(a||n++,null==i)break;e.reset(i,e.token)}n&&(e.reset(r,e.token),e.acceptToken(this.elseToken,n))}}e.prototype.contextual=p.prototype.fallback=p.prototype.extend=!1;function l(n,a,e,t,i,o){let s=0,l=1<<t,c=e.p.parser[\"dialect\"];e:for(;0!=(l&n[s]);){var u=n[s+1];for(let e=s+3;e<u;e+=2)if(0<(n[e+1]&l)){var d=n[e];if(c.allows(d)&&(-1==a.token.value||a.token.value==d||function(e,t,r,n){t=g(r,n,t);return t<0||g(r,n,e)<t}(d,a.token.value,i,o))){a.acceptToken(d);break}}let e=a.next,t=0,r=n[s+2];if(!(a.next<0&&r>t&&65535==n[u+3*r-3])){for(;t<r;){var p=t+r>>1,f=u+p+(p<<1),h=n[f],m=n[f+1]||65536;if(e<h)r=p;else{if(!(m<=e)){s=n[f+2],a.advance();continue e}t=1+p}}break}s=n[u+3*r-1]}}function g(r,n,a){for(let e=n,t;65535!=(t=r[e]);e++)if(t==a)return e-n;return-1}const y=\"undefined\"!=typeof process&&process.env&&/\\bparse\\b/.test(process.env.LOG);let c=null;function t(e,t,r){var n=e.cursor(_.IterMode.IncludeAnonymous);for(n.moveTo(t);;)if(!(r<0?n.childBefore(t):n.childAfter(t)))for(;;){if((r<0?n.to<t:n.from>t)&&!n.type.isError)return r<0?Math.max(0,Math.min(n.to-1,t-25)):Math.min(e.length,Math.max(n.from+1,t+25));if(r<0?n.prevSibling():n.nextSibling())break;if(!n.parent())return r<0?0:e.length}}class f{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){var e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?t(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?t(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){var t=this.trees.length-1;if(t<0)return this.nextFragment(),null;var r=this.trees[t],n=this.index[t];if(n==r.children.length)this.trees.pop(),this.start.pop(),this.index.pop();else{var a=r.children[n],r=this.start[t]+r.positions[n];if(e<r)return this.nextStart=r,null;if(a instanceof _.Tree){if(r==e){if(r<this.safeFrom)return null;n=r+a.length;if(n<=this.safeTo){var i=a.prop(_.NodeProp.lookAhead);if(!i||n+i<this.fragment.to)return a}}this.index[t]++,r+a.length>=Math.max(this.safeFrom,e)&&(this.trees.push(a),this.start.push(r),this.index.push(0))}else this.index[t]++,this.nextStart=r+a.length}}}}class h{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(e=>new d)}getActions(t){let r=0,n=null;var e=t.p[\"parser\"],a=e[\"tokenizers\"],i=e.stateSlot(t.state,3),o=t.curContext?t.curContext.hash:0;let s=0;for(let e=0;e<a.length;e++)if(0!=(1<<e&i)){var l=a[e],c=this.tokens[e];if((!n||l.fallback)&&(!l.contextual&&c.start==t.pos&&c.mask==i&&c.context==o||(this.updateCachedToken(c,l,t),c.mask=i,c.context=o),c.lookAhead>c.end+25&&(s=Math.max(c.lookAhead,s)),0!=c.value)){var u=r;if(-1<c.extended&&(r=this.addActions(t,c.extended,c.end,r)),r=this.addActions(t,c.value,c.end,r),!l.extend&&(n=c,r>u))break}}for(;this.actions.length>r;)this.actions.pop();return s&&t.setLookAhead(s),n||t.pos!=this.stream.end||((n=new d).value=t.p.parser.eofTerm,n.start=n.end=t.pos,r=this.addActions(t,n.value,n.end,r)),this.mainToken=n,this.actions}getMainToken(e){var t,r;return this.mainToken||({pos:e,p:r}=e,(t=new d).start=e,t.end=Math.min(e+1,r.stream.end),t.value=e==r.stream.end?r.parser.eofTerm:0,t)}updateCachedToken(t,e,r){var n=this.stream.clipPos(r.pos);if(e.token(this.stream.reset(n,t),r),-1<t.value){var a=r.p[\"parser\"];for(let e=0;e<a.specialized.length;e++)if(a.specialized[e]==t.value){var i=a.specializers[e](this.stream.read(t.start,t.end),r);if(0<=i&&r.p.parser.dialect.allows(i>>1)){0==(1&i)?t.value=i>>1:t.extended=i>>1;break}}}else t.value=0,t.end=this.stream.clipPos(n+1)}putAction(t,e,r,n){for(let e=0;e<n;e+=3)if(this.actions[e]==t)return n;return this.actions[n++]=t,this.actions[n++]=e,this.actions[n++]=r,n}addActions(e,r,n,a){var i=e[\"state\"],o=e.p[\"parser\"],s=o[\"data\"];for(let t=0;t<2;t++)for(let e=o.stateSlot(i,t?2:1);;e+=3){if(65535==s[e]){if(1!=s[e+1]){0==a&&2==s[e+1]&&(a=this.putAction(S(s,e+2),r,n,a));break}e=S(s,e+2)}s[e]==r&&(a=this.putAction(S(s,e+1),r,n,a))}return a}}class m{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new s(t,n),this.tokens=new h(e,this.stream),this.topTerm=e.top[1];t=n[0].from;this.stacks=[a.start(this,e.top[0],t)],this.fragments=r.length&&this.stream.end-t>4*e.bufferLength?new f(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t=this.stacks,r=this.minStackPos;var n=this.stacks=[];let a,i;if(300<this.bigReductionCount&&1==t.length){for(var[e]=t;e.forceReduce()&&e.stack.length&&e.stack[e.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let e=0;e<t.length;e++)for(var o=t[e];;){if(this.tokens.mainToken=null,o.pos>r)n.push(o);else{if(this.advanceStack(o,n,t))continue;a||(a=[],i=[]),a.push(o);var s=this.tokens.getMainToken(o);i.push(s.value,s.end)}break}if(!n.length){var l=a&&function(e){let t=null;for(var r of e){var n=r.p.stoppedAt;(r.pos==r.p.stream.end||null!=n&&r.pos>n)&&r.p.parser.stateFlag(r.state,2)&&(!t||t.score<r.score)&&(t=r)}return t}(a);if(l)return y&&console.log(\"Finish with \"+this.stackID(l)),this.stackToTree(l);if(this.parser.strict)throw y&&a&&console.log(\"Stuck with token \"+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):\"none\")),new SyntaxError(\"No parse at \"+r);this.recovering||(this.recovering=5)}if(this.recovering&&a){l=null!=this.stoppedAt&&a[0].pos>this.stoppedAt?a[0]:this.runRecovery(a,i,n);if(l)return y&&console.log(\"Force-finish \"+this.stackID(l)),this.stackToTree(l.forceAll())}if(this.recovering){var c=1==this.recovering?1:3*this.recovering;if(n.length>c)for(n.sort((e,t)=>t.score-e.score);n.length>c;)n.pop();n.some(e=>e.reducePos>r)&&this.recovering--}else if(1<n.length){e:for(let t=0;t<n.length-1;t++){var u=n[t];for(let e=t+1;e<n.length;e++){var d=n[e];if(u.sameState(d)||500<u.buffer.length&&500<d.buffer.length){if(!(0<(u.score-d.score||u.buffer.length-d.buffer.length))){n.splice(t--,1);continue e}n.splice(e--,1)}}}12<n.length&&n.splice(12,n.length-12)}this.minStackPos=n[0].pos;for(let e=1;e<n.length;e++)n[e].pos<this.minStackPos&&(this.minStackPos=n[e].pos);return null}stopAt(e){if(null!=this.stoppedAt&&this.stoppedAt<e)throw new RangeError(\"Can't move stoppedAt forward\");this.stoppedAt=e}advanceStack(t,r,n){var a=t.pos,i=this[\"parser\"],o=y?this.stackID(t)+\" -> \":\"\";if(null!=this.stoppedAt&&a>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){var s=t.curContext&&t.curContext.tracker.strict,l=s?t.curContext.hash:0;for(let e=this.fragments.nodeAt(a);e;){var c=this.parser.nodeSet.types[e.type.id]==e.type?i.getGoto(t.state,e.type.id):-1;if(-1<c&&e.length&&(!s||(e.prop(_.NodeProp.contextHash)||0)==l))return t.useNode(e,c),y&&console.log(o+this.stackID(t)+` (via reuse of ${i.getName(e.type.id)})`),!0;if(!(e instanceof _.Tree)||0==e.children.length||0<e.positions[0])break;c=e.children[0];if(!(c instanceof _.Tree&&0==e.positions[0]))break;e=c}}var e=i.stateSlot(t.state,4);if(0<e)return t.reduce(e),y&&console.log(o+this.stackID(t)+` (via always-reduce ${i.getName(65535&e)})`),!0;if(8400<=t.stack.length)for(;6e3<t.stack.length&&t.forceReduce(););var u=this.tokens.getActions(t);for(let e=0;e<u.length;){var d=u[e++],p=u[e++],f=u[e++],h=e==u.length||!n,m=h?t:t.split(),g=this.tokens.mainToken;if(m.apply(d,p,g?g.start:m.pos,f),y&&console.log(o+this.stackID(m)+` (via ${0==(65536&d)?\"shift\":\"reduce of \"+i.getName(65535&d)} for ${i.getName(p)} @ ${a}${m==t?\"\":\", split\"})`),h)return!0;(m.pos>a?r:n).push(m)}return!1}advanceFully(e,t){for(var r=e.pos;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return T(e,t),!0}}runRecovery(o,s,l){let c=null,u=!1;for(let i=0;i<o.length;i++){let e=o[i],t=s[i<<1],r=s[1+(i<<1)];var d,p=y?this.stackID(e)+\" -> \":\"\";if(e.deadEnd){if(u)continue;if(u=!0,e.restart(),y&&console.log(p+this.stackID(e)+\" (restarted)\"),this.advanceFully(e,l))continue}let n=e.split(),a=p;for(let e=0;n.forceReduce()&&e<10;e++){if(y&&console.log(a+this.stackID(n)+\" (via force-reduce)\"),this.advanceFully(n,l))break;y&&(a=this.stackID(n)+\" -> \")}for(d of e.recoverByInsert(t))y&&console.log(p+this.stackID(d)+\" (via recover-insert)\"),this.advanceFully(d,l);this.stream.end>e.pos?(r==e.pos&&(r++,t=0),e.recoverByDelete(t,r),y&&console.log(p+this.stackID(e)+` (via recover-delete ${this.parser.getName(t)})`),T(e,l)):(!c||c.score<e.score)&&(c=e)}return c}stackToTree(e){return e.close(),_.Tree.build({buffer:r.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let t=(c=c||new WeakMap).get(e);return t||c.set(e,t=String.fromCodePoint(this.nextStackID++)),t+e}}function T(t,r){for(let e=0;e<r.length;e++){var n=r[e];if(n.pos==t.pos&&n.sameState(t))return void(r[e].score<t.score&&(r[e]=t))}r.push(t)}class v{constructor(e,t,r){this.source=e,this.flags=t,this.disabled=r}allows(e){return!this.disabled||0==this.disabled[e]}}const b=e=>e;class E extends _.Parser{constructor(r){if(super(),this.wrappers=[],14!=r.version)throw new RangeError(`Parser version (${r.version}) doesn't match runtime version (14)`);var t=r.nodeNames.split(\" \");this.minRepeatTerm=t.length;for(let e=0;e<r.repeatNodeCount;e++)t.push(\"\");let n=Object.keys(r.topRules).map(e=>r.topRules[e][1]),a=[];for(let e=0;e<t.length;e++)a.push([]);function i(e,t,r){a[e].push([t,t.deserialize(String(r))])}if(r.nodeProps)for(var o of r.nodeProps){let r=o[0];\"string\"==typeof r&&(r=_.NodeProp[r]);for(let t=1;t<o.length;){var s=o[t++];if(0<=s)i(s,r,o[t++]);else{var l=o[t+-s];for(let e=-s;0<e;e--)i(o[t++],r,l);t++}}}this.nodeSet=new _.NodeSet(t.map((e,t)=>_.NodeType.define({name:t>=this.minRepeatTerm?void 0:e,id:t,props:a[t],top:-1<n.indexOf(t),error:0==t,skipped:r.skippedNodes&&-1<r.skippedNodes.indexOf(t)}))),r.propSources&&(this.nodeSet=this.nodeSet.extend(...r.propSources)),this.strict=!1,this.bufferLength=_.DefaultBufferLength;let c=u(r.tokenData);this.context=r.context,this.specializerSpecs=r.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let e=0;e<this.specializerSpecs.length;e++)this.specialized[e]=this.specializerSpecs[e].term;this.specializers=this.specializerSpecs.map(A),this.states=u(r.states,Uint32Array),this.data=u(r.stateData),this.goto=u(r.goto),this.maxTerm=r.maxTerm,this.tokenizers=r.tokenizers.map(e=>\"number\"==typeof e?new p(c,e):e),this.topRules=r.topRules,this.dialects=r.dialects||{},this.dynamicPrecedences=r.dynamicPrecedences||null,this.tokenPrecTable=r.tokenPrec,this.termNames=r.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,r){let n=new m(this,e,t,r);for(var a of this.wrappers)n=a(n,e,t,r);return n}getGoto(t,r,n=!1){var a=this.goto;if(r>=a[0])return-1;for(let e=a[r+1];;){var i=a[e++],o=1&i,s=a[e++];if(o&&n)return s;for(var l=e+(i>>1);e<l;e++)if(a[e]==t)return s;if(o)return-1}}hasAction(n,a){var i=this.data;for(let r=0;r<2;r++)for(let e=this.stateSlot(n,r?2:1),t;;e+=3){if(65535==(t=i[e])){if(1!=i[e+1]){if(2==i[e+1])return S(i,e+2);break}t=i[e=S(i,e+2)]}if(t==a||0==t)return S(i,e+1)}return 0}stateSlot(e,t){return this.states[6*e+t]}stateFlag(e,t){return 0<(this.stateSlot(e,0)&t)}validAction(e,t){return!!this.allActions(e,e=>e==t||null)}allActions(t,r){var e=this.stateSlot(t,4);let n=e?r(e):void 0;for(let e=this.stateSlot(t,1);null==n;e+=3){if(65535==this.data[e]){if(1!=this.data[e+1])break;e=S(this.data,e+2)}n=r(S(this.data,e+1))}return n}nextStates(t){var n=[];for(let e=this.stateSlot(t,1);;e+=3){if(65535==this.data[e]){if(1!=this.data[e+1])break;e=S(this.data,e+2)}if(0==(1&this.data[e+2])){let r=this.data[e+1];n.some((e,t)=>1&t&&e==r)||n.push(this.data[e],r)}}return n}configure(n){let a=Object.assign(Object.create(E.prototype),this);if(n.props&&(a.nodeSet=this.nodeSet.extend(...n.props)),n.top){var e=this.topRules[n.top];if(!e)throw new RangeError(\"Invalid top rule name \"+n.top);a.top=e}return n.tokenizers&&(a.tokenizers=this.tokenizers.map(t=>{var e=n.tokenizers.find(e=>e.from==t);return e?e.to:t})),n.specializers&&(a.specializers=this.specializers.slice(),a.specializerSpecs=this.specializerSpecs.map((t,e)=>{var r=n.specializers.find(e=>e.from==t.external);return r?(r=Object.assign(Object.assign({},t),{external:r.to}),a.specializers[e]=A(r),r):t})),n.contextTracker&&(a.context=n.contextTracker),n.dialect&&(a.dialect=this.parseDialect(n.dialect)),null!=n.strict&&(a.strict=n.strict),n.wrap&&(a.wrappers=a.wrappers.concat(n.wrap)),null!=n.bufferLength&&(a.bufferLength=n.bufferLength),a}hasWrappers(){return 0<this.wrappers.length}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){var t=this.dynamicPrecedences;return null!=t&&t[e]||0}parseDialect(e){var n=Object.keys(this.dialects),t=n.map(()=>!1);if(e)for(var r of e.split(\" \")){r=n.indexOf(r);0<=r&&(t[r]=!0)}let a=null;for(let r=0;r<n.length;r++)if(!t[r])for(let e=this.dialects[n[r]],t;65535!=(t=this.data[e++]);)(a=a||new Uint8Array(this.maxTerm+1))[t]=1;return new v(e,t,a)}static deserialize(e){return new E(e)}}function S(e,t){return e[t]|e[t+1]<<16}function A(n){if(n.external){let r=n.extend?1:0;return(e,t)=>n.external(e,t)<<1|r}return n.get}return iN.ContextTracker=class{constructor(e){this.start=e.start,this.shift=e.shift||b,this.reduce=e.reduce||b,this.reuse=e.reuse||b,this.hash=e.hash||(()=>0),this.strict=!1!==e.strict}},iN.ExternalTokenizer=class{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}},iN.InputStream=s,iN.LRParser=E,iN.LocalTokenGroup=e,iN.Stack=a,iN}function sN(){if(!tN){tN=1;{var r=nN;Object.defineProperty(r,\"__esModule\",{value:!0}),r.language=void 0,r.perfettoSql=function(){return new n.LanguageSupport(r.language)},r.parseAndPrintTree=function(e){var t=r.language.parser.parse(e),t=t.cursor();!function e(t,r,n=0){const a=t.name;const i=r.substring(t.from,t.to);console.log(\"\"+\"  \".repeat(n)+a+`: \"${i}\"`);if(t.firstChild()){for(;e(t,r,n+1),t.nextSibling(););t.parent()}}(t,e)};const n=MR();var e=GR(),t=function(){if(!eN){eN=1,Object.defineProperty(aN,\"__esModule\",{value:!0}),aN.parser=void 0;var e=oN();const t={__proto__:null,TRUE:32,true:32,FALSE:32,false:32,NULL:34,null:34,ALL:36,all:36,AND:36,and:36,AS:36,as:36,BETWEEN:36,between:36,BY:36,by:36,CASE:36,case:36,CREATE:36,create:36,CROSS:36,cross:36,ELSE:36,else:36,END:36,end:36,FROM:36,from:36,FUNCTION:36,function:36,GLOB:36,glob:36,GROUP:36,group:36,HAVING:36,having:36,INCLUDE:36,include:36,INNER:36,inner:36,IS:36,is:36,JOIN:36,join:36,LEFT:36,left:36,LIMIT:36,limit:36,MACRO:36,macro:36,MODULE:36,module:36,NOT:36,not:36,ON:36,on:36,OR:36,or:36,ORDER:36,order:36,OUTER:36,outer:36,OVER:36,over:36,PARTITION:36,partition:36,PERFETTO:36,perfetto:36,REPLACE:36,replace:36,RETURNS:36,returns:36,RIGHT:36,right:36,SELECT:36,select:36,TABLE:36,table:36,THEN:36,then:36,UNION:36,union:36,USING:36,using:36,VALUES:36,values:36,VIEW:36,view:36,WHEN:36,WHERE:36,where:36,WITH:36,with:36,AVG:38,avg:38,COUNT:38,count:38,CUME_DIST:38,cume_dist:38,DATETIME:38,datetime:38,DENSE_RANK:38,dense_rank:38,EXISTS:38,exists:38,FIRST_VALUE:38,first_value:38,FIRST:38,first:38,GROUP_CONCAT:38,group_concat:38,IFNULL:38,ifnull:38,IIF:38,iif:38,LAG:38,lag:38,LAST_VALUE:38,last_value:38,LAST:38,last:38,LEAD:38,lead:38,MAX:38,max:38,MIN:38,min:38,NTH_VALUE:38,nth_value:38,NTILE:38,ntile:38,PERCENT_RANK:38,percent_rank:38,RANK:38,rank:38,ROW_NUMBER:38,row_number:38,SUM:38,sum:38,TIME:38,time:38,TOTAL:38,total:38};aN.parser=e.LRParser.deserialize({version:14,states:\"!WQYQPOOOOQO'#Ca'#CaOOQO'#Cc'#CcOOQO'#Cd'#CdOOQO'#Ce'#CeOOQO'#Ck'#CkOOQO'#Cg'#CgQYQPOOOOQO-E6e-E6e\",stateData:\"t~O^OSPOS~ORTOSTOUTOYTO`POaQObROcSO~O\",goto:\"o`PPPPPaPaaaPePPPkTTOVQVORWVTUOV\",nodeNames:\"⚠ LineComment Program String Number Boolean Identifier Null Keyword Function MacroVariable\",maxTerm:19,skippedNodes:[0,1],repeatNodeCount:1,tokenData:\"%g~RZXYtYZt]^tpqttu!Vwx!k}!O$X!Q![$v!c!}%O#R#S%O#T#o%O~yS^~XYtYZt]^tpqt~![TY~tu!V!Q![!V!c!}!V#R#S!V#T#o!V~!nVOw!kwx#Tx#O!k#O#P#Y#P;'S!k;'S;=`$R<%lO!k~#YOR~~#]RO;'S!k;'S;=`#f;=`O!k~#iWOw!kwx#Tx#O!k#O#P#Y#P;'S!k;'S;=`$R;=`<%l!k<%lO!k~$UP;=`<%l!k~$[P}!O$_~$dSP~OY$_Z;'S$_;'S;=`$p<%lO$_~$sP;=`<%l$_~${PS~!Q![$v~%TUU~tu%O!O!P%O!Q![%O!c!}%O#R#S%O#T#o%O\",tokenizers:[0],topRules:{Program:[0,2]},specialized:[{term:6,get:e=>t[e]||-1}],tokenPrec:0})}return aN}();r.language=n.LRLanguage.define({parser:t.parser.configure({props:[n.indentNodeProp.add({Application:(0,n.delimitedIndent)({closing:\")\",align:!1})}),n.foldNodeProp.add({Application:n.foldInside}),(0,e.styleTags)({Keyword:e.tags.keyword,Boolean:e.tags.bool,Null:e.tags.null,String:e.tags.string,Number:e.tags.number,LineComment:e.tags.lineComment,Macro:e.tags.macroName,MacroVariable:e.tags.variableName,Function:e.tags.function(e.tags.variableName),\"( )\":e.tags.paren})]}),languageData:{commentTokens:{line:\"--\"}}})}}return nN}function lN(){if(!rN){rN=1,Object.defineProperty(iR,\"__esModule\",{value:!0}),iR.Editor=void 0;var e,t,r,n,a,i,o,s,l,c,u,d,p,f=Jr;const h=FR(),m=(BR||(BR=1,Object.defineProperty(jR,\"__esModule\",{value:!0}),r=bR(),e=MR(),p=GR(),t={chalky:\"#e5c07b\",coral:u=\"#e06c75\",cyan:\"#56b6c2\",invalid:\"#ffffff\",ivory:l=\"#abb2bf\",stone:c=\"#7d8799\",malibu:\"#61afef\",sage:\"#98c379\",whiskey:d=\"#d19a66\",violet:\"#c678dd\",darkBackground:\"#21252b\",highlightBackground:s=\"#2c313a\",background:a=\"#282c34\",tooltipBackground:i=\"#353a42\",selection:\"#3E4451\",cursor:n=\"#528bff\"},r=r.EditorView.theme({\"&\":{color:l,backgroundColor:a},\".cm-content\":{caretColor:n},\".cm-cursor, .cm-dropCursor\":{borderLeftColor:n},\"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection\":{backgroundColor:\"#3E4451\"},\".cm-panels\":{backgroundColor:\"#21252b\",color:l},\".cm-panels.cm-panels-top\":{borderBottom:\"2px solid black\"},\".cm-panels.cm-panels-bottom\":{borderTop:\"2px solid black\"},\".cm-searchMatch\":{backgroundColor:\"#72a1ff59\",outline:\"1px solid #457dff\"},\".cm-searchMatch.cm-searchMatch-selected\":{backgroundColor:\"#6199ff2f\"},\".cm-activeLine\":{backgroundColor:\"#6699ff0b\"},\".cm-selectionMatch\":{backgroundColor:\"#aafe661a\"},\"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket\":{backgroundColor:\"#bad0f847\"},\".cm-gutters\":{backgroundColor:a,color:c,border:\"none\"},\".cm-activeLineGutter\":{backgroundColor:s},\".cm-foldPlaceholder\":{backgroundColor:\"transparent\",border:\"none\",color:\"#ddd\"},\".cm-tooltip\":{border:\"none\",backgroundColor:i},\".cm-tooltip .cm-tooltip-arrow:before\":{borderTopColor:\"transparent\",borderBottomColor:\"transparent\"},\".cm-tooltip .cm-tooltip-arrow:after\":{borderTopColor:i,borderBottomColor:i},\".cm-tooltip-autocomplete\":{\"& > ul > li[aria-selected]\":{backgroundColor:s,color:l}}},{dark:!0}),n=e.HighlightStyle.define([{tag:p.tags.keyword,color:\"#c678dd\"},{tag:[p.tags.name,p.tags.deleted,p.tags.character,p.tags.propertyName,p.tags.macroName],color:u},{tag:[p.tags.function(p.tags.variableName),p.tags.labelName],color:\"#61afef\"},{tag:[p.tags.color,p.tags.constant(p.tags.name),p.tags.standard(p.tags.name)],color:d},{tag:[p.tags.definition(p.tags.name),p.tags.separator],color:l},{tag:[p.tags.typeName,p.tags.className,p.tags.number,p.tags.changed,p.tags.annotation,p.tags.modifier,p.tags.self,p.tags.namespace],color:\"#e5c07b\"},{tag:[p.tags.operator,p.tags.operatorKeyword,p.tags.url,p.tags.escape,p.tags.regexp,p.tags.link,p.tags.special(p.tags.string)],color:\"#56b6c2\"},{tag:[p.tags.meta,p.tags.comment],color:c},{tag:p.tags.strong,fontWeight:\"bold\"},{tag:p.tags.emphasis,fontStyle:\"italic\"},{tag:p.tags.strikethrough,textDecoration:\"line-through\"},{tag:p.tags.link,color:c,textDecoration:\"underline\"},{tag:p.tags.heading,fontWeight:\"bold\",color:u},{tag:[p.tags.atom,p.tags.bool,p.tags.special(p.tags.variableName)],color:d},{tag:[p.tags.processingInstruction,p.tags.string,p.tags.inserted],color:\"#98c379\"},{tag:p.tags.invalid,color:\"#ffffff\"}]),a=[r,e.syntaxHighlighting(n)],jR.color=t,jR.oneDark=a,jR.oneDarkHighlightStyle=n,jR.oneDarkTheme=r),jR),g=bR(),_=(JR||(JR=1,i=qR,Object.defineProperty(i,\"__esModule\",{value:!0}),o=bR(),s=cR(),l=MR(),c=FR(),u=WR(),d=KR(),p=ZR(),s=[o.lineNumbers(),o.highlightActiveLineGutter(),o.highlightSpecialChars(),c.history(),l.foldGutter(),o.drawSelection(),o.dropCursor(),s.EditorState.allowMultipleSelections.of(!0),l.indentOnInput(),l.syntaxHighlighting(l.defaultHighlightStyle,{fallback:!0}),l.bracketMatching(),d.closeBrackets(),d.autocompletion(),o.rectangularSelection(),o.crosshairCursor(),o.highlightActiveLine(),u.highlightSelectionMatches(),o.keymap.of([...d.closeBracketsKeymap,...c.defaultKeymap,...u.searchKeymap,...c.historyKeymap,...l.foldKeymap,...d.completionKeymap,...p.lintKeymap])],u=[o.highlightSpecialChars(),c.history(),o.drawSelection(),l.syntaxHighlighting(l.defaultHighlightStyle,{fallback:!0}),o.keymap.of([...c.defaultKeymap,...c.historyKeymap])],Object.defineProperty(i,\"EditorView\",{enumerable:!0,get:function(){return o.EditorView}}),i.basicSetup=s,i.minimalSetup=u),qR),y=f.__importDefault(xe()),T=Hi(),v=Pe(),b=sN();iR.Editor=class{editorView;latestText;focus(){this.editorView?.focus()}oncreate({dom:e,attrs:t}){var r=[h.indentWithTab];const a=t.onExecute,n=t.onSave,i=t.onUpdate;a&&r.push({key:\"Mod-Enter\",run:e=>{var e=e.state,t=e.selection;let r=e.doc.toString();if(!t.main.empty){let e=\"\";for(const n of t.ranges)e+=r.slice(n.from,n.to);r=e}return a(r),y.default.redraw(),!0}}),n&&r.push({key:\"Mod-s\",run:e=>(n(),y.default.redraw(),!0)});var o=(()=>{switch(t.language){case void 0:return;case\"perfetto-sql\":return(0,b.perfettoSql)();default:(0,v.assertUnreachable)(t.language)}})();this.editorView=new _.EditorView({doc:t.text,extensions:(0,T.removeFalsyValues)([g.keymap.of(r),m.oneDark,_.basicSetup,o]),parent:e,dispatch:(e,t)=>{t.update([e]);e=t.state.doc.toString();this.latestText=e,i&&(i(e),y.default.redraw())}}),t.autofocus&&this.focus()}onupdate({attrs:e}){var t,r;void 0!==e.text&&(t=this.editorView)&&e.text!==this.latestText&&(r=t.state,t.dispatch(r.update({changes:{from:0,to:r.doc.length,insert:e.text}})),this.latestText=e.text)}onremove(){this.editorView&&(this.editorView.destroy(),this.editorView=void 0)}view({attrs:e}){return(0,y.default)(\".pf-editor\",{className:e.className,ref:e.ref})}}}return iR}var cN,uN={};function dN(){if(!cN){cN=1;{var l=uN;Object.defineProperty(l,\"__esModule\",{value:!0}),l.queryHistoryStorage=l.HistoryItemComponent=l.QueryHistoryComponent=void 0;const c=Jr.__importDefault(xe()),r=Ae(),i=Pe();var e=Ne();const n=je(),a=mc(),o=\"queryHistory\";l.QueryHistoryComponent=class{view({attrs:e}){const{trace:t,runQuery:r,setQuery:n,...a}=e;var i=[],o=[];for(let e=l.queryHistoryStorage.data.length-1;0<=e;e--){var s=l.queryHistoryStorage.data[e];(s.starred?o:i).push({trace:t,index:e,entry:s,runQuery:r,setQuery:n})}return(0,c.default)(\".pf-query-history\",{...a},(0,c.default)(\".pf-query-history__header\",`Query history (${l.queryHistoryStorage.data.length} queries)`),o.map(e=>(0,c.default)(u,e)),i.map(e=>(0,c.default)(u,e)))}};class u{view(e){const t=e.attrs.entry.query;return(0,c.default)(\".pf-query-history__item\",(0,c.default)(a.Stack,{className:\"pf-query-history__item-buttons\",orientation:\"horizontal\"},[(0,c.default)(n.Button,{onclick:()=>{l.queryHistoryStorage.setStarred(e.attrs.index,!e.attrs.entry.starred)},icon:r.Icons.Star,iconFilled:e.attrs.entry.starred}),(0,c.default)(n.Button,{onclick:()=>e.attrs.setQuery(t),icon:r.Icons.Edit}),(0,c.default)(n.Button,{onclick:()=>e.attrs.runQuery(t),icon:r.Icons.Play}),(0,c.default)(n.Button,{onclick:()=>{l.queryHistoryStorage.remove(e.attrs.index)},icon:r.Icons.Delete})]),(0,c.default)(\"pre\",{onclick:()=>e.attrs.setQuery(t),ondblclick:()=>e.attrs.runQuery(t)},t))}}l.HistoryItemComponent=u;var t=e.z.object({query:e.z.string(),starred:e.z.boolean().default(!1)});const s=e.z.array(t);l.queryHistoryStorage=new class{data;maxItems=50;constructor(){this.data=this.load()}saveQuery(t){var r=this.data;let n=-1,a=0;for(let e=0;e<r.length;e++)if(r[e].starred||(a++,-1===n&&(n=e)),r[e].query===t)return;a>=this.maxItems&&((0,i.assertTrue)(-1!==n),r.splice(n,1)),r.push({query:t,starred:!1}),this.save()}setStarred(e,t){(0,i.assertTrue)(0<=e&&e<this.data.length),this.data[e].starred=t,this.save()}remove(e){(0,i.assertTrue)(0<=e&&e<this.data.length),this.data.splice(e,1),this.save()}load(){var e=window.localStorage.getItem(o);return null!==e&&(e=s.safeParse(JSON.parse(e))).success?e.data:[]}save(){window.localStorage.setItem(o,JSON.stringify(this.data))}}}}return uN}var pN,fN,hN={};function mN(){if(!pN){pN=1,Object.defineProperty(hN,\"__esModule\",{value:!0}),hN.SourceNode=void 0;const t=zI();hN.SourceNode=class{nodeId;prevNodes=[];nextNodes;meterialisedAs;finalCols;state;constructor(e){this.nodeId=(0,t.nextNodeId)(),this.state=e,this.finalCols=(0,t.createFinalColumns)(this),this.nextNodes=[]}validate(){return!0}}}return hN}function gN(){if(!fN){fN=1,Object.defineProperty(aR,\"__esModule\",{value:!0}),aR.SqlSourceNode=void 0;var e=Jr;const r=e.__importDefault(xe()),i=zI(),t=qI(),o=e.__importDefault(dh()),n=lN(),a=dN();class s extends mN().SourceNode{state;prevNodes=[];constructor(e){super(e),this.state=e,this.state.sourceCols=[],this.nextNodes=[]}get type(){return i.NodeType.kSqlSource}get sourceCols(){return this.state.sourceCols??[]}setSourceColumns(e){this.state.sourceCols=e.map(e=>(0,t.columnInfoFromName)(e)),this.finalCols=this.sourceCols,r.default.redraw()}onQueryExecuted(e){this.setSourceColumns(e)}clone(){var e={sql:this.state.sql,filters:[],customTitle:this.state.customTitle,issues:this.state.issues,trace:this.state.trace};return new s(e)}validate(){return void 0!==this.state.sql&&\"\"!==this.state.sql.trim()}getTitle(){return this.state.customTitle??\"Sql source\"}isMaterialised(){return!0===this.state.isExecuted&&void 0!==this.meterialisedAs}serializeState(){return{sql:this.state.sql,filters:this.state.filters,customTitle:this.state.customTitle}}getStructuredQuery(){var e=new o.default.PerfettoSqlStructuredQuery,t=(e.id=this.nodeId,new o.default.PerfettoSqlStructuredQuery.Sql);this.state.sql&&(t.sql=this.state.sql),t.columnNames=this.sourceCols.map(e=>e.column.name);for(const a of this.prevNodes){var r=new o.default.PerfettoSqlStructuredQuery.Sql.Dependency;r.alias=a.nodeId,r.query=a.getStructuredQuery(),t.dependencies.push(r)}e.sql=t;var n=(0,i.createSelectColumnsProto)(this);return n&&(e.selectColumns=n),e}nodeSpecificModify(t){return(0,r.default)(\".sql-source-node\",(0,r.default)(\"div\",{style:{minHeight:\"400px\",backgroundColor:\"#282c34\",position:\"relative\"}},(0,r.default)(n.Editor,{text:this.state.sql??\"\",onUpdate:e=>{this.state.sql=e,r.default.redraw()},onExecute:e=>{a.queryHistoryStorage.saveQuery(e),this.state.sql=e.trim(),t(),r.default.redraw()},autofocus:!0})),(0,r.default)(a.QueryHistoryComponent,{className:\".pf-query-history-container\",trace:this.state.trace,runQuery:e=>{this.state.sql=e.trim(),r.default.redraw()},setQuery:e=>{this.state.sql=e,r.default.redraw()}}))}findDependencies(){var e,t=/\\$([A-Za-z0-9_]*)/g,r=[];if(this.state.sql)for(;null!==(e=t.exec(this.state.sql));)r.push(e[1]);return r}}aR.SqlSourceNode=s}return aR}var _N,yN,TN={},vN={};function bN(){if(!_N){_N=1,Object.defineProperty(vN,\"__esModule\",{value:!0}),vN.CopyHelper=void 0,vN.CopyToClipboardButton=function(){const n=new e;return{view({attrs:e}){const t=Boolean(e.label);var r=t?n.copied?\"Copied\":e.label:\"\";return(0,a.default)(o.Button,{variant:e.variant,title:e.title??\"Copy to clipboard\",icon:n.copied?i.Icons.Check:i.Icons.Copy,intent:n.copied?s.Intent.Success:s.Intent.None,label:r,onclick:async()=>{await n.copy(e.textToCopy)}})}}};const a=Jr.__importDefault(xe()),i=Ae(),o=je(),s=Be();class e{_copied=!1;timeoutId;timeout;constructor(e=2e3){this.timeout=e}get copied(){return this._copied}async copy(e){await navigator.clipboard.writeText(e),this._copied=!0,a.default.redraw(),clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this._copied=!1,a.default.redraw()},this.timeout)}}vN.CopyHelper=e}return vN}function EN(){if(!yN){yN=1,Object.defineProperty(TN,\"__esModule\",{value:!0}),TN.CodeSnippet=void 0;const n=Jr.__importDefault(xe()),a=be(),i=je(),o=bN();TN.CodeSnippet=class{view({attrs:e}){var{text:e,language:t,class:r}=e;return(0,n.default)(\".pf-code-snippet\",{className:(0,a.classNames)(r)},(0,n.default)(\".pf-code-snippet-header\",(0,n.default)(\"span.pf-code-snippet-language\",t),(0,n.default)(o.CopyToClipboardButton,{textToCopy:e,variant:i.ButtonVariant.Minimal,title:\"Copy to clipboard\"})),(0,n.default)(\"pre\",(0,n.default)(\"code\",e)))}}}return TN}var SN,AN={},ON={};function CN(){if(!SN){SN=1;{var d=ON;Object.defineProperty(d,\"__esModule\",{value:!0}),d.ALL_FILTER_OPS=d.FilterOperation=void 0,d.isFilterDefinitionValid=p,d.createFiltersProto=function(e,a){if(0===e.length)return;e=e.map(t=>{var e,r=new s.default.PerfettoSqlStructuredQuery.Filter,n=(r.columnName=t.column,d.ALL_FILTER_OPS.find(e=>e.displayName===t.op));if(void 0===n)throw new Error(\"Unknown filter operator: \"+t.op);return r.op=n.proto,\"value\"in t&&(n=t.value,e=a.find(e=>e.name===t.column),\"string\"==typeof n?r.stringRhs=[n]:\"number\"!=typeof n&&\"bigint\"!=typeof n||(!e||\"long\"!==e.type&&\"int\"!==e.type?r.doubleRhs=[Number(n)]:r.int64Rhs=[Number(n)])),r});return e};var e=Jr;const m=e.__importDefault(xe()),g=je(),i=oc(),o=Be(),_=Bl(),y=Vl(),s=e.__importDefault(dh()),r=mc();d.FilterOperation=class{error;uiFilters=[];editingFilter;oncreate({attrs:e}){this.uiFilters=[...e.filters]}onbeforeupdate({attrs:e}){void 0===this.editingFilter&&(this.uiFilters=[...e.filters])}setFilters(e,t,r){this.uiFilters=e,this.editingFilter=r,void 0===this.editingFilter&&t.onFiltersChanged?.(this.uiFilters.filter(p)),t.onchange?.(),m.default.redraw()}view({attrs:a}){const n=a[\"sourceCols\"];var e=void 0===this.editingFilter?void 0:(0,m.default)(l,{filter:this.editingFilter,sourceCols:n,onUpdate:r=>{const n=this.uiFilters.indexOf(this.editingFilter);var e=this.uiFilters.map((e,t)=>t===n?r:e);this.setFilters(e,a,r)},onRemove:()=>{var e=this.uiFilters.filter(e=>e!==this.editingFilter);this.setFilters(e,a,void 0)},onDone:()=>{this.setFilters(this.uiFilters,a,void 0)}});return(0,m.default)(\".pf-exp-query-operations\",[(0,m.default)(\".pf-exp-section\",[(0,m.default)(\".pf-exp-filters-header\",(0,m.default)(\"h2.pf-exp-filters-title\",\"Filters\"),(0,m.default)(y.TextInput,{placeholder:\"e.g. ts > 1000\",onkeydown:e=>{var t,r=e.target;\"Enter\"===e.key&&0<(e=r.value).length&&(p(t=function(t,e){var r=d.ALL_FILTER_OPS.slice().sort((e,t)=>t.displayName.length-e.displayName.length),r=r.map(e=>e.displayName.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")).join(\"|\"),r=new RegExp(`^(\\\\S+)\\\\s+(${r})(?:\\\\s+(\".*?\"|'.*?'|\\\\S+))?$`,\"i\"),r=t.trim().match(r);if(!r){const o=e.find(e=>e.name.toLowerCase()===t.trim().toLowerCase());return o?{column:o.name}:{}}const[,n,a,i]=r,o=e.find(e=>e.name.toLowerCase()===n.toLowerCase());if(void 0===o)return{};r=d.ALL_FILTER_OPS.find(e=>e.displayName.toLowerCase()===a.toLowerCase());if(void 0===r)throw new Error(\"Internal error: operator not found despite regex match\");e=f(r)?h(i||\"\"):void 0;if(f(r)&&void 0===e)return{column:o.name,op:r.displayName};r={column:o.name,op:r.displayName};void 0!==e&&(r.value=e);return r}(e,n))?(this.error=void 0,this.setFilters([...this.uiFilters,t],a),r.value=\"\"):(void 0===t.column?this.error=`Column not found in \"${e}\"`:void 0===t.op?this.error=`Operator not found in \"${e}\"`:this.error=`Filter value is missing in \"${e}\"`,m.default.redraw()))}})),this.error&&(0,m.default)(\".pf-exp-error-message\",this.error),(0,m.default)(r.Stack,{orientation:\"horizontal\"},this.uiFilters.map(t=>{var e=p(t),r=e?`${t.column} ${t.op} `+(\"value\"in t?t.value:\"\"):\"New Filter\";return(0,m.default)(i.Chip,{label:r,rounded:!0,intent:e?o.Intent.Primary:o.Intent.None,onclick:()=>{var e=this.uiFilters.filter(e=>e===t||p(e));this.setFilters(e,a,t)}})}),(0,m.default)(g.Button,{icon:\"add\",rounded:!0,intent:o.Intent.Primary,onclick:()=>{var e,t;void 0===this.editingFilter||p(this.editingFilter)?(e={},t=[...this.uiFilters,e],this.setFilters(t,a,e)):(t=this.uiFilters.filter(e=>e!==this.editingFilter),this.setFilters(t,a,void 0))}})),e&&(0,m.default)(\".pf-exp-filter-editor-box\",e)])])}};class l{view({attrs:e}){const{filter:n,sourceCols:t,onUpdate:a,onRemove:r,onDone:i}=e,{column:o,op:s}=n;var e=f(d.ALL_FILTER_OPS.find(e=>e.displayName===s)),l=p(n),c=t.filter(e=>e.checked).map(({name:e})=>(0,m.default)(\"option\",{value:e,selected:e===o},e)),u=d.ALL_FILTER_OPS.map(e=>(0,m.default)(\"option\",{value:e.key,selected:e.displayName===n.op},e.displayName));return(0,m.default)(\".pf-exp-filter-editor\",{className:l?\"is-valid\":\"is-invalid\"},[(0,m.default)(_.Select,{onchange:e=>{e=e.target;a({...n,column:e.value})}},(0,m.default)(\"option\",{disabled:!0,selected:void 0===o},\"Column\"),c),(0,m.default)(_.Select,{onchange:e=>{const t=e.target;var e=d.ALL_FILTER_OPS.find(e=>e.key===t.value),r={...n,op:e?.displayName};e&&!f(e)&&delete r.value,a(r)}},(0,m.default)(\"option\",{disabled:!0,selected:void 0===s},\"Operator\"),u),e&&(0,m.default)(y.TextInput,{placeholder:\"Value\",value:\"value\"in n?String(n.value):\"\",oninput:e=>{e=h(e.target.value);const{value:t,...r}=n;void 0!==e?a({...r,value:e}):a(r)}}),(0,m.default)(g.Button,{className:\"pf-exp-delete-button\",icon:\"delete\",onclick:r}),(0,m.default)(g.Button,{label:\"Done\",className:\"is-primary\",disabled:!l,onclick:i})])}}function p(e){const{column:t,op:r}=e;var n;return void 0!==t&&void 0!==r&&void 0!==(n=d.ALL_FILTER_OPS.find(e=>e.displayName===r))&&(!f(n)||\"value\"in e&&void 0!==e.value)}function t(e,t,r){return{key:e,displayName:t,proto:r}}function f(e){return void 0!==e&&\"IS_NULL\"!==e.key&&\"IS_NOT_NULL\"!==e.key}function h(e){e=e.trim();if(\"\"!==e)return e.startsWith('\"')&&e.endsWith('\"')||e.startsWith(\"'\")&&e.endsWith(\"'\")?e.slice(1,-1):\"\"===e||isNaN(Number(e))?e:Number(e)}d.ALL_FILTER_OPS=[t(\"EQUAL\",\"=\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.EQUAL),t(\"NOT_EQUAL\",\"!=\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.NOT_EQUAL),t(\"LESS_THAN\",\"<\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.LESS_THAN),t(\"LESS_THAN_EQUAL\",\"<=\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.LESS_THAN_EQUAL),t(\"GREATER_THAN\",\">\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.GREATER_THAN),t(\"GREATER_THAN_EQUAL\",\">=\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.GREATER_THAN_EQUAL),t(\"IS_NULL\",\"is null\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.IS_NULL),t(\"IS_NOT_NULL\",\"is not null\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.IS_NOT_NULL),t(\"GLOB\",\"glob\",s.default.PerfettoSqlStructuredQuery.Filter.Operator.GLOB)]}}return ON}var wN,kN={};function IN(){if(!wN){wN=1,Object.defineProperty(kN,\"__esModule\",{value:!0}),kN.MultiselectInput=void 0;const s=Jr.__importDefault(xe()),o=Be(),l=Ee(),c=_i(),n=yi(),t=nu(),u=be(),d=mc(),p=oc();kN.MultiselectInput=class{keyEventHandler;currentTextValue=\"\";selectedItemIndex=0;popupShouldOpen=!1;isFocused=!1;view({attrs:a}){const{selectedOptions:e,placeholder:t,options:i,...r}=a;return(0,s.default)(n.Popup,{className:\"pf-multiselect-input__popup\",position:n.PopupPosition.Bottom,matchWidth:!0,onChange:e=>{this.popupShouldOpen=e},isOpen:this.popupShouldOpen||this.isFocused,trigger:(0,s.default)(\".pf-multiselect-input\",{onclick:e=>{e=e.currentTarget,e=(0,c.findRef)(e,\"input\");e&&e.focus()},...r},(0,s.default)(d.Stack,{orientation:\"horizontal\",spacing:\"small\"},e.map(t=>{const e=i.find(e=>e.key===t);if(e)return{label:r,onRemove:n}=[{label:e.label,onRemove:()=>a.onOptionRemove(e.key)}][0],(0,s.default)(p.Chip,{label:r,compact:!0,intent:o.Intent.Primary,removable:!0,onRemove:()=>n?.()});var r,n})),(0,s.default)(\"input\",{ref:\"input\",value:this.currentTextValue,placeholder:t,onfocus:()=>{this.isFocused=!0,console.log(this.popupShouldOpen,this.isFocused)},onblur:()=>{this.isFocused=!1,console.log(this.popupShouldOpen,this.isFocused)},oninput:e=>{e=e.target;this.currentTextValue=e.value,this.selectedItemIndex=0}}))},this.renderOptionsPopup(a))}renderOptionsPopup(n){const{onOptionAdd:a,onOptionRemove:i,selectedOptions:o}=n;var e=this.filterOptions(n);return 0===e.length?(0,s.default)(t.EmptyState,{title:\"No results found\",icon:\"search_off\"}):(0,s.default)(\".pf-multiselect-input__scroller\",{oncreate:()=>{this.keyEventHandler=(0,c.bindEventListener)(document,\"keydown\",e=>{s.default.redraw();var t,r=this.filterOptions(n);\"Enter\"===e.key?0<r.length&&(t=r[this.selectedItemIndex],(o.includes(t.key)?i:a)(t.key),this.currentTextValue=\"\"):\"ArrowUp\"===e.key?(0<r.length&&(this.selectedItemIndex=Math.max(0,this.selectedItemIndex-1)),e.preventDefault()):\"ArrowDown\"===e.key?(0<r.length&&(this.selectedItemIndex=Math.min(r.length-1,this.selectedItemIndex+1)),e.preventDefault()):\"Backspace\"===e.key&&\"\"===this.currentTextValue&&0<o.length&&(i(o[o.length-1]),e.preventDefault())})},onremove:()=>{this.keyEventHandler?.[Symbol.dispose]()}},e.map((e,t)=>{const r=o.includes(e.key);return(0,s.default)(\".pf-multiselect-input__option-row\",{key:e.key,className:(0,u.classNames)(this.selectedItemIndex===t&&\"pf-multiselect-input__option-row--selected\"),onclick:()=>{(r?i:a)(e.key)}},r&&(0,s.default)(l.Icon,{icon:\"check\"}),e.label)}))}filterOptions({options:e}){return e.filter(e=>e.label.toLowerCase().includes(this.currentTextValue.toLowerCase()))}}}return kN}var RN,NN,MN,PN={};function DN(){if(!RN){RN=1,Object.defineProperty(PN,\"__esModule\",{value:!0}),PN.NodeIssues=void 0;PN.NodeIssues=class{queryError;responseError;dataError;warnings=[];hasIssues(){return void 0!==this.queryError||void 0!==this.responseError||void 0!==this.dataError||0<this.warnings.length}getTitle(){let e=\"\";return this.queryError&&(e+=`Query Error: ${this.queryError.message}\n`),this.responseError&&(e+=`Response Error: ${this.responseError.message}\n`),this.dataError&&(e+=`Data Error: ${this.dataError.message}\n`),0<this.warnings.length&&(e+=`Warnings:\n`+this.warnings.join(\"\\n\")),e}clear(){this.queryError=void 0,this.responseError=void 0,this.dataError=void 0,this.warnings=[]}}}return PN}function xN(){if(NN)return AN;NN=1,Object.defineProperty(AN,\"__esModule\",{value:!0}),AN.AggregationNode=void 0,AN.createGroupByProto=p,AN.GroupByAggregationAttrsToProto=f,AN.placeholderNewColumnName=h;var e=Jr;const o=e.__importDefault(xe()),a=zI(),i=e.__importDefault(dh()),n=qI(),s=CN(),t=IN(),l=Bl(),c=Vl(),u=je(),d=DN();function p(e,t){if(e.find(e=>e.checked)){var r,n=new i.default.PerfettoSqlStructuredQuery.GroupBy;n.columnNames=e.filter(e=>e.checked).map(e=>e.column.name);for(const a of t)a.isValid=!(!(r=a).column||!r.aggregationOp);return n.aggregates=t.filter(e=>e.isValid).map(f),n}}function f(e){var t=new i.default.PerfettoSqlStructuredQuery.GroupBy.Aggregate;return t.columnName=e.column.column.name,t.op=function(e){if(m.includes(e))return i.default.PerfettoSqlStructuredQuery.GroupBy.Aggregate.Op[e];throw new Error(`Invalid AggregateOp '${e}'`)}(e.aggregationOp),t.resultColumnName=e.newColumnName??h(e),t}function h(e){return e.column&&e.aggregationOp?e.column.name+\"_\"+e.aggregationOp.toLowerCase():\"agg_\"+(e.aggregationOp??\"\")}AN.AggregationNode=class g{nodeId;type=a.NodeType.kAggregation;prevNodes;nextNodes;state;meterialisedAs;get sourceCols(){return this.prevNodes?.[0]?.finalCols??this.prevNodes?.[0]?.sourceCols??[]}get finalCols(){var e=this.state.groupByColumns.filter(e=>e.checked);for(const t of this.state.aggregations)e.push((0,n.columnInfoFromName)(t.newColumnName??h(t)));return(0,n.newColumnInfoList)(e,!0)}constructor(e){this.nodeId=(0,a.nextNodeId)(),this.state={...e},this.prevNodes=e.prevNodes,this.nextNodes=[],this.state.groupByColumns.length||(this.state.groupByColumns=(0,n.newColumnInfoList)(this.sourceCols,!1))}updateGroupByColumns(){var e,t=(0,n.newColumnInfoList)(this.sourceCols,!1);for(const r of this.state.groupByColumns)r.checked&&((e=t.find(e=>e.name===r.name))?e.checked=!0:((e=(0,n.columnInfoFromName)(r.name)).checked=!0,t.push(e)));this.state.groupByColumns=t}validate(){if(this.state.issues&&(this.state.issues.queryError=void 0),!this.prevNodes||0===this.prevNodes.length)return this.state.issues||(this.state.issues=new d.NodeIssues),this.state.issues.queryError=new Error(\"Aggregation node has no previous node\"),!1;if(!this.prevNodes[0].validate())return this.state.issues||(this.state.issues=new d.NodeIssues),this.state.issues.queryError=new Error(\"Previous node is invalid\"),!1;var e=new Set(this.sourceCols.map(e=>e.name)),t=[];for(const r of this.state.groupByColumns)r.checked&&!e.has(r.name)&&t.push(r.name);return 0<t.length?(this.state.issues||(this.state.issues=new d.NodeIssues),this.state.issues.queryError=new Error(`Group by columns ['${t.join(\", \")}'] not found in input`),!1):!!this.state.groupByColumns.find(e=>e.checked)||(this.state.issues||(this.state.issues=new d.NodeIssues),this.state.issues.queryError=new Error(\"Aggregation node has no group by columns selected\"),!1)}getTitle(){return this.state.customTitle??\"Aggregation\"}nodeDetails(){var e=[],t=(0<(t=this.state.groupByColumns.filter(e=>e.checked).map(e=>e.name)).length&&e.push((0,o.default)(\"div\",\"Group by: \"+t.join(\", \"))),this.state.aggregations.filter(e=>e.isValid).map(e=>`${e.aggregationOp}(${e.column?.name}) AS `+(e.newColumnName??h(e))));if(0<t.length&&e.push((0,o.default)(\"div\",\"\"+t.join(\", \"))),0!==e.length)return(0,o.default)(\".pf-aggregation-node-details\",e)}nodeSpecificModify(){return(0,o.default)(\".node-specific-modify\",(0,o.default)(r,{groupByColumns:this.state.groupByColumns,aggregations:this.state.aggregations,onchange:this.state.onchange}),(0,o.default)(s.FilterOperation,{filters:this.state.filters,sourceCols:this.finalCols,onFiltersChanged:e=>{this.state.filters=e,this.state.onchange?.()}}))}clone(){var e={prevNodes:this.state.prevNodes,groupByColumns:(0,n.newColumnInfoList)(this.state.groupByColumns),aggregations:this.state.aggregations.map(e=>({...e})),filters:[],customTitle:this.state.customTitle,onchange:this.state.onchange,issues:this.state.issues};return new g(e)}isMaterialised(){return!0===this.state.isExecuted&&void 0!==this.meterialisedAs}getStructuredQuery(){if(this.validate()&&this.prevNodes&&0!==this.prevNodes.length){var t=this.prevNodes[0].getStructuredQuery();if(t){var r=p(this.state.groupByColumns,this.state.aggregations),n=(0,s.createFiltersProto)(this.state.filters,this.finalCols);let e;return t.groupBy?((e=new i.default.PerfettoSqlStructuredQuery).id=(0,a.nextNodeId)(),e.innerQuery=t):e=t,r&&(e.groupBy=r),(t=(0,a.createSelectColumnsProto)(this))&&(e.selectColumns=t),n?((r=new i.default.PerfettoSqlStructuredQuery).id=this.nodeId,r.innerQuery=e,r.filters=n,r):e}}}resolveColumns(){const r=this.sourceCols;this.state.groupByColumns.forEach(t=>{var e=r.find(e=>e.name===t.name);e&&(t.column=e.column)}),this.state.aggregations.forEach(t=>{var e;t.column&&(e=r.find(e=>e.name===t.column?.name))&&(t.column=e)})}serializeState(){return{groupByColumns:this.state.groupByColumns.map(e=>({name:e.name,checked:e.checked})),aggregations:this.state.aggregations.map(e=>({column:e.column,aggregationOp:e.aggregationOp,newColumnName:e.newColumnName,isValid:e.isValid,isEditing:e.isEditing})),filters:this.state.filters,customTitle:this.state.customTitle}}static deserializeState(e){var t=e.groupByColumns.map(e=>{var t=(0,n.columnInfoFromName)(e.name);return t.checked=e.checked,t}),r=e.aggregations.map(e=>({column:e.column,aggregationOp:e.aggregationOp,newColumnName:e.newColumnName,isValid:e.isValid,isEditing:e.isEditing}));return{...e,groupByColumns:t,aggregations:r}}};const m=[\"COUNT\",\"SUM\",\"MIN\",\"MAX\",\"MEAN\",\"DURATION_WEIGHTED_MEAN\"];class r{view({attrs:n}){const r=n.groupByColumns.some(e=>e.checked);r&&0===n.aggregations.length&&n.aggregations.push({isEditing:!0}),!r&&0<n.aggregations.length&&(n.aggregations.length=0);const a=(r,e)=>{var t=n.groupByColumns.map(e=>(0,o.default)(\"option\",{value:e.name,selected:r.column?.name===e.name},e.name));return(0,o.default)(\".pf-exp-aggregation-editor\",(0,o.default)(l.Select,{onchange:e=>{r.aggregationOp=e.target.value,o.default.redraw()}},(0,o.default)(\"option\",{disabled:!0,selected:!r.aggregationOp},\"Operation\"),m.map(e=>(0,o.default)(\"option\",{value:e,selected:e===r.aggregationOp},e))),(0,o.default)(l.Select,{onchange:e=>{const t=e.target;r.column=n.groupByColumns.find(e=>e.name===t.value),n.onchange?.(),o.default.redraw()}},(0,o.default)(\"option\",{disabled:!0,selected:!r.column},\"Column\"),t),\"AS\",(0,o.default)(c.TextInput,{placeholder:h(r),oninput:e=>{r.newColumnName=e.target.value.trim()},value:r.newColumnName}),(0,o.default)(u.Button,{className:\"delete-button\",icon:\"delete\",onclick:()=>{n.aggregations.splice(e,1),n.onchange?.()}}),(0,o.default)(u.Button,{label:\"Done\",className:\"is-primary\",disabled:!r.isValid,onclick:()=>{r.newColumnName||(r.newColumnName=h(r)),r.isEditing=!1,n.onchange?.()}}))},i=(e,r)=>(0,o.default)(\".pf-exp-aggregation-viewer\",{onclick:()=>{n.aggregations.forEach((e,t)=>{e.isEditing=t===r}),o.default.redraw()}},`${e.aggregationOp}(${e.column?.name}) AS `+e.newColumnName);return(0,o.default)(\".pf-exp-query-operations\",[(0,o.default)(\".pf-exp-section\",(0,o.default)(\".pf-exp-operations-container\",(0,o.default)(\".pf-exp-multi-select-container\",(0,o.default)(\"label\",\"GROUP BY columns\"),(0,o.default)(t.MultiselectInput,{options:n.groupByColumns.map(e=>({key:e.name,label:e.name})),selectedOptions:n.groupByColumns.filter(e=>e.checked).map(e=>e.name),onOptionAdd:t=>{var e=n.groupByColumns.find(e=>e.name===t);e&&(e.checked=!0,n.onchange?.(),o.default.redraw())},onOptionRemove:t=>{var e=n.groupByColumns.find(e=>e.name===t);e&&(e.checked=!1,n.onchange?.(),o.default.redraw())}})),(0,o.default)(\".pf-exp-aggregations-list\",(()=>{if(!r)return null;const e=n.aggregations[n.aggregations.length-1];var t=e.isValid;return[...n.aggregations.map((e,t)=>(e.isEditing?a:i)(e,t)),t&&(0,o.default)(u.Button,{label:\"Add more aggregations\",onclick:()=>{e.newColumnName||(e.newColumnName=h(e)),e.isEditing=!1,n.aggregations.push({isEditing:!0}),n.onchange?.()}})]})())))])}}return AN}var LN,FN={},UN={};function BN(){if(!LN){LN=1,Object.defineProperty(UN,\"__esModule\",{value:!0}),UN.NodeBox=UN.DEFAULT_NODE_WIDTH=UN.NODE_HEIGHT=UN.PADDING=void 0;const l=Jr.__importDefault(xe()),c=be(),u=Ae(),d=je(),p=Se(),f=oc(),h=Ee();UN.PADDING=20,UN.NODE_HEIGHT=50,UN.DEFAULT_NODE_WIDTH=100,UN.NodeBox={oncreate({attrs:e,dom:t}){e.onNodeRendered(e.node,t)},onupdate({attrs:e,dom:t}){e.onNodeRendered(e.node,t)},view({attrs:e}){const{node:r,layout:t,isSelected:n,onNodeSelected:a,onNodeDragStart:i}=e;var o=(0,c.classNames)(n&&\"pf-node-box__selected\",!r.validate()&&\"pf-node-box__invalid\",r.state.issues?.queryError&&\"pf-node-box__invalid-query\",r.state.issues?.responseError&&\"pf-node-box__invalid-response\"),s={left:t.x+\"px\",top:t.y+\"px\"};return(0,l.default)(\".pf-node-box\",{class:o,style:s,onclick:()=>a(r),draggable:!0,ondragstart:e=>i(r,e,t)},r.prevNodes?.map((e,t)=>{t=`calc(${100*(t+1)/((r.prevNodes?r.prevNodes.length:0)+1)}% - 5px)`;return(0,l.default)(\".pf-node-box-port.pf-node-box-port-top\",{style:{left:t}})}),(o=r).state.issues&&o.state.issues.hasIssues()?(s=(0,c.classNames)(\"pf-node-box__warning-icon\"),(0,l.default)(h.Icon,{className:s,icon:\"warning\",title:o.state.issues.getTitle()})):null,(0,l.default)(\".pf-node-box__content\",(0,l.default)(\"span.pf-node-box__title\",r.getTitle()),(0,l.default)(\".pf-node-box__details\",r.nodeDetails?.()),function(e){const{node:r,onRemoveFilter:n}=e;return 0===r.state.filters.length?null:(0,l.default)(\".pf-node-box__filters\",r.state.filters.map(e=>{var t=\"value\"in e?`${e.column} ${e.op} `+e.value:e.column+\" \"+e.op;return(0,l.default)(f.Chip,{label:t,removable:!0,onRemove:()=>n(r,e)})}))}(e)),function(e){const{node:t,onDuplicateNode:r,onDeleteNode:n}=e;return e=[(0,l.default)(p.MenuItem,{label:\"Duplicate\",onclick:()=>r(t)}),(0,l.default)(p.MenuItem,{label:\"Delete\",onclick:()=>n(t)})],(0,l.default)(p.PopupMenu,{trigger:(0,l.default)(d.Button,{iconFilled:!0,icon:u.Icons.ContextMenu})},...e)}(e),r.nextNodes.map((e,t)=>{t=`calc(${100*(t+1)/(r.nextNodes.length+1)}% - 5px)`;return(0,l.default)(\".pf-node-box-port.pf-node-box-port-bottom\",{style:{left:t}})}),function(e){const{node:t,onAddAggregation:r,onModifyColumns:n,onAddIntervalIntersect:a}=e;return(0,l.default)(p.PopupMenu,{trigger:(0,l.default)(h.Icon,{className:\"pf-node-box-add-button\",icon:\"add\"})},(0,l.default)(p.MenuItem,{label:\"Aggregate\",onclick:()=>r(t)}),(0,l.default)(p.MenuItem,{label:\"Modify Columns\",onclick:()=>n(t)}),(0,l.default)(p.MenuItem,{label:\"Interval Intersect\",onclick:()=>a(t)}))}(e))}}}return UN}var jN,HN,GN={};function VN(){if(!HN){HN=1,Object.defineProperty(FN,\"__esModule\",{value:!0}),FN.Graph=void 0;const g=Jr.__importDefault(xe()),t=Ae(),r=je(),n=Be(),a=Se(),_=BN(),y=function(){if(!jN){jN=1,Object.defineProperty(GN,\"__esModule\",{value:!0}),GN.Arrow=void 0;const r=Jr.__importDefault(xe());GN.Arrow={view({attrs:e}){var{from:e,to:t}=e;return(0,r.default)(\"svg.pf-node-graph-arrow\",{style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"}},(0,r.default)(\"line\",{x1:e.x,y1:e.y,x2:t.x,y2:t.y,stroke:\"var(--pf-color-border)\",\"stroke-width\":2}))}}}return GN}(),i=Ee(),T=300,v=50,o={view({attrs:e}){var{title:e,description:t,icon:r,hotkey:n,onclick:a}=e;return(0,g.default)(\".pf-source-card\",{onclick:a},(0,g.default)(\".pf-source-card-clickable\",(0,g.default)(i.Icon,{icon:r}),(0,g.default)(\"h3\",e)),(0,g.default)(\"p\",t),(0,g.default)(\".pf-source-card-hotkey\",(a=n,(0,g.default)(\".pf-keycap\",a))))}};function m(e,t,r){var n=e.width??_.DEFAULT_NODE_WIDTH,a=e.height??_.NODE_HEIGHT,i=t.width??_.DEFAULT_NODE_WIDTH,o=t.height??_.NODE_HEIGHT;return e.x<t.x+i+r&&e.x+n+r>t.x&&e.y<t.y+o+r&&e.y+a+r>t.y}FN.Graph=class{attrs;dragNode;resolvedNodeLayouts=new Map;nodeGraphWidth=0;dragOffset;oncreate({dom:e,attrs:t}){const o=e;this.nodeGraphWidth=o.getBoundingClientRect().width,o.ondragover=e=>{var t,r,n,a,i;e.preventDefault(),this.dragNode&&(t=this.resolvedNodeLayouts.get(this.dragNode))&&this.dragOffset&&(r=o.getBoundingClientRect(),n=t.width??_.DEFAULT_NODE_WIDTH,a=t.height??_.NODE_HEIGHT,i=e.clientX-r.left-this.dragOffset.x,e=e.clientY-r.top-this.dragOffset.y,this.resolvedNodeLayouts.set(this.dragNode,{...t,x:Math.max(0,Math.min(i,r.width-n)),y:Math.max(0,Math.min(e,r.height-a))}),g.default.redraw())},o.ondrop=e=>{this.onDrop(e,o,t)},o.ondragend=()=>{this.dragNode&&(this.dragNode=void 0,this.dragOffset=void 0,g.default.redraw())}}onDrop=(e,t,r)=>{var n,a,i;e.preventDefault(),this.dragNode&&(e=this.resolvedNodeLayouts.get(this.dragNode))&&(t=t.getBoundingClientRect(),n=e.width??_.DEFAULT_NODE_WIDTH,a=e.height??_.NODE_HEIGHT,i={x:this.nodeGraphWidth-T-_.PADDING,y:_.PADDING,width:T,height:v},e=function(e,t,r,n,a){var i={...e};for(const h of t){var o,s,l,c,u,d,p,f;m(i,h,_.PADDING)&&(o=h.width??_.DEFAULT_NODE_WIDTH,l=h.height??_.NODE_HEIGHT,o=h.x+o+_.PADDING,s=h.x-r-_.PADDING,l=h.y+l+_.PADDING,c=h.y-n-_.PADDING,u=Math.abs(i.x-o),d=Math.abs(i.x-s),p=Math.abs(i.y-l),f=Math.abs(i.y-c),(f=Math.min(u,d,p,f))===u?i.x=o:f===d?i.x=s:i.y=f===p?l:c)}return i.x=Math.max(0,Math.min(i.x,a.width-r)),i.y=Math.max(0,Math.min(i.y,a.height-n)),i}(e,[...[...this.resolvedNodeLayouts.entries()].filter(([e])=>e!==this.dragNode).map(([,e])=>e),i],n,a,t),r.onNodeLayoutChange(this.dragNode.nodeId,{...e,width:n,height:a}),g.default.redraw())};onNodeDragStart=(e,t,r)=>{if(this.attrs){var n=this.getAllNodes(this.attrs.rootNodes);this.resolvedNodeLayouts=new Map;for(const e of n){const r=this.attrs.nodeLayouts.get(e.nodeId);r&&this.resolvedNodeLayouts.set(e,r)}this.dragNode=e;n=t.target.closest(\".pf-node-box\"),r=(this.resolvedNodeLayouts.set(e,{...r,width:n.offsetWidth,height:n.offsetHeight}),n.getBoundingClientRect());this.dragOffset={x:t.clientX-r.left,y:t.clientY-r.top},t.dataTransfer&&(t.dataTransfer.setData(\"text/plain\",e.getTitle()),t.dataTransfer.effectAllowed=\"move\")}};getAllNodes(e){var t=[];for(const a of e)for(var r=[a];0<r.length;){var n=r.shift();t.push(n);for(const i of n.nextNodes)r.push(i)}return t}renderEmptyNodeGraph(e){return(0,g.default)(\".pf-node-graph-add-button-container.pf-hero\",(0,g.default)(\"h2.hero-title\",\"Welcome to the Explore Page\"),(0,g.default)(\"p.hero-subtitle\",\"Build and execute SQL queries on your trace data using a visual node-based editor. Get started by adding a source node below.\"),(0,g.default)(\".pf-node-graph-add-buttons\",(0,g.default)(o,{title:\"Perfetto Table\",description:\"Query and explore data from any table in the Perfetto standard library.\",icon:\"table_chart\",hotkey:\"T\",onclick:e.onAddStdlibTableSource}),(0,g.default)(o,{title:\"Slices\",description:\"Explore all the slices from your trace.\",icon:\"bar_chart\",hotkey:\"S\",onclick:e.onAddSlicesSource}),(0,g.default)(o,{title:\"Query Node\",description:\"Start with a custom SQL query to act as a source for further exploration.\",icon:\"code\",hotkey:\"Q\",onclick:e.onAddSqlSource})),(0,g.default)(r.Button,{label:\"Import\",onclick:e.onImport,variant:r.ButtonVariant.Filled,icon:\"file_upload\"}),(0,g.default)(r.Button,{label:\"Import from WITH statement\",onclick:e.onImportWithStatement,variant:r.ButtonVariant.Filled,icon:\"code\",style:{marginLeft:\"8px\"}}))}renderControls(e){return(0,g.default)(\".pf-node-graph__controls\",(0,g.default)(a.PopupMenu,{trigger:(0,g.default)(r.Button,{label:\"Add Node\",icon:t.Icons.Add,variant:r.ButtonVariant.Filled})},(0,g.default)(a.MenuItem,{label:\"Explore table\",onclick:e.onAddStdlibTableSource}),(0,g.default)(a.MenuItem,{label:\"Explore slices\",onclick:e.onAddSlicesSource}),(0,g.default)(a.MenuItem,{label:\"Query Node\",onclick:e.onAddSqlSource})),(0,g.default)(r.Button,{label:\"Export\",icon:t.Icons.Download,variant:r.ButtonVariant.Minimal,onclick:e.onExport,style:{marginLeft:\"8px\"}}),(0,g.default)(r.Button,{label:\"Clear All Nodes\",icon:t.Icons.Delete,intent:n.Intent.Danger,onclick:e.onClearAllNodes,style:{marginLeft:\"8px\"}}))}view({attrs:a}){var e,{rootNodes:t,onNodeSelected:r,selectedNode:n}=this.attrs=a,i=(e,t)=>{var r,n=this.resolvedNodeLayouts.get(e);n&&(r=t.offsetWidth,t=t.offsetHeight,n.width===r&&n.height===t||a.onNodeLayoutChange(e.nodeId,{...n,width:r,height:t}))},t=this.getAllNodes(t);if(!this.dragNode){this.resolvedNodeLayouts=new Map;for(const p of t){var o=a.nodeLayouts.get(p.nodeId);o&&this.resolvedNodeLayouts.set(p,o)}}for(const f of t)this.resolvedNodeLayouts.has(f)||(e=function(e,n,t,r){var a=Math.max(_.DEFAULT_NODE_WIDTH,8*e.getTitle().length+60),i=_.NODE_HEIGHT,o={x:r-T-_.PADDING,y:_.PADDING,width:T,height:v},s=[...n,o];if(e.prevNodes&&0<e.prevNodes.length){n=t.get(e.prevNodes[0]);if(n){let t=n.x,r=n.y+(n.height??i)+2*_.PADDING;for(1<e.prevNodes[0].nextNodes.length&&(t+=(e.prevNodes[0].nextNodes.indexOf(e)-(e.prevNodes[0].nextNodes.length-1)/2)*(a+_.PADDING));;){var l={x:t,y:r,width:a,height:i};let e=!1;for(const p of s)if(m(l,p,_.PADDING)){e=!0,r=p.y+(p.height??i)+_.PADDING;break}if(!e)return l}}}let c=_.PADDING,u=_.PADDING;for(;;){var d={x:c,y:u,width:a,height:i};let e=!1;for(const f of s)if(m(d,f,_.PADDING)){e=!0,(c=f.x+(f.width??a)+_.PADDING)+a>r&&(c=_.PADDING,u=u+i+_.PADDING);break}if(!e)return d}}(f,Array.from(this.resolvedNodeLayouts.values()),this.resolvedNodeLayouts,this.nodeGraphWidth),this.resolvedNodeLayouts.set(f,e),a.onNodeLayoutChange(f.nodeId,{x:e.x,y:e.y}));var s=[];if(0===t.length)s.push(this.renderEmptyNodeGraph(a));else{for(const h of t){var l=this.resolvedNodeLayouts.get(h),c=function(t,r){var n=[];for(let e=0;e<r;e++)n.push({x:t.x+(t.width??_.DEFAULT_NODE_WIDTH)*(e+1)/(r+1),y:t.y});return n}(l,h.prevNodes?.length??1);for(let e=0;e<(h.prevNodes?.length??0);e++){var u=h.prevNodes[e],d=this.resolvedNodeLayouts.get(u);d&&(u=(d=function(t,r){var n=[];for(let e=0;e<r;e++)n.push({x:t.x+(t.width??_.DEFAULT_NODE_WIDTH)*(e+1)/(r+1),y:t.y+(t.height??_.NODE_HEIGHT)});return n}(d,u.nextNodes.length))[u.nextNodes.indexOf(h)]??d[0],d=c[e],s.push((0,g.default)(y.Arrow,{from:u,to:d})))}s.push((0,g.default)(_.NodeBox,{node:h,isSelected:n===h,isDragging:this.dragNode===h,layout:l,onNodeSelected:r,onNodeDragStart:this.onNodeDragStart,onDuplicateNode:a.onDuplicateNode,onDeleteNode:a.onDeleteNode,onAddAggregation:a.onAddAggregation,onModifyColumns:a.onAddModifyColumns,onAddIntervalIntersect:a.onAddIntervalIntersect,onNodeRendered:i,onRemoveFilter:a.onRemoveFilter}))}s.push(this.renderControls(a))}return(0,g.default)(\".pf-node-graph\",{tabindex:0,onclick:e=>{e.target===e.currentTarget&&a.onDeselect()}},s)}}}return FN}var qN,zN={},WN={};function $N(){if(!qN){qN=1,Object.defineProperty(WN,\"__esModule\",{value:!0}),WN.MultiParagraphText=WN.TextParagraph=void 0;const n=Jr.__importDefault(xe()),r=be();WN.TextParagraph=class{view({attrs:e}){let{text:t,compressSpace:r}=e;return void 0===r&&(r=!0),(0,n.default)(\"div.pf-text-paragraph\",r?t.replace(/\\s\\s+/g,\" \"):t)}};WN.MultiParagraphText=class{view({attrs:e,children:t}){var{className:e=\"\"}=e,e=(0,r.classNames)(e);return(0,n.default)(\"div\",{class:e},t)}}}return WN}var KN,YN,JN={};function QN(){if(!KN){KN=1,Object.defineProperty(JN,\"__esModule\",{value:!0}),JN.findErrors=function(e,t){if(e instanceof Error)return e;if(t?.error)return new Error(t.error);return},JN.findWarnings=function(e,t){if(e&&!e.error){if(0<e.statementCount&&0===e.statementWithOutputCount&&0===e.columns.length)return new Error(\"The last statement must produce an output.\");if(t instanceof a.SqlSourceNode&&1<e.statementCount){var t=e.query.split(\";\").map(e=>e.trim()).filter(e=>0<e.length),e=t.slice(0,t.length-1),r=/^\\s*INCLUDE\\s+PERFETTO\\s+MODULE\\s+[\\w._]+\\s*$/i;for(const n of e)if(!r.test(n))return new Error(\"Only 'INCLUDE PERFETTO MODULE ...;' statements are \"+`allowed before the final statement. Error on: \"${n}\"`)}}return};const a=gN()}return JN}var ZN,XN={};function eM(){if(!ZN){ZN=1,Object.defineProperty(XN,\"__esModule\",{value:!0}),XN.TableSourceNode=void 0,XN.modalForTableSelection=function(n){return new Promise(r=>{let t=\"\";(0,l.showModal)({title:\"Choose a table\",content:()=>(0,a.default)(\".pf-node-explorer-help\",(0,a.default)(c.TableList,{sqlModules:n,onTableClick:e=>{var t,e=n.getTable(e);e?(t=e.columns.map(e=>(0,i.columnInfoFromSqlColumn)(e,!0)),r({sqlTable:e,sourceCols:t}),(0,l.closeModal)()):r(void 0)},searchQuery:t,onSearchQueryChange:e=>{t=e,(0,u.redrawModal)()},autofocus:!0})),buttons:[]})})};var e=Jr;const a=e.__importDefault(xe()),r=zI(),i=qI(),n=e.__importDefault(dh()),t=$N(),o=je(),s=CN(),l=Ke(),c=XI(),u=Ke();class d extends mN().SourceNode{state;prevNodes=[];showColumns=!1;get sourceCols(){return this.state.sqlTable?.columns.map(e=>(0,i.columnInfoFromSqlColumn)(e,!0))??[]}constructor(e){super(e),this.state=e,this.state.onchange=e.onchange,this.state.filters=e.filters??[]}get type(){return r.NodeType.kTable}clone(){var e={trace:this.state.trace,sqlModules:this.state.sqlModules,sqlTable:this.state.sqlTable,filters:this.state.filters.map(e=>({...e})),customTitle:this.state.customTitle,onchange:this.state.onchange};return new d(e)}nodeSpecificModify(){var e;return null!=this.state.sqlTable?(e=this.state.sqlTable,(0,a.default)(\".pf-stdlib-table-node\",(0,a.default)(\".pf-details-box\",(0,a.default)(t.TextParagraph,{text:e.description}),(0,a.default)(o.Button,{label:this.showColumns?\"Hide Columns\":\"Show Columns\",onclick:()=>{this.showColumns=!this.showColumns}}),this.showColumns&&(0,a.default)(\"table.pf-table.pf-table-striped\",(0,a.default)(\"thead\",(0,a.default)(\"tr\",(0,a.default)(\"th\",\"Column\"),(0,a.default)(\"th\",\"Type\"),(0,a.default)(\"th\",\"Description\"))),(0,a.default)(\"tbody\",e.columns.map(e=>(0,a.default)(\"tr\",(0,a.default)(\"td\",e.name),(0,a.default)(\"td\",e.type.name),(0,a.default)(\"td\",e.description)))))),(0,a.default)(s.FilterOperation,{filters:this.state.filters,sourceCols:this.sourceCols,onFiltersChanged:e=>{this.state.filters=e,this.state.onchange?.()}}))):(0,a.default)(t.TextParagraph,\"No description available for this table.\")}validate(){return void 0!==this.state.sqlTable}getTitle(){return this.state.customTitle??\"Table \"+this.state.sqlTable?.name}isMaterialised(){return!0===this.state.isExecuted&&void 0!==this.meterialisedAs}getStructuredQuery(){var e,t;if(this.validate()&&this.state.sqlTable)return(e=new n.default.PerfettoSqlStructuredQuery).id=this.nodeId,e.table=new n.default.PerfettoSqlStructuredQuery.Table,e.table.tableName=this.state.sqlTable.name,e.table.moduleName=this.state.sqlTable.includeKey||void 0,e.table.columnNames=this.sourceCols.filter(e=>e.checked).map(e=>e.column.name),(t=(0,s.createFiltersProto)(this.state.filters,this.sourceCols))&&(e.filters=t),(t=(0,r.createSelectColumnsProto)(this))&&(e.selectColumns=t),e}serializeState(){return{sqlTable:this.state.sqlTable?.name,filters:this.state.filters,customTitle:this.state.customTitle}}static deserializeState(e,t,r){var n=r.sqlTable?t.getTable(r.sqlTable):void 0;return{...r,trace:e,sqlModules:t,sqlTable:n}}}XN.TableSourceNode=d}return XN}var tM,rM,nM={};function aM(){if(!rM){rM=1,Object.defineProperty(HI,\"__esModule\",{value:!0}),HI.Builder=void 0;const p=Jr.__importDefault(xe()),f=be(),h=zI(),m=eR(),g=function(){if(!MN){MN=1,Object.defineProperty(nR,\"__esModule\",{value:!0}),nR.NodeExplorer=void 0;const i=Jr.__importDefault(xe()),n=be();var a,e,t=Qc();const r=eR(),c=zI(),o=je(),s=Ee(),l=Ae(),u=Se(),d=Vl(),p=gN(),f=EN(),h=xN(),m=DN();(e=a=a||{})[e.kModify=0]=\"kModify\",e[e.kSql=1]=\"kSql\",e[e.kProto=2]=\"kProto\";nR.NodeExplorer=class{tableAsyncLimiter=new t.AsyncLimiter;selectedView=0;prevSqString;currentQuery;sqlForDisplay;renderTitleRow(t,e,r){return(0,i.default)(\".pf-node-explorer__title-row\",(0,i.default)(\".title\",!t.validate()&&(0,i.default)(s.Icon,{icon:l.Icons.Warning,filled:!0,className:(0,n.classNames)(\"pf-node-explorer__warning-icon--error\"),title:`Invalid node: \n`+(t.state.issues?.getTitle()??\"\")}),(0,i.default)(d.TextInput,{placeholder:t.getTitle(),oninput:e=>{e.target&&(t.state.customTitle=e.target.value.trim(),\"\"===t.state.customTitle)&&(t.state.customTitle=void 0)}}),` [${t.nodeId}]`),(0,i.default)(\"span.spacer\"),(0,i.default)(o.Button,{label:\"Run\",onclick:e.onExecute}),r())}updateQuery(t,e){if(t instanceof p.SqlSourceNode&&t.state.sql){for(const i of t.prevNodes)i.nextNodes=i.nextNodes.filter(e=>e!==t);var r=[];for(const o of t.findDependencies()){if(o===t.nodeId)return t.state.issues=new m.NodeIssues,void(t.state.issues.queryError=new Error(\"Node cannot depend on itself\"));var n=e.resolveNode(o);n&&r.push(n)}t.prevNodes=r;for(const s of t.prevNodes)s.nextNodes.includes(t)||s.nextNodes.push(t)}var a=t.getStructuredQuery();if(void 0!==a){const l=JSON.stringify(a.toJSON(),null,2);l!==this.prevSqString&&this.tableAsyncLimiter.schedule(async()=>{this.currentQuery=await(0,c.analyzeNode)(t,e.trace.engine),(0,c.isAQuery)(this.currentQuery)&&(t instanceof h.AggregationNode&&t.updateGroupByColumns(),e.onQueryAnalyzed(this.currentQuery,t.type!==c.NodeType.kSqlSource&&t.type!==c.NodeType.kAggregation),this.prevSqString=l)})}}renderContent(e,t){var r=this.sqlForDisplay??((0,c.isAQuery)(this.currentQuery)?(0,c.queryToRun)(this.currentQuery):\"SQL not available.\"),n=(0,c.isAQuery)(this.currentQuery)?this.currentQuery.textproto:this.currentQuery instanceof Error?this.currentQuery.message:\"Proto not available.\";return(0,i.default)(\"article\",this.selectedView===a.kModify&&[e.nodeSpecificModify(t.onExecute)],this.selectedView===a.kSql&&((0,c.isAQuery)(this.currentQuery)?(0,i.default)(f.CodeSnippet,{language:\"SQL\",text:r}):(0,i.default)(\"div\",r)),this.selectedView===a.kProto&&((0,c.isAQuery)(this.currentQuery)?(0,i.default)(f.CodeSnippet,{text:n,language:\"textproto\"}):(0,i.default)(\"div\",n)))}view({attrs:e}){var t=e[\"node\"];if(!t)return(0,i.default)(r.ExplorePageHelp);this.updateQuery(t,e);return(0,i.default)(\".pf-node-explorer\"+(t instanceof p.SqlSourceNode?\".pf-node-explorer-sql-source\":\"\"),this.renderTitleRow(t,e,()=>(0,i.default)(u.PopupMenu,{trigger:(0,i.default)(o.Button,{icon:l.Icons.ContextMenuAlt})},[(0,i.default)(u.MenuItem,{label:\"Modify\",onclick:()=>{this.selectedView=a.kModify}}),(0,i.default)(u.MenuItem,{label:\"Show SQL\",onclick:()=>{this.selectedView=a.kSql}}),(0,i.default)(u.MenuItem,{label:\"Show proto\",onclick:()=>{this.selectedView=a.kProto}})])),this.renderContent(t,e))}}}return nR}(),_=VN(),y=function(){if(!YN){YN=1,Object.defineProperty(zN,\"__esModule\",{value:!0}),zN.DataExplorer=void 0;const n=Jr.__importDefault(xe()),r=Ae(),a=Ic(),i=je(),o=Kl(),s=qe(),l=Se(),c=$N(),u=QN();zN.DataExplorer=class{view({attrs:e}){var t=(0,u.findErrors)(e.query,e.response),r=this.getStatusText(e.query,e.response),t=t?\"Error: \"+t.message:r;return(0,n.default)(s.DetailsShell,{title:\"Query data\",fillParent:!0,buttons:this.renderMenu(e)},this.renderContent(e,t))}getStatusText(e,t){return void 0===e?\"No data to display\":void 0===t?\"Typing...\":void 0}renderMenu(e){var t=(0,n.default)(i.Button,{label:e.isFullScreen?\"Exit full screen\":\"Full screen\",onclick:()=>e.onFullScreenToggle()});return e.isFullScreen?t:[t,(0,n.default)(l.PopupMenu,{trigger:(0,n.default)(i.Button,{icon:r.Icons.ContextMenuAlt})},[(0,n.default)(l.MenuItem,{label:\"Left\",onclick:()=>e.onPositionChange(\"left\")}),(0,n.default)(l.MenuItem,{label:\"Right\",onclick:()=>e.onPositionChange(\"right\")}),(0,n.default)(l.MenuItem,{label:\"Bottom\",onclick:()=>e.onPositionChange(\"bottom\")})])]}renderContent(t,e){return e?(0,n.default)(c.TextParagraph,{text:e}):t.response&&t.dataSource&&t.node.validate()?[1<t.response.statementWithOutputCount?(0,n.default)(o.Callout,{icon:\"warning\"},`${t.response.statementWithOutputCount} out of ${t.response.statementCount} `,\"statements returned a result. \",\"Only the results for the last statement are displayed.\"):null,(0,n.default)(a.DataGrid,{fillHeight:!0,columns:t.response.columns.map(e=>({name:e})),data:t.dataSource,showFiltersInToolbar:!0,filters:t.node.state.filters,onFiltersChanged:e=>{t.node.state.filters=[...e],t.onchange?.()},cellRenderer:(e,t)=>(0,a.renderCell)(e,t)})]:null}}}return zN}(),i=pc(),T=eM(),v=gN(),t=function(){if(!tM){tM=1,Object.defineProperty(nM,\"__esModule\",{value:!0}),nM.QueryService=void 0;const t=Ml();nM.QueryService=class{engine;constructor(e){this.engine=e}async runQuery(e){return(0,t.runQueryForQueryTable)(e,this.engine)}}}return nM}(),o=QN(),b=DN();HI.Builder=class{queryService;query;queryExecuted=!1;tablePosition=\"bottom\";previousSelectedNode;isNodeDataViewerFullScreen=!1;response;dataSource;constructor({attrs:e}){this.queryService=new t.QueryService(e.trace.engine)}view({attrs:r}){const{trace:n,rootNodes:t,onNodeSelected:e,selectedNode:a,onAddStdlibTableSource:i,onAddSlicesSource:o,onAddSqlSource:s,onClearAllNodes:l,sqlModules:c}=r;a&&a!==this.previousSelectedNode&&(a instanceof v.SqlSourceNode?this.tablePosition=\"left\":this.tablePosition=\"bottom\",this.response=void 0,this.dataSource=void 0),this.previousSelectedNode=a;var u=(0,f.classNames)(\"pf-query-builder-layout\",a?\"selection\":\"no-selection\",a&&\"selection-\"+this.tablePosition,this.isNodeDataViewerFullScreen&&\"full-page\")||\"\",d=a?(0,p.default)(g.NodeExplorer,{key:a.nodeId,trace:n,node:a,resolveNode:e=>this.resolveNode(e,t),onQueryAnalyzed:(e,t=a.type!==h.NodeType.kSqlSource&&a.type!==h.NodeType.kIntervalIntersect)=>{this.query=e,(0,h.isAQuery)(this.query)&&t&&(this.queryExecuted=!1,this.runQuery(a))},onExecute:()=>{this.queryExecuted=!1,this.runQuery(a),p.default.redraw()},onchange:()=>{}}):(0,p.default)(m.ExplorePageHelp,{sqlModules:c,onTableClick:e=>{var t=r[\"onRootNodeCreated\"],e=c.getTable(e);e&&t(new T.TableSourceNode({trace:n,sqlModules:c,sqlTable:e,filters:[]}))}});return(0,p.default)(\".\"+u.split(\" \").join(\".\"),(0,p.default)(\".pf-qb-node-graph\",(0,p.default)(_.Graph,{rootNodes:t,selectedNode:a,onNodeSelected:e,nodeLayouts:r.nodeLayouts,onNodeLayoutChange:r.onNodeLayoutChange,onDeselect:r.onDeselect,onAddStdlibTableSource:i,onAddSlicesSource:o,onAddSqlSource:s,onClearAllNodes:l,onDuplicateNode:r.onDuplicateNode,onAddAggregation:r.onAddAggregationNode,onAddModifyColumns:r.onAddModifyColumnsNode,onAddIntervalIntersect:r.onAddIntervalIntersectNode,onDeleteNode:e=>{e.isMaterialised()&&n.engine.query(\"DROP TABLE IF EXISTS \"+e.meterialisedAs),r.onDeleteNode(e)},onImport:r.onImport,onImportWithStatement:r.onImportWithStatement,onExport:r.onExport,onRemoveFilter:r.onRemoveFilter})),(0,p.default)(\".pf-qb-explorer\",d),a&&(0,p.default)(\".pf-qb-viewer\",(0,p.default)(y.DataExplorer,{queryService:this.queryService,query:this.query,node:a,executeQuery:!this.queryExecuted,response:this.response,dataSource:this.dataSource,onchange:()=>{},onQueryExecuted:({columns:e,error:t,warning:r,noDataWarning:n})=>{this.queryExecuted=!0,t||r||n?(a.state.issues||(a.state.issues=new b.NodeIssues),a.state.issues.queryError=t,a.state.issues.responseError=r,a.state.issues.dataError=n):a.state.issues=void 0,a instanceof v.SqlSourceNode&&a.onQueryExecuted(e)},onPositionChange:e=>{this.tablePosition=e},isFullScreen:this.isNodeDataViewerFullScreen,onFullScreenToggle:()=>{this.isNodeDataViewerFullScreen=!this.isNodeDataViewerFullScreen}})))}resolveNode(e,t){for(var r=[...t],n=new Set;0<r.length;){var a=r.shift();if(!n.has(a.nodeId)){if(n.add(a.nodeId),a.nodeId===e)return a;r.push(...a.nextNodes)}}}runQuery(a){void 0===this.query||this.query instanceof Error||this.queryExecuted||this.queryService.runQuery((0,h.queryToRun)(this.query)).then(e=>{this.response=e;const t=new i.InMemoryDataSource(this.response.rows);this.dataSource={get rows(){return t.rows},notifyUpdate(e){e={...e,filters:[]};t.notifyUpdate(e)}};var e=(0,o.findErrors)(this.query,this.response),r=(0,o.findWarnings)(this.response,a),n=0===this.response?.totalRowCount?new Error(\"Query returned no rows\"):void 0;this.queryExecuted=!0,e||r||n?(a.state.issues||(a.state.issues=new b.NodeIssues),a.state.issues.queryError=e,a.state.issues.responseError=r,a.state.issues.dataError=n):a.state.issues=void 0,a instanceof v.SqlSourceNode&&a.onQueryExecuted(this.response.columns),p.default.redraw()})}}}return HI}var iM,oM={};function sM(){if(!iM){iM=1,Object.defineProperty(oM,\"__esModule\",{value:!0}),oM.SlicesSourceNode=void 0,oM.slicesSourceNodeColumns=t;var e=Jr;const r=e.__importDefault(xe()),n=zI(),a=qI(),i=e.__importDefault(dh()),o=Vl(),s=LI(),l=CN();class c extends mN().SourceNode{state;get sourceCols(){return t(!0)}constructor(e){super(e),this.state=e,this.state.onchange=e.onchange,this.nextNodes=[]}get type(){return n.NodeType.kSimpleSlices}clone(){var e={slice_name:this.state.slice_name?.slice(),thread_name:this.state.thread_name?.slice(),process_name:this.state.process_name?.slice(),track_name:this.state.track_name?.slice(),filters:this.state.filters.map(e=>({...e})),customTitle:this.state.customTitle};return new c(e)}getTitle(){return this.state.customTitle??\"Simple slices\"}isMaterialised(){return!0===this.state.isExecuted&&void 0!==this.meterialisedAs}serializeState(){return{slice_name:this.state.slice_name,thread_name:this.state.thread_name,process_name:this.state.process_name,track_name:this.state.track_name,filters:this.state.filters,customTitle:this.state.customTitle}}getStructuredQuery(){var e,t;if(this.validate())return(e=new i.default.PerfettoSqlStructuredQuery).id=this.nodeId,t=new i.default.PerfettoSqlStructuredQuery.SimpleSlices,this.state.slice_name&&(t.sliceNameGlob=this.state.slice_name),this.state.thread_name&&(t.threadNameGlob=this.state.thread_name),this.state.process_name&&(t.processNameGlob=this.state.process_name),this.state.track_name&&(t.trackNameGlob=this.state.track_name),e.simpleSlices=t,(t=(0,l.createFiltersProto)(this.state.filters,this.sourceCols))&&(e.filters=t),(t=(0,n.createSelectColumnsProto)(this))&&(e.selectColumns=t),e}nodeDetails(){var e=[];if(this.state.slice_name&&e.push((0,r.default)(\"div\",\"slice_name: \"+this.state.slice_name)),this.state.thread_name&&e.push((0,r.default)(\"div\",\"thread_name: \"+this.state.thread_name)),this.state.process_name&&e.push((0,r.default)(\"div\",\"process_name: \"+this.state.process_name)),this.state.track_name&&e.push((0,r.default)(\"div\",\"track_name: \"+this.state.track_name)),0!==e.length)return(0,r.default)(\".pf-slice-source-details\",e)}nodeSpecificModify(){return(0,r.default)(\"\",(0,r.default)(\".pf-slice-source-box\",(0,r.default)(\".pf-slice-source-label\",(0,r.default)(\"span\",\"Slice name\"),(0,r.default)(o.TextInput,{id:\"slice_name_glob\",type:\"string\",value:this.state.slice_name??\"\",placeholder:\"MySlice*\",oninput:e=>{e.target&&(this.state.slice_name=e.target.value.trim())}})),(0,r.default)(\".pf-slice-source-label\",(0,r.default)(\"span\",\"Thread name\"),(0,r.default)(o.TextInput,{id:\"thread_name_glob\",type:\"string\",value:this.state.thread_name??\"\",placeholder:\"RenderThread\",oninput:e=>{e.target&&(this.state.thread_name=e.target.value.trim())}})),(0,r.default)(\".pf-slice-source-label\",(0,r.default)(\"span\",\"Process name\"),(0,r.default)(o.TextInput,{id:\"process_name_glob\",type:\"string\",value:this.state.process_name??\"\",placeholder:\"*chrome*\",oninput:e=>{e.target&&(this.state.process_name=e.target.value.trim())}})),(0,r.default)(\".pf-slice-source-label\",(0,r.default)(\"span\",\"Track name\"),(0,r.default)(o.TextInput,{id:\"track_name_glob\",type:\"string\",value:this.state.track_name??\"\",placeholder:\"SurfaceFlinger\",oninput:e=>{e.target&&(this.state.track_name=e.target.value.trim())}}))),(0,r.default)(l.FilterOperation,{filters:this.state.filters,sourceCols:this.sourceCols,onFiltersChanged:e=>{this.state.filters=e,this.state.onchange?.()}}))}}function t(t){return[{name:\"id\",type:{name:\"ID(slice.id)\",shortName:\"id\",tableAndColumn:new s.TableAndColumnImpl(\"string\",\"id\")}},{name:\"ts\",type:{name:\"TIMESTAMP\",shortName:\"TIMESTAMP\"}},{name:\"dur\",type:{name:\"DURATION\",shortName:\"DURATION\"}},{name:\"slice_name\",type:{name:\"STRING\",shortName:\"STRING\"}},{name:\"thread_name\",type:{name:\"STRING\",shortName:\"STRING\"}},{name:\"process_name\",type:{name:\"STRING\",shortName:\"STRING\"}},{name:\"track_name\",type:{name:\"STRING\",shortName:\"STRING\"}}].map(e=>(0,a.columnInfoFromSqlColumn)(e,t))}oM.SlicesSourceNode=c}return oM}var lM,cM={};function uM(){if(!lM){lM=1,Object.defineProperty(cM,\"__esModule\",{value:!0}),cM.ModifyColumnsNode=void 0;var e=Jr;const a=e.__importDefault(xe()),t=zI(),n=sm(),i=Vl(),r=qI(),c=e.__importDefault(dh()),u=CN();cM.ModifyColumnsNode=class o{nodeId;type=t.NodeType.kModifyColumns;prevNodes;nextNodes;sourceCols;state;constructor(e){this.nodeId=(0,t.nextNodeId)(),this.sourceCols=0<e.prevNodes.length?e.prevNodes[0].finalCols:[],0===e.selectedColumns.length&&0<this.sourceCols.length&&(e.selectedColumns=(0,r.newColumnInfoList)(this.sourceCols)),this.prevNodes=e.prevNodes,this.nextNodes=[],this.state=e}onPrevNodesUpdated(){this.sourceCols=0<this.state.prevNodes.length?this.state.prevNodes[0].finalCols:[],0===this.state.selectedColumns.length&&0<this.sourceCols.length&&(this.state.selectedColumns=(0,r.newColumnInfoList)(this.sourceCols))}static deserializeState(t,e){var r=e.prevNodeIds.map(e=>t.get(e));return{...e,prevNodes:r}}get finalCols(){const t=(0,r.newColumnInfoList)(this.state.selectedColumns.filter(e=>e.checked));return this.state.newColumns.forEach(e=>{t.push((0,r.columnInfoFromName)(e.name,!0))}),t}validate(){var e=new Set;for(const n of this.state.selectedColumns)if(n.checked){var t=n.alias?n.alias.trim():n.column.name;if(n.alias&&\"\"===t)return!1;if(e.has(t))return!1;e.add(t)}for(const a of this.state.newColumns){var r=a.name.trim();if(\"\"!==a.expression.trim()){if(\"\"===r)return!1;if(e.has(r))return!1;e.add(r)}}return!0}getTitle(){return this.state.customTitle??\"Modify Columns\"}nodeSpecificModify(){return(0,a.default)(\"div\",(0,a.default)(\"div.pf-column-list\",this.state.selectedColumns.map((t,r)=>(0,a.default)(\".pf-column\",{draggable:!0,ondragstart:e=>{e.dataTransfer.setData(\"text/plain\",r.toString())},ondragover:e=>{e.preventDefault()},ondrop:e=>{e.preventDefault();var e=parseInt(e.dataTransfer.getData(\"text/plain\"),10),t=r,[e]=this.state.selectedColumns.splice(e,1);this.state.selectedColumns.splice(t,0,e)}},(0,a.default)(n.Checkbox,{checked:t.checked,label:t.column.name,onchange:e=>{t.checked=e.target.checked}}),(0,a.default)(i.TextInput,{oninput:e=>{t.alias=e.target.value},placeholder:\"alias\",value:t.alias||\"\"})))),this.state.newColumns.map((t,n)=>(0,a.default)(\".pf-column\",{draggable:!0,ondragstart:e=>{e.dataTransfer.setData(\"text/plain\",(this.state.selectedColumns.length+n).toString())},ondragover:e=>{e.preventDefault()},ondrop:e=>{e.preventDefault();var t,e=parseInt(e.dataTransfer.getData(\"text/plain\"),10),r=this.state.selectedColumns.length+n;e<this.state.selectedColumns.length?([t]=this.state.selectedColumns.splice(e,1),this.state.newColumns.splice(r-this.state.selectedColumns.length,0,{expression:t.column.name,name:t.alias||\"\"})):([t]=this.state.newColumns.splice(e-this.state.selectedColumns.length,1),this.state.newColumns.splice(r-this.state.selectedColumns.length,0,t))}},(0,a.default)(i.TextInput,{oninput:e=>{t.expression=e.target.value},placeholder:\"expression\",value:t.expression}),(0,a.default)(i.TextInput,{oninput:e=>{t.name=e.target.value},placeholder:\"name\",value:t.name}),(0,a.default)(\"button\",{onclick:()=>{this.state.newColumns.splice(n,1)}},\"Remove\"))),(0,a.default)(\"button.pf-add-column-button\",{onclick:()=>{this.state.newColumns.push({expression:\"\",name:\"\"})}},\"Add column\"),(0,a.default)(u.FilterOperation,{filters:this.state.filters,sourceCols:this.finalCols,onFiltersChanged:e=>{this.state.filters=e,this.state.onchange?.()}}))}clone(){return new o(this.state)}getStructuredQuery(){var e,t=[],r=[];for(const s of this.state.selectedColumns)s.checked&&((e=new c.default.PerfettoSqlStructuredQuery.SelectColumn).columnNameOrExpression=s.column.name,s.alias&&(e.alias=s.alias),t.push(e));for(const l of this.state.newColumns){var n=new c.default.PerfettoSqlStructuredQuery.SelectColumn;n.columnNameOrExpression=l.expression,n.alias=l.name,t.push(n),l.module&&r.push(l.module)}if(this.prevNodes&&0!==this.prevNodes.length){var a,i,o=this.prevNodes[0].getStructuredQuery();if(o)return o.selectColumns=t,0<r.length&&(o.referencedModules=r),(a=(0,u.createFiltersProto)(this.state.filters,this.finalCols))?((i=new c.default.PerfettoSqlStructuredQuery).id=this.nodeId,i.innerQuery=o,i.filters=a,i):o}}isMaterialised(){return!1}serializeState(){return{prevNodeIds:this.prevNodes.map(e=>e.nodeId),newColumns:this.state.newColumns,selectedColumns:this.state.selectedColumns,filters:this.state.filters,customTitle:this.state.customTitle}}}}return cM}var dM,pM={};function fM(){if(dM)return pM;dM=1,Object.defineProperty(pM,\"__esModule\",{value:!0}),pM.IntervalIntersectNode=void 0;var e=Jr;const a=e.__importDefault(xe()),t=zI(),n=e.__importDefault(dh()),r=qI(),i=je(),o=Kl(),s=Bl(),l=DN();pM.IntervalIntersectNode=class u{nodeId;type=t.NodeType.kIntervalIntersect;prevNodes;nextNodes;state;meterialisedAs;get sourceCols(){return this.prevNodes[0]?.finalCols??this.prevNodes[0]?.sourceCols??[]}get finalCols(){return(0,r.newColumnInfoList)(this.sourceCols,!0)}constructor(e){this.nodeId=(0,t.nextNodeId)(),this.state={...e},this.prevNodes=e.prevNodes,this.nextNodes=[]}validate(){if(1!==this.prevNodes.length)return this.state.issues||(this.state.issues=new l.NodeIssues),this.state.issues.queryError=new Error(\"Interval intersect node requires one base source node.\"),!1;if(1!==this.state.intervalNodes.length)return this.state.issues||(this.state.issues=new l.NodeIssues),this.state.issues.queryError=new Error(\"Interval intersect node requires one interval source to be selected.\"),!1;if(this.state.issues&&(this.state.issues.queryError=void 0),!this.prevNodes[0].validate())return this.state.issues||(this.state.issues=new l.NodeIssues),this.state.issues.queryError=this.prevNodes[0].state.issues?.queryError??new Error(`Previous node '${this.prevNodes[0].getTitle()}' is invalid`),!1;var e=(e,t)=>{const r=new Set(e.finalCols.map(e=>e.name));return!(0<(t=t.filter(e=>!r.has(e))).length&&(this.state.issues||(this.state.issues=new l.NodeIssues),this.state.issues.queryError=new Error(`Node '${e.getTitle()}' is missing required columns: `+t.join(\", \")),1))};if(!e(this.prevNodes[0],[\"id\",\"ts\",\"dur\"]))return!1;for(const t of this.state.intervalNodes){if(!t.validate())return this.state.issues||(this.state.issues=new l.NodeIssues),this.state.issues.queryError=t.state.issues?.queryError??new Error(`Interval node '${t.getTitle()}' is invalid`),!1;if(!e(t,[\"id\",\"ts\",\"dur\"]))return!1}return!0}getTitle(){return this.state.customTitle??\"Interval Intersect\"}nodeSpecificModify(e){return(0,a.default)(c,{node:this,onExecute:e})}clone(){var e={prevNodes:this.state.prevNodes,allNodes:this.state.allNodes,intervalNodes:[...this.state.intervalNodes],filters:[],customTitle:this.state.customTitle,onchange:this.state.onchange,onExecute:this.state.onExecute};return new u(e)}isMaterialised(){return!0===this.state.isExecuted&&void 0!==this.meterialisedAs}getStructuredQuery(){if(this.validate()){var e=this.prevNodes[0].getStructuredQuery();if(void 0!==e){var t,r=this.state.intervalNodes.map(e=>e.getStructuredQuery());if(!r.some(e=>void 0===e))return(t=new n.default.PerfettoSqlStructuredQuery).id=this.nodeId,t.intervalIntersect=new n.default.PerfettoSqlStructuredQuery.IntervalIntersect,t.intervalIntersect.base=e,t.intervalIntersect.intervalIntersect=r,t}}}serializeState(){return{intervalNodes:this.state.intervalNodes.map(e=>e.nodeId),filters:this.state.filters,customTitle:this.state.customTitle}}static deserializeState(t,e){return{intervalNodes:e.intervalNodes.map(e=>t.get(e)).filter(e=>void 0!==e)}}};class c{view({attrs:e}){const{node:n,onExecute:t}=e,r=(n.validate(),n.state.allNodes.filter(e=>e!==n&&!n.state.intervalNodes.includes(e)&&!n.prevNodes.includes(e)));e=n.state.issues?.queryError;return(0,a.default)(\".pf-exp-query-operations\",e&&(0,a.default)(o.Callout,{icon:\"error\"},e.message),(0,a.default)(\".pf-exp-section\",(0,a.default)(\".pf-exp-operations-container\",(0,a.default)(\"h2\",\"Interval Intersect\"),n.state.intervalNodes.map((e,r)=>(0,a.default)(\".pf-exp-interval-node\",(0,a.default)(\"span\",`Interval ${r+1}: `+e.getTitle()),(0,a.default)(i.Button,{icon:\"delete\",onclick:()=>{var e=n.state.intervalNodes[r],t=e.nextNodes.indexOf(n);-1<t&&e.nextNodes.splice(t,1),n.state.intervalNodes.splice(r,1),n.state.onchange?.()}}))),0===n.state.intervalNodes.length&&(0,a.default)(\".pf-exp-add-interval\",(0,a.default)(s.Select,{onchange:e=>{const t=e.target.value;e=r.find(e=>e.nodeId===t);e&&(n.state.intervalNodes.push(e),e.nextNodes.push(n),n.state.onchange?.())}},(0,a.default)(\"option\",{disabled:!0,selected:!0},\"Select a source\"),r.map(e=>(0,a.default)(\"option\",{value:e.nodeId},e.getTitle())))),(0,a.default)(i.Button,{label:\"Run\",onclick:t}))))}}return pM}var hM,mM={};function gM(){if(!hM){hM=1,Object.defineProperty(mM,\"__esModule\",{value:!0}),mM.serializeState=i,mM.exportStateAsJson=function(e,t){var e=i(e),e=new Blob([e],{type:\"application/json\"}),e=URL.createObjectURL(e),r=document.createElement(\"a\"),t=(r.href=e,t.traceInfo.traceTitle.replace(/[^a-zA-Z0-9._-]+/g,\"_\")),n=(new Date).toISOString().slice(0,10);r.download=t+`-graph-${n}.json`,r.click(),URL.revokeObjectURL(e)},mM.deserializeState=o,mM.importStateFromJson=function(e,t,r,n){var a=new FileReader;a.onload=e=>{e=e.target?.result;if(!e)throw new Error(\"The selected file is empty or could not be read.\");e=o(e,t,r);n(e)},a.readAsText(e)};const u=zI(),d=eM(),p=sM(),f=gN(),h=xN(),m=uM(),g=fM();function a(e){if(\"function\"!=typeof e.serializeState)throw new Error(`Node type ${e.type} is not serializable.`);var t=e.serializeState();return{nodeId:e.nodeId,type:e.type,state:t,nextNodes:e.nextNodes.map(e=>e.nodeId),prevNodes:e.prevNodes?e.prevNodes.map(e=>e.nodeId):[]}}function i(e){for(var t=new Map,r=[...e.rootNodes];0<r.length;){var n=r.shift();t.has(n.nodeId)||(t.set(n.nodeId,n),r.push(...n.nextNodes))}e={nodes:Array.from(t.values()).map(a),rootNodeIds:e.rootNodes.map(e=>e.nodeId),selectedNodeId:e.selectedNode?.nodeId,nodeLayouts:Object.fromEntries(e.nodeLayouts)};return JSON.stringify(e,(e,t)=>\"bigint\"==typeof t?t.toString():t,2)}function o(e,t,r){e=JSON.parse(e);if(null==e||\"object\"!=typeof e||!Array.isArray(e.nodes)||!Array.isArray(e.rootNodeIds)||null==e.nodeLayouts||\"object\"!=typeof e.nodeLayouts)throw new Error(\"Invalid file format. The selected file is not a valid Perfetto graph.\");const n=new Map;for(const o of e.nodes){var a=function(e,t,r){var n=e[\"state\"];switch(e.type){case u.NodeType.kTable:return new d.TableSourceNode(d.TableSourceNode.deserializeState(t,r,n));case u.NodeType.kSimpleSlices:return new p.SlicesSourceNode(n);case u.NodeType.kSqlSource:return new f.SqlSourceNode({...n,trace:t});case u.NodeType.kAggregation:return new h.AggregationNode(h.AggregationNode.deserializeState(n));case u.NodeType.kModifyColumns:return new m.ModifyColumnsNode({...n,prevNodes:[]});case u.NodeType.kIntervalIntersect:var a={...n,intervalNodes:[],prevNodes:[],allNodes:[]};return new g.IntervalIntersectNode(a);default:throw new Error(\"Unknown node type: \"+e.type)}}(o,t,r);a.nodeId=o.nodeId,n.set(o.nodeId,a)}for(const s of e.nodes){var i=n.get(s.nodeId);if(!i)throw new Error(`Graph is corrupted. Node with ID \"${s.nodeId}\" was serialized but not instantiated.`);if(i.nextNodes=s.nextNodes.map(e=>{var t=n.get(e);if(null==t)throw new Error(`Graph is corrupted. Node \"${e}\" not found.`);return t}),void 0!==s.prevNodes&&0<s.prevNodes.length)i.prevNodes=s.prevNodes.map(e=>{var t=n.get(e);if(null==t)throw new Error(`Graph is corrupted. Node \"${e}\" not found.`);return t});else for(const l of i.nextNodes)null==l.prevNodes&&(l.prevNodes=[]),l.prevNodes.push(i);s.type===u.NodeType.kIntervalIntersect&&(i.state.intervalNodes=g.IntervalIntersectNode.deserializeState(n,s.state).intervalNodes)}for(const c of n.values())c.type===u.NodeType.kAggregation&&c.resolveColumns();return{rootNodes:e.rootNodeIds.map(e=>{var t=n.get(e);if(null==t)throw new Error(`Graph is corrupted. Root node \"${e}\" not found.`);return t}),selectedNode:e.selectedNodeId?n.get(e.selectedNodeId):void 0,nodeLayouts:new Map(Object.entries(e.nodeLayouts))}}}return mM}var _M,yM,TM,vM={};function bM(){if(!_M){_M=1,Object.defineProperty(vM,\"__esModule\",{value:!0}),vM.showImportWithStatementModal=function(t,r,n){let a=\"\";(0,o.showModal)({title:\"Import from WITH statement\",content:(0,c.default)(\"div\",{style:{\"border-top\":\"1px solid var(--pf-color-border)\",\"min-height\":\"10rem\",overflow:\"hidden auto\"}},(0,c.default)(s.Editor,{text:a,onUpdate:e=>{a=e}})),buttons:[{text:\"Import\",action:()=>{var e=i(a),e=(0,l.deserializeState)(e,t,r);n(e),(0,o.closeModal)()}},{text:\"Cancel\",action:()=>{(0,o.closeModal)()}}]})},vM.createGraphFromSql=i;var e=Jr;const f=zI(),o=Ke(),s=lN(),l=gM(),c=e.__importDefault(xe());function p(e){var t=[],r=e.split(\"\\n\");let n=-1;for(let e=0;e<r.length;e++){var a=r[e].trim();if(a.toUpperCase().startsWith(\"PERFETTO INCLUDE MODULE\"))t.push(a),n=e;else if(\"\"!==a&&!a.startsWith(\"--\"))break}return{nodes:function(o){var s=[],l=o.toUpperCase(),c=l.indexOf(\"WITH\");if(-1!==c){let t=0,r=-1;for(let e=c+4;e<o.length;e++)if(\"(\"===o[e])t++;else if(\")\"===o[e])t--;else if(0===t&&l.substring(e).startsWith(\"SELECT\")){r=e;break}if(-1===r)throw new Error(\"Malformed SQL: No SELECT statement found after WITH clause.\");var u=o.substring(c+4,r).trim();let n=t=0;var d=[];for(let e=0;e<u.length;e++)\"(\"===u[e]?t++:\")\"===u[e]?t--:\",\"===u[e]&&0===t&&(d.push(u.substring(n,e)),n=e+1);d.push(u.substring(n));for(const T of d){var p=T.trim().match(/([a-zA-Z0-9_]+)\\s+AS\\s+\\((.*)\\)/is);if(!p)throw new Error(\"Malformed CTE clause: \"+T);var f=p[1].trim();let e=p[2].trim();var h=[];for(const v of s){var m=new RegExp(`\\\\b${v.name}\\\\b`,\"g\");e.match(m)&&(h.push(v.name),e=e.replace(m,\"$\"+v.name))}s.push({name:f,query:e,dependencies:h})}let e=o.substring(r).trim();var g=[];for(const b of s){var _=new RegExp(`\\\\b${b.name}\\\\b`,\"g\");e.match(_)&&(g.push(b.name),e=e.replace(_,\"$\"+b.name))}let a=\"output\",i=1;for(var y=new Set(s.map(e=>e.name));y.has(a);)a=\"output_\"+i,i++;s.push({name:a,query:e,dependencies:g})}return s}(r.slice(n+1).join(\"\\n\")),modules:t.join(\"\\n\")}}function i(e){var{nodes:e,modules:t}=p(e),r=[],n=[],a=new Map;for(const c of e){var i=c.name,o={nodeId:i,type:f.NodeType.kSqlSource,state:{sql:c.query,filters:[],customTitle:i},nextNodes:[],prevNodes:[]};r.push(o),a.set(i,o)}for(const u of e){var s=a.get(u.name);for(const d of u.dependencies){var l=a.get(d);l.nextNodes.push(s.nodeId),s.prevNodes.push(l.nodeId)}0===u.dependencies.length&&n.push(s.nodeId)}return t&&0<n.length&&(e=a.get(n[0])).type===f.NodeType.kSqlSource&&((e=e.state).sql=t+`\n`+e.sql),JSON.stringify({nodes:r,rootNodeIds:n,nodeLayouts:{}},null,2)}}return vM}function EM(){if(!TM){TM=1,Object.defineProperty(wI,\"__esModule\",{value:!0});var e=Jr;const t=e.__importDefault(xe()),r=e.__importDefault(FI()),n=function(){if(!yM){yM=1,Object.defineProperty(jI,\"__esModule\",{value:!0}),jI.ExplorePage=void 0;const n=Jr.__importDefault(xe()),i=aM(),o=eM(),a=sM(),s=gN(),l=xN(),c=uM(),u=fM(),d=gM(),p=bM();jI.ExplorePage=class{selectNode(e,t){e.onStateUpdate({...e.state,selectedNode:t})}deselectNode(e){e.onStateUpdate({...e.state,selectedNode:void 0})}async handleAddStdlibTableSource(e){var t,{trace:r,state:n,onStateUpdate:a}=e,e=e.sqlModulesPlugin.getSqlModules();e&&(t=await(0,o.modalForTableSelection)(e))&&(r=new o.TableSourceNode({trace:r,sqlModules:e,sqlTable:t.sqlTable,filters:[]}),a({...n,rootNodes:[...n.rootNodes,r],selectedNode:r}))}handleAddAggregation(e,t){var{state:e,onStateUpdate:r}=e,n=new l.AggregationNode({prevNodes:[t],groupByColumns:[],aggregations:[],filters:[]});t.nextNodes.push(n),r({...e,selectedNode:n})}handleAddModifyColumns(e,t){var{state:e,onStateUpdate:r}=e,n=new c.ModifyColumnsNode({prevNodes:[t],newColumns:[],selectedColumns:[],filters:[]});t.nextNodes.push(n),r({...e,selectedNode:n})}handleAddIntervalIntersect(e,t){var{state:e,onStateUpdate:r}=e,n=new u.IntervalIntersectNode({prevNodes:[t],allNodes:e.rootNodes,intervalNodes:[],filters:[]});t.nextNodes.push(n),r({...e,selectedNode:n})}handleAddSlicesSource(e){var{state:e,onStateUpdate:t}=e,r=new a.SlicesSourceNode({filters:[]});t({...e,rootNodes:[...e.rootNodes,r],selectedNode:r})}handleAddSqlSource(e){var{state:t,onStateUpdate:r}=e,e=new s.SqlSourceNode({trace:e.trace,filters:[]});r({...t,rootNodes:[...t.rootNodes,e],selectedNode:e})}handleClearAllNodes(e){e.onStateUpdate({...e.state,rootNodes:[],selectedNode:void 0})}handleDuplicateNode(e,t){var{state:e,onStateUpdate:r}=e;r({...e,rootNodes:[...e.rootNodes,t.clone()]})}handleDeleteNode(e,t){var{state:e,onStateUpdate:r}=e,n=e.rootNodes.filter(e=>e!==t);if(t.prevNodes)for(const o of t.prevNodes){var a=o.nextNodes.indexOf(t);-1!==a&&o.nextNodes.splice(a,1)}var i=e.selectedNode===t?void 0:e.selectedNode;r({...e,rootNodes:n,selectedNode:i})}handleExport(e,t){(0,d.exportStateAsJson)(e,t)}handleImport(e){const{trace:t,sqlModulesPlugin:r,onStateUpdate:n}=e,a=r.getSqlModules();a&&((e=document.createElement(\"input\")).type=\"file\",e.accept=\".json\",e.onchange=e=>{var e=e.target.files;e&&0<e.length&&(e=e[0],(0,d.importStateFromJson)(e,t,a,e=>{n(e)}))},e.click())}handleKeyDown(e,t){var r=t[\"state\"];if(!r.selectedNode&&!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement))switch(e.key){case\"q\":this.handleAddSqlSource(t);break;case\"t\":this.handleAddStdlibTableSource(t);break;case\"s\":this.handleAddSlicesSource(t);break;case\"i\":this.handleImport(t);break;case\"e\":this.handleExport(t.state,t.trace)}}handleImportWithStatement(e){var{trace:e,sqlModulesPlugin:t,onStateUpdate:r}=e,t=t.getSqlModules();t&&(0,p.showImportWithStatementModal)(e,t,r)}view({attrs:a}){const{trace:e,state:r}=a;var t=a.sqlModulesPlugin.getSqlModules();return t?(0,n.default)(\".pf-explore-page\",{onkeydown:e=>this.handleKeyDown(e,a),oncreate:e=>{e.dom.focus()},tabindex:0},(0,n.default)(i.Builder,{trace:e,sqlModules:t,rootNodes:r.rootNodes,selectedNode:r.selectedNode,nodeLayouts:r.nodeLayouts,onRootNodeCreated:e=>{a.onStateUpdate({...r,rootNodes:[...r.rootNodes,e]})},onNodeSelected:e=>{e&&this.selectNode(a,e)},onDeselect:()=>this.deselectNode(a),onNodeLayoutChange:(r,n)=>{a.onStateUpdate(e=>{var t=new Map(e.nodeLayouts);return t.set(r,n),{...e,nodeLayouts:t}})},onAddStdlibTableSource:()=>this.handleAddStdlibTableSource(a),onAddSlicesSource:()=>this.handleAddSlicesSource(a),onAddSqlSource:()=>this.handleAddSqlSource(a),onClearAllNodes:()=>this.handleClearAllNodes(a),onDuplicateNode:()=>{r.selectedNode&&this.handleDuplicateNode(a,r.selectedNode)},onDeleteNode:()=>{r.selectedNode&&this.handleDeleteNode(a,r.selectedNode)},onAddAggregationNode:()=>{r.selectedNode&&this.handleAddAggregation(a,r.selectedNode)},onAddModifyColumnsNode:()=>{r.selectedNode&&this.handleAddModifyColumns(a,r.selectedNode)},onAddIntervalIntersectNode:()=>{r.selectedNode&&this.handleAddIntervalIntersect(a,r.selectedNode)},onImport:()=>this.handleImport(a),onImportWithStatement:()=>this.handleImportWithStatement(a),onExport:()=>this.handleExport(r,e),onRemoveFilter:(e,t)=>{t=e.state.filters.indexOf(t);-1<t&&e.state.filters.splice(t,1),a.onStateUpdate({...r})}})):(0,n.default)(\".pf-explore-page\",(0,n.default)(\".pf-explore-page__header\",(0,n.default)(\"h1\",\"Loading SQL Modules, please wait...\")))}}}return jI}();class a{static id=\"dev.perfetto.ExplorePage\";static dependencies=[r.default];state={rootNodes:[],nodeLayouts:new Map};onStateUpdate=e=>{this.state=\"function\"==typeof e?e(this.state):e,t.default.redraw()};async onTraceLoad(e){e.pages.registerPage({route:\"/explore\",render:()=>(0,t.default)(n.ExplorePage,{trace:e,state:this.state,sqlModulesPlugin:e.plugins.getPlugin(r.default),onStateUpdate:this.onStateUpdate})}),e.sidebar.addMenuItem({section:\"current_trace\",text:\"Explore\",href:\"#!/explore\",icon:\"data_exploration\"})}}wI.default=a}return wI}var SM,AM={},OM={};function CM(){if(!SM){SM=1,Object.defineProperty(OM,\"__esModule\",{value:!0}),OM.createActualFramesTrack=function(e,t,r,n){return new o.DatasetSliceTrack({trace:e,uri:t,dataset:new i.SourceDataset({src:\"actual_frame_timeline_slice\",schema:{id:a.NUM,name:a.STR,ts:a.LONG,dur:a.LONG,jank_type:a.STR,jank_tag:a.STR_NULL,jank_severity_type:a.STR_NULL},filter:{col:\"track_id\",in:n}}),colorizer:e=>{var t=e.jank_tag;if(\"Partial\"===e.jank_severity_type)switch(t){case\"Self Jank\":return m;case\"Other Jank\":return f;case\"Dropped Frame\":return c;case\"Buffer Stuffing\":case\"SurfaceFlinger Stuffing\":return _;case\"No Jank\":return d;default:return T}else switch(t){case\"Self Jank\":return h;case\"Other Jank\":return p;case\"Dropped Frame\":return l;case\"Buffer Stuffing\":case\"SurfaceFlinger Stuffing\":return g;case\"No Jank\":return u;default:return y}},initialMaxDepth:r,rootTableName:\"slice\",detailsPanel:()=>new s.ThreadSliceDetailsPanel(e)})};var e=Ao(),t=He();const a=Ue(),i=ze(),o=Ge(),s=Qh(),l=(0,t.makeColorScheme)(new e.HSLColor(\"#03A9F4\")),c=(0,t.makeColorScheme)(new e.HSLColor(\"#90CAF9\")),u=(0,t.makeColorScheme)(new e.HSLColor(\"#4CAF50\")),d=(0,t.makeColorScheme)(new e.HSLColor(\"#A5D6A7\")),p=(0,t.makeColorScheme)(new e.HSLColor(\"#FFEB3B\")),f=(0,t.makeColorScheme)(new e.HSLColor(\"#FFF9C4\")),h=(0,t.makeColorScheme)(new e.HSLColor(\"#FF5722\")),m=(0,t.makeColorScheme)(new e.HSLColor(\"#EF9A9A\")),g=(0,t.makeColorScheme)(new e.HSLColor(\"#C0D588\")),_=(0,t.makeColorScheme)(new e.HSLColor(\"#DCEDC8\")),y=(0,t.makeColorScheme)(new e.HSLColor(\"#F515E0\")),T=(0,t.makeColorScheme)(new e.HSLColor(\"#F48FB1\"))}return OM}var wM,kM={};function IM(){if(!wM){wM=1,Object.defineProperty(kM,\"__esModule\",{value:!0}),kM.createExpectedFramesTrack=function(e,t,r,n){return new o.DatasetSliceTrack({trace:e,uri:t,initialMaxDepth:r,rootTableName:\"slice\",dataset:new a.SourceDataset({src:\"expected_frame_timeline_slice\",schema:{ts:i.LONG,dur:i.LONG,name:i.STR,id:i.NUM},filter:{col:\"track_id\",in:n}}),colorizer:()=>l,detailsPanel:()=>new s.ThreadSliceDetailsPanel(e)})};var e=Ao(),t=He();const a=ze(),i=Ue(),o=Ge(),s=Qh(),l=(0,t.makeColorScheme)(new e.HSLColor(\"#4CAF50\"))}return kM}var RM,NM,MM={};function PM(){if(!NM){NM=1,Object.defineProperty(AM,\"__esModule\",{value:!0});var e=Jr;const t=uu(),l=We(),c=Ue(),u=e.__importDefault(Vc()),d=CM(),p=IM(),f=function(){if(!RM){RM=1;{var e=MM;Object.defineProperty(e,\"__esModule\",{value:!0}),e.FrameSelectionAggregator=e.ACTUAL_FRAMES_SLICE_TRACK_KIND=void 0;const i=Jr,o=uu(),t=Ue();e.ACTUAL_FRAMES_SLICE_TRACK_KIND=\"ActualFramesSliceTrack\";e.FrameSelectionAggregator=class{id=\"frame_aggregation\";probe(n){const a=(0,o.selectTracksAndGetDataset)(n.tracks,{id:t.NUM,ts:t.LONG,dur:t.LONG,jank_type:t.STR},e.ACTUAL_FRAMES_SLICE_TRACK_KIND);if(a)return{prepareData:async e=>{var t={stack:[],error:void 0,hasError:!1};try{var r=i.__addDisposableResource(t,await(0,o.createIITable)(e,a,n.start,n.end),!0);return await e.query(`\n          create or replace perfetto table ${this.id} as\n          select\n            jank_type,\n            count(1) as occurrences,\n            min(dur) as minDur,\n            avg(dur) as meanDur,\n            max(dur) as maxDur\n          from (${r.name})\n          group by jank_type\n        `),{tableName:this.id}}catch(e){t.error=e,t.hasError=!0}finally{e=i.__disposeResources(t);e&&await e}}}}getTabName(){return\"Frames\"}getDefaultSorting(){return{column:\"occurrences\",direction:\"DESC\"}}getColumnDefinitions(){return[{title:\"Jank Type\",columnId:\"jank_type\"},{title:\"Min duration\",formatHint:\"DURATION_NS\",columnId:\"minDur\"},{title:\"Max duration\",formatHint:\"DURATION_NS\",columnId:\"maxDur\"},{title:\"Mean duration\",formatHint:\"DURATION_NS\",columnId:\"meanDur\"},{title:\"Occurrences\",columnId:\"occurrences\",sum:!0}]}}}}return MM}();class r{static id=\"dev.perfetto.Frames\";static dependencies=[u.default];async onTraceLoad(e){this.addExpectedFrames(e),this.addActualFrames(e),e.selection.registerAreaSelectionTab((0,t.createAggregationTab)(e,new f.FrameSelectionAggregator,10))}async addExpectedFrames(e){for(var t=e[\"engine\"],r=(await t.query(`\n      with summary as (\n        select\n          pt.upid,\n          group_concat(id) AS track_ids,\n          count() AS track_count\n        from process_track pt\n        join _slice_track_summary USING (id)\n        where pt.type = 'android_expected_frame_timeline'\n        group by pt.upid\n      )\n      select\n        t.upid,\n        t.track_ids as trackIds,\n        __max_layout_depth(t.track_count, t.track_ids) as maxDepth\n      from summary t\n    `)).iter({upid:c.NUM,trackIds:c.STR,maxDepth:c.NUM});r.valid();r.next()){var n=r.upid,a=r.trackIds.split(\",\").map(e=>Number(e)),i=r.maxDepth,o=s(n,\"expected_frames\"),i=(e.tracks.registerTrack({uri:o,renderer:(0,p.createExpectedFramesTrack)(e,o,i,a),tags:{trackIds:a,upid:n}}),e.plugins.getPlugin(u.default).getGroupForProcess(n)),a=new l.TrackNode({uri:o,name:\"Expected Timeline\",sortOrder:-50});i?.addChildInOrder(a)}}async addActualFrames(e){for(var t=e[\"engine\"],r=(await t.query(`\n      with summary as (\n        select\n          pt.upid,\n          group_concat(id) AS track_ids,\n          count() AS track_count\n        from process_track pt\n        join _slice_track_summary USING (id)\n        where pt.type = 'android_actual_frame_timeline'\n        group by pt.upid\n      )\n      select\n        t.upid,\n        t.track_ids as trackIds,\n        __max_layout_depth(t.track_count, t.track_ids) as maxDepth\n      from summary t\n    `)).iter({upid:c.NUM,trackIds:c.STR,maxDepth:c.NUM});r.valid();r.next()){var n=r.upid,a=r.trackIds.split(\",\").map(e=>Number(e)),i=r.maxDepth,o=s(n,\"actual_frames\"),i=(e.tracks.registerTrack({uri:o,renderer:(0,d.createActualFramesTrack)(e,o,i,a),tags:{upid:n,trackIds:a,kind:f.ACTUAL_FRAMES_SLICE_TRACK_KIND}}),e.plugins.getPlugin(u.default).getGroupForProcess(n)),a=new l.TrackNode({uri:o,name:\"Actual Timeline\",sortOrder:-50});i?.addChildInOrder(a)}}}function s(e,t){return`/process_${e}/`+t}AM.default=r}return AM}var DM,xM={},LM={};function FM(){if(!DM){DM=1,Object.defineProperty(LM,\"__esModule\",{value:!0}),LM.FtraceExplorer=void 0;const s=Jr.__importDefault(xe());var e=Qc();const r=hu(),u=Fe(),l=He(),c=Ns(),d=Ue(),a=je(),t=qe(),i=lm(),o=yi(),n=mm();LM.FtraceExplorer=class{trace;pagination={offset:0,count:0};monitor;queryLimiter=new e.AsyncLimiter;data;constructor({attrs:t}){this.trace=t.trace,this.monitor=new r.Monitor([()=>t.trace.timeline.visibleWindow.toTimeSpan().start,()=>t.trace.timeline.visibleWindow.toTimeSpan().end,()=>t.filterStore.state]),\"blank\"===t.cache.state&&(async function(e){var t=[],r=(await e.query(`\n    select\n      name,\n      count(1) as cnt\n    from ftrace_event\n    group by name\n    order by cnt desc\n  `)).iter({name:d.STR,cnt:d.NUM});for(let e=0;r.valid();r.next(),e++)t.push({name:r.name,count:r.cnt});return t}(t.trace.engine).then(e=>{t.cache.counters=e,t.cache.state=\"valid\"}).catch(()=>{t.cache.state=\"blank\"}),t.cache.state=\"loading\")}view({attrs:r}){return this.monitor.ifStateChanged(()=>{this.reloadData(r)}),(0,s.default)(t.DetailsShell,{title:this.renderTitle(),buttons:this.renderFilterPanel(r),fillParent:!0},(0,s.default)(n.VirtualTable,{className:\"pf-ftrace-explorer\",columns:[{header:\"ID\",width:\"5em\"},{header:\"Timestamp\",width:\"13em\"},{header:\"Name\",width:\"24em\"},{header:\"CPU\",width:\"3em\"},{header:\"Process\",width:\"24em\"},{header:\"Args\",width:\"200em\"}],firstRowOffset:this.data?.offset??0,numRows:this.data?.numEvents??0,rowHeight:20,rows:this.renderData(),onReload:(e,t)=>{this.pagination={offset:e,count:t},this.reloadData(r)},onRowHover:t=>{var e=this.data?.events.find(e=>e.id===t);e&&(r.trace.timeline.hoverCursorTimestamp=e.ts)},onRowOut:()=>{r.trace.timeline.hoverCursorTimestamp=void 0}}))}reloadData(e){this.queryLimiter.schedule(async()=>{this.data=await async function(e,t,r,n){var{start:a,end:i}=e.timeline.visibleWindow.toTimeSpan(),n=n.excludeList,n=n.map(e=>`'${e}'`).join(\",\");let o=await e.engine.query(`\n    select count(id) as numEvents\n    from ftrace_event\n    where\n      ftrace_event.name not in (${n}) and\n      ts >= ${a} and ts <= ${i}\n    `);var s=o.firstRow({numEvents:d.NUM})[\"numEvents\"],l=(o=await e.engine.query(`\n    select\n      ftrace_event.id as id,\n      ftrace_event.ts as ts,\n      ftrace_event.name as name,\n      ftrace_event.cpu as cpu,\n      thread.name as thread,\n      process.name as process,\n      to_ftrace(ftrace_event.id) as args\n    from ftrace_event\n    join thread using (utid)\n    left join process on thread.upid = process.upid\n    where\n      ftrace_event.name not in (${n}) and\n      ts >= ${a} and ts <= ${i}\n    order by id\n    limit ${r} offset ${t};`),[]),c=o.iter({id:d.NUM,ts:d.LONG,name:d.STR,cpu:d.NUM,thread:d.STR_NULL,process:d.STR_NULL,args:d.STR});for(let e=0;c.valid();c.next(),e++)l.push({id:c.id,ts:u.Time.fromRaw(c.ts),name:c.name,cpu:c.cpu,thread:c.thread,process:c.process,args:c.args});return{events:l,offset:t,numEvents:s}}(e.trace,this.pagination.offset,this.pagination.count,e.filterStore.state)})}renderData(){return this.data?this.data.events.map(e=>{var{ts:e,name:t,cpu:r,process:n,args:a,id:i}=e,e=(0,s.default)(c.Timestamp,{trace:this.trace,ts:e}),o=(0,l.materialColorScheme)(t).base.cssString;return{id:i,cells:[i,e,(0,s.default)(\".pf-ftrace-namebox\",(0,s.default)(\".pf-ftrace-colorbox\",{style:{background:o}}),t),r,n,a]}}):[]}renderTitle(){var e;return this.data?(e=this.data[\"numEvents\"],`Ftrace Events (${e})`):\"Ftrace Events\"}renderFilterPanel(t){if(\"valid\"!==t.cache.state)return(0,s.default)(a.Button,{label:\"Filter\",disabled:!0,loading:!0});const n=t.filterStore.state.excludeList;var e=t.cache.counters.map(({name:t,count:e})=>({id:t,name:t+` (${e})`,checked:!n.some(e=>e===t)}));return(0,s.default)(i.PopupMultiSelect,{label:\"Filter\",icon:\"filter_list_alt\",popupPosition:o.PopupPosition.Top,options:e,onChange:e=>{const r=new Set(n);e.forEach(({checked:e,id:t})=>{e?r.delete(t):r.add(t)}),t.filterStore.edit(e=>{e.excludeList=Array.from(r)})}})}}}return LM}var UM,BM,jM,HM={},GM={};function VM(){if(!UM){UM=1,Object.defineProperty(GM,\"__esModule\",{value:!0}),GM.FtraceEventDetailsPanel=void 0;const e=Jr.__importDefault(xe()),n=Pe(),t=Fe(),r=Xo(),a=ns(),i=Ns(),o=Ue(),s=qe(),l=Ls(),c=Bs(),u=Ve();GM.FtraceEventDetailsPanel=class{trace;row;args;constructor(e,t){this.trace=e,this.row=t}async load(){await this.loadArgs()}render(){return(0,e.default)(s.DetailsShell,{title:\"Ftrace Event\",description:this.row.name},(0,e.default)(l.GridLayout,(0,e.default)(l.GridLayoutColumn,(0,e.default)(c.Section,{title:\"Details\"},(0,e.default)(u.Tree,(0,e.default)(u.TreeNode,{left:\"ID\",right:this.row.id}),(0,e.default)(u.TreeNode,{left:\"Name\",right:this.row.name}),(0,e.default)(u.TreeNode,{left:\"Timestamp\",right:(0,e.default)(i.Timestamp,{trace:this.trace,ts:t.Time.fromRaw(this.row.ts)})}),(0,e.default)(u.TreeNode,{left:\"CPU\",right:this.row.cpu})))),(0,e.default)(l.GridLayoutColumn,(0,e.default)(c.Section,{title:\"Arguments\"},(0,e.default)(u.Tree,this.args&&(0,r.renderArguments)(this.trace,this.args))))))}async loadArgs(){for(var e=(await this.trace.engine.query(`\n      SELECT\n        args.id as id,\n        flat_key as flatKey,\n        key,\n        int_value as intValue,\n        string_value as stringValue,\n        real_value as realValue,\n        value_type as valueType,\n        display_value as displayValue\n      FROM ftrace_event\n      JOIN args USING(arg_set_id)\n      WHERE ftrace_event.id = ${this.row.id}\n    `)).iter({id:o.NUM,flatKey:o.STR,key:o.STR,intValue:o.LONG_NULL,stringValue:o.STR_NULL,realValue:o.NUM_NULL,valueType:o.STR,displayValue:o.STR_NULL}),t=[];e.valid();e.next()){var r=function(e){var t=e.valueType;switch(t){case\"int\":case\"uint\":return e.intValue;case\"pointer\":return null===e.intValue?null:\"0x\"+e.intValue.toString(16);case\"string\":return e.stringValue;case\"bool\":return Boolean(e.intValue);case\"real\":return e.realValue;case\"null\":return null;default:(0,n.assertUnreachable)(t)}}(e);t.push({id:(0,a.asArgId)(e.id),flatKey:e.flatKey,key:e.key,value:r,displayValue:e.displayValue??\"NULL\"})}this.args=t}}}return GM}function qM(){if(!BM){BM=1,Object.defineProperty(HM,\"__esModule\",{value:!0}),HM.createFtraceTrack=function(t,e,r,n){return new i.DatasetSliceTrack({trace:t,uri:e,dataset:()=>{var e=n.state.excludeList;return new o.SourceDataset({src:`\n          SELECT *\n          FROM ftrace_event\n          WHERE\n            name NOT IN (${e.map(e=>`'${e}'`).join(\", \")})\n        `,schema:{id:s.NUM,ts:s.LONG,name:s.STR,cpu:s.NUM},filter:{col:\"ucpu\",eq:r.ucpu}})},colorizer:e=>(0,a.materialColorScheme)(e.name),instantStyle:{width:c,render:(e,t)=>e.fillRect(t.x,t.y,t.width,t.height)},forceTsRenderOrder:!0,tooltip:e=>e.row.name,detailsPanel:e=>new l.FtraceEventDetailsPanel(t,e)})};const a=He(),i=Ge(),o=ze(),s=Ue(),l=VM(),c=8}return HM}var zM,WM={};function $M(){if(!zM){zM=1,Object.defineProperty(WM,\"__esModule\",{value:!0});const i=Ue(),o=We(),s=Ge(),l=ze(),c=Qh();WM.default=class{static id=\"dev.perfetto.GpuByProcess\";async onTraceLoad(t){for(var r=(await t.engine.query(`\n      WITH slice_upids AS (\n        SELECT DISTINCT upid FROM gpu_slice\n      )\n      SELECT upid, pid, name FROM slice_upids JOIN process USING (upid)\n    `)).iter({upid:i.NUM_NULL,pid:i.NUM_NULL,name:i.STR_NULL});r.valid();r.next())if(null!=r.upid){var n=r.upid;let e=\"Unknown\";null!=r.name?e=r.name:null!=r.pid&&(e=\"\"+r.pid);var a=\"dev.perfetto.GpuByProcess#\"+n,n=(t.tracks.registerTrack({uri:a,renderer:new s.DatasetSliceTrack({trace:t,uri:a,dataset:new l.SourceDataset({src:\"gpu_slice\",schema:{id:i.NUM,name:i.STR,ts:i.LONG,dur:i.LONG,depth:i.NUM,upid:i.NUM},filter:{col:\"upid\",eq:n}}),detailsPanel:()=>new c.ThreadSliceDetailsPanel(t)})}),new o.TrackNode({uri:a,name:\"GPU \"+e}));t.workspace.addChildInOrder(n)}}}}return WM}var KM,YM={};var JM,QM,ZM,XM={},eP={},tP={},rP={},nP={},aP={};function iP(){if(!JM){JM=1;{var n=aP;Object.defineProperty(n,\"__esModule\",{value:!0}),n.GcsUploader=n.MIME_BINARY=n.MIME_JSON=n.BUCKET_NAME=void 0;var e=Ja();const r=Fe();n.BUCKET_NAME=\"perfetto-ui-data\",n.MIME_JSON=\"application/json; charset=utf-8\",n.MIME_BINARY=\"application/octet-stream\";async function s(e){let t;return t=\"string\"==typeof e?(new TextEncoder).encode(e):e,l(await crypto.subtle.digest(\"SHA-1\",t))}function l(e){return Array.from(new Uint8Array(e)).map(e=>e.toString(16).padStart(2,\"0\")).join(\"\")}n.GcsUploader=class{state=\"UPLOADING\";error=\"\";totalSize=0;uploadedSize=0;uploadedUrl=\"\";uploadedFileName=\"\";args;onProgress;req;donePromise=(0,e.defer)();startTime=performance.now();constructor(e,t){this.args=t,this.onProgress=t.onProgress??(e=>{}),this.req=new XMLHttpRequest,this.start(e)}async start(e){let t=this.args.fileName;var r;void 0===t&&(t=e instanceof Blob?await async function(t){var r=33554432,n=Math.ceil(t.size/r);let a=\"\";for(let e=0;e<n;e++){var i=e*r,o=Math.min(i+r,t.size),i=await t.slice(i,o).arrayBuffer(),o=await crypto.subtle.digest(\"SHA-1\",i);a+=l(o)}return s(a)}(e):await s(e)),this.uploadedFileName=t,this.uploadedUrl=`https://storage.googleapis.com/${n.BUCKET_NAME}/`+t,200===(await fetch(`https://www.googleapis.com/storage/v1/b/${n.BUCKET_NAME}/o/`+t)).status?(console.log(`Skipping upload of ${this.uploadedUrl} because it exists already`),this.state=\"UPLOADED\",this.donePromise.resolve()):(r=\"https://www.googleapis.com/upload/storage/v1/b/\"+n.BUCKET_NAME+\"/o?uploadType=media\"+`&name=${t}&predefinedAcl=publicRead`,this.req.onabort=e=>this.onRpcEvent(e),this.req.onerror=e=>this.onRpcEvent(e),this.req.upload.onprogress=e=>this.onRpcEvent(e),this.req.onloadend=e=>this.onRpcEvent(e),this.req.open(\"POST\",r,!0),r=this.args.mimeType??n.MIME_BINARY,this.req.setRequestHeader(\"Content-Type\",r),this.req.send(e))}waitForCompletion(){return this.donePromise}abort(){\"UPLOADING\"===this.state&&this.req.abort()}getEtaString(){var e=Math.ceil(100*this.uploadedSize/this.totalSize)+\"%\",t=(e+=` (${(this.uploadedSize/1e6).toFixed(2)} MB)`,(performance.now()-this.startTime)/1e3),t=this.uploadedSize/t,t=Math.round((this.totalSize-this.uploadedSize)/t);return e+=\" - ETA: \"+r.Time.toTimecode(r.Time.fromSeconds(t)).dhhmmss}onRpcEvent(e){let t=!1;switch(e.type){case\"progress\":this.uploadedSize=e.loaded,this.totalSize=e.total;break;case\"abort\":this.state=\"ERROR\",this.error=\"Upload aborted\";break;case\"error\":this.state=\"ERROR\",this.error=this.req.status+\" - \"+this.req.statusText;break;case\"loadend\":t=!0,200===this.req.status?this.state=\"UPLOADED\":\"UPLOADING\"===this.state&&(this.state=\"ERROR\",this.error=this.req.status+\" - \"+this.req.statusText);break;default:return}this.onProgress(this),t&&this.donePromise.resolve()}}}}return aP}function oP(){if(QM)return nP;QM=1,Object.defineProperty(nP,\"__esModule\",{value:!0}),nP.maybeShowErrorDialog=function(e){var t=performance.now();var r;e.message.includes(\"Cannot enlarge memory\")||e.stack.some(e=>e.name.includes(\"base::AlignedAlloc\"))||e.stack.some(e=>e.name.includes(\"OutOfMemoryHandler\"))||e.stack.some(e=>e.name.includes(\"_emscripten_resize_heap\"))||e.stack.some(e=>e.name.includes(\"sbrk\"))||/^out of memory$/m.exec(e.message)?(r=\"https://perfetto.dev/docs/quickstart/trace-analysis#get-trace-processor\",(0,a.showModal)({title:\"Oops! Your WASM trace processor ran out of memory\",content:(0,i.default)(\"div\",(0,i.default)(\"span\",\"The in-memory representation of the trace is too big for the browser memory limits.\"),(0,i.default)(\"br\"),(0,i.default)(\"span\",\"You can work around this problem by using the trace_processor native binary as an accelerator for the UI as follows:\"),(0,i.default)(\"br\"),(0,i.default)(\"br\"),(0,i.default)(\".pf-modal-bash\",\"curl -LO https://get.perfetto.dev/trace_processor\\nchmod +x ./trace_processor\\n./trace_processor --httpd /path/to/trace.pftrace\\n# Reload the UI, it will prompt to use the HTTP+RPC interface\"),(0,i.default)(\"br\"),(0,i.default)(\"span\",\"For details see \"),(0,i.default)(d.Anchor,{href:r,target:\"_blank\",icon:p.Icons.ExternalLink},r))}),m=t):e.message.includes(\"Unable to claim interface\")?((0,a.showModal)({title:\"A WebUSB error occurred\",content:(0,i.default)(\"div\",(0,i.default)(\"span\",\"Cannot access the USB interface for ADB. This can happen when:\"),(0,i.default)(\"br\"),(0,i.default)(\"br\"),(0,i.default)(\"ul\",(0,i.default)(\"li\",\"Another tool is already using ADB (e.g., chrome://inspect)\"),(0,i.default)(\"li\",\"ADB server is running on the host machine\"),(0,i.default)(\"li\",\"Another profiling tool has exclusive access to the device\")),(0,i.default)(\"br\"),(0,i.default)(\"span\",\"Try the following solutions:\"),(0,i.default)(\"br\"),(0,i.default)(\"br\"),(0,i.default)(\"ol\",(0,i.default)(\"li\",\"Close chrome://inspect or other debugging tools\"),(0,i.default)(\"li\",\"Run the command below to kill the ADB server:\")),(0,i.default)(\".pf-modal-bash\",\"> adb kill-server\"),(0,i.default)(\"br\"),(0,i.default)(\"span\",\"3. Disconnect and reconnect your device\"),(0,i.default)(\"br\"),(0,i.default)(\"br\"),(0,i.default)(\"span\",\"Note: Perfetto and chrome://inspect cannot be used simultaneously as they both require exclusive access to the USB ADB interface.\"))}),m=t):e.message.includes(\"A transfer error has occurred\")||e.message.includes(\"The device was disconnected\")||e.message.includes(\"The transfer was cancelled\")?((0,a.showModal)({title:\"Connection with the ADB device lost\",content:(0,i.default)(\"div\",(0,i.default)(\"span\",\"Please connect the device again to restart the recording.\"),(0,i.default)(\"br\"))}),m=t):e.message.includes(\"(ERR:fmt)\")?(0,a.showModal)({title:\"Cannot open this file\",content:(0,i.default)(\"div\",(0,i.default)(\"p\",\"The file opened doesn't look like a Perfetto trace or any other format recognized by the Perfetto TraceProcessor.\"),(0,i.default)(\"p\",\"Formats supported:\"),(0,i.default)(\"ul\",(0,i.default)(\"li\",\"Perfetto protobuf trace\"),(0,i.default)(\"li\",\"chrome://tracing JSON\"),(0,i.default)(\"li\",\"Android systrace\"),(0,i.default)(\"li\",\"Fuchsia trace\"),(0,i.default)(\"li\",\"Ninja build log\")))}):e.message.includes(\"(ERR:rpc_seq)\")?(0,a.showModal)({title:\"A TraceProcessor RPC error occurred\",content:(0,i.default)(\"div\",(0,i.default)(\"p\",\"The trace processor RPC sequence ID was broken\"),(0,i.default)(\"p\",`This can happen when using a HTTP trace processor instance and\neither accidentally sharing this between multiple tabs or\nrestarting the trace processor while still in use by UI.`),(0,i.default)(\"p\",`Please refresh this tab and ensure that trace processor is used\nat most one tab at a time.`))}):e.message.includes(\"(ERR:ws)\")?(r=e.message,(0,a.showModal)({title:\"Unable to connect to the device via websocket\",content:(0,i.default)(\"div\",(0,i.default)(\"div\",\"trace_processor_shell --httpd is unreachable or crashed.\"),(0,i.default)(\"pre\",r))})):e.message.includes(\"State hash does not match\")?(0,a.showModal)({title:\"Cannot deserialize the permalink\",content:(0,i.default)(\"div\",(0,i.default)(\"p\",\"The state hash doesn't match.\"),(0,i.default)(\"p\",\"This usually happens when the permalink is generated by a version the UI that is newer than the current version, e.g., when a colleague created the permalink using the Canary or Autopush channel and you are trying to open it using Stable channel.\"),(0,i.default)(\"p\",\"Try switching to Canary or Autopush channel from the Flags page  and try again.\")),buttons:[{text:\"Take me to the flags page\",primary:!0,action:()=>s.Router.navigate(\"#!/flags/releaseChannel\")}]}):0<m&&t-m<=h?console.log(\"Suppressing crash dialog, last error notified too soon.\"):(m=t,(0,a.getCurrentModalKey)()!==f&&(0,a.showModal)({key:f,title:\"Oops, something went wrong. Please file a bug.\",content:()=>(0,i.default)(g,e)}))};const i=Jr.__importDefault(xe()),r=iP(),n=K(),o=Yt(),a=Ke(),t=Jh(),s=Xl(),l=je(),c=Be(),u=sm(),d=Oe(),p=Ae(),f=\"crash_modal\",h=1e4;let m=0;class g{traceState;traceType=\"No trace loaded\";traceData;traceUrl;attachTrace=!1;uploadStatus=\"\";userDescription=\"\";errorMessage=\"\";uploader;constructor(){this.traceState=\"NOT_AVAILABLE\";var e=t.AppImpl.instance.trace?.traceInfo.source;if(void 0!==e)if(this.traceType=e.type,\"url\"in e&&void 0!==e.url)this.traceUrl=e.url,this.traceState=\"UPLOADED\",this.attachTrace=!0;else if(t.AppImpl.instance.isInternalUser){if(\"FILE\"===e.type)this.traceState=\"NOT_UPLOADED\",this.traceData=e.file;else{if(\"ARRAY_BUFFER\"!==e.type)return;this.traceData=e.buffer}this.traceState=\"NOT_UPLOADED\"}}view(e){const t=e.attrs;let r=`UI: ${location.protocol}//${location.host}/${o.VERSION}\n\n`;r+=t.message+`\n`;for(const a of t.stack)r+=` - ${a.name} (${a.location})\n`;r+=\"\\n\",this.attachTrace&&this.traceUrl?r+=`Trace: ${this.traceUrl}\n`:this.attachTrace&&\"UPLOADING\"===this.traceState?r+=`Trace: uploading...\n`:r+=`Trace: not available (${this.traceType}). Provide repro steps.\n`,r=(r+=`UA: ${navigator.userAgent}\n`)+`Referrer: ${document.referrer}\n`,this.errorMessage=r;let n=null;return\"NOT_AVAILABLE\"!==this.traceState&&(n=(0,i.default)(\"div\",(0,i.default)(u.Checkbox,{checked:this.attachTrace,oninput:e=>{e=e.target.checked;this.onUploadCheckboxChange(e)},label:\"UPLOADING\"===this.traceState?\"Uploading trace... \"+this.uploadStatus:\"Tick to share the current trace and help debugging\"}),(0,i.default)(\"div.pf-modal-small\",`This will upload the trace and attach a link to the bug.\n          You may leave it unchecked and attach the trace manually to the bug\n          if preferred.`))),[(0,i.default)(\"div\",(0,i.default)(\".pf-modal-logs\",r),(0,i.default)(\"span\",`Please provide any additional details describing\n        how the crash occurred:`),(0,i.default)(\"textarea.pf-modal-textarea\",{rows:3,maxlength:1e3,oninput:e=>{this.userDescription=e.target.value},onkeydown:e=>e.stopPropagation(),onkeyup:e=>e.stopPropagation()}),n),(0,i.default)(\"footer\",(0,i.default)(l.Button,{onclick:()=>this.fileBug(t),intent:c.Intent.Primary,variant:l.ButtonVariant.Filled,label:\"File a bug (Googlers only)\"}))]}onUploadCheckboxChange(e){if((this.attachTrace=e)&&void 0!==this.traceData&&\"NOT_UPLOADED\"===this.traceState){this.traceState=\"UPLOADING\",this.uploadStatus=\"\";const t=new r.GcsUploader(this.traceData,{onProgress:()=>{n.raf.scheduleFullRedraw(),this.uploadStatus=t.getEtaString(),\"UPLOADED\"===t.state?(this.traceState=\"UPLOADED\",this.traceUrl=t.uploadedUrl):\"ERROR\"===t.state&&(this.traceState=\"NOT_UPLOADED\",this.uploadStatus=t.error)}});this.uploader=t}else!e&&this.uploader&&this.uploader.abort()}fileBug(e){e=e.message.split(\"\\n\",1)[0].substring(0,80);let t=\"https://goto.google.com/perfetto-ui-bug\";t=t+(\"?title=\"+encodeURIComponent(\"UI Error: \"+e))+\"&description=\",\"\"!==this.userDescription&&(t+=encodeURIComponent(\"User description:\\n\"+this.userDescription+\"\\n\\n\")),t=(t+=encodeURIComponent(this.errorMessage)).substring(0,8e3),window.open(t,\"_blank\")}}return nP}function sP(){if(!ZM){ZM=1,Object.defineProperty(rP,\"__esModule\",{value:!0}),rP.convertTraceToJsonAndDownload=function(e){return n({kind:\"ConvertTraceAndDownload\",trace:e,format:\"json\"})},rP.convertTraceToSystraceAndDownload=function(e){return n({kind:\"ConvertTraceAndDownload\",trace:e,format:\"systrace\"})},rP.convertToJson=function(e,t,r){return n({kind:\"ConvertTraceAndOpenInLegacy\",trace:e,truncate:r},t)},rP.convertTraceToPprofAndDownload=function(e,t,r){return n({kind:\"ConvertTraceToPprof\",trace:e,pid:t,ts:r})};const a=Ch(),i=Ja(),o=nc(),s=j(),l=Jh(),c=oP();async function n(e,r){const n=(0,i.defer)();var t=new Worker((0,a.assetSrc)(\"traceconv_bundle.js\"));return t.onmessage=function(e){if(\"updateStatus\"===(e=e.data).kind)l.AppImpl.instance.omnibox.showStatusMessage(e.status);else if(\"jobCompleted\"===e.kind)n.resolve();else if(\"downloadFile\"===e.kind)(0,o.download)({content:e.buffer,fileName:e.name});else if(\"openTraceInLegacy\"===e.kind){var t=(0,s.utf8Decode)(e.buffer);r?.(\"trace.json\",t,0)}else{if(\"error\"!==e.kind)throw new Error(\"Unhandled message \"+JSON.stringify(e));(0,c.maybeShowErrorDialog)(e.error)}},t.postMessage(e),n}}return rP}var lP,cP,uP,dP,pP={};function fP(){if(!lP){lP=1,Object.defineProperty(pP,\"__esModule\",{value:!0}),pP.Tooltip=void 0;var e=Jr;const i=si(),l=e.__importDefault(xe()),c=ui(),u=be(),d=_i(),p=Pe(),o=yi();pP.Tooltip=class f{isOpen=!1;triggerElement;tooltipElement;popper;static TRIGGER_REF=\"trigger\";static TOOLTIP_REF=\"tooltip\";view({attrs:e,children:t}){var r=e.trigger;return[this.renderTrigger(r),this.isOpen&&this.renderToolip(e,t)]}renderTrigger(e){return e.attrs={...e.attrs,ref:f.TRIGGER_REF,onmouseenter:()=>{this.isOpen=!0},onmouseleave:()=>{this.isOpen=!1}},e}renderToolip(t,e){const{className:r,showArrow:n=!0,onTooltipMount:a=()=>{},onTooltipUnMount:i=()=>{},fitContent:o}=t;var s={className:\"pf-tooltip-portal\",onBeforeContentMount:e=>{var t=e.closest(`[ref=${f.TOOLTIP_REF}]`);return(t=(t=t||e.closest(\".pf-overlay-container\"))||e.closest(\".pf-overlay-container\"))?{container:t}:{container:void 0}},onContentMount:e=>{e=(0,d.toHTMLElement)((0,p.assertExists)((0,d.findRef)(e,f.TOOLTIP_REF))),this.tooltipElement=e,this.createOrUpdatePopper(t),a(e)},onContentUpdate:()=>{this.popper?.update()},onContentUnmount:()=>{this.tooltipElement&&i(this.tooltipElement),this.popper?.destroy(),this.popper=void 0,this.tooltipElement=void 0}};return(0,l.default)(c.Portal,s,(0,l.default)(\".pf-popup\",{class:(0,u.classNames)(r,o&&\"pf-popup--fit-content\"),ref:f.TOOLTIP_REF},n&&(0,l.default)(\".pf-popup-arrow[data-popper-arrow]\"),(0,l.default)(\".pf-popup-content\",e)))}oncreate({dom:e}){this.triggerElement=(0,p.assertExists)((0,d.findRef)(e,f.TRIGGER_REF))}onupdate({attrs:e}){this.createOrUpdatePopper(e)}onremove(e){this.triggerElement=void 0}createOrUpdatePopper(e){const{position:t=o.PopupPosition.Auto,showArrow:r=!0,offset:n=0,edgeOffset:a=0}=e;e={placement:t,modifiers:[{name:\"offset\",options:{offset:({placement:e})=>{let t=0;return e.includes(\"-end\")?t=a:e.includes(\"-start\")&&(t=-a),[t,r?n+8:n]}}},{name:\"preventOverflow\",options:{padding:8}},{name:\"arrow\",options:{padding:2}}]},this.popper?this.popper.setOptions(e):this.tooltipElement&&this.triggerElement&&(this.popper=(0,i.createPopper)(this.triggerElement,this.tooltipElement,e))}}}return pP}function hP(){if(!cP){var i,e;cP=1,Object.defineProperty(tP,\"__esModule\",{value:!0}),tP.HeapProfileFlamegraphDetailsPanel=tP.ProfileType=void 0,tP.profileType=function(e){\"heap_profile:libc.malloc,com.android.art\"===e&&(e=\"heap_profile:com.android.art,libc.malloc\");if(Object.values(i).includes(e))return e;if(e.startsWith(\"heap_profile\"))return i.HEAP_PROFILE;throw new Error(\"Unknown type ${s}\")};const n=Jr.__importDefault(xe()),r=Pe(),u=De(),d=tl(),p=ln(),f=Nu(),h=sP(),m=Ns(),g=Ue(),_=je(),y=Be(),T=qe(),v=Ee(),b=Ke(),E=Ru(),S=DI(),A=mc(),O=fP();(e=i||(tP.ProfileType=i={})).HEAP_PROFILE=\"heap_profile\",e.MIXED_HEAP_PROFILE=\"heap_profile:com.android.art,libc.malloc\",e.NATIVE_HEAP_PROFILE=\"heap_profile:libc.malloc\",e.JAVA_HEAP_SAMPLES=\"heap_profile:com.android.art\",e.JAVA_HEAP_GRAPH=\"graph\",e.PERF_SAMPLE=\"perf\",e.INSTRUMENTS_SAMPLE=\"instruments\";function o(e,t,r){return(0,f.metricsFromTableOrSubquery)(`\n      (\n        select\n          id,\n          parent_id as parentId,\n          name,\n          mapping_name,\n          source_file || ':' || line_number as source_location,\n          self_size,\n          self_count,\n          self_alloc_size,\n          self_alloc_count\n        from _android_heap_profile_callstacks_for_allocations!((\n          select\n            callsite_id,\n            size,\n            count,\n            max(size, 0) as alloc_size,\n            max(count, 0) as alloc_count\n          from heap_profile_allocation a\n          where a.ts <= ${e} and a.upid = ${t}\n        ))\n      )\n    `,r,\"include perfetto module android.memory.heap_profile.callstacks\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}])}function s(r,n){return[{name:\"Objects\",execute:async e=>{var t,e=e.get(\"path_hash_stable\");void 0!==e&&(t=\"_heap_graph_filtered_path_hashes_\"+(0,p.uuidv4Sql)(),await(0,u.createPerfettoTable)({engine:r.engine,name:t,as:a(e)}),e=`_heap_graph${c(n)}object_references`,t=`_heap_graph${c(n)}path_hashes, `+t,await r.engine.query(`CREATE OR REPLACE PERFETTO TABLE ${e} AS SELECT * FROM ${`_heap_graph_object_references_agg!(${t})`};`),d.extensions.addLegacySqlTableTab(r,{table:{name:`_heap_graph${c(n)}object_references`,columns:[new S.StandardColumn(\"path_hash\"),new S.StandardColumn(\"outgoing_reference_count\"),new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"self_size\"),new S.StandardColumn(\"native_size\"),new S.StandardColumn(\"heap_type\"),new S.StandardColumn(\"root_type\"),new S.StandardColumn(\"reachable\")]}}))}},{name:\"Direct References\",subActions:[{name:\"Incoming references\",execute:async e=>{var t,e=e.get(\"path_hash_stable\");void 0!==e&&(t=\"_heap_graph_filtered_path_hashes_\"+(0,p.uuidv4Sql)(),await(0,u.createPerfettoTable)({engine:r.engine,name:t,as:a(e)}),e=`_heap_graph${c(n)}incoming_references`,t=`_heap_graph${c(n)}path_hashes, `+t,await r.engine.query(`CREATE OR REPLACE PERFETTO TABLE ${e} AS SELECT * FROM ${`_heap_graph_incoming_references_agg!(${t})`};`),d.extensions.addLegacySqlTableTab(r,{table:{name:`_heap_graph${c(n)}incoming_references`,columns:[new S.StandardColumn(\"path_hash\"),new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"field_name\"),new S.StandardColumn(\"field_type_name\"),new S.StandardColumn(\"self_size\"),new S.StandardColumn(\"native_size\"),new S.StandardColumn(\"heap_type\"),new S.StandardColumn(\"root_type\"),new S.StandardColumn(\"reachable\")]}}))}},{name:\"Outgoing references\",execute:async e=>{var t,e=e.get(\"path_hash_stable\");void 0!==e&&(t=\"_heap_graph_filtered_path_hashes_\"+(0,p.uuidv4Sql)(),await(0,u.createPerfettoTable)({engine:r.engine,name:t,as:a(e)}),e=`_heap_graph${c(n)}outgoing_references`,t=`_heap_graph${c(n)}path_hashes, `+t,await r.engine.query(`CREATE OR REPLACE PERFETTO TABLE ${e} AS SELECT * FROM ${`_heap_graph_outgoing_references_agg!(${t})`};`),d.extensions.addLegacySqlTableTab(r,{table:{name:`_heap_graph${c(n)}outgoing_references`,columns:[new S.StandardColumn(\"path_hash\"),new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"field_name\"),new S.StandardColumn(\"field_type_name\"),new S.StandardColumn(\"self_size\"),new S.StandardColumn(\"native_size\"),new S.StandardColumn(\"heap_type\"),new S.StandardColumn(\"root_type\"),new S.StandardColumn(\"reachable\")]}}))}}]},{name:\"Indirect References\",subActions:[{name:\"Retained objects\",execute:async e=>{var t,e=e.get(\"path_hash_stable\");void 0!==e&&(t=\"_heap_graph_filtered_path_hashes_\"+(0,p.uuidv4Sql)(),await(0,u.createPerfettoTable)({engine:r.engine,name:t,as:a(e)}),e=`_heap_graph${c(n)}retained_object_counts`,t=`_heap_graph${c(n)}path_hashes, `+t,await r.engine.query(`CREATE OR REPLACE PERFETTO TABLE ${e} AS SELECT * FROM ${`_heap_graph_retained_object_count_agg!(${t})`};`),d.extensions.addLegacySqlTableTab(r,{table:{name:`_heap_graph${c(n)}retained_object_counts`,columns:[new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"count\"),new S.StandardColumn(\"total_size\"),new S.StandardColumn(\"total_native_size\"),new S.StandardColumn(\"heap_type\"),new S.StandardColumn(\"root_type\"),new S.StandardColumn(\"reachable\")]}}))}},{name:\"Retaining objects\",execute:async e=>{var t,e=e.get(\"path_hash_stable\");void 0!==e&&(t=\"_heap_graph_filtered_path_hashes_\"+(0,p.uuidv4Sql)(),await(0,u.createPerfettoTable)({engine:r.engine,name:t,as:a(e)}),e=`_heap_graph${c(n)}retaining_object_counts`,t=`_heap_graph${c(n)}path_hashes, `+t,await r.engine.query(`CREATE OR REPLACE PERFETTO TABLE ${e} AS SELECT * FROM ${`_heap_graph_retaining_object_count_agg!(${t})`};`),d.extensions.addLegacySqlTableTab(r,{table:{name:`_heap_graph${c(n)}retaining_object_counts`,columns:[new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"count\"),new S.StandardColumn(\"total_size\"),new S.StandardColumn(\"total_native_size\"),new S.StandardColumn(\"heap_type\"),new S.StandardColumn(\"root_type\"),new S.StandardColumn(\"reachable\")]}}))}}]}]}function l(n,a){return[{name:\"Reference paths by class\",execute:async e=>{var t=`_heap_graph${c(a)}duplicate_objects`,r=`_heap_graph${c(a)}path_hashes`;await n.engine.query(`CREATE OR REPLACE PERFETTO VIEW ${t} AS SELECT * FROM ${`_heap_graph_duplicate_objects_agg!(${r})`};`),d.extensions.addLegacySqlTableTab(n,{table:{name:`_heap_graph${c(a)}duplicate_objects`,columns:[new S.StandardColumn(\"class_name\"),new S.StandardColumn(\"path_count\"),new S.StandardColumn(\"object_count\"),new S.StandardColumn(\"total_size\"),new S.StandardColumn(\"total_native_size\")]}})}}]}function c(e){return e?\"_dominator_\":\"_\"}function a(e){return`WITH temp_table(path_hash) AS (${\"values\"+e.split(\",\").map(e=>e.trim()).map(e=>`(${e})`).join(\", \")}) SELECT * FROM temp_table`}tP.HeapProfileFlamegraphDetailsPanel=class{trace;heapGraphIncomplete;upid;flamegraph;props;flamegraphModalDismissed=!1;serialization;constructor(e,t,r,n,a){this.trace=e,this.heapGraphIncomplete=t;t=function(e,t,r,n){switch(t){case i.NATIVE_HEAP_PROFILE:return o(r,n,[{name:\"Unreleased Malloc Size\",unit:\"B\",columnName:\"self_size\"},{name:\"Unreleased Malloc Count\",unit:\"\",columnName:\"self_count\"},{name:\"Total Malloc Size\",unit:\"B\",columnName:\"self_alloc_size\"},{name:\"Total Malloc Count\",unit:\"\",columnName:\"self_alloc_count\"}]);case i.HEAP_PROFILE:return o(r,n,[{name:\"Unreleased Size\",unit:\"B\",columnName:\"self_size\"},{name:\"Unreleased Count\",unit:\"\",columnName:\"self_count\"},{name:\"Total Size\",unit:\"B\",columnName:\"self_alloc_size\"},{name:\"Total Count\",unit:\"\",columnName:\"self_alloc_count\"}]);case i.JAVA_HEAP_SAMPLES:return o(r,n,[{name:\"Total Allocation Size\",unit:\"B\",columnName:\"self_size\"},{name:\"Total Allocation Count\",unit:\"\",columnName:\"self_count\"}]);case i.MIXED_HEAP_PROFILE:return o(r,n,[{name:\"Allocation Size (malloc + java)\",unit:\"B\",columnName:\"self_size\"},{name:\"Allocation Count (malloc + java)\",unit:\"\",columnName:\"self_count\"}]);case i.JAVA_HEAP_GRAPH:return[{name:\"Object Size\",unit:\"B\",dependencySql:\"include perfetto module android.memory.heap_graph.class_tree;\",statement:`\n            select\n              id,\n              parent_id as parentId,\n              ifnull(name, '[Unknown]') as name,\n              root_type,\n              heap_type,\n              self_size as value,\n              self_count,\n              path_hash_stable\n            from _heap_graph_class_tree\n            where graph_sample_ts = ${r} and upid = ${n}\n          `,unaggregatableProperties:[{name:\"root_type\",displayName:\"Root Type\"},{name:\"heap_type\",displayName:\"Heap Type\"}],aggregatableProperties:[{name:\"self_count\",displayName:\"Self Count\",mergeAggregation:\"SUM\"},{name:\"path_hash_stable\",displayName:\"Path Hash\",mergeAggregation:\"CONCAT_WITH_COMMA\",isVisible:!1}],optionalNodeActions:s(e,!1),optionalRootActions:l(e,!1)},{name:\"Object Count\",unit:\"\",dependencySql:\"include perfetto module android.memory.heap_graph.class_tree;\",statement:`\n            select\n              id,\n              parent_id as parentId,\n              ifnull(name, '[Unknown]') as name,\n              root_type,\n              heap_type,\n              self_size,\n              self_count as value,\n              path_hash_stable\n            from _heap_graph_class_tree\n            where graph_sample_ts = ${r} and upid = ${n}\n          `,unaggregatableProperties:[{name:\"root_type\",displayName:\"Root Type\"},{name:\"heap_type\",displayName:\"Heap Type\"}],aggregatableProperties:[{name:\"path_hash_stable\",displayName:\"Path Hash\",mergeAggregation:\"CONCAT_WITH_COMMA\",isVisible:!1}],optionalNodeActions:s(e,!1),optionalRootActions:l(e,!1)},{name:\"Dominated Object Size\",unit:\"B\",dependencySql:\"include perfetto module android.memory.heap_graph.dominator_class_tree;\",statement:`\n            select\n              id,\n              parent_id as parentId,\n              ifnull(name, '[Unknown]') as name,\n              root_type,\n              heap_type,\n              self_size as value,\n              self_count,\n              path_hash_stable\n            from _heap_graph_dominator_class_tree\n            where graph_sample_ts = ${r} and upid = ${n}\n          `,unaggregatableProperties:[{name:\"root_type\",displayName:\"Root Type\"},{name:\"heap_type\",displayName:\"Heap Type\"}],aggregatableProperties:[{name:\"self_count\",displayName:\"Self Count\",mergeAggregation:\"SUM\"},{name:\"path_hash_stable\",displayName:\"Path Hash\",mergeAggregation:\"CONCAT_WITH_COMMA\",isVisible:!1}],optionalNodeActions:s(e,!0),optionalRootActions:l(e,!0)},{name:\"Dominated Object Count\",unit:\"\",dependencySql:\"include perfetto module android.memory.heap_graph.dominator_class_tree;\",statement:`\n            select\n              id,\n              parent_id as parentId,\n              ifnull(name, '[Unknown]') as name,\n              root_type,\n              heap_type,\n              self_size,\n              self_count as value,\n              path_hash_stable\n            from _heap_graph_dominator_class_tree\n            where graph_sample_ts = ${r} and upid = ${n}\n          `,unaggregatableProperties:[{name:\"root_type\",displayName:\"Root Type\"},{name:\"heap_type\",displayName:\"Heap Type\"}],aggregatableProperties:[{name:\"path_hash_stable\",displayName:\"Path Hash\",mergeAggregation:\"CONCAT_WITH_COMMA\",isVisible:!1}],optionalNodeActions:s(e,!0),optionalRootActions:l(e,!0)}];case i.PERF_SAMPLE:throw new Error(\"Perf sample not supported\");case i.INSTRUMENTS_SAMPLE:throw new Error(\"Instruments sample not supported\")}}(e,n,a,this.upid=r);this.serialization={schema:E.FLAMEGRAPH_STATE_SCHEMA,state:E.Flamegraph.createDefaultState(t)},this.flamegraph=new f.QueryFlamegraph(e,t,this.serialization),this.props={ts:a,type:n}}render(){const{type:e,ts:t}=this.props;return(0,n.default)(\".pf-flamegraph-profile\",this.maybeShowModal(this.trace,e,this.heapGraphIncomplete),(0,n.default)(T.DetailsShell,{fillParent:!0,title:(0,n.default)(\"span\",function(e){switch(e){case i.HEAP_PROFILE:return\"Heap profile\";case i.JAVA_HEAP_GRAPH:return\"Java heap graph\";case i.JAVA_HEAP_SAMPLES:return\"Java heap samples\";case i.MIXED_HEAP_PROFILE:return\"Mixed heap profile\";case i.NATIVE_HEAP_PROFILE:return\"Native heap profile\";case i.PERF_SAMPLE:return(0,r.assertFalse)(!1,\"Perf sample not supported\"),\"Impossible\";case i.INSTRUMENTS_SAMPLE:return(0,r.assertFalse)(!1,\"Instruments sample not supported\"),\"Impossible\"}}(e),e===i.MIXED_HEAP_PROFILE&&[\" \",(0,n.default)(O.Tooltip,{trigger:(0,n.default)(v.Icon,{icon:\"warning\",intent:y.Intent.Warning})},(0,n.default)(\"\",'This is a mixed java/native heap profile, free()s are not visualized. To visualize free()s, remove \"all_heaps: true\" from the config.'))]),buttons:(0,n.default)(A.Stack,{orientation:\"horizontal\",spacing:\"large\"},[(0,n.default)(\"span\",\"Snapshot time: \",(0,n.default)(m.Timestamp,{trace:this.trace,ts:t})),(e===i.NATIVE_HEAP_PROFILE||e===i.JAVA_HEAP_SAMPLES)&&(0,n.default)(_.Button,{icon:\"file_download\",intent:y.Intent.Primary,variant:_.ButtonVariant.Filled,onclick:()=>{!async function(e,t,r){t=await e.engine.query(\"select pid from process where upid = \"+t);e.traceInfo.downloadable?(e=await e.getTraceFile(),(0,h.convertTraceToPprofAndDownload)(e,t.firstRow({pid:g.NUM}).pid,r)):(0,b.showModal)({title:\"Download not supported\",content:(0,n.default)(\"div\",\"This trace file does not support downloads\")})}(this.trace,this.upid,t)}})])},(0,r.assertExists)(this.flamegraph).render()))}maybeShowModal(e,t,r){if(t===i.JAVA_HEAP_GRAPH&&r&&!this.flamegraphModalDismissed)return(0,n.default)(b.Modal,{title:\"The flamegraph is incomplete\",vAlign:\"TOP\",content:(0,n.default)(\"div\",\"The current trace does not have a fully formed flamegraph\"),buttons:[{text:\"Show the errors\",primary:!0,action:()=>e.navigate(\"#!/info\")},{text:\"Skip\",action:()=>{this.flamegraphModalDismissed=!0}}]})}}}return tP}function mP(){if(!uP){uP=1,Object.defineProperty(eP,\"__esModule\",{value:!0}),eP.createHeapProfileTrack=function(r,e,t,n,a){return new o.DatasetSliceTrack({trace:r,uri:e,dataset:new s.SourceDataset({src:t,schema:{ts:l.LONG,type:l.STR,id:l.NUM},filter:{col:\"upid\",eq:n}}),detailsPanel:e=>{var t=i.Time.fromRaw(e.ts),e=(0,c.profileType)(e.type);return new c.HeapProfileFlamegraphDetailsPanel(r,a,n,e,t)},tooltip:e=>e.row.type})};const i=Fe(),o=Ge(),s=ze(),l=Ue(),c=hP()}return eP}var gP,_P,yP={},TP={};function vP(){if(!_P){_P=1,Object.defineProperty(yP,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=function(){if(!gP){gP=1,Object.defineProperty(TP,\"__esModule\",{value:!0}),TP.InsightsPage=void 0;const e=Jr.__importDefault(xe());TP.InsightsPage=class{view(){return(0,e.default)(\".insights-page\")}}}return TP}();yP.default=class{static id=\"dev.perfetto.InsightsPage\";async onTraceLoad(e){e.pages.registerPage({route:\"/insights\",render:()=>(0,t.default)(r.InsightsPage,{trace:e})}),e.sidebar.addMenuItem({section:\"current_trace\",text:\"Insights\",href:\"#!/insights\",icon:\"insights\"})}}}return yP}var bP,EP,SP={},AP={};function OP(){if(!bP){bP=1,Object.defineProperty(AP,\"__esModule\",{value:!0}),AP.createProcessInstrumentsSamplesProfileTrack=function(a,e,i){return new u.DatasetSliceTrack({trace:a,uri:e,dataset:new d.SourceDataset({schema:{id:t.NUM,ts:t.LONG,callsiteId:t.NUM},src:`\n        SELECT\n          p.id,\n          ts,\n          callsite_id as callsiteId,\n          upid\n        FROM instruments_sample p\n        JOIN thread using (utid)\n        WHERE callsite_id IS NOT NULL\n        ORDER BY ts\n      `,filter:{col:\"upid\",eq:i}}),sliceName:()=>\"Instruments Sample\",colorizer:e=>(0,r.getColorForSample)(e.callsiteId),detailsPanel:e=>{var t=(0,s.metricsFromTableOrSubquery)(`\n          (\n            select\n              id,\n              parent_id as parentId,\n              name,\n              mapping_name,\n              source_file || ':' || line_number as source_location,\n              self_count\n            from _callstacks_for_callsites!((\n              select p.callsite_id\n              from instruments_sample p\n              join thread t using (utid)\n              where p.ts >= ${e.ts}\n                and p.ts <= ${e.ts}\n                and t.upid = ${i}\n            ))\n          )\n        `,[{name:\"Instruments Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module appleos.instruments.samples\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]),r={schema:c.FLAMEGRAPH_STATE_SCHEMA,state:c.Flamegraph.createDefaultState(t)};const n=new s.QueryFlamegraph(a,t,r);return{render:()=>o(a,n,l.Time.fromRaw(e.ts)),serialization:r}}})},AP.createThreadInstrumentsSamplesProfileTrack=function(a,e,i){return new u.DatasetSliceTrack({trace:a,uri:e,dataset:new d.SourceDataset({schema:{id:t.NUM,ts:t.LONG,callsiteId:t.NUM},src:`\n        SELECT\n          p.id,\n          ts,\n          callsite_id as callsiteId,\n          utid\n        FROM instruments_sample p\n        WHERE callsite_id IS NOT NULL\n        ORDER BY ts\n      `,filter:{col:\"utid\",eq:i}}),sliceName:()=>\"Instruments Sample\",colorizer:e=>(0,r.getColorForSample)(e.callsiteId),detailsPanel:e=>{var t=(0,s.metricsFromTableOrSubquery)(`\n          (\n            select\n              id,\n              parent_id as parentId,\n              name,\n              mapping_name,\n              source_file || ':' || line_number as source_location,\n              self_count\n            from _callstacks_for_callsites!((\n              select p.callsite_id\n              from instruments_sample p\n              where p.ts >= ${e.ts}\n                and p.ts <= ${e.ts}\n                and p.utid = ${i}\n            ))\n          )\n        `,[{name:\"Instruments Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module appleos.instruments.samples\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]),r={schema:c.FLAMEGRAPH_STATE_SCHEMA,state:c.Flamegraph.createDefaultState(t)};const n=new s.QueryFlamegraph(a,t,r);return{render:()=>o(a,n,l.Time.fromRaw(e.ts)),serialization:r}}})};const n=Jr.__importDefault(xe()),t=Ue(),r=He(),s=Nu(),a=qe(),i=Ns(),l=Fe(),c=Ru(),u=Ge(),d=ze(),p=mc();function o(e,t,r){return(0,n.default)(\".pf-flamegraph-profile\",(0,n.default)(a.DetailsShell,{fillParent:!0,title:\"Instruments Samples\",buttons:(0,n.default)(p.Stack,{orientation:\"horizontal\",spacing:\"large\"},[(0,n.default)(\"span\",[\"First timestamp: \",(0,n.default)(i.Timestamp,{trace:e,ts:r})]),(0,n.default)(\"span\",[\"Last timestamp: \",(0,n.default)(i.Timestamp,{trace:e,ts:r})])])},t.render()))}}return AP}function CP(){if(!EP){EP=1,Object.defineProperty(SP,\"__esModule\",{value:!0});var e=Jr;const u=Ue(),d=Pe(),p=OP(),f=Du(),h=We(),m=e.__importDefault(Vc()),g=eu(),_=Nu(),y=Ru(),T=\"InstrumentsSamplesProfileTrack\";class t{static id=\"dev.perfetto.InstrumentsSamplesProfile\";static dependencies=[m.default];async onTraceLoad(r){for(var e=(await r.engine.query(`\n      select distinct upid\n      from instruments_sample\n      join thread using (utid)\n      where callsite_id is not null and upid is not null\n    `)).iter({upid:u.NUM});e.valid();e.next()){var t=e.upid,n=c(t),t=(r.tracks.registerTrack({uri:n,tags:{kind:T,upid:t},renderer:(0,p.createProcessInstrumentsSamplesProfileTrack)(r,n,t)}),r.plugins.getPlugin(m.default).getGroupForProcess(t)),n=new h.TrackNode({uri:n,name:\"Process Callstacks\",sortOrder:-40});t?.addChildInOrder(n)}for(var a=(await r.engine.query(`\n      select distinct\n        utid,\n        tid,\n        thread.name as threadName,\n        upid\n      from instruments_sample\n      join thread using (utid)\n      where callsite_id is not null\n    `)).iter({utid:u.NUM,tid:u.NUM,threadName:u.STR_NULL,upid:u.NUM_NULL});a.valid();a.next()){var{threadName:i,utid:o,tid:s,upid:l}=a,i=null===i?\"Thread Callstacks \"+s:i+\" Callstacks \"+s,s=(0,f.getThreadUriPrefix)(l,o)+\"_instruments_samples_profile\",l=(r.tracks.registerTrack({uri:s,tags:{kind:T,utid:o,upid:l??void 0},renderer:(0,p.createThreadInstrumentsSamplesProfileTrack)(r,s,o)}),r.plugins.getPlugin(m.default).getGroupForThread(o)),o=new h.TrackNode({uri:s,name:i,sortOrder:-50});l?.addChildInOrder(o)}r.onTraceReady.addListener(async()=>{var e,t;e=r,await(1!==(t=await(0,d.assertExists)(e.engine).query(`\n    select upid\n    from instruments_sample\n    join thread using (utid)\n    where callsite_id is not null\n    order by ts desc\n    limit 1\n  `)).numRows()||(t=t.firstRow({upid:u.NUM}).upid,!e.selection.selectArea({start:e.traceInfo.start,end:e.traceInfo.end,trackUris:[c(t)]})))}),r.selection.registerAreaSelectionTab(function(r){let n,a;return{id:\"instruments_sample_flamegraph\",name:\"Instruments Sample Flamegraph\",render(e){var t=void 0===n||!(0,g.areaSelectionsEqual)(n,e);if(t&&(a=function(e,t){var r=function(e){var t=[];for(const r of e.tracks)r?.tags?.kind===T&&void 0===r.tags?.utid&&t.push((0,d.assertExists)(r.tags?.upid));return t}(t),n=function(e){var t=[];for(const r of e.tracks)r?.tags?.kind===T&&void 0!==r.tags?.utid&&t.push(r.tags?.utid);return t}(t);if(0===n.length&&0===r.length)return;t=(0,_.metricsFromTableOrSubquery)(`\n      (\n        select id, parent_id as parentId, name, self_count\n        from _callstacks_for_callsites!((\n          select p.callsite_id\n          from instruments_sample p\n          join thread t using (utid)\n          where p.ts >= ${t.start}\n            and p.ts <= ${t.end}\n            and (\n              p.utid in (${n.join(\",\")})\n              or t.upid in (${r.join(\",\")})\n            )\n        ))\n      )\n    `,[{name:\"Instruments Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module appleos.instruments.samples\");return new _.QueryFlamegraph(e,t,{state:y.Flamegraph.createDefaultState(t)})}(r,e),n=e),void 0!==a)return{isLoading:!1,content:a.render()}}}}(r))}}function c(e){return`/process_${e}/instruments_samples_profile`}SP.default=t}return SP}var wP,kP={};var IP,RP,NP={},MP={};function PP(){if(!IP){IP=1,Object.defineProperty(MP,\"__esModule\",{value:!0}),MP.createProcessPerfSamplesProfileTrack=function(a,e,i){return new u.DatasetSliceTrack({trace:a,uri:e,dataset:new d.SourceDataset({schema:{id:t.NUM,ts:t.LONG,callsiteId:t.NUM},src:`\n       SELECT\n          p.id,\n          ts,\n          callsite_id as callsiteId,\n          upid\n        FROM perf_sample p\n        JOIN thread using (utid)\n        WHERE callsite_id IS NOT NULL\n        ORDER BY ts\n      `,filter:{col:\"upid\",eq:i}}),sliceName:()=>\"Perf Sample\",colorizer:e=>(0,r.getColorForSample)(e.callsiteId),detailsPanel:e=>{var t=(0,s.metricsFromTableOrSubquery)(`\n          (\n            select\n              id,\n              parent_id as parentId,\n              name,\n              mapping_name,\n              source_file || ':' || line_number as source_location,\n              self_count\n            from _callstacks_for_callsites!((\n              select p.callsite_id\n              from perf_sample p\n              join thread t using (utid)\n              where p.ts >= ${e.ts}\n                and p.ts <= ${e.ts}\n                and t.upid = ${i}\n            ))\n          )\n        `,[{name:\"Perf Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module linux.perf.samples\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]),r={schema:c.FLAMEGRAPH_STATE_SCHEMA,state:c.Flamegraph.createDefaultState(t)};const n=new s.QueryFlamegraph(a,t,r);return{render:()=>o(a,n,l.Time.fromRaw(e.ts)),serialization:r}}})},MP.createThreadPerfSamplesProfileTrack=function(a,e,i){return new u.DatasetSliceTrack({trace:a,uri:e,dataset:new d.SourceDataset({schema:{id:t.NUM,ts:t.LONG,callsiteId:t.NUM},src:`\n        SELECT\n          p.id,\n          ts,\n          callsite_id as callsiteId,\n          utid\n        FROM perf_sample p\n        WHERE callsite_id IS NOT NULL\n        ORDER BY ts\n      `,filter:{col:\"utid\",eq:i}}),sliceName:()=>\"Perf Sample\",colorizer:e=>(0,r.getColorForSample)(e.callsiteId),detailsPanel:e=>{var t=(0,s.metricsFromTableOrSubquery)(`\n          (\n            select\n              id,\n              parent_id as parentId,\n              name,\n              mapping_name,\n              source_file || ':' || line_number as source_location,\n              self_count\n            from _callstacks_for_callsites!((\n              select p.callsite_id\n              from perf_sample p\n              where p.ts >= ${e.ts}\n                and p.ts <= ${e.ts}\n                and p.utid = ${i}\n            ))\n          )\n        `,[{name:\"Perf Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module linux.perf.samples\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]),r={schema:c.FLAMEGRAPH_STATE_SCHEMA,state:c.Flamegraph.createDefaultState(t)};const n=new s.QueryFlamegraph(a,t,r);return{render:()=>o(a,n,l.Time.fromRaw(e.ts)),serialization:r}}})};const n=Jr.__importDefault(xe()),t=Ue(),r=He(),s=Nu(),a=qe(),i=Ns(),l=Fe(),c=Ru(),u=Ge(),d=ze(),p=mc();function o(e,t,r){return(0,n.default)(\".pf-flamegraph-profile\",(0,n.default)(a.DetailsShell,{fillParent:!0,title:\"Perf Samples\",buttons:(0,n.default)(p.Stack,{orientation:\"horizontal\",spacing:\"large\"},[(0,n.default)(\"span\",[\"First timestamp: \",(0,n.default)(i.Timestamp,{trace:e,ts:r})]),(0,n.default)(\"span\",[\"Last timestamp: \",(0,n.default)(i.Timestamp,{trace:e,ts:r})])])},t.render()))}}return MP}function DP(){if(!RP){RP=1,Object.defineProperty(NP,\"__esModule\",{value:!0});var e=Jr;const l=Pe(),c=Nu(),u=eu(),d=$e(),s=Du(),p=We(),f=Ue(),h=Ru(),m=e.__importDefault(Vc());e=e.__importDefault(Xh());const g=Ld(),_=PP(),y=\"PerfSamplesProfileTrack\";class t{static id=\"dev.perfetto.LinuxPerf\";static dependencies=[m.default,e.default];async onTraceLoad(r){await this.addProcessPerfSamplesTracks(r),await this.addThreadPerfSamplesTracks(r),await this.addPerfCounterTracks(r),r.onTraceReady.addListener(async()=>{var e,t;e=r,await(1!==(t=await(0,l.assertExists)(e.engine).query(`\n    select upid\n    from perf_sample\n    join thread using (utid)\n    where callsite_id is not null\n    order by ts desc\n    limit 1\n  `)).numRows()||(t=t.firstRow({upid:f.NUM}).upid,!e.selection.selectArea({start:e.traceInfo.start,end:e.traceInfo.end,trackUris:[o(t)]})))})}async addProcessPerfSamplesTracks(e){var t=await e.engine.query(`\n      SELECT DISTINCT upid\n      FROM perf_sample\n      JOIN thread USING (utid)\n      WHERE\n        callsite_id IS NOT NULL AND\n        upid IS NOT NULL\n    `);const r=[];for(var n=t.iter({upid:f.NUM});n.valid();n.next()){var a=n.upid,i=o(a),a=(r.push(i),e.tracks.registerTrack({uri:i,tags:{kind:y,upid:a},renderer:(0,_.createProcessPerfSamplesProfileTrack)(e,i,a)}),e.plugins.getPlugin(m.default).getGroupForProcess(a)),i=new p.TrackNode({uri:i,name:\"Process Callstacks\",sortOrder:-40});a?.addChildInOrder(i)}e.commands.registerCommand({id:\"dev.perfetto.SelectAllPerfSamples\",name:\"Select all perf samples\",callback:()=>{e.selection.selectArea({start:e.traceInfo.start,end:e.traceInfo.end,trackUris:r})}})}async addThreadPerfSamplesTracks(e){for(var t=(await e.engine.query(`\n      select distinct\n        utid,\n        tid,\n        thread.name as threadName,\n        upid\n      from perf_sample\n      join thread using (utid)\n      where callsite_id is not null\n    `)).iter({utid:f.NUM,tid:f.NUM,threadName:f.STR_NULL,upid:f.NUM_NULL});t.valid();t.next()){var{threadName:r,utid:n,tid:a,upid:i}=t,r=null===r?\"Thread Callstacks \"+a:r+\" Callstacks \"+a,a=(0,s.getThreadUriPrefix)(i,n)+\"_perf_samples_profile\",i=(e.tracks.registerTrack({uri:a,tags:{kind:y,utid:n,upid:i??void 0},renderer:(0,_.createThreadPerfSamplesProfileTrack)(e,a,n)}),e.plugins.getPlugin(m.default).getGroupForThread(n)),n=new p.TrackNode({uri:a,name:r,sortOrder:-50});i?.addChildInOrder(n)}}async addPerfCounterTracks(e){for(var t=new p.TrackNode({name:\"Perf Counters\",isSummary:!0}),r=(await e.engine.query(`\n      select\n        id,\n        name,\n        unit,\n        cpu\n      from perf_counter_track\n      order by name, cpu\n    `)).iter({id:f.NUM,name:f.STR_NULL,unit:f.STR_NULL,cpu:f.NUM_NULL});r.valid();r.next()){var{id:n,name:a,unit:i,cpu:o}=r,s=\"/counter_\"+n,a=null===o?\"\"+a:`Cpu ${o} `+a,o=(e.tracks.registerTrack({uri:s,tags:{kind:d.COUNTER_TRACK_KIND,trackIds:[n],cpu:o??void 0},renderer:new g.TraceProcessorCounterTrack(e,s,{yMode:\"rate\",unit:i??void 0},n,a)}),new p.TrackNode({uri:s,name:a}));t.addChildLast(o)}t.hasChildren&&e.workspace.addChildInOrder(t),e.selection.registerAreaSelectionTab(function(r){let n,a;return{id:\"perf_sample_flamegraph\",name:\"Perf Sample Flamegraph\",render(e){var t=void 0===n||!(0,u.areaSelectionsEqual)(n,e);if(t&&(a=function(e,t){var r=function(e){var t=[];for(const r of e.tracks)r?.tags?.kind===y&&void 0===r.tags?.utid&&t.push((0,l.assertExists)(r.tags?.upid));return t}(t),n=function(e){var t=[];for(const r of e.tracks)r?.tags?.kind===y&&void 0!==r.tags?.utid&&t.push(r.tags?.utid);return t}(t);if(0===n.length&&0===r.length)return;t=(0,c.metricsFromTableOrSubquery)(`\n      (\n        select\n          id,\n          parent_id as parentId,\n          name,\n          mapping_name,\n          source_file || ':' || line_number as source_location,\n          self_count\n        from _callstacks_for_callsites!((\n          select p.callsite_id\n          from perf_sample p\n          join thread t using (utid)\n          where p.ts >= ${t.start}\n            and p.ts <= ${t.end}\n            and (\n              p.utid in (${n.join(\",\")})\n              or t.upid in (${r.join(\",\")})\n            )\n        ))\n      )\n    `,[{name:\"Perf Samples\",unit:\"\",columnName:\"self_count\"}],\"include perfetto module linux.perf.samples\",[{name:\"mapping_name\",displayName:\"Mapping\"}],[{name:\"source_location\",displayName:\"Source Location\",mergeAggregation:\"ONE_OR_SUMMARY\"}]);return new c.QueryFlamegraph(e,t,{state:h.Flamegraph.createDefaultState(t)})}(r,e),n=e),void 0!==a)return{isLoading:!1,content:a.render()}}}}(e))}}function o(e){return`/process_${e}/perf_samples_profile`}NP.default=t}return NP}var xP,LP={},FP={},UP={},BP={},jP={exports:{}};function HP(){if(!xP){xP=1;var e=jP.exports;{function c(e,t,r){return e.fields=t||[],e.fname=r,e}function L(e){return null==e?null:e.fname}function s(e){return null==e?null:e.fields}function u(e){return 1===e.length?Se(e[0]):Ae(e)}const Se=t=>function(e){return e[t]},Ae=r=>{const n=r.length;return function(t){for(let e=0;e<n;++e)t=t[r[e]];return t}};function d(e){throw Error(e)}function p(e){const t=[],r=e.length;let n=null,a=0,i=\"\",o,s,l;function c(){t.push(i+e.substring(o,s)),i=\"\",o=s+1}for(e+=\"\",o=s=0;s<r;++s)\"\\\\\"===(l=e[s])?(i+=e.substring(o,s++),o=s):l===n?(c(),n=null,a=-1):n||(o===a&&'\"'===l||o===a&&\"'\"===l?(o=s+1,n=l):\".\"!==l||a?\"[\"===l?(s>o&&c(),a=o=s+1):\"]\"===l&&(a||d(\"Access path missing open bracket: \"+e),0<a&&c(),a=0,o=s+1):s>o?c():o=s+1);return a&&d(\"Access path missing closing bracket: \"+e),n&&d(\"Access path missing closing quote: \"+e),s>o&&(s++,c()),t}function l(e,t,r){var n=p(e);return e=1===n.length?n[0]:e,c((r&&r.get||u)(n),[e],t||e)}const Oe=l(\"id\"),E=c(e=>e,[],\"identity\"),Ce=c(()=>0,[],\"zero\"),we=c(()=>1,[],\"one\"),ke=c(()=>!0,[],\"true\"),Ie=c(()=>!1,[],\"false\");function F(e,t,r){t=[t].concat([].slice.call(r));console[e].apply(console,t)}const S=0,A=1,O=2,C=3,w=4;function U(e,t,r=F){let n=e||S;return{level(e){return arguments.length?(n=+e,this):n},error(){return n>=A&&r(t||\"error\",\"ERROR\",arguments),this},warn(){return n>=O&&r(t||\"warn\",\"WARN\",arguments),this},info(){return n>=C&&r(t||\"log\",\"INFO\",arguments),this},debug(){return n>=w&&r(t||\"log\",\"DEBUG\",arguments),this}}}var o=Array.isArray;function f(e){return e===Object(e)}const k=e=>\"__proto__\"!==e;function B(...e){return e.reduce((e,t)=>{for(const n in t){var r;\"signals\"===n?e.signals=j(e.signals,t.signals):(r=\"legend\"===n?{layout:1}:\"style\"===n||null,h(e,n,t[n],r))}return e},{})}function h(r,n,a,i){if(k(n)){let e,t;if(f(a)&&!o(a))for(e in t=f(r[n])?r[n]:r[n]={},a)i&&(!0===i||i[e])?h(t,e,a[e]):k(e)&&(t[e]=a[e]);else r[n]=a}}function j(e,t){if(null==e)return t;const r={},n=[];function a(e){r[e.name]||(r[e.name]=1,n.push(e))}return t.forEach(a),e.forEach(a),n}function m(e){return e[e.length-1]}function n(e){return null==e||\"\"===e?null:+e}const I=t=>e=>t*Math.exp(e),R=t=>e=>Math.log(t*e),N=t=>e=>Math.sign(e)*Math.log1p(Math.abs(e/t)),M=t=>e=>Math.sign(e)*Math.expm1(Math.abs(e))*t,P=t=>e=>e<0?-Math.pow(-e,t):Math.pow(e,t);function a(e,t,r,n){var a=r(e[0]),r=r(m(e)),e=(r-a)*t;return[n(a-e),n(r-e)]}function H(e,t){return a(e,t,n,E)}function G(e,t){var r=Math.sign(e[0]);return a(e,t,R(r),I(r))}function V(e,t,r){return a(e,t,P(r),P(1/r))}function q(e,t,r){return a(e,t,N(r),M(r))}function i(e,t,r,n,a){var i=n(e[0]),e=n(m(e)),n=null!=t?n(t):(i+e)/2;return[a(n+(i-n)*r),a(n+(e-n)*r)]}function z(e,t,r){return i(e,t,r,n,E)}function W(e,t,r){var n=Math.sign(e[0]);return i(e,t,r,R(n),I(n))}function $(e,t,r,n){return i(e,t,r,P(n),P(1/n))}function K(e,t,r,n){return i(e,t,r,N(n),M(n))}function Y(e){return 1+~~(new Date(e).getMonth()/3)}function J(e){return 1+~~(new Date(e).getUTCMonth()/3)}function g(e){return null!=e?o(e)?e:[e]:[]}function Q(e,t,r){let n=e[0],a=e[1],i;return a<n&&(i=a,a=n,n=i),(i=a-n)>=r-t?[t,r]:[n=Math.min(Math.max(n,t),r-i),n+i]}function _(e){return\"function\"==typeof e}const Re=\"descending\";function Z(e,r,n){n=n||{},r=g(r)||[];const a=[],i=[],o={},t=n.comparator||Ne;return g(e).forEach((e,t)=>{null!=e&&(a.push(r[t]===Re?-1:1),i.push(e=_(e)?e:l(e,null,n)),(s(e)||[]).forEach(e=>o[e]=1))}),0===i.length?null:c(t(i,a),Object.keys(o))}const D=(e,t)=>(e<t||null==e)&&null!=t?-1:(t<e||null==t)&&null!=e?1:(t=t instanceof Date?+t:t,(e=e instanceof Date?+e:e)!==e&&t==t?-1:t!=t&&e==e?1:0),Ne=(e,t)=>1===e.length?Me(e[0],t[0]):Pe(e,t,e.length),Me=(r,n)=>function(e,t){return D(r(e),r(t))*n},Pe=(i,o,s)=>(o.push(0),function(e,t){let r,n=0,a=-1;for(;0===n&&++a<s;)r=i[a],n=D(r(e),r(t));return n*o[a]});function X(e){return _(e)?e:()=>e}function ee(t,r){let n;return e=>{n&&clearTimeout(n),n=setTimeout(()=>(r(e),n=null),t)}}function y(a){for(let e,t,r=1,n=arguments.length;r<n;++r)for(t in e=arguments[r])a[t]=e[t];return a}function te(e,t){let r=0,n,a,i,o;if(e&&(n=e.length))if(null==t){for(a=e[r];r<n&&(null==a||a!=a);a=e[++r]);for(i=o=a;r<n;++r)null!=(a=e[r])&&(a<i&&(i=a),a>o)&&(o=a)}else{for(a=t(e[r]);r<n&&(null==a||a!=a);a=t(e[++r]));for(i=o=a;r<n;++r)null!=(a=t(e[r]))&&(a<i&&(i=a),a>o)&&(o=a)}return[i,o]}function re(e,t){var r=e.length;let n=-1,a,i,o,s,l;if(null==t){for(;++n<r;)if(null!=(i=e[n])&&i>=i){a=o=i;break}if(n===r)return[-1,-1];for(s=l=n;++n<r;)null!=(i=e[n])&&(a>i&&(a=i,s=n),o<i)&&(o=i,l=n)}else{for(;++n<r;)if(null!=(i=t(e[n],n,e))&&i>=i){a=o=i;break}if(n===r)return[-1,-1];for(s=l=n;++n<r;)null!=(i=t(e[n],n,e))&&(a>i&&(a=i,s=n),o<i)&&(o=i,l=n)}return[s,l]}const De=Object.prototype.hasOwnProperty;function T(e,t){return De.call(e,t)}const x={};function ne(t){let a={},i;function r(e){return T(a,e)&&a[e]!==x}const o={size:0,empty:0,object:a,has:r,get(e){return r(e)?a[e]:void 0},set(e,t){return r(e)||(++o.size,a[e]===x&&--o.empty),a[e]=t,this},delete(e){return r(e)&&(--o.size,++o.empty,a[e]=x),this},clear(){o.size=o.empty=0,o.object=a={}},test(e){return arguments.length?(i=e,o):i},clean(){var e={};let t=0;for(const n in a){var r=a[n];r===x||i&&i(r)||(e[n]=r,++t)}o.size=t,o.empty=0,o.object=a=e}};return t&&Object.keys(t).forEach(e=>{o.set(e,t[e])}),o}function ae(e,t,r,n,a,i){if(!r&&0!==r)return i;r=+r;let o=e[0],s=m(e),l;s<o&&(l=o,o=s,s=l),l=Math.abs(t-o);e=Math.abs(s-t);return l<e&&l<=r?n:e<=r?a:i}function ie(e,t,r){t=e.prototype=Object.create(t.prototype);return Object.defineProperty(t,\"constructor\",{value:e,writable:!0,enumerable:!0,configurable:!0}),y(t,r)}function oe(e,t,r,n){let a=t[0],i=t[t.length-1],o;return a>i&&(o=a,a=i,i=o),n=void 0===n||n,((r=void 0===r||r)?a<=e:a<e)&&(n?e<=i:e<i)}function se(e){return\"boolean\"==typeof e}function t(e){return\"[object Date]\"===Object.prototype.toString.call(e)}function le(e){return e&&_(e[Symbol.iterator])}function r(e){return\"number\"==typeof e}function ce(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}function v(e){return\"string\"==typeof e}function ue(e,t,r){const n=(e=e&&(t?g(e).map(e=>e.replace(/\\\\(.)/g,\"$1\")):g(e)))&&e.length,a=r&&r.get||u,i=e=>a(t?[e]:p(e));let o;if(n)if(1===n){const s=i(e[0]);o=function(e){return\"\"+s(e)}}else{const l=e.map(i);o=function(e){let t=\"\"+l[0](e),r=0;for(;++r<n;)t+=\"|\"+l[r](e);return t}}else o=function(){return\"\"};return c(o,e,\"key\")}function de(e,t){var r=e[0],e=m(e),t=+t;return t?1==t?e:r+t*(e-r):r}const xe=1e4;function pe(r){r=+r||xe;let n,a,i;var e=()=>{n={},a={},i=0};const o=(e,t)=>(++i>r&&(a=n,n={},i=1),n[e]=t);return e(),{clear:e,has:e=>T(n,e)||T(a,e),get:e=>T(n,e)?n[e]:T(a,e)?o(e,a[e]):void 0,set:(e,t)=>T(n,e)?n[e]=t:o(e,t)}}function fe(e,t,r,n){var a=t.length,i=r.length;if(!i)return t;if(!a)return r;var o=n||new t.constructor(a+i);let s=0,l=0,c=0;for(;s<a&&l<i;++c)o[c]=0<e(t[s],r[l])?r[l++]:t[s++];for(;s<a;++s,++c)o[c]=t[s];for(;l<i;++l,++c)o[c]=r[l];return o}function b(e,t){let r=\"\";for(;0<=--t;)r+=e;return r}function he(e,t,r,n){r=r||\" \",e+=\"\",t-=e.length;return t<=0?e:\"left\"===n?b(r,t)+e:\"center\"===n?b(r,~~(t/2))+e+b(r,Math.ceil(t/2)):e+b(r,t)}function me(e){return e&&m(e)-e[0]||0}function ge(e){return o(e)?\"[\"+e.map(ge)+\"]\":f(e)||v(e)?JSON.stringify(e).replace(\"\\u2028\",\"\\\\u2028\").replace(\"\\u2029\",\"\\\\u2029\"):e}function _e(e){return null==e||\"\"===e?null:!(!e||\"false\"===e||\"0\"===e||!e)}const Le=e=>r(e)||t(e)?e:Date.parse(e);function ye(e,t){return t=t||Le,null==e||\"\"===e?null:t(e)}function Te(e){return null==e||\"\"===e?null:e+\"\"}function ve(t){var r={},n=t.length;for(let e=0;e<n;++e)r[t[e]]=!0;return r}function be(e,t,r,n){var n=null!=n?n:\"…\",e=e+\"\",a=e.length,i=Math.max(0,t-n.length);return a<=t?e:\"left\"===r?n+e.slice(a-i):\"center\"===r?e.slice(0,Math.ceil(i/2))+n+e.slice(a-~~(i/2)):e.slice(0,i)+n}function Ee(t,r,n){if(t)if(r){var a=t.length;for(let e=0;e<a;++e){var i=r(t[e]);i&&n(i,e,t)}}else t.forEach(n)}e.Debug=w,e.Error=A,e.Info=C,e.None=S,e.Warn=O,e.accessor=c,e.accessorFields=s,e.accessorName=L,e.array=g,e.ascending=D,e.clampRange=Q,e.compare=Z,e.constant=X,e.debounce=ee,e.error=d,e.extend=y,e.extent=te,e.extentIndex=re,e.falsy=Ie,e.fastmap=ne,e.field=l,e.flush=ae,e.hasOwnProperty=T,e.id=Oe,e.identity=E,e.inherits=ie,e.inrange=oe,e.isArray=o,e.isBoolean=se,e.isDate=t,e.isFunction=_,e.isIterable=le,e.isNumber=r,e.isObject=f,e.isRegExp=ce,e.isString=v,e.key=ue,e.lerp=de,e.logger=U,e.lruCache=pe,e.merge=fe,e.mergeConfig=B,e.one=we,e.pad=he,e.panLinear=H,e.panLog=G,e.panPow=V,e.panSymlog=q,e.peek=m,e.quarter=Y,e.repeat=b,e.span=me,e.splitAccessPath=p,e.stringValue=ge,e.toBoolean=_e,e.toDate=ye,e.toNumber=n,e.toSet=ve,e.toString=Te,e.truncate=be,e.truthy=ke,e.utcquarter=J,e.visitArray=Ee,e.writeConfig=h,e.zero=Ce,e.zoomLinear=z,e.zoomLog=W,e.zoomPow=$,e.zoomSymlog=K}}return jP.exports}var GP,VP={exports:{}},qP={exports:{}},zP={exports:{}};function WP(){var e;return GP||(GP=1,(e=zP.exports).bbox=h,e.feature=function(t,e){\"string\"==typeof e&&(e=t.objects[e]);return\"GeometryCollection\"===e.type?{type:\"FeatureCollection\",features:e.geometries.map(function(e){return r(t,e)})}:r(t,e)},e.merge=function(e){return u(e,a.apply(this,arguments))},e.mergeArcs=a,e.mesh=function(e){return u(e,n.apply(this,arguments))},e.meshArcs=n,e.neighbors=function(e){var n={},t=e.map(function(){return[]});function r(e,r){e.forEach(function(e){var t=n[e=e<0?~e:e];t?t.push(r):n[e]=[r]})}function a(e,t){e.forEach(function(e){r(e,t)})}var i,o={LineString:r,MultiLineString:a,Polygon:a,MultiPolygon:function(e,t){e.forEach(function(e){a(e,t)})}};for(i in e.forEach(function t(e,r){\"GeometryCollection\"===e.type?e.geometries.forEach(function(e){t(e,r)}):e.type in o&&o[e.type](e.arcs,r)}),n)for(var s=n[i],l=s.length,c=0;c<l;++c)for(var u=c+1;u<l;++u){var d,p=s[c],f=s[u];(d=t[p])[i=m(d,f)]!==f&&d.splice(i,0,f),(d=t[f])[i=m(d,p)]!==p&&d.splice(i,0,p)}return t},e.quantize=function(e,t){if(e.transform)throw new Error(\"already quantized\");if(t&&t.scale)s=e.bbox;else{if(!(2<=(r=Math.floor(t))))throw new Error(\"n must be ≥2\");var r,n=(s=e.bbox||h(e))[0],a=s[1],i=s[2],o=s[3];t={scale:[i-n?(i-n)/(r-1):1,o-a?(o-a)/(r-1):1],translate:[n,a]}}var s,l,c=g(t),u=e.objects,d={};function p(e){return c(e)}function f(e){var t;switch(e.type){case\"GeometryCollection\":t={type:\"GeometryCollection\",geometries:e.geometries.map(f)};break;case\"Point\":t={type:\"Point\",coordinates:p(e.coordinates)};break;case\"MultiPoint\":t={type:\"MultiPoint\",coordinates:e.coordinates.map(p)};break;default:return e}return null!=e.id&&(t.id=e.id),null!=e.bbox&&(t.bbox=e.bbox),null!=e.properties&&(t.properties=e.properties),t}for(l in u)d[l]=f(u[l]);return{type:\"Topology\",bbox:s,transform:t,objects:d,arcs:e.arcs.map(function(e){var t,r=0,n=1,a=e.length,i=new Array(a);for(i[0]=c(e[0],0);++r<a;)((t=c(e[r],r))[0]||t[1])&&(i[n++]=t);return 1===n&&(i[n++]=[0,0]),i.length=n,i})}},e.transform=c,e.untransform=g,Object.defineProperty(e,\"__esModule\",{value:!0})),zP.exports;function t(e){return e}function c(e){var i,o,s,l,c,u;return null==e?t:(s=e.scale[0],l=e.scale[1],c=e.translate[0],u=e.translate[1],function(e,t){t||(i=o=0);var r=2,n=e.length,a=new Array(n);for(a[0]=(i+=e[0])*s+c,a[1]=(o+=e[1])*l+u;r<n;)a[r]=e[r],++r;return a})}function h(e){var t,a=c(e.transform),i=1/0,o=i,s=-i,l=-i;function r(e){(e=a(e))[0]<i&&(i=e[0]),e[0]>s&&(s=e[0]),e[1]<o&&(o=e[1]),e[1]>l&&(l=e[1])}function n(e){switch(e.type){case\"GeometryCollection\":e.geometries.forEach(n);break;case\"Point\":r(e.coordinates);break;case\"MultiPoint\":e.coordinates.forEach(r)}}for(t in e.arcs.forEach(function(e){for(var t,r=-1,n=e.length;++r<n;)(t=a(e[r],r))[0]<i&&(i=t[0]),t[0]>s&&(s=t[0]),t[1]<o&&(o=t[1]),t[1]>l&&(l=t[1])}),e.objects)n(e.objects[t]);return[i,o,s,l]}function r(e,t){var r=t.id,n=t.bbox,a=null==t.properties?{}:t.properties,e=u(e,t);return null==r&&null==n?{type:\"Feature\",properties:a,geometry:e}:null==n?{type:\"Feature\",id:r,properties:a,geometry:e}:{type:\"Feature\",id:r,bbox:n,properties:a,geometry:e}}function u(e,t){var f=c(e.transform),h=e.arcs;function a(e){return f(e)}function i(e){for(var t=[],r=0,n=e.length;r<n;++r){p=d=c=u=l=s=o=i=a=void 0;var a=e[r],i=t;i.length&&i.pop();for(var o=h[a<0?~a:a],s=0,l=o.length;s<l;++s)i.push(f(o[s],s));if(a<0)for(var c,u=i,a=l,d=u.length,p=d-a;p<--d;)c=u[p],u[p++]=u[d],u[d]=c}return t.length<2&&t.push(t[0]),t}function r(e){for(var t=i(e);t.length<4;)t.push(t[0]);return t}function o(e){return e.map(r)}return function e(t){var r,n=t.type;switch(n){case\"GeometryCollection\":return{type:n,geometries:t.geometries.map(e)};case\"Point\":r=a(t.coordinates);break;case\"MultiPoint\":r=t.coordinates.map(a);break;case\"LineString\":r=i(t.arcs);break;case\"MultiLineString\":r=t.arcs.map(i);break;case\"Polygon\":r=o(t.arcs);break;case\"MultiPolygon\":r=t.arcs.map(o);break;default:return null}return{type:n,coordinates:r}}(t)}function f(o,n){var a={},s={},l={},i=[],c=-1;function e(e,t){for(var r in e){r=e[r];delete t[r.start],delete r.start,delete r.end,r.forEach(function(e){a[e<0?~e:e]=1}),i.push(r)}}return n.forEach(function(e,t){var r=o.arcs[e<0?~e:e];r.length<3&&!r[1][0]&&!r[1][1]&&(r=n[++c],n[c]=e,n[t]=r)}),n.forEach(function(e){var t,r,n,a=function(e){var t,r=o.arcs[e<0?~e:e],n=r[0];o.transform?(t=[0,0],r.forEach(function(e){t[0]+=e[0],t[1]+=e[1]})):t=r[r.length-1];return e<0?[t,n]:[n,t]}(e),i=a[0],a=a[1];(t=l[i])?(delete l[t.end],t.push(e),t.end=a,(r=s[a])?(delete s[r.start],n=r===t?t:t.concat(r),s[n.start=t.start]=l[n.end=r.end]=n):s[t.start]=l[t.end]=t):(t=s[a])?(delete s[t.start],t.unshift(e),t.start=i,(r=l[i])?(delete l[r.end],n=r===t?t:r.concat(t),s[n.start=r.start]=l[n.end=t.end]=n):s[t.start]=l[t.end]=t):s[(t=[e]).start=i]=l[t.end=a]=t}),e(l,s),e(s,l),n.forEach(function(e){a[e<0?~e:e]||i.push([e])}),i}function n(e,t,r){var n,a,i,o,s,l,c;if(1<arguments.length)o=r,l=[],c=[],function e(t){switch((s=t).type){case\"GeometryCollection\":t.geometries.forEach(e);break;case\"LineString\":d(t.arcs);break;case\"MultiLineString\":case\"Polygon\":p(t.arcs);break;case\"MultiPolygon\":t.arcs.forEach(p)}}(t),c.forEach(null==o?function(e){l.push(e[0].i)}:function(e){o(e[0].g,e[e.length-1].g)&&l.push(e[0].i)}),n=l;else for(a=0,n=new Array(i=e.arcs.length);a<i;++a)n[a]=a;function u(e){var t=e<0?~e:e;(c[t]||(c[t]=[])).push({i:e,g:s})}function d(e){e.forEach(u)}function p(e){e.forEach(d)}return{type:\"MultiLineString\",arcs:f(e,n)}}function a(s,e){var l={},r=[],n=[];function a(t){t.forEach(function(e){e.forEach(function(e){(l[e=e<0?~e:e]||(l[e]=[])).push(t)})}),r.push(t)}function c(e){for(var t,r=u(s,{type:\"Polygon\",arcs:[e]}).coordinates[0],n=-1,a=r.length,i=r[a-1],o=0;++n<a;)t=i,i=r[n],o+=t[0]*i[1]-t[1]*i[0];return Math.abs(o)}return e.forEach(function e(t){switch(t.type){case\"GeometryCollection\":t.geometries.forEach(e);break;case\"Polygon\":a(t.arcs);break;case\"MultiPolygon\":t.arcs.forEach(a)}}),r.forEach(function(e){if(!e._){var t=[],r=[e];for(e._=1,n.push(t);e=r.pop();)t.push(e),e.forEach(function(e){e.forEach(function(e){l[e<0?~e:e].forEach(function(e){e._||(e._=1,r.push(e))})})})}}),r.forEach(function(e){delete e._}),{type:\"MultiPolygon\",arcs:n.map(function(e){var t,r=[];if(e.forEach(function(e){e.forEach(function(e){e.forEach(function(e){l[e<0?~e:e].length<2&&r.push(e)})})}),1<(t=(r=f(s,r)).length))for(var n,a,i=1,o=c(r[0]);i<t;++i)(n=c(r[i]))>o&&(a=r[0],r[0]=r[i],r[i]=a,o=n);return r}).filter(function(e){return 0<e.length})}}function m(e,t){for(var r=0,n=e.length;r<n;){var a=r+n>>>1;e[a]<t?r=1+a:n=a}return r}function g(e){var o,s,l,c,u,d;return null==e?t:(l=e.scale[0],c=e.scale[1],u=e.translate[0],d=e.translate[1],function(e,t){t||(o=s=0);var r=2,n=e.length,a=new Array(n),t=Math.round((e[0]-u)/l),i=Math.round((e[1]-d)/c);for(a[0]=t-o,o=t,a[1]=i-s,s=i;r<n;)a[r]=e[r],++r;return a})}}var $P,KP,YP,JP,QP={exports:{}},ZP={exports:{}};function XP(){if(!$P){$P=1;{var e=ZP.exports;var _=HP();const y=\"year\",T=\"quarter\",v=\"month\",b=\"week\",E=\"date\",S=\"day\",A=\"dayofyear\",O=\"hours\",C=\"minutes\",w=\"seconds\",k=\"milliseconds\";var L=[y,T,v,b,E,S,A,O,C,w,k];const c=L.reduce((e,t,r)=>(e[t]=1+r,e),{});function F(e){const t=_.array(e).slice(),r={};return t.length||_.error(\"Missing time unit.\"),t.forEach(e=>{_.hasOwnProperty(c,e)?r[e]=1:_.error(`Invalid time unit: ${e}.`)}),1<(r[b]||r[S]?1:0)+(r[T]||r[v]||r[E]?1:0)+(r[A]?1:0)&&_.error(\"Incompatible time units: \"+e),t.sort((e,t)=>c[e]-c[t]),t}const ue={[y]:\"%Y \",[T]:\"Q%q \",[v]:\"%b \",[E]:\"%d \",[b]:\"W%U \",[S]:\"%a \",[A]:\"%j \",[O]:\"%H:00\",[C]:\"00:%M\",[w]:\":%S\",[k]:\".%L\",[y+\"-\"+v]:\"%Y-%m \",[`${y}-${v}-`+E]:\"%Y-%m-%d \",[O+\"-\"+C]:\"%H:%M\"};const u=new Date,d=new Date;function a(i,o,r,n){function s(e){return i(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=e=>(i(e=new Date(+e)),e),s.ceil=e=>(i(e=new Date(e-1)),o(e,1),i(e),e),s.round=e=>{var t=s(e),r=s.ceil(e);return e-t<r-e?t:r},s.offset=(e,t)=>(o(e=new Date(+e),null==t?1:Math.floor(t)),e),s.range=(e,t,r)=>{var n,a=[];if(e=s.ceil(e),r=null==r?1:Math.floor(r),e<t&&0<r)for(;a.push(n=new Date(+e)),o(e,r),i(e),n<e&&e<t;);return a},s.filter=r=>a(e=>{if(e<=e)for(;i(e),!r(e);)e.setTime(e-1)},(e,t)=>{if(e<=e)if(t<0)for(;++t<=0;)for(;o(e,-1),!r(e););else for(;0<=--t;)for(;o(e,1),!r(e););}),r&&(s.count=(e,t)=>(u.setTime(+e),d.setTime(+t),i(u),i(d),Math.floor(r(u,d))),s.every=t=>(t=Math.floor(t),isFinite(t)&&0<t?1<t?s.filter(n?e=>n(e)%t==0:e=>s.count(0,e)%t==0):s:null)),s}const p=a(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e),f=(p.every=r=>(r=Math.floor(r),isFinite(r)&&0<r?1<r?a(e=>{e.setTime(Math.floor(e/r)*r)},(e,t)=>{e.setTime(+e+t*r)},(e,t)=>(t-e)/r):p:null),p.range,6e4),h=60*f,m=24*h,de=7*m;var U=a(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+1e3*t)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),B=(U.range,a(e=>{e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds())},(e,t)=>{e.setTime(+e+t*f)},(e,t)=>(t-e)/f,e=>e.getMinutes())),j=(B.range,a(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*f)},(e,t)=>(t-e)/f,e=>e.getUTCMinutes())),H=(j.range,a(e=>{e.setTime(e-e.getMilliseconds()-1e3*e.getSeconds()-e.getMinutes()*f)},(e,t)=>{e.setTime(+e+t*h)},(e,t)=>(t-e)/h,e=>e.getHours())),G=(H.range,a(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*h)},(e,t)=>(t-e)/h,e=>e.getUTCHours()));G.range;const g=a(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/m,e=>e.getDate()-1),I=(g.range,a(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/m,e=>e.getUTCDate()-1));function t(t){return a(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*f)/de)}I.range,a(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/m,e=>Math.floor(e/m)).range;const R=t(0);var r=t(1),n=t(2),i=t(3),o=t(4),V=t(5),q=t(6);function s(t){return a(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/de)}R.range,r.range,n.range,i.range,o.range,V.range,q.range;const pe=s(0);r=s(1),n=s(2),i=s(3),o=s(4),V=s(5),q=s(6),pe.range,r.range,n.range,i.range,o.range,V.range,q.range,r=a(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth()),r.range,n=a(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth()),n.range,i=a(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear()),i.every=r=>isFinite(r=Math.floor(r))&&0<r?a(e=>{e.setFullYear(Math.floor(e.getFullYear()/r)*r),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*r)}):null,i.range,o=a(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());function z(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function W(r){let i,o,a;function s(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<0?r=1+a:n=a}while(r<n)}return r}return a=2!==r.length?(i=z,o=(e,t)=>z(r(e),t),(e,t)=>r(e)-t):(i=r===z||r===function(e,t){return null==e||null==t?NaN:t<e?-1:e<t?1:e<=t?0:NaN}?r:$,o=r),{left:s,center:function(e,t,r=0,n=e.length){return n=s(e,t,r,n-1),r<n&&a(e[n-1],t)>-a(e[n],t)?n-1:n},right:function(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<=0?r=1+a:n=a}while(r<n)}return r}}}function $(){return 0}o.every=r=>isFinite(r=Math.floor(r))&&0<r?a(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/r)*r),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*r)}):null,o.range;const fe=Math.sqrt(50),he=Math.sqrt(10),me=Math.sqrt(2);function K(e,t,r){return function e(t,r,n){var a=(r-t)/Math.max(0,n),i=Math.floor(Math.log10(a)),a=a/Math.pow(10,i),a=a>=fe?10:a>=he?5:a>=me?2:1;let o,s,l;return i<0?(l=Math.pow(10,-i)/a,o=Math.round(t*l),s=Math.round(r*l),o/l<t&&++o,s/l>r&&--s,l=-l):(l=Math.pow(10,i)*a,o=Math.round(t/l),s=Math.round(r/l),o*l<t&&++o,s*l>r&&--s),s<o&&.5<=n&&n<2?e(t,r,2*n):[o,s,l]}(e=+e,t=+t,r=+r)[2]}function Y(e,t,r){r=+r;var n=(t=+t)<(e=+e),e=n?K(t,e,r):K(e,t,r);return(n?-1:1)*(e<0?1/-e:e)}const N=new Date;function J(e){return N.setFullYear(e),N.setMonth(0),N.setDate(1),N.setHours(0,0,0,0),N}function Q(e){return g.count(J(e.getFullYear())-1,e)}function Z(e){return R.count(J(e.getFullYear())-1,e)}function X(e){return J(e).getDay()}function ee(e,t,r,n,a,i,o){var s;return 0<=e&&e<100?((s=new Date(-1,t,r,n,a,i,o)).setFullYear(e),s):new Date(e,t,r,n,a,i,o)}function te(e){var t=Date.UTC(e.getUTCFullYear(),0,1);return I.count(t-1,e)}function re(e){var t=Date.UTC(e.getUTCFullYear(),0,1);return pe.count(t-1,e)}function ne(e){return N.setTime(Date.UTC(e,0,1)),N.getUTCDay()}function ae(e,t,r,n,a,i,o){var s;return 0<=e&&e<100?((s=new Date(Date.UTC(-1,t,r,n,a,i,o))).setUTCFullYear(r.y),s):new Date(Date.UTC(e,t,r,n,a,i,o))}function ie(e,t,l,c,r){const u=t||1,d=_.peek(e),n=(e,t,r)=>{r=r||e;{var n=l[r],a=c[r],i=e===d&&u,o=t;const s=i<=1?n:o?(e,t)=>o+i*Math.floor((n(e,t)-o)/i):(e,t)=>i*Math.floor(n(e,t)/i);return a?(e,t)=>a(s(e,t),t):s}},a=new Date,i=_.toSet(e),o=i[y]?n(y):_.constant(2012),s=i[v]?n(v):i[T]?n(T):_.zero,p=i[b]&&i[S]?n(S,1,b+S):i[b]?n(b,1):i[S]?n(S,1):i[E]?n(E,1):i[A]?n(A,1):_.one,f=i[O]?n(O):_.zero,h=i[C]?n(C):_.zero,m=i[w]?n(w):_.zero,g=i[k]?n(k):_.zero;return function(e){a.setTime(+e);e=o(a);return r(e,s(a),p(a,e),f(a),h(a),m(a),g(a))}}function l(e,t,r){return t+7*e-(r+6)%7}const ge={[y]:e=>e.getFullYear(),[T]:e=>Math.floor(e.getMonth()/3),[v]:e=>e.getMonth(),[E]:e=>e.getDate(),[O]:e=>e.getHours(),[C]:e=>e.getMinutes(),[w]:e=>e.getSeconds(),[k]:e=>e.getMilliseconds(),[A]:e=>Q(e),[b]:e=>Z(e),[b+S]:(e,t)=>l(Z(e),e.getDay(),X(t)),[S]:(e,t)=>l(1,e.getDay(),X(t))},_e={[T]:e=>3*e,[b]:(e,t)=>l(e,0,X(t))};const ye={[y]:e=>e.getUTCFullYear(),[T]:e=>Math.floor(e.getUTCMonth()/3),[v]:e=>e.getUTCMonth(),[E]:e=>e.getUTCDate(),[O]:e=>e.getUTCHours(),[C]:e=>e.getUTCMinutes(),[w]:e=>e.getUTCSeconds(),[k]:e=>e.getUTCMilliseconds(),[A]:e=>te(e),[b]:e=>re(e),[S]:(e,t)=>l(1,e.getUTCDay(),ne(t)),[b+S]:(e,t)=>l(re(e),e.getUTCDay(),ne(t))},Te={[T]:e=>3*e,[b]:(e,t)=>l(e,0,ne(t))};const ve={[y]:i,[T]:r.every(3),[v]:r,[b]:R,[E]:g,[S]:g,[A]:g,[O]:H,[C]:B,[w]:U,[k]:p},be={[y]:o,[T]:n.every(3),[v]:n,[b]:pe,[E]:I,[S]:I,[A]:I,[O]:G,[C]:j,[w]:U,[k]:p};function oe(e){return ve[e]}function se(e){return be[e]}function le(e,t,r){return e?e.offset(t,r):void 0}function ce(e,t,r,n){return e?e.range(t,r,n):void 0}const Ee=31536e6,Se=[y,v,E,O,C,w,k],M=Se.slice(0,-1),P=M.slice(0,-1),D=P.slice(0,-1),Ae=D.slice(0,-1),Oe=[y,b],Ce=[y,v],we=[y],x=[[M,1,1e3],[M,5,5e3],[M,15,15e3],[M,30,3e4],[P,1,6e4],[P,5,3e5],[P,15,9e5],[P,30,18e5],[D,1,36e5],[D,3,108e5],[D,6,216e5],[D,12,432e5],[Ae,1,864e5],[Oe,1,6048e5],[Ce,1,2592e6],[Ce,3,7776e6],[we,1,Ee]];e.DATE=E,e.DAY=S,e.DAYOFYEAR=A,e.HOURS=O,e.MILLISECONDS=k,e.MINUTES=C,e.MONTH=v,e.QUARTER=T,e.SECONDS=w,e.TIME_UNITS=L,e.WEEK=b,e.YEAR=y,e.dayofyear=function(e){return Q(new Date(e))},e.timeBin=function(e){var t=e.extent,e=e.maxbins||40,r=Math.abs(_.span(t))/e;let n=W(e=>e[2]).right(x,r),a,i;return i=n===x.length?(a=we,Y(t[0]/Ee,t[1]/Ee,e)):n?(n=x[r/x[n-1][2]<x[n][2]/r?n-1:n],a=n[0],n[1]):(a=Se,Math.max(Y(t[0],t[1],e),1)),{units:a,step:i}},e.timeFloor=function(e,t){return ie(e,t||1,ge,_e,ee)},e.timeInterval=oe,e.timeOffset=function(e,t,r){return le(oe(e),t,r)},e.timeSequence=function(e,t,r,n){return ce(oe(e),t,r,n)},e.timeUnitSpecifier=function(e,t){var r=_.extend({},ue,t),n=F(e),a=n.length;let i=\"\",o=0,s,l;for(o=0;o<a;)for(s=n.length;s>o;--s)if(null!=r[l=n.slice(o,s).join(\"-\")]){i+=r[l],o=s;break}return i.trim()},e.timeUnits=F,e.utcFloor=function(e,t){return ie(e,t||1,ye,Te,ae)},e.utcInterval=se,e.utcOffset=function(e,t,r){return le(se(e),t,r)},e.utcSequence=function(e,t,r,n){return ce(se(e),t,r,n)},e.utcdayofyear=function(e){return te(new Date(e))},e.utcweek=function(e){return re(new Date(e))},e.week=function(e){return Z(new Date(e))}}}return ZP.exports}function eD(){if(!KP){KP=1;var e=QP.exports;{var v=XP(),b=HP();function n(t){const r={};return e=>r[e]||(r[e]=t(e))}const Lt=Math.sqrt(50),Ft=Math.sqrt(10),Ut=Math.sqrt(2);function U(e,t,r){var n=(t-e)/Math.max(0,r),a=Math.floor(Math.log10(n)),n=n/Math.pow(10,a),n=n>=Lt?10:n>=Ft?5:n>=Ut?2:1;let i,o,s;return a<0?(s=Math.pow(10,-a)/n,i=Math.round(e*s),o=Math.round(t*s),i/s<e&&++i,o/s>t&&--o,s=-s):(s=Math.pow(10,a)*n,i=Math.round(e/s),o=Math.round(t/s),i*s<e&&++i,o*s>t&&--o),o<i&&.5<=r&&r<2?U(e,t,2*r):[i,o,s]}function B(e,t,r){return U(e=+e,t=+t,r=+r)[2]}function j(e,t,r){r=+r;var n=(t=+t)<(e=+e),e=n?B(t,e,r):B(e,t,r);return(n?-1:1)*(e<0?1/-e:e)}function H(e){return 1e21<=Math.abs(e=Math.round(e))?e.toLocaleString(\"en\").replace(/,/g,\"\"):e.toString(10)}function i(e,t){var r;return(t=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(\"e\"))<0?null:[1<(r=e.slice(0,t)).length?r[0]+r.slice(2):r,+e.slice(t+1)]}function s(e){return(e=i(Math.abs(e)))?e[1]:NaN}function G(s,l){return function(e,t){for(var r=e.length,n=[],a=0,i=s[0],o=0;0<r&&0<i&&(t<o+i+1&&(i=Math.max(1,t-o)),n.push(e.substring(r-=i,r+i)),!((o+=i+1)>t));)i=s[a=(a+1)%s.length];return n.reverse().join(l)}}function V(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}var q,z=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function w(e){var t;if(t=z.exec(e))return new a({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]});throw new Error(\"invalid format: \"+e)}function a(e){this.fill=void 0===e.fill?\" \":e.fill+\"\",this.align=void 0===e.align?\">\":e.align+\"\",this.sign=void 0===e.sign?\"-\":e.sign+\"\",this.symbol=void 0===e.symbol?\"\":e.symbol+\"\",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?\"\":e.type+\"\"}function W(e){e:for(var t,r=e.length,n=1,a=-1;n<r;++n)switch(e[n]){case\".\":a=t=n;break;case\"0\":0===a&&(a=n),t=n;break;default:if(!+e[n])break e;0<a&&(a=0)}return 0<a?e.slice(0,a)+e.slice(t+1):e}function $(e,t){var r,n,a=i(e,t);return a?(r=a[0],(a=(a=a[1])-(q=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1)===(n=r.length)?r:n<a?r+new Array(a-n+1).join(\"0\"):0<a?r.slice(0,a)+\".\"+r.slice(a):\"0.\"+new Array(1-a).join(\"0\")+i(e,Math.max(0,t+a-1))[0]):e+\"\"}function K(e,t){var r,t=i(e,t);return t?(r=t[0],(t=t[1])<0?\"0.\"+new Array(-t).join(\"0\")+r:r.length>t+1?r.slice(0,t+1)+\".\"+r.slice(t+1):r+new Array(t-r.length+2).join(\"0\")):e+\"\"}w.prototype=a.prototype,a.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var Y={\"%\":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+\"\",d:H,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>K(100*e,t),r:K,s:$,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function J(e){return e}var o,Q,Z,X=Array.prototype.map,ee=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function te(e){var E=void 0===e.grouping||void 0===e.thousands?J:G(X.call(e.grouping,Number),e.thousands+\"\"),n=void 0===e.currency?\"\":e.currency[0]+\"\",a=void 0===e.currency?\"\":e.currency[1]+\"\",S=void 0===e.decimal?\".\":e.decimal+\"\",A=void 0===e.numerals?J:V(X.call(e.numerals,String)),i=void 0===e.percent?\"%\":e.percent+\"\",O=void 0===e.minus?\"−\":e.minus+\"\",C=void 0===e.nan?\"NaN\":e.nan+\"\";function o(e){var c=(e=w(e)).fill,u=e.align,d=e.sign,t=e.symbol,p=e.zero,f=e.width,h=e.comma,m=e.precision,g=e.trim,_=e.type,y=(\"n\"===_?(h=!0,_=\"g\"):Y[_]||(void 0===m&&(m=12),g=!0,_=\"g\"),(p||\"0\"===c&&\"=\"===u)&&(p=!0,c=\"0\",u=\"=\"),\"$\"===t?n:\"#\"===t&&/[boxX]/.test(_)?\"0\"+_.toLowerCase():\"\"),T=\"$\"===t?a:/[%p]/.test(_)?i:\"\",v=Y[_],b=/[defgprs%]/.test(_);function r(e){var t,r,n,a=y,i=T;if(\"c\"===_)i=v(e)+i,e=\"\";else{var o=(e=+e)<0||1/e<0;if(e=isNaN(e)?C:v(Math.abs(e),m),g&&(e=W(e)),a=((o=o&&0==+e&&\"+\"!==d?!1:o)?\"(\"===d?d:O:\"-\"===d||\"(\"===d?\"\":d)+a,i=(\"s\"===_?ee[8+q/3]:\"\")+i+(o&&\"(\"===d?\")\":\"\"),b)for(t=-1,r=e.length;++t<r;)if((n=e.charCodeAt(t))<48||57<n){i=(46===n?S+e.slice(t+1):e.slice(t))+i,e=e.slice(0,t);break}}h&&!p&&(e=E(e,1/0));var s=a.length+e.length+i.length,l=s<f?new Array(f-s+1).join(c):\"\";switch(h&&p&&(e=E(l+e,l.length?f-i.length:1/0),l=\"\"),u){case\"<\":e=a+e+i+l;break;case\"=\":e=a+l+e+i;break;case\"^\":e=l.slice(0,s=l.length>>1)+a+e+i+l.slice(s);break;default:e=l+a+e+i}return A(e)}return m=void 0===m?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),r.toString=function(){return e+\"\"},r}return{format:o,formatPrefix:function(e,t){var r=o(((e=w(e)).type=\"f\",e)),e=3*Math.max(-8,Math.min(8,Math.floor(s(t)/3))),n=Math.pow(10,-e),a=ee[8+e/3];return function(e){return r(n*e)+a}}}}function re(e){o=te(e),Q=o.format,Z=o.formatPrefix}function ne(e){return Math.max(0,-s(Math.abs(e)))}function ae(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(s(t)/3)))-s(Math.abs(e)))}function ie(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,s(t)-s(e))+1}function oe(a,i){return e=>{var t=a(e),r=t.indexOf(i);if(r<0)return t;let n=se(t,r);for(e=n<t.length?t.slice(n):\"\";--n>r;)if(\"0\"!==t[n]){++n;break}return t.slice(0,n)+e}}function se(e,t){let r=e.lastIndexOf(\"e\"),n;if(0<r)return r;for(r=e.length;--r>t;)if(48<=(n=e.charCodeAt(r))&&n<=57)return r+1}function le(e){const s=n(e.format),l=e.formatPrefix;return{format:s,formatPrefix:l,formatFloat(e){var t=w(e||\",\");if(null!=t.precision)return s(t);switch(t.precision=12,t.type){case\"%\":t.precision-=2;break;case\"e\":--t.precision}return oe(s(t),s(\".1f\")(1)[1])},formatSpan(e,t,r,n){n=w(null==n?\",f\":n);var a=j(e,t,r),i=Math.max(Math.abs(e),Math.abs(t));let o;if(null==n.precision)switch(n.type){case\"s\":return isNaN(o=ae(a,i))||(n.precision=o),l(n,i);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":isNaN(o=ie(a,i))||(n.precision=o-(\"e\"===n.type));break;case\"f\":case\"%\":isNaN(o=ne(a))||(n.precision=o-2*(\"%\"===n.type))}return s(n)}}}re({thousands:\",\",grouping:[3],currency:[\"$\",\"\"]});let t;function l(){return t=le({format:Q,formatPrefix:Z})}function c(e){return le(te(e))}function u(e){return arguments.length?t=c(e):t}l();const y=new Date,T=new Date;function d(i,o,r,n){function s(e){return i(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=e=>(i(e=new Date(+e)),e),s.ceil=e=>(i(e=new Date(e-1)),o(e,1),i(e),e),s.round=e=>{var t=s(e),r=s.ceil(e);return e-t<r-e?t:r},s.offset=(e,t)=>(o(e=new Date(+e),null==t?1:Math.floor(t)),e),s.range=(e,t,r)=>{var n,a=[];if(e=s.ceil(e),r=null==r?1:Math.floor(r),e<t&&0<r)for(;a.push(n=new Date(+e)),o(e,r),i(e),n<e&&e<t;);return a},s.filter=r=>d(e=>{if(e<=e)for(;i(e),!r(e);)e.setTime(e-1)},(e,t)=>{if(e<=e)if(t<0)for(;++t<=0;)for(;o(e,-1),!r(e););else for(;0<=--t;)for(;o(e,1),!r(e););}),r&&(s.count=(e,t)=>(y.setTime(+e),T.setTime(+t),i(y),i(T),Math.floor(r(y,T))),s.every=t=>(t=Math.floor(t),isFinite(t)&&0<t?1<t?s.filter(n?e=>n(e)%t==0:e=>s.count(0,e)%t==0):s:null)),s}const E=6e4,Bt=60*E,S=24*Bt,jt=7*S,R=d(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*E)/S,e=>e.getDate()-1),N=(R.range,d(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/S,e=>e.getUTCDate()-1)),Ht=(N.range,d(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/S,e=>Math.floor(e/S)));function p(t){return d(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*E)/jt)}Ht.range;const Gt=p(0),M=p(1),Vt=p(2),qt=p(3),A=p(4),zt=p(5),Wt=p(6);function f(t){return d(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/jt)}Gt.range,M.range,Vt.range,qt.range,A.range,zt.range,Wt.range;const $t=f(0),P=f(1),Kt=f(2),Yt=f(3),D=f(4),Jt=f(5),Qt=f(6),x=($t.range,P.range,Kt.range,Yt.range,D.range,Jt.range,Qt.range,d(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear())),L=(x.every=r=>isFinite(r=Math.floor(r))&&0<r?d(e=>{e.setFullYear(Math.floor(e.getFullYear()/r)*r),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*r)}):null,x.range,d(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear()));function O(e){var t;return 0<=e.y&&e.y<100?((t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L)).setFullYear(e.y),t):new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function ce(e){var t;return 0<=e.y&&e.y<100?((t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L))).setUTCFullYear(e.y),t):new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function C(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function ue(e){var n=e.dateTime,a=e.date,i=e.time,t=e.periods,r=e.days,o=e.shortDays,s=e.months,l=e.shortMonths,c=k(t),u=I(t),d=k(r),p=I(r),f=k(o),h=I(o),m=k(s),g=I(s),_=k(l),y=I(l),T={a:function(e){return o[e.getDay()]},A:function(e){return r[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return s[e.getMonth()]},c:null,d:Be,e:Be,f:qe,g:tt,G:nt,H:je,I:He,j:Ge,L:Ve,m:ze,M:We,p:function(e){return t[+(12<=e.getHours())]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Ct,s:wt,S:$e,u:Ke,U:Ye,V:Qe,w:Ze,W:Xe,x:null,X:null,y:et,Y:rt,Z:at,\"%\":Ot},v={a:function(e){return o[e.getUTCDay()]},A:function(e){return r[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return s[e.getUTCMonth()]},c:null,d:it,e:it,f:ut,g:bt,G:St,H:ot,I:st,j:lt,L:ct,m:dt,M:pt,p:function(e){return t[+(12<=e.getUTCHours())]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Ct,s:wt,S:ft,u:ht,U:mt,V:_t,w:yt,W:Tt,x:null,X:null,y:vt,Y:Et,Z:At,\"%\":Ot},b={a:function(e,t,r){t=f.exec(t.slice(r));return t?(e.w=h.get(t[0].toLowerCase()),r+t[0].length):-1},A:function(e,t,r){t=d.exec(t.slice(r));return t?(e.w=p.get(t[0].toLowerCase()),r+t[0].length):-1},b:function(e,t,r){t=_.exec(t.slice(r));return t?(e.m=y.get(t[0].toLowerCase()),r+t[0].length):-1},B:function(e,t,r){t=m.exec(t.slice(r));return t?(e.m=g.get(t[0].toLowerCase()),r+t[0].length):-1},c:function(e,t,r){return A(e,n,t,r)},d:Ie,e:Ie,f:xe,g:Oe,G:Ae,H:Ne,I:Ne,j:Re,L:De,m:ke,M:Me,p:function(e,t,r){t=c.exec(t.slice(r));return t?(e.p=u.get(t[0].toLowerCase()),r+t[0].length):-1},q:we,Q:Fe,s:Ue,S:Pe,u:ve,U:be,V:Ee,w:Te,W:Se,x:function(e,t,r){return A(e,a,t,r)},X:function(e,t,r){return A(e,i,t,r)},y:Oe,Y:Ae,Z:Ce,\"%\":Le};function E(l,c){return function(e){var t,r,n,a=[],i=-1,o=0,s=l.length;for(e instanceof Date||(e=new Date(+e));++i<s;)37===l.charCodeAt(i)&&(a.push(l.slice(o,i)),null!=(r=me[t=l.charAt(++i)])?t=l.charAt(++i):r=\"e\"===t?\" \":\"0\",(n=c[t])&&(t=n(e,r)),a.push(t),o=i+1);return a.push(l.slice(o,i)),a.join(\"\")}}function S(a,i){return function(e){var t,r,n=C(1900,void 0,1);if(A(n,a,e+=\"\",0)!=e.length)return null;if(\"Q\"in n)return new Date(n.Q);if(\"s\"in n)return new Date(1e3*n.s+(\"L\"in n?n.L:0));if(!i||\"Z\"in n||(n.Z=0),\"p\"in n&&(n.H=n.H%12+12*n.p),void 0===n.m&&(n.m=\"q\"in n?n.q:0),\"V\"in n){if(n.V<1||53<n.V)return null;\"w\"in n||(n.w=1),\"Z\"in n?(t=4<(r=(t=ce(C(n.y,0,1))).getUTCDay())||0===r?P.ceil(t):P(t),t=N.offset(t,7*(n.V-1)),n.y=t.getUTCFullYear(),n.m=t.getUTCMonth(),n.d=t.getUTCDate()+(n.w+6)%7):(t=4<(r=(t=O(C(n.y,0,1))).getDay())||0===r?M.ceil(t):M(t),t=R.offset(t,7*(n.V-1)),n.y=t.getFullYear(),n.m=t.getMonth(),n.d=t.getDate()+(n.w+6)%7)}else(\"W\"in n||\"U\"in n)&&(\"w\"in n||(n.w=\"u\"in n?n.u%7:\"W\"in n?1:0),r=\"Z\"in n?ce(C(n.y,0,1)).getUTCDay():O(C(n.y,0,1)).getDay(),n.m=0,n.d=\"W\"in n?(n.w+6)%7+7*n.W-(r+5)%7:n.w+7*n.U-(r+6)%7);return(\"Z\"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,ce):O)(n)}}function A(e,t,r,n){for(var a,i,o=0,s=t.length,l=r.length;o<s;){if(l<=n)return-1;if(37===(a=t.charCodeAt(o++))){if(a=t.charAt(o++),!(i=b[a in me?t.charAt(o++):a])||(n=i(e,r,n))<0)return-1}else if(a!=r.charCodeAt(n++))return-1}return n}return T.x=E(a,T),T.X=E(i,T),T.c=E(n,T),v.x=E(a,v),v.X=E(i,v),v.c=E(n,v),{format:function(e){var t=E(e+=\"\",T);return t.toString=function(){return e},t},parse:function(e){var t=S(e+=\"\",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=E(e+=\"\",v);return t.toString=function(){return e},t},utcParse:function(e){var t=S(e+=\"\",!0);return t.toString=function(){return e},t}}}L.every=r=>isFinite(r=Math.floor(r))&&0<r?d(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/r)*r),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*r)}):null,L.range;var h,de,pe,fe,he,me={\"-\":\"\",_:\" \",0:\"0\"},m=/^\\s*\\d+/,ge=/^%/,_e=/[\\\\^$*+?|[\\]().{}]/g;function g(e,t,r){var n=e<0?\"-\":\"\",e=(n?-e:e)+\"\",a=e.length;return n+(a<r?new Array(r-a+1).join(t)+e:e)}function ye(e){return e.replace(_e,\"\\\\$&\")}function k(e){return new RegExp(\"^(?:\"+e.map(ye).join(\"|\")+\")\",\"i\")}function I(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function Te(e,t,r){t=m.exec(t.slice(r,r+1));return t?(e.w=+t[0],r+t[0].length):-1}function ve(e,t,r){t=m.exec(t.slice(r,r+1));return t?(e.u=+t[0],r+t[0].length):-1}function be(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.U=+t[0],r+t[0].length):-1}function Ee(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.V=+t[0],r+t[0].length):-1}function Se(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.W=+t[0],r+t[0].length):-1}function Ae(e,t,r){t=m.exec(t.slice(r,r+4));return t?(e.y=+t[0],r+t[0].length):-1}function Oe(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.y=+t[0]+(68<+t[0]?1900:2e3),r+t[0].length):-1}function Ce(e,t,r){t=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(t.slice(r,r+6));return t?(e.Z=t[1]?0:-(t[2]+(t[3]||\"00\")),r+t[0].length):-1}function we(e,t,r){t=m.exec(t.slice(r,r+1));return t?(e.q=3*t[0]-3,r+t[0].length):-1}function ke(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.m=t[0]-1,r+t[0].length):-1}function Ie(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.d=+t[0],r+t[0].length):-1}function Re(e,t,r){t=m.exec(t.slice(r,r+3));return t?(e.m=0,e.d=+t[0],r+t[0].length):-1}function Ne(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.H=+t[0],r+t[0].length):-1}function Me(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.M=+t[0],r+t[0].length):-1}function Pe(e,t,r){t=m.exec(t.slice(r,r+2));return t?(e.S=+t[0],r+t[0].length):-1}function De(e,t,r){t=m.exec(t.slice(r,r+3));return t?(e.L=+t[0],r+t[0].length):-1}function xe(e,t,r){t=m.exec(t.slice(r,r+6));return t?(e.L=Math.floor(t[0]/1e3),r+t[0].length):-1}function Le(e,t,r){t=ge.exec(t.slice(r,r+1));return t?r+t[0].length:-1}function Fe(e,t,r){t=m.exec(t.slice(r));return t?(e.Q=+t[0],r+t[0].length):-1}function Ue(e,t,r){t=m.exec(t.slice(r));return t?(e.s=+t[0],r+t[0].length):-1}function Be(e,t){return g(e.getDate(),t,2)}function je(e,t){return g(e.getHours(),t,2)}function He(e,t){return g(e.getHours()%12||12,t,2)}function Ge(e,t){return g(1+R.count(x(e),e),t,3)}function Ve(e,t){return g(e.getMilliseconds(),t,3)}function qe(e,t){return Ve(e,t)+\"000\"}function ze(e,t){return g(e.getMonth()+1,t,2)}function We(e,t){return g(e.getMinutes(),t,2)}function $e(e,t){return g(e.getSeconds(),t,2)}function Ke(e){e=e.getDay();return 0===e?7:e}function Ye(e,t){return g(Gt.count(x(e)-1,e),t,2)}function Je(e){var t=e.getDay();return 4<=t||0===t?A(e):A.ceil(e)}function Qe(e,t){return e=Je(e),g(A.count(x(e),e)+(4===x(e).getDay()),t,2)}function Ze(e){return e.getDay()}function Xe(e,t){return g(M.count(x(e)-1,e),t,2)}function et(e,t){return g(e.getFullYear()%100,t,2)}function tt(e,t){return g((e=Je(e)).getFullYear()%100,t,2)}function rt(e,t){return g(e.getFullYear()%1e4,t,4)}function nt(e,t){var r=e.getDay();return g((e=4<=r||0===r?A(e):A.ceil(e)).getFullYear()%1e4,t,4)}function at(e){e=e.getTimezoneOffset();return(0<e?\"-\":(e*=-1,\"+\"))+g(e/60|0,\"0\",2)+g(e%60,\"0\",2)}function it(e,t){return g(e.getUTCDate(),t,2)}function ot(e,t){return g(e.getUTCHours(),t,2)}function st(e,t){return g(e.getUTCHours()%12||12,t,2)}function lt(e,t){return g(1+N.count(L(e),e),t,3)}function ct(e,t){return g(e.getUTCMilliseconds(),t,3)}function ut(e,t){return ct(e,t)+\"000\"}function dt(e,t){return g(e.getUTCMonth()+1,t,2)}function pt(e,t){return g(e.getUTCMinutes(),t,2)}function ft(e,t){return g(e.getUTCSeconds(),t,2)}function ht(e){e=e.getUTCDay();return 0===e?7:e}function mt(e,t){return g($t.count(L(e)-1,e),t,2)}function gt(e){var t=e.getUTCDay();return 4<=t||0===t?D(e):D.ceil(e)}function _t(e,t){return e=gt(e),g(D.count(L(e),e)+(4===L(e).getUTCDay()),t,2)}function yt(e){return e.getUTCDay()}function Tt(e,t){return g(P.count(L(e)-1,e),t,2)}function vt(e,t){return g(e.getUTCFullYear()%100,t,2)}function bt(e,t){return g((e=gt(e)).getUTCFullYear()%100,t,2)}function Et(e,t){return g(e.getUTCFullYear()%1e4,t,4)}function St(e,t){var r=e.getUTCDay();return g((e=4<=r||0===r?D(e):D.ceil(e)).getUTCFullYear()%1e4,t,4)}function At(){return\"+0000\"}function Ot(){return\"%\"}function Ct(e){return+e}function wt(e){return Math.floor(+e/1e3)}function kt(e){h=ue(e),de=h.format,pe=h.parse,fe=h.utcFormat,he=h.utcParse}function It(e,t,r){b.isObject(r=r||{})||b.error(\"Invalid time multi-format specifier: \"+r);const n=t(v.SECONDS),a=t(v.MINUTES),i=t(v.HOURS),o=t(v.DATE),s=t(v.WEEK),l=t(v.MONTH),c=t(v.QUARTER),u=t(v.YEAR),d=e(r[v.MILLISECONDS]||\".%L\"),p=e(r[v.SECONDS]||\":%S\"),f=e(r[v.MINUTES]||\"%I:%M\"),h=e(r[v.HOURS]||\"%I %p\"),m=e(r[v.DATE]||r[v.DAY]||\"%a %d\"),g=e(r[v.WEEK]||\"%b %d\"),_=e(r[v.MONTH]||\"%B\"),y=e(r[v.QUARTER]||\"%B\"),T=e(r[v.YEAR]||\"%Y\");return e=>(n(e)<e?d:a(e)<e?p:i(e)<e?f:o(e)<e?h:l(e)<e?s(e)<e?m:g:u(e)<e?c(e)<e?_:y:T)(e)}function Rt(e){const t=n(e.format),r=n(e.utcFormat);return{timeFormat:e=>b.isString(e)?t(e):It(t,v.timeInterval,e),utcFormat:e=>b.isString(e)?r(e):It(r,v.utcInterval,e),timeParse:n(e.parse),utcParse:n(e.utcParse)}}kt({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});let r;function Nt(){return r=Rt({format:de,parse:pe,utcFormat:fe,utcParse:he})}function Mt(e){return Rt(ue(e))}function _(e){return arguments.length?r=Mt(e):r}Nt();const F=(e,t)=>b.extend({},e,t);function Pt(e,t){e=e?c(e):u(),t=t?Mt(t):_();return F(e,t)}function Dt(e,t){var r=arguments.length;return r&&2!==r&&b.error(\"defaultLocale expects either zero or two arguments.\"),r?F(u(e),_(t)):F(u(),_())}function xt(){return l(),Nt(),Dt()}e.defaultLocale=Dt,e.locale=Pt,e.numberFormatDefaultLocale=u,e.numberFormatLocale=c,e.resetDefaultLocale=xt,e.resetNumberFormatDefaultLocale=l,e.resetTimeFormatDefaultLocale=Nt,e.timeFormatDefaultLocale=_,e.timeFormatLocale=Mt}}return QP.exports}function tD(){if(!YP){YP=1;var e=qP.exports;{var l=HP(),o=WP(),f=eD();const E=/^(data:|([A-Za-z]+:)?\\/\\/)/,S=/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i,A=/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g,O=\"file://\";function t(t,r){return e=>({options:e||{},sanitize:a,load:n,fileAccess:!!r,file:L(r),http:U(t)})}async function n(e,t){var e=await this.sanitize(e,t),r=e.href;return e.localFile?this.file(r):this.http(r,t)}async function a(e,t){t=l.extend({},this.options,t);var r=this.fileAccess,n={href:null};let a,i,o;var s=S.test(e.replace(A,\"\")),s=(null!=e&&\"string\"==typeof e&&s||l.error(\"Sanitize failure, invalid URI: \"+l.stringValue(e)),E.test(e));return(o=t.baseURL)&&!s&&(e.startsWith(\"/\")||o.endsWith(\"/\")||(e=\"/\"+e),e=o+e),i=(a=e.startsWith(O))||\"file\"===t.mode||\"http\"!==t.mode&&!s&&r,a?e=e.slice(O.length):e.startsWith(\"//\")&&(\"file\"===t.defaultProtocol?(e=e.slice(2),i=!0):e=(t.defaultProtocol||\"http\")+\":\"+e),Object.defineProperty(n,\"localFile\",{value:!!i}),n.href=e,t.target&&(n.target=t.target+\"\"),t.rel&&(n.rel=t.rel+\"\"),\"image\"===t.context&&t.crossOrigin&&(n.crossOrigin=t.crossOrigin+\"\"),n}function L(t){return t?e=>new Promise((r,n)=>{t.readFile(e,(e,t)=>{e?n(e):r(t)})}):F}async function F(){l.error(\"No file system access.\")}function U(n){return n?async function(e,t){var r=l.extend({},this.options.http,t),t=t&&t.response,e=await n(e,r);return e.ok?l.isFunction(e[t])?e[t]():e.text():l.error(e.status+\"\"+e.statusText)}:B}async function B(){l.error(\"No HTTP fetch method available.\")}const C=e=>null!=e&&e==e,w=e=>\"true\"===e||\"false\"===e||!0===e||!1===e,k=e=>!Number.isNaN(Date.parse(e)),I=e=>!(Number.isNaN(+e)||e instanceof Date),R=e=>I(e)&&Number.isInteger(+e),N={boolean:l.toBoolean,integer:l.toNumber,number:l.toNumber,date:l.toDate,string:l.toString,unknown:l.identity},M=[w,R,I,k],P=[\"boolean\",\"integer\",\"number\",\"date\"];function i(a,i){if(!a||!a.length)return\"unknown\";var o=a.length,s=M.length,l=M.map((e,t)=>t+1);for(let e=0,t=0,r,n;e<o;++e)for(n=i?a[e][i]:a[e],r=0;r<s;++r)if(l[r]&&C(n)&&!M[r](n)&&(l[r]=0,++t===M.length))return\"string\";return P[l.reduce((e,t)=>0===e?t:e,0)-1]}function h(r,e){return e.reduce((e,t)=>(e[t]=i(r,t),e),{})}var p={},m={},g=34,_=10,y=13;function s(e){return new Function(\"d\",\"return {\"+e.map(function(e,t){return JSON.stringify(e)+\": d[\"+t+'] || \"\"'}).join(\",\")+\"}\")}function j(r,n){var a=s(r);return function(e,t){return n(a(e),t,r)}}function c(e){var r=Object.create(null),n=[];return e.forEach(function(e){for(var t in e)t in r||n.push(r[t]=t)}),n}function u(e,t){var e=e+\"\",r=e.length;return r<t?new Array(t-r+1).join(0)+e:e}function H(e){return e<0?\"-\"+u(-e,6):9999<e?\"+\"+u(e,6):u(e,4)}function G(e){var t=e.getUTCHours(),r=e.getUTCMinutes(),n=e.getUTCSeconds(),a=e.getUTCMilliseconds();return isNaN(e)?\"Invalid Date\":H(e.getUTCFullYear())+\"-\"+u(e.getUTCMonth()+1,2)+\"-\"+u(e.getUTCDate(),2)+(a?\"T\"+u(t,2)+\":\"+u(r,2)+\":\"+u(n,2)+\".\"+u(a,3)+\"Z\":n?\"T\"+u(t,2)+\":\"+u(r,2)+\":\"+u(n,2)+\"Z\":r||t?\"T\"+u(t,2)+\":\"+u(r,2)+\"Z\":\"\")}function V(n){var t=new RegExp('[\"'+n+\"\\n\\r]\"),d=n.charCodeAt(0);function i(n,e){var t,r=[],a=n.length,i=0,o=0,s=a<=0,l=!1;function c(){if(s)return m;if(l)return l=!1,p;var e,t,r=i;if(n.charCodeAt(r)===g){for(;i++<a&&n.charCodeAt(i)!==g||n.charCodeAt(++i)===g;);return(e=i)>=a?s=!0:(t=n.charCodeAt(i++))===_?l=!0:t===y&&(l=!0,n.charCodeAt(i)===_)&&++i,n.slice(r+1,e-1).replace(/\"\"/g,'\"')}for(;i<a;){if((t=n.charCodeAt(e=i++))===_)l=!0;else if(t===y)l=!0,n.charCodeAt(i)===_&&++i;else if(t!==d)continue;return n.slice(r,e)}return s=!0,n.slice(r,a)}for(n.charCodeAt(a-1)===_&&--a,n.charCodeAt(a-1)===y&&--a;(t=c())!==m;){for(var u=[];t!==p&&t!==m;)u.push(t),t=c();e&&null==(u=e(u,o++))||r.push(u)}return r}function r(e,r){return e.map(function(t){return r.map(function(e){return o(t[e])}).join(n)})}function a(e){return e.map(o).join(n)}function o(e){return null==e?\"\":e instanceof Date?G(e):t.test(e+=\"\")?'\"'+e.replace(/\"/g,'\"\"')+'\"':e}return{parse:function(e,r){var n,a;return(e=i(e,function(e,t){if(n)return n(e,t-1);a=e,n=r?j(e,r):s(e)})).columns=a||[],e},parseRows:i,format:function(e,t){return[(t=null==t?c(e):t).map(o).join(n)].concat(r(e,t)).join(\"\\n\")},formatBody:function(e,t){return r(e,t=null==t?c(e):t).join(\"\\n\")},formatRows:function(e){return e.map(a).join(\"\\n\")},formatRow:a,formatValue:o}}function r(n){function e(e,t){var r={delimiter:n};return d(e,t?l.extend(t,r):r)}return e.responseType=\"text\",e}function d(e,t){return t.header&&(e=t.header.map(l.stringValue).join(t.delimiter)+\"\\n\"+e),V(t.delimiter).parse(e+\"\")}function q(e){return\"function\"==typeof Buffer&&l.isFunction(Buffer.isBuffer)&&Buffer.isBuffer(e)}function T(e,t){var r=t&&t.property?l.field(t.property):l.identity;return l.isObject(e)&&!q(e)?z(r(e),t):r(JSON.parse(e))}function z(e,t){return!l.isArray(e)&&l.isIterable(e)&&(e=[...e]),t&&t.copy?JSON.parse(JSON.stringify(e)):e}d.responseType=\"text\";const D={interior:(e,t)=>e!==t,exterior:(e,t)=>e===t};function v(e,t){let r,n,a,i;return e=T(e,t),t&&t.feature?(r=o.feature,a=t.feature):t&&t.mesh?(r=o.mesh,a=t.mesh,i=D[t.filter]):l.error(\"Missing TopoJSON feature or mesh parameter.\"),(n=(n=e.objects[a])?r(e,n,i):l.error(\"Invalid TopoJSON object: \"+a))&&n.features||[n]}v.responseType=T.responseType=\"json\";const x={dsv:d,csv:r(\",\"),tsv:r(\"\\t\"),json:T,topojson:v};function b(e,t){return 1<arguments.length?(x[e]=t,this):l.hasOwnProperty(x,e)?x[e]:null}function W(e){e=b(e);return e&&e.responseType||\"text\"}function $(e,t,r,n){var a=b((t=t||{}).type||\"json\");return a||l.error(\"Unknown data format type: \"+t.type),e=a(e,t),t.parse&&K(e,t.parse,r,n),l.hasOwnProperty(e,\"columns\")&&delete e.columns,e}function K(s,l,c,u){if(s.length){var d=f.timeFormatDefaultLocale();c=c||d.timeParse,u=u||d.utcParse;let e=s.columns||Object.keys(s[0]),t,r,n,a,i,o;\"auto\"===l&&(l=h(s,e));var p=(e=Object.keys(l)).map(e=>{var t=l[e];let r,n;if(t&&(t.startsWith(\"date:\")||t.startsWith(\"utc:\")))return r=t.split(/:(.+)?/,2),(\"'\"===(n=r[1])[0]&&\"'\"===n[n.length-1]||'\"'===n[0]&&'\"'===n[n.length-1])&&(n=n.slice(1,-1)),(\"utc\"===r[0]?u:c)(n);if(N[t])return N[t];throw Error(\"Illegal format pattern: \"+e+\":\"+t)});for(n=0,i=s.length,o=e.length;n<i;++n)for(t=s[n],a=0;a<o;++a)r=e[a],t[r]=p[a](t[r])}}var Y=t(\"undefined\"!=typeof fetch&&fetch,null);e.format=x,e.formats=b,e.inferType=i,e.inferTypes=h,e.loader=Y,e.read=$,e.responseType=W,e.typeParsers=N}}return qP.exports}function rD(){if(!JP){JP=1;var e=VP.exports;{var y=HP(),i=tD(),r=eD();function u(e){const r=e||y.identity,n=[],a={};return n.add=e=>{var t=r(e);return a[t]||(a[t]=1,n.push(e)),n},n.remove=e=>{var t=r(e);return a[t]&&(a[t]=0)<=(t=n.indexOf(e))&&n.splice(t,1),n},n}async function d(t,e){try{await e(t)}catch(e){t.error(e)}}const M=Symbol(\"vega_id\");let t=1;function o(e){return!(!e||!T(e))}function T(e){return e[M]}function s(e,t){return e[M]=t,e}function v(e){e=e===Object(e)?e:{data:e};return T(e)?e:s(e,t++)}function B(e){return l(e,v({}))}function l(e,t){for(const r in e)t[r]=e[r];return t}function j(e,t){return s(t,T(e))}function H(r,n){return r?n?(e,t)=>r(e,t)||T(n(e))-T(n(t)):(e,t)=>r(e,t)||T(e)-T(t):null}function c(e){return e&&e.constructor===b}function b(){const d=[],p=[],f=[],h=[],m=[];let g=null,_=!1;return{constructor:b,insert(e){var t=y.array(e),r=t.length;for(let e=0;e<r;++e)d.push(t[e]);return this},remove(e){var t=y.isFunction(e)?h:p,r=y.array(e),n=r.length;for(let e=0;e<n;++e)t.push(r[e]);return this},modify(e,t,r){t={field:t,value:y.constant(r)};return(y.isFunction(e)?(t.filter=e,m):(t.tuple=e,f)).push(t),this},encode(e,t){return y.isFunction(e)?m.push({filter:e,field:t}):f.push({tuple:e,field:t}),this},clean(e){return g=e,this},reflow(){return _=!0,this},pulse(n,e){const t={},a={};let r,i,o,s,l,c;for(r=0,i=e.length;r<i;++r)t[T(e[r])]=1;for(r=0,i=p.length;r<i;++r)l=p[r],t[T(l)]=-1;for(r=0,i=h.length;r<i;++r)s=h[r],e.forEach(e=>{s(e)&&(t[T(e)]=-1)});for(r=0,i=d.length;r<i;++r)l=d[r],c=T(l),t[c]?t[c]=1:n.add.push(v(d[r]));for(r=0,i=e.length;r<i;++r)l=e[r],t[T(l)]<0&&n.rem.push(l);function u(e,t,r){r?e[t]=r(e):n.encode=t,_||(a[T(e)]=e)}for(r=0,i=f.length;r<i;++r)o=f[r],l=o.tuple,s=o.field,0<(c=t[T(l)])&&(u(l,s,o.value),n.modifies(s));for(r=0,i=m.length;r<i;++r)o=m[r],s=o.filter,e.forEach(e=>{s(e)&&0<t[T(e)]&&u(e,o.field,o.value)}),n.modifies(o.field);if(_)n.mod=p.length||h.length?e.filter(e=>0<t[T(e)]):e.slice();else for(c in a)n.mod.push(a[c]);return(g||null==g&&(p.length||h.length))&&n.clean(!0),n}}}const P=\"_:mod:_\";function p(){Object.defineProperty(this,P,{writable:!0,value:{}})}p.prototype={set(e,t,r,n){var a=this[e],i=this[P];return null!=t&&0<=t?a[t]===r&&!n||(a[t]=r,i[t+\":\"+e]=-1,i[e]=-1):a===r&&!n||(this[e]=r,i[e]=y.isArray(r)?1+r.length:-1),this},modified(t,e){var r=this[P];if(!arguments.length){for(const n in r)if(r[n])return!0;return!1}if(y.isArray(t)){for(let e=0;e<t.length;++e)if(r[t[e]])return!0;return!1}return null!=e&&0<=e?e+1<r[t]||!!r[e+\":\"+t]:!!r[t]},clear(){return this[P]={},this}};let a=0;const D=new p;function f(e,t,r,n){this.id=++a,this.value=e,this.stamp=-1,this.rank=-1,this.qrank=-1,this.flags=0,t&&(this._update=t),r&&this.parameters(r,n)}function h(r){return function(e){var t=this.flags;return 0===arguments.length?!!(t&r):(this.flags=e?t|r:t&~r,this)}}function G(e,t,r,n){let a=1,i;return i=e instanceof f?e:e&&e.prototype instanceof f?new e:y.isFunction(e)?new f(null,e):(a=0,new f(e,t)),this.rank(i),a&&(n=r,r=t),r&&this.connect(i,i.parameters(r,n)),this.touch(i),i}function V(t,r){var n=t.rank,a=r.length;for(let e=0;e<a;++e)if(n<r[e].rank)return void this.rerank(t)}f.prototype={targets(){return this._targets||(this._targets=u(y.id))},set(e){return this.value!==e?(this.value=e,1):0},skip:h(1),modified:h(2),parameters(e,n,t){n=!1!==n;const a=this._argval=this._argval||new p,i=this._argops=this._argops||[],o=[];let r,s,l,c;var u=(e,t,r)=>{r instanceof f?(r!==this&&(n&&r.targets().add(this),o.push(r)),i.push({op:r,name:e,index:t})):a.set(e,t,r)};for(r in e)if(s=e[r],\"pulse\"===r)y.array(s).forEach(e=>{e instanceof f?e!==this&&(e.targets().add(this),o.push(e)):y.error(\"Pulse parameters must be operator instances.\")}),this.source=s;else if(y.isArray(s))for(a.set(r,-1,Array(l=s.length)),c=0;c<l;++c)u(r,c,s[c]);else u(r,-1,s);return this.marshall().clear(),t&&(i.initonly=!0),o},marshall(e){var t=this._argval||D,r=this._argops;let n,a,i,o;if(r){var s=r.length;for(a=0;a<s;++a)n=r[a],o=(i=n.op).modified()&&i.stamp===e,t.set(n.name,n.index,i.value,o);if(r.initonly){for(a=0;a<s;++a)(n=r[a]).op.targets().remove(this);this._argops=null,this._update=null}}return t},detach(){var e=this._argops;let t,r,n,a;if(e)for(t=0,r=e.length;t<r;++t)n=e[t],(a=n.op)._targets&&a._targets.remove(this);this.pulse=null,this.source=null},evaluate(e){var t=this._update;if(t){var r=this.marshall(e.stamp),t=t.call(this,r,e);if(r.clear(),t!==this.value)this.value=t;else if(!this.modified())return e.StopPropagation}},run(e){if(e.stamp<this.stamp)return e.StopPropagation;let t;return t=this.skip()?(this.skip(!1),0):this.evaluate(e),this.pulse=t||e}};let n=0;function m(e,t,r){this.id=++n,this.value=null,r&&(this.receive=r),e&&(this._filter=e),t&&(this._apply=t)}function g(e,t,r){return new m(e,t,r)}function q(e,t,r,n){function a(e){e.dataflow=i;try{o.receive(e)}catch(e){i.error(e)}finally{i.run()}}const i=this,o=g(r,n);let s;var l=(s=\"string\"==typeof e&&\"undefined\"!=typeof document?document.querySelectorAll(e):y.array(e)).length;for(let e=0;e<l;++e)s[e].addEventListener(t,a);return o}function z(e,t){var r=this.locale();return i.read(e,t,r.timeParse,r.utcParse)}function W(e,t,r){return t=this.parse(t,r),this.pulse(e,this.changeset().insert(t))}async function $(t,e){let r=0,n;try{n=await this.loader().load(t,{context:\"dataflow\",response:i.responseType(e&&e.type)});try{n=this.parse(n,e)}catch(e){r=-2,this.warn(\"Data ingestion failed\",t,e)}}catch(e){r=-1,this.warn(\"Loading failed\",t,e)}return{data:n,status:r}}async function K(e,t,r){var n=this._pending||Y(this),t=(n.requests+=1,await this.request(t,r));return this.pulse(e,this.changeset().remove(y.truthy).insert(t.data||[])),n.done(),t}function Y(e){let t;const r=new Promise(e=>t=e);return r.requests=0,r.done=()=>{0==--r.requests&&(e._pending=null,t(e))},e._pending=r}m.prototype={_filter:y.truthy,_apply:y.identity,targets(){return this._targets||(this._targets=u(y.id))},consume(e){return arguments.length?(this._consume=!!e,this):!!this._consume},receive(e){if(this._filter(e)){var t=this.value=this._apply(e),r=this._targets,n=r?r.length:0;for(let e=0;e<n;++e)r[e].receive(t);this._consume&&(e.preventDefault(),e.stopPropagation())}},filter(e){e=g(e);return this.targets().add(e),e},apply(e){e=g(null,e);return this.targets().add(e),e},merge(){var r=g();this.targets().add(r);for(let e=0,t=arguments.length;e<t;++e)arguments[e].targets().add(r);return r},throttle(t){let r=-1;return this.filter(()=>{var e=Date.now();return e-r>t?(r=e,1):0})},debounce(e){const r=g();return this.targets().add(g(null,null,y.debounce(e,e=>{var t=e.dataflow;r.receive(e),t&&t.run&&t.run()}))),r},between(e,t){let r=!1;return e.targets().add(g(null,null,()=>r=!0)),t.targets().add(g(null,null,()=>r=!1)),this.filter(()=>r)},detach(){this._filter=y.truthy,this._targets=null}};const x={skip:!0};function J(e,t,r,n,a){return(e instanceof f?Z:Q)(this,e,t,r,n,a),this}function Q(r,e,n,t,a,i){const o=y.extend({},i,x);let s,l;y.isFunction(n)||(n=y.constant(n)),s=void 0===t?e=>r.touch(n(e)):y.isFunction(t)?(l=new f(null,t,a,!1),e=>{l.evaluate(e);var e=n(e),t=l.value;c(t)?r.pulse(e,t,i):r.update(e,t,o)}):e=>r.update(n(e),t,o),e.apply(s)}function Z(e,t,r,n,a,i){void 0===n?t.targets().add(r):(i=i||{},(n=new f(null,X(r,n),a,!1)).modified(i.force),n.rank=t.rank,t.targets().add(n),r&&(n.skip(!0),n.value=r.value,n.targets().add(r),e.connect(r,[n])))}function X(r,n){return n=y.isFunction(n)?n:y.constant(n),r?function(e,t){e=n(e,t);return r.skip()||(r.skip(e!==this.value).value=e),e}:n}function ee(e){e.rank=++this._rank}function te(e){var t=[e];let r,n,a;for(;t.length;)if(this.rank(r=t.pop()),n=r._targets)for(a=n.length;0<=--a;)t.push(r=n[a]),r===e&&y.error(\"Cycle detected in dataflow graph.\")}const L={};function _(e,t,r){this.dataflow=e,this.stamp=null==t?-1:t,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=r||null}function E(e,t){const r=[];return y.visitArray(e,t,e=>r.push(e)),r}function S(e,t){const r={};return e.visit(t,e=>{r[T(e)]=1}),e=>r[T(e)]?null:e}function A(r,n){return r?(e,t)=>r(e,t)&&n(e,t):n}function O(e,t,r,n){let a=0;this.dataflow=e,this.stamp=t,this.fields=null,this.encode=n||null;for(const o of this.pulses=r)if(o.stamp===t){if(o.fields){var i=this.fields||(this.fields={});for(const s in o.fields)i[s]=1}o.changed(this.ADD)&&(a|=this.ADD),o.changed(this.REM)&&(a|=this.REM),o.changed(this.MOD)&&(a|=this.MOD)}this.changes=a}async function re(a,i,o){const s=this,l=[];if(s._pulse)return C(s);if(s._pending&&await s._pending,i&&await d(s,i),s._touched.length){i=++s._clock;s._pulse=new _(s,i,a),s._touched.forEach(e=>s._enqueue(e,!0)),s._touched=u(y.id);let e=0,t,r,n;try{for(;0<s._heap.size();)(t=s._heap.pop()).rank!==t.qrank?s._enqueue(t,!0):((r=t.run(s._getPulse(t,a))).then?r=await r:r.async&&(l.push(r.async),r=L),r!==L&&t._targets&&t._targets.forEach(e=>s._enqueue(e)),++e)}catch(e){s._heap.clear(),n=e}if(s._input={},s._pulse=null,s.debug(`Pulse ${i}: ${e} operators`),n&&(s._postrun=[],s.error(n)),s._postrun.length){var c=s._postrun.sort((e,t)=>t.priority-e.priority);s._postrun=[];for(let e=0;e<c.length;++e)await d(s,c[e].callback)}o&&await d(s,o),l.length&&Promise.all(l).then(e=>s.runAsync(null,()=>{e.forEach(e=>{try{e(s)}catch(e){s.error(e)}})}))}else s.debug(\"Dataflow invoked, but nothing to do.\");return s}async function ne(e,t,r){for(;this._running;)await this._running;var n=()=>this._running=null;return(this._running=this.evaluate(e,t,r)).then(n,n),this._running}function ae(e,t,r){return this._pulse?C(this):(this.evaluate(e,t,r),this)}function ie(e,t,r){if(this._pulse||t)this._postrun.push({priority:r||0,callback:e});else try{e(this)}catch(e){this.error(e)}}function C(e){return e.error(\"Dataflow already running. Use runAsync() to chain invocations.\"),e}function oe(e,t){var r=e.stamp<this._clock;r&&(e.stamp=this._clock),(r||t)&&(e.qrank=e.rank,this._heap.push(e))}function se(e,t){var r=e.source,n=this._clock;return r&&y.isArray(r)?new O(this,n,r.map(e=>e.pulse),t):this._input[e.id]||le(this._pulse,r&&r.pulse)}function le(e,t){return t&&t.stamp===e.stamp?t:(e=e.fork(),t&&t!==L&&(e.source=t.source),e)}_.prototype={StopPropagation:L,ADD:1,REM:2,MOD:4,ADD_REM:3,ADD_MOD:5,ALL:7,REFLOW:8,SOURCE:16,NO_SOURCE:32,NO_FIELDS:64,fork(e){return new _(this.dataflow).init(this,e)},clone(){var e=this.fork(7);return e.add=e.add.slice(),e.rem=e.rem.slice(),e.mod=e.mod.slice(),e.source&&(e.source=e.source.slice()),e.materialize(23)},addAll(){var e=this;return!e.source||e.add===e.rem||!e.rem.length&&e.source.length===e.add.length||((e=new _(this.dataflow).init(this)).add=e.source,e.rem=[]),e},init(e,t){var r=this;return r.stamp=e.stamp,r.encode=e.encode,!e.fields||64&t||(r.fields=e.fields),1&t?(r.addF=e.addF,r.add=e.add):(r.addF=null,r.add=[]),2&t?(r.remF=e.remF,r.rem=e.rem):(r.remF=null,r.rem=[]),4&t?(r.modF=e.modF,r.mod=e.mod):(r.modF=null,r.mod=[]),32&t?(r.srcF=null,r.source=null):(r.srcF=e.srcF,r.source=e.source,e.cleans&&(r.cleans=e.cleans)),r},runAfter(e){this.dataflow.runAfter(e)},changed(e){e=e||7;return 1&e&&this.add.length||2&e&&this.rem.length||4&e&&this.mod.length},reflow(e){var t;return e?this.fork(7).reflow():(e=this.add.length,(t=this.source&&this.source.length)&&t!==e&&(this.mod=this.source,e)&&this.filter(4,S(this,1)),this)},clean(e){return arguments.length?(this.cleans=!!e,this):this.cleans},modifies(e){const t=this.fields||(this.fields={});return y.isArray(e)?e.forEach(e=>t[e]=!0):t[e]=!0,this},modified(e,t){const r=this.fields;return!(!t&&!this.mod.length||!r)&&(arguments.length?y.isArray(e)?e.some(e=>r[e]):r[e]:!!r)},filter(e,t){return 1&e&&(this.addF=A(this.addF,t)),2&e&&(this.remF=A(this.remF,t)),4&e&&(this.modF=A(this.modF,t)),16&e&&(this.srcF=A(this.srcF,t)),this},materialize(e){var t=this;return 1&(e=e||7)&&t.addF&&(t.add=E(t.add,t.addF),t.addF=null),2&e&&t.remF&&(t.rem=E(t.rem,t.remF),t.remF=null),4&e&&t.modF&&(t.mod=E(t.mod,t.modF),t.modF=null),16&e&&t.srcF&&(t.source=t.source.filter(t.srcF),t.srcF=null),t},visit(e,t){var r,n=this;return 16&e?y.visitArray(n.source,n.srcF,t):(1&e&&y.visitArray(n.add,n.addF,t),2&e&&y.visitArray(n.rem,n.remF,t),4&e&&y.visitArray(n.mod,n.modF,t),r=n.source,8&e&&r&&(e=n.add.length+n.mod.length)!==r.length&&(e?y.visitArray(r,S(n,5),t):y.visitArray(r,n.srcF,t))),n}},y.inherits(O,_,{fork(e){const t=new _(this.dataflow).init(this,e&this.NO_FIELDS);return void 0!==e&&(e&t.ADD&&this.visit(t.ADD,e=>t.add.push(e)),e&t.REM&&this.visit(t.REM,e=>t.rem.push(e)),e&t.MOD)&&this.visit(t.MOD,e=>t.mod.push(e)),t},changed(e){return this.changes&e},modified(e){const t=this.fields;return t&&this.changes&this.MOD?y.isArray(e)?e.some(e=>t[e]):t[e]:0},filter(){y.error(\"MultiPulse does not support filtering.\")},materialize(){y.error(\"MultiPulse does not support materialization.\")},visit(e,t){var r=this.pulses,n=r.length;let a=0;if(e&this.SOURCE)for(;a<n;++a)r[a].visit(e,t);else for(;a<n;++a)r[a].stamp===this.stamp&&r[a].visit(e,t);return this}});const F={skip:!1,force:!1};function ce(e,t){t=t||F;return this._pulse?this._enqueue(e):this._touched.add(e),t.skip&&e.skip(!0),this}function ue(e,t,r){r=r||F;return(e.set(t)||r.force)&&this.touch(e,r),this}function de(e,t,r){this.touch(e,r||F);var r=new _(this,this._clock+(this._pulse?0:1)),n=e.pulse&&e.pulse.source||[];return r.target=e,this._input[e.id]=t.pulse(r,n),this}function pe(r){let n=[];return{clear:()=>n=[],size:()=>n.length,peek:()=>n[0],push:e=>(n.push(e),w(n,0,n.length-1,r)),pop:()=>{var e=n.pop();let t;return n.length?(t=n[0],n[0]=e,fe(n,0,r)):t=e,t}}}function w(e,t,r,n){for(var a,i,o=e[r];t<r&&n(o,a=e[i=r-1>>1])<0;)e[r]=a,r=i;return e[r]=o}function fe(e,t,r){var n=t,a=e.length,i=e[t];let o=1+(t<<1),s;for(;o<a;)(s=o+1)<a&&0<=r(e[o],e[s])&&(o=s),e[t]=e[o],o=1+((t=o)<<1);e[t]=i,w(e,n,t,r)}function k(){this.logger(y.logger()),this.logLevel(y.Error),this._clock=0,this._rank=0,this._locale=r.defaultLocale();try{this._loader=i.loader()}catch(e){}this._touched=u(y.id),this._input={},this._pulse=null,this._heap=pe((e,t)=>e.qrank-t.qrank),this._postrun=[]}function I(e){return function(){return this._log[e].apply(this,arguments)}}function R(e,t){f.call(this,e,null,t)}k.prototype={stamp(){return this._clock},loader(e){return arguments.length?(this._loader=e,this):this._loader},locale(e){return arguments.length?(this._locale=e,this):this._locale},logger(e){return arguments.length?(this._log=e,this):this._log},error:I(\"error\"),warn:I(\"warn\"),info:I(\"info\"),debug:I(\"debug\"),logLevel:I(\"level\"),cleanThreshold:1e4,add:G,connect:V,rank:ee,rerank:te,pulse:de,touch:ce,update:ue,changeset:b,ingest:W,parse:z,preload:K,request:$,events:q,on:J,evaluate:re,run:ae,runAsync:ne,runAfter:ie,_enqueue:oe,_getPulse:se},y.inherits(R,f,{run(e){if(e.stamp<this.stamp)return e.StopPropagation;let t;return this.skip()?this.skip(!1):t=this.evaluate(e),(t=t||e).then?t=t.then(e=>this.pulse=e):t!==e.StopPropagation&&(this.pulse=t),t},evaluate(e){var t=this.marshall(e.stamp),e=this.transform(t,e);return t.clear(),e},transform(){}});const U={};function he(e){e=N(e);return e&&e.Definition||null}function N(e){return e=e&&e.toLowerCase(),y.hasOwnProperty(U,e)?U[e]:null}e.Dataflow=k,e.EventStream=m,e.MultiPulse=O,e.Operator=f,e.Parameters=p,e.Pulse=_,e.Transform=R,e.UniqueList=u,e.asyncCallback=d,e.changeset=b,e.definition=he,e.derive=B,e.ingest=v,e.isChangeSet=c,e.isTuple=o,e.rederive=l,e.replace=j,e.stableCompare=H,e.transform=N,e.transforms=U,e.tupleid=T}}return VP.exports}var nD,aD,iD={exports:{}},oD={exports:{}};function sD(){if(!nD){nD=1;var t=oD.exports;{var d=t;function*p(t,r){if(null==r)for(var e of t)null!=e&&\"\"!==e&&(e=+e)>=e&&(yield e);else{let e=-1;for(var n of t)null!=(n=r(n,++e,t))&&\"\"!==n&&(n=+n)>=n&&(yield n)}}function f(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function U(e){return null===e?NaN:+e}function*B(t,r){if(void 0===r)for(var e of t)null!=e&&(e=+e)>=e&&(yield e);else{let e=-1;for(var n of t)null!=(n=r(n,++e,t))&&(n=+n)>=n&&(yield n)}}function j(t,r){let n=0,a,i=0,o=0;if(void 0===r)for(var e of t)null!=e&&(e=+e)>=e&&(a=e-i,i+=a/++n,o+=a*(e-i));else{let e=-1;for(var s of t)null!=(s=r(s,++e,t))&&(s=+s)>=s&&(a=s-i,i+=a/++n,o+=a*(s-i))}if(1<n)return o/(n-1)}function H(e,t){e=j(e,t);return e&&Math.sqrt(e)}function G(n=f){if(n===f)return e;if(\"function\"!=typeof n)throw new TypeError(\"compare is not a function\");return(e,t)=>{var r=n(e,t);return r||0===r?r:(0===n(t,t))-(0===n(e,e))}}function e(e,t){return(null==e||!(e<=e))-(null==t||!(t<=t))||(e<t?-1:t<e?1:0)}function a(t,r){let n;if(void 0===r)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let e=-1;for(var a of t)null!=(a=r(a,++e,t))&&(n<a||void 0===n&&a>=a)&&(n=a)}return n}function i(t,r){let n;if(void 0===r)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let e=-1;for(var a of t)null!=(a=r(a,++e,t))&&(n>a||void 0===n&&a>=a)&&(n=a)}return n}function h(r,n,a=0,i=1/0,o){if(n=Math.floor(n),a=Math.floor(Math.max(0,a)),i=Math.floor(Math.min(r.length-1,i)),a<=n&&n<=i)for(o=void 0===o?e:G(o);a<i;){600<i-a&&(s=i-a+1,l=n-a+1,u=Math.log(s),c=.5*Math.exp(2*u/3),u=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1),h(r,n,Math.max(a,Math.floor(n-l*c/s+u)),Math.min(i,Math.floor(n+(s-l)*c/s+u)),o));var s,l,c,u,d=r[n];let e=a,t=i;for(m(r,a,n),0<o(r[i],d)&&m(r,a,i);e<t;){for(m(r,e,t),++e,--t;o(r[e],d)<0;)++e;for(;0<o(r[t],d);)--t}0===o(r[a],d)?m(r,a,t):m(r,++t,i),t<=n&&(a=t+1),n<=t&&(i=t-1)}return r}function m(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function g(e,t,r){var n;if((r=(e=Float64Array.from(B(e,r))).length)&&!isNaN(t=+t))return t<=0||r<2?i(e):1<=t?a(e):(r=(r-1)*t,(n=a(h(e,t=Math.floor(r)).subarray(0,t+1)))+(i(e.subarray(t+1))-n)*(r-t))}function V(e,t,r=U){var n,a;if((n=e.length)&&!isNaN(t=+t))return t<=0||n<2?+r(e[0],0,e):1<=t?+r(e[n-1],n-1,e):(n=(n-1)*t,(a=+r(e[t=Math.floor(n)],t,e))+(+r(e[t+1],t+1,e)-a)*(n-t))}function q(e,t){return g(e,.5,t)}function r(e,t,r){const n=Float64Array.from(p(e,r));return n.sort(f),t.map(e=>V(n,e))}function s(e,t){return r(e,[.25,.5,.75],t)}function l(e,t){var r=e.length,n=H(e,t),e=s(e,t),t=(e[2]-e[0])/1.34;return 1.06*(Math.min(n,t)||n||Math.abs(e[0])||1)*Math.pow(r,-.2)}function z(e){var t=e.maxbins||20,r=e.base||10,n=Math.log(r),a=e.divide||[5,2];let i=e.extent[0],o=e.extent[1],s,l,c,u,d,p;var f=e.span||o-i||Math.abs(i)||1;if(e.step)s=e.step;else if(e.steps){for(u=f/t,d=0,p=e.steps.length;d<p&&e.steps[d]<u;++d);s=e.steps[Math.max(0,d-1)]}else{for(l=Math.ceil(Math.log(t)/n),c=e.minstep||0,s=Math.max(c,Math.pow(r,Math.round(Math.log(f)/n)-l));Math.ceil(f/s)>t;)s*=r;for(d=0,p=a.length;d<p;++d)(u=s/a[d])>=c&&f/u<=t&&(s=u)}n=0<=(u=Math.log(s))?0:1+~~(-u/n),n=Math.pow(r,-n-1);return!e.nice&&void 0!==e.nice||(u=Math.floor(i/s+n)*s,i=i<u?u-s:u,o=Math.ceil(o/s)*s),{start:i,stop:o===i?i+s:o,step:s}}function W(e){d.random=e}function $(e,t,r,n){if(!e.length)return[void 0,void 0];var a=Float64Array.from(p(e,n)),i=a.length,o=t;let s,l,c,u;for(c=0,u=Array(o);c<o;++c){for(s=0,l=0;l<i;++l)s+=a[~~(d.random()*i)];u[c]=s/i}return u.sort(f),[g(u,r/2),g(u,1-r/2)]}function K(e,t,r,n){n=n||(e=>e);var a=e.length,i=new Float64Array(a);let o=0,s=1,l=n(e[0]),c=l,u=l+t,d;for(;s<a;++s){if((d=n(e[s]))>=u){for(c=(l+c)/2;o<s;++o)i[o]=c;u=d+t,l=d}c=d}for(c=(l+c)/2;o<s;++o)i[o]=c;return r?Y(i,t+t/4):i}function Y(e,t){var r=e.length;let n=0,a=1,i,o;for(;e[n]===e[a];)++a;for(;a<r;){for(i=a+1;e[a]===e[i];)++i;if(e[a]-e[a-1]<t){for(o=a+(n+i-a-a>>1);o<a;)e[o++]=e[a];for(;o>a;)e[o--]=e[n]}n=a,a=i}return e}function J(e){return function(){return(e=(1103515245*e+12345)%2147483647)/2147483647}}function Q(e,t){null==t&&(t=e,e=0);let r,n,a;const i={min(e){return arguments.length?(r=e||0,a=n-r,i):r},max(e){return arguments.length?(n=e||0,a=n-r,i):n},sample(){return r+Math.floor(a*d.random())},pdf(e){return e===Math.floor(e)&&e>=r&&e<n?1/a:0},cdf(e){e=Math.floor(e);return e<r?0:e>=n?1:(e-r+1)/a},icdf(e){return 0<=e&&e<=1?r-1+Math.floor(e*a):NaN}};return i.min(e).max(t)}d.random=Math.random;const n=Math.sqrt(2*Math.PI),x=Math.SQRT2;let o=NaN;function c(e,t){e=e||0,t=null==t?1:t;let r=0,n=0,a,i;if(o==o)r=o,o=NaN;else{for(;r=2*d.random()-1,n=2*d.random()-1,0===(a=r*r+n*n)||1<a;);i=Math.sqrt(-2*Math.log(a)/a),r*=i,o=n*i}return e+r*t}function u(e,t,r){e=(e-(t||0))/(r=null==r?1:r);return Math.exp(-.5*e*e)/(r*n)}function _(e,t,r){e=(e-(t=t||0))/(r=null==r?1:r),t=Math.abs(e);let n;if(37<t)n=0;else{r=Math.exp(-t*t/2);let e;t<7.07106781186547?(e=(e=(e=(e=(e=(e=.0352624965998911*t+.700383064443688)*t+6.37396220353165)*t+33.912866078383)*t+112.079291497871)*t+221.213596169931)*t+220.206867912376,n=r*e,e=(e=(e=(e=(e=(e=(e=.0883883476483184*t+1.75566716318264)*t+16.064177579207)*t+86.7807322029461)*t+296.564248779674)*t+637.333633378831)*t+793.826512519948)*t+440.413735824752,n/=e):(e=t+1/(e=t+2/(e=t+3/(e=t+4/(e=t+.65)))),n=r/e/2.506628274631)}return 0<e?1-n:n}function y(e,t,r){return e<0||1<e?NaN:(t||0)+(null==r?1:r)*x*Z(2*e-1)}function Z(e){let t=-Math.log((1-e)*(1+e)),r;return(r=t<6.25?(t-=3.125,1.6536545626831027+(r=.24015818242558962+(r=(r=(r=.00018673420803405714+(r=(r=(r=4.2347877827932404e-7+(r=(r=(r=1.0512122733215323e-9+(r=(r=(r=26335093153082323e-28+(r=(r=(r=6637638134358324e-30+(r=20972767875968562e-33+(r=(r=11157877678025181e-33+(r=128584807152564e-32+(r=(r=-364441206401782e-35)*t-16850591381820166e-35)*t)*t)*t-1333171662854621e-31)*t)*t)*t-4054566272975207e-29)*t-8151934197605472e-29)*t)*t-12975133253453532e-27)*t-5415412054294628e-26)*t)*t-4.112633980346984e-9)*t-2.9070369957882005e-8)*t)*t-13654692000834679e-22)*t-13882523362786469e-21)*t)*t-.000740702534166267)*t-.006033670871430149)*t)*t):t<16?(t=Math.sqrt(t)-3.25,3.0838856104922208+(r=1.0052589676941592+(r=.005370914553590064+(r=(r=.002491442096107851+(r=(r=.0009532893797373805+(r=(r=24031110387097894e-21+(r=6828485145957318e-20+(r=(r=12475304481671779e-21+(r=29234449089955446e-22+(r=(r=15027403968909828e-22+(r=1.8239629214389228e-8+(r=(r=9.075656193888539e-8+(r=2.2137376921775787e-9)*t)*t-2.7517406297064545e-7)*t)*t)*t-4013867526981546e-21)*t)*t)*t-47318229009055734e-21)*t)*t)*t-.0003550375203628475)*t)*t-.0016882755560235047)*t)*t-.003751208507569241)*t)*t)*t):Number.isFinite(t)?(t=Math.sqrt(t)-5,4.849906401408584+(r=1.0103004648645344+(r=(r=(r=7599527703001776e-20+(r=(r=4526062597223154e-21+(r=(r=2.2900482228026655e-7+(r=(r=2.914795345090108e-8+(r=(r=7.61570120807834e-9+(r=(r=1.5076572693500548e-9+(r=(r=-27109920616438573e-27)*t-2.555641816996525e-10)*t)*t-3.789465440126737e-9)*t)*t-1.496002662714924e-8)*t)*t-6.771199775845234e-8)*t)*t-9.9298272942317e-7)*t)*t-1968177810553167e-20)*t)*t-.00021503011930044477)*t-.00013871931833623122)*t)*t):1/0)*e}function T(e,t){let r,n;const a={mean(e){return arguments.length?(r=e||0,a):r},stdev(e){return arguments.length?(n=null==e?1:e,a):n},sample:()=>c(r,n),pdf:e=>u(e,r,n),cdf:e=>_(e,r,n),icdf:e=>y(e,r,n)};return a.mean(e).stdev(t)}function X(n,a){const i=T();let o=0;const t={data(e){return arguments.length?(n=e,o=e?e.length:0,t.bandwidth(a)):n},bandwidth(e){return arguments.length?(!(a=e)&&n&&(a=l(n)),t):a},sample(){return n[~~(d.random()*o)]+a*i.sample()},pdf(e){let t=0,r=0;for(;r<o;++r)t+=i.pdf((e-n[r])/a);return t/a/o},cdf(e){let t=0,r=0;for(;r<o;++r)t+=i.cdf((e-n[r])/a);return t/o},icdf(){throw Error(\"KDE icdf not supported.\")}};return t.data(n)}function v(e,t){return e=e||0,t=null==t?1:t,Math.exp(e+c()*t)}function b(e,t,r){if(e<=0)return 0;t=t||0,r=null==r?1:r;t=(Math.log(e)-t)/r;return Math.exp(-.5*t*t)/(r*n*e)}function E(e,t,r){return _(Math.log(e),t,r)}function S(e,t,r){return Math.exp(y(e,t,r))}function ee(e,t){let r,n;const a={mean(e){return arguments.length?(r=e||0,a):r},stdev(e){return arguments.length?(n=null==e?1:e,a):n},sample:()=>v(r,n),pdf:e=>b(e,r,n),cdf:e=>E(e,r,n),icdf:e=>S(e,r,n)};return a.mean(e).stdev(t)}function te(a,t){let i=0,o;const r={weights(e){return arguments.length?(o=function(e){var t=[];let r=0,n;for(n=0;n<i;++n)r+=t[n]=null==e[n]?1:+e[n];for(n=0;n<i;++n)t[n]/=r;return t}(t=e||[]),r):t},distributions(e){return arguments.length?(a=e?(i=e.length,e):(i=0,[]),r.weights(t)):a},sample(){var e=d.random();let t=a[i-1],r=o[0],n=0;for(;n<i-1;r+=o[++n])if(e<r){t=a[n];break}return t.sample()},pdf(e){let t=0,r=0;for(;r<i;++r)t+=o[r]*a[r].pdf(e);return t},cdf(e){let t=0,r=0;for(;r<i;++r)t+=o[r]*a[r].cdf(e);return t},icdf(){throw Error(\"Mixture icdf not supported.\")}};return r.distributions(a).weights(t)}function A(e,t){return null==t&&(t=null==e?1:e,e=0),e+(t-e)*d.random()}function O(e,t,r){return null==r&&(r=null==t?1:t,t=0),t<=e&&e<=r?1/(r-t):0}function C(e,t,r){return null==r&&(r=null==t?1:t,t=0),e<t?0:r<e?1:(e-t)/(r-t)}function w(e,t,r){return null==r&&(r=null==t?1:t,t=0),0<=e&&e<=1?t+e*(r-t):NaN}function re(e,t){let r,n;const a={min(e){return arguments.length?(r=e||0,a):r},max(e){return arguments.length?(n=null==e?1:e,a):n},sample:()=>A(r,n),pdf:e=>O(e,r,n),cdf:e=>C(e,r,n),icdf:e=>w(e,r,n)};return null==t&&(t=null==e?1:e,e=0),a.min(e).max(t)}function k(e,t,r){let n=0,a=0;for(const o of e){var i=r(o);null==t(o)||null==i||isNaN(i)||(n+=(i-n)/++a)}return{coef:[n],predict:()=>n,rSquared:0}}function I(e,t,r,n){n-=e*e,r=Math.abs(n)<1e-24?0:(r-e*t)/n;return[t-r*e,r]}function R(e,r,n,t){e=e.filter(e=>{var t=r(e),e=n(e);return null!=t&&(t=+t)>=t&&null!=e&&(e=+e)>=e}),t&&e.sort((e,t)=>r(e)-r(t));var a=e.length,i=new Float64Array(a),o=new Float64Array(a);let s=0,l=0,c=0,u,d,p;for(p of e)i[s]=u=+r(p),o[s]=d=+n(p),++s,l+=(u-l)/s,c+=(d-c)/s;for(s=0;s<a;++s)i[s]-=l,o[s]-=c;return[i,o,l,c]}function N(e,t,r,n){let a=-1,i,o;for(const s of e)i=t(s),o=r(s),null!=i&&(i=+i)>=i&&null!=o&&(o=+o)>=o&&n(i,o,++a)}function M(e,t,r,n,a){let i=0,o=0;return N(e,t,r,(e,t)=>{e=t-a(e),t-=n;i+=e*e,o+=t*t}),1-i/o}function P(e,t,r){let n=0,a=0,i=0,o=0,s=0;N(e,t,r,(e,t)=>{++s,n+=(e-n)/s,a+=(t-a)/s,i+=(e*t-i)/s,o+=(e*e-o)/s});const l=I(n,a,i,o),c=e=>l[0]+l[1]*e;return{coef:l,predict:c,rSquared:M(e,t,r,a,c)}}function ne(e,t,r){let n=0,a=0,i=0,o=0,s=0;N(e,t,r,(e,t)=>{++s,e=Math.log(e),n+=(e-n)/s,a+=(t-a)/s,i+=(e*t-i)/s,o+=(e*e-o)/s});const l=I(n,a,i,o),c=e=>l[0]+l[1]*Math.log(e);return{coef:l,predict:c,rSquared:M(e,t,r,a,c)}}function ae(e,t,r){const[n,,a,i]=R(e,t,r);let o=0,s=0,l=0,c=0,u=0,d,p,f;N(e,t,r,(e,t)=>{d=n[u++],p=Math.log(t),f=d*t,o+=(t*p-o)/u,s+=(f-s)/u,l+=(f*p-l)/u,c+=(d*f-c)/u});const[h,m]=I(s/i,o/i,l/i,c/i),g=e=>Math.exp(h+m*(e-a));return{coef:[Math.exp(h-m*a),m],predict:g,rSquared:M(e,t,r,i,g)}}function ie(e,t,r){let n=0,a=0,i=0,o=0,s=0,l=0;N(e,t,r,(e,t)=>{var e=Math.log(e),r=Math.log(t);++l,n+=(e-n)/l,a+=(r-a)/l,i+=(e*r-i)/l,o+=(e*e-o)/l,s+=(t-s)/l});const c=I(n,a,i,o),u=e=>c[0]*Math.pow(e,c[1]);return c[0]=Math.exp(c[0]),{coef:c,predict:u,rSquared:M(e,t,r,s,u)}}function D(e,t,r){const[n,a,i,o]=R(e,t,r),s=n.length;let l=0,c=0,u=0,d=0,p=0,f,h,m,g;for(f=0;f<s;)h=n[f],m=a[f++],g=h*h,l+=(g-l)/f,c+=(g*h-c)/f,u+=(g*g-u)/f,d+=(h*m-d)/f,p+=(g*m-p)/f;const _=u-l*l,y=l*_-c*c,T=(p*l-d*c)/y,v=(d*_-p*c)/y,b=-T*l,E=e=>(e-=i,T*e*e+v*e+b+o);return{coef:[b-v*i+T*i*i+o,v-2*T*i,T],predict:E,rSquared:M(e,t,r,o,E)}}function oe(e,t,r,n){if(0===n)return k(e,t,r);if(1===n)return P(e,t,r);if(2===n)return D(e,t,r);const[a,i,o,s]=R(e,t,r),l=a.length,c=[],u=[],d=n+1;let p,f,h,m,g;for(p=0;p<d;++p){for(h=0,m=0;h<l;++h)m+=Math.pow(a[h],p)*i[h];for(c.push(m),g=new Float64Array(d),f=0;f<d;++f){for(h=0,m=0;h<l;++h)m+=Math.pow(a[h],p+f);g[f]=m}u.push(g)}u.push(c);const _=le(u),y=e=>{e-=o;let t=s+_[0]+_[1]*e+_[2]*e*e;for(p=3;p<d;++p)t+=_[p]*Math.pow(e,p);return t};return{coef:se(d,_,-o,s),predict:y,rSquared:M(e,t,r,s,y)}}function se(e,t,r,n){var a=Array(e);let i,o,s,l;for(i=0;i<e;++i)a[i]=0;for(i=e-1;0<=i;--i)for(s=t[i],l=1,a[i]+=s,o=1;o<=i;++o)l*=(i+1-o)/o,a[i-o]+=s*Math.pow(r,o)*l;return a[0]+=n,a}function le(e){var t=e.length-1,r=[];let n,a,i,o,s;for(n=0;n<t;++n){for(o=n,a=n+1;a<t;++a)Math.abs(e[n][a])>Math.abs(e[n][o])&&(o=a);for(i=n;i<1+t;++i)s=e[i][n],e[i][n]=e[i][o],e[i][o]=s;for(a=n+1;a<t;++a)for(i=t;i>=n;i--)e[i][a]-=e[i][n]*e[n][a]/e[n][n]}for(a=t-1;0<=a;--a){for(s=0,i=a+1;i<t;++i)s+=e[i][a]*r[i];r[a]=(e[t][a]-s)/e[a][a]}return r}const L=2,F=1e-12;function ce(e,t,r,n){var[o,s,e,t]=R(e,t,r,!0),a=o.length,i=Math.max(2,~~(n*a)),l=new Float64Array(a),c=new Float64Array(a),u=new Float64Array(a).fill(1);for(let e=-1;++e<=L;){var d=[0,i-1];for(let e=0;e<a;++e){var p=o[e],f=d[0],h=d[1],m=p-o[f]>o[h]-p?f:h;let t=0,r=0,n=0,a=0,i=0;var g=1/Math.abs(o[m]-p||1);for(let e=f;e<=h;++e){var _=o[e],y=s[e],T=ue(Math.abs(p-_)*g)*u[e],v=_*T;t+=T,r+=v,n+=y*T,a+=y*v,i+=_*v}var[m,f]=I(r/t,n/t,a/t,i/t);l[e]=m+f*p,c[e]=Math.abs(s[e]-l[e]),de(o,e+1,d)}if(e===L)break;var b=q(c);if(Math.abs(b)<F)break;for(let e=0,t,r;e<a;++e)t=c[e]/(6*b),u[e]=1<=t?F:(r=1-t*t)*r}return pe(o,l,e,t)}function ue(e){return(e=1-e*e*e)*e*e}function de(e,t,r){var n=e[t];let a=r[0],i=r[1]+1;if(!(i>=e.length))for(;t>a&&e[i]-n<=n-e[a];)r[0]=++a,r[1]=i,++i}function pe(e,t,r,n){var a=e.length,i=[];let o=0,s=0,l=[],c;for(;o<a;++o)c=e[o]+r,l[0]===c?l[1]+=(t[o]-l[1])/++s:(s=0,l[1]+=n,l=[c,t[o]],i.push(l));return l[1]+=n,i}const ge=.5*Math.PI/180;function fe(t,r,n,a){n=n||25,a=Math.max(n,a||200);var i=e=>[e,t(e)],o=r[0],r=r[1],s=r-o,l=s/a,c=[i(o)],u=[];if(n===a){for(let e=1;e<a;++e)c.push(i(o+e/n*s));c.push(i(r))}else{u.push(i(r));for(let e=n;0<--e;)u.push(i(o+e/n*s));let e=c[0],t=u[u.length-1];for(var d=1/s,p=he(e[1],u);t;){var f=i((e[0]+t[0])/2);f[0]-e[0]>=l&&me(e,f,t,d,p)>ge?u.push(f):(e=t,c.push(t),u.pop()),t=u[u.length-1]}}return c}function he(e,t){let r=e,n=e;var a=t.length;for(let e=0;e<a;++e){var i=t[e][1];i<r&&(r=i),i>n&&(n=i)}return 1/(n-r)}function me(e,t,r,n,a){r=Math.atan2(a*(r[1]-e[1]),n*(r[0]-e[0])),a=Math.atan2(a*(t[1]-e[1]),n*(t[0]-e[0]));return Math.abs(r-a)}d.bandwidthNRD=l,d.bin=z,d.bootstrapCI=$,d.cumulativeLogNormal=E,d.cumulativeNormal=_,d.cumulativeUniform=C,d.densityLogNormal=b,d.densityNormal=u,d.densityUniform=O,d.dotbin=K,d.quantileLogNormal=S,d.quantileNormal=y,d.quantileUniform=w,d.quantiles=r,d.quartiles=s,d.randomInteger=Q,d.randomKDE=X,d.randomLCG=J,d.randomLogNormal=ee,d.randomMixture=te,d.randomNormal=T,d.randomUniform=re,d.regressionConstant=k,d.regressionExp=ae,d.regressionLinear=P,d.regressionLoess=ce,d.regressionLog=ne,d.regressionPoly=oe,d.regressionPow=ie,d.regressionQuad=D,d.sampleCurve=fe,d.sampleLogNormal=v,d.sampleNormal=c,d.sampleUniform=A,d.setRandom=W}}return oD.exports}function lD(){if(!aD){aD=1;{var e=iD.exports;var O=HP();var C=rD();var _=sD();var h=XP();function w(e){return e&&e.length?1===e.length?e[0]:(a=e,e=>{var t=a.length;let r=1,n=String(a[0](e));for(;r<t;++r)n+=\"|\"+a[r](e);return n}):function(){return\"\"};var a}function L(e,t,r){return r||e+(t?\"_\"+t:\"\")}var t=()=>{};const ke={init:t,add:t,rem:t,idx:0},P={values:{init:e=>e.cell.store=!0,value:e=>e.cell.data.values(),idx:-1},count:{value:e=>e.cell.num},__count__:{value:e=>e.missing+e.valid},missing:{value:e=>e.missing},valid:{value:e=>e.valid},sum:{init:e=>e.sum=0,value:e=>e.valid?e.sum:void 0,add:(e,t)=>e.sum+=+t,rem:(e,t)=>e.sum-=t},product:{init:e=>e.product=1,value:e=>e.valid?e.product:void 0,add:(e,t)=>e.product*=t,rem:(e,t)=>e.product/=t},mean:{init:e=>e.mean=0,value:e=>e.valid?e.mean:void 0,add:(e,t)=>(e.mean_d=t-e.mean,e.mean+=e.mean_d/e.valid),rem:(e,t)=>(e.mean_d=t-e.mean,e.mean-=e.valid?e.mean_d/e.valid:e.mean)},average:{value:e=>e.valid?e.mean:void 0,req:[\"mean\"],idx:1},variance:{init:e=>e.dev=0,value:e=>1<e.valid?e.dev/(e.valid-1):void 0,add:(e,t)=>e.dev+=e.mean_d*(t-e.mean),rem:(e,t)=>e.dev-=e.mean_d*(t-e.mean),req:[\"mean\"],idx:1},variancep:{value:e=>1<e.valid?e.dev/e.valid:void 0,req:[\"variance\"],idx:2},stdev:{value:e=>1<e.valid?Math.sqrt(e.dev/(e.valid-1)):void 0,req:[\"variance\"],idx:2},stdevp:{value:e=>1<e.valid?Math.sqrt(e.dev/e.valid):void 0,req:[\"variance\"],idx:2},stderr:{value:e=>1<e.valid?Math.sqrt(e.dev/(e.valid*(e.valid-1))):void 0,req:[\"variance\"],idx:2},distinct:{value:e=>e.cell.data.distinct(e.get),req:[\"values\"],idx:3},ci0:{value:e=>e.cell.data.ci0(e.get),req:[\"values\"],idx:3},ci1:{value:e=>e.cell.data.ci1(e.get),req:[\"values\"],idx:3},median:{value:e=>e.cell.data.q2(e.get),req:[\"values\"],idx:3},q1:{value:e=>e.cell.data.q1(e.get),req:[\"values\"],idx:3},q3:{value:e=>e.cell.data.q3(e.get),req:[\"values\"],idx:3},min:{init:e=>e.min=void 0,value:e=>e.min=Number.isNaN(e.min)?e.cell.data.min(e.get):e.min,add:(e,t)=>{(t<e.min||void 0===e.min)&&(e.min=t)},rem:(e,t)=>{t<=e.min&&(e.min=NaN)},req:[\"values\"],idx:4},max:{init:e=>e.max=void 0,value:e=>e.max=Number.isNaN(e.max)?e.cell.data.max(e.get):e.max,add:(e,t)=>{(t>e.max||void 0===e.max)&&(e.max=t)},rem:(e,t)=>{t>=e.max&&(e.max=NaN)},req:[\"values\"],idx:4},argmin:{init:e=>e.argmin=void 0,value:e=>e.argmin||e.cell.data.argmin(e.get),add:(e,t,r)=>{t<e.min&&(e.argmin=r)},rem:(e,t)=>{t<=e.min&&(e.argmin=void 0)},req:[\"min\",\"values\"],idx:3},argmax:{init:e=>e.argmax=void 0,value:e=>e.argmax||e.cell.data.argmax(e.get),add:(e,t,r)=>{t>e.max&&(e.argmax=r)},rem:(e,t)=>{t>=e.max&&(e.argmax=void 0)},req:[\"max\",\"values\"],idx:3},exponential:{init:(e,t)=>{e.exp=0,e.exp_r=t},value:e=>e.valid?e.exp*(1-e.exp_r)/(1-e.exp_r**e.valid):void 0,add:(e,t)=>e.exp=e.exp_r*e.exp+t,rem:(e,t)=>e.exp=(e.exp-t/e.exp_r**(e.valid-1))/e.exp_r},exponentialb:{value:e=>e.valid?e.exp*(1-e.exp_r):void 0,req:[\"exponential\"],idx:1}};t=Object.keys(P).filter(e=>\"__count__\"!==e);function F(e,t,r){return P[e](r,t)}function U(e,t){return e.idx-t.idx}function B(){this.valid=0,this.missing=0,this._ops.forEach(e=>null==e.aggregate_param?e.init(this):e.init(this,e.aggregate_param))}function j(t,r){null==t||\"\"===t?++this.missing:t==t&&(++this.valid,this._ops.forEach(e=>e.add(this,t,r)))}function H(t,r){null==t||\"\"===t?--this.missing:t==t&&(--this.valid,this._ops.forEach(e=>e.rem(this,t,r)))}function G(t){return this._out.forEach(e=>t[e.out]=e.value(this)),t}function V(e,t){const r=t||O.identity,n=function(e){const t={},r=(e.forEach(e=>t[e.name]=e),e=>{e.req&&e.req.forEach(e=>{t[e]||r(t[e]=P[e]())})});return e.forEach(r),Object.values(t).sort(U)}(e),a=e.slice().sort(U);function i(e){this._ops=n,this._out=a,this.cell=e,this.init()}return i.prototype.init=B,i.prototype.add=j,i.prototype.rem=H,i.prototype.set=G,i.prototype.get=r,i.fields=e.map(e=>e.out),i}function y(e){this._key=e?O.field(e):C.tupleid,this.reset()}[...t,\"__count__\"].forEach(e=>{var r,n;P[e]=(r=e,n=P[e],(e,t)=>O.extend({name:r,aggregate_param:t,out:e||r},ke,n))});var r=y.prototype;function n(e){C.Transform.call(this,null,e),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}r.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},r.add=function(e){this._add.push(e)},r.rem=function(e){this._rem.push(e)},r.values=function(){if(this._get=null,0===this._rem.length)return this._add;var e=this._add,t=this._rem,r=this._key,n=e.length,a=t.length,i=Array(n-a),o={};let s,l,c;for(s=0;s<a;++s)o[r(t[s])]=1;for(s=0,l=0;s<n;++s)o[r(c=e[s])]?o[r(c)]=0:i[l++]=c;return this._rem=[],this._add=i},r.distinct=function(e){var t=this.values(),r={};let n=t.length,a=0,i;for(;0<=--n;)i=e(t[n])+\"\",O.hasOwnProperty(r,i)||(r[i]=1,++a);return a},r.extent=function(e){var t,r;return this._get===e&&this._ext||(t=this.values(),r=O.extentIndex(t,e),this._ext=[t[r[0]],t[r[1]]],this._get=e),this._ext},r.argmin=function(e){return this.extent(e)[0]||{}},r.argmax=function(e){return this.extent(e)[1]||{}},r.min=function(e){var t=this.extent(e)[0];return null!=t?e(t):void 0},r.max=function(e){var t=this.extent(e)[1];return null!=t?e(t):void 0},r.quartile=function(e){return this._get===e&&this._q||(this._q=_.quartiles(this.values(),e),this._get=e),this._q},r.q1=function(e){return this.quartile(e)[0]},r.q2=function(e){return this.quartile(e)[1]},r.q3=function(e){return this.quartile(e)[2]},r.ci=function(e){return this._get===e&&this._ci||(this._ci=_.bootstrapCI(this.values(),1e3,.05,e),this._get=e),this._ci},r.ci0=function(e){return this.ci(e)[0]},r.ci1=function(e){return this.ci(e)[1]},n.Definition={type:\"Aggregate\",metadata:{generates:!0,changes:!0},params:[{name:\"groupby\",type:\"field\",array:!0},{name:\"ops\",type:\"enum\",array:!0,values:t},{name:\"aggregate_params\",type:\"number\",null:!0,array:!0},{name:\"fields\",type:\"field\",null:!0,array:!0},{name:\"as\",type:\"string\",null:!0,array:!0},{name:\"drop\",type:\"boolean\",default:!0},{name:\"cross\",type:\"boolean\",default:!1},{name:\"key\",type:\"field\"}]},O.inherits(n,C.Transform,{transform(e,t){const r=this,n=t.fork(t.NO_SOURCE|t.NO_FIELDS),a=e.modified();return r.stamp=n.stamp,r.value&&(a||t.modified(r._inputs,!0))?(r._prev=r.value,r.value=a?r.init(e):Object.create(null),t.visit(t.SOURCE,e=>r.add(e))):(r.value=r.value||r.init(e),t.visit(t.REM,e=>r.rem(e)),t.visit(t.ADD,e=>r.add(e))),n.modifies(r._outputs),r._drop=!1!==e.drop,e.cross&&1<r._dims.length&&(r._drop=!1,r.cross()),t.clean()&&r._drop&&n.clean(!0).runAfter(()=>this.clean()),r.changes(n)},cross(){const l=this,c=l.value,u=l._dnames,d=u.map(()=>({})),p=u.length;function e(e){let t,r,n,a;for(t in e)for(n=e[t].tuple,r=0;r<p;++r)d[r][a=n[u[r]]]=a}e(l._prev),e(c),function e(t,r,n){var a=u[n],i=d[n++];for(const s in i){var o=t?t+\"|\"+s:s;r[a]=i[s],n<p?e(o,r,n):c[o]||l.cell(o,r)}}(\"\",{},0)},init(e){const i=this._inputs=[],r=this._outputs=[],o={};function n(e){var t=O.array(O.accessorFields(e)),r=t.length;let n=0,a;for(;n<r;++n)o[a=t[n]]||(o[a]=1,i.push(a))}this._dims=O.array(e.groupby),this._dnames=this._dims.map(e=>{var t=O.accessorName(e);return n(e),r.push(t),t}),this.cellkey=e.key||w(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];var t=e.fields||[null],a=e.ops||[\"count\"],s=e.aggregate_params||[null],l=e.as||[],c=t.length,u={};let d,p,f,h,m,g,_;for(c!==a.length&&O.error(\"Unmatched number of fields and aggregate ops.\"),_=0;_<c;++_)d=t[_],p=a[_],f=s[_]||null,null==d&&\"count\"!==p&&O.error(\"Null aggregate field specified.\"),g=L(p,m=O.accessorName(d),l[_]),r.push(g),\"count\"===p?this._counts.push(g):((h=u[m])||(n(d),(h=u[m]=[]).field=d,this._measures.push(h)),\"count\"!==p&&(this._countOnly=!1),h.push(F(p,f,g)));return this._measures=this._measures.map(e=>V(e,e.field)),Object.create(null)},cellkey:w(),cell(e,t){let r=this.value[e];return r?0===r.num&&this._drop&&r.stamp<this.stamp?(r.stamp=this.stamp,this._adds[this._alen++]=r):r.stamp<this.stamp&&(r.stamp=this.stamp,this._mods[this._mlen++]=r):(r=this.value[e]=this.newcell(e,t),this._adds[this._alen++]=r),r},newcell(e,t){var r={key:e,num:0,agg:null,tuple:this.newtuple(t,this._prev&&this._prev[e]),stamp:this.stamp,store:!1};if(!this._countOnly){var n=this._measures,a=n.length;r.agg=Array(a);for(let e=0;e<a;++e)r.agg[e]=new n[e](r)}return r.store&&(r.data=new y),r},newtuple(t,e){var r=this._dnames,n=this._dims,a=n.length,i={};for(let e=0;e<a;++e)i[r[e]]=n[e](t);return e?C.replace(e.tuple,i):C.ingest(i)},clean(){var e=this.value;for(const t in e)0===e[t].num&&delete e[t]},add(r){var e=this.cellkey(r),e=this.cell(e,r);if(e.num+=1,!this._countOnly){e.store&&e.data.add(r);var n=e.agg;for(let e=0,t=n.length;e<t;++e)n[e].add(n[e].get(r),r)}},rem(r){var e=this.cellkey(r),e=this.cell(e,r);if(--e.num,!this._countOnly){e.store&&e.data.rem(r);var n=e.agg;for(let e=0,t=n.length;e<t;++e)n[e].rem(n[e].get(r),r)}},celltuple(r){var n=r.tuple,a=this._counts;r.store&&r.data.values();for(let e=0,t=a.length;e<t;++e)n[a[e]]=r.num;if(!this._countOnly){var i=r.agg;for(let e=0,t=i.length;e<t;++e)i[e].set(n)}return n},changes(e){var t=this._adds,r=this._mods,n=this._prev,a=this._drop,i=e.add,o=e.rem,s=e.mod;let l,c,u,d;if(n)for(c in n)l=n[c],a&&!l.num||o.push(l.tuple);for(u=0,d=this._alen;u<d;++u)i.push(this.celltuple(t[u])),t[u]=null;for(u=0,d=this._mlen;u<d;++u)(0===(l=r[u]).num&&a?o:s).push(this.celltuple(l)),r[u]=null;return this._alen=this._mlen=0,this._prev=null,e}});function a(e){C.Transform.call(this,null,e)}function q(e,t,r){const n=e;let a=t||[],i=r||[],o={},s=0;return{add:e=>i.push(e),remove:e=>o[n(e)]=++s,size:()=>a.length,data:(e,t)=>(s&&(a=a.filter(e=>!o[n(e)]),o={},s=0),t&&e&&a.sort(e),i.length&&(a=e?O.merge(e,a,i.sort(e)):a.concat(i),i=[]),a)}}function i(e){C.Transform.call(this,[],e)}function z(e){C.Operator.call(this,null,W,e)}function W(e){return this.value&&!e.modified()?this.value:O.compare(e.fields,e.orders)}function o(e){C.Transform.call(this,null,e)}function s(e){C.Transform.call(this,null,e)}a.Definition={type:\"Bin\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\",required:!0},{name:\"interval\",type:\"boolean\",default:!0},{name:\"anchor\",type:\"number\"},{name:\"maxbins\",type:\"number\",default:20},{name:\"base\",type:\"number\",default:10},{name:\"divide\",type:\"number\",array:!0,default:[5,2]},{name:\"extent\",type:\"number\",array:!0,length:2,required:!0},{name:\"span\",type:\"number\"},{name:\"step\",type:\"number\"},{name:\"steps\",type:\"number\",array:!0},{name:\"minstep\",type:\"number\",default:0},{name:\"nice\",type:\"boolean\",default:!0},{name:\"name\",type:\"string\"},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"bin0\",\"bin1\"]}]},O.inherits(a,C.Transform,{transform(e,t){const r=!1!==e.interval,n=this._bins(e),a=n.start,i=n.step,o=e.as||[\"bin0\",\"bin1\"],s=o[0],l=o[1];let c;return c=e.modified()?(t=t.reflow(!0)).SOURCE:t.modified(O.accessorFields(e.field))?t.ADD_MOD:t.ADD,t.visit(c,r?e=>{var t=n(e);e[s]=t,e[l]=null==t?null:a+i*(1+(t-a)/i)}:e=>e[s]=n(e)),t.modifies(r?o:s)},_bins(e){if(this.value&&!e.modified())return this.value;const t=e.field,r=_.bin(e),n=r.step;let a=r.start,i=a+Math.ceil((r.stop-a)/n)*n,o,s;null!=(o=e.anchor)&&(s=o-(a+n*Math.floor((o-a)/n)),a+=s,i+=s);function l(e){return null==(e=O.toNumber(t(e)))?null:e<a?-1/0:e>i?1/0:(e=Math.max(a,Math.min(e,i-n)),a+n*Math.floor(1e-14+(e-a)/n))}return l.start=a,l.stop=r.stop,l.step=n,this.value=O.accessor(l,O.accessorFields(t),e.name||\"bin_\"+O.accessorName(t))}}),i.Definition={type:\"Collect\",metadata:{source:!0},params:[{name:\"sort\",type:\"compare\"}]},O.inherits(i,C.Transform,{transform(e,t){var r=t.fork(t.ALL),n=q(C.tupleid,this.value,r.materialize(r.ADD).add),a=e.sort,e=t.changed()||a&&(e.modified(\"sort\")||t.modified(a.fields));return r.visit(r.REM,n.remove),this.modified(e),this.value=r.source=n.data(C.stableCompare(a),e),t.source&&t.source.root&&(this.value.root=t.source.root),r}}),O.inherits(z,C.Operator),o.Definition={type:\"CountPattern\",metadata:{generates:!0,changes:!0},params:[{name:\"field\",type:\"field\",required:!0},{name:\"case\",type:\"enum\",values:[\"upper\",\"lower\",\"mixed\"],default:\"mixed\"},{name:\"pattern\",type:\"string\",default:'[\\\\w\"]+'},{name:\"stopwords\",type:\"string\",default:\"\"},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"text\",\"count\"]}]},O.inherits(o,C.Transform,{transform(o,e){var t=i=>e=>{for(var t,r=function(e,t,r){switch(t){case\"upper\":e=e.toUpperCase();break;case\"lower\":e=e.toLowerCase()}return e.match(r)}(c(e),o.case,s)||[],n=0,a=r.length;n<a;++n)l.test(t=r[n])||i(t)};const r=this._parameterCheck(o,e),n=this._counts,s=this._match,l=this._stop,c=o.field,a=o.as||[\"text\",\"count\"],i=t(e=>n[e]=1+(n[e]||0)),u=t(e=>--n[e]);return r?e.visit(e.SOURCE,i):(e.visit(e.ADD,i),e.visit(e.REM,u)),this._finish(e,a)},_parameterCheck(e,t){let r=!1;return!e.modified(\"stopwords\")&&this._stop||(this._stop=new RegExp(\"^\"+(e.stopwords||\"\")+\"$\",\"i\"),r=!0),!e.modified(\"pattern\")&&this._match||(this._match=new RegExp(e.pattern||\"[\\\\w']+\",\"g\"),r=!0),(r=e.modified(\"field\")||t.modified(e.field.fields)?!0:r)&&(this._counts={}),r},_finish(e,t){var r=this._counts,n=this._tuples||(this._tuples={}),a=t[0],i=t[1],o=e.fork(e.NO_SOURCE|e.NO_FIELDS);let s,l,c;for(s in r)l=n[s],c=r[s]||0,!l&&c?(n[s]=l=C.ingest({}),l[a]=s,l[i]=c,o.add.push(l)):0===c?(l&&o.rem.push(l),r[s]=null,n[s]=null):l[i]!==c&&(l[i]=c,o.mod.push(l));return o.modifies(t)}}),s.Definition={type:\"Cross\",metadata:{generates:!0},params:[{name:\"filter\",type:\"expr\"},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"a\",\"b\"]}]},O.inherits(s,C.Transform,{transform(e,t){var r=t.fork(t.NO_SOURCE),n=e.as||[\"a\",\"b\"],a=n[0],i=n[1],o=!this.value||t.changed(t.ADD_REM)||e.modified(\"as\")||e.modified(\"filter\");let s=this.value;return o?(s&&(r.rem=s),s=t.materialize(t.SOURCE).source,r.add=this.value=function(e,t,r,n){for(var a,i,o=[],s={},l=e.length,c=0;c<l;++c)for(s[t]=i=e[c],a=0;a<l;++a)s[r]=e[a],n(s)&&(o.push(C.ingest(s)),(s={})[t]=i);return o}(s,a,i,e.filter||O.truthy)):r.mod=s,r.source=this.value,r.modifies(n)}});const Ie={kde:_.randomKDE,mixture:_.randomMixture,normal:_.randomNormal,lognormal:_.randomLogNormal,uniform:_.randomUniform},Re=\"distributions\",Ne=\"function\",Me=\"field\";function l(e){C.Transform.call(this,null,e)}r=[{key:{function:\"normal\"},params:[{name:\"mean\",type:\"number\",default:0},{name:\"stdev\",type:\"number\",default:1}]},{key:{function:\"lognormal\"},params:[{name:\"mean\",type:\"number\",default:0},{name:\"stdev\",type:\"number\",default:1}]},{key:{function:\"uniform\"},params:[{name:\"min\",type:\"number\",default:0},{name:\"max\",type:\"number\",default:1}]},{key:{function:\"kde\"},params:[{name:\"field\",type:\"field\",required:!0},{name:\"from\",type:\"data\"},{name:\"bandwidth\",type:\"number\",default:0}]}];function $(e,r){return e?e.map((e,t)=>r[t]||O.accessorName(e)):null}function T(e,t,r){var n=[],a=e=>e(l);let i,o,s,l,c,u;if(null==t)n.push(e.map(r));else for(i={},o=0,s=e.length;o<s;++o)l=e[o],c=t.map(a),(u=i[c])||(i[c]=u=[],u.dims=c,n.push(u)),u.push(r(l));return n}l.Definition={type:\"Density\",metadata:{generates:!0},params:[{name:\"extent\",type:\"number\",array:!0,length:2},{name:\"steps\",type:\"number\"},{name:\"minsteps\",type:\"number\",default:25},{name:\"maxsteps\",type:\"number\",default:200},{name:\"method\",type:\"string\",default:\"pdf\",values:[\"pdf\",\"cdf\"]},{name:\"distribution\",type:\"param\",params:r.concat({key:{function:\"mixture\"},params:[{name:\"distributions\",type:\"param\",array:!0,params:r},{name:\"weights\",type:\"number\",array:!0}]})},{name:\"as\",type:\"string\",array:!0,default:[\"value\",\"density\"]}]},O.inherits(l,C.Transform,{transform(e,t){var r,n=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){var t=function t(e,r){var n=e[Ne],a=(O.hasOwnProperty(Ie,n)||O.error(\"Unknown distribution function: \"+n),Ie[n]());for(const i in e)i===Me?a.data((e.from||r()).map(e[i])):i===Re?a[i](e[i].map(e=>t(e,r))):typeof a[i]===Ne&&a[i](e[i]);return a}(e.distribution,(r=t,()=>r.materialize(r.SOURCE).source)),a=e.steps||e.minsteps||25,i=e.steps||e.maxsteps||200,o=e.method||\"pdf\";\"pdf\"!==o&&\"cdf\"!==o&&O.error(\"Invalid density method: \"+o),e.extent||t.data||O.error(\"Missing density extent parameter.\"),o=t[o];const s=e.as||[\"value\",\"density\"],l=e.extent||O.extent(t.data()),c=_.sampleCurve(o,l,a,i).map(e=>{var t={};return t[s[0]]=e[0],t[s[1]]=e[1],C.ingest(t)});this.value&&(n.rem=this.value),this.value=n.add=n.source=c}return n}});function c(e){C.Transform.call(this,null,e)}c.Definition={type:\"DotBin\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\",required:!0},{name:\"groupby\",type:\"field\",array:!0},{name:\"step\",type:\"number\"},{name:\"smooth\",type:\"boolean\",default:!1},{name:\"as\",type:\"string\",default:\"bin\"}]};function K(e){C.Operator.call(this,null,Y,e),this.modified(!0)}function Y(t){const r=t.expr;return this.value&&!t.modified(\"expr\")?this.value:O.accessor(e=>r(e,t),O.accessorFields(r),O.accessorName(r))}function u(e){C.Transform.call(this,[void 0,void 0],e)}function d(e,t){C.Operator.call(this,e),this.parent=t,this.count=0}function p(e){C.Transform.call(this,{},e),this._keys=O.fastmap();const n=this._targets=[];n.active=0,n.forEach=r=>{for(let e=0,t=n.active;e<t;++e)r(n[e],e,n)}}function J(e){C.Operator.call(this,null,Q,e)}function Q(e){return this.value&&!e.modified()?this.value:O.isArray(e.name)?O.array(e.name).map(e=>O.field(e)):O.field(e.name,e.as)}function f(e){C.Transform.call(this,O.fastmap(),e)}function m(e){C.Transform.call(this,[],e)}function g(e){C.Transform.call(this,[],e)}function v(e){C.Transform.call(this,null,e)}function Z(e){C.Transform.call(this,[],e)}function b(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function X(r){let i,o,a;function s(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<0?r=1+a:n=a}while(r<n)}return r}return a=2!==r.length?(i=b,o=(e,t)=>b(r(e),t),(e,t)=>r(e)-t):(i=r===b||r===function(e,t){return null==e||null==t?NaN:t<e?-1:e<t?1:e<=t?0:NaN}?r:ee,o=r),{left:s,center:function(e,t,r=0,n=e.length){return n=s(e,t,r,n-1),r<n&&a(e[n-1],t)>-a(e[n],t)?n-1:n},right:function(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<=0?r=1+a:n=a}while(r<n)}return r}}}function ee(){return 0}function te(e,t){return(null==e||!(e<=e))-(null==t||!(t<=t))||(e<t?-1:t<e?1:0)}function E(t,r){let n;if(void 0===r)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let e=-1;for(var a of t)null!=(a=r(a,++e,t))&&(n<a||void 0===n&&a>=a)&&(n=a)}return n}function S(t,r){let n;if(void 0===r)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let e=-1;for(var a of t)null!=(a=r(a,++e,t))&&(n>a||void 0===n&&a>=a)&&(n=a)}return n}function re(r,n,a=0,i=1/0,o){if(n=Math.floor(n),a=Math.floor(Math.max(0,a)),i=Math.floor(Math.min(r.length-1,i)),a<=n&&n<=i)for(o=void 0===o?te:function(n=b){if(n===b)return te;if(\"function\"!=typeof n)throw new TypeError(\"compare is not a function\");return(e,t)=>{var r=n(e,t);return r||0===r?r:(0===n(t,t))-(0===n(e,e))}}(o);a<i;){600<i-a&&(s=i-a+1,l=n-a+1,u=Math.log(s),c=.5*Math.exp(2*u/3),u=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1),re(r,n,Math.max(a,Math.floor(n-l*c/s+u)),Math.min(i,Math.floor(n+(s-l)*c/s+u)),o));var s,l,c,u,d=r[n];let e=a,t=i;for(A(r,a,n),0<o(r[i],d)&&A(r,a,i);e<t;){for(A(r,e,t),++e,--t;o(r[e],d)<0;)++e;for(;0<o(r[t],d);)--t}0===o(r[a],d)?A(r,a,t):A(r,++t,i),t<=n&&(a=t+1),n<=t&&(i=t-1)}return r}function A(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function ne(e,t,r){var n;if((r=(e=Float64Array.from(function*(t,r){if(void 0===r)for(var e of t)null!=e&&(e=+e)>=e&&(yield e);else{let e=-1;for(var n of t)null!=(n=r(n,++e,t))&&(n=+n)>=n&&(yield n)}}(e,r))).length)&&!isNaN(t=+t))return t<=0||r<2?S(e):1<=t?E(e):(r=(r-1)*t,(n=E(re(e,t=Math.floor(r)).subarray(0,t+1)))+(S(e.subarray(t+1))-n)*(r-t))}function ae(e,t,r){e=+e,t=+t,r=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+r;for(var n=-1,a=0|Math.max(0,Math.ceil((t-e)/r)),i=new Array(a);++n<a;)i[n]=e+n*r;return i}O.inherits(c,C.Transform,{transform(e,t){if(this.value&&!e.modified()&&!t.changed())return t;const r=t.materialize(t.SOURCE).source,n=T(t.source,e.groupby,O.identity),a=e.smooth||!1,i=e.field,o=e.step||(u=i,O.span(O.extent(r,u))/30),s=C.stableCompare((e,t)=>i(e)-i(t)),l=e.as||\"bin\",c=n.length;var u;let d=1/0,p=-1/0,f=0,h;for(;f<c;++f){var m=n[f].sort(s);h=-1;for(const g of _.dotbin(m,o,a,i))g<d&&(d=g),g>p&&(p=g),m[++h][l]=g}return this.value={start:d,stop:p,step:o},t.reflow(!0).modifies(l)}}),O.inherits(K,C.Operator),u.Definition={type:\"Extent\",metadata:{},params:[{name:\"field\",type:\"field\",required:!0}]},O.inherits(u,C.Transform,{transform(e,t){const r=this.value,n=e.field,a=t.changed()||t.modified(n.fields)||e.modified(\"field\");let i=r[0],o=r[1];if(!a&&null!=i||(i=1/0,o=-1/0),t.visit(a?t.SOURCE:t.ADD,e=>{e=O.toNumber(n(e));null!=e&&(e<i&&(i=e),e>o)&&(o=e)}),!Number.isFinite(i)||!Number.isFinite(o)){let e=O.accessorName(n);e=e&&` for field \"${e}\"`,t.dataflow.warn(`Infinite extent${e}: [${i}, ${o}]`),i=o=void 0}this.value=[i,o]}}),O.inherits(d,C.Operator,{connect(e){return this.detachSubflow=e.detachSubflow,this.targets().add(e),e.source=this},add(e){this.count+=1,this.value.add.push(e)},rem(e){--this.count,this.value.rem.push(e)},mod(e){this.value.mod.push(e)},init(e){this.value.init(e,e.NO_SOURCE)},evaluate(){return this.value}}),O.inherits(p,C.Transform,{activate(e){this._targets[this._targets.active++]=e},subflow(e,t,r,n){var a=this.value;let i=O.hasOwnProperty(a,e)&&a[e],o,s;return i?i.value.stamp<r.stamp&&(i.init(r),this.activate(i)):(s=n||(s=this._group[e])&&s.tuple,o=r.dataflow,i=new d(r.fork(r.NO_SOURCE),this),o.add(i).connect(t(o,e,s)),a[e]=i,this.activate(i)),i},clean(){var e,t,r=this.value;let n=0;for(const a in r)0===r[a].count&&((e=r[a].detachSubflow)&&e(),delete r[a],++n);n&&(t=this._targets.filter(e=>e&&0<e.count),this.initTargets(t))},initTargets(e){var t=this._targets,r=t.length,n=e?e.length:0;let a=0;for(;a<n;++a)t[a]=e[a];for(;a<r&&null!=t[a];++a)t[a]=null;t.active=n},transform(e,t){const r=t.dataflow,a=e.key,n=e.subflow,i=this._keys,o=e.modified(\"key\"),s=e=>this.subflow(e,n,t);return this._group=e.group||{},this.initTargets(),t.visit(t.REM,e=>{var t=C.tupleid(e),r=i.get(t);void 0!==r&&(i.delete(t),s(r).rem(e))}),t.visit(t.ADD,e=>{var t=a(e);i.set(C.tupleid(e),t),s(t).add(e)}),o||t.modified(a.fields)?t.visit(t.MOD,e=>{var t=C.tupleid(e),r=i.get(t),n=a(e);r===n?s(n).mod(e):(i.set(t,n),s(r).rem(e),s(n).add(e))}):t.changed(t.MOD)&&t.visit(t.MOD,e=>{s(i.get(C.tupleid(e))).mod(e)}),o&&t.visit(t.REFLOW,e=>{var t=C.tupleid(e),r=i.get(t),n=a(e);r!==n&&(i.set(t,n),s(r).rem(e),s(n).add(e))}),t.clean()?r.runAfter(()=>{this.clean(),i.clean()}):i.empty>r.cleanThreshold&&r.runAfter(i.clean),t}}),O.inherits(J,C.Operator),f.Definition={type:\"Filter\",metadata:{changes:!0},params:[{name:\"expr\",type:\"expr\",required:!0}]},O.inherits(f,C.Transform,{transform(a,e){const t=e.dataflow,i=this.value,r=e.fork(),o=r.add,s=r.rem,l=r.mod,c=a.expr;let u=!0;function n(e){var t=C.tupleid(e),r=c(e,a),n=i.get(t);r&&n?(i.delete(t),o.push(e)):r||n?u&&r&&!n&&l.push(e):(i.set(t,1),s.push(e))}return e.visit(e.REM,e=>{var t=C.tupleid(e);i.has(t)?i.delete(t):s.push(e)}),e.visit(e.ADD,e=>{c(e,a)?o.push(e):i.set(C.tupleid(e),1)}),e.visit(e.MOD,n),a.modified()&&(u=!1,e.visit(e.REFLOW,n)),i.empty>t.cleanThreshold&&t.runAfter(i.clean),r}}),m.Definition={type:\"Flatten\",metadata:{generates:!0},params:[{name:\"fields\",type:\"field\",array:!0,required:!0},{name:\"index\",type:\"string\"},{name:\"as\",type:\"string\",array:!0}]},O.inherits(m,C.Transform,{transform(e,t){const s=t.fork(t.NO_SOURCE),l=e.fields,c=$(l,e.as||[]),u=e.index||null,d=c.length;return s.rem=this.value,t.visit(t.SOURCE,t=>{var e=l.map(e=>e(t)),r=e.reduce((e,t)=>Math.max(e,t.length),0);let n=0,a,i,o;for(;n<r;++n){for(i=C.derive(t),a=0;a<d;++a)i[c[a]]=null==(o=e[a][n])?null:o;u&&(i[u]=n),s.add.push(i)}}),this.value=s.source=s.add,u&&s.modifies(u),s.modifies(c)}}),g.Definition={type:\"Fold\",metadata:{generates:!0},params:[{name:\"fields\",type:\"field\",array:!0,required:!0},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"key\",\"value\"]}]},O.inherits(g,C.Transform,{transform(e,t){const n=t.fork(t.NO_SOURCE),a=e.fields,i=a.map(O.accessorName),r=e.as||[\"key\",\"value\"],o=r[0],s=r[1],l=a.length;return n.rem=this.value,t.visit(t.SOURCE,r=>{for(let e=0,t;e<l;++e)(t=C.derive(r))[o]=i[e],t[s]=a[e](r),n.add.push(t)}),this.value=n.source=n.add,n.modifies(r)}}),v.Definition={type:\"Formula\",metadata:{modifies:!0},params:[{name:\"expr\",type:\"expr\",required:!0},{name:\"as\",type:\"string\",required:!0},{name:\"initonly\",type:\"boolean\"}]},O.inherits(v,C.Transform,{transform(t,e){const r=t.expr,n=t.as,a=t.modified(),i=t.initonly?e.ADD:a?e.SOURCE:e.modified(r.fields)||e.modified(n)?e.ADD_MOD:e.ADD;return a&&(e=e.materialize().reflow(!0)),t.initonly||e.modifies(n),e.visit(i,e=>e[n]=r(e,t))}}),O.inherits(Z,C.Transform,{transform(e,t){var t=t.fork(t.ALL),r=e.generator;let n=this.value,a=e.size-n.length,i,o,s;if(0<a){for(i=[];0<=--a;)i.push(s=C.ingest(r(e))),n.push(s);t.add=t.add.length?t.materialize(t.ADD).add.concat(i):i}else o=n.slice(0,-a),t.rem=t.rem.length?t.materialize(t.REM).rem.concat(o):o,n=n.slice(-a);return t.source=this.value=n,t}});const D={value:\"value\",median:function(e,t){return ne(e,.5,t)},mean:function(t,r){let n=0,a=0;if(void 0===r)for(var e of t)null!=e&&(e=+e)>=e&&(++n,a+=e);else{let e=-1;for(var i of t)null!=(i=r(i,++e,t))&&(i=+i)>=i&&(++n,a+=i)}if(n)return a/n},min:S,max:E},Pe=[];function k(e){C.Transform.call(this,[],e)}function I(e){n.call(this,e)}function R(e){C.Transform.call(this,null,e)}function ie(e){C.Operator.call(this,null,oe,e)}function oe(e){return this.value&&!e.modified()?this.value:O.key(e.fields,e.flat)}function se(e){C.Transform.call(this,[],e),this._pending=null}function N(e,t,r){r.forEach(C.ingest);t=t.fork(t.NO_FIELDS&t.NO_SOURCE);return t.rem=e.value,e.value=t.source=t.add=r,e._pending=null,t.rem.length&&t.clean(!0),t}function M(e){C.Transform.call(this,{},e)}function le(e){C.Operator.call(this,null,ce,e)}function ce(e){if(this.value&&!e.modified())return this.value;var t=e.extents,r=t.length;let n=1/0,a=-1/0,i,o;for(i=0;i<r;++i)(o=t[i])[0]<n&&(n=o[0]),o[1]>a&&(a=o[1]);return[n,a]}function ue(e){C.Operator.call(this,null,de,e)}function de(e){return this.value&&!e.modified()?this.value:e.values.reduce((e,t)=>e.concat(t),[])}function pe(e){C.Transform.call(this,null,e)}function fe(e){n.call(this,e)}function he(e){p.call(this,e)}function me(e){C.Transform.call(this,null,e)}function ge(e){C.Transform.call(this,null,e)}function _e(e){C.Transform.call(this,null,e)}k.Definition={type:\"Impute\",metadata:{changes:!0},params:[{name:\"field\",type:\"field\",required:!0},{name:\"key\",type:\"field\",required:!0},{name:\"keyvals\",array:!0},{name:\"groupby\",type:\"field\",array:!0},{name:\"method\",type:\"enum\",default:\"value\",values:[\"value\",\"mean\",\"median\",\"max\",\"min\"]},{name:\"value\",default:0}]},O.inherits(k,C.Transform,{transform(e,t){for(var r,n,a,i,o,s,l,c,u=t.fork(t.ALL),d=function(e){var t,r=e.method||D.value;if(null!=D[r])return r===D.value?(t=void 0!==e.value?e.value:0,()=>t):D[r];O.error(\"Unrecognized imputation method: \"+r)}(e),p=function(e){const t=e.field;return e=>e?t(e):NaN}(e),f=O.accessorName(e.field),h=O.accessorName(e.key),m=(e.groupby||[]).map(O.accessorName),g=function(e,t,r,n){var a,i,o,s,l,c,u,d=e=>e(u),p=[],f=n?n.slice():[],h={},m={};for(f.forEach((e,t)=>h[e]=t+1),s=0,c=e.length;s<c;++s)u=e[s],l=r(u),l=h[l]||(h[l]=f.push(l)),i=(a=t?t.map(d):Pe)+\"\",(o=m[i])||(o=m[i]=[],p.push(o),o.values=a),o[l-1]=u;return p.domain=f,p}(t.source,e.groupby,e.key,e.keyvals),_=[],t=this.value,y=g.domain.length,T=0,v=g.length;T<v;++T)for(a=(r=g[T]).values,n=NaN,s=0;s<y;++s)if(null==r[s]){for(i=g.domain[s],c={_impute:!0},o=0,l=a.length;o<l;++o)c[m[o]]=a[o];c[h]=i,c[f]=Number.isNaN(n)?n=d(r,p):n,_.push(C.ingest(c))}return _.length&&(u.add=u.materialize(u.ADD).add.concat(_)),t.length&&(u.rem=u.materialize(u.REM).rem.concat(t)),this.value=_,u}}),I.Definition={type:\"JoinAggregate\",metadata:{modifies:!0},params:[{name:\"groupby\",type:\"field\",array:!0},{name:\"fields\",type:\"field\",null:!0,array:!0},{name:\"ops\",type:\"enum\",array:!0,values:t},{name:\"as\",type:\"string\",null:!0,array:!0},{name:\"key\",type:\"field\"}]},O.inherits(I,n,{transform(e,t){const r=this,n=e.modified();let a;return r.value&&(n||t.modified(r._inputs,!0))?(a=r.value=n?r.init(e):{},t.visit(t.SOURCE,e=>r.add(e))):(a=r.value=r.value||this.init(e),t.visit(t.REM,e=>r.rem(e)),t.visit(t.ADD,e=>r.add(e))),r.changes(),t.visit(t.SOURCE,e=>{O.extend(e,a[r.cellkey(e)].tuple)}),t.reflow(n).modifies(this._outputs)},changes(){var e=this._adds,t=this._mods;let r,n;for(r=0,n=this._alen;r<n;++r)this.celltuple(e[r]),e[r]=null;for(r=0,n=this._mlen;r<n;++r)this.celltuple(t[r]),t[r]=null;this._alen=this._mlen=0}}),R.Definition={type:\"KDE\",metadata:{generates:!0},params:[{name:\"groupby\",type:\"field\",array:!0},{name:\"field\",type:\"field\",required:!0},{name:\"cumulative\",type:\"boolean\",default:!1},{name:\"counts\",type:\"boolean\",default:!1},{name:\"bandwidth\",type:\"number\",default:0},{name:\"extent\",type:\"number\",array:!0,length:2},{name:\"resolve\",type:\"enum\",values:[\"shared\",\"independent\"],default:\"independent\"},{name:\"steps\",type:\"number\"},{name:\"minsteps\",type:\"number\",default:25},{name:\"maxsteps\",type:\"number\",default:200},{name:\"as\",type:\"string\",array:!0,default:[\"value\",\"density\"]}]},O.inherits(R,C.Transform,{transform(s,e){var t=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e.changed()||s.modified()){const r=e.materialize(e.SOURCE).source,n=T(r,s.groupby,s.field),l=(s.groupby||[]).map(O.accessorName),c=s.bandwidth,u=s.cumulative?\"cdf\":\"pdf\",d=s.as||[\"value\",\"density\"],p=[];let a=s.extent,i=s.steps||s.minsteps||25,o=s.steps||s.maxsteps||200;\"pdf\"!=u&&\"cdf\"!=u&&O.error(\"Invalid density method: \"+u),\"shared\"===s.resolve&&(a=a||O.extent(r,s.field),i=o=s.steps||o),n.forEach(r=>{const e=_.randomKDE(r,c)[u],n=s.counts?r.length:1,t=a||O.extent(r);_.sampleCurve(e,t,i,o).forEach(e=>{var t={};for(let e=0;e<l.length;++e)t[l[e]]=r.dims[e];t[d[0]]=e[0],t[d[1]]=e[1]*n,p.push(C.ingest(t))})}),this.value&&(t.rem=this.value),this.value=t.add=t.source=p}return t}}),O.inherits(ie,C.Operator),O.inherits(se,C.Transform,{transform(e,t){var r,n=t.dataflow;return this._pending?N(this,t,this._pending):(r=e).modified(\"async\")&&!(r.modified(\"values\")||r.modified(\"url\")||r.modified(\"format\"))?t.StopPropagation:e.values?N(this,t,n.parse(e.values,e.format)):e.async?{async:n.request(e.url,e.format).then(e=>(this._pending=O.array(e.data),e=>e.touch(this)))}:n.request(e.url,e.format).then(e=>N(this,t,O.array(e.data)))}}),M.Definition={type:\"Lookup\",metadata:{modifies:!0},params:[{name:\"index\",type:\"index\",params:[{name:\"from\",type:\"data\",required:!0},{name:\"key\",type:\"field\",required:!0}]},{name:\"values\",type:\"field\",array:!0},{name:\"fields\",type:\"field\",array:!0,required:!0},{name:\"as\",type:\"string\",array:!0},{name:\"default\",default:null}]},O.inherits(M,C.Transform,{transform(e,t){const i=e.fields,o=e.index,s=e.values,l=null==e.default?null:e.default,r=e.modified(),c=i.length;let n=r?t.SOURCE:t.ADD,a=t,u=e.as,d,p,f;return d=s?(p=s.length,1<c&&!u&&O.error('Multi-field lookup requires explicit \"as\" parameter.'),u&&u.length!==c*p&&O.error('The \"as\" parameter has too few output field names.'),u=u||s.map(O.accessorName),function(e){for(var t,r,n=0,a=0;n<c;++n)if(null==(r=o.get(i[n](e))))for(t=0;t<p;++t,++a)e[u[a]]=l;else for(t=0;t<p;++t,++a)e[u[a]]=s[t](r)}):(u||O.error(\"Missing output field names.\"),function(e){for(var t,r=0;r<c;++r)t=o.get(i[r](e)),e[u[r]]=null==t?l:t}),r?a=t.reflow(!0):(f=i.some(e=>t.modified(e.fields)),n|=f?t.MOD:0),t.visit(n,d),a.modifies(u)}}),O.inherits(le,C.Operator),O.inherits(ue,C.Operator),O.inherits(pe,C.Transform,{transform(e,t){return this.modified(e.modified()),this.value=e,t.fork(t.NO_SOURCE|t.NO_FIELDS)}}),fe.Definition={type:\"Pivot\",metadata:{generates:!0,changes:!0},params:[{name:\"groupby\",type:\"field\",array:!0},{name:\"field\",type:\"field\",required:!0},{name:\"value\",type:\"field\",required:!0},{name:\"op\",type:\"enum\",values:t,default:\"sum\"},{name:\"limit\",type:\"number\",default:0},{name:\"key\",type:\"field\"}]},O.inherits(fe,n,{_transform:n.prototype.transform,transform(e,t){return this._transform(function(e,t){const a=e.field,i=e.value,r=(\"count\"===e.op?\"__count__\":e.op)||\"sum\",o=O.accessorFields(a).concat(O.accessorFields(i)),n=function(t,e,r){const n={},a=[];return r.visit(r.SOURCE,e=>{e=t(e);n[e]||(n[e]=1,a.push(e))}),a.sort(O.ascending),e?a.slice(0,e):a}(a,e.limit||0,t);t.changed()&&e.set(\"__pivot__\",null,null,!0);return{key:e.key,groupby:e.groupby,ops:n.map(()=>r),fields:n.map(e=>{return t=e,r=a,n=i,e=o,O.accessor(e=>r(e)===t?n(e):NaN,e,t+\"\");var t,r,n}),as:n.map(e=>e+\"\"),modified:e.modified.bind(e)}}(e,t),t)}}),O.inherits(he,p,{transform(e,t){const r=e.subflow,n=e.field,a=e=>this.subflow(C.tupleid(e),r,t,e);return(e.modified(\"field\")||n&&t.modified(O.accessorFields(n)))&&O.error(\"PreFacet does not support field modification.\"),this.initTargets(),n?(t.visit(t.MOD,e=>{const t=a(e);n(e).forEach(e=>t.mod(e))}),t.visit(t.ADD,e=>{const t=a(e);n(e).forEach(e=>t.add(C.ingest(e)))}),t.visit(t.REM,e=>{const t=a(e);n(e).forEach(e=>t.rem(e))})):(t.visit(t.MOD,e=>a(e).mod(e)),t.visit(t.ADD,e=>a(e).add(e)),t.visit(t.REM,e=>a(e).rem(e))),t.clean()&&t.runAfter(()=>this.clean()),t}}),me.Definition={type:\"Project\",metadata:{generates:!0,changes:!0},params:[{name:\"fields\",type:\"field\",array:!0},{name:\"as\",type:\"string\",null:!0,array:!0}]},O.inherits(me,C.Transform,{transform(e,t){const r=t.fork(t.NO_SOURCE),o=e.fields,s=$(e.fields,e.as||[]),n=o?(e,t)=>{var r=e,n=t,a=o,i=s;for(let e=0,t=a.length;e<t;++e)n[i[e]]=a[e](r);return n}:C.rederive;let a;return a=this.value||(t=t.addAll(),this.value={}),t.visit(t.REM,e=>{e=C.tupleid(e);r.rem.push(a[e]),a[e]=null}),t.visit(t.ADD,e=>{var t=n(e,C.ingest({}));a[C.tupleid(e)]=t,r.add.push(t)}),t.visit(t.MOD,e=>{r.mod.push(n(e,a[C.tupleid(e)]))}),r}}),O.inherits(ge,C.Transform,{transform(e,t){return this.value=e.value,e.modified(\"value\")?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}}),_e.Definition={type:\"Quantile\",metadata:{generates:!0,changes:!0},params:[{name:\"groupby\",type:\"field\",array:!0},{name:\"field\",type:\"field\",required:!0},{name:\"probs\",type:\"number\",array:!0},{name:\"step\",type:\"number\",default:.01},{name:\"as\",type:\"string\",array:!0,default:[\"prob\",\"value\"]}]};function ye(e){C.Transform.call(this,null,e)}function Te(e){C.Transform.call(this,[],e),this.count=0}function ve(e){C.Transform.call(this,null,e)}function be(e){C.Transform.call(this,null,e),this.modified(!0)}function Ee(e){C.Transform.call(this,null,e)}O.inherits(_e,C.Transform,{transform(e,t){const r=t.fork(t.NO_SOURCE|t.NO_FIELDS),a=e.as||[\"prob\",\"value\"];if(!this.value||e.modified()||t.changed()){const n=t.materialize(t.SOURCE).source,i=T(n,e.groupby,e.field),o=(e.groupby||[]).map(O.accessorName),s=[],l=e.step||.01,c=e.probs||ae(l/2,1-1e-14,l),u=c.length;i.forEach(t=>{var r=_.quantiles(t,c);for(let e=0;e<u;++e){var n={};for(let e=0;e<o.length;++e)n[o[e]]=t.dims[e];n[a[0]]=c[e],n[a[1]]=r[e],s.push(C.ingest(n))}}),this.value&&(r.rem=this.value),this.value=r.add=r.source=s}else r.source=this.value;return r}}),O.inherits(ye,C.Transform,{transform(e,t){let n,a;return a=this.value||(n=t=t.addAll(),this.value={}),e.derive&&(n=t.fork(t.NO_SOURCE),t.visit(t.REM,e=>{e=C.tupleid(e);n.rem.push(a[e]),a[e]=null}),t.visit(t.ADD,e=>{var t=C.derive(e);a[C.tupleid(e)]=t,n.add.push(t)}),t.visit(t.MOD,e=>{var t=a[C.tupleid(e)];for(const r in e)t[r]=e[r],n.modifies(r);n.mod.push(t)})),n}}),Te.Definition={type:\"Sample\",metadata:{},params:[{name:\"size\",type:\"number\",default:1e3}]},O.inherits(Te,C.Transform,{transform(e,t){const n=t.fork(t.NO_SOURCE),r=e.modified(\"size\"),a=e.size,i=this.value.reduce((e,t)=>(e[C.tupleid(t)]=1,e),{});let o=this.value,s=this.count,l=0;function c(e){var t,r;o.length<a?o.push(e):(r=~~((s+1)*_.random()))<o.length&&r>=l&&(t=o[r],i[C.tupleid(t)]&&n.rem.push(t),o[r]=e),++s}if(t.rem.length&&(t.visit(t.REM,e=>{var t=C.tupleid(e);i[t]&&(i[t]=-1,n.rem.push(e)),--s}),o=o.filter(e=>-1!==i[C.tupleid(e)])),(t.rem.length||r)&&o.length<a&&t.source&&(l=s=o.length,t.visit(t.SOURCE,e=>{i[C.tupleid(e)]||c(e)}),l=-1),r&&o.length>a){var u=o.length-a;for(let e=0;e<u;++e)i[C.tupleid(o[e])]=-1,n.rem.push(o[e]);o=o.slice(u)}return t.mod.length&&t.visit(t.MOD,e=>{i[C.tupleid(e)]&&n.mod.push(e)}),t.add.length&&t.visit(t.ADD,c),(t.add.length||l<0)&&(n.add=o.filter(e=>!i[C.tupleid(e)])),this.count=s,this.value=n.source=o,n}}),ve.Definition={type:\"Sequence\",metadata:{generates:!0,changes:!0},params:[{name:\"start\",type:\"number\",required:!0},{name:\"stop\",type:\"number\",required:!0},{name:\"step\",type:\"number\",default:1},{name:\"as\",type:\"string\",default:\"data\"}]},O.inherits(ve,C.Transform,{transform(e,t){if(!this.value||e.modified()){const r=t.materialize().fork(t.MOD),n=e.as||\"data\";return r.rem=this.value?t.rem.concat(this.value):t.rem,this.value=ae(e.start,e.stop,e.step||1).map(e=>{var t={};return t[n]=e,C.ingest(t)}),r.add=t.add.concat(this.value),r}}}),O.inherits(be,C.Transform,{transform(e,t){return this.value=t.source,t.changed()?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}});const De=[\"unit0\",\"unit1\"];function Se(e){C.Transform.call(this,O.fastmap(),e)}function Ae(e){C.Transform.call(this,null,e)}Ee.Definition={type:\"TimeUnit\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\",required:!0},{name:\"interval\",type:\"boolean\",default:!0},{name:\"units\",type:\"enum\",values:h.TIME_UNITS,array:!0},{name:\"step\",type:\"number\",default:1},{name:\"maxbins\",type:\"number\",default:40},{name:\"extent\",type:\"date\",array:!0},{name:\"timezone\",type:\"enum\",default:\"local\",values:[\"local\",\"utc\"]},{name:\"as\",type:\"string\",array:!0,length:2,default:De}]},O.inherits(Ee,C.Transform,{transform(e,t){const a=e.field,i=!1!==e.interval,r=\"utc\"===e.timezone,o=this._floor(e,t),s=(r?h.utcInterval:h.timeInterval)(o.unit).offset,n=e.as||De,l=n[0],c=n[1],u=o.step;let d=o.start||1/0,p=o.stop||-1/0,f=t.ADD;return(e.modified()||t.changed(t.REM)||t.modified(O.accessorFields(a)))&&(t=t.reflow(!0),f=t.SOURCE,d=1/0,p=-1/0),t.visit(f,e=>{var t=a(e);let r,n;null==t?(e[l]=null,i&&(e[c]=null)):(e[l]=r=n=o(t),i&&(e[c]=n=s(r,u)),r<d&&(d=r),n>p&&(p=n))}),o.start=d,o.stop=p,t.modifies(i?n:l)},_floor(e,t){var r=\"utc\"===e.timezone,{units:t,step:e}=e.units?{units:e.units,step:e.step||1}:h.timeBin({extent:e.extent||O.extent(t.materialize(t.SOURCE).source,e.field),maxbins:e.maxbins}),t=h.timeUnits(t),n=this.value||{},r=(r?h.utcFloor:h.timeFloor)(t,e);return r.unit=O.peek(t),r.units=t,r.step=e,r.start=n.start,r.stop=n.stop,this.value=r}}),O.inherits(Se,C.Transform,{transform(e,t){const r=t.dataflow,n=e.field,a=this.value,i=e=>a.set(n(e),e);let o=!0;return e.modified(\"field\")||t.modified(n.fields)?(a.clear(),t.visit(t.SOURCE,i)):t.changed()?(t.visit(t.REM,e=>a.delete(n(e))),t.visit(t.ADD,i)):o=!1,this.modified(o),a.empty>r.cleanThreshold&&r.runAfter(a.clean),t.fork()}}),O.inherits(Ae,C.Transform,{transform(e,t){(!this.value||e.modified(\"field\")||e.modified(\"sort\")||t.changed()||e.sort&&t.modified(e.sort.fields))&&(this.value=(e.sort?t.source.slice().sort(C.stableCompare(e.sort)):t.source).map(e.field))}});const x={row_number:function(){return{next:e=>e.index+1}},rank:function(){let n;return{init:()=>n=1,next:e=>{var t=e.index,r=e.data;return t&&e.compare(r[t-1],r[t])?n=t+1:n}}},dense_rank:function(){let n;return{init:()=>n=1,next:e=>{var t=e.index,r=e.data;return t&&e.compare(r[t-1],r[t])?++n:n}}},percent_rank:function(){const e=x.rank(),t=e.next;return{init:e.init,next:e=>(t(e)-1)/(e.data.length-1)}},cume_dist:function(){let a;return{init:()=>a=0,next:e=>{var t=e.data,r=e.compare;let n=e.index;if(a<n){for(;n+1<t.length&&!r(t[n],t[n+1]);)++n;a=n}return(1+a)/t.length}}},ntile:function(e,t){0<(t=+t)||O.error(\"ntile num must be greater than zero.\");const r=x.cume_dist(),n=r.next;return{init:r.init,next:e=>Math.ceil(t*n(e))}},lag:function(r,n){return n=+n||1,{next:e=>{var t=e.index-n;return 0<=t?r(e.data[t]):null}}},lead:function(r,n){return n=+n||1,{next:e=>{var t=e.index+n,e=e.data;return t<e.length?r(e[t]):null}}},first_value:function(t){return{next:e=>t(e.data[e.i0])}},last_value:function(t){return{next:e=>t(e.data[e.i1-1])}},nth_value:function(r,n){return 0<(n=+n)||O.error(\"nth_value nth must be greater than zero.\"),{next:e=>{var t=e.i0+(n-1);return t<e.i1?r(e.data[t]):null}}},prev_value:function(t){let r;return{init:()=>r=null,next:e=>{e=t(e.data[e.index]);return null!=e?r=e:r}}},next_value:function(r){let n,a;return{init:()=>(n=null,a=-1),next:e=>{var t=e.data;return e.index<=a?n:n=(a=function(e,t,r){for(var n=t.length;r<n;++r)if(null!=e(t[r]))return r;return-1}(r,t,e.index))<0?(a=t.length,null):r(t[a])}}}};r=Object.keys(x);function Oe(e){const t=O.array(e.ops),o=O.array(e.fields),s=O.array(e.params),l=O.array(e.aggregate_params),c=O.array(e.as),u=this.outputs=[],d=this.windows=[],r={},p={},f=[],h=[];let m=!0;function g(e){O.array(O.accessorFields(e)).forEach(e=>r[e]=1)}g(e.sort),t.forEach((t,r)=>{var n=o[r],e=s[r],a=l[r]||null,i=O.accessorName(n),r=L(t,i,c[r]);if(g(n),u.push(r),O.hasOwnProperty(x,t))d.push(function(e,t,r,n){const a=x[e](t,r);return{init:a.init||O.zero,update:function(e,t){t[n]=a.next(e)}}}(t,n,e,r));else if(null==n&&\"count\"!==t&&O.error(\"Null aggregate field specified.\"),\"count\"===t)f.push(r);else{m=!1;let e=p[i];e||((e=p[i]=[]).field=n,h.push(e)),e.push(F(t,a,r))}}),(f.length||h.length)&&(this.cell=function(e,n,a){e=e.map(e=>V(e,e.field));const i={num:0,agg:null,store:!1,count:n};if(!a)for(var r=e.length,o=i.agg=Array(r),t=0;t<r;++t)o[t]=new e[t](i);{var s;i.store&&(s=i.data=new y)}return i.add=function(t){if(i.num+=1,!a){s&&s.add(t);for(let e=0;e<r;++e)o[e].add(o[e].get(t),t)}},i.rem=function(t){if(--i.num,!a){s&&s.rem(t);for(let e=0;e<r;++e)o[e].rem(o[e].get(t),t)}},i.set=function(e){let t,r;for(s&&s.values(),t=0,r=n.length;t<r;++t)e[n[t]]=i.num;if(!a)for(t=0,r=o.length;t<r;++t)o[t].set(e)},i.init=function(){i.num=0,s&&s.reset();for(let e=0;e<r;++e)o[e].init()},i}(h,f,m)),this.inputs=Object.keys(r)}var Ce=Oe.prototype;function we(e){C.Transform.call(this,{},e),this._mlen=0,this._mods=[]}Ce.init=function(){this.windows.forEach(e=>e.init()),this.cell&&this.cell.init()},Ce.update=function(e,t){var r=this.cell,n=this.windows,a=e.data,i=n&&n.length;let o;if(r){for(o=e.p0;o<e.i0;++o)r.rem(a[o]);for(o=e.p1;o<e.i1;++o)r.add(a[o]);r.set(t)}for(o=0;o<i;++o)n[o].update(e,t)},we.Definition={type:\"Window\",metadata:{modifies:!0},params:[{name:\"sort\",type:\"compare\"},{name:\"groupby\",type:\"field\",array:!0},{name:\"ops\",type:\"enum\",array:!0,values:r.concat(t)},{name:\"params\",type:\"number\",null:!0,array:!0},{name:\"aggregate_params\",type:\"number\",null:!0,array:!0},{name:\"fields\",type:\"field\",null:!0,array:!0},{name:\"as\",type:\"string\",null:!0,array:!0},{name:\"frame\",type:\"number\",null:!0,array:!0,length:2,default:[null,0]},{name:\"ignorePeers\",type:\"boolean\",default:!1}]},O.inherits(we,C.Transform,{transform(r,e){this.stamp=e.stamp;const t=r.modified(),n=C.stableCompare(r.sort),a=w(r.groupby),i=e=>this.group(a(e));let o=this.state;o&&!t||(o=this.state=new Oe(r)),t||e.modified(o.inputs)?(this.value={},e.visit(e.SOURCE,e=>i(e).add(e))):(e.visit(e.REM,e=>i(e).remove(e)),e.visit(e.ADD,e=>i(e).add(e)));for(let e=0,t=this._mlen;e<t;++e){_=g=m=h=f=p=d=u=c=l=s=void 0;var s=this._mods[e],l=o,c=n,u=r,d=u.sort,p=d&&!u.ignorePeers,f=u.frame||[null,0],h=s.data(c),m=h.length,g=p?X(d):null,_={i0:0,i1:0,p0:0,p1:0,index:0,data:h,compare:d||O.constant(-1)};l.init();for(let e=0;e<m;++e){{y=void 0;T=void 0;v=void 0;b=void 0;var y=_;var T=f;var v=e;var b=m;y.p0=y.i0,y.p1=y.i1,y.i0=null==T[0]?0:Math.max(0,v-Math.abs(T[0])),y.i1=null==T[1]?b:Math.min(b,v+Math.abs(T[1])+1),y.index=v}if(p){b=void 0;T=void 0;y=void 0;v=void 0;E=void 0;S=void 0;A=void 0;b=_;T=g;var y=b.i0,v=b.i1-1,E=b.compare,S=b.data,A=S.length-1;0<y&&!E(S[y],S[y-1])&&(b.i0=T.left(S,S[y]));v<A&&!E(S[v],S[1+v])&&(b.i1=T.right(S,S[v]))}l.update(_,h[e])}}return this._mlen=0,this._mods=[],e.reflow(t).modifies(o.outputs)},group(e){let t=this.value[e];return t||((t=this.value[e]=q(C.tupleid)).stamp=-1),t.stamp<this.stamp&&(t.stamp=this.stamp,this._mods[this._mlen++]=t),t}}),e.aggregate=n,e.bin=a,e.collect=i,e.compare=z,e.countpattern=o,e.cross=s,e.density=l,e.dotbin=c,e.expression=K,e.extent=u,e.facet=p,e.field=J,e.filter=f,e.flatten=m,e.fold=g,e.formula=v,e.generate=Z,e.impute=k,e.joinaggregate=I,e.kde=R,e.key=ie,e.load=se,e.lookup=M,e.multiextent=le,e.multivalues=ue,e.params=pe,e.pivot=fe,e.prefacet=he,e.project=me,e.proxy=ge,e.quantile=_e,e.relay=ye,e.sample=Te,e.sequence=ve,e.sieve=be,e.subflow=d,e.timeunit=Ee,e.tupleindex=Se,e.values=Ae,e.window=we}}return iD.exports}var cD,uD={exports:{}},dD={exports:{}},pD={exports:{}};function fD(){var e,t;return cD||(cD=1,t=()=>\"undefined\"!=typeof Image?Image:null,(e=pD.exports).canvas=r,e.domCanvas=r,e.image=t),pD.exports;function r(e,t){if(\"undefined\"!=typeof document&&document.createElement){var r=document.createElement(\"canvas\");if(r&&r.getContext)return r.width=e,r.height=t,r}return null}}var hD,mD,gD,_D={exports:{}};function yD(){if(!hD){hD=1;{var e=_D.exports;var l=HP();var L=XP();function F(e,t,r){t=e-t+2*r;return e?0<t?t:1:0}var U=\"linear\";const S=\"log\";var B=\"sqrt\",j=\"symlog\";const A=\"time\",O=\"utc\";var t=\"sequential\",H=\"diverging\";const fa=\"quantile\";var G=\"quantize\";const ha=\"threshold\";var V=\"bin-ordinal\";const C=\"continuous\",ma=\"discrete\",ga=\"discretizing\",w=\"interpolating\",_a=\"temporal\";function q(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function z(r){let i,o,a;function s(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<0?r=1+a:n=a}while(r<n)}return r}return a=2!==r.length?(i=q,o=(e,t)=>q(r(e),t),(e,t)=>r(e)-t):(i=r===q||r===function(e,t){return null==e||null==t?NaN:t<e?-1:e<t?1:e<=t?0:NaN}?r:W,o=r),{left:s,center:function(e,t,r=0,n=e.length){return n=s(e,t,r,n-1),r<n&&a(e[n-1],t)>-a(e[n],t)?n-1:n},right:function(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<=0?r=1+a:n=a}while(r<n)}return r}}}function W(){return 0}function $(e){return null===e?NaN:+e}const k=z(q).right;z($).center;class ya extends Map{constructor(e,t=function(e){return null!==e&&\"object\"==typeof e?e.valueOf():e}){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const[t,r]of e)this.set(t,r)}get(e){return super.get(K(this,e))}has(e){return super.has(K(this,e))}set(e,t){return super.set(function({_intern:e,_key:t},r){t=t(r);return e.has(t)?e.get(t):(e.set(t,r),r)}(this,e),t)}delete(e){return super.delete(function({_intern:e,_key:t},r){t=t(r);e.has(t)&&(r=e.get(t),e.delete(t));return r}(this,e))}}function K({_intern:e,_key:t},r){t=t(r);return e.has(t)?e.get(t):r}const Ta=Math.sqrt(50),va=Math.sqrt(10),ba=Math.sqrt(2);function Y(e,t,r){var n=(t-e)/Math.max(0,r),a=Math.floor(Math.log10(n)),n=n/Math.pow(10,a),n=n>=Ta?10:n>=va?5:n>=ba?2:1;let i,o,s;return a<0?(s=Math.pow(10,-a)/n,i=Math.round(e*s),o=Math.round(t*s),i/s<e&&++i,o/s>t&&--o,s=-s):(s=Math.pow(10,a)*n,i=Math.round(e/s),o=Math.round(t/s),i*s<e&&++i,o*s>t&&--o),o<i&&.5<=r&&r<2?Y(e,t,2*r):[i,o,s]}function J(e,t,r){if(!(0<(r=+r)))return[];if((e=+e)===(t=+t))return[e];var n=t<e,[a,i,o]=n?Y(t,e,r):Y(e,t,r);if(!(a<=i))return[];var s=i-a+1,l=new Array(s);if(n)if(o<0)for(let e=0;e<s;++e)l[e]=(i-e)/-o;else for(let e=0;e<s;++e)l[e]=(i-e)*o;else if(o<0)for(let e=0;e<s;++e)l[e]=(a+e)/-o;else for(let e=0;e<s;++e)l[e]=(a+e)*o;return l}function Q(e,t,r){return Y(e=+e,t=+t,r=+r)[2]}function Z(e,t,r){r=+r;var n=(t=+t)<(e=+e),e=n?Q(t,e,r):Q(e,t,r);return(n?-1:1)*(e<0?1/-e:e)}function c(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function r(e,t){switch(arguments.length){case 0:break;case 1:\"function\"==typeof e?this.interpolator(e):this.range(e);break;default:this.domain(e),\"function\"==typeof t?this.interpolator(t):this.range(t)}return this}const Ea=Symbol(\"implicit\");function X(){var r=new ya,n=[],a=[],i=Ea;function o(e){let t=r.get(e);if(void 0===t){if(i!==Ea)return i;r.set(e,t=n.push(e)-1)}return a[t%a.length]}return o.domain=function(e){if(!arguments.length)return n.slice();n=[],r=new ya;for(const t of e)r.has(t)||r.set(t,n.push(t)-1);return o},o.range=function(e){return arguments.length?(a=Array.from(e),o):a.slice()},o.unknown=function(e){return arguments.length?(i=e,o):i},o.copy=function(){return X(n,a).unknown(i)},c.apply(o,arguments),o}function ee(e,t,r){(e.prototype=t.prototype=r).constructor=e}function te(e,t){var r,n=Object.create(e.prototype);for(r in t)n[r]=t[r];return n}function u(){}var n=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",i=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",re=/^#([0-9a-f]{3,8})$/,ne=new RegExp(`^rgb\\\\(${n},${n},${n}\\\\)$`),ae=new RegExp(`^rgb\\\\(${i},${i},${i}\\\\)$`),ie=new RegExp(`^rgba\\\\(${n},${n},${n},${a}\\\\)$`),oe=new RegExp(`^rgba\\\\(${i},${i},${i},${a}\\\\)$`),se=new RegExp(`^hsl\\\\(${a},${i},${i}\\\\)$`),le=new RegExp(`^hsla\\\\(${a},${i},${i},${a}\\\\)$`),ce={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ue(){return this.rgb().formatHex()}function de(){return this.rgb().formatRgb()}function pe(e){var t,r;return e=(e+\"\").trim().toLowerCase(),(t=re.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?fe(t):3===r?new d(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?he(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?he(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=ne.exec(e))?new d(t[1],t[2],t[3],1):(t=ae.exec(e))?new d(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=ie.exec(e))?he(t[1],t[2],t[3],t[4]):(t=oe.exec(e))?he(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=se.exec(e))?be(t[1],t[2]/100,t[3]/100,1):(t=le.exec(e))?be(t[1],t[2]/100,t[3]/100,t[4]):ce.hasOwnProperty(e)?fe(ce[e]):\"transparent\"===e?new d(NaN,NaN,NaN,0):null}function fe(e){return new d(e>>16&255,e>>8&255,255&e,1)}function he(e,t,r,n){return new d(e=n<=0?t=r=NaN:e,t,r,n)}function me(e){return(e=e instanceof u?e:pe(e))?new d((e=e.rgb()).r,e.g,e.b,e.opacity):new d}function ge(e,t,r,n){return 1===arguments.length?me(e):new d(e,t,r,null==n?1:n)}function d(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function _e(){return\"#\"+ve(this.r)+ve(this.g)+ve(this.b)}function ye(){var e=Te(this.opacity);return(1===e?\"rgb(\":\"rgba(\")+o(this.r)+`, ${o(this.g)}, `+o(this.b)+(1===e?\")\":`, ${e})`)}function Te(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function o(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ve(e){return((e=o(e))<16?\"0\":\"\")+e.toString(16)}function be(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||1<=r?e=t=NaN:t<=0&&(e=NaN),new p(e,t,r,n)}function Ee(e){var t,r,n,a,i,o,s,l;return e instanceof p?new p(e.h,e.s,e.l,e.opacity):(e=e instanceof u?e:pe(e))?e instanceof p?e:(t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,a=Math.min(t,r,n),o=NaN,l=((i=Math.max(t,r,n))+a)/2,(s=i-a)?(o=t===i?(r-n)/s+6*(r<n):r===i?(n-t)/s+2:(t-r)/s+4,s/=l<.5?i+a:2-i-a,o*=60):s=0<l&&l<1?0:o,new p(o,s,l,e.opacity)):new p}function Se(e,t,r,n){return 1===arguments.length?Ee(e):new p(e,t,r,null==n?1:n)}function p(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ae(e){return(e=(e||0)%360)<0?e+360:e}function Oe(e){return Math.max(0,Math.min(1,e||0))}function Ce(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}ee(u,pe,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:ue,formatHex:ue,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Ee(this).formatHsl()},formatRgb:de,toString:de}),ee(d,ge,te(u,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new d(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new d(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new d(o(this.r),o(this.g),o(this.b),Te(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:_e,formatHex:_e,formatHex8:function(){return\"#\"+ve(this.r)+ve(this.g)+ve(this.b)+ve(255*(isNaN(this.opacity)?1:this.opacity))},formatRgb:ye,toString:ye})),ee(p,Se,te(u,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new p(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new p(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,t=r+(r<.5?r:1-r)*t,r=2*r-t;return new d(Ce(240<=e?e-240:120+e,r,t),Ce(e,r,t),Ce(e<120?240+e:e-120,r,t),this.opacity)},clamp(){return new p(Ae(this.h),Oe(this.s),Oe(this.l),Te(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){var e=Te(this.opacity);return(1===e?\"hsl(\":\"hsla(\")+Ae(this.h)+`, ${100*Oe(this.s)}%, ${100*Oe(this.l)}%`+(1===e?\")\":`, ${e})`)}}));const Sa=Math.PI/180,Aa=180/Math.PI,Oa=.96422,Ca=1,wa=.82521,ka=4/29,Ia=6/29,Ra=3*Ia*Ia,Na=Ia*Ia*Ia;function we(e){var t,r,n,a,i,o;return e instanceof s?new s(e.l,e.a,e.b,e.opacity):e instanceof f?De(e):(a=Ie((.2225045*(t=Me((e=e instanceof d?e:me(e)).r))+.7168786*(r=Me(e.g))+.0606169*(n=Me(e.b)))/Ca),t===r&&r===n?i=o=a:(i=Ie((.4360747*t+.3850649*r+.1430804*n)/Oa),o=Ie((.0139322*t+.0971045*r+.7141733*n)/wa)),new s(116*a-16,500*(i-a),200*(a-o),e.opacity))}function ke(e,t,r,n){return 1===arguments.length?we(e):new s(e,t,r,null==n?1:n)}function s(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function Ie(e){return e>Na?Math.pow(e,1/3):e/Ra+ka}function Re(e){return e>Ia?e*e*e:Ra*(e-ka)}function Ne(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Me(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Pe(e,t,r,n){return 1===arguments.length?(a=e)instanceof f?new f(a.h,a.c,a.l,a.opacity):0===(a=a instanceof s?a:we(a)).a&&0===a.b?new f(NaN,0<a.l&&a.l<100?0:NaN,a.l,a.opacity):new f((i=Math.atan2(a.b,a.a)*Aa)<0?360+i:i,Math.sqrt(a.a*a.a+a.b*a.b),a.l,a.opacity):new f(e,t,r,null==n?1:n);var a,i}function f(e,t,r,n){this.h=+e,this.c=+t,this.l=+r,this.opacity=+n}function De(e){var t;return isNaN(e.h)?new s(e.l,0,0,e.opacity):(t=e.h*Sa,new s(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity))}ee(s,ke,te(u,{brighter(e){return new s(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker(e){return new s(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return new d(Ne(3.1338561*(t=Oa*Re(t))-1.6168667*(e=Ca*Re(e))-.4906146*(r=wa*Re(r))),Ne(-.9787684*t+1.9161415*e+.033454*r),Ne(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}})),ee(f,Pe,te(u,{brighter(e){return new f(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker(e){return new f(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb(){return De(this).rgb()}}));var xe=-.29227,Le=-.90649,Fe=1.97294,Ue=Fe*Le,Be=1.78277*Fe,je=1.78277*xe- -.14861*Le;function He(e,t,r,n){return 1===arguments.length?(a=e)instanceof Ge?new Ge(a.h,a.s,a.l,a.opacity):(i=(a=a instanceof d?a:me(a)).r/255,o=a.g/255,l=a.b/255,l=(Fe*(o-(i=(je*l+Ue*i-Be*o)/(je+Ue-Be)))-xe*(o=l-i))/Le,new Ge((l=(s=Math.sqrt(l*l+o*o)/(Fe*i*(1-i)))?Math.atan2(l,o)*Aa-120:NaN)<0?l+360:l,s,i,a.opacity)):new Ge(e,t,r,null==n?1:n);var a,i,o,s,l}function Ge(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ve(e,t,r,n,a){var i=e*e,o=i*e;return((1-3*e+3*i-o)*t+(4-6*i+3*o)*r+(1+3*e+3*i-3*o)*n+o*a)/6}function qe(o){var s=o.length-1;return function(e){var t=e<=0?e=0:1<=e?s-(e=1):Math.floor(e*s),r=o[t],n=o[t+1],a=0<t?o[t-1]:2*r-n,i=t<s-1?o[t+2]:2*n-r;return Ve((e-t/s)*s,a,r,n,i)}}function ze(o){var s=o.length;return function(e){var t=Math.floor(((e%=1)<0?++e:e)*s),r=o[(t+s-1)%s],n=o[t%s],a=o[(t+1)%s],i=o[(t+2)%s];return Ve((e-t/s)*s,r,n,a,i)}}ee(Ge,He,te(u,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new Ge(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new Ge(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*Sa,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),e=Math.sin(e);return new d(255*(t+r*(-.14861*n+1.78277*e)),255*(t+r*(xe*n+Le*e)),255*(t+Fe*n*r),this.opacity)}}));var We=e=>()=>e;function $e(t,r){return function(e){return t+e*r}}function Ke(e,t){var r=t-e;return r?$e(e,180<r||r<-180?r-360*Math.round(r/360):r):We(isNaN(e)?t:e)}function Ye(i){return 1==(i=+i)?h:function(e,t){return t-e?(r=e,n=t,a=i,r=Math.pow(r,a),n=Math.pow(n,a)-r,a=1/a,function(e){return Math.pow(r+e*n,a)}):We(isNaN(e)?t:e);var r,n,a}}function h(e,t){var r=t-e;return r?$e(e,r):We(isNaN(e)?t:e)}var Je=function e(t){var o=Ye(t);function r(t,e){var r=o((t=ge(t)).r,(e=ge(e)).r),n=o(t.g,e.g),a=o(t.b,e.b),i=h(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=n(e),t.b=a(e),t.opacity=i(e),t+\"\"}}return r.gamma=e,r}(1);function Qe(s){return function(e){for(var t,r=e.length,n=new Array(r),a=new Array(r),i=new Array(r),o=0;o<r;++o)t=ge(e[o]),n[o]=t.r||0,a[o]=t.g||0,i[o]=t.b||0;return n=s(n),a=s(a),i=s(i),t.opacity=1,function(e){return t.r=n(e),t.g=a(e),t.b=i(e),t+\"\"}}}n=Qe(qe),i=Qe(ze);function Ze(t,r){r=r||[];var n,a=t?Math.min(r.length,t.length):0,i=r.slice();return function(e){for(n=0;n<a;++n)i[n]=t[n]*(1-e)+r[n]*e;return i}}function Xe(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function et(e,t){for(var r=t?t.length:0,n=e?Math.min(r,e.length):0,a=new Array(n),i=new Array(r),o=0;o<n;++o)a[o]=ot(e[o],t[o]);for(;o<r;++o)i[o]=t[o];return function(e){for(o=0;o<n;++o)i[o]=a[o](e);return i}}function tt(t,r){var n=new Date;return t=+t,r=+r,function(e){return n.setTime(t*(1-e)+r*e),n}}function _(t,r){return t=+t,r=+r,function(e){return t*(1-e)+r*e}}function rt(e,t){var r,n={},a={};for(r in null!==e&&\"object\"==typeof e||(e={}),t=null!==t&&\"object\"==typeof t?t:{})r in e?n[r]=ot(e[r],t[r]):a[r]=t[r];return function(e){for(r in n)a[r]=n[r](e);return a}}var nt=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,at=new RegExp(nt.source,\"g\");function it(e,n){var t,r,a,i,o,s=nt.lastIndex=at.lastIndex=0,l=-1,c=[],u=[];for(e+=\"\",n+=\"\";(t=nt.exec(e))&&(r=at.exec(n));)(a=r.index)>s&&(a=n.slice(s,a),c[l]?c[l]+=a:c[++l]=a),(t=t[0])===(r=r[0])?c[l]?c[l]+=r:c[++l]=r:(c[++l]=null,u.push({i:l,x:_(t,r)})),s=at.lastIndex;return s<n.length&&(a=n.slice(s),c[l]?c[l]+=a:c[++l]=a),c.length<2?u[0]?(o=u[0].x,function(e){return o(e)+\"\"}):(i=n,function(){return i}):(n=u.length,function(e){for(var t,r=0;r<n;++r)c[(t=u[r]).i]=t.x(e);return c.join(\"\")})}function ot(e,t){var r=typeof t;return null==t||\"boolean\"==r?We(t):(\"number\"==r?_:\"string\"==r?(r=pe(t))?(t=r,Je):it:t instanceof pe?Je:t instanceof Date?tt:Xe(t)?Ze:Array.isArray(t)?et:\"function\"!=typeof t.valueOf&&\"function\"!=typeof t.toString||isNaN(t)?rt:_)(e,t)}function st(t,r){return t=+t,r=+r,function(e){return Math.round(t*(1-e)+r*e)}}var lt,ct=180/Math.PI,ut={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function dt(e,t,r,n,a,i){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n<t*r&&(e=-e,t=-t,l=-l,o=-o),{translateX:a,translateY:i,rotate:Math.atan2(t,e)*ct,skewX:Math.atan(l)*ct,scaleX:o,scaleY:s}}function pt(p,f,h,m){function g(e){return e.length?e.pop()+\" \":\"\"}return function(e,t){var r,n,a,i,o,s,l,c,u=[],d=[];return e=p(e),t=p(t),a=e.translateX,i=e.translateY,l=t.translateX,s=t.translateY,o=u,n=d,a!==l||i!==s?(r=o.push(\"translate(\",null,f,null,h),n.push({i:r-4,x:_(a,l)},{i:r-2,x:_(i,s)})):(l||s)&&o.push(\"translate(\"+l+f+s+h),n=e.rotate,a=t.rotate,r=u,i=d,n!==a?(180<n-a?a+=360:180<a-n&&(n+=360),i.push({i:r.push(g(r)+\"rotate(\",null,m)-2,x:_(n,a)})):a&&r.push(g(r)+\"rotate(\"+a+m),o=e.skewX,l=t.skewX,s=u,i=d,o!==l?i.push({i:s.push(g(s)+\"skewX(\",null,m)-2,x:_(o,l)}):l&&s.push(g(s)+\"skewX(\"+l+m),n=e.scaleX,a=e.scaleY,i=t.scaleX,o=t.scaleY,s=u,l=d,n!==i||a!==o?(c=s.push(g(s)+\"scale(\",null,\",\",null,\")\"),l.push({i:c-4,x:_(n,i)},{i:c-2,x:_(a,o)})):1===i&&1===o||s.push(g(s)+\"scale(\"+i+\",\"+o+\")\"),e=t=null,function(e){for(var t,r=-1,n=d.length;++r<n;)u[(t=d[r]).i]=t.x(e);return u.join(\"\")}}}var a=pt(function(e){return(e=new(\"function\"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(e+\"\")).isIdentity?ut:dt(e.a,e.b,e.c,e.d,e.e,e.f)},\"px, \",\"px)\",\"deg)\"),ft=pt(function(e){return null!=e&&((lt=lt||document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")).setAttribute(\"transform\",e),e=lt.transform.baseVal.consolidate())?dt((e=e.matrix).a,e.b,e.c,e.d,e.e,e.f):ut},\", \",\")\",\")\");function ht(e){return((e=Math.exp(e))+1/e)/2}var mt=function r(d,p,f){function e(e,t){var n,a,i,o=e[0],s=e[1],l=e[2],e=t[0],r=t[1],t=t[2],c=e-o,u=r-s,e=c*c+u*u;return(t=e<1e-12?(i=Math.log(t/l)/d,function(e){return[o+e*c,s+e*u,l*Math.exp(d*e*i)]}):(n=Math.sqrt(e),r=(t*t-l*l+f*e)/(2*l*p*n),e=(t*t-l*l-f*e)/(2*t*p*n),a=Math.log(Math.sqrt(r*r+1)-r),i=(Math.log(Math.sqrt(e*e+1)-e)-a)/d,function(e){var e=e*i,t=ht(a),r=l/(p*n)*(t*(r=d*e+a,((r=Math.exp(2*r))-1)/(r+1))-(r=a,((r=Math.exp(a))-1/r)/2));return[o+r*c,s+r*u,l*t/ht(d*e+a)]})).duration=1e3*i*d/Math.SQRT2,t}return e.rho=function(e){var e=Math.max(.001,+e),t=e*e;return r(e,t,t*t)},e}(Math.SQRT2,2,4);function gt(o){return function(t,e){var r=o((t=Se(t)).h,(e=Se(e)).h),n=h(t.s,e.s),a=h(t.l,e.l),i=h(t.opacity,e.opacity);return function(e){return t.h=r(e),t.s=n(e),t.l=a(e),t.opacity=i(e),t+\"\"}}}var _t=gt(Ke),yt=gt(h);function Tt(o){return function(t,e){var r=o((t=Pe(t)).h,(e=Pe(e)).h),n=h(t.c,e.c),a=h(t.l,e.l),i=h(t.opacity,e.opacity);return function(e){return t.h=r(e),t.c=n(e),t.l=a(e),t.opacity=i(e),t+\"\"}}}var vt=Tt(Ke),bt=Tt(h);function Et(s){return function e(o){function t(t,e){var r=s((t=He(t)).h,(e=He(e)).h),n=h(t.s,e.s),a=h(t.l,e.l),i=h(t.opacity,e.opacity);return function(e){return t.h=r(e),t.s=n(e),t.l=a(Math.pow(e,o)),t.opacity=i(e),t+\"\"}}return o=+o,t.gamma=e,t}(1)}var St=Et(Ke),At=Et(h);function Ot(e,t){void 0===t&&(t=e,e=ot);for(var r=0,n=t.length-1,a=t[0],i=new Array(n<0?0:n);r<n;)i[r]=e(a,a=t[++r]);return function(e){var t=Math.max(0,Math.min(n-1,Math.floor(e*=n)));return i[t](e-t)}}var Ct=Object.freeze({__proto__:null,interpolate:ot,interpolateArray:function(e,t){return(Xe(t)?Ze:et)(e,t)},interpolateBasis:qe,interpolateBasisClosed:ze,interpolateCubehelix:St,interpolateCubehelixLong:At,interpolateDate:tt,interpolateDiscrete:function(t){var r=t.length;return function(e){return t[Math.max(0,Math.min(r-1,Math.floor(e*r)))]}},interpolateHcl:vt,interpolateHclLong:bt,interpolateHsl:_t,interpolateHslLong:yt,interpolateHue:function(e,t){var r=Ke(+e,+t);return function(e){e=r(e);return e-360*Math.floor(e/360)}},interpolateLab:function(t,e){var r=h((t=ke(t)).l,(e=ke(e)).l),n=h(t.a,e.a),a=h(t.b,e.b),i=h(t.opacity,e.opacity);return function(e){return t.l=r(e),t.a=n(e),t.b=a(e),t.opacity=i(e),t+\"\"}},interpolateNumber:_,interpolateNumberArray:Ze,interpolateObject:rt,interpolateRgb:Je,interpolateRgbBasis:n,interpolateRgbBasisClosed:i,interpolateRound:st,interpolateString:it,interpolateTransformCss:a,interpolateTransformSvg:ft,interpolateZoom:mt,piecewise:Ot,quantize:function(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e(n/(t-1));return r}});function wt(e){return+e}var kt=[0,1];function m(e){return e}function It(t,r){return(r-=t=+t)?function(e){return(e-t)/r}:(e=isNaN(r)?NaN:.5,function(){return e});var e}function Rt(e,t,r){var n=e[0],e=e[1],a=t[0],t=t[1],a=e<n?(n=It(e,n),r(t,a)):(n=It(n,e),r(a,t));return function(e){return a(n(e))}}function Nt(r,e,t){var n=Math.min(r.length,e.length)-1,a=new Array(n),i=new Array(n),o=-1;for(r[n]<r[0]&&(r=r.slice().reverse(),e=e.slice().reverse());++o<n;)a[o]=It(r[o],r[o+1]),i[o]=t(e[o],e[o+1]);return function(e){var t=k(r,e,1,n)-1;return i[t](a[t](e))}}function Mt(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Pt(){var r,n,t,a,i,o,s=kt,l=kt,c=ot,u=m;function d(){var t,r,e,n=Math.min(s.length,l.length);return u!==m&&(t=s[0],(r=s[n-1])<t&&(e=t,t=r,r=e),u=function(e){return Math.max(t,Math.min(r,e))}),a=2<n?Nt:Rt,i=o=null,p}function p(e){return null==e||isNaN(e=+e)?t:(i=i||a(s.map(r),l,c))(r(u(e)))}return p.invert=function(e){return u(n((o=o||a(l,s.map(r),_))(e)))},p.domain=function(e){return arguments.length?(s=Array.from(e,wt),d()):s.slice()},p.range=function(e){return arguments.length?(l=Array.from(e),d()):l.slice()},p.rangeRound=function(e){return l=Array.from(e),c=st,d()},p.clamp=function(e){return arguments.length?(u=!!e||m,d()):u!==m},p.interpolate=function(e){return arguments.length?(c=e,d()):c},p.unknown=function(e){return arguments.length?(t=e,p):t},function(e,t){return r=e,n=t,d()}}function Dt(){return Pt()(m,m)}function xt(e,t){var r;return(t=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(\"e\"))<0?null:[1<(r=e.slice(0,t)).length?r[0]+r.slice(2):r,+e.slice(t+1)]}function Lt(e){return(e=xt(Math.abs(e)))?e[1]:NaN}var Ft,Ut=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function Bt(e){var t;if(t=Ut.exec(e))return new jt({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]});throw new Error(\"invalid format: \"+e)}function jt(e){this.fill=void 0===e.fill?\" \":e.fill+\"\",this.align=void 0===e.align?\">\":e.align+\"\",this.sign=void 0===e.sign?\"-\":e.sign+\"\",this.symbol=void 0===e.symbol?\"\":e.symbol+\"\",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?\"\":e.type+\"\"}function Ht(e,t){var r,t=xt(e,t);return t?(r=t[0],(t=t[1])<0?\"0.\"+new Array(-t).join(\"0\")+r:r.length>t+1?r.slice(0,t+1)+\".\"+r.slice(t+1):r+new Array(t-r.length+2).join(\"0\")):e+\"\"}Bt.prototype=jt.prototype,jt.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?\"0\":\"\")+(void 0===this.width?\"\":Math.max(1,0|this.width))+(this.comma?\",\":\"\")+(void 0===this.precision?\"\":\".\"+Math.max(0,0|this.precision))+(this.trim?\"~\":\"\")+this.type};var Gt={\"%\":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+\"\",d:function(e){return 1e21<=Math.abs(e=Math.round(e))?e.toLocaleString(\"en\").replace(/,/g,\"\"):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Ht(100*e,t),r:Ht,s:function(e,t){var r,n,a=xt(e,t);return a?(r=a[0],(a=(a=a[1])-(Ft=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1)===(n=r.length)?r:n<a?r+new Array(a-n+1).join(\"0\"):0<a?r.slice(0,a)+\".\"+r.slice(a):\"0.\"+new Array(1-a).join(\"0\")+xt(e,Math.max(0,t+a-1))[0]):e+\"\"},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Vt(e){return e}var qt,zt,Wt=Array.prototype.map,$t=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function Kt(e){var t,s,l,E=void 0===e.grouping||void 0===e.thousands?Vt:(s=Wt.call(e.grouping,Number),l=e.thousands+\"\",function(e,t){for(var r=e.length,n=[],a=0,i=s[0],o=0;0<r&&0<i&&(t<o+i+1&&(i=Math.max(1,t-o)),n.push(e.substring(r-=i,r+i)),!((o+=i+1)>t));)i=s[a=(a+1)%s.length];return n.reverse().join(l)}),n=void 0===e.currency?\"\":e.currency[0]+\"\",a=void 0===e.currency?\"\":e.currency[1]+\"\",S=void 0===e.decimal?\".\":e.decimal+\"\",A=void 0===e.numerals?Vt:(t=Wt.call(e.numerals,String),function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}),i=void 0===e.percent?\"%\":e.percent+\"\",O=void 0===e.minus?\"−\":e.minus+\"\",C=void 0===e.nan?\"NaN\":e.nan+\"\";function o(e){var c=(e=Bt(e)).fill,u=e.align,d=e.sign,t=e.symbol,p=e.zero,f=e.width,h=e.comma,m=e.precision,g=e.trim,_=e.type,y=(\"n\"===_?(h=!0,_=\"g\"):Gt[_]||(void 0===m&&(m=12),g=!0,_=\"g\"),(p||\"0\"===c&&\"=\"===u)&&(p=!0,c=\"0\",u=\"=\"),\"$\"===t?n:\"#\"===t&&/[boxX]/.test(_)?\"0\"+_.toLowerCase():\"\"),T=\"$\"===t?a:/[%p]/.test(_)?i:\"\",v=Gt[_],b=/[defgprs%]/.test(_);function r(e){var t,r,n,a=y,i=T;if(\"c\"===_)i=v(e)+i,e=\"\";else{var o=(e=+e)<0||1/e<0;if(e=isNaN(e)?C:v(Math.abs(e),m),g&&(e=function(e){e:for(var t,r=e.length,n=1,a=-1;n<r;++n)switch(e[n]){case\".\":a=t=n;break;case\"0\":0===a&&(a=n),t=n;break;default:if(!+e[n])break e;0<a&&(a=0)}return 0<a?e.slice(0,a)+e.slice(t+1):e}(e)),a=((o=o&&0==+e&&\"+\"!==d?!1:o)?\"(\"===d?d:O:\"-\"===d||\"(\"===d?\"\":d)+a,i=(\"s\"===_?$t[8+Ft/3]:\"\")+i+(o&&\"(\"===d?\")\":\"\"),b)for(t=-1,r=e.length;++t<r;)if((n=e.charCodeAt(t))<48||57<n){i=(46===n?S+e.slice(t+1):e.slice(t))+i,e=e.slice(0,t);break}}h&&!p&&(e=E(e,1/0));var s=a.length+e.length+i.length,l=s<f?new Array(f-s+1).join(c):\"\";switch(h&&p&&(e=E(l+e,l.length?f-i.length:1/0),l=\"\"),u){case\"<\":e=a+e+i+l;break;case\"=\":e=a+l+e+i;break;case\"^\":e=l.slice(0,s=l.length>>1)+a+e+i+l.slice(s);break;default:e=l+a+e+i}return A(e)}return m=void 0===m?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),r.toString=function(){return e+\"\"},r}return{format:o,formatPrefix:function(e,t){var r=o(((e=Bt(e)).type=\"f\",e)),e=3*Math.max(-8,Math.min(8,Math.floor(Lt(t)/3))),n=Math.pow(10,-e),a=$t[8+e/3];return function(e){return r(n*e)+a}}}}function Yt(e,t,r,n){var a,i,o=Z(e,t,r);switch((n=Bt(null==n?\",f\":n)).type){case\"s\":var s=Math.max(Math.abs(e),Math.abs(t));return null!=n.precision||isNaN((i=o,i=Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Lt(s)/3)))-Lt(Math.abs(i)))))||(n.precision=i),zt(n,s);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":null!=n.precision||isNaN((s=o,a=Math.max(Math.abs(e),Math.abs(t)),s=Math.abs(s),a=Math.abs(a)-s,i=Math.max(0,Lt(a)-Lt(s))+1))||(n.precision=i-(\"e\"===n.type));break;case\"f\":case\"%\":null!=n.precision||isNaN(i=Math.max(0,-Lt(Math.abs(o))))||(n.precision=i-2*(\"%\"===n.type))}return qt(n)}function Jt(c){var u=c.domain;return c.ticks=function(e){var t=u();return J(t[0],t[t.length-1],null==e?10:e)},c.tickFormat=function(e,t){var r=u();return Yt(r[0],r[r.length-1],null==e?10:e,t)},c.nice=function(e){null==e&&(e=10);var t,r,n=u(),a=0,i=n.length-1,o=n[a],s=n[i],l=10;for(s<o&&(r=o,o=s,s=r,r=a,a=i,i=r);0<l--;){if((r=Q(o,s,e))===t)return n[a]=o,n[i]=s,u(n);if(0<r)o=Math.floor(o/r)*r,s=Math.ceil(s/r)*r;else{if(!(r<0))break;o=Math.ceil(o*r)/r,s=Math.floor(s*r)/r}t=r}return c},c}function Qt(e,t){var r,n=0,a=(e=e.slice()).length-1,i=e[n],o=e[a];return o<i&&(r=n,n=a,a=r,r=i,i=o,o=r),e[n]=t.floor(i),e[a]=t.ceil(o),e}function Zt(e){return Math.log(e)}function Xt(e){return Math.exp(e)}function er(e){return-Math.log(-e)}function tr(e){return-Math.exp(-e)}function rr(e){return isFinite(e)?+(\"1e\"+e):e<0?0:e}function nr(r){return(e,t)=>-r(-e,t)}function ar(e){const a=e(Zt,Xt),c=a.domain;let u=10,d,p;function t(){var t,r;return d=(r=u)===Math.E?Math.log:10===r&&Math.log10||2===r&&Math.log2||(r=Math.log(r),e=>Math.log(e)/r),p=10===(t=u)?rr:t===Math.E?Math.exp:e=>Math.pow(t,e),c()[0]<0?(d=nr(d),p=nr(p),e(er,tr)):e(Zt,Xt),a}return a.base=function(e){return arguments.length?(u=+e,t()):u},a.domain=function(e){return(arguments.length?(c(e),t):c)()},a.ticks=e=>{var t=c();let r=t[0],n=t[t.length-1];t=n<r;t&&([r,n]=[n,r]);let a=d(r),i=d(n),o,s;e=null==e?10:+e;let l=[];if(!(u%1)&&i-a<e){if(a=Math.floor(a),i=Math.ceil(i),0<r){for(;a<=i;++a)for(o=1;o<u;++o)if(!((s=a<0?o/p(-a):o*p(a))<r)){if(s>n)break;l.push(s)}}else for(;a<=i;++a)for(o=u-1;1<=o;--o)if(!((s=0<a?o/p(-a):o*p(a))<r)){if(s>n)break;l.push(s)}2*l.length<e&&(l=J(r,n,e))}else l=J(a,i,Math.min(i-a,e)).map(p);return t?l.reverse():l},a.tickFormat=(e,r)=>{if(null==e&&(e=10),\"function\"!=typeof(r=null==r?10===u?\"s\":\",\":r)&&(u%1||null!=(r=Bt(r)).precision||(r.trim=!0),r=qt(r)),e===1/0)return r;const n=Math.max(1,u*e/a.ticks().length);return e=>{let t=e/p(Math.round(d(e)));return t*u<u-.5&&(t*=u),t<=n?r(e):\"\"}},a.nice=()=>c(Qt(c(),{floor:e=>p(Math.floor(d(e))),ceil:e=>p(Math.ceil(d(e)))})),a}function ir(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function or(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function sr(t){var r=1,e=t(ir(r),or(r));return e.constant=function(e){return arguments.length?t(ir(r=+e),or(r)):r},Jt(e)}function lr(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function cr(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function ur(e){return e<0?-e*e:e*e}function dr(t){var e=t(m,m),r=1;return e.exponent=function(e){return arguments.length?1===(r=+e)?t(m,m):.5===r?t(cr,ur):t(lr(r),lr(1/r)):r},Jt(e)}function pr(){var e=dr(Pt());return e.copy=function(){return Mt(e,pr()).exponent(e.exponent())},c.apply(e,arguments),e}St=Kt({thousands:\",\",grouping:[3],currency:[\"$\",\"\"]}),qt=St.format,zt=St.formatPrefix;const Ma=new Date,Pa=new Date;function g(i,o,r,n){function s(e){return i(e=0===arguments.length?new Date:new Date(+e)),e}return s.floor=e=>(i(e=new Date(+e)),e),s.ceil=e=>(i(e=new Date(e-1)),o(e,1),i(e),e),s.round=e=>{var t=s(e),r=s.ceil(e);return e-t<r-e?t:r},s.offset=(e,t)=>(o(e=new Date(+e),null==t?1:Math.floor(t)),e),s.range=(e,t,r)=>{var n,a=[];if(e=s.ceil(e),r=null==r?1:Math.floor(r),e<t&&0<r)for(;a.push(n=new Date(+e)),o(e,r),i(e),n<e&&e<t;);return a},s.filter=r=>g(e=>{if(e<=e)for(;i(e),!r(e);)e.setTime(e-1)},(e,t)=>{if(e<=e)if(t<0)for(;++t<=0;)for(;o(e,-1),!r(e););else for(;0<=--t;)for(;o(e,1),!r(e););}),r&&(s.count=(e,t)=>(Ma.setTime(+e),Pa.setTime(+t),i(Ma),i(Pa),Math.floor(r(Ma,Pa))),s.every=t=>(t=Math.floor(t),isFinite(t)&&0<t?1<t?s.filter(n?e=>n(e)%t==0:e=>s.count(0,e)%t==0):s:null)),s}const Da=g(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e),I=(Da.every=r=>(r=Math.floor(r),isFinite(r)&&0<r?1<r?g(e=>{e.setTime(Math.floor(e/r)*r)},(e,t)=>{e.setTime(+e+t*r)},(e,t)=>(t-e)/r):Da:null),Da.range,1e3),R=60*I,N=60*R,M=24*N,xa=7*M,La=30*M,Fa=365*M,P=g(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*I)},(e,t)=>(t-e)/I,e=>e.getUTCSeconds()),Ua=(P.range,g(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*I)},(e,t)=>{e.setTime(+e+t*R)},(e,t)=>(t-e)/R,e=>e.getMinutes())),Ba=(Ua.range,g(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*R)},(e,t)=>(t-e)/R,e=>e.getUTCMinutes())),ja=(Ba.range,g(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*I-e.getMinutes()*R)},(e,t)=>{e.setTime(+e+t*N)},(e,t)=>(t-e)/N,e=>e.getHours())),Ha=(ja.range,g(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*N)},(e,t)=>(t-e)/N,e=>e.getUTCHours())),Ga=(Ha.range,g(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*R)/M,e=>e.getDate()-1)),Va=(Ga.range,g(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/M,e=>e.getUTCDate()-1));Va.range;At=g(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/M,e=>Math.floor(e/M));function fr(t){return g(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+7*t)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*R)/xa)}At.range;const qa=fr(0),za=fr(1);vt=fr(2),bt=fr(3);const Wa=fr(4);_t=fr(5),yt=fr(6);function hr(t){return g(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+7*t)},(e,t)=>(t-e)/xa)}qa.range,za.range,vt.range,bt.range,Wa.range,_t.range,yt.range;const $a=hr(0),Ka=hr(1);n=hr(2),i=hr(3);const Ya=hr(4);a=hr(5),ft=hr(6);$a.range,Ka.range,n.range,i.range,Ya.range,a.range,ft.range;const Ja=g(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear()),e=>e.getMonth()),Qa=(Ja.range,g(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear()),e=>e.getUTCMonth())),D=(Qa.range,g(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear())),x=(D.every=r=>isFinite(r=Math.floor(r))&&0<r?g(e=>{e.setFullYear(Math.floor(e.getFullYear()/r)*r),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t*r)}):null,D.range,g(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear()));function mr(i,e,t,r,n,a){const o=[[P,1,I],[P,5,5*I],[P,15,15*I],[P,30,30*I],[a,1,R],[a,5,5*R],[a,15,15*R],[a,30,30*R],[n,1,N],[n,3,3*N],[n,6,6*N],[n,12,12*N],[r,1,M],[r,2,2*M],[t,1,xa],[e,1,La],[e,3,3*La],[i,1,Fa]];function s(e,t,r){var n=Math.abs(t-e)/r,a=z(([,,e])=>e).right(o,n);return a===o.length?i.every(Z(e/Fa,t/Fa,r)):0===a?Da.every(Math.max(Z(e,t,r),1)):([e,t]=o[n/o[a-1][2]<o[a][2]/n?a-1:a],e.every(t))}return[function(e,t,r){var n=t<e;n&&([e,t]=[t,e]);r=(r=r&&\"function\"==typeof r.range?r:s(e,t,r))?r.range(e,+t+1):[];return n?r.reverse():r},s]}x.every=r=>isFinite(r=Math.floor(r))&&0<r?g(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/r)*r),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t*r)}):null,x.range;const[Za,Xa]=mr(x,Qa,$a,At,Ha,Ba),[ei,ti]=mr(D,Ja,qa,Ga,ja,Ua);function gr(e){var t;return 0<=e.y&&e.y<100?((t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L)).setFullYear(e.y),t):new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function _r(e){var t;return 0<=e.y&&e.y<100?((t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L))).setUTCFullYear(e.y),t):new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function yr(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function Tr(e){var n=e.dateTime,a=e.date,i=e.time,t=e.periods,r=e.days,o=e.shortDays,s=e.months,l=e.shortMonths,c=Cr(t),u=wr(t),d=Cr(r),p=wr(r),f=Cr(o),h=wr(o),m=Cr(s),g=wr(s),_=Cr(l),y=wr(l),T={a:function(e){return o[e.getDay()]},A:function(e){return r[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return s[e.getMonth()]},c:null,d:Kr,e:Kr,f:Xr,g:dn,G:fn,H:Yr,I:Jr,j:Qr,L:Zr,m:en,M:tn,p:function(e){return t[+(12<=e.getHours())]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Ln,s:Fn,S:rn,u:nn,U:an,V:sn,w:ln,W:cn,x:null,X:null,y:un,Y:pn,Z:hn,\"%\":xn},v={a:function(e){return o[e.getUTCDay()]},A:function(e){return r[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return s[e.getUTCMonth()]},c:null,d:mn,e:mn,f:vn,g:Nn,G:Pn,H:gn,I:_n,j:yn,L:Tn,m:bn,M:En,p:function(e){return t[+(12<=e.getUTCHours())]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Ln,s:Fn,S:Sn,u:An,U:On,V:wn,w:kn,W:In,x:null,X:null,y:Rn,Y:Mn,Z:Dn,\"%\":xn},b={a:function(e,t,r){t=f.exec(t.slice(r));return t?(e.w=h.get(t[0].toLowerCase()),r+t[0].length):-1},A:function(e,t,r){t=d.exec(t.slice(r));return t?(e.w=p.get(t[0].toLowerCase()),r+t[0].length):-1},b:function(e,t,r){t=_.exec(t.slice(r));return t?(e.m=y.get(t[0].toLowerCase()),r+t[0].length):-1},B:function(e,t,r){t=m.exec(t.slice(r));return t?(e.m=g.get(t[0].toLowerCase()),r+t[0].length):-1},c:function(e,t,r){return A(e,n,t,r)},d:Ur,e:Ur,f:qr,g:Dr,G:Pr,H:jr,I:jr,j:Br,L:Vr,m:Fr,M:Hr,p:function(e,t,r){t=c.exec(t.slice(r));return t?(e.p=u.get(t[0].toLowerCase()),r+t[0].length):-1},q:Lr,Q:Wr,s:$r,S:Gr,u:Ir,U:Rr,V:Nr,w:kr,W:Mr,x:function(e,t,r){return A(e,a,t,r)},X:function(e,t,r){return A(e,i,t,r)},y:Dr,Y:Pr,Z:xr,\"%\":zr};function E(l,c){return function(e){var t,r,n,a=[],i=-1,o=0,s=l.length;for(e instanceof Date||(e=new Date(+e));++i<s;)37===l.charCodeAt(i)&&(a.push(l.slice(o,i)),null!=(r=Er[t=l.charAt(++i)])?t=l.charAt(++i):r=\"e\"===t?\" \":\"0\",(n=c[t])&&(t=n(e,r)),a.push(t),o=i+1);return a.push(l.slice(o,i)),a.join(\"\")}}function S(a,i){return function(e){var t,r,n=yr(1900,void 0,1);if(A(n,a,e+=\"\",0)!=e.length)return null;if(\"Q\"in n)return new Date(n.Q);if(\"s\"in n)return new Date(1e3*n.s+(\"L\"in n?n.L:0));if(!i||\"Z\"in n||(n.Z=0),\"p\"in n&&(n.H=n.H%12+12*n.p),void 0===n.m&&(n.m=\"q\"in n?n.q:0),\"V\"in n){if(n.V<1||53<n.V)return null;\"w\"in n||(n.w=1),\"Z\"in n?(t=4<(r=(t=_r(yr(n.y,0,1))).getUTCDay())||0===r?Ka.ceil(t):Ka(t),t=Va.offset(t,7*(n.V-1)),n.y=t.getUTCFullYear(),n.m=t.getUTCMonth(),n.d=t.getUTCDate()+(n.w+6)%7):(t=4<(r=(t=gr(yr(n.y,0,1))).getDay())||0===r?za.ceil(t):za(t),t=Ga.offset(t,7*(n.V-1)),n.y=t.getFullYear(),n.m=t.getMonth(),n.d=t.getDate()+(n.w+6)%7)}else(\"W\"in n||\"U\"in n)&&(\"w\"in n||(n.w=\"u\"in n?n.u%7:\"W\"in n?1:0),r=\"Z\"in n?_r(yr(n.y,0,1)).getUTCDay():gr(yr(n.y,0,1)).getDay(),n.m=0,n.d=\"W\"in n?(n.w+6)%7+7*n.W-(r+5)%7:n.w+7*n.U-(r+6)%7);return(\"Z\"in n?(n.H+=n.Z/100|0,n.M+=n.Z%100,_r):gr)(n)}}function A(e,t,r,n){for(var a,i,o=0,s=t.length,l=r.length;o<s;){if(l<=n)return-1;if(37===(a=t.charCodeAt(o++))){if(a=t.charAt(o++),!(i=b[a in Er?t.charAt(o++):a])||(n=i(e,r,n))<0)return-1}else if(a!=r.charCodeAt(n++))return-1}return n}return T.x=E(a,T),T.X=E(i,T),T.c=E(n,T),v.x=E(a,v),v.X=E(i,v),v.c=E(n,v),{format:function(e){var t=E(e+=\"\",T);return t.toString=function(){return e},t},parse:function(e){var t=S(e+=\"\",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=E(e+=\"\",v);return t.toString=function(){return e},t},utcParse:function(e){var t=S(e+=\"\",!0);return t.toString=function(){return e},t}}}var vr,br,Er={\"-\":\"\",_:\" \",0:\"0\"},y=/^\\s*\\d+/,Sr=/^%/,Ar=/[\\\\^$*+?|[\\]().{}]/g;function T(e,t,r){var n=e<0?\"-\":\"\",e=(n?-e:e)+\"\",a=e.length;return n+(a<r?new Array(r-a+1).join(t)+e:e)}function Or(e){return e.replace(Ar,\"\\\\$&\")}function Cr(e){return new RegExp(\"^(?:\"+e.map(Or).join(\"|\")+\")\",\"i\")}function wr(e){return new Map(e.map((e,t)=>[e.toLowerCase(),t]))}function kr(e,t,r){t=y.exec(t.slice(r,r+1));return t?(e.w=+t[0],r+t[0].length):-1}function Ir(e,t,r){t=y.exec(t.slice(r,r+1));return t?(e.u=+t[0],r+t[0].length):-1}function Rr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.U=+t[0],r+t[0].length):-1}function Nr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.V=+t[0],r+t[0].length):-1}function Mr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.W=+t[0],r+t[0].length):-1}function Pr(e,t,r){t=y.exec(t.slice(r,r+4));return t?(e.y=+t[0],r+t[0].length):-1}function Dr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.y=+t[0]+(68<+t[0]?1900:2e3),r+t[0].length):-1}function xr(e,t,r){t=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(t.slice(r,r+6));return t?(e.Z=t[1]?0:-(t[2]+(t[3]||\"00\")),r+t[0].length):-1}function Lr(e,t,r){t=y.exec(t.slice(r,r+1));return t?(e.q=3*t[0]-3,r+t[0].length):-1}function Fr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.m=t[0]-1,r+t[0].length):-1}function Ur(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.d=+t[0],r+t[0].length):-1}function Br(e,t,r){t=y.exec(t.slice(r,r+3));return t?(e.m=0,e.d=+t[0],r+t[0].length):-1}function jr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.H=+t[0],r+t[0].length):-1}function Hr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.M=+t[0],r+t[0].length):-1}function Gr(e,t,r){t=y.exec(t.slice(r,r+2));return t?(e.S=+t[0],r+t[0].length):-1}function Vr(e,t,r){t=y.exec(t.slice(r,r+3));return t?(e.L=+t[0],r+t[0].length):-1}function qr(e,t,r){t=y.exec(t.slice(r,r+6));return t?(e.L=Math.floor(t[0]/1e3),r+t[0].length):-1}function zr(e,t,r){t=Sr.exec(t.slice(r,r+1));return t?r+t[0].length:-1}function Wr(e,t,r){t=y.exec(t.slice(r));return t?(e.Q=+t[0],r+t[0].length):-1}function $r(e,t,r){t=y.exec(t.slice(r));return t?(e.s=+t[0],r+t[0].length):-1}function Kr(e,t){return T(e.getDate(),t,2)}function Yr(e,t){return T(e.getHours(),t,2)}function Jr(e,t){return T(e.getHours()%12||12,t,2)}function Qr(e,t){return T(1+Ga.count(D(e),e),t,3)}function Zr(e,t){return T(e.getMilliseconds(),t,3)}function Xr(e,t){return Zr(e,t)+\"000\"}function en(e,t){return T(e.getMonth()+1,t,2)}function tn(e,t){return T(e.getMinutes(),t,2)}function rn(e,t){return T(e.getSeconds(),t,2)}function nn(e){e=e.getDay();return 0===e?7:e}function an(e,t){return T(qa.count(D(e)-1,e),t,2)}function on(e){var t=e.getDay();return 4<=t||0===t?Wa(e):Wa.ceil(e)}function sn(e,t){return e=on(e),T(Wa.count(D(e),e)+(4===D(e).getDay()),t,2)}function ln(e){return e.getDay()}function cn(e,t){return T(za.count(D(e)-1,e),t,2)}function un(e,t){return T(e.getFullYear()%100,t,2)}function dn(e,t){return T((e=on(e)).getFullYear()%100,t,2)}function pn(e,t){return T(e.getFullYear()%1e4,t,4)}function fn(e,t){var r=e.getDay();return T((e=4<=r||0===r?Wa(e):Wa.ceil(e)).getFullYear()%1e4,t,4)}function hn(e){e=e.getTimezoneOffset();return(0<e?\"-\":(e*=-1,\"+\"))+T(e/60|0,\"0\",2)+T(e%60,\"0\",2)}function mn(e,t){return T(e.getUTCDate(),t,2)}function gn(e,t){return T(e.getUTCHours(),t,2)}function _n(e,t){return T(e.getUTCHours()%12||12,t,2)}function yn(e,t){return T(1+Va.count(x(e),e),t,3)}function Tn(e,t){return T(e.getUTCMilliseconds(),t,3)}function vn(e,t){return Tn(e,t)+\"000\"}function bn(e,t){return T(e.getUTCMonth()+1,t,2)}function En(e,t){return T(e.getUTCMinutes(),t,2)}function Sn(e,t){return T(e.getUTCSeconds(),t,2)}function An(e){e=e.getUTCDay();return 0===e?7:e}function On(e,t){return T($a.count(x(e)-1,e),t,2)}function Cn(e){var t=e.getUTCDay();return 4<=t||0===t?Ya(e):Ya.ceil(e)}function wn(e,t){return e=Cn(e),T(Ya.count(x(e),e)+(4===x(e).getUTCDay()),t,2)}function kn(e){return e.getUTCDay()}function In(e,t){return T(Ka.count(x(e)-1,e),t,2)}function Rn(e,t){return T(e.getUTCFullYear()%100,t,2)}function Nn(e,t){return T((e=Cn(e)).getUTCFullYear()%100,t,2)}function Mn(e,t){return T(e.getUTCFullYear()%1e4,t,4)}function Pn(e,t){var r=e.getUTCDay();return T((e=4<=r||0===r?Ya(e):Ya.ceil(e)).getUTCFullYear()%1e4,t,4)}function Dn(){return\"+0000\"}function xn(){return\"%\"}function Ln(e){return+e}function Fn(e){return Math.floor(+e/1e3)}function Un(e){return new Date(e)}function Bn(e){return e instanceof Date?+e:+new Date(+e)}function jn(r,n,t,a,i,o,s,l,c,u){var d=Dt(),p=d.invert,f=d.domain,h=u(\".%L\"),m=u(\":%S\"),g=u(\"%I:%M\"),_=u(\"%I %p\"),y=u(\"%a %d\"),T=u(\"%b %d\"),v=u(\"%B\"),b=u(\"%Y\");function E(e){return(c(e)<e?h:l(e)<e?m:s(e)<e?g:o(e)<e?_:a(e)<e?i(e)<e?y:T:t(e)<e?v:b)(e)}return d.invert=function(e){return new Date(p(e))},d.domain=function(e){return arguments.length?f(Array.from(e,Bn)):f().map(Un)},d.ticks=function(e){var t=f();return r(t[0],t[t.length-1],null==e?10:e)},d.tickFormat=function(e,t){return null==t?E:u(t)},d.nice=function(e){var t=f();return(e=e&&\"function\"==typeof e.range?e:n(t[0],t[t.length-1],null==e?10:e))?f(Qt(t,e)):d},d.copy=function(){return Mt(d,jn(r,n,t,a,i,o,s,l,c,u))},d}function Hn(){var t,r,n,a,i,o=0,s=1,l=m,c=!1;function u(e){return null==e||isNaN(e=+e)?i:l(0===n?.5:(e=(a(e)-t)*n,c?Math.max(0,Math.min(1,e)):e))}function e(r){return function(e){var t;return arguments.length?([e,t]=e,l=r(e,t),u):[l(0),l(1)]}}return u.domain=function(e){return arguments.length?([o,s]=e,t=a(o=+o),r=a(s=+s),n=t===r?0:1/(r-t),u):[o,s]},u.clamp=function(e){return arguments.length?(c=!!e,u):c},u.interpolator=function(e){return arguments.length?(l=e,u):l},u.range=e(ot),u.rangeRound=e(st),u.unknown=function(e){return arguments.length?(i=e,u):i},function(e){return t=(a=e)(o),r=e(s),n=t===r?0:1/(r-t),u}}function v(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function Gn(){var e=Jt(Hn()(m));return e.copy=function(){return v(e,Gn())},r.apply(e,arguments)}function Vn(){var e=dr(Hn());return e.copy=function(){return v(e,Vn()).exponent(e.exponent())},r.apply(e,arguments)}function qn(){var t,r,n,a,i,o,s,l=0,c=.5,u=1,d=1,p=m,f=!1;function h(e){return isNaN(e=+e)?s:(e=.5+((e=+o(e))-r)*(d*e<d*r?a:i),p(f?Math.max(0,Math.min(1,e)):e))}function e(n){return function(e){var t,r;return arguments.length?([e,t,r]=e,p=Ot(n,[e,t,r]),h):[p(0),p(.5),p(1)]}}return h.domain=function(e){return arguments.length?([l,c,u]=e,t=o(l=+l),r=o(c=+c),n=o(u=+u),a=t===r?0:.5/(r-t),i=r===n?0:.5/(n-r),d=r<t?-1:1,h):[l,c,u]},h.clamp=function(e){return arguments.length?(f=!!e,h):f},h.interpolator=function(e){return arguments.length?(p=e,h):p},h.range=e(ot),h.rangeRound=e(st),h.unknown=function(e){return arguments.length?(s=e,h):s},function(e){return t=(o=e)(l),r=e(c),n=e(u),a=t===r?0:.5/(r-t),i=r===n?0:.5/(n-r),d=r<t?-1:1,h}}function zn(){var e=dr(qn());return e.copy=function(){return v(e,zn()).exponent(e.exponent())},r.apply(e,arguments)}function Wn(){const t=X().unknown(void 0),c=t.domain,u=t.range;let d=[0,1],i,p,o=!1,s=0,l=0,f=.5;function r(){var e=c().length,t=d[1]<d[0],r=d[1-t],n=F(e,s,l);let a=d[+t];i=(r-a)/(n||1),o&&(i=Math.floor(i)),a+=(r-a-i*(e-s))*f,p=i*(1-s),o&&(a=Math.round(a),p=Math.round(p));n=function(e,t,r){e=+e,t=+t,r=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+r;for(var n=-1,a=0|Math.max(0,Math.ceil((t-e)/r)),i=new Array(a);++n<a;)i[n]=e+n*r;return i}(e).map(e=>a+i*e);return u(t?n.reverse():n)}return delete t.unknown,t.domain=function(e){return(arguments.length?(c(e),r):c)()},t.range=function(e){return arguments.length?(d=[+e[0],+e[1]],r()):d.slice()},t.rangeRound=function(e){return d=[+e[0],+e[1]],o=!0,r()},t.bandwidth=function(){return p},t.step=function(){return i},t.round=function(e){return arguments.length?(o=!!e,r()):o},t.padding=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),s=l,r()):s},t.paddingInner=function(e){return arguments.length?(s=Math.max(0,Math.min(1,e)),r()):s},t.paddingOuter=function(e){return arguments.length?(l=Math.max(0,Math.min(1,e)),r()):l},t.align=function(e){return arguments.length?(f=Math.max(0,Math.min(1,e)),r()):f},t.invertRange=function(i){if(null!=i[0]&&null!=i[1]){var o=d[1]<d[0],s=o?u().reverse():u(),l=s.length-1;let e=+i[0],t=+i[1],r,n,a;if(e==e&&t==t&&(t<e&&(a=e,e=t,t=a),!(t<s[0]||e>d[1-o])))return r=Math.max(0,k(s,e)-1),n=e===t?r:k(s,t)-1,e-s[r]>p+1e-10&&++r,o&&(a=r,r=l-n,n=l-a),r>n?void 0:c().slice(r,n+1)}},t.invert=function(e){e=t.invertRange([e,e]);return e&&e[0]},t.copy=function(){return Wn().domain(c()).range(d).round(o).paddingInner(s).paddingOuter(l).align(f)},r()}mt=Tr({dateTime:\"%x, %X\",date:\"%-m/%-d/%Y\",time:\"%-I:%M:%S %p\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]}),vr=mt.format,mt.parse,br=mt.utcFormat,mt.utcParse;var $n=Array.prototype.map;const ri=Array.prototype.slice;const ni=new Map,ai=Symbol(\"vega_scale\");function Kn(e){return e[ai]=!0,e}function Yn(t,r,e){function n(){var c,a,e=r();return e.invertRange||(e.invertRange=e.invert?(a=e,function(e){let t=e[0],r=e[1],n;return r<t&&(n=t,t=r,r=n),[a.invert(t),a.invert(r)]}):e.invertExtent?(c=e,function(e){var t=c.range();let r=e[0],n=e[1],a=-1,i,o,s,l;for(n<r&&(o=r,r=n,n=o),s=0,l=t.length;s<l;++s)t[s]>=r&&t[s]<=n&&(a<0&&(a=s),i=s);if(!(a<0))return r=c.invertExtent(t[a]),n=c.invertExtent(t[i]),[void 0===r[0]?r[1]:r[0],void 0===n[1]?n[0]:n[1]]}):void 0),e.type=t,Kn(e)}return n.metadata=l.toSet(l.array(e)),n}function b(e,t,r){return 1<arguments.length?(ni.set(e,Yn(e,t,r)),this):Jn(e)?ni.get(e):void 0}function Jn(e){return ni.has(e)}function Qn(e,t){e=ni.get(e);return e&&e.metadata[t]}function Zn(e){return Qn(e,ma)}function Xn(e){return Qn(e,ga)}function ea(e){return Qn(e,S)}function ta(e){return Qn(e,_a)}b(\"identity\",function e(t){var r;function n(e){return null==e||isNaN(e=+e)?r:e}return(n.invert=n).domain=n.range=function(e){return arguments.length?(t=Array.from(e,wt),n):t.slice()},n.unknown=function(e){return arguments.length?(r=e,n):r},n.copy=function(){return e(t).unknown(r)},t=arguments.length?Array.from(t,wt):[0,1],Jt(n)}),b(U,function e(){var t=Dt();return t.copy=function(){return Mt(t,e())},c.apply(t,arguments),Jt(t)},C),b(S,function e(){const t=ar(Pt()).domain([1,10]);return t.copy=()=>Mt(t,e()).base(t.base()),c.apply(t,arguments),t},[C,S]),b(\"pow\",pr,C),b(B,function(){return pr.apply(null,arguments).exponent(.5)},C),b(j,function e(){var t=sr(Pt());return t.copy=function(){return Mt(t,e()).constant(t.constant())},c.apply(t,arguments)},C),b(A,function(){return c.apply(jn(ei,ti,D,Ja,qa,Ga,ja,Ua,P,vr).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},[C,_a]),b(O,function(){return c.apply(jn(Za,Xa,x,Qa,$a,Va,Ha,Ba,P,br).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},[C,_a]),b(t,Gn,[C,w]),b(t+\"-linear\",Gn,[C,w]),b(t+\"-\"+S,function e(){var t=ar(Hn()).domain([1,10]);return t.copy=function(){return v(t,e()).base(t.base())},r.apply(t,arguments)},[C,w,S]),b(t+\"-pow\",Vn,[C,w]),b(t+\"-sqrt\",function(){return Vn.apply(null,arguments).exponent(.5)},[C,w]),b(t+\"-symlog\",function e(){var t=sr(Hn());return t.copy=function(){return v(t,e()).constant(t.constant())},r.apply(t,arguments)},[C,w]),b(H+\"-linear\",function e(){var t=Jt(qn()(m));return t.copy=function(){return v(t,e())},r.apply(t,arguments)},[C,w]),b(H+\"-\"+S,function e(){var t=ar(qn()).domain([.1,1,10]);return t.copy=function(){return v(t,e()).base(t.base())},r.apply(t,arguments)},[C,w,S]),b(H+\"-pow\",zn,[C,w]),b(H+\"-sqrt\",function(){return zn.apply(null,arguments).exponent(.5)},[C,w]),b(H+\"-symlog\",function e(){var t=sr(qn());return t.copy=function(){return v(t,e()).constant(t.constant())},r.apply(t,arguments)},[C,w]),b(fa,function e(){var t,r=[],n=[],a=[];function i(){var e=0,t=Math.max(1,n.length);for(a=new Array(t-1);++e<t;)a[e-1]=function(e,t,r=$){var n,a;if((n=e.length)&&!isNaN(t=+t))return t<=0||n<2?+r(e[0],0,e):1<=t?+r(e[n-1],n-1,e):(n=(n-1)*t,(a=+r(e[t=Math.floor(n)],t,e))+(+r(e[t+1],t+1,e)-a)*(n-t))}(r,e/t);return o}function o(e){return null==e||isNaN(e=+e)?t:n[k(a,e)]}return o.invertExtent=function(e){return(e=n.indexOf(e))<0?[NaN,NaN]:[0<e?a[e-1]:r[0],e<a.length?a[e]:r[r.length-1]]},o.domain=function(e){if(!arguments.length)return r.slice();r=[];for(var t of e)null==t||isNaN(t=+t)||r.push(t);return r.sort(q),i()},o.range=function(e){return arguments.length?(n=Array.from(e),i()):n.slice()},o.unknown=function(e){return arguments.length?(t=e,o):t},o.quantiles=function(){return a.slice()},o.copy=function(){return e().domain(r).range(n).unknown(t)},c.apply(o,arguments)},[ga,fa]),b(G,function e(){var t,r=0,n=1,a=1,i=[.5],o=[0,1];function s(e){return null!=e&&e<=e?o[k(i,e,0,a)]:t}function l(){var e=-1;for(i=new Array(a);++e<a;)i[e]=((e+1)*n-(e-a)*r)/(a+1);return s}return s.domain=function(e){return arguments.length?([r,n]=e,r=+r,n=+n,l()):[r,n]},s.range=function(e){return arguments.length?(a=(o=Array.from(e)).length-1,l()):o.slice()},s.invertExtent=function(e){return(e=o.indexOf(e))<0?[NaN,NaN]:e<1?[r,i[0]]:a<=e?[i[a-1],n]:[i[e-1],i[e]]},s.unknown=function(e){return arguments.length&&(t=e),s},s.thresholds=function(){return i.slice()},s.copy=function(){return e().domain([r,n]).range(o).unknown(t)},c.apply(Jt(s),arguments)},ga),b(ha,function e(){var t,r=[.5],n=[0,1],a=1;function i(e){return null!=e&&e<=e?n[k(r,e,0,a)]:t}return i.domain=function(e){return arguments.length?(r=Array.from(e),a=Math.min(r.length,n.length-1),i):r.slice()},i.range=function(e){return arguments.length?(n=Array.from(e),a=Math.min(r.length,n.length-1),i):n.slice()},i.invertExtent=function(e){return e=n.indexOf(e),[r[e-1],r[e]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return e().domain(r).range(n).unknown(t)},c.apply(i,arguments)},ga),b(V,function e(){let r=[],t=[];function n(e){return null==e||e!=e?void 0:t[(k(r,e)-1)%t.length]}return n.domain=function(e){return arguments.length?(r=$n.call(e,l.toNumber),n):r.slice()},n.range=function(e){return arguments.length?(t=ri.call(e),n):t.slice()},n.tickFormat=function(e,t){return Yt(r[0],l.peek(r),null==e?10:e,t)},n.copy=function(){return e().domain(n.domain()).range(n.range())},n},[ma,ga]),b(\"ordinal\",X,ma),b(\"band\",Wn,ma),b(\"point\",function(){return function e(t){const r=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,t.copy=function(){return e(r())},t}(Wn().paddingInner(1))},ma);const ii=[\"clamp\",\"base\",\"constant\",\"exponent\"];function ra(e,t,r){return Ot(na(t||\"rgb\",r),e)}function na(e,t){e=Ct[\"interpolate\"+e.toLowerCase().split(\"-\").map(e=>e[0].toUpperCase()+e.slice(1)).join(\"\")];return null!=t&&e&&e.gamma?e.gamma(t):e}function E(e){for(var t=e.length/6|0,r=new Array(t),n=0;n<t;)r[n]=\"#\"+e.slice(6*n,6*++n);return r}St=E(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\"),vt=E(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\"),bt=E(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\"),_t=E(\"4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0\"),yt=E(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\"),n=E(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\"),i=E(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\"),a=E(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\"),ft=E(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\"),At=E(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");function aa(t){if(l.isArray(t))return t;var r=t.length/6|0,n=new Array(r);for(let e=0;e<r;)n[e]=\"#\"+t.slice(6*e,6*++e);return n}function ia(e,t){for(const r in e)oa(r,t(e[r]))}const oi={};function oa(e,t){return e=e&&e.toLowerCase(),1<arguments.length?(oi[e]=t,this):oi[e]}ia({accent:vt,category10:St,category20:\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\",category20b:\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\",category20c:\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\",dark2:bt,observable10:_t,paired:yt,pastel1:n,pastel2:i,set1:a,set2:ft,set3:At,tableau10:\"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac\",tableau20:\"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5\"},aa),ia({blues:\"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90\",greens:\"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429\",greys:\"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e\",oranges:\"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303\",purples:\"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c\",reds:\"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13\",blueGreen:\"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429\",bluePurple:\"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71\",greenBlue:\"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1\",orangeRed:\"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403\",purpleBlue:\"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281\",purpleBlueGreen:\"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353\",purpleRed:\"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a\",redPurple:\"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174\",yellowGreen:\"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034\",yellowOrangeBrown:\"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204\",yellowOrangeRed:\"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225\",blueOrange:\"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07\",brownBlueGreen:\"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147\",purpleGreen:\"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29\",purpleOrange:\"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07\",redBlue:\"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85\",redGrey:\"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434\",yellowGreenBlue:\"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185\",redYellowBlue:\"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695\",redYellowGreen:\"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837\",pinkYellowGreen:\"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419\",spectral:\"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2\",viridis:\"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725\",magma:\"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf\",inferno:\"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4\",plasma:\"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921\",cividis:\"00205100235800265d002961012b65042e670831690d346b11366c16396d1c3c6e213f6e26426e2c456e31476e374a6e3c4d6e42506e47536d4c566d51586e555b6e5a5e6e5e616e62646f66676f6a6a706e6d717270717573727976737c79747f7c75827f758682768985778c8877908b78938e789691789a94789e9778a19b78a59e77a9a177aea575b2a874b6ab73bbaf71c0b26fc5b66dc9b96acebd68d3c065d8c462ddc85fe2cb5ce7cf58ebd355f0d652f3da4ff7de4cfae249fce647\",rainbow:\"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa\",sinebow:\"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040\",turbo:\"23171b32204a3e2a71453493493eae4b49c54a53d7485ee44569ee4074f53c7ff8378af93295f72e9ff42ba9ef28b3e926bce125c5d925cdcf27d5c629dcbc2de3b232e9a738ee9d3ff39347f68950f9805afc7765fd6e70fe667cfd5e88fc5795fb51a1f84badf545b9f140c5ec3cd0e637dae034e4d931ecd12ef4c92bfac029ffb626ffad24ffa223ff9821ff8d1fff821dff771cfd6c1af76118f05616e84b14df4111d5380fcb2f0dc0260ab61f07ac1805a313029b0f00950c00910b00\",browns:\"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632\",tealBlues:\"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985\",teals:\"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667\",warmGreys:\"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e\",goldGreen:\"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36\",goldOrange:\"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26\",goldRed:\"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e\",lightGreyRed:\"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b\",lightGreyTeal:\"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc\",lightMulti:\"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c\",lightOrange:\"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b\",lightTealBlue:\"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988\",darkBlue:\"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff\",darkGold:\"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff\",darkGreen:\"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa\",darkMulti:\"3737371f5287197d8c29a86995ce3fffe800ffffff\",darkRed:\"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c\"},e=>ra(aa(e)));const si=\"symbol\",li=\"discrete\";const ci=e=>l.isArray(e)?e.map(e=>String(e)):String(e),ui=(e,t)=>e[1]-t[1],di=(e,t)=>t[1]-e[1];function sa(t,e,r){let n=t.range(),a=n[0],i=l.peek(n),o=ui;if(a>i&&(n=i,i=a,a=n,o=di),a=Math.floor(a),i=Math.ceil(i),e=e.map(e=>[e,t(e)]).filter(e=>a<=e[1]&&e[1]<=i).sort(o).map(e=>e[0]),0<r&&1<e.length){for(var s=[e[0],l.peek(e)];e.length>r&&3<=e.length;)e=e.filter((e,t)=>!(t%2));e.length<3&&(e=s)}return e}function la(e,t){return e.bins?sa(e,e.bins,t):e.ticks?e.ticks(t):e.domain()}function ca(e,t,r,n,a,i){var o=t.type;let s=ci;if(o===A||a===A)s=e.timeFormat(n);else if(o===O||a===O)s=e.utcFormat(n);else if(ea(o)){const l=e.formatFloat(n);if(i||t.bins)s=l;else{const c=ua(t,r,!1);s=e=>c(e)?l(e):\"\"}}else t.tickFormat?(a=t.domain(),s=e.formatSpan(a[0],a[a.length-1],r,n)):n&&(s=e.format(n));return s}function ua(e,t,r){const n=la(e,t),a=e.base(),i=Math.log(a),o=Math.max(1,a*t/n.length);e=e=>{let t=e/Math.pow(a,Math.round(Math.log(e)/i));return t*a<a-.5&&(t*=a),t<=o};return r?n.filter(e):e}const pi={[fa]:\"quantiles\",quantize:\"thresholds\",[ha]:\"domain\"},fi={[fa]:\"quantiles\",quantize:\"domain\"};function da(e,t){return e.bins?(r=e.bins,(n=r.slice(0,-1)).max=l.peek(r),n):e.type===S?ua(e,t,!0):pi[e.type]?(r=e[pi[e.type]](),(r=[-1/0].concat(r)).max=1/0,r):la(e,t);var r,n}const hi=e=>pi[e.type]||e.bins;function pa(e,t,r,n,a,i,o){e=fi[t.type]&&i!==A&&i!==O?function(e,t,r){var n=t[fi[t.type]](),a=n.length;let i=1<a?n[1]-n[0]:n[0],o;for(o=1;o<a;++o)i=Math.min(i,n[o]-n[o-1]);return e.formatSpan(0,i,30,r)}(e,t,a):ca(e,t,r,a,i,o);return(n===si&&hi(t)?mi:n===li?_i:yi)(e)}const mi=n=>(e,t,r)=>{t=gi(r[t+1],gi(r.max,1/0)),r=Ti(e,n),e=Ti(t,n);return r&&e?r+\" – \"+e:e?\"< \"+e:\"≥ \"+r},gi=(e,t)=>null!=e?e:t,_i=r=>(e,t)=>t?r(e):null,yi=t=>e=>t(e),Ti=(e,t)=>Number.isFinite(e)?t(e):null;e.Band=\"band\",e.BinOrdinal=V,e.DiscreteLegend=li,e.Diverging=H,e.GradientLegend=\"gradient\",e.Identity=\"identity\",e.Linear=U,e.Log=S,e.Ordinal=\"ordinal\",e.Point=\"point\",e.Pow=\"pow\",e.Quantile=fa,e.Quantize=G,e.Sequential=t,e.Sqrt=B,e.SymbolLegend=si,e.Symlog=j,e.Threshold=ha,e.Time=A,e.UTC=O,e.bandSpace=F,e.domainCaption=function(e,t,r){r=r||{};var n,a,i=Math.max(3,r.maxlen||7),o=(e=e,n=t,a=r.format,r=r.formatType,o=r||n.type,(a=l.isString(a)&&ta(o)?a.replace(/%a/g,\"%A\").replace(/%b/g,\"%B\"):a)||o!==A?a||o!==O?pa(e,n,5,null,a,r,!0):e.utcFormat(\"%A, %d %B %Y, %X UTC\"):e.timeFormat(\"%A, %d %B %Y, %X\"));return Xn(t.type)?(a=(n=da(t).slice(1).map(o)).length)+` boundar${1===a?\"y\":\"ies\"}: `+n.join(\", \"):Zn(t.type)?(e=(r=t.domain()).length)+` value${1===e?\"\":\"s\"}: `+(i<e?r.slice(0,i-2).map(o).join(\", \")+\", ending with \"+r.slice(-1).map(o):r.map(o).join(\", \")):`values from ${o((a=t.domain())[0])} to `+o(l.peek(a))},e.interpolate=na,e.interpolateColors=ra,e.interpolateRange=function(t,e){const r=e[0],n=l.peek(e)-r;return function(e){return t(r+e*n)}},e.isContinuous=function(e){return Qn(e,C)},e.isDiscrete=Zn,e.isDiscretizing=Xn,e.isInterpolating=function(e){return Qn(e,w)},e.isLogarithmic=ea,e.isQuantile=function(e){return Qn(e,fa)},e.isRegisteredScale=function(e){return e&&!0===e[ai]},e.isTemporal=ta,e.isValidScaleType=Jn,e.labelFormat=pa,e.labelFraction=function(e){var t=e.domain(),r=t.length-1;let n=+t[0],a=+l.peek(t),i=a-n;return e.type===ha&&(t=r?i/r:.1,n-=t,a+=t,i=a-n),e=>(e-n)/i},e.labelValues=da,e.quantizeInterpolator=function(t,r){var n=new Array(r),a=r+1;for(let e=0;e<r;)n[e]=t(++e/a);return n},e.registerScale=Kn,e.scale=b,e.scaleCopy=function(e){var t=e.type;return(e=e.copy()).type=t,e},e.scaleFraction=function(t,e,r){var n=r-e;let a,i,o;return n&&Number.isFinite(n)?(a=(i=t.type).indexOf(\"-\"),i=a<0?i:i.slice(a+1),o=b(i)().domain([e,r]).range([0,1]),ii.forEach(e=>t[e]?o[e](t[e]()):0),o):l.constant(.5)},e.scaleImplicit=Ea,e.scheme=oa,e.tickCount=function(e,t,r){let n;return l.isNumber(t)&&(e.bins&&(t=Math.max(t,e.bins.length)),null!=r)&&(t=Math.min(t,Math.floor(l.span(e.domain())/r||1)+1)),l.isObject(t)&&(n=t.step,t=t.interval),t=l.isString(t)&&(t=e.type===A?L.timeInterval(t):e.type==O?L.utcInterval(t):l.error(\"Only time and utc scales accept interval strings.\"),n)?t.every(n):t},e.tickFormat=ca,e.tickValues=la,e.validTicks=sa}}return _D.exports}function TD(){if(!mD){mD=1;var e=dD.exports;{var f=HP(),$=fD(),K=tD(),Y=yD();let o=0;function J(){o=0}const Da=\"p_\";function Q(e){return e&&e.gradient}function Z(e,t,r){var n=e.gradient;let a=e.id,i=\"radial\"===n?Da:\"\";return a||(a=e.id=\"gradient_\"+o++,\"radial\"===n?(e.x1=h(e.x1,.5),e.y1=h(e.y1,.5),e.r1=h(e.r1,0),e.x2=h(e.x2,.5),e.y2=h(e.y2,.5),e.r2=h(e.r2,.5),i=Da):(e.x1=h(e.x1,0),e.y1=h(e.y1,0),e.x2=h(e.x2,1),e.y2=h(e.y2,0))),t[a]=e,\"url(\"+(r||\"\")+\"#\"+i+a+\")\"}function h(e,t){return null!=e?e:t}function X(e,t){var r,n=[];return r={gradient:\"linear\",x1:e?e[0]:0,y1:e?e[1]:0,x2:t?t[0]:1,y2:t?t[1]:0,stops:n,stop:function(e,t){return n.push({offset:e,color:t}),r}}}function T(e){return function(){return e}}const xa=Math.abs,F=Math.atan2,U=Math.cos,La=Math.max,Fa=Math.min,B=Math.sin,j=Math.sqrt,H=1e-12,Ua=Math.PI,Ba=Ua/2,ja=2*Ua;function ee(e){return 1<e?0:e<-1?Ua:Math.acos(e)}function te(e){return 1<=e?Ba:e<=-1?-Ba:Math.asin(e)}const Ha=Math.PI,Ga=2*Ha,Va=Ga-1e-6;function re(r){this._+=r[0];for(let e=1,t=r.length;e<t;++e)this._+=arguments[e]+r[e]}function ne(e){var t=Math.floor(e);if(!(0<=t))throw new Error(\"invalid digits: \"+e);if(15<t)return re;const n=10**t;return function(r){this._+=r[0];for(let e=1,t=r.length;e<t;++e)this._+=Math.round(arguments[e]*n)/n+r[e]}}class qa{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._=\"\",this._append=null==e?re:ne(e)}moveTo(e,t){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,t){this._append`L${this._x1=+e},${this._y1=+t}`}quadraticCurveTo(e,t,r,n){this._append`Q${+e},${+t},${this._x1=+r},${this._y1=+n}`}bezierCurveTo(e,t,r,n,a,i){this._append`C${+e},${+t},${+r},${+n},${this._x1=+a},${this._y1=+i}`}arcTo(e,t,r,n,a){if(e=+e,t=+t,r=+r,n=+n,(a=+a)<0)throw new Error(\"negative radius: \"+a);var i,o,s=this._x1,l=this._y1,c=r-e,u=n-t,d=s-e,p=l-t,f=d*d+p*p;null===this._x1?this._append`M${this._x1=e},${this._y1=t}`:1e-6<f&&(1e-6<Math.abs(p*c-u*d)&&a?(o=c*c+u*u,n=(r=r-s)*r+(s=n-l)*s,l=Math.sqrt(o),i=Math.sqrt(f),f=(o=a*Math.tan((Ha-Math.acos((o+f-n)/(2*l*i)))/2))/i,n=o/l,1e-6<Math.abs(f-1)&&this._append`L${e+f*d},${t+f*p}`,this._append`A${a},${a},0,0,${+(d*s<p*r)},${this._x1=e+n*c},${this._y1=t+n*u}`):this._append`L${this._x1=e},${this._y1=t}`)}arc(e,t,r,n,a,i){if(e=+e,t=+t,i=!!i,(r=+r)<0)throw new Error(\"negative radius: \"+r);let o=r*Math.cos(n),s=r*Math.sin(n),l=e+o,c=t+s,u=1^i,d=i?n-a:a-n;null===this._x1?this._append`M${l},${c}`:(1e-6<Math.abs(this._x1-l)||1e-6<Math.abs(this._y1-c))&&this._append`L${l},${c}`,r&&((d=d<0?d%Ga+Ga:d)>Va?this._append`A${r},${r},0,1,${u},${e-o},${t-s}A${r},${r},0,1,${u},${this._x1=l},${this._y1=c}`:1e-6<d&&this._append`A${r},${r},0,${+(d>=Ha)},${u},${this._x1=e+r*Math.cos(a)},${this._y1=t+r*Math.sin(a)}`)}rect(e,t,r,n){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function ae(){return new qa}function ie(r){let n=3;return r.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{var t=Math.floor(e);if(!(0<=t))throw new RangeError(\"invalid digits: \"+e);n=t}return r},()=>new qa(n)}function oe(e){return e.innerRadius}function se(e){return e.outerRadius}function le(e){return e.startAngle}function ce(e){return e.endAngle}function ue(e){return e&&e.padAngle}function de(e,t,r,n,a,i,o,s){var r=r-e,n=n-t,o=o-a,s=s-i,l=s*r-o*n;if(!(l*l<H))return[e+(l=(o*(t-i)-s*(e-a))/l)*r,t+l*n]}function pe(e,t,r,n,a,i,o){var s=e-r,l=t-n,o=(o?i:-i)/j(s*s+l*l),l=o*l,o=-o*s,s=e+l,e=t+o,t=r+l,r=n+o,n=(s+t)/2,c=(e+r)/2,u=t-s,d=r-e,p=u*u+d*d,i=a-i,s=s*r-t*e,r=(d<0?-1:1)*j(La(0,i*i*p-s*s)),t=(s*d-u*r)/p,e=(-s*u-d*r)/p,f=(s*d+u*r)/p,s=(-s*u+d*r)/p,u=t-n,d=e-c,r=f-n,p=s-c;return r*r+p*p<u*u+d*d&&(t=f,e=s),{cx:t,cy:e,x01:-l,y01:-o,x11:t*(a/i-1),y11:e*(a/i-1)}}function fe(){var k=oe,I=se,R=T(0),N=null,M=le,P=ce,D=ue,x=null,L=ie(t);function t(){var e,t,r,n,a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b,E=+k.apply(this,arguments),S=+I.apply(this,arguments),A=M.apply(this,arguments)-Ba,O=P.apply(this,arguments)-Ba,C=xa(O-A),w=A<O;if(x=x||(e=L()),S<E&&(t=S,S=E,E=t),S>H?C>ja-H?(x.moveTo(S*U(A),S*B(A)),x.arc(0,0,S,A,O,!w),E>H&&(x.moveTo(E*U(O),E*B(O)),x.arc(0,0,E,O,A,w))):(n=t=A,a=r=O,o=i=C,p=(u=D.apply(this,arguments)/2)>H&&(N?+N.apply(this,arguments):j(E*E+S*S)),b=v=s=Fa(xa(S-E)/2,+R.apply(this,arguments)),p>H&&(d=te(p/E*B(u)),p=te(p/S*B(u)),(i-=2*d)>H?(n+=d*=w?1:-1,a-=d):(i=0,n=a=(A+O)/2),(o-=2*p)>H?(t+=p*=w?1:-1,r-=p):(o=0,t=r=(A+O)/2)),u=S*U(t),d=S*B(t),p=E*U(a),A=E*B(a),s>H&&(f=S*U(r),h=S*B(r),m=E*U(n),g=E*B(n),C<Ua)&&((O=de(u,d,m,g,f,h,p,A))?(C=u-O[0],T=d-O[1],_=f-O[0],y=h-O[1],C=1/B(ee((C*_+T*y)/(j(C*C+T*T)*j(_*_+y*y)))/2),T=j(O[0]*O[0]+O[1]*O[1]),v=Fa(s,(E-T)/(C-1)),b=Fa(s,(S-T)/(1+C))):v=b=0),o>H?b>H?(l=pe(m,g,u,d,S,b,w),c=pe(f,h,p,A,S,b,w),x.moveTo(l.cx+l.x01,l.cy+l.y01),b<s?x.arc(l.cx,l.cy,b,F(l.y01,l.x01),F(c.y01,c.x01),!w):(x.arc(l.cx,l.cy,b,F(l.y01,l.x01),F(l.y11,l.x11),!w),x.arc(0,0,S,F(l.cy+l.y11,l.cx+l.x11),F(c.cy+c.y11,c.cx+c.x11),!w),x.arc(c.cx,c.cy,b,F(c.y11,c.x11),F(c.y01,c.x01),!w))):(x.moveTo(u,d),x.arc(0,0,S,t,r,!w)):x.moveTo(u,d),E>H&&i>H?v>H?(l=pe(p,A,f,h,E,-v,w),c=pe(u,d,m,g,E,-v,w),x.lineTo(l.cx+l.x01,l.cy+l.y01),v<s?x.arc(l.cx,l.cy,v,F(l.y01,l.x01),F(c.y01,c.x01),!w):(x.arc(l.cx,l.cy,v,F(l.y01,l.x01),F(l.y11,l.x11),!w),x.arc(0,0,E,F(l.cy+l.y11,l.cx+l.x11),F(c.cy+c.y11,c.cx+c.x11),w),x.arc(c.cx,c.cy,v,F(c.y11,c.x11),F(c.y01,c.x01),!w))):x.arc(0,0,E,a,n,w):x.lineTo(p,A)):x.moveTo(0,0),x.closePath(),e)return x=null,e+\"\"||null}return t.centroid=function(){var e=(+k.apply(this,arguments)+ +I.apply(this,arguments))/2,t=(+M.apply(this,arguments)+ +P.apply(this,arguments))/2-Ua/2;return[U(t)*e,B(t)*e]},t.innerRadius=function(e){return arguments.length?(k=\"function\"==typeof e?e:T(+e),t):k},t.outerRadius=function(e){return arguments.length?(I=\"function\"==typeof e?e:T(+e),t):I},t.cornerRadius=function(e){return arguments.length?(R=\"function\"==typeof e?e:T(+e),t):R},t.padRadius=function(e){return arguments.length?(N=null==e?null:\"function\"==typeof e?e:T(+e),t):N},t.startAngle=function(e){return arguments.length?(M=\"function\"==typeof e?e:T(+e),t):M},t.endAngle=function(e){return arguments.length?(P=\"function\"==typeof e?e:T(+e),t):P},t.padAngle=function(e){return arguments.length?(D=\"function\"==typeof e?e:T(+e),t):D},t.context=function(e){return arguments.length?(x=null==e?null:e,t):x},t}function he(e){return\"object\"==typeof e&&\"length\"in e?e:Array.from(e)}function me(e){this._context=e}function ge(e){return new me(e)}function _e(e){return e[0]}function ye(e){return e[1]}function Te(o,s){var l=T(!0),c=null,u=ge,d=null,p=ie(t);function t(e){var t,r,n,a=(e=he(e)).length,i=!1;for(null==c&&(d=u(n=p())),t=0;t<=a;++t)!(t<a&&l(r=e[t],t,e))===i&&((i=!i)?d.lineStart():d.lineEnd()),i&&d.point(+o(r,t,e),+s(r,t,e));if(n)return d=null,n+\"\"||null}return o=\"function\"==typeof o?o:void 0===o?_e:T(o),s=\"function\"==typeof s?s:void 0===s?ye:T(s),t.x=function(e){return arguments.length?(o=\"function\"==typeof e?e:T(+e),t):o},t.y=function(e){return arguments.length?(s=\"function\"==typeof e?e:T(+e),t):s},t.defined=function(e){return arguments.length?(l=\"function\"==typeof e?e:T(!!e),t):l},t.curve=function(e){return arguments.length?(u=e,null!=c&&(d=u(c)),t):u},t.context=function(e){return arguments.length?(null==e?c=d=null:d=u(c=e),t):c},t}function ve(u,d,p){var f=null,h=T(!0),m=null,g=ge,_=null,y=ie(t);function t(e){var t,r,n,a,i,o=(e=he(e)).length,s=!1,l=new Array(o),c=new Array(o);for(null==m&&(_=g(i=y())),t=0;t<=o;++t){if(!(t<o&&h(a=e[t],t,e))===s)if(s=!s)r=t,_.areaStart(),_.lineStart();else{for(_.lineEnd(),_.lineStart(),n=t-1;r<=n;--n)_.point(l[n],c[n]);_.lineEnd(),_.areaEnd()}s&&(l[t]=+u(a,t,e),c[t]=+d(a,t,e),_.point(f?+f(a,t,e):l[t],p?+p(a,t,e):c[t]))}if(i)return _=null,i+\"\"||null}function e(){return Te().defined(h).curve(g).context(m)}return u=\"function\"==typeof u?u:void 0===u?_e:T(+u),d=\"function\"==typeof d?d:T(void 0===d?0:+d),p=\"function\"==typeof p?p:void 0===p?ye:T(+p),t.x=function(e){return arguments.length?(u=\"function\"==typeof e?e:T(+e),f=null,t):u},t.x0=function(e){return arguments.length?(u=\"function\"==typeof e?e:T(+e),t):u},t.x1=function(e){return arguments.length?(f=null==e?null:\"function\"==typeof e?e:T(+e),t):f},t.y=function(e){return arguments.length?(d=\"function\"==typeof e?e:T(+e),p=null,t):d},t.y0=function(e){return arguments.length?(d=\"function\"==typeof e?e:T(+e),t):d},t.y1=function(e){return arguments.length?(p=null==e?null:\"function\"==typeof e?e:T(+e),t):p},t.lineX0=t.lineY0=function(){return e().x(u).y(d)},t.lineY1=function(){return e().x(u).y(p)},t.lineX1=function(){return e().x(f).y(d)},t.defined=function(e){return arguments.length?(h=\"function\"==typeof e?e:T(!!e),t):h},t.curve=function(e){return arguments.length?(g=e,null!=m&&(_=g(m)),t):g},t.context=function(e){return arguments.length?(null==e?m=_=null:_=g(m=e),t):m},t}ae.prototype=qa.prototype,me.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var be={draw(e,t){t=j(t/Ua);e.moveTo(t,0),e.arc(0,0,t,0,ja)}};function Ee(t,r){let n=null,a=ie(i);function i(){let e;if(n=n||(e=a()),t.apply(this,arguments).draw(n,+r.apply(this,arguments)),e)return n=null,e+\"\"||null}return t=\"function\"==typeof t?t:T(t||be),r=\"function\"==typeof r?r:T(void 0===r?64:+r),i.type=function(e){return arguments.length?(t=\"function\"==typeof e?e:T(e),i):t},i.size=function(e){return arguments.length?(r=\"function\"==typeof e?e:T(+e),i):r},i.context=function(e){return arguments.length?(n=null==e?null:e,i):n},i}function t(){}function Se(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Ae(e){this._context=e}function Oe(e){return new Ae(e)}function Ce(e){this._context=e}function we(e){return new Ce(e)}function ke(e){this._context=e}function Ie(e){return new ke(e)}function Re(e,t){this._basis=new Ae(e),this._beta=t}Ae.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Se(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Se(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},Ce.prototype={areaStart:t,areaEnd:t,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Se(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},ke.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Se(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},Re.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,r=e.length-1;if(0<r)for(var n,a=e[0],i=t[0],o=e[r]-a,s=t[r]-i,l=-1;++l<=r;)this._basis.point(this._beta*e[l]+(1-this._beta)*(a+(n=l/r)*o),this._beta*t[l]+(1-this._beta)*(i+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};var Ne=function t(r){function e(e){return 1===r?new Ae(e):new Re(e,r)}return e.beta=function(e){return t(+e)},e}(.85);function Me(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Pe(e,t){this._context=e,this._k=(1-t)/6}Pe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Me(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Me(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var De=function t(r){function e(e){return new Pe(e,r)}return e.tension=function(e){return t(+e)},e}(0);function xe(e,t){this._context=e,this._k=(1-t)/6}xe.prototype={areaStart:t,areaEnd:t,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Me(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Le=function t(r){function e(e){return new xe(e,r)}return e.tension=function(e){return t(+e)},e}(0);function Fe(e,t){this._context=e,this._k=(1-t)/6}Fe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Me(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ue=function t(r){function e(e){return new Fe(e,r)}return e.tension=function(e){return t(+e)},e}(0);function Be(e,t,r){var n,a,i=e._x1,o=e._y1,s=e._x2,l=e._y2;e._l01_a>H&&(n=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,a=3*e._l01_a*(e._l01_a+e._l12_a),i=(i*n-e._x0*e._l12_2a+e._x2*e._l01_2a)/a,o=(o*n-e._y0*e._l12_2a+e._y2*e._l01_2a)/a),e._l23_a>H&&(n=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,a=3*e._l23_a*(e._l23_a+e._l12_a),s=(s*n+e._x1*e._l23_2a-t*e._l12_2a)/a,l=(l*n+e._y1*e._l23_2a-r*e._l12_2a)/a),e._context.bezierCurveTo(i,o,s,l,e._x2,e._y2)}function je(e,t){this._context=e,this._alpha=t}je.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r,n;switch(e=+e,t=+t,this._point&&(r=this._x2-e,n=this._y2-t,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:Be(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var He=function t(r){function e(e){return r?new je(e,r):new Pe(e,0)}return e.alpha=function(e){return t(+e)},e}(.5);function Ge(e,t){this._context=e,this._alpha=t}Ge.prototype={areaStart:t,areaEnd:t,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){var r,n;switch(e=+e,t=+t,this._point&&(r=this._x2-e,n=this._y2-t,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Be(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var Ve=function t(r){function e(e){return r?new Ge(e,r):new xe(e,0)}return e.alpha=function(e){return t(+e)},e}(.5);function qe(e,t){this._context=e,this._alpha=t}qe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r,n;switch(e=+e,t=+t,this._point&&(r=this._x2-e,n=this._y2-t,this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))),this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Be(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};var ze=function t(r){function e(e){return r?new qe(e,r):new Fe(e,0)}return e.alpha=function(e){return t(+e)},e}(.5);function We(e){this._context=e}function $e(e){return new We(e)}function Ke(e){return e<0?-1:1}function Ye(e,t,r){var n=e._x1-e._x0,t=t-e._x1,a=(e._y1-e._y0)/(n||t<0&&-0),r=(r-e._y1)/(t||n<0&&-0),e=(a*t+r*n)/(n+t);return(Ke(a)+Ke(r))*Math.min(Math.abs(a),Math.abs(r),.5*Math.abs(e))||0}function Je(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Qe(e,t,r){var n=e._x0,a=e._y0,i=e._x1,o=e._y1,s=(i-n)/3;e._context.bezierCurveTo(n+s,a+s*t,i-s,o-s*r,i,o)}function Ze(e){this._context=e}function Xe(e){this._context=new et(e)}function et(e){this._context=e}function tt(e){return new Ze(e)}function rt(e){return new Xe(e)}function nt(e){this._context=e}function at(e){var t,r,n=e.length-1,a=new Array(n),i=new Array(n),o=new Array(n);for(i[a[0]=0]=2,o[0]=e[0]+2*e[1],t=1;t<n-1;++t)a[t]=1,i[t]=4,o[t]=4*e[t]+2*e[t+1];for(a[n-1]=2,i[n-1]=7,o[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)r=a[t]/i[t-1],i[t]-=r,o[t]-=r*o[t-1];for(a[n-1]=o[n-1]/i[n-1],t=n-2;0<=t;--t)a[t]=(o[t]-a[t+1])/i[t];for(i[n-1]=(e[n]+a[n-1])/2,t=0;t<n-1;++t)i[t]=2*e[t+1]-a[t+1];return[a,i]}function it(e){return new nt(e)}function ot(e,t){this._context=e,this._t=t}function st(e){return new ot(e,.5)}function lt(e){return new ot(e,0)}function ct(e){return new ot(e,1)}We.prototype={areaStart:t,areaEnd:t,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},Ze.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Qe(this,this._t0,Je(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Qe(this,Je(this,r=Ye(this,e,t)),r);break;default:Qe(this,this._t0,r=Ye(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}},(Xe.prototype=Object.create(Ze.prototype)).point=function(e,t){Ze.prototype.point.call(this,t,e)},et.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,a,i){this._context.bezierCurveTo(t,e,n,r,i,a)}},nt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===r)this._context.lineTo(e[1],t[1]);else for(var n=at(e),a=at(t),i=0,o=1;o<r;++i,++o)this._context.bezierCurveTo(n[0][i],a[0][i],n[1][i],a[1][i],e[o],t[o]);(this._line||0!==this._line&&1===r)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}},ot.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),0<=this._line&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:var r;this._t<=0?(this._context.lineTo(this._x,t),this._context.lineTo(e,t)):(r=this._x*(1-this._t)+e*this._t,this._context.lineTo(r,this._y),this._context.lineTo(r,t))}this._x=e,this._y=t}};const za={basis:{curve:Oe},\"basis-closed\":{curve:we},\"basis-open\":{curve:Ie},bundle:{curve:Ne,tension:\"beta\",value:.85},cardinal:{curve:De,tension:\"tension\",value:0},\"cardinal-open\":{curve:Ue,tension:\"tension\",value:0},\"cardinal-closed\":{curve:Le,tension:\"tension\",value:0},\"catmull-rom\":{curve:He,tension:\"alpha\",value:.5},\"catmull-rom-closed\":{curve:Ve,tension:\"alpha\",value:.5},\"catmull-rom-open\":{curve:ze,tension:\"alpha\",value:.5},linear:{curve:ge},\"linear-closed\":{curve:$e},monotone:{horizontal:rt,vertical:tt},natural:{curve:it},step:{curve:st},\"step-after\":{curve:ct},\"step-before\":{curve:lt}};function ut(e,t,r){var e=f.hasOwnProperty(za,e)&&za[e],n=null;return n=e&&(n=e.curve||e[t||\"vertical\"],e.tension)&&null!=r?n[e.tension](r):n}const Wa={m:2,l:2,h:1,v:1,z:0,c:6,s:4,q:4,t:2,a:7},$a=/[mlhvzcsqta]([^mlhvzcsqta]+|$)/gi,Ka=/^[+-]?(([0-9]*\\.[0-9]+)|([0-9]+\\.)|([0-9]+))([eE][+-]?[0-9]+)?/,Ya=/^((\\s+,?\\s*)|(,\\s*))/,Ja=/^[01]/;function dt(e){const o=[];return(e.match($a)||[]).forEach(e=>{let t=e[0];var r=t.toLowerCase(),n=Wa[r],a=pt(r,n,e.slice(1).trim()),i=a.length;if(i<n||i&&i%n!=0)throw Error(\"Invalid SVG path, incorrect parameter count\");if(o.push([t,...a.slice(0,n)]),i!==n){\"m\"===r&&(t=\"M\"===t?\"L\":\"l\");for(let e=n;e<i;e+=n)o.push([t,...a.slice(e,e+n)])}}),o}function pt(r,n,a){var i=[];for(let t=0;n&&t<a.length;)for(let e=0;e<n;++e){var o=\"a\"!==r||3!==e&&4!==e?Ka:Ja,o=a.slice(t).match(o);if(null===o)throw Error(\"Invalid SVG path, incorrect parameter type\");t+=o[0].length,i.push(+o[0]);o=a.slice(t).match(Ya);null!==o&&(t+=o[0].length)}return i}const N=Math.PI/180,Qa=1e-14,M=Math.PI/2,P=2*Math.PI,Za=Math.sqrt(3)/2;var ft={},ht={},mt=[].join;function gt(e,t,r,n,a,i,o,s,l){var c=mt.call(arguments);if(ft[c])return ft[c];var o=o*N,u=Math.sin(o),d=Math.cos(o),o=d*(s-e)*.5+u*(l-t)*.5,p=d*(l-t)*.5-u*(s-e)*.5,o=o*o/((r=Math.abs(r))*r)+p*p/((n=Math.abs(n))*n),p=(1<o&&(r*=o=Math.sqrt(o),n*=o),d/r),o=u/r,f=-u/n,h=d/n,m=p*s+o*l,s=f*s+h*l,l=p*e+o*t,p=f*e+h*t;let g=1/((l-m)*(l-m)+(p-s)*(p-s))-.25,_=(g<0&&(g=0),Math.sqrt(g));var y=.5*(m+l)-(_=i==a?-_:_)*(p-s),T=.5*(s+p)+_*(l-m),v=Math.atan2(s-T,m-y);let b=Math.atan2(p-T,l-y)-v;b<0&&1===i?b+=P:0<b&&0===i&&(b-=P);var E=Math.ceil(Math.abs(b/(M+.001))),S=[];for(let e=0;e<E;++e){var A=v+e*b/E,O=v+(e+1)*b/E;S[e]=[y,T,A,O,r,n,u,d]}return ft[c]=S}function _t(e){var t,r,n,a,i,o,s,l,c,u,d,p=mt.call(e);return ht[p]||(t=e[0],r=e[1],c=e[2],d=e[3],o=e[4],u=e[5],i=e[6],n=(e=e[7])*o,a=-i*u,i=i*o,o=e*u,e=Math.cos(c),u=Math.sin(c),s=Math.cos(d),l=Math.sin(d),d=.5*(d-c),c=8/3*(c=Math.sin(.5*d))*c/Math.sin(d),ht[p]=[n*(d=t+e-c*u)+a*(p=r+u+c*e),i*d+o*p,n*(e=(u=t+s)+c*l)+a*(p=(d=r+l)-c*s),i*e+o*p,n*u+a*d,i*u+o*d])}const D=[\"l\",0,0,0,0,0,0,0];function yt(e,t,r){var n=D[0]=e[0];if(\"a\"===n||\"A\"===n)D[1]=t*e[1],D[2]=r*e[2],D[3]=e[3],D[4]=e[4],D[5]=e[5],D[6]=t*e[6],D[7]=r*e[7];else if(\"h\"===n||\"H\"===n)D[1]=t*e[1];else if(\"v\"===n||\"V\"===n)D[1]=r*e[1];else for(var a=1,i=e.length;a<i;++a)D[a]=(a%2==1?t:r)*e[a];return D}function Tt(e,t,r,n,a,i){var o,s,l,c,u,d=null,p=0,f=0,h=0,m=0,g=0,_=0;null==r&&(r=0),null==n&&(n=0),null==a&&(a=1),null==i&&(i=a),e.beginPath&&e.beginPath();for(var y=0,T=t.length;y<T;++y){switch(o=t[y],(o=1===a&&1===i?o:yt(o,a,i))[0]){case\"l\":p+=o[1],f+=o[2],e.lineTo(p+r,f+n);break;case\"L\":p=o[1],f=o[2],e.lineTo(p+r,f+n);break;case\"h\":p+=o[1],e.lineTo(p+r,f+n);break;case\"H\":p=o[1],e.lineTo(p+r,f+n);break;case\"v\":f+=o[1],e.lineTo(p+r,f+n);break;case\"V\":f=o[1],e.lineTo(p+r,f+n);break;case\"m\":g=p+=o[1],_=f+=o[2],e.moveTo(p+r,f+n);break;case\"M\":g=p=o[1],_=f=o[2],e.moveTo(p+r,f+n);break;case\"c\":s=p+o[5],l=f+o[6],h=p+o[3],m=f+o[4],e.bezierCurveTo(p+o[1]+r,f+o[2]+n,h+r,m+n,s+r,l+n),p=s,f=l;break;case\"C\":p=o[5],f=o[6],h=o[3],m=o[4],e.bezierCurveTo(o[1]+r,o[2]+n,h+r,m+n,p+r,f+n);break;case\"s\":s=p+o[3],l=f+o[4],e.bezierCurveTo((h=2*p-h)+r,(m=2*f-m)+n,p+o[1]+r,f+o[2]+n,s+r,l+n),h=p+o[1],m=f+o[2],p=s,f=l;break;case\"S\":s=o[3],l=o[4],e.bezierCurveTo((h=2*p-h)+r,(m=2*f-m)+n,o[1]+r,o[2]+n,s+r,l+n),p=s,f=l,h=o[1],m=o[2];break;case\"q\":s=p+o[3],l=f+o[4],h=p+o[1],m=f+o[2],e.quadraticCurveTo(h+r,m+n,s+r,l+n),p=s,f=l;break;case\"Q\":s=o[3],l=o[4],e.quadraticCurveTo(o[1]+r,o[2]+n,s+r,l+n),p=s,f=l,h=o[1],m=o[2];break;case\"t\":s=p+o[1],l=f+o[2],null===d[0].match(/[QqTt]/)?(h=p,m=f):\"t\"===d[0]?(h=2*p-c,m=2*f-u):\"q\"===d[0]&&(h=2*p-h,m=2*f-m),c=h,u=m,e.quadraticCurveTo(h+r,m+n,s+r,l+n),f=l,h=(p=s)+o[1],m=f+o[2];break;case\"T\":s=o[1],l=o[2],e.quadraticCurveTo((h=2*p-h)+r,(m=2*f-m)+n,s+r,l+n),p=s,f=l;break;case\"a\":vt(e,p+r,f+n,[o[1],o[2],o[3],o[4],o[5],o[6]+p+r,o[7]+f+n]),p+=o[6],f+=o[7];break;case\"A\":vt(e,p+r,f+n,[o[1],o[2],o[3],o[4],o[5],o[6]+r,o[7]+n]),p=o[6],f=o[7];break;case\"z\":case\"Z\":p=g,f=_,e.closePath()}d=o}}function vt(t,e,r,n){var a=gt(n[5],n[6],n[0],n[1],n[3],n[4],n[2],e,r);for(let e=0;e<a.length;++e){var i=_t(a[e]);t.bezierCurveTo(i[0],i[1],i[2],i[3],i[4],i[5])}}const Xa=.5773502691896257,ei={circle:{draw:function(e,t){t=Math.sqrt(t)/2;e.moveTo(t,0),e.arc(0,0,t,0,P)}},cross:{draw:function(e,t){var t=Math.sqrt(t)/2,r=t/2.5;e.moveTo(-t,-r),e.lineTo(-t,r),e.lineTo(-r,r),e.lineTo(-r,t),e.lineTo(r,t),e.lineTo(r,r),e.lineTo(t,r),e.lineTo(t,-r),e.lineTo(r,-r),e.lineTo(r,-t),e.lineTo(-r,-t),e.lineTo(-r,-r),e.closePath()}},diamond:{draw:function(e,t){t=Math.sqrt(t)/2;e.moveTo(-t,0),e.lineTo(0,-t),e.lineTo(t,0),e.lineTo(0,t),e.closePath()}},square:{draw:function(e,t){var t=Math.sqrt(t),r=-t/2;e.rect(r,r,t,t)}},arrow:{draw:function(e,t){var t=Math.sqrt(t)/2,r=t/7,n=t/2.5,a=t/8;e.moveTo(-r,t),e.lineTo(r,t),e.lineTo(r,-a),e.lineTo(n,-a),e.lineTo(0,-t),e.lineTo(-n,-a),e.lineTo(-r,-a),e.closePath()}},wedge:{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t,n=r-t*Xa,t=t/4;e.moveTo(0,-r-n),e.lineTo(-t,r-n),e.lineTo(t,r-n),e.closePath()}},triangle:{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t,n=r-t*Xa;e.moveTo(0,-r-n),e.lineTo(-t,r-n),e.lineTo(t,r-n),e.closePath()}},\"triangle-up\":{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t;e.moveTo(0,-r),e.lineTo(-t,r),e.lineTo(t,r),e.closePath()}},\"triangle-down\":{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t;e.moveTo(0,r),e.lineTo(-t,-r),e.lineTo(t,-r),e.closePath()}},\"triangle-right\":{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t;e.moveTo(r,0),e.lineTo(-r,-t),e.lineTo(-r,t),e.closePath()}},\"triangle-left\":{draw:function(e,t){var t=Math.sqrt(t)/2,r=Za*t;e.moveTo(-r,0),e.lineTo(r,-t),e.lineTo(r,t),e.closePath()}},stroke:{draw:function(e,t){t=Math.sqrt(t)/2;e.moveTo(-t,0),e.lineTo(t,0)}}};function bt(e){return f.hasOwnProperty(ei,e)?ei[e]:St(e)}var Et={};function St(e){if(!f.hasOwnProperty(Et,e)){const r=dt(e);Et[e]={draw:function(e,t){Tt(e,r,0,0,Math.sqrt(t)/2)}}}return Et[e]}const x=.448084975506;function At(e){return e.x}function Ot(e){return e.y}function Ct(e){return e.width}function wt(e){return e.height}function v(e){return\"function\"==typeof e?e:()=>+e}function kt(e,t,r){return Math.max(t,Math.min(e,r))}function It(){var u=At,d=Ot,p=Ct,f=wt,h=v(0),m=h,g=h,_=h,y=null;function a(e,t,r){var n,t=null!=t?t:+u.call(this,e),r=null!=r?r:+d.call(this,e),a=+p.call(this,e),i=+f.call(this,e),o=Math.min(a,i)/2,s=kt(+h.call(this,e),0,o),l=kt(+m.call(this,e),0,o),c=kt(+g.call(this,e),0,o),e=kt(+_.call(this,e),0,o);if(y=y||(n=ae()),s<=0&&l<=0&&c<=0&&e<=0?y.rect(t,r,a,i):(o=t+a,a=r+i,y.moveTo(t+s,r),y.lineTo(o-l,r),y.bezierCurveTo(o-x*l,r,o,r+x*l,o,r+l),y.lineTo(o,a-e),y.bezierCurveTo(o,a-x*e,o-x*e,a,o-e,a),y.lineTo(t+c,a),y.bezierCurveTo(t+x*c,a,t,a-x*c,t,a-c),y.lineTo(t,r+s),y.bezierCurveTo(t,r+x*s,t+x*s,r,t+s,r),y.closePath()),n)return y=null,n+\"\"||null}return a.x=function(e){return arguments.length?(u=v(e),a):u},a.y=function(e){return arguments.length?(d=v(e),a):d},a.width=function(e){return arguments.length?(p=v(e),a):p},a.height=function(e){return arguments.length?(f=v(e),a):f},a.cornerRadius=function(e,t,r,n){return arguments.length?(h=v(e),m=null!=t?v(t):h,_=null!=r?v(r):h,g=null!=n?v(n):m,a):h},a.context=function(e){return arguments.length?(y=null==e?null:e,a):y},a}function Rt(){var h,m,g,_,y,T,v,b,E=null;function t(e){var t,r,n,a,i,o,s,l,c,u,d,p=e.length,f=!1;for(null==E&&(E=n=ae()),t=0;t<=p;++t)!(t<p&&_(r=e[t],t,e))===f&&(f=!f)&&(y=0),f&&(a=+h(r,t,e),i=+m(r,t,e),o=+g(r,t,e),d=u=c=l=s=void 0,o/=2,y?(l=a-T,(s=v-i)||l?(c=(s/=u=Math.hypot(s,l))*b,u=(l/=u)*b,d=Math.atan2(l,s),E.moveTo(T-c,v-u),E.lineTo(a-s*o,i-l*o),E.arc(a,i,o,d-Math.PI,d),E.lineTo(T+c,v+u),E.arc(T,v,b,d,d+Math.PI)):E.arc(a,i,o,0,P),E.closePath()):y=1,T=a,v=i,b=o);if(n)return E=null,n+\"\"||null}return t.x=function(e){return arguments.length?(h=e,t):h},t.y=function(e){return arguments.length?(m=e,t):m},t.size=function(e){return arguments.length?(g=e,t):g},t.defined=function(e){return arguments.length?(_=e,t):_},t.context=function(e){return arguments.length?(E=null==e?null:e,t):E},t}function Nt(e,t){return null!=e?e:t}const ti=e=>e.x||0,ri=e=>e.y||0,ni=e=>e.width||0,ai=e=>e.height||0,ii=e=>(e.x||0)+(e.width||0),oi=e=>(e.y||0)+(e.height||0),si=e=>e.startAngle||0,li=e=>e.endAngle||0,ci=e=>e.padAngle||0,ui=e=>e.innerRadius||0,di=e=>e.outerRadius||0,pi=e=>e.cornerRadius||0,fi=e=>Nt(e.cornerRadiusTopLeft,e.cornerRadius)||0,hi=e=>Nt(e.cornerRadiusTopRight,e.cornerRadius)||0,mi=e=>Nt(e.cornerRadiusBottomRight,e.cornerRadius)||0,gi=e=>Nt(e.cornerRadiusBottomLeft,e.cornerRadius)||0,_i=e=>Nt(e.size,64),yi=e=>e.size||1,Ti=e=>!(!1===e.defined),vi=e=>bt(e.shape||\"circle\"),bi=fe().startAngle(si).endAngle(li).padAngle(ci).innerRadius(ui).outerRadius(di).cornerRadius(pi),Ei=ve().x(ti).y1(ri).y0(oi).defined(Ti),Si=ve().y(ri).x1(ti).x0(ii).defined(Ti),Ai=Te().x(ti).y(ri).defined(Ti),Oi=It().x(ti).y(ri).width(ni).height(ai).cornerRadius(fi,hi,mi,gi),Ci=Ee().type(vi).size(_i),wi=Rt().x(ti).y(ri).defined(Ti).size(yi);function Mt(e){return e.cornerRadius||e.cornerRadiusTopLeft||e.cornerRadiusTopRight||e.cornerRadiusBottomRight||e.cornerRadiusBottomLeft}function Pt(e,t){return bi.context(e)(t)}function Dt(e,t){var r=t[0],n=r.interpolate||\"linear\";return(\"horizontal\"===r.orient?Si:Ei).curve(ut(n,r.orient,r.tension)).context(e)(t)}function xt(e,t){var r=t[0],n=r.interpolate||\"linear\";return Ai.curve(ut(n,r.orient,r.tension)).context(e)(t)}function Lt(e,t,r,n){return Oi.context(e)(t,r,n)}function Ft(e,t){return(t.mark.shape||t.shape).context(e)(t)}function Ut(e,t){return Ci.context(e)(t)}function Bt(e,t){return wi.context(e)(t)}var jt=1;function Ht(){jt=1}function Gt(e,t,r){var n=t.clip,e=e._defs,t=t.clip_id||(t.clip_id=\"clip\"+jt++),e=e.clipping[t]||(e.clipping[t]={id:t});return f.isFunction(n)?e.path=n(null):Mt(r)?e.path=Lt(null,r,0,0):(e.width=r.width||0,e.height=r.height||0),\"url(#\"+t+\")\"}function m(e){this.clear(),e&&this.union(e)}function Vt(e){this.mark=e,this.bounds=this.bounds||new m}function qt(e){Vt.call(this,e),this.items=this.items||[]}m.prototype={clone(){return new m(this)},clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},equals(e){return this.x1===e.x1&&this.y1===e.y1&&this.x2===e.x2&&this.y2===e.y2},set(e,t,r,n){return r<e?(this.x2=e,this.x1=r):(this.x1=e,this.x2=r),n<t?(this.y2=t,this.y1=n):(this.y1=t,this.y2=n),this},add(e,t){return e<this.x1&&(this.x1=e),t<this.y1&&(this.y1=t),e>this.x2&&(this.x2=e),t>this.y2&&(this.y2=t),this},expand(e){return this.x1-=e,this.y1-=e,this.x2+=e,this.y2+=e,this},round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},scale(e){return this.x1*=e,this.y1*=e,this.x2*=e,this.y2*=e,this},translate(e,t){return this.x1+=e,this.x2+=e,this.y1+=t,this.y2+=t,this},rotate(e,t,r){e=this.rotatedPoints(e,t,r);return this.clear().add(e[0],e[1]).add(e[2],e[3]).add(e[4],e[5]).add(e[6],e[7])},rotatedPoints(e,t,r){var{x1:n,y1:a,x2:i,y2:o}=this,s=Math.cos(e),e=Math.sin(e),l=t-t*s+r*e,t=r-t*e-r*s;return[s*n-e*a+l,e*n+s*a+t,s*n-e*o+l,e*n+s*o+t,s*i-e*a+l,e*i+s*a+t,s*i-e*o+l,e*i+s*o+t]},union(e){return e.x1<this.x1&&(this.x1=e.x1),e.y1<this.y1&&(this.y1=e.y1),e.x2>this.x2&&(this.x2=e.x2),e.y2>this.y2&&(this.y2=e.y2),this},intersect(e){return e.x1>this.x1&&(this.x1=e.x1),e.y1>this.y1&&(this.y1=e.y1),e.x2<this.x2&&(this.x2=e.x2),e.y2<this.y2&&(this.y2=e.y2),this},encloses(e){return e&&this.x1<=e.x1&&this.x2>=e.x2&&this.y1<=e.y1&&this.y2>=e.y2},alignsWith(e){return e&&(this.x1==e.x1||this.x2==e.x2||this.y1==e.y1||this.y2==e.y2)},intersects(e){return e&&!(this.x2<e.x1||this.x1>e.x2||this.y2<e.y1||this.y1>e.y2)},contains(e,t){return!(e<this.x1||e>this.x2||t<this.y1||t>this.y2)},width(){return this.x2-this.x1},height(){return this.y2-this.y1}},f.inherits(qt,Vt);class ki{constructor(e){this._pending=0,this._loader=e||K.loader()}pending(){return this._pending}sanitizeURL(e){const t=this;return zt(t),t._loader.sanitize(e,{context:\"href\"}).then(e=>(Wt(t),e)).catch(()=>(Wt(t),null))}loadImage(e){const n=this,a=$.image();return zt(n),n._loader.sanitize(e,{context:\"image\"}).then(e=>{var t,r=e.href;if(r&&a)return t=new a,null!=(e=f.hasOwnProperty(e,\"crossOrigin\")?e.crossOrigin:\"anonymous\")&&(t.crossOrigin=e),t.onload=()=>Wt(n),t.onerror=()=>Wt(n),t.src=r,t;throw{url:r}}).catch(e=>(Wt(n),{complete:!1,width:0,height:0,src:e&&e.url||\"\"}))}ready(){const n=this;return new Promise(r=>{!function e(t){n.pending()?setTimeout(()=>{e(!0)},10):r(t)}(!1)})}}function zt(e){e._pending+=1}function Wt(e){--e._pending}function $t(e,t,r){var n;return t.stroke&&0!==t.opacity&&0!==t.strokeOpacity&&(n=null!=t.strokeWidth?+t.strokeWidth:1,e.expand(n+(r?Kt(t,n):0))),e}function Kt(e,t){return e.strokeJoin&&\"miter\"!==e.strokeJoin?0:t}const Ii=P-1e-8;let r,c,u,d,n,a,i,s;const L=(e,t)=>r.add(e,t),Ri=(e,t)=>L(c=e,u=t),Ni=e=>L(e,r.y1),Mi=e=>L(r.x1,e),G=(e,t)=>n*e+i*t,V=(e,t)=>a*e+s*t,Pi=(e,t)=>L(G(e,t),V(e,t)),Di=(e,t)=>Ri(G(e,t),V(e,t));function Yt(e,t){return r=e,t?(d=t*N,n=s=Math.cos(d),a=Math.sin(d),i=-a):(n=s=1,d=a=i=0),xi}const xi={beginPath(){},closePath(){},moveTo:Di,lineTo:Di,rect(e,t,r,n){(d?(Pi(e+r,t),Pi(e+r,t+n),Pi(e,t+n),Di):(L(e+r,t+n),Ri))(e,t)},quadraticCurveTo(e,t,r,n){var a=G(e,t),e=V(e,t),t=G(r,n),r=V(r,n);Jt(c,a,t,Ni),Jt(u,e,r,Mi),Ri(t,r)},bezierCurveTo(e,t,r,n,a,i){var o=G(e,t),e=V(e,t),t=G(r,n),r=V(r,n),n=G(a,i),a=V(a,i);Qt(c,o,t,n,Ni),Qt(u,e,r,a,Mi),Ri(n,a)},arc(r,n,a,i,o,s){if(i+=d,o+=d,c=a*Math.cos(o)+r,u=a*Math.sin(o)+n,Math.abs(o-i)>Ii)L(r-a,n-a),L(r+a,n+a);else{var l=e=>L(a*Math.cos(e)+r,a*Math.sin(e)+n);let e,t;if(l(i),l(o),o!==i)if((i%=P)<0&&(i+=P),(o%=P)<0&&(o+=P),o<i&&(s=!s,e=i,i=o,o=e),s)for(o-=P,e=i-i%M,t=0;t<4&&e>o;++t,e-=M)l(e);else for(e=i-i%M+M,t=0;t<4&&e<o;++t,e+=M)l(e)}}};function Jt(e,t,r,n){r=(e-t)/(e+r-2*t);0<r&&r<1&&n(e+(t-e)*r)}function Qt(e,t,r,n,a){var i=n-e+3*t-3*r,o=e+r-2*t,s=e-t;let l=0,c=0,u;Math.abs(i)>Qa?0<=(u=o*o+s*i)&&(u=Math.sqrt(u),l=(-o+u)/i,c=(-o-u)/i):l=.5*s/o,0<l&&l<1&&a(Zt(l,e,t,r,n)),0<c&&c<1&&a(Zt(c,e,t,r,n))}function Zt(e,t,r,n,a){var i=1-e,o=i*i,s=e*e;return o*i*t+3*o*e*r+3*i*s*n+s*e*a}var g=(g=$.canvas(1,1))?g.getContext(\"2d\"):null;const Li=new m;function Xt(i){return function(e,t){if(!g)return!0;i(g,e),Li.clear().union(e.bounds).intersect(t).round();var{x1:r,y1:e,x2:n,y2:a}=Li;for(let t=e;t<=a;++t)for(let e=r;e<=n;++e)if(g.isPointInPath(e,t))return!0;return!1}}function er(e,t){return t.contains(e.x||0,e.y||0)}function tr(e,t){var r=e.x||0,n=e.y||0,a=e.width||0,e=e.height||0;return t.intersects(Li.set(r,n,r+a,n+e))}function rr(e,t){var r=e.x||0,n=e.y||0;return nr(t,r,n,null!=e.x2?e.x2:r,null!=e.y2?e.y2:n)}function nr(e,t,r,n,a){var{x1:i,y1:o,x2:s,y2:l}=e,c=n-t,u=a-r;let d=0,p=1,f,h,m,g;for(g=0;g<4;++g){if(0===g&&(f=-c,h=-(i-t)),1===g&&(f=c,h=s-t),2===g&&(f=-u,h=-(o-r)),3===g&&(f=u,h=l-r),Math.abs(f)<1e-10&&h<0)return!1;if(m=h/f,f<0){if(m>p)return!1;m>d&&(d=m)}else if(0<f){if(m<d)return!1;m<p&&(p=m)}}return!0}function ar(e,t){e.globalCompositeOperation=t.blend||\"source-over\"}function _(e,t){return null==e?t:e}function ir(t,r){var n=r.length;for(let e=0;e<n;++e)t.addColorStop(r[e].offset,r[e].color);return t}function or(e,t,r){var n=r.width(),a=r.height();let i;if(\"radial\"===t.gradient)i=e.createRadialGradient(r.x1+_(t.x1,.5)*n,r.y1+_(t.y1,.5)*a,Math.max(n,a)*_(t.r1,0),r.x1+_(t.x2,.5)*n,r.y1+_(t.y2,.5)*a,Math.max(n,a)*_(t.r2,.5));else{var o,s,l=_(t.x1,0),c=_(t.y1,0),u=_(t.x2,1),d=_(t.y2,0);if(l!==u&&c!==d&&n!==a)return(s=(o=$.canvas(Math.ceil(n),Math.ceil(a))).getContext(\"2d\")).scale(n,a),s.fillStyle=ir(s.createLinearGradient(l,c,u,d),t.stops),s.fillRect(0,0,n,a),e.createPattern(o,\"no-repeat\");i=e.createLinearGradient(r.x1+l*n,r.y1+c*a,r.x1+u*n,r.y1+d*a)}return ir(i,t.stops)}function sr(e,t,r){return Q(r)?or(e,r,t.bounds):r}function lr(e,t,r){return 0<(r*=null==t.fillOpacity?1:t.fillOpacity)&&(e.globalAlpha=r,e.fillStyle=sr(e,t,t.fill),1)}var cr=[];function ur(e,t,r){var n=null!=(n=t.strokeWidth)?n:1;return!(n<=0)&&0<(r*=null==t.strokeOpacity?1:t.strokeOpacity)&&(e.globalAlpha=r,e.strokeStyle=sr(e,t,t.stroke),e.lineWidth=n,e.lineCap=t.strokeCap||\"butt\",e.lineJoin=t.strokeJoin||\"miter\",e.miterLimit=t.strokeMiterLimit||10,e.setLineDash&&(e.setLineDash(t.strokeDash||cr),e.lineDashOffset=t.strokeDashOffset||0),1)}function dr(e,t){return e.zindex-t.zindex||e.index-t.index}function pr(e){if(!e.zdirty)return e.zitems;for(var t,r=e.items,n=[],a=0,i=r.length;a<i;++a)(t=r[a]).index=a,t.zindex&&n.push(t);return e.zdirty=!1,e.zitems=n.sort(dr)}function y(e,t){var r,n,a=e.items;if(a&&a.length){e=pr(e);if(e&&e.length){for(r=0,n=a.length;r<n;++r)a[r].zindex||t(a[r]);a=e}for(r=0,n=a.length;r<n;++r)t(a[r])}}function fr(e,t){var r,n=e.items;if(n&&n.length){for(var a=pr(e),i=(n=a&&a.length?a:n).length;0<=--i;)if(r=t(n[i]))return r;if(n===a)for(i=(n=e.items).length;0<=--i;)if(!n[i].zindex&&(r=t(n[i])))return r}return null}function hr(n){return function(t,e,r){y(e,e=>{r&&!r.intersects(e.bounds)||gr(n,t,e,e)})}}function mr(n){return function(e,t,r){!t.items.length||r&&!r.intersects(t.bounds)||gr(n,e,t.items[0],t.items)}}function gr(e,t,r,n){var a=null==r.opacity?1:r.opacity;0===a||e(t,n)||(ar(t,r),r.fill&&lr(t,r,a)&&t.fill(),r.stroke&&ur(t,r,a)&&t.stroke())}function _r(s){return s=s||f.truthy,function(r,e,n,a,i,o){return n*=r.pixelRatio,a*=r.pixelRatio,fr(e,e=>{var t=e.bounds;return(!t||t.contains(i,o))&&t&&s(r,e,n,a,i,o)?e:void 0})}}function yr(l,c){return function(e,t,r,n){var a,i=Array.isArray(t)?t[0]:t,o=null==c?i.fill:c,s=i.stroke&&e.isPointInStroke;return s&&(a=i.strokeWidth,i=i.strokeCap,e.lineWidth=null!=a?a:1,e.lineCap=null!=i?i:\"butt\"),!l(e,t)&&(o&&e.isPointInPath(r,n)||s&&e.isPointInStroke(r,n))}}function Tr(e){return _r(yr(e))}function vr(e,t){return\"translate(\"+e+\",\"+t+\")\"}function br(e){return\"rotate(\"+e+\")\"}function Er(e,t){return\"scale(\"+e+\",\"+t+\")\"}function Sr(e){return vr(e.x||0,e.y||0)}function Ar(e){return vr(e.x||0,e.y||0)+(e.angle?\" \"+br(e.angle):\"\")}function Or(e){return vr(e.x||0,e.y||0)+(e.angle?\" \"+br(e.angle):\"\")+(e.scaleX||e.scaleY?\" \"+Er(e.scaleX||1,e.scaleY||1):\"\")}function Cr(e,i,t){function r(e,t){var r=t.x||0,n=t.y||0,a=t.angle||0;e.translate(r,n),a&&e.rotate(a*=N),e.beginPath(),i(e,t),a&&e.rotate(-a),e.translate(-r,-n)}return{type:e,tag:\"path\",nested:!1,attr:function(e,t){e(\"transform\",Ar(t)),e(\"d\",i(null,t))},bound:function(e,t){return i(Yt(e,t.angle),t),$t(e,t).translate(t.x||0,t.y||0)},draw:hr(r),pick:Tr(r),isect:t||Xt(r)}}function wr(e,t){for(var r,n,a=\"horizontal\"===e[0].orient?t[1]:t[0],i=\"horizontal\"===e[0].orient?\"y\":\"x\",o=e.length,s=1/0;0<=--o;)!1!==e[o].defined&&(n=Math.abs(e[o][i]-a))<s&&(s=n,r=e[o]);return r}function kr(e,t){for(var r,n=Math.pow(e[0].strokeWidth||1,2),a=e.length;0<=--a;)if(!1!==e[a].defined&&(r=e[a].x-t[0])*r+(r=e[a].y-t[1])*r<n)return e[a];return null}function Ir(e,t){for(var r,n,a=e.length;0<=--a;)if(!1!==e[a].defined&&(r=e[a].x-t[0])*r+(n=e[a].y-t[1])*n<(r=e[a].size||1)*r)return e[a];return null}function Rr(e,r,t){function n(e,t){e.beginPath(),r(e,t)}const s=yr(n);return{type:e,tag:\"path\",nested:!0,attr:function(e,t){(t=t.mark.items).length&&e(\"d\",r(null,t))},bound:function(e,t){return 0===(t=t.items).length?e:(r(Yt(e),t),$t(e,t[0]))},draw:mr(n),pick:function(e,t,r,n,a,i){var o=t.items,t=t.bounds;return o&&o.length&&(!t||t.contains(a,i))&&(r*=e.pixelRatio,n*=e.pixelRatio,s(e,o,r,n))?o[0]:null},isect:er,tip:t}}function Nr(e,t){var r=t.clip;e.save(),f.isFunction(r)?(e.beginPath(),r(e),e.clip()):Mr(e,t.group)}function Mr(e,t){e.beginPath(),Mt(t)?Lt(e,t,0,0):e.rect(0,0,t.width||0,t.height||0),e.clip()}function Pr(e){var t=_(e.strokeWidth,1);return null!=e.strokeOffset?e.strokeOffset:e.stroke&&.5<t&&t<1.5?.5-Math.abs(t-1):0}function Dr(e,t){e(\"transform\",Sr(t))}function xr(e,t){var r=Pr(t);e(\"d\",Lt(null,t,r,r))}function Lr(e,t){e(\"class\",\"background\"),e(\"aria-hidden\",!0),xr(e,t)}function Fr(e,t){e(\"class\",\"foreground\"),e(\"aria-hidden\",!0),t.strokeForeground?xr(e,t):e(\"d\",\"\")}function Ur(e,t,r){e(\"clip-path\",t.clip?Gt(r,t,t):null)}function Br(t,e){if(!e.clip&&e.items){var r=e.items,n=r.length;for(let e=0;e<n;++e)t.union(r[e].bounds)}return(e.clip||e.width||e.height)&&!e.noBound&&t.add(0,0).add(e.width||0,e.height||0),$t(t,e),t.translate(e.x||0,e.y||0)}function jr(e,t,r,n){var a=Pr(t);e.beginPath(),Lt(e,t,(r||0)+a,(n||0)+a)}Ne=Cr(\"arc\",Pt),De=Rr(\"area\",Dt,wr);const Fi=yr(jr),Ui=yr(jr,!1),Bi=yr(jr,!0);function Hr(i,e,o,s){y(e,e=>{var t=e.x||0,r=e.y||0,n=e.strokeForeground,a=null==e.opacity?1:e.opacity;(e.stroke||e.fill)&&a&&(jr(i,e,t,r),ar(i,e),e.fill&&lr(i,e,a)&&i.fill(),e.stroke)&&!n&&ur(i,e,a)&&i.stroke(),i.save(),i.translate(t,r),e.clip&&Mr(i,e),o&&o.translate(-t,-r),y(e,e=>{\"group\"!==e.marktype&&null!=s&&!s.includes(e.marktype)||this.draw(i,e,o,s)}),o&&o.translate(t,r),i.restore(),n&&e.stroke&&a&&(jr(i,e,t,r),ar(i,e),ur(i,e,a))&&i.stroke()})}function Gr(s,l,c,u,d,p){if(l.bounds&&!l.bounds.contains(d,p)||!l.items)return null;const f=c*s.pixelRatio,h=u*s.pixelRatio;return fr(l,e=>{let t,r,n;var a=e.bounds;if(!a||a.contains(d,p)){r=e.x||0,n=e.y||0;var a=r+(e.width||0),i=n+(e.height||0),o=e.clip;if(!o||!(d<r||a<d||p<n||i<p))return s.save(),s.translate(r,n),r=d-r,n=p-n,o&&Mt(e)&&!Bi(s,e,f,h)?(s.restore(),null):(a=e.strokeForeground,(i=!1!==l.interactive)&&a&&e.stroke&&Ui(s,e,f,h)?(s.restore(),e):(!(t=fr(e,e=>Vr(e,r,n)?this.pick(e,c,u,r,n):null))&&i&&(e.fill||!a&&e.stroke)&&Fi(s,e,f,h)&&(t=e),s.restore(),t||null))}})}function Vr(e,t,r){return(!1!==e.interactive||\"group\"===e.marktype)&&e.bounds&&e.bounds.contains(t,r)}var Ue={type:\"group\",tag:\"g\",nested:!1,attr:Dr,bound:Br,draw:Hr,pick:Gr,isect:tr,content:Ur,background:Lr,foreground:Fr},qr={xmlns:\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",version:\"1.1\"};function zr(t,e){var r=t.image;return(!r||t.url&&t.url!==r.url)&&(r={complete:!1,width:0,height:0},e.loadImage(t.url).then(e=>{t.image=e,t.image.url=t.url})),r}function Wr(e,t){return null!=e.width?e.width:t&&t.width?!1!==e.aspect&&e.height?e.height*t.width/t.height:t.width:0}function $r(e,t){return null!=e.height?e.height:t&&t.height?!1!==e.aspect&&e.width?e.width*t.height/t.width:t.height:0}function Kr(e,t){return\"center\"===e?t/2:\"right\"===e?t:0}function Yr(e,t){return\"middle\"===e?t/2:\"bottom\"===e?t:0}function Jr(e,t,r){var r=zr(t,r),n=Wr(t,r),a=$r(t,r),i=(t.x||0)-Kr(t.align,n),o=(t.y||0)-Yr(t.baseline,a);e(\"href\",!r.src&&r.toDataURL?r.toDataURL():r.src||\"\",qr[\"xmlns:xlink\"],\"xlink:href\"),e(\"transform\",vr(i,o)),e(\"width\",n),e(\"height\",a),e(\"preserveAspectRatio\",!1===t.aspect?\"none\":\"xMidYMid\")}function Qr(e,t){var r=t.image,n=Wr(t,r),r=$r(t,r),a=(t.x||0)-Kr(t.align,n),t=(t.y||0)-Yr(t.baseline,r);return e.set(a,t,a+n,t+r)}function Zr(u,e,t){y(e,l=>{if(!t||t.intersects(l.bounds)){var c=zr(l,this);let o=Wr(l,c),s=$r(l,c);if(0!==o&&0!==s){let e=(l.x||0)-Kr(l.align,o),t=(l.y||0)-Yr(l.baseline,s),r,n,a,i;!1!==l.aspect&&(n=c.width/c.height,a=l.width/l.height,n==n)&&a==a&&n!=a&&(a<n?(i=o/n,t+=(s-i)/2,s=i):(i=s*n,e+=(o-i)/2,o=i)),(c.complete||c.toDataURL)&&(ar(u,l),u.globalAlpha=null!=(r=l.opacity)?r:1,u.imageSmoothingEnabled=!1!==l.smooth,u.drawImage(c,e,t,o,s))}}})}function Xr(e,t){var r=t.scaleX||1,n=t.scaleY||1;1===r&&1===n||e(\"vector-effect\",\"non-scaling-stroke\"),e(\"transform\",Or(t)),e(\"d\",t.path)}function en(e,t){var r=t.path;if(null==r)return!0;var n=t.x||0,a=t.y||0,i=t.scaleX||1,o=t.scaleY||1,s=(t.angle||0)*N,l=t.pathCache;l&&l.path===r||((t.pathCache=l=dt(r)).path=r),s&&e.rotate&&e.translate?(e.translate(n,a),e.rotate(s),Tt(e,l,0,0,i,o),e.rotate(-s),e.translate(-n,-a)):Tt(e,l,n,a,i,o)}function tn(e,t){return en(Yt(e,t.angle),t)?e.set(0,0,0,0):$t(e,t,!0)}function rn(e,t){e(\"d\",Lt(null,t))}function nn(e,t){var r;return $t(e.set(e=t.x||0,r=t.y||0,e+t.width||0,r+t.height||0),t)}function an(e,t){e.beginPath(),Lt(e,t)}function on(e,t){e(\"transform\",Sr(t)),e(\"x2\",null!=t.x2?t.x2-(t.x||0):0),e(\"y2\",null!=t.y2?t.y2-(t.y||0):0)}function sn(e,t){var r;return $t(e.set(e=t.x||0,r=t.y||0,null!=t.x2?t.x2:e,null!=t.y2?t.y2:r),t)}function ln(e,t,r){var n,a;return!(!t.stroke||!ur(e,t,r)||(r=t.x||0,n=t.y||0,a=null!=t.x2?t.x2:r,t=null!=t.y2?t.y2:n,e.beginPath(),e.moveTo(r,n),e.lineTo(a,t),0))}function cn(r,e,n){y(e,e=>{var t;n&&!n.intersects(e.bounds)||(t=null==e.opacity?1:e.opacity)&&ln(r,e,t)&&(ar(r,e),r.stroke())})}function un(e,t,r,n){return!!e.isPointInStroke&&ln(e,t,1)&&e.isPointInStroke(r,n)}Le={type:\"image\",tag:\"image\",nested:!1,attr:Jr,bound:Qr,draw:Zr,pick:_r(),isect:f.truthy,get:zr,xOffset:Kr,yOffset:Yr},He=Rr(\"line\",xt,kr),Ve={type:\"path\",tag:\"path\",nested:!1,attr:Xr,bound:tn,draw:hr(en),pick:Tr(en),isect:Xt(en)};var dn={type:\"rule\",tag:\"line\",nested:!(ze={type:\"rect\",tag:\"path\",nested:!1,attr:rn,bound:nn,draw:hr(an),pick:Tr(an),isect:tr}),attr:on,bound:sn,draw:cn,pick:_r(un),isect:rr},pn=Cr(\"shape\",Ft),fn=Cr(\"symbol\",Ut,er);const ji=f.lruCache();var b={height:E,measureWidth:_n,estimateWidth:mn,width:mn,canvas:hn};function hn(e){b.width=e&&g?_n:mn}function mn(e,t){return gn(A(e,t),E(e))}function gn(e,t){return~~(.8*e.length*t)}function _n(e,t){return E(e)<=0||!(t=A(e,t))?0:yn(t,On(e))}function yn(e,t){var r=`(${t}) `+e;let n=ji.get(r);return void 0===n&&(g.font=t,n=g.measureText(e).width,ji.set(r,n)),n}function E(e){return null!=e.fontSize?+e.fontSize||0:11}function S(e){return null!=e.lineHeight?e.lineHeight:E(e)+2}function Tn(e){return!f.isArray(e)||1<e.length?e:e[0]}function vn(e){return Tn(e.lineBreak&&e.text&&!f.isArray(e.text)?e.text.split(e.lineBreak):e.text)}function bn(e){var t=vn(e);return(f.isArray(t)?t.length-1:0)*S(e)}function A(e,t){t=null==t?\"\":(t+\"\").trim();return 0<e.limit&&t.length?Sn(e,t):t}function En(t){if(b.width===_n){const r=On(t);return e=>yn(e,r)}if(b.width!==mn)return e=>b.width(t,e);{const n=E(t);return e=>gn(e,n)}}function Sn(e,t){var r=+e.limit,n=En(e);if(n(t)<r)return t;var a,i=e.ellipsis||\"…\",e=\"rtl\"===e.dir,o=0,s=t.length;if(r-=n(i),e){for(;o<s;)n(t.slice(a=o+s>>>1))>r?o=a+1:s=a;return i+t.slice(o)}for(;o<s;)n(t.slice(0,a=1+(o+s>>>1)))<r?o=a:s=a-1;return t.slice(0,o)+i}function An(e,t){e=e.font;return(t&&e?String(e).replace(/\"/g,\"'\"):e)||\"sans-serif\"}function On(e,t){return(e.fontStyle?e.fontStyle+\" \":\"\")+(e.fontVariant?e.fontVariant+\" \":\"\")+(e.fontWeight?e.fontWeight+\" \":\"\")+E(e)+\"px \"+An(e,t)}function Cn(e){var t=e.baseline,r=E(e);return Math.round(\"top\"===t?.79*r:\"middle\"===t?.3*r:\"bottom\"===t?-.21*r:\"line-top\"===t?.29*r+.5*S(e):\"line-bottom\"===t?.29*r-.5*S(e):0)}hn(!0);const Hi={left:\"start\",center:\"middle\",right:\"end\"},Gi=new m;function wn(e){var t=e.x||0,r=e.y||0,n=e.radius||0;return n&&(e=(e.theta||0)-M,t+=n*Math.cos(e),r+=n*Math.sin(e)),Gi.x1=t,Gi.y1=r,Gi}function kn(e,t){var r,n=t.dx||0,a=(t.dy||0)+Cn(t),i=wn(t),o=i.x1,i=i.y1,s=t.angle||0;e(\"text-anchor\",Hi[t.align]||\"start\"),s?(r=vr(o,i)+\" \"+br(s),(n||a)&&(r+=\" \"+vr(n,a))):r=vr(o+n,i+a),e(\"transform\",r)}function In(e,r,t){var n=b.height(r),a=r.align,i=wn(r),o=i.x1,i=i.y1,s=r.dx||0,l=(r.dy||0)+Cn(r)-Math.round(.8*n),c=vn(r),c=f.isArray(c)?(n+=S(r)*(c.length-1),c.reduce((e,t)=>Math.max(e,b.width(r,t)),0)):b.width(r,c);if(\"center\"===a?s-=c/2:\"right\"===a&&(s-=c),e.set(s+=o,l+=i,s+c,l+n),r.angle&&!t)e.rotate(r.angle*N,o,i);else if(2===t)return e.rotatedPoints(r.angle*N,o,i);return e}function Rn(c,e,u){y(e,e=>{var t,r,n,a,i,o,s,l=null==e.opacity?1:e.opacity;if(!(u&&!u.intersects(e.bounds)||0===l||e.fontSize<=0||null==e.text||0===e.text.length)){if(c.font=On(e),c.textAlign=e.align||\"left\",r=(t=wn(e)).x1,n=t.y1,e.angle&&(c.save(),c.translate(r,n),c.rotate(e.angle*N),r=n=0),r+=e.dx||0,n+=(e.dy||0)+Cn(e),o=vn(e),ar(c,e),f.isArray(o))for(i=S(e),a=0;a<o.length;++a)s=A(e,o[a]),e.fill&&lr(c,e,l)&&c.fillText(s,r,n),e.stroke&&ur(c,e,l)&&c.strokeText(s,r,n),n+=i;else s=A(e,o),e.fill&&lr(c,e,l)&&c.fillText(s,r,n),e.stroke&&ur(c,e,l)&&c.strokeText(s,r,n);e.angle&&c.restore()}})}function Nn(e,t,r,n,a,i){var o,s,l,c;return!(t.fontSize<=0)&&(!t.angle||(o=(s=wn(t)).x1,s=s.y1,l=In(Gi,t,1),t=-t.angle*N,c=Math.cos(t),t=Math.sin(t),l.contains(c*a-t*i+(o-c*o+t*s),t*a+c*i+(s-t*o-c*s))))}function Mn(e,t){e=In(Gi,e,2);return nr(t,e[0],e[1],e[2],e[3])||nr(t,e[0],e[1],e[4],e[5])||nr(t,e[4],e[5],e[6],e[7])||nr(t,e[2],e[3],e[6],e[7])}var O={arc:Ne,area:De,group:Ue,image:Le,line:He,path:Ve,rect:ze,rule:dn,shape:pn,symbol:fn,text:{type:\"text\",tag:\"text\",nested:!1,attr:kn,bound:In,draw:Rn,pick:_r(Nn),isect:Mn},trail:Rr(\"trail\",Bt,Ir)};function Pn(e,t,r){var n=O[e.mark.marktype];return(t||n.bound)((e=n.nested?e.mark:e).bounds||(e.bounds=new m),e,r)}var Dn={mark:null};function xn(e,t,r){var n,a,i=O[e.marktype],o=i.bound,s=e.items,l=s&&s.length;if(i.nested)return i=Pn(l?s[0]:(Dn.mark=e,Dn),o,r),t=t&&t.union(i)||i;if(t=t||e.bounds&&e.bounds.clear()||new m,l)for(n=0,a=s.length;n<a;++n)t.union(Pn(s[n],o,r));return e.bounds=t}const Vi=[\"marktype\",\"name\",\"role\",\"interactive\",\"clip\",\"items\",\"zindex\",\"x\",\"y\",\"width\",\"height\",\"align\",\"baseline\",\"fill\",\"fillOpacity\",\"opacity\",\"blend\",\"stroke\",\"strokeOpacity\",\"strokeWidth\",\"strokeCap\",\"strokeDash\",\"strokeDashOffset\",\"strokeForeground\",\"strokeOffset\",\"startAngle\",\"endAngle\",\"innerRadius\",\"outerRadius\",\"cornerRadius\",\"padAngle\",\"cornerRadiusTopLeft\",\"cornerRadiusTopRight\",\"cornerRadiusBottomLeft\",\"cornerRadiusBottomRight\",\"interpolate\",\"tension\",\"orient\",\"defined\",\"url\",\"aspect\",\"smooth\",\"path\",\"scaleX\",\"scaleY\",\"x2\",\"y2\",\"size\",\"shape\",\"text\",\"angle\",\"theta\",\"radius\",\"dir\",\"dx\",\"dy\",\"ellipsis\",\"limit\",\"lineBreak\",\"lineHeight\",\"font\",\"fontSize\",\"fontWeight\",\"fontStyle\",\"fontVariant\",\"description\",\"aria\",\"ariaRole\",\"ariaRoleDescription\"];function Ln(e,t){return JSON.stringify(e,Vi,t)}function Fn(e){return Un(\"string\"==typeof e?JSON.parse(e):e)}function Un(e){var t,r,n,a=e.marktype,i=e.items;if(i)for(r=0,n=i.length;r<n;++r)i[r][t=a?\"mark\":\"group\"]=e,i[r].zindex&&(i[r][t].zdirty=!0),\"group\"===(a||t)&&Un(i[r]);return a&&xn(e),e}class qi{constructor(e){arguments.length?this.root=Fn(e):(this.root=Bn({marktype:\"group\",name:\"root\",role:\"frame\"}),this.root.items=[new qt(this.root)])}toJSON(e){return Ln(this.root,e||0)}mark(e,t,r){e=Bn(e,t=t||this.root.items[0]);return(t.items[r]=e).zindex&&(e.group.zdirty=!0),e}}function Bn(e,t){t={bounds:new m,clip:!!e.clip,group:t,interactive:!1!==e.interactive,items:[],marktype:e.marktype,name:e.name||void 0,role:e.role||void 0,zindex:e.zindex||0};return null!=e.aria&&(t.aria=e.aria),e.description&&(t.description=e.description),t}function C(e,t,r){return(e=!e&&\"undefined\"!=typeof document&&document.createElement?document:e)?r?e.createElementNS(r,t):e.createElement(t):null}function jn(e,t){t=t.toLowerCase();for(var r=e.childNodes,n=0,a=r.length;n<a;++n)if(r[n].tagName.toLowerCase()===t)return r[n]}function w(e,t,r,n){var a,t=e.childNodes[t];return t&&t.tagName.toLowerCase()===r.toLowerCase()||(a=t||null,t=C(e.ownerDocument,r,n),e.insertBefore(t,a)),t}function k(e,t){for(var r=e.childNodes,n=r.length;t<n;)e.removeChild(r[--n]);return e}function Hn(e){return\"mark-\"+e.marktype+(e.role?\" role-\"+e.role:\"\")+(e.name?\" \"+e.name:\"\")}function Gn(e,t){var r=t.getBoundingClientRect();return[e.clientX-r.left-(t.clientLeft||0),e.clientY-r.top-(t.clientTop||0)]}function Vn(e,t,r,n){var a,i,o=e&&e.mark;if(o&&(a=O[o.marktype]).tip){for((i=Gn(t,r))[0]-=n[0],i[1]-=n[1];e=e.mark.group;)i[0]-=e.x||0,i[1]-=e.y||0;e=a.tip(o.items,i)}return e}class zi{constructor(e,t){this._active=null,this._handlers={},this._loader=e||K.loader(),this._tooltip=t||qn}initialize(e,t,r){return this._el=e,this._obj=r||null,this.origin(t)}element(){return this._el}canvas(){return this._el&&this._el.firstChild}origin(e){return arguments.length?(this._origin=e||[0,0],this):this._origin.slice()}scene(e){return arguments.length?(this._scene=e,this):this._scene}on(){}off(){}_handlerIndex(t,r,n){for(let e=t?t.length:0;0<=--e;)if(t[e].type===r&&(!n||t[e].handler===n))return e;return-1}handlers(e){var t=this._handlers,r=[];if(e)r.push(...t[this.eventName(e)]);else for(const n in t)r.push(...t[n]);return r}eventName(e){var t=e.indexOf(\".\");return t<0?e:e.slice(0,t)}handleHref(a,e,t){this._loader.sanitize(t,{context:\"href\"}).then(e=>{var t=new MouseEvent(a.type,a),r=C(null,\"a\");for(const n in e)r.setAttribute(n,e[n]);r.dispatchEvent(t)}).catch(()=>{})}handleTooltip(e,t,r){t&&null!=t.tooltip&&(t=Vn(t,e,this.canvas(),this._origin),r=r&&t&&t.tooltip||null,this._tooltip.call(this._obj,this,e,t,r))}getItemBoundingClientRect(r){var n=this.canvas();if(n){var n=n.getBoundingClientRect(),a=this._origin,i=r.bounds,o=i.width(),s=i.height();let e=i.x1+a[0]+n.left,t=i.y1+a[1]+n.top;for(;r.mark&&(r=r.mark.group);)e+=r.x||0,t+=r.y||0;return{x:e,y:t,width:o,height:s,left:e,top:t,right:e+o,bottom:t+s}}}}function qn(e,t,r,n){e.element().setAttribute(\"title\",n||\"\")}class Wi{constructor(e){this._el=null,this._bgcolor=null,this._loader=new ki(e)}initialize(e,t,r,n,a){return this._el=e,this.resize(t,r,n,a)}element(){return this._el}canvas(){return this._el&&this._el.firstChild}background(e){return 0===arguments.length?this._bgcolor:(this._bgcolor=e,this)}resize(e,t,r,n){return this._width=e,this._height=t,this._origin=r||[0,0],this._scale=n||1,this}dirty(){}render(e,t){const r=this;return r._call=function(){r._render(e,t)},r._call(),r._call=null,r}_render(){}renderAsync(e,t){const r=this.render(e,t);return this._ready?this._ready.then(()=>r):Promise.resolve(r)}_load(e,t){var r=this,e=r._loader[e](t);if(!r._ready){const n=r._call;r._ready=r._loader.ready().then(e=>{e&&n(),r._ready=null})}return e}sanitizeURL(e){return this._load(\"sanitizeURL\",e)}loadImage(e){return this._load(\"loadImage\",e)}}const $i=\"dragleave\",Ki=\"pointerdown\",Yi=\"pointermove\",Ji=\"pointerout\",Qi=\"pointerover\",Zi=\"mousedown\",Xi=\"mouseout\",eo=\"click\",to=\"mousewheel\",ro=\"touchstart\",no=\"touchmove\",ao=\"touchend\",io=[\"keydown\",\"keypress\",\"keyup\",\"dragenter\",$i,\"dragover\",Ki,\"pointerup\",Yi,Ji,Qi,Zi,\"mouseup\",\"mousemove\",Xi,\"mouseover\",eo,\"dblclick\",\"wheel\",to,ro,no,ao],oo=Yi,so=Xi;eo;class lo extends zi{constructor(e,t){super(e,t),this._down=null,this._touch=null,this._first=!0,this._events={},this.events=io,this.pointermove=Kn([Yi,\"mousemove\"],[Qi,\"mouseover\"],[Ji,Xi]),this.dragover=Kn([\"dragover\"],[\"dragenter\"],[$i]),this.pointerout=Yn([Ji,Xi]),this.dragleave=Yn([$i])}initialize(e,t,r){return this._canvas=e&&jn(e,\"canvas\"),[eo,Zi,Ki,Yi,Ji,$i].forEach(e=>zn(this,e)),super.initialize(e,t,r)}canvas(){return this._canvas}context(){return this._canvas.getContext(\"2d\")}DOMMouseScroll(e){this.fire(to,e)}pointerdown(e){this._down=this._active,this.fire(Ki,e)}mousedown(e){this._down=this._active,this.fire(Zi,e)}click(e){this._down===this._active&&(this.fire(eo,e),this._down=null)}touchstart(e){this._touch=this.pickEvent(e.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire(ro,e,!0)}touchmove(e){this.fire(no,e,!0)}touchend(e){this.fire(ao,e,!0),this._touch=null}fire(e,r,t){var n=t?this._touch:this._active,a=this._handlers[e];if(\"click\"===(r.vegaType=e)&&n&&n.href?this.handleHref(r,n,n.href):e!==oo&&e!==so||this.handleTooltip(r,n,e!==so),a)for(let e=0,t=a.length;e<t;++e)a[e].handler.call(this._obj,r,n)}on(e,t){var r=this.eventName(e),n=this._handlers;return this._handlerIndex(n[r],e,t)<0&&(zn(this,e),(n[r]||(n[r]=[])).push({type:e,handler:t})),this}off(e,t){var r=this.eventName(e),r=this._handlers[r],e=this._handlerIndex(r,e,t);return 0<=e&&r.splice(e,1),this}pickEvent(e){var e=Gn(e,this._canvas),t=this._origin;return this.pick(this._scene,e[0],e[1],e[0]-t[0],e[1]-t[1])}pick(e,t,r,n,a){var i=this.context();return O[e.marktype].pick.call(this,i,e,t,r,n,a)}}const co=e=>e===ro||e===no||e===ao?[ro,no,ao]:[e];function zn(t,e){co(e).forEach(e=>Wn(t,e))}function Wn(t,r){var e=t.canvas();e&&!t._events[r]&&(t._events[r]=1,e.addEventListener(r,t[r]?e=>t[r](e):e=>t.fire(r,e)))}function $n(t,e,r){e.forEach(e=>t.fire(e,r))}function Kn(n,a,i){return function(e){var t=this._active,r=this.pickEvent(e);r!==t&&(t&&t.exit||$n(this,i,e),this._active=r,$n(this,a,e)),$n(this,n,e)}}function Yn(t){return function(e){$n(this,t,e),this._active=null}}function Jn(){return\"undefined\"!=typeof window&&window.devicePixelRatio||1}function Qn(e,t,r,n,a,i){var o=\"undefined\"!=typeof HTMLElement&&e instanceof HTMLElement&&null!=e.parentNode,s=e.getContext(\"2d\"),a=o?Jn():a;e.width=t*a,e.height=r*a;for(const l in i)s[l]=i[l];o&&1!==a&&(e.style.width=t+\"px\",e.style.height=r+\"px\"),s.pixelRatio=a,s.setTransform(a,0,0,a,a*n[0],a*n[1])}class uo extends Wi{constructor(e){super(e),this._options={},this._redraw=!1,this._dirty=new m,this._tempb=new m}initialize(e,t,r,n,a,i){return this._options=i||{},this._canvas=this._options.externalContext?null:$.canvas(1,1,this._options.type),e&&this._canvas&&(k(e,0).appendChild(this._canvas),this._canvas.setAttribute(\"class\",\"marks\")),super.initialize(e,t,r,n,a)}resize(e,t,r,n){return super.resize(e,t,r,n),this._canvas?Qn(this._canvas,this._width,this._height,this._origin,this._scale,this._options.context):((e=this._options.externalContext)||f.error(\"CanvasRenderer is missing a valid canvas or context\"),e.scale(this._scale,this._scale),e.translate(this._origin[0],this._origin[1])),this._redraw=!0,this}canvas(){return this._canvas}context(){return this._options.externalContext||(this._canvas?this._canvas.getContext(\"2d\"):null)}dirty(e){var t=this._tempb.clear().union(e.bounds);let r=e.mark.group;for(;r;)t.translate(r.x||0,r.y||0),r=r.mark.group;this._dirty.union(t)}_render(e,t){var r=this.context(),n=this._origin,a=this._width,i=this._height,o=this._dirty,s=po(n,a,i),s=(r.save(),this._redraw||o.empty()?(this._redraw=!1,s.expand(1)):Zn(r,s.intersect(o),n));return this.clear(-n[0],-n[1],a,i),this.draw(r,e,s,t),r.restore(),o.clear(),this}draw(e,t,r,n){var a;(\"group\"===t.marktype||null==n||n.includes(t.marktype))&&(a=O[t.marktype],t.clip&&Nr(e,t),a.draw.call(this,e,t,r,n),t.clip)&&e.restore()}clear(e,t,r,n){var a=this._options,i=this.context();\"pdf\"===a.type||a.externalContext||i.clearRect(e,t,r,n),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(e,t,r,n))}}const po=(e,t,r)=>(new m).set(0,0,t,r).translate(-e[0],-e[1]);function Zn(e,t,r){return t.expand(1).round(),e.pixelRatio%1&&t.scale(e.pixelRatio).round().scale(1/e.pixelRatio),t.translate(-r[0]%1,-r[1]%1),e.beginPath(),e.rect(t.x1,t.y1,t.width(),t.height()),e.clip(),t}class fo extends zi{constructor(e,t){super(e,t);const r=this;r._hrefHandler=ho(r,(e,t)=>{t&&t.href&&r.handleHref(e,t,t.href)}),r._tooltipHandler=ho(r,(e,t)=>{r.handleTooltip(e,t,e.type!==so)})}initialize(e,t,r){let n=this._svg;return n&&(n.removeEventListener(\"click\",this._hrefHandler),n.removeEventListener(oo,this._tooltipHandler),n.removeEventListener(so,this._tooltipHandler)),this._svg=n=e&&jn(e,\"svg\"),n&&(n.addEventListener(\"click\",this._hrefHandler),n.addEventListener(oo,this._tooltipHandler),n.addEventListener(so,this._tooltipHandler)),super.initialize(e,t,r)}canvas(){return this._svg}on(e,t){var r=this.eventName(e),n=this._handlers;return this._handlerIndex(n[r],e,t)<0&&(e={type:e,handler:t,listener:ho(this,t)},(n[r]||(n[r]=[])).push(e),this._svg)&&this._svg.addEventListener(r,e.listener),this}off(e,t){var r=this.eventName(e),n=this._handlers[r],e=this._handlerIndex(n,e,t);return 0<=e&&(this._svg&&this._svg.removeEventListener(r,n[e].listener),n.splice(e,1)),this}}const ho=(r,n)=>e=>{var t=e.target.__data__,t=Array.isArray(t)?t[0]:t;e.vegaType=e.type,n.call(r._obj,e,t)},mo=\"aria-hidden\",go=\"aria-label\",_o=\"role\",yo=\"aria-roledescription\",To=\"graphics-object\",vo=\"graphics-symbol\",bo=(e,t,r)=>({[_o]:e,[yo]:t,[go]:r||void 0}),Eo=f.toSet([\"axis-domain\",\"axis-grid\",\"axis-label\",\"axis-tick\",\"axis-title\",\"legend-band\",\"legend-entry\",\"legend-gradient\",\"legend-label\",\"legend-title\",\"legend-symbol\",\"title\"]),So={axis:{desc:\"axis\",caption:aa},legend:{desc:\"legend\",caption:ia},\"title-text\":{desc:\"title\",caption:e=>`Title text '${na(e)}'`},\"title-subtitle\":{desc:\"subtitle\",caption:e=>`Subtitle text '${na(e)}'`}},Ao={ariaRole:_o,ariaRoleDescription:yo,description:go};function Xn(e,t){var r=!1===t.aria;if(e(mo,r||void 0),r||null==t.description)for(const n in Ao)e(Ao[n],void 0);else{r=t.mark.marktype;e(go,t.description),e(_o,t.ariaRole||(\"group\"===r?To:vo)),e(yo,t.ariaRoleDescription||r+\" mark\")}}function ea(e){return!1===e.aria?{[mo]:!0}:Eo[e.role]?null:So[e.role]?ra(e,So[e.role]):ta(e)}function ta(e){var t=e.marktype,r=\"group\"===t||\"text\"===t||e.items.some(e=>null!=e.description&&!1!==e.aria);return bo(r?To:vo,t+\" mark container\",e.description)}function ra(e,t){try{var r=e.items[0],n=t.caption||(()=>\"\");return bo(t.role||vo,t.desc,r.description||n(r))}catch(e){return null}}function na(e){return f.array(e.text).join(\" \")}function aa(e){var t=e.datum,r=e.orient,n=t.title?oa(e):null,a=e.context,t=a.scales[t.scale].value,a=a.dataflow.locale(),i=t.type;return(\"left\"===r||\"right\"===r?\"Y\":\"X\")+\"-axis\"+(n?` titled '${n}'`:\"\")+` for a ${Y.isDiscrete(i)?\"discrete\":i} scale`+\" with \"+Y.domainCaption(a,t,e)}function ia(e){var t=e.datum,r=t.title?oa(e):null,n=`${t.type||\"\"} legend`.trim(),t=t.scales,a=Object.keys(t),i=e.context,t=i.scales[t[a[0]]].value,i=i.dataflow.locale();return la(n)+(r?` titled '${r}'`:\"\")+\" for \"+sa(a)+\" with \"+Y.domainCaption(i,t,e)}function oa(e){try{return f.array(f.peek(e.items).items[0].text).join(\" \")}catch(e){return null}}function sa(e){return(e=e.map(e=>e+(\"fill\"===e||\"stroke\"===e?\" color\":\"\"))).length<2?e[0]:e.slice(0,-1).join(\", \")+\" and \"+f.peek(e)}function la(e){return e.length?e[0].toUpperCase()+e.slice(1):e}const Oo=e=>(e+\"\").replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"),Co=e=>Oo(e).replace(/\"/g,\"&quot;\").replace(/\\t/g,\"&#x9;\").replace(/\\n/g,\"&#xA;\").replace(/\\r/g,\"&#xD;\");function ca(){let i=\"\",o=\"\",s=\"\";const l=[],c=()=>o=s=\"\",u=(e,t)=>(null!=t&&(o+=` ${e}=\"${Co(t)}\"`),d),d={open(e,...t){var r;r=e,o&&(i+=o+\">\"+s,c()),l.push(r),o=\"<\"+e;for(const n of t)for(const a in n)u(a,n[a]);return d},close(){var e=l.pop();return o?i+=o+(s?`>${s}</${e}>`:\"/>\"):i+=`</${e}>`,c(),d},attr:u,text:e=>(s+=Oo(e),d),toString:()=>i};return d}const wo=e=>ua(ca(),e)+\"\";function ua(t,e){if(t.open(e.tagName),e.hasAttributes()){var r=e.attributes,n=r.length;for(let e=0;e<n;++e)t.attr(r[e].name,r[e].value)}if(e.hasChildNodes())for(const a of e.childNodes)3===a.nodeType?t.text(a.nodeValue):ua(t,a);return t.close()}const ko={fill:\"fill\",fillOpacity:\"fill-opacity\",stroke:\"stroke\",strokeOpacity:\"stroke-opacity\",strokeWidth:\"stroke-width\",strokeCap:\"stroke-linecap\",strokeJoin:\"stroke-linejoin\",strokeDash:\"stroke-dasharray\",strokeDashOffset:\"stroke-dashoffset\",strokeMiterLimit:\"stroke-miterlimit\",opacity:\"opacity\"},Io={blend:\"mix-blend-mode\"},Ro={fill:\"none\",\"stroke-miterlimit\":10},No=\"http://www.w3.org/2000/xmlns/\",q=qr.xmlns;class Mo extends Wi{constructor(e){super(e),this._dirtyID=0,this._dirty=[],this._svg=null,this._root=null,this._defs=null}initialize(e,t,r,n,a){return this._defs={},this._clearDefs(),e&&(this._svg=w(e,0,\"svg\",q),this._svg.setAttributeNS(No,\"xmlns\",q),this._svg.setAttributeNS(No,\"xmlns:xlink\",qr[\"xmlns:xlink\"]),this._svg.setAttribute(\"version\",qr.version),this._svg.setAttribute(\"class\",\"marks\"),k(e,1),this._root=w(this._svg,0,\"g\",q),I(this._root,Ro),k(this._svg,1)),this.background(this._bgcolor),super.initialize(e,t,r,n,a)}background(e){return arguments.length&&this._svg&&this._svg.style.setProperty(\"background-color\",e),super.background(...arguments)}resize(e,t,r,n){return super.resize(e,t,r,n),this._svg&&(I(this._svg,{width:this._width*this._scale,height:this._height*this._scale,viewBox:`0 0 ${this._width} `+this._height}),this._root.setAttribute(\"transform\",`translate(${this._origin})`)),this._dirty=[],this}canvas(){return this._svg}svg(){var e=this._svg,t=this._bgcolor;if(!e)return null;let r;t&&(e.removeAttribute(\"style\"),I(r=w(e,0,\"rect\",q),{width:this._width,height:this._height,fill:t}));var n=wo(e);return t&&(e.removeChild(r),this._svg.style.setProperty(\"background-color\",t)),n}_render(e,t){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDefs(),this.mark(this._root,e,void 0,t),k(this._root,1)),this.defs(),this._dirty=[],++this._dirtyID,this}dirty(e){e.dirty!==this._dirtyID&&(e.dirty=this._dirtyID,this._dirty.push(e))}isDirty(e){return this._dirtyAll||!e._svg||!e._svg.ownerSVGElement||e.dirty===this._dirtyID}_dirtyCheck(){this._dirtyAll=!0;var e=this._dirty;if(!e.length||!this._dirtyID)return!0;const t=++this._dirtyID;let r,n,a,i,o,s,l;for(o=0,s=e.length;o<s;++o)r=e[o],(n=r.mark).marktype!==a&&(a=n.marktype,i=O[a]),n.zdirty&&n.dirty!==t&&(this._dirtyAll=!1,da(r,t),n.items.forEach(e=>{e.dirty=t})),n.zdirty||(r.exit?(i.nested&&n.items.length?(l=n.items[0])._svg&&this._update(i,l._svg,l):r._svg&&(l=r._svg.parentNode)&&l.removeChild(r._svg),r._svg=null):(r=i.nested?n.items[0]:r)._update!==t&&(r._svg&&r._svg.ownerSVGElement?this._update(i,r._svg,r):(this._dirtyAll=!1,da(r,t)),r._update=t));return!this._dirtyAll}mark(e,t,r,n){if(!this.isDirty(t))return t._svg;const a=this._svg,i=t.marktype,o=O[i],s=!1===t.interactive?\"none\":null,l=\"g\"===o.tag,c=ma(t,e,r,\"g\",a);if(\"group\"!==i&&null!=n&&!n.includes(i))return k(c,0),t._svg;c.setAttribute(\"class\",Hn(t));var u=ea(t);for(const f in u)R(c,f,u[f]);l||R(c,\"pointer-events\",s),R(c,\"clip-path\",t.clip?Gt(this,t,t.group):null);let d=null,p=0;e=e=>{var t=this.isDirty(e),r=ma(e,c,d,o.tag,a);t&&(this._update(o,r,e),l)&&ha(this,r,e,n),d=r,++p};return o.nested?t.items.length&&e(t.items[0]):y(t,e),k(c,p),c}_update(e,t,r){l=t,p=t.__values__,Xn(_a,r),e.attr(_a,r,this);var n=Po[e.type];n&&n.call(this,e,t,r),l&&this.style(l,r)}style(t,r){if(null!=r){for(const a in ko){let e=\"font\"===a?An(r):r[a];var n;e!==p[a]&&(n=ko[a],null==e?t.removeAttribute(n):(Q(e)&&(e=Z(e,this._defs.gradient,va())),t.setAttribute(n,e+\"\")),p[a]=e)}for(const e in Io)ya(t,Io[e],r[e])}}defs(){var e=this._svg,t=this._defs;let r=t.el,n=0;for(const a in t.gradient)r||(t.el=r=w(e,1,\"defs\",q)),n=pa(r,t.gradient[a],n);for(const i in t.clipping)r||(t.el=r=w(e,1,\"defs\",q)),n=fa(r,t.clipping[i],n);r&&(0===n?(e.removeChild(r),t.el=null):k(r,n))}_clearDefs(){var e=this._defs;e.gradient={},e.clipping={}}}function da(e,t){for(;e&&e.dirty!==t;e=e.mark.group){if(e.dirty=t,!e.mark||e.mark.dirty===t)return;e.mark.dirty=t}}function pa(e,t,r){let n,a,i;var o;for(\"radial\"===t.gradient?(I(o=w(e,r++,\"pattern\",q),{id:Da+t.id,viewBox:\"0,0,1,1\",width:\"100%\",height:\"100%\",preserveAspectRatio:\"xMidYMid slice\"}),I(o=w(o,0,\"rect\",q),{width:1,height:1,fill:`url(${va()}#${t.id})`}),I(e=w(e,r++,\"radialGradient\",q),{id:t.id,fx:t.x1,fy:t.y1,fr:t.r1,cx:t.x2,cy:t.y2,r:t.r2})):I(e=w(e,r++,\"linearGradient\",q),{id:t.id,x1:t.x1,x2:t.x2,y1:t.y1,y2:t.y2}),n=0,a=t.stops.length;n<a;++n)(i=w(e,n,\"stop\",q)).setAttribute(\"offset\",t.stops[n].offset),i.setAttribute(\"stop-color\",t.stops[n].color);return k(e,n),r}function fa(e,t,r){let n;return(e=w(e,r,\"clipPath\",q)).setAttribute(\"id\",t.id),t.path?(n=w(e,0,\"path\",q)).setAttribute(\"d\",t.path):I(n=w(e,0,\"rect\",q),{x:0,y:0,width:t.width,height:t.height}),k(e,1),r+1}function ha(t,r,e,n){r=r.lastChild.previousSibling;let a,i=0;y(e,e=>{a=t.mark(r,e,a,n),++i}),k(r,1+i)}function ma(e,t,r,n,a){let i=e._svg,o;return i||(o=t.ownerDocument,i=C(o,n,q),e._svg=i,e.mark&&(i.__data__=e,i.__values__={fill:\"default\"},\"g\"===n)&&(n=C(o,\"path\",q),i.appendChild(n),n.__data__=e,n=C(o,\"g\",q),i.appendChild(n),n.__data__=e,n=C(o,\"path\",q),i.appendChild(n),n.__data__=e,n.__values__={fill:\"default\"})),i.ownerSVGElement===a&&!ga(i,r)||t.insertBefore(i,r?r.nextSibling:t.firstChild),i}function ga(e,t){return e.parentNode&&1<e.parentNode.childNodes.length&&e.previousSibling!=t}let l=null,p=null;const Po={group(e,t,r){var n=l=t.childNodes[2],t=(p=n.__values__,e.foreground(_a,r,this),p=t.__values__,l=t.childNodes[1],e.content(_a,r,this),l=t.childNodes[0]),e=(e.background(_a,r,this),!1===r.mark.interactive?\"none\":null);e!==p.events&&(R(n,\"pointer-events\",e),R(t,\"pointer-events\",e),p.events=e),r.strokeForeground&&r.stroke?(e=r.fill,R(n,\"display\",null),this.style(t,r),R(t,\"stroke\",null),e&&(r.fill=null),p=n.__values__,this.style(n,r),e&&(r.fill=e),l=null):R(n,\"display\",\"none\")},image(e,t,r){!1===r.smooth?(ya(t,\"image-rendering\",\"optimizeSpeed\"),ya(t,\"image-rendering\",\"pixelated\")):ya(t,\"image-rendering\",null)},text(e,n,a){var t=vn(a);let r,i,o,s;f.isArray(t)?(r=(i=t.map(e=>A(a,e))).join(\"\\n\"))!==p.text&&(k(n,0),o=n.ownerDocument,s=S(a),i.forEach((e,t)=>{var r=C(o,\"tspan\",q);r.__data__=a,r.textContent=e,t&&(r.setAttribute(\"x\",0),r.setAttribute(\"dy\",s)),n.appendChild(r)}),p.text=r):(i=A(a,t))!==p.text&&(n.textContent=i,p.text=i),R(n,\"font-family\",An(a)),R(n,\"font-size\",E(a)+\"px\"),R(n,\"font-style\",a.fontStyle),R(n,\"font-variant\",a.fontVariant),R(n,\"font-weight\",a.fontWeight)}};function _a(e,t,r){t!==p[e]&&(r?Ta(l,e,t,r):R(l,e,t),p[e]=t)}function ya(e,t,r){r!==p[t]&&(null==r?e.style.removeProperty(t):e.style.setProperty(t,r+\"\"),p[t]=r)}function I(e,t){for(const r in t)R(e,r,t[r])}function R(e,t,r){null!=r?e.setAttribute(t,r):e.removeAttribute(t)}function Ta(e,t,r,n){null!=r?e.setAttributeNS(n,t,r):e.removeAttributeNS(n,t)}function va(){var e;return\"undefined\"==typeof window?\"\":(e=window.location).hash?e.href.slice(0,-e.hash.length):e.href}class Do extends Wi{constructor(e){super(e),this._text=null,this._defs={gradient:{},clipping:{}}}svg(){return this._text}_render(e){var t=ca(),r=(t.open(\"svg\",f.extend({},qr,{class:\"marks\",width:this._width*this._scale,height:this._height*this._scale,viewBox:`0 0 ${this._width} `+this._height})),this._bgcolor);return r&&\"transparent\"!==r&&\"none\"!==r&&t.open(\"rect\",{width:this._width,height:this._height,fill:r}).close(),t.open(\"g\",Ro,{transform:\"translate(\"+this._origin+\")\"}),this.mark(t,e),t.close(),this.defs(t),this._text=t.close()+\"\",this}mark(s,l){const c=O[l.marktype],u=c.tag,d=[Xn,c.attr];s.open(\"g\",{class:Hn(l),\"clip-path\":l.clip?Gt(this,l,l.group):null},ea(l),{\"pointer-events\":\"g\"!==u&&!1===l.interactive?\"none\":null});var e=t=>{var e,r,n,a=this.href(t);if(a&&s.open(\"a\",a),s.open(u,this.attr(l,t,d,\"g\"!==u?u:null)),\"text\"===u){var i=vn(t);if(f.isArray(i)){var o={x:0,dy:S(t)};for(let e=0;e<i.length;++e)s.open(\"tspan\",e?o:null).text(A(t,i[e])).close()}else s.text(A(t,i))}else\"g\"===u&&(e=t.strokeForeground,r=t.fill,n=t.stroke,e&&n&&(t.stroke=null),s.open(\"path\",this.attr(l,t,c.background,\"bgrect\")).close(),s.open(\"g\",this.attr(l,t,c.content)),y(t,e=>this.mark(s,e)),s.close(),e&&n?(r&&(t.fill=null),t.stroke=n,s.open(\"path\",this.attr(l,t,c.foreground,\"bgrect\")).close(),r&&(t.fill=r)):s.open(\"path\",this.attr(l,t,c.foreground,\"bgfore\")).close());s.close(),a&&s.close()};return c.nested?l.items&&l.items.length&&e(l.items[0]):y(l,e),s.close()}href(e){const t=e.href;if(t){if(e=this._hrefs&&this._hrefs[t])return e;this.sanitizeURL(t).then(e=>{e[\"xlink:href\"]=e.href,e.href=null,(this._hrefs||(this._hrefs={}))[t]=e})}return null}attr(e,t,r,n){const a={},i=(e,t,r,n)=>{a[n||e]=t};return Array.isArray(r)?r.forEach(e=>e(i,t,this)):r(i,t,this),n&&ba(a,t,e,n,this._defs),a}defs(t){var e=this._defs.gradient,r=this._defs.clipping,n=Object.keys(e).length+Object.keys(r).length;if(0!==n){t.open(\"defs\");for(const s in e){var a=e[s],i=a.stops;\"radial\"===a.gradient?(t.open(\"pattern\",{id:Da+s,viewBox:\"0,0,1,1\",width:\"100%\",height:\"100%\",preserveAspectRatio:\"xMidYMid slice\"}),t.open(\"rect\",{width:\"1\",height:\"1\",fill:\"url(#\"+s+\")\"}).close(),t.close(),t.open(\"radialGradient\",{id:s,fx:a.x1,fy:a.y1,fr:a.r1,cx:a.x2,cy:a.y2,r:a.r2})):t.open(\"linearGradient\",{id:s,x1:a.x1,x2:a.x2,y1:a.y1,y2:a.y2});for(let e=0;e<i.length;++e)t.open(\"stop\",{offset:i[e].offset,\"stop-color\":i[e].color}).close();t.close()}for(const l in r){var o=r[l];t.open(\"clipPath\",{id:l}),(o.path?t.open(\"path\",{d:o.path}):t.open(\"rect\",{x:0,y:0,width:o.width,height:o.height})).close(),t.close()}t.close()}}}function ba(t,r,e,n,a){let i;if(null!=r&&(\"bgrect\"===n&&!1===e.interactive&&(t[\"pointer-events\"]=\"none\"),\"bgfore\"!==n||(!1===e.interactive&&(t[\"pointer-events\"]=\"none\"),t.display=\"none\",null===r.fill))){\"image\"===n&&!1===r.smooth&&(i=[\"image-rendering: optimizeSpeed;\",\"image-rendering: pixelated;\"]),\"text\"===n&&(t[\"font-family\"]=An(r),t[\"font-size\"]=E(r)+\"px\",t[\"font-style\"]=r.fontStyle,t[\"font-variant\"]=r.fontVariant,t[\"font-weight\"]=r.fontWeight);for(const l in ko){let e=r[l];var o=ko[l];(\"transparent\"!==e||\"fill\"!==o&&\"stroke\"!==o)&&null!=e&&(Q(e)&&(e=Z(e,a.gradient,\"\")),t[o]=e)}for(const c in Io){var s=r[c];null!=s&&(i=i||[]).push(Io[c]+`: ${s};`)}i&&(t.style=i.join(\" \"))}}const z={svgMarkTypes:[\"text\"],svgOnTop:!0,debug:!1};function Ea(e){z.svgMarkTypes=e.svgMarkTypes??[\"text\"],z.svgOnTop=e.svgOnTop??!0,z.debug=e.debug??!1}class xo extends Wi{constructor(e){super(e),this._svgRenderer=new Mo(e),this._canvasRenderer=new uo(e)}initialize(e,t,r,n,a){this._root_el=w(e,0,\"div\");var i=w(this._root_el,0,\"div\"),o=w(this._root_el,1,\"div\");return this._root_el.style.position=\"relative\",z.debug||(i.style.height=\"100%\",o.style.position=\"absolute\",o.style.top=\"0\",o.style.left=\"0\",o.style.height=\"100%\",o.style.width=\"100%\"),this._svgEl=z.svgOnTop?o:i,this._canvasEl=z.svgOnTop?i:o,this._svgEl.style.pointerEvents=\"none\",this._canvasRenderer.initialize(this._canvasEl,t,r,n,a),this._svgRenderer.initialize(this._svgEl,t,r,n,a),super.initialize(e,t,r,n,a)}dirty(e){return(z.svgMarkTypes.includes(e.mark.marktype)?this._svgRenderer:this._canvasRenderer).dirty(e),this}_render(e,t){t=(t??[\"arc\",\"area\",\"image\",\"line\",\"path\",\"rect\",\"rule\",\"shape\",\"symbol\",\"text\",\"trail\"]).filter(e=>!z.svgMarkTypes.includes(e));this._svgRenderer.render(e,z.svgMarkTypes),this._canvasRenderer.render(e,t)}resize(e,t,r,n){return super.resize(e,t,r,n),this._svgRenderer.resize(e,t,r,n),this._canvasRenderer.resize(e,t,r,n),this}background(e){return(z.svgOnTop?this._canvasRenderer:this._svgRenderer).background(e),this}}class Lo extends lo{constructor(e,t){super(e,t)}initialize(e,t,r){e=w(w(e,0,\"div\"),z.svgOnTop?0:1,\"div\");return super.initialize(e,t,r)}}const Fo={Canvas:\"canvas\",PNG:\"png\",SVG:\"svg\",Hybrid:\"hybrid\",None:\"none\"},W={};function Sa(e,t){return e=String(e||\"\").toLowerCase(),1<arguments.length?(W[e]=t,this):W[e]}function Aa(e,t,r){var n=[],t=(new m).union(t),a=e.marktype;return a?Oa(e,t,r,n):\"group\"===a?wa(e,t,r,n):f.error(\"Intersect scene must be mark node or group item.\")}function Oa(t,r,n,a){if(Ca(t,r,n)){var i=t.items,t=t.marktype,o=i.length;let e=0;if(\"group\"===t)for(;e<o;++e)wa(i[e],r,n,a);else for(var s=O[t].isect;e<o;++e){var l=i[e];ka(l,r,s)&&a.push(l)}}return a}function Ca(e,t,r){return e.bounds&&t.intersects(e.bounds)&&(\"group\"===e.marktype||!1!==e.interactive&&(!r||r(e)))}function wa(e,t,r,n){r&&r(e.mark)&&ka(e,t,O.group.isect)&&n.push(e);var a=e.items,i=a&&a.length;if(i){var o=e.x||0,e=e.y||0;t.translate(-o,-e);for(let e=0;e<i;++e)Oa(a[e],t,r,n);t.translate(o,e)}return n}function ka(e,t,r){var n=e.bounds;return t.encloses(n)||t.intersects(n)&&r(e,t)}W.canvas=W.png={renderer:uo,headless:uo,handler:lo},W.svg={renderer:Mo,headless:Do,handler:fo},W.hybrid={renderer:xo,headless:xo,handler:Lo},W.none={};const Uo=new m;function Ia(e){var t=e.clip;if(f.isFunction(t))t(Yt(Uo.clear()));else{if(!t)return;Uo.set(0,0,e.group.width,e.group.height)}e.bounds.intersect(Uo)}const Bo=1e-9;function Ra(e,t,r){return e===t||(\"path\"===r?Na(e,t):e instanceof Date&&t instanceof Date?+e==+t:f.isNumber(e)&&f.isNumber(t)?Math.abs(e-t)<=Bo:e&&t&&(f.isObject(e)||f.isObject(t))?Ma(e,t):e==t)}function Na(e,t){return Ra(dt(e),dt(t))}function Ma(e,t){var r,n,a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(a.sort(),i.sort(),n=a.length-1;0<=n;n--)if(a[n]!=i[n])return!1;for(n=a.length-1;0<=n;n--)if(!Ra(e[r=a[n]],t[r],r))return!1;return typeof e==typeof t}function Pa(){Ht(),J()}e.Bounds=m,e.CanvasHandler=lo,e.CanvasRenderer=uo,e.Gradient=X,e.GroupItem=qt,e.Handler=zi,e.HybridHandler=Lo,e.HybridRenderer=xo,e.Item=Vt,e.Marks=O,e.RenderType=Fo,e.Renderer=Wi,e.ResourceLoader=ki,e.SVGHandler=fo,e.SVGRenderer=Mo,e.SVGStringRenderer=Do,e.Scenegraph=qi,e.boundClip=Ia,e.boundContext=Yt,e.boundItem=Pn,e.boundMark=xn,e.boundStroke=$t,e.domChild=w,e.domClear=k,e.domCreate=C,e.domFind=jn,e.font=On,e.fontFamily=An,e.fontSize=E,e.intersect=Aa,e.intersectBoxLine=nr,e.intersectPath=Xt,e.intersectPoint=er,e.intersectRule=rr,e.lineHeight=S,e.markup=ca,e.multiLineOffset=bn,e.path=ae,e.pathCurves=ut,e.pathEqual=Na,e.pathParse=dt,e.pathRectangle=It,e.pathRender=Tt,e.pathSymbols=bt,e.pathTrail=Rt,e.point=Gn,e.renderModule=Sa,e.resetSVGClipId=Ht,e.resetSVGDefIds=Pa,e.sceneEqual=Ra,e.sceneFromJSON=Fn,e.scenePickVisit=fr,e.sceneToJSON=Ln,e.sceneVisit=y,e.sceneZOrder=pr,e.serializeXML=wo,e.setHybridRendererOptions=Ea,e.textMetrics=b}}return dD.exports}function vD(){if(!gD){gD=1;var e=uD.exports;{var t=rD(),v=TD(),l=HP();const S=\"top\",A=\"left\",O=\"right\",C=\"bottom\",pe=\"top-left\",fe=\"top-right\",he=\"bottom-left\",me=\"bottom-right\",T=\"start\",D=\"middle\",x=\"end\",ge=\"x\",_e=\"y\",w=\"group\",y=\"axis\",k=\"title\",ye=\"frame\",Te=\"scope\",I=\"legend\",R=\"row-header\",N=\"row-footer\",M=\"row-title\",L=\"column-header\",F=\"column-footer\",U=\"column-title\",ve=\"padding\",be=\"symbol\",Ee=\"fit\",Se=\"fit-x\",Ae=\"fit-y\",Oe=\"pad\",B=\"none\",j=\"all\",H=\"each\",G=\"flush\",V=\"column\",q=\"row\";function n(e){t.Transform.call(this,null,e)}function c(e,t,r){return t(e.bounds.clear(),e,r)}l.inherits(n,t.Transform,{transform(e,t){const r=t.dataflow,n=e.mark,a=n.marktype,i=v.Marks[a],o=i.bound;let s=n.bounds,l;if(i.nested)n.items.length&&r.dirty(n.items[0]),s=c(n,o),n.items.forEach(e=>{e.bounds.clear().union(s)});else if(a===w||e.modified())switch(t.visit(t.MOD,e=>r.dirty(e)),s.clear(),n.items.forEach(e=>s.union(c(e,o))),n.role){case y:case I:case k:t.reflow()}else l=t.changed(t.REM),t.visit(t.ADD,e=>{s.union(c(e,o))}),t.visit(t.MOD,e=>{l=l||s.alignsWith(e.bounds),r.dirty(e),s.union(c(e,o))}),l&&(s.clear(),n.items.forEach(e=>s.union(e.bounds)));return v.boundClip(n),t.modifies(\"bounds\")}});const Ce=\":vega_identifier:\";function r(e){t.Transform.call(this,0,e)}function i(e){return e._signals[Ce]||(e._signals[Ce]=e.add(0))}function a(e){t.Transform.call(this,null,e)}function o(e){var t=e.groups,e=e.parent;return t&&1===t.size?t.get(Object.keys(t.object)[0]):t&&e?t.lookup(e):null}function s(e){t.Transform.call(this,null,e)}r.Definition={type:\"Identifier\",metadata:{modifies:!0},params:[{name:\"as\",type:\"string\",required:!0}]},l.inherits(r,t.Transform,{transform(e,t){const r=i(t.dataflow),n=e.as;let a=r.value;return t.visit(t.ADD,e=>e[n]=e[n]||++a),r.set(this.value=a),t}}),l.inherits(a,t.Transform,{transform(e,t){let r=this.value;r||((r=t.dataflow.scenegraph().mark(e.markdef,o(e),e.index)).group.context=e.context,e.context.group||(e.context.group=r.group),r.source=this.source,r.clip=e.clip,r.interactive=e.interactive,this.value=r);const n=r.marktype===w?v.GroupItem:v.Item;return t.visit(t.ADD,e=>n.call(e,r)),(e.modified(\"clip\")||e.modified(\"interactive\"))&&(r.clip=e.clip,r.interactive=!!e.interactive,r.zdirty=!0,t.reflow()),r.items=t.source,t}});const we={parity:e=>e.filter((e,t)=>t%2?e.opacity=0:1),greedy:(e,r)=>{let n;return e.filter((e,t)=>t&&ke(n.bounds,e.bounds,r)?e.opacity=0:(n=e,1))}},ke=(e,t,r)=>r>Math.max(t.x1-e.x2,e.x1-t.x2,t.y1-e.y2,e.y1-t.y2),Ie=(e,t)=>{for(var r,n=1,a=e.length,i=e[0].bounds;n<a;i=r,++n)if(ke(i,r=e[n].bounds,t))return!0},Re=e=>{e=e.bounds;return 1<e.width()&&1<e.height()},Ne=(e,t,r)=>{var e=e.range(),n=new v.Bounds;return t===S||t===C?n.set(e[0],-1/0,e[1],1/0):n.set(-1/0,e[0],1/0,e[1]),n.expand(r||1),e=>n.encloses(e.bounds)},Me=e=>(e.forEach(e=>e.opacity=1),e),Pe=(e,t)=>e.reflow(t.modified()).modifies(\"opacity\");function u(e){t.Transform.call(this,null,e)}l.inherits(s,t.Transform,{transform(e,t){var r=we[e.method]||we.parity,n=e.separation||0;let a=t.materialize(t.SOURCE).source,i,o;if(a&&a.length){if(!e.method)return e.modified(\"method\")&&(Me(a),t=Pe(t,e)),t;if((a=a.filter(Re)).length){if(e.sort&&(a=a.slice().sort(e.sort)),i=Me(a),t=Pe(t,e),3<=i.length&&Ie(i,n)){for(;3<=(i=r(i,n)).length&&Ie(i,n););i.length<3&&!l.peek(a).opacity&&(1<i.length&&(l.peek(i).opacity=0),l.peek(a).opacity=1)}e.boundScale&&0<=e.boundTolerance&&(o=Ne(e.boundScale,e.boundOrient,+e.boundTolerance),a.forEach(e=>{o(e)||(e.opacity=0)}));const s=i[0].mark.bounds.clear();return a.forEach(e=>{e.opacity&&s.union(e.bounds)}),t}}}}),l.inherits(u,t.Transform,{transform(e,t){const r=t.dataflow;t.visit(t.ALL,e=>r.dirty(e)),t.fields&&t.fields.zindex&&(t=t.source&&t.source[0])&&(t.mark.zdirty=!0)}});const z=new v.Bounds;function b(e,t,r){return e[t]===r?0:(e[t]=r,1)}function W(e){e=e.items[0].orient;return e===A||e===O}function $(e){let t=+e.grid;return[e.ticks?t++:-1,e.labels?t++:-1,t+ +e.domain]}function K(e,t,r,n){var a,i=t.items[0],t=i.datum,o=null!=i.translate?i.translate:.5,s=i.orient,l=$(t),c=i.range,u=i.offset,d=i.position,p=i.minExtent,f=i.maxExtent,h=t.title&&i.items[l[2]].items[0],m=i.titlePadding,g=i.bounds,_=h&&v.multiLineOffset(h),y=0,T=0;switch(z.clear().union(g),g.clear(),-1<(t=l[0])&&g.union(i.items[t].bounds),-1<(t=l[1])&&g.union(i.items[t].bounds),s){case S:y=d||0,T=-u,a=Math.max(p,Math.min(f,-g.y1)),g.add(0,-a).add(c,0),h&&E(e,h,a,m,_,0,-1,g);break;case A:y=-u,T=d||0,a=Math.max(p,Math.min(f,-g.x1)),g.add(-a,0).add(0,c),h&&E(e,h,a,m,_,1,-1,g);break;case O:y=r+u,T=d||0,a=Math.max(p,Math.min(f,g.x2)),g.add(0,0).add(a,c),h&&E(e,h,a,m,_,1,1,g);break;case C:y=d||0,T=n+u,a=Math.max(p,Math.min(f,g.y2)),g.add(0,0).add(c,a),h&&E(e,h,a,m,0,0,1,g);break;default:y=i.x,T=i.y}return v.boundStroke(g.translate(y,T),i),b(i,\"x\",y+o)|b(i,\"y\",T+o)&&(i.bounds=z,e.dirty(i),i.bounds=g,e.dirty(i)),i.mark.bounds.clear().union(g)}function E(r,n,a,i,o,s,l,e){var c=n.bounds;if(n.auto){l=l*(a+o+i);let e=0,t=0;r.dirty(n),s?e=(n.x||0)-(n.x=l):t=(n.y||0)-(n.y=l),n.mark.bounds.clear().union(c.translate(-e,-t)),r.dirty(n)}e.union(c)}const De=(e,t)=>Math.floor(Math.min(e,t)),xe=(e,t)=>Math.ceil(Math.max(e,t));function Y(e){for(var t,r,n=e.items,a=n.length,i=0,o={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};i<a;++i)if(r=(t=n[i]).items,t.marktype===w)switch(t.role){case y:case I:case k:break;case R:o.rowheaders.push(...r);break;case N:o.rowfooters.push(...r);break;case L:o.colheaders.push(...r);break;case F:o.colfooters.push(...r);break;case M:o.rowtitle=r[0];break;case U:o.coltitle=r[0];break;default:o.marks.push(...r)}return o}function J(e){return(new v.Bounds).set(0,0,e.width||0,e.height||0)}function Q(e){var t=e.bounds.clone();return t.empty()?t.set(0,0,0,0):t.translate(-(e.x||0),-(e.y||0))}function P(e,t,r){t=l.isObject(e)?e[t]:e;return null!=t?t:void 0!==r?r:0}function Z(e){return e<0?Math.ceil(-e):0}function X(e,t,r){for(var n,a,i,o,s,l,c,u,d,p,f=!r.nodirty,h=r.bounds===G?J:Q,m=z.set(0,0,0,0),g=P(r.align,V),_=P(r.align,q),y=P(r.padding,V),T=P(r.padding,q),v=r.columns||t.length,b=v<=0?1:Math.ceil(t.length/v),E=t.length,S=Array(E),A=Array(v),O=0,C=Array(E),w=Array(b),k=0,I=Array(E),R=Array(E),N=Array(E),M=0;M<v;++M)A[M]=0;for(M=0;M<b;++M)w[M]=0;for(M=0;M<E;++M)s=t[M],o=N[M]=h(s),s.x=s.x||0,I[M]=0,s.y=s.y||0,R[M]=0,a=M%v,i=~~(M/v),O=Math.max(O,l=Math.ceil(o.x2)),k=Math.max(k,c=Math.ceil(o.y2)),A[a]=Math.max(A[a],l),w[i]=Math.max(w[i],c),S[M]=y+Z(o.x1),C[M]=T+Z(o.y1),f&&e.dirty(t[M]);for(M=0;M<E;++M)M%v==0&&(S[M]=0),M<v&&(C[M]=0);if(g===H)for(a=1;a<v;++a){for(p=0,M=a;M<E;M+=v)p<S[M]&&(p=S[M]);for(M=a;M<E;M+=v)S[M]=p+A[a-1]}else if(g===j){for(M=p=0;M<E;++M)M%v&&p<S[M]&&(p=S[M]);for(M=0;M<E;++M)M%v&&(S[M]=p+O)}else for(g=!1,a=1;a<v;++a)for(M=a;M<E;M+=v)S[M]+=A[a-1];if(_===H)for(i=1;i<b;++i){for(p=0,n=(M=i*v)+v;M<n;++M)p<C[M]&&(p=C[M]);for(M=i*v;M<n;++M)C[M]=p+w[i-1]}else if(_===j){for(p=0,M=v;M<E;++M)p<C[M]&&(p=C[M]);for(M=v;M<E;++M)C[M]=p+k}else for(_=!1,i=1;i<b;++i)for(n=(M=i*v)+v;M<n;++M)C[M]+=w[i-1];for(M=u=0;M<E;++M)u=S[M]+(M%v?u:0),I[M]+=u-t[M].x;for(a=0;a<v;++a)for(d=0,M=a;M<E;M+=v)d+=C[M],R[M]+=d-t[M].y;if(g&&P(r.center,V)&&1<b)for(M=0;M<E;++M)0<(u=(o=g===j?O:A[M%v])-N[M].x2-t[M].x-I[M])&&(I[M]+=u/2);if(_&&P(r.center,q)&&1!==v)for(M=0;M<E;++M)0<(d=(o=_===j?k:w[~~(M/v)])-N[M].y2-t[M].y-R[M])&&(R[M]+=d/2);for(M=0;M<E;++M)m.union(N[M].translate(I[M],R[M]));switch(u=P(r.anchor,ge),d=P(r.anchor,_e),P(r.anchor,V)){case x:u-=m.width();break;case D:u-=m.width()/2}switch(P(r.anchor,q)){case x:d-=m.height();break;case D:d-=m.height()/2}for(u=Math.round(u),d=Math.round(d),m.clear(),M=0;M<E;++M)t[M].mark.bounds.clear();for(M=0;M<E;++M)(s=t[M]).x+=I[M]+=u,s.y+=R[M]+=d,m.union(s.mark.bounds.union(s.bounds.translate(I[M],R[M]))),f&&e.dirty(s);return m}function f(e,t,r){var n,a,i,o,s,l,c,t=Y(t),u=t.marks,d=r.bounds===G?ee:te,p=r.offset,f=r.columns||u.length,h=f<=0?1:Math.ceil(u.length/f),m=h*f,g=X(e,u,r);g.empty()&&g.set(0,0,0,0),t.rowheaders&&(l=P(r.headerBand,q,null),n=_(e,t.rowheaders,u,0,h,-P(p,\"rowHeader\"),De,0,d,\"x1\",0,f,1,l)),t.colheaders&&(l=P(r.headerBand,V,null),a=_(e,t.colheaders,u,0,f,-P(p,\"columnHeader\"),De,1,d,\"y1\",0,1,f,l)),t.rowfooters&&(l=P(r.footerBand,q,null),i=_(e,t.rowfooters,u,0,h,P(p,\"rowFooter\"),xe,0,d,\"x2\",f-1,f,1,l)),t.colfooters&&(l=P(r.footerBand,V,null),o=_(e,t.colfooters,u,0,f,P(p,\"columnFooter\"),xe,1,d,\"y2\",m-f,1,f,l)),t.rowtitle&&(s=P(r.titleAnchor,q),c=P(p,\"rowTitle\"),c=s===x?i+c:n-c,l=P(r.titleBand,q,.5),re(e,t.rowtitle,c,0,g,l)),t.coltitle&&(s=P(r.titleAnchor,V),c=P(p,\"columnTitle\"),c=s===x?o+c:a-c,l=P(r.titleBand,V,.5),re(e,t.coltitle,c,1,g,l))}function ee(e,t){return\"x1\"===t?e.x||0:\"y1\"===t?e.y||0:\"x2\"===t?(e.x||0)+(e.width||0):\"y2\"===t?(e.y||0)+(e.height||0):void 0}function te(e,t){return e.bounds[t]}function _(e,t,r,n,a,i,o,s,l,c,u,d,p,f){var h,m,g,_,y,T,v,b,E,S=r.length,A=0,O=0;if(!S)return A;for(h=u;h<S;h+=d)r[h]&&(A=o(A,l(r[h],c)));if(!t.length)return A;for(t.length>a&&(e.warn(\"Grid headers exceed limit: \"+a),t=t.slice(0,a)),A+=i,m=0,_=t.length;m<_;++m)e.dirty(t[m]),t[m].mark.bounds.clear();for(h=u,m=0,_=t.length;m<_;++m,h+=d){for(y=(T=t[m]).mark.bounds,g=h;0<=g&&null==(v=r[g]);g-=p);E=s?(b=null==f?v.x:Math.round(v.bounds.x1+f*v.bounds.width()),A):(b=A,null==f?v.y:Math.round(v.bounds.y1+f*v.bounds.height())),y.union(T.bounds.translate(b-(T.x||0),E-(T.y||0))),T.x=b,T.y=E,e.dirty(T),O=o(O,y[c])}return O}function re(e,t,r,n,a,i){var o;t&&(e.dirty(t),o=r=r,n?r=Math.round(a.x1+i*a.width()):o=Math.round(a.y1+i*a.height()),t.bounds.translate(r-(t.x||0),o-(t.y||0)),t.mark.bounds.clear().union(t.bounds),t.x=r,t.y=o,e.dirty(t))}function h(r,e){const n=r[e]||{};return(e,t)=>null!=n[e]?n[e]:null!=r[e]?r[e]:t}function m(e,t){let r=-1/0;return e.forEach(e=>{null!=e.offset&&(r=Math.max(r,e.offset))}),r>-1/0?r:t}function ne(e,t,r,n,a,i,o){var r=h(r,t),s=m(e,r(\"offset\",0)),l=r(\"anchor\",T),c=l===x?1:l===D?.5:0,u={align:H,bounds:r(\"bounds\",G),columns:\"vertical\"===r(\"direction\")?1:e.length,padding:r(\"margin\",8),center:r(\"center\"),nodirty:!0};switch(t){case A:u.anchor={x:Math.floor(n.x1)-s,column:x,y:c*(o||n.height()+2*n.y1),row:l};break;case O:u.anchor={x:Math.ceil(n.x2)+s,y:c*(o||n.height()+2*n.y1),row:l};break;case S:u.anchor={y:Math.floor(a.y1)-s,row:x,x:c*(i||a.width()+2*a.x1),column:l};break;case C:u.anchor={y:Math.ceil(a.y2)+s,x:c*(i||a.width()+2*a.x1),column:l};break;case pe:u.anchor={x:s,y:s};break;case fe:u.anchor={x:i-s,y:s,column:x};break;case he:u.anchor={x:s,y:o-s,row:x};break;case me:u.anchor={x:i-s,y:o-s,column:x,row:x}}return u}function ae(e,t){var r,t=t.items[0],n=t.datum,a=t.orient,i=t.bounds,o=t.x,s=t.y;return t._bounds?t._bounds.clear().union(i):t._bounds=i.clone(),i.clear(),ie(e,t,t.items[0].items[0]),i=g(t,i),e=2*t.padding,r=2*t.padding,i.empty()||(e=Math.ceil(i.width()+e),r=Math.ceil(i.height()+r)),n.type===be&&oe(t.items[0].items[0].items[0].items),a!==B&&(t.x=o=0,t.y=s=0),t.width=e,t.height=r,v.boundStroke(i.set(o,s,o+e,s+r),t),t.mark.bounds.clear().union(i),t}function g(e,t){return e.items.forEach(e=>t.union(e.bounds)),t.x1=e.padding,t.y1=e.padding,t}function ie(e,t,r){var n=t.padding,a=n-r.x,i=n-r.y;if(t.datum.title){var o=t.items[1].items[0],s=o.anchor,l=t.titlePadding||0,c=n-o.x,u=n-o.y;switch(o.orient){case A:a+=Math.ceil(o.bounds.width())+l;break;case O:case C:break;default:i+=o.bounds.height()+l}switch((a||i)&&p(e,r,a,i),o.orient){case A:u+=d(t,r,o,s,1,1);break;case O:c+=d(t,r,o,x,0,0)+l,u+=d(t,r,o,s,1,1);break;case C:c+=d(t,r,o,s,0,0),u+=d(t,r,o,x,-1,0,1)+l;break;default:c+=d(t,r,o,s,0,0)}(c||u)&&p(e,o,c,u),(c=Math.round(o.bounds.x1-n))<0&&(p(e,r,-c,0),p(e,o,-c,0))}else(a||i)&&p(e,r,a,i)}function d(e,t,r,n,a,i,o){var s=\"symbol\"!==e.datum.type,l=r.datum.vgrad,s=(!s||!i&&l||o?t:t.items[0]).bounds[a?\"y2\":\"x2\"]-e.padding,o=l&&i?s:0,t=l&&i?0:s,e=a<=0?0:v.multiLineOffset(r);return Math.round(n===T?o:n===x?t-e:.5*(s-e))}function p(e,t,r,n){t.x+=r,t.y+=n,t.bounds.translate(r,n),t.mark.bounds.translate(r,n),e.dirty(t)}function oe(e){const t=e.reduce((e,t)=>(e[t.column]=Math.max(t.bounds.x2-t.x,e[t.column]||0),e),{});e.forEach(e=>{e.width=t[e.column],e.height=e.bounds.y2-e.y})}function se(e,t,r,n,a){var i,o=t.items[0],s=o.frame,l=o.orient,c=o.anchor,u=o.offset,d=o.padding,p=o.items[0].items[0],f=o.items[1]&&o.items[1].items[0],r=l===A||l===O?n:r,h=0,m=0,g=0,_=0,y=0;if(s!==w?r=l===A?(h=a.y2,a.y1):l===O?(h=a.y1,a.y2):(h=a.x1,a.x2):l===A&&(h=n,r=0),i=c===T?h:c===x?r:(h+r)/2,f&&f.text){switch(l){case S:case C:y=p.bounds.height()+d;break;case A:_=p.bounds.width()+d;break;case O:_=-p.bounds.width()-d}z.clear().union(f.bounds),z.translate(_-(f.x||0),y-(f.y||0)),b(f,\"x\",_)|b(f,\"y\",y)&&(e.dirty(f),f.bounds.clear().union(z),f.mark.bounds.clear().union(z),e.dirty(f)),z.clear().union(f.bounds)}else z.clear();switch(z.union(p.bounds),l){case S:m=i,g=a.y1-z.height()-u;break;case A:m=a.x1-z.width()-u,g=i;break;case O:m=a.x2+z.width()+u,g=i;break;case C:m=i,g=a.y2+u;break;default:m=o.x,g=o.y}return b(o,\"x\",m)|b(o,\"y\",g)&&(z.translate(m,g),e.dirty(o),o.bounds.clear().union(z),t.bounds.clear().union(z),e.dirty(o)),o.bounds}function le(e){t.Transform.call(this,null,e)}function ce(e){return e&&\"legend-entry\"!==e.mark.role}function ue(r,e,n){for(var t,a,i,o=e.items,s=Math.max(0,e.width||0),l=Math.max(0,e.height||0),c=(new v.Bounds).set(0,0,s,l),u=c.clone(),d=c.clone(),p=[],f=0,h=o.length;f<h;++f)switch((a=o[f]).role){case y:(W(a)?u:d).union(K(r,a,s,l));break;case k:t=a;break;case I:p.push(ae(r,a));break;case ye:case Te:case R:case N:case M:case L:case F:case U:u.union(a.bounds),d.union(a.bounds);break;default:c.union(a.bounds)}if(p.length){const g={};p.forEach(e=>{(i=e.orient||O)!==B&&(g[i]||(g[i]=[])).push(e)});for(const i in g){var m=g[i];X(r,m,ne(m,i,n.legends,u,d,s,l))}p.forEach(e=>{var t=e.bounds;if(t.equals(e._bounds)||(e.bounds=e._bounds,r.dirty(e),e.bounds=t,r.dirty(e)),!n.autosize||n.autosize.type!==Ee&&n.autosize.type!==Se&&n.autosize.type!==Ae)c.union(t);else switch(e.orient){case A:case O:c.add(t.x1,0).add(t.x2,0);break;case S:case C:c.add(0,t.y1).add(0,t.y2)}})}c.union(u).union(d),t&&c.union(se(r,t,s,l,c)),e.clip&&c.set(0,0,e.width||0,e.height||0),de(r,e,c,n)}function de(o,s,l,c){var c=c.autosize||{},u=c.type;if(!(o._autosize<1)&&u){let e=o._width,t=o._height,r=Math.max(0,s.width||0),n=Math.max(0,Math.ceil(-l.x1)),a=Math.max(0,s.height||0),i=Math.max(0,Math.ceil(-l.y1));var d,s=Math.max(0,Math.ceil(l.x2-r)),l=Math.max(0,Math.ceil(l.y2-a));c.contains===ve&&(d=o.padding(),e-=d.left+d.right,t-=d.top+d.bottom),u===B?(n=0,i=0,r=e,a=t):u===Ee?(r=Math.max(0,e-n-s),a=Math.max(0,t-i-l)):u===Se?(r=Math.max(0,e-n-s),t=a+i+l):u===Ae?(e=r+n+s,a=Math.max(0,t-i-l)):u===Oe&&(e=r+n+s,t=a+i+l),o._resizeView(e,t,r,a,[n,i],c.resize)}}l.inherits(le,t.Transform,{transform(t,e){const r=e.dataflow;return t.mark.items.forEach(e=>{t.layout&&f(r,e,t.layout),ue(r,e,t)}),ce(t.mark.group)?e.reflow():e}}),e.bound=n,e.identifier=r,e.mark=a,e.overlap=s,e.render=u,e.viewlayout=le}}return uD.exports}var bD,ED={exports:{}};function SD(){if(!bD){bD=1;var e=ED.exports;{var g=rD(),_=yD(),y=HP();function t(e){g.Transform.call(this,null,e)}function r(e){g.Transform.call(this,null,e)}function L(){return g.ingest({})}function F(t){const r=y.fastmap().test(e=>e.exit);return r.lookup=e=>r.get(t(e)),r}function n(e){g.Transform.call(this,null,e)}function U(e){g.Transform.call(this,[],e)}y.inherits(t,g.Transform,{transform(e,t){var r,n,a,i,o,s;return this.value&&!e.modified()?t.StopPropagation:(r=t.dataflow.locale(),t=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=this.value,a=e.scale,i=null==e.count?e.values?e.values.length:10:e.count,i=_.tickCount(a,i,e.minstep),o=e.format||_.tickFormat(r,a,i,e.formatSpecifier,e.formatType,!!e.values),s=e.values?_.validTicks(a,e.values,i):_.tickValues(a,i),n&&(t.rem=n),n=s.map((e,t)=>g.ingest({index:t/(s.length-1||1),value:e,label:o(e)})),e.extra&&n.length&&n.push(g.ingest({index:-1,extra:{value:n[0].value},label:\"\"})),t.source=n,t.add=n,this.value=n,t)}}),y.inherits(r,g.Transform,{transform(e,t){var r=t.dataflow,n=t.fork(t.NO_SOURCE|t.NO_FIELDS),a=e.item||L,i=e.key||g.tupleid,o=this.value;return y.isArray(n.encode)&&(n.encode=null),o&&(e.modified(\"key\")||t.modified(i))&&y.error(\"DataJoin does not support modified key function or fields.\"),o||(t=t.addAll(),this.value=o=F(i)),t.visit(t.ADD,e=>{var t=i(e);let r=o.get(t);(r?r.exit?(o.empty--,n.add):n.mod:(r=a(e),o.set(t,r),n.add)).push(r),r.datum=e,r.exit=!1}),t.visit(t.MOD,e=>{var t=i(e),t=o.get(t);t&&(t.datum=e,n.mod.push(t))}),t.visit(t.REM,e=>{var t=i(e),t=o.get(t);e!==t.datum||t.exit||(n.rem.push(t),t.exit=!0,++o.empty)}),t.changed(t.ADD_MOD)&&n.modifies(\"datum\"),(t.clean()||e.clean&&o.empty>r.cleanThreshold)&&r.runAfter(o.clean),n}}),y.inherits(n,g.Transform,{transform(r,e){var n=e.fork(e.ADD_REM),a=r.mod||!1,t=r.encoders,i=e.encode;if(y.isArray(i)){if(!n.changed()&&!i.every(e=>t[e]))return e.StopPropagation;i=i[0],n.encode=null}var o=\"enter\"===i,s=t.update||y.falsy,l=t.enter||y.falsy,c=t.exit||y.falsy,u=(i&&!o?t[i]:s)||y.falsy;return e.changed(e.ADD)&&(e.visit(e.ADD,e=>{l(e,r),s(e,r)}),n.modifies(l.output),n.modifies(s.output),u!==y.falsy)&&u!==s&&(e.visit(e.ADD,e=>{u(e,r)}),n.modifies(u.output)),e.changed(e.REM)&&c!==y.falsy&&(e.visit(e.REM,e=>{c(e,r)}),n.modifies(c.output)),(o||u!==y.falsy)&&(i=e.MOD|(r.modified()?e.REFLOW:0),o?(e.visit(i,e=>{var t=l(e,r)||a;(u(e,r)||t)&&n.mod.push(e)}),n.mod.length&&n.modifies(l.output)):e.visit(i,e=>{(u(e,r)||a)&&n.mod.push(e)}),n.mod.length)&&n.modifies(u.output),n.changed()?n:e.StopPropagation}}),y.inherits(U,g.Transform,{transform(r,e){var t,n,a,i,o,s,l,c,u,d,p,f,h,m;return null==this.value||r.modified()?(d=e.dataflow.locale(),t=e.fork(e.NO_SOURCE|e.NO_FIELDS),n=this.value,a=r.type||_.SymbolLegend,i=r.scale,o=+r.limit,s=_.tickCount(i,null==r.count?5:r.count,r.minstep),l=!!r.values||a===_.SymbolLegend,c=r.format||_.labelFormat(d,i,s,a,r.formatSpecifier,r.formatType,l),u=r.values||_.labelValues(i,s),n&&(t.rem=n),a===_.SymbolLegend?(o&&u.length>o?(e.dataflow.warn(\"Symbol legend count exceeds limit, filtering items.\"),n=u.slice(0,o-1),m=!0):n=u,y.isFunction(f=r.size)?(r.values||0!==i(n[0])||(n=n.slice(1)),h=n.reduce((e,t)=>Math.max(e,f(t,r)),0)):f=y.constant(h=f||8),n=n.map((e,t)=>g.ingest({index:t,label:c(e,t,n),value:e,offset:h,size:f(e,r)})),m&&(m=u[n.length],n.push(g.ingest({index:n.length,label:`…${u.length-n.length} entries`,value:m,offset:h,size:f(m,r)})))):n=a===_.GradientLegend?(d=i.domain(),p=_.scaleFraction(i,d[0],y.peek(d)),(u=u.length<3&&!r.values&&d[0]!==y.peek(d)?[d[0],y.peek(d)]:u).map((e,t)=>g.ingest({index:t,label:c(e,t,u),value:e,perc:p(e)}))):(f=u.length-1,p=_.labelFraction(i),u.map((e,t)=>g.ingest({index:t,label:c(e,t,u),value:e,perc:t?p(e):0,perc2:t===f?1:p(u[t+1])}))),t.source=n,t.add=n,this.value=n,t):e.StopPropagation}});const Ge=e=>e.source.x,Ve=e=>e.source.y,qe=e=>e.target.x,ze=e=>e.target.y;function a(e){g.Transform.call(this,{},e)}a.Definition={type:\"LinkPath\",metadata:{modifies:!0},params:[{name:\"sourceX\",type:\"field\",default:\"source.x\"},{name:\"sourceY\",type:\"field\",default:\"source.y\"},{name:\"targetX\",type:\"field\",default:\"target.x\"},{name:\"targetY\",type:\"field\",default:\"target.y\"},{name:\"orient\",type:\"enum\",default:\"vertical\",values:[\"horizontal\",\"vertical\",\"radial\"]},{name:\"shape\",type:\"enum\",default:\"line\",values:[\"line\",\"arc\",\"curve\",\"diagonal\",\"orthogonal\"]},{name:\"require\",type:\"signal\"},{name:\"as\",type:\"string\",default:\"path\"}]},y.inherits(a,g.Transform,{transform(e,t){var r=e.sourceX||Ge,n=e.sourceY||Ve,a=e.targetX||qe,i=e.targetY||ze,o=e.as||\"path\",s=e.orient||\"vertical\",l=e.shape||\"line\",c=D.get(l+\"-\"+s)||D.get(l);return c||y.error(\"LinkPath unsupported type: \"+e.shape+(e.orient?\"-\"+e.orient:\"\")),t.visit(t.SOURCE,e=>{e[o]=c(r(e),n(e),a(e),i(e))}),t.reflow(e.modified()).modifies(o)}});const N=(e,t,r,n)=>\"M\"+e+\",\"+t+\"L\"+r+\",\"+n,We=(e,t,r,n)=>N(t*Math.cos(e),t*Math.sin(e),n*Math.cos(r),n*Math.sin(r)),M=(e,t,r,n)=>{var a=r-e,i=n-t,o=Math.hypot(a,i)/2;return\"M\"+e+\",\"+t+\"A\"+o+\",\"+o+\" \"+180*Math.atan2(i,a)/Math.PI+\" 0 1 \"+r+\",\"+n},$e=(e,t,r,n)=>M(t*Math.cos(e),t*Math.sin(e),n*Math.cos(r),n*Math.sin(r)),P=(e,t,r,n)=>{var a=r-e,i=n-t,o=.2*(a+i),i=.2*(i-a);return\"M\"+e+\",\"+t+\"C\"+(e+o)+\",\"+(t+i)+\" \"+(r+i)+\",\"+(n-o)+\" \"+r+\",\"+n},Ke=(e,t,r,n)=>P(t*Math.cos(e),t*Math.sin(e),n*Math.cos(r),n*Math.sin(r)),Ye=(e,t,r,n)=>\"M\"+e+\",\"+t+\"V\"+n+\"H\"+r,Je=(e,t,r,n)=>\"M\"+e+\",\"+t+\"H\"+r+\"V\"+n,Qe=(e,t,r,n)=>{var a=Math.cos(e),i=Math.sin(e),o=Math.cos(r),s=Math.sin(r);return\"M\"+t*a+\",\"+t*i+\"A\"+t+\",\"+t+\" 0 0,\"+((Math.abs(r-e)>Math.PI?r<=e:e<r)?1:0)+\" \"+t*o+\",\"+t*s+\"L\"+n*o+\",\"+n*s},Ze=(e,t,r,n)=>{var a=(e+r)/2;return\"M\"+e+\",\"+t+\"C\"+a+\",\"+t+\" \"+a+\",\"+n+\" \"+r+\",\"+n},Xe=(e,t,r,n)=>{var a=(t+n)/2;return\"M\"+e+\",\"+t+\"C\"+e+\",\"+a+\" \"+r+\",\"+a+\" \"+r+\",\"+n},et=(e,t,r,n)=>{var a=Math.cos(e),e=Math.sin(e),i=Math.cos(r),r=Math.sin(r),o=(t+n)/2;return\"M\"+t*a+\",\"+t*e+\"C\"+o*a+\",\"+o*e+\" \"+o*i+\",\"+o*r+\" \"+n*i+\",\"+n*r},D=y.fastmap({line:N,\"line-radial\":We,arc:M,\"arc-radial\":$e,curve:P,\"curve-radial\":Ke,\"orthogonal-horizontal\":Ye,\"orthogonal-vertical\":Je,\"orthogonal-radial\":Qe,\"diagonal-horizontal\":Ze,\"diagonal-vertical\":Xe,\"diagonal-radial\":et});function B(e,t,r){e=+e,t=+t,r=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+r;for(var n=-1,a=0|Math.max(0,Math.ceil((t-e)/r)),i=new Array(a);++n<a;)i[n]=e+n*r;return i}function j(e){let t=0;for(var r of e)(r=+r)&&(t+=r);return t}function i(e){g.Transform.call(this,null,e)}function o(e,t,r){(e.prototype=t.prototype=r).constructor=e}function H(e,t){var r,n=Object.create(e.prototype);for(r in t)n[r]=t[r];return n}function c(){}i.Definition={type:\"Pie\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"startAngle\",type:\"number\",default:0},{name:\"endAngle\",type:\"number\",default:6.283185307179586},{name:\"sort\",type:\"boolean\",default:!1},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"startAngle\",\"endAngle\"]}]},y.inherits(i,g.Transform,{transform(e,t){var r,n,a,i=e.as||[\"startAngle\",\"endAngle\"],o=i[0],s=i[1],l=e.field||y.one,c=e.startAngle||0,u=null!=e.endAngle?e.endAngle:2*Math.PI,d=t.source,p=d.map(l),f=p.length,h=c,m=(u-c)/j(p),g=B(f);for(e.sort&&g.sort((e,t)=>p[e]-p[t]),r=0;r<f;++r)a=p[g[r]],(n=d[g[r]])[o]=h,n[s]=h+=a*m;return this.value=p,t.reflow(e.modified()).modifies(i)}});var s=\"\\\\s*([+-]?\\\\d+)\\\\s*\",l=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",u=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",G=/^#([0-9a-f]{3,8})$/,V=new RegExp(`^rgb\\\\(${s},${s},${s}\\\\)$`),q=new RegExp(`^rgb\\\\(${u},${u},${u}\\\\)$`),z=new RegExp(`^rgba\\\\(${s},${s},${s},${l}\\\\)$`),W=new RegExp(`^rgba\\\\(${u},${u},${u},${l}\\\\)$`),$=new RegExp(`^hsl\\\\(${l},${u},${u}\\\\)$`),K=new RegExp(`^hsla\\\\(${l},${u},${u},${l}\\\\)$`),Y={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function J(){return this.rgb().formatHex()}function Q(){return this.rgb().formatHex8()}function Z(){return oe(this).formatHsl()}function X(){return this.rgb().formatRgb()}function d(e){var t,r;return e=(e+\"\").trim().toLowerCase(),(t=G.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?ee(t):3===r?new h(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?p(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?p(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=V.exec(e))?new h(t[1],t[2],t[3],1):(t=q.exec(e))?new h(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=z.exec(e))?p(t[1],t[2],t[3],t[4]):(t=W.exec(e))?p(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=$.exec(e))?ie(t[1],t[2]/100,t[3]/100,1):(t=K.exec(e))?ie(t[1],t[2]/100,t[3]/100,t[4]):Y.hasOwnProperty(e)?ee(Y[e]):\"transparent\"===e?new h(NaN,NaN,NaN,0):null}function ee(e){return new h(e>>16&255,e>>8&255,255&e,1)}function p(e,t,r,n){return new h(e=n<=0?t=r=NaN:e,t,r,n)}function te(e){return(e=e instanceof c?e:d(e))?new h((e=e.rgb()).r,e.g,e.b,e.opacity):new h}function f(e,t,r,n){return 1===arguments.length?te(e):new h(e,t,r,null==n?1:n)}function h(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function re(){return\"#\"+v(this.r)+v(this.g)+v(this.b)}function ne(){return\"#\"+v(this.r)+v(this.g)+v(this.b)+v(255*(isNaN(this.opacity)?1:this.opacity))}function ae(){var e=m(this.opacity);return(1===e?\"rgb(\":\"rgba(\")+T(this.r)+`, ${T(this.g)}, `+T(this.b)+(1===e?\")\":`, ${e})`)}function m(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function T(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function v(e){return((e=T(e))<16?\"0\":\"\")+e.toString(16)}function ie(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||1<=r?e=t=NaN:t<=0&&(e=NaN),new b(e,t,r,n)}function oe(e){var t,r,n,a,i,o,s,l;return e instanceof b?new b(e.h,e.s,e.l,e.opacity):(e=e instanceof c?e:d(e))?e instanceof b?e:(t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,a=Math.min(t,r,n),o=NaN,l=((i=Math.max(t,r,n))+a)/2,(s=i-a)?(o=t===i?(r-n)/s+6*(r<n):r===i?(n-t)/s+2:(t-r)/s+4,s/=l<.5?i+a:2-i-a,o*=60):s=0<l&&l<1?0:o,new b(o,s,l,e.opacity)):new b}function se(e,t,r,n){return 1===arguments.length?oe(e):new b(e,t,r,null==n?1:n)}function b(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function le(e){return(e=(e||0)%360)<0?e+360:e}function E(e){return Math.max(0,Math.min(1,e||0))}function S(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}o(c,d,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:J,formatHex:J,formatHex8:Q,formatHsl:Z,formatRgb:X,toString:X}),o(h,f,H(c,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new h(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new h(T(this.r),T(this.g),T(this.b),m(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:re,formatHex:re,formatHex8:ne,formatRgb:ae,toString:ae})),o(b,se,H(c,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new b(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new b(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,t=r+(r<.5?r:1-r)*t,r=2*r-t;return new h(S(240<=e?e-240:120+e,r,t),S(e,r,t),S(e<120?240+e:e-120,r,t),this.opacity)},clamp(){return new b(le(this.h),E(this.s),E(this.l),m(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){var e=m(this.opacity);return(1===e?\"hsl(\":\"hsla(\")+le(this.h)+`, ${100*E(this.s)}%, ${100*E(this.l)}%`+(1===e?\")\":`, ${e})`)}}));var A=e=>()=>e;function ce(t,r){return function(e){return t+e*r}}function ue(t,r,n){return t=Math.pow(t,n),r=Math.pow(r,n)-t,n=1/n,function(e){return Math.pow(t+e*r,n)}}function de(r){return 1==(r=+r)?pe:function(e,t){return t-e?ue(e,t,r):A(isNaN(e)?t:e)}}function pe(e,t){var r=t-e;return r?ce(e,r):A(isNaN(e)?t:e)}var fe=function e(t){var o=de(t);function r(t,e){var r=o((t=f(t)).r,(e=f(e)).r),n=o(t.g,e.g),a=o(t.b,e.b),i=pe(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=n(e),t.b=a(e),t.opacity=i(e),t+\"\"}}return r.gamma=e,r}(1);function he(t,r){r=r||[];var n,a=t?Math.min(r.length,t.length):0,i=r.slice();return function(e){for(n=0;n<a;++n)i[n]=t[n]*(1-e)+r[n]*e;return i}}function me(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ge(e,t){for(var r=t?t.length:0,n=e?Math.min(r,e.length):0,a=new Array(n),i=new Array(r),o=0;o<n;++o)a[o]=k(e[o],t[o]);for(;o<r;++o)i[o]=t[o];return function(e){for(o=0;o<n;++o)i[o]=a[o](e);return i}}function _e(t,r){var n=new Date;return t=+t,r=+r,function(e){return n.setTime(t*(1-e)+r*e),n}}function O(t,r){return t=+t,r=+r,function(e){return t*(1-e)+r*e}}function ye(e,t){var r,n={},a={};for(r in null!==e&&\"object\"==typeof e||(e={}),t=null!==t&&\"object\"==typeof t?t:{})r in e?n[r]=k(e[r],t[r]):a[r]=t[r];return function(e){for(r in n)a[r]=n[r](e);return a}}var C=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,w=new RegExp(C.source,\"g\");function Te(e){return function(){return e}}function ve(t){return function(e){return t(e)+\"\"}}function be(e,n){var t,r,a,i=C.lastIndex=w.lastIndex=0,o=-1,s=[],l=[];for(e+=\"\",n+=\"\";(t=C.exec(e))&&(r=w.exec(n));)(a=r.index)>i&&(a=n.slice(i,a),s[o]?s[o]+=a:s[++o]=a),(t=t[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,l.push({i:o,x:O(t,r)})),i=w.lastIndex;return i<n.length&&(a=n.slice(i),s[o]?s[o]+=a:s[++o]=a),s.length<2?l[0]?ve(l[0].x):Te(n):(n=l.length,function(e){for(var t,r=0;r<n;++r)s[(t=l[r]).i]=t.x(e);return s.join(\"\")})}function k(e,t){var r=typeof t;return null==t||\"boolean\"==r?A(t):(\"number\"==r?O:\"string\"==r?(r=d(t))?(t=r,fe):be:t instanceof d?fe:t instanceof Date?_e:me(t)?he:Array.isArray(t)?ge:\"function\"!=typeof t.valueOf&&\"function\"!=typeof t.toString||isNaN(t)?ye:O)(e,t)}function Ee(t,r){return t=+t,r=+r,function(e){return Math.round(t*(1-e)+r*e)}}const tt=5;function Se(e){var t=e.type;return!e.bins&&(t===_.Linear||t===_.Pow||t===_.Sqrt)}function Ae(e){return _.isContinuous(e)&&e!==_.Sequential}const rt=y.toSet([\"set\",\"modified\",\"clear\",\"type\",\"scheme\",\"schemeExtent\",\"schemeCount\",\"domain\",\"domainMin\",\"domainMid\",\"domainMax\",\"domainRaw\",\"domainImplicit\",\"nice\",\"zero\",\"bins\",\"range\",\"rangeStep\",\"round\",\"reverse\",\"interpolate\",\"interpolateGamma\"]);function Oe(e){g.Transform.call(this,null,e),this.modified(!0)}function Ce(e){var t=e.type,r=\"\";return t===_.Sequential?_.Sequential+\"-\"+_.Linear:((r=we(e)?2===(e=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(null!=e.domainMid):0)?_.Sequential+\"-\":3===e?_.Diverging+\"-\":\"\":r)+t||_.Linear).toLowerCase()}function we(e){var t=e.type;return _.isContinuous(t)&&t!==_.Time&&t!==_.UTC&&(e.scheme||e.range&&e.range.length&&e.range.every(y.isString))}function ke(e,t,r){var n,a,i,o,s=Ie(e,t.domainRaw,r);return-1<s?s:(s=t.domain,n=e.type,a=t.zero||void 0===t.zero&&Se(e),s?(!a&&null==t.domainMin&&null==t.domainMax&&null==t.domainMid||(o=(s=s.slice()).length-1||1,a&&(0<s[0]&&(s[0]=0),s[o]<0)&&(s[o]=0),null!=t.domainMin&&(s[0]=t.domainMin),null!=t.domainMax&&(s[o]=t.domainMax),null==t.domainMid)||((i=(a=t.domainMid)>s[o]?o+1:a<s[0]?0:o)!==o&&r.warn(\"Scale domainMid exceeds domain min or max.\",a),s.splice(i,0,a)),Ae(n)&&t.padding&&s[0]!==y.peek(s)&&(s=Re(n,s,t.range,t.padding,t.exponent,t.constant)),e.domain(Ne(n,s,r)),n===_.Ordinal&&e.unknown(t.domainImplicit?_.scaleImplicit:void 0),t.nice&&e.nice&&e.nice(!0!==t.nice&&_.tickCount(e,t.nice)||null),s.length):0)}function Ie(e,t,r){return t?(e.domain(Ne(e.type,t,r)),t.length):-1}function Re(e,t,r,n,a,i){r=Math.abs(y.peek(r)-r[0]),r/=r-2*n,n=e===_.Log?y.zoomLog(t,null,r):e===_.Sqrt?y.zoomPow(t,null,r,.5):e===_.Pow?y.zoomPow(t,null,r,a||1):e===_.Symlog?y.zoomSymlog(t,null,r,i||1):y.zoomLinear(t,null,r);return(t=t.slice())[0]=n[0],t[t.length-1]=n[1],t}function Ne(e,t,r){return _.isLogarithmic(e)&&Math.abs(t.reduce((e,t)=>e+(t<0?-1:0<t?1:0),0))!==t.length&&r.warn(\"Log scale domain includes zero: \"+y.stringValue(t)),t}function Me(r,e,t){let n=e.bins;if(n&&!y.isArray(n)){var a=r.domain(),i=a[0],a=y.peek(a),o=n.step;let e=null==n.start?i:n.start,t=null==n.stop?a:n.stop;o||y.error(\"Scale bins parameter missing step property.\"),e<i&&(e=o*Math.ceil(i/o)),t>a&&(t=o*Math.floor(a/o)),n=B(e,t+o/2,o)}return n?r.bins=n:r.bins&&delete r.bins,r.type===_.BinOrdinal&&(n?e.domain||e.domainRaw||(r.domain(n),t=n.length):r.bins=r.domain()),t}function Pe(e,t,r){var n=e.type,a=t.round||!1,i=t.range;if(null!=t.rangeStep)i=De(n,t,r);else if(t.scheme&&(i=xe(n,t,r),y.isFunction(i))){if(e.interpolator)return e.interpolator(i);y.error(`Scale type ${n} does not support interpolating color schemes.`)}if(i&&_.isInterpolating(n))return e.interpolator(_.interpolateColors(I(i,t.reverse),t.interpolate,t.interpolateGamma));i&&t.interpolate&&e.interpolate?e.interpolate(_.interpolate(t.interpolate,t.interpolateGamma)):y.isFunction(e.round)?e.round(a):y.isFunction(e.rangeRound)&&e.interpolate(a?Ee:k),i&&e.range(I(i,t.reverse))}function De(e,t,r){e!==_.Band&&e!==_.Point&&y.error(\"Only band and point scales support rangeStep.\");var n=(null!=t.paddingOuter?t.paddingOuter:t.padding)||0,e=e===_.Point?1:(null!=t.paddingInner?t.paddingInner:t.padding)||0;return[0,t.rangeStep*_.bandSpace(r,e,n)]}function xe(e,t,r){var n,a,i=t.schemeExtent;return y.isArray(t.scheme)?a=_.interpolateColors(t.scheme,t.interpolate,t.interpolateGamma):(n=t.scheme.toLowerCase(),(a=_.scheme(n))||y.error(\"Unrecognized scheme name: \"+t.scheme)),r=e===_.Threshold?r+1:e===_.BinOrdinal?r-1:e===_.Quantile||e===_.Quantize?+t.schemeCount||tt:r,_.isInterpolating(e)?Le(a,i,t.reverse):y.isFunction(a)?_.quantizeInterpolator(Le(a,i),r):e===_.Ordinal?a:a.slice(0,r)}function Le(e,t,r){return y.isFunction(e)&&(t||r)?_.interpolateRange(e,I(t||[0,1],r)):e}function I(e,t){return t?e.slice().reverse():e}function Fe(e){g.Transform.call(this,null,e)}y.inherits(Oe,g.Transform,{transform(e,t){var r=t.dataflow,n=this.value,a=Ce(e);for(a in n&&a===n.type||(this.value=n=_.scale(a)()),e)if(!rt[a]){if(\"padding\"===a&&Ae(n.type))continue;y.isFunction(n[a])?n[a](e[a]):r.warn(\"Unsupported scale property: \"+a)}return Pe(n,e,Me(n,e,ke(n,e,r))),t.fork(t.NO_SOURCE|t.NO_FIELDS)}}),y.inherits(Fe,g.Transform,{transform(e,t){var r=e.modified(\"sort\")||t.changed(t.ADD)||t.modified(e.sort.fields)||t.modified(\"datum\");return r&&t.source.sort(g.stableCompare(e.sort)),this.modified(r),t}});const x=[\"y0\",\"y1\"];function R(e){g.Transform.call(this,null,e)}function Ue(e,t,r,n,a){for(var i,o=(t-e.sum)/2,s=e.length,l=0;l<s;++l)(i=e[l])[n]=o,i[a]=o+=Math.abs(r(i))}function Be(e,t,r,n,a){for(var i,o=1/e.sum,s=0,l=e.length,c=0,u=0;c<l;++c)(i=e[c])[n]=s,i[a]=s=o*(u+=Math.abs(r(i)))}function je(e,t,r,n,a){for(var i,o,s=0,l=0,c=e.length,u=0;u<c;++u)(i=+r(o=e[u]))<0?(o[n]=l,o[a]=l+=i):(o[n]=s,o[a]=s+=i)}function He(e,t,r,n){var a,i,o,s,l,c,u,d,p,f=[],h=e=>e(l);if(null==t)f.push(e.slice());else for(a={},i=0,o=e.length;i<o;++i)l=e[i],(u=a[c=t.map(h)])||(a[c]=u=[],f.push(u)),u.push(l);for(p=c=0,s=f.length;c<s;++c){for(d=i=0,o=(u=f[c]).length;i<o;++i)d+=Math.abs(n(u[i]));p<(u.sum=d)&&(p=d),r&&u.sort(r)}return f.max=p,f}R.Definition={type:\"Stack\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"groupby\",type:\"field\",array:!0},{name:\"sort\",type:\"compare\"},{name:\"offset\",type:\"enum\",default:\"zero\",values:[\"zero\",\"center\",\"normalize\"]},{name:\"as\",type:\"string\",array:!0,length:2,default:x}]},y.inherits(R,g.Transform,{transform(e,t){for(var r=e.as||x,n=r[0],a=r[1],i=g.stableCompare(e.sort),o=e.field||y.one,s=\"center\"===e.offset?Ue:\"normalize\"===e.offset?Be:je,l=He(t.source,e.groupby,i,o),c=0,u=l.length,d=l.max;c<u;++c)s(l[c],d,o,n,a);return t.reflow(e.modified()).modifies(r)}}),e.axisticks=t,e.datajoin=r,e.encode=n,e.legendentries=U,e.linkpath=a,e.pie=i,e.scale=Oe,e.sortitems=Fe,e.stack=R}}return ED.exports}var AD,OD,CD={exports:{}},wD={exports:{}};function kD(){if(!AD){AD=1;var O=wD.exports;{var C=yD();class H{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){var r=this._partials;let n=0;for(let e=0;e<this._n&&e<32;e++){var a=r[e],i=t+a,a=Math.abs(t)<Math.abs(a)?t-(i-a):a-(i-t);a&&(r[n++]=a),t=i}return r[n]=t,this._n=n+1,this}valueOf(){var e=this._partials;let t=this._n,r,n,a,i=0;if(0<t){for(i=e[--t];0<t&&(r=i,n=e[--t],i=r+n,!(a=n-(i-r))););0<t&&(a<0&&e[t-1]<0||0<a&&0<e[t-1])&&(n=2*a,r=i+n,n==r-i)&&(i=r)}return i}}function*G(e){for(const t of e)yield*t}function V(e){return Array.from(G(e))}var R=1e-6,q=1e-12,w=Math.PI,k=w/2,z=w/4,I=2*w,N=180/w,M=w/180,P=Math.abs,s=Math.atan,D=Math.atan2,x=Math.cos,W=Math.exp,$=Math.log,K=Math.pow,L=Math.sin,l=Math.sign||function(e){return 0<e?1:e<0?-1:0},F=Math.sqrt,Y=Math.tan;function J(e){return 1<e?0:e<-1?w:Math.acos(e)}function U(e){return 1<e?k:e<-1?-k:Math.asin(e)}function e(){}function Q(e,t){e&&X.hasOwnProperty(e.type)&&X[e.type](e,t)}var Z={Feature:function(e,t){Q(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,a=r.length;++n<a;)Q(r[n].geometry,t)}},X={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)e=r[n],t.point(e[0],e[1],e[2])},LineString:function(e,t){ee(e.coordinates,t,0)},MultiLineString:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)ee(r[n],t,0)},Polygon:function(e,t){te(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)te(r[n],t)},GeometryCollection:function(e,t){for(var r=e.geometries,n=-1,a=r.length;++n<a;)Q(r[n],t)}};function ee(e,t,r){var n,a=-1,i=e.length-r;for(t.lineStart();++a<i;)n=e[a],t.point(n[0],n[1],n[2]);t.lineEnd()}function te(e,t){var r=-1,n=e.length;for(t.polygonStart();++r<n;)ee(e[r],t,1);t.polygonEnd()}function c(e,t){e&&Z.hasOwnProperty(e.type)?Z[e.type](e,t):Q(e,t)}function re(e){return[D(e[1],e[0]),U(e[2])]}function B(e){var t=e[0],e=e[1],r=x(e);return[r*x(t),r*L(t),L(e)]}function ne(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function ae(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function ie(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function oe(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function se(e){var t=F(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}function le(r,n){function e(e,t){return e=r(e,t),n(e[0],e[1])}return r.invert&&n.invert&&(e.invert=function(e,t){return(e=n.invert(e,t))&&r.invert(e[0],e[1])}),e}function ce(e,t){return P(e)>w&&(e-=Math.round(e/I)*I),[e,t]}function ue(e,t,r){return(e%=I)?t||r?le(pe(e),fe(t,r)):pe(e):t||r?fe(t,r):ce}function de(r){return function(e,t){return P(e+=r)>w&&(e-=Math.round(e/I)*I),[e,t]}}function pe(e){var t=de(e);return t.invert=de(-e),t}function fe(e,t){var a=x(e),i=L(e),o=x(t),s=L(t);function r(e,t){var r=x(t),n=x(e)*r,e=L(e)*r,r=L(t),t=r*a+n*i;return[D(e*o-t*s,n*a-r*i),U(t*o+e*s)]}return r.invert=function(e,t){var r=x(t),n=x(e)*r,e=L(e)*r,r=L(t),t=r*o-e*s;return[D(e*o+r*s,n*a+t*i),U(t*a-n*i)]},r}function he(t){function e(e){return(e=t(e[0]*M,e[1]*M))[0]*=N,e[1]*=N,e}return t=ue(t[0]*M,t[1]*M,2<t.length?t[2]*M:0),e.invert=function(e){return(e=t.invert(e[0]*M,e[1]*M))[0]*=N,e[1]*=N,e},e}function me(e,t,r,n,a,i){if(r){var o=x(t),s=L(t),l=n*r;null==a?(a=t+n*I,i=t-l/2):(a=ge(o,a),i=ge(o,i),(0<n?a<i:i<a)&&(a+=n*I));for(var c,u=a;0<n?i<u:u<i;u-=l)c=re([o,-s*x(u),-s*L(u)]),e.point(c[0],c[1])}}function ge(e,t){(t=B(t))[0]-=e,se(t);e=J(-t[1]);return((-t[2]<0?-e:e)+I-R)%I}function _e(){var n,t=[];return{point:function(e,t,r){n.push([e,t,r])},lineStart:function(){t.push(n=[])},lineEnd:e,rejoin:function(){1<t.length&&t.push(t.pop().concat(t.shift()))},result:function(){var e=t;return t=[],n=null,e}}}function ye(e,t){return P(e[0]-t[0])<R&&P(e[1]-t[1])<R}function Te(e,t,r,n){this.x=e,this.z=t,this.o=r,this.e=n,this.v=!1,this.n=this.p=null}function ve(e,t,r,n,i){var o,a,s=[],l=[];if(e.forEach(function(e){if(!((t=e.length-1)<=0)){var t,r,n=e[0],a=e[t];if(ye(n,a)){if(!n[2]&&!a[2]){for(i.lineStart(),o=0;o<t;++o)i.point((n=e[o])[0],n[1]);return void i.lineEnd()}a[0]+=2*R}s.push(r=new Te(n,e,null,!0)),l.push(r.o=new Te(n,null,r,!1)),s.push(r=new Te(a,e,null,!1)),l.push(r.o=new Te(a,null,r,!0))}}),s.length){for(l.sort(t),be(s),be(l),o=0,a=l.length;o<a;++o)l[o].e=r=!r;for(var c,u,d=s[0];;){for(var p=d,f=!0;p.v;)if((p=p.n)===d)return;c=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(f)for(o=0,a=c.length;o<a;++o)i.point((u=c[o])[0],u[1]);else n(p.x,p.n.x,1,i);p=p.n}else{if(f)for(c=p.p.z,o=c.length-1;0<=o;--o)i.point((u=c[o])[0],u[1]);else n(p.x,p.p.x,-1,i);p=p.p}}while(c=(p=p.o).z,f=!f,!p.v);i.lineEnd()}}}function be(e){if(t=e.length){for(var t,r,n=0,a=e[0];++n<t;)a.n=r=e[n],r.p=a,a=r;a.n=r=e[0],r.p=a}}function Ee(e){return P(e[0])<=w?e[0]:l(e[0])*((P(e[0])+w)%I-w)}function Se(e,t){var r=Ee(t),n=t[1],t=L(n),a=[L(r),-x(r),0],i=0,o=0,s=new H;1===t?n=k+R:-1===t&&(n=-k-R);for(var l=0,c=e.length;l<c;++l)if(d=(u=e[l]).length)for(var u,d,p=u[d-1],f=Ee(p),h=p[1]/2+z,m=L(h),g=x(h),_=0;_<d;++_,f=T,m=b,g=v,p=y){var y=u[_],T=Ee(y),v=y[1]/2+z,b=L(v),v=x(v),E=T-f,S=0<=E?1:-1,A=S*E,O=w<A,C=m*b;s.add(D(C*S*L(A),g*v+C*x(A))),i+=O?E+S*I:E,O^r<=f^r<=T&&(se(C=ae(B(p),B(y))),se(A=ae(a,C)),(S=(O^0<=E?-1:1)*U(A[2]))<n||n===S&&(C[0]||C[1]))&&(o+=O^0<=E?1:-1)}return(i<-R||i<R&&s<-q)^1&o}function Ae(g,_,y,T){return function(s){var l,c,u,r=_(s),d=_e(),p=_(d),f=!1,t={point:n,lineStart:a,lineEnd:i,polygonStart:function(){t.point=h,t.lineStart=o,t.lineEnd=m,c=[],l=[]},polygonEnd:function(){t.point=n,t.lineStart=a,t.lineEnd=i,c=V(c);var e=Se(l,T);c.length?(f||(s.polygonStart(),f=!0),ve(c,Ce,e,y,s)):e&&(f||(s.polygonStart(),f=!0),s.lineStart(),y(null,null,1,s),s.lineEnd()),f&&(s.polygonEnd(),f=!1),c=l=null},sphere:function(){s.polygonStart(),s.lineStart(),y(null,null,1,s),s.lineEnd(),s.polygonEnd()}};function n(e,t){g(e,t)&&s.point(e,t)}function e(e,t){r.point(e,t)}function a(){t.point=e,r.lineStart()}function i(){t.point=n,r.lineEnd()}function h(e,t){u.push([e,t]),p.point(e,t)}function o(){p.lineStart(),u=[]}function m(){h(u[0][0],u[0][1]),p.lineEnd();var e,t,r,n,a=p.clean(),i=d.result(),o=i.length;if(u.pop(),l.push(u),u=null,o)if(1&a){if(0<(t=(r=i[0]).length-1)){for(f||(s.polygonStart(),f=!0),s.lineStart(),e=0;e<t;++e)s.point((n=r[e])[0],n[1]);s.lineEnd()}}else 1<o&&2&a&&i.push(i.pop().concat(i.shift())),c.push(i.filter(Oe))}return t}}function Oe(e){return 1<e.length}function Ce(e,t){return((e=e.x)[0]<0?e[1]-k-R:k-e[1])-((t=t.x)[0]<0?t[1]-k-R:k-t[1])}ce.invert=ce;var we=Ae(function(){return 1},ke,Re,[-w,-k]);function ke(a){var i,o=NaN,s=NaN,l=NaN;return{lineStart:function(){a.lineStart(),i=1},point:function(e,t){var r=0<e?w:-w,n=P(e-o);P(n-w)<R?(a.point(o,s=0<(s+t)/2?k:-k),a.point(l,s),a.lineEnd(),a.lineStart(),a.point(r,s),a.point(e,s),i=0):l!==r&&w<=n&&(P(o-l)<R&&(o-=l*R),P(e-r)<R&&(e-=r*R),s=Ie(o,s,e,t),a.point(l,s),a.lineEnd(),a.lineStart(),a.point(r,s),i=0),a.point(o=e,s=t),l=r},lineEnd:function(){a.lineEnd(),o=s=NaN},clean:function(){return 2-i}}}function Ie(e,t,r,n){var a,i=L(e-r);return P(i)>R?s((L(t)*(a=x(n))*L(r)-L(n)*(r=x(t))*L(e))/(r*a*i)):(t+n)/2}function Re(e,t,r,n){var a;null==e?(n.point(-w,a=r*k),n.point(0,a),n.point(w,a),n.point(w,0),n.point(w,-a),n.point(0,-a),n.point(-w,-a),n.point(-w,0),n.point(-w,a)):P(e[0]-t[0])>R?(e=e[0]<t[0]?w:-w,n.point(-e,a=r*e/2),n.point(0,a),n.point(e,a)):n.point(t[0],t[1])}function Ne(a){var m=x(a),i=6*M,d=0<m,p=P(m)>R;function f(e,t){return x(e)*x(t)>m}function h(e,t,r){var n,a,i,o,s,l,c,u=[1,0,0],d=ae(B(e),B(t)),p=ne(d,d),f=d[0],h=p-f*f;return h?(n=ae(u,d),ie(u=oe(u,m*p/h),oe(d,-m*f/h)),(h=(d=ne(u,p=n))*d-(f=ne(p,p))*(ne(u,u)-1))<0?void 0:(ie(h=oe(p,(-d-(n=F(h)))/f),u),h=re(h),r?(a=e[0],i=t[0],o=e[1],t=t[1],i<a&&(c=a,a=i,i=c),!(l=P((s=i-a)-w)<R)&&t<o&&(c=o,o=t,t=c),(l||s<R?l?0<o+t^h[1]<(P(h[0]-a)<R?o:t):o<=h[1]&&h[1]<=t:w<s^(a<=h[0]&&h[0]<=i))?(ie(c=oe(p,(-d+n)/f),u),[h,re(c)]):void 0):h)):!r&&e}function g(e,t){var r=d?a:w-a,n=0;return e<-r?n|=1:r<e&&(n|=2),t<-r?n|=4:r<t&&(n|=8),n}return Ae(f,function(i){var o,s,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(e,t){var r,n=[e,t],a=f(e,t),e=d?a?0:g(e,t):a?g(e+(e<0?w:-w),t):0;!o&&(c=l=a)&&i.lineStart(),a===l||(r=h(o,n))&&!ye(o,r)&&!ye(n,r)||(n[2]=1),a!==l?(u=0,a?(i.lineStart(),r=h(n,o),i.point(r[0],r[1])):(r=h(o,n),i.point(r[0],r[1],2),i.lineEnd()),o=r):p&&o&&d^a&&(e&s||!(t=h(n,o,!0))||(u=0,d?(i.lineStart(),i.point(t[0][0],t[0][1]),i.point(t[1][0],t[1][1]),i.lineEnd()):(i.point(t[1][0],t[1][1]),i.lineEnd(),i.lineStart(),i.point(t[0][0],t[0][1],3)))),!a||o&&ye(o,n)||i.point(n[0],n[1]),o=n,l=a,s=e},lineEnd:function(){l&&i.lineEnd(),o=null},clean:function(){return u|(c&&l)<<1}}},function(e,t,r,n){me(n,a,i,r,e,t)},d?[0,-a]:[-w,a-w])}function Me(e,t,r,n,a,i){var o=e[0],s=e[1],l=0,c=1,u=t[0]-o,d=t[1]-s,r=r-o;if(u||!(0<r)){if(r/=u,u<0){if(r<l)return;r<c&&(c=r)}else if(0<u){if(c<r)return;l<r&&(l=r)}if(r=a-o,u||!(r<0)){if(r/=u,u<0){if(c<r)return;l<r&&(l=r)}else if(0<u){if(r<l)return;r<c&&(c=r)}if(r=n-s,d||!(0<r)){if(r/=d,d<0){if(r<l)return;r<c&&(c=r)}else if(0<d){if(c<r)return;l<r&&(l=r)}if(r=i-s,d||!(r<0)){if(r/=d,d<0){if(c<r)return;l<r&&(l=r)}else if(0<d){if(r<l)return;r<c&&(c=r)}return 0<l&&(e[0]=o+l*u,e[1]=s+l*d),c<1&&(t[0]=o+c*u,t[1]=s+c*d),1}}}}}var A=1e9,Pe=-A;function De(_,y,T,v){function b(e,t){return _<=e&&e<=T&&y<=t&&t<=v}function E(e,t,r,n){var a=0,i=0;if(null==e||(a=o(e,r))!==(i=o(t,r))||s(e,t)<0^0<r)for(;n.point(0===a||3===a?_:T,1<a?v:y),(a=(a+r+4)%4)!==i;);else n.point(t[0],t[1])}function o(e,t){return P(e[0]-_)<R?0<t?0:3:P(e[0]-T)<R?0<t?2:1:P(e[1]-y)<R?0<t?1:0:0<t?3:2}function S(e,t){return s(e.x,t.x)}function s(e,t){var r=o(e,1),n=o(t,1);return r!==n?r-n:0===r?t[1]-e[1]:1===r?e[0]-t[0]:2===r?e[1]-t[1]:t[0]-e[0]}return function(n){var a,d,i,o,s,l,c,u,p,f,h,m=n,e=_e(),t={point:r,lineStart:function(){t.point=g,d&&d.push(i=[]);f=!0,p=!1,c=u=NaN},lineEnd:function(){a&&(g(o,s),l&&p&&e.rejoin(),a.push(e.result()));t.point=r,p&&m.lineEnd()},polygonStart:function(){m=e,a=[],d=[],h=!0},polygonEnd:function(){var e=function(){for(var e=0,t=0,r=d.length;t<r;++t)for(var n,a,i=d[t],o=1,s=i.length,l=i[0],c=l[0],u=l[1];o<s;++o)n=c,a=u,l=i[o],c=l[0],u=l[1],a<=v?v<u&&(u-a)*(_-n)<(c-n)*(v-a)&&++e:u<=v&&(c-n)*(v-a)<(u-a)*(_-n)&&--e;return e}(),t=h&&e,r=(a=V(a)).length;(t||r)&&(n.polygonStart(),t&&(n.lineStart(),E(null,null,1,n),n.lineEnd()),r&&ve(a,S,e,E,n),n.polygonEnd());m=n,a=d=i=null}};function r(e,t){b(e,t)&&m.point(e,t)}function g(e,t){var r,n,a=b(e,t);d&&i.push([e,t]),f?(o=e,s=t,f=!1,(l=a)&&(m.lineStart(),m.point(e,t))):a&&p?m.point(e,t):Me(r=[c=Math.max(Pe,Math.min(A,c)),u=Math.max(Pe,Math.min(A,u))],n=[e=Math.max(Pe,Math.min(A,e)),t=Math.max(Pe,Math.min(A,t))],_,y,T,v)?(p||(m.lineStart(),m.point(r[0],r[1])),m.point(n[0],n[1]),a||m.lineEnd(),h=!1):a&&(m.lineStart(),m.point(e,t),h=!1),c=e,u=t,p=a}return t}}var xe,Le,Fe,Ue,j=e=>e,Be=new H,je=new H,u={point:e,lineStart:e,lineEnd:e,polygonStart:function(){u.lineStart=He,u.lineEnd=qe},polygonEnd:function(){u.lineStart=u.lineEnd=u.point=e,Be.add(P(je)),je=new H},result:function(){var e=Be/2;return Be=new H,e}};function He(){u.point=Ge}function Ge(e,t){u.point=Ve,xe=Fe=e,Le=Ue=t}function Ve(e,t){je.add(Ue*e-Fe*t),Fe=e,Ue=t}function qe(){Ve(xe,Le)}var n=1/0,ze=n,d=-n,We=d,$e={point:Ke,lineStart:e,lineEnd:e,polygonStart:e,polygonEnd:e,result:function(){var e=[[n,ze],[d,We]];return d=We=-(ze=n=1/0),e}};function Ke(e,t){e<n&&(n=e),d<e&&(d=e),t<ze&&(ze=t),We<t&&(We=t)}var Ye,Je,p,f,Qe=0,Ze=0,h=0,Xe=0,et=0,m=0,tt=0,rt=0,g=0,_={point:y,lineStart:nt,lineEnd:ot,polygonStart:function(){_.lineStart=st,_.lineEnd=lt},polygonEnd:function(){_.point=y,_.lineStart=nt,_.lineEnd=ot},result:function(){var e=g?[tt/g,rt/g]:m?[Xe/m,et/m]:h?[Qe/h,Ze/h]:[NaN,NaN];return Qe=Ze=h=Xe=et=m=tt=rt=g=0,e}};function y(e,t){Qe+=e,Ze+=t,++h}function nt(){_.point=at}function at(e,t){_.point=it,y(p=e,f=t)}function it(e,t){var r=e-p,n=t-f,r=F(r*r+n*n);Xe+=r*(p+e)/2,et+=r*(f+t)/2,m+=r,y(p=e,f=t)}function ot(){_.point=y}function st(){_.point=ct}function lt(){ut(Ye,Je)}function ct(e,t){_.point=ut,y(Ye=p=e,Je=f=t)}function ut(e,t){var r=e-p,n=t-f,r=F(r*r+n*n);Xe+=r*(p+e)/2,et+=r*(f+t)/2,m+=r,tt+=(r=f*e-p*t)*(p+e),rt+=r*(f+t),g+=3*r,y(p=e,f=t)}function dt(e){this._context=e}dt.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,I)}},result:e};var pt,ft,ht,T,v,mt=new H,b={point:e,lineStart:function(){b.point=gt},lineEnd:function(){pt&&_t(ft,ht),b.point=e},polygonStart:function(){pt=!0},polygonEnd:function(){pt=null},result:function(){var e=+mt;return mt=new H,e}};function gt(e,t){b.point=_t,ft=T=e,ht=v=t}function _t(e,t){T-=e,v-=t,mt.add(F(T*T+v*v)),T=e,v=t}let r,a,i,o;class Br{constructor(e){this._append=null==e?yt:Tt(e),this._radius=4.5,this._=\"\"}pointRadius(e){return this._radius=+e,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+=\"Z\"),this._point=NaN}point(e,t){switch(this._point){case 0:this._append`M${e},${t}`,this._point=1;break;case 1:this._append`L${e},${t}`;break;default:var r,n;this._append`M${e},${t}`,this._radius===i&&this._append===a||(r=this._radius,n=this._,this._=\"\",this._append`m0,${r}a${r},${r} 0 1,1 0,${-2*r}a${r},${r} 0 1,1 0,${2*r}z`,i=r,a=this._append,o=this._,this._=n),this._+=o}}result(){var e=this._;return this._=\"\",e.length?e:null}}function yt(e){let t=1;this._+=e[0];for(var r=e.length;t<r;++t)this._+=arguments[t]+e[t]}function Tt(e){var t=Math.floor(e);if(!(0<=t))throw new RangeError(\"invalid digits: \"+e);if(15<t)return yt;if(t!==r){const n=10**t;r=t,a=function(e){let t=1;this._+=e[0];for(var r=e.length;t<r;++t)this._+=Math.round(arguments[t]*n)/n+e[t]}}return a}function vt(t,r){let n=3,a=4.5,i,o;function s(e){return e&&(\"function\"==typeof a&&o.pointRadius(+a.apply(this,arguments)),c(e,i(o))),o.result()}return s.area=function(e){return c(e,i(u)),u.result()},s.measure=function(e){return c(e,i(b)),b.result()},s.bounds=function(e){return c(e,i($e)),$e.result()},s.centroid=function(e){return c(e,i(_)),_.result()},s.projection=function(e){return arguments.length?(i=null==e?(t=null,j):(t=e).stream,s):t},s.context=function(e){return arguments.length?(o=null==e?(r=null,new Br(n)):new dt(r=e),\"function\"!=typeof a&&o.pointRadius(a),s):r},s.pointRadius=function(e){return arguments.length?(a=\"function\"==typeof e?e:(o.pointRadius(+e),+e),s):a},s.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{var t=Math.floor(e);if(!(0<=t))throw new RangeError(\"invalid digits: \"+e);n=t}return null===r&&(o=new Br(n)),s},s.projection(t).digits(n).context(r)}function bt(n){return function(e){var t,r=new Et;for(t in n)r[t]=n[t];return r.stream=e,r}}function Et(){}function St(e,t,r){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),null!=n&&e.clipExtent(null),c(r,e.stream($e)),t($e.result()),null!=n&&e.clipExtent(n),e}function At(a,i,e){return St(a,function(e){var t=i[1][0]-i[0][0],r=i[1][1]-i[0][1],n=Math.min(t/(e[1][0]-e[0][0]),r/(e[1][1]-e[0][1])),t=+i[0][0]+(t-n*(e[1][0]+e[0][0]))/2,r=+i[0][1]+(r-n*(e[1][1]+e[0][1]))/2;a.scale(150*n).translate([t,r])},e)}function Ot(e,t,r){return At(e,[[0,0],t],r)}function Ct(n,a,e){return St(n,function(e){var t=+a,r=t/(e[1][0]-e[0][0]),t=(t-r*(e[1][0]+e[0][0]))/2,e=-r*e[0][1];n.scale(150*r).translate([t,e])},e)}function wt(a,i,e){return St(a,function(e){var t=+i,r=t/(e[1][1]-e[0][1]),n=-r*e[0][0],t=(t-r*(e[1][1]+e[0][1]))/2;a.scale(150*r).translate([n,t])},e)}Et.prototype={constructor:Et,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var kt=16,It=x(30*M);function Rt(e,t){return+t?Mt(e,t):Nt(e)}function Nt(r){return bt({point:function(e,t){e=r(e,t),this.stream.point(e[0],e[1])}})}function Mt(w,k){function I(e,t,r,n,a,i,o,s,l,c,u,d,p,f){var h,m,g,_,y,T,v,b,E,S,A=o-e,O=s-t,C=A*A+O*O;4*k<C&&p--&&(g=i+d,v=U(g/=_=F((h=n+c)*h+(m=a+u)*m+g*g)),y=P(P(g)-1)<R||P(r-l)<R?(r+l)/2:D(m,h),T=(v=w(y,v))[0],v=v[1],k<(S=O*(b=T-e)-A*(E=v-t))*S/C||.3<P((A*b+O*E)/C-.5)||n*c+a*u+i*d<It)&&(I(e,t,r,n,a,i,T,v,y,h/=_,m/=_,g,p,f),f.point(T,v),I(T,v,y,h,m,g,o,s,l,c,u,d,p,f))}return function(n){var r,a,i,o,s,l,c,u,d,p,f,h,m={point:e,lineStart:t,lineEnd:_,polygonStart:function(){n.polygonStart(),m.lineStart=y},polygonEnd:function(){n.polygonEnd(),m.lineStart=t}};function e(e,t){e=w(e,t),n.point(e[0],e[1])}function t(){u=NaN,m.point=g,n.lineStart()}function g(e,t){var r=B([e,t]),t=w(e,t);I(u,d,c,p,f,h,u=t[0],d=t[1],c=e,p=r[0],f=r[1],h=r[2],kt,n),n.point(u,d)}function _(){m.point=e,n.lineEnd()}function y(){t(),m.point=T,m.lineEnd=v}function T(e,t){g(r=e,t),a=u,i=d,o=p,s=f,l=h,m.point=g}function v(){I(u,d,c,p,f,h,a,i,r,o,s,l,kt,n),m.lineEnd=_,_()}return m}}var Pt=bt({point:function(e,t){this.stream.point(e*M,t*M)}});function Dt(r){return bt({point:function(e,t){e=r(e,t);return this.stream.point(e[0],e[1])}})}function xt(r,n,a,i,o){function e(e,t){return[n+r*(e*=i),a-r*(t*=o)]}return e.invert=function(e,t){return[(e-n)/r*i,(a-t)/r*o]},e}function Lt(e,r,n,a,i,t){var o,s,l,c,u,d,p;return t?(o=x(t),t=L(t),s=o*e,l=t*e,c=o/e,u=t/e,d=(t*n-o*r)/e,p=(t*r+o*n)/e,f.invert=function(e,t){return[a*(c*e-u*t+d),i*(p-u*e-c*t)]},f):xt(e,r,n,a,i);function f(e,t){return[s*(e*=a)-l*(t*=i)+r,n-l*e-s*t]}}function E(e){return Ft(function(){return e})()}function Ft(e){var t,r,n,a,i,o,s,l,c,u,d=150,p=480,f=250,h=0,m=0,g=0,_=0,y=0,T=0,v=1,b=1,E=null,S=we,A=null,O=j,C=.5;function w(e){return l(e[0]*M,e[1]*M)}function k(e){return(e=l.invert(e[0],e[1]))&&[e[0]*N,e[1]*N]}function I(){var e=Lt(d,0,0,v,b,T).apply(null,t(h,m)),e=Lt(d,p-e[0],f-e[1],v,b,T);return r=ue(g,_,y),s=le(t,e),l=le(r,s),o=Rt(s,C),R()}function R(){return c=u=null,w}return w.stream=function(e){return c&&u===e?c:c=Pt(Dt(r)(S(o(O(u=e)))))},w.preclip=function(e){return arguments.length?(S=e,E=void 0,R()):S},w.postclip=function(e){return arguments.length?(O=e,A=n=a=i=null,R()):O},w.clipAngle=function(e){return arguments.length?(S=+e?Ne(E=e*M):(E=null,we),R()):E*N},w.clipExtent=function(e){return arguments.length?(O=null==e?(A=n=a=i=null,j):De(A=+e[0][0],n=+e[0][1],a=+e[1][0],i=+e[1][1]),R()):null==A?null:[[A,n],[a,i]]},w.scale=function(e){return arguments.length?(d=+e,I()):d},w.translate=function(e){return arguments.length?(p=+e[0],f=+e[1],I()):[p,f]},w.center=function(e){return arguments.length?(h=e[0]%360*M,m=e[1]%360*M,I()):[h*N,m*N]},w.rotate=function(e){return arguments.length?(g=e[0]%360*M,_=e[1]%360*M,y=2<e.length?e[2]%360*M:0,I()):[g*N,_*N,y*N]},w.angle=function(e){return arguments.length?(T=e%360*M,I()):T*N},w.reflectX=function(e){return arguments.length?(v=e?-1:1,I()):v<0},w.reflectY=function(e){return arguments.length?(b=e?-1:1,I()):b<0},w.precision=function(e){return arguments.length?(o=Rt(s,C=e*e),R()):F(C)},w.fitExtent=function(e,t){return At(w,e,t)},w.fitSize=function(e,t){return Ot(w,e,t)},w.fitWidth=function(e,t){return Ct(w,e,t)},w.fitHeight=function(e,t){return wt(w,e,t)},function(){return t=e.apply(this,arguments),w.invert=t.invert&&k,I()}}function Ut(e){var t=0,r=w/3,n=Ft(e),e=n(t,r);return e.parallels=function(e){return arguments.length?n(t=e[0]*M,r=e[1]*M):[t*N,r*N]},e}function Bt(e){var r=x(e);function t(e,t){return[e*r,L(t)/r]}return t.invert=function(e,t){return[e/r,U(t*r)]},t}function jt(e,t){var n,a,r=L(e),i=(r+L(t))/2;return P(i)<R?Bt(e):(a=F(n=1+r*(2*i-r))/i,o.invert=function(e,t){var t=a-t,r=D(e,P(t))*l(t);return t*i<0&&(r-=w*l(e)*l(t)),[r/i,U((n-(e*e+t*t)*i*i)/(2*i))]},o);function o(e,t){t=F(n-2*i*L(t))/i;return[t*L(e*=i),a-t*x(e)]}}function Ht(){return Ut(jt).scale(155.424).center([0,33.6442])}function Gt(){return Ht().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Vt(n){var a=n.length;return{point:function(e,t){for(var r=-1;++r<a;)n[r].point(e,t)},sphere:function(){for(var e=-1;++e<a;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<a;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<a;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<a;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<a;)n[e].polygonEnd()}}}function qt(){var t,r,a,i,o,n,s=Gt(),l=Ht().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=Ht().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(e,t){n=[e,t]}};function d(e){var t=e[0],e=e[1];return n=null,a.point(t,e),n||(i.point(t,e),n)||(o.point(t,e),n)}function p(){return t=r=null,d}return d.invert=function(e){var t=s.scale(),r=s.translate(),n=(e[0]-r[0])/t,r=(e[1]-r[1])/t;return(.12<=r&&r<.234&&-.425<=n&&n<-.214?l:.166<=r&&r<.234&&-.214<=n&&n<-.115?c:s).invert(e)},d.stream=function(e){return t&&r===e?t:t=Vt([s.stream(r=e),l.stream(e),c.stream(e)])},d.precision=function(e){return arguments.length?(s.precision(e),l.precision(e),c.precision(e),p()):s.precision()},d.scale=function(e){return arguments.length?(s.scale(e),l.scale(.35*e),c.scale(e),d.translate(s.translate())):s.scale()},d.translate=function(e){var t,r,n;return arguments.length?(t=s.scale(),r=+e[0],n=+e[1],a=s.translate(e).clipExtent([[r-.455*t,n-.238*t],[r+.455*t,n+.238*t]]).stream(u),i=l.translate([r-.307*t,n+.201*t]).clipExtent([[r-.425*t+R,n+.12*t+R],[r-.214*t-R,n+.234*t-R]]).stream(u),o=c.translate([r-.205*t,n+.212*t]).clipExtent([[r-.214*t+R,n+.166*t+R],[r-.115*t-R,n+.234*t-R]]).stream(u),p()):s.translate()},d.fitExtent=function(e,t){return At(d,e,t)},d.fitSize=function(e,t){return Ot(d,e,t)},d.fitWidth=function(e,t){return Ct(d,e,t)},d.fitHeight=function(e,t){return wt(d,e,t)},d.scale(1070)}function zt(a){return function(e,t){var r=x(e),n=x(t),r=a(r*n);return r===1/0?[2,0]:[r*n*L(e),r*L(t)]}}function t(i){return function(e,t){var r=F(e*e+t*t),n=i(r),a=L(n),n=x(n);return[D(e*a,r*n),U(r&&t*a/r)]}}var Wt=zt(function(e){return F(2/(1+e))});function $t(){return E(Wt).scale(124.75).clipAngle(179.999)}Wt.invert=t(function(e){return 2*U(e/2)});var Kt=zt(function(e){return(e=J(e))&&e/L(e)});function Yt(){return E(Kt).scale(79.4188).clipAngle(179.999)}function Jt(e,t){return[e,$(Y((k+t)/2))]}function Qt(){return Zt(Jt).scale(961/I)}function Zt(r){var n,a,i,o=E(r),t=o.center,s=o.scale,l=o.translate,c=o.clipExtent,u=null;function d(){var e=w*s(),t=o(he(o.rotate()).invert([0,0]));return c(null==u?[[t[0]-e,t[1]-e],[t[0]+e,t[1]+e]]:r===Jt?[[Math.max(t[0]-e,u),n],[Math.min(t[0]+e,a),i]]:[[u,Math.max(t[1]-e,n)],[a,Math.min(t[1]+e,i)]])}return o.scale=function(e){return(arguments.length?(s(e),d):s)()},o.translate=function(e){return(arguments.length?(l(e),d):l)()},o.center=function(e){return(arguments.length?(t(e),d):t)()},o.clipExtent=function(e){return arguments.length?(null==e?u=n=a=i=null:(u=+e[0][0],n=+e[0][1],a=+e[1][0],i=+e[1][1]),d()):null==u?null:[[u,n],[a,i]]},d()}function Xt(e){return Y((k+e)/2)}function er(e,t){var r=x(e),a=e===t?L(e):$(r/x(t))/$(Xt(t)/Xt(e)),i=r*K(Xt(e),a)/a;return a?(n.invert=function(e,t){var t=i-t,r=l(a)*F(e*e+t*t),n=D(e,P(t))*l(t);return t*a<0&&(n-=w*l(e)*l(t)),[n/a,2*s(K(i/r,1/a))-k]},n):Jt;function n(e,t){0<i?t<-k+R&&(t=-k+R):k-R<t&&(t=k-R);t=i/K(Xt(t),a);return[t*L(a*e),i-t*x(a*e)]}}function tr(){return Ut(er).scale(109.5).parallels([30,30])}function rr(e,t){return[e,t]}function nr(){return E(rr).scale(152.63)}function ar(e,t){var r=x(e),n=e===t?L(e):(r-x(t))/(t-e),a=r/n+e;return P(n)<R?rr:(i.invert=function(e,t){var t=a-t,r=D(e,P(t))*l(t);return t*n<0&&(r-=w*l(e)*l(t)),[r/n,a-l(n)*F(e*e+t*t)]},i);function i(e,t){t=a-t,e*=n;return[t*L(e),a-t*x(e)]}}function ir(){return Ut(ar).scale(131.154).center([0,13.9389])}Kt.invert=t(function(e){return e}),Jt.invert=function(e,t){return[e,2*s(W(t))-k]},rr.invert=rr;var S=1.340264,or=-.081106,sr=893e-6,lr=.003796,cr=F(3)/2;function ur(e,t){var t=U(cr*L(t)),r=t*t,n=r*r*r;return[e*x(t)/(cr*(S+3*or*r+n*(7*sr+9*lr*r))),t*(S+or*r+n*(sr+lr*r))]}function dr(){return E(ur).scale(177.158)}function pr(e,t){var r=x(t),n=x(e)*r;return[r*L(e)/n,L(t)/n]}function fr(){return E(pr).scale(144.049).clipAngle(60)}function hr(){var n,a,t,r,i,o,s,l=1,c=0,u=0,d=1,p=1,f=0,h=null,m=1,g=1,_=bt({point:function(e,t){e=v([e,t]);this.stream.point(e[0],e[1])}}),y=j;function T(){return m=l*d,g=l*p,o=s=null,v}function v(e){var t,r=e[0]*m,e=e[1]*g;return f&&(t=e*n-r*a,r=r*n+e*a,e=t),[r+c,e+u]}return v.invert=function(e){var t,r=e[0]-c,e=e[1]-u;return f&&(t=e*n+r*a,r=r*n-e*a,e=t),[r/m,e/g]},v.stream=function(e){return o&&s===e?o:o=_(y(s=e))},v.postclip=function(e){return arguments.length?(y=e,h=t=r=i=null,T()):y},v.clipExtent=function(e){return arguments.length?(y=null==e?(h=t=r=i=null,j):De(h=+e[0][0],t=+e[0][1],r=+e[1][0],i=+e[1][1]),T()):null==h?null:[[h,t],[r,i]]},v.scale=function(e){return arguments.length?(l=+e,T()):l},v.translate=function(e){return arguments.length?(c=+e[0],u=+e[1],T()):[c,u]},v.angle=function(e){return arguments.length?(a=L(f=e%360*M),n=x(f),T()):f*N},v.reflectX=function(e){return arguments.length?(d=e?-1:1,T()):d<0},v.reflectY=function(e){return arguments.length?(p=e?-1:1,T()):p<0},v.fitExtent=function(e,t){return At(v,e,t)},v.fitSize=function(e,t){return Ot(v,e,t)},v.fitWidth=function(e,t){return Ct(v,e,t)},v.fitHeight=function(e,t){return wt(v,e,t)},v}function mr(e,t){var r=t*t,n=r*r;return[e*(.8707-.131979*r+n*(n*(.003971*r-.001529*n)-.013791)),t*(1.007226+r*(.015085+n*(.028874*r-.044475-.005916*n)))]}function gr(){return E(mr).scale(175.295)}function _r(e,t){return[x(t)*L(e),L(t)]}function yr(){return E(_r).scale(249.5).clipAngle(90+R)}function Tr(e,t){var r=x(t),n=1+x(e)*r;return[r*L(e)/n,L(t)/n]}function vr(){return E(Tr).scale(250).clipAngle(142)}function br(e,t){return[$(Y((k+t)/2)),-e]}function Er(){var e=Zt(br),t=e.center,r=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?r([e[0],e[1],2<e.length?e[2]+90:90]):[(e=r())[0],e[1],e[2]-90]},r([0,0,90]).scale(159.155)}ur.invert=function(e,t){for(var r,n=t,a=n*n,i=a*a*a,o=0;o<12&&(i=(a=(n-=r=(n*(S+or*a+i*(sr+lr*a))-t)/(S+3*or*a+i*(7*sr+9*lr*a)))*n)*a*a,!(P(r)<q));++o);return[cr*e*(S+3*or*a+i*(7*sr+9*lr*a))/x(n),U(L(n)/cr)]},pr.invert=t(s),mr.invert=function(e,t){var r=t,n=25;do{var a=r*r,i=a*a}while(r-=i=(r*(1.007226+a*(.015085+i*(.028874*a-.044475-.005916*i)))-t)/(1.007226+a*(.045255+i*(.259866*a-.311325-.005916*11*i))),P(i)>R&&0<--n);return[e/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]},_r.invert=t(U),Tr.invert=t(function(e){return 2*s(e)}),br.invert=function(e,t){return[-t,2*s(W(e))-k]};var Sr=Math.abs,Ar=Math.cos,Or=Math.sin,Cr=1e-6,wr=Math.PI,kr=wr/2,Ir=Nr(2);function Rr(e){return 1<e?kr:e<-1?-kr:Math.asin(e)}function Nr(e){return 0<e?Math.sqrt(e):0}function Mr(e,t){for(var r,n=e*Or(t),a=30;t-=r=(t+Or(t)-n)/(1+Ar(t)),Sr(r)>Cr&&0<--a;);return t/2}function Pr(r,n,a){function e(e,t){return[r*e*Ar(t=Mr(a,t)),n*Or(t)]}return e.invert=function(e,t){return t=Rr(t/n),[e/(r*Ar(t)),Rr((2*t+Or(2*t))/a)]},e}var Dr=Pr(Ir/kr,Ir,wr);function xr(){return E(Dr).scale(169.529)}const jr=vt(),Hr=[\"clipAngle\",\"clipExtent\",\"scale\",\"translate\",\"center\",\"rotate\",\"parallels\",\"precision\",\"reflectX\",\"reflectY\",\"coefficient\",\"distance\",\"fraction\",\"lobes\",\"parallel\",\"radius\",\"ratio\",\"spacing\",\"tilt\"];function Lr(t,n){return function e(){const r=n();return r.type=t,r.path=vt().projection(r),r.copy=r.copy||function(){const t=e();return Hr.forEach(e=>{r[e]&&t[e](r[e]())}),t.path.pointRadius(r.path.pointRadius()),t},C.registerScale(r)}}function Fr(e,t){if(e&&\"string\"==typeof e)return e=e.toLowerCase(),1<arguments.length?(Gr[e]=Lr(e,t),this):Gr[e]||null;throw new Error(\"Projection type must be a name string.\")}function Ur(e){return e&&e.path||jr}const Gr={albers:Gt,albersusa:qt,azimuthalequalarea:$t,azimuthalequidistant:Yt,conicconformal:tr,conicequalarea:Ht,conicequidistant:ir,equalEarth:dr,equirectangular:nr,gnomonic:fr,identity:hr,mercator:Qt,mollweide:xr,naturalEarth1:gr,orthographic:yr,stereographic:vr,transversemercator:Er};for(const Vr in Gr)Fr(Vr,Gr[Vr]);O.getProjectionPath=Ur,O.projection=Fr,O.projectionProperties=Hr}}return wD.exports}function ID(){if(!OD){OD=1;var e=CD.exports;{var c=rD(),v=HP(),L=sD(),s=kD(),F=fD();const qe=Math.sqrt(50),ze=Math.sqrt(10),We=Math.sqrt(2);function U(e,t,r){var n=(t-e)/Math.max(0,r),a=Math.floor(Math.log10(n)),n=n/Math.pow(10,a),n=n>=qe?10:n>=ze?5:n>=We?2:1;let i,o,s;return a<0?(s=Math.pow(10,-a)/n,i=Math.round(e*s),o=Math.round(t*s),i/s<e&&++i,o/s>t&&--o,s=-s):(s=Math.pow(10,a)*n,i=Math.round(e/s),o=Math.round(t/s),i*s<e&&++i,o*s>t&&--o),o<i&&.5<=r&&r<2?U(e,t,2*r):[i,o,s]}function B(e,t,r){return U(e=+e,t=+t,r=+r)[2]}function j(e,t,r){r=+r;var n=(t=+t)<(e=+e),e=n?B(t,e,r):B(e,t,r);return(n?-1:1)*(e<0?1/-e:e)}function u(e){let t;for(const r of e)null!=r&&(t<r||void 0===t&&r>=r)&&(t=r);return t}function T(e,t,r){e=+e,t=+t,r=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+r;for(var n=-1,a=0|Math.max(0,Math.ceil((t-e)/r)),i=new Array(a);++n<a;)i[n]=e+n*r;return i}function H(e){let t=0;for(var r of e)(r=+r)&&(t+=r);return t}function G(){}const P=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function V(){var g=1,_=1,y=t;function r(t,e){return e.map(e=>n(t,e))}function n(t,r){var o,s,e,n,a,i,l=[],c=[],u=t,d=r,p=e=>{y(e,t,r),0<q(e)?l.push([e]):c.push(e)},f=[],h=[];for(o=s=-1,n=u[0]>=d,P[n<<1].forEach(m);++o<g-1;)e=n,n=u[o+1]>=d,P[e|n<<1].forEach(m);for(P[n<<0].forEach(m);++s<_-1;){for(o=-1,n=u[s*g+g]>=d,a=u[s*g]>=d,P[n<<1|a<<2].forEach(m);++o<g-1;)e=n,n=u[s*g+g+o+1]>=d,i=a,a=u[s*g+o+1]>=d,P[e|n<<1|a<<2|i<<3].forEach(m);P[n|a<<3].forEach(m)}for(o=-1,a=u[s*g]>=d,P[a<<2].forEach(m);++o<g-1;)i=a,a=u[s*g+o+1]>=d,P[a<<2|i<<3].forEach(m);function m(e){var t,r,n=[e[0][0]+o,e[0][1]+s],e=[e[1][0]+o,e[1][1]+s],a=T(n),i=T(e);(t=h[a])?(r=f[i])?(delete h[t.end],delete f[r.start],t===r?(t.ring.push(e),p(t.ring)):f[t.start]=h[r.end]={start:t.start,end:r.end,ring:t.ring.concat(r.ring)}):(delete h[t.end],t.ring.push(e),h[t.end=i]=t):(t=f[i])?(r=h[a])?(delete f[t.start],delete h[r.end],t===r?(t.ring.push(e),p(t.ring)):f[r.start]=h[t.end]={start:r.start,end:t.end,ring:r.ring.concat(t.ring)}):(delete f[t.start],t.ring.unshift(n),f[t.start=a]=t):f[a]=h[i]={start:a,end:i,ring:[n,e]}}return P[a<<3].forEach(m),c.forEach(e=>{for(var t,r=0,n=l.length;r<n;++r)if(-1!==z((t=l[r])[0],e))return void t.push(e)}),{type:\"MultiPolygon\",value:r,coordinates:l}}function T(e){return 2*e[0]+e[1]*(g+1)*4}function t(e,s,l){e.forEach(e=>{var t,r=e[0],n=e[1],a=0|r,i=0|n,o=s[i*g+a];0<r&&r<g&&a===r&&(t=s[i*g+a-1],e[0]=r+(l-t)/(o-t)-.5),0<n&&n<_&&i===n&&(t=s[(i-1)*g+a],e[1]=n+(l-t)/(o-t)-.5)})}return r.contour=n,r.size=function(e){var t;return arguments.length?(t=Math.floor(e[0]),e=Math.floor(e[1]),0<=t&&0<=e||v.error(\"invalid size\"),g=t,_=e,r):[g,_]},r.smooth=function(e){return arguments.length?(y=e?t:G,r):y===t},r}function q(e){for(var t=0,r=e.length,n=e[r-1][1]*e[0][0]-e[r-1][0]*e[0][1];++t<r;)n+=e[t-1][1]*e[t][0]-e[t-1][0]*e[t][1];return n}function z(e,t){for(var r,n=-1,a=t.length;++n<a;)if(r=W(e,t[n]))return r;return 0}function W(e,t){for(var r=t[0],n=t[1],a=-1,i=0,o=e.length,s=o-1;i<o;s=i++){var l=e[i],c=l[0],u=l[1],d=e[s],p=d[0],f=d[1];if($(l,d,t))return 0;n<u!=n<f&&r<(p-c)*(n-u)/(f-u)+c&&(a=-a)}return a}function $(e,t,r){return K(e,t,r)&&Y(e[e=+(e[0]===t[0])],r[e],t[e])}function K(e,t,r){return(t[0]-e[0])*(r[1]-e[1])==(r[0]-e[0])*(t[1]-e[1])}function Y(e,t,r){return e<=t&&t<=r||r<=t&&t<=e}function J(n,a,i){return function(e){var e=v.extent(e),t=i?Math.min(e[0],0):e[0],e=e[1],r=e-t,r=a?j(t,e,n):r/(n+1);return T(t+r,e,r)}}function t(e){c.Transform.call(this,null,e)}function Q(e,t,r){var n=J(r.levels||10,r.nice,!1!==r.zero);return\"shared\"!==r.resolve?n:n(e.map(e=>u(t(e).values)))}function Z(e,t,r,n){let a=n.scale||t.scale,i=n.translate||t.translate;var o,s;v.isFunction(a)&&(a=a(r,n)),v.isFunction(i)&&(i=i(r,n)),(1!==a&&null!=a||i)&&(r=(v.isNumber(a)?a:a[0])||1,n=(v.isNumber(a)?a:a[1])||1,o=i&&i[0]||0,s=i&&i[1]||0,e.forEach(X(t,r,n,o,s)))}function X(e,t,r,n,a){const i=e.x1||0,o=e.y1||0,s=t*r<0;function l(e){e.forEach(c)}function c(e){s&&e.reverse(),e.forEach(u)}function u(e){e[0]=(e[0]-i)*t+n,e[1]=(e[1]-o)*r+a}return function(e){return e.coordinates.forEach(l),e}}function ee(e,t,r){e=0<=e?e:L.bandwidthNRD(t,r);return Math.round((Math.sqrt(4*e*e+1)-1)/2)}function n(e){return v.isFunction(e)?e:v.constant(+e)}function te(){var p=e=>e[0],f=e=>e[1],h=v.one,m=[-1,-1],g=960,_=500,y=2;function r(e,t){const r=ee(m[0],e,p)>>y,n=ee(m[1],e,f)>>y,a=r?2+r:0,i=n?2+n:0,o=2*a+(g>>y),s=2*i+(_>>y),l=new Float32Array(o*s),c=new Float32Array(o*s);let u=l;e.forEach(e=>{var t=a+(+p(e)>>y),r=i+(+f(e)>>y);0<=t&&t<o&&0<=r&&r<s&&(l[t+r*o]+=+h(e))}),0<r&&0<n?(b(o,s,l,c,r),E(o,s,c,l,n),b(o,s,l,c,r),E(o,s,c,l,n),b(o,s,l,c,r),E(o,s,c,l,n)):0<r?(b(o,s,l,c,r),b(o,s,c,l,r),b(o,s,l,c,r),u=c):0<n&&(E(o,s,l,c,n),E(o,s,c,l,n),E(o,s,l,c,n),u=c);var d=t?Math.pow(2,-2*y):1/H(u);for(let e=0,t=o*s;e<t;++e)u[e]*=d;return{values:u,scale:1<<y,width:o,height:s,x1:a,y1:i,x2:a+(g>>y),y2:i+(_>>y)}}return r.x=function(e){return arguments.length?(p=n(e),r):p},r.y=function(e){return arguments.length?(f=n(e),r):f},r.weight=function(e){return arguments.length?(h=n(e),r):h},r.size=function(e){var t;return arguments.length?(t=+e[0],e=+e[1],0<=t&&0<=e||v.error(\"invalid size\"),g=t,_=e,r):[g,_]},r.cellSize=function(e){return arguments.length?(1<=(e=+e)||v.error(\"invalid cell size\"),y=Math.floor(Math.log(e)/Math.LN2),r):1<<y},r.bandwidth=function(e){return arguments.length?(2!==(e=1===(e=v.array(e)).length?[+e[0],+e[0]]:e).length&&v.error(\"invalid bandwidth\"),m=e,r):m},r}function b(n,e,a,i,o){var s=1+(o<<1);for(let r=0;r<e;++r)for(let e=0,t=0;e<n+o;++e)e<n&&(t+=a[e+r*n]),e>=o&&(e>=s&&(t-=a[e-s+r*n]),i[e-o+r*n]=t/Math.min(e+1,n-1+s-e,s))}function E(n,a,i,o,s){var l=1+(s<<1);for(let r=0;r<n;++r)for(let e=0,t=0;e<a+s;++e)e<a&&(t+=i[r+e*n]),e>=s&&(e>=l&&(t-=i[r+(e-l)*n]),o[r+(e-s)*n]=t/Math.min(e+1,a-1+l-e,l))}function r(e){c.Transform.call(this,null,e)}t.Definition={type:\"Isocontour\",metadata:{generates:!0},params:[{name:\"field\",type:\"field\"},{name:\"thresholds\",type:\"number\",array:!0},{name:\"levels\",type:\"number\"},{name:\"nice\",type:\"boolean\",default:!1},{name:\"resolve\",type:\"enum\",values:[\"shared\",\"independent\"],default:\"independent\"},{name:\"zero\",type:\"boolean\",default:!0},{name:\"smooth\",type:\"boolean\",default:!0},{name:\"scale\",type:\"number\",expr:!0},{name:\"translate\",type:\"number\",array:!0,expr:!0},{name:\"as\",type:\"string\",null:!0,default:\"contour\"}]},v.inherits(t,c.Transform,{transform(n,e){var t,r,a,i,o,s,l;return!this.value||e.changed()||n.modified()?(t=e.fork(e.NO_SOURCE|e.NO_FIELDS),r=e.materialize(e.SOURCE).source,a=n.field||v.identity,i=V().smooth(!1!==n.smooth),o=n.thresholds||Q(r,a,n),s=null===n.as?null:n.as||\"contour\",l=[],r.forEach(t=>{var e=a(t),r=i.size([e.width,e.height])(e.values,v.isArray(o)?o:o(e.values));Z(r,e,t,n),r.forEach(e=>{l.push(c.rederive(t,c.ingest(null!=s?{[s]:e}:e)))})}),this.value&&(t.rem=this.value),this.value=t.source=t.add=l,t):e.StopPropagation}}),r.Definition={type:\"KDE2D\",metadata:{generates:!0},params:[{name:\"size\",type:\"number\",array:!0,length:2,required:!0},{name:\"x\",type:\"field\",required:!0},{name:\"y\",type:\"field\",required:!0},{name:\"weight\",type:\"field\"},{name:\"groupby\",type:\"field\",array:!0},{name:\"cellSize\",type:\"number\"},{name:\"bandwidth\",type:\"number\",array:!0,length:2},{name:\"counts\",type:\"boolean\",default:!1},{name:\"as\",type:\"string\",default:\"grid\"}]};const $e=[\"x\",\"y\",\"weight\",\"size\",\"cellSize\",\"bandwidth\"];function re(t,r){return $e.forEach(e=>null!=r[e]?t[e](r[e]):0),t}function ne(e,t){var r,n,a,i,o,s,l=[],c=e=>e(i);if(null==t)l.push(e);else for(r={},n=0,a=e.length;n<a;++n)i=e[n],(s=r[o=t.map(c)])||(r[o]=s=[],s.dims=o,l.push(s)),s.push(i);return l}function a(e){c.Transform.call(this,null,e)}v.inherits(r,c.Transform,{transform(t,e){var r,n,a,i,o,s;return!this.value||e.changed()||t.modified()?(r=e.fork(e.NO_SOURCE|e.NO_FIELDS),n=ne(e.materialize(e.SOURCE).source,t.groupby),a=(t.groupby||[]).map(v.accessorName),i=re(te(),t),o=t.as||\"grid\",s=[],s=n.map(e=>c.ingest(function(t,r){for(let e=0;e<a.length;++e)t[a[e]]=r[e];return t}({[o]:i(e,t.counts)},e.dims))),this.value&&(r.rem=this.value),this.value=r.source=r.add=s,r):e.StopPropagation}}),a.Definition={type:\"Contour\",metadata:{generates:!0},params:[{name:\"size\",type:\"number\",array:!0,length:2,required:!0},{name:\"values\",type:\"number\",array:!0},{name:\"x\",type:\"field\"},{name:\"y\",type:\"field\"},{name:\"weight\",type:\"field\"},{name:\"cellSize\",type:\"number\"},{name:\"bandwidth\",type:\"number\"},{name:\"count\",type:\"number\"},{name:\"nice\",type:\"boolean\",default:!1},{name:\"thresholds\",type:\"number\",array:!0},{name:\"smooth\",type:\"boolean\",default:!0}]},v.inherits(a,c.Transform,{transform(e,t){var r,n,a,i,o,s;return!this.value||t.changed()||e.modified()?(r=t.fork(t.NO_SOURCE|t.NO_FIELDS),n=V().smooth(!1!==e.smooth),a=e.values,i=e.thresholds||J(e.count||10,e.nice,!!a),o=e.size,a||(a=t.materialize(t.SOURCE).source,s=X(e=re(te(),e)(a,!0),e.scale||1,e.scale||1,0,0),o=[e.width,e.height],a=e.values),i=v.isArray(i)?i:i(a),a=n.size(o)(a,i),s&&a.forEach(s),this.value&&(r.rem=this.value),this.value=r.source=r.add=(a||[]).map(c.ingest),r):t.StopPropagation}});const D=\"Feature\",x=\"FeatureCollection\";function i(e){c.Transform.call(this,null,e)}function o(e){c.Transform.call(this,null,e)}function ae(e,t){var r=e.pointRadius();return e.context(null),null!=t&&e.pointRadius(t),r}function l(e){c.Transform.call(this,null,e)}function d(e){c.Transform.call(this,null,e)}function ie(r,n,a){const t=null==a?e=>r(n(e)):e=>{var t=r.pointRadius(),e=r.pointRadius(a)(n(e));return r.pointRadius(t),e};return t.context=e=>(r.context(e),t),t}i.Definition={type:\"GeoJSON\",metadata:{},params:[{name:\"fields\",type:\"field\",array:!0,length:2},{name:\"geojson\",type:\"field\"}]},v.inherits(i,c.Transform,{transform(e,t){var r=this._features,n=this._points,a=e.fields,i=a&&a[0],o=a&&a[1],s=e.geojson||!a&&v.identity,a=t.ADD,e=e.modified()||t.changed(t.REM)||t.modified(v.accessorFields(s))||i&&t.modified(v.accessorFields(i))||o&&t.modified(v.accessorFields(o));this.value&&!e||(a=t.SOURCE,this._features=r=[],this._points=n=[]),s&&t.visit(a,e=>r.push(s(e))),i&&o&&(t.visit(a,e=>{var t=i(e),e=o(e);null!=t&&null!=e&&(t=+t)===t&&(e=+e)===e&&n.push([t,e])}),r=r.concat({type:D,geometry:{type:\"MultiPoint\",coordinates:n}})),this.value={type:x,features:r}}}),o.Definition={type:\"GeoPath\",metadata:{modifies:!0},params:[{name:\"projection\",type:\"projection\"},{name:\"field\",type:\"field\"},{name:\"pointRadius\",type:\"number\",expr:!0},{name:\"as\",type:\"string\",default:\"path\"}]},v.inherits(o,c.Transform,{transform(e,t){var r=t.fork(t.ALL),n=this.value,a=e.field||v.identity,i=e.as||\"path\",o=r.SOURCE,t=(!n||e.modified()?(this.value=n=s.getProjectionPath(e.projection),r.materialize().reflow()):o=a===v.identity||t.modified(a.fields)?r.ADD_MOD:r.ADD,ae(n,e.pointRadius));return r.visit(o,e=>e[i]=n(a(e))),n.pointRadius(t),r.modifies(i)}}),l.Definition={type:\"GeoPoint\",metadata:{modifies:!0},params:[{name:\"projection\",type:\"projection\",required:!0},{name:\"fields\",type:\"field\",array:!0,required:!0,length:2},{name:\"as\",type:\"string\",array:!0,length:2,default:[\"x\",\"y\"]}]},v.inherits(l,c.Transform,{transform(e,t){var r=e.projection,n=e.fields[0],a=e.fields[1],i=e.as||[\"x\",\"y\"],o=i[0],s=i[1];function l(e){var t=r([n(e),a(e)]);t?(e[o]=t[0],e[s]=t[1]):(e[o]=void 0,e[s]=void 0)}return e.modified()?t=t.materialize().reflow(!0).visit(t.SOURCE,l):(e=t.modified(n.fields)||t.modified(a.fields),t.visit(e?t.ADD_MOD:t.ADD,l)),t.modifies(i)}}),d.Definition={type:\"GeoShape\",metadata:{modifies:!0,nomod:!0},params:[{name:\"projection\",type:\"projection\"},{name:\"field\",type:\"field\",default:\"datum\"},{name:\"pointRadius\",type:\"number\",expr:!0},{name:\"as\",type:\"string\",default:\"shape\"}]},v.inherits(d,c.Transform,{transform(e,t){var t=t.fork(t.ALL),r=this.value,n=e.as||\"shape\",a=t.ADD;return r&&!e.modified()||(this.value=r=ie(s.getProjectionPath(e.projection),e.field||v.field(\"datum\"),e.pointRadius),t.materialize().reflow(),a=t.SOURCE),t.visit(a,e=>e[n]=r),t.modifies(n)}});var S=1e-6,oe=Math.abs,A=Math.ceil;function se(e,t,r){var n=T(e,t-S,r).concat(t);return function(t){return n.map(function(e){return[t,e]})}}function le(e,t,r){var n=T(e,t-S,r).concat(t);return function(t){return n.map(function(e){return[e,t]})}}function ce(){var t,r,n,a,i,o,s,l,c,u,d,p,f=10,h=f,m=90,g=360,_=2.5;function y(){return{type:\"MultiLineString\",coordinates:e()}}function e(){return T(A(a/m)*m,n,m).map(d).concat(T(A(l/g)*g,s,g).map(p)).concat(T(A(r/f)*f,t,f).filter(function(e){return oe(e%m)>S}).map(c)).concat(T(A(o/h)*h,i,h).filter(function(e){return oe(e%g)>S}).map(u))}return y.lines=function(){return e().map(function(e){return{type:\"LineString\",coordinates:e}})},y.outline=function(){return{type:\"Polygon\",coordinates:[d(a).concat(p(s).slice(1),d(n).reverse().slice(1),p(l).reverse().slice(1))]}},y.extent=function(e){return arguments.length?y.extentMajor(e).extentMinor(e):y.extentMinor()},y.extentMajor=function(e){return arguments.length?(a=+e[0][0],n=+e[1][0],l=+e[0][1],s=+e[1][1],n<a&&(e=a,a=n,n=e),s<l&&(e=l,l=s,s=e),y.precision(_)):[[a,l],[n,s]]},y.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],t<r&&(e=r,r=t,t=e),i<o&&(e=o,o=i,i=e),y.precision(_)):[[r,o],[t,i]]},y.step=function(e){return arguments.length?y.stepMajor(e).stepMinor(e):y.stepMinor()},y.stepMajor=function(e){return arguments.length?(m=+e[0],g=+e[1],y):[m,g]},y.stepMinor=function(e){return arguments.length?(f=+e[0],h=+e[1],y):[f,h]},y.precision=function(e){return arguments.length?(_=+e,c=se(o,i,90),u=le(r,t,_),d=se(l,s,90),p=le(a,n,_),y):_},y.extentMajor([[-180,-90+S],[180,90-S]]).extentMinor([[-180,-80-S],[180,80+S]])}function p(e){c.Transform.call(this,[],e),this.generator=ce()}function f(e,t,r){(e.prototype=t.prototype=r).constructor=e}function ue(e,t){var r,n=Object.create(e.prototype);for(r in t)n[r]=t[r];return n}function h(){}p.Definition={type:\"Graticule\",metadata:{changes:!0,generates:!0},params:[{name:\"extent\",type:\"array\",array:!0,length:2,content:{type:\"number\",array:!0,length:2}},{name:\"extentMajor\",type:\"array\",array:!0,length:2,content:{type:\"number\",array:!0,length:2}},{name:\"extentMinor\",type:\"array\",array:!0,length:2,content:{type:\"number\",array:!0,length:2}},{name:\"step\",type:\"number\",array:!0,length:2},{name:\"stepMajor\",type:\"number\",array:!0,length:2,default:[90,360]},{name:\"stepMinor\",type:\"number\",array:!0,length:2,default:[10,10]},{name:\"precision\",type:\"number\",default:2.5}]},v.inherits(p,c.Transform,{transform(e,t){var r,n=this.value,a=this.generator;if(!n.length||e.modified())for(const i in e)v.isFunction(a[i])&&a[i](e[i]);return r=a(),n.length?t.mod.push(c.replace(n[0],r)):t.add.push(c.ingest(r)),n[0]=r,t}});var m=\"\\\\s*([+-]?\\\\d+)\\\\s*\",g=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",_=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",de=/^#([0-9a-f]{3,8})$/,pe=new RegExp(`^rgb\\\\(${m},${m},${m}\\\\)$`),fe=new RegExp(`^rgb\\\\(${_},${_},${_}\\\\)$`),he=new RegExp(`^rgba\\\\(${m},${m},${m},${g}\\\\)$`),me=new RegExp(`^rgba\\\\(${_},${_},${_},${g}\\\\)$`),ge=new RegExp(`^hsl\\\\(${g},${_},${_}\\\\)$`),_e=new RegExp(`^hsla\\\\(${g},${_},${_},${g}\\\\)$`),ye={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Te(){return this.rgb().formatHex()}function ve(){return this.rgb().formatHex8()}function be(){return Ie(this).formatHsl()}function Ee(){return this.rgb().formatRgb()}function y(e){var t,r;return e=(e+\"\").trim().toLowerCase(),(t=de.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?Se(t):3===r?new w(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?O(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?O(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=pe.exec(e))?new w(t[1],t[2],t[3],1):(t=fe.exec(e))?new w(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=he.exec(e))?O(t[1],t[2],t[3],t[4]):(t=me.exec(e))?O(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=ge.exec(e))?ke(t[1],t[2]/100,t[3]/100,1):(t=_e.exec(e))?ke(t[1],t[2]/100,t[3]/100,t[4]):ye.hasOwnProperty(e)?Se(ye[e]):\"transparent\"===e?new w(NaN,NaN,NaN,0):null}function Se(e){return new w(e>>16&255,e>>8&255,255&e,1)}function O(e,t,r,n){return new w(e=n<=0?t=r=NaN:e,t,r,n)}function Ae(e){return(e=e instanceof h?e:y(e))?new w((e=e.rgb()).r,e.g,e.b,e.opacity):new w}function C(e,t,r,n){return 1===arguments.length?Ae(e):new w(e,t,r,null==n?1:n)}function w(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function Oe(){return\"#\"+R(this.r)+R(this.g)+R(this.b)}function Ce(){return\"#\"+R(this.r)+R(this.g)+R(this.b)+R(255*(isNaN(this.opacity)?1:this.opacity))}function we(){var e=k(this.opacity);return(1===e?\"rgb(\":\"rgba(\")+I(this.r)+`, ${I(this.g)}, `+I(this.b)+(1===e?\")\":`, ${e})`)}function k(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function I(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function R(e){return((e=I(e))<16?\"0\":\"\")+e.toString(16)}function ke(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||1<=r?e=t=NaN:t<=0&&(e=NaN),new N(e,t,r,n)}function Ie(e){var t,r,n,a,i,o,s,l;return e instanceof N?new N(e.h,e.s,e.l,e.opacity):(e=e instanceof h?e:y(e))?e instanceof N?e:(t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,a=Math.min(t,r,n),o=NaN,l=((i=Math.max(t,r,n))+a)/2,(s=i-a)?(o=t===i?(r-n)/s+6*(r<n):r===i?(n-t)/s+2:(t-r)/s+4,s/=l<.5?i+a:2-i-a,o*=60):s=0<l&&l<1?0:o,new N(o,s,l,e.opacity)):new N}function Re(e,t,r,n){return 1===arguments.length?Ie(e):new N(e,t,r,null==n?1:n)}function N(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ne(e){return(e=(e||0)%360)<0?e+360:e}function M(e){return Math.max(0,Math.min(1,e||0))}function Me(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}function Pe(e){c.Transform.call(this,null,e)}function De(t,r){let e;return v.isFunction(t)?(e=e=>C(t(e,r))).dep=Le(t):e=v.constant(C(t||\"#888\")),e}function xe(t,r){let e;return v.isFunction(t)?(e=e=>t(e,r)).dep=Le(t):t?e=v.constant(t):(e=e=>e.$value/e.$max||0).dep=!0,e}function Le(e){return!!v.isFunction(e)&&((e=v.toSet(v.accessorFields(e))).$x||e.$y||e.$value||e.$max)}function Fe(e,a,i,o){const s=e.width,t=e.height,l=e.x1||0,c=e.y1||0,u=e.x2||s,d=e.y2||t,r=e.values,p=r?e=>r[e]:v.zero,n=F.canvas(u-l,d-c),f=n.getContext(\"2d\"),h=f.getImageData(0,0,u-l,d-c),m=h.data;for(let r=c,n=0;r<d;++r){a.$y=r-c;for(let e=l,t=r*s;e<u;++e,n+=4){a.$x=e-l,a.$value=p(e+t);var g=i(a);m[n+0]=g.r,m[n+1]=g.g,m[n+2]=g.b,m[n+3]=~~(255*o(a))}}return f.putImageData(h,0,0),n}function Ue(e){c.Transform.call(this,null,e),this.modified(!0)}function Be(e,t){var r=Ge(t.fit);t.extent?e.fitExtent(t.extent,r):t.size&&e.fitSize(t.size,r)}function je(e){var t=s.projection((e||\"mercator\").toLowerCase());return t||v.error(\"Unrecognized projection type: \"+e),t()}function He(e,t,r){v.isFunction(e[t])&&e[t](r)}function Ge(e){return 1===(e=v.array(e)).length?e[0]:{type:x,features:e.reduce((e,t)=>e.concat(Ve(t)),[])}}function Ve(e){return e.type===x?e.features:v.array(e).filter(e=>null!=e).map(e=>e.type===D?e:{type:D,geometry:e})}f(h,y,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Te,formatHex:Te,formatHex8:ve,formatHsl:be,formatRgb:Ee,toString:Ee}),f(w,C,ue(h,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new w(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new w(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new w(I(this.r),I(this.g),I(this.b),k(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Oe,formatHex:Oe,formatHex8:Ce,formatRgb:we,toString:we})),f(N,Re,ue(h,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new N(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new N(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,t=r+(r<.5?r:1-r)*t,r=2*r-t;return new w(Me(240<=e?e-240:120+e,r,t),Me(e,r,t),Me(e<120?240+e:e-120,r,t),this.opacity)},clamp(){return new N(Ne(this.h),M(this.s),M(this.l),k(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){var e=k(this.opacity);return(1===e?\"hsl(\":\"hsla(\")+Ne(this.h)+`, ${100*M(this.s)}%, ${100*M(this.l)}%`+(1===e?\")\":`, ${e})`)}})),Pe.Definition={type:\"heatmap\",metadata:{modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"color\",type:\"string\",expr:!0},{name:\"opacity\",type:\"number\",expr:!0},{name:\"resolve\",type:\"enum\",values:[\"shared\",\"independent\"],default:\"independent\"},{name:\"as\",type:\"string\",default:\"image\"}]},v.inherits(Pe,c.Transform,{transform(e,t){var r,n,a,i,o,s,l;return t.changed()||e.modified()?(r=t.materialize(t.SOURCE).source,n=\"shared\"===e.resolve,a=e.field||v.identity,i=xe(e.opacity,e),o=De(e.color,e),s=e.as||\"image\",l={$x:0,$y:0,$value:0,$max:n?u(r.map(e=>u(a(e).values))):0},r.forEach(e=>{var t=a(e),r=v.extend({},e,l);n||(r.$max=u(t.values||[])),e[s]=Fe(t,r,o.dep?o:v.constant(o(r)),i.dep?i:v.constant(i(r)))}),t.reflow(!0).modifies(s)):t.StopPropagation}}),v.inherits(Ue,c.Transform,{transform(t,e){let r=this.value;return!r||t.modified(\"type\")?(this.value=r=je(t.type),s.projectionProperties.forEach(e=>{null!=t[e]&&He(r,e,t[e])})):s.projectionProperties.forEach(e=>{t.modified(e)&&He(r,e,t[e])}),null!=t.pointRadius&&r.path.pointRadius(t.pointRadius),t.fit&&Be(r,t),e.fork(e.NO_SOURCE|e.NO_FIELDS)}}),e.contour=a,e.geojson=i,e.geopath=o,e.geopoint=l,e.geoshape=d,e.graticule=p,e.heatmap=Pe,e.isocontour=t,e.kde2d=r,e.projection=Ue}}return CD.exports}var RD,ND={exports:{}};function MD(){if(!RD){RD=1;var L=ND.exports;{var t=rD(),c=HP();function F(i,o){var s,l=1;function t(){for(var e,t=s.length,r=0,n=0,a=0;a<t;++a)r+=(e=s[a]).x,n+=e.y;for(r=(r/t-i)*l,n=(n/t-o)*l,a=0;a<t;++a)(e=s[a]).x-=r,e.y-=n}return null==i&&(i=0),null==o&&(o=0),t.initialize=function(e){s=e},t.x=function(e){return arguments.length?(i=+e,t):i},t.y=function(e){return arguments.length?(o=+e,t):o},t.strength=function(e){return arguments.length?(l=+e,t):l},t}function U(e){var t=+this._x.call(null,e),r=+this._y.call(null,e);return d(this.cover(t,r),t,r,e)}function d(e,t,r,n){if(!isNaN(t)&&!isNaN(r)){var a,i,o,s,l,c,u,d,p,f=e._root,h={data:n},m=e._x0,g=e._y0,_=e._x1,y=e._y1;if(f){for(;f.length;)if((c=t>=(i=(m+_)/2))?m=i:_=i,(u=r>=(o=(g+y)/2))?g=o:y=o,!(f=(a=f)[d=u<<1|c]))return a[d]=h,e;if(s=+e._x.call(null,f.data),l=+e._y.call(null,f.data),t===s&&r===l)h.next=f,a?a[d]=h:e._root=h;else{for(;a=a?a[d]=new Array(4):e._root=new Array(4),(c=t>=(i=(m+_)/2))?m=i:_=i,(u=r>=(o=(g+y)/2))?g=o:y=o,(d=u<<1|c)==(p=(o<=l)<<1|i<=s););a[p]=f,a[d]=h}}else e._root=h}return e}function B(e){for(var t,r,n=e.length,a=new Array(n),i=new Array(n),o=1/0,s=1/0,l=-1/0,c=-1/0,u=0;u<n;++u)isNaN(t=+this._x.call(null,r=e[u]))||isNaN(r=+this._y.call(null,r))||((a[u]=t)<o&&(o=t),l<t&&(l=t),(i[u]=r)<s&&(s=r),c<r&&(c=r));if(!(l<o||c<s))for(this.cover(o,s).cover(l,c),u=0;u<n;++u)d(this,a[u],i[u],e[u]);return this}function j(e,t){if(!isNaN(e=+e)&&!isNaN(t=+t)){var r=this._x0,n=this._y0,a=this._x1,i=this._y1;if(isNaN(r))a=(r=Math.floor(e))+1,i=(n=Math.floor(t))+1;else{for(var o,s,l=a-r||1,c=this._root;e<r||a<=e||t<n||i<=t;)switch(s=(t<n)<<1|e<r,(o=new Array(4))[s]=c,c=o,l*=2,s){case 0:a=r+l,i=n+l;break;case 1:r=a-l,i=n+l;break;case 2:a=r+l,n=i-l;break;case 3:r=a-l,n=i-l}this._root&&this._root.length&&(this._root=c)}this._x0=r,this._y0=n,this._x1=a,this._y1=i}return this}function H(){var t=[];return this.visit(function(e){if(!e.length)for(;t.push(e.data),e=e.next;);}),t}function G(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function _(e,t,r,n,a){this.node=e,this.x0=t,this.y0=r,this.x1=n,this.y1=a}function V(e,t,r){var n,a,i,o,s,l,c,u,d=this._x0,p=this._y0,f=this._x1,h=this._y1,m=[],g=this._root;for(g&&m.push(new _(g,d,p,f,h)),null==r?r=1/0:(d=e-r,p=t-r,f=e+r,h=t+r,r*=r);n=m.pop();)!(g=n.node)||(s=n.x0)>f||(l=n.y0)>h||(o=n.x1)<d||(a=n.y1)<p||(g.length?(m.push(new _(g[3],i=(s+o)/2,c=(l+a)/2,o,a),new _(g[2],s,c,i,a),new _(g[1],i,l,o,c),new _(g[0],s,l,i,c)),(a=(c<=t)<<1|i<=e)&&(n=m[m.length-1],m[m.length-1]=m[m.length-1-a],m[m.length-1-a]=n)):(l=(o=e-+this._x.call(null,g.data))*o+(s=t-+this._y.call(null,g.data))*s)<r&&(d=e-(c=Math.sqrt(r=l)),p=t-c,f=e+c,h=t+c,u=g.data));return u}function q(e){if(!isNaN(i=+this._x.call(null,e))&&!isNaN(o=+this._y.call(null,e))){var t,r,n,a,i,o,s,l,c,u,d,p=this._root,f=this._x0,h=this._y0,m=this._x1,g=this._y1;if(p){if(p.length)for(;;){if((l=i>=(s=(f+m)/2))?f=s:m=s,(c=o>=(s=(h+g)/2))?h=s:g=s,!(p=(t=p)[u=c<<1|l]))return this;if(!p.length)break;(t[u+1&3]||t[u+2&3]||t[u+3&3])&&(r=t,d=u)}for(;p.data!==e;)if(!(p=(n=p).next))return this;(a=p.next)&&delete p.next,n?a?n.next=a:delete n.next:t?(a?t[u]=a:delete t[u],(p=t[0]||t[1]||t[2]||t[3])&&p===(t[3]||t[2]||t[1]||t[0])&&!p.length&&(r?r[d]=p:this._root=p)):this._root=a}}return this}function z(e){for(var t=0,r=e.length;t<r;++t)this.remove(e[t]);return this}function W(){return this._root}function $(){var t=0;return this.visit(function(e){if(!e.length)for(;++t,e=e.next;);}),t}function K(e){var t,r,n,a,i,o,s,l=[],c=this._root;for(c&&l.push(new _(c,this._x0,this._y0,this._x1,this._y1));i=l.pop();)!e(c=i.node,r=i.x0,n=i.y0,a=i.x1,i=i.y1)&&c.length&&(o=(r+a)/2,s=(n+i)/2,(t=c[3])&&l.push(new _(t,o,s,a,i)),(t=c[2])&&l.push(new _(t,r,s,o,i)),(t=c[1])&&l.push(new _(t,o,n,a,s)),t=c[0])&&l.push(new _(t,r,n,o,s));return this}function Y(e){var t,r=[],n=[];for(this._root&&r.push(new _(this._root,this._x0,this._y0,this._x1,this._y1));t=r.pop();){var a,i,o,s,l,c,u,d=t.node;d.length&&(i=t.x0,o=t.y0,c=(i+(s=t.x1))/2,u=(o+(l=t.y1))/2,(a=d[0])&&r.push(new _(a,i,o,c,u)),(a=d[1])&&r.push(new _(a,c,o,s,u)),(a=d[2])&&r.push(new _(a,i,u,c,l)),a=d[3])&&r.push(new _(a,c,u,s,l)),n.push(t)}for(;t=n.pop();)e(t.node,t.x0,t.y0,t.x1,t.y1);return this}function J(e){return e[0]}function Q(e){return arguments.length?(this._x=e,this):this._x}function Z(e){return e[1]}function X(e){return arguments.length?(this._y=e,this):this._y}function g(e,t,r){t=new i(null==t?J:t,null==r?Z:r,NaN,NaN,NaN,NaN);return null==e?t:t.addAll(e)}function i(e,t,r,n,a,i){this._x=e,this._y=t,this._x0=r,this._y0=n,this._x1=a,this._y1=i,this._root=void 0}function o(e){for(var t={data:e.data},r=t;e=e.next;)r=r.next={data:e.data};return t}var e=g.prototype=i.prototype;function y(e){return function(){return e}}function T(e){return 1e-6*(e()-.5)}function ee(e){return e.x+e.vx}function te(e){return e.y+e.vy}function re(n){var i,o,p,f=1,h=1;function t(){for(var e,t,s,l,c,u,d,r=i.length,n=0;n<h;++n)for(t=g(i,ee,te).visitAfter(m),e=0;e<r;++e)s=i[e],u=o[s.index],d=u*u,l=s.x+s.vx,c=s.y+s.vy,t.visit(a);function a(e,t,r,n,a){var i=e.data,e=e.r,o=u+e;if(!i)return l+o<t||n<l-o||c+o<r||a<c-o;i.index>s.index&&(r=(t=l-i.x-i.vx)*t+(n=c-i.y-i.vy)*n)<o*o&&(0===t&&(r+=(t=T(p))*t),0===n&&(r+=(n=T(p))*n),r=(o-(r=Math.sqrt(r)))/r*f,s.vx+=(t*=r)*(o=(e*=e)/(d+e)),s.vy+=(n*=r)*o,i.vx-=t*(o=1-o),i.vy-=n*o)}}function m(e){if(e.data)return e.r=o[e.data.index];for(var t=e.r=0;t<4;++t)e[t]&&e[t].r>e.r&&(e.r=e[t].r)}function r(){if(i){var e,t,r=i.length;for(o=new Array(r),e=0;e<r;++e)t=i[e],o[t.index]=+n(t,e,i)}}return\"function\"!=typeof n&&(n=y(null==n?1:+n)),t.initialize=function(e,t){i=e,p=t,r()},t.iterations=function(e){return arguments.length?(h=+e,t):h},t.strength=function(e){return arguments.length?(f=+e,t):f},t.radius=function(e){return arguments.length?(n=\"function\"==typeof e?e:y(+e),r(),t):n},t}function ne(e){return e.index}function v(e,t){e=e.get(t);if(e)return e;throw new Error(\"node not found: \"+t)}function ae(c){var u,d,i,o,p,f,s=ne,r=function(e){return 1/Math.min(o[e.source.index],o[e.target.index])},n=y(30),h=1;function t(e){for(var t=0,r=c.length;t<h;++t)for(var n,a,i,o,s,l=0;l<r;++l)n=(a=c[l]).source,i=(a=a.target).x+a.vx-n.x-n.vx||T(f),o=a.y+a.vy-n.y-n.vy||T(f),i*=s=((s=Math.sqrt(i*i+o*o))-d[l])/s*e*u[l],o*=s,a.vx-=i*(s=p[l]),a.vy-=o*s,n.vx+=i*(s=1-s),n.vy+=o*s}function a(){if(i){var e,t=i.length,r=c.length,n=new Map(i.map((e,t)=>[s(e,t,i),e])),a=0;for(o=new Array(t);a<r;++a)(e=c[a]).index=a,\"object\"!=typeof e.source&&(e.source=v(n,e.source)),\"object\"!=typeof e.target&&(e.target=v(n,e.target)),o[e.source.index]=(o[e.source.index]||0)+1,o[e.target.index]=(o[e.target.index]||0)+1;for(a=0,p=new Array(r);a<r;++a)e=c[a],p[a]=o[e.source.index]/(o[e.source.index]+o[e.target.index]);u=new Array(r),l(),d=new Array(r),m()}}function l(){if(i)for(var e=0,t=c.length;e<t;++e)u[e]=+r(c[e],e,c)}function m(){if(i)for(var e=0,t=c.length;e<t;++e)d[e]=+n(c[e],e,c)}return null==c&&(c=[]),t.initialize=function(e,t){i=e,f=t,a()},t.links=function(e){return arguments.length?(c=e,a(),t):c},t.id=function(e){return arguments.length?(s=e,t):s},t.iterations=function(e){return arguments.length?(h=+e,t):h},t.strength=function(e){return arguments.length?(r=\"function\"==typeof e?e:y(+e),l(),t):r},t.distance=function(e){return arguments.length?(n=\"function\"==typeof e?e:y(+e),m(),t):n},t}e.copy=function(){var e,t,r=new i(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(n)if(n.length)for(e=[{source:n,target:r._root=new Array(4)}];n=e.pop();)for(var a=0;a<4;++a)(t=n.source[a])&&(t.length?e.push({source:t,target:n.target[a]=new Array(4)}):n.target[a]=o(t));else r._root=o(n);return r},e.add=U,e.addAll=B,e.cover=j,e.data=H,e.extent=G,e.find=V,e.remove=q,e.removeAll=z,e.root=W,e.size=$,e.visit=K,e.visitAfter=Y,e.x=Q,e.y=X;var ie={value:()=>{}};function m(){for(var e,t=0,r=arguments.length,n={};t<r;++t){if(!(e=arguments[t]+\"\")||e in n||/[\\s.]/.test(e))throw new Error(\"illegal type: \"+e);n[e]=[]}return new a(n)}function a(e){this._=e}function oe(e,n){return e.trim().split(/^|\\s+/).map(function(e){var t=\"\",r=e.indexOf(\".\");if(0<=r&&(t=e.slice(r+1),e=e.slice(0,r)),e&&!n.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);return{type:e,name:t}})}function se(e,t){for(var r,n=0,a=e.length;n<a;++n)if((r=e[n]).name===t)return r.value}function s(e,t,r){for(var n=0,a=e.length;n<a;++n)if(e[n].name===t){e[n]=ie,e=e.slice(0,n).concat(e.slice(n+1));break}return null!=r&&e.push({name:t,value:r}),e}a.prototype=m.prototype={constructor:a,on:function(e,t){var r,n=this._,a=oe(e+\"\",n),i=-1,o=a.length;if(!(arguments.length<2)){if(null!=t&&\"function\"!=typeof t)throw new Error(\"invalid callback: \"+t);for(;++i<o;)if(r=(e=a[i]).type)n[r]=s(n[r],e.name,t);else if(null==t)for(r in n)n[r]=s(n[r],e.name,null);return this}for(;++i<o;)if(r=(r=(e=a[i]).type)&&se(n[r],e.name))return r},copy:function(){var e,t={},r=this._;for(e in r)t[e]=r[e].slice();return new a(t)},call:function(e,t){if(0<(r=arguments.length-2))for(var r,n,a=new Array(r),i=0;i<r;++i)a[i]=arguments[i+2];if(!this._.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);for(i=0,r=(n=this._[e]).length;i<r;++i)n[i].value.apply(t,a)},apply:function(e,t,r){if(!this._.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);for(var n=this._[e],a=0,i=n.length;a<i;++a)n[a].value.apply(t,r)}};var l,u,r=0,n=0,p=0,f=1e3,h=0,b=0,E=0,S=\"object\"==typeof performance&&performance.now?performance:Date,A=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function O(){return b||(A(le),b=S.now()+E)}function le(){b=0}function C(){this._call=this._time=this._next=null}function w(e,t,r){var n=new C;return n.restart(e,t,r),n}function ce(){O(),++r;for(var e,t=l;t;)0<=(e=b-t._time)&&t._call.call(void 0,e),t=t._next;--r}function k(){b=(h=S.now())+E,r=n=0;try{ce()}finally{r=0,de(),b=0}}function ue(){var e=S.now(),t=e-h;f<t&&(E-=t,h=e)}function de(){for(var e,t,r=l,n=1/0;r;)r=r._call?(n>r._time&&(n=r._time),(e=r)._next):(t=r._next,r._next=null,e?e._next=t:l=t);u=e,I(n)}function I(e){r||(n=n&&clearTimeout(n),24<e-b?(e<1/0&&(n=setTimeout(k,e-S.now()-E)),p=p&&clearInterval(p)):(p||(h=S.now(),p=setInterval(ue,f)),r=1,A(k)))}C.prototype=w.prototype={constructor:C,restart:function(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"callback is not a function\");r=(null==r?O():+r)+(null==t?0:+t),this._next||u===this||(u?u._next=this:l=this,u=this),this._call=e,this._time=r,I()},stop:function(){this._call&&(this._call=null,this._time=1/0,I())}};function pe(){let e=1;return()=>(e=(1664525*e+1013904223)%4294967296)/4294967296}function fe(e){return e.x}function he(e){return e.y}var me=10,ge=Math.PI*(3-Math.sqrt(5));function _e(l){var i,o=1,t=.001,s=1-Math.pow(t,1/300),c=0,u=.6,d=new Map,e=w(a),r=m(\"tick\",\"end\"),n=pe();function a(){p(),r.call(\"tick\",i),o<t&&(e.stop(),r.call(\"end\",i))}function p(e){var t,r,n=l.length;void 0===e&&(e=1);for(var a=0;a<e;++a)for(o+=(c-o)*s,d.forEach(function(e){e(o)}),t=0;t<n;++t)null==(r=l[t]).fx?r.x+=r.vx*=u:(r.x=r.fx,r.vx=0),null==r.fy?r.y+=r.vy*=u:(r.y=r.fy,r.vy=0);return i}function f(){for(var e,t,r,n=0,a=l.length;n<a;++n)(r=l[n]).index=n,null!=r.fx&&(r.x=r.fx),null!=r.fy&&(r.y=r.fy),(isNaN(r.x)||isNaN(r.y))&&(e=me*Math.sqrt(.5+n),t=n*ge,r.x=e*Math.cos(t),r.y=e*Math.sin(t)),(isNaN(r.vx)||isNaN(r.vy))&&(r.vx=r.vy=0)}function h(e){return e.initialize&&e.initialize(l,n),e}return null==l&&(l=[]),f(),i={tick:p,restart:function(){return e.restart(a),i},stop:function(){return e.stop(),i},nodes:function(e){return arguments.length?(l=e,f(),d.forEach(h),i):l},alpha:function(e){return arguments.length?(o=+e,i):o},alphaMin:function(e){return arguments.length?(t=+e,i):t},alphaDecay:function(e){return arguments.length?(s=+e,i):+s},alphaTarget:function(e){return arguments.length?(c=+e,i):c},velocityDecay:function(e){return arguments.length?(u=1-e,i):1-u},randomSource:function(e){return arguments.length?(n=e,d.forEach(h),i):n},force:function(e,t){return 1<arguments.length?(null==t?d.delete(e):d.set(e,h(t)),i):d.get(e)},find:function(e,t,r){var n,a,i,o=0,s=l.length;for(null==r?r=1/0:r*=r,o=0;o<s;++o)(n=(n=e-(a=l[o]).x)*n+(n=t-a.y)*n)<r&&(i=a,r=n);return i},on:function(e,t){return 1<arguments.length?(r.on(e,t),i):r.on(e)}}}function ye(){var a,l,c,u,d,n=y(-30),p=1,f=1/0,h=.81;function t(e){var t,r=a.length,n=g(a,fe,he).visitAfter(i);for(u=e,t=0;t<r;++t)l=a[t],n.visit(o)}function r(){if(a){var e,t,r=a.length;for(d=new Array(r),e=0;e<r;++e)t=a[e],d[t.index]=+n(t,e,a)}}function i(e){var t,r,n,a,i,o=0,s=0;if(e.length){for(n=a=i=0;i<4;++i)(t=e[i])&&(r=Math.abs(t.value))&&(o+=t.value,s+=r,n+=r*t.x,a+=r*t.y);e.x=n/s,e.y=a/s}else for((t=e).x=t.data.x,t.y=t.data.y;o+=d[t.data.index],t=t.next;);e.value=o}function o(e,t,r,n){if(!e.value)return!0;var a=e.x-l.x,i=e.y-l.y,o=n-t,s=a*a+i*i;if(o*o/h<s)return s<f&&(0===a&&(s+=(a=T(c))*a),0===i&&(s+=(i=T(c))*i),s<p&&(s=Math.sqrt(p*s)),l.vx+=a*e.value*u/s,l.vy+=i*e.value*u/s),!0;if(!(e.length||f<=s))for((e.data!==l||e.next)&&(0===a&&(s+=(a=T(c))*a),0===i&&(s+=(i=T(c))*i),s<p)&&(s=Math.sqrt(p*s));e.data!==l&&(o=d[e.data.index]*u/s,l.vx+=a*o,l.vy+=i*o),e=e.next;);}return t.initialize=function(e,t){a=e,c=t,r()},t.strength=function(e){return arguments.length?(n=\"function\"==typeof e?e:y(+e),r(),t):n},t.distanceMin=function(e){return arguments.length?(p=e*e,t):Math.sqrt(p)},t.distanceMax=function(e){return arguments.length?(f=e*e,t):Math.sqrt(f)},t.theta=function(e){return arguments.length?(h=e*e,t):Math.sqrt(h)},t}function Te(r){var a,i,o,n=y(.1);function t(e){for(var t,r=0,n=a.length;r<n;++r)(t=a[r]).vx+=(o[r]-t.x)*i[r]*e}function s(){if(a){var e,t=a.length;for(i=new Array(t),o=new Array(t),e=0;e<t;++e)i[e]=isNaN(o[e]=+r(a[e],e,a))?0:+n(a[e],e,a)}}return\"function\"!=typeof r&&(r=y(null==r?0:+r)),t.initialize=function(e){a=e,s()},t.strength=function(e){return arguments.length?(n=\"function\"==typeof e?e:y(+e),s(),t):n},t.x=function(e){return arguments.length?(r=\"function\"==typeof e?e:y(+e),s(),t):r},t}function ve(r){var a,i,o,n=y(.1);function t(e){for(var t,r=0,n=a.length;r<n;++r)(t=a[r]).vy+=(o[r]-t.y)*i[r]*e}function s(){if(a){var e,t=a.length;for(i=new Array(t),o=new Array(t),e=0;e<t;++e)i[e]=isNaN(o[e]=+r(a[e],e,a))?0:+n(a[e],e,a)}}return\"function\"!=typeof r&&(r=y(null==r?0:+r)),t.initialize=function(e){a=e,s()},t.strength=function(e){return arguments.length?(n=\"function\"==typeof e?e:y(+e),s(),t):n},t.y=function(e){return arguments.length?(r=\"function\"==typeof e?e:y(+e),s(),t):r},t}const M={center:F,collide:re,nbody:ye,link:ae,x:Te,y:ve},P=\"forces\",D=[\"alpha\",\"alphaMin\",\"alphaTarget\",\"velocityDecay\",\"forces\"],Ce=[\"static\",\"iterations\"],x=[\"x\",\"y\",\"vx\",\"vy\"];function R(e){t.Transform.call(this,null,e)}function be(e,t){return()=>e.touch(t).run()}function Ee(e,t){const r=_e(e),n=r.stop,a=r.restart;let i=!1;return r.stopped=()=>i,r.restart=()=>(i=!1,a()),r.stop=()=>(i=!0,n()),N(r,t,!0).on(\"end\",()=>i=!0)}function N(e,t,r,n){for(var a,i,o=c.array(t.forces),s=0,l=D.length;s<l;++s)(a=D[s])!==P&&t.modified(a)&&e[a](t[a]);for(s=0,l=o.length;s<l;++s)i=P+s,(a=r||t.modified(P,s)?Ae(o[s]):n&&Se(o[s],n)?e.force(i):null)&&e.force(i,a);for(l=e.numForces||0;s<l;++s)e.force(P+s,null);return e.numForces=o.length,e}function Se(e,t){var r,n;for(r in e)if(c.isFunction(n=e[r])&&t.modified(c.accessorFields(n)))return 1}function Ae(e){var t,r;for(r in c.hasOwnProperty(M,e.force)||c.error(\"Unrecognized force: \"+e.force),t=M[e.force](),e)c.isFunction(t[r])&&Oe(t[r],e[r],e);return t}function Oe(e,t,r){e(c.isFunction(t)?e=>t(e,r):t)}R.Definition={type:\"Force\",metadata:{modifies:!0},params:[{name:\"static\",type:\"boolean\",default:!1},{name:\"restart\",type:\"boolean\",default:!1},{name:\"iterations\",type:\"number\",default:300},{name:\"alpha\",type:\"number\",default:1},{name:\"alphaMin\",type:\"number\",default:.001},{name:\"alphaTarget\",type:\"number\",default:0},{name:\"velocityDecay\",type:\"number\",default:.4},{name:\"forces\",type:\"param\",array:!0,params:[{key:{force:\"center\"},params:[{name:\"x\",type:\"number\",default:0},{name:\"y\",type:\"number\",default:0}]},{key:{force:\"collide\"},params:[{name:\"radius\",type:\"number\",expr:!0},{name:\"strength\",type:\"number\",default:.7},{name:\"iterations\",type:\"number\",default:1}]},{key:{force:\"nbody\"},params:[{name:\"strength\",type:\"number\",default:-30,expr:!0},{name:\"theta\",type:\"number\",default:.9},{name:\"distanceMin\",type:\"number\",default:1},{name:\"distanceMax\",type:\"number\"}]},{key:{force:\"link\"},params:[{name:\"links\",type:\"data\"},{name:\"id\",type:\"field\"},{name:\"distance\",type:\"number\",default:30,expr:!0},{name:\"strength\",type:\"number\",expr:!0},{name:\"iterations\",type:\"number\",default:1}]},{key:{force:\"x\"},params:[{name:\"strength\",type:\"number\",default:.1},{name:\"x\",type:\"field\"}]},{key:{force:\"y\"},params:[{name:\"strength\",type:\"number\",default:.1},{name:\"y\",type:\"field\"}]}]},{name:\"as\",type:\"string\",array:!0,modify:!1,default:x}]},c.inherits(R,t.Transform,{transform(e,t){var r=this.value,n=t.changed(t.ADD_REM),a=e.modified(D),i=e.iterations||300;if(r?(n&&(t.modifies(\"index\"),r.nodes(t.source)),(a||t.changed(t.MOD))&&N(r,e,0,t)):(this.value=r=Ee(t.source,e),r.on(\"tick\",be(t.dataflow,this)),e.static||(n=!0,r.tick()),t.modifies(\"index\")),a||n||e.modified(Ce)||t.changed()&&e.restart)if(r.alpha(Math.max(r.alpha(),e.alpha||1)).alphaDecay(1-Math.pow(r.alphaMin(),1/i)),e.static)for(r.stop();0<=--i;)r.tick();else if(r.stopped()&&r.restart(),!n)return t.StopPropagation;return this.finish(e,t)},finish(e,t){var a=t.dataflow;for(let e=this._argops,t=0,r=e.length,n;t<r;++t)if((n=e[t]).name===P&&\"link\"===n.op._argval.force)for(var i,o=n.op._argops,s=0,l=o.length;s<l;++s)if(\"links\"===o[s].name&&(i=o[s].op.source)){a.pulse(i,a.changeset().reflow());break}return t.reflow(e.modified()).modifies(x)}}),L.force=R}}return ND.exports}var PD,DD={exports:{}};function xD(){if(!PD){PD=1;var e=DD.exports;{var o=rD(),s=HP();function l(e,r,n){const a={};return e.each(e=>{var t=e.data;n(t)&&(a[r(t)]=e)}),e.lookup=a,e}function L(e,t){return e.parent===t.parent?1:2}function F(e){return e.reduce(U,0)/e.length}function U(e,t){return e+t.x}function B(e){return 1+e.reduce(j,0)}function j(e,t){return Math.max(e,t.y)}function H(e){for(var t;t=e.children;)e=t[0];return e}function G(e){for(var t;t=e.children;)e=t[t.length-1];return e}function V(){var s=L,l=1,c=1,u=!1;function t(t){var r,n=0,e=(t.eachAfter(function(e){var t=e.children;t?(e.x=F(t),e.y=B(t)):(e.x=r?n+=s(e,r):0,e.y=0,r=e)}),H(t)),a=G(t),i=e.x-s(e,a)/2,o=a.x+s(a,e)/2;return t.eachAfter(u?function(e){e.x=(e.x-t.x)*l,e.y=(t.y-e.y)*c}:function(e){e.x=(e.x-i)/(o-i)*l,e.y=(1-(t.y?e.y/t.y:1))*c})}return t.separation=function(e){return arguments.length?(s=e,t):s},t.size=function(e){return arguments.length?(u=!1,l=+e[0],c=+e[1],t):u?null:[l,c]},t.nodeSize=function(e){return arguments.length?(u=!0,l=+e[0],c=+e[1],t):u?[l,c]:null},t}function q(e){var t=0,r=e.children,n=r&&r.length;if(n)for(;0<=--n;)t+=r[n].value;else t=1;e.value=t}function z(){return this.eachAfter(q)}function W(e,t){let r=-1;for(const n of this)e.call(t,n,++r,this);return this}function $(e,t){for(var r,n,a,i=[this],o=-1;r=i.pop();)if(e.call(t,r,++o,this),n=r.children)for(a=n.length-1;0<=a;--a)i.push(n[a]);return this}function K(e,t){for(var r,n,a,i=this,o=[i],s=[],l=-1;i=o.pop();)if(s.push(i),r=i.children)for(n=0,a=r.length;n<a;++n)o.push(r[n]);for(;i=s.pop();)e.call(t,i,++l,this);return this}function Y(e,t){let r=-1;for(const n of this)if(e.call(t,n,++r,this))return n}function J(a){return this.eachAfter(function(e){for(var t=+a(e.data)||0,r=e.children,n=r&&r.length;0<=--n;)t+=r[n].value;e.value=t})}function Q(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}function Z(e){for(var t=this,r=X(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var a=n.length;e!==r;)n.splice(a,0,e),e=e.parent;return n}function X(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),a=null;for(e=r.pop(),t=n.pop();e===t;)a=e,e=r.pop(),t=n.pop();return a}function ee(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function te(){return Array.from(this)}function re(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}function ne(){var t=this,r=[];return t.each(function(e){e!==t&&r.push({source:e.parent,target:e})}),r}function*ae(){var e,t,r,n,a,i=[this];do{for(t=i.reverse(),i=[];e=t.pop();)if(yield e,r=e.children)for(n=0,a=r.length;n<a;++n)i.push(r[n])}while(i.length)}function c(e,t){e instanceof Map?(e=[void 0,e],void 0===t&&(t=se)):void 0===t&&(t=oe);for(var r,n,a,i,o,e=new T(e),s=[e];r=s.pop();)if((a=t(r.data))&&(o=(a=Array.from(a)).length))for(r.children=a,i=o-1;0<=i;--i)s.push(n=a[i]=new T(a[i])),n.parent=r,n.depth=r.depth+1;return e.eachBefore(ce)}function ie(){return c(this).eachBefore(le)}function oe(e){return e.children}function se(e){return Array.isArray(e)?e[1]:null}function le(e){void 0!==e.data.value&&(e.value=e.data.value),e.data=e.data.data}function ce(e){for(var t=0;e.height=t,(e=e.parent)&&e.height<++t;);}function T(e){this.data=e,this.depth=this.height=0,this.parent=null}function u(e){return null==e?null:ue(e)}function ue(e){if(\"function\"!=typeof e)throw new Error;return e}function f(){return 0}function h(e){return function(){return e}}T.prototype=c.prototype={constructor:T,count:z,each:W,eachAfter:K,eachBefore:$,find:Y,sum:J,sort:Q,path:Z,ancestors:ee,descendants:te,leaves:re,links:ne,copy:ie,[Symbol.iterator]:ae};const Qe=1664525,Ze=1013904223,N=4294967296;function de(){let e=1;return()=>(e=(Qe*e+Ze)%N)/N}function pe(e){return\"object\"==typeof e&&\"length\"in e?e:Array.from(e)}function fe(e,t){let r=e.length,n,a;for(;r;)a=t()*r--|0,n=e[r],e[r]=e[a],e[a]=n;return e}function he(e,t){for(var r,n,a=0,i=(e=fe(Array.from(e),t)).length,o=[];a<i;)r=e[a],n&&ge(n,r)?++a:(n=_e(o=me(o,r)),a=0);return n}function me(e,t){var r,n;if(i(t,e))return[t];for(r=0;r<e.length;++r)if(a(t,e[r])&&i(d(e[r],t),e))return[e[r],t];for(r=0;r<e.length-1;++r)for(n=r+1;n<e.length;++n)if(a(d(e[r],e[n]),t)&&a(d(e[r],t),e[n])&&a(d(e[n],t),e[r])&&i(Te(e[r],e[n],t),e))return[e[r],e[n],t];throw new Error}function a(e,t){var r=e.r-t.r,n=t.x-e.x,t=t.y-e.y;return r<0||r*r<n*n+t*t}function ge(e,t){var r=e.r-t.r+1e-9*Math.max(e.r,t.r,1),n=t.x-e.x,t=t.y-e.y;return 0<r&&n*n+t*t<r*r}function i(e,t){for(var r=0;r<t.length;++r)if(!ge(e,t[r]))return;return 1}function _e(e){switch(e.length){case 1:return ye(e[0]);case 2:return d(e[0],e[1]);case 3:return Te(e[0],e[1],e[2])}}function ye(e){return{x:e.x,y:e.y,r:e.r}}function d(e,t){var r=e.x,n=e.y,e=e.r,a=t.x,i=t.y,t=t.r,o=a-r,s=i-n,l=t-e,c=Math.sqrt(o*o+s*s);return{x:(r+a+o/c*l)/2,y:(n+i+s/c*l)/2,r:(c+e+t)/2}}function Te(e,t,r){var n=e.x,a=e.y,e=e.r,i=t.x,o=t.y,t=t.r,s=r.x,l=r.y,r=r.r,c=n-i,u=n-s,d=a-o,p=a-l,f=t-e,h=r-e,m=n*n+a*a-e*e,i=m-i*i-o*o+t*t,o=m-s*s-l*l+r*r,t=u*d-c*p,m=(d*o-p*i)/(2*t)-n,s=(p*f-d*h)/t,l=(u*i-c*o)/(2*t)-a,r=(c*h-u*f)/t,p=s*s+r*r-1,d=2*(e+m*s+l*r),i=m*m+l*l-e*e,o=-(1e-6<Math.abs(p)?(d+Math.sqrt(d*d-4*p*i))/(2*p):i/d);return{x:n+m+s*o,y:a+l+r*o,r:o}}function ve(e,t,r){var n,a,i,o,s=e.x-t.x,l=e.y-t.y,c=s*s+l*l;c?(a=t.r+r.r,o=e.r+r.r,(o*=o)<(a*=a)?(n=(c+o-a)/(2*c),i=Math.sqrt(Math.max(0,o/c-n*n)),r.x=e.x-n*s-i*l,r.y=e.y-n*l+i*s):(n=(c+a-o)/(2*c),i=Math.sqrt(Math.max(0,a/c-n*n)),r.x=t.x+n*s-i*l,r.y=t.y+n*l+i*s)):(r.x=t.x+r.r,r.y=t.y)}function be(e,t){var r=e.r+t.r-1e-6,n=t.x-e.x,t=t.y-e.y;return 0<r&&n*n+t*t<r*r}function Ee(e){var t=e._,e=e.next._,r=t.r+e.r,n=(t.x*e.r+e.x*t.r)/r,e=(t.y*e.r+e.y*t.r)/r;return n*n+e*e}function m(e){this._=e,this.next=null,this.previous=null}function Se(e,t){if(!(a=(e=pe(e)).length))return 0;var r,n,a,i,o,s,l,c,u,d,p=e[0];if(p.x=0,p.y=0,!(1<a))return p.r;if(r=e[1],p.x=-r.r,r.x=p.r,r.y=0,!(2<a))return p.r+r.r;ve(r,p,n=e[2]),p=new m(p),r=new m(r),n=new m(n),((p.next=n.previous=r).next=p.previous=n).next=r.previous=p;e:for(s=3;s<a;++s){ve(p._,r._,n=e[s]),n=new m(n),l=r.next,c=p.previous,u=r._.r,d=p._.r;do{if(u<=d){if(be(l._,n._)){r=l,(p.next=r).previous=p,--s;continue e}u+=l._.r,l=l.next}else{if(be(c._,n._)){((p=c).next=r).previous=p,--s;continue e}d+=c._.r,c=c.previous}}while(l!==c.next);for(n.previous=p,n.next=r,p.next=r.previous=r=n,i=Ee(p);(n=n.next)!==r;)(o=Ee(n))<i&&(p=n,i=o);r=p.next}for(p=[r._],n=r;(n=n.next)!==r;)p.push(n._);for(n=he(p,t),s=0;s<a;++s)(p=e[s]).x-=n.x,p.y-=n.y;return n.r}function Ae(e){return Math.sqrt(e.value)}function Oe(){var r=null,n=1,a=1,i=f;function t(e){var t=de();return e.x=n/2,e.y=a/2,r?e.eachBefore(Ce(r)).eachAfter(p(i,.5,t)).eachBefore(we(1)):e.eachBefore(Ce(Ae)).eachAfter(p(f,1,t)).eachAfter(p(i,e.r/Math.min(n,a),t)).eachBefore(we(Math.min(n,a)/(2*e.r))),e}return t.radius=function(e){return arguments.length?(r=u(e),t):r},t.size=function(e){return arguments.length?(n=+e[0],a=+e[1],t):[n,a]},t.padding=function(e){return arguments.length?(i=\"function\"==typeof e?e:h(+e),t):i},t}function Ce(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function p(o,s,l){return function(e){if(t=e.children){var t,r,n,a=t.length,i=o(e)*s||0;if(i)for(r=0;r<a;++r)t[r].r+=i;if(n=Se(t,l),i)for(r=0;r<a;++r)t[r].r-=i;e.r=n+i}}}function we(r){return function(e){var t=e.parent;e.r*=r,t&&(e.x=t.x+r*e.x,e.y=t.y+r*e.y)}}function ke(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function S(e,t,r,n,a){for(var i,o=e.children,s=-1,l=o.length,c=e.value&&(n-t)/e.value;++s<l;)(i=o[s]).y0=r,i.y1=a,i.x0=t,i.x1=t+=i.value*c}function Ie(){var r=1,n=1,s=0,a=!1;function t(e){var i,o,t=e.height+1;return e.x0=e.y0=s,e.x1=r,e.y1=n/t,e.eachBefore((i=n,o=t,function(e){e.children&&S(e,e.x0,i*(e.depth+1)/o,e.x1,i*(e.depth+2)/o);var t=e.x0,r=e.y0,n=e.x1-s,a=e.y1-s;n<t&&(t=n=(t+n)/2),a<r&&(r=a=(r+a)/2),e.x0=t,e.y0=r,e.x1=n,e.y1=a})),a&&e.eachBefore(ke),e}return t.round=function(e){return arguments.length?(a=!!e,t):a},t.size=function(e){return arguments.length?(r=+e[0],n=+e[1],t):[r,n]},t.padding=function(e){return arguments.length?(s=+e,t):s},t}var Re={depth:-1},Ne={},v={};function Me(e){return e.id}function Pe(e){return e.parentId}function De(){var g,_=Me,y=Pe;function t(r){var t,e,n,a,i,o,s,l,c=Array.from(r),u=_,d=y,p=new Map;if(null!=g){const h=c.map((e,t)=>xe(g(e,t,r))),m=h.map(Le);var f=new Set(h).add(\"\");for(const n of m)f.has(n)||(f.add(n),h.push(n),m.push(Le(n)),c.push(v));u=(e,t)=>h[t],d=(e,t)=>m[t]}for(n=0,t=c.length;n<t;++n)e=c[n],o=c[n]=new T(e),null!=(s=u(e,n,r))&&(s+=\"\")&&(l=o.id=s,p.set(l,p.has(l)?Ne:o)),null!=(s=d(e,n,r))&&(s+=\"\")&&(o.parent=s);for(n=0;n<t;++n)if(s=(o=c[n]).parent){if(!(i=p.get(s)))throw new Error(\"missing: \"+s);if(i===Ne)throw new Error(\"ambiguous: \"+s);i.children?i.children.push(o):i.children=[o],o.parent=i}else{if(a)throw new Error(\"multiple roots\");a=o}if(!a)throw new Error(\"no root\");if(null!=g){for(;a.data===v&&1===a.children.length;)a=a.children[0],--t;for(let e=c.length-1;0<=e&&(o=c[e]).data===v;--e)o.data=null}if(a.parent=Re,a.eachBefore(function(e){e.depth=e.parent.depth+1,--t}).eachBefore(ce),a.parent=null,0<t)throw new Error(\"cycle\");return a}return t.id=function(e){return arguments.length?(_=u(e),t):_},t.parentId=function(e){return arguments.length?(y=u(e),t):y},t.path=function(e){return arguments.length?(g=u(e),t):g},t}function xe(e){var t=(e=\"\"+e).length;return\"/\"===(e=r(e,t-1)&&!r(e,t-2)?e.slice(0,-1):e)[0]?e:\"/\"+e}function Le(e){let t=e.length;if(t<2)return\"\";for(;1<--t&&!r(e,t););return e.slice(0,t)}function r(t,r){if(\"/\"===t[r]){let e=0;for(;0<r&&\"\\\\\"===t[--r];)++e;if(0==(1&e))return 1}}function Fe(e,t){return e.parent===t.parent?1:2}function g(e){var t=e.children;return t?t[0]:e.t}function _(e){var t=e.children;return t?t[t.length-1]:e.t}function Ue(e,t,r){var n=r/(t.i-e.i);t.c-=n,t.s+=r,e.c+=n,t.z+=r,t.m+=r}function Be(e){for(var t,r=0,n=0,a=e.children,i=a.length;0<=--i;)(t=a[i]).z+=r,t.m+=r,r+=t.s+(n+=t.c)}function je(e,t,r){return e.a.parent===t.parent?e.a:r}function y(e,t){this._=e,this.parent=null,this.children=null,this.A=null,(this.a=this).z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function He(e){for(var t,r,n,a,i,e=new y(e,0),o=[e];t=o.pop();)if(n=t._.children)for(t.children=new Array(i=n.length),a=i-1;0<=a;--a)o.push(r=t.children[a]=new y(n[a],a)),r.parent=t;return(e.parent=new y(null,0)).children=[e],e}function Ge(){var p=Fe,l=1,c=1,u=null;function t(e){var t,r,n,a,i,o,s=He(e);return s.eachAfter(d),s.parent.m=-s.z,s.eachBefore(f),u?e.eachBefore(h):((n=r=t=e).eachBefore(function(e){e.x<t.x&&(t=e),e.x>r.x&&(r=e),e.depth>n.depth&&(n=e)}),s=t===r?1:p(t,r)/2,a=s-t.x,i=l/(r.x+s+a),o=c/(n.depth||1),e.eachBefore(function(e){e.x=(e.x+a)*i,e.y=e.depth*o})),e}function d(e){var t=e.children,r=e.parent.children,n=e.i?r[e.i-1]:null;t?(Be(e),t=(t[0].z+t[t.length-1].z)/2,n?(e.z=n.z+p(e._,n._),e.m=e.z-t):e.z=t):n&&(e.z=n.z+p(e._,n._)),e.parent.A=function(e,t,r){if(t){for(var n,a=e,i=e,o=t,s=a.parent.children[0],l=a.m,c=i.m,u=o.m,d=s.m;o=_(o),a=g(a),o&&a;)s=g(s),(i=_(i)).a=e,0<(n=o.z+u-a.z-l+p(o._,a._))&&(Ue(je(o,e,r),e,n),l+=n,c+=n),u+=o.m,l+=a.m,d+=s.m,c+=i.m;o&&!_(i)&&(i.t=o,i.m+=u-c),a&&!g(s)&&(s.t=a,s.m+=l-d,r=e)}return r}(e,n,e.parent.A||r[0])}function f(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function h(e){e.x*=l,e.y=e.depth*c}return t.separation=function(e){return arguments.length?(p=e,t):p},t.size=function(e){return arguments.length?(u=!1,l=+e[0],c=+e[1],t):u?null:[l,c]},t.nodeSize=function(e){return arguments.length?(u=!0,l=+e[0],c=+e[1],t):u?[l,c]:null},t}function A(e,t,r,n,a){for(var i,o=e.children,s=-1,l=o.length,c=e.value&&(a-r)/e.value;++s<l;)(i=o[s]).x0=t,i.x1=n,i.y0=r,i.y1=r+=i.value*c}y.prototype=Object.create(T.prototype);var t=(1+Math.sqrt(5))/2;function Ve(e,t,r,n,a,i){for(var o,s,l,c,u,d,p,f,h,m,g,_=[],y=t.children,T=0,v=0,b=y.length,E=t.value;T<b;){for(l=a-r,c=i-n;!(u=y[v++].value)&&v<b;);for(g=(d=p=u)*u*(m=Math.max(c/l,l/c)/(E*e)),h=Math.max(p/g,g/d);v<b;++v){if(u+=s=y[v].value,s<d&&(d=s),p<s&&(p=s),g=u*u*m,h<(f=Math.max(p/g,g/d))){u-=s;break}h=f}_.push(o={value:u,dice:l<c,children:y.slice(T,v)}),o.dice?S(o,r,n,a,E?n+=c*u/E:i):A(o,r,n,E?r+=l*u/E:a,i),E-=u,T=v}return _}var qe=function t(i){function e(e,t,r,n,a){Ve(i,e,t,r,n,a)}return e.ratio=function(e){return t(1<(e=+e)?e:1)},e}(t);function ze(){var o=qe,t=!1,r=1,n=1,s=[0],l=f,c=f,u=f,d=f,p=f;function a(e){return e.x0=e.y0=0,e.x1=r,e.y1=n,e.eachBefore(i),s=[0],t&&e.eachBefore(ke),e}function i(e){var t=s[e.depth],r=e.x0+t,n=e.y0+t,a=e.x1-t,i=e.y1-t;a<r&&(r=a=(r+a)/2),i<n&&(n=i=(n+i)/2),e.x0=r,e.y0=n,e.x1=a,e.y1=i,e.children&&(t=s[e.depth+1]=l(e)/2,r+=p(e)-t,n+=c(e)-t,(a-=u(e)-t)<r&&(r=a=(r+a)/2),(i-=d(e)-t)<n&&(n=i=(n+i)/2),o(e,r,n,a,i))}return a.round=function(e){return arguments.length?(t=!!e,a):t},a.size=function(e){return arguments.length?(r=+e[0],n=+e[1],a):[r,n]},a.tile=function(e){return arguments.length?(o=ue(e),a):o},a.padding=function(e){return arguments.length?a.paddingInner(e).paddingOuter(e):a.paddingInner()},a.paddingInner=function(e){return arguments.length?(l=\"function\"==typeof e?e:h(+e),a):l},a.paddingOuter=function(e){return arguments.length?a.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):a.paddingTop()},a.paddingTop=function(e){return arguments.length?(c=\"function\"==typeof e?e:h(+e),a):c},a.paddingRight=function(e){return arguments.length?(u=\"function\"==typeof e?e:h(+e),a):u},a.paddingBottom=function(e){return arguments.length?(d=\"function\"==typeof e?e:h(+e),a):d},a.paddingLeft=function(e){return arguments.length?(p=\"function\"==typeof e?e:h(+e),a):p},a}function We(e,t,r,n,a){var i,o,m=e.children,s=m.length,g=new Array(s+1);for(g[0]=o=i=0;i<s;++i)g[i+1]=o+=m[i].value;!function e(t,r,n,a,i,o,s){if(r-1<=t)return(l=m[t]).x0=a,l.y0=i,l.x1=o,void(l.y1=s);var l=g[t],c=n/2+l,u=t+1,d=r-1;for(;u<d;){var p=u+d>>>1;g[p]<c?u=1+p:d=p}c-g[u-1]<g[u]-c&&t+1<u&&--u;var l=g[u]-l,f=n-l;{var h;s-i<o-a?(e(t,u,l,a,i,h=n?(a*f+o*l)/n:o,s),e(u,r,f,h,i,o,s)):(e(t,u,l,a,i,o,h=n?(i*f+s*l)/n:s),e(u,r,f,a,h,o,s))}}(0,s,e.value,t,r,n,a)}function $e(e,t,r,n,a){(1&e.depth?A:S)(e,t,r,n,a)}function n(e){o.Transform.call(this,null,e)}t=function t(f){function e(e,t,r,n,a){if((i=e._squarify)&&i.ratio===f)for(var i,o,s,l,c,u=-1,d=i.length,p=e.value;++u<d;){for(s=(o=i[u]).children,l=o.value=0,c=s.length;l<c;++l)o.value+=s[l].value;o.dice?S(o,t,r,n,p?r+=(a-r)*o.value/p:a):A(o,t,r,p?t+=(n-t)*o.value/p:n,a),p-=o.value}else e._squarify=i=Ve(f,e,t,r,n,a),i.ratio=f}return e.ratio=function(e){return t(1<(e=+e)?e:1)},e}(t),n.Definition={type:\"Nest\",metadata:{treesource:!0,changes:!0},params:[{name:\"keys\",type:\"field\",array:!0},{name:\"generate\",type:\"boolean\"}]};const Xe=e=>e.values;function Ke(){const d=[],t={entries:e=>function e(t,r){if(++r>d.length)return t;const n=[];for(const a in t)n.push({key:a,values:e(t[a],r)});return n}(function e(t,r){if(r>=d.length)return t;const n=t.length,a=d[r++],i={},o={};let s=-1,l,c,u;for(;++s<n;)l=a(c=t[s])+\"\",(u=i[l])?u.push(c):i[l]=[c];for(l in i)o[l]=e(i[l],r);return o}(e,0),0),key:e=>(d.push(e),t)};return t}function b(e){o.Transform.call(this,null,e)}s.inherits(n,o.Transform,{transform(e,t){t.source||s.error(\"Nest transform requires an upstream data source.\");var r=e.generate,n=e.modified(),a=t.clone(),i=this.value;return i&&!n&&!t.changed()||(i&&i.each(e=>{e.children&&o.isTuple(e.data)&&a.rem.push(e.data)}),this.value=i=c({values:s.array(e.keys).reduce((e,t)=>(e.key(t),e),Ke()).entries(a.source)},Xe),r&&i.each(e=>{e.children&&(e=o.ingest(e.data),a.add.push(e),a.source.push(e))}),l(i,o.tupleid,o.tupleid)),a.source.root=i,a}});const et=(e,t)=>e.parent===t.parent?1:2;function Ye(n,a,i){for(let e,t=0,r=a.length;t<r;++t)(e=a[t])in i&&n[e](i[e])}function Je(t,r,n){var a=t.data,i=r.length-1;for(let e=0;e<i;++e)a[n[e]]=t[r[e]];a[n[i]]=t.children?t.children.length:0}s.inherits(b,o.Transform,{transform(e,t){t.source&&t.source.root||s.error(this.constructor.name+\" transform requires a backing tree data source.\");const r=this.layout(e.method),n=this.fields,a=t.source.root,i=e.as||n;e.field?a.sum(e.field):a.count(),e.sort&&a.sort(o.stableCompare(e.sort,e=>e.data)),Ye(r,this.params,e),r.separation&&r.separation(!1!==e.separation?et:s.one);try{this.value=r(a)}catch(e){s.error(e)}return a.each(e=>Je(e,n,i)),t.reflow(e.modified()).modifies(i).modifies(\"leaf\")}});var E=[\"x\",\"y\",\"r\",\"depth\",\"children\"];function O(e){b.call(this,e)}O.Definition={type:\"Pack\",metadata:{tree:!0,modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"sort\",type:\"compare\"},{name:\"padding\",type:\"number\",default:0},{name:\"radius\",type:\"field\",default:null},{name:\"size\",type:\"number\",array:!0,length:2},{name:\"as\",type:\"string\",array:!0,length:E.length,default:E}]},s.inherits(O,b,{layout:Oe,params:[\"radius\",\"size\",\"padding\"],fields:E});E=[\"x0\",\"y0\",\"x1\",\"y1\",\"depth\",\"children\"];function C(e){b.call(this,e)}function w(e){o.Transform.call(this,null,e)}C.Definition={type:\"Partition\",metadata:{tree:!0,modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"sort\",type:\"compare\"},{name:\"padding\",type:\"number\",default:0},{name:\"round\",type:\"boolean\",default:!1},{name:\"size\",type:\"number\",array:!0,length:2},{name:\"as\",type:\"string\",array:!0,length:E.length,default:E}]},s.inherits(C,b,{layout:Ie,params:[\"size\",\"round\",\"padding\"],fields:E}),w.Definition={type:\"Stratify\",metadata:{treesource:!0},params:[{name:\"key\",type:\"field\",required:!0},{name:\"parentKey\",type:\"field\",required:!0}]},s.inherits(w,o.Transform,{transform(e,t){t.source||s.error(\"Stratify transform requires an upstream data source.\");let r=this.value;var n=e.modified(),a=t.fork(t.ALL).materialize(t.SOURCE),n=!r||n||t.changed(t.ADD_REM)||t.modified(e.key.fields)||t.modified(e.parentKey.fields);return a.source=a.source.slice(),n&&(r=a.source.length?l(De().id(e.key).parentId(e.parentKey)(a.source),e.key,s.truthy):l(De()([{}]),e.key,e.key)),a.source.root=this.value=r,a}});const M={tidy:Ge,cluster:V},P=[\"x\",\"y\",\"depth\",\"children\"];function k(e){b.call(this,e)}function I(e){o.Transform.call(this,[],e)}k.Definition={type:\"Tree\",metadata:{tree:!0,modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"sort\",type:\"compare\"},{name:\"method\",type:\"enum\",default:\"tidy\",values:[\"tidy\",\"cluster\"]},{name:\"size\",type:\"number\",array:!0,length:2},{name:\"nodeSize\",type:\"number\",array:!0,length:2},{name:\"separation\",type:\"boolean\",default:!0},{name:\"as\",type:\"string\",array:!0,length:P.length,default:P}]},s.inherits(k,b,{layout(e){e=e||\"tidy\";if(s.hasOwnProperty(M,e))return M[e]();s.error(\"Unrecognized Tree layout method: \"+e)},params:[\"size\",\"nodeSize\"],fields:P}),I.Definition={type:\"TreeLinks\",metadata:{tree:!0,generates:!0,changes:!0},params:[]},s.inherits(I,o.Transform,{transform(e,t){const r=this.value,n=t.source&&t.source.root,a=t.fork(t.NO_SOURCE),i={};return n||s.error(\"TreeLinks transform requires a tree data source.\"),t.changed(t.ADD_REM)?(a.rem=r,t.visit(t.SOURCE,e=>i[o.tupleid(e)]=1),n.each(e=>{var t=e.data,e=e.parent&&e.parent.data;e&&i[o.tupleid(t)]&&i[o.tupleid(e)]&&a.add.push(o.ingest({source:e,target:t}))}),this.value=a.add):t.changed(t.MOD)&&(t.visit(t.MOD,e=>i[o.tupleid(e)]=1),r.forEach(e=>{(i[o.tupleid(e.source)]||i[o.tupleid(e.target)])&&a.mod.push(e)})),a}});const D={binary:We,dice:S,slice:A,slicedice:$e,squarify:qe,resquarify:t},x=[\"x0\",\"y0\",\"x1\",\"y1\",\"depth\",\"children\"];function R(e){b.call(this,e)}R.Definition={type:\"Treemap\",metadata:{tree:!0,modifies:!0},params:[{name:\"field\",type:\"field\"},{name:\"sort\",type:\"compare\"},{name:\"method\",type:\"enum\",default:\"squarify\",values:[\"squarify\",\"resquarify\",\"binary\",\"dice\",\"slice\",\"slicedice\"]},{name:\"padding\",type:\"number\",default:0},{name:\"paddingInner\",type:\"number\",default:0},{name:\"paddingOuter\",type:\"number\",default:0},{name:\"paddingTop\",type:\"number\",default:0},{name:\"paddingRight\",type:\"number\",default:0},{name:\"paddingBottom\",type:\"number\",default:0},{name:\"paddingLeft\",type:\"number\",default:0},{name:\"ratio\",type:\"number\",default:1.618033988749895},{name:\"round\",type:\"boolean\",default:!1},{name:\"size\",type:\"number\",array:!0,length:2},{name:\"as\",type:\"string\",array:!0,length:x.length,default:x}]},s.inherits(R,b,{layout(){const r=ze();return r.ratio=e=>{var t=r.tile();t.ratio&&r.tile(t.ratio(e))},r.method=e=>{s.hasOwnProperty(D,e)?r.tile(D[e]):s.error(\"Unrecognized Treemap layout method: \"+e)},r},params:[\"method\",\"ratio\",\"size\",\"round\",\"padding\",\"paddingInner\",\"paddingOuter\",\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],fields:x}),e.nest=n,e.pack=O,e.partition=C,e.stratify=w,e.tree=k,e.treelinks=I,e.treemap=R}}return DD.exports}var LD,FD={exports:{}};function UD(){if(!LD){LD=1;var e=FD.exports;{var D=TD(),A=fD(),t=rD(),i=HP();const B=4278190080;function O(t,e){const r=t.bitmap();return(e||[]).forEach(e=>r.set(t(e.boundary[0]),t(e.boundary[3]))),[r,void 0]}function C(e,t,r,n,a){const i=e.width,o=e.height,s=n||a,l=A.canvas(i,o).getContext(\"2d\"),c=A.canvas(i,o).getContext(\"2d\"),u=s&&A.canvas(i,o).getContext(\"2d\");r.forEach(e=>k(l,e,!1)),k(c,t,!1),s&&k(u,t,!0);var d=w(l,i,o),p=w(c,i,o),f=s&&w(u,i,o),h=e.bitmap(),m=s&&e.bitmap();let g,_,y,T,v,b,E,S;for(_=0;_<o;++_)for(g=0;g<i;++g)b=d[v=_*i+g]&B,S=p[v]&B,E=s&&f[v]&B,(b||E||S)&&(y=e(g),T=e(_),a||!b&&!S||h.set(y,T),s)&&(b||E)&&m.set(y,T);return[h,m]}function w(e,t,r){return new Uint32Array(e.getImageData(0,0,t,r).data.buffer)}function k(t,e,r){var n;e.length&&(\"group\"===(n=e[0].mark.marktype)?e.forEach(e=>{e.items.forEach(e=>k(t,e.items,r))}):D.Marks[n].draw(t,{items:r?e.map(a):e}))}function a(e){e=t.rederive(e,{});return e.stroke&&0!==e.strokeOpacity||e.fill&&0!==e.fillOpacity?{...e,strokeOpacity:1,stroke:\"#000\",fillOpacity:0}:e}const f=new Uint32Array(33),h=new Uint32Array(33);h[0]=0,f[0]=~h[0];for(let e=1;e<=32;++e)h[e]=h[e-1]<<1|1,f[e]=~h[e];function s(c,a){const u=new Uint32Array(~~((c*a+32)/32));function d(e,t){u[e]|=t}function p(e,t){u[e]&=t}return{array:u,get:(e,t)=>{t=t*c+e;return u[t>>>5]&1<<(31&t)},set:(e,t)=>{t=t*c+e;d(t>>>5,1<<(31&t))},clear:(e,t)=>{t=t*c+e;p(t>>>5,~(1<<(31&t)))},getRange:(e,t,r,n)=>{let a=n,i,o,s,l;for(;a>=t;--a)if((s=(i=a*c+e)>>>5)==(l=(o=a*c+r)>>>5)){if(u[s]&f[31&i]&h[1+(31&o)])return!0}else{if(u[s]&f[31&i])return!0;if(u[l]&h[1+(31&o)])return!0;for(let e=1+s;e<l;++e)if(u[e])return!0}return!1},setRange:(e,t,r,n)=>{let a,i,o,s,l;for(;t<=n;++t)if((o=(a=t*c+e)>>>5)==(s=(i=t*c+r)>>>5))d(o,f[31&a]&h[1+(31&i)]);else for(d(o,f[31&a]),d(s,h[1+(31&i)]),l=1+o;l<s;++l)d(l,4294967295)},clearRange:(e,t,r,n)=>{let a,i,o,s,l;for(;t<=n;++t)if((o=(a=t*c+e)>>>5)==(s=(i=t*c+r)>>>5))p(o,h[31&a]|f[1+(31&i)]);else for(p(o,h[31&a]),p(s,f[1+(31&i)]),l=1+o;l<s;++l)p(l,0)},outOfBounds:(e,t,r,n)=>e<0||t<0||a<=n||c<=r}}function I(e,t,r){const n=Math.max(1,Math.sqrt(e*t/1e6)),a=~~((e+2*r+n)/n),i=~~((t+2*r+n)/n),o=e=>~~((e+r)/n);return o.invert=e=>e*n-r,o.bitmap=()=>s(a,i),o.ratio=n,o.padding=r,o.width=e,o.height=t,o}function r(e,t,r,f){const h=e.width,m=e.height;return function(t){var r=t.datum.datum.items[f].items,n=r.length,e=t.datum.fontSize,a=D.textMetrics.width(t.datum,t.datum.text);let i=0,o,s,l,c,u,d,p;for(let e=0;e<n;++e)o=r[e].x,l=r[e].y,s=void 0===r[e].x2?o:r[e].x2,c=void 0===r[e].y2?l:r[e].y2,u=(o+s)/2,d=(l+c)/2,(p=Math.abs(s-o+c-l))>=i&&(i=p,t.x=u,t.y=d);return u=a/2,d=e/2,o=t.x-u,s=t.x+u,l=t.y-d,c=t.y+d,t.align=\"center\",o<0&&s<=h?t.align=\"left\":0<=o&&h<s&&(t.align=\"right\"),t.baseline=\"middle\",l<0&&c<=m?t.baseline=\"top\":0<=l&&m<c&&(t.baseline=\"bottom\"),!0}}function x(e,t,r,n,a,i){let o=r/2;return e-o<0||e+o>a||t-(o=n/2)<0||t+o>i}function L(e,t,r,n,a,i,o,s){a=a*i/(2*n),n=e(t-a),t=e(t+a),a=e(r-(i/=2)),e=e(r+i);return o.outOfBounds(n,a,t,e)||o.getRange(n,a,t,e)||s&&s.getRange(n,a,t,e)}function n(w,e,k,I){const R=w.width,N=w.height,M=e[0],u=e[1];function P(e,t,r,n,a){var i=w.invert(e),o=w.invert(t);let s=r,l=N,c;if(!x(i,o,n,a,R,N)&&!L(w,i,o,a,n,s,M,u)&&!L(w,i,o,a,n,a,M,null)){for(;1<=l-s;)c=(s+l)/2,L(w,i,o,a,n,c,M,u)?l=c:s=c;if(s>r)return[i,o,s,!0]}}return function(t){var r=t.datum.datum.items[I].items,n=r.length,a=t.datum.fontSize,i=D.textMetrics.width(t.datum,t.datum.text);let o=k?a:0,s=!1,l=!1,c=0,u,d,p,f,h,m,g,_,y,T,v,b,E,S,A,O,C;for(let e=0;e<n;++e){for(u=r[e].x,p=r[e].y,d=void 0===r[e].x2?u:r[e].x2,f=void 0===r[e].y2?p:r[e].y2,u>d&&(C=u,u=d,d=C),p>f&&(C=p,p=f,f=C),T=~~(((y=w(u))+(v=w(d)))/2),E=~~(((b=w(p))+(S=w(f)))/2),g=T;g>=y;--g)for(_=E;_>=b;--_)(O=P(g,_,o,i,a))&&([t.x,t.y,o,s]=O);for(g=T;g<=v;++g)for(_=E;_<=S;++_)(O=P(g,_,o,i,a))&&([t.x,t.y,o,s]=O);s||k||(A=Math.abs(d-u+f-p),h=(u+d)/2,m=(p+f)/2,A>=c&&!x(h,m,i,a,R,N)&&!L(w,h,m,a,i,a,M,null)&&(c=A,t.x=h,t.y=m,l=!0))}return!(!s&&!l||(h=i/2,m=a/2,M.setRange(w(t.x-h),w(t.y-m),w(t.x+h),w(t.y+m)),t.align=\"center\",t.baseline=\"middle\",0))}}const j=[-1,-1,1,1],H=[-1,1,-1,1];function o(S,e,A,O){const C=S.width,w=S.height,k=e[0],I=e[1],R=S.bitmap();return function(t){var r=t.datum.datum.items[O].items,n=r.length,a=t.datum.fontSize,i=D.textMetrics.width(t.datum,t.datum.text),o=[];let s=A?a:0,l=!1,c=!1,u=0,d,p,f,h,m,g,_,y,T,v,b,E;for(let e=0;e<n;++e){for(d=r[e].x,f=r[e].y,p=void 0===r[e].x2?d:r[e].x2,h=void 0===r[e].y2?f:r[e].y2,o.push([S((d+p)/2),S((f+h)/2)]);o.length;)if([_,y]=o.pop(),!(k.get(_,y)||I.get(_,y)||R.get(_,y))){R.set(_,y);for(let e=0;e<4;++e)m=_+j[e],g=y+H[e],R.outOfBounds(m,g,m,g)||o.push([m,g]);if(m=S.invert(_),g=S.invert(y),T=s,v=w,!x(m,g,i,a,C,w)&&!L(S,m,g,a,i,T,k,I)&&!L(S,m,g,a,i,a,k,null)){for(;1<=v-T;)b=(T+v)/2,L(S,m,g,a,i,b,k,I)?v=b:T=b;T>s&&(t.x=m,t.y=g,s=T,l=!0)}}l||A||(E=Math.abs(p-d+h-f),m=(d+p)/2,g=(f+h)/2,E>=u&&!x(m,g,i,a,C,w)&&!L(S,m,g,a,i,a,k,null)&&(u=E,t.x=m,t.y=g,c=!0))}return!(!l&&!c||(m=i/2,g=a/2,k.setRange(S(t.x-m),S(t.y-g),S(t.x+m),S(t.y+g)),t.align=\"center\",t.baseline=\"middle\",0))}}const G=[\"right\",\"center\",\"left\"],V=[\"bottom\",\"middle\",\"top\"];function R(v,e,b,E){const t=v.width,r=v.height,S=e[0],A=e[1],O=E.length;return function(_){var y=_.boundary,T=_.datum.fontSize;if(!(y[2]<0||y[5]<0||y[0]>t||y[3]>r)){let t=_.textWidth??0,r,n,a,i,o,s,l,c,u,d,p,f,h,m,g;for(let e=0;e<O;++e){if(r=(3&b[e])-1,n=(b[e]>>>2&3)-1,a=0==r&&0==n||E[e]<0,i=r&&n?Math.SQRT1_2:1,o=E[e]<0?-1:1,s=y[1+r]+E[e]*r*i,c=(p=y[4+n]+o*T*n/2+E[e]*n*i)-T/2,u=p+T/2,f=v(s),m=v(c),g=v(u),!t){if(!N(f,f,m,g,S,A,0,0,0,0,0,a))continue;t=D.textMetrics.width(_.datum,_.datum.text)}if(s=(d=s+o*t*r/2)-t/2,l=d+t/2,N(f=v(s),h=v(l),m,g,S,A,0,0,0,0,0,a))return _.x=r?r*o<0?l:s:d,_.y=n?n*o<0?u:c:p,_.align=G[r*o+1],_.baseline=V[n*o+1],S.setRange(f,m,h,g),!0}}return!1}}function N(e,t,r,n,a,i,o,s,l,c,u,d){return!a.outOfBounds(e,r,t,n)&&!(d&&i||a).getRange(e,r,t,n)}const u={\"top-left\":0,top:1,\"top-right\":2,left:4,middle:5,right:6,\"bottom-left\":8,bottom:9,\"bottom-right\":10},q={naive:r,\"reduced-search\":n,floodfill:o};function l(e,t,r,n,a,i,o,s,l,c,u){if(!e.length)return e;const d=Math.max(n.length,a.length),p=M(n,d),f=P(a,d),h=F(e[0].datum),m=\"group\"===h&&e[0].datum.items[l].marktype,g=\"area\"===m,_=U(h,m,s,l),y=null===c||c===1/0,T=g&&\"naive\"===u;let v=-1,b=-1;a=e.map(e=>{var t=y?D.textMetrics.width(e,e.text):void 0;return v=Math.max(v,t),b=Math.max(b,e.fontSize),{datum:e,opacity:0,x:void 0,y:void 0,align:void 0,baseline:void 0,boundary:_(e),textWidth:t}}),c=null===c||c===1/0?Math.max(v,b)+Math.max(...n):c,s=I(t[0],t[1],c);let E;if(!T){r&&a.sort((e,t)=>r(e.datum,t.datum));let t=!1;for(let e=0;e<f.length&&!t;++e)t=5===f[e]||p[e]<0;n=(h&&o||g)&&e.map(e=>e.datum);E=i.length||n?C(s,n||[],i,t,g):O(s,o&&a)}const S=g?q[u](s,E,o,l):R(s,E,f,p);return a.forEach(e=>e.opacity=+S(e)),a}function M(t,r){var n=new Float64Array(r),a=t.length;for(let e=0;e<a;++e)n[e]=t[e]||0;for(let e=a;e<r;++e)n[e]=n[a-1];return n}function P(t,r){var n=new Int8Array(r),a=t.length;for(let e=0;e<a;++e)n[e]|=u[t[e]];for(let e=a;e<r;++e)n[e]=n[a-1];return n}function F(e){return e&&e.mark&&e.mark.marktype}function U(e,t,r,n){const a=e=>[e.x,e.x,e.x,e.y,e.y,e.y];return e?\"line\"===e||\"area\"===e?e=>a(e.datum):\"line\"===t?e=>{e=e.datum.items[n].items;return a(e.length?e[\"start\"===r?0:e.length-1]:{x:NaN,y:NaN})}:e=>{e=e.datum.bounds;return[e.x1,(e.x1+e.x2)/2,e.x2,e.y1,(e.y1+e.y2)/2,e.y2]}:a}const d=[\"x\",\"y\",\"opacity\",\"align\",\"baseline\"],p=[\"top-left\",\"left\",\"bottom-left\",\"top\",\"bottom\",\"top-right\",\"right\",\"bottom-right\"];function c(e){t.Transform.call(this,null,e)}c.Definition={type:\"Label\",metadata:{modifies:!0},params:[{name:\"size\",type:\"number\",array:!0,length:2,required:!0},{name:\"sort\",type:\"compare\"},{name:\"anchor\",type:\"string\",array:!0,default:p},{name:\"offset\",type:\"number\",array:!0,default:[1]},{name:\"padding\",type:\"number\",default:0,null:!0},{name:\"lineAnchor\",type:\"string\",values:[\"start\",\"end\"],default:\"end\"},{name:\"markIndex\",type:\"number\",default:0},{name:\"avoidBaseMark\",type:\"boolean\",default:!0},{name:\"avoidMarks\",type:\"data\",array:!0},{name:\"method\",type:\"string\",default:\"naive\"},{name:\"as\",type:\"string\",array:!0,length:d.length,default:d}]},i.inherits(c,t.Transform,{transform(e,t){var r,n=e.modified();if(n||t.changed(t.ADD_REM)||(r=e[r=\"sort\"],i.isFunction(r)&&t.modified(r.fields))){e.size&&2===e.size.length||i.error(\"Size parameter should be specified as a [width, height] array.\");const a=e.as||d;return l(t.materialize(t.SOURCE).source||[],e.size,e.sort,i.array(null==e.offset?1:e.offset),i.array(e.anchor||p),e.avoidMarks||[],!1!==e.avoidBaseMark,e.lineAnchor||\"end\",e.markIndex||0,void 0===e.padding?0:e.padding,e.method||\"naive\").forEach(e=>{var t=e.datum;t[a[0]]=e.x,t[a[1]]=e.y,t[a[2]]=e.opacity,t[a[3]]=e.align,t[a[4]]=e.baseline}),t.reflow(n).modifies(a)}}}),e.label=c}}return FD.exports}var BD,jD={exports:{}};function HD(){if(!BD){BD=1;var e=jD.exports;{var h=sD(),m=rD(),g=HP();function _(e,t){function r(e){return e(o)}var n,a,i,o,s,l,c=[];if(null==t)c.push(e);else for(n={},a=0,i=e.length;a<i;++a)o=e[a],(l=n[s=t.map(r)])||(n[s]=l=[],l.dims=s,c.push(l)),l.push(o);return c}function t(e){m.Transform.call(this,null,e)}t.Definition={type:\"Loess\",metadata:{generates:!0},params:[{name:\"x\",type:\"field\",required:!0},{name:\"y\",type:\"field\",required:!0},{name:\"groupby\",type:\"field\",array:!0},{name:\"bandwidth\",type:\"number\",default:.3},{name:\"as\",type:\"string\",array:!0}]},g.inherits(t,m.Transform,{transform(e,t){var r=t.fork(t.NO_SOURCE|t.NO_FIELDS);if(!this.value||t.changed()||e.modified()){const n=t.materialize(t.SOURCE).source,a=_(n,e.groupby),i=(e.groupby||[]).map(g.accessorName),o=i.length,s=e.as||[g.accessorName(e.x),g.accessorName(e.y)],l=[];a.forEach(r=>{h.regressionLoess(r,e.x,e.y,e.bandwidth||.3).forEach(e=>{var t={};for(let e=0;e<o;++e)t[i[e]]=r.dims[e];t[s[0]]=e[0],t[s[1]]=e[1],l.push(m.ingest(t))})}),this.value&&(r.rem=this.value),this.value=r.add=r.source=l}return r}});const n={constant:h.regressionConstant,linear:h.regressionLinear,log:h.regressionLog,exp:h.regressionExp,pow:h.regressionPow,quad:h.regressionQuad,poly:h.regressionPoly},y=(e,t)=>\"poly\"===e?t:\"quad\"===e?2:1;function r(e){m.Transform.call(this,null,e)}r.Definition={type:\"Regression\",metadata:{generates:!0},params:[{name:\"x\",type:\"field\",required:!0},{name:\"y\",type:\"field\",required:!0},{name:\"groupby\",type:\"field\",array:!0},{name:\"method\",type:\"string\",default:\"linear\",values:Object.keys(n)},{name:\"order\",type:\"number\",default:3},{name:\"extent\",type:\"number\",array:!0,length:2},{name:\"params\",type:\"boolean\",default:!1},{name:\"as\",type:\"string\",array:!0}]},g.inherits(r,m.Transform,{transform(i,o){var e=o.fork(o.NO_SOURCE|o.NO_FIELDS);if(!this.value||o.changed()||i.modified()){const t=o.materialize(o.SOURCE).source,r=_(t,i.groupby),s=(i.groupby||[]).map(g.accessorName),l=i.method||\"linear\",c=null==i.order?3:i.order,u=y(l,c),d=i.as||[g.accessorName(i.x),g.accessorName(i.y)],p=n[l],f=[];let a=i.extent;g.hasOwnProperty(n,l)||g.error(\"Invalid regression method: \"+l),null!=a&&\"log\"===l&&a[0]<=0&&(o.dataflow.warn(\"Ignoring extent with values <= 0 for log regression.\"),a=null),r.forEach(r=>{if(r.length<=u)o.dataflow.warn(\"Skipping regression with more parameters than data points.\");else{const t=p(r,i.x,i.y,c);if(i.params)f.push(m.ingest({keys:r.dims,coef:t.coef,rSquared:t.rSquared}));else{const e=a||g.extent(r,i.x),n=e=>{var t={};for(let e=0;e<s.length;++e)t[s[e]]=r.dims[e];t[d[0]]=e[0],t[d[1]]=e[1],f.push(m.ingest(t))};\"linear\"===l||\"constant\"===l?e.forEach(e=>n([e,t.predict(e)])):h.sampleCurve(t.predict,e,25,200).forEach(n)}}}),this.value&&(e.rem=this.value),this.value=e.add=e.source=f}return e}}),e.loess=t,e.regression=r}}return jD.exports}var GD,VD={exports:{}};function qD(){if(!GD){GD=1;var e=VD.exports;{var r=rD(),n=HP();const s=11102230246251565e-32,I=134217729,R=(3+8*s)*s;function w(e,t,r,n,a){let i,o,s,l,c=t[0],u=n[0],d=0,p=0,f=(u>c==u>-c?(i=c,c=t[++d]):(i=u,u=n[++p]),0);if(d<e&&p<r)for(u>c==u>-c?(o=c+i,s=i-(o-c),c=t[++d]):(o=u+i,s=i-(o-u),u=n[++p]),i=o,0!==s&&(a[f++]=s);d<e&&p<r;)u>c==u>-c?(o=i+c,l=o-i,s=i-(o-l)+(c-l),c=t[++d]):(o=i+u,l=o-i,s=i-(o-l)+(u-l),u=n[++p]),i=o,0!==s&&(a[f++]=s);for(;d<e;)o=i+c,l=o-i,s=i-(o-l)+(c-l),c=t[++d],i=o,0!==s&&(a[f++]=s);for(;p<r;)o=i+u,l=o-i,s=i-(o-l)+(u-l),u=n[++p],i=o,0!==s&&(a[f++]=s);return 0===i&&0!==f||(a[f++]=i),f}function k(t,r){let n=r[0];for(let e=1;e<t;e++)n+=r[e];return n}function a(e){return new Float64Array(e)}const d=(3+16*s)*s,N=(2+12*s)*s,M=(9+64*s)*s*s,P=a(4),D=a(8),x=a(12),L=a(16),G=a(4);function c(e,t,r,n,a,i,o){var s,l,c,u,d,p,f,h,m=e-a,g=r-a,_=t-i,y=n-i,T=m*y,v=I*m,b=v-(v-m),E=m-b,S=_*g,A=(p=E*(l=y-(s=(v=I*y)-(v-y)))-(T-b*s-E*s-b*l))-(c=p-(f=(E=_-(b=(v=I*_)-(v-_)))*(l=g-(s=(v=I*g)-(v-g)))-(S-b*s-E*s-b*l))),O=(P[0]=p-(c+A)+(A-f),A=(d=T-((u=T+c)-(A=u-T))+(c-A))-(c=d-S),P[1]=d-(c+A)+(A-S),A=(h=u+c)-u,P[2]=u-(h-A)+(c-A),P[3]=h,k(4,P)),C=N*o;if(C<=O||C<=-O)return O;if(e=e-(m+(A=e-m))+(A-a),r=r-(g+(A=r-g))+(A-a),a=t-(_+(A=t-_))+(A-i),t=n-(y+(A=n-y))+(A-i),0==e&&0==a&&0==r&&0==t)return O;if((C=M*o+R*Math.abs(O))<=(O+=m*t+y*e-(_*r+g*a))||C<=-O)return O;T=e*y,S=a*g,A=(p=(E=e-(b=(v=I*e)-(v-e)))*(l=y-(s=(v=I*y)-(v-y)))-(T-b*s-E*s-b*l))-(c=p-(f=(E=a-(b=(v=I*a)-(v-a)))*(l=g-(s=(v=I*g)-(v-g)))-(S-b*s-E*s-b*l))),G[0]=p-(c+A)+(A-f),A=(d=T-((u=T+c)-(A=u-T))+(c-A))-(c=d-S),G[1]=d-(c+A)+(A-S),A=(h=u+c)-u,G[2]=u-(h-A)+(c-A),G[3]=h;n=w(4,P,4,G,D),T=m*t,S=_*r,A=(p=(E=m-(b=(v=I*m)-(v-m)))*(l=t-(s=(v=I*t)-(v-t)))-(T-b*s-E*s-b*l))-(c=p-(f=(E=_-(b=(v=I*_)-(v-_)))*(l=r-(s=(v=I*r)-(v-r)))-(S-b*s-E*s-b*l))),G[0]=p-(c+A)+(A-f),A=(d=T-((u=T+c)-(A=u-T))+(c-A))-(c=d-S),G[1]=d-(c+A)+(A-S),A=(h=u+c)-u,G[2]=u-(h-A)+(c-A),G[3]=h,i=w(n,D,4,G,x),T=e*t,S=a*r,A=(p=(E=e-(b=(v=I*e)-(v-e)))*(l=t-(s=(v=I*t)-(v-t)))-(T-b*s-E*s-b*l))-(c=p-(f=(E=a-(b=(v=I*a)-(v-a)))*(l=r-(s=(v=I*r)-(v-r)))-(S-b*s-E*s-b*l))),G[0]=p-(c+A)+(A-f),A=(d=T-((u=T+c)-(A=u-T))+(c-A))-(c=d-S),G[1]=d-(c+A)+(A-S),A=(h=u+c)-u,G[2]=u-(h-A)+(c-A),G[3]=h,o=w(i,x,4,G,L);return L[o-1]}function F(e,t,r,n,a,i){var o=(t-i)*(r-a),s=(e-a)*(n-i),l=o-s;return 0==o||0==s||0<o!=0<s||(o=Math.abs(o+s),Math.abs(l)>=d*o)?l:-c(e,t,r,n,a,i,o)}const V=Math.pow(2,-52),h=new Uint32Array(512);class p{static from(t,r=v,n=b){var a=t.length,i=new Float64Array(2*a);for(let e=0;e<a;e++){var o=t[e];i[2*e]=r(o),i[2*e+1]=n(o)}return new p(i)}constructor(e){var t=e.length>>1;if(0<t&&\"number\"!=typeof e[0])throw new Error(\"Expected coords to contain numbers.\");this.coords=e;e=Math.max(2*t-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(t)),this._hullPrev=new Uint32Array(t),this._hullNext=new Uint32Array(t),this._hullTri=new Uint32Array(t),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(t),this._dists=new Float64Array(t),this.update()}update(){var{coords:o,_hullPrev:s,_hullNext:l,_hullTri:c,_hullHash:u}=this,n=o.length>>1;let t=1/0,r=1/0,a=-1/0,i=-1/0;for(let e=0;e<n;e++){var d=o[2*e],p=o[2*e+1];d<t&&(t=d),p<r&&(r=p),d>a&&(a=d),p>i&&(i=p),this._ids[e]=e}var f=(t+a)/2,L=(r+i)/2;let h=1/0,m,g,_;for(let e=0;e<n;e++){var y=U(f,L,o[2*e],o[2*e+1]);y<h&&(m=e,h=y)}var T,v,b=o[2*m],E=o[2*m+1];h=1/0;for(let e=0;e<n;e++)e!==m&&((T=U(b,E,o[2*e],o[2*e+1]))<h&&0<T)&&(g=e,h=T);let S=o[2*g],A=o[2*g+1],O=1/0;for(let e=0;e<n;e++)e!==m&&e!==g&&(v=B(b,E,S,A,o[2*e],o[2*e+1]))<O&&(_=e,O=v);let e=o[2*_],C=o[2*_+1];if(O===1/0){for(let e=0;e<n;e++)this._dists[e]=o[2*e]-o[0]||o[2*e+1]-o[1];H(this._ids,this._dists,0,n-1);var w=new Uint32Array(n);let r=0;for(let e=0,t=-1/0;e<n;e++){var k=this._ids[e];this._dists[k]>t&&(w[r++]=k,t=this._dists[k])}this.hull=w.subarray(0,r),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}else{F(b,E,S,A,e,C)<0&&(I=g,R=S,N=A,g=_,S=e,A=C,_=I,e=R,C=N);var I,R,N,M=j(b,E,S,A,e,C);this._cx=M.x,this._cy=M.y;for(let e=0;e<n;e++)this._dists[e]=U(o[2*e],o[2*e+1],M.x,M.y);H(this._ids,this._dists,0,n-1);let i=3;l[this._hullStart=m]=s[_]=g,l[g]=s[m]=_,c[l[_]=s[g]=m]=0,c[g]=1,c[_]=2,u.fill(-1),u[this._hashKey(b,E)]=m,u[this._hashKey(S,A)]=g,u[this._hashKey(e,C)]=_,this.trianglesLen=0,this._addTriangle(m,g,_,-1,-1,-1);for(let e=0,t,r;e<this._ids.length;e++){var P=this._ids[e],D=o[2*P],x=o[2*P+1];if(!(0<e&&Math.abs(D-t)<=V&&Math.abs(x-r)<=V)&&(t=D,r=x,P!==m&&P!==g&&P!==_)){let r=0;for(let e=0,t=this._hashKey(D,x);e<this._hashSize&&(-1===(r=u[(t+e)%this._hashSize])||r===l[r]);e++);let n=r=s[r],a;for(;a=l[n],0<=F(D,x,o[2*n],o[2*n+1],o[2*a],o[2*a+1]);)if((n=a)===r){n=-1;break}if(-1!==n){let e=this._addTriangle(n,P,l[n],-1,-1,c[n]),t=(c[P]=this._legalize(e+2),c[n]=e,i++,l[n]);for(;a=l[t],F(D,x,o[2*t],o[2*t+1],o[2*a],o[2*a+1])<0;)e=this._addTriangle(t,P,a,c[P],-1,c[t]),c[P]=this._legalize(e+2),l[t]=t,i--,t=a;if(n===r)for(;F(D,x,o[2*(a=s[n])],o[2*a+1],o[2*n],o[2*n+1])<0;)e=this._addTriangle(a,P,n,-1,c[n],c[a]),this._legalize(e+2),c[a]=e,l[n]=n,i--,n=a;l[this._hullStart=s[P]=n]=s[t]=P,l[P]=t,u[this._hashKey(D,x)]=P,u[this._hashKey(o[2*n],o[2*n+1])]=n}}}this.hull=new Uint32Array(i);for(let e=0,t=this._hullStart;e<i;e++)t=l[this.hull[e]=t];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}}_hashKey(e,t){return Math.floor(i(e-this._cx,t-this._cy)*this._hashSize)%this._hashSize}_legalize(t){var{_triangles:e,_halfedges:r,coords:n}=this;let a=0,i=0;for(;;){var o=r[t],s=t-t%3;if(i=s+(t+2)%3,-1===o){if(0===a)break;t=h[--a]}else{var l=o-o%3,c=l+(o+2)%3,u=e[i],d=e[t],s=e[s+(t+1)%3],p=e[c];if(f(n[2*u],n[2*u+1],n[2*d],n[2*d+1],n[2*s],n[2*s+1],n[2*p],n[2*p+1])){e[t]=p,e[o]=u;d=r[c];if(-1===d){let e=this._hullStart;do{if(this._hullTri[e]===c){this._hullTri[e]=t;break}}while((e=this._hullPrev[e])!==this._hullStart)}this._link(t,d),this._link(o,r[i]),this._link(i,c);s=l+(o+1)%3;a<h.length&&(h[a++]=s)}else{if(0===a)break;t=h[--a]}}}return i}_link(e,t){-1!==(this._halfedges[e]=t)&&(this._halfedges[t]=e)}_addTriangle(e,t,r,n,a,i){var o=this.trianglesLen;return this._triangles[o]=e,this._triangles[o+1]=t,this._triangles[o+2]=r,this._link(o,n),this._link(o+1,a),this._link(o+2,i),this.trianglesLen+=3,o}}function i(e,t){e/=Math.abs(e)+Math.abs(t);return(0<t?3-e:1+e)/4}function U(e,t,r,n){e-=r,r=t-n;return e*e+r*r}function f(e,t,r,n,a,i,o,s){e-=o,t-=s,r-=o,n-=s,a-=o,o=i-s,i=r*r+n*n,s=a*a+o*o;return e*(n*s-i*o)-t*(r*s-i*a)+(e*e+t*t)*(r*o-n*a)<0}function B(e,t,r,n,a,i){var r=r-e,n=n-t,a=a-e,e=i-t,i=r*r+n*n,t=a*a+e*e,o=.5/(r*e-n*a),e=(e*i-n*t)*o,n=(r*t-a*i)*o;return e*e+n*n}function j(e,t,r,n,a,i){var r=r-e,n=n-t,a=a-e,i=i-t,o=r*r+n*n,s=a*a+i*i,l=.5/(r*i-n*a);return{x:e+(i*o-n*s)*l,y:t+(r*s-a*o)*l}}function H(r,n,a,i){if(i-a<=20)for(let t=a+1;t<=i;t++){var o=r[t],s=n[o];let e=t-1;for(;e>=a&&n[r[e]]>s;)r[e+1]=r[e--];r[e+1]=o}else{let e=a+1,t=i;u(r,a+i>>1,e),n[r[a]]>n[r[i]]&&u(r,a,i),n[r[e]]>n[r[i]]&&u(r,e,i),n[r[a]]>n[r[e]]&&u(r,a,e);for(var l=r[e],c=n[l];;){for(;n[r[++e]]<c;);for(;n[r[--t]]>c;);if(t<e)break;u(r,e,t)}r[a+1]=r[t],r[t]=l,i-e+1>=t-a?(H(r,n,e,i),H(r,n,a,t-1)):(H(r,n,a,t-1),H(r,n,e,i))}}function u(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function v(e){return e[0]}function b(e){return e[1]}class g{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=\"\"}moveTo(e,t){this._+=`M${this._x0=this._x1=+e},`+(this._y0=this._y1=+t)}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+=\"Z\")}lineTo(e,t){this._+=`L${this._x1=+e},`+(this._y1=+t)}arc(e,t,r){var n=(e=+e)+(r=+r),a=t=+t;if(r<0)throw new Error(\"negative radius\");null===this._x1?this._+=`M${n},`+a:(1e-6<Math.abs(this._x1-n)||1e-6<Math.abs(this._y1-a))&&(this._+=\"L\"+n+\",\"+a),r&&(this._+=`A${r},${r},0,1,1,${e-r},${t}A${r},${r},0,1,1,${this._x1=n},`+(this._y1=a))}rect(e,t,r,n){this._+=`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${+r}v${+n}h${-r}Z`}value(){return this._||null}}class l{constructor(){this._=[]}moveTo(e,t){this._.push([e,t])}closePath(){this._.push(this._[0].slice())}lineTo(e,t){this._.push([e,t])}value(){return this._.length?this._:null}}let t=class{constructor(e,[t,r,n,a]=[0,0,960,500]){if(!((n=+n)>=(t=+t)&&(a=+a)>=(r=+r)))throw new Error(\"invalid bounds\");this.delaunay=e,this._circumcenters=new Float64Array(2*e.points.length),this.vectors=new Float64Array(2*e.points.length),this.xmax=n,this.xmin=t,this.ymax=a,this.ymin=r,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){var{delaunay:{points:i,hull:o,triangles:s},vectors:t}=this;let l,c;var u=this.circumcenters=this._circumcenters.subarray(0,s.length/3*2);for(let e=0,t=0,r=s.length,n,a;e<r;e+=3,t+=2){var d=2*s[e],p=2*s[e+1],f=2*s[e+2];const v=i[d],E=i[1+d];var d=i[p],p=i[1+p],h=i[f],f=i[1+f],d=d-v,p=p-E,m=h-v,g=f-E,_=2*(d*g-p*m);if(Math.abs(_)<1e-9){if(void 0===l){l=c=0;for(const S of o)l+=i[2*S],c+=i[2*S+1];l/=o.length,c/=o.length}var y=1e9*Math.sign((l-v)*g-(c-E)*m);n=(v+h)/2-y*g,a=(E+f)/2+y*m}else{h=1/_,f=d*d+p*p,y=m*m+g*g;n=v+(g*f-p*y)*h,a=E+(d*y-m*f)*h}u[t]=n,u[t+1]=a}var r=o[o.length-1];let n,a=4*r,T,v=i[2*r],b,E=i[2*r+1];t.fill(0);for(let e=0;e<o.length;++e)r=o[e],n=a,T=v,b=E,a=4*r,v=i[2*r],E=i[2*r+1],t[n+2]=t[a]=b-E,t[n+3]=t[a+1]=v-T}render(r){var e=null==r?r=new g:void 0,{delaunay:{halfedges:n,inedges:t,hull:a},circumcenters:i,vectors:o}=this;if(a.length<=1)return null;for(let e=0,t=n.length;e<t;++e){var s,l,c,u=n[e];u<e||(l=2*Math.floor(e/3),u=2*Math.floor(u/3),s=i[l],l=i[1+l],c=i[u],u=i[1+u],this._renderSegment(s,l,c,u,r))}let d,p=a[a.length-1];for(let e=0;e<a.length;++e){d=p,p=a[e];var f=2*Math.floor(t[p]/3),h=i[f],f=i[1+f],m=4*d,m=this._project(h,f,o[2+m],o[3+m]);m&&this._renderSegment(h,f,m[0],m[1],r)}return e&&e.value()}renderBounds(e){var t=null==e?e=new g:void 0;return e.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),t&&t.value()}renderCell(e,r){var n=null==r?r=new g:void 0,a=this._clip(e);if(null!==a&&a.length){r.moveTo(a[0],a[1]);let t=a.length;for(;a[0]===a[t-2]&&a[1]===a[t-1]&&1<t;)t-=2;for(let e=2;e<t;e+=2)a[e]===a[e-2]&&a[e+1]===a[e-1]||r.lineTo(a[e],a[e+1]);return r.closePath(),n&&n.value()}}*cellPolygons(){var{points:r}=this[\"delaunay\"];for(let e=0,t=r.length/2;e<t;++e){var n=this.cellPolygon(e);n&&(n.index=e,yield n)}}cellPolygon(e){var t=new l;return this.renderCell(e,t),t.value()}_renderSegment(e,t,r,n,a){var i=this._regioncode(e,t),o=this._regioncode(r,n);0===i&&0===o?(a.moveTo(e,t),a.lineTo(r,n)):(e=this._clipSegment(e,t,r,n,i,o))&&(a.moveTo(e[0],e[1]),a.lineTo(e[2],e[3]))}contains(e,t,r){return(t=+t)==t&&(r=+r)==r&&this.delaunay._step(e,t,r)===e}*neighbors(e){var a=this._clip(e);if(a)for(const o of this.delaunay.neighbors(e)){var i=this._clip(o);if(i)e:for(let r=0,n=a.length;r<n;r+=2)for(let e=0,t=i.length;e<t;e+=2)if(a[r]===i[e]&&a[r+1]===i[e+1]&&a[(r+2)%n]===i[(e+t-2)%t]&&a[(r+3)%n]===i[(e+t-1)%t]){yield o;break e}}}_cell(e){var{circumcenters:t,delaunay:{inedges:r,halfedges:n,triangles:a}}=this,i=r[e];if(-1===i)return null;var o=[];let s=i;do{var l=Math.floor(s/3);if(o.push(t[2*l],t[2*l+1]),a[s=s%3==2?s-2:s+1]!==e)break}while((s=n[s])!==i&&-1!==s);return o}_clip(e){var t,r,n;return 0===e&&1===this.delaunay.hull.length?[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin]:null===(t=this._cell(e))?null:(r=this[\"vectors\"],this._simplify(r[n=4*e]||r[1+n]?this._clipInfinite(e,t,r[n],r[1+n],r[2+n],r[3+n]):this._clipFinite(e,t)))}_clipFinite(i,t){var r=t.length;let o=null,s,l,c=t[r-2],u=t[r-1],d,p=this._regioncode(c,u),f,h=0;for(let e=0;e<r;e+=2)if(s=c,l=u,c=t[e],u=t[e+1],d=p,p=this._regioncode(c,u),0===d&&0===p)f=h,h=0,o?o.push(c,u):o=[c,u];else{let e,t,r,n,a;if(0===d){if(null===(e=this._clipSegment(s,l,c,u,d,p)))continue;[t,r,n,a]=e}else{if(null===(e=this._clipSegment(c,u,s,l,p,d)))continue;[n,a,t,r]=e,f=h,h=this._edgecode(t,r),f&&h&&this._edge(i,f,h,o,o.length),o?o.push(t,r):o=[t,r]}f=h,h=this._edgecode(n,a),f&&h&&this._edge(i,f,h,o,o.length),o?o.push(n,a):o=[n,a]}if(o)f=h,h=this._edgecode(o[0],o[1]),f&&h&&this._edge(i,f,h,o,o.length);else if(this.contains(i,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return o}_clipSegment(n,a,i,o,s,l){var c=s<l;for(c&&([n,a,i,o,s,l]=[i,o,n,a,l,s]);;){if(0===s&&0===l)return c?[i,o,n,a]:[n,a,i,o];if(s&l)return null;let e,t,r=s||l;8&r?(e=n+(i-n)*(this.ymax-a)/(o-a),t=this.ymax):4&r?(e=n+(i-n)*(this.ymin-a)/(o-a),t=this.ymin):e=2&r?(t=a+(o-a)*(this.xmax-n)/(i-n),this.xmax):(t=a+(o-a)*(this.xmin-n)/(i-n),this.xmin),s?(n=e,a=t,s=this._regioncode(n,a)):(i=e,o=t,l=this._regioncode(i,o))}}_clipInfinite(a,e,t,r,n,i){let o=Array.from(e),s;if((s=this._project(o[0],o[1],t,r))&&o.unshift(s[0],s[1]),(s=this._project(o[o.length-2],o[o.length-1],n,i))&&o.push(s[0],s[1]),o=this._clipFinite(a,o))for(let e=0,t=o.length,r,n=this._edgecode(o[t-2],o[t-1]);e<t;e+=2)r=n,n=this._edgecode(o[e],o[e+1]),r&&n&&(e=this._edge(a,r,n,o,e),t=o.length);else this.contains(a,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(o=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return o}_edge(r,n,e,a,i){for(;n!==e;){let e,t;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,t=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,t=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,t=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,t=this.ymin}a[i]===e&&a[i+1]===t||!this.contains(r,e,t)||(a.splice(i,0,e,t),i+=2)}return i}_project(e,t,r,n){let a=1/0,i,o,s;if(n<0){if(t<=this.ymin)return null;(i=(this.ymin-t)/n)<a&&(s=this.ymin,o=e+(a=i)*r)}else if(0<n){if(t>=this.ymax)return null;(i=(this.ymax-t)/n)<a&&(s=this.ymax,o=e+(a=i)*r)}if(0<r){if(e>=this.xmax)return null;(i=(this.xmax-e)/r)<a&&(o=this.xmax,s=t+(a=i)*n)}else if(r<0){if(e<=this.xmin)return null;(i=(this.xmin-e)/r)<a&&(o=this.xmin,s=t+(a=i)*n)}return[o,s]}_edgecode(e,t){return(e===this.xmin?1:e===this.xmax?2:0)|(t===this.ymin?4:t===this.ymax?8:0)}_regioncode(e,t){return(e<this.xmin?1:e>this.xmax?2:0)|(t<this.ymin?4:t>this.ymax?8:0)}_simplify(t){if(t&&4<t.length){for(let e=0;e<t.length;e+=2){var r=(e+2)%t.length,n=(e+4)%t.length;(t[e]===t[r]&&t[r]===t[n]||t[e+1]===t[1+r]&&t[1+r]===t[1+n])&&(t.splice(r,2),e-=2)}t.length||(t=null)}return t}};const m=2*Math.PI,_=Math.pow;function E(e){return e[0]}function S(e){return e[1]}function A(e){var{triangles:t,coords:r}=e;for(let e=0;e<t.length;e+=3){var n=2*t[e],a=2*t[e+1],i=2*t[e+2];if(1e-10<(r[i]-r[n])*(r[1+a]-r[1+n])-(r[a]-r[n])*(r[1+i]-r[1+n]))return}return 1}function O(e,t,r){return[e+Math.sin(e+t)*r,t+Math.cos(e-t)*r]}class y{static from(e,t=E,r=S,n){return new y(\"length\"in e?C(e,t,r,n):Float64Array.from(q(e,t,r,n)))}constructor(e){this._delaunator=new p(e),this.inedges=new Int32Array(e.length/2),this._hullIndex=new Int32Array(e.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const e=this._delaunator,r=this.points;if(e.hull&&2<e.hull.length&&A(e)){this.collinear=Int32Array.from({length:r.length/2},(e,t)=>t).sort((e,t)=>r[2*e]-r[2*t]||r[2*e+1]-r[2*t+1]);var t=this.collinear[0],n=this.collinear[this.collinear.length-1],t=[r[2*t],r[2*t+1],r[2*n],r[2*n+1]],a=1e-8*Math.hypot(t[3]-t[1],t[2]-t[0]);for(let e=0,t=r.length/2;e<t;++e){var i=O(r[2*e],r[2*e+1],a);r[2*e]=i[0],r[2*e+1]=i[1]}this._delaunator=new p(r)}else delete this.collinear;var o=this.halfedges=this._delaunator.halfedges,s=this.hull=this._delaunator.hull,l=this.triangles=this._delaunator.triangles,c=this.inedges.fill(-1),u=this._hullIndex.fill(-1);for(let e=0,t=o.length;e<t;++e){var d=l[e%3==2?e-2:e+1];-1!==o[e]&&-1!==c[d]||(c[d]=e)}for(let e=0,t=s.length;e<t;++e)u[s[e]]=e;s.length<=2&&0<s.length&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=s[0],c[s[0]]=1,2===s.length)&&(c[s[1]]=0,this.triangles[1]=s[1],this.triangles[2]=s[1])}voronoi(e){return new t(this,e)}*neighbors(r){var e,{inedges:t,hull:n,_hullIndex:a,halfedges:i,triangles:o,collinear:s}=this;if(s)0<(e=s.indexOf(r))&&(yield s[e-1]),e<s.length-1&&(yield s[e+1]);else{var l,c=t[r];if(-1!==c){let e=c,t;do{if(yield t=o[e],o[e=e%3==2?e-2:e+1]!==r)return;if(-1===(e=i[e]))return void((l=n[(a[r]+1)%n.length])!==t&&(yield l))}while(e!==c)}}}find(e,t,r=0){if((e=+e)!=e||(t=+t)!=t)return-1;var n=r;let a;for(;0<=(a=this._step(r,e,t))&&a!==r&&a!==n;)r=a;return a}_step(e,t,r){var{inedges:n,hull:a,_hullIndex:i,halfedges:o,triangles:s,points:l}=this;if(-1===n[e]||!l.length)return(e+1)%(l.length>>1);let c=e,u=_(t-l[2*e],2)+_(r-l[2*e+1],2);var d=n[e];let p=d;do{var f=s[p],h=_(t-l[2*f],2)+_(r-l[2*f+1],2);if(h<u&&(u=h,c=f),s[p=p%3==2?p-2:p+1]!==e)break;if(-1===(p=o[p])){if((p=a[(i[e]+1)%a.length])!==f&&_(t-l[2*p],2)+_(r-l[2*p+1],2)<u)return p;break}}while(p!==d);return c}render(r){var e=null==r?r=new g:void 0,{points:n,halfedges:a,triangles:i}=this;for(let e=0,t=a.length;e<t;++e){var o,s=a[e];s<e||(o=2*i[e],s=2*i[s],r.moveTo(n[o],n[1+o]),r.lineTo(n[s],n[1+s]))}return this.renderHull(r),e&&e.value()}renderPoints(r,n){void 0!==n||r&&\"function\"==typeof r.moveTo||(n=r,r=null),n=null==n?2:+n;var e=null==r?r=new g:void 0,a=this[\"points\"];for(let e=0,t=a.length;e<t;e+=2){var i=a[e],o=a[e+1];r.moveTo(i+n,o),r.arc(i,o,n,0,m)}return e&&e.value()}renderHull(t){var e=null==t?t=new g:void 0,{hull:r,points:n}=this;const a=2*r[0],i=r.length;t.moveTo(n[a],n[a+1]);for(let e=1;e<i;++e){const a=2*r[e];t.lineTo(n[a],n[1+a])}return t.closePath(),e&&e.value()}hullPolygon(){var e=new l;return this.renderHull(e),e.value()}renderTriangle(e,t){var r=null==t?t=new g:void 0,{points:n,triangles:a}=this,i=2*a[e*=3],o=2*a[e+1],a=2*a[e+2];return t.moveTo(n[i],n[1+i]),t.lineTo(n[o],n[1+o]),t.lineTo(n[a],n[1+a]),t.closePath(),r&&r.value()}*trianglePolygons(){var r=this[\"triangles\"];for(let e=0,t=r.length/3;e<t;++e)yield this.trianglePolygon(e)}trianglePolygon(e){var t=new l;return this.renderTriangle(e,t),t.value()}}function C(t,r,n,a){var i=t.length,o=new Float64Array(2*i);for(let e=0;e<i;++e){var s=t[e];o[2*e]=r.call(a,s,e,t),o[2*e+1]=n.call(a,s,e,t)}return o}function*q(e,t,r,n){let a=0;for(const i of e)yield t.call(n,i,a,e),yield r.call(n,i,a,e),++a}function o(e){r.Transform.call(this,null,e)}o.Definition={type:\"Voronoi\",metadata:{modifies:!0},params:[{name:\"x\",type:\"field\",required:!0},{name:\"y\",type:\"field\",required:!0},{name:\"size\",type:\"number\",array:!0,length:2},{name:\"extent\",type:\"array\",array:!0,length:2,default:[[-1e5,-1e5],[1e5,1e5]],content:{type:\"number\",array:!0,length:2}},{name:\"as\",type:\"string\",default:\"path\"}]};const T=[-1e5,-1e5,1e5,1e5];function z(e){var t=e[0][0],r=e[0][1];let n=e.length-1;for(;e[n][0]===t&&e[n][1]===r;--n);return\"M\"+e.slice(0,n+1).join(\"L\")+\"Z\"}function W(e){return 2===e.length&&e[0][0]===e[1][0]&&e[0][1]===e[1][1]}n.inherits(o,r.Transform,{transform(e,t){var r=e.as||\"path\",n=t.source;if(!n||!n.length)return t;let a=e.size;a=a?[0,0,a[0],a[1]]:(a=e.extent)?[a[0][0],a[0][1],a[1][0],a[1][1]]:T;var i=this.value=y.from(n,e.x,e.y).voronoi(a);for(let e=0,t=n.length;e<t;++e){var o=i.cellPolygon(e);n[e][r]=o&&!W(o)?z(o):null}return t.reflow(e.modified()).modifies(r)}}),e.voronoi=o}}return VD.exports}var zD,WD={exports:{}};function $D(){if(!zD){zD=1;var e=WD.exports;{var y=fD(),t=rD(),m=HP(),g=yD(),_=sD(),A=Math.PI/180,O=64,C=2048;function r(){var u,d,p,f,h,m,g,E=[256,256],S=n,_=[],A=Math.random,t={};return t.layout=function(){(e=y.canvas()).width=e.height=1,t=Math.sqrt(e.getContext(\"2d\").getImageData(0,0,1,1).data.length>>2),e.width=(O<<5)/t,e.height=C/t,(e=e.getContext(\"2d\")).fillStyle=e.strokeStyle=\"red\",e.textAlign=\"center\";for(var e,t,r={context:e,ratio:t},n=b((E[0]>>5)*E[1]),a=null,i=_.length,o=-1,s=[],l=_.map(e=>({text:u(e),font:d(e),style:f(e),weight:h(e),rotate:m(e),size:~~(p(e)+1e-14),padding:g(e),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:e})).sort((e,t)=>t.size-e.size);++o<i;){var c=l[o];c.x=E[0]*(A()+.5)>>1,c.y=E[1]*(A()+.5)>>1,T(r,c,l,o),c.hasText&&function(e,t,r){var n,a,i=t.x,o=t.y,s=Math.hypot(E[0],E[1]),l=S(E),c=A()<.5?1:-1,u=-c;for(;(m=l(u+=c))&&(n=~~m[0],a=~~m[1],!(Math.min(Math.abs(n),Math.abs(a))>=s));)if(t.x=i+n,t.y=o+a,!(t.x+t.x0<0||t.y+t.y0<0||t.x+t.x1>E[0]||t.y+t.y1>E[1])&&(!r||!w(t,e,E[0]))&&(!r||k(t,r))){for(var d,p=t.sprite,f=t.width>>5,h=E[0]>>5,m=t.x-(f<<4),g=127&m,_=32-g,y=t.y1-t.y0,T=(t.y+t.y0)*h+(m>>5),v=0;v<y;v++){for(var b=d=0;b<=f;b++)e[T+b]|=d<<_|(b<f?(d=p[v*f+b])>>>g:0);T+=h}return t.sprite=null,1}return}(n,c,a)&&(s.push(c),a?v(a,c):a=[{x:c.x+c.x0,y:c.y+c.y0},{x:c.x+c.x1,y:c.y+c.y1}],c.x-=E[0]>>1,c.y-=E[1]>>1)}return s},t.words=function(e){return arguments.length?(_=e,t):_},t.size=function(e){return arguments.length?(E=[+e[0],+e[1]],t):E},t.font=function(e){return arguments.length?(d=i(e),t):d},t.fontStyle=function(e){return arguments.length?(f=i(e),t):f},t.fontWeight=function(e){return arguments.length?(h=i(e),t):h},t.rotate=function(e){return arguments.length?(m=i(e),t):m},t.text=function(e){return arguments.length?(u=i(e),t):u},t.spiral=function(e){return arguments.length?(S=o[e]||e,t):S},t.fontSize=function(e){return arguments.length?(p=i(e),t):p},t.padding=function(e){return arguments.length?(g=i(e),t):g},t.random=function(e){return arguments.length?(A=e,t):A},t}function T(e,t,r,n){if(!t.sprite){var a,i,o,s,l,c,u,d,p=e.context,f=e.ratio,h=(p.clearRect(0,0,(O<<5)/f,C/f),0),m=0,g=0,_=r.length;for(--n;++n<_;){if(t=r[n],p.save(),p.font=t.style+\" \"+t.weight+\" \"+~~((t.size+1)/f)+\"px \"+t.font,u=p.measureText(t.text+\"m\").width*f,d=t.size<<1,t.rotate?(c=Math.sin(t.rotate*A),o=u*(l=Math.cos(t.rotate*A)),s=u*c,l=d*l,c=d*c,u=Math.max(Math.abs(o+c),Math.abs(o-c))+31>>5<<5,d=~~Math.max(Math.abs(s+l),Math.abs(s-l))):u=u+31>>5<<5,g<d&&(g=d),O<<5<=h+u&&(m+=g,g=h=0),C<=m+d)break;p.translate((h+(u>>1))/f,(m+(d>>1))/f),t.rotate&&p.rotate(t.rotate*A),p.fillText(t.text,0,0),t.padding&&(p.lineWidth=2*t.padding,p.strokeText(t.text,0,0)),p.restore(),t.width=u,t.height=d,t.xoff=h,t.yoff=m,t.x1=u>>1,t.y1=d>>1,t.x0=-t.x1,t.y0=-t.y1,t.hasText=!0,h+=u}for(var y=p.getImageData(0,0,(O<<5)/f,C/f).data,T=[];0<=--n;)if((t=r[n]).hasText){for(a=(u=t.width)>>5,d=t.y1-t.y0,i=0;i<d*a;i++)T[i]=0;if(null==(h=t.xoff))return;for(var m=t.yoff,v=0,b=-1,E=0;E<d;E++){for(i=0;i<u;i++){var S=y[(m+E)*(O<<5)+(h+i)<<2]?1<<31-i%32:0;T[a*E+(i>>5)]|=S,v|=S}v?b=E:(t.y0++,d--,E--,m++)}t.y1=t.y0+b,t.sprite=T.slice(0,(t.y1-t.y0)*a)}}}function w(e,t,r){for(var n=e.sprite,a=e.width>>5,i=e.x-(a<<4),o=127&i,s=32-o,l=e.y1-e.y0,c=(e.y+e.y0)*(r>>=5)+(i>>5),u=0;u<l;u++){for(var d=0,p=0;p<=a;p++)if((d<<s|(p<a?(d=n[u*a+p])>>>o:0))&t[c+p])return 1;c+=r}}function v(e,t){var r=e[0],e=e[1];t.x+t.x0<r.x&&(r.x=t.x+t.x0),t.y+t.y0<r.y&&(r.y=t.y+t.y0),t.x+t.x1>e.x&&(e.x=t.x+t.x1),t.y+t.y1>e.y&&(e.y=t.y+t.y1)}function k(e,t){return e.x+e.x1>t[0].x&&e.x+e.x0<t[1].x&&e.y+e.y1>t[0].y&&e.y+e.y0<t[1].y}function n(e){var t=e[0]/e[1];return function(e){return[t*(e*=.1)*Math.cos(e),e*Math.sin(e)]}}function a(e){var r=4*e[0]/e[1],n=0,a=0;return function(e){var t=e<0?-1:1;switch(Math.sqrt(1+4*t*e)-t&3){case 0:n+=r;break;case 1:a+=4;break;case 2:n-=r;break;default:a-=4}return[n,a]}}function b(e){for(var t=[],r=-1;++r<e;)t[r]=0;return t}function i(e){return\"function\"==typeof e?e:function(){return e}}var o={archimedean:n,rectangular:a};const E=[\"x\",\"y\",\"font\",\"fontSize\",\"fontStyle\",\"fontWeight\",\"angle\"],S=[\"text\",\"font\",\"rotate\",\"fontSize\",\"fontStyle\",\"fontWeight\"];function s(e){t.Transform.call(this,r(),e)}s.Definition={type:\"Wordcloud\",metadata:{modifies:!0},params:[{name:\"size\",type:\"number\",array:!0,length:2},{name:\"font\",type:\"string\",expr:!0,default:\"sans-serif\"},{name:\"fontStyle\",type:\"string\",expr:!0,default:\"normal\"},{name:\"fontWeight\",type:\"string\",expr:!0,default:\"normal\"},{name:\"fontSize\",type:\"number\",expr:!0,default:14},{name:\"fontSizeRange\",type:\"number\",array:\"nullable\",default:[10,50]},{name:\"rotate\",type:\"number\",expr:!0,default:0},{name:\"text\",type:\"field\"},{name:\"spiral\",type:\"string\",values:[\"archimedean\",\"rectangular\"]},{name:\"padding\",type:\"number\",expr:!0},{name:\"as\",type:\"string\",array:!0,length:7,default:E}]},m.inherits(s,t.Transform,{transform(r,n){!r.size||r.size[0]&&r.size[1]||m.error(\"Wordcloud size dimensions must be non-zero.\");var a=r.modified();if(a||n.changed(n.ADD_REM)||S.some(function(e){return e=r[e],m.isFunction(e)&&n.modified(e.fields)})){const u=n.materialize(n.SOURCE).source,d=this.value,p=r.as||E;let e=r.fontSize||14,t;if(m.isFunction(e)?t=r.fontSizeRange:e=m.constant(e),t){const f=e,h=g.scale(\"sqrt\")().domain(m.extent(u,f)).range(t);e=e=>h(f(e))}u.forEach(e=>{e[p[0]]=NaN,e[p[1]]=NaN,e[p[3]]=0});var i=d.words(u).text(r.text).size(r.size||[500,500]).padding(r.padding||1).spiral(r.spiral||\"archimedean\").rotate(r.rotate||0).font(r.font||\"sans-serif\").fontStyle(r.fontStyle||\"normal\").fontWeight(r.fontWeight||\"normal\").fontSize(e).random(_.random).layout(),o=d.size(),s=o[0]>>1,l=o[1]>>1,c=i.length;for(let e=0,t,r;e<c;++e)t=i[e],(r=t.datum)[p[0]]=t.x+s,r[p[1]]=t.y+l,r[p[2]]=t.font,r[p[3]]=t.size,r[p[4]]=t.style,r[p[5]]=t.weight,r[p[6]]=t.rotate;return n.reflow(a).modifies(p)}}}),e.wordcloud=s}}return WD.exports}var KD,YD={exports:{}};function JD(){if(!KD){KD=1;var e=YD.exports;{var t=rD(),r=HP();const _=e=>new Uint8Array(e),y=e=>new Uint16Array(e),T=e=>new Uint32Array(e);function n(){let r=8,l=[],e=T(0),c=i(0,r),u=i(0,r);return{data:()=>l,seen:()=>e=a(e,l.length),add(a){for(let e=0,t=l.length,r=a.length,n;e<r;++e)(n=a[e])._index=t++,l.push(n)},remove(e,t){var r=l.length,n=Array(r-e),a=l;let i,o,s;for(o=0;!t[o]&&o<r;++o)n[o]=l[o],a[o]=o;for(s=o;o<r;++o)i=l[o],t[o]?a[o]=-1:(a[o]=s,c[s]=c[o],u[s]=u[o],(n[s]=i)._index=s++),c[o]=0;return l=n,a},size:()=>l.length,curr:()=>c,prev:()=>u,reset:e=>u[e]=c[e],all:()=>r<257?255:r<65537?65535:4294967295,set(e,t){c[e]|=t},clear(e,t){c[e]&=~t},resize(e,t){(c.length<e||t>r)&&(r=Math.max(t,r),c=i(e,r,c),u=i(e,r))}}}function a(e,t,r){return e.length>=t?e:((r=r||new e.constructor(t)).set(e),r)}function i(e,t,r){t=(t<257?_:t<65537?y:T)(e);return r&&t.set(r),t}function A(e,t,r){const s=1<<t;return{one:s,zero:~s,range:r.slice(),bisect:e.bisect,index:e.index,size:e.size,onAdd(e,t){var r=this.bisect(this.range,e.value),n=e.index,a=r[0],e=r[1],i=n.length;let o;for(o=0;o<a;++o)t[n[o]]|=s;for(o=e;o<i;++o)t[n[o]]|=s;return this}}}function l(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function c(e,t){return null==e||null==t?NaN:t<e?-1:e<t?1:e<=t?0:NaN}function o(r){let i,o,a;function s(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<0?r=1+a:n=a}while(r<n)}return r}return a=2!==r.length?(i=l,o=(e,t)=>l(r(e),t),(e,t)=>r(e)-t):(i=r===l||r===c?r:u,o=r),{left:s,center:function(e,t,r=0,n=e.length){return n=s(e,t,r,n-1),r<n&&a(e[n-1],t)>-a(e[n],t)?n-1:n},right:function(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<=0?r=1+a:n=a}while(r<n)}return r}}}function u(){return 0}function s(e){return null===e?NaN:+e}var d=o(l);const v=d.right,b=d.left;function p(t,e){return Array.from(e,e=>t[e])}function O(){let u=T(0),d=[],p=0;return{insert:function(e,t,r){if(!t.length)return[];var n=p,a=t.length,i=T(a);let o=Array(a),s,l,c;for(c=0;c<a;++c)o[c]=e(t[c]),i[c]=c;if(o=f(o,i),n)s=d,l=u,d=Array(n+a),u=T(n+a),h(r,s,l,n,o,i,a,d,u);else{if(0<r)for(c=0;c<a;++c)i[c]+=r;d=o,u=i}return p=n+a,{index:i,value:o}},remove:function(e,t){var r=p;let n,a,i;for(a=0;!t[u[a]]&&a<r;++a);for(i=a;a<r;++a)t[n=u[a]]||(u[i]=n,d[i]=d[a],++i);p=r-e},bisect:function(e,t){let r;return r=t?t.length:(t=d,p),[b(t,e[0],0,r),v(t,e[1],0,r)]},reindex:function(r){for(let e=0,t=p;e<t;++e)u[e]=r[u[e]]},index:()=>u,size:()=>p}}function f(r,e){return r.sort.call(e,(e,t)=>{e=r[e],t=r[t];return e<t?-1:t<e?1:0}),p(r,e)}function h(e,t,r,n,a,i,o,s,l){let c=0,u=0,d;for(d=0;c<n&&u<o;++d)t[c]<a[u]?(s[d]=t[c],l[d]=r[c++]):(s[d]=a[u],l[d]=i[u++]+e);for(;c<n;++c,++d)s[d]=t[c],l[d]=r[c];for(;u<o;++u,++d)s[d]=a[u],l[d]=i[u]+e}function m(e){t.Transform.call(this,n(),e),this._indices=null,this._dims=null}function g(e){t.Transform.call(this,null,e)}o(s).center,m.Definition={type:\"CrossFilter\",metadata:{},params:[{name:\"fields\",type:\"field\",array:!0,required:!0},{name:\"query\",type:\"array\",array:!0,required:!0,content:{type:\"number\",array:!0,length:2}}]},r.inherits(m,t.Transform,{transform(e,t){return this._dims?e.modified(\"fields\")||e.fields.some(e=>t.modified(e.fields))?this.reinit(e,t):this.eval(e,t):this.init(e,t)},init(e,t){var r=e.fields,n=e.query,a=this._indices={},i=this._dims=[],o=n.length;let s=0,l,c;for(;s<o;++s)c=a[l=r[s].fname]||(a[l]=O()),i.push(A(c,s,n[s]));return this.eval(e,t)},reinit(e,t){var r=t.materialize().fork(),n=e.fields,a=e.query,i=this._indices,o=this._dims,s=this.value,l=s.curr(),c=s.prev(),u=s.all(),d=r.rem=r.add,p=r.mod,f=a.length,h={};let m,g,_,y,T,v,b,E,S;if(c.set(l),t.rem.length&&(T=this.remove(e,t,r)),t.add.length&&s.add(t.add),t.mod.length)for(v={},y=t.mod,b=0,E=y.length;b<E;++b)v[y[b]._index]=1;for(b=0;b<f;++b)S=n[b],o[b]&&!e.modified(\"fields\",b)&&!t.modified(S.fields)||(_=S.fname,(m=h[_])||(i[_]=g=O(),h[_]=m=g.insert(S,t.source,0)),o[b]=A(g,b,a[b]).onAdd(m,l));for(b=0,E=s.data().length;b<E;++b){if(T[b])continue;c[b]!==l[b]?d.push(b):v[b]&&l[b]!==u&&p.push(b)}return s.mask=(1<<f)-1,r},eval(e,t){var r=t.materialize().fork(),n=this._dims.length;let a=0;return t.rem.length&&(this.remove(e,t,r),a|=(1<<n)-1),e.modified(\"query\")&&!e.modified(\"fields\")&&(a|=this.update(e,t,r)),t.add.length&&(this.insert(e,t,r),a|=(1<<n)-1),t.mod.length&&(this.modify(t,r),a|=(1<<n)-1),this.value.mask=a,r},insert(e,t,r){var n=t.add,t=this.value,a=this._dims,i=this._indices,o=e.fields,s={},l=r.add,c=t.size()+n.length,u=a.length;let d=t.size(),p,f,h;t.resize(c,u),t.add(n);var m=t.curr(),g=t.prev(),_=t.all();for(p=0;p<u;++p)h=s[f=o[p].fname]||(s[f]=i[f].insert(o[p],n,d)),a[p].onAdd(h,m);for(;d<c;++d)g[d]=_,m[d]!==_&&l.push(d)},modify(e,t){var r=t.mod,t=this.value,n=t.curr(),a=t.all(),i=e.mod;let o,s,l;for(o=0,s=i.length;o<s;++o)n[l=i[o]._index]!==a&&r.push(l)},remove(e,t,r){var n=this._indices,a=this.value,i=a.curr(),o=a.prev(),s=a.all(),l={},c=r.rem,u=t.rem;let d,p,f,h;for(d=0,p=u.length;d<p;++d)l[f=u[d]._index]=1,o[f]=h=i[f],h!==(i[f]=s)&&c.push(f);for(f in n)n[f].remove(p,l);return this.reindex(t,p,l),l},reindex(e,r,n){const a=this._indices,i=this.value;e.runAfter(()=>{var e=i.remove(r,n);for(const t in a)a[t].reindex(e)})},update(e,t,r){var n=this._dims,a=e.query,i=t.stamp,o=n.length;let s=0,l,c;for(r.filters=0,c=0;c<o;++c)e.modified(\"query\",c)&&(l=c,++s);if(1===s)s=n[l].one,this.incrementOne(n[l],a[l],r.add,r.rem);else for(c=0,s=0;c<o;++c)e.modified(\"query\",c)&&(s|=n[c].one,this.incrementAll(n[c],a[c],i,r.add),r.rem=r.add);return s},incrementAll(e,t,r,n){var a=this.value,i=a.seen(),o=a.curr(),s=a.prev(),l=e.index(),a=e.bisect(e.range),c=e.bisect(t),u=c[0],c=c[1],d=a[0],a=a[1],p=e.one;let f,h,m;if(u<d)for(f=u,h=Math.min(d,c);f<h;++f)i[m=l[f]]!==r&&(s[m]=o[m],i[m]=r,n.push(m)),o[m]^=p;else if(d<u)for(f=d,h=Math.min(u,a);f<h;++f)i[m=l[f]]!==r&&(s[m]=o[m],i[m]=r,n.push(m)),o[m]^=p;if(a<c)for(f=Math.max(u,a),h=c;f<h;++f)i[m=l[f]]!==r&&(s[m]=o[m],i[m]=r,n.push(m)),o[m]^=p;else if(c<a)for(f=Math.max(d,c),h=a;f<h;++f)i[m=l[f]]!==r&&(s[m]=o[m],i[m]=r,n.push(m)),o[m]^=p;e.range=t.slice()},incrementOne(e,t,r,n){var a=this.value.curr(),i=e.index(),o=e.bisect(e.range),s=e.bisect(t),l=s[0],s=s[1],c=o[0],o=o[1],u=e.one;let d,p,f;if(l<c)for(d=l,p=Math.min(c,s);d<p;++d)a[f=i[d]]^=u,r.push(f);else if(c<l)for(d=c,p=Math.min(l,o);d<p;++d)a[f=i[d]]^=u,n.push(f);if(o<s)for(d=Math.max(l,o),p=s;d<p;++d)a[f=i[d]]^=u,r.push(f);else if(s<o)for(d=Math.max(c,s),p=o;d<p;++d)a[f=i[d]]^=u,n.push(f);e.range=t.slice()}}),g.Definition={type:\"ResolveFilter\",metadata:{},params:[{name:\"ignore\",type:\"number\",required:!0,description:\"A bit mask indicating which filters to ignore.\"},{name:\"filter\",type:\"object\",required:!0,description:\"Per-tuple filter bitmaps from a CrossFilter transform.\"}]},r.inherits(g,t.Transform,{transform(e,t){const r=~(e.ignore||0),n=e.filter,a=n.mask;if(0==(a&r))return t.StopPropagation;const i=t.fork(t.ALL),o=n.data(),s=n.curr(),l=n.prev(),c=e=>s[e]&r?null:o[e];return i.filter(i.MOD,c),a&a-1?(i.filter(i.ADD,e=>{var t=s[e]&r;return!t&&t^l[e]&r?o[e]:null}),i.filter(i.REM,e=>{var t=s[e]&r;return t&&!(t^(t^l[e]&r))?o[e]:null})):(i.filter(i.ADD,c),i.filter(i.REM,e=>(s[e]&r)===a?o[e]:null)),i.filter(i.SOURCE,e=>c(e._index))}}),e.crossfilter=m,e.resolvefilter=g}}return YD.exports}var QD,ZD={exports:{}},XD={exports:{}},e2={exports:{}};function t2(){if(!QD){QD=1;var e=e2.exports;{var h=HP();const D=\"RawCode\",x=\"Literal\",Me=\"Property\",Pe=\"Identifier\",De=\"ArrayExpression\",xe=\"BinaryExpression\",Le=\"CallExpression\",Fe=\"ConditionalExpression\",Ue=\"LogicalExpression\",Be=\"MemberExpression\",je=\"ObjectExpression\",He=\"UnaryExpression\";function a(e){this.type=e}function L(e){switch(e.type){case De:return e.elements;case xe:case Ue:return[e.left,e.right];case Le:return[e.callee].concat(e.arguments);case Fe:return[e.test,e.consequent,e.alternate];case Be:return[e.object,e.property];case je:return e.properties;case Me:return[e.key,e.value];case He:return[e.argument];case Pe:case x:case D:default:return[]}}a.prototype.visit=function(e){let t,r,n;if(e(this))return 1;for(t=L(this),r=0,n=t.length;r<n;++r)if(t[r].visit(e))return 1};var o,s,l,u,r=2,i=7,F=\"ConditionalExpression\",U=\"Identifier\",c=\"Unexpected token %0\",n=\"Invalid regular expression\",d=\"Invalid regular expression: missing /\",B=\"Octal literals are not allowed in strict mode.\",p=\"ILLEGAL\",f=\"Disabled.\",j=new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\"),H=new RegExp(\"[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]\");function m(e,t){if(!e)throw new Error(\"ASSERT: \"+t)}function g(e){return 48<=e&&e<=57}function _(e){return\"0123456789abcdefABCDEF\".includes(e)}function y(e){return\"01234567\".includes(e)}function G(e){return 32===e||9===e||11===e||12===e||160===e||5760<=e&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(e)}function T(e){return 10===e||13===e||8232===e||8233===e}function v(e){return 36===e||95===e||65<=e&&e<=90||97<=e&&e<=122||92===e||128<=e&&j.test(String.fromCharCode(e))}function b(e){return 36===e||95===e||65<=e&&e<=90||97<=e&&e<=122||48<=e&&e<=57||92===e||128<=e&&H.test(String.fromCharCode(e))}const Ge={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function V(){for(;s<l;){var e=o.charCodeAt(s);if(!G(e)&&!T(e))break;++s}}function E(e){for(var t,r=0,n=\"u\"===e?4:2,a=0;a<n;++a)s<l&&_(o[s])?(t=o[s++],r=16*r+\"0123456789abcdef\".indexOf(t.toLowerCase())):C({},c,p);return String.fromCharCode(r)}function q(){var e=o[s],t=0;for(\"}\"===e&&C({},c,p);s<l&&_(e=o[s++]);)t=16*t+\"0123456789abcdef\".indexOf(e.toLowerCase());return(1114111<t||\"}\"!==e)&&C({},c,p),t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}function z(){var e=o.charCodeAt(s++),t=String.fromCharCode(e);for(92===e&&(117!==o.charCodeAt(s)&&C({},c,p),++s,(e=E(\"u\"))&&\"\\\\\"!==e&&v(e.charCodeAt(0))||C({},c,p),t=e);s<l&&b(e=o.charCodeAt(s));)++s,t+=String.fromCharCode(e),92===e&&(t=t.substr(0,t.length-1),117!==o.charCodeAt(s)&&C({},c,p),++s,(e=E(\"u\"))&&\"\\\\\"!==e&&b(e.charCodeAt(0))||C({},c,p),t+=e);return t}function W(){for(var e,t=s++;s<l;){if(92===(e=o.charCodeAt(s)))return s=t,z();if(!b(e))break;++s}return o.slice(t,s)}function $(){var e=s,t=(92===o.charCodeAt(s)?z:W)(),r=1===t.length?3:Ge.hasOwnProperty(t)?4:\"null\"===t?5:\"true\"===t||\"false\"===t?1:3;return{type:r,value:t,start:e,end:s}}function t(){var e,t,r=s,n=o.charCodeAt(s),a=o[s];switch(n){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++s,{type:i,value:String.fromCharCode(n),start:r,end:s};default:if(61===(e=o.charCodeAt(s+1)))switch(n){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return s+=2,{type:i,value:String.fromCharCode(n)+String.fromCharCode(e),start:r,end:s};case 33:case 61:return s+=2,61===o.charCodeAt(s)&&++s,{type:i,value:o.slice(r,s),start:r,end:s}}}return\">>>=\"===(t=o.substr(s,4))?{type:i,value:t,start:r,end:s+=4}:\">>>\"===(t=t.substr(0,3))||\"<<=\"===t||\">>=\"===t?{type:i,value:t,start:r,end:s+=3}:a===(t=t.substr(0,2))[1]&&\"+-<>&|\".includes(a)||\"=>\"===t?{type:i,value:t,start:r,end:s+=2}:(\"//\"===t&&C({},c,p),\"<>=!+-*%&|^/\".includes(a)?{type:i,value:a,start:r,end:++s}:void C({},c,p))}function K(e){let t=\"\";for(;s<l&&_(o[s]);)t+=o[s++];return 0===t.length&&C({},c,p),v(o.charCodeAt(s))&&C({},c,p),{type:6,value:parseInt(\"0x\"+t,16),start:e,end:s}}function Y(e){let t=\"0\"+o[s++];for(;s<l&&y(o[s]);)t+=o[s++];return(v(o.charCodeAt(s))||g(o.charCodeAt(s)))&&C({},c,p),{type:6,value:parseInt(t,8),octal:!0,start:e,end:s}}function J(){var e,t,r=o[s];if(m(g(r.charCodeAt(0))||\".\"===r,\"Numeric literal must start with a decimal digit or a decimal point\"),t=s,e=\"\",\".\"!==r){if(e=o[s++],r=o[s],\"0\"===e){if(\"x\"===r||\"X\"===r)return++s,K(t);if(y(r))return Y(t);r&&g(r.charCodeAt(0))&&C({},c,p)}for(;g(o.charCodeAt(s));)e+=o[s++];r=o[s]}if(\".\"===r){for(e+=o[s++];g(o.charCodeAt(s));)e+=o[s++];r=o[s]}if(\"e\"===r||\"E\"===r)if(e+=o[s++],\"+\"!==(r=o[s])&&\"-\"!==r||(e+=o[s++]),g(o.charCodeAt(s)))for(;g(o.charCodeAt(s));)e+=o[s++];else C({},c,p);return v(o.charCodeAt(s))&&C({},c,p),{type:6,value:parseFloat(e),start:t,end:s}}function Q(){var e,t,r,n=\"\",a=!1,i=o[s];for(m(\"'\"===i||'\"'===i,\"String literal must starts with a quote\"),e=s,++s;s<l;){if((t=o[s++])===i){i=\"\";break}if(\"\\\\\"===t)if((t=o[s++])&&T(t.charCodeAt(0)))\"\\r\"===t&&\"\\n\"===o[s]&&++s;else switch(t){case\"u\":case\"x\":\"{\"===o[s]?(++s,n+=q()):n+=E(t);break;case\"n\":n+=\"\\n\";break;case\"r\":n+=\"\\r\";break;case\"t\":n+=\"\\t\";break;case\"b\":n+=\"\\b\";break;case\"f\":n+=\"\\f\";break;case\"v\":n+=\"\\v\";break;default:y(t)?(0!==(r=\"01234567\".indexOf(t))&&(a=!0),s<l&&y(o[s])&&(a=!0,r=8*r+\"01234567\".indexOf(o[s++]),\"0123\".includes(t))&&s<l&&y(o[s])&&(r=8*r+\"01234567\".indexOf(o[s++])),n+=String.fromCharCode(r)):n+=t}else{if(T(t.charCodeAt(0)))break;n+=t}}return\"\"!==i&&C({},c,p),{type:8,value:n,octal:a,start:e,end:s}}function Z(e,t){let r=e;t.includes(\"u\")&&(r=r.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g,(e,t)=>{if(parseInt(t,16)<=1114111)return\"x\";C({},n)}).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\"x\"));try{new RegExp(r)}catch(e){C({},n)}try{return new RegExp(e,t)}catch(e){return null}}function X(){var e,t,r,n=o[s];for(m(\"/\"===n,\"Regular expression literal must start with a slash\"),e=o[s++],r=t=!1;s<l;)if(e+=n=o[s++],\"\\\\\"===n)T((n=o[s++]).charCodeAt(0))&&C({},d),e+=n;else if(T(n.charCodeAt(0)))C({},d);else if(t)\"]\"===n&&(t=!1);else{if(\"/\"===n){r=!0;break}\"[\"===n&&(t=!0)}return r||C({},d),{value:e.substr(1,e.length-2),literal:e}}function ee(){for(var e,t=\"\",r=\"\";s<l&&b((e=o[s]).charCodeAt(0));)++s,\"\\\\\"===e&&s<l?C({},c,p):(r+=e,t+=e);return 0<=r.search(/[^gimuy]/g)&&C({},n,r),{value:r,literal:t}}function te(){var e,t,r,n;return u=null,V(),e=s,t=X(),r=ee(),n=Z(t.value,r.value),{literal:t.literal+r.literal,value:n,regex:{pattern:t.value,flags:r.value},start:e,end:s}}function re(e){return 3===e.type||4===e.type||1===e.type||5===e.type}function ne(){var e;return V(),l<=s?{type:r,start:s,end:s}:(v(e=o.charCodeAt(s))?$:40===e||41===e||59===e?t:39===e||34===e?Q:46===e?g(o.charCodeAt(s+1))?J:t:g(e)?J:t)()}function S(){var e=u;return s=e.end,u=ne(),s=e.end,e}function ae(){var e=s;u=ne(),s=e}function ie(e){var t=new a(\"ArrayExpression\");return t.elements=e,t}function oe(e,t,r){var n=new a(\"||\"===e||\"&&\"===e?\"LogicalExpression\":\"BinaryExpression\");return n.operator=e,n.left=t,n.right=r,n}function se(e,t){var r=new a(\"CallExpression\");return r.callee=e,r.arguments=t,r}function le(e,t,r){var n=new a(F);return n.test=e,n.consequent=t,n.alternate=r,n}function A(e){var t=new a(U);return t.name=e,t}function O(e){var t=new a(\"Literal\");return t.value=e.value,t.raw=o.slice(e.start,e.end),e.regex&&(\"//\"===t.raw&&(t.raw=\"/(?:)/\"),t.regex=e.regex),t}function ce(e,t,r){var n=new a(\"MemberExpression\");return n.computed=\"[\"===e,n.object=t,n.property=r,n.computed||(r.member=!0),n}function ue(e){var t=new a(\"ObjectExpression\");return t.properties=e,t}function de(e,t,r){var n=new a(\"Property\");return n.key=t,n.value=r,n.kind=e,n}function pe(e,t){var r=new a(\"UnaryExpression\");return r.operator=e,r.argument=t,r.prefix=!0,r}function C(e,t){var r=Array.prototype.slice.call(arguments,2),t=t.replace(/%(\\d)/g,(e,t)=>(m(t<r.length,\"Message reference must be in range\"),r[t])),n=new Error(t);throw n.index=s,n.description=t,n}function w(e){e.type===r&&C(e,\"Unexpected end of input\"),6===e.type&&C(e,\"Unexpected number\"),8===e.type&&C(e,\"Unexpected string\"),3===e.type&&C(e,\"Unexpected identifier\"),4===e.type&&C(e,\"Unexpected reserved word\"),C(e,c,e.value)}function k(e){var t=S();t.type===i&&t.value===e||w(t)}function I(e){return u.type===i&&u.value===e}function R(e){return 4===u.type&&u.value===e}function fe(){var e=[];for(s=u.start,k(\"[\");!I(\"]\");)I(\",\")?(S(),e.push(null)):(e.push(M()),I(\"]\")||k(\",\"));return S(),ie(e)}function he(){s=u.start;var e=S();return 8===e.type||6===e.type?(e.octal&&C(e,B),O(e)):A(e.value)}function me(){var e,t;return s=u.start,3===(e=u).type||e.type!==r&&e.type!==i?(t=he(),k(\":\"),de(\"init\",t,M())):void w(e)}function ge(){var e,t,r=[],n={},a=String;for(s=u.start,k(\"{\");!I(\"}\");)t=\"$\"+((e=me()).key.type===U?e.key.name:a(e.key.value)),Object.prototype.hasOwnProperty.call(n,t)?C({},\"Duplicate data property in object literal not allowed in strict mode\"):n[t]=!0,r.push(e),I(\"}\")||k(\",\");return k(\"}\"),ue(r)}function _e(){k(\"(\");var e=P();return k(\")\"),e}const Ve={if:1};function ye(){var e,t,r;if(I(\"(\"))return _e();if(I(\"[\"))return fe();if(I(\"{\"))return ge();if(e=u.type,s=u.start,3===e||Ve[u.value])r=A(S().value);else if(8===e||6===e)u.octal&&C(u,B),r=O(S());else{if(4===e)throw new Error(f);1===e?((t=S()).value=\"true\"===t.value,r=O(t)):5===e?((t=S()).value=null,r=O(t)):I(\"/\")||I(\"/=\")?(r=O(te()),ae()):w(S())}return r}function Te(){var e=[];if(k(\"(\"),!I(\")\"))for(;s<l&&(e.push(M()),!I(\")\"));)k(\",\");return k(\")\"),e}function ve(){s=u.start;var e=S();return re(e)||w(e),A(e.value)}function be(){return k(\".\"),ve()}function Ee(){k(\"[\");var e=P();return k(\"]\"),e}function Se(){for(var e=ye();;)if(I(\".\"))e=ce(\".\",e,be());else if(I(\"(\"))e=se(e,Te());else{if(!I(\"[\"))break;e=ce(\"[\",e,Ee())}return e}function Ae(){var e=Se();if(u.type===i&&(I(\"++\")||I(\"--\")))throw new Error(f);return e}function N(){var e,t;if(u.type!==i&&4!==u.type)t=Ae();else{if(I(\"++\")||I(\"--\"))throw new Error(f);if(I(\"+\")||I(\"-\")||I(\"~\")||I(\"!\"))e=S(),t=N(),t=pe(e.value,t);else{if(R(\"delete\")||R(\"void\")||R(\"typeof\"))throw new Error(f);t=Ae()}}return t}function Oe(e){let t=0;if(e.type!==i&&4!==e.type)return 0;switch(e.value){case\"||\":t=1;break;case\"&&\":t=2;break;case\"|\":t=3;break;case\"^\":t=4;break;case\"&\":t=5;break;case\"==\":case\"!=\":case\"===\":case\"!==\":t=6;break;case\"<\":case\">\":case\"<=\":case\">=\":case\"instanceof\":case\"in\":t=7;break;case\"<<\":case\">>\":case\">>>\":t=8;break;case\"+\":case\"-\":t=9;break;case\"*\":case\"/\":case\"%\":t=11}return t}function Ce(){var e,t,r,n,a,i,o=u,s=N(),l=u,c=Oe(l);if(0===c)return s;for(l.prec=c,S(),e=[o,u],r=[s,l,N()];0<(c=Oe(u));){for(;2<r.length&&c<=r[r.length-2].prec;)n=r.pop(),a=r.pop().value,s=r.pop(),e.pop(),t=oe(a,s,n),r.push(t);(l=S()).prec=c,r.push(l),e.push(u),t=N(),r.push(t)}for(t=r[i=r.length-1],e.pop();1<i;)e.pop(),t=oe(r[i-1].value,r[i-2],t),i-=2;return t}function M(){var e,t=Ce();return I(\"?\")&&(S(),e=M(),k(\":\"),t=le(t,e,M())),t}function P(){var e=M();if(I(\",\"))throw new Error(f);return e}function we(e){s=0,l=(o=e).length,u=null,ae();e=P();if(u.type!==r)throw new Error(\"Unexpect token after expression.\");return e}var ke={NaN:\"NaN\",E:\"Math.E\",LN2:\"Math.LN2\",LN10:\"Math.LN10\",LOG2E:\"Math.LOG2E\",LOG10E:\"Math.LOG10E\",PI:\"Math.PI\",SQRT1_2:\"Math.SQRT1_2\",SQRT2:\"Math.SQRT2\",MIN_VALUE:\"Number.MIN_VALUE\",MAX_VALUE:\"Number.MAX_VALUE\"};function Ie(l){function e(i,o,s){return t=>{{var r=i,n=o,a=s;let e=l(t[0]);return(e=n&&(e=n+\"(\"+e+\")\",0===n.lastIndexOf(\"new \",0))?\"(\"+e+\")\":e)+\".\"+r+(a<0?\"\":0===a?\"()\":\"(\"+t.slice(1).map(l).join(\",\")+\")\")}}}var t=\"new Date\",r=\"String\";return{isNaN:\"Number.isNaN\",isFinite:\"Number.isFinite\",abs:\"Math.abs\",acos:\"Math.acos\",asin:\"Math.asin\",atan:\"Math.atan\",atan2:\"Math.atan2\",ceil:\"Math.ceil\",cos:\"Math.cos\",exp:\"Math.exp\",floor:\"Math.floor\",hypot:\"Math.hypot\",log:\"Math.log\",max:\"Math.max\",min:\"Math.min\",pow:\"Math.pow\",random:\"Math.random\",round:\"Math.round\",sin:\"Math.sin\",sqrt:\"Math.sqrt\",tan:\"Math.tan\",clamp:function(e){e.length<3&&h.error(\"Missing arguments to clamp function.\"),3<e.length&&h.error(\"Too many arguments to clamp function.\");e=e.map(l);return\"Math.max(\"+e[1]+\", Math.min(\"+e[2]+\",\"+e[0]+\"))\"},now:\"Date.now\",utc:\"Date.UTC\",datetime:t,date:e(\"getDate\",t,0),day:e(\"getDay\",t,0),year:e(\"getFullYear\",t,0),month:e(\"getMonth\",t,0),hours:e(\"getHours\",t,0),minutes:e(\"getMinutes\",t,0),seconds:e(\"getSeconds\",t,0),milliseconds:e(\"getMilliseconds\",t,0),time:e(\"getTime\",t,0),timezoneoffset:e(\"getTimezoneOffset\",t,0),utcdate:e(\"getUTCDate\",t,0),utcday:e(\"getUTCDay\",t,0),utcyear:e(\"getUTCFullYear\",t,0),utcmonth:e(\"getUTCMonth\",t,0),utchours:e(\"getUTCHours\",t,0),utcminutes:e(\"getUTCMinutes\",t,0),utcseconds:e(\"getUTCSeconds\",t,0),utcmilliseconds:e(\"getUTCMilliseconds\",t,0),length:e(\"length\",null,-1),parseFloat:\"parseFloat\",parseInt:\"parseInt\",upper:e(\"toUpperCase\",r,0),lower:e(\"toLowerCase\",r,0),substring:e(\"substring\",r),split:e(\"split\",r),trim:e(\"trim\",r,0),regexp:\"RegExp\",test:e(\"test\",\"RegExp\"),if:function(e){e.length<3&&h.error(\"Missing arguments to if function.\"),3<e.length&&h.error(\"Too many arguments to if function.\");e=e.map(l);return\"(\"+e[0]+\"?\"+e[1]+\":\"+e[2]+\")\"}}}function Re(e){var t=e&&e.length-1;return t&&('\"'===e[0]&&'\"'===e[t]||\"'\"===e[0]&&\"'\"===e[t])?e.slice(1,-1):e}function Ne(e){const t=(e=e||{}).allowed?h.toSet(e.allowed):{},r=e.forbidden?h.toSet(e.forbidden):{},n=e.constants||ke,a=(e.functions||Ie)(d),i=e.globalvar,o=e.fieldvar,s=h.isFunction(i)?i:e=>i+`[\"${e}\"]`;let l={},c={},u=0;function d(e){var t;return h.isString(e)?e:(null==(t=p[e.type])&&h.error(\"Unsupported type: \"+e.type),t(e))}const p={Literal:e=>e.raw,Identifier:e=>{e=e.name;return 0<u?e:h.hasOwnProperty(r,e)?h.error(\"Illegal identifier: \"+e):h.hasOwnProperty(n,e)?n[e]:h.hasOwnProperty(t,e)?e:(l[e]=1,s(e))},MemberExpression:e=>{var t=!e.computed,r=d(e.object),e=(t&&(u+=1),d(e.property));return r===o&&(c[Re(e)]=1),t&&--u,r+(t?\".\"+e:\"[\"+e+\"]\")},CallExpression:e=>{\"Identifier\"!==e.callee.type&&h.error(\"Illegal callee type: \"+e.callee.type);var t=e.callee.name,e=e.arguments,r=h.hasOwnProperty(a,t)&&a[t];return r||h.error(\"Unrecognized function: \"+t),h.isFunction(r)?r(e):r+\"(\"+e.map(d).join(\",\")+\")\"},ArrayExpression:e=>\"[\"+e.elements.map(d).join(\",\")+\"]\",BinaryExpression:e=>\"(\"+d(e.left)+\" \"+e.operator+\" \"+d(e.right)+\")\",UnaryExpression:e=>\"(\"+e.operator+d(e.argument)+\")\",ConditionalExpression:e=>\"(\"+d(e.test)+\"?\"+d(e.consequent)+\":\"+d(e.alternate)+\")\",LogicalExpression:e=>\"(\"+d(e.left)+e.operator+d(e.right)+\")\",ObjectExpression:e=>\"{\"+e.properties.map(d).join(\",\")+\"}\",Property:e=>{u+=1;var t=d(e.key);return--u,t+\":\"+d(e.value)}};function f(e){e={code:d(e),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},e}return f.functions=a,f.constants=n,f}e.ASTNode=a,e.ArrayExpression=De,e.BinaryExpression=xe,e.CallExpression=Le,e.ConditionalExpression=Fe,e.Identifier=Pe,e.Literal=x,e.LogicalExpression=Ue,e.MemberExpression=Be,e.ObjectExpression=je,e.Property=Me,e.RawCode=D,e.UnaryExpression=He,e.codegenExpression=Ne,e.constants=ke,e.functions=Ie,e.parseExpression=we}}return e2.exports}var r2,n2,a2={exports:{}};function i2(){if(!r2){r2=1;var e=a2.exports;{var v=HP(),s=t2();function n(e,t){return null==e||null==t?NaN:e<t?-1:t<e?1:t<=e?0:NaN}function t(e,t){return null==e||null==t?NaN:t<e?-1:e<t?1:e<=t?0:NaN}function r(r){let i,o,a;function s(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<0?r=1+a:n=a}while(r<n)}return r}return a=2!==r.length?(i=n,o=(e,t)=>n(r(e),t),(e,t)=>r(e)-t):(i=r===n||r===t?r:l,o=r),{left:s,center:function(e,t,r=0,n=e.length){return n=s(e,t,r,n-1),r<n&&a(e[n-1],t)>-a(e[n],t)?n-1:n},right:function(e,t,r=0,n=e.length){if(r<n){if(0!==i(t,t))return n;do{var a=r+n>>>1;o(e[a],t)<=0?r=1+a:n=a}while(r<n)}return r}}}function l(){return 0}class p extends Set{constructor(e,t=c){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),null!=e)for(const r of e)this.add(r)}has(e){return super.has(a(this,e))}add(e){return super.add(i(this,e))}delete(e){return super.delete(o(this,e))}}function a({_intern:e,_key:t},r){t=t(r);return e.has(t)?e.get(t):r}function i({_intern:e,_key:t},r){t=t(r);return e.has(t)?e.get(t):(e.set(t,r),r)}function o({_intern:e,_key:t},r){t=t(r);return e.has(t)&&(r=e.get(t),e.delete(t)),r}function c(e){return null!==e&&\"object\"==typeof e?e.valueOf():e}function u(e,...t){e=new p(e),t=t.map(L);e:for(const r of e)for(const n of t)if(!n.has(r)){e.delete(r);continue e}return e}function L(e){return e instanceof p?e:new p(e)}function F(...e){var t=new p;for(const r of e)for(const n of r)t.add(n);return t}const h=Symbol(\"vega_selection_getter\");function d(e){return e.getter&&e.getter[h]||(e.getter=v.field(e.field),e.getter[h]=!0),e.getter}const m=\"intersect\",E=\"union\",S=\"vlMulti\",A=\"vlPoint\",O=\"or\",C=\"and\",w=\"_vgsid_\",k=v.field(w),g=\"E\",_=\"R\",y=\"R-E\",T=\"R-LE\",I=\"R-RE\",R=\"index:unit\";function f(e,t){for(var r,n,a=t.fields,i=t.values,o=a.length,s=0;s<o;++s)if(r=d(n=a[s])(e),v.isDate(r)&&(r=v.toNumber(r)),v.isDate(i[s])&&(i[s]=v.toNumber(i[s])),v.isArray(i[s])&&v.isDate(i[s][0])&&(i[s]=i[s].map(v.toNumber)),n.type===g){if(v.isArray(i[s])?i[s].indexOf(r)<0:r!==i[s])return!1}else if(n.type===_){if(!v.inrange(r,i[s]))return!1}else if(n.type===I){if(!v.inrange(r,i[s],!0,!1))return!1}else if(n.type===y){if(!v.inrange(r,i[s],!1,!1))return!1}else if(n.type===T&&!v.inrange(r,i[s],!1,!0))return!1;return!0}function U(e,t,r){for(var n,a,i,o,s,e=this.context.data[e],l=e?e.values.value:[],c=e?e[R]&&e[R].value:void 0,u=r===m,d=l.length,p=0;p<d;++p)if(n=l[p],c&&u){if(-1!==(i=(a=a||{})[o=n.unit]||0)){if(s=f(t,n),a[o]=s?-1:++i,s&&1===c.size)return!0;if(!s&&i===c.get(o).count)return!1}}else if(u^(s=f(t,n)))return s;return d&&u}const N=r(k),M=N.left,P=N.right;function B(e,t,r){var e=this.context.data[e],n=e?e.values.value:[],e=e?e[R]&&e[R].value:void 0,r=r===m,t=k(t),a=M(n,t);if(a===n.length)return!1;if(k(n[a])!==t)return!1;if(e&&r){if(1===e.size)return!0;if(P(n,t)-a<e.size)return!1}return!0}function j(e,r){return e.map(t=>v.extend(r.fields?{values:r.fields.map(e=>d(e)(t.datum))}:{[w]:k(t.datum)},r))}function H(e,n,t,r){for(var a,i,o,s,l,c,u,d,p,f,e=this.context.data[e],h=e?e.values.value:[],m={},g={},_={},y=h.length,T=0;T<y;++T)if(o=(l=h[T]).unit,a=l.fields,i=l.values,a&&i){for(p=0,f=a.length;p<f;++p)s=a[p],u=(c=m[s.field]||(m[s.field]={}))[o]||(c[o]=[]),_[s.field]=d=s.type.charAt(0),d=b[d+\"_union\"],c[o]=d(u,v.array(i[p]));t&&(u=g[o]||(g[o]=[])).push(v.array(i).reduce((e,t,r)=>(e[a[r].field]=t,e),{}))}else s=w,l=k(l),(u=(c=m[s]||(m[s]={}))[o]||(c[o]=[])).push(l),t&&(u=g[o]||(g[o]=[])).push({[w]:l});return n=n||E,m[w]?m[w]=b[w+\"_\"+n](...Object.values(m[w])):Object.keys(m).forEach(r=>{m[r]=Object.keys(m[r]).map(e=>m[r][e]).reduce((e,t)=>void 0===e?t:b[_[r]+\"_\"+n](e,t))}),h=Object.keys(g),t&&h.length&&(e=r?A:S,m[e]=n===E?{[O]:h.reduce((e,t)=>(e.push(...g[t]),e),[])}:{[C]:h.map(e=>({[O]:g[e]}))}),m}var b={[w+\"_union\"]:F,[w+\"_intersect\"]:u,E_union:function(e,t){if(!e.length)return t;for(var r=0,n=t.length;r<n;++r)e.indexOf(t[r])<0&&e.push(t[r]);return e},E_intersect:function(e,t){return e.length?e.filter(e=>0<=t.indexOf(e)):t},R_union:function(e,t){var r=v.toNumber(t[0]),n=v.toNumber(t[1]);return n<r&&(r=t[1],n=t[0]),e.length?(e[0]>r&&(e[0]=r),e[1]<n&&(e[1]=n),e):[r,n]},R_intersect:function(e,t){var r=v.toNumber(t[0]),n=v.toNumber(t[1]);return n<r&&(r=t[1],n=t[0]),e.length?n<e[0]||e[1]<r?[]:(e[0]<r&&(e[0]=r),e[1]>n&&(e[1]=n),e):[r,n]}};const D=\":\",x=\"@\";function G(e,t,r,n){t[0].type!==s.Literal&&v.error(\"First argument to selection functions must be a string literal.\");var a=t[0].value,t=2<=t.length&&v.peek(t).value,i=x+\"unit\",o=D+a;t!==m||v.hasOwnProperty(n,i)||(n[i]=r.getData(a).indataRef(r,\"unit\")),v.hasOwnProperty(n,o)||(n[o]=r.getData(a).tuplesRef())}e.selectionIdTest=B,e.selectionResolve=H,e.selectionTest=U,e.selectionTuples=j,e.selectionVisitor=G}}return a2.exports}function o2(){if(!n2){n2=1;var e=XD.exports;{var f=HP(),o=t2(),L=yD(),F=rD(),U=TD(),t=i2(),r=sD(),n=XP();function B(e){e=this.context.data[e];return e?e.values.value:[]}function j(e,t,r){e=this.context.data[e][\"index:\"+t],t=e?e.value.get(r):void 0;return t&&t.count}function H(e,t){var r=this.context.dataflow,e=this.context.data[e].input;return r.pulse(e,r.changeset().remove(f.truthy).insert(t)),1}function G(e,t,r){var n,a;return e&&(n=this.context.dataflow,a=e.mark.source,n.pulse(a,n.changeset().encode(e,t))),void 0!==r?r:e}const rn=n=>function(e,t){var r=this.context.dataflow.locale();return null===e?\"null\":r[n](t)(e)},nn=rn(\"format\"),an=rn(\"timeFormat\"),on=rn(\"utcFormat\"),sn=rn(\"timeParse\"),ln=rn(\"utcParse\"),cn=new Date(2e3,0,1);function V(e,t,r){return Number.isInteger(e)&&Number.isInteger(t)?(cn.setYear(2e3),cn.setMonth(e),cn.setDate(t),an.call(this,cn,r)):\"\"}function q(e){return V.call(this,e,1,\"%B\")}function z(e){return V.call(this,e,1,\"%b\")}function W(e){return V.call(this,0,2+e,\"%A\")}function $(e){return V.call(this,0,2+e,\"%a\")}const un=\":\",dn=\"@\",pn=\"%\",fn=\"$\";function K(e,t,r,n){t[0].type!==o.Literal&&f.error(\"First argument to data functions must be a string literal.\");var t=t[0].value,a=un+t;if(!f.hasOwnProperty(a,n))try{n[a]=r.getData(t).tuplesRef()}catch(e){}}function Y(e,t,r,n){t[0].type!==o.Literal&&f.error(\"First argument to indata must be a string literal.\"),t[1].type!==o.Literal&&f.error(\"Second argument to indata must be a string literal.\");var a=t[0].value,t=t[1].value,i=dn+t;f.hasOwnProperty(i,n)||(n[i]=r.getData(a).indataRef(r,t))}function a(e,t,r,n){if(t[0].type===o.Literal)J(r,n,t[0].value);else for(e in r.scales)J(r,n,e)}function J(e,t,r){var n=pn+r;if(!f.hasOwnProperty(t,n))try{t[n]=e.scaleRef(r)}catch(e){}}function u(e,t){return f.isFunction(e)?e:f.isString(e)&&(t=t.scales[e])&&L.isRegisteredScale(t.value)?t.value:void 0}function Q(t,e,r){e.__bandwidth=e=>e&&e.bandwidth?e.bandwidth():0,r._bandwidth=a,r._range=a,r._scale=a;const n=e=>\"_[\"+(e.type===o.Literal?f.stringValue(pn+e.value):f.stringValue(pn)+\"+\"+t(e))+\"]\";return{_bandwidth:e=>`this.__bandwidth(${n(e[0])})`,_range:e=>n(e[0])+\".range()\",_scale:e=>`${n(e[0])}(${t(e[1])})`}}class x{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){var r=this._partials;let n=0;for(let e=0;e<this._n&&e<32;e++){var a=r[e],i=t+a,a=Math.abs(t)<Math.abs(a)?t-(i-a):a-(i-t);a&&(r[n++]=a),t=i}return r[n]=t,this._n=n+1,this}valueOf(){var e=this._partials;let t=this._n,r,n,a,i=0;if(0<t){for(i=e[--t];0<t&&(r=i,n=e[--t],i=r+n,!(a=n-(i-r))););0<t&&(a<0&&e[t-1]<0||0<a&&0<e[t-1])&&(n=2*a,r=i+n,n==r-i)&&(i=r)}return i}}function Z(e,t,r){e=+e,t=+t,r=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+r;for(var n=-1,a=0|Math.max(0,Math.ceil((t-e)/r)),i=new Array(a);++n<a;)i[n]=e+n*r;return i}var X=1e-6,ee=1e-12,te=(C=Math.PI)/2,re=C/4,ne=2*C,ae=180/C,l=C/180,ie=Math.abs,oe=Math.atan2,c=Math.cos,se=Math.hypot,d=Math.sin,le=Math.sqrt;function ce(e){return 1<e?te:e<-1?-te:Math.asin(e)}function ue(){}function de(e,t){e&&fe.hasOwnProperty(e.type)&&fe[e.type](e,t)}var pe={Feature:function(e,t){de(e.geometry,t)},FeatureCollection:function(e,t){for(var r=e.features,n=-1,a=r.length;++n<a;)de(r[n].geometry,t)}},fe={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)e=r[n],t.point(e[0],e[1],e[2])},LineString:function(e,t){he(e.coordinates,t,0)},MultiLineString:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)he(r[n],t,0)},Polygon:function(e,t){me(e.coordinates,t)},MultiPolygon:function(e,t){for(var r=e.coordinates,n=-1,a=r.length;++n<a;)me(r[n],t)},GeometryCollection:function(e,t){for(var r=e.geometries,n=-1,a=r.length;++n<a;)de(r[n],t)}};function he(e,t,r){var n,a=-1,i=e.length-r;for(t.lineStart();++a<i;)n=e[a],t.point(n[0],n[1],n[2]);t.lineEnd()}function me(e,t){var r=-1,n=e.length;for(t.polygonStart();++r<n;)he(e[r],t,1);t.polygonEnd()}function ge(e,t){e&&pe.hasOwnProperty(e.type)?pe[e.type](e,t):de(e,t)}var _e,ye,Te,ve,be,p,h,m,g,_,Ee,Se,Ae,Oe,y,T,Ce=new x,we=new x,i={point:ue,lineStart:ue,lineEnd:ue,polygonStart:function(){Ce=new x,i.lineStart=ke,i.lineEnd=Ie},polygonEnd:function(){var e=+Ce;we.add(e<0?ne+e:e),this.lineStart=this.lineEnd=this.point=ue},sphere:function(){we.add(ne)}};function ke(){i.point=Re}function Ie(){Ne(_e,ye)}function Re(e,t){i.point=Ne,_e=e,ye=t,Te=e*=l,ve=c(t=(t*=l)/2+re),be=d(t)}function Ne(e,t){var r=(e*=l)-Te,n=0<=r?1:-1,r=n*r,a=c(t=(t*=l)/2+re),t=d(t),i=be*t,o=ve*a+i*c(r),i=i*n*d(r);Ce.add(oe(i,o)),Te=e,ve=a,be=t}function Me(e){return we=new x,ge(e,i),2*we}function Pe(e){return[oe(e[1],e[0]),ce(e[2])]}function De(e){var t=e[0],e=e[1],r=c(e);return[r*c(t),r*d(t),d(e)]}function xe(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function Le(e){var t=le(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var Fe,Ue,Be,je,He,Ge,Ve,qe,ze,We,$e,Ke,Ye,v,b,E,S={point:Je,lineStart:Ze,lineEnd:Xe,polygonStart:function(){S.point=et,S.lineStart=tt,S.lineEnd=rt,Oe=new x,i.polygonStart()},polygonEnd:function(){i.polygonEnd(),S.point=Je,S.lineStart=Ze,S.lineEnd=Xe,Ce<0?(p=-(m=180),h=-(g=90)):X<Oe?g=90:Oe<-X&&(h=-90),T[0]=p,T[1]=m},sphere:function(){p=-(m=180),h=-(g=90)}};function Je(e,t){y.push(T=[p=e,m=e]),t<h&&(h=t),g<t&&(g=t)}function Qe(e,t){var r,n,a,i,o,s=De([e*l,t*l]);Ae?(r=xe(Ae,s),Le(r=xe([r[1],-r[0],0],r)),r=Pe(r),o=e-_,a=r[0]*ae*(n=0<o?1:-1),(o=180<ie(o))^(n*_<a&&a<n*e)?(i=r[1]*ae,g<i&&(g=i)):o^(n*_<(a=(360+a)%360-180)&&a<n*e)?(i=-r[1]*ae)<h&&(h=i):(t<h&&(h=t),g<t&&(g=t)),o?e<_?A(p,e)>A(p,m)&&(m=e):A(e,m)>A(p,m)&&(p=e):p<=m?(e<p&&(p=e),m<e&&(m=e)):_<e?A(p,e)>A(p,m)&&(m=e):A(e,m)>A(p,m)&&(p=e)):y.push(T=[p=e,m=e]),t<h&&(h=t),g<t&&(g=t),Ae=s,_=e}function Ze(){S.point=Qe}function Xe(){T[0]=p,T[1]=m,S.point=Je,Ae=null}function et(e,t){var r;Ae?(r=e-_,Oe.add(180<ie(r)?r+(0<r?360:-360):r)):(Ee=e,Se=t),i.point(e,t),Qe(e,t)}function tt(){i.lineStart()}function rt(){et(Ee,Se),i.lineEnd(),ie(Oe)>X&&(p=-(m=180)),T[0]=p,T[1]=m,Ae=null}function A(e,t){return(t-=e)<0?t+360:t}function nt(e,t){return e[0]-t[0]}function at(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}function it(e){var t,r,n,a,i,o,s;if(g=m=-(p=h=1/0),y=[],ge(e,S),r=y.length){for(y.sort(nt),t=1,i=[n=y[0]];t<r;++t)at(n,(a=y[t])[0])||at(n,a[1])?(A(n[0],a[1])>A(n[0],n[1])&&(n[1]=a[1]),A(a[0],n[1])>A(n[0],n[1])&&(n[0]=a[0])):i.push(n=a);for(o=-1/0,t=0,n=i[r=i.length-1];t<=r;n=a,++t)(s=A(n[1],(a=i[t])[0]))>o&&(o=s,p=a[0],m=n[1])}return y=T=null,p===1/0||h===1/0?[[NaN,NaN],[NaN,NaN]]:[[p,h],[m,g]]}var s={sphere:ue,point:ot,lineStart:lt,lineEnd:dt,polygonStart:function(){s.lineStart=pt,s.lineEnd=ft},polygonEnd:function(){s.lineStart=lt,s.lineEnd=dt}};function ot(e,t){e*=l;var r=c(t*=l);st(r*c(e),r*d(e),d(t))}function st(e,t,r){Be+=(e-Be)/++Fe,je+=(t-je)/Fe,He+=(r-He)/Fe}function lt(){s.point=ct}function ct(e,t){e*=l;var r=c(t*=l);v=r*c(e),b=r*d(e),E=d(t),s.point=ut,st(v,b,E)}function ut(e,t){e*=l;var r=c(t*=l),n=r*c(e),r=r*d(e),e=d(t),t=oe(le((t=b*e-E*r)*t+(t=E*n-v*e)*t+(t=v*r-b*n)*t),v*n+b*r+E*e);Ue+=t,Ge+=t*(v+(v=n)),Ve+=t*(b+(b=r)),qe+=t*(E+(E=e)),st(v,b,E)}function dt(){s.point=ot}function pt(){s.point=ht}function ft(){mt(Ke,Ye),s.point=ot}function ht(e,t){Ke=e,Ye=t,e*=l,t*=l,s.point=mt;var r=c(t);v=r*c(e),b=r*d(e),E=d(t),st(v,b,E)}function mt(e,t){e*=l;var r=c(t*=l),n=r*c(e),r=r*d(e),e=d(t),t=b*e-E*r,a=E*n-v*e,i=v*r-b*n,o=se(t,a,i),s=ce(o),o=o&&-s/o;ze.add(o*t),We.add(o*a),$e.add(o*i),Ue+=s,Ge+=s*(v+(v=n)),Ve+=s*(b+(b=r)),qe+=s*(E+(E=e)),st(v,b,E)}function gt(e){Fe=Ue=Be=je=He=Ge=Ve=qe=0,ze=new x,We=new x,$e=new x,ge(e,s);var e=+ze,t=+We,r=+$e,n=se(e,t,r);return n<ee&&(e=Ge,t=Ve,r=qe,Ue<X&&(e=Be,t=je,r=He),(n=se(e,t,r))<ee)?[NaN,NaN]:[oe(t,e)*ae,ce(r/n)*ae]}function _t(n,a){return function(e,t,r){return e?(e=u(e,(r||this).context))&&e.path[n](t):a(t)}}var yt=_t(\"area\",Me),Tt=_t(\"bounds\",it),vt=_t(\"centroid\",gt);function bt(e,t){e=u(e,(t||this).context);return e&&e.scale()}function Et(e){var t=this.context.group;let r=!1;if(t)for(;e;){if(e===t){r=!0;break}e=e.mark.group}return r}function St(t,e,r){try{t[e].apply(t,[\"EXPRESSION\"].concat([].slice.call(r)))}catch(e){t.warn(e)}return r[r.length-1]}function At(){return St(this.context.dataflow,\"warn\",arguments)}function Ot(){return St(this.context.dataflow,\"info\",arguments)}function Ct(){return St(this.context.dataflow,\"debug\",arguments)}function wt(e,t,r){(e.prototype=t.prototype=r).constructor=e}function kt(e,t){var r,n=Object.create(e.prototype);for(r in t)n[r]=t[r];return n}function O(){}var C=\"\\\\s*([+-]?\\\\d+)\\\\s*\",It=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",w=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",Rt=/^#([0-9a-f]{3,8})$/,Nt=new RegExp(`^rgb\\\\(${C},${C},${C}\\\\)$`),Mt=new RegExp(`^rgb\\\\(${w},${w},${w}\\\\)$`),Pt=new RegExp(`^rgba\\\\(${C},${C},${C},${It}\\\\)$`),Dt=new RegExp(`^rgba\\\\(${w},${w},${w},${It}\\\\)$`),xt=new RegExp(`^hsl\\\\(${It},${w},${w}\\\\)$`),Lt=new RegExp(`^hsla\\\\(${It},${w},${w},${It}\\\\)$`),Ft={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ut(){return this.rgb().formatHex()}function Bt(){return this.rgb().formatHex8()}function jt(){return Zt(this).formatHsl()}function Ht(){return this.rgb().formatRgb()}function Gt(e){var t,r;return e=(e+\"\").trim().toLowerCase(),(t=Rt.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?Vt(t):3===r?new k(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?qt(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?qt(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Nt.exec(e))?new k(t[1],t[2],t[3],1):(t=Mt.exec(e))?new k(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Pt.exec(e))?qt(t[1],t[2],t[3],t[4]):(t=Dt.exec(e))?qt(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=xt.exec(e))?Qt(t[1],t[2]/100,t[3]/100,1):(t=Lt.exec(e))?Qt(t[1],t[2]/100,t[3]/100,t[4]):Ft.hasOwnProperty(e)?Vt(Ft[e]):\"transparent\"===e?new k(NaN,NaN,NaN,0):null}function Vt(e){return new k(e>>16&255,e>>8&255,255&e,1)}function qt(e,t,r,n){return new k(e=n<=0?t=r=NaN:e,t,r,n)}function zt(e){return(e=e instanceof O?e:Gt(e))?new k((e=e.rgb()).r,e.g,e.b,e.opacity):new k}function Wt(e,t,r,n){return 1===arguments.length?zt(e):new k(e,t,r,null==n?1:n)}function k(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function $t(){return\"#\"+R(this.r)+R(this.g)+R(this.b)}function Kt(){return\"#\"+R(this.r)+R(this.g)+R(this.b)+R(255*(isNaN(this.opacity)?1:this.opacity))}function Yt(){var e=Jt(this.opacity);return(1===e?\"rgb(\":\"rgba(\")+I(this.r)+`, ${I(this.g)}, `+I(this.b)+(1===e?\")\":`, ${e})`)}function Jt(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function I(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function R(e){return((e=I(e))<16?\"0\":\"\")+e.toString(16)}function Qt(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||1<=r?e=t=NaN:t<=0&&(e=NaN),new N(e,t,r,n)}function Zt(e){var t,r,n,a,i,o,s,l;return e instanceof N?new N(e.h,e.s,e.l,e.opacity):(e=e instanceof O?e:Gt(e))?e instanceof N?e:(t=(e=e.rgb()).r/255,r=e.g/255,n=e.b/255,a=Math.min(t,r,n),o=NaN,l=((i=Math.max(t,r,n))+a)/2,(s=i-a)?(o=t===i?(r-n)/s+6*(r<n):r===i?(n-t)/s+2:(t-r)/s+4,s/=l<.5?i+a:2-i-a,o*=60):s=0<l&&l<1?0:o,new N(o,s,l,e.opacity)):new N}function Xt(e,t,r,n){return 1===arguments.length?Zt(e):new N(e,t,r,null==n?1:n)}function N(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function er(e){return(e=(e||0)%360)<0?e+360:e}function tr(e){return Math.max(0,Math.min(1,e||0))}function rr(e,t,r){return 255*(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)}wt(O,Gt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Ut,formatHex:Ut,formatHex8:Bt,formatHsl:jt,formatRgb:Ht,toString:Ht}),wt(k,Wt,kt(O,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new k(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new k(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new k(I(this.r),I(this.g),I(this.b),Jt(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$t,formatHex:$t,formatHex8:Kt,formatRgb:Yt,toString:Yt})),wt(N,Xt,kt(O,{brighter(e){return e=null==e?1/.7:Math.pow(1/.7,e),new N(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new N(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,t=r+(r<.5?r:1-r)*t,r=2*r-t;return new k(rr(240<=e?e-240:120+e,r,t),rr(e,r,t),rr(e<120?240+e:e-120,r,t),this.opacity)},clamp(){return new N(er(this.h),tr(this.s),tr(this.l),Jt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){var e=Jt(this.opacity);return(1===e?\"hsl(\":\"hsla(\")+er(this.h)+`, ${100*tr(this.s)}%, ${100*tr(this.l)}%`+(1===e?\")\":`, ${e})`)}}));const hn=Math.PI/180,mn=180/Math.PI,gn=.96422,_n=1,yn=.82521,Tn=4/29,vn=6/29,bn=3*vn*vn,En=vn*vn*vn;function nr(e){var t,r,n,a,i,o;return e instanceof M?new M(e.l,e.a,e.b,e.opacity):e instanceof P?dr(e):(a=ir((.2225045*(t=lr((e=e instanceof k?e:zt(e)).r))+.7168786*(r=lr(e.g))+.0606169*(n=lr(e.b)))/_n),t===r&&r===n?i=o=a:(i=ir((.4360747*t+.3850649*r+.1430804*n)/gn),o=ir((.0139322*t+.0971045*r+.7141733*n)/yn)),new M(116*a-16,500*(i-a),200*(a-o),e.opacity))}function ar(e,t,r,n){return 1===arguments.length?nr(e):new M(e,t,r,null==n?1:n)}function M(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function ir(e){return e>En?Math.pow(e,1/3):e/bn+Tn}function or(e){return e>vn?e*e*e:bn*(e-Tn)}function sr(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function lr(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function cr(e){var t;return e instanceof P?new P(e.h,e.c,e.l,e.opacity):0===(e=e instanceof M?e:nr(e)).a&&0===e.b?new P(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity):new P((t=Math.atan2(e.b,e.a)*mn)<0?360+t:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ur(e,t,r,n){return 1===arguments.length?cr(e):new P(e,t,r,null==n?1:n)}function P(e,t,r,n){this.h=+e,this.c=+t,this.l=+r,this.opacity=+n}function dr(e){var t;return isNaN(e.h)?new M(e.l,0,0,e.opacity):(t=e.h*hn,new M(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity))}function pr(e){e/=255;return e<=.03928?e/12.92:Math.pow((.055+e)/1.055,2.4)}function fr(e){e=Wt(e);return.2126*pr(e.r)+.7152*pr(e.g)+.0722*pr(e.b)}function hr(e,t){e=fr(e),t=fr(t);return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}function mr(){var e=[].slice.call(arguments);return e.unshift({}),f.extend(...e)}function gr(e,t){return e===t||e!=e&&t!=t||(f.isArray(e)?f.isArray(t)&&e.length===t.length&&_r(e,t):f.isObject(e)&&f.isObject(t)&&yr(e,t))}function _r(r,n){for(let e=0,t=r.length;e<t;++e)if(!gr(r[e],n[e]))return!1;return!0}function yr(e,t){for(const r in e)if(!gr(e[r],t[r]))return!1;return!0}function Tr(t){return e=>yr(t,e)}function vr(e,t,r,n,a,i){const o=this.context.dataflow,s=this.context.data[e],l=s.input,c=o.stamp();let u=s.changes,d,p;if(!1===o._trigger||!(l.value.length||t||n))return 0;if((!u||u.stamp<c)&&(s.changes=u=o.changeset(),u.stamp=c,o.runAfter(()=>{s.modified=!0,o.pulse(l,u).run()},!0,1)),r&&(d=!0===r?f.truthy:f.isArray(r)||F.isTuple(r)?r:Tr(r),u.remove(d)),t&&u.insert(t),n&&(d=Tr(n),l.value.some(d)?u.remove(d):u.insert(n)),a)for(p in i)u.modify(a,p,i[p]);return 1}function br(e){var e=e.touches,t=e[0].clientX-e[1].clientX,e=e[0].clientY-e[1].clientY;return Math.hypot(t,e)}function Er(e){e=e.touches;return Math.atan2(e[0].clientY-e[1].clientY,e[0].clientX-e[1].clientX)}wt(M,ar,kt(O,{brighter(e){return new M(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker(e){return new M(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return new k(sr(3.1338561*(t=gn*or(t))-1.6168667*(e=_n*or(e))-.4906146*(r=yn*or(r))),sr(-.9787684*t+1.9161415*e+.033454*r),sr(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}})),wt(P,ur,kt(O,{brighter(e){return new P(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker(e){return new P(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb(){return dr(this).rgb()}}));const Sn={};function Sr(e,t){t=Sn[t]||(Sn[t]=f.field(t));return f.isArray(e)?e.map(t):t(e)}function Ar(e){return f.isArray(e)||ArrayBuffer.isView(e)?e:null}function Or(e){return Ar(e)||(f.isString(e)?e:null)}function Cr(e,...t){return Ar(e).join(...t)}function wr(e,...t){return Or(e).indexOf(...t)}function kr(e,...t){return Or(e).lastIndexOf(...t)}function Ir(e,...t){return Or(e).slice(...t)}function Rr(e,t,r){return f.isFunction(r)&&f.error(\"Function argument passed to replace.\"),String(e).replace(t,r)}function Nr(e){return Ar(e).slice().reverse()}function Mr(e,t,r){return L.bandSpace(e||0,t||0,r||0)}function Pr(e,t){e=u(e,(t||this).context);return e&&e.bandwidth?e.bandwidth():0}function Dr(e,t){e=u(e,(t||this).context);return e?e.copy():void 0}function xr(e,t){e=u(e,(t||this).context);return e?e.domain():[]}function Lr(e,t,r){e=u(e,(r||this).context);return e?(f.isArray(t)?e.invertRange||e.invert:e.invert||e.invertExtent)(t):void 0}function Fr(e,t){e=u(e,(t||this).context);return e&&e.range?e.range():[]}function Ur(e,t,r){e=u(e,(r||this).context);return e?e(t):void 0}function Br(t,e,r,n,a){t=u(t,(a||this).context);const i=U.Gradient(e,r);let o=t.domain(),s=o[0],l=f.peek(o),c=f.identity;return l-s?c=L.scaleFraction(t,s,l):t=(t.interpolator?L.scale(\"sequential\")().interpolator(t.interpolator()):L.scale(\"linear\")().interpolate(t.interpolate()).range(t.range())).domain([s=0,l=1]),t.ticks&&(o=t.ticks(+n||15),s!==o[0]&&o.unshift(s),l!==f.peek(o))&&o.push(l),o.forEach(e=>i.stop(c(e),t(e))),i}function jr(e,t,r){const n=u(e,(r||this).context);return function(e){return n?n.path.context(e)(t):\"\"}}function Hr(t){let r=null;return function(e){return e?U.pathRender(e,r=r||U.pathParse(t)):t}}const An=e=>e.data;function Gr(e,t){t=B.call(t,e);return t.root&&t.root.lookup||{}}function Vr(e,t,r){e=Gr(e,this),t=e[t],e=e[r];return t&&e?t.path(e).map(An):void 0}function qr(e,t){e=Gr(e,this)[t];return e?e.ancestors().map(An):void 0}const On=()=>\"undefined\"!=typeof window&&window||null;function zr(){var e=On();return e?e.screen:{}}function Wr(){var e=On();return e?[e.innerWidth,e.innerHeight]:[void 0,void 0]}function $r(){var e=this.context.dataflow,e=e.container&&e.container();return e?[e.clientWidth,e.clientHeight]:[void 0,void 0]}function Kr(e,t,r){var n;return e?([e,n]=e,e=(new U.Bounds).set(e[0],e[1],n[0],n[1]),n=r||this.context.dataflow.scenegraph().root,U.intersect(n,e,Yr(t))):[]}function Yr(e){let t=null;if(e){const r=f.array(e.marktype),n=f.array(e.markname);t=t=>(!r.length||r.some(e=>t.marktype===e))&&(!n.length||n.some(e=>t.name===e))}return t}function Jr(e,t,r,n=5){var a=(e=f.array(e))[e.length-1];return void 0===a||Math.hypot(a[0]-t,a[1]-r)>n?[...e,[t,r]]:e}function Qr(a){return f.array(a).reduce((e,[t,r],n)=>e+(0==n?`M ${t},${r} `:n===a.length-1?\" Z\":`L ${t},${r} `),\"\")}function Zr(e,t,r){var n,a,{x:r,y:i,mark:o}=r,s=(new U.Bounds).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for([n,a]of t)n<s.x1&&(s.x1=n),n>s.x2&&(s.x2=n),a<s.y1&&(s.y1=a),a>s.y2&&(s.y2=a);return s.translate(r,i),Kr([[s.x1,s.y1],[s.x2,s.y2]],e,o).filter(e=>Xr(e.x,e.y,t))}function Xr(r,n,a){let i=0;for(let e=0,t=a.length-1;e<a.length;t=e++){var[o,s]=a[t],[l,c]=a[e];n<c!=n<s&&r<(o-l)*(n-c)/(s-c)+l&&i++}return 1&i}const Cn={random(){return r.random()},cumulativeNormal:r.cumulativeNormal,cumulativeLogNormal:r.cumulativeLogNormal,cumulativeUniform:r.cumulativeUniform,densityNormal:r.densityNormal,densityLogNormal:r.densityLogNormal,densityUniform:r.densityUniform,quantileNormal:r.quantileNormal,quantileLogNormal:r.quantileLogNormal,quantileUniform:r.quantileUniform,sampleNormal:r.sampleNormal,sampleLogNormal:r.sampleLogNormal,sampleUniform:r.sampleUniform,isArray:f.isArray,isBoolean:f.isBoolean,isDate:f.isDate,isDefined(e){return void 0!==e},isNumber:f.isNumber,isObject:f.isObject,isRegExp:f.isRegExp,isString:f.isString,isTuple:F.isTuple,isValid(e){return null!=e&&e==e},toBoolean:f.toBoolean,toDate(e){return f.toDate(e)},toNumber:f.toNumber,toString:f.toString,indexof:wr,join:Cr,lastindexof:kr,replace:Rr,reverse:Nr,slice:Ir,flush:f.flush,lerp:f.lerp,merge:mr,pad:f.pad,peek:f.peek,pluck:Sr,span:f.span,inrange:f.inrange,truncate:f.truncate,rgb:Wt,lab:ar,hcl:ur,hsl:Xt,luminance:fr,contrast:hr,sequence:Z,format:nn,utcFormat:on,utcParse:ln,utcOffset:n.utcOffset,utcSequence:n.utcSequence,timeFormat:an,timeParse:sn,timeOffset:n.timeOffset,timeSequence:n.timeSequence,timeUnitSpecifier:n.timeUnitSpecifier,monthFormat:q,monthAbbrevFormat:z,dayFormat:W,dayAbbrevFormat:$,quarter:f.quarter,utcquarter:f.utcquarter,week:n.week,utcweek:n.utcweek,dayofyear:n.dayofyear,utcdayofyear:n.utcdayofyear,warn:At,info:Ot,debug:Ct,extent(e){return f.extent(e)},inScope:Et,intersect:Kr,clampRange:f.clampRange,pinchDistance:br,pinchAngle:Er,screen:zr,containerSize:$r,windowSize:Wr,bandspace:Mr,setdata:H,pathShape:Hr,panLinear:f.panLinear,panLog:f.panLog,panPow:f.panPow,panSymlog:f.panSymlog,zoomLinear:f.zoomLinear,zoomLog:f.zoomLog,zoomPow:f.zoomPow,zoomSymlog:f.zoomSymlog,encode:G,modify:vr,lassoAppend:Jr,lassoPath:Qr,intersectLasso:Zr},wn=[\"view\",\"item\",\"group\",\"xy\",\"x\",\"y\"],kn=\"event.vega.\",In=\"this.\",Rn={},Nn={forbidden:[\"_\"],allowed:[\"datum\",\"event\",\"item\"],fieldvar:\"datum\",globalvar:e=>`_[${f.stringValue(fn+e)}]`,functions:en,constants:o.constants,visitors:Rn},Mn=o.codegenExpression(Nn);function en(e){const t=o.functions(e);wn.forEach(e=>t[e]=kn+e);for(const r in Cn)t[r]=In+r;return f.extend(t,Q(e,Cn,Rn)),t}function D(e,t,r){return 1===arguments.length?Cn[e]:(Cn[e]=t,r&&(Rn[e]=r),Mn&&(Mn.functions[e]=In+e),this)}function tn(t,n){const a={};let e;try{t=f.isString(t)?t:f.stringValue(t)+\"\",e=o.parseExpression(t)}catch(e){f.error(\"Expression parse error: \"+t)}e.visit(e=>{var t,r;e.type===o.CallExpression&&(t=e.callee.name,r=Nn.visitors[t])&&r(t,e.arguments,n,a)});t=Mn(e);return t.globals.forEach(e=>{var t=fn+e;!f.hasOwnProperty(a,t)&&n.getSignal(e)&&(a[t]=n.signalRef(e))}),{$expr:f.extend({code:t.code},n.options.ast?{ast:e}:null),$fields:t.fields,$params:a}}D(\"bandwidth\",Pr,a),D(\"copy\",Dr,a),D(\"domain\",xr,a),D(\"range\",Fr,a),D(\"invert\",Lr,a),D(\"scale\",Ur,a),D(\"gradient\",Br,a),D(\"geoArea\",yt,a),D(\"geoBounds\",Tt,a),D(\"geoCentroid\",vt,a),D(\"geoShape\",jr,a),D(\"geoScale\",bt,a),D(\"indata\",j,Y),D(\"data\",B,K),D(\"treePath\",Vr,K),D(\"treeAncestors\",qr,K),D(\"vlSelectionTest\",t.selectionTest,t.selectionVisitor),D(\"vlSelectionIdTest\",t.selectionIdTest,t.selectionVisitor),D(\"vlSelectionResolve\",t.selectionResolve,t.selectionVisitor),D(\"vlSelectionTuples\",t.selectionTuples),e.DataPrefix=un,e.IndexPrefix=dn,e.ScalePrefix=pn,e.SignalPrefix=fn,e.bandspace=Mr,e.bandwidth=Pr,e.codeGenerator=Mn,e.codegenParams=Nn,e.containerSize=$r,e.contrast=hr,e.copy=Dr,e.data=B,e.dataVisitor=K,e.dayAbbrevFormat=$,e.dayFormat=W,e.debug=Ct,e.domain=xr,e.encode=G,e.expressionFunction=D,e.format=nn,e.functionContext=Cn,e.geoArea=yt,e.geoBounds=Tt,e.geoCentroid=vt,e.geoScale=bt,e.geoShape=jr,e.inScope=Et,e.indata=j,e.indataVisitor=Y,e.indexof=wr,e.info=Ot,e.invert=Lr,e.join=Cr,e.lastindexof=kr,e.luminance=fr,e.merge=mr,e.modify=vr,e.monthAbbrevFormat=z,e.monthFormat=q,e.parseExpression=tn,e.pathShape=Hr,e.pinchAngle=Er,e.pinchDistance=br,e.pluck=Sr,e.range=Fr,e.replace=Rr,e.reverse=Nr,e.scale=Ur,e.scaleGradient=Br,e.scaleVisitor=a,e.screen=zr,e.setdata=H,e.slice=Ir,e.timeFormat=an,e.timeParse=sn,e.treeAncestors=qr,e.treePath=Vr,e.utcFormat=on,e.utcParse=ln,e.warn=At,e.windowSize=Wr}}return XD.exports}var s2,l2,c2={exports:{}};function u2(){if(!s2){s2=1;var e=c2.exports;{var o=HP(),a=rD();function t(e){const t=this,r=e.operators||[];return e.background&&(t.background=e.background),e.eventConfig&&(t.eventConfig=e.eventConfig),e.locale&&(t.locale=e.locale),r.forEach(e=>t.parseOperator(e)),r.forEach(e=>t.parseOperatorParameters(e)),(e.streams||[]).forEach(e=>t.parseStream(e)),(e.updates||[]).forEach(e=>t.parseUpdate(e)),t.resolve()}const M=o.toSet([\"rule\"]),P=o.toSet([\"group\",\"image\",\"rect\"]);function s(e,t){let r=\"\";return M[t]||(e.x2&&(e.x?(P[t]&&(r+=\"if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;\"),r+=\"o.width=o.x2-o.x;\"):r+=\"o.x=o.x2-(o.width||0);\"),e.xc&&(r+=\"o.x=o.xc-(o.width||0)/2;\"),e.y2&&(e.y?(P[t]&&(r+=\"if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;\"),r+=\"o.height=o.y2-o.y;\"):r+=\"o.y=o.y2-(o.height||0);\"),e.yc&&(r+=\"o.y=o.yc-(o.height||0)/2;\")),r}function r(e){return(e+\"\").toLowerCase()}function n(e){return\"operator\"===r(e)}function l(e){return\"collect\"===r(e)}function c(e,t,r){r.endsWith(\";\")||(r=\"return(\"+r+\");\");t=Function(...t.concat(r));return e&&e.functions?t.bind(e.functions):t}function u(e,t,r,n){return`((u = ${e}) < (v = ${t}) || u == null) && v != null ? ${r}\n  : (u > v || v == null) && u != null ? ${n}\n  : ((v = v instanceof Date ? +v : v), (u = u instanceof Date ? +u : u)) !== u && v === v ? ${r}\n  : v !== v && u === u ? ${n} : `}var i={operator:(e,t)=>c(e,[\"_\"],t.code),parameter:(e,t)=>c(e,[\"datum\",\"_\"],t.code),event:(e,t)=>c(e,[\"event\"],t.code),handler:(e,t)=>{return c(e,[\"_\",\"event\"],`var datum=event.item&&event.item.datum;return ${t.code};`)},encode:(e,t)=>{var{marktype:t,channels:r}=t;let n=\"var o=item,datum=o.datum,m=0,$;\";for(const i in r){var a=\"o[\"+o.stringValue(i)+\"]\";n+=`$=${r[i].code};if(${a}!==$)${a}=$,m=1;`}return c(e,[\"item\",\"_\"],n=n+s(r,t)+\"return m;\")},codegen:{get(e){var e=`[${e.map(o.stringValue).join(\"][\")}]`,t=Function(\"_\",`return _${e};`);return t.path=e,t},comparator(e,i){let o;e=Function(\"a\",\"b\",\"var u, v; return \"+e.map((e,t)=>{var r=i[t];let n,a;return a=e.path?(n=\"a\"+e.path,\"b\"+e.path):((o=o||{})[\"f\"+t]=e,n=`this.f${t}(a)`,`this.f${t}(b)`),u(n,a,-r,r)}).join(\"\")+\"0;\");return o?e.bind(o):e}}};function d(e){n(e.type)||!e.type?this.operator(e,e.update?this.operatorExpression(e.update):null):this.transform(e,e.type)}function p(e){var t;e.params&&((t=this.get(e.id))||o.error(\"Invalid operator id: \"+e.id),this.dataflow.connect(t,t.parameters(this.parseParameters(e.params),e.react,e.initonly)))}function f(e,t){t=t||{};const r=this;for(const a in e){var n=e[a];t[a]=o.isArray(n)?n.map(e=>h(e,r,t)):h(n,r,t)}return t}function h(n,a,i){if(n&&o.isObject(n))for(let e=0,t=m.length,r;e<t;++e)if(r=m[e],o.hasOwnProperty(n,r.key))return r.parse(n,a,i);return n}var m=[{key:\"$ref\",parse:g},{key:\"$key\",parse:y},{key:\"$expr\",parse:_},{key:\"$field\",parse:T},{key:\"$encode\",parse:b},{key:\"$compare\",parse:v},{key:\"$context\",parse:E},{key:\"$subflow\",parse:S},{key:\"$tupleid\",parse:A}];function g(e,t){return t.get(e.$ref)||o.error(\"Operator not defined: \"+e.$ref)}function _(e,t,r){e.$params&&t.parseParameters(e.$params,r);r=\"e:\"+e.$expr.code;return t.fn[r]||(t.fn[r]=o.accessor(t.parameterExpression(e.$expr),e.$fields))}function y(e,t){var r=\"k:\"+e.$key+\"_\"+!!e.$flat;return t.fn[r]||(t.fn[r]=o.key(e.$key,e.$flat,t.expr.codegen))}function T(e,t){var r;return e.$field?(r=\"f:\"+e.$field+\"_\"+e.$name,t.fn[r]||(t.fn[r]=o.field(e.$field,e.$name,t.expr.codegen))):null}function v(e,t){var r=\"c:\"+e.$compare+\"_\"+e.$order,n=o.array(e.$compare).map(e=>e&&e.$tupleid?a.tupleid:e);return t.fn[r]||(t.fn[r]=o.compare(n,e.$order,t.expr.codegen))}function b(e,t){var r=e.$encode,n={};for(const i in r){var a=r[i];n[i]=o.accessor(t.encodeExpression(a.$expr),a.$fields),n[i].output=a.$output}return n}function E(e,t){return t}function S(e,o){const s=e.$subflow;return function(e,t,r){const n=o.fork().parse(s),a=n.get(s.operators[0].id),i=n.signals.parent;return i&&i.set(r),a.detachSubflow=()=>o.detach(n),a}}function A(){return a.tupleid}function O(e){var t,r=this,n=null!=e.filter?r.eventExpression(e.filter):void 0,a=null!=e.stream?r.get(e.stream):void 0;e.source?a=r.events(e.source,e.type,n):e.merge&&(a=(t=e.merge.map(e=>r.get(e)))[0].merge.apply(t[0],t.slice(1))),e.between&&(t=e.between.map(e=>r.get(e)),a=a.between(t[0],t[1])),e.filter&&(a=a.filter(n)),null!=e.throttle&&(a=a.throttle(+e.throttle)),null==(a=null!=e.debounce?a.debounce(+e.debounce):a)&&o.error(\"Invalid stream definition: \"+JSON.stringify(e)),e.consume&&a.consume(!0),r.stream(e,a)}function C(e){var t,r=o.isObject(r=e.source)?r.$ref:r,r=this.get(r),n=e.update,a=void 0;r||o.error(\"Source not defined: \"+e.source),t=e.target&&e.target.$expr?this.eventExpression(e.target.$expr):this.get(e.target),n&&n.$expr&&(n.$params&&(a=this.parseParameters(n.$params)),n=this.handlerExpression(n.$expr)),this.update(e,r,t,n,a)}const D={skip:!0};function w(r){var n,a,i=this,e={};return r.signals&&(n=e.signals={},Object.keys(i.signals).forEach(e=>{var t=i.signals[e];r.signals(e,t)&&(n[e]=t.value)})),r.data&&(a=e.data={},Object.keys(i.data).forEach(e=>{var t=i.data[e];r.data(e,t)&&(a[e]=t.input.value)})),i.subcontext&&!1!==r.recurse&&(e.subcontext=i.subcontext.map(e=>e.getState(r))),e}function k(e){var r=this,t=r.dataflow,n=e.data,a=e.signals;Object.keys(a||{}).forEach(e=>{t.update(r.signals[e],a[e],D)}),Object.keys(n||{}).forEach(e=>{t.pulse(r.data[e].input,t.changeset().remove(o.truthy).insert(n[e]))}),(e.subcontext||[]).forEach((e,t)=>{t=r.subcontext[t];t&&t.setState(e)})}function I(e,t,r,n){return new R(e,t,r,n)}function R(e,t,r,n){this.dataflow=e,this.transforms=t,this.events=e.events.bind(e),this.expr=n||i,this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},r&&(this.functions=Object.create(r),this.functions.context=this)}function N(e){this.dataflow=e.dataflow,this.transforms=e.transforms,this.events=e.events,this.expr=e.expr,this.signals=Object.create(e.signals),this.scales=Object.create(e.scales),this.nodes=Object.create(e.nodes),this.data=Object.create(e.data),this.fn=Object.create(e.fn),e.functions&&(this.functions=Object.create(e.functions),this.functions.context=this)}R.prototype=N.prototype={fork(){var e=new N(this);return(this.subcontext||(this.subcontext=[])).push(e),e},detach(t){this.subcontext=this.subcontext.filter(e=>e!==t);var e=Object.keys(t.nodes);for(const r of e)t.nodes[r]._targets=null;for(const n of e)t.nodes[n].detach();t.nodes=null},get(e){return this.nodes[e]},set(e,t){return this.nodes[e]=t},add(t,r){const n=this,a=n.dataflow,i=t.value;if(n.set(t.id,r),l(t.type)&&i&&(i.$ingest?a.ingest(r,i.$ingest,i.$format):i.$request?a.preload(r,i.$request,i.$format):a.pulse(r,a.changeset().insert(i))),t.root&&(n.root=r),t.parent){let e=n.get(t.parent.$ref);e?(a.connect(e,[r]),r.targets().add(e)):(n.unresolved=n.unresolved||[]).push(()=>{e=n.get(t.parent.$ref),a.connect(e,[r]),r.targets().add(e)})}if(t.signal&&(n.signals[t.signal]=r),t.scale&&(n.scales[t.scale]=r),t.data)for(const e in t.data){const i=n.data[e]||(n.data[e]={});t.data[e].forEach(e=>i[e]=r)}},resolve(){return(this.unresolved||[]).forEach(e=>e()),delete this.unresolved,this},operator(e,t){this.add(e,this.dataflow.add(e.value,t))},transform(e,t){this.add(e,this.dataflow.add(this.transforms[r(t)]))},stream(e,t){this.set(e.id,t)},update(e,t,r,n,a){this.dataflow.on(t,r,n,a,e.options)},operatorExpression(e){return this.expr.operator(this,e)},parameterExpression(e){return this.expr.parameter(this,e)},eventExpression(e){return this.expr.event(this,e)},handlerExpression(e){return this.expr.handler(this,e)},encodeExpression(e){return this.expr.encode(this,e)},parse:t,parseOperator:d,parseOperatorParameters:p,parseParameters:f,parseStream:O,parseUpdate:C,getState:w,setState:k},e.context=I}}return c2.exports}function d2(){if(!l2){l2=1;var e=ZD.exports;{var o=HP(),c=rD(),l=TD(),F=o2(),U=u2(),B=eD();function j(e){var t=e.container();t&&(t.setAttribute(\"role\",\"graphics-document\"),t.setAttribute(\"aria-roleDescription\",\"visualization\"),r(t,e.description()))}function r(e,t){e&&(null==t?e.removeAttribute(\"aria-label\"):e.setAttribute(\"aria-label\",t))}function H(t){t.add(null,e=>(t._background=e.bg,t._resize=1,e.bg),{bg:t._signals.background})}const D=\"default\";function G(n){const a=n._signals.cursor||(n._signals.cursor=n.add({user:D,item:null}));n.on(n.events(\"view\",\"pointermove\"),a,(e,t)=>{var r=a.value,n=r?o.isString(r)?r:r.user:D,t=t.item&&t.item.cursor||null;return r&&n===r.user&&t==r.item?r:{user:n,item:t}}),n.add(null,function(e){let t=e.cursor,r=this.value;return o.isString(t)||(r=t.item,t=t.user),i(n,(!t||t===D)&&r||t),r},{cursor:a})}function i(e,t){e=e.globalCursor()?\"undefined\"!=typeof document&&document.body:e.container();if(e)return null==t?e.style.removeProperty(\"cursor\"):e.style.cursor=t}function n(e,t){e=e._runtime.data;return o.hasOwnProperty(e,t)||o.error(\"Unrecognized data set: \"+t),e[t]}function V(e,t){return arguments.length<2?n(this,e).values.value:a.call(this,e,c.changeset().remove(o.truthy).insert(t))}function a(e,t){c.isChangeSet(t)||o.error(\"Second argument to changes must be a changeset.\");e=n(this,e);return e.modified=!0,this.pulse(e.input,t)}function q(e,t){return a.call(this,e,c.changeset().insert(t))}function z(e,t){return a.call(this,e,c.changeset().remove(t))}function s(e){var t=e.padding();return Math.max(0,e._viewWidth+t.left+t.right)}function u(e){var t=e.padding();return Math.max(0,e._viewHeight+t.top+t.bottom)}function d(e){var t=e.padding(),e=e._origin;return[t.left+e[0],t.top+e[1]]}function W(t){var e=d(t),r=s(t),n=u(t);t._renderer.background(t.background()),t._renderer.resize(r,n,e),t._handler.origin(e),t._resizeListeners.forEach(e=>{try{e(r,n)}catch(e){t.error(e)}})}function $(e,t,r){var n,a,i=e._renderer,i=i&&i.canvas();return i&&(a=d(e),n=t.changedTouches?t.changedTouches[0]:t,(n=l.point(n,i))[0]-=a[0],n[1]-=a[1]),t.dataflow=e,t.item=r,t.vega=K(e,r,n),t}function K(e,n,r){const a=n?\"group\"===n.mark.marktype?n:n.mark.group:null;function i(e){var t,r=a;if(e)for(t=n;t;t=t.mark.group)if(t.mark.name===e){r=t;break}return r&&r.mark&&r.mark.interactive?r:{}}function t(e){if(!e)return r;o.isString(e)&&(e=i(e));for(var t=r.slice();e;)t[0]-=e.x||0,t[1]-=e.y||0,e=e.mark&&e.mark.group;return t}return{view:o.constant(e),item:o.constant(n||{}),group:i,xy:t,x:e=>t(e)[0],y:e=>t(e)[1]}}const x=\"view\",Xe=\"timer\",et=\"window\",tt={trap:!1};function Y(e){var e=o.extend({defaults:{}},e),t=(t,e)=>{e.forEach(e=>{o.isArray(t[e])&&(t[e]=o.toSet(t[e]))})};return t(e.defaults,[\"prevent\",\"allow\"]),t(e,[\"view\",\"window\",\"selector\"]),e}function p(e,t,r,n){e._eventListeners.push({type:r,sources:o.array(t),handler:n})}function J(e,t){var r=e._eventConfig.defaults,n=r.prevent,r=r.allow;return!1!==n&&!0!==r&&(!0===n||!1===r||(n?n[t]:r?!r[t]:e.preventDefault()))}function f(e,t,r){var n=e._eventConfig&&e._eventConfig[t];if(!1!==n&&(!o.isObject(n)||n[r]))return 1;e.warn(`Blocked ${t} ${r} event listener.`)}function Q(r,n,e){function t(e,t){i.runAsync(null,()=>{r===x&&J(i,n)&&e.preventDefault(),o.receive($(i,e,t))})}var a,i=this,o=new c.EventStream(e);if(r===Xe)f(i,\"timer\",n)&&i.timer(t,n);else if(r===x)f(i,\"view\",n)&&i.addEventListener(n,t,tt);else if(r===et?f(i,\"window\",n)&&\"undefined\"!=typeof window&&(a=[window]):\"undefined\"!=typeof document&&f(i,\"selector\",n)&&(a=Array.from(document.querySelectorAll(r))),a){for(var s=0,l=a.length;s<l;++s)a[s].addEventListener(n,t);p(i,a,n,t)}else i.warn(\"Can not resolve event source: \"+r);return o}function h(e){return e.item}function m(e){return e.item.mark.source}function Z(r){return function(e,t){return t.vega.view().changeset().encode(t.item,r)}}function X(e,t){return t=[t||\"update\",(e=[e||\"hover\"])[0]],this.on(this.events(\"view\",\"pointerover\",h),m,Z(e)),this.on(this.events(\"view\",\"pointerout\",h),m,Z(t)),this}function ee(){for(var e,t,r,n,a=this._tooltip,i=this._timers,o=this._handler.handlers(),s=this._eventListeners,l=i.length;0<=--l;)i[l].stop();for(l=s.length;0<=--l;)for(e=(t=s[l]).sources.length;0<=--e;)t.sources[e].removeEventListener(t.type,t.handler);for(a&&a.call(this,this._handler,null,null,null),l=o.length;0<=--l;)n=o[l].type,r=o[l].handler,this._handler.off(n,r);return this}function g(e,t,r){var n=document.createElement(e);for(const a in t)n.setAttribute(a,t[a]);return null!=r&&(n.textContent=r),n}const rt=Math.sqrt(50),nt=Math.sqrt(10),at=Math.sqrt(2);function te(e,t,r){var n=(t-e)/Math.max(0,r),a=Math.floor(Math.log10(n)),n=n/Math.pow(10,a),n=n>=rt?10:n>=nt?5:n>=at?2:1;let i,o,s;return a<0?(s=Math.pow(10,-a)/n,i=Math.round(e*s),o=Math.round(t*s),i/s<e&&++i,o/s>t&&--o,s=-s):(s=Math.pow(10,a)*n,i=Math.round(e/s),o=Math.round(t/s),i*s<e&&++i,o*s>t&&--o),o<i&&.5<=r&&r<2?te(e,t,2*r):[i,o,s]}function re(e,t,r){return te(e=+e,t=+t,r=+r)[2]}function ne(e,t,r){r=+r;var n=(t=+t)<(e=+e),e=n?re(t,e,r):re(e,t,r);return(n?-1:1)*(e<0?1/-e:e)}const it=\"vega-bind\",ot=\"vega-bind-name\",st=\"vega-bind-radio\";function ae(r,e,n){if(e){const a=n.param;let t=n.state;t||(t=n.state={elements:null,active:!1,set:null,update:e=>{e!=r.signal(a.signal)&&r.runAsync(null,()=>{t.source=!0,r.signal(a.signal,e)})}},a.debounce&&(t.update=o.debounce(a.debounce,t.update))),(null==a.input&&a.element?ie:se)(t,e,a,r),t.active||(r.on(r._signals[a.signal],null,()=>{t.source?t.source=!1:t.set(r.signal(a.signal))}),t.active=!0),t}}function ie(e,t,r,n){const a=r.event||\"input\";var i=()=>e.update(t.value);n.signal(r.signal,t.value),t.addEventListener(a,i),p(n,t,a,i),e.set=e=>{t.value=e,t.dispatchEvent(oe(a))}}function oe(e){return\"undefined\"!=typeof Event?new Event(e):{type:e}}function se(e,t,r,n){var n=n.signal(r.signal),a=g(\"div\",{class:it}),i=\"radio\"===r.input?a:a.appendChild(g(\"label\"));i.appendChild(g(\"span\",{class:ot},r.name||r.signal)),t.appendChild(a);let o=le;switch(r.input){case\"checkbox\":o=ce;break;case\"select\":o=ue;break;case\"radio\":o=de;break;case\"range\":o=pe}o(e,i,r,n)}function le(e,t,r,n){const a=g(\"input\");for(const i in r)\"signal\"!==i&&\"element\"!==i&&a.setAttribute(\"input\"===i?\"type\":i,r[i]);a.setAttribute(\"name\",r.signal),a.value=n,t.appendChild(a),a.addEventListener(\"input\",()=>e.update(a.value)),e.elements=[a],e.set=e=>a.value=e}function ce(e,t,r,n){r={type:\"checkbox\",name:r.signal};n&&(r.checked=!0);const a=g(\"input\",r);t.appendChild(a),a.addEventListener(\"change\",()=>e.update(a.checked)),e.elements=[a],e.set=e=>a.checked=!!e||null}function ue(e,t,n,a){const i=g(\"select\",{name:n.signal}),o=n.labels||[];n.options.forEach((e,t)=>{var r={value:e};_(e,a)&&(r.selected=!0),i.appendChild(g(\"option\",r,(o[t]||e)+\"\"))}),t.appendChild(i),i.addEventListener(\"change\",()=>{e.update(n.options[i.selectedIndex])}),e.elements=[i],e.set=r=>{for(let e=0,t=n.options.length;e<t;++e)if(_(n.options[e],r))return void(i.selectedIndex=e)}}function de(a,e,n,i){const o=g(\"span\",{class:st}),s=n.labels||[];e.appendChild(o),a.elements=n.options.map((e,t)=>{var r={type:\"radio\",name:n.signal,value:e},r=(_(e,i)&&(r.checked=!0),g(\"input\",r)),t=(r.addEventListener(\"change\",()=>a.update(e)),g(\"label\",{},(s[t]||e)+\"\"));return t.prepend(r),o.appendChild(t),r}),a.set=t=>{var r=a.elements,n=r.length;for(let e=0;e<n;++e)_(r[e].value,t)&&(r[e].checked=!0)}}function pe(e,t,r,n){n=void 0!==n?n:(+r.max+ +r.min)/2;var a=null!=r.max?r.max:Math.max(100,+n)||100,i=r.min||Math.min(0,a,+n)||0,o=r.step||ne(i,a,100);const s=g(\"input\",{type:\"range\",name:r.signal,min:i,max:a,step:o}),l=g(\"span\",{},+(s.value=n));t.appendChild(s),t.appendChild(l);r=()=>{l.textContent=s.value,e.update(+s.value)};s.addEventListener(\"input\",r),s.addEventListener(\"change\",r),e.elements=[s],e.set=e=>{s.value=e,l.textContent=e}}function _(e,t){return e===t||e+\"\"==t+\"\"}function fe(e,t,r,n,a,i){return(t=t||new n(e.loader())).initialize(r,s(e),u(e),d(e),a,i).background(e.background())}function y(t,e){return e?function(){try{e.apply(this,arguments)}catch(e){t.error(e)}}:null}function he(e,t,r,n){const a=new n(e.loader(),y(e,e.tooltip())).scene(e.scenegraph().root).initialize(r,d(e),e);return t&&t.handlers().forEach(e=>{a.on(e.type,e.handler)}),a}function me(e,t){const r=this,n=r._renderType,a=r._eventConfig.bind,i=l.renderModule(n);e=r._el=e?T(r,e,!0):null,j(r),i||r.error(\"Unrecognized renderer type: \"+n);var o=i.handler||l.CanvasHandler,s=e?i.renderer:i.headless;return r._renderer=s?fe(r,r._renderer,e,s):null,r._handler=he(r,r._handler,e,o),r._redraw=!0,e&&\"none\"!==a&&(t=t?r._elBind=T(r,t,!0):e.appendChild(g(\"form\",{class:\"vega-bindings\"})),r._bind.forEach(e=>{e.param.element&&\"container\"!==a&&(e.element=T(r,e.param.element,!!e.param.input))}),r._bind.forEach(e=>{ae(r,e.element||t,e)})),r}function T(t,r,e){if(\"string\"==typeof r){if(\"undefined\"==typeof document)return t.error(\"DOM document instance not found.\"),null;if(!(r=document.querySelector(r)))return t.error(\"Signal bind element not found: \"+r),null}if(r&&e)try{r.textContent=\"\"}catch(e){r=null,t.error(e)}return r}const L=e=>+e||0,lt=e=>({top:e,bottom:e,left:e,right:e});function ge(e){return o.isObject(e)?{top:L(e.top),bottom:L(e.bottom),left:L(e.left),right:L(e.right)}:lt(L(e))}async function v(e,t,r,n){var a=l.renderModule(t),a=a&&a.headless;return a||o.error(\"Unrecognized renderer type: \"+t),await e.runAsync(),fe(e,null,null,a,r,n).renderAsync(e._scenegraph.root)}async function _e(e,t){e!==l.RenderType.Canvas&&e!==l.RenderType.SVG&&e!==l.RenderType.PNG&&o.error(\"Unrecognized image type: \"+e);t=await v(this,e,t);return e===l.RenderType.SVG?ye(t.svg(),\"image/svg+xml\"):t.canvas().toDataURL(\"image/png\")}function ye(e,t){e=new Blob([e],{type:t});return window.URL.createObjectURL(e)}async function Te(e,t){return(await v(this,l.RenderType.Canvas,e,t)).canvas()}async function ve(e){return(await v(this,l.RenderType.SVG,e)).svg()}function be(e,t,r){return U.context(e,c.transforms,F.functionContext,r).parse(t)}function Ee(e){var t=this._runtime.scales;return o.hasOwnProperty(t,e)||o.error(\"Unrecognized scale or projection: \"+e),t[e].value}var Se=\"width\",Ae=\"height\",b=\"padding\",Oe={skip:!0};function Ce(e,t){var r=e.autosize(),e=e.padding();return t-(r&&r.contains===b?e.left+e.right:0)}function we(e,t){var r=e.autosize(),e=e.padding();return t-(r&&r.contains===b?e.top+e.bottom:0)}function ke(t){var e=t._signals,r=e[Se],n=e[Ae],e=e[b];function a(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,e=>{t._width=e.size,t._viewWidth=Ce(t,e.size),a()},{size:r}),t._resizeHeight=t.add(null,e=>{t._height=e.size,t._viewHeight=we(t,e.size),a()},{size:n});var i=t.add(null,a,{pad:e});t._resizeWidth.rank=r.rank+1,t._resizeHeight.rank=n.rank+1,i.rank=e.rank+1}function Ie(r,n,a,i,o,s){this.runAfter(e=>{let t=0;e._autosize=0,e.width()!==a&&(t=1,e.signal(Se,a,Oe),e._resizeWidth.skip(!0)),e.height()!==i&&(t=1,e.signal(Ae,i,Oe),e._resizeHeight.skip(!0)),e._viewWidth!==r&&(e._resize=1,e._viewWidth=r),e._viewHeight!==n&&(e._resize=1,e._viewHeight=n),e._origin[0]===o[0]&&e._origin[1]===o[1]||(e._resize=1,e._origin=o),t&&e.run(\"enter\"),s&&e.runAfter(e=>e.resize())},!1,1)}function Re(e){return this._runtime.getState(e||{data:Ne,signals:Me,recurse:!0})}function Ne(e,t){return t.modified&&o.isArray(t.input.value)&&!e.startsWith(\"_:vega:_\")}function Me(e,t){return!(\"parent\"===e||t instanceof c.transforms.proxy)}function Pe(t){return this.runAsync(null,e=>{e._trigger=!1,e._runtime.setState(t)},e=>{e._trigger=!0}),this}var E,S,A=0,t=0,O=0,De=1e3,C=0,w=0,k=0,I=\"object\"==typeof performance&&performance.now?performance:Date,xe=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function R(){return w||(xe(Le),w=I.now()+k)}function Le(){w=0}function N(){this._call=this._time=this._next=null}function Fe(){R(),++A;for(var e,t=E;t;)0<=(e=w-t._time)&&t._call.call(void 0,e),t=t._next;--A}function Ue(){w=(C=I.now())+k,A=t=0;try{Fe()}finally{A=0,je(),w=0}}function Be(){var e=I.now(),t=e-C;De<t&&(k-=t,C=e)}function je(){for(var e,t,r=E,n=1/0;r;)r=r._call?(n>r._time&&(n=r._time),(e=r)._next):(t=r._next,r._next=null,e?e._next=t:E=t);S=e,M(n)}function M(e){A||(t=t&&clearTimeout(t),24<e-w?(e<1/0&&(t=setTimeout(Ue,e-I.now()-k)),O=O&&clearInterval(O)):(O||(C=I.now(),O=setInterval(Be,De)),A=1,xe(Ue)))}function He(e,t,r){var i=new N,o=t;return null==t?i.restart(e,t,r):(i._restart=i.restart,i.restart=function(r,n,a){n=+n,a=null==a?R():+a,i._restart(function e(t){t+=o,i._restart(e,o+=n,a),r(t)},n,a)},i.restart(e,t,r)),i}function Ge(t,e){this._timers.push(He(function(e){t({timestamp:Date.now(),elapsed:e})},e))}function Ve(e,t,r,n){e=e.element();e&&e.setAttribute(\"title\",qe(n))}function qe(e){return null==e?\"\":o.isArray(e)?We(e):o.isObject(e)&&!o.isDate(e)?ze(e):e+\"\"}function ze(r){return Object.keys(r).map(e=>{var t=r[e];return e+\": \"+(o.isArray(t)?We:$e)(t)}).join(\"\\n\")}function We(e){return\"[\"+e.map($e).join(\", \")+\"]\"}function $e(e){return o.isArray(e)?\"[…]\":o.isObject(e)&&!o.isDate(e)?\"{…}\":e}function Ke(){if(\"canvas\"===this.renderer()&&this._renderer._canvas){let t=null;const r=()=>{null!=t&&t();const e=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);e.addEventListener(\"change\",r),t=()=>{e.removeEventListener(\"change\",r)},this._renderer._canvas.getContext(\"2d\").pixelRatio=window.devicePixelRatio||1,this._redraw=!0,this._resize=1,this.resize().runAsync()};r()}}function Ye(e,t){var r=this,n=(t=t||{},c.Dataflow.call(r),t.loader&&r.loader(t.loader),t.logger&&r.logger(t.logger),null!=t.logLevel&&r.logLevel(t.logLevel),(t.locale||e.locale)&&(n=o.extend({},e.locale,t.locale),r.locale(B.locale(n.number,n.time))),r._el=null,r._elBind=null,r._renderType=t.renderer||l.RenderType.Canvas,r._scenegraph=new l.Scenegraph,r._scenegraph.root),a=(r._renderer=null,r._tooltip=t.tooltip||Ve,r._redraw=!0,r._handler=(new l.CanvasHandler).scene(n),r._globalCursor=!1,r._preventDefault=!1,r._timers=[],r._eventListeners=[],r._resizeListeners=[],r._eventConfig=Y(e.eventConfig),r.globalCursor(r._eventConfig.globalCursor),be(r,e,t.expr));r._runtime=a,r._signals=a.signals,r._bind=(e.bindings||[]).map(e=>({state:null,param:o.extend({},e)})),a.root&&a.root.set(n),n.source=a.data.root.input,r.pulse(a.data.root.input,r.changeset().insert(n.items)),r._width=r.width(),r._height=r.height(),r._viewWidth=Ce(r,r._width),r._viewHeight=we(r,r._height),r._origin=[0,0],r._resize=0,r._autosize=1,ke(r),H(r),G(r),r.description(e.description),t.hover&&r.hover(),t.container&&r.initialize(t.container,t.bind),t.watchPixelRatio&&r._watchPixelRatio()}function P(e,t){return o.hasOwnProperty(e._signals,t)?e._signals[t]:o.error(\"Unrecognized signal name: \"+o.stringValue(t))}function Je(e,t){e=(e._targets||[]).filter(e=>e._update&&e._update.handler===t);return e.length?e[0]:null}function Qe(e,t,r,n){var a=Je(r,n);return a||((a=y(e,()=>n(t,r.value))).handler=n,e.on(r,null,a)),e}function Ze(e,t,r){r=Je(t,r);return r&&t._targets.remove(r),e}N.prototype={constructor:N,restart:function(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"callback is not a function\");r=(null==r?R():+r)+(null==t?0:+t),this._next||S===this||(S?S._next=this:E=this,S=this),this._call=e,this._time=r,M()},stop:function(){this._call&&(this._call=null,this._time=1/0,M())}},o.inherits(Ye,c.Dataflow,{async evaluate(e,t,r){if(await c.Dataflow.prototype.evaluate.call(this,e,t),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,W(this)),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(e){this.error(e)}return r&&c.asyncCallback(this,r),this},dirty(e){this._redraw=!0,this._renderer&&this._renderer.dirty(e)},description(e){return arguments.length?((e=null!=e?e+\"\":null)!==this._desc&&r(this._el,this._desc=e),this):this._desc},container(){return this._el},scenegraph(){return this._scenegraph},origin(){return this._origin.slice()},signal(e,t,r){e=P(this,e);return 1===arguments.length?e.value:this.update(e,t,r)},width(e){return arguments.length?this.signal(\"width\",e):this.signal(\"width\")},height(e){return arguments.length?this.signal(\"height\",e):this.signal(\"height\")},padding(e){return arguments.length?this.signal(\"padding\",ge(e)):ge(this.signal(\"padding\"))},autosize(e){return arguments.length?this.signal(\"autosize\",e):this.signal(\"autosize\")},background(e){return arguments.length?this.signal(\"background\",e):this.signal(\"background\")},renderer(e){return arguments.length?(l.renderModule(e)||o.error(\"Unrecognized renderer type: \"+e),e!==this._renderType&&(this._renderType=e,this._resetRenderer()),this):this._renderType},tooltip(e){return arguments.length?(e!==this._tooltip&&(this._tooltip=e,this._resetRenderer()),this):this._tooltip},loader(e){return arguments.length?(e!==this._loader&&(c.Dataflow.prototype.loader.call(this,e),this._resetRenderer()),this):this._loader},resize(){return this._autosize=1,this.touch(P(this,\"autosize\"))},_resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},_resizeView:Ie,addEventListener(e,t,r){let n=t;return r&&!1===r.trap||((n=y(this,t)).raw=t),this._handler.on(e,n),this},removeEventListener(e,t){for(var r,n,a=this._handler.handlers(e),i=a.length;0<=--i;)if(n=a[i].type,r=a[i].handler,e===n&&(t===r||t===r.raw)){this._handler.off(n,r);break}return this},addResizeListener(e){var t=this._resizeListeners;return t.includes(e)||t.push(e),this},removeResizeListener(e){var t=this._resizeListeners,e=t.indexOf(e);return 0<=e&&t.splice(e,1),this},addSignalListener(e,t){return Qe(this,e,P(this,e),t)},removeSignalListener(e,t){return Ze(this,P(this,e),t)},addDataListener(e,t){return Qe(this,e,n(this,e).values,t)},removeDataListener(e,t){return Ze(this,n(this,e).values,t)},globalCursor(e){var t;return arguments.length?(this._globalCursor!==!!e&&(t=i(this,null),this._globalCursor=!!e,t)&&i(this,t),this):this._globalCursor},preventDefault(e){return arguments.length?(this._preventDefault=e,this):this._preventDefault},timer:Ge,events:Q,finalize:ee,hover:X,data:V,change:a,insert:q,remove:z,scale:Ee,initialize:me,toImageURL:_e,toCanvas:Te,toSVG:ve,getState:Re,setState:Pe,_watchPixelRatio:Ke}),e.View=Ye}}return ZD.exports}var p2,f2,h2,m2={exports:{}},g2={exports:{}};function _2(){if(!p2){p2=1;var e=g2.exports;{const s=\"view\",h=\"[\",m=\"]\",g=\"{\",_=\"}\",y=\":\",l=\",\",T=\"@\",c=\">\",v=/[[\\]{}]/,b={\"*\":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};let u,n;function t(e,t,r){return u=t||s,n=r||b,a(e.trim()).map(i)}function d(e){return n[e]}function p(e,t,r,n,a){var i=e.length;let o=0,s;for(;t<i;++t){if(s=e[t],!o&&s===r)return t;a&&0<=a.indexOf(s)?--o:n&&0<=n.indexOf(s)&&++o}return t}function a(e){var t=[],r=e.length;let n=0,a=0;for(;a<r;)a=p(e,a,l,h+g,m+_),t.push(e.substring(n,a).trim()),n=++a;if(0===t.length)throw\"Empty event selector: \"+e;return t}function i(e){return(\"[\"===e[0]?r:o)(e)}function r(e){var t=e.length;let r,n;if((r=p(e,1,m,h,m))===t)throw\"Empty between selector: \"+e;if(2!==(n=a(e.substring(1,r))).length)throw\"Between selector must have two elements: \"+e;if((e=e.slice(r+1).trim())[0]!==c)throw\"Expected '>' after between selector: \"+e;n=n.map(i);t=i(e.slice(1).trim());return t.between?{between:n,stream:t}:(t.between=n,t)}function o(t){var e={source:u},r=[];let n=[0,0],a=0,i=0,o=t.length,s=0,l,c;if(t[o-1]===_){if(!(0<=(s=t.lastIndexOf(g))))throw\"Unmatched right brace: \"+t;try{n=f(t.substring(s+1,o-1))}catch(e){throw\"Invalid throttle specification: \"+t}t=t.slice(0,s).trim(),o=t.length,s=0}if(!o)throw t;if(t[0]===T&&(a=++s),(l=p(t,s,y))<o&&(r.push(t.substring(i,l).trim()),i=s=++l),(s=p(t,s,h))===o)r.push(t.substring(i,o).trim());else if(r.push(t.substring(i,s).trim()),c=[],(i=++s)===o)throw\"Unmatched left bracket: \"+t;for(;s<o;){if((s=p(t,s,m))===o)throw\"Unmatched left bracket: \"+t;if(c.push(t.substring(i,s).trim()),s<o-1&&t[++s]!==h)throw\"Expected left bracket: \"+t;i=++s}if(!(o=r.length)||v.test(r[o-1]))throw\"Invalid event selector: \"+t;return 1<o?(e.type=r[1],a?e.markname=r[0].slice(1):d(r[0])?e.marktype=r[0]:e.source=r[0]):e.type=r[0],\"!\"===e.type.slice(-1)&&(e.consume=!0,e.type=e.type.slice(0,-1)),null!=c&&(e.filter=c),n[0]&&(e.throttle=n[0]),n[1]&&(e.debounce=n[1]),e}function f(t){var e=t.split(l);if(!t.length||2<e.length)throw t;return e.map(e=>{e=+e;if(e!=e)throw t;return e})}e.parseSelector=t}}return g2.exports}function y2(){if(!f2){f2=1;var e=m2.exports;{var y=HP(),c=o2(),B=_2(),i=yD(),j=rD();function H(e){return y.isObject(e)?e:{type:e||\"pad\"}}const lr=e=>+e||0,cr=e=>({top:e,bottom:e,left:e,right:e});function G(e){return y.isObject(e)?e.signal?e:{top:lr(e.top),bottom:lr(e.bottom),left:lr(e.left),right:lr(e.right)}:cr(+e||0)}const w=e=>y.isObject(e)&&!y.isArray(e)?y.extend({},e):{value:e};function V(e,t,r,n){null!=r&&(y.isObject(r)&&!y.isArray(r)||y.isArray(r)&&r.length&&y.isObject(r[0])?e.update[t]=r:e[n||\"enter\"][t]={value:r})}function S(e,t,r){for(const n in t)V(e,n,t[n]);for(const a in r)V(e,a,r[a],\"update\")}function A(e,t,r){for(const n in t)r&&y.hasOwnProperty(r,n)||(e[n]=y.extend(e[n]||{},t[n]));return e}function u(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}const ur=\"mark\",dr=\"frame\",pr=\"scope\",fr=\"axis\",hr=\"axis-domain\",mr=\"axis-label\",gr=\"axis-title\",_r=\"legend\",yr=\"legend-entry\",Tr=\"legend-label\",vr=\"legend-symbol\",br=\"legend-title\",Er=\"title\",Sr=\"title-text\",Ar=\"title-subtitle\";function q(n,e,t,r,a){const i={},o={};let s,l,c;for(l in l=\"lineBreak\",\"text\"!==e||null==a[l]||u(l,n)||z(i,l,a[l]),\"legend\"!=t&&!String(t).startsWith(\"axis\")||(t=null),c=t===dr?a.group:t===ur?y.extend({},a.mark,a[e]):null)u(l,n)||(\"fill\"===l||\"stroke\"===l)&&(u(\"fill\",n)||u(\"stroke\",n))||z(i,l,c[l]);for(l in y.array(r).forEach(e=>{var t=a.style&&a.style[e];for(const r in t)u(r,n)||z(i,r,t[r])}),n=y.extend({},n),i)(c=i[l]).signal?(s=s||{})[l]=c:o[l]=c;return n.enter=y.extend(o,n.enter),s&&(n.update=y.extend(s,n.update)),n}function z(e,t,r){e[t]=r&&r.signal?{signal:r.signal}:{value:r}}const Or=e=>y.isString(e)?y.stringValue(e):e.signal?`(${e.signal})`:K(e);function W(e){if(null!=e.gradient)return n(e);let t=e.signal?`(${e.signal})`:e.color?r(e.color):null!=e.field?K(e.field):void 0!==e.value?y.stringValue(e.value):void 0;return void 0===(t=null!=e.scale?J(e,t):t)&&(t=null),null!=e.exponent&&(t=`pow(${t},${$(e.exponent)})`),null!=e.mult&&(t+=\"*\"+$(e.mult)),null!=e.offset&&(t+=\"+\"+$(e.offset)),t=e.round?`round(${t})`:t}const Cr=(e,t,r,n)=>`(${e}(${[t,r,n].map(W).join(\",\")})+'')`;function r(e){return e.c?Cr(\"hcl\",e.h,e.c,e.l):e.h||e.s?Cr(\"hsl\",e.h,e.s,e.l):e.l||e.a?Cr(\"lab\",e.l,e.a,e.b):e.r||e.g||e.b?Cr(\"rgb\",e.r,e.g,e.b):null}function n(e){for(var t=[e.start,e.stop,e.count].map(e=>null==e?null:y.stringValue(e));t.length&&null==y.peek(t);)t.pop();return t.unshift(Or(e.gradient)),`gradient(${t.join(\",\")})`}function $(e){return y.isObject(e)?\"(\"+W(e)+\")\":e}function K(e){return Y(y.isObject(e)?e:{datum:e})}function Y(e){let t,r,n;if(e.signal)t=\"datum\",n=e.signal;else if(e.group||e.parent){for(r=Math.max(1,e.level||1),t=\"item\";0<r--;)t+=\".mark.group\";e.parent?(n=e.parent,t+=\".datum\"):n=e.group}else e.datum?(t=\"datum\",n=e.datum):y.error(\"Invalid field reference: \"+y.stringValue(e));return e.signal||(n=y.isString(n)?y.splitAccessPath(n).map(y.stringValue).join(\"][\"):Y(n)),t+\"[\"+n+\"]\"}function J(e,t){var r=Or(e.scale);return null!=e.range?t=`lerp(_range(${r}), ${+e.range})`:(void 0!==t&&(t=`_scale(${r}, ${t})`),null==(t=e.band&&(t=(t?t+\"+\":\"\")+`_bandwidth(${r})`+(1==+e.band?\"\":\"*\"+$(e.band)),e.extra)?`(datum.extra ? _scale(${r}, datum.extra.value) : ${t})`:t)&&(t=\"0\")),t}function Q(e){let r=\"\";return e.forEach(e=>{var t=W(e);r+=e.test?`(${e.test})?${t}:`:t}),\":\"===y.peek(r)&&(r+=\"null\"),r}function Z(e,t,r,n,a,i){var o={};(i=i||{}).encoders={$encode:o};for(const s in e=q(e,t,r,n,a.config))o[s]=X(e[s],t,i,a);return i}function X(e,t,r,n){var a={},i={};for(const o in e)null!=e[o]&&(a[o]=te(ee(e[o]),n,r,i));return{$expr:{marktype:t,channels:a},$fields:Object.keys(i),$output:Object.keys(e)}}function ee(e){return(y.isArray(e)?Q:W)(e)}function te(e,t,r,n){e=c.parseExpression(e,t);return e.$fields.forEach(e=>n[e]=1),y.extend(r,e.$params),e.$expr}const wr=\"outer\",kr=[\"value\",\"update\",\"init\",\"react\",\"bind\"];function re(e,t){y.error(e+' for \"outer\" push: '+y.stringValue(t))}function ne(t,e){var r,n=t.name;t.push===wr?(e.signals[n]||re(\"No prior signal definition\",n),kr.forEach(e=>{void 0!==t[e]&&re(\"Invalid property \",e)})):(r=e.addSignal(n,t.value),!1===t.react&&(r.react=!1),t.bind&&e.addBinding(n,t.bind))}function ae(e,t,r,n){this.id=-1,this.type=e,this.value=t,this.params=r,n&&(this.parent=n)}function ie(e,t,r,n){return new ae(e,t,r,n)}function oe(e,t){return ie(\"operator\",e,t)}function T(e){var t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function se(e,t){return t?{$field:e,$name:t}:{$field:e}}const Ir=se(\"key\");function le(e,t){return{$compare:e,$order:t}}function ce(e,t){e={$key:e};return t&&(e.$flat=!0),e}const Rr=\"descending\";function ue(e){return y.isObject(e)?(e.order===Rr?\"-\":\"+\")+de(e.op,e.field):\"\"}function de(e,t){return(e&&e.signal?\"$\"+e.signal:e||\"\")+(e&&t?\"_\":\"\")+(t&&t.signal?\"$\"+t.signal:t||\"\")}const Nr=\"scope\",Mr=\"view\";function p(e){return e&&e.signal}function pe(e){return e&&e.expr}function fe(e){if(p(e))return 1;if(y.isObject(e))for(const t in e)if(fe(e[t]))return 1}function m(e,t){return null!=e?e:t}function v(e){return e&&e.signal||e}const Pr=\"timer\";function o(e,t){return(e.merge?me:e.stream?ge:e.type?_e:y.error(\"Invalid stream specification: \"+y.stringValue(e)))(e,t)}function he(e){return e!==Nr&&e||Mr}function me(e,t){e=ye({merge:e.merge.map(e=>o(e,t))},e,t);return t.addStream(e).id}function ge(e,t){e=ye({stream:o(e.stream,t)},e,t);return t.addStream(e).id}function _e(e,t){let r;e.type===Pr?(r=t.event(Pr,e.throttle),e={between:e.between,filter:e.filter}):r=t.event(he(e.source),e.type);e=ye({stream:r},e,t);return 1===Object.keys(e).length?r:t.addStream(e).id}function ye(e,t,r){let n=t.between;return n&&(2!==n.length&&y.error('Stream \"between\" parameter must have 2 entries: '+y.stringValue(t)),e.between=[o(n[0],r),o(n[1],r)]),n=t.filter?[].concat(t.filter):[],(t.marktype||t.markname||t.markrole)&&n.push(Te(t.marktype,t.markname,t.markrole)),t.source===Nr&&n.push(\"inScope(event.item)\"),n.length&&(e.filter=c.parseExpression(\"(\"+n.join(\")&&(\")+\")\",r).$expr),null!=(n=t.throttle)&&(e.throttle=+n),null!=(n=t.debounce)&&(e.debounce=+n),t.consume&&(e.consume=!0),e}function Te(e,t,r){var n=\"event.item\";return n+(e&&\"*\"!==e?\"&&\"+n+\".mark.marktype==='\"+e+\"'\":\"\")+(r?\"&&\"+n+\".mark.role==='\"+r+\"'\":\"\")+(t?\"&&\"+n+\".mark.name==='\"+t+\"'\":\"\")}const Dr={code:\"_.$value\",ast:{type:\"Identifier\",value:\"value\"}};function ve(e,t,r){const n=e.encode,a={target:r};let i=e.events,o=e.update,s=[];i||y.error(\"Signal update missing events specification.\"),y.isString(i)&&(i=B.parseSelector(i,t.isSubscope()?Nr:Mr)),i=y.array(i).filter(e=>e.signal||e.scale?(s.push(e),0):1),1<s.length&&(s=[Ee(s)]),i.length&&s.push(1<i.length?{merge:i}:i[0]),null!=n&&(o&&y.error(\"Signal encode and update are mutually exclusive.\"),o=\"encode(item(),\"+y.stringValue(n)+\")\"),a.update=y.isString(o)?c.parseExpression(o,t):null!=o.expr?c.parseExpression(o.expr,t):null!=o.value?o.value:null!=o.signal?{$expr:Dr,$params:{$value:t.signalRef(o.signal)}}:y.error(\"Invalid signal update specification.\"),e.force&&(a.options={force:!0}),s.forEach(e=>t.addUpdate(y.extend(be(e,t),a)))}function be(e,t){return{source:e.signal?t.signalRef(e.signal):e.scale?t.scaleRef(e.scale):o(e,t)}}function Ee(e){return{signal:\"[\"+e.map(e=>e.scale?'scale(\"'+e.scale+'\")':e.signal)+\"]\"}}function Se(e,t){const r=t.getSignal(e.name);let n=e.update;e.init&&(n?y.error(\"Signals can not include both init and update expressions.\"):(n=e.init,r.initonly=!0)),n&&(n=c.parseExpression(n,t),r.update=n.$expr,r.params=n.$params),e.on&&e.on.forEach(e=>ve(e,t,r.id))}const t=n=>(e,t,r)=>ie(n,t,e||void 0,r),xr=t(\"aggregate\"),Lr=t(\"axisticks\"),Fr=t(\"bound\"),E=t(\"collect\"),Ur=t(\"compare\"),Br=t(\"datajoin\"),jr=t(\"encode\"),Hr=t(\"expression\"),Gr=t(\"facet\"),Vr=t(\"field\"),qr=t(\"key\"),zr=t(\"legendentries\"),Wr=t(\"load\"),$r=t(\"mark\"),Kr=t(\"multiextent\"),Yr=t(\"multivalues\"),Jr=t(\"overlap\"),Qr=t(\"params\"),Zr=t(\"prefacet\"),Xr=t(\"projection\"),en=t(\"proxy\"),tn=t(\"relay\"),rn=t(\"render\"),nn=t(\"scale\"),k=t(\"sieve\"),an=t(\"sortitems\"),on=t(\"viewlayout\"),sn=t(\"values\");let a=0;const ln={min:\"min\",max:\"max\",count:\"sum\"};function Ae(e,t){var r=e.type||\"linear\";i.isValidScaleType(r)||y.error(\"Unrecognized scale type: \"+y.stringValue(r)),t.addScale(e.name,{type:r,domain:void 0})}function Oe(e,t){var r=t.getScale(e.name).params;let n;for(n in r.domain=ke(e.domain,e,t),null!=e.range&&(r.range=je(e,t,r)),null!=e.interpolate&&Be(e.interpolate,r),null!=e.nice&&(r.nice=Ue(e.nice,t)),null!=e.bins&&(r.bins=Fe(e.bins,t)),e)y.hasOwnProperty(r,n)||\"name\"===n||(r[n]=s(e[n],t))}function s(e,t){return y.isObject(e)?e.signal?t.signalRef(e.signal):y.error(\"Unsupported object: \"+y.stringValue(e)):e}function Ce(e,t){return e.signal?t.signalRef(e.signal):e.map(e=>s(e,t))}function we(e){y.error(\"Can not find data set: \"+y.stringValue(e))}function ke(e,t,r){if(e)return e.signal?r.signalRef(e.signal):(y.isArray(e)?Ie:e.fields?Ne:Re)(e,t,r);null==t.domainMin&&null==t.domainMax||y.error(\"No scale domain defined for domainMin/domainMax to override.\")}function Ie(e,t,r){return e.map(e=>s(e,r))}function Re(e,t,r){var n=r.getData(e.data);return n||we(e.data),i.isDiscrete(t.type)?n.valuesRef(r,e.field,De(e.sort,!1)):i.isQuantile(t.type)?n.domainRef(r,e.field):n.extentRef(r,e.field)}function Ne(e,t,r){const n=e.data,a=e.fields.reduce((e,t)=>(t=y.isString(t)?{data:n,field:t}:y.isArray(t)||t.signal?Me(t,r):t,e.push(t),e),[]);return(i.isDiscrete(t.type)?Pe:i.isQuantile(t.type)?xe:Le)(e,r,a)}function Me(e,t){var r=\"_:vega:_\"+a++,n=E({});return y.isArray(e)?n.value={$ingest:e}:e.signal&&(e=\"setdata(\"+y.stringValue(r)+\",\"+e.signal+\")\",n.params.input=t.signalRef(e)),t.addDataPipeline(r,[n,k({})]),{data:r,field:\"data\"}}function Pe(e,r,t){const n=De(e.sort,!0);let a,i;e=t.map(e=>{var t=r.getData(e.data);return t||we(e.data),t.countsRef(r,e.field,n)}),t={groupby:Ir,pulse:e},n&&(a=n.op||\"count\",i=n.field?de(a,n.field):\"count\",t.ops=[ln[a]],t.fields=[r.fieldRef(i)],t.as=[i]),a=r.add(xr(t)),e=r.add(E({pulse:T(a)}));return i=r.add(sn({field:Ir,sort:r.sortRef(n),pulse:T(e)})),T(i)}function De(e,t){return e&&(e.field||e.op?e.field||\"count\"===e.op?t&&e.field&&e.op&&!ln[e.op]&&y.error(\"Multiple domain scales can not be sorted using \"+e.op):y.error(\"No field provided for sort aggregate op: \"+e.op):y.isObject(e)?e.field=\"key\":e={field:\"key\"}),e}function xe(e,r,t){t=t.map(e=>{var t=r.getData(e.data);return t||we(e.data),t.domainRef(r,e.field)});return T(r.add(Yr({values:t})))}function Le(e,r,t){t=t.map(e=>{var t=r.getData(e.data);return t||we(e.data),t.extentRef(r,e.field)});return T(r.add(Kr({extents:t})))}function Fe(e,t){return e.signal||y.isArray(e)?Ce(e,t):t.objectProperty(e)}function Ue(e,t){return e.signal?t.signalRef(e.signal):y.isObject(e)?{interval:s(e.interval),step:s(e.step)}:s(e)}function Be(e,t){t.interpolate=s(e.type||e),null!=e.gamma&&(t.interpolateGamma=s(e.gamma))}function je(e,t,r){var n=t.config.range;let a=e.range;if(a.signal)return t.signalRef(a.signal);if(y.isString(a)){if(n&&y.hasOwnProperty(n,a))return je(e=y.extend({},e,{range:n[a]}),t,r);\"width\"===a?a=[0,{signal:\"width\"}]:\"height\"===a?a=i.isDiscrete(e.type)?[0,{signal:\"height\"}]:[{signal:\"height\"},0]:y.error(\"Unrecognized scale range value: \"+y.stringValue(a))}else{if(a.scheme)return r.scheme=(y.isArray(a.scheme)?Ce:s)(a.scheme,t),a.extent&&(r.schemeExtent=Ce(a.extent,t)),void(a.count&&(r.schemeCount=s(a.count,t)));if(a.step)return void(r.rangeStep=s(a.step,t));if(i.isDiscrete(e.type)&&!y.isArray(a))return ke(a,e,t);y.isArray(a)||y.error(\"Unsupported range type: \"+y.stringValue(a))}return a.map(e=>(y.isArray(e)?Ce:s)(e,t))}function He(e,t){var r=t.config.projection||{},n={};for(const a in e)\"name\"!==a&&(n[a]=Ge(e[a],a,t));for(const i in r)null==n[i]&&(n[i]=Ge(r[i],i,t));t.addProjection(e.name,n)}function Ge(e,t,r){return y.isArray(e)?e.map(e=>Ge(e,t,r)):y.isObject(e)?e.signal?r.signalRef(e.signal):\"fit\"===t?e:y.error(\"Unsupported parameter object: \"+y.stringValue(e)):e}const h=\"top\",l=\"left\",g=\"right\",_=\"bottom\",cn=\"start\",un=\"end\",dn=\"perc\",I=\"value\",R=\"guide-label\",pn=\"guide-title\",fn=\"group-title\",hn=\"group-subtitle\",mn=\"symbol\",gn=\"gradient\",_n=\"discrete\",yn=[\"size\",\"shape\",\"fill\",\"stroke\",\"strokeWidth\",\"strokeDash\",\"opacity\"],N={name:1,style:1,interactive:1},M={value:0},P={value:1},Tn=\"group\",D=\"text\";function Ve(e){return e.type=Tn,e.interactive=e.interactive||!1,e}function O(r,n){const e=(e,t)=>m(r[e],m(n[e],t));return e.isVertical=e=>\"vertical\"===m(r.direction,n.direction||(e?n.symbolDirection:n.gradientDirection)),e.gradientLength=()=>m(r.gradientLength,n.gradientLength||n.gradientWidth),e.gradientThickness=()=>m(r.gradientThickness,n.gradientThickness||n.gradientHeight),e.entryColumns=()=>m(r.columns,m(n.columns,+e.isVertical(!0))),e}function qe(e,t){t=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return t&&t.signal?t:t?t.value:null}function ze(e,t,r){t=t.config.style[r];return t&&t[e]}function We(e,t,r){return`item.anchor === '${cn}' ? ${e} : item.anchor === '${un}' ? ${t} : `+r}const vn=We(y.stringValue(l),y.stringValue(g),y.stringValue(\"center\"));function $e(e){var t=e(\"tickBand\");let r=e(\"tickOffset\"),n,a;return t?t.signal?(n={signal:`(${t.signal}) === 'extent' ? 1 : 0.5`},a={signal:`(${t.signal}) === 'extent'`},y.isObject(r)||(r={signal:`(${t.signal}) === 'extent' ? 0 : `+r})):\"extent\"===t?(n=1,a=!0,r=0):(n=.5,a=!1):(n=e(\"bandPosition\"),a=e(\"tickExtra\")),{extra:a,band:n,offset:r}}function Ke(e,t){return t?e?y.isObject(e)?Object.assign({},e,{offset:Ke(e.offset,t)}):{value:e,offset:t}:t:e}function C(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=A(e.encode,t,N)):e.interactive=!1,e}function Ye(e,t,r,n){var e=O(e,r),r=e.isVertical(),a=e.gradientThickness(),i=e.gradientLength();let o,s,l,c,u;u=r?(s=[0,1],l=[0,0],c=a,i):(s=[0,0],l=[1,0],c=i,a);r={enter:o={opacity:M,x:M,y:M,width:w(c),height:w(u)},update:y.extend({},o,{opacity:P,fill:{gradient:t,start:s,stop:l}}),exit:{opacity:M}};return S(r,{stroke:e(\"gradientStrokeColor\"),strokeWidth:e(\"gradientStrokeWidth\")},{opacity:e(\"gradientOpacity\")}),C({type:\"rect\",role:\"legend-gradient\",encode:r},n)}function Je(e,t,r,n,a){var e=O(e,r),r=e.isVertical(),i=e.gradientThickness(),o=e.gradientLength();let s,l,c,u,d=\"\";r?(s=\"y\",c=\"y2\",l=\"x\",u=\"width\",d=\"1-\"):(s=\"x\",c=\"x2\",l=\"y\",u=\"height\");r={opacity:M,fill:{scale:t,field:I}},r[s]={signal:d+\"datum.\"+dn,mult:o},r[l]=M,r[c]={signal:d+\"datum.perc2\",mult:o},r[u]=w(i),t={enter:r,update:y.extend({},r,{opacity:P}),exit:{opacity:M}};return S(t,{stroke:e(\"gradientStrokeColor\"),strokeWidth:e(\"gradientStrokeWidth\")},{opacity:e(\"gradientOpacity\")}),C({type:\"rect\",role:\"legend-band\",key:I,from:a,encode:t},n)}const bn=`datum.perc<=0?\"${l}\":datum.perc>=1?\"${g}\":\"center\"`,En=`datum.perc<=0?\"${_}\":datum.perc>=1?\"${h}\":\"middle\"`;function Qe(e,t,r,n){var a=O(e,t),i=a.isVertical(),o=w(a.gradientThickness()),s=a.gradientLength();let l=a(\"labelOverlap\"),c,u,d,p,f=\"\";var h={enter:c={opacity:M},update:u={opacity:P,text:{field:\"label\"}},exit:{opacity:M}};return S(h,{fill:a(\"labelColor\"),fillOpacity:a(\"labelOpacity\"),font:a(\"labelFont\"),fontSize:a(\"labelFontSize\"),fontStyle:a(\"labelFontStyle\"),fontWeight:a(\"labelFontWeight\"),limit:m(e.labelLimit,t.gradientLabelLimit)}),i?(c.align={value:\"left\"},c.baseline=u.baseline={signal:En},d=\"y\",p=\"x\",f=\"1-\"):(c.align=u.align={signal:bn},c.baseline={value:\"top\"},d=\"x\",p=\"y\"),c[d]=u[d]={signal:f+\"datum.\"+dn,mult:s},(c[p]=u[p]=o).offset=m(e.labelOffset,t.gradientLabelOffset)||0,l=l?{separation:a(\"labelSeparation\"),method:l,order:\"datum.index\"}:void 0,C({type:D,role:Tr,style:R,key:I,from:n,encode:h,overlap:l},r)}function Ze(t,e,r,n,a){var i=O(t,e),o=r.entries,s=!(!o||!o.interactive),l=o?o.name:void 0,c=i(\"clipHeight\"),u=i(\"symbolOffset\"),d={data:\"value\"},p=`(${a}) ? datum.offset : datum.size`,f=c?w(c):{field:\"size\"},h=\"datum.index\",m=`max(1, ${a})`;let g,_,y,T,v,b=(f.mult=.5,g={enter:_={opacity:M,x:{signal:p,mult:.5,offset:u},y:f},update:y={opacity:P,x:_.x,y:_.y},exit:{opacity:M}},null),E=null;t.fill||(b=e.symbolBaseFillColor,E=e.symbolBaseStrokeColor),S(g,{fill:i(\"symbolFillColor\",b),shape:i(\"symbolType\"),size:i(\"symbolSize\"),stroke:i(\"symbolStrokeColor\",E),strokeDash:i(\"symbolDash\"),strokeDashOffset:i(\"symbolDashOffset\"),strokeWidth:i(\"symbolStrokeWidth\")},{opacity:i(\"symbolOpacity\")}),yn.forEach(e=>{t[e]&&(y[e]=_[e]={scale:t[e],field:I})});e=C({type:\"symbol\",role:vr,key:I,from:d,clip:!!c||void 0,encode:g},r.symbols),u=w(u),u.offset=i(\"labelOffset\"),S(g={enter:_={opacity:M,x:{signal:p,offset:u},y:f},update:y={opacity:P,text:{field:\"label\"},x:_.x,y:_.y},exit:{opacity:M}},{align:i(\"labelAlign\"),baseline:i(\"labelBaseline\"),fill:i(\"labelColor\"),fillOpacity:i(\"labelOpacity\"),font:i(\"labelFont\"),fontSize:i(\"labelFontSize\"),fontStyle:i(\"labelFontStyle\"),fontWeight:i(\"labelFontWeight\"),limit:i(\"labelLimit\")}),p=C({type:D,role:Tr,style:R,key:I,from:d,encode:g},r.labels);return g={enter:{noBound:{value:!c},width:M,height:c?w(c):M,opacity:M},exit:{opacity:M},update:y={opacity:P,row:{signal:null},column:{signal:null}}},v=i.isVertical(!0)?(T=`ceil(item.mark.items.length / ${m})`,y.row.signal=h+\"%\"+T,y.column.signal=`floor(${h} / ${T})`,{field:[\"row\",h]}):(y.row.signal=`floor(${h} / ${m})`,y.column.signal=h+\" % \"+m,{field:h}),y.column.signal=`(${a})?${y.column.signal}:`+h,n={facet:{data:n,name:\"value\",groupby:\"index\"}},Ve({role:pr,from:n,encode:A(g,o,N),marks:[e,p],name:l,interactive:s,sort:v})}function Xe(e,t){e=O(e,t);return{align:e(\"gridAlign\"),columns:e.entryColumns(),center:{row:!0,column:!1},padding:{row:e(\"rowPadding\"),column:e(\"columnPadding\")}}}const Sn='item.orient === \"left\"',An='item.orient === \"right\"',On=`(${Sn} || ${An})`,Cn=We('\"top\"','\"bottom\"','\"middle\"'),wn=We('\"right\"','\"left\"','\"center\"'),kn=`datum.vgrad && ${An} ? (${wn}) : (${On} && !(datum.vgrad && ${Sn})) ? \"left\" : `+vn,In=On+` ? (datum.vgrad ? (${An} ? \"bottom\" : \"top\") : ${Cn}) : \"top\"`;function et(e,t,r,n){var t=O(e,t),a={enter:{opacity:M},update:{opacity:P,x:{field:{group:\"padding\"}},y:{field:{group:\"padding\"}}},exit:{opacity:M}};return S(a,{orient:t(\"titleOrient\"),_anchor:t(\"titleAnchor\"),anchor:{signal:'item._anchor || ((item.orient === \"left\" || item.orient === \"right\") ? \"middle\" : \"start\")'},angle:{signal:'datum.vgrad && (item.orient === \"left\" || item.orient === \"right\") ? (item.orient === \"left\" ? -90 : 90) : 0'},align:{signal:kn},baseline:{signal:In},text:e.title,fill:t(\"titleColor\"),fillOpacity:t(\"titleOpacity\"),font:t(\"titleFont\"),fontSize:t(\"titleFontSize\"),fontStyle:t(\"titleFontStyle\"),fontWeight:t(\"titleFontWeight\"),limit:t(\"titleLimit\"),lineHeight:t(\"titleLineHeight\")},{align:t(\"titleAlign\"),baseline:t(\"titleBaseline\")}),C({type:D,role:br,style:pn,from:n,encode:a},r)}function tt(e,t){let r;return y.isObject(e)&&(e.signal?r=e.signal:e.path?r=\"pathShape(\"+rt(e.path)+\")\":e.sphere&&(r=\"geoShape(\"+rt(e.sphere)+', {type: \"Sphere\"})')),r?t.signalRef(r):!!e}function rt(e){return y.isObject(e)&&e.signal?e.signal:y.stringValue(e)}function nt(e){var t=e.role||\"\";return t.startsWith(\"axis\")||t.startsWith(\"legend\")||t.startsWith(\"title\")?t:e.type===Tn?pr:t||ur}function at(e){return{marktype:e.type,name:e.name||void 0,role:e.role||nt(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function it(e,t){return e&&e.signal?t.signalRef(e.signal):!1!==e}function ot(e,t){var r=j.definition(e.type),n=(r||y.error(\"Unrecognized transform type: \"+y.stringValue(e.type)),ie(r.type.toLowerCase(),null,st(r,e,t)));return e.signal&&t.addSignal(e.signal,t.proxy(n)),n.metadata=r.metadata||{},n}function st(t,r,n){var a={},i=t.params.length;for(let e=0;e<i;++e){var o=t.params[e];a[o.name]=lt(o,r,n)}return a}function lt(t,e,r){var n=t.type,a=e[t.name];return\"index\"===n?ut(0,e,r):void 0!==a?\"param\"===n?dt(t,e,r):\"projection\"===n?r.projectionRef(e[t.name]):t.array&&!p(a)?a.map(e=>ct(t,e,r)):ct(t,a,r):void(t.required&&y.error(\"Missing required \"+y.stringValue(e.type)+\" parameter: \"+y.stringValue(t.name)))}function ct(e,t,r){var n=e.type;return p(t)?Pn(n)?y.error(\"Expression references can not be signals.\"):Dn(n)?r.fieldRef(t):xn(n)?r.compareRef(t):r.signalRef(t.signal):(e=e.expr||Dn(n))&&Rn(t)?r.exprRef(t.expr,t.as):e&&Nn(t)?se(t.field,t.as):Pn(n)?c.parseExpression(t,r):Mn(n)?T(r.getData(t).values):Dn(n)?se(t):xn(n)?r.compareRef(t):t}function ut(e,t,r){return y.isString(t.from)||y.error('Lookup \"from\" parameter must be a string literal.'),r.getData(t.from).lookupRef(r,t.key)}function dt(t,e,r){e=e[t.name];return t.array?(y.isArray(e)||y.error(\"Expected an array of sub-parameters. Instead: \"+y.stringValue(e)),e.map(e=>pt(t,e,r))):pt(t,e,r)}function pt(t,r,e){var n=t.params.length;let a;for(let e=0;e<n;++e){for(const o in(a=t.params[e]).key)if(a.key[o]!==r[o]){a=null;break}if(a)break}a||y.error(\"Unsupported parameter: \"+y.stringValue(r));var i=y.extend(st(a,r,e),a.key);return T(e.add(Qr(i)))}const Rn=e=>e&&e.expr,Nn=e=>e&&e.field,Mn=e=>\"data\"===e,Pn=e=>\"expr\"===e,Dn=e=>\"field\"===e,xn=e=>\"compare\"===e;function ft(e,t,r){let n,a,i,o,s;return e?(n=e.facet)&&(t||y.error(\"Only group marks can be faceted.\"),null!=n.field?o=s=ht(n,r):(e.data?s=T(r.getData(e.data).aggregate):((i=ot(y.extend({type:\"aggregate\",groupby:y.array(n.groupby)},n.aggregate),r)).params.key=r.keyRef(n.groupby),i.params.pulse=ht(n,r),o=s=T(r.add(i))),a=r.keyRef(n.groupby,!0))):o=T(r.add(E(null,[{}]))),o=o||ht(e,r),{key:a,pulse:o,parent:s}}function ht(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:T(t.getData(e.data).output)}function b(e,t,r,n,a){this.scope=e,this.input=t,this.output=r,this.values=n,this.aggregate=a,this.index={}}function mt(e){return y.isString(e)?e:null}function gt(e,r,t){var n,a=de(t.op,t.field);if(r.ops){for(let e=0,t=r.as.length;e<t;++e)if(r.as[e]===a)return}else r.ops=[\"count\"],r.fields=[null],r.as=[\"count\"];t.op&&(r.ops.push((n=t.op.signal)?e.signalRef(n):t.op),r.fields.push(e.fieldRef(t.field)),r.as.push(a))}function _t(e,t,r,n,a,i,o){var s,r=t[r]||(t[r]={}),l=ue(i);let c=mt(a),u,d;return null!=c&&(e=t.scope,c+=l?\"|\"+l:\"\",u=r[c]),u||(s=i?{field:Ir,pulse:t.countsRef(e,a,i)}:{field:e.fieldRef(a),pulse:T(t.output)},l&&(s.sort=e.sortRef(i)),d=e.add(ie(n,void 0,s)),o&&(t.index[a]=d),u=T(d),null!=c&&(r[c]=u)),u}function yt(e,t,r){var n=e.from.facet,a=n.name,i=ht(n,t);let o;n.name||y.error(\"Facet must have a name: \"+y.stringValue(n)),n.data||y.error(\"Facet must reference a data set: \"+y.stringValue(n)),n.field?o=t.add(Zr({field:t.fieldRef(n.field),pulse:i})):n.groupby?o=t.add(Gr({key:t.keyRef(n.groupby),group:T(t.proxy(r.parent)),pulse:i})):y.error(\"Facet must specify groupby or field: \"+y.stringValue(n));r=t.fork(),i=r.add(E()),n=r.add(k({pulse:T(i)}));r.addData(a,new b(r,i,i,n)),r.addSignal(\"parent\",null),o.params.subflow={$subflow:r.parse(e).toRuntime()}}function Tt(e,t,r){r=t.add(Zr({pulse:r.pulse})),t=t.fork();t.add(k()),t.addSignal(\"parent\",null),r.params.subflow={$subflow:t.parse(e).toRuntime()}}function vt(e,t,r){var n=e.remove,a=e.insert,i=e.toggle,o=e.modify,s=e.values,l=t.add(oe()),e=\"if(\"+e.trigger+',modify(\"'+r+'\",'+[a,n,i,o,s].map(e=>null==e?\"null\":e).join(\",\")+\"),0)\",r=c.parseExpression(e,t);l.update=r.$expr,l.params=r.$params}function bt(e,r){var t=nt(e),n=e.type===Tn,a=e.from&&e.from.facet,i=e.overlap;let o=e.layout||t===pr||t===dr,s,l,c,u,d,p,f;var h=t===ur||o||a,m=ft(e.from,n,r),g=T(l=r.add(Br({key:m.key||(e.key?se(e.key):void 0),pulse:m.pulse,clean:!n}))),_=(l=c=r.add(E({pulse:g})),l=r.add($r({markdef:at(e),interactive:it(e.interactive,r),clip:tt(e.clip,r),context:{$context:!0},groups:r.lookup(),parent:r.signals.parent?r.signalRef(\"parent\"):null,index:r.markpath(),pulse:T(l)})),T(l)),t=((l=u=r.add(jr(Z(e.encode,e.type,t,e.style,r,{mod:!1,pulse:_})))).params.parent=r.encode(),e.transform&&e.transform.forEach(e=>{var e=ot(e,r),t=e.metadata;(t.generates||t.changes)&&y.error(\"Mark transforms should not generate new data.\"),t.nomod||(u.params.mod=!0),e.params.pulse=T(l),r.add(l=e)}),e.sort&&(l=r.add(an({sort:r.compareRef(e.sort),pulse:T(l)}))),T(l)),_=((a||o)&&(o=r.add(on({layout:r.objectProperty(e.layout),legends:r.legends,mark:_,pulse:t})),p=T(o)),r.add(Fr({mark:_,pulse:p||t}))),n=(f=T(_),n&&(h&&((s=r.operators).pop(),o)&&s.pop(),r.pushState(t,p||f,g),a?yt(e,r,m):h?Tt(e,r,m):r.parse(e),r.popState(),h)&&(o&&s.push(o),s.push(_)),i&&(f=Et(i,f,r)),r.add(rn({pulse:f}))),t=r.add(k({pulse:T(n)},void 0,r.parent()));null!=e.name&&(d=e.name,r.addData(d,new b(r,c,n,t)),e.on)&&e.on.forEach(e=>{(e.insert||e.remove||e.toggle)&&y.error(\"Marks only support modify triggers.\"),vt(e,r,d)})}function Et(e,t,r){var n=e.method,a=e.bound,i=e.separation,i={separation:p(i)?r.signalRef(i.signal):i,method:p(n)?r.signalRef(n.signal):n,pulse:t};return e.order&&(i.sort=r.compareRef({field:e.order})),a&&(n=a.tolerance,i.boundTolerance=p(n)?r.signalRef(n.signal):+n,i.boundScale=r.scaleRef(a.scale),i.boundOrient=a.orient),T(r.add(Jr(i)))}function St(t,e){const r=e.config.legend,n=t.encode||{},a=O(t,r),i=n.legend||{},o=i.name||void 0,s=i.interactive,l=i.style,c={};let u=0,d,p,f;yn.forEach(e=>t[e]?(c[e]=t[e],u=u||t[e]):0),u||y.error(\"Missing valid scale for legend.\");var h=At(t,e.scaleType(u)),m={title:null!=t.title,scales:c,type:h,vgrad:\"symbol\"!==h&&a.isVertical()},g=T(e.add(E(null,[m]))),_=T(e.add(zr(p={type:h,scale:e.scaleRef(u),count:e.objectProperty(a(\"tickCount\")),limit:e.property(a(\"symbolLimit\")),values:e.objectProperty(t.values),minstep:e.property(t.tickMinStep),formatType:e.property(t.formatType),formatSpecifier:e.property(t.format)})));return h===gn?(f=[Ye(t,u,r,n.gradient),Qe(t,r,n.labels,_)],p.count=p.count||e.signalRef(`max(2,2*floor((${v(a.gradientLength())})/100))`)):h===_n?f=[Je(t,u,r,n.gradient,_),Qe(t,r,n.labels,_)]:(d=Xe(t,r),f=[Ze(t,r,n,_,v(d.columns))],p.size=wt(t,e,f[0].marks)),f=[Ve({role:yr,from:g,encode:{enter:{x:{value:0},y:{value:0}}},marks:f,layout:d,interactive:s})],m.title&&f.push(et(t,r,n.title,g)),bt(Ve({role:_r,from:g,encode:A(Ct(a,t,r),i,N),marks:f,aria:a(\"aria\"),description:a(\"description\"),zindex:a(\"zindex\"),name:o,interactive:s,style:l}),e)}function At(e,t){let r=e.type||mn;return(r=e.type||1!==Ot(e)||!e.fill&&!e.stroke?r:i.isContinuous(t)?gn:i.isDiscretizing(t)?_n:mn)!==gn?r:i.isDiscretizing(t)?_n:gn}function Ot(r){return yn.reduce((e,t)=>e+(r[t]?1:0),0)}function Ct(e,t,r){var n={enter:{},update:{}};return S(n,{orient:e(\"orient\"),offset:e(\"offset\"),padding:e(\"padding\"),titlePadding:e(\"titlePadding\"),cornerRadius:e(\"cornerRadius\"),fill:e(\"fillColor\"),stroke:e(\"strokeColor\"),strokeWidth:r.strokeWidth,strokeDash:r.strokeDash,x:e(\"legendX\"),y:e(\"legendY\"),format:t.format,formatType:t.formatType}),n}function wt(e,t,r){var n=v(kt(\"size\",e,r)),e=v(kt(\"strokeWidth\",e,r)),r=v(It(r[1].encode,t,R));return c.parseExpression(`max(ceil(sqrt(${n})+${e}),${r})`,t)}function kt(e,t,r){return t[e]?`scale(\"${t[e]}\",datum)`:qe(e,r[0].encode)}function It(e,t,r){return qe(\"fontSize\",e)||ze(\"fontSize\",t,r)}b.fromEntries=function(e,t){var r=t.length,n=t[r-1],a=t[r-2];let i=t[0],o=null,s=1;for(i&&\"load\"===i.type&&(i=t[1]),e.add(t[0]);s<r;++s)t[s].params.pulse=T(t[s-1]),e.add(t[s]),\"aggregate\"===t[s].type&&(o=t[s]);return new b(e,i,a,n,o)},b.prototype={countsRef(e,t,r){var n=this.counts||(this.counts={}),a=mt(t);let i,o,s;return null!=a&&(e=this.scope,i=n[a]),i?r&&r.field&&gt(e,i.agg.params,r):(s={groupby:e.fieldRef(t,\"key\"),pulse:T(this.output)},r&&r.field&&gt(e,s,r),o=e.add(xr(s)),i=e.add(E({pulse:T(o)})),i={agg:o,ref:T(i)},null!=a&&(n[a]=i)),i.ref},tuplesRef(){return T(this.values)},extentRef(e,t){return _t(e,this,\"extent\",\"extent\",t,!1)},domainRef(e,t){return _t(e,this,\"domain\",\"values\",t,!1)},valuesRef(e,t,r){return _t(e,this,\"vals\",\"values\",t,r||!0)},lookupRef(e,t){return _t(e,this,\"lookup\",\"tupleindex\",t,!1)},indataRef(e,t){return _t(e,this,\"indata\",\"tupleindex\",t,!0,!0)}};const Ln=`item.orient===\"${l}\"?-90:item.orient===\"${g}\"?90:0`;function Rt(e,t){var r=O(e=y.isString(e)?{text:e}:e,t.config.title),n=e.encode||{},a=n.group||{},i=a.name||void 0,o=a.interactive,s=a.style,l=[],c=T(t.add(E(null,[{}])));l.push(Pt(e,r,Nt(e),c)),e.subtitle&&l.push(Dt(e,r,n.subtitle,c)),bt(Ve({role:Er,from:c,encode:Mt(r,a),marks:l,aria:r(\"aria\"),description:r(\"description\"),zindex:r(\"zindex\"),name:i,interactive:o,style:s}),t)}function Nt(e){var t=e.encode;return t&&t.title||y.extend({name:e.name,interactive:e.interactive,style:e.style},t)}function Mt(e,t){var r={enter:{},update:{}};return S(r,{orient:e(\"orient\"),anchor:e(\"anchor\"),align:{signal:vn},angle:{signal:Ln},limit:e(\"limit\"),frame:e(\"frame\"),offset:e(\"offset\")||0,padding:e(\"subtitlePadding\")}),A(r,t,N)}function Pt(e,t,r,n){var a={value:0},a={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return S(a,{text:e.text,align:{signal:\"item.mark.group.align\"},angle:{signal:\"item.mark.group.angle\"},limit:{signal:\"item.mark.group.limit\"},baseline:\"top\",dx:t(\"dx\"),dy:t(\"dy\"),fill:t(\"color\"),font:t(\"font\"),fontSize:t(\"fontSize\"),fontStyle:t(\"fontStyle\"),fontWeight:t(\"fontWeight\"),lineHeight:t(\"lineHeight\")},{align:t(\"align\"),angle:t(\"angle\"),baseline:t(\"baseline\")}),C({type:D,role:Sr,style:fn,from:n,encode:a},r)}function Dt(e,t,r,n){var a={value:0},a={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return S(a,{text:e.subtitle,align:{signal:\"item.mark.group.align\"},angle:{signal:\"item.mark.group.angle\"},limit:{signal:\"item.mark.group.limit\"},baseline:\"top\",dx:t(\"dx\"),dy:t(\"dy\"),fill:t(\"subtitleColor\"),font:t(\"subtitleFont\"),fontSize:t(\"subtitleFontSize\"),fontStyle:t(\"subtitleFontStyle\"),fontWeight:t(\"subtitleFontWeight\"),lineHeight:t(\"subtitleLineHeight\")},{align:t(\"align\"),angle:t(\"angle\"),baseline:t(\"baseline\")}),C({type:D,role:Ar,style:hn,from:n,encode:a},r)}function xt(t,r){const n=[];t.transform&&t.transform.forEach(e=>{n.push(ot(e,r))}),t.on&&t.on.forEach(e=>{vt(e,r,t.name)}),r.addDataPipeline(t.name,Lt(t,r,n))}function Lt(e,t,r){var n=[];let a=null,i=!1,o=!1,s,l,c,u,d;for(e.values?p(e.values)||fe(e.format)?(n.push(Ft(t,e)),n.push(a=f())):n.push(a=f({$ingest:e.values,$format:e.format})):e.url?fe(e.url)||fe(e.format)?(n.push(Ft(t,e)),n.push(a=f())):n.push(a=f({$request:e.url,$format:e.format})):e.source&&(a=s=y.array(e.source).map(e=>T(t.getData(e).output)),n.push(null)),l=0,c=r.length;l<c;++l)d=(u=r[l]).metadata,a||d.source||n.push(a=f()),n.push(u),d.generates&&(o=!0),d.modifies&&!o&&(i=!0),d.source?a=u:d.changes&&(a=null);return s&&(c=s.length-1,n[0]=tn({derive:i,pulse:c?s:s[0]}),i||c)&&n.splice(1,0,f()),a||n.push(f()),n.push(k({})),n}function f(e){e=E({},e);return e.metadata={source:!0},e}function Ft(e,t){return Wr({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}const Fn=e=>e===_||e===h,Un=(e,t,r)=>p(e)?Vn(e.signal,t,r):e===l||e===h?t:r,x=(e,t,r)=>p(e)?Hn(e.signal,t,r):Fn(e)?t:r,L=(e,t,r)=>p(e)?Gn(e.signal,t,r):Fn(e)?r:t,Bn=(e,t,r)=>p(e)?qn(e.signal,t,r):e===h?{value:t}:{value:r},jn=(e,t,r)=>p(e)?zn(e.signal,t,r):e===g?{value:t}:{value:r},Hn=(e,t,r)=>Wn(`${e} === '${h}' || ${e} === '${_}'`,t,r),Gn=(e,t,r)=>Wn(`${e} !== '${h}' && ${e} !== '${_}'`,t,r),Vn=(e,t,r)=>Kn(`${e} === '${l}' || ${e} === '${h}'`,t,r),qn=(e,t,r)=>Kn(`${e} === '${h}'`,t,r),zn=(e,t,r)=>Kn(`${e} === '${g}'`,t,r),Wn=(e,t,r)=>(t=null!=t?w(t):t,r=null!=r?w(r):r,$n(t)&&$n(r)?{signal:e+` ? (${t=t?t.signal||y.stringValue(t.value):null}) : (${r=r?r.signal||y.stringValue(r.value):null})`}:[y.extend({test:e},t)].concat(r||[])),$n=e=>null==e||1===Object.keys(e).length,Kn=(e,t,r)=>({signal:`${e} ? (${F(t)}) : (${F(r)})`}),Yn=(e,t,r,n,a)=>({signal:(null!=n?`${e} === '${l}' ? (${F(n)}) : `:\"\")+(null!=r?`${e} === '${_}' ? (${F(r)}) : `:\"\")+(null!=a?`${e} === '${g}' ? (${F(a)}) : `:\"\")+(null!=t?`${e} === '${h}' ? (${F(t)}) : `:\"\")+\"(null)\"}),F=e=>p(e)?e.signal:null==e?null:y.stringValue(e),Jn=(e,t)=>0===t?0:p(e)?{signal:`(${e.signal}) * `+t}:{value:e*t},U=(e,t)=>{var r=e.signal;return r&&r.endsWith(\"(null)\")?{signal:r.slice(0,-6)+t.signal}:e};function d(e,t,r,n){let a;if(t&&y.hasOwnProperty(t,e))return t[e];if(y.hasOwnProperty(r,e))return r[e];if(e.startsWith(\"title\")){switch(e){case\"titleColor\":a=\"fill\";break;case\"titleFont\":case\"titleFontSize\":case\"titleFontWeight\":a=e[5].toLowerCase()+e.slice(6)}return n[pn][a]}if(e.startsWith(\"label\")){switch(e){case\"labelColor\":a=\"fill\";break;case\"labelFont\":case\"labelFontSize\":a=e[5].toLowerCase()+e.slice(6)}return n[R][a]}return null}function Ut(e){var t={};for(const r of e)if(r)for(const n in r)t[n]=1;return Object.keys(t)}function Bt(e,t){var r,n,a=t.config,i=a.style,o=a.axis,t=\"band\"===t.scaleType(e.scale)&&a.axisBand,s=e.orient;if(p(s)){var e=Ut([a.axisX,a.axisY]),l=Ut([a.axisTop,a.axisBottom,a.axisLeft,a.axisRight]),c={};for(n of e)c[n]=x(s,d(n,a.axisX,o,i),d(n,a.axisY,o,i));r={};for(n of l)r[n]=Yn(s.signal,d(n,a.axisTop,o,i),d(n,a.axisBottom,o,i),d(n,a.axisLeft,o,i),d(n,a.axisRight,o,i))}else c=s===h||s===_?a.axisX:a.axisY,r=a[\"axis\"+s[0].toUpperCase()+s.slice(1)];return c||r||t?y.extend({},o,c,r,t):o}function jt(e,t,r,n){var a,i,t=O(e,t),o=e.orient,s={enter:a={opacity:M},update:i={opacity:P},exit:{opacity:M}},t=(S(s,{stroke:t(\"domainColor\"),strokeCap:t(\"domainCap\"),strokeDash:t(\"domainDash\"),strokeDashOffset:t(\"domainDashOffset\"),strokeWidth:t(\"domainWidth\"),strokeOpacity:t(\"domainOpacity\")}),Ht(e,0)),e=Ht(e,1);return a.x=i.x=x(o,t,M),a.x2=i.x2=x(o,e),a.y=i.y=L(o,t,M),a.y2=i.y2=L(o,e),C({type:\"rule\",role:hr,from:n,encode:s},r)}function Ht(e,t){return{scale:e.scale,range:t}}function Gt(e,t,r,n,a){var i,o,s,t=O(e,t),l=e.orient,c=e.gridScale,u=Un(l,1,-1),d=Vt(e.offset,u),p={enter:i={opacity:M},update:s={opacity:P},exit:o={opacity:M}},e=(S(p,{stroke:t(\"gridColor\"),strokeCap:t(\"gridCap\"),strokeDash:t(\"gridDash\"),strokeDashOffset:t(\"gridDashOffset\"),strokeOpacity:t(\"gridOpacity\"),strokeWidth:t(\"gridWidth\")}),{scale:e.scale,field:I,band:a.band,extra:a.extra,offset:a.offset,round:t(\"tickRound\")}),a=x(l,{signal:\"height\"},{signal:\"width\"}),t=c?{scale:c,range:0,mult:u,offset:d}:{value:0,offset:d},c=c?{scale:c,range:1,mult:u,offset:d}:y.extend(a,{mult:u,offset:d});return i.x=s.x=x(l,e,t),i.y=s.y=L(l,e,t),i.x2=s.x2=L(l,c),i.y2=s.y2=x(l,c),o.x=x(l,e),o.y=L(l,e),C({type:\"rule\",role:\"axis-grid\",key:I,from:n,encode:p},r)}function Vt(t,r){if(1!==r)if(y.isObject(t)){let e=t=y.extend({},t);for(;null!=e.mult;){if(!y.isObject(e.mult))return e.mult=p(r)?{signal:`(${e.mult}) * (${r.signal})`}:e.mult*r,t;e=e.mult=y.extend({},e.mult)}e.mult=r}else t=p(r)?{signal:`(${r.signal}) * (${t||0})`}:r*(t||0);return t}function qt(e,t,r,n,a,i){var o,s,l,t=O(e,t),c=e.orient,u=Un(c,-1,1),d={enter:o={opacity:M},update:l={opacity:P},exit:s={opacity:M}},a=(S(d,{stroke:t(\"tickColor\"),strokeCap:t(\"tickCap\"),strokeDash:t(\"tickDash\"),strokeDashOffset:t(\"tickDashOffset\"),strokeOpacity:t(\"tickOpacity\"),strokeWidth:t(\"tickWidth\")}),w(a)),u=(a.mult=u,{scale:e.scale,field:I,band:i.band,extra:i.extra,offset:i.offset,round:t(\"tickRound\")});return l.y=o.y=x(c,M,u),l.y2=o.y2=x(c,a),s.x=x(c,u),l.x=o.x=L(c,M,u),l.x2=o.x2=L(c,a),s.y=L(c,u),C({type:\"rule\",role:\"axis-tick\",key:I,from:n,encode:d},r)}function zt(e,t,r,n,a){return{signal:'flush(range(\"'+e+'\"), scale(\"'+e+'\", datum.value), '+t+\",\"+r+\",\"+n+\",\"+a+\")\"}}function Wt(e,t,r,n,a,i){var t=O(e,t),o=e.orient,e=e.scale,s=Un(o,-1,1),l=v(t(\"labelFlush\")),c=v(t(\"labelFlushOffset\")),u=t(\"labelAlign\"),d=t(\"labelBaseline\"),p=0===l||!!l,a=w(a),s=(a.mult=s,a.offset=w(t(\"labelPadding\")||0),a.offset.mult=s,{scale:e,field:I,band:.5,offset:Ke(i.offset,t(\"labelOffset\"))}),i=x(o,p?zt(e,l,'\"left\"','\"right\"','\"center\"'):{value:\"center\"},jn(o,\"left\",\"right\")),f=x(o,Bn(o,\"bottom\",\"top\"),p?zt(e,l,'\"top\"','\"bottom\"','\"middle\"'):{value:\"middle\"}),l=zt(e,l,`-(${c})`,c,0),p=p&&c,c={opacity:M,x:x(o,s,a),y:L(o,s,a)},a={enter:c,update:s={opacity:P,text:{field:\"label\"},x:c.x,y:c.y,align:i,baseline:f},exit:{opacity:M,x:c.x,y:c.y}},c=(S(a,{dx:!u&&p?x(o,l):null,dy:!d&&p?L(o,l):null}),S(a,{angle:t(\"labelAngle\"),fill:t(\"labelColor\"),fillOpacity:t(\"labelOpacity\"),font:t(\"labelFont\"),fontSize:t(\"labelFontSize\"),fontWeight:t(\"labelFontWeight\"),fontStyle:t(\"labelFontStyle\"),limit:t(\"labelLimit\"),lineHeight:t(\"labelLineHeight\")},{align:u,baseline:d}),t(\"labelBound\")),p=(p=t(\"labelOverlap\"))||c?{separation:t(\"labelSeparation\"),method:p,order:\"datum.index\",bound:c?{scale:e,orient:o,tolerance:c}:null}:void 0;return s.align!==i&&(s.align=U(s.align,i)),s.baseline!==f&&(s.baseline=U(s.baseline,f)),C({type:D,role:mr,style:R,key:I,from:n,encode:a,overlap:p},r)}function $t(e,t,r,n){var a,i,t=O(e,t),o=e.orient,s=Un(o,-1,1),l={enter:a={opacity:M,anchor:w(t(\"titleAnchor\",null)),align:{signal:vn}},update:i=y.extend({},a,{opacity:P,text:w(e.title)}),exit:{opacity:M}},e={signal:`lerp(range(\"${e.scale}\"), ${We(0,1,.5)})`};return i.x=x(o,e),i.y=L(o,e),a.angle=x(o,M,Jn(s,90)),a.baseline=x(o,Bn(o,_,h),{value:_}),i.angle=a.angle,i.baseline=a.baseline,S(l,{fill:t(\"titleColor\"),fillOpacity:t(\"titleOpacity\"),font:t(\"titleFont\"),fontSize:t(\"titleFontSize\"),fontStyle:t(\"titleFontStyle\"),fontWeight:t(\"titleFontWeight\"),limit:t(\"titleLimit\"),lineHeight:t(\"titleLineHeight\")},{align:t(\"titleAlign\"),angle:t(\"titleAngle\"),baseline:t(\"titleBaseline\")}),Kt(t,o,l,r),l.update.align=U(l.update.align,a.align),l.update.angle=U(l.update.angle,a.angle),l.update.baseline=U(l.update.baseline,a.baseline),C({type:D,role:gr,style:pn,from:n,encode:l},r)}function Kt(e,t,r,n){var a=(e,t)=>null!=e?(r.update[t]=U(w(e),r.update[t]),!1):!u(t,n),i=a(e(\"titleX\"),\"x\"),a=a(e(\"titleY\"),\"y\");r.enter.auto=a===i?w(a):x(t,w(a),w(i))}function Yt(e,t){var r=Bt(e,t),n=e.encode||{},a=n.axis||{},i=a.name||void 0,o=a.interactive,s=a.style,l=O(e,r),c=$e(l),u={scale:e.scale,ticks:!!l(\"ticks\"),labels:!!l(\"labels\"),grid:!!l(\"grid\"),domain:!!l(\"domain\"),title:null!=e.title},d=T(t.add(E({},[u]))),p=T(t.add(Lr({scale:t.scaleRef(e.scale),extra:t.property(c.extra),count:t.objectProperty(e.tickCount),values:t.objectProperty(e.values),minstep:t.property(e.tickMinStep),formatType:t.property(e.formatType),formatSpecifier:t.property(e.format)}))),f=[];let h;return u.grid&&f.push(Gt(e,r,n.grid,p,c)),u.ticks&&(h=l(\"tickSize\"),f.push(qt(e,r,n.ticks,p,h,c))),u.labels&&(h=u.ticks?h:0,f.push(Wt(e,r,n.labels,p,h,c))),u.domain&&f.push(jt(e,r,n.domain,d)),u.title&&f.push($t(e,r,n.title,d)),bt(Ve({role:fr,from:d,encode:A(Jt(l,e),a,N),marks:f,aria:l(\"aria\"),description:l(\"description\"),zindex:l(\"zindex\"),name:i,interactive:o,style:s}),t)}function Jt(e,t){var r={enter:{},update:{}};return S(r,{orient:e(\"orient\"),offset:e(\"offset\")||0,position:m(t.position,0),titlePadding:e(\"titlePadding\"),minExtent:e(\"minExtent\"),maxExtent:e(\"maxExtent\"),range:{signal:`abs(span(range(\"${t.scale}\")))`},translate:e(\"translate\"),format:t.format,formatType:t.formatType}),r}function Qt(e,t,r){var n=y.array(e.signals),a=y.array(e.scales);return r||n.forEach(e=>ne(e,t)),y.array(e.projections).forEach(e=>He(e,t)),a.forEach(e=>Ae(e,t)),y.array(e.data).forEach(e=>xt(e,t)),a.forEach(e=>Oe(e,t)),(r||n).forEach(e=>Se(e,t)),y.array(e.axes).forEach(e=>Yt(e,t)),y.array(e.marks).forEach(e=>bt(e,t)),y.array(e.legends).forEach(e=>St(e,t)),e.title&&Rt(e.title,t),t.parseLambdas(),t}const Qn=e=>A({enter:{x:{value:0},y:{value:0}},update:{width:{signal:\"width\"},height:{signal:\"height\"}}},e);function Zt(e,t){var r=t.config,n=T(t.root=t.add(oe())),a=er(e,r),r=(a.forEach(e=>ne(e,t)),t.description=e.description||r.description,t.eventConfig=r.events,t.legends=t.objectProperty(r.legend&&r.legend.layout),t.locale=r.locale,t.add(E())),i=t.add(jr(Z(Qn(e.encode),Tn,dr,e.style,t,{pulse:T(r)}))),o=t.add(on({layout:t.objectProperty(e.layout),legends:t.legends,autosize:t.signalRef(\"autosize\"),mark:n,pulse:T(i)})),i=(t.operators.pop(),t.pushState(T(i),T(o),null),Qt(e,t,a),t.operators.push(o),t.add(Fr({mark:n,pulse:T(o)}))),i=t.add(rn({pulse:T(i)}));return i=t.add(k({pulse:T(i)})),t.addData(\"root\",new b(t,r,r,i)),t}function Xt(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function er(t,r){const e=e=>m(t[e],r[e]),n=[Xt(\"background\",e(\"background\")),Xt(\"autosize\",H(e(\"autosize\"))),Xt(\"padding\",G(e(\"padding\"))),Xt(\"width\",e(\"width\")||0),Xt(\"height\",e(\"height\")||0)],a=n.reduce((e,t)=>(e[t.name]=t,e),{}),i={};return y.array(t.signals).forEach(e=>{y.hasOwnProperty(a,e.name)?e=y.extend(a[e.name],e):n.push(e),i[e.name]=e}),y.array(r.signals).forEach(e=>{y.hasOwnProperty(i,e.name)||y.hasOwnProperty(a,e.name)||n.push(e)}),n}function tr(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function rr(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}function nr(e){return(y.isArray(e)?ar:ir)(e)}function ar(t){var r=t.length;let n=\"[\";for(let e=0;e<r;++e){var a=t[e];n+=(0<e?\",\":\"\")+(y.isObject(a)?a.signal||nr(a):y.stringValue(a))}return n+\"]\"}function ir(e){let t=\"{\",r=0,n,a;for(n in e)a=e[n],t+=(1<++r?\",\":\"\")+y.stringValue(n)+\":\"+(y.isObject(a)?a.signal||nr(a):y.stringValue(a));return t+\"}\"}function or(){var e=\"sans-serif\",t=\"#4c78a8\",r=\"#000\";return{description:\"Vega visualization\",padding:0,autosize:\"pad\",background:null,events:{defaults:{allow:[\"wheel\"]}},group:null,mark:null,arc:{fill:t},area:{fill:t},image:null,line:{stroke:t,strokeWidth:2},path:{stroke:t},rect:{fill:t},rule:{stroke:r},shape:{stroke:t},symbol:{fill:t,size:64},text:{fill:r,font:e,fontSize:11},trail:{fill:t,size:2},style:{\"guide-label\":{fill:r,font:e,fontSize:10},\"guide-title\":{fill:r,font:e,fontSize:11,fontWeight:\"bold\"},\"group-title\":{fill:r,font:e,fontSize:13,fontWeight:\"bold\"},\"group-subtitle\":{fill:r,font:e,fontSize:12},point:{size:30,strokeWidth:2,shape:\"circle\"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:\"square\"},cell:{fill:\"transparent\",stroke:\"#ddd\"},view:{fill:\"transparent\"}},title:{orient:\"top\",anchor:\"middle\",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:\"#888\",grid:!1,gridWidth:1,gridColor:\"#ddd\",labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:\"#888\",tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:\"mercator\"},legend:{orient:\"right\",padding:0,gridAlign:\"each\",columnPadding:10,rowPadding:2,symbolDirection:\"vertical\",gradientDirection:\"vertical\",gradientLength:200,gradientThickness:16,gradientStrokeColor:\"#ddd\",gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:\"left\",labelBaseline:\"middle\",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:\"circle\",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:\"transparent\",symbolBaseStrokeColor:\"#888\",titleLimit:180,titleOrient:\"top\",titlePadding:5,layout:{offset:18,direction:\"horizontal\",left:{direction:\"vertical\"},right:{direction:\"vertical\"}}},range:{category:{scheme:\"tableau10\"},ordinal:{scheme:\"blues\"},heatmap:{scheme:\"yellowgreenblue\"},ramp:{scheme:\"blues\"},diverging:{scheme:\"blueorange\",extent:[1,0]},symbol:[\"circle\",\"square\",\"triangle-up\",\"cross\",\"diamond\",\"triangle-right\",\"triangle-down\",\"triangle-left\"]}}}function sr(e,t,r){return y.isObject(e)||y.error(\"Input Vega specification must be an object.\"),Zt(e,new tr(t=y.mergeConfig(or(),t,e.config),r)).toRuntime()}tr.prototype=rr.prototype={parse(e){return Qt(e,this)},fork(){return new rr(this)},isSubscope(){return 0<this._subid},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+\":\":0)+this._id++},add(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(e=>{e.$ref=t.id}),t.refs=null),t},proxy(e){e=e instanceof ae?T(e):e;return this.add(en({value:e}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;for(e in this.root&&(this.root.root=!0),this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function r(e,t,r){e&&((e=e.data||(e.data={}))[t]||(e[t]=[])).push(r)}for(e in this.data){r((t=this.data[e]).input,e,\"input\"),r(t.output,e,\"output\"),r(t.values,e,\"values\");for(const n in t.index)r(t.index[n],e,\"index:\"+n)}return this},pushState(e,t,r){this._encode.push(T(this.add(k({pulse:e})))),this._parent.push(t),this._lookup.push(r?T(this.proxy(r)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return y.peek(this._parent)},encode(){return y.peek(this._encode)},lookup(){return y.peek(this._lookup)},markpath(){var e=this._markpath;return++e[e.length-1]},fieldRef(e,t){if(y.isString(e))return se(e,t);e.signal||y.error(\"Unsupported field reference: \"+y.stringValue(e));var r,e=e.signal;let n=this.field[e];return n||(r={name:this.signalRef(e)},t&&(r.as=t),this.field[e]=n=T(this.add(Vr(r)))),n},compareRef(e){let t=!1;var r=e=>p(e)?(t=!0,this.signalRef(e.signal)):pe(e)?(t=!0,this.exprRef(e.expr)):e,n=y.array(e.field).map(r),e=y.array(e.order).map(r);return t?T(this.add(Ur({fields:n,orders:e}))):le(n,e)},keyRef(e,t){let r=!1;const n=this.signals;return e=y.array(e).map(e=>p(e)?(r=!0,T(n[e.signal])):e),r?T(this.add(qr({fields:e,flat:t}))):ce(e,t)},sortRef(e){var t,r;return e&&(t=de(e.op,e.field),(r=e.order||\"ascending\").signal?T(this.add(Ur({fields:t,orders:this.signalRef(r.signal)}))):le(t,r))},event(e,t){var r,n=e+\":\"+t;return this.events[n]||(r=this.id(),this.streams.push({id:r,source:e,type:t}),this.events[n]=r),this.events[n]},hasOwnSignal(e){return y.hasOwnProperty(this.signals,e)},addSignal(e,t){this.hasOwnSignal(e)&&y.error(\"Duplicate signal name: \"+y.stringValue(e));t=t instanceof ae?t:this.add(oe(t));return this.signals[e]=t},getSignal(e){return this.signals[e]||y.error(\"Unrecognized signal name: \"+y.stringValue(e)),this.signals[e]},signalRef(e){return this.signals[e]?T(this.signals[e]):(y.hasOwnProperty(this.lambdas,e)||(this.lambdas[e]=this.add(oe(null))),T(this.lambdas[e]))},parseLambdas(){var r=Object.keys(this.lambdas);for(let e=0,t=r.length;e<t;++e){var n=r[e],a=c.parseExpression(n,this),n=this.lambdas[n];n.params=a.$params,n.update=a.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return e&&y.isObject(e)?this.signalRef(e.signal||nr(e)):e},exprRef(e,t){e={expr:c.parseExpression(e,this)};return t&&(e.expr.$name=t),T(this.add(Hr(e)))},addBinding(e,t){this.bindings||y.error(\"Nested signals do not support binding: \"+y.stringValue(e)),this.bindings.push(y.extend({signal:e},t))},addScaleProj(e,t){y.hasOwnProperty(this.scales,e)&&y.error(\"Duplicate scale or projection name: \"+y.stringValue(e)),this.scales[e]=this.add(t)},addScale(e,t){this.addScaleProj(e,nn(t))},addProjection(e,t){this.addScaleProj(e,Xr(t))},getScale(e){return this.scales[e]||y.error(\"Unrecognized scale name: \"+y.stringValue(e)),this.scales[e]},scaleRef(e){return T(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,t){return y.hasOwnProperty(this.data,e)&&y.error(\"Duplicate data set name: \"+y.stringValue(e)),this.data[e]=t},getData(e){return this.data[e]||y.error(\"Undefined data set name: \"+y.stringValue(e)),this.data[e]},addDataPipeline(e,t){return y.hasOwnProperty(this.data,e)&&y.error(\"Duplicate data set name: \"+y.stringValue(e)),this.addData(e,b.fromEntries(this,t))}},e.AxisDomainRole=hr,e.AxisGridRole=\"axis-grid\",e.AxisLabelRole=mr,e.AxisRole=fr,e.AxisTickRole=\"axis-tick\",e.AxisTitleRole=gr,e.DataScope=b,e.FrameRole=dr,e.LegendEntryRole=yr,e.LegendLabelRole=Tr,e.LegendRole=_r,e.LegendSymbolRole=vr,e.LegendTitleRole=br,e.MarkRole=ur,e.Scope=tr,e.ScopeRole=pr,e.config=or,e.parse=sr,e.signal=ne,e.signalUpdates=Se,e.stream=o}}return m2.exports}function T2(){function e(r){var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){var t;\"default\"!==e&&(t=Object.getOwnPropertyDescriptor(r,e),Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}}))}),n.default=r,Object.freeze(n)}var t,r,n,a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b,E,S,A,O,C,w;return h2||(h2=1,t=BP,r=HP(),n=rD(),a=lD(),i=vD(),o=SD(),s=ID(),l=MD(),c=xD(),u=UD(),d=HD(),p=qD(),f=$D(),h=JD(),m=sD(),g=XP(),_=tD(),y=TD(),T=yD(),v=kD(),b=d2(),E=eD(),S=o2(),A=y2(),O=u2(),C=t2(),w=_2(),a=e(a),i=e(i),o=e(o),s=e(s),l=e(l),c=e(c),r.extend(n.transforms,a,i,o,s,l,e(u),c,e(d),e(p),e(f),e(h)),Object.defineProperty(t,\"Dataflow\",{enumerable:!0,get:function(){return n.Dataflow}}),Object.defineProperty(t,\"EventStream\",{enumerable:!0,get:function(){return n.EventStream}}),Object.defineProperty(t,\"MultiPulse\",{enumerable:!0,get:function(){return n.MultiPulse}}),Object.defineProperty(t,\"Operator\",{enumerable:!0,get:function(){return n.Operator}}),Object.defineProperty(t,\"Parameters\",{enumerable:!0,get:function(){return n.Parameters}}),Object.defineProperty(t,\"Pulse\",{enumerable:!0,get:function(){return n.Pulse}}),Object.defineProperty(t,\"Transform\",{enumerable:!0,get:function(){return n.Transform}}),Object.defineProperty(t,\"changeset\",{enumerable:!0,get:function(){return n.changeset}}),Object.defineProperty(t,\"definition\",{enumerable:!0,get:function(){return n.definition}}),Object.defineProperty(t,\"ingest\",{enumerable:!0,get:function(){return n.ingest}}),Object.defineProperty(t,\"isTuple\",{enumerable:!0,get:function(){return n.isTuple}}),Object.defineProperty(t,\"transform\",{enumerable:!0,get:function(){return n.transform}}),Object.defineProperty(t,\"transforms\",{enumerable:!0,get:function(){return n.transforms}}),Object.defineProperty(t,\"tupleid\",{enumerable:!0,get:function(){return n.tupleid}}),Object.defineProperty(t,\"interpolate\",{enumerable:!0,get:function(){return T.interpolate}}),Object.defineProperty(t,\"interpolateColors\",{enumerable:!0,get:function(){return T.interpolateColors}}),Object.defineProperty(t,\"interpolateRange\",{enumerable:!0,get:function(){return T.interpolateRange}}),Object.defineProperty(t,\"quantizeInterpolator\",{enumerable:!0,get:function(){return T.quantizeInterpolator}}),Object.defineProperty(t,\"scale\",{enumerable:!0,get:function(){return T.scale}}),Object.defineProperty(t,\"scheme\",{enumerable:!0,get:function(){return T.scheme}}),Object.defineProperty(t,\"projection\",{enumerable:!0,get:function(){return v.projection}}),Object.defineProperty(t,\"View\",{enumerable:!0,get:function(){return b.View}}),Object.defineProperty(t,\"defaultLocale\",{enumerable:!0,get:function(){return E.defaultLocale}}),Object.defineProperty(t,\"formatLocale\",{enumerable:!0,get:function(){return E.numberFormatDefaultLocale}}),Object.defineProperty(t,\"locale\",{enumerable:!0,get:function(){return E.locale}}),Object.defineProperty(t,\"resetDefaultLocale\",{enumerable:!0,get:function(){return E.resetDefaultLocale}}),Object.defineProperty(t,\"timeFormatLocale\",{enumerable:!0,get:function(){return E.timeFormatDefaultLocale}}),Object.defineProperty(t,\"expressionFunction\",{enumerable:!0,get:function(){return S.expressionFunction}}),Object.defineProperty(t,\"parse\",{enumerable:!0,get:function(){return A.parse}}),Object.defineProperty(t,\"runtimeContext\",{enumerable:!0,get:function(){return O.context}}),Object.defineProperty(t,\"codegenExpression\",{enumerable:!0,get:function(){return C.codegenExpression}}),Object.defineProperty(t,\"parseExpression\",{enumerable:!0,get:function(){return C.parseExpression}}),Object.defineProperty(t,\"parseSelector\",{enumerable:!0,get:function(){return w.parseSelector}}),t.version=\"5.30.0\",Object.keys(r).forEach(function(e){\"default\"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}),Object.keys(m).forEach(function(e){\"default\"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return m[e]}})}),Object.keys(g).forEach(function(e){\"default\"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return g[e]}})}),Object.keys(_).forEach(function(e){\"default\"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return _[e]}})}),Object.keys(y).forEach(function(e){\"default\"===e||Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return y[e]}})})),BP}var v2,b2={exports:{}};function E2(){return v2||(v2=1,function(e,te){var n,a,i,o,s,l,c,u,p,f,h,v,E,O,W,$,K,Y,J,Q,Z,X,ee,ie={name:\"vega-lite\",author:'Dominik Moritz, Kanit \"Ham\" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',version:\"5.19.0\",collaborators:[\"Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)\",\"Dominik Moritz (https://www.domoritz.de)\",\"Arvind Satyanarayan (https://arvindsatya.com)\",\"Jeffrey Heer (https://jheer.org)\"],homepage:\"https://vega.github.io/vega-lite/\",description:\"Vega-Lite is a concise high-level language for interactive visualization.\",keywords:[\"vega\",\"chart\",\"visualization\"],main:\"build/vega-lite.js\",unpkg:\"build/vega-lite.min.js\",jsdelivr:\"build/vega-lite.min.js\",module:\"build/src/index\",types:\"build/src/index.d.ts\",bin:{vl2pdf:\"./bin/vl2pdf\",vl2png:\"./bin/vl2png\",vl2svg:\"./bin/vl2svg\",vl2vg:\"./bin/vl2vg\"},files:[\"bin\",\"build\",\"src\",\"vega-lite*\",\"tsconfig.json\"],scripts:{changelog:\"conventional-changelog -p angular -r 2\",prebuild:\"yarn clean:build\",build:\"yarn build:only\",\"build:only\":\"tsc -p tsconfig.build.json && rollup -c\",\"prebuild:examples\":\"yarn build:only\",\"build:examples\":\"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh\",\"prebuild:examples-full\":\"yarn build:only\",\"build:examples-full\":\"TZ=America/Los_Angeles scripts/build-examples.sh 1\",\"build:example\":\"TZ=America/Los_Angeles scripts/build-example.sh\",\"build:toc\":\"yarn build:jekyll && scripts/generate-toc\",\"build:site\":\"rollup -c site/rollup.config.mjs\",\"build:jekyll\":\"pushd site && bundle exec jekyll build -q && popd\",\"build:versions\":\"scripts/update-version.sh\",clean:\"yarn clean:build && del-cli 'site/data/*' 'examples/compiled/*.png' && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete\",\"clean:build\":\"del-cli 'build/*' !build/vega-lite-schema.json\",data:\"rsync -r node_modules/vega-datasets/data/* site/data\",\"build-editor-preview\":\"scripts/build-editor-preview.sh\",schema:\"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/\",renameschema:\"scripts/rename-schema.sh\",presite:\"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh\",site:\"yarn site:only\",\"site:only\":\"pushd site && bundle exec jekyll serve -I -l && popd\",prettierbase:\"prettier '**/*.{md,css,yml}'\",format:\"eslint . --fix && yarn prettierbase --write\",lint:\"eslint . && yarn prettierbase --check\",test:\"yarn jest test/ && yarn lint && yarn schema && yarn jest examples/ && yarn test:runtime\",\"test:cover\":\"yarn jest --collectCoverage test/\",\"test:inspect\":\"node --inspect-brk ./node_modules/.bin/jest --runInBand test\",\"test:runtime\":\"TZ=America/Los_Angeles npx jest test-runtime/ --config test-runtime/jest-config.json\",\"test:runtime:generate\":\"yarn build:only && del-cli test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime\",watch:\"tsc -p tsconfig.build.json -w\",\"watch:site\":\"yarn build:site -w\",\"watch:test\":\"yarn jest --watch test/\",\"watch:test:runtime\":\"TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json\",release:\"release-it\"},repository:{type:\"git\",url:\"https://github.com/vega/vega-lite.git\"},license:\"BSD-3-Clause\",bugs:{url:\"https://github.com/vega/vega-lite/issues\"},devDependencies:{\"@babel/core\":\"^7.24.7\",\"@babel/preset-env\":\"^7.24.7\",\"@babel/preset-typescript\":\"^7.24.7\",\"@release-it/conventional-changelog\":\"^8.0.1\",\"@rollup/plugin-alias\":\"^5.1.0\",\"@rollup/plugin-babel\":\"^6.0.4\",\"@rollup/plugin-commonjs\":\"^25.0.7\",\"@rollup/plugin-json\":\"^6.1.0\",\"@rollup/plugin-node-resolve\":\"^15.2.3\",\"@rollup/plugin-terser\":\"^0.4.4\",\"@types/d3\":\"^7.4.3\",\"@types/jest\":\"^29.5.12\",\"@types/pako\":\"^2.0.3\",\"@typescript-eslint/eslint-plugin\":\"^7.13.0\",\"@typescript-eslint/parser\":\"^7.13.0\",ajv:\"^8.16.0\",\"ajv-formats\":\"^2.1.1\",cheerio:\"^1.0.0-rc.12\",\"conventional-changelog-cli\":\"^4.1.0\",d3:\"^7.9.0\",\"del-cli\":\"^5.1.0\",eslint:\"^8.57.0\",\"eslint-config-prettier\":\"^9.1.0\",\"eslint-plugin-jest\":\"^27.9.0\",\"eslint-plugin-prettier\":\"^5.1.3\",\"fast-json-stable-stringify\":\"~2.1.0\",\"highlight.js\":\"^11.9.0\",jest:\"^29.7.0\",\"jest-dev-server\":\"^10.0.0\",mkdirp:\"^3.0.1\",pako:\"^2.1.0\",prettier:\"^3.3.2\",puppeteer:\"^15.0.0\",\"release-it\":\"17.2.1\",rollup:\"^4.18.0\",\"rollup-plugin-bundle-size\":\"^1.0.3\",serve:\"^14.2.3\",terser:\"^5.31.1\",\"ts-jest\":\"^29.1.4\",\"ts-json-schema-generator\":\"^1.5.0\",typescript:\"~5.4.5\",\"vega-cli\":\"^5.28.0\",\"vega-datasets\":\"^2.8.1\",\"vega-embed\":\"^6.25.0\",\"vega-tooltip\":\"^0.34.0\",\"yaml-front-matter\":\"^4.1.1\"},dependencies:{\"json-stringify-pretty-compact\":\"~3.0.0\",tslib:\"~2.6.3\",\"vega-event-selector\":\"~3.0.1\",\"vega-expression\":\"~5.1.0\",\"vega-util\":\"~1.17.2\",yargs:\"~17.7.2\"},peerDependencies:{vega:\"^5.24.0\"},engines:{node:\">=18\"},packageManager:\"yarn@1.22.19\"};function oe(e){return!!e.or}function se(e){return!!e.and}function le(e){return!!e.not}function ce(e,t){if(le(e))ce(e.not,t);else if(se(e))for(const r of e.and)ce(r,t);else if(oe(e))for(const n of e.or)ce(n,t);else t(e)}function ue(e,t){if(le(e))return{not:ue(e.not,t)};else if(se(e))return{and:e.and.map(e=>ue(e,t))};else if(oe(e))return{or:e.or.map(e=>ue(e,t))};else return t(e)}const m=structuredClone;function de(e){throw new Error(e)}function pe(e,t){const r={};for(const n of t)if(te.hasOwnProperty(e,n))r[n]=e[n];return r}function fe(e,t){const r={...e};for(const n of t)delete r[n];return r}function S(e){if(te.isNumber(e))return e;const t=te.isString(e)?e:g(e);if(t.length<250)return t;let r=0;for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);r=(r<<5)-r+n;r=r&r}return r}function he(e){return e===false||e===null}function k(e,t){return e.includes(t)}function me(e,t){let r=0;for(const[n,a]of e.entries())if(t(a,n,r++))return true;return false}function ge(e,t){let r=0;for(const[n,a]of e.entries())if(!t(a,n,r++))return false;return true}function _e(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(const a of r)ye(e,a??{});return e}function ye(e,t){for(const r of A(t))te.writeConfig(e,r,t[r],true)}function Te(e,t){const r=[];const n={};let a;for(const i of e){a=t(i);if(a in n)continue;n[a]=1;r.push(i)}return r}function ve(e,t){const r=A(e);const n=A(t);if(r.length!==n.length)return false;for(const a of r)if(e[a]!==t[a])return false;return true}function be(e,t){if(e.size!==t.size)return false;for(const r of e)if(!t.has(r))return false;return true}function Ee(e,t){for(const r of e)if(t.has(r))return true;return false}function Se(e){const t=new Set;for(const r of e){const n=te.splitAccessPath(r);const a=n.map((e,t)=>t===0?e:`[${e}]`);const i=a.map((e,t)=>a.slice(0,t+1).join(\"\"));for(const o of i)t.add(o)}return t}function Ae(e,t){if(e===undefined||t===undefined)return true;return Ee(Se(e),Se(t))}function re(e){return A(e).length===0}Set.prototype[\"toJSON\"]=function(){return`Set(${[...this].map(e=>g(e)).join(\",\")})`};const A=Object.keys,C=Object.values,Oe=Object.entries;function Ce(e){return e===true||e===false}function w(e){const t=e.replace(/\\W/g,\"_\");return(e.match(/^\\d+/)?\"_\":\"\")+t}function we(e,t){if(le(e))return`!(${we(e.not,t)})`;else if(se(e))return`(${e.and.map(e=>we(e,t)).join(\") && (\")})`;else if(oe(e))return`(${e.or.map(e=>we(e,t)).join(\") || (\")})`;else return t(e)}function ke(e,t){if(t.length===0)return true;const r=t.shift();if(r in e&&ke(e[r],t))delete e[r];return re(e)}function Ie(e){return e.charAt(0).toUpperCase()+e.substr(1)}function Re(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"datum\";const r=te.splitAccessPath(e);const n=[];for(let e=1;e<=r.length;e++){const a=`[${r.slice(0,e).map(te.stringValue).join(\"][\")}]`;n.push(`${t}${a}`)}return n.join(\" && \")}function Ne(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"datum\";return`${t}[${te.stringValue(te.splitAccessPath(e).join(\".\"))}]`}function Me(e){return e.replace(/(\\[|\\]|\\.|'|\")/g,\"\\\\$1\")}function Pe(e){return`${te.splitAccessPath(e).map(Me).join(\"\\\\.\")}`}function De(e,t,r){return e.replace(new RegExp(t.replace(/[-/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"),\"g\"),r)}function xe(e){return`${te.splitAccessPath(e).join(\".\")}`}function Le(e){if(!e)return 0;return te.splitAccessPath(e).length}function I(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(const n of t)if(n!==undefined)return n;return undefined}let Fe=42;function Ue(e){const t=++Fe;return e?String(e)+t:t}function Be(){Fe=42}function je(e){return He(e)?e:`__${e}`}function He(e){return e.startsWith(\"__\")}function Ge(e){if(e===undefined)return undefined;return(e%360+360)%360}function Ve(e){if(te.isNumber(e))return true;return!isNaN(e)&&!isNaN(parseFloat(e))}const qe=Object.getPrototypeOf(structuredClone({}));function ze(r,n){if(r===n)return true;if(r&&n&&typeof r==\"object\"&&typeof n==\"object\"){if(r.constructor.name!==n.constructor.name)return false;let e;let t;if(Array.isArray(r)){e=r.length;if(e!=n.length)return false;for(t=e;t--!==0;)if(!ze(r[t],n[t]))return false;return true}if(r instanceof Map&&n instanceof Map){if(r.size!==n.size)return false;for(t of r.entries())if(!n.has(t[0]))return false;for(t of r.entries())if(!ze(t[1],n.get(t[0])))return false;return true}if(r instanceof Set&&n instanceof Set){if(r.size!==n.size)return false;for(t of r.entries())if(!n.has(t[0]))return false;return true}if(ArrayBuffer.isView(r)&&ArrayBuffer.isView(n)){e=r.length;if(e!=n.length)return false;for(t=e;t--!==0;)if(r[t]!==n[t])return false;return true}if(r.constructor===RegExp)return r.source===n.source&&r.flags===n.flags;if(r.valueOf!==Object.prototype.valueOf&&r.valueOf!==qe.valueOf)return r.valueOf()===n.valueOf();if(r.toString!==Object.prototype.toString&&r.toString!==qe.toString)return r.toString()===n.toString();const a=Object.keys(r);e=a.length;if(e!==Object.keys(n).length)return false;for(t=e;t--!==0;)if(!Object.prototype.hasOwnProperty.call(n,a[t]))return false;for(t=e;t--!==0;){const i=a[t];if(!ze(r[i],n[i]))return false}return true}return r!==r&&n!==n}function g(e){const l=[];return function e(t){if(t&&t.toJSON&&typeof t.toJSON===\"function\")t=t.toJSON();if(t===undefined)return undefined;if(typeof t==\"number\")return isFinite(t)?\"\"+t:\"null\";if(typeof t!==\"object\")return JSON.stringify(t);let r,n;if(Array.isArray(t)){n=\"[\";for(r=0;r<t.length;r++){if(r)n+=\",\";n+=e(t[r])||\"null\"}return n+\"]\"}if(t===null)return\"null\";if(l.includes(t))throw new TypeError(\"Converting circular structure to JSON\");const a=l.push(t)-1;const i=Object.keys(t).sort();n=\"\";for(r=0;r<i.length;r++){const o=i[r];const s=e(t[o]);if(!s)continue;if(n)n+=\",\";n+=JSON.stringify(o)+\":\"+s}l.splice(a,1);return`{${n}}`}(e)}const We=\"row\",$e=\"column\",Ke=\"facet\",R=\"x\",N=\"y\",Ye=\"x2\",Je=\"y2\",Qe=\"xOffset\",Ze=\"yOffset\",Xe=\"radius\",et=\"radius2\",tt=\"theta\",rt=\"theta2\",nt=\"latitude\",at=\"longitude\",it=\"latitude2\",ot=\"longitude2\",st=\"color\",lt=\"fill\",ct=\"stroke\",ut=\"shape\",dt=\"size\",pt=\"angle\",ft=\"opacity\",ht=\"fillOpacity\",mt=\"strokeOpacity\",gt=\"strokeWidth\",_t=\"strokeDash\",yt=\"text\",Tt=\"order\",vt=\"detail\",bt=\"key\",Et=\"tooltip\",St=\"href\",At=\"url\",Ot=\"description\",Ct={x:1,y:1,x2:1,y2:1},wt={theta:1,theta2:1,radius:1,radius2:1};function kt(e){return e in wt}const It={longitude:1,longitude2:1,latitude:1,latitude2:1};function Rt(e){switch(e){case nt:return\"y\";case it:return\"y2\";case at:return\"x\";case ot:return\"x2\"}}function Nt(e){return e in It}const Mt=A(It),Pt={...Ct,...wt,...It,xOffset:1,yOffset:1,color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,strokeDash:1,size:1,angle:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1,url:1,description:1};function Dt(e){return e===st||e===lt||e===ct}const xt={row:1,column:1,facet:1},Lt=A(xt),Ft={...Pt,...xt},Ut=A(Ft),{order:Bt,detail:jt,tooltip:Ht,...Gt}=Ft,{row:Vt,column:qt,facet:zt,...Wt}=Gt;function $t(e){return!!Wt[e]}function Kt(e){return!!Ft[e]}const Yt=[Ye,Je,it,ot,rt,et];function Jt(e){const t=Qt(e);return t!==e}function Qt(e){switch(e){case Ye:return R;case Je:return N;case it:return nt;case ot:return at;case rt:return tt;case et:return Xe}return e}function Zt(e){if(kt(e))switch(e){case tt:return\"startAngle\";case rt:return\"endAngle\";case Xe:return\"outerRadius\";case et:return\"innerRadius\"}return e}function Xt(e){switch(e){case R:return Ye;case N:return Je;case nt:return it;case at:return ot;case tt:return rt;case Xe:return et}return undefined}function er(e){switch(e){case R:case Ye:return\"width\";case N:case Je:return\"height\"}return undefined}function tr(e){switch(e){case R:return\"xOffset\";case N:return\"yOffset\";case Ye:return\"x2Offset\";case Je:return\"y2Offset\";case tt:return\"thetaOffset\";case Xe:return\"radiusOffset\";case rt:return\"theta2Offset\";case et:return\"radius2Offset\"}return undefined}function rr(e){switch(e){case R:return\"xOffset\";case N:return\"yOffset\"}return undefined}function nr(e){switch(e){case\"xOffset\":return\"x\";case\"yOffset\":return\"y\"}}const ar=A(Pt),{x:ir,y:or,x2:sr,y2:lr,xOffset:cr,yOffset:ur,latitude:dr,longitude:pr,latitude2:fr,longitude2:hr,theta:mr,theta2:gr,radius:_r,radius2:yr,...Tr}=Pt,vr=A(Tr),br={x:1,y:1},Er=A(br);function M(e){return e in br}const Sr={theta:1,radius:1},Ar=A(Sr);function Or(e){return e===\"width\"?R:N}const Cr={xOffset:1,yOffset:1};function wr(e){return e in Cr}const{text:kr,tooltip:Ir,href:Rr,url:Nr,description:Mr,detail:Pr,key:Dr,order:xr,...Lr}=Tr,Fr=A(Lr);function Ur(e){return!!Tr[e]}function Br(e){switch(e){case st:case lt:case ct:case dt:case ut:case ft:case gt:case _t:return true;case ht:case mt:case pt:return false}}const jr={...br,...Sr,...Cr,...Lr},Hr=A(jr);function Gr(e){return!!jr[e]}function Vr(e,t){return $r(e)[t]}const qr={arc:\"always\",area:\"always\",bar:\"always\",circle:\"always\",geoshape:\"always\",image:\"always\",line:\"always\",rule:\"always\",point:\"always\",rect:\"always\",square:\"always\",trail:\"always\",text:\"always\",tick:\"always\"},{geoshape:zr,...Wr}=qr;function $r(e){switch(e){case st:case lt:case ct:case Ot:case vt:case bt:case Et:case St:case Tt:case ft:case ht:case mt:case gt:case Ke:case We:case $e:return qr;case R:case N:case Qe:case Ze:case nt:case at:return Wr;case Ye:case Je:case it:case ot:return{area:\"always\",bar:\"always\",image:\"always\",rect:\"always\",rule:\"always\",circle:\"binned\",point:\"binned\",square:\"binned\",tick:\"binned\",line:\"binned\",trail:\"binned\"};case dt:return{point:\"always\",tick:\"always\",rule:\"always\",circle:\"always\",square:\"always\",bar:\"always\",text:\"always\",line:\"always\",trail:\"always\"};case _t:return{line:\"always\",point:\"always\",tick:\"always\",rule:\"always\",circle:\"always\",square:\"always\",bar:\"always\",geoshape:\"always\"};case ut:return{point:\"always\",geoshape:\"always\"};case yt:return{text:\"always\"};case pt:return{point:\"always\",square:\"always\",text:\"always\"};case At:return{image:\"always\"};case tt:return{text:\"always\",arc:\"always\"};case Xe:return{text:\"always\",arc:\"always\"};case rt:case et:return{arc:\"always\"}}}function Kr(e){switch(e){case R:case N:case tt:case Xe:case Qe:case Ze:case dt:case pt:case gt:case ft:case ht:case mt:case Ye:case Je:case rt:case et:return undefined;case Ke:case We:case $e:case ut:case _t:case yt:case Et:case St:case At:case Ot:return\"discrete\";case st:case lt:case ct:return\"flexible\";case nt:case at:case it:case ot:case vt:case bt:case Tt:return undefined}}const Yr={argmax:1,argmin:1,average:1,count:1,distinct:1,exponential:1,exponentialb:1,product:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1},Jr={count:1,min:1,max:1};function Qr(e){return!!e&&!!e[\"argmin\"]}function Zr(e){return!!e&&!!e[\"argmax\"]}function Xr(e){return te.isString(e)&&!!Yr[e]}const en=new Set([\"count\",\"valid\",\"missing\",\"distinct\"]);function tn(e){return te.isString(e)&&en.has(e)}function rn(e){return te.isString(e)&&k([\"min\",\"max\"],e)}const nn=new Set([\"count\",\"sum\",\"distinct\",\"valid\",\"missing\"]),an=new Set([\"mean\",\"average\",\"median\",\"q1\",\"q3\",\"min\",\"max\"]);function on(t){if(te.isBoolean(t))t=Yl(t,undefined);return\"bin\"+A(t).map(e=>ln(t[e])?w(`_${e}_${Oe(t[e])}`):w(`_${e}_${t[e]}`)).join(\"\")}function P(e){return e===true||sn(e)&&!e.binned}function D(e){return e===\"binned\"||sn(e)&&e.binned===true}function sn(e){return te.isObject(e)}function ln(e){return e?.[\"param\"]}function cn(e){switch(e){case We:case $e:case dt:case st:case lt:case ct:case gt:case ft:case ht:case mt:case ut:return 6;case _t:return 4;default:return 10}}function un(e){return!!e?.expr}function _(e){let{level:t}=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{level:0};const r=A(e||{});const n={};for(const a of r)n[a]=t===0?En(e[a]):_(e[a],{level:t-1});return n}function dn(e){const{anchor:t,frame:r,offset:n,orient:a,angle:i,limit:o,color:s,subtitleColor:l,subtitleFont:c,subtitleFontSize:u,subtitleFontStyle:d,subtitleFontWeight:p,subtitleLineHeight:f,subtitlePadding:h,...m}=e;const g={...m,...s?{fill:s}:{}};const _={...t?{anchor:t}:{},...r?{frame:r}:{},...n?{offset:n}:{},...a?{orient:a}:{},...i!==undefined?{angle:i}:{},...o!==undefined?{limit:o}:{}};const y={...l?{subtitleColor:l}:{},...c?{subtitleFont:c}:{},...u?{subtitleFontSize:u}:{},...d?{subtitleFontStyle:d}:{},...p?{subtitleFontWeight:p}:{},...f?{subtitleLineHeight:f}:{},...h?{subtitlePadding:h}:{}};const T=pe(e,[\"align\",\"baseline\",\"dx\",\"dy\",\"limit\"]);return{titleMarkConfig:g,subtitleMarkConfig:T,nonMarkTitleProperties:_,subtitle:y}}function pn(e){return te.isString(e)||te.isArray(e)&&te.isString(e[0])}function x(e){return!!e?.signal}function fn(e){return!!e[\"step\"]}function hn(e){if(!te.isArray(e))return\"fields\"in e&&!(\"data\"in e);return false}function mn(e){if(!te.isArray(e))return\"fields\"in e&&\"data\"in e;return false}function gn(e){if(!te.isArray(e))return\"field\"in e&&\"data\"in e;return false}const _n={aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1},yn=A(_n),Tn={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},vn=[\"cornerRadius\",\"cornerRadiusTopLeft\",\"cornerRadiusTopRight\",\"cornerRadiusBottomLeft\",\"cornerRadiusBottomRight\"];function bn(e){const t=te.isArray(e.condition)?e.condition.map(Sn):Sn(e.condition);return{...En(e),condition:t}}function En(e){if(un(e)){const{expr:t,...r}=e;return{signal:t,...r}}return e}function Sn(e){if(un(e)){const{expr:t,...r}=e;return{signal:t,...r}}return e}function L(e){if(un(e)){const{expr:t,...r}=e;return{signal:t,...r}}if(x(e))return e;return e!==undefined?{value:e}:undefined}function An(e){if(x(e))return e.signal;return te.stringValue(e)}function On(e){if(x(e))return e.signal;return te.stringValue(e.value)}function Cn(e){if(x(e))return e.signal;return e==null?null:te.stringValue(e)}function wn(e,t,r){for(const n of r){const a=In(n,t.markDef,t.config);if(a!==undefined)e[n]=L(a)}return e}function kn(e){return[].concat(e.type,e.style??[])}function ne(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const{vgChannel:a,ignoreVgConfig:i}=n;if(a&&t[a]!==undefined)return t[a];else if(t[e]!==undefined)return t[e];else if(i&&(!a||a===e))return undefined;return In(e,t,r,n)}function In(e,t,r){let{vgChannel:n}=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};return I(n?Rn(e,t,r.style):undefined,Rn(e,t,r.style),n?r[t.type][n]:undefined,r[t.type][e],n?r.mark[n]:r.mark[e])}function Rn(e,t,r){return Nn(e,kn(t),r)}function Nn(e,t,r){t=te.array(t);let n;for(const a of t){const i=r[a];if(i&&i[e]!==undefined)n=i[e]}return n}function Mn(e,r){return te.array(e).reduce((e,t)=>{e.field.push(j(t,r));e.order.push(t.sort??\"ascending\");return e},{field:[],order:[]})}function Pn(e,t){const r=[...e];t.forEach(e=>{for(const t of r)if(ze(t,e))return;r.push(e)});return r}function Dn(e,t){if(ze(e,t)||!t)return e;else if(!e)return t;else return[...te.array(e),...te.array(t)].join(\", \")}function xn(e,t){const r=e.value;const n=t.value;if(r==null||n===null)return{explicit:e.explicit,value:null};else if((pn(r)||x(r))&&(pn(n)||x(n)))return{explicit:e.explicit,value:Dn(r,n)};else if(pn(r)||x(r))return{explicit:e.explicit,value:r};else if(pn(n)||x(n))return{explicit:e.explicit,value:n};else if(!pn(r)&&!x(r)&&!pn(n)&&!x(n))return{explicit:e.explicit,value:Pn(r,n)};throw new Error(\"It should never reach here\")}function Ln(e){return`Invalid specification ${g(e)}. Make sure the specification includes at least one of the following properties: \"mark\", \"layer\", \"facet\", \"hconcat\", \"vconcat\", \"concat\", or \"repeat\".`}const Fn='Autosize \"fit\" only works for single views and layered views.';function Un(e){const t=e==\"width\"?\"Width\":\"Height\";return`${t} \"container\" only works for single views and layered views.`}function Bn(e){const t=e==\"width\"?\"Width\":\"Height\";const r=e==\"width\"?\"x\":\"y\";return`${t} \"container\" only works well with autosize \"fit\" or \"fit-${r}\".`}function jn(e){return e?`Dropping \"fit-${e}\" because spec has discrete ${er(e)}.`:`Dropping \"fit\" because spec has discrete size.`}function Hn(e){return`Unknown field for ${e}. Cannot calculate view size.`}function Gn(e){return`Cannot project a selection on encoding channel \"${e}\", which has no field.`}function Vn(e,t){return`Cannot project a selection on encoding channel \"${e}\" as it uses an aggregate function (\"${t}\").`}function qn(e){return`The \"nearest\" transform is not supported for ${e} marks.`}function zn(e){return`Selection not supported for ${e} yet.`}function Wn(e){return`Cannot find a selection named \"${e}\".`}const $n=\"Scale bindings are currently only supported for scales with unbinned, continuous domains.\",Kn=\"Sequntial scales are deprecated. The available quantitative scale type values are linear, log, pow, sqrt, symlog, time and utc\",Yn=\"Legend bindings are only supported for selections over an individual field or encoding channel.\";function Jn(e){return`Lookups can only be performed on selection parameters. \"${e}\" is a variable parameter.`}function Qn(e){return`Cannot define and lookup the \"${e}\" selection in the same view. `+`Try moving the lookup into a second, layered view?`}const Zn=\"The same selection must be used to override scale domains in a layered view.\",Xn='Interval selections should be initialized using \"x\", \"y\", \"longitude\", or \"latitude\" keys.';function ea(e){return`Unknown repeated value \"${e}\".`}function ta(e){return`The \"columns\" property cannot be used when \"${e}\" has nested row/column.`}const ra=\"Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).\";function na(e){return`Unrecognized parse \"${e}\".`}function aa(e,t,r){return`An ancestor parsed field \"${e}\" as ${r} but a child wants to parse the field as ${t}.`}const ia=\"Attempt to add the same child twice.\";function oa(e){return`Ignoring an invalid transform: ${g(e)}.`}const sa='If \"from.fields\" is not specified, \"as\" has to be a string that specifies the key to be used for the data from the secondary source.';function la(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function ca(e){const{parentProjection:t,projection:r}=e;return`Layer's shared projection ${g(t)} is overridden by a child projection ${g(r)}.`}const ua=\"Arc marks uses theta channel rather than angle, replacing angle with theta.\";function da(e){return`${e}Offset dropped because ${e} is continuous`}function pa(e,t,r){return`Channel ${e} is a ${t}. Converted to {value: ${g(r)}}.`}function fa(e){return`Invalid field type \"${e}\".`}function ha(e,t){return`Invalid field type \"${e}\" for aggregate: \"${t}\", using \"quantitative\" instead.`}function ma(e){return`Invalid aggregation operator \"${e}\".`}function ga(e,t){const{fill:r,stroke:n}=t;return`Dropping color ${e} as the plot also has ${r&&n?\"fill and stroke\":r?\"fill\":\"stroke\"}.`}function _a(e){return`Position range does not support relative band size for ${e}.`}function ya(e,t){return`Dropping ${g(e)} from channel \"${t}\" since it does not contain any data field, datum, value, or signal.`}const Ta=\"Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.\";function va(e,t,r){return`${e} dropped as it is incompatible with \"${t}\"${\"\"}.`}function ba(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function Ea(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function Sa(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function Aa(e){return`Facet encoding dropped as ${e.join(\" and \")} ${e.length>1?\"are\":\"is\"} also specified.`}function Oa(e,t){return`Using discrete channel \"${e}\" to encode \"${t}\" field can be misleading as it does not encode ${t===\"ordinal\"?\"order\":\"magnitude\"}.`}function Ca(e){return`The ${e} for range marks cannot be an expression`}function wa(e,t){const r=e&&t?\"x2 and y2\":e?\"x2\":\"y2\";return`Line mark is for continuous lines and thus cannot be used with ${r}. We will use the rule mark (line segments) instead.`}function ka(e,t){return`Specified orient \"${e}\" overridden with \"${t}\".`}function Ia(e){return`Cannot use the scale property \"${e}\" with non-color channel.`}function Ra(e){return`Cannot use the relative band size with ${e} scale.`}function Na(e){return`Using unaggregated domain with raw field has no effect (${g(e)}).`}function Ma(e){return`Unaggregated domain not applicable for \"${e}\" since it produces values outside the origin domain of the source data.`}function Pa(e){return`Unaggregated domain is currently unsupported for log scale (${g(e)}).`}function Da(e){return`Cannot apply size to non-oriented mark \"${e}\".`}function xa(e,t,r){return`Channel \"${e}\" does not work with \"${t}\" scale. We are using \"${r}\" scale instead.`}function La(e,t){return`FieldDef does not work with \"${e}\" scale. We are using \"${t}\" scale instead.`}function Fa(e,t,r){return`${r}-scale's \"${t}\" is dropped as it does not work with ${e} scale.`}function Ua(e){return`The step for \"${e}\" is dropped because the ${e===\"width\"?\"x\":\"y\"} is continuous.`}function Ba(e,t,r,n){return`Conflicting ${t.toString()} property \"${e.toString()}\" (${g(r)} and ${g(n)}). Using ${g(r)}.`}function ja(e,t,r,n){return`Conflicting ${t.toString()} property \"${e.toString()}\" (${g(r)} and ${g(n)}). Using the union of the two domains.`}function Ha(e){return`Setting the scale to be independent for \"${e}\" means we also have to set the guide (axis or legend) to be independent.`}function Ga(e){return`Dropping sort property ${g(e)} as unioned domains only support boolean or op \"count\", \"min\", and \"max\".`}const Va=\"Domains that should be unioned has conflicting sort properties. Sort will be set to true.\",qa=\"Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.\",za=\"Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.\",Wa=\"Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.\";function $a(e){return`Cannot stack \"${e}\" if there is already \"${e}2\".`}function Ka(e){return`Stack is applied to a non-linear scale (${e}).`}function Ya(e){return`Stacking is applied even though the aggregate function is non-summative (\"${e}\").`}function Ja(e,t){return`Invalid ${e}: ${g(t)}.`}function Qa(e){return`Dropping day from datetime ${g(e)} as day cannot be combined with other units.`}function Za(e,t){return`${t?\"extent \":\"\"}${t&&e?\"and \":\"\"}${e?\"center \":\"\"}${t&&e?\"are \":\"is \"}not needed when data are aggregated.`}function Xa(e,t,r){return`${e} is not usually used with ${t} for ${r}.`}function ei(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function ti(e){return`1D error band does not support ${e}.`}function ri(e){return`Channel ${e} is required for \"binned\" bin.`}function ni(e){return`Channel ${e} should not be used with \"binned\" bin.`}function ai(e){return`Domain for ${e} is required for threshold scale.`}const ii=te.logger(te.Warn);let oi=ii;function si(e){oi=e;return oi}function li(){oi=ii;return oi}function ae(){oi.warn(...arguments)}function ci(){oi.debug(...arguments)}function ui(e){if(e&&te.isObject(e))for(const t of Si)if(t in e)return true;return false}const di=[\"january\",\"february\",\"march\",\"april\",\"may\",\"june\",\"july\",\"august\",\"september\",\"october\",\"november\",\"december\"],pi=di.map(e=>e.substr(0,3)),fi=[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"],hi=fi.map(e=>e.substr(0,3));function mi(e){if(Ve(e))e=+e;if(te.isNumber(e)){if(e>4)ae(Ja(\"quarter\",e));return e-1}else throw new Error(Ja(\"quarter\",e))}function gi(e){if(Ve(e))e=+e;if(te.isNumber(e))return e-1;else{const t=e.toLowerCase();const r=di.indexOf(t);if(r!==-1)return r;const n=t.substr(0,3);const a=pi.indexOf(n);if(a!==-1)return a;throw new Error(Ja(\"month\",e))}}function _i(e){if(Ve(e))e=+e;if(te.isNumber(e))return e%7;else{const t=e.toLowerCase();const r=fi.indexOf(t);if(r!==-1)return r;const n=t.substr(0,3);const a=hi.indexOf(n);if(a!==-1)return a;throw new Error(Ja(\"day\",e))}}function yi(e,t){const r=[];if(t&&e.day!==undefined)if(A(e).length>1){ae(Qa(e));e=m(e);delete e.day}if(e.year!==undefined)r.push(e.year);else r.push(2012);if(e.month!==undefined){const n=t?gi(e.month):e.month;r.push(n)}else if(e.quarter!==undefined){const a=t?mi(e.quarter):e.quarter;r.push(te.isNumber(a)?a*3:`${a}*3`)}else r.push(0);if(e.date!==undefined)r.push(e.date);else if(e.day!==undefined){const i=t?_i(e.day):e.day;r.push(te.isNumber(i)?i+1:`${i}+1`)}else r.push(1);for(const o of[\"hours\",\"minutes\",\"seconds\",\"milliseconds\"]){const s=e[o];r.push(typeof s===\"undefined\"?0:s)}return r}function Ti(e){const t=yi(e,true);const r=t.join(\", \");if(e.utc)return`utc(${r})`;else return`datetime(${r})`}function vi(e){const t=yi(e,false);const r=t.join(\", \");if(e.utc)return`utc(${r})`;else return`datetime(${r})`}function bi(e){const t=yi(e,true);if(e.utc)return+new Date(Date.UTC(...t));else return+new Date(...t)}const Ei={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},Si=A(Ei);function Ai(e){return!!Ei[e]}function Oi(e){if(te.isObject(e))return e.binned;return Ci(e)}function Ci(e){return e&&e.startsWith(\"binned\")}function wi(e){return e.startsWith(\"utc\")}function ki(e){return e.substring(3)}const Ii={\"year-month\":\"%b %Y \",\"year-month-date\":\"%b %d, %Y \"};function Ri(t){return Si.filter(e=>Mi(t,e))}function Ni(e){const t=Ri(e);return t[t.length-1]}function Mi(e,t){const r=e.indexOf(t);if(r<0)return false;if(r>0&&t===\"seconds\"&&e.charAt(r-1)===\"i\")return false;if(e.length>r+3&&t===\"day\"&&e.charAt(r+3)===\"o\")return false;if(r>0&&t===\"year\"&&e.charAt(r-1)===\"f\")return false;return true}function Pi(e,t){let{end:r}=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{end:false};const n=Re(t);const a=wi(e)?\"utc\":\"\";function i(e){if(e===\"quarter\")return`(${a}quarter(${n})-1)`;else return`${a}${e}(${n})`}let o;const s={};for(const l of Si)if(Mi(e,l)){s[l]=i(l);o=l}if(r)s[o]+=\"+1\";return vi(s)}function Di(e){if(!e)return undefined;const t=Ri(e);return`timeUnitSpecifier(${g(t)}, ${g(Ii)})`}function xi(e,t,r){if(!e)return undefined;const n=Di(e);const a=r||wi(e);return`${a?\"utc\":\"time\"}Format(${t}, ${n})`}function F(e){if(!e)return undefined;let t;if(te.isString(e))if(Ci(e))t={unit:e.substring(6),binned:true};else t={unit:e};else if(te.isObject(e))t={...e,...e.unit?{unit:e.unit}:{}};if(wi(t.unit)){t.utc=true;t.unit=ki(t.unit)}return t}function Li(e){const{utc:t,...r}=F(e);if(r.unit)return(t?\"utc\":\"\")+A(r).map(e=>w(`${e===\"unit\"?\"\":`_${e}_`}${r[e]}`)).join(\"\");else return(t?\"utc\":\"\")+\"timeunit\"+A(r).map(e=>w(`_${e}_${r[e]}`)).join(\"\")}function Fi(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:e=>e;const r=F(e);const n=Ni(r.unit);if(n&&n!==\"day\"){const a={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0};const{step:i,part:o}=ji(n,r.step);const s={...a,[o]:+a[o]+i};return`${t(Ti(s))} - ${t(Ti(a))}`}return undefined}const Ui={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function Bi(e){return!!Ui[e]}function ji(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:1;if(Bi(e))return{part:e,step:t};switch(e){case\"day\":case\"dayofyear\":return{part:\"date\",step:t};case\"quarter\":return{part:\"month\",step:t*3};case\"week\":return{part:\"date\",step:t*7}}}function Hi(e){return e?.[\"param\"]}function Gi(e){return!!e?.field&&e.equal!==undefined}function Vi(e){return!!e?.field&&e.lt!==undefined}function qi(e){return!!e?.field&&e.lte!==undefined}function zi(e){return!!e?.field&&e.gt!==undefined}function Wi(e){return!!e?.field&&e.gte!==undefined}function $i(e){if(e?.field)if(te.isArray(e.range)&&e.range.length===2)return true;else if(x(e.range))return true;return false}function Ki(e){return!!e?.field&&(te.isArray(e.oneOf)||te.isArray(e.in))}function Yi(e){return!!e?.field&&e.valid!==undefined}function Ji(e){return Ki(e)||Gi(e)||$i(e)||Vi(e)||zi(e)||qi(e)||Wi(e)}function Qi(e,t){return ec(e,{timeUnit:t,wrapTime:true})}function Zi(e,t){return e.map(e=>Qi(e,t))}function Xi(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;const{field:r}=e;const n=F(e.timeUnit);const{unit:a,binned:i}=n||{};const o=j(e,{expr:\"datum\"});const s=a?`time(${!i?Pi(a,r):o})`:o;if(Gi(e))return`${s}===${Qi(e.equal,a)}`;else if(Vi(e)){const l=e.lt;return`${s}<${Qi(l,a)}`}else if(zi(e)){const c=e.gt;return`${s}>${Qi(c,a)}`}else if(qi(e)){const u=e.lte;return`${s}<=${Qi(u,a)}`}else if(Wi(e)){const d=e.gte;return`${s}>=${Qi(d,a)}`}else if(Ki(e))return`indexof([${Zi(e.oneOf,a).join(\",\")}], ${s}) !== -1`;else if(Yi(e))return eo(s,e.valid);else if($i(e)){const{range:p}=e;const f=x(p)?{signal:`${p.signal}[0]`}:p[0];const h=x(p)?{signal:`${p.signal}[1]`}:p[1];if(f!==null&&h!==null&&t)return\"inrange(\"+s+\", [\"+Qi(f,a)+\", \"+Qi(h,a)+\"])\";const m=[];if(f!==null)m.push(`${s} >= ${Qi(f,a)}`);if(h!==null)m.push(`${s} <= ${Qi(h,a)}`);return m.length>0?m.join(\" && \"):\"true\"}throw new Error(`Invalid field predicate: ${g(e)}`)}function eo(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(t)return`isValid(${e}) && isFinite(+${e})`;else return`!isValid(${e}) || !isFinite(+${e})`}function to(e){if(Ji(e)&&e.timeUnit)return{...e,timeUnit:F(e.timeUnit)};return e}const ro={quantitative:\"quantitative\",ordinal:\"ordinal\",temporal:\"temporal\",nominal:\"nominal\",geojson:\"geojson\"};function no(e){return e===\"quantitative\"||e===\"temporal\"}function ao(e){return e===\"ordinal\"||e===\"nominal\"}const io=ro.quantitative,oo=ro.ordinal,so=ro.temporal,lo=ro.nominal,co=ro.geojson;function uo(e){if(e){e=e.toLowerCase();switch(e){case\"q\":case io:return\"quantitative\";case\"t\":case so:return\"temporal\";case\"o\":case oo:return\"ordinal\";case\"n\":case lo:return\"nominal\";case co:return\"geojson\"}}return undefined}const y={LINEAR:\"linear\",LOG:\"log\",POW:\"pow\",SQRT:\"sqrt\",SYMLOG:\"symlog\",IDENTITY:\"identity\",SEQUENTIAL:\"sequential\",TIME:\"time\",UTC:\"utc\",QUANTILE:\"quantile\",QUANTIZE:\"quantize\",THRESHOLD:\"threshold\",BIN_ORDINAL:\"bin-ordinal\",ORDINAL:\"ordinal\",POINT:\"point\",BAND:\"band\"},po={linear:\"numeric\",log:\"numeric\",pow:\"numeric\",sqrt:\"numeric\",symlog:\"numeric\",identity:\"numeric\",sequential:\"numeric\",time:\"time\",utc:\"time\",ordinal:\"ordinal\",\"bin-ordinal\":\"bin-ordinal\",point:\"ordinal-position\",band:\"ordinal-position\",quantile:\"discretizing\",quantize:\"discretizing\",threshold:\"discretizing\"};function fo(e,t){const r=po[e];const n=po[t];return r===n||r===\"ordinal-position\"&&n===\"time\"||n===\"ordinal-position\"&&r===\"time\"}const ho={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,\"bin-ordinal\":0,quantile:0,quantize:0,threshold:0};function mo(e){return ho[e]}const go=new Set([\"linear\",\"log\",\"pow\",\"sqrt\",\"symlog\"]),_o=new Set([...go,\"time\",\"utc\"]);function yo(e){return go.has(e)}const To=new Set([\"quantile\",\"quantize\",\"threshold\"]),vo=new Set([..._o,...To,\"sequential\",\"identity\"]),bo=new Set([\"ordinal\",\"bin-ordinal\",\"point\",\"band\"]);function U(e){return bo.has(e)}function Eo(e){return vo.has(e)}function So(e){return _o.has(e)}function Ao(e){return To.has(e)}const Oo={pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:4,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:true};function Co(e){return!te.isString(e)&&!!e[\"name\"]}function wo(e){return e?.[\"param\"]}function ko(e){return e?.[\"unionWith\"]}function Io(e){return te.isObject(e)&&\"field\"in e}const Ro={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:No,domain:Mo,range:Po,rangeMax:Do,rangeMin:xo,scheme:Lo,...Fo}=Ro,Uo=A(Fo);function Bo(e,t){switch(t){case\"type\":case\"domain\":case\"reverse\":case\"range\":return true;case\"scheme\":case\"interpolate\":return![\"point\",\"band\",\"identity\"].includes(e);case\"bins\":return![\"point\",\"band\",\"identity\",\"ordinal\"].includes(e);case\"round\":return So(e)||e===\"band\"||e===\"point\";case\"padding\":case\"rangeMin\":case\"rangeMax\":return So(e)||[\"point\",\"band\"].includes(e);case\"paddingOuter\":case\"align\":return[\"point\",\"band\"].includes(e);case\"paddingInner\":return e===\"band\";case\"domainMax\":case\"domainMid\":case\"domainMin\":case\"domainRaw\":case\"clamp\":return So(e);case\"nice\":return So(e)||e===\"quantize\"||e===\"threshold\";case\"exponent\":return e===\"pow\";case\"base\":return e===\"log\";case\"constant\":return e===\"symlog\";case\"zero\":return Eo(e)&&!k([\"log\",\"time\",\"utc\",\"threshold\",\"quantile\"],e)}}function jo(e,t){switch(t){case\"interpolate\":case\"scheme\":case\"domainMid\":if(!Dt(e))return Ia(t);return undefined;case\"align\":case\"type\":case\"bins\":case\"domain\":case\"domainMax\":case\"domainMin\":case\"domainRaw\":case\"range\":case\"base\":case\"exponent\":case\"constant\":case\"nice\":case\"padding\":case\"paddingInner\":case\"paddingOuter\":case\"rangeMax\":case\"rangeMin\":case\"reverse\":case\"round\":case\"clamp\":case\"zero\":return undefined}}function Ho(e,t){if(k([oo,lo],t))return e===undefined||U(e);else if(t===so)return k([y.TIME,y.UTC,undefined],e);else if(t===io)return yo(e)||Ao(e)||e===undefined;return true}function Go(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!Gr(e))return false;switch(e){case R:case N:case Qe:case Ze:case tt:case Xe:if(So(t))return true;else if(t===\"band\")return true;else if(t===\"point\")return!r;return false;case dt:case gt:case ft:case ht:case mt:case pt:return So(t)||Ao(t)||k([\"band\",\"point\",\"ordinal\"],t);case st:case lt:case ct:return t!==\"band\";case _t:case ut:return t===\"ordinal\"||Ao(t)}}function Vo(e){return te.isObject(e)&&\"value\"in e}const t={arc:\"arc\",area:\"area\",bar:\"bar\",image:\"image\",line:\"line\",point:\"point\",rect:\"rect\",rule:\"rule\",text:\"text\",tick:\"tick\",trail:\"trail\",circle:\"circle\",square:\"square\",geoshape:\"geoshape\"},qo=t.arc,zo=t.area,Wo=t.bar,$o=t.image,Ko=t.line,Yo=t.point,Jo=t.rect,Qo=t.rule,Zo=t.text,Xo=t.tick,es=t.trail,ts=t.circle,rs=t.square,ns=t.geoshape;function as(e){return[\"line\",\"area\",\"trail\"].includes(e)}function is(e){return[\"rect\",\"bar\",\"image\",\"arc\"].includes(e)}const os=new Set(A(t));function ss(e){return e[\"type\"]}const ls=[\"stroke\",\"strokeWidth\",\"strokeDash\",\"strokeDashOffset\",\"strokeOpacity\",\"strokeJoin\",\"strokeMiterLimit\"],cs=[\"fill\",\"fillOpacity\"],us=[...ls,...cs],ds={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},ps=A(ds),fs={area:[\"line\",\"point\"],bar:[\"binSpacing\",\"continuousBandSize\",\"discreteBandSize\",\"minBandSize\"],rect:[\"binSpacing\",\"continuousBandSize\",\"discreteBandSize\",\"minBandSize\"],line:[\"point\"],tick:[\"bandSize\",\"thickness\"]},hs={color:\"#4c78a8\",invalid:\"break-paths-show-path-domains\",timeUnitBandSize:1},ms={mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1},gs=A(ms);function _s(e){return e&&e[\"band\"]!=undefined}const ys={horizontal:[\"cornerRadiusTopRight\",\"cornerRadiusBottomRight\"],vertical:[\"cornerRadiusTopLeft\",\"cornerRadiusTopRight\"]},Ts=5,vs={binSpacing:1,continuousBandSize:Ts,minBandSize:.25,timeUnitBandPosition:.5},bs={binSpacing:0,continuousBandSize:Ts,minBandSize:.25,timeUnitBandPosition:.5},Es={thickness:1};function Ss(e){return ss(e)?e.type:e}function As(e,t){let{isPath:r}=t;if(e===undefined||e===\"break-paths-show-path-domains\")return r?\"break-paths-show-domains\":\"filter\";else if(e===null)return\"show\";return e}function Os(e){let{markDef:t,config:r,scaleChannel:n,scaleType:a,isCountAggregate:i}=e;if(!a||!Eo(a)||i)return\"always-valid\";const o=As(ne(\"invalid\",t,r),{isPath:as(t.type)});const s=r.scale?.invalid?.[n];if(s!==undefined)return\"show\";return o}function Cs(e){return e===\"break-paths-filter-domains\"||e===\"break-paths-show-domains\"}function ws(e){let{scaleName:t,scale:r,mode:n}=e;const a=`domain('${t}')`;if(!r||!t)return undefined;const i=`${a}[0]`;const o=`peek(${a})`;const s=r.domainHasZero();if(s===\"definitely\")return{scale:t,value:0};else if(s===\"maybe\"){const l=n===\"zeroOrMin\"?i:o;return{signal:`scale('${t}', inrange(0, ${a}) ? 0 : ${l})`}}else return{signal:`scale('${t}', ${n===\"zeroOrMin\"?i:o})`}}function ks(e){let{scaleChannel:t,channelDef:r,scale:n,scaleName:a,markDef:i,config:o}=e;const s=n?.get(\"type\");const l=ql(r);const c=tn(l?.aggregate);const u=Os({scaleChannel:t,markDef:i,config:o,scaleType:s,isCountAggregate:c});if(l&&u===\"show\"){const d=o.scale.invalid?.[t]??\"zero-or-min\";return{test:eo(j(l,{expr:\"datum\"}),false),...Is(d,n,a)}}return undefined}function Is(e,t,r){if(Vo(e)){const{value:n}=e;return x(n)?{signal:n.signal}:{value:n}}return ws({scale:t,scaleName:r,mode:\"zeroOrMin\"})}function Rs(e){const{channel:t,channelDef:r,markDef:n,scale:a,scaleName:i,config:o}=e;const s=Qt(t);const l=xs(e);const c=ks({scaleChannel:s,channelDef:r,scale:a,scaleName:i,markDef:n,config:o});return c!==undefined?[c,l]:l}function Ns(e){const{datum:t}=e;if(ui(t))return Ti(t);return`${g(t)}`}function Ms(e,t,r,n){const a={};if(t)a.scale=t;if(Tl(e)){const{datum:i}=e;if(ui(i))a.signal=Ti(i);else if(x(i))a.signal=i.signal;else if(un(i))a.signal=i.expr;else a.value=i}else a.field=j(e,r);if(n){const{offset:o,band:s}=n;if(o)a.offset=o;if(s)a.band=s}return a}function Ps(e){let{scaleName:t,fieldOrDatumDef:r,fieldOrDatumDef2:n,offset:a,startSuffix:i,endSuffix:o=\"end\",bandPosition:s=.5}=e;const l=!x(s)&&0<s&&s<1?\"datum\":undefined;const c=j(r,{expr:l,suffix:i});const u=n!==undefined?j(n,{expr:l}):j(r,{suffix:o,expr:l});const d={};if(s===0||s===1){d.scale=t;const p=s===0?c:u;d.field=p}else{const f=x(s)?`(1-${s.signal}) * ${c} + ${s.signal} * ${u}`:`${1-s} * ${c} + ${s} * ${u}`;d.signal=`scale(\"${t}\", ${f})`}if(a)d.offset=a;return d}function Ds(e){let{scaleName:t,fieldDef:r}=e;const n=j(r,{expr:\"datum\"});const a=j(r,{expr:\"datum\",suffix:\"end\"});return`abs(scale(\"${t}\", ${a}) - scale(\"${t}\", ${n}))`}function xs(e){let{channel:t,channelDef:r,channel2Def:n,markDef:a,config:i,scaleName:o,scale:s,stack:l,offset:c,defaultRef:u,bandPosition:d}=e;if(r)if(T(r)){const p=s?.get(\"type\");if(b(r)){d??=ul({fieldDef:r,fieldDef2:n,markDef:a,config:i});const{bin:f,timeUnit:h,type:m}=r;if(P(f)||d&&h&&m===so){if(l?.impute)return Ms(r,o,{binSuffix:\"mid\"},{offset:c});if(d&&!U(p))return Ps({scaleName:o,fieldOrDatumDef:r,bandPosition:d,offset:c});return Ms(r,o,rc(r,t)?{binSuffix:\"range\"}:{},{offset:c})}else if(D(f))if(B(n))return Ps({scaleName:o,fieldOrDatumDef:r,fieldOrDatumDef2:n,bandPosition:d,offset:c});else{const g=t===R?Ye:Je;ae(ri(g))}}return Ms(r,o,U(p)?{binSuffix:\"range\"}:{},{offset:c,band:p===\"band\"?d??r.bandPosition??.5:undefined})}else if(Sl(r)){const _=r.value;const y=c?{offset:c}:{};return{...Ls(t,_),...y}}if(te.isFunction(u))u=u();if(u)return{...u,...c?{offset:c}:{}};return u}function Ls(e,t){if(k([\"x\",\"x2\"],e)&&t===\"width\")return{field:{group:\"width\"}};else if(k([\"y\",\"y2\"],e)&&t===\"height\")return{field:{group:\"height\"}};return L(t)}function Fs(e){return e&&e!==\"number\"&&e!==\"time\"}function Us(e,t,r){return`${e}(${t}${r?`, ${g(r)}`:\"\"})`}const Bs=\" – \";function js(e){let{fieldOrDatumDef:t,format:r,formatType:n,expr:a,normalizeStack:i,config:o}=e;if(Fs(n))return Gs({fieldOrDatumDef:t,format:r,formatType:n,expr:a,config:o});const s=Hs(t,a,i);const l=yl(t);if(r===undefined&&n===undefined&&o.customFormatTypes){if(l===\"quantitative\"){if(i&&o.normalizedNumberFormatType)return Gs({fieldOrDatumDef:t,format:o.normalizedNumberFormat,formatType:o.normalizedNumberFormatType,expr:a,config:o});if(o.numberFormatType)return Gs({fieldOrDatumDef:t,format:o.numberFormat,formatType:o.numberFormatType,expr:a,config:o})}if(l===\"temporal\"&&o.timeFormatType&&B(t)&&t.timeUnit===undefined)return Gs({fieldOrDatumDef:t,format:o.timeFormat,formatType:o.timeFormatType,expr:a,config:o})}if(Zl(t)){const c=Js({field:s,timeUnit:B(t)?F(t.timeUnit)?.unit:undefined,format:r,formatType:o.timeFormatType,rawTimeFormat:o.timeFormat,isUTCScale:Al(t)&&t.scale?.type===y.UTC});return c?{signal:c}:undefined}r=zs({type:l,specifiedFormat:r,config:o,normalizeStack:i});if(B(t)&&P(t.bin)){const u=j(t,{expr:a,binSuffix:\"end\"});return{signal:Ys(s,u,r,n,o)}}else if(r||yl(t)===\"quantitative\")return{signal:`${$s(s,r)}`};else return{signal:`isValid(${s}) ? ${s} : \"\"+${s}`}}function Hs(e,t,r){if(B(e))if(r)return`${j(e,{expr:t,suffix:\"end\"})}-${j(e,{expr:t,suffix:\"start\"})}`;else return j(e,{expr:t});else return Ns(e)}function Gs(e){let{fieldOrDatumDef:t,format:r,formatType:n,expr:a,normalizeStack:i,config:o,field:s}=e;s??=Hs(t,a,i);if(s!==\"datum.value\"&&B(t)&&P(t.bin)){const l=j(t,{expr:a,binSuffix:\"end\"});return{signal:Ys(s,l,r,n,o)}}return{signal:Us(n,s,r)}}function Vs(e,t,r,n,a,i){if(te.isString(n)&&Fs(n))return undefined;else if(r===undefined&&n===undefined&&a.customFormatTypes)if(yl(e)===\"quantitative\"){if(a.normalizedNumberFormatType&&Ol(e)&&e.stack===\"normalize\")return undefined;if(a.numberFormatType)return undefined}if(Ol(e)&&e.stack===\"normalize\"&&a.normalizedNumberFormat)return zs({type:\"quantitative\",config:a,normalizeStack:true});if(Zl(e)){const o=B(e)?F(e.timeUnit)?.unit:undefined;if(o===undefined&&a.customFormatTypes&&a.timeFormatType)return undefined;return Ws({specifiedFormat:r,timeUnit:o,config:a,omitTimeFormatConfig:i})}return zs({type:t,specifiedFormat:r,config:a})}function qs(e,t,r){if(e&&(x(e)||e===\"number\"||e===\"time\"))return e;if(Zl(t)&&r!==\"time\"&&r!==\"utc\")return B(t)&&F(t?.timeUnit)?.utc?\"utc\":\"time\";return undefined}function zs(e){let{type:t,specifiedFormat:r,config:n,normalizeStack:a}=e;if(te.isString(r))return r;if(t===io)return a?n.normalizedNumberFormat:n.numberFormat;return undefined}function Ws(e){let{specifiedFormat:t,timeUnit:r,config:n,omitTimeFormatConfig:a}=e;if(t)return t;if(r)return{signal:Di(r)};return a?undefined:n.timeFormat}function $s(e,t){return`format(${e}, \"${t||\"\"}\")`}function Ks(e,t,r,n){if(Fs(r))return Us(r,e,t);return $s(e,(te.isString(t)?t:undefined)??n.numberFormat)}function Ys(e,t,r,n,a){if(r===undefined&&n===undefined&&a.customFormatTypes&&a.numberFormatType)return Ys(e,t,a.numberFormat,a.numberFormatType,a);const i=Ks(e,r,n,a);const o=Ks(t,r,n,a);return`${eo(e,false)} ? \"null\" : ${i} + \"${Bs}\" + ${o}`}function Js(e){let{field:t,timeUnit:r,format:n,formatType:a,rawTimeFormat:i,isUTCScale:o}=e;if(!r||n){if(!r&&a)return`${a}(${t}, '${n}')`;n=te.isString(n)?n:i;return`${o?\"utc\":\"time\"}Format(${t}, '${n}')`}else return xi(r,t,o)}const Qs=\"min\",Zs={x:1,y:1,color:1,fill:1,stroke:1,strokeWidth:1,size:1,shape:1,fillOpacity:1,strokeOpacity:1,opacity:1,text:1};function Xs(e){return e in Zs}function el(e){return!!e?.[\"encoding\"]}function tl(e){return e&&(e[\"op\"]===\"count\"||!!e[\"field\"])}function rl(e){return e&&te.isArray(e)}function nl(e){return\"row\"in e||\"column\"in e}function al(e){return!!e&&\"header\"in e}function il(e){return\"facet\"in e}function ol(e){return e[\"param\"]}function sl(e){return e&&!te.isString(e)&&\"repeat\"in e}function ll(e){const{field:t,timeUnit:r,bin:n,aggregate:a}=e;return{...r?{timeUnit:r}:{},...n?{bin:n}:{},...a?{aggregate:a}:{},field:t}}function cl(e){return\"sort\"in e}function ul(e){let{fieldDef:t,fieldDef2:r,markDef:n,config:a}=e;if(T(t)&&t.bandPosition!==undefined)return t.bandPosition;if(B(t)){const{timeUnit:i,bin:o}=t;if(i&&!r)return In(\"timeUnitBandPosition\",n,a);else if(P(o))return.5}return undefined}function dl(e){let{channel:t,fieldDef:r,fieldDef2:n,markDef:a,config:i,scaleType:o,useVlSizeChannel:s}=e;const l=er(t);const c=ne(s?\"size\":l,a,i,{vgChannel:l});if(c!==undefined)return c;if(B(r)){const{timeUnit:u,bin:d}=r;if(u&&!n)return{band:In(\"timeUnitBandSize\",a,i)};else if(P(d)&&!U(o))return{band:1}}if(is(a.type)){if(o)if(U(o))return i[a.type]?.discreteBandSize||{band:1};else return i[a.type]?.continuousBandSize;return i[a.type]?.discreteBandSize}return undefined}function pl(e,t,r,n){if(P(e.bin)||e.timeUnit&&b(e)&&e.type===\"temporal\")return ul({fieldDef:e,fieldDef2:t,markDef:r,config:n})!==undefined;return false}function fl(e){return e&&!!e.sort&&!e[\"field\"]}function hl(e){return e&&\"condition\"in e}function ml(e){const t=e?.[\"condition\"];return!!t&&!te.isArray(t)&&B(t)}function gl(e){const t=e?.[\"condition\"];return!!t&&!te.isArray(t)&&T(t)}function _l(e){const t=e?.[\"condition\"];return!!t&&(te.isArray(t)||Sl(t))}function B(e){return e&&(!!e[\"field\"]||e[\"aggregate\"]===\"count\")}function yl(e){return e?.[\"type\"]}function Tl(e){return e&&\"datum\"in e}function vl(e){return b(e)&&!Rl(e)||El(e)}function bl(e){return b(e)&&e.type===\"quantitative\"&&!e.bin||El(e)}function El(e){return Tl(e)&&te.isNumber(e.datum)}function T(e){return B(e)||Tl(e)}function b(e){return e&&(\"field\"in e||e[\"aggregate\"]===\"count\")&&\"type\"in e}function Sl(e){return e&&\"value\"in e&&\"value\"in e}function Al(e){return e&&(\"scale\"in e||\"sort\"in e)}function Ol(e){return e&&(\"axis\"in e||\"stack\"in e||\"impute\"in e)}function Cl(e){return e&&\"legend\"in e}function wl(e){return e&&(\"format\"in e||\"formatType\"in e)}function kl(e){return fe(e,[\"legend\",\"axis\",\"header\",\"scale\"])}function Il(e){return\"op\"in e}function j(t){let r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let n=t.field;const e=r.prefix;let a=r.suffix;let i=\"\";if(Ml(t))n=je(\"count\");else{let e;if(!r.nofn)if(Il(t))e=t.op;else{const{bin:o,aggregate:s,timeUnit:l}=t;if(P(o)){e=on(o);a=(r.binSuffix??\"\")+(r.suffix??\"\")}else if(s)if(Zr(s)){i=`[\"${n}\"]`;n=`argmax_${s.argmax}`}else if(Qr(s)){i=`[\"${n}\"]`;n=`argmin_${s.argmin}`}else e=String(s);else if(l&&!Oi(l)){e=Li(l);a=(![\"range\",\"mid\"].includes(r.binSuffix)&&r.binSuffix||\"\")+(r.suffix??\"\")}}if(e)n=n?`${e}_${n}`:e}if(a)n=`${n}_${a}`;if(e)n=`${e}_${n}`;if(r.forAs)return xe(n);else if(r.expr)return Ne(n,r.expr)+i;else return Pe(n)+i}function Rl(e){switch(e.type){case\"nominal\":case\"ordinal\":case\"geojson\":return true;case\"quantitative\":return B(e)&&!!e.bin;case\"temporal\":return false}throw new Error(fa(e.type))}function Nl(e){return Al(e)&&Ao(e.scale?.type)}function Ml(e){return e.aggregate===\"count\"}function Pl(e,t){const{field:r,bin:n,timeUnit:a,aggregate:i}=e;if(i===\"count\")return t.countTitle;else if(P(n))return`${r} (binned)`;else if(a&&!Oi(a)){const o=F(a)?.unit;if(o)return`${r} (${Ri(o).join(\"-\")})`}else if(i)if(Zr(i))return`${r} for max ${i.argmax}`;else if(Qr(i))return`${r} for min ${i.argmin}`;else return`${Ie(i)} of ${r}`;return r}function Dl(e){const{aggregate:t,bin:r,timeUnit:n,field:a}=e;if(Zr(t))return`${a} for argmax(${t.argmax})`;else if(Qr(t))return`${a} for argmin(${t.argmin})`;const i=n&&!Oi(n)?F(n):undefined;const o=t||i?.unit||i?.maxbins&&\"timeunit\"||P(r)&&\"bin\";if(o)return`${o.toUpperCase()}(${a})`;else return a}const xl=(e,t)=>{switch(t.fieldTitle){case\"plain\":return e.field;case\"functional\":return Dl(e);default:return Pl(e,t)}};let Ll=xl;function Fl(e){Ll=e}function Ul(){Fl(xl)}function Bl(e,t,r){let{allowDisabling:n,includeDefault:a=true}=r;const i=jl(e)?.title;if(!B(e))return i??e.title;const o=e;const s=a?Hl(o,t):undefined;if(n)return I(i,o.title,s);else return i??o.title??s}function jl(e){if(Ol(e)&&e.axis)return e.axis;else if(Cl(e)&&e.legend)return e.legend;else if(al(e)&&e.header)return e.header;return undefined}function Hl(e,t){return Ll(e,t)}function Gl(e){if(wl(e)){const{format:t,formatType:r}=e;return{format:t,formatType:r}}else{const n=jl(e)??{};const{format:a,formatType:i}=n;return{format:a,formatType:i}}}function Vl(e,t){switch(t){case\"latitude\":case\"longitude\":return\"quantitative\";case\"row\":case\"column\":case\"facet\":case\"shape\":case\"strokeDash\":return\"nominal\";case\"order\":return\"ordinal\"}if(cl(e)&&te.isArray(e.sort))return\"ordinal\";const{aggregate:r,bin:n,timeUnit:a}=e;if(a)return\"temporal\";if(n||r&&!Zr(r)&&!Qr(r))return\"quantitative\";if(Al(e)&&e.scale?.type)switch(po[e.scale.type]){case\"numeric\":case\"discretizing\":return\"quantitative\";case\"time\":return\"temporal\"}return\"nominal\"}function ql(e){if(B(e))return e;else if(ml(e))return e.condition;return undefined}function H(e){if(T(e))return e;else if(gl(e))return e.condition;return undefined}function zl(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};if(te.isString(e)||te.isNumber(e)||te.isBoolean(e)){const a=te.isString(e)?\"string\":te.isNumber(e)?\"number\":\"boolean\";ae(pa(t,a,e));return{value:e}}if(T(e))return Wl(e,t,r,n);else if(gl(e))return{...e,condition:Wl(e.condition,t,r,n)};return e}function Wl(e,t,r,n){if(wl(e)){const{format:a,formatType:i,...o}=e;if(Fs(i)&&!r.customFormatTypes){ae(la(t));return Wl(o,t,r,n)}}else{const s=Ol(e)?\"axis\":Cl(e)?\"legend\":al(e)?\"header\":null;if(s&&e[s]){const{format:l,formatType:c,...u}=e[s];if(Fs(c)&&!r.customFormatTypes){ae(la(t));return Wl({...e,[s]:u},t,r,n)}}}if(B(e))return Kl(e,t,n);return $l(e)}function $l(e){let t=e[\"type\"];if(t)return e;const{datum:r}=e;t=te.isNumber(r)?\"quantitative\":te.isString(r)?\"nominal\":ui(r)?\"temporal\":undefined;return{...e,type:t}}function Kl(e,t){let{compositeMark:r=false}=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};const{aggregate:n,timeUnit:a,bin:i,field:o}=e;const s={...e};if(!r&&n&&!Xr(n)&&!Zr(n)&&!Qr(n)){ae(ma(n));delete s.aggregate}if(a)s.timeUnit=F(a);if(o)s.field=`${o}`;if(P(i))s.bin=Yl(i,t);if(D(i)&&!M(t))ae(ni(t));if(b(s)){const{type:l}=s;const c=uo(l);if(l!==c)s.type=c;if(l!==\"quantitative\")if(tn(n)){ae(ha(l,n));s.type=\"quantitative\"}}else if(!Jt(t)){const u=Vl(s,t);s[\"type\"]=u}if(b(s)){const{compatible:d,warning:p}=Ql(s,t)||{};if(d===false)ae(p)}if(cl(s)&&te.isString(s.sort)){const{sort:f}=s;if(Xs(f))return{...s,sort:{encoding:f}};const h=f.substr(1);if(f.charAt(0)===\"-\"&&Xs(h))return{...s,sort:{encoding:h,order:\"descending\"}}}if(al(s)){const{header:m}=s;if(m){const{orient:g,..._}=m;if(g)return{...s,header:{..._,labelOrient:m.labelOrient||g,titleOrient:m.titleOrient||g}}}}return s}function Yl(e,t){if(te.isBoolean(e))return{maxbins:cn(t)};else if(e===\"binned\")return{binned:true};else if(!e.maxbins&&!e.step)return{...e,maxbins:cn(t)};else return e}const Jl={compatible:true};function Ql(e,t){const r=e.type;if(r===\"geojson\"&&t!==\"shape\")return{compatible:false,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case We:case $e:case Ke:if(!Rl(e))return{compatible:false,warning:Ea(t)};return Jl;case R:case N:case Qe:case Ze:case st:case lt:case ct:case yt:case vt:case bt:case Et:case St:case At:case pt:case tt:case Xe:case Ot:return Jl;case at:case ot:case nt:case it:if(r!==io)return{compatible:false,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`};return Jl;case ft:case ht:case mt:case gt:case dt:case rt:case et:case Ye:case Je:if(r===\"nominal\"&&!e[\"sort\"])return{compatible:false,warning:`Channel ${t} should not be used with an unsorted discrete field.`};return Jl;case ut:case _t:if(!Rl(e)&&!Nl(e))return{compatible:false,warning:Sa(t)};return Jl;case Tt:if(e.type===\"nominal\"&&!(\"sort\"in e))return{compatible:false,warning:`Channel order is inappropriate for nominal field, which has no inherent order.`};return Jl}}function Zl(e){const{formatType:t}=Gl(e);return t===\"time\"||!t&&Xl(e)}function Xl(e){return e&&(e[\"type\"]===\"temporal\"||B(e)&&!!e.timeUnit)}function ec(e,t){let{timeUnit:r,type:n,wrapTime:a,undefinedIfExprNotRequired:i}=t;const o=r&&F(r)?.unit;let s=o||n===\"temporal\";let l;if(un(e))l=e.expr;else if(x(e))l=e.signal;else if(ui(e)){s=true;l=Ti(e)}else if(te.isString(e)||te.isNumber(e))if(s){l=`datetime(${g(e)})`;if(Ai(o))if(te.isNumber(e)&&e<1e4||te.isString(e)&&isNaN(Date.parse(e)))l=Ti({[o]:e})}if(l)return a&&s?`time(${l})`:l;return i?undefined:g(e)}function tc(n,e){const{type:a}=n;return e.map(e=>{const t=B(n)&&!Oi(n.timeUnit)?n.timeUnit:undefined;const r=ec(e,{timeUnit:t,type:a,undefinedIfExprNotRequired:true});if(r!==undefined)return{signal:r};return e})}function rc(e,t){if(!P(e.bin)){console.warn(\"Only call this method for binned field defs.\");return false}return Gr(t)&&[\"ordinal\",\"nominal\"].includes(e.type)}const nc={labelAlign:{part:\"labels\",vgProp:\"align\"},labelBaseline:{part:\"labels\",vgProp:\"baseline\"},labelColor:{part:\"labels\",vgProp:\"fill\"},labelFont:{part:\"labels\",vgProp:\"font\"},labelFontSize:{part:\"labels\",vgProp:\"fontSize\"},labelFontStyle:{part:\"labels\",vgProp:\"fontStyle\"},labelFontWeight:{part:\"labels\",vgProp:\"fontWeight\"},labelOpacity:{part:\"labels\",vgProp:\"opacity\"},labelOffset:null,labelPadding:null,gridColor:{part:\"grid\",vgProp:\"stroke\"},gridDash:{part:\"grid\",vgProp:\"strokeDash\"},gridDashOffset:{part:\"grid\",vgProp:\"strokeDashOffset\"},gridOpacity:{part:\"grid\",vgProp:\"opacity\"},gridWidth:{part:\"grid\",vgProp:\"strokeWidth\"},tickColor:{part:\"ticks\",vgProp:\"stroke\"},tickDash:{part:\"ticks\",vgProp:\"strokeDash\"},tickDashOffset:{part:\"ticks\",vgProp:\"strokeDashOffset\"},tickOpacity:{part:\"ticks\",vgProp:\"opacity\"},tickSize:null,tickWidth:{part:\"ticks\",vgProp:\"strokeWidth\"}};function ac(e){return e?.condition}const ic=[\"domain\",\"grid\",\"labels\",\"ticks\",\"title\"],oc={grid:\"grid\",gridCap:\"grid\",gridColor:\"grid\",gridDash:\"grid\",gridDashOffset:\"grid\",gridOpacity:\"grid\",gridScale:\"grid\",gridWidth:\"grid\",orient:\"main\",bandPosition:\"both\",aria:\"main\",description:\"main\",domain:\"main\",domainCap:\"main\",domainColor:\"main\",domainDash:\"main\",domainDashOffset:\"main\",domainOpacity:\"main\",domainWidth:\"main\",format:\"main\",formatType:\"main\",labelAlign:\"main\",labelAngle:\"main\",labelBaseline:\"main\",labelBound:\"main\",labelColor:\"main\",labelFlush:\"main\",labelFlushOffset:\"main\",labelFont:\"main\",labelFontSize:\"main\",labelFontStyle:\"main\",labelFontWeight:\"main\",labelLimit:\"main\",labelLineHeight:\"main\",labelOffset:\"main\",labelOpacity:\"main\",labelOverlap:\"main\",labelPadding:\"main\",labels:\"main\",labelSeparation:\"main\",maxExtent:\"main\",minExtent:\"main\",offset:\"both\",position:\"main\",tickCap:\"main\",tickColor:\"main\",tickDash:\"main\",tickDashOffset:\"main\",tickMinStep:\"both\",tickOffset:\"both\",tickOpacity:\"main\",tickRound:\"both\",ticks:\"main\",tickSize:\"main\",tickWidth:\"both\",title:\"main\",titleAlign:\"main\",titleAnchor:\"main\",titleAngle:\"main\",titleBaseline:\"main\",titleColor:\"main\",titleFont:\"main\",titleFontSize:\"main\",titleFontStyle:\"main\",titleFontWeight:\"main\",titleLimit:\"main\",titleLineHeight:\"main\",titleOpacity:\"main\",titlePadding:\"main\",titleX:\"main\",titleY:\"main\",encode:\"both\",scale:\"both\",tickBand:\"both\",tickCount:\"both\",tickExtra:\"both\",translate:\"both\",values:\"both\",zindex:\"both\"},sc={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},lc={...sc,style:1,labelExpr:1,encoding:1};function cc(e){return!!lc[e]}const uc={axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1},dc=A(uc);function pc(e){return\"mark\"in e}class fc{constructor(e,t){this.name=e;this.run=t}hasMatchingType(e){if(pc(e))return Ss(e.mark)===this.name;return false}}function hc(e,t){const r=e&&e[t];if(r)if(te.isArray(r))return me(r,e=>!!e.field);else return B(r)||ml(r);return false}function mc(e,t){const r=e&&e[t];if(r)if(te.isArray(r))return me(r,e=>!!e.field);else return B(r)||Tl(r)||gl(r);return false}function gc(e,t){if(M(t)){const r=e[t];if((B(r)||Tl(r))&&(ao(r.type)||B(r)&&r.timeUnit)){const n=rr(t);return mc(e,n)}}return false}function _c(n){return me(Ut,e=>{if(hc(n,e)){const t=n[e];if(te.isArray(t))return me(t,e=>!!e.aggregate);else{const r=ql(t);return r&&!!r.aggregate}}return false})}function yc(t,h){const m=[];const g=[];const _=[];const y=[];const T={};Sc(t,(e,r)=>{if(B(e)){const{field:n,aggregate:a,bin:i,timeUnit:o,...s}=e;if(a||o||i){const l=jl(e);const c=l?.title;let t=j(e,{forAs:true});const u={...c?[]:{title:Bl(e,h,{allowDisabling:true})},...s,field:t};if(a){let e;if(Zr(a)){e=\"argmax\";t=j({op:\"argmax\",field:a.argmax},{forAs:true});u.field=`${t}.${n}`}else if(Qr(a)){e=\"argmin\";t=j({op:\"argmin\",field:a.argmin},{forAs:true});u.field=`${t}.${n}`}else if(a!==\"boxplot\"&&a!==\"errorbar\"&&a!==\"errorband\")e=a;if(e){const d={op:e,as:t};if(n)d.field=n;y.push(d)}}else{m.push(t);if(b(e)&&P(i)){g.push({bin:i,field:n,as:t});m.push(j(e,{binSuffix:\"end\"}));if(rc(e,r))m.push(j(e,{binSuffix:\"range\"}));if(M(r)){const p={field:`${t}_end`};T[`${r}2`]=p}u.bin=\"binned\";if(!Jt(r))u[\"type\"]=io}else if(o&&!Oi(o)){_.push({timeUnit:o,field:n,as:t});const f=b(e)&&e.type!==so&&\"time\";if(f)if(r===yt||r===Et)u[\"formatType\"]=f;else if(Ur(r))u[\"legend\"]={formatType:f,...u[\"legend\"]};else if(M(r))u[\"axis\"]={formatType:f,...u[\"axis\"]}}}T[r]=u}else{m.push(n);T[r]=t[r]}}else T[r]=t[r]});return{bins:g,timeUnits:_,aggregate:y,groupby:m,encoding:T}}function Tc(e,t,r){const n=Vr(t,r);if(!n)return false;else if(n===\"binned\"){const a=e[t===Ye?R:N];if(B(a)&&B(e[t])&&D(a.bin))return true;else return false}return true}function vc(e,t,n,a){const i={};for(const r of A(e))if(!Kt(r))ae(ba(r));for(let r of ar){if(!e[r])continue;const o=e[r];if(wr(r)){const s=nr(r);const l=i[s];if(B(l))if(no(l.type))if(B(o)&&!l.timeUnit){ae(da(s));continue}}if(r===\"angle\"&&t===\"arc\"&&!e.theta){ae(ua);r=tt}if(!Tc(e,r,t)){ae(va(r,t));continue}if(r===dt&&t===\"line\"){const c=ql(e[r]);if(c?.aggregate){ae(Ta);continue}}if(r===st&&(n?\"fill\"in e:\"stroke\"in e)){ae(ga(\"encoding\",{fill:\"fill\"in e,stroke:\"stroke\"in e}));continue}if(r===vt||r===Tt&&!te.isArray(o)&&!Sl(o)||r===Et&&te.isArray(o)){if(o){if(r===Tt){const u=e[r];if(fl(u)){i[r]=u;continue}}i[r]=te.array(o).reduce((e,t)=>{if(!B(t))ae(ya(t,r));else e.push(Kl(t,r));return e},[])}}else{if(r===Et&&o===null)i[r]=null;else if(!B(o)&&!Tl(o)&&!Sl(o)&&!hl(o)&&!x(o)){ae(ya(o,r));continue}i[r]=zl(o,r,a)}}return i}function bc(e,t){const r={};for(const n of A(e)){const a=zl(e[n],n,t,{compositeMark:true});r[n]=a}return r}function Ec(e){const t=[];for(const r of A(e))if(hc(e,r)){const n=e[r];const a=te.array(n);for(const i of a)if(B(i))t.push(i);else if(ml(i))t.push(i.condition)}return t}function Sc(e,t,r){if(!e)return;for(const n of A(e)){const a=e[n];if(te.isArray(a))for(const i of a)t.call(r,i,n);else t.call(r,a,n)}}function Ac(n,a,e,i){if(!n)return e;return A(n).reduce((e,r)=>{const t=n[r];if(te.isArray(t))return t.reduce((e,t)=>{return a.call(i,e,t,r)},e);else return a.call(i,e,t,r)},e)}function Oc(i,o){return A(o).reduce((e,t)=>{switch(t){case R:case N:case St:case Ot:case At:case Ye:case Je:case Qe:case Ze:case tt:case rt:case Xe:case et:case nt:case at:case it:case ot:case yt:case ut:case pt:case Et:return e;case Tt:if(i===\"line\"||i===\"trail\")return e;case vt:case bt:{const r=o[t];if(te.isArray(r)||B(r))for(const n of te.array(r))if(!n.aggregate)e.push(j(n,{}));return e}case dt:if(i===\"trail\")return e;case st:case lt:case ct:case ft:case ht:case mt:case _t:case gt:{const a=ql(o[t]);if(a&&!a.aggregate)e.push(j(a,{}));return e}}},[])}function Cc(e){const{tooltip:t,...r}=e;if(!t)return{filteredEncoding:r};let n;let a;if(te.isArray(t)){for(const i of t)if(i.aggregate){if(!n)n=[];n.push(i)}else{if(!a)a=[];a.push(i)}if(n)r.tooltip=n}else if(t[\"aggregate\"])r.tooltip=t;else a=t;if(te.isArray(a)&&a.length===1)a=a[0];return{customTooltipWithoutAggregatedField:a,filteredEncoding:r}}function wc(e,a,t){let i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:true;if(\"tooltip\"in t)return{tooltip:t.tooltip};const r=e.map(e=>{let{fieldPrefix:t,titlePrefix:r}=e;const n=i?` of ${kc(a)}`:\"\";return{field:t+a.field,type:a.type,title:x(r)?{signal:`${r}\"${escape(n)}\"`}:r+n}});const n=Ec(t).map(kl);return{tooltip:[...r,...Te(n,S)]}}function kc(e){const{title:t,field:r}=e;return I(t,r)}function Ic(s,l,c,u,d){const{scale:p,axis:f}=c;return e=>{let{partName:t,mark:r,positionPrefix:n,endPositionPrefix:a=undefined,extraEncoding:i={}}=e;const o=kc(c);return Rc(s,t,d,{mark:r,encoding:{[l]:{field:`${n}_${c.field}`,type:c.type,...o!==undefined?{title:o}:{},...p!==undefined?{scale:p}:{},...f!==undefined?{axis:f}:{}},...te.isString(a)?{[`${l}2`]:{field:`${a}_${c.field}`}}:{},...u,...i}})}}function Rc(e,t,r,n){const{clip:a,color:i,opacity:o}=e;const s=e.type;if(e[t]||e[t]===undefined&&r[t])return[{...n,mark:{...r[t],...a?{clip:a}:{},...i?{color:i}:{},...o?{opacity:o}:{},...ss(n.mark)?n.mark:{type:n.mark},style:`${s}-${String(t)}`,...te.isBoolean(e[t])?{}:e[t]}}];return[]}function Nc(e,t,r){const{encoding:n}=e;const a=t===\"vertical\"?\"y\":\"x\";const i=n[a];const o=n[`${a}2`];const s=n[`${a}Error`];const l=n[`${a}Error2`];return{continuousAxisChannelDef:Mc(i,r),continuousAxisChannelDef2:Mc(o,r),continuousAxisChannelDefError:Mc(s,r),continuousAxisChannelDefError2:Mc(l,r),continuousAxis:a}}function Mc(e,t){if(e?.aggregate){const{aggregate:r,...n}=e;if(r!==t)ae(ei(r,t));return n}else return e}function Pc(e,t){const{mark:r,encoding:n}=e;const{x:a,y:i}=n;if(ss(r)&&r.orient)return r.orient;if(vl(a)){if(vl(i)){const o=B(a)&&a.aggregate;const s=B(i)&&i.aggregate;if(!o&&s===t)return\"vertical\";else if(!s&&o===t)return\"horizontal\";else if(o===t&&s===t)throw new Error(\"Both x and y cannot have aggregate\");else{if(Zl(i)&&!Zl(a))return\"horizontal\";return\"vertical\"}}return\"horizontal\"}else if(vl(i))return\"vertical\";else throw new Error(`Need a valid continuous axis for ${t}s`)}const Dc=\"boxplot\",xc=[\"box\",\"median\",\"outliers\",\"rule\",\"ticks\"],Lc=new fc(Dc,Uc);function Fc(e){if(te.isNumber(e))return\"tukey\";return e}function Uc(e,L){let{config:t}=L;e={...e,encoding:bc(e.encoding,t)};const{mark:r,encoding:F,params:U,projection:B,...n}=e;const a=ss(r)?r:{type:r};if(U)ae(zn(\"boxplot\"));const i=a.extent??t.boxplot.extent;const o=ne(\"size\",a,t);const s=a.invalid;const l=Fc(i);const{bins:j,timeUnits:H,transform:c,continuousAxisChannelDef:u,continuousAxis:d,groupby:p,aggregate:G,encodingWithoutContinuousAxis:f,ticksOrient:h,boxOrient:V,customTooltipWithoutAggregatedField:m}=jc(e,i,t);const g=xe(u.field);const{color:_,size:y,...T}=f;const v=e=>{return Ic(a,d,u,e,t.boxplot)};const b=v(T);const q=v(f);const z=(te.isObject(t.boxplot.box)?t.boxplot.box.color:t.mark.color)||\"#4c78a8\";const W=v({...T,...y?{size:y}:{},color:{condition:{test:`datum['lower_box_${u.field}'] >= datum['upper_box_${u.field}']`,..._||{value:z}}}});const E=wc([{fieldPrefix:l===\"min-max\"?\"upper_whisker_\":\"max_\",titlePrefix:\"Max\"},{fieldPrefix:\"upper_box_\",titlePrefix:\"Q3\"},{fieldPrefix:\"mid_box_\",titlePrefix:\"Median\"},{fieldPrefix:\"lower_box_\",titlePrefix:\"Q1\"},{fieldPrefix:l===\"min-max\"?\"lower_whisker_\":\"min_\",titlePrefix:\"Min\"}],u,f);const S={type:\"tick\",color:\"black\",opacity:1,orient:h,invalid:s,aria:false};const A=l===\"min-max\"?E:wc([{fieldPrefix:\"upper_whisker_\",titlePrefix:\"Upper Whisker\"},{fieldPrefix:\"lower_whisker_\",titlePrefix:\"Lower Whisker\"}],u,f);const O=[...b({partName:\"rule\",mark:{type:\"rule\",invalid:s,aria:false},positionPrefix:\"lower_whisker\",endPositionPrefix:\"lower_box\",extraEncoding:A}),...b({partName:\"rule\",mark:{type:\"rule\",invalid:s,aria:false},positionPrefix:\"upper_box\",endPositionPrefix:\"upper_whisker\",extraEncoding:A}),...b({partName:\"ticks\",mark:S,positionPrefix:\"lower_whisker\",extraEncoding:A}),...b({partName:\"ticks\",mark:S,positionPrefix:\"upper_whisker\",extraEncoding:A})];const C=[...l!==\"tukey\"?O:[],...q({partName:\"box\",mark:{type:\"bar\",...o?{size:o}:{},orient:V,invalid:s,ariaRoleDescription:\"box\"},positionPrefix:\"lower_box\",endPositionPrefix:\"upper_box\",extraEncoding:E}),...W({partName:\"median\",mark:{type:\"tick\",invalid:s,...te.isObject(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},...o?{size:o}:{},orient:h,aria:false},positionPrefix:\"mid_box\",extraEncoding:E})];if(l===\"min-max\")return{...n,transform:(n.transform??[]).concat(c),layer:C};const w=`datum[\"lower_box_${u.field}\"]`;const k=`datum[\"upper_box_${u.field}\"]`;const I=`(${k} - ${w})`;const R=`${w} - ${i} * ${I}`;const N=`${k} + ${i} * ${I}`;const M=`datum[\"${u.field}\"]`;const $={joinaggregate:Bc(u.field),groupby:p};const P={transform:[{filter:`(${R} <= ${M}) && (${M} <= ${N})`},{aggregate:[{op:\"min\",field:u.field,as:`lower_whisker_${g}`},{op:\"max\",field:u.field,as:`upper_whisker_${g}`},{op:\"min\",field:`lower_box_${u.field}`,as:`lower_box_${g}`},{op:\"max\",field:`upper_box_${u.field}`,as:`upper_box_${g}`},...G],groupby:p}],layer:O};const{tooltip:K,...Y}=T;const{scale:D,axis:J}=u;const Q=kc(u);const Z=fe(J,[\"title\"]);const X=Rc(a,\"outliers\",t.boxplot,{transform:[{filter:`(${M} < ${R}) || (${M} > ${N})`}],mark:\"point\",encoding:{[d]:{field:u.field,type:u.type,...Q!==undefined?{title:Q}:{},...D!==undefined?{scale:D}:{},...re(Z)?{}:{axis:Z}},...Y,..._?{color:_}:{},...m?{tooltip:m}:{}}})[0];let x;const ee=[...j,...H,$];if(X)x={transform:ee,layer:[X,P]};else{x=P;x.transform.unshift(...ee)}return{...n,layer:[x,{transform:c,layer:C}]}}function Bc(e){const t=xe(e);return[{op:\"q1\",field:e,as:`lower_box_${t}`},{op:\"q3\",field:e,as:`upper_box_${t}`}]}function jc(e,t,r){const n=Pc(e,Dc);const{continuousAxisChannelDef:a,continuousAxis:i}=Nc(e,n,Dc);const o=a.field;const s=xe(o);const l=Fc(t);const c=[...Bc(o),{op:\"median\",field:o,as:`mid_box_${s}`},{op:\"min\",field:o,as:(l===\"min-max\"?\"lower_whisker_\":\"min_\")+s},{op:\"max\",field:o,as:(l===\"min-max\"?\"upper_whisker_\":\"max_\")+s}];const u=l===\"min-max\"||l===\"tukey\"?[]:[{calculate:`datum[\"upper_box_${s}\"] - datum[\"lower_box_${s}\"]`,as:`iqr_${s}`},{calculate:`min(datum[\"upper_box_${s}\"] + datum[\"iqr_${s}\"] * ${t}, datum[\"max_${s}\"])`,as:`upper_whisker_${s}`},{calculate:`max(datum[\"lower_box_${s}\"] - datum[\"iqr_${s}\"] * ${t}, datum[\"min_${s}\"])`,as:`lower_whisker_${s}`}];const{[i]:d,...p}=e.encoding;const{customTooltipWithoutAggregatedField:f,filteredEncoding:h}=Cc(p);const{bins:m,timeUnits:g,aggregate:_,groupby:y,encoding:T}=yc(h,r);const v=n===\"vertical\"?\"horizontal\":\"vertical\";const b=n;const E=[...m,...g,{aggregate:[..._,...c],groupby:y},...u];return{bins:m,timeUnits:g,transform:E,groupby:y,aggregate:_,continuousAxisChannelDef:a,continuousAxis:i,encodingWithoutContinuousAxis:T,ticksOrient:v,boxOrient:b,customTooltipWithoutAggregatedField:f}}const Hc=\"errorbar\",Gc=[\"ticks\",\"rule\"],Vc=new fc(Hc,qc);function qc(e,t){let{config:r}=t;e={...e,encoding:bc(e.encoding,r)};const{transform:n,continuousAxisChannelDef:a,continuousAxis:i,encodingWithoutContinuousAxis:o,ticksOrient:s,markDef:l,outerSpec:c,tooltipEncoding:u}=Yc(e,Hc,r);delete o[\"size\"];const d=Ic(l,i,a,o,r.errorbar);const p=l.thickness;const f=l.size;const h={type:\"tick\",orient:s,aria:false,...p!==undefined?{thickness:p}:{},...f!==undefined?{size:f}:{}};const m=[...d({partName:\"ticks\",mark:h,positionPrefix:\"lower\",extraEncoding:u}),...d({partName:\"ticks\",mark:h,positionPrefix:\"upper\",extraEncoding:u}),...d({partName:\"rule\",mark:{type:\"rule\",ariaRoleDescription:\"errorbar\",...p!==undefined?{size:p}:{}},positionPrefix:\"lower\",endPositionPrefix:\"upper\",extraEncoding:u})];return{...c,transform:n,...m.length>1?{layer:m}:{...m[0]}}}function zc(e,t){const{encoding:r}=e;if(Wc(r))return{orient:Pc(e,t),inputType:\"raw\"};const n=$c(r);const a=Kc(r);const i=r.x;const o=r.y;if(n){if(a)throw new Error(`${t} cannot be both type aggregated-upper-lower and aggregated-error`);const s=r.x2;const l=r.y2;if(T(s)&&T(l))throw new Error(`${t} cannot have both x2 and y2`);else if(T(s))if(vl(i))return{orient:\"horizontal\",inputType:\"aggregated-upper-lower\"};else throw new Error(`Both x and x2 have to be quantitative in ${t}`);else if(T(l))if(vl(o))return{orient:\"vertical\",inputType:\"aggregated-upper-lower\"};else throw new Error(`Both y and y2 have to be quantitative in ${t}`);throw new Error(\"No ranged axis\")}else{const c=r.xError;const u=r.xError2;const d=r.yError;const p=r.yError2;if(T(u)&&!T(c))throw new Error(`${t} cannot have xError2 without xError`);if(T(p)&&!T(d))throw new Error(`${t} cannot have yError2 without yError`);if(T(c)&&T(d))throw new Error(`${t} cannot have both xError and yError with both are quantiative`);else if(T(c))if(vl(i))return{orient:\"horizontal\",inputType:\"aggregated-error\"};else throw new Error(\"All x, xError, and xError2 (if exist) have to be quantitative\");else if(T(d))if(vl(o))return{orient:\"vertical\",inputType:\"aggregated-error\"};else throw new Error(\"All y, yError, and yError2 (if exist) have to be quantitative\");throw new Error(\"No ranged axis\")}}function Wc(e){return(T(e.x)||T(e.y))&&!T(e.x2)&&!T(e.y2)&&!T(e.xError)&&!T(e.xError2)&&!T(e.yError)&&!T(e.yError2)}function $c(e){return T(e.x2)||T(e.y2)}function Kc(e){return T(e.xError)||T(e.xError2)||T(e.yError)||T(e.yError2)}function Yc(e,t,r){const{mark:n,encoding:a,params:i,projection:o,...s}=e;const l=ss(n)?n:{type:n};if(i)ae(zn(t));const{orient:c,inputType:u}=zc(e,t);const{continuousAxisChannelDef:d,continuousAxisChannelDef2:p,continuousAxisChannelDefError:f,continuousAxisChannelDefError2:h,continuousAxis:m}=Nc(e,c,t);const{errorBarSpecificAggregate:g,postAggregateCalculates:_,tooltipSummary:y,tooltipTitleWithFieldName:T}=Jc(l,d,p,f,h,u,t,r);const{[m]:v,[m===\"x\"?\"x2\":\"y2\"]:b,[m===\"x\"?\"xError\":\"yError\"]:E,[m===\"x\"?\"xError2\":\"yError2\"]:S,...A}=a;const{bins:O,timeUnits:C,aggregate:w,groupby:k,encoding:I}=yc(A,r);const R=[...w,...g];const N=u!==\"raw\"?[]:k;const M=wc(y,d,I,T);return{transform:[...s.transform??[],...O,...C,...R.length===0?[]:[{aggregate:R,groupby:N}],..._],groupby:N,continuousAxisChannelDef:d,continuousAxis:m,encodingWithoutContinuousAxis:I,ticksOrient:c===\"vertical\"?\"horizontal\":\"vertical\",markDef:l,outerSpec:s,tooltipEncoding:M}}function Jc(e,t,r,n,a,i,o,s){let l=[];let c=[];const u=t.field;let d;let p=false;if(i===\"raw\"){const f=e.center?e.center:e.extent?e.extent===\"iqr\"?\"median\":\"mean\":s.errorbar.center;const h=e.extent?e.extent:f===\"mean\"?\"stderr\":\"iqr\";if(f===\"median\"!==(h===\"iqr\"))ae(Xa(f,h,o));if(h===\"stderr\"||h===\"stdev\"){l=[{op:h,field:u,as:`extent_${u}`},{op:f,field:u,as:`center_${u}`}];c=[{calculate:`datum[\"center_${u}\"] + datum[\"extent_${u}\"]`,as:`upper_${u}`},{calculate:`datum[\"center_${u}\"] - datum[\"extent_${u}\"]`,as:`lower_${u}`}];d=[{fieldPrefix:\"center_\",titlePrefix:Ie(f)},{fieldPrefix:\"upper_\",titlePrefix:Qc(f,h,\"+\")},{fieldPrefix:\"lower_\",titlePrefix:Qc(f,h,\"-\")}];p=true}else{let e;let t;let r;if(h===\"ci\"){e=\"mean\";t=\"ci0\";r=\"ci1\"}else{e=\"median\";t=\"q1\";r=\"q3\"}l=[{op:t,field:u,as:`lower_${u}`},{op:r,field:u,as:`upper_${u}`},{op:e,field:u,as:`center_${u}`}];d=[{fieldPrefix:\"upper_\",titlePrefix:Bl({field:u,aggregate:r,type:\"quantitative\"},s,{allowDisabling:false})},{fieldPrefix:\"lower_\",titlePrefix:Bl({field:u,aggregate:t,type:\"quantitative\"},s,{allowDisabling:false})},{fieldPrefix:\"center_\",titlePrefix:Bl({field:u,aggregate:e,type:\"quantitative\"},s,{allowDisabling:false})}]}}else{if(e.center||e.extent)ae(Za(e.center,e.extent));if(i===\"aggregated-upper-lower\"){d=[];c=[{calculate:`datum[\"${r.field}\"]`,as:`upper_${u}`},{calculate:`datum[\"${u}\"]`,as:`lower_${u}`}]}else if(i===\"aggregated-error\"){d=[{fieldPrefix:\"\",titlePrefix:u}];c=[{calculate:`datum[\"${u}\"] + datum[\"${n.field}\"]`,as:`upper_${u}`}];if(a)c.push({calculate:`datum[\"${u}\"] + datum[\"${a.field}\"]`,as:`lower_${u}`});else c.push({calculate:`datum[\"${u}\"] - datum[\"${n.field}\"]`,as:`lower_${u}`})}for(const m of c)d.push({fieldPrefix:m.as.substring(0,6),titlePrefix:De(De(m.calculate,'datum[\"',\"\"),'\"]',\"\")})}return{postAggregateCalculates:c,errorBarSpecificAggregate:l,tooltipSummary:d,tooltipTitleWithFieldName:p}}function Qc(e,t,r){return`${Ie(e)} ${r} ${t}`}const Zc=\"errorband\",Xc=[\"band\",\"borders\"],eu=new fc(Zc,tu);function tu(e,t){let{config:r}=t;e={...e,encoding:bc(e.encoding,r)};const{transform:n,continuousAxisChannelDef:a,continuousAxis:i,encodingWithoutContinuousAxis:o,markDef:s,outerSpec:l,tooltipEncoding:c}=Yc(e,Zc,r);const u=s;const d=Ic(u,i,a,o,r.errorband);const p=e.encoding.x!==undefined&&e.encoding.y!==undefined;let f={type:p?\"area\":\"rect\"};let h={type:p?\"line\":\"rule\"};const m={...u.interpolate?{interpolate:u.interpolate}:{},...u.tension&&u.interpolate?{tension:u.tension}:{}};if(p){f={...f,...m,ariaRoleDescription:\"errorband\"};h={...h,...m,aria:false}}else if(u.interpolate)ae(ti(\"interpolate\"));else if(u.tension)ae(ti(\"tension\"));return{...l,transform:n,layer:[...d({partName:\"band\",mark:f,positionPrefix:\"lower\",endPositionPrefix:\"upper\",extraEncoding:c}),...d({partName:\"borders\",mark:h,positionPrefix:\"lower\",extraEncoding:c}),...d({partName:\"borders\",mark:h,positionPrefix:\"upper\",extraEncoding:c})]}}const ru={};function nu(e,t,r){const n=new fc(e,t);ru[e]={normalizer:n,parts:r}}function au(){return A(ru)}nu(Dc,Uc,xc),nu(Hc,qc,Gc),nu(Zc,tu,Xc);const iu=[\"gradientHorizontalMaxLength\",\"gradientHorizontalMinLength\",\"gradientVerticalMaxLength\",\"gradientVerticalMinLength\",\"unselectedOpacity\"],ou={titleAlign:\"align\",titleAnchor:\"anchor\",titleAngle:\"angle\",titleBaseline:\"baseline\",titleColor:\"color\",titleFont:\"font\",titleFontSize:\"fontSize\",titleFontStyle:\"fontStyle\",titleFontWeight:\"fontWeight\",titleLimit:\"limit\",titleLineHeight:\"lineHeight\",titleOrient:\"orient\",titlePadding:\"offset\"},su={labelAlign:\"align\",labelAnchor:\"anchor\",labelAngle:\"angle\",labelBaseline:\"baseline\",labelColor:\"color\",labelFont:\"font\",labelFontSize:\"fontSize\",labelFontStyle:\"fontStyle\",labelFontWeight:\"fontWeight\",labelLimit:\"limit\",labelLineHeight:\"lineHeight\",labelOrient:\"orient\",labelPadding:\"offset\"},lu=A(ou),cu=A(su),uu={header:1,headerRow:1,headerColumn:1,headerFacet:1},du=A(uu),pu=[\"size\",\"shape\",\"fill\",\"stroke\",\"strokeDash\",\"strokeWidth\",\"opacity\"],fu={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},hu={aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},mu=\"_vgsid_\",gu={point:{on:\"click\",fields:[mu],toggle:\"event.shiftKey\",resolve:\"global\",clear:\"dblclick\"},interval:{on:\"[pointerdown, window:pointerup] > window:pointermove!\",encodings:[\"x\",\"y\"],translate:\"[pointerdown, window:pointerup] > window:pointermove!\",zoom:\"wheel!\",mark:{fill:\"#333\",fillOpacity:.125,stroke:\"white\"},resolve:\"global\",clear:\"dblclick\"}};function _u(e){return e===\"legend\"||!!e?.legend}function yu(e){return _u(e)&&te.isObject(e)}function Tu(e){return!!e?.[\"select\"]}function vu(e){const t=[];for(const r of e||[]){if(Tu(r))continue;const{expr:n,bind:a,...i}=r;if(a&&n){const o={...i,bind:a,init:n};t.push(o)}else{const s={...i,...n?{update:n}:{},...a?{bind:a}:{}};t.push(s)}}return t}function bu(e){return Su(e)||Au(e)||Eu(e)}function Eu(e){return\"concat\"in e}function Su(e){return\"vconcat\"in e}function Au(e){return\"hconcat\"in e}function Ou(e){let{step:t,offsetIsDiscrete:r}=e;if(r)return t.for??\"offset\";else return\"position\"}function Cu(e){return te.isObject(e)&&e[\"step\"]!==undefined}function wu(e){return e[\"view\"]||e[\"width\"]||e[\"height\"]}const ku=20,Iu={align:1,bounds:1,center:1,columns:1,spacing:1},Ru=A(Iu);function Nu(e,t,r){const n=r[t];const a={};const{spacing:i,columns:o}=n;if(i!==undefined)a.spacing=i;if(o!==undefined)if(il(e)&&!nl(e.facet)||Eu(e))a.columns=o;if(Su(e))a.columns=1;for(const s of Ru)if(e[s]!==undefined)if(s===\"spacing\"){const l=e[s];a[s]=te.isNumber(l)?l:{row:l.row??i,column:l.column??i}}else a[s]=e[s];return a}function Mu(e,t){return e[t]??e[t===\"width\"?\"continuousWidth\":\"continuousHeight\"]}function Pu(e,t){const r=Du(e,t);return Cu(r)?r.step:xu}function Du(e,t){const r=e[t]??e[t===\"width\"?\"discreteWidth\":\"discreteHeight\"];return I(r,{step:e.step})}const xu=20,Lu={continuousWidth:200,continuousHeight:200,step:xu},Fu={background:\"white\",padding:5,timeFormat:\"%b %d, %Y\",countTitle:\"Count of Records\",view:Lu,mark:hs,arc:{},area:{},bar:vs,circle:{},geoshape:{},image:{},line:{},point:{},rect:bs,rule:{color:\"black\"},square:{},text:{color:\"black\"},tick:Es,trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:\"white\"},outliers:{},rule:{},ticks:null},errorbar:{center:\"mean\",rule:true,ticks:false},errorband:{band:{opacity:.3},borders:false},scale:Oo,projection:{},legend:fu,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:gu,style:{},title:{},facet:{spacing:ku},concat:{spacing:ku},normalizedNumberFormat:\".0%\"},Uu=[\"#4c78a8\",\"#f58518\",\"#e45756\",\"#72b7b2\",\"#54a24b\",\"#eeca3b\",\"#b279a2\",\"#ff9da6\",\"#9d755d\",\"#bab0ac\"],Bu={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},ju={blue:Uu[0],orange:Uu[1],red:Uu[2],teal:Uu[3],green:Uu[4],yellow:Uu[5],purple:Uu[6],pink:Uu[7],brown:Uu[8],gray0:\"#000\",gray1:\"#111\",gray2:\"#222\",gray3:\"#333\",gray4:\"#444\",gray5:\"#555\",gray6:\"#666\",gray7:\"#777\",gray8:\"#888\",gray9:\"#999\",gray10:\"#aaa\",gray11:\"#bbb\",gray12:\"#ccc\",gray13:\"#ddd\",gray14:\"#eee\",gray15:\"#fff\"};function Hu(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return{signals:[{name:\"color\",value:te.isObject(e)?{...ju,...e}:ju}],mark:{color:{signal:\"color.blue\"}},rule:{color:{signal:\"color.gray0\"}},text:{color:{signal:\"color.gray0\"}},style:{\"guide-label\":{fill:{signal:\"color.gray0\"}},\"guide-title\":{fill:{signal:\"color.gray0\"}},\"group-title\":{fill:{signal:\"color.gray0\"}},\"group-subtitle\":{fill:{signal:\"color.gray0\"}},cell:{stroke:{signal:\"color.gray8\"}}},axis:{domainColor:{signal:\"color.gray13\"},gridColor:{signal:\"color.gray8\"},tickColor:{signal:\"color.gray13\"}},range:{category:[{signal:\"color.blue\"},{signal:\"color.orange\"},{signal:\"color.red\"},{signal:\"color.teal\"},{signal:\"color.green\"},{signal:\"color.yellow\"},{signal:\"color.purple\"},{signal:\"color.pink\"},{signal:\"color.brown\"},{signal:\"color.grey8\"}]}}}function Gu(e){return{signals:[{name:\"fontSize\",value:te.isObject(e)?{...Bu,...e}:Bu}],text:{fontSize:{signal:\"fontSize.text\"}},style:{\"guide-label\":{fontSize:{signal:\"fontSize.guideLabel\"}},\"guide-title\":{fontSize:{signal:\"fontSize.guideTitle\"}},\"group-title\":{fontSize:{signal:\"fontSize.groupTitle\"}},\"group-subtitle\":{fontSize:{signal:\"fontSize.groupSubtitle\"}}}}}function Vu(e){return{text:{font:e},style:{\"guide-label\":{font:e},\"guide-title\":{font:e},\"group-title\":{font:e},\"group-subtitle\":{font:e}}}}function qu(e){const t=A(e||{});const r={};for(const n of t){const a=e[n];r[n]=ac(a)?bn(a):En(a)}return r}function zu(e){const t=A(e);const r={};for(const n of t)r[n]=qu(e[n]);return r}const Wu=[...gs,...dc,...du,\"background\",\"padding\",\"legend\",\"lineBreak\",\"scale\",\"style\",\"title\",\"view\"];function $u(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};const{color:t,font:r,fontSize:n,selection:a,...i}=e;const o=te.mergeConfig({},m(Fu),r?Vu(r):{},t?Hu(t):{},n?Gu(n):{},i||{});if(a)te.writeConfig(o,\"selection\",a,true);const s=fe(o,Wu);for(const l of[\"background\",\"lineBreak\",\"padding\"])if(o[l])s[l]=En(o[l]);for(const c of gs)if(o[c])s[c]=_(o[c]);for(const u of dc)if(o[u])s[u]=qu(o[u]);for(const d of du)if(o[d])s[d]=_(o[d]);if(o.legend)s.legend=_(o.legend);if(o.scale){const{invalid:p,...f}=o.scale;const h=_(p,{level:1});s.scale={..._(f),...A(h).length>0?{invalid:h}:{}}}if(o.style)s.style=zu(o.style);if(o.title)s.title=_(o.title);if(o.view)s.view=_(o.view);return s}const Ku=new Set([\"view\",...os]),Yu=[\"color\",\"fontSize\",\"background\",\"padding\",\"facet\",\"concat\",\"numberFormat\",\"numberFormatType\",\"normalizedNumberFormat\",\"normalizedNumberFormatType\",\"timeFormat\",\"countTitle\",\"header\",\"axisQuantitative\",\"axisTemporal\",\"axisDiscrete\",\"axisPoint\",\"axisXBand\",\"axisXPoint\",\"axisXDiscrete\",\"axisXQuantitative\",\"axisXTemporal\",\"axisYBand\",\"axisYPoint\",\"axisYDiscrete\",\"axisYQuantitative\",\"axisYTemporal\",\"scale\",\"selection\",\"overlay\"],Ju={view:[\"continuousWidth\",\"continuousHeight\",\"discreteWidth\",\"discreteHeight\",\"step\"],...fs};function Qu(e){e=m(e);for(const t of Yu)delete e[t];if(e.axis)for(const r in e.axis)if(ac(e.axis[r]))delete e.axis[r];if(e.legend)for(const n of iu)delete e.legend[n];if(e.mark){for(const a of ps)delete e.mark[a];if(e.mark.tooltip&&te.isObject(e.mark.tooltip))delete e.mark.tooltip}if(e.params){e.signals=(e.signals||[]).concat(vu(e.params));delete e.params}for(const i of Ku){for(const s of ps)delete e[i][s];const o=Ju[i];if(o)for(const l of o)delete e[i][l];Xu(e,i)}for(const c of au())delete e[c];Zu(e);for(const u in e)if(te.isObject(e[u])&&re(e[u]))delete e[u];return re(e)?undefined:e}function Zu(e){const{titleMarkConfig:t,subtitleMarkConfig:r,subtitle:n}=dn(e.title);if(!re(t))e.style[\"group-title\"]={...e.style[\"group-title\"],...t};if(!re(r))e.style[\"group-subtitle\"]={...e.style[\"group-subtitle\"],...r};if(!re(n))e.title=n;else delete e.title}function Xu(e,t,r,n){const a=e[t];if(t===\"view\")r=\"cell\";const i={...a,...e.style[r??t]};if(!re(i))e.style[r??t]=i;delete e[t]}function ed(e){return\"layer\"in e}function td(e){return\"repeat\"in e}function rd(e){return!te.isArray(e.repeat)&&e.repeat[\"layer\"]}class nd{map(e,t){if(il(e))return this.mapFacet(e,t);else if(td(e))return this.mapRepeat(e,t);else if(Au(e))return this.mapHConcat(e,t);else if(Su(e))return this.mapVConcat(e,t);else if(Eu(e))return this.mapConcat(e,t);else return this.mapLayerOrUnit(e,t)}mapLayerOrUnit(e,t){if(ed(e))return this.mapLayer(e,t);else if(pc(e))return this.mapUnit(e,t);throw new Error(Ln(e))}mapLayer(e,t){return{...e,layer:e.layer.map(e=>this.mapLayerOrUnit(e,t))}}mapHConcat(e,t){return{...e,hconcat:e.hconcat.map(e=>this.map(e,t))}}mapVConcat(e,t){return{...e,vconcat:e.vconcat.map(e=>this.map(e,t))}}mapConcat(e,t){const{concat:r,...n}=e;return{...n,concat:r.map(e=>this.map(e,t))}}mapFacet(e,t){return{...e,spec:this.map(e.spec,t)}}mapRepeat(e,t){return{...e,spec:this.map(e.spec,t)}}}const ad={zero:1,center:1,normalize:1};function id(e){return e in ad}const od=new Set([qo,Wo,zo,Qo,Yo,ts,rs,Ko,Zo,Xo]),sd=new Set([Wo,zo,qo]);function ld(e){return B(e)&&yl(e)===\"quantitative\"&&!e.bin}function cd(e,t,r){let{orient:n,type:a}=r;const i=t===\"x\"?\"y\":\"radius\";const o=t===\"x\"&&[\"bar\",\"area\"].includes(a);const s=e[t];const l=e[i];if(B(s)&&B(l)){if(ld(s)&&ld(l)){if(s.stack)return t;else if(l.stack)return i;const c=B(s)&&!!s.aggregate;const u=B(l)&&!!l.aggregate;if(c!==u)return c?t:i;if(o)if(n===\"vertical\")return i;else if(n===\"horizontal\")return t}else if(ld(s))return t;else if(ld(l))return i}else if(ld(s)){if(o&&n===\"vertical\")return undefined;return t}else if(ld(l)){if(o&&n===\"horizontal\")return undefined;return i}return undefined}function ud(e){switch(e){case\"x\":return\"y\";case\"y\":return\"x\";case\"theta\":return\"radius\";case\"radius\":return\"theta\"}}function dd(e,o){const t=ss(e)?e:{type:e};const r=t.type;if(!od.has(r))return null;const n=cd(o,\"x\",t)||cd(o,\"theta\",t);if(!n)return null;const a=o[n];const i=B(a)?j(a,{}):undefined;const s=ud(n);const l=[];const c=new Set;if(o[s]){const m=o[s];const g=B(m)?j(m,{}):undefined;if(g&&g!==i){l.push(s);c.add(g)}}const u=s===\"x\"?\"xOffset\":\"yOffset\";const d=o[u];const p=B(d)?j(d,{}):undefined;if(p&&p!==i){l.push(u);c.add(p)}const f=vr.reduce((e,t)=>{if(t!==\"tooltip\"&&hc(o,t)){const r=o[t];for(const n of te.array(r)){const a=ql(n);if(a.aggregate)continue;const i=j(a,{});if(!i||!c.has(i))e.push({channel:t,fieldDef:a})}}return e},[]);let h;if(a.stack!==undefined)if(te.isBoolean(a.stack))h=a.stack?\"zero\":null;else h=a.stack;else if(sd.has(r))h=\"zero\";if(!h||!id(h))return null;if(_c(o)&&f.length===0)return null;if(a?.scale?.type&&a?.scale?.type!==y.LINEAR)if(a?.stack)ae(Ka(a.scale.type));if(T(o[Xt(n)])){if(a.stack!==undefined)ae($a(n));return null}if(B(a)&&a.aggregate&&!nn.has(a.aggregate))ae(Ya(a.aggregate));return{groupbyChannels:l,groupbyFields:c,fieldChannel:n,impute:a.impute===null?false:as(r),stackBy:f,offset:h}}function pd(e,t,r){const n=_(e);const a=ne(\"orient\",n,r);n.orient=gd(n.type,t,a);if(a!==undefined&&a!==n.orient)ae(ka(n.orient,a));if(n.type===\"bar\"&&n.orient){const l=ne(\"cornerRadiusEnd\",n,r);if(l!==undefined){const c=n.orient===\"horizontal\"&&t.x2||n.orient===\"vertical\"&&t.y2?[\"cornerRadius\"]:ys[n.orient];for(const u of c)n[u]=l;if(n.cornerRadiusEnd!==undefined)delete n.cornerRadiusEnd}}const i=ne(\"opacity\",n,r);const o=ne(\"fillOpacity\",n,r);if(i===undefined&&o===undefined)n.opacity=hd(n.type,t);const s=ne(\"cursor\",n,r);if(s===undefined)n.cursor=fd(n,t,r);return n}function fd(e,t,r){if(t.href||e.href||ne(\"href\",e,r))return\"pointer\";return e.cursor}function hd(e,t){if(k([Yo,Xo,ts,rs],e))if(!_c(t))return.7;return undefined}function md(e,t,r){let{graticule:n}=r;if(n)return false;const a=In(\"filled\",e,t);const i=e.type;return I(a,i!==Yo&&i!==Ko&&i!==Qo)}function gd(e,t,r){switch(e){case Yo:case ts:case rs:case Zo:case Jo:case $o:return undefined}const{x:n,y:a,x2:i,y2:o}=t;switch(e){case Wo:if(B(n)&&(D(n.bin)||B(a)&&a.aggregate&&!n.aggregate))return\"vertical\";if(B(a)&&(D(a.bin)||B(n)&&n.aggregate&&!a.aggregate))return\"horizontal\";if(o||i){if(r)return r;if(!i){if(B(n)&&n.type===io&&!P(n.bin)||El(n))if(B(a)&&D(a.bin))return\"horizontal\";return\"vertical\"}if(!o){if(B(a)&&a.type===io&&!P(a.bin)||El(a))if(B(n)&&D(n.bin))return\"vertical\";return\"horizontal\"}}case Qo:if(i&&!(B(n)&&D(n.bin))&&o&&!(B(a)&&D(a.bin)))return undefined;case zo:if(o)if(B(a)&&D(a.bin))return\"horizontal\";else return\"vertical\";else if(i)if(B(n)&&D(n.bin))return\"vertical\";else return\"horizontal\";else if(e===Qo)if(n&&!a)return\"vertical\";else if(a&&!n)return\"horizontal\";case Ko:case Xo:{const s=bl(n);const l=bl(a);if(r)return r;else if(s&&!l)return e!==\"tick\"?\"horizontal\":\"vertical\";else if(!s&&l)return e!==\"tick\"?\"vertical\":\"horizontal\";else if(s&&l)return\"vertical\";else{const c=b(n)&&n.type===so;const u=b(a)&&a.type===so;if(c&&!u)return\"vertical\";else if(!c&&u)return\"horizontal\"}return undefined}}return\"vertical\"}function _d(e){const{point:t,line:r,...n}=e;return A(n).length>1?n:n.type}function yd(e){for(const t of[\"line\",\"area\",\"rule\",\"trail\"])if(e[t])e={...e,[t]:fe(e[t],[\"point\",\"line\"])};return e}function Td(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let r=arguments.length>2?arguments[2]:undefined;if(e.point===\"transparent\")return{opacity:0};else if(e.point)return te.isObject(e.point)?e.point:{};else if(e.point!==undefined)return null;else{if(t.point||r.shape)return te.isObject(t.point)?t.point:{};return undefined}}function vd(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(e.line)return e.line===true?{}:e.line;else if(e.line!==undefined)return null;else{if(t.line)return t.line===true?{}:t.line;return undefined}}class bd{name=\"path-overlay\";hasMatchingType(e,t){if(pc(e)){const{mark:r,encoding:n}=e;const a=ss(r)?r:{type:r};switch(a.type){case\"line\":case\"rule\":case\"trail\":return!!Td(a,t[a.type],n);case\"area\":return!!Td(a,t[a.type],n)||!!vd(a,t[a.type])}}return false}run(e,t,r){const{config:n}=t;const{params:a,projection:i,mark:o,name:s,encoding:l,...c}=e;const u=bc(l,n);const d=ss(o)?o:{type:o};const p=Td(d,n[d.type],u);const f=d.type===\"area\"&&vd(d,n[d.type]);const h=[{name:s,...a?{params:a}:{},mark:_d({...d.type===\"area\"&&d.opacity===undefined&&d.fillOpacity===undefined?{opacity:.7}:{},...d}),encoding:fe(u,[\"shape\"])}];const m=dd(pd(d,u,n),u);let g=u;if(m){const{fieldChannel:_,offset:y}=m;g={...u,[_]:{...u[_],...y?{stack:y}:{}}}}g=fe(g,[\"y2\",\"x2\"]);if(f)h.push({...i?{projection:i}:{},mark:{type:\"line\",...pe(d,[\"clip\",\"interpolate\",\"tension\",\"tooltip\"]),...f},encoding:g});if(p)h.push({...i?{projection:i}:{},mark:{type:\"point\",opacity:1,filled:true,...pe(d,[\"clip\",\"tooltip\"]),...p},encoding:g});return r({...c,layer:h},{...t,config:yd(n)})}}function Ed(e,t){if(!t)return e;if(nl(e))return kd(e,t);return Od(e,t)}function Sd(e,t){if(!t)return e;return kd(e,t)}function Ad(e,t,r){const n=t[e];if(sl(n))if(n.repeat in r)return{...t,[e]:r[n.repeat]};else{ae(ea(n.repeat));return undefined}return t}function Od(e,t){e=Ad(\"field\",e,t);if(e===undefined)return undefined;else if(e===null)return null;if(cl(e)&&tl(e.sort)){const r=Ad(\"field\",e.sort,t);e={...e,...r?{sort:r}:{}}}return e}function Cd(e,t){if(B(e))return Od(e,t);else{const r=Ad(\"datum\",e,t);if(r!==e&&!r.type)r.type=\"nominal\";return r}}function wd(e,t){if(T(e)){const r=Cd(e,t);if(r)return r;else if(hl(e))return{condition:e.condition}}else{if(gl(e)){const n=Cd(e.condition,t);if(n)return{...e,condition:n};else{const{condition:a,...i}=e;return i}}return e}return undefined}function kd(e,t){const r={};for(const n in e)if(te.hasOwnProperty(e,n)){const a=e[n];if(te.isArray(a))r[n]=a.map(e=>wd(e,t)).filter(e=>e);else{const i=wd(a,t);if(i!==undefined)r[n]=i}}return r}class Id{name=\"RuleForRangedLine\";hasMatchingType(e){if(pc(e)){const{encoding:t,mark:r}=e;if(r===\"line\"||ss(r)&&r.type===\"line\")for(const n of Yt){const a=Qt(n);const i=t[a];if(t[n])if(B(i)&&!D(i.bin)||Tl(i))return true}}return false}run(e,t,r){const{encoding:n,mark:a}=e;ae(wa(!!n.x2,!!n.y2));return r({...e,mark:te.isObject(a)?{...a,type:\"rule\"}:\"rule\"},t)}}class Rd extends nd{nonFacetUnitNormalizers=[Lc,Vc,eu,new bd,new Id];map(e,t){if(pc(e)){const r=hc(e.encoding,We);const n=hc(e.encoding,$e);const a=hc(e.encoding,Ke);if(r||n||a)return this.mapFacetedUnit(e,t)}return super.map(e,t)}mapUnit(e,t){const{parentEncoding:r,parentProjection:n}=t;const a=Sd(e.encoding,t.repeater);const i={...e,...e.name?{name:[t.repeaterPrefix,e.name].filter(e=>e).join(\"_\")}:{},...a?{encoding:a}:{}};if(r||n)return this.mapUnitWithParentEncodingOrProjection(i,t);const o=this.mapLayerOrUnit.bind(this);for(const s of this.nonFacetUnitNormalizers)if(s.hasMatchingType(i,t.config))return s.run(i,t,o);return i}mapRepeat(e,t){if(rd(e))return this.mapLayerRepeat(e,t);else return this.mapNonLayerRepeat(e,t)}mapLayerRepeat(e,a){const{repeat:t,spec:i,...r}=e;const{row:n,column:o,layer:s}=t;const{repeater:l={},repeaterPrefix:c=\"\"}=a;if(n||o)return this.mapRepeat({...e,repeat:{...n?{row:n}:{},...o?{column:o}:{}},spec:{repeat:{layer:s},spec:i}},a);else return{...r,layer:s.map(e=>{const t={...l,layer:e};const r=`${(i.name?`${i.name}_`:\"\")+c}child__layer_${w(e)}`;const n=this.mapLayerOrUnit(i,{...a,repeater:t,repeaterPrefix:r});n.name=r;return n})}}mapNonLayerRepeat(e,t){const{repeat:r,spec:n,data:a,...i}=e;if(!te.isArray(r)&&e.columns){e=fe(e,[\"columns\"]);ae(ta(\"repeat\"))}const o=[];const{repeater:s={},repeaterPrefix:l=\"\"}=t;const c=!te.isArray(r)&&r.row||[s?s.row:null];const u=!te.isArray(r)&&r.column||[s?s.column:null];const d=te.isArray(r)&&r||[s?s.repeat:null];for(const f of d)for(const h of c)for(const m of u){const g={repeat:f,row:h,column:m,layer:s.layer};const _=(n.name?`${n.name}_`:\"\")+l+\"child__\"+(te.isArray(r)?`${w(f)}`:(r.row?`row_${w(h)}`:\"\")+(r.column?`column_${w(m)}`:\"\"));const y=this.map(n,{...t,repeater:g,repeaterPrefix:_});y.name=_;o.push(fe(y,[\"data\"]))}const p=te.isArray(r)?e.columns:r.column?r.column.length:1;return{data:n.data??a,align:\"all\",...i,columns:p,concat:o}}mapFacet(e,t){const{facet:r}=e;if(nl(r)&&e.columns){e=fe(e,[\"columns\"]);ae(ta(\"facet\"))}return super.mapFacet(e,t)}mapUnitWithParentEncodingOrProjection(e,t){const{encoding:r,projection:n}=e;const{parentEncoding:a,parentProjection:i,config:o}=t;const s=Md({parentProjection:i,projection:n});const l=Nd({parentEncoding:a,encoding:Sd(r,t.repeater)});return this.mapUnit({...e,...s?{projection:s}:{},...l?{encoding:l}:{}},{config:o})}mapFacetedUnit(e,t){const{row:r,column:n,facet:a,...i}=e.encoding;const{mark:o,width:s,projection:l,height:c,view:u,params:d,encoding:p,...f}=e;const{facetMapping:h,layout:m}=this.getFacetMappingAndLayout({row:r,column:n,facet:a},t);const g=Sd(i,t.repeater);return this.mapFacet({...f,...m,facet:h,spec:{...s?{width:s}:{},...c?{height:c}:{},...u?{view:u}:{},...l?{projection:l}:{},mark:o,encoding:g,...d?{params:d}:{}}},t)}getFacetMappingAndLayout(e,t){const{row:r,column:n,facet:a}=e;if(r||n){if(a)ae(Aa([...r?[We]:[],...n?[$e]:[]]));const i={};const o={};for(const s of[We,$e]){const l=e[s];if(l){const{align:c,center:u,spacing:d,columns:p,...f}=l;i[s]=f;for(const h of[\"align\",\"center\",\"spacing\"])if(l[h]!==undefined){o[h]??={};o[h][s]=l[h]}}}return{facetMapping:i,layout:o}}else{const{align:m,center:g,spacing:_,columns:y,...T}=a;return{facetMapping:Ed(T,t.repeater),layout:{...m?{align:m}:{},...g?{center:g}:{},..._?{spacing:_}:{},...y?{columns:y}:{}}}}}mapLayer(e,t){let{parentEncoding:r,parentProjection:n,...a}=t;const{encoding:i,projection:o,...s}=e;const l={...a,parentEncoding:Nd({parentEncoding:r,encoding:i,layer:true}),parentProjection:Md({parentProjection:n,projection:o})};return super.mapLayer({...s,...e.name?{name:[l.repeaterPrefix,e.name].filter(e=>e).join(\"_\")}:{}},l)}}function Nd(e){let{parentEncoding:t,encoding:r={},layer:n}=e;let a={};if(t){const i=new Set([...A(t),...A(r)]);for(const o of i){const s=r[o];const l=t[o];if(T(s)){const c={...l,...s};a[o]=c}else if(gl(s))a[o]={...s,condition:{...l,...s.condition}};else if(s||s===null)a[o]=s;else if(n||Sl(l)||x(l)||T(l)||te.isArray(l))a[o]=l}}else a=r;return!a||re(a)?undefined:a}function Md(e){const{parentProjection:t,projection:r}=e;if(t&&r)ae(ca({parentProjection:t,projection:r}));return r??t}function Pd(e){return\"filter\"in e}function Dd(e){return e?.[\"stop\"]!==undefined}function xd(e){return\"lookup\"in e}function Ld(e){return\"data\"in e}function Fd(e){return\"param\"in e}function Ud(e){return\"pivot\"in e}function Bd(e){return\"density\"in e}function jd(e){return\"quantile\"in e}function Hd(e){return\"regression\"in e}function Gd(e){return\"loess\"in e}function Vd(e){return\"sample\"in e}function qd(e){return\"window\"in e}function zd(e){return\"joinaggregate\"in e}function Wd(e){return\"flatten\"in e}function $d(e){return\"calculate\"in e}function Kd(e){return\"bin\"in e}function Yd(e){return\"impute\"in e}function Jd(e){return\"timeUnit\"in e}function Qd(e){return\"aggregate\"in e}function Zd(e){return\"stack\"in e}function Xd(e){return\"fold\"in e}function ep(e){return\"extent\"in e&&!(\"density\"in e)&&!(\"regression\"in e)}function tp(e){return e.map(e=>{if(Pd(e))return{filter:ue(e.filter,to)};return e})}class rp extends nd{map(e,t){t.emptySelections??={};t.selectionPredicates??={};e=np(e,t);return super.map(e,t)}mapLayerOrUnit(e,t){e=np(e,t);if(e.encoding){const r={};for(const[n,a]of Oe(e.encoding))r[n]=ap(a,t);e={...e,encoding:r}}return super.mapLayerOrUnit(e,t)}mapUnit(e,l){const{selection:t,...r}=e;if(t)return{...r,params:Oe(t).map(e=>{let[t,r]=e;const{init:n,bind:a,empty:i,...o}=r;if(o.type===\"single\"){o.type=\"point\";o.toggle=false}else if(o.type===\"multi\")o.type=\"point\";l.emptySelections[t]=i!==\"none\";for(const s of C(l.selectionPredicates[t]??{}))s.empty=i!==\"none\";return{name:t,value:n,select:o,bind:a}})};return e}}function np(e,n){const{transform:t,...r}=e;if(t){const a=t.map(e=>{if(Pd(e))return{filter:op(e,n)};else if(Kd(e)&&sn(e.bin))return{...e,bin:ip(e.bin)};else if(xd(e)){const{selection:t,...r}=e.from;return t?{...e,from:{param:t,...r}}:e}return e});return{...r,transform:a}}return e}function ap(e,i){const t=m(e);if(B(t)&&sn(t.bin))t.bin=ip(t.bin);if(Al(t)&&t.scale?.domain?.selection){const{selection:r,...n}=t.scale.domain;t.scale.domain={...n,...r?{param:r}:{}}}if(hl(t))if(te.isArray(t.condition))t.condition=t.condition.map(e=>{const{selection:t,param:r,test:n,...a}=e;return r?e:{...a,test:op(e,i)}});else{const{selection:a,param:o,test:s,...l}=ap(t.condition,i);t.condition=o?t.condition:{...l,test:op(t.condition,i)}}return t}function ip(e){const t=e.extent;if(t?.selection){const{selection:r,...n}=t;return{...e,extent:{...n,param:r}}}return e}function op(e,n){const t=e=>{return ue(e,e=>{const t=n.emptySelections[e]??true;const r={param:e,empty:t};n.selectionPredicates[e]??=[];n.selectionPredicates[e].push(r);return r})};return e.selection?t(e.selection):ue(e.test||e.filter,e=>e.selection?t(e.selection):e)}class sp extends nd{map(e,t){const r=t.selections??[];if(e.params&&!pc(e)){const n=[];for(const a of e.params)if(Tu(a))r.push(a);else n.push(a);e.params=n}t.selections=r;return super.map(e,t)}mapUnit(e,t){const r=t.selections;if(!r||!r.length)return e;const n=(t.path??[]).concat(e.name);const a=[];for(const i of r)if(!i.views||!i.views.length)a.push(i);else for(const o of i.views)if(te.isString(o)&&(o===e.name||n.includes(o))||te.isArray(o)&&o.map(e=>n.indexOf(e)).every((e,t,r)=>e!==-1&&(t===0||e>r[t-1])))a.push(i);if(a.length)e.params=a;return e}}for(const rT of[\"mapFacet\",\"mapRepeat\",\"mapHConcat\",\"mapVConcat\",\"mapLayer\"]){const nT=sp.prototype[rT];sp.prototype[rT]=function(e,t){return nT.call(this,e,lp(e,t))}}function lp(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}function cp(e,t){if(t===undefined)t=$u(e.config);const r=fp(e,t);const{width:n,height:a}=e;const i=mp(r,{width:n,height:a,autosize:e.autosize},t);return{...r,...i?{autosize:i}:{}}}const up=new Rd,dp=new rp,pp=new sp;function fp(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};const r={config:t};return pp.map(up.map(dp.map(e,r),r),r)}function hp(e){return te.isString(e)?{type:e}:e??{}}function mp(e,t,r){let{width:n,height:a}=t;const i=pc(e)||ed(e);const o={};if(!i){if(n==\"container\"){ae(Un(\"width\"));n=undefined}if(a==\"container\"){ae(Un(\"height\"));a=undefined}}else if(n==\"container\"&&a==\"container\"){o.type=\"fit\";o.contains=\"padding\"}else if(n==\"container\"){o.type=\"fit-x\";o.contains=\"padding\"}else if(a==\"container\"){o.type=\"fit-y\";o.contains=\"padding\"}const s={type:\"pad\",...o,...r?hp(r.autosize):{},...hp(e.autosize)};if(s.type===\"fit\"&&!i){ae(Fn);s.type=\"pad\"}if(n==\"container\"&&!(s.type==\"fit\"||s.type==\"fit-x\"))ae(Bn(\"width\"));if(a==\"container\"&&!(s.type==\"fit\"||s.type==\"fit-y\"))ae(Bn(\"height\"));if(ze(s,{type:\"pad\"}))return undefined;return s}function gp(e){return e===\"fit\"||e===\"fit-x\"||e===\"fit-y\"}function _p(e){return e?`fit-${Or(e)}`:\"fit\"}const yp=[\"background\",\"padding\"];function Tp(e,t){const r={};for(const n of yp)if(e&&e[n]!==undefined)r[n]=En(e[n]);if(t)r.params=e.params;return r}class vp{constructor(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};this.explicit=e;this.implicit=t}clone(){return new vp(m(this.explicit),m(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(e){return I(this.explicit[e],this.implicit[e])}getWithExplicit(e){if(this.explicit[e]!==undefined)return{explicit:true,value:this.explicit[e]};else if(this.implicit[e]!==undefined)return{explicit:false,value:this.implicit[e]};return{explicit:false,value:undefined}}setWithExplicit(e,t){let{value:r,explicit:n}=t;if(r!==undefined)this.set(e,r,n)}set(e,t,r){delete this[r?\"implicit\":\"explicit\"][e];this[r?\"explicit\":\"implicit\"][e]=t;return this}copyKeyFromSplit(e,t){let{explicit:r,implicit:n}=t;if(r[e]!==undefined)this.set(e,r[e],true);else if(n[e]!==undefined)this.set(e,n[e],false)}copyKeyFromObject(e,t){if(t[e]!==undefined)this.set(e,t[e],true)}copyAll(e){for(const t of A(e.combine())){const r=e.getWithExplicit(t);this.setWithExplicit(t,r)}}}function bp(e){return{explicit:true,value:e}}function Ep(e){return{explicit:false,value:e}}function Sp(i){return(e,t,r,n)=>{const a=i(e.value,t.value);if(a>0)return e;else if(a<0)return t;return Ap(e,t,r,n)}}function Ap(e,t,r,n){if(e.explicit&&t.explicit)ae(Ba(r,n,e.value,t.value));return e}function Op(e,t,r,n){let a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:Ap;if(e===undefined||e.value===undefined)return t;if(e.explicit&&!t.explicit)return e;else if(t.explicit&&!e.explicit)return t;else if(ze(e.value,t.value))return e;else return a(e,t,r,n)}class Cp extends vp{constructor(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;super(e,t);this.explicit=e;this.implicit=t;this.parseNothing=r}clone(){const e=super.clone();e.parseNothing=this.parseNothing;return e}}function wp(e){return\"url\"in e}function kp(e){return\"values\"in e}function Ip(e){return\"name\"in e&&!wp(e)&&!kp(e)&&!Rp(e)}function Rp(e){return e&&(Np(e)||Mp(e)||Pp(e))}function Np(e){return\"sequence\"in e}function Mp(e){return\"sphere\"in e}function Pp(e){return\"graticule\"in e}let G=function(e){e[e[\"Raw\"]=0]=\"Raw\";e[e[\"Main\"]=1]=\"Main\";e[e[\"Row\"]=2]=\"Row\";e[e[\"Column\"]=3]=\"Column\";e[e[\"Lookup\"]=4]=\"Lookup\";e[e[\"PreFilterInvalid\"]=5]=\"PreFilterInvalid\";e[e[\"PostFilterInvalid\"]=6]=\"PostFilterInvalid\";return e}({});function Dp(e){let{invalid:t,isPath:r}=e;const n=As(t,{isPath:r});switch(n){case\"filter\":return{marks:\"exclude-invalid-values\",scales:\"exclude-invalid-values\"};case\"break-paths-show-domains\":return{marks:r?\"include-invalid-values\":\"exclude-invalid-values\",scales:\"include-invalid-values\"};case\"break-paths-filter-domains\":return{marks:r?\"include-invalid-values\":\"exclude-invalid-values\",scales:\"exclude-invalid-values\"};case\"show\":return{marks:\"include-invalid-values\",scales:\"include-invalid-values\"}}}function xp(e){const{marks:t,scales:r}=Dp(e);if(t===r)return G.Main;return r===\"include-invalid-values\"?G.PreFilterInvalid:G.PostFilterInvalid}function Lp(e){const{signals:t,hasLegend:r,index:n,...a}=e;a.field=Pe(a.field);return a}function Fp(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:te.identity;if(te.isArray(e)){const n=e.map(e=>Fp(e,t,r));return t?`[${n.join(\", \")}]`:n}else if(ui(e))if(t)return r(Ti(e));else return r(bi(e));return t?r(g(e)):e}function Up(t,r){for(const n of C(t.component.selection??{})){const a=n.name;let e=`${a}${hh}, ${n.resolve===\"global\"?\"true\":`{unit: ${Th(t)}}`}`;for(const i of _h){if(!i.defined(n))continue;if(i.signals)r=i.signals(t,n,r);if(i.modifyExpr)e=i.modifyExpr(t,n,e)}r.push({name:a+mh,on:[{events:{signal:n.name+hh},update:`modify(${te.stringValue(n.name+fh)}, ${e})`}]})}return zp(r)}function Bp(e,t){if(e.component.selection&&A(e.component.selection).length){const r=te.stringValue(e.getName(\"cell\"));t.unshift({name:\"facet\",value:{},on:[{events:te.parseSelector(\"pointermove\",\"scope\"),update:`isTuple(facet) ? facet : group(${r}).datum`}]})}return zp(t)}function jp(e,t){let r=false;for(const n of C(e.component.selection??{})){const a=n.name;const i=te.stringValue(a+fh);const o=t.filter(e=>e.name===a);if(o.length===0){const s=n.resolve===\"global\"?\"union\":n.resolve;const l=n.type===\"point\"?\", true, true)\":\")\";t.push({name:n.name,update:`${gh}(${i}, ${te.stringValue(s)}${l}`})}r=true;for(const c of _h)if(c.defined(n)&&c.topLevelSignals)t=c.topLevelSignals(e,n,t)}if(r){const u=t.filter(e=>e.name===\"unit\");if(u.length===0)t.unshift({name:\"unit\",value:{},on:[{events:\"pointermove\",update:\"isTuple(group()) ? group() : unit\"}]})}return zp(t)}function Hp(e,t){const r=[...t];const n=Th(e,{escape:false});for(const a of C(e.component.selection??{})){const i={name:a.name+fh};if(a.project.hasSelectionId)i.transform=[{type:\"collect\",sort:{field:mu}}];if(a.init){const s=a.project.items.map(Lp);i.values=a.project.hasSelectionId?a.init.map(e=>({unit:n,[mu]:Fp(e,false)[0]})):a.init.map(e=>({unit:n,fields:s,values:Fp(e,false)}))}const o=r.filter(e=>e.name===a.name+fh);if(!o.length)r.push(i)}return r}function Gp(e,t){for(const r of C(e.component.selection??{}))for(const n of _h)if(n.defined(r)&&n.marks)t=n.marks(e,r,t);return t}function Vp(e,t){for(const r of e.children)if(z(r))t=Gp(r,t);return t}function qp(e,t,r,n){const a=kh(e,t.param,t);return{signal:Eo(r.get(\"type\"))&&te.isArray(n)&&n[0]>n[1]?`isValid(${a}) && reverse(${a})`:a}}function zp(e){return e.map(e=>{if(e.on&&!e.on.length)delete e.on;return e})}class r{_children=[];_parent=null;constructor(e,t){this.debugName=t;if(e)this.parent=e}clone(){throw new Error(\"Cannot clone node\")}get parent(){return this._parent}set parent(e){this._parent=e;if(e)e.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(e,t){if(this._children.includes(e)){ae(ia);return}if(t!==undefined)this._children.splice(t,0,e);else this._children.push(e)}removeChild(e){const t=this._children.indexOf(e);this._children.splice(t,1);return t}remove(){let e=this._parent.removeChild(this);for(const t of this._children){t._parent=this._parent;this._parent.addChild(t,e++)}}insertAsParentOf(e){const t=e.parent;t.removeChild(this);this.parent=t;e.parent=this}swapWithParent(){const e=this._parent;const t=e.parent;for(const n of this._children)n.parent=e;this._children=[];e.removeChild(this);const r=e.parent.removeChild(e);this._parent=t;t.addChild(this,r);e.parent=this}}class Wp extends r{clone(){const e=new this.constructor;e.debugName=`clone_${this.debugName}`;e._source=this._source;e._name=`clone_${this._name}`;e.type=this.type;e.refCounts=this.refCounts;e.refCounts[e._name]=0;return e}constructor(e,t,r,n){super(e,t);this.type=r;this.refCounts=n;this._source=this._name=t;if(this.refCounts&&!(this._name in this.refCounts))this.refCounts[this._name]=0}dependentFields(){return new Set}producedFields(){return new Set}hash(){if(this._hash===undefined)this._hash=`Output ${Ue()}`;return this._hash}getSource(){this.refCounts[this._name]++;return this._source}isRequired(){return!!this.refCounts[this._name]}setSource(e){this._source=e}}function $p(e){return e.as!==undefined}function Kp(e){return`${e}_end`}class Yp extends r{clone(){return new Yp(null,m(this.timeUnits))}constructor(e,t){super(e);this.timeUnits=t}static makeFromEncoding(e,h){const t=h.reduceFieldDef((t,r,n)=>{const{field:a,timeUnit:i}=r;if(i){let e;if(Oi(i)){if(z(h)){const{mark:o,markDef:s,config:l}=h;const c=ul({fieldDef:r,markDef:s,config:l});if(is(o)||!!c)e={timeUnit:F(i),field:a}}}else e={as:j(r,{forAs:true}),field:a,timeUnit:i};if(z(h)){const{mark:u,markDef:d,config:p}=h;const f=ul({fieldDef:r,markDef:d,config:p});if(is(u)&&M(n)&&f!==.5)e.rectBandPosition=f}if(e)t[S(e)]=e}return t},{});if(re(t))return null;return new Yp(e,t)}static makeFromTransform(e,t){const{timeUnit:r,...n}={...t};const a=F(r);const i={...n,timeUnit:a};return new Yp(e,{[S(i)]:i})}merge(e){this.timeUnits={...this.timeUnits};for(const t in e.timeUnits)if(!this.timeUnits[t])this.timeUnits[t]=e.timeUnits[t];for(const r of e.children){e.removeChild(r);r.parent=this}e.remove()}removeFormulas(e){const t={};for(const[r,n]of Oe(this.timeUnits)){const a=$p(n)?n.as:`${n.field}_end`;if(!e.has(a))t[r]=n}this.timeUnits=t}producedFields(){return new Set(C(this.timeUnits).map(e=>{return $p(e)?e.as:Kp(e.field)}))}dependentFields(){return new Set(C(this.timeUnits).map(e=>e.field))}hash(){return`TimeUnit ${S(this.timeUnits)}`}assemble(){const e=[];for(const t of C(this.timeUnits)){const{rectBandPosition:r}=t;const n=F(t.timeUnit);if($p(t)){const{field:a,as:i}=t;const{unit:o,utc:s,...l}=n;const c=[i,`${i}_end`];e.push({field:Pe(a),type:\"timeunit\",...o?{units:Ri(o)}:{},...s?{timezone:\"utc\"}:{},...l,as:c});e.push(...Xp(c,r,n))}else if(t){const{field:u}=t;const d=u.replaceAll(\"\\\\.\",\".\");const p=Zp({timeUnit:n,field:d});const f=Kp(d);e.push({type:\"formula\",expr:p,as:f});e.push(...Xp([d,f],r,n))}}return e}}const Jp=\"offsetted_rect_start\",Qp=\"offsetted_rect_end\";function Zp(e){let{timeUnit:t,field:r,reverse:n}=e;const{unit:a,utc:i}=t;const o=Ni(a);const{part:s,step:l}=ji(o,t.step);const c=i?\"utcOffset\":\"timeOffset\";const u=`${c}('${s}', datum['${r}'], ${n?-l:l})`;return u}function Xp(e,t,r){let[n,a]=e;if(t!==undefined&&t!==.5){const i=`datum['${n}']`;const o=`datum['${a}']`;return[{type:\"formula\",expr:ef([Zp({timeUnit:r,field:n,reverse:true}),i],t+.5),as:`${n}_${Jp}`},{type:\"formula\",expr:ef([i,o],t+.5),as:`${n}_${Qp}`}]}return[]}function ef(e,t){let[r,n]=e;return`${1-t} * ${r} + ${t} * ${n}`}const tf=\"_tuple_fields\";class rf{constructor(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.items=t;this.hasChannel={};this.hasField={};this.hasSelectionId=false}}const nf={defined:()=>{return true},parse:(t,e,r)=>{const a=e.name;const n=e.project??=new rf;const i={};const o={};const s=new Set;const l=(e,t)=>{const r=t===\"visual\"?e.channel:e.field;let n=w(`${a}_${r}`);for(let e=1;s.has(n);e++)n=w(`${a}_${r}_${e}`);s.add(n);return{[t]:n}};const c=e.type;const u=t.config.selection[c];const d=r.value!==undefined?te.array(r.value):null;let{fields:p,encodings:f}=te.isObject(r.select)?r.select:{};if(!p&&!f&&d)for(const h of d){if(!te.isObject(h))continue;for(const m of A(h))if($t(m))(f||(f=[])).push(m);else if(c===\"interval\"){ae(Xn);f=u.encodings}else(p??=[]).push(m)}if(!p&&!f){f=u.encodings;if(\"fields\"in u)p=u.fields}for(const g of f??[]){const _=t.fieldDef(g);if(_){let e=_.field;if(_.aggregate){ae(Vn(g,_.aggregate));continue}else if(!e){ae(Gn(g));continue}if(_.timeUnit&&!Oi(_.timeUnit)){e=t.vgField(g);const y={timeUnit:_.timeUnit,as:e,field:_.field};o[S(y)]=y}if(!i[e]){const T=c===\"interval\"&&Gr(g)&&Eo(t.getScaleComponent(g).get(\"type\"))?\"R\":_.bin?\"R-RE\":\"E\";const v={field:e,channel:g,type:T,index:n.items.length};v.signals={...l(v,\"data\"),...l(v,\"visual\")};n.items.push(i[e]=v);n.hasField[e]=i[e];n.hasSelectionId=n.hasSelectionId||e===mu;if(Nt(g)){v.geoChannel=g;v.channel=Rt(g);n.hasChannel[v.channel]=i[e]}else n.hasChannel[g]=i[e]}}else ae(Gn(g))}for(const b of p??[]){if(n.hasField[b])continue;const E={type:\"E\",field:b,index:n.items.length};E.signals={...l(E,\"data\")};n.items.push(E);n.hasField[b]=E;n.hasSelectionId=n.hasSelectionId||b===mu}if(d)e.init=d.map(t=>{return n.items.map(e=>te.isObject(t)?t[e.geoChannel||e.channel]!==undefined?t[e.geoChannel||e.channel]:t[e.field]:t)});if(!re(o))n.timeUnit=new Yp(null,o)},signals:(e,t,r)=>{const n=t.name+tf;const a=r.filter(e=>e.name===n);return a.length>0||t.project.hasSelectionId?r:r.concat({name:n,value:t.project.items.map(Lp)})}},af={defined:e=>{return e.type===\"interval\"&&e.resolve===\"global\"&&e.bind&&e.bind===\"scales\"},parse:(e,t)=>{const r=t.scales=[];for(const n of t.project.items){const a=n.channel;if(!Gr(a))continue;const i=e.getScaleComponent(a);const o=i?i.get(\"type\"):undefined;if(o==\"sequential\")ae(Kn);if(!i||!Eo(o)){ae($n);continue}i.set(\"selectionExtent\",{param:t.name,field:n.field},true);r.push(n)}},topLevelSignals:(e,t,r)=>{const n=t.scales.filter(t=>r.filter(e=>e.name===t.signals.data).length===0);if(!e.parent||sf(e)||n.length===0)return r;const a=r.filter(e=>e.name===t.name)[0];let i=a.update;if(i.indexOf(gh)>=0)a.update=`{${n.map(e=>`${te.stringValue(Pe(e.field))}: ${e.signals.data}`).join(\", \")}}`;else{for(const o of n){const s=`${te.stringValue(Pe(o.field))}: ${o.signals.data}`;if(!i.includes(s))i=`${i.substring(0,i.length-1)}, ${s}}`}a.update=i}return r.concat(n.map(e=>({name:e.signals.data})))},signals:(e,t,r)=>{if(e.parent&&!sf(e))for(const n of t.scales){const a=r.find(e=>e.name===n.signals.data);a.push=\"outer\";delete a.value;delete a.update}return r}};function of(e,t){const r=te.stringValue(e.scaleName(t));return`domain(${r})`}function sf(e){return e.parent&&v0(e.parent)&&(!e.parent.parent??sf(e.parent.parent))}const lf=\"_brush\",cf=\"_scale_trigger\",uf=\"geo_interval_init_tick\",df=\"_init\",pf=\"_center\",ff={defined:e=>e.type===\"interval\",parse:(e,t,r)=>{if(e.hasProjection){const n={...te.isObject(r.select)?r.select:{}};n.fields=[mu];if(!n.encodings)n.encodings=r.value?A(r.value):[at,nt];r.select={type:\"interval\",...n}}if(t.translate&&!af.defined(t)){const a=`!event.item || event.item.mark.name !== ${te.stringValue(t.name+lf)}`;for(const i of t.events){if(!i.between){ae(`${i} is not an ordered event stream for interval selections.`);continue}const o=te.array(i.between[0].filter??=[]);if(o.indexOf(a)<0)o.push(a)}}},signals:(s,r,e)=>{const t=r.name;const n=t+hh;const a=C(r.project.hasChannel).filter(e=>e.channel===R||e.channel===N);const i=r.init?r.init[0]:null;e.push(...a.reduce((e,t)=>e.concat(hf(s,r,t,i&&i[t.index])),[]));if(!s.hasProjection){if(!af.defined(r)){const c=t+cf;const u=a.map(e=>{const t=e.channel;const{data:r,visual:n}=e.signals;const a=te.stringValue(s.scaleName(t));const i=s.getScaleComponent(t).get(\"type\");const o=Eo(i)?\"+\":\"\";return`(!isArray(${r}) || `+`(${o}invert(${a}, ${n})[0] === ${o}${r}[0] && `+`${o}invert(${a}, ${n})[1] === ${o}${r}[1]))`});if(u.length)e.push({name:c,value:{},on:[{events:a.map(e=>({scale:s.scaleName(e.channel)})),update:u.join(\" && \")+` ? ${c} : {}`}]})}const o=a.map(e=>e.signals.data);const l=`unit: ${Th(s)}, fields: ${t+tf}, values`;return e.concat({name:n,...i?{init:`{${l}: ${Fp(i)}}`}:{},...o.length?{on:[{events:[{signal:o.join(\" || \")}],update:`${o.join(\" && \")} ? {${l}: [${o}]} : null`}]}:{}})}else{const d=te.stringValue(s.projectionName());const p=s.projectionName()+pf;const{x:f,y:h}=r.project.hasChannel;const m=f&&f.signals.visual;const g=h&&h.signals.visual;const _=f?i&&i[f.index]:`${p}[0]`;const y=h?i&&i[h.index]:`${p}[1]`;const T=e=>s.getSizeSignalRef(e).signal;const v=`[`+`[${m?m+\"[0]\":\"0\"}, ${g?g+\"[0]\":\"0\"}],`+`[${m?m+\"[1]\":T(\"width\")}, `+`${g?g+\"[1]\":T(\"height\")}]`+`]`;if(i){e.unshift({name:t+df,init:`[scale(${d}, [${f?_[0]:_}, ${h?y[0]:y}]), `+`scale(${d}, [${f?_[1]:_}, ${h?y[1]:y}])]`});if(!f||!h){const O=e.find(e=>e.name===p);if(!O)e.unshift({name:p,update:`invert(${d}, [${T(\"width\")}/2, ${T(\"height\")}/2])`})}}const b=`intersect(${v}, {markname: ${te.stringValue(s.getName(\"marks\"))}}, unit.mark)`;const E=`{unit: ${Th(s)}}`;const S=`vlSelectionTuples(${b}, ${E})`;const A=a.map(e=>e.signals.visual);return e.concat({name:n,on:[{events:[...A.length?[{signal:A.join(\" || \")}]:[],...i?[{signal:uf}]:[]],update:S}]})}},topLevelSignals:(e,t,r)=>{if(z(e)&&e.hasProjection&&t.init){const n=r.filter(e=>e.name===uf);if(!n.length)r.unshift({name:uf,value:null,on:[{events:\"timer{1}\",update:`${uf} === null ? {} : ${uf}`}]})}return r},marks:(e,t,r)=>{const n=t.name;const{x:a,y:i}=t.project.hasChannel;const o=a?.signals.visual;const s=i?.signals.visual;const l=`data(${te.stringValue(t.name+fh)})`;if(af.defined(t)||!a&&!i)return r;const c={x:a!==undefined?{signal:`${o}[0]`}:{value:0},y:i!==undefined?{signal:`${s}[0]`}:{value:0},x2:a!==undefined?{signal:`${o}[1]`}:{field:{group:\"width\"}},y2:i!==undefined?{signal:`${s}[1]`}:{field:{group:\"height\"}}};if(t.resolve===\"global\")for(const g of A(c))c[g]=[{test:`${l}.length && ${l}[0].unit === ${Th(e)}`,...c[g]},{value:0}];const{fill:u,fillOpacity:d,cursor:p,...f}=t.mark;const h=A(f).reduce((e,t)=>{e[t]=[{test:[a!==undefined&&`${o}[0] !== ${o}[1]`,i!==undefined&&`${s}[0] !== ${s}[1]`].filter(e=>e).join(\" && \"),value:f[t]},{value:null}];return e},{});const m=p??(t.translate?\"move\":null);return[{name:`${n+lf}_bg`,type:\"rect\",clip:true,encode:{enter:{fill:{value:u},fillOpacity:{value:d}},update:c}},...r,{name:n+lf,type:\"rect\",clip:true,encode:{enter:{...m?{cursor:{value:m}}:{},fill:{value:\"transparent\"}},update:{...c,...h}}}]}};function hf(e,t,r,n){const a=!e.hasProjection;const i=r.channel;const o=r.signals.visual;const s=te.stringValue(a?e.scaleName(i):e.projectionName());const l=e=>`scale(${s}, ${e})`;const c=e.getSizeSignalRef(i===R?\"width\":\"height\").signal;const u=`${i}(unit)`;const d=t.events.reduce((e,t)=>{return[...e,{events:t.between[0],update:`[${u}, ${u}]`},{events:t,update:`[${o}[0], clamp(${u}, 0, ${c})]`}]},[]);if(a){const p=r.signals.data;const f=af.defined(t);const h=e.getScaleComponent(i);const m=h?h.get(\"type\"):undefined;const g=n?{init:Fp(n,true,l)}:{value:[]};d.push({events:{signal:t.name+cf},update:Eo(m)?`[${l(`${p}[0]`)}, ${l(`${p}[1]`)}]`:`[0, 0]`});return f?[{name:p,on:[]}]:[{name:o,...g,on:d},{name:p,...n?{init:Fp(n)}:{},on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${s}, ${o})`}]}]}else{const _=i===R?0:1;const y=t.name+df;const T=n?{init:`[${y}[0][${_}], ${y}[1][${_}]]`}:{value:[]};return[{name:o,...T,on:d}]}}const mf={defined:e=>e.type===\"point\",signals:(r,e,t)=>{const n=e.name;const a=n+tf;const i=e.project;const o=\"(item().isVoronoi ? datum.datum : datum)\";const s=C(r.component.selection??{}).reduce((e,t)=>{return t.type===\"interval\"?e.concat(t.name+lf):e},[]).map(e=>`indexof(item().mark.name, '${e}') < 0`).join(\" && \");const l=`datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0${s?` && ${s}`:\"\"}`;let c=`unit: ${Th(r)}, `;if(e.project.hasSelectionId)c+=`${mu}: ${o}[${te.stringValue(mu)}]`;else{const d=i.items.map(e=>{const t=r.fieldDef(e.channel);return t?.bin?`[${o}[${te.stringValue(r.vgField(e.channel,{}))}], `+`${o}[${te.stringValue(r.vgField(e.channel,{binSuffix:\"end\"}))}]]`:`${o}[${te.stringValue(e.field)}]`}).join(\", \");c+=`fields: ${a}, values: [${d}]`}const u=e.events;return t.concat([{name:n+hh,on:u?[{events:u,update:`${l} ? {${c}} : null`,force:true}]:[]}])}};function gf(e){let{model:o,channelDef:t,vgChannel:r,invalidValueRef:n,mainRefFn:s}=e;const a=hl(t)&&t.condition;let i=[];if(a){const c=te.array(a);i=c.map(e=>{const t=s(e);if(ol(e)){const{param:r,empty:n}=e;const a=wh(o,{param:r,empty:n});return{test:a,...t}}else{const i=Rh(o,e.test);return{test:i,...t}}})}if(n!==undefined)i.push(n);const l=s(t);if(l!==undefined)i.push(l);if(i.length>1||i.length===1&&Boolean(i[0].test))return{[r]:i};else if(i.length===1)return{[r]:i[0]};return{}}function _f(t){let e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:\"text\";const r=t.encoding[e];return gf({model:t,channelDef:r,vgChannel:e,mainRefFn:e=>yf(e,t.config),invalidValueRef:undefined})}function yf(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"datum\";if(e){if(Sl(e))return L(e.value);if(T(e)){const{format:n,formatType:a}=Gl(e);return js({fieldOrDatumDef:e,format:n,formatType:a,expr:r,config:t})}}return undefined}function Tf(e){let n=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};const{encoding:a,markDef:i,config:o,stack:s}=e;const t=a.tooltip;if(te.isArray(t))return{tooltip:bf({tooltip:t},s,o,n)};else{const l=n.reactiveGeom?\"datum.datum\":\"datum\";const r=e=>{const t=yf(e,o,l);if(t)return t;if(e===null)return undefined;let r=ne(\"tooltip\",i,o);if(r===true)r={content:\"encoding\"};if(te.isString(r))return{value:r};else if(te.isObject(r))if(x(r))return r;else if(r.content===\"encoding\")return bf(a,s,o,n);else return{signal:l};return undefined};return gf({model:e,channelDef:t,vgChannel:\"tooltip\",mainRefFn:r,invalidValueRef:undefined})}}function vf(m,g,e){let{reactiveGeom:t}=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const _={...e,...e.tooltipFormat};const y={};const T=t?\"datum.datum\":\"datum\";const v=[];function r(e,t){const r=Qt(t);const n=b(e)?e:{...e,type:m[r].type};const a=n.title||Hl(n,_);const i=te.array(a).join(\", \").replaceAll(/\"/g,'\\\\\"');let o;if(M(t)){const s=t===\"x\"?\"x2\":\"y2\";const l=ql(m[s]);if(D(n.bin)&&l){const c=j(n,{expr:T});const u=j(l,{expr:T});const{format:d,formatType:p}=Gl(n);o=Ys(c,u,d,p,_);y[s]=true}}if((M(t)||t===tt||t===Xe)&&g&&g.fieldChannel===t&&g.offset===\"normalize\"){const{format:f,formatType:h}=Gl(n);o=js({fieldOrDatumDef:n,format:f,formatType:h,expr:T,config:_,normalizeStack:true}).signal}o??=yf(n,_,T).signal;v.push({channel:t,key:i,value:o})}Sc(m,(e,t)=>{if(B(e))r(e,t);else if(ml(e))r(e.condition,t)});const n={};for(const{channel:a,key:i,value:o}of v)if(!y[a]&&!n[i])n[i]=o;return n}function bf(e,t,r){let{reactiveGeom:n}=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const a=vf(e,t,r,{reactiveGeom:n});const i=Oe(a).map(e=>{let[t,r]=e;return`\"${t}\": ${r}`});return i.length>0?{signal:`{${i.join(\", \")}}`}:undefined}function Ef(e){const{markDef:t,config:r}=e;const n=ne(\"aria\",t,r);if(n===false)return{};return{...n?{aria:n}:{},...Sf(e),...Af(e)}}function Sf(e){const{mark:t,markDef:r,config:n}=e;if(n.aria===false)return{};const a=ne(\"ariaRoleDescription\",r,n);if(a!=null)return{ariaRoleDescription:{value:a}};return t in Tn?{}:{ariaRoleDescription:{value:t}}}function Af(t){const{encoding:e,markDef:r,config:n,stack:a}=t;const i=e.description;if(i)return gf({model:t,channelDef:i,vgChannel:\"description\",mainRefFn:e=>yf(e,t.config),invalidValueRef:undefined});const o=ne(\"description\",r,n);if(o!=null)return{description:L(o)};if(n.aria===false)return{};const s=vf(e,a,n);if(re(s))return undefined;return{description:{signal:Oe(s).map((e,t)=>{let[r,n]=e;return`\"${t>0?\"; \":\"\"}${r}: \" + (${n})`}).join(\" + \")}}}function V(t,e){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};const{markDef:n,encoding:a,config:i}=e;const{vgChannel:o}=r;let{defaultRef:s,defaultValue:l}=r;if(s===undefined){l??=ne(t,n,i,{vgChannel:o,ignoreVgConfig:true});if(l!==undefined)s=L(l)}const c=a[t];const u={markDef:n,config:i,scaleName:e.scaleName(t),scale:e.getScaleComponent(t)};const d=ks({...u,scaleChannel:t,channelDef:c});const p=e=>{return xs({...u,channel:t,channelDef:e,stack:null,defaultRef:s})};return gf({model:e,channelDef:c,vgChannel:o??t,invalidValueRef:d,mainRefFn:p})}function Of(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{filled:undefined};const{markDef:r,encoding:n,config:a}=e;const{type:i}=r;const o=t.filled??ne(\"filled\",r,a);const s=k([\"bar\",\"point\",\"circle\",\"square\",\"geoshape\"],i)?\"transparent\":undefined;const l=ne(o===true?\"color\":undefined,r,a,{vgChannel:\"fill\"})??a.mark[o===true&&\"color\"]??s;const c=ne(o===false?\"color\":undefined,r,a,{vgChannel:\"stroke\"})??a.mark[o===false&&\"color\"];const u=o?\"fill\":\"stroke\";const d={...l?{fill:L(l)}:{},...c?{stroke:L(c)}:{}};if(r.color&&(o?r.fill:r.stroke))ae(ga(\"property\",{fill:\"fill\"in r,stroke:\"stroke\"in r}));return{...d,...V(\"color\",e,{vgChannel:u,defaultValue:o?l:c}),...V(\"fill\",e,{defaultValue:n.fill?l:undefined}),...V(\"stroke\",e,{defaultValue:n.stroke?c:undefined})}}function Cf(e){const{encoding:t,mark:r}=e;const n=t.order;if(!as(r)&&Sl(n))return gf({model:e,channelDef:n,vgChannel:\"zindex\",mainRefFn:e=>L(e.value),invalidValueRef:undefined});return{}}function wf(e){let{channel:t,markDef:r,encoding:n={},model:a,bandPosition:i}=e;const o=`${t}Offset`;const s=r[o];const l=n[o];if((o===\"xOffset\"||o===\"yOffset\")&&l){const u=xs({channel:o,channelDef:l,markDef:r,config:a?.config,scaleName:a.scaleName(o),scale:a.getScaleComponent(o),stack:null,defaultRef:L(s),bandPosition:i});return{offsetType:\"encoding\",offset:u}}const c=r[o];if(c)return{offsetType:\"visual\",offset:c};return{}}function d(e,t,r){let{defaultPos:n,vgChannel:a}=r;const{encoding:i,markDef:o,config:s,stack:l}=t;const c=i[e];const u=i[Xt(e)];const d=t.scaleName(e);const p=t.getScaleComponent(e);const{offset:f,offsetType:h}=wf({channel:e,markDef:o,encoding:i,model:t,bandPosition:.5});const m=If({model:t,defaultPos:n,channel:e,scaleName:d,scale:p});const g=!c&&M(e)&&(i.latitude||i.longitude)?{field:t.getName(e)}:kf({channel:e,channelDef:c,channel2Def:u,markDef:o,config:s,scaleName:d,scale:p,stack:l,offset:f,defaultRef:m,bandPosition:h===\"encoding\"?0:undefined});return g?{[a||e]:g}:undefined}function kf(e){const{channel:t,channelDef:r,scaleName:n,stack:a,offset:i,markDef:o}=e;if(T(r)&&a&&t===a.fieldChannel){if(B(r)){let e=r.bandPosition;if(e===undefined&&o.type===\"text\"&&(t===\"radius\"||t===\"theta\"))e=.5;if(e!==undefined)return Ps({scaleName:n,fieldOrDatumDef:r,startSuffix:\"start\",bandPosition:e,offset:i})}return Ms(r,n,{suffix:\"end\"},{offset:i})}return Rs(e)}function If(e){let{model:a,defaultPos:i,channel:o,scaleName:s,scale:l}=e;const{markDef:c,config:u}=a;return()=>{const e=Qt(o);const t=Zt(o);const r=ne(o,c,u,{vgChannel:t});if(r!==undefined)return Ls(o,r);switch(i){case\"zeroOrMin\":return Rf({scaleName:s,scale:l,mode:\"zeroOrMin\",mainChannel:e,config:u});case\"zeroOrMax\":return Rf({scaleName:s,scale:l,mode:{zeroOrMax:{widthSignal:a.width.signal,heightSignal:a.height.signal}},mainChannel:e,config:u});case\"mid\":{const n=a[er(o)];return{...n,mult:.5}}}return undefined}}function Rf(e){let{mainChannel:t,config:r,...n}=e;const a=ws(n);const{mode:i}=n;if(a)return a;switch(t){case\"radius\":{if(i===\"zeroOrMin\")return{value:0};const{widthSignal:o,heightSignal:s}=i.zeroOrMax;return{signal:`min(${o},${s})/2`}}case\"theta\":return i===\"zeroOrMin\"?{value:0}:{signal:\"2*PI\"};case\"x\":return i===\"zeroOrMin\"?{value:0}:{field:{group:\"width\"}};case\"y\":return i===\"zeroOrMin\"?{field:{group:\"height\"}}:{value:0}}}const Nf={left:\"x\",center:\"xc\",right:\"x2\"},Mf={top:\"y\",middle:\"yc\",bottom:\"y2\"};function Pf(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"middle\";if(e===\"radius\"||e===\"theta\")return Zt(e);const a=e===\"x\"?\"align\":\"baseline\";const i=ne(a,t,r);let o;if(x(i)){ae(Ca(a));o=undefined}else o=i;if(e===\"x\")return Nf[o||(n===\"top\"?\"left\":\"center\")];else return Mf[o||n]}function Df(e,t,r){let{defaultPos:n,defaultPos2:a,range:i}=r;if(i)return xf(e,t,{defaultPos:n,defaultPos2:a});return d(e,t,{defaultPos:n})}function xf(e,t,r){let{defaultPos:n,defaultPos2:a}=r;const{markDef:i,config:o}=t;const s=Xt(e);const l=er(e);const c=Lf(t,a,s);const u=c[l]?Pf(e,i,o):Zt(e);return{...d(e,t,{defaultPos:n,vgChannel:u}),...c}}function Lf(e,t,r){const{encoding:n,mark:a,markDef:i,stack:o,config:s}=e;const l=Qt(r);const c=er(r);const u=Zt(r);const d=n[l];const p=e.scaleName(l);const f=e.getScaleComponent(l);const{offset:h}=r in n||r in i?wf({channel:r,markDef:i,encoding:n,model:e}):wf({channel:l,markDef:i,encoding:n,model:e});if(!d&&(r===\"x2\"||r===\"y2\")&&(n.latitude||n.longitude)){const g=er(r);const _=e.markDef[g];if(_!=null)return{[g]:{value:_}};else return{[u]:{field:e.getName(r)}}}const m=Ff({channel:r,channelDef:d,channel2Def:n[r],markDef:i,config:s,scaleName:p,scale:f,stack:o,offset:h,defaultRef:undefined});if(m!==undefined)return{[u]:m};return Uf(r,i)||Uf(r,{[r]:Rn(r,i,s.style),[c]:Rn(c,i,s.style)})||Uf(r,s[a])||Uf(r,s.mark)||{[u]:If({model:e,defaultPos:t,channel:r,scaleName:p,scale:f})()}}function Ff(e){let{channel:t,channelDef:r,channel2Def:n,markDef:a,config:i,scaleName:o,scale:s,stack:l,offset:c,defaultRef:u}=e;if(T(r)&&l&&t.charAt(0)===l.fieldChannel.charAt(0))return Ms(r,o,{suffix:\"start\"},{offset:c});return Rs({channel:t,channelDef:n,scaleName:o,scale:s,stack:l,markDef:a,config:i,offset:c,defaultRef:u})}function Uf(e,t){const r=er(e);const n=Zt(e);if(t[n]!==undefined)return{[n]:Ls(e,t[n])};else if(t[e]!==undefined)return{[n]:Ls(e,t[e])};else if(t[r]){const a=t[r];if(_s(a))ae(_a(r));else return{[r]:Ls(e,a)}}return undefined}function Bf(e,t){const{config:r,encoding:n,markDef:a}=e;const i=a.type;const o=Xt(t);const s=er(t);const l=n[t];const c=n[o];const u=e.getScaleComponent(t);const d=u?u.get(\"type\"):undefined;const p=a.orient;const f=n[s]??n.size??ne(\"size\",a,r,{vgChannel:s});const h=tr(t);const m=i===\"bar\"&&(t===\"x\"?p===\"vertical\":p===\"horizontal\");if(B(l)&&(P(l.bin)||D(l.bin)||l.timeUnit&&!c)&&!(f&&!_s(f))&&!n[h]&&!U(d))return Vf({fieldDef:l,fieldDef2:c,channel:t,model:e});else if((T(l)&&U(d)||m)&&!c)return Hf(l,t,e);else return xf(t,e,{defaultPos:\"zeroOrMax\",defaultPos2:\"zeroOrMin\"})}function jf(e,t,r,n,a,i,o){if(_s(a))if(r){const l=r.get(\"type\");if(l===\"band\"){let e=`bandwidth('${t}')`;if(a.band!==1)e=`${a.band} * ${e}`;const c=In(\"minBandSize\",{type:o},n);return{signal:c?`max(${Cn(c)}, ${e})`:e}}else if(a.band!==1){ae(Ra(l));a=undefined}}else return{mult:a.band,field:{group:e}};else if(x(a))return a;else if(a)return{value:a};if(r){const u=r.get(\"range\");if(fn(u)&&te.isNumber(u.step))return{value:u.step-2}}if(!i){const{bandPaddingInner:d,barBandPaddingInner:p,rectBandPaddingInner:f}=n.scale;const h=I(d,o===\"bar\"?p:f);if(x(h))return{signal:`(1 - (${h.signal})) * ${e}`};else if(te.isNumber(h))return{signal:`${1-h} * ${e}`}}const s=Pu(n.view,e);return{value:s-2}}function Hf(e,t,r){const{markDef:n,encoding:a,config:i,stack:o}=r;const s=n.orient;const l=r.scaleName(t);const c=r.getScaleComponent(t);const u=er(t);const d=Xt(t);const p=tr(t);const f=r.scaleName(p);const h=r.getScaleComponent(rr(t));const m=s===\"horizontal\"&&t===\"y\"||s===\"vertical\"&&t===\"x\";let g;if(a.size||n.size)if(m)g=V(\"size\",r,{vgChannel:u,defaultRef:L(n.size)});else ae(Da(n.type));const _=!!g;const y=dl({channel:t,fieldDef:e,markDef:n,config:i,scaleType:(c||h)?.get(\"type\"),useVlSizeChannel:m});g=g||{[u]:jf(u,f||l,h||c,i,y,!!e,n.type)};const T=(c||h)?.get(\"type\")===\"band\"&&_s(y)&&!_?\"top\":\"middle\";const v=Pf(t,n,i,T);const b=v===\"xc\"||v===\"yc\";const{offset:E,offsetType:S}=wf({channel:t,markDef:n,encoding:a,model:r,bandPosition:b?.5:0});const A=Rs({channel:t,channelDef:e,markDef:n,config:i,scaleName:l,scale:c,stack:o,offset:E,defaultRef:If({model:r,defaultPos:\"mid\",channel:t,scaleName:l,scale:c}),bandPosition:b?S===\"encoding\"?0:.5:x(y)?{signal:`(1-${y})/2`}:_s(y)?(1-y.band)/2:0});if(u)return{[v]:A,...g};else{const O=Zt(d);const C=g[u];const w=E?{...C,offset:E}:C;return{[v]:A,[O]:te.isArray(A)?[A[0],{...A[1],offset:w}]:{...A,offset:w}}}}function Gf(e,t,r,n,a,i,o){if(kt(e))return 0;const s=e===\"x\"||e===\"y2\";const l=s?-t/2:t/2;if(x(r)||x(a)||x(n)||i){const c=Cn(r);const u=Cn(a);const d=Cn(n);const p=Cn(i);const f=s?\"\":\"-\";const h=i?`(${o} < ${p} ? ${f}0.5 * (${p} - (${o})) : ${l})`:l;const m=d?`${d} + `:\"\";const g=c?`(${c} ? -1 : 1) * `:\"\";const _=u?`(${u} + ${h})`:h;return{signal:m+g+_}}else{a=a||0;return n+(r?-a-l:+a+l)}}function Vf(e){let{fieldDef:t,fieldDef2:r,channel:n,model:a}=e;const{config:i,markDef:o,encoding:s}=a;const l=a.getScaleComponent(n);const c=a.scaleName(n);const u=l?l.get(\"type\"):undefined;const d=l.get(\"reverse\");const p=dl({channel:n,fieldDef:t,markDef:o,config:i,scaleType:u});const f=a.component.axes[n]?.[0];const h=f?.get(\"translate\")??.5;const m=M(n)?ne(\"binSpacing\",o,i)??0:0;const g=Xt(n);const _=Zt(n);const y=Zt(g);const T=In(\"minBandSize\",o,i);const{offset:v}=wf({channel:n,markDef:o,encoding:s,model:a,bandPosition:0});const{offset:b}=wf({channel:g,markDef:o,encoding:s,model:a,bandPosition:0});const E=Ds({fieldDef:t,scaleName:c});const S=Gf(n,m,d,h,v,T,E);const A=Gf(g,m,d,h,b??v,T,E);const O=x(p)?{signal:`(1-${p.signal})/2`}:_s(p)?(1-p.band)/2:.5;const C=ul({fieldDef:t,fieldDef2:r,markDef:o,config:i});if(P(t.bin)||t.timeUnit){const w=t.timeUnit&&C!==.5;return{[y]:qf({fieldDef:t,scaleName:c,bandPosition:O,offset:A,useRectOffsetField:w}),[_]:qf({fieldDef:t,scaleName:c,bandPosition:x(O)?{signal:`1-${O.signal}`}:1-O,offset:S,useRectOffsetField:w})}}else if(D(t.bin)){const k=Ms(t,c,{},{offset:A});if(B(r))return{[y]:k,[_]:Ms(r,c,{},{offset:S})};else if(sn(t.bin)&&t.bin.step)return{[y]:k,[_]:{signal:`scale(\"${c}\", ${j(t,{expr:\"datum\"})} + ${t.bin.step})`,offset:S}}}ae(ri(g));return undefined}function qf(e){let{fieldDef:t,scaleName:r,bandPosition:n,offset:a,useRectOffsetField:i}=e;return Ps({scaleName:r,fieldOrDatumDef:t,bandPosition:n,offset:a,...i?{startSuffix:Jp,endSuffix:Qp}:{}})}const zf=new Set([\"aria\",\"width\",\"height\"]);function Wf(e,t){const{fill:r=undefined,stroke:n=undefined}=t.color===\"include\"?Of(e):{};return{...Kf(e.markDef,t),...$f(\"fill\",r),...$f(\"stroke\",n),...V(\"opacity\",e),...V(\"fillOpacity\",e),...V(\"strokeOpacity\",e),...V(\"strokeWidth\",e),...V(\"strokeDash\",e),...Cf(e),...Tf(e),..._f(e,\"href\"),...Ef(e)}}function $f(e,t){return t?{[e]:t}:{}}function Kf(r,n){return yn.reduce((e,t)=>{if(!zf.has(t)&&r[t]!==undefined&&n[t]!==\"ignore\")e[t]=L(r[t]);return e},{})}function Yf(o){const{config:s,markDef:l}=o;const c=new Set;o.forEachFieldDef((e,t)=>{let r;if(!Gr(t)||!(r=o.getScaleType(t)))return;const n=tn(e.aggregate);const a=Os({scaleChannel:t,markDef:l,config:s,scaleType:r,isCountAggregate:n});if(Cs(a)){const i=o.vgField(t,{expr:\"datum\",binSuffix:o.stack?.impute?\"mid\":undefined});if(i)c.add(i)}});if(c.size>0){const e=[...c].map(e=>eo(e,true)).join(\" && \");return{defined:{signal:e}}}return undefined}function Jf(e,t){if(t!==undefined)return{[e]:L(t)};return undefined}const Qf=\"voronoi\",Zf={defined:e=>{return e.type===\"point\"&&e.nearest},parse:(e,t)=>{if(t.events)for(const r of t.events)r.markname=e.getName(Qf)},marks:(n,e,t)=>{const{x:r,y:a}=e.project.hasChannel;const i=n.mark;if(as(i)){ae(qn(i));return t}const o={name:n.getName(Qf),type:\"path\",interactive:true,from:{data:n.getName(\"marks\")},encode:{update:{fill:{value:\"transparent\"},strokeWidth:{value:.35},stroke:{value:\"transparent\"},isVoronoi:{value:true},...Tf(n,{reactiveGeom:true})}},transform:[{type:\"voronoi\",x:{expr:r||!a?\"datum.datum.x || 0\":\"0\"},y:{expr:a||!r?\"datum.datum.y || 0\":\"0\"},size:[n.getSizeSignalRef(\"width\"),n.getSizeSignalRef(\"height\")]}]};let s=0;let l=false;t.forEach((e,t)=>{const r=e.name??\"\";if(r===n.component.mark[0].name)s=t;else if(r.indexOf(Qf)>=0)l=true});if(!l)t.splice(s+1,0,o);return t}},Xf={defined:e=>{return e.type===\"point\"&&e.resolve===\"global\"&&e.bind&&e.bind!==\"scales\"&&!_u(e.bind)},parse:(e,t,r)=>bh(t,r),topLevelSignals:(e,a,i)=>{const o=a.name;const t=a.project;const s=a.bind;const l=a.init&&a.init[0];const c=Zf.defined(a)?\"(item().isVoronoi ? datum.datum : datum)\":\"datum\";t.items.forEach((e,t)=>{const r=w(`${o}_${e.field}`);const n=i.filter(e=>e.name===r);if(!n.length)i.unshift({name:r,...l?{init:Fp(l[t])}:{value:null},on:a.events?[{events:a.events,update:`datum && item().mark.marktype !== 'group' ? ${c}[${te.stringValue(e.field)}] : null`}]:[],bind:s[e.field]??s[e.channel]??s})});return i},signals:(e,t,r)=>{const n=t.name;const a=t.project;const i=r.filter(e=>e.name===n+hh)[0];const o=n+tf;const s=a.items.map(e=>w(`${n}_${e.field}`));const l=s.map(e=>`${e} !== null`).join(\" && \");if(s.length)i.update=`${l} ? {fields: ${o}, values: [${s.join(\", \")}]} : null`;delete i.value;delete i.on;return r}},eh=\"_toggle\",th={defined:e=>{return e.type===\"point\"&&!!e.toggle},signals:(e,t,r)=>{return r.concat({name:t.name+eh,value:false,on:[{events:t.events,update:t.toggle}]})},modifyExpr:(e,t)=>{const r=t.name+hh;const n=t.name+eh;return`${n} ? null : ${r}, `+(t.resolve===\"global\"?`${n} ? null : true, `:`${n} ? null : {unit: ${Th(e)}}, `)+`${n} ? ${r} : null`}},rh={defined:e=>{return e.clear!==undefined&&e.clear!==false},parse:(e,t)=>{if(t.clear)t.clear=te.isString(t.clear)?te.parseSelector(t.clear,\"view\"):t.clear},topLevelSignals:(e,t,r)=>{if(Xf.defined(t))for(const n of t.project.items){const a=r.findIndex(e=>e.name===w(`${t.name}_${n.field}`));if(a!==-1)r[a].on.push({events:t.clear,update:\"null\"})}return r},signals:(e,r,n)=>{function t(e,t){if(e!==-1&&n[e].on)n[e].on.push({events:r.clear,update:t})}if(r.type===\"interval\")for(const a of r.project.items){const i=n.findIndex(e=>e.name===a.signals.visual);t(i,\"[0, 0]\");if(i===-1){const o=n.findIndex(e=>e.name===a.signals.data);t(o,\"null\")}}else{let e=n.findIndex(e=>e.name===r.name+hh);t(e,\"null\");if(th.defined(r)){e=n.findIndex(e=>e.name===r.name+eh);t(e,\"false\")}}return n}},nh={defined:e=>{const t=e.resolve===\"global\"&&e.bind&&_u(e.bind);const r=e.project.items.length===1&&e.project.items[0].field!==mu;if(t&&!r)ae(Yn);return t&&r},parse:(e,t,r)=>{const n=m(r);n.select=te.isString(n.select)?{type:n.select,toggle:t.toggle}:{...n.select,toggle:t.toggle};bh(t,n);if(te.isObject(r.select)&&(r.select.on||r.select.clear)){const o='event.item && indexof(event.item.mark.role, \"legend\") < 0';for(const a of t.events){a.filter=te.array(a.filter??[]);if(!a.filter.includes(o))a.filter.push(o)}}const a=yu(t.bind)?t.bind.legend:\"click\";const i=te.isString(a)?te.parseSelector(a,\"view\"):te.array(a);t.bind={legend:{merge:i}}},topLevelSignals:(e,t,r)=>{const n=t.name;const a=yu(t.bind)&&t.bind.legend;const i=r=>e=>{const t=m(e);t.markname=r;return t};for(const o of t.project.items){if(!o.hasLegend)continue;const s=`${w(o.field)}_legend`;const l=`${n}_${s}`;const c=r.filter(e=>e.name===l);if(c.length===0){const u=a.merge.map(i(`${s}_symbols`)).concat(a.merge.map(i(`${s}_labels`))).concat(a.merge.map(i(`${s}_entries`)));r.unshift({name:l,...!t.init?{value:null}:{},on:[{events:u,update:\"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value\",force:true},{events:a.merge,update:`!event.item || !datum ? null : ${l}`,force:true}]})}}return r},signals:(e,t,r)=>{const n=t.name;const a=t.project;const i=r.find(e=>e.name===n+hh);const o=n+tf;const s=a.items.filter(e=>e.hasLegend).map(e=>w(`${n}_${w(e.field)}_legend`));const l=s.map(e=>`${e} !== null`).join(\" && \");const c=`${l} ? {fields: ${o}, values: [${s.join(\", \")}]} : null`;if(t.events&&s.length>0)i.on.push({events:s.map(e=>({signal:e})),update:c});else if(s.length>0){i.update=c;delete i.value;delete i.on}const u=r.find(e=>e.name===n+eh);const d=yu(t.bind)&&t.bind.legend;if(u)if(!t.events)u.on[0].events=d;else u.on.push({...u.on[0],events:d});return r}};function ah(e,t,r){const n=e.fieldDef(t)?.field;for(const a of C(e.component.selection??{})){const i=a.project.hasField[n]??a.project.hasChannel[t];if(i&&nh.defined(a)){const o=r.get(\"selections\")??[];o.push(a.name);r.set(\"selections\",o,false);i.hasLegend=true}}}const ih=\"_translate_anchor\",oh=\"_translate_delta\",sh={defined:e=>{return e.type===\"interval\"&&e.translate},signals:(e,t,r)=>{const n=t.name;const a=af.defined(t);const i=n+ih;const{x:o,y:s}=t.project.hasChannel;let l=te.parseSelector(t.translate,\"scope\");if(!a)l=l.map(e=>(e.between[0].markname=n+lf,e));r.push({name:i,value:{},on:[{events:l.map(e=>e.between[0]),update:\"{x: x(unit), y: y(unit)\"+(o!==undefined?`, extent_x: ${a?of(e,R):`slice(${o.signals.visual})`}`:\"\")+(s!==undefined?`, extent_y: ${a?of(e,N):`slice(${s.signals.visual})`}`:\"\")+\"}\"}]},{name:n+oh,value:{},on:[{events:l,update:`{x: ${i}.x - x(unit), y: ${i}.y - y(unit)}`}]});if(o!==undefined)lh(e,t,o,\"width\",r);if(s!==undefined)lh(e,t,s,\"height\",r);return r}};function lh(e,t,r,n,a){const i=t.name;const o=i+ih;const s=i+oh;const l=r.channel;const c=af.defined(t);const u=a.filter(e=>e.name===r.signals[c?\"data\":\"visual\"])[0];const d=e.getSizeSignalRef(n).signal;const p=e.getScaleComponent(l);const f=p&&p.get(\"type\");const h=p&&p.get(\"reverse\");const m=!c?\"\":l===R?h?\"\":\"-\":h?\"-\":\"\";const g=`${o}.extent_${l}`;const _=`${m}${s}.${l} / ${c?`${d}`:`span(${g})`}`;const y=!c||!p?\"panLinear\":f===\"log\"?\"panLog\":f===\"symlog\"?\"panSymlog\":f===\"pow\"?\"panPow\":\"panLinear\";const T=!c?\"\":f===\"pow\"?`, ${p.get(\"exponent\")??1}`:f===\"symlog\"?`, ${p.get(\"constant\")??1}`:\"\";const v=`${y}(${g}, ${_}${T})`;u.on.push({events:{signal:s},update:c?v:`clampRange(${v}, 0, ${d})`})}const ch=\"_zoom_anchor\",uh=\"_zoom_delta\",dh={defined:e=>{return e.type===\"interval\"&&e.zoom},signals:(e,t,r)=>{const n=t.name;const a=af.defined(t);const i=n+uh;const{x:o,y:s}=t.project.hasChannel;const l=te.stringValue(e.scaleName(R));const c=te.stringValue(e.scaleName(N));let u=te.parseSelector(t.zoom,\"scope\");if(!a)u=u.map(e=>(e.markname=n+lf,e));r.push({name:n+ch,on:[{events:u,update:!a?`{x: x(unit), y: y(unit)}`:\"{\"+[l?`x: invert(${l}, x(unit))`:\"\",c?`y: invert(${c}, y(unit))`:\"\"].filter(e=>e).join(\", \")+\"}\"}]},{name:i,on:[{events:u,force:true,update:\"pow(1.001, event.deltaY * pow(16, event.deltaMode))\"}]});if(o!==undefined)ph(e,t,o,\"width\",r);if(s!==undefined)ph(e,t,s,\"height\",r);return r}};function ph(e,t,r,n,a){const i=t.name;const o=r.channel;const s=af.defined(t);const l=a.filter(e=>e.name===r.signals[s?\"data\":\"visual\"])[0];const c=e.getSizeSignalRef(n).signal;const u=e.getScaleComponent(o);const d=u&&u.get(\"type\");const p=s?of(e,o):l.name;const f=i+uh;const h=`${i}${ch}.${o}`;const m=!s||!u?\"zoomLinear\":d===\"log\"?\"zoomLog\":d===\"symlog\"?\"zoomSymlog\":d===\"pow\"?\"zoomPow\":\"zoomLinear\";const g=!s?\"\":d===\"pow\"?`, ${u.get(\"exponent\")??1}`:d===\"symlog\"?`, ${u.get(\"constant\")??1}`:\"\";const _=`${m}(${p}, ${h}, ${f}${g})`;l.on.push({events:{signal:f},update:s?_:`clampRange(${_}, 0, ${c})`})}const fh=\"_store\",hh=\"_tuple\",mh=\"_modify\",gh=\"vlSelectionResolve\",_h=[mf,ff,nf,th,Xf,af,nh,rh,sh,dh,Zf];function yh(e){let t=e.parent;while(t){if(y0(t))break;t=t.parent}return t}function Th(e){let{escape:t}=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{escape:true};let r=t?te.stringValue(e.name):e.name;const n=yh(e);if(n){const{facet:a}=n;for(const i of Lt)if(a[i])r+=` + '__facet_${i}_' + (facet[${te.stringValue(n.vgField(i))}])`}return r}function vh(e){return C(e.component.selection??{}).reduce((e,t)=>{return e||t.project.hasSelectionId},false)}function bh(e,t){if(te.isString(t.select)||!t.select.on)delete e.events;if(te.isString(t.select)||!t.select.clear)delete e.clear;if(te.isString(t.select)||!t.select.toggle)delete e.toggle}function Eh(e){const t=[];if(e.type===\"Identifier\")return[e.name];if(e.type===\"Literal\")return[e.value];if(e.type===\"MemberExpression\"){t.push(...Eh(e.object));t.push(...Eh(e.property))}return t}function Sh(e){if(e.object.type===\"MemberExpression\")return Sh(e.object);return e.object.name===\"datum\"}function Ah(e){const t=te.parseExpression(e);const r=new Set;t.visit(e=>{if(e.type===\"MemberExpression\"&&Sh(e))r.add(Eh(e).slice(1).join(\".\"))});return r}class Oh extends r{clone(){return new Oh(null,this.model,m(this.filter))}constructor(e,t,r){super(e);this.model=t;this.filter=r;this.expr=Rh(this.model,this.filter,this);this._dependentFields=Ah(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:\"filter\",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function Ch(e,t){const r={};const n=e.config.selection;if(!t||!t.length)return r;for(const a of t){const i=w(a.name);const o=a.select;const s=te.isString(o)?o:o.type;const l=te.isObject(o)?m(o):{type:s};const c=n[s];for(const p in c){if(p===\"fields\"||p===\"encodings\")continue;if(p===\"mark\")l[p]={...c[p],...l[p]};if(l[p]===undefined||l[p]===true)l[p]=m(c[p]??l[p])}const u=r[i]={...l,name:i,type:s,init:a.value,bind:a.bind,events:te.isString(l.on)?te.parseSelector(l.on,\"scope\"):te.array(m(l.on))};const d=m(a);for(const f of _h)if(f.defined(u)&&f.parse)f.parse(e,u,d)}return r}function wh(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:\"datum\";const a=te.isString(t)?t:t.param;const i=w(a);const o=te.stringValue(i+fh);let s;try{s=e.getSelectionComponent(i,a)}catch(e){return`!!${i}`}if(s.project.timeUnit){const p=r??e.component.data.raw;const f=s.project.timeUnit.clone();if(p.parent)f.insertAsParentOf(p);else p.parent=f}const l=s.project.hasSelectionId?\"vlSelectionIdTest(\":\"vlSelectionTest(\";const c=s.resolve===\"global\"?\")\":`, ${te.stringValue(s.resolve)})`;const u=`${l}${o}, ${n}${c}`;const d=`length(data(${o}))`;return t.empty===false?`${d} && ${u}`:`!${d} || ${u}`}function kh(e,t,r){const n=w(t);const a=r[\"encoding\"];let i=r[\"field\"];let o;try{o=e.getSelectionComponent(n,t)}catch(e){return n}if(!a&&!i){i=o.project.items[0].field;if(o.project.items.length>1)ae('A \"field\" or \"encoding\" must be specified when using a selection as a scale domain. '+`Using \"field\": ${te.stringValue(i)}.`)}else if(a&&!i){const s=o.project.items.filter(e=>e.channel===a);if(!s.length||s.length>1){i=o.project.items[0].field;ae((!s.length?\"No \":\"Multiple \")+`matching ${te.stringValue(a)} encoding found for selection ${te.stringValue(r.param)}. `+`Using \"field\": ${te.stringValue(i)}.`)}else i=s[0].field}return`${o.name}[${te.stringValue(Pe(i))}]`}function Ih(e,t){for(const[r,n]of Oe(e.component.selection??{})){const a=e.getName(`lookup_${r}`);e.component.data.outputNodes[a]=n.materialized=new Wp(new Oh(t,e,{param:r}),a,G.Lookup,e.component.data.outputNodeRefCounts)}}function Rh(t,e,r){return we(e,e=>{if(te.isString(e))return e;else if(Hi(e))return wh(t,e,r);else return Xi(e)})}function Nh(e,t){if(!e)return undefined;if(te.isArray(e)&&!pn(e))return e.map(e=>Hl(e,t)).join(\", \");return e}function Mh(e,t,r,n){e.encode??={};e.encode[t]??={};e.encode[t].update??={};e.encode[t].update[r]=n}function Ph(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{header:false};const{disable:a,orient:i,scale:o,labelExpr:s,title:l,zindex:c,...u}=e.combine();if(a)return undefined;for(const d in u){const p=oc[d];const f=u[d];if(p&&p!==t&&p!==\"both\")delete u[d];else if(ac(f)){const{condition:h,...m}=f;const g=te.array(h);const _=nc[d];if(_){const{vgProp:y,part:T}=_;const v=[...g.map(e=>{const{test:t,...r}=e;return{test:Rh(null,t),...r}}),m];Mh(u,T,y,v);delete u[d]}else if(_===null){const b={signal:g.map(e=>{const{test:t,...r}=e;return`${Rh(null,t)} ? ${On(r)} : `}).join(\"\")+On(m)};u[d]=b}}else if(x(f)){const E=nc[d];if(E){const{vgProp:S,part:A}=E;Mh(u,A,S,f);delete u[d]}}if(k([\"labelAlign\",\"labelBaseline\"],d)&&u[d]===null)delete u[d]}if(t===\"grid\"){if(!u.grid)return undefined;if(u.encode){const{grid:O}=u.encode;u.encode={...O?{grid:O}:{}};if(re(u.encode))delete u.encode}return{scale:o,orient:i,...u,domain:false,labels:false,aria:false,maxExtent:0,minExtent:0,ticks:false,zindex:I(c,0)}}else{if(!n.header&&e.mainExtracted)return undefined;if(s!==undefined){let e=s;if(u.encode?.labels?.update&&x(u.encode.labels.update.text))e=De(s,\"datum.label\",u.encode.labels.update.text.signal);Mh(u,\"labels\",\"text\",{signal:e})}if(u.labelAlign===null)delete u.labelAlign;if(u.encode){for(const w of ic)if(!e.hasAxisPart(w))delete u.encode[w];if(re(u.encode))delete u.encode}const C=Nh(l,r);return{scale:o,orient:i,grid:false,...C?{title:C}:{},...u,...r.aria===false?{aria:false}:{},zindex:I(c,0)}}}function Dh(e){const{axes:t}=e.component;const r=[];for(const n of Er)if(t[n])for(const a of t[n])if(!a.get(\"disable\")&&!a.get(\"gridScale\")){const i=n===\"x\"?\"height\":\"width\";const o=e.getSizeSignalRef(i).signal;if(i!==o)r.push({name:i,update:o})}return r}function xh(e,t){const{x:r=[],y:n=[]}=e;return[...r.map(e=>Ph(e,\"grid\",t)),...n.map(e=>Ph(e,\"grid\",t)),...r.map(e=>Ph(e,\"main\",t)),...n.map(e=>Ph(e,\"main\",t))].filter(e=>e)}function Lh(e,s,l,c){return Object.assign.apply(null,[{},...e.map(e=>{if(e===\"axisOrient\"){const t=l===\"x\"?\"bottom\":\"left\";const r=s[l===\"x\"?\"axisBottom\":\"axisLeft\"]||{};const n=s[l===\"x\"?\"axisTop\":\"axisRight\"]||{};const a=new Set([...A(r),...A(n)]);const i={};for(const o of a.values())i[o]={signal:`${c[\"signal\"]} === \"${t}\" ? ${Cn(r[o])} : ${Cn(n[o])}`};return i}return s[e]})])}function Fh(e,t,r,n){const a=t===\"band\"?[\"axisDiscrete\",\"axisBand\"]:t===\"point\"?[\"axisDiscrete\",\"axisPoint\"]:yo(t)?[\"axisQuantitative\"]:t===\"time\"||t===\"utc\"?[\"axisTemporal\"]:[];const i=e===\"x\"?\"axisX\":\"axisY\";const o=x(r)?\"axisOrient\":`axis${Ie(r)}`;const s=[...a,...a.map(e=>i+e.substr(4))];const l=[\"axis\",o,i];return{vlOnlyAxisConfig:Lh(s,n,e,r),vgAxisConfig:Lh(l,n,e,r),axisConfigStyle:Uh([...l,...s],n)}}function Uh(e,t){const r=[{}];for(const n of e){let e=t[n]?.style;if(e){e=te.array(e);for(const a of e)r.push(t.style[a])}}return Object.assign.apply(null,r)}function Bh(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const a=Nn(e,r,t);if(a!==undefined)return{configFrom:\"style\",configValue:a};for(const i of[\"vlOnlyAxisConfig\",\"vgAxisConfig\",\"axisConfigStyle\"])if(n[i]?.[e]!==undefined)return{configFrom:i,configValue:n[i][e]};return{}}const jh={scale:e=>{let{model:t,channel:r}=e;return t.scaleName(r)},format:e=>{let{format:t}=e;return t},formatType:e=>{let{formatType:t}=e;return t},grid:e=>{let{fieldOrDatumDef:t,axis:r,scaleType:n}=e;return r.grid??Hh(n,t)},gridScale:e=>{let{model:t,channel:r}=e;return Gh(t,r)},labelAlign:e=>{let{axis:t,labelAngle:r,orient:n,channel:a}=e;return t.labelAlign||Wh(r,n,a)},labelAngle:e=>{let{labelAngle:t}=e;return t},labelBaseline:e=>{let{axis:t,labelAngle:r,orient:n,channel:a}=e;return t.labelBaseline||zh(r,n,a)},labelFlush:e=>{let{axis:t,fieldOrDatumDef:r,channel:n}=e;return t.labelFlush??$h(r.type,n)},labelOverlap:e=>{let{axis:t,fieldOrDatumDef:r,scaleType:n}=e;return t.labelOverlap??Kh(r.type,n,B(r)&&!!r.timeUnit,B(r)?r.sort:undefined)},orient:e=>{let{orient:t}=e;return t},tickCount:e=>{let{channel:t,model:r,axis:n,fieldOrDatumDef:a,scaleType:i}=e;const o=t===\"x\"?\"width\":t===\"y\"?\"height\":undefined;const s=o?r.getSizeSignalRef(o):undefined;return n.tickCount??Jh({fieldOrDatumDef:a,scaleType:i,size:s,values:n.values})},tickMinStep:Qh,title:e=>{let{axis:t,model:r,channel:n}=e;if(t.title!==undefined)return t.title;const a=Zh(r,n);if(a!==undefined)return a;const i=r.typedFieldDef(n);const o=n===\"x\"?\"x2\":\"y2\";const s=r.fieldDef(o);return Pn(i?[ll(i)]:[],B(s)?[ll(s)]:[])},values:e=>{let{axis:t,fieldOrDatumDef:r}=e;return Xh(t,r)},zindex:e=>{let{axis:t,fieldOrDatumDef:r,mark:n}=e;return t.zindex??em(n,r)}};function Hh(e,t){return!U(e)&&B(t)&&!P(t?.bin)&&!D(t?.bin)}function Gh(e,t){const r=t===\"x\"?\"y\":\"x\";if(e.getScaleComponent(r))return e.scaleName(r);return undefined}function Vh(e,t,r,n,a){const i=t?.labelAngle;if(i!==undefined)return x(i)?i:Ge(i);else{const{configValue:o}=Bh(\"labelAngle\",n,t?.style,a);if(o!==undefined)return Ge(o);else{if(r===R&&k([lo,oo],e.type)&&!(B(e)&&e.timeUnit))return 270;return undefined}}}function qh(e){return`(((${e.signal} % 360) + 360) % 360)`}function zh(e,t,r,n){if(e!==undefined)if(r===\"x\"){if(x(e)){const a=qh(e);const i=x(t)?`(${t.signal} === \"top\")`:t===\"top\";return{signal:`(45 < ${a} && ${a} < 135) || (225 < ${a} && ${a} < 315) ? \"middle\" :`+`(${a} <= 45 || 315 <= ${a}) === ${i} ? \"bottom\" : \"top\"`}}if(45<e&&e<135||225<e&&e<315)return\"middle\";if(x(t)){const o=e<=45||315<=e?\"===\":\"!==\";return{signal:`${t.signal} ${o} \"top\" ? \"bottom\" : \"top\"`}}return(e<=45||315<=e)===(t===\"top\")?\"bottom\":\"top\"}else{if(x(e)){const s=qh(e);const l=x(t)?`(${t.signal} === \"left\")`:t===\"left\";const c=n?'\"middle\"':\"null\";return{signal:`${s} <= 45 || 315 <= ${s} || (135 <= ${s} && ${s} <= 225) ? ${c} : (45 <= ${s} && ${s} <= 135) === ${l} ? \"top\" : \"bottom\"`}}if(e<=45||315<=e||135<=e&&e<=225)return n?\"middle\":null;if(x(t)){const u=45<=e&&e<=135?\"===\":\"!==\";return{signal:`${t.signal} ${u} \"left\" ? \"top\" : \"bottom\"`}}return(45<=e&&e<=135)===(t===\"left\")?\"top\":\"bottom\"}return undefined}function Wh(e,t,r){if(e===undefined)return undefined;const n=r===\"x\";const a=n?0:90;const i=n?\"bottom\":\"left\";if(x(e)){const o=qh(e);const s=x(t)?`(${t.signal} === \"${i}\")`:t===i;return{signal:`(${a?`(${o} + 90)`:o} % 180 === 0) ? ${n?null:'\"center\"'} :`+`(${a} < ${o} && ${o} < ${180+a}) === ${s} ? \"left\" : \"right\"`}}if((e+a)%180===0)return n?null:\"center\";if(x(t)){const l=a<e&&e<180+a?\"===\":\"!==\";const c=`${t.signal} ${l} \"${i}\"`;return{signal:`${c} ? \"left\" : \"right\"`}}if((a<e&&e<180+a)===(t===i))return\"left\";return\"right\"}function $h(e,t){if(t===\"x\"&&k([\"quantitative\",\"temporal\"],e))return true;return undefined}function Kh(e,t,r,n){if(r&&!te.isObject(n)||e!==\"nominal\"&&e!==\"ordinal\"){if(t===\"log\"||t===\"symlog\")return\"greedy\";return true}return undefined}function Yh(e){return e===\"x\"?\"bottom\":\"left\"}function Jh(e){let{fieldOrDatumDef:t,scaleType:r,size:n,values:a}=e;if(!a&&!U(r)&&r!==\"log\"){if(B(t)){if(P(t.bin))return{signal:`ceil(${n.signal}/10)`};if(t.timeUnit&&k([\"month\",\"hours\",\"day\",\"quarter\"],F(t.timeUnit)?.unit))return undefined}return{signal:`ceil(${n.signal}/40)`}}return undefined}function Qh(e){let{format:t,fieldOrDatumDef:r}=e;if(t===\"d\")return 1;if(B(r)){const{timeUnit:n}=r;if(n){const a=Fi(n);if(a)return{signal:a}}}return undefined}function Zh(e,t){const r=t===\"x\"?\"x2\":\"y2\";const n=e.fieldDef(t);const a=e.fieldDef(r);const i=n?n.title:undefined;const o=a?a.title:undefined;if(i&&o)return Dn(i,o);else if(i)return i;else if(o)return o;else if(i!==undefined)return i;else if(o!==undefined)return o;return undefined}function Xh(e,t){const r=e.values;if(te.isArray(r))return tc(t,r);else if(x(r))return r;return undefined}function em(e,t){if(e===\"rect\"&&Rl(t))return 1;return 0}class tm extends r{clone(){return new tm(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this._dependentFields=Ah(this.transform.calculate)}static parseAllForSortIndex(o,e){e.forEachFieldDef((e,t)=>{if(!Al(e))return;if(rl(e.sort)){const{field:r,timeUnit:n}=e;const a=e.sort;const i=a.map((e,t)=>{return`${Xi({field:r,timeUnit:n,equal:e})} ? ${t} : `}).join(\"\")+a.length;o=new tm(o,{calculate:i,as:rm(e,t,{forAs:true})})}});return o}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:\"formula\",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${S(this.transform)}`}}function rm(e,t,r){return j(e,{prefix:t,suffix:\"sort_index\",...r})}function nm(e,t){if(k([\"top\",\"bottom\"],t))return\"column\";else if(k([\"left\",\"right\"],t))return\"row\";return e===\"row\"?\"row\":\"column\"}function am(e,t,r,n){const a=n===\"row\"?r.headerRow:n===\"column\"?r.headerColumn:r.headerFacet;return I((t||{})[e],a[e],r.header[e])}function im(e,t,r,n){const a={};for(const i of e){const o=am(i,t||{},r,n);if(o!==undefined)a[i]=o}return a}const om=[\"row\",\"column\"],sm=[\"header\",\"footer\"];function lm(e,t){const r=e.component.layoutHeaders[t].title;const n=e.config?e.config:undefined;const a=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:undefined;const{titleAnchor:i,titleAngle:o,titleOrient:s}=im([\"titleAnchor\",\"titleAngle\",\"titleOrient\"],a.header,n,t);const l=nm(t,s);const c=Ge(o);return{name:`${t}-title`,type:\"group\",role:`${l}-title`,title:{text:r,...t===\"row\"?{orient:\"left\"}:{},style:\"guide-title\",...um(c,l),...cm(l,c,i),...ym(n,a,t,lu,ou)}}}function cm(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:\"middle\";switch(r){case\"start\":return{align:\"left\"};case\"end\":return{align:\"right\"}}const n=Wh(t,e===\"row\"?\"left\":\"top\",e===\"row\"?\"y\":\"x\");return n?{align:n}:{}}function um(e,t){const r=zh(e,t===\"row\"?\"left\":\"top\",t===\"row\"?\"y\":\"x\",true);return r?{baseline:r}:{}}function dm(e,t){const r=e.component.layoutHeaders[t];const n=[];for(const a of sm)if(r[a])for(const i of r[a]){const o=hm(e,t,a,r,i);if(o!=null)n.push(o)}return n}function pm(e,t){const{sort:r}=e;if(tl(r))return{field:j(r,{expr:\"datum\"}),order:r.order??\"ascending\"};else if(te.isArray(r))return{field:rm(e,t,{expr:\"datum\"}),order:\"ascending\"};else return{field:j(e,{expr:\"datum\"}),order:r??\"ascending\"}}function fm(e,t,r){const{format:n,formatType:a,labelAngle:i,labelAnchor:o,labelOrient:s,labelExpr:l}=im([\"format\",\"formatType\",\"labelAngle\",\"labelAnchor\",\"labelOrient\",\"labelExpr\"],e.header,r,t);const c=js({fieldOrDatumDef:e,format:n,formatType:a,expr:\"parent\",config:r}).signal;const u=nm(t,s);return{text:{signal:l?De(De(l,\"datum.label\",c),\"datum.value\",j(e,{expr:\"parent\"})):c},...t===\"row\"?{orient:\"left\"}:{},style:\"guide-label\",frame:\"group\",...um(i,u),...cm(u,i,o),...ym(r,e,t,cu,su)}}function hm(t,r,n,a,i){if(i){let e=null;const{facetFieldDef:o}=a;const s=t.config?t.config:undefined;if(o&&i.labels){const{labelOrient:d}=im([\"labelOrient\"],o.header,s,r);if(r===\"row\"&&!k([\"top\",\"bottom\"],d)||r===\"column\"&&!k([\"left\",\"right\"],d))e=fm(o,r,s)}const l=y0(t)&&!nl(t.facet);const c=i.axes;const u=c?.length>0;if(e||u){const p=r===\"row\"?\"height\":\"width\";return{name:t.getName(`${r}_${n}`),type:\"group\",role:`${r}-${n}`,...a.facetFieldDef?{from:{data:t.getName(`${r}_domain`)},sort:pm(o,r)}:{},...u&&l?{from:{data:t.getName(`facet_domain_${r}`)}}:{},...e?{title:e}:{},...i.sizeSignal?{encode:{update:{[p]:i.sizeSignal}}}:{},...u?{axes:c}:{}}}}return null}const mm={column:{start:0,end:1},row:{start:1,end:0}};function gm(e,t){return mm[t][e]}function _m(e,t){const r={};for(const n of Lt){const a=e[n];if(a?.facetFieldDef){const{titleAnchor:i,titleOrient:o}=im([\"titleAnchor\",\"titleOrient\"],a.facetFieldDef.header,t,n);const s=nm(n,o);const l=gm(i,s);if(l!==undefined)r[s]=l}}return re(r)?undefined:r}function ym(e,t,r,n,a){const i={};for(const o of n){if(!a[o])continue;const s=am(o,t?.header,e,r);if(s!==undefined)i[a[o]]=s}return i}function Tm(e){return[...vm(e,\"width\"),...vm(e,\"height\"),...vm(e,\"childWidth\"),...vm(e,\"childHeight\")]}function vm(e,t){const r=t===\"width\"?\"x\":\"y\";const n=e.component.layoutSize.get(t);if(!n||n===\"merged\")return[];const a=e.getSizeSignalRef(t).signal;if(n===\"step\"){const i=e.getScaleComponent(r);if(i){const o=i.get(\"type\");const s=i.get(\"range\");if(U(o)&&fn(s)){const l=e.scaleName(r);if(y0(e.parent)){const c=e.parent.component.resolve;if(c.scale[r]===\"independent\")return[bm(l,s)]}return[bm(l,s),{name:a,update:Em(l,i,`domain('${l}').length`)}]}}throw new Error(\"layout size is step although width/height is not step.\")}else if(n==\"container\"){const u=a.endsWith(\"width\");const d=u?\"containerSize()[0]\":\"containerSize()[1]\";const p=Mu(e.config.view,u?\"width\":\"height\");const f=`isFinite(${d}) ? ${d} : ${p}`;return[{name:a,init:f,on:[{update:f,events:\"window:resize\"}]}]}else return[{name:a,value:n}]}function bm(e,t){const r=`${e}_step`;if(x(t.step))return{name:r,update:t.step.signal};else return{name:r,value:t.step}}function Em(e,t,r){const n=t.get(\"type\");const a=t.get(\"padding\");const i=I(t.get(\"paddingOuter\"),a);let o=t.get(\"paddingInner\");o=n===\"band\"?o!==undefined?o:a:1;return`bandspace(${r}, ${Cn(o)}, ${Cn(i)}) * ${e}_step`}function Sm(e){return e===\"childWidth\"?\"width\":e===\"childHeight\"?\"height\":e}function Am(r,n){return A(r).reduce((e,t)=>{return{...e,...gf({model:n,channelDef:r[t],vgChannel:t,mainRefFn:e=>L(e.value),invalidValueRef:undefined})}},{})}function Om(e,t){if(y0(t))return e===\"theta\"?\"independent\":\"shared\";else if(v0(t))return\"shared\";else if(T0(t))return M(e)||e===\"theta\"||e===\"radius\"?\"independent\":\"shared\";throw new Error(\"invalid model type for resolve\")}function Cm(e,t){const r=e.scale[t];const n=M(t)?\"axis\":\"legend\";if(r===\"independent\"){if(e[n][t]===\"shared\")ae(Ha(t));return\"independent\"}return e[n][t]||\"shared\"}const wm={...hu,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},km=A(wm);class Im extends vp{}const Rm={symbols:Nm,gradient:Mm,labels:Pm,entries:Dm};function Nm(e,t){let{fieldOrDatumDef:r,model:n,channel:a,legendCmpt:i,legendType:o}=t;if(o!==\"symbol\")return undefined;const{markDef:s,encoding:l,config:c,mark:u}=n;const d=s.filled&&u!==\"trail\";let p={...wn({},n,us),...Of(n,{filled:d})};const f=i.get(\"symbolOpacity\")??c.legend.symbolOpacity;const h=i.get(\"symbolFillColor\")??c.legend.symbolFillColor;const m=i.get(\"symbolStrokeColor\")??c.legend.symbolStrokeColor;const g=f===undefined?xm(l.opacity)??s.opacity:undefined;if(p.fill)if(a===\"fill\"||d&&a===st)delete p.fill;else if(p.fill[\"field\"])if(h)delete p.fill;else{p.fill=L(c.legend.symbolBaseFillColor??\"black\");p.fillOpacity=L(g??1)}else if(te.isArray(p.fill)){const _=Lm(l.fill??l.color)??s.fill??(d&&s.color);if(_)p.fill=L(_)}if(p.stroke)if(a===\"stroke\"||!d&&a===st)delete p.stroke;else if(p.stroke[\"field\"]||m)delete p.stroke;else if(te.isArray(p.stroke)){const y=I(Lm(l.stroke||l.color),s.stroke,d?s.color:undefined);if(y)p.stroke={value:y}}if(a!==ft){const T=B(r)&&Um(n,i,r);if(T)p.opacity=[{test:T,...L(g??1)},L(c.legend.unselectedOpacity)];else if(g)p.opacity=L(g)}p={...p,...e};return re(p)?undefined:p}function Mm(e,t){let{model:r,legendType:n,legendCmpt:a}=t;if(n!==\"gradient\")return undefined;const{config:i,markDef:o,encoding:s}=r;let l={};const c=a.get(\"gradientOpacity\")??i.legend.gradientOpacity;const u=c===undefined?xm(s.opacity)||o.opacity:undefined;if(u)l.opacity=L(u);l={...l,...e};return re(l)?undefined:l}function Pm(e,t){let{fieldOrDatumDef:r,model:n,channel:a,legendCmpt:i}=t;const o=n.legend(a)||{};const s=n.config;const l=B(r)?Um(n,i,r):undefined;const c=l?[{test:l,value:1},{value:s.legend.unselectedOpacity}]:undefined;const{format:u,formatType:d}=o;let p=undefined;if(Fs(d))p=Gs({fieldOrDatumDef:r,field:\"datum.value\",format:u,formatType:d,config:s});else if(u===undefined&&d===undefined&&s.customFormatTypes)if(r.type===\"quantitative\"&&s.numberFormatType)p=Gs({fieldOrDatumDef:r,field:\"datum.value\",format:s.numberFormat,formatType:s.numberFormatType,config:s});else if(r.type===\"temporal\"&&s.timeFormatType&&B(r)&&r.timeUnit===undefined)p=Gs({fieldOrDatumDef:r,field:\"datum.value\",format:s.timeFormat,formatType:s.timeFormatType,config:s});const f={...c?{opacity:c}:{},...p?{text:p}:{},...e};return re(f)?undefined:f}function Dm(e,t){let{legendCmpt:r}=t;const n=r.get(\"selections\");return n?.length?{...e,fill:{value:\"transparent\"}}:e}function xm(e){return Fm(e,(e,t)=>Math.max(e,t.value))}function Lm(e){return Fm(e,(e,t)=>{return I(e,t.value)})}function Fm(e,t){if(_l(e))return te.array(e.condition).reduce(t,e.value);else if(Sl(e))return e.value;return undefined}function Um(e,t,r){const n=t.get(\"selections\");if(!n?.length)return undefined;const a=te.stringValue(r.field);return n.map(e=>{const t=te.stringValue(w(e)+fh);return`(!length(data(${t})) || (${e}[${a}] && indexof(${e}[${a}], datum.value) >= 0))`}).join(\" || \")}const Bm={direction:e=>{let{direction:t}=e;return t},format:e=>{let{fieldOrDatumDef:t,legend:r,config:n}=e;const{format:a,formatType:i}=r;return Vs(t,t.type,a,i,n,false)},formatType:e=>{let{legend:t,fieldOrDatumDef:r,scaleType:n}=e;const{formatType:a}=t;return qs(a,r,n)},gradientLength:e=>{const{legend:t,legendConfig:r}=e;return t.gradientLength??r.gradientLength??Wm(e)},labelOverlap:e=>{let{legend:t,legendConfig:r,scaleType:n}=e;return t.labelOverlap??r.labelOverlap??Km(n)},symbolType:e=>{let{legend:t,markDef:r,channel:n,encoding:a}=e;return t.symbolType??Hm(r.type,n,a.shape,r.shape)},title:e=>{let{fieldOrDatumDef:t,config:r}=e;return Bl(t,r,{allowDisabling:true})},type:e=>{let{legendType:t,scaleType:r,channel:n}=e;if(Dt(n)&&So(r)){if(t===\"gradient\")return undefined}else if(t===\"symbol\")return undefined;return t},values:e=>{let{fieldOrDatumDef:t,legend:r}=e;return jm(r,t)}};function jm(e,t){const r=e.values;if(te.isArray(r))return tc(t,r);else if(x(r))return r;return undefined}function Hm(e,t,r,n){if(t!==\"shape\"){const a=Lm(r)??n;if(a)return a}switch(e){case\"bar\":case\"rect\":case\"image\":case\"square\":return\"square\";case\"line\":case\"trail\":case\"rule\":return\"stroke\";case\"arc\":case\"point\":case\"circle\":case\"tick\":case\"geoshape\":case\"area\":case\"text\":return\"circle\"}}function Gm(e){const{legend:t}=e;return I(t.type,Vm(e))}function Vm(e){let{channel:t,timeUnit:r,scaleType:n}=e;if(Dt(t)){if(k([\"quarter\",\"month\",\"day\"],r))return\"symbol\";if(So(n))return\"gradient\"}return\"symbol\"}function qm(e){let{legendConfig:t,legendType:r,orient:n,legend:a}=e;return a.direction??t[r?\"gradientDirection\":\"symbolDirection\"]??zm(n,r)}function zm(e,t){switch(e){case\"top\":case\"bottom\":return\"horizontal\";case\"left\":case\"right\":case\"none\":case undefined:return undefined;default:return t===\"gradient\"?\"horizontal\":undefined}}function Wm(e){let{legendConfig:t,model:r,direction:n,orient:a,scaleType:i}=e;const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:s,gradientVerticalMaxLength:l,gradientVerticalMinLength:c}=t;if(So(i))if(n===\"horizontal\")if(a===\"top\"||a===\"bottom\")return $m(r,\"width\",s,o);else return s;else return $m(r,\"height\",c,l);return undefined}function $m(e,t,r,n){const a=e.getSizeSignalRef(t).signal;return{signal:`clamp(${a}, ${r}, ${n})`}}function Km(e){if(k([\"quantile\",\"threshold\",\"log\",\"symlog\"],e))return\"greedy\";return undefined}function Ym(e){const t=z(e)?Jm(e):eg(e);e.component.legends=t;return t}function Jm(e){const{encoding:t}=e;const r={};for(const n of[st,...pu]){const a=H(t[n]);if(!a||!e.getScaleComponent(n))continue;if(n===ut&&B(a)&&a.type===co)continue;r[n]=Xm(e,n)}return r}function Qm(e,t){const r=e.scaleName(t);if(e.mark===\"trail\")if(t===\"color\")return{stroke:r};else if(t===\"size\")return{strokeWidth:r};if(t===\"color\")return e.markDef.filled?{fill:r}:{stroke:r};return{[t]:r}}function Zm(e,t,r,n){switch(t){case\"disable\":return r!==undefined;case\"values\":return!!r?.values;case\"title\":if(t===\"title\"&&e===n?.title)return true}return e===(r||{})[t]}function Xm(e,t){let r=e.legend(t);const{markDef:n,encoding:a,config:i}=e;const o=i.legend;const s=new Im({},Qm(e,t));ah(e,t,s);const l=r!==undefined?!r:o.disable;s.set(\"disable\",l,r!==undefined);if(l)return s;r=r||{};const c=e.getScaleComponent(t).get(\"type\");const u=H(a[t]);const d=B(u)?F(u.timeUnit)?.unit:undefined;const p=r.orient||i.legend.orient||\"right\";const f=Gm({legend:r,channel:t,timeUnit:d,scaleType:c});const h=qm({legend:r,legendType:f,orient:p,legendConfig:o});const m={legend:r,channel:t,model:e,markDef:n,encoding:a,fieldOrDatumDef:u,legendConfig:o,config:i,scaleType:c,orient:p,legendType:f,direction:h};for(const v of km){if(f===\"gradient\"&&v.startsWith(\"symbol\")||f===\"symbol\"&&v.startsWith(\"gradient\"))continue;const b=v in Bm?Bm[v](m):r[v];if(b!==undefined){const E=Zm(b,v,r,e.fieldDef(t));if(E||i.legend[v]===undefined)s.set(v,b,E)}}const g=r?.encoding??{};const _=s.get(\"selections\");const y={};const T={fieldOrDatumDef:u,model:e,channel:t,legendCmpt:s,legendType:f};for(const S of[\"labels\",\"legend\",\"title\",\"symbols\",\"gradient\",\"entries\"]){const A=Am(g[S]??{},e);const O=S in Rm?Rm[S](A,T):A;if(O!==undefined&&!re(O))y[S]={..._?.length&&B(u)?{name:`${w(u.field)}_legend_${S}`}:{},..._?.length?{interactive:!!_}:{},update:O}}if(!re(y))s.set(\"encode\",y,!!r?.encoding);return s}function eg(e){const{legends:t,resolve:r}=e.component;for(const n of e.children){Ym(n);for(const a of A(n.component.legends)){r.legend[a]=Cm(e.component.resolve,a);if(r.legend[a]===\"shared\"){t[a]=tg(t[a],n.component.legends[a]);if(!t[a]){r.legend[a]=\"independent\";delete t[a]}}}}for(const i of A(t))for(const o of e.children){if(!o.component.legends[i])continue;if(r.legend[i]===\"shared\")delete o.component.legends[i]}return t}function tg(e,t){if(!e)return t.clone();const r=e.getWithExplicit(\"orient\");const n=t.getWithExplicit(\"orient\");if(r.explicit&&n.explicit&&r.value!==n.value)return undefined;let a=false;for(const i of km){const o=Op(e.getWithExplicit(i),t.getWithExplicit(i),i,\"legend\",(e,t)=>{switch(i){case\"symbolType\":return rg(e,t);case\"title\":return xn(e,t);case\"type\":a=true;return Ep(\"symbol\")}return Ap(e,t,i,\"legend\")});e.setWithExplicit(i,o)}if(a){if(e.implicit?.encode?.gradient)ke(e.implicit,[\"encode\",\"gradient\"]);if(e.explicit?.encode?.gradient)ke(e.explicit,[\"encode\",\"gradient\"])}return e}function rg(e,t){if(t.value===\"circle\")return t;return e}function ng(e,t,r,n){e.encode??={};e.encode[t]??={};e.encode[t].update??={};e.encode[t].update[r]=n}function ag(t){const e=t.component.legends;const r={};for(const a of A(e)){const i=t.getScaleComponent(a);const o=g(i.get(\"domains\"));if(r[o])for(const s of r[o]){const l=tg(s,e[a]);if(!l)r[o].push(e[a])}else r[o]=[e[a].clone()]}const n=C(r).flat().map(e=>ig(e,t.config)).filter(e=>e!==undefined);return n}function ig(e,t){const{disable:r,labelExpr:n,selections:a,...i}=e.combine();if(r)return undefined;if(t.aria===false&&i.aria==undefined)i.aria=false;if(i.encode?.symbols){const o=i.encode.symbols.update;if(o.fill&&o.fill[\"value\"]!==\"transparent\"&&!o.stroke&&!i.stroke)o.stroke={value:\"transparent\"};for(const s of pu)if(i[s])delete o[s]}if(!i.title)delete i.title;if(n!==undefined){let e=n;if(i.encode?.labels?.update&&x(i.encode.labels.update.text))e=De(n,\"datum.label\",i.encode.labels.update.text.signal);ng(i,\"labels\",\"text\",{signal:e})}return i}function og(e){if(v0(e)||T0(e))return sg(e);else return lg(e)}function sg(e){return e.children.reduce((e,t)=>{return e.concat(t.assembleProjections())},lg(e))}function lg(n){const e=n.component.projection;if(!e||e.merged)return[];const t=e.combine();const{name:r}=t;if(!e.data)return[{name:r,translate:{signal:\"[width / 2, height / 2]\"},...t}];else{const a={signal:`[${e.size.map(e=>e.signal).join(\", \")}]`};const i=e.data.reduce((e,t)=>{const r=x(t)?t.signal:`data('${n.lookupDataSource(t)}')`;if(!k(e,r))e.push(r);return e},[]);if(i.length<=0)throw new Error(\"Projection's fit didn't find any data sources\");return[{name:r,size:a,fit:{signal:i.length>1?`[${i.join(\", \")}]`:i[0]},...t}]}}const cg=[\"type\",\"clipAngle\",\"clipExtent\",\"center\",\"rotate\",\"precision\",\"reflectX\",\"reflectY\",\"coefficient\",\"distance\",\"fraction\",\"lobes\",\"parallel\",\"radius\",\"ratio\",\"spacing\",\"tilt\"];class ug extends vp{merged=false;constructor(e,t,r,n){super({...t},{name:e});this.specifiedProjection=t;this.size=r;this.data=n}get isFit(){return!!this.data}}function dg(e){e.component.projection=z(e)?pg(e):mg(e)}function pg(e){if(e.hasProjection){const t=_(e.specifiedProjection);const r=!(t&&(t.scale!=null||t.translate!=null));const n=r?[e.getSizeSignalRef(\"width\"),e.getSizeSignalRef(\"height\")]:undefined;const a=r?fg(e):undefined;const i=new ug(e.projectionName(true),{..._(e.config.projection),...t},n,a);if(!i.get(\"type\"))i.set(\"type\",\"equalEarth\",false);return i}return undefined}function fg(e){const t=[];const{encoding:r}=e;for(const n of[[at,nt],[ot,it]])if(H(r[n[0]])||H(r[n[1]]))t.push({signal:e.getName(`geojson_${t.length}`)});if(e.channelHasField(ut)&&e.typedFieldDef(ut).type===co)t.push({signal:e.getName(`geojson_${t.length}`)});if(t.length===0)t.push(e.requestDataName(G.Main));return t}function hg(t,r){const e=ge(cg,e=>{if(!te.hasOwnProperty(t.explicit,e)&&!te.hasOwnProperty(r.explicit,e))return true;if(te.hasOwnProperty(t.explicit,e)&&te.hasOwnProperty(r.explicit,e)&&ze(t.get(e),r.get(e)))return true;return false});const n=ze(t.size,r.size);if(n)if(e)return t;else if(ze(t.explicit,{}))return r;else if(ze(r.explicit,{}))return t;return null}function mg(e){if(e.children.length===0)return undefined;let n;for(const r of e.children)dg(r);const t=ge(e.children,e=>{const t=e.component.projection;if(!t)return true;else if(!n){n=t;return true}else{const r=hg(n,t);if(r)n=r;return!!r}});if(n&&t){const a=e.projectionName(true);const i=new ug(a,n.specifiedProjection,n.size,m(n.data));for(const o of e.children){const s=o.component.projection;if(s){if(s.isFit)i.data.push(...o.component.projection.data);o.renameProjection(s.get(\"name\"),a);s.merged=true}}return i}return undefined}function gg(e,t,r,n){if(rc(t,r)){const a=z(e)?e.axis(r)??e.legend(r)??{}:{};const i=j(t,{expr:\"datum\"});const o=j(t,{expr:\"datum\",binSuffix:\"end\"});return{formulaAs:j(t,{binSuffix:\"range\",forAs:true}),formula:Ys(i,o,a.format,a.formatType,n)}}return{}}function _g(e,t){return`${on(e)}_${t}`}function yg(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}function Tg(e,t,r){const n=Yl(r,undefined)??{};const a=_g(n,t);return e.getName(`${a}_bins`)}function vg(e){return\"as\"in e}function bg(e,t,r){let n;let a;if(vg(e))n=te.isString(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]];else n=[j(e,{forAs:true}),j(e,{binSuffix:\"end\",forAs:true})];const i={...Yl(t,undefined)};const o=_g(i,e.field);const{signal:s,extentSignal:l}=yg(r,o);if(ln(i.extent)){const u=i.extent;a=kh(r,u.param,u);delete i.extent}const c={bin:i,field:e.field,as:[n],...s?{signal:s}:{},...l?{extentSignal:l}:{},...a?{span:a}:{}};return{key:o,binComponent:c}}class Eg extends r{clone(){return new Eg(null,m(this.bins))}constructor(e,t){super(e);this.bins=t}static makeFromEncoding(e,i){const t=i.reduceFieldDef((e,t,r)=>{if(b(t)&&P(t.bin)){const{key:n,binComponent:a}=bg(t,t.bin,i);e[n]={...a,...e[n],...gg(i,t,r,i.config)}}return e},{});if(re(t))return null;return new Eg(e,t)}static makeFromTransform(e,t,r){const{key:n,binComponent:a}=bg(t,t.bin,r);return new Eg(e,{[n]:a})}merge(e,t){for(const r of A(e.bins))if(r in this.bins){t(e.bins[r].signal,this.bins[r].signal);this.bins[r].as=Te([...this.bins[r].as,...e.bins[r].as],S)}else this.bins[r]=e.bins[r];for(const n of e.children){e.removeChild(n);n.parent=this}e.remove()}producedFields(){return new Set(C(this.bins).map(e=>e.as).flat(2))}dependentFields(){return new Set(C(this.bins).map(e=>e.field))}hash(){return`Bin ${S(this.bins)}`}assemble(){return C(this.bins).flatMap(e=>{const t=[];const[r,...n]=e.as;const{extent:a,...i}=e.bin;const o={type:\"bin\",field:Pe(e.field),as:r,signal:e.signal,...!ln(a)?{extent:a}:{extent:null},...e.span?{span:{signal:`span(${e.span})`}}:{},...i};if(!a&&e.extentSignal){t.push({type:\"extent\",field:Pe(e.field),signal:e.extentSignal});o.extent={signal:e.extentSignal}}t.push(o);for(const s of n)for(let e=0;e<2;e++)t.push({type:\"formula\",expr:j({field:r[e]},{expr:\"datum\"}),as:s[e]});if(e.formula)t.push({type:\"formula\",expr:e.formula,as:e.formulaAs});return t})}}function Sg(e,t,r,n){const a=z(n)?n.encoding[Xt(t)]:undefined;if(b(r)&&z(n)&&pl(r,a,n.markDef,n.config)){e.add(j(r,{}));e.add(j(r,{suffix:\"end\"}));const{mark:i,markDef:o,config:s}=n;const l=ul({fieldDef:r,markDef:o,config:s});if(is(i)&&l!==.5&&M(t)){e.add(j(r,{suffix:Jp}));e.add(j(r,{suffix:Qp}))}if(r.bin&&rc(r,t))e.add(j(r,{binSuffix:\"range\"}))}else if(Nt(t)){const c=Rt(t);e.add(n.getName(c))}else e.add(j(r));if(Al(r)&&Io(r.scale?.range))e.add(r.scale.range.field);return e}function Ag(e,t){for(const r of A(t)){const n=t[r];for(const a of A(n))if(r in e)e[r][a]=new Set([...e[r][a]??[],...n[a]]);else e[r]={[a]:n[a]}}}class Og extends r{clone(){return new Og(null,new Set(this.dimensions),m(this.measures))}constructor(e,t,r){super(e);this.dimensions=t;this.measures=r}get groupBy(){return this.dimensions}static makeFromEncoding(e,o){let t=false;o.forEachFieldDef(e=>{if(e.aggregate)t=true});const s={};const l=new Set;if(!t)return null;o.forEachFieldDef((e,t)=>{const{aggregate:r,field:n}=e;if(r)if(r===\"count\"){s[\"*\"]??={};s[\"*\"][\"count\"]=new Set([j(e,{forAs:true})])}else{if(Qr(r)||Zr(r)){const a=Qr(r)?\"argmin\":\"argmax\";const i=r[a];s[i]??={};s[i][a]=new Set([j({op:a,field:i},{forAs:true})])}else{s[n]??={};s[n][r]=new Set([j(e,{forAs:true})])}if(Gr(t)&&o.scaleDomain(t)===\"unaggregated\"){s[n]??={};s[n][\"min\"]=new Set([j({field:n,aggregate:\"min\"},{forAs:true})]);s[n][\"max\"]=new Set([j({field:n,aggregate:\"max\"},{forAs:true})])}}else Sg(l,t,e,o)});if(l.size+A(s).length===0)return null;return new Og(e,l,s)}static makeFromTransform(e,t){const r=new Set;const n={};for(const a of t.aggregate){const{op:i,field:o,as:s}=a;if(i)if(i===\"count\"){n[\"*\"]??={};n[\"*\"][\"count\"]=new Set([s?s:j(a,{forAs:true})])}else{n[o]??={};n[o][i]=new Set([s?s:j(a,{forAs:true})])}}for(const l of t.groupby??[])r.add(l);if(r.size+A(n).length===0)return null;return new Og(e,r,n)}merge(e){if(be(this.dimensions,e.dimensions)){Ag(this.measures,e.measures);return true}ci(\"different dimensions, cannot merge\");return false}addDimensions(e){e.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...A(this.measures)])}producedFields(){const e=new Set;for(const t of A(this.measures))for(const r of A(this.measures[t])){const n=this.measures[t][r];if(n.size===0)e.add(`${r}_${t}`);else n.forEach(e.add,e)}return e}hash(){return`Aggregate ${S({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const e=[];const t=[];const r=[];for(const a of A(this.measures))for(const i of A(this.measures[a]))for(const o of this.measures[a][i]){r.push(o);e.push(i);t.push(a===\"*\"?null:Pe(a))}const n={type:\"aggregate\",groupby:[...this.dimensions].map(Pe),ops:e,fields:t,as:r};return n}}class Cg extends r{constructor(e,t,r,n){super(e);this.model=t;this.name=r;this.data=n;for(const a of Lt){const i=t.facet[a];if(i){const{bin:o,sort:s}=i;this[a]={name:t.getName(`${a}_domain`),fields:[j(i),...P(o)?[j(i,{binSuffix:\"end\"})]:[]],...tl(s)?{sortField:s}:te.isArray(s)?{sortIndexField:rm(i,a)}:{}}}}this.childModel=t.child}hash(){let e=`Facet`;for(const t of Lt)if(this[t])e+=` ${t.charAt(0)}:${S(this[t])}`;return e}get fields(){const e=[];for(const t of Lt)if(this[t]?.fields)e.push(...this[t].fields);return e}dependentFields(){const e=new Set(this.fields);for(const t of Lt)if(this[t]){if(this[t].sortField)e.add(this[t].sortField.field);if(this[t].sortIndexField)e.add(this[t].sortIndexField)}return e}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const e={};for(const t of Er){const r=this.childModel.component.scales[t];if(r&&!r.merged){const n=r.get(\"type\");const a=r.get(\"range\");if(U(n)&&fn(a)){const i=I_(this.childModel,t);const o=k_(i);if(o)e[t]=o;else ae(Hn(t))}}}return e}assembleRowColumnHeaderData(e,t,r){const n={row:\"y\",column:\"x\",facet:undefined}[e];const a=[];const i=[];const o=[];if(n&&r&&r[n]){if(t){a.push(`distinct_${r[n]}`);i.push(\"max\")}else{a.push(r[n]);i.push(\"distinct\")}o.push(`distinct_${r[n]}`)}const{sortField:s,sortIndexField:l}=this[e];if(s){const{op:c=Qs,field:u}=s;a.push(u);i.push(c);o.push(j(s,{forAs:true}))}else if(l){a.push(l);i.push(\"max\");o.push(l)}return{name:this[e].name,source:t??this.data,transform:[{type:\"aggregate\",groupby:this[e].fields,...a.length?{fields:a,ops:i,as:o}:{}}]}}assembleFacetHeaderData(e){const{columns:t}=this.model.layout;const{layoutHeaders:r}=this.model.component;const n=[];const a={};for(const s of om){for(const l of sm){const c=(r[s]&&r[s][l])??[];for(const u of c)if(u.axes?.length>0){a[s]=true;break}}if(a[s]){const d=`length(data(\"${this.facet.name}\"))`;const p=s===\"row\"?t?{signal:`ceil(${d} / ${t})`}:1:t?{signal:`min(${d}, ${t})`}:{signal:d};n.push({name:`${this.facet.name}_${s}`,transform:[{type:\"sequence\",start:0,stop:p}]})}}const{row:i,column:o}=a;if(i||o)n.unshift(this.assembleRowColumnHeaderData(\"facet\",null,e));return n}assemble(){const e=[];let t=null;const r=this.getChildIndependentFieldsWithStep();const{column:n,row:a,facet:i}=this;if(n&&a&&(r.x||r.y)){t=`cross_${this.column.name}_${this.row.name}`;const o=[].concat(r.x??[],r.y??[]);const s=o.map(()=>\"distinct\");e.push({name:t,source:this.data,transform:[{type:\"aggregate\",groupby:this.fields,fields:o,ops:s}]})}for(const l of[$e,We])if(this[l])e.push(this.assembleRowColumnHeaderData(l,t,r));if(i){const c=this.assembleFacetHeaderData(r);if(c)e.push(...c)}return e}}function wg(e){if(e.startsWith(\"'\")&&e.endsWith(\"'\")||e.startsWith('\"')&&e.endsWith('\"'))return e.slice(1,-1);return e}function kg(e,t){const r=Re(e);if(t===\"number\")return`toNumber(${r})`;else if(t===\"boolean\")return`toBoolean(${r})`;else if(t===\"string\")return`toString(${r})`;else if(t===\"date\")return`toDate(${r})`;else if(t===\"flatten\")return r;else if(t.startsWith(\"date:\")){const n=wg(t.slice(5,t.length));return`timeParse(${r},'${n}')`}else if(t.startsWith(\"utc:\")){const a=wg(t.slice(4,t.length));return`utcParse(${r},'${a}')`}else{ae(na(t));return null}}function Ig(e){const r={};ce(e.filter,t=>{if(Ji(t)){let e=null;if(Gi(t))e=En(t.equal);else if(qi(t))e=En(t.lte);else if(Vi(t))e=En(t.lt);else if(zi(t))e=En(t.gt);else if(Wi(t))e=En(t.gte);else if($i(t))e=t.range[0];else if(Ki(t))e=(t.oneOf??t[\"in\"])[0];if(e)if(ui(e))r[t.field]=\"date\";else if(te.isNumber(e))r[t.field]=\"number\";else if(te.isString(e))r[t.field]=\"string\";if(t.timeUnit)r[t.field]=\"date\"}});return r}function Rg(a){const t={};function i(e){if(Zl(e))t[e.field]=\"date\";else if(e.type===\"quantitative\"&&rn(e.aggregate))t[e.field]=\"number\";else if(Le(e.field)>1){if(!(e.field in t))t[e.field]=\"flatten\"}else if(Al(e)&&tl(e.sort)&&Le(e.sort.field)>1)if(!(e.sort.field in t))t[e.sort.field]=\"flatten\"}if(z(a)||y0(a))a.forEachFieldDef((e,t)=>{if(b(e))i(e);else{const r=Qt(t);const n=a.fieldDef(r);i({...e,type:n.type})}});if(z(a)){const{mark:e,markDef:r,encoding:n}=a;if(as(e)&&!a.encoding.order){const o=r.orient===\"horizontal\"?\"y\":\"x\";const s=n[o];if(B(s)&&s.type===\"quantitative\"&&!(s.field in t))t[s.field]=\"number\"}}return t}function Ng(e){const t={};if(z(e)&&e.component.selection)for(const r of A(e.component.selection)){const n=e.component.selection[r];for(const a of n.project.items)if(!a.channel&&Le(a.field)>1)t[a.field]=\"flatten\"}return t}class Mg extends r{clone(){return new Mg(null,m(this._parse))}constructor(e,t){super(e);this._parse=t}hash(){return`Parse ${S(this._parse)}`}static makeExplicit(e,t,r){let n={};const a=t.data;if(!Rp(a)&&a?.format?.parse)n=a.format.parse;return this.makeWithAncestors(e,n,{},r)}static makeWithAncestors(e,t,r,n){for(const o of A(r)){const s=n.getWithExplicit(o);if(s.value!==undefined)if(s.explicit||s.value===r[o]||s.value===\"derived\"||r[o]===\"flatten\")delete r[o];else ae(aa(o,r[o],s.value))}for(const l of A(t)){const c=n.get(l);if(c!==undefined)if(c===t[l])delete t[l];else ae(aa(l,t[l],c))}const a=new vp(t,r);n.copyAll(a);const i={};for(const u of A(a.combine())){const d=a.get(u);if(d!==null)i[u]=d}if(A(i).length===0||n.parseNothing)return null;return new Mg(e,i)}get parse(){return this._parse}merge(e){this._parse={...this._parse,...e.parse};e.remove()}assembleFormatParse(){const e={};for(const t of A(this._parse)){const r=this._parse[t];if(Le(t)===1)e[t]=r}return e}producedFields(){return new Set(A(this._parse))}dependentFields(){return new Set(A(this._parse))}assembleTransforms(){let t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;return A(this._parse).filter(e=>t?Le(e)>1:true).map(e=>{const t=kg(e,this._parse[e]);if(!t)return null;const r={type:\"formula\",expr:t,as:xe(e)};return r}).filter(e=>e!==null)}}class Pg extends r{clone(){return new Pg(null)}constructor(e){super(e)}dependentFields(){return new Set}producedFields(){return new Set([mu])}hash(){return\"Identifier\"}assemble(){return{type:\"identifier\",as:mu}}}class Dg extends r{clone(){return new Dg(null,this.params)}constructor(e,t){super(e);this.params=t}dependentFields(){return new Set}producedFields(){return undefined}hash(){return`Graticule ${S(this.params)}`}assemble(){return{type:\"graticule\",...this.params===true?{}:this.params}}}class xg extends r{clone(){return new xg(null,this.params)}constructor(e,t){super(e);this.params=t}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??\"data\"])}hash(){return`Hash ${S(this.params)}`}assemble(){return{type:\"sequence\",...this.params}}}class Lg extends r{constructor(t){super(null);t??={name:\"source\"};let r;if(!Rp(t))r=t.format?{...fe(t.format,[\"parse\"])}:{};if(kp(t))this._data={values:t.values};else if(wp(t)){this._data={url:t.url};if(!r.type){let e=/(?:\\.([^.]+))?$/.exec(t.url)[1];if(!k([\"json\",\"csv\",\"tsv\",\"dsv\",\"topojson\"],e))e=\"json\";r.type=e}}else if(Mp(t))this._data={values:[{type:\"Sphere\"}]};else if(Ip(t)||Rp(t))this._data={};this._generator=Rp(t);if(t.name)this._name=t.name;if(r&&!re(r))this._data.format=r}dependentFields(){return new Set}producedFields(){return undefined}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(e){this._name=e}set parent(e){throw new Error(\"Source nodes have to be roots.\")}remove(){throw new Error(\"Source nodes are roots and cannot be removed.\")}hash(){throw new Error(\"Cannot hash sources\")}assemble(){return{name:this._name,...this._data,transform:[]}}}function Fg(e){return e instanceof Lg||e instanceof Dg||e instanceof xg}class Ug{#modified;constructor(){this.#modified=false}setModified(){this.#modified=true}get modifiedFlag(){return this.#modified}}class Bg extends Ug{getNodeDepths(e,t,r){r.set(e,t);for(const n of e.children)this.getNodeDepths(n,t+1,r);return r}optimize(e){const t=this.getNodeDepths(e,0,new Map);const r=[...t.entries()].sort((e,t)=>t[1]-e[1]);for(const n of r)this.run(n[0]);return this.modifiedFlag}}class jg extends Ug{optimize(e){this.run(e);for(const t of e.children)this.optimize(t);return this.modifiedFlag}}class Hg extends jg{mergeNodes(e,t){const r=t.shift();for(const n of t){e.removeChild(n);n.parent=r;n.remove()}}run(t){const r=t.children.map(e=>e.hash());const n={};for(let e=0;e<r.length;e++)if(n[r[e]]===undefined)n[r[e]]=[t.children[e]];else n[r[e]].push(t.children[e]);for(const e of A(n))if(n[e].length>1){this.setModified();this.mergeNodes(t,n[e])}}}class Gg extends jg{constructor(e){super();this.requiresSelectionId=e&&vh(e)}run(e){if(e instanceof Pg)if(!(this.requiresSelectionId&&(Fg(e.parent)||e.parent instanceof Og||e.parent instanceof Mg))){this.setModified();e.remove()}}}class Vg extends Ug{optimize(e){this.run(e,new Set);return this.modifiedFlag}run(e,t){let r=new Set;if(e instanceof Yp){r=e.producedFields();if(Ee(r,t)){this.setModified();e.removeFormulas(t);if(e.producedFields.length===0)e.remove()}}for(const n of e.children)this.run(n,new Set([...t,...r]))}}class qg extends jg{constructor(){super()}run(e){if(e instanceof Wp&&!e.isRequired()){this.setModified();e.remove()}}}class zg extends Bg{run(e){if(Fg(e))return;if(e.numChildren()>1)return;for(const t of e.children)if(t instanceof Mg)if(e instanceof Mg){this.setModified();e.merge(t)}else{if(Ae(e.producedFields(),t.dependentFields()))continue;this.setModified();t.swapWithParent()}return}}class Wg extends Bg{run(e){const t=[...e.children];const r=e.children.filter(e=>e instanceof Mg);if(e.numChildren()>1&&r.length>=1){const n={};const a=new Set;for(const i of r){const o=i.parse;for(const s of A(o))if(!(s in n))n[s]=o[s];else if(n[s]!==o[s])a.add(s)}for(const l of a)delete n[l];if(!re(n)){this.setModified();const c=new Mg(e,n);for(const u of t){if(u instanceof Mg)for(const d of A(n))delete u.parse[d];e.removeChild(u);u.parent=c;if(u instanceof Mg&&A(u.parse).length===0)u.remove()}}}}}class $g extends Bg{run(e){if(e instanceof Wp||e.numChildren()>0||e instanceof Cg);else if(e instanceof Lg);else{this.setModified();e.remove()}}}class Kg extends Bg{run(e){const t=e.children.filter(e=>e instanceof Yp);const r=t.pop();for(const n of t){this.setModified();r.merge(n)}}}class Yg extends Bg{run(e){const t=e.children.filter(e=>e instanceof Og);const r={};for(const n of t){const a=S(n.groupBy);if(!(a in r))r[a]=[];r[a].push(n)}for(const i of A(r)){const o=r[i];if(o.length>1){const s=o.pop();for(const l of o)if(s.merge(l)){e.removeChild(l);l.parent=s;l.remove();this.setModified()}}}}}class Jg extends Bg{constructor(e){super();this.model=e}run(e){const t=!(Fg(e)||e instanceof Oh||e instanceof Mg||e instanceof Pg);const r=[];const n=[];for(const a of e.children)if(a instanceof Eg)if(t&&!Ae(e.producedFields(),a.dependentFields()))r.push(a);else n.push(a);if(r.length>0){const i=r.pop();for(const o of r)i.merge(o,this.model.renameSignal.bind(this.model));this.setModified();if(e instanceof Eg)e.merge(i,this.model.renameSignal.bind(this.model));else i.swapWithParent()}if(n.length>1){const s=n.pop();for(const l of n)s.merge(l,this.model.renameSignal.bind(this.model));this.setModified()}}}class Qg extends Bg{run(t){const e=[...t.children];const r=me(e,e=>e instanceof Wp);if(!r||t.numChildren()<=1)return;const n=[];let a;for(const i of e)if(i instanceof Wp){let e=i;while(e.numChildren()===1){const[o]=e.children;if(o instanceof Wp)e=o;else break}n.push(...e.children);if(a){t.removeChild(i);i.parent=a.parent;a.parent.removeChild(a);a.parent=e;this.setModified()}else a=e}else n.push(i);if(n.length){this.setModified();for(const s of n){s.parent.removeChild(s);s.parent=a}}}}class Zg extends r{clone(){return new Zg(null,m(this.transform))}constructor(e,t){super(e);this.transform=t}addDimensions(e){this.transform.groupby=Te(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;if(this.transform.groupby)this.transform.groupby.forEach(e.add,e);this.transform.joinaggregate.map(e=>e.field).filter(e=>e!==undefined).forEach(e.add,e);return e}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(e){return e.as??j(e)}hash(){return`JoinAggregateTransform ${S(this.transform)}`}assemble(){const e=[];const t=[];const r=[];for(const a of this.transform.joinaggregate){t.push(a.op);r.push(this.getDefaultName(a));e.push(a.field===undefined?null:a.field)}const n=this.transform.groupby;return{type:\"joinaggregate\",as:r,ops:t,fields:e,...n!==undefined?{groupby:n}:{}}}}class Xg extends r{clone(){return new Xg(null,{...this.filter})}constructor(e,t){super(e);this.filter=t}static make(e,s,t){const{config:l,markDef:c}=s;const{marks:r,scales:n}=t;if(r===\"include-invalid-values\"&&n===\"include-invalid-values\")return null;const a=s.reduceFieldDef((e,t,r)=>{const n=Gr(r)&&s.getScaleComponent(r);if(n){const a=n.get(\"type\");const{aggregate:i}=t;const o=Os({scaleChannel:r,markDef:c,config:l,scaleType:a,isCountAggregate:tn(i)});if(o!==\"show\"&&o!==\"always-valid\")e[t.field]=t}return e},{});if(!A(a).length)return null;return new Xg(e,a)}dependentFields(){return new Set(A(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${S(this.filter)}`}assemble(){const e=A(this.filter).reduce((e,t)=>{const r=this.filter[t];const n=j(r,{expr:\"datum\"});if(r!==null)if(r.type===\"temporal\")e.push(`(isDate(${n}) || (${e_(n)}))`);else if(r.type===\"quantitative\")e.push(e_(n));else;return e},[]);return e.length>0?{type:\"filter\",expr:e.join(\" && \")}:null}}function e_(e){return`isValid(${e}) && isFinite(+${e})`}function t_(e){return e.stack.stackBy.reduce((e,t)=>{const r=t.fieldDef;const n=j(r);if(n)e.push(n);return e},[])}function r_(e){return te.isArray(e)&&e.every(e=>te.isString(e))&&e.length>1}class n_ extends r{clone(){return new n_(null,m(this._stack))}constructor(e,t){super(e);this._stack=t}static makeFromTransform(e,t){const{stack:r,groupby:n,as:a,offset:i=\"zero\"}=t;const o=[];const s=[];if(t.sort!==undefined)for(const u of t.sort){o.push(u.field);s.push(I(u.order,\"ascending\"))}const l={field:o,order:s};let c;if(r_(a))c=a;else if(te.isString(a))c=[a,`${a}_end`];else c=[`${t.stack}_start`,`${t.stack}_end`];return new n_(e,{dimensionFieldDefs:[],stackField:r,groupby:n,offset:i,sort:l,facetby:[],as:c})}static makeFromEncoding(e,t){const r=t.stack;const{encoding:n}=t;if(!r)return null;const{groupbyChannels:a,fieldChannel:i,offset:o,impute:s}=r;const l=a.map(e=>{const t=n[e];return ql(t)}).filter(e=>!!e);const c=t_(t);const u=t.encoding.order;let d;if(te.isArray(u)||B(u))d=Mn(u);else{const p=fl(u)?u.sort:i===\"y\"?\"descending\":\"ascending\";d=c.reduce((e,t)=>{if(!e.field.includes(t)){e.field.push(t);e.order.push(p)}return e},{field:[],order:[]})}return new n_(e,{dimensionFieldDefs:l,stackField:t.vgField(i),facetby:[],stackby:c,sort:d,offset:o,impute:s,as:[t.vgField(i,{suffix:\"start\",forAs:true}),t.vgField(i,{suffix:\"end\",forAs:true})]})}get stack(){return this._stack}addDimensions(e){this._stack.facetby.push(...e)}dependentFields(){const e=new Set;e.add(this._stack.stackField);this.getGroupbyFields().forEach(e.add,e);this._stack.facetby.forEach(e.add,e);this._stack.sort.field.forEach(e.add,e);return e}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${S(this._stack)}`}getGroupbyFields(){const{dimensionFieldDefs:e,impute:t,groupby:r}=this._stack;if(e.length>0)return e.map(e=>{if(e.bin){if(t)return[j(e,{binSuffix:\"mid\"})];return[j(e,{}),j(e,{binSuffix:\"end\"})]}return[j(e)]}).flat();return r??[]}assemble(){const e=[];const{facetby:t,dimensionFieldDefs:r,stackField:n,stackby:a,sort:i,offset:o,impute:s,as:l}=this._stack;if(s)for(const c of r){const{bandPosition:u=.5,bin:d}=c;if(d){const p=j(c,{expr:\"datum\"});const f=j(c,{expr:\"datum\",binSuffix:\"end\"});e.push({type:\"formula\",expr:`${e_(p)} ? ${u}*${p}+${1-u}*${f} : ${p}`,as:j(c,{binSuffix:\"mid\",forAs:true})})}e.push({type:\"impute\",field:n,groupby:[...a,...t],key:j(c,{binSuffix:\"mid\"}),method:\"value\",value:0})}e.push({type:\"stack\",groupby:[...this.getGroupbyFields(),...t],field:n,sort:i,as:l,offset:o});return e}}class a_ extends r{clone(){return new a_(null,m(this.transform))}constructor(e,t){super(e);this.transform=t}addDimensions(e){this.transform.groupby=Te(this.transform.groupby.concat(e),e=>e)}dependentFields(){const t=new Set;(this.transform.groupby??[]).forEach(t.add,t);(this.transform.sort??[]).forEach(e=>t.add(e.field));this.transform.window.map(e=>e.field).filter(e=>e!==undefined).forEach(t.add,t);return t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(e){return e.as??j(e)}hash(){return`WindowTransform ${S(this.transform)}`}assemble(){const e=[];const t=[];const r=[];const n=[];for(const u of this.transform.window){t.push(u.op);r.push(this.getDefaultName(u));n.push(u.param===undefined?null:u.param);e.push(u.field===undefined?null:u.field)}const a=this.transform.frame;const i=this.transform.groupby;if(a&&a[0]===null&&a[1]===null&&t.every(e=>Xr(e)))return{type:\"joinaggregate\",as:r,ops:t,fields:e,...i!==undefined?{groupby:i}:{}};const o=[];const s=[];if(this.transform.sort!==undefined)for(const d of this.transform.sort){o.push(d.field);s.push(d.order??\"ascending\")}const l={field:o,order:s};const c=this.transform.ignorePeers;return{type:\"window\",params:n,as:r,ops:t,fields:e,sort:l,...c!==undefined?{ignorePeers:c}:{},...i!==undefined?{groupby:i}:{},...a!==undefined?{frame:a}:{}}}}function i_(a){function i(e){if(!(e instanceof Cg)){const t=e.clone();if(t instanceof Wp){const r=l_+t.getSource();t.setSource(r);a.model.component.data.outputNodes[r]=t}else if(t instanceof Og||t instanceof n_||t instanceof a_||t instanceof Zg)t.addDimensions(a.fields);for(const n of e.children.flatMap(i))n.parent=t;return[t]}return e.children.flatMap(i)}return i}function o_(e){if(e instanceof Cg)if(e.numChildren()===1&&!(e.children[0]instanceof Wp)){const t=e.children[0];if(t instanceof Og||t instanceof n_||t instanceof a_||t instanceof Zg)t.addDimensions(e.fields);t.swapWithParent();o_(e)}else{const r=e.model.component.data.main;s_(r);const n=i_(e);const a=e.children.map(n).flat();for(const i of a)i.parent=r}else e.children.map(o_)}function s_(e){if(e instanceof Wp&&e.type===G.Main)if(e.numChildren()===1){const t=e.children[0];if(!(t instanceof Cg)){t.swapWithParent();s_(e)}}}const l_=\"scale_\",c_=5;function u_(e){for(const t of e){for(const r of t.children)if(r.parent!==t)return false;if(!u_(t.children))return false}return true}function d_(e,t){let r=false;for(const n of t)r=e.optimize(n)||r;return r}function p_(e,t,r){let n=e.sources;let a=false;a=d_(new qg,n)||a;a=d_(new Gg(t),n)||a;n=n.filter(e=>e.numChildren()>0);a=d_(new $g,n)||a;n=n.filter(e=>e.numChildren()>0);if(!r){a=d_(new zg,n)||a;a=d_(new Jg(t),n)||a;a=d_(new Vg,n)||a;a=d_(new Wg,n)||a;a=d_(new Yg,n)||a;a=d_(new Kg,n)||a;a=d_(new Hg,n)||a;a=d_(new Qg,n)||a}e.sources=n;return a}function f_(t,r){u_(t.sources);let n=0;let a=0;for(let e=0;e<c_;e++){if(!p_(t,r,true))break;n++}t.sources.map(o_);for(let e=0;e<c_;e++){if(!p_(t,r,false))break;a++}u_(t.sources);if(Math.max(n,a)===c_)ae(`Maximum optimization runs(${c_}) reached.`)}class q{constructor(e){Object.defineProperty(this,\"signal\",{enumerable:true,get:e})}static fromName(e,t){return new q(()=>e(t))}}function h_(e){if(z(e))m_(e);else g_(e)}function m_(t){const e=t.component.scales;for(const r of A(e)){const n=y_(t,r);const a=e[r];a.setWithExplicit(\"domains\",n);S_(t,r);if(t.component.data.isFaceted){let e=t;while(!y0(e)&&e.parent)e=e.parent;const i=e.component.resolve.scale[r];if(i===\"shared\")for(const o of n.value)if(gn(o))o.data=l_+o.data.replace(l_,\"\")}}}function g_(r){for(const e of r.children)h_(e);const n=r.component.scales;for(const a of A(n)){let e;let t=null;for(const i of r.children){const o=i.component.scales[a];if(o){if(e===undefined)e=o.getWithExplicit(\"domains\");else e=Op(e,o.getWithExplicit(\"domains\"),\"domains\",\"scale\",C_);const s=o.get(\"selectionExtent\");if(t&&s&&t.param!==s.param)ae(Zn);t=s}}n[a].setWithExplicit(\"domains\",e);if(t)n[a].set(\"selectionExtent\",t,true)}}function __(e,t,r,n){if(e===\"unaggregated\"){const{valid:a,reason:i}=O_(t,r);if(!a){ae(i);return undefined}}else if(e===undefined&&n.useUnaggregatedDomain){const{valid:o}=O_(t,r);if(o)return\"unaggregated\"}return e}function y_(e,t){const r=e.getScaleComponent(t).get(\"type\");const{encoding:n}=e;const a=__(e.scaleDomain(t),e.typedFieldDef(t),r,e.config.scale);if(a!==e.scaleDomain(t))e.specifiedScales[t]={...e.specifiedScales[t],domain:a};if(t===\"x\"&&H(n.x2))if(H(n.x))return Op(b_(r,a,e,\"x\"),b_(r,a,e,\"x2\"),\"domain\",\"scale\",C_);else return b_(r,a,e,\"x2\");else if(t===\"y\"&&H(n.y2))if(H(n.y))return Op(b_(r,a,e,\"y\"),b_(r,a,e,\"y2\"),\"domain\",\"scale\",C_);else return b_(r,a,e,\"y2\");return b_(r,a,e,t)}function T_(e,r,n){return e.map(e=>{const t=ec(e,{timeUnit:n,type:r});return{signal:`{data: ${t}}`}})}function v_(e,t,r){const n=F(r)?.unit;if(t===\"temporal\"||n)return T_(e,t,n);return[e]}function b_(e,t,r,n){const{encoding:a,markDef:i,mark:o,config:s,stack:l}=r;const c=H(a[n]);const{type:u}=c;const d=c[\"timeUnit\"];const p=xp({invalid:In(\"invalid\",i,s),isPath:as(o)});if(ko(t)){const m=b_(e,undefined,r,n);const g=v_(t.unionWith,u,d);return bp([...g,...m.value])}else if(x(t))return bp([t]);else if(t&&t!==\"unaggregated\"&&!wo(t))return bp(v_(t,u,d));if(l&&n===l.fieldChannel){if(l.offset===\"normalize\")return Ep([[0,1]]);const _=r.requestDataName(p);return Ep([{data:_,field:r.vgField(n,{suffix:\"start\"})},{data:_,field:r.vgField(n,{suffix:\"end\"})}])}const f=Gr(n)&&B(c)?A_(r,n,e):undefined;if(Tl(c)){const y=v_([c.datum],u,d);return Ep(y)}const h=c;if(t===\"unaggregated\"){const{field:T}=c;return Ep([{data:r.requestDataName(p),field:j({field:T,aggregate:\"min\"})},{data:r.requestDataName(p),field:j({field:T,aggregate:\"max\"})}])}else if(P(h.bin))if(U(e)){if(e===\"bin-ordinal\")return Ep([]);return Ep([{data:Ce(f)?r.requestDataName(p):r.requestDataName(G.Raw),field:r.vgField(n,rc(h,n)?{binSuffix:\"range\"}:{}),sort:f===true||!te.isObject(f)?{field:r.vgField(n,{}),op:\"min\"}:f}])}else{const{bin:v}=h;if(P(v)){const b=Tg(r,h.field,v);return Ep([new q(()=>{const e=r.getSignalName(b);return`[${e}.start, ${e}.stop]`})])}else return Ep([{data:r.requestDataName(p),field:r.vgField(n,{})}])}else if(h.timeUnit&&k([\"time\",\"utc\"],e)){const E=a[Xt(n)];if(pl(h,E,i,s)){const S=r.requestDataName(p);const A=ul({fieldDef:h,fieldDef2:E,markDef:i,config:s});const O=is(o)&&A!==.5&&M(n);return Ep([{data:S,field:r.vgField(n,O?{suffix:Jp}:{})},{data:S,field:r.vgField(n,{suffix:O?Qp:\"end\"})}])}}if(f)return Ep([{data:Ce(f)?r.requestDataName(p):r.requestDataName(G.Raw),field:r.vgField(n),sort:f}]);else return Ep([{data:r.requestDataName(p),field:r.vgField(n)}])}function E_(e,t){const{op:r,field:n,order:a}=e;return{op:r??(t?\"sum\":Qs),...n?{field:Pe(n)}:{},...a?{order:a}:{}}}function S_(e,t){const r=e.component.scales[t];const n=e.specifiedScales[t].domain;const a=e.fieldDef(t)?.bin;const i=wo(n)&&n;const o=sn(a)&&ln(a.extent)&&a.extent;if(i||o)r.set(\"selectionExtent\",i??o,true)}function A_(e,t,r){if(!U(r))return undefined;const n=e.fieldDef(t);const a=n.sort;if(rl(a))return{op:\"min\",field:rm(n,t),order:\"ascending\"};const{stack:i}=e;const o=i?new Set([...i.groupbyFields,...i.stackBy.map(e=>e.fieldDef.field)]):undefined;if(tl(a)){const s=i&&!o.has(a.field);return E_(a,s)}else if(el(a)){const{encoding:l,order:c}=a;const u=e.fieldDef(l);const{aggregate:d,field:p}=u;const f=i&&!o.has(p);if(Qr(d)||Zr(d))return E_({field:j(u),order:c},f);else if(Xr(d)||!d)return E_({op:d,field:p,order:c},f)}else if(a===\"descending\")return{op:\"min\",field:e.vgField(t),order:\"descending\"};else if(k([\"ascending\",undefined],a))return true;return undefined}function O_(e,t){const{aggregate:r,type:n}=e;if(!r)return{valid:false,reason:Na(e)};if(te.isString(r)&&!an.has(r))return{valid:false,reason:Ma(r)};if(n===\"quantitative\")if(t===\"log\")return{valid:false,reason:Pa(e)};return{valid:true}}function C_(e,t,r,n){if(e.explicit&&t.explicit)ae(ja(r,n,e.value,t.value));return{explicit:e.explicit,value:[...e.value,...t.value]}}function w_(e){const t=Te(e.map(e=>{if(gn(e)){const{sort:t,...r}=e;return r}return e}),S);const r=Te(e.map(e=>{if(gn(e)){const t=e.sort;if(t!==undefined&&!Ce(t)){if(\"op\"in t&&t.op===\"count\")delete t.field;if(t.order===\"ascending\")delete t.order}return t}return undefined}).filter(e=>e!==undefined),S);if(t.length===0)return undefined;else if(t.length===1){const o=e[0];if(gn(o)&&r.length>0){let e=r[0];if(r.length>1){ae(Va);const s=r.filter(e=>te.isObject(e)&&\"op\"in e&&e.op!==\"min\");if(r.every(e=>te.isObject(e)&&\"op\"in e)&&s.length===1)e=s[0];else e=true}else if(te.isObject(e)&&\"field\"in e){const l=e.field;if(o.field===l)e=e.order?{order:e.order}:true}return{...o,sort:e}}return o}const n=Te(r.map(e=>{if(Ce(e)||!(\"op\"in e)||te.isString(e.op)&&e.op in Jr)return e;ae(Ga(e));return true}),S);let a;if(n.length===1)a=n[0];else if(n.length>1){ae(Va);a=true}const i=Te(e.map(e=>{if(gn(e))return e.data;return null}),e=>e);if(i.length===1&&i[0]!==null){const c={data:i[0],fields:t.map(e=>e.field),...a?{sort:a}:{}};return c}return{fields:t,...a?{sort:a}:{}}}function k_(t){if(gn(t)&&te.isString(t.field))return t.field;else if(hn(t)){let e;for(const r of t.fields)if(gn(r)&&te.isString(r.field))if(!e)e=r.field;else if(e!==r.field){ae(qa);return e}ae(za);return e}else if(mn(t)){ae(Wa);const e=t.fields[0];return te.isString(e)?e:undefined}return undefined}function I_(t,e){const r=t.component.scales[e];const n=r.get(\"domains\").map(e=>{if(gn(e))e.data=t.lookupDataSource(e.data);return e});return w_(n)}function R_(e){if(v0(e)||T0(e))return e.children.reduce((e,t)=>{return e.concat(R_(t))},N_(e));else return N_(e)}function N_(h){return A(h.component.scales).reduce((e,t)=>{const r=h.component.scales[t];if(r.merged)return e;const n=r.combine();const{name:a,type:i,selectionExtent:o,domains:s,range:l,reverse:c,...u}=n;const d=M_(n.range,a,t,h);const p=I_(h,t);const f=o?qp(h,o,r,p):null;e.push({name:a,type:i,...p?{domain:p}:{},...f?{domainRaw:f}:{},range:d,...c!==undefined?{reverse:c}:{},...u});return e},[])}function M_(e,t,r,n){if(M(r)){if(fn(e))return{step:{signal:`${t}_step`}}}else if(te.isObject(e)&&gn(e))return{...e,data:n.lookupDataSource(e.data)};return e}class P_ extends vp{merged=false;constructor(e,t){super({},{name:e});this.setWithExplicit(\"type\",t)}domainHasZero(){const e=this.get(\"type\");if(k([y.LOG,y.TIME,y.UTC],e))return\"definitely-not\";const t=this.get(\"zero\");if(t===true||t===undefined&&k([y.LINEAR,y.SQRT,y.POW],e))return\"definitely\";const n=this.get(\"domains\");if(n.length>0){let e=false;let t=false;let r=false;for(const a of n){if(te.isArray(a)){const i=a[0];const o=a[a.length-1];if(te.isNumber(i)&&te.isNumber(o))if(i<=0&&o>=0){e=true;continue}else{t=true;continue}}r=true}if(e)return\"definitely\";else if(t&&!r)return\"definitely-not\"}return\"maybe\"}}const D_=[\"range\",\"scheme\"];function x_(e){const t=e.component.scales;for(const r of Hr){const n=t[r];if(!n)continue;const a=F_(r,e);n.setWithExplicit(\"range\",a)}}function L_(r,n){const e=r.fieldDef(n);if(e?.bin){const{bin:a,field:t}=e;const i=er(n);const o=r.getName(i);if(te.isObject(a)&&a.binned&&a.step!==undefined)return new q(()=>{const e=r.scaleName(n);const t=`(domain(\"${e}\")[1] - domain(\"${e}\")[0]) / ${a.step}`;return`${r.getSignalName(o)} / (${t})`});else if(P(a)){const s=Tg(r,t,a);return new q(()=>{const e=r.getSignalName(s);const t=`(${e}.stop - ${e}.start) / ${e}.step`;return`${r.getSignalName(o)} / (${t})`})}}return undefined}function F_(e,n){const t=n.specifiedScales[e];const{size:r}=n;const a=n.getScaleComponent(e);const i=a.get(\"type\");for(const d of D_)if(t[d]!==undefined){const p=Bo(i,d);const f=jo(e,d);if(!p)ae(Fa(i,d,e));else if(f)ae(f);else switch(d){case\"range\":{const h=t.range;if(te.isArray(h)){if(M(e))return bp(h.map(e=>{if(e===\"width\"||e===\"height\"){const t=n.getName(e);const r=n.getSignalName.bind(n);return q.fromName(r,t)}return e}))}else if(te.isObject(h))return bp({data:n.requestDataName(G.Main),field:h.field,sort:{op:\"min\",field:n.vgField(e)}});return bp(h)}case\"scheme\":return bp(U_(t[d]))}}const o=e===R||e===\"xOffset\"?\"width\":\"height\";const s=r[o];if(Cu(s))if(M(e))if(U(i)){const m=H_(s,n,e);if(m)return bp({step:m})}else ae(Ua(o));else if(wr(e)){const g=e===Qe?\"x\":\"y\";const _=n.getScaleComponent(g);const y=_.get(\"type\");if(y===\"band\"){const T=G_(s,i);if(T)return bp(T)}}const{rangeMin:l,rangeMax:c}=t;const u=j_(e,n);if((l!==undefined||c!==undefined)&&Bo(i,\"rangeMin\")&&te.isArray(u)&&u.length===2)return bp([l??u[0],c??u[1]]);return Ep(u)}function U_(e){if(Co(e))return{scheme:e.name,...fe(e,[\"name\"])};return{scheme:e}}function B_(e,t,r){let{center:n}=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};const a=er(e);const i=t.getName(a);const o=t.getSignalName.bind(t);if(e===N&&Eo(r))return n?[q.fromName(e=>`${o(e)}/2`,i),q.fromName(e=>`-${o(e)}/2`,i)]:[q.fromName(o,i),0];else return n?[q.fromName(e=>`-${o(e)}/2`,i),q.fromName(e=>`${o(e)}/2`,i)]:[0,q.fromName(o,i)]}function j_(e,r){const{size:t,config:n,mark:a,encoding:i}=r;const{type:o}=H(i[e]);const s=r.getScaleComponent(e);const l=s.get(\"type\");const{domain:c,domainMid:u}=r.specifiedScales[e];switch(e){case R:case N:{if(k([\"point\",\"band\"],l)){const d=q_(e,t,n.view);if(Cu(d)){const p=H_(d,r,e);return{step:p}}}return B_(e,r,l)}case Qe:case Ze:return V_(e,r,l);case dt:{const f=$_(a,n);const h=Y_(a,t,r,n);if(Ao(l))return W_(f,h,z_(l,n,c,e));else return[f,h]}case tt:return[0,Math.PI*2];case pt:return[0,360];case Xe:return[0,new q(()=>{const e=r.getSignalName(y0(r.parent)?\"child_width\":\"width\");const t=r.getSignalName(y0(r.parent)?\"child_height\":\"height\");return`min(${e},${t})/2`})];case gt:return[n.scale.minStrokeWidth,n.scale.maxStrokeWidth];case _t:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case ut:return\"symbol\";case st:case lt:case ct:if(l===\"ordinal\")return o===\"nominal\"?\"category\":\"ordinal\";else if(u!==undefined)return\"diverging\";else return a===\"rect\"||a===\"geoshape\"?\"heatmap\":\"ramp\";case ft:case ht:case mt:return[n.scale.minOpacity,n.scale.maxOpacity]}}function H_(t,r,e){const{encoding:n}=r;const a=r.getScaleComponent(e);const i=rr(e);const o=n[i];const s=Ou({step:t,offsetIsDiscrete:T(o)&&ao(o.type)});if(s===\"offset\"&&mc(n,i)){const l=r.getScaleComponent(i);const c=r.scaleName(i);let e=`domain('${c}').length`;if(l.get(\"type\")===\"band\"){const d=l.get(\"paddingInner\")??l.get(\"padding\")??0;const p=l.get(\"paddingOuter\")??l.get(\"padding\")??0;e=`bandspace(${e}, ${d}, ${p})`}const u=a.get(\"paddingInner\")??a.get(\"padding\");return{signal:`${t.step} * ${e} / (1-${An(u)})`}}else return t.step}function G_(e,t){const r=Ou({step:e,offsetIsDiscrete:U(t)});if(r===\"offset\")return{step:e.step};return undefined}function V_(e,t,r){const n=e===Qe?\"x\":\"y\";const a=t.getScaleComponent(n);if(!a)return B_(n,t,r,{center:true});const i=a.get(\"type\");const o=t.scaleName(n);const{markDef:s,config:l}=t;if(i===\"band\"){const c=q_(n,t.size,t.config.view);if(Cu(c)){const u=G_(c,r);if(u)return u}return[0,{signal:`bandwidth('${o}')`}]}else{const d=t.encoding[n];if(B(d)&&d.timeUnit){const p=Fi(d.timeUnit,e=>`scale('${o}', ${e})`);const f=t.config.scale.bandWithNestedOffsetPaddingInner;const h=ul({fieldDef:d,markDef:s,config:l})-.5;const m=h!==0?` + ${h}`:\"\";if(f){const g=x(f)?`${f.signal}/2`+m:`${f/2+h}`;const _=x(f)?`(1 - ${f.signal}/2)`+m:`${1-f/2+h}`;return[{signal:`${g} * (${p})`},{signal:`${_} * (${p})`}]}return[0,{signal:p}]}return de(`Cannot use ${e} scale if ${n} scale is not discrete.`)}}function q_(e,t,r){const n=e===R?\"width\":\"height\";const a=t[n];if(a)return a;return Du(r,n)}function z_(e,t,r,n){switch(e){case\"quantile\":return t.scale.quantileCount;case\"quantize\":return t.scale.quantizeCount;case\"threshold\":if(r!==undefined&&te.isArray(r))return r.length+1;else{ae(ai(n));return 3}}}function W_(n,a,i){const e=()=>{const e=Cn(a);const t=Cn(n);const r=`(${e} - ${t}) / (${i} - 1)`;return`sequence(${t}, ${e} + ${r}, ${r})`};if(x(a))return new q(e);else return{signal:e()}}function $_(e,t){switch(e){case\"bar\":case\"tick\":return t.scale.minBandSize;case\"line\":case\"trail\":case\"rule\":return t.scale.minStrokeWidth;case\"text\":return t.scale.minFontSize;case\"point\":case\"square\":case\"circle\":return t.scale.minSize}throw new Error(va(\"size\",e))}const K_=.95;function Y_(e,t,r,n){const a={x:L_(r,\"x\"),y:L_(r,\"y\")};switch(e){case\"bar\":case\"tick\":{if(n.scale.maxBandSize!==undefined)return n.scale.maxBandSize;const i=J_(t,a,n.view);if(te.isNumber(i))return i-1;else return new q(()=>`${i.signal} - 1`)}case\"line\":case\"trail\":case\"rule\":return n.scale.maxStrokeWidth;case\"text\":return n.scale.maxFontSize;case\"point\":case\"square\":case\"circle\":{if(n.scale.maxSize)return n.scale.maxSize;const o=J_(t,a,n.view);if(te.isNumber(o))return Math.pow(K_*o,2);else return new q(()=>`pow(${K_} * ${o.signal}, 2)`)}}throw new Error(va(\"size\",e))}function J_(e,t,r){const n=Cu(e.width)?e.width.step:Pu(r,\"width\");const a=Cu(e.height)?e.height.step:Pu(r,\"height\");if(t.x||t.y)return new q(()=>{const e=[t.x?t.x.signal:n,t.y?t.y.signal:a];return`min(${e.join(\", \")})`});return Math.min(n,a)}function Q_(e,t){if(z(e))Z_(e,t);else t0(e,t)}function Z_(e,t){const r=e.component.scales;const{config:n,encoding:a,markDef:i,specifiedScales:o}=e;for(const s of A(r)){const l=o[s];const c=r[s];const u=e.getScaleComponent(s);const d=H(a[s]);const p=l[t];const f=u.get(\"type\");const h=u.get(\"padding\");const m=u.get(\"paddingInner\");const g=Bo(f,t);const _=jo(s,t);if(p!==undefined)if(!g)ae(Fa(f,t,s));else if(_)ae(_);if(g&&_===undefined)if(p!==undefined){const y=d[\"timeUnit\"];const T=d.type;switch(t){case\"domainMax\":case\"domainMin\":if(ui(l[t])||T===\"temporal\"||y)c.set(t,{signal:ec(l[t],{type:T,timeUnit:y})},true);else c.set(t,l[t],true);break;default:c.copyKeyFromObject(t,l)}}else{const v=t in X_?X_[t]({model:e,channel:s,fieldOrDatumDef:d,scaleType:f,scalePadding:h,scalePaddingInner:m,domain:l.domain,domainMin:l.domainMin,domainMax:l.domainMax,markDef:i,config:n,hasNestedOffsetScale:gc(a,s),hasSecondaryRangeChannel:!!a[Xt(s)]}):n.scale[t];if(v!==undefined)c.set(t,v,false)}}}const X_={bins:e=>{let{model:t,fieldOrDatumDef:r}=e;return B(r)?r0(t,r):undefined},interpolate:e=>{let{channel:t,fieldOrDatumDef:r}=e;return n0(t,r.type)},nice:e=>{let{scaleType:t,channel:r,domain:n,domainMin:a,domainMax:i,fieldOrDatumDef:o}=e;return a0(t,r,n,a,i,o)},padding:e=>{let{channel:t,scaleType:r,fieldOrDatumDef:n,markDef:a,config:i}=e;return i0(t,r,i.scale,n,a,i.bar)},paddingInner:e=>{let{scalePadding:t,channel:r,markDef:n,scaleType:a,config:i,hasNestedOffsetScale:o}=e;return o0(t,r,n.type,a,i.scale,o)},paddingOuter:e=>{let{scalePadding:t,channel:r,scaleType:n,scalePaddingInner:a,config:i,hasNestedOffsetScale:o}=e;return s0(t,r,n,a,i.scale,o)},reverse:e=>{let{fieldOrDatumDef:t,scaleType:r,channel:n,config:a}=e;const i=B(t)?t.sort:undefined;return l0(r,i,n,a.scale)},zero:e=>{let{channel:t,fieldOrDatumDef:r,domain:n,markDef:a,scaleType:i,config:o,hasSecondaryRangeChannel:s}=e;return c0(t,r,n,a,i,o.scale,s)}};function e0(e){if(z(e))x_(e);else t0(e,\"range\")}function t0(t,r){const n=t.component.scales;for(const e of t.children)if(r===\"range\")e0(e);else Q_(e,r);for(const a of A(n)){let e;for(const i of t.children){const o=i.component.scales[a];if(o){const s=o.getWithExplicit(r);e=Op(e,s,r,\"scale\",Sp((e,t)=>{switch(r){case\"range\":if(e.step&&t.step)return e.step-t.step;return 0}return 0}))}}n[a].setWithExplicit(r,e)}}function r0(e,t){const r=t.bin;if(P(r)){const n=Tg(e,t.field,r);return new q(()=>{return e.getSignalName(n)})}else if(D(r)&&sn(r)&&r.step!==undefined)return{step:r.step};return undefined}function n0(e,t){if(k([st,lt,ct],e)&&t!==\"nominal\")return\"hcl\";return undefined}function a0(e,t,r,n,a,i){if(ql(i)?.bin||te.isArray(r)||a!=null||n!=null||k([y.TIME,y.UTC],e))return undefined;return M(t)?true:undefined}function i0(e,t,r,n,a,i){if(M(e)){if(So(t)){if(r.continuousPadding!==undefined)return r.continuousPadding;const{type:o,orient:s}=a;if(o===\"bar\"&&!(B(n)&&(n.bin||n.timeUnit)))if(s===\"vertical\"&&e===\"x\"||s===\"horizontal\"&&e===\"y\")return i.continuousBandSize}if(t===y.POINT)return r.pointPadding}return undefined}function o0(e,t,r,n,a){let i=arguments.length>5&&arguments[5]!==undefined?arguments[5]:false;if(e!==undefined)return undefined;if(M(t)){const{bandPaddingInner:o,barBandPaddingInner:s,rectBandPaddingInner:l,bandWithNestedOffsetPaddingInner:c}=a;if(i)return c;return I(o,r===\"bar\"?s:l)}else if(wr(t))if(n===y.BAND)return a.offsetBandPaddingInner;return undefined}function s0(e,t,r,n,a){let i=arguments.length>5&&arguments[5]!==undefined?arguments[5]:false;if(e!==undefined)return undefined;if(M(t)){const{bandPaddingOuter:o,bandWithNestedOffsetPaddingOuter:s}=a;if(i)return s;if(r===y.BAND)return I(o,x(n)?{signal:`${n.signal}/2`}:n/2)}else if(wr(t))if(r===y.POINT)return.5;else if(r===y.BAND)return a.offsetBandPaddingOuter;return undefined}function l0(e,t,r,n){if(r===\"x\"&&n.xReverse!==undefined){if(Eo(e)&&t===\"descending\")if(x(n.xReverse))return{signal:`!${n.xReverse.signal}`};else return!n.xReverse;return n.xReverse}if(Eo(e)&&t===\"descending\")return true;return undefined}function c0(e,t,r,n,a,i,o){const s=!!r&&r!==\"unaggregated\";if(s)if(Eo(a)){if(te.isArray(r)){const l=r[0];const c=r[r.length-1];if(te.isNumber(l)&&l<=0&&te.isNumber(c)&&c>=0)return true}return false}if(e===\"size\"&&t.type===\"quantitative\"&&!Ao(a))return true;if(!(B(t)&&t.bin)&&k([...Er,...Ar],e)){const{orient:u,type:d}=n;if(k([\"bar\",\"area\",\"line\",\"trail\"],d))if(u===\"horizontal\"&&e===\"y\"||u===\"vertical\"&&e===\"x\")return false;if(k([\"bar\",\"area\"],d)&&!o)return true;return i?.zero}return false}function u0(e,t,r,n){let a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;const i=d0(t,r,n,a);const{type:o}=e;if(!Gr(t))return null;if(o!==undefined){if(!Go(t,o)){ae(xa(t,o,i));return i}if(B(r)&&!Ho(o,r.type)){ae(La(o,i));return i}return o}return i}function d0(e,t,r,n){switch(t.type){case\"nominal\":case\"ordinal\":{if(Dt(e)||Kr(e)===\"discrete\"){if(e===\"shape\"&&t.type===\"ordinal\")ae(Oa(e,\"ordinal\"));return\"ordinal\"}if(M(e)||wr(e)){if(k([\"rect\",\"bar\",\"image\",\"rule\"],r.type))return\"band\";if(n)return\"band\"}else if(r.type===\"arc\"&&e in Sr)return\"band\";const a=r[er(e)];if(_s(a))return\"band\";if(Ol(t)&&t.axis?.tickBand)return\"band\";return\"point\"}case\"temporal\":if(Dt(e))return\"time\";else if(Kr(e)===\"discrete\"){ae(Oa(e,\"temporal\"));return\"ordinal\"}else if(B(t)&&t.timeUnit&&F(t.timeUnit).utc)return\"utc\";return\"time\";case\"quantitative\":if(Dt(e)){if(B(t)&&P(t.bin))return\"bin-ordinal\";return\"linear\"}else if(Kr(e)===\"discrete\"){ae(Oa(e,\"quantitative\"));return\"ordinal\"}return\"linear\";case\"geojson\":return undefined}throw new Error(fa(t.type))}function p0(e){let{ignoreRange:t}=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};f0(e);h_(e);for(const r of Uo)Q_(e,r);if(!t)e0(e)}function f0(e){if(z(e))e.component.scales=h0(e);else e.component.scales=g0(e)}function h0(t){const{encoding:r,mark:n,markDef:a}=t;const i={};for(const o of Hr){const s=H(r[o]);if(s&&n===ns&&o===ut&&s.type===co)continue;let e=s&&s[\"scale\"];if(s&&e!==null&&e!==false){e??={};const l=gc(r,o);const c=u0(e,o,s,a,l);i[o]=new P_(t.scaleName(`${o}`,true),{value:c,explicit:e.type===c})}}return i}const m0=Sp((e,t)=>mo(e)-mo(t));function g0(e){const t=e.component.scales={};const r={};const n=e.component.resolve;for(const a of e.children){f0(a);for(const i of A(a.component.scales)){n.scale[i]??=Om(i,e);if(n.scale[i]===\"shared\"){const o=r[i];const s=a.component.scales[i].getWithExplicit(\"type\");if(o)if(fo(o.value,s.value))r[i]=Op(o,s,\"type\",\"scale\",m0);else{n.scale[i]=\"independent\";delete r[i]}else r[i]=s}}}for(const l of A(r)){const c=e.scaleName(l,true);const u=r[l];t[l]=new P_(c,u);for(const d of e.children){const p=d.component.scales[l];if(p){d.renameScale(p.get(\"name\"),c);p.merged=true}}}return t}class _0{constructor(){this.nameMap={}}rename(e,t){this.nameMap[e]=t}has(e){return this.nameMap[e]!==undefined}get(e){while(this.nameMap[e]&&e!==this.nameMap[e])e=this.nameMap[e];return e}}function z(e){return e?.type===\"unit\"}function y0(e){return e?.type===\"facet\"}function T0(e){return e?.type===\"concat\"}function v0(e){return e?.type===\"layer\"}class b0{constructor(e,t,r,n,a,i,o){this.type=t;this.parent=r;this.config=a;this.parent=r;this.config=a;this.view=_(o);this.name=e.name??n;this.title=pn(e.title)?{text:e.title}:e.title?_(e.title):undefined;this.scaleNameMap=r?r.scaleNameMap:new _0;this.projectionNameMap=r?r.projectionNameMap:new _0;this.signalNameMap=r?r.signalNameMap:new _0;this.data=e.data;this.description=e.description;this.transforms=tp(e.transform??[]);this.layout=t===\"layer\"||t===\"unit\"?{}:Nu(e,t,a);this.component={data:{sources:r?r.component.data.sources:[],outputNodes:r?r.component.data.outputNodes:{},outputNodeRefCounts:r?r.component.data.outputNodeRefCounts:{},isFaceted:il(e)||r?.component.data.isFaceted&&e.data===undefined},layoutSize:new vp,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...i?m(i):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef(\"width\")}get height(){return this.getSizeSignalRef(\"height\")}parse(){this.parseScale();this.parseLayoutSize();this.renameTopLevelLayoutSizeSignal();this.parseSelections();this.parseProjection();this.parseData();this.parseAxesAndHeaders();this.parseLegends();this.parseMarkGroup()}parseScale(){p0(this)}parseProjection(){dg(this)}renameTopLevelLayoutSizeSignal(){if(this.getName(\"width\")!==\"width\")this.renameSignal(this.getName(\"width\"),\"width\");if(this.getName(\"height\")!==\"height\")this.renameSignal(this.getName(\"height\"),\"height\")}parseLegends(){Ym(this)}assembleEncodeFromView(e){const{style:t,...r}=e;const n={};for(const a of A(r)){const i=r[a];if(i!==undefined)n[a]=L(i)}return n}assembleGroupEncodeEntry(e){let t={};if(this.view)t=this.assembleEncodeFromView(this.view);if(!e){if(this.description)t[\"description\"]=L(this.description);if(this.type===\"unit\"||this.type===\"layer\")return{width:this.getSizeSignalRef(\"width\"),height:this.getSizeSignalRef(\"height\"),...t}}return re(t)?undefined:t}assembleLayout(){if(!this.layout)return undefined;const{spacing:e,...t}=this.layout;const{component:r,config:n}=this;const a=_m(r.layoutHeaders,n);return{padding:e,...this.assembleDefaultLayout(),...t,...a?{titleBand:a}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];for(const r of Lt)if(e[r].title)t.push(lm(this,r));for(const n of om)t=t.concat(dm(this,n));return t}assembleAxes(){return xh(this.component.axes,this.config)}assembleLegends(){return ag(this)}assembleProjections(){return og(this)}assembleTitle(){const{encoding:e,...t}=this.title??{};const r={...dn(this.config.title).nonMarkTitleProperties,...t,...e?{encode:{update:e}}:{}};if(r.text){if(k([\"unit\",\"layer\"],this.type)){if(k([\"middle\",undefined],r.anchor))r.frame??=\"group\"}else r.anchor??=\"start\";return re(r)?undefined:r}return undefined}assembleGroup(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:[];const t={};e=e.concat(this.assembleSignals());if(e.length>0)t.signals=e;const r=this.assembleLayout();if(r)t.layout=r;t.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const n=!this.parent||y0(this.parent)?R_(this):[];if(n.length>0)t.scales=n;const a=this.assembleAxes();if(a.length>0)t.axes=a;const i=this.assembleLegends();if(i.length>0)t.legends=i;return t}getName(e){return w((this.name?`${this.name}_`:\"\")+e)}getDataName(e){return this.getName(G[e].toLowerCase())}requestDataName(e){const t=this.getDataName(e);const r=this.component.data.outputNodeRefCounts;r[t]=(r[t]||0)+1;return t}getSizeSignalRef(e){if(y0(this.parent)){const t=Sm(e);const r=Or(t);const n=this.component.scales[r];if(n&&!n.merged){const a=n.get(\"type\");const i=n.get(\"range\");if(U(a)&&fn(i)){const o=n.get(\"name\");const s=I_(this,r);const l=k_(s);if(l){const c=j({aggregate:\"distinct\",field:l},{expr:\"datum\"});return{signal:Em(o,n,c)}}else{ae(Hn(r));return null}}}}return{signal:this.signalNameMap.get(this.getName(e))}}lookupDataSource(e){const t=this.component.data.outputNodes[e];if(!t)return e;return t.getSource()}getSignalName(e){return this.signalNameMap.get(e)}renameSignal(e,t){this.signalNameMap.rename(e,t)}renameScale(e,t){this.scaleNameMap.rename(e,t)}renameProjection(e,t){this.projectionNameMap.rename(e,t)}scaleName(e,t){if(t)return this.getName(e);if(Kt(e)&&Gr(e)&&this.component.scales[e]||this.scaleNameMap.has(this.getName(e)))return this.scaleNameMap.get(this.getName(e));return undefined}projectionName(e){if(e)return this.getName(\"projection\");if(this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName(\"projection\")))return this.projectionNameMap.get(this.getName(\"projection\"));return undefined}correctDataNames=e=>{if(e.from?.data)e.from.data=this.lookupDataSource(e.from.data);if(e.from?.facet?.data)e.from.facet.data=this.lookupDataSource(e.from.facet.data);return e};getScaleComponent(e){if(!this.component.scales)throw new Error(\"getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().\");const t=this.component.scales[e];if(t&&!t.merged)return t;return this.parent?this.parent.getScaleComponent(e):undefined}getScaleType(e){const t=this.getScaleComponent(e);return t?t.get(\"type\"):undefined}getSelectionComponent(e,t){let r=this.component.selection[e];if(!r&&this.parent)r=this.parent.getSelectionComponent(e,t);if(!r)throw new Error(Wn(t));return r}hasAxisOrientSignalRef(){return this.component.axes.x?.some(e=>e.hasOrientSignalRef())||this.component.axes.y?.some(e=>e.hasOrientSignalRef())}}class E0 extends b0{vgField(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};const r=this.fieldDef(e);if(!r)return undefined;return j(r,t)}reduceFieldDef(a,e){return Ac(this.getMapping(),(e,t,r)=>{const n=ql(t);if(n)return a(e,n,r);return e},e)}forEachFieldDef(n,e){Sc(this.getMapping(),(e,t)=>{const r=ql(e);if(r)n(r,t)},e)}}class S0 extends r{clone(){return new S0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const r=this.transform.as??[undefined,undefined];this.transform.as=[r[0]??\"value\",r[1]??\"density\"];const n=this.transform.resolve??\"shared\";this.transform.resolve=n}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${S(this.transform)}`}assemble(){const{density:e,...t}=this.transform;const r={type:\"kde\",field:e,...t};r.resolve=this.transform.resolve;return r}}class A0 extends r{clone(){return new A0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${S(this.transform)}`}assemble(){const{extent:e,param:t}=this.transform;const r={type:\"extent\",field:e,signal:t};return r}}class O0 extends r{clone(){return new O0(this.parent,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const{flatten:r,as:n=[]}=this.transform;this.transform.as=r.map((e,t)=>n[t]??e)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${S(this.transform)}`}assemble(){const{flatten:e,as:t}=this.transform;const r={type:\"flatten\",fields:e,as:t};return r}}class C0 extends r{clone(){return new C0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const r=this.transform.as??[undefined,undefined];this.transform.as=[r[0]??\"key\",r[1]??\"value\"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${S(this.transform)}`}assemble(){const{fold:e,as:t}=this.transform;const r={type:\"fold\",fields:e,as:t};return r}}class w0 extends r{clone(){return new w0(null,m(this.fields),this.geojson,this.signal)}static parseAll(e,r){if(r.component.projection&&!r.component.projection.isFit)return e;let t=0;for(const n of[[at,nt],[ot,it]]){const a=n.map(e=>{const t=H(r.encoding[e]);return B(t)?t.field:Tl(t)?{expr:`${t.datum}`}:Sl(t)?{expr:`${t[\"value\"]}`}:undefined});if(a[0]||a[1])e=new w0(e,a,null,r.getName(`geojson_${t++}`))}if(r.channelHasField(ut)){const i=r.typedFieldDef(ut);if(i.type===co)e=new w0(e,null,i.field,r.getName(`geojson_${t++}`))}return e}constructor(e,t,r,n){super(e);this.fields=t;this.geojson=r;this.signal=n}dependentFields(){const e=(this.fields??[]).filter(te.isString);return new Set([...this.geojson?[this.geojson]:[],...e])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${S(this.fields)}`}assemble(){return[...this.geojson?[{type:\"filter\",expr:`isValid(datum[\"${this.geojson}\"])`}]:[],{type:\"geojson\",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class k0 extends r{clone(){return new k0(null,this.projection,m(this.fields),m(this.as))}constructor(e,t,r,n){super(e);this.projection=t;this.fields=r;this.as=n}static parseAll(e,r){if(!r.projectionName())return e;for(const t of[[at,nt],[ot,it]]){const n=t.map(e=>{const t=H(r.encoding[e]);return B(t)?t.field:Tl(t)?{expr:`${t.datum}`}:Sl(t)?{expr:`${t[\"value\"]}`}:undefined});const a=t[0]===ot?\"2\":\"\";if(n[0]||n[1])e=new k0(e,r.projectionName(),n,[r.getName(`x${a}`),r.getName(`y${a}`)])}return e}dependentFields(){return new Set(this.fields.filter(te.isString))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${S(this.fields)} ${S(this.as)}`}assemble(){return{type:\"geopoint\",projection:this.projection,fields:this.fields,as:this.as}}}class I0 extends r{clone(){return new I0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(e){const{start:t=0,stop:r,step:n}=e;const a=[t,r,...n?[n]:[]].join(\",\");return{signal:`sequence(${a})`}}static makeFromTransform(e,t){return new I0(e,t)}static makeFromEncoding(e,t){const r=t.encoding;const n=r.x;const a=r.y;if(B(n)&&B(a)){const i=n.impute?n:a.impute?a:undefined;if(i===undefined)return undefined;const o=n.impute?a:a.impute?n:undefined;const{method:s,value:l,frame:c,keyvals:u}=i.impute;const d=Oc(t.mark,r);return new I0(e,{impute:i.field,key:o.field,...s?{method:s}:{},...l!==undefined?{value:l}:{},...c?{frame:c}:{},...u!==undefined?{keyvals:u}:{},...d.length?{groupby:d}:{}})}return null}hash(){return`Impute ${S(this.transform)}`}assemble(){const{impute:e,key:t,keyvals:r,method:n,groupby:a,value:i,frame:o=[null,null]}=this.transform;const s={type:\"impute\",field:e,key:t,...r?{keyvals:Dd(r)?this.processSequence(r):r}:{},method:\"value\",...a?{groupby:a}:{},value:!n||n===\"value\"?i:null};if(n&&n!==\"value\"){const l={type:\"window\",as:[`imputed_${e}_value`],ops:[n],fields:[e],frame:o,ignorePeers:false,...a?{groupby:a}:{}};const c={type:\"formula\",expr:`datum.${e} === null ? datum.imputed_${e}_value : datum.${e}`,as:e};return[s,l,c]}else return[s]}}class R0 extends r{clone(){return new R0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const r=this.transform.as??[undefined,undefined];this.transform.as=[r[0]??t.on,r[1]??t.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${S(this.transform)}`}assemble(){const{loess:e,on:t,...r}=this.transform;const n={type:\"loess\",x:t,y:e,...r};return n}}class N0 extends r{clone(){return new N0(null,m(this.transform),this.secondary)}constructor(e,t,r){super(e);this.transform=t;this.secondary=r}static make(e,t,r,n){const a=t.component.data.sources;const{from:i}=r;let o=null;if(Ld(i)){let e=X0(i.data,a);if(!e){e=new Lg(i.data);a.push(e)}const s=t.getName(`lookup_${n}`);o=new Wp(e,s,G.Lookup,t.component.data.outputNodeRefCounts);t.component.data.outputNodes[s]=o}else if(Fd(i)){const l=i.param;r={as:l,...r};let e;try{e=t.getSelectionComponent(w(l),l)}catch(e){throw new Error(Jn(l))}o=e.materialized;if(!o)throw new Error(Qn(l))}return new N0(e,r,o.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?te.array(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${S({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:te.array(this.transform.as)}:{}};else{let e=this.transform.as;if(!te.isString(e)){ae(sa);e=\"_lookup\"}t={as:[e]}}return{type:\"lookup\",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...t,...this.transform.default?{default:this.transform.default}:{}}}}class M0 extends r{clone(){return new M0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const r=this.transform.as??[undefined,undefined];this.transform.as=[r[0]??\"prob\",r[1]??\"value\"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${S(this.transform)}`}assemble(){const{quantile:e,...t}=this.transform;const r={type:\"quantile\",field:e,...t};return r}}class P0 extends r{clone(){return new P0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t;this.transform=m(t);const r=this.transform.as??[undefined,undefined];this.transform.as=[r[0]??t.on,r[1]??t.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${S(this.transform)}`}assemble(){const{regression:e,on:t,...r}=this.transform;const n={type:\"regression\",x:t,y:e,...r};return n}}class D0 extends r{clone(){return new D0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t}addDimensions(e){this.transform.groupby=Te((this.transform.groupby??[]).concat(e),e=>e)}producedFields(){return undefined}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${S(this.transform)}`}assemble(){const{pivot:e,value:t,groupby:r,limit:n,op:a}=this.transform;return{type:\"pivot\",field:e,value:t,...n!==undefined?{limit:n}:{},...a!==undefined?{op:a}:{},...r!==undefined?{groupby:r}:{}}}}class x0 extends r{clone(){return new x0(null,m(this.transform))}constructor(e,t){super(e);this.transform=t}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${S(this.transform)}`}assemble(){return{type:\"sample\",size:this.transform.sample}}}function L0(o){let s=0;function l(t,r){if(t instanceof Lg)if(!t.isGenerator&&!wp(t.data)){o.push(r);const e={name:null,source:r.name,transform:[]};r=e}if(t instanceof Mg)if(t.parent instanceof Lg&&!r.source){r.format={...r.format,parse:t.assembleFormatParse()};r.transform.push(...t.assembleTransforms(true))}else r.transform.push(...t.assembleTransforms());if(t instanceof Cg){if(!r.name)r.name=`data_${s++}`;if(!r.source||r.transform.length>0){o.push(r);t.data=r.name}else t.data=r.source;o.push(...t.assemble());return}if(t instanceof Dg||t instanceof xg||t instanceof Xg||t instanceof Oh||t instanceof tm||t instanceof k0||t instanceof Og||t instanceof N0||t instanceof a_||t instanceof Zg||t instanceof C0||t instanceof O0||t instanceof S0||t instanceof R0||t instanceof M0||t instanceof P0||t instanceof Pg||t instanceof x0||t instanceof D0||t instanceof A0)r.transform.push(t.assemble());if(t instanceof Eg||t instanceof Yp||t instanceof I0||t instanceof n_||t instanceof w0)r.transform.push(...t.assemble());if(t instanceof Wp)if(r.source&&r.transform.length===0)t.setSource(r.source);else if(t.parent instanceof Wp)t.setSource(r.name);else{if(!r.name)r.name=`data_${s++}`;t.setSource(r.name);if(t.numChildren()===1){o.push(r);const n={name:null,source:r.name,transform:[]};r=n}}switch(t.numChildren()){case 0:if(t instanceof Wp&&(!r.source||r.transform.length>0))o.push(r);break;case 1:l(t.children[0],r);break;default:{if(!r.name)r.name=`data_${s++}`;let e=r.name;if(!r.source||r.transform.length>0)o.push(r);else e=r.source;for(const a of t.children){const i={name:null,source:e,transform:[]};l(a,i)}break}}}return l}function F0(e){const t=[];const r=L0(t);for(const n of e.children)r(n,{source:e.name,name:null,transform:[]});return t}function U0(e,t){const r=[];const n=L0(r);let a=0;for(const o of e.sources){if(!o.hasName())o.dataName=`source_${a++}`;const s=o.assemble();n(o,s)}for(const l of r)if(l.transform.length===0)delete l.transform;let i=0;for(const[c,u]of r.entries())if((u.transform??[]).length===0&&!u.source)r.splice(i++,0,r.splice(c,1)[0]);for(const d of r)for(const p of d.transform??[])if(p.type===\"lookup\")p.from=e.outputNodes[p.from].getSource();for(const f of r)if(f.name in t)f.values=t[f.name];return r}function B0(e){if(e===\"top\"||e===\"left\"||x(e))return\"header\";return\"footer\"}function j0(e){for(const t of Lt)H0(e,t);V0(e,\"x\");V0(e,\"y\")}function H0(t,r){const{facet:n,config:a,child:i,component:o}=t;if(t.channelHasField(r)){const s=n[r];const l=am(\"title\",null,a,r);let e=Bl(s,a,{allowDisabling:true,includeDefault:l===undefined||!!l});if(i.component.layoutHeaders[r].title){e=te.isArray(e)?e.join(\", \"):e;e+=` / ${i.component.layoutHeaders[r].title}`;i.component.layoutHeaders[r].title=null}const c=am(\"labelOrient\",s.header,a,r);const u=s.header!==null?I(s.header?.labels,a.header.labels,true):false;const d=k([\"bottom\",\"right\"],c)?\"footer\":\"header\";o.layoutHeaders[r]={title:s.header!==null?e:null,facetFieldDef:s,[d]:r===\"facet\"?[]:[G0(t,r,u)]}}}function G0(e,t,r){const n=t===\"row\"?\"height\":\"width\";return{labels:r,sizeSignal:e.child.component.layoutSize.get(n)?e.child.getSizeSignalRef(n):undefined,axes:[]}}function V0(e,t){const{child:r}=e;if(r.component.axes[t]){const{layoutHeaders:n,resolve:a}=e.component;a.axis[t]=Cm(a,t);if(a.axis[t]===\"shared\"){const i=t===\"x\"?\"column\":\"row\";const o=n[i];for(const s of r.component.axes[t]){const l=B0(s.get(\"orient\"));o[l]??=[G0(e,i,false)];const c=Ph(s,\"main\",e.config,{header:true});if(c)o[l][0].axes.push(c);s.mainExtracted=true}}}}function q0(e){W0(e);$0(e,\"width\");$0(e,\"height\")}function z0(e){W0(e);const t=e.layout.columns===1?\"width\":\"childWidth\";const r=e.layout.columns===undefined?\"height\":\"childHeight\";$0(e,t);$0(e,r)}function W0(e){for(const t of e.children)t.parseLayoutSize()}function $0(e,t){const r=Sm(t);const n=Or(r);const a=e.component.resolve;const i=e.component.layoutSize;let o;for(const s of e.children){const l=s.component.layoutSize.getWithExplicit(r);const c=a.scale[n]??Om(n,e);if(c===\"independent\"&&l.value===\"step\"){o=undefined;break}if(o){if(c===\"independent\"&&o.value!==l.value){o=undefined;break}o=Op(o,l,r,\"\")}else o=l}if(o){for(const u of e.children){e.renameSignal(u.getName(r),e.getName(t));u.component.layoutSize.set(r,\"merged\",false)}i.setWithExplicit(t,o)}else i.setWithExplicit(t,{explicit:false,value:undefined})}function K0(e){const{size:t,component:r}=e;for(const n of Er){const a=er(n);if(t[a]){const i=t[a];r.layoutSize.set(a,Cu(i)?\"step\":i,true)}else{const o=Y0(e,a);r.layoutSize.set(a,o,false)}}}function Y0(e,t){const r=t===\"width\"?\"x\":\"y\";const n=e.config;const a=e.getScaleComponent(r);if(a){const i=a.get(\"type\");const o=a.get(\"range\");if(U(i)){const s=Du(n.view,t);if(fn(o)||Cu(s))return\"step\";else return s}else return Mu(n.view,t)}else if(e.hasProjection||e.mark===\"arc\")return Mu(n.view,t);else{const l=Du(n.view,t);return Cu(l)?l.step:l}}function J0(e,t,r){return j(t,{suffix:`by_${j(e)}`,...r})}class Q0 extends E0{constructor(e,t,r,n){super(e,\"facet\",t,r,n,e.resolve);this.child=Qy(e.spec,this,this.getName(\"child\"),undefined,n);this.children=[this.child];this.facet=this.initFacet(e.facet)}initFacet(e){if(!nl(e))return{facet:this.initFacetFieldDef(e,\"facet\")};const t=A(e);const r={};for(const n of t){if(![We,$e].includes(n)){ae(va(n,\"facet\"));break}const a=e[n];if(a.field===undefined){ae(ya(a,n));break}r[n]=this.initFacetFieldDef(a,n)}return r}initFacetFieldDef(e,t){const r=Kl(e,t);if(r.header)r.header=_(r.header);else if(r.header===null)r.header=null;return r}channelHasField(e){return!!this.facet[e]}fieldDef(e){return this.facet[e]}parseData(){this.component.data=ry(this);this.child.parseData()}parseLayoutSize(){W0(this)}parseSelections(){this.child.parseSelections();this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders();j0(this)}assembleSelectionTopLevelSignals(e){return this.child.assembleSelectionTopLevelSignals(e)}assembleSignals(){this.child.assembleSignals();return[]}assembleSelectionData(e){return this.child.assembleSelectionData(e)}getHeaderLayoutMixins(){const e={};for(const t of Lt)for(const r of sm){const n=this.component.layoutHeaders[t];const a=n[r];const{facetFieldDef:i}=n;if(i){const o=am(\"titleOrient\",i.header,this.config,t);if([\"right\",\"bottom\"].includes(o)){const s=nm(t,o);e.titleAnchor??={};e.titleAnchor[s]=\"end\"}}if(a?.[0]){const l=t===\"row\"?\"height\":\"width\";const c=r===\"header\"?\"headerBand\":\"footerBand\";if(t!==\"facet\"&&!this.child.component.layoutSize.get(l)){e[c]??={};e[c][t]=.5}if(n.title){e.offset??={};e.offset[t===\"row\"?\"rowTitle\":\"columnTitle\"]=10}}}return e}assembleDefaultLayout(){const{column:e,row:t}=this.facet;const r=e?this.columnDistinctSignal():t?1:undefined;let n=\"all\";if(!t&&this.component.resolve.scale.x===\"independent\")n=\"none\";else if(!e&&this.component.resolve.scale.y===\"independent\")n=\"none\";return{...this.getHeaderLayoutMixins(),...r?{columns:r}:{},bounds:\"full\",align:n}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(this.parent&&this.parent instanceof Q0)return undefined;else{const e=this.getName(\"column_domain\");return{signal:`length(data('${e}'))`}}}assembleGroupStyle(){return undefined}assembleGroup(e){if(this.parent&&this.parent instanceof Q0)return{...this.channelHasField(\"column\")?{encode:{update:{columns:{field:j(this.facet.column,{prefix:\"distinct\"})}}}}:{},...super.assembleGroup(e)};return super.assembleGroup(e)}getCardinalityAggregateForChild(){const e=[];const t=[];const r=[];if(this.child instanceof Q0){if(this.child.channelHasField(\"column\")){const n=j(this.child.facet.column);e.push(n);t.push(\"distinct\");r.push(`distinct_${n}`)}}else for(const a of Er){const i=this.child.component.scales[a];if(i&&!i.merged){const o=i.get(\"type\");const s=i.get(\"range\");if(U(o)&&fn(s)){const l=I_(this.child,a);const c=k_(l);if(c){e.push(c);t.push(\"distinct\");r.push(`distinct_${c}`)}else ae(Hn(a))}}}return{fields:e,ops:t,as:r}}assembleFacet(){const{name:e,data:t}=this.component.data.facetRoot;const{row:r,column:n}=this.facet;const{fields:a,ops:i,as:o}=this.getCardinalityAggregateForChild();const s=[];for(const c of Lt){const u=this.facet[c];if(u){s.push(j(u));const{bin:d,sort:p}=u;if(P(d))s.push(j(u,{binSuffix:\"end\"}));if(tl(p)){const{field:f,op:h=Qs}=p;const m=J0(u,p);if(r&&n){a.push(m);i.push(\"max\");o.push(m)}else{a.push(f);i.push(h);o.push(m)}}else if(te.isArray(p)){const g=rm(u,c);a.push(g);i.push(\"max\");o.push(g)}}}const l=!!r&&!!n;return{name:e,data:t,groupby:s,...l||a.length>0?{aggregate:{...l?{cross:l}:{},...a.length?{fields:a,ops:i,as:o}:{}}}:{}}}facetSortFields(e){const{facet:t}=this;const r=t[e];if(r){if(tl(r.sort))return[J0(r,r.sort,{expr:\"datum\"})];else if(te.isArray(r.sort))return[rm(r,e,{expr:\"datum\"})];return[j(r,{expr:\"datum\"})]}return[]}facetSortOrder(e){const{facet:t}=this;const r=t[e];if(r){const{sort:n}=r;const a=(tl(n)?n.order:!te.isArray(n)&&n)||\"ascending\";return[a]}return[]}assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return fm(e.facet,\"facet\",t);const r={row:[\"top\",\"bottom\"],column:[\"left\",\"right\"]};for(const n of om)if(e[n]){const a=am(\"labelOrient\",e[n]?.header,t,n);if(r[n].includes(a))return fm(e[n],n,t)}return undefined}assembleMarks(){const{child:e}=this;const t=this.component.data.facetRoot;const r=F0(t);const n=e.assembleGroupEncodeEntry(false);const a=this.assembleLabelTitle()||e.assembleTitle();const i=e.assembleGroupStyle();const o={name:this.getName(\"cell\"),type:\"group\",...a?{title:a}:{},...i?{style:i}:{},from:{facet:this.assembleFacet()},sort:{field:Lt.map(e=>this.facetSortFields(e)).flat(),order:Lt.map(e=>this.facetSortOrder(e)).flat()},...r.length>0?{data:r}:{},...n?{encode:{update:n}}:{},...e.assembleGroup(Bp(this,[]))};return[o]}getMapping(){return this.facet}}function Z0(t,e){const{row:r,column:n}=e;if(r&&n){let e=null;for(const a of[r,n])if(tl(a.sort)){const{field:i,op:o=Qs}=a.sort;t=e=new Zg(t,{joinaggregate:[{op:o,field:i,as:J0(a,a.sort,{forAs:true})}],groupby:[j(a)]})}return e}return null}function X0(e,t){for(const r of t){const n=r.data;if(e.name&&r.hasName()&&e.name!==r.dataName)continue;const a=e[\"format\"]?.mesh;const i=n.format?.feature;if(a&&i)continue;const o=e[\"format\"]?.feature;if((o||i)&&o!==i)continue;const s=n.format?.mesh;if((a||s)&&a!==s)continue;if(kp(e)&&kp(n)){if(ze(e.values,n.values))return r}else if(wp(e)&&wp(n)){if(e.url===n.url)return r}else if(Ip(e))if(e.name===r.dataName)return r}return null}function ey(e,t){if(e.data||!e.parent){if(e.data===null){const n=new Lg({values:[]});t.push(n);return n}const r=X0(e.data,t);if(r){if(!Rp(e.data))r.data.format=_e({},e.data.format,r.data.format);if(!r.hasName()&&e.data.name)r.dataName=e.data.name;return r}else{const a=new Lg(e.data);t.push(a);return a}}else return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}function ty(r,n,a){let i=0;for(const o of n.transforms){let e=undefined;let t;if($d(o)){t=r=new tm(r,o);e=\"derived\"}else if(Pd(o)){const s=Ig(o);t=r=Mg.makeWithAncestors(r,{},s,a)??r;r=new Oh(r,n,o.filter)}else if(Kd(o)){t=r=Eg.makeFromTransform(r,o,n);e=\"number\"}else if(Jd(o)){e=\"date\";const l=a.getWithExplicit(o.field);if(l.value===undefined){r=new Mg(r,{[o.field]:e});a.set(o.field,e,false)}t=r=Yp.makeFromTransform(r,o)}else if(Qd(o)){t=r=Og.makeFromTransform(r,o);e=\"number\";if(vh(n))r=new Pg(r)}else if(xd(o)){t=r=N0.make(r,n,o,i++);e=\"derived\"}else if(qd(o)){t=r=new a_(r,o);e=\"number\"}else if(zd(o)){t=r=new Zg(r,o);e=\"number\"}else if(Zd(o)){t=r=n_.makeFromTransform(r,o);e=\"derived\"}else if(Xd(o)){t=r=new C0(r,o);e=\"derived\"}else if(ep(o)){t=r=new A0(r,o);e=\"derived\"}else if(Wd(o)){t=r=new O0(r,o);e=\"derived\"}else if(Ud(o)){t=r=new D0(r,o);e=\"derived\"}else if(Vd(o))r=new x0(r,o);else if(Yd(o)){t=r=I0.makeFromTransform(r,o);e=\"derived\"}else if(Bd(o)){t=r=new S0(r,o);e=\"derived\"}else if(jd(o)){t=r=new M0(r,o);e=\"derived\"}else if(Hd(o)){t=r=new P0(r,o);e=\"derived\"}else if(Gd(o)){t=r=new R0(r,o);e=\"derived\"}else{ae(oa(o));continue}if(t&&e!==undefined)for(const c of t.producedFields()??[])a.set(c,e,false)}return r}function ry(e){let t=ey(e,e.component.data.sources);const{outputNodes:r,outputNodeRefCounts:n}=e.component.data;const a=e.data;const i=a&&(Rp(a)||wp(a)||kp(a));const o=!i&&e.parent?e.parent.component.data.ancestorParse.clone():new Cp;if(Rp(a)){if(Np(a))t=new xg(t,a.sequence);else if(Pp(a))t=new Dg(t,a.graticule);o.parseNothing=true}else if(a?.format?.parse===null)o.parseNothing=true;t=Mg.makeExplicit(t,e,o)??t;t=new Pg(t);const s=e.parent&&v0(e.parent);if(z(e)||y0(e))if(s)t=Eg.makeFromEncoding(t,e)??t;if(e.transforms.length>0)t=ty(t,e,o);const l=Ng(e);const c=Rg(e);t=Mg.makeWithAncestors(t,{},{...l,...c},o)??t;if(z(e)){t=w0.parseAll(t,e);t=k0.parseAll(t,e)}if(z(e)||y0(e)){if(!s)t=Eg.makeFromEncoding(t,e)??t;t=Yp.makeFromEncoding(t,e)??t;t=tm.parseAllForSortIndex(t,e)}const u=t=ny(G.Raw,e,t);if(z(e)){const g=Og.makeFromEncoding(t,e);if(g){t=g;if(vh(e))t=new Pg(t)}t=I0.makeFromEncoding(t,e)??t;t=n_.makeFromEncoding(t,e)??t}let d;let p;if(z(e)){const{markDef:_,mark:y,config:T}=e;const v=ne(\"invalid\",_,T);const{marks:b,scales:E}=p=Dp({invalid:v,isPath:as(y)});if(b!==E&&E===\"include-invalid-values\")d=t=ny(G.PreFilterInvalid,e,t);if(b===\"exclude-invalid-values\")t=Xg.make(t,e,p)??t}const f=t=ny(G.Main,e,t);let h;if(z(e)&&p){const{marks:S,scales:A}=p;if(S===\"include-invalid-values\"&&A===\"exclude-invalid-values\"){t=Xg.make(t,e,p)??t;h=t=ny(G.PostFilterInvalid,e,t)}}if(z(e))Ih(e,f);let m=null;if(y0(e)){const O=e.getName(\"facet\");t=Z0(t,e.facet)??t;m=new Cg(t,e,O,f.getSource());r[O]=m}return{...e.component.data,outputNodes:r,outputNodeRefCounts:n,raw:u,main:f,facetRoot:m,ancestorParse:o,preFilterInvalid:d,postFilterInvalid:h}}function ny(e,t,r){const{outputNodes:n,outputNodeRefCounts:a}=t.component.data;const i=t.getDataName(e);const o=new Wp(r,i,e,a);n[i]=o;return o}class ay extends b0{constructor(e,t,r,n){super(e,\"concat\",t,r,n,e.resolve);if(e.resolve?.axis?.x===\"shared\"||e.resolve?.axis?.y===\"shared\")ae(ra);this.children=this.getChildren(e).map((e,t)=>{return Qy(e,this,this.getName(`concat_${t}`),undefined,n)})}parseData(){this.component.data=ry(this);for(const e of this.children)e.parseData()}parseSelections(){this.component.selection={};for(const e of this.children){e.parseSelections();for(const t of A(e.component.selection))this.component.selection[t]=e.component.selection[t]}}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){for(const e of this.children)e.parseAxesAndHeaders()}getChildren(e){if(Su(e))return e.vconcat;else if(Au(e))return e.hconcat;return e.concat}parseLayoutSize(){z0(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){this.children.forEach(e=>e.assembleSignals());return[]}assembleLayoutSignals(){const e=Tm(this);for(const t of this.children)e.push(...t.assembleLayoutSignals());return e}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleMarks(){return this.children.map(e=>{const t=e.assembleTitle();const r=e.assembleGroupStyle();const n=e.assembleGroupEncodeEntry(false);return{type:\"group\",name:e.getName(\"group\"),...t?{title:t}:{},...r?{style:r}:{},...n?{encode:{update:n}}:{},...e.assembleGroup()}})}assembleGroupStyle(){return undefined}assembleDefaultLayout(){const e=this.layout.columns;return{...e!=null?{columns:e}:{},bounds:\"full\",align:\"each\"}}}function iy(e){return e===false||e===null}const oy={disable:1,gridScale:1,scale:1,...sc,labelExpr:1,encode:1},sy=A(oy);class ly extends vp{constructor(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;super();this.explicit=e;this.implicit=t;this.mainExtracted=r}clone(){return new ly(m(this.explicit),m(this.implicit),this.mainExtracted)}hasAxisPart(e){if(e===\"axis\")return true;if(e===\"grid\"||e===\"title\")return!!this.get(e);return!iy(this.get(e))}hasOrientSignalRef(){return x(this.explicit.orient)}}function cy(e,t,r){const{encoding:n,config:a}=e;const i=H(n[t])??H(n[Xt(t)]);const o=e.axis(t)||{};const{format:s,formatType:l}=o;if(Fs(l))return{text:Gs({fieldOrDatumDef:i,field:\"datum.value\",format:s,formatType:l,config:a}),...r};else if(s===undefined&&l===undefined&&a.customFormatTypes){if(yl(i)===\"quantitative\")if(Ol(i)&&i.stack===\"normalize\"&&a.normalizedNumberFormatType)return{text:Gs({fieldOrDatumDef:i,field:\"datum.value\",format:a.normalizedNumberFormat,formatType:a.normalizedNumberFormatType,config:a}),...r};else if(a.numberFormatType)return{text:Gs({fieldOrDatumDef:i,field:\"datum.value\",format:a.numberFormat,formatType:a.numberFormatType,config:a}),...r};if(yl(i)===\"temporal\"&&a.timeFormatType&&B(i)&&!i.timeUnit)return{text:Gs({fieldOrDatumDef:i,field:\"datum.value\",format:a.timeFormat,formatType:a.timeFormatType,config:a}),...r}}return r}function uy(r){return Er.reduce((e,t)=>{if(r.component.scales[t])e[t]=[_y(t,r)];return e},{})}const dy={bottom:\"top\",top:\"bottom\",left:\"right\",right:\"left\"};function py(e){const{axes:t,resolve:r}=e.component;const n={top:0,bottom:0,right:0,left:0};for(const a of e.children){a.parseAxesAndHeaders();for(const i of A(a.component.axes)){r.axis[i]=Cm(e.component.resolve,i);if(r.axis[i]===\"shared\"){t[i]=fy(t[i],a.component.axes[i]);if(!t[i]){r.axis[i]=\"independent\";delete t[i]}}}}for(const o of Er){for(const s of e.children){if(!s.component.axes[o])continue;if(r.axis[o]===\"independent\"){t[o]=(t[o]??[]).concat(s.component.axes[o]);for(const l of s.component.axes[o]){const{value:c,explicit:u}=l.getWithExplicit(\"orient\");if(x(c))continue;if(n[c]>0&&!u){const d=dy[c];if(n[c]>n[d])l.set(\"orient\",d,false)}n[c]++}}delete s.component.axes[o]}if(r.axis[o]===\"independent\"&&t[o]&&t[o].length>1)for(const[p,f]of(t[o]||[]).entries())if(p>0&&!!f.get(\"grid\")&&!f.explicit.grid)f.implicit.grid=false}}function fy(t,r){if(t){if(t.length!==r.length)return undefined;const n=t.length;for(let e=0;e<n;e++){const a=t[e];const i=r[e];if(!!a!==!!i)return undefined;else if(a&&i){const o=a.getWithExplicit(\"orient\");const s=i.getWithExplicit(\"orient\");if(o.explicit&&s.explicit&&o.value!==s.value)return undefined;else t[e]=hy(a,i)}}}else return r.map(e=>e.clone());return t}function hy(e,t){for(const r of sy){const n=Op(e.getWithExplicit(r),t.getWithExplicit(r),r,\"axis\",(e,t)=>{switch(r){case\"title\":return xn(e,t);case\"gridScale\":return{explicit:e.explicit,value:I(e.value,t.value)}}return Ap(e,t,r,\"axis\")});e.setWithExplicit(r,n)}return e}function my(e,t,r,n,a){if(t===\"disable\")return r!==undefined;r=r||{};switch(t){case\"titleAngle\":case\"labelAngle\":return e===(x(r.labelAngle)?r.labelAngle:Ge(r.labelAngle));case\"values\":return!!r.values;case\"encode\":return!!r.encoding||!!r.labelAngle;case\"title\":if(e===Zh(n,a))return true}return e===r[t]}const gy=new Set([\"grid\",\"translate\",\"format\",\"formatType\",\"orient\",\"labelExpr\",\"tickCount\",\"position\",\"tickMinStep\"]);function _y(a,i){let e=i.axis(a);const o=new ly;const t=H(i.encoding[a]);const{mark:r,config:n}=i;const s=e?.orient||n[a===\"x\"?\"axisX\":\"axisY\"]?.orient||n.axis?.orient||Yh(a);const l=i.getScaleComponent(a).get(\"type\");const c=Fh(a,l,s,i.config);const u=e!==undefined?!e:Bh(\"disable\",n.style,e?.style,c).configValue;o.set(\"disable\",u,e!==undefined);if(u)return o;e=e||{};const d=Vh(t,e,a,n.style,c);const p=qs(e.formatType,t,l);const f=Vs(t,t.type,e.format,e.formatType,n,true);const h={fieldOrDatumDef:t,axis:e,channel:a,model:i,scaleType:l,orient:s,labelAngle:d,format:f,formatType:p,mark:r,config:n};for(const _ of sy){const y=_ in jh?jh[_](h):cc(_)?e[_]:undefined;const T=y!==undefined;const v=my(y,_,e,i,a);if(T&&v)o.set(_,y,v);else{const{configValue:b=undefined,configFrom:E=undefined}=cc(_)&&_!==\"values\"?Bh(_,n.style,e.style,c):{};const S=b!==undefined;if(T&&!S)o.set(_,y,v);else if(!(E===\"vgAxisConfig\")||gy.has(_)&&S||ac(b)||x(b))o.set(_,b,false)}}const m=e.encoding??{};const g=ic.reduce((e,t)=>{if(!o.hasAxisPart(t))return e;const r=Am(m[t]??{},i);const n=t===\"labels\"?cy(i,a,r):r;if(n!==undefined&&!re(n))e[t]={update:n};return e},{});if(!re(g))o.set(\"encode\",g,!!e.encoding||e.labelAngle!==undefined);return o}function yy(e){let{encoding:t,size:r}=e;for(const n of Er){const a=er(n);if(Cu(r[a]))if(vl(t[n])){delete r[a];ae(Ua(a))}}return r}const Ty={vgMark:\"arc\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",size:\"ignore\",orient:\"ignore\",theta:\"ignore\"}),...d(\"x\",e,{defaultPos:\"mid\"}),...d(\"y\",e,{defaultPos:\"mid\"}),...Bf(e,\"radius\"),...Bf(e,\"theta\")}}},vy={vgMark:\"area\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",orient:\"include\",size:\"ignore\",theta:\"ignore\"}),...Df(\"x\",e,{defaultPos:\"zeroOrMin\",defaultPos2:\"zeroOrMin\",range:e.markDef.orient===\"horizontal\"}),...Df(\"y\",e,{defaultPos:\"zeroOrMin\",defaultPos2:\"zeroOrMin\",range:e.markDef.orient===\"vertical\"}),...Yf(e)}}},by={vgMark:\"rect\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",orient:\"ignore\",size:\"ignore\",theta:\"ignore\"}),...Bf(e,\"x\"),...Bf(e,\"y\")}}},Ey={vgMark:\"shape\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",size:\"ignore\",orient:\"ignore\",theta:\"ignore\"})}},postEncodingTransform:e=>{const{encoding:t}=e;const r=t.shape;const n={type:\"geoshape\",projection:e.projectionName(),...r&&B(r)&&r.type===co?{field:j(r,{expr:\"datum\"})}:{}};return[n]}},Sy={vgMark:\"image\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"ignore\",orient:\"ignore\",size:\"ignore\",theta:\"ignore\"}),...Bf(e,\"x\"),...Bf(e,\"y\"),..._f(e,\"url\")}}},Ay={vgMark:\"line\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",size:\"ignore\",orient:\"ignore\",theta:\"ignore\"}),...d(\"x\",e,{defaultPos:\"mid\"}),...d(\"y\",e,{defaultPos:\"mid\"}),...V(\"size\",e,{vgChannel:\"strokeWidth\"}),...Yf(e)}}},Oy={vgMark:\"trail\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",size:\"include\",orient:\"ignore\",theta:\"ignore\"}),...d(\"x\",e,{defaultPos:\"mid\"}),...d(\"y\",e,{defaultPos:\"mid\"}),...V(\"size\",e),...Yf(e)}}};function Cy(e,t){const{config:r}=e;return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",size:\"include\",orient:\"ignore\",theta:\"ignore\"}),...d(\"x\",e,{defaultPos:\"mid\"}),...d(\"y\",e,{defaultPos:\"mid\"}),...V(\"size\",e),...V(\"angle\",e),...wy(e,r,t)}}function wy(e,t,r){if(r)return{shape:{value:r}};return V(\"shape\",e)}const ky={vgMark:\"symbol\",encodeEntry:e=>{return Cy(e)}},Iy={vgMark:\"symbol\",encodeEntry:e=>{return Cy(e,\"circle\")}},Ry={vgMark:\"symbol\",encodeEntry:e=>{return Cy(e,\"square\")}},Ny={vgMark:\"rect\",encodeEntry:e=>{return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",orient:\"ignore\",size:\"ignore\",theta:\"ignore\"}),...Bf(e,\"x\"),...Bf(e,\"y\")}}},My={vgMark:\"rule\",encodeEntry:e=>{const{markDef:t}=e;const r=t.orient;if(!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude)return{};return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",orient:\"ignore\",size:\"ignore\",theta:\"ignore\"}),...Df(\"x\",e,{defaultPos:r===\"horizontal\"?\"zeroOrMax\":\"mid\",defaultPos2:\"zeroOrMin\",range:r!==\"vertical\"}),...Df(\"y\",e,{defaultPos:r===\"vertical\"?\"zeroOrMax\":\"mid\",defaultPos2:\"zeroOrMin\",range:r!==\"horizontal\"}),...V(\"size\",e,{vgChannel:\"strokeWidth\"})}}},Py={vgMark:\"text\",encodeEntry:e=>{const{config:t,encoding:r}=e;return{...Wf(e,{align:\"include\",baseline:\"include\",color:\"include\",size:\"ignore\",orient:\"ignore\",theta:\"include\"}),...d(\"x\",e,{defaultPos:\"mid\"}),...d(\"y\",e,{defaultPos:\"mid\"}),..._f(e),...V(\"size\",e,{vgChannel:\"fontSize\"}),...V(\"angle\",e),...Jf(\"align\",Dy(e.markDef,r,t)),...Jf(\"baseline\",xy(e.markDef,r,t)),...d(\"radius\",e,{defaultPos:null}),...d(\"theta\",e,{defaultPos:null})}}};function Dy(e,t,r){const n=ne(\"align\",e,r);if(n===undefined)return\"center\";return undefined}function xy(e,t,r){const n=ne(\"baseline\",e,r);if(n===undefined)return\"middle\";return undefined}const Ly={vgMark:\"rect\",encodeEntry:e=>{const{config:t,markDef:r}=e;const n=r.orient;const a=n===\"horizontal\"?\"width\":\"height\";const i=n===\"horizontal\"?\"height\":\"width\";return{...Wf(e,{align:\"ignore\",baseline:\"ignore\",color:\"include\",orient:\"ignore\",size:\"ignore\",theta:\"ignore\"}),...d(\"x\",e,{defaultPos:\"mid\",vgChannel:\"xc\"}),...d(\"y\",e,{defaultPos:\"mid\",vgChannel:\"yc\"}),...V(\"size\",e,{defaultValue:Fy(e),vgChannel:a}),[i]:L(ne(\"thickness\",r,t))}}};function Fy(e){const{config:t,markDef:r}=e;const{orient:n}=r;const a=n===\"horizontal\"?\"width\":\"height\";const i=e.getScaleComponent(n===\"horizontal\"?\"x\":\"y\");const o=ne(\"size\",r,t,{vgChannel:a})??t.tick.bandSize;if(o!==undefined)return o;else{const s=i?i.get(\"range\"):undefined;if(s&&fn(s)&&te.isNumber(s.step))return s.step*3/4;const l=Pu(t.view,a);return l*3/4}}const Uy={arc:Ty,area:vy,bar:by,circle:Iy,geoshape:Ey,image:Sy,line:Ay,point:ky,rect:Ny,rule:My,square:Ry,text:Py,tick:Ly,trail:Oy};function By(t){if(k([Ko,zo,es],t.mark)){const e=Oc(t.mark,t.encoding);if(e.length>0)return Hy(t,e)}else if(t.mark===Wo){const r=vn.some(e=>ne(e,t.markDef,t.config));if(t.stack&&!t.fieldDef(\"size\")&&r)return Vy(t)}return zy(t)}const jy=\"faceted_path_\";function Hy(e,t){return[{name:e.getName(\"pathgroup\"),type:\"group\",from:{facet:{name:jy+e.requestDataName(G.Main),data:e.requestDataName(G.Main),groupby:t}},encode:{update:{width:{field:{group:\"width\"}},height:{field:{group:\"height\"}}}},marks:zy(e,{fromPrefix:jy})}]}const Gy=\"stack_group_\";function Vy(n){const[a]=zy(n,{fromPrefix:Gy});const i=n.scaleName(n.stack.fieldChannel);const o=function(){let e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return n.vgField(n.stack.fieldChannel,e)};const e=(e,t)=>{const r=[o({prefix:\"min\",suffix:\"start\",expr:t}),o({prefix:\"max\",suffix:\"start\",expr:t}),o({prefix:\"min\",suffix:\"end\",expr:t}),o({prefix:\"max\",suffix:\"end\",expr:t})];return`${e}(${r.map(e=>`scale('${i}',${e})`).join(\",\")})`};let t;let r;if(n.stack.fieldChannel===\"x\"){t={...pe(a.encode.update,[\"y\",\"yc\",\"y2\",\"height\",...vn]),x:{signal:e(\"min\",\"datum\")},x2:{signal:e(\"max\",\"datum\")},clip:{value:true}};r={x:{field:{group:\"x\"},mult:-1},height:{field:{group:\"height\"}}};a.encode.update={...fe(a.encode.update,[\"y\",\"yc\",\"y2\"]),height:{field:{group:\"height\"}}}}else{t={...pe(a.encode.update,[\"x\",\"xc\",\"x2\",\"width\"]),y:{signal:e(\"min\",\"datum\")},y2:{signal:e(\"max\",\"datum\")},clip:{value:true}};r={y:{field:{group:\"y\"},mult:-1},width:{field:{group:\"width\"}}};a.encode.update={...fe(a.encode.update,[\"x\",\"xc\",\"x2\"]),width:{field:{group:\"width\"}}}}for(const c of vn){const u=In(c,n.markDef,n.config);if(a.encode.update[c]){t[c]=a.encode.update[c];delete a.encode.update[c]}else if(u)t[c]=L(u);if(u)a.encode.update[c]={value:0}}const s=[];if(n.stack.groupbyChannels?.length>0)for(const d of n.stack.groupbyChannels){const p=n.fieldDef(d);const f=j(p);if(f)s.push(f);if(p?.bin||p?.timeUnit)s.push(j(p,{binSuffix:\"end\"}))}const l=[\"stroke\",\"strokeWidth\",\"strokeJoin\",\"strokeCap\",\"strokeDash\",\"strokeDashOffset\",\"strokeMiterLimit\",\"strokeOpacity\"];t=l.reduce((e,t)=>{if(a.encode.update[t])return{...e,[t]:a.encode.update[t]};else{const r=In(t,n.markDef,n.config);if(r!==undefined)return{...e,[t]:L(r)};else return e}},t);if(t.stroke){t.strokeForeground={value:true};t.strokeOffset={value:0}}return[{type:\"group\",from:{facet:{data:n.requestDataName(G.Main),name:Gy+n.requestDataName(G.Main),groupby:s,aggregate:{fields:[o({suffix:\"start\"}),o({suffix:\"start\"}),o({suffix:\"end\"}),o({suffix:\"end\"})],ops:[\"min\",\"max\",\"min\",\"max\"]}}},encode:{update:t},marks:[{type:\"group\",encode:{update:r},marks:[a]}]}]}function qy(e){const{encoding:t,stack:r,mark:n,markDef:a,config:i}=e;const o=t.order;if(!te.isArray(o)&&Sl(o)&&he(o.value)||!o&&he(ne(\"order\",a,i)))return undefined;else if((te.isArray(o)||B(o))&&!r)return Mn(o,{expr:\"datum\"});else if(as(n)){const s=a.orient===\"horizontal\"?\"y\":\"x\";const l=t[s];if(B(l))return{field:s}}return undefined}function zy(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{fromPrefix:\"\"};const{mark:r,markDef:n,encoding:a,config:i}=e;const o=I(n.clip,Wy(e),$y(e));const s=kn(n);const l=a.key;const c=qy(e);const u=Ky(e);const d=ne(\"aria\",n,i);const p=Uy[r].postEncodingTransform?Uy[r].postEncodingTransform(e):null;return[{name:e.getName(\"marks\"),type:Uy[r].vgMark,...o?{clip:o}:{},...s?{style:s}:{},...l?{key:l.field}:{},...c?{sort:c}:{},...u?u:{},...d===false?{aria:d}:{},from:{data:t.fromPrefix+e.requestDataName(G.Main)},encode:{update:Uy[r].encodeEntry(e)},...p?{transform:p}:{}}]}function Wy(e){const t=e.getScaleComponent(\"x\");const r=e.getScaleComponent(\"y\");return t?.get(\"selectionExtent\")||r?.get(\"selectionExtent\")?true:undefined}function $y(e){const t=e.component.projection;return t&&!t.isFit?true:undefined}function Ky(e){if(!e.component.selection)return null;const t=A(e.component.selection).length;let r=t;let n=e.parent;while(n&&r===0){r=A(n.component.selection).length;n=n.parent}return r?{interactive:t>0||e.mark===\"geoshape\"||!!e.encoding.tooltip||!!e.markDef.tooltip}:null}class Yy extends E0{specifiedScales={};specifiedAxes={};specifiedLegends={};specifiedProjection={};selection=[];children=[];constructor(e,t,r){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};let a=arguments.length>4?arguments[4]:undefined;super(e,\"unit\",t,r,a,undefined,wu(e)?e.view:undefined);const i=ss(e.mark)?{...e.mark}:{type:e.mark};const o=i.type;if(i.filled===undefined)i.filled=md(i,a,{graticule:e.data&&Pp(e.data)});const s=this.encoding=vc(e.encoding||{},o,i.filled,a);this.markDef=pd(i,s,a);this.size=yy({encoding:s,size:wu(e)?{...n,...e.width?{width:e.width}:{},...e.height?{height:e.height}:{}}:n});this.stack=dd(this.markDef,s);this.specifiedScales=this.initScales(o,s);this.specifiedAxes=this.initAxes(s);this.specifiedLegends=this.initLegends(s);this.specifiedProjection=e.projection;this.selection=(e.params??[]).filter(e=>Tu(e))}get hasProjection(){const{encoding:t}=this;const e=this.mark===ns;const r=t&&Mt.some(e=>T(t[e]));return e||r}scaleDomain(e){const t=this.specifiedScales[e];return t?t.domain:undefined}axis(e){return this.specifiedAxes[e]}legend(e){return this.specifiedLegends[e]}initScales(e,n){return Hr.reduce((e,t)=>{const r=H(n[t]);if(r)e[t]=this.initScale(r.scale??{});return e},{})}initScale(e){const{domain:t,range:r}=e;const n=_(e);if(te.isArray(t))n.domain=t.map(En);if(te.isArray(r))n.range=r.map(En);return n}initAxes(a){return Er.reduce((e,t)=>{const r=a[t];if(T(r)||t===R&&T(a.x2)||t===N&&T(a.y2)){const n=T(r)?r.axis:undefined;e[t]=n?this.initAxis({...n}):n}return e},{})}initAxis(e){const t=A(e);const r={};for(const n of t){const a=e[n];r[n]=ac(a)?bn(a):En(a)}return r}initLegends(a){return Fr.reduce((e,t)=>{const r=H(a[t]);if(r&&Br(t)){const n=r.legend;e[t]=n?_(n):n}return e},{})}parseData(){this.component.data=ry(this)}parseLayoutSize(){K0(this)}parseSelections(){this.component.selection=Ch(this,this.selection)}parseMarkGroup(){this.component.mark=By(this)}parseAxesAndHeaders(){this.component.axes=uy(this)}assembleSelectionTopLevelSignals(e){return jp(this,e)}assembleSignals(){return[...Dh(this),...Up(this,[])]}assembleSelectionData(e){return Hp(this,e)}assembleLayout(){return null}assembleLayoutSignals(){return Tm(this)}assembleMarks(){let e=this.component.mark??[];if(!this.parent||!v0(this.parent))e=Gp(this,e);return e.map(this.correctDataNames)}assembleGroupStyle(){const{style:e}=this.view||{};if(e!==undefined)return e;if(this.encoding.x||this.encoding.y)return\"cell\";else return\"view\"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(e){return hc(this.encoding,e)}fieldDef(e){const t=this.encoding[e];return ql(t)}typedFieldDef(e){const t=this.fieldDef(e);if(b(t))return t;return null}}class Jy extends b0{constructor(e,t,r,n,a){super(e,\"layer\",t,r,a,e.resolve,e.view);const i={...n,...e.width?{width:e.width}:{},...e.height?{height:e.height}:{}};this.children=e.layer.map((e,t)=>{if(ed(e))return new Jy(e,this,this.getName(`layer_${t}`),i,a);else if(pc(e))return new Yy(e,this,this.getName(`layer_${t}`),i,a);throw new Error(Ln(e))})}parseData(){this.component.data=ry(this);for(const e of this.children)e.parseData()}parseLayoutSize(){q0(this)}parseSelections(){this.component.selection={};for(const e of this.children){e.parseSelections();for(const t of A(e.component.selection))this.component.selection[t]=e.component.selection[t]}}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){py(this)}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.reduce((e,t)=>{return e.concat(t.assembleSignals())},Dh(this))}assembleLayoutSignals(){return this.children.reduce((e,t)=>{return e.concat(t.assembleLayoutSignals())},Tm(this))}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleGroupStyle(){const e=new Set;for(const r of this.children)for(const n of te.array(r.assembleGroupStyle()))e.add(n);const t=Array.from(e);return t.length>1?t:t.length===1?t[0]:undefined}assembleTitle(){let e=super.assembleTitle();if(e)return e;for(const t of this.children){e=t.assembleTitle();if(e)return e}return undefined}assembleLayout(){return null}assembleMarks(){return Vp(this,this.children.flatMap(e=>{return e.assembleMarks()}))}assembleLegends(){return this.children.reduce((e,t)=>{return e.concat(t.assembleLegends())},ag(this))}}function Qy(e,t,r,n,a){if(il(e))return new Q0(e,t,r,a);else if(ed(e))return new Jy(e,t,r,n,a);else if(pc(e))return new Yy(e,t,r,n,a);else if(bu(e))return new ay(e,t,r,a);throw new Error(Ln(e))}function Zy(e){let t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(t.logger)si(t.logger);if(t.fieldTitle)Fl(t.fieldTitle);try{const r=$u(te.mergeConfig(t.config,e.config));const n=cp(e,r);const a=Qy(n,null,\"\",undefined,r);a.parse();f_(a.component.data,a);const i=eT(a,Xy(e,n.autosize,r,a),e.datasets,e.usermeta);return{spec:i,normalized:n}}finally{if(t.logger)li();if(t.fieldTitle)Ul()}}function Xy(e,t,r,n){const a=n.component.layoutSize.get(\"width\");const i=n.component.layoutSize.get(\"height\");if(t===undefined){t={type:\"pad\"};if(n.hasAxisOrientSignalRef())t.resize=true}else if(te.isString(t))t={type:t};if(a&&i&&gp(t.type))if(a===\"step\"&&i===\"step\"){ae(jn());t.type=\"pad\"}else if(a===\"step\"||i===\"step\"){const o=a===\"step\"?\"width\":\"height\";ae(jn(Or(o)));const s=o===\"width\"?\"height\":\"width\";t.type=_p(s)}return{...A(t).length===1&&t.type?t.type===\"pad\"?{}:{autosize:t.type}:{autosize:t},...Tp(r,false),...Tp(e,true)}}function eT(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};let n=arguments.length>3?arguments[3]:undefined;const a=e.config?Qu(e.config):undefined;const i=[].concat(e.assembleSelectionData([]),U0(e.component.data,r));const o=e.assembleProjections();const s=e.assembleTitle();const l=e.assembleGroupStyle();const c=e.assembleGroupEncodeEntry(true);let u=e.assembleLayoutSignals();u=u.filter(e=>{if((e.name===\"width\"||e.name===\"height\")&&e.value!==undefined){t[e.name]=+e.value;return false}return true});const{params:d,...p}=t;return{$schema:\"https://vega.github.io/schema/vega/v5.json\",...e.description?{description:e.description}:{},...p,...s?{title:s}:{},...l?{style:l}:{},...c?{encode:{update:c}}:{},data:i,...o.length>0?{projections:o}:{},...e.assembleGroup([...u,...e.assembleSelectionTopLevelSignals([]),...vu(d)]),...a?{config:a}:{},...n?{usermeta:n}:{}}}const tT=ie.version;e.accessPathDepth=Le,e.accessPathWithDatum=Re,e.compile=Zy,e.contains=k,e.deepEqual=ze,e.deleteNestedProperty=ke,e.duplicate=m,e.entries=Oe,e.every=ge,e.fieldIntersection=Ae,e.flatAccessWithDatum=Ne,e.getFirstDefined=I,e.hasIntersection=Ee,e.hash=S,e.internalField=je,e.isBoolean=Ce,e.isEmpty=re,e.isEqual=ve,e.isInternalField=He,e.isNullOrFalse=he,e.isNumeric=Ve,e.keys=A,e.logicalExpr=we,e.mergeDeep=_e,e.never=de,e.normalize=cp,e.normalizeAngle=Ge,e.omit=fe,e.pick=pe,e.prefixGenerator=Se,e.removePathFromField=xe,e.replaceAll=De,e.replacePathInField=Pe,e.resetIdCounter=Be,e.setEqual=be,e.some=me,e.stringify=g,e.titleCase=Ie,e.unique=Te,e.uniqueId=Ue,e.vals=C,e.varName=w,e.version=tT}(b2.exports,T2())),b2.exports}var S2,A2={};function O2(){if(!S2){S2=1,Object.defineProperty(A2,\"__esModule\",{value:!0}),A2.getErrorMessage=r,A2.ignoreCacheUnactionableErrors=function(e,t){{if(r(e).includes(\"UnknownError\"))return t;throw e}};const n=Me();function r(e){if((0,n.exists)(e)&&\"object\"==typeof e){var t=e;if((0,n.exists)(t.message))return String(t.message);if((0,n.exists)(t.error)&&(0,n.exists)(t.error.message))return String(t.error.message)}t=String(e);if(\"[object Object]\"===t)try{return JSON.stringify(e)}catch(e){}return t}}return A2}var C2,w2,k2,I2,R2={};function N2(){if(!w2){w2=1,Object.defineProperty(UP,\"__esModule\",{value:!0}),UP.VegaView=UP.VegaLiteSelectionTypes=void 0;var c,e=Jr;const t=e.__importDefault(xe()),d=e.__importStar(T2()),p=e.__importStar(E2()),r=O2(),n=hn(),a=function(){if(!C2){C2=1,Object.defineProperty(R2,\"__esModule\",{value:!0}),R2.SimpleResizeObserver=void 0;class e{observer;constructor(e,t){var r=new ResizeObserver(()=>{t()});r.observe(e),this.observer=r}[Symbol.dispose](){this.observer&&(this.observer.disconnect(),this.observer=void 0)}}R2.SimpleResizeObserver=e}return R2}(),l=Ue(),i=Ei();UP.VegaLiteSelectionTypes={INTERVAL:\"interval\",POINT:\"point\"},(e=c=c||{})[e.Empty=0]=\"Empty\",e[e.Loading=1]=\"Loading\",e[e.Error=2]=\"Error\",e[e.Done=3]=\"Done\";class f{engine;loader;constructor(e){this.engine=e,this.loader=d.loader()}async load(e,t){if(void 0===this.engine)return\"\";try{for(var r=await this.engine.query(e),n=r.columns(),a=[],i=r.iter({});i.valid();i.next()){var o={};for(const s of n){let e=i.get(s);\"bigint\"==typeof e&&(e=Number(e)),o[s]=e}a.push(o)}return JSON.stringify(a)}catch(e){if(e instanceof l.QueryError)return console.error(e),\"\";throw e}}sanitize(e,t){return this.loader.sanitize(e,t)}http(e,t){return this.loader.http(e,t)}file(e){return this.loader.file(e)}}class o{dom;_spec;_data;view;pending;_status;_error;_engine;_signalHandlers;_eventHandlers;_onViewDestroyed;constructor(e){this.dom=e,this._status=c.Empty}get status(){return this._status}get error(){return this._error??\"\"}set spec(e){this._spec!==e&&(this._spec=e,this.updateView())}set data(e){this._data===e||(0,n.shallowEquals)(this._data,e)||(this._data=e,this.updateView())}set engine(e){this._engine=e}set signalHandlers(e){for(var{name:t,handler:r}of this._signalHandlers??[])this.view?.removeSignalListener(t,r);this._signalHandlers=e.map(({name:e,handler:r})=>({name:e,handler:(e,t)=>r({view:this.view,name:e,value:t})}));for(var{name:n,handler:a}of this._signalHandlers)this.view?.addSignalListener(n,a)}set eventHandlers(e){for(var{name:t,handler:r}of this._eventHandlers??[])this.view?.removeEventListener(t,r);this._eventHandlers=e.map(({name:e,handler:r})=>({name:e,handler:(e,t)=>r({view:this.view,event:e,item:t})}));for(var{name:n,handler:a}of this._eventHandlers)this.view?.addEventListener(n,a)}set onViewDestroyed(e){this._onViewDestroyed=e}onResize(){this.view&&this.view.resize()}updateView(){if(this._status=c.Empty,this._error=void 0,this.pending&&(this.pending=void 0),this.view&&(this._onViewDestroyed?.(),this.view.finalize(),this.view=void 0),void 0!==this._spec&&void 0!==this._data){let e;try{e=JSON.parse(this._spec)}catch(e){return void this.setError(e)}if(u(e))try{e=p.compile(e,{}).spec}catch(e){return void this.setError(e)}var t,r,n=d.parse(e);this.view=new d.View(n,{loader:new f(this._engine)}),this.view.hover(),this.view.initialize(this.dom);for([t,r]of Object.entries(this._data))this.view.data(t,r);if(u(this._spec)){for(var{name:a,handler:i}of this._signalHandlers??[])this.view.addSignalListener(a,i);for(var{name:o,handler:s}of this._eventHandlers??[])this.view.addEventListener(o,s)}const l=this.view.runAsync();l.then(()=>{this.handleComplete(l)}).catch(e=>{this.handleError(l,e)}),this.pending=l,this._status=c.Loading}}handleComplete(e){this.pending===e&&(this._status=c.Done,this.pending=void 0,t.default.redraw())}handleError(e,t){this.pending===e&&(this.pending=void 0,this.setError(t))}setError(e){this._status=c.Error,this._error=(0,r.getErrorMessage)(e),t.default.redraw()}[Symbol.dispose](){this._data=void 0,this._spec=void 0,this.updateView()}}function u(e){if(\"object\"==typeof e){e=e.$schema;if(void 0!==e&&(0,n.isString)(e))return e.includes(\"vega-lite\")}return 1}UP.VegaView=class{wrapper;resize;oncreate({dom:e,attrs:t}){const r=new o(e.firstElementChild);r.spec=t.spec,r.data=t.data,r.engine=t.engine,r.signalHandlers=t.signalHandlers??[],r.eventHandlers=t.eventHandlers??[],r.onViewDestroyed=t.onViewDestroyed,this.wrapper=r,this.resize=new a.SimpleResizeObserver(e,()=>{r.onResize()})}onupdate({attrs:e}){this.wrapper&&(this.wrapper.spec=e.spec,this.wrapper.data=e.data,this.wrapper.engine=e.engine,this.wrapper.signalHandlers=e.signalHandlers??[],this.wrapper.eventHandlers=e.eventHandlers??[],this.wrapper.onViewDestroyed=e.onViewDestroyed)}onremove(){this.resize&&(this.resize[Symbol.dispose](),this.resize=void 0),this.wrapper&&(this.wrapper[Symbol.dispose](),this.wrapper=void 0)}view(e){return(0,t.default)(\".pf-vega-view\",(0,t.default)(\"\"),this.wrapper?.status===c.Loading&&(0,t.default)(\".pf-vega-view-status\",(0,t.default)(i.Spinner)),this.wrapper?.status===c.Error&&(0,t.default)(\".pf-vega-view-status\",this.wrapper?.error??\"Error\"))}}}return UP}function M2(){if(!k2){k2=1,Object.defineProperty(FP,\"__esModule\",{value:!0}),FP.MetricsPage=void 0;const a=Jr.__importDefault(xe()),n=Tl(),i=Ue(),r=Bl(),o=Ei(),t=N2(),s=Pe(),l=bu(),e=lN(),c=je(),u=Be(),d=EN(),p=[\"json\",\"prototext\",\"proto\"];class f{trace;engine;_metrics;_selected;_result;_format;_json;constructor(e){this.trace=e,this.engine=e.engine.getProxy(\"MetricsPage\"),this._metrics=[],this._result=(0,n.okResult)(\"\"),this._json={},this._format=\"json\",async function(e){for(var t=[],r=(await e.query(\"select name from trace_metrics\")).iter({name:i.STR});r.valid();r.next())t.push(r.name);return t}(this.engine).then(e=>{this._metrics=e})}get metrics(){return this._metrics}get visualisations(){return this.trace.plugins.metricVisualisations().filter(e=>e.metric===this.selected)}set selected(e){this._selected!==e&&(this._selected=e,this.update())}get selected(){return this._selected}set format(e){this._format!==e&&(this._format=e,this.update())}get format(){return this._format}get result(){return this._result}get resultAsJson(){return this._json}update(){const t=this._selected,r=this._format;void 0===t?(this._result=(0,n.okResult)(\"\"),this._json={}):(this._result=\"pending\",this._json={},async function(e,t,r){return(e=await e.computeMetric([t],r))instanceof Uint8Array?`Uint8Array<len=${e.length}>`:e}(this.engine,t,r).then(e=>{this._selected===t&&this._format===r&&(this._result=(0,n.okResult)(e),\"json\"===r)&&(this._json=JSON.parse(e))}).catch(e=>{this._selected===t&&this._format===r&&(this._result=(0,n.errResult)(e),this._json={})}))}}class h{view({attrs:e}){const t=e[\"controller\"];return(0,a.default)(\".pf-metrics-page-picker\",(0,a.default)(r.Select,{value:t.selected,oninput:e=>{e.target&&(t.selected=e.target.value)}},t.metrics.map(e=>(0,a.default)(\"option\",{value:e,key:e},e))),(0,a.default)(r.Select,{oninput:e=>{e.target&&(t.format=e.target.value)}},p.map(e=>(0,a.default)(\"option\",{selected:t.format===e,key:e,value:e,label:e}))))}}class m{text=\"\";view({attrs:t}){return t.showExample&&(this.text=`id: \"memory_per_process\"\ndimensions: \"process_name\"\nvalue: \"avg_rss_and_swap\"\nquery: {\n  table: {\n    table_name: \"memory_rss_and_swap_per_process\"\n    module_name: \"linux.memory.process\"\n  }\n  group_by: {\n    column_names: \"process_name\"\n    aggregates: {\n      column_name: \"rss_and_swap\"\n      op: DURATION_WEIGHTED_MEAN\n      result_column_name: \"avg_rss_and_swap\"\n    }\n  }\n}`),(0,a.default)(\".pf-metricsv2-page\",\"Provide metric v2 spec in prototext format \",(0,a.default)(e.Editor,{text:this.text,onExecute:e=>{this.text=e,async function(e,t,r){var n=await e.summarizeTrace([t],void 0,void 0,\"proto\"===r?\"proto\":\"prototext\");if(n.error||0<n.error.length)throw new Error(n.error);switch(r){case\"json\":if(n.protoSummary)return JSON.stringify(n.protoSummary,null,2);throw new Error(\"Error fetching Textproto trace summary\");case\"prototext\":if(n.textprotoSummary)return n.textprotoSummary;throw new Error(\"Error fetching Textproto trace summary\");case\"proto\":throw new Error(\"Proto format not supported\");default:(0,s.assertUnreachable)(r)}}(t.engine,`metric_spec: {${e}}`,\"prototext\").then(e=>{t.onExecuteRunMetric((0,n.okResult)(e))}).catch(e=>{t.onExecuteRunMetric((0,n.errResult)(e))})},onUpdate:e=>{e!==this.text&&(this.text=e,t.onUpdateText())}}))}}class g{view({attrs:e}){return(0,a.default)(\"\",(0,a.default)(t.VegaView,{spec:e.visualisation.spec,data:{metric:e.data}}))}}FP.MetricsPage=class{v1Controller;v2Result;showV2MetricExample=!1;mode=\"V1\";fetcherGeneration=0;oninit({attrs:e}){this.v1Controller=new f(e.trace)}view({attrs:e}){var t=(0,s.assertExists)(this.v1Controller);const n=t.resultAsJson;return(0,a.default)(\".pf-metrics-page\",(0,a.default)(\"\",(0,a.default)(l.SegmentedButtons,{options:[{label:\"Metric v1\"},{label:\"Metric v2\"}],selectedOption:\"V1\"===this.mode?0:1,onOptionSelected:e=>{this.mode=0===e?\"V1\":\"V2\"}})),\"V1\"===this.mode&&(0,a.default)(h,{controller:t}),\"V2\"===this.mode&&[(0,a.default)(c.Button,{label:\"Example metric\",intent:u.Intent.Primary,onclick:()=>{this.showV2MetricExample=!0,this.fetcherGeneration++}}),(0,a.default)(m,{engine:e.trace.engine,showExample:this.showV2MetricExample,editorGeneration:this.fetcherGeneration,onExecuteRunMetric:e=>{this.v2Result=e},onUpdateText:()=>{this.showV2MetricExample=!1,this.fetcherGeneration++}})],\"json\"===t.format&&t.visualisations.map(e=>{let t=n;for(const r of e.path)t=t[r]??[];return(0,a.default)(g,{visualisation:e,data:t})}),(e=\"V1\"===this.mode?t.result:this.v2Result,t=t.format,void 0===e?(0,a.default)(\"pre.pf-metrics-page__error\",\"No metric provided\"):\"pending\"===e?(0,a.default)(o.Spinner):e.ok?(0,a.default)(d.CodeSnippet,{language:t,text:e.value}):(0,a.default)(\"pre.pf-metrics-page__error\",\"\"+e.error)))}}}return FP}var P2,D2,x2={},L2={};function F2(){if(!D2){D2=1,Object.defineProperty(x2,\"__esModule\",{value:!0});var e=Jr;const t=uu(),l=Vi(),c=$e(),u=Du(),d=We(),p=Ue(),f=e.__importDefault(Wc()),r=function(){if(!P2){P2=1,Object.defineProperty(L2,\"__esModule\",{value:!0}),L2.PowerCounterSelectionAggregator=void 0;const a=Fe(),t=$e();var e=Ue();L2.PowerCounterSelectionAggregator=class{id=\"power_counter_aggregation\";trackKind=t.COUNTER_TRACK_KIND;schema={id:e.NUM,ts:e.LONG,value:e.NUM};probe(r){const n=[];for(const e of r.tracks)e?.tags?.kind===t.COUNTER_TRACK_KIND&&\"power_rails\"===e?.tags?.type&&e.tags?.trackIds&&n.push(...e.tags.trackIds);if(0!==n.length)return{prepareData:async e=>{var t=r.end-r.start,t=a.Duration.toSeconds(t),t=`INCLUDE PERFETTO MODULE android.power_rails;\n          CREATE OR REPLACE PERFETTO TABLE ${this.id} AS\n          WITH  aggregated AS (\n            SELECT track_id,\n              COUNT(1) AS count,\n              value_at_max_ts(-ts, value) AS first,\n              value_at_max_ts(ts, value) AS last\n            FROM counter\n            WHERE counter.track_id in (${n})\n              AND ts BETWEEN ${r.start} AND ${r.end}\n            GROUP BY track_id\n          )\n          SELECT\n            COALESCE(friendly_name, raw_power_rail_name) AS name,\n            count,\n            (last - first) / 1000 AS delta_value,\n            ROUND((last - first)/${t} / 1000, 2) AS rate\n          FROM aggregated JOIN android_power_rails_metadata USING (track_id)\n          GROUP BY track_id\n        `;return await e.query(t),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Rail Name\",columnId:\"name\"},{title:\"Delta energy (mJ)\",columnId:\"delta_value\"},{title:\"Avg Power (mW)\",columnId:\"rate\"},{title:\"Sample Count\",columnId:\"count\",sum:!0}]}getTabName(){return\"Power Counters\"}getDefaultSorting(){return{column:\"name\",direction:\"DESC\"}}}}return L2}();class n{static id=\"dev.perfetto.PowerRails\";static dependencies=[f.default];async onTraceLoad(e){e.selection.registerAreaSelectionTab((0,t.createAggregationTab)(e,new r.PowerCounterSelectionAggregator,200)),await this.addPowerRailCounterTracks(e)}async addPowerRailCounterTracks(e){var t=await e.engine.query(`\n      INCLUDE PERFETTO MODULE android.power_rails;\n\n      SELECT\n        track_id as trackId,\n        COALESCE(friendly_name, raw_power_rail_name) as name,\n        machine_id as machine\n      FROM android_power_rails_metadata\n      ORDER BY name\n    `);if(0!==t.numRows()){var r=t.iter({trackId:p.NUM,name:p.STR_NULL,machine:p.NUM_NULL}),n=new d.TrackNode({name:\"Power Rails\",isSummary:!0});for(e.plugins.getPlugin(f.default).getOrCreateStandardGroup(e.workspace,\"POWER\").addChildInOrder(n);r.valid();r.next()){var{trackId:a,name:i,machine:o}=r,i=(0,u.getTrackName)({name:i,kind:c.COUNTER_TRACK_KIND,machine:o}),o=\"/counter_\"+a,s=await(0,l.createQueryCounterTrack)({trace:e,uri:o,data:{sqlSource:`\n            SELECT\n              ts,\n              value / 1000.0 AS value -- convert uJ to mJ\n            FROM counter\n            WHERE track_id = ${a}\n          `},options:{yMode:\"rate\",yRangeSharingKey:\"power_rails\",unit:\"mJ\",rateUnit:\"mW\"}});e.tracks.registerTrack({uri:o,tags:{kind:c.COUNTER_TRACK_KIND,trackIds:[a],type:\"power_rails\"},renderer:s}),n.addChildInOrder(new d.TrackNode({uri:o,name:i}))}}}}x2.default=n}return x2}var U2,B2={},j2={};function H2(){if(!U2){U2=1,Object.defineProperty(j2,\"__esModule\",{value:!0});const c=Ue(),e=Pe();j2.default=class{static id=\"dev.perfetto.Thread\";static description=`\n    Extracts thread and process information from traces, making this information\n    available to other plugins. Also adds track filtering criteria to allow\n    track filtering by thread and process.\n  `;threads;async onTraceLoad(r){var e=await async function(e){for(var e=await e.engine.query(`\n    select\n      utid,\n      tid,\n      pid,\n      ifnull(thread.name, '') as threadName,\n      ifnull(\n        case when length(process.name) > 0 then process.name else null end,\n        thread.name) as procName,\n      process.cmdline as cmdline\n    from (select * from thread order by upid) as thread\n    left join (select * from process order by upid) as process using(upid)\n  `),t=new Map,r=e.iter({utid:c.NUM,tid:c.NUM,pid:c.NUM_NULL,threadName:c.STR,procName:c.STR_NULL,cmdline:c.STR_NULL});r.valid();r.next()){var n=r.utid,a=r.tid,i=null===r.pid?void 0:r.pid,o=r.threadName,s=null===r.procName?void 0:r.procName,l=null===r.cmdline?void 0:r.cmdline;t.set(n,{utid:n,tid:a,threadName:o,pid:i,procName:s,cmdline:l})}return t}(r),t=await async function(e){for(var e=await e.engine.query(`\n    select\n      upid,\n      pid,\n      case\n        when length(process.name) > 0 then process.name\n        else null\n      end as procName,\n      cmdline\n    from process\n  `),t=new Map,r=e.iter({upid:c.NUM,pid:c.NUM,procName:c.STR_NULL,cmdline:c.STR_NULL});r.valid();r.next())t.set(r.upid,{upid:r.upid,pid:r.pid,procName:r.procName??void 0,cmdline:r.cmdline??void 0});return t}(r);this.threads=e,r.tracks.registerTrackFilterCriteria({name:\"Process\",options:Array.from(t.entries()).map(([e,t])=>{t=t.procName??\"<no name>\";return{key:e.toString(),label:`[${e}] `+t}}),predicate:(e,t)=>{return void 0!==e.uri&&!!(e=r.tracks.getTrack(e.uri))&&e.tags?.upid===Number(t)}}),r.tracks.registerTrackFilterCriteria({name:\"Thread\",options:Array.from(e.entries()).map(([e,t])=>{t=t.threadName??\"<no name>\";return{key:e.toString(),label:`[${e}] `+t}}),predicate:(e,t)=>{return void 0!==e.uri&&!!(e=r.tracks.getTrack(e.uri))&&e.tags?.utid===Number(t)}})}getThreadMap(){return(0,e.assertExists)(this.threads)}}}return j2}var G2,V2={};var q2,z2,W2={};function $2(){if(!z2){z2=1,Object.defineProperty(B2,\"__esModule\",{value:!0});var e=Jr;const h=Du(),m=Ue(),g=e.__importDefault(H2()),_=De(),y=ln(),T=function(){if(!G2){G2=1,Object.defineProperty(V2,\"__esModule\",{value:!0}),V2.ProcessSchedulingTrack=V2.PROCESS_SCHEDULING_TRACK_KIND=void 0;var e=Jr;const l=ja(),i=Pa(),h=Pe(),m=Fe(),o=e.__importDefault(xe()),g=He();var t=Kk();const _=Pi(),c=Ue();var r=ln();const n=Le(),a=De();V2.PROCESS_SCHEDULING_TRACK_KIND=\"ProcessSchedulingTrack\";V2.ProcessSchedulingTrack=class{trace;config;cpuCount;threads;mousePos;utidHoveredInThisTrack=-1;countHoveredInThisTrack=-1;fetcher=new t.TimelineFetcher(this.onBoundsChange.bind(this));trackUuid=(0,r.uuidv4Sql)();constructor(e,t,r,n){this.trace=e,this.config=t,this.cpuCount=r,this.threads=n}async onCreate(){var e=new n.AsyncDisposableStack;e.use(await(0,a.createPerfettoTable)({engine:this.trace.engine,name:\"tmp_\"+this.trackUuid,as:null!==this.config.upid?`\n          select\n            s.id,\n            s.ts,\n            s.dur,\n            s.cpu\n          from thread t\n          cross join sched s using (utid)\n          where\n            not t.is_idle and\n            t.upid = ${this.config.upid}\n          order by ts\n        `:((0,h.assertExists)(this.config.utid),`\n        select\n          s.id,\n          s.ts,\n          s.dur,\n          s.cpu\n        from sched s\n        where\n          s.utid = ${this.config.utid}\n      `)})),await(0,a.createVirtualTable)({engine:this.trace.engine,name:\"process_scheduling_\"+this.trackUuid,using:`__intrinsic_slice_mipmap((\n        select\n          s.id,\n          s.ts,\n          iif(\n            s.dur = -1,\n            ifnull(\n              (\n                select n.ts\n                from tmp_${this.trackUuid} n\n                where n.ts > s.ts and n.cpu = s.cpu\n                order by ts\n                limit 1\n              ),\n              trace_end()\n            ) - s.ts,\n            s.dur\n          ) as dur,\n          s.cpu as depth\n        from tmp_${this.trackUuid} s\n      ))`}),await e.asyncDispose()}async onUpdate({visibleWindow:e,resolution:t}){await this.fetcher.requestData(e.toTimeSpan(),t)}async onDestroy(){this.fetcher[Symbol.dispose](),await this.trace.engine.tryQuery(`\n      drop table process_scheduling_${this.trackUuid}\n    `)}async onBoundsChange(t,r,e){(0,h.assertTrue)(1===l.BigintMath.popcount(e),e+\" not pow of 2\");var n=await this.queryData(t,r,e),a=n.numRows(),i={kind:\"slice\",start:t,end:r,resolution:e,length:a,maxCpu:this.cpuCount,counts:new Uint32Array(a),starts:new BigInt64Array(a),ends:new BigInt64Array(a),cpus:new Uint32Array(a),utids:new Uint32Array(a)},o=n.iter({count:c.NUM,ts:c.LONG,dur:c.LONG,cpu:c.NUM,utid:c.NUM});for(let e=0;o.valid();o.next(),e++){const t=m.Time.fromRaw(o.ts);var s=o.dur;const r=m.Time.add(t,s);i.counts[e]=o.count,i.starts[e]=t,i.ends[e]=r,i.cpus[e]=o.cpu,i.utids[e]=o.utid,i.end=m.Time.max(r,i.end)}return i}async queryData(e,t,r){return this.trace.engine.query(`\n      select\n        (z.ts / ${r}) * ${r} as ts,\n        iif(s.dur = -1, s.dur, max(z.dur, ${r})) as dur,\n        s.id,\n        z.count,\n        z.depth as cpu,\n        utid\n      from process_scheduling_${this.trackUuid}(\n        ${e}, ${t}, ${r}\n      ) z\n      cross join sched s using (id)\n    `)}getHeight(){return 40}renderTooltip(){if(-1!==this.utidHoveredInThisTrack&&void 0!==this.mousePos){var e,t,r=this.threads.get(this.utidHoveredInThisTrack);if(r)return e=`T: ${r.threadName} [${r.tid}]`,t=1<(t=this.countHoveredInThisTrack)&&(0,o.default)(\"div\",`and ${t-1} other events`),void 0!==r.pid?(r=`P: ${r.procName} [${r.pid}]`,(0,o.default)(\".tooltip\",[(0,o.default)(\"div\",r),(0,o.default)(\"div\",e),t])):(0,o.default)(\".tooltip\",e,t)}}render({ctx:r,size:e,timescale:n,visibleWindow:a}){var i=this.fetcher.data;if(void 0!==i){(0,_.checkerboardExcept)(r,this.getHeight(),0,e.width,n.timeToPx(i.start),n.timeToPx(i.end)),(0,h.assertTrue)(i.starts.length===i.ends.length),(0,h.assertTrue)(i.starts.length===i.utids.length);var o=Math.floor(30/i.maxCpu);for(let t=0;t<i.ends.length;t++){var s=m.Time.fromRaw(i.starts[t]),l=m.Time.fromRaw(i.ends[t]);if(a.overlaps(s,l)){var c=i.utids[t],u=i.cpus[t],s=Math.floor(n.timeToPx(s)),l=Math.floor(n.timeToPx(l)),l=Math.max(1,l-s),d=this.threads.get(c),p=(d?d.pid:-1)||-1,f=void 0!==this.trace.timeline.hoveredUtid,c=this.trace.timeline.hoveredUtid===c,p=this.trace.timeline.hoveredPid===p,d=(0,g.colorForThread)(d);let e;e=f&&!c?p?d.variant:d.disabled:d.base,r.fillStyle=e.cssString,r.fillRect(s,5+o*u+u,l,o)}}}}onMouseMove({x:e,y:t,timescale:r}){var n,a=this.fetcher.data;this.mousePos={x:e,y:t},void 0!==a&&(t<5||35<t||(n=Math.floor(30/a.maxCpu),t=Math.floor((t-5)/(n+1)),n=r.pxToHpTime(e).toTime(\"floor\"),[r,e]=(0,i.searchRange)(a.starts,n,(0,i.searchEq)(a.cpus,t)),r===e)||r>=a.starts.length||n>a.ends[r]?(this.utidHoveredInThisTrack=-1,this.countHoveredInThisTrack=-1,this.trace.timeline.hoveredUtid=void 0,this.trace.timeline.hoveredPid=void 0):(t=a.utids[r],e=a.counts[r],this.utidHoveredInThisTrack=t,this.countHoveredInThisTrack=e,a=(n=this.threads.get(t))&&n.pid||-1,this.trace.timeline.hoveredUtid=t,this.trace.timeline.hoveredPid=a,o.default.redraw()))}onMouseOut(){this.utidHoveredInThisTrack=-1,this.trace.timeline.hoveredUtid=void 0,this.trace.timeline.hoveredPid=void 0,this.mousePos=void 0}}}return V2}(),v=function(){if(!q2){q2=1,Object.defineProperty(W2,\"__esModule\",{value:!0}),W2.ProcessSummaryTrack=W2.PROCESS_SUMMARY_TRACK=void 0;const s=ja(),l=Pe(),c=Fe(),u=He();var e=Kk();const i=Pi(),d=Ue();var t=ln();const r=Le(),n=De();W2.PROCESS_SUMMARY_TRACK=\"ProcessSummaryTrack\";W2.ProcessSummaryTrack=class{fetcher=new e.TimelineFetcher(this.onBoundsChange.bind(this));engine;config;uuid=(0,t.uuidv4Sql)();constructor(e,t){this.engine=e,this.config=t}async onCreate(){var e=new r.AsyncDisposableStack;e.use(await(0,n.createPerfettoTable)({engine:this.engine,name:\"tmp_\"+this.uuid,as:null!==this.config.upid?`\n          select tt.id as track_id\n          from thread_track as tt\n          join _thread_available_info_summary using (utid)\n          join thread using (utid)\n          where thread.upid = ${this.config.upid}\n          order by slice_count desc\n        `:`\n        select tt.id as track_id\n        from thread_track as tt\n        join _thread_available_info_summary using (utid)\n        where tt.utid = ${(0,l.assertExists)(this.config.utid)}\n        order by slice_count desc\n      `})),e.use(await(0,n.createPerfettoTable)({engine:this.engine,name:\"changes_\"+this.uuid,as:`\n          select ts, 1.0 as value\n          from tmp_${this.uuid}\n          cross join slice using (track_id)\n          where slice.depth = 0\n          union all\n          select ts + dur as ts, -1.0 as value\n          from tmp_${this.uuid}\n          cross join slice using (track_id)\n          where slice.depth = 0\n        `})),await(0,n.createVirtualTable)({engine:this.engine,name:\"process_summary_\"+this.uuid,using:`__intrinsic_counter_mipmap((\n        select\n          ts,\n          sum(value) over (order by ts) / (\n            select count() from tmp_${this.uuid}\n          ) as value\n        from changes_${this.uuid}\n        order by ts\n      ))`}),await e.asyncDispose()}async onUpdate({visibleWindow:e,resolution:t}){await this.fetcher.requestData(e.toTimeSpan(),t)}async onBoundsChange(e,t,r){(0,l.assertTrue)(1===s.BigintMath.popcount(r),r+\" not pow of 2\");var n=await this.engine.query(`\n      select last_ts as ts, last_value as utilization\n      from process_summary_${this.uuid}(${e}, ${t}, ${r});\n    `),a=n.numRows(),i={start:e,end:t,resolution:r,length:a,starts:new BigInt64Array(a),utilizations:new Float64Array(a)},o=n.iter({ts:d.LONG,utilization:d.NUM});for(let e=0;o.valid();o.next(),e++)i.starts[e]=o.ts,i.utilizations[e]=o.utilization;return i}async onDestroy(){await this.engine.tryQuery(`drop table if exists process_summary_${this.uuid};`),this.fetcher[Symbol.dispose]()}getHeight(){return 40}render(e){var{ctx:t,size:r,timescale:n}=e,a=this.fetcher.data;void 0!==a&&((0,i.checkerboardExcept)(t,this.getHeight(),0,r.width,n.timeToPx(a.start),n.timeToPx(a.end)),this.renderSummary(e,a))}renderSummary({ctx:t,timescale:r},n){let a=0,i=40;var e=(0,u.colorForTid)(this.config.pidForColor);t.fillStyle=e.base.cssString,t.beginPath(),t.moveTo(a,i);for(let e=0;e<n.utilizations.length;e++){var o=c.Time.fromRaw(n.starts[e]),s=n.utilizations[e];a=Math.floor(r.timeToPx(o)),t.lineTo(a,i),i=5+Math.round(35*(1-s)),t.lineTo(a,i)}t.lineTo(a,40),t.closePath(),t.fill()}}}return W2}();class t{static id=\"dev.perfetto.ProcessSummary\";static dependencies=[g.default];async onTraceLoad(e){await this.addProcessTrackGroups(e),await this.addKernelThreadSummary(e)}getCpuCountByMachine(e){var t=[];for(const r of e.traceInfo.cpus)t[r.machine]=(t[r.machine]??0)+1;return t}async addProcessTrackGroups(e){await(0,_.createPerfettoIndex)({engine:e.engine,name:\"__process_scheduling_\"+(0,y.uuidv4Sql)(),on:\"__intrinsic_sched_slice(utid)\"}),await(0,_.createPerfettoIndex)({engine:e.engine,name:\"__process_summary_\"+(0,y.uuidv4Sql)(),on:\"__intrinsic_slice(track_id)\"});for(var t=e.plugins.getPlugin(g.default).getThreadMap(),r=this.getCpuCountByMachine(e),n=(await e.engine.query(`\n      INCLUDE PERFETTO MODULE android.process_metadata;\n\n      select *\n      from (\n        select\n          _process_available_info_summary.upid,\n          null as utid,\n          process.pid,\n          null as tid,\n          process.name as processName,\n          null as threadName,\n          sum_running_dur > 0 as hasSched,\n          android_process_metadata.debuggable as isDebuggable,\n          case\n            when process.name = 'system_server' then\n              ifnull((select int_value from metadata where name = 'android_profile_system_server'), 0)\n            when process.name GLOB 'zygote*' then\n              ifnull((select int_value from metadata where name = 'android_profile_boot_classpath'), 0)\n            else 0\n          end as isBootImageProfiling,\n          ifnull((\n            select group_concat(string_value)\n            from args\n            where\n              process.arg_set_id is not null and\n              arg_set_id = process.arg_set_id and\n              flat_key = 'chrome.process_label'\n          ), '') as chromeProcessLabels,\n          ifnull(machine_id, 0) as machine\n        from _process_available_info_summary\n        join process using(upid)\n        left join android_process_metadata using(upid)\n      )\n      union all\n      select *\n      from (\n        select\n          null,\n          utid,\n          null as pid,\n          tid,\n          null as processName,\n          thread.name threadName,\n          sum_running_dur > 0 as hasSched,\n          0 as isDebuggable,\n          0 as isBootImageProfiling,\n          '' as chromeProcessLabels,\n          ifnull(machine_id, 0) as machine\n        from _thread_available_info_summary\n        join thread using (utid)\n        where upid is null\n      )\n    `)).iter({upid:m.NUM_NULL,utid:m.NUM_NULL,pid:m.NUM_NULL,tid:m.NUM_NULL,hasSched:m.NUM_NULL,isDebuggable:m.NUM_NULL,isBootImageProfiling:m.NUM_NULL,chromeProcessLabels:m.STR,machine:m.NUM});n.valid();n.next()){var a=n.upid,i=n.utid,o=n.pid,s=n.tid,l=Boolean(n.hasSched),c=Boolean(n.isDebuggable),u=Boolean(n.isBootImageProfiling),d=n.chromeProcessLabels,p=n.machine,o=o??s??a??i??0,s=(0,h.getThreadOrProcUri)(a,i),f=[];c&&f.push(\"debuggable\"),u&&f.push(\"boot image profiling\"),l?(c={pidForColor:o,upid:a,utid:i},u=r[p]??0,e.tracks.registerTrack({uri:s,tags:{kind:T.PROCESS_SCHEDULING_TRACK_KIND},chips:f,renderer:new T.ProcessSchedulingTrack(e,c,u,t),subtitle:d})):(l={pidForColor:o,upid:a,utid:i},e.tracks.registerTrack({uri:s,tags:{kind:v.PROCESS_SUMMARY_TRACK},chips:f,renderer:new v.ProcessSummaryTrack(e.engine,l),subtitle:d}))}}async addKernelThreadSummary(e){var t=e[\"engine\"],t=(await t.query(`\n      select\n        t.utid, p.upid, (case p.pid when 2 then 1 else 0 end) isKthreadd\n      from\n        thread t\n        join process p using (upid)\n        left join process parent on (p.parent_upid = parent.upid)\n        join\n          (select true from metadata m\n             where (m.name = 'system_name' and m.str_value = 'Linux')\n           union\n           select 1 from (select true from sched limit 1))\n      where\n        p.pid = 2 or parent.pid = 2\n      order by isKthreadd desc\n    `)).iter({utid:m.NUM,upid:m.NUM});t.valid()&&(t={pidForColor:2,upid:t.upid,utid:t.utid},e.tracks.registerTrack({uri:\"/kernel\",tags:{kind:v.PROCESS_SUMMARY_TRACK},renderer:new v.ProcessSummaryTrack(e.engine,t)}))}}B2.default=t}return B2}var K2,Y2={};var J2,Q2={},Z2={},X2={};function ex(){return J2||(J2=1,Object.defineProperty(X2,\"__esModule\",{value:!0}),X2.stringifyJsonWithBigints=function(e,t){return JSON.stringify(e,(e,t)=>\"bigint\"==typeof t?t.toString():t,t)}),X2}var tx,rx={};function nx(){if(tx)return rx;tx=1,Object.defineProperty(rx,\"__esModule\",{value:!0}),rx.Keycap=rx.KeycapGlyph=rx.HotkeyGlyphs=void 0;const s=Jr.__importDefault(xe()),l=ed(),c=Ee(),n=Be(),a=be();rx.HotkeyGlyphs=class{view({attrs:e}){var t,r,n,a,{hotkey:e,spoof:i,spacing:o}=e,i=i||(0,l.getPlatform)(),e=(0,l.parseHotkey)(e);return e?({key:e,modifier:a}=e,t=a.includes(\"Mod\"),r=a.includes(\"Ctrl\"),n=a.includes(\"Alt\"),a=a.includes(\"Shift\"),(0,s.default)(\"span.pf-hotkey\",t&&(0,s.default)(u,{spacing:o},\"Mac\"===i?(0,s.default)(c.Icon,{icon:\"keyboard_command_key\"}):\"Ctrl\"),r&&(0,s.default)(u,{spacing:o},\"Mac\"===i?(0,s.default)(c.Icon,{icon:\"keyboard_control_key\"}):\"Ctrl\"),n&&(0,s.default)(u,{spacing:o},\"Mac\"===i?(0,s.default)(c.Icon,{icon:\"keyboard_option_key\"}):\"Alt\"),a&&(0,s.default)(u,{spacing:o},(0,s.default)(c.Icon,{icon:\"shift\"})),(0,s.default)(u,{spacing:o},d(e,i)))):(0,s.default)(u,{spacing:o},\"???\")}};rx.KeycapGlyph=class{view({attrs:e}){var{keyValue:e,spoof:t,spacing:r}=e,t=t||(0,l.getPlatform)();return(0,s.default)(u,{spacing:r},d(e,t))}};class u{view({attrs:e,children:t}){var{spacing:r=\"medium\"}=e;return(0,s.default)(\"span.pf-keycap\",{className:(0,a.classNames)((0,n.classForSpacing)(r)),...e},t)}}function d(e,t){return\"Enter\"===e?(0,s.default)(c.Icon,{icon:\"keyboard_return\"}):\"ArrowUp\"===e?(0,s.default)(c.Icon,{icon:\"arrow_upward\"}):\"ArrowDown\"===e?(0,s.default)(c.Icon,{icon:\"arrow_downward\"}):\"Space\"===e?(0,s.default)(c.Icon,{icon:\"space_bar\"}):\"Escape\"===e?\"Mac\"===t?\"esc\":\"Esc\":e}return rx.Keycap=u,rx}var ax,ix,ox,sx={};function lx(){if(!ax){ax=1,Object.defineProperty(sx,\"__esModule\",{value:!0}),sx.ResizeHandle=void 0;const i=Jr.__importDefault(xe());sx.ResizeHandle=class{handleElement;dragging=!1;oncreate(e){this.handleElement=e.dom}view({attrs:t}){const{onResize:e,onResizeStart:r,onResizeEnd:n,...a}=t;return(0,i.default)(\".pf-resize-handle\",{onpointerdown:e=>{this.dragging=!0,this.handleElement.setPointerCapture(e.pointerId),t.onResizeStart?.()},onpointermove:e=>{e.redraw=!1,this.dragging&&t.onResize(e.movementY)},onpointerup:e=>{this.dragging&&(this.dragging=!1,this.handleElement.releasePointerCapture(e.pointerId),t.onResizeEnd?.())},...a})}}}return sx}function cx(){if(ox)return Q2;ox=1,Object.defineProperty(Q2,\"__esModule\",{value:!0});const i=Jr.__importDefault(xe()),o=Ml(),t=Rc(),r=lN(),s=function(){if(!ix){ix=1,Object.defineProperty(Z2,\"__esModule\",{value:!0}),Z2.QueryPage=void 0;const i=Jr.__importDefault(xe()),t=_i(),r=nc(),o=ex(),n=Pe(),s=Ae(),l=Ml(),a=Ic(),c=pc(),e=dN(),u=yc(),d=je(),p=Kl(),f=Be(),h=lN(),m=nx(),g=Se(),_=lx(),y=mc(),T=Ee(),v=bN(),b=Oe(),E=\"hidePerfettoSqlAgentBanner\";Z2.QueryPage=class{dataSource;editorHeight=0;editorElement;dataGridCopyHelper=new v.CopyHelper;oncreate({dom:e}){this.editorElement=(0,t.toHTMLElement)((0,n.assertExists)((0,t.findRef)(e,\"editor\"))),this.editorElement.style.height=\"200px\"}onbeforeupdate(e,t){e.attrs.queryResult!==t.attrs.queryResult&&(e.attrs.queryResult?this.dataSource=new c.InMemoryDataSource(e.attrs.queryResult.rows):this.dataSource=void 0)}view({attrs:t}){return(0,i.default)(\".pf-query-page\",(0,i.default)(u.Box,{className:\"pf-query-page__toolbar\"},[(0,i.default)(y.Stack,{orientation:\"horizontal\"},[(0,i.default)(d.Button,{label:\"Run Query\",icon:\"play_arrow\",intent:f.Intent.Primary,variant:d.ButtonVariant.Filled,onclick:()=>{t.onExecute?.(t.editorText)}}),(0,i.default)(y.Stack,{orientation:\"horizontal\",className:\"pf-query-page__hotkeys\"},\"or press\",(0,i.default)(m.HotkeyGlyphs,{hotkey:\"Mod+Enter\"})),(0,i.default)(y.StackAuto),t.trace.isInternalUser&&(0,i.default)(d.Button,{icon:\"wand_stars\",title:\"Generate SQL queries with the Perfetto SQL Agent! Give feedback: go/perfetto-llm-bug\",label:\"Generate SQL Queries with AI\",onclick:()=>{window.open(\"http://go/perfetto-sql-agent\",\"_blank\")}}),(0,i.default)(v.CopyToClipboardButton,{textToCopy:t.editorText,title:\"Copy query to clipboard\",label:\"Copy Query\"})])]),this.shouldDisplayPerfettoSqlAgentBanner(t)&&(0,i.default)(u.Box,(0,i.default)(p.Callout,{icon:\"wand_stars\",dismissable:!0,onDismiss:()=>{this.hidePerfettoSqlAgentBanner()}},[\"Try out the \",(0,i.default)(b.Anchor,{href:\"http://go/perfetto-sql-agent\",target:\"_blank\",icon:s.Icons.ExternalLink},\"Perfetto SQL Agent\"),\" to generate SQL queries and \",(0,i.default)(b.Anchor,{href:\"http://go/perfetto-llm-user-guide#report-issues\",target:\"_blank\",icon:s.Icons.ExternalLink},\"give feedback\"),\"!\"])),t.editorText.includes('\"')&&(0,i.default)(u.Box,(0,i.default)(p.Callout,{icon:\"warning\",intent:f.Intent.None},\"\\\" (double quote) character observed in query; if this is being used to define a string, please use ' (single quote) instead. Using double quotes can cause subtle problems which are very hard to debug.\")),(0,i.default)(h.Editor,{ref:\"editor\",language:\"perfetto-sql\",text:t.editorText,onUpdate:t.onEditorContentUpdate,onExecute:t.onExecute}),(0,i.default)(_.ResizeHandle,{onResize:e=>{this.editorHeight+=e,this.editorElement.style.height=this.editorHeight+\"px\"},onResizeStart:()=>{this.editorHeight=this.editorElement.clientHeight}}),this.dataSource&&t.queryResult&&this.renderQueryResult(t.queryResult,this.dataSource),(0,i.default)(e.QueryHistoryComponent,{className:\"pf-query-page__history\",trace:t.trace,runQuery:e=>{t.onExecute?.(e)},setQuery:e=>{t.onEditorContentUpdate?.(e)}}))}renderQueryResult(e,t){var r=e.durationMs.toFixed(1)+\" ms\";return e.error?(0,i.default)(\".pf-query-page__query-error\",\"SQL error: \"+e.error):[1<e.statementWithOutputCount&&(0,i.default)(u.Box,[(0,i.default)(p.Callout,{icon:\"warning\",intent:f.Intent.None},[`${e.statementWithOutputCount} out of ${e.statementCount} `,\"statements returned a result. \",\"Only the results for the last statement are displayed.\"])]),(0,i.default)(a.DataGrid,{className:\"pf-query-page__results\",data:t,columns:e.columns.map(e=>({name:e})),toolbarItemsLeft:(0,i.default)(\"span.pf-query-page__elapsed-time\",{title:\"This query returned in \"+r},[(0,i.default)(T.Icon,{icon:\"timer\"}),\" \",r]),toolbarItemsRight:[this.renderCopyButton(e),this.renderDownloadButton(e)]})]}renderCopyButton(t){const r=this.dataGridCopyHelper;var e=r.copied?\"Copied\":\"Copy\",n=r.copied?s.Icons.Check:s.Icons.Copy,a=r.copied?f.Intent.Success:f.Intent.None;return(0,i.default)(g.PopupMenu,{trigger:(0,i.default)(d.Button,{icon:n,intent:a,title:\"Copy results to clipboard\",label:e})},[(0,i.default)(g.MenuItem,{label:\"TSV\",onclick:async()=>{var e=(0,l.formatAsDelimited)(t);await r.copy(e)}}),(0,i.default)(g.MenuItem,{label:\"Markdown\",onclick:async()=>{var e=(0,l.formatAsMarkdownTable)(t);await r.copy(e)}}),(0,i.default)(g.MenuItem,{label:\"JSON\",onclick:async()=>{var e=(0,o.stringifyJsonWithBigints)(t.rows);await r.copy(e)}})])}renderDownloadButton(t){return(0,i.default)(g.PopupMenu,{trigger:(0,i.default)(d.Button,{icon:s.Icons.Download,title:\"Download data\",label:\"Download\"})},[(0,i.default)(g.MenuItem,{label:\"TSV\",onclick:()=>{var e=(0,l.formatAsDelimited)(t);(0,r.download)({content:e,mimeType:\"text/tab-separated-values\",fileName:\"query_result.tsv\"})}}),(0,i.default)(g.MenuItem,{label:\"Markdown\",onclick:()=>{var e=(0,l.formatAsMarkdownTable)(t);(0,r.download)({content:e,mimeType:\"text/markdown\",fileName:\"query_result.md\"})}}),(0,i.default)(g.MenuItem,{label:\"JSON\",onclick:()=>{var e=(0,o.stringifyJsonWithBigints)(t.rows,2);(0,r.download)({content:e,mimeType:\"text/json\",fileName:\"query_result.json\"})}})])}shouldDisplayPerfettoSqlAgentBanner(e){return e.trace.isInternalUser&&\"true\"!==localStorage.getItem(E)}hidePerfettoSqlAgentBanner(){localStorage.setItem(E,\"true\")}}}return Z2}(),l=dN(),n=lx(),a=_i(),c=Pe(),u=Nc();class d{static id=\"dev.perfetto.QueryPage\";static addQueryPageMiniFlag;static onActivate(e){d.addQueryPageMiniFlag=e.featureFlags.register({id:\"dev.perfetto.QueryPage\",name:\"Enable mini query page tab\",defaultValue:!1,description:\"Enables a tab version of the query page that allows query tab - like functionality in the tab drawer\"})}async onTraceLoad(t){let r,n,a=\"\";const e=async e=>{e&&(l.queryHistoryStorage.saveQuery(e),r=e,n=await(n=void 0,o.runQueryForQueryTable)(e,t.engine),(0,u.addQueryResultsTab)(t,{query:r,title:\"Standalone Query\",prefetchedResponse:n},\"analyze_page_query\"))};t.pages.registerPage({route:\"/query\",render:()=>(0,i.default)(s.QueryPage,{trace:t,editorText:a,executedQuery:r,queryResult:n,onEditorContentUpdate:e=>a=e,onExecute:e})}),t.sidebar.addMenuItem({section:\"current_trace\",text:\"Query (SQL)\",href:\"#!/query\",icon:\"database\",sortOrder:1}),d.addQueryPageMiniFlag.get()&&t.tabs.registerTab({uri:\"dev.perfetto.QueryPage\",isEphemeral:!1,content:{render(){return(0,i.default)(p,{trace:t,editorText:a,executedQuery:r,queryResult:n,onEditorContentUpdate:e=>a=e,onExecute:e})},getTitle(){return\"QueryPage Mini\"}}})}}Q2.default=d;class p{editorHeight=0;editorElement;oncreate({dom:e}){this.editorElement=(0,a.toHTMLElement)((0,c.assertExists)((0,a.findRef)(e,\"editor\"))),this.editorElement.style.height=\"200px\"}view({attrs:e}){return(0,i.default)(\".pf-query-page-mini\",(0,i.default)(r.Editor,{ref:\"editor\",language:\"perfetto-sql\",onUpdate:e.onEditorContentUpdate,onExecute:e.onExecute}),(0,i.default)(n.ResizeHandle,{onResize:e=>{this.editorHeight+=e,this.editorElement.style.height=this.editorHeight+\"px\"},onResizeStart:()=>{this.editorHeight=this.editorElement.clientHeight}}),void 0===e.executedQuery?null:(0,i.default)(t.QueryTable,{trace:e.trace,query:e.executedQuery,resp:e.queryResult,fillParent:!1}))}}return Q2}var ux,dx,px={},fx={},hx={},mx={};function gx(){if(!ux){ux=1,Object.defineProperty(mx,\"__esModule\",{value:!0}),mx.ResizableArrayBuffer=void 0;const n=Pe();mx.ResizableArrayBuffer=class{initialSize;buf;_size=0;constructor(e=128){this.initialSize=e,this.buf=new Uint8Array(e)}append(e){var t=this._size+e.length;this.capacity<t&&this.grow(t),this.buf.set(e,this._size),this._size=t}shrink(e){(0,n.assertTrue)(e<=this._size),this._size=e}clear(){this.buf=new Uint8Array(this.initialSize),this._size=0}get(){return this.buf.subarray(0,this._size)}get size(){return this._size}get capacity(){return this.buf.length}grow(e){let t=this.buf.length;for(;(t=t<33554432?2*t:t+33554432)<e;);var r=new Uint8Array(t);(0,n.assertTrue)(r.length>=e),r.set(this.buf),this.buf=r}}}return mx}function _x(){if(!dx){dx=1,Object.defineProperty(hx,\"__esModule\",{value:!0}),hx.AsyncWebsocket=void 0;const a=Ja(),n=Pe();var e=gx();const r=j();class i{sock;rxBuf=new e.ResizableArrayBuffer(128);rxBufRead=0;rxPromise;rxPromiseBytes=0;static async connect(e){const t=new WebSocket(e);t.binaryType=\"arraybuffer\";e=t.readyState;if(e!==WebSocket.CLOSED&&e!==WebSocket.CLOSED){const r=(0,a.defer)(),n=e=>{t.onclose=null,t.onopen=null,e?r.resolve(new i(t)):r.resolve(void 0)};return t.onopen=()=>n(!0),t.onclose=()=>n(!1),r}}constructor(e){(this.sock=e).onmessage=this.onSocketMessage.bind(this)}release(){var e=(0,n.assertExists)(this.sock);return this.sock=void 0,e.onmessage=null,e.onopen=null,e.onclose=null,e.onerror=null,e}send(e){(0,n.assertExists)(this.sock).send(e)}waitForData(e=-1){if(void 0!==this.rxPromise)throw new Error(\"Another unresolved waitForData() is pending already\");var t=(0,a.defer)();return 0===e?t.resolve(new Uint8Array):(this.rxPromise=t,this.rxPromiseBytes=e,this.resolveRxPromiseIfEnoughDataAvail()),t}close(){this.sock?.close()}get connected(){return this.sock?.readyState===WebSocket.OPEN}[Symbol.dispose](){this.close()}async waitForString(e=-1){var t=await this.waitForData(e);return(0,n.assertTrue)(t.length===e||-1===e),(0,r.utf8Decode)(t)}async onSocketMessage(e){let t;t=\"string\"==typeof e.data?(0,r.utf8Encode)(e.data):((0,n.assertTrue)(e.data instanceof ArrayBuffer),new Uint8Array(e.data)),this.rxBuf.append(t),this.resolveRxPromiseIfEnoughDataAvail()}resolveRxPromiseIfEnoughDataAvail(){if(void 0!==this.rxPromise){var t=this.rxPromiseBytes,r=this.rxBuf.size-this.rxBufRead;let e;if(-1===t&&0<r)e=this.rxBuf.get().slice(),this.rxBuf.clear();else{if(r<t||-1===t)return;e=this.rxBuf.get().slice(this.rxBufRead,this.rxBufRead+this.rxPromiseBytes),(0,n.assertTrue)(e.length===t),this.rxBufRead+=t}r=this.rxPromise;this.rxPromise=void 0,this.rxPromiseBytes=0,r.resolve(e)}}}hx.AsyncWebsocket=i}return hx}var yx,Tx,vx={},bx={},Ex={},Sx={},Ax={};function Ox(){if(yx)return Ax;yx=1,Object.defineProperty(Ax,\"__esModule\",{value:!0}),Ax.PacketAssembler=void 0;const o=gx(),s=Me();Ax.PacketAssembler=class{curPacketSlices=new Array;pushSlices(e){const t=new o.ResizableArrayBuffer(4096);for(const i of e.slices??[])if((0,s.exists)(i.data)&&(this.curPacketSlices.push(i.data),Boolean(i.lastSliceForPacket))){var r=this.curPacketSlices.splice(0),n=r.reduce((e,t)=>e+t.length,0),a=[l];let e=n;for(;a.push(127&e|(127<e?128:0)),0<(e>>>=7););t.append(a),r.forEach(e=>t.append(e))}return t.get()}};const l=10;return Ax}function Cx(){if(Tx)return Sx;Tx=1,Object.defineProperty(Sx,\"__esModule\",{value:!0}),Sx.PacketStream=Sx.TracingProtocol=void 0;var e=Jr;const n=e.__importDefault(Qr()),s=e.__importDefault(dh()),l=Th(),c=Ja(),i=Me(),u=Pe();var t=Ox(),r=gx();class d{stream;serviceId;boundMethods;rxBuf=new l.ProtoRingBuffer(\"FIXED_SIZE\");pendingInvokes=new Map;requestId=2;onClose=()=>{};static async create(e){var t=new s.default.IPCFrame({requestId:1,msgBindService:new s.default.IPCFrame.BindService({serviceName:\"ConsumerPort\"})});const r=(0,c.defer)(),n=new l.ProtoRingBuffer(\"FIXED_SIZE\");e.onData=e=>{n.append(e);e=n.readMessage();e&&r.resolve(e)},d.sendFrame(e,t);var t=await r,t=s.default.IPCFrame.decode(t),t=((0,u.assertTrue)(\"msgBindServiceReply\"===t.msg),(0,u.assertExists)(t.msgBindServiceReply)),a=new Map,i=((0,u.assertTrue)(!0===t.success),(0,u.assertExists)(t.serviceId));for(const o of(0,u.assertExists)(t.methods))a.set((0,u.assertExists)(o.name),(0,u.assertExists)(o.id));return new d(e,i,a)}constructor(e,t,r){this.stream=e,this.serviceId=t,this.boundMethods=r,e.onData=this.onStreamData.bind(this),e.onClose=()=>this.close()}async invoke(e,t){const r=o[e],n=(0,c.defer)();var a={methodName:e,failSilently:\"failSilently\"in r&&r.failSilently,onResponse:(e,t)=>{(0,u.assertFalse)(t);t=(0,i.exists)(e)?r.respType.decode(e):r.respType.create();n.resolve(t)}};return this.beginInvoke(e,t,a),n}invokeStreaming(e,t){const r=p[e].respType.createStreamingDecoder();return this.beginInvoke(e,t,{methodName:e,onResponse:(e,t)=>{r.decode(e,t)}}),r}close(){this.stream.connected&&this.stream.close(),this.pendingInvokes.clear(),this.onClose()}get connected(){return this.stream.connected}[Symbol.dispose](){this.close()}beginInvoke(e,t,r){var n=this.boundMethods.get(e);if(void 0===n)throw new Error(`RPC Error: method ${e} not supported`);var a=this.requestId++,e=(e in o?o:p)[e].argType.encode(t).finish(),t=new s.default.IPCFrame({requestId:a,msgInvokeMethod:new s.default.IPCFrame.InvokeMethod({serviceId:this.serviceId,methodId:n,argsProto:e})});d.sendFrame(this.stream,t),this.pendingInvokes.set(a,r)}onStreamData(e){for(this.rxBuf.append(e);;){var t=this.rxBuf.readMessage();if(void 0===t)break;this.parseFrame(t)}}parseFrame(e){e=s.default.IPCFrame.decode(e.slice());if(\"msgInvokeMethodReply\"!==e.msg)throw new Error(\"Tracing protocol: unrecognized frame \"+e.msg);var t=(0,u.assertExists)(e.msgInvokeMethodReply),r=(0,u.assertExists)(this.pendingInvokes.get(e.requestId));if(!1===t.success&&!r.failSilently)throw new Error(`Tracing Protocol: ${r.methodName} failed`);r.onResponse(t.replyProto??void 0,Boolean(t.hasMore)),t.hasMore||this.pendingInvokes.delete(e.requestId)}static sendFrame(e,t){var r=n.default.Writer.create(),t=(r.fixed32(0),s.default.IPCFrame.encode(t,r).finish().slice()),r=t.length-4;return new DataView(t.buffer).setUint32(0,r,!0),e.write(t)}}Sx.TracingProtocol=d;class a{static createStreamingDecoder(){return new a}traceBuf=new t.PacketAssembler;onTraceData=()=>{};decode(e,t){void 0===e?this.onTraceData(new Uint8Array,t):(e=s.default.ReadBuffersResponse.decode(e),e=this.traceBuf.pushSlices(e),this.onTraceData(e,t))}}Sx.PacketStream=a;const o={EnableTracing:{argType:s.default.EnableTracingRequest,respType:s.default.EnableTracingResponse},DisableTracing:{argType:s.default.DisableTracingRequest,respType:s.default.DisableTracingResponse},Flush:{argType:s.default.FlushRequest,respType:s.default.FlushResponse,failSilently:!0},FreeBuffers:{argType:s.default.FreeBuffersRequest,respType:s.default.FreeBuffersResponse},GetTraceStats:{argType:s.default.GetTraceStatsRequest,respType:s.default.GetTraceStatsResponse}},p={ReadBuffers:{argType:s.default.ReadBuffersRequest,respType:a},QueryServiceState:{argType:s.default.QueryServiceStateRequest,respType:class f{static createStreamingDecoder(){return new f}rxBuf=new r.ResizableArrayBuffer;promise=(0,c.defer)();decode(e,t){void 0!==e&&this.rxBuf.append(e),t||(e=s.default.QueryServiceStateResponse.decode(this.rxBuf.get()),this.rxBuf.clear(),this.promise.resolve(e))}}}};return Sx}var wx,kx,Ix,Rx={};function Nx(){if(!wx){wx=1,Object.defineProperty(Rx,\"__esModule\",{value:!0}),Rx.ConsumerIpcTracingSession=void 0;const a=Jr.__importDefault(dh());var e=wf(),t=gx();Rx.ConsumerIpcTracingSession=class{consumerIpc;_state=\"RECORDING\";logs=new Array;traceBuf=new t.ResizableArrayBuffer(65536);onSessionUpdate=new e.EvtSource;constructor(e,t){this.consumerIpc=e,this.consumerIpc.onClose=this.onProtocolClose.bind(this),this.start(t)}get state(){return this._state}async start(e){var t=new a.default.EnableTracingRequest({traceConfig:e}),e=(this.log(\"Starting trace, durationMs: \"+e.durationMs),await this.consumerIpc.invoke(\"EnableTracing\",t));this.onTraceStopped(e.error)}async stop(){var e;\"RECORDING\"===this._state&&(this.setState(\"STOPPING\"),this.log(\"Flushing data sources\"),await this.consumerIpc.invoke(\"Flush\",new a.default.FlushRequest({flags:34})),this.log(\"Flush complete, stopping trace\"),e=new a.default.DisableTracingRequest({}),await this.consumerIpc.invoke(\"DisableTracing\",e))}async cancel(){var e;[\"RECORDING\",\"STOPPING\"].includes(this._state)&&(e=new a.default.FreeBuffersRequest({}),await this.consumerIpc.invoke(\"FreeBuffers\",e),this.fail(\"Trace cancelled\"))}async getBufferUsagePct(){if(\"RECORDING\"===this._state){var r=new a.default.GetTraceStatsRequest({});let e=0,t=0;for(const n of(await this.consumerIpc.invoke(\"GetTraceStats\",r)).traceStats?.bufferStats??[])e+=n.bufferSize??0,t+=Math.min(n.bytesWritten??0,n.bufferSize??0);return Math.min(Math.round(100*t/e),100)}}onTraceStopped(e){\"\"!==e?this.fail(e):void 0!==this.consumerIpc&&[\"STOPPING\",\"RECORDING\"].includes(this._state)&&(this.setState(\"STOPPING\"),this.log(\"Tracing stopped. Reading back data\"),e=new a.default.ReadBuffersRequest({}),this.consumerIpc.invokeStreaming(\"ReadBuffers\",e).onTraceData=this.onTraceData.bind(this))}getTraceData(){if(\"FINISHED\"===this._state)return this.traceBuf.get()}onTraceData(e,t){this.traceBuf.append(e),t||(this.setState(\"FINISHED\"),this.consumerIpc?.close())}onProtocolClose(){\"RECORDING\"===this._state&&(this.setState(\"ERRORED\"),this.fail(\"Protocol disconnected\"))}setState(e){this._state=e,this.onSessionUpdate.notify()}log(e,t=!1){this.logs.push({message:e,timestamp:new Date,isError:t}),this.onSessionUpdate.notify()}fail(e){this.log(\"Tracing failed: \"+e,!0),this.setState(\"ERRORED\"),this.consumerIpc.close()}}}return Rx}function Mx(){if(!kx){kx=1;{var l=Ex;Object.defineProperty(l,\"__esModule\",{value:!0}),l.CONSUMER_SOCKET=void 0,l.createAdbTracingSession=async function(e,t){e=await e.createStream(\"localfilesystem:\"+l.CONSUMER_SOCKET);if(!e.ok)return e;e=e.value,e=await d.TracingProtocol.create(e),e=new r.ConsumerIpcTracingSession(e,t);return(0,p.okResult)(e)},l.getAdbTracingServiceState=async function(e){var t={stack:[],error:void 0,hasError:!1};try{var r,n,a,i,o=l.CONSUMER_SOCKET,s=await e.createStream(\"localfilesystem:\"+o);return s.ok?(r=s.value,n=c.__addDisposableResource(t,await d.TracingProtocol.create(r),!1),a=new u.default.QueryServiceStateRequest({}),i=await n.invokeStreaming(\"QueryServiceState\",a).promise,(0,f.exists)(i.serviceState)?(0,p.okResult)(i.serviceState):(0,p.errResult)(\"Failed to decode QueryServiceStateResponse\")):(0,p.errResult)(`Failed to connect to ${o}: `+s.error)}catch(e){t.error=e,t.hasError=!0}finally{c.__disposeResources(t)}};const c=Jr,u=c.__importDefault(dh()),d=Cx(),p=Tl(),f=Me(),r=Nx();l.CONSUMER_SOCKET=\"/dev/socket/traced_consumer\"}}return Ex}function Px(){if(!Ix){Ix=1,Object.defineProperty(bx,\"__esModule\",{value:!0}),bx.checkAndroidTarget=async function*(r){yield{name:\"Android version\",status:await(async()=>{var e,t=await r.shell(\"getprop ro.build.version.sdk\");return t.ok?(e=parseInt(t.value))<29?(0,n.errResult)(\"Android API level 29+ (Q+) required\"):(0,n.okResult)(`API level ${e} >= 29`):t})()},yield{name:\"traced running?\",status:await(async()=>{var e=await r.shell(\"pidof traced\");return e.ok?isFinite(parseInt(e.value))?(0,n.okResult)(\"pid = \"+e.value):(0,n.errResult)(\"Not running. Try `adb shell setprop persist.traced.enable 1`\"):e})()};const t=await(0,e.getAdbTracingServiceState)(r);yield{name:\"Traced version\",status:await(t.ok?(0,n.okResult)(t.value.tracingServiceVersion??\"N/A\"):t)},void 0!==t&&(yield{name:\"Traced state\",status:await(async()=>{var e;return t.ok?(e=t.value,(0,n.okResult)(`#producers: ${e.producers?.length??\"N/A\"}, `+`#datasources: ${e.dataSources?.length??\"N/A\"}, `+\"#sessions: \"+(e.numSessionsStarted??\"N/A\"))):t})()})};const n=Tl(),e=Mx()}return bx}var Dx,xx,Lx={},Fx={},Ux={};function Bx(){if(!Dx){Dx=1,Object.defineProperty(Ux,\"__esModule\",{value:!0}),Ux.ByteStream=void 0;Ux.ByteStream=class{onData=()=>{};onClose=()=>{}}}return Ux}function jx(){if(!xx){xx=1,Object.defineProperty(Fx,\"__esModule\",{value:!0}),Fx.WebSocketStream=void 0;const t=Pe();class e extends Bx().ByteStream{sock;constructor(e){super(),(this.sock=e).binaryType=\"arraybuffer\",e.onclose=()=>this.onClose(),e.onmessage=async e=>{(0,t.assertTrue)(e.data instanceof ArrayBuffer),this.onData(new Uint8Array(e.data))}}get connected(){return this.sock.readyState===WebSocket.OPEN}async write(e){this.sock.send(e)}close(){this.sock.close()}}Fx.WebSocketStream=e}return Fx}var Hx,Gx={};function Vx(){if(!Hx){Hx=1,Object.defineProperty(Gx,\"__esModule\",{value:!0}),Gx.AdbDevice=void 0;const a=Ja(),i=gx(),o=Tl(),s=j();Gx.AdbDevice=class{async shell(e){const t=new i.ResizableArrayBuffer,r=(0,a.defer)();var n,e=await this.createStream(\"shell:\"+e);return e.ok?((n=e.value).onData=e=>t.append(e),n.onClose=()=>{r.resolve((0,s.utf8Decode)(t.get()))},n=(await r).trimEnd(),(0,o.okResult)(n)):e}}}return Gx}var qx,zx,Wx,$x={},Kx={};function Yx(){return qx||(qx=1,Object.defineProperty(Kx,\"__esModule\",{value:!0}),Kx.prefixWithHexLen=function(e){var t=e.length.toString(16).padStart(4,\"0\");return t+e},Kx.websocketInstructions=function(e){return\"Instructions:\\n\"+(\"ANDROID\"===e?\"adb start-server\\n\":\"\")+\"curl -LO https://get.perfetto.dev/tracebox\\nchmod +x ./tracebox\\n./tracebox websocket_bridge\\n\"},Kx.disposeWebsocket=function(e){e.onclose=null,e.onerror=null,e.onmessage=null,e.onopen=null;try{e.close()}catch{}}),Kx}function Jx(){if(!zx){zx=1,Object.defineProperty($x,\"__esModule\",{value:!0}),$x.adbCmdAndWait=async function(e,t,r){e.send((0,i.prefixWithHexLen)(t));t=await e.waitForString(4);return\"FAIL\"===t||\"OKAY\"===t&&r?(r=await e.waitForString(4),r=parseInt(r,16),(0,n.assertTrue)(!isNaN(r)),e=await e.waitForString(r),(\"OKAY\"===t?(0,a.okResult):(0,a.errResult))(e)):\"OKAY\"===t?(0,a.okResult)(\"\"):(0,a.errResult)(\"ADB protocol error, hdr \"+t)};const n=Pe(),a=Tl(),i=Yx()}return $x}function Qx(){if(!Wx){Wx=1,Object.defineProperty(Lx,\"__esModule\",{value:!0}),Lx.AdbWebsocketDevice=void 0;const i=Tl(),n=jx();var e=Vx();const a=Jx(),o=_x();class s extends e.AdbDevice{wsUrl;deviceSerial;transportSock;mode;streams=new Array;constructor(e,t,r,n){super(),this.wsUrl=e,this.deviceSerial=t,this.transportSock=r,this.mode=n}static async connect(e,t,r){var n,a=await this.connectToTransport(e,t,r);return a.ok?(n=a.value,(0,i.okResult)(new s(e,t,n,r))):a}static async connectToTransport(e,t,r){var n=await o.AsyncWebsocket.connect(e);if(void 0===n)return(0,i.errResult)(`Connection to ${e} failed`);if(\"WEBSOCKET_BRIDGE\"===r){e=\"host:transport:\"+t,r=await(0,a.adbCmdAndWait)(n,e,!1);if(!r.ok)return r}return(0,i.okResult)(n)}async createStream(e){var t=await s.connectToTransport(this.wsUrl,this.deviceSerial,this.mode);if(!t.ok)return t;t=t.value;if(\"WEBSOCKET_BRIDGE\"===this.mode){var r=await(0,a.adbCmdAndWait)(t,e,!1);if(!r.ok)return r}else\"WEB_DEVICE_PROXY\"===this.mode&&t.send(JSON.stringify({header:{serialNumber:this.deviceSerial,command:e}}));r=new n.WebSocketStream(t.release());return this.streams.push(r),(0,i.okResult)(r)}get connected(){return this.transportSock.connected}close(){this.transportSock.close(),this.streams.forEach(e=>e.close()),this.streams.splice(0)}}Lx.AdbWebsocketDevice=s}return Lx}var Zx,Xx,eL,tL,rL={},nL={};function aL(){if(!Xx){Xx=1,Object.defineProperty(rL,\"__esModule\",{value:!0}),rL.AsyncLazy=void 0;const e=function(){if(!Zx){Zx=1,Object.defineProperty(nL,\"__esModule\",{value:!0}),nL.AsyncGuard=void 0;nL.AsyncGuard=class{pendingPromise;run(e){return void 0===this.pendingPromise&&(this.pendingPromise=e(),this.pendingPromise.finally(()=>{this.pendingPromise=void 0})),this.pendingPromise}}}return nL}(),t=Tl();rL.AsyncLazy=class{_value;guard=new e.AsyncGuard;getOrCreate(e){return void 0!==this._value?Promise.resolve((0,t.okResult)(this._value)):((e=this.guard.run(e)).then(e=>{e.ok&&(this._value=e.value)}),e)}get value(){return this._value}reset(){this._value=void 0,this.guard=new e.AsyncGuard}}}return rL}function iL(){if(!eL){eL=1,Object.defineProperty(vx,\"__esModule\",{value:!0}),vx.AdbWebsocketTarget=void 0;const t=Tl(),r=Px(),n=Mx(),a=Qx();var e=aL();vx.AdbWebsocketTarget=class{wsUrl;serial;model;kind=\"LIVE_RECORDING\";platform=\"ANDROID\";transportType=\"WebSocket\";adbDevice=new e.AsyncLazy;constructor(e,t,r){this.wsUrl=e,this.serial=t,this.model=r}get id(){return this.serial}get name(){return`${this.model} [${this.serial}]`}get connected(){return this.adbDevice.value?.connected??!1}async*runPreflightChecks(){var e;yield{name:\"WebSocket connection\",status:await((e=await this.connectIfNeeded()).ok?(0,t.okResult)(\"connected\"):e)},void 0!==this.adbDevice.value&&(yield*(0,r.checkAndroidTarget)(this.adbDevice.value))}async connectIfNeeded(){return this.adbDevice.getOrCreate(()=>a.AdbWebsocketDevice.connect(this.wsUrl,this.serial,\"WEBSOCKET_BRIDGE\"))}disconnect(){this.adbDevice.value?.close(),this.adbDevice.reset()}async getServiceState(){return void 0===this.adbDevice.value?(0,t.errResult)(\"WebSocket transport disconnected\"):(0,n.getAdbTracingServiceState)(this.adbDevice.value)}async startTracing(e){var t=await this.connectIfNeeded();return t.ok?(0,n.createAdbTracingSession)(t.value,e):t}}}return vx}var oL,sL,lL,cL={},uL={},dL={},pL={exports:{}};function fL(){var L;return oL||(oL=1,L=pL,function(){var e,t=\"undefined\"!=typeof navigator&&\"undefined\"!=typeof window;function _(e,t,r){null!=e&&(\"number\"==typeof e?this.fromNumber(e,t,r):null==t&&\"string\"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function y(){return new _(null)}e=t&&\"Microsoft Internet Explorer\"==navigator.appName?(_.prototype.am=function(e,t,r,n,a,i){for(var o=32767&t,s=t>>15;0<=--i;){var l=32767&this[e],c=this[e++]>>15,u=s*l+c*o;a=((l=o*l+((32767&u)<<15)+r[n]+(1073741823&a))>>>30)+(u>>>15)+s*c+(a>>>30),r[n++]=1073741823&l}return a},30):t&&\"Netscape\"!=navigator.appName?(_.prototype.am=function(e,t,r,n,a,i){for(;0<=--i;){var o=t*this[e++]+r[n]+a;a=Math.floor(o/67108864),r[n++]=67108863&o}return a},26):(_.prototype.am=function(e,t,r,n,a,i){for(var o=16383&t,s=t>>14;0<=--i;){var l=16383&this[e],c=this[e++]>>14,u=s*l+c*o;a=((l=o*l+((16383&u)<<14)+r[n]+a)>>28)+(u>>14)+s*c,r[n++]=268435455&l}return a},28),_.prototype.DB=e,_.prototype.DM=(1<<e)-1,_.prototype.DV=1<<e;_.prototype.FV=Math.pow(2,52),_.prototype.F1=52-e,_.prototype.F2=2*e-52;for(var r=\"0123456789abcdefghijklmnopqrstuvwxyz\",n=new Array,a=\"0\".charCodeAt(0),i=0;i<=9;++i)n[a++]=i;for(a=\"a\".charCodeAt(0),i=10;i<36;++i)n[a++]=i;for(a=\"A\".charCodeAt(0),i=10;i<36;++i)n[a++]=i;function l(e){return r.charAt(e)}function c(e,t){e=n[e.charCodeAt(t)];return null==e?-1:e}function g(e){var t=y();return t.fromInt(e),t}function T(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function v(e){this.m=e}function b(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}v.prototype.convert=function(e){return e.s<0||0<=e.compareTo(this.m)?e.mod(this.m):e},v.prototype.revert=function(e){return e},v.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},v.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},v.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},b.prototype.convert=function(e){var t=y();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&0<t.compareTo(_.ZERO)&&this.m.subTo(t,t),t},b.prototype.revert=function(e){var t=y();return e.copyTo(t),this.reduce(t),t},b.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],n=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),0<=e.compareTo(this.m)&&e.subTo(this.m,e)},b.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},b.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},_.prototype.copyTo=function(e){for(var t=this.t-1;0<=t;--t)e[t]=this[t];e.t=this.t,e.s=this.s},_.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,0<e?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},_.prototype.fromString=function(e,t){var r;if(16==t)r=4;else if(8==t)r=3;else if(256==t)r=8;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return void this.fromRadix(e,t);r=2}this.t=0,this.s=0;for(var n=e.length,a=!1,i=0;0<=--n;){var o=8==r?255&e[n]:c(e,n);o<0?\"-\"==e.charAt(n)&&(a=!0):(a=!1,0==i?this[this.t++]=o:i+r>this.DB?(this[this.t-1]|=(o&(1<<this.DB-i)-1)<<i,this[this.t++]=o>>this.DB-i):this[this.t-1]|=o<<i,(i+=r)>=this.DB&&(i-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,0<i)&&(this[this.t-1]|=(1<<this.DB-i)-1<<i),this.clamp(),a&&_.ZERO.subTo(this,this)},_.prototype.clamp=function(){for(var e=this.s&this.DM;0<this.t&&this[this.t-1]==e;)--this.t},_.prototype.dlShiftTo=function(e,t){for(var r=this.t-1;0<=r;--r)t[r+e]=this[r];for(r=e-1;0<=r;--r)t[r]=0;t.t=this.t+e,t.s=this.s},_.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},_.prototype.lShiftTo=function(e,t){for(var r=e%this.DB,n=this.DB-r,a=(1<<n)-1,i=Math.floor(e/this.DB),o=this.s<<r&this.DM,s=this.t-1;0<=s;--s)t[s+i+1]=this[s]>>n|o,o=(this[s]&a)<<r;for(s=i-1;0<=s;--s)t[s]=0;t[i]=o,t.t=this.t+i+1,t.s=this.s,t.clamp()},_.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var n=e%this.DB,a=this.DB-n,i=(1<<n)-1;t[0]=this[r]>>n;for(var o=r+1;o<this.t;++o)t[o-r-1]|=(this[o]&i)<<a,t[o-r]=this[o]>>n;0<n&&(t[this.t-r-1]|=(this.s&i)<<a),t.t=this.t-r,t.clamp()}},_.prototype.subTo=function(e,t){for(var r=0,n=0,a=Math.min(e.t,this.t);r<a;)n+=this[r]-e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n-=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n-=e[r],t[r++]=n&this.DM,n>>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:0<n&&(t[r++]=n),t.t=r,t.clamp()},_.prototype.multiplyTo=function(e,t){var r=this.abs(),n=e.abs(),a=r.t;for(t.t=a+n.t;0<=--a;)t[a]=0;for(a=0;a<n.t;++a)t[a+r.t]=r.am(0,n[a],t,a,0,r.t);t.s=0,t.clamp(),this.s!=e.s&&_.ZERO.subTo(t,t)},_.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;0<=--r;)e[r]=0;for(r=0;r<t.t-1;++r){var n=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,n,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}0<e.t&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},_.prototype.divRemTo=function(e,t,r){var n=e.abs();if(!(n.t<=0)){var a=this.abs();if(a.t<n.t)null!=t&&t.fromInt(0),null!=r&&this.copyTo(r);else{null==r&&(r=y());var i=y(),o=this.s,e=e.s,s=this.DB-T(n[n.t-1]),l=(0<s?(n.lShiftTo(s,i),a.lShiftTo(s,r)):(n.copyTo(i),a.copyTo(r)),i.t),c=i[l-1];if(0!=c){var n=c*(1<<this.F1)+(1<l?i[l-2]>>this.F2:0),u=this.FV/n,d=(1<<this.F1)/n,p=1<<this.F2,f=r.t,h=f-l,m=null==t?y():t;for(i.dlShiftTo(h,m),0<=r.compareTo(m)&&(r[r.t++]=1,r.subTo(m,r)),_.ONE.dlShiftTo(l,m),m.subTo(i,i);i.t<l;)i[i.t++]=0;for(;0<=--h;){var g=r[--f]==c?this.DM:Math.floor(r[f]*u+(r[f-1]+p)*d);if((r[f]+=i.am(0,g,r,h,0,l))<g)for(i.dlShiftTo(h,m),r.subTo(m,r);r[f]<--g;)r.subTo(m,r)}null!=t&&(r.drShiftTo(l,t),o!=e)&&_.ZERO.subTo(t,t),r.t=l,r.clamp(),0<s&&r.rShiftTo(s,r),o<0&&_.ZERO.subTo(r,r)}}}},_.prototype.invDigit=function(){var e,t;return this.t<1||0==(1&(e=this[0]))?0:0<(t=(t=(t=(t=(t=3&e)*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)?this.DV-t:-t},_.prototype.isEven=function(){return 0==(0<this.t?1&this[0]:this.s)},_.prototype.exp=function(e,t){if(4294967295<e||e<1)return _.ONE;var r,n=y(),a=y(),i=t.convert(this),o=T(e)-1;for(i.copyTo(n);0<=--o;)t.sqrTo(n,a),0<(e&1<<o)?t.mulTo(a,i,n):(r=n,n=a,a=r);return t.revert(n)},_.prototype.toString=function(e){if(this.s<0)return\"-\"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<<t)-1,a=!1,i=\"\",o=this.t,s=this.DB-o*this.DB%t;if(0<o--)for(s<this.DB&&0<(r=this[o]>>s)&&(a=!0,i=l(r));0<=o;)s<t?(r=(this[o]&(1<<s)-1)<<t-s,r|=this[--o]>>(s+=this.DB-t)):(r=this[o]>>(s-=t)&n,s<=0&&(s+=this.DB,--o)),(a=0<r?!0:a)&&(i+=l(r));return a?i:\"0\"},_.prototype.negate=function(){var e=y();return _.ZERO.subTo(this,e),e},_.prototype.abs=function(){return this.s<0?this.negate():this},_.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;0<=--r;)if(0!=(t=this[r]-e[r]))return t;return 0},_.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+T(this[this.t-1]^this.s&this.DM)},_.prototype.mod=function(e){var t=y();return this.abs().divRemTo(e,null,t),this.s<0&&0<t.compareTo(_.ZERO)&&e.subTo(t,t),t},_.prototype.modPowInt=function(e,t){return t=new(e<256||t.isEven()?v:b)(t),this.exp(e,t)},_.ZERO=g(0),_.ONE=g(1);var o=256;function s(e,t){return e&t}function u(e,t){return e|t}function d(e,t){return e^t}function p(e,t){return e&~t}function f(){}function h(e){return e}function E(e){this.r2=y(),this.q3=y(),_.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}L.exports={default:_,BigInteger:_},f.prototype.convert=h,f.prototype.revert=h,f.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},f.prototype.sqrTo=function(e,t){e.squareTo(t)},E.prototype.convert=function(e){var t;return e.s<0||e.t>2*this.m.t?e.mod(this.m):e.compareTo(this.m)<0?e:(t=y(),e.copyTo(t),this.reduce(t),t)},E.prototype.revert=function(e){return e},E.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);0<=e.compareTo(this.m);)e.subTo(this.m,e)},E.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},E.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var m,S=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],A=(1<<26)/S[S.length-1];function O(e,t){return new _(e,t)}function C(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}function w(){var e;e=(new Date).getTime(),k[I++]^=255&e,k[I++]^=e>>8&255,k[I++]^=e>>16&255,k[I++]^=e>>24&255,o<=I&&(I-=o)}if(_.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},_.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||36<e)return\"0\";var t=this.chunkSize(e),r=Math.pow(e,t),n=g(r),a=y(),i=y(),o=\"\";for(this.divRemTo(n,a,i);0<a.signum();)o=(r+i.intValue()).toString(e).substr(1)+o,a.divRemTo(n,a,i);return i.intValue().toString(e)+o},_.prototype.fromRadix=function(e,t){this.fromInt(0);for(var r=this.chunkSize(t=null==t?10:t),n=Math.pow(t,r),a=!1,i=0,o=0,s=0;s<e.length;++s){var l=c(e,s);l<0?\"-\"==e.charAt(s)&&0==this.signum()&&(a=!0):(o=t*o+l,++i>=r&&(this.dMultiply(n),this.dAddOffset(o,0),o=i=0))}0<i&&(this.dMultiply(Math.pow(t,i)),this.dAddOffset(o,0)),a&&_.ZERO.subTo(this,this)},_.prototype.fromNumber=function(e,t,r){if(\"number\"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(_.ONE.shiftLeft(e-1),u,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(_.ONE.shiftLeft(e-1),this);else{var r=new Array,n=7&e;r.length=1+(e>>3),t.nextBytes(r),0<n?r[0]&=(1<<n)-1:r[0]=0,this.fromString(r,256)}},_.prototype.bitwiseTo=function(e,t,r){for(var n,a=Math.min(e.t,this.t),i=0;i<a;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(n=e.s&this.DM,i=a;i<this.t;++i)r[i]=t(this[i],n);r.t=this.t}else{for(n=this.s&this.DM,i=a;i<e.t;++i)r[i]=t(n,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},_.prototype.changeBit=function(e,t){return e=_.ONE.shiftLeft(e),this.bitwiseTo(e,t,e),e},_.prototype.addTo=function(e,t){for(var r=0,n=0,a=Math.min(e.t,this.t);r<a;)n+=this[r]+e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n+=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n+=e[r],t[r++]=n&this.DM,n>>=this.DB;n+=e.s}t.s=n<0?-1:0,0<n?t[r++]=n:n<-1&&(t[r++]=this.DV+n),t.t=r,t.clamp()},_.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},_.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},_.prototype.multiplyLowerTo=function(e,t,r){var n,a=Math.min(this.t+e.t,t);for(r.s=0,r.t=a;0<a;)r[--a]=0;for(n=r.t-this.t;a<n;++a)r[a+this.t]=this.am(0,e[a],r,a,0,this.t);for(n=Math.min(e.t,t);a<n;++a)this.am(0,e[a],r,a,0,t-a);r.clamp()},_.prototype.multiplyUpperTo=function(e,t,r){var n=r.t=this.t+e.t- --t;for(r.s=0;0<=--n;)r[n]=0;for(n=Math.max(t-this.t,0);n<e.t;++n)r[this.t+n-t]=this.am(t-n,e[n],r,0,0,this.t+n-t);r.clamp(),r.drShiftTo(1,r)},_.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(0<this.t)if(0==t)r=this[0]%e;else for(var n=this.t-1;0<=n;--n)r=(t*r+this[n])%e;return r},_.prototype.millerRabin=function(e){var t=this.subtract(_.ONE),r=t.getLowestSetBit();if(r<=0)return!1;for(var n=t.shiftRight(r),a=((e=e+1>>1)>S.length&&(e=S.length),y()),i=0;i<e;++i){a.fromInt(S[Math.floor(Math.random()*S.length)]);var o=a.modPow(n,this);if(0!=o.compareTo(_.ONE)&&0!=o.compareTo(t)){for(var s=1;s++<r&&0!=o.compareTo(t);)if(0==(o=o.modPowInt(2,this)).compareTo(_.ONE))return!1;if(0!=o.compareTo(t))return!1}}return!0},_.prototype.clone=function(){var e=y();return this.copyTo(e),e},_.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},_.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},_.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},_.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},_.prototype.toByteArray=function(){var e,t=this.t,r=new Array,n=(r[0]=this.s,this.DB-t*this.DB%8),a=0;if(0<t--)for(n<this.DB&&(e=this[t]>>n)!=(this.s&this.DM)>>n&&(r[a++]=e|this.s<<this.DB-n);0<=t;)n<8?(e=(this[t]&(1<<n)-1)<<8-n,e|=this[--t]>>(n+=this.DB-8)):(e=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&e)&&(e|=-256),0==a&&(128&this.s)!=(128&e)&&++a,(0<a||e!=this.s)&&(r[a++]=e);return r},_.prototype.equals=function(e){return 0==this.compareTo(e)},_.prototype.min=function(e){return this.compareTo(e)<0?this:e},_.prototype.max=function(e){return 0<this.compareTo(e)?this:e},_.prototype.and=function(e){var t=y();return this.bitwiseTo(e,s,t),t},_.prototype.or=function(e){var t=y();return this.bitwiseTo(e,u,t),t},_.prototype.xor=function(e){var t=y();return this.bitwiseTo(e,d,t),t},_.prototype.andNot=function(e){var t=y();return this.bitwiseTo(e,p,t),t},_.prototype.not=function(){for(var e=y(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},_.prototype.shiftLeft=function(e){var t=y();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},_.prototype.shiftRight=function(e){var t=y();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},_.prototype.getLowestSetBit=function(){for(var e,t,r=0;r<this.t;++r)if(0!=this[r])return r*this.DB+(e=this[r],t=void 0,0==e?-1:((t=0)==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t));return this.s<0?this.t*this.DB:-1},_.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=function(e){for(var t=0;0!=e;)e&=e-1,++t;return t}(this[r]^t);return e},_.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},_.prototype.setBit=function(e){return this.changeBit(e,u)},_.prototype.clearBit=function(e){return this.changeBit(e,p)},_.prototype.flipBit=function(e){return this.changeBit(e,d)},_.prototype.add=function(e){var t=y();return this.addTo(e,t),t},_.prototype.subtract=function(e){var t=y();return this.subTo(e,t),t},_.prototype.multiply=function(e){var t=y();return this.multiplyTo(e,t),t},_.prototype.divide=function(e){var t=y();return this.divRemTo(e,t,null),t},_.prototype.remainder=function(e){var t=y();return this.divRemTo(e,null,t),t},_.prototype.divideAndRemainder=function(e){var t=y(),r=y();return this.divRemTo(e,t,r),new Array(t,r)},_.prototype.modPow=function(e,t){var r=e.bitLength(),n=g(1);if(r<=0)return n;var a=r<18?1:r<48?3:r<144?4:r<768?5:6,i=new(r<8?v:t.isEven()?E:b)(t),o=new Array,s=3,l=a-1,c=(1<<a)-1;if(o[1]=i.convert(this),1<a){var u=y();for(i.sqrTo(o[1],u);s<=c;)o[s]=y(),i.mulTo(u,o[s-2],o[s]),s+=2}for(var d,p,f=e.t-1,h=!0,m=y(),r=T(e[f])-1;0<=f;){for(l<=r?d=e[f]>>r-l&c:(d=(e[f]&(1<<r+1)-1)<<l-r,0<f&&(d|=e[f-1]>>this.DB+r-l)),s=a;0==(1&d);)d>>=1,--s;if((r-=s)<0&&(r+=this.DB,--f),h)o[d].copyTo(n),h=!1;else{for(;1<s;)i.sqrTo(n,m),i.sqrTo(m,n),s-=2;0<s?i.sqrTo(n,m):(p=n,n=m,m=p),i.mulTo(m,o[d],n)}for(;0<=f&&0==(e[f]&1<<r);)i.sqrTo(n,m),p=n,n=m,m=p,--r<0&&(r=this.DB-1,--f)}return i.revert(n)},_.prototype.modInverse=function(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return _.ZERO;for(var r=e.clone(),n=this.clone(),a=g(1),i=g(0),o=g(0),s=g(1);0!=r.signum();){for(;r.isEven();)r.rShiftTo(1,r),t?(a.isEven()&&i.isEven()||(a.addTo(this,a),i.subTo(e,i)),a.rShiftTo(1,a)):i.isEven()||i.subTo(e,i),i.rShiftTo(1,i);for(;n.isEven();)n.rShiftTo(1,n),t?(o.isEven()&&s.isEven()||(o.addTo(this,o),s.subTo(e,s)),o.rShiftTo(1,o)):s.isEven()||s.subTo(e,s),s.rShiftTo(1,s);0<=r.compareTo(n)?(r.subTo(n,r),t&&a.subTo(o,a),i.subTo(s,i)):(n.subTo(r,n),t&&o.subTo(a,o),s.subTo(i,s))}return 0!=n.compareTo(_.ONE)?_.ZERO:0<=s.compareTo(e)?s.subtract(e):s.signum()<0&&(s.addTo(e,s),s.signum()<0)?s.add(e):s},_.prototype.pow=function(e){return this.exp(e,new f)},_.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone(),n=(t.compareTo(r)<0&&(e=t,t=r,r=e),t.getLowestSetBit());if((e=r.getLowestSetBit())<0)return t;for(0<(e=n<e?n:e)&&(t.rShiftTo(e,t),r.rShiftTo(e,r));0<t.signum();)0<(n=t.getLowestSetBit())&&t.rShiftTo(n,t),0<(n=r.getLowestSetBit())&&r.rShiftTo(n,r),0<=t.compareTo(r)?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return 0<e&&r.lShiftTo(e,r),r},_.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=S[S.length-1]){for(t=0;t<S.length;++t)if(r[0]==S[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<S.length;){for(var n=S[t],a=t+1;a<S.length&&n<A;)n*=S[a++];for(n=r.modInt(n);t<a;)if(n%S[t++]==0)return!1}return r.millerRabin(e)},_.prototype.square=function(){var e=y();return this.squareTo(e),e},C.prototype.doPublic=function(e){return e.modPowInt(this.e,this.n)},C.prototype.doPrivate=function(e){if(null==this.p||null==this.q)return e.modPow(this.d,this.n);for(var t=e.mod(this.p).modPow(this.dmp1,this.p),r=e.mod(this.q).modPow(this.dmq1,this.q);t.compareTo(r)<0;)t=t.add(this.p);return t.subtract(r).multiply(this.coeff).mod(this.p).multiply(this.q).add(r)},C.prototype.setPublic=function(e,t){null!=e&&null!=t&&0<e.length&&0<t.length?(this.n=O(e,16),this.e=parseInt(t,16)):alert(\"Invalid RSA public key\")},C.prototype.setPrivateEx=function(e,t,r,n,a,i,o,s){null!=e&&null!=t&&0<e.length&&0<t.length?(this.n=O(e,16),this.e=parseInt(t,16),this.d=O(r,16),this.p=O(n,16),this.q=O(a,16),this.dmp1=O(i,16),this.dmq1=O(o,16),this.coeff=O(s,16)):alert(\"Invalid RSA private key\")},C.prototype.encrypt=function(e){return null==(e=function(e,t){if(t<e.length+11)return alert(\"Message too long for RSA\"),null;for(var r=new Array,n=e.length-1;0<=n&&0<t;){var a=e.charCodeAt(n--);a<128?r[--t]=a:127<a&&a<2048?(r[--t]=63&a|128,r[--t]=a>>6|192):(r[--t]=63&a|128,r[--t]=a>>6&63|128,r[--t]=a>>12|224)}r[--t]=0;for(var i=new D,o=new Array;2<t;){for(o[0]=0;0==o[0];)i.nextBytes(o);r[--t]=o[0]}return r[--t]=2,r[--t]=0,new _(r)}(e,this.n.bitLength()+7>>3))||null==(e=this.doPublic(e))?null:0==(1&(e=e.toString(16)).length)?e:\"0\"+e},null==k){var k=new Array,I=0;if(t&&window.crypto&&window.crypto.getRandomValues){var R=new Uint8Array(32);for(window.crypto.getRandomValues(R),M=0;M<32;++M)k[I++]=R[M]}if(t&&\"Netscape\"==navigator.appName&&navigator.appVersion<\"5\"&&window.crypto)for(var N=window.crypto.random(32),M=0;M<N.length;++M)k[I++]=255&N.charCodeAt(M);for(;I<o;)M=Math.floor(65536*Math.random()),k[I++]=M>>>8,k[I++]=255&M;I=0,w()}function P(){if(null==m){for(w(),(m=new x).init(k),I=0;I<k.length;++I)k[I]=0;I=0}return m.next()}function D(){}function x(){this.i=0,this.j=0,this.S=new Array}D.prototype.nextBytes=function(e){for(var t=0;t<e.length;++t)e[t]=P()},x.prototype.init=function(e){for(var t,r,n=0;n<256;++n)this.S[n]=n;for(n=t=0;n<256;++n)t=t+this.S[n]+e[n%e.length]&255,r=this.S[n],this.S[n]=this.S[t],this.S[t]=r;this.i=0,this.j=0},x.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};o=256;L.exports={default:_,BigInteger:_,RSAKey:C}}.call(ve)),pL.exports}function hL(){if(!sL){sL=1,Object.defineProperty(dL,\"__esModule\",{value:!0}),dL.AdbKey=void 0;const i=fL(),o=Pe(),s=j(),r={name:\"RSASSA-PKCS1-v1_5\",hash:{name:\"SHA-1\"},publicExponent:new Uint8Array([1,0,1]),modulusLength:2048},n=[\"sign\"],l=[0,48,33,48,9,6,5,43,14,3,2,26,5,0,4,20],c=i.BigInteger.ONE.shiftLeft(32);function a(e,t){var r=e.toByteArray();let n=0;for(;n<r.length&&0===r[n];)n++;e=Uint8Array.from(r.slice(n)),t=new Uint8Array(t);return(0,o.assertTrue)(e.length<=t.length),t.set(e,t.length-e.length),t}dL.AdbKey=class u{jwkPrivate;static deserialize(e){return new u(JSON.parse(e))}constructor(e){this.jwkPrivate=e}static async generateNewKeyPair(){var e,t=await crypto.subtle.generateKey(r,!0,n),t=await crypto.subtle.exportKey(\"jwk\",t.privateKey);if(void 0===(e=t).n||void 0===e.e||void 0===e.d||void 0===e.p||void 0===e.q||void 0===e.dp||void 0===e.dq||void 0===e.qi)throw new Error(\"Could not generate a valid ADB private key\");return new u(t)}sign(e){var t=new i.RSAKey;t.setPrivateEx((0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.n)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.e)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.d)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.p)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.q)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.dp)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.dq)),(0,s.hexEncode)((0,s.base64Decode)(this.jwkPrivate.qi))),(0,o.assertTrue)(2048===t.n.bitLength());(r=new Uint8Array(256)).fill(255),r[0]=0,r[1]=1,r.set(l,r.length-l.length-e.length),r.set(e,r.length-e.length);var e=new i.BigInteger(Array.from(r)),r=t.doPrivate(e);return new Uint8Array(a(r,256))}getPublicKey(){var e=new i.RSAKey,t=(e.setPublic((0,s.hexEncode)((0,s.base64Decode)((0,o.assertExists)(this.jwkPrivate.n))),(0,s.hexEncode)((0,s.base64Decode)((0,o.assertExists)(this.jwkPrivate.e)))),c.subtract(e.n.modInverse(c)).intValue()),r=(r=i.BigInteger.ONE.shiftLeft(1).pow(2048)).multiply(r).mod(e.n),n=new ArrayBuffer(524);return(n=new DataView(n)).setUint32(0,64,!0),n.setUint32(4,t,!0),(t=new Uint8Array(n.buffer,n.byteOffset,n.byteLength)).set(a(e.n,256).reverse(),8),t.set(a(r,256).reverse(),264),n.setUint32(520,e.e,!0),(0,s.base64Encode)(t)+\" ui.perfetto.dev\"}serialize(){return JSON.stringify(this.jwkPrivate)}}}return dL}function mL(){if(!lL){lL=1,Object.defineProperty(uL,\"__esModule\",{value:!0}),uL.AdbKeyManager=void 0;const n=Ch();var e=aL();const a=Tl(),i=Me(),o=hL();function r(){return\"PasswordCredential\"in window}uL.AdbKeyManager=class{expiryTimerId=-1;key=new e.AsyncLazy;async getOrCreateKey(){return this.refreshKeyExpiry(),this.key.getOrCreate(async()=>{if(r()){var e=await navigator.credentials.get({password:!0,mediation:\"optional\"});if(await navigator.credentials.preventSilentAccess(),(0,i.exists)(e)&&\"password\"in e)return(0,a.okResult)(o.AdbKey.deserialize(e.password))}var t;return confirm(\"Couldn't load the ADB key. Generate a new key?\")?(e=await o.AdbKey.generateNewKeyPair(),t=e,await(!r()||(t=new PasswordCredential({id:\"webusb-adb-key\",password:t.serialize(),name:\"WebUSB ADB Key\",iconURL:(0,n.assetSrc)(\"assets/favicon.png\")}),await navigator.credentials.store(t),!await navigator.credentials.preventSilentAccess())),(0,a.okResult)(e)):(0,a.errResult)(\"Couldn't load the ADB Key. Did you dismiss the sign-in dialog\")})}refreshKeyExpiry(){0<=this.expiryTimerId&&clearTimeout(this.expiryTimerId),this.expiryTimerId=self.setTimeout(()=>this.key.reset(),18e5)}}}return uL}var gL,_L={};function yL(){if(!gL){gL=1;{var s=_L;Object.defineProperty(s,\"__esModule\",{value:!0}),s.ADB_DEVICE_FILTER=void 0,s.usbDeviceToStr=function(e){var t=e.deviceVersionMajor+\".\"+e.deviceVersionMinor;return`${e.vendorId}:${e.productId}:${t}:`+e.serialNumber},s.getAdbWebUsbInterface=function(e){if((0,l.exists)(e.serialNumber)){var t=s.ADB_DEVICE_FILTER;for(const a of e.configurations)for(const i of a.interfaces)for(const o of i.alternates)if(o.interfaceClass===t.classCode&&o.interfaceSubclass===t.subclassCode&&o.interfaceProtocol===t.protocolCode){var r=o.endpoints.find(e=>\"bulk\"===e.type&&\"in\"===e.direction),n=o.endpoints.find(e=>\"bulk\"===e.type&&\"out\"===e.direction);if(void 0!==r&&void 0!==n)return{dev:e,configurationValue:a.configurationValue,usbInterfaceNumber:i.interfaceNumber,rx:r.endpointNumber,tx:n.endpointNumber,txPacketSize:n.packetSize}}}return};const l=Me();s.ADB_DEVICE_FILTER={classCode:255,subclassCode:66,protocolCode:1}}}return _L}var TL,vL={},bL={},EL={};function SL(){if(!TL){TL=1,Object.defineProperty(EL,\"__esModule\",{value:!0}),EL.parseAdbMsgHdr=function(e){(0,l.assertTrue)(e.byteLength===u);var t=(0,c.utf8Decode)(e.buffer.slice(0,4)),r=e.getUint32(0,!0),n=e.getUint32(4,!0),a=e.getUint32(8,!0),i=e.getUint32(12,!0),o=e.getUint32(16,!0),s=e.getUint32(20,!0),e=e.getUint32(20,!0);return(0,l.assertTrue)(e===(4294967295^r)>>>0),(0,l.assertTrue)(r===(4294967295^s)),{cmd:t,arg0:n,arg1:a,dataLen:i,dataChecksum:o}},EL.encodeAdbMsg=function(t,e,r,n,a=!1){var a=a?function(t){let r=0;for(let e=0;e<t.byteLength;e++)r+=t[e];return 4294967295&r}(n):0,i=new Uint8Array(u),o=new DataView(i.buffer);for(let e=0;e<4;e++)o.setUint8(e,t.charCodeAt(e));return o.setUint32(4,e,!0),o.setUint32(8,r,!0),o.setUint32(12,n.byteLength,!0),o.setUint32(16,a,!0),o.setUint32(20,4294967295^o.getUint32(0,!0),!0),i},EL.encodeAdbData=function(e){return void 0===e?new Uint8Array([]):(0,t.isString)(e)?(0,c.utf8Encode)(e+\"\\0\"):e},EL.adbMsgToString=function(e){return`cmd=${e.cmd}, arg0=${e.arg0}, arg1=${e.arg1}, `+`cksm=${e.dataChecksum}, dlen=`+e.dataLen+(\"data\"in e&&void 0!==e.data?\", data=\"+(0,c.binaryEncode)(e.data):\"\")};const l=Pe(),t=hn(),c=j(),u=24}return EL}var AL,OL,CL,wL,kL={};function IL(){if(OL)return bL;OL=1,Object.defineProperty(bL,\"__esModule\",{value:!0}),bL.AdbWebusbDevice=void 0;const h=Jr,o=Ja(),m=Pe(),s=hn(),l=j(),r=Me(),g=Ke();var _,e=Vx();const c=SL(),y=yL(),T=Tl(),i=function(){if(!AL){AL=1,Object.defineProperty(kL,\"__esModule\",{value:!0}),kL.AdbWebusbStream=void 0;class e extends Bx().ByteStream{adbWebusbDevice;localId;remoteId;state=\"CONNECTED\";constructor(e,t,r){super(),this.adbWebusbDevice=e,this.localId=t,this.remoteId=r}get connected(){return\"CONNECTED\"===this.state}write(e){return\"CONNECTED\"!==this.state?Promise.resolve():this.adbWebusbDevice.streamWrite(this,e)}close(){\"CONNECTED\"===this.state&&(this.state=\"CLOSING\",this.adbWebusbDevice.streamClose(this))}notifyClose(){\"CLOSED\"!==this.state&&(this.state=\"CLOSED\",this.onClose())}}kL.AdbWebusbStream=e}return kL}();class v extends e.AdbDevice{usb;maxPayload;useChecksum;lastStreamId=0;_connected=!0;rxLoopRunning=!1;streams=new Map;pendingStreams=new Map;txQueue=new Array;txPending=!1;constructor(e,t,r){super(),this.usb=e,this.maxPayload=t,this.useChecksum=r,this.usb=e,this.usbRxLoop()}static async connect(e,r){var n={stack:[],error:void 0,hasError:!1};try{var a=(0,y.getAdbWebUsbInterface)(e);if(void 0===a)return(0,T.errResult)(\"Could not find the USB Interface. Try disconnecting and reconnecting the device.\");e.opened&&await e.close(),await e.open();var i=h.__addDisposableResource(n,new E(e),!1);await e.selectConfiguration(a.configurationValue);try{await e.claimInterface(a.usbInterfaceNumber)}catch(e){return console.error(e),(0,T.errResult)(\"Failed to claim USB interface. Try `adb kill-server` or close other profiling tools and try again\")}var o=await r.getOrCreateKey();if(!o.ok)return o;var s=o.value;await v.send(a,\"CNXN\",16777217,262144,\"host:1:WebUsb\");let t=0;for(let e=0;e<10;e++){var l,c,u,d=await this.recvMsg(a);if(\"CNXN\"===d.cmd)return(0,g.closeModal)(\"adbauth\"),l=d.arg1,16777216!==(c=d.arg0)&&16777217!==c?(0,T.errResult)(`ADB version ${c} not supported`):(u=16777216===c,i.keepOpen=!0,(0,T.okResult)(new v(a,l,u)));if(\"AUTH\"!==d.cmd)b(d);else{(0,m.assertTrue)(d.arg0===_.TOKEN);var p=t++;if(0==p){var f=s.sign(d.data);await this.send(a,\"AUTH\",_.SIGNATURE,0,f)}else{if(1!=p)break;await this.send(a,\"AUTH\",_.PUBKEY,0,s.getPublicKey()),(0,g.showModal)({key:\"adbauth\",title:\"ADB Authorization required\",content:\"Please unlock the device and authorize the ADB connection\"})}}}return(0,T.errResult)(\"ADB authorization failed\")}catch(e){n.error=e,n.hasError=!0}finally{h.__disposeResources(n)}}async createStream(e){var t={promise:(0,o.defer)(),localId:++this.lastStreamId,svc:e};return this.pendingStreams.set(t.localId,t),this.send(\"OPEN\",t.localId,0,e),t.promise}close(){this._connected=!1,this.usb.dev.opened&&this.usb.dev.close(),this.streams.forEach(e=>this.streamClose(e))}get connected(){return this._connected}streamWrite(e,t){var r=(0,o.defer)(),n=(0,s.isString)(t)?(0,l.utf8Encode)(t):t;let a=0;for(;a<n.byteLength;){var i=Math.min(this.maxPayload,n.byteLength-a),i={stream:e,data:n.subarray(a,a+i),promise:(a+=i)===n.byteLength?r:void 0};this.txQueue.push(i),this.txPending||((0,m.assertTrue)(1===this.txQueue.length),this.streamWriteFromQueue(i))}return r}streamClose(t){this.txQueue=this.txQueue.filter(e=>e.stream!==t),this.send(\"CLSE\",t.localId,t.remoteId),this.streams.delete(t.localId),t.notifyClose()}streamWriteFromQueue(e){(0,m.assertFalse)(this.txPending),this.txPending=!0,this.send(\"WRTE\",e.stream.localId,e.stream.remoteId,e.data)}async usbRxLoop(){(0,m.assertFalse)(this.rxLoopRunning),this.rxLoopRunning=!0;try{for(;this._connected;)await this.usbRxLoopInner()}catch(e){if(!(e instanceof Error&&e.message.includes(\"transfer was cancelled\"))||this._connected)throw e}finally{this.rxLoopRunning=!1,this._connected=!1}}async usbRxLoopInner(){var e=await v.recvMsg(this.usb);if(\"OKAY\"===e.cmd){var t=e.arg0,r=e.arg1,n=this.pendingStreams.get(r);if(void 0!==n){this.pendingStreams.delete(r);var a=new i.AdbWebusbStream(this,r,t);this.streams.set(r,a),n.promise.resolve((0,T.okResult)(a))}else{var n=this.popFromTxQueue(r,t);if(void 0===n)return b(e);this.txPending=!1,n.promise?.resolve();var a=this.txQueue[0];void 0!==a&&this.streamWriteFromQueue(a)}}else if(\"WRTE\"===e.cmd){var r=e.arg1,t=this.streams.get(r);if(void 0===t)return b(e);await this.send(\"OKAY\",t.localId,t.remoteId),t.onData(e.data)}else\"CLSE\"===e.cmd?(n=e.arg1,void 0!==(a=this.pendingStreams.get(n))?(this.pendingStreams.delete(n),a.promise.resolve((0,T.errResult)(`Stream ${a.svc} failed to connect`))):void 0!==(r=this.streams.get(n))&&(this.streams.delete(n),r.notifyClose())):console.error(`Unexpected ADB cmd ${e.cmd} ${e.arg0} `+e.arg1)}popFromTxQueue(t,r){for(let e=0;e<this.txQueue.length;e++){var n=this.txQueue[e];if(n.stream.localId===t&&n.stream.remoteId===r)return this.txQueue.splice(e,1)[0]}throw new a(`Could not find ADB queue entry L=${t}, `+`R=${r}, TxLen=`+this.txQueue.length)}static async recv(e,t){e=await e.dev.transferIn(e.rx,t);if((0,r.exists)(e.data)&&\"ok\"===e.status)return e.data;throw new a(`res: ${e.status}, data: `+!!e.data)}static async recvMsg(e){var t=await this.recv(e,24);if(24!==t.byteLength)throw r=new Uint8Array(t.buffer),new a(`RX spurious: ${(0,l.hexEncode)(r)} `+(0,l.utf8Decode)(r));var r=(0,c.parseAdbMsgHdr)(t);let n=new Uint8Array;return 0<r.dataLen&&(t=await this.recv(e,r.dataLen),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength).slice()),{...r,data:n}}send(e,t,r,n){var a;return this.connected?(a=this.useChecksum,v.send(this.usb,e,t,r,n,a)):Promise.resolve()}static async send(e,t,r,n,a,i=!1){a=(0,c.encodeAdbData)(a),t=(0,c.encodeAdbMsg)(t,r,n,a,i),r=[e.dev.transferOut(e.tx,t.buffer)];0<a.length&&(r.push(e.dev.transferOut(e.tx,a.buffer)),a.length%e.txPacketSize==0)&&r.push(e.dev.transferOut(e.tx,new Uint8Array(0))),await Promise.all(r)}}bL.AdbWebusbDevice=v,(e=_=_||{})[e.TOKEN=1]=\"TOKEN\",e[e.SIGNATURE=2]=\"SIGNATURE\",e[e.PUBKEY=3]=\"PUBKEY\";class a extends Error{constructor(e){super(e),this.name=\"WebusbTransportError\"}}function b(e){console.log(\"Spurious ADB message\",(0,c.adbMsgToString)(e))}class E{usbdev;constructor(e){this.usbdev=e}keepOpen=!1;[Symbol.dispose](){this.keepOpen||this.usbdev.opened&&this.usbdev.close()}}return bL}function RL(){if(!wL){wL=1,Object.defineProperty(cL,\"__esModule\",{value:!0}),cL.AdbWebusbTargetProvider=void 0;const n=Me();var e=mL();const a=yL(),r=Tl(),o=function(){if(!CL){CL=1,Object.defineProperty(vL,\"__esModule\",{value:!0}),vL.AdbWebusbTarget=void 0;const r=Mx(),t=IL(),n=yL(),a=Tl(),i=Px();var e=aL();vL.AdbWebusbTarget=class{usbiface;adbKeyMgr;kind=\"LIVE_RECORDING\";platform=\"ANDROID\";transportType=\"WebUSB\";adbDevice=new e.AsyncLazy;constructor(e,t){this.usbiface=e,this.adbKeyMgr=t}async*runPreflightChecks(){const e=await this.connectIfNeeded();yield{name:\"WebUSB connection\",status:await(e.ok?(0,a.okResult)(\"connected\"):e)},void 0!==this.adbDevice.value&&(yield*(0,i.checkAndroidTarget)(this.adbDevice.value))}async connectIfNeeded(){return this.adbDevice.getOrCreate(()=>t.AdbWebusbDevice.connect(this.usbiface.dev,this.adbKeyMgr))}get connected(){return this.adbDevice.value?.connected??!1}get id(){return(0,n.usbDeviceToStr)(this.usbiface.dev)}get name(){var e=this.usbiface.dev;return`${e.productName} [${e.serialNumber}]`}async getServiceState(){return void 0===this.adbDevice.value?(0,a.errResult)(\"WebUSB transport disconnected\"):(0,r.getAdbTracingServiceState)(this.adbDevice.value)}async startTracing(e){var t=await this.connectIfNeeded();return t.ok?(0,r.createAdbTracingSession)(t.value,e):t}disconnect(){this.adbDevice.value?.close(),this.adbDevice.reset()}}}return vL}();var t=wf();cL.AdbWebusbTargetProvider=class{id=\"adb_webusb\";name=\"WebUsb\";icon=\"usb\";supportedPlatforms=[\"ANDROID\"];description=\"This is the easiest option to use but requires exclusive access to the device. If you are an android developer and use ADB, you should use the websocket option instead.\";adbKeyMgr=new e.AdbKeyManager;targets=new Map;onTargetsChanged=new t.EvtSource;constructor(){(0,n.exists)(navigator.usb)&&(navigator.usb.addEventListener(\"disconnect\",()=>this.refreshTargets()),navigator.usb.addEventListener(\"connect\",()=>this.refreshTargets()))}async listTargets(){return(0,n.exists)(navigator.usb)?(await this.refreshTargets(),Array.from(this.targets.values())):[]}async pairNewTarget(){if((0,n.exists)(navigator.usb)){let e;try{e=await navigator.usb.requestDevice({filters:[a.ADB_DEVICE_FILTER]})}catch(e){if(\"\"+e.name==\"NotFoundError\")return;throw e}var t,r=(0,a.getAdbWebUsbInterface)(e);if(void 0!==r)return t=(0,a.usbDeviceToStr)(e),this.removeTarget(t),r=new o.AdbWebusbTarget(r,this.adbKeyMgr),this.targets.set(t,r),this.onTargetsChanged.notify(),r}}async*runPreflightChecks(){(0,n.exists)(navigator.usb)||(yield{name:\"WebUSB support\",status:(0,r.errResult)(\"Not supported\")})}async refreshTargets(){let e=!1;var t,r,n,a=await this.listUsbDevices();for(const i of this.targets.keys())a.has(i)||(this.removeTarget(i),e=!0);for([t,r]of a.entries())this.targets.has(t)||(n=new o.AdbWebusbTarget(r,this.adbKeyMgr),this.targets.set(t,n),e=!0);e&&this.onTargetsChanged.notify()}removeTarget(e){var t=this.targets.get(e);void 0!==t&&(this.targets.delete(e),t.disconnect())}async listUsbDevices(){var e=new Map;for(const n of await navigator.usb.getDevices()){var t,r=(0,a.getAdbWebUsbInterface)(n);void 0!==r&&(t=(0,a.usbDeviceToStr)(n),e.set(t,r))}return e}}}return cL}var NL,ML,PL,DL={},xL={},LL={};function FL(){if(!ML){ML=1,Object.defineProperty(xL,\"__esModule\",{value:!0}),xL.ChromeExtensionTarget=void 0;const e=Jr.__importDefault(xe()),t=Ja(),r=Tl(),n=j(),a=Me(),i=function(){if(!NL){NL=1,Object.defineProperty(LL,\"__esModule\",{value:!0}),LL.ChromeExtensionTracingSession=void 0;const r=Jr.__importDefault(dh());var e=wf(),t=gx();const u=j(),n=Ja();LL.ChromeExtensionTracingSession=class{target;_state=\"RECORDING\";logs=new Array;traceBuf=new t.ResizableArrayBuffer(65536);onSessionUpdate=new e.EvtSource;pendingBufferUsage=new Array;constructor(e,t){this.target=e,this.start(t)}async start(e){e=r.default.EnableTracingRequest.encode({traceConfig:e}).finish();this.target.invokeExtensionMethod(\"EnableTracing\",e)}async stop(){this.target.invokeExtensionMethod(\"DisableTracing\"),this.setState(\"STOPPING\")}async cancel(){this.target.invokeExtensionMethod(\"FreeBuffers\"),this.setState(\"STOPPING\")}async getBufferUsagePct(){var e;if(\"RECORDING\"===this._state)return e=(0,n.defer)(),this.pendingBufferUsage.push(e),this.target.invokeExtensionMethod(\"GetTraceStats\"),e}getTraceData(){if(\"FINISHED\"===this._state)return this.traceBuf.get()}onExtensionMessage(r,n){switch(r){case\"ChromeExtensionError\":var a=n.error;this.log(\"Tracing failed: \"+a,!0),\"FINISHED\"!==this._state&&(this.setState(\"ERRORED\"),this.target.disconnect());break;case\"ChromeExtensionStatus\":a=n.status;this.log(a);break;case\"EnableTracingResponse\":this.target.invokeExtensionMethod(\"ReadBuffers\"),this.setState(\"STOPPING\");break;case\"GetTraceStatsResponse\":let e=0,t=0;for(const s of n.traceStats?.bufferStats??[])e+=s.bufferSize??0,t+=Math.min(s.bytesWritten??0,s.bufferSize??0);var i=Math.min(Math.round(100*t/e),100);for(const l of this.pendingBufferUsage.splice(0))l.resolve(i);break;case\"ReadBuffersResponse\":for(const c of n.slices??[]){var o=(0,u.binaryDecode)(c.data);if(this.traceBuf.append(o),Boolean(c.lastSliceForPacket)){this.setState(\"FINISHED\"),this.target.invokeExtensionMethod(\"FreeBuffers\");break}}}}get state(){return this._state}setState(e){this._state=e,this.onSessionUpdate.notify()}log(e,t=!1){this.logs.push({message:e,timestamp:new Date,isError:t}),this.onSessionUpdate.notify()}}}return LL}();xL.ChromeExtensionTarget=class{id=\"chrome_extension\";kind=\"LIVE_RECORDING\";transportType=\"Extension\";platform=\"CHROME\";port;_connected=!1;_extensionVersion;_connectPromise;chromeCategories;chromeCategoriesPromise=(0,t.defer)();session;async*runPreflightChecks(){var e;yield{name:\"Tracing Extension\",status:(e=(0,r.errResult)(\"Not found. Please install https://g.co/chrome/tracing-extension\"),await((0,a.exists)(window.chrome)&&(0,a.exists)(window.chrome.runtime)&&(await this.connectIfNeeded(),this._connected)?(0,r.okResult)(`Connected (version: ${this._extensionVersion})`):e))},\"CHROME_OS\"===this.platform&&(yield{name:\"CrOS detection\",status:(e=navigator.userAgent,(/CrOS/.test(e)?(0,r.okResult):(0,r.errResult))(e))})}async connectIfNeeded(){if(!(0,a.exists)(window.chrome)||!(0,a.exists)(window.chrome.runtime))return!1;if(this._connected)return!0;this.port=window.chrome.runtime.connect(\"lfmkphfpdbjijhpomgecfikhfohaoine\"),this.port.onMessage.addListener(this.onExtensionMessage.bind(this)),this.port.onDisconnect.addListener(this.onExtensionDisconnect.bind(this));var e=(0,t.defer)();return this._connectPromise=e,this.invokeExtensionMethod(\"ExtensionVersion\"),e}disconnect(){this._connected=!1,this.port?.disconnect(),this.port=void 0}get connected(){return this._connected}get name(){return\"Chrome (this browser)\"}get emitsCompressedtrace(){return\"CHROME\"===this.platform}async getServiceState(){var e=await this.getChromeCategories();return e.ok?(0,r.okResult)({producers:[{id:1,name:\"Chrome\"}],dataSources:[{producerId:1,dsDescriptor:{name:\"track_event\",id:1,trackEventDescriptor:{availableCategories:e.value.map(e=>({name:e}))}}}]}):e}async getChromeCategories(){if(void 0===this.chromeCategories){if(!await this.connectIfNeeded())return(0,r.errResult)(\"Tracing extension not detected\");this.chromeCategories=await this.chromeCategoriesPromise}return(0,r.okResult)(this.chromeCategories)}async startTracing(e){return await this.connectIfNeeded(),this._connected?(this.session=new i.ChromeExtensionTracingSession(this,e),(0,r.okResult)(this.session)):(0,r.errResult)(\"Cannot connect to the Chrome Tracing extension\")}onExtensionMessage(e){var t;\"version\"in e?(this._connected=!0,this._extensionVersion=\"\"+e.version,t=this._connectPromise,this._connectPromise=void 0,t?.resolve(!0),this.invokeExtensionMethod(\"GetCategories\")):\"type\"in e&&(\"GetCategoriesResponse\"===e.type?(t=e.categories,this.chromeCategoriesPromise.resolve(t)):this.session?.onExtensionMessage(\"\"+e.type,e))}invokeExtensionMethod(e,t){t=(0,n.binaryEncode)(t??new Uint8Array);this.port?.postMessage({method:e,requestData:t})}onExtensionDisconnect(){this._connected&&console.log(\"Chrome tracing extension disconnected\",chrome.runtime.lastError),chrome.runtime.lastError,this.port=void 0,this._connected=!1,this._connectPromise&&this._connectPromise.resolve(!1),e.default.redraw()}}}return xL}var UL,BL={},jL={};function HL(){if(!UL){UL=1;{var e=jL;Object.defineProperty(e,\"__esModule\",{value:!0}),e.TraceConfigBuilder=e.DEFAULT_BUFFER_ID=e.FTRACE_DS=void 0;var t=Jr;const n=Pe(),r=Me(),o=t.__importDefault(dh());e.FTRACE_DS=\"linux.ftrace\",e.DEFAULT_BUFFER_ID=\"default\";e.TraceConfigBuilder=class{buffers=new Map;dataSources=new Map;mode=\"STOP_WHEN_FULL\";durationMs=1e4;maxFileSizeMb=0;fileWritePeriodMs=0;compression=!1;constructor(){this.buffers.set(e.DEFAULT_BUFFER_ID,{sizeKb:65536})}get defaultBuffer(){return(0,n.assertExists)(this.buffers.get(e.DEFAULT_BUFFER_ID))}addDataSource(e,t){return(0,r.getOrCreate)(this.dataSources,e,()=>({targetBufId:t,config:{name:e}})).config}addBuffer(e,t,r){(0,n.assertFalse)(this.buffers.has(e)),this.buffers.set(e,{sizeKb:t,mode:r})}addFtraceEvents(...e){var t=this.addDataSource(\"linux.ftrace\");t.ftraceConfig??={},t.ftraceConfig.ftraceEvents??=[],t.ftraceConfig.ftraceEvents.push(...e)}addAtraceApps(...e){var t=this.addDataSource(\"linux.ftrace\");t.ftraceConfig??={},t.ftraceConfig.atraceApps??=[],t.ftraceConfig.atraceApps.push(...e)}addAtraceCategories(...e){var t=this.addDataSource(\"linux.ftrace\");t.ftraceConfig??={},t.ftraceConfig.atraceCategories??=[],t.ftraceConfig.atraceCategories.push(...e)}addTrackEventEnabledCategories(...e){var t=this.addDataSource(\"track_event\");t.trackEventConfig??={},t.trackEventConfig.enabledCategories??=[],t.trackEventConfig.enabledCategories.push(...e)}addTrackEventDisabledCategories(...e){var t=this.addDataSource(\"track_event\");t.trackEventConfig??={},t.trackEventConfig.disabledCategories??=[],t.trackEventConfig.disabledCategories.push(...e)}toTraceConfig(){var e,t,r=new o.default.TraceConfig,n=(r.durationMs=this.durationMs,\"LONG_TRACE\"===this.mode&&(r.writeIntoFile=!0,r.fileWritePeriodMs=this.fileWritePeriodMs,r.maxFileSizeBytes=1e6*this.maxFileSizeMb),this.compression&&(r.compressionType=o.default.TraceConfig.CompressionType.COMPRESSION_TYPE_DEFLATE),[]);for([e,t]of this.buffers.entries()){var a=\"DISCARD\"===t.mode||void 0===t.mode&&\"STOP_WHEN_FULL\"===this.mode?o.default.TraceConfig.BufferConfig.FillPolicy.DISCARD:o.default.TraceConfig.BufferConfig.FillPolicy.RING_BUFFER;r.buffers.push({sizeKb:t.sizeKb,fillPolicy:a}),n.push(e)}for(const i of this.dataSources.values()){let e=void 0;if(void 0!==i.targetBufId&&(e=n.indexOf(i.targetBufId))<0)throw new Error(`DataSource ${i.config.name} specified buffer id `+i.targetBufId+\" but it doesn't exist. \"+`Buffers: [${n.join(\",\")}]`);r.dataSources.push({config:{...i.config,targetBuffer:e}})}return r}}}}return jL}var GL,VL={};function qL(){if(!GL){GL=1,Object.defineProperty(VL,\"__esModule\",{value:!0}),VL.TypedMultiselect=void 0;const e=Jr.__importDefault(xe()),t=lm();VL.TypedMultiselect=class{attrs;_selectedKeys=new Set;constructor(e){this.attrs=e}setEnabled(e,t){t?this._selectedKeys.add(e):this._selectedKeys.delete(e)}selectedKeys(){return Array.from(this._selectedKeys)}selectedValues(){var e,t,r=[];for([e,t]of this.attrs.options.entries())this._selectedKeys.has(e)&&r.push(t);return r}serialize(){return Array.from(this._selectedKeys)}deserialize(e){if(Array.isArray(e)&&e.every(e=>\"string\"==typeof e)){this._selectedKeys.clear();for(const t of e)this.attrs.options.has(t)&&this._selectedKeys.add(t)}}render(){return[this.attrs.title&&(0,e.default)(\"header\",this.attrs.title),(0,e.default)(t.MultiSelect,{fixedSize:!0,options:Array.from(this.attrs.options.keys()).map(e=>({id:e,name:e,checked:this._selectedKeys.has(e)})),onChange:e=>{for(const t of e)this.setEnabled(t.id,t.checked);this.attrs.onChange?.(Array.from(this._selectedKeys.values()))}})]}}}return VL}var zL,WL={};function $L(){if(!zL){zL=1,Object.defineProperty(WL,\"__esModule\",{value:!0}),WL.POLL_INTERVAL_SLIDER=WL.Slider=void 0;const u=Jr.__importDefault(xe()),t=Pe(),r=Me(),d=Ee();WL.Slider=class{attrs;_value;constructor(e){this.attrs=e,(0,t.assertTrue)(0<e.values.length),this._value=this.setValue(void 0)}serialize(){return this._value}deserialize(e){\"number\"==typeof e&&(this._value=e)}get value(){return this._value}setValue(e){return this._value=(0,r.exists)(e)?e:this.attrs.default??this.attrs.values[0]??0,this._value}onValueChange(e){this._value=e,this.attrs.onChange?.(e)}onTimeValueChange(e){try{var t=new Date(`1970-01-01T${e}.000Z`);isNaN(t.getTime())||this.onValueChange(t.getTime())}catch{}}onSliderChange(e){this.onValueChange(this.attrs.values[e])}render(){var e=this.attrs,t=e.title.replace(/[^a-z0-9]/gim,\"_\").toLowerCase(),r=e.values.length-1,n=this._value;let a=e.min??1;e.zeroIsDefault&&(a=Math.min(0,a));var i,o=e.description,s=e.disabled;let l=0;for(;l<e.values.length&&e.values[l]<n;l++);let c={};return c=e.isTime?{type:\"text\",pattern:\"(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}\",value:new Date(n).toISOString().substring(11,19),oninput:e=>{this.onTimeValueChange(e.target.value)}}:{type:\"number\",value:(i=e.zeroIsDefault&&0===n)?\"\":n,placeholder:i?\"(default)\":\"\",oninput:e=>{this.onValueChange(+e.target.value)}},(0,u.default)(\".slider\"+(e.cssClass??\"\"),(0,u.default)(\"header\",e.title),o?(0,u.default)(\"header.descr\",e.description):\"\",void 0!==e.icon&&(0,u.default)(d.Icon,{icon:e.icon}),(0,u.default)(`input[id=\"${t}\"][type=range][min=0][max=${r}][value=${l}]`,{disabled:s,oninput:e=>{this.onSliderChange(+e.target.value)}}),(0,u.default)(`input.spinner[min=${a}][for=${t}]`,c),(0,u.default)(\".unit\",e.unit))}},WL.POLL_INTERVAL_SLIDER={title:\"Poll interval\",values:[250,500,1e3,2500,5e3,3e4,6e4],cssClass:\".thin\",unit:\"ms\"}}return WL}var KL,YL,JL,QL={},ZL={};function XL(){if(!KL){KL=1,Object.defineProperty(ZL,\"__esModule\",{value:!0}),ZL.Switch=void 0;const s=Jr.__importDefault(xe()),l=be();ZL.Switch=class{view({attrs:e}){const{label:t,labelLeft:r,checked:n,disabled:a,className:i,...o}=e;e=(0,l.classNames)(a&&\"pf-disabled\",i);return(0,s.default)(\"label.pf-switch\",{...o,className:e},r&&(0,s.default)(\"span.pf-switch-label-left\",r),(0,s.default)(\"input[type=checkbox]\",{disabled:a,checked:n}),(0,s.default)(\"span.pf-switch-visual\"),void 0!==t&&(0,s.default)(\"span.pf-switch-label\",t))}}}return ZL}function e3(){if(!YL){YL=1,Object.defineProperty(QL,\"__esModule\",{value:!0}),QL.Toggle=void 0;const e=Jr.__importDefault(xe()),t=XL();QL.Toggle=class{attrs;_enabled;constructor(e){this.attrs=e,this._enabled=this.setEnabled(void 0)}setEnabled(e){return this._enabled=e??this.attrs.default??!1,this._enabled}get enabled(){return this._enabled}serialize(){return this._enabled}deserialize(e){!0!==e&&!1!==e||(this._enabled=e)}render(){return(0,e.default)(\".pf-toggle\",{className:this.attrs.cssClass},[(0,e.default)(t.Switch,{className:\"pf-toggle__switch\",checked:this._enabled,oninput:e=>{this.setEnabled(e.target.checked),this.attrs.onChange?.(this._enabled)},label:this.attrs.title}),(0,e.default)(\".pf-toggle__desc\",this.attrs.descr)])}}}return QL}function t3(){if(!JL){JL=1;{var i=BL;Object.defineProperty(i,\"__esModule\",{value:!0}),i.ADV_FTRACE_PROBE_ID=i.PROC_STATS_DS_NAME=i.ADV_PROC_ASSOC_PROBE_ID=void 0,i.advancedRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"advanced\",title:\"Advanced settings\",subtitle:\"For ftrace wizards\",icon:\"settings\",probes:[function(){const t={ksyms:new o.Toggle({title:\"Resolve kernel symbols\",default:!0,descr:\"Enables lookup via /proc/kallsyms for workqueue, sched_blocked_reason and other events (userdebug/eng builds only).\"}),genericEvents:new o.Toggle({title:\"Enable generic events (slow)\",descr:\"Enables capture of ftrace events that are not known at build time by perfetto as key-value string pairs. This is slow and expensive.\"}),bufSize:new n.Slider({title:\"Buf size\",cssClass:\".thin\",values:[0,512,1024,2048,4096,16384,32768],unit:\"KB\",zeroIsDefault:!0}),drainRate:new n.Slider({title:\"trace_pipe_raw read interval\",cssClass:\".thin\",values:[0,100,250,500,1e3,2500,5e3],unit:\"ms\",zeroIsDefault:!0}),groups:new e.TypedMultiselect({title:\"Event groups\",options:new Map(Object.entries({binder:\"binder/*\",block:\"block/*\",clk:\"clk/*\",devfreq:\"devfreq/*\",ext4:\"ext4/*\",f2fs:\"f2fs/*\",i2c:\"i2c/*\",irq:\"irq/*\",kmem:\"kmem/*\",memory_bus:\"memory_bus/*\",mmc:\"mmc/*\",oom:\"oom/*\",power:\"power/*\",regulator:\"regulator/*\",sched:\"sched/*\",sync:\"sync/*\",task:\"task/*\",vmscan:\"vmscan/*\",fastrpc:\"fastrpc/*\"}))})};return{id:i.ADV_FTRACE_PROBE_ID,title:\"Advanced ftrace config\",image:\"rec_ftrace.png\",description:\"Enable individual events and tune the kernel-tracing (ftrace) module. The events enabled here are in addition to those from enabled by other probes.\",supportedPlatforms:[\"ANDROID\",\"CHROME_OS\",\"LINUX\"],settings:t,genConfig:function(e){e=e.addDataSource(r.FTRACE_DS).ftraceConfig??={};e.bufferSizeKb=t.bufSize.value||void 0,e.drainPeriodMs=t.drainRate.value||void 0,e.symbolizeKsyms=!!t.ksyms.enabled||void 0,e.disableGenericEvents=!t.genericEvents.enabled,e.ftraceEvents??=[],e.ftraceEvents.push(...t.groups.selectedValues())}}}(),function(){const n=[\"sched/sched_process_exit\",\"sched/sched_process_free\",\"task/task_newtask\",\"task/task_rename\"],a={initialScan:new o.Toggle({title:\"Scan all processes at startup\",descr:\"Reports all /proc/* processes when starting\",default:!0})};return{id:i.ADV_PROC_ASSOC_PROBE_ID,title:\"Process<>thread association\",description:\"A union of ftrace events and /proc scrapers to capture thread<>processassociations as soon as they are seen from the cpu_pipe_raw. This is to capture the information about the whole process (e.g., cmdline).\",supportedPlatforms:[\"ANDROID\",\"CHROME_OS\",\"LINUX\"],settings:a,genConfig:function(e){e.addFtraceEvents(...n);var t=\"proc_assoc\",r=[256,8192],r=Math.min(Math.max(e.defaultBuffer.sizeKb/16,r[0]),r[1]);e.addBuffer(t,r),(e.addDataSource(i.PROC_STATS_DS_NAME,t).processStatsConfig??={}).scanAllProcessesOnStart=a.initialScan.enabled||void 0}}}()]}};const r=HL(),e=qL(),n=$L(),o=e3();i.ADV_PROC_ASSOC_PROBE_ID=\"adv_proc_thread_assoc\",i.PROC_STATS_DS_NAME=\"linux.process_stats\",i.ADV_FTRACE_PROBE_ID=\"advanced_ftrace\"}}return BL}var r3,n3,a3={},i3={};function o3(){if(!r3){r3=1,Object.defineProperty(i3,\"__esModule\",{value:!0}),i3.Textarea=void 0;const e=Jr.__importDefault(xe()),t=Oe(),r=Ae();i3.Textarea=class{attrs;_text;constructor(e){this.attrs=e,this._text=this.setText(e.default)}setText(e){return this._text=e??\"\",this._text}get text(){return this._text}serialize(){return this._text}deserialize(e){\"string\"==typeof e&&(this._text=e)}render(){return(0,e.default)(\".textarea-holder\",(0,e.default)(\"header\",this.attrs.title,this.attrs.docsLink&&[\" \",(0,e.default)(t.Anchor,{icon:r.Icons.ExternalLink,href:this.attrs.docsLink},\"Docs\")]),(0,e.default)(\"textarea.extra-input\"+(this.attrs.cssClass??\"\"),{onchange:e=>{this.setText(e.target.value),this.attrs.onChange?.(this._text)},disabled:this.attrs.disabled,placeholder:this.attrs.placeholder,value:this._text}))}}}return i3}function s3(){if(n3)return a3;n3=1,Object.defineProperty(a3,\"__esModule\",{value:!0}),a3.androidRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"android\",title:\"Android apps & svcs\",subtitle:\"Android-specific data sources\",icon:\"android\",probes:[function(){const r={categories:new n.TypedMultiselect({options:new Map(Object.entries(s).map(([e,t])=>[e+\": \"+t,e]))}),apps:new a.Textarea({title:\"Process / package names to trace\",placeholder:\"e.g. system_server\\ncom.android.settings\"}),allApps:new i.Toggle({title:\"Record events from all Android apps and services\",cssClass:\".thin\",onChange(e){r.apps.attrs.disabled=e}})};return{id:\"atrace\",title:\"Atrace userspace annotations\",image:\"rec_atrace.png\",description:\"Enables C++ / Java codebase annotations (ATRACE_BEGIN() / os.Trace())\",supportedPlatforms:[\"ANDROID\"],settings:r,genConfig:function(e){if(e.addAtraceCategories(...r.categories.selectedValues()),r.allApps.enabled)e.addAtraceApps(\"*\");else for(const t of(0,o.splitLinesNonEmpty)(r.apps.text))e.addAtraceApps(t);(0<r.categories.selectedKeys().length||r.allApps.enabled)&&e.addFtraceEvents(\"ftrace/print\")}}}(),function(){const r={buffers:new n.TypedMultiselect({options:new Map(Object.entries({Crash:t.default.AndroidLogId.LID_CRASH,Main:t.default.AndroidLogId.LID_DEFAULT,\"Binary events\":t.default.AndroidLogId.LID_EVENTS,Kernel:t.default.AndroidLogId.LID_KERNEL,Radio:t.default.AndroidLogId.LID_RADIO,Security:t.default.AndroidLogId.LID_SECURITY,Stats:t.default.AndroidLogId.LID_STATS,System:t.default.AndroidLogId.LID_SYSTEM}))})};return{id:\"logcat\",title:\"Event log (logcat)\",image:\"rec_logcat.png\",description:\"Streams the event log into the trace. If no buffer filter is specified, all buffers are selected.\",supportedPlatforms:[\"ANDROID\"],settings:r,genConfig:function(e){var t=r.buffers.selectedValues();e.addDataSource(\"android.log\").androidLogConfig={logIds:0<t.length?t:void 0}}}}(),{id:\"android_frame_timeline\",title:\"Frame timeline\",description:\"Records expected/actual frame timings from surface_flinger.Requires Android 12 (S) or above.\",supportedPlatforms:[\"ANDROID\"],docsLink:\"https://perfetto.dev/docs/data-sources/frametimeline\",genConfig:function(e){e.addDataSource(\"android.surfaceflinger.frametimeline\")}},{id:\"android_game_interventions\",title:\"Game intervention list\",description:\"List game modes and interventions. Requires Android 13 (T) or above.\",supportedPlatforms:[\"ANDROID\"],docsLink:\"https://perfetto.dev/docs/data-sources/android-game-intervention-list\",genConfig:function(e){e.addDataSource(\"android.game_interventions\")}},function(){const t={pollMs:new r.Slider(r.POLL_INTERVAL_SLIDER)};return{id:\"network_tracing\",title:\"Network Tracing\",description:\"Records detailed information on network packets. Requires Android 14 (U) or above\",supportedPlatforms:[\"ANDROID\"],settings:t,genConfig:function(e){e.addDataSource(\"android.network_packets\").networkPacketTraceConfig={pollMs:t.pollMs.value},e.addDataSource(\"android.packages_list\")}}}(),function(){const i={pushAtoms:new n.TypedMultiselect({title:\"Push atoms\",options:new Map(Object.entries(t.default.AtomId).filter(([,e])=>\"number\"==typeof e&&2<e&&e<9999).map(([e,t])=>[e,t]))}),rawPushIds:new a.Textarea({placeholder:\"Add raw pushed atoms IDs, one per line, e.g.:\\n818\\n819\"}),pullAtoms:new n.TypedMultiselect({title:\"Pull atoms\",options:new Map(Object.entries(t.default.AtomId).filter(([,e])=>\"number\"==typeof e&&1e4<e&&e<99999).map(([e,t])=>[e,t]))}),rawPullIds:new a.Textarea({placeholder:\"Add raw pulled atom IDs, one per line, e.g.:\\n10063\\n10064\\n\"}),pullInterval:new r.Slider({...r.POLL_INTERVAL_SLIDER,default:5e3}),pullPkg:new a.Textarea({placeholder:\"Add pulled atom packages, one per line, e.g.:\\ncom.android.providers.telephony\"})};return{id:\"statsd\",title:\"Statsd atoms\",description:\"Record instances of statsd atoms to the Statsd Atoms track.\",supportedPlatforms:[\"ANDROID\"],docsLink:\"https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto\",settings:i,genConfig:function(e){var t=(0,o.splitLinesNonEmpty)(i.pullPkg.text),r=i.pullAtoms.selectedValues(),n=(0,o.splitLinesNonEmpty)(i.rawPullIds.text).map(e=>parseInt(e.trim())),a=0<r.length||0<n.length;e.addDataSource(\"android.statsd\").statsdTracingConfig={pushAtomId:i.pushAtoms.selectedValues(),rawPushAtomId:(0,o.splitLinesNonEmpty)(i.rawPushIds.text).map(e=>parseInt(e.trim())),pullConfig:a?[{pullAtomId:r,rawPullAtomId:n,pullFrequencyMs:i.pullInterval.value,packages:0<t.length?t:void 0}]:void 0}}}}()]}};var e=Jr;const o=j(),t=e.__importDefault(dh()),n=qL(),r=$L(),a=o3(),i=e3();const s={adb:\"ADB\",aidl:\"AIDL calls\",am:\"Activity Manager\",audio:\"Audio\",binder_driver:\"Binder Kernel driver\",binder_lock:\"Binder global lock trace\",bionic:\"Bionic C library\",camera:\"Camera\",dalvik:\"ART & Dalvik\",database:\"Database\",gfx:\"Graphics\",hal:\"Hardware Modules\",input:\"Input\",network:\"Network\",nnapi:\"Neural Network API\",pm:\"Package Manager\",power:\"Power Management\",res:\"Resource Loading\",rro:\"Resource Overlay\",rs:\"RenderScript\",sm:\"Sync Manager\",ss:\"System Server\",vibrator:\"Vibrator\",video:\"Video\",view:\"View System\",webview:\"WebView\",wm:\"Window Manager\"};return a3}var l3,c3={};function u3(){if(l3)return c3;l3=1,Object.defineProperty(c3,\"__esModule\",{value:!0}),c3.perfettoSDKRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"track_event\",title:\"Perfetto SDK\",subtitle:\"Perfetto Tracing SDK annotations\",icon:\"speed\",probes:[function(){const r={categories:new e.TypedMultiselect({options:new Map(Object.entries(a).map(([e,t])=>[e+\": \"+t,e]))}),enabledCats:new t.Textarea({title:\"Additional categories:\",placeholder:\"e.g. cat1\\ncat2_*\"})};return{id:\"track_event\",title:\"Track events\",image:\"rec_atrace.png\",description:\"Enables C / C++ / Java annotations (PERFETTO_TE_SLICE_BEGIN(), TRACE_EVENT(), os.PerfettoTrace())\",supportedPlatforms:[\"ANDROID\",\"CHROME\",\"CHROME_OS\",\"LINUX\"],settings:r,genConfig:function(e){e.addTrackEventDisabledCategories(\"*\"),e.addTrackEventEnabledCategories(...r.categories.selectedValues());for(const t of(0,n.splitLinesNonEmpty)(r.enabledCats.text))e.addTrackEventEnabledCategories(t)}}}()]}};const n=j(),e=qL(),t=o3();const a={mq:\"Message Queue\",gfx:\"Graphics\",servicemanager:\"Service Manager\"};return c3}var d3,p3={};function f3(){if(d3)return p3;d3=1,Object.defineProperty(p3,\"__esModule\",{value:!0}),p3.bufferConfigPage=function(r){return{kind:\"SESSION_PAGE\",id:\"config\",icon:\"tune\",title:\"Buffers and duration\",subtitle:\"Buffer mode, size and duration\",render(){return(0,i.default)(e,{recMgr:r})},serialize(e){var t=r.recordConfig.traceConfig;e.mode=t.mode,e.bufSizeKb=t.defaultBuffer.sizeKb,e.durationMs=t.durationMs,e.maxFileSizeMb=t.maxFileSizeMb,e.fileWritePeriodMs=t.fileWritePeriodMs,e.compression=t.compression},async deserialize(e){var t=r.recordConfig.traceConfig;t.mode=e.mode,t.defaultBuffer.sizeKb=e.bufSizeKb,t.durationMs=e.durationMs,t.maxFileSizeMb=e.maxFileSizeMb,t.fileWritePeriodMs=e.fileWritePeriodMs,t.compression=e.compression}}};const i=Jr.__importDefault(xe()),o=Ch(),r=$L(),n=e3();class e{bufSize;maxDuration;maxFileSize;flushPeriod;compress;constructor({attrs:e}){const t=e.recMgr.recordConfig.traceConfig;this.bufSize=new r.Slider({title:\"In-memory buffer size\",icon:\"360\",values:[4,8,16,32,64,128,256,512],default:t.defaultBuffer.sizeKb/1024,unit:\"MB\",onChange:e=>t.defaultBuffer.sizeKb=1024*e}),this.maxDuration=new r.Slider({title:\"Max duration\",icon:\"timer\",values:[a(10),a(15),a(30),a(60),s(5),s(30),l(1),l(6),l(12)],default:t.durationMs,isTime:!0,unit:\"h:m:s\",onChange:e=>t.durationMs=e}),this.maxFileSize=new r.Slider({title:\"Max file size\",icon:\"save\",values:[5,25,50,100,500,1e3,5e3,1e4],default:t.maxFileSizeMb,unit:\"MB\",onChange:e=>t.maxFileSizeMb=e}),this.flushPeriod=new r.Slider({title:\"Flush on disk every\",icon:\"av_timer\",values:[100,250,500,1e3,2500,5e3],default:t.fileWritePeriodMs,unit:\"ms\",onChange:e=>t.fileWritePeriodMs=e}),e.recMgr.currentTarget?.emitsCompressedtrace||(this.compress=new n.Toggle({title:\"Deflate (gzip) compression \",descr:\"Generates smaller trace files at the cost of extra CPU cycles when stopping the trace. Compression happens only after the end of the trace and does not improve the ring-buffer efficiency.\",default:t.compression,onChange:e=>t.compression=e}))}view({attrs:e}){e=e.recMgr.recordConfig;return[(0,i.default)(\"header\",\"Recording mode\"),(0,i.default)(\".record-mode\",this.recButton(e,\"STOP_WHEN_FULL\",\"Stop when full\",\"rec_one_shot.png\"),this.recButton(e,\"RING_BUFFER\",\"Ring buffer\",\"rec_ring_buf.png\"),this.recButton(e,\"LONG_TRACE\",\"Long trace\",\"rec_long_trace.png\")),this.bufSize.render(),this.maxDuration.render(),\"LONG_TRACE\"===e.traceConfig.mode&&this.maxFileSize.render(),\"LONG_TRACE\"===e.traceConfig.mode&&this.flushPeriod.render(),this.compress?.render()]}recButton(t,r,e,n){var a={checked:t.traceConfig.mode===r,onchange:e=>{e.target.checked&&\"LONG_TRACE\"===(t.traceConfig.mode=r)&&this.maxDuration.value===this.maxDuration.attrs.default&&this.maxDuration.setValue(l(6))}};return(0,i.default)(\"label\"+(t.traceConfig.mode===r?\".selected\":\"\"),(0,i.default)(\"input[type=radio][name=rec_mode]\",a),(0,i.default)(`img[src=${(0,o.assetSrc)(\"assets/\"+n)}]`),(0,i.default)(\"span\",e))}}const a=e=>1e3*e,s=e=>1e3*e*60,l=e=>1e3*e*60*60;return p3}var h3,m3={};function g3(){if(h3)return m3;h3=1,Object.defineProperty(m3,\"__esModule\",{value:!0}),m3.ChromeCategoriesWidget=void 0,m3.chromeRecordSection=function(e){return{kind:\"PROBES_PAGE\",id:\"chrome\",title:\"Chrome browser\",subtitle:\"Chrome tracing\",icon:\"laptop_chromebook\",probes:[function(e){const l=Object.fromEntries(Object.keys(u).map(e=>[e,new r.Toggle({title:e})])),c={...l,privacy:new r.Toggle({title:\"Remove untyped and sensitive data like URLs from the trace\",descr:\"Not recommended unless you intend to share the trace with third-parties.\"}),categories:new i(e)};return{id:\"chrome_tracing\",title:\"Chrome browser tracing\",settings:c,genConfig:function(e){const t=new Set;c.categories.getEnabledCategories().forEach(e=>t.add(e));for(var[r,n]of Object.entries(u))l[r].enabled&&n.forEach(e=>t.add(e));var a=t.has(\"disabled-by-default-memory-infra\"),i={record_mode:\"STOP_WHEN_FULL\"===e.mode?\"record-until-full\":\"record-continuously\",included_categories:[...t],excluded_categories:[\"*\"],memory_dump_config:a?{allowed_dump_modes:[\"background\",\"light\",\"detailed\"],triggers:[{min_time_between_dumps_ms:1e4,mode:\"detailed\",type:\"periodic_interval\"}]}:void 0},o=c.privacy.enabled,i={privacyFilteringEnabled:o,traceConfig:JSON.stringify(i)},s=e.addDataSource(\"track_event\").trackEventConfig??={};s.disabledCategories??=[\"*\"],s.enabledCategories??=[],s.enabledCategories.push(...t),s.enabledCategories.push(\"__metadata\"),s.enableThreadTimeSampling=!0,s.timestampUnitMultiplier=1e3,s.filterDynamicEventNames=o,s.filterDebugAnnotations=o,e.addBuffer(\"metadata\",256,\"DISCARD\"),e.addDataSource(\"org.chromium.trace_metadata2\",\"metadata\").chromeConfig={privacyFilteringEnabled:o},a&&(e.addDataSource(\"org.chromium.memory_instrumentation\").chromeConfig=i,e.addDataSource(\"org.chromium.native_heap_profiler\").chromeConfig=i),(t.has(\"disabled-by-default-cpu_profiler\")||t.has(\"disabled-by-default-cpu_profiler.debug\"))&&(e.addDataSource(\"org.chromium.sampler_profiler\").chromeConfig={privacyFilteringEnabled:o}),t.has(\"disabled-by-default-system_metrics\")&&e.addDataSource(\"org.chromium.system_metrics\"),t.has(\"disabled-by-default-histogram_samples\")&&((e.addDataSource(\"org.chromium.histogram_sample\").chromiumHistogramSamples??={}).filterHistogramNames=o)}}}(e)]}};const t=Jr.__importDefault(xe()),r=e3(),e=Bs(),n=lm();const a=\"disabled-by-default-\";class i{chromeCategoryGetter;options=new Array;fetchedRuntimeCategories=!1;constructor(e){this.chromeCategoryGetter=e,this.initializeCategories(s)}async fetchRuntimeCategoriesIfNeeded(){var e;this.fetchedRuntimeCategories||((e=await this.chromeCategoryGetter()).ok&&(this.initializeCategories(e.value),t.default.redraw()),this.fetchedRuntimeCategories=!0)}initializeCategories(e){this.options=e.map(t=>({id:t,name:t.replace(a,\"\"),checked:this.options.find(e=>e.id===t)?.checked??!1})).sort((e,t)=>e.name.toLowerCase().localeCompare(t.name.toLowerCase()))}getEnabledCategories(){return this.options.filter(e=>e.checked).map(e=>e.id)}setEnabled(e,t){for(const r of this.options)r.id===e&&(r.checked=t)}serialize(){return this.options.filter(e=>e.checked).map(e=>e.id)}deserialize(e){if(Array.isArray(e)&&e.every(e=>\"string\"==typeof e)){this.options.forEach(e=>e.checked=!1);for(const r of e){var t=this.options.find(e=>e.id===r);void 0!==t&&(t.checked=!0)}}}render(){return(0,t.default)(\"div.chrome-categories\",{oninit:()=>this.fetchRuntimeCategoriesIfNeeded()},(0,t.default)(e.Section,{title:\"Additional Categories\"},(0,t.default)(n.MultiSelect,{options:this.options.filter(e=>!e.id.startsWith(a)),repeatCheckedItemsAtTop:!1,fixedSize:!1,onChange:e=>{e.forEach(({id:e,checked:t})=>this.setEnabled(e,t))}})),(0,t.default)(e.Section,{title:\"High Overhead Categories\"},(0,t.default)(n.MultiSelect,{options:this.options.filter(e=>e.id.startsWith(a)),repeatCheckedItemsAtTop:!1,fixedSize:!1,onChange:e=>{e.forEach(({id:e,checked:t})=>this.setEnabled(e,t))}})))}}function o(e){return[e,\"disabled-by-default-\"+e]}m3.ChromeCategoriesWidget=i;const u={\"Task Scheduling\":[\"toplevel\",\"toplevel.flow\",\"scheduler\",\"sequence_manager\",\"disabled-by-default-toplevel.flow\"],\"IPC Flows\":[\"toplevel\",\"toplevel.flow\",\"disabled-by-default-ipc.flow\",\"mojom\"],\"Javascript execution\":[\"toplevel\",\"v8\"],\"Web content rendering, layout and compositing\":[\"toplevel\",\"blink\",\"cc\",\"gpu\"],\"UI rendering and surface compositing\":[\"toplevel\",\"cc\",\"gpu\",\"viz\",\"ui\",\"views\"],\"Input events\":[\"toplevel\",\"benchmark\",\"evdev\",\"input\",\"disabled-by-default-toplevel.flow\"],\"Navigation and loading\":[\"loading\",\"net\",\"netlog\",\"navigation\",\"browser\"],Audio:[\"base\",...o(\"audio\"),...o(\"webaudio\"),...o(\"webaudio.audionode\"),...o(\"webrtc\"),...o(\"audio-worklet\"),...o(\"mediastream\"),...o(\"v8.gc\"),...o(\"toplevel\"),...o(\"toplevel.flow\"),...o(\"wakeup.flow\"),...o(\"cpu_profiler\"),...o(\"scheduler\"),...o(\"p2p\"),...o(\"net\")],Video:[\"base\",\"gpu\",\"gpu.capture\",\"media\",\"toplevel\",\"toplevel.flow\",\"scheduler\",\"wakeup.flow\",\"webrtc\",\"disabled-by-default-video_and_image_capture\",\"disabled-by-default-webrtc\"]},s=[\"accessibility\",\"AccountFetcherService\",\"android.adpf\",\"android.ui.jank\",\"android_webview\",\"android_webview.timeline\",\"aogh\",\"audio\",\"base\",\"benchmark\",\"blink\",\"blink.animations\",\"blink.bindings\",\"blink.console\",\"blink.net\",\"blink.resource\",\"blink.user_timing\",\"blink.worker\",\"blink_style\",\"Blob\",\"browser\",\"browsing_data\",\"CacheStorage\",\"Calculators\",\"CameraStream\",\"cppgc\",\"camera\",\"cast_app\",\"cast_perf_test\",\"cast.mdns\",\"cast.mdns.socket\",\"cast.stream\",\"cc\",\"cc.debug\",\"cdp.perf\",\"chromeos\",\"cma\",\"compositor\",\"content\",\"content_capture\",\"interactions\",\"delegated_ink_trails\",\"device\",\"devtools\",\"devtools.contrast\",\"devtools.timeline\",\"disk_cache\",\"download\",\"download_service\",\"drm\",\"drmcursor\",\"dwrite\",\"DXVA_Decoding\",\"evdev\",\"event\",\"event_latency\",\"exo\",\"extensions\",\"explore_sites\",\"FileSystem\",\"file_system_provider\",\"fledge\",\"fonts\",\"GAMEPAD\",\"gpu\",\"gpu.angle\",\"gpu.angle.texture_metrics\",\"gpu.capture\",\"graphics.pipeline\",\"headless\",\"history\",\"hwoverlays\",\"identity\",\"ime\",\"IndexedDB\",\"input\",\"input.scrolling\",\"io\",\"ipc\",\"Java\",\"jni\",\"jpeg\",\"latency\",\"latencyInfo\",\"leveldb\",\"loading\",\"log\",\"login\",\"media\",\"media_router\",\"memory\",\"midi\",\"mojom\",\"mus\",\"native\",\"navigation\",\"navigation.debug\",\"net\",\"network.scheduler\",\"netlog\",\"offline_pages\",\"omnibox\",\"oobe\",\"openscreen\",\"ozone\",\"partition_alloc\",\"passwords\",\"p2p\",\"page-serialization\",\"paint_preview\",\"pepper\",\"PlatformMalloc\",\"power\",\"ppapi\",\"ppapi_proxy\",\"print\",\"raf_investigation\",\"rail\",\"renderer\",\"renderer_host\",\"renderer.scheduler\",\"resources\",\"RLZ\",\"ServiceWorker\",\"SiteEngagement\",\"safe_browsing\",\"scheduler\",\"scheduler.long_tasks\",\"screenlock_monitor\",\"segmentation_platform\",\"sequence_manager\",\"service_manager\",\"sharing\",\"shell\",\"shortcut_viewer\",\"shutdown\",\"skia\",\"sql\",\"stadia_media\",\"stadia_rtc\",\"startup\",\"sync\",\"system_apps\",\"test_gpu\",\"toplevel\",\"toplevel.flow\",\"ui\",\"v8\",\"v8.execute\",\"v8.wasm\",\"ValueStoreFrontend::Backend\",\"views\",\"views.frame\",\"viz\",\"vk\",\"wakeup.flow\",\"wayland\",\"webaudio\",\"webengine.fidl\",\"weblayer\",\"WebCore\",\"webnn\",\"webrtc\",\"webrtc_stats\",\"xr\",\"disabled-by-default-android_view_hierarchy\",\"disabled-by-default-animation-worklet\",\"disabled-by-default-audio\",\"disabled-by-default-audio.latency\",\"disabled-by-default-audio-worklet\",\"disabled-by-default-base\",\"disabled-by-default-blink.debug\",\"disabled-by-default-blink.debug.display_lock\",\"disabled-by-default-blink.debug.layout\",\"disabled-by-default-blink.debug.layout.trees\",\"disabled-by-default-blink.feature_usage\",\"disabled-by-default-blink.image_decoding\",\"disabled-by-default-blink.invalidation\",\"disabled-by-default-identifiability\",\"disabled-by-default-identifiability.high_entropy_api\",\"disabled-by-default-cc\",\"disabled-by-default-cc.debug\",\"disabled-by-default-cc.debug.cdp-perf\",\"disabled-by-default-cc.debug.display_items\",\"disabled-by-default-cc.debug.lcd_text\",\"disabled-by-default-cc.debug.picture\",\"disabled-by-default-cc.debug.scheduler\",\"disabled-by-default-cc.debug.scheduler.frames\",\"disabled-by-default-cc.debug.scheduler.now\",\"disabled-by-default-content.verbose\",\"disabled-by-default-cpu_profiler\",\"disabled-by-default-cppgc\",\"disabled-by-default-cpu_profiler.debug\",\"disabled-by-default-devtools.screenshot\",\"disabled-by-default-devtools.timeline\",\"disabled-by-default-devtools.timeline.frame\",\"disabled-by-default-devtools.timeline.inputs\",\"disabled-by-default-devtools.timeline.invalidationTracking\",\"disabled-by-default-devtools.timeline.layers\",\"disabled-by-default-devtools.timeline.picture\",\"disabled-by-default-devtools.timeline.stack\",\"disabled-by-default-devtools.target-rundown\",\"disabled-by-default-devtools.v8-source-rundown\",\"disabled-by-default-devtools.v8-source-rundown-sources\",\"disabled-by-default-file\",\"disabled-by-default-fonts\",\"disabled-by-default-gpu_cmd_queue\",\"disabled-by-default-gpu.dawn\",\"disabled-by-default-gpu.debug\",\"disabled-by-default-gpu.decoder\",\"disabled-by-default-gpu.device\",\"disabled-by-default-gpu.graphite.dawn\",\"disabled-by-default-gpu.service\",\"disabled-by-default-gpu.vulkan.vma\",\"disabled-by-default-histogram_samples\",\"disabled-by-default-java-heap-profiler\",\"disabled-by-default-layer-element\",\"disabled-by-default-layout_shift.debug\",\"disabled-by-default-lifecycles\",\"disabled-by-default-loading\",\"disabled-by-default-mediastream\",\"disabled-by-default-memory-infra\",\"disabled-by-default-memory-infra.v8.code_stats\",\"disabled-by-default-mojom\",\"disabled-by-default-net\",\"disabled-by-default-network\",\"disabled-by-default-paint-worklet\",\"disabled-by-default-power\",\"disabled-by-default-renderer.scheduler\",\"disabled-by-default-renderer.scheduler.debug\",\"disabled-by-default-sequence_manager\",\"disabled-by-default-sequence_manager.debug\",\"disabled-by-default-sequence_manager.verbose_snapshots\",\"disabled-by-default-skia\",\"disabled-by-default-skia.gpu\",\"disabled-by-default-skia.gpu.cache\",\"disabled-by-default-skia.shaders\",\"disabled-by-default-skottie\",\"disabled-by-default-SyncFileSystem\",\"disabled-by-default-system_power\",\"disabled-by-default-system_stats\",\"disabled-by-default-thread_pool_diagnostics\",\"disabled-by-default-toplevel.ipc\",\"disabled-by-default-user_action_samples\",\"disabled-by-default-v8.compile\",\"disabled-by-default-v8.cpu_profiler\",\"disabled-by-default-v8.gc\",\"disabled-by-default-v8.gc_stats\",\"disabled-by-default-v8.ic_stats\",\"disabled-by-default-v8.inspector\",\"disabled-by-default-v8.runtime\",\"disabled-by-default-v8.runtime_stats\",\"disabled-by-default-v8.runtime_stats_sampling\",\"disabled-by-default-v8.stack_trace\",\"disabled-by-default-v8.turbofan\",\"disabled-by-default-v8.wasm.detailed\",\"disabled-by-default-v8.wasm.turbofan\",\"disabled-by-default-video_and_image_capture\",\"disabled-by-default-display.framedisplayed\",\"disabled-by-default-viz.gpu_composite_time\",\"disabled-by-default-viz.debug.overlay_planes\",\"disabled-by-default-viz.hit_testing_flow\",\"disabled-by-default-viz.overdraw\",\"disabled-by-default-viz.quads\",\"disabled-by-default-viz.surface_id_flow\",\"disabled-by-default-viz.surface_lifetime\",\"disabled-by-default-viz.triangles\",\"disabled-by-default-viz.visual_debugger\",\"disabled-by-default-webaudio.audionode\",\"disabled-by-default-webgpu\",\"disabled-by-default-webnn\",\"disabled-by-default-webrtc\",\"disabled-by-default-worker.scheduler\",\"disabled-by-default-xr.debug\"];return m3}var _3,y3,T3,v3={},b3={},E3={exports:{}};function S3(){function e(L={}){var F,U,B,r,o=L,e=(new Promise((e,t)=>{F=e,U=t}),\"object\"==typeof window),u=\"undefined\"!=typeof WorkerGlobalScope,t=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node&&\"renderer\"!=process.type,n=!e&&!t&&!u,j=[],H=\"./this.program\",G=(e,t)=>{throw t},V=(u&&(at=self.location.href),\"\");if(n){if(\"object\"==typeof process||\"object\"==typeof window||\"undefined\"!=typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\")}else{if(!e&&!u)throw new Error(\"environment detection error\");try{V=new URL(\".\",at).href}catch{}if(\"object\"!=typeof window&&\"undefined\"==typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");u&&(r=e=>{var t=new XMLHttpRequest;return t.open(\"GET\",e,!1),t.responseType=\"arraybuffer\",t.send(null),new Uint8Array(t.response)}),B=async e=>{h(!W(e),\"readAsync does not work with file:// URLs\");e=await fetch(e,{credentials:\"same-origin\"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+\" : \"+e.url)}}var q,a,z,d,c,p,f=console.log.bind(console),s=console.error.bind(console),l=\"WORKERFS is no longer included by default; build with -lworkerfs.js\",i=(h(!t,\"node environment detected but not enabled at build time.  Add `node` to `-sENVIRONMENT` to enable.\"),h(!n,\"shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable.\"),\"object\"!=typeof WebAssembly&&s(\"no native wasm support detected\"),!1);function h(e,t){e||E(\"Assertion failed\"+(t?\": \"+t:\"\"))}var m=!1,W=e=>e.startsWith(\"file://\");function g(){var e,t,r;i||(0==(e=Ye())&&(e+=4),t=p[e>>>2>>>0],r=p[e+4>>>2>>>0],34821223==t&&2310721022==r||E(`Stack overflow! Stack cookie has been overwritten at ${w(e)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${w(r)} `+w(t)),1668509029!=p[0]&&E(\"Runtime error: The application has corrupted its heap memory area (address zero)!\"))}var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\";function _(e){Object.getOwnPropertyDescriptor(o,e)||Object.defineProperty(o,e,{configurable:!0,set(){E(`Attempt to set \\`Module.${e}\\` after it has already been processed.  This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function $(r){Object.getOwnPropertyDescriptor(o,r)||Object.defineProperty(o,r,{configurable:!0,get(){var e,t=`'${r}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;\"FS_createPath\"!==(e=r)&&\"FS_createDataFile\"!==e&&\"FS_createPreloadedFile\"!==e&&\"FS_unlink\"!==e&&\"addRunDependency\"!==e&&\"FS_createLazyFile\"!==e&&\"FS_createDevice\"!==e&&\"removeRunDependency\"!==e||(t+=\". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you\"),E(t)}})}function K(){var e=a.buffer;d=new Int8Array(e),o.HEAPU8=c=new Uint8Array(e),p=new Uint32Array(e),new BigInt64Array(e),new BigUint64Array(e)}h(\"undefined\"!=typeof Int32Array&&\"undefined\"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,\"JS engine does not provide full typed array support\");var Y,y=0,T=null,v={},b=null;function J(e){y++,o.monitorRunDependencies?.(y),e?(h(!v[e]),v[e]=1,null===b&&\"undefined\"!=typeof setInterval&&(b=setInterval(()=>{if(i)clearInterval(b),b=null;else{var e,t=!1;for(e in v)t||(t=!0,s(\"still waiting on run dependencies:\")),s(\"dependency: \"+e);t&&s(\"(end of list)\")}},1e4))):s(\"warning: run dependency added without ID\")}function Q(e){y--,o.monitorRunDependencies?.(y),e?(h(v[e]),delete v[e]):s(\"warning: run dependency removed without ID\"),0==y&&(null!==b&&(clearInterval(b),b=null),T)&&(e=T,T=null,e())}function E(e){o.onAbort?.(e),s(e=\"Aborted(\"+e+\")\"),i=!0;e=new WebAssembly.RuntimeError(e);throw U(e),e}function S(r,n){return(...e)=>{h(m,`native function \\`${r}\\` called before runtime initialization`);var t=x[r];return h(t,`exported native function \\`${r}\\` not found`),h(e.length<=n,`native function \\`${r}\\` called with ${e.length} args but expects `+n),t(...e)}}function Z(){return e=\"trace_config_utils.wasm\",o.locateFile?o.locateFile(e,V):V+e;var e}function X(e,t){e=function(e){if(e==Y&&q)return new Uint8Array(q);if(r)return r(e);throw'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e),e=new WebAssembly.Module(e);return[new WebAssembly.Instance(e,t),e]}class ee{name=\"ExitStatus\";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var A,O,te=e=>{for(;0<e.length;)e.shift()(o)},re=[],ne=e=>re.push(e),C=[],ae=e=>C.push(e),ie=!0,w=e=>(h(\"number\"==typeof e),\"0x\"+e.toString(16).padStart(8,\"0\")),oe=e=>Ze(e),se=()=>et(),k=e=>{k.shown||={},k.shown[e]||(k.shown[e]=1,s(e))},le=()=>4294901760,ce=(e,t)=>(h(t,\"alignment argument is required\"),Math.ceil(e/t)*t),ue=t=>{var r=a.buffer,e=(t-r.byteLength+65535)/65536|0;try{return a.grow(e),K(),1}catch(e){s(`growMemory: Attempted to grow heap from ${r.byteLength} bytes to ${t} bytes, but got error: `+e)}},de=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,I=(e,t=0,r=NaN)=>{for(var n=(t>>>=0)+r,a=t;e[a]&&!(n<=a);)++a;if(16<a-t&&e.buffer&&de)return de.decode(e.subarray(t,a));for(var i=\"\";t<a;){var o,s,l=e[t++];128&l?(s=63&e[t++],192==(224&l)?i+=String.fromCharCode((31&l)<<6|s):(o=63&e[t++],(l=224==(240&l)?(15&l)<<12|s<<6|o:(240!=(248&l)&&k(\"Invalid UTF-8 leading byte \"+w(l)+\" encountered when deserializing a UTF-8 string in wasm memory to a JS string!\"),(7&l)<<18|s<<12|o<<6|63&e[t++]))<65536?i+=String.fromCharCode(l):(s=l-65536,i+=String.fromCharCode(55296|s>>10,56320|1023&s)))):i+=String.fromCharCode(l)}return i},pe=(e,t)=>(h(\"number\"==typeof e,`UTF8ToString expects a number (got ${typeof e})`),(e>>>=0)?I(c,e,t):\"\"),fe=[null,[],[]],he=(e,t)=>{var r=fe[e];h(r),0===t||10===t?((1===e?f:s)(I(r)),r.length=0):r.push(t)},me=(e,t)=>{z=e;var r=f,n=s,a=!1;f=s=e=>{a=!0};try{Ke(0),fe[1].length&&he(1,10),fe[2].length&&he(2,10),[\"stdout\",\"stderr\"].forEach(e=>{var e=D.analyzePath(\"/dev/\"+e);e&&(e=e.object.rdev,M.ttys[e]?.output?.length)&&(a=!0)})}catch(e){}f=r,s=n,a&&(k(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.\"),k(\"(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)\")),ie&&!t&&(U(r=`program exited (with status: ${e}), but keepRuntimeAlive() is set (counter=0) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`),s(r)),z=n=e,ie||(o.onExit?.(n),i=!0),G(0,new ee(n))},ge=e=>{if(e instanceof ee||\"unwind\"==e)return z;g(),e instanceof WebAssembly.RuntimeError&&et()<=0&&s(\"Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)\"),G(0,e)},_e=e=>{for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n<=127?t++:n<=2047?t+=2:55296<=n&&n<=57343?(t+=4,++r):t+=3}return t},ye=(e,t,r,n)=>{if(r>>>=0,h(\"string\"==typeof e,`stringToUTF8Array expects a string (got ${typeof e})`),!(0<n))return 0;for(var a=r,i=r+n-1,o=0;o<e.length;++o){var s=e.charCodeAt(o);if((s=55296<=s&&s<=57343?65536+((1023&s)<<10)|1023&e.charCodeAt(++o):s)<=127){if(i<=r)break;t[r++>>>0]=s}else{if(s<=2047){if(i<=r+1)break;t[r++>>>0]=192|s>>6}else{if(s<=65535){if(i<=r+2)break;t[r++>>>0]=224|s>>12}else{if(i<=r+3)break;1114111<s&&k(\"Invalid Unicode code point \"+w(s)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\"),t[r++>>>0]=240|s>>18,t[r++>>>0]=128|s>>12&63}t[r++>>>0]=128|s>>6&63}t[r++>>>0]=128|63&s}}return t[r>>>0]=0,r-a},Te=e=>Xe(e),ve=e=>{var t,r=_e(e)+1,n=Te(r);return e=e,t=n,h(\"number\"==typeof(r=r),\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\"),ye(e,c,t,r),n},be=e=>{var t=o[\"_\"+e];return h(t,\"Cannot call unknown function \"+e+\", make sure it is exported\"),t},Ee=(e,t)=>{h(0<=e.length,\"writeArrayToMemory array must have a length (should be an array or typed array)\"),d.set(e,t>>>0)},Se=(e,t)=>{h(e<16384),e<128?t.push(e):t.push(e%128|128,e>>7)},Ae=(e,t)=>{if(\"function\"==typeof WebAssembly.Function)return new WebAssembly.Function((e=>{for(var t={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"},r={parameters:[],results:\"v\"==e[0]?[]:[t[e[0]]]},n=1;n<e.length;++n)h(e[n]in t,\"invalid signature char: \"+e[n]),r.parameters.push(t[e[n]]);return r})(t),e);var r,n=[1],a=n,i=(t=t).slice(0,1),t=t.slice(1),o={i:127,p:127,j:126,f:125,d:124,e:111};a.push(96),Se(t.length,a);for(r of t)h(r in o,\"invalid signature char: \"+r),a.push(o[r]);\"v\"==i?a.push(0):a.push(1,o[i]);t=[0,97,115,109,1,0,0,0,1],Se(n.length,t),t.push(...n),t.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),i=new WebAssembly.Module(new Uint8Array(t));return new WebAssembly.Instance(i,{e:{f:e}}).exports.f},Oe=[],Ce=(e,t)=>{if(O)for(var r=e;r<e+t;r++){a=void 0,(a=Oe[n=r])||(Oe[n]=a=A.get(n)),h(A.get(n)==a,\"JavaScript-side Wasm function table mirror is out of date!\");n=a;n&&O.set(n,r)}var n,a},we=e=>(O||(O=new WeakMap,Ce(0,A.length)),O.get(e)||0),ke=[],Ie=()=>{if(ke.length)return ke.pop();try{A.grow(1)}catch(e){if(e instanceof RangeError)throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\";throw e}return A.length-1},Re=(e,t)=>{A.set(e,t),Oe[e]=A.get(e)},Ne=()=>e=>crypto.getRandomValues(e),Me=e=>{(Me=Ne())(e)},R={isAbs:e=>\"/\"===e.charAt(0),splitPath:e=>{return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var r=0,n=e.length-1;0<=n;n--){var a=e[n];\".\"===a?e.splice(n,1):\"..\"===a?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r;r--)e.unshift(\"..\");return e},normalize:e=>{var t=R.isAbs(e),r=\"/\"===e.slice(-1);return(e=(e=R.normalizeArray(e.split(\"/\").filter(e=>!!e),!t).join(\"/\"))||t?e:\".\")&&r&&(e+=\"/\"),(t?\"/\":\"\")+e},dirname:e=>{var e=R.splitPath(e),t=e[0],e=e[1];return t||e?t+(e=e&&e.slice(0,-1)):\".\"},basename:e=>e&&e.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...e)=>R.normalize(e.join(\"/\")),join2:(e,t)=>R.normalize(e+\"/\"+t)},N={resolve:(...e)=>{for(var t=\"\",r=!1,n=e.length-1;-1<=n&&!r;n--){var a=0<=n?e[n]:D.cwd();if(\"string\"!=typeof a)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!a)return\"\";t=a+\"/\"+t,r=R.isAbs(a)}return(r?\"/\":\"\")+(t=R.normalizeArray(t.split(\"/\").filter(e=>!!e),!r).join(\"/\"))||\".\"},relative:(e,t)=>{function r(e){for(var t=0;t<e.length&&\"\"===e[t];t++);for(var r=e.length-1;0<=r&&\"\"===e[r];r--);return r<t?[]:e.slice(t,r-t+1)}e=N.resolve(e).slice(1),t=N.resolve(t).slice(1);for(var n=r(e.split(\"/\")),a=r(t.split(\"/\")),i=Math.min(n.length,a.length),o=i,s=0;s<i;s++)if(n[s]!==a[s]){o=s;break}for(var l=[],s=o;s<n.length;s++)l.push(\"..\");return(l=l.concat(a.slice(o))).join(\"/\")}},Pe=[],De=(e,t,r)=>{r=0<r?r:_e(e)+1,r=new Array(r),e=ye(e,r,0,r.length);return t&&(r.length=e),r},M={ttys:[],init(){},shutdown(){},register(e,t){M.ttys[e]={input:[],output:[],ops:t},D.registerDevice(e,M.stream_ops)},stream_ops:{open(e){var t=M.ttys[e.node.rdev];if(!t)throw new D.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,n,a){if(!e.tty||!e.tty.ops.get_char)throw new D.ErrnoError(60);for(var i,o=0,s=0;s<n;s++){try{i=e.tty.ops.get_char(e.tty)}catch(e){throw new D.ErrnoError(29)}if(void 0===i&&0===o)throw new D.ErrnoError(6);if(null==i)break;o++,t[r+s]=i}return o&&(e.node.atime=Date.now()),o},write(e,t,r,n,a){if(!e.tty||!e.tty.ops.put_char)throw new D.ErrnoError(60);try{for(var i=0;i<n;i++)e.tty.ops.put_char(e.tty,t[r+i])}catch(e){throw new D.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),i}},default_tty_ops:{get_char(e){if(!Pe.length){var t=null;if(\"undefined\"!=typeof window&&\"function\"==typeof window.prompt&&null!==(t=window.prompt(\"Input: \"))&&(t+=\"\\n\"),!t)return null;Pe=De(t,!0)}return Pe.shift()},put_char(e,t){null===t||10===t?(f(I(e.output)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){0<e.output?.length&&(f(I(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,r){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){null===t||10===t?(s(I(e.output)),e.output=[]):0!=t&&e.output.push(t)},fsync(e){0<e.output?.length&&(s(I(e.output)),e.output=[])}}},xe=(e,t)=>c.fill(0,e,e+t),Le=e=>{e=ce(e,65536);var t=Je(65536,e);return t&&xe(t,e),t},P={ops_table:null,mount(e){return P.createNode(null,\"/\",16895,0)},createNode(e,t,r,n){if(D.isBlkdev(r)||D.isFIFO(r))throw new D.ErrnoError(63);P.ops_table||={dir:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,lookup:P.node_ops.lookup,mknod:P.node_ops.mknod,rename:P.node_ops.rename,unlink:P.node_ops.unlink,rmdir:P.node_ops.rmdir,readdir:P.node_ops.readdir,symlink:P.node_ops.symlink},stream:{llseek:P.stream_ops.llseek}},file:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:{llseek:P.stream_ops.llseek,read:P.stream_ops.read,write:P.stream_ops.write,mmap:P.stream_ops.mmap,msync:P.stream_ops.msync}},link:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,readlink:P.node_ops.readlink},stream:{}},chrdev:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:D.chrdev_stream_ops}};r=D.createNode(e,t,r,n);return D.isDir(r.mode)?(r.node_ops=P.ops_table.dir.node,r.stream_ops=P.ops_table.dir.stream,r.contents={}):D.isFile(r.mode)?(r.node_ops=P.ops_table.file.node,r.stream_ops=P.ops_table.file.stream,r.usedBytes=0,r.contents=null):D.isLink(r.mode)?(r.node_ops=P.ops_table.link.node,r.stream_ops=P.ops_table.link.stream):D.isChrdev(r.mode)&&(r.node_ops=P.ops_table.chrdev.node,r.stream_ops=P.ops_table.chrdev.stream),r.atime=r.mtime=r.ctime=Date.now(),e&&(e.contents[t]=r,e.atime=e.mtime=e.ctime=r.atime),r},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){var r=e.contents?e.contents.length:0;t<=r||(t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256)),r=e.contents,e.contents=new Uint8Array(t),0<e.usedBytes&&e.contents.set(r.subarray(0,e.usedBytes),0))},resizeFileStorage(e,t){var r;e.usedBytes!=t&&(0==t?(e.contents=null,e.usedBytes=0):(r=e.contents,e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t))},node_ops:{getattr(e){var t={};return t.dev=D.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,D.isDir(e.mode)?t.size=4096:D.isFile(e.mode)?t.size=e.usedBytes:D.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){for(const r of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=t[r]&&(e[r]=t[r]);void 0!==t.size&&P.resizeFileStorage(e,t.size)},lookup(e,t){throw new D.ErrnoError(44)},mknod(e,t,r,n){return P.createNode(e,t,r,n)},rename(e,t,r){var n;try{n=D.lookupNode(t,r)}catch(e){}if(n){if(D.isDir(e.mode))for(var a in n.contents)throw new D.ErrnoError(55);D.hashRemoveNode(n)}delete e.parent.contents[e.name],(t.contents[r]=e).name=r,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.contents[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){for(var r in D.lookupNode(e,t).contents)throw new D.ErrnoError(55);delete e.contents[t],e.ctime=e.mtime=Date.now()},readdir(e){return[\".\",\"..\",...Object.keys(e.contents)]},symlink(e,t,r){e=P.createNode(e,t,41471,0);return e.link=r,e},readlink(e){if(D.isLink(e.mode))return e.link;throw new D.ErrnoError(28)}},stream_ops:{read(e,t,r,n,a){var i=e.node.contents;if(a>=e.node.usedBytes)return 0;var o=Math.min(e.node.usedBytes-a,n);if(h(0<=o),8<o&&i.subarray)t.set(i.subarray(a,a+o),r);else for(var s=0;s<o;s++)t[r+s]=i[a+s];return o},write(e,t,r,n,a,i){if(h(!(t instanceof ArrayBuffer)),t.buffer===d.buffer&&(i=!1),!n)return 0;var o=e.node;if(o.mtime=o.ctime=Date.now(),t.subarray&&(!o.contents||o.contents.subarray)){if(i)return h(0===a,\"canOwn must imply no weird position inside the file\"),o.contents=t.subarray(r,r+n),o.usedBytes=n;if(0===o.usedBytes&&0===a)return o.contents=t.slice(r,r+n),o.usedBytes=n;if(a+n<=o.usedBytes)return o.contents.set(t.subarray(r,r+n),a),n}if(P.expandFileStorage(o,a+n),o.contents.subarray&&t.subarray)o.contents.set(t.subarray(r,r+n),a);else for(var s=0;s<n;s++)o.contents[a+s]=t[r+s];return o.usedBytes=Math.max(o.usedBytes,a+n),n},llseek(e,t,r){if(1===r?t+=e.position:2===r&&D.isFile(e.node.mode)&&(t+=e.node.usedBytes),t<0)throw new D.ErrnoError(28);return t},mmap(e,t,r,n,a){if(!D.isFile(e.node.mode))throw new D.ErrnoError(43);var i,o,e=e.node.contents;if(2&a||!e||e.buffer!==d.buffer){if(o=!0,!(i=Le(t)))throw new D.ErrnoError(48);e&&((0<r||r+t<e.length)&&(e=e.subarray?e.subarray(r,r+t):Array.prototype.slice.call(e,r,r+t)),d.set(e,i>>>0))}else o=!1,i=e.byteOffset;return{ptr:i,allocated:o}},msync(e,t,r,n,a){return P.stream_ops.write(e,t,0,n,r,!1),0}}},Fe=async e=>{var t=await B(e);return h(t,`Loading data file \"${e}\" failed (no arrayBuffer).`),new Uint8Array(t)},Ue=(...e)=>D.createDataFile(...e),Be=[],je=(t,r,n,a)=>{\"undefined\"!=typeof Browser&&Browser.init();var i=!1;return Be.forEach(e=>{i||e.canHandle(r)&&(e.handle(t,r,n,a),i=!0)}),i},He=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},l={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount(e){h(u),l.reader??=new FileReaderSync;var i=l.createNode(null,\"/\",l.DIR_MODE,0),o={};function n(e){for(var t=e.split(\"/\"),r=i,n=0;n<t.length-1;n++){var a=t.slice(0,n+1).join(\"/\");o[a]||=l.createNode(r,t[n],l.DIR_MODE,0),r=o[a]}return r}function a(e){e=e.split(\"/\");return e[e.length-1]}return Array.prototype.forEach.call(e.opts.files||[],function(e){l.createNode(n(e.name),a(e.name),l.FILE_MODE,0,e,e.lastModifiedDate)}),(e.opts.blobs||[]).forEach(e=>{l.createNode(n(e.name),a(e.name),l.FILE_MODE,0,e.data)}),(e.opts.packages||[]).forEach(r=>{r.metadata.files.forEach(e=>{var t=e.filename.slice(1);l.createNode(n(t),a(t),l.FILE_MODE,0,r.blob.slice(e.start,e.end))})}),i},createNode(e,t,r,n,a,i){var o=D.createNode(e,t,r);return o.mode=r,o.node_ops=l.node_ops,o.stream_ops=l.stream_ops,o.atime=o.mtime=o.ctime=(i||new Date).getTime(),h(l.FILE_MODE!==l.DIR_MODE),r===l.FILE_MODE?(o.size=a.size,o.contents=a):(o.size=4096,o.contents={}),e&&(e.contents[t]=o),o},node_ops:{getattr(e){return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:e.size,atime:new Date(e.atime),mtime:new Date(e.mtime),ctime:new Date(e.ctime),blksize:4096,blocks:Math.ceil(e.size/4096)}},setattr(e,t){for(const r of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=t[r]&&(e[r]=t[r])},lookup(e,t){throw new D.ErrnoError(44)},mknod(e,t,r,n){throw new D.ErrnoError(63)},rename(e,t,r){throw new D.ErrnoError(63)},unlink(e,t){throw new D.ErrnoError(63)},rmdir(e,t){throw new D.ErrnoError(63)},readdir(e){var t,r=[\".\",\"..\"];for(t of Object.keys(e.contents))r.push(t);return r},symlink(e,t,r){throw new D.ErrnoError(63)}},stream_ops:{read(e,t,r,n,a){return a>=e.node.size?0:(e=e.node.contents.slice(a,a+n),a=l.reader.readAsArrayBuffer(e),t.set(new Uint8Array(a),r),e.size)},write(e,t,r,n,a){throw new D.ErrnoError(29)},llseek(e,t,r){if(1===r?t+=e.position:2===r&&D.isFile(e.node.mode)&&(t+=e.node.size),t<0)throw new D.ErrnoError(28);return t}}},Ge={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},D={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class extends Error{name=\"ErrnoError\";constructor(e){for(var t in super(m?pe($e(e)):\"\"),this.errno=e,Ge)if(Ge[t]===e){this.code=t;break}}},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return 0!=(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,t,r,n){this.parent=e=e||this,this.mount=e.mount,this.id=D.nextInode++,this.name=t,this.mode=r,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return D.isDir(this.mode)}get isDevice(){return D.isChrdev(this.mode)}},lookupPath(e,t={}){if(!e)throw new D.ErrnoError(44);t.follow_mount??=!0,R.isAbs(e)||(e=D.cwd()+\"/\"+e);e:for(var r=0;r<40;r++){for(var n=e.split(\"/\").filter(e=>!!e),a=D.root,i=\"/\",o=0;o<n.length;o++){var s=o===n.length-1;if(s&&t.parent)break;if(\".\"!==n[o])if(\"..\"===n[o]){if(i=R.dirname(i),D.isRoot(a)){e=i+\"/\"+n.slice(o+1).join(\"/\");continue e}a=a.parent}else{i=R.join2(i,n[o]);try{a=D.lookupNode(a,n[o])}catch(e){if(44===e?.errno&&s&&t.noent_okay)return{path:i};throw e}if(!D.isMountpoint(a)||s&&!t.follow_mount||(a=a.mounted.root),D.isLink(a.mode)&&(!s||t.follow)){if(!a.node_ops.readlink)throw new D.ErrnoError(52);s=a.node_ops.readlink(a);e=(s=R.isAbs(s)?s:R.dirname(i)+\"/\"+s)+\"/\"+n.slice(o+1).join(\"/\");continue e}}}return{path:i,node:a}}throw new D.ErrnoError(32)},getPath(e){for(var t,r;;){if(D.isRoot(e))return r=e.mount.mountpoint,t?\"/\"!==r[r.length-1]?r+\"/\"+t:r+t:r;t=t?e.name+\"/\"+t:e.name,e=e.parent}},hashName(e,t){for(var r=0,n=0;n<t.length;n++)r=(r<<5)-r+t.charCodeAt(n)|0;return(e+r>>>0)%D.nameTable.length},hashAddNode(e){var t=D.hashName(e.parent.id,e.name);e.name_next=D.nameTable[t],D.nameTable[t]=e},hashRemoveNode(e){var t=D.hashName(e.parent.id,e.name);if(D.nameTable[t]===e)D.nameTable[t]=e.name_next;else for(var r=D.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=D.mayLookup(e);if(r)throw new D.ErrnoError(r);for(var r=D.hashName(e.id,t),n=D.nameTable[r];n;n=n.name_next){var a=n.name;if(n.parent.id===e.id&&a===t)return n}return D.lookup(e,t)},createNode(e,t,r,n){h(\"object\"==typeof e);e=new D.FSNode(e,t,r,n);return D.hashAddNode(e),e},destroyNode(e){D.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return 32768==(61440&e)},isDir(e){return 16384==(61440&e)},isLink(e){return 40960==(61440&e)},isChrdev(e){return 8192==(61440&e)},isBlkdev(e){return 24576==(61440&e)},isFIFO(e){return 4096==(61440&e)},isSocket(e){return 49152==(49152&e)},flagsToPermissionString(e){var t=[\"r\",\"w\",\"rw\"][3&e];return 512&e&&(t+=\"w\"),t},nodePermissions(e,t){return D.ignorePermissions||(!t.includes(\"r\")||292&e.mode)&&(!t.includes(\"w\")||146&e.mode)&&(!t.includes(\"x\")||73&e.mode)?0:2},mayLookup(e){return D.isDir(e.mode)?D.nodePermissions(e,\"x\")||(e.node_ops.lookup?0:2):54},mayCreate(e,t){if(!D.isDir(e.mode))return 54;try{D.lookupNode(e,t);return 20}catch(e){}return D.nodePermissions(e,\"wx\")},mayDelete(e,t,r){var n;try{n=D.lookupNode(e,t)}catch(e){return e.errno}t=D.nodePermissions(e,\"wx\");if(t)return t;if(r){if(!D.isDir(n.mode))return 54;if(D.isRoot(n)||D.getPath(n)===D.cwd())return 10}else if(D.isDir(n.mode))return 31;return 0},mayOpen(e,t){return e?D.isLink(e.mode)?32:D.isDir(e.mode)&&(\"r\"!==D.flagsToPermissionString(t)||576&t)?31:D.nodePermissions(e,D.flagsToPermissionString(t)):44},checkOpExists(e,t){if(e)return e;throw new D.ErrnoError(t)},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=D.MAX_OPEN_FDS;e++)if(!D.streams[e])return e;throw new D.ErrnoError(33)},getStreamChecked(e){e=D.getStream(e);if(e)return e;throw new D.ErrnoError(8)},getStream:e=>D.streams[e],createStream(e,t=-1){return h(-1<=t),e=Object.assign(new D.FSStream,e),-1==t&&(t=D.nextfd()),e.fd=t,D.streams[t]=e},closeStream(e){D.streams[e]=null},dupStream(e,t=-1){e=D.createStream(e,t);return e.stream_ops?.dup?.(e),e},doSetAttr(e,t,r){var n=e?.stream_ops.setattr,e=n?e:t;n??=t.node_ops.setattr,D.checkOpExists(n,63),n(e,r)},chrdev_stream_ops:{open(e){var t=D.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new D.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice(e,t){D.devices[e]={stream_ops:t}},getDevice:e=>D.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var n=r.pop();t.push(n),r.push(...n.mounts)}return t},syncfs(t,r){\"function\"==typeof t&&(r=t,t=!1),D.syncFSRequests++,1<D.syncFSRequests&&s(`warning: ${D.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=D.getMounts(D.root.mount),a=0;function i(e){return h(0<D.syncFSRequests),D.syncFSRequests--,r(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,i(e));++a>=n.length&&i(null)}n.forEach(e=>{if(!e.type.syncfs)return o(null);e.type.syncfs(e,t,o)})},mount(e,t,r){if(\"string\"==typeof e)throw e;var n,a=\"/\"===r,i=!r;if(a&&D.root)throw new D.ErrnoError(10);if(!a&&!i){i=D.lookupPath(r,{follow_mount:!1});if(r=i.path,n=i.node,D.isMountpoint(n))throw new D.ErrnoError(10);if(!D.isDir(n.mode))throw new D.ErrnoError(54)}i={type:e,opts:t,mountpoint:r,mounts:[]},t=e.mount(i);return(t.mount=i).root=t,a?D.root=t:n&&(n.mounted=i,n.mount)&&n.mount.mounts.push(i),t},unmount(e){e=D.lookupPath(e,{follow_mount:!1});if(!D.isMountpoint(e.node))throw new D.ErrnoError(28);var e=e.node,t=e.mounted,n=D.getMounts(t),t=(Object.keys(D.nameTable).forEach(e=>{for(var t=D.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&D.destroyNode(t),t=r}}),e.mounted=null,e.mount.mounts.indexOf(t));h(-1!==t),e.mount.mounts.splice(t,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,r){var n=D.lookupPath(e,{parent:!0}).node,e=R.basename(e);if(!e)throw new D.ErrnoError(28);if(\".\"===e||\"..\"===e)throw new D.ErrnoError(20);var a=D.mayCreate(n,e);if(a)throw new D.ErrnoError(a);if(n.node_ops.mknod)return n.node_ops.mknod(n,e,t,r);throw new D.ErrnoError(63)},statfs(e){return D.statfsNode(D.lookupPath(e,{follow:!0}).node)},statfsStream(e){return D.statfsNode(e.node)},statfsNode(e){var t={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:D.nextInode,ffree:D.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(t,e.node_ops.statfs(e.mount.opts.root)),t},create(e,t=438){return D.mknod(e,t=t&4095|32768,0)},mkdir(e,t=511){return D.mknod(e,t=t&1023|16384,0)},mkdirTree(e,t){var r,n=\"\";for(r of e.split(\"/\"))if(r){(n||R.isAbs(e))&&(n+=\"/\"),n+=r;try{D.mkdir(n,t)}catch(e){if(20!=e.errno)throw e}}},mkdev(e,t,r){return void 0===r&&(r=t,t=438),D.mknod(e,t|=8192,r)},symlink(e,t){if(!N.resolve(e))throw new D.ErrnoError(44);var r=D.lookupPath(t,{parent:!0}).node;if(!r)throw new D.ErrnoError(44);var t=R.basename(t),n=D.mayCreate(r,t);if(n)throw new D.ErrnoError(n);if(r.node_ops.symlink)return r.node_ops.symlink(r,t,e);throw new D.ErrnoError(63)},rename(e,t){var r=R.dirname(e),n=R.dirname(t),a=R.basename(e),i=R.basename(t),o=D.lookupPath(e,{parent:!0}),o=o.node,s=D.lookupPath(t,{parent:!0}).node;if(!o||!s)throw new D.ErrnoError(44);if(o.mount!==s.mount)throw new D.ErrnoError(75);var l,c=D.lookupNode(o,a),e=N.relative(e,n);if(\".\"!==e.charAt(0))throw new D.ErrnoError(28);if(\".\"!==(e=N.relative(t,r)).charAt(0))throw new D.ErrnoError(55);try{l=D.lookupNode(s,i)}catch(e){}if(c!==l){n=D.isDir(c.mode),t=D.mayDelete(o,a,n);if(t)throw new D.ErrnoError(t);if(t=l?D.mayDelete(s,i,n):D.mayCreate(s,i))throw new D.ErrnoError(t);if(!o.node_ops.rename)throw new D.ErrnoError(63);if(D.isMountpoint(c)||l&&D.isMountpoint(l))throw new D.ErrnoError(10);if(s!==o&&(t=D.nodePermissions(o,\"w\")))throw new D.ErrnoError(t);D.hashRemoveNode(c);try{o.node_ops.rename(c,s,i),c.parent=s}catch(e){throw e}finally{D.hashAddNode(c)}}},rmdir(e){var t=D.lookupPath(e,{parent:!0}).node,e=R.basename(e),r=D.lookupNode(t,e),n=D.mayDelete(t,e,!0);if(n)throw new D.ErrnoError(n);if(!t.node_ops.rmdir)throw new D.ErrnoError(63);if(D.isMountpoint(r))throw new D.ErrnoError(10);t.node_ops.rmdir(t,e),D.destroyNode(r)},readdir(e){e=D.lookupPath(e,{follow:!0}).node;return D.checkOpExists(e.node_ops.readdir,54)(e)},unlink(e){var t=D.lookupPath(e,{parent:!0}).node;if(!t)throw new D.ErrnoError(44);var e=R.basename(e),r=D.lookupNode(t,e),n=D.mayDelete(t,e,!1);if(n)throw new D.ErrnoError(n);if(!t.node_ops.unlink)throw new D.ErrnoError(63);if(D.isMountpoint(r))throw new D.ErrnoError(10);t.node_ops.unlink(t,e),D.destroyNode(r)},readlink(e){e=D.lookupPath(e).node;if(!e)throw new D.ErrnoError(44);if(e.node_ops.readlink)return e.node_ops.readlink(e);throw new D.ErrnoError(28)},stat(e,t){e=D.lookupPath(e,{follow:!t}).node;return D.checkOpExists(e.node_ops.getattr,63)(e)},fstat(e){var e=D.getStreamChecked(e),t=e.node,r=e.stream_ops.getattr,e=r?e:t;return r??=t.node_ops.getattr,D.checkOpExists(r,63),r(e)},lstat(e){return D.stat(e,!0)},doChmod(e,t,r,n){D.doSetAttr(e,t,{mode:4095&r|-4096&t.mode,ctime:Date.now(),dontFollow:n})},chmod(e,t,r){e=\"string\"==typeof e?D.lookupPath(e,{follow:!r}).node:e,D.doChmod(null,e,t,r)},lchmod(e,t){D.chmod(e,t,!0)},fchmod(e,t){e=D.getStreamChecked(e);D.doChmod(e,e.node,t,!1)},doChown(e,t,r){D.doSetAttr(e,t,{timestamp:Date.now(),dontFollow:r})},chown(e,t,r,n){e=\"string\"==typeof e?D.lookupPath(e,{follow:!n}).node:e,D.doChown(null,e,n)},lchown(e,t,r){D.chown(e,t,r,!0)},fchown(e,t,r){e=D.getStreamChecked(e);D.doChown(e,e.node,!1)},doTruncate(e,t,r){if(D.isDir(t.mode))throw new D.ErrnoError(31);if(!D.isFile(t.mode))throw new D.ErrnoError(28);var n=D.nodePermissions(t,\"w\");if(n)throw new D.ErrnoError(n);D.doSetAttr(e,t,{size:r,timestamp:Date.now()})},truncate(e,t){if(t<0)throw new D.ErrnoError(28);e=\"string\"==typeof e?D.lookupPath(e,{follow:!0}).node:e,D.doTruncate(null,e,t)},ftruncate(e,t){e=D.getStreamChecked(e);if(t<0||0==(2097155&e.flags))throw new D.ErrnoError(28);D.doTruncate(e,e.node,t)},utime(e,t,r){e=D.lookupPath(e,{follow:!0}).node;D.checkOpExists(e.node_ops.setattr,63)(e,{atime:t,mtime:r})},open(e,t,r=438){if(\"\"===e)throw new D.ErrnoError(44);r=64&(t=\"string\"==typeof t?(e=>{var t={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[e];if(void 0===t)throw new Error(\"Unknown file open mode: \"+e);return t})(t):t)?4095&r|32768:0,\"object\"==typeof e?n=e:(i=e.endsWith(\"/\"),n=(a=D.lookupPath(e,{follow:!(131072&t),noent_okay:!0})).node,e=a.path);var n,a=!1;if(64&t)if(n){if(128&t)throw new D.ErrnoError(20)}else{if(i)throw new D.ErrnoError(31);n=D.mknod(e,511|r,0),a=!0}if(!n)throw new D.ErrnoError(44);if(D.isChrdev(n.mode)&&(t&=-513),65536&t&&!D.isDir(n.mode))throw new D.ErrnoError(54);if(!a){var i=D.mayOpen(n,t);if(i)throw new D.ErrnoError(i)}512&t&&!a&&D.truncate(n,0),t&=-131713;i=D.createStream({node:n,path:D.getPath(n),flags:t,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return i.stream_ops.open&&i.stream_ops.open(i),a&&D.chmod(n,511&r),!o.logReadFiles||1&t||e in D.readFiles||(D.readFiles[e]=1),i},close(e){if(D.isClosed(e))throw new D.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{D.closeStream(e.fd)}e.fd=null},isClosed(e){return null===e.fd},llseek(e,t,r){if(D.isClosed(e))throw new D.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new D.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new D.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,n,a){if(h(0<=r),n<0||a<0)throw new D.ErrnoError(28);if(D.isClosed(e))throw new D.ErrnoError(8);if(1==(2097155&e.flags))throw new D.ErrnoError(8);if(D.isDir(e.node.mode))throw new D.ErrnoError(31);if(!e.stream_ops.read)throw new D.ErrnoError(28);var i=void 0!==a;if(i){if(!e.seekable)throw new D.ErrnoError(70)}else a=e.position;t=e.stream_ops.read(e,t,r,n,a);return i||(e.position+=t),t},write(e,t,r,n,a,i){if(h(0<=r),n<0||a<0)throw new D.ErrnoError(28);if(D.isClosed(e))throw new D.ErrnoError(8);if(0==(2097155&e.flags))throw new D.ErrnoError(8);if(D.isDir(e.node.mode))throw new D.ErrnoError(31);if(!e.stream_ops.write)throw new D.ErrnoError(28);e.seekable&&1024&e.flags&&D.llseek(e,0,2);var o=void 0!==a;if(o){if(!e.seekable)throw new D.ErrnoError(70)}else a=e.position;t=e.stream_ops.write(e,t,r,n,a,i);return o||(e.position+=t),t},mmap(e,t,r,n,a){if(0!=(2&n)&&0==(2&a)&&2!=(2097155&e.flags))throw new D.ErrnoError(2);if(1==(2097155&e.flags))throw new D.ErrnoError(2);if(!e.stream_ops.mmap)throw new D.ErrnoError(43);if(t)return e.stream_ops.mmap(e,t,r,n,a);throw new D.ErrnoError(28)},msync(e,t,r,n,a){return h(0<=r),e.stream_ops.msync?e.stream_ops.msync(e,t,r,n,a):0},ioctl(e,t,r){if(e.stream_ops.ioctl)return e.stream_ops.ioctl(e,t,r);throw new D.ErrnoError(59)},readFile(e,t={}){if(t.flags=t.flags||0,t.encoding=t.encoding||\"binary\",\"utf8\"!==t.encoding&&\"binary\"!==t.encoding)throw new Error(`Invalid encoding type \"${t.encoding}\"`);var r,n=D.open(e,t.flags),e=D.stat(e).size,a=new Uint8Array(e);return D.read(n,a,0,e,0),\"utf8\"===t.encoding?r=I(a):\"binary\"===t.encoding&&(r=a),D.close(n),r},writeFile(e,t,r={}){r.flags=r.flags||577;e=D.open(e,r.flags,r.mode);if(\"string\"==typeof t){var n=new Uint8Array(_e(t)+1),a=ye(t,n,0,n.length);D.write(e,n,0,a,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error(\"Unsupported data type\");D.write(e,t,0,t.byteLength,void 0,r.canOwn)}D.close(e)},cwd:()=>D.currentPath,chdir(e){e=D.lookupPath(e,{follow:!0});if(null===e.node)throw new D.ErrnoError(44);if(!D.isDir(e.node.mode))throw new D.ErrnoError(54);var t=D.nodePermissions(e.node,\"x\");if(t)throw new D.ErrnoError(t);D.currentPath=e.path},createDefaultDirectories(){D.mkdir(\"/tmp\"),D.mkdir(\"/home\"),D.mkdir(\"/home/web_user\")},createDefaultDevices(){D.mkdir(\"/dev\"),D.registerDevice(D.makedev(1,3),{read:()=>0,write:(e,t,r,n,a)=>n,llseek:()=>0}),D.mkdev(\"/dev/null\",D.makedev(1,3)),M.register(D.makedev(5,0),M.default_tty_ops),M.register(D.makedev(6,0),M.default_tty1_ops),D.mkdev(\"/dev/tty\",D.makedev(5,0)),D.mkdev(\"/dev/tty1\",D.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(0===t&&(Me(e),t=e.byteLength),e[--t]);D.createDevice(\"/dev\",\"random\",r),D.createDevice(\"/dev\",\"urandom\",r),D.mkdir(\"/dev/shm\"),D.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){D.mkdir(\"/proc\");var t=D.mkdir(\"/proc/self\");D.mkdir(\"/proc/self/fd\"),D.mount({mount(){var e=D.createNode(t,\"fd\",16895,73);return e.stream_ops={llseek:P.stream_ops.llseek},e.node_ops={lookup(e,t){var t=+t,r=D.getStreamChecked(t),t={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>r.path},id:1+t};return t.parent=t},readdir(){return Array.from(D.streams.entries()).filter(([,e])=>e).map(([e])=>e.toString())}},e}},{},\"/proc/self/fd\")},createStandardStreams(e,t,r){e?D.createDevice(\"/dev\",\"stdin\",e):D.symlink(\"/dev/tty\",\"/dev/stdin\"),t?D.createDevice(\"/dev\",\"stdout\",null,t):D.symlink(\"/dev/tty\",\"/dev/stdout\"),r?D.createDevice(\"/dev\",\"stderr\",null,r):D.symlink(\"/dev/tty1\",\"/dev/stderr\");e=D.open(\"/dev/stdin\",0),t=D.open(\"/dev/stdout\",1),r=D.open(\"/dev/stderr\",1);h(0===e.fd,`invalid handle for stdin (${e.fd})`),h(1===t.fd,`invalid handle for stdout (${t.fd})`),h(2===r.fd,`invalid handle for stderr (${r.fd})`)},staticInit(){D.nameTable=new Array(4096),D.mount(P,{},\"/\"),D.createDefaultDirectories(),D.createDefaultDevices(),D.createSpecialDirectories(),D.filesystems={MEMFS:P,WORKERFS:l}},init(e,t,r){h(!D.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),D.initialized=!0,e??=o.stdin,t??=o.stdout,r??=o.stderr,D.createStandardStreams(e,t,r)},quit(){D.initialized=!1,Ke(0);for(var e of D.streams)e&&D.close(e)},findObject(e,t){e=D.analyzePath(e,t);return e.exists?e.object:null},analyzePath(e,t){try{e=(n=D.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=D.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=n.path,r.parentObject=n.node,r.name=R.basename(e),n=D.lookupPath(e,{follow:!t}),r.exists=!0,r.path=n.path,r.object=n.node,r.name=n.node.name,r.isRoot=\"/\"===n.path}catch(e){r.error=e.errno}return r},createPath(e,t,r,n){e=\"string\"==typeof e?e:D.getPath(e);for(var a=t.split(\"/\").reverse();a.length;){var i=a.pop();if(i){var o=R.join2(e,i);try{D.mkdir(o)}catch(e){if(20!=e.errno)throw e}e=o}}return o},createFile(e,t,r,n,a){e=R.join2(\"string\"==typeof e?e:D.getPath(e),t),t=He(n,a);return D.create(e,t)},createDataFile(e,t,r,n,a,i){var o=t,t=(e&&(e=\"string\"==typeof e?e:D.getPath(e),o=t?R.join2(e,t):e),He(n,a)),e=D.create(o,t);if(r){if(\"string\"==typeof r){for(var s=new Array(r.length),l=0,c=r.length;l<c;++l)s[l]=r.charCodeAt(l);r=s}D.chmod(e,146|t);n=D.open(e,577);D.write(n,r,0,r.length,0,i),D.close(n),D.chmod(e,t)}},createDevice(e,t,l,o){var e=R.join2(\"string\"==typeof e?e:D.getPath(e),t),t=He(!!l,!!o),r=(D.createDevice.major??=64,D.makedev(D.createDevice.major++,0));return D.registerDevice(r,{open(e){e.seekable=!1},close(e){o?.buffer?.length&&o(10)},read(e,t,r,n,a){for(var i,o=0,s=0;s<n;s++){try{i=l()}catch(e){throw new D.ErrnoError(29)}if(void 0===i&&0===o)throw new D.ErrnoError(6);if(null==i)break;o++,t[r+s]=i}return o&&(e.node.atime=Date.now()),o},write(e,t,r,n,a){for(var i=0;i<n;i++)try{o(t[r+i])}catch(e){throw new D.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),i}}),D.mkdev(e,t,r)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(\"undefined\"!=typeof XMLHttpRequest)throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");try{e.contents=r(e.url),e.usedBytes=e.contents.length}catch(e){throw new D.ErrnoError(29)}},createLazyFile(e,t,o,r,n){class a{lengthKnown=!1;chunks=[];get(e){var t;if(!(e>this.length-1||e<0))return t=e%this.chunkSize,e=e/this.chunkSize|0,this.getter(e)[t]}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(\"HEAD\",o,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error(\"Couldn't load \"+o+\". Status: \"+e.status);var t,n=Number(e.getResponseHeader(\"Content-length\")),r=(t=e.getResponseHeader(\"Accept-Ranges\"))&&\"bytes\"===t,e=(t=e.getResponseHeader(\"Content-Encoding\"))&&\"gzip\"===t,a=1048576,i=(r||(a=n),this);i.setDataGetter(e=>{var t=e*a,r=(e+1)*a-1,r=Math.min(r,n-1);if(void 0===i.chunks[e]&&(i.chunks[e]=((e,t)=>{if(t<e)throw new Error(\"invalid range (\"+e+\", \"+t+\") or no bytes requested!\");if(n-1<t)throw new Error(\"only \"+n+\" bytes available! programmer error!\");var r=new XMLHttpRequest;if(r.open(\"GET\",o,!1),n!==a&&r.setRequestHeader(\"Range\",\"bytes=\"+e+\"-\"+t),r.responseType=\"arraybuffer\",r.overrideMimeType&&r.overrideMimeType(\"text/plain; charset=x-user-defined\"),r.send(null),200<=r.status&&r.status<300||304===r.status)return void 0!==r.response?new Uint8Array(r.response||[]):De(r.responseText||\"\",!0);throw new Error(\"Couldn't load \"+o+\". Status: \"+r.status)})(t,r)),void 0===i.chunks[e])throw new Error(\"doXHR failed!\");return i.chunks[e]}),!e&&n||(a=n=1,n=this.getter(0).length,a=n,f(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=n,this._chunkSize=a,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(\"undefined\"!=typeof XMLHttpRequest){if(!u)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var i={isDevice:!1,contents:new a}}else i={isDevice:!1,url:o};var s=D.createFile(e,t,i,r,n),l=(i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}}),{});function c(e,t,r,n,a){var i=e.node.contents;if(a>=i.length)return 0;var o=Math.min(i.length-a,n);if(h(0<=o),i.slice)for(var s=0;s<o;s++)t[r+s]=i[a+s];else for(s=0;s<o;s++)t[r+s]=i.get(a+s);return o}return Object.keys(s.stream_ops).forEach(e=>{var t=s.stream_ops[e];l[e]=(...e)=>(D.forceLoadFile(s),t(...e))}),l.read=(e,t,r,n,a)=>(D.forceLoadFile(s),c(e,t,r,n,a)),l.mmap=(e,t,r,n,a)=>{D.forceLoadFile(s);var i=Le(t);if(i)return c(e,d,i,t,r),{ptr:i,allocated:!0};throw new D.ErrnoError(48)},s.stream_ops=l,s},absolutePath(){E(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder(){E(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink(){E(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath(){E(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc(){E(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath(){E(\"FS.standardizePath has been removed; use PATH.normalize instead\")}},n=(D.createPreloadedFile=(r,n,e,a,i,o,s,l,c,u)=>{var d=n?N.resolve(R.join2(r,n)):r,p=function(e){for(var t=e;;){if(!v[e])return e;e=t+Math.random()}}(\"cp \"+d);function t(e){function t(e){u?.(),l||Ue(r,n,e,a,i,c),o?.(),Q(p)}je(e,d,t,()=>{s?.(),Q(p)})||t(e)}J(p),\"string\"==typeof e?Fe(e).then(t,s):t(e)},D.staticInit(),o.noExitRuntime&&(ie=o.noExitRuntime),o.preloadPlugins&&(Be=o.preloadPlugins),o.print&&(f=o.print),o.printErr&&(s=o.printErr),o.wasmBinary&&(q=o.wasmBinary),\"fetchSettings\");Object.getOwnPropertyDescriptor(o,n)&&E(`\\`Module.${n}\\` was supplied but \\`${n}\\` not included in INCOMING_MODULE_JS_API`),o.arguments&&(j=o.arguments),o.thisProgram&&(H=o.thisProgram),h(void 0===o.memoryInitializerPrefixURL,\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===o.pthreadMainPrefixURL,\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===o.cdInitializerPrefixURL,\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\"),h(void 0===o.filePackagePrefixURL,\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\"),h(void 0===o.read,\"Module.read option was removed\"),h(void 0===o.readAsync,\"Module.readAsync option was removed (modify readAsync in JS)\"),h(void 0===o.readBinary,\"Module.readBinary option was removed (modify readBinary in JS)\"),h(void 0===o.setWindowTitle,\"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)\"),h(void 0===o.TOTAL_MEMORY,\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\"),h(void 0===o.ENVIRONMENT,\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\"),h(void 0===o.STACK_SIZE,\"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time\"),h(void 0===o.wasmMemory,\"Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally\"),h(void 0===o.INITIAL_MEMORY,\"Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically\"),o.callMain=tt,o.ccall=(e,t,r,n,a)=>{var i={string:e=>{var t=0;return t=null!=e&&0!==e?ve(e):t},array:e=>{var t=Te(e.length);return Ee(e,t),t}};var e=be(e),o=[],s=0;if(h(\"array\"!==t,'Return type should not be \"array\".'),n)for(var l=0;l<n.length;l++){var c=i[r[l]];c?(0===s&&(s=se()),o[l]=c(n[l])):o[l]=n[l]}e=e(...o);return e=e,0!==s&&oe(s),e=e,\"string\"===t?pe(e):\"boolean\"===t?Boolean(e):e},o.addFunction=(t,r)=>{h(void 0!==t);var n=we(t);if(n)return n;n=Ie();try{Re(n,t)}catch(e){if(!(e instanceof TypeError))throw e;h(void 0!==r,\"Missing signature argument to addFunction: \"+t);r=Ae(t,r);Re(n,r)}return O.set(t,n),n},o.FS=D,[\"writeI53ToI64\",\"writeI53ToI64Clamped\",\"writeI53ToI64Signaling\",\"writeI53ToU64Clamped\",\"writeI53ToU64Signaling\",\"readI53FromI64\",\"readI53FromU64\",\"convertI32PairToI53\",\"convertI32PairToI53Checked\",\"convertU32PairToI53\",\"getTempRet0\",\"setTempRet0\",\"inetPton4\",\"inetNtop4\",\"inetPton6\",\"inetNtop6\",\"readSockaddr\",\"writeSockaddr\",\"emscriptenLog\",\"readEmAsmArgs\",\"jstoi_q\",\"getExecutableName\",\"listenOnce\",\"autoResumeAudioContext\",\"getDynCaller\",\"dynCall\",\"runtimeKeepalivePush\",\"runtimeKeepalivePop\",\"callUserCallback\",\"maybeExit\",\"asmjsMangle\",\"HandleAllocator\",\"getNativeTypeSize\",\"addOnInit\",\"addOnPostCtor\",\"addOnPreMain\",\"addOnExit\",\"STACK_SIZE\",\"STACK_ALIGN\",\"POINTER_SIZE\",\"ASSERTIONS\",\"cwrap\",\"removeFunction\",\"reallyNegative\",\"unSign\",\"strLen\",\"reSign\",\"formatString\",\"intArrayToString\",\"AsciiToString\",\"stringToAscii\",\"UTF16ToString\",\"stringToUTF16\",\"lengthBytesUTF16\",\"UTF32ToString\",\"stringToUTF32\",\"lengthBytesUTF32\",\"stringToNewUTF8\",\"registerKeyEventCallback\",\"maybeCStringToJsString\",\"findEventTarget\",\"getBoundingClientRect\",\"fillMouseEventData\",\"registerMouseEventCallback\",\"registerWheelEventCallback\",\"registerUiEventCallback\",\"registerFocusEventCallback\",\"fillDeviceOrientationEventData\",\"registerDeviceOrientationEventCallback\",\"fillDeviceMotionEventData\",\"registerDeviceMotionEventCallback\",\"screenOrientation\",\"fillOrientationChangeEventData\",\"registerOrientationChangeEventCallback\",\"fillFullscreenChangeEventData\",\"registerFullscreenChangeEventCallback\",\"JSEvents_requestFullscreen\",\"JSEvents_resizeCanvasForFullscreen\",\"registerRestoreOldStyle\",\"hideEverythingExceptGivenElement\",\"restoreHiddenElements\",\"setLetterbox\",\"softFullscreenResizeWebGLRenderTarget\",\"doRequestFullscreen\",\"fillPointerlockChangeEventData\",\"registerPointerlockChangeEventCallback\",\"registerPointerlockErrorEventCallback\",\"requestPointerLock\",\"fillVisibilityChangeEventData\",\"registerVisibilityChangeEventCallback\",\"registerTouchEventCallback\",\"fillGamepadEventData\",\"registerGamepadEventCallback\",\"registerBeforeUnloadEventCallback\",\"fillBatteryEventData\",\"battery\",\"registerBatteryEventCallback\",\"setCanvasElementSize\",\"getCanvasElementSize\",\"jsStackTrace\",\"getCallstack\",\"convertPCtoSourceLocation\",\"getEnvStrings\",\"checkWasiClock\",\"wasiRightsToMuslOFlags\",\"wasiOFlagsToMuslOFlags\",\"safeSetTimeout\",\"setImmediateWrapped\",\"safeRequestAnimationFrame\",\"clearImmediateWrapped\",\"registerPostMainLoop\",\"registerPreMainLoop\",\"getPromise\",\"makePromise\",\"idsToPromises\",\"makePromiseCallback\",\"ExceptionInfo\",\"findMatchingCatch\",\"Browser_asyncPrepareDataCounter\",\"isLeapYear\",\"ydayFromDate\",\"arraySum\",\"addDays\",\"getSocketFromFD\",\"getSocketAddress\",\"FS_mkdirTree\",\"_setNetworkCallback\",\"heapObjectForWebGLType\",\"toTypedArrayIndex\",\"webgl_enable_ANGLE_instanced_arrays\",\"webgl_enable_OES_vertex_array_object\",\"webgl_enable_WEBGL_draw_buffers\",\"webgl_enable_WEBGL_multi_draw\",\"webgl_enable_EXT_polygon_offset_clamp\",\"webgl_enable_EXT_clip_control\",\"webgl_enable_WEBGL_polygon_mode\",\"emscriptenWebGLGet\",\"computeUnpackAlignedImageSize\",\"colorChannelsInGlTextureFormat\",\"emscriptenWebGLGetTexPixelData\",\"emscriptenWebGLGetUniform\",\"webglGetUniformLocation\",\"webglPrepareUniformLocationsBeforeFirstUse\",\"webglGetLeftBracePos\",\"emscriptenWebGLGetVertexAttrib\",\"__glGetActiveAttribOrUniform\",\"writeGLArray\",\"registerWebGlEventCallback\",\"runAndAbortIfError\",\"ALLOC_NORMAL\",\"ALLOC_STACK\",\"allocate\",\"writeStringToMemory\",\"writeAsciiToMemory\",\"demangle\",\"stackTrace\"].forEach(function(e){$(e)}),[\"run\",\"addRunDependency\",\"removeRunDependency\",\"out\",\"err\",\"abort\",\"wasmMemory\",\"wasmExports\",\"HEAPF32\",\"HEAPF64\",\"HEAP8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAP64\",\"HEAPU64\",\"writeStackCookie\",\"checkStackCookie\",\"INT53_MAX\",\"INT53_MIN\",\"bigintToI53Checked\",\"stackSave\",\"stackRestore\",\"stackAlloc\",\"ptrToString\",\"zeroMemory\",\"exitJS\",\"getHeapMax\",\"growMemory\",\"ENV\",\"ERRNO_CODES\",\"strError\",\"DNS\",\"Protocols\",\"Sockets\",\"timers\",\"warnOnce\",\"readEmAsmArgsArray\",\"handleException\",\"keepRuntimeAlive\",\"asyncLoad\",\"alignMemory\",\"mmapAlloc\",\"wasmTable\",\"noExitRuntime\",\"addOnPreRun\",\"addOnPostRun\",\"getCFunc\",\"uleb128Encode\",\"sigToWasmTypes\",\"generateFuncType\",\"convertJsFunctionToWasm\",\"freeTableIndexes\",\"functionsInTableMap\",\"getEmptyTableSlot\",\"updateTableMap\",\"getFunctionAddress\",\"setValue\",\"getValue\",\"PATH\",\"PATH_FS\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"UTF8ToString\",\"stringToUTF8Array\",\"stringToUTF8\",\"lengthBytesUTF8\",\"intArrayFromString\",\"UTF16Decoder\",\"stringToUTF8OnStack\",\"writeArrayToMemory\",\"JSEvents\",\"specialHTMLTargets\",\"findCanvasEventTarget\",\"currentFullscreenStrategy\",\"restoreOldWindowedStyle\",\"UNWIND_CACHE\",\"ExitStatus\",\"flush_NO_FILESYSTEM\",\"initRandomFill\",\"randomFill\",\"emSetImmediate\",\"emClearImmediate_deps\",\"emClearImmediate\",\"promiseMap\",\"uncaughtExceptionCount\",\"exceptionLast\",\"exceptionCaught\",\"Browser\",\"getPreloadedImageData__data\",\"wget\",\"MONTH_DAYS_REGULAR\",\"MONTH_DAYS_LEAP\",\"MONTH_DAYS_REGULAR_CUMULATIVE\",\"MONTH_DAYS_LEAP_CUMULATIVE\",\"SYSCALLS\",\"preloadPlugins\",\"FS_createPreloadedFile\",\"FS_modeStringToFlags\",\"FS_getMode\",\"FS_stdin_getChar_buffer\",\"FS_stdin_getChar\",\"FS_unlink\",\"FS_createPath\",\"FS_createDevice\",\"FS_readFile\",\"FS_root\",\"FS_mounts\",\"FS_devices\",\"FS_streams\",\"FS_nextInode\",\"FS_nameTable\",\"FS_currentPath\",\"FS_initialized\",\"FS_ignorePermissions\",\"FS_filesystems\",\"FS_syncFSRequests\",\"FS_readFiles\",\"FS_lookupPath\",\"FS_getPath\",\"FS_hashName\",\"FS_hashAddNode\",\"FS_hashRemoveNode\",\"FS_lookupNode\",\"FS_createNode\",\"FS_destroyNode\",\"FS_isRoot\",\"FS_isMountpoint\",\"FS_isFile\",\"FS_isDir\",\"FS_isLink\",\"FS_isChrdev\",\"FS_isBlkdev\",\"FS_isFIFO\",\"FS_isSocket\",\"FS_flagsToPermissionString\",\"FS_nodePermissions\",\"FS_mayLookup\",\"FS_mayCreate\",\"FS_mayDelete\",\"FS_mayOpen\",\"FS_checkOpExists\",\"FS_nextfd\",\"FS_getStreamChecked\",\"FS_getStream\",\"FS_createStream\",\"FS_closeStream\",\"FS_dupStream\",\"FS_doSetAttr\",\"FS_chrdev_stream_ops\",\"FS_major\",\"FS_minor\",\"FS_makedev\",\"FS_registerDevice\",\"FS_getDevice\",\"FS_getMounts\",\"FS_syncfs\",\"FS_mount\",\"FS_unmount\",\"FS_lookup\",\"FS_mknod\",\"FS_statfs\",\"FS_statfsStream\",\"FS_statfsNode\",\"FS_create\",\"FS_mkdir\",\"FS_mkdev\",\"FS_symlink\",\"FS_rename\",\"FS_rmdir\",\"FS_readdir\",\"FS_readlink\",\"FS_stat\",\"FS_fstat\",\"FS_lstat\",\"FS_doChmod\",\"FS_chmod\",\"FS_lchmod\",\"FS_fchmod\",\"FS_doChown\",\"FS_chown\",\"FS_lchown\",\"FS_fchown\",\"FS_doTruncate\",\"FS_truncate\",\"FS_ftruncate\",\"FS_utime\",\"FS_open\",\"FS_close\",\"FS_isClosed\",\"FS_llseek\",\"FS_read\",\"FS_write\",\"FS_mmap\",\"FS_msync\",\"FS_ioctl\",\"FS_writeFile\",\"FS_cwd\",\"FS_chdir\",\"FS_createDefaultDirectories\",\"FS_createDefaultDevices\",\"FS_createSpecialDirectories\",\"FS_createStandardStreams\",\"FS_staticInit\",\"FS_init\",\"FS_quit\",\"FS_findObject\",\"FS_analyzePath\",\"FS_createFile\",\"FS_createDataFile\",\"FS_forceLoadFile\",\"FS_createLazyFile\",\"FS_absolutePath\",\"FS_createFolder\",\"FS_createLink\",\"FS_joinPath\",\"FS_mmapAlloc\",\"FS_standardizePath\",\"MEMFS\",\"TTY\",\"PIPEFS\",\"SOCKFS\",\"tempFixedLengthArray\",\"miniTempWebGLFloatBuffers\",\"miniTempWebGLIntBuffers\",\"GL\",\"AL\",\"GLUT\",\"EGL\",\"GLEW\",\"IDBStore\",\"SDL\",\"SDL_gfx\",\"allocateUTF8\",\"allocateUTF8OnStack\",\"print\",\"printErr\",\"jstoi_s\",\"WORKERFS\"].forEach($);var Ve,e={_abort_js:()=>E(\"native code called abort()\"),emscripten_get_now:()=>performance.now(),emscripten_resize_heap:function(e){var t=c.length,r=(h(t<(e>>>=0)),le());if(r<e)s(`Cannot enlarge memory, requested ${e} bytes, but the limit is ${r} bytes!`);else{for(var n=1;n<=4;n*=2){var a=t*(1+.2/n),a=Math.min(a,e+100663296),i=Math.min(r,ce(Math.max(e,a),65536));if(ue(i))return!0}s(`Failed to grow the heap from ${t} bytes to ${i} bytes, not enough memory!`)}return!1},fd_close:e=>{E(\"fd_close called without SYSCALLS_REQUIRE_FILESYSTEM\")},fd_seek:function(e,t,r,n){return 70},fd_write:function(e,t,r,n){t>>>=0,r>>>=0,n>>>=0;for(var a=0,i=0;i<r;i++){var o=p[t>>>2>>>0],s=p[t+4>>>2>>>0];t+=8;for(var l=0;l<s;l++)he(e,c[o+l>>>0]);a+=s}return p[n>>>2>>>0]=a,0}},x=(J(\"wasm-instantiate\"),Ve={env:e,wasi_snapshot_preview1:e},o.instantiateWasm?new Promise((r,t)=>{try{o.instantiateWasm(Ve,(e,t)=>{r(qe(e))})}catch(e){s(\"Module.instantiateWasm callback failed with error: \"+e),t(e)}}):qe(X(Y??=Z(),Ve)[0]));function qe(e){var t;return x=e.exports,e=x,e=Object.assign({},e),t=e=>()=>e()>>>0,e.strerror=(t=>e=>t(e)>>>0)(e.strerror),e.emscripten_stack_get_end=t(e.emscripten_stack_get_end),e.emscripten_stack_get_base=t(e.emscripten_stack_get_base),e.emscripten_builtin_memalign=(r=>(e,t)=>r(e,t)>>>0)(e.emscripten_builtin_memalign),e._emscripten_stack_alloc=(t=>e=>t(e)>>>0)(e._emscripten_stack_alloc),e.emscripten_stack_get_current=t(e.emscripten_stack_get_current),h(a=(x=e).memory,\"memory not found in wasm exports\"),K(),h(A=x.__indirect_function_table,\"table not found in wasm exports\"),Q(\"wasm-instantiate\"),x}o._trace_config_utils_buf=S(\"trace_config_utils_buf\",0),o._trace_config_utils_buf_size=S(\"trace_config_utils_buf_size\",0),o._trace_config_pb_to_txt=S(\"trace_config_pb_to_txt\",1),o._trace_config_txt_to_pb=S(\"trace_config_txt_to_pb\",1);var ze,We=o._main=S(\"__main_argc_argv\",2),$e=S(\"strerror\",1),Ke=S(\"fflush\",1),Ye=x.emscripten_stack_get_end,Je=(x.emscripten_stack_get_base,S(\"emscripten_builtin_memalign\",2)),Qe=x.emscripten_stack_init,Ze=(x.emscripten_stack_get_free,x._emscripten_stack_restore),Xe=x._emscripten_stack_alloc,et=x.emscripten_stack_get_current;function tt(e=[]){h(0==y,'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])'),h(void 0===C||0==C.length,\"cannot call main when preRun functions remain to be called\");var t=We,r=(e.unshift(H),e.length),n=Te(4*(r+1)),a=n;e.forEach(e=>{p[a>>>2>>>0]=ve(e),a+=4}),p[a>>>2>>>0]=0;try{var i=t(r,n);return me(i,!0),i}catch(e){return ge(e)}}function rt(){var e;Qe(),h(0==(3&(e=Ye()))),0==e&&(e+=4),p[e>>>2>>>0]=34821223,p[e+4>>>2>>>0]=2310721022,p[0]=1668509029}if(o.preInit)for(\"function\"==typeof o.preInit&&(o.preInit=[o.preInit]);0<o.preInit.length;)o.preInit.shift()();_(\"preInit\"),function e(t=j){if(0<y)T=e;else{if(rt(),o.preRun)for(\"function\"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)ae(o.preRun.shift());_(\"preRun\"),te(C),0<y?T=e:(o.setStatus?(o.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>o.setStatus(\"\"),1),r()},1)):r(),g())}function r(){if(h(!ze),ze=!0,o.calledRun=!0,!i){if(h(!m),m=!0,g(),o.noFSInit||D.initialized||D.init(),x.__wasm_call_ctors(),D.ignorePermissions=!1,g(),F(o),o.onRuntimeInitialized?.(),_(\"onRuntimeInitialized\"),o.noInitialRun||tt(t),g(),o.postRun)for(\"function\"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)ne(o.postRun.shift());_(\"postRun\"),te(re)}}}(),t=o;for(const nt of Object.keys(o))nt in L||Object.defineProperty(L,nt,{configurable:!0,get(){E(`Access to module property ('${nt}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return t}var t,at;return _3||(_3=1,t=E3,at=\"undefined\"!=typeof document?document.currentScript?.src:void 0,t.exports=e,t.exports.default=e),E3.exports}function A3(){if(!y3){y3=1,Object.defineProperty(b3,\"__esModule\",{value:!0}),b3.traceConfigToTxt=async function(e){var t=await n(),e=e instanceof Uint8Array?e:r.default.TraceConfig.encode(e).finish(),e=((0,s.assertTrue)(e.length<=t.buf.length),t.buf.set(e),t.module.ccall(\"trace_config_pb_to_txt\",\"number\",[\"number\"],[e.length])>>>0),t=(0,c.utf8Decode)(t.buf.subarray(0,e));return t},b3.traceConfigToPb=async function(e){var t=await n(),e=(0,c.utf8Encode)(e),e=((0,s.assertTrue)(e.length<=t.buf.length),t.buf.set(e),t.module.ccall(\"trace_config_txt_to_pb\",\"number\",[\"number\"],[e.length])>>>0),r=1===t.buf.at(0),t=t.buf.slice(1,1+e);return r?(0,l.okResult)(t):(0,l.errResult)((0,c.utf8Decode)(t))};var e=Jr;const r=e.__importDefault(dh()),i=Ch(),o=Ja(),s=Pe(),l=Tl(),c=j(),u=e.__importDefault(S3());let a=void 0;async function n(){if(void 0===a){var e=await(await fetch((0,i.assetSrc)(\"trace_config_utils.wasm\"))).arrayBuffer();const n=(0,o.defer)();var e=(0,u.default)({noInitialRun:!0,locateFile:e=>e,print:e=>console.log(e),printErr:e=>console.error(e),onRuntimeInitialized:()=>n.resolve(),wasmBinary:e}),t=(await n,e.ccall(\"trace_config_utils_buf\",\"number\",[],[])>>>0),r=e.ccall(\"trace_config_utils_buf_size\",\"number\",[],[])>>>0;a={module:e,buf:e.HEAPU8.subarray(t,t+r)}}return a}}return b3}function O3(){if(T3)return v3;T3=1,Object.defineProperty(v3,\"__esModule\",{value:!0}),v3.instructionsPage=function(e){return{kind:\"GLOBAL_PAGE\",id:\"cmdline\",icon:\"terminal\",title:\"Cmdline instructions\",subtitle:\"Show cmdline instructions\",render(){return(0,r.default)(o,{recMgr:e})},serialize(){},deserialize(){}}};var e=Jr;const r=e.__importDefault(xe()),n=A3(),a=e.__importDefault(dh()),t=Oe(),i=EN();class o{configTxt=\"\";cmdline;docsLink;constructor({attrs:e}){var t=e.recMgr.genTraceConfig(),t=a.default.TraceConfig.encode(t).finish().slice();switch((0,n.traceConfigToTxt)(t).then(e=>{this.configTxt=e,r.default.redraw()}),e.recMgr.currentPlatform){case\"ANDROID\":this.cmdline=\"cat config.pbtx | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace.pftrace\",this.docsLink=\"https://perfetto.dev/docs/quickstart/android-tracing\";break;case\"LINUX\":this.cmdline=\"perfetto -c config.pbtx --txt -o /tmp/trace.pftrace\",this.docsLink=\"https://perfetto.dev/docs/quickstart/linux-tracing\";break;case\"CHROME\":case\"CHROME_OS\":this.docsLink=\"https://perfetto.dev/docs/quickstart/chrome-tracing\",this.cmdline=\"There is no cmdline support for Chrome/CrOS.\\nYou must use the recording UI via the extension to record traces.\"}}view(){return[this.docsLink&&(0,r.default)(\"p\",\"See the documentation on \",(0,r.default)(t.Anchor,{href:this.docsLink,target:\"_blank\"},this.docsLink.replace(\"https://\",\"\"))),this.cmdline&&(0,r.default)(\"\",(0,r.default)(i.CodeSnippet,{language:\"Shell\",text:this.cmdline})),(0,r.default)(\"p\",\"Save the file below as: config.pbtx\"),(0,r.default)(\"\",(0,r.default)(i.CodeSnippet,{language:\"textproto\",text:this.configTxt}))]}}return v3}var C3,w3={};function k3(){if(!C3){C3=1,Object.defineProperty(w3,\"__esModule\",{value:!0}),w3.cpuRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"cpu\",title:\"CPU\",subtitle:\"CPU usage, scheduling, wakeups\",icon:\"subtitles\",probes:[function(){const t={pollMs:new n.Slider(n.POLL_INTERVAL_SLIDER)};return{id:\"cpu_usage\",image:\"rec_cpu_coarse.png\",title:\"Coarse CPU usage counter\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],description:\"Lightweight polling of CPU usage counters via /proc/stat. Allows to periodically monitor CPU usage.\",dependencies:[e.ADV_PROC_ASSOC_PROBE_ID],settings:t,genConfig:function(e){e=e.addDataSource(a);e.sysStatsConfig??={},e.sysStatsConfig.statPeriodMs=t.pollMs.value,e.sysStatsConfig.statCounters??=[],e.sysStatsConfig.statCounters.push(r.default.SysStatsConfig.StatCounters.STAT_CPU_TIMES,r.default.SysStatsConfig.StatCounters.STAT_FORK_COUNT)}}}(),{id:\"cpu_sched\",image:\"rec_cpu_fine.png\",title:\"Scheduling details\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],dependencies:[e.ADV_FTRACE_PROBE_ID,e.ADV_PROC_ASSOC_PROBE_ID],description:\"Enables high-detailed tracking of scheduling events\",genConfig:function(e){e.addFtraceEvents(\"sched/sched_switch\",\"power/suspend_resume\",\"sched/sched_blocked_reason\",\"sched/sched_wakeup\",\"sched/sched_wakeup_new\",\"sched/sched_waking\",\"sched/sched_process_exit\",\"sched/sched_process_free\",\"task/task_newtask\",\"task/task_rename\")}},function(){const r={pollMs:new n.Slider(n.POLL_INTERVAL_SLIDER)};return{id:\"cpu_freq\",image:\"rec_cpu_freq.png\",title:\"CPU frequency and idle states\",description:\"Records cpu frequency and idle state changes via ftrace and sysfs\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],settings:r,genConfig:function(e){var t=e.addDataSource(a);t.sysStatsConfig??={},t.sysStatsConfig.cpufreqPeriodMs=r.pollMs.value,e.addFtraceEvents(\"power/cpu_frequency\",\"power/cpu_idle\",\"power/suspend_resume\")}}}(),{id:\"cpu_syscalls\",image:\"rec_syscalls.png\",title:\"Syscalls\",description:\"Tracks the enter and exit of all syscalls. On Androidrequires a userdebug or eng build.\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],genConfig:function(e){e.addFtraceEvents(\"raw_syscalls/sys_enter\",\"raw_syscalls/sys_exit\")}}]}};const r=Jr.__importDefault(dh()),e=t3(),n=$L(),a=\"linux.sys_stats\"}return w3}var I3,R3={};var N3,M3={};function P3(){if(N3)return M3;N3=1,Object.defineProperty(M3,\"__esModule\",{value:!0}),M3.memoryRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"memory\",title:\"Memory\",subtitle:\"Physical mem, VM, LMK\",icon:\"memory\",probes:[function(){const a={targetProcs:new t.Textarea({title:\"Names or pids of the processes to track (required)\",docsLink:\"https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets\",placeholder:\"One per line, e.g.:\\nsystem_server\\ncom.google.android.apps.photos\\n1503\"}),samplingBytes:new s.Slider({title:\"Sampling interval\",description:\"Trades off accuracy vs overhead in the target process\",cssClass:\".thin\",default:4096,values:[1,16,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576],unit:\"B\",min:1}),dumpInterval:new s.Slider({title:\"Continuous dump interval\",description:\"Time between following dumps (0 = only dump at the end)\",values:u,cssClass:\".thin\",unit:\"ms\",min:0}),dumpPhase:new s.Slider({title:\"Continuous dumps phase\",description:\"Time before first dump\",values:u,cssClass:\".thin\",unit:\"ms\",min:0}),shmemKB:new s.Slider({title:\"Shared memory buffer\",values:d,default:8192,cssClass:\".thin\",unit:\"KB\"}),blockClient:new l.Toggle({title:\"Block client\",cssClass:\".thin\",default:!0,descr:\"Slow down target application if profiler cannot keep up.\"}),allHeaps:new l.Toggle({title:\"All custom allocators (Q+)\",cssClass:\".thin\",descr:\"If the target application exposes custom allocators, also sample from those.\"})};return{id:\"mem_hprof\",title:\"Native heap profiling\",image:\"rec_native_heap_profiler.png\",description:\"Track native heap allocations & deallocations of an Android process. (Available on Android 10+)\",supportedPlatforms:[\"ANDROID\",\"LINUX\"],settings:a,genConfig:function(e){var t=a,[r,n]=p(t.targetProcs.text);e.addDataSource(\"android.heapprofd\").heapprofdConfig={samplingIntervalBytes:t.samplingBytes.value,shmemSizeBytes:1024*t.shmemKB.value,blockClient:t.blockClient.enabled,allHeaps:t.allHeaps.enabled,processCmdline:0<r.length?r:void 0,pid:0<n.length?n:void 0,continuousDumpConfig:0==t.dumpInterval.value?void 0:{dumpIntervalMs:t.dumpInterval.value,dumpPhaseMs:t.dumpPhase.value}}}}}(),function(){const a={targetProcs:new t.Textarea({title:\"Names or pids of the processes to track (required)\",docsLink:\"https://perfetto.dev/docs/data-sources/java-heap-profiler\",placeholder:\"One per line, e.g.:\\nsystem_server\\ncom.google.android.apps.photos\\n1503\"}),dumpInterval:new s.Slider({title:\"Continuous dump interval\",description:\"Time between following dumps (0 = only dump at the end)\",values:u,cssClass:\".thin\",unit:\"ms\",min:0}),dumpPhase:new s.Slider({title:\"Continuous dumps phase\",description:\"Time before first dump\",values:u,cssClass:\".thin\",unit:\"ms\",min:0})};return{id:\"mem_heapdumps\",title:\"Java heap dumps\",image:\"rec_java_heap_dump.png\",description:\"Dump information about the Java object graph of an Android app. (Available on Android 11+)\",supportedPlatforms:[\"ANDROID\"],settings:a,genConfig:function(e){var t=a,[r,n]=p(t.targetProcs.text);e.addDataSource(\"android.java_hprof\").javaHprofConfig={processCmdline:0<r.length?r:void 0,pid:0<n.length?n:void 0,continuousDumpConfig:0==t.dumpInterval.value?void 0:{dumpIntervalMs:t.dumpInterval.value,dumpPhaseMs:t.dumpPhase.value}}}}}(),function(){var e=new Map;for(const r in n.default.MeminfoCounters)\"number\"!=typeof n.default.MeminfoCounters[r]||(\"\"+r).endsWith(\"_UNSPECIFIED\")||e.set(r.replace(\"MEMINFO_\",\"\").toLowerCase(),n.default.MeminfoCounters[r]);const t={pollMs:new s.Slider(s.POLL_INTERVAL_SLIDER),counters:new o.TypedMultiselect({options:e})};return{id:\"mem_meminfo\",image:\"rec_meminfo.png\",title:\"Kernel meminfo\",description:\"Polling of /proc/meminfo\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],settings:t,genConfig:function(e){e=e.addDataSource(c).sysStatsConfig??={};e.meminfoPeriodMs=t.pollMs.value,e.meminfoCounters=t.counters.selectedValues()}}}(),function(){var e=new Map;for(const r in n.default.VmstatCounters)\"number\"!=typeof n.default.VmstatCounters[r]||(\"\"+r).endsWith(\"_UNSPECIFIED\")||e.set(r.replace(\"VMSTAT_\",\"\").toLowerCase(),n.default.VmstatCounters[r]);const t={pollMs:new s.Slider(s.POLL_INTERVAL_SLIDER),counters:new o.TypedMultiselect({options:e})};return{id:\"mem_vmstat\",title:\"Virtual memory stats\",image:\"rec_vmstat.png\",description:\"Periodically polls virtual memory stats from /proc/vmstat. Allows to gather statistics about swap, eviction, compression and pagecache efficiency\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],settings:t,genConfig:function(e){e=e.addDataSource(c).sysStatsConfig??={};e.vmstatPeriodMs=t.pollMs.value,e.vmstatCounters=t.counters.selectedValues()}}}(),{id:\"mem_hifreq\",title:\"High-frequency memory events\",image:\"rec_mem_hifreq.png\",dependencies:[a.ADV_PROC_ASSOC_PROBE_ID],description:\"Allows to track short memory spikes and transitories through ftrace's mm_event, rss_stat and ion events. Available only on recent Android Q+ kernels\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addFtraceEvents(\"mm_event/mm_event_record\",\"kmem/rss_stat\",\"ion/ion_stat\",\"dmabuf_heap/dma_heap_stat\",\"kmem/ion_heap_grow\",\"kmem/ion_heap_shrink\")}},{id:\"mem_lmk\",title:\"Low memory killer\",image:\"rec_lmk.png\",dependencies:[a.ADV_PROC_ASSOC_PROBE_ID],description:\"Record LMK events. Works both with the old in-kernel LMK and the newer userspace lmkd. It also tracks OOM score adjustments.\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],genConfig:function(e){e.addFtraceEvents(\"lowmemorykiller/lowmemory_kill\",\"oom/oom_score_adj_update\"),e.addAtraceApps(\"lmkd\")}},function(){const t={pollMs:new s.Slider(s.POLL_INTERVAL_SLIDER),procAge:new l.Toggle({title:\"Record process age\"}),procRuntime:new l.Toggle({title:\"Record process runtime\"})};return{id:\"mem_proc_stat\",title:\"Per process /proc/ stat polling\",image:\"rec_ps_stats.png\",dependencies:[a.ADV_PROC_ASSOC_PROBE_ID],description:\"Periodically samples all processes in the system tracking: their thread list, memory counters (RSS, swap and other /proc/status counters) and oom_score_adj.\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],settings:t,genConfig:function(e){e=e.addDataSource(a.PROC_STATS_DS_NAME),e=(0,r.assertExists)(e.processStatsConfig);e.procStatsPollMs=t.pollMs.value||void 0,e.recordProcessAge=t.procAge.enabled||void 0,e.recordProcessRuntime=t.procRuntime.enabled||void 0}}}()]}};var e=Jr;const r=Pe(),i=j(),n=e.__importDefault(dh()),a=t3(),o=qL(),s=$L(),t=o3(),l=e3(),c=\"linux.sys_stats\";const u=[0,1e3,1e4,3e4,6e4,3e5,6e5,18e5,36e5],d=[1024,2048,4096,8192,16384,32768,65536,131072];function p(e){var t=[],r=[];for(const a of(0,i.splitLinesNonEmpty)(e)){var n=parseInt(a);isNaN(n)?t.push(a):r.push(n)}return[t,r]}return M3}var D3,x3={};function L3(){if(!D3){D3=1,Object.defineProperty(x3,\"__esModule\",{value:!0}),x3.powerRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"power\",title:\"Power\",subtitle:\"Battery and other energy counters\",icon:\"battery_charging_full\",probes:[function(){const t={pollMs:new e.Slider(e.POLL_INTERVAL_SLIDER)};return{id:\"power_rails\",image:\"rec_battery_counters.png\",title:\"Battery drain & power rails\",description:\"Polls charge counters and instantaneous power draw from the battery power management IC and the power rails from the PowerStats HAL.\",docsLink:\"https://perfetto.dev/docs/data-sources/battery-counters\",supportedPlatforms:[\"ANDROID\"],settings:t,genConfig:function(e){e.addDataSource(\"android.power\").androidPowerConfig={batteryPollMs:t.pollMs.value,collectPowerRails:!0,batteryCounters:[r.default.AndroidPowerConfig.BatteryCounters.BATTERY_COUNTER_CAPACITY_PERCENT,r.default.AndroidPowerConfig.BatteryCounters.BATTERY_COUNTER_CHARGE,r.default.AndroidPowerConfig.BatteryCounters.BATTERY_COUNTER_CURRENT]}}}}(),{id:\"power_voltages\",image:\"rec_board_voltage.png\",title:\"Board voltages & frequencies\",description:\"Tracks voltage and frequency changes from board sensors\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],genConfig:function(e){e.addFtraceEvents(\"regulator/regulator_set_voltage\",\"regulator/regulator_set_voltage_complete\",\"power/clock_enable\",\"power/clock_disable\",\"power/clock_set_rate\",\"power/suspend_resume\")}}]}};const r=Jr.__importDefault(dh()),e=$L()}return x3}var F3,U3={},B3={};function j3(){return F3||(F3=1,Object.defineProperty(B3,\"__esModule\",{value:!0}),B3.supportsPlatform=function(e,t){return void 0===e.supportedPlatforms||e.supportedPlatforms.includes(t)}),B3}var H3,G3={};function V3(){if(!H3){H3=1,Object.defineProperty(G3,\"__esModule\",{value:!0}),G3.Probe=void 0;const l=Jr.__importDefault(xe()),o=Ch(),s=Me(),c=be(),u=Oe(),d=Ae(),p=XL();G3.Probe=class{view({attrs:t}){const r=e=>{t.cfgMgr.setProbeEnabled(t.probe.id,e)};var e=t.probe,n=t.cfgMgr.getProbeEnableDependants(t.probe.id);const a=t.cfgMgr.isProbeEnabled(t.probe.id);var i=!(0,s.exists)(e.description)&&!(0,s.exists)(e.image)&&0===(e.settings??[]).length;return(0,l.default)(\".pf-probe\",{className:(0,c.classNames)(a&&\"enabled\",i&&\"compact\")},e.image&&(0,l.default)(\"img\",{src:(0,o.assetSrc)(\"assets/\"+e.image),onclick:()=>r(!a)}),(0,l.default)(p.Switch,{className:\"pf-probe__switch\",checked:a,disabled:0<n.length,title:0<n.length?\"Force-enabled due to \"+n.join(\",\"):\"\",oninput:e=>{r(e.target.checked)},label:e.title}),i?\"\":(0,l.default)(\"div\"+(e.image?\"\":\".extended-desc\"),e.description&&(0,l.default)(\".pf-probe__descr\",function(e){if(void 0===e)return[];var t=[];let r=0;for(const s of e.matchAll(/```(.*?)```/gs)){var n,[a,i]=s,o=s.index??0;o>r&&(n=e.slice(r,o),t.push((0,l.default)(\"div\",n))),t.push((0,l.default)(\"code\",i)),r=o+a.length}r<e.length&&t.push((0,l.default)(\"div\",e.slice(r)));return t}(e.description),e.docsLink&&(0,l.default)(u.Anchor,{icon:d.Icons.ExternalLink,href:e.docsLink},\"Docs\")),(0,l.default)(\".probe-config\",Object.values(t.probe.settings??{}).map(e=>e.render()))))}}}return G3}var q3,z3,W3,$3={},K3={};function Y3(){if(!q3){q3=1,Object.defineProperty(K3,\"__esModule\",{value:!0}),K3.CopyableLink=void 0;const r=Jr.__importDefault(xe()),n=bs(),a=Oe();K3.CopyableLink=class{view({attrs:e}){const t=e.url;return(0,r.default)(\"div\",(0,r.default)(a.Anchor,{href:t,title:\"Click to copy the URL into the clipboard\",target:\"_blank\",icon:e.noicon?void 0:\"content_copy\",onclick:e=>{e.preventDefault(),(0,n.copyToClipboard)(t)}},e.text??t))}}}return K3}function J3(){if(!z3){z3=1;{var t=$3;Object.defineProperty(t,\"__esModule\",{value:!0}),t.SHARE_SUBPAGE=void 0,t.shareRecordConfig=async function(e){confirm(\"This will generate a publicly-readable link to the current config which cannot be deleted. Continue?\")&&(e=JSON.stringify(e),await(e=new n.GcsUploader(e,{mimeType:\"application/json\"})).waitForCompletion(),e=e.uploadedUrl,e=(0,a.assertExists)(e.split(\"/\").pop()),(0,o.showModal)({title:\"Permalink\",content:(0,r.default)(i.CopyableLink,{url:`${self.location.origin}/#!/record/${t.SHARE_SUBPAGE}/`+e})}))};const r=Jr.__importDefault(xe()),n=iP(),a=Pe(),i=Y3(),o=Ke();t.SHARE_SUBPAGE=\"share\"}}return $3}var Q3,Z3={};function X3(){if(!Q3){Q3=1,Object.defineProperty(Z3,\"__esModule\",{value:!0}),Z3.stackSamplingRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"stack_sampling\",title:\"Stack sampling\",subtitle:\"Lightweight cpu profiling\",icon:\"full_stacked_bar_chart\",probes:[function(){const n={samplingFreq:new t.Slider({title:\"Sampling frequency\",cssClass:\".thin\",default:100,values:[1,10,50,100,250,500,1e3],unit:\"Hz\"}),procs:new r.Textarea({placeholder:\"Filters for processes to profile, one per line e.g.com.android.phone\\nlmkd\\ncom.android.webview:sandboxed_process*\"})};return{id:\"traced_perf\",title:\"Callstack sampling\",image:\"rec_profiling.png\",description:\"Periodically records the current callstack (chain of function calls) of processes.\",supportedPlatforms:[\"ANDROID\",\"LINUX\"],settings:n,genConfig:function(e){var t=n,r=(0,a.splitLinesNonEmpty)(t.procs.text);e.addDataSource(\"linux.perf\").perfEventConfig={timebase:{frequency:t.samplingFreq.value,timestampClock:i.default.PerfEvents.PerfClock.PERF_CLOCK_MONOTONIC},callstackSampling:{scope:0<r.length?{targetCmdline:r}:void 0}}}}}()]}};var e=Jr;const a=j(),i=e.__importDefault(dh()),t=$L(),r=o3()}return Z3}var eF,tF={},rF={};function nF(){return eF||(eF=1,Object.defineProperty(rF,\"__esModule\",{value:!0}),rF.TARGET_PLATFORMS=void 0,rF.TARGET_PLATFORMS=[{id:\"ANDROID\",name:\"Android\",icon:\"android\"},{id:\"CHROME\",name:\"Chrome\",icon:\"travel_explore\"},{id:\"CHROME_OS\",name:\"ChromeOS\",icon:\"laptop_chromebook\"},{id:\"LINUX\",name:\"Linux\",icon:\"dns\"}]),rF}var aF,iF,oF={};function sF(){if(!aF){aF=1,Object.defineProperty(oF,\"__esModule\",{value:!0}),oF.PreflightCheckRenderer=void 0;const r=Jr.__importDefault(xe()),t=Ei(),n=Ee(),a=Oe();oF.PreflightCheckRenderer=class{testTarget;results=new Array;allChecksCompleted=!1;numChecksFailed=0;constructor(e){this.testTarget=e}async runPreflightChecks(){this.allChecksCompleted=!1,this.numChecksFailed=0;for await(const t of this.testTarget.runPreflightChecks()){var e={...t,result:t.status};this.results.push(e),this.numChecksFailed+=t.status.ok?0:1,r.default.redraw()}return this.allChecksCompleted=!0,r.default.redraw(),0===this.numChecksFailed}renderIcon(){var e={filled:!0,className:\"preflight-checks-icon\"};return this.allChecksCompleted?0<this.numChecksFailed?(e.className+=\" ok\",(0,r.default)(n.Icon,{icon:\"report\",...e})):(e.className+=\" error\",(0,r.default)(n.Icon,{icon:\"check_circle\",...e})):(0,r.default)(t.Spinner)}renderTable(){return(0,r.default)(\"table.preflight-checks-table\",this.results.map(e=>(0,r.default)(\"tr\",(0,r.default)(\"td\",e.name),(0,r.default)(\"td\",void 0===e.result?(0,r.default)(t.Spinner):e.result.ok?(0,r.default)(\"span.ok\",(0,a.linkify)(e.result.value)):(0,r.default)(\"span.error\",(0,a.linkify)(e.result.error)),e.remediation&&(0,r.default)(\"div\",(0,r.default)(e.remediation))))))}}}return oF}function lF(){if(iF)return tF;iF=1,Object.defineProperty(tF,\"__esModule\",{value:!0}),tF.ObjToId=void 0,tF.targetSelectionPage=function(n){return{kind:\"GLOBAL_PAGE\",id:\"target\",icon:\"cable\",title:\"Target device\",subtitle:\"Live recording via USB/WebSocket\",render(){return(0,a.default)(f,{recMgr:n})},serialize(e){e.target={platformId:n.currentPlatform,transportId:n.currentProvider?.id,targetId:n.currentTarget?.id},e.autoOpenTrace=n.autoOpenTraceWhenTracingEnds},async deserialize(e){if(n.autoOpenTraceWhenTracingEnds=e.autoOpenTrace,void 0!==e.target.platformId){n.setPlatform(e.target.platformId);var t=n.getProvider(e.target.transportId??\"\");if(void 0!==t&&(await n.setProvider(t),void 0!==e.target.targetId))for(const r of await n.listTargets())r.id===e.target.targetId&&await n.setTarget(r)}}}};const a=Jr.__importDefault(xe()),e=bu(),r=nF(),i=Ee(),o=je(),n=Be(),t=Me(),s=sF(),l=Bl();var c=Le();const u=nc(),d=sm(),p=Oe();class f{view({attrs:t}){return[(0,a.default)(\"header\",\"Select platform\"),(0,a.default)(e.SegmentedButtons,{className:\"platform-selector\",options:r.TARGET_PLATFORMS.map(e=>({label:e.name,icon:e.icon})),selectedOption:r.TARGET_PLATFORMS.findIndex(e=>e.id===t.recMgr.currentPlatform),onOptionSelected:e=>{t.recMgr.setPlatform(r.TARGET_PLATFORMS[e].id)}}),[(0,a.default)(h,{recMgr:t.recMgr,key:t.recMgr.currentPlatform})]]}}class h{transportKeys=new T;view({attrs:e}){var t=[];for(const n of e.recMgr.listProvidersForCurrentPlatform()){var r=this.transportKeys.getKey(n);t.push([(0,a.default)(`input[type=radio][name=recordingProvider][id=${r}]`,{onchange:async()=>{await e.recMgr.setProvider(n),a.default.redraw()},checked:e.recMgr.currentProvider===n}),(0,a.default)(`label[for=${r}]`,(0,a.default)(i.Icon,{icon:n.icon}),(0,a.default)(\".title\",n.name),(0,a.default)(\".description\",(0,p.linkify)(n.description)))])}return[(0,a.default)(\"header\",\"Select transport\"),(0,a.default)(\"fieldset.record-transports\",...t),e.recMgr.currentProvider&&[(0,a.default)(m,{recMgr:e.recMgr,provider:e.recMgr.currentProvider,key:this.transportKeys.getKey(e.recMgr.currentProvider)})]]}}class m{targetIdMap=new T;checksRenderer;trash=new c.DisposableStack;targets=[];provider;recMgr;constructor({attrs:e}){this.recMgr=e.recMgr,this.provider=e.provider,this.checksRenderer=new s.PreflightCheckRenderer(e.provider),this.trash.use(e.provider.onTargetsChanged.addListener(()=>this.refreshTargets())),this.checksRenderer.runPreflightChecks().then(()=>this.refreshTargets()),this.recMgr.listTargets().then(e=>{this.targets=e,a.default.redraw()})}view({attrs:t}){const r=t.recMgr;return[this.checksRenderer.renderTable(),(0,a.default)(\"header\",\"Select target device\"),(0,a.default)(\".record-targets\",(0,a.default)(l.Select,{onchange:e=>{e=e.target.selectedIndex;r.setTarget(this.targets[e])}},...this.targets.map(e=>(0,a.default)(\"option\",{selected:r.currentTarget===e},e.name))),(0,a.default)(o.Button,{icon:\"refresh\",title:\"Refresh devices\",onclick:()=>{this.targetIdMap.clear(),this.refreshTargets()}}),r.currentTarget&&(0,a.default)(o.Button,{icon:r.currentTarget.connected?\"cancel\":\"power_off\",iconFilled:!0,disabled:!r.currentTarget.connected,title:r.currentTarget.connected?\"Disconnect the current device\":\"Device disconnected\",onclick:()=>r.currentTarget?.disconnect()}),t.provider.pairNewTarget&&(0,a.default)(o.Button,{label:\"Connect new device\",icon:\"add\",intent:n.Intent.Primary,variant:o.ButtonVariant.Filled,onclick:async()=>{var e=await t.provider.pairNewTarget();e&&r.setTarget(e),await this.refreshTargets()}})),r.currentTarget&&[(0,a.default)(g,{recMgr:t.recMgr,target:r.currentTarget,key:this.targetIdMap.getKey(r.currentTarget)})]]}onremove(){this.trash.dispose()}async refreshTargets(){this.recMgr.setProvider(this.provider),this.targets=await this.recMgr.listTargets(),a.default.redraw()}}class g{checksRenderer;constructor({attrs:e}){this.checksRenderer=new s.PreflightCheckRenderer(e.target),this.checksRenderer.runPreflightChecks()}view({attrs:e}){return[this.checksRenderer?.renderTable(),(0,a.default)(_,{recMgr:e.recMgr,target:e.target})]}}class _{view({attrs:t}){const e=t.recMgr.currentSession;var r=\"LONG_TRACE\"!==t.recMgr.recordConfig.traceConfig.mode,n=\"RECORDING\"===e?.state;return[(0,a.default)(\"header\",\"Tracing session\"),(0,a.default)(o.ButtonBar,(0,a.default)(o.Button,{label:\"Start tracing\",icon:\"not_started\",iconFilled:!0,className:\"start\",disabled:n||!r,onclick:()=>t.recMgr.startTracing().then(()=>a.default.redraw())}),(0,a.default)(o.Button,{label:\"Stop\",icon:\"stop\",className:\"stop\",iconFilled:!0,disabled:!n||!r,onclick:()=>e?.session?.stop().then(()=>a.default.redraw())}),(0,a.default)(o.Button,{label:\"Cancel\",icon:\"cancel\",className:\"cancel\",iconFilled:!0,disabled:!n||!r,onclick:()=>e?.session?.cancel().then(()=>a.default.redraw())}),(0,a.default)(d.Checkbox,{label:\"Open trace when done\",checked:t.recMgr.autoOpenTraceWhenTracingEnds,onchange:e=>{t.recMgr.autoOpenTraceWhenTracingEnds=Boolean(e.target.checked)}})),e?.error&&(0,a.default)(\"div\",e.error),e&&[(0,a.default)(y,{session:e,key:e.uuid})]]}}class y{session;trash=new c.DisposableStack;bufferUsagePct=\"N/A\";constructor({attrs:e}){this.session=e.session,this.trash.use(this.pollBufferState())}pollBufferState(){const e=window.setInterval(async()=>{var e=await this.session.session?.getBufferUsagePct();void 0!==e&&(this.bufferUsagePct=e+\" %\"),a.default.redraw()},1e3);return{[Symbol.dispose](){window.clearInterval(e)}}}view(){const e=this.session.isCompleted?this.session.session?.getTraceData():void 0;var t=this.getLogs(),r=this.session.eta;return(0,a.default)(\"table.session-status\",(0,a.default)(\"tr\",(0,a.default)(\"td\",\"State\"),(0,a.default)(\"td\",this.session.state)),(0,a.default)(\"tr\",(0,a.default)(\"td\",\"Buffer usage\"),(0,a.default)(\"td\",this.bufferUsagePct)),r&&(0,a.default)(\"tr\",(0,a.default)(\"td\",\"ETA\"),(0,a.default)(\"td\",r)),e&&(0,a.default)(\"tr\",(0,a.default)(\"td\",\"Trace file\"),(0,a.default)(\"td\",Math.round(e.length/1e3).toLocaleString()+\" KB\",this.session.isCompressed&&\" (compressed)\",(0,a.default)(o.Button,{label:\"Open\",icon:\"file_open\",onclick:()=>this.session.openTrace()}),(0,a.default)(o.Button,{label:\"Download\",icon:\"download\",onclick:()=>(0,u.download)({fileName:this.session.fileName,content:e})}))),\"\"!=t&&(0,a.default)(\"tr\",(0,a.default)(\"td\",\"Logs\"),(0,a.default)(\"td\",(0,a.default)(\"pre.logs\",t))))}onremove(){this.trash.dispose()}getLogs(){let e=\"\";for(const r of this.session.session?.logs??[]){var t=r.timestamp.toTimeString().substring(0,8);e+=`${t}: ${r.message}\\n`}return e}}class T{map=new WeakMap;lastId=0;getKey(e){return(0,t.getOrCreate)(this.map,e,()=>\"obj_\"+ ++this.lastId)}clear(){this.map=new WeakMap}}return tF.ObjToId=T,tF}var cF,uF={},dF={};var pF,fF,hF={};function mF(){if(fF)return uF;fF=1,Object.defineProperty(uF,\"__esModule\",{value:!0}),uF.CurrentTracingSession=uF.RecordingManager=void 0;const r=Pe(),n=Tl();var e,t,a,i=function(){if(!cF){cF=1,Object.defineProperty(dF,\"__esModule\",{value:!0}),dF.ConfigManager=void 0;const s=Pe(),i=Me(),n=j3(),a=HL();dF.ConfigManager=class{probesById=new Map;_traceConfig=new a.TraceConfigBuilder;enabledProbes=new Map;indirectlyEnabledProbes=new Map;get traceConfig(){return this._traceConfig}registerProbes(e){for(const t of e)(0,s.assertFalse)(this.probesById.has(t.id)),this.probesById.set(t.id,t)}setProbeEnabled(e,t){var r=(0,s.assertExists)(this.probesById.get(e));this.enabledProbes.set(e,t);for(const a of r.dependencies??[]){(0,s.assertTrue)(this.probesById.has(a));var n=(0,i.getOrCreate)(this.indirectlyEnabledProbes,a,()=>new Set);t?n.add(e):n.delete(e)}}isProbeEnabled(e){var t=!0===this.enabledProbes.get(e),e=Boolean(this.indirectlyEnabledProbes.get(e)?.size);return t||e}getProbeEnableDependants(e){return Array.from(this.indirectlyEnabledProbes.get(e)??[]).map(e=>(0,s.assertExists)(this.probesById.get(e)).title)}genTraceConfig(e){this._traceConfig.dataSources.clear();for(const t of this._traceConfig.buffers.keys())t!==a.DEFAULT_BUFFER_ID&&this._traceConfig.buffers.delete(t);for(const r of this.getProbesOrderedByDep(!0))(0,n.supportsPlatform)(r,e)&&r.genConfig(this._traceConfig);return this._traceConfig.toTraceConfig()}serializeProbes(){return Object.fromEntries(this.getProbesOrderedByDep(!0).map(e=>[e.id,{settings:Object.fromEntries(Object.entries(e.settings??{}).map(([e,t])=>[e,t.serialize()]))}]))}deserializeProbes(a){this.enabledProbes.clear(),this.indirectlyEnabledProbes.clear(),this.getProbesOrderedByDep().forEach(e=>{var t=a[e.id];if(void 0!==t&&void 0!==t.settings&&(this.setProbeEnabled(e.id,!0),void 0!==e.settings))for(var[r,n]of Object.entries(t.settings))r in e.settings&&e.settings[r].deserialize(n)})}getProbesOrderedByDep(n=!1){const a=[],i=new Set,o=e=>{if(!n||this.isProbeEnabled(e)){var t=(0,s.assertExists)(this.probesById.get(e));if(!a.includes(t)){if(i.has(e))throw new Error(\"Cycle detected in probe \"+e);i.add(e);for(const r of t.dependencies??[])o(r);a.push(t)}}};for(const e of this.probesById.keys())o(e);return a}}}return dF}();pF||(pF=1,e=hF,Object.defineProperty(e,\"__esModule\",{value:!0}),e.RECORD_PLUGIN_SCHEMA=e.SAVED_SESSION_SCHEMA=e.TARGET_SCHEMA=e.RECORD_SESSION_SCHEMA=e.PROBES_SCHEMA=void 0,t=Ne(),a=nF(),e.PROBES_SCHEMA=t.z.record(t.z.string(),t.z.object({settings:t.z.record(t.z.string(),t.z.unknown()).default({})})).default({}),e.RECORD_SESSION_SCHEMA=t.z.object({mode:t.z.enum([\"STOP_WHEN_FULL\",\"RING_BUFFER\",\"LONG_TRACE\"]).default(\"STOP_WHEN_FULL\"),bufSizeKb:t.z.number().default(65536),durationMs:t.z.number().default(1e4),maxFileSizeMb:t.z.number().default(500),fileWritePeriodMs:t.z.number().default(2500),compression:t.z.boolean().default(!1),probes:e.PROBES_SCHEMA}).default({}),e.TARGET_SCHEMA=t.z.object({platformId:t.z.enum(a.TARGET_PLATFORMS.map(e=>e.id)).optional(),transportId:t.z.string().optional(),targetId:t.z.string().optional()}).default({}),e.SAVED_SESSION_SCHEMA=t.z.object({name:t.z.string(),config:e.RECORD_SESSION_SCHEMA}),e.RECORD_PLUGIN_SCHEMA=t.z.object({target:e.TARGET_SCHEMA,autoOpenTrace:t.z.boolean().default(!0),lastSession:e.RECORD_SESSION_SCHEMA.default({}),savedSessions:t.z.array(e.SAVED_SESSION_SCHEMA).default([])}).default({}));const o=hF;var s=ln();const l=Fe(),c=\"recordPlugin\";uF.RecordingManager=class{app;pages=new Map;providers=new Array;platform=\"ANDROID\";provider;target;_tracingSession;recordConfig=new i.ConfigManager;autoOpenTraceWhenTracingEnds=!0;constructor(e){this.app=e}registerPage(...e){for(const t of e)(0,r.assertTrue)(!this.pages.has(t.id)||this.pages.get(t.id)===t),this.pages.set(t.id,t),\"PROBES_PAGE\"===t.kind&&this.recordConfig.registerProbes(t.probes)}registerProvider(e){(0,r.assertFalse)(this.providers.includes(e)),this.providers.push(e)}get currentPlatform(){return this.platform}setPlatform(e){this.platform=e,this.provider=void 0,this.target=void 0;e=this.listProvidersForCurrentPlatform();1===e.length&&(this.provider=e[0])}listProvidersForCurrentPlatform(){return this.providers.filter(e=>e.supportedPlatforms.includes(this.platform))}get currentProvider(){return this.provider}getProvider(t){return this.providers.find(e=>e.id===t)}async setProvider(e){e.supportedPlatforms.includes(this.currentPlatform)&&(e=await(this.provider=e).listTargets(this.currentPlatform),this.target&&e.includes(this.target)||(this.target=0<e.length?e[0]:void 0,this.app.raf.scheduleFullRedraw()))}async listTargets(){return void 0===this.provider?[]:this.provider.listTargets(this.currentPlatform)}get currentSession(){return this._tracingSession}setTarget(e){this.target=e}get currentTarget(){return this.target}genTraceConfig(){return this.recordConfig.genTraceConfig(this.currentPlatform)}async startTracing(){void 0!==this._tracingSession&&(this._tracingSession.session?.cancel(),this._tracingSession=void 0);var e=this.genTraceConfig(),e=new u(this,e);return this._tracingSession=e}serializeSession(){var e=o.RECORD_SESSION_SCHEMA.parse({});for(const t of this.pages.values())\"SESSION_PAGE\"===t.kind&&t.serialize(e);return e.probes=this.recordConfig.serializeProbes(),e}loadSession(e){for(const t of this.pages.values())\"SESSION_PAGE\"===t.kind&&t.deserialize(e);this.recordConfig.deserializeProbes(e.probes)}persistIntoLocalStorage(){var e=o.RECORD_PLUGIN_SCHEMA.parse({});e.lastSession=this.serializeSession();for(const r of this.pages.values())\"GLOBAL_PAGE\"===r.kind&&r.serialize(e);var t=JSON.stringify(e);localStorage.setItem(c,t)}restorePluginStateFromLocalstorage(){var e=localStorage.getItem(c)??\"{}\";let t;try{t=JSON.parse(e)}catch(e){console.error(\"Record plugin: JSON parse failed\",e),t={}}e=o.RECORD_PLUGIN_SCHEMA.safeParse(t);if(!e.success)throw new Error(\"Record plugin: deserialization failed\",e.error);var r=e.data;for(const n of this.pages.values())\"GLOBAL_PAGE\"===n.kind&&n.deserialize(r);void 0!==r.lastSession&&this.loadSession(r.lastSession)}restoreSessionFromJson(e){let t;try{t=JSON.parse(e)}catch(e){return(0,n.errResult)(\"JSON parser error: \"+e.message)}e=o.RECORD_SESSION_SCHEMA.safeParse(t);return e.success?(this.loadSession(e.data),(0,n.okResult)(void 0)):(0,n.errResult)(\"Deserialization error: \"+e.error)}clearSession(){var e=o.RECORD_SESSION_SCHEMA.parse({});return this.loadSession(e)}};class u{error;session;uuid=(0,s.uuidv4)();fileName;isCompressed;_expectedEndTime;recMgr;autoOpenedTriggered=!1;constructor(e,t){this.recMgr=e;var r=new Date,n=\"\"+r.getFullYear()+r.getMonth()+r.getDay(),r=\"\"+r.getHours()+r.getMinutes()+r.getSeconds(),a=e.currentPlatform.toLowerCase();this.fileName=a+`-${n}-${r}.pftrace`,this.isCompressed=0!==t.compressionType,void 0===e.currentTarget?this.error=\"No target selected\":(e.currentTarget.emitsCompressedtrace&&(this.fileName+=\".gz\",this.isCompressed=!0),this.start(t,e.currentTarget))}async start(e,t){t=await t.startTracing(e);if(this.recMgr.app.raf.scheduleFullRedraw(),t.ok){const r=this.session=t.value;0<e.durationMs&&(this._expectedEndTime=performance.now()+e.durationMs),r.onSessionUpdate.addListener(()=>{this.recMgr.app.raf.scheduleFullRedraw(),\"FINISHED\"===r.state&&this.recMgr.autoOpenTraceWhenTracingEnds&&!this.autoOpenedTriggered&&(this.autoOpenedTriggered=!0,this.openTrace())})}else this.error=t.error}get state(){return void 0!==this.error?\"Error: \"+this.error:void 0===this.session?\"Initializing\":this.session.state}get eta(){if(void 0!==this._expectedEndTime){let e=Math.max(this._expectedEndTime-performance.now(),0);return[\"FINISHED\",\"ERRORED\"].includes(this.session?.state??\"\")&&(e=0),new l.Timecode(l.Time.fromMillis(e)).dhhmmss}}openTrace(){var e=this.session?.getTraceData();void 0!==e&&this.recMgr.app.openTraceFromBuffer({buffer:e,title:this.fileName,fileName:this.fileName})}get isCompleted(){return\"FINISHED\"===this.session?.state}get inProgress(){return void 0===this.session&&void 0===this.error||\"RECORDING\"===this.session?.state||\"STOPPING\"===this.session?.state}}return uF.CurrentTracingSession=u,uF}var gF,_F,yF,TF={},vF={},bF={};function EF(){if(!gF){gF=1,Object.defineProperty(bF,\"__esModule\",{value:!0}),bF.TracedWebsocketTarget=void 0;const n=Jr.__importDefault(dh()),a=Tl(),t=_x(),r=Yx(),i=Nx(),o=jx(),s=Cx(),l=Me();var e=aL();bF.TracedWebsocketTarget=class{wsUrl;kind=\"LIVE_RECORDING\";platform=\"LINUX\";transportType=\"WebSocket\";mgmtConsumer=new e.AsyncLazy;constructor(e){this.wsUrl=e}get id(){return this.wsUrl}get name(){return this.wsUrl}get connected(){return this.mgmtConsumer.value?.connected??!1}async*runPreflightChecks(){const e=await this.connectIfNeeded();if(yield{name:\"WebSocket connection\",status:e.ok?(0,a.okResult)(\"Connected\"):e},this.connected){const r=await this.getServiceState();var t;yield{name:\"Traced version\",status:r.ok?(0,a.okResult)(r.value.tracingServiceVersion??\"N/A\"):r},void 0!==r&&(yield{name:\"Traced state\",status:r.ok?(t=r.value,(0,a.okResult)(`#producers: ${t.producers?.length??\"N/A\"}, `+`#datasources: ${t.dataSources?.length??\"N/A\"}, `+\"#sessions: \"+(t.numSessionsStarted??\"N/A\"))):r})}}async connectIfNeeded(){return this.mgmtConsumer.getOrCreate(()=>this.createConsumerIpcChannel())}disconnect(){this.mgmtConsumer.value?.close(),this.mgmtConsumer.reset()}async getServiceState(){var e,t,r=await this.connectIfNeeded();return r.ok?(t=r.value,e=new n.default.QueryServiceStateRequest({}),t=await t.invokeStreaming(\"QueryServiceState\",e).promise,(0,l.exists)(t.serviceState)?(0,a.okResult)(t.serviceState):(0,a.errResult)(\"Failed to decode QueryServiceStateResponse\")):r}async startTracing(e){var t,r=await this.createConsumerIpcChannel();return r.ok?(t=r.value,t=new i.ConsumerIpcTracingSession(t,e),(0,a.okResult)(t)):r}async createConsumerIpcChannel(){var e=await t.AsyncWebsocket.connect(this.wsUrl);return null==e?(0,a.errResult)(`Failed to connect ${this.wsUrl}. `+(0,r.websocketInstructions)()):(e=new o.WebSocketStream(e.release()),e=await s.TracingProtocol.create(e),(0,a.okResult)(e))}}}return bF}function SF(){if(_F)return vF;_F=1,Object.defineProperty(vF,\"__esModule\",{value:!0}),vF.showTracedConnectionManagementDialog=async function(e){const t=(0,s.defer)(),r=\"TracedConnectioManagementDialog\",n=((0,i.showModal)({key:r,title:\"Connect to remote tracing service\",content:()=>(0,a.default)(l,{provider:e,resultPromise:t})}).then(()=>t.resolve(void 0)),await t);return(0,i.closeModal)(r),n};const a=Jr.__importDefault(xe()),r=EF(),n=sF(),i=Ke(),o=je(),s=Ja();class l{target;checks;view({attrs:e}){const r=e.provider;return(0,a.default)(\".pf-record-page\",(0,a.default)(\"div\",\"Forward port 8037 with ssh from the local host to the remote host where traced is running and invoke websocket_bridge.\"),(0,a.default)(\"br\"),(0,a.default)(\"code\",\"ssh -L8037:localhost:8037 <remote-machine> 'websocket_bridge'\"),(0,a.default)(\"header\",\"Connect a new target\"),(0,a.default)(\"div\",(0,a.default)(\"input\",{placeholder:\"remote_machine:8037\",onchange:e=>this.testConnection(e.target.value??\"\")}),(0,a.default)(o.Button,{icon:\"add\",onclick:()=>{void 0!==this.target&&r.targets.set(this.target.wsUrl,this.target),e.resultPromise.resolve(this.target)}})),this.checks&&this.checks.renderTable(),(0,a.default)(\"header\",\"Manage targets\"),(0,a.default)(\"table\",...Array.from(r.targets.entries()).map(([e,t])=>(0,a.default)(\"tr\",(0,a.default)(\"td\",(0,a.default)(o.Button,{icon:\"delete\",onclick:()=>{t.disconnect(),r.targets.delete(e),r.onTargetsChanged.notify()}})),(0,a.default)(\"td\",(0,a.default)(\"code\",e))))))}testConnection(e){this.target&&this.target.disconnect(),this.target=void 0,this.checks=void 0;let t;if(e.match(/^ws(s?):\\/\\//))t=e;else if(e.match(/^[^:/]+:\\d+$/))t=`ws://${e}/traced`;else{if(!e.match(/^[^:/]+$/))return;t=`ws://${e}:8037/traced`}this.target=new r.TracedWebsocketTarget(t),this.checks=new n.PreflightCheckRenderer(this.target),this.checks.runPreflightChecks()}}return vF}var AF,OF={};function CF(){if(AF)return OF;AF=1,Object.defineProperty(OF,\"__esModule\",{value:!0}),OF.savedConfigsPage=function(e){const t=new Array;return{kind:\"GLOBAL_PAGE\",id:\"configs\",icon:\"save\",title:\"Saved configs\",subtitle:\"Save, restore and export configs\",render(){return(0,n.default)(s,{recMgr:e,savedConfigs:t})},serialize(e){e.savedSessions=[...t]},deserialize(e){t.splice(0),t.push(...e.savedSessions)}}};const n=Jr.__importDefault(xe()),a=Pe(),e=J3(),i=je(),t=Ae(),r=Vl(),o=Be();class s{newConfigName=\"\";recMgr;savedConfigs;constructor({attrs:e}){this.recMgr=e.recMgr,this.savedConfigs=e.savedConfigs}view(){var e=0<this.newConfigName.length&&this.savedConfigs.every(e=>e.name!==this.newConfigName);return[(0,n.default)(\"header\",\"Save and load configurations\"),(0,n.default)(\".input-config\",[(0,n.default)(r.TextInput,{value:this.newConfigName,placeholder:\"Title for config\",oninput:e=>{this.newConfigName=e.target.value}}),(0,n.default)(i.Button,{className:\"config-button\",disabled:!e,variant:i.ButtonVariant.Filled,title:e?\"Save current config\":\"Duplicate name, saving disabled\",onclick:()=>{this.savedConfigs.push({name:this.newConfigName,config:this.recMgr.serializeSession()}),this.newConfigName=\"\"},icon:t.Icons.Save})]),this.savedConfigs.map(e=>this.renderSavedSessions(e))]}renderSavedSessions(t){const r=this;return(0,n.default)(\".config\",[(0,n.default)(\"span.title-config\",t.name),(0,n.default)(i.ButtonBar,[(0,n.default)(i.Button,{className:\"config-button\",title:\"Apply configuration settings\",onclick:()=>{this.recMgr.loadSession(t.config)},icon:\"file_upload\"}),(0,n.default)(i.Button,{className:\"config-button\",title:\"Overwrite configuration with current settings\",onclick:()=>{var e=`Overwrite config \"${t.name}\" with current settings?`;confirm(e)&&((0,a.assertExists)(this.savedConfigs.find(e=>e.name===t.name)).config=this.recMgr.serializeSession())},icon:\"save\"}),(0,n.default)(i.Button,{className:\"config-button\",title:\"Generate a shareable URL for the saved config\",onclick:()=>(0,e.shareRecordConfig)(t.config),icon:\"share\"}),(0,n.default)(i.Button,{className:\"config-button\",title:\"Remove configuration\",intent:o.Intent.Danger,onclick:()=>{var e=this.savedConfigs.findIndex(e=>e.name===t.name);e<0||r.savedConfigs.splice(e,1)},icon:\"delete\"})])])}}return OF}var wF,kF,IF={},RF={},NF={};function MF(){if(!wF){wF=1,Object.defineProperty(NF,\"__esModule\",{value:!0}),NF.showPopupWindow=function(e){const t=window.open(e.url,\"_blank\",`width=${e.width??500},height=${e.height??500},`+\"scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no\"),r=(0,i.defer)();if(null===t)r.resolve(!1);else{const n=performance.now()+(e.timeoutMs??o),a=setInterval(()=>{t.closed&&(clearInterval(a),r.resolve(!0)),performance.now()>=n&&(clearInterval(a),r.resolve(!1))},500)}return r};const i=Ja(),o=3e4}return NF}var PF,DF,xF,LF={};function FF(){if(!DF){DF=1,Object.defineProperty(IF,\"__esModule\",{value:!0}),IF.WebDeviceProxyTargetProvider=void 0;const i=Tl(),o=_x();var e,t,r=wf();const s=function(){if(!kF){kF=1,Object.defineProperty(RF,\"__esModule\",{value:!0}),RF.WebDeviceProxyTarget=void 0;const n=Tl(),t=Px(),r=Mx(),a=Qx();var e=aL();const i=MF(),o=Ja();RF.WebDeviceProxyTarget=class{wsUrl;devJson;kind=\"LIVE_RECORDING\";platform=\"ANDROID\";adbDevice=new e.AsyncLazy;id;constructor(e,t){this.wsUrl=e,this.devJson=t,this.id=this.devJson.serialNumber,this.updateWdpState(t)}updateWdpState(e){this.devJson=e}deviceReady(){var e=`proxyStatus=${this.devJson.proxyStatus} `+\" adbStatus=\"+this.devJson.adbStatus;return(\"ADB\"===this.devJson.proxyStatus&&\"DEVICE\"===this.devJson.adbStatus?(0,n.okResult):(0,n.errResult))(e)}get name(){return\"ADB\"===this.devJson.proxyStatus?\"DEVICE\"===this.devJson.adbStatus?`${this.devJson.adbProps?.model??\"?\"} [${this.id}]`:`${this.devJson.adbStatus} [${this.id}]`:`${this.devJson.proxyStatus} [${this.id}]`}get connected(){return this.adbDevice.value?.connected??!1}async*runPreflightChecks(){await this.connectIfNeeded(),yield{name:\"Web Device Proxy\",status:this.deviceReady()},void 0!==this.adbDevice.value&&(yield*(0,t.checkAndroidTarget)(this.adbDevice.value))}async connectIfNeeded(){return this.adbDevice.getOrCreate(async()=>{for(let e=0;e<2;e++){if(\"PROXY_UNAUTHORIZED\"===this.devJson.proxyStatus){if(!await(0,i.showPopupWindow)({url:this.devJson.approveUrl}))return(0,n.errResult)(\"Enable popups and try again\");const r=(0,o.defer)();setTimeout(()=>r.resolve(),250),await r}var t=this.deviceReady();return t.ok?a.AdbWebsocketDevice.connect(this.wsUrl,this.id,\"WEB_DEVICE_PROXY\"):t}return(0,n.errResult)(\"WDP authorization failed. Follow the WDP popup, authorize access and try again\")})}disconnect(){this.adbDevice.value?.close(),this.adbDevice.reset()}async getServiceState(){return void 0===this.adbDevice.value?(0,n.errResult)(\"WebSocket transport disconnected\"):(0,r.getAdbTracingServiceState)(this.adbDevice.value)}async startTracing(e){var t=await this.connectIfNeeded();return t.ok?(0,r.createAdbTracingSession)(t.value,e):t}}}return RF}(),l=MF(),c=(PF||(PF=1,Object.defineProperty(LF,\"__esModule\",{value:!0}),LF.WDP_TRACK_DEVICES_SCHEMA=void 0,t=(e=Ne()).z.object({serialNumber:e.z.string()}).and(e.z.union([e.z.object({proxyStatus:e.z.literal(\"ADB\"),adbStatus:e.z.string(),adbProps:e.z.record(e.z.string(),e.z.string()).optional()}),e.z.object({proxyStatus:e.z.literal(\"PROXY_UNAUTHORIZED\"),adbStatus:e.z.string(),approveUrl:e.z.string()})])),LF.WDP_TRACK_DEVICES_SCHEMA=e.z.object({error:e.z.object({type:e.z.string(),message:e.z.string(),approveUrl:e.z.string().optional()}).optional(),device:t.array().optional(),version:e.z.string().optional()})),LF),a=Yx();var n=aL();IF.WebDeviceProxyTargetProvider=class{id=\"adb_wdp\";name=\"ADB + WebDeviceProxy\";description=\"This option uses the adbd server and can co-exist with other adb-based tools. Requires https://tools.google.com/dlpage/android_web_device_proxy\\nGoogle employees: see go/web-device-proxy\";icon=\"corporate_fare\";supportedPlatforms=[\"ANDROID\"];onTargetsChanged=new r.EvtSource;targets=new Map;trackDevicesConn=new n.AsyncLazy;async*runPreflightChecks(){var e=await this.connectIfNeeded();yield{name:\"Web Device Proxy\",status:e.ok?(0,i.okResult)(\"\"+e.value.wdpVersion):e},e.ok&&(yield{name:\"List devices\",status:(0,i.okResult)(this.targets.size+\" devices found\")})}async listTargets(){return await this.connectIfNeeded(),Array.from(this.targets.values())}connectIfNeeded(){return this.trackDevicesConn.getOrCreate(async()=>{var t=\"ws://127.0.0.1:9167/track-devices-json\";for(let e=0;e<2;e++){if(void 0===(a=await o.AsyncWebsocket.connect(t)))return(0,i.errResult)(`Failed to connect to ${t}. WDP doesn't seem to be running.`+\"Follow the instructions on go/web-device-proxy\");var r=await a.waitForString(),n=JSON.parse(r),n=c.WDP_TRACK_DEVICES_SCHEMA.safeParse(n);if(!n.success)return(0,i.errResult)(`Failed to parse ${r}: `+n.error);var a,r=n.data;if(\"ORIGIN_NOT_ALLOWLISTED\"!==r.error?.type||void 0===r.error.approveUrl)return void 0!==r.error?(0,i.errResult)(r.error.message??\"Unknown WDP Error\"):((n=a.release()).onclose=()=>this.destroyTrackDevicesConnection(),n.onerror=()=>this.destroyTrackDevicesConnection(),n.onmessage=e=>{var t=c.WDP_TRACK_DEVICES_SCHEMA.safeParse(JSON.parse(e.data));t.success?this.onTrackDevicesResponse(t.data):console.error(`Invalid WDP response ${e.data} : `+t.error)},a={wdpVersion:r.version??\"N/A\",ws:n},this.onTrackDevicesResponse(r),(0,i.okResult)(a));if(!1===await(0,l.showPopupWindow)({url:r.error.approveUrl}))return(0,i.errResult)(\"You need to enable popups and try again\")}return(0,i.errResult)(\"Failed all attempts to authenticate on WDP.You must click allow on the popup to use WDP.\")})}destroyTrackDevicesConnection(){var e=this.trackDevicesConn.value?.ws;this.trackDevicesConn.reset(),e&&(0,a.disposeWebsocket)(e)}onTrackDevicesResponse(e){if(void 0!==e.error)this.destroyTrackDevicesConnection();else{var t,r,n,a,i=new Map((e.device??[]).map(e=>[e.serialNumber,e]));for([t,r]of this.targets.entries())i.has(t)||(r.disconnect(),this.targets.delete(t));for([n,a]of i.entries()){var o=this.targets.get(n);void 0!==o?o.updateWdpState(a):(o=new s.WebDeviceProxyTarget(\"ws://127.0.0.1:9167/adb-json\",a),this.targets.set(n,o))}this.onTargetsChanged.notify()}}}}return IF}function UF(){if(!xF){xF=1,Object.defineProperty(px,\"__esModule\",{value:!0});var e=Jr;const r=function(){if(!tL){tL=1,Object.defineProperty(fx,\"__esModule\",{value:!0}),fx.AdbWebsocketTargetProvider=void 0;const l=Jr,r=Tl(),c=Me(),u=_x(),o=iL(),d=Jx();var e=wf();const n=Yx();fx.AdbWebsocketTargetProvider=class{id=\"adb_websocket\";name=\"ADB + WebSocket\";description=\"This option uses the adbd server and can co-exist with other adb-based tools. Requires launching the websocket_bridge on the host.\";icon=\"lan\";supportedPlatforms=[\"ANDROID\"];wsHost=\"127.0.0.1:8037\";onTargetsChanged=new e.EvtSource;targets=new Map;async*runPreflightChecks(){yield{name:\"WebSocket connection\",status:await(async()=>{var t={stack:[],error:void 0,hasError:!1};try{return l.__addDisposableResource(t,await u.AsyncWebsocket.connect(this.wsUrl),!1)?(0,r.okResult)(\"Connected\"):(0,r.errResult)(`Failed to connect ${this.wsUrl}. `+(0,n.websocketInstructions)(\"ANDROID\"))}catch(e){t.error=e,t.hasError=!0}finally{l.__disposeResources(t)}})()}}async listTargets(){return await this.refreshTargets(),Array.from(this.targets.values())}async refreshTargets(){var e,t,r,n,a,i=await this.listAdbdDevices();for([e,t]of this.targets.entries())i.has(e)||(t.disconnect(),this.targets.delete(e));for([r,n]of i.entries())this.targets.has(r)||(a=new o.AdbWebsocketTarget(this.wsUrl,r,n),this.targets.set(r,a))}async listAdbdDevices(){var t={stack:[],error:void 0,hasError:!1};try{var e=new Map,r=l.__addDisposableResource(t,await u.AsyncWebsocket.connect(this.wsUrl),!1);if(r){var n,a,i,o=await(0,d.adbCmdAndWait)(r,\"host:devices-l\",!0);if(o.ok)for(const s of o.value.trimEnd().split(\"\\n\"))\"\"!==s&&(n=s.match(/^([^\\s]+)\\s+.*model:([^ ]+)/),(0,c.exists)(n)?(a=n[1],i=n[2],e.set(a,i)):console.warn(\"Could not parse ADB device\",s))}return e}catch(e){t.error=e,t.hasError=!0}finally{l.__disposeResources(t)}}get wsUrl(){return`ws://${this.wsHost}/adb`}}}return fx}(),n=RL(),a=function(){if(!PL){PL=1,Object.defineProperty(DL,\"__esModule\",{value:!0}),DL.ChromeExtensionTargetProvider=void 0;var e=wf(),t=FL();DL.ChromeExtensionTargetProvider=class{id=\"chrome_extension\";name=\"Chrome Tracing extension\";icon=\"extension\";description=\"Chrome using extension\";supportedPlatforms=[\"CHROME\",\"CHROME_OS\"];onTargetsChanged=new e.EvtSource;target=new t.ChromeExtensionTarget;async*runPreflightChecks(){}async listTargets(e){return this.target.platform=e,[this.target]}getChromeCategories(){return this.target.getChromeCategories()}}}return DL}(),i=t3(),o=s3(),s=u3(),l=f3(),c=g3(),u=O3(),d=k3(),p=(I3||(I3=1,Object.defineProperty(R3,\"__esModule\",{value:!0}),R3.gpuRecordSection=function(){return{kind:\"PROBES_PAGE\",id:\"gpu\",title:\"GPU\",subtitle:\"GPU Frequency, memory\",icon:\"aspect_ratio\",probes:[{id:\"gpu_frequency\",image:\"rec_cpu_freq.png\",title:\"GPU frequency\",description:\"Records gpu frequency via ftrace\",supportedPlatforms:[\"ANDROID\",\"LINUX\",\"CHROME_OS\"],genConfig:function(e){e.addFtraceEvents(\"power/gpu_frequency\")}},{id:\"gpu_memory\",image:\"rec_gpu_mem_total.png\",title:\"GPU memory\",description:\"Allows to track per process and global total GPU memory usages. (Available on recent Android 12+ kernels)\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addDataSource(\"android.gpu.memory\"),e.addFtraceEvents(\"gpu_mem/gpu_mem_total\")}},{id:\"gpu_work_period\",title:\"GPU work period\",description:\"Allows to track per package GPU work.(Available on recent Android 14+ kernels)\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addFtraceEvents(\"power/gpu_work_period\")}},{id:\"gpu_renderstages\",title:\"GPU Render Stages\",description:\"Records GPU render stage events. To check if your device supports this feature run:```adb shell getprop graphics.gpu.profiler.support```To enable the event producer, run:```adb shell setprop debug.graphics.gpu.profiler.perfetto 1```\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addDataSource(\"gpu.renderstages\",\"default\")}},{id:\"gpu_mali_counters\",title:\"Mali GPU Counters\",description:\"Records Mali GPU performance counters (Available on Valhall+).To enable the event producer, run: ```adb shell gpu_counter_producer```\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addDataSource(\"gpu.counters\",\"default\").gpuCounterConfig={counterPeriodNs:1e5,counterIds:[1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,46,47,48,49,50,51,52,53,54,55,58,59,60,82,83,84,85,86,87,88,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,151,152,153,154,156,157,159,160,161,162,163,164,166,167,168,170,172,173,174,175,176,177,178,179,181,182,183,184,185,186,187,188,189,190,191,192,193,196,198,199,200,201,202,203,204,205,207,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,235,236,241,242,243,244,245,246,247,253,257,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,285,286,287,288,289,290,291,292,293,294,295,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,323,324,347,348,349,461,544,65535,65536,65538,65541,65542,65543,65544,65545,65546,65547,65548,65549,65550,65551,65552,65553,65554,65555,65556,65557,65560,65562,65565,65566,65567,65569,65570,65572,65575,65577,65578,65579,65580,65581,65582,65583,65584,65585,65586,65588,65589,65591,65593,65594,65596,65597,65598,65599,65601,65602,65603,65609,65618,65619,65620,65626,65627,65628,65629,65630,65631,65632,65633,65634,65635,65636,65637,65638,65639,65641,65642,65643,65644,65645,65646,65653,65654,65655,65658,65659,65660,65664,65665,65666,65667,65668,65671,65672,65673]}}},{id:\"gpu_mali_fence_events\",title:\"Mali Fence Events\",description:\"Records Mali fence events (Available on Valhall+).\",supportedPlatforms:[\"ANDROID\"],genConfig:function(e){e.addDataSource(\"linux.ftrace\",\"default\").ftraceConfig={ftraceEvents:[\"mali/mali_KCPU_FENCE_SIGNAL\",\"mali/mali_KCPU_FENCE_WAIT_END\",\"mali/mali_KCPU_FENCE_WAIT_START\"]}}}]}}),R3),f=P3(),h=L3(),m=function(){if(W3)return U3;W3=1,Object.defineProperty(U3,\"__esModule\",{value:!0}),U3.RecordPageV2=void 0;const s=Jr.__importDefault(xe()),l=Ee(),c=j3(),t=V3(),a=je(),u=be(),r=Ke(),n=iP(),i=Me(),o=J3(),d=Kl(),p=Be(),f=Ae(),h=mc(),m=Oe();U3.RecordPageV2=class{recMgr;subpage=\"target\";persistTimer=void 0;constructor({attrs:e}){this.recMgr=e.getRecordingManager(),e.subpage&&e.subpage.startsWith(\"/\"+o.SHARE_SUBPAGE)&&this.loadShared(e.subpage.substring(o.SHARE_SUBPAGE.length+2))}view({attrs:e}){void 0===this.persistTimer&&(this.persistTimer=window.setTimeout(()=>{this.recMgr.persistIntoLocalStorage(),this.persistTimer=void 0},1e3)),this.subpage=(0,i.exists)(e.subpage)&&0<e.subpage.length?e.subpage.substring(1):\"target\";return(0,s.default)(\".pf-record-page\",(0,s.default)(h.Stack,{className:\"pf-record-page__container\"},\"LONG_TRACE\"===this.recMgr.recordConfig.traceConfig.mode&&(0,s.default)(d.Callout,{intent:p.Intent.Warning,icon:f.Icons.Warning},`\n              Recording in long trace mode through the UI is not supported.\n              Please copy the command and `,(0,s.default)(m.Anchor,{href:\"https://perfetto.dev/docs/quickstart/android-tracing#perfetto-cmdline\",target:\"_blank\"},\"collect the trace using ADB.\")),(0,s.default)(\".pf-record-page__container-content\",this.renderMenu(),this.renderSubPage())))}onremove(){window.clearTimeout(this.persistTimer),this.recMgr.persistIntoLocalStorage()}renderSubPage(){var e=this.recMgr.pages.get(this.subpage);return void 0===e?(0,s.default)(\".pf-record-page__section.active\",(0,s.default)(\"header\",\"Invalid subpage /record/\"+this.subpage)):[(0,s.default)(\".pf-record-page__section.active\",{id:e.id,key:e.id},this.renderSubpage(e))]}renderSubpage(e){switch(e.kind){case\"PROBES_PAGE\":return e.probes.filter(e=>(0,c.supportsPlatform)(e,this.recMgr.currentPlatform)).map(e=>(0,s.default)(t.Probe,{cfgMgr:this.recMgr.recordConfig,probe:e}));case\"GLOBAL_PAGE\":case\"SESSION_PAGE\":return e.render()}}renderMenu(){var e=Array.from(this.recMgr.pages.values());return(0,s.default)(\".pf-record-page__menu\",(0,s.default)(g,{recMgr:this.recMgr}),(0,s.default)(\"header\",\"Record settings\",(0,s.default)(a.Button,{icon:\"share\",title:\"Share current config\",onclick:()=>(0,o.shareRecordConfig)(this.recMgr.serializeSession())})),(0,s.default)(\"ul\",e.filter(e=>[\"SESSION_PAGE\",\"GLOBAL_PAGE\"].includes(e.kind)).map(e=>this.renderMenuEntry(e))),(0,s.default)(\"header\",\"Probes\",(0,s.default)(a.Button,{icon:\"delete_sweep\",title:\"Clear current configuration\",onclick:()=>{confirm(\"The current config will be cleared. Are you sure?\")&&this.recMgr.clearSession()}})),(0,s.default)(\"ul\",e.filter(e=>\"PROBES_PAGE\"===e.kind).map(e=>this.renderMenuEntry(e))))}renderMenuEntry(e){let t=0,r=0,n=\"\";var a=this.recMgr.pages.get(e.id);if(\"PROBES_PAGE\"===a?.kind){for(const o of a.probes)(0,c.supportsPlatform)(o,this.recMgr.currentPlatform)&&(++r,this.recMgr.recordConfig.isProbeEnabled(o.id))&&++t;n=\"\"+(0<t?t:\"\")}var a=0===r&&\"PROBES_PAGE\"===a?.kind,i=(0,u.classNames)(this.subpage===e.id&&\"active\",a&&\"disabled\");return(0,s.default)(\"a\",{href:a?void 0:\"#!/record/\"+e.id},(0,s.default)(\"li\",{className:i},(0,s.default)(l.Icon,{icon:e.icon}),(0,s.default)(\".title\",e.title,(0,s.default)(\".probe-count\",n)),(0,s.default)(\".sub\",e.subtitle)))}async loadShared(e){e=`https://storage.googleapis.com/${n.BUCKET_NAME}/`+e,e=await(await fetch(e)).text(),e=this.recMgr.restoreSessionFromJson(e);e.ok?this.recMgr.app.navigate(\"#!/record/cmdline\"):(0,r.showModal)({title:\"Restore error\",content:e.error})}};class g{recMgr;lastTarget;constructor({attrs:e}){this.recMgr=e.recMgr}view(){var e=this.recMgr.currentTarget;this.lastTarget!==e&&(this.lastTarget=e);const t=this.recMgr.currentSession;var r=t?.inProgress,n=(r&&setTimeout(()=>s.default.redraw(),1e3),t?.eta);return(0,s.default)(\".record-ctl\",(0,s.default)(a.Button,{icon:\"cable\",title:\"Click to select another target\",onclick:()=>this.recMgr.app.navigate(\"#!/record/target\")}),(0,s.default)(\".record-target\",r?\"Recording\"+(n?\", ETA \"+n:\"\"):e?.name??\"No target selected\"),r?(0,s.default)(a.Button,{icon:\"stop\",disabled:\"RECORDING\"!==t.state,iconFilled:!0,title:\"Stop\",className:\"rec\",onclick:()=>{t.session?.stop(),this.recMgr.app.navigate(\"#!/record/target\")}}):(0,s.default)(a.Button,{icon:\"not_started\",disabled:void 0===e||\"LONG_TRACE\"===this.recMgr.recordConfig.traceConfig.mode,iconFilled:!0,title:\"Start tracing\",className:\"rec\",onclick:()=>{this.recMgr.startTracing(),this.recMgr.app.navigate(\"#!/record/target\")}}))}}return U3}(),g=X3(),_=lF(),y=mF(),T=function(){if(!yF){yF=1,Object.defineProperty(TF,\"__esModule\",{value:!0}),TF.TracedWebsocketTargetProvider=void 0;var e=wf();const t=SF(),r=EF();TF.TracedWebsocketTargetProvider=class{id=\"traced_websocket\";name=\"WebSocket\";description=\"Allows to talk to the traced service UNIX socket via a WebSocket. Requires launching the websocket_bridge on the host\";icon=\"lan\";supportedPlatforms=[\"LINUX\"];onTargetsChanged=new e.EvtSource;targets=new Map;constructor(){var e=\"ws://127.0.0.1:8037/traced\";this.targets.set(e,new r.TracedWebsocketTarget(e))}async listTargets(){return Array.from(this.targets.values())}pairNewTarget(){return(0,t.showTracedConnectionManagementDialog)(this)}async*runPreflightChecks(){}}}return TF}(),v=CF(),b=FF(),E=e.__importDefault(xe());px.default=class{static id=\"dev.perfetto.RecordTraceV2\";static recordingMgr;static onActivate(t){t.sidebar.addMenuItem({section:\"navigation\",text:\"Record new trace\",href:\"#!/record\",icon:\"fiber_smart_record\",sortOrder:2}),t.pages.registerPage({route:\"/record\",render:e=>(0,E.default)(m.RecordPageV2,{subpage:e,app:t,getRecordingManager:()=>this.getRecordingManager(t)})}),t.commands.registerCommand({id:\"dev.perfetto.RecordTraceV2.disconnectTarget\",name:\"Disconnect the current device\",callback:()=>{var e=this.getRecordingManager(t);e.currentTarget&&e.currentTarget.disconnect()}})}static getRecordingManager(e){if(void 0===this.recordingMgr){e=new y.RecordingManager(e);(this.recordingMgr=e).registerProvider(new n.AdbWebusbTargetProvider),e.registerProvider(new r.AdbWebsocketTargetProvider),e.registerProvider(new b.WebDeviceProxyTargetProvider);const t=new a.ChromeExtensionTargetProvider;e.registerProvider(t),e.registerProvider(new T.TracedWebsocketTargetProvider),e.registerPage((0,_.targetSelectionPage)(e),(0,l.bufferConfigPage)(e),(0,u.instructionsPage)(e),(0,v.savedConfigsPage)(e),(0,c.chromeRecordSection)(()=>t.getChromeCategories()),(0,d.cpuRecordSection)(),(0,p.gpuRecordSection)(),(0,h.powerRecordSection)(),(0,f.memoryRecordSection)(),(0,o.androidRecordSection)(),(0,s.perfettoSDKRecordSection)(),(0,g.stackSamplingRecordSection)(),(0,i.advancedRecordSection)()),e.restorePluginStateFromLocalstorage()}return window.recordingMgr=this.recordingMgr,this.recordingMgr}}}return px}var BF,jF={},HF={};var GF,VF={};function qF(){if(!GF){GF=1;{var t=VF;Object.defineProperty(t,\"__esModule\",{value:!0}),t.CPU_SLICE_URI_PREFIX=void 0,t.uriForSchedTrack=function(e){return\"\"+t.CPU_SLICE_URI_PREFIX+e},t.colorForThreadState=function(e){{if(\"Created\"===e)return s;if(\"Running\"===e)return a;if(e.startsWith(\"Runnable\"))return i;if(e.includes(\"Uninterruptible Sleep\"))return e.includes(\"non-IO\")?n:l;if(e.includes(\"Dead\"))return r.GRAY;if(e.includes(\"Sleeping\")||e.includes(\"Idle\"))return o}return c};var e=Ao();const r=He();t.CPU_SLICE_URI_PREFIX=\"/sched_cpu\";const n=(0,r.makeColorScheme)(new e.HSLColor([3,30,49])),a=(0,r.makeColorScheme)(new e.HSLColor([120,44,34])),i=(0,r.makeColorScheme)(new e.HSLColor([75,55,47])),o=(0,r.makeColorScheme)(r.WHITE_COLOR),s=(0,r.makeColorScheme)(new e.HSLColor([0,0,70])),l=(0,r.makeColorScheme)(new e.HSLColor([36,100,50])),c=(0,r.makeColorScheme)(new e.HSLColor([231,48,48]))}}return VF}var zF,WF={};var $F,KF={};var YF,JF,QF,ZF={},XF={},eU={};function tU(){if(!YF){YF=1,Object.defineProperty(eU,\"__esModule\",{value:!0}),eU.getSchedFromConstraints=r,eU.getSched=async function(e,t){e=await r(e,{filters:[\"sched.id=\"+t]});if((0,n.assertTrue)(e.length<=1),0!==e.length)return e[0]},eU.getSchedWakeupInfo=async function(e,t){t=await(0,c.getThreadStateFromConstraints)(e,{filters:['state = \"R\"',\"ts + dur = \"+t.ts,\"utid = \"+t.thread.utid,\"(irq_context is null or irq_context = 0)\"]});if(0===t.length||void 0===t[0].wakerId)return;e=await(0,c.getThreadState)(e,t[0].wakerId);if(void 0!==e)return{wakerCpu:e?.cpu,wakerUtid:t[0].wakerUtid,wakeupTs:t[0].ts}};const n=Pe(),a=Fe(),i=Ue(),o=De(),s=ns(),l=fs(),c=_s();async function r(e,t){for(var r=(await e.query(`\n    SELECT\n      sched.id as schedSqlId,\n      (\n        SELECT id\n        FROM thread_state\n        WHERE\n          thread_state.ts = sched.ts\n          AND thread_state.utid = sched.utid\n      ) as threadStateSqlId,\n      sched.ts,\n      sched.dur,\n      sched.cpu,\n      sched.priority as priority,\n      sched.end_state as endState,\n      sched.utid\n    FROM sched\n    `+(0,o.constraintsToQuerySuffix)(t))).iter({schedSqlId:i.NUM,threadStateSqlId:i.NUM_NULL,ts:i.LONG,dur:i.LONG,cpu:i.NUM,priority:i.NUM,endState:i.STR_NULL,utid:i.NUM}),n=[];r.valid();r.next())n.push({id:(0,s.asSchedSqlId)(r.schedSqlId),threadStateId:(0,s.asThreadStateSqlId)(r.threadStateSqlId??void 0),ts:a.Time.fromRaw(r.ts),dur:r.dur,priority:r.priority,endState:r.endState??void 0,cpu:r.cpu??void 0,thread:await(0,l.getThreadInfo)(e,(0,s.asUtid)(r.utid))});return n}}return eU}function rU(){if(!QF){QF=1,Object.defineProperty(ZF,\"__esModule\",{value:!0}),ZF.CpuSliceTrack=void 0;var e=Jr;const s=ja(),v=Pa(),b=Pe(),E=Fe(),S=jo(),A=j(),d=e.__importDefault(xe()),O=He();var t=Kk();const i=Pi(),l=Ue();var r=ln();const n=function(){if(!JF){JF=1,Object.defineProperty(XF,\"__esModule\",{value:!0}),XF.SchedSliceDetailsPanel=void 0;const i=Jr.__importDefault(xe()),o=Oe(),t=qe(),n=Ls(),s=Bs(),l=Qs(),c=Ve(),u=ks(),d=Ns(),a=ns(),p=tU(),f=Me(),h=_s(),m=Ch();function r(e,t){return void 0===e?void 0===t?void 0:\"\"+t:void 0===t?e:e+\" \"+t}XF.SchedSliceDetailsPanel=class{trace;threads;details;constructor(e,t){this.trace=e,this.threads=t}async load({eventId:e}){var t,e=await(0,p.getSched)(this.trace.engine,(0,a.asSchedSqlId)(e));void 0!==e&&(t=await(0,p.getSchedWakeupInfo)(this.trace.engine,e),this.details={sched:e,wakeup:t})}render(){var e;return void 0===this.details?(0,i.default)(t.DetailsShell,{title:\"Sched\",description:\"Loading...\"}):(e=this.threads.get(this.details.sched.thread.utid),(0,i.default)(t.DetailsShell,{title:\"CPU Sched Slice\",description:this.renderTitle(this.details)},(0,i.default)(n.GridLayout,this.renderDetails(this.details,e),this.renderSchedLatencyInfo(this.details))))}renderTitle(e){e=this.threads.get(e.sched.thread.utid);return e?`${e.procName} [${e.pid}]`:null}renderSchedLatencyInfo(e){return void 0===e.wakeup?.wakeupTs||void 0===e.wakeup?.wakerUtid?null:(0,i.default)(s.Section,{title:\"Scheduling Latency\"},(0,i.default)(\".pf-sched-latency\",(0,i.default)(\"img.pf-sched-latency__background\",{src:(0,m.assetSrc)(\"assets/scheduling_latency.png\")}),this.renderWakeupText(e),this.renderDisplayLatencyText(e)))}renderWakeupText(e){var t;return void 0!==e.wakeup?.wakerUtid&&void 0!==e.wakeup?.wakeupTs&&void 0!==e.wakeup?.wakerCpu&&(t=this.threads.get(e.wakeup.wakerUtid))?(0,i.default)(\".pf-sched-latency__wakeup-text\",(0,i.default)(\"\",\"Wakeup @ \",(0,i.default)(d.Timestamp,{trace:this.trace,ts:e.wakeup?.wakeupTs}),` on CPU ${e.wakeup.wakerCpu} by`),(0,i.default)(\"\",`P: ${t.procName} [${t.pid}]`),(0,i.default)(\"\",`T: ${t.threadName} [${t.tid}]`)):null}renderDisplayLatencyText(e){return void 0===e.wakeup?.wakeupTs?null:(e=e.sched.ts-e.wakeup?.wakeupTs,(0,i.default)(\".pf-sched-latency__latency-text\",(0,i.default)(\"\",\"Scheduling latency: \",(0,i.default)(u.DurationWidget,{trace:this.trace,dur:e})),(0,i.default)(\".pf-sched-latency__explanation\",`This is the interval from when the task became eligible to run\n        (e.g. because of notifying a wait queue it was suspended on) to\n        when it started running.`)))}renderPriorityText(e){if(void 0!==e)return e<100?e+\" (real-time)\":\"\"+e}getProcessThreadDetails(e){var t=e.sched.thread.process;return new Map([[\"Thread\",r(e.sched.thread.name,e.sched.thread.tid)],[\"Process\",r(t?.name,t?.pid)],[\"User ID\",(0,f.exists)(t?.uid)?String(t?.uid):void 0],[\"Package name\",t?.packageName],[\"Version code\",void 0!==t?.versionCode?String(t?.versionCode):void 0]])}renderDetails(e,t){if(!t)return null;var r,n,a=[];for([r,n]of this.getProcessThreadDetails(e))void 0!==n&&a.push((0,i.default)(c.TreeNode,{left:r,right:n}));t=[(0,i.default)(c.TreeNode,{left:\"Process\",right:`${t.procName} [${t.pid}]`}),(0,i.default)(c.TreeNode,{left:\"Thread\",right:(0,i.default)(o.Anchor,{icon:\"call_made\",onclick:()=>{this.goToThread(e)}},`${t.threadName} [${t.tid}]`)}),(0,i.default)(c.TreeNode,{left:\"Cmdline\",right:t.cmdline}),(0,i.default)(c.TreeNode,{left:\"Start time\",right:(0,i.default)(d.Timestamp,{trace:this.trace,ts:e.sched.ts})}),(0,i.default)(c.TreeNode,{left:\"Duration\",right:(0,i.default)(u.DurationWidget,{trace:this.trace,dur:e.sched.dur})}),(0,i.default)(c.TreeNode,{left:\"Priority\",right:this.renderPriorityText(e.sched.priority)}),(0,i.default)(c.TreeNode,{left:\"End State\",right:(0,h.translateState)(e.sched.endState)}),(0,i.default)(c.TreeNode,{left:\"SQL ID\",right:(0,i.default)(l.SqlRef,{table:\"sched\",id:e.sched.id})}),...a];return(0,i.default)(s.Section,{title:\"Details\"},(0,i.default)(c.Tree,t))}goToThread(e){e.sched.threadStateId&&this.trace.selection.selectSqlEvent(\"thread_state\",e.sched.threadStateId,{scrollToSelection:!0})}renderCanvas(){}}}return XF}(),p=Me(),a=ze();ZF.CpuSliceTrack=class{trace;uri;cpu;threads;mousePos;utidHoveredInThisTrack;countHoveredInThisTrack;fetcher=new t.TimelineFetcher(this.onBoundsChange.bind(this));lastRowId=-1;trackUuid=(0,r.uuidv4Sql)();rootTableName=\"sched_slice\";constructor(e,t,r,n){this.trace=e,this.uri=t,this.cpu=r,this.threads=n}async onCreate(){await this.trace.engine.query(`\n      create virtual table cpu_slice_${this.trackUuid}\n      using __intrinsic_slice_mipmap((\n        select\n          id,\n          ts,\n          iif(dur = -1, lead(ts, 1, trace_end()) over (order by ts) - ts, dur) as dur,\n          0 as depth\n        from sched\n        where ucpu = ${this.cpu.ucpu} and\n          not utid in (select utid from thread where is_idle)\n      ));\n    `);var e=await this.trace.engine.query(`\n      select coalesce(max(id), -1) as lastRowId\n      from sched\n      where ucpu = ${this.cpu.ucpu} and\n        not utid in (select utid from thread where is_idle)\n    `);this.lastRowId=e.firstRow({lastRowId:l.NUM}).lastRowId}getDataset(){return new a.SourceDataset({src:`select id, ts, dur, ucpu, utid\n            from sched\n            where not utid in (select utid from thread where is_idle)`,schema:{id:l.NUM,ts:l.LONG,dur:l.LONG,ucpu:l.NUM,utid:l.NUM},filter:{col:\"ucpu\",eq:this.cpu.ucpu}})}async onUpdate({visibleWindow:e,resolution:t}){await this.fetcher.requestData(e.toTimeSpan(),t)}async onBoundsChange(e,t,r){(0,b.assertTrue)(1===s.BigintMath.popcount(r),r+\" not pow of 2\");var n=await this.trace.engine.query(`\n      select\n        (z.ts / ${r}) * ${r} as tsQ,\n        (((z.ts + z.dur) / ${r}) + 1) * ${r} as tsEndQ,\n        z.count,\n        s.utid,\n        s.id,\n        s.dur = -1 as isIncomplete,\n        ifnull(s.priority < 100, 0) as isRealtime\n      from cpu_slice_${this.trackUuid}(${e}, ${t}, ${r}) z\n      cross join sched s using (id)\n    `),a=n.numRows(),i={start:e,end:t,resolution:r,length:a,lastRowId:this.lastRowId,counts:new Float64Array(a),ids:new Float64Array(a),startQs:new BigInt64Array(a),endQs:new BigInt64Array(a),utids:new Uint32Array(a),flags:new Uint8Array(a)},o=n.iter({count:l.NUM,tsQ:l.LONG,tsEndQ:l.LONG,utid:l.NUM,id:l.NUM,isIncomplete:l.NUM,isRealtime:l.NUM});for(let e=0;o.valid();o.next(),e++)i.counts[e]=o.count,i.startQs[e]=o.tsQ,i.endQs[e]=o.tsEndQ,i.utids[e]=o.utid,i.ids[e]=o.id,i.flags[e]=0,o.isIncomplete&&(i.flags[e]|=1),o.isRealtime&&(i.flags[e]|=2);return i}async onDestroy(){await this.trace.engine.tryQuery(\"drop table if exists cpu_slice_\"+this.trackUuid),this.fetcher[Symbol.dispose]()}getHeight(){return 30}renderTooltip(){if(void 0!==this.utidHoveredInThisTrack&&void 0!==this.mousePos){var e,t,r=this.threads.get(this.utidHoveredInThisTrack);if(r)return e=`T: ${r.threadName} [${r.tid}]`,t=1<(t=(0,b.assertExists)(this.countHoveredInThisTrack))&&(0,d.default)(\"div\",`and ${t-1} other events`),void 0!==r.pid?(r=`P: ${r.procName} [${r.pid}]`,(0,d.default)(\".tooltip\",[(0,d.default)(\"div\",r),(0,d.default)(\"div\",e),t])):(0,d.default)(\".tooltip\",e,t)}}render(e){var{ctx:t,size:r,timescale:n}=e,a=this.fetcher.data;void 0!==a&&((0,i.checkerboardExcept)(t,this.getHeight(),0,r.width,n.timeToPx(a.start),n.timeToPx(a.end)),this.renderSlices(e,a))}renderSlices({ctx:i,timescale:r,size:e,visibleWindow:t},o){(0,b.assertTrue)(o.startQs.length===o.endQs.length),(0,b.assertTrue)(o.startQs.length===o.utids.length);var s=e.width,l=(i.textAlign=\"center\",i.font=\"12px Roboto Condensed\",i.measureText(\"dbpqaouk\").width/8),e=t.toTimeSpan();const n=e.start;var c=e.end,t=o.endQs.findIndex(e=>e>=n),e=-1===t?0:t,[,t]=(0,v.searchSegment)(o.startQs,c),u=-1===t?o.startQs.length:t;for(let a=e;a<u;a++){var d=E.Time.fromRaw(o.startQs[a]);let e=E.Time.fromRaw(o.endQs[a]);var p=o.utids[a],d=(o.ids[a]===o.lastRowId&&1&o.flags[a]&&(e=c),r.timeToPx(d)),f=r.timeToPx(e),h=Math.max(1,f-d),m=this.threads.get(p),g=m&&m.pid?m.pid:-1,_=void 0!==this.trace.timeline.hoveredUtid,y=this.trace.timeline.hoveredUtid===p,g=this.trace.timeline.hoveredPid===g,T=(0,O.colorForThread)(m);let t,n;if(n=_&&!y?g?(t=T.variant,T.textVariant):(t=T.disabled,T.textDisabled):(t=T.base,T.textBase),i.fillStyle=t.cssString,1&o.flags[a]?(0,S.drawIncompleteSlice)(i,d,3,h,24,t):i.fillRect(d,3,h,24),!(h<5)){2&o.flags[a]&&(i.fillStyle=((y=_=void 0)===(g=i).sliceHatchedPattern&&((_=document.createElement(\"canvas\")).width=_.height=8,(y=(0,b.assertExists)(_.getContext(\"2d\"))).strokeStyle=\"rgba(255,255,255,0.3)\",y.beginPath(),y.lineWidth=1,y.moveTo(0,8),y.lineTo(8,0),y.stroke(),g.sliceHatchedPattern=(0,b.assertExists)(g.createPattern(_,\"repeat\"))),g.sliceHatchedPattern),i.fillRect(d,3,h,24));let t=`[utid:${p}]`,r=\"\";if(m)if(void 0!==m.pid&&0!==m.pid){let e=m.procName??\"\";e.startsWith(\"/\")&&(e=e.substring(e.lastIndexOf(\"/\")+1)),t=`${e} [${m.pid}]`,r=`${m.threadName} [${m.tid}]`}else t=`${m.threadName} [${m.tid}]`;2&o.flags[a]&&(r+=\" (RT)\");T=Math.min(s,f),y=Math.max(d,0),_=Math.max(T-y,1),g=(t=(0,A.cropText)(t,l,_),r=(0,A.cropText)(r,l,_),y+_/2);i.fillStyle=n.cssString,i.font=\"12px Roboto Condensed\",i.fillText(t,g,14),i.fillStyle=n.setAlpha(.6).cssString,i.font=\"10px Roboto Condensed\",i.fillText(r,g,24)}}var a,t=this.trace.selection.selection;\"track_event\"===t.kind&&t.trackUri===this.uri&&([e,t]=(0,v.searchEq)(o.ids,t.eventId),e!==t)&&(t=E.Time.fromRaw(o.startQs[e]),a=E.Time.fromRaw(o.endQs[e]),e=o.utids[e],e=(0,O.colorForThread)(this.threads.get(e)),t=r.timeToPx(t),a=r.timeToPx(a),a=Math.max(1,a-t),i.strokeStyle=e.base.setHSL({l:30}).cssString,i.beginPath(),i.lineWidth=3,i.strokeRect(t,1.5,a,27),i.closePath())}onMouseMove({x:e,y:n,timescale:a}){var i=this.fetcher.data;if(this.mousePos={x:e,y:n},void 0!==i)if(n<3||27<n)this.utidHoveredInThisTrack=void 0,this.countHoveredInThisTrack=void 0,this.trace.timeline.hoveredUtid=void 0,this.trace.timeline.hoveredPid=void 0;else{var o=a.pxToHpTime(e);let t=void 0,r=void 0;for(let e=0;e<i.startQs.length;e++){var s=E.Time.fromRaw(i.startQs[e]),l=E.Time.fromRaw(i.endQs[e]),c=i.counts[e],u=i.utids[e];if(o.gte(s)&&o.lt(l)){t=u,r=c;break}}this.utidHoveredInThisTrack=t,this.countHoveredInThisTrack=r;n=(0,p.exists)(t)&&this.threads.get(t),a=n&&n.pid||-1;this.trace.timeline.hoveredUtid=t,this.trace.timeline.hoveredPid=a,d.default.redraw()}}onMouseOut(){this.utidHoveredInThisTrack=-1,this.countHoveredInThisTrack=-1,this.trace.timeline.hoveredUtid=void 0,this.trace.timeline.hoveredPid=void 0,this.mousePos=void 0}onMouseClick({x:e,timescale:t}){var r=this.fetcher.data;return void 0!==r&&(t=t.pxToHpTime(e),!(!(t=-1===(e=(0,v.search)(r.startQs,t.toTime()))?void 0:r.ids[e])||-1===this.utidHoveredInThisTrack||(this.trace.selection.selectTrackEvent(this.uri,t),0)))}async getSelectionDetails(e){var t=this.getDataset(),t=(await this.trace.engine.query(`\n      SELECT\n        ts,\n        dur\n      FROM (${t.query()})\n      WHERE id = ${e}\n    `)).maybeFirstRow({ts:l.LONG,dur:l.LONG});if(t)return{ts:E.Time.fromRaw(t.ts),dur:t.dur}}detailsPanel(){return new n.SchedSliceDetailsPanel(this.trace,this.threads)}}}return ZF}var nU,aU={};var iU,oU={};var sU,lU,cU={},uU={};function dU(){if(!sU){sU=1,Object.defineProperty(uU,\"__esModule\",{value:!0}),uU.ThreadStateDetailsPanel=void 0;const i=Jr.__importDefault(xe()),n=Oe(),o=je(),e=qe(),t=Ls(),r=Bs(),a=Qs(),s=Ve(),l=Be(),c=_s(),u=ks(),d=Ns(),p=ps(),f=fs(),h=Gs(),m=uI(),g=PI(),_=Do(),y=mc();uU.ThreadStateDetailsPanel=class{trace;id;threadState;relatedStates;constructor(e,t){this.trace=e,this.id=t}async load(){var e,t,r=this.id;this.threadState=await(0,c.getThreadState)(this.trace.engine,r),this.threadState&&(e={},0<(t=await(0,c.getThreadStateFromConstraints)(this.trace.engine,{filters:[\"ts + dur = \"+this.threadState.ts,\"utid = \"+this.threadState.thread?.utid],limit:1})).length&&(e.prev=t[0]),0<(t=await(0,c.getThreadStateFromConstraints)(this.trace.engine,{filters:[\"ts = \"+(this.threadState.ts+this.threadState.dur),\"utid = \"+this.threadState.thread?.utid],limit:1})).length&&(e.next=t[0]),e.wakerInterruptCtx=this.threadState.wakerInterruptCtx,void 0!==this.threadState.wakerId?e.waker=await(0,c.getThreadState)(this.trace.engine,this.threadState.wakerId):\"Running\"==this.threadState.state&&void 0!==e.prev?.wakerId&&(e.waker=await(0,c.getThreadState)(this.trace.engine,e.prev.wakerId),e.wakerInterruptCtx=e.prev.wakerInterruptCtx),e.wakee=await(0,c.getThreadStateFromConstraints)(this.trace.engine,{filters:[\"waker_id = \"+r,\"(irq_context is null or irq_context = 0)\"]}),this.relatedStates=e)}render(){return(0,i.default)(e.DetailsShell,{title:\"Thread State\",description:this.renderLoadingText()},(0,i.default)(t.GridLayout,(0,i.default)(r.Section,{title:\"Details\"},this.threadState&&this.renderTree(this.threadState)),(0,i.default)(r.Section,{title:\"Related thread states\"},this.renderRelatedThreadStates())))}renderLoadingText(){return this.threadState?this.id:\"Loading\"}renderTree(e){var t=e.thread,r=e.thread?.process;return(0,i.default)(s.Tree,(0,i.default)(s.TreeNode,{left:\"Start time\",right:(0,i.default)(d.Timestamp,{trace:this.trace,ts:e.ts})}),(0,i.default)(s.TreeNode,{left:\"Duration\",right:(0,i.default)(u.DurationWidget,{trace:this.trace,dur:e.dur})}),(0,i.default)(s.TreeNode,{left:\"State\",right:this.renderState(e.state,e.cpu,e.schedSqlId)}),e.blockedFunction&&(0,i.default)(s.TreeNode,{left:\"Blocked function\",right:e.blockedFunction}),r&&(0,i.default)(s.TreeNode,{left:\"Process\",right:(0,p.getProcessName)(r)}),t&&(0,i.default)(s.TreeNode,{left:\"Thread\",right:(0,f.getThreadName)(t)}),void 0!==e.priority&&(0,i.default)(s.TreeNode,{left:\"Priority\",right:e.priority}),(0,i.default)(s.TreeNode,{left:\"SQL ID\",right:(0,i.default)(a.SqlRef,{table:\"thread_state\",id:e.id})}))}renderState(e,t,r){return e?void 0===r||void 0===t?e:(0,i.default)(n.Anchor,{title:\"Go to CPU slice\",icon:\"call_made\",onclick:()=>(0,g.goToSchedSlice)(this.trace,r)},e+\" on CPU \"+t):null}renderRelatedThreadStates(){if(void 0===this.threadState||void 0===this.relatedStates)return\"Loading\";const t=this.threadState.ts,r=(e,t)=>(0,i.default)(h.ThreadStateRef,{trace:this.trace,id:e.id,name:t});var e,n,a=e=>e.state+\" for \"+(0,_.formatDuration)(this.trace,e.dur);return(0,i.default)(y.Stack,[(0,i.default)(s.Tree,[this.relatedStates.prev&&(0,i.default)(s.TreeNode,{left:\"Previous state\",right:r(this.relatedStates.prev,a(this.relatedStates.prev))}),this.relatedStates.next&&(0,i.default)(s.TreeNode,{left:\"Next state\",right:r(this.relatedStates.next,a(this.relatedStates.next))}),(a=this.relatedStates,e=void 0!==a.waker,n=void 0!==a.wakerInterruptCtx,e||n?a.wakerInterruptCtx?(0,i.default)(s.TreeNode,{left:\"Woken by\",right:\"Interrupt\"}):a.waker&&(0,i.default)(s.TreeNode,{left:n?\"Woken by\":\"Woken by (maybe interrupt)\",right:r(a.waker,(0,f.getFullThreadName)(a.waker.thread))}):null),void 0===(e=this.relatedStates).wakee||0==e.wakee.length?null:(n=void 0!==e.wakee[0].wakerInterruptCtx,(0,i.default)(s.TreeNode,{left:n?\"Woken threads\":\"Woken threads (maybe interrupt)\"},e.wakee.map(e=>(0,i.default)(s.TreeNode,{left:(0,i.default)(d.Timestamp,{trace:this.trace,ts:e.ts,display:\"+\"+(0,_.formatDuration)(this.trace,e.ts-t)}),right:r(e,(0,f.getFullThreadName)(e.thread))}))))]),this.trace.commands.hasCommand(m.CRITICAL_PATH_LITE_CMD)&&(0,i.default)(o.ButtonBar,[(0,i.default)(o.Button,{label:\"Critical path lite\",intent:l.Intent.Primary,variant:o.ButtonVariant.Filled,onclick:()=>{this.trace.commands.runCommand(m.CRITICAL_PATH_LITE_CMD,this.threadState?.thread?.utid)}})])])}isLoading(){return void 0===this.threadState||void 0===this.relatedStates}}}return uU}function pU(){if(!lU){lU=1,Object.defineProperty(cU,\"__esModule\",{value:!0}),cU.createThreadStateTrack=function(t,e,r){return new n.DatasetSliceTrack({trace:t,uri:e,dataset:new a.SourceDataset({schema:{id:i.NUM,ts:i.LONG,dur:i.LONG,layer:i.NUM,cpu:i.NUM_NULL,utid:i.NUM,state:i.STR,depth:i.NUM},src:`\n        SELECT\n          id,\n          ts,\n          dur,\n          cpu,\n          utid,\n          sched_state_io_to_human_readable_string(state, io_wait) AS state,\n          -- Move sleeping and idle slices to the back layer, others on top\n          CASE\n            WHEN state IN ('S', 'I') THEN 0\n            ELSE 1\n          END AS layer,\n          0 AS depth\n        FROM thread_state\n      `,filter:{col:\"utid\",eq:r}}),sliceLayout:{sliceHeight:12,titleSizePx:10},sliceName:e=>e.state,colorizer:e=>{var t=(0,o.colorForThreadState)(e.state);return e.state.includes(\"Sleeping\")||e.state.includes(\"Idle\")?l:t},detailsPanel:e=>new s.ThreadStateDetailsPanel(t,e.id),rootTableName:\"thread_state\"})};var e=Ao();const n=Ge(),a=ze(),i=Ue(),o=qF(),s=dU();var t=new e.HSLColor([0,0,0],0);const l={base:t,variant:new e.HSLColor([0,0,50],.2),disabled:t,textBase:t,textVariant:t,textDisabled:t}}return cU}var fU,hU,mU,gU={},_U={};function yU(){return fU||(fU=1,Object.defineProperty(_U,\"__esModule\",{value:!0}),_U.drawVerticalLineAtTime=function(e,t,r,n,a,i=2){t=Math.floor(t.timeToPx(r));!function(e,t,r,n,a=2){e.beginPath(),e.strokeStyle=n;n=e.lineWidth;e.lineWidth=a,e.moveTo(t,0),e.lineTo(t,r),e.stroke(),e.closePath(),e.lineWidth=n}(e,t,n,a,i)}),_U}function TU(){if(!mU){mU=1,Object.defineProperty(jF,\"__esModule\",{value:!0});const m=Jr,u=m.__importDefault(xe()),p=Hi(),f=Ae(),g=Fe(),h=uu(),_=$e(),y=Du(),T=We(),v=Ue(),a=Fu(),b=De(),E=Oe(),S=m.__importDefault(Vc()),A=m.__importDefault(H2()),O=function(){if(!BF){BF=1,Object.defineProperty(HF,\"__esModule\",{value:!0}),HF.ActiveCPUCountTrack=HF.CPUType=void 0;const t=j();var e=Gi();HF.CPUType={Big:\"big\",Mid:\"mid\",Little:\"little\"};class r extends e.BaseCounterTrack{cpuType;constructor(e,t,r){super(t,e.trackUri),this.cpuType=r}getDefaultCounterOptions(){var e=super.getDefaultCounterOptions();return e.yRangeRounding=\"strict\",e.yRange=\"viewport\",e}async onInit(){await this.engine.query(`\n      INCLUDE PERFETTO MODULE sched.thread_level_parallelism;\n      INCLUDE PERFETTO MODULE android.cpu.cluster_type;\n    `)}getSqlSource(){return`\n      select\n        ts,\n        active_cpu_count as value\n      from ${void 0===this.cpuType?\"sched_active_cpu_count\":`_active_cpu_count_for_cluster_type(${(0,t.sqliteString)(this.cpuType)})`}\n    `}}HF.ActiveCPUCountTrack=r}return HF}(),C=qF(),w=function(){if(!zF){zF=1,Object.defineProperty(WF,\"__esModule\",{value:!0}),WF.CpuSliceByProcessSelectionAggregator=void 0;const i=Jr,o=uu(),e=$e(),t=Ue();WF.CpuSliceByProcessSelectionAggregator=class{id=\"cpu_by_process_aggregation\";probe(n){const a=(0,o.selectTracksAndGetDataset)(n.tracks,{id:t.NUM,dur:t.LONG,ts:t.LONG,utid:t.NUM},e.CPU_SLICE_TRACK_KIND);if(a)return{prepareData:async e=>{var t={stack:[],error:void 0,hasError:!1};try{var r=i.__addDisposableResource(t,await(0,o.createIITable)(e,a,n.start,n.end),!0);return await e.query(`\n          create or replace perfetto table ${this.id} as\n          select\n            process.name as process_name,\n            process.pid,\n            sum(dur) AS total_dur,\n            sum(dur) / count() as avg_dur,\n            count() as occurrences,\n            cast(sum(dur) as real) / sum(sum(dur)) OVER () as percent_of_total\n          from (${r.name})\n          join thread USING (utid)\n          join process USING (upid)\n          group by upid\n        `),{tableName:this.id}}catch(e){t.error=e,t.hasError=!0}finally{e=i.__disposeResources(t);e&&await e}}}}getTabName(){return\"CPU by process\"}getDefaultSorting(){return{column:\"total_dur\",direction:\"DESC\"}}getColumnDefinitions(){return[{title:\"Process\",columnId:\"process_name\"},{title:\"PID\",columnId:\"pid\"},{title:\"Wall duration\",formatHint:\"DURATION_NS\",columnId:\"total_dur\",sum:!0},{title:\"Wall duration %\",formatHint:\"PERCENT\",columnId:\"percent_of_total\"},{title:\"Avg Wall duration\",formatHint:\"DURATION_NS\",columnId:\"avg_dur\"},{title:\"Occurrences\",columnId:\"occurrences\",sum:!0}]}}}return WF}(),k=function(){if(!$F){$F=1,Object.defineProperty(KF,\"__esModule\",{value:!0}),KF.CpuSliceSelectionAggregator=void 0;const i=Jr,o=uu(),e=$e(),t=Ue();KF.CpuSliceSelectionAggregator=class{id=\"cpu_aggregation\";probe(n){const a=(0,o.selectTracksAndGetDataset)(n.tracks,{id:t.NUM,dur:t.LONG,ts:t.LONG,utid:t.NUM},e.CPU_SLICE_TRACK_KIND);if(a)return{prepareData:async e=>{var t={stack:[],error:void 0,hasError:!1};try{var r=i.__addDisposableResource(t,await(0,o.createIITable)(e,a,n.start,n.end),!0);return await e.query(`\n          create or replace perfetto table ${this.id} as\n          select\n            process.name as process_name,\n            pid,\n            thread.name as thread_name,\n            tid,\n            sum(dur) AS total_dur,\n            sum(dur) / count() as avg_dur,\n            count() as occurrences,\n            cast(sum(dur) as real) / sum(sum(dur)) OVER () as percent_of_total\n          from (${r.name}) as sched\n          join thread using (utid)\n          left join process using (upid)\n          group by utid\n        `),{tableName:this.id}}catch(e){t.error=e,t.hasError=!0}finally{e=i.__disposeResources(t);e&&await e}}}}getTabName(){return\"CPU by thread\"}getDefaultSorting(){return{column:\"total_dur\",direction:\"DESC\"}}getColumnDefinitions(){return[{title:\"Process\",columnId:\"process_name\"},{title:\"PID\",columnId:\"pid\"},{title:\"Thread\",columnId:\"thread_name\"},{title:\"TID\",columnId:\"tid\"},{title:\"Wall duration\",formatHint:\"DURATION_NS\",columnId:\"total_dur\",sum:!0},{title:\"Wall duration %\",columnId:\"percent_of_total\",formatHint:\"PERCENT\"},{title:\"Avg Wall duration\",formatHint:\"DURATION_NS\",columnId:\"avg_dur\"},{title:\"Occurrences\",columnId:\"occurrences\",sum:!0}]}}}return KF}(),I=rU(),R=function(){if(!nU){nU=1,Object.defineProperty(aU,\"__esModule\",{value:!0}),aU.UninterruptibleSleepThreadCountTrack=aU.RunnableThreadCountTrack=void 0;class e extends Gi().BaseCounterTrack{constructor(e,t){super(e,t)}getDefaultCounterOptions(){var e=super.getDefaultCounterOptions();return e.yRangeRounding=\"strict\",e.yRange=\"viewport\",e}async onInit(){await this.engine.query(\"INCLUDE PERFETTO MODULE sched.thread_level_parallelism\")}}aU.RunnableThreadCountTrack=class extends e{getSqlSource(){return`\n      select\n        ts,\n        runnable_thread_count as value\n      from sched_runnable_thread_count\n    `}};aU.UninterruptibleSleepThreadCountTrack=class extends e{getSqlSource(){return`\n      select\n        ts,\n        uninterruptible_sleep_thread_count as value\n      from sched_uninterruptible_sleep_thread_count\n    `}}}return aU}(),N=function(){if(!iU){iU=1,Object.defineProperty(oU,\"__esModule\",{value:!0}),oU.ThreadStateSelectionAggregator=void 0;const c=Jr,u=Fe(),d=uu(),e=$e(),p=Ue(),f=qF();oU.ThreadStateSelectionAggregator=class{id=\"thread_state_aggregation\";probe(s){const l=(0,d.selectTracksAndGetDataset)(s.tracks,{id:p.NUM,ts:p.LONG,dur:p.LONG,state:p.STR,utid:p.NUM},e.THREAD_STATE_TRACK_KIND);if(l)return{prepareData:async e=>{var t={stack:[],error:void 0,hasError:!1};try{var r=c.__addDisposableResource(t,await(0,d.createIITable)(e,l,s.start,s.end),!0),n=(await e.query(`\n          create or replace perfetto table ${this.id} as\n          select\n            process.name as process_name,\n            process.pid,\n            thread.name as thread_name,\n            thread.tid,\n            tstate.state as state,\n            sum(tstate.dur) AS total_dur,\n            sum(tstate.dur) / count() as avg_dur,\n            count() as occurrences,\n            cast(sum(dur) as real) / sum(sum(dur)) over () as percent_of_total\n          from ${r.name} tstate\n          join thread using (utid)\n          left join process using (upid)\n          group by utid, state\n        `),`\n          select\n            tstate.state as state,\n            sum(dur) as totalDur\n          from (${r.name}) tstate\n          join thread using (utid)\n          group by tstate.state\n        `),a=(await e.query(n)).iter({state:p.STR_NULL,totalDur:p.LONG}),i=[];for(let e=0;a.valid();++e,a.next()){var o=a.state??\"Unknown\";i.push({title:o+\": \"+u.Duration.humanise(a.totalDur),value:Number(a.totalDur),color:(0,f.colorForThreadState)(o)})}return{tableName:this.id,barChartData:i}}catch(e){t.error=e,t.hasError=!0}finally{r=c.__disposeResources(t);r&&await r}}}}getColumnDefinitions(){return[{title:\"Process\",columnId:\"process_name\"},{title:\"PID\",columnId:\"pid\"},{title:\"Thread\",columnId:\"thread_name\"},{title:\"TID\",columnId:\"tid\"},{title:\"State\",columnId:\"state\"},{title:\"Wall duration\",formatHint:\"DURATION_NS\",columnId:\"total_dur\",sum:!0},{title:\"Wall duration %\",formatHint:\"PERCENT\",columnId:\"percent_of_total\"},{title:\"Avg Wall duration\",formatHint:\"DURATION_NS\",columnId:\"avg_dur\"},{title:\"Occurrences\",columnId:\"occurrences\",sum:!0}]}getTabName(){return\"Thread States\"}getDefaultSorting(){return{column:\"total_dur\",direction:\"DESC\"}}}}return oU}(),M=pU(),P=function(){if(!hU){hU=1,Object.defineProperty(gU,\"__esModule\",{value:!0}),gU.WakerOverlay=void 0;const y=Jr;var e=Qc();const T=jo(),v=Fe(),a=yU(),t=ns(),r=tU(),p=qF();gU.WakerOverlay=class{limiter=new e.AsyncLimiter;trace;wakeupCache=new WeakMap;cachedSelection;constructor(e){this.trace=e}render(e,t,r,n){const a=this.trace.selection.selection;var i;this.cpuSliceTrackSelected(a)?(this.cachedSelection!==a&&(this.cachedSelection=a,this.limiter.schedule(async()=>{var e=await this.loadWakeupInfo(a);e&&this.wakeupCache.set(a,e)})),(i=this.wakeupCache.get(a))&&i.wakeupTs&&(this.drawWakeupLine(e,t,r.height,i.wakeupTs),void 0!==i.wakerCpu&&this.drawWakerMarker(e,t,n,i.wakeupTs,i.wakerCpu),this.drawLatencyArrow(e,t,n,i.wakeupTs,a.trackUri,a.ts))):this.cachedSelection=void 0}cpuSliceTrackSelected(e){return\"track_event\"===e.kind&&e.trackUri.startsWith(p.CPU_SLICE_URI_PREFIX)}async loadWakeupInfo(e){e=await(0,r.getSched)(this.trace.engine,(0,t.asSchedSqlId)(e.eventId));if(e)return await(0,r.getSchedWakeupInfo)(this.trace.engine,e)}drawWakeupLine(e,t,r,n){(0,a.drawVerticalLineAtTime)(e,t,n,r,\"black\")}drawWakerMarker(e,t,r,n,a){var i={stack:[],error:void 0,hasError:!1};try{const d=(0,p.uriForSchedTrack)(a);var o,s,l,c,u=r.find(e=>d===e.node.uri);u&&(s=(o=u.verticalBounds).bottom-o.top-6,l=Math.floor(t.timeToPx(n)),y.__addDisposableResource(i,(0,T.canvasSave)(e),!1),e.translate(0,o.top),e.beginPath(),c=3+s/2,e.moveTo(l,8+c),e.fillStyle=\"black\",e.lineTo(l+6,c),e.lineTo(l,c-8),e.lineTo(l-6,c),e.fill(),e.closePath())}catch(e){i.error=e,i.hasError=!0}finally{y.__disposeResources(i)}}drawLatencyArrow(e,t,r,n,a,i){var o={stack:[],error:void 0,hasError:!1};try{var s,l,c,u,d,p,f,h,m,g,_=r.find(e=>a===e.node.uri);_&&(l=(s=_.verticalBounds).bottom-s.top-6,c=t.timeToPx(n),u=t.timeToPx(i)-c,y.__addDisposableResource(o,(0,T.canvasSave)(e),!1),e.translate(0,s.top),(0,T.drawDoubleHeadedArrow)(e,c,3+l,u,20<=u),d=i-n,p=v.Duration.humanise(d),u>=(f=e.measureText(p)).width+2)&&(h=c+u/2,m=3+l-1,g=3+l-12,e.fillStyle=\"rgba(255,255,255,0.7)\",e.fillRect(h-f.width/2-1,g,f.width+2,11),e.textBaseline=\"bottom\",e.fillStyle=\"black\",e.textAlign=\"center\",e.fillText(p,h,m))}catch(e){o.error=e,o.hasError=!0}finally{y.__disposeResources(o)}}}}return gU}();class e{static id=\"dev.perfetto.Sched\";static dependencies=[S.default,A.default];async onTraceLoad(n){await this.hasSched(n.engine)&&(await this.addCpuSliceTracks(n),await this.addThreadStateTracks(n),await this.addMinimapProvider(n),this.addSchedulingSummaryTracks(n),n.commands.registerCommand({id:\"dev.perfetto.SelectAllThreadStateTracks\",name:\"Select all thread state tracks\",callback:()=>{var e=n.tracks.getAllTracks().filter(e=>e.tags?.kind===_.THREAD_STATE_TRACK_KIND);n.selection.selectArea({trackUris:e.map(e=>e.uri),start:n.traceInfo.start,end:n.traceInfo.end})}}),n.search.registerSearchProvider({name:\"Sched Slices\",selectTracks(e){return e.filter(e=>e.tags?.kind===_.CPU_SLICE_TRACK_KIND).filter(e=>e.renderer.getDataset?.()?.implements({utid:v.NUM_NULL}))},async getSearchFilter(e){for(var e=(0,a.escapeSearchQuery)(e),t=[],r=(await n.engine.query(`\n          SELECT utid\n          FROM thread\n          JOIN process USING(upid)\n          WHERE\n            thread.name GLOB ${e} OR\n            process.name GLOB ${e}\n        `)).iter({utid:v.NUM});r.valid();r.next())t.push(r.utid);return{where:`utid IN (${t.join()})`}}}))}async addCpuSliceTracks(e){e.selection.registerAreaSelectionTab((0,h.createAggregationTab)(e,new k.CpuSliceSelectionAggregator)),e.selection.registerAreaSelectionTab((0,h.createAggregationTab)(e,new w.CpuSliceByProcessSelectionAggregator));var t=await e.engine.query(\"select distinct ucpu from sched order by ucpu;\");const r=new Set;for(var n=t.iter({ucpu:v.NUM});n.valid();n.next())r.add(n.ucpu);var t=e.traceInfo.cpus.filter(e=>r.has(e.ucpu)),a=await this.getAndroidCpuClusterTypes(e.engine),i=new T.TrackNode({name:\"CPU Scheduling\",sortOrder:-50,isSummary:!0,collapsed:!1});for(const c of t){var o=(0,C.uriForSchedTrack)(c.ucpu),s=a.get(c.cpu),s=`CPU ${c.cpu} Scheduling`+(void 0===s?\"\":` (${s})`)+c.maybeMachineLabel(),l=e.plugins.getPlugin(A.default).getThreadMap();e.tracks.registerTrack({description:()=>(0,u.default)(\"\",[`Shows which threads were running on CPU ${c.toString()} over time.`,(0,u.default)(\"br\"),(0,u.default)(E.Anchor,{href:\"https://perfetto.dev/docs/data-sources/cpu-scheduling\",target:\"_blank\",icon:f.Icons.ExternalLink},\"Documentation\")]),uri:o,tags:{kind:_.CPU_SLICE_TRACK_KIND,cpu:c.ucpu},renderer:new I.CpuSliceTrack(e,o,c,l)}),i.addChildInOrder(new T.TrackNode({name:s,uri:o}))}0<i.children.length&&e.workspace.addChildInOrder(i),e.tracks.registerOverlay(new P.WakerOverlay(e))}async getAndroidCpuClusterTypes(e){var t=new Map;await e.query(`\n        include perfetto module android.cpu.cluster_type;\n      `);for(var r=(await e.query(`\n        select cpu, cluster_type as clusterType\n        from android_cpu_cluster_mapping\n      `)).iter({cpu:v.NUM,clusterType:v.STR_NULL});r.valid();r.next()){var n=r.clusterType;null!==n&&t.set(r.cpu,n)}return t}async getCpus(e){for(var t=(await e.query(`\n      SELECT DISTINCT\n        ucpu\n      FROM sched\n    `)).iter({ucpu:v.NUM}),r=[];t.valid();t.next())r.push(t.ucpu);return r}async addThreadStateTracks(e){var t=e.engine;e.selection.registerAreaSelectionTab((0,h.createAggregationTab)(e,new N.ThreadStateSelectionAggregator));for(var r=(await t.query(`\n      include perfetto module viz.threads;\n      include perfetto module viz.summary.threads;\n      include perfetto module sched.states;\n\n      select\n        utid,\n        t.upid,\n        tid,\n        t.name as threadName,\n        is_main_thread as isMainThread,\n        is_kernel_thread as isKernelThread\n      from _threads_with_kernel_flag t\n      join _sched_summary using (utid)\n    `)).iter({utid:v.NUM,upid:v.NUM_NULL,tid:v.NUM_NULL,threadName:v.STR_NULL,isMainThread:v.NUM_NULL,isKernelThread:v.NUM});r.valid();r.next()){var{utid:n,upid:a,tid:i,threadName:o,isMainThread:s,isKernelThread:l}=r,i=(0,y.getTrackName)({utid:n,tid:i,threadName:o,kind:_.THREAD_STATE_TRACK_KIND}),o=(o=a,c=n,(0,y.getThreadUriPrefix)(o,c)+\"_state\"),c=(e.tracks.registerTrack({uri:o,description:()=>(0,u.default)(\"\",[\"Shows the scheduling state of the thread over time, e.g. Running, Runnable, Sleeping.\",(0,u.default)(\"br\"),(0,u.default)(E.Anchor,{href:\"https://perfetto.dev/docs/data-sources/cpu-scheduling\",target:\"_blank\",icon:f.Icons.ExternalLink},\"Documentation\")]),tags:{kind:_.THREAD_STATE_TRACK_KIND,utid:n,upid:a??void 0,...1===l&&{kernelThread:!0}},chips:(0,p.removeFalsyValues)([0===l&&1===s&&\"main thread\"]),renderer:(0,M.createThreadStateTrack)(e,o,n)}),e.plugins.getPlugin(S.default).getGroupForThread(n)),a=new T.TrackNode({uri:o,name:i,sortOrder:10});c?.addChildInOrder(a)}}async addMinimapProvider(h){h.minimap.registerContentProvider({priority:2,getData:async(e,r)=>{var t=h.traceInfo.start,n=h.traceInfo.end,a=await this.getCpus(h.engine),i=[],o=[];for(let e=t;e<n;e+=r)o.push(e);var t=o.map((e,t)=>`(${t}, ${e}, ${r})`).join(),s=\"__minimap_sched_intervals\";await h.engine.query(`\n          CREATE TABLE ${s} (\n            id INTEGER PRIMARY KEY,\n            ts INTEGER,\n            dur INTEGER\n          );\n\n          INSERT INTO ${s} (id, ts, dur)\n          values ${t}\n        `);for(const f of a){var l={stack:[],error:void 0,hasError:!1};try{for(var c=\"__sched_per_cpu\",u=(m.__addDisposableResource(l,await(0,b.createPerfettoTable)({engine:h.engine,name:c,as:`\n              SELECT\n                *\n              FROM sched\n              WHERE\n                dur > 0 AND\n                ucpu = ${f} AND\n                NOT utid IN (SELECT utid FROM thread WHERE is_idle)\n            `}),!0),`\n            SELECT\n              id_1 AS bucketId,\n              CAST(SUM(ii.dur) AS FLOAT)/${r} AS load,\n              intervals.ts AS ts,\n              intervals.dur AS dur\n            FROM _interval_intersect!((${c}, ${s}), ()) ii\n            JOIN ${s} intervals ON (id_1 = intervals.id)\n            GROUP BY id_1;\n          `),d=(await h.engine.query(u)).iter({load:v.NUM,ts:v.LONG,dur:v.LONG}),p=[];d.valid();d.next())p.push({load:d.load,ts:g.Time.fromRaw(d.ts),dur:d.dur});i.push(p)}catch(e){l.error=e,l.hasError=!0}finally{l=m.__disposeResources(l);l&&await l}}return i}})}async hasSched(e){return 0<(await e.query(\"SELECT ts FROM sched LIMIT 1\")).numRows()}addSchedulingSummaryTracks(e){var t=new T.TrackNode({name:\"Scheduler\",isSummary:!0}),r=(e.workspace.addChildInOrder(t),\"Runnable thread count\"),n=\"/runnable_thread_count\";e.tracks.registerTrack({uri:n,renderer:new R.RunnableThreadCountTrack(e,n)});const a=new T.TrackNode({name:r,uri:n});t.addChildLast(a),e.commands.registerCommand({id:\"dev.perfetto.Sched.AddRunnableThreadCountTrackCommand\",name:\"Add track: \"+r.toLowerCase(),callback:()=>a.pin()});n=\"/uninterruptible_sleep_thread_count\";e.tracks.registerTrack({uri:n,renderer:new R.UninterruptibleSleepThreadCountTrack(e,n)});const i=new T.TrackNode({name:\"Uninterruptible Sleep thread count\",uri:n});t.addChildLast(i),e.commands.registerCommand({id:\"dev.perfetto.Sched.AddUninterruptibleSleepThreadCountTrackCommand\",name:\"Add track: uninterruptible sleep thread count\",callback:()=>i.pin()});r=d();e.tracks.registerTrack({uri:r,renderer:new O.ActiveCPUCountTrack({trackUri:r},e)});const o=new T.TrackNode({name:\"Active CPU count\",uri:r});t.addChildLast(o),e.commands.registerCommand({id:\"dev.perfetto.Sched.AddActiveCPUCountTrackCommand\",name:\"Add track: active CPU count\",callback:()=>o.pin()});for(const c of Object.values(O.CPUType)){var s=d(c),l=\"Active CPU count: \"+c;e.tracks.registerTrack({uri:s,renderer:new O.ActiveCPUCountTrack({trackUri:s},e,c)});const u=new T.TrackNode({name:l,uri:s});o.addChildLast(u),e.commands.registerCommand({id:\"dev.perfetto.Sched.AddActiveCPUCountTrackCommand.\"+c,name:`Add track: active ${c} CPU count`,callback:()=>u.pin()})}}}function d(e){var t=\"/active_cpus\";return void 0!==e?t+\"_\"+e:t}jF.default=e}return jF}var vU,bU,EU,SU={},AU={},OU={};function CU(){if(!bU){bU=1,Object.defineProperty(AU,\"__esModule\",{value:!0}),AU.createScreenshotsTrack=function(e,t){return new r.DatasetSliceTrack({trace:e,uri:t,dataset:new n.SourceDataset({schema:{id:a.NUM,ts:a.LONG,dur:a.LONG,name:a.STR},src:\"android_screenshots\"}),detailsPanel:()=>new i.ScreenshotDetailsPanel(e.engine)})};const r=Ge(),n=ze(),a=Ue(),i=function(){if(!vU){vU=1,Object.defineProperty(OU,\"__esModule\",{value:!0}),OU.ScreenshotDetailsPanel=void 0;const e=Jr.__importDefault(xe()),t=Pe(),r=Me(),n=hs(),a=ns();OU.ScreenshotDetailsPanel=class{engine;sliceDetails;constructor(e){this.engine=e}async load(e){this.sliceDetails=await(0,n.getSlice)(this.engine,(0,a.asSliceSqlId)(e.eventId))}render(){return(0,r.exists)(this.sliceDetails)&&(0,r.exists)(this.sliceDetails.args)&&0!=this.sliceDetails.args.length?((0,t.assertTrue)(\"screenshot.jpg_image\"==this.sliceDetails.args[0].key),(0,e.default)(\".pf-screenshot-panel\",(0,e.default)(\"img\",{src:\"data:image/png;base64, \"+this.sliceDetails.args[0].displayValue}))):(0,e.default)(\"h2\",\"Loading Screenshot\")}}}return OU}()}return AU}var wU,kU={};var IU,RU,NU={},MU={};function PU(){if(!RU){RU=1,Object.defineProperty(NU,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=function(){if(!IU){IU=1,Object.defineProperty(MU,\"__esModule\",{value:!0}),MU.TraceInfoPage=void 0;const o=Jr.__importDefault(xe());var e=Ue();const r=Pe(),a=Ee(),i=fP(),s={name:e.UNKNOWN,value:e.UNKNOWN,description:e.UNKNOWN,idx:e.UNKNOWN,severity:e.UNKNOWN,source:e.UNKNOWN};class l{data;constructor({attrs:e}){var t=e.engine;void 0!==t&&(e=`\n      select\n        name,\n        value,\n        cast(ifnull(idx, '') as text) as idx,\n        description,\n        severity,\n        source from stats\n      where ${e.sqlConstraints||\"1=1\"}\n      order by name, idx\n    `,t.query(e).then(e=>{for(var t=[],r=e.iter(s);r.valid();r.next())t.push(n(r,s));this.data=t}))}view({attrs:e}){var t=this.data;return void 0===t||0===t.length?(0,o.default)(\"\"):(t=t.map(e=>{var t=[],r=(Boolean(e.description)&&t.push((0,o.default)(i.Tooltip,{trigger:(0,o.default)(a.Icon,{icon:\"help_outline\",className:\"pf-trace-info-page__help-icon\"})},\"\"+e.description)),\"\"!==e.idx?`[${e.idx}]`:\"\");return(0,o.default)(\"tr\",(0,o.default)(\"td.name\",e.name+r,t),(0,o.default)(\"td\",\"\"+e.value),(0,o.default)(\"td\",`${e.severity} (${e.source})`))}),(0,o.default)(\"section\"+e.cssClass,(0,o.default)(\"h2\",e.title),(0,o.default)(\"h4\",e.subTitle),(0,o.default)(\"table\",(0,o.default)(\"thead\",(0,o.default)(\"tr\",(0,o.default)(\"td\",\"Name\"),(0,o.default)(\"td\",\"Value\"),(0,o.default)(\"td\",\"Type\"))),(0,o.default)(\"tbody\",t))))}}class c{view({attrs:e}){e=e.trace.loadingErrors;if(0!==e.length)return(0,o.default)(\"section.errors\",(0,o.default)(\"h2\",\"Loading errors\"),(0,o.default)(\"h4\",\"The following errors were encountered while loading the trace:\"),(0,o.default)(\"pre.metric-error\",e.join(\"\\n\")))}}const u={name:e.UNKNOWN,value:e.UNKNOWN};class d{data;oncreate({attrs:e}){e.engine.query(`\n      with metadata_with_priorities as (\n        select\n          name,\n          ifnull(str_value, cast(int_value as text)) as value,\n          name in (\n            \"trace_size_bytes\",\n            \"cr-os-arch\",\n            \"cr-os-name\",\n            \"cr-os-version\",\n            \"cr-physical-memory\",\n            \"cr-product-version\",\n            \"cr-hardware-class\"\n          ) as priority\n        from metadata\n      )\n      select\n        name,\n        value\n      from metadata_with_priorities\n      order by\n        priority desc,\n        name\n    `).then(e=>{for(var t=[],r=e.iter(u);r.valid();r.next())t.push(n(r,u));this.data=t})}view(){var e=this.data;return void 0===e||0===e.length?(0,o.default)(\"\"):(e=e.map(e=>(0,o.default)(\"tr\",(0,o.default)(\"td.name\",\"\"+e.name),(0,o.default)(\"td\",\"\"+e.value))),(0,o.default)(\"section\",(0,o.default)(\"h2\",\"System info and metadata\"),(0,o.default)(\"table\",(0,o.default)(\"thead\",(0,o.default)(\"tr\",(0,o.default)(\"td\",\"Name\"),(0,o.default)(\"td\",\"Value\"))),(0,o.default)(\"tbody\",e))))}}const p={id:e.UNKNOWN,rawId:e.UNKNOWN,sysname:e.UNKNOWN,release:e.UNKNOWN,version:e.UNKNOWN,arch:e.UNKNOWN,numCpus:e.UNKNOWN,androidBuildFingerprint:e.UNKNOWN,androidDeviceManufacturer:e.UNKNOWN,androidSdkVersion:e.UNKNOWN};class f{data;oncreate({attrs:e}){e.engine.query(`\n      select\n        id,\n        raw_id as rawId,\n        sysname,\n        release,\n        version,\n        arch,\n        num_cpus as numCpus,\n        android_build_fingerprint as androidBuildFingerprint,\n        android_device_manufacturer as androidDeviceManufacturer,\n        android_sdk_version as androidSdkVersion\n      from machine\n    `).then(e=>{for(var t=[],r=e.iter(p);r.valid();r.next())t.push(n(r,p));this.data=t})}view(){var e=this.data;if(!(void 0===e||e.length<=1))return e=e.map(e=>{var t=[];for(const n of Object.keys(p)){var r=e[n];null!=r&&t.push((0,o.default)(\"tr\",(0,o.default)(\"td.name\",n),(0,o.default)(\"td\",\"\"+r)))}return(0,o.default)(\"\",(0,o.default)(\"h3\",\"Machine \"+e.id),(0,o.default)(\"table\",(0,o.default)(\"thead\",(0,o.default)(\"tr\",(0,o.default)(\"td\",\"Name\"),(0,o.default)(\"td\",\"Value\"))),(0,o.default)(\"tbody\",t)))}),(0,o.default)(\"section\",(0,o.default)(\"h2\",\"Machines\"),(0,o.default)(\"h4\",\"System information of the machines involved in the trace.\"),e)}}const h={package_name:e.UNKNOWN,uid:e.UNKNOWN,current_mode:e.UNKNOWN,standard_mode_supported:e.UNKNOWN,standard_mode_downscale:e.UNKNOWN,standard_mode_use_angle:e.UNKNOWN,standard_mode_fps:e.UNKNOWN,perf_mode_supported:e.UNKNOWN,perf_mode_downscale:e.UNKNOWN,perf_mode_use_angle:e.UNKNOWN,perf_mode_fps:e.UNKNOWN,battery_mode_supported:e.UNKNOWN,battery_mode_downscale:e.UNKNOWN,battery_mode_use_angle:e.UNKNOWN,battery_mode_fps:e.UNKNOWN};class m{data;oncreate({attrs:e}){e.engine.query(`\n      select\n        package_name,\n        uid,\n        current_mode,\n        standard_mode_supported,\n        standard_mode_downscale,\n        standard_mode_use_angle,\n        standard_mode_fps,\n        perf_mode_supported,\n        perf_mode_downscale,\n        perf_mode_use_angle,\n        perf_mode_fps,\n        battery_mode_supported,\n        battery_mode_downscale,\n        battery_mode_use_angle,\n        battery_mode_fps\n      from android_game_intervention_list\n    `).then(e=>{for(var t=[],r=e.iter(h);r.valid();r.next())t.push(n(r,h));this.data=t})}view(){var e=this.data;if(void 0===e||0===e.length)return(0,o.default)(\"\");var t=[];let r=\"\",n=\"\",a=\"\";for(const i of e)r=i.standard_mode_supported?`angle=${i.standard_mode_use_angle},downscale=${i.standard_mode_downscale},fps=`+i.standard_mode_fps:\"Not supported\",n=i.perf_mode_supported?`angle=${i.perf_mode_use_angle},downscale=${i.perf_mode_downscale},fps=`+i.perf_mode_fps:\"Not supported\",a=i.battery_mode_supported?`angle=${i.battery_mode_use_angle},downscale=${i.battery_mode_downscale},fps=`+i.battery_mode_fps:\"Not supported\",1===i.current_mode?i.current_mode=\"Standard\":2===i.current_mode?i.current_mode=\"Performance\":3===i.current_mode&&(i.current_mode=\"Battery\"),t.push((0,o.default)(\"tr\",(0,o.default)(\"td.name\",\"\"+i.package_name),(0,o.default)(\"td\",\"\"+i.current_mode),(0,o.default)(\"td\",r),(0,o.default)(\"td\",n),(0,o.default)(\"td\",a)));return(0,o.default)(\"section\",(0,o.default)(\"h2\",\"Game Intervention List\"),(0,o.default)(\"table\",(0,o.default)(\"thead\",(0,o.default)(\"tr\",(0,o.default)(\"td\",\"Name\"),(0,o.default)(\"td\",\"Current mode\"),(0,o.default)(\"td\",\"Standard mode interventions\"),(0,o.default)(\"td\",\"Performance mode interventions\"),(0,o.default)(\"td\",\"Battery mode interventions\"))),(0,o.default)(\"tbody\",t)))}}const g={packageName:e.UNKNOWN,versionCode:e.UNKNOWN,debuggable:e.UNKNOWN,profileableFromShell:e.UNKNOWN};class _{packageList;oncreate({attrs:e}){e=e.engine;this.loadData(e)}async loadData(e){for(var t=[],r=(await e.query(`\n      select\n        package_name as packageName,\n        version_code as versionCode,\n        debuggable,\n        profileable_from_shell as profileableFromShell\n      from package_list\n    `)).iter(g);r.valid();r.next())t.push(n(r,g));this.packageList=t}view(){var e=this.packageList;if(void 0!==e&&0!==e.length)return e=e.map(e=>(0,o.default)(\"tr\",(0,o.default)(\"td.name\",\"\"+e.packageName),(0,o.default)(\"td\",\"\"+e.versionCode),(0,o.default)(\"td\",`${e.debuggable?\"debuggable\":\"\"} `+(e.profileableFromShell?\"profileable\":\"\")))),(0,o.default)(\"section\",(0,o.default)(\"h2\",\"Package list\"),(0,o.default)(\"table\",(0,o.default)(\"thead\",(0,o.default)(\"tr\",(0,o.default)(\"td\",\"Name\"),(0,o.default)(\"td\",\"Version code\"),(0,o.default)(\"td\",\"Flags\"))),(0,o.default)(\"tbody\",e)))}}function n(e,t){var r={};for(const n of Object.keys(t))r[n]=e[n];return r}MU.TraceInfoPage=class{engine;oninit({attrs:e}){this.engine=e.trace.engine.getProxy(\"TraceInfoPage\")}view({attrs:e}){var t=(0,r.assertExists)(this.engine);return(0,o.default)(\".pf-trace-info-page\",(0,o.default)(c,{trace:e.trace}),(0,o.default)(l,{engine:t,queryId:\"info_errors\",title:\"Import errors\",cssClass:\".pf-trace-info-page__errors\",subTitle:`The following errors have been encountered while importing\n               the trace. These errors are usually non-fatal but indicate that\n               one or more tracks might be missing or showing erroneous data.`,sqlConstraints:\"severity = 'error' and value > 0\"}),(0,o.default)(l,{engine:t,queryId:\"info_data_losses\",title:\"Data losses\",cssClass:\".pf-trace-info-page__errors\",subTitle:`These counters are collected at trace recording time. The\n               trace data for one or more data sources was dropped and hence\n               some track contents will be incomplete.`,sqlConstraints:\"severity = 'data_loss' and value > 0\"}),(0,o.default)(d,{engine:t}),(0,o.default)(f,{engine:t}),(0,o.default)(_,{engine:t}),(0,o.default)(m,{engine:t}),(0,o.default)(l,{engine:t,queryId:\"info_all\",title:\"Debugging stats\",cssClass:\"\",subTitle:`Debugging statistics such as trace buffer usage and metrics\n                     coming from the TraceProcessor importer stages.`,sqlConstraints:\"\"}))}}}return MU}();NU.default=class{static id=\"dev.perfetto.TraceInfoPage\";async onTraceLoad(e){e.pages.registerPage({route:\"/info\",render:()=>(0,t.default)(r.TraceInfoPage,{trace:e})}),e.sidebar.addMenuItem({section:\"current_trace\",text:\"Info and stats\",href:\"#!/info\",icon:\"info\",sortOrder:10})}}}return NU}var DU,xU={};var LU,FU={};var UU,BU={},jU={},HU={};function GU(){if(!UU){UU=1,Object.defineProperty(HU,\"__esModule\",{value:!0}),HU.TreeTable=void 0;const p=Jr.__importDefault(xe()),f=be();HU.TreeTable=class{collapsedPaths=new Set;view({attrs:e}){var{columns:t,rows:r}=e,t=t.map(({name:e})=>(0,p.default)(\"th\",e)),r=this.renderRows(r,0,e,[]);return(0,p.default)(\"table.pf-treetable\",(0,p.default)(\"thead\",(0,p.default)(\"tr\",t)),(0,p.default)(\"tbody\",r))}renderRows(e,n,t,r){var{columns:a,getChildren:i}=t,o=[];for(const c of e){var s=i(c),l=this.keyForRow(c,t);const u=r.concat([l]),d=s&&0<s.length;l=a.map(({getData:e},t)=>{var r=(0,f.classNames)(d&&\"pf-treetable-node\",this.isCollapsed(u)&&\"pf-collapsed\");return 0===t?(t={\"--indentation-level\":n},(0,p.default)(\"td\",{style:t,class:(0,f.classNames)(r,\"pf-treetable-maincol\")},(0,p.default)(\".pf-treetable-gutter\",{onclick:()=>{this.isCollapsed(u)?this.expandPath(u):this.collapsePath(u)}}),e(c))):(t={\"--indentation-level\":0},(0,p.default)(\"td\",{style:t},e(c)))});o.push((0,p.default)(\"tr\",l)),s&&!this.isCollapsed(u)&&o.push(this.renderRows(s,n+1,t,u))}return o}collapsePath(e){e=e.join(\"/\");this.collapsedPaths.add(e)}expandPath(e){e=e.join(\"/\");this.collapsedPaths.delete(e)}isCollapsed(e){e=e.join(\"/\");return this.collapsedPaths.has(e)}keyForRow(e,t){t=t.columns;return t[0].getData(e)}}}return HU}var VU,qU={};function zU(){if(!VU){VU=1,Object.defineProperty(qU,\"__esModule\",{value:!0}),qU.MiddleEllipsis=void 0;const o=Jr.__importDefault(xe());function i(e){return e.replace(/^\\s+|\\s+$/g,function(e){return\" \".repeat(e.length)})}qU.MiddleEllipsis=class{view({attrs:e,children:t}){var{text:r,endChars:n=16<r.length?10:0}=e,r=r.trim(),n=r.length-n,a=r.substring(0,n),r=r.substring(n);return(0,o.default)(\".pf-middle-ellipsis\",{className:e.className},(0,o.default)(\"span.pf-middle-ellipsis-left\",i(a)),(0,o.default)(\"span.pf-middle-ellipsis-right\",i(r)),t)}}}return qU}var WU,$U={};function KU(){if(WU)return $U;WU=1,Object.defineProperty($U,\"__esModule\",{value:!0}),$U.TrackShell=void 0;const T=Jr.__importDefault(xe()),v=be();var e=Le();const b=_i(),a=Pe(),d=So(),p=wi(),E=Ae(),S=je(),A=oc(),O=Be(),C=zU(),w=yi(),k=mc();function I(e){return e.summary&&!e.collapsed}function i(e){return e.target.getBoundingClientRect()}$U.TrackShell=class{mouseDownPos;selectionOccurred=!1;scrollIntoView=!1;view(e){var t=e[\"attrs\"],{collapsible:r,collapsed:n,id:a,summary:i,heightPx:o,ref:s,depth:l=0,stickyTop:c=0,lite:u}=t,r=r&&!n,n=o;return(0,T.default)(\".pf-track\",{id:a,style:{\"--height\":n,\"--depth\":(0,d.clamp)(l,0,16),\"--sticky-top\":Math.max(0,c)},ref:s},(0,T.default)(\".pf-track__header\",{className:(0,v.classNames)(i&&\"pf-track__header--summary\",r&&\"pf-track__header--expanded\",i&&r&&\"pf-track__header--expanded--summary\")},this.renderShell(t),!u&&this.renderContent(t)),(0,p.hasChildren)(e)&&(0,T.default)(\".pf-track__children\",e.children))}oncreate({dom:e,attrs:t}){t.scrollToOnCreate&&e.scrollIntoView({behavior:\"smooth\",block:\"nearest\"})}onupdate({dom:e}){this.scrollIntoView&&(e.scrollIntoView({behavior:\"instant\",block:\"nearest\"}),this.scrollIntoView=!1)}renderShell(e){const{id:t,chips:r,collapsible:n,collapsed:a,reorderable:i=!1,onMoveAfter:o=()=>{},onMoveBefore:s=()=>{},onMoveInside:l=()=>{},buttons:c,highlight:u,lite:d,summary:p}=e;var f,h=\"pf-track__shell\";const m=h+\"--drag-before\",g=h+\"--drag-inside\",_=h+\"--drag-after\";function y(e,t){e.classList.remove(m),e.classList.remove(_),e.classList.remove(g),e.classList.add(t)}return(0,T.default)(\".pf-track__shell\",{className:(0,v.classNames)(n&&\"pf-track__shell--clickable\",u&&\"pf-track__shell--highlight\"),onclick:()=>{n&&e.onCollapsedChanged?.(!a),a||(this.scrollIntoView=!0)},draggable:i,ondragstart:e=>{t&&e.dataTransfer?.setData(\"text/plain\",t)},ondragover:e=>{var t,r;i&&(t=e.currentTarget,e=(0,b.currentTargetOffset)(e),p?(r=t.offsetHeight/3,e.y<r?y(t,m):e.y<2*r?y(t,g):y(t,_)):(r=t.offsetHeight/2,e.y<r?y(t,m):y(t,_)))},ondragleave:e=>{var t;i&&(t=e.currentTarget,e=e.relatedTarget)&&!t.contains(e)&&(t.classList.remove(_),t.classList.remove(m))},ondrop:e=>{var t,r,n;i&&(t=e.dataTransfer?.getData(\"text/plain\"),r=e.currentTarget,e=(0,b.currentTargetOffset)(e),void 0!==t&&(p?(n=r.offsetHeight/3,e.y<n?s:e.y<2*n?l:o):(n=r.offsetHeight/2,e.y<n?s:o))(t),r.classList.remove(_),r.classList.remove(g),r.classList.remove(m))}},d?e.title:(0,T.default)(\".pf-track__menubar\",n?(0,T.default)(S.Button,{className:\"pf-track__collapse-button\",compact:!0,icon:a?E.Icons.ExpandDown:E.Icons.ExpandUp}):(0,T.default)(\".pf-track__title-spacer\"),(0,T.default)(R,{title:e.title}),r&&(0,T.default)(k.Stack,{className:\"pf-track__chips\",spacing:\"small\",orientation:\"horizontal\"},r.map(e=>(0,T.default)(A.Chip,{label:e,compact:!0,rounded:!0}))),(0,T.default)(S.ButtonBar,{className:\"pf-track__buttons\",onclick:e=>e.stopPropagation()},c,e.error&&(f=e.error,h=e.pluginId,(0,T.default)(w.Popup,{trigger:(0,T.default)(S.Button,{icon:E.Icons.Crashed,compact:!0})},(0,T.default)(\".pf-track__crash-popup\",(0,T.default)(\"span\",\"This track has crashed.\"),h&&(0,T.default)(\"span\",\"Owning plugin: \"+h),(0,T.default)(S.Button,{label:\"View & Report Crash\",intent:O.Intent.Primary,variant:S.ButtonVariant.Filled,className:w.Popup.DISMISS_POPUP_GROUP_CLASS,onclick:()=>{throw f}}))))),e.subtitle&&!I(e)&&(0,T.default)(\".pf-track__subtitle\",(0,T.default)(C.MiddleEllipsis,{text:e.subtitle}))))}renderContent(e){const{onTrackContentMouseMove:t,onTrackContentMouseOut:r,onTrackContentClick:n,error:a}=e;return(0,T.default)(\".pf-track__canvas\",{className:(0,v.classNames)(a&&\"pf-track__canvas--error\"),onmousemove:e=>{e.redraw=!1,t?.((0,b.currentTargetOffset)(e),i(e))},onmouseout:()=>{r?.()},onmousedown:e=>{this.mouseDownPos=(0,b.currentTargetOffset)(e)},onmouseup:e=>{this.mouseDownPos&&(1<this.mouseDownPos.sub((0,b.currentTargetOffset)(e)).manhattanDistance&&(this.selectionOccurred=!0),this.mouseDownPos=void 0)},onclick:e=>{this.selectionOccurred?this.selectionOccurred=!1:n?.((0,b.currentTargetOffset)(e),i(e))&&e.stopPropagation()}},e.subtitle&&I(e)&&(0,T.default)(C.MiddleEllipsis,{text:e.subtitle}))}};class R{trash=new e.DisposableStack;view({attrs:e}){return(0,T.default)(C.MiddleEllipsis,{className:\"pf-track__title\",text:e.title},(0,T.default)(\".pf-track__title-popup\",e.title))}oncreate({dom:e}){const t=e,r=(0,a.assertExists)(e.querySelector(\".pf-track__title-popup\")),n=new ResizeObserver(()=>{r.clientWidth>t.clientWidth?r.classList.add(\"pf-track__title-popup--visible\"):r.classList.remove(\"pf-track__title-popup--visible\")});n.observe(t),n.observe(r),this.trash.defer(()=>n.disconnect())}onremove(){this.trash.dispose()}}return $U}var YU,JU={};function QU(){if(!YU){YU=1,Object.defineProperty(JU,\"__esModule\",{value:!0}),JU.CursorTooltip=void 0;const i=Jr.__importDefault(xe()),o=ui(),t=_i();var e=Le();const s=si(),l=be(),r=gi();class n{pos=new r.Vector2D({x:0,y:0});getBoundingClientRect(){return new DOMRect(this.pos.x,this.pos.y,0,0)}setPosition(e){this.pos=new r.Vector2D(e)}}let a;document.addEventListener(\"mousemove\",e=>{a=new r.Vector2D({x:e.clientX,y:e.clientY})});JU.CursorTooltip=class{trash=new e.DisposableStack;virtualElement=new n;popper;view({children:e,attrs:t}){const{className:r,...n}=t;return(0,i.default)(o.Portal,{...n,className:(0,l.classNames)(\"pf-cursor-tooltip\",r),onBeforeContentMount:e=>{e=e.closest(\".pf-overlay-container\");return e?{container:e}:{container:void 0}},onContentMount:e=>{this.virtualElement.setPosition(a),this.popper=(0,s.createPopper)(this.virtualElement,e,{placement:\"right\",modifiers:[{name:\"offset\",options:{offset:[0,8]}}]})},onContentUnmount:()=>{this.popper?.destroy()}},e)}oncreate(e){this.trash.use((0,t.bindEventListener)(document,\"mousemove\",e=>{this.virtualElement.setPosition({x:e.clientX,y:e.clientY}),this.popper?.update()}))}onremove(e){this.trash.dispose()}}}return JU}var ZU,XU,e5,t5={};function r5(){if(!ZU){ZU=1,Object.defineProperty(t5,\"__esModule\",{value:!0}),t5.TabStrip=void 0;const i=Jr.__importDefault(xe());t5.TabStrip=class{view({attrs:e}){const{tabs:t,currentTabKey:n,onTabChange:a,className:r}=e;return(0,i.default)(\".pf-tabs\",{className:r},(0,i.default)(\".pf-tabs__tabs\",t.map(e=>{const{key:t,title:r}=e;return(0,i.default)(\".pf-tabs__tab\",{active:n===t,key:t,onclick:()=>{a(t)}},(0,i.default)(\"span.pf-tabs__tab-title\",r))})))}}}return t5}function n5(){if(XU)return jU;var t,r,e;XU=1,Object.defineProperty(jU,\"__esModule\",{value:!0}),jU.WidgetsPage=void 0;const l=Jr.__importDefault(xe()),L=be(),F=hn(),n=Ae(),a=Oe(),c=je(),U=Kl(),o=sm(),B=lN(),j=nu(),i=Ll(),s=nx(),u=Ee(),d=Se(),p=Ke(),f=lm(),h=yi(),H=ui(),m=Bl(),G=Ei(),g=XL(),_=Vl(),y=$N(),T=Ve(),V=N2(),q=GU(),v=Be(),z=mm(),W=yu(),$=bu(),K=zU(),b=oc(),Y=KU(),J=Y3(),Q=bN(),Z=Iu(),E=of(),X=sN(),ee=QU(),te=IN(),S=Ic(),re=cu(),A=ZI(),O=mc(),ne=fP(),ae=r5(),ie=EN(),C=kc(),oe={table:[{category:\"a\",amount:8.167},{category:\"b\",amount:1.492},{category:\"c\",amount:2.782},{category:\"d\",amount:4.253},{category:\"e\",amount:12.7},{category:\"f\",amount:2.228},{category:\"g\",amount:2.015},{category:\"h\",amount:6.094},{category:\"i\",amount:6.966},{category:\"j\",amount:.253},{category:\"k\",amount:1.772},{category:\"l\",amount:4.025},{category:\"m\",amount:2.406},{category:\"n\",amount:6.749},{category:\"o\",amount:7.507},{category:\"p\",amount:1.929},{category:\"q\",amount:.095},{category:\"r\",amount:5.987},{category:\"s\",amount:6.327},{category:\"t\",amount:9.056},{category:\"u\",amount:2.758},{category:\"v\",amount:.978},{category:\"w\",amount:2.36},{category:\"x\",amount:.25},{category:\"y\",amount:1.974},{category:\"z\",amount:.074}]},se={table:[{category:\"a\",amount:8.965},{category:\"b\",amount:1.482},{category:\"c\",amount:3.988},{category:\"d\",amount:3.293},{category:\"e\",amount:7.921},{category:\"f\",amount:.312},{category:\"g\",amount:1.377},{category:\"h\",amount:1.072},{category:\"i\",amount:8.286},{category:\"j\",amount:2.343},{category:\"k\",amount:3.411},{category:\"l\",amount:2.136},{category:\"m\",amount:2.911},{category:\"n\",amount:5.6},{category:\"o\",amount:7.59},{category:\"p\",amount:3.101},{category:\"q\",amount:.003},{category:\"r\",amount:4.571},{category:\"s\",amount:4.263},{category:\"t\",amount:3.966},{category:\"u\",amount:2.347},{category:\"v\",amount:.034},{category:\"w\",amount:4.549},{category:\"x\",amount:.019},{category:\"y\",amount:3.857},{category:\"z\",amount:5.62}]},le={};function w(e,t,r=void 0){return Boolean(e)?t:r}(e=t=t||{}).BarChart=\"Barchart\",e.BarChartLite=\"Barchart (Lite)\",e.Broken=\"Broken\",(e=r=r||{}).English=\"English\",e.Polish=\"Polish\";const k={foobar:!(e.Empty=\"Empty\"),foo:!1,bar:!1,baz:!1,qux:!1,quux:!1,corge:!1,grault:!1,garply:!1,waldo:!1,fred:!1,plugh:!1,xyzzy:!1,thud:!1};let I=\"foo\";function ce(){let n=!1;return{view:function({attrs:e}){var{zIndex:e=!0,absolute:t=!0,top:r=!0}=e;return[(0,l.default)(c.Button,{label:\"Toggle Portal\",onclick:()=>{n=!n}}),n&&(0,l.default)(H.Portal,{style:{position:w(t,\"absolute\"),top:w(r,\"0\"),zIndex:w(e,\"10\",\"0\"),background:\"white\"}},(0,l.default)(\"\",`A very simple portal - a div rendered outside of the normal\n              flow of the page`))]}}}function R(){return(0,l.default)(\"\",{style:{width:\"200px\"}},`Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod\n      tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim\n      veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea\n      commodo consequat.Duis aute irure dolor in reprehenderit in voluptate\n      velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat\n      cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id\n      est laborum.`)}function ue(){let t=!1;return{view:function(){return(0,l.default)(h.Popup,{trigger:(0,l.default)(c.Button,{label:`${t?\"Close\":\"Open\"} Popup`}),isOpen:t,onChange:e=>t=e},(0,l.default)(c.Button,{label:\"Close Popup\",onclick:()=>{t=!t}}))}}}class N{initial;options;constructor(e,t){this.initial=e,this.options=t}}class de{view({attrs:e}){var e=e[\"label\"],t=e.replaceAll(\" \",\"\").toLowerCase(),r=\"#!/widgets#\"+t;return(0,l.default)(a.Anchor,{id:t,href:r},(0,l.default)(\"h2\",e))}}class M{optValues={};opts;renderOptions(e){return 0===e.length?null:(0,l.default)(\".pf-widget-controls\",(0,l.default)(\"h3\",\"Options\"),(0,l.default)(\"ul\",e))}oninit({attrs:{initialOpts:e}}){if(this.opts=e)for(const r in e){var t;Object.prototype.hasOwnProperty.call(e,r)&&((t=e[r])instanceof N?this.optValues[r]=t.initial:this.optValues[r]=t)}}view({attrs:e}){var{renderWidget:e,wide:t,label:r,description:n}=e,a=[];if(this.opts)for(const i in this.opts)Object.prototype.hasOwnProperty.call(this.opts,i)&&a.push((0,l.default)(\"li\",this.renderControlForOption(i)));return[(0,l.default)(de,{label:r}),n&&(0,l.default)(\"p\",n),(0,l.default)(\".pf-widget-block\",(0,l.default)(\"div\",{class:(0,L.classNames)(\"pf-widget-container\",t&&\"pf-widget-container--wide\")},e(this.optValues)),this.renderOptions(a))]}renderControlForOption(e){var t;return this.opts?(t=this.opts[e])instanceof N?this.renderEnumOption(e,t):\"boolean\"==typeof t?this.renderBooleanOption(e):(0,F.isString)(t)?this.renderStringOption(e):\"number\"==typeof t?this.renderNumberOption(e):null:null}renderBooleanOption(e){return(0,l.default)(o.Checkbox,{checked:this.optValues[e],label:e,onchange:()=>{this.optValues[e]=!Boolean(this.optValues[e])}})}renderStringOption(t){return(0,l.default)(\"label\",t+\":\",(0,l.default)(_.TextInput,{placeholder:t,value:this.optValues[t],oninput:e=>{this.optValues[t]=e.target.value}}))}renderNumberOption(t){return(0,l.default)(\"label\",t+\":\",(0,l.default)(_.TextInput,{type:\"number\",placeholder:t,value:this.optValues[t],oninput:e=>{this.optValues[t]=Number.parseInt(e.target.value)}}))}renderEnumOption(t,e){e=e.options.map(e=>(0,l.default)(\"option\",{value:e},e));return(0,l.default)(\"label\",t+\":\",(0,l.default)(m.Select,{value:this.optValues[t],onchange:e=>{e=e.target;this.optValues[t]=e.value}},e))}}const pe=[{name:\"foo\",size:\"10MB\",date:\"2023-04-02\"},{name:\"bar\",size:\"123KB\",date:\"2023-04-08\",children:[{name:\"baz\",size:\"4KB\",date:\"2023-05-07\"},{name:\"qux\",size:\"18KB\",date:\"2023-05-28\",children:[{name:\"quux\",size:\"4KB\",date:\"2023-05-07\"},{name:\"corge\",size:\"18KB\",date:\"2023-05-28\",children:[{name:\"grault\",size:\"4KB\",date:\"2023-05-07\"},{name:\"garply\",size:\"18KB\",date:\"2023-05-28\"},{name:\"waldo\",size:\"87KB\",date:\"2023-05-02\"}]}]}]},{name:\"fred\",size:\"8KB\",date:\"2022-12-27\"}];let P={offset:0,rows:[]};function fe(){const t=[\"foo\",\"bar\",\"baz\"];let r=\"\";return{view:()=>(0,l.default)(W.TagInput,{tags:t,value:r,onTagAdd:e=>{t.push(e),r=\"\"},onChange:e=>{r=e},onTagRemove:e=>{t.splice(e,1)}})}}function he({attrs:e}){let t=0;return{view:()=>(0,l.default)($.SegmentedButtons,{...e,options:[{label:\"Yes\"},{label:\"Maybe\"},{label:\"No\"}],selectedOption:t,onOptionSelected:e=>{t=e}})}}function me(){let t=\"no\";return console.log(t),{view:({attrs:e})=>(0,l.default)(c.ButtonGroup,[(0,l.default)(c.Button,{...e,label:\"Yes\",active:\"yes\"===t,onclick:()=>{t=\"yes\"}}),(0,l.default)(c.Button,{...e,label:\"Maybe\",active:\"maybe\"===t,onclick:()=>{t=\"maybe\"}}),(0,l.default)(c.Button,{...e,label:\"No\",active:\"no\"===t,onclick:()=>{t=\"no\"}})])}}function D(e){return(0,l.default)(M,e)}function ge(){let e=!1;return{view(){return(0,l.default)(\"\",{style:{width:\"150px\",height:\"150px\",border:\"1px dashed gray\",userSelect:\"none\",color:\"gray\",textAlign:\"center\",lineHeight:\"150px\"},onmouseover:()=>e=!0,onmouseout:()=>e=!1},\"Hover here...\",e&&(0,l.default)(ee.CursorTooltip,\"Hi!\"))}}}function _e(){const e=[\"foo\",\"bar\",\"baz\",\"qux\",\"quux\",\"corge\",\"grault\",\"garply\",\"waldo\",\"fred\"];let r=[];return{view(){return(0,l.default)(te.MultiselectInput,{options:e.map(e=>({key:e,label:e})),selectedOptions:r,onOptionAdd:e=>r.push(e),onOptionRemove:t=>{r=r.filter(e=>e!==t)}})}}}function ye(e){const t=new re.SQLDataSource(e.attrs.engine,e.attrs.query);return{view({attrs:e}){return(0,l.default)(S.DataGrid,{...e,data:t})}}}jU.WidgetsPage=class{view({attrs:i}){return(0,l.default)(\".pf-widgets-page\",(0,l.default)(\"h1\",\"Widgets\"),(0,l.default)(M,{label:\"Button\",renderWidget:({label:e,icon:t,rightIcon:r,showAsGrid:n,showInlineWithText:a,...i})=>Boolean(n)?(0,l.default)(\"\",{style:{display:\"grid\",gridTemplateColumns:\"auto auto auto\",gap:\"4px\"}},Object.values(v.Intent).map(t=>Object.values(c.ButtonVariant).map(e=>(0,l.default)(c.Button,{style:{width:\"80px\"},...i,label:e,variant:e,intent:t})))):(0,l.default)(\"\",[Boolean(a)&&\"Inline\",(0,l.default)(c.Button,{icon:w(t,\"send\"),rightIcon:w(r,\"arrow_forward\"),label:w(e,\"Button\",\"\"),onclick:()=>console.log(\"button pressed\"),...i}),Boolean(a)&&\"text\"]),initialOpts:{label:!0,icon:!0,rightIcon:!1,disabled:!1,intent:new N(v.Intent.None,Object.values(v.Intent)),active:!1,compact:!1,loading:!1,variant:new N(c.ButtonVariant.Filled,Object.values(c.ButtonVariant)),showAsGrid:!1,showInlineWithText:!1,rounded:!1}}),(0,l.default)(M,{label:\"Segmented Buttons\",description:`\n          Segmented buttons are a group of buttons where one of them is\n          'selected'; they act similar to a set of radio buttons.\n        `,renderWidget:e=>(0,l.default)(he,e),initialOpts:{disabled:!1}}),(0,l.default)(M,{label:\"ButtonGroup\",renderWidget:e=>(0,l.default)(O.Stack,[(0,l.default)(c.ButtonGroup,[(0,l.default)(c.Button,{label:\"Commit\",...e}),(0,l.default)(c.Button,{icon:n.Icons.ContextMenu,...e})]),(0,l.default)(me,e)]),initialOpts:{variant:new N(c.ButtonVariant.Filled,Object.values(c.ButtonVariant)),disabled:!1,intent:new N(v.Intent.None,Object.values(v.Intent))}}),(0,l.default)(M,{label:\"Checkbox\",renderWidget:e=>(0,l.default)(o.Checkbox,{label:\"Checkbox\",...e}),initialOpts:{disabled:!1}}),(0,l.default)(M,{label:\"Switch\",renderWidget:({label:e,labelLeft:t,...r})=>(0,l.default)(g.Switch,{label:w(e,\"Switch\"),labelLeft:w(t,\"Left Label\"),...r}),initialOpts:{label:!0,labelLeft:!1,disabled:!1}}),(0,l.default)(M,{label:\"Anchor\",renderWidget:({icon:e,showInlineWithText:t,long:r})=>(0,l.default)(\"\",[Boolean(t)&&\"Inline\",(0,l.default)(a.Anchor,{icon:w(e,\"open_in_new\"),href:\"https://perfetto.dev/docs/\",target:\"_blank\"},Boolean(r)?\"This is some really long text and it will probably overflow the container\":\"Link\"),Boolean(t)&&\"text\"]),initialOpts:{icon:!0,showInlineWithText:!1,long:!1}}),(0,l.default)(M,{label:\"Text Input\",renderWidget:({placeholder:e,leftIcon:t,...r})=>(0,l.default)(_.TextInput,{placeholder:w(e,\"Placeholder...\",\"\"),leftIcon:w(t,\"search\"),...r}),initialOpts:{placeholder:!0,disabled:!1,leftIcon:!0}}),(0,l.default)(M,{label:\"Select\",renderWidget:e=>(0,l.default)(m.Select,e,[(0,l.default)(\"option\",{value:\"foo\",label:\"Foo\"}),(0,l.default)(\"option\",{value:\"bar\",label:\"Bar\"}),(0,l.default)(\"option\",{value:\"baz\",label:\"Baz\"})]),initialOpts:{disabled:!1}}),(0,l.default)(M,{label:\"Empty State\",renderWidget:({header:e,content:t})=>(0,l.default)(j.EmptyState,{title:w(e,\"No search results found...\")},w(t,(0,l.default)(c.Button,{label:\"Try again\"}))),initialOpts:{header:!0,content:!0}}),(0,l.default)(M,{label:\"Card\",description:`A card is a simple container with a shadow and rounded\n          corners. It can be used to display grouped content in a visually\n          appealing way.`,renderWidget:({interactive:e})=>(0,l.default)(A.Card,{interactive:e},[(0,l.default)(\"h1\",{style:{margin:\"unset\"}},\"Welcome!\"),(0,l.default)(\"p\",\"Would you like to start your journey?\"),(0,l.default)(O.Stack,{orientation:\"horizontal\"},[(0,l.default)(c.Button,{variant:c.ButtonVariant.Filled,label:\"No thanks...\"}),(0,l.default)(c.Button,{intent:v.Intent.Primary,variant:c.ButtonVariant.Filled,label:\"Let's go!\"})])]),initialOpts:{interactive:!0}}),(0,l.default)(M,{label:\"CardStack\",description:`A container component that can be used to display\n          multiple Card elements in a vertical stack. Cards placed in this list\n          automatically have their borders adjusted to appear as one continuous\n          card with thin borders between them.`,renderWidget:({direction:e,interactive:t})=>(0,l.default)(A.CardStack,{direction:e},[(0,l.default)(A.Card,{interactive:t},(0,l.default)(g.Switch,{label:\"Option 1\"})),(0,l.default)(A.Card,{interactive:t},(0,l.default)(g.Switch,{label:\"Option 2\"})),(0,l.default)(A.Card,{interactive:t},(0,l.default)(g.Switch,{label:\"Option 3\"}))]),initialOpts:{direction:new N(\"vertical\",[\"vertical\",\"horizontal\"]),interactive:!0}}),(0,l.default)(M,{label:\"CopyableLink\",renderWidget:({noicon:e})=>(0,l.default)(J.CopyableLink,{noicon:w(e,!0),url:\"https://perfetto.dev/docs/\"}),initialOpts:{noicon:!1}}),(0,l.default)(M,{label:\"CopyToClipboardButton\",renderWidget:e=>(0,l.default)(Q.CopyToClipboardButton,{textToCopy:\"Text to copy\",...e}),initialOpts:{label:\"Copy\",variant:new N(c.ButtonVariant.Outlined,Object.values(c.ButtonVariant))}}),(0,l.default)(M,{label:\"Portal\",description:`A portal is a div rendered out of normal flow\n          of the hierarchy.`,renderWidget:e=>(0,l.default)(ce,e),initialOpts:{absolute:!0,zIndex:!0,top:!0}}),(0,l.default)(M,{label:\"Popup\",description:`A popup is a nicely styled portal element whose position is\n        dynamically updated to appear to float alongside a specific element on\n        the page, even as the element is moved and scrolled around.`,renderWidget:e=>(0,l.default)(h.Popup,{trigger:(0,l.default)(c.Button,{label:\"Toggle Popup\"}),...e},R()),initialOpts:{position:new N(h.PopupPosition.Auto,Object.values(h.PopupPosition)),closeOnEscape:!0,closeOnOutsideClick:!0}}),(0,l.default)(M,{label:\"Controlled Popup\",description:`The open/close state of a controlled popup is passed in via\n        the 'isOpen' attribute. This means we can get open or close the popup\n        from wherever we like. E.g. from a button inside the popup.\n        Keeping this state external also means we can modify other parts of the\n        page depending on whether the popup is open or not, such as the text\n        on this button.\n        Note, this is the same component as the popup above, but used in\n        controlled mode.`,renderWidget:e=>(0,l.default)(ue,e),initialOpts:{}}),(0,l.default)(M,{label:\"Icon\",renderWidget:e=>(0,l.default)(u.Icon,{icon:\"star\",...e}),initialOpts:{filled:!1,intent:new N(v.Intent.None,Object.values(v.Intent))}}),(0,l.default)(M,{label:\"Tooltip\",description:\"A tooltip is a hover-only, useful as an alternative to the browser's inbuilt 'title' tooltip.\",renderWidget:e=>(0,l.default)(ne.Tooltip,{trigger:(0,l.default)(u.Icon,{icon:\"Warning\"}),...e},R()),initialOpts:{position:new N(h.PopupPosition.Auto,Object.values(h.PopupPosition)),showArrow:!0,offset:0,edgeOffset:0}}),(0,l.default)(M,{label:\"MultiSelect panel\",renderWidget:({...e})=>(0,l.default)(f.MultiSelect,{options:Object.entries(k).map(([e,t])=>({id:e,name:e,checked:t})),onChange:e=>{e.forEach(({id:e,checked:t})=>{k[e]=t})},...e}),initialOpts:{repeatCheckedItemsAtTop:!1,fixedSize:!1}}),(0,l.default)(M,{label:\"Popup with MultiSelect\",renderWidget:({icon:e,...t})=>(0,l.default)(f.PopupMultiSelect,{options:Object.entries(k).map(([e,t])=>({id:e,name:e,checked:t})),popupPosition:h.PopupPosition.Top,label:\"Multi Select\",icon:w(e,n.Icons.LibraryAddCheck),onChange:e=>{e.forEach(({id:e,checked:t})=>{k[e]=t})},...t}),initialOpts:{icon:!0,showNumSelected:!0,repeatCheckedItemsAtTop:!1}}),(0,l.default)(M,{label:\"MultiselectInput\",description:\"Tag input with options\",renderWidget:()=>(0,l.default)(_e)}),(0,l.default)(M,{label:\"Menu\",renderWidget:()=>(0,l.default)(d.Menu,(0,l.default)(d.MenuItem,{label:\"New\",icon:\"add\"}),(0,l.default)(d.MenuItem,{label:\"Open\",icon:\"folder_open\"}),(0,l.default)(d.MenuItem,{label:\"Save\",icon:\"save\",disabled:!0}),(0,l.default)(d.MenuDivider),(0,l.default)(d.MenuItem,{label:\"Delete\",icon:\"delete\"}),(0,l.default)(d.MenuDivider),(0,l.default)(d.MenuItem,{label:\"Share\",icon:\"share\"},(0,l.default)(d.MenuItem,{label:\"Everyone\",icon:\"public\"}),(0,l.default)(d.MenuItem,{label:\"Friends\",icon:\"group\"}),(0,l.default)(d.MenuItem,{label:\"Specific people\",icon:\"person_add\"},(0,l.default)(d.MenuItem,{label:\"Alice\",icon:\"person\"}),(0,l.default)(d.MenuItem,{label:\"Bob\",icon:\"person\"}))),(0,l.default)(d.MenuItem,{label:\"More\",icon:\"more_horiz\"},(0,l.default)(d.MenuItem,{label:\"Query\",icon:\"database\"}),(0,l.default)(d.MenuItem,{label:\"Download\",icon:\"download\"}),(0,l.default)(d.MenuItem,{label:\"Clone\",icon:\"copy_all\"})))}),(0,l.default)(M,{label:\"PopupMenu\",renderWidget:e=>(0,l.default)(d.PopupMenu,{trigger:(0,l.default)(c.Button,{label:\"Menu\",rightIcon:n.Icons.ContextMenu}),...e},(0,l.default)(d.MenuItem,{label:\"New\",icon:\"add\"}),(0,l.default)(d.MenuItem,{label:\"Open\",icon:\"folder_open\"}),(0,l.default)(d.MenuItem,{label:\"Save\",icon:\"save\",disabled:!0}),(0,l.default)(d.MenuDivider),(0,l.default)(d.MenuItem,{label:\"Delete\",icon:\"delete\"}),(0,l.default)(d.MenuDivider),(0,l.default)(d.MenuItem,{label:\"Share\",icon:\"share\"},(0,l.default)(d.MenuItem,{label:\"Everyone\",icon:\"public\"}),(0,l.default)(d.MenuItem,{label:\"Friends\",icon:\"group\"}),(0,l.default)(d.MenuItem,{label:\"Specific people\",icon:\"person_add\"},(0,l.default)(d.MenuItem,{label:\"Alice\",icon:\"person\"}),(0,l.default)(d.MenuItem,{label:\"Bob\",icon:\"person\"}))),(0,l.default)(d.MenuItem,{label:\"More\",icon:\"more_horiz\"},(0,l.default)(d.MenuItem,{label:\"Query\",icon:\"database\"}),(0,l.default)(d.MenuItem,{label:\"Download\",icon:\"download\"}),(0,l.default)(d.MenuItem,{label:\"Clone\",icon:\"copy_all\"}))),initialOpts:{popupPosition:new N(h.PopupPosition.Bottom,Object.values(h.PopupPosition))}}),(0,l.default)(M,{label:\"CursorTooltip\",description:\"A tooltip that follows the mouse around.\",renderWidget:()=>(0,l.default)(ge)}),(0,l.default)(M,{label:\"Spinner\",description:`Simple spinner, rotates forever.\n            Width and height match the font size.`,renderWidget:({fontSize:e,easing:t})=>(0,l.default)(\"\",{style:{fontSize:e}},(0,l.default)(G.Spinner,{easing:t})),initialOpts:{fontSize:new N(\"16px\",[\"12px\",\"16px\",\"24px\",\"32px\",\"64px\",\"128px\"]),easing:!1}}),(0,l.default)(M,{label:\"Tree\",description:`Hierarchical tree with left and right values aligned to\n        a grid.`,renderWidget:e=>(0,l.default)(T.Tree,e,(0,l.default)(T.TreeNode,{left:\"Name\",right:\"my_event\",icon:\"badge\"}),(0,l.default)(T.TreeNode,{left:\"CPU\",right:\"2\",icon:\"memory\"}),(0,l.default)(T.TreeNode,{left:\"Start time\",right:\"1s 435ms\",icon:\"schedule\"}),(0,l.default)(T.TreeNode,{left:\"Duration\",right:\"86ms\",icon:\"timer\"}),(0,l.default)(T.TreeNode,{left:\"SQL\",right:(0,l.default)(d.PopupMenu,{popupPosition:h.PopupPosition.RightStart,trigger:(0,l.default)(a.Anchor,{icon:n.Icons.ContextMenu},\"SELECT * FROM ftrace_event WHERE id = 123\")},(0,l.default)(d.MenuItem,{label:\"Copy SQL Query\",icon:\"content_copy\"}),(0,l.default)(d.MenuItem,{label:\"Execute Query in new tab\",icon:\"open_in_new\"}))}),(0,l.default)(T.TreeNode,{icon:\"account_tree\",left:\"Process\",right:(0,l.default)(a.Anchor,{icon:\"open_in_new\"},\"/bin/foo[789]\")}),(0,l.default)(T.TreeNode,{left:\"Thread\",right:(0,l.default)(a.Anchor,{icon:\"open_in_new\"},\"my_thread[456]\")}),(0,l.default)(T.TreeNode,{left:\"Args\",summary:\"foo: string, baz: string, quux: string[4]\"},(0,l.default)(T.TreeNode,{left:\"foo\",right:\"bar\"}),(0,l.default)(T.TreeNode,{left:\"baz\",right:\"qux\"}),(0,l.default)(T.TreeNode,{left:\"quux\",summary:\"string[4]\"},(0,l.default)(T.TreeNode,{left:\"[0]\",right:\"corge\"}),(0,l.default)(T.TreeNode,{left:\"[1]\",right:\"grault\"}),(0,l.default)(T.TreeNode,{left:\"[2]\",right:\"garply\"}),(0,l.default)(T.TreeNode,{left:\"[3]\",right:\"waldo\"}))),(0,l.default)(T.LazyTreeNode,{left:\"Lazy\",icon:\"bedtime\",fetchData:async()=>(await new Promise(e=>setTimeout(e,1e3)),()=>(0,l.default)(T.TreeNode,{left:\"foo\"}))}),(0,l.default)(T.LazyTreeNode,{left:\"Dynamic\",unloadOnCollapse:!0,icon:\"bedtime\",fetchData:async()=>(await new Promise(e=>setTimeout(e,1e3)),()=>(0,l.default)(T.TreeNode,{left:\"foo\"}))}),function e(){return(0,l.default)(T.LazyTreeNode,{left:\"Recursive\",right:\"...\",fetchData:async()=>()=>e()})}()),wide:!0}),(0,l.default)(M,{label:\"Form\",renderWidget:()=>Te(\"form\")}),(0,l.default)(M,{label:\"Nested Popups\",renderWidget:()=>(0,l.default)(h.Popup,{trigger:(0,l.default)(c.Button,{label:\"Open the popup\"})},(0,l.default)(c.ButtonBar,[(0,l.default)(d.PopupMenu,{trigger:(0,l.default)(c.Button,{label:\"Select an option\"})},(0,l.default)(d.MenuItem,{label:\"Option 1\"}),(0,l.default)(d.MenuItem,{label:\"Option 2\"})),(0,l.default)(c.Button,{label:\"Done\",dismissPopup:!0})]))}),(0,l.default)(M,{label:\"Callout\",renderWidget:({icon:e,...t})=>(0,l.default)(U.Callout,{icon:Boolean(e)?\"info\":void 0,...t},\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla rhoncus tempor neque, sed malesuada eros dapibus vel. Aliquam in ligula vitae tortor porttitor laoreet iaculis finibus est.\"),initialOpts:{intent:new N(v.Intent.None,Object.values(v.Intent)),dismissable:!1,icon:!0}}),(0,l.default)(M,{label:\"Editor\",renderWidget:()=>(0,l.default)(B.Editor,{language:\"perfetto-sql\",onUpdate:e=>{(0,X.parseAndPrintTree)(e)}})}),(0,l.default)(M,{label:\"VegaView\",renderWidget:e=>(0,l.default)(V.VegaView,{spec:function(e){switch(e){case t.BarChart:return`\n{\n  \"$schema\": \"https://vega.github.io/schema/vega/v5.json\",\n  \"description\": \"A basic bar chart example, with value labels shown upon mouse hover.\",\n  \"width\": 400,\n  \"height\": 200,\n  \"padding\": 5,\n\n  \"data\": [\n    {\n      \"name\": \"table\"\n    }\n  ],\n\n  \"signals\": [\n    {\n      \"name\": \"tooltip\",\n      \"value\": {},\n      \"on\": [\n        {\"events\": \"rect:mouseover\", \"update\": \"datum\"},\n        {\"events\": \"rect:mouseout\",  \"update\": \"{}\"}\n      ]\n    }\n  ],\n\n  \"scales\": [\n    {\n      \"name\": \"xscale\",\n      \"type\": \"band\",\n      \"domain\": {\"data\": \"table\", \"field\": \"category\"},\n      \"range\": \"width\",\n      \"padding\": 0.05,\n      \"round\": true\n    },\n    {\n      \"name\": \"yscale\",\n      \"domain\": {\"data\": \"table\", \"field\": \"amount\"},\n      \"nice\": true,\n      \"range\": \"height\"\n    }\n  ],\n\n  \"axes\": [\n    { \"orient\": \"bottom\", \"scale\": \"xscale\" },\n    { \"orient\": \"left\", \"scale\": \"yscale\" }\n  ],\n\n  \"marks\": [\n    {\n      \"type\": \"rect\",\n      \"from\": {\"data\":\"table\"},\n      \"encode\": {\n        \"enter\": {\n          \"x\": {\"scale\": \"xscale\", \"field\": \"category\"},\n          \"width\": {\"scale\": \"xscale\", \"band\": 1},\n          \"y\": {\"scale\": \"yscale\", \"field\": \"amount\"},\n          \"y2\": {\"scale\": \"yscale\", \"value\": 0}\n        },\n        \"update\": {\n          \"fill\": {\"value\": \"steelblue\"}\n        },\n        \"hover\": {\n          \"fill\": {\"value\": \"red\"}\n        }\n      }\n    },\n    {\n      \"type\": \"text\",\n      \"encode\": {\n        \"enter\": {\n          \"align\": {\"value\": \"center\"},\n          \"baseline\": {\"value\": \"bottom\"},\n          \"fill\": {\"value\": \"#333\"}\n        },\n        \"update\": {\n          \"x\": {\"scale\": \"xscale\", \"signal\": \"tooltip.category\", \"band\": 0.5},\n          \"y\": {\"scale\": \"yscale\", \"signal\": \"tooltip.amount\", \"offset\": -2},\n          \"text\": {\"signal\": \"tooltip.amount\"},\n          \"fillOpacity\": [\n            {\"test\": \"datum === tooltip\", \"value\": 0},\n            {\"value\": 1}\n          ]\n        }\n      }\n    }\n  ]\n}\n`;case t.BarChartLite:return`\n{\n  \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.json\",\n  \"description\": \"A simple bar chart with embedded data.\",\n  \"data\": {\n    \"name\": \"table\"\n  },\n  \"mark\": \"bar\",\n  \"encoding\": {\n    \"x\": {\"field\": \"category\", \"type\": \"nominal\", \"axis\": {\"labelAngle\": 0}},\n    \"y\": {\"field\": \"amount\", \"type\": \"quantitative\"}\n  }\n}\n`;case t.Broken:return`{\n  \"description\": 123\n}\n`;default:throw new Error(\"Unhandled case: \"+e)}}(e.exampleSpec),data:function(e){switch(e){case r.English:return oe;case r.Polish:return se;case r.Empty:return le;default:throw new Error(\"Unhandled case: \"+e)}}(e.exampleData)}),initialOpts:{exampleSpec:new N(t.BarChart,Object.values(t)),exampleData:new N(r.English,Object.values(r))}}),(0,l.default)(M,{label:\"Form within PopupMenu\",description:`A form placed inside a popup menu works just fine,\n              and the cancel/submit buttons also dismiss the popup. A bit more\n              margin is added around it too, which improves the look and feel.`,renderWidget:()=>(0,l.default)(d.PopupMenu,{trigger:(0,l.default)(c.Button,{label:\"Popup!\"})},(0,l.default)(d.MenuItem,{label:\"Open form...\"},Te(\"popup-form\")))}),(0,l.default)(M,{label:\"Hotkey\",renderWidget:e=>{var t;return\"auto\"===e.platform?(0,l.default)(s.HotkeyGlyphs,{hotkey:e.hotkey}):(t=e.platform,(0,l.default)(s.HotkeyGlyphs,{hotkey:e.hotkey,spoof:t}))},initialOpts:{hotkey:\"Mod+Shift+P\",platform:new N(\"auto\",[\"auto\",\"Mac\",\"PC\"])}}),(0,l.default)(M,{label:\"Text Paragraph\",description:`A basic formatted text paragraph with wrapping. If\n              it is desirable to preserve the original text format/line breaks,\n              set the compressSpace attribute to false.`,renderWidget:e=>(0,l.default)(y.TextParagraph,{text:`Lorem ipsum dolor sit amet, consectetur adipiscing\n                         elit. Nulla rhoncus tempor neque, sed malesuada eros\n                         dapibus vel. Aliquam in ligula vitae tortor porttitor\n                         laoreet iaculis finibus est.`,compressSpace:e.compressSpace}),initialOpts:{compressSpace:!0}}),(0,l.default)(M,{label:\"Multi Paragraph Text\",description:\"A wrapper for multiple paragraph widgets.\",renderWidget:()=>(0,l.default)(y.MultiParagraphText,(0,l.default)(y.TextParagraph,{text:`Lorem ipsum dolor sit amet, consectetur adipiscing\n                         elit. Nulla rhoncus tempor neque, sed malesuada eros\n                         dapibus vel. Aliquam in ligula vitae tortor porttitor\n                         laoreet iaculis finibus est.`,compressSpace:!0}),(0,l.default)(y.TextParagraph,{text:`Sed ut perspiciatis unde omnis iste natus error sit\n                         voluptatem accusantium doloremque laudantium, totam rem\n                         aperiam, eaque ipsa quae ab illo inventore veritatis et\n                         quasi architecto beatae vitae dicta sunt explicabo.\n                         Nemo enim ipsam voluptatem quia voluptas sit aspernatur\n                         aut odit aut fugit, sed quia consequuntur magni dolores\n                         eos qui ratione voluptatem sequi nesciunt.`,compressSpace:!0}))}),(0,l.default)(M,{label:\"Modal\",description:`Shows a dialog box in the center of the screen over the\n                      top of other elements.`,renderWidget:()=>(0,l.default)(c.Button,{label:\"Show Modal\",onclick:()=>{(0,p.showModal)({title:\"Attention\",icon:n.Icons.Help,content:()=>[(0,l.default)(\"\",\"This is a modal dialog\"),(0,l.default)(h.Popup,{trigger:(0,l.default)(c.Button,{variant:c.ButtonVariant.Filled,label:\"Open Popup\"})},\"Popup content\")],buttons:[{text:\"Cancel\"},{text:\"OK\",primary:!0}]})}})}),(0,l.default)(M,{label:\"Advanced Modal\",description:\"A helper for modal dialog.\",renderWidget:()=>(0,l.default)(x)}),(0,l.default)(M,{label:\"TreeTable\",description:\"Hierarchical tree with multiple columns\",renderWidget:()=>{var e={rows:pe,getChildren:e=>e.children,columns:[{name:\"Name\",getData:e=>e.name},{name:\"Size\",getData:e=>e.size},{name:\"Date\",getData:e=>e.date}]};return(0,l.default)(q.TreeTable,e)}}),(0,l.default)(M,{label:\"VirtualTable\",description:\"Virtualized table for efficient rendering of large datasets\",renderWidget:()=>{var e={columns:[{header:\"x\",width:\"4em\"},{header:\"x^2\",width:\"8em\"}],rows:P.rows,firstRowOffset:P.offset,rowHeight:20,numRows:5e5,style:{height:\"200px\"},onReload:(t,r)=>{var n=[];for(let e=t;e<t+r;e++)n.push({id:e,cells:[e,e**2]});P={offset:t,rows:n}}};return(0,l.default)(z.VirtualTable,e)}}),(0,l.default)(M,{label:\"Tag Input\",description:`\n          TagInput displays Tag elements inside an input, followed by an\n          interactive text input. The container is styled to look like a\n          TextInput, but the actual editable element appears after the last tag.\n          Clicking anywhere on the container will focus the text input.`,renderWidget:()=>(0,l.default)(fe)}),(0,l.default)(M,{label:\"Middle Ellipsis\",description:`\n          Sometimes the start and end of a bit of text are more important than\n          the middle. This element puts the ellipsis in the midde if the content\n          is too wide for its container.`,renderWidget:e=>(0,l.default)(\"div\",{style:{width:Boolean(e.squeeze)?\"150px\":\"450px\"}},(0,l.default)(K.MiddleEllipsis,{text:\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\"})),initialOpts:{squeeze:!1}}),(0,l.default)(M,{label:\"Chip\",description:\"A little chip or tag\",renderWidget:e=>{const{icon:t,...r}=e;return(0,l.default)(O.Stack,{orientation:\"horizontal\"},(0,l.default)(b.Chip,{label:\"Foo\",icon:!0===t?\"info\":void 0,...r}),(0,l.default)(b.Chip,{label:\"Bar\",icon:!0===t?\"warning\":void 0,...r}),(0,l.default)(b.Chip,{label:\"Baz\",icon:!0===t?\"error\":void 0,...r}))},initialOpts:{intent:new N(v.Intent.None,Object.values(v.Intent)),icon:!0,compact:!1,rounded:!1,disabled:!1,removable:!0}}),(0,l.default)(M,{label:\"TrackShell\",description:\"The Mithril parts of a track (the shell, mainly).\",renderWidget:e=>{const{buttons:t,chips:r,multipleTracks:n,error:a,...i}=e,o=()=>[(0,l.default)(c.Button,{icon:\"info\",compact:!0}),(0,l.default)(c.Button,{icon:\"settings\",compact:!0})],s=()=>[\"foo\",\"bar\"];e=e=>(0,l.default)(Y.TrackShell,{buttons:Boolean(t)?o():void 0,chips:Boolean(r)?s():void 0,error:Boolean(a)?new Error(\"An error has occurred\"):void 0,...i},e);return(0,l.default)(\"\",{style:{width:\"500px\",boxShadow:\"0px 0px 1px 1px lightgray\"}},Boolean(n)?[e(),e(),e()]:e())},initialOpts:{title:\"This is the title of the track\",subtitle:\"This is the subtitle of the track\",buttons:!0,chips:!0,heightPx:32,collapsible:!0,collapsed:!0,summary:!1,highlight:!1,error:!1,multipleTracks:!1,reorderable:!1,depth:0,lite:!1}}),(0,l.default)(M,{label:\"Virtual Overlay Canvas\",description:`A scrolling container that draws a virtual canvas over\n          the top of it's content and keeps it in the viewport to make it appear\n          like there is one big canvas over the top of the content.`,renderWidget:()=>{return(0,l.default)(Z.VirtualOverlayCanvas,{className:\"pf-virtual-canvas\",overflowY:\"auto\",onCanvasRedraw({ctx:t,canvasRect:r}){t.strokeStyle=\"red\",t.lineWidth=1,t.font=\"20px Arial\",t.fillStyle=\"black\",t.textAlign=\"left\",t.textBaseline=\"top\";for(let e=0;e<65536;e++){var n={left:0,top:20*e,right:200,bottom:20*e+20};r.overlaps(n)&&(t.strokeRect(0,20*e,200,20),t.fillText(\"Row: \"+e,0,20*e))}}},(0,l.default)(\"\",{style:{height:\"1310720px\",width:\"200px\"}}))},initialOpts:{}}),(0,l.default)(M,{label:\"SplitPanel\",description:\"Resizeable split panel with optional tabs.\",renderWidget:e=>(0,l.default)(\"\",{style:{height:\"400px\",width:\"400px\",border:\"solid 2px gray\"}},(0,l.default)(E.SplitPanel,{leftHandleContent:[Boolean(e.leftContent)&&(0,l.default)(c.Button,{icon:\"Menu\"})],drawerContent:\"Drawer Content\",tabs:Boolean(e.tabs)&&(0,l.default)(\".pf-split-panel__tabs\",(0,l.default)(E.Tab,{active:!0,hasCloseButton:e.showCloseButtons},\"Foo\"),(0,l.default)(E.Tab,{hasCloseButton:e.showCloseButtons},\"Bar\"))},\"Main Content\")),initialOpts:{leftContent:!0,tabs:!0,showCloseButtons:!0}}),D({label:\"Grid\",description:`\n          Presentation layer for grid/table elements. Defines a consistent look\n          and feel for grids but leaves the data and interaction handling to the\n          user. For instance, it provides slots and callbacks for sorting, column\n          reordering and column level aggregations, but doesn't have any\n          opinions about the data or how they should be manipulated.\n        `,renderWidget:({reorderable:e,...t})=>(0,l.default)(\"\",{style:{height:\"400px\",width:\"400px\",overflow:\"hidden\"}},(0,l.default)(C.Grid,t,[(0,l.default)(C.GridHeader,[(0,l.default)(C.GridRow,[(0,l.default)(C.GridHeaderCell,{key:\"id\",sort:\"ASC\",onSort:()=>{},aggregation:{left:\"Σ\",right:15},reorderable:e?{handle:\"left\"}:void 0},\"ID\"),(0,l.default)(C.GridHeaderCell,{key:\"lang\",onSort:()=>{},menuItems:[(0,l.default)(d.MenuItem,{label:\"Filter nulls\"}),(0,l.default)(d.MenuItem,{label:\"Show only nulls\"})],reorderable:e?{handle:\"left\"}:void 0,thickRightBorder:!0},\"Language\"),(0,l.default)(C.GridHeaderCell,{key:\"year\",aggregation:{left:\"AVG\",right:1998.3},reorderable:e?{handle:\"right\"}:void 0},\"Year\"),(0,l.default)(C.GridHeaderCell,{key:\"creator\",reorderable:e?{handle:\"right\"}:void 0},\"Creator\"),(0,l.default)(C.GridHeaderCell,{key:\"typing\",reorderable:e?{handle:\"right\"}:void 0},\"Typing\")])]),(0,l.default)(C.GridBody,[(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},1),(0,l.default)(C.GridDataCell,{menuItems:[(0,l.default)(d.MenuItem,{label:'Filter to \"TypeScript\"'}),(0,l.default)(d.MenuItem,{label:'Exclude \"TypeScript\"'})],thickRightBorder:!0},\"TypeScript\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2012),(0,l.default)(C.GridDataCell,\"Microsoft\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},2),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"JavaScript\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1995),(0,l.default)(C.GridDataCell,\"Brendan Eich\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},3),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Python\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1991),(0,l.default)(C.GridDataCell,\"Guido van Rossum\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},4),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Java\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1995),(0,l.default)(C.GridDataCell,\"James Gosling\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},5),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"C++\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1985),(0,l.default)(C.GridDataCell,\"Bjarne Stroustrup\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},6),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Go\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2009),(0,l.default)(C.GridDataCell,\"Google\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},7),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Rust\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2010),(0,l.default)(C.GridDataCell,\"Graydon Hoare\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},8),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Ruby\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1995),(0,l.default)(C.GridDataCell,\"Yukihiro Matsumoto\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},9),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Swift\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2014),(0,l.default)(C.GridDataCell,\"Apple\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},10),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Kotlin\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2011),(0,l.default)(C.GridDataCell,\"JetBrains\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},11),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"PHP\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1995),(0,l.default)(C.GridDataCell,\"Rasmus Lerdorf\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},12),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"C#\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2e3),(0,l.default)(C.GridDataCell,\"Microsoft\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},13),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Perl\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1987),(0,l.default)(C.GridDataCell,\"Larry Wall\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},14),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Scala\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2004),(0,l.default)(C.GridDataCell,\"Martin Odersky\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},15),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Haskell\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1990),(0,l.default)(C.GridDataCell,\"Lennart Augustsson, et al.\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},16),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Lua\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1993),(0,l.default)(C.GridDataCell,\"Roberto Ierusalimschy, et al.\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},17),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Dart\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2011),(0,l.default)(C.GridDataCell,\"Google\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},18),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Elixir\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2012),(0,l.default)(C.GridDataCell,\"José Valim\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},19),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Clojure\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2007),(0,l.default)(C.GridDataCell,\"Rich Hickey\"),(0,l.default)(C.GridDataCell,\"Dynamic\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},20),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"F#\"),(0,l.default)(C.GridDataCell,{align:\"right\"},2005),(0,l.default)(C.GridDataCell,\"Microsoft\"),(0,l.default)(C.GridDataCell,\"Static\")]),(0,l.default)(C.GridRow,[(0,l.default)(C.GridDataCell,{align:\"right\"},21),(0,l.default)(C.GridDataCell,{thickRightBorder:!0},\"Lisp\"),(0,l.default)(C.GridDataCell,{align:\"right\"},1958),(0,l.default)(C.GridDataCell,\"John McCarthy\"),(0,l.default)(C.GridDataCell,\"Dynamic\")])])])),initialOpts:{fillHeight:!0,reorderable:!0}}),D({label:\"DataGrid (memory backed)\",description:\"An interactive data explorer and viewer.\",renderWidget:({readonlyFilters:e,readonlySorting:t,aggregation:r,...n})=>(0,l.default)(S.DataGrid,{...n,filters:e?[]:void 0,sorting:t?{direction:\"UNSORTED\"}:void 0,columns:[{name:\"id\",title:\"ID\",aggregation:r?\"COUNT\":void 0},{name:\"ts\",title:\"Timestamp\"},{name:\"dur\",aggregation:r?\"SUM\":void 0,title:\"Duration\"},{name:\"name\",title:\"Name\"},{name:\"data\",title:\"Data\"},{name:\"maybe_null\",title:\"Maybe Null?\"},{name:\"category\",title:\"Category\"}],data:[{id:1,name:\"foo\",ts:123n,dur:16n,data:new Uint8Array,maybe_null:null,category:\"aaa\"},{id:2,name:\"bar\",ts:185n,dur:4n,data:new Uint8Array([1,2,3]),maybe_null:\"Non null\",category:\"aaa\"},{id:3,name:\"baz\",ts:575n,dur:12n,data:new Uint8Array([1,2,3]),maybe_null:null,category:\"aaa\"}]}),initialOpts:{showFiltersInToolbar:!0,readonlyFilters:!1,readonlySorting:!1,aggregation:!1}}),D({label:\"DataGrid (query backed)\",description:\"An interactive data explorer and viewer - fetched from SQL.\",renderWidget:({readonlyFilters:e,readonlySorting:t,aggregation:r,...n})=>{var a=i.app.trace;return a?(0,l.default)(ye,{...n,engine:a.engine,query:`\n                SELECT\n                  ts.id as id,\n                  dur,\n                  state,\n                  thread.name as thread_name,\n                  dur,\n                  io_wait,\n                  ucpu\n                FROM thread_state ts\n                JOIN thread USING(utid)\n              `,filters:e?[]:void 0,sorting:t?{direction:\"UNSORTED\"}:void 0,columns:[{name:\"id\",title:\"ID\",aggregation:r?\"COUNT\":void 0},{name:\"dur\",title:\"Duration\",aggregation:r?\"SUM\":void 0},{name:\"state\",title:\"State\"},{name:\"thread_name\",title:\"Thread\"},{name:\"ucpu\",title:\"CPU\"},{name:\"io_wait\",title:\"IO Wait\"}],maxRowsPerPage:10}):\"Load a trace to start\"},initialOpts:{showFiltersInToolbar:!0,readonlyFilters:!1,readonlySorting:!1,aggregation:!1}}),(0,l.default)(M,{label:\"TabStrip\",description:\"A simple tab strip\",renderWidget:()=>(0,l.default)(ae.TabStrip,{tabs:[{key:\"foo\",title:\"Foo\"},{key:\"bar\",title:\"Bar\"},{key:\"baz\",title:\"Baz\"}],currentTabKey:I,onTabChange:e=>{I=e}}),initialOpts:{}}),(0,l.default)(M,{label:\"CodeSnippet\",renderWidget:({wide:e})=>(0,l.default)(ie.CodeSnippet,{language:\"SQL\",text:Boolean(e)?\"SELECT a_very_long_column_name, another_super_long_column_name, yet_another_ridiculously_long_column_name FROM a_table_with_an_unnecessarily_long_name WHERE some_condition_is_true AND another_condition_is_also_true;\":\"SELECT * FROM slice LIMIT 10;\"}),initialOpts:{wide:!1}}))}};class x{static counter=0;static log(e){var t,r=document.getElementById(\"mwlogs\");r&&r instanceof HTMLTextAreaElement&&(t=(new Date).toLocaleTimeString(),r.value+=`[${t}] ${e}\n`,r.scrollTop=r.scrollHeight)}static showModalDialog(e=!1){const t=\"N=\"+ ++x.counter;x.log(\"Open \"+t);let r;function n(){let e=0;return{view:()=>(0,l.default)(\"\",\"Counter value: \"+e,(0,l.default)(c.Button,{label:\"Increment Counter\",onclick:()=>++e}))}}r=e?(0,l.default)(\".pf-modal-pre\",\"Content of the modal dialog.\\nEnd of content\"):()=>(0,l.default)(n),(0,p.showModal)({title:\"Modal dialog \"+t,buttons:[{text:\"OK\",action:()=>x.log(\"OK \"+t)},{text:\"Cancel\",action:()=>x.log(\"Cancel \"+t)},{text:\"Show another now\",action:()=>x.showModalDialog()},{text:\"Show another in 2s\",action:()=>setTimeout(()=>x.showModalDialog(),2e3)}],content:r}).then(()=>x.log(\"Close \"+t))}view(){return(0,l.default)(\"div\",{style:{display:\"flex\",\"flex-direction\":\"column\",width:\"100%\"}},(0,l.default)(\"textarea\",{id:\"mwlogs\",readonly:\"readonly\",rows:\"8\",placeholder:\"Logs will appear here\"}),(0,l.default)(\"input[type=button]\",{value:\"Show modal (static)\",onclick:()=>x.showModalDialog(!0)}),(0,l.default)(\"input[type=button]\",{value:\"Show modal (dynamic)\",onclick:()=>x.showModalDialog(!1)}))}}function Te(e){return(0,l.default)(i.Form,{submitLabel:\"Submit\",submitIcon:\"send\",cancelLabel:\"Cancel\",resetLabel:\"Reset\",onSubmit:()=>window.alert(\"Form submitted!\")},(0,l.default)(i.FormLabel,{for:e+\"-foo\"},\"Foo\"),(0,l.default)(_.TextInput,{id:e+\"-foo\"}),(0,l.default)(i.FormLabel,{for:e+\"-bar\"},\"Bar\"),(0,l.default)(m.Select,{id:e+\"-bar\"},[(0,l.default)(\"option\",{value:\"foo\",label:\"Foo\"}),(0,l.default)(\"option\",{value:\"bar\",label:\"Bar\"}),(0,l.default)(\"option\",{value:\"baz\",label:\"Baz\"})]))}return jU}var a5,i5={},o5={},s5={};var l5,c5={};var u5,d5={};var p5,f5,h5,m5={};function g5(){if(!f5){f5=1,Object.defineProperty(o5,\"__esModule\",{value:!0}),o5.createCriticalUserInteractionTrack=function(t,e){return new n.DatasetSliceTrack({trace:t,uri:e,dataset:new l.SourceDataset({schema:{id:r.NUM,ts:r.LONG,dur:r.LONG,name:r.STR,scopedId:r.NUM,type:r.STR},src:`\n          SELECT\n            hash(type, scoped_id) AS id,\n            scoped_id AS scopedId,\n            name,\n            ts,\n            dur,\n            type\n          FROM chrome_interactions\n        `}),detailsPanel:e=>{switch(e.type){case\"chrome_page_loads\":return new a.PageLoadDetailsPanel(t,e.id);case\"chrome_startups\":return new i.StartupDetailsPanel(t,e.id);case\"chrome_web_content_interactions\":return new o.WebContentInteractionPanel(t,e.id);default:return new s.GenericSliceDetailsTab(t,\"chrome_interactions\",e.id,\"Chrome Interaction\")}}})};const r=Ue(),n=Ge(),a=function(){if(!a5){a5=1,Object.defineProperty(s5,\"__esModule\",{value:!0}),s5.PageLoadDetailsPanel=void 0;const e=Jr.__importDefault(xe()),r=tp(),t=qe(),n=Ls();s5.PageLoadDetailsPanel=class{trace;data;constructor(e,t){this.trace=e,this.data=new r.Details(this.trace,\"chrome_page_loads\",t,{\"Navigation start\":r.DetailsSchema.Timestamp(\"navigation_start_ts\"),\"FCP event\":r.DetailsSchema.Timestamp(\"fcp_ts\"),FCP:r.DetailsSchema.Interval(\"navigation_start_ts\",\"fcp\"),\"LCP event\":r.DetailsSchema.Timestamp(\"lcp_ts\",{skipIfNull:!0}),LCP:r.DetailsSchema.Interval(\"navigation_start_ts\",\"lcp\",{skipIfNull:!0}),DOMContentLoaded:r.DetailsSchema.Timestamp(\"dom_content_loaded_event_ts\",{skipIfNull:!0}),\"onload timestamp\":r.DetailsSchema.Timestamp(\"load_event_ts\",{skipIfNull:!0}),\"performance.mark timings\":r.DetailsSchema.Dict({data:{\"Fully loaded\":r.DetailsSchema.Timestamp(\"mark_fully_loaded_ts\",{skipIfNull:!0}),\"Fully visible\":r.DetailsSchema.Timestamp(\"mark_fully_visible_ts\",{skipIfNull:!0}),Interactive:r.DetailsSchema.Timestamp(\"mark_interactive_ts\",{skipIfNull:!0})},skipIfEmpty:!0}),\"Navigation ID\":\"navigation_id\",\"Browser process\":r.DetailsSchema.SqlIdRef(\"process\",\"browser_upid\"),URL:r.DetailsSchema.URLValue(\"url\")})}render(){return(0,e.default)(t.DetailsShell,{title:\"Chrome Page Load\"},(0,e.default)(n.GridLayout,(0,e.default)(n.GridLayoutColumn,this.data.render())))}}}return s5}(),i=function(){if(!l5){l5=1,Object.defineProperty(c5,\"__esModule\",{value:!0}),c5.StartupDetailsPanel=void 0;const t=Jr.__importDefault(xe()),r=Fe(),n=ks(),a=Ns(),i=Ue(),e=qe(),o=Ls(),s=Bs(),l=Qs(),c=Ve(),u=ns();c5.StartupDetailsPanel=class{trace;id;data;constructor(e,t){this.trace=e,this.id=t}async load(){var e=(await this.trace.engine.query(`\n      SELECT\n        activity_id AS startupId,\n        name,\n        startup_begin_ts AS startupBeginTs,\n        CASE\n          WHEN first_visible_content_ts IS NULL THEN 0\n          ELSE first_visible_content_ts - startup_begin_ts\n        END AS durTofirstVisibleContent,\n        launch_cause AS launchCause,\n        browser_upid AS upid\n      FROM chrome_startups\n      WHERE id = ${this.id};\n    `)).firstRow({startupId:i.NUM,name:i.STR,startupBeginTs:i.LONG,durTofirstVisibleContent:i.LONG,launchCause:i.STR_NULL,upid:i.NUM});this.data={startupId:e.startupId,eventName:e.name,startupBeginTs:r.Time.fromRaw(e.startupBeginTs),durToFirstVisibleContent:e.durTofirstVisibleContent,upid:(0,u.asUpid)(e.upid)},e.launchCause&&(this.data.launchCause=e.launchCause)}getDetailsDictionary(){var e={};return void 0!==this.data&&(e[\"Activity ID\"]=this.data.startupId,e[\"Browser Upid\"]=this.data.upid,e[\"Startup Event\"]=this.data.eventName,e[\"Startup Timestamp\"]=(0,t.default)(a.Timestamp,{trace:this.trace,ts:this.data.startupBeginTs}),e[\"Duration to First Visible Content\"]=(0,t.default)(n.DurationWidget,{trace:this.trace,dur:this.data.durToFirstVisibleContent}),this.data.launchCause&&(e[\"Launch Cause\"]=this.data.launchCause),e[\"SQL ID\"]=(0,t.default)(l.SqlRef,{table:\"chrome_startups\",id:this.id})),e}render(){return this.data?(0,t.default)(e.DetailsShell,{title:\"Chrome Startup\"},(0,t.default)(o.GridLayout,(0,t.default)(o.GridLayoutColumn,(0,t.default)(s.Section,{title:\"Details\"},(0,t.default)(c.Tree,(0,c.dictToTreeNodes)(this.getDetailsDictionary())))))):(0,t.default)(\"h2\",\"Loading\")}}}return c5}(),o=function(){if(!u5){u5=1,Object.defineProperty(d5,\"__esModule\",{value:!0}),d5.WebContentInteractionPanel=void 0;const t=Jr.__importDefault(xe()),r=Fe(),n=ns(),a=ks(),i=Ns(),o=Ue(),e=qe(),s=Ls(),l=Bs(),c=Qs(),u=Ve();d5.WebContentInteractionPanel=class{trace;id;data;constructor(e,t){this.trace=e,this.id=t}async load(){var e=(await this.trace.engine.query(`\n      SELECT\n        ts,\n        dur,\n        interaction_type AS interactionType,\n        total_duration_ms AS totalDurationMs,\n        renderer_upid AS upid\n      FROM chrome_web_content_interactions\n      WHERE id = ${this.id};\n    `)).firstRow({ts:o.LONG,dur:o.LONG,interactionType:o.STR,totalDurationMs:o.LONG,upid:o.NUM});this.data={ts:r.Time.fromRaw(e.ts),dur:e.ts,interactionType:e.interactionType,totalDurationMs:e.totalDurationMs,upid:(0,n.asUpid)(e.upid)}}getDetailsDictionary(){var e={};return void 0!==this.data&&(e.Interaction=this.data.interactionType,e.Timestamp=(0,t.default)(i.Timestamp,{trace:this.trace,ts:this.data.ts}),e.Duration=(0,t.default)(a.DurationWidget,{trace:this.trace,dur:this.data.dur}),e[\"Renderer Upid\"]=this.data.upid,e[\"Total duration of all events\"]=(0,t.default)(a.DurationWidget,{trace:this.trace,dur:this.data.totalDurationMs}),e[\"SQL ID\"]=(0,t.default)(c.SqlRef,{table:\"chrome_web_content_interactions\",id:this.id})),e}render(){return this.data?(0,t.default)(e.DetailsShell,{title:\"Chrome Web Content Interaction\"},(0,t.default)(s.GridLayout,(0,t.default)(s.GridLayoutColumn,(0,t.default)(l.Section,{title:\"Details\"},(0,t.default)(u.Tree,(0,u.dictToTreeNodes)(this.getDetailsDictionary())))))):(0,t.default)(\"h2\",\"Loading\")}}}return d5}(),s=function(){if(!p5){p5=1,Object.defineProperty(m5,\"__esModule\",{value:!0}),m5.GenericSliceDetailsTab=void 0;const a=Jr.__importDefault(xe()),i=De(),o=qe(),s=Ls(),l=Bs(),c=Qs(),u=Ve();m5.GenericSliceDetailsTab=class{trace;sqlTableName;id;title;columns;data;constructor(e,t,r,n,a){this.trace=e,this.sqlTableName=t,this.id=r,this.title=n,this.columns=a}async load(){var e=await this.trace.engine.query(`select * from ${this.sqlTableName} where id = `+this.id);this.data=e.firstRow({})}render(){if(!this.data)return(0,a.default)(\"h2\",\"Loading\");var t={};if(void 0!==this.columns)for(const r of Object.keys(this.columns)){let e=r;t[e=void 0!==this.columns[r].displayName?this.columns[r].displayName:e]=(0,i.sqlValueToReadableString)(this.data[r])}else for(const n of Object.keys(this.data))t[n]=(0,i.sqlValueToReadableString)(this.data[n]);var e=(0,u.dictToTree)(t);return(0,a.default)(o.DetailsShell,{title:this.title},(0,a.default)(s.GridLayout,(0,a.default)(l.Section,{title:\"Details\"},(0,a.default)(u.Tree,e)),(0,a.default)(l.Section,{title:\"Metadata\"},(0,a.default)(u.Tree,[(0,a.default)(u.TreeNode,{left:\"SQL ID\",right:(0,a.default)(c.SqlRef,{table:this.sqlTableName,id:this.id})})]))))}}}return m5}(),l=ze()}return o5}var _5,y5={};var T5,v5={},b5={};function E5(){return T5||(T5=1,Object.defineProperty(b5,\"__esModule\",{value:!0}),b5.generateSqlWithInternalLayout=function(e){let t=\"SELECT \"+e.columns.toString()+`, internal_layout(${e.ts}, ${e.dur}) OVER (ORDER BY `+e.ts+\" ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS depth\"+` FROM (${e.source})`;void 0!==e.whereClause&&(t+=\" WHERE \"+e.whereClause);void 0!==e.orderByClause&&(t+=\" ORDER BY \"+e.orderByClause);return t}),b5}var S5,A5={},O5={};function C5(){var e,t;return S5||(S5=1,Object.defineProperty(O5,\"__esModule\",{value:!0}),O5.JANK_COLOR=void 0,e=Ao(),t=He(),O5.JANK_COLOR=(0,t.makeColorScheme)(new e.HSLColor([343,100,43]))),O5}var w5,k5,I5={},R5={},N5={};function M5(){if(!w5){w5=1,Object.defineProperty(N5,\"__esModule\",{value:!0}),N5.ScrollJankCauseMap=N5.CauseThread=N5.CauseProcess=void 0;const t=Me(),s=Ue();var i,o,e;(e=i||(N5.CauseProcess=i={}))[e.UNKNOWN=0]=\"UNKNOWN\",e.BROWSER=\"Browser\",e.RENDERER=\"Renderer\",e.GPU=\"GPU\",(e=o||(N5.CauseThread=o={}))[e.UNKNOWN=0]=\"UNKNOWN\",e.BROWSER_MAIN=\"CrBrowserMain\",e.RENDERER_MAIN=\"CrRendererMain\",e.COMPOSITOR=\"Compositor\",e.CHROME_CHILD_IO_THREAD=\"Chrome_ChildIOThread\",e.VIZ_COMPOSITOR=\"VizCompositorThread\",e.SURFACE_FLINGER=\"surfaceflinger\";class r{static instance;causes;constructor(){this.causes={}}async initializeCauseMap(e){for(var t=(await e.query(`\n      INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_cause_map;\n\n      SELECT\n        IFNULL(name, '') AS name,\n        IFNULL(description, '') AS description,\n        IFNULL(cause_process, '') AS causeProcess,\n        IFNULL(cause_thread, '') AS causeThread,\n        IFNULL(cause_description, '') AS causeDescription\n      FROM chrome_scroll_jank_causes_with_event_latencies;\n    `)).iter({name:s.STR,description:s.STR,causeProcess:s.STR,causeThread:s.STR,causeDescription:s.STR});t.valid();t.next()){var r=t.name,n=(r in this.causes||(this.causes[r]={description:t.description,jankCauses:[]}),function(e){switch(e){case i.BROWSER:return i.BROWSER;case i.RENDERER:return i.RENDERER;case i.GPU:return i.GPU;default:return i.UNKNOWN}}(t.causeProcess)),a=function(e){switch(e){case o.BROWSER_MAIN:return o.BROWSER_MAIN;case o.RENDERER_MAIN:return o.RENDERER_MAIN;case o.CHROME_CHILD_IO_THREAD:return o.CHROME_CHILD_IO_THREAD;case o.COMPOSITOR:return o.COMPOSITOR;case o.VIZ_COMPOSITOR:return o.VIZ_COMPOSITOR;case o.SURFACE_FLINGER:return o.SURFACE_FLINGER;default:return o.UNKNOWN}}(t.causeThread);this.causes[r].jankCauses.push({description:t.causeDescription,process:n,thread:a})}}static async initialize(e){(0,t.exists)(r.instance)||(r.instance=new r,await r.instance.initializeCauseMap(e))}static getEventLatencyDetails(e){if(e in r.instance.causes)return r.instance.causes[e]}}N5.ScrollJankCauseMap=r}return N5}function P5(){if(!k5){k5=1,Object.defineProperty(R5,\"__esModule\",{value:!0}),R5.getScrollJankCauseStage=async function(e,t){var e=await e.query(`\n    SELECT\n      IFNULL(cause_of_jank, '${i}') AS causeOfJank,\n      IFNULL(sub_cause_of_jank, '${i}') AS subCauseOfJank,\n      IFNULL(substage.ts, -1) AS ts,\n      IFNULL(substage.dur, -1) AS dur\n    FROM chrome_janky_frame_presentation_intervals\n      JOIN descendant_slice(event_latency_id) substage\n    WHERE event_latency_id = ${t}\n      AND substage.name = COALESCE(sub_cause_of_jank, cause_of_jank)\n  `),r=e.iter({causeOfJank:p.STR,subCauseOfJank:p.STR,ts:p.LONG,dur:p.LONG});for(;r.valid();r.next()){var n=r.causeOfJank,a=r.subCauseOfJank;return\"\"==n||n==i?void 0:{name:a==i?n:a,eventLatencyId:t,ts:u.Time.fromRaw(r.ts),dur:r.dur}}return},R5.getEventLatencyCauseTracks=async function(e,t){var r=[],n=o.ScrollJankCauseMap.getEventLatencyDetails(t.name);if(void 0!==n)for(const a of n.jankCauses)switch(a.process){case o.CauseProcess.RENDERER:case o.CauseProcess.BROWSER:case o.CauseProcess.GPU:for(const i of await async function(e,t,r,n){const a=await e.query(`\n      INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_cause_utils;\n\n      SELECT DISTINCT\n        utid,\n        id AS trackId\n      FROM thread_track\n      WHERE utid IN (\n        SELECT DISTINCT\n          utid\n        FROM chrome_select_scroll_jank_cause_thread(\n          ${t},\n          '${r}',\n          '${n}'\n        )\n      );\n  `),i=a.iter({utid:p.NUM,trackId:p.NUM}),o={},s=[];for(;i.valid();i.next()){var l=i.utid;l in o?o[l].trackIds.push(i.trackId):(o[l]={trackIds:[i.trackId],thread:n,causeDescription:\"\"},s.push(l))}return s.map(e=>o[e])}(e,t.eventLatencyId,a.process,a.thread))i.causeDescription=a.description,r.push(i);break;case o.CauseProcess.UNKNOWN:}return r},R5.getCauseLink=function(e,t,r,n,a){const i=[];for(const s of t.trackIds){var o=r.get(s);if(void 0===o)return`Could not locate track ${s} for thread ${t.thread} in the global state`;i.push(o)}return 0!=i.length?(0,l.default)(\"div[style='width:250px']\",(0,l.default)(f.Anchor,{icon:c.Icons.UpdateSelection,onclick:()=>{e.scrollTo({track:{uri:i[0],expandGroup:!0}}),(0,d.exists)(n)&&(0,d.exists)(a)&&(e.scrollTo({time:{start:n,end:u.Time.fromRaw(n+a),viewPercentage:.3}}),e.selection.selectArea({start:n,end:u.Time.fromRaw(n+a),trackUris:i}))}},t.thread)):`No valid tracks for thread ${t.thread}.`};const l=Jr.__importDefault(xe()),c=Ae(),u=Fe(),d=Me(),p=Ue(),f=Oe(),o=M5(),i=\"Unknown\"}return R5}var D5,x5,L5,F5={};function U5(){if(!D5){D5=1,Object.defineProperty(F5,\"__esModule\",{value:!0}),F5.JANKS_TRACK_URI=F5.EVENT_LATENCY_TRACK_URI=F5.SCROLLS_TRACK_URI=void 0,F5.renderSliceRef=function(e){return(0,r.default)(t.Anchor,{icon:n.Icons.UpdateSelection,onclick:()=>{e.trace.selection.selectTrackEvent(e.trackUri,e.id,{scrollToSelection:!0})}},e.title)},F5.renderSqlRef=function(t){return(0,r.default)(e.SqlRef,{table:t.tableName,id:t.id,additionalMenuItems:t.tableDescription&&[(0,r.default)(a.MenuItem,{label:\"Show query results\",icon:\"table\",onclick:()=>i.extensions.addLegacySqlTableTab(t.trace,{table:t.tableDescription,filters:[{op:([e])=>e+\" = \"+t.id,columns:[\"id\"]}]})})]})},F5.rows=function(e,t){var r=[];for(var n=e.iter(t);n.valid();n.next()){var a={};for(const i of Object.keys(t))a[i]=n[i];r.push(a)}return r},F5.fromSqlBool=function(e){if(null!==e)return 0!==e};const r=Jr.__importDefault(xe()),t=Oe(),n=Ae(),e=Qs(),a=Se(),i=tl();F5.SCROLLS_TRACK_URI=\"perfetto.ChromeScrollJank#toplevelScrolls\",F5.EVENT_LATENCY_TRACK_URI=\"perfetto.ChromeScrollJank#eventLatency\",F5.JANKS_TRACK_URI=\"perfetto.ChromeScrollJank#scrollJankV3\"}return F5}function B5(){if(!L5){L5=1;{var n=A5;Object.defineProperty(n,\"__esModule\",{value:!0}),n.JANKY_LATENCY_NAME=void 0,n.createEventLatencyTrack=function(t,e,r){return new a.DatasetSliceTrack({trace:t,uri:e,dataset:new s.SourceDataset({schema:{id:l.NUM,ts:l.LONG,dur:l.LONG,name:l.STR,depth:l.NUM},src:r}),colorizer:e=>e.name===n.JANKY_LATENCY_NAME?i.JANK_COLOR:(0,c.getColorForSlice)(e.name),detailsPanel:e=>new o.EventLatencySliceDetailsPanel(t,e.id)})};const a=Ge(),i=C5(),o=function(){if(!x5){x5=1,Object.defineProperty(I5,\"__esModule\",{value:!0}),I5.EventLatencySliceDetailsPanel=void 0;const i=Jr.__importDefault(xe()),a=Fe(),o=Xo(),s=cp(),l=hs(),c=ns(),u=kc(),d=GU(),p=Ue(),f=qe(),h=Ls(),m=Bs(),g=$N(),_=Ve(),y=P5(),T=M5(),e=Ks(),v=U5(),b=sl();function t(e){var t=[];let r=e;for(;void 0!==r.parent;)t.push(r.name),r=r.parent;return t.reverse()}function r(e,r){if(void 0!==e){let t=e;for(const n of r){let e=!1;for(const a of t.children)if(a.name===n){e=!0,t=a;break}if(!e)return}return t}}function n(e,t){return void 0===t?\"NULL\":(0<(e=e-t)?\"+\":\"\")+a.Duration.humanise(e)}I5.EventLatencySliceDetailsPanel=class{trace;id;name=\"\";topEventLatencyId=void 0;sliceDetails;jankySlice;isJankStage=!1;relevantThreadStage;relevantThreadTracks=[];eventLatencyBreakdown;nextEventLatencyBreakdown;prevEventLatencyBreakdown;tracksByTrackId;constructor(e,t){this.trace=e,this.id=t,this.tracksByTrackId=new Map,this.trace.tracks.getAllTracks().forEach(t=>{t.tags?.trackIds?.forEach(e=>{this.tracksByTrackId.set(e,t.uri)})})}async load(){var e=(await this.trace.engine.query(`\n      SELECT\n        name\n      FROM slice\n      WHERE id = ${this.id}\n      `)).firstRow({name:p.STR});this.name=e.name,await this.loadSlice(),await this.loadJankSlice(),await this.loadRelevantThreads(),await this.loadEventLatencyBreakdown()}async loadSlice(){this.sliceDetails=await(0,l.getSlice)(this.trace.engine,(0,c.asSliceSqlId)(this.id))}async loadJankSlice(){var e;this.sliceDetails&&(\"EventLatency\"===this.sliceDetails.name?this.topEventLatencyId=this.sliceDetails.id:this.topEventLatencyId=(0,c.asSliceSqlId)(await this.getOldestAncestorSliceId()),(e=(await this.trace.engine.query(`\n      SELECT ts, dur, id, cause_of_jank as causeOfJank\n      FROM chrome_janky_frame_presentation_intervals\n      WHERE event_latency_id = `+this.topEventLatencyId)).iter({id:p.NUM,ts:p.LONG,dur:p.LONG,causeOfJank:p.STR})).valid())&&(this.jankySlice={id:e.id,ts:a.Time.fromRaw(e.ts),dur:a.Duration.fromRaw(e.dur),causeOfJank:e.causeOfJank})}async loadRelevantThreads(){var e;this.sliceDetails&&this.topEventLatencyId&&(\"EventLatency\"!==this.sliceDetails.name||this.jankySlice)&&(e=await(0,y.getScrollJankCauseStage)(this.trace.engine,this.topEventLatencyId),\"EventLatency\"===this.sliceDetails.name?(this.isJankStage=!0,this.relevantThreadStage=e):(e&&this.sliceDetails.name===e.name&&(this.isJankStage=!0),this.relevantThreadStage={name:this.sliceDetails.name,eventLatencyId:this.topEventLatencyId,ts:this.sliceDetails.ts,dur:this.sliceDetails.dur}),this.relevantThreadStage)&&(this.relevantThreadTracks=await(0,y.getEventLatencyCauseTracks)(this.trace.engine,this.relevantThreadStage))}async loadEventLatencyBreakdown(){var e;void 0!==this.topEventLatencyId&&(this.eventLatencyBreakdown=await(0,l.getDescendantSliceTree)(this.trace.engine,this.topEventLatencyId),void 0!==(e=(await this.trace.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.event_latency;\n      SELECT\n        id\n      FROM chrome_event_latencies\n      WHERE event_type IN (\n        'FIRST_GESTURE_SCROLL_UPDATE',\n        'GESTURE_SCROLL_UPDATE',\n        'INERTIAL_GESTURE_SCROLL_UPDATE')\n      AND is_presented\n      AND id < ${this.topEventLatencyId}\n      ORDER BY id DESC\n      LIMIT 1\n      ;\n    `)).maybeFirstRow({id:p.NUM}))&&(this.prevEventLatencyBreakdown=await(0,l.getDescendantSliceTree)(this.trace.engine,(0,c.asSliceSqlId)(e.id))),void 0!==(e=(await this.trace.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.event_latency;\n      SELECT\n        id\n      FROM chrome_event_latencies\n      WHERE event_type IN (\n        'FIRST_GESTURE_SCROLL_UPDATE',\n        'GESTURE_SCROLL_UPDATE',\n        'INERTIAL_GESTURE_SCROLL_UPDATE')\n      AND is_presented\n      AND id > ${this.topEventLatencyId}\n      ORDER BY id DESC\n      LIMIT 1;\n    `)).maybeFirstRow({id:p.NUM})))&&(this.nextEventLatencyBreakdown=await(0,l.getDescendantSliceTree)(this.trace.engine,(0,c.asSliceSqlId)(e.id)))}getRelevantLinks(){if(this.sliceDetails&&(\"EventLatency\"!==this.sliceDetails.name||this.relevantThreadStage)){var e=(this.relevantThreadStage||this.sliceDetails).name;const n=(this.relevantThreadStage||this.sliceDetails).ts,a=(this.relevantThreadStage||this.sliceDetails).dur;var t,r=T.ScrollJankCauseMap.getEventLatencyDetails(e);if(void 0!==r)return(t=[]).push((0,i.default)(g.TextParagraph,{text:r.description})),0<this.relevantThreadTracks.length&&t.push((0,i.default)(u.Grid,(0,i.default)(u.GridHeader,(0,i.default)(u.GridRow,(0,i.default)(u.GridHeaderCell,\"Relevant Thread\"),(0,i.default)(u.GridHeaderCell,\"Description\"))),(0,i.default)(u.GridBody,this.relevantThreadTracks.map((e,t)=>{let r=\"\";return 0!=t&&e.thread==this.relevantThreadTracks[t-1].thread||(r=e.causeDescription),(0,i.default)(u.GridRow,(0,i.default)(u.GridDataCell,(0,y.getCauseLink)(this.trace,e,this.tracksByTrackId,n,a)),(0,i.default)(u.GridDataCell,\"\"===r?r:(0,i.default)(g.TextParagraph,{text:r})))})))),(0,i.default)(m.Section,{title:this.isJankStage?\"Jank Cause: \"+e:e},t)}}async getOldestAncestorSliceId(){let e=-1;if(this.sliceDetails)for(var t=(await this.trace.engine.query(`\n      SELECT\n        id\n      FROM ancestor_slice(${this.sliceDetails.id})\n      WHERE name = 'EventLatency'\n    `)).iter({id:p.NUM});t.valid();t.next()){e=t.id;break}return e}getLinksSection(){return(0,i.default)(m.Section,{title:\"Quick links\"},(0,i.default)(_.Tree,(0,i.default)(_.TreeNode,{left:this.sliceDetails?(0,e.sliceRef)(this.trace,this.sliceDetails,\"EventLatency in context of other Input events\"):\"EventLatency in context of other Input events\",right:this.sliceDetails?\"\":\"N/A\"}),this.jankySlice&&(0,i.default)(_.TreeNode,{left:(0,v.renderSliceRef)({trace:this.trace,id:this.jankySlice.id,trackUri:v.JANKS_TRACK_URI,title:this.jankySlice.causeOfJank})})))}getBreakdownSection(){var e;if(void 0!==this.eventLatencyBreakdown)return e={rows:[this.eventLatencyBreakdown],getChildren:e=>e.children,columns:[{name:\"Name\",getData:e=>e.name},{name:\"Duration\",getData:e=>a.Duration.humanise(e.dur)},{name:\"vs prev\",getData:e=>n(e.dur,r(this.prevEventLatencyBreakdown,t(e))?.dur)},{name:\"vs next\",getData:e=>n(e.dur,r(this.nextEventLatencyBreakdown,t(e))?.dur)}]},(0,i.default)(m.Section,{title:\"EventLatency Stage Breakdown\"},(0,i.default)(d.TreeTable,e))}getDescriptionText(){return(0,i.default)(g.MultiParagraphText,(0,i.default)(g.TextParagraph,{text:`EventLatency tracks the latency of handling a given input event\n                 (Scrolls, Touches, Taps, etc). Ideally from when the input was\n                 read by the hardware to when it was reflected on the screen.`}),(0,i.default)(g.TextParagraph,{text:`Note however the concept of coalescing or terminating early. This\n               occurs when we receive multiple events or handle them quickly by\n               converting them into a different event. Such as a TOUCH_MOVE\n               being converted into a GESTURE_SCROLL_UPDATE type, or a multiple\n               GESTURE_SCROLL_UPDATE events being formed into a single frame at\n               the end of the RendererCompositorQueuingDelay.`}),(0,i.default)(g.TextParagraph,{text:`*Important:* On some platforms (MacOS) we do not get feedback on\n               when something is presented on the screen so the timings are only\n               accurate for what we know on a given platform.`}))}render(){var e,t,r;return this.sliceDetails?(e=this.sliceDetails,(t=[]).push((0,i.default)(m.Section,{title:\"Description\"},(0,i.default)(\".div\",this.getDescriptionText()))),(r=this.getRelevantLinks())&&t.push(r),t.push(this.getLinksSection()),t.push(this.getBreakdownSection()),(0,i.default)(f.DetailsShell,{title:\"Slice\",description:this.name},(0,i.default)(h.GridLayout,(0,i.default)(h.GridLayoutColumn,(0,s.renderDetails)(this.trace,e),(0,o.hasArgs)(e.args)&&(0,i.default)(m.Section,{title:\"Arguments\"},(0,i.default)(_.Tree,(0,b.renderSliceArguments)(this.trace,e.args)))),(0,i.default)(h.GridLayoutColumn,t)))):(0,i.default)(f.DetailsShell,{title:\"Slice\",description:\"Loading...\"})}}}return I5}(),s=ze(),l=Ue(),c=He();n.JANKY_LATENCY_NAME=\"Janky EventLatency\"}}return A5}var j5,H5,G5={},V5={};function q5(){if(!j5){j5=1,Object.defineProperty(V5,\"__esModule\",{value:!0}),V5.ScrollJankV3DetailsPanel=void 0;const r=Jr.__importDefault(xe()),n=Fe(),a=Me(),i=hs(),o=ns(),t=ks(),s=Ns(),l=Ue(),c=qe(),u=Ls(),d=Bs(),p=Qs(),e=$N(),f=Ve(),h=U5();V5.ScrollJankV3DetailsPanel=class{trace;id;data;sliceDetails;eventLatencySliceDetails;causeSliceDetails;subcauseSliceDetails;constructor(e,t){this.trace=e,this.id=t}async load(){var e=(await this.trace.engine.query(`\n      SELECT\n        IIF(\n          cause_of_jank IS NOT NULL,\n          cause_of_jank || IIF(\n            sub_cause_of_jank IS NOT NULL, \"::\" || sub_cause_of_jank, \"\"\n            ), \"Unknown\") || \" Jank\" AS name,\n        id,\n        ts,\n        dur,\n        delayed_frame_count AS delayedVsyncCount,\n        event_latency_id AS eventLatencyId,\n        IFNULL(cause_of_jank, \"UNKNOWN\") AS causeOfJank,\n        IFNULL(sub_cause_of_jank, \"UNKNOWN\") AS subcauseOfJank\n      FROM chrome_janky_frame_presentation_intervals\n      WHERE id = `+this.id)).firstRow({name:l.STR,id:l.NUM,ts:l.LONG,dur:l.LONG,delayedVsyncCount:l.NUM,eventLatencyId:l.NUM,causeOfJank:l.STR,subcauseOfJank:l.STR});this.data={name:e.name,id:e.id,ts:n.Time.fromRaw(e.ts),dur:e.dur,delayedVsyncCount:e.delayedVsyncCount,eventLatencyId:e.eventLatencyId,jankCause:e.causeOfJank,jankSubcause:e.subcauseOfJank},await this.loadJankyFrames(),await this.loadSlices()}hasCause(){return void 0!==this.data&&\"UNKNOWN\"!==this.data.jankCause}hasSubcause(){return void 0!==this.data&&this.hasCause()&&\"UNKNOWN\"!==this.data.jankSubcause}async loadSlices(){var e,t;(0,a.exists)(this.data)&&(this.sliceDetails=(e=this.trace.engine,t=this.data.eventLatencyId,await(0,i.getSlice)(e,(0,o.asSliceSqlId)(t))),e=(await this.trace.engine.query(`\n        SELECT ts, dur\n        FROM slice\n        WHERE id = ${this.data.eventLatencyId}\n      `)).iter({ts:l.LONG,dur:l.LONG}),this.eventLatencySliceDetails={ts:n.Time.fromRaw(e.ts),dur:e.dur},this.hasCause()&&(t=(await this.trace.engine.query(`\n          SELECT id, ts, dur\n          FROM descendant_slice(${this.data.eventLatencyId})\n          WHERE name = \"${this.data.jankCause}\"\n        `)).iter({id:l.NUM,ts:l.LONG,dur:l.LONG})).valid()&&(this.causeSliceDetails={id:t.id,ts:n.Time.fromRaw(t.ts),dur:t.dur}),this.hasSubcause())&&(e=(await this.trace.engine.query(`\n          SELECT id, ts, dur\n          FROM descendant_slice(${this.data.eventLatencyId})\n          WHERE name = \"${this.data.jankSubcause}\"\n        `)).iter({id:l.NUM,ts:l.LONG,dur:l.LONG})).valid()&&(this.subcauseSliceDetails={id:e.id,ts:n.Time.fromRaw(e.ts),dur:e.dur})}async loadJankyFrames(){var e;(0,a.exists)(this.data)&&(e=(await this.trace.engine.query(`\n        SELECT\n          COUNT(*) AS jankyFrames\n        FROM chrome_frame_info_with_delay\n        WHERE delay_since_last_frame >\n          (\n            SELECT\n              vsync_interval + vsync_interval / 2\n            FROM chrome_vsyncs)\n          AND delay_since_last_input <\n            (\n              SELECT\n                vsync_interval + vsync_interval / 2\n              FROM chrome_vsyncs)\n          AND presentation_timestamp >= ${this.data.ts}\n          AND presentation_timestamp <= ${this.data.ts+this.data.dur};\n      `)).firstRow({jankyFrames:l.NUM}),this.data.jankyFrames=e.jankyFrames)}renderDetailsDictionary(){var e={};return(0,a.exists)(this.data)&&(e.Name=this.data.name,e[\"Expected Frame Presentation Timestamp\"]=(0,r.default)(s.Timestamp,{trace:this.trace,ts:this.data.ts}),e[\"Actual Frame Presentation Timestamp\"]=(0,r.default)(s.Timestamp,{trace:this.trace,ts:n.Time.add(this.data.ts,this.data.dur)}),e[\"Frame Presentation Delay\"]=(0,r.default)(t.DurationWidget,{trace:this.trace,dur:this.data.dur}),e[\"Vsyncs Delayed\"]=this.data.delayedVsyncCount,(0,a.exists)(this.data.jankyFrames)&&(e[\"Janky Frame Count\"]=this.data.jankyFrames),e[\"Original Event Latency\"]=this.data.eventLatencyId,e[\"SQL ID\"]=(0,r.default)(p.SqlRef,{table:\"chrome_janky_frame_presentation_intervals\",id:this.data.id})),(0,f.dictToTreeNodes)(e)}getDescriptionText(){return(0,r.default)(e.MultiParagraphText,(0,r.default)(e.TextParagraph,{text:`Delay between when the frame was expected to be presented and\n                 when it was actually presented.`}),(0,r.default)(e.TextParagraph,{text:`This is the period of time during which the user is viewing a\n                 frame that isn't correct.`}))}getLinksSection(){var e,t={};return(0,a.exists)(this.sliceDetails)&&(0,a.exists)(this.data)?(t[\"Janked Event Latency stage\"]=(0,a.exists)(this.causeSliceDetails)&&(0,h.renderSliceRef)({trace:this.trace,id:this.causeSliceDetails.id,trackUri:h.EVENT_LATENCY_TRACK_URI,title:this.data.jankCause}),this.hasSubcause()&&(t[\"Sub-cause of Jank\"]=(0,a.exists)(this.subcauseSliceDetails)&&(0,h.renderSliceRef)({trace:this.trace,id:this.subcauseSliceDetails.id,trackUri:h.EVENT_LATENCY_TRACK_URI,title:this.data.jankCause})),e=(0,f.dictToTreeNodes)(t),(0,a.exists)(this.eventLatencySliceDetails)?e.unshift((0,r.default)(f.TreeNode,{left:(0,h.renderSliceRef)({trace:this.trace,id:this.data.eventLatencyId,trackUri:h.EVENT_LATENCY_TRACK_URI,title:this.data.jankCause}),right:\"\"})):e.unshift(\"Event Latency\"),e):(0,f.dictToTreeNodes)(t)}render(){var e;return void 0===this.data?(0,r.default)(\"h2\",\"Loading\"):(e=this.renderDetailsDictionary(),(0,r.default)(c.DetailsShell,{title:\"EventLatency\"},(0,r.default)(u.GridLayout,(0,r.default)(u.GridLayoutColumn,(0,r.default)(d.Section,{title:\"Details\"},(0,r.default)(f.Tree,e))),(0,r.default)(u.GridLayoutColumn,(0,r.default)(d.Section,{title:\"Description\"},this.getDescriptionText()),(0,r.default)(d.Section,{title:\"Jank Cause\"},(0,r.default)(f.Tree,this.getLinksSection()))))))}}}return V5}function z5(){if(!H5){H5=1,Object.defineProperty(G5,\"__esModule\",{value:!0}),G5.createScrollJankV3Track=function(t,e){return new r.DatasetSliceTrack({trace:t,uri:e,dataset:new o.SourceDataset({schema:{id:s.NUM,ts:s.LONG,dur:s.LONG,name:s.STR},src:`\n        SELECT\n          IIF(\n            cause_of_jank IS NOT NULL,\n            cause_of_jank || IIF(\n              sub_cause_of_jank IS NOT NULL, \"::\" || sub_cause_of_jank, \"\"\n              ), \"${l}\") || \"${c}\" AS name,\n          id,\n          ts,\n          dur,\n          event_latency_id\n        FROM chrome_janky_frame_presentation_intervals\n      `}),colorizer:e=>{let t=e.name.substring(0,e.name.indexOf(c));return(t=-1!=t.indexOf(\"::\")?t.substring(t.indexOf(\"::\")+\"::\".length):t)==l?n.JANK_COLOR:(0,a.getColorForSlice)(t)},detailsPanel:e=>new i.ScrollJankV3DetailsPanel(t,e.id)})};const r=Ge(),n=C5(),a=He(),i=q5(),o=ze(),s=Ue(),l=\"Unknown\",c=\" Jank\"}return G5}var W5,$5={};function K5(){if(!W5){W5=1,Object.defineProperty($5,\"__esModule\",{value:!0}),$5.ScrollUpdateClassification=void 0,$5.createScrollTimelineModel=async function(e,t,r){var n=Object.freeze(await async function(e){const t=new Set(await async function(e){e=await e.query(`\n      INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n      SELECT name FROM pragma_table_info('chrome_scroll_update_info');`);return(0,c.rows)(e,{name:o.STR}).map(e=>e.name)}(e)),r=await e.query(`\n      INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n      SELECT\n        step_name,\n        ts_column_name,\n        dur_column_name\n      FROM chrome_scroll_update_info_step_templates;`);return(0,c.rows)(r,{step_name:o.STR,ts_column_name:o.STR_NULL,dur_column_name:o.STR_NULL}).map(e=>({stepName:e.step_name,tsColumnName:i(e.ts_column_name,t,\"Invalid ts_column_name in chrome_scroll_update_info_step_templates\"),durColumnName:i(e.dur_column_name,t,\"Invalid dur_column_name in chrome_scroll_update_info_step_templates\")}))}(e));return async function(e,t,r){await e.query(`INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n      CREATE PERFETTO TABLE ${t} AS\n      WITH\n        -- Unpivot all ts+dur columns into rows. Each row corresponds to a step\n        -- of a particular scroll update. Some of the rows might have null\n        -- ts/dur values, which will be filtered out in unordered_slices.\n        -- |scroll_steps| = |chrome_scroll_update_info| * |stepTemplates|\n        scroll_steps AS (${r.map(e=>`\n              SELECT\n                id AS scroll_update_id,\n                ${e.tsColumnName??\"NULL\"} AS ts,\n                ${e.durColumnName??\"NULL\"} AS dur,\n                ${(0,s.escapeQuery)(e.stepName)} AS name\n              FROM chrome_scroll_update_info`).join(\" UNION ALL \")}),\n        -- For each scroll update, find its ts+dur by aggregating over all steps\n        -- within the scroll update. We're basically trying to find MIN(COL1_ts,\n        -- COL2_ts, ..., COLn_ts) and MAX(COL1_ts, COL2_ts, ..., COLn_ts) from\n        -- all the various ts columns in chrome_scroll_update_info. The\n        -- difficulty is that some of those columns might be null, which is\n        -- better handled by the aggregate MIN/MAX functions (which ignore null\n        -- values) than the scalar MIN/MAX functions (which return null if any\n        -- argument is null). Furthermore, using a COALESCE function with so\n        -- many arguments (COL1_ts, COL2_ts, ..., COLn_ts) seems to cause\n        -- out-of-memory crashes.\n        scroll_update_bounds AS (\n          SELECT\n            scroll_update_id,\n            MIN(ts) AS ts,\n            MAX(ts) - MIN(ts) AS dur\n          FROM scroll_steps\n          GROUP BY scroll_update_id\n        ),\n        -- Now that we know the ts+dur of all scroll updates, we can lay them\n        -- out efficiently (i.e. assign depths to them to avoid overlaps).\n        scroll_update_layouts AS (\n          ${(0,l.generateSqlWithInternalLayout)({columns:[\"scroll_update_id\",\"ts\",\"dur\"],source:\"scroll_update_bounds\",ts:\"ts\",dur:\"dur\",whereClause:\"ts IS NOT NULL AND dur IS NOT NULL\"})}\n        ),\n        -- We interleave the top-level scroll update slices (at even depths) and\n        -- their constituent step slices (at odd depths).\n        unordered_slices AS (\n          SELECT\n            scroll_update_layouts.ts,\n            scroll_update_layouts.dur,\n            2 * scroll_update_layouts.depth AS depth,\n            -- Combine all applicable scroll update classifications into the\n            -- name. For example, if a scroll update is both janky and inertial,\n            -- its name will be name 'Janky Inertial Scroll Update'.\n            CONCAT_WS(\n              ' ',\n              IIF(chrome_scroll_update_info.is_janky, 'Janky', NULL),\n              IIF(\n                chrome_scroll_update_info.is_first_scroll_update_in_scroll,\n                'First',\n                NULL\n              ),\n              IIF(\n                NOT chrome_scroll_update_info.is_first_scroll_update_in_frame,\n                'Coalesced',\n                NULL\n              ),\n              IIF(chrome_scroll_update_info.is_inertial, 'Inertial', NULL),\n              'Scroll Update'\n            ) AS name,\n            -- Pick the highest-priority applicable scroll update\n            -- classification. For example, if a scroll update is both janky and\n            -- inertial, classify it as janky.\n            CASE\n              WHEN chrome_scroll_update_info.is_janky\n                THEN ${a.JANKY}\n              WHEN chrome_scroll_update_info.is_first_scroll_update_in_scroll\n                THEN ${a.FIRST_SCROLL_UPDATE_IN_FRAME}\n              WHEN NOT chrome_scroll_update_info.is_first_scroll_update_in_frame\n                THEN ${a.COALESCED}\n              WHEN chrome_scroll_update_info.is_inertial\n                THEN ${a.INERTIAL}\n              ELSE ${a.DEFAULT}\n            END AS classification,\n            scroll_update_layouts.scroll_update_id\n          FROM scroll_update_layouts\n          JOIN chrome_scroll_update_info\n          ON scroll_update_layouts.scroll_update_id\n            = chrome_scroll_update_info.id\n          UNION ALL\n          SELECT\n            scroll_steps.ts,\n            MAX(scroll_steps.dur, 0) AS dur,\n            2 * scroll_update_layouts.depth + 1 AS depth,\n            scroll_steps.name,\n            ${a.STEP} AS classification,\n            scroll_update_layouts.scroll_update_id\n          FROM scroll_steps\n          JOIN scroll_update_layouts USING(scroll_update_id)\n          WHERE scroll_steps.ts IS NOT NULL AND scroll_steps.dur IS NOT NULL\n        )\n      -- Finally, we sort all slices chronologically and assign them\n      -- monotonically increasing IDs. Note that we cannot reuse\n      -- chrome_scroll_update_info.id (not even for the top-level scroll update\n      -- slices) because Perfetto slice IDs must be 32-bit unsigned integers.\n      SELECT\n        ROW_NUMBER() OVER (ORDER BY ts ASC) AS id,\n        *\n      FROM unordered_slices\n      ORDER BY ts ASC`)}(e,t,n),{tableName:t,trackUri:r,stepTemplates:n}};const o=Ue(),s=Fu(),l=E5(),c=U5();var a,e;function i(e,t,r){return null==e||t.has(e)?e:(console.error(`${r}: ${e}\n      (allowed column names: ${Array.from(t).join(\", \")})`),null)}(e=a||($5.ScrollUpdateClassification=a={}))[e.DEFAULT=0]=\"DEFAULT\",e[e.JANKY=1]=\"JANKY\",e[e.COALESCED=2]=\"COALESCED\",e[e.FIRST_SCROLL_UPDATE_IN_FRAME=3]=\"FIRST_SCROLL_UPDATE_IN_FRAME\",e[e.INERTIAL=4]=\"INERTIAL\",e[e.STEP=-1]=\"STEP\"}return $5}var Y5,J5={};function Q5(){if(!Y5){Y5=1,Object.defineProperty(J5,\"__esModule\",{value:!0}),J5.createFlatColoredDurationTrack=function(t,e,r){return new f.DatasetSliceTrack({trace:t,uri:e,dataset:new p.SourceDataset({schema:{id:d.NUM,ts:d.LONG,dur:d.LONG,name:d.STR,depth:d.NUM},src:`\n        SELECT\n          id,\n          ts,\n          dur,\n          printf('%.3fms', dur / 1e6) AS name,\n          0 as depth\n        FROM (${r})\n      `}),colorizer:e=>{e=Math.log2(Math.max(Number(e.dur)/1e6,1)),e=(0,i.clamp)(e,1,6)-1;return(0,o.makeColorScheme)(new a.HSLColor([60*e,80,70]))},detailsPanel:e=>({render(){return(0,n.default)(s.Section,{title:\"Details\"},(0,n.default)(l.Tree,(0,n.default)(l.TreeNode,{left:\"ID\",right:e.id}),(0,n.default)(l.TreeNode,{left:\"Timestamp\",right:(0,n.default)(u.Timestamp,{trace:t,ts:h.Time.fromRaw(e.ts)})}),(0,n.default)(l.TreeNode,{left:\"Duration\",right:(0,n.default)(c.DurationWidget,{trace:t,dur:e.dur})})))}})})};const n=Jr.__importDefault(xe()),a=Ao(),i=So(),o=He(),s=Bs(),l=Ve(),c=ks(),u=Ns(),d=Ue(),p=ze(),f=Ge(),h=Fe()}return J5}var Z5,X5,e6,t6={},r6={},n6={};function a6(){if(!Z5){Z5=1,Object.defineProperty(n6,\"__esModule\",{value:!0}),n6.getInputScrollDeltas=async function(e,t){var e=await e.query(`\n    INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_offsets;\n\n    SELECT\n      ts,\n      IFNULL(scroll_update_id, 0) AS scrollUpdateId,\n      delta_y AS deltaY,\n      relative_offset_y AS offsetY\n    FROM chrome_scroll_input_offsets\n    WHERE scroll_id = ${t};\n  `),r=e.iter({ts:l.LONG,scrollUpdateId:l.NUM,deltaY:l.NUM,offsetY:l.NUM}),n=[];for(;r.valid();r.next())n.push({ts:s.Time.fromRaw(r.ts),scrollUpdateId:r.scrollUpdateId,scrollOffset:r.offsetY,scrollDelta:r.deltaY,predictorJank:0});return n},n6.getPresentedScrollDeltas=async function(e,t){var e=await e.query(`\n    INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_offsets;\n\n    SELECT\n      ts,\n      IFNULL(scroll_update_id, 0) AS scrollUpdateId,\n      delta_y AS deltaY,\n      relative_offset_y AS offsetY\n    FROM chrome_presented_scroll_offsets\n    WHERE scroll_id = ${t}\n      -- Filter out the deltas which do not have a presented timestamp.\n      -- This is needed for now as we don't perfectly all EventLatencies to\n      -- presentation, e.g. for dropped frames (crbug.com/380286381).\n      AND ts IS NOT NULL\n      AND delta_y IS NOT NULL;\n  `),r=e.iter({ts:l.LONG,scrollUpdateId:l.NUM,deltaY:l.NUM,offsetY:l.NUM}),n=[];var a;for(;r.valid();r.next())a=r.offsetY,n.push({ts:s.Time.fromRaw(r.ts),scrollUpdateId:r.scrollUpdateId,scrollOffset:a,scrollDelta:r.deltaY,predictorJank:0});return n},n6.getPredictorJankDeltas=async function(e,t){var e=await e.query(`\n    INCLUDE PERFETTO MODULE chrome.scroll_jank.predictor_error;\n\n    SELECT\n      present_ts AS ts,\n      IFNULL(scroll_update_id, 0) AS scrollUpdateId,\n      delta_y AS deltaY,\n      relative_offset_y AS offsetY,\n      predictor_jank AS predictorJank\n    FROM chrome_predictor_error\n    WHERE scroll_id = ${t}\n      AND predictor_jank != 0 AND predictor_jank IS NOT NULL;\n  `),r=e.iter({ts:l.LONG,scrollUpdateId:l.NUM,deltaY:l.NUM,offsetY:l.NUM,predictorJank:l.NUM}),n=[];var a;for(;r.valid();r.next())a=r.offsetY,n.push({ts:s.Time.fromRaw(r.ts),scrollUpdateId:r.scrollUpdateId,scrollOffset:a,scrollDelta:r.deltaY,predictorJank:r.predictorJank});return n},n6.getJankIntervals=async function(e,t,r){var e=await e.query(`\n    INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_intervals;\n\n    SELECT\n      ts,\n      dur\n    FROM chrome_janky_frame_presentation_intervals\n    WHERE ts >= ${t} AND ts <= ${t+r};\n  `),n=e.iter({ts:l.LONG,dur:l.LONG}),a=[];for(;n.valid();n.next())a.push({start_ts:Number(n.ts),end_ts:Number(n.ts+n.dur)});return a},n6.buildScrollOffsetsGraph=function(e,t,n,r){var e=i(e,u),t=t.filter(t=>{for(let e=0;e<n.length;e++){var r=n[e];if(r.ts==t.ts&&r.scrollUpdateId==t.scrollUpdateId)return!1}return!0}),t=i(t,d),a=i(n,p),r=function(t){let r=\"\";for(let e=0;e<t.length;e++){0!=e&&(r+=\",\");var n=t[e];r+=`\n    {\n      \"start\": ${n.start_ts/1e9},\n      \"end\": ${n.end_ts/1e9}\n    }\n    `}return r}(r);return(0,o.default)(c.VegaView,{spec:`\n{\n  \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.json\",\n  \"description\": \"Scatter plot showcasing the pixel offset deltas between input frames and presented frames.\",\n  \"width\": \"container\",\n  \"height\": 200,\n  \"padding\": 5,\n\n  \"data\": {\n    \"name\": \"table\"\n  },\n\n  \"layer\": [\n    {\n      \"mark\": \"rect\",\n      \"data\": {\n        \"values\": [\n          ${r}\n        ]\n      },\n      \"encoding\": {\n        \"x\": {\n          \"field\": \"start\",\n          \"type\": \"quantitative\"\n        },\n        \"x2\": {\n          \"field\": \"end\",\n          \"type\": \"quantitative\"\n        },\n        \"color\": {\n          \"value\": \"#D3D3D3\"\n        }\n      }\n    },\n    {\n      \"mark\": {\n        \"type\": \"point\",\n        \"filled\": true\n      },\n\n      \"encoding\": {\n        \"x\": {\n          \"field\": \"ts\",\n          \"type\": \"quantitative\",\n          \"title\": \"Raw Timestamp\",\n          \"axis\" : {\n            \"labels\": true\n          },\n          \"scale\": {\"zero\":false}\n        },\n        \"y\": {\n          \"field\": \"offset\",\n          \"type\": \"quantitative\",\n          \"title\": \"Offset (pixels)\",\n          \"scale\": {\"zero\":false}\n        },\n        \"color\": {\n          \"field\": \"category\",\n          \"type\": \"nominal\",\n          \"scale\": {\n            \"domain\": [\n              \"${u}\",\n              \"${d}\",\n              \"${p}\"\n            ],\n            \"range\": [\"blue\", \"red\", \"orange\"]\n          },\n          \"legend\": {\n            \"title\":null\n          }\n        },\n        \"tooltip\": [\n          {\n            \"field\": \"delta\",\n            \"type\": \"quantitative\",\n            \"title\": \"Delta\",\n            \"format\": \".2f\"\n          },\n          {\n            \"field\": \"scrollUpdateId\",\n            \"type\": \"quantititive\",\n            \"title\": \"Trace Id\"\n          },\n          {\n            \"field\": \"predictorJank\",\n            \"type\": \"nominal\",\n            \"title\": \"Predictor Jank\"\n          }\n        ]\n      }\n    }\n  ]\n}\n`,data:{table:e.concat(t).concat(a)}})};const o=Jr.__importDefault(xe()),s=Fe(),l=Ue(),c=N2(),u=\"Input\",d=\"Presented\",p=\"Presented with Predictor Jank\";function i(e,t){var r=[];for(const n of e){let e=\"N/A\";0<n.predictorJank&&(e=parseFloat(n.predictorJank.toString()).toFixed(2),e+=\" (times delta compared to the next/previous frame's delta)\"),r.push({category:t,ts:Number(n.ts)/1e9,scrollUpdateId:n.scrollUpdateId,offset:n.scrollOffset,delta:n.scrollDelta,predictorJank:e})}return r}}return n6}function i6(){if(!e6){e6=1,Object.defineProperty(t6,\"__esModule\",{value:!0}),t6.createTopLevelScrollTrack=function(t,e){return new r.DatasetSliceTrack({trace:t,uri:e,dataset:new n.SourceDataset({schema:{id:a.NUM,rawId:a.LONG,ts:a.LONG,dur:a.LONG,name:a.STR},src:`\n        SELECT\n          ROW_NUMBER() OVER (ORDER BY ts) as id,\n          id as rawId,\n          printf(\"Scroll %s\", CAST(id AS STRING)) AS name,\n          ts,\n          dur\n        FROM chrome_scrolls\n        -- If the scroll has started before the trace started, we won't have\n        -- an id for it, so skip it to ensure that we can show the remaining\n        -- traces.\n        WHERE id IS NOT NULL\n      `}),detailsPanel:e=>new i.ScrollDetailsPanel(t,e.rawId)})};const r=Ge(),n=ze(),a=Ue(),i=function(){if(!X5){X5=1,Object.defineProperty(r6,\"__esModule\",{value:!0}),r6.ScrollDetailsPanel=void 0;const t=Jr.__importDefault(xe()),r=Fe(),a=Me(),n=kc(),i=ks(),o=Ns(),s=Ue(),l=qe(),c=Ls(),u=Bs(),d=Qs(),e=$N(),p=Ve(),f=a6(),h=U5();r6.ScrollDetailsPanel=class{trace;id;data;metrics={};orderedJankSlices=[];scrollDeltas;constructor(e,t){this.trace=e,this.id=t}async load(){var e=(await this.trace.engine.query(`\n      WITH scrolls AS (\n        SELECT\n          id,\n          IFNULL(gesture_scroll_begin_ts, ts) AS start_ts,\n          CASE\n            WHEN gesture_scroll_end_ts IS NOT NULL THEN gesture_scroll_end_ts\n            WHEN gesture_scroll_begin_ts IS NOT NULL\n              THEN gesture_scroll_begin_ts + dur\n            ELSE ts + dur\n          END AS end_ts\n        FROM chrome_scrolls WHERE id = ${this.id})\n      SELECT\n        id,\n        start_ts AS ts,\n        end_ts - start_ts AS dur\n      FROM scrolls`)).firstRow({id:s.LONG,ts:s.LONG,dur:s.LONG});this.data={id:e.id,ts:r.Time.fromRaw(e.ts),dur:e.dur},await this.loadMetrics()}async loadMetrics(){await this.loadInputEventCount(),await this.loadFrameStats(),await this.loadDelayData(),await this.loadScrollOffsets()}async loadInputEventCount(){var e;(0,a.exists)(this.data)&&(e=(await this.trace.engine.query(`\n        SELECT\n          COUNT(*) AS inputEventCount\n        FROM slice s\n        WHERE s.name = \"EventLatency\"\n          AND EXTRACT_ARG(arg_set_id, 'event_latency.event_type') = 'TOUCH_MOVED'\n          AND s.ts >= ${this.data.ts}\n          AND s.ts + s.dur <= ${this.data.ts+this.data.dur}\n      `)).firstRow({inputEventCount:s.NUM}),this.metrics.inputEventCount=e.inputEventCount)}async loadFrameStats(){var e;(0,a.exists)(this.data)&&(e=(await this.trace.engine.query(`\n        SELECT\n          IFNULL(frame_count, 0) AS frameCount,\n          IFNULL(missed_vsyncs, 0) AS missedVsyncs,\n          IFNULL(presented_frame_count, 0) AS presentedFrameCount,\n          IFNULL(janky_frame_count, 0) AS jankyFrameCount,\n          ROUND(IFNULL(janky_frame_percent, 0), 2) AS jankyFramePercent\n        FROM chrome_scroll_stats\n        WHERE scroll_id = ${this.data.id}\n      `)).iter({frameCount:s.NUM,missedVsyncs:s.NUM,presentedFrameCount:s.NUM,jankyFrameCount:s.NUM,jankyFramePercent:s.NUM})).valid()&&(this.metrics.frameCount=e.frameCount,this.metrics.missedVsyncs=e.missedVsyncs,this.metrics.presentedFrameCount=e.presentedFrameCount,this.metrics.jankyFrameCount=e.jankyFrameCount,this.metrics.jankyFramePercent=e.jankyFramePercent)}async loadDelayData(){if((0,a.exists)(this.data))for(var e=(await this.trace.engine.query(`\n        SELECT\n          id,\n          ts,\n          dur,\n          IFNULL(sub_cause_of_jank, IFNULL(cause_of_jank, 'Unknown')) AS cause,\n          event_latency_id AS eventLatencyId,\n          delayed_frame_count AS delayVsync\n        FROM chrome_janky_frame_presentation_intervals s\n        WHERE s.ts >= ${this.data.ts}\n          AND s.ts + s.dur <= ${this.data.ts+this.data.dur}\n        ORDER by dur DESC;\n      `)).iter({id:s.NUM,ts:s.LONG,dur:s.LONG_NULL,cause:s.STR,eventLatencyId:s.NUM_NULL,delayVsync:s.NUM_NULL});e.valid();e.next())this.orderedJankSlices.push({id:e.id,ts:r.Time.fromRaw(e.ts),dur:e.dur??void 0,cause:e.cause,delayVsync:e.delayVsync??void 0})}async loadScrollOffsets(){if((0,a.exists)(this.data)){var e=await(0,f.getInputScrollDeltas)(this.trace.engine,this.data.id),r=await(0,f.getPresentedScrollDeltas)(this.trace.engine,this.data.id),t=await(0,f.getPredictorJankDeltas)(this.trace.engine,this.data.id),n=await(0,f.getJankIntervals)(this.trace.engine,this.data.ts,this.data.dur);if(this.scrollDeltas=(0,f.buildScrollOffsetsGraph)(e,r,t,n),0<r.length){this.metrics.startOffset=r[0].scrollOffset,this.metrics.endOffset=r[r.length-1].scrollOffset;let t=0;for(let e=0;e<r.length;e++)t+=Math.abs(r[e].scrollDelta);0!=t&&(this.metrics.totalPixelsScrolled=t)}}}renderMetricsDictionary(){var e={};return e[\"Total Finger Input Event Count\"]=this.metrics.inputEventCount,e[\"Total Vsyncs within Scrolling period\"]=this.metrics.frameCount,e[\"Total Chrome Presented Frames\"]=this.metrics.presentedFrameCount,e[\"Total Janky Frames\"]=this.metrics.jankyFrameCount,e[\"Number of Vsyncs Janky Frames were Delayed by\"]=this.metrics.missedVsyncs,void 0!==this.metrics.jankyFramePercent&&(e[\"Janky Frame Percentage (Total Janky Frames / Total Chrome Presented Frames)\"]=this.metrics.jankyFramePercent+\"%\"),null!=this.metrics.startOffset&&(e[\"Starting Offset\"]=this.metrics.startOffset),null!=this.metrics.endOffset&&(e[\"Ending Offset\"]=this.metrics.endOffset),null!=this.metrics.startOffset&&null!=this.metrics.endOffset&&(e[\"Net Pixels Scrolled\"]=Math.abs(this.metrics.endOffset-this.metrics.startOffset)),null!=this.metrics.totalPixelsScrolled&&(e[\"Total Pixels Scrolled (all directions)\"]=this.metrics.totalPixelsScrolled),(0,p.dictToTreeNodes)(e)}getDelayTable(){return 0<this.orderedJankSlices.length?(0,t.default)(n.Grid,(0,t.default)(n.GridHeader,(0,t.default)(n.GridRow,(0,t.default)(n.GridHeaderCell,\"Cause\"),(0,t.default)(n.GridHeaderCell,\"Duration\"),(0,t.default)(n.GridHeaderCell,\"Delayed Vsyncs\"))),(0,t.default)(n.GridBody,this.orderedJankSlices.map(e=>(0,t.default)(n.GridRow,(0,t.default)(n.GridDataCell,(0,h.renderSliceRef)({trace:this.trace,id:e.id,trackUri:h.JANKS_TRACK_URI,title:e.cause})),(0,t.default)(n.GridDataCell,void 0!==e.dur?(0,t.default)(i.DurationWidget,{trace:this.trace,dur:e.dur}):\"NULL\"),(0,t.default)(n.GridDataCell,e.delayVsync))))):\"None\"}getDescriptionText(){return(0,t.default)(e.MultiParagraphText,(0,t.default)(e.TextParagraph,{text:`The interval during which the user has started a scroll ending\n                 after their finger leaves the screen and any resulting fling\n                 animations have finished.`}),(0,t.default)(e.TextParagraph,{text:`Note: This can contain periods of time where the finger is down\n                 and not moving and no active scrolling is occurring.`}),(0,t.default)(e.TextParagraph,{text:`Note: Sometimes if a user touches the screen quickly after\n                 letting go or Chrome was hung and got into a bad state. A new\n                 scroll will start which will result in a slightly overlapping\n                 scroll. This can occur due to the last scroll still outputting\n                 frames (to get caught up) and the \"new\" scroll having started\n                 producing frames after the user has started scrolling again.`}))}getGraphText(){return(0,t.default)(e.MultiParagraphText,(0,t.default)(e.TextParagraph,{text:`The scroll offset is the discrepancy in physical screen pixels\n                 between two consecutive frames.`}),(0,t.default)(e.TextParagraph,{text:`The overall curve of the graph indicates the direction (up or\n                 down) by which the user scrolled over time.`}),(0,t.default)(e.TextParagraph,{text:`Grey blocks in the graph represent intervals of jank\n                 corresponding with the Chrome Scroll Janks track.`}),(0,t.default)(e.TextParagraph,{text:`Yellow dots represent frames that were presented (sae as the red\n                 dots), but that we suspect are visible to users as unsmooth\n                 velocity/stutter (predictor jank).`}))}render(){var e;return null==this.data?(0,t.default)(\"h2\",\"Loading\"):(e=(0,p.dictToTreeNodes)({\"Scroll ID\":\"\"+this.data.id,\"Start time\":(0,t.default)(o.Timestamp,{trace:this.trace,ts:this.data.ts}),Duration:(0,t.default)(i.DurationWidget,{trace:this.trace,dur:this.data.dur}),\"SQL ID\":(0,t.default)(d.SqlRef,{table:\"chrome_scrolls\",id:this.id})}),(0,t.default)(l.DetailsShell,{title:\"Scroll\"},(0,t.default)(c.GridLayout,(0,t.default)(c.GridLayoutColumn,(0,t.default)(u.Section,{title:\"Details\"},(0,t.default)(p.Tree,e)),(0,t.default)(u.Section,{title:\"Slice Metrics\"},(0,t.default)(p.Tree,this.renderMetricsDictionary())),(0,t.default)(u.Section,{title:\"Frame Presentation Delays\"},this.getDelayTable())),(0,t.default)(c.GridLayoutColumn,(0,t.default)(u.Section,{title:\"Description\"},this.getDescriptionText()),(0,t.default)(u.Section,{title:\"Scroll Offsets Plot\"},(0,t.default)(\".div[style='padding-bottom:5px']\",this.getGraphText()),this.scrollDeltas)))))}}}return r6}()}return t6}var o6,s6,l6,c6={},u6={};function d6(){if(!o6){o6=1,Object.defineProperty(u6,\"__esModule\",{value:!0}),u6.ScrollTimelineDetailsPanel=void 0;var e=Jr;const r=e.__importDefault(xe()),n=Ue(),a=qe(),i=Ls(),o=Fe(),s=Pe(),l=Bs(),c=Ve(),u=Ns(),d=ks(),p=U5(),f=e.__importDefault(FI()),h=bd(),m=DI();function t(e,t){return[(r=e,n=t,a=\"id\",(t=new m.StandardColumn(a)).renderCell=(e,t)=>null===e||\"bigint\"!=typeof e?(0,h.renderStandardCell)(e,a,t):{content:(0,p.renderSliceRef)({trace:r,id:Number(e),trackUri:n,title:\"\"+e})},t),new m.StandardColumn(\"scroll_update_id\"),new m.TimestampColumn(e,\"ts\"),new m.DurationColumn(e,\"dur\"),new m.StandardColumn(\"name\"),new m.StandardColumn(\"classification\")];var r,n,a}u6.ScrollTimelineDetailsPanel=class{trace;model;id;sliceData;scrollData;constructor(e,t,r){this.trace=e,this.model=t,this.id=r}async load(){await this.querySliceData(),await this.queryScrollData()}async querySliceData(){(0,s.assertTrue)(void 0===this.sliceData);var e=(await this.trace.engine.query(`\n      SELECT\n        name,\n        ts,\n        dur,\n        scroll_update_id\n      FROM ${this.model.tableName}\n      WHERE id = `+this.id)).firstRow({name:n.STR,ts:n.LONG,dur:n.LONG,scroll_update_id:n.LONG});this.sliceData={name:e.name,ts:o.Time.fromRaw(e.ts),dur:o.Duration.fromRaw(e.dur),scrollUpdateId:e.scroll_update_id}}async queryScrollData(){(0,s.assertExists)(this.sliceData),(0,s.assertTrue)(void 0===this.scrollData);var e=(await this.trace.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n      SELECT\n        vsync_interval_ms,\n        is_presented,\n        is_janky,\n        is_inertial,\n        is_first_scroll_update_in_scroll,\n        is_first_scroll_update_in_frame\n      FROM chrome_scroll_update_info\n      WHERE id = `+this.sliceData.scrollUpdateId)).firstRow({vsync_interval_ms:n.NUM_NULL,is_presented:n.NUM_NULL,is_janky:n.NUM_NULL,is_inertial:n.NUM_NULL,is_first_scroll_update_in_scroll:n.NUM_NULL,is_first_scroll_update_in_frame:n.NUM_NULL});this.scrollData={vsyncInterval:null===e.vsync_interval_ms?void 0:o.Duration.fromMillis?.(e.vsync_interval_ms),isPresented:(0,p.fromSqlBool)(e.is_presented),isJanky:(0,p.fromSqlBool)(e.is_janky),isInertial:(0,p.fromSqlBool)(e.is_inertial),isFirstScrollUpdateInScroll:(0,p.fromSqlBool)(e.is_first_scroll_update_in_scroll),isFirstScrollUpdateInFrame:(0,p.fromSqlBool)(e.is_first_scroll_update_in_frame)}}render(){return(0,r.default)(a.DetailsShell,{title:\"Slice\",description:this.sliceData?.name??\"Loading...\"},(0,r.default)(i.GridLayout,(0,r.default)(i.GridLayoutColumn,this.renderSliceDetails()),(0,r.default)(i.GridLayoutColumn,this.renderScrollDetails())))}renderSliceDetails(){let e;return e=void 0===this.sliceData?\"Loading...\":(0,r.default)(c.Tree,(0,r.default)(c.TreeNode,{left:\"Name\",right:this.sliceData.name}),(0,r.default)(c.TreeNode,{left:\"Start time\",right:(0,r.default)(u.Timestamp,{trace:this.trace,ts:this.sliceData.ts})}),(0,r.default)(c.TreeNode,{left:\"Duration\",right:(0,r.default)(d.DurationWidget,{trace:this.trace,dur:this.sliceData.dur})}),(0,r.default)(c.TreeNode,{left:\"SQL ID\",right:(0,p.renderSqlRef)({trace:this.trace,tableName:this.model.tableName,tableDescription:{name:this.model.tableName,columns:t(this.trace,this.model.trackUri)},id:this.id})})),(0,r.default)(l.Section,{title:\"Slice details\"},e)}renderScrollDetails(){let e;var t;return e=void 0===this.sliceData||void 0===this.scrollData?\"Loading...\":(t=this.trace.plugins.getPlugin(f.default).getSqlModules()?.getModuleForTable(\"chrome_scroll_update_info\")?.getSqlTableDescription(\"chrome_scroll_update_info\"),(0,r.default)(c.Tree,(0,r.default)(c.TreeNode,{left:\"Vsync interval\",right:void 0===this.scrollData.vsyncInterval?\"\"+this.scrollData.vsyncInterval:(0,r.default)(d.DurationWidget,{trace:this.trace,dur:this.scrollData.vsyncInterval})}),(0,r.default)(c.TreeNode,{left:\"Is presented\",right:\"\"+this.scrollData.isPresented}),(0,r.default)(c.TreeNode,{left:\"Is janky\",right:\"\"+this.scrollData.isJanky}),(0,r.default)(c.TreeNode,{left:\"Is inertial\",right:\"\"+this.scrollData.isInertial}),(0,r.default)(c.TreeNode,{left:\"Is first scroll update in scroll\",right:\"\"+this.scrollData.isFirstScrollUpdateInScroll}),(0,r.default)(c.TreeNode,{left:\"Is first scroll update in frame\",right:\"\"+this.scrollData.isFirstScrollUpdateInFrame}),(0,r.default)(c.TreeNode,{left:\"SQL ID\",right:(0,p.renderSqlRef)({trace:this.trace,tableName:\"chrome_scroll_update_info\",id:this.sliceData.scrollUpdateId,tableDescription:t})}))),(0,r.default)(l.Section,{title:\"Scroll details\"},e)}}}return u6}function p6(){if(!s6){s6=1,Object.defineProperty(c6,\"__esModule\",{value:!0}),c6.createScrollTimelineTrack=function(t,r){return new l.DatasetSliceTrack({trace:t,uri:r.trackUri,dataset:new c.SourceDataset({src:r.tableName,schema:{id:n.NUM,ts:n.LONG,dur:n.LONG,name:n.STR,classification:n.NUM,depth:n.NUM}}),colorizer:e=>function(e){switch(e){case s.ScrollUpdateClassification.DEFAULT:return u;case s.ScrollUpdateClassification.JANKY:return a.JANK_COLOR;case s.ScrollUpdateClassification.COALESCED:return d;case s.ScrollUpdateClassification.FIRST_SCROLL_UPDATE_IN_FRAME:return p;case s.ScrollUpdateClassification.INERTIAL:return f;case s.ScrollUpdateClassification.STEP:return}}(e.classification)??(0,i.getColorForSlice)(e.name),detailsPanel:e=>new o.ScrollTimelineDetailsPanel(t,r,e.id)})};const n=Ue(),a=C5(),i=He();var e=Ao();const o=d6(),s=K5(),l=Ge(),c=ze(),u=(0,i.makeColorScheme)(new e.HSLColor([231,48,48])),d=(0,i.makeColorScheme)(new e.HSLColor([0,0,62])),p=(0,i.makeColorScheme)(new e.HSLColor([120,44,34])),f=(0,i.makeColorScheme)(new e.HSLColor([187,90,42]))}return c6}var f6,h6,m6,g6={},_6={},y6={};function T6(){if(!h6){h6=1,Object.defineProperty(_6,\"__esModule\",{value:!0}),_6.createChromeTasksThreadTrack=function(t,e,r){return new n.DatasetSliceTrack({trace:t,uri:e,dataset:new o.SourceDataset({schema:{id:i.NUM,ts:i.LONG,dur:i.LONG,name:i.STR},src:\"chrome_tasks\",filter:{col:\"utid\",eq:r}}),detailsPanel:e=>new a.ChromeTasksDetailsPanel(t,e.id)})};const n=Ge(),a=function(){if(!f6){f6=1,Object.defineProperty(y6,\"__esModule\",{value:!0}),y6.ChromeTasksDetailsPanel=void 0;const e=Jr.__importDefault(xe()),r=tp(),t=qe(),n=Ls();y6.ChromeTasksDetailsPanel=class{data;constructor(e,t){this.data=new r.Details(e,\"chrome_tasks\",t,{\"Task name\":\"name\",\"Start time\":r.DetailsSchema.Timestamp(\"ts\"),Duration:r.DetailsSchema.Interval(\"ts\",\"dur\"),Process:r.DetailsSchema.SqlIdRef(\"process\",\"upid\"),Thread:r.DetailsSchema.SqlIdRef(\"thread\",\"utid\"),Slice:r.DetailsSchema.SqlIdRef(\"slice\",\"id\")})}render(){return(0,e.default)(t.DetailsShell,{title:\"Chrome Tasks\"},(0,e.default)(n.GridLayout,(0,e.default)(n.GridLayoutColumn,this.data.render())))}}}return y6}(),i=Ue(),o=ze()}return _6}var v6,b6={};var E6,S6,A6={},O6={};function C6(){if(!E6){E6=1,Object.defineProperty(O6,\"__esModule\",{value:!0}),O6.getThreadTable=function(e){return{name:\"thread\",columns:[new t.ThreadIdColumn(e,\"utid\",{type:\"id\"}),new t.StandardColumn(\"tid\"),new t.StandardColumn(\"name\"),new t.TimestampColumn(e,\"start_ts\"),new t.TimestampColumn(e,\"end_ts\"),new t.ProcessIdColumn(e,\"upid\",{notNull:!0}),new t.StandardColumn(\"is_main_thread\")]}},O6.getProcessTable=function(e){return{name:\"process\",columns:[new t.ProcessIdColumn(e,\"upid\",{type:\"id\"}),new t.StandardColumn(\"pid\"),new t.StandardColumn(\"name\"),new t.TimestampColumn(e,\"start_ts\"),new t.TimestampColumn(e,\"end_ts\"),new t.ProcessIdColumn(e,\"parent_upid\"),new t.StandardColumn(\"uid\"),new t.StandardColumn(\"android_appid\"),new t.StandardColumn(\"cmdline\",{startsHidden:!0}),new t.StandardColumn(\"machine_id\"),new t.ArgSetIdColumn(\"arg_set_id\")]}},O6.getSliceTable=function(e){return{imports:[\"viz.slices\"],name:\"_viz_slices_for_ui_table\",displayName:\"Slices\",columns:[new t.SliceIdColumn(e,\"id\",{notNull:!0,type:\"id\"}),new t.TimestampColumn(e,\"ts\"),new t.DurationColumn(e,\"dur\"),new t.StandardColumn(\"category\"),new t.StandardColumn(\"name\"),new t.StandardColumn(\"track_id\",{startsHidden:!0}),new t.ThreadIdColumn(e,\"utid\"),new t.ProcessIdColumn(e,\"upid\"),new t.StandardColumn(\"depth\",{startsHidden:!0}),new t.SliceIdColumn(e,\"parent_id\"),new t.ArgSetIdColumn(\"arg_set_id\")]}},O6.getAndroidLogsTable=function(e){return{name:\"android_logs\",columns:[new t.StandardColumn(\"id\"),new t.TimestampColumn(e,\"ts\"),new t.StandardColumn(\"tag\"),new t.StandardColumn(\"prio\"),new t.ThreadIdColumn(e,\"utid\"),new t.ProcessIdColumn(e,{column:\"upid\",source:{table:\"thread\",joinOn:{utid:\"utid\"}}}),new t.StandardColumn(\"msg\")]}},O6.getSchedTable=function(e){return{name:\"sched\",columns:[new t.SchedIdColumn(e,\"id\"),new t.TimestampColumn(e,\"ts\"),new t.DurationColumn(e,\"dur\"),new t.StandardColumn(\"cpu\"),new t.StandardColumn(\"priority\"),new t.ThreadIdColumn(e,\"utid\"),new t.ProcessIdColumn(e,{column:\"upid\",source:{table:\"thread\",joinOn:{utid:\"utid\"}}}),new t.StandardColumn(\"end_state\"),new t.StandardColumn(\"ucpu\",{startsHidden:!0})]}},O6.getThreadStateTable=function(e){return{name:\"thread_state\",columns:[new t.ThreadStateIdColumn(e,\"id\"),new t.TimestampColumn(e,\"ts\"),new t.DurationColumn(e,\"dur\"),new t.StandardColumn(\"state\"),new t.StandardColumn(\"cpu\"),new t.ThreadIdColumn(e,\"utid\"),new t.ProcessIdColumn(e,{column:\"upid\",source:{table:\"thread\",joinOn:{utid:\"utid\"}}}),new t.StandardColumn(\"io_wait\"),new t.StandardColumn(\"blocked_function\"),new t.ThreadIdColumn(e,\"waker_utid\"),new t.ThreadStateIdColumn(e,\"waker_id\"),new t.StandardColumn(\"irq_context\"),new t.StandardColumn(\"ucpu\",{startsHidden:!0})]}};const t=DI()}return O6}var w6,k6={};var I6,R6={};var N6,M6,P6={},D6={};function x6(){if(!N6){N6=1,Object.defineProperty(D6,\"__esModule\",{value:!0}),D6.SuspendResumeDetailsPanel=void 0;var e=Jr;const a=Fe(),i=Ue(),r=e.__importDefault(xe()),n=qe(),o=Ls(),s=Bs(),l=Ve(),c=Ns(),u=ks(),d=Oe();D6.SuspendResumeDetailsPanel=class{trace;threads;suspendResumeEventDetails;constructor(e,t){this.trace=e,this.threads=t}async load({eventId:e}){this.suspendResumeEventDetails=await async function(e,t){t=`\n    SELECT\n      ts,\n      dur,\n      EXTRACT_ARG(arg_set_id, 'utid') as utid,\n      EXTRACT_ARG(arg_set_id, 'cpu') as cpu,\n      EXTRACT_ARG(arg_set_id, 'event_type') as event_type,\n      EXTRACT_ARG(arg_set_id, 'device_name') as device_name,\n      EXTRACT_ARG(arg_set_id, 'driver_name') as driver_name,\n      EXTRACT_ARG(arg_set_id, 'callback_phase') as callback_phase\n    FROM slice\n    WHERE slice_id = ${t};\n  `,t=await e.query(t),t=t.iter({ts:i.LONG,dur:i.LONG,utid:i.NUM,cpu:i.NUM,event_type:i.STR_NULL,device_name:i.STR_NULL,driver_name:i.STR_NULL,callback_phase:i.STR_NULL});if(!t.valid())return{ts:a.Time.fromRaw(0n),dur:a.Duration.fromRaw(0n),utid:0,cpu:0,event_type:\"Error\",device_name:\"Error\",driver_name:\"Error\",callback_phase:\"Error\",thread_state_id:0};var r=`\n    SELECT t.id as threadStateId\n    FROM thread_state t\n    WHERE\n      t.utid = ${t.utid}\n      AND t.ts <= ${t.ts}\n      AND t.ts + t.dur > ${t.ts};\n  `,e=await e.query(r);let n=0;0<e.numRows()&&(r=e.firstRow({threadStateId:i.NUM}),n=r.threadStateId);return{ts:a.Time.fromRaw(t.ts),dur:a.Duration.fromRaw(t.dur),utid:t.utid,cpu:t.cpu,event_type:null!==t.event_type?t.event_type:\"N/A\",device_name:null!==t.device_name?t.device_name:\"N/A\",driver_name:null!==t.driver_name?t.driver_name:\"N/A\",callback_phase:null!==t.callback_phase?t.callback_phase:\"N/A\",thread_state_id:n}}(this.trace.engine,e)}render(){const e=this.suspendResumeEventDetails;var t;return e?(t=this.threads.get(e.utid))?(0,r.default)(n.DetailsShell,{title:\"Suspend / Resume Event\"},(0,r.default)(o.GridLayout,(0,r.default)(s.Section,{title:\"Properties\"},(0,r.default)(l.Tree,(0,r.default)(l.TreeNode,{left:\"Device Name\",right:e.device_name}),(0,r.default)(l.TreeNode,{left:\"Start time\",right:(0,r.default)(c.Timestamp,{trace:this.trace,ts:e.ts})}),(0,r.default)(l.TreeNode,{left:\"Duration\",right:(0,r.default)(u.DurationWidget,{trace:this.trace,dur:e.dur})}),(0,r.default)(l.TreeNode,{left:\"Driver Name\",right:e.driver_name}),(0,r.default)(l.TreeNode,{left:\"Callback Phase\",right:e.callback_phase}),(0,r.default)(l.TreeNode,{left:\"Thread\",right:(0,r.default)(d.Anchor,{icon:\"call_made\",onclick:()=>{this.goToThread(e.thread_state_id)}},`${t.threadName} [${t.tid}]`)}),(0,r.default)(l.TreeNode,{left:\"CPU\",right:e.cpu}),(0,r.default)(l.TreeNode,{left:\"Event Type\",right:e.event_type}))))):null:(0,r.default)(n.DetailsShell,{title:\"Suspend / Resume Event\",description:\"Loading...\"})}isLoading(){return void 0===this.suspendResumeEventDetails}goToThread(e){this.trace.selection.selectSqlEvent(\"thread_state\",e,{scrollToSelection:!0})}}}return D6}var L6,F6={},U6={},B6={};function j6(){return L6||(L6=1,Object.defineProperty(B6,\"__esModule\",{value:!0}),B6.GPUSS_ESTIMATE_TRACK_KIND=B6.CPUSS_ESTIMATE_TRACK_KIND=void 0,B6.CPUSS_ESTIMATE_TRACK_KIND=\"CpuSubsystemEstimateTrack\",B6.GPUSS_ESTIMATE_TRACK_KIND=\"GpuSubsystemEstimateTrack\"),B6}var H6,G6,V6={};function q6(){if(!H6){H6=1,Object.defineProperty(V6,\"__esModule\",{value:!0}),V6.WattsonAggregationPanel=void 0;const a=Jr.__importDefault(xe()),n=Fe(),i=Ic(),o=yc(),s=bu(),l=mc();V6.WattsonAggregationPanel=class{scaleNumericData=!1;view({attrs:e}){var{dataSource:e,sorting:t,columns:r,barChartData:n}=e;return(0,a.default)(l.Stack,{fillHeight:!0},[n&&(0,a.default)(l.StackFixed,(0,a.default)(o.Box,this.renderBarChart(n))),(0,a.default)(l.StackAuto,this.renderTable(e,t,r))])}renderTable(e,t,r){const n=new Map(r.map(e=>[e.columnId,e]));return(0,a.default)(i.DataGrid,{toolbarItemsLeft:(0,a.default)(o.Box,(0,a.default)(s.SegmentedButtons,{options:[{label:\"µW\"},{label:\"mW\"}],selectedOption:this.scaleNumericData?0:1,onOptionSelected:e=>{this.scaleNumericData=0===e},title:\"Select power units\"})),fillHeight:!0,showResetButton:!1,columns:r.map(e=>{var t=this.scaleNumericData?e.title.replace(\"estimated mW\",\"estimated µW\"):e.title;return{name:e.columnId,title:t,aggregation:e.sum?\"SUM\":void 0}}),data:e,initialSorting:t,cellRenderer:(e,t)=>{var r=n.get(t)?.formatHint;return this.renderValue(e,t,r)}})}renderBarChart(e){const r=e.reduce((e,t)=>e+t.value,0);return(0,a.default)(\".pf-aggregation-panel__bar-chart\",e.map(e=>{var t=e.value/r*100;return(0,a.default)(\".pf-aggregation-panel__bar-chart-bar\",{style:{background:e.color.base.cssString,color:e.color.textBase.cssString,borderColor:e.color.variant.cssString,width:t+\"%\"}},e.title)}))}renderValue(t,r,e){if(\"DURATION_NS\"===e&&\"bigint\"==typeof t)return(0,a.default)(\"span.pf-data-grid__cell--number\",n.Duration.humanise(t));if(\"PERCENT\"===e&&\"number\"==typeof t)return(0,a.default)(\"span.pf-data-grid__cell--number\",(100*t).toFixed(2)+\"%\");{let e=t;return this.scaleNumericData&&r.includes(\"_mw\")&&\"number\"==typeof t&&(e=1e3*t),(0,i.renderCell)(e,r)}}}}return V6}var z6,W6={};var $6,K6={};var Y6,J6,Q6,Z6={};function X6(){if(!J6){J6=1,Object.defineProperty(F6,\"__esModule\",{value:!0});const T=Jr.__importDefault(xe()),v=uu();var e=Gi();const b=pl(),E=$e(),S=We(),A=Ue(),O=function(){if(!G6){G6=1,Object.defineProperty(U6,\"__esModule\",{value:!0}),U6.WattsonEstimateSelectionAggregator=void 0;const t=Me(),a=j6();var e=q6();U6.WattsonEstimateSelectionAggregator=class{id=\"wattson_plugin_estimate_aggregation\";Panel=e.WattsonAggregationPanel;probe(r){const n=[];for(const e of r.tracks)e?.tags?.kind!==a.CPUSS_ESTIMATE_TRACK_KIND&&e?.tags?.kind!==a.GPUSS_ESTIMATE_TRACK_KIND||!(0,t.exists)(e.tags?.wattson)||n.push(\"\"+e.tags.wattson);if(0!==n.length)return{prepareData:async e=>{await e.query(`drop view if exists ${this.id};`);var t=this.getEstimateTracksQuery(r,n);return await e.query(t),{tableName:this.id}}}}getEstimateTracksQuery(e,t){const r=e.end-e.start;let n=`\n      INCLUDE PERFETTO MODULE wattson.estimates;\n\n      CREATE OR REPLACE PERFETTO TABLE wattson_plugin_ui_selection_window AS\n      SELECT\n        ${e.start} as ts,\n        ${r} as dur;\n\n      DROP TABLE IF EXISTS wattson_plugin_windowed_subsystems_estimate;\n      CREATE VIRTUAL TABLE wattson_plugin_windowed_subsystems_estimate\n      USING\n        SPAN_JOIN(wattson_plugin_ui_selection_window, _system_state_mw);\n\n      CREATE PERFETTO VIEW ${this.id} AS\n    `;return t.forEach((e,t)=>{0!=t&&(n+=\"UNION ALL \"),n+=`\n        SELECT\n        '${e}' as name,\n        ROUND(SUM(${e}_mw * dur) / ${r}, 3) as power_mw,\n        ROUND(SUM(${e}_mw * dur) / 1000000000, 3) as energy_mws\n        FROM wattson_plugin_windowed_subsystems_estimate\n      `}),n+=\";\"}getColumnDefinitions(){return[{title:\"Name\",columnId:\"name\"},{title:\"Power (estimated mW)\",columnId:\"power_mw\",sum:!0},{title:\"Energy (estimated mWs)\",columnId:\"energy_mws\",sum:!0}]}getTabName(){return\"Wattson estimates\"}getDefaultSorting(){return{column:\"name\",direction:\"ASC\"}}}}return U6}(),C=function(){if(!z6){z6=1,Object.defineProperty(W6,\"__esModule\",{value:!0}),W6.WattsonPackageSelectionAggregator=void 0;const n=$e(),a=Me();var e=q6();W6.WattsonPackageSelectionAggregator=class{id=\"wattson_plugin_package_aggregation\";PanelComponent=e.WattsonAggregationPanel;probe(r){var e=[];for(const t of r.tracks)t?.tags?.kind===n.CPU_SLICE_TRACK_KIND&&(0,a.exists)(t.tags.cpu)&&e.push(t.tags.cpu);if(0!==e.length)return{prepareData:async e=>{await e.query(`drop view if exists ${this.id};`);var t=r.end-r.start;return await e.query(`\n          INCLUDE PERFETTO MODULE wattson.estimates;\n          INCLUDE PERFETTO MODULE wattson.tasks.idle_transitions_attribution;\n\n          -- Group idle attribution by package\n          CREATE OR REPLACE PERFETTO TABLE\n          wattson_plugin_per_package_idle_attribution AS\n          SELECT\n            SUM(idle_cost_mws) as idle_cost_mws,\n            uid\n          FROM wattson_plugin_idle_attribution\n          JOIN thread USING(utid)\n          JOIN process USING(upid)\n          GROUP BY uid;\n\n          -- Grouped by UID and made CPU agnostic\n          CREATE PERFETTO VIEW ${this.id} AS\n          WITH base AS (\n            SELECT\n              ROUND(SUM(total_pws) / ${t}, 3) as active_mw,\n              ROUND(SUM(total_pws) / 1000000000, 3) as active_mws,\n              ROUND(COALESCE(idle_cost_mws, 0), 3) as idle_cost_mws,\n              ROUND(\n                COALESCE(idle_cost_mws, 0) + SUM(total_pws) / 1000000000,\n                3\n              ) as total_mws,\n              wattson_plugin_unioned_per_cpu_total.uid AS uid,\n              package_name\n            FROM wattson_plugin_unioned_per_cpu_total\n            LEFT JOIN wattson_plugin_per_package_idle_attribution\n              ON wattson_plugin_unioned_per_cpu_total.uid IS\n              wattson_plugin_per_package_idle_attribution.uid\n            GROUP BY wattson_plugin_unioned_per_cpu_total.uid, package_name\n          )\n          select *,\n            total_mws / (SUM(total_mws) OVER()) AS percent_of_total_energy\n            from base;\n        `),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Package Name\",columnId:\"package_name\"},{title:\"Android app UID\",columnId:\"uid\"},{title:\"Active power (estimated mW)\",columnId:\"active_mw\",sum:!0},{title:\"Active energy (estimated mWs)\",columnId:\"active_mws\",sum:!0},{title:\"Idle transitions overhead (estimated mWs)\",columnId:\"idle_cost_mws\",sum:!1},{title:\"Total energy (estimated mWs)\",columnId:\"total_mws\",sum:!0},{title:\"% of total energy\",formatHint:\"PERCENT\",columnId:\"percent_of_total_energy\",sum:!1}]}getTabName(){return\"Wattson by package\"}getDefaultSorting(){return{column:\"active_mws\",direction:\"DESC\"}}}}return W6}(),w=function(){if(!$6){$6=1,Object.defineProperty(K6,\"__esModule\",{value:!0}),K6.WattsonProcessSelectionAggregator=void 0;const n=Me(),a=$e();var e=q6();K6.WattsonProcessSelectionAggregator=class{id=\"wattson_plugin_process_aggregation\";Panel=e.WattsonAggregationPanel;probe(r){var e=[];for(const t of r.tracks)t?.tags?.kind===a.CPU_SLICE_TRACK_KIND&&(0,n.exists)(t.tags.cpu)&&e.push(t.tags.cpu);if(0!==e.length)return{prepareData:async e=>{await e.query(`drop view if exists ${this.id};`);var t=r.end-r.start;return await e.query(`\n          INCLUDE PERFETTO MODULE wattson.estimates;\n          INCLUDE PERFETTO MODULE wattson.tasks.idle_transitions_attribution;\n\n          -- Group idle attribution by process\n          CREATE OR REPLACE PERFETTO TABLE\n          wattson_plugin_per_process_idle_attribution AS\n          SELECT\n            SUM(idle_cost_mws) as idle_cost_mws,\n            upid\n          FROM wattson_plugin_idle_attribution\n          GROUP BY upid;\n\n          -- Grouped by UPID and made CPU agnostic\n          CREATE PERFETTO VIEW ${this.id} AS\n          WITH base AS (\n            SELECT\n              ROUND(SUM(total_pws) / ${t}, 3) as active_mw,\n              ROUND(SUM(total_pws) / 1000000000, 3) as active_mws,\n              ROUND(COALESCE(idle_cost_mws, 0), 3) as idle_cost_mws,\n              ROUND(\n                COALESCE(idle_cost_mws, 0) + SUM(total_pws) / 1000000000,\n                3\n              ) as total_mws,\n              pid,\n              process_name\n            FROM wattson_plugin_unioned_per_cpu_total\n            LEFT JOIN wattson_plugin_per_process_idle_attribution USING (upid)\n            GROUP BY upid\n          ),\n          secondary AS (\n            SELECT\n              pid,\n              total_mws / (SUM(total_mws) OVER()) AS percent_of_total_energy\n            FROM base\n            GROUP BY pid\n          )\n          select *\n            from base INNER JOIN secondary\n            USING (pid);\n        `),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Process Name\",columnId:\"process_name\"},{title:\"PID\",columnId:\"pid\"},{title:\"Active power (estimated mW)\",columnId:\"active_mw\",sum:!0},{title:\"Active energy (estimated mWs)\",columnId:\"active_mws\",sum:!0},{title:\"Idle transitions overhead (estimated mWs)\",columnId:\"idle_cost_mws\",sum:!1},{title:\"Total energy (estimated mWs)\",columnId:\"total_mws\",sum:!0},{title:\"% of total energy\",formatHint:\"PERCENT\",columnId:\"percent_of_total_energy\",sum:!1}]}getTabName(){return\"Wattson by process\"}getDefaultSorting(){return{column:\"active_mws\",direction:\"DESC\"}}}}return K6}(),k=function(){if(!Y6){Y6=1,Object.defineProperty(Z6,\"__esModule\",{value:!0}),Z6.WattsonThreadSelectionAggregator=void 0;const t=Me(),r=$e();var e=q6();Z6.WattsonThreadSelectionAggregator=class{id=\"wattson_plugin_thread_aggregation\";Panel=e.WattsonAggregationPanel;probe(n){const a=[];for(const e of n.tracks)e?.tags?.kind===r.CPU_SLICE_TRACK_KIND&&(0,t.exists)(e.tags.cpu)&&a.push(e.tags.cpu);if(0!==a.length)return{prepareData:async e=>{await e.query(`drop view if exists ${this.id};`);var t=n.end-n.start,r=\"(\"+a.join()+\")\";return await e.query(`\n          INCLUDE PERFETTO MODULE wattson.tasks.attribution;\n          INCLUDE PERFETTO MODULE wattson.tasks.idle_transitions_attribution;\n          INCLUDE PERFETTO MODULE wattson.ui.continuous_estimates;\n\n          CREATE OR REPLACE PERFETTO TABLE wattson_plugin_ui_selection_window AS\n          SELECT\n            ${n.start} as ts,\n            ${t} as dur;\n\n          -- Processes filtered by CPU within the UI defined time window\n          DROP TABLE IF EXISTS wattson_plugin_windowed_summary;\n          CREATE VIRTUAL TABLE wattson_plugin_windowed_summary\n          USING SPAN_JOIN(\n            wattson_plugin_ui_selection_window,\n            _estimates_w_tasks_attribution\n          );\n\n          -- Only get idle attribution in user defined window and filter by selected\n          -- CPUs\n          CREATE OR REPLACE PERFETTO TABLE wattson_plugin_idle_attribution AS\n          SELECT\n            idle_cost_mws,\n            utid,\n            upid\n          FROM _filter_idle_attribution(${n.start}, ${t})\n          WHERE cpu in ${r};\n\n          -- Group idle attribution by thread\n          CREATE OR REPLACE PERFETTO TABLE wattson_plugin_per_thread_idle_cost AS\n          SELECT\n            SUM(idle_cost_mws) as idle_cost_mws,\n            utid\n          FROM wattson_plugin_idle_attribution\n          GROUP BY utid;\n\n          CREATE OR REPLACE PERFETTO TABLE wattson_plugin_unioned_per_cpu_total AS\n          SELECT\n            SUM(estimated_mw * dur) AS total_pws,\n            SUM(dur) AS dur,\n            tid,\n            pid,\n            uid,\n            utid,\n            upid,\n            thread_name,\n            process_name,\n            package_name\n          FROM wattson_plugin_windowed_summary\n          WHERE cpu in ${r}\n          GROUP BY utid;\n\n          -- Grouped again by UTID, but this time to make it CPU agnostic\n          CREATE PERFETTO VIEW ${this.id} AS\n          WITH base AS (\n            SELECT\n              ROUND(SUM(total_pws) / ${t}, 3) as active_mw,\n              ROUND(SUM(total_pws) / 1000000000, 3) as active_mws,\n              ROUND(COALESCE(idle_cost_mws, 0), 3) as idle_cost_mws,\n              ROUND(\n                COALESCE(idle_cost_mws, 0) + SUM(total_pws) / 1000000000,\n                3\n              ) as total_mws,\n              thread_name,\n              utid,\n              tid,\n              pid\n            FROM wattson_plugin_unioned_per_cpu_total\n            LEFT JOIN wattson_plugin_per_thread_idle_cost USING (utid)\n            GROUP BY utid\n          ),\n          secondary AS (\n            SELECT\n              utid,\n              total_mws / (SUM(total_mws) OVER()) AS percent_of_total_energy\n            FROM base\n            GROUP BY utid\n          )\n          select *\n            from base INNER JOIN secondary\n            USING (utid);\n        `),{tableName:this.id}}}}getColumnDefinitions(){return[{title:\"Thread Name\",columnId:\"thread_name\"},{title:\"TID\",columnId:\"tid\"},{title:\"PID\",columnId:\"pid\"},{title:\"Active power (estimated mW)\",columnId:\"active_mw\",sum:!0},{title:\"Active energy (estimated mWs)\",columnId:\"active_mws\",sum:!0},{title:\"Idle transitions overhead (estimated mWs)\",columnId:\"idle_cost_mws\",sum:!1},{title:\"Total energy (estimated mWs)\",columnId:\"total_mws\",sum:!0},{title:\"% of total energy\",formatHint:\"PERCENT\",columnId:\"percent_of_total_energy\",sum:!1}]}getTabName(){return\"Wattson by thread\"}getDefaultSorting(){return{column:\"active_mws\",direction:\"DESC\"}}}}return Z6}(),I=j6();F6.default=class{static id=\"org.kernel.Wattson\";async onTraceLoad(e){var t=await async function(e){e=await e.query(`\n      INCLUDE PERFETTO MODULE wattson.utils;\n      SELECT COUNT(*) as numRows from _wattson_markers_window\n  `);return 0<e.firstRow({numRows:A.NUM}).numRows}(e.engine),r=await async function(e){var t=[`\n    INCLUDE PERFETTO MODULE wattson.device_infos;\n    SELECT COUNT(*) as numRows FROM _wattson_device\n    `,`\n    INCLUDE PERFETTO MODULE linux.cpu.frequency;\n    SELECT COUNT(*) as numRows FROM cpu_frequency_counters\n    `,`\n    INCLUDE PERFETTO MODULE linux.cpu.idle;\n    SELECT COUNT(*) as numRows FROM cpu_idle_counters\n    `];for(const r of t)if(0===(await e.query(r)).firstRow({numRows:A.NUM}).numRows)return!1;return!0}(e.engine),n=await async function(e){var t=[`\n    INCLUDE PERFETTO MODULE android.gpu.frequency;\n    SELECT COUNT(*) as numRows FROM android_gpu_frequency\n    `,`\n    INCLUDE PERFETTO MODULE android.gpu.mali_power_state;\n    SELECT COUNT(*) as numRows FROM android_mali_gpu_power_state\n    `];for(const r of t)if(0===(await e.query(r)).firstRow({numRows:A.NUM}).numRows)return!1;return!0}(e.engine),a=await async function(e){var t=[\"power/cpu_frequency\",\"power/cpu_idle\"],r=await e.query(`\n    INCLUDE PERFETTO MODULE wattson.curves.utils;\n    SELECT count(*) AS count FROM _cpu_w_dsu_dependency;\n    `);0<r.firstRow({count:A.NUM}).count&&t.push(\"devfreq/devfreq_frequency\");var n=[],r=await e.query(`\n    SELECT str_value\n    FROM metadata\n    WHERE name = 'trace_config_pbtxt';\n    `),e=r.maybeFirstRow({str_value:A.STR_NULL}),a=e?.str_value||\"\";for(const i of t)new RegExp(`ftrace_events:\\\\s*\"${i}\"`).test(a)||n.push(i);return n}(e.engine);if(t||r||n){var i,o,s,l=new S.TrackNode({name:\"Wattson\",isSummary:!0});if(e.workspace.addChildInOrder(l),t&&(t=e,s=l,i=\"/wattson/markers_window\",o=await(0,b.createQuerySliceTrack)({trace:t,uri:i,data:{sqlSource:\"SELECT ts, dur, name FROM _wattson_markers_window\"}}),t.tracks.registerTrack({uri:i,tags:{kind:E.SLICE_TRACK_KIND},renderer:o}),await!s.addChildInOrder(new S.TrackNode({uri:i,name:\"Wattson markers window\"}))),r){{var c=e;var u=l;t=a;const f=await c.engine.query(\"select distinct ucpu from sched order by ucpu;\"),h=new Set;for(var d=f.iter({ucpu:A.NUM});d.valid();d.next())h.add(d.ucpu);const m=0<t.length?(0,T.default)(\".pf-wattson-warning\",\"Perfetto trace configuration is missing below trace_events for Wattson to work:\",(0,T.default)(\".pf-wattson-warning__list\",t.map(e=>(0,T.default)(\"li\",e)))):void 0,g=c.traceInfo.cpus.filter(e=>h.has(e.ucpu));for(const y of g){var p=`cpu${y.ucpu}_mw`;const _=\"/wattson/cpu_subsystem_estimate_cpu\"+y.ucpu;c.tracks.registerTrack({uri:_,description:()=>m,renderer:new R(c,_,p,\"CpuSubsystem\"),tags:{kind:I.CPUSS_ESTIMATE_TRACK_KIND,wattson:\"CPU\"+y.ucpu}}),u.addChildInOrder(new S.TrackNode({uri:_,name:`Cpu${y.toString()} Estimate`}))}const _=\"/wattson/cpu_subsystem_estimate_dsu_scu\";c.tracks.registerTrack({uri:_,renderer:new R(c,_,\"dsu_scu_mw\",\"CpuSubsystem\"),tags:{kind:I.CPUSS_ESTIMATE_TRACK_KIND,wattson:\"Dsu_Scu\"}}),u.addChildInOrder(new S.TrackNode({uri:_,name:\"DSU/SCU Estimate\"})),c.selection.registerAreaSelectionTab((0,v.createAggregationTab)(c,new O.WattsonEstimateSelectionAggregator)),c.selection.registerAreaSelectionTab((0,v.createAggregationTab)(c,new k.WattsonThreadSelectionAggregator)),c.selection.registerAreaSelectionTab((0,v.createAggregationTab)(c,new w.WattsonProcessSelectionAggregator)),await async function(e){e=await e.query(`\n    INCLUDE PERFETTO MODULE android.process_metadata;\n    SELECT COUNT(*) as count FROM android_process_metadata\n    WHERE package_name IS NOT NULL\n  `);return 0<e.firstRow({count:A.NUM}).count}(c.engine)&&c.selection.registerAreaSelectionTab((0,v.createAggregationTab)(c,new C.WattsonPackageSelectionAggregator))}await 0}n&&(o=l,s=\"/wattson/gpu_subsystem_estimate\",(i=e).tracks.registerTrack({uri:s,renderer:new R(i,s,\"gpu_mw\",\"GpuSubsystem\"),tags:{kind:I.GPUSS_ESTIMATE_TRACK_KIND,wattson:\"Gpu\"}}),await!o.addChildInOrder(new S.TrackNode({uri:s,name:\"GPU Estimate\"})))}}};class R extends e.BaseCounterTrack{queryKey;yRangeKey;constructor(e,t,r,n){super(e,t),this.queryKey=r,this.yRangeKey=n}async onInit(){await this.engine.query(\"INCLUDE PERFETTO MODULE wattson.ui.continuous_estimates;\")}getDefaultCounterOptions(){var e=super.getDefaultCounterOptions();return e.yRangeSharingKey=this.yRangeKey,e.unit=\"mW\",e}getSqlSource(){return`\n      SELECT ts, ${this.queryKey} AS value\n      FROM _system_state_${this.queryKey}\n    `}}}return F6}function e4(){var e,t,r,n,a,i,o,s,l,c,u,d,p,f,h,m,g,_,y,T,v,b,E,S,A,O,C,w,k,I,R,N,M,P,D,L,F,U,B,j,H,G,V,q,z,W,$,K,Y,J,Q,Z,X,ee,te,re,ne,ae,ie,oe,se,le,ce,ue,de,pe,fe,he,me,ge,_e,ye,Te,ve,be,Ee,Se,Ae,Oe,Ce,we,ke,Ie,Re,x;return Q6||(Q6=1,Object.defineProperty(Vt,\"__esModule\",{value:!0}),e=(x=Jr).__importDefault(function(){if(!gl){gl=1,Object.defineProperty(qt,\"__esModule\",{value:!0});const r=vl();qt.default=class{static id=\"com.android.AndroidBinderVizPlugin\";async onTraceLoad(e){var t=new r.BreakdownTracks({trace:e,trackTitle:\"Binder Transaction Counts\",modules:[\"android.binder\",\"android.binder_breakdown\"],aggregationType:r.BreakdownTrackAggType.COUNT,aggregation:{columns:[\"server_process\",'(IFNULL(interface, \"unknown\"))','(IFNULL(method_name, \"unknown\"))','(client_process || \":\" || client_upid)','(client_thread || \":\" ||  client_utid)'],tsCol:\"client_ts\",durCol:\"client_dur\",tableName:\"android_binder_txns\"},slice:{columns:[\"aidl_name\"],tableName:\"android_binder_txns\",tsCol:\"client_ts\",durCol:\"client_dur\"},pivots:{columns:[\"reason_type\",\"reason\"],tableName:\"android_binder_client_server_breakdown\",tsCol:\"ts\",durCol:\"dur\",joins:[{joinTableName:\"android_binder_client_server_breakdown\",joinColumns:[\"binder_txn_id\"]}]}});e.workspace.addChildInOrder(await t.createTracks())}}}return qt}()),t=x.__importDefault(function(){if(!El){El=1,Object.defineProperty(Sl,\"__esModule\",{value:!0});const n=Ue(),a=Ol();Sl.default=class{static id=\"com.android.AndroidClientServer\";async onTraceLoad(r){r.commands.registerCommand({id:\"com.android.ShowClientServerDependencies\",name:\"Show dependencies in client server model\",callback:async e=>{if(void 0!==e||void 0!==(e=await r.omnibox.prompt(\"Enter a slice id\"))){await r.engine.query(`\n          include perfetto module android.binder;\n          include perfetto module graphs.search;\n\n          create or replace perfetto table __binder_for_slice_${e} as\n          with s as materialized (\n            select slice.id, ts, ts + dur as ts_end, dur, upid\n            from thread_slice slice\n            where slice.id = ${e}\n          ),\n          child_binder_txns_for_slice as materialized (\n            select\n              (select id from s) as source_node_id,\n              binder_txn_id as dest_node_id\n            from descendant_slice((select id from s)) as desc\n            join android_binder_txns txns on desc.id = txns.binder_txn_id\n          ),\n          binder_txns_in_slice_intervals as materialized (\n            select\n              binder_txn_id as source_node_id,\n              binder_reply_id as dest_node_id\n            from android_binder_txns\n            where client_ts > (select ts from s)\n              and client_ts < (select ts + dur from s)\n          ),\n          nested_binder_txns_in_slice_interval as materialized (\n            select\n              parent.binder_reply_id as source_node_id,\n              child.binder_txn_id as dest_node_id\n            from android_binder_txns parent\n            join descendant_slice(parent.binder_reply_id) desc\n            join android_binder_txns child on desc.id = child.binder_txn_id\n            where parent.server_ts > (select ts from s)\n              and parent.server_ts < (select ts + dur from s)\n          ),\n          all_binder_txns_considered as materialized (\n            select * from child_binder_txns_for_slice\n            union\n            select * from binder_txns_in_slice_intervals\n            union\n            select * from nested_binder_txns_in_slice_interval\n          )\n          select\n            dfs.node_id as id,\n            coalesce(client.client_ts, server.client_ts, slice.ts) as ts,\n            coalesce(client.client_dur, server.client_dur, slice.dur) as dur,\n            coalesce(\n              client.aidl_name,\n              server.aidl_name,\n              iif(\n                server.binder_reply_id is not null,\n                coalesce(\n                  server.server_process,\n                  server.server_thread,\n                  'Unknown server'\n                ),\n                slice.name\n              )\n            ) name,\n            coalesce(\n              client.client_utid,\n              server.server_utid,\n              thread_track.utid\n            ) as utid,\n            case\n              when client.binder_txn_id is not null then 'client'\n              when server.binder_reply_id is not null then 'server'\n              else 'slice'\n            end as slice_type,\n            coalesce(client.is_sync, server.is_sync, true) as is_sync\n          from graph_reachable_dfs!(\n            all_binder_txns_considered,\n            (select id as node_id from s)\n          ) dfs\n          join slice on dfs.node_id = slice.id\n          join thread_track on slice.track_id = thread_track.id\n          left join android_binder_txns client on dfs.node_id = client.binder_txn_id\n          left join android_binder_txns server on dfs.node_id = server.binder_reply_id\n          order by ts;\n        `),await r.engine.query(`\n          include perfetto module intervals.intersect;\n\n          create or replace perfetto table __enhanced_binder_for_slice_${e} as\n          with foo as (\n            select\n              bfs.id as binder_id,\n              bfs.name as binder_name,\n              ii.ts,\n              ii.dur,\n              tstate.utid,\n              thread.upid,\n              tstate.cpu,\n              tstate.state,\n              tstate.io_wait,\n              (\n                select name\n                from thread_slice tslice\n                where tslice.utid = tstate.utid and tslice.ts < ii.ts\n                order by ts desc\n                limit 1\n              ) as enclosing_slice_name\n            from _interval_intersect!(\n              (\n                select id, ts, dur\n                from __binder_for_slice_${e}\n                where slice_type IN ('slice', 'server')\n                  and is_sync\n                  and dur > 0\n              ),\n              (\n                select id, ts, dur\n                from thread_state tstate\n                where\n                  tstate.utid in (\n                    select distinct utid\n                    from __binder_for_slice_${e}\n                    where\n                      slice_type IN ('slice', 'server')\n                      and is_sync\n                      and dur > 0\n                  )\n                  and dur > 0\n              ),\n              ()\n            ) ii\n            join __binder_for_slice_${e} bfs on ii.id_0 = bfs.id\n            join thread_state tstate on ii.id_1 = tstate.id\n            join thread using (utid)\n            where bfs.utid = tstate.utid\n          )\n          select\n            *,\n            case\n              when state = 'S' and enclosing_slice_name = 'binder transaction' then 'Waiting for server'\n              when state = 'S' and enclosing_slice_name GLOB 'Lock*' then 'Waiting for lock'\n              when state = 'S' and enclosing_slice_name GLOB 'Monitor*' then 'Waiting for contention'\n              when state = 'S' then 'Sleeping'\n              when state = 'R' then 'Waiting for CPU'\n              when state = 'Running' then 'Running on CPU ' || foo.cpu\n              when state GLOB 'R*' then 'Runnable'\n              when state GLOB 'D*' and io_wait then 'IO'\n              when state GLOB 'D*' and not io_wait then 'Unint-sleep'\n            end as name\n          from foo\n          order by binder_id;\n        `);for(var t=(await r.engine.query(`\n          select id, name\n          from __binder_for_slice_${e} bfs\n          where slice_type IN ('slice', 'server')\n            and dur > 0\n          order by ts\n        `)).iter({id:n.NUM,name:n.STR});t.valid();t.next())await(0,a.addDebugSliceTrack)({trace:r,data:{sqlSource:`\n                SELECT ts, dur, name\n                FROM __enhanced_binder_for_slice_${e}\n                WHERE binder_id = ${t.id}\n              `},title:t.name})}}})}}}return Sl}()),r=x.__importDefault(function(){if(!Cl){Cl=1,Object.defineProperty(wl,\"__esModule\",{value:!0});const a=Vi(),i=We();wl.default=class{static id=\"com.android.AndroidCounterTracks\";async onTraceLoad(e){var t=e[\"engine\"],t=(await t.query(\"include perfetto module android.binder;\"),await this.loadCounterTrack(e,`\n      select client_ts as ts, count(*) value\n      from android_binder_txns\n      group by ts\n    `,\"/android_counter_track\",\"Android Counter Track\"));e.workspace.addChildFirst(t)}async loadCounterTrack(e,t,r,n){t=await(0,a.createQueryCounterTrack)({trace:e,uri:r,data:{sqlSource:t,columns:[\"ts\",\"value\"]}});return e.tracks.registerTrack({uri:r,renderer:t}),new i.TrackNode({name:n,uri:r,sortOrder:-7})}}}return wl}()),n=x.__importDefault(Mc()),a=x.__importDefault(function(){if(!Pc){Pc=1,Object.defineProperty(Dc,\"__esModule\",{value:!0});const r=pl(),n=We(),a=[\"id\",\"ts\",\"dur\",\"name\"],i=\"Desktop Mode Windows\",o=\"/desktop_windows\";Dc.default=class{static id=\"com.android.AndroidDesktopMode\";async onTraceLoad(e){await e.engine.query(\"INCLUDE PERFETTO MODULE android.desktop_mode\"),await this.registerTrack(e,`\nSELECT\n  ROW_NUMBER() OVER (ORDER BY ts) AS id,\n  ts,\n  dur,\n  ifnull(p.package_name, 'uid=' || dw.uid) AS name\nFROM android_desktop_mode_windows dw\nLEFT JOIN package_list p ON CAST (dw.uid AS INT) % 100000 = p.uid AND p.uid != 1000\n`),e.commands.registerCommand({id:\"com.android.AddDesktopModeTrack\",name:\"Add Track: \"+i,callback:()=>this.addSimpleTrack(e)})}async registerTrack(e,t){t=await(0,r.createQuerySliceTrack)({trace:e,uri:o,data:{sqlSource:t,columns:a}});e.tracks.registerTrack({uri:o,renderer:t})}addSimpleTrack(e){var t=new n.TrackNode({uri:o,name:i});e.workspace.addChildInOrder(t),t.pin()}}}return Dc}()),i=x.__importDefault(em()),o=x.__importDefault(bm()),s=x.__importDefault(Am()),l=x.__importDefault(wm()),c=x.__importDefault(function(){if(!km){km=1,Object.defineProperty(Im,\"__esModule\",{value:!0});const a=Ol();Im.default=class{static id=\"com.android.AndroidNetwork\";async addSimpleTrack(e,t,r,n){await(0,a.addDebugSliceTrack)({trace:e,data:{sqlSource:`SELECT ${n.join(\",\")} FROM `+r,columns:n},title:t,columns:{ts:n[0],dur:n[1],name:n[2]},argColumns:n.slice(2)})}async onTraceLoad(a){a.commands.registerCommand({id:\"com.android.AddBatteryEventsTrack\",name:\"Add track: battery events\",callback:async e=>{void 0===e&&void 0===(e=await a.omnibox.prompt(\"Battery Track\"))||(await a.engine.query(\"SELECT IMPORT('android.battery_stats');\"),await this.addSimpleTrack(a,e,`(SELECT *\n            FROM android_battery_stats_event_slices\n            WHERE track_name = \"${e}\")`,[\"ts\",\"dur\",\"str_value\",\"int_value\"]))}}),a.commands.registerCommand({id:\"com.android.AddNetworkActivityTrack\",name:\"Add track: network activity\",callback:async(e,t,r)=>{var n;void 0===e&&void 0===(e=await a.omnibox.prompt(\"Group by\",\"package_name\"))||void 0===t&&void 0===(t=await a.omnibox.prompt(\"Filter\",\"TRUE\"))||(n=(new Date).getTime(),await a.engine.query(`\n          SELECT RUN_METRIC(\n            'android/network_activity_template.sql',\n            'view_name', 'android_network_activity_${n}',\n            'group_by',  '${e}',\n            'filter',    '${t}',\n            'idle_ns',   '10e9',\n            'quant_ns',  '3e9'\n          );\n        `),t=e.replaceAll(\" \",\"\").split(\",\"),await this.addSimpleTrack(a,r??\"Network Activity\",\"android_network_activity_\"+n,[\"ts\",\"dur\",...t,\"packet_length\",\"packet_count\"]))}})}}}return Im}()),u=x.__importDefault(function(){if(!Rm){Rm=1,Object.defineProperty(Nm,\"__esModule\",{value:!0});const t=Du(),r=Nc(),c=Ol(),u=Ue();Nm.default=class{static id=\"com.android.AndroidPerf\";async addAppProcessStartsDebugTrack(e,t,r){var n=[\"id\",\"ts\",\"dur\",\"reason\",\"process_name\",\"intent\",\"table_name\"];await(0,c.addDebugSliceTrack)({trace:e,data:{sqlSource:`\n                    SELECT\n                      start_id AS id,\n                      proc_start_ts AS ts,\n                      total_dur AS dur,\n                      reason,\n                      process_name,\n                      intent,\n                      'slice' AS table_name\n                    FROM android_app_process_starts\n                    WHERE reason = '${t}'\n                 `,columns:n},title:\"app_\"+r+\"_start reason: \"+t,argColumns:n})}async onTraceLoad(l){l.commands.registerCommand({id:\"com.android.BinderSystemServerIncoming\",name:\"Run query: system_server incoming binder graph\",callback:()=>(0,r.addQueryResultsTab)(l,{query:`INCLUDE PERFETTO MODULE android.binder;\n           SELECT * FROM android_binder_incoming_graph((SELECT upid FROM process WHERE name = 'system_server'))`,title:\"system_server incoming binder graph\"})}),l.commands.registerCommand({id:\"com.android.BinderSystemServerOutgoing\",name:\"Run query: system_server outgoing binder graph\",callback:()=>(0,r.addQueryResultsTab)(l,{query:`INCLUDE PERFETTO MODULE android.binder;\n           SELECT * FROM android_binder_outgoing_graph((SELECT upid FROM process WHERE name = 'system_server'))`,title:\"system_server outgoing binder graph\"})}),l.commands.registerCommand({id:\"com.android.MonitorContentionSystemServer\",name:\"Run query: system_server monitor_contention graph\",callback:()=>(0,r.addQueryResultsTab)(l,{query:`INCLUDE PERFETTO MODULE android.monitor_contention;\n           SELECT * FROM android_monitor_contention_graph((SELECT upid FROM process WHERE name = 'system_server'))`,title:\"system_server monitor_contention graph\"})}),l.commands.registerCommand({id:\"com.android.BinderAll\",name:\"Run query: all process binder graph\",callback:()=>(0,r.addQueryResultsTab)(l,{query:`INCLUDE PERFETTO MODULE android.binder;\n           SELECT * FROM android_binder_graph(-1000, 1000, -1000, 1000)`,title:\"all process binder graph\"})}),l.commands.registerCommand({id:\"com.android.ThreadClusterDistribution\",name:\"Run query: runtime cluster distribution for a thread\",callback:async e=>{void 0===e&&void 0===(e=await l.omnibox.prompt(\"Enter a thread tid\"))||(0,r.addQueryResultsTab)(l,{query:`\n          INCLUDE PERFETTO MODULE android.cpu.cluster_type;\n          WITH\n            total_runtime AS (\n              SELECT sum(dur) AS total_runtime\n              FROM sched s\n              LEFT JOIN thread t\n                USING (utid)\n              WHERE t.tid = ${e}\n            )\n            SELECT\n              c.cluster_type AS cluster, sum(dur)/1e6 AS total_dur_ms,\n              sum(dur) * 1.0 / (SELECT * FROM total_runtime) AS percentage\n            FROM sched s\n            LEFT JOIN thread t\n              USING (utid)\n            LEFT JOIN android_cpu_cluster_mapping c\n              USING (cpu)\n            WHERE t.tid = ${e}\n            GROUP BY 1`,title:\"runtime cluster distrubtion for tid \"+e})}}),l.commands.registerCommand({id:\"com.android.SchedLatency\",name:\"Run query: top 50 sched latency for a thread\",callback:async e=>{void 0===e&&void 0===(e=await l.omnibox.prompt(\"Enter a thread tid\"))||(0,r.addQueryResultsTab)(l,{query:`\n          SELECT ts.*, t.tid, t.name, tt.id AS track_id\n          FROM thread_state ts\n          LEFT JOIN thread_track tt\n           USING (utid)\n          LEFT JOIN thread t\n           USING (utid)\n          WHERE ts.state IN ('R', 'R+') AND tid = ${e}\n           ORDER BY dur DESC\n          LIMIT 50`,title:\"top 50 sched latency slice for tid \"+e})}}),l.commands.registerCommand({id:\"com.android.SchedLatencyInSelectedWindow\",name:\"Top 50 sched latency in selected time window\",callback:async()=>{var e=await(0,t.getTimeSpanOfSelectionOrVisibleWindow)(l);(0,r.addQueryResultsTab)(l,{title:\"top 50 sched latency slice in selcted time window\",query:`SELECT\n            ts.*,\n            t.tid,\n            t.name AS thread_name,\n            tt.id AS track_id,\n            p.name AS process_name\n          FROM thread_state ts\n          LEFT JOIN thread_track tt\n           USING (utid)\n          LEFT JOIN thread t\n           USING (utid)\n          LEFT JOIN process p\n           USING (upid)\n          WHERE ts.state IN ('R', 'R+')\n           AND ts.ts >= ${e.start} and ts.ts < ${e.end}\n          ORDER BY dur DESC\n          LIMIT 50`})}}),l.commands.registerCommand({id:\"com.android.AppProcessStarts\",name:\"Add tracks: app process starts\",callback:async()=>{await l.engine.query(\"INCLUDE PERFETTO MODULE android.app_process_starts;\");for(const e of[\"activity\",\"service\",\"broadcast\",\"provider\"])await this.addAppProcessStartsDebugTrack(l,e,\"process_name\")}}),l.commands.registerCommand({id:\"com.android.AppIntentStarts\",name:\"Add tracks: app intent starts\",callback:async()=>{await l.engine.query(\"INCLUDE PERFETTO MODULE android.app_process_starts;\");for(const e of[\"activity\",\"service\",\"broadcast\"])await this.addAppProcessStartsDebugTrack(l,e,\"intent\")}}),l.commands.registerCommand({id:\"com.android.CounterByFtraceEventArgs\",name:\"Add tracks: counter by ftrace event arguments\",callback:async(e,t,r,n)=>{if(void 0===e){for(var a=[],i=(await l.engine.query(`\n            SELECT DISTINCT name FROM ftrace_event\n          `)).iter({name:u.STR});i.valid();i.next())a.push(i.name);if(void 0===(e=await l.omnibox.prompt(\"Choose a ftrace event...\",a)))return}if(void 0===t){for(var o=[],s=(await l.engine.query(`\n            SELECT DISTINCT\n              key\n            FROM ftrace_event JOIN args USING(arg_set_id)\n            WHERE name = '${e}'\n          `)).iter({key:u.STR});s.valid();s.next())o.push(s.key);if(void 0===(t=await l.omnibox.prompt(\"Choose a argument as counter value...\",o)))return;if(void 0===(r=await l.omnibox.prompt(\"Choose a argument as pivot key...\",o)))return}void 0===n&&void 0===(n=await l.omnibox.prompt('List the target pivot values (separate by comma) to present\\nex1: 123,456 \\nex2: \"task_name1\",\"task_name2\"\\n'))||await(0,c.addDebugCounterTrack)({trace:l,data:{sqlSource:`\n              SELECT\n                ts,\n                EXTRACT_ARG(arg_set_id, '${t}') AS value,\n                EXTRACT_ARG(arg_set_id, '${r}') AS pivot\n              FROM ftrace_event\n                WHERE name = '${e}' AND pivot IN (${n})`},title:e+\"#\"+t+\"@\"+r,pivotOn:\"pivot\"})}})}}}return Nm}()),d=x.__importDefault(function(){if(!Mm){Mm=1,Object.defineProperty(Pm,\"__esModule\",{value:!0});const n=Ol(),a=Nc();Pm.default=class{static id=\"com.android.AndroidPerfTraceCounters\";async onTraceLoad(r){0!==(await r.engine.query(`\n  SELECT\n    str_value\n  FROM metadata\n  WHERE\n    name = 'trace_config_pbtxt'\n    AND str_value GLOB '*ftrace_events: \"perf_trace_counters/sched_switch_with_ctrs\"*'\n`)).numRows()&&r.commands.registerCommand({id:\"com.android.AddThreadRuntimeIPCTrack\",name:\"Add a track to show a thread runtime ipc\",callback:async e=>{var t;void 0===e&&void 0===(e=await r.omnibox.prompt(\"Enter a thread tid\"))||(t=`\n          WITH\n            sched_switch_ipc AS (\n              SELECT\n                ts,\n                EXTRACT_ARG(arg_set_id, 'prev_pid') AS tid,\n                EXTRACT_ARG(arg_set_id, 'prev_comm') AS thread_name,\n                EXTRACT_ARG(arg_set_id, 'inst') / (EXTRACT_ARG(arg_set_id, 'cyc') * 1.0) AS ipc,\n                EXTRACT_ARG(arg_set_id, 'inst') AS instruction,\n                EXTRACT_ARG(arg_set_id, 'cyc') AS cycle,\n                EXTRACT_ARG(arg_set_id, 'stallbm') AS stall_backend_mem,\n                EXTRACT_ARG(arg_set_id, 'l3dm') AS l3_cache_miss\n              FROM ftrace_event\n              WHERE name = 'sched_switch_with_ctrs' AND tid = ${e}\n            ),\n            target_thread_sched_slice AS (\n              SELECT s.*, t.tid, t.name FROM sched s LEFT JOIN thread t USING (utid)\n                WHERE t.tid = ${e}\n            ),\n            target_thread_ipc_slice AS (\n              SELECT\n                (\n                  SELECT\n                    ts\n                  FROM target_thread_sched_slice ts\n                  WHERE ts.tid = ssi.tid AND ts.ts < ssi.ts\n                  ORDER BY ts.ts DESC\n                  LIMIT 1\n                ) AS ts,\n                (\n                  SELECT\n                    dur\n                  FROM target_thread_sched_slice ts\n                  WHERE ts.tid = ssi.tid AND ts.ts < ssi.ts\n                  ORDER BY ts.ts DESC\n                  LIMIT 1\n                ) AS dur,\n                ssi.ipc,\n                ssi.instruction,\n                ssi.cycle,\n                ssi.stall_backend_mem,\n                ssi.l3_cache_miss\n              FROM sched_switch_ipc ssi\n            )\n        `,await(0,n.addDebugSliceTrack)({trace:r,data:{sqlSource:t+`\n              SELECT * FROM target_thread_ipc_slice WHERE ts IS NOT NULL`},title:\"Rutime IPC:\"+e,columns:{ts:\"ts\",dur:\"dur\",name:\"ipc\"},argColumns:[\"instruction\",\"cycle\",\"stall_backend_mem\",\"l3_cache_miss\"]}),(0,a.addQueryResultsTab)(r,{query:t+`\n            SELECT\n              (sum(instruction) * 1.0 / sum(cycle)*1.0) AS avg_ipc,\n              sum(dur)/1e6 as total_runtime_ms,\n              sum(instruction) AS total_instructions,\n              sum(cycle) AS total_cycles,\n              sum(stall_backend_mem) as total_stall_backend_mem,\n              sum(l3_cache_miss) as total_l3_cache_miss\n            FROM target_thread_ipc_slice WHERE ts IS NOT NULL`,title:\"target thread ipc statistic\"}))}})}}}return Pm}()),p=x.__importDefault(function(){if(!xm){xm=1,Object.defineProperty(Lm,\"__esModule\",{value:!0});const a=Ue(),i=pl(),o=We(),s=Um();Lm.default=class{static id=\"com.android.AndroidStartup\";async onTraceLoad(e){var t,r,n=e.engine;await n.query(`\n      include perfetto module android.startup.startups;\n    `),0n!==(await n.query(\"select count() cnt from android_startups\")).firstRow({cnt:a.LONG}).cnt&&(await n.query(`\n      include perfetto module android.startup.startup_breakdowns;\n    `),n=await this.loadStartupTrack(e,`\n      SELECT l.ts AS ts, l.dur AS dur, l.package AS name\n      FROM android_startups l\n    `,\"/android_startups\",\"Android App Startups\"),t=await this.loadStartupTrack(e,`\n      SELECT\n        ts,\n        dur,\n        reason AS name\n      FROM android_startup_opinionated_breakdown\n    `,\"/android_startups_breakdown\",\"Android App Startups Breakdown\"),r=await(0,s.optimizationsTrack)(e),e.workspace.addChildInOrder(n),n.addChildLast(t),r)&&n.addChildLast(r)}async loadStartupTrack(e,t,r,n){t=await(0,i.createQuerySliceTrack)({trace:e,uri:r,data:{sqlSource:t,columns:[\"ts\",\"dur\",\"name\"]}});return e.tracks.registerTrack({uri:r,renderer:t}),new o.TrackNode({name:n,uri:r,sortOrder:-6})}}}return Lm}()),f=x.__importDefault(function(){if(!Bm){Bm=1,Object.defineProperty(jm,\"__esModule\",{value:!0});const a=Ge(),i=We(),o=ze(),s=Ue();jm.default=class{static id=\"com.android.AvfVmCpuTimeline\";validTargets=new Map;async onTraceLoad(t){var e;this.validTargets.clear(),await this.findValidTargets(t.engine),0===this.validTargets.size?alert(\"The loaded trace does not contain any valid Avf VM targets!\"):(e=this.validTargets.keys().next().value,await this.createTargetVmTrack(t,e),t.commands.registerCommand({id:\"com.android.SelectAvfVmUtid\",name:\"Select Avf VM utid to add track\",callback:async()=>{var e;0===this.validTargets.size?alert(\"Available ValidTargets set exhausted! Do Refresh...\"):(e=await this.selectValidTarget(t),await this.createTargetVmTrack(t,e))},defaultHotkey:\"Shift+V\"}))}async createTargetVmTrack(e,t){var r=\"Avf VM CPU Timeline utid:\"+t,n=\"com.android.AvfVmCpuTimeline#AvfVmCpuTimeline\"+t,t=(this.validTargets.delete(t),`\n      SELECT\n        sched.id AS id,\n        ts,\n        dur,\n        cpu,\n        priority,\n        utid,\n        name,\n        cpu AS depth\n      FROM sched\n      JOIN thread\n        USING (utid)\n      WHERE\n        utid == ${t}\n    `),t=(e.tracks.registerTrack({uri:n,renderer:new a.DatasetSliceTrack({trace:e,uri:n,dataset:new o.SourceDataset({src:t,schema:{id:s.NUM,ts:s.LONG,dur:s.LONG,cpu:s.NUM,priority:s.NUM,utid:s.NUM,name:s.STR,depth:s.NUM}}),detailsPanel:()=>({render:()=>{}})})}),new i.TrackNode({uri:n,name:r,sortOrder:-90}));e.workspace.addChildInOrder(t)}async findValidTargets(e){for(var t=(await e.query(`\n      SELECT\n        sched.id as id,\n        utid,\n        thread.name as threadName\n      FROM sched\n      JOIN thread\n        USING (utid)\n      WHERE threadName LIKE '%vhost%' OR threadName LIKE '%vcpu%'\n    `)).iter({id:s.NUM,utid:s.NUM,threadName:s.STR});t.valid();)this.validTargets.has(t.utid)||this.validTargets.set(t.utid,t.threadName),t.next()}async selectValidTarget(e){e=await e.omnibox.prompt(this.prepareSelectMessage());if(void 0!==e){e=Number(e);if(!isNaN(e)&&this.validTargets.has(e))return e}e=this.validTargets.keys().next().value;return alert(\"Invalid Target selected! Using default value: \"+e),e}prepareSelectMessage(){let r=\"Available target IDs are:\\n\";return this.validTargets.forEach((e,t)=>{r+=e+` : ${t}\n`}),r+=`\nEnter targetID to add track:`}}}return jm}()),h=x.__importDefault(function(){if(!Hm){Hm=1,Object.defineProperty(Gm,\"__esModule\",{value:!0});var e=Jr,t=e.__importDefault(Wc());const r=e.__importDefault(Am()),a=[\"direction\",\"type\",\"hci_cmd\",\"hci_event\",\"hci_ble_event\",\"cmd_status\",\"reason_code\",\"metric_id\"],i=[\"quality_report_id\",\"packet_types\",\"connection_handle\",\"connection_role\",\"tx_power_level\",\"rssi\",\"snr\",\"unused_afh_channel_count\",\"afh_select_unideal_channel_count\",\"lsto\",\"connection_piconet_clock\",\"retransmission_count\",\"no_rx_count\",\"nak_count\",\"flow_off_count\",\"buffer_overflow_bytes\",\"buffer_underflow_bytes\"],o=[\"connection_handle\",\"hci_status\",\"rssi\",\"metric_id\"],s=[\"key\",\"number\"],l=[\"metric_id\",\"error_code\",\"vendor_error_code\"];class c{static id=\"com.android.Bluetooth\";static dependencies=[t.default,r.default];support(e){return e.plugins.getPlugin(r.default)}async onTraceLoad(e){var t=this.support(e),r=await t.features(e.engine);Array.from(r.values()).some(e=>e.startsWith(\"atom.bluetooth_\")||e.startsWith(\"atom.ble_\"))&&(await t.addSliceTrack(e,\"BLE Scans (opportunistic)\",n(\"opportunistic\"),r=\"Bluetooth\"),await t.addSliceTrack(e,\"BLE Scans (filtered)\",n(\"filtered\"),r),await t.addSliceTrack(e,\"BLE Scans (unfiltered)\",n(\"not filtered\"),r),await t.addSliceTrack(e,\"BLE Scan Results\",`\n  with step1 as (\n      select\n          ts,\n          extract_arg(arg_set_id, 'ble_scan_result_received.attribution_node[0].tag') as name,\n          extract_arg(arg_set_id, 'ble_scan_result_received.num_results') as num_results\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n      and s.name = 'ble_scan_result_received'\n  )\n  select\n      ts,\n      0 as dur,\n      name || ' (' || num_results || ' results)' as name\n  from step1`,r),await t.addSliceTrack(e,\"Connections (ACL)\",`\n    with acl1 as (\n        select\n            ts,\n            EXTRACT_ARG(arg_set_id, 'bluetooth_acl_connection_state_changed.state') as state,\n            EXTRACT_ARG(arg_set_id, 'bluetooth_acl_connection_state_changed.transport') as transport,\n            EXTRACT_ARG(arg_set_id, 'bluetooth_acl_connection_state_changed.metric_id') as metric_id\n        from track t join slice s on t.id = s.track_id\n        where t.name = 'Statsd Atoms'\n        and s.name = 'bluetooth_acl_connection_state_changed'\n    ),\n    acl2 as (\n        select\n            ts,\n            lead(ts) over (partition by metric_id, transport order by ts) - ts as dur,\n            state,\n            transport,\n            metric_id\n        from acl1\n    )\n    select\n        ts,\n        dur,\n        'Device ' || metric_id ||\n          ' (' || case transport when 'TRANSPORT_TYPE_BREDR' then 'Classic' when 'TRANSPORT_TYPE_LE' then 'BLE' end || ')' as name\n    from acl2\n    where state != 'CONNECTION_STATE_DISCONNECTED' and dur is not null`,r),await t.addSliceTrack(e,\"Connections (SCO)\",`\n  with sco1 as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_sco_connection_state_changed.state') as state,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_sco_connection_state_changed.codec') as codec,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_sco_connection_state_changed.metric_id') as metric_id\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_sco_connection_state_changed'\n  ),\n  sco2 as (\n    select\n        ts,\n        lead(ts) over (partition by metric_id, codec order by ts) - ts as dur,\n        state,\n        codec,\n        metric_id\n    from sco1\n  )\n  select\n    ts,\n    dur,\n    case state when 'CONNECTION_STATE_CONNECTED' then '' when 'CONNECTION_STATE_CONNECTING' then 'Connecting ' when 'CONNECTION_STATE_DISCONNECTING' then 'Disconnecting ' else 'unknown ' end ||\n      'Device ' || metric_id || ' (' ||\n      case codec when 'SCO_CODEC_CVSD' then 'CVSD' when 'SCO_CODEC_MSBC' then 'MSBC' end || ')' as name\n  from sco2\n  where state != 'CONNECTION_STATE_DISCONNECTED' and dur is not null`,r),await t.addSliceTrack(e,\"Link-level Events\",`\n  with base as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.direction') as direction,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.type') as type,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.hci_cmd') as hci_cmd,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.hci_event') as hci_event,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.hci_ble_event') as hci_ble_event,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.cmd_status') as cmd_status,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.reason_code') as reason_code,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_link_layer_connection_event.metric_id') as metric_id\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_link_layer_connection_event'\n  )\n  select\n    *,\n    0 as dur,\n    'Device '|| metric_id as name\n  from base`,r,a),await t.addSliceTrack(e,\"A2DP Audio\",`\n  with step1 as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_a2dp_playback_state_changed.playback_state') as playback_state,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_a2dp_playback_state_changed.audio_coding_mode') as audio_coding_mode,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_a2dp_playback_state_changed.metric_id') as metric_id\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_a2dp_playback_state_changed'\n  ),\n  step2 as (\n    select\n        ts,\n        lead(ts) over (partition by metric_id order by ts) - ts as dur,\n        playback_state,\n        audio_coding_mode,\n        metric_id\n    from step1\n  )\n  select\n    ts,\n    dur,\n    audio_coding_mode as name\n  from step2\n  where playback_state = 'PLAYBACK_STATE_PLAYING'`,r),await t.addSliceTrack(e,\"Bytes Transferred (L2CAP/RFCOMM)\",`\n  with step1 as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_bytes_transfer.uid') as uid,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_bytes_transfer.tx_bytes') as tx_bytes,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_bytes_transfer.rx_bytes') as rx_bytes\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_bytes_transfer'\n  ),\n  step2 as (\n    select\n        ts,\n        lead(ts) over (partition by uid order by ts) - ts as dur,\n        uid,\n        lead(tx_bytes) over (partition by uid order by ts) - tx_bytes as tx_bytes,\n        lead(rx_bytes) over (partition by uid order by ts) - rx_bytes as rx_bytes\n    from step1\n  ),\n  step3 as (\n    select\n        ts,\n        dur,\n        uid % 100000 as uid,\n        sum(tx_bytes) as tx_bytes,\n        sum(rx_bytes) as rx_bytes\n    from step2\n    where tx_bytes >=0 and rx_bytes >=0\n    group by 1,2,3\n    having tx_bytes > 0 or rx_bytes > 0\n  )\n    select\n        ts,\n        dur,\n        format(\"%s: TX %d bytes / RX %d bytes\", package_name, tx_bytes, rx_bytes) as name\n    from add_package_name!(step3)\n`,r),await e.engine.query(`\n  create perfetto table bt_activity as\n  with step1 as (\n    select\n        EXTRACT_ARG(arg_set_id, 'bluetooth_activity_info.timestamp_millis') * 1000000 as ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_activity_info.bluetooth_stack_state') as bluetooth_stack_state,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_activity_info.controller_idle_time_millis') * 1000000 as controller_idle_dur,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_activity_info.controller_tx_time_millis') * 1000000 as controller_tx_dur,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_activity_info.controller_rx_time_millis') * 1000000 as controller_rx_dur\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_activity_info'\n  ),\n  step2 as (\n    select\n        ts,\n        lead(ts) over (order by ts) - ts as dur,\n        bluetooth_stack_state,\n        lead(controller_idle_dur) over (order by ts) - controller_idle_dur as controller_idle_dur,\n        lead(controller_tx_dur) over (order by ts) - controller_tx_dur as controller_tx_dur,\n        lead(controller_rx_dur) over (order by ts) - controller_rx_dur as controller_rx_dur\n    from step1\n  )\n  select\n    ts,\n    dur,\n    bluetooth_stack_state & 0x0000000F as acl_active_count,\n    bluetooth_stack_state & 0x000000F0 >> 4 as acl_sniff_count,\n    bluetooth_stack_state & 0x00000F00 >> 8 as acl_ble_count,\n    bluetooth_stack_state & 0x0000F000 >> 12 as advertising_count,\n    case bluetooth_stack_state & 0x000F0000 >> 16\n      when 0 then 0\n      when 1 then 5\n      when 2 then 10\n      when 3 then 25\n      when 4 then 100\n      else -1\n    end as le_scan_duty_cycle,\n    bluetooth_stack_state & 0x00100000 >> 20 as inquiry_active,\n    bluetooth_stack_state & 0x00200000 >> 21 as sco_active,\n    bluetooth_stack_state & 0x00400000 >> 22 as a2dp_active,\n    bluetooth_stack_state & 0x00800000 >> 23 as le_audio_active,\n    max(0, 100.0 * controller_idle_dur / dur) as controller_idle_pct,\n    max(0, 100.0 * controller_tx_dur / dur) as controller_tx_pct,\n    max(0, 100.0 * controller_rx_dur / dur) as controller_rx_pct\n  from step2\n`),await t.addCounterTrack(e,\"ACL Classic Active Count\",\"select ts, dur, acl_active_count as value from bt_activity\",r),await t.addCounterTrack(e,\"ACL Classic Sniff Count\",\"select ts, dur, acl_sniff_count as value from bt_activity\",r),await t.addCounterTrack(e,\"ACL BLE Count\",\"select ts, dur, acl_ble_count as value from bt_activity\",r),await t.addCounterTrack(e,\"Advertising Instance Count\",\"select ts, dur, advertising_count as value from bt_activity\",r),await t.addCounterTrack(e,\"LE Scan Duty Cycle Maximum\",\"select ts, dur, le_scan_duty_cycle as value from bt_activity\",r,{unit:\"%\"}),await t.addSliceTrack(e,\"Inquiry Active\",\"select ts, dur, 'Active' as name from bt_activity where inquiry_active\",r),await t.addSliceTrack(e,\"SCO Active\",\"select ts, dur, 'Active' as name from bt_activity where sco_active\",r),await t.addSliceTrack(e,\"A2DP Active\",\"select ts, dur, 'Active' as name from bt_activity where a2dp_active\",r),await t.addSliceTrack(e,\"LE Audio Active\",\"select ts, dur, 'Active' as name from bt_activity where le_audio_active\",r),await t.addCounterTrack(e,\"Controller Idle Time\",\"select ts, dur, controller_idle_pct as value from bt_activity\",r,{yRangeSharingKey:\"bt_controller_time\",unit:\"%\"}),await t.addCounterTrack(e,\"Controller TX Time\",\"select ts, dur, controller_tx_pct as value from bt_activity\",r,{yRangeSharingKey:\"bt_controller_time\",unit:\"%\"}),await t.addCounterTrack(e,\"Controller RX Time\",\"select ts, dur, controller_rx_pct as value from bt_activity\",r,{yRangeSharingKey:\"bt_controller_time\",unit:\"%\"}),await t.addSliceTrack(e,\"Quality reports\",`\n  with base as (\n      select\n          ts,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.quality_report_id') as quality_report_id,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.packet_types') as packet_types,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.connection_handle') as connection_handle,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.connection_role') as connection_role,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.tx_power_level') as tx_power_level,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.rssi') as rssi,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.snr') as snr,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.unused_afh_channel_count') as unused_afh_channel_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.afh_select_unideal_channel_count') as afh_select_unideal_channel_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.lsto') as lsto,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.connection_piconet_clock') as connection_piconet_clock,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.retransmission_count') as retransmission_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.no_rx_count') as no_rx_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.nak_count') as nak_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.flow_off_count') as flow_off_count,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.buffer_overflow_bytes') as buffer_overflow_bytes,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_quality_report_reported.buffer_underflow_bytes') as buffer_underflow_bytes\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n      and s.name = 'bluetooth_quality_report_reported'\n  )\n  select\n      *,\n      0 as dur,\n      'Connection '|| connection_handle as name\n  from base`,r,i),await t.addSliceTrack(e,\"RSSI Reports\",`\n  with base as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_device_rssi_reported.connection_handle') as connection_handle,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_device_rssi_reported.hci_status') as hci_status,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_device_rssi_reported.rssi') as rssi,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_device_rssi_reported.metric_id') as metric_id\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_device_rssi_reported'\n  )\n  select\n    *,\n    0 as dur,\n    'Connection '|| connection_handle as name\n  from base`,r,o),await t.addSliceTrack(e,\"HAL Crashes\",`\n  with base as (\n      select\n          ts,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_hal_crash_reason_reported.metric_id') as metric_id,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_hal_crash_reason_reported.error_code') as error_code,\n          EXTRACT_ARG(arg_set_id, 'bluetooth_hal_crash_reason_reported.vendor_error_code') as vendor_error_code\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n      and s.name = 'bluetooth_hal_crash_reason_reported'\n  )\n  select\n      *,\n      0 as dur,\n      'Device ' || metric_id as name\n  from base`,r,l),await t.addSliceTrack(e,\"Code Path Counter\",`\n  with base as (\n    select\n        ts,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_code_path_counter.key') as key,\n        EXTRACT_ARG(arg_set_id, 'bluetooth_code_path_counter.number') as number\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'Statsd Atoms'\n    and s.name = 'bluetooth_code_path_counter'\n  )\n  select\n    *,\n    0 as dur,\n    key as name\n  from base`,r,s))}}function n(e){return`\n  with step1 as (\n      select\n          ts,\n          extract_arg(arg_set_id, 'ble_scan_state_changed.attribution_node[0].tag') as name,\n          extract_arg(arg_set_id, 'ble_scan_state_changed.is_opportunistic') as opportunistic,\n          extract_arg(arg_set_id, 'ble_scan_state_changed.is_filtered') as filtered,\n          extract_arg(arg_set_id, 'ble_scan_state_changed.state') as state\n      from track t join slice s on t.id = s.track_id\n      where t.name = 'Statsd Atoms'\n      and s.name = 'ble_scan_state_changed'\n  ),\n  step2 as (\n      select\n          ts,\n          name,\n          state,\n          opportunistic,\n          filtered,\n          lead(ts) over (partition by name order by ts) - ts as dur\n      from step1\n  )\n  select ts, dur, name from step2 where state = 'ON' and ${e} and dur is not null`}Gm.default=c}return Gm}()),m=x.__importDefault(function(){if(!Vm){Vm=1,Object.defineProperty(qm,\"__esModule\",{value:!0});var e=Jr,t=e.__importDefault(Wc());const r=e.__importDefault(Am());class n{static id=\"com.android.ContainedTraces\";static dependencies=[t.default,r.default];support(e){return e.plugins.getPlugin(r.default)}async onTraceLoad(e){var t,r,n=this.support(e),a=e.openerPluginArgs?.containedTraces??[],i=new Map;for(const o of a)i.has(o.subscription)||i.set(o.subscription,[]),i.get(o.subscription).push(o);for([t,r]of i)await n.addSliceTrack(e,t,r.map(e=>`SELECT\n          CAST(${e.ts} * 1e6 AS int) AS ts,\n          CAST(${e.dur} * 1e6 AS int) AS dur,\n          '${\"\"===e.trigger?\"Trace\":e.trigger}' AS name,\n          'http://go/trace-uuid/${e.uuid}' AS link\n        `).join(\" UNION ALL \"),\"Other traces\",[\"link\"])}}qm.default=n}return qm}()),g=x.__importDefault(function(){if(!zm){zm=1,Object.defineProperty(Wm,\"__esModule\",{value:!0});var e=Jr;const i=We(),o=Vi();e=e.__importDefault(Wc());const s=Ue();class t{static id=\"com.android.CpuPerUid\";static dependencies=[e.default];async addCpuPerUidTrack(e,t,r,n){var a=\"/cpu_per_uid_\"+t,t=await(0,o.createQueryCounterTrack)({trace:e,uri:a,data:{sqlSource:`select\n           ts,\n           min(100, 100 * cpu_ratio) as value\n         from android_cpu_per_uid_counter\n         where track_id = `+t,columns:[\"ts\",\"value\"]},columns:{ts:\"ts\",value:\"value\"},options:{unit:\"percent\",yOverrideMaximum:100,yOverrideMinimum:0,yRangeSharingKey:\"cpu-per-uid\"}}),e=(e.tracks.registerTrack({uri:a,renderer:t}),new i.TrackNode({uri:a,name:r}));n.addChildInOrder(e)}async onTraceLoad(e){var t=e.engine;await t.query(\"INCLUDE PERFETTO MODULE android.cpu.cpu_per_uid;\");var r=(await t.query(`select\n          id, \n          cluster, \n          ifnull(package_name, 'UID ' || uid) as name\n        from android_cpu_per_uid_track\n        order by name, cluster`)).iter({id:s.NUM,cluster:s.NUM,name:s.STR});if(r.valid()){var n=new i.TrackNode({name:\"CPU Per UID\",isSummary:!0});for(e.workspace.addChildInOrder(n);r.valid();r.next()){var a=`${r.name} (${r.cluster})`;await this.addCpuPerUidTrack(e,r.id,a,n)}}}}Wm.default=t}return Wm}()),_=x.__importDefault(function(){if(!$m){$m=1,Object.defineProperty(Km,\"__esModule\",{value:!0});var e=Jr;const i=ln();var t=e.__importDefault(Wc());const o=Vi(),s=We(),l=Ue(),c=eu(),a=Ru(),u=Nu(),r=e.__importDefault(Am()),d=\"day_explorer_counter_track\";class n{static id=\"com.android.DayExplorer\";static dependencies=[t.default,r.default];support(e){return e.plugins.getPlugin(r.default)}async addDayExplorerCounters(e,t,r,n){await e.engine.query(`INCLUDE PERFETTO MODULE\n          google3.wireless.android.telemetry.trace_extractor.modules.day_explorer.perfetto_ui_blames`);t=t.getOrCreateGroup(e,r);await this.addDayExplorerRecursive(e,t,n,-1n)}async addDayExplorerRecursive(e,t,r,n){for(var a=(await e.engine.query(`\n      SELECT track_id, display_name, cast(round(total_energy_uws / 3600000) as int) as energy_mwh\n      FROM day_explorer_ui_hierarchy\n      WHERE (${n} >= 0 AND parent_id = ${n})\n         OR (${n} < 0 AND parent_id IS NULL)\n      ORDER BY energy_mwh DESC\n      LIMIT ${r}\n    `)).iter({track_id:l.LONG,display_name:l.STR,energy_mwh:l.LONG});a.valid();a.next()){var i=`\n        SELECT ts, power_mw AS value\n        FROM day_explorer_ui_hierarchy_per_ts\n        WHERE track_id = ${a.track_id}\n      `,o=`${a.display_name} - ${a.energy_mwh}mWh`,o=await this.createDayExplorerTrack(e,o,\"_day_explorer_ui_hierarchy_under_\"+n,i);t.addChildInOrder(o),await this.addDayExplorerRecursive(e,o,r,a.track_id)}}async createDayExplorerTrack(e,t,r,n){var a=\"/day_explorer_\"+(0,i.uuidv4)(),n=await(0,o.createQueryCounterTrack)({trace:e,uri:a,data:{sqlSource:n},columns:{ts:\"ts\",value:\"value\"},options:{yRangeSharingKey:r}});return e.tracks.registerTrack({uri:a,renderer:n,tags:{kind:d}}),new s.TrackNode({name:t,uri:a})}createDayExplorerFlameGraphPanel(r){let n,a;return{id:\"day_explorer_flamegraph_selection\",name:\"Day Explorer Flamegraph\",render:e=>{var t=void 0===n||!(0,c.areaSelectionsEqual)(n,e);if(n=e,void 0!==(a=t?this.computeDayExplorerFlameGraph(r,e):a))return{isLoading:!1,content:a.render()}}}}computeDayExplorerFlameGraph(e,t){let r=!1;for(const n of t.tracks)if(n?.tags?.kind===d){r=!0;break}if(r)return t=(0,u.metricsFromTableOrSubquery)(`\n        (\n          WITH\n            total_energy AS (\n              SELECT track_id, parent_id, display_name, SUM(energy_uws) AS energy_uws\n              FROM day_explorer_ui_hierarchy_per_ts\n              WHERE ts >= ${t.start}\n                AND ts <= ${t.end}\n              GROUP BY 1, 2, 3\n            ),\n            with_child AS (\n              SELECT\n                *,\n                (\n                  SELECT IFNULL(SUM(energy_uws), 0)\n                  FROM total_energy\n                  WHERE parent_id = P.track_id\n                ) AS child_energy\n              FROM total_energy AS P\n            )\n          SELECT\n            track_id AS id,\n            parent_id AS parentId,\n            display_name AS name,\n            cast(round((energy_uws - child_energy) / 1000) as int) AS self_count\n          FROM with_child\n        )\n      `,[{name:\"Energy mWs\",unit:\"\",columnName:\"self_count\"}]),new u.QueryFlamegraph(e,t,{state:a.Flamegraph.createDefaultState(t)})}async addDayExplorerBehaviors(e,t,r){await e.engine.query(`INCLUDE PERFETTO MODULE\n          google3.wireless.android.telemetry.trace_extractor.modules.day_explorer.perfetto_ui_blames`),await t.addSliceTrack(e,\"Day Explorer Behaviors\",\"select ts, dur, behavior as name from day_explorer_behaviors\",r,[],!1)}async addDayExplorerCommand(t,r,e){e.has(\"google3\")&&t.commands.registerCommand({id:\"com.android.DayExplorerBlamesByCategory\",name:\"Add tracks: Day Explorer\",callback:async()=>{var e=await t.omnibox.prompt(\"Maximum results per group\"),e=Number(e);!isFinite(e)||e<=0?alert(\"Positive number required\"):(await this.addDayExplorerBehaviors(t,r,\"Day explorer\"),await this.addDayExplorerCounters(t,r,\"Day explorer\",e))}})}async onTraceLoad(e){var t=this.support(e),r=await t.features(e.engine);e.selection.registerAreaSelectionTab(this.createDayExplorerFlameGraphPanel(e)),r.has(\"google3\")&&await this.addDayExplorerCommand(e,t,r)}}Km.default=n}return Km}()),y=x.__importDefault(function(){if(!Ym){Ym=1,Object.defineProperty(Jm,\"__esModule\",{value:!0});const c=Ue(),u=We(),d=$e(),p=pl();Jm.default=class{static id=\"com.android.GpuWorkPeriod\";async onTraceLoad(t){for(var e=t[\"engine\"],r=(await e.query(`\n      include perfetto module android.gpu.work_period;\n\n      with grouped_packages as materialized (\n        select\n          uid,\n          group_concat(package_name, ',') as package_name,\n          count() as cnt\n        from package_list\n        group by uid\n      )\n      select\n        t.id trackId,\n        t.uid as uid,\n        t.gpu_id as gpuId,\n        iif(g.cnt = 1, g.package_name, 'UID ' || t.uid) as packageName\n      from android_gpu_work_period_track t\n      left join grouped_packages g using (uid)\n      order by uid\n    `)).iter({trackId:c.NUM,uid:c.NUM,gpuId:c.NUM,packageName:c.STR}),n=new Map;r.valid();r.next()){var{trackId:a,gpuId:i,uid:o,packageName:s}=r,o=`/gpu_work_period_${i}_`+o,l=await(0,p.createQuerySliceTrack)({trace:t,uri:o,data:{sqlSource:`\n            select ts, dur, name\n            from slice\n            where track_id = ${a}\n          `}});t.tracks.registerTrack({uri:o,tags:{trackIds:[a],kind:d.SLICE_TRACK_KIND},renderer:l});let e=n.get(i);void 0===e&&(e=new u.TrackNode({name:`GPU Work Period (GPU ${i})`,isSummary:!0}),n.set(i,e),t.workspace.addChildInOrder(e)),e.addChildInOrder(new u.TrackNode({name:s,uri:o}))}}}}return Jm}()),T=x.__importDefault(function(){if(!Qm){Qm=1,Object.defineProperty(Zm,\"__esModule\",{value:!0});var e=Jr;const n=Ue(),a=pl(),i=We(),o=e.__importDefault(Wc());class t{static id=\"com.android.InputEvents\";static dependencies=[o.default];async onTraceLoad(e){var t,r;0n!=(await e.engine.query(`\n      SELECT\n        count(*) as cnt\n      FROM slice\n      WHERE name GLOB 'UnwantedInteractionBlocker::notifyMotion*'\n    `)).firstRow({cnt:n.LONG}).cnt&&(await e.engine.query(\"INCLUDE PERFETTO MODULE android.input;\"),t=\"com.android.InputEvents#InputEventsTrack\",r=await(0,a.createQuerySliceTrack)({trace:e,uri:t,data:{sqlSource:`\n      SELECT\n        read_time as ts,\n        end_to_end_latency_dur as dur,\n        CONCAT(event_type, ' ', event_action, ': ', process_name, ' (', input_event_id, ')') as name\n      FROM android_input_events\n      WHERE end_to_end_latency_dur IS NOT NULL\n      `}}),e.tracks.registerTrack({uri:t,renderer:r}),r=new i.TrackNode({uri:t,name:\"Input Events\"}),e.plugins.getPlugin(o.default).getOrCreateStandardGroup(e.workspace,\"USER_INTERACTION\").addChildInOrder(r))}}Zm.default=t}return Zm}()),v=x.__importDefault(function(){if(!Xm){Xm=1,Object.defineProperty(eg,\"__esModule\",{value:!0});var e=Jr;const n=We(),r=e.__importDefault(Wc());e=e.__importDefault(Xh());const a=Ue();class t{static id=\"com.android.LargeScreensPerf\";static dependencies=[r.default,e.default];async onTraceLoad(e){this.addFoldedStateTrackToDeviceState(e),e.commands.registerCommand({id:\"com.android.UnfoldLatencyTracks\",name:\"Organize unfold latency tracks\",callback:async()=>{this.pinCoreTracks(e),this.addUnfoldMiscSection(e),await this.addUnfoldDisplaySwitchingSection(e),this.addUnfoldAnimationSection(e)}})}addFoldedStateTrackToDeviceState(e){var t=e.workspace.flatTracks.find(e=>\"FoldedState\"==e.name);t&&e.plugins.getPlugin(r.default).getOrCreateStandardGroup(e.workspace,\"DEVICE_STATE\").addChildLast(t)}pinCoreTracks(e){e.workspace.flatTracks.filter(e=>\"FoldedState\"==e.name||e.name.includes(\"hingeAngle\")||e.name.endsWith(\"UNFOLD>\")).forEach(e=>e.pin())}addUnfoldMiscSection(e){const t=new n.TrackNode({name:\"Unfold misc\"});e.workspace.addChildFirst(t),e.workspace.flatTracks.filter(e=>e.name.startsWith(\"waitForAllWindowsDrawn\")||\"Waiting for KeyguardDrawnCallback#onDrawn\"==e.name).map(e=>e.clone()).forEach(e=>t.addChildLast(e))}addUnfoldAnimationSection(e){const t=new n.TrackNode({name:\"Unfold animation\"});e.workspace.addChildFirst(t),e.workspace.flatTracks.filter(e=>\"FoldUpdate\"==e.name||e.name.includes(\"UnfoldTransition\")||e.name.includes(\"UnfoldLightRevealOverlayAnimation\")||e.name.endsWith(\"UNFOLD_ANIM>\")).map(e=>e.clone()).forEach(e=>t.addChildLast(e))}async addUnfoldDisplaySwitchingSection(e){const t=new n.TrackNode({name:\"Unfold display switching\"});e.workspace.addChildFirst(t);var r=e.workspace.flatTracks.filter(e=>e.name.includes(\"android.display\")||e.name.includes(\"Screen on blocked\")),e=await this.findPhotonicModulatorTrack(e);null!=e&&r.push(e),r.sort((e,t)=>e.name.localeCompare(t.name)).map(e=>e.clone()).forEach(e=>t.addChildFirst(e))}async findPhotonicModulatorTrack(e){var t=await e.engine.query(`\n          SELECT\n            DISTINCT thread_track.id\n          FROM slice\n          JOIN thread_track ON slice.track_id = thread_track.id\n          LEFT JOIN thread ON thread_track.utid = thread.utid\n          WHERE slice.name LIKE \"setDisplayState%\"\n          AND thread.name LIKE \"PhotonicMod%\"\n        `);if(0!==t.numRows()){const r=t.iter({id:a.NUM}).id;t=e.trace?.tracks.findTrack(e=>e.tags?.trackIds?.includes(r));if(t?.uri)return e.workspace.getTrackByUri(t.uri)}}}eg.default=t}return eg}()),b=x.__importDefault(Eg()),E=x.__importDefault(function(){if(!Sg){Sg=1,Object.defineProperty(Ag,\"__esModule\",{value:!0});const n=Ue(),a=[\"Actual Timeline\",\"Expected Timeline\",\"ndroid.systemui\",\"IKeyguardService\",\"Transition:\",\"L<\",\"UI Events\"];Ag.default=class{static id=\"com.android.PinSysUITracks\";async onTraceLoad(e){var t=await e.engine.query(`\n      INCLUDE PERFETTO MODULE android.process_metadata;\n      select\n        _process_available_info_summary.upid\n      from _process_available_info_summary\n      join process using(upid)\n      where process.name = 'com.android.systemui';\n    `);if(0!==t.numRows()){const r=t.firstRow({upid:n.NUM}).upid;e.commands.registerCommand({id:\"com.android.PinSysUITracks\",name:\"Pin: System UI Related Tracks\",callback:()=>{e.workspace.flatTracks.forEach(t=>{t.uri&&t.uri.startsWith(\"/process_\"+r)&&a.some(e=>t.name.startsWith(e))&&t.pin()}),e.workspace.flatTracks.forEach(e=>{e.hasChildren&&e.name.startsWith(\"com.android.systemui\")&&e.expand()})}})}}}}return Ag}()),S=x.__importDefault(function(){if(!Og){Og=1,Object.defineProperty(Cg,\"__esModule\",{value:!0});var e=Jr,t=e.__importDefault(Wc());const r=e.__importDefault(Am());class n{static id=\"com.android.AndroidRil\";static dependencies=[t.default,r.default];support(e){return e.plugins.getPlugin(r.default)}async onTraceLoad(r){var e=r.engine;const n=this.support(r);if((await n.features(e)).has(\"track.ril\")){const a=\"Modem Detail\";var t=async(e,t)=>n.addSliceTrack(r,`Modem signal strength ${e} `+t,`SELECT ts, dur, name FROM RilScreenOn WHERE band_name = '${e}' AND value_name = '${t}'`,a);await e.query(`\n  DROP VIEW IF EXISTS ScreenOn;\n  CREATE VIEW ScreenOn AS\n  SELECT ts, dur FROM (\n      SELECT\n          ts, value,\n          LEAD(ts, 1, TRACE_END()) OVER (ORDER BY ts)-ts AS dur\n      FROM counter, track ON (counter.track_id = track.id)\n      WHERE track.name = 'ScreenState'\n  ) WHERE value = 2;\n\n  DROP VIEW IF EXISTS RilSignalStrength;\n  CREATE VIEW RilSignalStrength AS\n  With RilMessages AS (\n      SELECT\n          ts, slice.name,\n          LEAD(ts, 1, TRACE_END()) OVER (ORDER BY ts)-ts AS dur\n      FROM slice, track\n      ON (slice.track_id = track.id)\n      WHERE track.name = 'RIL'\n        AND slice.name GLOB 'UNSOL_SIGNAL_STRENGTH*'\n  ),\n  BandTypes(band_ril, band_name) AS (\n      VALUES (\"CellSignalStrengthLte:\", \"LTE\"),\n              (\"CellSignalStrengthNr:\", \"NR\")\n  ),\n  ValueTypes(value_ril, value_name) AS (\n      VALUES (\"rsrp=\", \"rsrp\"),\n              (\"rssi=\", \"rssi\")\n  ),\n  Extracted AS (\n      SELECT ts, dur, band_name, value_name, (\n          SELECT CAST(SUBSTR(key_str, start_idx+1, end_idx-start_idx-1) AS INT64) AS value\n          FROM (\n              SELECT key_str, INSTR(key_str, \"=\") AS start_idx, INSTR(key_str, \" \") AS end_idx\n              FROM (\n                  SELECT SUBSTR(band_str, INSTR(band_str, value_ril)) AS key_str\n                  FROM (SELECT SUBSTR(name, INSTR(name, band_ril)) AS band_str)\n              )\n          )\n      ) AS value\n      FROM RilMessages\n      JOIN BandTypes\n      JOIN ValueTypes\n  )\n  SELECT\n  ts, dur, band_name, value_name, value,\n  value_name || \"=\" || IIF(value = 2147483647, \"unknown\", \"\"||value) AS name,\n  ROW_NUMBER() OVER (ORDER BY ts) as id,\n  DENSE_RANK() OVER (ORDER BY band_name, value_name) AS track_id\n  FROM Extracted;\n\n  DROP TABLE IF EXISTS RilScreenOn;\n  CREATE VIRTUAL TABLE RilScreenOn\n  USING SPAN_JOIN(RilSignalStrength PARTITIONED track_id, ScreenOn)`),await e.query(`\n  CREATE OR REPLACE PERFETTO FUNCTION EXTRACT_KEY_VALUE(source STRING, key_name STRING) RETURNS STRING AS\n  SELECT SUBSTR(trimmed, INSTR(trimmed, \"=\")+1, INSTR(trimmed, \",\") - INSTR(trimmed, \"=\") - 1)\n  FROM (SELECT SUBSTR($source, INSTR($source, $key_name)) AS trimmed);`),await t(\"LTE\",\"rsrp\"),await t(\"LTE\",\"rssi\"),await t(\"NR\",\"rsrp\"),await t(\"NR\",\"rssi\"),await n.addSliceTrack(r,\"Modem channel config\",`\n  With RawChannelConfig AS (\n      SELECT ts, slice.name AS raw_config\n      FROM slice, track\n      ON (slice.track_id = track.id)\n      WHERE track.name = 'RIL'\n      AND slice.name LIKE 'UNSOL_PHYSICAL_CHANNEL_CONFIG%'\n  ),\n  Attributes(attribute, attrib_name) AS (\n      VALUES (\"mCellBandwidthDownlinkKhz\", \"downlink\"),\n          (\"mCellBandwidthUplinkKhz\", \"uplink\"),\n          (\"mNetworkType\", \"network\"),\n          (\"mBand\", \"band\")\n  ),\n  Slots(idx, slot_name) AS (\n      VALUES (0, \"primary\"),\n          (1, \"secondary 1\"),\n          (2, \"secondary 2\")\n  ),\n  Stage1 AS (\n      SELECT *, IFNULL(EXTRACT_KEY_VALUE(STR_SPLIT(raw_config, \"}, {\", idx), attribute), \"\") AS name\n      FROM RawChannelConfig\n      JOIN Attributes\n      JOIN Slots\n  ),\n  Stage2 AS (\n      SELECT *, LAG(name) OVER (PARTITION BY idx, attribute ORDER BY ts) AS last_name\n      FROM Stage1\n  ),\n  Stage3 AS (\n      SELECT *, LEAD(ts, 1, TRACE_END()) OVER (PARTITION BY idx, attribute ORDER BY ts) - ts AS dur\n      FROM Stage2 WHERE name != last_name\n  )\n  SELECT ts, dur, slot_name || \"-\" || attrib_name || \"=\" || name AS name\n  FROM Stage3`,a),await n.addSliceTrack(r,\"Modem cell reselection\",`\n  with base as (\n    select\n        ts,\n        s.name as raw_ril,\n        ifnull(str_split(str_split(s.name, 'CellIdentityLte{', 1), ', operatorNames', 0),\n            str_split(str_split(s.name, 'CellIdentityNr{', 1), ', operatorNames', 0)) as cell_id\n    from track t join slice s on t.id = s.track_id\n    where t.name = 'RIL' and s.name like '%DATA_REGISTRATION_STATE%'\n  ),\n  base2 as (\n    select\n        ts,\n        raw_ril,\n        case\n            when cell_id like '%earfcn%' then 'LTE ' || cell_id\n            when cell_id like '%nrarfcn%' then 'NR ' || cell_id\n            when cell_id is null then 'Unknown'\n            else cell_id\n        end as cell_id\n    from base\n  ),\n  base3 as (\n    select ts, cell_id , lag(cell_id) over (order by ts) as lag_cell_id, raw_ril\n    from base2\n  )\n  select ts, 0 as dur, cell_id as name, raw_ril\n  from base3\n  where cell_id != lag_cell_id\n  order by ts`,a,[\"raw_ril\"])}}}Cg.default=n}return Cg}()),A=x.__importDefault(Ig()),O=x.__importDefault(function(){if(!Rg){Rg=1,Object.defineProperty(Ng,\"__esModule\",{value:!0});const r=Ge(),n=We(),a=ze(),i=Ue();Ng.default=class{static id=\"com.android.TrustyTeeCpuTimeline\";async onTraceLoad(e){var t=\"com.android.TrustyTeeCpuTimeline#TrustyTeeCpuTimeline\",t=(e.tracks.registerTrack({uri:t,renderer:new r.DatasetSliceTrack({trace:e,uri:t,dataset:new a.SourceDataset({src:`\n      SELECT\n        sched.id AS id,\n        ts,\n        dur,\n        cpu,\n        priority,\n        name,\n        utid,\n        thread.name AS threadName,\n        cpu AS depth\n      FROM sched\n      JOIN thread\n        USING (utid)\n      WHERE threadName GLOB 'trusty-nop*'\n    `,schema:{id:i.NUM,ts:i.LONG,dur:i.LONG,name:i.STR,depth:i.NUM}}),detailsPanel:()=>({render:()=>{}})})}),new n.TrackNode({uri:t,name:\"Trusty Tee CPU Timeline\",sortOrder:-100}));e.workspace.addChildInOrder(t)}}}return Ng}()),C=x.__importDefault(function(){if(!Mg){Mg=1,Object.defineProperty(Pg,\"__esModule\",{value:!0});Pg.default=class{static id=\"com.example.Commands\";static description=\"Example plugin to show how to register commands.\";static onActivate(e){e.commands.registerCommand({id:\"com.example.LogHelloWorld\",name:'Log \"Hello, world!\"',callback:()=>console.log(\"Hello, world!\")}),e.commands.registerCommand({id:\"com.example.CommandWithHotkey\",name:'Log \"Hello, world!\" with hotkey',callback:()=>console.log(\"Hello, world!\"),defaultHotkey:\"Mod+Shift+H\"})}async onTraceLoad(e){e.commands.registerCommand({id:\"com.example.LogHelloTrace\",name:'Log \"Hello, trace!\"',callback:()=>console.log(\"Hello, trace!\")})}}}return Pg}()),w=x.__importDefault(function(){if(!Dg){Dg=1,Object.defineProperty(xg,\"__esModule\",{value:!0});const r=Jr.__importDefault(xe()),n=Ne(),a=je();xg.default=class{static id=\"com.example.Settings\";static description=\"Example plugin to show how to register settings.\";static onActivate(e){const t=e.settings.register({id:\"com.example.Settings#booleanSetting\",name:\"Boolean Setting\",description:\"A boolean setting.\",schema:n.z.boolean(),defaultValue:!1});console.log(\"The value of the boolean setting is: \"+t.get()),e.commands.registerCommand({id:\"com.example.ToggleBooleanSetting\",name:\"Toggle Boolean Setting\",callback:()=>{t.set(!t.get()),console.log(\"New value: \"+t.get())}}),e.settings.register({id:\"com.example.Settings#numberSetting\",name:\"Number Setting\",description:\"A numerical setting.\",schema:n.z.number().min(0).max(100),defaultValue:50}),e.settings.register({id:\"com.example.Settings#enumSetting\",name:\"Enum Setting\",description:\"An enum setting.\",schema:n.z.enum([\"high\",\"medium\",\"low\"]),defaultValue:\"medium\"}),e.settings.register({id:\"com.example.Settings#objectSetting\",name:\"Object Setting\",description:\"A complex object requiring a custom renderer.\",schema:n.z.object({foo:n.z.boolean()}),defaultValue:{foo:!1},render:e=>(0,r.default)(\"div\",[(0,r.default)(\"span\",JSON.stringify(e.get()))],(0,r.default)(a.Button,{label:\"Toggle nested boolean\",onclick:()=>{e.set({foo:!e.get().foo})}}))}),e.settings.register({id:\"com.example.Settings#reloadRequired\",name:\"Boolean Setting - Requires Reload\",description:\"After changing this setting, the user will be prompted to reload.\",schema:n.z.boolean(),defaultValue:!1,requiresReload:!0})}async onTraceLoad(e){e.settings.register({id:\"com.example.Settings#booleanSettingWithTrace\",name:\"Boolean Setting (registered with the trace)\",description:\"A boolean setting that's registered with teh trace rather than the app.\",schema:n.z.boolean(),defaultValue:!1})}}}return xg}()),k=x.__importDefault(function(){if(!Lg){Lg=1,Object.defineProperty(Fg,\"__esModule\",{value:!0});Fg.default=class{static id=\"com.example.Skeleton\";static onActivate(e){console.log(\"SkeletonPlugin::onActivate()\",e.pluginId)}async onTraceLoad(e){console.log(\"SkeletonPlugin::onTraceLoad()\",e.traceInfo.traceTitle),void 0!==e.openerPluginArgs&&console.log(\"Postmessage args for \"+e.pluginId,e.openerPluginArgs),e.onTraceReady.addListener(async()=>{console.log(\"SkeletonPlugin::traceready\")})}static metricVisualisations(){return[]}}}return Fg}()),I=x.__importDefault(function(){if(!Ug){Ug=1,Object.defineProperty(Bg,\"__esModule\",{value:!0});var e=fp();const t=Me(),r=Nc();Bg.default=class{static id=\"com.example.State\";store=(0,e.createStore)({counter:0});migrate(e){return(0,t.exists)(e)&&\"object\"==typeof e&&\"counter\"in e&&\"number\"==typeof e.counter?{counter:e.counter}:{counter:0}}async onTraceLoad(t){this.store=t.mountStore(e=>this.migrate(e)),t.trash.use(this.store),t.commands.registerCommand({id:\"com.example.ShowCounter\",name:\"Show ExampleState counter\",callback:()=>{var e=this.store.state.counter;(0,r.addQueryResultsTab)(t,{query:`SELECT ${e} as counter;`,title:\"Show counter \"+e}),this.store.edit(e=>{++e.counter})}})}}}return Bg}()),R=x.__importDefault(function(){if(!jg){jg=1,Object.defineProperty(Hg,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe());Hg.default=class{static id=\"com.example.Tabs\";static description=\"Example plugin to show how to register tabs.\";async onTraceLoad(e){this.createPersistentTab(e),this.createEphemeralTab(e)}createPersistentTab(e){e.tabs.registerTab({uri:\"com.example.Tabs#PersistentTab\",isEphemeral:!1,content:{getTitle:()=>\"Example Persistent Tab\",render:()=>(0,t.default)(\"div\",\"Hello from the global example tab!\")}})}createEphemeralTab(e){e.tabs.registerTab({uri:\"com.example.Tabs#EphemeralTab\",isEphemeral:!0,content:{getTitle:()=>\"Example Ephemeral Tab\",render:()=>(0,t.default)(\"div\",\"Hello from the ephemeral example tab!\")}}),e.tabs.showTab(\"com.example.Tabs#EphemeralTab\")}}}return Hg}()),N=x.__importDefault(qg()),M=x.__importDefault(Sk()),P=x.__importDefault(function(){if(!Ak){Ak=1,Object.defineProperty(Ok,\"__esModule\",{value:!0});const l=Vi(),c=$e(),u=We(),d=Ue();Ok.default=class{static id=\"com.google.PixelCpmTrace\";async onTraceLoad(t){var r=new u.TrackNode({name:\"Central Power Manager\",isSummary:!0}),e=t[\"engine\"],n=(await e.query(`\n      select\n        id AS trackId,\n        extract_arg(dimension_arg_set_id, 'name') AS trackName\n      FROM track\n      WHERE type = 'pixel_cpm_trace'\n      ORDER BY trackName\n    `)).iter({trackId:d.NUM,trackName:d.STR});for(let e=!1;n.valid();n.next()){var{trackId:a,trackName:i}=n,o=\"/cpm_trace_\"+i,s=await(0,l.createQueryCounterTrack)({trace:t,uri:o,data:{sqlSource:`\n             select ts, value\n             from counter\n             where track_id = ${a}\n           `,columns:[\"ts\",\"value\"]},columns:{ts:\"ts\",value:\"value\"}});t.tracks.registerTrack({uri:o,tags:{kind:c.COUNTER_TRACK_KIND,trackIds:[a]},renderer:s}),r.addChildInOrder(new u.TrackNode({uri:o,name:i})),e||(t.workspace.addChildInOrder(r),e=!0)}}}}return Ok}()),D=x.__importDefault(function(){if(!Ck){Ck=1,Object.defineProperty(wk,\"__esModule\",{value:!0});const p=Jr,_=Ol(),l=Fe(),c=Ue(),u=He(),y=De(),f=Le();wk.default=class{static id=\"com.google.PixelMemory\";tablesInitialized=!1;async setupTables(e){this.tablesInitialized||(await e.engine.query(\"INCLUDE PERFETTO MODULE android.gpu.memory;\"),await e.engine.query(\"INCLUDE PERFETTO MODULE linux.memory.process;\"),await e.engine.query(`\n  DROP TABLE IF EXISTS process_memory_breakdown;\n  CREATE VIRTUAL TABLE process_memory_breakdown\n  USING\n    SPAN_OUTER_JOIN(\n      android_gpu_memory_per_process PARTITIONED upid,\n      memory_rss_and_swap_per_process PARTITIONED upid\n    );\n`),this.tablesInitialized=!0)}async addMaxMemoryAnnotation(e,t,r){try{var n,a,i,o,s=await e.engine.query(t);0<s.numRows()&&(n=s.firstRow({ts:c.NUM,value:c.NUM}),a=BigInt(n.ts),i=(n.value/1024).toFixed(2)+` KiB : Max PID (${r})`,o=(0,u.randomColor)(),e.notes.addNote({timestamp:l.Time.fromRaw(a),text:i,color:o}))}catch(e){console.error(\"Failed to add max memory annotation:\",e)}}async createAggregatedTrackAndGetTable(t,e,r,n,a,i,o){var s=e.replace(/[#\\.]/g,\"_\"),l=r.map(e=>\"value_\"+e),e=\"__agg_\"+s,c=[];for(let e=0;e<r.length;e++){var u=r[e],d=`__view_${s}_`+u,u=`\n        SELECT\n            ts,\n            dur,\n            (${n}) AS ${l[e]}\n        FROM process_memory_breakdown\n        WHERE pid = ${u};\n      `,d=await(0,y.createView)({engine:t.engine,name:d,as:u});c.push(d),o.use(d)}var p=c.map(e=>e.name);let f=p[0];for(let e=1;e<r.length;e++){var h=`__joined_${s}_`+e,m=`SPAN_OUTER_JOIN(${f}, ${p[e]})`,h=await(0,y.createVirtualTable)({engine:t.engine,name:h,using:m});o.use(h),f=h.name}var g=f,g=`\n      SELECT\n        CAST(ts AS BIGINT) AS ts,\n        (${l.map(e=>`IFNULL(${e}, 0)`).join(\" + \")}) AS value\n      FROM ${g}\n      WHERE ts IS NOT NULL;\n    `,g=await(0,y.createPerfettoTable)({engine:t.engine,name:e,as:g});return o.use(g),await(0,_.addDebugCounterTrack)({trace:t,data:{sqlSource:`SELECT ts, value FROM ${e} ORDER BY ts`,columns:[\"ts\",\"value\"]},title:\"\"+i+a}),e}async prepareAnnotationData(e,t,r,n,a,i){var o,s;return 1<r.length?(o=r.join(\"_\"),s=r.join(\"+\"),{findMaxSql:`\n        SELECT ts, value\n        FROM ${await this.createAggregatedTrackAndGetTable(e,t,r,n,a,o,i)}\n        WHERE value IS NOT NULL\n        ORDER BY value DESC, ts ASC\n        LIMIT 1\n      `,noteTarget:s}):(e=r[0],{findMaxSql:`\n        SELECT\n          ts,\n          (${n}) AS value\n        FROM process_memory_breakdown\n        WHERE pid = ${r[0]} AND value IS NOT NULL\n        ORDER BY value DESC, ts ASC\n        LIMIT 1\n      `,noteTarget:e})}registerMemoryCommand(l,c,e,u,d){l.commands.registerCommand({id:c,name:e,callback:async e=>{var t={stack:[],error:void 0,hasError:!1};try{if(void 0===e){var r=await l.omnibox.prompt(\"Enter up to 5 process pids, separated by commas (e.g. 1234, 5678)\");if(void 0===r)return;e=r}var n=e.split(\",\").map(e=>e.trim()).filter(e=>e);if(0!==n.length)if(5<n.length)alert(`Please enter at most 5 PIDs. You entered ${n.length}.`);else{var a=new f.AsyncDisposableStack;p.__addDisposableResource(t,a,!0);try{await this.setupTables(l);for(const s of n)await(0,_.addDebugCounterTrack)({trace:l,data:{sqlSource:`\n                  SELECT\n                    ts,\n                    (${u}) AS value\n                  FROM process_memory_breakdown\n                  WHERE pid = ${s}\n                `,columns:[\"ts\",\"value\"]},title:\"\"+s+d});var{findMaxSql:i,noteTarget:o}=await this.prepareAnnotationData(l,c,n,u,d,a);await this.addMaxMemoryAnnotation(l,i,o)}catch(e){console.error(`PixelMemory Plugin: Error in command ${c}:`,e),alert(\"PixelMemory Plugin Error: \"+(e instanceof Error?e.message:e))}}}catch(e){t.error=e,t.hasError=!0}finally{r=p.__disposeResources(t);r&&await r}}})}async onTraceLoad(e){this.registerMemoryCommand(e,\"com.google.ShowPixelTotalMemory\",\"Add tracks: show process total memory\",\"COALESCE(rss_and_swap, 0) + COALESCE(gpu_memory, 0)\",\"_rss_anon_file_swap_shmem_gpu\"),this.registerMemoryCommand(e,\"com.google.ShowPixelRssAnonShmemSwapGpuMemory\",\"Add tracks: show process total memory (excluding file RSS)\",\"COALESCE(anon_rss_and_swap, 0) + COALESCE(shmem_rss, 0) + COALESCE(gpu_memory, 0)\",\"_rss_anon_shmem_swap_gpu\")}}}return wk}()),L=x.__importDefault(function(){if(!kk){kk=1,Object.defineProperty(Ik,\"__esModule\",{value:!0});Ik.default=class{static id=\"com.google.YouTubeTrace\";async onTraceLoad(e){e.commands.registerCommand({id:\"com.google.YouTubePinJankTracksMainThread\",name:\"YT CUJ: Pin Jank Tracks (main thread)\",callback:async()=>{await this.tryIncludeCommonModule(e)&&(this.pinDebugTrack(e,\"SELECT * FROM reconstruct_imp_duration_spans(1)\",\"YT Jank: Imp Duration (main thread)\"),this.pinDebugTrack(e,\"SELECT * FROM recreate_scroll_duration_spans(1)\",\"YT Jank: Scroll Duration (main thread)\"),this.pinDebugTrack(e,\"SELECT * FROM merged_local_directors(1)\",\"YT Jank: Merged Local Director (main thread)\"))}}),e.commands.registerCommand({id:\"com.google.YouTubePinJankTracksAllThreads\",name:\"YT CUJ: Pin Jank Tracks (all threads)\",callback:async()=>{await this.tryIncludeCommonModule(e)&&(this.pinDebugTrack(e,\"SELECT * FROM reconstruct_imp_duration_spans(0)\",\"YT Jank: Imp Duration (all threads)\"),this.pinDebugTrack(e,\"SELECT * FROM recreate_scroll_duration_spans(0)\",\"YT Jank: Scroll Duration (all threads)\"),this.pinDebugTrack(e,\"SELECT * FROM merged_local_directors(0)\",\"YT Jank: Merged Local Director (all threads)\"))}})}pinDebugTrack(e,t,r){e.workspace.pinnedTracks.find(e=>e.name===r)||e.commands.runCommand(\"dev.perfetto.AddDebugSliceTrack\",t,r)}async tryIncludeCommonModule(e){try{return await e.engine.query(\"INCLUDE PERFETTO MODULE google3.video.youtube.analytics.client_apps.system_health.tools.trace.perfetto_module.imp\"),await e.engine.query(\"INCLUDE PERFETTO MODULE google3.video.youtube.analytics.client_apps.system_health.tools.trace.perfetto_module.scroll\"),await e.engine.query(\"INCLUDE PERFETTO MODULE google3.video.youtube.analytics.client_apps.system_health.tools.trace.perfetto_module.local_director\"),!0}catch(e){return!1}}}}return Ik}()),F=x.__importDefault(Dk()),U=x.__importDefault(function(){if(xk)return Lk;xk=1,Object.defineProperty(Lk,\"__esModule\",{value:!0});var e=Ne();const t=Pe();var r=\"dev.perfetto.AutoPinAndExpandTracks\";const n=r+\"#savedPerfettoTracks\";function a(e){return\"boolean\"==typeof e||void 0===e||\"\"===(e=e.trim())?[]:[e]}class i{static id=r;ctx;static expandTracks=[];static pinTracks=[];static onActivate(e){var t=document.createElement(\"input\"),t=(t.classList.add(\"pinned_tracks_import_selector\"),t.setAttribute(\"type\",\"file\"),t.style.display=\"none\",t.addEventListener(\"change\",async e=>{if(!(e.target instanceof HTMLInputElement))throw new Error(\"Not an input element\");var t;e.target.files&&(t=e.target.files[0].text(),e.target.value=\"\",e=JSON.parse(await t),(t=c.safeParse(e)).success?l(t.data):alert(\"Unable to import saved tracks.\"))}),document.body.appendChild(t),e.initialPluginRouteArgs);i.expandTracks=a(t.expand_tracks_with_name_on_startup),i.pinTracks=a(t.pin_tracks_with_name_on_startup)}async onTraceLoad(e){(this.ctx=e).commands.registerCommand({id:\"dev.perfetto.SavePinnedTracks\",name:\"Save: Pinned tracks\",callback:()=>{s({...o(),tracks:this.getCurrentPinnedTracks()})}}),e.commands.registerCommand({id:\"dev.perfetto.AutoPinAndExpandTracks#restore\",name:\"Restore: Pinned tracks\",callback:()=>{var e=o()?.tracks;e?this.restoreTracks(e):alert(\"No saved tracks. Use the Save command first\")}}),e.commands.registerCommand({id:\"dev.perfetto.SavePinnedTracksByName\",name:\"Save by name: Pinned tracks\",callback:async()=>{var e=await this.ctx.omnibox.prompt(\"Give a name to the pinned set of tracks\");e&&l({name:e,tracks:this.getCurrentPinnedTracks()})}}),e.commands.registerCommand({id:\"dev.perfetto.RestorePinnedTracksByName\",name:\"Restore by name: Pinned tracks\",callback:async()=>{var e=o()?.tracksByName??[];0===e.length?alert(\"No saved tracks. Use the Save by name command first\"):(e=await this.ctx.omnibox.prompt(\"Select name of set of pinned tracks to restore\",{values:e,getName:e=>e.name}))&&this.restoreTracks(e.tracks)}}),e.commands.registerCommand({id:\"dev.perfetto.ExportPinnedTracksByName\",name:\"Export by name: Pinned tracks\",callback:async()=>{var e,t=o()?.tracksByName??[];0===t.length?alert(\"No saved tracks. Use the Save by name command first\"):(t=await this.ctx.omnibox.prompt(\"Select name of set of pinned tracks to export\",{values:t,getName:e=>e.name}))&&((e=document.createElement(\"a\")).href=\"data:application/json;charset=utf-8,\"+JSON.stringify(t),e.download=\"perfetto-pinned-tracks-export.json\",e.target=\"_blank\",document.body.appendChild(e),e.click(),document.body.removeChild(e))}}),e.commands.registerCommand({id:\"dev.perfetto.ImportPinnedTracksByName\",name:\"Import by name: Pinned tracks\",callback:async()=>{var e=document.querySelector(\".pinned_tracks_import_selector\");(0,t.assertIsInstance)(e,HTMLInputElement).click()}}),this.processUrlParameters()}processUrlParameters(){var e=this.ctx.workspace.flatTracks;if(0<i.expandTracks.length){const r=i.expandTracks.map(e=>new RegExp(\"^\"+e));e.filter(t=>r.some(e=>e.test(t.name))).forEach(e=>e.expand())}if(0<i.pinTracks.length){const n=i.pinTracks.map(e=>new RegExp(\"^\"+e));e.filter(t=>n.some(e=>e.test(t.name))).forEach(e=>e.pin())}i.expandTracks=[],i.pinTracks=[]}restoreTracks(e){const r=this.ctx.workspace.flatTracks.map(e=>({savedTrack:this.toSavedTrack(e),track:e}));e=e.map(e=>{var t=this.findMatchingTrack(r,e);return t?(t.pin(),{restored:!0,track:e}):(console.warn(\"[AutoPinAndExpandTracks] No track found that matches\",e),{restored:!1,track:e})}).filter(({restored:e})=>!e).map(({track:e})=>e.trackName);0<e.length&&alert(`[AutoPinAndExpandTracks]\nUnable to restore the following tracks:\n`+e.join(\"\\n\"))}getCurrentPinnedTracks(){var e=[];for(const t of this.ctx.workspace.pinnedTracks)e.push(this.toSavedTrack(t));return e}findMatchingTrack(t,r){let n=void 0,a=0;for(let e=0;e<t.length;e++){var i=t[e],o=this.calculateSimilarityScore(i.savedTrack,r);if(o===Number.MAX_SAFE_INTEGER)return i.track;0!==o&&o>a&&(a=o,n=i)}return n?.track||void 0}calculateSimilarityScore(e,t){if(e.trackName===t.trackName&&e.groupName===t.groupName&&e.pluginId===t.pluginId&&e.kind===t.kind&&e.isMainThread===t.isMainThread)return Number.MAX_SAFE_INTEGER;let r=0;return e.trackName===t.trackName?r+=100:this.removeNumbers(e.trackName)===this.removeNumbers(t.trackName)&&(r+=50),e.groupName===t.groupName?r+=90:this.removeNumbers(e.groupName)===this.removeNumbers(t.groupName)&&(r+=45),0!==r&&(e.pluginId===t.pluginId&&(r+=30),e.kind===t.kind&&(r+=20),e.isMainThread===t.isMainThread)&&(r+=10),r}removeNumbers(e){return e?.replace(/\\d+/g,\"\")}toSavedTrack(e){let t=void 0;return null!=e.uri&&(t=this.ctx.tracks.getTrack(e.uri)),{groupName:e.parent?.name,trackName:e.name,pluginId:t?.pluginId,kind:t?.tags?.kind,isMainThread:t?.chips?.includes(\"main thread\")||!1}}}function o(){var e=window.localStorage.getItem(n);if(e){e=u.safeParse(JSON.parse(e));if(e.success)return e.data}}function s(e){window.localStorage.setItem(n,JSON.stringify(e))}function l({name:e,tracks:t}){var r=o(),n=r?.tracksByName??[],n=new Map(n.map(e=>[e.name,e.tracks]));n.set(e,t),s({...r,tracksByName:Array.from(n.entries()).map(([e,t])=>({name:e,tracks:t}))})}Lk.default=i,r=e.z.object({groupName:e.z.string().optional(),trackName:e.z.string(),pluginId:e.z.string().optional(),kind:e.z.string().optional(),isMainThread:e.z.boolean()}).readonly();const c=e.z.object({name:e.z.string(),tracks:e.z.array(r).readonly()}).readonly(),u=e.z.object({tracks:e.z.array(r).optional().readonly(),tracksByName:e.z.array(c).optional().readonly()}).readonly();return Lk}()),B=x.__importDefault(Bk()),j=x.__importDefault(function(){if(!jk){jk=1,Object.defineProperty(Hk,\"__esModule\",{value:!0});const t=Ol();Hk.default=class{static id=\"dev.perfetto.Chaos\";static onActivate(e){e.commands.registerCommand({id:\"dev.perfetto.CrashNow\",name:\"Chaos: crash now\",callback:()=>{throw new Error(\"Manual crash from dev.perfetto.Chaos#CrashNow\")}})}async onTraceLoad(e){e.commands.registerCommand({id:\"dev.perfetto.CrashNowQuery\",name:\"Chaos: run crashing query\",callback:()=>{e.engine.query(`this is a\n          syntactically\n          invalid\n          query\n          over\n          many\n          lines\n        `)}}),e.commands.registerCommand({id:\"dev.perfetto.AddCrashingDebugTrack\",name:\"Chaos: add crashing debug track\",callback:()=>{(0,t.addDebugSliceTrack)({trace:e,data:{sqlSource:`\n              syntactically\n              invalid\n              query\n              over\n              many\n            `},title:\"Chaos track\"})}})}}}return Hk}()),H=x.__importDefault(Yk()),G=x.__importDefault(nI()),V=x.__importDefault(function(){if(!aI){aI=1,Object.defineProperty(iI,\"__esModule\",{value:!0});var e=Jr;const o=We(),s=Vi(),l=e.__importDefault(Wc()),c=Ue();class t{static id=\"dev.perfetto.CpuidleTimeInState\";static dependencies=[l.default];async addCounterTrack(e,t,r,n,a){var i=\"/cpuidle_time_in_state_\"+t,r=await(0,s.createQueryCounterTrack)({trace:e,uri:i,data:{sqlSource:r,columns:[\"ts\",\"value\"]},columns:{ts:\"ts\",value:\"value\"},options:a}),a=(e.tracks.registerTrack({uri:i,renderer:r}),new o.TrackNode({uri:i,name:t}));n.addChildInOrder(a)}async addIdleStateTrack(e,t,r){await this.addCounterTrack(e,\"cpuidle.\"+t,`\n        select\n          ts,\n          idle_percentage as value\n        from linux_cpu_idle_time_in_state_counters\n        where state = '${t}'\n      `,r,{unit:\"percent\",yOverrideMaximum:100,yOverrideMinimum:0})}async addPerCpuIdleStateTrack(e,t,r,n){await this.addCounterTrack(e,`cpuidle.cpu${r}.${t} Residency`,`\n        select\n          ts,\n          idle_percentage as value\n        from linux_per_cpu_idle_time_in_state_counters\n        where state = '${t}' AND cpu = ${r}\n      `,n,{unit:\"percent\",yOverrideMaximum:100,yOverrideMinimum:0})}async onTraceLoad(e){var t=new o.TrackNode({name:\"CPU Idle Time In State\",isSummary:!0}),r=e.engine;await r.query(\"INCLUDE PERFETTO MODULE linux.cpu.idle_time_in_state;\");for(var n=(await r.query(\"select distinct state from linux_cpu_idle_time_in_state_counters\")).iter({state:c.STR});n.valid();n.next())await this.addIdleStateTrack(e,n.state,t);t.hasChildren&&e.plugins.getPlugin(l.default).getOrCreateStandardGroup(e.workspace,\"CPU\").addChildInOrder(t);for(var a=new o.TrackNode({name:\"CPU Idle Per Cpu Time In State\",isSummary:!0}),i=(await r.query(\"select distinct state, cpu from linux_per_cpu_idle_time_in_state_counters\")).iter({state:c.STR,cpu:c.NUM});i.valid();i.next())await this.addPerCpuIdleStateTrack(e,i.state,i.cpu,a);a.hasChildren&&e.plugins.getPlugin(l.default).getOrCreateStandardGroup(e.workspace,\"CPU\").addChildInOrder(a)}}iI.default=t}return iI}()),q=x.__importDefault(dI()),z=x.__importDefault(function(){if(!pI){pI=1,Object.defineProperty(fI,\"__esModule\",{value:!0});const o=Ol(),s=Me();async function a(e,t,r){return\"string\"==typeof t?t:e.omnibox.prompt(r)}function i(e,t){return\"string\"==typeof e?e:t}fI.default=class{static id=\"dev.perfetto.DebugTracks\";async onTraceLoad(n){n.commands.registerCommand({id:\"dev.perfetto.AddDebugSliceTrack\",name:\"Add debug slice track\",callback:async(e,t)=>{e=await a(n,e,\"Enter a query...\");(0,s.exists)(e)&&(t=i(t,\"Debug slice track\"),await(0,o.addDebugSliceTrack)({trace:n,data:{sqlSource:e},title:t}))}}),n.commands.registerCommand({id:\"dev.perfetto.AddDebugCounterTrack\",name:\"Add debug counter track\",callback:async(e,t)=>{e=await a(n,e,\"Enter a query...\");(0,s.exists)(e)&&(t=i(t,\"Debug counter track\"),await(0,o.addDebugCounterTrack)({trace:n,data:{sqlSource:e},title:t}))}}),n.commands.registerCommand({id:\"dev.perfetto.AddDebugSliceTrackWithPivot\",name:\"Add debug slice track with pivot\",callback:async(e,t,r)=>{e=await a(n,e,\"Enter a query...\");(0,s.exists)(e)&&(t=await a(n,t,\"Enter column name to pivot on...\"))&&(r=i(r,\"Debug slice track\"),await(0,o.addDebugSliceTrack)({trace:n,data:{sqlSource:e},title:r,pivotOn:t}))}}),n.commands.registerCommand({id:\"dev.perfetto.AddDebugCounterTrackWithPivot\",name:\"Add debug counter track with pivot\",callback:async(e,t,r)=>{e=await a(n,e,\"Enter a query...\");(0,s.exists)(e)&&(t=await a(n,t,\"Enter column name to pivot on...\"))&&(r=i(r,\"Debug counter track\"),await(0,o.addDebugCounterTrack)({trace:n,data:{sqlSource:e},title:r,pivotOn:t}))}})}}}return fI}()),W=x.__importDefault(gI()),$=x.__importDefault(bI()),K=x.__importDefault(EM()),Y=x.__importDefault(PM()),J=x.__importDefault(function(){if(!jM){jM=1,Object.defineProperty(xM,\"__esModule\",{value:!0});const l=Jr.__importDefault(xe()),c=We(),a=Ue(),u=FM(),d=qM(),p={version:1,filter:{excludeList:[]}};xM.default=class{static id=\"dev.perfetto.Ftrace\";async onTraceLoad(e){var t=e.mountStore(e=>\"object\"==typeof e&&null!==e&&\"version\"in e&&1===e.version?e:p);e.trash.use(t);const r=t.createSubStore([\"filter\"],e=>e);e.trash.use(r);var t=await this.lookupCpuCores(e),n=new c.TrackNode({name:\"Ftrace Events\",sortOrder:-5,isSummary:!0});for(const s of t){var a=\"/ftrace/cpu\"+s.ucpu,a=(e.tracks.registerTrack({uri:a,description:\"Ftrace events for CPU \"+s.toString(),tags:{cpu:s.cpu},renderer:(0,d.createFtraceTrack)(e,a,s,r)}),new c.TrackNode({uri:a,name:\"Ftrace Track for CPU \"+s.toString()}));n.addChildInOrder(a)}n.children.length&&e.workspace.addChildInOrder(n);const i={state:\"blank\",counters:[]},o=\"perfetto.FtraceRaw#FtraceEventsTab\";e.tabs.registerTab({uri:o,isEphemeral:!1,content:{render:()=>(0,l.default)(u.FtraceExplorer,{filterStore:r,cache:i,trace:e}),getTitle:()=>\"Ftrace Events\"}}),e.commands.registerCommand({id:\"dev.perfetto.ShowFtraceTab\",name:\"Show ftrace tab\",callback:()=>{e.tabs.showTab(o)}})}async lookupCpuCores(e){var t=await e.engine.query(`\n      SELECT DISTINCT\n        ucpu\n      FROM ftrace_event\n      ORDER BY ucpu\n    `);const r=new Set;for(var n=t.iter({ucpu:a.NUM});n.valid();n.next())r.add(n.ucpu);return e.traceInfo.cpus.filter(e=>r.has(e.ucpu))}}}return xM}()),Q=x.__importDefault($M()),Z=x.__importDefault(function(){if(!KM){KM=1,Object.defineProperty(YM,\"__esModule\",{value:!0});var e=Jr;const a=We(),i=$e(),o=Ue(),s=Ld();class t{static id=\"dev.perfetto.GpuFreq\";static dependencies=[e.__importDefault(Xh()).default];async onTraceLoad(e){for(var t=(await e.engine.query(`\n      select id, gpu_id as gpuId\n      from gpu_counter_track\n      join _counter_track_summary using (id)\n      where name = 'gpufreq'\n    `)).iter({id:o.NUM,gpuId:o.NUM});t.valid();t.next()){var r=\"/gpu_frequency_\"+t.gpuId,n=`Gpu ${t.gpuId} Frequency`,r=(e.tracks.registerTrack({uri:r,tags:{kind:i.COUNTER_TRACK_KIND,trackIds:[t.id]},renderer:new s.TraceProcessorCounterTrack(e,r,{},t.id,n)}),new a.TrackNode({uri:r,name:n,sortOrder:-20}));e.workspace.addChildInOrder(r)}}}YM.default=t}return YM}()),X=x.__importDefault(function(){if(!dP){dP=1,Object.defineProperty(XM,\"__esModule\",{value:!0});var e=Jr;const s=Ue(),l=mP(),c=We(),t=De(),u=e.__importDefault(Vc()),d=\"heap_profile_events\";class r{static id=\"dev.perfetto.HeapProfile\";static dependencies=[u.default];trackMap=new Map;async onTraceLoad(e){await this.createHeapProfileTable(e),await this.addProcessTracks(e),e.onTraceReady.addListener(async()=>{await this.selectFirstHeapProfile(e)})}async createHeapProfileTable(e){await(0,t.createPerfettoTable)({engine:e.engine,name:d,as:`\n        SELECT\n          MIN(id) as id,\n          graph_sample_ts AS ts,\n          upid,\n          0 AS dur,\n          0 AS depth,\n          'graph' AS type\n        FROM heap_graph_object\n        GROUP BY graph_sample_ts, upid\n\n        UNION ALL\n\n        SELECT\n          MIN(id) as id,\n          ts,\n          upid,\n          0 AS dur,\n          0 AS depth,\n          'heap_profile:' || GROUP_CONCAT(DISTINCT heap_name) AS type\n        FROM heap_profile_allocation\n        GROUP BY ts, upid\n      `})}async addProcessTracks(e){for(var t=e.plugins.getPlugin(u.default),r=await this.getIncomplete(e),n=(await e.engine.query(`\n      SELECT DISTINCT \n        upid\n      FROM ${d}\n    `)).iter({upid:s.NUM});n.valid();n.next()){var a=n.upid,i=`/process_${a}/heap_profile`,o={uri:i,tags:{upid:a},renderer:(0,l.createHeapProfileTrack)(e,i,d,a,r)},o=(e.tracks.registerTrack(o),this.trackMap.set(a,o),t.getGroupForProcess(a)),a=new c.TrackNode({uri:i,name:\"Heap Profile\",sortOrder:-30});o?.addChildInOrder(a)}}async getIncomplete(e){return 0<(await e.engine.query(`\n      SELECT value\n      FROM stats\n      WHERE name = 'heap_graph_non_finalized_graph'\n    `)).firstRow({value:s.NUM}).value}async selectFirstHeapProfile(e){var t,r=(await e.engine.query(`\n        SELECT\n          id,\n          upid\n        FROM ${d}\n        ORDER BY ts\n        LIMIT 1\n      `)).maybeFirstRow({id:s.NUM,upid:s.NUM});r&&(t=this.trackMap.get(r.upid))&&e.selection.selectTrackEvent(t.uri,r.id)}}XM.default=r}return XM}()),ee=x.__importDefault(vP()),te=x.__importDefault(CP()),re=x.__importDefault(function(){if(!wP){wP=1,Object.defineProperty(kP,\"__esModule\",{value:!0}),kP.assertExists=d;var e=Jr;const p=$e(),f=We(),h=Ue(),a=e.__importDefault(Vc()),i=e.__importDefault(Wc());e=e.__importDefault(Xh());const m=Ld(),g=Zh();class t{static id=\"dev.perfetto.KernelTrackEvent\";static dependencies=[a.default,i.default,e.default];static description=\"Renders tracks derived from ftrace events that follow a specific convention.\";kernelTrackEventsNode;async onTraceLoad(e){await this.addTracks(e)}async addTracks(e){for(var t=(await e.engine.query(`\n      WITH\n        kernel_tracks AS (\n          SELECT\n            id,\n            name,\n            type,\n            extract_arg(dimension_arg_set_id, 'utid') AS utid,\n            extract_arg(dimension_arg_set_id, 'upid') AS upid,\n            extract_arg(dimension_arg_set_id, 'cpu') AS cpu,\n            extract_arg(dimension_arg_set_id, 'scope') AS scope\n          FROM track\n          WHERE\n            type IN ('kernel_trackevent_thread_slice',\n                     'kernel_trackevent_process_slice',\n                     'kernel_trackevent_cpu_slice',\n                     'kernel_trackevent_custom_slice',\n                     'kernel_trackevent_thread_counter',\n                     'kernel_trackevent_process_counter',\n                     'kernel_trackevent_cpu_counter',\n                     'kernel_trackevent_custom_counter')\n        )\n      SELECT\n        kt.id as trackId,\n        kt.name,\n        kt.utid,\n        kt.upid,\n        kt.cpu,\n        kt.scope,\n        kt.type IN (\n          'kernel_trackevent_thread_counter',\n          'kernel_trackevent_process_counter',\n          'kernel_trackevent_cpu_counter',\n          'kernel_trackevent_custom_counter'\n        ) as isCounter,\n        t.tid as tid,\n        p.pid as pid\n      FROM kernel_tracks AS kt\n      LEFT JOIN process AS p\n        USING (upid)\n      LEFT JOIN thread AS t\n        USING (utid)\n      ORDER BY COALESCE(t.tid, p.pid, kt.cpu, kt.scope)\n    `)).iter({trackId:h.NUM,name:h.STR_NULL,utid:h.NUM_NULL,upid:h.NUM_NULL,cpu:h.NUM_NULL,scope:h.NUM_NULL,isCounter:h.NUM,tid:h.NUM_NULL,pid:h.NUM_NULL});t.valid();t.next()){var{trackId:r,name:n,utid:a,upid:i,cpu:o,isCounter:s,scope:l,tid:c,pid:u}=t,n=this.getTrackName(d(n),u??void 0,c??void 0,o??void 0,l??void 0),u=\"/kernel_trackevent_\"+r,c=(s?e.tracks.registerTrack({uri:u,tags:{kind:p.COUNTER_TRACK_KIND,trackIds:[r],upid:i??void 0,utid:a??void 0,cpu:o??void 0,trackScope:l??void 0},renderer:new m.TraceProcessorCounterTrack(e,u,{},r,n)}):e.tracks.registerTrack({uri:u,tags:{kind:p.SLICE_TRACK_KIND,trackIds:[r],upid:i??void 0,utid:a??void 0,cpu:o??void 0,trackScope:l??void 0},renderer:await(0,g.createTraceProcessorSliceTrack)({trace:e,uri:u,trackIds:[r]})}),void 0!==a||void 0!==i?20:0),s=new f.TrackNode({uri:u,name:n,sortOrder:c});this.getOrCreateParentTrackNode(e,i??void 0,a??void 0,o??void 0).addChildInOrder(s)}}getTrackName(e,t,r,n,a){return void 0!==t?e+` (${t})`:void 0!==r?e+` (${r})`:void 0!==n?e+` (${n})`:void 0!==a?e+` (${a})`:e}getOrCreateParentTrackNode(e,t,r,n){return void 0!==t?d(e.plugins.getPlugin(a.default).getGroupForProcess(d(t))):void 0!==r?d(e.plugins.getPlugin(a.default).getGroupForThread(d(r))):void 0!==n?d(e.plugins.getPlugin(i.default).getOrCreateStandardGroup(e.workspace,\"CPU\")):(void 0===this.kernelTrackEventsNode&&(t=d(e.plugins.getPlugin(i.default).getOrCreateStandardGroup(e.workspace,\"KERNEL\")),this.kernelTrackEventsNode=new f.TrackNode({name:\"Kernel track events\",isSummary:!0}),t.addChildInOrder(this.kernelTrackEventsNode)),this.kernelTrackEventsNode)}}function d(e,t){if(null==e)throw new Error(t??\"Value doesn't exist\");return e}kP.default=t}return kP}()),ne=x.__importDefault(DP()),ae=x.__importDefault(function(){if(!I2){I2=1,Object.defineProperty(LP,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=M2();LP.default=class{static id=\"dev.perfetto.MetricsPage\";async onTraceLoad(e){e.pages.registerPage({route:\"/metrics\",render:()=>(0,t.default)(r.MetricsPage,{trace:e})}),e.sidebar.addMenuItem({section:\"current_trace\",text:\"Metrics\",href:\"#!/metrics\",icon:\"speed\",sortOrder:9})}}}return LP}()),ie=x.__importDefault(F2()),oe=x.__importDefault($2()),se=x.__importDefault(Vc()),le=x.__importDefault(function(){if(!K2){K2=1,Object.defineProperty(Y2,\"__esModule\",{value:!0});const n=Jr.__importDefault(xe());function r(e){return e.toFixed(1)}Y2.default=class{static id=\"dev.perfetto.QueryLog\";async onTraceLoad(t){const e=t.pluginId+\"#QueryLogTab\";t.commands.registerCommand({id:\"dev.perfetto.ShowQueryLogTab\",name:\"Show query log tab\",callback:()=>{t.tabs.showTab(e)}}),t.tabs.registerTab({isEphemeral:!1,uri:e,content:{getTitle(){return\"Query log\"},render(){var e=Array.from(t.engine.queryLog).reverse();return(0,n.default)(\"table.pf-query-log-table\",(0,n.default)(\"tr\",(0,n.default)(\"th\",\"Query\"),(0,n.default)(\"th\",\"Tag\"),(0,n.default)(\"th\",\"Status\"),(0,n.default)(\"th\",\"Start time (ms)\"),(0,n.default)(\"th\",\"Duration (ms)\")),e.map(e=>(0,n.default)(\"tr\",(0,n.default)(\"td\",e.query),(0,n.default)(\"td\",e.tag),(0,n.default)(\"td\",void 0===e.success?\"Running...\":e.success?\"Completed\":\"Failed\"),(0,n.default)(\"td\",r(e.startTime)),(0,n.default)(\"td\",void 0===e.endTime?\"...\":r(e.endTime-e.startTime)))))}}})}}}return Y2}()),ce=x.__importDefault(cx()),ue=x.__importDefault(UF()),de=x.__importDefault(TU()),pe=x.__importDefault(function(){if(!EU){EU=1,Object.defineProperty(SU,\"__esModule\",{value:!0});const r=We(),n=Ue(),a=CU();SU.default=class{static id=\"dev.perfetto.Screenshots\";async onTraceLoad(e){var t=(await e.engine.query(`\n      INCLUDE PERFETTO MODULE android.screenshots;\n      select\n        count() as count\n      from android_screenshots\n    `)).firstRow({count:n.NUM})[\"count\"];0<t&&(e.tracks.registerTrack({uri:t=\"/screenshots\",renderer:(0,a.createScreenshotsTrack)(e,t)}),t=new r.TrackNode({uri:t,name:\"Screenshots\",sortOrder:-60}),e.workspace.addChildInOrder(t))}}}return SU}()),fe=x.__importDefault(FI()),he=x.__importDefault(Wc()),me=x.__importDefault(H2()),ge=x.__importDefault(function(){if(!wU){wU=1,Object.defineProperty(kU,\"__esModule\",{value:!0});const s=Jr.__importDefault(xe()),a=Fe(),n=Ke(),i=Pe(),r=je(),o=Be();var e=\"dev.perfetto.TimelineSync\";const l=1000000000n;kU.default=class{static id=e;_chan;_ctx;_traceLoadTime=0;_clientId=Math.floor(1e6*Math.random());_lastReceivedUpdateMillis=0;_lastViewportBounds;_advertisedClients=new Map;_sessionId=0;_sessionidFromUrl=0;_initialBoundsForSibling=new Map;async onTraceLoad(e){e.commands.registerCommand({id:\"dev.perfetto.EnableTimelineSync\",name:\"Enable timeline sync with other Perfetto UI tabs\",callback:()=>this.showTimelineSyncDialog()}),e.commands.registerCommand({id:\"dev.perfetto.DisableTimelineSync\",name:\"Disable timeline sync\",callback:()=>this.disableTimelineSync(this._sessionId)}),e.commands.registerCommand({id:\"dev.perfetto.ToggleTimelineSync\",name:\"Toggle timeline sync with other PerfettoUI tabs\",callback:()=>this.toggleTimelineSync(),defaultHotkey:\"Mod+Alt+S\"}),e.statusbar.registerItem({renderItem:()=>({label:\"Timeline Sync\",icon:\"sync\",intent:this.active?o.Intent.Success:o.Intent.None,onclick:this.active?void 0:()=>this.showTimelineSyncDialog()}),popupContent:()=>this.active?(0,s.default)(\".pf-timeline-sync-popup\",\"Timeline Sync Active\",(0,s.default)(r.ButtonBar,(0,s.default)(r.Button,{label:\"Stop\",icon:\"stop_circle\",intent:o.Intent.Danger,variant:r.ButtonVariant.Filled,dismissPopup:!0,onclick:()=>this.disableTimelineSync(this._sessionId)}))):void 0}),this._chan=new BroadcastChannel(\"dev.perfetto.TimelineSync#broadcastChannel\"),this._chan.onmessage=this.onmessage.bind(this),document.addEventListener(\"visibilitychange\",()=>this.advertise()),window.addEventListener(\"focus\",()=>this.advertise()),setInterval(()=>this.advertise(),1e4);var t=/dev.perfetto.TimelineSync:enable(=\\d+)?/.exec(location.hash);null!==t&&(this._sessionidFromUrl=t[1]?parseInt(t[1].substring(1)):1),this._ctx=e,this._traceLoadTime=Date.now(),this.advertise(),0!==this._sessionidFromUrl&&this.enableTimelineSync(this._sessionidFromUrl),e.trash.defer(()=>{this.disableTimelineSync(this._sessionId),this._ctx=void 0})}advertise(){void 0!==this._ctx&&this._chan?.postMessage({perfettoSync:{cmd:\"MSG_ADVERTISE\",title:document.title,traceLoadTime:this._traceLoadTime},clientId:this._clientId})}toggleTimelineSync(){0===this._sessionId?this.showTimelineSyncDialog():this.disableTimelineSync(this._sessionId)}showTimelineSyncDialog(){let o;(0,n.showModal)({title:\"Synchronize timeline across several tabs\",content:()=>{var e,t,r=[],n=(this.purgeInactiveClients(),Array.from(this._advertisedClients.entries()));n.sort((e,t)=>t[1].traceLoadTime-e[1].traceLoadTime);for([e,t]of n){var a=new Date(t.traceLoadTime).toLocaleTimeString(),i={value:e};1===this._advertisedClients.size&&(i.selected=!0),r.push((0,s.default)(\"option\",i,t.title+` (${a})`))}return(0,s.default)(\"div\",{style:\"display: flex;  flex-direction: column;\"},(0,s.default)(\"div\",\"Select the perfetto UI tab(s) you want to keep in sync (Ctrl+Click to select many).\"),(0,s.default)(\"div\",\"If you don't see the trace listed here, temporarily focus the corresponding browser tab and then come back here.\"),(0,s.default)(\"select[multiple=multiple][size=8]\",{oncreate:e=>{o=e.dom}},r))},buttons:[{primary:!0,text:\"Synchronize timelines\",action:()=>{this.disableTimelineSync(this._sessionId);var t=new Array,r=(0,i.assertExists)(o).selectedOptions;for(let e=0;e<r.length;e++){var n=parseInt(r[e].value);isNaN(n)||t.push(n)}t.push(this._clientId),this._sessionId=Math.floor(1e6*Math.random()),this._chan?.postMessage({perfettoSync:{cmd:\"MSG_SESSION_START\",sessionId:this._sessionId,clients:t},clientId:this._clientId}),this._initialBoundsForSibling.clear(),this.scheduleViewportUpdateMessage()}}]})}enableTimelineSync(e){e!==this._sessionId&&(this._sessionId=e,this._initialBoundsForSibling.clear(),this.scheduleViewportUpdateMessage())}disableTimelineSync(e,t=!1){e===this._sessionId&&0!==this._sessionId&&(t||this._chan?.postMessage({perfettoSync:{cmd:\"MSG_SESSION_STOP\",sessionId:this._sessionId},clientId:this._clientId}),this._sessionId=0,this._initialBoundsForSibling.clear())}shouldThrottleViewportUpdates(){return Date.now()-this._lastReceivedUpdateMillis<=1e3}scheduleViewportUpdateMessage(){var e;this.active&&(e=this.getCurrentViewportBounds(),this._lastViewportBounds&&this._lastViewportBounds.equals(e)||this.shouldThrottleViewportUpdates()||(this.sendViewportBounds(e),this._lastViewportBounds=e),requestAnimationFrame(this.scheduleViewportUpdateMessage.bind(this)))}sendViewportBounds(e){this._chan?.postMessage({perfettoSync:{cmd:\"MSG_SET_VIEWPORT\",sessionId:this._sessionId,viewportBounds:e},clientId:this._clientId})}onmessage(e){if(void 0!==this._ctx&&\"perfettoSync\"in e.data){this._ctx.raf.scheduleFullRedraw();var t=e.data,r=t.perfettoSync;switch(r.cmd){case\"MSG_ADVERTISE\":t.clientId!==this._clientId&&(this._advertisedClients.set(t.clientId,{title:r.title,traceLoadTime:r.traceLoadTime,lastHeartbeat:Date.now()}),this.purgeInactiveClients(),(0,n.redrawModal)());break;case\"MSG_SESSION_START\":r.clients.includes(this._clientId)&&this.enableTimelineSync(r.sessionId);break;case\"MSG_SESSION_STOP\":this.disableTimelineSync(r.sessionId,!0);break;case\"MSG_SET_VIEWPORT\":r.sessionId===this._sessionId&&this.onViewportSyncReceived(r.viewportBounds,t.clientId)}}}onViewportSyncReceived(e,t){this.active&&(this.cacheSiblingInitialBoundIfNeeded(e,t),e=this.remapViewportBounds(e,t),this.getCurrentViewportBounds().equals(e)||(this._lastReceivedUpdateMillis=Date.now(),this._lastViewportBounds=e,this._ctx?.timeline.setViewportTime(e.start,e.end)))}cacheSiblingInitialBoundIfNeeded(e,t){this._initialBoundsForSibling.has(t)||this._initialBoundsForSibling.set(t,{thisWindow:this.getCurrentViewportBounds(),otherWindow:e})}remapViewportBounds(e,t){var t=this._initialBoundsForSibling.get(t),r=t.otherWindow,t=t.thisWindow,[r,e]=this.percentageChange(r.start,r.end,e.start,e.end),n=t.end-t.start;return new a.TimeSpan(a.Time.fromRaw(t.start+n*r/l),a.Time.fromRaw(t.start+n*e/l))}percentageChange(e,t,r,n){t-=e,n-=e;return[this.divide(r-e,t),this.divide(n,t)]}divide(e,t){return e*l/t}getCurrentViewportBounds(){return this._ctx.timeline.visibleWindow.toTimeSpan()}purgeInactiveClients(){var e,t,r=Date.now();for([e,t]of this._advertisedClients.entries())r-t.lastHeartbeat<3e4||this._advertisedClients.delete(e)}get active(){return 0!==this._sessionId}}}return kU}()),_e=x.__importDefault(PU()),ye=x.__importDefault(function(){if(!DU){DU=1,Object.defineProperty(xU,\"__esModule\",{value:!0});var e=Jr;const n=e.__importDefault(xe()),a=Fe(),i=Ge(),o=Ns(),s=We(),l=ze(),c=Ue(),u=qe(),d=Ls(),p=Bs(),f=Ve(),h=e.__importDefault(Wc());class t{static id=\"dev.perfetto.TraceMetadata\";static dependencies=[h.default];async onTraceLoad(t){var e,r;0!==(await t.engine.query(`\n      select count() as cnt from (select 1 from clock_snapshot limit 1)\n    `)).firstRow({cnt:c.NUM}).cnt&&(e=\"/clock_snapshots\",r=new i.DatasetSliceTrack({trace:t,uri:e,dataset:new l.SourceDataset({src:`\n          SELECT\n            id,\n            ts,\n            'Snapshot' as name,\n            clock_id,\n            clock_name,\n            clock_value,\n            snapshot_id,\n            machine_id,\n            0 as dur\n          FROM clock_snapshot\n        `,schema:{id:c.NUM,ts:c.LONG,dur:c.LONG,name:c.STR,clock_id:c.NUM,clock_name:c.STR_NULL,clock_value:c.LONG,snapshot_id:c.NUM,machine_id:c.NUM_NULL}}),detailsPanel:e=>({render(){return(0,n.default)(u.DetailsShell,{title:\"Clock Snapshot\"},(0,n.default)(d.GridLayout,(0,n.default)(d.GridLayoutColumn,(0,n.default)(p.Section,{title:\"Details\"},(0,n.default)(f.Tree,(0,n.default)(f.TreeNode,{left:\"ID\",right:e.id}),(0,n.default)(f.TreeNode,{left:\"Timestamp\",right:(0,n.default)(o.Timestamp,{trace:t,ts:a.Time.fromRaw(e.ts)})}),(0,n.default)(f.TreeNode,{left:\"clock_id\",right:e.clock_id}),(0,n.default)(f.TreeNode,{left:\"clock_name\",right:e.clock_name??\"NULL\"}),(0,n.default)(f.TreeNode,{left:\"clock_value\",right:e.clock_value.toLocaleString()}),(0,n.default)(f.TreeNode,{left:\"snapshot_id\",right:e.snapshot_id}),(0,n.default)(f.TreeNode,{left:\"machine_id \",right:e.machine_id??\"NULL\"}))))))}})}),t.tracks.registerTrack({uri:e,renderer:r}),r=new s.TrackNode({uri:e,name:\"Clock Snapshots\"}),t.plugins.getPlugin(h.default).getOrCreateStandardGroup(t.workspace,\"SYSTEM\").addChildInOrder(r))}}xU.default=t}return xU}()),Te=x.__importDefault(Xh()),ve=x.__importDefault(function(){if(!LU){LU=1,Object.defineProperty(FU,\"__esModule\",{value:!0});var e=Jr;const E=e.__importDefault(Vc());e=e.__importDefault(Xh());const S=Ue(),A=We(),O=Pe(),C=$e(),w=Zh(),k=Ld(),I=Du();class t{static id=\"dev.perfetto.TrackEvent\";static dependencies=[E.default,e.default];parentTrackNodes=new Map;async onTraceLoad(e){for(var t=(await e.engine.query(`\n      include perfetto module viz.summary.track_event;\n      select\n        ifnull(g.upid, t.upid) as upid,\n        g.utid,\n        g.parent_id as parentId,\n        g.is_counter AS isCounter,\n        g.name,\n        g.description,\n        g.unit,\n        g.y_axis_share_key as yAxisShareKey,\n        g.builtin_counter_type as builtinCounterType,\n        g.has_data AS hasData,\n        g.has_children AS hasChildren,\n        g.track_ids as trackIds,\n        g.order_id as orderId,\n        t.name as threadName,\n        t.tid as tid,\n        ifnull(p.pid, tp.pid) as pid,\n        ifnull(p.name, tp.name) as processName\n      from _track_event_tracks_ordered_groups g\n      left join process p using (upid)\n      left join thread t using (utid)\n      left join process tp on tp.upid = t.upid\n    `)).iter({upid:S.NUM_NULL,utid:S.NUM_NULL,parentId:S.NUM_NULL,isCounter:S.NUM,name:S.STR_NULL,description:S.STR_NULL,unit:S.STR_NULL,yAxisShareKey:S.STR_NULL,builtinCounterType:S.STR_NULL,hasData:S.NUM,hasChildren:S.NUM,trackIds:S.STR,orderId:S.NUM,threadName:S.STR_NULL,tid:S.NUM_NULL,pid:S.NUM_NULL,processName:S.STR_NULL}),r=e.plugins.getPlugin(E.default),n=new Map;t.valid();t.next()){var{upid:a,utid:i,parentId:o,isCounter:s,name:l,description:c,unit:u,yAxisShareKey:d,builtinCounterType:p,hasData:f,hasChildren:h,trackIds:m,orderId:g,threadName:_,tid:y,pid:T,processName:v}=t;if(f||h){var b=s?C.COUNTER_TRACK_KIND:C.SLICE_TRACK_KIND,m=m.split(\",\").map(e=>Number(e)),l=(0,I.getTrackName)({name:l,utid:i,upid:a,kind:b,threadTrack:null!==i,threadName:_,processName:v,tid:y,pid:T}),_=\"/track_event_\"+m[0];if(f&&s){if(null!==p)continue;(0,O.assertTrue)(1===m.length);v=m[0];e.tracks.registerTrack({uri:_,description:c??void 0,tags:{kind:b,trackIds:[m[0]],upid:a??void 0,utid:i??void 0},renderer:new k.TraceProcessorCounterTrack(e,_,{unit:u??void 0,yRangeSharingKey:null===d?void 0:`trackEvent-${o}-`+d},v,l)})}else f&&e.tracks.registerTrack({uri:_,description:c??void 0,tags:{kind:b,trackIds:m,upid:a??void 0,utid:i??void 0},renderer:await(0,w.createTraceProcessorSliceTrack)({trace:e,uri:_,trackIds:m})});y=this.findParentTrackNode(e,r,n,o??void 0,a??void 0,i??void 0,h),T=new A.TrackNode({name:l,sortOrder:g,isSummary:0===f,uri:_});y.addChildInOrder(T),n.set(m[0],T)}}}findParentTrackNode(e,t,r,n,a,i,o){if(void 0!==n)return(0,O.assertExists)(r.get(n));if(void 0!==i)return(0,O.assertExists)(t.getGroupForThread(i));if(void 0!==a)return(0,O.assertExists)(t.getGroupForProcess(a));if(o)return e.workspace.tracks;r=\"/track_event_root\";let s=this.parentTrackNodes.get(r);return void 0===s&&(s=new A.TrackNode({name:\"Global Track Events\",isSummary:!0}),e.workspace.addChildInOrder(s),this.parentTrackNodes.set(r,s)),s}}FU.default=t}return FU}()),be=x.__importDefault(function(){if(!e5){e5=1,Object.defineProperty(BU,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=n5();BU.default=class{static id=\"dev.perfetto.WidgetsPage\";static onActivate(e){e.pages.registerPage({route:\"/widgets\",render:()=>(0,t.default)(r.WidgetsPage,{app:e})}),e.sidebar.addMenuItem({section:\"navigation\",text:\"Widgets\",href:\"#!/widgets\",icon:\"widgets\",sortOrder:99})}}}return BU}()),Ee=x.__importDefault(function(){if(!h5){h5=1,Object.defineProperty(i5,\"__esModule\",{value:!0});const n=We(),e=g5();i5.default=class{static id=\"org.chromium.CriticalUserInteraction\";async onTraceLoad(t){await t.engine.query(\"include perfetto module chrome.interactions;\");const r=\"/critical_user_interactions\";t.commands.registerCommand({id:\"org.chromium.CriticalUserInteraction.AddInteractionTrack\",name:\"Add track: Chrome interactions\",callback:()=>{var e=new n.TrackNode({uri:r,name:\"Chrome Interactions\"});t.workspace.addChildInOrder(e),e.pin()}}),t.tracks.registerTrack({uri:r,renderer:(0,e.createCriticalUserInteractionTrack)(t,r)})}}}return i5}()),Se=x.__importDefault(function(){if(!_5){_5=1,Object.defineProperty(y5,\"__esModule\",{value:!0});const e=[/NavigationRequest/g,/NavigationStartToBegin/g,/Navigation .*To/g,/WebContentsImpl*/g],o=[/CrBrowserMain*/g,/CrRendererMain*/g,/Navigation.*/g],s=\"Chrome Navigations\";y5.default=class{static id=\"org.chromium.ChromeNavigation\";async onTraceLoad(i){i.commands.registerCommand({id:\"org.chromium.PinNavigationTracks\",name:\"Chrome Navigation: Pin relevant tracks\",callback:()=>{i.workspace.flatTracks.filter(t=>e.some(e=>t.name.match(e))).forEach(e=>e.pin())}}),i.commands.registerCommand({id:\"org.chromium.CreateWorkspaceWithTracks\",name:`Chrome Navigation: Go to \"${s}\" workspace`,defaultHotkey:\"Shift+N\",callback:()=>{const t=new Set;var e=i.workspaces.all.find(e=>e.title===s);if(!e){i.workspace.flatTracks.filter(t=>o.some(e=>t.name.match(e))).forEach(e=>t.add(e.id));const a=t=>{var e=t.children.map(a).filter(e=>void 0!==e),r=o.some(e=>t.name.match(e));if(0!==e.length||r){const n=t.clone();return e.forEach(e=>n.addChildInOrder(e)),n}};e=i.workspaces.createEmptyWorkspace(s);for(const n of i.workspace.children){var r=a(n);void 0!==r&&e.addChildInOrder(r)}e.flatTracks.forEach(e=>e.expand())}i.workspaces.switchWorkspace(e)}})}}}return y5}()),Ae=x.__importDefault(function(){if(!l6){l6=1,Object.defineProperty(v5,\"__esModule\",{value:!0});var e=Jr;const a=ln(),i=E5(),o=B5(),n=z5(),r=M5(),l=We();e=e.__importDefault(FI());const s=K5(),c=pl(),u=Q5(),d=i6(),p=p6(),f=Ue(),h=ze(),m=Ge(),g=Fu(),_=Qh();class t{static id=\"org.chromium.ChromeScrollJank\";static dependencies=[e.default];async onTraceLoad(e){var t=new l.TrackNode({name:\"Chrome Scroll Jank\",sortOrder:-30,isSummary:!0});await this.addTopLevelScrollTrack(e,t),await this.addEventLatencyTrack(e,t),await this.addScrollJankV3ScrollTrack(e,t),await r.ScrollJankCauseMap.initialize(e.engine),await this.addScrollTimelineTrack(e,t),await this.addVsyncTracks(e,t),e.workspace.addChildInOrder(t),t.expand()}async addTopLevelScrollTrack(e,t){await e.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n      INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_offsets;\n      INCLUDE PERFETTO MODULE chrome.event_latency;\n    `);var r=\"org.chromium.ChromeScrollJank#toplevelScrolls\",e=(e.tracks.registerTrack({uri:r,renderer:(0,d.createTopLevelScrollTrack)(e,r)}),new l.TrackNode({uri:r,name:\"Chrome Scrolls\"}));t.addChildInOrder(e)}async addEventLatencyTrack(e,t){var r=(0,i.generateSqlWithInternalLayout)({columns:[\"id\",\"ts\",\"dur\",\"track_id\",\"name\"],source:\"chrome_event_latencies\",ts:\"ts\",dur:\"dur\",whereClause:`\n        event_type IN (\n          'FIRST_GESTURE_SCROLL_UPDATE',\n          'GESTURE_SCROLL_UPDATE',\n          'INERTIAL_GESTURE_SCROLL_UPDATE')\n        AND is_presented`}),n=`table_${(0,a.uuidv4Sql)()}_janky_event_latencies_v3`,r=`CREATE TABLE ${n} AS\n        WITH\n        event_latencies AS MATERIALIZED (\n          ${r}\n        ),\n        latency_stages AS (\n          SELECT\n            stage.id,\n            stage.ts,\n            stage.dur,\n            stage.track_id,\n            stage.name,\n            stage.depth,\n            event.id as event_latency_id,\n            event.depth as event_latency_depth\n          FROM event_latencies event\n          JOIN descendant_slice(event.id) stage\n          UNION ALL\n          SELECT\n            event.id,\n            event.ts,\n            event.dur,\n            event.track_id,\n            IIF(\n              id IN (SELECT id FROM chrome_janky_event_latencies_v3),\n              '${o.JANKY_LATENCY_NAME}',\n              name\n            ) as name,\n            0 as depth,\n            event.id as event_latency_id,\n            event.depth as event_latency_depth\n          FROM event_latencies event\n        ),\n        -- Event latencies have already had layout computed, but the width of event latency can vary (3 or 4),\n        -- so we have to compute the max stage depth for each event latency depth to compute offset for each\n        -- event latency row.\n        event_latency_height_per_row AS (\n          SELECT\n            event_latency_depth,\n            MAX(depth) AS max_depth\n          FROM latency_stages\n          GROUP BY event_latency_depth\n        ),\n        -- Compute the offset for each event latency depth using max depth info for each depth.\n        event_latency_layout_offset AS (\n          SELECT\n            event_latency_depth,\n            -- As the sum is exclusive, it will return NULL for the first row — we need to set it to 0 explicitly.\n            IFNULL(\n              SUM(max_depth + 1) OVER (\n                ORDER BY event_latency_depth\n                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING\n              ),\n            0) as offset\n          FROM event_latency_height_per_row\n        )\n      SELECT\n        stage.id,\n        stage.ts,\n        stage.dur,\n        stage.name,\n        stage.depth + (\n          (\n            SELECT offset.offset\n            FROM event_latencies event\n            JOIN event_latency_layout_offset offset ON event.depth = offset.event_latency_depth\n            WHERE id = stage.event_latency_id\n          )\n        ) AS depth\n      FROM latency_stages stage;`,r=(await e.engine.query(\"INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_intervals\"),await e.engine.query(r),\"org.chromium.ChromeScrollJank#eventLatency\"),e=(e.tracks.registerTrack({uri:r,renderer:(0,o.createEventLatencyTrack)(e,r,n)}),new l.TrackNode({uri:r,name:\"Chrome Scroll Input Latencies\"}));t.addChildInOrder(e)}async addScrollJankV3ScrollTrack(e,t){await e.engine.query(\"INCLUDE PERFETTO MODULE chrome.scroll_jank.scroll_jank_intervals\");var r=\"org.chromium.ChromeScrollJank#scrollJankV3\",e=(e.tracks.registerTrack({uri:r,renderer:(0,n.createScrollJankV3Track)(e,r)}),new l.TrackNode({uri:r,name:\"Chrome Scroll Janks\"}));t.addChildInOrder(e)}async addScrollTimelineTrack(e,t){var r=\"org.chromium.ChromeScrollJank#scrollTimeline\",n=await(0,s.createScrollTimelineModel)(e.engine,\"scrolltimelinetrack_org_chromium_ChromeScrollJank_scrollTimeline\",r),e=(e.tracks.registerTrack({uri:r,renderer:(0,p.createScrollTimelineTrack)(e,n)}),new l.TrackNode({uri:r,name:\"Chrome Scroll Timeline\"}));t.addChildInOrder(e)}async addVsyncTracks(e,t){var r=\"_chrome_scroll_jank_plugin_vsyncs\",n=(await e.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.chrome_scrolls;\n\n      CREATE PERFETTO TABLE ${r} AS\n      SELECT\n        id,\n        ts,\n        dur,\n        track_id,\n        name\n      FROM slice\n      WHERE name = 'Extend_VSync'`),\"org.chromium.ChromeScrollJank#ChromeVsync\"),a=await(0,c.createQuerySliceTrack)({trace:e,data:{sqlSource:\"SELECT * FROM \"+r},argColumns:[\"id\",\"track_id\",\"ts\",\"dur\"],uri:n}),a=(e.tracks.registerTrack({uri:n,renderer:a}),t.addChildInOrder(new l.TrackNode({uri:n,name:\"Chrome VSync\"})),\"org.chromium.ChromeScrollJank#ChromeVsyncDelta\"),n=(0,u.createFlatColoredDurationTrack)(e,a,`(SELECT id, ts, LEAD(ts) OVER (ORDER BY ts) - ts as dur FROM ${r})`),r=(e.tracks.registerTrack({uri:a,renderer:n}),t.addChildInOrder(new l.TrackNode({uri:a,name:\"Chrome VSync delta\"})),\"org.chromium.ChromeScrollJank#ChromeInputDelta\"),n=(0,u.createFlatColoredDurationTrack)(e,r,`(SELECT\n          ROW_NUMBER() OVER () AS id,\n          generation_ts AS ts,\n          LEAD(generation_ts) OVER (ORDER BY generation_ts) - generation_ts as dur\n        FROM chrome_scroll_update_info\n        WHERE generation_ts IS NOT NULL)`);e.tracks.registerTrack({uri:r,renderer:n}),t.addChildInOrder(new l.TrackNode({uri:r,name:\"Chrome input delta\"}));for(const s of[{column:\"scroll_update_created_slice_id\",name:\"Step: send event (UI, ScrollUpdate)\"},{column:\"compositor_dispatch_slice_id\",name:\"Step: compositor dispatch (ScrollUpdate)\"},{column:\"compositor_resample_slice_id\",name:\"Step: resample input\"},{column:\"compositor_generate_compositor_frame_slice_id\",name:\"Step: generate frame (compositor)\"},{column:\"viz_receive_compositor_frame_slice_id\",name:\"Step: receive frame (viz)\"}]){var i=\"org.chromium.ChromeScrollJank#chrome_scroll_update_info.\"+s.column,o=new m.DatasetSliceTrack({trace:e,uri:i,dataset:new h.SourceDataset({schema:{id:f.NUM,ts:f.LONG,dur:f.LONG,name:f.STR},src:`\n              WITH slice_ids AS MATERIALIZED (\n                SELECT DISTINCT ${s.column} AS slice_id\n                FROM chrome_scroll_update_info\n                WHERE ${s.column} IS NOT NULL\n              )\n              SELECT\n                slice.id,\n                slice.ts,\n                slice.dur,\n                 ${(0,g.escapeQuery)(s.name)} AS name\n              FROM slice_ids\n              JOIN slice USING (slice_id)\n            `}),detailsPanel:()=>new _.ThreadSliceDetailsPanel(e)});e.tracks.registerTrack({uri:i,renderer:o}),t.addChildInOrder(new l.TrackNode({uri:i,name:s.name}))}}}v5.default=t}return v5}()),Oe=x.__importDefault(function(){if(!m6){m6=1,Object.defineProperty(g6,\"__esModule\",{value:!0});const o=ns(),s=Ue(),l=T6(),c=We();g6.default=class{static id=\"org.chromium.ChromeTasks\";async onTraceLoad(e){await this.createTracks(e)}async createTracks(e){for(var t=(await e.engine.query(`\n      INCLUDE PERFETTO MODULE chrome.tasks;\n\n      with relevant_threads as (\n        select distinct utid from chrome_tasks\n      )\n      select\n        (CASE process.name\n          WHEN 'Browser' THEN 1\n          WHEN 'Gpu' THEN 2\n          WHEN 'Renderer' THEN 4\n          ELSE 3\n        END) as processRank,\n        process.name as processName,\n        process.pid,\n        process.upid,\n        (CASE thread.name\n          WHEN 'CrBrowserMain' THEN 1\n          WHEN 'CrRendererMain' THEN 1\n          WHEN 'CrGpuMain' THEN 1\n          WHEN 'Chrome_IOThread' THEN 2\n          WHEN 'Chrome_ChildIOThread' THEN 2\n          WHEN 'VizCompositorThread' THEN 3\n          WHEN 'NetworkService' THEN 3\n          WHEN 'Compositor' THEN 3\n          WHEN 'CompositorGpuThread' THEN 4\n          WHEN 'CompositorTileWorker&' THEN 5\n          WHEN 'ThreadPoolService' THEN 6\n          WHEN 'ThreadPoolSingleThreadForegroundBlocking&' THEN 6\n          WHEN 'ThreadPoolForegroundWorker' THEN 6\n          ELSE 7\n         END) as threadRank,\n         thread.name as threadName,\n         thread.tid,\n         thread.utid\n      from relevant_threads\n      join thread using (utid)\n      join process using (upid)\n      order by processRank, upid, threadRank, utid\n    `)).iter({processRank:s.NUM,processName:s.STR_NULL,pid:s.NUM_NULL,upid:s.NUM,threadRank:s.NUM,threadName:s.STR_NULL,tid:s.NUM_NULL,utid:s.NUM}),r=new c.TrackNode({name:\"Chrome Tasks\",isSummary:!0});t.valid();t.next()){var n=t.utid,a=\"org.chromium.ChromeTasks#thread.\"+n,i=t.threadName+\" \"+t.tid,n=(e.tracks.registerTrack({uri:a,renderer:(0,l.createChromeTasksThreadTrack)(e,a,(0,o.asUtid)(n))}),new c.TrackNode({uri:a,name:i}));r.addChildInOrder(n),e.workspace.addChildInOrder(r)}}}}return g6}()),Ce=x.__importDefault(function(){if(!v6){v6=1,Object.defineProperty(b6,\"__esModule\",{value:!0});const n=Vi(),a=We();b6.default=class{static id=\"org.chromium.ETM\";async onTraceLoad(e){var t=e.pluginId+\"#ETMSessionID\",r=await(0,n.createQueryCounterTrack)({trace:e,uri:t,data:{sqlSource:'select ts, value from counter inner join counter_track on counter_track.id = counter.track_id where name = \"ETMSession\"'}}),r=(e.tracks.registerTrack({uri:t,renderer:r,description:\"Track to show current ETM session on timeline\"}),new a.TrackNode({name:\"ETM\",isSummary:!0})),t=new a.TrackNode({uri:t,name:\"ETM Session ID\"});r.addChildInOrder(t),e.workspace.addChildInOrder(r)}}}return b6}()),we=x.__importDefault(function(){if(!S6){S6=1,Object.defineProperty(A6,\"__esModule\",{value:!0});const t=ol(),r=C6(),n=tl();A6.default=class{static id=\"org.Chromium.OpenTableCommands\";async onTraceLoad(e){t.sqlTableRegistry.slice=r.getSliceTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.slice\",name:\"Open table: slice\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getSliceTable)(e)})}}),t.sqlTableRegistry.thread=r.getThreadTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.thread\",name:\"Open table: thread\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getThreadTable)(e)})}}),t.sqlTableRegistry.process=r.getThreadTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.process\",name:\"Open table: process\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getProcessTable)(e)})}}),t.sqlTableRegistry.sched=r.getSchedTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.sched\",name:\"Open table: sched\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getSchedTable)(e)})}}),t.sqlTableRegistry.thread_state=r.getThreadStateTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.thread_state\",name:\"Open table: thread_state\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getThreadStateTable)(e)})}}),t.sqlTableRegistry.android_logs=r.getAndroidLogsTable,e.commands.registerCommand({id:\"org.chromium.ShowTable.android_logs\",name:\"Open table: android_logs\",callback:()=>{n.extensions.addLegacySqlTableTab(e,{table:(0,r.getAndroidLogsTable)(e)})}})}}}return A6}()),ke=x.__importDefault(function(){if(!w6){w6=1,Object.defineProperty(k6,\"__esModule\",{value:!0});const s=We(),l=Vi(),n=Ue();k6.default=class{static id=\"dev.perfetto.Io\";async onTraceLoad(e){await e.engine.query(\"INCLUDE PERFETTO MODULE linux.block_io\");var t=await this.lookupDevices(e.engine),r=new s.TrackNode({name:\"Queued IO requests\",sortOrder:-5,isSummary:!0});for(const o of t){var n=\"/queued_io_request_count/device_\"+o.id,a=`dev major:${o.major} minor:`+o.minor,i=await(0,l.createQueryCounterTrack)({trace:e,uri:n,data:{sqlSource:`\n            SELECT ts, ops_in_queue_or_device as value\n            FROM linux_active_block_io_operations_by_device\n            WHERE dev = ${String(o.id)}\n          `}}),i=(e.tracks.registerTrack({uri:n,tags:{device:o.id},renderer:i}),new s.TrackNode({uri:n,name:a}));r.addChildInOrder(i)}r.children.length&&e.workspace.addChildInOrder(r)}async lookupDevices(e){for(var t=(await e.query(`\n      SELECT DISTINCT dev, linux_device_major_id(dev) as major, linux_device_minor_id(dev) as minor\n      FROM linux_active_block_io_operations_by_device ORDER BY dev`)).iter({dev:n.NUM,major:n.NUM,minor:n.NUM}),r=[];t.valid();t.next())r.push({id:t.dev,major:t.major,minor:t.minor});return r}}}return k6}()),Ie=x.__importDefault(function(){if(!I6){I6=1,Object.defineProperty(R6,\"__esModule\",{value:!0});var e=Jr;const o=Ue(),s=Zh(),l=$e(),c=We();class t{static id=\"org.kernel.LinuxKernelSubsystems\";static dependencies=[e.__importDefault(Xh()).default];async onTraceLoad(e){var t=new c.TrackNode({name:\"Linux Kernel\",isSummary:!0}),r=await this.addRpmTracks(e);r.hasChildren&&(e.workspace.addChildInOrder(t),t.addChildInOrder(r))}async addRpmTracks(e){for(var t=(await e.engine.query(`\n      select\n        t.id as trackId,\n        extract_arg(t.dimension_arg_set_id, 'linux_device') as deviceName\n      from track t\n      join _slice_track_summary using (id)\n      where type = 'linux_rpm'\n      order by deviceName;\n    `)).iter({deviceName:o.STR_NULL,trackId:o.NUM}),r=new c.TrackNode({name:\"Runtime Power Management\",isSummary:!0});t.valid();t.next()){var n=t.trackId,a=t.deviceName??\"\"+n,i=\"/linux/rpm/\"+a,n=(e.tracks.registerTrack({uri:i,renderer:await(0,s.createTraceProcessorSliceTrack)({trace:e,uri:i,trackIds:[n]}),tags:{kind:l.SLICE_TRACK_KIND,trackIds:[n]}}),new c.TrackNode({uri:i,name:a}));r.addChildInOrder(n)}return r}}R6.default=t}return R6}()),Re=x.__importDefault(function(){if(!M6){M6=1,Object.defineProperty(P6,\"__esModule\",{value:!0});var e=Jr;const i=Ue(),o=Zh(),s=We(),l=$e(),c=x6(),u=e.__importDefault(H2());e=e.__importDefault(Xh());class t{static id=\"org.kernel.SuspendResumeLatency\";static dependencies=[u.default,e.default];async onTraceLoad(e){const t=e.plugins.getPlugin(u.default).getThreadMap();var r,n,a=e[\"engine\"],a=(await a.query(`\n      with global_tracks_grouped as (\n        select\n          name,\n          group_concat(distinct t.id) as trackIds,\n          count() as trackCount\n        from track t\n        where t.type = 'suspend_resume'\n      )\n      select\n        t.trackIds as trackIds,\n        case\n          when\n            t.trackCount > 0\n          then\n            __max_layout_depth(t.trackCount, t.trackIds)\n          else 0\n        end as maxDepth\n      from global_tracks_grouped t\n    `)).iter({trackIds:i.STR_NULL,maxDepth:i.NUM});null!=a.trackIds&&(r=a.trackIds.split(\",\").map(e=>Number(e)),a=a.maxDepth,e.tracks.registerTrack({uri:n=\"/suspend_resume_latency\",tags:{trackIds:r,kind:l.SLICE_TRACK_KIND},renderer:await(0,o.createTraceProcessorSliceTrack)({trace:e,uri:n,maxDepth:a,trackIds:r,detailsPanel:()=>new c.SuspendResumeDetailsPanel(e,t)})}),a=new s.TrackNode({uri:n,name:\"Suspend/Resume Latency\"}),e.workspace.addChildInOrder(a))}}P6.default=t}return P6}()),x=x.__importDefault(X6()),Vt.default=[e.default,t.default,r.default,n.default,a.default,i.default,o.default,s.default,l.default,c.default,u.default,d.default,p.default,f.default,h.default,m.default,g.default,_.default,y.default,T.default,v.default,b.default,E.default,S.default,A.default,O.default,C.default,w.default,k.default,I.default,R.default,N.default,M.default,P.default,D.default,L.default,F.default,U.default,B.default,j.default,H.default,G.default,V.default,q.default,z.default,W.default,$.default,K.default,Y.default,J.default,Q.default,Z.default,X.default,ee.default,te.default,re.default,ne.default,ae.default,ie.default,oe.default,se.default,le.default,ce.default,ue.default,de.default,pe.default,fe.default,he.default,me.default,ge.default,_e.default,ye.default,Te.default,ve.default,be.default,Ee.default,Se.default,Ae.default,Oe.default,Ce.default,we.default,ke.default,Ie.default,Re.default,x.default]),Vt}var t4,r4={},n4={},a4={};function i4(){if(!t4){t4=1,Object.defineProperty(a4,\"__esModule\",{value:!0}),a4.JsonSettingsEditor=void 0;const t=Jr.__importDefault(xe()),r=lN(),n=Kl(),a=Be(),i=je();a4.JsonSettingsEditor=class{options;textareaValue;originalValue;jsonError=void 0;currentSetting;constructor(e){this.options=e}render(e){return this.currentSetting=e,this.initializeTextValue(),(0,t.default)(\"div\",{className:\"pf-json-settings-editor\"},[(0,t.default)(\"div\",{className:\"pf-json-settings-editor__editor-section\"},[(0,t.default)(r.Editor,{text:this.textareaValue,className:\"pf-json-settings-editor__editor\",onUpdate:e=>this.handleUpdate(e),onSave:()=>this.handleSave()}),void 0!==this.jsonError&&(0,t.default)(n.Callout,{intent:a.Intent.Danger,className:\"pf-json-settings-editor__error\"},\"JSON Error: \"+this.jsonError),(0,t.default)(\"div\",{className:\"pf-json-settings-editor__actions\"},[(0,t.default)(i.Button,{label:\"Save\",disabled:this.isSaveDisabled(),onclick:()=>this.handleSave()})])])])}initializeTextValue(){var e;void 0===this.textareaValue&&this.currentSetting&&(e=this.currentSetting.get(),this.originalValue=this.stringifyData(e),this.textareaValue=this.originalValue)}stringifyData(e){return JSON.stringify(e,null,2)}handleUpdate(e){this.textareaValue=e,this.validateAndSetError(e)}handleSave(){var e;void 0!==this.textareaValue&&this.currentSetting&&void 0!==(e=this.validateAndSetError(this.textareaValue))&&(this.currentSetting.set(e),this.originalValue=this.textareaValue)}hasUnsavedChanges(){return this.textareaValue!==this.originalValue}isSaveDisabled(){return void 0!==this.jsonError||!this.hasUnsavedChanges()}validateAndSetError(e){try{var t=JSON.parse(e),r=this.options.schema.safeParse(t);if(r.success){if(this.options.validator){var n=this.options.validator(r.data);if(void 0!==n)return void(this.jsonError=n)}return this.jsonError=void 0,r.data}this.jsonError=r.error.issues.map(e=>{var t=0<e.path.length?\"at \"+e.path.join(\".\"):\"\";return(e.message+\" \"+t).trim()}).join(\", \")}catch(e){this.jsonError=e instanceof Error?e.message:\"Invalid JSON\"}}}}return a4}var o4,s4,l4,c4,u4,d4,p4,f4,h4,m4,g4={},_4={},y4={},T4={},v4={};function b4(){if(!o4){const u=0,d=o4=1;const p=29,f=256,h=f+1+p,m=30,g=19,_=2*h+1,y=15,n=16,j=7,T=256,v=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),b=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),H=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),E=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);const S=new Array(2*(h+2)),A=(e(S),new Array(2*m)),O=(e(A),new Array(512)),C=(e(O),new Array(256)),w=(e(C),new Array(p)),k=(e(w),new Array(m));e(k);let o,s,l;const I=e=>e<256?O[e]:O[256+(e>>>7)],a=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},R=(e,t,r)=>{e.bi_valid>n-r?(e.bi_buf|=t<<e.bi_valid&65535,a(e,e.bi_buf),e.bi_buf=t>>n-e.bi_valid,e.bi_valid+=r-n):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)},N=(e,t,r)=>{R(e,r[2*t],r[2*t+1])},M=(e,t)=>{let r=0;for(;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1},G=(e,t)=>{var r,n=t.dyn_tree,a=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,l=t.stat_desc.extra_base,c=t.stat_desc.max_length;let u,d,p,f,h,m=0;for(f=0;f<=y;f++)e.bl_count[f]=0;for(n[2*e.heap[e.heap_max]+1]=0,u=e.heap_max+1;u<_;u++)d=e.heap[u],(f=n[2*n[2*d+1]+1]+1)>c&&(f=c,m++),n[2*d+1]=f,d>a||(e.bl_count[f]++,h=0,d>=l&&(h=s[d-l]),r=n[2*d],e.opt_len+=r*(f+h),o&&(e.static_len+=r*(i[2*d+1]+h)));if(0!==m){do{for(f=c-1;0===e.bl_count[f];)f--}while(e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[c]--,0<(m-=2));for(f=c;0!==f;f--)for(d=e.bl_count[f];0!==d;)a<(p=e.heap[--u])||(n[2*p+1]!==f&&(e.opt_len+=(f-n[2*p+1])*n[2*p],n[2*p+1]=f),d--)}},P=(e,t,r)=>{var n=new Array(y+1);let a=0,i,o;for(i=1;i<=y;i++)a=a+r[i-1]<<1,n[i]=a;for(o=0;o<=t;o++){var s=e[2*o+1];0!==s&&(e[2*o]=M(n[s]++,s))}},D=e=>{let t;for(t=0;t<h;t++)e.dyn_ltree[2*t]=0;for(t=0;t<m;t++)e.dyn_dtree[2*t]=0;for(t=0;t<g;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*T]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},x=e=>{8<e.bi_valid?a(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},i=(e,t,r,n)=>{var a=2*t,i=2*r;return e[a]<e[i]||e[a]===e[i]&&n[t]<=n[r]},L=(e,t,r)=>{var n=e.heap[r];let a=r<<1;for(;a<=e.heap_len&&(a<e.heap_len&&i(t,e.heap[a+1],e.heap[a],e.depth)&&a++,!i(t,n,e.heap[a],e.depth));)e.heap[r]=e.heap[a],r=a,a<<=1;e.heap[r]=n},F=(e,t,r)=>{var n,a,i,o;let s=0;if(0!==e.sym_next)for(;n=255&e.pending_buf[e.sym_buf+s++],n+=(255&e.pending_buf[e.sym_buf+s++])<<8,a=e.pending_buf[e.sym_buf+s++],0==n?N(e,a,t):(i=C[a],N(e,i+f+1,t),0!==(o=v[i])&&(a-=w[i],R(e,a,o)),n--,i=I(n),N(e,i,r),0!==(o=b[i])&&(n-=k[i],R(e,n,o))),s<e.sym_next;);N(e,T,t)},U=(e,t)=>{var r=t.dyn_tree,n=t.stat_desc.static_tree,a=t.stat_desc.has_stree,i=t.stat_desc.elems;let o,s,l=-1,c;for(e.heap_len=0,e.heap_max=_,o=0;o<i;o++)0!==r[2*o]?(e.heap[++e.heap_len]=l=o,e.depth[o]=0):r[2*o+1]=0;for(;e.heap_len<2;)r[2*(c=e.heap[++e.heap_len]=l<2?++l:0)]=1,e.depth[c]=0,e.opt_len--,a&&(e.static_len-=n[2*c+1]);for(t.max_code=l,o=e.heap_len>>1;1<=o;o--)L(e,r,o);for(c=i;o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],L(e,r,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,r[2*c]=r[2*o]+r[2*s],e.depth[c]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,r[2*o+1]=r[2*s+1]=c,e.heap[1]=c++,L(e,r,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],G(e,t),P(r,l,e.bl_count)},B=(e,t,r)=>{let n,a=-1;var i;let o=t[1],s=0,l=7,c=4;for(0===o&&(l=138,c=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=t[2*(n+1)+1],++s<l&&i===o||(s<c?e.bl_tree[2*i]+=s:0!==i?(i!==a&&e.bl_tree[2*i]++,e.bl_tree[32]++):s<=10?e.bl_tree[34]++:e.bl_tree[36]++,s=0,a=i,c=0===o?(l=138,3):i===o?(l=6,3):(l=7,4))},V=(e,t,r)=>{let n,a=-1;var i;let o=t[1],s=0,l=7,c=4;for(0===o&&(l=138,c=3),n=0;n<=r;n++)if(i=o,o=t[2*(n+1)+1],!(++s<l&&i===o)){if(s<c)for(;N(e,i,e.bl_tree),0!=--s;);else 0!==i?(i!==a&&(N(e,i,e.bl_tree),s--),N(e,16,e.bl_tree),R(e,s-3,2)):s<=10?(N(e,17,e.bl_tree),R(e,s-3,3)):(N(e,18,e.bl_tree),R(e,s-11,7));s=0,a=i,c=0===o?(l=138,3):i===o?(l=6,3):(l=7,4)}};let t=!1;const q=(e,t,r,n)=>{R(e,0+(n?1:0),3),x(e),a(e,r),a(e,~r),r&&e.pending_buf.set(e.window.subarray(t,t+r),e.pending),e.pending+=r};function e(e){let t=e.length;for(;0<=--t;)e[t]=0}function c(e,t,r,n,a){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=a,this.has_stree=e&&e.length}function r(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}v4._tr_init=e=>{if(!t){{let e,t,r,n,a;var i=new Array(y+1);for(r=0,n=0;n<p-1;n++)for(w[n]=r,e=0;e<1<<v[n];e++)C[r++]=n;for(C[r-1]=n,a=0,n=0;n<16;n++)for(k[n]=a,e=0;e<1<<b[n];e++)O[a++]=n;for(a>>=7;n<m;n++)for(k[n]=a<<7,e=0;e<1<<b[n]-7;e++)O[256+a++]=n;for(t=0;t<=y;t++)i[t]=0;for(e=0;e<=143;)S[2*e+1]=8,e++,i[8]++;for(;e<=255;)S[2*e+1]=9,e++,i[9]++;for(;e<=279;)S[2*e+1]=7,e++,i[7]++;for(;e<=287;)S[2*e+1]=8,e++,i[8]++;for(P(S,h+1,i),e=0;e<m;e++)A[2*e+1]=5,A[2*e]=M(e,5);o=new c(S,v,f+1,h,y),s=new c(A,b,0,m,y),l=new c(new Array(0),H,0,g,j)}t=!0}e.l_desc=new r(e.dyn_ltree,o),e.d_desc=new r(e.dyn_dtree,s),e.bl_desc=new r(e.bl_tree,l),e.bi_buf=0,e.bi_valid=0,D(e)},v4._tr_stored_block=q,v4._tr_flush_block=(t,r,n,e)=>{let a,i,o=0;if(0<t.level?(2===t.strm.data_type&&(t.strm.data_type=(e=>{let t=4093624447,r;for(r=0;r<=31;r++,t>>>=1)if(1&t&&0!==e.dyn_ltree[2*r])return u;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return d;for(r=32;r<f;r++)if(0!==e.dyn_ltree[2*r])return d;return u})(t)),U(t,t.l_desc),U(t,t.d_desc),o=(e=>{let t;for(B(e,e.dyn_ltree,e.l_desc.max_code),B(e,e.dyn_dtree,e.d_desc.max_code),U(e,e.bl_desc),t=g-1;3<=t&&0===e.bl_tree[2*E[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(t),a=t.opt_len+3+7>>>3,(i=t.static_len+3+7>>>3)<=a&&(a=i)):a=i=n+5,n+4<=a&&-1!==r)q(t,r,n,e);else if(4===t.strategy||i===a)R(t,2+(e?1:0),3),F(t,S,A);else{R(t,4+(e?1:0),3);{var s=t;r=t.l_desc.max_code+1;n=t.d_desc.max_code+1;var l=o+1;let e;for(R(s,r-257,5),R(s,n-1,5),R(s,l-4,4),e=0;e<l;e++)R(s,s.bl_tree[2*E[e]+1],3);V(s,s.dyn_ltree,r-1),V(s,s.dyn_dtree,n-1)}F(t,t.dyn_ltree,t.dyn_dtree)}D(t),e&&x(t)},v4._tr_tally=(e,t,r)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=r,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(C[r]+f+1)]++,e.dyn_dtree[2*I(t)]++),e.sym_next===e.sym_end),v4._tr_align=e=>{R(e,2,3),N(e,T,S),16===(e=e).bi_valid?(a(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}}return v4}function E4(){return l4||(l4=1,s4=(e,t,r,n)=>{let a=65535&e|0,i=e>>>16&65535|0,o=0;for(;0!==r;){for(r-=o=2e3<r?2e3:r;a=a+t[n++]|0,i=i+a|0,--o;);a%=65521,i%=65521}return a|i<<16|0}),s4}function S4(){if(!u4){u4=1;const o=new Uint32Array((()=>{let e,t=[];for(var r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t})());c4=(t,r,e,n)=>{var a=o,i=n+e;t^=-1;for(let e=n;e<i;e++)t=t>>>8^a[255&(t^r[e])];return-1^t}}return c4}function A4(){return p4||(p4=1,d4={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}),d4}function O4(){return f4=h4?f4:{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:h4=1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}}function C4(){if(!m4){m4=1;const{_tr_init:a,_tr_stored_block:c,_tr_flush_block:i,_tr_tally:s,_tr_align:H}=b4(),G=E4(),o=S4(),V=A4(),{Z_NO_FLUSH:u,Z_PARTIAL_FLUSH:q,Z_FULL_FLUSH:z,Z_FINISH:d,Z_BLOCK:W,Z_OK:p,Z_STREAM_END:$,Z_STREAM_ERROR:f,Z_DATA_ERROR:K,Z_BUF_ERROR:h,Z_DEFAULT_COMPRESSION:Y,Z_FILTERED:J,Z_HUFFMAN_ONLY:m,Z_RLE:Q,Z_FIXED:Z,Z_DEFAULT_STRATEGY:X,Z_UNKNOWN:ee,Z_DEFLATED:g}=O4(),te=9;const r=286,re=30,ne=19,ae=2*r+1,ie=15,_=3,y=258,T=y+_+1,v=42,b=57,E=69,S=73,A=91,oe=103,O=113,C=666,w=1,k=2,I=3,R=4,N=(e,t)=>(e.msg=V[t],t),se=e=>2*e-(4<e?9:0),M=e=>{let t=e.length;for(;0<=--t;)e[t]=0},le=e=>{let t,r,n;var a=e.w_size;for(t=e.hash_size,n=t;r=e.head[--n],e.head[n]=r>=a?r-a:0,--t;);for(t=a,n=t;r=e.prev[--n],e.prev[n]=r>=a?r-a:0,--t;);};let l=(e,t,r)=>(t<<e.hash_shift^r)&e.hash_mask;const P=e=>{var t=e.state;let r=t.pending;0!==(r=r>e.avail_out?e.avail_out:r)&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+r),e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending)&&(t.pending_out=0)},D=(e,t)=>{i(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,P(e.strm)},x=(e,t)=>{e.pending_buf[e.pending++]=t},L=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},ce=(e,t,r,n)=>{let a=e.avail_in;return 0===(a=a>n?n:a)?0:(e.avail_in-=a,t.set(e.input.subarray(e.next_in,e.next_in+a),r),1===e.state.wrap?e.adler=G(e.adler,t,a,r):2===e.state.wrap&&(e.adler=o(e.adler,t,a,r)),e.next_in+=a,e.total_in+=a,a)},ue=(e,t)=>{let r=e.max_chain_length,n=e.strstart,a;var i;let o=e.prev_length,s=e.nice_match;var l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,c=e.window,u=e.w_mask,d=e.prev,p=e.strstart+y;let f=c[n+o-1],h=c[n+o];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(a=t)+o]===h&&c[a+o-1]===f&&c[a]===c[n]&&c[++a]===c[n+1]){for(n+=2,a++;c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&c[++n]===c[++a]&&n<p;);if(i=y-(p-n),n=p-y,i>o){if(e.match_start=t,(o=i)>=s)break;f=c[n+o-1],h=c[n+o]}}}while((t=d[t&u])>l&&0!=--r);return o<=e.lookahead?o:e.lookahead},F=e=>{var t=e.w_size;let r,n,a;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-T)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),le(e),n+=t),0===e.strm.avail_in)break;if(r=ce(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=r,e.lookahead+e.insert>=_)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=l(e,e.ins_h,e.window[a+1]);e.insert&&(e.ins_h=l(e,e.ins_h,e.window[a+_-1]),e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<_)););}while(e.lookahead<T&&0!==e.strm.avail_in)},de=(e,t)=>{let r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,n,a,i,o=0;for(var s=e.strm.avail_in;n=65535,i=e.bi_valid+42>>3,!(e.strm.avail_out<i||(i=e.strm.avail_out-i,a=e.strstart-e.block_start,(n=(n=n>a+e.strm.avail_in?a+e.strm.avail_in:n)>i?i:n)<r&&(0===n&&t!==d||t===u||n!==a+e.strm.avail_in))||(o=t===d&&n===a+e.strm.avail_in?1:0,c(e,0,0,o),e.pending_buf[e.pending-4]=n,e.pending_buf[e.pending-3]=n>>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,P(e.strm),a&&(a>n&&(a=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+a),e.strm.next_out),e.strm.next_out+=a,e.strm.avail_out-=a,e.strm.total_out+=a,e.block_start+=a,n-=a),n&&(ce(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n),0!==o)););return(s-=e.strm.avail_in)&&(s>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=s&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart)&&(e.insert=e.strstart),e.window.set(e.strm.input.subarray(e.strm.next_in-s,e.strm.next_in),e.strstart),e.strstart+=s,e.insert+=s>e.w_size-e.insert?e.w_size-e.insert:s),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),o?R:t!==u&&t!==d&&0===e.strm.avail_in&&e.strstart===e.block_start?k:(i=e.window_size-e.strstart,e.strm.avail_in>i&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart)&&(e.insert=e.strstart),(i=i>e.strm.avail_in?e.strm.avail_in:i)&&(ce(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water<e.strstart&&(e.high_water=e.strstart),i=e.bi_valid+42>>3,i=65535<e.pending_buf_size-i?65535:e.pending_buf_size-i,r=i>e.w_size?e.w_size:i,((a=e.strstart-e.block_start)>=r||(a||t===d)&&t!==u&&0===e.strm.avail_in&&a<=i)&&(n=a>i?i:a,o=t===d&&0===e.strm.avail_in&&n===a?1:0,c(e,e.block_start,n,o),e.block_start+=n,P(e.strm)),o?I:w)};var n=(e,t)=>{let r,n;for(;;){if(e.lookahead<T){if(F(e),e.lookahead<T&&t===u)return w;if(0===e.lookahead)break}if(r=0,e.lookahead>=_&&(e.ins_h=l(e,e.ins_h,e.window[e.strstart+_-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-T&&(e.match_length=ue(e,r)),e.match_length>=_)if(n=s(e,e.strstart-e.match_start,e.match_length-_),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=_){for(e.match_length--;e.strstart++,e.ins_h=l(e,e.ins_h,e.window[e.strstart+_-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=l(e,e.ins_h,e.window[e.strstart+1]);else n=s(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(D(e,!1),0===e.strm.avail_out))return w}return e.insert=e.strstart<_-1?e.strstart:_-1,t===d?(D(e,!0),0===e.strm.avail_out?I:R):e.sym_next&&(D(e,!1),0===e.strm.avail_out)?w:k},e=(e,t)=>{let r,n;for(var a;;){if(e.lookahead<T){if(F(e),e.lookahead<T&&t===u)return w;if(0===e.lookahead)break}if(r=0,e.lookahead>=_&&(e.ins_h=l(e,e.ins_h,e.window[e.strstart+_-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=_-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-T&&(e.match_length=ue(e,r),e.match_length<=5)&&(e.strategy===J||e.match_length===_&&4096<e.strstart-e.match_start)&&(e.match_length=_-1),e.prev_length>=_&&e.match_length<=e.prev_length){for(a=e.strstart+e.lookahead-_,n=s(e,e.strstart-1-e.prev_match,e.prev_length-_),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=a&&(e.ins_h=l(e,e.ins_h,e.window[e.strstart+_-1]),r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=_-1,e.strstart++,n&&(D(e,!1),0===e.strm.avail_out))return w}else if(e.match_available){if((n=s(e,0,e.window[e.strstart-1]))&&D(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return w}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=s(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<_-1?e.strstart:_-1,t===d?(D(e,!0),0===e.strm.avail_out?I:R):e.sym_next&&(D(e,!1),0===e.strm.avail_out)?w:k};const U=[new t(0,0,0,0,de),new t(4,4,8,4,n),new t(4,5,16,8,n),new t(4,6,32,32,n),new t(4,4,16,16,e),new t(8,16,32,32,e),new t(8,16,128,128,e),new t(8,32,128,256,e),new t(32,128,258,1024,e),new t(32,258,258,4096,e)],B=e=>{var t;return!e||!(t=e.state)||t.strm!==e||t.status!==v&&t.status!==b&&t.status!==E&&t.status!==S&&t.status!==A&&t.status!==oe&&t.status!==O&&t.status!==C?1:0},pe=e=>{if(B(e))return N(e,f);e.total_in=e.total_out=0,e.data_type=ee;var t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?b:t.wrap?v:O,e.adler=2===t.wrap?0:1,t.last_flush=-2,a(t),p},fe=e=>{var t=pe(e);return t===p&&((e=e.state).window_size=2*e.w_size,M(e.head),e.max_lazy_match=U[e.level].max_lazy,e.good_match=U[e.level].good_length,e.nice_match=U[e.level].nice_length,e.max_chain_length=U[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=_-1,e.match_available=0,e.ins_h=0),t};const he=(e,t,r,n,a,i)=>{if(!e)return f;let o=1;if(t===Y&&(t=6),n<0?(o=0,n=-n):15<n&&(o=2,n-=16),a<1||a>te||r!==g||n<8||15<n||t<0||9<t||i<0||i>Z||8===n&&1!==o)return N(e,f);8===n&&(n=9);var s=new j;return(e.state=s).strm=e,s.status=v,s.wrap=o,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=a+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+_-1)/_),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<a+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=3*(s.lit_bufsize-1),s.level=t,s.strategy=i,s.method=r,fe(e)};function t(e,t,r,n,a){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=a}function j(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=g,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(2*ae),this.dyn_dtree=new Uint16Array(2*(2*re+1)),this.bl_tree=new Uint16Array(2*(2*ne+1)),M(this.dyn_ltree),M(this.dyn_dtree),M(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(ie+1),this.heap=new Uint16Array(2*r+1),M(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*r+1),M(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}T4.deflateInit=(e,t)=>he(e,t,g,15,8,X),T4.deflateInit2=he,T4.deflateReset=fe,T4.deflateResetKeep=pe,T4.deflateSetHeader=(e,t)=>B(e)||2!==e.state.wrap?f:(e.state.gzhead=t,p),T4.deflate=(r,e)=>{if(B(r)||e>W||e<0)return r?N(r,f):f;var n=r.state;if(!r.output||0!==r.avail_in&&!r.input||n.status===C&&e!==d)return N(r,0===r.avail_out?h:f);var a=n.last_flush;if(n.last_flush=e,0!==n.pending){if(P(r),0===r.avail_out)return n.last_flush=-1,p}else if(0===r.avail_in&&se(e)<=se(a)&&e!==d)return N(r,h);if(n.status===C&&0!==r.avail_in)return N(r,h);if(n.status===v&&0===n.wrap&&(n.status=O),n.status===v){let e=g+(n.w_bits-8<<4)<<8,t=-1;if(t=n.strategy>=m||n.level<2?0:n.level<6?1:6===n.level?2:3,e|=t<<6,0!==n.strstart&&(e|=32),e+=31-e%31,L(n,e),0!==n.strstart&&(L(n,r.adler>>>16),L(n,65535&r.adler)),r.adler=1,n.status=O,P(r),0!==n.pending)return n.last_flush=-1,p}if(n.status===b)if(r.adler=0,x(n,31),x(n,139),x(n,8),n.gzhead)x(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),x(n,255&n.gzhead.time),x(n,n.gzhead.time>>8&255),x(n,n.gzhead.time>>16&255),x(n,n.gzhead.time>>24&255),x(n,9===n.level?2:n.strategy>=m||n.level<2?4:0),x(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(x(n,255&n.gzhead.extra.length),x(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(r.adler=o(r.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=E;else if(x(n,0),x(n,0),x(n,0),x(n,0),x(n,0),x(n,9===n.level?2:n.strategy>=m||n.level<2?4:0),x(n,3),n.status=O,P(r),0!==n.pending)return n.last_flush=-1,p;if(n.status===E){if(n.gzhead.extra){let e=n.pending,t=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+t>n.pending_buf_size;){var i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e)),n.gzindex+=i,P(r),0!==n.pending)return n.last_flush=-1,p;e=0,t-=i}a=new Uint8Array(n.gzhead.extra);n.pending_buf.set(a.subarray(n.gzindex,n.gzindex+t),n.pending),n.pending+=t,n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e)),n.gzindex=0}n.status=S}if(n.status===S){if(n.gzhead.name){let e=n.pending,t;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e)),P(r),0!==n.pending)return n.last_flush=-1,p;e=0}}while(t=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,x(n,t),0!==t);n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e)),n.gzindex=0}n.status=A}if(n.status===A){if(n.gzhead.comment){let e=n.pending,t;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e)),P(r),0!==n.pending)return n.last_flush=-1,p;e=0}}while(t=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,x(n,t),0!==t);n.gzhead.hcrc&&n.pending>e&&(r.adler=o(r.adler,n.pending_buf,n.pending-e,e))}n.status=oe}if(n.status===oe){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(P(r),0!==n.pending))return n.last_flush=-1,p;x(n,255&r.adler),x(n,r.adler>>8&255),r.adler=0}if(n.status=O,P(r),0!==n.pending)return n.last_flush=-1,p}if(0!==r.avail_in||0!==n.lookahead||e!==u&&n.status!==C){a=0===n.level?de(n,e):n.strategy===m?((e,t)=>{for(var r;;){if(0===e.lookahead&&(F(e),0===e.lookahead)){if(t===u)return w;break}if(e.match_length=0,r=s(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(D(e,!1),0===e.strm.avail_out))return w}return e.insert=0,t===d?(D(e,!0),0===e.strm.avail_out?I:R):e.sym_next&&(D(e,!1),0===e.strm.avail_out)?w:k})(n,e):n.strategy===Q?((e,t)=>{let r;var n;let a,i;for(var o=e.window;;){if(e.lookahead<=y){if(F(e),e.lookahead<=y&&t===u)return w;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=_&&0<e.strstart&&(n=o[a=e.strstart-1])===o[++a]&&n===o[++a]&&n===o[++a]){for(i=e.strstart+y;n===o[++a]&&n===o[++a]&&n===o[++a]&&n===o[++a]&&n===o[++a]&&n===o[++a]&&n===o[++a]&&n===o[++a]&&a<i;);e.match_length=y-(i-a),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=_?(r=s(e,1,e.match_length-_),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=s(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(D(e,!1),0===e.strm.avail_out))return w}return e.insert=0,t===d?(D(e,!0),0===e.strm.avail_out?I:R):e.sym_next&&(D(e,!1),0===e.strm.avail_out)?w:k})(n,e):U[n.level].func(n,e);if(a!==I&&a!==R||(n.status=C),a===w||a===I)return 0===r.avail_out&&(n.last_flush=-1),p;if(a===k&&(e===q?H(n):e!==W&&(c(n,0,0,!1),e===z)&&(M(n.head),0===n.lookahead)&&(n.strstart=0,n.block_start=0,n.insert=0),P(r),0===r.avail_out))return n.last_flush=-1,p}return e!==d||!(n.wrap<=0)&&(2===n.wrap?(x(n,255&r.adler),x(n,r.adler>>8&255),x(n,r.adler>>16&255),x(n,r.adler>>24&255),x(n,255&r.total_in),x(n,r.total_in>>8&255),x(n,r.total_in>>16&255),x(n,r.total_in>>24&255)):(L(n,r.adler>>>16),L(n,65535&r.adler)),P(r),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending)?p:$},T4.deflateEnd=e=>{var t;return B(e)?f:(t=e.state.status,e.state=null,t===O?N(e,K):p)},T4.deflateSetDictionary=(e,t)=>{let r=t.length;if(B(e))return f;var n=e.state,a=n.wrap;if(2===a||1===a&&n.status!==v||n.lookahead)return f;1===a&&(e.adler=G(e.adler,t,r,0)),n.wrap=0,r>=n.w_size&&(0===a&&(M(n.head),n.strstart=0,n.block_start=0,n.insert=0),(i=new Uint8Array(n.w_size)).set(t.subarray(r-n.w_size,r),0),t=i,r=n.w_size);var i=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=r,e.next_in=0,e.input=t,F(n);n.lookahead>=_;){let e=n.strstart,t=n.lookahead-(_-1);for(;n.ins_h=l(n,n.ins_h,n.window[e+_-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++,--t;);n.strstart=e,n.lookahead=_-1,F(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=_-1,n.match_available=0,e.next_in=o,e.input=s,e.avail_in=i,n.wrap=a,p},T4.deflateInfo=\"pako deflate (from Nodeca project)\"}return T4}var w4,k4={};function I4(){if(!w4){w4=1;k4.assign=function(e){for(var t,r,n=Array.prototype.slice.call(arguments,1);n.length;){var a=n.shift();if(a){if(\"object\"!=typeof a)throw new TypeError(a+\"must be non-object\");for(const i in a)t=a,r=i,Object.prototype.hasOwnProperty.call(t,r)&&(e[i]=a[i])}}return e},k4.flattenChunks=n=>{let r=0;for(let e=0,t=n.length;e<t;e++)r+=n[e].length;var a=new Uint8Array(r);for(let e=0,t=0,r=n.length;e<r;e++){var i=n[e];a.set(i,t),t+=i.length}return a}}return k4}var R4,N4,M4,P4,D4={};function x4(){if(!R4){R4=1;let c=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){c=!1}const u=new Uint8Array(256);for(let e=0;e<256;e++)u[e]=252<=e?6:248<=e?5:240<=e?4:224<=e?3:192<=e?2:1;u[254]=u[254]=1,D4.string2buf=e=>{if(\"function\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,r,n,a,i,o=e.length,s=0;for(a=0;a<o;a++)55296==(64512&(r=e.charCodeAt(a)))&&a+1<o&&56320==(64512&(n=e.charCodeAt(a+1)))&&(r=65536+(r-55296<<10)+(n-56320),a++),s+=r<128?1:r<2048?2:r<65536?3:4;for(t=new Uint8Array(s),i=0,a=0;i<s;a++)55296==(64512&(r=e.charCodeAt(a)))&&a+1<o&&56320==(64512&(n=e.charCodeAt(a+1)))&&(r=65536+(r-55296<<10)+(n-56320),a++),r<128?t[i++]=r:(r<2048?t[i++]=192|r>>>6:(r<65536?t[i++]=224|r>>>12:(t[i++]=240|r>>>18,t[i++]=128|r>>>12&63),t[i++]=128|r>>>6&63),t[i++]=128|63&r);return t};D4.buf2string=(r,e)=>{var n=e||r.length;if(\"function\"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(r.subarray(0,e));let a,i;var o=new Array(2*n);for(i=0,a=0;a<n;){let t=r[a++];if(t<128)o[i++]=t;else{let e=u[t];if(4<e)o[i++]=65533,a+=e-1;else{for(t&=2===e?31:3===e?15:7;1<e&&a<n;)t=t<<6|63&r[a++],e--;1<e?o[i++]=65533:t<65536?o[i++]=t:(t-=65536,o[i++]=55296|t>>10&1023,o[i++]=56320|1023&t)}}}{var s=o,l=i;if(l<65534&&s.subarray&&c)return String.fromCharCode.apply(null,s.length===l?s:s.subarray(0,l));let t=\"\";for(let e=0;e<l;e++)t+=String.fromCharCode(s[e]);return t}},D4.utf8border=(e,t)=>{let r=(t=(t=t||e.length)>e.length?e.length:t)-1;for(;0<=r&&128==(192&e[r]);)r--;return!(r<0)&&0!==r&&r+u[e[r]]>t?r:t}}return D4}function L4(){return M4||(M4=1,N4=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}),N4}function F4(){if(!P4){P4=1;const o=C4(),a=I4(),s=x4(),i=A4(),e=L4(),l=Object.prototype.toString,{Z_NO_FLUSH:c,Z_SYNC_FLUSH:u,Z_FULL_FLUSH:d,Z_FINISH:p,Z_OK:f,Z_STREAM_END:h,Z_DEFAULT_COMPRESSION:m,Z_DEFAULT_STRATEGY:g,Z_DEFLATED:_}=O4();function r(t){this.options=a.assign({level:m,method:_,chunkSize:16384,windowBits:15,memLevel:8,strategy:g},t||{});var t=this.options,r=(t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new e,this.strm.avail_out=0,o.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy));if(r!==f)throw new Error(i[r]);if(t.header&&o.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e=\"string\"==typeof t.dictionary?s.string2buf(t.dictionary):\"[object ArrayBuffer]\"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=o.deflateSetDictionary(this.strm,e))!==f)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){t=new r(t);if(t.push(e,!0),t.err)throw t.msg||i[t.err];return t.result}r.prototype.push=function(e,t){var r=this.strm,n=this.options.chunkSize;let a,i;if(this.ended)return!1;for(i=t===~~t?t:!0===t?p:c,\"string\"==typeof e?r.input=s.string2buf(e):\"[object ArrayBuffer]\"===l.call(e)?r.input=new Uint8Array(e):r.input=e,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(i===u||i===d)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(o.deflate(r,i)===h)return 0<r.next_out&&this.onData(r.output.subarray(0,r.next_out)),a=o.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===f;if(0===r.avail_out)this.onData(r.output);else if(0<i&&0<r.next_out)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}return!0},r.prototype.onData=function(e){this.chunks.push(e)},r.prototype.onEnd=function(e){e===f&&(this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},y4.Deflate=r,y4.deflate=n,y4.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},y4.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)},y4.constants=O4()}return y4}var U4,B4,j4,H4,G4,V4,q4,z4,W4,$4,K4={},Y4={};function J4(){if(!G4){G4=1;const P=E4(),D=S4(),x=function(){if(!B4){B4=1;const w=16209,k=16191;U4=function(e,t){let r;var n,a,i,o,s,l,c,u,d,p,f,h,m,g,_;let y,T,v,b,E,S,A,O;var C=e.state;r=e.next_in,g=e.input,n=r+(e.avail_in-5),y=e.next_out,_=e.output,a=y-(t-e.avail_out),i=y+(e.avail_out-257),o=C.dmax,s=C.wsize,l=C.whave,c=C.wnext,u=C.window,T=C.hold,v=C.bits,d=C.lencode,p=C.distcode,f=(1<<C.lenbits)-1,h=(1<<C.distbits)-1;e:do{for(v<15&&(T+=g[r++]<<v,v+=8,T+=g[r++]<<v,v+=8),b=d[T&f];;){if(E=b>>>24,T>>>=E,v-=E,0===(E=b>>>16&255))_[y++]=65535&b;else{if(!(16&E)){if(0==(64&E)){b=d[(65535&b)+(T&(1<<E)-1)];continue}if(32&E){C.mode=k;break e}e.msg=\"invalid literal/length code\",C.mode=w;break e}for(S=65535&b,(E&=15)&&(v<E&&(T+=g[r++]<<v,v+=8),S+=T&(1<<E)-1,T>>>=E,v-=E),v<15&&(T+=g[r++]<<v,v+=8,T+=g[r++]<<v,v+=8),b=p[T&h];;){if(E=b>>>24,T>>>=E,v-=E,!(16&(E=b>>>16&255))){if(0==(64&E)){b=p[(65535&b)+(T&(1<<E)-1)];continue}e.msg=\"invalid distance code\",C.mode=w;break e}if(m=65535&b,E&=15,v<E&&(T+=g[r++]<<v,(v+=8)<E)&&(T+=g[r++]<<v,v+=8),o<(m+=T&(1<<E)-1)){e.msg=\"invalid distance too far back\",C.mode=w;break e}if(T>>>=E,v-=E,m>(E=y-a)){if((E=m-E)>l&&C.sane){e.msg=\"invalid distance too far back\",C.mode=w;break e}if(A=0,O=u,0===c){if(A+=s-E,E<S){for(S-=E;_[y++]=u[A++],--E;);A=y-m,O=_}}else if(c<E){if(A+=s+c-E,(E-=c)<S){for(S-=E;_[y++]=u[A++],--E;);if(A=0,c<S){for(E=c,S-=E;_[y++]=u[A++],--E;);A=y-m,O=_}}}else if(A+=c-E,E<S){for(S-=E;_[y++]=u[A++],--E;);A=y-m,O=_}for(;2<S;)_[y++]=O[A++],_[y++]=O[A++],_[y++]=O[A++],S-=3;S&&(_[y++]=O[A++],1<S)&&(_[y++]=O[A++])}else{for(A=y-m;_[y++]=_[A++],_[y++]=_[A++],_[y++]=_[A++],2<(S-=3););S&&(_[y++]=_[A++],1<S)&&(_[y++]=_[A++])}break}}break}}while(r<n&&y<i);S=v>>3,r-=S,v-=S<<3,T&=(1<<v)-1,e.next_in=r,e.next_out=y,e.avail_in=r<n?n-r+5:5-(r-n),e.avail_out=y<i?i-y+257:257-(y-i),C.hold=T,C.bits=v}}return U4}(),L=function(){if(!H4){H4=1;const M=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),P=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),D=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),x=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);j4=(e,t,r,n,a,i,o,s)=>{var l,c=s.bits;let u=0,d=0,p=0,f=0,h=0,m=0,g=0,_=0,y=0,T=0,v,b,E,S,A=null,O;var C=new Uint16Array(16),w=new Uint16Array(16);let k=null,I,R,N;for(u=0;u<=15;u++)C[u]=0;for(d=0;d<n;d++)C[t[r+d]]++;for(h=c,f=15;1<=f&&0===C[f];f--);if(h>f&&(h=f),0===f)a[i++]=20971520,a[i++]=20971520,s.bits=1;else{for(p=1;p<f&&0===C[p];p++);for(h<p&&(h=p),_=1,u=1;u<=15;u++)if((_=(_<<=1)-C[u])<0)return-1;if(0<_&&(0===e||1!==f))return-1;for(w[1]=0,u=1;u<15;u++)w[u+1]=w[u]+C[u];for(d=0;d<n;d++)0!==t[r+d]&&(o[w[t[r+d]]++]=d);if(O=0===e?(A=k=o,20):1===e?(A=M,k=P,257):(A=D,k=x,0),T=0,d=0,u=p,S=i,m=h,g=0,E=-1,l=(y=1<<h)-1,1===e&&852<y||2===e&&592<y)return 1;for(;;){for(I=u-g,N=o[d]+1<O?(R=0,o[d]):o[d]>=O?(R=k[o[d]-O],A[o[d]-O]):(R=96,0),v=1<<u-g,b=1<<m,p=b;b-=v,a[S+(T>>g)+b]=I<<24|R<<16|N|0,0!==b;);for(v=1<<u-1;T&v;)v>>=1;if(T=0!==v?(T&=v-1)+v:0,d++,0==--C[u]){if(u===f)break;u=t[r+o[d]]}if(u>h&&(T&l)!==E){for(0===g&&(g=h),S+=p,m=u-g,_=1<<m;m+g<f&&!((_-=C[m+g])<=0);)m++,_<<=1;if(y+=1<<m,1===e&&852<y||2===e&&592<y)return 1;a[E=T&l]=h<<24|m<<16|S-i|0}}0!==T&&(a[S+T]=u-g<<24|64<<16|0),s.bits=h}return 0}}return j4}(),F=1,U=2,{Z_FINISH:B,Z_BLOCK:j,Z_TREES:H,Z_OK:G,Z_STREAM_END:V,Z_NEED_DICT:q,Z_STREAM_ERROR:z,Z_DATA_ERROR:W,Z_MEM_ERROR:$,Z_BUF_ERROR:K,Z_DEFLATED:Y}=O4(),J=16180,Q=16191,Z=16209,X=16211,r=852,a=592;const ee=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24),te=e=>{var t;return!e||!(t=e.state)||t.strm!==e||t.mode<J||t.mode>X?1:0},i=e=>{var t;return te(e)?z:(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=J,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(r),t.distcode=t.distdyn=new Int32Array(a),t.sane=1,t.back=-1,G)},o=e=>{var t;return te(e)?z:((t=e.state).wsize=0,t.whave=0,t.wnext=0,i(e))},s=(e,t)=>{let r;var n;return te(e)||(n=e.state,t<0?(r=0,t=-t):(r=5+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t))?z:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))},t=(e,t)=>{var r;return e?(r=new n,(e.state=r).strm=e,r.window=null,r.mode=J,(r=s(e,t))!==G&&(e.state=null),r):z};let R=!0,N,M;const re=(e,t,r,n)=>{let a;e=e.state;return null===e.window&&(e.wsize=1<<e.wbits,e.wnext=0,e.whave=0,e.window=new Uint8Array(e.wsize)),n>=e.wsize?(e.window.set(t.subarray(r-e.wsize,r),0),e.wnext=0,e.whave=e.wsize):((a=e.wsize-e.wnext)>n&&(a=n),e.window.set(t.subarray(r-n,r-n+a),e.wnext),(n-=a)?(e.window.set(t.subarray(r-n,r),0),e.wnext=n,e.whave=e.wsize):(e.wnext+=a,e.wnext===e.wsize&&(e.wnext=0),e.whave<e.wsize&&(e.whave+=a))),0};function n(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}Y4.inflateReset=o,Y4.inflateReset2=s,Y4.inflateResetKeep=i,Y4.inflateInit=e=>t(e,15),Y4.inflateInit2=t,Y4.inflate=(e,t)=>{var r;let n,a,i,o,s,l,c,u,d,p,f,h,m,g=0,_,y,T,v,b,E,S,A;var O=new Uint8Array(4);let C,w;var k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(te(e)||!e.output||!e.input&&0!==e.avail_in)return z;(r=e.state).mode===Q&&(r.mode=16192),o=e.next_out,a=e.output,l=e.avail_out,i=e.next_in,n=e.input,s=e.avail_in,c=r.hold,u=r.bits,d=s,p=l,A=G;e:for(;;)switch(r.mode){case J:if(0===r.wrap)r.mode=16192;else{for(;u<16;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}2&r.wrap&&35615===c?(0===r.wbits&&(r.wbits=15),O[r.check=0]=255&c,O[1]=c>>>8&255,r.check=D(r.check,O,2,0),c=0,u=0,r.mode=16181):(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&c)<<8)+(c>>8))%31?(e.msg=\"incorrect header check\",r.mode=Z):(15&c)!==Y?(e.msg=\"unknown compression method\",r.mode=Z):(c>>>=4,u-=4,S=8+(15&c),0===r.wbits&&(r.wbits=S),15<S||S>r.wbits?(e.msg=\"invalid window size\",r.mode=Z):(r.dmax=1<<r.wbits,r.flags=0,e.adler=r.check=1,r.mode=512&c?16189:Q,c=0,u=0)))}break;case 16181:for(;u<16;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(r.flags=c,(255&r.flags)!==Y){e.msg=\"unknown compression method\",r.mode=Z;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=Z;break}r.head&&(r.head.text=c>>8&1),512&r.flags&&4&r.wrap&&(O[0]=255&c,O[1]=c>>>8&255,r.check=D(r.check,O,2,0)),c=0,u=0,r.mode=16182;case 16182:for(;u<32;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.head&&(r.head.time=c),512&r.flags&&4&r.wrap&&(O[0]=255&c,O[1]=c>>>8&255,O[2]=c>>>16&255,O[3]=c>>>24&255,r.check=D(r.check,O,4,0)),c=0,u=0,r.mode=16183;case 16183:for(;u<16;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.head&&(r.head.xflags=255&c,r.head.os=c>>8),512&r.flags&&4&r.wrap&&(O[0]=255&c,O[1]=c>>>8&255,r.check=D(r.check,O,2,0)),c=0,u=0,r.mode=16184;case 16184:if(1024&r.flags){for(;u<16;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.length=c,r.head&&(r.head.extra_len=c),512&r.flags&&4&r.wrap&&(O[0]=255&c,O[1]=c>>>8&255,r.check=D(r.check,O,2,0)),c=0,u=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&((f=(f=r.length)>s?s:f)&&(r.head&&(S=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(i,i+f),S)),512&r.flags&&4&r.wrap&&(r.check=D(r.check,n,f,i)),s-=f,i+=f,r.length-=f),r.length))break e;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===s)break e;for(f=0;S=n[i+f++],r.head&&S&&r.length<65536&&(r.head.name+=String.fromCharCode(S)),S&&f<s;);if(512&r.flags&&4&r.wrap&&(r.check=D(r.check,n,f,i)),s-=f,i+=f,S)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===s)break e;for(f=0;S=n[i+f++],r.head&&S&&r.length<65536&&(r.head.comment+=String.fromCharCode(S)),S&&f<s;);if(512&r.flags&&4&r.wrap&&(r.check=D(r.check,n,f,i)),s-=f,i+=f,S)break e}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;u<16;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(4&r.wrap&&c!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=Z;break}c=0,u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=Q;break;case 16189:for(;u<32;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}e.adler=r.check=ee(c),c=0,u=0,r.mode=16190;case 16190:if(0===r.havedict)return e.next_out=o,e.avail_out=l,e.next_in=i,e.avail_in=s,r.hold=c,r.bits=u,q;e.adler=r.check=1,r.mode=Q;case Q:if(t===j||t===H)break e;case 16192:if(r.last)c>>>=7&u,u-=7&u,r.mode=16206;else{for(;u<3;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}switch(r.last=1&c,c>>>=1,--u,3&c){case 0:r.mode=16193;break;case 1:var I=r;if(R){N=new Int32Array(512),M=new Int32Array(32);let e=0;for(;e<144;)I.lens[e++]=8;for(;e<256;)I.lens[e++]=9;for(;e<280;)I.lens[e++]=7;for(;e<288;)I.lens[e++]=8;for(L(F,I.lens,0,288,N,0,I.work,{bits:9}),e=0;e<32;)I.lens[e++]=5;L(U,I.lens,0,32,M,0,I.work,{bits:5}),R=!1}if(I.lencode=N,I.lenbits=9,I.distcode=M,I.distbits=5,r.mode=16199,t!==H)break;c>>>=2,u-=2;break e;case 2:r.mode=16196;break;case 3:e.msg=\"invalid block type\",r.mode=Z}c>>>=2,u-=2}break;case 16193:for(c>>>=7&u,u-=7&u;u<32;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if((65535&c)!=(c>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=Z;break}if(r.length=65535&c,c=0,u=0,r.mode=16194,t===H)break e;case 16194:r.mode=16195;case 16195:if(f=r.length){if(0===(f=(f=f>s?s:f)>l?l:f))break e;a.set(n.subarray(i,i+f),o),s-=f,i+=f,l-=f,o+=f,r.length-=f}else r.mode=Q;break;case 16196:for(;u<14;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(r.nlen=257+(31&c),c>>>=5,u-=5,r.ndist=1+(31&c),c>>>=5,u-=5,r.ncode=4+(15&c),c>>>=4,u-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=Z;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;u<3;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.lens[k[r.have++]]=7&c,c>>>=3,u-=3}for(;r.have<19;)r.lens[k[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,C={bits:r.lenbits},A=L(0,r.lens,0,19,r.lencode,0,r.work,C),r.lenbits=C.bits,A){e.msg=\"invalid code lengths set\",r.mode=Z;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;g=r.lencode[c&(1<<r.lenbits)-1],_=g>>>24,y=g>>>16&255,T=65535&g,!(_<=u);){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(T<16)c>>>=_,u-=_,r.lens[r.have++]=T;else{if(16===T){for(w=_+2;u<w;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(c>>>=_,u-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=Z;break}S=r.lens[r.have-1],f=3+(3&c),c>>>=2,u-=2}else if(17===T){for(w=_+3;u<w;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}c>>>=_,u-=_,S=0,f=3+(7&c),c>>>=3,u-=3}else{for(w=_+7;u<w;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}c>>>=_,u-=_,S=0,f=11+(127&c),c>>>=7,u-=7}if(r.have+f>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=Z;break}for(;f--;)r.lens[r.have++]=S}}if(r.mode===Z)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=Z;break}if(r.lenbits=9,C={bits:r.lenbits},A=L(F,r.lens,0,r.nlen,r.lencode,0,r.work,C),r.lenbits=C.bits,A){e.msg=\"invalid literal/lengths set\",r.mode=Z;break}if(r.distbits=6,r.distcode=r.distdyn,C={bits:r.distbits},A=L(U,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,C),r.distbits=C.bits,A){e.msg=\"invalid distances set\",r.mode=Z;break}if(r.mode=16199,t===H)break e;case 16199:r.mode=16200;case 16200:if(6<=s&&258<=l){e.next_out=o,e.avail_out=l,e.next_in=i,e.avail_in=s,r.hold=c,r.bits=u,x(e,p),o=e.next_out,a=e.output,l=e.avail_out,i=e.next_in,n=e.input,s=e.avail_in,c=r.hold,u=r.bits,r.mode===Q&&(r.back=-1);break}for(r.back=0;g=r.lencode[c&(1<<r.lenbits)-1],_=g>>>24,y=g>>>16&255,T=65535&g,!(_<=u);){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(y&&0==(240&y)){for(v=_,b=y,E=T;g=r.lencode[E+((c&(1<<v+b)-1)>>v)],_=g>>>24,y=g>>>16&255,T=65535&g,!(v+_<=u);){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}c>>>=v,u-=v,r.back+=v}if(c>>>=_,u-=_,r.back+=_,r.length=T,0===y){r.mode=16205;break}if(32&y){r.back=-1,r.mode=Q;break}if(64&y){e.msg=\"invalid literal/length code\",r.mode=Z;break}r.extra=15&y,r.mode=16201;case 16201:if(r.extra){for(w=r.extra;u<w;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.length+=c&(1<<r.extra)-1,c>>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;g=r.distcode[c&(1<<r.distbits)-1],_=g>>>24,y=g>>>16&255,T=65535&g,!(_<=u);){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(0==(240&y)){for(v=_,b=y,E=T;g=r.distcode[E+((c&(1<<v+b)-1)>>v)],_=g>>>24,y=g>>>16&255,T=65535&g,!(v+_<=u);){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}c>>>=v,u-=v,r.back+=v}if(c>>>=_,u-=_,r.back+=_,64&y){e.msg=\"invalid distance code\",r.mode=Z;break}r.offset=T,r.extra=15&y,r.mode=16203;case 16203:if(r.extra){for(w=r.extra;u<w;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}r.offset+=c&(1<<r.extra)-1,c>>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=Z;break}r.mode=16204;case 16204:if(0===l)break e;if(f=p-l,r.offset>f){if((f=r.offset-f)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=Z;break}h=f>r.wnext?(f-=r.wnext,r.wsize-f):r.wnext-f,f>r.length&&(f=r.length),m=r.window}else m=a,h=o-r.offset,f=r.length;for(f>l&&(f=l),l-=f,r.length-=f;a[o++]=m[h++],--f;);0===r.length&&(r.mode=16200);break;case 16205:if(0===l)break e;a[o++]=r.length,l--,r.mode=16200;break;case 16206:if(r.wrap){for(;u<32;){if(0===s)break e;s--,c|=n[i++]<<u,u+=8}if(p-=l,e.total_out+=p,r.total+=p,4&r.wrap&&p&&(e.adler=r.check=(r.flags?D:P)(r.check,a,p,o-p)),p=l,4&r.wrap&&(r.flags?c:ee(c))!==r.check){e.msg=\"incorrect data check\",r.mode=Z;break}c=0,u=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;u<32;){if(0===s)break e;s--,c+=n[i++]<<u,u+=8}if(4&r.wrap&&c!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=Z;break}c=0,u=0}r.mode=16208;case 16208:A=V;break e;case Z:A=W;break e;case 16210:return $;default:X;return z}return e.next_out=o,e.avail_out=l,e.next_in=i,e.avail_in=s,r.hold=c,r.bits=u,(r.wsize||p!==e.avail_out&&r.mode<Z&&(r.mode<16206||t!==B))&&re(e,e.output,e.next_out,p-e.avail_out),d-=e.avail_in,p-=e.avail_out,e.total_in+=d,e.total_out+=p,r.total+=p,4&r.wrap&&p&&(e.adler=r.check=(r.flags?D:P)(r.check,a,p,e.next_out-p)),e.data_type=r.bits+(r.last?64:0)+(r.mode===Q?128:0)+(16199===r.mode||16194===r.mode?256:0),A=(0==d&&0===p||t===B)&&A===G?K:A},Y4.inflateEnd=e=>{var t;return te(e)?z:((t=e.state).window&&(t.window=null),e.state=null,G)},Y4.inflateGetHeader=(e,t)=>{return te(e)||0==(2&(e=e.state).wrap)?z:((e.head=t).done=!1,G)},Y4.inflateSetDictionary=(e,t)=>{var r,n=t.length;return te(e)||0!==(r=e.state).wrap&&16190!==r.mode?z:16190===r.mode&&P(1,t,n,0)!==r.check?W:re(e,t,n,n)?(r.mode=16210,$):(r.havedict=1,G)},Y4.inflateInfo=\"pako inflate (from Nodeca project)\"}return Y4}function Q4(){if(!z4){z4=1;const d=J4(),a=I4(),p=x4(),i=A4(),o=L4(),s=(q4||(q4=1,V4=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}),V4),f=Object.prototype.toString,{Z_NO_FLUSH:h,Z_FINISH:m,Z_OK:g,Z_STREAM_END:_,Z_NEED_DICT:y,Z_STREAM_ERROR:T,Z_DATA_ERROR:v,Z_MEM_ERROR:b}=O4();function r(e){this.options=a.assign({chunkSize:65536,windowBits:15,to:\"\"},e||{});var t=this.options,e=(t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits)&&(t.windowBits=-15),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0,d.inflateInit2(this.strm,t.windowBits));if(e!==g)throw new Error(i[e]);if(this.header=new s,d.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=p.string2buf(t.dictionary):\"[object ArrayBuffer]\"===f.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw)&&(e=d.inflateSetDictionary(this.strm,t.dictionary))!==g)throw new Error(i[e])}function n(e,t){t=new r(t);if(t.push(e),t.err)throw t.msg||i[t.err];return t.result}r.prototype.push=function(e,t){var r,n,a,i=this.strm,o=this.options.chunkSize,s=this.options.dictionary;let l,c,u;if(this.ended)return!1;for(c=t===~~t?t:!0===t?m:h,\"[object ArrayBuffer]\"===f.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(o),i.next_out=0,i.avail_out=o),(l=d.inflate(i,c))===y&&s&&((l=d.inflateSetDictionary(i,s))===g?l=d.inflate(i,c):l===v&&(l=y));0<i.avail_in&&l===_&&0<i.state.wrap&&0!==e[i.next_in];)d.inflateReset(i),l=d.inflate(i,c);switch(l){case T:case v:case y:case b:return this.onEnd(l),!(this.ended=!0)}if(u=i.avail_out,!i.next_out||0!==i.avail_out&&l!==_||(\"string\"===this.options.to?(r=p.utf8border(i.output,i.next_out),n=i.next_out-r,a=p.buf2string(i.output,r),i.next_out=n,i.avail_out=o-n,n&&i.output.set(i.output.subarray(r,r+n),0),this.onData(a)):this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out))),l!==g||0!==u){if(l===_)return l=d.inflateEnd(this.strm),this.onEnd(l),this.ended=!0;if(0===i.avail_in)break}}return!0},r.prototype.onData=function(e){this.chunks.push(e)},r.prototype.onEnd=function(e){e===g&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=a.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},K4.Inflate=r,K4.inflate=n,K4.inflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},K4.ungzip=n,K4.constants=O4()}return K4}function Z4(){if(!$4){var e,t,r,n,a,i,o,s,l;$4=1,Object.defineProperty(g4,\"__esModule\",{value:!0}),g4.isLegacyTrace=async function(t){var r=t.name.toLowerCase();if(r.endsWith(\".json\")||r.endsWith(\".json.gz\")||r.endsWith(\".zip\")||r.endsWith(\".html\"))return!0;if(await c(t))return!0;if(r.endsWith(\".trace\")){r=(await u(t.slice(0,512))).split(\"\\n\");let e=0;for(const n of r)n.startsWith(\"#\")&&e++;if(5<e)return!0}return!1},g4.openFileWithLegacyTraceViewer=async function(t){const r=new FileReader;r.onload=()=>{var e;return r.result instanceof ArrayBuffer?d(t.name,r.result,r.result.byteLength):(e=r.result,d(t.name,e,e.length))},r.onerror=e=>{console.error(e)},t.name.endsWith(\".gz\")||t.name.endsWith(\".zip\")||await c(t)?r.readAsArrayBuffer(t):r.readAsText(t)},g4.openInOldUIWithSizeCheck=async function(e){if(e.size<52428800)return(0,y.convertToJson)(e,d);var t=Math.round(e.size/1048576);let r;const n=e=>r=e;await(0,g.showModal)({title:\"Legacy UI may fail to open this trace\",content:(0,p.default)(\"div\",(0,p.default)(\"p\",`This trace is ${t}mb, opening it in the legacy UI `+\"may fail.\"),(0,p.default)(\"p\",\"More options can be found at \",(0,p.default)(v.Anchor,{href:\"https://goto.google.com/opening-large-traces\",target:\"_blank\",icon:b.Icons.ExternalLink},\"go/opening-large-traces\"),\".\")),buttons:[{text:\"Open full trace (not recommended)\",action:()=>n((0,y.convertToJson)(e,d))},{text:\"Open beginning of trace\",action:()=>n((0,y.convertToJson)(e,d,\"start\"))},{text:\"Open end of trace\",primary:!0,action:()=>n((0,y.convertToJson)(e,d,\"end\"))}]}),void 0!==r&&await r};const p=Jr.__importDefault(xe()),f=(W4||(W4=1,{Deflate:e,deflate:t,deflateRaw:r,gzip:n}=F4(),{Inflate:a,inflate:i,inflateRaw:o,ungzip:s}=Q4(),l=O4(),_4.Deflate=e,_4.deflate=t,_4.deflateRaw=r,_4.gzip=n,_4.Inflate=a,_4.inflate=i,_4.inflateRaw=o,_4.ungzip=s,_4.constants=l),_4),h=Pe(),m=hn(),g=Ke(),_=j(),y=sP(),T=Ch(),v=Oe(),b=Ae(),E=\"TRACE:\\n\";async function c(e){var t=e.name.toLowerCase();if(t.endsWith(\".ctrace\"))return!0;if(t.endsWith(\".txt\")&&(await u(e.slice(0,128))).includes(E))return!0;return!1}function u(n){return new Promise((e,t)=>{const r=new FileReader;r.onload=()=>{if((0,m.isString)(r.result))return e(r.result)},r.onerror=e=>{t(e)},r.readAsText(n)})}function d(t,r,e){r instanceof ArrayBuffer&&((0,h.assertTrue)(e<=r.byteLength),e!==r.byteLength&&(r=r.slice(0,e)),(n=(0,_.utf8Decode)(r.slice(0,128))).includes(E))&&(n=n.indexOf(E)+E.length,r=(0,f.inflate)(new Uint8Array(r.slice(n)),{to:\"string\"}));var n=(0,T.assetSrc)(\"assets/catapult_trace_viewer.html\"),n=window.open(n);n?n.addEventListener(\"load\",e=>{e.target.querySelector(\"x-profiling-view\").setActiveTrace(t,r)}):(0,g.showModal)({title:\"Open trace in the legacy Catapult Trace Viewer\",content:(0,p.default)(\"div\",(0,p.default)(\"div\",\"You are seeing this interstitial because popups are blocked\"),(0,p.default)(\"div\",\"Enable popups to skip this dialog next time.\")),buttons:[{text:\"Open legacy UI\",primary:!0,action:()=>d(t,r,e)}]})}}return g4}var X4,eB,tB,rB={},nB={};function aB(){if(!X4){X4=1,Object.defineProperty(nB,\"__esModule\",{value:!0}),nB.uploadTraceBlob=async function(e){let t=\"\";var r=e.traceInfo.source;let n=void 0,a=e.traceInfo.traceTitle||\"trace\";if(\"FILE\"===r.type)n=r.file,a=n.name;else if(\"ARRAY_BUFFER\"===r.type)n=r.buffer;else{if(\"URL\"!==r.type)throw new Error(\"Cannot share trace \"+JSON.stringify(r));t=r.url}{if(t)return t;if(void 0!==n){s(\"Uploading \"+a);const i=new c.GcsUploader(n,{mimeType:c.MIME_BINARY,onProgress:()=>o(i)});return await i.waitForCompletion(),i.uploadedUrl}}return},nB.createPermalink=async function(e,t){p.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Create permalink\");const r={traceUrl:t,appState:(0,l.serializeAppState)(e)},n=(s(\"Creating permalink...\"),(0,l.JsonSerialize)(r)),a=new c.GcsUploader(n,{mimeType:c.MIME_JSON,onProgress:()=>o(a)});return await a.waitForCompletion(),a.uploadedFileName},nB.loadPermalink=async function(e){var e=`https://storage.googleapis.com/${c.BUCKET_NAME}/`+e,t=await fetch(e);if(!t.ok)throw new Error(`Could not fetch permalink.\n URL: `+e);e=await t.text(),t=JSON.parse(e);let r,n=\"\";e=function(e){if(void 0===e.version)return;var t=e.frontendLocalState?.visibleState;return{traceUrl:e.engine?.source?.url,appState:{version:u.SERIALIZED_STATE_VERSION,pinnedTracks:e.pinnedTracks??[],viewport:t?{start:t.start?.value,end:t.end?.value}:void 0}}}(t);r=void 0!==e?e:(e=f.safeParse(t),e.success?e.data:(n=e.error.toString(),{}));let a=void 0;void 0!==r.appState&&((t=(0,l.parseAppState)(r.appState)).ok?a=t.value:n=t.error);r.traceUrl&&p.AppImpl.instance.openTraceFromUrl(r.traceUrl,a);n&&(0,d.showModal)({title:\"Failed to restore the serialized app state\",content:(0,i.default)(\"div\",(0,i.default)(\"p\",\"Something went wrong when restoring the app state.This is due to some backwards-incompatible change when the permalink is generated and then opened using two different UI versions.\"),(0,i.default)(\"p\",\"I'm going to try to open the trace file anyways, but the zoom level, pinned tracks and other UI state wont't be recovered\"),(0,i.default)(\"p\",\"Error details:\"),(0,i.default)(\".pf-modal-logs\",n)),buttons:[{text:\"Open only the trace file\",primary:!0}]})};const i=Jr.__importDefault(xe()),l=Fh(),c=iP(),u=Lh();var e=Ne();const d=Ke(),p=Jh(),f=e.z.object({traceUrl:e.z.string().optional(),appState:e.z.any().optional()});function o(e){switch(e.state){case\"UPLOADING\":s(\"Uploading \"+e.getEtaString());break;case\"ERROR\":s(\"Upload failed \"+e.error)}}function s(e){p.AppImpl.instance.omnibox.showStatusMessage(e)}}return nB}function iB(){if(!eB){eB=1,Object.defineProperty(rB,\"__esModule\",{value:!0}),rB.isShareable=i,rB.shareTrace=async function(e){const t=e.traceInfo.source,r=t.url??\"\",n=function(e){return e.includes(u)}(r);if(i(e)){if(confirm(\"Upload UI state and generate a permalink? The trace will be accessible by anybody with the permalink.\")){const r=await(0,s.uploadTraceBlob)(e);var a=await(0,s.createPermalink)(e,r);(0,l.showModal)({title:\"Permalink\",content:(0,o.default)(c.CopyableLink,{url:self.location.origin+\"/#!/?s=\"+a})})}}else r?n?confirm(\"Upload UI state and generate a permalink? The state (not the trace) will be accessible by anybody with the permalink.\")&&(a=await(0,s.createPermalink)(e,void 0),e=r.replace(u,a),(0,l.showModal)({title:\"Permalink\",content:(0,o.default)(c.CopyableLink,{url:e})})):(0,l.showModal)({title:\"Cannot create permalink from external trace\",content:(0,o.default)(\"\",(0,o.default)(\"p\",\"This trace was opened by an external site and as such cannot be re-shared preserving the UI state. \"),(0,o.default)(\"p\",\"By using the URL below you can open this trace again.\"),(0,o.default)(\"p\",\"Clicking will copy the URL into the clipboard.\"),(0,o.default)(c.CopyableLink,{url:r}))}):(0,l.showModal)({title:\"Cannot create permalink\",content:(0,o.default)(\"p\",\"This trace was opened by an external site and as such cannot be re-shared preserving the UI state. \")})};const o=Jr.__importDefault(xe()),s=aB(),l=Ke(),c=Y3(),t=Jh(),u=\"perfettoStateHashPlaceholder\";function i(e){return t.AppImpl.instance.isInternalUser&&e.traceInfo.downloadable}}return rB}function oB(){if(!tB){tB=1,Object.defineProperty(n4,\"__esModule\",{value:!0});const s=Ne(),r=bs(),n=Fe(),a=Me(),l=i4(),i=Nc(),c=Jh(),u=xp(),e=go(),d=jp(),p=Fh(),f=cf(),h=Z4(),m=iB(),g=Po(),_=Du(),y=Ke(),T=e.featureFlags.register({id:\"showOpenWithLegacyUiButton\",name:'Show \"Open with legacy UI\" button',description:'Show \"Open with legacy UI\" button in the sidebar',defaultValue:!1});function t(e){if((0,a.exists)(e)){if(\"bigint\"!=typeof e)throw Error(e+\" is not a bigint\");return n.Time.fromRaw(e)}e=\"Enter a timestamp\";if(null!==(e=window.prompt(e)))try{return n.Time.fromRaw(BigInt(e))}catch{window.alert(e+\" is not an integer\")}}function o(e){if(!(e.target instanceof HTMLInputElement))throw new Error(\"Not an input element\");var t;e.target.files&&(t=e.target.files[0],e.target.value=\"\",\"1\"===e.target.dataset.useCatapultLegacyUi?async function(e){if(c.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Open trace in Legacy UI\"),await(0,h.isLegacyTrace)(e))return(0,h.openFileWithLegacyTraceViewer)(e);return(0,h.openInOldUIWithSizeCheck)(e)}(t):(c.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Open trace from file\"),c.AppImpl.instance.openTraceFromFile(t)))}n4.default=class{static id=\"dev.perfetto.CoreCommands\";static onActivate(t){t.sidebar.enabled&&t.commands.registerCommand({id:\"dev.perfetto.ToggleLeftSidebar\",name:\"Toggle left sidebar\",callback:()=>{t.sidebar.toggleVisibility()},defaultHotkey:\"!Mod+B\"});var e=s.z.record(s.z.array(u.commandInvocationSchema));const r=new l.JsonSettingsEditor({schema:e});e={...t.settings.register({id:\"perfetto.CoreCommands#UserDefinedMacros\",name:\"Macros\",description:\"Custom command macros that execute multiple commands in sequence\",schema:e,defaultValue:{},requiresReload:!0,render:e=>r.render(e)}).get(),...t.extraMacros};for(const[a,i]of Object.entries(e))t.commands.registerCommand({id:\"dev.perfetto.UserMacro.\"+a,name:a,callback:async()=>{for(const e of i)await t.commands.runCommand(e.id,...e.args)}});const n=document.createElement(\"input\");n.classList.add(\"trace_file\"),n.setAttribute(\"type\",\"file\"),n.style.display=\"none\",n.addEventListener(\"change\",o),document.body.appendChild(n);e=\"dev.perfetto.OpenTrace\",t.commands.registerCommand({id:e,name:\"Open trace file\",callback:()=>{delete n.dataset.useCatapultLegacyUi,n.click()},defaultHotkey:\"!Mod+O\"}),t.sidebar.addMenuItem({commandId:e,section:\"navigation\",icon:\"folder_open\"}),e=\"dev.perfetto.OpenTraceInLegacyUi\";t.commands.registerCommand({id:e,name:\"Open with legacy UI\",callback:()=>{n.dataset.useCatapultLegacyUi=\"1\",n.click()}}),T.get()&&t.sidebar.addMenuItem({commandId:e,section:\"navigation\",icon:\"filter_none\"}),t.commands.registerCommand({id:\"dev.perfetto.CloseTrace\",name:\"Close trace\",callback:()=>{t.closeCurrentTrace()}})}async onTraceLoad(a){a.commands.registerCommand({id:\"dev.perfetto.RunQueryAllProcesses\",name:\"Run query: All processes\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:\"select name, pid from process order by name;\",title:\"All Processes\"})}}),a.commands.registerCommand({id:\"dev.perfetto.RunQueryCpuTimeByProcess\",name:\"Run query: CPU time by process\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:`\nselect\n  process.name,\n  sum(dur)/1e9 as cpu_sec\nfrom sched\njoin thread using(utid)\njoin process using(upid)\ngroup by upid\norder by cpu_sec desc\nlimit 100;`,title:\"CPU time by process\"})}}),a.commands.registerCommand({id:\"dev.perfetto.RunQueryCyclesByStateByCpu\",name:\"Run query: cycles by p-state by CPU\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:`\nselect\n  cpu,\n  freq,\n  dur,\n  sum(dur * freq)/1e6 as mcycles\nfrom (\n  select\n    cpu,\n    value as freq,\n    lead(ts) over (partition by cpu order by ts) - ts as dur\n  from counter\n  inner join cpu_counter_track on counter.track_id = cpu_counter_track.id\n  where name = 'cpufreq'\n) group by cpu, freq\norder by mcycles desc limit 32;`,title:\"Cycles by p-state by CPU\"})}}),a.commands.registerCommand({id:\"dev.perfetto.RunQueryCyclesByCpuByProcess\",name:\"Run query: CPU Time by CPU by process\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:`\nselect\n  process.name as process,\n  thread.name as thread,\n  cpu,\n  sum(dur) / 1e9 as cpu_sec\nfrom sched\ninner join thread using(utid)\ninner join process using(upid)\ngroup by utid, cpu\norder by cpu_sec desc\nlimit 30;`,title:\"CPU time by CPU by process\"})}}),a.commands.registerCommand({id:\"dev.perfetto.RunQueryHeapGraphBytesPerType\",name:\"Run query: heap graph bytes per type\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:`\nselect\n  o.upid,\n  o.graph_sample_ts,\n  c.name,\n  sum(o.self_size) as total_self_size\nfrom heap_graph_object o join heap_graph_class c on o.type_id = c.id\ngroup by\n o.upid,\n o.graph_sample_ts,\n c.name\norder by total_self_size desc\nlimit 100;`,title:\"Heap graph bytes per type\"})}}),a.commands.registerCommand({id:\"dev.perfetto.DebugSqlPerformance\",name:\"Debug SQL performance\",callback:()=>{(0,i.addQueryResultsTab)(a,{query:`\nwith first as (select started as ts from sqlstats limit 1)\nselect\n    round((max(ended - started, 0))/1e6) as runtime_ms,\n    round((started - first.ts)/1e6) as t_start_ms,\n    query\nfrom sqlstats, first\norder by started desc`,title:\"Recent SQL queries\"})}}),a.commands.registerCommand({id:\"dev.perfetto.UnpinAllTracks\",name:\"Unpin all pinned tracks\",callback:()=>{const t=a.workspace;t.pinnedTracks.forEach(e=>t.unpinTrack(e))}}),a.commands.registerCommand({id:\"dev.perfetto.ExpandAllGroups\",name:\"Expand all track groups\",callback:()=>{a.workspace.flatTracks.forEach(e=>e.expand())}}),a.commands.registerCommand({id:\"dev.perfetto.CollapseAllGroups\",name:\"Collapse all track groups\",callback:()=>{a.workspace.flatTracks.forEach(e=>e.collapse())}}),a.commands.registerCommand({id:\"dev.perfetto.PanToTimestamp\",name:\"Pan to timestamp\",callback:e=>{e=t(e);void 0!==e&&a.timeline.panToTimestamp(e)}}),a.commands.registerCommand({id:\"dev.perfetto.MarkTimestamp\",name:\"Mark timestamp\",callback:e=>{e=t(e);void 0!==e&&a.notes.addNote({timestamp:e})}}),a.commands.registerCommand({id:\"dev.perfetto.ShowCurrentSelectionTab\",name:\"Show current selection tab\",callback:()=>{a.tabs.showTab(\"current_selection\")}}),a.commands.registerCommand({id:\"dev.perfetto.CreateWorkspace\",name:\"Create new empty workspace\",callback:async e=>{var t=a.workspaces;void 0!==t&&void 0!==(e=\"string\"==typeof e?e:await a.omnibox.prompt(\"Give it a name...\"))&&\"\"!==e&&t.createEmptyWorkspace(e)}}),a.commands.registerCommand({id:\"dev.perfetto.CreateWorkspaceAndSwitch\",name:\"Create new empty workspace and switch to it\",callback:async e=>{var t=a.workspaces;void 0!==t&&void 0!==(e=\"string\"==typeof e?e:await a.omnibox.prompt(\"Give it a name...\"))&&\"\"!==e&&t.switchWorkspace(t.createEmptyWorkspace(e))}}),a.commands.registerCommand({id:\"dev.perfetto.SwitchWorkspace\",name:\"Switch to workspace\",callback:async t=>{var e,r=a.workspaces;void 0!==r&&(e=r.all.find(e=>e.title===t)??await a.omnibox.prompt(\"Choose a workspace...\",{values:r.all,getName:e=>e.title}))&&r.switchWorkspace(e)}}),a.commands.registerCommand({id:\"dev.perfetto.SetTimestampFormat\",name:\"Set timestamp and duration format\",callback:async()=>{var e=g.TimestampFormat,t=(0,n.formatTimezone)(a.traceInfo.tzOffMin);const r=await a.omnibox.prompt(\"Select format...\",{values:[{format:e.Timecode,name:\"Timecode\"},{format:e.UTC,name:\"Realtime (UTC)\"},{format:e.TraceTz,name:`Realtime (Trace TZ - ${t})`},{format:e.Seconds,name:\"Seconds\"},{format:e.Milliseconds,name:\"Milliseconds\"},{format:e.Microseconds,name:\"Microseconds\"},{format:e.TraceNs,name:\"Trace nanoseconds\"},{format:e.TraceNsLocale,name:\"Trace nanoseconds (with locale-specific formatting)\"},{format:e.CustomTimezone,name:\"Custom Timezone\"}],getName:e=>e.name});if(r){if(r.format===e.CustomTimezone){const r=await a.omnibox.prompt(\"Select format...\",{values:Object.entries(n.timezoneOffsetMap),getName:([e])=>e});if(!r)return;a.timeline.timezoneOverride.set(r[0])}a.timeline.timestampFormat=r.format}}}),a.commands.registerCommand({id:\"dev.perfetto.SetDurationPrecision\",name:\"Set duration precision\",callback:async()=>{var e=g.DurationPrecision,e=await a.omnibox.prompt(\"Select duration precision mode...\",{values:[{format:e.Full,name:\"Full\"},{format:e.HumanReadable,name:\"Human readable\"}],getName:e=>e.name});e&&(a.timeline.durationPrecision=e.format)}}),a.commands.registerCommand({id:\"dev.perfetto.TogglePerformanceMetrics\",name:\"Toggle performance metrics\",callback:()=>a.perfDebugging.enabled=!a.perfDebugging.enabled}),a.commands.registerCommand({id:\"dev.perfetto.ShareTrace\",name:\"Share trace\",callback:()=>(0,m.shareTrace)(a)}),a.commands.registerCommand({id:\"dev.perfetto.SearchNext\",name:\"Go to next search result\",callback:()=>{a.search.stepForward()},defaultHotkey:\"Enter\"}),a.commands.registerCommand({id:\"dev.perfetto.SearchPrev\",name:\"Go to previous search result\",callback:()=>{a.search.stepBackwards()},defaultHotkey:\"Shift+Enter\"}),a.commands.registerCommand({id:\"dev.perfetto.SwitchToQueryMode\",name:\"Switch to query mode\",callback:()=>a.omnibox.setMode(d.OmniboxMode.Query)}),a.commands.registerCommand({id:\"dev.perfetto.RunQuery\",name:\"Runs an SQL query\",callback:async e=>{e=\"string\"==typeof e?e:await a.omnibox.prompt(\"Enter SQL...\");e&&await a.engine.query(e)}}),a.commands.registerCommand({id:\"dev.perfetto.RunQueryAndShowTab\",name:\"Runs an SQL query and opens results in a tab\",callback:async e=>{e=\"string\"==typeof e?e:await a.omnibox.prompt(\"Enter SQL...\");e&&(0,i.addQueryResultsTab)(a,{query:e,title:\"Command Query\"})}}),a.commands.registerCommand({id:\"dev.perfetto.SwitchToSearchMode\",name:\"Switch to search mode\",callback:()=>a.omnibox.setMode(d.OmniboxMode.Search),defaultHotkey:\"/\"}),a.commands.registerCommand({id:\"dev.perfetto.CopyTimeWindow\",name:\"Copy selected time window to clipboard\",callback:async()=>{var e=await(0,_.getTimeSpanOfSelectionOrVisibleWindow)(a),e=`ts >= ${e.start} and ts < `+e.end;(0,r.copyToClipboard)(e)}}),a.commands.registerCommand({id:\"dev.perfetto.FocusSelection\",name:\"Focus current selection\",callback:()=>a.selection.scrollToSelection(),defaultHotkey:\"F\"}),a.commands.registerCommand({id:\"dev.perfetto.ZoomOnSelection\",name:\"Zoom in on current selection\",callback:()=>a.selection.zoomOnSelection()}),a.commands.registerCommand({id:\"dev.perfetto.Deselect\",name:\"Deselect\",callback:()=>{a.selection.clearSelection()},defaultHotkey:\"Escape\"}),a.commands.registerCommand({id:\"dev.perfetto.NextFlow\",name:\"Next flow\",callback:()=>a.flows.focusOtherFlow(\"Forward\"),defaultHotkey:\"Mod+]\"}),a.commands.registerCommand({id:\"dev.perfetto.PrevFlow\",name:\"Prev flow\",callback:()=>a.flows.focusOtherFlow(\"Backward\"),defaultHotkey:\"Mod+[\"}),a.commands.registerCommand({id:\"dev.perfetto.MoveNextFlow\",name:\"Move next flow\",callback:()=>a.flows.moveByFocusedFlow(\"Forward\"),defaultHotkey:\"]\"}),a.commands.registerCommand({id:\"dev.perfetto.MovePrevFlow\",name:\"Move prev flow\",callback:()=>a.flows.moveByFocusedFlow(\"Backward\"),defaultHotkey:\"[\"}),a.commands.registerCommand({id:\"dev.perfetto.SelectEventByTableNameAndId\",name:\"Select event by table name and ID\",callback:async()=>{var e,t,r=await a.omnibox.prompt(\"Enter table name\");void 0!==r&&void 0!==(e=await a.omnibox.prompt(\"Enter ID\"))&&(t=Number(e),isFinite(t))&&a.selection.selectSqlEvent(r,t,{scrollToSelection:!0})}}),a.commands.registerCommand({id:\"dev.perfetto.SelectAll\",name:\"Select all\",callback:()=>{let e;var t=a.selection.selection,{start:t,end:r}=(e=\"area\"===t.kind?a.traceInfo.start===t.start&&a.traceInfo.end===t.end?a.workspace.flatTracks.map(e=>e.uri).filter(e=>void 0!==e):t.trackUris:a.workspace.flatTracks.map(e=>e.uri).filter(e=>void 0!==e),a.traceInfo);a.selection.selectArea({start:t,end:r,trackUris:e})},defaultHotkey:\"Mod+A\"}),a.commands.registerCommand({id:\"dev.perfetto.ConvertSelectionToArea\",name:\"Convert selection to area selection\",callback:()=>{var e=a.selection.selection,t=a.selection.getTimeSpanOfSelection();\"track_event\"===e.kind&&t&&a.selection.selectArea({start:t.start,end:t.end,trackUris:[e.trackUri]})},defaultHotkey:\"R\"}),a.commands.registerCommand({id:\"dev.perfetto.ToggleDrawer\",name:\"Toggle drawer\",defaultHotkey:\"Q\",callback:()=>a.tabs.toggleTabPanelVisibility()}),a.commands.registerCommand({id:\"dev.perfetto.CopyPinnedToWorkspace\",name:\"Copy pinned tracks to workspace\",callback:async()=>{var e=a.workspace.pinnedTracks;if(e.length){var t=await this.selectWorkspace(a,\"Pinned tracks\");if(t){for(const n of e){var r=n.clone();t.addChildLast(r)}a.workspaces.switchWorkspace(t)}}else window.alert(\"No pinned tracks to copy\")}}),a.commands.registerCommand({id:\"dev.perfetto.CopyFilteredToWorkspace\",name:\"Copy filtered tracks to workspace\",callback:async()=>{var e=a.workspace.flatTracks.filter(e=>(0,f.trackMatchesFilter)(a,e));if(e.length){var t=await this.selectWorkspace(a,\"Filtered tracks\");if(t){for(const n of e){var r=n.clone();t.addChildLast(r)}a.workspaces.switchWorkspace(t)}}else window.alert(\"No filtered tracks to copy\")}}),a.commands.registerCommand({id:\"dev.perfetto.CopySelectedTracksToWorkspace\",name:\"Copy selected tracks to workspace\",callback:async()=>{var e=a.selection.selection;if(\"area\"!==e.kind||0===e.trackUris.length)window.alert(\"No selected tracks to copy\");else{var t=await this.selectWorkspace(a);if(t){for(const n of e.trackUris){var r=a.workspace.getTrackByUri(n);r&&(r=r.clone(),t.addChildLast(r))}a.workspaces.switchWorkspace(t)}}}}),a.commands.registerCommand({id:\"dev.perfetto.Quicksave\",name:\"Quicksave UI state to localStorage\",callback:()=>{var e=(0,p.serializeAppState)(a),e=(0,p.JsonSerialize)(e);localStorage.setItem(\"quicksave\",e)}}),a.commands.registerCommand({id:\"dev.perfetto.Quickload\",name:\"Quickload UI state from the localStorage\",callback:()=>{var e=localStorage.getItem(\"quicksave\");null===e?(0,y.showModal)({title:\"Nothing saved in the quicksave slot\",buttons:[{text:\"Dismiss\"}]}):(e=JSON.parse(e),(e=(0,p.parseAppState)(e)).ok&&((0,p.deserializeAppStatePhase1)(e.value,a),(0,p.deserializeAppStatePhase2)(e.value,a)))}}),a.commands.registerCommand({id:\"dev.perfetto.RestoreDefaults\",name:\"Reset all flags back to default values\",callback:()=>{e.featureFlags.resetAll(),window.location.reload()}})}async selectWorkspace(e,t=\"Untitled workspace\"){var r=e.workspaces.all.filter(e=>e.userEditable).map(e=>({title:e.title,fn:()=>e})).concat([{title:\"New workspace...\",fn:()=>e.workspaces.createEmptyWorkspace(t)}]),r=await e.omnibox.prompt(\"Select a workspace...\",{values:r,getName:e=>e.title});if(r)return r.fn()}}}return n4}var sB,lB={};var cB,uB,dB={},pB={},fB={};function hB(){if(!cB){cB=1,Object.defineProperty(fB,\"__esModule\",{value:!0}),fB.SettingsShell=void 0;const a=Jr.__importDefault(xe()),n=Pe();fB.SettingsShell=class{observer;view(e){const{title:t,stickyHeaderContent:r,...n}=e.attrs;return(0,a.default)(\".pf-settings-shell\",n,(0,a.default)(\".pf-settings-shell__title\",(0,a.default)(\".pf-settings-shell__centred\",(0,a.default)(\"h1\",t))),(0,a.default)(\".pf-settings-shell__header\",(0,a.default)(\".pf-settings-shell__centred\",r)),(0,a.default)(\".pf-settings-shell__content\",(0,a.default)(\".pf-settings-shell__centred\",e.children)))}oncreate(e){var t=(0,n.assertExists)(e.dom.querySelector(\".pf-settings-shell__title\"));const r=(0,n.assertExists)(e.dom.querySelector(\".pf-settings-shell__header\"));this.observer=new IntersectionObserver(([e])=>{r.classList.toggle(\"pf-settings-shell__header--stuck\",!e.isIntersecting)},{threshold:[0]}),this.observer.observe(t)}onremove(){this.observer?.disconnect()}}}return fB}var mB,gB,_B={};function yB(){if(!mB){var s,e;mB=1,Object.defineProperty(_B,\"__esModule\",{value:!0}),_B.PluginsPage=void 0;const c=Jr.__importDefault(xe()),r=be(),u=Pe(),n=Me(),d=Jh(),p=je(),f=ZI(),a=oc(),h=Be(),m=Se(),g=hB(),i=XL(),_=Rp(),y=mc(),T=Vl(),t=nu();(e=s=s||{}).Name=\"name\",e.Slowest=\"slowest\",e.Enabled=\"enabled\",e.Disabled=\"disabled\";let o=s.Name;function l(e){switch(e){case s.Slowest:return\"Startup time (slowest first)\";case s.Name:return\"Name\";case s.Enabled:return\"Enabled first\";case s.Disabled:return\"Disabled first\";default:(0,u.assertUnreachable)(e)}}_B.PluginsPage=class{filterText=\"\";view(){const t=d.AppImpl.instance.plugins.getAllPlugins();var e=t.some(e=>e.enableFlag.get()!==e.enabled),r=t.some(e=>e.enableFlag.isOverridden()),n=function(e){switch(o){case s.Slowest:return e.concat([]).sort((e,t)=>(t.traceContext?.loadTimeMs??-1)-(e.traceContext?.loadTimeMs??-1));case s.Name:return e.concat([]).sort((e,t)=>e.desc.id.localeCompare(t.desc.id));case s.Enabled:return e.concat([]).sort((e,t)=>(t.enabled?1:0)-(e.enabled?1:0));case s.Disabled:return e.concat([]).sort((e,t)=>(e.enabled?1:0)-(t.enabled?1:0));default:(0,u.assertUnreachable)(o)}}(t),a=\"\"!==this.filterText,i=new _.FuzzyFinder(n,e=>e.desc.id+\" \"+(e.desc.description??\"\")),i=a?i.find(this.filterText):n.map(e=>({item:e,segments:[]}));return(0,c.default)(g.SettingsShell,{title:\"Plugins\",stickyHeaderContent:(0,c.default)(y.Stack,{className:\"pf-plugins-page__topbar\",orientation:\"horizontal\"},(0,c.default)(p.ButtonBar,(0,c.default)(p.Button,{icon:\"restore\",disabled:!r,label:\"Restore Defaults\",title:r?\"Restore all plugins to their default enabled/disabled state\":\"All plugins are in their default state\",onclick:()=>{for(const e of t)e.enableFlag.reset()}}),e&&(0,c.default)(p.Button,{icon:\"refresh\",label:\"Reload required\",intent:h.Intent.Primary,variant:p.ButtonVariant.Filled,title:\"Click here to reload the page\",onclick:()=>location.reload()})),(0,c.default)(y.StackAuto),(0,c.default)(m.PopupMenu,{trigger:(0,c.default)(p.Button,{icon:\"sort\",label:\"Sort by \"+l(o)})},Object.values(s).map(e=>(0,c.default)(m.MenuItem,{label:l(e),active:o===e,onclick:()=>o=e}))),(0,c.default)(T.TextInput,{placeholder:\"Search...\",value:this.filterText,leftIcon:\"search\",oninput:e=>{e=e.target;this.filterText=e.value}}))},(0,c.default)(\".pf-plugins-page\",0<i.length?(0,c.default)(f.CardStack,i.map(({item:e})=>this.renderPluginCard(e))):this.renderEmptyState(a)))}renderEmptyState(e){return e?(0,c.default)(t.EmptyState,{icon:\"filter_alt_off\",title:\"No plugins match your search criteria\"},(0,c.default)(p.Button,{label:\"Clear filter\",icon:\"clear\",variant:p.ButtonVariant.Filled,intent:h.Intent.Primary,onclick:()=>{this.filterText=\"\"}})):(0,c.default)(t.EmptyState,{icon:\"search_off\",title:\"No plugins found\"})}renderPluginCard(e){var t=e.traceContext?.loadTimeMs;return(0,c.default)(f.Card,{className:(0,r.classNames)(\"pf-plugins-page__card\",e.active&&\"pf-plugins-page__card--active\",e.enableFlag.get()&&\"pf-plugins-page__card--enabled\"),key:e.desc.id},(0,c.default)(\".pf-plugins-page__details\",(0,c.default)(\"h1\",e.desc.id),e.desc.description&&(0,c.default)(\".pf-plugins-page__description\",e.desc.description)),(0,c.default)(\".pf-plugins-page__controls\",(0,n.exists)(t)&&(0,c.default)(\"span\",(0,c.default)(a.Chip,{className:\"pf-plugins-page__chip\",label:`STARTUP ${t.toFixed(1)} ms`})),(0,c.default)(i.Switch,{checked:e.enableFlag.get(),onchange:()=>{e.enableFlag.isOverridden()?e.enableFlag.reset():e.enableFlag.set(!e.enableFlag.get())}})))}}}return _B}function TB(){if(!gB){gB=1,Object.defineProperty(dB,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=function(){if(!uB){uB=1,Object.defineProperty(pB,\"__esModule\",{value:!0}),pB.FlagsPage=void 0;const n=Jr.__importDefault(xe()),a=Ae(),i=Xf(),o=go(),s=Xl(),l=uo(),c=je(),u=ZI(),t=nu(),d=Ee(),p=Bl(),f=hB(),h=mc(),m=Vl(),g=Rp(),_=be(),y=Be(),T=Oe();class v{view(e){var t=s.Router.parseUrl(window.location.href);const r=e.attrs;e=t.subpage===\"/\"+r.id?\".focused\":\"\",t=r.id;return(0,n.default)(h.Stack,{orientation:\"horizontal\",id:t,className:e},[(0,n.default)(h.Stack,[(0,n.default)(\"label\",r.label),(0,n.default)(\".pf-flags-page__description\",r.description)]),(0,n.default)(h.StackAuto),(0,n.default)(h.StackFixed,[(0,n.default)(p.Select,{onchange:e=>{e=e.target.value;r.onSelect(e)}},r.options.map(e=>{var t=e.id===r.selected;return(0,n.default)(\"option\",{value:e.id,selected:t},e.name)}))])])}}class b{view(e){const t=e.attrs.flag;var e=t.defaultValue?\"Enabled\":\"Disabled\",r=t.isOverridden();return(0,n.default)(u.Card,{className:(0,_.classNames)(r&&\"pf-flags-page__card--changed\")},(0,n.default)(v,{label:t.name,id:t.id,description:t.description,options:[{id:l.OverrideState.DEFAULT,name:`Default (${e})`},{id:l.OverrideState.TRUE,name:\"Enabled\"},{id:l.OverrideState.FALSE,name:\"Disabled\"}],selected:t.overriddenState(),onSelect:e=>{switch(e){case l.OverrideState.TRUE:t.set(!0);break;case l.OverrideState.FALSE:t.set(!1);break;default:case l.OverrideState.DEFAULT:t.reset()}}}))}}pB.FlagsPage=class{filterText=\"\";renderEmptyState(e){return e?(0,n.default)(t.EmptyState,{icon:\"filter_alt_off\",title:\"No settings match your search criteria\"},(0,n.default)(c.Button,{label:\"Clear filter\",icon:\"clear\",variant:c.ButtonVariant.Filled,onclick:()=>{this.filterText=\"\"}})):(0,n.default)(t.EmptyState,{icon:\"search_off\",title:\"No settings found\"})}view(){var e=\"\"!==this.filterText,t=o.featureFlags.allFlags().filter(e=>!e.id.startsWith(\"plugin_\")),t=new g.FuzzyFinder(t,e=>e.name).find(this.filterText),r=(0,i.channelChanged)();return(0,n.default)(f.SettingsShell,{stickyHeaderContent:(0,n.default)(h.Stack,{orientation:\"horizontal\"},(0,n.default)(c.Button,{icon:\"restore\",label:\"Restore Defaults\",onclick:()=>o.featureFlags.resetAll()}),r&&(0,n.default)(c.Button,{icon:\"refresh\",label:\"Reload required\",variant:c.ButtonVariant.Filled,intent:y.Intent.Primary,onclick:()=>window.location.reload()}),(0,n.default)(h.StackAuto),(0,n.default)(m.TextInput,{placeholder:\"Search...\",value:this.filterText,leftIcon:\"search\",oninput:e=>{e=e.target;this.filterText=e.value}})),title:\"Flags\"},(0,n.default)(h.Stack,{spacing:\"large\"},(0,n.default)(u.Card,(0,n.default)(v,{label:\"Release channel\",id:\"releaseChannel\",description:[\"Which release channel of the UI to use. See \",(0,n.default)(T.Anchor,{href:\"https://perfetto.dev/docs/visualization/perfetto-ui-release-process\"},\"Release Process\"),\" for more information.\"],options:[{id:\"stable\",name:\"Stable (default)\"},{id:\"canary\",name:\"Canary\"},{id:\"autopush\",name:\"Autopush\"}],selected:(0,i.getNextChannel)(),onSelect:e=>(0,i.setChannel)(e)})),(0,n.default)(\"span\",(0,n.default)(\"h1\",(0,n.default)(d.Icon,{icon:a.Icons.Warning}),\" Warning: Experimental features ahead! \")),(0,n.default)(\"span.pf-flags-page__description\",\"The following flags are experimental and may change or break the UI in unexpected ways. They are used by the Perfetto developers to test new features while in development. They might mess up your local storage, and they may be removed or renamed at any time. Use at your own risk!\"),0===t.length?this.renderEmptyState(e):(0,n.default)(u.CardStack,t.map(e=>(0,n.default)(b,{flag:e.item}))),(0,n.default)(\".pf-flags-page__footer\",(0,n.default)(\"span\",\"Are you looking for plugins? These have moved to the \",(0,n.default)(T.Anchor,{href:\"#!/plugins\"},\"plugins\"),\" page.\"))))}oncreate(e){var t=/[/](\\w+)/.exec(e.attrs.subpage??\"\")?.slice(1,2)[0];t&&(e=e.dom.querySelector(\"#\"+t))&&e.scrollIntoView({block:\"center\"})}}}return pB}(),n=yB();dB.default=class{static id=\"dev.perfetto.FlagsPage\";static onActivate(e){e.pages.registerPage({route:\"/flags\",render:e=>(0,t.default)(r.FlagsPage,{subpage:e})}),e.sidebar.addMenuItem({section:\"support\",sortOrder:3,text:\"Flags\",href:\"#!/flags\",icon:\"emoji_flags\"}),e.pages.registerPage({route:\"/plugins\",render:()=>(0,t.default)(n.PluginsPage)}),e.sidebar.addMenuItem({section:\"support\",text:\"Plugins\",href:\"#!/plugins\",icon:\"extension\",sortOrder:9})}}}return dB}var vB,bB,EB,SB={},AB={},OB={};function CB(){return vB||(vB=1,Object.defineProperty(OB,\"__esModule\",{value:!0}),OB.ALL_CATEGORIES=void 0,OB.getFlowCategories=function(e){var t=[];var r;return e.category?t.push(...e.category.split(\",\")):(r=e.begin.sliceCategory.split(\",\"),e=e.end.sliceCategory.split(\",\"),t.push(...new Set([...r,...e]))),t},OB.ALL_CATEGORIES=\"_all_\"),OB}function wB(){if(!bB){bB=1,Object.defineProperty(AB,\"__esModule\",{value:!0}),AB.FlowEventsAreaSelectedPanel=void 0;const l=Jr.__importDefault(xe()),n=Ic(),c=sm(),a=Be(),i=Ee(),u=fP(),d=CB();AB.FlowEventsAreaSelectedPanel=class{view({attrs:e}){var t=e.trace.selection.selection;if(\"area\"===t.kind){t=e[\"trace\"];const o=t[\"flows\"],s=new Map,r=(o.selectedFlows.forEach(e=>{(0,d.getFlowCategories)(e).forEach(e=>{s.has(e)||s.set(e,0),s.set(e,s.get(e)+1)})}),[]);r.push({category:\"All\",count:o.selectedFlows.length,show:\"checkbox\",isAll:1}),s.forEach((e,t)=>{r.push({category:t,count:e,show:\"checkbox\",isAll:0})});e=[{name:\"category\",title:\"Flow Category\"},{name:\"count\",title:\"Number of flows\"},{name:\"show\",title:(0,l.default)(\"span\",\"Show \",(0,l.default)(u.Tooltip,{trigger:(0,l.default)(i.Icon,{icon:\"warning\",intent:a.Intent.Warning})},\"Showing a large number of flows may impact performance.\"))}];return(0,l.default)(n.DataGrid,{columns:e,data:r,cellRenderer:function(e,t,r){const{isAll:n,category:a}=r;if(\"show\"!==t)return null===e?(0,l.default)(\"span\",\"null\"):(0,l.default)(\"span\",\"\"+e);{const i=o.visibleCategories.get(a)||o.visibleCategories.get(d.ALL_CATEGORIES);return(0,l.default)(c.Checkbox,{checked:i,onclick:()=>{if(1===n){if(i)for(const e of o.visibleCategories.keys())o.setCategoryVisible(e,!1);else s.forEach((e,t)=>{o.setCategoryVisible(t,!0)});o.setCategoryVisible(d.ALL_CATEGORIES,!i)}else i&&o.setCategoryVisible(d.ALL_CATEGORIES,!1),o.setCategoryVisible(a,!i)}})}},sorting:{direction:\"UNSORTED\"},filters:[],fillHeight:!0})}}}}return AB}var kB,IB={};var RB,NB={},MB={},PB={};function DB(){if(!RB){RB=1,Object.defineProperty(PB,\"__esModule\",{value:!0}),PB.MultiTraceController=void 0;const n=ln();PB.MultiTraceController=class{_traces=[];traceAnalyzer;onStateChanged;onAnalysisStarted;onAnalysisCompleted;constructor(e,t,r,n){this.traceAnalyzer=e,this.onStateChanged=t,this.onAnalysisStarted=r,this.onAnalysisCompleted=n}setTracesForTesting(e){this._traces=[...e]}get traces(){return this._traces}get isOpeningAllowed(){return void 0===this.getLoadingError()}getLoadingError(){return 0===this.traces.length?\"NO_TRACES\":this.isAnalyzing()?\"ANALYZING\":this.hasErrors()?\"TRACE_ERROR\":void 0}addFiles(e){for(const r of e){var t={uuid:(0,n.uuidv4)(),file:r,status:\"not-analyzed\"};this._traces.push(t),this.analyzeTrace(t)}this.onStateChanged()}removeTrace(t){var e=this._traces.findIndex(e=>e.uuid===t);-1!==e&&(this._traces.splice(e,1),this.onStateChanged())}isAnalyzing(){return this.traces.some(e=>\"analyzing\"===e.status)}hasErrors(){return this.traces.some(e=>\"error\"===e.status)}async analyzeTrace(t){const r=this._traces.findIndex(e=>e.uuid===t.uuid);if(-1!==r)try{this._traces[r]={...t,status:\"analyzing\",progress:0},this.onStateChanged(),this.onAnalysisStarted?.(t.uuid);var n=await this.traceAnalyzer.analyze(t.file,e=>{\"analyzing\"===this._traces[r]?.status&&(this._traces[r]={...this._traces[r],progress:e},this.onStateChanged())}),e={...t,status:\"analyzed\",format:n.format};this._traces[r]=e,this.onStateChanged(),this.onAnalysisCompleted?.(t.uuid)}catch(e){this._traces[r]={...t,status:\"error\",error:(n=(n=e)instanceof Error?n.message:\"\"+n).includes(\"(ERR:fmt)\")?\"The file opened doesn't look like a Perfetto trace or any other supported trace format.\":n},this.onStateChanged(),this.onAnalysisCompleted?.(t.uuid)}}}}return PB}var xB,LB,FB,UB={};function BB(){if(!xB){xB=1,Object.defineProperty(UB,\"__esModule\",{value:!0}),UB.WasmTraceAnalyzer=void 0;const c=Jr,u=wh(),d=ln(),p=Rh(),f=Ue();UB.WasmTraceAnalyzer=class{async analyze(e,t){var r,n={stack:[],error:void 0,hasError:!1};try{for(var a=c.__addDisposableResource(n,new u.WasmEngineProxy((0,d.uuidv4)()),!1),i=(a.resetTraceProcessor({tokenizeOnly:!0,cropTrackEvents:!1,ingestFtraceInRawTable:!1,analyzeTraceProtoContent:!1,ftraceDropUntilAllCpusValid:!1}),new p.TraceFileStream(e));;){var o=await i.readChunk();if(t(o.bytesRead/e.size),await a.parse(o.data),o.eof){await a.notifyEof();break}}for(var s=(await a.query(`\n        SELECT\n          parent.trace_type\n        FROM __intrinsic_trace_file parent\n        LEFT JOIN __intrinsic_trace_file child ON parent.id = child.parent_id\n        WHERE child.id IS NULL\n      `)).iter({trace_type:f.STR}),l=[];s.valid();s.next())l.push(s.trace_type);if(1<l.length)throw new Error(\"This trace contains multiple sub-traces, which is not supported because recursive synchronization is tricky. Please open each sub-trace individually.\");if(0===l.length)throw new Error(\"Could not determine trace type\");return{format:\"proto\"!==(r=l[0])?r:\"Perfetto\"}}catch(e){n.error=e,n.hasError=!0}finally{c.__disposeResources(n)}}}}return UB}function jB(){if(LB)return MB;LB=1,Object.defineProperty(MB,\"__esModule\",{value:!0}),MB.showMultiTraceModal=function(e){(0,l.showModal)({title:\"Open Multiple Traces\",icon:\"library_books\",key:m,className:\"pf-multi-trace-modal-override\",content:()=>(0,n.default)(g,{initialFiles:e})})};const n=Jr.__importDefault(xe()),t=Jh(),r=Oe(),a=je(),i=ZI(),o=Be(),s=Ee(),l=Ke(),c=Kl(),u=Ei(),d=mc(),e=r5(),p=$N();var f=DB(),h=BB();const m=\"multi-trace-modal\";class g{controller=new f.MultiTraceController(new h.WasmTraceAnalyzer,()=>(0,l.redrawModal)());currentTab=\"synchronous\";oncreate({attrs:e}){this.controller.addFiles(e.initialFiles)}view(){return(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal\",orientation:\"vertical\"},this.renderDescription(),(0,n.default)(_,{traces:this.controller.traces,controller:this.controller}),(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__footer\",orientation:\"horizontal\"},this.renderActions()))}renderDescription(){return(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__description-panel\",orientation:\"vertical\"},(0,n.default)(e.TabStrip,{className:\"pf-multi-trace-modal__tabs\",tabs:[{key:\"synchronous\",title:\"Synchronous Traces\"},{key:\"cross-machine\",title:\"Cross-Machine Traces\"},{key:\"comparison\",title:\"Trace Comparison\"}],currentTabKey:this.currentTab,onTabChange:e=>{this.currentTab=e,(0,l.redrawModal)()}}),(0,n.default)(\".pf-multi-trace-modal__description-content\",this.renderTabContent()))}renderTabContent(){switch(this.currentTab){case\"synchronous\":return[(0,n.default)(p.TextParagraph,{text:\"🔗 Combine multiple trace files that were captured at the same time on the same device or system. This allows you to view traces from different sources (e.g., system traces, app traces, custom instrumentation) on a unified timeline.\"})];case\"cross-machine\":return[(0,n.default)(p.TextParagraph,{text:\"🌐 Merge traces captured on different machines or devices with distributed time synchronization.\"})];case\"comparison\":return[(0,n.default)(p.TextParagraph,{text:\"📊 Compare traces from different time periods to identify performance regressions or improvements.\"})];default:return\"\"}}renderActions(){var e=this.getFooterContent(),t=void 0!==e,t=(0,n.default)(a.Button,{label:\"Open Traces\",intent:o.Intent.Primary,variant:a.ButtonVariant.Filled,onclick:()=>this.openTraces(),disabled:t});return void 0!==e?[(0,n.default)(c.Callout,{className:\"pf-multi-trace-modal__footer-error\",intent:o.Intent.Danger,icon:\"error_outline\"},e),(0,n.default)(\".pf-multi-trace-modal__footer-spacer\"),t]:[(0,n.default)(\".pf-multi-trace-modal__footer-spacer\"),t]}getFooterContent(){if(\"cross-machine\"===this.currentTab)return[\"This feature is not yet supported. Please +1 \",(0,n.default)(r.Anchor,{href:\"https://github.com/google/perfetto/issues/2781\",target:\"_blank\"},\"this GitHub issue\"),' to prioritize development, or select \"Synchronous Traces\" to continue.'];if(\"comparison\"===this.currentTab)return[\"This feature is not yet supported. Please +1 \",(0,n.default)(r.Anchor,{href:\"https://github.com/google/perfetto/issues/2780\",target:\"_blank\"},\"this GitHub issue\"),' to prioritize development, or select \"Synchronous Traces\" to continue.'];var e=this.controller.getLoadingError();if(void 0!==e)switch(e){case\"NO_TRACES\":return\"Add at least one trace to open.\";case\"ANALYZING\":return\"Wait for all traces to be analyzed.\";case\"TRACE_ERROR\":return\"Remove traces with errors before opening.\";default:return\"An unknown error occurred.\"}}openTraces(){var e;0!==this.controller.traces.length&&(e=this.controller.traces.map(e=>e.file),t.AppImpl.instance.openTraceFromMultipleFiles(e),(0,l.closeModal)(m))}}class _{view({attrs:e}){const{traces:t,controller:r}=e;return(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__list-panel\",orientation:\"vertical\"},t.map(e=>this.renderTraceItem(e,r)),(0,n.default)(i.CardStack,{className:\"pf-multi-trace-modal__add-card\",onclick:()=>this.addTraces(r)},(0,n.default)(s.Icon,{icon:\"add\"}),\"Add more traces\"))}renderTraceItem(e,t){return(0,n.default)(i.CardStack,{className:\"pf-multi-trace-modal__card\",direction:\"horizontal\",key:e.uuid},this.renderTraceInfo(e),this.renderCardActions(e,t))}renderTraceInfo(e){return(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__info\",spacing:\"large\",orientation:\"vertical\"},(0,n.default)(\".pf-multi-trace-modal__name\",e.file.name),(0,n.default)(d.Stack,{orientation:\"horizontal\",spacing:\"large\"},(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__size\",orientation:\"horizontal\"},(0,n.default)(\"strong\",\"Size:\"),(0,n.default)(\"span\",(e.file.size/1048576).toFixed(1)+\" MB\")),\"analyzed\"===e.status?(0,n.default)(d.Stack,{className:\"pf-multi-trace-modal__format\",orientation:\"horizontal\"},(0,n.default)(\"strong\",\"Format:\"),(0,n.default)(\"span\",e.format)):this.renderTraceStatus(e)))}renderCardActions(e,t){return(0,n.default)(\".pf-multi-trace-modal__actions\",(0,n.default)(a.Button,{icon:\"delete\",onclick:()=>t.removeTrace(e.uuid),disabled:t.isAnalyzing()}))}renderTraceStatus(e){var t=function(e){switch(e.status){case\"analyzed\":return{class:\".pf-multi-trace-modal__status--analyzed\",text:\"Analyzed\"};case\"analyzing\":return{class:\".pf-multi-trace-modal__status--analyzing\",text:\"Analyzing...\"};case\"not-analyzed\":return{class:\"\",text:\"Not analyzed\"};case\"error\":return{class:\".pf-multi-trace-modal__status--error\",text:\"Error\"};default:return{class:\"\",text:\"Unknown\"}}}(e),r=\"analyzing\"===e.status?` (${(100*e.progress).toFixed(0)}%)`:\"\";return(0,n.default)(d.Stack,{orientation:\"horizontal\",className:\"pf-multi-trace-modal__status-wrapper\",spacing:\"small\"},\"analyzing\"===e.status&&(0,n.default)(u.Spinner),(0,n.default)(\".pf-multi-trace-modal__status\"+t.class,t.text+r))}addTraces(e){const t=document.createElement(\"input\");t.type=\"file\",t.multiple=!0,t.addEventListener(\"change\",()=>{t.files&&e.addFiles([...t.files])}),t.click()}}return MB}function HB(){if(!FB){FB=1,Object.defineProperty(NB,\"__esModule\",{value:!0});const r=jB(),t=\"dev.perfetto.MultiTraceOpen#openMultipleTraces\";NB.default=class{static id=\"dev.perfetto.MultiTraceOpen\";static onActivate(e){e.commands.registerCommand({id:t,name:\"Open multiple trace files\",callback:()=>{{const t=document.createElement(\"input\");t.setAttribute(\"type\",\"file\"),t.setAttribute(\"multiple\",\"multiple\"),t.style.display=\"none\",t.addEventListener(\"change\",async()=>{var e;t.files&&0<(e=[...t.files]).length&&(0,r.showMultiTraceModal)(e)}),t.click()}}}),e.sidebar.addMenuItem({commandId:t,section:\"navigation\",icon:\"library_books\"})}async onTraceLoad(){}}}return NB}var GB,VB,qB={},zB={};function WB(){if(!VB){VB=1,Object.defineProperty(qB,\"__esModule\",{value:!0});const e=Jr.__importDefault(xe()),t=function(){if(!GB){GB=1,Object.defineProperty(zB,\"__esModule\",{value:!0}),zB.NotesManager=void 0;const n=Jr.__importDefault(xe()),a=je(),i=Ae();zB.NotesManager=class{view({attrs:r}){var e=r.trace.notes.notes;return 0===e.size?\"No notes found\":(0,n.default)(\"table\",(0,n.default)(\"thead\",(0,n.default)(\"tr\",(0,n.default)(\"td\",\"ID\"),(0,n.default)(\"td\",\"Color\"),(0,n.default)(\"td\",\"Type\"),(0,n.default)(\"td\",\"Text\"),(0,n.default)(\"td\",\"Delete\"))),(0,n.default)(\"tbody\",Array.from(e.entries()).map(([e,t])=>(0,n.default)(\"tr\",(0,n.default)(\"td\",e),(0,n.default)(\"td\",t.color),(0,n.default)(\"td\",t.noteType),(0,n.default)(\"td\",t.text),(0,n.default)(\"td\",(0,n.default)(a.Button,{icon:i.Icons.Delete,onclick:()=>{r.trace.notes.removeNote(e)}}))))))}}}return zB}();qB.default=class{static id=\"dev.perfetto.Notes\";async onTraceLoad(r){r.tabs.registerTab({uri:\"perfetto.Notes#NotesManager\",isEphemeral:!1,content:{getTitle:()=>\"Notes & markers\",render:()=>(0,e.default)(t.NotesManager,{trace:r})}}),r.commands.registerCommand({id:\"dev.perfetto.SetTemporarySpanNote\",name:\"Set the temporary span note based on the current selection\",callback:()=>{var e,t=r.selection.getTimeSpanOfSelection();t&&(r.notes.addSpanNote({start:t.start,end:t.end,id:\"__temp__\"}),\"track_event\"===(e=r.selection.selection).kind)&&r.selection.selectArea({start:t.start,end:t.end,trackUris:[e.trackUri]})},defaultHotkey:\"M\"}),r.commands.registerCommand({id:\"dev.perfetto.AddSpanNote\",name:\"Add a new span note based on the current selection\",callback:()=>{var e=r.selection.getTimeSpanOfSelection();e&&r.notes.addSpanNote({start:e.start,end:e.end})},defaultHotkey:\"Shift+M\"}),r.commands.registerCommand({id:\"dev.perfetto.RemoveSelectedNote\",name:\"Remove selected note\",callback:()=>{var e=r.selection.selection;\"note\"===e.kind&&r.notes.removeNote(e.id)},defaultHotkey:\"Delete\"})}}}return qB}var $B,KB,YB={},JB={};function QB(){if(!KB){KB=1,Object.defineProperty(YB,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=function(){if(!$B){$B=1,Object.defineProperty(JB,\"__esModule\",{value:!0}),JB.SettingsPage=void 0;const i=Jr.__importDefault(xe()),o=Jh(),a=Ne(),s=je(),l=ZI(),c=hB(),u=XL(),d=Bl(),p=Vl(),f=Ee(),h=Be(),t=nu(),r=be(),m=mc(),g=Rp();JB.SettingsPage=class{filterText=\"\";view(){const e=o.AppImpl.instance.settings;var t=e.getAllSettings(),r=e.isReloadRequired(),n=\"\"!==this.filterText.trim(),a=new g.FuzzyFinder(t,e=>e.name+\" \"+(e.description??\"\")),a=n?a.find(this.filterText):t.map(e=>({item:e,segments:[]}));return(0,i.default)(c.SettingsShell,{title:\"Settings\",className:\"page\",stickyHeaderContent:(0,i.default)(m.Stack,{orientation:\"horizontal\"},(0,i.default)(s.Button,{icon:\"restore\",label:\"Restore Defaults\",onclick:()=>e.resetAll()}),r&&(0,i.default)(s.Button,{icon:\"refresh\",label:\"Reload required\",variant:s.ButtonVariant.Filled,intent:h.Intent.Primary,onclick:()=>window.location.reload()}),(0,i.default)(m.StackAuto),(0,i.default)(p.TextInput,{placeholder:\"Search...\",value:this.filterText,leftIcon:\"search\",oninput:e=>{e=e.target;this.filterText=e.value}}))},(0,i.default)(\".pf-settings-page\",0===a.length?this.renderEmptyState(n):(0,i.default)(l.CardStack,a.map(({item:e})=>this.renderSettingCard(e)))))}renderEmptyState(e){return e?(0,i.default)(t.EmptyState,{icon:\"filter_alt_off\",title:\"No settings match your search criteria\"},(0,i.default)(s.Button,{label:\"Clear filter\",icon:\"clear\",variant:s.ButtonVariant.Filled,intent:h.Intent.Primary,onclick:()=>{this.filterText=\"\"}})):(0,i.default)(t.EmptyState,{icon:\"search_off\",title:\"No settings found\"})}renderSettingCard(e){return(0,i.default)(l.Card,{className:(0,r.classNames)(\"pf-settings-page__card\",!e.isDefault&&\"pf-settings-page__card--changed\"),key:e.id},(0,i.default)(\".pf-settings-page__details\",(0,i.default)(\"h1\",e.name),e.description&&(0,i.default)(\".pf-settings-page__description\",e.description)),(0,i.default)(\".pf-settings-page__controls\",[!e.isDefault&&(0,i.default)(s.Button,{icon:\"restore\",title:\"Restore default\",variant:s.ButtonVariant.Minimal,onclick:()=>{e.reset()}}),this.renderSettingControl(e)]))}renderSettingControl(t){const r=t.get();var e,n;return t.render?t.render(t):t.schema instanceof a.z.ZodBoolean?(0,i.default)(u.Switch,{checked:r,onchange:()=>{t.set(!r)}}):t.schema instanceof a.z.ZodEnum?(e=t.schema.options,(0,i.default)(d.Select,{value:String(r),onchange:e=>{e=e.target;t.set(e.value)}},e.map(e=>(0,i.default)(\"option\",{value:e,selected:r===e},e)))):t.schema instanceof a.z.ZodNativeEnum?(e=Object.entries(t.schema._def.values),(0,i.default)(d.Select,{value:String(r),onchange:e=>{e=e.target,e=isNaN(Number(e.value))?e.value:Number(e.value);t.set(e)}},e.map(([e,t])=>\"string\"==typeof e&&isNaN(Number(e))?(0,i.default)(\"option\",{value:t,selected:r===t},e):null))):t.schema instanceof a.z.ZodNumber?(e=t.schema._def.checks.find(e=>\"min\"===e.kind),n=t.schema._def.checks.find(e=>\"max\"===e.kind),e=e?e.value:void 0,n=n?n.value:void 0,(0,i.default)(p.TextInput,{type:\"number\",value:r,min:e,max:n,onchange:e=>{e=e.target.valueAsNumber;t.set(e)}})):t.schema instanceof a.z.ZodString?(0,i.default)(p.TextInput,{value:r,onchange:e=>{e=e.target;t.set(e.value)}}):(0,i.default)(\".pf-settings-page__complex-error\",[(0,i.default)(f.Icon,{icon:\"error_outline\"}),(0,i.default)(\"span\",\"Cannot edit this setting directly\")])}}}return JB}();YB.default=class{static id=\"dev.perfetto.SettingsPage\";static onActivate(e){e.sidebar.addMenuItem({section:\"support\",sortOrder:3,text:\"Settings\",href:\"#!/settings\",icon:\"settings\"}),e.pages.registerPage({route:\"/settings\",render:()=>(0,t.default)(r.SettingsPage)}),e.commands.registerCommand({id:\"dev.perfetto.OpenSettings\",name:\"Open Settings\",callback:()=>{e.navigate(\"#!/settings\")}})}async onTraceLoad(e){}}}return YB}var ZB,XB,ej={};function tj(){if(!ZB){ZB=1,Object.defineProperty(ej,\"__esModule\",{value:!0});const t=Jr.__importDefault(Ne()),r=jp(),n=Jh(),a=Du(),i=Me(),o=Ue(),s=Fe();class l{static id=\"dev.perfetto.TrackUtils\";static dvorakSetting;static onActivate(r){l.dvorakSetting=r.settings.register({id:\"dvorakMode\",defaultValue:!1,name:\"Dvorak mode\",description:\"Rearranges hotkeys to avoid collisions in Dvorak layout.\",schema:t.default.boolean(),requiresReload:!0}),r.commands.registerCommand({id:\"dev.perfetto.FindTrackByName\",name:\"Find track by name\",callback:async()=>{var e,t=r.trace;t&&(e=t.workspace.flatTracksOrdered.filter(e=>void 0!==e.uri),e=await r.omnibox.prompt(\"Choose a track...\",{values:e,getName:e=>e.fullPath.join(\" ‣ \")}))&&t.selection.selectTrack(e.uri,{scrollToSelection:!0})},defaultHotkey:\"!Mod+P\"})}async onTraceLoad(p){p.commands.registerCommand({id:\"dev.perfetto.RunQueryInSelectedTimeWindow\",name:\"Run query in selected time window\",callback:async()=>{var e=await(0,a.getTimeSpanOfSelectionOrVisibleWindow)(p),t=n.AppImpl.instance.omnibox;t.setMode(r.OmniboxMode.Query),t.setText(`select  where ts >= ${e.start} and ts < `+e.end),t.focus(7)}}),p.commands.registerCommand({id:\"dev.perfetto.FindTrackByUri\",name:\"Find track by URI\",callback:async()=>{var e=p.workspace.flatTracksOrdered.filter(e=>void 0!==e.uri),e=await p.omnibox.prompt(\"Choose a track...\",{values:e,getName:e=>e.uri});e&&p.selection.selectTrack(e.uri,{scrollToSelection:!0})}}),p.commands.registerCommand({id:\"dev.perfetto.PinTrackByName\",name:\"Pin track by name\",defaultHotkey:\"Shift+T\",callback:async()=>{var e=p.workspace.flatTracksOrdered.filter(e=>void 0!==e.uri),e=await p.omnibox.prompt(\"Choose a track...\",{values:e,getName:e=>e.name});e&&e.pin()}}),p.commands.registerCommand({id:\"dev.perfetto.PinTracksByRegex\",name:\"Pin tracks by regex\",callback:async e=>{const t=await f(p,e,\"Enter regex pattern to match track names...\");t&&p.workspace.flatTracks.filter(e=>t.test(e.name)).forEach(e=>e.pin())}}),p.commands.registerCommand({id:\"dev.perfetto.ExpandTracksByRegex\",name:\"Expand tracks by regex\",callback:async e=>{const t=await f(p,e,\"Enter regex pattern to match track names...\");t&&p.workspace.flatTracks.filter(e=>t.test(e.name)).forEach(e=>e.expand())}}),p.commands.registerCommand({id:\"dev.perfetto.CollapseTracksByRegex\",name:\"Collapse tracks by regex\",callback:async e=>{const t=await f(p,e,\"Enter regex pattern to match track names...\");t&&p.workspace.flatTracks.filter(e=>t.test(e.name)).forEach(e=>e.collapse())}}),p.commands.registerCommand({id:\"dev.perfetto.CopyTracksToWorkspaceByRegex\",name:\"Copy tracks to workspace by regex\",callback:async(e,t)=>{const r=await f(p,e,\"Enter regex pattern to match track names...\");if(r){const n=\"string\"==typeof t?t:await p.omnibox.prompt(\"Enter workspace name...\");if(n){const a=p.workspaces.all.find(e=>e.title===n)??p.workspaces.createEmptyWorkspace(n);p.workspace.flatTracks.filter(e=>r.test(e.name)).forEach(e=>{a.addChildInOrder(e.clone(!0))})}}}}),p.commands.registerCommand({id:\"dev.perfetto.CopyTracksToWorkspaceByRegexWithAncestors\",name:\"Copy tracks to workspace by regex (with ancestors)\",callback:async(e,t)=>{const r=await f(p,e,\"Enter regex pattern to match track names...\");if(r){const o=\"string\"==typeof t?t:await p.omnibox.prompt(\"Enter workspace name...\");if(o){var n,a,e=p.workspaces.all.find(e=>e.title===o)??p.workspaces.createEmptyWorkspace(o),t=p.workspace.flatTracks.filter(e=>r.test(e.name));{var i=e;const s=new Map,l=new Set(t),c=new Map;for(const u of t)c.has(u)||c.set(u,u.getAncestors().length),u.getAncestors().forEach((e,t)=>{c.has(e)||c.set(e,t)});for(const d of t=Array.from(c.entries()).sort(([,e],[,t])=>e-t).map(([e])=>e))s.has(d.id)||(n=l.has(d),n=d.clone(n),s.set(d.id,n),((a=d.parent)&&\"\"!==a.name&&s.get(a.id)||i).addChildInOrder(n))}}}}}),p.commands.registerCommand({id:\"dev.perfetto.AddNoteAtUtcTimestamp\",name:\"Add note at UTC timestamp\",callback:async(t,r)=>{t=\"string\"==typeof t?t:await p.omnibox.prompt(\"Enter UTC timestamp (ISO format or milliseconds)...\");if(t){r=\"string\"==typeof r?r:await p.omnibox.prompt(\"Enter note text...\");if(void 0!==r){let e;e=/^\\d+$/.test(t)?new Date(parseInt(t,10)):new Date(t),isNaN(e.getTime())?console.error(\"Invalid timestamp format: \"+t):(t=s.Time.fromDate(e,p.traceInfo.unixOffset),p.notes.addNote({timestamp:t,text:r}))}}}}),p.commands.registerCommand({id:\"dev.perfetto.SelectNextTrackEvent\",name:\"Select next track event\",defaultHotkey:\".\",callback:async()=>{await e(p,\"next\")}}),p.commands.registerCommand({id:\"dev.perfetto.SelectPreviousTrackEvent\",name:\"Select previous track event\",defaultHotkey:l.dvorakSetting.get()?void 0:\",\",callback:async()=>{await e(p,\"prev\")}})}}async function e(e,t){var r,n,a=e.selection.selection;\"track_event\"===a.kind&&(r=e.tracks.getTrack(a.trackUri)?.renderer.getDataset?.())&&r.implements({id:o.NUM,ts:o.LONG})&&(n=(await e.engine.query(`\n      WITH\n        CTE AS (\n          SELECT\n            id,\n            ${\"next\"===t?\"LEAD\":\"LAG\"}(id) OVER (ORDER BY ts) AS resultId\n          FROM (${r.query()})\n        )\n      SELECT * FROM CTE WHERE id = ${a.eventId}\n    `)).maybeFirstRow({resultId:o.NUM_NULL})?.resultId,(0,i.exists)(n))&&e.selection.selectTrackEvent(a.trackUri,n,{scrollToSelection:!0})}async function f(e,t,r){t=\"string\"==typeof t?t:await e.omnibox.prompt(r);if(!t)return null;try{return new RegExp(t)}catch(e){return console.error(\"Invalid regex pattern: \"+t,e),null}}ej.default=l}return ej}function rj(){var e,t,r,n,a,i,o,s,l;return XB||(XB=1,Object.defineProperty(r4,\"__esModule\",{value:!0}),e=(l=Jr).__importDefault(oB()),t=l.__importDefault(function(){if(!sB){sB=1,Object.defineProperty(lB,\"__esModule\",{value:!0});const n=Jh();function r(e,t){e.analytics.logEvent(\"Trace Actions\",\"Open example trace\"),n.AppImpl.instance.openTraceFromUrl(t)}lB.default=class{static id=\"dev.perfetto.ExampleTraces\";static onActivate(e){var t=\"dev.perfetto.OpenExampleAndroidTrace\",t=(e.commands.registerCommand({id:t,name:\"Open Android example\",callback:()=>{r(e,\"https://storage.googleapis.com/perfetto-misc/example_android_trace_15s\")}}),e.sidebar.addMenuItem({section:\"example_traces\",commandId:t,icon:\"description\"}),\"dev.perfetto.OpenExampleChromeTrace\");e.commands.registerCommand({id:t,name:\"Open Chrome example\",callback:()=>{r(e,\"https://storage.googleapis.com/perfetto-misc/chrome_example_wikipedia.perfetto_trace.gz\")}}),e.sidebar.addMenuItem({section:\"example_traces\",commandId:t,icon:\"description\"})}}}return lB}()),r=l.__importDefault(TB()),n=l.__importDefault(function(){if(!EB){EB=1,Object.defineProperty(SB,\"__esModule\",{value:!0});const t=Jr.__importDefault(xe()),r=wB();SB.default=class{static id=\"dev.perfetto.FlowEventsPanel\";async onTraceLoad(e){e.selection.registerAreaSelectionTab({id:\"flow_events\",name:\"Flow Events\",priority:-100,render(){if(0<e.flows.selectedFlows.length)return{isLoading:!1,content:(0,t.default)(r.FlowEventsAreaSelectedPanel,{trace:e})}}})}}}return SB}()),a=l.__importDefault(function(){if(!kB){kB=1,Object.defineProperty(IB,\"__esModule\",{value:!0});IB.default=class{static id=\"dev.perfetto.GlobalGroups\";async onTraceLoad(t){t.onTraceReady.addListener(()=>{var e=t.workspace.children;1===e.length&&e[0].hasChildren&&e[0].expand()})}}}return IB}()),i=l.__importDefault(HB()),o=l.__importDefault(WB()),s=l.__importDefault(QB()),l=l.__importDefault(tj()),r4.default=[e.default,t.default,r.default,n.default,a.default,i.default,o.default,s.default,l.default]),r4}var nj,aj={};function ij(){if(!nj){nj=1,Object.defineProperty(aj,\"__esModule\",{value:!0}),aj.initLiveReload=function(){var e=new EventSource(\"/live_reload\");e.onmessage=e=>{var t,r,e=String(e.data);console.log(\"Live reload:\",e),i.add(e),e.endsWith(\".css\")?(t=document.querySelector(\"link[rel=stylesheet]\"))&&((r=t.parentElement).removeChild(t),r.appendChild(t)):(e.endsWith(\".html\")||e.endsWith(\".js\"))&&setTimeout(()=>{let e=\"\";for(const r of i)e+=r+\"\\n\";var t;i.clear(),Date.now()-n<a||(t=o.get()||confirm(e+\"changed, click to reload\"),n=Date.now(),t&&window.location.reload())},o.get()?0:1e3)},e.onerror=e=>{setTimeout(()=>console.error(\"LiveReload SSE error\",e),1e3)}};var e=go();let n=0;const a=1e4,i=new Set,o=e.featureFlags.register({id:\"rapidReload\",name:\"Development: rapid live reload\",defaultValue:!1,description:\"During development, instantly reload the page on change. Enables lower latency of live reload at the cost of potential multiple re-reloads.\",devOnly:!0})}return aj}var oj,sj={},lj={};var cj,uj={};var dj,pj={},fj={};var hj,mj,gj,_j={},yj={};function Tj(){if(!hj){hj=1,Object.defineProperty(yj,\"__esModule\",{value:!0}),yj.Animation=void 0;const r=K();yj.Animation=class{onAnimationStep;startMs=0;endMs=0;boundOnAnimationFrame=this.onAnimationFrame.bind(this);constructor(e){this.onAnimationStep=e}start(e){var t=performance.now();t<=this.endMs?this.endMs=t+e:(this.startMs=t,this.endMs=t+e,r.raf.startAnimation(this.boundOnAnimationFrame))}stop(){this.endMs=0,r.raf.stopAnimation(this.boundOnAnimationFrame)}get startTimeMs(){return this.startMs}onAnimationFrame(e){e>=this.endMs?r.raf.stopAnimation(this.boundOnAnimationFrame):this.onAnimationStep(Math.max(Math.round(e-this.startMs),0))}}}return yj}function vj(){if(!mj){mj=1,Object.defineProperty(_j,\"__esModule\",{value:!0}),_j.KeyboardNavigationHandler=_j.KeyMapping=void 0;const s=Le(),l=_i();var t,r,n,e,a=Tj();(e=t||(_j.KeyMapping=t={})).KEY_PAN_LEFT=\"KeyA\",e.KEY_PAN_RIGHT=\"KeyD\",e.KEY_ZOOM_IN=\"KeyW\",e.KEY_ZOOM_OUT=\"KeyS\",(e=r=r||{})[e.None=0]=\"None\",e[e.Left=-1]=\"Left\",e[e.Right=1]=\"Right\",(e=n=n||{})[e.None=0]=\"None\",e[e.In=1]=\"In\",e[e.Out=-1]=\"Out\";class c{mousePositionX=null;boundOnMouseMove=this.onMouseMove.bind(this);boundOnKeyDown=this.onKeyDown.bind(this);boundOnKeyUp=this.onKeyUp.bind(this);panning=r.None;panOffsetPx=0;targetPanOffsetPx=0;zooming=n.None;zoomRatio=0;targetZoomRatio=0;panAnimation=new a.Animation(this.onPanAnimationStep.bind(this));zoomAnimation=new a.Animation(this.onZoomAnimationStep.bind(this));element;onPanned;onZoomed;trash;constructor({element:e,onPanned:t,onZoomed:r}){this.element=e,this.onPanned=t,this.onZoomed=r,this.trash=new s.DisposableStack,document.body.addEventListener(\"keydown\",this.boundOnKeyDown),document.body.addEventListener(\"keyup\",this.boundOnKeyUp),this.element.addEventListener(\"mousemove\",this.boundOnMouseMove),this.trash.defer(()=>{this.element.removeEventListener(\"mousemove\",this.boundOnMouseMove),document.body.removeEventListener(\"keyup\",this.boundOnKeyUp),document.body.removeEventListener(\"keydown\",this.boundOnKeyDown)})}[Symbol.dispose](){this.trash.dispose()}onPanAnimationStep(e){var t=.4*(this.targetPanOffsetPx-this.panOffsetPx);this.panning!==r.None&&(e=Math.max(8*(1+.02*e),t),this.targetPanOffsetPx+=this.panning*e),this.panOffsetPx+=t,.1<Math.abs(t)?this.onPanned(t):this.panAnimation.stop()}onZoomAnimationStep(e){var t;null!==this.mousePositionX&&(t=.4*(this.targetZoomRatio-this.zoomRatio),this.zooming!==n.None&&(e=Math.max(.008*(1+.02*e),t),this.targetZoomRatio+=this.zooming*e),this.zoomRatio+=t,1e-6<Math.abs(t)?this.onZoomed(this.mousePositionX,t):this.zoomAnimation.stop())}onMouseMove(e){this.mousePositionX=(0,l.currentTargetOffset)(e).x}onKeyDown(e){e instanceof KeyboardEvent&&((0,l.elementIsEditable)(e.target)||e.ctrlKey||e.metaKey||(i(e)!==r.None&&(this.panning!==i(e)&&(this.panAnimation.stop(),this.panOffsetPx=0,this.targetPanOffsetPx=50*i(e)),this.panning=i(e),this.panAnimation.start(700)),o(e)!==n.None&&(this.zooming!==o(e)&&(this.zoomAnimation.stop(),this.zoomRatio=0,this.targetZoomRatio=.1*o(e)),this.zooming=o(e),this.zoomAnimation.start(700))))}onKeyUp(e){e instanceof KeyboardEvent&&(e.ctrlKey||e.metaKey||(i(e)===this.panning&&(this.panning=r.None),o(e)===this.zooming&&(this.zooming=n.None)))}}function i(e){return e.code===t.KEY_PAN_LEFT?r.Left:e.code===t.KEY_PAN_RIGHT?r.Right:r.None}function o(e){return e.code===t.KEY_ZOOM_IN?n.In:e.code===t.KEY_ZOOM_OUT?n.Out:n.None}_j.KeyboardNavigationHandler=c}return _j}function bj(){if(gj)return pj;gj=1,Object.defineProperty(pj,\"__esModule\",{value:!0}),pj.toggleHelp=function(){e.AppImpl.instance.analytics.logEvent(\"User Actions\",\"Show help\"),(0,t.showModal)({title:\"Perfetto Help\",content:()=>(0,r.default)(d)})};const r=Jr.__importDefault(xe()),n=Pe(),e=Jh(),a=nx(),t=Ke(),i=Ei(),o=function(){if(!dj){dj=1,Object.defineProperty(fj,\"__esModule\",{value:!0}),fj.NotSupportedError=void 0,fj.nativeKeyboardLayoutMap=async function(){{if(\"keyboard\"in window.navigator)return window.navigator.keyboard.getLayoutMap();throw new e(\"Keyboard API is not supported\")}};class e extends Error{}fj.NotSupportedError=e}return fj}(),s=vj(),l=K();function c(e){return(0,r.default)(a.Keycap,{spacing:\"large\"},e)}class u{get(e){return e.replace(/^Key([A-Z])$/,\"$1\").toLowerCase()}}class d{keyMap;oninit(){(0,o.nativeKeyboardLayoutMap)().then(e=>{this.keyMap=e,l.raf.scheduleFullRedraw()}).catch(e=>{if(!(e instanceof o.NotSupportedError||String(e).includes(\"SecurityError\")))throw e;this.keyMap=new u,l.raf.scheduleFullRedraw()})}view(){return(0,r.default)(\".pf-help-modal\",(0,r.default)(\"h2\",\"Navigation\"),(0,r.default)(\"table\",(0,r.default)(\"tr\",(0,r.default)(\"td\",this.codeToKeycap(s.KeyMapping.KEY_ZOOM_IN),\"/\",this.codeToKeycap(s.KeyMapping.KEY_ZOOM_OUT)),(0,r.default)(\"td\",\"Zoom in/out\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",this.codeToKeycap(s.KeyMapping.KEY_PAN_LEFT),\"/\",this.codeToKeycap(s.KeyMapping.KEY_PAN_RIGHT)),(0,r.default)(\"td\",\"Pan left/right\"))),(0,r.default)(\"h2\",\"Mouse Controls\"),(0,r.default)(\"table\",(0,r.default)(\"tr\",(0,r.default)(\"td\",\"Click\"),(0,r.default)(\"td\",\"Select event\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",\"Ctrl + Scroll wheel\"),(0,r.default)(\"td\",\"Zoom in/out\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",\"Click + Drag\"),(0,r.default)(\"td\",\"Select area\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",\"Shift + Click + Drag\"),(0,r.default)(\"td\",\"Pan left/right\"))),(0,r.default)(\"h2\",\"Running commands from the viewer page\"),(0,r.default)(\"table\",(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\">\"),\" in the (empty) search box\"),(0,r.default)(\"td\",\"Switch to command mode\"))),(0,r.default)(\"h2\",\"Making SQL queries from the viewer page\"),(0,r.default)(\"table\",(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\":\"),\" in the (empty) search box\"),(0,r.default)(\"td\",\"Switch to query mode\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\"Enter\")),(0,r.default)(\"td\",\"Execute query\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\"Ctrl\"),\" + \",c(\"Enter\")),(0,r.default)(\"td\",\"Execute query and pin output (output will not be replaced by regular query input)\"))),(0,r.default)(\"h2\",\"Making SQL queries from the query page\"),(0,r.default)(\"table\",(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\"Ctrl\"),\" + \",c(\"Enter\")),(0,r.default)(\"td\",\"Execute query\")),(0,r.default)(\"tr\",(0,r.default)(\"td\",c(\"Ctrl\"),\" + \",c(\"Enter\"),\" (with selection)\"),(0,r.default)(\"td\",\"Execute selection\"))),(0,r.default)(\"h2\",\"Command Hotkeys\"),(0,r.default)(\"table\",e.AppImpl.instance.commands.commands.filter(({defaultHotkey:e})=>e).sort((e,t)=>e.name.localeCompare(t.name)).map(({defaultHotkey:e,name:t})=>(0,r.default)(\"tr\",(0,r.default)(\"td\",(0,r.default)(a.HotkeyGlyphs,{spacing:\"large\",hotkey:(0,n.assertExists)(e)})),(0,r.default)(\"td\",t)))))}codeToKeycap(e){return this.keyMap?c(this.keyMap.get(e)):c((0,r.default)(i.Spinner))}}return pj}var Ej,Sj={};var Aj,Oj={},Cj={};var wj,kj,Ij={};function Rj(){if(!kj){kj=1,Object.defineProperty(Oj,\"__esModule\",{value:!0}),Oj.Sidebar=void 0;const p=Jr.__importDefault(xe()),a=Xf(),i=(Aj||(Aj=1,Object.defineProperty(Cj,\"__esModule\",{value:!0}),Cj.TRACE_SUFFIX=void 0,Cj.TRACE_SUFFIX=\".perfetto-trace\"),Cj),o=ph();var e=go();const s=K(),l=Yt(),c=Ke();var t=Tj();const u=nc(),f=bj(),h=iB(),m=sP(),g=Z4(),_=(wj||(wj=1,Object.defineProperty(Ij,\"__esModule\",{value:!0}),Ij.SIDEBAR_SECTIONS=void 0,Ij.SIDEBAR_SECTIONS={navigation:{title:\"Navigation\",summary:\"Open or record a new trace\"},current_trace:{title:\"Current Trace\",summary:\"Actions on the current trace\"},convert_trace:{title:\"Convert trace\",summary:\"Convert to other formats\"},example_traces:{title:\"Example Traces\",summary:\"Open an example trace\"},support:{title:\"Support\",summary:\"Documentation & Bugs\"}}),Ij),y=Jh(),T=Me(),v=bs(),b=be(),E=ed(),S=Ch(),A=Pe(),O=Ee(),C=je(),w=e.featureFlags.register({id:\"showHiringBanner\",name:\"Show hiring banner\",description:'Show the \"We\\'re hiring\" banner link in the side bar.',defaultValue:!1});class k{view({attrs:e}){let t=\"\",r=\"Number of pending SQL queries\",n,a=!1,i;var o=e.trace?.engine,o=(void 0!==o&&(i=o.mode,void 0!==o.failed)&&(t+=\".pf-sidebar__dbg-info-square--red\",r=\"Query engine crashed\\n\"+o.failed,a=!0),\"HTTP_RPC\"===(i=void 0===i?y.AppImpl.instance.httpRpc.httpRpcAvailable&&\"USE_HTTP_RPC_IF_AVAILABLE\"===y.AppImpl.instance.httpRpc.newEngineMode?\"HTTP_RPC\":\"WASM\":i)?(t+=\".pf-sidebar__dbg-info-square--green\",n=\"RPC\",r+=\"\\n(Query engine: native accelerator over HTTP+RPC)\"):(n=\"WSM\",r+=\"\\n(Query engine: built-in WASM)\"),e.trace?.engine.numRequestsPending??0);return(0,p.default)(\".pf-sidebar__dbg-info-square\"+t,{title:r},(0,p.default)(\"div\",n),(0,p.default)(\"div\",\"\"+(a?\"FAIL\":o)))}}const I={view(){let e=\"\",t=\"Service Worker: \",r=\"N/A\";const n=y.AppImpl.instance.serviceWorkerController;\"serviceWorker\"in navigator?n.bypassed?(r=\"OFF\",e=\".pf-sidebar__dbg-info-square--red\",t+=\"Bypassed, using live network. Double-click to re-enable\"):n.installing?(r=\"UPD\",e=\".pf-sidebar__dbg-info-square--amber\",t+=\"Installing / updating ...\"):navigator.serviceWorker.controller?(r=\"ON\",e=\".pf-sidebar__dbg-info-square--green\",t+=\"Serving from cache. Ready for offline use\"):(r=\"N/A\",t+=\"Not available, using network\"):(r=\"N/A\",t+=\"not supported by the browser (requires HTTPS)\");return(0,p.default)(\".pf-sidebar__dbg-info-square\"+e,{title:t,ondblclick:async()=>{n.bypassed?n.setBypass(!1):(0,c.showModal)({title:\"Disable service worker?\",content:(0,p.default)(\"div\",(0,p.default)(\"p\",`If you continue the service worker will be disabled until\n                      manually re-enabled.`),(0,p.default)(\"p\",`All future requests will be served from the network and the\n                    UI won't be available offline.`),(0,p.default)(\"p\",`You should do this only if you are debugging the UI\n                    or if you are experiencing caching-related problems.`),(0,p.default)(\"p\",`Disabling will cause a refresh of the UI, the current state\n                    will be lost.`)),buttons:[{text:\"Disable and reload\",primary:!0,action:()=>n.setBypass(!0).then(()=>location.reload())},{text:\"Cancel\"}]})}},(0,p.default)(\"div\",\"SW\"),(0,p.default)(\"div\",r))}};class R{view({attrs:e}){return(0,p.default)(\".pf-sidebar__footer\",(0,p.default)(k,e),(0,p.default)(I),(0,p.default)(\".pf-sidebar__version\",(0,p.default)(\"a\",{href:`https://github.com/google/perfetto/tree/${l.SCM_REVISION}/ui`,title:\"Channel: \"+(0,a.getCurrentChannel)(),target:\"_blank\"},l.VERSION)))}}class N{view(){return(0,p.default)(\".pf-hiring-banner\",(0,p.default)(\"a\",{href:\"http://go/perfetto-open-roles\",target:\"_blank\"},\"We're hiring!\"))}}Oj.Sidebar=class{_redrawWhileAnimating=new t.Animation(()=>s.raf.scheduleFullRedraw());_asyncJobPending=new Set;_sectionExpanded=new Map;constructor({attrs:e}){var a,e=e.trace;{var t;r||(r=!0,(t=y.AppImpl.instance).sidebar.addMenuItem({section:\"support\",text:\"Keyboard shortcuts\",action:f.toggleHelp,icon:\"help\"}),t.sidebar.addMenuItem({section:\"support\",text:\"Documentation\",href:\"https://perfetto.dev/docs\",icon:\"find_in_page\"}),t.sidebar.addMenuItem({section:\"support\",sortOrder:4,text:\"Report a bug\",href:y.AppImpl.instance.isInternalUser?\"https://goto.google.com/perfetto-ui-bug\":\"https://github.com/google/perfetto/issues/new\",icon:\"bug_report\"}))}void 0===e||M.has(e)||(M.add(e),t=!(a=e).traceInfo.downloadable&&\"Cannot download external trace\",(e=a?.traceInfo.traceTitle)&&a.sidebar.addMenuItem({section:\"current_trace\",text:e,href:a.traceInfo.traceUrl,action:()=>(0,v.copyToClipboard)(a.traceInfo.traceUrl),tooltip:\"Click to copy the URL\",cssClass:\"pf-sidebar__trace-file-name\"}),a.sidebar.addMenuItem({section:\"current_trace\",text:\"Show timeline\",href:\"#!/viewer\",icon:\"line_style\"}),y.AppImpl.instance.isInternalUser&&a.sidebar.addMenuItem({section:\"current_trace\",text:\"Share\",action:async()=>(0,h.shareTrace)(a),icon:\"share\"}),a.sidebar.addMenuItem({section:\"current_trace\",text:\"Download\",action:()=>{if((e=a).traceInfo.downloadable){y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Download trace\");var e=e.traceInfo.source,t=[{description:\"Perfetto trace\",accept:{\"*/*\":[\".pftrace\"]}}];if(\"URL\"===e.type){var r=e.url.split(\"/\").slice(-1)[0];(0,u.downloadUrl)({url:e.url,fileName:r})}else if(\"ARRAY_BUFFER\"===e.type){var r=new Blob([e.buffer],{type:\"application/octet-stream\"}),n=e.fileName??\"trace\"+i.TRACE_SUFFIX;(0,u.download)({content:r,fileName:n,filePicker:{types:t}})}else{if(\"FILE\"!==e.type)throw new Error(`Download from ${JSON.stringify(e)} is not supported`);(0,u.download)({content:e.file,fileName:e.file.name,filePicker:{types:t}})}}},icon:\"file_download\",disabled:t}),a.sidebar.addMenuItem({section:\"convert_trace\",text:\"Switch to legacy UI\",action:async()=>{return e=a,y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Open current trace in legacy UI\"),e=await e.getTraceFile(),void await(0,g.openInOldUIWithSizeCheck)(e);var e},icon:\"filter_none\",disabled:t}),a.sidebar.addMenuItem({section:\"convert_trace\",text:\"Convert to .json\",action:async()=>{return e=a,y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Convert to .json\"),e=await e.getTraceFile(),void await(0,m.convertTraceToJsonAndDownload)(e);var e},icon:\"file_download\",disabled:t}),a.traceInfo.hasFtrace&&a.sidebar.addMenuItem({section:\"convert_trace\",text:\"Convert to .systrace\",action:async()=>{return e=a,y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Convert to .systrace\"),e=await e.getTraceFile(),void await(0,m.convertTraceToSystraceAndDownload)(e);var e},icon:\"file_download\",disabled:t}),a.sidebar.addMenuItem({section:\"support\",sortOrder:5,text:()=>(0,o.isMetatracingEnabled)()?\"Finalize metatrace\":\"Record metatrace\",action:()=>n(a.engine),icon:()=>(0,o.isMetatracingEnabled)()?\"download\":\"fiber_smart_record\"}))}view({attrs:e}){const t=y.AppImpl.instance.sidebar;return t.enabled?(0,p.default)(\"nav.pf-sidebar\",{class:t.visible?void 0:\"pf-sidebar--hidden\",ontransitionstart:e=>{e.target===e.currentTarget&&this._redrawWhileAnimating.start(150)},ontransitionend:e=>{e.target===e.currentTarget&&this._redrawWhileAnimating.stop()}},y.AppImpl.instance.isInternalUser&&w.get()?(0,p.default)(N):null,(0,p.default)(\"header.pf-sidebar__channel--\"+(0,a.getCurrentChannel)(),(0,p.default)(`img[src=${(0,S.assetSrc)(\"assets/brand.png\")}].pf-sidebar__brand`),(0,p.default)(C.Button,{icon:\"menu\",className:\"pf-sidebar-button\",onclick:()=>t.toggleVisibility()})),(0,p.default)(\".pf-sidebar__scroll\",(0,p.default)(\".pf-sidebar__scroll-container\",...Object.keys(_.SIDEBAR_SECTIONS).map(e=>this.renderSection(e)),(0,p.default)(R,e)))):null}renderSection(t){var e=_.SIDEBAR_SECTIONS[t],r=y.AppImpl.instance.sidebar.menuItems.valuesAsArray().filter(e=>e.section===t).sort((e,t)=>(e.sortOrder??0)-(t.sortOrder??0)).map(e=>this.renderItem(e));if(0!==r.length){const n=(0,T.getOrCreate)(this._sectionExpanded,t,()=>!0);return(0,p.default)(\"section\"+(n?\".pf-sidebar__section--expanded\":\"\"),(0,p.default)(\".pf-sidebar__section-header\",{onclick:()=>{this._sectionExpanded.set(t,!n)}},(0,p.default)(\"h1\",{title:e.title},e.title),(0,p.default)(\"h2\",e.summary)),(0,p.default)(\".pf-sidebar__section-content\",(0,p.default)(\"ul\",r)))}}renderItem(e){let t=\"#\",r=!1,n=null;let a=d(e.tooltip),i=void 0;const o=\"commandId\"in e?e.commandId:void 0;var s=\"action\"in e?e.action:void 0;let l=d(e.text);const c=d(e.disabled);if(!0===c||\"string\"==typeof c)r=!0,i=()=>\"string\"==typeof c&&alert(c);else if(void 0!==s)i=s;else if(void 0!==o){const u=y.AppImpl.instance.commands;void 0===(s=u.hasCommand(o??\"\")?u.getCommand(o):void 0)?r=!0:(l=void 0!==l?l:s.name,void 0!==s.defaultHotkey&&(a=\"\"+(a??s.name)+` [${(0,E.formatHotkey)(s.defaultHotkey)}]`),i=()=>u.runCommand(o))}return\"href\"in e&&void 0!==e.href&&(t=e.href,n=t.startsWith(\"#\")?null:\"_blank\"),(0,p.default)(\"li\",(0,p.default)(\"a\",{className:(0,b.classNames)(d(e.cssClass),this._asyncJobPending.has(e.id)&&\"pending\"),onclick:i&&this.wrapClickHandler(e.id,i),href:t,target:n,disabled:r,title:a},(0,T.exists)(e.icon)&&(0,p.default)(O.Icon,{className:\"pf-sidebar__button-icon\",icon:d(e.icon)}),l))}wrapClickHandler(t,r){return e=>{e.preventDefault();e=r();e instanceof Promise&&(this._asyncJobPending.has(t)||(this._asyncJobPending.add(t),e.finally(()=>{this._asyncJobPending.delete(t),s.raf.scheduleFullRedraw()})))}}};let r=!1;const M=new WeakSet;async function n(e){return(0,o.isMetatracingEnabled)()?async function(e){y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Finalise metatrace\");var t=(0,o.disableMetatracingAndGetTrace)(),e=await e.stopAndGetMetatrace();if(0!==e.error.length)throw new Error(\"Failed to read metatrace: \"+e.error);(0,u.download)({fileName:\"metatrace\",content:new Blob([e.metatrace,t])})}(e):(t=e,y.AppImpl.instance.analytics.logEvent(\"Trace Actions\",\"Record metatrace\"),void(window.crossOriginIsolated||\"HTTP_RPC\"===t.mode?((0,o.enableMetatracing)(),t.enableMetatrace((0,A.assertExists)((0,o.getEnabledMetatracingCategories)()))):(0,c.showModal)({title:\"Trace processor doesn't have high-precision timers\",content:(0,p.default)(\".pf-modal-pre\",`High-precision timers are not available to WASM trace processor yet.\n\nModern browsers restrict high-precision timers to cross-origin-isolated pages.\nAs Perfetto UI needs to open traces via postMessage, it can't be cross-origin\nisolated until browsers ship support for\n'Cross-origin-opener-policy: restrict-properties'.\n\nDo you still want to record a metatrace?\nNote that events under timer precision (1ms) will dropped.\nAlternatively, connect to a trace_processor_shell --httpd instance.\n`),buttons:[{text:\"YES, record metatrace\",primary:!0,action:()=>{(0,o.enableMetatracing)(),t.enableMetatrace((0,A.assertExists)((0,o.getEnabledMetatracingCategories)()))}},{text:\"NO, cancel\"}]})));var t}function d(e){if(void 0!==e)return e instanceof Function?e():e}}return Oj}var Nj,Mj={};function Pj(){if(!Nj){Nj=1,Object.defineProperty(Mj,\"__esModule\",{value:!0}),Mj.renderStatusBar=function(e){return(0,i.default)(\".pf-statusbar\",e?.statusbar.statusBarItems.map(e=>{var{icon:t,label:r,intent:n,onclick:a}=e.renderItem(),e=e.popupContent?.(),r=(0,i.default)(o.Button,{label:r,icon:t,intent:n,onclick:a,variant:o.ButtonVariant.Filled});return Boolean(e)?(0,i.default)(s.Popup,{position:s.PopupPosition.Top,trigger:r},e):r}))};const i=Jr.__importDefault(xe()),o=je(),s=yi()}return Mj}var Dj,xj={};function Lj(){if(!Dj){Dj=1,Object.defineProperty(xj,\"__esModule\",{value:!0}),xj.taskTracker=xj.TaskTracker=void 0;class e{promisesSeen;promisesRejected;promisesFulfilled;promiseInfo;constructor(){this.promisesSeen=0,this.promisesRejected=0,this.promisesFulfilled=0,this.promiseInfo=new Map}trackPromise(e,t){this.promiseInfo.set(e,{startTimeMs:(new Date).getMilliseconds(),message:t}),this.promisesSeen+=1,e.then(()=>{this.promisesFulfilled+=1}).catch(()=>{this.promisesRejected+=1}).finally(()=>{this.promiseInfo.delete(e)})}hasPendingTasks(){return this.promisesSeen>this.promisesFulfilled+this.promisesRejected}progressMessage(){var e,t=this.promiseInfo.values().next()[\"value\"];return void 0===t?t:(e=(new Date).getMilliseconds(),e=Math.round((e-t.startTimeMs)/1e3),t.message+` (${e}s)`)}}xj.TaskTracker=e,xj.taskTracker=new e}return xj}var Fj,Uj,Bj={};function jj(){if(Uj)return sj;Uj=1,Object.defineProperty(sj,\"__esModule\",{value:!0}),sj.UiMainPerTrace=sj.UiMain=void 0;const i=Jr.__importDefault(xe());var e=Le();const t=_i(),a=Rp(),o=Pe(),r=(Ae(),j()),n=Nc(),s=Jh(),l=function(){if(!oj){oj=1,Object.defineProperty(lj,\"__esModule\",{value:!0}),lj.CookieConsent=void 0;const e=Jr.__importDefault(xe()),t=Jh();lj.CookieConsent=class{showCookieConsent=!0;oninit(){this.showCookieConsent=!0,t.AppImpl.instance.analytics.isEnabled()&&\"true\"!==localStorage.getItem(\"cookieAck\")||(this.showCookieConsent=!1)}view(){if(this.showCookieConsent)return(0,e.default)(\".pf-cookie-consent\",(0,e.default)(\".cookie-text\",`This site uses cookies from Google to deliver its services and to\n          analyze traffic.`),(0,e.default)(\".buttons\",(0,e.default)(\"button\",(0,e.default)(\"a\",{href:\"https://policies.google.com/technologies/cookies\",target:\"_blank\"},\"More details\")),(0,e.default)(\"button\",{onclick:()=>{this.showCookieConsent=!1,localStorage.setItem(\"cookieAck\",\"true\")}},\"OK\")))}}}return lj}();var c=go();const u=jp(),d=(Oe(),je()),p=function(){if(!cj){cj=1,Object.defineProperty(uj,\"__esModule\",{value:!0}),uj.HotkeyContext=void 0;const n=Jr.__importDefault(xe()),a=ed();uj.HotkeyContext=class{hotkeys;view(e){return e.children}oncreate(e){document.addEventListener(\"keydown\",this.onKeyDown),this.hotkeys=e.attrs.hotkeys}onupdate(e){this.hotkeys=e.attrs.hotkeys}onremove(e){document.removeEventListener(\"keydown\",this.onKeyDown),this.hotkeys=void 0}onKeyDown=r=>{r.defaultPrevented||r instanceof KeyboardEvent&&this.hotkeys?.forEach(({callback:e,hotkey:t})=>{(0,a.checkHotkey)(t,r)&&(r.preventDefault(),e(),n.default.redraw())})}}}return uj}(),f=nx(),h=bc(),m=Ke(),g=Ei(),_=Mi(),y=bj(),T=function(){if(!Ej){Ej=1,Object.defineProperty(Sj,\"__esModule\",{value:!0}),Sj.Omnibox=void 0;const p=Jr.__importDefault(xe()),o=be(),t=hn(),f=Me(),r=K(),n=nu(),e=nx(),h=yi(),s=oc();class c{highlightedBefore=!1;view({attrs:e}){const{displayName:t,highlighted:r,rightContent:n,label:a,...i}=e;return(0,p.default)(\"li\",{class:(0,o.classNames)(r&&\"pf-highlighted\"),...i},(0,p.default)(\"span.pf-title\",this.renderTitle(t)),a&&(0,p.default)(s.Chip,{className:\"pf-omnibox__tag\",label:a,rounded:!0}),n)}renderTitle(e){return(0,t.isString)(e)?e:e.map(({matching:e,value:t})=>e?(0,p.default)(\"b\",t):t)}onupdate({attrs:e,dom:t}){this.highlightedBefore!==e.highlighted&&(e.highlighted&&t.scrollIntoView({block:\"nearest\"}),this.highlightedBefore=e.highlighted)}}Sj.Omnibox=class{popupElement;dom;attrs;view({attrs:a}){const{value:i,placeholder:e,extraClasses:t,onInput:r=()=>{},onSubmit:o=()=>{},onGoBack:s=()=>{},inputRef:n=\"omnibox\",options:l,closeOnSubmit:c=!1,rightContent:u,selectedOptionIndex:d=0}=a;return(0,p.default)(h.Popup,{onPopupMount:e=>this.popupElement=e,onPopupUnMount:e=>this.popupElement=void 0,isOpen:(0,f.exists)(l),showArrow:!1,matchWidth:!0,offset:2,trigger:(0,p.default)(\".pf-omnibox\",{class:t},(0,p.default)(\"input\",{spellcheck:!1,ref:n,value:i,placeholder:e,oninput:e=>{r(e.target.value,i)},onkeydown:e=>{var t,r,n;\"Backspace\"===e.key&&\"\"===i?s():\"Escape\"===e.key&&(e.preventDefault(),this.close(a)),l?\"ArrowUp\"===e.key?(e.preventDefault(),this.highlightPreviousOption(a)):\"ArrowDown\"===e.key?(e.preventDefault(),this.highlightNextOption(a)):\"Enter\"===e.key&&(e.preventDefault(),r=l[d])&&(c&&this.close(a),n=e.metaKey||e.ctrlKey,t=e.shiftKey,o(r.key,n,t)):\"Enter\"===e.key&&(e.preventDefault(),c&&this.close(a),r=e.metaKey||e.ctrlKey,n=e.shiftKey,o(i,r,n))}}),u)},l&&this.renderDropdown(a))}renderDropdown(e){var t=e[\"options\"];return t?0===t.length?(0,p.default)(n.EmptyState,{title:\"No matching options...\"}):(0,p.default)(\".pf-omnibox-dropdown\",this.renderOptionsContainer(e,t),this.renderFooter()):null}renderFooter(){return(0,p.default)(\".pf-omnibox-dropdown-footer\",(0,p.default)(\"section\",(0,p.default)(e.KeycapGlyph,{keyValue:\"ArrowUp\"}),(0,p.default)(e.KeycapGlyph,{keyValue:\"ArrowDown\"}),\"to navigate\"),(0,p.default)(\"section\",(0,p.default)(e.KeycapGlyph,{keyValue:\"Enter\"}),\"to use\"),(0,p.default)(\"section\",(0,p.default)(e.KeycapGlyph,{keyValue:\"Escape\"}),\"to dismiss\"))}renderOptionsContainer(e,t){const{onClose:i=()=>{},onSubmit:o=()=>{},closeOnSubmit:s=!1,selectedOptionIndex:l}=e;e=t.map(({displayName:e,key:t,rightContent:r,tag:n},a)=>(0,p.default)(c,{key:t,label:n,displayName:e,highlighted:a===l,onclick:()=>{s&&i(),o(t,!1,!1)},rightContent:r}));return(0,p.default)(\"ul.pf-omnibox-options-container\",e)}oncreate({attrs:e,dom:t}){this.attrs=e,this.dom=t;t=e.closeOnOutsideClick;t&&document.addEventListener(\"mousedown\",this.onMouseDown)}onupdate({attrs:e,dom:t}){this.attrs=e,this.dom=t;t=e.closeOnOutsideClick;t?document.addEventListener(\"mousedown\",this.onMouseDown):document.removeEventListener(\"mousedown\",this.onMouseDown)}onremove(e){this.attrs=void 0,this.dom=void 0,document.removeEventListener(\"mousedown\",this.onMouseDown)}onMouseDown=e=>{if(r.raf.scheduleFullRedraw(),e.target instanceof Node){if(this.popupElement&&this.popupElement.contains(e.target))return;if(this.dom&&this.dom.contains(e.target))return}this.attrs&&this.close(this.attrs)};close(e){var{onClose:e=()=>{}}=e;e()}highlightPreviousOption(e){var{selectedOptionIndex:e=0,onSelectedOptionChanged:t=()=>{}}=e;t(Math.max(0,e-1))}highlightNextOption(e){var{selectedOptionIndex:e=0,onSelectedOptionChanged:t=()=>{},options:r=[]}=e,r=r.length-1;t(Math.min(r,e+1))}}}return Sj}(),v=Rj(),b=Pj(),E=Lj(),S=function(){if(!Fj){Fj=1,Object.defineProperty(Bj,\"__esModule\",{value:!0}),Bj.Topbar=void 0;const r=Jr.__importDefault(xe()),n=yi(),a=Pe(),i=jp(),o=Jh(),s=be(),l=je(),c=Xl(),u=Be();class d{tracePopupErrorDismissed=!1;view({attrs:e}){e=e.trace;if(!o.AppImpl.instance.embeddedMode){var t=o.AppImpl.instance.omnibox.mode,e=e.traceInfo.importErrors+e.loadingErrors.length;if(0!==e&&t!==i.OmniboxMode.Command)return t=Boolean(e)?e+\" import or data loss errors detected.\":\"Metric error detected.\",(0,r.default)(\".pf-topbar__error-box\",(0,r.default)(n.Popup,{trigger:(0,r.default)(\"span\"),isOpen:!this.tracePopupErrorDismissed,position:n.PopupPosition.Left,onChange:e=>{(0,a.assertFalse)(e),this.tracePopupErrorDismissed=!0}},(0,r.default)(\".pf-topbar__error-popup\",\"Data-loss/import error. Click for more info.\")),(0,r.default)(l.Button,{icon:\"announcement\",title:t+\" Click for more info.\",intent:u.Intent.Danger,onclick:()=>{c.Router.navigate(\"#!/info\")}}))}}}Bj.Topbar=class{view({attrs:e}){var{omnibox:e,trace:t}=e;return(0,r.default)(\".pf-topbar\",{className:(0,s.classNames)(!o.AppImpl.instance.sidebar.visible&&\"pf-topbar--hide-sidebar\")},e,t&&(0,r.default)(d,{trace:t}))}}}return Bj}(),A=c.featureFlags.register({id:\"Enable status bar\",description:\"Enable status bar at the bottom of the window\",defaultValue:!0}),O=\"omnibox\";sj.UiMain=class{oncreate({dom:e}){(0,_.initCssConstants)(e)}view(){var e=s.AppImpl.instance.trace?.engine.engineId??\"\";return[(0,i.default)(C,{key:e})]}};class C{trash=new e.DisposableStack;omniboxInputEl;recentCommands=[];trace;constructor(){const t=s.AppImpl.instance;var e=t.trace;this.trace=e,[{id:\"dev.perfetto.OpenCommandPalette\",name:\"Open command palette\",callback:()=>t.omnibox.setMode(u.OmniboxMode.Command),defaultHotkey:\"!Mod+Shift+P\"},{id:\"dev.perfetto.ShowHelp\",name:\"Show help\",callback:()=>(0,y.toggleHelp)(),defaultHotkey:\"?\"}].forEach(e=>{this.trash.use(t.commands.registerCommand(e))}),void 0!==e&&(document.title=`${e.traceInfo.traceTitle||\"Trace\"} - Perfetto UI`,this.maybeShowJsonWarning())}renderOmnibox(){var e=s.AppImpl.instance.omnibox,t=e.mode,e=e.statusMessage;return void 0!==e?(0,i.default)(\".pf-omnibox.pf-omnibox--message-mode\",(0,i.default)(\"input[readonly][disabled][ref=omnibox]\",{value:\"\",placeholder:e})):t===u.OmniboxMode.Command?this.renderCommandOmnibox():t===u.OmniboxMode.Prompt?this.renderPromptOmnibox():t===u.OmniboxMode.Query?this.renderQueryOmnibox():t===u.OmniboxMode.Search?this.renderSearchOmnibox():void(0,o.assertUnreachable)(t)}renderPromptOmnibox(){const r=s.AppImpl.instance.omnibox;var e,t=(0,o.assertExists)(r.pendingPrompt);let n=void 0;return t.options&&(e=new a.FuzzyFinder(t.options,({displayName:e})=>e).find(r.text),n=e.map(e=>({key:e.item.key,displayName:e.segments}))),(0,i.default)(T.Omnibox,{value:r.text,placeholder:t.text,inputRef:O,extraClasses:\"pf-omnibox--prompt-mode\",closeOnOutsideClick:!0,options:n,selectedOptionIndex:r.selectionIndex,onSelectedOptionChanged:e=>{r.setSelectionIndex(e)},onInput:e=>{r.setText(e),r.setSelectionIndex(0)},onSubmit:(e,t)=>{r.resolvePrompt(e)},onClose:()=>{r.rejectPrompt()}})}renderCommandOmnibox(){const{commands:t,omnibox:r}=s.AppImpl.instance;var e=t.fuzzyFilterCommands(r.text).map(t=>({recentsIndex:this.recentCommands.findIndex(e=>e===t.id),cmd:t})).sort((e,t)=>t.recentsIndex===e.recentsIndex?0:t.recentsIndex-e.recentsIndex).map(({recentsIndex:e,cmd:t})=>{var{segments:t,id:r,defaultHotkey:n}=t;return{key:r,displayName:t,tag:-1!==e?\"recently used\":void 0,rightContent:n&&(0,i.default)(f.HotkeyGlyphs,{hotkey:n})}});return(0,i.default)(T.Omnibox,{value:r.text,placeholder:\"Filter commands...\",inputRef:O,extraClasses:\"pf-omnibox--command-mode\",options:e,closeOnSubmit:!0,closeOnOutsideClick:!0,selectedOptionIndex:r.selectionIndex,onSelectedOptionChanged:e=>{r.setSelectionIndex(e)},onInput:e=>{r.setText(e),r.setSelectionIndex(0)},onClose:()=>{this.omniboxInputEl&&this.omniboxInputEl.blur(),r.reset()},onSubmit:e=>{this.addRecentCommand(e),t.runCommand(e)},onGoBack:()=>{r.reset()}})}addRecentCommand(t){for(this.recentCommands=this.recentCommands.filter(e=>e!==t),this.recentCommands.push(t);6<this.recentCommands.length;)this.recentCommands.shift()}renderQueryOmnibox(){return(0,i.default)(T.Omnibox,{value:s.AppImpl.instance.omnibox.text,placeholder:\"e.g. select * from sched left join thread using(utid) limit 10\",inputRef:O,extraClasses:\"pf-omnibox--query-mode\",onInput:e=>{s.AppImpl.instance.omnibox.setText(e)},onSubmit:(e,t)=>{e={query:(0,r.undoCommonChatAppReplacements)(e),title:t?\"Pinned query\":\"Omnibox query\"},t=t?void 0:\"omnibox_query\";void 0!==this.trace&&(0,n.addQueryResultsTab)(this.trace,e,t)},onClose:()=>{s.AppImpl.instance.omnibox.setText(\"\"),this.omniboxInputEl&&this.omniboxInputEl.blur(),s.AppImpl.instance.omnibox.reset()},onGoBack:()=>{s.AppImpl.instance.omnibox.reset()}})}renderSearchOmnibox(){return(0,i.default)(T.Omnibox,{value:s.AppImpl.instance.omnibox.text,placeholder:\"Search or type '>' for commands or ':' for SQL mode\",inputRef:O,onInput:(e,t)=>{\">\"===e?s.AppImpl.instance.omnibox.setMode(u.OmniboxMode.Command):\":\"===e?s.AppImpl.instance.omnibox.setMode(u.OmniboxMode.Query):(s.AppImpl.instance.omnibox.setText(e),void 0!==this.trace&&(4<=e.length?this.trace.search.search(e):this.trace.search.reset()))},onClose:()=>{this.omniboxInputEl&&this.omniboxInputEl.blur()},onSubmit:(e,t,r)=>{void 0!==this.trace&&(this.trace.search.search(e),r?this.trace.search.stepBackwards():this.trace.search.stepForward(),this.omniboxInputEl)&&this.omniboxInputEl.blur()},rightContent:this.renderStepThrough()})}renderStepThrough(){var e=[],t=this.trace?.search.searchResults;if(this.trace?.search.searchInProgress)e.push((0,i.default)(\".pf-omnibox__stepthrough-current\",(0,i.default)(g.Spinner)));else if(void 0!==t){const n=(0,o.assertExists)(this.trace).search;var r=n.resultIndex,t=t.totalResults??0;e.push((0,i.default)(\".pf-omnibox__stepthrough-current\",0===t?\"0 / 0\":r+1+\" / \"+t),(0,i.default)(d.Button,{onclick:()=>n.stepBackwards(),icon:\"keyboard_arrow_left\"}),(0,i.default)(d.Button,{onclick:()=>n.stepForward(),icon:\"keyboard_arrow_right\"}))}return(0,i.default)(\".pf-omnibox__stepthrough\",e)}oncreate(e){this.updateOmniboxInputRef(e.dom),this.maybeFocusOmnibar()}view(){const e=s.AppImpl.instance;var t=[];for(const{id:n,defaultHotkey:a}of e.commands.commands)a&&t.push({callback:()=>e.commands.runCommand(n),hotkey:a});var r=s.AppImpl.instance.isLoadingTrace||0<(this.trace?.engine.numRequestsPending??0)||E.taskTracker.hasPendingTasks();return(0,i.default)(p.HotkeyContext,{hotkeys:t},(0,i.default)(\"main.pf-ui-main\",(0,i.default)(v.Sidebar,{trace:this.trace}),(0,i.default)(S.Topbar,{omnibox:this.renderOmnibox(),trace:this.trace}),(0,i.default)(h.LinearProgress,{className:\"pf-ui-main__loading\",state:r?\"indeterminate\":\"none\"}),(0,i.default)(\".pf-ui-main__page-container\",e.pages.renderPageForCurrentRoute()),(0,i.default)(l.CookieConsent),(0,m.maybeRenderFullscreenModalDialog)(),A.get()&&(0,b.renderStatusBar)(e.trace),e.perfDebugging.renderPerfStats()))}onupdate({dom:e}){this.updateOmniboxInputRef(e),this.maybeFocusOmnibar()}onremove(e){this.omniboxInputEl=void 0,this.trash.dispose()}updateOmniboxInputRef(e){e=(0,t.findRef)(e,O);e&&e instanceof HTMLInputElement&&(this.omniboxInputEl=e)}maybeFocusOmnibar(){var e;s.AppImpl.instance.omnibox.focusOmniboxNextRender&&((e=this.omniboxInputEl)&&(e.focus(),void 0===s.AppImpl.instance.omnibox.pendingCursorPlacement?e.select():e.setSelectionRange(s.AppImpl.instance.omnibox.pendingCursorPlacement,s.AppImpl.instance.omnibox.pendingCursorPlacement)),s.AppImpl.instance.omnibox.clearFocusFlag())}async maybeShowJsonWarning(){}}return sj.UiMainPerTrace=C,sj}var Hj,Gj={};var Vj,qj={};var zj,Wj={};function $j(){if(!zj){zj=1,Object.defineProperty(Wj,\"__esModule\",{value:!0}),Wj.tryLoadIsInternalUserScript=async function(e){(function(t){window.globals={get isInternalUser(){return t.isInternalUser},set isInternalUser(e){t.isInternalUser=e},get extraSqlPackages(){return t.extraSqlPackages},get extraMacros(){return t.extraMacros},shutdown(){r.raf.shutdown()}}})(e),await new Promise(e=>{var t=document.createElement(\"script\");t.src=a,t.async=!0,t.onerror=()=>e(),t.onload=()=>e(),document.head.append(t),setTimeout(()=>e(),n)})};const r=K(),n=5e3,a=\"https://storage.cloud.google.com/perfetto-ui-internal/is-internal-user/is_internal_user.js\"}return Wj}var Kj,Yj={};var Jj,Qj={};function Zj(){if(!Jj){Jj=1,Object.defineProperty(Qj,\"__esModule\",{value:!0}),Qj.isTrustedOrigin=f,Qj.postMessageHandler=function e(t){if(m(t))return;if(t.origin.startsWith(\"vscode-webview://\"))return A.AppImpl.instance.settings.get(\"inVscode\")?.set(!0),void t.source?.postMessage({type:\"viztracer\"},{targetOrigin:t.origin});if(\"https://tagassistant.google.com\"===t.origin)return;if(\"complete\"!==document.readyState)return void console.error(\"Ignoring message - document not ready yet.\");const r=t.source===window.opener;const n=t.source===window.parent;const a=t.source.opener===window;if(null===t.source||!(r||n||a))return;if(!(\"data\"in t))throw new Error(\"Incoming message has no data property\");if(\"PING\"===t.data){const p=t.source;return void p.postMessage(\"PONG\",\"*\")}if(\"SHOW-HELP\"===t.data)return void(0,S.toggleHelp)();if(\"RELOAD-CSS-CONSTANTS\"===t.data)return void(0,E.initCssConstants)();let i;if(y(t.data))return void _(i=t.data.perfetto);let o;let s=!1;if(T(t.data))(o=g(t.data.perfetto)).keepApiOpen&&(s=!0);else{if(!(t.data instanceof ArrayBuffer))return console.warn(\"Unknown postMessage() event received. If you are trying to open a trace via postMessage(), this is a bug in your code. If not, this could be due to some Chrome extension.\"),void console.log(\"origin:\",t.origin,\"data:\",t.data);o={title:\"External trace\",buffer:t.data}}if(0===o.buffer.byteLength)throw new Error(\"Incoming message trace buffer is empty\");s||window.removeEventListener(\"message\",e);const l=async()=>{let e;if(o.appStateHash){const t=`https://storage.googleapis.com/${C.BUCKET_NAME}/`+o.appStateHash,r=await fetch(t);if(!r.ok)throw new Error(`Failed to fetch app state from ${t}: `+r.status+\" \"+r.statusText);const n=(await r.json()).appState,a=(0,O.parseAppState)(n);a.ok&&(e=a.value)}A.AppImpl.instance.openTraceFromBuffer(o,e)};const c=()=>{h(t.origin),l()};if(f(t.origin))return void l();let u=t.origin;let d=!1;\"null\"===u&&(u=\"An unknown origin\",d=!0);(0,b.showModal)({title:\"Open trace?\",content:(0,v.default)(\"div\",(0,v.default)(\"div\",u+\" is trying to open a trace file.\"),(0,v.default)(\"div\",\"Do you trust the origin and want to proceed?\")),buttons:[{text:\"No\",primary:!0},{text:\"Yes\",primary:!1,action:()=>{l()}}].concat(d?[]:{text:\"Always trust\",primary:!1,action:c})})};const v=Jr.__importDefault(xe()),i=Fe(),b=Ke(),E=Mi(),S=bj(),A=Jh(),O=Fh(),C=iP(),n=\"trustedOrigins\",o=20;function f(e){return e===window.origin||!(\"null\"===e||![\"https://chrometto.googleplex.com\",\"https://uma.googleplex.com\",\"https://android-build.googleplex.com\"].includes(e)&&!(function(e){var t=window.localStorage.getItem(n);if(null===t)return;try{return JSON.parse(t).includes(e)}catch{}}(e)||(e=new URL(e).hostname).endsWith(\".corp.google.com\")||e.endsWith(\".c.googlers.com\")||e.endsWith(\".proxy.googlers.com\")||\"localhost\"===e||\"127.0.0.1\"===e||\"[::1]\"===e))}function h(e){var t,r=window.localStorage.getItem(n);try{(t=JSON.parse(r??\"[]\")).includes(e)||(t.push(e),window.localStorage.setItem(n,JSON.stringify(t)))}catch(e){console.warn(\"unable to save trusted origins to localStorage\",e)}}function m(e){return!0===e.data.perfettoIgnore}function g(e){var t={title:r(e.title),buffer:e.buffer,keepApiOpen:e.keepApiOpen,localOnly:e.localOnly??!0,appStateHash:e.appStateHash,pluginArgs:e.pluginArgs};return void 0!==e.url&&(t.url=r(e.url)),t}function r(e){return e.replace(/[^A-Za-z0-9.\\-_#:/?=&;%+$ ]/g,\" \")}async function _(e,t){var r,n=A.AppImpl.instance,a=n.trace;a&&!n.isLoadingTrace?(n=i.Time.fromSeconds(e.timeStart),r=i.Time.fromSeconds(e.timeEnd),a.scrollTo({time:{start:n,end:r,viewPercentage:e.viewPercentage}})):(t=void 0===t?0:t)>o?console.warn(\"Could not scroll to time range. Trace viewer not ready.\"):setTimeout(_,200,e,t+1)}function y(e){return void 0!==e.perfetto&&(void 0!==e.perfetto.timeStart||void 0!==e.perfetto.timeEnd)}function T(e){return void 0!==e.perfetto&&void 0!==e.perfetto.buffer&&void 0!==e.perfetto.title}}return Qj}var Xj,e8={};function t8(){if(!Xj){Xj=1,Object.defineProperty(e8,\"__esModule\",{value:!0}),e8.checkHttpRpcConnection=async function(){var e=await f.HttpRpcEngine.checkConnection();if(m.AppImpl.instance.httpRpc.httpRpcAvailable=e.connected,e.connected){var t=(0,d.assertExists)(e.status);if(\"\"!==t.versionCode&&t.versionCode!==p.VERSION){e=await async function(t){if(\"\"===t)return;const e=new AbortController,r=setTimeout(()=>e.abort(),1e3),n=c(t);let a;try{a=await fetch(n,{signal:e.signal})}catch(e){return void console.error(`No UI version for ${t} at ${n}. `+`This is an error if ${t} is a released Perfetto version`)}finally{clearTimeout(r)}if(a.ok)return n}(t.versionCode);if(void 0!==e){var r=await async function(e,t){let r=o.Dismissed;return await(0,h.showModal)({title:\"Version mismatch\",content:(0,u.default)(\".pf-modal-pre\",function(e){return`The Trace Processor instance on ${f.HttpRpcEngine.hostAndPort} is a different build from the UI.\n\nThis may cause problems. Where possible it is better to use the matched version of the UI.\nYou can do this by clicking the button below.\n\nUI version code: ${p.VERSION}\nUI RPC API: ${g}\n\nTrace processor version: ${e.humanReadableVersion}\nTrace processor version code: ${e.versionCode}\nTrace processor RPC API: ${e.apiVersion}\n`}(e)),buttons:[{primary:!0,text:\"Open \"+t,action:()=>{r=o.UseMatchingUi}},{text:\"Use builtin Wasm\",action:()=>{r=o.UseWasm}},{text:\"Use mismatched version regardless (might crash)\",action:()=>{r=o.UseMismatchedRpc}}]}),r}(t,e);switch(r){case o.Dismissed:case o.UseMatchingUi:return void function(e){var t=c(e);if(void 0===t)throw new Error(`No URL known for UI version ${e}.`);window.location.replace(t)}(t.versionCode);case o.UseMismatchedRpc:break;case o.UseWasm:return void i();default:throw new Error(\"Unsupported result \"+r)}}}if(t.apiVersion<g){var n=await async function(e){let t=s.Dismissed;return await(0,h.showModal)({title:\"Incompatible RPC version\",content:(0,u.default)(\".pf-modal-pre\",function(e){return`The Trace Processor instance on ${f.HttpRpcEngine.hostAndPort} is too old.\n\nThis UI requires TraceProcessor features that are not present in the\nTrace Processor native accelerator you are currently running.\nIf you continue, this is almost surely going to cause UI failures.\n\nPlease update your local Trace Processor binary:\n\ncurl -LO https://get.perfetto.dev/trace_processor\nchmod +x ./trace_processor\n./trace_processor --httpd\n\nUI version code: ${p.VERSION}\nUI RPC API: ${g}\n\nTrace processor version: ${e.humanReadableVersion}\nTrace processor version code: ${e.versionCode}\nTrace processor RPC API: ${e.apiVersion}\n`}(e)),buttons:[{text:\"Use builtin Wasm\",primary:!0,action:()=>{t=s.UseWasm}},{text:\"Use old version regardless (will crash)\",action:()=>{t=s.UseIncompatibleRpc}}]}),t}(t);switch(n){case s.Dismissed:case s.UseWasm:return void i();case s.UseIncompatibleRpc:break;default:throw new Error(\"Unsupported result \"+n)}}if(t.loadedTraceName){var a=await async function(e){let t=l.Dismissed;return await(0,h.showModal)({title:\"Use trace processor native acceleration?\",content:(0,u.default)(\".pf-modal-pre\",function(e){return`Trace Processor detected on ${f.HttpRpcEngine.hostAndPort} with:\n${e.loadedTraceName}\n\nYES, use loaded trace:\nWill load from the current state of Trace Processor. If you did run\ntrace_processor_shell --httpd file.pftrace this is likely what you want.\n\nYES, but reset state:\nUse this if you want to open another trace but still use the\naccelerator. This is the equivalent of killing and restarting\ntrace_processor_shell --httpd.\n\nNO, Use builtin WASM:\nWill not use the accelerator in this tab.\n\nUsing the native accelerator has some minor caveats:\n- Only one tab can be using the accelerator.\n- Sharing, downloading and conversion-to-legacy aren't supported.\n`}(e)),buttons:[{text:\"YES, use loaded trace\",primary:!0,action:()=>{t=l.UseRpcWithPreloadedTrace}},{text:\"YES, but reset state\",action:()=>{t=l.UseRpc}},{text:\"NO, Use builtin WASM\",action:()=>{t=l.UseWasm}}]}),t}(t);switch(a){case l.Dismissed:case l.UseRpcWithPreloadedTrace:return void m.AppImpl.instance.openTraceFromHttpRpc();case l.UseRpc:return;case l.UseWasm:return void i();default:throw new Error(\"Unsupported result \"+a)}}function i(){m.AppImpl.instance.httpRpc.newEngineMode=\"FORCE_BUILTIN_WASM\"}}};var e=Jr;const u=e.__importDefault(xe());var o,s,l,e=e.__importDefault(dh());const d=Pe(),p=Yt(),f=bh(),h=Ke(),m=Jh(),g=e.default.TraceProcessorApiVersion.TRACE_PROCESSOR_CURRENT_API_VERSION;function c(e){return window.location.origin+`/${e}/`}(e=o=o||{}).UseMatchingUi=\"useMatchingUi\",e.UseWasm=\"useWasm\",e.UseMismatchedRpc=\"useMismatchedRpc\",e.Dismissed=\"dismissed\",(e=s=s||{}).UseWasm=\"useWasm\",e.UseIncompatibleRpc=\"useIncompatibleRpc\",e.Dismissed=\"dismissed\",(e=l=l||{}).UseRpcWithPreloadedTrace=\"useRpcWithPreloadedTrace\",e.UseRpc=\"useRpc\",e.UseWasm=\"useWasm\",e.Dismissed=\"dismissed\"}return e8}var r8,n8,a8={},i8={};function o8(){if(!r8){r8=1,Object.defineProperty(i8,\"__esModule\",{value:!0}),i8.loadAndroidBugToolInfo=function(){const r=(0,t.defer)();return chrome.runtime.sendMessage(a,{action:n.CONVERT_OBJECT_URL},async e=>{if(e.action!==n.CONVERT_OBJECT_URL_RESPONSE)throw new Error(`Received unhandled response code (${e.action}) from extension.`);if(!(0<e.attachments?.length))throw new Error(\"Got no attachements from extension\");var t=e.attachments.map(async e=>{var t=await(await fetch(e.objectUrl)).blob();return new File([t],e.name)}),t=await Promise.all(t);r.resolve({issueId:e.issueId,issueTitle:e.issueTitle,file:t[0]})}),r};const t=Ja();var n,e;(e=n=n||{})[e.UNKNOWN=0]=\"UNKNOWN\",e[e.CONVERT_OBJECT_URL=1]=\"CONVERT_OBJECT_URL\",e[e.CONVERT_OBJECT_URL_RESPONSE=2]=\"CONVERT_OBJECT_URL_RESPONSE\";const a=\"mbbaofdfoekifkfpgehgffcpagbbjkmj\"}return i8}function s8(){if(!n8){n8=1,Object.defineProperty(a8,\"__esModule\",{value:!0}),a8.maybeOpenTraceFromRoute=function(e){if(e.args.s)(0,a.loadPermalink)(e.args.s);else if((t=e.args.url)&&t!==function(){var e=d.AppImpl.instance.trace?.traceInfo.source;if(e&&\"URL\"===e.type)return e.url;return}()){var t,r=[\"127.0.0.1\",\"localhost\"].includes(new URL(t).hostname);if(r){const n=t.split(\"/\").pop()??\"local_trace.pftrace\";r=fetch(t).then(e=>e.blob()).then(e=>d.AppImpl.instance.openTraceFromFile(new File([e],n))).catch(e=>alert(\"Could not load local trace \"+e));u.taskTracker.trackPromise(r,\"Downloading local trace\")}else d.AppImpl.instance.openTraceFromUrl(t)}else e.args.openFromAndroidBugTool?(r=\"Loading trace from ABT extension\",d.AppImpl.instance.omnibox.showStatusMessage(r),t=(0,i.loadAndroidBugToolInfo)(),u.taskTracker.trackPromise(t,r),t.then(e=>d.AppImpl.instance.openTraceFromFile(e.file)).catch(e=>console.error(e))):e.args.p&&\"/record\"===e.page?c.Router.navigate(\"#!/record/\"+e.args.p):e.args.local_cache_key?async function(t){const r=d.AppImpl.instance.trace?.traceInfo,n=r?.cached?r.uuid:\"\";if(t!==n&&\"\"!==t&&(void 0===r||\"ARRAY_BUFFER\"!==r.source.type||r.source.uuid!==t)){const i=await(0,s.tryGetTrace)(t);var a=()=>c.Router.navigate(\"#!/viewer?local_cache_key=\"+n);if(i)if(void 0===r)d.AppImpl.instance.openTraceFromBuffer(i);else{let e=!1;await(0,l.showModal)({title:\"You are about to load a different trace and reset the UI state\",content:(0,o.default)(\"div\",(0,o.default)(\"p\",\"You are seeing this because you either pasted a URL with a different ?local_cache_key=xxx argument or because you hit the history back/fwd button and reached a different trace.\"),(0,o.default)(\"p\",\"If you continue another trace will be loaded and the UI state will be cleared.\"),(0,o.default)(\"pre\",`Old trace: ${void 0!==r?n:\"<no trace>\"}\n`+\"New trace: \"+t)),buttons:[{text:\"Continue\",id:\"trace_id_open\",primary:!0,action:()=>{e=!0,d.AppImpl.instance.openTraceFromBuffer(i)}},{text:\"Cancel\"}]}),e||a()}else(0,l.showModal)({title:\"Could not find the trace in the cache storage\",content:(0,o.default)(\"div\",(0,o.default)(\"p\",\"You are trying to load a cached trace by setting the ?local_cache_key argument in the URL.\"),(0,o.default)(\"p\",\"Unfortunately the trace wasn't in the cache storage.\"),(0,o.default)(\"p\",\"This can happen if a tab was discarded and wasn't opened for too long, or if you just mis-pasted the URL.\"),(0,o.default)(\"pre\",\"Trace UUID: \"+t))}),a()}}(e.args.local_cache_key):e.page||fetch(\"/vizviewer_info\").then(e=>200==e.status?`http://${window.location.host}/localtrace`:\"http://127.0.0.1:9001/localtrace\").then(e=>{d.AppImpl.instance.openTraceFromUrl(e),d.AppImpl.instance.sidebar.visible&&d.AppImpl.instance.sidebar.toggleVisibility()}).catch(e=>{console.log(e)})};const o=Jr.__importDefault(xe()),s=ah(),l=Ke(),a=aB(),i=o8(),c=Xl(),u=Lj(),d=Jh()}return a8}var l8,c8={},u8={};function d8(){if(!l8){l8=1,Object.defineProperty(u8,\"__esModule\",{value:!0}),u8.TimeScale=void 0;const r=bp();u8.TimeScale=class{timeSpan;pxBounds;timePerPx;constructor(e,t){this.pxBounds=t,this.timeSpan=e;t=t.right-t.left;this.timePerPx=t<=0?1:e.duration/t}timeToPx(e){e=Number(e-this.timeSpan.start.integral)-this.timeSpan.start.fractional;return this.pxBounds.left+e/this.timePerPx}hpTimeToPx(e){e=e.sub(this.timeSpan.start).toNumber();return this.pxBounds.left+e/this.timePerPx}pxToHpTime(e){e=(e-this.pxBounds.left)*this.timePerPx;return this.timeSpan.start.addNumber(e)}durationToPx(e){return Number(e)/this.timePerPx}pxToDuration(e){return e*this.timePerPx}pxSpanToHpTimeSpan(e){var t=this.pxToHpTime(e.left),e=this.pxToDuration(e.right-e.left);return new r.HighPrecisionTimeSpan(t,e)}hpTimeSpanToPxSpan(e){return{left:this.hpTimeToPx(e.start),right:this.hpTimeToPx(e.end)}}}}return u8}var p8,f8={},h8={};function m8(){if(!p8){p8=1,Object.defineProperty(h8,\"__esModule\",{value:!0}),h8.ZonedInteractionHandler=void 0;const t=Hi();var e=Le();const n=_i(),i=gi(),r=af();class a{target;trash=new e.DisposableStack;currentMousePosition;zones=[];currentGesture;shiftHeld=!1;constructor(e){this.target=e,this.bindEvent(this.target,\"mousedown\",this.onMouseDown.bind(this)),this.bindEvent(document,\"mousemove\",this.onMouseMove.bind(this)),this.bindEvent(document,\"mouseup\",this.onMouseUp.bind(this)),this.bindEvent(document,\"keydown\",this.onKeyDown.bind(this)),this.bindEvent(document,\"keyup\",this.onKeyUp.bind(this)),this.bindEvent(this.target,\"wheel\",this.handleWheel.bind(this)),this.trash.use((0,r.convertTouchIntoMouseEvents)(this.target,[\"down-up-move\",\"pan-x\",\"pinch-zoom-as-ctrl-wheel\"]))}[Symbol.dispose](){this.trash.dispose()}update(e){this.zones=(0,t.removeFalsyValues)(e),this.updateCursor()}bindEvent(e,t,r){this.trash.use((0,n.bindEventListener)(e,t,r))}onMouseDown(e){const t=new i.Vector2D({x:e.clientX,y:e.clientY}).sub(this.target.getBoundingClientRect());e=this.findZone(e=>(e.drag||e.onClick)&&this.hitTestZone(e,t));e&&(this.currentGesture={zoneId:e.id,startingMousePosition:t,currentMousePosition:t,previouslyNotifiedPosition:t},this.updateCursor())}onMouseMove(e){var t,r,e=new i.Vector2D({x:e.clientX,y:e.clientY}).sub(this.target.getBoundingClientRect()),n=(this.currentMousePosition=e,this.updateCursor(),this.currentGesture);n&&(n.currentMousePosition=e,t=n.startingMousePosition.sub(e),r=this.findZoneById(n.zoneId)?.drag)&&t.manhattanDistance>=(r?.minDistance??0)&&(r.onDrag?.({dragCurrent:e,dragStart:n.startingMousePosition,dragDelta:t,deltaSinceLastEvent:e.sub(n.previouslyNotifiedPosition)},this.target),n.previouslyNotifiedPosition=e)}onMouseUp(e){var t,r,n=new i.Vector2D({x:e.clientX,y:e.clientY}).sub(this.target.getBoundingClientRect()),a=this.currentGesture;a&&(t=a.startingMousePosition.sub(n),(r=this.findZoneById(a.zoneId))&&(r.drag&&t.manhattanDistance>=(r.drag?.minDistance??0)?this.handleDrag(this.target,a,n,e,r.drag):this.hitTestZone(r,n)&&this.handleClick(this.target,e)),this.currentGesture=void 0,this.updateCursor())}onKeyDown(e){this.shiftHeld=e.shiftKey,this.updateCursor()}onKeyUp(e){this.shiftHeld=e.shiftKey,this.updateCursor()}handleWheel(e){const t=new i.Vector2D({x:e.clientX,y:e.clientY}).sub(this.target.getBoundingClientRect());this.findZone(e=>e.onWheel&&this.hitTestZone(e,t))?.onWheel?.({position:t,deltaX:e.deltaX,deltaY:e.deltaY,ctrlKey:e.ctrlKey})}handleDrag(e,t,r,n,a){t.currentMousePosition=r;t={dragStart:t.startingMousePosition,dragCurrent:r,dragDelta:new i.Vector2D({x:n.movementX,y:n.movementY}),deltaSinceLastEvent:new i.Vector2D({x:n.movementX,y:n.movementY})};a.onDragEnd?.(t,e)}handleClick(e,t){const r=new i.Vector2D({x:t.clientX,y:t.clientY}).sub(e.getBoundingClientRect());this.findZone(e=>e.onClick&&this.hitTestZone(e,r))?.onClick?.({position:r})}updateCursor(){var e=this.currentGesture;if(e){var t=e.currentMousePosition.sub(e.startingMousePosition),e=this.findZoneById(e.zoneId)?.drag;if(e&&e.cursorWhileDragging&&t.manhattanDistance>=(e.minDistance??0))return void(this.target.style.cursor=e.cursorWhileDragging)}const r=this.currentMousePosition;t=r&&this.findZone(e=>e.cursor&&this.hitTestZone(e,r));this.target.style.cursor=t?.cursor??\"default\"}findZone(e){for(const t of this.zones)if(e(t))return t}findZoneById(e){for(const t of this.zones)if(t.id===e)return t}hitTestZone(e,t){return i.Rect2D.fromPointAndSize(e.area).containsPoint(t)&&(!e.keyModifier||this.shiftHeld)}}h8.ZonedInteractionHandler=a}return h8}var g8,_8,y8={};function T8(){if(!g8){g8=1;{var t=y8;Object.defineProperty(t,\"__esModule\",{value:!0}),t.MIN_PX_PER_STEP=t.TickType=void 0,t.getPattern=c,t.getMaxMajorTicks=function(e){return Math.max(1,Math.floor(e/t.MIN_PX_PER_STEP))},t.generateTicks=function*(t,e,r=d.Time.ZERO){(0,u.assertTrue)(0n<t.duration,\"timeSpan.duration cannot be lte 0\"),(0,u.assertTrue)(0<e,\"maxMajorTicks cannot be lte 0\"),t=t.translate(-r);var e=BigInt(Math.floor(Number(t.duration)/e)),[e,n]=c(e),a=function(t){var e=Array.from(t);return e.map(e=>{switch(e){case\"|\":return l.MAJOR;case\":\":return l.MEDIUM;case\".\":return l.MINOR;default:throw Error(`Invalid char \"${e}\" in pattern \"${t}\"`)}})}(n),i=e/BigInt(a.length),n=d.Time.quantFloor(t.start,e),o=t.end;let s=0;for(let e=n;e<o;e=d.Time.add(e,i),s++)e>=t.start&&(s%=a.length,yield{type:a[s],time:d.Time.add(e,r)})};const u=Pe(),d=Fe();var l,e=1000n,r=1000n*e,n=1000n*r,a=60n*n,i=60n*a,o=24n*i;const s=[[1n,\"|\"],[2n,\"|:\"],[5n,\"|....\"],[10n,\"|....:....\"],[20n,\"|.:.\"],[50n,\"|....\"],[100n,\"|....:....\"],[200n,\"|.:.\"],[500n,\"|....\"],[1n*e,\"|....:....\"],[2n*e,\"|.:.\"],[5n*e,\"|....\"],[10n*e,\"|....:....\"],[20n*e,\"|.:.\"],[50n*e,\"|....\"],[100n*e,\"|....:....\"],[200n*e,\"|.:.\"],[500n*e,\"|....\"],[1n*r,\"|....:....\"],[2n*r,\"|.:.\"],[5n*r,\"|....\"],[10n*r,\"|....:....\"],[20n*r,\"|.:.\"],[50n*r,\"|....\"],[100n*r,\"|....:....\"],[200n*r,\"|.:.\"],[500n*r,\"|....\"],[1n*n,\"|....:....\"],[2n*n,\"|.:.\"],[5n*n,\"|....\"],[10n*n,\"|....:....\"],[30n*n,\"|.:.:.\"],[1n*a,\"|.....\"],[2n*a,\"|.:.\"],[5n*a,\"|.....\"],[10n*a,\"|....:....\"],[30n*a,\"|.:.:.\"],[1n*i,\"|.....\"],[2n*i,\"|.:.\"],[6n*i,\"|.....\"],[12n*i,\"|.....:.....\"],[1n*o,\"|.:.\"],[2n*o,\"|.:.\"],[5n*o,\"|....\"],[10n*o,\"|....:....\"],[20n*o,\"|.:.\"],[50n*o,\"|....\"],[100n*o,\"|....:....\"],[200n*o,\"|.:.\"],[500n*o,\"|....\"],[1000n*o,\"|....:....\"],[2000n*o,\"|.:.\"],[5000n*o,\"|....\"],[10000n*o,\"|....:....\"],[20000n*o,\"|.:.\"],[50000n*o,\"|....\"],[100000n*o,\"|....:....\"],[200000n*o,\"|.:.\"]];function c(e){for(var[t,r]of s)if(t>=e)return[t,r];throw new Error(\"Pattern not defined for this minsize\")}(e=l||(t.TickType=l={}))[e.MAJOR=0]=\"MAJOR\",e[e.MEDIUM=1]=\"MEDIUM\",e[e.MINOR=2]=\"MINOR\",t.MIN_PX_PER_STEP=120}}return y8}function v8(){if(!_8){_8=1,Object.defineProperty(f8,\"__esModule\",{value:!0}),f8.Minimap=void 0;const t=Jr.__importDefault(xe());var e=Le();const r=_i(),C=gi(),w=bp(),k=Pe(),I=Fe(),R=d8(),n=m8(),N=He(),M=Po(),a=Iu(),P=Mi(),D=T8();f8.Minimap=class{trash=new e.DisposableStack;interactions;view({attrs:r}){return(0,t.default)(a.VirtualOverlayCanvas,{onMount:e=>r.trace.raf.addCanvasRedrawCallback(e),disableCanvasRedrawOnMithrilUpdates:!0,className:r.className,onCanvasRedraw:({ctx:e,virtualCanvasSize:t})=>{this.renderCanvas(r.trace,e,t)}},(0,t.default)(\".pf-overview-timeline\"))}oncreate({dom:e}){this.interactions=new n.ZonedInteractionHandler((0,r.toHTMLElement)(e)),this.trash.use(this.interactions)}onremove(e){this.trash.dispose()}renderCanvas(t,r,e){if(!(e.width<=0)){var n=t.traceInfo,a={left:0,right:e.width},n=w.HighPrecisionTimeSpan.fromTime(n.start,n.end);const S=new R.TimeScale(n,a);n=e.height-20,a=new I.TimeSpan(t.traceInfo.start,t.traceInfo.end);if(0<e.width&&0n<a.duration){var i,o,s=(0,D.getMaxMajorTicks)(e.width),l=t.timeline.getTimeAxisOrigin(),a=(0,D.generateTicks)(a,s,l);r.font=\"10px \"+P.FONT_COMPACT;for({type:i,time:o}of a){r.fillStyle=P.COLOR_BORDER;var c=Math.floor(S.timeToPx(o));if(!(c<=0)){if(c>e.width)break;if(i===D.TickType.MAJOR){r.fillRect(c-1,0,1,15);var u=t.timeline.toDomainTime(o),d=(_=g=m=h=f=p=d=void 0,t),p=r,f=u,h=c+5,m=18,g=D.MIN_PX_PER_STEP,_=(p.fillStyle=P.COLOR_TEXT_MUTED,d.timeline.timestampFormat);switch(_){case M.TimestampFormat.UTC:case M.TimestampFormat.TraceTz:case M.TimestampFormat.Timecode:case M.TimestampFormat.CustomTimezone:!function(e,t,r,n,a){t=I.Time.toTimecode(t),t=t.dhhmmss;e.fillText(t,r,n,a)}(p,f,h,m,g);break;case M.TimestampFormat.TraceNs:p.fillText(f.toString(),h,m,g);break;case M.TimestampFormat.TraceNsLocale:p.fillText(f.toLocaleString(),h,m,g);break;case M.TimestampFormat.Seconds:p.fillText(I.Time.formatSeconds(f),h,m,g);break;case M.TimestampFormat.Milliseconds:p.fillText(I.Time.formatMilliseconds(f),h,m,g);break;case M.TimestampFormat.Microseconds:p.fillText(I.Time.formatMicroseconds(f),h,m,g);break;default:(0,k.assertUnreachable)(_)}}else i==D.TickType.MEDIUM?r.fillRect(c-1,0,1,8):i==D.TickType.MINOR&&r.fillRect(c-1,0,1,5)}}}s=t.minimap.getLoad();if(s){var y=(n-1)/s.length;let e=0;for(const A of s){for(const O of A){var T=Math.floor(S.timeToPx(O.ts)),v=Math.ceil(S.durationToPx(O.dur)),b=Math.floor(20+e*y),E=(0,N.colorForCpu)(e).setHSL({s:50}).setAlpha(O.load);r.fillStyle=E.cssString,r.clearRect(T,b,v,Math.ceil(y)),r.fillRect(T,b,v,Math.ceil(y))}e++}}r.fillRect(0,e.height-1,e.width,1);var{left:l,right:a}=S.hpTimeSpanToPxSpan(t.timeline.visibleWindow),s=Math.floor(l),l=Math.ceil(a),a=(r.globalAlpha=.5,r.fillStyle=P.COLOR_NEUTRAL,r.fillRect(0,20,s,n),r.fillRect(l,20,e.width-l,n),r.globalAlpha=1,r.fillStyle=P.COLOR_BORDER,r.fillRect(s-1,20,1,n),r.fillRect(l,20,1,n),.4*n);r.fillRect(s-Math.floor(2.5)-1,20,5,a),r.fillRect(l-Math.floor(2.5),20,5,a),(0,k.assertExists)(this.interactions).update([{id:\"left-handle\",area:C.Rect2D.fromPointAndSize({x:s-Math.floor(2.5)-1,y:0,width:5,height:e.height}),cursor:\"col-resize\",drag:{cursorWhileDragging:\"col-resize\",onDrag:e=>{e=S.pxToDuration(e.deltaSinceLastEvent.x);t.timeline.moveStart(e)}}},{id:\"right-handle\",area:C.Rect2D.fromPointAndSize({x:l-Math.floor(2.5)-1,y:0,width:5,height:e.height}),cursor:\"col-resize\",drag:{cursorWhileDragging:\"col-resize\",onDrag:e=>{e=S.pxToDuration(e.deltaSinceLastEvent.x);t.timeline.moveEnd(e)}}},{id:\"drag\",area:new C.Rect2D({left:s,right:l,top:0,bottom:e.height}),cursor:\"grab\",drag:{cursorWhileDragging:\"grabbing\",onDrag:e=>{e=S.pxToDuration(e.deltaSinceLastEvent.x);t.timeline.panVisibleWindow(e)}}},{id:\"select\",area:new C.Rect2D({left:0,right:e.width,top:0,bottom:e.height}),cursor:\"text\",drag:{cursorWhileDragging:\"text\",onDrag:e=>{e=S.pxSpanToHpTimeSpan(C.Rect2D.fromPoints(e.dragStart,e.dragCurrent));t.timeline.updateVisibleTimeHP(e)}}}])}}}}return f8}var b8,E8,S8,A8={},O8={},C8={};function w8(){if(!b8){b8=1,Object.defineProperty(C8,\"__esModule\",{value:!0}),C8.NoteEditor=void 0;const i=Jr.__importDefault(xe()),o=Pe(),s=Ae(),l=Ns(),c=je(),u=Vl(),d=Ve(),p=qe(),f=Bs(),h=Ls();C8.NoteEditor=class{view(e){const{selection:t,trace:r}=e.attrs,n=t.id,a=r.notes.getNote(n);return void 0===a?(0,i.default)(\".\",\"No Note with id \"+n):(e=function(e){var t=e.noteType;switch(t){case\"SPAN\":return e.start;case\"DEFAULT\":return e.timestamp;default:(0,o.assertUnreachable)(t)}}(a),(0,i.default)(p.DetailsShell,{title:\"Note\",key:n},(0,i.default)(h.GridLayout,(0,i.default)(f.Section,{title:\"Details\"},(0,i.default)(d.Tree,(0,i.default)(d.TreeNode,{left:\"Annotation\",right:(0,i.default)(l.Timestamp,{trace:r,ts:e})}),(0,i.default)(d.TreeNode,{left:\"Name\",right:(0,i.default)(u.TextInput,{oncreate:e=>{e.dom.value=a.text},onchange:e=>{e=e.target.value;r.notes.changeNote(n,{text:e})}})}),(0,i.default)(d.TreeNode,{left:\"Color\",right:(0,i.default)(\"input[type=color]\",{value:a.color,onchange:e=>{e=e.target.value;r.notes.changeNote(n,{color:e})}})}),(0,i.default)(c.Button,{label:\"Remove\",icon:s.Icons.Delete,onclick:()=>r.notes.removeNote(n)}))))))}}}return C8}function k8(){if(!S8){S8=1,Object.defineProperty(A8,\"__esModule\",{value:!0}),A8.TabPanel=void 0;const o=Jr.__importDefault(xe()),t=je(),n=Se(),s=of(),a=Mi(),r=function(){if(E8)return O8;E8=1,Object.defineProperty(O8,\"__esModule\",{value:!0}),O8.CurrentSelectionTab=void 0;const a=Jr.__importDefault(xe()),t=K(),i=qe(),r=nu(),n=Ls(),o=Bs(),s=Ve(),l=Pe(),c=je(),u=w8();O8.CurrentSelectionTab=class{fadeContext=new e;currentAreaSubTabId;view({attrs:e}){e=this.renderCurrentSelectionTabContent(e.trace);return e.isLoading?(0,a.default)(p,e.content):(0,a.default)(d,{context:this.fadeContext},e.content)}renderCurrentSelectionTabContent(e){var t=e.selection.selection,r=t.kind;switch(r){case\"empty\":return this.renderEmptySelection(\"Nothing selected\");case\"track\":return this.renderTrackSelection(e,t);case\"track_event\":return this.renderTrackEventSelection(e);case\"area\":return this.renderAreaSelection(e,t);case\"note\":return this.renderNoteSelection(e,t);default:(0,l.assertUnreachable)(r)}}renderEmptySelection(e){return{isLoading:!1,content:(0,a.default)(r.EmptyState,{fillHeight:!0,title:e})}}renderTrackSelection(e,t){return{isLoading:!1,content:this.renderTrackDetailsPanel(e,t.trackUri)}}renderTrackEventSelection(e){e=e.selection.getDetailsPanelForSelection();return e?{isLoading:e.isLoading,content:e.render()}:{isLoading:!0,content:\"Loading...\"}}renderAreaSelection(e,t){e=e.selection.areaSelectionTabs.sort((e,t)=>(t.priority??0)-(e.priority??0)).map(e=>[e,e.render(t)]).filter(([,e])=>void 0!==e);if(0===e.length)return this.renderEmptySelection(\"No details available for selection\");const[r,n]=e.find(([e])=>e.id===this.currentAreaSubTabId)??e[0];return{isLoading:n?.isLoading??!1,content:(0,a.default)(i.DetailsShell,{title:\"Area Selection\",description:(0,a.default)(c.ButtonBar,e.map(([e])=>(0,a.default)(c.Button,{label:e.name,key:e.id,active:r===e,onclick:()=>this.currentAreaSubTabId=e.id})))},n?.content)}}renderNoteSelection(e,t){return{isLoading:!1,content:(0,a.default)(u.NoteEditor,{trace:e,selection:t})}}renderTrackDetailsPanel(e,t){e=e.tracks.getTrack(t);if(e)return(0,a.default)(i.DetailsShell,{title:\"Track\",description:e.uri},(0,a.default)(n.GridLayout,(0,a.default)(n.GridLayoutColumn,(0,a.default)(o.Section,{title:\"Details\"},(0,a.default)(s.Tree,(0,a.default)(s.TreeNode,{left:\"URI\",right:e.uri}),(0,a.default)(s.TreeNode,{left:\"Plugin ID\",right:e.pluginId}),(0,a.default)(s.TreeNode,{left:\"Tags\"},e.tags&&Object.entries(e.tags).map(([e,t])=>(0,a.default)(s.TreeNode,{left:e,right:t?.toString()}))))))))}};class e{resolver=()=>{};putResolver(e){this.resolver=e}resolve(){this.resolver(),this.resolver=()=>{}}}class d{onbeforeremove({attrs:t}){return new Promise(e=>{t.context.putResolver(e),setTimeout(e,50)})}oncreate({attrs:e}){e.context.resolve()}view(e){return e.children}}class p{show=!1;oncreate(e){setTimeout(()=>{this.show=!0,t.raf.scheduleFullRedraw()},50)}view(e){return this.show?e.children:void 0}}return O8}(),l=wi();A8.TabPanel=class{view({attrs:t,children:e}){var{tabs:r,drawerContent:n}=this.gatherTabs(t.trace);return(0,o.default)(s.SplitPanel,{className:t.className,startingHeight:a.DEFAULT_DETAILS_CONTENT_HEIGHT,leftHandleContent:this.renderDropdownMenu(t.trace),tabs:r,drawerContent:n,visibility:t.trace.tabs.tabPanelVisibility,onVisibilityChange:e=>t.trace.tabs.setTabPanelVisibility(e)},e)}gatherTabs(n){var e=n.tabs,t=n.tabs.openTabsUri,e=e.resolveTabs(t);const a=n.tabs.currentTabUri,i=[];t=e.map(({uri:e,tab:t})=>{var r=e===a;return t?(i.push((0,o.default)(l.Gate,{open:r},t.content.render())),(0,o.default)(s.Tab,{active:r,onclick:()=>n.tabs.showTab(e),hasCloseButton:!0,onClose:()=>{n.tabs.hideTab(e)}},t.content.getTitle())):(0,o.default)(s.Tab,{active:r,onclick:()=>n.tabs.showTab(e)},\"Tab does not exist\")}),e=\"current_selection\"===a;return e&&i.push((0,o.default)(l.Gate,{open:e},(0,o.default)(r.CurrentSelectionTab,{trace:n}))),t.unshift((0,o.default)(s.Tab,{active:e,onclick:()=>n.tabs.showTab(\"current_selection\")},\"Current Selection\")),{tabs:t,drawerContent:i}}renderDropdownMenu(r){var e=r.tabs.tabs.filter(e=>!1===e.isEphemeral).map(({content:e,uri:t})=>({key:t,title:e.getTitle(),onClick:()=>r.tabs.toggleTab(t),checked:r.tabs.isOpen(t)}));return(0,o.default)(n.PopupMenu,{trigger:(0,o.default)(t.Button,{icon:\"more_vert\",disabled:0===e.length,title:\"More Tabs\"})},e.map(e=>(0,o.default)(n.MenuItem,{key:e.key,label:e.title,onclick:()=>e.onClick(),icon:e.checked?\"check_box\":\"check_box_outline_blank\"})))}}}return A8}var I8,R8,N8,M8={},P8={},D8={},x8={};function L8(){if(!I8){I8=1,Object.defineProperty(x8,\"__esModule\",{value:!0}),x8.renderTrackSettingMenu=function(e,r,t){if(e.render)return e.render(r,t);{if(e.schema instanceof c.default.ZodBoolean){const i=(0,u.valueIfAllEqual)(t);var n=function(){switch(i){case!0:return\"check_box\";case!1:return\"check_box_outline_blank\";default:return\"indeterminate_check_box\"}}();return(0,l.default)(d.MenuItem,{icon:n,label:e.name,onclick:()=>{!0===i?r(!1):r(!0)}})}if(e.schema instanceof c.default.ZodEnum){n=e.schema.options;const o=(0,u.valueIfAllEqual)(t);return(0,l.default)(d.MenuItem,{label:`${e.name} (currently: ${String(o)})`},n.map(e=>(0,l.default)(d.MenuItem,{label:e,active:o===e,onclick:()=>r(e)})))}if(e.schema instanceof c.default.ZodNativeEnum){var a=Object.entries(e.schema._def.values);const s=(0,u.valueIfAllEqual)(t);return(0,l.default)(d.MenuItem,{label:`${e.name} (currently: ${String(s)})`},a.map(([e,t])=>\"string\"==typeof e&&isNaN(Number(e))?(0,l.default)(d.MenuItem,{label:e,active:s===t,onclick:()=>{var e=isNaN(Number(t))?t:Number(t);r(e)}}):null))}return(0,l.default)(d.MenuItem,{icon:\"error_outline\",label:e.name+\" - Cannot edit this setting directly\"})}};var e=Jr;const l=e.__importDefault(xe()),c=e.__importDefault(Ne()),u=Hi(),d=Se()}return x8}function F8(){if(!N8){N8=1,Object.defineProperty(P8,\"__esModule\",{value:!0}),P8.NotesPanel=void 0;const e=Jr.__importDefault(xe()),r=jo(),n=_i(),a=Pe(),g=d8(),i=He(),t=K(),o=Mi(),_=T8(),s=function(){if(!R8){R8=1,Object.defineProperty(D8,\"__esModule\",{value:!0}),D8.TimelineToolbar=void 0;const a=Jr.__importDefault(xe()),t=_i(),n=Ae(),p=L8(),i=We(),s=je(),o=Se(),r=lm(),l=yi(),c=mc(),u=Vl(),d=Be(),f=Kl(),h=\"filter-text-box\";D8.TimelineToolbar=class{view({attrs:e}){const t=e.trace;const r=t.workspace.flatTracks.every(e=>e.collapsed);e=t.selection.selection;return(0,a.default)(c.Stack,{className:\"pf-timeline-toolbar\",orientation:\"horizontal\",spacing:\"small\"},(0,a.default)(s.Button,{onclick:e=>{e.preventDefault(),r?t.workspace.flatTracks.forEach(e=>e.expand()):t.workspace.flatTracks.forEach(e=>e.collapse())},title:r?\"Expand all\":\"Collapse all\",icon:r?\"unfold_more\":\"unfold_less\",compact:!0}),(0,a.default)(s.Button,{onclick:e=>{e.preventDefault(),t.workspace.pinnedTracks.forEach(e=>t.workspace.unpinTrack(e))},title:\"Unpin all pinned tracks\",icon:\"keep_off\",disabled:0===t.workspace.pinnedTracks.length,compact:!0}),this.renderTrackFilter(t),this.renderWorkspaceMenu(t),(0,a.default)(c.StackAuto),\"area\"===e.kind&&this.renderBulkTracksMenu(t,e))}renderBulkTracksMenu(e,t){var r=this.renderBulkSettingsMenu(e);return(0,a.default)(o.PopupMenu,{trigger:(0,a.default)(s.Button,{rightIcon:\"arrow_drop_down\",icon:\"check\",compact:!0,rounded:!0,label:t.tracks.length+\" \"+(1===t.tracks.length?\"track\":\"tracks\"),variant:s.ButtonVariant.Filled,intent:d.Intent.Primary,title:`Bulk operations on all ${t.tracks.length} selected tracks`})},[(0,a.default)(f.Callout,{className:\"pf-timeline-toolbar__bulk-callout\",icon:n.Icons.Info},\"Changes apply to all selected tracks\"),(0,a.default)(o.MenuTitle,{label:\"Workspace\"}),this.renderCopySelectedTracksToWorkspace(e,t),Boolean(r)&&[(0,a.default)(o.MenuDivider),(0,a.default)(o.MenuTitle,{label:\"Bulk track settings\"}),r]])}renderWorkspaceMenu(t){const r=t.workspaces;var e=t.workspace;return(0,a.default)(o.PopupMenu,{trigger:(0,a.default)(s.Button,{label:e.title,icon:\"workspaces\",compact:!0,shrink:!0})},[(0,a.default)(o.MenuTitle,{label:\"All workspaces\"}),r.all.map(e=>(0,a.default)(o.MenuItem,{label:e.title,icon:e===t?.workspace?\"radio_button_checked\":\"radio_button_unchecked\",onclick:()=>{r.switchWorkspace(e)}})),(0,a.default)(o.MenuDivider),(0,a.default)(o.MenuItem,{label:\"new workspace\",icon:\"add\",onclick:()=>{var e=r.createEmptyWorkspace(\"Untitled Workspace\");r.switchWorkspace(e)}}),(0,a.default)(o.MenuDivider),(0,a.default)(o.MenuTitle,{label:\"Current workspace\"}),(0,a.default)(o.MenuItem,{icon:\"edit\",label:\"Rename\",disabled:!e.userEditable,title:e.userEditable?\"Rename current workspace\":\"This workspace is not editable - please create a new workspace if you wish to modify it\",onclick:async()=>{var e=await t.omnibox.prompt(\"Enter a new name...\");e&&(r.currentWorkspace.title=e)}}),(0,a.default)(o.MenuItem,{icon:n.Icons.Delete,label:\"Remove\",disabled:!e.userEditable,title:e.userEditable?\"Remove current workspace\":\"This workspace is not editable - please reate a new workspace if you wish to modify it\",onclick:()=>{r.removeWorkspace(r.currentWorkspace)}}),(0,a.default)(o.MenuItem,{icon:\"create_new_folder\",label:\"New track group\",disabled:!t.workspace.userEditable,title:t.workspace.userEditable?\"Create new group\":\"This workspace is not editable - please create a new workspace if you wish to modify it\",onclick:async()=>{var e=await t.omnibox.prompt(\"Group name...\");e&&(e=new i.TrackNode({name:e,isSummary:!0}),t.workspace.addChildLast(e))}})])}renderTrackFilter(e){const o=e.tracks.filters;return(0,a.default)(l.Popup,{trigger:(0,a.default)(s.Button,{icon:\"filter_alt\",title:\"Track filter\",compact:!0,iconFilled:o.areFiltersSet()})},(0,a.default)(\"form.pf-track-filter\",{oncreate({dom:e}){e=(0,t.findRef)(e,h);e.focus(),e.select()}},(0,a.default)(\".pf-track-filter__row\",(0,a.default)(\"label\",{for:\"filter-name\"},\"Filter by name\"),(0,a.default)(u.TextInput,{ref:h,id:\"filter-name\",placeholder:\"Filter by name...\",title:\"Filter by name (comma separated terms)\",value:o.nameFilter,oninput:e=>{e=e.target.value;o.nameFilter=e}})),e.tracks.trackFilterCriteria.map(i=>(0,a.default)(\".pf-track-filter__row\",(0,a.default)(\"label\",\"Filter by \",i.name),(0,a.default)(r.PopupMultiSelect,{label:i.name,showNumSelected:!0,showSelectAllButton:!1,onChange:e=>{for(const{id:n,checked:a}of e){var t,r;a?(t=o.criteriaFilters.get(i.name))?t.push(n):o.criteriaFilters.set(i.name,[n]):(t=o.criteriaFilters.get(i.name))&&(0===(r=t.filter(e=>e!==n)).length?o.criteriaFilters.delete(i.name):o.criteriaFilters.set(i.name,r))}},options:i.options.map(e=>{var t=o.criteriaFilters.get(i.name),t=Boolean(t&&t.includes(e.key));return{id:e.key,name:e.label,checked:t}}).filter(e=>\"\"!==e.name)}))),(0,a.default)(s.Button,{type:\"reset\",label:\"Clear All Filters\",icon:\"filter_alt_off\",onclick:()=>{o.clearAll()}})))}renderCopySelectedTracksToWorkspace(t,r){const n=\"area\"===r.kind;return[(0,a.default)(o.MenuItem,{label:\"Copy to\",disabled:!n,title:n?\"Copy selected tracks to workspace\":\"Please create an area selection to copy tracks\"},t.workspaces.all.map(e=>(0,a.default)(o.MenuItem,{label:e.title,disabled:!e.userEditable,onclick:n?()=>this.copySelectedToWorkspace(t,e,r):void 0})),(0,a.default)(o.MenuDivider),(0,a.default)(o.MenuItem,{label:\"New workspace\",onclick:n?()=>this.copySelectedToWorkspace(t,void 0,r):void 0})),(0,a.default)(o.MenuItem,{label:\"Copy & switch to\",disabled:!n,title:n?\"Copy selected tracks to workspace and switch to that workspace\":\"Please create an area selection to copy tracks\"},t.workspaces.all.map(e=>(0,a.default)(o.MenuItem,{label:e.title,disabled:!e.userEditable,onclick:n?async()=>{this.copySelectedToWorkspace(t,e,r),t.workspaces.switchWorkspace(e)}:void 0})),(0,a.default)(o.MenuDivider),(0,a.default)(o.MenuItem,{label:\"new workspace\",onclick:n?async()=>{var e=this.copySelectedToWorkspace(t,void 0,r);t.workspaces.switchWorkspace(e)}:void 0}))]}copySelectedToWorkspace(e,t,r){t=t||e.workspaces.createEmptyWorkspace(\"Untitled Workspace\");for(const a of r.tracks){var n=e.workspace.getTrackByUri(a.uri);n&&(n=n.clone(),t.addChildLast(n))}return t}renderBulkSettingsMenu(e){var t=e.selection.selection;if(\"area\"!==t.kind)return null;var r,n,a=new Map;for(const l of t.tracks){var i=l.renderer?.settings;if(i)for(const c of i){var o=a.get(c.descriptor)??[];o.push(c),a.set(c.descriptor,o)}}for([r,n]of a)n.length!==t.tracks.length&&a.delete(r);if(0===a.size)return null;var s=[];for(const[u,d]of a)s.push((0,p.renderTrackSettingMenu)(u,e=>{for(const t of d)t.setValue(e)},d.map(e=>e.getValue())));return s}}}return D8}();function m(e){var t=e.noteType;switch(t){case\"SPAN\":return e.start;case\"DEFAULT\":return e.timestamp;default:(0,a.assertUnreachable)(t)}}P8.NotesPanel=class{trace;timescale;hoveredX=null;mouseDragging=!1;height=20;constructor(e){this.trace=e}render(){return(0,e.default)(\"\",{style:{height:this.height+\"px\"},onmousedown:()=>{this.mouseDragging=!1},onclick:e=>{var t;this.mouseDragging||(t=(0,n.currentTargetOffset)(e).x-o.TRACK_SHELL_WIDTH,this.onClick(t),e.stopPropagation())},onmousemove:e=>{this.mouseDragging=!0,this.hoveredX=(0,n.currentTargetOffset)(e).x-o.TRACK_SHELL_WIDTH,t.raf.scheduleCanvasRedraw()},onmouseenter:e=>{this.hoveredX=(0,n.currentTargetOffset)(e).x-o.TRACK_SHELL_WIDTH,t.raf.scheduleCanvasRedraw()},onmouseout:()=>{this.hoveredX=null,this.trace.timeline.hoveredNoteTimestamp=void 0}},(0,e.default)(s.TimelineToolbar,{trace:this.trace}))}renderCanvas(e,t){e.fillStyle=o.COLOR_BORDER,e.fillRect(o.TRACK_SHELL_WIDTH-1,0,1,t.height);t={...t,width:t.width-o.TRACK_SHELL_WIDTH};e.save(),e.translate(o.TRACK_SHELL_WIDTH,0),(0,r.canvasClip)(e,0,0,t.width,t.height),this.renderPanel(e,t),e.restore()}renderPanel(e,t){let r=!1;var n=this.trace.timeline.visibleWindow,a=new g.TimeScale(n,{left:0,right:t.width}),i=n.toTimeSpan();if(this.timescale=a,0<t.width&&0n<i.duration){var o,s,l=(0,_.getMaxMajorTicks)(t.width),c=this.trace.timeline.getTimeAxisOrigin();for({type:o,time:s}of(0,_.generateTicks)(i,l,c)){var u=Math.floor(a.timeToPx(s));o===_.TickType.MAJOR&&e.fillRect(u,0,1,t.height)}}e.textBaseline=\"bottom\",e.font=\"10px Helvetica\";for(const h of this.trace.notes.notes.values()){var d,p,f=m(h);\"DEFAULT\"===h.noteType&&!n.contains(h.timestamp)||\"SPAN\"===h.noteType&&!n.overlaps(h.start,h.end)||(null!==this.hoveredX&&this.hitTestNote(this.hoveredX,h)&&(r=!0),p=\"note\"===(p=this.trace.selection.selection).kind&&p.id===h.id,f=a.timeToPx(f),f=Math.floor(f),\"SPAN\"===h.noteType?this.drawAreaMarker(e,f,Math.floor(a.timeToPx(h.end)),h.color,p):this.drawFlag(e,f,t.height,h.color,p),h.text&&(p=h.text,d=void 0,d=0<p.indexOf(\"\\n\")?p.indexOf(\"\\n\"):p.length,d=p.slice(0,Math.min(d,p.length,16)),p=e.measureText(d),e.fillStyle=\"rgba(255, 255, 255, 0.8)\",e.fillRect(f+16+2,t.height+2,p.width+2,-12),e.fillStyle=\"#3c4b5d\",e.fillText(d,f+16+3,t.height+1)))}r&&(this.trace.timeline.hoveredNoteTimestamp=void 0),r||null===this.hoveredX||(i=a.pxToHpTime(this.hoveredX).toTime(),n.contains(i)&&(this.trace.timeline.hoveredNoteTimestamp=i,l=a.timeToPx(i),c=Math.floor(l),this.drawFlag(e,c,t.height,\"#aaa\",!0))),e.restore()}drawAreaMarker(e,t,r,n,a){e.fillStyle=n,e.strokeStyle=n;0<=t&&(e.beginPath(),e.moveTo(t,10),e.lineTo(t,20),e.lineTo(t+10,10),e.lineTo(t,10),a&&e.fill(),e.stroke()),e.beginPath(),e.moveTo(r,10),e.lineTo(r,20),e.lineTo(r-10,10),e.lineTo(r,10),a&&e.fill(),e.stroke();n=Math.max(t,0);e.beginPath(),e.moveTo(n,10),e.lineTo(r,10),e.stroke()}drawFlag(e,t,r,n,a){var i=e.font,o=e.textBaseline;e.textBaseline=\"alphabetic\",e.font=\"24px Material Symbols Sharp\",e.fillStyle=n,e.strokeStyle=n;a?e.fillText(\"\",t-6,r+2):e.strokeText(\"\",t-6,r+2.5),e.font=i,e.textBaseline=o}onClick(e){if(this.timescale&&!(e<0)){for(const r of this.trace.notes.notes.values())if(null!==this.hoveredX&&this.hitTestNote(this.hoveredX,r))return void this.trace.selection.selectNote({id:r.id});var e=this.timescale.pxToHpTime(e).toTime(),t=(0,i.randomColor)(),e=this.trace.notes.addNote({timestamp:e,color:t});this.trace.selection.selectNote({id:e})}}hitTestNote(e,t){var r,n;return!!this.timescale&&(n=(r=this.timescale).timeToPx(m(t)),\"SPAN\"===t.noteType?n<=e&&e<n+10||r.timeToPx(t.end)>e&&e>r.timeToPx(t.end)-10:n<=e&&e<n+16)}}}return P8}var U8,B8,j8={},H8={};function G8(){if(!B8){B8=1,Object.defineProperty(j8,\"__esModule\",{value:!0}),j8.TickmarkPanel=void 0;const e=Jr.__importDefault(xe()),r=jo(),c=d8(),t=Me(),n=Mi(),u=T8(),a=function(){if(!U8){U8=1,Object.defineProperty(H8,\"__esModule\",{value:!0}),H8.SearchOverviewTrack=void 0;var e=Qc(),t=Le();const l=Fe(),c=d8(),u=Ue(),d=Fu(),r=De(),s=Df();class n{trash=new t.AsyncDisposableStack;trace;limiter=new e.AsyncLimiter;initialized=!1;previousResolution;previousSpan;previousSearchGeneration=0;searchSummary;constructor(e){this.trace=e}render(e,t){this.maybeUpdate(t.width),this.renderSearchOverview(e,t)}async initialize(){var e=this.trace.engine;this.trash.use(await(0,r.createVirtualTable)({engine:e,name:\"search_summary_window\",using:\"__intrinsic_window(0, 0, 1)\"})),this.trash.use(await(0,r.createVirtualTable)({engine:e,name:\"search_summary_sched_span\",using:\"span_join(sched PARTITIONED cpu, search_summary_window)\"})),this.trash.use(await(0,r.createVirtualTable)({engine:e,name:\"search_summary_slice_span\",using:\"span_join(slice PARTITIONED track_id, search_summary_window)\"}))}async update(e,t,r,n){this.initialized||(this.initialized=!0,await this.initialize());var e=(0,d.escapeSearchQuery)(e),n=10n*n,r=(t=l.Time.quantFloor(t,n),l.Duration.max(l.Time.diff(r,t),1n)),a=this.trace.engine;await a.query(`\n      drop table search_summary_window;\n      create virtual table search_summary_window\n        using __intrinsic_window(${t}, ${r}, ${n});\n    `);var i=[];for(const s=(await a.query(`select utid from thread join process\n      using(upid) where thread.name glob ${e}\n      or process.name glob `+e)).iter({utid:u.NUM});s.valid();s.next())i.push(s.utid);var r=await a.query(`\n        select\n          (quantum_ts * ${n} + ${t}) as tsStart,\n          ((quantum_ts+1) * ${n} + ${t}) as tsEnd,\n          min(count(*), 255) as count\n          from (\n              select\n              quantum_ts\n              from search_summary_sched_span\n              where utid in (${i.join(\",\")})\n            union all\n              select\n              quantum_ts\n              from search_summary_slice_span\n              where name glob ${e}\n          )\n          group by quantum_ts\n          order by quantum_ts;`),a=r.numRows(),o={tsStarts:new BigInt64Array(a),tsEnds:new BigInt64Array(a),count:new Uint8Array(a)};const s=r.iter({tsStart:u.LONG,tsEnd:u.LONG,count:u.NUM});for(let e=0;s.valid();s.next(),++e)o.tsStarts[e]=s.tsStart,o.tsEnds[e]=s.tsEnd,o.count[e]=s.count;return o}maybeUpdate(e){const t=this.trace.search;var r=this.trace.timeline;if(t.hasResults){var r=r.visibleWindow,n=t.searchGeneration,e=(0,s.calculateResolution)(r,e);if(e.ok){const a=e.value;e=r.toTimeSpan();if(!this.previousSpan?.containsSpan(e.start,e.end)||this.previousResolution!==a||this.previousSearchGeneration!==n){const{start:i,end:o}=e.pad(e.duration);this.previousSpan=new l.TimeSpan(i,o),this.previousResolution=a,this.previousSearchGeneration=n,\"\"===t.searchText?this.searchSummary={tsStarts:new BigInt64Array(0),tsEnds:new BigInt64Array(0),count:new Uint8Array(0)}:this.limiter.schedule(async()=>{var e=await this.update(t.searchText,i,o,a);this.searchSummary=e})}}}}renderSearchOverview(t,r){var n=this.trace.timeline.visibleWindow,a=new c.TimeScale(n,{left:0,right:r.width});if(this.searchSummary){for(let e=0;e<this.searchSummary.tsStarts.length;e++){var i=l.Time.fromRaw(this.searchSummary.tsStarts[e]),o=l.Time.fromRaw(this.searchSummary.tsEnds[e]);n.overlaps(i,o)&&(i=Math.max(a.timeToPx(i),0),o=a.timeToPx(o),t.fillStyle=\"#ffe263\",t.fillRect(Math.floor(i),0,Math.ceil(o-i),r.height))}var e,s=this.trace.search.searchResults;void 0!==s&&(-1!==(e=this.trace.search.resultIndex)&&e<s.tses.length&&-1n!==(s=s.tses[e])&&(e=Math.max(a.timeToPx(l.Time.fromRaw(s)),0),t.fillStyle=\"#000\",t.beginPath(),t.moveTo(e,r.height),t.lineTo(e-3,0),t.lineTo(e+3,0),t.lineTo(e,r.height),t.fill(),t.closePath()),t.restore())}}async[Symbol.asyncDispose](){return this.trash.asyncDispose()}}H8.SearchOverviewTrack=n}return H8}(),i=new WeakMap;j8.TickmarkPanel=class{trace;searchOverviewTrack;height=5;constructor(e){this.trace=e,this.searchOverviewTrack=(0,t.getOrCreate)(i,e,()=>new a.SearchOverviewTrack(e))}render(){return(0,e.default)(\"\",{style:{height:this.height+\"px\"}})}renderCanvas(e,t){e.fillStyle=n.COLOR_BORDER,e.fillRect(n.TRACK_SHELL_WIDTH-1,0,1,t.height);t={...t,width:t.width-n.TRACK_SHELL_WIDTH};e.save(),e.translate(n.TRACK_SHELL_WIDTH,0),(0,r.canvasClip)(e,0,0,t.width,t.height),this.renderTrack(e,t),e.restore()}renderTrack(e,t){var r=this.trace.timeline.visibleWindow,n=new c.TimeScale(r,{left:0,right:t.width}),r=r.toTimeSpan();if(0<t.width&&0n<r.duration){var a,i,o=(0,u.getMaxMajorTicks)(t.width),s=this.trace.timeline.getTimeAxisOrigin();for({type:a,time:i}of(0,u.generateTicks)(r,o,s)){var l=Math.floor(n.timeToPx(i));a===u.TickType.MAJOR&&e.fillRect(l,0,1,t.height)}}this.searchOverviewTrack.render(e,t)}}}return j8}var V8,q8={};function z8(){if(!V8){V8=1,Object.defineProperty(q8,\"__esModule\",{value:!0}),q8.TimeAxisPanel=void 0;const e=Jr.__importDefault(xe()),n=jo(),i=Pe(),f=Fe(),u=d8(),h=Po(),m=Mi(),d=T8();function p(e,t,r,n,a){return e.font=\"11px \"+m.FONT_COMPACT,e.fillText(t,r,n,a),e.measureText(t).width}q8.TimeAxisPanel=class{trace;id=\"time-axis-panel\";height=22;constructor(e){this.trace=e}render(){return(0,e.default)(\"\",{style:{height:this.height+\"px\"}})}renderCanvas(e,t){e.textAlign=\"left\",e.font=\"11px \"+m.FONT_COMPACT,this.renderOffsetTimestamp(e);var r={...t,width:t.width-m.TRACK_SHELL_WIDTH};e.save(),e.translate(m.TRACK_SHELL_WIDTH,0),(0,n.canvasClip)(e,0,0,r.width,r.height),this.renderPanel(e,r),e.restore(),e.fillStyle=m.COLOR_BORDER,e.fillRect(m.TRACK_SHELL_WIDTH-1,0,1,t.height)}renderOffsetTimestamp(e){e.fillStyle=m.COLOR_TEXT_MUTED;var t=this.trace.timeline.getTimeAxisOrigin(),r=this.trace.timeline.timestampFormat;switch(r){case h.TimestampFormat.TraceNs:case h.TimestampFormat.TraceNsLocale:break;case h.TimestampFormat.Seconds:case h.TimestampFormat.Milliseconds:case h.TimestampFormat.Microseconds:case h.TimestampFormat.Timecode:var n=this.renderTimestamp(e,t,6,10,d.MIN_PX_PER_STEP);e.fillText(\"+\",6+n+2,10,6);break;case h.TimestampFormat.UTC:n=f.Time.toDate(t,this.trace.traceInfo.unixOffset),n=(0,f.formatDate)(n,{printTime:!1});e.fillText(n,6,10);break;case h.TimestampFormat.CustomTimezone:var n=f.Time.toDate(t,this.trace.traceInfo.unixOffset),a=this.trace.timeline.customTimezoneOffset,n=(0,f.formatDate)(n,{tzOffsetMins:a,printTime:!1});e.fillText(n,6,10);break;case h.TimestampFormat.TraceTz:a=f.Time.toDate(t,this.trace.traceInfo.unixOffset),n=this.trace.traceInfo.tzOffMin,a=(0,f.formatDate)(a,{tzOffsetMins:n,printTime:!1});e.fillText(a,6,10);break;default:(0,i.assertUnreachable)(r)}}renderPanel(e,t){var r=this.trace.timeline.visibleWindow,n=new u.TimeScale(r,{left:0,right:t.width}),r=r.toTimeSpan(),a=this.trace.timeline.getTimeAxisOrigin();if(0<t.width&&0n<r.duration){var i,o,s,l,c=(0,d.getMaxMajorTicks)(t.width);for({type:i,time:o}of(0,d.generateTicks)(r,c,a))i===d.TickType.MAJOR&&(s=Math.floor(n.timeToPx(o)),e.fillStyle=m.COLOR_BORDER,e.fillRect(s,0,1,t.height),l=this.trace.timeline.toDomainTime(o),e.fillStyle=m.COLOR_TEXT_MUTED,this.renderTimestamp(e,l,s+5,10,d.MIN_PX_PER_STEP))}}renderTimestamp(e,t,r,n,a){var i,o,s,l,c,u,d=this.trace.timeline.timestampFormat;switch(d){case h.TimestampFormat.UTC:case h.TimestampFormat.CustomTimezone:case h.TimestampFormat.TraceTz:case h.TimestampFormat.Timecode:return i=e,o=t,s=r,l=n,c=a,o=f.Time.toTimecode(o),i.font=\"11px \"+m.FONT_COMPACT,u=o.dhhmmss,o=o.subsec(\" \"),i.fillText(u,s,l,c),u=i.measureText(o).width,i.font=\"10.5px 10px \"+m.FONT_COMPACT,i.fillText(o,s,l+10,c),s=i.measureText(o).width,Math.max(u,s);case h.TimestampFormat.TraceNs:return p(e,t.toString(),r,n,a);case h.TimestampFormat.TraceNsLocale:return p(e,t.toLocaleString(),r,n,a);case h.TimestampFormat.Seconds:return p(e,f.Time.formatSeconds(t),r,n,a);case h.TimestampFormat.Milliseconds:return p(e,f.Time.formatMilliseconds(t),r,n,a);case h.TimestampFormat.Microseconds:return p(e,f.Time.formatMicroseconds(t),r,n,a);default:throw new Error(\"Invalid timestamp \"+d)}}}}return q8}var W8,$8={};function K8(){if(!W8){W8=1,Object.defineProperty($8,\"__esModule\",{value:!0}),$8.TimeSelectionPanel=void 0;const e=Jr.__importDefault(xe()),r=jo(),n=Pe(),g=Fe(),p=d8(),_=Do(),a=Po(),y=Mi(),f=T8();$8.TimeSelectionPanel=class{trace;height=10;constructor(e){this.trace=e}render(){return(0,e.default)(\"\",{style:{height:this.height+\"px\"}})}renderCanvas(e,t){e.fillStyle=y.COLOR_BORDER,e.fillRect(y.TRACK_SHELL_WIDTH-1,0,1,t.height);t={...t,width:t.width-y.TRACK_SHELL_WIDTH};e.save(),e.translate(y.TRACK_SHELL_WIDTH,0),(0,r.canvasClip)(e,0,0,t.width,t.height),this.renderPanel(e,t),e.restore()}renderPanel(e,t){var r=this.trace.timeline.visibleWindow,n=new p.TimeScale(r,{left:0,right:t.width}),r=r.toTimeSpan();if(0<t.width&&0n<r.duration){var a,i,o=(0,f.getMaxMajorTicks)(t.width),s=this.trace.timeline.getTimeAxisOrigin();for({type:a,time:i}of(0,f.generateTicks)(r,o,s)){var l=Math.floor(n.timeToPx(i));a===f.TickType.MAJOR&&e.fillRect(l,0,1,t.height)}}var r=this.trace.timeline.selectedSpan,c=this.trace.selection.selection;void 0!==r?(o=g.Time.min(r.start,r.end),s=g.Time.max(r.start,r.end),this.renderSpan(e,n,t,o,s)):\"area\"===c.kind?(r=g.Time.min(c.start,c.end),o=g.Time.max(c.start,c.end),this.renderSpan(e,n,t,r,o)):\"track_event\"===c.kind&&void 0!==c.dur&&(s=c.ts,r=g.Time.add(c.ts,c.dur),0n===c.dur?this.renderInstantEvent(e,n,t,c.ts):s<r&&this.renderSpan(e,n,t,s,r)),void 0!==this.trace.timeline.hoverCursorTimestamp&&this.renderHover(e,n,t,this.trace.timeline.hoverCursorTimestamp);for(const d of this.trace.notes.notes.values()){var u=\"note\"===c.kind&&c.id===d.id;\"SPAN\"===d.noteType&&u&&this.renderSpan(e,n,t,d.start,d.end)}e.restore()}renderHover(e,t,r,n){const a=Math.floor(t.timeToPx(n)),i=this.getBBoxFromSize(r);if(i.x<=a&&a<=i.x+i.width){r=this.trace.timeline.toDomainTime(n);const f=this.stringifyTimestamp(r);var r=e,o=a,s=i,l=f;if(!(o<s.x)){r.fillStyle=y.COLOR_TEXT_MUTED,r.fillRect(o,0,1,s.width);var c=Math.floor(s.height/2+s.y),u=r.measureText(l).width;let e;o+3+u>s.width?(e=o-3,r.textAlign=\"right\"):(e=o+3,r.textAlign=\"left\"),r.fillStyle=y.COLOR_BACKGROUND,r.fillRect(e-1,0,u+2,s.height),r.textBaseline=\"middle\",r.fillStyle=y.COLOR_TEXT_MUTED,r.font=\"10px \"+y.FONT_COMPACT,r.fillText(l,e,c)}}else{e.save(),e.font=\"10px \"+y.FONT_COMPACT,e.textBaseline=\"middle\";var d,p,o=Math.floor(i.height/2);const{label:f,labelWidth:h,textX:m}=a<i.x?(p=g.Time.sub(t.timeSpan.start.toTime(),n),p=\"← \"+(0,_.formatDuration)(this.trace,p),d=e.measureText(p).width,{textX:i.x,label:p,labelWidth:d}):(p=g.Time.sub(n,t.timeSpan.end.toTime()),{label:d=(0,_.formatDuration)(this.trace,p)+\" →\",labelWidth:p=e.measureText(d).width,textX:i.x+i.width-p});e.fillStyle=y.COLOR_BACKGROUND,e.fillRect(m-1,0,h+2,i.height),e.fillStyle=y.COLOR_TEXT,e.fillText(f,m,o),e.restore()}}renderSpan(t,r,n,a,i){var o=r.timeToPx(a),r=r.timeToPx(i),i=(0,_.formatDuration)(this.trace,i-a);{a=t,t={x:o,y:0,width:r-o,height:n.height},r=this.getBBoxFromSize(n),o=i,a.fillStyle=y.COLOR_TEXT_MUTED;var n=Math.floor(t.x),i=Math.floor(t.x+t.width),s=Math.floor(t.height/2+t.y),l=i-n,l=(a.beginPath(),a.rect(r.x,r.y,r.width,r.height),a.clip(),a.fillRect(n,s,l,1),a.fillRect(n,t.y,1,t.height),a.fillRect(i,t.y,1,t.height),a.measureText(o).width),c=Math.max(n,r.x),u=Math.min(i,r.x+r.width),c=Math.floor((c+u)/2);let e=Math.floor(c-l/2);(l>t.width||e<r.x||e+l>r.x+r.width)&&(e=i>r.x+r.width?n-l-3:i+3),a.fillStyle=y.COLOR_BACKGROUND,a.fillRect(e-1,0,l+1,t.height),a.textBaseline=\"middle\",a.fillStyle=y.COLOR_TEXT_MUTED,a.font=\"10px \"+y.FONT_COMPACT,a.fillText(o,e,s)}}renderInstantEvent(e,t,r,n){var t=t.timeToPx(n);n=e,e={x:t,y:0,width:0,height:r.height},t=this.getBBoxFromSize(r),(r=Math.floor(e.x))<t.x||r>t.x+t.width||(n.fillStyle=y.COLOR_TEXT,e=Math.floor(e.height/2+e.y),n.beginPath(),n.rect(t.x,t.y,t.width,t.height),n.clip(),t=e+1,n.beginPath(),n.moveTo(r-4,t-4),n.lineTo(r+4,t-4),n.lineTo(r,t+4),n.closePath(),n.fill())}getBBoxFromSize(e){return{x:0,y:0,width:e.width,height:e.height}}stringifyTimestamp(e){var t=this.trace.timeline.timestampFormat;switch(t){case a.TimestampFormat.UTC:case a.TimestampFormat.CustomTimezone:case a.TimestampFormat.TraceTz:case a.TimestampFormat.Timecode:return g.Time.toTimecode(e).toString(\" \");case a.TimestampFormat.TraceNs:return e.toString();case a.TimestampFormat.TraceNsLocale:return e.toLocaleString();case a.TimestampFormat.Seconds:return g.Time.formatSeconds(e);case a.TimestampFormat.Milliseconds:return g.Time.formatMilliseconds(e);case a.TimestampFormat.Microseconds:return g.Time.formatMicroseconds(e);default:(0,n.assertUnreachable)(t)}}}}return $8}var Y8,J8,Q8={};function Z8(){if(!Y8){Y8=1,Object.defineProperty(Q8,\"__esModule\",{value:!0}),Q8.shiftDragPanInteraction=function(t,e,r){return{id:\"drag-pan\",area:e,cursor:\"grab\",keyModifier:\"shift\",drag:{cursorWhileDragging:\"grabbing\",onDrag:e=>{t.timeline.panVisibleWindow(r.pxToDuration(-e.deltaSinceLastEvent.x))}}}},Q8.wheelNavigationInteraction=function(r,n,a){return{id:\"mouse-wheel-navigation\",area:n,onWheel:e=>{var t;Math.abs(e.deltaX)>Math.abs(e.deltaY)?(t=a.pxToDuration(e.deltaX),r.timeline.panVisibleWindow(t)):e.ctrlKey&&(t=(e.deltaY<0?-1:1)*Math.log2(1+Math.abs(e.deltaY)),e=(e.position.x-n.left)/n.width,r.timeline.zoomVisibleWindow(1-t*i,e))}}};const i=-.02}return Q8}var X8,e7,t7={},r7={},n7={};function a7(){if(!X8){X8=1,Object.defineProperty(n7,\"__esModule\",{value:!0}),n7.drawBezierArrow=function(e,t,r,n=30,a={shape:\"none\",orientation:\"auto\"},i={shape:\"none\",orientation:\"auto\"}){var o=l(t,r,a.orientation),s=l(r,t,i.orientation),a=c(e,t,o,a),i=c(e,r,s,i),a=u(o).scale(a),i=u(s).scale(i),t=new d.Vector2D(t).add(a),a=new d.Vector2D(r).add(i),r=u(o).scale(n),i=u(s).scale(n),o=t.add(r),s=a.add(i);e.beginPath(),e.moveTo(t.x,t.y),e.bezierCurveTo(o.x,o.y,s.x,s.y,a.x,a.y),e.stroke()};const d=gi(),f=Pe();function l(e,t,r){switch(r){case\"auto_vertical\":return t.y>e.y?\"south\":\"north\";case\"auto_horizontal\":return t.x>e.x?\"east\":\"west\";case\"auto\":var n=Math.abs(t.y-e.y);return Math.abs(t.x-e.x)<n?t.y>e.y?\"south\":\"north\":t.x>e.x?\"east\":\"west\";default:return r}}function c(e,t,r,n){switch(n.shape){case\"triangle\":var a=n.size??5;{var i=e;var o=t;var s=r;var l=a;const c=function(e){switch(e){case\"north\":return 0;case\"east\":return Math.PI/2;case\"south\":return Math.PI;case\"west\":return 3*Math.PI/2;default:(0,f.assertUnreachable)(e)}}(s),u=Math.cos(c),d=Math.sin(c),p=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1}].map(e=>{var t=e.x*l,e=e.y*l,r=t*u-e*d,t=t*d+e*u;return{x:r+o.x,y:t+o.y}});i.beginPath(),i.moveTo(p[0].x,p[0].y),i.lineTo(p[1].x,p[1].y),i.lineTo(p[2].x,p[2].y),i.closePath(),i.fill()}return a;case\"circle\":return s=e,i=t,a=n.size??3,s.beginPath(),s.arc(i.x,i.y,a,0,2*Math.PI),s.closePath(),s.fill(),0;case\"none\":return 0;default:(0,f.assertUnreachable)(n.shape)}}function u(e){switch(e){case\"north\":return new d.Vector2D({x:0,y:-1});case\"east\":return new d.Vector2D({x:1,y:0});case\"south\":return new d.Vector2D({x:0,y:1});case\"west\":return new d.Vector2D({x:-1,y:0});default:(0,f.assertUnreachable)(e)}}}return n7}function i7(){if(!e7){e7=1,Object.defineProperty(r7,\"__esModule\",{value:!0}),r7.renderFlows=function(u,d,e,t,i,r){const o=new Map(t.map(e=>[e.node,e])),n=(a,i)=>{var o=a.flowToDescendant||a.begin.sliceStartTs>=a.end.sliceStartTs?a.begin.sliceStartTs:a.begin.sliceEndTs,s=a.end.sliceStartTs,o=r.timeToPx(o),s=r.timeToPx(s),l={left:Math.min(o,s),right:Math.max(o,s)};if(c=e,0<=(l=l).right&&l.left<c.width){var l=a.end.sliceId===u.timeline.highlightedSliceId||a.begin.sliceId===u.timeline.highlightedSliceId,c=a.id===u.flows.focusedFlowIdLeft||a.id===u.flows.focusedFlowIdRight;let r=E,n=y;c&&(r=b,n=T),l&&(r=v);c=p(a.begin.trackUri,a.begin.depth,o),l=p(a.end.trackUri,a.end.depth,s);if(c&&l){o=d;a=c;s=l;c=r;l=i;i=n;o.strokeStyle=`hsl(${l}, 50%, ${c}%)`,o.fillStyle=`hsl(${l}, 50%, ${c}%)`,o.lineWidth=i;l=new h.Vector2D(s).sub(new h.Vector2D(a)),c=Math.abs(l.x)>3*m||Math.abs(l.y)>2*m;let e;e=\"vertical_edge\"===a.kind?{orientation:\"east\",shape:\"none\"}:{orientation:\"auto_vertical\",shape:\"circle\",size:g};let t;t=\"vertical_edge\"===s.kind?{orientation:\"west\",shape:c?\"triangle\":\"none\",size:m}:{orientation:\"auto_vertical\",shape:\"circle\",size:g};(0,f.drawBezierArrow)(o,a,s,_,e,t)}}},p=(e,t,r)=>{if(void 0!==e){var n,a=i.getTrackByUri(e);if(a)return(n=o.get(a))?(n=n.verticalBounds,(e=u.tracks.getTrack(e)?.renderer.getSliceVerticalBounds?.(t))?{kind:\"vertical_edge\",x:r,y:((t={top:e.top+n.top,bottom:e.bottom+n.top}).top+t.bottom)/2}:{kind:\"vertical_edge\",x:r,y:(n.top+n.bottom)/2}):(e=a.findClosestVisibleAncestor(),(t=o.get(e))?{kind:\"point\",x:r,y:t.verticalBounds.bottom-s}:void 0)}};u.flows.connectedFlows.forEach(e=>{n(e,l)}),u.flows.selectedFlows.forEach(e=>{for(const t of(0,a.getFlowCategories)(e))if(u.flows.visibleCategories.get(t)||u.flows.visibleCategories.get(a.ALL_CATEGORIES)){n(e,c);break}})};const f=a7(),h=gi(),a=CB(),s=5,m=5,g=3,_=30,l=10,c=230,y=2,T=3,v=45,b=55,E=70}return r7}var o7,s7,l7,c7={};function u7(){if(o7)return c7;o7=1,Object.defineProperty(c7,\"__esModule\",{value:!0}),c7.TrackView=void 0;const m=Jr,p=m.__importDefault(xe()),g=jo(),t=be(),_=gi(),s=Ae(),y=d8(),i=za(),f=K(),l=je(),r=Se(),h=KU(),a=Ve(),T=Mi(),v=Df(),o=Oe(),b=Ke(),n=yi(),c=EN();c7.TrackView=class{node;renderer;height;verticalBounds;trace;descriptor;constructor(e,t,r){this.trace=e,(this.node=t).uri&&(this.descriptor=e.tracks.getTrack(t.uri),this.renderer=this.trace.tracks.getTrackFSM(t.uri));e=t,t=this.renderer?.track;t=e.headless?0:e.isSummary&&e.expanded||void 0===(e=t?.getHeight?.())?18:Math.ceil(Math.max(e,18));this.height=t,this.verticalBounds={top:r,bottom:r+t}}renderDOM(r,e){var{scrollToOnCreate:t,reorderable:n=!1,collapsible:a,removable:i}=r;const{node:o,renderer:s,height:l}=this;var c=s?.desc.description,c=r.lite?[]:[s?.track.getTrackShellButtons?.(),void 0!==c&&this.renderHelpButton(\"function\"==typeof c?c():c),(i||o.removable)&&this.renderCloseButton(),!o.isSummary&&this.renderPinButton(),this.renderTrackMenuButton(),this.renderAreaSelectionCheckbox()];let u=!1;i=this.trace.tracks;function d(e){(0,b.showModal)({title:\"Error\",content:e,buttons:[{text:\"OK\"}]})}return i.scrollToTrackNodeId===o.id&&(i.scrollToTrackNodeId=void 0,u=!0),(0,p.default)(h.TrackShell,{id:o.id,title:o.name,subtitle:s?.desc.subtitle,ref:o.fullPath.join(\"/\"),heightPx:l,error:s?.getError(),chips:s?.desc.chips,buttons:c,scrollToOnCreate:t||u,collapsible:a&&o.hasChildren,collapsed:a&&o.collapsed,highlight:this.isHighlighted(),summary:o.isSummary,reorderable:n,depth:r.depth,stickyTop:r.stickyTop,pluginId:s?.desc.pluginId,lite:r.lite,onCollapsedChanged:()=>{o.hasChildren&&o.toggleCollapsed()},onTrackContentMouseMove:(e,t)=>{t=this.getTimescaleForBounds(t);s?.track.onMouseMove?.({...e,timescale:t}),f.raf.scheduleCanvasRedraw(),r.onTrackMouseOver()},onTrackContentMouseOut:()=>{s?.track.onMouseOut?.(),f.raf.scheduleCanvasRedraw(),r.onTrackMouseOut()},onTrackContentClick:(e,t)=>{t=this.getTimescaleForBounds(t);return f.raf.scheduleCanvasRedraw(),s?.track.onMouseClick?.({...e,timescale:t})??!1},onupdate:()=>{s?.track.onFullRedraw?.()},onMoveBefore:e=>{var e=o.workspace?.getTrackById(e),t=this.node.parent;e&&t&&((t=t.addChildBefore(e,o)).ok||d(t.error))},onMoveInside:e=>{var e=o.workspace?.getTrackById(e);e&&((e=this.node.addChildLast(e)).ok?this.node.expand():d(e.error))},onMoveAfter:e=>{var e=o.workspace?.getTrackById(e),t=this.node.parent;e&&t&&((t=t.addChildAfter(e,o)).ok||d(t.error))}},e)}drawCanvas(e,t,r,n,a){var i={stack:[],error:void 0,hasError:!1};try{var o,s,l,c,u,d,{node:p,renderer:f,verticalBounds:h}=this;p.isSummary&&p.expanded||f?.getError()||(o=new _.Rect2D({...t,...h}),m.__addDisposableResource(i,(0,g.canvasSave)(e),!1),(0,g.canvasClip)(e,o),e.translate(o.left,o.top),s=new y.TimeScale(r,{left:0,right:o.width}),(l=(0,v.calculateResolution)(r,o.width)).ok&&(c={COLOR_BORDER:T.COLOR_BORDER,COLOR_BORDER_SECONDARY:T.COLOR_BORDER_SECONDARY,COLOR_BACKGROUND_SECONDARY:T.COLOR_BACKGROUND_SECONDARY,COLOR_ACCENT:T.COLOR_ACCENT,COLOR_BACKGROUND:T.COLOR_BACKGROUND,COLOR_NEUTRAL:T.COLOR_NEUTRAL,COLOR_TEXT:T.COLOR_TEXT,COLOR_TEXT_MUTED:T.COLOR_TEXT_MUTED},u=performance.now(),p.uri&&f?.render({trackUri:p.uri,visibleWindow:r,size:o,resolution:l.value,ctx:e,timescale:s,theme:c}),this.highlightIfTrackInAreaSelection(e,s,o),d=performance.now()-u,n)&&this.updateAndRenderTrackPerfStats(e,o,d,a))}catch(e){i.error=e,i.hasError=!0}finally{m.__disposeResources(i)}}renderCloseButton(){return(0,p.default)(l.Button,{onclick:()=>{this.node.remove()},icon:s.Icons.Close,title:\"Remove track\",compact:!0})}renderPinButton(){const e=this.node.isPinned;return(0,p.default)(l.Button,{className:(0,t.classNames)(!e&&\"pf-visible-on-hover\"),onclick:()=>{e?this.node.unpin():this.node.pin()},icon:s.Icons.Pin,iconFilled:e,title:e?\"Unpin\":\"Pin to top\",compact:!0})}renderHelpButton(e){return(0,p.default)(n.Popup,{trigger:(0,p.default)(l.Button,{className:(0,t.classNames)(\"pf-visible-on-hover\"),icon:s.Icons.Help,compact:!0})},e)}renderTrackMenuButton(){return(0,p.default)(r.PopupMenu,{trigger:(0,p.default)(l.Button,{className:\"pf-visible-on-hover\",icon:\"more_vert\",compact:!0,title:\"Track options\"})},(0,p.default)(e,{trace:this.trace,node:this.node,descriptor:this.descriptor}))}getTimescaleForBounds(e){var t=this.trace.timeline.visibleWindow;return new y.TimeScale(t,{left:0,right:e.right-e.left})}isHighlighted(){var{trace:e,node:t}=this,r=e.search.resultIndex,n=e.search.searchResults;if(-1!==r&&void 0!==n){n=n.trackUris[r];if(n===t.uri||t.getTrackByUri(n))return!0}r=e.selection;return\"track\"===r.selection.kind&&r.selection.trackUri===t.uri}renderAreaSelectionCheckbox(){var{trace:e,node:t}=this;const r=e.selection,n=r.selection;if(\"area\"===n.kind){if(t.isSummary){const i=t.flatTracks.filter(e=>void 0!==e.uri);e=i.map(e=>n.trackUris.includes(e.uri));function a(e,t){return(0,p.default)(l.Button,{onclick:()=>{var e=i.map(e=>e.uri);r.toggleGroupAreaSelection(e)},compact:!0,icon:e,title:t})}return e.every(e=>e)?a(s.Icons.Checkbox,\"Remove child tracks from selection\"):e.some(e=>e)?a(s.Icons.IndeterminateCheckbox,\"Add remaining child tracks to selection\"):a(s.Icons.BlankCheckbox,\"Add child tracks to selection\")}{const o=t.uri;if(o)return\"area\"===n.kind&&(0,p.default)(l.Button,{onclick:()=>{r.toggleTrackAreaSelection(o)},compact:!0,...n.trackUris.includes(o)?{icon:s.Icons.Checkbox,title:\"Remove track\"}:{icon:s.Icons.BlankCheckbox,title:\"Add track to selection\"}})}}}highlightIfTrackInAreaSelection(t,r,n){var a,i=this.trace.selection.selection;if(\"area\"===i.kind){let e=!1;this.node.isSummary?e=i.trackUris.some(e=>this.node.getTrackByUri(e)):void 0!==this.node.uri&&(e=i.trackUris.includes(this.node.uri)),e&&(a=i.end-i.start,t.globalAlpha=.3,t.fillStyle=T.COLOR_ACCENT,t.fillRect(r.timeToPx(i.start),0,r.durationToPx(a),n.height),t.globalAlpha=1)}}updateAndRenderTrackPerfStats(e,t,r,n){let a=n.get(this.node);void 0===a&&(a=new i.PerfStats,n.set(this.node,a)),a.addValue(r),e.strokeStyle=\"rgba(69, 187, 73, 0.5)\";e.lineWidth=1,e.strokeRect(.5,.5,t.width-1,t.height-1);e.font=\"10px sans-serif\",e.textAlign=\"start\",e.textBaseline=\"alphabetic\",e.direction=\"inherit\",e.fillStyle=\"hsl(97, 100%, 96%)\",e.fillRect(t.width-300,t.height-20,300,20),e.fillStyle=\"hsla(122, 77%, 22%)\";n=`Track ${this.node.id} | `+(0,i.runningStatStr)(a);e.fillText(n,t.width-300,t.height-10)}};const e={view({attrs:t}){return[(0,p.default)(r.MenuItem,{label:\"Select track\",icon:\"select\",disabled:!t.node.uri,onclick:()=>{t.trace.selection.selectTrack(t.node.uri)},title:t.node.uri?\"Select track\":\"Track has no URI and cannot be selected\"}),(0,p.default)(r.MenuItem,{label:\"Track details\",icon:\"info\"},function(e,t){const r=e.fullPath.join(\" ‣ \"),n=t?.renderer.getDataset?.()?.query();return(0,p.default)(\".pf-track__track-details-popup\",(0,p.default)(a.Tree,(0,p.default)(a.TreeNode,{left:\"Track Node ID\",right:e.id}),(0,p.default)(a.TreeNode,{left:\"Collapsed\",right:\"\"+e.collapsed}),(0,p.default)(a.TreeNode,{left:\"URI\",right:e.uri}),(0,p.default)(a.TreeNode,{left:\"Is Summary Track\",right:\"\"+e.isSummary}),(0,p.default)(a.TreeNode,{left:\"SortOrder\",right:e.sortOrder??\"0 (undefined)\"}),(0,p.default)(a.TreeNode,{left:\"Path\",right:r}),(0,p.default)(a.TreeNode,{left:\"Name\",right:e.name}),(0,p.default)(a.TreeNode,{left:\"Workspace\",right:e.workspace?.title??\"[no workspace]\"}),t&&(0,p.default)(a.TreeNode,{left:\"Plugin ID\",right:t.pluginId}),n&&(0,p.default)(a.TreeNode,{left:\"Track Query\",right:(0,p.default)(o.Anchor,{onclick:()=>{(0,b.showModal)({title:\"Query for track\",content:()=>(0,p.default)(c.CodeSnippet,{text:n,language:\"SQL\"})})}},\"Show query\")}),t&&(0,p.default)(a.TreeNode,{left:\"Tags\"},t.tags&&Object.entries(t.tags).map(([e,t])=>(0,p.default)(a.TreeNode,{left:e,right:t?.toString()})))))}(t.node,t.descriptor)),(0,p.default)(r.MenuDivider),(0,p.default)(r.MenuItem,{label:\"Copy to workspace\",icon:\"content_copy\"},t.trace.workspaces.all.map(e=>(0,p.default)(r.MenuItem,{label:e.title,disabled:!e.userEditable,onclick:()=>u(t.trace,t.node,e)})),(0,p.default)(r.MenuDivider),(0,p.default)(r.MenuItem,{label:\"New workspace...\",icon:\"add\",onclick:()=>u(t.trace,t.node)})),(0,p.default)(r.MenuItem,{label:\"Copy & switch to workspace\",icon:\"content_copy\"},t.trace.workspaces.all.map(e=>(0,p.default)(r.MenuItem,{label:e.title,disabled:!e.userEditable,onclick:async()=>{u(t.trace,t.node,e),t.trace.workspaces.switchWorkspace(e)}})),(0,p.default)(r.MenuDivider),(0,p.default)(r.MenuItem,{label:\"New workspace...\",icon:\"add\",onclick:async()=>{var e=u(t.trace,t.node);t.trace.workspaces.switchWorkspace(e)}})),(0,p.default)(r.MenuDivider),(0,p.default)(r.MenuItem,{label:\"Rename\",icon:\"edit\",disabled:!t.node.workspace?.userEditable,onclick:async()=>{var e=await t.trace.omnibox.prompt(\"New name\");e&&(t.node.name=e)}}),(0,p.default)(r.MenuItem,{label:\"Remove\",icon:\"delete\",disabled:!t.node.workspace?.userEditable,onclick:()=>{t.node.remove()}})]}};function u(e,t,r){r=r||e.workspaces.createEmptyWorkspace(\"Untitled Workspace\");e=t.clone(!0);return e.removable=!0,r.addChildLast(e),r}return c7}function d7(){if(s7)return t7;s7=1,Object.defineProperty(t7,\"__esModule\",{value:!0}),t7.TrackTreeView=void 0;const p=Jr,i=no(),o=p.__importDefault(xe()),f=jo(),g=be();var e=Le();const t=_i(),h=gi(),s=vp(),r=bp(),l=Pe(),c=Fe(),m=d8(),n=m8(),a=za(),_=Iu(),y=Mi(),T=i7(),u=T8(),d=Z8(),v=u7(),b=yU();var E=go();const S=nu(),A=je(),O=Be(),C=QU(),w=E.featureFlags.register({id:\"virtualTrackScrolling\",name:\"Virtual track scrolling\",description:`[Experimental] Use virtual scrolling in the timeline view to\n    improve performance on large traces.`,defaultValue:!1}),k=\"track-container\";t7.TrackTreeView=class{trace;trash=new e.DisposableStack;interactions;perfStatsEnabled=!1;trackPerfStats=new WeakMap;perfStats={totalTracks:0,tracksOnCanvas:0,renderStats:new a.PerfStats(10)};areaDrag;handleDrag;canvasRect;constructor({attrs:e}){this.trace=e.trace}hoveredTrackNode;view({attrs:t}){const{trace:s,scrollToNewTracks:l,canReorderNodes:c,canRemoveNodes:u,className:e,rootNode:n,trackFilter:r,filtersApplied:d}=t,p=new Array;let f=0;function h(e){return!r||!!r(e)||!!e.children?.some(h)}const m=(e,t=0,r=0)=>{if(h(e)){if(e.headless)return e.children.map(e=>m(e,t,r));const i=new v.TrackView(s,e,f),o=(p.push(i),f+=i.height,e.isSummary?r+i.height:r);var n=(e.expanded||d)&&e.hasChildren&&e.children.map(e=>m(e,t+1,o)),a=!w.get()||this.canvasRect?.overlaps({left:0,right:1,...i.verticalBounds});return i.renderDOM({lite:!Boolean(a),scrollToOnCreate:l,reorderable:c,removable:u,stickyTop:r,depth:t,collapsible:!d,onTrackMouseOver:()=>{this.hoveredTrackNode=e},onTrackMouseOut:()=>{this.hoveredTrackNode=void 0}},n)}};var a=n.children.map(e=>m(e));return a.every(e=>!Boolean(e))?d?(0,o.default)(S.EmptyState,{className:e,icon:\"filter_alt_off\",title:\"No tracks match track filter\"},(0,o.default)(A.Button,{intent:O.Intent.Primary,variant:A.ButtonVariant.Filled,label:\"Clear track filter\",onclick:()=>s.tracks.filters.clearAll()})):(0,o.default)(S.EmptyState,{className:e,icon:\"inbox\",title:\"Empty workspace\"}):(0,o.default)(_.VirtualOverlayCanvas,{onMount:e=>t.trace.raf.addCanvasRedrawCallback(e),disableCanvasRedrawOnMithrilUpdates:!0,className:(0,g.classNames)(e,\"pf-track-tree\"),overflowY:\"auto\",overflowX:\"hidden\",onCanvasRedraw:({ctx:e,virtualCanvasSize:t,canvasRect:r})=>{this.drawCanvas(e,t,p,r,n),!w.get()||void 0!==this.canvasRect&&this.canvasRect.equals(r)||(this.canvasRect=r,o.default.redraw())}},(0,o.default)(\"\",{ref:k},a),this.hoveredTrackNode&&this.renderPopup(this.hoveredTrackNode))}renderPopup(e){e=(e.uri?this.trace.tracks.getTrack(e.uri):void 0)?.renderer.renderTooltip?.();if(Boolean(e))return(0,o.default)(C.CursorTooltip,{className:\"pf-track__tooltip\"},e)}oncreate(e){this.trash.use(e.attrs.trace.perfDebugging.addContainer({setPerfStatsEnabled:e=>{this.perfStatsEnabled=e},renderPerfStats:()=>[(0,o.default)(\"\",this.perfStats.totalTracks+\" tracks, \"+this.perfStats.tracksOnCanvas+\" on canvas.\"),(0,o.default)(\"\",(0,a.runningStatStr)(this.perfStats.renderStats))]})),this.onupdate(e)}onupdate({dom:e}){e=(0,t.findRef)(e,k)??void 0;e!==this.interactions?.target&&(this.interactions?.[Symbol.dispose](),this.interactions=e?new n.ZonedInteractionHandler((0,t.toHTMLElement)(e)):void 0)}onremove(){this.interactions?.[Symbol.dispose]()}drawCanvas(t,r,n,e,a){var i={stack:[],error:void 0,hasError:!1};try{var o=new h.Rect2D({left:y.TRACK_SHELL_WIDTH,top:0,right:r.width,bottom:r.height}),s=this.trace.timeline.visibleWindow;const d=new m.TimeScale(s,o);var l=performance.now(),c=(p.__addDisposableResource(i,(0,f.canvasSave)(t),!1),(0,f.canvasClip)(t,o),this.drawGridLines(t,d,o),this.drawTracks(n,e,r,t,o,s)),u=((0,T.renderFlows)(this.trace,t,r,n,a,d),this.drawHoveredNoteVertical(t,d,r),this.drawHoveredCursorVertical(t,d,r),this.drawNoteVerticals(t,d,r),this.drawAreaSelection(t,d,r),this.updateInteractions(o,d,r,n),this.trace.tracks.overlays.forEach(e=>{e.render(t,d,r,n)}),performance.now()-l);this.updatePerfStats(u,n.length,c)}catch(e){i.error=e,i.hasError=!0}finally{p.__disposeResources(i)}}drawGridLines(e,t,r){if(e.strokeStyle=y.COLOR_BORDER_SECONDARY,e.lineWidth=1,0<r.width&&0n<t.timeSpan.duration){var n,a,i=(0,u.getMaxMajorTicks)(r.width),o=this.trace.timeline.getTimeAxisOrigin();for({type:n,time:a}of(0,u.generateTicks)(t.timeSpan.toTimeSpan(),i,o)){var s=Math.floor(t.timeToPx(a));n===u.TickType.MAJOR&&(e.beginPath(),e.moveTo(s+.5,0),e.lineTo(s+.5,r.height),e.stroke())}}}drawTracks(e,t,r,n,a,i){let o=0;for(const l of e){var s=l[\"verticalBounds\"];t.overlaps({...s,left:0,right:r.width})&&(l.drawCanvas(n,a,i,this.perfStatsEnabled,this.trackPerfStats),++o)}return o}updateInteractions(e,r,t,n){const a=this.trace,i=\"area\"===a.selection.selection.kind&&a.selection.selection;(0,l.assertExists)(this.interactions).update([(0,d.shiftDragPanInteraction)(a,e,r),!1!==i&&{id:\"start-edit\",area:new h.Rect2D({left:r.timeToPx(i.start)-5,right:r.timeToPx(i.start)+5,top:0,bottom:t.height}),cursor:\"col-resize\",drag:{cursorWhileDragging:\"col-resize\",onDrag:e=>{this.handleDrag||(this.handleDrag=new R(new s.HighPrecisionTime(i.end))),this.handleDrag.currentTime=r.pxToHpTime(e.dragCurrent.x),a.timeline.selectedSpan=this.handleDrag.timeSpan().toTimeSpan()},onDragEnd:e=>{e=r.pxToHpTime(e.dragCurrent.x).toTime(\"ceil\");a.selection.selectArea({...i,end:c.Time.max(e,i.end),start:c.Time.min(e,i.end)}),a.timeline.selectedSpan=void 0,this.handleDrag=void 0}}},!1!==i&&{id:\"end-edit\",area:new h.Rect2D({left:r.timeToPx(i.end)-5,right:r.timeToPx(i.end)+5,top:0,bottom:t.height}),cursor:\"col-resize\",drag:{cursorWhileDragging:\"col-resize\",onDrag:e=>{this.handleDrag||(this.handleDrag=new R(new s.HighPrecisionTime(i.start))),this.handleDrag.currentTime=r.pxToHpTime(e.dragCurrent.x),a.timeline.selectedSpan=this.handleDrag.timeSpan().toTimeSpan()},onDragEnd:e=>{e=r.pxToHpTime(e.dragCurrent.x).toTime(\"ceil\");a.selection.selectArea({...i,end:c.Time.max(e,i.start),start:c.Time.min(e,i.start)}),a.timeline.selectedSpan=void 0,this.handleDrag=void 0}}},{id:\"area-selection\",area:e,onClick:()=>{a.selection.clearSelection()},drag:{minDistance:1,cursorWhileDragging:\"crosshair\",onDrag:e=>{this.areaDrag||(this.areaDrag=new I(r.pxToHpTime(e.dragStart.x),e.dragStart.y)),this.areaDrag.update(e,r),this.trace.raf.scheduleCanvasRedraw(),a.timeline.selectedSpan=this.areaDrag.timeSpan().toTimeSpan()},onDragEnd:e=>{this.areaDrag||(this.areaDrag=new I(r.pxToHpTime(e.dragStart.x),e.dragStart.y)),this.areaDrag?.update(e,r);var e=function(e,t,r){var n=[];for(var{node:a,verticalBounds:i}of e)if(new h.Rect2D({...i,left:0,right:1}).overlaps({...t,left:0,right:1}))if(r&&a.isSummary&&a.collapsed)for(const o of a.flatTracks)n.push(o);else n.push(a);return n}(n,this.areaDrag.rect(r),!0).map(e=>e.uri).filter(e=>void 0!==e),t=this.areaDrag.timeSpan().toTimeSpan();a.selection.selectArea({start:t.start,end:t.end,trackUris:e}),a.timeline.selectedSpan=void 0,this.areaDrag=void 0}}},(0,d.wheelNavigationInteraction)(a,e,r)])}updatePerfStats(e,t,r){this.perfStatsEnabled&&(this.perfStats.renderStats.addValue(e),this.perfStats.totalTracks=t,this.perfStats.tracksOnCanvas=r)}drawAreaSelection(e,t,r){this.areaDrag&&(e.strokeStyle=y.COLOR_ACCENT,e.lineWidth=1,a=this.areaDrag.rect(t),e.strokeRect(a.x,a.y,a.width,a.height)),this.handleDrag&&(a=this.handleDrag.hBounds(t),e.strokeStyle=y.COLOR_ACCENT,e.lineWidth=1,e.beginPath(),e.moveTo(a.left,0),e.lineTo(a.left,r.height),e.stroke(),e.closePath(),e.beginPath(),e.moveTo(a.right,0),e.lineTo(a.right,r.height),e.stroke(),e.closePath());var n,a=this.trace.selection.selection;\"area\"===a.kind&&(n=t.timeToPx(a.start),t=t.timeToPx(a.end),e.strokeStyle=y.COLOR_ACCENT,e.lineWidth=2,e.beginPath(),e.moveTo(n,0),e.lineTo(n,r.height),e.stroke(),e.closePath(),e.beginPath(),e.moveTo(t,0),e.lineTo(t,r.height),e.stroke(),e.closePath())}drawHoveredCursorVertical(e,t,r){void 0!==this.trace.timeline.hoverCursorTimestamp&&(0,b.drawVerticalLineAtTime)(e,t,this.trace.timeline.hoverCursorTimestamp,r.height,\"#344596\")}drawHoveredNoteVertical(e,t,r){void 0!==this.trace.timeline.hoveredNoteTimestamp&&(0,b.drawVerticalLineAtTime)(e,t,this.trace.timeline.hoveredNoteTimestamp,r.height,\"#aaa\")}drawNoteVerticals(e,t,r){for(const a of this.trace.notes.notes.values()){var n;\"SPAN\"===a.noteType?(n=\"rgba(\"+i.hex.rgb(a.color.substr(1)).toString()+\", 0.65)\",(0,b.drawVerticalLineAtTime)(e,t,a.start,r.height,n,1),(0,b.drawVerticalLineAtTime)(e,t,a.end,r.height,n,1)):\"DEFAULT\"===a.noteType&&(0,b.drawVerticalLineAtTime)(e,t,a.timestamp,r.height,a.color)}}};class I{startTime;startY;currentTime;currentY;constructor(e,t){this.startTime=e,this.startY=t,this.currentTime=e,this.currentY=t}update(e,t){this.currentTime=t.pxToHpTime(e.dragCurrent.x),this.currentY=e.dragCurrent.y}timeSpan(){return r.HighPrecisionTimeSpan.fromHpTimes(this.startTime,this.currentTime)}rect(e){e=e.hpTimeSpanToPxSpan(this.timeSpan());return h.Rect2D.fromPoints({x:e.left,y:this.startY},{x:e.right,y:this.currentY})}}class R{startTime;currentTime;constructor(e){this.startTime=e,this.currentTime=e}timeSpan(){return r.HighPrecisionTimeSpan.fromHpTimes(this.startTime,this.currentTime)}hBounds(e){e=e.hpTimeSpanToPxSpan(this.timeSpan());return new h.Rect2D({...e,top:0,bottom:0})}}return t7}function p7(){if(l7)return c8;l7=1,Object.defineProperty(c8,\"__esModule\",{value:!0}),c8.renderViewerPage=function(){var e=n.AppImpl.instance.trace;if(e)return(0,r.default)(h,{trace:e})};const r=Jr.__importDefault(xe());var e=Le();const a=_i(),i=d8(),n=Jh();var t=go();const o=K(),s=v8(),l=k8(),c=function(){if(!J8){J8=1,Object.defineProperty(M8,\"__esModule\",{value:!0}),M8.TimelineHeader=void 0;const l=Jr,t=l.__importDefault(xe()),c=jo();var e=Le();const r=_i(),u=gi(),d=Pe(),p=d8(),n=m8(),a=Iu(),f=Mi(),i=F8(),o=G8(),s=z8(),h=K8(),m=Z8();M8.TimelineHeader=class{trash=new e.DisposableStack;trace;panels;interactions;constructor({attrs:e}){this.trace=e.trace,this.panels=[new s.TimeAxisPanel(e.trace),new h.TimeSelectionPanel(e.trace),new i.NotesPanel(e.trace),new o.TickmarkPanel(e.trace)]}view({attrs:r}){return(0,t.default)(\".pf-timeline-header\",{className:r.className},(0,t.default)(a.VirtualOverlayCanvas,{onMount:e=>r.trace.raf.addCanvasRedrawCallback(e),disableCanvasRedrawOnMithrilUpdates:!0,onCanvasRedraw:e=>{var t=new u.Rect2D({left:f.TRACK_SHELL_WIDTH,right:e.virtualCanvasSize.width,top:0,bottom:0});r.onTimelineBoundsChange?.(t),this.drawCanvas(e)}},this.panels.map(e=>e.render())))}oncreate({dom:e}){e=(0,r.toHTMLElement)(e);this.interactions=new n.ZonedInteractionHandler(e),this.trash.use(this.interactions)}onremove(){this.trash.dispose()}drawCanvas({ctx:e,virtualCanvasSize:t}){let r=0;for(const s of this.panels){var n={stack:[],error:void 0,hasError:!1};try{l.__addDisposableResource(n,(0,c.canvasSave)(e),!1);e.translate(0,r),s.renderCanvas(e,{width:t.width,height:s.height}),r+=s.height}catch(e){n.error=e,n.hasError=!0}finally{l.__disposeResources(n)}}var a=new u.Rect2D({left:f.TRACK_SHELL_WIDTH,top:0,right:t.width,bottom:t.height}),i=this.trace.timeline.visibleWindow;const o=new p.TimeScale(i,a);(0,d.assertExists)(this.interactions).update([(0,m.shiftDragPanInteraction)(this.trace,a,o),(0,m.wheelNavigationInteraction)(this.trace,a,o),{id:\"area-selection\",area:a,drag:{minDistance:1,cursorWhileDragging:\"text\",onDrag:e=>{this.trace.raf.scheduleCanvasRedraw();e=u.Rect2D.fromPoints(e.dragStart,e.dragCurrent),e=o.pxSpanToHpTimeSpan(e).toTimeSpan();this.trace.timeline.selectedSpan=e},onDragEnd:e=>{e=u.Rect2D.fromPoints(e.dragStart,e.dragCurrent),e=o.pxSpanToHpTimeSpan(e).toTimeSpan();this.trace.selection.selectArea({start:e.start,end:e.end,trackUris:[]}),this.trace.timeline.selectedSpan=void 0}}}])}}}return M8}(),u=d7(),d=vj(),p=cf(),f=t.featureFlags.register({id:\"overviewVisible\",name:\"Overview Panel\",description:\"Show the panel providing an overview of the trace\",defaultValue:!0});class h{trash=new e.DisposableStack;timelineBounds;view({attrs:e}){const t=e[\"trace\"];return(0,r.default)(\".pf-viewer-page\",(0,r.default)(l.TabPanel,{trace:t},f.get()&&(0,r.default)(s.Minimap,{trace:t,className:\"pf-viewer-page__overview\"}),(0,r.default)(c.TimelineHeader,{trace:t,className:\"pf-viewer-page__header\",onTimelineBoundsChange:e=>this.timelineBounds=e}),!n.AppImpl.instance.isLoadingTrace&&[0<t.workspace.pinnedTracks.length&&(0,r.default)(u.TrackTreeView,{trace:t,className:\"pf-viewer-page__pinned-track-tree\",rootNode:t.workspace.pinnedTracksNode,canReorderNodes:!0,scrollToNewTracks:!0}),(0,r.default)(u.TrackTreeView,{trace:t,className:\"pf-viewer-page__scrolling-track-tree\",rootNode:t.workspace.tracks,canReorderNodes:t.workspace.userEditable,canRemoveNodes:t.workspace.userEditable,trackFilter:e=>(0,p.trackMatchesFilter)(t,e)})]))}oncreate(e){const{attrs:n,dom:t}=e;var r=new d.KeyboardNavigationHandler({element:(0,a.toHTMLElement)(t),onPanned:e=>{var t;this.timelineBounds&&(t=n.trace.timeline,e=new i.TimeScale(t.visibleWindow,this.timelineBounds).pxToDuration(e),t.panVisibleWindow(e),o.raf.scheduleCanvasRedraw())},onZoomed:(e,t)=>{var r;this.timelineBounds&&(r=n.trace.timeline,e=(e-this.timelineBounds.left)/this.timelineBounds.width,r.zoomVisibleWindow(1-t,e),o.raf.scheduleCanvasRedraw())}});this.trash.use(r),this.onupdate(e)}onupdate({attrs:e}){e.trace.tracks.flushOldTracks()}onremove(){this.trash.dispose()}}return c8}var f7,h7={};var m7,g7={},_7={};function y7(){if(!m7){m7=1,Object.defineProperty(_7,\"__esModule\",{value:!0}),_7.SqlTableState=void 0;const r=Ue(),c=Ku(),t=ad(),n=K(),i=Pe(),a=Ml();var e=Qc();const o=gd(),u=Yu(),s=Hi();_7.SqlTableState=class l{trace;config;args;filters;additionalImports;asyncLimiter=new e.AsyncLimiter;columns;orderBy;offset=0;request;data;rowCount;_nonPaginatedData;constructor(e,t,r){if(this.trace=e,this.config=t,this.args=r,this.additionalImports=r?.imports||[],this.filters=r?.filters||new o.Filters,this.filters.addObserver(()=>this.reload()),this.columns=[],void 0!==r?.initialColumns)(0,i.assertTrue)(void 0===r?.additionalColumns,\"Only one of `initialColumns` and `additionalColumns` can be set\"),this.columns.push(...r.initialColumns);else{for(const a of this.config.columns){var n=a.initialColumns?.()??[a];this.columns.push(...n)}void 0!==r?.additionalColumns&&this.columns.push(...r.additionalColumns)}this.orderBy=r?.orderBy??[],this.request=this.buildRequest(),this.reload()}get nonPaginatedData(){return void 0===this._nonPaginatedData&&this.getNonPaginatedData(),this._nonPaginatedData}clone(){return new l(this.trace,this.config,{initialColumns:this.columns,imports:this.args?.imports,filters:new o.Filters(this.filters.get()),orderBy:this.orderBy})}getSQLImports(){return[...this.config.imports||[],...this.additionalImports].map(e=>`INCLUDE PERFETTO MODULE ${e};`).join(\"\\n\")}getCountRowsSQLQuery(){return`\n      ${this.getSQLImports()}\n\n      ${this.getSqlQuery({count:\"COUNT()\"})}\n    `}getSqlQuery(e){return(0,t.buildSqlQuery)({table:this.config.name,columns:e,prefix:this.config.prefix,filters:this.filters.get(),orderBy:this.getOrderedBy()})}buildSqlSelectStatement(){var e={},t=new Set,r={},n=[];for(const s of this.columns){var a=(0,u.tableColumnAlias)(s),i=(a in r||(r[a]=0),a+\"__\"+ ++r[a]);n.push({column:s.column,name:a,alias:i})}for(const l of n){var o=l.column;1===r[l.name]?e[l.name]=o:e[l.alias]=o,t.add((0,c.sqlColumnId)(o))}return{selectStatement:this.getSqlQuery(e),columns:Object.fromEntries(Object.entries(e).map(([e,t])=>[(0,c.sqlColumnId)(t),e]))}}getNonPaginatedSQLQuery(){return`\n      ${this.getSQLImports()}\n\n      ${this.buildSqlSelectStatement().selectStatement}\n    `}getPaginatedSQLQuery(){return this.request}canGoForward(){return void 0!==this.data&&100<this.data.rows.length}canGoBack(){return void 0!==this.data&&0<this.offset}goForward(){this.canGoForward()&&(this.offset+=100,this.reload({offset:\"keep\"}))}goBack(){this.canGoBack()&&(this.offset-=100,this.reload({offset:\"keep\"}))}getDisplayedRange(){if(void 0!==this.data)return{from:this.offset+1,to:this.offset+Math.min(this.data.rows.length,100)}}async loadRowCount(){var e=Array.from(this.filters.get()),t=await this.trace.engine.query(this.getCountRowsSQLQuery());if(void 0===t.error())return{count:t.firstRow({count:r.NUM}).count,filters:e}}buildRequest(){var{selectStatement:e,columns:t}=this.buildSqlSelectStatement();return{selectStatement:e,query:`\n      ${this.getSQLImports()}\n      ${e}\n      LIMIT 101\n      OFFSET ${this.offset}\n    `,columns:t}}async loadData(){for(var e=await this.trace.engine.query(this.request.query),t=[],r=e.iter({});r.valid();r.next()){var n={};for(const a of e.columns())n[a]=r.get(a);t.push(n)}return{rows:t,error:e.error()}}async reload(e){\"reset\"===(e?.offset??\"reset\")&&(this.offset=0);var e=(e=this.rowCount?.filters)&&(0,o.areFiltersEqual)(e,this.filters.get()),t=(this.data=void 0,this.buildRequest()),e=(this.request=t,e||(this.rowCount=void 0),setTimeout(()=>n.raf.scheduleFullRedraw(),50),e||(this.rowCount=await this.loadRowCount()),await this.loadData());this.request===t&&(this.data=e,n.raf.scheduleFullRedraw())}async getNonPaginatedData(){this.asyncLimiter.schedule(async()=>{var e=await(0,a.runQueryForQueryTable)(this.getNonPaginatedSQLQuery(),this.trace.engine);this._nonPaginatedData={rows:e.rows,error:e.error},n.raf.scheduleFullRedraw()})}getTotalRowCount(){return this.rowCount?.count}getCurrentRequest(){return this.request}getDisplayedRows(){return this.data?.rows||[]}getQueryError(){return this.data?.error}isLoading(){return void 0===this.data}sortBy(t){this.orderBy=this.orderBy.filter(e=>(0,u.tableColumnId)(e.column)!=(0,u.tableColumnId)(t.column)),void 0!==t.direction&&(this.orderBy.unshift({column:t.column,direction:t.direction}),this.reload())}isSortedBy(e){if(0!==this.orderBy.length&&(0,u.tableColumnId)(this.orderBy[0].column)===(0,u.tableColumnId)(e))return this.orderBy[0].direction}getOrderedBy(){var e=[];for(const t of this.orderBy)e.push({column:t.column.column,direction:t.direction});return e}addColumn(e,t){this.columns.splice(t+1,0,e),this.reload({offset:\"keep\"})}hideColumnAtIndex(e){const t=this.columns[e];this.columns.splice(e,1),this.orderBy=this.orderBy.filter(e=>(0,u.tableColumnId)(e.column)!==(0,u.tableColumnId)(t)),this.reload({offset:\"keep\"})}moveColumn(e,t){(0,s.moveArrayItem)(this.columns,e,t)}getSelectedColumns(){return this.columns}}}return _7}var T7,v7={};function b7(){if(!T7){T7=1,Object.defineProperty(v7,\"__esModule\",{value:!0}),v7.SqlTable=void 0,v7.columnTitle=i,v7.getTableManager=c;const o=Jr.__importDefault(xe()),s=Se(),r=ad(),l=Ae(),u=j(),n=Ei(),d=kc(),p=bd(),f=Ll(),h=Vl(),a=Yu(),m=Ku(),g=td();class _{index;constructor({attrs:e}){this.index=e.index}view({attrs:t}){return(0,o.default)(s.MenuItem,{label:\"Add column\",icon:l.Icons.Add},t.table.renderAddColumnOptions(e=>{t.state.addColumn(e,this.index++)}))}}class y{inputValue;constructor(){this.inputValue=\"\"}view({attrs:e}){const{filterOption:t,columns:r,state:n}=e,{op:a,requiresParam:i}=p.LegacySqlTableFilterOptions[t];return(0,o.default)(s.MenuItem,{label:t,onclick:i?void 0:()=>{n.filters.addFilter({op:e=>e[0]+\" \"+a,columns:r})}},i&&(0,o.default)(f.Form,{onSubmit:()=>{if(\"\"!==this.inputValue){let t;t=(Number.isNaN(Number.parseFloat(this.inputValue))?(0,u.sqliteString):Number.isInteger(Number.parseFloat(this.inputValue))?BigInt:Number)(this.inputValue),n.filters.addFilter({op:e=>`${e[0]} ${a} `+t,columns:r})}},submitLabel:\"Filter\"},(0,o.default)(h.TextInput,{id:\"column_filter_value\",ref:\"COLUMN_FILTER_VALUE\",autofocus:!0,oninput:e=>{e.target&&(this.inputValue=e.target.value)}})))}}function i(e){if(void 0!==e.getTitle){var t=e.getTitle();if(void 0!==t)return t}return(0,m.sqlColumnId)(e.column)}function c(t){return{filters:t.filters,trace:t.trace,getSqlQuery:e=>(0,r.buildSqlQuery)({table:t.config.name,columns:e,filters:t.filters.get(),orderBy:t.getOrderedBy()})}}v7.SqlTable=class{table;state;constructor(e){this.state=e.attrs.state,this.table=this.state.config}renderAddColumnOptions(e){var t=new Set;for(const r of this.state.getSelectedColumns())t.add((0,a.tableColumnId)(r));return(0,o.default)(g.SelectColumnMenu,{columns:this.table.columns.map(e=>({key:i(e),column:e})),manager:c(this.state),existingColumnIds:t,onColumnSelected:e})}renderColumnFilterOptions(t){return Object.keys(p.LegacySqlTableFilterOptions).map(e=>(0,o.default)(y,{filterOption:e,columns:[t.column],state:this.state}))}getAdditionalColumnMenuItems(r){if(void 0!==r){const n={};return this.state.getSelectedColumns().forEach(e=>{var t=this.state.getCurrentRequest().columns[(0,m.sqlColumnId)(e.column)];n[t]=r(e,t)}),n}}view({attrs:e}){var t=this.state.getDisplayedRows();const a=this.getAdditionalColumnMenuItems(e.addColumnMenuItems),r=this.state.getSelectedColumns();return[(0,o.default)(d.Grid,{className:\"sql-table\",fillHeight:!0},[(0,o.default)(d.GridHeader,(0,o.default)(d.GridRow,r.map((t,e)=>{var r=this.state.isSortedBy(t),n=[(0,d.renderSortMenuItems)(r,e=>this.state.sortBy({column:t,direction:e})),(0,o.default)(s.MenuDivider),1<this.state.getSelectedColumns().length&&(0,o.default)(s.MenuItem,{label:\"Hide\",icon:l.Icons.Hide,onclick:()=>this.state.hideColumnAtIndex(e)}),(0,o.default)(s.MenuItem,{label:\"Add filter\",icon:l.Icons.Filter},this.renderColumnFilterOptions(t)),a&&a[this.state.getCurrentRequest().columns[(0,m.sqlColumnId)(t.column)]],(0,o.default)(s.MenuDivider),(0,o.default)(_,{table:this,state:this.state,index:e})];return(0,o.default)(d.GridHeaderCell,{key:e,sort:r,onSort:e=>{this.state.sortBy({column:t,direction:e})},menuItems:n,reorderable:{handle:\"column\"},onReorder:(e,t,r)=>{\"number\"==typeof e&&\"number\"==typeof t&&this.state.moveColumn(e,\"before\"===r?t:t+1)}},i(t))}))),(0,o.default)(d.GridBody,t.map(a=>(0,o.default)(d.GridRow,r.map(e=>{var{content:e,menu:t,isNumerical:r,isNull:n}=function(e,t,r){var n,a,i=r.getCurrentRequest()[\"columns\"],o=t[i[(0,m.sqlColumnId)(e.column)]],s={},l=e.supportingColumns?.()??{};for([n,a]of Object.entries(l))s[n]=t[i[(0,m.sqlColumnId)(a)]];return e.renderCell(o,c(r),s)}(e,a,this.state);return(0,o.default)(d.GridDataCell,{menuItems:t,align:n?\"center\":r?\"right\":\"left\",isMissing:n},e)}))))]),this.state.isLoading()&&(0,o.default)(n.Spinner),void 0!==this.state.getQueryError()&&(0,o.default)(\".query-error\",this.state.getQueryError())]}}}return v7}var E7,S7={},A7={},O7={};var C7,w7,k7,I7={};function R7(){if(!w7){var t,e;w7=1,Object.defineProperty(A7,\"__esModule\",{value:!0}),A7.ChartType=void 0,A7.toTitleCase=function(e){var t=e.split(/\\s/);for(let e=0;e<t.length;++e)t[e]=t[e][0].toUpperCase()+t[e].substring(1);return t.join(\" \")},A7.renderChart=function(e){switch(e.chartType){case t.BAR_CHART:return(0,r.default)(a.BarChart,e);case t.HISTOGRAM:return(0,r.default)(n.Histogram,e);default:return}};const r=Jr.__importDefault(xe()),n=function(){if(!E7){E7=1,Object.defineProperty(O7,\"__esModule\",{value:!0}),O7.Histogram=void 0;const e=Jr.__importDefault(xe()),r=ex(),n=N2(),a=Ei(),t=Pe();O7.Histogram=class{getVegaSpec(e){return{$schema:\"https://vega.github.io/schema/vega-lite/v5.json\",width:\"container\",mark:\"bar\",data:{values:(0,t.assertExists)(e.data)},params:[{name:n.VegaLiteSelectionTypes.INTERVAL,select:{type:n.VegaLiteSelectionTypes.INTERVAL,encodings:[\"x\"]}},{name:n.VegaLiteSelectionTypes.POINT,select:{type:n.VegaLiteSelectionTypes.POINT}}],encoding:{x:{bin:!0,field:e.columns[0],title:e.columns[0],axis:{labelLimit:500}},y:{aggregate:\"count\",title:\"Count\"}}}}view({attrs:t}){return this.isLoading(t.data)?(0,e.default)(a.Spinner):(0,e.default)(\"figure\",{className:\"chart\"},(0,e.default)(n.VegaView,{spec:(0,r.stringifyJsonWithBigints)(this.getVegaSpec(t)),data:{},eventHandlers:[{name:\"click\",handler:({item:e})=>{e&&void 0!==t.onPointSelection&&t.onPointSelection(e)}}],signalHandlers:[{name:n.VegaLiteSelectionTypes.INTERVAL,handler:({value:e})=>{void 0!==t.onIntervalSelection&&t.onIntervalSelection(e)}}]}))}isLoading(e){return void 0===e}}}return O7}(),a=function(){if(!C7){C7=1,Object.defineProperty(I7,\"__esModule\",{value:!0}),I7.BarChart=void 0;const e=Jr.__importDefault(xe()),r=N2(),n=Ei(),a=ex(),t=Pe();I7.BarChart=class{getVegaSpec(e){return{$schema:\"https://vega.github.io/schema/vega-lite/v5.json\",width:\"container\",mark:\"bar\",data:{values:(0,t.assertExists)(e.data)},params:[{name:r.VegaLiteSelectionTypes.INTERVAL,select:{type:r.VegaLiteSelectionTypes.INTERVAL,encodings:[\"y\"]}},{name:r.VegaLiteSelectionTypes.POINT,select:{type:r.VegaLiteSelectionTypes.POINT}}],encoding:{y:{field:void 0!==e.specProps?.yField?e.specProps?.yField:e.columns[0],axis:{labelLimit:500},sort:{op:\"count\",order:\"descending\"}},x:{aggregate:\"count\",title:\"Count\"}},config:{axisY:{titleLineHeight:15,titleBaseline:\"line-bottom\",titleAngle:0,titleAnchor:\"start\",titleAlign:\"left\"}}}}view({attrs:t}){return this.isLoading(t.data)?(0,e.default)(n.Spinner):(0,e.default)(\"figure\",{className:\"chart\"},(0,e.default)(r.VegaView,{spec:(0,a.stringifyJsonWithBigints)(this.getVegaSpec(t)),data:{},eventHandlers:[{name:\"click\",handler:({item:e})=>{e&&void 0!==t.onPointSelection&&t.onPointSelection(e)}}],signalHandlers:[{name:r.VegaLiteSelectionTypes.INTERVAL,handler:({value:e})=>{void 0!==t.onIntervalSelection&&t.onIntervalSelection(e)}}]}))}isLoading(e){return void 0===e}}}return I7}();(e=t||(A7.ChartType=t={})).BAR_CHART=\"bar chart\",e.HISTOGRAM=\"histogram\"}return A7}function N7(){if(k7)return S7;k7=1,Object.defineProperty(S7,\"__esModule\",{value:!0}),S7.ChartTab=void 0,S7.addChartTab=function(e,t){(0,r.addEphemeralTab)(e,t.chartType+\"Tab\",new a(t))};const e=Jr.__importDefault(xe()),t=qe(),r=Wd(),n=R7();class a{chart;constructor(e){this.chart=e}render(){return(0,e.default)(t.DetailsShell,{title:void 0!==this.chart.title?this.chart.title:this.getTitle(),description:this.chart.description},(0,n.renderChart)(this.chart))}getTitle(){return(0,n.toTitleCase)(this.chart.columns[0])+\" \"+(0,n.toTitleCase)(this.chart.chartType)}}return S7.ChartTab=a,S7}var M7,P7={};var D7,x7,L7={};function F7(){if(x7)return g7;x7=1,Object.defineProperty(g7,\"__esModule\",{value:!0}),g7.addLegacyTableTab=function(e,t){A(e,new u.SqlTableState(e,t.table,{filters:new _.Filters(t.filters),imports:t.imports}))};const n=Jr.__importDefault(xe()),a=bs(),i=Ae(),o=Me(),s=je(),r=qe(),l=yi(),c=ql(),u=y7(),d=b7(),p=Se(),f=Wd(),h=N7(),m=R7(),g=function(){if(!M7){M7=1,Object.defineProperty(P7,\"__esModule\",{value:!0}),P7.AddChartMenuItem=void 0;const r=Jr.__importDefault(xe()),n=Se(),t=Ae(),a=R7();P7.AddChartMenuItem=class{renderAddChartOptions(e,t){return e.map(e=>(0,r.default)(n.MenuItem,{label:(0,a.toTitleCase)(e.chartType),onclick:()=>t(e)}))}view({attrs:e}){return(0,r.default)(n.MenuItem,{label:\"Add chart\",icon:t.Icons.Chart},this.renderAddChartOptions(e.chartOptions,e.addChart))}}}return P7}(),_=gd(),y=Cd(),T=pd(),v=ud(),b=function(){if(!D7){D7=1,Object.defineProperty(L7,\"__esModule\",{value:!0}),L7.SqlBarChart=L7.SqlBarChartState=void 0;const a=Jr.__importDefault(xe()),i=gd(),o=Ku(),s=ad(),l=Ue(),r=Ei(),n=N2(),c=ex(),u=yi(),d=K(),p=je();var e=Qc();const f=Pe();L7.SqlBarChartState=class{args;data;limiter=new e.AsyncLimiter;constructor(e){this.args=e,this.reload(),e.filters.addObserver(()=>this.reload())}reload(){this.limiter.schedule(async()=>{for(var e=(this.data=void 0,s.buildSqlQuery)({table:this.args.sqlSource,filters:this.args.filters.get(),columns:{value:this.args.column,count:new o.SqlExpression(()=>\"count()\",[])},groupBy:[this.args.column]}),t=[],r=(await this.args.trace.engine.query(e)).iter({count:l.NUM});r.valid();r.next())t.push({value:r.get(\"value\"),count:r.count,rowId:\"\"+t.length});t.sort((e,t)=>t.count-e.count);var n=new Map;for(const a of t)n.set(a.rowId,{value:a.value,count:a.count});this.data={raw:t,rowIdToValue:n}})}getData(){return this.data}};L7.SqlBarChart=class{lastClickCoordinates;selection=[];view({attrs:e}){var t=e.state.getData();return void 0===t?(0,a.default)(r.Spinner):(0,a.default)(\"figure.pf-chart\",(0,a.default)(n.VegaView,{spec:(0,c.stringifyJsonWithBigints)(this.getVegaSpec(e,t)),data:{},eventHandlers:[{name:\"click\",handler:({view:e,event:t,item:r})=>{var[,e]=e.origin();this.lastClickCoordinates={x:t.offsetX,y:e+(r?.bounds?.y2??0)},d.raf.scheduleFullRedraw()}}],signalHandlers:[{name:n.VegaLiteSelectionTypes.POINT,handler:({value:e})=>{this.selection=void 0===e.rowId?[]:[...e.rowId],d.raf.scheduleFullRedraw()}}],onViewDestroyed:()=>{this.selection=[]}}),(0,a.default)(u.Popup,{trigger:(0,a.default)(\"\",{style:{left:this.lastClickCoordinates?.x+\"px\",top:this.lastClickCoordinates?.y+\"px\",width:\"0px\",height:\"0px\",position:\"absolute\"}}),position:u.PopupPosition.Bottom,isOpen:0<this.selection.length,offset:5},this.renderPopup(e,t)))}renderPopup(t,r){var e=this.selection.map(e=>r.rowIdToValue.get(e)?.count??0).reduce((e,t)=>e+t,0),n=r.raw.map(e=>e.count).reduce((e,t)=>e+t,0);return(0,a.default)(\".pf-chart-popup\",1===this.selection.length&&(0,a.default)(\".pf-chart-popup__tooltip-bold-text\",\"\"+r.rowIdToValue.get(this.selection[0])?.value),1<this.selection.length&&(0,a.default)(\".pf-chart-popup__tooltip-bold-text\",this.selection.length+\" items: \"+this.selection.map(e=>r.rowIdToValue.get(e)?.value).join(\", \")),(0,a.default)(\".pf-chart-popup__tooltip-text-line\",`Value: ${e} (${(e/n*100).toFixed(2)}%)`),(0,a.default)(p.ButtonBar,(0,a.default)(p.Button,{label:\"Add filter: \"+(1===this.selection.length?\"equals\":\"is one of\"),onclick:()=>{t.state.args.filters.addFilter(i.StandardFilters.valueIsOneOf(t.state.args.column,this.selection.map(e=>(0,f.assertDefined)(r.rowIdToValue.get(e)?.value))))}}),(0,a.default)(p.Button,{label:\"Add filter: not equals\",onclick:()=>{t.state.args.filters.addFilters(this.selection.map(e=>i.StandardFilters.valueNotEquals(t.state.args.column,(0,f.assertDefined)(r.rowIdToValue.get(e)?.value))))}})))}getVegaSpec(e,t){return{$schema:\"https://vega.github.io/schema/vega-lite/v5.json\",width:\"container\",mark:\"bar\",data:{values:t.raw},params:[{name:n.VegaLiteSelectionTypes.POINT,select:{type:n.VegaLiteSelectionTypes.POINT,fields:[\"value\",\"rowId\"]}}],encoding:{y:{field:\"value\",title:(0,o.sqlColumnId)(e.state.args.column),sort:null,axis:{labelLimit:500}},x:{field:\"count\",type:\"quantitative\",title:\"Count\",axis:{orient:\"top\"}},color:{condition:{param:n.VegaLiteSelectionTypes.POINT,value:\"red\",empty:!1}}},config:{axisY:{titleLineHeight:15,titleBaseline:\"line-bottom\",titleAngle:0,titleAnchor:\"start\",titleAlign:\"left\"}},view:{strokeWidth:0}}}}}return L7}(),E=Ku(),S=mc();function A(e,t){(0,f.addEphemeralTab)(e,\"sqlTable\",new O(t))}class O{state;constructor(e){this.state=e,this.selected={kind:\"table\",state:e}}selected;pivots=[];bar_charts=[];getTableButtons(){var e=this.state.getDisplayedRange(),t=this.state.getTotalRowCount(),e=[(0,o.exists)(e)&&(0,o.exists)(t)&&`Showing rows ${e.from}-${e.to} of `+t,(0,n.default)(s.Button,{icon:i.Icons.GoBack,disabled:!this.state.canGoBack(),onclick:()=>this.state.goBack()}),(0,n.default)(s.Button,{icon:i.Icons.GoForward,disabled:!this.state.canGoForward(),onclick:()=>this.state.goForward()})],{selectStatement:t,columns:r}=this.state.getCurrentRequest(),r=Object.values(r).filter(e=>!e.startsWith(\"__\")),t=(0,n.default)(l.Popup,{trigger:(0,n.default)(s.Button,{label:\"Show debug track\"}),position:l.PopupPosition.Top},(0,n.default)(c.AddDebugTrackMenu,{trace:this.state.trace,query:`SELECT ${r.join(\", \")} FROM (${t})`,availableColumns:r}));return[...e,t,(0,n.default)(p.PopupMenu,{trigger:(0,n.default)(s.Button,{icon:i.Icons.Menu})},(0,n.default)(p.MenuItem,{label:\"Duplicate\",icon:\"tab_duplicate\",onclick:()=>A(this.state.trace,this.state.clone())}),(0,n.default)(p.MenuItem,{label:\"Copy SQL query\",icon:i.Icons.Copy,onclick:()=>(0,a.copyToClipboard)(this.state.getNonPaginatedSQLQuery())}))]}tableMenuItems(t,e){e={data:this.state.nonPaginatedData?.rows,columns:[e]};return[(0,n.default)(g.AddChartMenuItem,{chartOptions:[{chartType:m.ChartType.BAR_CHART,...e},{chartType:m.ChartType.HISTOGRAM,...e}],addChart:e=>(0,h.addChartTab)(this.state.trace,e)}),(0,n.default)(p.MenuItem,{label:\"Pivot\",onclick:()=>{var e=new y.PivotTableState({pivots:[t],table:this.state.config,trace:this.state.trace,filters:this.state.filters});this.selected={kind:\"pivot\",state:e},this.pivots.push(e)}}),(0,n.default)(p.MenuItem,{label:\"Add bar chart\",onclick:()=>{var e=new b.SqlBarChartState({trace:this.state.trace,sqlSource:this.state.config.name,column:t.column,filters:this.state.filters});this.selected={kind:\"bar_chart\",state:e},this.bar_charts.push(e)}})]}render(){var e=0<this.pivots.length||0<this.bar_charts.length,t=0<this.state.filters.get().length;return(0,n.default)(r.DetailsShell,{title:\"Table\",description:this.getDisplayName(),buttons:this.getTableButtons(),fillParent:!0},(0,n.default)(\".pf-sql-table\",[(t||e)&&(0,n.default)(\".pf-sql-table__toolbar\",[t&&(0,_.renderFilters)(this.state.filters),e&&(0,n.default)(S.Stack,{orientation:\"horizontal\"},[(0,n.default)(s.Button,{label:\"Table\",active:this.selected.state===this.state,onclick:()=>{this.selected={kind:\"table\",state:this.state}}}),this.pivots.map(e=>(0,n.default)(s.Button,{label:\"Pivot: \"+e.getPivots().map(v.pivotId).join(\", \"),active:this.selected.state===e,onclick:()=>{this.selected={kind:\"pivot\",state:e}}})),this.bar_charts.map(e=>(0,n.default)(s.Button,{label:\"Bar chart: \"+(0,E.sqlColumnId)(e.args.column),active:this.selected.state===e,onclick:()=>{this.selected={kind:\"bar_chart\",state:e}}}))])]),(0,n.default)(\".pf-sql-table__table\",[\"table\"===this.selected.kind&&(0,n.default)(d.SqlTable,{state:this.selected.state,addColumnMenuItems:this.tableMenuItems.bind(this)}),\"pivot\"===this.selected.kind&&(0,n.default)(T.PivotTable,{state:this.selected.state,extraRowButton:t=>!t.isRoot()&&(0,n.default)(p.PopupMenu,{trigger:(0,n.default)(s.Button,{icon:i.Icons.GoTo})},(0,n.default)(p.MenuItem,{label:\"Add filters\",onclick:()=>{this.state.filters.addFilters(t.getFilters())}}),(0,n.default)(p.MenuItem,{label:\"Open tab with filters\",onclick:()=>{var e=this.state.clone();e.filters.addFilters(t.getFilters()),A(this.state.trace,e)}}))}),\"bar_chart\"===this.selected.kind&&(0,n.default)(b.SqlBarChart,{state:this.selected.state})])]))}getTitle(){var e=this.state.getTotalRowCount(),e=void 0===e?\"\":` (${e})`;return\"Table \"+this.getDisplayName()+e}getDisplayName(){return this.state.config.displayName??this.state.config.name}isLoading(){return this.state.isLoading()}}return g7}var U7,B7,j7={},H7={};function G7(){if(!U7){U7=1,Object.defineProperty(H7,\"__esModule\",{value:!0}),H7.createVisualizedArgsTrack=async function({uri:e,trace:t,trackId:r,maxDepth:n,argName:a,onClose:i}){var o=(0,d.uuidv4Sql)(),s=a.replace(/[^a-zA-Z]/g,\"_\"),s=`__arg_visualisation_helper_${s}_${o}_slice`;return await(0,p.createView)({engine:t.engine,name:s,as:`\n      with slice_with_arg as (\n        select\n          slice.id,\n          slice.track_id,\n          slice.ts,\n          slice.dur,\n          slice.thread_dur,\n          NULL as cat,\n          args.display_value as name\n        from slice\n        join args using (arg_set_id)\n        where args.key='${a}'\n      )\n      select\n        *,\n        (select count()\n        from ancestor_slice(s1.id) s2\n        join slice_with_arg s3 on s2.id=s3.id\n        ) as depth\n      from slice_with_arg s1\n      order by id\n    `}),new f.DatasetSliceTrack({trace:t,uri:e,dataset:new h.SourceDataset({schema:{id:m.NUM,ts:m.LONG,dur:m.LONG,depth:m.NUM,name:m.STR,thread_dur:m.LONG_NULL},src:s,filter:{col:\"track_id\",eq:r}}),initialMaxDepth:n,detailsPanel:()=>new g.ThreadSliceDetailsPanel(t),fillRatio:e=>0n<e.dur&&null!==e.thread_dur?(0,y.clamp)(_.BigintMath.ratio(e.thread_dur,e.dur),0,1):1,shellButtons:()=>(0,l.default)(c.Button,{onclick:i,icon:u.Icons.Close,title:\"Close all visualised args tracks for this arg\",compact:!0})})};const l=Jr.__importDefault(xe()),c=je(),u=Ae(),d=ln(),p=De(),f=Ge(),h=ze(),m=Ue(),g=Qh(),_=ja(),y=So()}return H7}function V7(){if(!B7){B7=1,Object.defineProperty(j7,\"__esModule\",{value:!0}),j7.addVisualizedArgTracks=async function(t,e){const r=e.replace(/[^a-zA-Z]/g,\"_\"),n=`__arg_visualisation_helper_${r}_slice`,a=await t.engine.query(`\n        drop table if exists ${n};\n\n        create table ${n} as\n        with slice_with_arg as (\n          select\n            slice.id,\n            slice.track_id,\n            slice.ts,\n            slice.dur,\n            slice.thread_dur,\n            NULL as cat,\n            args.display_value as name\n          from slice\n          join args using (arg_set_id)\n          where args.key='${e}'\n        )\n        select\n          *,\n          (select count()\n           from ancestor_slice(s1.id) s2\n           join slice_with_arg s3 on s2.id=s3.id\n          ) as depth\n        from slice_with_arg s1\n        order by id;\n\n        select\n          track_id as trackId,\n          max(depth) as maxDepth\n        from ${n}\n        group by track_id;\n    `),i=[],o=a.iter({trackId:p.NUM,maxDepth:p.NUM});for(;o.valid();o.next()){const u=o.trackId;var s=o.maxDepth,l=g+\"#\"+(0,d.uuidv4)(),s=(t.tracks.registerTrack({uri:l,chips:[\"arg\"],renderer:await(0,m.createVisualizedArgsTrack)({trace:t,uri:l,trackId:u,maxDepth:s,argName:e,onClose:()=>{i.forEach(e=>e.parent?.removeChild(e))}})}),t.workspace.flatTracks.find(e=>{return!!e.uri&&(e=t.tracks.getTrack(e.uri))&&e.tags?.kind===h.SLICE_TRACK_KIND&&e.tags?.trackIds?.includes(u)})),c=s?.parent;c&&(l=new f.TrackNode({uri:l,name:e}),c.addChildBefore(l,s),i.push(l))}};const d=ln(),p=Ue(),f=We(),h=$e(),m=G7(),g=\"perfetto.VisualizedArgs\"}return j7}var q7,z7={};var W7,$7={};var K7,Y7,J7={};return t(function(){if(!Y7){Y7=1,Object.defineProperty(Y,\"__esModule\",{value:!0});var r=Jr;const u=r.__importDefault(Ne()),d=(oe||(oe=1,Symbol.dispose??=Symbol(\"Symbol.dispose\"),Symbol.asyncDispose??=Symbol(\"Symbol.asyncDispose\")),Ht(),r.__importDefault(e4())),p=r.__importDefault(rj()),f=r.__importDefault(xe()),h=Ja(),m=Pe();r=go();const g=ij(),_=K(),y=wh(),T=jj(),v=function(){if(!Hj){Hj=1,Object.defineProperty(Gj,\"__esModule\",{value:!0}),Gj.registerDebugGlobals=function(){window.m=r.default,window.app=a.AppImpl.instance,window.produce=t.produce,window.raf=n.raf};var e=Jr;const t=fe(),r=e.__importDefault(xe()),n=K(),a=Jh()}return Gj}(),b=oP(),E=function(){if(!Vj){Vj=1,Object.defineProperty(qj,\"__esModule\",{value:!0}),qj.installFileDropHandler=function(){window.ondragenter=e=>{e.preventDefault(),e.stopPropagation(),t=e.target,r(e)&&document.body.classList.add(\"filedrag\")},window.ondragleave=e=>{e.preventDefault(),e.stopPropagation(),e.target===t&&document.body.classList.remove(\"filedrag\")},window.ondrop=e=>{var t;e.preventDefault(),e.stopPropagation(),document.body.classList.remove(\"filedrag\"),e.dataTransfer&&r(e)&&(t=e.dataTransfer.files[0])&&n.AppImpl.instance.openTraceFromFile(t),e.preventDefault()},window.ondragover=e=>{e.preventDefault(),e.stopPropagation()}};const n=Jh();let t=null;function r(e){if(e.dataTransfer&&e.dataTransfer.types)for(const t of e.dataTransfer.types)if(\"Files\"===t)return 1}}return qj}(),S=$j(),A=function(){if(!Kj){Kj=1,Object.defineProperty(Yj,\"__esModule\",{value:!0}),Yj.HomePage=Yj.Hints=void 0;const r=Jr.__importDefault(xe()),n=Xf(),a=Oe(),i=nx(),t=Ch(),o=mc(),s=XL(),l=Jh();class c{view(){const t=l.AppImpl.instance.settings.get(\"theme\");var e=\"dark\"===t?.get();return(0,r.default)(\".pf-home-page__hints\",(0,r.default)(\".pf-home-page__tagline\",\"New!\"),(0,r.default)(\"ul\",(0,r.default)(\"li\",[(0,r.default)(s.Switch,{label:[\"Try the new dark mode (experimental).\",e&&\" 😎\"],checked:e,onchange:e=>{t?.set(e.target.checked?\"dark\":\"light\")}})]),(0,r.default)(\"li\",\"Press \",(0,r.default)(i.HotkeyGlyphs,{hotkey:\"Mod+P\"}),\" to quickly find tracks with fuzzy search.\"),(0,r.default)(\"li\",\"Use \",(0,r.default)(o.Stack,{inline:!0,spacing:\"small\",orientation:\"horizontal\"},[(0,r.default)(i.HotkeyGlyphs,{hotkey:\"W\"}),(0,r.default)(i.HotkeyGlyphs,{hotkey:\"A\"}),(0,r.default)(i.HotkeyGlyphs,{hotkey:\"S\"}),(0,r.default)(i.HotkeyGlyphs,{hotkey:\"D\"})]),\" to navigate the trace.\"),(0,r.default)(\"li\",\"Try the \",(0,r.default)(a.Anchor,{href:\"https://perfetto.dev/docs/visualization/perfetto-ui#command-palette\"},\"command palette,\"),\" press \",(0,r.default)(i.HotkeyGlyphs,{hotkey:\"!Mod+Shift+P\"}),\".\")))}}Yj.Hints=c;function e(e){var t=(0,n.getNextChannel)()===e?\"[checked=true]\":\"\";return[(0,r.default)(`input[type=radio][name=chan][id=chan_${e}]`+t,{onchange:()=>{(0,n.setChannel)(e)}}),(0,r.default)(`label[for=chan_${e}]`,e)]}Yj.HomePage=class{view(){return(0,r.default)(\".pf-home-page\",(0,r.default)(\".pf-home-page__center\",(0,r.default)(\".pf-home-page__title\",(0,r.default)(`img.logo[src=${(0,t.assetSrc)(\"assets/logo-3d.png\")}]`),\"Perfetto\"),(0,r.default)(c),(0,r.default)(\".pf-home-page__channel-select\",(0,r.default)(\"\",\"Feeling adventurous? Try our bleeding edge Canary version\"),(0,r.default)(\"fieldset\",e(\"stable\"),e(\"canary\"),(0,r.default)(\".pf-home-page__highlight\")),(0,r.default)(\".pf-home-page__reload\"+((0,n.channelChanged)()?\".show\":\"\"),\"You need to reload the page for the changes to have effect\"))),(0,r.default)(\"a.pf-privacy\",{href:\"https://policies.google.com/privacy\",target:\"_blank\"},\"Privacy policy\"))}}}return Yj}(),O=Zj(),C=Xl(),w=t8(),F=s8(),U=p7(),B=bh(),j=Ke(),H=function(){if(!f7){f7=1,Object.defineProperty(h7,\"__esModule\",{value:!0}),h7.IdleDetector=void 0;var e=Ja();const t=K(),r=Jh(),n=Lj();h7.IdleDetector=class{promise=(0,e.defer)();deadline=performance.now()+6e4;idleSince;idleHysteresisMs=100;waitForPerfettoIdle(e=100){return this.idleSince=void 0,this.idleHysteresisMs=e,this.scheduleNextTask(),this.promise}onIdleCallback(){var e=performance.now();if(e>this.deadline)this.promise.reject(\"Didn't reach idle within 60000 ms, giving up \"+this.idleIndicators());else{if(this.idleIndicators().every(e=>e))return this.idleSince=this.idleSince??e,e-this.idleSince>=this.idleHysteresisMs?void this.promise.resolve():void this.scheduleNextTask();this.idleSince=void 0,this.scheduleNextTask()}}scheduleNextTask(){requestIdleCallback(()=>this.onIdleCallback())}idleIndicators(){var e=r.AppImpl.instance.trace?.engine.numRequestsPending??0;return[!r.AppImpl.instance.isLoadingTrace,0===e,!t.raf.hasPendingRedraws,!n.taskTracker.hasPendingTasks(),!document.getAnimations().some(e=>\"running\"===e.playState),null==document.querySelector(\".progress.progress-anim\"),null==document.querySelector(\".pf-omnibox--message-mode\")]}}}return h7}(),k=Jh();var e=F7(),t=tl(),n=Ol(),a=V7(),i=Nc();const I=Ch(),R=function(){if(!q7){q7=1,Object.defineProperty(z7,\"__esModule\",{value:!0}),z7.SettingsManagerImpl=z7.PERFETTO_SETTINGS_STORAGE_KEY=void 0,z7.PERFETTO_SETTINGS_STORAGE_KEY=\"perfettoSettings\";class r{manager;id;name;description;defaultValue;schema;requiresReload;render;bootValue;constructor(e,t,r,n,a,i,o=!1,s){this.manager=e,this.id=t,this.name=r,this.description=n,this.defaultValue=a,this.schema=i,this.requiresReload=o,this.render=s,this.bootValue=this.get()}get isDefault(){var e=this.get();return JSON.stringify(e)===JSON.stringify(this.defaultValue)}get(){var e=this.manager.getStoredValue(this.id),e=this.schema.safeParse(e);return e.success?e.data:this.defaultValue}set(e){var t,r=this.schema.safeParse(e);r.success?(t=r.data,this.get()!==t&&this.manager.updateStoredValue(this.id,t)):console.error(`Invalid value for setting \"${this.id}\":`,e,\"Error:\",r.error)}reset(){this.manager.clearStoredValue(this.id)}[Symbol.dispose](){this.manager.unregister(this.id)}}z7.SettingsManagerImpl=class{registry=new Map;currentStoredValues={};store;constructor(e){this.store=e,this.load()}get(e){return this.registry.get(e)}register(e){var t=this.currentStoredValues[e.id];if(e.schema.safeParse(t).success||void 0===t||(this.currentStoredValues[e.id]=e.defaultValue,this.save()),this.registry.has(e.id))throw new Error(`Setting with id \"${e.id}\" already registered.`);t=new r(this,e.id,e.name,e.description,e.defaultValue,e.schema,e.requiresReload,e.render);return this.registry.set(e.id,t),t}unregister(e){this.registry.delete(e)}resetAll(){this.currentStoredValues={},this.save()}getAllSettings(){var e=Array.from(this.registry.values());return e.sort((e,t)=>e.id.localeCompare(t.id)),e}isReloadRequired(){for(const r of this.registry.values())if(r.requiresReload){var e=r.bootValue,t=r.get();if(JSON.stringify(t)!==JSON.stringify(e))return!0}return!1}getStoredValue(e){return this.currentStoredValues[e]}updateStoredValue(e,t){this.currentStoredValues[e]=t,this.save()}clearStoredValue(e){delete this.currentStoredValues[e],this.save()}load(){try{this.currentStoredValues=this.store.load()}catch(e){console.error(\"Failed to load settings from store:\",e),this.currentStoredValues={}}for(const r of this.registry.values()){var e=r,t=this.currentStoredValues[e.id];e.schema.safeParse(t).success||void 0===t||(this.currentStoredValues[e.id]=e.defaultValue)}this.save()}save(){try{this.store.save(this.currentStoredValues)}catch(e){console.error(\"Failed to save settings to store:\",e)}}}}return z7}(),G=mo(),N=Po(),V=Fe(),q=function(){if(!W7){W7=1,Object.defineProperty($7,\"__esModule\",{value:!0}),$7.ThemeProvider=void 0;const t=Jr.__importDefault(xe());$7.ThemeProvider=class{view(e){return(0,t.default)(\".pf-theme-provider\",{className:\"pf-theme-provider--\"+e.attrs.theme},e.children)}}}return $7}(),z=function(){if(!K7){K7=1,Object.defineProperty(J7,\"__esModule\",{value:!0}),J7.OverlayContainer=void 0;const r=Jr.__importDefault(xe()),n=be();J7.OverlayContainer=class{view({attrs:e,children:t}){var{fillParent:e=!1}=e;return(0,r.default)(\".pf-overlay-container\",{className:(0,n.classNames)(e&&\"pf-overlay-container--fill-parent\")},t)}}}return J7}(),W=i4(),M=xp(),P=r.featureFlags.register({id:\"cspAllowAnyWebsocketPort\",name:\"Relax Content Security Policy for 127.0.0.1:*\",description:\"Allows simultaneous usage of several trace_processor_shell -D --http-port 1234 by opening https://ui.perfetto.dev/#!/?rpc_port=1234\",defaultValue:!1});(0,t.configureExtensions)({addDebugCounterTrack:n.addDebugCounterTrack,addDebugSliceTrack:n.addDebugSliceTrack,addVisualizedArgTracks:a.addVisualizedArgTracks,addLegacySqlTableTab:e.addLegacyTableTab,addQueryResultsTab:i.addQueryResultsTab});{{let e=[\"http://127.0.0.1:9001\",\"ws://127.0.0.1:9001\",\"ws://127.0.0.1:9167\"];P.get()&&(l=C.Router.parseUrl(window.location.href),/^\\d+$/.exec(l.args.rpc_port??\"\"))&&(e=[\"http://127.0.0.1:\"+l.args.rpc_port,\"ws://127.0.0.1:\"+l.args.rpc_port]);var o,s,l={\"default-src\":[\"'self'\",\"'sha256-LirUKeorCU4uRNtNzr8tlB11uy8rzrdmqHCX38JSwHY='\"],\"script-src\":[\"'self'\",\"'unsafe-eval'\",\"https://*.google.com\",\"https://*.googleusercontent.com\",\"https://www.googletagmanager.com\",\"https://*.google-analytics.com\"],\"object-src\":[\"none\"],\"connect-src\":[\"'self'\",\"ws://127.0.0.1:8037\",\"https://*.google-analytics.com\",\"https://*.googleapis.com\",\"http://127.0.0.1:*\",\"blob:\",\"data:\"].concat(e),\"img-src\":[\"'self'\",\"data:\",\"blob:\",\"https://*.google-analytics.com\",\"https://www.googletagmanager.com\",\"https://*.googleapis.com\"],\"style-src\":[\"'self'\",\"'unsafe-inline'\"],\"navigate-to\":[\"https://*.perfetto.dev\",\"self\"]};(r=document.createElement(\"meta\")).httpEquiv=\"Content-Security-Policy\";let t=\"\";for([o,s]of Object.entries(l))t+=`${o} ${s.join(\" \")}; `;r.content=t,document.head.appendChild(r)}(0,I.initAssets)();r=(l=new R.SettingsManagerImpl(new G.LocalStorage(R.PERFETTO_SETTINGS_STORAGE_KEY))).register({id:\"timestampFormat\",name:\"Timestamp format\",description:\"The format of timestamps throughout Perfetto.\",schema:u.default.nativeEnum(N.TimestampFormat),defaultValue:N.TimestampFormat.Timecode}),t=l.register({id:\"timezoneOverride\",name:\"Timezone Override\",description:\"When 'Timestamp Format' is set to 'CustomTimezone', this setting controls which timezone is used.\",schema:u.default.enum(Object.keys(V.timezoneOffsetMap)),defaultValue:\"(UTC+00:00) London, Dublin, Lisbon, Casablanca\"}),n=l.register({id:\"durationPrecision\",name:\"Duration precision\",description:\"The precision of durations throughout Perfetto.\",schema:u.default.nativeEnum(N.DurationPrecision),defaultValue:N.DurationPrecision.Full}),a=l.register({id:\"analyticsEnable\",name:\"Enable UI telemetry\",description:`\n      This setting controls whether the Perfetto UI logs coarse-grained\n      information about your usage of the UI and any errors encountered. This\n      information helps us understand how the UI is being used and allows us to\n      better prioritise features and fix bugs. If this option is disabled,\n      no information will be logged.\n\n      Note: even if this option is enabled, information about the *contents* of\n      traces is *not* logged.\n\n      Note: this setting only has an effect on the ui.perfetto.dev and localhost\n      origins: all other origins do not log telemetry even if this option is\n      enabled.\n    `,schema:u.default.boolean(),defaultValue:!0,requiresReload:!0});const $=new W.JsonSettingsEditor({schema:M.commandInvocationArraySchema});var e=l.register({id:\"startupCommands\",name:\"Startup Commands\",description:`\n      Commands to run automatically after a trace loads and any saved state is\n      restored. These commands execute as if a user manually invoked them after\n      the trace is fully ready, making them ideal for automating common\n      post-load actions like running queries, expanding tracks, or setting up\n      custom views.\n    `,schema:M.commandInvocationArraySchema,defaultValue:[],render:e=>$.render(e)}),i=l.register({id:\"enforceStartupCommandAllowlist\",name:\"Enforce Startup Command Allowlist\",description:`\n      When enabled, only commands in the predefined allowlist can be executed\n      as startup commands. When disabled, all startup commands will be\n      executed without filtering.\n\n      The command allowlist encodes the set of commands which Perfetto UI\n      maintainers expect to maintain backwards compatibility for the forseeable      future.\n\n      WARNING: if this setting is disabled, any command outside the allowlist\n      has *no* backwards compatibility guarantees and is can change without\n      warning at any time.\n    `,schema:u.default.boolean(),defaultValue:!0}),L=l.register({id:\"inVscode\",name:\"VizTracer VSCode plugin indicator\",description:\"Indicates whether the VizTracer extension is running in VSCode.\",schema:u.default.boolean(),defaultValue:!1});k.AppImpl.initialize({initialRouteArgs:C.Router.parseUrl(window.location.href).args,settingsManager:l,timestampFormatSetting:r,durationPrecisionSetting:n,timezoneOverrideSetting:t,analyticsSetting:a,startupCommandsSetting:e,enforceStartupCommandAllowlistSetting:i,inVscodeSetting:L});const D=(0,h.defer)(),x=((r=document.createElement(\"link\")).rel=\"stylesheet\",r.href=(0,I.assetSrc)(\"perfetto.css\"),r.onload=()=>D.resolve(),r.onerror=e=>D.reject(e),(n=document.head.querySelector(\"#favicon\"))instanceof HTMLLinkElement&&(n.href=(0,I.assetSrc)(\"assets/favicon.png\")),document.head.append(r),k.AppImpl.instance);(0,S.tryLoadIsInternalUserScript)(x).then(()=>{x.analytics.initialize(x.isInternalUser)}),(0,m.addErrorHandler)(b.maybeShowErrorDialog),(0,m.addErrorHandler)(e=>k.AppImpl.instance.analytics.logError(e)),window.addEventListener(\"error\",e=>(0,m.reportError)(e)),window.addEventListener(\"unhandledrejection\",e=>(0,m.reportError)(e)),(0,y.initWasm)(),k.AppImpl.instance.serviceWorkerController.install(),(0,v.registerDebugGlobals)(),document.body.addEventListener(\"wheel\",e=>{e.ctrlKey&&e.preventDefault()},{passive:!1}),D.then(()=>{{document.body.innerHTML=\"\";const t=k.AppImpl.instance.pages,r=(t.registerPage({route:\"/\",render:()=>(0,f.default)(A.HomePage)}),t.registerPage({route:\"/viewer\",render:()=>(0,U.renderViewerPage)()}),new C.Router),n=(r.onRouteChanged=c,k.AppImpl.instance.settings.register({id:\"theme\",name:\"[Experimental] UI Theme\",description:\"Warning: Dark mode is not fully supported yet.\",schema:u.default.enum([\"dark\",\"light\"]),defaultValue:\"light\"}));k.AppImpl.instance.commands.registerCommand({id:\"dev.perfetto.ToggleTheme\",name:\"[Experimental] Toggle UI Theme\",callback:()=>{var e=n.get();n.set(\"dark\"===e?\"light\":\"dark\")}}),_.raf.mount(document.body,{view:()=>(0,f.default)(q.ThemeProvider,{theme:n.get()},[(0,f.default)(z.OverlayContainer,{fillParent:!0},[(0,f.default)(T.UiMain,{key:n.get()})])])}),!location.origin.startsWith(\"http://localhost:\")&&!location.origin.startsWith(\"http://127.0.0.1:\")||k.AppImpl.instance.embeddedMode||k.AppImpl.instance.testingMode||(0,g.initLiveReload)();var e=C.Router.parseUrl(window.location.href);void 0!==e.args.rpc_port&&(P.get()?B.HttpRpcEngine.rpcPort=e.args.rpc_port:(0,j.showModal)({title:\"Using a different port requires a flag change\",content:(0,f.default)(\"div\",(0,f.default)(\"span\",\"For security reasons before connecting to a non-standard TraceProcessor port you need to manually enable the flag to relax the Content Security Policy and restart the UI.\")),buttons:[{text:\"Take me to the flags page\",primary:!0,action:()=>C.Router.navigate(\"#!/flags/cspAllowAnyWebsocketPort\")}]})),(0,w.checkHttpRpcConnection)().then(()=>{var e=C.Router.parseUrl(window.location.href),t=(k.AppImpl.instance.embeddedMode||(0,E.installFileDropHandler)(),k.AppImpl.instance.trace?.traceInfo.source);t&&\"HTTP_RPC\"===t.type||(window.addEventListener(\"message\",O.postMessageHandler,{passive:!0}),c(e))});const a=k.AppImpl.instance.plugins,i=(p.default.forEach(e=>a.registerPlugin(e)),d.default.forEach(e=>a.registerPlugin(e)),C.Router.parseUrl(window.location.href)),o=(i.args.enablePlugins??\"\").split(\",\");a.activatePlugins(o)}}),k.AppImpl.instance.testingMode&&document.body.classList.add(\"testing\"),window.waitForPerfettoIdle=e=>(new H.IdleDetector).waitForPerfettoIdle(e)}function c(t){_.raf.scheduleFullRedraw(()=>{var e;t.fragment&&(e=document.getElementById(t.fragment))&&e.scrollIntoView()}),(0,F.maybeOpenTraceFromRoute)(t)}}return Y}())}();\n//# sourceMappingURL=frontend_bundle.js.map\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/index.html",
    "content": "<!doctype html>\n<html lang=\"en-us\">\n<head>\n  <meta charset=\"utf-8\">\n  <title>Perfetto UI</title>\n  <meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\" name=\"viewport\" />\n  <link rel=\"shortcut icon\" id=\"favicon\" type=\"image/png\" href=\"data:image/png;base64,iVBORw0KGgo=\">\n</head>\n<body data-perfetto_version='{\"filled_by_build_js\":\".\"}'>\n  <!--\n    Don't add any content here. The whole <body> is replaced by\n    frontend/index.ts when bootstrapping. This is only used for very early\n    error reporting.\n  -->\n  <style>\n  #app_load_failure {opacity:0;transition:opacity 1s ease;position:absolute;overflow:auto;background:#080082;top:0;left:0;width:100%;height:100%;bottom:0;right:0;margin:0;opacity:0;user-select:text}\n  #app_load_failure > pre {color:#fff;position:absolute;margin:auto;white-space:pre-wrap;top:10vh;max-width:90vw;width:880px;left:0;right:0;font-size:16px;line-height:30px;font-weight:700}\n  #app_load_failure > pre span {background:#fff;color:#080082;padding:2px}\n  #app_load_failure_dbg { overflow-wrap: break-word; font-size: 12px; line-height: 1; font-weight: initial;}\n  #app_load_failure a {color:#fff}\n  #app_load { position: absolute; top: 0; left: 0; right:0; bottom: 0; background-color: #2c3e50;}\n  #app_load_spinner { margin: 30vh auto; width: 150px; height: 150px; border: 3px solid rgba(255,255,255,.3); border-radius: 50%; border-top-color: #fff; animation: app_load_spin 1s ease-in-out infinite; }\n  @keyframes app_load_spin { to { transform: rotate(360deg); } }\n  </style>\n  <div id=\"app_load\"><div id=\"app_load_spinner\"></div></div>\n  <div id=\"app_load_failure\">\n<pre>\n<span>Perfetto UI - An unrecoverable problem occurred</span>\n\nIf you are seeing this message, something went wrong while loading the UI.\nIn most cases this is due to very slow or flaky network and it goes away by\ndisabling and re-enabling WiFi or trying reloading.\n\nIf the problem persists try these remediation steps:\n\n* Force-reload the page with Ctrl+Shift+R (Mac: Meta+Shift+R) or\n  Shift + click on the refresh button.\n\n* <a href=\"javascript:clearAllCaches();\">Clear all the site storage and caches</a> and reload the page.\n\n* Clear the site data and caches from devtools, following <a target=\"_blank\" href=\"https://developers.google.com/web/tools/chrome-devtools/storage/cache#deletecache\">these instructions</a>.\n\nIf none of this works, file a bug attaching logs and screenshots from devtools.\n  Googlers:      <a href=\"http://go/perfetto-ui-bug\" target=\"_blank\">go/perfetto-ui-bug</a>\n  Non-googlers:  <a href=\"https://github.com/google/perfetto/issues/new\" target=\"_blank\">github.com/google/perfetto/issues/new</a>\n\n<div id=app_load_failure_err></div>\nTechnical Information:\n<div id=app_load_failure_dbg></div>\n</pre>\n  </div>\n  <script type=\"text/javascript\">\n    'use strict';\n    (function () {\n      const TIMEOUT_MS = 120000;\n      let errTimerId = undefined;\n\n      function errHandler(err) {\n        // Note: we deliberately don't clearTimeout(), which means that this\n        // handler is called also in the happy case when the UI loads. In that\n        // case, though, the onCssLoaded() in frontend/index.ts will empty the\n        // <body>, so |div| below will be null and this function becomes a\n        // no-op.\n        const div = document.getElementById('app_load_failure');\n        if (!div) return;\n        div.style.opacity ='1';\n        const errDom = document.getElementById('app_load_failure_err');\n        if (!errDom) return;\n        console.error(err);\n        errDom.innerText += `${err}\\n`;\n        const storageJson = JSON.stringify(window.localStorage);\n        const dbg = document.getElementById('app_load_failure_dbg');\n        if (!dbg) return;\n        dbg.innerText = `LocalStorage: ${storageJson}\\n`;\n        if (errTimerId !== undefined) clearTimeout(errTimerId);\n      }\n\n      // For the 'Click here to clear all caches'.\n      window.clearAllCaches = async () => {\n        if (window.localStorage) window.localStorage.clear();\n        if (window.sessionStorage) window.sessionStorage.clear();\n        const promises = [];\n        if (window.caches) {\n          try {\n            const keys = await window.caches.keys();\n            keys.forEach(k => promises.push(window.caches.delete(k)));\n          } catch (_) {\n            // TODO(288483453)\n          }\n        }\n        if (navigator.serviceWorker) {\n          const regs = await navigator.serviceWorker.getRegistrations();\n          regs.forEach(reg => promises.push(reg.unregister()));\n        }\n        try {\n          await Promise.all(promises);\n        } catch (_) {\n          // TODO(288483453)\n        }\n        window.location.reload();\n      }\n\n      // If the frontend doesn't come up, make the error page above visible.\n      errTimerId = setTimeout(() => errHandler('Timed out'), TIMEOUT_MS);\n      window.onerror = errHandler;\n      window.onunhandledrejection = errHandler;\n\n      const versionStr = document.body.dataset['perfetto_version'] || '{}';\n      const versionMap = JSON.parse(versionStr);\n      const channel = localStorage.getItem('perfettoUiChannel') || 'stable';\n\n      // The '.' below is a fallback for the case of opening a pinned version\n      // (e.g., ui.perfetto.dev/v1.2.3./). In that case, the index.html has no\n      // valid version map; we want to load the frontend from the same\n      // sub-directory directory, hence ./frontend_bundle.js.\n      const version = versionMap[channel] || versionMap['stable'] || '.';\n\n      const script = document.createElement('script');\n      script.async = true;\n      script.src = version + '/frontend_bundle.js';\n      script.onerror = () => errHandler(`Failed to load ${script.src}`);\n\n      document.head.append(script);\n    })();\n  </script>\n</body>\n</html>\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/manifest.json",
    "content": "{\n  \"resources\": {\n    \"assets/MaterialSymbolsOutlined.woff2\": \"sha256-+wJwsRRT+mS8qIFxOCzr9+SL0N+L6U0lLJSLl1Bfbm8=\",\n    \"assets/Roboto-100.woff2\": \"sha256-IkglhK6qex103gcnkyRsZeOLQCrCMfOLsNkQKAJUMjA=\",\n    \"assets/Roboto-300.woff2\": \"sha256-M1MLAHBxKBqX55uqsT3ffMS53pQuvT4hIiSFczX3y5c=\",\n    \"assets/Roboto-400.woff2\": \"sha256-zEYyLVxNQdpEfyb3+nFIJ/LsmhEpaMEu9XNsdJSYXso=\",\n    \"assets/Roboto-500.woff2\": \"sha256-u0btB5w908Oa9QUbStpI8p9JFR2tT6IYEXutL9teYW8=\",\n    \"assets/RobotoCondensed-Light.woff2\": \"sha256-rELob/HQ/Hinhwpyz10bvwpQmoUtuh2Kvcc0iSsNSEQ=\",\n    \"assets/RobotoCondensed-Regular.woff2\": \"sha256-SaG04SlmRaovUTyHoOX+VqMFp+1njC9kmWMewfOzWFY=\",\n    \"assets/RobotoMono-Regular.woff2\": \"sha256-5DK7glyj4CZ9Yo+ttqjKY7DMo/xzRfFcfwgPeouCFl4=\",\n    \"assets/brand.png\": \"sha256-qQtoKOldUDc8Nzh2Ub8e3dnoXMGRUOxrdSCL42YmNbk=\",\n    \"assets/catapult_trace_viewer.html\": \"sha256-wLrVZQID01LZXrQygBUzpUlJcvHKCcoetygA1jrOjj8=\",\n    \"assets/catapult_trace_viewer.js\": \"sha256-tpvMkJYBPHRuDjmhKIiiuCVJzjgWa4LcIRxqsb3axf0=\",\n    \"assets/favicon.png\": \"sha256-sor3K6wnzaql75B5y8ZxCEDN2YFe17tmqE+yvWYi2+E=\",\n    \"assets/logo-128.png\": \"sha256-XitC0usT0U7vEJBZwae257GKyY75m56/26Fii2mnnKo=\",\n    \"assets/logo-3d.png\": \"sha256-WI2BmF9A64gFzZSraFJXfOXEqJP3PIhaz9OasMFKz3Q=\",\n    \"assets/rec_atrace.png\": \"sha256-vT3mgQCULhTTtItfHBzlUDpCNvRsJmVGYx8uywilK1g=\",\n    \"assets/rec_battery_counters.png\": \"sha256-ijAy8hVxldcrRGNA/fe2wmahyewH6O3il3fwgpbDTh0=\",\n    \"assets/rec_board_voltage.png\": \"sha256-8BIn67H/6oUbv529ZCNAOf1AMCiEzARJYFdPqNSl8y0=\",\n    \"assets/rec_cpu_coarse.png\": \"sha256-uHhKocq2CeYpWaV+SmSVDXLgbXnEi79+V5jGDvRNNz0=\",\n    \"assets/rec_cpu_fine.png\": \"sha256-Pzs2n6ZOwD2Ug1DX1YaaoyJ0iy7mnXmwxZwI7TB+ut0=\",\n    \"assets/rec_cpu_freq.png\": \"sha256-X9pgx6F2f+Rk1ONZh8pE538vCBk8dUhHp0NrR2MKar4=\",\n    \"assets/rec_cpu_voltage.png\": \"sha256-ZSTitbm3yGRGLupYhjKOQh0ibOfFplGKZNDh3A3qSgc=\",\n    \"assets/rec_frame_timeline.png\": \"sha256-+KGhOsbxx04f2Hsyyq+lxhj+YAIkhKK173EtOfKvrok=\",\n    \"assets/rec_ftrace.png\": \"sha256-VThuh/OGltpvuDgUyOEfEOpbsPumW2MCvTVF7S5Q6Hw=\",\n    \"assets/rec_gpu_mem_total.png\": \"sha256-4iEInY0xQQgdI1r2nng7geZWTeoBqNWmRmNYZQBlei4=\",\n    \"assets/rec_java_heap_dump.png\": \"sha256-Stu8IkRjep9gI/7gGtB/g0hdZBNYOq6psmz7csFzv6Y=\",\n    \"assets/rec_lmk.png\": \"sha256-KMgNuukjCxcUogqUFqCWPPxhZ3vDdFr8U9GSUdN6Clc=\",\n    \"assets/rec_logcat.png\": \"sha256-7zPKP0FpayanH7e9LpKrO5eKm8NeZv71txSFjSvI66I=\",\n    \"assets/rec_long_trace.png\": \"sha256-8ZNsE+AOhS6LiRLEkdqwOJuUQC3L/ErExByhJGIZvew=\",\n    \"assets/rec_mem_hifreq.png\": \"sha256-QxhmLA10n1HX5WKFjS8rhP/OcI3zWhqfaf1ZDgy6eUc=\",\n    \"assets/rec_meminfo.png\": \"sha256-k71vAECd0Hle8TJqmdhe93R86d9WGe3ADKeFekwXQ7A=\",\n    \"assets/rec_native_heap_profiler.png\": \"sha256-ewas12596LRXr/rXNKwqr41oSdMMtbCLHwN0TUIN+Gc=\",\n    \"assets/rec_one_shot.png\": \"sha256-g8YXF1vZWhowKZsSPx8c498Hq8Lx0wVXTL0u5Rf7+c0=\",\n    \"assets/rec_profiling.png\": \"sha256-hM8jBeyyqvrpbFEGqnewcj50xT5GFsBF5qBLmS/UHIk=\",\n    \"assets/rec_ps_stats.png\": \"sha256-Ii+3QkS3iMNiaEKJIiG8YFqHvNi0lMn8qNMyeCfaPh0=\",\n    \"assets/rec_ring_buf.png\": \"sha256-/1+5esQP9EZmTLCSuoCwIcU9l1wrzQSLNQ9wzIGdbKc=\",\n    \"assets/rec_syscalls.png\": \"sha256-JtxPGmHopytXrEgwJbKIaqiHMMum6M5aJgmggybCcIU=\",\n    \"assets/rec_vmstat.png\": \"sha256-lCtlnOQNTNfGrt+U5iSnfyfQx7Hd+z7s3MKMgGv9s5o=\",\n    \"assets/scheduling_latency.png\": \"sha256-o08K+ewOuGio7sBa83hTtd1/rJZU7M/nYvF927TLyWI=\",\n    \"assets/vscode-icon.png\": \"sha256-gnDKIFtMec1sbVIFhIz6CLCas3ddURGjUzZ8QC8iBrk=\",\n    \"engine_bundle.js\": \"sha256-3ObvzL/GjG/zInv607M+Z7FrfVlggL+ABQLRpRUnXlU=\",\n    \"frontend_bundle.js\": \"sha256-4xzS78czrt9Jx5sXeTG0QE9O96vqn9aMSfl/vR3/LpU=\",\n    \"perfetto.css\": \"sha256-Jvr/xblggJysIFR3K8mVRiQ3So1zS736xyIFbjUeonw=\",\n    \"stdlib_docs.json\": \"sha256-9Uy7Z6/cKDt2QorslGxemxPLzcJN28gauQ6HiiXO8Lg=\",\n    \"trace_config_utils.wasm\": \"sha256-7PudCwYae1bJ+LY5OEpAadObFt0OrL/SMIkMr62RF0k=\",\n    \"trace_processor.wasm\": \"sha256-rvrrDt8QKu8UCFVO0gOrFWJmyPMinjMb2Qlzj96DDG0=\",\n    \"trace_processor_memory64.wasm\": \"sha256-lgBGbazd/BX2W8psbfLY1pez13yGOwxUPh3aaSVb7eE=\",\n    \"traceconv.wasm\": \"sha256-onD/VSua+WxmGMnpqT8nmleM3bB8O6ZbDAUdKAnFu9U=\",\n    \"traceconv_bundle.js\": \"sha256-NlQQPSgaAWk6FmyLciy5Rn6sqmnuiwrB4tfiEOMLrnM=\"\n  }\n}"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/perfetto.css",
    "content": "@charset \"UTF-8\";\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 100;\n  src: url(assets/Roboto-100.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/Roboto-300.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/Roboto-400.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 500;\n  src: url(assets/Roboto-500.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/RobotoCondensed-Light.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoCondensed-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Mono\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoMono-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n  font-family: \"Material Symbols Sharp\";\n  font-style: normal;\n  font-weight: 100 700;\n  src: url(assets/MaterialSymbolsOutlined.woff2) format(\"woff2\");\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 100;\n  src: url(assets/Roboto-100.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/Roboto-300.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/Roboto-400.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 500;\n  src: url(assets/Roboto-500.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/RobotoCondensed-Light.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoCondensed-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Mono\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoMono-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n  font-family: \"Material Symbols Sharp\";\n  font-style: normal;\n  font-weight: 100 700;\n  src: url(assets/MaterialSymbolsOutlined.woff2) format(\"woff2\");\n}\n:root {\n  --sidebar-width: 230px;\n  --topbar-height: 44px;\n  --track-shell-width: 250px;\n  --anim-easing: cubic-bezier(0.4, 0, 0.2, 1);\n  --details-content-height: 308px;\n  --pf-font: \"Roboto\", sans-serif;\n  --pf-font-compact: \"Roboto Condensed\", sans-serif;\n  --pf-font-monospace: \"Roboto Mono\", monospace;\n}\n\n* {\n  box-sizing: border-box;\n  -webkit-tap-highlight-color: transparent;\n}\n\nhtml {\n  font-size: 16px;\n  font-family: var(--pf-font);\n  height: 100%;\n  width: 100%;\n  touch-action: pan-x pan-y;\n}\n\n@media (pointer: coarse) {\n  html {\n    -webkit-user-select: none;\n    user-select: none;\n    -webkit-touch-callout: none;\n  }\n}\nhtml,\nbody,\nbody > main {\n  height: 100%;\n  width: 100%;\n  padding: 0;\n  margin: 0;\n  overscroll-behavior: none;\n  overflow: hidden;\n}\n\npre,\ncode {\n  font-family: var(--pf-font-monospace);\n}\n\nbody.testing {\n  -webkit-font-smoothing: antialiased !important;\n  font-kerning: none !important;\n}\n\nh1,\nh2,\nh3 {\n  font-family: inherit;\n  font-size: inherit;\n  font-weight: inherit;\n  padding: 0;\n  margin: 0;\n}\n\ntable {\n  -webkit-user-select: text;\n  user-select: text;\n}\n\nbody.filedrag::after {\n  content: \"Drop the trace file to open it\";\n  position: fixed;\n  z-index: 99;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  border: 10px dashed #404854;\n  text-align: center;\n  font-size: 3rem;\n  line-height: 100vh;\n  color: #333;\n  background: rgba(255, 255, 255, 0.5);\n}\n\nbutton {\n  background: none;\n  color: inherit;\n  border: none;\n  padding: 0;\n  font: inherit;\n  cursor: pointer;\n  outline: inherit;\n}\n\nbutton.close {\n  font-family: var(--pf-font-monospace);\n}\n\n.pf-viewer-page {\n  isolation: isolate;\n  overflow: hidden;\n  height: 100%;\n}\n.pf-viewer-page__overview {\n  z-index: 3;\n}\n.pf-viewer-page__overview .pf-overview-timeline {\n  height: 70px;\n}\n.pf-viewer-page__header {\n  display: grid;\n  grid-template-columns: 1fr auto;\n  box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n  z-index: 2;\n}\n.pf-viewer-page__header:after {\n  content: \"\";\n  scrollbar-gutter: stable;\n  overflow-y: scroll;\n  visibility: hidden;\n  flex: 0 0 auto;\n}\n.pf-viewer-page__pinned-track-tree {\n  flex: 0 0 auto;\n  max-height: 40%;\n  z-index: 1;\n  box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n  scrollbar-gutter: stable;\n}\n.pf-viewer-page__scrolling-track-tree {\n  flex: 1 1 auto;\n  scrollbar-gutter: stable;\n}\n\n.pf-timeline-toolbar {\n  width: var(--track-shell-width);\n  border-right: solid 1px transparent;\n  padding-inline: 2px;\n}\n.pf-timeline-toolbar__workspace-selector {\n  flex: 1;\n}\n\n.pf-track__track-details-popup {\n  min-width: 350px;\n}\n\n.pf-track-filter {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n.pf-track-filter__row {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n.pf-track-filter label {\n  font-family: var(--pf-font-compact);\n  text-transform: uppercase;\n  font-size: 11px;\n}\n\n.pf-track__tooltip {\n  font-size: 11px;\n  opacity: 0.9;\n  font-weight: 300;\n}\n\n.pf-home-page {\n  height: 100%;\n  display: grid;\n  align-items: stretch;\n  justify-items: center;\n  grid-template-columns: 1fr;\n  grid-template-rows: 1fr 60px;\n  grid-template-areas: \"center\" \"footer\";\n}\n.pf-home-page .pf-home-page__center {\n  grid-area: center;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-around;\n  align-items: center;\n}\n.pf-home-page .pf-home-page__center .logo {\n  height: 1em;\n  margin-right: 1rem;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__title {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: center;\n  font-size: 60px;\n  margin: 25px;\n  text-align: center;\n  font-family: var(--pf-font-compact);\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select {\n  font-family: var(--pf-font-compact);\n  --chan-width: 100px;\n  --chan-num: 2;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select input[type=radio] {\n  width: 0;\n  height: 0;\n  margin: 0;\n  padding: 0;\n  -moz-appearance: none;\n  -webkit-appearance: none;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select input[type=radio]:nth-of-type(1):checked ~ .pf-home-page__highlight {\n  margin-left: 0;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select input[type=radio]:nth-of-type(2):checked ~ .pf-home-page__highlight {\n  margin-left: 100px;\n  background-color: hsl(54, 100%, 40%);\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select input[type=radio]:nth-of-type(3):checked ~ .pf-home-page__highlight {\n  margin-left: 200px;\n  background-color: hsl(24, 80%, 42%);\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select fieldset {\n  text-align: center;\n  margin: 1rem auto;\n  padding: 0;\n  position: relative;\n  background-color: hsl(218, 8%, 30%);\n  border-radius: 2px;\n  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.4);\n  border: 0;\n  width: calc(var(--chan-width) * var(--chan-num));\n  height: 40px;\n  line-height: 40px;\n  z-index: 0;\n  user-select: none;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select label {\n  display: inline-block;\n  cursor: pointer;\n  position: relative;\n  width: var(--chan-width);\n  height: 100%;\n  color: white;\n  z-index: 2;\n  text-transform: uppercase;\n  font-size: 16px;\n  font-family: var(--pf-font-compact);\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select .pf-home-page__highlight {\n  width: var(--chan-width);\n  height: 100%;\n  position: absolute;\n  background: hsla(122, 45%, 45%, 0.99);\n  background-image: linear-gradient(rgba(255, 255, 255, 0.2), transparent);\n  top: 0;\n  left: 0;\n  z-index: 1;\n  border-radius: inherit;\n  transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select .pf-home-page__reload {\n  font-size: 12px;\n  opacity: 0;\n  color: #da4534;\n  font-weight: 400;\n  transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__channel-select .pf-home-page__reload.show {\n  opacity: 1;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  font-family: var(--pf-font-compact);\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints .pf-hotkey {\n  display: inline-flex;\n  vertical-align: middle;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints ul {\n  margin: 0;\n  padding: 0;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints ul li {\n  padding-top: 0.5rem;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints .pf-home-page__tagline {\n  font-style: italic;\n  color: red;\n}\n.pf-home-page .pf-home-page__center .pf-home-page__hints img {\n  display: block;\n  object-fit: contain;\n  max-width: 30vw;\n}\n.pf-home-page .pf-privacy {\n  grid-area: footer;\n  align-self: center;\n  text-decoration: none;\n  font-family: var(--pf-font-compact);\n  color: inherit;\n}\n\n.pf-sidebar {\n  --sidebar-padding-bottom: 40px;\n  --sidebar-timing: 0.15s;\n  color: var(--pf-sidebar-on-surface);\n  grid-area: sidebar;\n  z-index: 4;\n  background-color: var(--pf-sidebar-surface);\n  overflow: hidden;\n  width: var(--sidebar-width);\n  display: flex;\n  position: relative;\n  flex-direction: column;\n  border-right: 1px solid var(--pf-sidebar-border);\n  transition: margin-left var(--anim-easing) var(--sidebar-timing), visibility linear var(--sidebar-timing);\n}\n.pf-sidebar > * {\n  border-bottom: 1px solid var(--pf-sidebar-border-secondary);\n}\n.pf-sidebar input[type=file] {\n  display: none;\n}\n.pf-sidebar > header {\n  font-family: var(--pf-font-compact);\n  font-weight: 700;\n  font-size: 24px;\n  height: var(--topbar-height);\n  line-height: var(--topbar-height);\n  vertical-align: middle;\n  padding: 0 12px;\n  color: var(--pf-sidebar-on-surface);\n  overflow: visible;\n}\n.pf-sidebar > header .pf-sidebar__brand {\n  height: 36px;\n  margin-top: 4px;\n}\n.pf-sidebar > header::before {\n  z-index: 10;\n}\n.pf-sidebar > header.pf-sidebar__channel--canary::before, .pf-sidebar > header.pf-sidebar__channel--autopush::before {\n  display: block;\n  position: absolute;\n  font-size: 10px;\n  line-height: 5px;\n  font-family: var(--pf-font);\n  top: 7px;\n  right: 48px;\n}\n.pf-sidebar > header.pf-sidebar__channel--canary::before {\n  content: \"CANARY\";\n  color: #ffd700;\n}\n.pf-sidebar > header.pf-sidebar__channel--autopush::before {\n  content: \"AUTOPUSH\";\n  color: #aed581;\n}\n.pf-sidebar .pf-sidebar-button {\n  position: fixed;\n  z-index: 5;\n  height: var(--topbar-height);\n  left: calc(var(--sidebar-width) - 50px);\n  border-radius: 0;\n  border-bottom: inherit;\n  visibility: visible;\n  transition: left var(--anim-easing) var(--sidebar-timing);\n  width: 50px;\n  overflow: hidden;\n}\n.pf-sidebar .pf-sidebar-button > button {\n  vertical-align: middle;\n}\n.pf-sidebar--hidden {\n  visibility: hidden;\n  margin-left: calc(var(--sidebar-width) * -1);\n}\n.pf-sidebar--hidden .pf-sidebar-button {\n  left: 0;\n  background-color: transparent;\n  border-radius: unset;\n  border-bottom: none;\n  color: #aaaaaa;\n}\n.pf-sidebar__scroll {\n  overflow-y: auto;\n  flex: 1;\n  scrollbar-color: var(--pf-sidebar-border) var(--pf-sidebar-surface-secondary);\n}\n.pf-sidebar__scroll::-webkit-scrollbar {\n  width: 0.5em;\n}\n.pf-sidebar__scroll::-webkit-scrollbar-track {\n  background-color: var(--pf-sidebar-surface-secondary);\n  border-radius: 2px;\n}\n.pf-sidebar__scroll::-webkit-scrollbar-thumb {\n  background: var(--pf-sidebar-border);\n  border-radius: 2px;\n}\n.pf-sidebar__scroll-container {\n  position: relative;\n  min-height: 100%;\n  padding-bottom: var(--sidebar-padding-bottom);\n}\n.pf-sidebar__scroll-container > section {\n  padding: 20px 0;\n  max-height: 80px;\n}\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header {\n  cursor: pointer;\n}\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header > h1,\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header > h2 {\n  letter-spacing: 0.25px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  margin: 0 12px;\n}\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header > h1 {\n  font-size: 15px;\n}\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header > h2 {\n  color: rgba(255, 255, 255, 0.5);\n  font-size: 12px;\n  margin-top: 8px;\n  font-weight: 400;\n}\n.pf-sidebar__scroll-container > section .pf-sidebar__section-header:before {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"expand_more\";\n  float: right;\n  color: rgba(255, 255, 255, 0.3);\n  margin-right: 12px;\n  margin-top: -4px;\n}\n.pf-sidebar__scroll-container > section:hover {\n  background: color-mix(in srgb, transparent, currentColor 8%);\n}\n.pf-sidebar__scroll-container > section.pf-sidebar__section--expanded {\n  background-color: var(--pf-sidebar-surface-secondary);\n  max-height: unset;\n}\n.pf-sidebar__scroll-container > section.pf-sidebar__section--expanded .pf-sidebar__section-header h2 {\n  opacity: 0;\n}\n.pf-sidebar__scroll-container > section.pf-sidebar__section--expanded .pf-sidebar__section-header:before {\n  content: \"expand_less\";\n}\n.pf-sidebar__scroll-container > section.pf-sidebar__section--expanded .pf-sidebar__section-content {\n  pointer-events: inherit;\n  opacity: 1;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content {\n  pointer-events: none;\n  opacity: 0;\n  color: var(--pf-sidebar-on-surface-muted);\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content a {\n  color: inherit;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li a {\n  line-height: 24px;\n  font-size: 14px;\n  padding: 4px 12px;\n  text-decoration: none;\n  display: block;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li a.pending {\n  color: rgba(255, 255, 255, 0.3);\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li a.pending::after {\n  content: \" \";\n  display: inline-block;\n  vertical-align: middle;\n  box-sizing: border-box;\n  width: 18px;\n  height: 18px;\n  margin-left: 10px;\n  border-radius: 50%;\n  border: 2px solid #b4b7ba;\n  border-color: #b4b7ba transparent;\n  animation: pending-spinner 1.25s linear infinite;\n}\n@keyframes pending-spinner {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li a[disabled] {\n  text-decoration: line-through;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li .pf-sidebar__button-icon {\n  margin-right: 10px;\n  font-size: 20px;\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li:hover {\n  background: color-mix(in srgb, transparent, currentColor 8%);\n}\n.pf-sidebar__scroll-container .pf-sidebar__section-content li .pf-sidebar__trace-file-name {\n  white-space: break-spaces;\n  font-family: var(--pf-font-compact);\n  word-break: break-all;\n  font-weight: 300;\n  letter-spacing: 0;\n  margin-top: -10px;\n}\n.pf-sidebar .pf-sidebar__footer {\n  position: absolute;\n  bottom: 0;\n  width: 100%;\n  padding: 2px 10px;\n  display: grid;\n  height: -var(--sidebar-padding-bottom);\n  grid-template-columns: repeat(4, min-content);\n  grid-gap: 10px;\n}\n.pf-sidebar .pf-sidebar__footer > button {\n  color: hsl(217, 39%, 94%);\n}\n.pf-sidebar .pf-sidebar__footer > button i {\n  font-size: 24px;\n}\n.pf-sidebar .pf-sidebar__footer > button:hover {\n  color: hsl(45, 100%, 48%);\n}\n.pf-sidebar .pf-sidebar__footer > .pf-sidebar__dbg-info-square {\n  font-family: var(--pf-font-compact);\n  width: 24px;\n  height: 24px;\n  line-height: 24px;\n  user-select: none;\n  display: flex;\n  justify-content: center;\n  flex-direction: column;\n  align-items: center;\n  margin: 1px 0;\n  background: var(--pf-sidebar-surface-secondary);\n  border-radius: 2px;\n  font-size: 12px;\n  text-align: center;\n}\n.pf-sidebar .pf-sidebar__footer > .pf-sidebar__dbg-info-square--green {\n  background: var(--pf-color-success);\n  color: var(--pf-color-text-on-success);\n}\n.pf-sidebar .pf-sidebar__footer > .pf-sidebar__dbg-info-square--amber {\n  background: var(--pf-color-warning);\n  color: var(--pf-color-text-on-warning);\n}\n.pf-sidebar .pf-sidebar__footer > .pf-sidebar__dbg-info-square--red {\n  background: var(--pf-color-danger);\n  color: var(--pf-color-text-on-danger);\n}\n.pf-sidebar .pf-sidebar__footer > .pf-sidebar__dbg-info-square > div {\n  font-size: 10px;\n  line-height: 11px;\n}\n.pf-sidebar .pf-sidebar__footer .pf-sidebar__version {\n  position: absolute;\n  right: 8px;\n  bottom: 3px;\n  font-size: 12px;\n  font-family: var(--pf-font-compact);\n  margin-top: 11px;\n}\n.pf-sidebar .pf-sidebar__footer .pf-sidebar__version a {\n  color: rgba(255, 255, 255, 0.5);\n  text-decoration: none;\n}\n\n.pf-hiring-banner {\n  font-size: 12px;\n  background: #db4634;\n  box-shadow: 0 0 3px var(--pf-color-box-shadow);\n  left: -65px;\n  letter-spacing: 1px;\n  line-height: 25px;\n  position: absolute;\n  text-align: center;\n  top: 20px;\n  transform: rotate(-45deg);\n  width: 200px;\n  z-index: 5;\n}\n.pf-hiring-banner a {\n  color: white;\n  text-decoration: none;\n}\n\n.pf-topbar {\n  grid-area: topbar;\n  position: relative;\n  z-index: 3;\n  overflow: visible;\n  background-color: var(--pf-color-background-secondary);\n  box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n  min-height: var(--topbar-height);\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n.pf-topbar--hide-sidebar .pf-omnibox--query-mode {\n  padding-left: 48px;\n}\n.pf-topbar__error-box {\n  position: absolute;\n  right: 10px;\n  display: flex;\n  align-items: center;\n  font-size: 20px;\n}\n.pf-topbar__error-popup {\n  width: 100px;\n  font-size: 14px;\n  font-family: var(--pf-font-compact);\n}\n\n.pf-omnibox {\n  transition: opacity 0.25s ease, color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, width 0.25s ease, height 0.25s ease, max-width 0.25s ease, max-height 0.25s ease, margin 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, border-radius 0.25s ease;\n  width: 90%;\n  max-width: 600px;\n  display: grid;\n  grid-template-areas: \"icon input stepthrough\";\n  grid-template-columns: 34px auto max-content;\n  border-radius: 2px;\n  background-color: var(--pf-color-background);\n  border: solid 1px transparent;\n  line-height: 34px;\n}\n.pf-omnibox:focus-within {\n  border-color: var(--pf-color-primary);\n  box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n}\n.pf-omnibox:before {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"search\";\n  margin: 5px;\n  color: var(--pf-color-text-muted);\n  grid-area: icon;\n}\n.pf-omnibox input {\n  grid-area: input;\n  border: 0;\n  padding: 0 10px;\n  font-size: 18px;\n  font-family: inherit;\n  color: inherit;\n  background-color: transparent;\n}\n.pf-omnibox input:focus {\n  outline: none;\n}\n.pf-omnibox input::placeholder {\n  color: var(--pf-color-text-muted);\n  font-family: var(--pf-font-compact);\n  font-weight: 400;\n}\n.pf-omnibox--query-mode {\n  background-color: #111;\n  border-radius: 0;\n  width: 100%;\n  max-width: 100%;\n  margin-top: 0;\n  height: var(--topbar-height);\n  border: none;\n}\n.pf-omnibox--query-mode input {\n  color: #9ddc67;\n  font-family: var(--pf-font-monospace);\n  padding-left: 0;\n}\n.pf-omnibox--query-mode:before {\n  content: \"attach_money\";\n  color: #9ddc67;\n  font-size: 26px;\n  padding-top: 5px;\n}\n.pf-omnibox--command-mode:before {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"chevron_right\";\n  margin: 5px;\n  color: var(--pf-color-text-muted);\n  grid-area: icon;\n}\n.pf-omnibox--prompt-mode:before {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"question_mark\";\n  margin: 5px;\n  color: var(--pf-color-text-muted);\n  grid-area: icon;\n}\n.pf-omnibox--message-mode {\n  border-radius: 2px;\n}\n.pf-omnibox--message-mode input::placeholder {\n  font-weight: 400;\n  font-family: var(--pf-font-monospace);\n  color: var(--pf-color-text-muted);\n}\n.pf-omnibox--message-mode:before {\n  content: \"info\";\n}\n.pf-omnibox__stepthrough {\n  grid-area: stepthrough;\n  display: flex;\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--pf-color-text-muted);\n}\n.pf-omnibox__stepthrough-current {\n  padding-right: 10px;\n}\n\n.pf-omnibox-dropdown {\n  font-family: var(--pf-font-compact);\n}\n.pf-omnibox-dropdown ul {\n  padding: 0;\n  margin: 0;\n}\n.pf-omnibox-dropdown .pf-keycap {\n  font-size: smaller;\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container {\n  max-height: 450px;\n  overflow-y: auto;\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container .pf-omnibox-section-header {\n  font-size: smaller;\n  margin: 4px 0;\n  border-bottom: solid 1px var(--pf-color-border);\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container li {\n  list-style-type: none;\n  display: flex;\n  gap: 4px;\n  user-select: none;\n  cursor: pointer;\n  padding: 4px 8px;\n  border-radius: 2px;\n  align-items: center;\n  line-height: 1.2;\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container li .pf-title {\n  flex-grow: 1;\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container li .pf-omnibox__tag {\n  font-size: smaller;\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container li:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-omnibox-dropdown .pf-omnibox-options-container li.pf-highlighted {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n}\n.pf-omnibox-dropdown .pf-omnibox-dropdown-footer {\n  display: flex;\n  justify-content: center;\n  padding: 8px 0 6px 0;\n  gap: 12px;\n  border-top: solid 1px var(--pf-color-border);\n}\n.pf-omnibox-dropdown .pf-omnibox-dropdown-footer section {\n  display: flex;\n  justify-content: center;\n  gap: 4px;\n}\n\n.pf-flamegraph-profile {\n  height: 100%;\n  position: relative;\n}\n.pf-flamegraph-profile .selected {\n  justify-self: end;\n  margin-right: 10px;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  width: 200px;\n}\n\n.pf-trace-info-page {\n  overflow-y: auto;\n  overflow-x: hidden;\n  padding: 0 20px;\n}\n.pf-trace-info-page__help-icon {\n  font-size: 18px;\n  margin-left: 10px;\n  color: var(--pf-color-text-muted);\n  cursor: default;\n}\n.pf-trace-info-page__errors {\n  background: color-mix(in srgb, var(--pf-color-danger) 20%, transparent);\n}\n.pf-trace-info-page__metric-error {\n  font-family: var(--pf-font-monospace);\n  font-size: 12px;\n  padding: 5px;\n  word-break: break-all;\n}\n.pf-trace-info-page section {\n  margin: 20px auto;\n  max-width: 800px;\n  font-size: 1rem;\n  padding: 20px;\n  border-radius: 8px;\n}\n.pf-trace-info-page section h2 {\n  font-weight: 400;\n  font-size: 2rem;\n  margin-bottom: 1rem;\n}\n.pf-trace-info-page section h3 {\n  font-size: 1.5rem;\n  font-weight: 400;\n  margin-top: 1.25rem;\n  margin-bottom: 1rem;\n}\n.pf-trace-info-page section h4 {\n  font-size: 0.9rem;\n  font-weight: 400;\n  line-height: 1.25rem;\n  margin: 10px 0;\n}\n.pf-trace-info-page section table {\n  border-spacing: 4px 1px;\n}\n.pf-trace-info-page section table thead td {\n  margin-bottom: 5px;\n  padding-bottom: 5px;\n  font-weight: 500;\n}\n.pf-trace-info-page section table tr td {\n  min-height: 20px;\n}\n.pf-trace-info-page section table tbody tr:nth-child(2n+1) td {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-trace-info-page section table tbody td.name {\n  min-width: 150px;\n}\n.pf-trace-info-page section table tbody td {\n  font-family: var(--pf-font-monospace);\n  font-size: 12px;\n  padding: 5px;\n  word-break: break-all;\n  white-space: pre-wrap;\n  vertical-align: top;\n}\n.pf-trace-info-page section table tbody td:first-of-type {\n  font-weight: 800;\n}\n\n.pf-statusbar {\n  grid-area: statusbar;\n  display: flex;\n  align-items: baseline;\n  background: var(--pf-sidebar-surface);\n  padding: 0px 8px;\n  color: var(--pf-sidebar-on-surface);\n  font-size: 14px;\n  border-top: solid 1px var(--pf-sidebar-border);\n}\n.pf-statusbar > .pf-button {\n  border-radius: unset;\n}\n\n.pf-cookie-consent {\n  position: absolute;\n  z-index: 10;\n  left: 10px;\n  bottom: 10px;\n  width: 550px;\n  background-color: #19212b;\n  font-size: 14px;\n  color: rgb(180, 183, 186);\n  border-radius: 5px;\n  padding: 20px;\n}\n.pf-cookie-consent .buttons {\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 10px;\n  font-size: 15px;\n}\n.pf-cookie-consent button {\n  padding: 10px;\n  border-radius: 3px;\n  color: #fff;\n  margin-left: 5px;\n}\n.pf-cookie-consent button a {\n  text-decoration: none;\n  color: #fff;\n}\n.pf-cookie-consent button:hover {\n  background-color: #373f4b;\n  cursor: pointer;\n}\n\n.pf-perf-stats {\n  --stroke-color: hsl(217, 39%, 94%);\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  width: 600px;\n  color: var(--stroke-color);\n  font-family: var(--pf-font-monospace);\n  padding: 10px 24px;\n  z-index: 100;\n  background-color: rgba(27, 28, 29, 0.9);\n}\n.pf-perf-stats button {\n  text-decoration: underline;\n  color: hsl(45, 100%, 48%);\n}\n.pf-perf-stats button:hover {\n  color: hsl(6, 70%, 53%);\n}\n.pf-perf-stats__close {\n  position: absolute;\n  right: 20px;\n  top: 10px;\n  width: 20px;\n  height: 20px;\n  color: var(--stroke-color);\n}\n.pf-perf-stats > section {\n  padding: 5px;\n  border-bottom: 1px solid var(--stroke-color);\n}\n.pf-perf-stats div {\n  margin: 2px 0;\n}\n.pf-perf-stats table,\n.pf-perf-stats td,\n.pf-perf-stats th {\n  border: 1px solid var(--stroke-color);\n  text-align: center;\n  padding: 4px;\n  margin: 4px 0;\n}\n.pf-perf-stats table {\n  border-collapse: collapse;\n}\n\n.pf-help-modal table {\n  margin-bottom: 15px;\n}\n.pf-help-modal table td {\n  min-width: 250px;\n}\n.pf-help-modal table td:first-child {\n  font-family: var(--pf-font-monospace);\n}\n.pf-help-modal h2 {\n  font: inherit;\n  font-weight: bold;\n}\n\n.pf-theme-provider {\n  display: contents;\n  color: var(--pf-color-text);\n  background-color: var(--pf-color-background);\n  scrollbar-color: var(--pf-color-border) var(--pf-color-background); /* thumb color track color */\n}\n.pf-theme-provider--light {\n  --pf-color-background: white;\n  --pf-color-background-secondary: #edf0f1;\n  --pf-color-interactive-base: rgb(4, 33, 56);\n  --pf-color-text: #333;\n  --pf-color-text-muted: #75797c;\n  --pf-color-text-disabled: gray;\n  --pf-color-border: #ccc;\n  --pf-color-border-secondary: #e0e0e0;\n  --pf-color-text-hint: #808080;\n  --pf-color-track-summary-collapsed: #f4fafb;\n  --pf-color-track-summary-expanded: #262f3b;\n  --pf-color-track-summary-expanded-text: #e8eaed;\n  --pf-color-box-shadow: rgba(0, 0, 0, 0.2);\n  --pf-color-neutral: gray;\n  --pf-color-accent: #2667e7;\n  --pf-color-highlight: #ffe263;\n  --pf-color-primary: #3d5688;\n  --pf-color-text-on-primary: white;\n  --pf-color-danger: rgb(202, 38, 38);\n  --pf-color-text-on-danger: white;\n  --pf-color-success: rgb(0, 128, 0);\n  --pf-color-text-on-success: white;\n  --pf-color-warning: rgb(232, 158, 0);\n  --pf-color-text-on-warning: var(--pf-color-text);\n  --pf-sidebar-surface: #262f3c;\n  --pf-sidebar-surface-secondary: #19212b;\n  --pf-sidebar-on-surface: white;\n  --pf-sidebar-on-surface-muted: #b4b7ba;\n  --pf-sidebar-border: #4d5765;\n  --pf-sidebar-border-secondary: #404854;\n}\n.pf-theme-provider--dark {\n  --pf-color-background: #232426;\n  --pf-color-background-secondary: #383a3e;\n  --pf-color-interactive-base: white;\n  --pf-color-text: #dce0e2;\n  --pf-color-text-muted: #a0a2a5;\n  --pf-color-text-disabled: #8d8d8e;\n  --pf-color-border: #626568;\n  --pf-color-border-secondary: #404042;\n  --pf-color-text-hint: #9aa0a6;\n  --pf-color-track-summary-collapsed: #2f3437;\n  --pf-color-track-summary-expanded: #454d55;\n  --pf-color-track-summary-expanded-text: #e8eaed;\n  --pf-color-box-shadow: rgba(0, 0, 0, 0.4);\n  --pf-color-neutral: gray;\n  --pf-color-accent: #2667e7;\n  --pf-color-highlight: #ffe263;\n  --pf-color-primary: #7197e3;\n  --pf-color-text-on-primary: #333;\n  --pf-color-danger: rgb(230, 90, 90);\n  --pf-color-text-on-danger: #333;\n  --pf-color-success: rgb(52, 221, 52);\n  --pf-color-text-on-success: #333;\n  --pf-color-warning: rgb(244, 188, 67);\n  --pf-color-text-on-warning: #333;\n  --pf-sidebar-surface: var(--pf-color-background-secondary);\n  --pf-sidebar-surface-secondary: var(--pf-color-background);\n  --pf-sidebar-on-surface: var(--pf-color-text);\n  --pf-sidebar-on-surface-muted: var(--pf-color-text-muted);\n  --pf-sidebar-border: var(--pf-color-border);\n  --pf-sidebar-border-secondary: var(--pf-color-border-secondary);\n}\n\n.pf-timeline-toolbar {\n  width: var(--track-shell-width);\n}\n\n.pf-timeline-toolbar__bulk {\n  font-family: var(--pf-font-compact);\n  background: var(--pf-color-accent);\n  color: var(--pf-color-text-on-primary);\n  border-radius: 100px;\n  padding: 1px 2px;\n  align-items: baseline;\n  line-height: 1;\n}\n.pf-timeline-toolbar__bulk-icon {\n  align-self: center;\n}\n\n.pf-timeline-toolbar__multiselect-pill {\n  background: var(--pf-color-accent);\n  color: var(--pf-color-text-on-primary);\n}\n\n.pf-timeline-toolbar__bulk-callout {\n  margin: 4px 8px;\n  font-size: 0.7em;\n  font-style: italic;\n}\n\n.details-source {\n  max-width: 50%;\n  width: 100%;\n  padding: 0px 10px;\n  display: inline-block;\n  vertical-align: top;\n}\n\n.details-table table.half-width {\n  display: inline-block;\n  vertical-align: top;\n}\n\n.details-panel .details-panel-heading.heap-profile .function-profile-selected {\n  width: 400px;\n}\n\n.topbar-button {\n  color: white;\n  position: absolute;\n  z-index: 5;\n  background-color: #262f3c;\n  height: var(--topbar-height);\n  right: 0px;\n  border-radius: 5px 0 0 5px;\n  border-bottom: inherit;\n  visibility: visible;\n  transition: left var(--anim-easing) var(--sidebar-timing);\n  width: 48px;\n  overflow: hidden;\n}\n.topbar-button > button {\n  vertical-align: middle;\n}\n\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\ncode[class*=language-],\npre[class*=language-] {\n  color: black;\n  background: none;\n  text-shadow: 0 1px white;\n  font-family: Consolas, Monaco, \"Andale Mono\", \"Ubuntu Mono\", monospace;\n  font-size: 1em;\n  text-align: left;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  word-wrap: normal;\n  line-height: 1.5;\n  -moz-tab-size: 4;\n  -o-tab-size: 4;\n  tab-size: 4;\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n}\n\npre[class*=language-]::-moz-selection, pre[class*=language-] ::-moz-selection,\ncode[class*=language-]::-moz-selection, code[class*=language-] ::-moz-selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\npre[class*=language-]::selection, pre[class*=language-] ::selection,\ncode[class*=language-]::selection, code[class*=language-] ::selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\n@media print {\n  code[class*=language-],\n  pre[class*=language-] {\n    text-shadow: none;\n  }\n}\n/* Code blocks */\npre[class*=language-] {\n  padding: 1em;\n  margin: 0 0;\n  overflow: auto;\n  font-size: 0.8em;\n}\n\n:not(pre) > code[class*=language-],\npre[class*=language-] {\n  background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=language-] {\n  padding: 0.1em;\n  border-radius: 0.3em;\n  white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray;\n}\n\n.token.punctuation {\n  color: #999;\n}\n\n.token.namespace {\n  opacity: 0.7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #9a6e3a;\n  /* This background color was intended by the author of this theme. */\n  background: hsla(0, 0%, 100%, 0.5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #07a;\n}\n\n.token.function,\n.token.class-name {\n  color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90;\n}\n\n.token.important,\n.token.bold {\n  font-weight: bold;\n}\n\n.token.italic {\n  font-style: italic;\n}\n\n.token.entity {\n  cursor: help;\n}\n\npre[class*=language-].line-numbers {\n  position: relative;\n  padding-left: 3.8em;\n  counter-reset: linenumber;\n}\n\npre[class*=language-].line-numbers > code {\n  position: relative;\n  white-space: inherit;\n}\n\n.line-numbers .line-numbers-rows {\n  position: absolute;\n  pointer-events: none;\n  top: 0;\n  font-size: 100%;\n  left: -3.8em;\n  width: 3em; /* works for line-numbers below 1000 lines */\n  letter-spacing: -1px;\n  border-right: 1px solid #999;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\n.line-numbers-rows > span {\n  display: block;\n  counter-increment: linenumber;\n}\n\n.line-numbers-rows > span:before {\n  content: counter(linenumber);\n  color: #999;\n  display: block;\n  padding-right: 0.8em;\n  text-align: right;\n}\n\n.pf-aggregation-loading {\n  height: 100%;\n}\n\n.pf-aggregation-panel__bar-chart {\n  font-size: 11px;\n  display: flex;\n  overflow: hidden;\n  gap: 1px;\n}\n.pf-aggregation-panel__bar-chart-bar {\n  height: 20px;\n  line-height: 20px;\n  padding-left: 3px;\n  padding-right: 3px;\n  border-style: solid;\n  border-width: 1px;\n  border-radius: 2px;\n  user-select: none;\n}\n.pf-aggregation-panel__bar-chart-bar:hover {\n  min-width: fit-content;\n}\n\n.pf-data-grid {\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  font-family: var(--pf-font-compact);\n}\n.pf-data-grid--fill-height {\n  height: 100%;\n}\n.pf-data-grid__toolbar {\n  border-bottom: solid 1px var(--pf-color-border);\n}\n.pf-data-grid__table {\n  flex: 1;\n  overflow: auto;\n}\n.pf-data-grid__aggregation {\n  display: inline-flex;\n  gap: 0.3em;\n  color: var(--pf-color-text-muted);\n  font-weight: 300;\n}\n.pf-data-grid__cell--number {\n  text-align: right;\n}\n.pf-data-grid__cell--null {\n  text-align: center;\n  color: var(--pf-color-text-muted);\n  font-style: italic;\n}\n.pf-data-grid__loading {\n  flex: none;\n}\n\n.pf-json-settings-editor {\n  width: 400px;\n}\n.pf-json-settings-editor__editor-section {\n  margin-bottom: 10px;\n}\n.pf-json-settings-editor__editor {\n  height: 200px;\n  width: 100%;\n}\n.pf-json-settings-editor__error {\n  margin-top: 10px;\n  word-wrap: break-word;\n  white-space: pre-wrap;\n}\n.pf-json-settings-editor__actions {\n  margin-top: 10px;\n}\n\n.pf-pivot-table__total-values {\n  font-weight: bolder;\n}\n.pf-pivot-table__cell--indent {\n  width: 16px;\n}\n\n.pf-query-history__header {\n  position: sticky;\n  top: 0;\n  display: flex;\n  align-content: baseline;\n  background-color: var(--pf-color-background-secondary);\n  font-size: 15px;\n  font-weight: 400;\n  padding: 4px 10px;\n  vertical-align: middle;\n  border-bottom: 1px solid var(--pf-color-border);\n  z-index: 1;\n}\n.pf-query-history__item {\n  border-bottom: 1px solid var(--pf-color-border-secondary);\n  padding: 0.25em 0.5em;\n  max-height: 150px;\n  overflow-y: auto;\n  position: relative;\n}\n.pf-query-history__item pre {\n  font-size: 10pt;\n  margin: 0;\n  overflow-x: auto;\n  overflow-y: hidden;\n  white-space: pre-wrap;\n  position: relative;\n  cursor: pointer;\n}\n.pf-query-history__item pre:hover::after {\n  content: \"Doubleclick to re-run\";\n  font-size: 12px;\n  color: var(--pf-color-text-hint);\n  position: absolute;\n  top: 0;\n  margin: auto;\n  right: 0;\n}\n.pf-query-history__item:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-query-history__item:hover .pf-query-history__item-buttons {\n  visibility: visible;\n}\n.pf-query-history__item-buttons {\n  position: sticky;\n  top: 0;\n  float: right;\n  visibility: hidden;\n}\n\n.pf-query-panel {\n  display: contents;\n}\n.pf-query-panel__query-error {\n  padding: 20px 10px;\n  color: var(--pf-color-danger);\n  font-family: var(--pf-font-monospace);\n  font-size: 12px;\n  font-weight: 300;\n  white-space: pre;\n}\n\n.pf-anchor {\n  display: inline-block;\n  color: var(--pf-color-primary);\n  border-radius: 2px;\n  cursor: pointer;\n  text-decoration: underline;\n  text-decoration-thickness: 1px;\n  text-decoration-color: var(--pf-color-primary);\n}\n.pf-anchor > .pf-icon {\n  margin-left: 1px;\n}\n.pf-anchor:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  text-decoration-color: unset;\n  text-decoration-thickness: 2px;\n}\n.pf-anchor:focus-visible {\n  outline: 2px auto var(--pf-color-accent);\n}\n\n.pf-box {\n  padding: 4px;\n}\n.pf-box--fill-height {\n  height: 100%;\n  overflow-y: hidden;\n}\n.pf-box.pf-spacing-none {\n  padding: 0px;\n}\n.pf-box.pf-spacing-small {\n  padding: 2px;\n}\n.pf-box.pf-spacing-medium {\n  padding: 4px;\n}\n.pf-box.pf-spacing-large {\n  padding: 6px;\n}\n\n.pf-button {\n  font-family: var(--pf-font-compact);\n  line-height: 1;\n  user-select: none;\n  border-radius: 2px;\n  padding: 4px 8px;\n  white-space: nowrap;\n  min-width: max-content;\n}\n.pf-button--shrink {\n  min-width: 0;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.pf-button--rounded {\n  border-radius: 100px;\n}\n.pf-button > .pf-left-icon {\n  margin-right: 6px;\n}\n.pf-button > .pf-right-icon {\n  margin-left: 6px;\n}\n.pf-button:focus-visible {\n  outline: 2px auto var(--pf-color-accent);\n}\n.pf-button.pf-compact {\n  padding: 2px 4px;\n}\n.pf-button.pf-compact > .pf-left-icon {\n  margin-right: 2px;\n}\n.pf-button.pf-compact > .pf-right-icon {\n  margin-left: 2px;\n}\n.pf-button.pf-icon-only {\n  padding: 4px;\n}\n.pf-button.pf-icon-only > .pf-left-icon {\n  margin: 0;\n}\n.pf-button.pf-icon-only.pf-compact {\n  padding: 0;\n}\n.pf-button.pf-icon-only::before {\n  content: \"​\"; /* Zero-width space */\n}\n.pf-button[disabled] {\n  filter: opacity(50%);\n  cursor: not-allowed;\n}\n.pf-button--filled {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 10%);\n}\n.pf-button--filled:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 15%);\n}\n.pf-button--filled.pf-active, .pf-button--filled:active {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 20%);\n}\n.pf-button--filled[disabled]:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 10%);\n}\n.pf-button--filled[disabled].pf-active {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 40%);\n}\n.pf-button--filled.pf-intent-primary {\n  color: var(--pf-color-text-on-primary);\n  background: var(--pf-color-primary);\n}\n.pf-button--filled.pf-intent-primary:hover {\n  background: color-mix(in srgb, var(--pf-color-primary), var(--pf-color-interactive-base) 8%);\n}\n.pf-button--filled.pf-intent-primary:active, .pf-button--filled.pf-intent-primary.pf-active {\n  background: color-mix(in srgb, var(--pf-color-primary), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-primary[disabled]:hover {\n  background: var(--pf-color-primary);\n}\n.pf-button--filled.pf-intent-primary[disabled].pf-active {\n  background: color-mix(in srgb, var(--pf-color-primary), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-success {\n  color: var(--pf-color-text-on-success);\n  background: var(--pf-color-success);\n}\n.pf-button--filled.pf-intent-success:hover {\n  background: color-mix(in srgb, var(--pf-color-success), var(--pf-color-interactive-base) 8%);\n}\n.pf-button--filled.pf-intent-success:active, .pf-button--filled.pf-intent-success.pf-active {\n  background: color-mix(in srgb, var(--pf-color-success), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-success[disabled]:hover {\n  background: var(--pf-color-success);\n}\n.pf-button--filled.pf-intent-success[disabled].pf-active {\n  background: color-mix(in srgb, var(--pf-color-success), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-danger {\n  color: var(--pf-color-text-on-danger);\n  background: var(--pf-color-danger);\n}\n.pf-button--filled.pf-intent-danger:hover {\n  background: color-mix(in srgb, var(--pf-color-danger), var(--pf-color-interactive-base) 8%);\n}\n.pf-button--filled.pf-intent-danger:active, .pf-button--filled.pf-intent-danger.pf-active {\n  background: color-mix(in srgb, var(--pf-color-danger), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-danger[disabled]:hover {\n  background: var(--pf-color-danger);\n}\n.pf-button--filled.pf-intent-danger[disabled].pf-active {\n  background: color-mix(in srgb, var(--pf-color-danger), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-warning {\n  color: var(--pf-color-text-on-warning);\n  background: var(--pf-color-warning);\n}\n.pf-button--filled.pf-intent-warning:hover {\n  background: color-mix(in srgb, var(--pf-color-warning), var(--pf-color-interactive-base) 8%);\n}\n.pf-button--filled.pf-intent-warning:active, .pf-button--filled.pf-intent-warning.pf-active {\n  background: color-mix(in srgb, var(--pf-color-warning), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--filled.pf-intent-warning[disabled]:hover {\n  background: var(--pf-color-warning);\n}\n.pf-button--filled.pf-intent-warning[disabled].pf-active {\n  background: color-mix(in srgb, var(--pf-color-warning), var(--pf-color-interactive-base) 16%);\n}\n.pf-button--outlined {\n  border: solid 1px var(--pf-color-border);\n}\n.pf-button--minimal:hover, .pf-button--outlined:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-button--minimal:active, .pf-button--minimal.pf-active, .pf-button--outlined:active, .pf-button--outlined.pf-active {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 16%);\n}\n.pf-button--minimal.pf-intent-primary, .pf-button--outlined.pf-intent-primary {\n  color: var(--pf-color-primary);\n}\n.pf-button--minimal.pf-intent-success, .pf-button--outlined.pf-intent-success {\n  color: var(--pf-color-success);\n}\n.pf-button--minimal.pf-intent-danger, .pf-button--outlined.pf-intent-danger {\n  color: var(--pf-color-danger);\n}\n.pf-button--minimal.pf-intent-warning, .pf-button--outlined.pf-intent-warning {\n  color: var(--pf-color-warning);\n}\n.pf-button--minimal[disabled]:hover, .pf-button--outlined[disabled]:hover {\n  background: unset;\n}\n.pf-button--minimal[disabled].pf-active, .pf-button--outlined[disabled].pf-active {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 16%);\n}\n\n.pf-button-bar {\n  display: flex;\n  flex-direction: row;\n  gap: 2px;\n  align-items: baseline;\n}\n\n.pf-button-group {\n  display: flex;\n  flex-direction: row;\n  align-items: baseline;\n}\n.pf-button-group .pf-button:not(:last-child) {\n  border-top-right-radius: unset;\n  border-bottom-right-radius: unset;\n  border-right: unset;\n}\n.pf-button-group .pf-button:not(:first-child) {\n  border-top-left-radius: unset;\n  border-bottom-left-radius: unset;\n}\n\n.pf-callout {\n  display: flex;\n  align-items: start;\n  line-height: 1;\n  background: var(--pf-color-background-secondary);\n  border-radius: 2px;\n  padding: 4px 6px;\n  border: solid 1px color-mix(in srgb, currentColor, transparent 50%);\n  gap: 0.2em;\n}\n.pf-callout > .pf-left-icon {\n  margin-left: -0.2em;\n  align-items: baseline;\n}\n.pf-callout.pf-intent-primary {\n  color: var(--pf-color-primary);\n  background: color-mix(in srgb, var(--pf-color-primary) 15%, transparent);\n}\n.pf-callout.pf-intent-danger {\n  color: var(--pf-color-danger);\n  background: color-mix(in srgb, var(--pf-color-danger) 15%, transparent);\n}\n.pf-callout.pf-intent-success {\n  color: var(--pf-color-success);\n  background: color-mix(in srgb, var(--pf-color-success) 15%, transparent);\n}\n.pf-callout.pf-intent-warning {\n  color: var(--pf-color-warning);\n  background: color-mix(in srgb, var(--pf-color-warning) 15%, transparent);\n}\n\n@layer pf-widgets {\n  .pf-card {\n    padding: 12px 16px;\n    box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n    border-radius: 4px;\n    border: solid 1px var(--pf-color-border);\n  }\n  .pf-card.pf-interactive {\n    transition: 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  }\n  .pf-card.pf-interactive:hover {\n    box-shadow: 0px 8px 16px var(--pf-color-box-shadow);\n  }\n  .pf-card-stack {\n    display: flex;\n    flex-direction: column;\n    border: solid 1px var(--pf-color-border);\n    border-radius: 4px;\n    box-shadow: 0px 2px 6px var(--pf-color-box-shadow);\n    overflow: hidden;\n  }\n  .pf-card-stack > .pf-card:not(:last-child) {\n    border-bottom: 1px solid var(--pf-color-border);\n  }\n  .pf-card-stack > .pf-card {\n    border-radius: unset;\n    border: unset;\n    box-shadow: unset;\n  }\n  .pf-card-stack > .pf-card.pf-interactive:hover {\n    background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n    box-shadow: unset;\n  }\n  .pf-card-stack--horizontal {\n    flex-direction: row;\n  }\n  .pf-card-stack--horizontal > .pf-card:not(:last-child) {\n    border-right: 1px solid var(--pf-color-border);\n    border-bottom: unset;\n  }\n}\n.pf-chart {\n  position: relative;\n}\n\n.pf-chart-popup {\n  width: max-content;\n  font-size: 15px;\n  display: flex;\n  flex-direction: column;\n  padding: 4px;\n  row-gap: 4px;\n}\n.pf-chart-popup__tooltip-text-line {\n  cursor: text;\n}\n.pf-chart-popup__tooltip-bold-text {\n  font-weight: 600;\n  cursor: text;\n}\n\n.pf-checkbox {\n  display: inline-flex;\n  gap: 0.3em;\n  align-items: baseline;\n  position: relative;\n  user-select: none;\n  cursor: pointer;\n}\n.pf-checkbox input {\n  position: absolute;\n  opacity: 0;\n  pointer-events: none;\n}\n.pf-checkbox span {\n  display: inline-block;\n  position: relative;\n  align-self: center;\n  height: 1em;\n  width: 1em;\n  border-radius: 2px;\n  border: solid 2px currentColor;\n  transition: background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  background: none;\n}\n.pf-checkbox span:after {\n  content: \"\";\n  position: absolute;\n  bottom: 0.4em;\n  left: 0em;\n  width: 0px;\n  height: 0px;\n  border-color: var(--pf-color-text-on-primary);\n  border-style: solid;\n  border-width: 0;\n  transform-origin: 0% 100%;\n  transform: rotate(45deg);\n  transition: height 150ms linear, width 100ms 150ms linear, border-width 0ms 250ms;\n}\n.pf-checkbox:hover span {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-checkbox input:checked + span {\n  border-color: var(--pf-color-primary);\n  background: var(--pf-color-primary);\n}\n.pf-checkbox input:focus-visible + span {\n  outline: 2px auto var(--pf-color-accent);\n}\n.pf-checkbox input:checked + span:after {\n  width: 0.3em;\n  height: 0.55em;\n  border-width: 0 0.15em 0.15em 0;\n  transition: width 150ms linear, height 150ms 100ms linear, border-width 0ms;\n}\n.pf-checkbox.pf-disabled {\n  opacity: 0.5;\n  pointer-events: none;\n  cursor: not-allowed;\n}\n\n.pf-chip {\n  font-family: var(--pf-font-compact);\n  line-height: 1;\n  user-select: none;\n  border-radius: 2px;\n  padding: 2px 4px;\n  white-space: nowrap;\n  min-width: max-content;\n  border: solid 1px color-mix(in srgb, currentColor, transparent 50%);\n}\n.pf-chip--rounded {\n  border-radius: 100px;\n}\n.pf-chip > .pf-left-icon {\n  margin-right: 6px;\n}\n.pf-chip > .pf-button {\n  margin-left: 6px;\n}\n.pf-chip:focus-visible {\n  outline: 2px auto var(--pf-color-accent);\n}\n.pf-chip.pf-intent-primary {\n  color: var(--pf-color-primary);\n  background: color-mix(in srgb, var(--pf-color-primary) 15%, transparent);\n}\n.pf-chip.pf-intent-success {\n  color: var(--pf-color-success);\n  background: color-mix(in srgb, var(--pf-color-success) 15%, transparent);\n}\n.pf-chip.pf-intent-warning {\n  color: var(--pf-color-warning);\n  background: color-mix(in srgb, var(--pf-color-warning) 15%, transparent);\n}\n.pf-chip.pf-intent-danger {\n  color: var(--pf-color-danger);\n  background: color-mix(in srgb, var(--pf-color-danger) 15%, transparent);\n}\n.pf-chip[disabled] {\n  cursor: not-allowed;\n  opacity: 0.5;\n}\n.pf-chip.pf-compact {\n  padding: 0px 4px;\n}\n.pf-chip.pf-compact > .pf-left-icon {\n  margin-right: 2px;\n}\n.pf-chip.pf-compact > .pf-button {\n  margin-left: 2px;\n}\n.pf-chip.pf-icon-only {\n  padding: 4px;\n}\n.pf-chip.pf-icon-only > .pf-left-icon {\n  margin: 0;\n}\n.pf-chip.pf-icon-only.pf-compact {\n  padding: 0;\n}\n\n.pf-code-snippet {\n  background-color: var(--pf-color-background-secondary);\n  border: 1px solid var(--pf-color-border);\n  border-radius: 4px;\n  overflow: hidden;\n}\n.pf-code-snippet .pf-code-snippet-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 4px;\n  padding-left: 12px;\n  border-bottom: 1px solid var(--pf-color-border);\n}\n.pf-code-snippet .pf-code-snippet-language {\n  font-size: 0.8em;\n  color: var(--pf-color-text-secondary);\n}\n.pf-code-snippet pre {\n  margin: 0;\n  padding: 12px;\n  overflow-x: auto;\n  font-size: 0.8em;\n}\n\n.pf-details-shell {\n  display: flex;\n  flex-direction: column;\n  font-family: var(--pf-font-compact);\n}\n.pf-details-shell .pf-header-bar {\n  z-index: 1;\n  display: flex;\n  flex-direction: row;\n  align-items: baseline;\n  gap: 6px;\n  padding: 8px 8px 5px 8px;\n  border-bottom: 1px solid var(--pf-color-border);\n}\n.pf-details-shell .pf-header-bar .pf-header-title {\n  font-size: 18px;\n  min-width: min-content;\n  white-space: nowrap;\n}\n.pf-details-shell .pf-header-bar .pf-header-description {\n  font-size: 14px;\n  flex-grow: 1;\n  flex-shrink: 1;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.pf-details-shell .pf-header-bar .pf-header-buttons {\n  white-space: nowrap;\n  display: flex;\n  min-width: min-content;\n  gap: 4px;\n  align-items: baseline;\n}\n.pf-details-shell .pf-content {\n  flex-grow: 1;\n  overflow-x: auto;\n}\n.pf-details-shell.pf-fill-parent {\n  height: 100%;\n  overflow-y: hidden;\n}\n.pf-details-shell.pf-fill-parent .pf-content {\n  overflow-y: auto;\n}\n\n.pf-editor .cm-editor {\n  height: 100%;\n}\n.pf-editor .cm-editor .cm-scroller {\n  font-family: var(--pf-font-monospace);\n  font-size: 13px;\n}\n\n.pf-empty-state {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 10px;\n  user-select: none;\n  margin: auto;\n  justify-content: center;\n  max-width: 100%;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.pf-empty-state__main-icon {\n  font-size: 5em;\n  margin-bottom: 12px;\n}\n.pf-empty-state--fill-height {\n  height: 100%;\n}\n.pf-empty-state__title {\n  text-align: center;\n  font-weight: bolder;\n  margin-bottom: 8px;\n}\n.pf-empty-state__content {\n  text-align: center;\n}\n\n.pf-error {\n  padding: 20px 10px;\n  color: var(--pf-color-danger);\n  font-weight: 300;\n}\n\n.pf-flamegraph {\n  height: 100%;\n  overflow-y: hidden;\n}\n.pf-flamegraph .loading-container {\n  font-size: larger;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 100%;\n}\n.pf-flamegraph .filter-bar {\n  margin: 6px 8px;\n  display: flex;\n  column-gap: 8px;\n  align-items: start;\n}\n.pf-flamegraph .filter-bar .pf-tag-input {\n  flex-grow: 1;\n}\n.pf-flamegraph .filter-bar .pf-select {\n  flex-shrink: 0;\n}\n.pf-flamegraph .popup-anchor {\n  width: 0px;\n  height: 0px;\n  position: absolute;\n}\n.pf-flamegraph canvas {\n  user-select: none;\n}\n.pf-flamegraph .canvas-container {\n  height: 100%;\n  position: relative;\n  overflow-y: auto;\n}\n.pf-flamegraph .pf-virtual-canvas {\n  height: 100%;\n}\n\n.pf-flamegraph-filter-bar-popup-content {\n  white-space: pre-line;\n  width: 100%;\n  word-wrap: break-word;\n}\n\n.pf-flamegraph-tooltip-popup {\n  width: max-content;\n  font-size: 15px;\n  display: flex;\n  flex-direction: column;\n  padding: 4px;\n}\n.pf-flamegraph-tooltip-popup .tooltip-text-line {\n  display: flex;\n  cursor: text;\n  padding-top: 4px;\n  gap: 4px;\n}\n.pf-flamegraph-tooltip-popup .tooltip-text {\n  cursor: text;\n}\n.pf-flamegraph-tooltip-popup .tooltip-bold-text {\n  font-weight: 600;\n  cursor: text;\n}\n.pf-flamegraph-tooltip-popup .pf-button-bar {\n  padding-top: 16px;\n}\n\n.pf-form {\n  display: grid;\n  grid-template-columns: auto auto;\n  gap: 8px;\n}\n.pf-form .pf-form-button-bar {\n  grid-column: span 2;\n  margin-top: 6px;\n  display: flex;\n  justify-content: right;\n  flex-direction: row-reverse;\n  align-items: center;\n  gap: 2px;\n}\n.pf-form .pf-form-label {\n  font-weight: bolder;\n}\n\n.pf-menu .pf-form {\n  margin: 0 4px;\n}\n\n.pf-grid-layout {\n  display: grid;\n  gap: 8px;\n  grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n  margin: 8px;\n  align-items: start;\n}\n.pf-grid-layout > .pf-grid-layout-column {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n.pf-grid-layout .pf-grid-layout-column > * {\n  word-break: break-word;\n}\n.pf-grid-layout td {\n  word-break: break-all;\n}\n\n.pf-grid {\n  display: flex;\n  flex-direction: column;\n  white-space: nowrap;\n  font-family: var(--pf-font-compact);\n  font-size: 14px;\n}\n.pf-grid--fill-height {\n  height: 100%;\n}\n.pf-grid__table {\n  overflow: auto;\n  flex: 1;\n}\n.pf-grid table {\n  min-width: 100%;\n  border-spacing: 0;\n  border-collapse: separate;\n  font-weight: 300;\n}\n.pf-grid tr:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-grid thead {\n  position: sticky;\n  top: 0;\n  background-color: var(--pf-color-background);\n}\n.pf-grid thead tr:hover {\n  background-color: unset;\n}\n.pf-grid td,\n.pf-grid th {\n  border-bottom: 1px solid var(--pf-color-border-secondary);\n  border-right: 1px solid var(--pf-color-border-secondary);\n}\n.pf-grid td:first-child,\n.pf-grid th:first-child {\n  border-left: none;\n}\n.pf-grid td:last-child,\n.pf-grid th:last-child {\n  border-right: none;\n}\n.pf-grid td .pf-visible-on-hover,\n.pf-grid th .pf-visible-on-hover {\n  visibility: hidden;\n}\n.pf-grid td .pf-visible-on-hover.pf-active,\n.pf-grid th .pf-visible-on-hover.pf-active {\n  visibility: visible;\n}\n.pf-grid td:hover .pf-visible-on-hover,\n.pf-grid th:hover .pf-visible-on-hover {\n  visibility: visible;\n}\n.pf-grid th[draggable=true] {\n  cursor: grab;\n}\n.pf-grid th[draggable=true]:active {\n  cursor: grabbing;\n}\n.pf-grid th {\n  vertical-align: top;\n  text-align: left;\n  font-weight: 400;\n  border-bottom: 1px solid var(--pf-color-border);\n  border-right: 1px solid var(--pf-color-border-secondary);\n}\n.pf-grid th.pf-grid-cell--thick-right-border,\n.pf-grid td.pf-grid-cell--thick-right-border {\n  border-right: 2px solid var(--pf-color-border);\n}\n.pf-grid th.pf-drag-over {\n  position: relative;\n}\n.pf-grid th.pf-drag-over::after {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 3px;\n  background-color: var(--pf-color-accent);\n}\n.pf-grid th.pf-drag-over--before::after {\n  left: -2px;\n}\n.pf-grid th.pf-drag-over--after::after {\n  right: -2px;\n}\n.pf-grid tr:last-child td {\n  border-bottom: none;\n}\n\n.pf-grid-cell-header {\n  display: flex;\n  flex-direction: column;\n  font-weight: 500;\n}\n\n.pf-grid-cell__aggregation {\n  display: flex;\n  gap: 0.3em;\n  padding: 0.2em 0.4em;\n  justify-content: space-between;\n}\n\n.pf-grid-cell {\n  display: flex;\n}\n.pf-grid-cell__content-container {\n  display: flex;\n  flex-direction: row;\n  align-items: baseline;\n  flex: 1;\n  min-width: 0;\n}\n.pf-grid-cell__content {\n  padding: 0.2em 0.4em;\n}\n.pf-grid-cell__actions {\n  display: flex;\n  align-items: center;\n}\n.pf-grid-cell__aggregation {\n  grid-area: aggregation;\n}\n.pf-grid-cell__hint {\n  color: var(--pf-color-text-muted);\n}\n.pf-grid-cell .pf-grid-cell--align-center {\n  justify-content: center;\n}\n.pf-grid-cell .pf-grid-cell--align-right {\n  justify-content: flex-end;\n}\n\n.pf-grid-cell--missing {\n  font-style: italic;\n  color: var(--pf-color-text-muted);\n}\n\n.pf-grid-cell__reorder-handle {\n  color: var(--text-color-light);\n}\n\n.pf-drag-over > * {\n  pointer-events: none;\n}\n\n.pf-keycap {\n  user-select: none;\n  line-height: 1;\n  background-color: var(--pf-color-background-secondary);\n  border: 1px solid var(--pf-color-border);\n  border-bottom-width: 2px;\n  border-radius: 3px;\n  color: var(--pf-color-text-muted);\n  display: inline-block;\n  vertical-align: baseline;\n  padding: 2px 4px;\n}\n.pf-keycap.pf-spacing-large {\n  padding: 4px 6px;\n}\n\n.pf-hotkey {\n  display: inline-flex;\n  flex-direction: row;\n  gap: 2px;\n}\n\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 100;\n  src: url(assets/Roboto-100.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/Roboto-300.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/Roboto-400.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 500;\n  src: url(assets/Roboto-500.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 300;\n  src: url(assets/RobotoCondensed-Light.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Condensed\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoCondensed-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n  font-family: \"Roboto Mono\";\n  font-style: normal;\n  font-weight: 400;\n  src: url(assets/RobotoMono-Regular.woff2) format(\"woff2\");\n  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face {\n  font-family: \"Material Symbols Sharp\";\n  font-style: normal;\n  font-weight: 100 700;\n  src: url(assets/MaterialSymbolsOutlined.woff2) format(\"woff2\");\n}\n@layer pf-widgets {\n  .pf-icon {\n    font-family: \"Material Symbols Sharp\";\n    font-weight: normal;\n    font-style: normal;\n    font-size: 24px;\n    line-height: 1;\n    letter-spacing: normal;\n    text-transform: none;\n    vertical-align: middle;\n    display: inline-block;\n    white-space: nowrap;\n    word-wrap: normal;\n    direction: ltr;\n    -webkit-font-feature-settings: \"liga\";\n    -webkit-font-smoothing: antialiased;\n    font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n    line-height: inherit;\n    font-size: inherit;\n    vertical-align: bottom;\n    user-select: none;\n  }\n  .pf-icon.pf-filled {\n    font-variation-settings: \"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  }\n  .pf-icon.pf-intent-primary {\n    color: var(--pf-color-primary);\n  }\n  .pf-icon.pf-intent-danger {\n    color: var(--pf-color-danger);\n  }\n  .pf-icon.pf-intent-success {\n    color: var(--pf-color-success);\n  }\n  .pf-icon.pf-intent-warning {\n    color: var(--pf-color-warning);\n  }\n}\n.pf-linear-progress {\n  height: 1px;\n  margin-top: -1px;\n  z-index: 10;\n  position: relative;\n  overflow: hidden;\n}\n\n.pf-linear-progress--anim:before {\n  content: \"\";\n  position: absolute;\n  background-color: var(--pf-color-accent);\n  top: 0;\n  left: 0;\n  bottom: 0;\n  will-change: left, right;\n  animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n}\n.pf-linear-progress--anim:after {\n  content: \"\";\n  position: absolute;\n  background-color: var(--pf-color-accent);\n  top: 0;\n  left: 0;\n  bottom: 0;\n  will-change: left, right;\n  animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;\n  animation-delay: 1.15s;\n}\n\n@keyframes indeterminate {\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n}\n@keyframes indeterminate-short {\n  0% {\n    left: -35%;\n    right: 100%;\n  }\n  60% {\n    left: 100%;\n    right: -90%;\n  }\n  100% {\n    left: 100%;\n    right: -90%;\n  }\n}\n.pf-popup-menu.pf-popup .pf-popup-content {\n  padding: 0;\n}\n\n.pf-menu {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  margin: 4px 0;\n}\n.pf-menu .pf-menu-item {\n  font-family: var(--pf-font-compact);\n  user-select: none;\n  text-align: left;\n  padding: 6px 10px;\n  white-space: nowrap;\n  min-width: max-content;\n  line-height: 1;\n  cursor: pointer;\n  display: grid;\n  grid-template-columns: auto 1fr auto;\n  grid-template-areas: \"left-icon label right-icon\";\n}\n.pf-menu .pf-menu-item .pf-menu-item__label {\n  grid-area: label;\n}\n.pf-menu .pf-menu-item__left-icon {\n  grid-area: left-icon;\n  margin-right: 6px;\n}\n.pf-menu .pf-menu-item__right-icon {\n  grid-area: right-icon;\n  margin-left: 6px;\n}\n.pf-menu .pf-menu-item:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-menu .pf-menu-item:active, .pf-menu .pf-menu-item.pf-active {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 16%);\n}\n.pf-menu .pf-menu-item[disabled] {\n  color: var(--pf-color-text-muted);\n  background: unset;\n  cursor: not-allowed;\n}\n.pf-menu .pf-menu-item:focus-visible {\n  outline: 2px auto var(--pf-color-accent);\n}\n.pf-menu .pf-menu-divider {\n  border-bottom: solid 1px var(--pf-color-border);\n  margin: 5px 0 5px 0;\n}\n.pf-menu .pf-menu-title {\n  font-family: var(--pf-font-compact);\n  font-weight: 800;\n  font-size: 0.8em;\n  text-transform: uppercase;\n  padding: 3px 8px 3px 8px;\n  user-select: none;\n}\n\n.pf-middle-ellipsis {\n  display: flex;\n  flex-direction: row;\n  overflow: hidden;\n}\n.pf-middle-ellipsis .pf-middle-ellipsis-left {\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.pf-middle-ellipsis .pf-middle-ellipsis-right {\n  overflow: hidden;\n  white-space: nowrap;\n  flex-shrink: 0;\n}\n.pf-middle-ellipsis .pf-middle-ellipsis-extras {\n  overflow: hidden;\n  white-space: nowrap;\n  flex-shrink: 0;\n}\n\n@keyframes modalFadeOut {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n@keyframes modalFadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n.pf-modal-backdrop {\n  position: absolute;\n  z-index: 99;\n  background-color: rgba(0, 0, 0, 0.6);\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  backdrop-filter: blur(2px);\n  animation: modalFadeIn 0.25s var(--anim-easing);\n  animation-fill-mode: both;\n}\n.pf-modal-backdrop.modal-fadeout {\n  animation: modalFadeOut 0.25s var(--anim-easing);\n  animation-fill-mode: both;\n}\n\n.pf-modal-dialog {\n  position: absolute;\n  z-index: 100;\n  background-color: var(--pf-color-background);\n  margin: auto;\n  min-width: 25vw;\n  min-height: 10vh;\n  padding: 30px;\n  max-width: 90vw;\n  max-height: 90vh;\n  border-radius: 2px;\n  overflow-y: auto;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n.pf-modal-dialog.pf-modal-dialog-valign-top {\n  top: 1rem;\n  transform: translate(-50%, 0);\n}\n.pf-modal-dialog > header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n.pf-modal-dialog > header .modal-title {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n.pf-modal-dialog > header h2 {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-weight: 600;\n  font-size: 1.25rem;\n  line-height: 1.25;\n  box-sizing: border-box;\n}\n.pf-modal-dialog > header button {\n  background: transparent;\n  border: 0;\n}\n.pf-modal-dialog main {\n  font-size: 1rem;\n  margin-top: 2rem;\n  line-height: 1.5;\n}\n.pf-modal-dialog main .small-font {\n  font-size: 0.9rem;\n}\n.pf-modal-dialog footer {\n  display: flex;\n  justify-content: end;\n  margin-top: 2rem;\n  gap: 4px;\n}\n\n.pf-modal-pre {\n  white-space: pre-line;\n  font-size: 13px;\n}\n\n.pf-modal-logs,\n.pf-modal-bash {\n  white-space: pre-wrap;\n  border: 1px solid var(--pf-color-border);\n  padding: 10px;\n  border-radius: 3px;\n  font-size: 10px;\n  background: var(--pf-color-background-secondary);\n  font-family: var(--pf-font-monospace);\n  margin-top: 10px;\n  margin-bottom: 10px;\n  min-height: 50px;\n  max-height: 40vh;\n  overflow: auto;\n}\n\n.pf-modal-bash {\n  margin: 0;\n  padding: 5px 0;\n  overflow: auto;\n  min-height: 0;\n}\n\n.pf-modal-textarea {\n  display: block;\n  padding: 10px;\n  border-radius: 3px;\n  margin-top: 10px;\n  margin-bottom: 10px;\n  width: 100%;\n  background: inherit;\n  color: inherit;\n}\n\n.pf-modal-small {\n  font-size: 0.75rem;\n}\n\n.pf-multiselect-input {\n  display: flex;\n  align-items: baseline;\n  flex-wrap: wrap;\n  font-size: inherit;\n  outline: none;\n  border: none;\n  border-bottom: solid 1px var(--pf-color-border);\n  background: none;\n  transition: border 150ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  border-radius: 2px 2px 0 0;\n}\n.pf-multiselect-input input {\n  outline: none;\n  border: none;\n  background: none;\n  font-family: inherit;\n  font-size: inherit;\n  color: inherit;\n  flex-grow: 1;\n}\n.pf-multiselect-input i {\n  cursor: pointer;\n  font-size: smaller;\n  margin-left: 2px;\n}\n.pf-multiselect-input__popup {\n  max-height: 300px;\n  overflow-y: auto;\n}\n.pf-multiselect-input__scroller {\n  display: flex;\n  flex-direction: column;\n  gap: 2px;\n}\n.pf-multiselect-input__option-row {\n  overflow: hidden;\n  cursor: pointer;\n  border-radius: 2px;\n}\n.pf-multiselect-input__option-row--selected {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 16%);\n}\n.pf-multiselect-input:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-multiselect-input:focus-within {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  border-bottom: solid 1px var(--pf-color-primary);\n  box-shadow: 0 1px 0 var(--pf-color-primary);\n}\n\n.pf-list {\n  overflow-y: auto;\n}\n\n.pf-multi-select-fixed-size {\n  max-height: 300px;\n}\n\n.pf-multiselect-panel {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  width: 280px;\n}\n.pf-multiselect-panel > .pf-search-bar {\n  margin-bottom: 8px;\n  display: flex;\n}\n.pf-multiselect-panel > .pf-search-bar > .pf-search-box {\n  flex-grow: 1;\n}\n.pf-multiselect-panel .pf-multiselect-item {\n  display: flex;\n  margin-top: 5px;\n}\n.pf-multiselect-panel .pf-multiselect-header {\n  align-items: baseline;\n  display: flex;\n  position: sticky;\n  top: 0;\n  font-size: 1em;\n  background-color: var(--pf-color-background);\n  z-index: 1;\n  font-size: 0.75em;\n  border-bottom: solid 1px var(--pf-color-border);\n  padding-bottom: 2px;\n  min-width: max-content;\n}\n.pf-multiselect-panel .pf-multiselect-header > span {\n  margin-right: auto;\n}\n.pf-multiselect-panel .pf-multiselect-container {\n  position: relative;\n  margin-bottom: 16px;\n}\n\n.pf-overlay-container--fill-parent {\n  height: 100%;\n}\n\n.pf-popup-portal {\n  position: absolute;\n  z-index: 10;\n  width: 100%;\n  top: 0;\n}\n\n.pf-popup {\n  background: var(--pf-color-background);\n  border: solid 1px var(--pf-color-border);\n  border-radius: 2px;\n  box-shadow: 2px 2px 16px var(--pf-color-box-shadow);\n  max-width: 350px;\n}\n.pf-popup .pf-popup-content {\n  position: relative;\n  padding: 4px;\n  overflow: hidden;\n}\n.pf-popup--fit-content {\n  max-width: unset;\n}\n.pf-popup--match-width {\n  max-width: unset;\n}\n\n.pf-popup-arrow,\n.pf-popup-arrow::before {\n  position: absolute;\n  width: 8px;\n  height: 8px;\n  background: inherit;\n  border: inherit;\n}\n\n.pf-popup-arrow {\n  visibility: hidden;\n}\n\n.pf-popup-arrow::before {\n  visibility: visible;\n  content: \"\";\n  transform: rotate(45deg);\n}\n\n.pf-popup[data-popper-placement^=top] > .pf-popup-arrow {\n  bottom: -4px;\n  border-top: none;\n  border-left: none;\n}\n\n.pf-popup[data-popper-placement^=bottom] > .pf-popup-arrow {\n  top: -6px;\n  border-bottom: none;\n  border-right: none;\n}\n\n.pf-popup[data-popper-placement^=left] > .pf-popup-arrow {\n  right: -4px;\n  border-bottom: none;\n  border-left: none;\n}\n\n.pf-popup[data-popper-placement^=right] > .pf-popup-arrow {\n  left: -6px;\n  border-top: none;\n  border-right: none;\n}\n\n.pf-resize-handle {\n  cursor: row-resize;\n  margin-block: -3px;\n  height: 7px;\n  z-index: 10;\n  position: relative;\n}\n.pf-resize-handle:hover {\n  background: var(--pf-color-accent);\n}\n.pf-resize-handle:hover::after {\n  display: none;\n}\n.pf-resize-handle::after {\n  content: \"\";\n  height: 1px;\n  display: block;\n  position: relative;\n  top: 3px;\n  background: var(--pf-color-border);\n}\n\n.pf-section {\n  border-radius: 2px;\n  border: 1px solid var(--pf-color-border-secondary);\n}\n.pf-section header {\n  padding: 6px;\n  border-bottom: 1px solid var(--pf-color-border-secondary);\n}\n.pf-section article {\n  padding: 6px;\n  font-size: 14px;\n}\n\n.pf-segmented-buttons {\n  display: inline-flex;\n  flex-direction: row;\n}\n.pf-segmented-buttons .pf-button {\n  border-radius: 0;\n}\n.pf-segmented-buttons .pf-button:first-child {\n  border-radius: 2px 0 0 2px;\n}\n.pf-segmented-buttons .pf-button:last-child {\n  border-radius: 0 2px 2px 0;\n}\n\n.pf-select {\n  font-family: var(--pf-font-compact);\n  font-size: inherit;\n  outline: none;\n  border: none;\n  border-bottom: solid 1px var(--pf-color-border);\n  background: none;\n  color: inherit;\n  transition: border 150ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  border-radius: 2px 2px 0 0;\n  cursor: pointer;\n  min-width: 80px;\n}\n.pf-select:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-select:focus {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  border-bottom: solid 1px var(--pf-color-primary);\n  box-shadow: 0 1px 0 var(--pf-color-primary);\n}\n.pf-select[disabled] {\n  opacity: 0.5;\n  pointer-events: none;\n  cursor: not-allowed;\n}\n\n.pf-settings-shell {\n  overflow: auto;\n  height: 100%;\n}\n.pf-settings-shell__header {\n  position: sticky;\n  top: 0;\n  padding-bottom: 10px;\n  padding-top: 12px;\n  z-index: 1;\n  background-color: var(--pf-color-background);\n}\n.pf-settings-shell__header--stuck {\n  box-shadow: 0px 2px 5px var(--pf-color-box-shadow);\n}\n.pf-settings-shell__centred {\n  max-width: 700px;\n  min-width: 300px;\n  margin-inline: auto;\n  padding-inline: 8px;\n}\n.pf-settings-shell__content {\n  margin-block: 16px;\n}\n.pf-settings-shell__title {\n  font-size: 18px;\n  font-weight: 500;\n  padding-bottom: 12px;\n  padding-top: 24px;\n  text-transform: uppercase;\n}\n\n@keyframes pf-spinner-rotation {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n.pf-spinner {\n  display: inline-block;\n  width: 1em;\n  height: 1em;\n  border: solid 0.1em var(--pf-color-border);\n  border-top: solid 0.1em var(--pf-color-primary);\n  border-radius: 50%;\n  animation: pf-spinner-rotation 1s infinite linear;\n}\n.pf-spinner.easing {\n  animation-timing-function: ease-in-out;\n}\n\n.pf-split-panel {\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n}\n.pf-split-panel__main {\n  flex: 1;\n  overflow: auto;\n  display: flex;\n  flex-direction: column;\n}\n.pf-split-panel__handle {\n  gap: 2px;\n  background-color: var(--pf-color-background-secondary);\n  border-top: 1px solid var(--pf-color-border);\n  cursor: row-resize;\n  display: flex;\n  align-items: baseline;\n  padding-inline: 2px;\n  align-items: center;\n}\n.pf-split-panel__tabs {\n  padding-inline: 3px;\n  display: flex;\n  overflow: hidden;\n  flex: 1;\n  align-self: flex-end;\n  margin-bottom: -1px;\n}\n.pf-split-panel__tab {\n  display: flex;\n  align-items: baseline;\n  gap: 2px;\n  font-family: var(--pf-font-compact);\n  font-size: 14px;\n  padding: 5px;\n  margin-top: 2px;\n  cursor: pointer;\n  border-radius: 3px 3px 0 0;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  border-style: solid;\n  border-color: var(--pf-color-border-secondary);\n  border-width: 1px 1px 0 1px;\n}\n.pf-split-panel__tab:not(:first-child) {\n  margin-left: -1px;\n}\n.pf-split-panel__tab:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-split-panel__tab.pf-split-panel__tab--active {\n  cursor: default;\n  background-color: var(--pf-color-background);\n  box-shadow: var(--pf-color-box-shadow) 0px 0px 3px;\n  border-color: var(--pf-color-border);\n  z-index: 1;\n}\n.pf-split-panel__tab-title {\n  margin: 0px 4px;\n  overflow: hidden;\n  user-select: none;\n}\n.pf-split-panel__drawer {\n  flex-shrink: 0;\n  overflow: auto;\n  box-shadow: var(--pf-color-box-shadow) 0px 0px 3px;\n  border-top: 1px solid var(--pf-color-border);\n}\n\n.pf-sql-table__select-column-menu {\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n  overflow: auto;\n  max-height: 500px;\n}\n\n.pf-sql-table__column-filter {\n  margin: 2px 10px;\n}\n\n.pf-sql-table {\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n}\n\n.pf-sql-table__toolbar {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n  padding-block: 4px;\n  border-bottom: solid 1px var(--pf-color-border);\n}\n\n.pf-sql-table__table {\n  flex: 1;\n  overflow-y: auto;\n}\n\n.pf-stack {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n.pf-stack--horiz {\n  flex-direction: row;\n  align-items: baseline;\n}\n.pf-stack--fill-height {\n  height: 100%;\n  overflow-y: hidden;\n}\n.pf-stack.pf-spacing-none {\n  gap: 0px;\n}\n.pf-stack.pf-spacing-small {\n  gap: 2px;\n}\n.pf-stack.pf-spacing-medium {\n  gap: 4px;\n}\n.pf-stack.pf-spacing-large {\n  gap: 16px;\n}\n.pf-stack--wrap {\n  flex-wrap: wrap;\n}\n.pf-stack--inline {\n  display: inline-flex;\n}\n\n.pf-stack-fixed {\n  flex: none;\n}\n\n.pf-stack-auto {\n  flex: 1;\n  overflow: hidden;\n}\n\n.pf-switch {\n  display: inline-flex;\n  align-items: center;\n  position: relative;\n  font-size: inherit;\n  user-select: none;\n  cursor: pointer;\n  gap: 6px;\n}\n.pf-switch input {\n  position: absolute;\n  opacity: 0;\n  pointer-events: none;\n}\n.pf-switch .pf-switch-label-left {\n  order: 1;\n}\n.pf-switch .pf-switch-visual {\n  order: 2;\n  position: relative;\n  height: 16px;\n  width: 32px;\n  border-radius: 8px;\n  transition: background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  background: var(--pf-color-neutral);\n  vertical-align: middle;\n}\n.pf-switch .pf-switch-visual:after {\n  content: \"\";\n  display: block;\n  position: absolute;\n  left: 2px;\n  top: 0;\n  bottom: 0;\n  margin-top: auto;\n  margin-bottom: auto;\n  width: 12px;\n  height: 12px;\n  background: white;\n  box-sizing: border-box;\n  border-radius: 50%;\n  transition: left 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.pf-switch .pf-switch-label {\n  order: 3;\n}\n.pf-switch input:checked ~ .pf-switch-visual {\n  background: var(--pf-color-primary);\n}\n.pf-switch input:checked ~ .pf-switch-visual:after {\n  left: 18px;\n}\n.pf-switch input:focus-visible ~ .pf-switch-visual {\n  outline: 2px auto var(--pf-color-accent);\n}\n.pf-switch.pf-disabled {\n  opacity: 0.5;\n  pointer-events: none;\n  cursor: not-allowed;\n}\n\n.pf-tabs {\n  display: flex;\n  align-items: baseline;\n}\n.pf-tabs__tabs {\n  display: flex;\n  overflow: hidden;\n  flex: 1;\n}\n.pf-tabs__tab {\n  color: var(--pf-color-text-muted);\n  padding: 4px;\n  margin-top: 3px;\n  align-items: center;\n  cursor: pointer;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  display: flex;\n  align-items: baseline;\n  gap: 2px;\n}\n.pf-tabs__tab:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-tabs__tab[active] {\n  color: var(--pf-color-primary);\n  border-bottom: solid 2px var(--pf-color-primary);\n  cursor: default;\n}\n.pf-tabs__tab:nth-child(1) {\n  margin-left: 3px;\n}\n.pf-tabs__tab-title {\n  margin: 0px 4px;\n  overflow: hidden;\n}\n\n.pf-tag-input {\n  display: flex;\n  align-items: baseline;\n  flex-wrap: wrap;\n  font-size: inherit;\n  outline: none;\n  border: none;\n  border-bottom: solid 1px var(--pf-color-border);\n  background: none;\n  transition: border 150ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  border-radius: 2px 2px 0 0;\n}\n.pf-tag-input input {\n  outline: none;\n  border: none;\n  background: none;\n  font-family: inherit;\n  font-size: inherit;\n  color: inherit;\n  flex-grow: 1;\n}\n.pf-tag-input i {\n  cursor: pointer;\n  margin-left: 2px;\n}\n.pf-tag-input:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-tag-input:focus-within {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  border-bottom: solid 1px var(--pf-color-primary);\n  box-shadow: 0 1px 0 var(--pf-color-primary);\n}\n\n.pf-text-input {\n  display: inline-flex;\n  align-items: baseline;\n  line-height: 1;\n  font-family: var(--pf-font-compact);\n  font-size: inherit;\n  border-bottom: solid 1px var(--pf-color-border);\n  background: none;\n  padding: 2px 4px;\n  transition: border 150ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 150ms cubic-bezier(0.4, 0, 0.2, 1), background 150ms cubic-bezier(0.4, 0, 0.2, 1);\n  gap: 4px;\n  border-radius: 2px 2px 0 0;\n}\n.pf-text-input__input {\n  font-size: inherit;\n  line-height: inherit;\n  font-family: inherit;\n  padding: 0;\n  margin: 0;\n  color: inherit;\n  flex: 1;\n  outline: none;\n  border: none;\n  background: none;\n  min-width: 0;\n}\n.pf-text-input__left-icon {\n  align-self: center;\n  line-height: inherit;\n  margin-inline: 2px;\n}\n.pf-text-input:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-text-input:has(.pf-text-input__input:focus) {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  border-bottom: solid 1px var(--pf-color-primary);\n  box-shadow: 0 1px 0 var(--pf-color-primary);\n}\n.pf-text-input:has(.pf-text-input__input[disabled]) {\n  opacity: 0.5;\n  pointer-events: none;\n  cursor: not-allowed;\n}\n\n.pf-text-paragraph {\n  white-space: pre-wrap;\n  padding-top: 5px;\n  padding-bottom: 5px;\n  word-break: break-word;\n}\n\n.pf-timecode .pf-timecode-millis {\n  margin-left: 1px;\n}\n.pf-timecode .pf-timecode-micros {\n  margin-left: 2px;\n}\n.pf-timecode .pf-timecode-nanos {\n  margin-left: 2px;\n}\n.pf-timecode .pf-button {\n  margin-left: 2px;\n}\n\n.pf-cursor-tooltip {\n  position: absolute;\n  background: var(--pf-color-background);\n  z-index: 10;\n  padding: 2px 6px;\n  border-radius: 2px;\n  border: solid 1px var(--pf-color-border);\n  box-shadow: 2px 2px 16px var(--pf-color-box-shadow);\n  pointer-events: none;\n}\n\n.pf-track {\n  --indent-size: 8px;\n  --sticky-top: 0;\n  --depth: 0;\n  font-family: var(--pf-font-compact);\n  font-weight: 300;\n  font-size: 14px;\n  user-select: none;\n  scroll-margin-top: calc(var(--sticky-top) * 1px);\n}\n.pf-track__header {\n  height: calc(var(--height) * 1px);\n  display: grid;\n  grid-template-columns: calc(var(--depth) * var(--indent-size)) calc(var(--track-shell-width) - var(--depth) * var(--indent-size)) 1fr;\n  grid-template-areas: \"indent shell canvas\";\n}\n.pf-track__header::before {\n  content: \"\";\n  grid-area: indent;\n  background: var(--pf-color-track-summary-expanded);\n}\n.pf-track__header--summary {\n  background-color: var(--pf-color-track-summary-collapsed);\n}\n.pf-track__header--expanded--summary {\n  position: sticky;\n  top: calc(var(--sticky-top) * 1px);\n  z-index: calc(16 - var(--depth));\n  background-color: var(--pf-color-track-summary-expanded);\n  color: var(--pf-color-track-summary-expanded-text);\n  border-color: var(--pf-color-track-summary-expanded);\n}\n.pf-track__header--expanded--summary .pf-track__shell {\n  border-color: var(--pf-color-track-summary-expanded);\n}\n.pf-track__header--expanded--summary .pf-track__shell--highlight {\n  border-color: var(--pf-color-highlight);\n}\n.pf-track__header--expanded--summary .pf-track__canvas {\n  border-color: var(--pf-color-track-summary-expanded);\n}\n.pf-track__shell {\n  grid-area: shell;\n  border-width: 0 1px 1px 0;\n  border-style: solid;\n  border-color: var(--pf-color-border-secondary);\n}\n.pf-track__shell--highlight {\n  background-color: var(--pf-color-highlight);\n  color: var(--pf-color-text);\n}\n.pf-track__shell--drag-after {\n  box-shadow: inset 0 -6px 3px -3px var(--pf-color-primary);\n}\n.pf-track__shell--drag-inside {\n  box-shadow: inset -6px 0 3px -3px var(--pf-color-primary);\n}\n.pf-track__shell--drag-before {\n  box-shadow: inset 0 6px 3px -3px var(--pf-color-primary);\n}\n.pf-track__shell--clickable {\n  cursor: pointer;\n}\n.pf-track__shell .pf-visible-on-hover {\n  visibility: hidden;\n}\n.pf-track__shell .pf-visible-on-hover.pf-active {\n  visibility: unset;\n}\n.pf-track__shell:hover .pf-visible-on-hover {\n  visibility: unset;\n}\n.pf-track__buttons {\n  font-size: 16px;\n  margin-left: 2px;\n}\n.pf-track__canvas {\n  grid-area: canvas;\n  overflow: hidden;\n  border-bottom: solid 1px var(--pf-color-border-secondary);\n}\n.pf-track__canvas--error {\n  background: repeating-linear-gradient(-45deg, #ddd, #ddd 1.4142135624px, white 1.4142135624px, white 5.6568542495px);\n}\n.pf-track__menubar {\n  display: grid;\n  grid-template-columns: auto 1fr auto auto;\n  grid-template-rows: auto auto;\n  grid-template-areas: \"icon title chips buttons\" \"none subtitle subtitle subtitle\";\n  padding-inline: 1px;\n  padding-top: 1px;\n  position: sticky;\n  top: calc(var(--sticky-top) * 1px);\n}\n.pf-track__title-spacer {\n  grid-area: icon;\n  width: 2px;\n}\n.pf-track__collapse-button {\n  grid-area: icon;\n}\n.pf-track__title {\n  grid-area: title;\n}\n.pf-track__title-popup {\n  position: absolute;\n  border-radius: 2px;\n  background: transparent;\n  color: transparent;\n  text-overflow: unset;\n  pointer-events: none;\n  white-space: nowrap;\n  user-select: none;\n  width: max-content;\n  z-index: 10; /* Ensures it appears above other elements */\n}\n.pf-track__title:hover .pf-track__title-popup--visible {\n  box-shadow: 1px 1px 2px 2px var(--pf-color-box-shadow);\n  background: var(--pf-color-background);\n  color: var(--pf-color-text);\n}\n.pf-track__chips {\n  grid-area: chips;\n  margin-left: 2px;\n}\n.pf-track__subtitle {\n  grid-area: subtitle;\n  font-size: 11px;\n}\n.pf-track__buttons {\n  grid-area: buttons;\n}\n.pf-track__crash-popup {\n  max-width: 300px;\n  display: flex;\n  flex-direction: column;\n  row-gap: 6px;\n}\n\n.pf-tree {\n  display: grid;\n  grid-template-columns: [left] auto [right] 1fr;\n  row-gap: 5px;\n}\n.pf-tree .pf-tree-node {\n  display: contents;\n}\n.pf-tree .pf-tree-node:hover {\n  background: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-tree .pf-tree-node .pf-tree-left {\n  grid-column: left;\n  background: inherit;\n  min-width: max-content;\n  border-radius: 2px 0 0 2px;\n  font-weight: bolder;\n}\n.pf-tree .pf-tree-node .pf-tree-right {\n  grid-column: right;\n  background: inherit;\n  padding: 0 0 0 15px;\n  border-radius: 0 2px 2px 0;\n  overflow-wrap: break-word;\n  white-space: pre-wrap;\n  min-width: 0;\n}\n.pf-tree .pf-tree-node .pf-tree-gutter {\n  display: inline-flex;\n  position: relative;\n  width: 16px;\n  justify-content: center;\n  align-items: center;\n}\n.pf-tree .pf-tree-node.pf-collapsed > .pf-tree-left > .pf-tree-gutter {\n  cursor: pointer;\n}\n.pf-tree .pf-tree-node.pf-collapsed > .pf-tree-left > .pf-tree-gutter::after {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"chevron_right\";\n  font-size: inherit;\n}\n.pf-tree .pf-tree-node.pf-expanded > .pf-tree-left > .pf-tree-gutter {\n  cursor: pointer;\n}\n.pf-tree .pf-tree-node.pf-expanded > .pf-tree-left > .pf-tree-gutter::after {\n  font-family: \"Material Symbols Sharp\";\n  font-weight: normal;\n  font-style: normal;\n  font-size: 24px;\n  line-height: 1;\n  letter-spacing: normal;\n  text-transform: none;\n  vertical-align: middle;\n  display: inline-block;\n  white-space: nowrap;\n  word-wrap: normal;\n  direction: ltr;\n  -webkit-font-feature-settings: \"liga\";\n  -webkit-font-smoothing: antialiased;\n  font-variation-settings: \"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24;\n  content: \"expand_more\";\n  font-size: inherit;\n}\n.pf-tree .pf-tree-node.pf-loading > .pf-tree-left > .pf-tree-gutter::after {\n  content: \"\";\n  border: solid 1px var(--pf-color-border);\n  border-top: solid 1px var(--pf-color-primary);\n  animation: pf-spinner-rotation 1s infinite linear;\n  width: 8px;\n  height: 8px;\n  border-radius: 50%;\n}\n.pf-tree .pf-tree-node .pf-tree-indent-gutter {\n  display: block;\n  position: relative;\n}\n.pf-tree .pf-tree-node.pf-collapsed + .pf-tree-children {\n  display: none;\n}\n.pf-tree .pf-tree-children {\n  display: grid;\n  grid-column: 1/span 2;\n  grid-template-columns: subgrid;\n  row-gap: 5px;\n  border-left: solid var(--pf-color-border) 1px;\n  margin-left: 6px;\n  padding-left: 6px;\n}\n\n.pf-treetable {\n  border-collapse: collapse;\n  text-align: left;\n}\n.pf-treetable th {\n  text-align: left;\n  padding: 2px 8px;\n  border-bottom: solid 1px grey;\n  font-weight: bolder;\n}\n.pf-treetable td {\n  padding: 2px 8px;\n  text-align: left;\n  padding-left: calc(var(--indentation-level) * 12px + 4px);\n}\n.pf-treetable td .pf-treetable-gutter {\n  display: inline;\n}\n.pf-treetable td .pf-treetable-gutter::before {\n  content: \" \";\n  display: inline-block;\n  position: relative;\n  width: 12px;\n}\n.pf-treetable td.pf-treetable-maincol {\n  font-weight: bolder;\n}\n.pf-treetable td.pf-treetable-node .pf-treetable-gutter::before {\n  content: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='8' width='8'%3E%3Cline x1='2' y1='0' x2='6' y2='4' stroke='black'/%3E%3Cline x1='6' y1='4' x2='2' y2='8' stroke='black'/%3E%3C/svg%3E\");\n  display: inline-block;\n  cursor: pointer;\n  width: 12px;\n  rotate: 90deg;\n}\n.pf-treetable td.pf-treetable-node.pf-collapsed .pf-treetable-gutter::before {\n  rotate: 0deg;\n}\n\n.pf-ui-main {\n  display: grid;\n  grid-template-areas: \"sidebar topbar\" \"sidebar loading\" \"sidebar alerts\" \"sidebar page\" \"statusbar statusbar\";\n  grid-template-rows: auto auto auto 1fr auto;\n  grid-template-columns: auto 1fr;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  background: var(--pf-color-background);\n  color: var(--pf-color-text);\n}\n.pf-ui-main__loading {\n  grid-area: loading;\n}\n.pf-ui-main__page-container {\n  grid-area: page;\n  overflow: auto;\n}\n\n.pf-vega-view {\n  border-radius: 2px;\n  border: solid 1px var(--pf-color-border);\n  position: relative;\n}\n\n.pf-vega-view-status {\n  backdrop-filter: grayscale(1) blur(6px);\n  height: 100%;\n  width: 100%;\n  padding: 1rem;\n  position: absolute;\n  top: 0;\n}\n\n.pf-virtual-overlay-canvas__content {\n  position: relative;\n}\n.pf-virtual-overlay-canvas__canvas-container {\n  position: absolute;\n  inset: 0;\n  pointer-events: none;\n}\n\n.pf-virtual-scroll-container {\n  overflow: auto;\n  height: 100%;\n}\n\n@layer pf-widgets {\n  .pf-vtable {\n    overflow: auto;\n    position: relative;\n    background: var(--pf-color-background);\n  }\n  .pf-vtable .pf-vtable-content {\n    display: inline-flex;\n    flex-direction: column;\n    min-width: 100%;\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-header {\n    font-weight: bold;\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    background: var(--pf-color-background);\n    white-space: nowrap;\n    padding-inline: 4px;\n    box-shadow: var(--pf-color-box-shadow) 0px 0px 8px;\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-data {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    margin-right: 8px;\n    display: inline-block;\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-slider {\n    overflow: hidden;\n    overflow: hidden;\n    background: repeating-linear-gradient(-45deg, var(--pf-color-background-secondary), var(--pf-color-background-secondary) 1.4142135624px, var(--pf-color-background) 1.4142135624px, var(--pf-color-background) 2.8284271247px);\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-slider .pf-vtable-puck .pf-vtable-row {\n    display: flex;\n    align-items: center;\n    white-space: nowrap;\n    padding-inline: 4px;\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-slider .pf-vtable-puck .pf-vtable-row:nth-child(odd) {\n    background: var(--pf-color-background-secondary);\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-slider .pf-vtable-puck .pf-vtable-row:nth-child(even) {\n    background: var(--pf-color-background);\n  }\n  .pf-vtable .pf-vtable-content .pf-vtable-slider .pf-vtable-puck .pf-vtable-row:hover {\n    background: color-mix(in srgb, var(--pf-color-interactive-base) 20%, var(--pf-color-background));\n  }\n}\n.pf-logs-panel {\n  height: 100%;\n  font-size: 11px;\n  font-family: var(--pf-font-monospace);\n}\n.pf-logs-panel__row--debug {\n  color: color-mix(in srgb, hsl(155, 79%, 51%), var(--pf-color-text) 30%);\n}\n.pf-logs-panel__row--verbose {\n  color: color-mix(in srgb, hsl(88, 81%, 48%), var(--pf-color-text) 30%);\n}\n.pf-logs-panel__row--info {\n  color: var(--pf-color-text);\n}\n.pf-logs-panel__row--warn {\n  color: color-mix(in srgb, hsl(45, 73%, 50%), var(--pf-color-text) 20%);\n}\n.pf-logs-panel__row--error {\n  color: color-mix(in srgb, hsl(4, 100%, 50%), var(--pf-color-text) 20%);\n}\n.pf-logs-panel__row--fatal {\n  color: color-mix(in srgb, hsl(291, 100%, 50%), var(--pf-color-text) 20%);\n}\n.pf-logs-panel__row--highlighted {\n  background: var(--pf-color-highlight);\n}\n\n.pf-ai-chat-panel {\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  height: 100%;\n}\n.pf-ai-chat-panel__conversation {\n  flex-grow: 1;\n  overflow-y: scroll;\n  padding: 1rem;\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message {\n  margin-bottom: 1rem;\n  max-width: 80%;\n  padding: 0.5rem 1rem;\n  border-radius: 12px;\n  line-height: 1.5;\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message--role-label {\n  font-weight: bold;\n  margin-right: 8px;\n  display: block;\n  margin-bottom: 4px;\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message--ai {\n  background-color: var(--pf-color-background-secondary);\n  align-self: flex-start;\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message--user {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n  align-self: flex-end;\n  margin-left: auto;\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message--error {\n  background-color: color-mix(in srgb, var(--pf-color-danger), 50% transparent);\n  color: var(--pf-color-danger);\n  border: 1px solid var(--pf-color-danger);\n}\n.pf-ai-chat-panel__conversation .pf-ai-chat-message--thought {\n  background-color: #fff3cd;\n  color: #856404;\n  font-style: italic;\n  font-size: 0.9em;\n}\n.pf-ai-chat-panel__tokens {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n.pf-ai-chat-panel__tokens__label {\n  font-weight: bold;\n  margin-bottom: 4px;\n}\n.pf-ai-chat-panel__tokens__count {\n  font-size: 0.9em;\n  color: var(--pf-color-text-muted);\n}\n.pf-ai-chat-panel__input-area {\n  flex-shrink: 0;\n  display: flex;\n  align-items: center;\n  padding: 1rem 1rem;\n  border-top: 1px solid var(--pf-color-border);\n  background-color: var(--pf-color-background-secondary);\n  box-sizing: border-box;\n  gap: 4px;\n}\n.pf-ai-chat-panel__input-area .pf-text-input {\n  flex: 1;\n}\n\n.pf-ndv-floating-button {\n  position: absolute;\n  bottom: 1rem;\n  left: 50%;\n  transform: translateX(-50%);\n}\n\n.pf-ndv-floating-card {\n  position: absolute;\n  bottom: 4rem;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 50vw;\n  max-height: 50vh;\n  overflow-y: auto;\n  padding: 1rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.5rem;\n  background-color: var(--pf-color-background);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.pf-node-graph {\n  position: relative;\n  height: 100%;\n  overflow: auto;\n  padding: 0.625rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 8px;\n  background-color: var(--pf-color-background);\n}\n\n.pf-node-graph-add-button-container {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  text-align: center;\n  padding: 40px;\n}\n\n.pf-node-graph-add-buttons {\n  display: flex;\n  gap: 1rem;\n  justify-content: center;\n}\n\n.pf-node-graph__controls {\n  display: flex;\n  position: absolute;\n  top: 0.625rem;\n  right: 0.625rem;\n  gap: 0.5rem;\n  z-index: 10;\n}\n\n.pf-hero {\n  padding: 2rem;\n  margin-bottom: 2rem;\n  text-align: center;\n  border-radius: 0.5rem;\n}\n.pf-hero .hero-title {\n  font-size: 1.8em;\n  font-weight: 500;\n  margin-bottom: 0.5rem;\n}\n.pf-hero .hero-subtitle {\n  font-size: 1.1em;\n  color: var(--pf-color-text-muted);\n}\n\n.pf-node-box-port {\n  position: absolute;\n  width: 10px;\n  height: 10px;\n  background-color: var(--pf-color-border);\n  border-radius: 50%;\n}\n\n.pf-node-box-port-top {\n  top: -5px;\n  left: 50%;\n  margin-left: -5px;\n}\n\n.pf-node-box-port-bottom {\n  bottom: -5px;\n}\n\n.pf-node-box-port-bottom {\n  bottom: -5px;\n}\n\n.pf-source-card {\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  padding: 1.5rem;\n  border-radius: 0.5rem;\n  width: 200px;\n  text-align: center;\n  cursor: pointer;\n}\n.pf-source-card:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-source-card .pf-icon {\n  font-size: 2em;\n}\n.pf-source-card h3 {\n  font-size: 1.1rem;\n  font-weight: 500;\n}\n.pf-source-card p {\n  font-size: 0.9rem;\n  flex-grow: 1;\n  color: var(--pf-color-text-muted);\n}\n\n.pf-explore-page-help {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n}\n\n.pf-getting-started {\n  position: sticky;\n  top: 0;\n  background: var(--perfetto-primary-background);\n  padding: 0.5rem;\n  z-index: 1;\n  margin-bottom: 1rem;\n}\n.pf-getting-started .step-cards {\n  display: flex;\n  gap: 1rem;\n  justify-content: space-between;\n}\n.pf-getting-started .card {\n  flex: 1;\n  padding: 1.5rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.5rem;\n  background-color: var(--pf-color-background);\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n  transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n  cursor: pointer;\n}\n.pf-getting-started .card:hover {\n  transform: translateY(-5px);\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n.pf-getting-started .card h4 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-size: 1.1em;\n  font-weight: 500;\n}\n.pf-getting-started .card .sql-modules .pf-search {\n  width: 100%;\n  padding: 0.75rem;\n  margin-bottom: 1rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.375rem;\n  font-size: 1em;\n  transition: border-color 0.2s ease-in-out;\n  background: var(--pf-color-background);\n}\n.pf-getting-started .card .sql-modules .pf-search:focus {\n  border-color: var(--pf-color-primary);\n  outline: none;\n}\n.pf-getting-started .card .sql-modules .module-tree ul {\n  padding-left: 1rem;\n  list-style: none;\n}\n.pf-getting-started .card .sql-modules .module-tree li {\n  margin-bottom: 0.25rem;\n}\n.pf-getting-started .card .sql-modules .module-tree strong {\n  font-weight: 500;\n}\n.pf-getting-started .card p {\n  margin-bottom: 0;\n  font-size: 0.9em;\n  color: var(--pf-color-text-muted);\n}\n\n.pf-table-list {\n  padding: 0.5rem;\n  overflow-y: auto;\n  height: 100%;\n}\n.pf-table-list .pf-table-card {\n  text-decoration: none;\n  display: block;\n}\n.pf-table-list .pf-table-card .table-name {\n  font-weight: 500;\n  color: var(--pf-color-primary);\n  margin-bottom: 0.25rem;\n}\n.pf-table-list .pf-table-card .table-description {\n  font-size: 0.875em;\n  color: var(--pf-color-text-muted);\n}\n.pf-table-list .pf-search {\n  width: 100%;\n  padding: 0.5rem;\n  margin-bottom: 1rem;\n  font-family: inherit;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.25rem;\n  font-size: 1em;\n  background: unset;\n  outline: unset;\n  color: var(--pf-color-text);\n}\n\n.pf-node-box {\n  display: flex;\n  position: absolute;\n  align-items: center;\n  gap: 0.375rem;\n  padding: 0.625rem 0.75rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 8px;\n  background-color: var(--pf-color-background);\n  box-shadow: 0 2px 4px var(--pf-color-box-shadow);\n  cursor: grab;\n  transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n}\n.pf-node-box:hover {\n  border-color: #bdbdbd;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n.pf-node-box__selected {\n  border-width: 2px;\n  border-color: var(--pf-color-primary);\n  box-shadow: 0 0 12px color-mix(in srgb, var(--pf-color-primary) 30%, transparent);\n}\n.pf-node-box__selected .pf-node-box__warning-icon {\n  border-width: 2px;\n}\n.pf-node-box__invalid, .pf-node-box__invalid-query {\n  border-color: var(--pf-color-danger);\n  background-color: color-mix(in srgb, var(--pf-color-danger), transparent 80%);\n  color: var(--pf-color-danger);\n}\n.pf-node-box__invalid-response {\n  border-color: var(--pf-color-warning);\n  background-color: color-mix(in srgb, var(--pf-color-warning), transparent 80%);\n  color: var(--pf-color-warning);\n}\n.pf-node-box__warning-icon {\n  position: absolute;\n  top: -0.5rem;\n  right: -0.5rem;\n  color: inherit;\n  background-color: var(--pf-color-background);\n  width: 1.6rem;\n  height: 1.6rem;\n  border-radius: 50%;\n  font-size: 1rem;\n  border: 1px solid;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.pf-node-box__content {\n  display: flex;\n  flex-direction: column;\n}\n\n.pf-node-box__filters {\n  margin-top: 0.5rem;\n}\n\n.pf-node-box {\n  position: absolute;\n}\n\n.pf-node-box-add-button {\n  position: absolute;\n  bottom: -0.5rem;\n  right: -0.5rem;\n  background-color: var(--pf-color-background);\n  width: 1.6rem;\n  height: 1.6rem;\n  border-radius: 50%;\n  border: 1px solid;\n  display: none;\n  align-items: center;\n  justify-content: center;\n}\n.pf-node-box:hover .pf-node-box-add-button, .pf-node-box__selected .pf-node-box-add-button {\n  display: flex;\n}\n\n.pf-node-box-port {\n  z-index: 1;\n}\n\n.pf-node-explorer {\n  border: 1px solid var(--pf-color-border);\n  border-radius: 8px;\n  background-color: var(--pf-color-background);\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n}\n.pf-node-explorer__title-row {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0.375rem;\n  border-bottom: 1px solid var(--pf-color-border);\n}\n.pf-node-explorer article {\n  padding: 0.375rem;\n  font-size: 0.875rem;\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n}\n.pf-node-explorer i.pf-node-explorer__warning-icon--error {\n  color: var(--pf-color-danger);\n}\n.pf-node-explorer i.pf-node-explorer__warning-icon--warning {\n  color: var(--pf-color-warning);\n}\n\n.pf-node-explorer-sql-source article {\n  padding: 0;\n  border: none;\n}\n\n.pf-exp-query-operations {\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  margin-bottom: 1rem;\n}\n\n.pf-exp-section {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n  padding: 1rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 8px;\n}\n\n.pf-exp-operations-container {\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n}\n\n.pf-exp-aggregations-list {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n}\n\n.pf-exp-aggregation-editor {\n  display: flex;\n  gap: 0.5rem;\n  align-items: center;\n}\n\n.pf-exp-aggregation-viewer {\n  cursor: pointer;\n  padding: 0.5rem;\n  border-radius: 4px;\n}\n.pf-exp-aggregation-viewer:hover {\n  background-color: var(--pf-color-hover);\n}\n\n.pf-exp-filters-header {\n  display: flex;\n  align-items: baseline;\n  gap: 1rem;\n}\n.pf-exp-filters-header .pf-exp-filters-title {\n  font-size: 1.2em;\n  font-weight: 500;\n  margin: 0;\n}\n.pf-exp-filters-header .pf-text-input {\n  flex: 1;\n}\n\n.pf-exp-filter-editor-box {\n  padding: 1rem;\n  margin-top: 1rem;\n  border-radius: 6px;\n  background-color: transparent;\n  border: 1px solid var(--pf-color-border);\n}\n\n.pf-exp-multi-select-container {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  gap: 1rem;\n}\n.pf-exp-multi-select-container label {\n  font-size: 1.1em;\n  font-weight: 600;\n}\n.pf-exp-multi-select-container .pf-exp-multiselect-input {\n  flex: 1;\n}\n\n.pf-exp-aggregations-list {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  width: 100%;\n}\n\n.pf-exp-aggregation-viewer {\n  padding: 0.5rem 1rem;\n  border-radius: 4px;\n  border: 1px solid var(--pf-color-border);\n  cursor: pointer;\n  background-color: transparent;\n  font-family: var(--pf-font-monospace);\n}\n.pf-exp-aggregation-viewer:hover {\n  background-color: hover_color(transparent);\n}\n\n.pf-exp-aggregation-editor {\n  padding: 1rem;\n  border-radius: 6px;\n  border: 1px solid var(--pf-color-border);\n}\n\n.pf-exp-query-operations {\n  display: flex;\n  flex-direction: column;\n  gap: 0.5rem;\n}\n.pf-exp-query-operations .pf-exp-section {\n  padding: 1rem;\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.5rem;\n  background-color: var(--pf-color-background);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n.pf-exp-query-operations .pf-exp-section h2 {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  font-size: 1.2em;\n  font-weight: 500;\n}\n.pf-exp-query-operations .pf-exp-section .pf-exp-operations-container {\n  display: flex;\n  flex-direction: column;\n  gap: 1rem;\n  align-items: stretch;\n}\n\n.pf-exp-editor, .pf-exp-filter-editor, .pf-exp-aggregation-editor {\n  display: flex;\n  gap: 1rem;\n  align-items: center;\n}\n.pf-exp-editor .pf-select, .pf-exp-filter-editor .pf-select, .pf-exp-aggregation-editor .pf-select,\n.pf-exp-editor .pf-text-input,\n.pf-exp-filter-editor .pf-text-input,\n.pf-exp-aggregation-editor .pf-text-input {\n  flex: 1;\n}\n.pf-exp-editor .pf-exp-delete-button, .pf-exp-filter-editor .pf-exp-delete-button, .pf-exp-aggregation-editor .pf-exp-delete-button {\n  color: var(--pf-color-text-muted);\n}\n.pf-exp-editor .pf-exp-delete-button:hover, .pf-exp-filter-editor .pf-exp-delete-button:hover, .pf-exp-aggregation-editor .pf-exp-delete-button:hover {\n  color: var(--pf-color-danger);\n}\n\n.pf-slice-source-label {\n  display: flex;\n  align-items: center;\n  font-family: var(--pf-font-compact);\n}\n.pf-slice-source-label span {\n  display: inline-block;\n  margin-right: 0.625rem;\n  min-width: 6.25rem;\n}\n\n.pf-slice-source-box {\n  padding: 0.625rem;\n  margin-bottom: 0.625rem;\n  border: 1px solid var(--pf-color-border);\n}\n\n.pf-slice-source-details {\n  padding-top: 5px;\n  font-size: 0.8em;\n  color: var(--pf-color-text-lighter);\n}\n\n.pf-stdlib-table-node .pf-details-box {\n  border: 1px solid var(--pf-color-border);\n  border-radius: 0.5rem;\n  padding: 1rem;\n  background-color: var(--pf-color-background);\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n  margin-bottom: 1rem;\n}\n.pf-stdlib-table-node table {\n  width: 100%;\n  border-collapse: collapse;\n  margin-top: 1rem;\n}\n.pf-stdlib-table-node th,\n.pf-stdlib-table-node td {\n  border: 1px solid var(--pf-color-border);\n  padding: 0.5rem;\n  text-align: left;\n}\n.pf-stdlib-table-node th {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n  font-weight: 500;\n}\n\n.pf-aggregation-node-details {\n  padding-top: 5px;\n  font-size: 0.8em;\n  color: var(--pf-color-text-lighter);\n}\n\n.pf-column-list {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n\n.pf-column {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n.pf-column[draggable=true] {\n  cursor: grab;\n}\n.pf-column .pf-text-input {\n  width: 100px;\n}\n\n.pf-add-column-button {\n  margin-top: 8px;\n}\n\n.pf-query-builder-layout {\n  display: grid;\n  grid-template-columns: 50% 50%;\n  height: 100%;\n}\n.pf-query-builder-layout.no-selection {\n  grid-template-rows: auto 1fr;\n}\n.pf-query-builder-layout.selection {\n  grid-template-rows: 50% 50%;\n}\n.pf-query-builder-layout .pf-qb-node-graph {\n  grid-column: 1;\n  grid-row: 1;\n  overflow: auto;\n}\n.pf-query-builder-layout .pf-qb-explorer {\n  grid-column: 2;\n  grid-row: 1;\n  overflow: auto;\n}\n.pf-query-builder-layout .pf-qb-viewer {\n  overflow: auto;\n}\n.pf-query-builder-layout.selection-left .pf-qb-viewer {\n  grid-column: 1;\n  grid-row: 2;\n}\n.pf-query-builder-layout.selection-left .pf-qb-explorer {\n  grid-row: 1/span 2;\n}\n.pf-query-builder-layout.selection-right .pf-qb-viewer {\n  grid-column: 2;\n  grid-row: 2;\n}\n.pf-query-builder-layout.selection-right .pf-qb-node-graph {\n  grid-row: 1/span 2;\n}\n.pf-query-builder-layout.selection-bottom .pf-qb-viewer {\n  grid-column: 1/span 2;\n  grid-row: 2;\n}\n.pf-query-builder-layout.full-page .pf-qb-node-graph,\n.pf-query-builder-layout.full-page .pf-qb-explorer {\n  display: none;\n}\n.pf-query-builder-layout.full-page .pf-qb-viewer {\n  grid-column: 1/span 2;\n  grid-row: 1/span 2;\n}\n\n.pf-explore-page {\n  height: 100%;\n  position: relative;\n  overflow: auto;\n  padding: 0.25rem;\n}\n.pf-explore-page__header {\n  display: flex;\n  align-items: center;\n}\n\n.pf-ftrace-explorer {\n  height: 100%;\n  font-size: 11px;\n  font-family: var(--pf-font-monospace);\n}\n.pf-ftrace-explorer .pf-ftrace-namebox {\n  display: flex;\n  align-items: center;\n}\n.pf-ftrace-explorer .pf-ftrace-namebox .pf-ftrace-colorbox {\n  display: inline-block;\n  height: 10px;\n  width: 10px;\n  margin-right: 4px;\n}\n\n.pf-metrics-page-picker {\n  display: flex;\n}\n\n.pf-metrics-page-picker > * {\n  margin-right: 1rem;\n}\n\n.pf-metrics-page {\n  padding: 30px;\n  overflow-y: scroll;\n  overflow-x: hidden;\n}\n.pf-metrics-page > * {\n  margin-bottom: 1rem;\n}\n.pf-metrics-page .pf-metrics-page__error {\n  color: var(--pf-color-danger);\n}\n\n.pf-metricsv2-page__metric_id_box {\n  margin-bottom: 1rem;\n}\n\n.pf-query-log-table tr:nth-child(even) {\n  border-collapse: collapse;\n  background-color: var(--pf-color-background-secondary);\n}\n.pf-query-log-table td:first-child {\n  word-break: break-word;\n  overflow-wrap: break-word;\n  white-space: normal;\n}\n\n.pf-query-page {\n  height: 100%;\n  font-family: var(--pf-font-compact);\n  overflow: hidden auto;\n}\n.pf-query-page__elapsed-time {\n  font-size: 0.9em;\n  margin-left: 0.2em;\n}\n.pf-query-page__toolbar {\n  border-bottom: 1px solid var(--pf-color-border);\n}\n.pf-query-page .pf-editor {\n  contain: strict;\n  min-height: 3rem;\n}\n.pf-query-page__hotkeys {\n  display: inline-flex;\n  color: gray;\n  font-style: italic;\n  font-size: smaller;\n  user-select: none;\n}\n.pf-query-page__query-error {\n  padding: 20px 10px;\n  color: var(--pf-color-danger);\n  font-family: var(--pf-font-monospace);\n  font-size: 12px;\n  font-weight: 300;\n  white-space: pre;\n}\n\n.pf-record-page {\n  position: relative;\n  overflow-y: scroll;\n  padding: 40px 20px;\n}\n\n.pf-record-page__container {\n  position: relative;\n  max-width: 900px;\n  min-height: 500px;\n  margin: auto;\n}\n\n.pf-record-page__container-content {\n  display: grid;\n  grid-template-columns: 2fr 5fr;\n  grid-template-areas: \"sidebar section\";\n  box-shadow: 0px 4px 12px var(--pf-color-box-shadow);\n  border-radius: 4px;\n  border: 1px solid var(--pf-color-border);\n  overflow: hidden;\n}\n\n.pf-record-page__menu {\n  grid-area: sidebar;\n  background: var(--pf-color-background-secondary);\n  border-right: 1px solid var(--pf-color-border);\n  padding-bottom: 1em;\n}\n.pf-record-page__menu .rec {\n  color: var(--pf-color-danger);\n}\n.pf-record-page__menu .record-ctl {\n  margin: 0.5em;\n  padding: 0.5em;\n  display: grid;\n  grid-template-columns: 24px auto 24px;\n  box-sizing: content-box;\n  height: 24px;\n  line-height: 24px;\n}\n.pf-record-page__menu .record-ctl .hidden {\n  visibility: hidden;\n}\n.pf-record-page__menu .record-ctl .record-target {\n  font-size: 13px;\n  color: var(--pf-color-text-muted);\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.pf-record-page__menu .record-ctl .pf-button {\n  padding: 0;\n  margin: 0;\n  font-size: 20px;\n}\n.pf-record-page__menu header {\n  font-size: 14px;\n  font-weight: 700;\n  margin: 1em;\n}\n.pf-record-page__menu header .pf-button {\n  float: right;\n  padding: 0;\n  font-size: 18px;\n}\n.pf-record-page__menu ul {\n  list-style-type: none;\n  margin: 0;\n  padding: 0;\n}\n.pf-record-page__menu a,\n.pf-record-page__menu a:link,\n.pf-record-page__menu a:visited {\n  text-decoration: none;\n}\n.pf-record-page__menu li {\n  transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease;\n  height: 55px;\n  padding: 0 1em;\n  font-size: 15px;\n  font-weight: 600;\n  color: var(--pf-color-text);\n  display: grid;\n  grid-template-columns: 50px 1fr;\n  grid-template-rows: 40px 1fr;\n  grid-template-areas: \"icon title\" \"icon subtext\";\n  cursor: pointer;\n  overflow: hidden;\n}\n.pf-record-page__menu li i {\n  margin: auto;\n  font-size: 32px;\n  width: 38px;\n  height: 38px;\n  padding: 3px;\n  grid-area: icon;\n}\n.pf-record-page__menu li .title {\n  transition: line-height 0.25s ease;\n  grid-area: title;\n  line-height: 55px;\n  display: block;\n}\n.pf-record-page__menu li .probe-count {\n  float: right;\n  font-size: 10px;\n  font-weight: 300;\n}\n.pf-record-page__menu li .sub {\n  transition: opacity 0.5s ease, color 0.5s ease, background-color 0.5s ease, border-color 0.5s ease, width 0.5s ease, height 0.5s ease, max-width 0.5s ease, max-height 0.5s ease, margin 0.5s ease, transform 0.5s ease, box-shadow 0.5s ease, border-radius 0.5s ease;\n  grid-area: subtext;\n  font-size: 10px;\n  line-height: 12.5px;\n  margin-top: -5px;\n  opacity: 0;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.pf-record-page__menu li:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-record-page__menu li:hover .title {\n  line-height: 50px;\n}\n.pf-record-page__menu li:hover .sub {\n  opacity: 1;\n  transition-duration: 0.25s;\n  transition-delay: 0s;\n}\n.pf-record-page__menu li.disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n.pf-record-page__menu li.active {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n}\n.pf-record-page__menu.disabled {\n  opacity: 0.5;\n  pointer-events: none;\n}\n\n.pf-record-page__section {\n  grid-area: section;\n  transition: opacity 0.25s ease;\n  opacity: 0;\n  display: none;\n  overflow: hidden;\n  --record-section-padding: 20px;\n}\n.pf-record-page__section:not(.active) {\n  max-height: 0;\n}\n.pf-record-page__section.active {\n  display: block;\n  opacity: 1;\n}\n.pf-record-page__section .config {\n  height: auto;\n  width: 100%;\n  padding: 0;\n  display: flex;\n  align-items: center;\n}\n.pf-record-page__section .config:nth-of-type(2n) {\n  background-color: var(--pf-color-background-secondary);\n}\n.pf-record-page__section .parsing-errors {\n  padding: 1em;\n  border: 1px solid var(--pf-color-danger);\n  color: var(--pf-color-danger);\n}\n.pf-record-page__section .title-config {\n  display: inline-block;\n  margin: var(--record-section-padding);\n  flex-grow: 1;\n  word-break: break-all;\n}\n.pf-record-page__section .input-config {\n  margin: 20px;\n  display: flex;\n  align-items: center;\n  display: flex;\n  gap: 4px;\n}\n.pf-record-page__section .input-config .pf-text-input {\n  flex-grow: 1;\n}\n.pf-record-page__section > * {\n  padding-left: var(--record-section-padding);\n  padding-right: var(--record-section-padding);\n}\n.pf-record-page__section > *:first-child {\n  padding-top: 20px;\n}\n.pf-record-page__section > *:last-child {\n  padding-bottom: 20px;\n}\n.pf-record-page__section > header {\n  text-align: center;\n  font-size: 20px;\n  padding: 15px 10px;\n  color: var(--pf-color-text);\n}\n.pf-record-page__section .hide {\n  opacity: 0;\n  visibility: hidden;\n}\n.pf-record-page__section .pf-probe {\n  display: grid;\n  grid-template-rows: 40px 1fr;\n  grid-template-columns: 220px 1fr;\n  grid-template-areas: \"label label\" \"img descr\";\n  transition: color 0.2s ease;\n  padding-top: var(--record-section-padding);\n  padding-bottom: var(--record-section-padding);\n}\n.pf-record-page__section .pf-probe.compact {\n  padding-top: 10px;\n  padding-bottom: 10px;\n}\n.pf-record-page__section .pf-probe:nth-of-type(2n) {\n  background-color: var(--pf-color-background-secondary);\n}\n.pf-record-page__section .pf-probe > img {\n  transition: filter 0.2s ease, opacity 0.2s ease;\n  grid-area: img;\n  width: 210px;\n  box-sizing: content-box;\n  cursor: pointer;\n  opacity: 0.5;\n  filter: saturate(0.15);\n}\n.pf-record-page__section .pf-probe:hover > img {\n  opacity: 1;\n}\n.pf-record-page__section .pf-probe:hover > label {\n  color: var(--pf-color-text);\n}\n.pf-record-page__section .pf-probe:hover > label input[type=checkbox]::after {\n  background: var(--pf-color-primary);\n}\n.pf-record-page__section .pf-probe .pf-probe__switch {\n  grid-area: label;\n  font-size: 20px;\n  font-weight: 400;\n}\n.pf-record-page__section .pf-probe .pf-probe__descr {\n  grid-area: descr;\n  font-size: 14px;\n  font-weight: 200;\n  min-height: 50px;\n  line-height: 20px;\n}\n.pf-record-page__section .pf-probe code {\n  background: var(--pf-color-background-secondary);\n  display: block;\n  padding: 5px;\n  margin: 5px 0;\n  border: 1px dotted var(--pf-color-text-hint);\n  white-space: pre-wrap;\n}\n.pf-record-page__section .pf-probe .probe-config {\n  transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease;\n  opacity: 0;\n  visibility: hidden;\n  margin: 10px 10px 0 0;\n  max-height: 0;\n}\n.pf-record-page__section .pf-probe .extended-desc {\n  grid-column: span 2;\n}\n.pf-record-page__section .pf-probe.enabled .probe-config {\n  opacity: 1;\n  visibility: visible;\n  max-height: 10000px;\n}\n.pf-record-page__section .pf-probe.enabled > label span {\n  color: var(--pf-color-primary);\n}\n.pf-record-page__section .pf-probe.enabled > img {\n  filter: saturate(1);\n  opacity: 1;\n}\n.pf-record-page__section .textarea-holder {\n  padding-top: var(--record-section-padding);\n}\n.pf-record-page__section .pf-toggle {\n  padding-top: var(--record-section-padding);\n  display: flex;\n  flex-direction: column;\n}\n.pf-record-page__section .pf-toggle:hover > img {\n  opacity: 1;\n}\n.pf-record-page__section .pf-toggle:hover > label {\n  color: var(--pf-color-text);\n}\n.pf-record-page__section .pf-toggle:hover > label input[type=checkbox]::after {\n  background: var(--pf-color-primary);\n}\n.pf-record-page__section .pf-toggle__desc {\n  color: var(--pf-color-text-muted);\n  font-size: 12px;\n}\n.pf-record-page__section .pf-toggle > label {\n  cursor: pointer;\n  font-size: 14px;\n}\n.pf-record-page__section .pf-toggle > div.descr {\n  padding-left: 36px;\n  font-size: 12px;\n  color: var(--pf-color-text-muted);\n}\n.pf-record-page__section .record-mode {\n  display: grid;\n  grid-template-columns: 1fr 1fr 1fr;\n  grid-template-areas: \". . .\";\n  grid-template-rows: 1fr;\n  padding-top: 0;\n}\n.pf-record-page__section .record-mode input[type=radio] {\n  appearance: none;\n  -webkit-appearance: none;\n  display: none;\n}\n.pf-record-page__section .record-mode > * {\n  transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease;\n  cursor: pointer;\n  border-radius: 4px;\n  box-shadow: 0 0 4px 0 var(--pf-color-border);\n  margin: 5px;\n  text-align: center;\n  background-color: var(--pf-color-background-secondary);\n  font-size: 20px;\n  padding-bottom: 10px;\n}\n@media (max-width: 1280px) {\n  .pf-record-page__section .record-mode > * {\n    font-size: 1.6vw;\n  }\n}\n.pf-record-page__section .record-mode > *:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-record-page__section .record-mode > *.selected {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n}\n.pf-record-page__section .record-mode > * img {\n  width: 100%;\n}\n.pf-record-page__section .slider {\n  transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease;\n  display: grid;\n  grid-template-columns: 40px 1fr 130px 0;\n  grid-template-rows: 30px min-content 1fr;\n  grid-template-areas: \"hdr hdr hdr hdr\" \"descr descr descr descr\" \"icon slider label unit\";\n  margin-top: var(--record-section-padding);\n}\n.pf-record-page__section .slider.thin {\n  grid-template-columns: 1fr 1fr 100px 0;\n  grid-template-areas: \"hdr hdr hdr hdr\" \"descr descr descr descr\" \"slider slider label unit\";\n}\n.pf-record-page__section .slider.greyed-out {\n  opacity: 0.5;\n}\n.pf-record-page__section .slider > * {\n  height: 40px;\n  line-height: 40px;\n}\n.pf-record-page__section .slider > header {\n  transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease;\n  opacity: 0.6;\n  color: var(--pf-color-text);\n  grid-area: hdr;\n}\n.pf-record-page__section .slider.thin > header {\n  opacity: 1;\n  font-size: 14px;\n}\n.pf-record-page__section .slider.thin > header.descr {\n  grid-area: descr;\n  font-size: 12px;\n  color: var(--pf-color-text-muted);\n  height: 20px;\n  line-height: 20px;\n}\n.pf-record-page__section .slider:hover > header {\n  opacity: 1;\n  transition-duration: 0.15s;\n}\n.pf-record-page__section .slider > i {\n  grid-area: icon;\n  font-size: 32px;\n  color: var(--pf-color-text);\n}\n.pf-record-page__section .slider input[type=range] {\n  grid-area: slider;\n  width: 100%;\n  appearance: none;\n  -webkit-appearance: none;\n  scroll-snap-type: x mandatory;\n  background-color: transparent;\n  outline: none;\n  margin-left: -10px;\n  margin-top: -5px;\n}\n.pf-record-page__section .slider input[type=range]::-webkit-slider-runnable-track {\n  margin: 10px;\n  width: 100%;\n  height: 10px;\n  background-color: var(--pf-color-border);\n  border-radius: 4px;\n}\n.pf-record-page__section .slider input[type=range]::-webkit-slider-thumb {\n  transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease;\n  appearance: none;\n  -webkit-appearance: none;\n  border: none;\n  border-radius: 3px;\n  height: 20px;\n  width: 40px;\n  background-color: var(--pf-color-primary);\n  margin-top: -5px;\n  cursor: pointer;\n  content: \"\";\n}\n.pf-record-page__section .slider input[type=range]:hover::-webkit-slider-thumb, .pf-record-page__section .slider input[type=range]:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 4px var(--pf-color-primary);\n  transform: scale(1, 1.1);\n}\n.pf-record-page__section .slider.thin input[type=range]::-webkit-slider-runnable-track {\n  height: 8px;\n}\n.pf-record-page__section .slider.thin input[type=range]::-webkit-slider-thumb {\n  width: 20px;\n  border-radius: 100%;\n}\n.pf-record-page__section .slider .spinner {\n  transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease;\n  grid-area: label;\n  border: 1px solid var(--pf-color-background);\n  border-bottom: 2px solid var(--pf-color-border);\n  padding: 0 5px;\n  border-radius: 2px;\n  font-size: 16px;\n  font-weight: 100;\n  height: 35px;\n  outline: none;\n}\n.pf-record-page__section .slider .spinner::-webkit-inner-spin-button, .pf-record-page__section .slider .spinner::-webkit-outer-spin-button, .pf-record-page__section .slider .spinner::-webkit-clear-button {\n  -webkit-appearance: none;\n  margin: 0;\n}\n.pf-record-page__section .slider .spinner:hover, .pf-record-page__section .slider .spinner:focus {\n  border-bottom-color: var(--pf-color-primary);\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-record-page__section .slider .spinner:invalid {\n  border-bottom-color: var(--pf-color-danger);\n}\n.pf-record-page__section .slider.thin .spinner {\n  font-size: 14px;\n  margin-top: -5px;\n}\n.pf-record-page__section .slider .unit {\n  grid-area: unit;\n  font-size: 12px;\n  position: relative;\n  line-height: 37px;\n  overflow: hidden;\n  width: 35px;\n  left: -45px;\n  text-align: right;\n  margin-top: -5px;\n}\n.pf-record-page__section .chrome-categories {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  display: flex;\n  flex-direction: row;\n  gap: 8px;\n}\n.pf-record-page__section .dropdown {\n  border: 1px solid var(--pf-color-border-secondary);\n  outline: none;\n  -webkit-appearance: none;\n}\n.pf-record-page__section .dropdown option,\n.pf-record-page__section .dropdown optgroup {\n  transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease;\n  min-height: 25px;\n  font-size: 12px;\n  cursor: pointer;\n  padding: 5px 0;\n}\n.pf-record-page__section .dropdown option {\n  padding: 2.5px 5px;\n  border-bottom: 1px solid var(--pf-color-border-secondary);\n}\n.pf-record-page__section .dropdown option:hover {\n  background-color: var(--pf-color-interactive-base);\n}\n.pf-record-page__section .dropdown option::before {\n  display: none;\n  content: \"\";\n}\n.pf-record-page__section .dropdown.singlecolumn {\n  margin: var(--record-section-padding) 0;\n  padding: 0;\n  max-width: 100%;\n  width: 100%;\n  overflow-y: auto;\n  height: 400px;\n}\n.pf-record-page__section .dropdown.singlecolumn optgroup {\n  display: grid;\n  padding: 0;\n  grid-template-columns: 1fr;\n}\n.pf-record-page__section .dropdown.singlecolumn option {\n  margin: 0;\n}\n.pf-record-page__section .dropdown.multicolumn {\n  padding: 0;\n  max-width: 100%;\n  width: 100%;\n  overflow-y: auto;\n}\n.pf-record-page__section .dropdown.multicolumn optgroup {\n  display: grid;\n  padding: 0;\n  grid-template-columns: 1fr 1fr 1fr;\n}\n.pf-record-page__section .dropdown.multicolumn option {\n  margin: 0;\n}\n.pf-record-page__section .dropdown.multicolumn option:nth-of-type(3n + 1) {\n  border-left: 1px solid var(--pf-color-border-secondary);\n  border-right: 1px solid var(--pf-color-border-secondary);\n}\n.pf-record-page__section .dropdown.multicolumn.two-columns {\n  height: 400px;\n  margin: var(--record-section-padding);\n}\n.pf-record-page__section .dropdown.multicolumn.two-columns optgroup {\n  display: grid;\n  padding: 0;\n  grid-template-columns: 1fr 1fr;\n}\n.pf-record-page__section .dropdown.multicolumn.two-columns option {\n  margin: 0;\n}\n.pf-record-page__section .dropdown.multicolumn.two-columns option:nth-of-type(2n + 1) {\n  border-left: 1px solid var(--pf-color-border-secondary);\n  border-right: 1px solid var(--pf-color-border-secondary);\n}\n.pf-record-page__section .atrace-categories {\n  height: 227px;\n}\n.pf-record-page__section .ftrace-events {\n  height: 152px;\n}\n.pf-record-page__section textarea.extra-input {\n  width: 100%;\n  height: 60px;\n  border: 1px solid var(--pf-color-border-secondary);\n  resize: none;\n  outline: none;\n  font-family: var(--pf-font-monospace);\n}\n.pf-record-page__section textarea.extra-input::placeholder {\n  color: var(--pf-color-text-hint);\n}\n.pf-record-page__section textarea.record-apps-list {\n  margin-top: 16px;\n  height: 100px;\n}\n.pf-record-page__section.instructions label,\n.pf-record-page__section.instructions select {\n  font-weight: 100;\n  color: var(--pf-color-text);\n  font-size: 16px;\n}\n.pf-record-page__section.instructions .note {\n  border: 1px dashed var(--pf-color-border);\n  background: #f9eeba;\n  margin: var(--record-section-padding);\n  padding: 10px;\n  font-size: 14px;\n  line-height: 20px;\n}\n.pf-record-page__section.instructions select {\n  transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease;\n  margin-left: 10px;\n  border-radius: 0;\n  border: 1px solid var(--pf-color-border-secondary);\n  outline: none;\n}\n.pf-record-page__section.instructions select:hover, .pf-record-page__section.instructions select:active {\n  box-shadow: 0 0 6px var(--pf-color-border);\n}\n.pf-record-page__section.instructions .buttons {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: auto;\n  height: 70px;\n}\n.pf-record-page__section.instructions .buttons > * {\n  transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease;\n  cursor: pointer;\n  border-radius: 10px;\n  text-align: center;\n  margin: 3px;\n  background-color: var(--pf-color-background-secondary);\n  flex-grow: 1;\n  font-size: 17px;\n  padding: 7px;\n}\n@media (max-width: 1280px) {\n  .pf-record-page__section.instructions .buttons > * {\n    font-size: 1.6vw;\n  }\n}\n.pf-record-page__section.instructions .buttons > *:hover {\n  background-color: var(--pf-color-interactive-base);\n  box-shadow: 0 0 4px 0 var(--pf-color-text-hint);\n}\n.pf-record-page__section.instructions .buttons > *.selected {\n  background-color: var(--pf-color-success);\n  box-shadow: 0 0 4px 0 var(--pf-color-text-hint);\n}\n.pf-record-page__section.instructions .permalinkconfig {\n  margin: var(--record-section-padding);\n  height: 40px;\n  max-width: 200px;\n  border-radius: 10px;\n  text-align: center;\n  justify-items: center;\n  padding: 7px;\n  background-color: var(--pf-color-success);\n}\n.pf-record-page__section.instructions .permalinkconfig:hover {\n  box-shadow: 0 0 4px 0 var(--pf-color-text-hint);\n}\n.pf-record-page__section.instructions progress {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 600px;\n  height: 30px;\n  margin: var(--record-section-padding);\n  border-radius: 5px;\n}\n.pf-record-page__section.instructions ::-webkit-progress-value {\n  background-color: var(--pf-color-success);\n}\n.pf-record-page__section.instructions ::-webkit-progress-bar {\n  background-color: var(--pf-color-background-secondary);\n}\n\n.pf-record-page__section[id=target] header {\n  font-size: 1rem;\n  font-weight: 600;\n  text-align: left;\n  padding-top: 20px;\n  padding-bottom: 5px;\n}\n.pf-record-page__section[id=target] .platform-selector button {\n  min-height: 60px;\n  box-shadow: 2px 2px 4px var(--pf-color-box-shadow);\n  border: 1px solid var(--pf-color-border-secondary);\n  font-size: 1.2rem;\n  margin: 0 5px;\n}\n.pf-record-page__section[id=target] .platform-selector button:hover {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-record-page__section[id=target] .platform-selector button.pf-active {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n  border-color: var(--pf-color-primary);\n}\n.pf-record-page__section[id=target] table {\n  width: 100%;\n}\n.pf-record-page__section[id=target] .record-transports {\n  border: 0;\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] + label {\n  cursor: pointer;\n  border: 1px solid var(--pf-color-border-secondary);\n  display: block;\n  display: grid;\n  grid-template-columns: 50px auto;\n  grid-template-rows: auto auto;\n  grid-template-areas: \"icon title\" \"icon description\";\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] + label:hover .pf-icon {\n  background-color: color-mix(in srgb, transparent, var(--pf-color-interactive-base) 8%);\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] + label .pf-icon {\n  grid-area: icon;\n  font-size: 32px;\n  text-align: center;\n  padding: 10px 0;\n  margin-right: 10px;\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] + label .title {\n  grid-area: title;\n  font-weight: 600;\n  margin-top: 10px;\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] + label .description {\n  grid-area: description;\n  font-size: 0.75rem;\n  margin-bottom: 10px;\n  white-space: pre-line;\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio]:checked + label .pf-icon {\n  background-color: var(--pf-color-primary);\n  color: var(--pf-color-text-on-primary);\n}\n.pf-record-page__section[id=target] .record-transports input[type=radio] {\n  -moz-appearance: none;\n  -webkit-appearance: none;\n  margin: 0;\n  padding: 0;\n  display: none;\n}\n.pf-record-page__section[id=target] .record-targets {\n  display: flex;\n  flex-direction: row;\n  margin: 10px 0;\n}\n.pf-record-page__section[id=target] .record-targets > * {\n  margin-right: 10px;\n}\n.pf-record-page__section[id=target] .preflight-checks-icon .error {\n  color: var(--pf-color-danger);\n}\n.pf-record-page__section[id=target] .preflight-checks-icon .ok {\n  color: var(--pf-color-success);\n}\n.pf-record-page__section[id=target] .preflight-checks-table {\n  font-family: var(--pf-font-monospace);\n  font-size: 0.8rem;\n  display: block;\n  border-collapse: collapse;\n}\n.pf-record-page__section[id=target] .preflight-checks-table td {\n  padding: 5px 10px;\n  border-bottom: 1px solid var(--pf-color-border-secondary);\n  white-space: pre-wrap;\n}\n.pf-record-page__section[id=target] .preflight-checks-table .error {\n  color: var(--pf-color-danger);\n}\n.pf-record-page__section[id=target] .preflight-checks-table .error::before {\n  content: \"❌\";\n  margin-right: 5px;\n}\n.pf-record-page__section[id=target] .preflight-checks-table .ok {\n  color: var(--pf-color-success);\n}\n.pf-record-page__section[id=target] .preflight-checks-table .ok::before {\n  content: \"✅\";\n  margin-right: 5px;\n}\n.pf-record-page__section[id=target] .session-status {\n  border: 1px solid var(--pf-color-border-secondary);\n  margin: 1em;\n  padding: 1em;\n  width: calc(100% - 2em);\n  font-size: 14px;\n}\n.pf-record-page__section[id=target] .session-status td:first-of-type {\n  font-weight: 500;\n  width: 20%;\n  vertical-align: top;\n}\n.pf-record-page__section[id=target] .session-status tr {\n  margin: 10px 0;\n}\n.pf-record-page__section[id=target] .session-status .logs {\n  background-color: var(--pf-color-background-secondary);\n  border: 1px solid var(--pf-color-border-secondary);\n  white-space: pre-wrap;\n  margin: 0;\n  font-size: 12px;\n}\n\n.pf-sched-latency {\n  position: relative;\n}\n.pf-sched-latency__explanation {\n  font-size: smaller;\n}\n.pf-sched-latency__wakeup-text {\n  position: absolute;\n  left: 40px;\n  top: 20px;\n}\n.pf-sched-latency__latency-text {\n  position: absolute;\n  left: 106px;\n  top: 90px;\n}\n.pf-sched-latency__background {\n  user-select: none;\n  width: 180px;\n  height: 150px;\n}\n\n.pf-screenshot-panel {\n  height: 100%;\n}\n.pf-screenshot-panel img {\n  max-height: 100%;\n}\n\n.pf-timeline-sync-popup {\n  display: flex;\n  gap: 8px;\n  align-items: baseline;\n}\n\n.pf-widgets-page {\n  padding: 20px;\n  font-size: 16px;\n  overflow: auto;\n}\n.pf-widgets-page h1 {\n  margin: 32px 0 0 0;\n  font-size: 28px;\n}\n.pf-widgets-page h2 {\n  margin: 16px 0 0 0;\n  font-size: 24px;\n}\n.pf-widgets-page ul {\n  margin-block-start: 5px;\n  margin-block-end: 0px;\n  padding-inline-start: 0px;\n}\n.pf-widgets-page li {\n  list-style-type: none;\n  margin: 2px 0 0 0;\n}\n.pf-widgets-page .pf-widget-block {\n  display: flex;\n  flex-direction: row;\n}\n.pf-widgets-page .pf-widget-controls {\n  margin: 10px;\n}\n.pf-widgets-page .pf-widget-container {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-width: 300px;\n  max-width: 600px;\n  min-height: 250px;\n  max-height: 1000px;\n  border-radius: 3px;\n  box-shadow: inset 2px 2px 10px rgba(0, 0, 0, 0.1254901961);\n  border: dashed 1px gray;\n  margin: 10px 0 10px 0;\n  padding: 16px;\n  overflow: hidden;\n}\n.pf-widgets-page .pf-widget-container--wide {\n  min-width: 450px;\n}\n.pf-widgets-page .pf-virtual-canvas {\n  height: 100px;\n}\n\n.pf-wattson-warning {\n  color: var(--pf-color-danger);\n}\n.pf-wattson-warning__list {\n  padding-left: 20px;\n}\n\n.pf-flags-page__card--changed {\n  border-left: solid 3px var(--pf-color-primary);\n}\n.pf-flags-page__description {\n  font-size: smaller;\n}\n.pf-flags-page__footer {\n  margin-top: 12px;\n  margin-bottom: 24px;\n  display: flex;\n  justify-content: center;\n}\n\n.pf-plugins-page {\n  margin-block: 16px;\n}\n.pf-plugins-page__topbar {\n  display: flex;\n  justify-content: space-between;\n}\n.pf-plugins-page__chip {\n  font-size: 12px;\n}\n.pf-plugins-page__card {\n  display: flex;\n  flex-direction: row;\n  gap: 6px;\n  justify-content: space-between;\n  border-left: solid 3px transparent;\n  color: var(--pf-color-text-muted);\n}\n.pf-plugins-page__card--active {\n  border-left: solid 3px var(--pf-color-success);\n}\n.pf-plugins-page__card--enabled {\n  color: unset;\n}\n.pf-plugins-page__details {\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n.pf-plugins-page__description {\n  font-size: smaller;\n}\n.pf-plugins-page__controls {\n  display: flex;\n  flex-direction: row;\n  column-gap: 12px;\n  align-items: center;\n}\n\n.pf-multi-trace-modal__description-panel {\n  border-bottom: 1px solid var(--pf-color-border);\n  margin-bottom: 0px;\n  padding-bottom: 0px;\n}\n.pf-multi-trace-modal__tabs {\n  margin-bottom: 16px;\n}\n.pf-multi-trace-modal__description-content {\n  padding: 0 8px;\n  width: 550px;\n  box-sizing: border-box;\n}\n.pf-multi-trace-modal__description-content .pf-text-paragraph {\n  padding-top: 0;\n  padding-bottom: 16px;\n  font-size: 0.9em;\n  color: var(--pf-color-text-secondary);\n  line-height: 1.4;\n}\n.pf-multi-trace-modal__list-panel {\n  border: none;\n  overflow-y: auto;\n  width: 550px;\n  max-height: 700px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.pf-multi-trace-modal__card {\n  padding: 16px;\n  justify-content: space-between;\n  align-items: center;\n}\n.pf-multi-trace-modal__name {\n  color: var(--pf-color-text);\n  font-size: 0.95em;\n  font-weight: 600;\n}\n.pf-multi-trace-modal__size, .pf-multi-trace-modal__status, .pf-multi-trace-modal__format {\n  color: var(--pf-color-text-secondary);\n  font-size: 0.9em;\n}\n.pf-multi-trace-modal__size strong, .pf-multi-trace-modal__format strong {\n  font-weight: 600;\n}\n.pf-multi-trace-modal__actions {\n  min-width: 50px;\n}\n.pf-multi-trace-modal__status::before {\n  content: \"\";\n  display: inline-block;\n  width: 8px;\n  height: 8px;\n  margin-right: 6px;\n  border-radius: 50%;\n  background-color: var(--pf-color-border);\n}\n.pf-multi-trace-modal__status--analyzed::before {\n  background-color: var(--pf-color-success);\n}\n.pf-multi-trace-modal__status--analyzing::before {\n  display: none;\n}\n.pf-multi-trace-modal__status--error::before {\n  background-color: var(--pf-color-danger);\n}\n.pf-multi-trace-modal__status-wrapper {\n  align-items: center;\n}\n.pf-multi-trace-modal__add-card {\n  border: 1px dashed var(--pf-color-border);\n  background-color: var(--pf-color-background-secondary);\n  cursor: pointer;\n  padding: 8px;\n  color: var(--pf-color-text-secondary);\n  font-family: var(--pf-font);\n  font-size: 0.9em;\n  font-weight: bold;\n  align-items: center;\n}\n.pf-multi-trace-modal__add-card:hover {\n  background: color-mix(in srgb, var(--pf-color-background-secondary), var(--pf-color-interactive-base) 8%);\n}\n.pf-multi-trace-modal__footer {\n  border-top: 1px solid var(--pf-color-border);\n  padding-top: 8px;\n  margin-top: 0px;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n.pf-multi-trace-modal__footer-error {\n  flex: 0 0 auto;\n  font-family: var(--pf-font);\n  word-wrap: break-word;\n  white-space: normal;\n  max-width: 450px;\n}\n.pf-multi-trace-modal__footer-spacer {\n  flex: 1;\n}\n\n.pf-multi-trace-modal-override {\n  padding: 16px;\n  overflow-y: hidden;\n  max-width: none;\n  max-height: none;\n}\n.pf-multi-trace-modal-override main {\n  margin-top: 16px;\n}\n\n.pf-settings-page__card {\n  display: flex;\n  flex-direction: row;\n  gap: 6px;\n  justify-content: space-between;\n}\n.pf-settings-page__card--changed {\n  border-left: solid 3px var(--pf-color-primary);\n}\n.pf-settings-page__details {\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n}\n.pf-settings-page__description {\n  font-size: smaller;\n  white-space: pre-line;\n}\n.pf-settings-page__controls {\n  display: flex;\n  flex-direction: row;\n  column-gap: 12px;\n  align-items: center;\n}\n.pf-settings-page__complex-error {\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  color: var(--pf-color-danger);\n  font-size: 14px;\n}\n\n/*# sourceMappingURL=perfetto.css.map */\n"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/stdlib_docs.json",
    "content": "[{\"name\": \"android\", \"modules\": [{\"module_name\": \"android.app_process_starts\", \"data_objects\": [{\"name\": \"android_app_process_starts\", \"desc\": \"All app cold starts with information about their cold start reason:\\n broadcast, service, activity or provider.\", \"summary_desc\": \"All app cold starts with information about their cold start reason:  broadcast, service, activity or provider.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"start_id\", \"type\": \"LONG\", \"desc\": \"Slice id of the bindApplication slice in the app. Uniquely identifies a process start.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of intent received in the app.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track id of the intent received in the app.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process receiving the intent.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of the process receiving the intent.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process receiving the intent.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"intent\", \"type\": \"STRING\", \"desc\": \"Intent action or component responsible for the cold start.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Process start reason: activity, broadcast, service or provider.\", \"table\": null, \"column\": null}, {\"name\": \"proc_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the process start was dispatched from system_server.\", \"table\": null, \"column\": null}, {\"name\": \"proc_start_dur\", \"type\": \"DURATION\", \"desc\": \"Duration to dispatch the process start from system_server.\", \"table\": null, \"column\": null}, {\"name\": \"bind_app_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the bindApplication started in the app.\", \"table\": null, \"column\": null}, {\"name\": \"bind_app_dur\", \"type\": \"DURATION\", \"desc\": \"Duration to complete bindApplication in the app.\", \"table\": null, \"column\": null}, {\"name\": \"intent_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the Intent was received in the app.\", \"table\": null, \"column\": null}, {\"name\": \"intent_dur\", \"type\": \"DURATION\", \"desc\": \"Duration to handle intent in the app.\", \"table\": null, \"column\": null}, {\"name\": \"total_dur\", \"type\": \"LONG\", \"desc\": \"Total duration from proc_start dispatched to intent completed.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.auto.multiuser\", \"data_objects\": [{\"name\": \"android_auto_multiuser_timing\", \"desc\": \"Time elapsed between the latest user start\\n and the specific end event\\n like package startup(ex carlauncher) or previous user stop.\", \"summary_desc\": \"Time elapsed between the latest user start  and the specific end event  like package startup(ex carlauncher) or previous user stop.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"event_start_user_id\", \"type\": \"STRING\", \"desc\": \"Id of the started android user\", \"table\": null, \"column\": null}, {\"name\": \"event_start_time\", \"type\": \"LONG\", \"desc\": \"Start event time\", \"table\": null, \"column\": null}, {\"name\": \"event_end_time\", \"type\": \"LONG\", \"desc\": \"End event time\", \"table\": null, \"column\": null}, {\"name\": \"event_end_name\", \"type\": \"STRING\", \"desc\": \"End event name\", \"table\": null, \"column\": null}, {\"name\": \"event_start_name\", \"type\": \"STRING\", \"desc\": \"Start event name\", \"table\": null, \"column\": null}, {\"name\": \"duration\", \"type\": \"LONG\", \"desc\": \"User switch duration from start event to end event\", \"table\": null, \"column\": null}]}, {\"name\": \"android_auto_multiuser_timing_with_previous_user_resource_usage\", \"desc\": \"This table extends `android_auto_multiuser_timing` table with previous user resource usage.\", \"summary_desc\": \"This table extends `android_auto_multiuser_timing` table with previous user resource usage.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"event_start_user_id\", \"type\": \"STRING\", \"desc\": \"Start user id\", \"table\": null, \"column\": null}, {\"name\": \"event_start_time\", \"type\": \"LONG\", \"desc\": \"Start event time\", \"table\": null, \"column\": null}, {\"name\": \"event_end_time\", \"type\": \"LONG\", \"desc\": \"End event time\", \"table\": null, \"column\": null}, {\"name\": \"event_end_name\", \"type\": \"STRING\", \"desc\": \"End event name\", \"table\": null, \"column\": null}, {\"name\": \"event_start_name\", \"type\": \"STRING\", \"desc\": \"Start event name\", \"table\": null, \"column\": null}, {\"name\": \"duration\", \"type\": \"LONG\", \"desc\": \"User switch duration from start event to end event\", \"table\": null, \"column\": null}, {\"name\": \"user_id\", \"type\": \"LONG\", \"desc\": \"User id\", \"table\": null, \"column\": null}, {\"name\": \"total_cpu_time\", \"type\": \"LONG\", \"desc\": \"Total CPU time for a user\", \"table\": null, \"column\": null}, {\"name\": \"total_memory_usage_kb\", \"type\": \"LONG\", \"desc\": \"Total memory user for a user\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.battery.charging_states\", \"data_objects\": [{\"name\": \"android_charging_states\", \"desc\": \"Device charging states.\", \"summary_desc\": \"Device charging states.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Alias of counter.id if a slice with charging state exists otherwise there will be a single row where id = 1.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp at which the device charging state began.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the device charging state.\", \"table\": null, \"column\": null}, {\"name\": \"short_charging_state\", \"type\": \"STRING\", \"desc\": \"One of: charging, discharging, not_charging, full, unknown.\", \"table\": null, \"column\": null}, {\"name\": \"charging_state\", \"type\": \"STRING\", \"desc\": \"Device charging state, one of: Charging, Discharging, Not charging (when the charger is present but battery is not charging), Full, Unknown\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.battery.doze\", \"data_objects\": [{\"name\": \"android_light_idle_state\", \"desc\": \"Light idle states. This is the state machine that quickly detects the\\n device is unused and restricts background activity.\\n See https://developer.android.com/training/monitoring-device-state/doze-standby\", \"summary_desc\": \"Light idle states\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration.\", \"table\": null, \"column\": null}, {\"name\": \"light_idle_state\", \"type\": \"STRING\", \"desc\": \"Description of the light idle state.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_deep_idle_state\", \"desc\": \"Deep idle states. This is the state machine that more slowly detects deeper\\n levels of device unuse and restricts background activity further.\\n See https://developer.android.com/training/monitoring-device-state/doze-standby\", \"summary_desc\": \"Deep idle states\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration.\", \"table\": null, \"column\": null}, {\"name\": \"deep_idle_state\", \"type\": \"STRING\", \"desc\": \"Description of the deep idle state.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.battery\", \"data_objects\": [{\"name\": \"android_battery_charge\", \"desc\": \"Battery charge at timestamp.\", \"summary_desc\": \"Battery charge at timestamp.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"current_avg_ua\", \"type\": \"DOUBLE\", \"desc\": \"Current average micro ampers.\", \"table\": null, \"column\": null}, {\"name\": \"capacity_percent\", \"type\": \"DOUBLE\", \"desc\": \"Current capacity percentage.\", \"table\": null, \"column\": null}, {\"name\": \"charge_uah\", \"type\": \"DOUBLE\", \"desc\": \"Current charge in micro ampers.\", \"table\": null, \"column\": null}, {\"name\": \"current_ua\", \"type\": \"DOUBLE\", \"desc\": \"Current micro ampers.\", \"table\": null, \"column\": null}, {\"name\": \"voltage_uv\", \"type\": \"DOUBLE\", \"desc\": \"Current voltage in micro volts.\", \"table\": null, \"column\": null}, {\"name\": \"energy_counter_uwh\", \"type\": \"DOUBLE\", \"desc\": \"Current energy counter in microwatt-hours(\\u00b5Wh).\", \"table\": null, \"column\": null}, {\"name\": \"power_mw\", \"type\": \"DOUBLE\", \"desc\": \"Current power in milliwatts.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.battery_stats\", \"data_objects\": [{\"name\": \"android_battery_stats_state\", \"desc\": \"View of human readable battery stats counter-based states. These are recorded\\n by BatteryStats as a bitmap where each 'category' has a unique value at any\\n given time.\", \"summary_desc\": \"View of human readable battery stats counter-based states\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the new barrary state.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration the state was active, -1 for incomplete slices.\", \"table\": null, \"column\": null}, {\"name\": \"safe_dur\", \"type\": \"DURATION\", \"desc\": \"The same as `dur`, but extends to trace end for incomplete slices.\", \"table\": null, \"column\": null}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"The name of the counter track.\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"The counter value as a number.\", \"table\": null, \"column\": null}, {\"name\": \"value_name\", \"type\": \"STRING\", \"desc\": \"The counter value as a human-readable string.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_battery_stats_event_slices\", \"desc\": \"View of slices derived from battery_stats events. Battery stats records all\\n events as instants, however some may indicate whether something started or\\n stopped with a '+' or '-' prefix. Events such as jobs, top apps, foreground\\n apps or long wakes include these details and allow drawing slices between\\n instant events found in a trace.\\n\\n For example, we may see an event like the following on 'battery_stats.top':\\n\\n     -top=10215:\\\"com.google.android.apps.nexuslauncher\\\"\\n\\n This view will find the associated start ('+top') with the matching suffix\\n (everything after the '=') to construct a slice. It computes the timestamp\\n and duration from the events and extract the details as follows:\\n\\n     track_name='battery_stats.top'\\n     str_value='com.google.android.apps.nexuslauncher'\\n     int_value=10215\", \"summary_desc\": \"View of slices derived from battery_stats events\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of a new battery state.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration the state was active, -1 for incomplete slices.\", \"table\": null, \"column\": null}, {\"name\": \"safe_dur\", \"type\": \"DURATION\", \"desc\": \"The same as `dur`, but extends to trace end for incomplete slices.\", \"table\": null, \"column\": null}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"The name of the counter track.\", \"table\": null, \"column\": null}, {\"name\": \"str_value\", \"type\": \"STRING\", \"desc\": \"String value.\", \"table\": null, \"column\": null}, {\"name\": \"int_value\", \"type\": \"LONG\", \"desc\": \"Int value.\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"android_battery_stats_counter_to_string\", \"desc\": \"Converts a battery_stats counter value to human readable string.\", \"summary_desc\": \"Converts a battery_stats counter value to human readable string.\", \"args\": [{\"name\": \"track\", \"type\": \"STRING\", \"desc\": \"The counter track name (e.g. 'battery_stats.audio').\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"The counter value.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"The human-readable name for the counter value.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.binder\", \"data_objects\": [{\"name\": \"android_binder_metrics_by_process\", \"desc\": \"Count Binder transactions per process.\", \"summary_desc\": \"Count Binder transactions per process.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process that started the binder transaction.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"PID of the process that started the binder transaction.\", \"table\": null, \"column\": null}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of the slice with binder transaction.\", \"table\": null, \"column\": null}, {\"name\": \"event_count\", \"type\": \"LONG\", \"desc\": \"Number of binder transactions in process in slice.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_sync_binder_thread_state_by_txn\", \"desc\": \"Aggregated thread_states on the client and server side per binder txn\\n This builds on the data from |_sync_binder_metrics_by_txn| and\\n for each end (client and server) of the transaction, it returns\\n the aggregated sum of all the thread state durations.\\n The |thread_state_type| column represents whether a given 'aggregated thread_state'\\n row is on the client or server side. 'binder_txn' is client side and 'binder_reply'\\n is server side.\", \"summary_desc\": \"Aggregated thread_states on the client and server side per binder txn  This builds on the data from |_sync_binder_metrics_by_txn| and  for each end (client and server) of the transaction, it returns  the aggregated sum of all the thread state durations.  The |thread_state_type| column represents whether a given 'aggregated thread_state'  row is on the client or server side\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"binder_txn_id\", \"type\": \"LONG\", \"desc\": \"slice id of the binder txn\", \"table\": null, \"column\": null}, {\"name\": \"client_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Client timestamp\", \"table\": null, \"column\": null}, {\"name\": \"client_tid\", \"type\": \"LONG\", \"desc\": \"Client tid\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_id\", \"type\": \"LONG\", \"desc\": \"slice id of the binder reply\", \"table\": null, \"column\": null}, {\"name\": \"server_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Server timestamp\", \"table\": null, \"column\": null}, {\"name\": \"server_tid\", \"type\": \"LONG\", \"desc\": \"Server tid\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_type\", \"type\": \"STRING\", \"desc\": \"whether thread state is on the txn or reply side\", \"table\": null, \"column\": null}, {\"name\": \"thread_state\", \"type\": \"STRING\", \"desc\": \"a thread_state that occurred in the txn\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_dur\", \"type\": \"DURATION\", \"desc\": \"aggregated dur of the |thread_state| in the txn\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_count\", \"type\": \"LONG\", \"desc\": \"aggregated count of the |thread_state| in the txn\", \"table\": null, \"column\": null}]}, {\"name\": \"android_sync_binder_blocked_functions_by_txn\", \"desc\": \"Aggregated blocked_functions on the client and server side per binder txn\\n This builds on the data from |_sync_binder_metrics_by_txn| and\\n for each end (client and server) of the transaction, it returns\\n the aggregated sum of all the kernel blocked function durations.\\n The |thread_state_type| column represents whether a given 'aggregated blocked_function'\\n row is on the client or server side. 'binder_txn' is client side and 'binder_reply'\\n is server side.\", \"summary_desc\": \"Aggregated blocked_functions on the client and server side per binder txn  This builds on the data from |_sync_binder_metrics_by_txn| and  for each end (client and server) of the transaction, it returns  the aggregated sum of all the kernel blocked function durations.  The |thread_state_type| column represents whether a given 'aggregated blocked_function'  row is on the client or server side\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"binder_txn_id\", \"type\": \"LONG\", \"desc\": \"slice id of the binder txn\", \"table\": null, \"column\": null}, {\"name\": \"client_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Client ts\", \"table\": null, \"column\": null}, {\"name\": \"client_tid\", \"type\": \"LONG\", \"desc\": \"Client tid\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_id\", \"type\": \"LONG\", \"desc\": \"slice id of the binder reply\", \"table\": null, \"column\": null}, {\"name\": \"server_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Server ts\", \"table\": null, \"column\": null}, {\"name\": \"server_tid\", \"type\": \"LONG\", \"desc\": \"Server tid\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_type\", \"type\": \"STRING\", \"desc\": \"whether thread state is on the txn or reply side\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function\", \"type\": \"STRING\", \"desc\": \"blocked kernel function in a thread state\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function_dur\", \"type\": \"DURATION\", \"desc\": \"aggregated dur of the |blocked_function| in the txn\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function_count\", \"type\": \"LONG\", \"desc\": \"aggregated count of the |blocked_function| in the txn\", \"table\": null, \"column\": null}]}, {\"name\": \"android_binder_txns\", \"desc\": \"Breakdown binder transactions per txn.\\n It returns data about the client and server ends of every binder transaction async.\", \"summary_desc\": \"Breakdown binder transactions per txn.  It returns data about the client and server ends of every binder transaction async.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"aidl_name\", \"type\": \"STRING\", \"desc\": \"Fully qualified name of the binder endpoint if existing.\", \"table\": null, \"column\": null}, {\"name\": \"interface\", \"type\": \"STRING\", \"desc\": \"Interface of the binder endpoint if existing.\", \"table\": null, \"column\": null}, {\"name\": \"method_name\", \"type\": \"STRING\", \"desc\": \"Method name of the binder endpoint if existing.\", \"table\": null, \"column\": null}, {\"name\": \"aidl_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the binder interface name was emitted. Proxy to 'ts' and 'dur' for async txns.\", \"table\": null, \"column\": null}, {\"name\": \"aidl_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the binder interface name. Proxy to 'ts' and 'dur' for async txns.\", \"table\": null, \"column\": null}, {\"name\": \"binder_txn_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"client_process\", \"type\": \"STRING\", \"desc\": \"Name of the client process.\", \"table\": null, \"column\": null}, {\"name\": \"client_thread\", \"type\": \"STRING\", \"desc\": \"Name of the client thread.\", \"table\": null, \"column\": null}, {\"name\": \"client_upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the client process.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"client_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the client thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"client_tid\", \"type\": \"LONG\", \"desc\": \"Tid of the client thread.\", \"table\": null, \"column\": null}, {\"name\": \"client_pid\", \"type\": \"LONG\", \"desc\": \"Pid of the client thread.\", \"table\": null, \"column\": null}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"desc\": \"Whether the txn was initiated from the main thread of the client process.\", \"table\": null, \"column\": null}, {\"name\": \"client_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the client txn.\", \"table\": null, \"column\": null}, {\"name\": \"client_dur\", \"type\": \"DURATION\", \"desc\": \"Wall clock dur of the client txn.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice id of the binder reply.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"server_process\", \"type\": \"STRING\", \"desc\": \"Name of the server process.\", \"table\": null, \"column\": null}, {\"name\": \"server_thread\", \"type\": \"STRING\", \"desc\": \"Name of the server thread.\", \"table\": null, \"column\": null}, {\"name\": \"server_upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the server process.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"server_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the server thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"server_tid\", \"type\": \"LONG\", \"desc\": \"Tid of the server thread.\", \"table\": null, \"column\": null}, {\"name\": \"server_pid\", \"type\": \"LONG\", \"desc\": \"Pid of the server thread.\", \"table\": null, \"column\": null}, {\"name\": \"server_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the server txn.\", \"table\": null, \"column\": null}, {\"name\": \"server_dur\", \"type\": \"DURATION\", \"desc\": \"Wall clock dur of the server txn.\", \"table\": null, \"column\": null}, {\"name\": \"client_oom_score\", \"type\": \"LONG\", \"desc\": \"Oom score of the client process at the start of the txn.\", \"table\": null, \"column\": null}, {\"name\": \"server_oom_score\", \"type\": \"LONG\", \"desc\": \"Oom score of the server process at the start of the reply.\", \"table\": null, \"column\": null}, {\"name\": \"is_sync\", \"type\": \"BOOL\", \"desc\": \"Whether the txn is synchronous or async (oneway).\", \"table\": null, \"column\": null}, {\"name\": \"client_monotonic_dur\", \"type\": \"DURATION\", \"desc\": \"Monotonic clock dur of the client txn.\", \"table\": null, \"column\": null}, {\"name\": \"server_monotonic_dur\", \"type\": \"DURATION\", \"desc\": \"Monotonic clock dur of the server txn.\", \"table\": null, \"column\": null}, {\"name\": \"client_package_version_code\", \"type\": \"LONG\", \"desc\": \"Client package version_code.\", \"table\": null, \"column\": null}, {\"name\": \"server_package_version_code\", \"type\": \"LONG\", \"desc\": \"Server package version_code.\", \"table\": null, \"column\": null}, {\"name\": \"is_client_package_debuggable\", \"type\": \"BOOL\", \"desc\": \"Whether client package is debuggable.\", \"table\": null, \"column\": null}, {\"name\": \"is_server_package_debuggable\", \"type\": \"BOOL\", \"desc\": \"Whether server package is debuggable.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"android_binder_outgoing_graph\", \"desc\": \"Returns a DAG of all outgoing binder txns from a process.\\n The roots of the graph are the threads making the txns and the graph flows from:\\n thread -> server_process -> AIDL interface -> AIDL method.\\n The weights of each node represent the wall execution time in the server_process.\", \"summary_desc\": \"Returns a DAG of all outgoing binder txns from a process.  The roots of the graph are the threads making the txns and the graph flows from:  thread -> server_process -> AIDL interface -> AIDL method.  The weights of each node represent the wall execution time in the server_process.\", \"args\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process to generate an outgoing graph for.\", \"table\": \"process\", \"column\": \"id\"}], \"cols\": [{\"name\": \"pprof\", \"type\": \"BYTES\", \"table\": null, \"column\": null, \"desc\": \"Pprof of outgoing binder txns.\"}]}, {\"name\": \"android_binder_incoming_graph\", \"desc\": \"Returns a DAG of all incoming binder txns from a process.\\n The roots of the graph are the clients making the txns and the graph flows from:\\n client_process -> AIDL interface -> AIDL method.\\n The weights of each node represent the wall execution time in the server_process.\", \"summary_desc\": \"Returns a DAG of all incoming binder txns from a process.  The roots of the graph are the clients making the txns and the graph flows from:  client_process -> AIDL interface -> AIDL method.  The weights of each node represent the wall execution time in the server_process.\", \"args\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process to generate an incoming graph for.\", \"table\": \"process\", \"column\": \"id\"}], \"cols\": [{\"name\": \"pprof\", \"type\": \"BYTES\", \"table\": null, \"column\": null, \"desc\": \"Pprof of incoming binder txns.\"}]}, {\"name\": \"android_binder_graph\", \"desc\": \"Returns a graph of all binder txns in a trace.\\n The nodes are client_process and server_process.\\n The weights of each node represent the wall execution time in the server_process.\", \"summary_desc\": \"Returns a graph of all binder txns in a trace.  The nodes are client_process and server_process.  The weights of each node represent the wall execution time in the server_process.\", \"args\": [{\"name\": \"min_client_oom_score\", \"type\": \"LONG\", \"desc\": \"Matches txns from client_processes greater than or equal to the OOM score.\", \"table\": null, \"column\": null}, {\"name\": \"max_client_oom_score\", \"type\": \"LONG\", \"desc\": \"Matches txns from client_processes less than or equal to the OOM score.\", \"table\": null, \"column\": null}, {\"name\": \"min_server_oom_score\", \"type\": \"LONG\", \"desc\": \"Matches txns to server_processes greater than or equal to the OOM score.\", \"table\": null, \"column\": null}, {\"name\": \"max_server_oom_score\", \"type\": \"LONG\", \"desc\": \"Matches txns to server_processes less than or equal to the OOM score.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"pprof\", \"type\": \"BYTES\", \"table\": null, \"column\": null, \"desc\": \"Pprof of binder txns.\"}]}], \"macros\": []}, {\"module_name\": \"android.binder_breakdown\", \"data_objects\": [{\"name\": \"android_binder_server_breakdown\", \"desc\": \"Server side binder breakdowns per transactions per txn.\", \"summary_desc\": \"Server side binder breakdowns per transactions per txn.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"binder_txn_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Client side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"binder_reply_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Server side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of an exclusive interval during the binder reply with a single reason.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of an exclusive interval during the binder reply with a single reason.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Cause of delay during an exclusive interval of the binder reply.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_binder_client_breakdown\", \"desc\": \"Client side binder breakdowns per transactions per txn.\", \"summary_desc\": \"Client side binder breakdowns per transactions per txn.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"binder_txn_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Client side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"binder_reply_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Server side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of an exclusive interval during the binder txn with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of an exclusive interval during the binder txn with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Cause of delay during an exclusive interval of the binder txn.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_binder_client_server_breakdown\", \"desc\": \"Combined client and server side binder breakdowns per transaction.\", \"summary_desc\": \"Combined client and server side binder breakdowns per transaction.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"binder_txn_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Client side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"binder_reply_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Server side id of the binder txn.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of an exclusive interval during the binder txn with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of an exclusive interval during the binder txn with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"server_reason\", \"type\": \"STRING\", \"desc\": \"The server side component of this interval's binder latency reason, if any.\", \"table\": null, \"column\": null}, {\"name\": \"client_reason\", \"type\": \"STRING\", \"desc\": \"The client side component of this interval's binder latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Combined reason indicating whether latency came from client or server side.\", \"table\": null, \"column\": null}, {\"name\": \"reason_type\", \"type\": \"STRING\", \"desc\": \"Whether the latency is due to the client or server.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.bitmaps\", \"data_objects\": [{\"name\": \"android_bitmap_memory\", \"desc\": \"Provides a timeseries of \\\"Bitmap Memory\\\" counter for each process, which\\n is useful for retrieving the total memory used by bitmaps by an application over time.\\n\\n To populate this table, tracing must be enabled with the \\\"view\\\" atrace\\n category.\", \"summary_desc\": \"Provides a timeseries of \\\"Bitmap Memory\\\" counter for each process, which  is useful for retrieving the total memory used by bitmaps by an application over time.   To populate this table, tracing must be enabled with the \\\"view\\\" atrace  category.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(counter.id)\", \"desc\": \"ID of the row in the underlying counter table.\", \"table\": \"counter\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.upid)\", \"desc\": \"Upid of the process.\", \"table\": \"process\", \"column\": \"upid\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(counter.track_id)\", \"desc\": \"Duration of the interval.\", \"table\": \"counter\", \"column\": \"track_id\"}, {\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"Memory consumed by bitmaps in bytes.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_bitmap_count\", \"desc\": \"Provides a timeseries of \\\"Bitmap Count\\\" counter for each process, which\\n is useful for retrieving the number of bitmaps used by an application over time.\\n\\n To populate this table, tracing must be enabled with the \\\"view\\\" atrace\\n category.\", \"summary_desc\": \"Provides a timeseries of \\\"Bitmap Count\\\" counter for each process, which  is useful for retrieving the number of bitmaps used by an application over time.   To populate this table, tracing must be enabled with the \\\"view\\\" atrace  category.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(counter.id)\", \"desc\": \"ID of the row in the underlying counter table.\", \"table\": \"counter\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.upid)\", \"desc\": \"Upid of the process.\", \"table\": \"process\", \"column\": \"upid\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(counter.track_id)\", \"desc\": \"Duration of the interval.\", \"table\": \"counter\", \"column\": \"track_id\"}, {\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"Number of allocated bitmaps.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_bitmap_counters_per_process\", \"desc\": \"Provides a timeseries of bitmap-related counters for each process, which\\n is useful for understanding an application's bitmap usage over time.\\n\\n To populate this table, tracing must be enabled with the \\\"view\\\" atrace\\n category.\", \"summary_desc\": \"Provides a timeseries of bitmap-related counters for each process, which  is useful for understanding an application's bitmap usage over time.   To populate this table, tracing must be enabled with the \\\"view\\\" atrace  category.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.upid)\", \"desc\": \"Upid of the process.\", \"table\": \"process\", \"column\": \"upid\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"bitmap_memory\", \"type\": \"LONG\", \"desc\": \"Memory consumed by bitmaps in bytes.\", \"table\": null, \"column\": null}, {\"name\": \"bitmap_count\", \"type\": \"LONG\", \"desc\": \"Number of allocated bitmaps.\", \"table\": null, \"column\": null}, {\"name\": \"bitmap_memory_id\", \"type\": \"JOINID(counter.id)\", \"desc\": \"ID of the row in the underlying counter table.\", \"table\": \"counter\", \"column\": \"id\"}, {\"name\": \"bitmap_count_id\", \"type\": \"JOINID(counter.id)\", \"desc\": \"ID of the row in the underlying counter table.\", \"table\": \"counter\", \"column\": \"id\"}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.broadcasts\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.cpu.cluster_type\", \"data_objects\": [{\"name\": \"android_cpu_cluster_mapping\", \"desc\": \"Stores the mapping of a cpu to its cluster type - e.g. little, medium, big.\\n This cluster type is determined by initially using cpu_capacity from sysfs\\n and grouping clusters with identical capacities, ordered by size.\\n In the case that capacities are not present, max frequency is used instead.\\n If nothing is avaiable, NULL is returned.\", \"summary_desc\": \"Stores the mapping of a cpu to its cluster type - e.g\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"Alias of `cpu.ucpu`.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"Alias of `cpu.cpu`.\", \"table\": null, \"column\": null}, {\"name\": \"cluster_type\", \"type\": \"STRING\", \"desc\": \"The cluster type of the CPU.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.cpu.cpu_per_uid\", \"data_objects\": [{\"name\": \"android_cpu_per_uid_track\", \"desc\": \"Table of tracks for CPU-per-UID data. Each row represents one UID / cluster\\n combination.\", \"summary_desc\": \"Table of tracks for CPU-per-UID data\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the track; can be joined with cpu_per_uid_counter.\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"UID doing the work.\", \"table\": null, \"column\": null}, {\"name\": \"cluster\", \"type\": \"LONG\", \"desc\": \"Cluster ID for the track, starting from 0, typically with larger numbers meaning larger cores.\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"A package name for the UID. If there are multiple for a UID, one is chosen arbitrarily. UIDs below 10000 always have null package name.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_cpu_per_uid_counter\", \"desc\": \"Table of counters for CPU-per-UID data. Each row represents one instant in\\n time for one UID / cluster.\", \"summary_desc\": \"Table of counters for CPU-per-UID data\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID for the row.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"LONG\", \"desc\": \"Timestamp for the row.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Time to the next measurement for the UID / cluster combination.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Associated track.\", \"table\": null, \"column\": null}, {\"name\": \"diff_ms\", \"type\": \"LONG\", \"desc\": \"CPU time measurement for this time period (milliseconds).\", \"table\": null, \"column\": null}, {\"name\": \"cpu_ratio\", \"type\": \"DOUBLE\", \"desc\": \"Inferred CPU use value for the period where 1.0 means a single core at 100% utilisation.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.critical_blocking_calls\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.cujs.sysui_cuj_counters\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.cujs.sysui_cujs\", \"data_objects\": [{\"name\": \"android_sysui_jank_cujs\", \"desc\": \"Table tracking all jank CUJs information.\", \"summary_desc\": \"Table tracking all jank CUJs information.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"cuj_id\", \"type\": \"LONG\", \"desc\": \"Unique incremental ID for each CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"process id.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_slice_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ slice.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ without the 'J<' prefix.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the CUJ slice in perfetto. Keeping the slice id column as part of this table as provision to lookup the actual CUJ slice ts and dur. The ts and dur in this table might differ from the slice duration, as they are associated with start and end frame corresponding to the CUJ.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the CUJ. Start of the CUJ as defined by the start of the first overlapping expected frame.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp of the CUJ. Calculated as the end timestamp of the last actual frame overlapping with the CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the CUJ calculated based on the ts and ts_end values.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"State of the CUJ. One of \\\"completed\\\", \\\"cancelled\\\" or NULL. NULL in cases where the FT#cancel or FT#end instant event is not present for the CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"ui_thread\", \"type\": \"JOINID(thread.id)\", \"desc\": \"thread id of the UI thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"layer_id\", \"type\": \"LONG\", \"desc\": \"layer id associated with the actual frame.\", \"table\": null, \"column\": null}, {\"name\": \"begin_vsync\", \"type\": \"LONG\", \"desc\": \"vysnc id of the first frame that falls within the CUJ boundary.\", \"table\": null, \"column\": null}, {\"name\": \"end_vsync\", \"type\": \"LONG\", \"desc\": \"vysnc id of the last frame that falls within the CUJ boundary.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_sysui_latency_cujs\", \"desc\": \"Table tracking all latency CUJs information.\", \"summary_desc\": \"Table tracking all latency CUJs information.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"cuj_id\", \"type\": \"LONG\", \"desc\": \"Unique incremental ID for each CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"process id.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_slice_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ slice.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ without the 'L<' prefix.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the CUJ slice in perfetto. Keeping the slice id column as part of this table as provision to lookup the actual CUJ slice ts and dur. The ts and dur in this table might differ from the slice duration, as they are associated with start and end frame corresponding to the CUJ.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the CUJ calculated as the start of the CUJ slice in trace.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp of the CUJ calculated as the end timestamp of the CUJ slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the CUJ calculated based on the ts and ts_end values.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"State of the CUJ whether it was completed/cancelled.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_jank_latency_cujs\", \"desc\": \"Table tracking all jank/latency CUJs information.\", \"summary_desc\": \"Table tracking all jank/latency CUJs information.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"cuj_id\", \"type\": \"LONG\", \"desc\": \"Unique incremental ID for each CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"An alias for cuj_id for compatibility purposes.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"process id.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_slice_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ slice.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_name\", \"type\": \"STRING\", \"desc\": \"Name of the CUJ without the 'J<' prefix.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the CUJ slice in perfetto. Keeping the slice id column as part of this table as provision to lookup the actual CUJ slice ts and dur. The ts and dur in this table might differ from the slice duration, as they are associated with start and end frame corresponding to the CUJ.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the CUJ. Start of the CUJ as defined by the start of the first overlapping expected frame.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp of the CUJ. Calculated as the end timestamp of the last actual frame overlapping with the CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the CUJ calculated based on the ts and ts_end values.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"State of the CUJ. One of \\\"completed\\\", \\\"cancelled\\\" or NULL. NULL in cases where the FT#cancel or FT#end instant event is not present for the CUJ.\", \"table\": null, \"column\": null}, {\"name\": \"ui_thread\", \"type\": \"JOINID(thread.id)\", \"desc\": \"thread id of the UI thread. In case of latency CUJs, this will always be the main thread of the process.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"layer_id\", \"type\": \"LONG\", \"desc\": \"layer id associated with the actual frame.\", \"table\": null, \"column\": null}, {\"name\": \"begin_vsync\", \"type\": \"LONG\", \"desc\": \"vysnc id of the first frame that falls within the CUJ boundary.\", \"table\": null, \"column\": null}, {\"name\": \"end_vsync\", \"type\": \"LONG\", \"desc\": \"vysnc id of the last frame that falls within the CUJ boundary.\", \"table\": null, \"column\": null}, {\"name\": \"cuj_type\", \"type\": \"STRING\", \"desc\": \"Type of CUJ, i.e. jank or latency.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.desktop_mode\", \"data_objects\": [{\"name\": \"android_desktop_mode_windows\", \"desc\": \"Desktop Windows with durations they were open.\", \"summary_desc\": \"Desktop Windows with durations they were open.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"raw_add_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Window add timestamp; NULL if no add event in the trace.\", \"table\": null, \"column\": null}, {\"name\": \"raw_remove_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Window remove timestamp; NULL if no remove event in the trace.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp that the window was added; or trace_start() if no add event in the trace.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Furation the window was open; or until trace_end() if no remove event in the trace.\", \"table\": null, \"column\": null}, {\"name\": \"instance_id\", \"type\": \"LONG\", \"desc\": \"Desktop Window instance ID - unique per window.\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"UID of the app running in the window.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.device\", \"data_objects\": [{\"name\": \"android_device_name\", \"desc\": \"Extract name of the device based on metadata from the trace.\", \"summary_desc\": \"Extract name of the device based on metadata from the trace.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Device name.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.dumpsys.show_map\", \"data_objects\": [{\"name\": \"android_dumpsys_show_map\", \"desc\": \"This table represents memory mapping information from /proc/[pid]/smaps\\n All memory values are in kilobytes (KB)\", \"summary_desc\": \"This table represents memory mapping information from /proc/[pid]/smaps  All memory values are in kilobytes (KB)\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"JOINID(process.pid)\", \"desc\": \"Process ID.\", \"table\": \"process\", \"column\": \"pid\"}, {\"name\": \"vss_kb\", \"type\": \"LONG\", \"desc\": \"Virtual Set Size in kilobytes - total virtual memory mapped by the process.\", \"table\": null, \"column\": null}, {\"name\": \"rss_kb\", \"type\": \"LONG\", \"desc\": \"Resident Set Size in kilobytes - actual physical memory used by the process.\", \"table\": null, \"column\": null}, {\"name\": \"pss_kb\", \"type\": \"LONG\", \"desc\": \"Proportional Set Size in kilobytes - amount of memory shared with other processes.\", \"table\": null, \"column\": null}, {\"name\": \"shared_clean_kb\", \"type\": \"LONG\", \"desc\": \"Clean shared pages in kilobytes - shared pages that haven't been modified.\", \"table\": null, \"column\": null}, {\"name\": \"shared_dirty_kb\", \"type\": \"LONG\", \"desc\": \"Dirty shared pages in kilobytes - shared pages that have been modified.\", \"table\": null, \"column\": null}, {\"name\": \"private_clean_kb\", \"type\": \"LONG\", \"desc\": \"Clean private pages in kilobytes - private pages that haven't been modified.\", \"table\": null, \"column\": null}, {\"name\": \"private_dirty_kb\", \"type\": \"LONG\", \"desc\": \"Dirty private pages in kilobytes - private pages that have been modified.\", \"table\": null, \"column\": null}, {\"name\": \"swap_kb\", \"type\": \"LONG\", \"desc\": \"Swap memory in kilobytes - memory that has been moved to swap space.\", \"table\": null, \"column\": null}, {\"name\": \"swap_pss_kb\", \"type\": \"LONG\", \"desc\": \"Proportional Swap Size in kilobytes - swap shared with other processes.\", \"table\": null, \"column\": null}, {\"name\": \"anon_huge_pages_kb\", \"type\": \"LONG\", \"desc\": \"Anonymous huge pages in kilobytes - large anonymous memory regions.\", \"table\": null, \"column\": null}, {\"name\": \"shmem_pmd_mapped_kb\", \"type\": \"LONG\", \"desc\": \"Shared Memory PMD mapped in kilobytes - page middle directory mapped shared memory.\", \"table\": null, \"column\": null}, {\"name\": \"file_pmd_mapped_kb\", \"type\": \"LONG\", \"desc\": \"File PMD mapped in kilobytes - page middle directory mapped file memory.\", \"table\": null, \"column\": null}, {\"name\": \"shared_huge_tlb_kb\", \"type\": \"LONG\", \"desc\": \"Shared huge TLB in kilobytes - shared huge page table entries.\", \"table\": null, \"column\": null}, {\"name\": \"private_hugetlb_kb\", \"type\": \"LONG\", \"desc\": \"Private huge TLB in kilobytes - private huge page table entries.\", \"table\": null, \"column\": null}, {\"name\": \"locked_kb\", \"type\": \"LONG\", \"desc\": \"Locked memory in kilobytes - memory that can't be swapped out.\", \"table\": null, \"column\": null}, {\"name\": \"mapping_count\", \"type\": \"LONG\", \"desc\": \"Number of mappings of the object.\", \"table\": null, \"column\": null}, {\"name\": \"mapped_object\", \"type\": \"STRING\", \"desc\": \"Path to the mapped object (file, library, etc.).\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.dvfs\", \"data_objects\": [{\"name\": \"android_dvfs_counters\", \"desc\": \"Dvfs counter with duration.\", \"summary_desc\": \"Dvfs counter with duration.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Counter name.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when counter value changed.\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"Counter value.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Counter duration.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_dvfs_counter_stats\", \"desc\": \"Aggregates dvfs counter slice for statistic.\", \"summary_desc\": \"Aggregates dvfs counter slice for statistic.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Counter name on which all the other values are aggregated on.\", \"table\": null, \"column\": null}, {\"name\": \"max\", \"type\": \"DOUBLE\", \"desc\": \"Max of all counter values for the counter name.\", \"table\": null, \"column\": null}, {\"name\": \"min\", \"type\": \"DOUBLE\", \"desc\": \"Min of all counter values for the counter name.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the first and last counter value for the counter name.\", \"table\": null, \"column\": null}, {\"name\": \"wgt_avg\", \"type\": \"DOUBLE\", \"desc\": \"Weighted avergate of all the counter values for the counter name.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_dvfs_counter_residency\", \"desc\": \"Aggregates dvfs counter slice for residency\", \"summary_desc\": \"Aggregates dvfs counter slice for residency\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Counter name.\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"Counter value.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Counter duration.\", \"table\": null, \"column\": null}, {\"name\": \"pct\", \"type\": \"DOUBLE\", \"desc\": \"Counter duration as a percentage of total duration.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.entity_state_residency\", \"data_objects\": [{\"name\": \"android_entity_state_residency\", \"desc\": \"Android entity state residency samples.\\n For details see: https://perfetto.dev/docs/reference/trace-config-proto#AndroidPowerConfig\", \"summary_desc\": \"Android entity state residency samples.  For details see: https://perfetto.dev/docs/reference/trace-config-proto#AndroidPowerConfig\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(counter.id)\", \"desc\": \"`counter.id`\", \"table\": \"counter\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the residency sample.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Time until the next residency sample.\", \"table\": null, \"column\": null}, {\"name\": \"entity_name\", \"type\": \"STRING\", \"desc\": \"Entity or subsytem name.\", \"table\": null, \"column\": null}, {\"name\": \"state_name\", \"type\": \"STRING\", \"desc\": \"State name\", \"table\": null, \"column\": null}, {\"name\": \"raw_name\", \"type\": \"STRING\", \"desc\": \"Raw name (alias of counter.name)\", \"table\": null, \"column\": null}, {\"name\": \"state_time_since_boot\", \"type\": \"DURATION\", \"desc\": \"Time the entity or subsystem spent in the state since boot\", \"table\": null, \"column\": null}, {\"name\": \"state_time_since_boot_at_end\", \"type\": \"DURATION\", \"desc\": \"Time the entity or subsystem spent in the state since boot on the next sample\", \"table\": null, \"column\": null}, {\"name\": \"state_time_ratio\", \"type\": \"DOUBLE\", \"desc\": \"ratio of the time the entity or subsystem spend in the state out of the elapsed time of the sample period. A value of 1 typically means the 100% of time was spent in the state, and a value of 0 means no time was spent.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"entity + state track id. Alias of `counter_track.id`.\", \"table\": \"track\", \"column\": \"id\"}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.frame_blocking_calls.blocking_calls_aggregation\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.frames.jank_type\", \"data_objects\": [], \"functions\": [{\"name\": \"android_is_sf_jank_type\", \"desc\": \"Categorizes whether the jank was caused by Surface Flinger\", \"summary_desc\": \"Categorizes whether the jank was caused by Surface Flinger\", \"args\": [{\"name\": \"jank_type\", \"type\": \"STRING\", \"desc\": \"the jank type from args.display_value with key = \\\"Jank type\\\"\", \"table\": null, \"column\": null}], \"return_type\": \"BOOL\", \"return_desc\": \"True when the jank type represents sf jank\"}, {\"name\": \"android_is_app_jank_type\", \"desc\": \"Categorizes whether the jank was caused by the app\", \"summary_desc\": \"Categorizes whether the jank was caused by the app\", \"args\": [{\"name\": \"jank_type\", \"type\": \"STRING\", \"desc\": \"the jank type from args.display_value with key = \\\"Jank type\\\"\", \"table\": null, \"column\": null}], \"return_type\": \"BOOL\", \"return_desc\": \"True when the jank type represents app jank\"}, {\"name\": \"android_is_missed_frame_type\", \"desc\": \"Categorizes whether the jank was caused by the sf, app or \\\"Dropped Frame\\\"\", \"summary_desc\": \"Categorizes whether the jank was caused by the sf, app or \\\"Dropped Frame\\\"\", \"args\": [{\"name\": \"jank_type\", \"type\": \"STRING\", \"desc\": \"the jank type from args.display_value with key = \\\"Jank type\\\"\", \"table\": null, \"column\": null}], \"return_type\": \"BOOL\", \"return_desc\": \"True if jank_type represents missed frame jank\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.frames.per_frame_metrics\", \"data_objects\": [{\"name\": \"android_frames_overrun\", \"desc\": \"The amount by which each frame missed of hit its deadline. Negative if the\\n deadline was not missed. Frames are considered janky if `overrun` is\\n positive.\\n Calculated as the difference between the end of the\\n `expected_frame_timeline_slice` and `actual_frame_timeline_slice` for the\\n frame.\\n Availability: from S (API 31).\\n For Googlers: more details in go/android-performance-metrics-glossary.\", \"summary_desc\": \"The amount by which each frame missed of hit its deadline\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"overrun\", \"type\": \"LONG\", \"desc\": \"Difference between `expected` and `actual` frame ends. Negative if frame didn't miss deadline.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_frames_ui_time\", \"desc\": \"How much time did the frame's Choreographer callbacks take.\", \"summary_desc\": \"How much time did the frame's Choreographer callbacks take.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id\", \"table\": null, \"column\": null}, {\"name\": \"ui_time\", \"type\": \"LONG\", \"desc\": \"UI time duration\", \"table\": null, \"column\": null}]}, {\"name\": \"android_app_vsync_delay_per_frame\", \"desc\": \"App Vsync delay for a frame. The time between the VSYNC-app signal and the\\n start of Choreographer work.\\n Calculated as time difference between the actual frame start (from\\n `actual_frame_timeline_slice`) and start of the `Choreographer#doFrame`\\n slice.\\n For Googlers: more details in go/android-performance-metrics-glossary.\", \"summary_desc\": \"App Vsync delay for a frame\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id\", \"table\": null, \"column\": null}, {\"name\": \"app_vsync_delay\", \"type\": \"LONG\", \"desc\": \"App VSYNC delay.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_cpu_time_per_frame\", \"desc\": \"How much time did the frame take across the UI Thread + RenderThread.\\n Calculated as sum of `app VSYNC delay` `Choreographer#doFrame` slice\\n duration and summed durations of all `DrawFrame` slices associated with this\\n frame.\\n Availability: from N (API 24).\\n For Googlers: more details in go/android-performance-metrics-glossary.\", \"summary_desc\": \"How much time did the frame take across the UI Thread + RenderThread.  Calculated as sum of `app VSYNC delay` `Choreographer#doFrame` slice  duration and summed durations of all `DrawFrame` slices associated with this  frame.  Availability: from N (API 24).  For Googlers: more details in go/android-performance-metrics-glossary.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id\", \"table\": null, \"column\": null}, {\"name\": \"app_vsync_delay\", \"type\": \"LONG\", \"desc\": \"Difference between actual timeline of the frame and `Choreographer#doFrame`. See `android_app_vsync_delay_per_frame` table for more details.\", \"table\": null, \"column\": null}, {\"name\": \"do_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of `Choreographer#doFrame` slice.\", \"table\": null, \"column\": null}, {\"name\": \"draw_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of `DrawFrame` slice. Summed duration of all `DrawFrame` slices, if more than one. See `android_frames_draw_frame` for more details.\", \"table\": null, \"column\": null}, {\"name\": \"cpu_time\", \"type\": \"LONG\", \"desc\": \"CPU time across the UI Thread + RenderThread.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_frame_stats\", \"desc\": \"Aggregated stats of the frame.\\n\\n For Googlers: more details in go/android-performance-metrics-glossary.\", \"summary_desc\": \"Aggregated stats of the frame.   For Googlers: more details in go/android-performance-metrics-glossary.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"overrun\", \"type\": \"LONG\", \"desc\": \"The amount by which each frame missed of hit its deadline. See `android_frames_overrun` for details.\", \"table\": null, \"column\": null}, {\"name\": \"cpu_time\", \"type\": \"LONG\", \"desc\": \"How much time did the frame take across the UI Thread + RenderThread.\", \"table\": null, \"column\": null}, {\"name\": \"ui_time\", \"type\": \"LONG\", \"desc\": \"How much time did the frame's Choreographer callbacks take.\", \"table\": null, \"column\": null}, {\"name\": \"was_jank\", \"type\": \"BOOL\", \"desc\": \"Was frame janky.\", \"table\": null, \"column\": null}, {\"name\": \"was_slow_frame\", \"type\": \"BOOL\", \"desc\": \"CPU time of the frame took over 20ms.\", \"table\": null, \"column\": null}, {\"name\": \"was_big_jank\", \"type\": \"BOOL\", \"desc\": \"CPU time of the frame took over 50ms.\", \"table\": null, \"column\": null}, {\"name\": \"was_huge_jank\", \"type\": \"BOOL\", \"desc\": \"CPU time of the frame took over 200ms.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.frames.timeline\", \"data_objects\": [{\"name\": \"android_frames_choreographer_do_frame\", \"desc\": \"All of the `Choreographer#doFrame` slices with their frame id.\", \"summary_desc\": \"All of the `Choreographer#doFrame` slices with their frame id.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Choreographer#doFrame slice. Slice with the name \\\"Choreographer#doFrame {frame id}\\\".\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id. Taken as the value behind \\\"Choreographer#doFrame\\\" in slice name.\", \"table\": null, \"column\": null}, {\"name\": \"ui_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the UI thread\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of application process\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the slice.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_frames_draw_frame\", \"desc\": \"All of the `DrawFrame` slices with their frame id and render thread.\\n There might be multiple DrawFrames slices for a single vsync (frame id).\\n This happens when we are drawing multiple layers (e.g. status bar and\\n notifications).\", \"summary_desc\": \"All of the `DrawFrame` slices with their frame id and render thread.  There might be multiple DrawFrames slices for a single vsync (frame id).  This happens when we are drawing multiple layers (e.g\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"DrawFrame slice. Slice with the name \\\"DrawFrame {frame id}\\\".\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id. Taken as the value behind \\\"DrawFrame\\\" in slice name.\", \"table\": null, \"column\": null}, {\"name\": \"render_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the render thread\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of application process\", \"table\": \"process\", \"column\": \"id\"}]}, {\"name\": \"android_frames_layers\", \"desc\": \"TODO(b/384322064) Match actual timeline slice with correct draw frame using layer name.\\n All slices related to one frame. Aggregates `Choreographer#doFrame`,\\n `actual_frame_timeline_slice` and `expected_frame_timeline_slice` slices.\\n This table differs slightly from the android_frames table, as it\\n captures the layer_id for each actual timeline slice too.\", \"summary_desc\": \"TODO(b/384322064) Match actual timeline slice with correct draw frame using layer name.  All slices related to one frame\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the frame. Start of the frame as defined by the start of \\\"Choreographer#doFrame\\\" slice and the same as the start of the frame in `actual_frame_timeline_slice if present.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the frame, as defined by the duration of the corresponding `actual_frame_timeline_slice` or, if not present the time between the `ts` and the end of the final `DrawFrame`.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp of the frame. End of the frame as defined by the sum of start timestamp and duration of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"do_frame_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` of \\\"Choreographer#doFrame\\\" slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"draw_frame_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` of \\\"DrawFrame\\\" slice. For now, we only support the first DrawFrame slice (due to b/384322064).\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"actual_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` from `actual_frame_timeline_slice`\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"expected_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` from `expected_frame_timeline_slice`\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"render_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"`utid` of the render thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"ui_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"thread id of the UI thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"layer_id\", \"type\": \"LONG\", \"desc\": \"layer id associated with the actual frame.\", \"table\": null, \"column\": null}, {\"name\": \"layer_name\", \"type\": \"STRING\", \"desc\": \"layer name associated with the actual frame.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"process id.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_frames\", \"desc\": \"Table based on the android_frames_layers table. It aggregates time, duration and counts\\n information across different layers for a given frame_id in a given process.\", \"summary_desc\": \"Table based on the android_frames_layers table\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the frame. Start of the frame as defined by the start of \\\"Choreographer#doFrame\\\" slice and the same as the start of the frame in `actual_frame_timeline_slice if present.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the frame, as defined by the duration of the corresponding `actual_frame_timeline_slice` or, if not present the time between the `ts` and the end of the final `DrawFrame`.\", \"table\": null, \"column\": null}, {\"name\": \"do_frame_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` of \\\"Choreographer#doFrame\\\" slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"draw_frame_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` of \\\"DrawFrame\\\" slice. For now, we only support the first DrawFrame slice (due to b/384322064).\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"actual_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` from `actual_frame_timeline_slice`\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"expected_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"`slice.id` from `expected_frame_timeline_slice`\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"render_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"`utid` of the render thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"ui_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"thread id of the UI thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"actual_frame_timeline_count\", \"type\": \"LONG\", \"desc\": \"Count of slices in `actual_frame_timeline_slice` related to this frame.\", \"table\": null, \"column\": null}, {\"name\": \"expected_frame_timeline_count\", \"type\": \"LONG\", \"desc\": \"Count of slices in `expected_frame_timeline_slice` related to this frame.\", \"table\": null, \"column\": null}, {\"name\": \"draw_frame_count\", \"type\": \"LONG\", \"desc\": \"Count of draw_frame associated to this frame.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"process id.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"android_first_frame_after\", \"desc\": \"Returns first frame after the provided timestamp. The returning table has at\\n most one row.\", \"summary_desc\": \"Returns first frame after the provided timestamp\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Frame id.\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Start of the frame, the timestamp of the \\\"Choreographer#doFrame\\\" slice.\"}, {\"name\": \"dur\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Duration of the frame.\"}, {\"name\": \"do_frame_id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"\\\"Choreographer#doFrame\\\" slice. The slice with name \\\"Choreographer#doFrame\\\" corresponding to this frame.\"}, {\"name\": \"draw_frame_id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"\\\"DrawFrame\\\" slice. The slice with name \\\"DrawFrame\\\" corresponding to this frame.\"}, {\"name\": \"actual_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"actual_frame_timeline_slice` slice related to this frame.\"}, {\"name\": \"expected_frame_timeline_id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"`expected_frame_timeline_slice` slice related to this frame.\"}, {\"name\": \"render_thread_utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"`utid` of the render thread.\"}, {\"name\": \"ui_thread_utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"`utid` of the UI thread.\"}]}], \"macros\": []}, {\"module_name\": \"android.frames.timeline_maxsdk28\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.freezer\", \"data_objects\": [{\"name\": \"android_freezer_events\", \"desc\": \"All frozen processes and their frozen duration.\", \"summary_desc\": \"All frozen processes and their frozen duration.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of frozen process\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of frozen process\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp process was frozen.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration process was frozen for.\", \"table\": null, \"column\": null}, {\"name\": \"unfreeze_reason_int\", \"type\": \"LONG\", \"desc\": \"Unfreeze reason Integer.\", \"table\": null, \"column\": null}, {\"name\": \"unfreeze_reason_str\", \"type\": \"STRING\", \"desc\": \"Unfreeze reason String.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.garbage_collection\", \"data_objects\": [{\"name\": \"android_garbage_collection_events\", \"desc\": \"All Garbage collection events with a breakdown of the time spent and heap reclaimed.\", \"summary_desc\": \"All Garbage collection events with a breakdown of the time spent and heap reclaimed.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread running garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of process running garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of thread running garbage collection.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process running garbage collection.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of thread running garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of process running garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"gc_type\", \"type\": \"STRING\", \"desc\": \"Type of garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"is_mark_compact\", \"type\": \"LONG\", \"desc\": \"Whether gargage collection is mark compact or copying.\", \"table\": null, \"column\": null}, {\"name\": \"reclaimed_mb\", \"type\": \"DOUBLE\", \"desc\": \"MB reclaimed after garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"min_heap_mb\", \"type\": \"DOUBLE\", \"desc\": \"Minimum heap size in MB during garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"max_heap_mb\", \"type\": \"DOUBLE\", \"desc\": \"Maximum heap size in MB during garbage collection.\", \"table\": null, \"column\": null}, {\"name\": \"gc_id\", \"type\": \"LONG\", \"desc\": \"Garbage collection id.\", \"table\": null, \"column\": null}, {\"name\": \"gc_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Garbage collection timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"gc_dur\", \"type\": \"DURATION\", \"desc\": \"Garbage collection wall duration.\", \"table\": null, \"column\": null}, {\"name\": \"gc_running_dur\", \"type\": \"DURATION\", \"desc\": \"Garbage collection duration spent executing on CPU.\", \"table\": null, \"column\": null}, {\"name\": \"gc_runnable_dur\", \"type\": \"DURATION\", \"desc\": \"Garbage collection duration spent waiting for CPU.\", \"table\": null, \"column\": null}, {\"name\": \"gc_unint_io_dur\", \"type\": \"DURATION\", \"desc\": \"Garbage collection duration spent waiting in the Linux kernel on IO.\", \"table\": null, \"column\": null}, {\"name\": \"gc_unint_non_io_dur\", \"type\": \"DURATION\", \"desc\": \"Garbage collection duration spent waiting in the Linux kernel without IO.\", \"table\": null, \"column\": null}, {\"name\": \"gc_int_dur\", \"type\": \"LONG\", \"desc\": \"Garbage collection duration spent waiting in interruptible sleep.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.gpu.frequency\", \"data_objects\": [{\"name\": \"android_gpu_frequency\", \"desc\": \"GPU frequency counter per GPU.\", \"summary_desc\": \"GPU frequency counter per GPU.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"gpu_id\", \"type\": \"LONG\", \"desc\": \"GPU id. Joinable with `gpu_counter_track.gpu_id`.\", \"table\": null, \"column\": null}, {\"name\": \"gpu_freq\", \"type\": \"LONG\", \"desc\": \"GPU frequency\", \"table\": null, \"column\": null}, {\"name\": \"prev_gpu_freq\", \"type\": \"LONG\", \"desc\": \"GPU frequency from previous slice\", \"table\": null, \"column\": null}, {\"name\": \"next_gpu_freq\", \"type\": \"LONG\", \"desc\": \"GPU frequency from next slice\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.gpu.mali_power_state\", \"data_objects\": [{\"name\": \"android_mali_gpu_power_state\", \"desc\": \"GPU power state which is analogous to CPU idle state\", \"summary_desc\": \"GPU power state which is analogous to CPU idle state\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"power_state\", \"type\": \"LONG\", \"desc\": \"GPU power state\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.gpu.memory\", \"data_objects\": [{\"name\": \"android_gpu_memory_per_process\", \"desc\": \"Counter for GPU memory per process with duration.\", \"summary_desc\": \"Counter for GPU memory per process with duration.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"gpu_memory\", \"type\": \"LONG\", \"desc\": \"GPU memory\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.gpu.work_period\", \"data_objects\": [{\"name\": \"android_gpu_work_period_track\", \"desc\": \"Tracks for GPU work period events originating from the\\n `power/gpu_work_period` Linux ftrace tracepoint.\\n\\n This tracepoint is usually only available on selected Android devices.\", \"summary_desc\": \"Tracks for GPU work period events originating from the  `power/gpu_work_period` Linux ftrace tracepoint.   This tracepoint is usually only available on selected Android devices.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique identifier for this track. Joinable with track.id.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"The UID of the package for which the GPU work period events were emitted.\", \"table\": null, \"column\": null}, {\"name\": \"gpu_id\", \"type\": \"LONG\", \"desc\": \"The GPU identifier for which the GPU work period events were emitted.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.input\", \"data_objects\": [{\"name\": \"android_input_events\", \"desc\": \"All input events with round trip latency breakdown. Input delivery is socket based and every\\n input event sent from the OS needs to be ACK'ed by the app. This gives us 4 subevents to measure\\n latencies between:\\n 1. Input dispatch event sent from OS.\\n 2. Input dispatch event received in app.\\n 3. Input ACK event sent from app.\\n 4. Input ACk event received in OS.\", \"summary_desc\": \"All input events with round trip latency breakdown\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"dispatch_latency_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input dispatch to input received.\", \"table\": null, \"column\": null}, {\"name\": \"handling_latency_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input received to input ACK sent.\", \"table\": null, \"column\": null}, {\"name\": \"ack_latency_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input ACK sent to input ACK received.\", \"table\": null, \"column\": null}, {\"name\": \"total_latency_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input dispatch to input event ACK received.\", \"table\": null, \"column\": null}, {\"name\": \"end_to_end_latency_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input read to frame present time. Null if an input event has no associated frame event.\", \"table\": null, \"column\": null}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread receiving the input event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of thread receiving the input event.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of process receiving the input event.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of process receiving the input event.\", \"table\": null, \"column\": null}, {\"name\": \"event_type\", \"type\": \"STRING\", \"desc\": \"Input event type. See InputTransport.h: InputMessage#Type\", \"table\": null, \"column\": null}, {\"name\": \"event_action\", \"type\": \"STRING\", \"desc\": \"Input event action.\", \"table\": null, \"column\": null}, {\"name\": \"event_seq\", \"type\": \"STRING\", \"desc\": \"Input event sequence number, monotonically increasing for an event channel and pid.\", \"table\": null, \"column\": null}, {\"name\": \"event_channel\", \"type\": \"STRING\", \"desc\": \"Input event channel name.\", \"table\": null, \"column\": null}, {\"name\": \"input_event_id\", \"type\": \"STRING\", \"desc\": \"Unique identifier for the input event.\", \"table\": null, \"column\": null}, {\"name\": \"read_time\", \"type\": \"LONG\", \"desc\": \"Timestamp input event was read by InputReader.\", \"table\": null, \"column\": null}, {\"name\": \"dispatch_track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Thread track id of input event dispatching thread.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"dispatch_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp input event was dispatched.\", \"table\": null, \"column\": null}, {\"name\": \"dispatch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of input event dispatch.\", \"table\": null, \"column\": null}, {\"name\": \"receive_track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Thread track id of input event receiving thread.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"receive_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp input event was received.\", \"table\": null, \"column\": null}, {\"name\": \"receive_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of input event receipt.\", \"table\": null, \"column\": null}, {\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Vsync Id associated with the input. Null if an input event has no associated frame event.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_key_events\", \"desc\": \"Key events processed by the Android framework (from android.input.inputevent data source).\", \"summary_desc\": \"Key events processed by the Android framework (from android.input.inputevent data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the trace entry\", \"table\": null, \"column\": null}, {\"name\": \"event_id\", \"type\": \"LONG\", \"desc\": \"The randomly-generated ID associated with each input event processed by Android Framework, used to track the event through the input pipeline\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of when the input event was processed by the system\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Details of the input event parsed from the proto message\", \"table\": null, \"column\": null}, {\"name\": \"source\", \"type\": \"LONG\", \"desc\": \"Event source e.g. touchscreen, keyboard\", \"table\": null, \"column\": null}, {\"name\": \"action\", \"type\": \"LONG\", \"desc\": \"Action e.g. down, move\", \"table\": null, \"column\": null}, {\"name\": \"device_id\", \"type\": \"LONG\", \"desc\": \"Device id\", \"table\": null, \"column\": null}, {\"name\": \"display_id\", \"type\": \"LONG\", \"desc\": \"Display id\", \"table\": null, \"column\": null}, {\"name\": \"key_code\", \"type\": \"LONG\", \"desc\": \"Key code\", \"table\": null, \"column\": null}]}, {\"name\": \"android_motion_events\", \"desc\": \"Motion events processed by the Android framework (from android.input.inputevent data source).\", \"summary_desc\": \"Motion events processed by the Android framework (from android.input.inputevent data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the trace entry\", \"table\": null, \"column\": null}, {\"name\": \"event_id\", \"type\": \"LONG\", \"desc\": \"The randomly-generated ID associated with each input event processed by Android Framework, used to track the event through the input pipeline\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of when the input event was processed by the system\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Details of the input event parsed from the proto message\", \"table\": null, \"column\": null}, {\"name\": \"source\", \"type\": \"LONG\", \"desc\": \"Event source e.g. touchscreen, keyboard\", \"table\": null, \"column\": null}, {\"name\": \"action\", \"type\": \"LONG\", \"desc\": \"Action e.g. down, move\", \"table\": null, \"column\": null}, {\"name\": \"device_id\", \"type\": \"LONG\", \"desc\": \"Device id\", \"table\": null, \"column\": null}, {\"name\": \"display_id\", \"type\": \"LONG\", \"desc\": \"Display id\", \"table\": null, \"column\": null}]}, {\"name\": \"android_input_event_dispatch\", \"desc\": \"Input event dispatching information in Android (from android.input.inputevent data source).\", \"summary_desc\": \"Input event dispatching information in Android (from android.input.inputevent data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the trace entry\", \"table\": null, \"column\": null}, {\"name\": \"event_id\", \"type\": \"LONG\", \"desc\": \"Event ID of the input event that was dispatched\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Details of the input event parsed from the proto message\", \"table\": null, \"column\": null}, {\"name\": \"vsync_id\", \"type\": \"LONG\", \"desc\": \"Vsync ID that identifies the state of the windows during which the dispatch decision was made\", \"table\": null, \"column\": null}, {\"name\": \"window_id\", \"type\": \"LONG\", \"desc\": \"Window ID of the window receiving the event\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.io\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.job_scheduler\", \"data_objects\": [{\"name\": \"android_job_scheduler_events\", \"desc\": \"All scheduled jobs and their latencies.\\n\\n The table is populated by ATrace using the system server ATrace category\\n (`atrace_categories: \\\"ss\\\"`). You can also set the `atrace_apps` of interest.\\n\\n This differs from the `android_job_scheduler_states` table\\n in the `android.job_scheduler_states` module which is populated\\n by the `ScheduledJobStateChanged` atom.\\n\\n Using `android_job_scheduler_states` is preferred when the\\n `ATOM_SCHEDULED_JOB_STATE_CHANGED` is available in the trace since\\n it includes the constraint, screen, or charging state changes for\\n each job in a trace.\", \"summary_desc\": \"All scheduled jobs and their latencies.   The table is populated by ATrace using the system server ATrace category  (`atrace_categories: \\\"ss\\\"`)\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"job_id\", \"type\": \"LONG\", \"desc\": \"Id of the scheduled job assigned by the app developer.\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"Uid of the process running the scheduled job.\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"Package name of the process running the scheduled job.\", \"table\": null, \"column\": null}, {\"name\": \"job_service_name\", \"type\": \"STRING\", \"desc\": \"Service component name of the scheduled job.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Thread track id of the job scheduler event slice.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of the job scheduler event slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the job was scheduled.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the scheduled job.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.job_scheduler_states\", \"data_objects\": [{\"name\": \"android_job_scheduler_states\", \"desc\": \"This table returns constraint changes that a\\n job will go through in a single trace.\\n\\n Values in this table are derived from the the `ScheduledJobStateChanged`\\n atom. This table differs from the\\n `android_job_scheduler_with_screen_charging_states` in this module\\n (`android.job_scheduler_states`) by only having job constraint information.\\n\\n See documentation for the `android_job_scheduler_with_screen_charging_states`\\n for how tables in this module differ from `android_job_scheduler_events`\\n table in the `android.job_scheduler` module and how to populate this table.\", \"summary_desc\": \"This table returns constraint changes that a  job will go through in a single trace.   Values in this table are derived from the the `ScheduledJobStateChanged`  atom\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for job scheduler state.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of job state slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of job state slice.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"job_name\", \"type\": \"STRING\", \"desc\": \"Name of the job (as named by the app).\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"Uid associated with job.\", \"table\": null, \"column\": null}, {\"name\": \"job_id\", \"type\": \"LONG\", \"desc\": \"Id of job (assigned by app for T- builds and system generated in U+ builds).\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"Package that the job belongs (ex: associated app).\", \"table\": null, \"column\": null}, {\"name\": \"job_namespace\", \"type\": \"STRING\", \"desc\": \"Namespace of job.\", \"table\": null, \"column\": null}, {\"name\": \"effective_priority\", \"type\": \"LONG\", \"desc\": \"Priority at which JobScheduler ran the job.\", \"table\": null, \"column\": null}, {\"name\": \"has_battery_not_low_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when the device battery is not low.\", \"table\": null, \"column\": null}, {\"name\": \"has_charging_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when the device is charging.\", \"table\": null, \"column\": null}, {\"name\": \"has_connectivity_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device has connectivity.\", \"table\": null, \"column\": null}, {\"name\": \"has_content_trigger_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when there is a content trigger.\", \"table\": null, \"column\": null}, {\"name\": \"has_deadline_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested there is a deadline by which the job should run.\", \"table\": null, \"column\": null}, {\"name\": \"has_idle_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device is idle.\", \"table\": null, \"column\": null}, {\"name\": \"has_storage_not_low_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device storage is not low.\", \"table\": null, \"column\": null}, {\"name\": \"has_timing_delay_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job has a timing delay.\", \"table\": null, \"column\": null}, {\"name\": \"is_prefetch\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run within hours of app launch.\", \"table\": null, \"column\": null}, {\"name\": \"is_requested_expedited_job\", \"type\": \"BOOL\", \"desc\": \"True if app requested that the job is run as an expedited job.\", \"table\": null, \"column\": null}, {\"name\": \"is_running_as_expedited_job\", \"type\": \"BOOL\", \"desc\": \"The job is run as an expedited job.\", \"table\": null, \"column\": null}, {\"name\": \"num_previous_attempts\", \"type\": \"TIMESTAMP\", \"desc\": \"Number of previous attempts at running job.\", \"table\": null, \"column\": null}, {\"name\": \"requested_priority\", \"type\": \"LONG\", \"desc\": \"The requested priority at which the job should run.\", \"table\": null, \"column\": null}, {\"name\": \"standby_bucket\", \"type\": \"STRING\", \"desc\": \"The job's standby bucket (one of: Active, Working Set, Frequent, Rare, Never, Restricted, Exempt).\", \"table\": null, \"column\": null}, {\"name\": \"is_periodic\", \"type\": \"BOOL\", \"desc\": \"Job should run in intervals.\", \"table\": null, \"column\": null}, {\"name\": \"has_flex_constraint\", \"type\": \"BOOL\", \"desc\": \"True if the job should run as a flex job.\", \"table\": null, \"column\": null}, {\"name\": \"is_requested_as_user_initiated_job\", \"type\": \"BOOL\", \"desc\": \"True is app has requested that a job be run as a user initiated job.\", \"table\": null, \"column\": null}, {\"name\": \"is_running_as_user_initiated_job\", \"type\": \"BOOL\", \"desc\": \"True if job is running as a user initiated job.\", \"table\": null, \"column\": null}, {\"name\": \"deadline_ms\", \"type\": \"LONG\", \"desc\": \"Deadline that job has requested and valid if has_deadline_constraint is true.\", \"table\": null, \"column\": null}, {\"name\": \"job_start_latency_ms\", \"type\": \"LONG\", \"desc\": \"The latency in ms between when a job is scheduled and when it actually starts.\", \"table\": null, \"column\": null}, {\"name\": \"num_uncompleted_work_items\", \"type\": \"LONG\", \"desc\": \"Number of uncompleted job work items.\", \"table\": null, \"column\": null}, {\"name\": \"proc_state\", \"type\": \"STRING\", \"desc\": \"Process state of the process responsible for running the job.\", \"table\": null, \"column\": null}, {\"name\": \"internal_stop_reason\", \"type\": \"STRING\", \"desc\": \"Internal stop reason for a job.\", \"table\": null, \"column\": null}, {\"name\": \"public_stop_reason\", \"type\": \"STRING\", \"desc\": \"Public stop reason for a job.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_job_scheduler_with_screen_charging_states\", \"desc\": \"This table returns the constraint, charging,\\n and screen state changes that a job will go through\\n in a single trace.\\n\\n Values from this table are derived from\\n the `ScheduledJobStateChanged` atom. This differs from the\\n `android_job_scheduler_events` table in the `android.job_scheduler` module\\n which is derived from ATrace the system server category\\n (`atrace_categories: \\\"ss\\\"`).\\n\\n This also differs from the `android_job_scheduler_states` in this module\\n (`android.job_scheduler_states`) by providing charging and screen state\\n changes.\\n\\n To populate this table, enable the Statsd Tracing Config with the\\n ATOM_SCHEDULED_JOB_STATE_CHANGED push atom id.\\n https://perfetto.dev/docs/reference/trace-config-proto#StatsdTracingConfig\\n\\n This table is preferred over `android_job_scheduler_events`\\n since it contains more information and should be used whenever\\n `ATOM_SCHEDULED_JOB_STATE_CHANGED` is available in a trace.\", \"summary_desc\": \"This table returns the constraint, charging,  and screen state changes that a job will go through  in a single trace.   Values from this table are derived from  the `ScheduledJobStateChanged` atom\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of job.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of slice in ns.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"job_name\", \"type\": \"STRING\", \"desc\": \"Name of the job (as named by the app).\", \"table\": null, \"column\": null}, {\"name\": \"job_id\", \"type\": \"LONG\", \"desc\": \"Id of job (assigned by app for T- builds and system generated in U+ builds).\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"Uid associated with job.\", \"table\": null, \"column\": null}, {\"name\": \"job_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of entire job in ns.\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"Package that the job belongs (ex: associated app).\", \"table\": null, \"column\": null}, {\"name\": \"job_namespace\", \"type\": \"STRING\", \"desc\": \"Namespace of job.\", \"table\": null, \"column\": null}, {\"name\": \"charging_state\", \"type\": \"STRING\", \"desc\": \"Device charging state during job (one of: Charging, Discharging, Not charging, Full, Unknown).\", \"table\": null, \"column\": null}, {\"name\": \"screen_state\", \"type\": \"STRING\", \"desc\": \"Device screen state during job (one of: Screen off, Screen on, Always-on display (doze), Unknown).\", \"table\": null, \"column\": null}, {\"name\": \"effective_priority\", \"type\": \"LONG\", \"desc\": \"Priority at which JobScheduler ran the job.\", \"table\": null, \"column\": null}, {\"name\": \"has_battery_not_low_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when the device battery is not low.\", \"table\": null, \"column\": null}, {\"name\": \"has_charging_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when the device is charging.\", \"table\": null, \"column\": null}, {\"name\": \"has_connectivity_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device has connectivity.\", \"table\": null, \"column\": null}, {\"name\": \"has_content_trigger_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when there is a content trigger.\", \"table\": null, \"column\": null}, {\"name\": \"has_deadline_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested there is a deadline by which the job should run.\", \"table\": null, \"column\": null}, {\"name\": \"has_idle_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device is idle.\", \"table\": null, \"column\": null}, {\"name\": \"has_storage_not_low_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run when device storage is not low.\", \"table\": null, \"column\": null}, {\"name\": \"has_timing_delay_constraint\", \"type\": \"BOOL\", \"desc\": \"True if app requested job has a timing delay.\", \"table\": null, \"column\": null}, {\"name\": \"is_prefetch\", \"type\": \"BOOL\", \"desc\": \"True if app requested job should run within hours of app launch.\", \"table\": null, \"column\": null}, {\"name\": \"is_requested_expedited_job\", \"type\": \"BOOL\", \"desc\": \"True if app requested that the job is run as an expedited job.\", \"table\": null, \"column\": null}, {\"name\": \"is_running_as_expedited_job\", \"type\": \"BOOL\", \"desc\": \"The job is run as an expedited job.\", \"table\": null, \"column\": null}, {\"name\": \"num_previous_attempts\", \"type\": \"TIMESTAMP\", \"desc\": \"Number of previous attempts at running job.\", \"table\": null, \"column\": null}, {\"name\": \"requested_priority\", \"type\": \"LONG\", \"desc\": \"The requested priority at which the job should run.\", \"table\": null, \"column\": null}, {\"name\": \"standby_bucket\", \"type\": \"STRING\", \"desc\": \"The job's standby bucket (one of: Active, Working Set, Frequent, Rare, Never, Restricted, Exempt).\", \"table\": null, \"column\": null}, {\"name\": \"is_periodic\", \"type\": \"BOOL\", \"desc\": \"Job should run in intervals.\", \"table\": null, \"column\": null}, {\"name\": \"has_flex_constraint\", \"type\": \"BOOL\", \"desc\": \"True if the job should run as a flex job.\", \"table\": null, \"column\": null}, {\"name\": \"is_requested_as_user_initiated_job\", \"type\": \"BOOL\", \"desc\": \"True is app has requested that a job be run as a user initiated job.\", \"table\": null, \"column\": null}, {\"name\": \"is_running_as_user_initiated_job\", \"type\": \"BOOL\", \"desc\": \"True if job is running as a user initiated job.\", \"table\": null, \"column\": null}, {\"name\": \"deadline_ms\", \"type\": \"LONG\", \"desc\": \"Deadline that job has requested and valid if has_deadline_constraint is true.\", \"table\": null, \"column\": null}, {\"name\": \"job_start_latency_ms\", \"type\": \"LONG\", \"desc\": \"The latency in ms between when a job is scheduled and when it actually starts.\", \"table\": null, \"column\": null}, {\"name\": \"num_uncompleted_work_items\", \"type\": \"LONG\", \"desc\": \"Number of uncompleted job work items.\", \"table\": null, \"column\": null}, {\"name\": \"proc_state\", \"type\": \"STRING\", \"desc\": \"Process state of the process responsible for running the job.\", \"table\": null, \"column\": null}, {\"name\": \"internal_stop_reason\", \"type\": \"STRING\", \"desc\": \"Internal stop reason for a job.\", \"table\": null, \"column\": null}, {\"name\": \"public_stop_reason\", \"type\": \"STRING\", \"desc\": \"Public stop reason for a job.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.kernel_wakelocks\", \"data_objects\": [{\"name\": \"android_kernel_wakelocks\", \"desc\": \"Table of kernel (or native) wakelocks with held duration.\\n\\n Subtracts suspended time from each period to calculate the\\n fraction of awake time for which the wakelock was held.\", \"summary_desc\": \"Table of kernel (or native) wakelocks with held duration.   Subtracts suspended time from each period to calculate the  fraction of awake time for which the wakelock was held.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration.\", \"table\": null, \"column\": null}, {\"name\": \"awake_dur\", \"type\": \"DURATION\", \"desc\": \"Duration spent awake.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Kernel or native wakelock name.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"'kernel' or 'native'.\", \"table\": null, \"column\": null}, {\"name\": \"held_dur\", \"type\": \"DURATION\", \"desc\": \"Time the wakelock was held.\", \"table\": null, \"column\": null}, {\"name\": \"held_ratio\", \"type\": \"DOUBLE\", \"desc\": \"Fraction of awake (not suspended) time the wakelock was held.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.dmabuf\", \"data_objects\": [{\"name\": \"android_dmabuf_allocs\", \"desc\": \"Track dmabuf allocations, re-attributing gralloc allocations to their source\\n (if binder transactions to gralloc are recorded).\", \"summary_desc\": \"Track dmabuf allocations, re-attributing gralloc allocations to their source  (if binder transactions to gralloc are recorded).\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"timestamp of the allocation\", \"table\": null, \"column\": null}, {\"name\": \"buf_size\", \"type\": \"LONG\", \"desc\": \"allocation size (will be negative for release)\", \"table\": null, \"column\": null}, {\"name\": \"inode\", \"type\": \"LONG\", \"desc\": \"dmabuf inode\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"utid of thread responsible for the allocation if a dmabuf is allocated by gralloc we follow the binder transaction to the requesting thread (requires binder tracing)\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"tid of thread responsible for the allocation\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"thread name\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"upid of process responsible for the allocation (matches utid)\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"pid of process responsible for the allocation\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name\", \"table\": null, \"column\": null}]}, {\"name\": \"android_memory_cumulative_dmabuf\", \"desc\": \"Provides a timeseries of dmabuf allocations for each process.\\n To populate this table, tracing must be enabled with the \\\"dmabuf_allocs\\\" ftrace event.\", \"summary_desc\": \"Provides a timeseries of dmabuf allocations for each process.  To populate this table, tracing must be enabled with the \\\"dmabuf_allocs\\\" ftrace event.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"upid of process responsible for the allocation (matches utid)\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"utid of thread responsible for the allocation if a dmabuf is allocated by gralloc we follow the binder transaction to the requesting thread (requires binder tracing)\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"thread name\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"timestamp of the allocation\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"total allocation size per process and thread\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.class_relationship\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"android_heap_graph_class_find_descendants\", \"desc\": \"Given a list of classes as ancestor classes, return all the classes that\\n descend from them.\", \"summary_desc\": \"Given a list of classes as ancestor classes, return all the classes that  descend from them.\", \"return_desc\": \"Table of the schema (id JOINID(heap_graph_class.id), ancestor_class_id JOINID(heap_graph_class.id), ancestor_class_name STRING) id: `id` of the class as in heap_graph_class ancestor_class_id: `id` of the ancestor class as given in the input ancestor_class_name: `name` of the ancestor class as in heap_graph_class\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"ancestor_class_ids\", \"type\": \"TableOrSubquery\", \"desc\": \"ancestor class `id`s from the heap_graph_class table containing a single column: `id`\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"android.memory.heap_graph.class_summary_tree\", \"data_objects\": [{\"name\": \"android_heap_graph_class_summary_tree\", \"desc\": \"Table containing all the Android heap graphs in the trace converted to a\\n shortest-path tree and then aggregated by class name.\\n\\n This table contains a \\\"flamegraph-like\\\" representation of the contents of the\\n heap graph.\", \"summary_desc\": \"Table containing all the Android heap graphs in the trace converted to a  shortest-path tree and then aggregated by class name.   This table contains a \\\"flamegraph-like\\\" representation of the contents of the  heap graph.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"graph_sample_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp the heap graph was dumped at.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"The upid of the process.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the node in the class tree.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The parent id of the node in the class tree or NULL if this is the root.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the class.\", \"table\": null, \"column\": null}, {\"name\": \"root_type\", \"type\": \"STRING\", \"desc\": \"A string describing the type of Java root if this node is a root or NULL if this node is not a root.\", \"table\": null, \"column\": null}, {\"name\": \"self_count\", \"type\": \"LONG\", \"desc\": \"The count of objects with the same class name and the same path to the root.\", \"table\": null, \"column\": null}, {\"name\": \"self_size\", \"type\": \"LONG\", \"desc\": \"The size of objects with the same class name and the same path to the root.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_count\", \"type\": \"LONG\", \"desc\": \"The sum of `self_count` of this node and all descendants of this node.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_size\", \"type\": \"LONG\", \"desc\": \"The sum of `self_size` of this node and all descendants of this node.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.class_tree\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.dominator_class_tree\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.dominator_tree\", \"data_objects\": [{\"name\": \"heap_graph_dominator_tree\", \"desc\": \"All reachable heap graph objects, their immediate dominators and summary of\\n their dominated sets.\\n The heap graph dominator tree is calculated by stdlib graphs.dominator_tree.\\n Each reachable object is a node in the dominator tree, their immediate\\n dominator is their parent node in the tree, and their dominated set is all\\n their descendants in the tree. All size information come from the\\n heap_graph_object prelude table.\", \"summary_desc\": \"All reachable heap graph objects, their immediate dominators and summary of  their dominated sets.  The heap graph dominator tree is calculated by stdlib graphs.dominator_tree.  Each reachable object is a node in the dominator tree, their immediate  dominator is their parent node in the tree, and their dominated set is all  their descendants in the tree\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Heap graph object id.\", \"table\": null, \"column\": null}, {\"name\": \"idom_id\", \"type\": \"LONG\", \"desc\": \"Immediate dominator object id of the object. If the immediate dominator is the \\\"super-root\\\" (i.e. the object is a root or is dominated by multiple roots) then `idom_id` will be NULL.\", \"table\": null, \"column\": null}, {\"name\": \"dominated_obj_count\", \"type\": \"LONG\", \"desc\": \"Count of all objects dominated by this object, self inclusive.\", \"table\": null, \"column\": null}, {\"name\": \"dominated_size_bytes\", \"type\": \"LONG\", \"desc\": \"Total self_size of all objects dominated by this object, self inclusive.\", \"table\": null, \"column\": null}, {\"name\": \"dominated_native_size_bytes\", \"type\": \"LONG\", \"desc\": \"Total native_size of all objects dominated by this object, self inclusive.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Depth of the object in the dominator tree. Depth of root objects are 1.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.excluded_refs\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.heap_graph_class_aggregation\", \"data_objects\": [{\"name\": \"android_heap_graph_class_aggregation\", \"desc\": \"Class-level breakdown of the java heap.\\n Per type name aggregates the object stats and the dominator tree stats.\", \"summary_desc\": \"Class-level breakdown of the java heap.  Per type name aggregates the object stats and the dominator tree stats.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Process upid\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"graph_sample_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Heap dump timestamp\", \"table\": null, \"column\": null}, {\"name\": \"type_id\", \"type\": \"LONG\", \"desc\": \"Class type id\", \"table\": null, \"column\": null}, {\"name\": \"type_name\", \"type\": \"STRING\", \"desc\": \"Class name (deobfuscated if available)\", \"table\": null, \"column\": null}, {\"name\": \"is_libcore_or_array\", \"type\": \"BOOL\", \"desc\": \"Is type an instance of a libcore object (java.*) or array\", \"table\": null, \"column\": null}, {\"name\": \"obj_count\", \"type\": \"LONG\", \"desc\": \"Count of class instances\", \"table\": null, \"column\": null}, {\"name\": \"size_bytes\", \"type\": \"LONG\", \"desc\": \"Size of class instances\", \"table\": null, \"column\": null}, {\"name\": \"native_size_bytes\", \"type\": \"LONG\", \"desc\": \"Native size of class instances\", \"table\": null, \"column\": null}, {\"name\": \"reachable_obj_count\", \"type\": \"LONG\", \"desc\": \"Count of reachable class instances\", \"table\": null, \"column\": null}, {\"name\": \"reachable_size_bytes\", \"type\": \"LONG\", \"desc\": \"Size of reachable class instances\", \"table\": null, \"column\": null}, {\"name\": \"reachable_native_size_bytes\", \"type\": \"LONG\", \"desc\": \"Native size of reachable class instances\", \"table\": null, \"column\": null}, {\"name\": \"dominated_obj_count\", \"type\": \"LONG\", \"desc\": \"Count of all objects dominated by instances of this class Only applies to reachable objects\", \"table\": null, \"column\": null}, {\"name\": \"dominated_size_bytes\", \"type\": \"LONG\", \"desc\": \"Size of all objects dominated by instances of this class Only applies to reachable objects\", \"table\": null, \"column\": null}, {\"name\": \"dominated_native_size_bytes\", \"type\": \"LONG\", \"desc\": \"Native size of all objects dominated by instances of this class Only applies to reachable objects\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.helpers\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_graph.raw_dominator_tree\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_profile.callstacks\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.heap_profile.summary_tree\", \"data_objects\": [{\"name\": \"android_heap_profile_summary_tree\", \"desc\": \"Table summarising the amount of memory allocated by each\\n callstack as seen by Android native heap profiling (i.e.\\n profiling information collected by heapprofd).\\n\\n Note: this table collapses data from all processes together\\n into a single table.\", \"summary_desc\": \"Table summarising the amount of memory allocated by each  callstack as seen by Android native heap profiling (i.e.  profiling information collected by heapprofd).   Note: this table collapses data from all processes together  into a single table.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the callstack. A callstack in this context is a unique set of frames up to the root.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The id of the parent callstack for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The function name of the frame for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"mapping_name\", \"type\": \"STRING\", \"desc\": \"The name of the mapping containing the frame. This can be a native binary, library, JAR or APK.\", \"table\": null, \"column\": null}, {\"name\": \"source_file\", \"type\": \"STRING\", \"desc\": \"The name of the file containing the function.\", \"table\": null, \"column\": null}, {\"name\": \"line_number\", \"type\": \"LONG\", \"desc\": \"The line number in the file the function is located at.\", \"table\": null, \"column\": null}, {\"name\": \"self_size\", \"type\": \"LONG\", \"desc\": \"The amount of memory allocated and *not freed* with this function as the leaf frame.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_size\", \"type\": \"LONG\", \"desc\": \"The amount of memory allocated and *not freed* with this function appearing anywhere on the callstack.\", \"table\": null, \"column\": null}, {\"name\": \"self_alloc_size\", \"type\": \"LONG\", \"desc\": \"The amount of memory allocated with this function as the leaf frame. This may include memory which was later freed.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_alloc_size\", \"type\": \"LONG\", \"desc\": \"The amount of memory allocated with this function appearing anywhere on the callstack. This may include memory which was later freed.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.lmk\", \"data_objects\": [{\"name\": \"android_lmk_events\", \"desc\": \"Android Low-Memory Kill (LMK) events\", \"summary_desc\": \"Android Low-Memory Kill (LMK) events\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"timestamp of the kill being requested by lmkd\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"upid of the process being killed\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"pid of the process being killed\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"process name of the process being killed\", \"table\": null, \"column\": null}, {\"name\": \"oom_score_adj\", \"type\": \"LONG\", \"desc\": \"oom_score_adj of the process being killed\", \"table\": null, \"column\": null}, {\"name\": \"kill_reason\", \"type\": \"STRING\", \"desc\": \"lmkd kill_reason (matches lmkd/statslog.h kill_reasons enum)\", \"table\": null, \"column\": null}, {\"name\": \"kill_reason_raw\", \"type\": \"LONG\", \"desc\": \"lmkd kill_reason enum value\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.memory.process\", \"data_objects\": [{\"name\": \"memory_oom_score_with_rss_and_swap_per_process\", \"desc\": \"Process memory and it's OOM adjuster scores. Detects transitions, each new\\n interval means that either the memory or OOM adjuster score of the process changed.\", \"summary_desc\": \"Process memory and it's OOM adjuster scores\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the oom_adj score or memory of the process changed\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration until the next oom_adj score or memory change of the process.\", \"table\": null, \"column\": null}, {\"name\": \"score\", \"type\": \"LONG\", \"desc\": \"oom adjuster score of the process.\", \"table\": null, \"column\": null}, {\"name\": \"bucket\", \"type\": \"STRING\", \"desc\": \"oom adjuster bucket of the process.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process having an oom_adj update.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process having an oom_adj update.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of the process having an oom_adj update.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice of the latest oom_adj update in the system_server.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"oom_adj_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track of the latest oom_adj update in the system_server. Alias of `track.id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"oom_adj_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_reason\", \"type\": \"STRING\", \"desc\": \"Reason for the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_trigger\", \"type\": \"STRING\", \"desc\": \"Trigger for the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"anon_rss\", \"type\": \"LONG\", \"desc\": \"Anon RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"file_rss\", \"type\": \"LONG\", \"desc\": \"File RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"shmem_rss\", \"type\": \"LONG\", \"desc\": \"Shared memory RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"rss\", \"type\": \"LONG\", \"desc\": \"Total RSS value. Sum of `anon_rss`, `file_rss` and `shmem_rss`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}, {\"name\": \"swap\", \"type\": \"LONG\", \"desc\": \"Swap counter value\", \"table\": null, \"column\": null}, {\"name\": \"anon_rss_and_swap\", \"type\": \"LONG\", \"desc\": \"Sum or `anon_rss` and `swap`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}, {\"name\": \"rss_and_swap\", \"type\": \"LONG\", \"desc\": \"Sum or `rss` and `swap`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.monitor_contention\", \"data_objects\": [{\"name\": \"android_monitor_contention\", \"desc\": \"Contains parsed monitor contention slices.\", \"summary_desc\": \"Contains parsed monitor contention slices.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"blocking_method\", \"type\": \"STRING\", \"desc\": \"Name of the method holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_method\", \"type\": \"STRING\", \"desc\": \"Blocked_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"short_blocking_method\", \"type\": \"STRING\", \"desc\": \"Blocking_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"short_blocked_method\", \"type\": \"STRING\", \"desc\": \"Blocked_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_src\", \"type\": \"STRING\", \"desc\": \"File location of blocking_method in form <filename:linenumber>.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_src\", \"type\": \"STRING\", \"desc\": \"File location of blocked_method in form <filename:linenumber>.\", \"table\": null, \"column\": null}, {\"name\": \"waiter_count\", \"type\": \"LONG\", \"desc\": \"Zero indexed number of threads trying to acquire the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of thread holding the lock.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"blocked_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of thread holding the lock.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"blocking_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process experiencing lock contention.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Process name of process experiencing lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of lock contention start.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Wall clock duration of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"monotonic_dur\", \"type\": \"DURATION\", \"desc\": \"Monotonic clock duration of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Thread track id of blocked thread.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"is_blocked_thread_main\", \"type\": \"LONG\", \"desc\": \"Whether the blocked thread is the main thread.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_thread_tid\", \"type\": \"LONG\", \"desc\": \"Tid of the blocked thread\", \"table\": null, \"column\": null}, {\"name\": \"is_blocking_thread_main\", \"type\": \"LONG\", \"desc\": \"Whether the blocking thread is the main thread.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_thread_tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_id\", \"type\": \"LONG\", \"desc\": \"Slice id of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_tid\", \"type\": \"LONG\", \"desc\": \"Tid of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of process experiencing lock contention.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_monitor_contention_chain\", \"desc\": \"Contains parsed monitor contention slices with the parent-child relationships.\", \"summary_desc\": \"Contains parsed monitor contention slices with the parent-child relationships.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"Id of monitor contention slice blocking this contention.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_method\", \"type\": \"STRING\", \"desc\": \"Name of the method holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_method\", \"type\": \"STRING\", \"desc\": \"Blocked_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"short_blocking_method\", \"type\": \"STRING\", \"desc\": \"Blocking_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"short_blocked_method\", \"type\": \"STRING\", \"desc\": \"Blocked_method without arguments and return types.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_src\", \"type\": \"STRING\", \"desc\": \"File location of blocking_method in form <filename:linenumber>.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_src\", \"type\": \"STRING\", \"desc\": \"File location of blocked_method in form <filename:linenumber>.\", \"table\": null, \"column\": null}, {\"name\": \"waiter_count\", \"type\": \"LONG\", \"desc\": \"Zero indexed number of threads trying to acquire the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of thread holding the lock.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"blocked_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of thread holding the lock.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"blocking_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process experiencing lock contention.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Process name of process experiencing lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of lock contention start.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Wall clock duration of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"monotonic_dur\", \"type\": \"DURATION\", \"desc\": \"Monotonic clock duration of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Thread track id of blocked thread.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"is_blocked_thread_main\", \"type\": \"LONG\", \"desc\": \"Whether the blocked thread is the main thread.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_thread_tid\", \"type\": \"LONG\", \"desc\": \"Tid of the blocked thread\", \"table\": null, \"column\": null}, {\"name\": \"is_blocking_thread_main\", \"type\": \"LONG\", \"desc\": \"Whether the blocking thread is the main thread.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_thread_tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread holding the lock.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_id\", \"type\": \"LONG\", \"desc\": \"Slice id of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"binder_reply_tid\", \"type\": \"LONG\", \"desc\": \"Tid of binder reply slice if lock contention was part of a binder txn.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of process experiencing lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"child_id\", \"type\": \"LONG\", \"desc\": \"Id of monitor contention slice blocked by this contention.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_monitor_contention_chain_thread_state\", \"desc\": \"Contains the span join of the first waiters in the |android_monitor_contention_chain| with their\\n blocking_thread thread state.\\n\\n Note that we only span join the duration where the lock was actually held and contended.\\n This can be less than the duration the lock was 'waited on' when a different waiter acquired the\\n lock earlier than the first waiter.\", \"summary_desc\": \"Contains the span join of the first waiters in the |android_monitor_contention_chain| with their  blocking_thread thread state.   Note that we only span join the duration where the lock was actually held and contended.  This can be less than the duration the lock was 'waited on' when a different waiter acquired the  lock earlier than the first waiter.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of lock contention start.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Wall clock duration of lock contention.\", \"table\": null, \"column\": null}, {\"name\": \"blocking_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the blocking |thread_state|.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"blocked_function\", \"type\": \"STRING\", \"desc\": \"Blocked kernel function of the blocking thread.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"Thread state of the blocking thread.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_monitor_contention_chain_thread_state_by_txn\", \"desc\": \"Aggregated thread_states on the 'blocking thread', the thread holding the lock.\\n This builds on the data from |android_monitor_contention_chain| and\\n for each contention slice, it returns the aggregated sum of all the thread states on the\\n blocking thread.\\n\\n Note that this data is only available for the first waiter on a lock.\", \"summary_desc\": \"Aggregated thread_states on the 'blocking thread', the thread holding the lock.  This builds on the data from |android_monitor_contention_chain| and  for each contention slice, it returns the aggregated sum of all the thread states on the  blocking thread.   Note that this data is only available for the first waiter on a lock.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of the monitor contention.\", \"table\": null, \"column\": null}, {\"name\": \"thread_state\", \"type\": \"STRING\", \"desc\": \"A |thread_state| that occurred in the blocking thread during the contention.\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_dur\", \"type\": \"DURATION\", \"desc\": \"Total time the blocking thread spent in the |thread_state| during contention.\", \"table\": null, \"column\": null}, {\"name\": \"thread_state_count\", \"type\": \"LONG\", \"desc\": \"Count of all times the blocking thread entered |thread_state| during the contention.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_monitor_contention_chain_blocked_functions_by_txn\", \"desc\": \"Aggregated blocked_functions on the 'blocking thread', the thread holding the lock.\\n This builds on the data from |android_monitor_contention_chain| and\\n for each contention, it returns the aggregated sum of all the kernel\\n blocked function durations on the blocking thread.\\n\\n Note that this data is only available for the first waiter on a lock.\", \"summary_desc\": \"Aggregated blocked_functions on the 'blocking thread', the thread holding the lock.  This builds on the data from |android_monitor_contention_chain| and  for each contention, it returns the aggregated sum of all the kernel  blocked function durations on the blocking thread.   Note that this data is only available for the first waiter on a lock.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id of the monitor contention.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function\", \"type\": \"STRING\", \"desc\": \"Blocked kernel function in a thread state in the blocking thread during the contention.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function_dur\", \"type\": \"DURATION\", \"desc\": \"Total time the blocking thread spent in the |blocked_function| during the contention.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function_count\", \"type\": \"LONG\", \"desc\": \"Count of all times the blocking thread executed the |blocked_function| during the contention.\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"android_extract_android_monitor_contention_blocking_thread\", \"desc\": \"Extracts the blocking thread from a slice name\", \"summary_desc\": \"Extracts the blocking thread from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_blocking_tid\", \"desc\": \"Extracts the blocking thread tid from a slice name\", \"summary_desc\": \"Extracts the blocking thread tid from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Blocking thread tid\"}, {\"name\": \"android_extract_android_monitor_contention_blocking_method\", \"desc\": \"Extracts the blocking method from a slice name\", \"summary_desc\": \"Extracts the blocking method from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_short_blocking_method\", \"desc\": \"Extracts a shortened form of the blocking method name from a slice name.\\n The shortened form discards the parameter and return\\n types.\", \"summary_desc\": \"Extracts a shortened form of the blocking method name from a slice name.  The shortened form discards the parameter and return  types.\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_blocked_method\", \"desc\": \"Extracts the monitor contention blocked method from a slice name\", \"summary_desc\": \"Extracts the monitor contention blocked method from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_short_blocked_method\", \"desc\": \"Extracts a shortened form of the monitor contention blocked method name\\n from a slice name. The shortened form discards the parameter and return\\n types.\", \"summary_desc\": \"Extracts a shortened form of the monitor contention blocked method name  from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_waiter_count\", \"desc\": \"Extracts the number of waiters on the monitor from a slice name\", \"summary_desc\": \"Extracts the number of waiters on the monitor from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Count of waiters on the lock\"}, {\"name\": \"android_extract_android_monitor_contention_blocking_src\", \"desc\": \"Extracts the monitor contention blocking source location from a slice name\", \"summary_desc\": \"Extracts the monitor contention blocking source location from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}, {\"name\": \"android_extract_android_monitor_contention_blocked_src\", \"desc\": \"Extracts the monitor contention blocked source location from a slice name\", \"summary_desc\": \"Extracts the monitor contention blocked source location from a slice name\", \"args\": [{\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Blocking thread\"}], \"table_functions\": [{\"name\": \"android_monitor_contention_graph\", \"desc\": \"Returns a DAG of all Java lock contentions in a process.\\n Each node in the graph is a <thread:Java method> pair.\\n Each edge connects from a node waiting on a lock to a node holding a lock.\\n The weights of each node represent the cumulative wall time the node blocked\\n other nodes connected to it.\", \"summary_desc\": \"Returns a DAG of all Java lock contentions in a process.  Each node in the graph is a <thread:Java method> pair.  Each edge connects from a node waiting on a lock to a node holding a lock.  The weights of each node represent the cumulative wall time the node blocked  other nodes connected to it.\", \"args\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process to generate a lock graph for.\", \"table\": \"process\", \"column\": \"id\"}], \"cols\": [{\"name\": \"pprof\", \"type\": \"BYTES\", \"table\": null, \"column\": null, \"desc\": \"Pprof of lock graph.\"}]}], \"macros\": []}, {\"module_name\": \"android.network_packets\", \"data_objects\": [{\"name\": \"android_network_packets\", \"desc\": \"Android network packet events (from android.network_packets data source).\", \"summary_desc\": \"Android network packet events (from android.network_packets data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Id of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration (non-zero only in aggregate events)\", \"table\": null, \"column\": null}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"The track name (interface and direction)\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"Traffic package source (or uid=$X if not found)\", \"table\": null, \"column\": null}, {\"name\": \"iface\", \"type\": \"STRING\", \"desc\": \"Traffic interface name (linux interface name)\", \"table\": null, \"column\": null}, {\"name\": \"direction\", \"type\": \"STRING\", \"desc\": \"Traffic direction ('Transmitted' or 'Received')\", \"table\": null, \"column\": null}, {\"name\": \"packet_count\", \"type\": \"LONG\", \"desc\": \"Number of packets in this event\", \"table\": null, \"column\": null}, {\"name\": \"packet_length\", \"type\": \"LONG\", \"desc\": \"Number of bytes in this event (wire size)\", \"table\": null, \"column\": null}, {\"name\": \"packet_transport\", \"type\": \"STRING\", \"desc\": \"Transport used for traffic in this event\", \"table\": null, \"column\": null}, {\"name\": \"packet_tcp_flags\", \"type\": \"LONG\", \"desc\": \"TCP flags used by tcp frames in this event\", \"table\": null, \"column\": null}, {\"name\": \"socket_tag\", \"type\": \"STRING\", \"desc\": \"The Android traffic tag of the network socket\", \"table\": null, \"column\": null}, {\"name\": \"socket_uid\", \"type\": \"LONG\", \"desc\": \"The Linux user id of the network socket\", \"table\": null, \"column\": null}, {\"name\": \"local_port\", \"type\": \"LONG\", \"desc\": \"The local port number (for udp or tcp only)\", \"table\": null, \"column\": null}, {\"name\": \"remote_port\", \"type\": \"LONG\", \"desc\": \"The remote port number (for udp or tcp only)\", \"table\": null, \"column\": null}, {\"name\": \"packet_icmp_type\", \"type\": \"LONG\", \"desc\": \"1-byte ICMP type identifier.\", \"table\": null, \"column\": null}, {\"name\": \"packet_icmp_code\", \"type\": \"LONG\", \"desc\": \"1-byte ICMP code identifier.\", \"table\": null, \"column\": null}, {\"name\": \"packet_tcp_flags_int\", \"type\": \"LONG\", \"desc\": \"Packet's tcp flags bitmask (e.g. FIN=0x1, SYN=0x2).\", \"table\": null, \"column\": null}, {\"name\": \"socket_tag_int\", \"type\": \"LONG\", \"desc\": \"Packet's socket tag as an integer.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"android_network_uptime_spans\", \"desc\": \"Computes network uptime spans based on an idle timeout model.\\n\\n It is common in networking to have an interface active for some time after\\n use. For example, mobile networks are often connected for 10 or more seconds\\n after the last packet is sent or received. This macro simulates this timeout\\n and returns spans that approximate the underlying connected regions.\", \"summary_desc\": \"Computes network uptime spans based on an idle timeout model.   It is common in networking to have an interface active for some time after  use\", \"return_desc\": \"\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"src\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery containing the network events to apply the idle timeout model to. The table must contain all partition_columns, ts, dur, packet_count, and packet_length.\", \"table\": null, \"column\": null}, {\"name\": \"partition_columns\", \"type\": \"ColumnNameList\", \"desc\": \"A parenthesized set of columns to partition the analysis by.\", \"table\": null, \"column\": null}, {\"name\": \"timeout\", \"type\": \"Expr\", \"desc\": \"The idle timeout, expressed in nanoseconds.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_network_uptime_cost\", \"desc\": \"Compute the per-row uptime cost of network activity.\\n\\n It is common in networking to have an interface active for some time after\\n use. For example, mobile networks are often connected for 10 or more seconds\\n after the last packet is sent or received. This macro computes a cost factor\\n indicating how much each row impacts the idle timer.\\n\\n For example, assuming a 10s timeout, the first packet will extend the timeout\\n 10s in the future, and be assigned 10s of cost. If a packet arrives 4s later,\\n it pushes the timer an additional 4s, receiving 4s of cost. In this simple\\n case, cost is MIN(ts-last_packet_ts, timeout).\\n\\n The complication is that network events can be aggregates, with more than one\\n packet. In such cases, we end up with a span with non-zero duration, rather\\n than an instant, and no easy way to compute time since the last packet.\\n\\n The solution is to detect overlap regions and compute cost for the region as\\n a whole. The first event in each group receives the standard uptime cost as\\n described above. Each group has an additional cost equal to the duration of\\n the group which is distributed using packet count as weight.\\n\\n For example (times in seconds, no partition, and 10 second timeout):\\n ```\\n ts=5,  dur=0, packet_count=1  -> group=1, uptime_cost=10\\n ts=7,  dur=0, packet_count=1  -> group=2, uptime_cost=2\\n ts=20, dur=5, packet_count=9  -> group=3, uptime_cost=14.5\\n ts=22, dur=0, packet_count=1  -> group=3, uptime_cost=0.5\\n ```\\n The third group spans ts=20 to ts=25, with a timeout at ts=35. This gives the\\n group a total cost of 15 which is distributed between the two rows. The 3rd\\n row receives 10s for being first, and 9/10 the duration cost (5*9/10=4.5).\\n\\n The returned table schema is (id ID, uptime_cost INT64) where uptime cost is\\n in nanoseconds.\", \"summary_desc\": \"Compute the per-row uptime cost of network activity.   It is common in networking to have an interface active for some time after  use\", \"return_desc\": \"\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"src\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery containing the network events to apply the idle timeout model to. The table must contain all partition_columns, id, ts, dur, and packet_count.\", \"table\": null, \"column\": null}, {\"name\": \"partition_columns\", \"type\": \"ColumnNameList\", \"desc\": \"A parenthesized set of columns to partition the analysis by.\", \"table\": null, \"column\": null}, {\"name\": \"timeout\", \"type\": \"Expr\", \"desc\": \"The idle timeout, expressed in nanoseconds.\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"android.oom_adjuster\", \"data_objects\": [{\"name\": \"android_oom_adj_intervals\", \"desc\": \"All oom adj state intervals across all processes along with the reason for the state update.\", \"summary_desc\": \"All oom adj state intervals across all processes along with the reason for the state update.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the oom_adj score of the process changed\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration until the next oom_adj score change of the process.\", \"table\": null, \"column\": null}, {\"name\": \"score\", \"type\": \"LONG\", \"desc\": \"oom_adj score of the process.\", \"table\": null, \"column\": null}, {\"name\": \"bucket\", \"type\": \"STRING\", \"desc\": \"oom_adj bucket of the process.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process having an oom_adj update.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process having an oom_adj update.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_id\", \"type\": \"LONG\", \"desc\": \"Slice id of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track id of the latest oom_adj update in the system_server\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"oom_adj_thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name of the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_reason\", \"type\": \"STRING\", \"desc\": \"Reason for the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}, {\"name\": \"oom_adj_trigger\", \"type\": \"STRING\", \"desc\": \"Trigger for the latest oom_adj update in the system_server.\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"android_oom_adj_score_to_bucket_name\", \"desc\": \"Converts an oom_adj score Integer to String sample name.\\n One of: cached, background, job, foreground_service, bfgs, foreground and\\n system.\", \"summary_desc\": \"Converts an oom_adj score Integer to String sample name.  One of: cached, background, job, foreground_service, bfgs, foreground and  system.\", \"args\": [{\"name\": \"oom_score\", \"type\": \"LONG\", \"desc\": \"`oom_score` value\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Returns the sample bucket based on the oom score.\"}, {\"name\": \"android_oom_adj_score_to_detailed_bucket_name\", \"desc\": \"Converts an oom_adj score Integer to String bucket name.\\n Deprecated: use `android_oom_adj_score_to_bucket_name` instead.\", \"summary_desc\": \"Converts an oom_adj score Integer to String bucket name.  Deprecated: use `android_oom_adj_score_to_bucket_name` instead.\", \"args\": [{\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"oom_adj score.\", \"table\": null, \"column\": null}, {\"name\": \"android_appid\", \"type\": \"LONG\", \"desc\": \"android_app id of the process.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Returns the oom_adj bucket.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.power_rails\", \"data_objects\": [{\"name\": \"android_power_rails_counters\", \"desc\": \"Android power rails counters data.\\n For details see: https://perfetto.dev/docs/data-sources/battery-counters#odpm\\n NOTE: Requires dedicated hardware - table is only populated on Pixels.\", \"summary_desc\": \"Android power rails counters data.  For details see: https://perfetto.dev/docs/data-sources/battery-counters#odpm  NOTE: Requires dedicated hardware - table is only populated on Pixels.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(counter.id)\", \"desc\": \"`counter.id`\", \"table\": \"counter\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the energy measurement.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Time until the next energy measurement.\", \"table\": null, \"column\": null}, {\"name\": \"power_rail_name\", \"type\": \"STRING\", \"desc\": \"Power rail name. Alias of `counter_track.name`.\", \"table\": null, \"column\": null}, {\"name\": \"raw_power_rail_name\", \"type\": \"STRING\", \"desc\": \"Raw power rail name.\", \"table\": null, \"column\": null}, {\"name\": \"energy_since_boot\", \"type\": \"DOUBLE\", \"desc\": \"Energy accumulated by this rail since boot in microwatt-seconds (uWs) (AKA micro-joules). Alias of `counter.value`.\", \"table\": null, \"column\": null}, {\"name\": \"energy_since_boot_at_end\", \"type\": \"DOUBLE\", \"desc\": \"Energy accumulated by this rail at next energy measurement in microwatt-seconds (uWs) (AKA micro-joules). Alias of `counter.value` of the next meaningful (with value change) counter value.\", \"table\": null, \"column\": null}, {\"name\": \"average_power\", \"type\": \"DOUBLE\", \"desc\": \"Average power in mW (milliwatts) over between ts and the next energy measurement.\", \"table\": null, \"column\": null}, {\"name\": \"energy_delta\", \"type\": \"DOUBLE\", \"desc\": \"The change of energy accumulated by this rails since the last measurement in microwatt-seconds (uWs) (AKA micro-joules).\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Power rail track id. Alias of `counter_track.id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"DEPRECATED. Use `energy_since_boot` instead.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_power_rails_metadata\", \"desc\": \"High level metadata about each of the power rails.\", \"summary_desc\": \"High level metadata about each of the power rails.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"power_rail_name\", \"type\": \"STRING\", \"desc\": \"Power rail name. Alias of `counter_track.name`.\", \"table\": null, \"column\": null}, {\"name\": \"raw_power_rail_name\", \"type\": \"STRING\", \"desc\": \"Raw power rail name from the hardware.\", \"table\": null, \"column\": null}, {\"name\": \"friendly_name\", \"type\": \"STRING\", \"desc\": \"User-friendly name for the power rail.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Power rail track id. Alias of `counter_track.id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"subsystem_name\", \"type\": \"STRING\", \"desc\": \"Subsystem name that this power rail belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"JOINID(machine.id)\", \"desc\": \"The device the power rail is associated with.\", \"table\": \"machine\", \"column\": \"id\"}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.process_metadata\", \"data_objects\": [{\"name\": \"android_process_metadata\", \"desc\": \"Data about packages running on the process.\", \"summary_desc\": \"Data about packages running on the process.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Process upid.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Process pid.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Process name.\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"Android app UID.\", \"table\": null, \"column\": null}, {\"name\": \"shared_uid\", \"type\": \"BOOL\", \"desc\": \"Whether the UID is shared by multiple packages.\", \"table\": null, \"column\": null}, {\"name\": \"user_id\", \"type\": \"LONG\", \"desc\": \"Android user id for multi-user devices\", \"table\": null, \"column\": null}, {\"name\": \"package_name\", \"type\": \"STRING\", \"desc\": \"Name of the packages running in this process.\", \"table\": null, \"column\": null}, {\"name\": \"version_code\", \"type\": \"LONG\", \"desc\": \"Package version code.\", \"table\": null, \"column\": null}, {\"name\": \"debuggable\", \"type\": \"LONG\", \"desc\": \"Whether package is debuggable.\", \"table\": null, \"column\": null}, {\"name\": \"is_kernel_task\", \"type\": \"BOOL\", \"desc\": \"Whether the task is kernel or not\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"android_is_kernel_task\", \"desc\": \"Returns true if the process is a kernel task.\", \"summary_desc\": \"Returns true if the process is a kernel task.\", \"args\": [{\"name\": \"upid\", \"type\": \"LONG\", \"desc\": \"Queried process\", \"table\": null, \"column\": null}], \"return_type\": \"BOOL\", \"return_desc\": \"True for kernel tasks\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.screen_state\", \"data_objects\": [{\"name\": \"android_screen_state\", \"desc\": \"Table of the screen state - on, off or doze (always on display).\", \"summary_desc\": \"Table of the screen state - on, off or doze (always on display).\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"ID.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration.\", \"table\": null, \"column\": null}, {\"name\": \"simple_screen_state\", \"type\": \"STRING\", \"desc\": \"Simplified screen state: 'unknown', 'off', 'doze' (AoD) or 'on'\", \"table\": null, \"column\": null}, {\"name\": \"short_screen_state\", \"type\": \"STRING\", \"desc\": \"Full screen state, adding VR and suspended-while-displaying states.\", \"table\": null, \"column\": null}, {\"name\": \"screen_state\", \"type\": \"STRING\", \"desc\": \"Human-readable string.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.screenshots\", \"data_objects\": [{\"name\": \"android_screenshots\", \"desc\": \"Screenshot slices, used in perfetto UI.\", \"summary_desc\": \"Screenshot slices, used in perfetto UI.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Id of the screenshot slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Slice timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Slice duration, should be typically 0 since screeenshot slices are of instant type.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Slice name.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.services\", \"data_objects\": [{\"name\": \"android_service_bindings\", \"desc\": \"All service bindings from client app to server app.\", \"summary_desc\": \"All service bindings from client app to server app.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"client_oom_score\", \"type\": \"LONG\", \"desc\": \"OOM score of client process making the binding.\", \"table\": null, \"column\": null}, {\"name\": \"client_process\", \"type\": \"STRING\", \"desc\": \"Name of client process making the binding.\", \"table\": null, \"column\": null}, {\"name\": \"client_thread\", \"type\": \"STRING\", \"desc\": \"Name of client thread making the binding.\", \"table\": null, \"column\": null}, {\"name\": \"client_pid\", \"type\": \"LONG\", \"desc\": \"Pid of client process making the binding.\", \"table\": null, \"column\": null}, {\"name\": \"client_tid\", \"type\": \"LONG\", \"desc\": \"Tid of client process making the binding.\", \"table\": null, \"column\": null}, {\"name\": \"client_upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of client process making the binding.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"client_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of client thread making the binding.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"client_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the client process made the request.\", \"table\": null, \"column\": null}, {\"name\": \"client_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the client binding request.\", \"table\": null, \"column\": null}, {\"name\": \"server_oom_score\", \"type\": \"LONG\", \"desc\": \"OOM score of server process getting bound to.\", \"table\": null, \"column\": null}, {\"name\": \"server_process\", \"type\": \"STRING\", \"desc\": \"Name of server process getting bound to\", \"table\": null, \"column\": null}, {\"name\": \"server_thread\", \"type\": \"STRING\", \"desc\": \"Name of server thread getting bound to.\", \"table\": null, \"column\": null}, {\"name\": \"server_pid\", \"type\": \"LONG\", \"desc\": \"Pid of server process getting bound to.\", \"table\": null, \"column\": null}, {\"name\": \"server_tid\", \"type\": \"LONG\", \"desc\": \"Tid of server process getting bound to.\", \"table\": null, \"column\": null}, {\"name\": \"server_upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of server process getting bound to.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"server_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of server process getting bound to.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"server_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the server process got bound to.\", \"table\": null, \"column\": null}, {\"name\": \"server_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the server process handling the binding.\", \"table\": null, \"column\": null}, {\"name\": \"token\", \"type\": \"STRING\", \"desc\": \"Unique binder identifier for the Service binding.\", \"table\": null, \"column\": null}, {\"name\": \"act\", \"type\": \"STRING\", \"desc\": \"Intent action name for the service binding.\", \"table\": null, \"column\": null}, {\"name\": \"cmp\", \"type\": \"STRING\", \"desc\": \"Intent component name for the service binding.\", \"table\": null, \"column\": null}, {\"name\": \"flg\", \"type\": \"STRING\", \"desc\": \"Intent flag for the service binding.\", \"table\": null, \"column\": null}, {\"name\": \"bind_seq\", \"type\": \"LONG\", \"desc\": \"Monotonically increasing id for the service binding.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.slices\", \"data_objects\": [], \"functions\": [{\"name\": \"android_standardize_slice_name\", \"desc\": \"Some slice names have params in them. This functions removes them to make it\\n possible to aggregate by name.\\n Some examples are:\\n  - Lock/monitor contention slices. The name includes where the lock\\n    contention is in the code. That part is removed.\\n  - DrawFrames/ooFrame. The name also includes the frame number.\\n  - Apk/oat/dex loading: The name of the apk is removed\", \"summary_desc\": \"Some slice names have params in them\", \"args\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The raw slice name.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Simplified name.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.startup_breakdowns\", \"data_objects\": [{\"name\": \"android_startup_opinionated_breakdown\", \"desc\": \"Blended thread state and slice breakdown blocking app startups.\\n\\n Each row blames a unique period during an app startup with a reason\\n derived from the slices and thread states on the main thread.\\n\\n Some helpful events to enables are binder transactions, ART, am and view.\", \"summary_desc\": \"Blended thread state and slice breakdown blocking app startups.   Each row blames a unique period during an app startup with a reason  derived from the slices and thread states on the main thread.   Some helpful events to enables are binder transactions, ART, am and view.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"startup_id\", \"type\": \"JOINID(android_startups.startup_id)\", \"desc\": \"Startup id.\", \"table\": \"android_startups\", \"column\": \"startup_id\"}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of relevant slice blocking startup.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"thread_state_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Id of thread_state blocking startup.\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of an exclusive interval during the app startup with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of an exclusive interval during the app startup with a single latency reason.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Cause of delay during an exclusive interval of the app startup.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.startup_events\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.startups\", \"data_objects\": [{\"name\": \"android_startup_processes\", \"desc\": \"Maps a startup to the set of processes that handled the activity start.\\n\\n The vast majority of cases should be a single process. However it is\\n possible that the process dies during the activity startup and is respawned.\", \"summary_desc\": \"Maps a startup to the set of processes that handled the activity start.   The vast majority of cases should be a single process\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process on which activity started.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of process on which activity started.\", \"table\": null, \"column\": null}, {\"name\": \"startup_type\", \"type\": \"STRING\", \"desc\": \"Type of the startup.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_startups\", \"desc\": \"All activity startups in the trace by startup id.\\n Populated by different scripts depending on the platform version/contents.\", \"summary_desc\": \"All activity startups in the trace by startup id.  Populated by different scripts depending on the platform version/contents.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"startup_id\", \"type\": \"ID\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of startup start.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"LONG\", \"desc\": \"Timestamp of startup end.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Startup duration.\", \"table\": null, \"column\": null}, {\"name\": \"package\", \"type\": \"STRING\", \"desc\": \"Package name.\", \"table\": null, \"column\": null}, {\"name\": \"startup_type\", \"type\": \"STRING\", \"desc\": \"Startup type.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_startup_threads\", \"desc\": \"Maps a startup to the set of threads on processes that handled the\\n activity start.\", \"summary_desc\": \"Maps a startup to the set of threads on processes that handled the  activity start.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of start.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of startup.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of process involved in startup.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid if process involved in startup.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"desc\": \"Thread is a main thread.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_thread_slices_for_all_startups\", \"desc\": \"All the slices for all startups in trace.\\n\\n Generally, this view should not be used. Instead, use one of the view functions related\\n to the startup slices which are created from this table.\", \"summary_desc\": \"All the slices for all startups in trace.   Generally, this view should not be used\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"startup_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of startup.\", \"table\": null, \"column\": null}, {\"name\": \"startup_ts_end\", \"type\": \"LONG\", \"desc\": \"Timestamp of startup end.\", \"table\": null, \"column\": null}, {\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"UTID of thread with slice.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of thread.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of thread.\", \"table\": null, \"column\": null}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"desc\": \"Whether it is main thread.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Arg set id.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice id.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of slice.\", \"table\": null, \"column\": null}, {\"name\": \"slice_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of slice start.\", \"table\": null, \"column\": null}, {\"name\": \"slice_dur\", \"type\": \"LONG\", \"desc\": \"Slice duration.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_class_loading_for_startup\", \"desc\": \"A Perfetto view that lists matching slices for class loading during app startup.\", \"summary_desc\": \"A Perfetto view that lists matching slices for class loading during app startup.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Name of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"slice_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of start of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"slice_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread with the slice.\", \"table\": null, \"column\": null}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of the thread with the slice.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Arg set id.\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"android_sum_dur_for_startup_and_slice\", \"desc\": \"Returns duration of startup for slice name.\\n\\n Sums duration of all slices of startup with provided name.\", \"summary_desc\": \"Returns duration of startup for slice name.   Sums duration of all slices of startup with provided name.\", \"args\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Slice name.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Sum of duration.\"}, {\"name\": \"android_sum_dur_on_main_thread_for_startup_and_slice\", \"desc\": \"Returns duration of startup for slice name on main thread.\\n\\n Sums duration of all slices of startup with provided name only on main thread.\", \"summary_desc\": \"Returns duration of startup for slice name on main thread.   Sums duration of all slices of startup with provided name only on main thread.\", \"args\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Slice name.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Sum of duration.\"}], \"table_functions\": [{\"name\": \"android_slices_for_startup_and_slice_name\", \"desc\": \"Given a startup id and GLOB for a slice name, returns matching slices with data.\", \"summary_desc\": \"Given a startup id and GLOB for a slice name, returns matching slices with data.\", \"args\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"desc\": \"Glob of the slice.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"Id of the slice.\"}, {\"name\": \"slice_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the slice.\"}, {\"name\": \"slice_ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of the slice.\"}, {\"name\": \"slice_dur\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Duration of the slice.\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the thread with the slice.\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Tid of the thread with the slice.\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"table\": null, \"column\": null, \"desc\": \"Arg set id.\"}]}, {\"name\": \"android_binder_transaction_slices_for_startup\", \"desc\": \"Returns binder transaction slices for a given startup id with duration over threshold.\", \"summary_desc\": \"Returns binder transaction slices for a given startup id with duration over threshold.\", \"args\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"threshold\", \"type\": \"DOUBLE\", \"desc\": \"Only return slices with duration over threshold.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Slice id.\"}, {\"name\": \"slice_dur\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Slice duration.\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the thread with slice.\"}, {\"name\": \"process\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the process with slice.\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"table\": null, \"column\": null, \"desc\": \"Arg set id.\"}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"table\": null, \"column\": null, \"desc\": \"Whether is main thread.\"}]}], \"macros\": []}, {\"module_name\": \"android.startup.startups_maxsdk28\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.startups_minsdk29\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.startups_minsdk33\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.startup.time_to_display\", \"data_objects\": [{\"name\": \"android_startup_time_to_display\", \"desc\": \"Startup metric defintions, which focus on the observable time range:\\n TTID - Time To Initial Display\\n * https://developer.android.com/topic/performance/vitals/launch-time#time-initial\\n * end of first RenderThread.DrawFrame - bindApplication\\n TTFD - Time To Full Display\\n * https://developer.android.com/topic/performance/vitals/launch-time#retrieve-TTFD\\n * end of next RT.DrawFrame, after reportFullyDrawn called - bindApplication\\n Googlers: see go/android-performance-metrics-glossary for details.\", \"summary_desc\": \"Startup metric defintions, which focus on the observable time range:  TTID - Time To Initial Display  * https://developer.android.com/topic/performance/vitals/launch-time#time-initial  * end of first RenderThread.DrawFrame - bindApplication  TTFD - Time To Full Display  * https://developer.android.com/topic/performance/vitals/launch-time#retrieve-TTFD  * end of next RT.DrawFrame, after reportFullyDrawn called - bindApplication  Googlers: see go/android-performance-metrics-glossary for details.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"startup_id\", \"type\": \"LONG\", \"desc\": \"Startup id.\", \"table\": null, \"column\": null}, {\"name\": \"time_to_initial_display\", \"type\": \"LONG\", \"desc\": \"Time to initial display (TTID)\", \"table\": null, \"column\": null}, {\"name\": \"time_to_full_display\", \"type\": \"LONG\", \"desc\": \"Time to full display (TTFD)\", \"table\": null, \"column\": null}, {\"name\": \"ttid_frame_id\", \"type\": \"LONG\", \"desc\": \"`android_frames.frame_id` of frame for initial display\", \"table\": null, \"column\": null}, {\"name\": \"ttfd_frame_id\", \"type\": \"LONG\", \"desc\": \"`android_frames.frame_id` of frame for full display\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"`process.upid` of the startup\", \"table\": \"process\", \"column\": \"id\"}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.statsd\", \"data_objects\": [{\"name\": \"android_statsd_atoms\", \"desc\": \"Statsd atoms.\\n\\n A subset of the slice table containing statsd atom instant events.\", \"summary_desc\": \"Statsd atoms.   A subset of the slice table containing statsd atom instant events.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique identifier for this slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp at the start of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The id of the argument set associated with this slice.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_count\", \"type\": \"LONG\", \"desc\": \"The value of the CPU instruction counter at the start of the slice. This column will only be populated if thread instruction collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_delta\", \"type\": \"LONG\", \"desc\": \"The change in value of the CPU instruction counter between the start and end of the slice. This column will only be populated if thread instruction collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The id of the track this slice is located on.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"The \\\"category\\\" of the slice. If this slice originated with track_event, this column contains the category emitted. Otherwise, it is likely to be null (with limited exceptions).\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the slice. The name describes what was happening during the slice.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"The depth of the slice in the current stack of slices.\", \"table\": null, \"column\": null}, {\"name\": \"stack_id\", \"type\": \"LONG\", \"desc\": \"A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.\", \"table\": null, \"column\": null}, {\"name\": \"parent_stack_id\", \"type\": \"LONG\", \"desc\": \"The stack_id for the parent of this slice. Rarely useful.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The id of the parent (i.e. immediate ancestor) slice for this slice.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The thread timestamp at the start of the slice. This column will only be populated if thread timestamp collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"LONG\", \"desc\": \"The thread time used by this slice. This column will only be populated if thread timestamp collection is enabled with track_event.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.surfaceflinger\", \"data_objects\": [{\"name\": \"android_app_to_sf_frame_timeline_match\", \"desc\": \"Match the frame timeline on the app side with the frame timeline on the SF side.\\n In cases where there are multiple layers drawn, there would be separate frame timeline\\n slice for each of the layers. GROUP BY is used to deduplicate these rows.\", \"summary_desc\": \"Match the frame timeline on the app side with the frame timeline on the SF side.  In cases where there are multiple layers drawn, there would be separate frame timeline  slice for each of the layers\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"app_upid\", \"type\": \"JOINID(process.upid)\", \"desc\": \"upid of the app.\", \"table\": \"process\", \"column\": \"upid\"}, {\"name\": \"app_vsync\", \"type\": \"LONG\", \"desc\": \"vsync id of the app.\", \"table\": null, \"column\": null}, {\"name\": \"sf_upid\", \"type\": \"JOINID(process.upid)\", \"desc\": \"upid of surfaceflinger process.\", \"table\": \"process\", \"column\": \"upid\"}, {\"name\": \"sf_vsync\", \"type\": \"LONG\", \"desc\": \"vsync id for surfaceflinger.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.suspend\", \"data_objects\": [{\"name\": \"android_suspend_state\", \"desc\": \"Table of suspended and awake slices.\\n\\n Selects either the minimal or full ftrace source depending on what's\\n available, marks suspended periods, and complements them to give awake\\n periods.\", \"summary_desc\": \"Table of suspended and awake slices.   Selects either the minimal or full ftrace source depending on what's  available, marks suspended periods, and complements them to give awake  periods.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"power_state\", \"type\": \"STRING\", \"desc\": \"'awake' or 'suspended'\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.thread\", \"data_objects\": [], \"functions\": [{\"name\": \"android_standardize_thread_name\", \"desc\": \"Standardizes an Android thread name by extracting its core identifier to make it\\n possible to aggregate by name.\\n\\n Removes extra parts of a thread name, like identifiers, leaving only the main prefix.\\n Splits the name at ('-', '[', ':' , ' ').\\n\\n Some Examples:\\n   Given thread_name = \\\"RenderThread-1[123]\\\",\\n   returns \\\"RenderThread\\\".\\n\\n   Given thread_name = \\\"binder:5543_E\\\"\\n   returns \\\"binder\\\".\\n\\n   Given thread_name = \\\"pool-3-thread-5\\\",\\n   returns \\\"pool\\\".\\n\\n   Given thread_name = \\\"MainThread\\\",\\n   returns \\\"MainThread\\\".\", \"summary_desc\": \"Standardizes an Android thread name by extracting its core identifier to make it  possible to aggregate by name.   Removes extra parts of a thread name, like identifiers, leaving only the main prefix.  Splits the name at ('-', '[', ':' , ' ').   Some Examples:    Given thread_name = \\\"RenderThread-1[123]\\\",    returns \\\"RenderThread\\\".     Given thread_name = \\\"binder:5543_E\\\"    returns \\\"binder\\\".     Given thread_name = \\\"pool-3-thread-5\\\",    returns \\\"pool\\\".     Given thread_name = \\\"MainThread\\\",    returns \\\"MainThread\\\".\", \"args\": [{\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"The full android thread name to be processed.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Simplified name\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.version\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.wakeups\", \"data_objects\": [{\"name\": \"android_wakeups\", \"desc\": \"Table of parsed wakeup / suspend failure events with suspend backoff.\\n\\n Certain wakeup events may have multiple causes. When this occurs we\\n split those causes into multiple rows in this table with the same ts\\n and raw_wakeup values.\", \"summary_desc\": \"Table of parsed wakeup / suspend failure events with suspend backoff.   Certain wakeup events may have multiple causes\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration for which we blame the wakeup for wakefulness. This is the suspend backoff duration if one exists, or the lesser of (5 seconds, time to next suspend event).\", \"table\": null, \"column\": null}, {\"name\": \"raw_wakeup\", \"type\": \"STRING\", \"desc\": \"Original wakeup string from the kernel.\", \"table\": null, \"column\": null}, {\"name\": \"on_device_attribution\", \"type\": \"STRING\", \"desc\": \"Wakeup attribution, as determined on device. May be absent.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"One of 'normal' (device woke from sleep), 'abort_pending' (suspend failed due to a wakeup that was scheduled by a device during the suspend process), 'abort_last_active' (suspend failed, listing the last active device) or 'abort_other' (suspend failed for another reason).\", \"table\": null, \"column\": null}, {\"name\": \"item\", \"type\": \"STRING\", \"desc\": \"Individual wakeup cause. Usually the name of the device that cause the wakeup, or the raw message in the 'abort_other' case.\", \"table\": null, \"column\": null}, {\"name\": \"suspend_quality\", \"type\": \"STRING\", \"desc\": \"'good' or 'bad'. 'bad' means failed or short such that suspend backoff is triggered.\", \"table\": null, \"column\": null}, {\"name\": \"backoff_state\", \"type\": \"STRING\", \"desc\": \"'new', 'continue' or NULL. Set if suspend backoff is triggered.\", \"table\": null, \"column\": null}, {\"name\": \"backoff_reason\", \"type\": \"STRING\", \"desc\": \"'short', 'failed' or NULL. Set if suspend backoff is triggered.\", \"table\": null, \"column\": null}, {\"name\": \"backoff_count\", \"type\": \"LONG\", \"desc\": \"Number of times suspend backoff has occurred, or NULL. Set if suspend backoff is triggered.\", \"table\": null, \"column\": null}, {\"name\": \"backoff_millis\", \"type\": \"LONG\", \"desc\": \"Next suspend backoff duration, or NULL. Set if suspend backoff is triggered.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.inputmethod\", \"data_objects\": [{\"name\": \"android_inputmethod_clients\", \"desc\": \"Android inputmethod clients state dumps (from android.inputmethod data source).\", \"summary_desc\": \"Android inputmethod clients state dumps (from android.inputmethod data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Dump id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the dump was triggered\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}, {\"name\": \"android_inputmethod_manager_service\", \"desc\": \"Android inputmethod manager service state dumps (from android.inputmethod data source).\", \"summary_desc\": \"Android inputmethod manager service state dumps (from android.inputmethod data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Dump id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the dump was triggered\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}, {\"name\": \"android_inputmethod_service\", \"desc\": \"Android inputmethod service state dumps (from android.inputmethod data source).\", \"summary_desc\": \"Android inputmethod service state dumps (from android.inputmethod data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Dump id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the dump was triggered\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.rect\", \"data_objects\": [{\"name\": \"android_winscope_rect\", \"desc\": \"Android Winscope rects.\", \"summary_desc\": \"Android Winscope rects.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Rect id\", \"table\": null, \"column\": null}, {\"name\": \"x\", \"type\": \"DOUBLE\", \"desc\": \"x\", \"table\": null, \"column\": null}, {\"name\": \"y\", \"type\": \"DOUBLE\", \"desc\": \"y\", \"table\": null, \"column\": null}, {\"name\": \"w\", \"type\": \"DOUBLE\", \"desc\": \"w\", \"table\": null, \"column\": null}, {\"name\": \"h\", \"type\": \"DOUBLE\", \"desc\": \"h\", \"table\": null, \"column\": null}]}, {\"name\": \"android_winscope_transform\", \"desc\": \"Android Winscope transforms.\", \"summary_desc\": \"Android Winscope transforms.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Transform id\", \"table\": null, \"column\": null}, {\"name\": \"dsdx\", \"type\": \"DOUBLE\", \"desc\": \"dsdx\", \"table\": null, \"column\": null}, {\"name\": \"dtdx\", \"type\": \"DOUBLE\", \"desc\": \"dtdx\", \"table\": null, \"column\": null}, {\"name\": \"tx\", \"type\": \"DOUBLE\", \"desc\": \"tx\", \"table\": null, \"column\": null}, {\"name\": \"dtdy\", \"type\": \"DOUBLE\", \"desc\": \"dtdy\", \"table\": null, \"column\": null}, {\"name\": \"dsdy\", \"type\": \"DOUBLE\", \"desc\": \"dsdy\", \"table\": null, \"column\": null}, {\"name\": \"ty\", \"type\": \"DOUBLE\", \"desc\": \"ty\", \"table\": null, \"column\": null}]}, {\"name\": \"android_winscope_trace_rect\", \"desc\": \"Android Winscope trace rects.\", \"summary_desc\": \"Android Winscope trace rects.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Trace rect id\", \"table\": null, \"column\": null}, {\"name\": \"rect_id\", \"type\": \"LONG\", \"desc\": \"Rect id\", \"table\": null, \"column\": null}, {\"name\": \"group_id\", \"type\": \"LONG\", \"desc\": \"Group id\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Depth\", \"table\": null, \"column\": null}, {\"name\": \"is_spy\", \"type\": \"LONG\", \"desc\": \"Is spy rect\", \"table\": null, \"column\": null}, {\"name\": \"is_visible\", \"type\": \"LONG\", \"desc\": \"Is visible\", \"table\": null, \"column\": null}, {\"name\": \"opacity\", \"type\": \"DOUBLE\", \"desc\": \"Opacity\", \"table\": null, \"column\": null}, {\"name\": \"transform_id\", \"type\": \"LONG\", \"desc\": \"Transform id\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.surfaceflinger\", \"data_objects\": [{\"name\": \"android_surfaceflinger_transaction\", \"desc\": \"Android surfaceflinger transactions (from android.surfaceflinger.transactions data source).\", \"summary_desc\": \"Android surfaceflinger transactions (from android.surfaceflinger.transactions data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Row id\", \"table\": null, \"column\": null}, {\"name\": \"snapshot_id\", \"type\": \"LONG\", \"desc\": \"Snapshot id\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Arg set id\", \"table\": null, \"column\": null}, {\"name\": \"transaction_id\", \"type\": \"LONG\", \"desc\": \"Transaction id\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"PID\", \"table\": null, \"column\": null}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"UID\", \"table\": null, \"column\": null}, {\"name\": \"layer_id\", \"type\": \"LONG\", \"desc\": \"Layer id\", \"table\": null, \"column\": null}, {\"name\": \"display_id\", \"type\": \"LONG\", \"desc\": \"Display id\", \"table\": null, \"column\": null}, {\"name\": \"flags_id\", \"type\": \"LONG\", \"desc\": \"Flags id\", \"table\": null, \"column\": null}, {\"name\": \"transaction_type\", \"type\": \"STRING\", \"desc\": \"Transaction type\", \"table\": null, \"column\": null}]}, {\"name\": \"android_surfaceflinger_transaction_flag\", \"desc\": \"Android surfaceflinger transaction flags.\", \"summary_desc\": \"Android surfaceflinger transaction flags.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"flags_id\", \"type\": \"LONG\", \"desc\": \"Flags id\", \"table\": null, \"column\": null}, {\"name\": \"flag\", \"type\": \"STRING\", \"desc\": \"Flag\", \"table\": null, \"column\": null}]}, {\"name\": \"android_surfaceflinger_display\", \"desc\": \"Android surfaceflinger displays (from android.surfaceflinger.layers data source).\", \"summary_desc\": \"Android surfaceflinger displays (from android.surfaceflinger.layers data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id\", \"table\": null, \"column\": null}, {\"name\": \"snapshot_id\", \"type\": \"LONG\", \"desc\": \"Snapshot id\", \"table\": null, \"column\": null}, {\"name\": \"is_on\", \"type\": \"LONG\", \"desc\": \"Is on\", \"table\": null, \"column\": null}, {\"name\": \"is_virtual\", \"type\": \"LONG\", \"desc\": \"Is virtual\", \"table\": null, \"column\": null}, {\"name\": \"trace_rect_id\", \"type\": \"LONG\", \"desc\": \"Trace rect id\", \"table\": null, \"column\": null}, {\"name\": \"display_id\", \"type\": \"LONG\", \"desc\": \"Display id\", \"table\": null, \"column\": null}, {\"name\": \"display_name\", \"type\": \"STRING\", \"desc\": \"Display name\", \"table\": null, \"column\": null}]}, {\"name\": \"android_winscope_fill_region\", \"desc\": \"Android surfaceflinger input rect fill regions (from android.surfaceflinger.layers data source).\", \"summary_desc\": \"Android surfaceflinger input rect fill regions (from android.surfaceflinger.layers data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Fill region id\", \"table\": null, \"column\": null}, {\"name\": \"trace_rect_id\", \"type\": \"LONG\", \"desc\": \"Trace rect id\", \"table\": null, \"column\": null}, {\"name\": \"rect_id\", \"type\": \"LONG\", \"desc\": \"Rect id\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.transitions\", \"data_objects\": [{\"name\": \"android_window_manager_shell_transition_participants\", \"desc\": \"Android transition participants (from com.android.wm.shell.transition data source).\", \"summary_desc\": \"Android transition participants (from com.android.wm.shell.transition data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"transition_id\", \"type\": \"LONG\", \"desc\": \"Transition id\", \"table\": null, \"column\": null}, {\"name\": \"layer_id\", \"type\": \"LONG\", \"desc\": \"Layer participant\", \"table\": null, \"column\": null}, {\"name\": \"window_id\", \"type\": \"LONG\", \"desc\": \"Window participant\", \"table\": null, \"column\": null}]}, {\"name\": \"android_window_manager_shell_transition_protos\", \"desc\": \"Android transition protos (from com.android.wm.shell.transition data source).\", \"summary_desc\": \"Android transition protos (from com.android.wm.shell.transition data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"transition_id\", \"type\": \"LONG\", \"desc\": \"Transition id\", \"table\": null, \"column\": null}, {\"name\": \"base64_proto_id\", \"type\": \"LONG\", \"desc\": \"Base64 proto id\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.viewcapture\", \"data_objects\": [{\"name\": \"android_viewcapture\", \"desc\": \"Android viewcapture (from android.viewcapture data source).\", \"summary_desc\": \"Android viewcapture (from android.viewcapture data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Snapshot id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the snapshot was triggered\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}, {\"name\": \"android_viewcapture_view\", \"desc\": \"Android viewcapture view (from android.viewcapture data source).\", \"summary_desc\": \"Android viewcapture view (from android.viewcapture data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Row id\", \"table\": null, \"column\": null}, {\"name\": \"snapshot_id\", \"type\": \"LONG\", \"desc\": \"Snapshot id\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"android.winscope.windowmanager\", \"data_objects\": [{\"name\": \"android_windowmanager\", \"desc\": \"Android WindowManager (from android.windowmanager data source).\", \"summary_desc\": \"Android WindowManager (from android.windowmanager data source).\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Snapshot id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the snapshot was triggered\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args parsed from the proto message\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"appleos\", \"modules\": [{\"module_name\": \"appleos.instruments.samples\", \"data_objects\": [{\"name\": \"appleos_instruments_samples_summary_tree\", \"desc\": \"Table summarising the callstacks captured during all\\n instruments samples in the trace.\\n\\n Specifically, this table returns a tree containing all\\n the callstacks seen during the trace with `self_count`\\n equal to the number of samples with that frame as the\\n leaf and `cumulative_count` equal to the number of\\n samples with the frame anywhere in the tree.\", \"summary_desc\": \"Table summarising the callstacks captured during all  instruments samples in the trace.   Specifically, this table returns a tree containing all  the callstacks seen during the trace with `self_count`  equal to the number of samples with that frame as the  leaf and `cumulative_count` equal to the number of  samples with the frame anywhere in the tree.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the callstack. A callstack in this context is a unique set of frames up to the root.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The id of the parent callstack for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The function name of the frame for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"mapping_name\", \"type\": \"STRING\", \"desc\": \"The name of the mapping containing the frame. This can be a native binary, library, or JIT.\", \"table\": null, \"column\": null}, {\"name\": \"source_file\", \"type\": \"STRING\", \"desc\": \"The name of the file containing the function.\", \"table\": null, \"column\": null}, {\"name\": \"line_number\", \"type\": \"LONG\", \"desc\": \"The line number in the file the function is located at.\", \"table\": null, \"column\": null}, {\"name\": \"self_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function as the leaf frame.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function appearing anywhere on the callstack.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"callstacks\", \"modules\": [{\"module_name\": \"callstacks.stack_profile\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"callstacks.symbolize\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"chrome\", \"modules\": [{\"module_name\": \"chrome.android_input\", \"data_objects\": [{\"name\": \"chrome_deliver_android_input_event\", \"desc\": \"DeliverInputEvent is the third step in the input pipeline.\\n It is responsible for routing the input events within browser process.\", \"summary_desc\": \"DeliverInputEvent is the third step in the input pipeline.  It is responsible for routing the input events within browser process.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Touch move processing duration.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid.\", \"table\": null, \"column\": null}, {\"name\": \"android_input_id\", \"type\": \"STRING\", \"desc\": \"Input id (assigned by the system, used by InputReader and InputDispatcher)\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_android_input\", \"desc\": \"Collects information about input reader, input dispatcher and\\n DeliverInputEvent steps for the given Android input id.\", \"summary_desc\": \"Collects information about input reader, input dispatcher and  DeliverInputEvent steps for the given Android input id.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"android_input_id\", \"type\": \"STRING\", \"desc\": \"Input id.\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_processing_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input reader step start timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_processing_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input reader step end timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_utid\", \"type\": \"LONG\", \"desc\": \"Input reader step utid.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_processing_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input dispatcher step start timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_processing_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input dispatcher step end timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_utid\", \"type\": \"LONG\", \"desc\": \"Input dispatcher step utid.\", \"table\": null, \"column\": null}, {\"name\": \"deliver_input_event_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"DeliverInputEvent step start timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"deliver_input_event_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"DeliverInputEvent step end timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"deliver_input_event_utid\", \"type\": \"LONG\", \"desc\": \"DeliverInputEvent step utid.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.chrome_scrolls\", \"data_objects\": [{\"name\": \"chrome_scroll_update_refs\", \"desc\": \"Ties together input (`LatencyInfo.Flow`) and frame (`Graphics.Pipeline`)\\n trace events. Only covers input events of the `GESTURE_SCROLL_UPDATE_EVENT`\\n type.\", \"summary_desc\": \"Ties together input (`LatencyInfo.Flow`) and frame (`Graphics.Pipeline`)  trace events\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_latency_id\", \"type\": \"LONG\", \"desc\": \"Id of the Chrome input pipeline (`LatencyInfo.Flow`).\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_latency_id\", \"type\": \"LONG\", \"desc\": \"Id of the touch move input corresponding to this scroll update.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_latency_id\", \"type\": \"LONG\", \"desc\": \"Id of the `EventLatency` of the frame that the input was presented in.\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_id\", \"type\": \"LONG\", \"desc\": \"Id of the frame pipeline (`Graphics.Pipeline`), pre-surface aggregation.\", \"table\": null, \"column\": null}, {\"name\": \"display_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the frame pipeline (`Graphics.Pipeline`), post-surface aggregation.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_update_input_pipeline\", \"desc\": \"Timestamps and durations for the input-associated (before coalescing inputs\\n into a frame) stages of a scroll.\", \"summary_desc\": \"Timestamps and durations for the input-associated (before coalescing inputs  into a frame) stages of a scroll.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id of the `LatencyInfo.Flow` slices corresponding to this scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"Id of the scroll this scroll update belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"presented_in_frame_id\", \"type\": \"LONG\", \"desc\": \"Id of the frame that this input was presented in. Can be joined with `chrome_scroll_update_frame_pipeline.id`.\", \"table\": null, \"column\": null}, {\"name\": \"is_presented\", \"type\": \"BOOL\", \"desc\": \"Whether this input event was presented.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame`.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_v3\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow3 metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame_v3`.\", \"table\": null, \"column\": null}, {\"name\": \"is_inertial\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding scroll is inertial (fling). If this is `true`, \\\"generation\\\" and \\\"touch_move\\\" related timestamps and durations will be null.\", \"table\": null, \"column\": null}, {\"name\": \"is_first_scroll_update_in_scroll\", \"type\": \"BOOL\", \"desc\": \"Whether this is the first update in a scroll. First scroll update can never be janky.\", \"table\": null, \"column\": null}, {\"name\": \"is_first_scroll_update_in_frame\", \"type\": \"BOOL\", \"desc\": \"Whether this is the first input that was presented in frame `presented_in_frame_id`.\", \"table\": null, \"column\": null}, {\"name\": \"generation_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input generation timestamp (from the Android system).\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_processing_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the InputReader step (see android_input.sql). Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_processing_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the InputDispatcher step (see android_input.sql). Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"generation_to_browser_main_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input generation to when the browser received the input.\", \"table\": null, \"column\": null}, {\"name\": \"browser_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the browser main thread.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_received_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_INPUT_EVENT_UI` slice for the touch move.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_received_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the touch move.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_processing_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for processing  a `TouchMove` event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_INPUT_EVENT_UI` slice for the gesture scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the gesture scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_processing_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for creating a `GestureScrollUpdate` from a `TouchMove` event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the above.\", \"table\": null, \"column\": null}, {\"name\": \"browser_to_compositor_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the browser and compositor dispatch.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the renderer compositor thread.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the compositor dispatch itself.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_to_coalesced_input_handled_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between compositor dispatch and coalescing input.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_coalesced_input_handled_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_DID_HANDLE_INPUT_AND_OVERSCROLL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_coalesced_input_handled_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_DID_HANDLE_INPUT_AND_OVERSCROLL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_coalesced_input_handled_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the `STEP_DID_HANDLE_INPUT_AND_OVERSCROLL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_coalesced_input_handled_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_DID_HANDLE_INPUT_AND_OVERSCROLL` slice.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_update_frame_pipeline\", \"desc\": \"Timestamps and durations for the frame-associated (after coalescing inputs\\n into a frame) stages of a scroll.\", \"summary_desc\": \"Timestamps and durations for the frame-associated (after coalescing inputs  into a frame) stages of a scroll.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id of the `LatencyInfo.Flow` slices corresponding to this scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"display_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the aggregated frame this scroll update was presented in.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_ms\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval (in milliseconds).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_resample_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_RESAMPLE_SCROLL_EVENTS` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_resample_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_RESAMPLE_SCROLL_EVENTS` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_receive_begin_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_RECEIVE_BEGIN_FRAME` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_GENERATE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_GENERATE_COMPOSITOR_FRAME` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_frame_to_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between generating and submitting the compositor frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for submitting the compositor frame (to viz).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_to_viz_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay when a compositor frame is sent from the renderer to viz.\", \"table\": null, \"column\": null}, {\"name\": \"viz_compositor_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the viz compositor thread.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the viz work done on receiving the compositor frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_wait_for_draw_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between viz receiving the compositor frame to frame draw.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_DRAW_AND_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_DRAW_AND_SWAP` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the viz drawing/swapping work for this frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_send_buffer_swap_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_BUFFER_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_send_buffer_swap_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SEND_BUFFER_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_to_gpu_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay between viz work on compositor thread and `CompositorGpuThread`.\", \"table\": null, \"column\": null}, {\"name\": \"viz_gpu_thread_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the viz `CompositorGpuThread`.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of frame buffer swapping work on viz.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_to_latch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of `EventLatency`'s `BufferReadyToLatch` step.\", \"table\": null, \"column\": null}, {\"name\": \"latch_timestamp\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for `EventLatency`'s `LatchToSwapEnd` step.\", \"table\": null, \"column\": null}, {\"name\": \"viz_latch_to_presentation_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of either `EventLatency`'s `LatchToSwapEnd` + `SwapEndToPresentationCompositorFrame` steps or its `LatchToPresentation` step.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"TIMESTAMP\", \"desc\": \"Presentation timestamp for the frame.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scrolls\", \"desc\": \"Defines slices for all of the individual scrolls in a trace based on the\\n LatencyInfo-based scroll definition.\\n\\n NOTE: this view of top level scrolls is based on the LatencyInfo definition\\n of a scroll, which differs subtly from the definition based on\\n EventLatencies.\\n TODO(b/278684408): add support for tracking scrolls across multiple Chrome/\\n WebView instances. Currently gesture_scroll_id unique within an instance, but\\n is not unique across multiple instances. Switching to an EventLatency based\\n definition of scrolls should resolve this.\", \"summary_desc\": \"Defines slices for all of the individual scrolls in a trace based on the  LatencyInfo-based scroll definition.   NOTE: this view of top level scrolls is based on the LatencyInfo definition  of a scroll, which differs subtly from the definition based on  EventLatencies.  TODO(b/278684408): add support for tracking scrolls across multiple Chrome/  WebView instances\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The unique identifier of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"gesture_scroll_begin_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The earliest timestamp of the EventLatency slice of the GESTURE_SCROLL_BEGIN type for the corresponding scroll id.\", \"table\": null, \"column\": null}, {\"name\": \"gesture_scroll_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The earliest timestamp of the EventLatency slice of the GESTURE_SCROLL_END type / the latest timestamp of the EventLatency slice of the GESTURE_SCROLL_UPDATE type for the corresponding scroll id.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_update_info\", \"desc\": \"Timestamps and durations for the critical path stages during scrolling.\\n This table covers both the input-associated (before coalescing inputs into a\\n frame) and frame-associated (after coalescing inputs into a frame) stages of\\n a scroll:\\n\\n                              ...\\n                               |\\n                +--------------+--------------+\\n                |                             |\\n                V                             V\\n   +-------------------------+   +-------------------------+\\n   | _scroll_update_INPUT_   |   | _scroll_update_FRAME_   |\\n   | timestamps_and_metadata |   | timestamps_and_metadata |\\n   +------------+------------+   +------------+------------+\\n                |                             |\\n                V                             V\\n    +-----------------------+     +-----------------------+\\n    | chrome_scroll_update_ |     | chrome_scroll_update_ |\\n    |     INPUT_pipeline    |     |     FRAME_pipeline    |\\n    +-----------+-----------+     +-----------+-----------+\\n                |                             |\\n                +--------------+--------------+\\n                               |\\n                               V\\n                 +---------------------------+\\n                 | chrome_scroll_update_info |\\n                 +---------------------------+\", \"summary_desc\": \"Timestamps and durations for the critical path stages during scrolling.  This table covers both the input-associated (before coalescing inputs into a  frame) and frame-associated (after coalescing inputs into a frame) stages of  a scroll:                                ...                                |                 +--------------+--------------+                 |                             |                 V                             V    +-------------------------+   +-------------------------+    | _scroll_update_INPUT_   |   | _scroll_update_FRAME_   |    | timestamps_and_metadata |   | timestamps_and_metadata |    +------------+------------+   +------------+------------+                 |                             |                 V                             V     +-----------------------+     +-----------------------+     | chrome_scroll_update_ |     | chrome_scroll_update_ |     |     INPUT_pipeline    |     |     FRAME_pipeline    |     +-----------+-----------+     +-----------+-----------+                 |                             |                 +--------------+--------------+                                |                                V                  +---------------------------+                  | chrome_scroll_update_info |                  +---------------------------+\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id of the `LatencyInfo.Flow` slices corresponding to this scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"Id of the scroll this scroll update belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"previous_input_id\", \"type\": \"LONG\", \"desc\": \"Id (`LatencyInfo.ID`) of the previous input in this scroll.\", \"table\": null, \"column\": null}, {\"name\": \"frame_display_id\", \"type\": \"LONG\", \"desc\": \"Id (`display_trace_id`) of the aggregated frame which this scroll update was presented in.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_ms\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval (in milliseconds).\", \"table\": null, \"column\": null}, {\"name\": \"is_presented\", \"type\": \"BOOL\", \"desc\": \"Whether this input event was presented.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame`.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_v3\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow3 metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame_v3`.\", \"table\": null, \"column\": null}, {\"name\": \"is_inertial\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding scroll is inertial (fling). If this is `true`, \\\"generation\\\" and \\\"touch_move\\\" related timestamps and durations will be null.\", \"table\": null, \"column\": null}, {\"name\": \"is_first_scroll_update_in_scroll\", \"type\": \"BOOL\", \"desc\": \"Whether this is the first update in a scroll. First scroll update can never be janky.\", \"table\": null, \"column\": null}, {\"name\": \"is_first_scroll_update_in_frame\", \"type\": \"BOOL\", \"desc\": \"Whether this is the first input that was presented in the frame.\", \"table\": null, \"column\": null}, {\"name\": \"browser_uptime_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the start of the browser process to the first input generation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"generation_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input generation timestamp (from the Android system).\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the generation timestamp to the end of InputReader's work. Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of InputDispatcher's work. Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"since_previous_generation_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the generation timestamp for the previous input to this input's generation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"generation_to_browser_main_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input generation to when the browser received the input.\", \"table\": null, \"column\": null}, {\"name\": \"browser_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the browser main thread.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_received_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_INPUT_EVENT_UI` slice for the touch move.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_received_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the touch move.\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_processing_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for processing  a `TouchMove` event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_INPUT_EVENT_UI` slice for the gesture scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the gesture scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_processing_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for creating a `GestureScrollUpdate` from a `TouchMove` event.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_created_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SEND_INPUT_EVENT_UI` slice for the above.\", \"table\": null, \"column\": null}, {\"name\": \"browser_to_compositor_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the browser and compositor dispatch.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the renderer compositor thread.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the compositor dispatch itself.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_HANDLE_INPUT_EVENT_IMPL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_dispatch_to_on_begin_frame_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between compositor dispatch and input resampling work.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_resample_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_RESAMPLE_SCROLL_EVENTS` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_coalesced_input_handled_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_DID_HANDLE_INPUT_AND_OVERSCROLL` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp for work done on the input during \\\"OnBeginFrame\\\".\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the \\\"OnBeginFrame\\\" work for this input.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for work done on the input during \\\"OnBeginFrame\\\".\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_to_generation_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay until the compositor work for generating the frame begins.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_GENERATE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_GENERATE_COMPOSITOR_FRAME` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_frame_to_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between generating and submitting the compositor frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for submitting the compositor frame (to viz).\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_compositor_frame_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SUBMIT_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_to_viz_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay when a compositor frame is sent from the renderer to viz.\", \"table\": null, \"column\": null}, {\"name\": \"viz_compositor_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the viz compositor thread.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the viz work done on receiving the compositor frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_RECEIVE_COMPOSITOR_FRAME` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_wait_for_draw_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between viz receiving the compositor frame to frame draw.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_DRAW_AND_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_DRAW_AND_SWAP` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the viz drawing/swapping work for this frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_send_buffer_swap_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_SEND_BUFFER_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_send_buffer_swap_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_SEND_BUFFER_SWAP` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_to_gpu_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay between viz work on compositor thread and `CompositorGpuThread`.\", \"table\": null, \"column\": null}, {\"name\": \"viz_gpu_thread_utid\", \"type\": \"LONG\", \"desc\": \"Utid for the viz `CompositorGpuThread`.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice or the containing task (if available).\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of frame buffer swapping work on viz.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End timestamp for the `STEP_BUFFER_SWAP_POST_SUBMIT` slice.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_to_latch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of `EventLatency`'s `BufferReadyToLatch` step.\", \"table\": null, \"column\": null}, {\"name\": \"latch_timestamp\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp for `EventLatency`'s `LatchToSwapEnd` step.\", \"table\": null, \"column\": null}, {\"name\": \"viz_latch_to_presentation_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of either `EventLatency`'s `LatchToSwapEnd` + `SwapEndToPresentationCompositorFrame` steps or its `LatchToPresentation` step.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"TIMESTAMP\", \"desc\": \"Presentation timestamp for the frame.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_frame_info\", \"desc\": \"A list of all presented Chrome frames which contain scroll updates and associated\\n metadata.\", \"summary_desc\": \"A list of all presented Chrome frames which contain scroll updates and associated  metadata.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id (frame's display_trace_id) for the given frame.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"Id of the scroll this scroll update belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"last_input_before_this_frame_id\", \"type\": \"LONG\", \"desc\": \"Id (LatencyInfo.ID) of the last input before this frame.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_ms\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval (in milliseconds). TODO(b/394303662): Remove in favour of `vsync_interval_dur`.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_dur\", \"type\": \"DURATION\", \"desc\": \"Vsync interval (in nanoseconds).\", \"table\": null, \"column\": null}, {\"name\": \"is_janky\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame`.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_v3\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow3 metric. This comes directly from `perfetto.protos.EventLatency.is_janky_scrolled_frame_v3`.\", \"table\": null, \"column\": null}, {\"name\": \"is_inertial\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding scroll is inertial (fling).\", \"table\": null, \"column\": null}, {\"name\": \"total_input_delta_y\", \"type\": \"DOUBLE\", \"desc\": \"Sum of all input deltas for all scroll updates in this frame. These values are based on the delta of the OS input events.\", \"table\": null, \"column\": null}, {\"name\": \"presented_scrolled_delta_y\", \"type\": \"DOUBLE\", \"desc\": \"Presented delta (change in page offset) for the given frame. This delta is computed by Chrome (based on the input events).\", \"table\": null, \"column\": null}, {\"name\": \"browser_uptime_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the start of the browser process to the first input generation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_generation_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Input generation timestamp (from the Android system) for the first input.\", \"table\": null, \"column\": null}, {\"name\": \"input_reader_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the generation timestamp to the end of InputReader's work. Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"input_dispatcher_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of InputDispatcher's work. Only populated when atrace 'input' category is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"previous_last_input_to_first_input_generation_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from the previous input (last input that wasn't part of this frame) to the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Presentation timestamp for the frame.\", \"table\": null, \"column\": null}, {\"name\": \"browser_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid for the browser main thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"first_input_generation_to_browser_main_dur\", \"type\": \"DURATION\", \"desc\": \"Duration from input generation to when the browser received the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_generation_to_browser_main_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `first_input_generation_to_browser_main_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_touch_move_processing_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for processing  a `TouchMove` event for the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_touch_move_processing_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `first_input_touch_move_processing_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid for the renderer compositor thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"first_input_browser_to_compositor_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the browser and compositor dispatch for the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_browser_to_compositor_delay_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `first_input_browser_to_compositor_delay_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_compositor_dispatch_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for the compositor dispatch for the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_compositor_dispatch_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `first_input_compositor_dispatch_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_compositor_dispatch_to_on_begin_frame_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the compositor dispatch and the \\\"OnBeginFrame\\\" work for the first input in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"first_input_compositor_dispatch_to_on_begin_frame_delay_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `first_input_compositor_dispatch_to_on_begin_frame_delay_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the \\\"OnBeginFrame\\\" work for this frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `compositor_on_begin_frame_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_to_generation_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the \\\"OnBeginFrame\\\" work and the generation of this frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_on_begin_frame_to_generation_delay_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `compositor_on_begin_frame_to_generation_delay_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_frame_to_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between the generation and submission of this frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_generate_frame_to_submit_frame_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `compositor_generate_frame_to_submit_frame_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration for submitting this frame.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_submit_frame_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `compositor_submit_frame_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_compositor_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid for the viz compositor thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"compositor_to_viz_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay when a compositor frame is sent from the renderer to viz.\", \"table\": null, \"column\": null}, {\"name\": \"compositor_to_viz_delay_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `compositor_to_viz_delay_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the viz work done on receiving the compositor frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_receive_compositor_frame_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_receive_compositor_frame_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_wait_for_draw_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between viz receiving the compositor frame to frame draw.\", \"table\": null, \"column\": null}, {\"name\": \"viz_wait_for_draw_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_wait_for_draw_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the viz drawing/swapping work for this frame.\", \"table\": null, \"column\": null}, {\"name\": \"viz_draw_and_swap_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_draw_and_swap_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_gpu_thread_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid for the viz `CompositorGpuThread`.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"viz_to_gpu_delay_dur\", \"type\": \"DURATION\", \"desc\": \"Delay between viz work on compositor thread and `CompositorGpuThread`.\", \"table\": null, \"column\": null}, {\"name\": \"viz_to_gpu_delay_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_to_gpu_delay_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_dur\", \"type\": \"DURATION\", \"desc\": \"Duration of frame buffer swapping work on viz.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_swap_buffers_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_to_latch_dur\", \"type\": \"DURATION\", \"desc\": \"Time between buffers ready until Choreographer's latch.\", \"table\": null, \"column\": null}, {\"name\": \"viz_swap_buffers_to_latch_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_swap_buffers_to_latch_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}, {\"name\": \"viz_latch_to_presentation_dur\", \"type\": \"DURATION\", \"desc\": \"Duration between Choreographer's latch and presentation.\", \"table\": null, \"column\": null}, {\"name\": \"viz_latch_to_presentation_delta_dur\", \"type\": \"DURATION\", \"desc\": \"Difference between `viz_latch_to_presentation_dur` for this frame and the previous frame in the same scroll.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_update_info_step_templates\", \"desc\": \"Source of truth for the definition of the stages of a scroll. Mainly intended\\n for visualization purposes (e.g. in Chrome Scroll Jank plugin).\", \"summary_desc\": \"Source of truth for the definition of the stages of a scroll\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"step_name\", \"type\": \"STRING\", \"desc\": \"The name of a stage of a scroll.\", \"table\": null, \"column\": null}, {\"name\": \"ts_column_name\", \"type\": \"STRING\", \"desc\": \"The name of the column in `chrome_scroll_update_info` which contains the timestamp of the stage.\", \"table\": null, \"column\": null}, {\"name\": \"dur_column_name\", \"type\": \"STRING\", \"desc\": \"The name of the column in `chrome_scroll_update_info` which contains the duration of the stage. NULL if the stage doesn't have a duration.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.event_latency\", \"data_objects\": [{\"name\": \"chrome_event_latencies\", \"desc\": \"All EventLatency slices.\", \"summary_desc\": \"All EventLatency slices.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice Id for the EventLatency scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Slice name.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"The id of the scroll update event (aka LatencyInfo.ID).\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_trace_id\", \"type\": \"LONG\", \"desc\": \"The id of the first frame (pre-surface aggregation) which included the scroll update and was presented. NULL if: (1) the event is not a scroll update (`event_type` is NOT GESTURE_SCROLL_UPDATE, FIRST_GESTURE_SCROLL_UPDATE, or INERTIAL_GESTURE_SCROLL_UPDATE), (2) the scroll update wasn't presented (e.g. it was an overscroll) or (3) the trace comes from an old Chrome version (https://crrev.com/c/6185817 was first included in version 134.0.6977.0 and was cherry-picked in version 133.0.6943.33).\", \"table\": null, \"column\": null}, {\"name\": \"display_trace_id\", \"type\": \"LONG\", \"desc\": \"The id of the first frame (post-surface aggregation) which included the scroll update and was presented. NULL if: (1) the event is not a scroll update (`event_type` is NOT GESTURE_SCROLL_UPDATE, FIRST_GESTURE_SCROLL_UPDATE, or INERTIAL_GESTURE_SCROLL_UPDATE), (2) the scroll update wasn't presented (e.g. it was an overscroll) or (3) the trace comes from an old Chrome version (https://crrev.com/c/6185817 was first included in version 134.0.6977.0 and was cherry-picked in version 133.0.6943.33).\", \"table\": null, \"column\": null}, {\"name\": \"is_presented\", \"type\": \"BOOL\", \"desc\": \"Whether this input event was presented.\", \"table\": null, \"column\": null}, {\"name\": \"event_type\", \"type\": \"STRING\", \"desc\": \"EventLatency event type.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Perfetto track this slice is found on.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_ms\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval (in milliseconds).\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_scrolled_frame\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_scrolled_frame_v3\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow3 metric.\", \"table\": null, \"column\": null}, {\"name\": \"buffer_available_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the BufferAvailableToBufferReady substage.\", \"table\": null, \"column\": null}, {\"name\": \"buffer_ready_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the BufferReadyToLatch substage.\", \"table\": null, \"column\": null}, {\"name\": \"latch_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the LatchToSwapEnd substage (or LatchToPresentation as a fallback).\", \"table\": null, \"column\": null}, {\"name\": \"swap_end_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the SwapEndToPresentationCompositorFrame substage.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp aka the timestamp of the SwapEndToPresentationCompositorFrame substage. TODO(b/341047059): temporarily use LatchToSwapEnd as a workaround if SwapEndToPresentationCompositorFrame is missing due to b/247542163.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_gesture_scroll_updates\", \"desc\": \"All scroll-related events (frames) including gesture scroll updates, begins\\n and ends with respective scroll ids and start/end timestamps, regardless of\\n being presented. This includes pinches that were presented. See b/315761896\\n for context on pinches.\", \"summary_desc\": \"All scroll-related events (frames) including gesture scroll updates, begins  and ends with respective scroll ids and start/end timestamps, regardless of  being presented\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice Id for the EventLatency scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Slice name.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"The id of the scroll update event.\", \"table\": null, \"column\": null}, {\"name\": \"is_presented\", \"type\": \"BOOL\", \"desc\": \"Whether this input event was presented.\", \"table\": null, \"column\": null}, {\"name\": \"event_type\", \"type\": \"STRING\", \"desc\": \"EventLatency event type.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Perfetto track this slice is found on.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval_ms\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval (in milliseconds).\", \"table\": null, \"column\": null}, {\"name\": \"is_janky\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow metric.\", \"table\": null, \"column\": null}, {\"name\": \"is_janky_v3\", \"type\": \"BOOL\", \"desc\": \"Whether the corresponding frame is janky based on the Event.ScrollJank.DelayedFramesPercentage.FixedWindow3 metric.\", \"table\": null, \"column\": null}, {\"name\": \"buffer_available_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the BufferAvailableToBufferReady substage.\", \"table\": null, \"column\": null}, {\"name\": \"buffer_ready_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the BufferReadyToLatch substage.\", \"table\": null, \"column\": null}, {\"name\": \"latch_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the LatchToSwapEnd substage (or LatchToPresentation as a fallback).\", \"table\": null, \"column\": null}, {\"name\": \"swap_end_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp of the SwapEndToPresentationCompositorFrame substage.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp aka the timestamp of the SwapEndToPresentationCompositorFrame substage. TODO(b/341047059): temporarily use LatchToSwapEnd as a workaround if SwapEndToPresentationCompositorFrame is missing due to b/247542163.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The id of the scroll.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.event_latency_description\", \"data_objects\": [{\"name\": \"chrome_event_latency_stage_descriptions\", \"desc\": \"Source of truth of the descriptions of EventLatency stages.\", \"summary_desc\": \"Source of truth of the descriptions of EventLatency stages.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the EventLatency stage.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"A description of the EventLatency stage.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.graphics_pipeline\", \"data_objects\": [{\"name\": \"chrome_graphics_pipeline_surface_frame_steps\", \"desc\": \"`Graphics.Pipeline` steps corresponding to work done by a Viz client to\\n produce a frame (i.e. before surface aggregation). Covers steps:\\n   * STEP_ISSUE_BEGIN_FRAME\\n   * STEP_RECEIVE_BEGIN_FRAME\\n   * STEP_GENERATE_RENDER_PASS\\n   * STEP_GENERATE_COMPOSITOR_FRAME\\n   * STEP_SUBMIT_COMPOSITOR_FRAME\\n   * STEP_RECEIVE_COMPOSITOR_FRAME\\n   * STEP_RECEIVE_BEGIN_FRAME_DISCARD\\n   * STEP_DID_NOT_PRODUCE_FRAME\\n   * STEP_DID_NOT_PRODUCE_COMPOSITOR_FRAME\", \"summary_desc\": \"`Graphics.Pipeline` steps corresponding to work done by a Viz client to  produce a frame (i.e\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice Id of the `Graphics.Pipeline` slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the slice/step.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice/step.\", \"table\": null, \"column\": null}, {\"name\": \"step\", \"type\": \"STRING\", \"desc\": \"Step name of the `Graphics.Pipeline` slice.\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the graphics pipeline, pre-surface aggregation.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid of the thread where this slice exists.\", \"table\": null, \"column\": null}, {\"name\": \"task_start_time_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start time of the parent Chrome scheduler task (if any) of this step.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_graphics_pipeline_display_frame_steps\", \"desc\": \"`Graphics.Pipeline` steps corresponding to work done on creating and\\n presenting one frame during/after surface aggregation. Covers steps:\\n   * STEP_DRAW_AND_SWAP\\n   * STEP_SURFACE_AGGREGATION\\n   * STEP_SEND_BUFFER_SWAP\\n   * STEP_BUFFER_SWAP_POST_SUBMIT\\n   * STEP_FINISH_BUFFER_SWAP\\n   * STEP_SWAP_BUFFERS_ACK\", \"summary_desc\": \"`Graphics.Pipeline` steps corresponding to work done on creating and  presenting one frame during/after surface aggregation\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice Id of the `Graphics.Pipeline` slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the slice/step.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice/step.\", \"table\": null, \"column\": null}, {\"name\": \"step\", \"type\": \"STRING\", \"desc\": \"Step name of the `Graphics.Pipeline` slice.\", \"table\": null, \"column\": null}, {\"name\": \"display_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the graphics pipeline, post-surface aggregation.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid of the thread where this slice exists.\", \"table\": null, \"column\": null}, {\"name\": \"task_start_time_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start time of the parent Chrome scheduler task (if any) of this step.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_surface_frame_id_to_first_display_id\", \"desc\": \"Links surface frames (`chrome_graphics_pipeline_surface_frame_steps`) to the\\n the first display frame (`chrome_graphics_pipeline_display_frame_steps`) into\\n which it was included. As an display frame usually aggregates frames from\\n multiple surfaces, multiple `surface_frame_trace_id`s will correspond to one\\n `display_trace_id`.\", \"summary_desc\": \"Links surface frames (`chrome_graphics_pipeline_surface_frame_steps`) to the  the first display frame (`chrome_graphics_pipeline_display_frame_steps`) into  which it was included\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"surface_frame_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the graphics pipeline, pre-surface aggregation.\", \"table\": null, \"column\": null}, {\"name\": \"display_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the graphics pipeline, post-surface aggregation.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_graphics_pipeline_inputs_to_surface_frames\", \"desc\": \"Links inputs (`chrome_input_pipeline_steps.latency_id`) to the surface frame\\n (`chrome_graphics_pipeline_surface_frame_steps`) to which they correspond.\\n In other words, in general, multiple `latency_id`s will correspond to one\\n `surface_frame_trace_id`.\", \"summary_desc\": \"Links inputs (`chrome_input_pipeline_steps.latency_id`) to the surface frame  (`chrome_graphics_pipeline_surface_frame_steps`) to which they correspond.  In other words, in general, multiple `latency_id`s will correspond to one  `surface_frame_trace_id`.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"latency_id\", \"type\": \"LONG\", \"desc\": \"Id corresponding to the input pipeline.\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_trace_id\", \"type\": \"LONG\", \"desc\": \"Id of the graphics pipeline, post-surface aggregation.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.histograms\", \"data_objects\": [{\"name\": \"chrome_histograms\", \"desc\": \"A helper view on top of the histogram events emitted by Chrome.\\n Requires \\\"disabled-by-default-histogram_samples\\\" Chrome category or the\\n \\\"org.chromium.histogram_sample\\\" data source.\", \"summary_desc\": \"A helper view on top of the histogram events emitted by Chrome.  Requires \\\"disabled-by-default-histogram_samples\\\" Chrome category or the  \\\"org.chromium.histogram_sample\\\" data source.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the histogram.\", \"table\": null, \"column\": null}, {\"name\": \"value\", \"type\": \"LONG\", \"desc\": \"The value of the histogram sample.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of |slice.ts|.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Process name.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"LONG\", \"desc\": \"Upid of the process.\", \"table\": null, \"column\": null}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of the process.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.input\", \"data_objects\": [{\"name\": \"chrome_inputs\", \"desc\": \"Each row represents one input pipeline.\", \"summary_desc\": \"Each row represents one input pipeline.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"latency_id\", \"type\": \"LONG\", \"desc\": \"Id of this Chrome input pipeline (LatencyInfo).\", \"table\": null, \"column\": null}, {\"name\": \"input_type\", \"type\": \"STRING\", \"desc\": \"Input type.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_input_pipeline_steps\", \"desc\": \"Since not all steps have associated input type (but all steps\\n for a given latency id should have the same input type),\\n populate input type for steps where it would be NULL.\", \"summary_desc\": \"Since not all steps have associated input type (but all steps  for a given latency id should have the same input type),  populate input type for steps where it would be NULL.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"latency_id\", \"type\": \"LONG\", \"desc\": \"Id of this Chrome input pipeline (LatencyInfo).\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The step timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Step duration.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"step\", \"type\": \"STRING\", \"desc\": \"Step name (ChromeLatencyInfo.step).\", \"table\": null, \"column\": null}, {\"name\": \"input_type\", \"type\": \"STRING\", \"desc\": \"Input type.\", \"table\": null, \"column\": null}, {\"name\": \"task_start_time_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start time of the parent Chrome scheduler task (if any) of this step.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_coalesced_inputs\", \"desc\": \"For each input, if it was coalesced into another input, get the other input's\\n latency id.\", \"summary_desc\": \"For each input, if it was coalesced into another input, get the other input's  latency id.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"coalesced_latency_id\", \"type\": \"LONG\", \"desc\": \"The `latency_id` of the coalesced input.\", \"table\": null, \"column\": null}, {\"name\": \"presented_latency_id\", \"type\": \"LONG\", \"desc\": \"The `latency_id` of the other input that the current input was coalesced into. Guaranteed to be different from `coalesced_latency_id`.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_touch_move_to_scroll_update\", \"desc\": \"Each scroll update event (except flings) in Chrome starts its life as a touch\\n move event, which is then eventually converted to a scroll update itself.\\n Each of these events is represented by its own LatencyInfo. This table\\n contains a mapping between touch move events and scroll update events they\\n were converted into.\", \"summary_desc\": \"Each scroll update event (except flings) in Chrome starts its life as a touch  move event, which is then eventually converted to a scroll update itself.  Each of these events is represented by its own LatencyInfo\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"touch_move_latency_id\", \"type\": \"LONG\", \"desc\": \"Latency id of the touch move input (LatencyInfo).\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_latency_id\", \"type\": \"LONG\", \"desc\": \"Latency id of the corresponding scroll update input (LatencyInfo).\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_dispatch_android_input_event_to_touch_move\", \"desc\": \"Matches Android input id to the corresponding touch move event.\", \"summary_desc\": \"Matches Android input id to the corresponding touch move event.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"android_input_id\", \"type\": \"STRING\", \"desc\": \"Input id (assigned by the system, used by InputReader and InputDispatcher)\", \"table\": null, \"column\": null}, {\"name\": \"touch_move_latency_id\", \"type\": \"LONG\", \"desc\": \"Latency id.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.interactions\", \"data_objects\": [{\"name\": \"chrome_interactions\", \"desc\": \"All critical user interaction events, including type and table with\\n associated metrics.\", \"summary_desc\": \"All critical user interaction events, including type and table with  associated metrics.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scoped_id\", \"type\": \"LONG\", \"desc\": \"Identifier of the interaction; this is not guaranteed to be unique to the table - rather, it is unique within an individual interaction type. Combine with type to get a unique identifier in this table.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"Type of this interaction, which together with scoped_id uniquely identifies this interaction. Also corresponds to a SQL table name containing more details specific to this type of interaction.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Interaction name - e.g. 'PageLoad', 'Tap', etc. Interactions will have unique metrics stored in other tables.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the CUI event.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the CUI event.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.metadata\", \"data_objects\": [], \"functions\": [{\"name\": \"chrome_hardware_class\", \"desc\": \"Returns hardware class of the device, often use to find device brand\\n and model.\", \"summary_desc\": \"Returns hardware class of the device, often use to find device brand  and model.\", \"args\": [], \"return_type\": \"STRING\", \"return_desc\": \"Hardware class name.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.page_loads\", \"data_objects\": [{\"name\": \"chrome_page_loads\", \"desc\": \"Chrome page loads, including associated high-level metrics and properties.\", \"summary_desc\": \"Chrome page loads, including associated high-level metrics and properties.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the navigation and Chrome browser process; this combination is unique to every individual navigation.\", \"table\": null, \"column\": null}, {\"name\": \"navigation_id\", \"type\": \"LONG\", \"desc\": \"ID of the navigation associated with the page load (i.e. the cross-document navigation in primary main frame which created this page's main document). Also note that navigation_id is specific to a given Chrome browser process, and not globally unique.\", \"table\": null, \"column\": null}, {\"name\": \"navigation_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the start of navigation.\", \"table\": null, \"column\": null}, {\"name\": \"fcp\", \"type\": \"LONG\", \"desc\": \"Duration between the navigation start and the first contentful paint event (web.dev/fcp).\", \"table\": null, \"column\": null}, {\"name\": \"fcp_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the first contentful paint.\", \"table\": null, \"column\": null}, {\"name\": \"lcp\", \"type\": \"LONG\", \"desc\": \"Duration between the navigation start and the largest contentful paint event (web.dev/lcp).\", \"table\": null, \"column\": null}, {\"name\": \"lcp_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the largest contentful paint.\", \"table\": null, \"column\": null}, {\"name\": \"dom_content_loaded_event_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the DomContentLoaded event: https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event\", \"table\": null, \"column\": null}, {\"name\": \"load_event_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the window load event: https://developer.mozilla.org/en-US/docs/Web/API/Window/load_event\", \"table\": null, \"column\": null}, {\"name\": \"mark_fully_loaded_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the page self-reporting as fully loaded through the performance.mark('mark_fully_loaded') API.\", \"table\": null, \"column\": null}, {\"name\": \"mark_fully_visible_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the page self-reporting as fully visible through the performance.mark('mark_fully_visible') API.\", \"table\": null, \"column\": null}, {\"name\": \"mark_interactive_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the page self-reporting as fully interactive through the performance.mark('mark_interactive') API.\", \"table\": null, \"column\": null}, {\"name\": \"url\", \"type\": \"STRING\", \"desc\": \"URL at the page load event.\", \"table\": null, \"column\": null}, {\"name\": \"browser_upid\", \"type\": \"LONG\", \"desc\": \"The unique process id (upid) of the browser process where the page load occurred.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_interactions\", \"data_objects\": [{\"name\": \"chrome_scroll_interactions\", \"desc\": \"Top level scroll events, with metrics.\", \"summary_desc\": \"Top level scroll events, with metrics.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique id for an individual scroll.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the scroll event.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"frame_count\", \"type\": \"LONG\", \"desc\": \"The total number of frames in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_count\", \"type\": \"LONG\", \"desc\": \"The total number of vsyncs in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"missed_vsync_max\", \"type\": \"LONG\", \"desc\": \"The maximum number of vsyncs missed during any and all janks.\", \"table\": null, \"column\": null}, {\"name\": \"missed_vsync_sum\", \"type\": \"LONG\", \"desc\": \"The total number of vsyncs missed during any and all janks.\", \"table\": null, \"column\": null}, {\"name\": \"delayed_frame_count\", \"type\": \"LONG\", \"desc\": \"The number of delayed frames.\", \"table\": null, \"column\": null}, {\"name\": \"predictor_janky_frame_count\", \"type\": \"LONG\", \"desc\": \"The number of frames that are deemed janky to the human eye after Chrome has applied its scroll prediction algorithm.\", \"table\": null, \"column\": null}, {\"name\": \"renderer_upid\", \"type\": \"LONG\", \"desc\": \"The process id this event occurred on.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.predictor_error\", \"data_objects\": [{\"name\": \"chrome_predictor_error\", \"desc\": \"The scrolling offsets and predictor jank values for the actual (applied)\\n scroll events.\", \"summary_desc\": \"The scrolling offsets and predictor jank values for the actual (applied)  scroll events.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"An ID that ties all EventLatencies in a particular scroll. (implementation note: This is the EventLatency TraceId of the GestureScrollbegin).\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"An ID that ties this |event_latency_id| with the Trace Id (another event_latency_id) that it was presented with.\", \"table\": null, \"column\": null}, {\"name\": \"present_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The delta in raw coordinates between this presented EventLatency and the previous presented frame.\", \"table\": null, \"column\": null}, {\"name\": \"relative_offset_y\", \"type\": \"DOUBLE\", \"desc\": \"The pixel offset of this presented EventLatency compared to the initial one.\", \"table\": null, \"column\": null}, {\"name\": \"prev_delta\", \"type\": \"DOUBLE\", \"desc\": \"The delta in raw coordinates of the previous scroll update event.\", \"table\": null, \"column\": null}, {\"name\": \"next_delta\", \"type\": \"DOUBLE\", \"desc\": \"The delta in raw coordinates of the subsequent scroll update event.\", \"table\": null, \"column\": null}, {\"name\": \"predictor_jank\", \"type\": \"DOUBLE\", \"desc\": \"The jank value based on the discrepancy between scroll predictor coordinates and the actual deltas between scroll update events.\", \"table\": null, \"column\": null}, {\"name\": \"delta_threshold\", \"type\": \"DOUBLE\", \"desc\": \"The threshold used to determine if jank occurred.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_jank_cause_map\", \"data_objects\": [{\"name\": \"chrome_scroll_jank_cause_descriptions\", \"desc\": \"Source of truth of the descriptions of EventLatency-based scroll jank causes.\", \"summary_desc\": \"Source of truth of the descriptions of EventLatency-based scroll jank causes.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"event_latency_stage\", \"type\": \"STRING\", \"desc\": \"The name of the EventLatency stage.\", \"table\": null, \"column\": null}, {\"name\": \"cause_process\", \"type\": \"STRING\", \"desc\": \"The process where the cause of scroll jank occurred.\", \"table\": null, \"column\": null}, {\"name\": \"cause_thread\", \"type\": \"STRING\", \"desc\": \"The thread where the cause of scroll jank occurred.\", \"table\": null, \"column\": null}, {\"name\": \"cause_description\", \"type\": \"STRING\", \"desc\": \"A description of the cause of scroll jank.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_jank_causes_with_event_latencies\", \"desc\": \"Combined description of scroll jank cause and associated event latency stage.\", \"summary_desc\": \"Combined description of scroll jank cause and associated event latency stage.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the EventLatency stage.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"Description of the EventLatency stage.\", \"table\": null, \"column\": null}, {\"name\": \"cause_process\", \"type\": \"STRING\", \"desc\": \"The process name that may cause scroll jank.\", \"table\": null, \"column\": null}, {\"name\": \"cause_thread\", \"type\": \"STRING\", \"desc\": \"The thread name that may cause scroll jank. The thread will be on the cause_process.\", \"table\": null, \"column\": null}, {\"name\": \"cause_description\", \"type\": \"STRING\", \"desc\": \"Description of the cause of scroll jank on this process and thread.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_jank_cause_utils\", \"data_objects\": [], \"functions\": [], \"table_functions\": [{\"name\": \"chrome_select_scroll_jank_cause_thread\", \"desc\": \"Function to retrieve the thread id of the thread on a particular process if\\n there are any slices during a particular EventLatency slice duration; this\\n upid/thread combination refers to a cause of Scroll Jank.\", \"summary_desc\": \"Function to retrieve the thread id of the thread on a particular process if  there are any slices during a particular EventLatency slice duration; this  upid/thread combination refers to a cause of Scroll Jank.\", \"args\": [{\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"The slice id of an EventLatency slice.\", \"table\": null, \"column\": null}, {\"name\": \"process_type\", \"type\": \"STRING\", \"desc\": \"The process type that the thread is on: one of 'Browser', 'Renderer' or 'GPU'.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"The name of the thread.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"The utid associated with |thread| on the process with |upid|.\"}]}], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_jank_intervals\", \"data_objects\": [{\"name\": \"chrome_janky_event_latencies_v3\", \"desc\": \"Selects EventLatency slices that correspond with janks in a scroll. This is\\n based on the V3 version of scroll jank metrics.\", \"summary_desc\": \"Selects EventLatency slices that correspond with janks in a scroll\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The slice id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"The track_id for the slice.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the slice (EventLatency).\", \"table\": null, \"column\": null}, {\"name\": \"cause_of_jank\", \"type\": \"STRING\", \"desc\": \"The stage of EventLatency that the caused the jank.\", \"table\": null, \"column\": null}, {\"name\": \"sub_cause_of_jank\", \"type\": \"STRING\", \"desc\": \"The stage of cause_of_jank that caused the jank.\", \"table\": null, \"column\": null}, {\"name\": \"delayed_frame_count\", \"type\": \"LONG\", \"desc\": \"How many vsyncs this frame missed its deadline by.\", \"table\": null, \"column\": null}, {\"name\": \"frame_jank_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp where frame presentation was delayed.\", \"table\": null, \"column\": null}, {\"name\": \"frame_jank_dur\", \"type\": \"LONG\", \"desc\": \"The duration in ms of the delay in frame presentation.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_janky_frame_presentation_intervals\", \"desc\": \"Frame presentation interval is the delta between when the frame was supposed\\n to be presented and when it was actually presented.\", \"summary_desc\": \"Frame presentation interval is the delta between when the frame was supposed  to be presented and when it was actually presented.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"delayed_frame_count\", \"type\": \"LONG\", \"desc\": \"How many vsyncs this frame missed its deadline by.\", \"table\": null, \"column\": null}, {\"name\": \"cause_of_jank\", \"type\": \"STRING\", \"desc\": \"The stage of EventLatency that the caused the jank.\", \"table\": null, \"column\": null}, {\"name\": \"sub_cause_of_jank\", \"type\": \"STRING\", \"desc\": \"The stage of cause_of_jank that caused the jank.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"The id of the associated event latency in the slice table.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_stats\", \"desc\": \"Scroll jank frame presentation stats for individual scrolls.\", \"summary_desc\": \"Scroll jank frame presentation stats for individual scrolls.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"Id of the individual scroll.\", \"table\": null, \"column\": null}, {\"name\": \"frame_count\", \"type\": \"LONG\", \"desc\": \"The number of frames in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"missed_vsyncs\", \"type\": \"LONG\", \"desc\": \"The number of missed vsyncs in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"presented_frame_count\", \"type\": \"LONG\", \"desc\": \"The number presented frames in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"janky_frame_count\", \"type\": \"LONG\", \"desc\": \"The number of janky frames in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"janky_frame_percent\", \"type\": \"DOUBLE\", \"desc\": \"The % of frames that janked in the scroll.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_jank_intervals_v3\", \"desc\": \"Defines slices for all of janky scrolling intervals in a trace.\", \"summary_desc\": \"Defines slices for all of janky scrolling intervals in a trace.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The unique identifier of the janky interval.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of the janky interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the janky interval.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_jank_v3\", \"data_objects\": [{\"name\": \"chrome_presented_gesture_scrolls\", \"desc\": \"Scroll updates, corresponding to all input events that were converted to a\\n presented scroll update.\", \"summary_desc\": \"Scroll updates, corresponding to all input events that were converted to a  presented scroll update.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Minimum slice id for input presented in this frame, the non-presented input.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp for producing the frame.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration between producing and presenting the frame.\", \"table\": null, \"column\": null}, {\"name\": \"last_presented_input_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the last input that arrived and got presented in the frame.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"The id of the scroll update event, a unique identifier to the gesture.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The id of the ongoing scroll.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"event_type\", \"type\": \"STRING\", \"desc\": \"EventLatency event type.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_updates_with_deltas\", \"desc\": \"Associate every trace_id with it's perceived delta_y on the screen after\\n prediction.\", \"summary_desc\": \"Associate every trace_id with it's perceived delta_y on the screen after  prediction.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"The id of the scroll update event.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The perceived delta_y on the screen post prediction.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_full_frame_view\", \"desc\": \"Obtain the subset of input events that were fully presented.\", \"summary_desc\": \"Obtain the subset of input events that were fully presented.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"last_presented_input_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the last presented input.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll update.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_full_frame_delta_view\", \"desc\": \"Join deltas with EventLatency data.\", \"summary_desc\": \"Join deltas with EventLatency data.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll update.\", \"table\": null, \"column\": null}, {\"name\": \"last_presented_input_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the last presented input.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The perceived delta_y on the screen post prediction.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_merged_frame_view\", \"desc\": \"Group all gestures presented at the same timestamp together in\\n a single row.\", \"summary_desc\": \"Group all gestures presented at the same timestamp together in  a single row.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"ID of the frame.\", \"table\": null, \"column\": null}, {\"name\": \"max_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the last presented input.\", \"table\": null, \"column\": null}, {\"name\": \"min_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The earliest frame start timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll update.\", \"table\": null, \"column\": null}, {\"name\": \"encapsulated_scroll_ids\", \"type\": \"STRING\", \"desc\": \"All scroll updates associated with the frame presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"total_delta\", \"type\": \"DOUBLE\", \"desc\": \"Sum of all perceived delta_y values at the frame presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"segregated_delta_y\", \"type\": \"STRING\", \"desc\": \"Lists all of the perceived delta_y values at the frame presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Maximum duration of the associated EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Frame presentation timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_frame_info_with_delay\", \"desc\": \"View contains all chrome presented frames during gesture updates\\n while calculating delay since last presented which usually should\\n equal to |VSYNC_INTERVAL| if no jank is present.\", \"summary_desc\": \"View contains all chrome presented frames during gesture updates  while calculating delay since last presented which usually should  equal to |VSYNC_INTERVAL| if no jank is present.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"gesture scroll slice id.\", \"table\": null, \"column\": null}, {\"name\": \"max_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"OS timestamp of the last touch move arrival within a frame.\", \"table\": null, \"column\": null}, {\"name\": \"min_start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"OS timestamp of the first touch move arrival within a frame.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The scroll which the touch belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"ID of the associated scroll update.\", \"table\": null, \"column\": null}, {\"name\": \"encapsulated_scroll_ids\", \"type\": \"STRING\", \"desc\": \"Trace ids of all frames presented in at this vsync.\", \"table\": null, \"column\": null}, {\"name\": \"total_delta\", \"type\": \"DOUBLE\", \"desc\": \"Summation of all delta_y of all gesture scrolls in this frame.\", \"table\": null, \"column\": null}, {\"name\": \"segregated_delta_y\", \"type\": \"STRING\", \"desc\": \"All delta y of all gesture scrolls comma separated, summing those gives |total_delta|.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"Event latency id of the presented frame.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the EventLatency.\", \"table\": null, \"column\": null}, {\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"Timestamp at which the frame was shown on the screen.\", \"table\": null, \"column\": null}, {\"name\": \"delay_since_last_frame\", \"type\": \"DOUBLE\", \"desc\": \"Time elapsed since the previous frame was presented, usually equals |VSYNC| if no frame drops happened.\", \"table\": null, \"column\": null}, {\"name\": \"delay_since_last_input\", \"type\": \"DOUBLE\", \"desc\": \"Difference in OS timestamps of inputs in the current and the previous frame.\", \"table\": null, \"column\": null}, {\"name\": \"prev_event_latency_id\", \"type\": \"LONG\", \"desc\": \"The event latency id that will be used as a reference to determine the jank cause.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_vsyncs\", \"desc\": \"Calculate |VSYNC_INTERVAL| as the lowest vsync seen in the trace or the\\n minimum delay between frames larger than zero.\\n\\n TODO(~M130): Remove the lowest vsync since we should always have vsync_interval_ms.\", \"summary_desc\": \"Calculate |VSYNC_INTERVAL| as the lowest vsync seen in the trace or the  minimum delay between frames larger than zero.   TODO(~M130): Remove the lowest vsync since we should always have vsync_interval_ms.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"vsync_interval\", \"type\": \"DOUBLE\", \"desc\": \"The lowest delay between frames larger than zero.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_janky_frames_no_cause\", \"desc\": \"Filter the frame view only to frames that had missed vsyncs.\", \"summary_desc\": \"Filter the frame view only to frames that had missed vsyncs.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"delay_since_last_frame\", \"type\": \"DOUBLE\", \"desc\": \"Time elapsed since the previous frame was presented, will be more than |VSYNC| in this view.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"Event latency id of the presented frame.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval at the time of recording the trace.\", \"table\": null, \"column\": null}, {\"name\": \"hardware_class\", \"type\": \"STRING\", \"desc\": \"Device brand and model.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The scroll corresponding to this frame.\", \"table\": null, \"column\": null}, {\"name\": \"prev_event_latency_id\", \"type\": \"LONG\", \"desc\": \"The event latency id that will be used as a reference to determine the jank cause.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_janky_frames_no_subcause\", \"desc\": \"Janky frame information including the jank cause.\", \"summary_desc\": \"Janky frame information including the jank cause.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"delay_since_last_frame\", \"type\": \"DOUBLE\", \"desc\": \"Time elapsed since the previous frame was presented, will be more than |VSYNC| in this view.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"Event latency id of the presented frame.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval at the time of recording the trace.\", \"table\": null, \"column\": null}, {\"name\": \"hardware_class\", \"type\": \"STRING\", \"desc\": \"Device brand and model.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The scroll corresponding to this frame.\", \"table\": null, \"column\": null}, {\"name\": \"prev_event_latency_id\", \"type\": \"LONG\", \"desc\": \"The event latency id that will be used as a reference to determine the jank cause.\", \"table\": null, \"column\": null}, {\"name\": \"cause_id\", \"type\": \"LONG\", \"desc\": \"Id of the slice corresponding to the offending stage.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_janky_frames\", \"desc\": \"Finds all causes of jank for all janky frames, and a cause of sub jank\\n if the cause of jank was GPU related.\", \"summary_desc\": \"Finds all causes of jank for all janky frames, and a cause of sub jank  if the cause of jank was GPU related.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"cause_of_jank\", \"type\": \"STRING\", \"desc\": \"The reason the Vsync was missed.\", \"table\": null, \"column\": null}, {\"name\": \"sub_cause_of_jank\", \"type\": \"STRING\", \"desc\": \"Further breakdown if the root cause was GPU related.\", \"table\": null, \"column\": null}, {\"name\": \"delay_since_last_frame\", \"type\": \"DOUBLE\", \"desc\": \"Time elapsed since the previous frame was presented, will be more than |VSYNC| in this view.\", \"table\": null, \"column\": null}, {\"name\": \"event_latency_id\", \"type\": \"LONG\", \"desc\": \"Event latency id of the presented frame.\", \"table\": null, \"column\": null}, {\"name\": \"vsync_interval\", \"type\": \"DOUBLE\", \"desc\": \"Vsync interval at the time of recording the trace.\", \"table\": null, \"column\": null}, {\"name\": \"hardware_class\", \"type\": \"STRING\", \"desc\": \"Device brand and model.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The scroll corresponding to this frame.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_unique_frame_presentation_ts\", \"desc\": \"Counting all unique frame presentation timestamps.\", \"summary_desc\": \"Counting all unique frame presentation timestamps.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"presentation_timestamp\", \"type\": \"LONG\", \"desc\": \"The unique frame presentation timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_janky_frames_percentage\", \"desc\": \"Dividing missed frames over total frames to get janky frame percentage.\\n This represents the v3 scroll jank metrics.\\n Reflects Event.Jank.DelayedFramesPercentage UMA metric.\", \"summary_desc\": \"Dividing missed frames over total frames to get janky frame percentage.  This represents the v3 scroll jank metrics.  Reflects Event.Jank.DelayedFramesPercentage UMA metric.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"delayed_frame_percentage\", \"type\": \"DOUBLE\", \"desc\": \"The percent of missed frames relative to total frames - aka the percent of janky frames.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_frames_per_scroll\", \"desc\": \"Number of frames and janky frames per scroll.\", \"summary_desc\": \"Number of frames and janky frames per scroll.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"The ID of the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"num_frames\", \"type\": \"LONG\", \"desc\": \"The number of frames in the scroll.\", \"table\": null, \"column\": null}, {\"name\": \"num_janky_frames\", \"type\": \"LONG\", \"desc\": \"The number of delayed/janky frames.\", \"table\": null, \"column\": null}, {\"name\": \"scroll_jank_percentage\", \"type\": \"DOUBLE\", \"desc\": \"The percentage of janky frames relative to total frames.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_jank_v3_cause\", \"data_objects\": [], \"functions\": [{\"name\": \"chrome_get_v3_jank_cause_id\", \"desc\": \"Given two slice Ids A and B, find the maximum difference\\n between the durations of it's direct children with matching names\\n for example if slice A has children named (X, Y, Z) with durations of (10, 10, 5)\\n and slice B has children named (X, Y) with durations of (9, 9), the function will return\\n the slice id of the slice named Z that is A's child, as no matching slice named Z was found\\n under B, making 5 - 0 = 5 the maximum delta between both slice's direct children\", \"summary_desc\": \"Given two slice Ids A and B, find the maximum difference  between the durations of it's direct children with matching names  for example if slice A has children named (X, Y, Z) with durations of (10, 10, 5)  and slice B has children named (X, Y) with durations of (9, 9), the function will return  the slice id of the slice named Z that is A's child, as no matching slice named Z was found  under B, making 5 - 0 = 5 the maximum delta between both slice's direct children\", \"args\": [{\"name\": \"janky_slice_id\", \"type\": \"LONG\", \"desc\": \"The slice id of the parent slice that we want to cause among it's children.\", \"table\": null, \"column\": null}, {\"name\": \"prev_slice_id\", \"type\": \"LONG\", \"desc\": \"The slice id of the parent slice that's the reference in comparison to |janky_slice_id|.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"The slice id of the breakdown that has the maximum duration delta.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.scroll_offsets\", \"data_objects\": [{\"name\": \"chrome_scroll_input_deltas\", \"desc\": \"The raw input deltas for all input events which were part of a scroll.\", \"summary_desc\": \"The raw input deltas for all input events which were part of a scroll.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"Scroll update id (aka LatencyInfo.ID) for this scroll update input event.\", \"table\": null, \"column\": null}, {\"name\": \"delta_x\", \"type\": \"DOUBLE\", \"desc\": \"The delta in pixels (scaled to the device's screen size) how much this input event moved over the X axis vs previous, as reported by the OS.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The delta in pixels (scaled to the device's screen size) how much this input event moved over the Y axis vs previous, as reported by the OS.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_input_offsets\", \"desc\": \"The raw coordinates and pixel offsets for all input events which were part of\\n a scroll.\", \"summary_desc\": \"The raw coordinates and pixel offsets for all input events which were part of  a scroll.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"An ID for this scroll update (aka LatencyInfo.ID).\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"An ID for the scroll this scroll update belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp the of the scroll input event.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The delta in raw coordinates between this scroll update event and the previous.\", \"table\": null, \"column\": null}, {\"name\": \"relative_offset_y\", \"type\": \"DOUBLE\", \"desc\": \"The total delta of all scroll updates within the same as scroll up to and including this scroll update.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scroll_presented_deltas\", \"desc\": \"The page offset delta (by how much the page was scrolled vs previous frame)\\n for each frame.\\n This is the resulting delta that is shown to the user after the input has\\n been processed. `chrome_scroll_input_deltas` tracks the underlying signal\\n deltas between consecutive input events.\", \"summary_desc\": \"The page offset delta (by how much the page was scrolled vs previous frame)  for each frame.  This is the resulting delta that is shown to the user after the input has  been processed\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"Scroll update id (aka LatencyInfo.ID) for this scroll update input event.\", \"table\": null, \"column\": null}, {\"name\": \"delta_x\", \"type\": \"DOUBLE\", \"desc\": \"The delta in pixels (scaled to the device's screen size) how much this input event moved over the X axis vs previous, as reported by the OS.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The delta in pixels (scaled to the device's screen size) how much this input event moved over the Y axis vs previous, as reported by the OS.\", \"table\": null, \"column\": null}, {\"name\": \"offset_x\", \"type\": \"LONG\", \"desc\": \"The page offset in pixels (scaled to the device's screen size) along the X axis.\", \"table\": null, \"column\": null}, {\"name\": \"offset_y\", \"type\": \"LONG\", \"desc\": \"The page offset in pixels (scaled to the device's screen size) along the Y axis.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_presented_scroll_offsets\", \"desc\": \"The scrolling offsets for the actual (applied) scroll events. These are not\\n necessarily inclusive of all user scroll events, rather those scroll events\\n that are actually processed.\", \"summary_desc\": \"The scrolling offsets for the actual (applied) scroll events\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"scroll_update_id\", \"type\": \"LONG\", \"desc\": \"An ID for this scroll update (aka LatencyInfo.ID).\", \"table\": null, \"column\": null}, {\"name\": \"scroll_id\", \"type\": \"LONG\", \"desc\": \"An ID for the scroll this scroll update belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Presentation timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"delta_y\", \"type\": \"DOUBLE\", \"desc\": \"The delta in raw coordinates between this scroll update event and the previous.\", \"table\": null, \"column\": null}, {\"name\": \"relative_offset_y\", \"type\": \"DOUBLE\", \"desc\": \"The pixel offset of this scroll update event compared to the initial one.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank.utils\", \"data_objects\": [], \"functions\": [], \"table_functions\": [{\"name\": \"chrome_select_long_task_slices\", \"desc\": \"Extract mojo information for the long-task-tracking scenario for specific\\n names. For example, LongTaskTracker slices may have associated IPC\\n metadata, or InterestingTask slices for input may have associated IPC to\\n determine whether the task is fling/etc.\", \"summary_desc\": \"Extract mojo information for the long-task-tracking scenario for specific  names\", \"args\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of slice.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"interface_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the interface of the IPC call.\"}, {\"name\": \"ipc_hash\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Hash of the IPC call.\"}, {\"name\": \"message_type\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Message type (e.g. reply).\"}, {\"name\": \"id\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"The slice id.\"}]}], \"macros\": []}, {\"module_name\": \"chrome.scroll_jank_tagging\", \"data_objects\": [{\"name\": \"chrome_scroll_jank_tags\", \"desc\": \"List of scroll jank causes that apply to janky scroll frames.\\n Each frame can have zero or multiple tags.\", \"summary_desc\": \"List of scroll jank causes that apply to janky scroll frames.  Each frame can have zero or multiple tags.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame ID.\", \"table\": null, \"column\": null}, {\"name\": \"tag\", \"type\": \"STRING\", \"desc\": \"Tag of the scroll jank cause.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_tagged_janky_scroll_frames\", \"desc\": \"Consolidated list of tags for each janky scroll frame.\", \"summary_desc\": \"Consolidated list of tags for each janky scroll frame.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"tagged\", \"type\": \"BOOL\", \"desc\": \"Whether this frame has any tags or not.\", \"table\": null, \"column\": null}, {\"name\": \"tags\", \"type\": \"STRING\", \"desc\": \"Comma-separated list of tags for this frame.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.speedometer\", \"data_objects\": [{\"name\": \"chrome_speedometer_measure\", \"desc\": \"Augmented slices for Speedometer measurements.\\n These are the intervals of time Speedometer uses to compute the final score.\\n There are two intervals that are measured for every test: sync and async\", \"summary_desc\": \"Augmented slices for Speedometer measurements.  These are the intervals of time Speedometer uses to compute the final score.  There are two intervals that are measured for every test: sync and async\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Full measure name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Speedometer iteration the slice belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"suite_name\", \"type\": \"STRING\", \"desc\": \"Suite name\", \"table\": null, \"column\": null}, {\"name\": \"test_name\", \"type\": \"STRING\", \"desc\": \"Test name\", \"table\": null, \"column\": null}, {\"name\": \"measure_type\", \"type\": \"STRING\", \"desc\": \"Type of the measure (sync or async)\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_speedometer_iteration\", \"desc\": \"Slice that covers one Speedometer iteration.\\n Depending on the Speedometer version these slices might need to be estimated\\n as older versions of Speedometer to not emit marks for this interval. The\\n metrics associated are the same ones Speedometer would output, but note we\\n use ns precision (Speedometer uses ~100us) so the actual values might differ\\n a bit.\", \"summary_desc\": \"Slice that covers one Speedometer iteration.  Depending on the Speedometer version these slices might need to be estimated  as older versions of Speedometer to not emit marks for this interval\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Iteration name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Iteration number\", \"table\": null, \"column\": null}, {\"name\": \"geomean\", \"type\": \"DOUBLE\", \"desc\": \"Geometric mean of the suite durations for this iteration.\", \"table\": null, \"column\": null}, {\"name\": \"score\", \"type\": \"DOUBLE\", \"desc\": \"Speedometer score for this iteration (The total score for a run in the average of all iteration scores).\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"chrome_speedometer_score\", \"desc\": \"Returns the Speedometer score for all iterations in the trace\", \"summary_desc\": \"Returns the Speedometer score for all iterations in the trace\", \"args\": [], \"return_type\": \"DOUBLE\", \"return_desc\": \"Speedometer score\"}, {\"name\": \"chrome_speedometer_renderer_main_utid\", \"desc\": \"Returns the utid for the main thread that ran Speedometer 3\", \"summary_desc\": \"Returns the utid for the main thread that ran Speedometer 3\", \"args\": [], \"return_type\": \"LONG\", \"return_desc\": \"Renderer main utid\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.speedometer_2_1\", \"data_objects\": [{\"name\": \"chrome_speedometer_2_1_measure\", \"desc\": \"Augmented slices for Speedometer measurements.\\n These are the intervals of time Speedometer uses to compute the final score.\\n There are two intervals that are measured for every test: sync and async\\n sync is the time between the start and sync-end marks, async is the time\\n between the sync-end and async-end marks.\", \"summary_desc\": \"Augmented slices for Speedometer measurements.  These are the intervals of time Speedometer uses to compute the final score.  There are two intervals that are measured for every test: sync and async  sync is the time between the start and sync-end marks, async is the time  between the sync-end and async-end marks.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Full measure name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Speedometer iteration the slice belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"suite_name\", \"type\": \"STRING\", \"desc\": \"Suite name\", \"table\": null, \"column\": null}, {\"name\": \"test_name\", \"type\": \"STRING\", \"desc\": \"Test name\", \"table\": null, \"column\": null}, {\"name\": \"measure_type\", \"type\": \"STRING\", \"desc\": \"Type of the measure (sync or async)\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_speedometer_2_1_iteration\", \"desc\": \"Slice that covers one Speedometer iteration.\\n This slice is actually estimated as a default Speedometer run will not emit\\n marks to cover this interval. The metrics associated are the same ones\\n Speedometer would output, but note we use ns precision (Speedometer uses\\n ~100us) so the actual values might differ a bit. Also note Speedometer\\n returns the values in ms these here and in ns.\", \"summary_desc\": \"Slice that covers one Speedometer iteration.  This slice is actually estimated as a default Speedometer run will not emit  marks to cover this interval\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Iteration name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Iteration number\", \"table\": null, \"column\": null}, {\"name\": \"geomean\", \"type\": \"DOUBLE\", \"desc\": \"Geometric mean of the suite durations for this iteration.\", \"table\": null, \"column\": null}, {\"name\": \"score\", \"type\": \"DOUBLE\", \"desc\": \"Speedometer score for this iteration (The total score for a run in the average of all iteration scores).\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"chrome_speedometer_2_1_score\", \"desc\": \"Returns the Speedometer 2.1 score for all iterations in the trace\", \"summary_desc\": \"Returns the Speedometer 2.1 score for all iterations in the trace\", \"args\": [], \"return_type\": \"DOUBLE\", \"return_desc\": \"Speedometer 2.1 score\"}, {\"name\": \"chrome_speedometer_2_1_renderer_main_utid\", \"desc\": \"Returns the utid for the main thread that ran Speedometer 2.1\", \"summary_desc\": \"Returns the utid for the main thread that ran Speedometer 2.1\", \"args\": [], \"return_type\": \"LONG\", \"return_desc\": \"Renderer main utid\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.speedometer_3\", \"data_objects\": [{\"name\": \"chrome_speedometer_3_measure\", \"desc\": \"Augmented slices for Speedometer measurements.\\n These are the intervals of time Speedometer uses to compute the final score.\\n There are two intervals that are measured for every test: sync and async.\", \"summary_desc\": \"Augmented slices for Speedometer measurements.  These are the intervals of time Speedometer uses to compute the final score.  There are two intervals that are measured for every test: sync and async.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the measure slice\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Full measure name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Speedometer iteration the slice belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"suite_name\", \"type\": \"STRING\", \"desc\": \"Suite name\", \"table\": null, \"column\": null}, {\"name\": \"test_name\", \"type\": \"STRING\", \"desc\": \"Test name\", \"table\": null, \"column\": null}, {\"name\": \"measure_type\", \"type\": \"STRING\", \"desc\": \"Type of the measure (sync or async)\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_speedometer_3_iteration\", \"desc\": \"Slice that covers one Speedometer iteration.\\n The metrics associated are the same ones\\n Speedometer would output, but note we use ns precision (Speedometer uses\\n ~100us) so the actual values might differ a bit.\", \"summary_desc\": \"Slice that covers one Speedometer iteration.  The metrics associated are the same ones  Speedometer would output, but note we use ns precision (Speedometer uses  ~100us) so the actual values might differ a bit.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the iteration\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Iteration name\", \"table\": null, \"column\": null}, {\"name\": \"iteration\", \"type\": \"LONG\", \"desc\": \"Iteration number\", \"table\": null, \"column\": null}, {\"name\": \"geomean\", \"type\": \"DOUBLE\", \"desc\": \"Geometric mean of the suite durations for this iteration.\", \"table\": null, \"column\": null}, {\"name\": \"score\", \"type\": \"DOUBLE\", \"desc\": \"Speedometer score for this iteration (The total score for a run in the average of all iteration scores).\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"chrome_speedometer_3_score\", \"desc\": \"Returns the Speedometer 3 score for all iterations in the trace\", \"summary_desc\": \"Returns the Speedometer 3 score for all iterations in the trace\", \"args\": [], \"return_type\": \"DOUBLE\", \"return_desc\": \"Speedometer 3 score\"}, {\"name\": \"chrome_speedometer_3_renderer_main_utid\", \"desc\": \"Returns the utid for the main thread that ran Speedometer 3\", \"summary_desc\": \"Returns the utid for the main thread that ran Speedometer 3\", \"args\": [], \"return_type\": \"LONG\", \"return_desc\": \"Renderer main utid\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.startups\", \"data_objects\": [{\"name\": \"chrome_startups\", \"desc\": \"Chrome startups, including launch cause.\", \"summary_desc\": \"Chrome startups, including launch cause.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique ID\", \"table\": null, \"column\": null}, {\"name\": \"activity_id\", \"type\": \"LONG\", \"desc\": \"Chrome Activity event id of the launch.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the launch start event.\", \"table\": null, \"column\": null}, {\"name\": \"startup_begin_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp that the startup occurred.\", \"table\": null, \"column\": null}, {\"name\": \"first_visible_content_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp to the first visible content.\", \"table\": null, \"column\": null}, {\"name\": \"launch_cause\", \"type\": \"STRING\", \"desc\": \"Launch cause. See Startup.LaunchCauseType in chrome_track_event.proto.\", \"table\": null, \"column\": null}, {\"name\": \"browser_upid\", \"type\": \"LONG\", \"desc\": \"Process ID of the Browser where the startup occurred.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.tasks\", \"data_objects\": [{\"name\": \"chrome_java_views\", \"desc\": \"A list of slices corresponding to operations on interesting (non-generic)\\n Chrome Java views. The view is considered interested if it's not a system\\n (ContentFrameLayout) or generic library (CompositorViewHolder) views.\\n\\n TODO(altimin): Add \\\"columns_from slice\\\" annotation.\\n TODO(altimin): convert this to EXTEND_TABLE when it becomes available.\", \"summary_desc\": \"A list of slices corresponding to operations on interesting (non-generic)  Chrome Java views\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"filtered_name\", \"type\": \"STRING\", \"desc\": \"Name of the view.\", \"table\": null, \"column\": null}, {\"name\": \"is_software_screenshot\", \"type\": \"BOOL\", \"desc\": \"Whether this slice is a part of non-accelerated capture toolbar screenshot.\", \"table\": null, \"column\": null}, {\"name\": \"is_hardware_screenshot\", \"type\": \"BOOL\", \"desc\": \"Whether this slice is a part of accelerated capture toolbar screenshot.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_scheduler_tasks\", \"desc\": \"A list of tasks executed by Chrome scheduler.\", \"summary_desc\": \"A list of tasks executed by Chrome scheduler.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Slice id.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"Type.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the task.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid of the thread this task run on.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread this task run on.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"LONG\", \"desc\": \"Upid of the process of this task.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process of this task.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Same as slice.track_id.\", \"table\": null, \"column\": null}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Same as slice.category.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Same as slice.depth.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"Same as slice.parent_id.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Same as slice.arg_set_id.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Same as slice.thread_ts.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"DURATION\", \"desc\": \"Same as slice.thread_dur.\", \"table\": null, \"column\": null}, {\"name\": \"posted_from\", \"type\": \"STRING\", \"desc\": \"Source location where the PostTask was called.\", \"table\": null, \"column\": null}]}, {\"name\": \"chrome_tasks\", \"desc\": \"A list of \\\"Chrome tasks\\\": top-level execution units (e.g. scheduler tasks /\\n IPCs / system callbacks) run by Chrome. For a given thread, the slices\\n corresponding to these tasks will not intersect.\", \"summary_desc\": \"A list of \\\"Chrome tasks\\\": top-level execution units (e.g\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Id for the given task, also the id of the slice this task corresponds to.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name for the given task.\", \"table\": null, \"column\": null}, {\"name\": \"task_type\", \"type\": \"STRING\", \"desc\": \"Type of the task (e.g. \\\"scheduler\\\").\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Thread name.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"Utid.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Process name.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"LONG\", \"desc\": \"Upid.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of |slice.ts|.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of |slice.dur|.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Alias of |slice.track_id|.\", \"table\": null, \"column\": null}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of |slice.category|.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of |slice.arg_set_id|.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of |slice.thread_ts|.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"DURATION\", \"desc\": \"Alias of |slice.thread_dur|.\", \"table\": null, \"column\": null}, {\"name\": \"full_name\", \"type\": \"STRING\", \"desc\": \"STRING    Legacy alias for |name|.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.vsync_intervals\", \"data_objects\": [{\"name\": \"chrome_vsync_intervals\", \"desc\": \"A simple table that checks the time between VSync (this can be used to\\n determine if we're refreshing at 90 FPS or 60 FPS).\\n\\n Note: In traces without the \\\"Java\\\" category there will be no VSync\\n       TraceEvents and this table will be empty.\", \"summary_desc\": \"A simple table that checks the time between VSync (this can be used to  determine if we're refreshing at 90 FPS or 60 FPS).   Note: In traces without the \\\"Java\\\" category there will be no VSync        TraceEvents and this table will be empty.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"slice_id\", \"type\": \"LONG\", \"desc\": \"Slice id of the vsync slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of the vsync slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the vsync slice.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"LONG\", \"desc\": \"Track id of the vsync slice.\", \"table\": null, \"column\": null}, {\"name\": \"time_to_next_vsync\", \"type\": \"LONG\", \"desc\": \"Duration until next vsync arrives.\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"chrome_calculate_avg_vsync_interval\", \"desc\": \"Function: compute the average Vysnc interval of the\\n gesture (hopefully this would be either 60 FPS for the whole gesture or 90\\n FPS but that isnt always the case) on the given time segment.\\n If the trace doesnt contain the VSync TraceEvent we just fall back on\\n assuming its 60 FPS (this is the 1.6e+7 in the COALESCE which\\n corresponds to 16 ms or 60 FPS).\", \"summary_desc\": \"Function: compute the average Vysnc interval of the  gesture (hopefully this would be either 60 FPS for the whole gesture or 90  FPS but that isnt always the case) on the given time segment.  If the trace doesnt contain the VSync TraceEvent we just fall back on  assuming its 60 FPS (this is the 1.6e+7 in the COALESCE which  corresponds to 16 ms or 60 FPS).\", \"args\": [{\"name\": \"begin_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Interval start time.\", \"table\": null, \"column\": null}, {\"name\": \"end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Interval end time.\", \"table\": null, \"column\": null}], \"return_type\": \"DOUBLE\", \"return_desc\": \"The average vsync interval on this time segment or 1.6e+7, if trace doesn't contain the VSync TraceEvent.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"chrome.web_content_interactions\", \"data_objects\": [{\"name\": \"chrome_web_content_interactions\", \"desc\": \"Chrome web content interactions (InteractionToFirstPaint), including\\n associated high-level metrics and properties.\\n\\n Multiple events may occur for the same interaction; each row in this table\\n represents the primary (longest) event for the interaction.\\n\\n Web content interactions are discrete, as opposed to sustained (e.g.\\n scrolling); and only occur with the web content itself, as opposed to other\\n parts of Chrome (e.g. omnibox). Interaction events include taps, clicks,\\n keyboard input (typing), and drags.\", \"summary_desc\": \"Chrome web content interactions (InteractionToFirstPaint), including  associated high-level metrics and properties.   Multiple events may occur for the same interaction; each row in this table  represents the primary (longest) event for the interaction.   Web content interactions are discrete, as opposed to sustained (e.g.  scrolling); and only occur with the web content itself, as opposed to other  parts of Chrome (e.g\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique id for this interaction.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the event. Because multiple events may occur for the same interaction, this is the start timestamp of the longest event.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the event. Because multiple events may occur for the same interaction, this is the duration of the longest event.\", \"table\": null, \"column\": null}, {\"name\": \"interaction_type\", \"type\": \"STRING\", \"desc\": \"The interaction type.\", \"table\": null, \"column\": null}, {\"name\": \"total_duration_ms\", \"type\": \"LONG\", \"desc\": \"The total duration of all events that occurred for the same interaction.\", \"table\": null, \"column\": null}, {\"name\": \"renderer_upid\", \"type\": \"LONG\", \"desc\": \"The process id this event occurred on.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"counters\", \"modules\": [{\"module_name\": \"counters.global_tracks\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"counters.intervals\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"counter_leading_intervals\", \"desc\": \"For a given counter timeline (e.g. a single counter track), returns\\n intervals of time where the counter has the same value. For every run\\n of identical values, this macro will return a row for the first one,\\n and a row merging all subsequent ones. This to to facilitate construction\\n of counters from delta_values.\\n\\n Intervals are computed in a \\\"forward-looking\\\" way. That is, if a counter\\n changes value at some timestamp, it's assumed it *just* reached that\\n value and it should continue to have that value until the next\\n value change. The final value is assumed to hold until the very end of\\n the trace.\\n\\n For example, suppose we have the following data:\\n ```\\n ts=0, value=10, track_id=1\\n ts=0, value=10, track_id=2\\n ts=10, value=10, track_id=1\\n ts=10, value=20, track_id=2\\n ts=20, value=30, track_id=1\\n [end of trace at ts = 40]\\n ```\\n\\n Then this macro will generate the following intervals:\\n ```\\n ts=0, dur=10, value=10, track_id=1\\n ts=10, dur=10, value=10, track_id=1\\n ts=20, dur=10, value=30, track_id=1\\n ts=0, dur=10, value=10, track_id=2\\n ts=10, dur=30, value=20, track_id=2\\n ```\", \"summary_desc\": \"For a given counter timeline (e.g\", \"return_desc\": \"Table with the schema: id LONG, As passed in ts TIMESTAMP, As passed in dur DURATION, Difference to the timestamp for the leading row. track_id JOINID(track.id), As passed in value DOUBLE, As passed in next_value DOUBLE, Value for the leading row. delta_value DOUBLE Delta to the *lagging* row - note that this is not the same thing as (next_value - value).\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"counter_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a \\\"counter-like\\\" table. This table must have the columns \\\"id\\\" and \\\"ts\\\" and \\\"track_id\\\" and \\\"value\\\" corresponding to an id, timestamp, counter track_id and associated counter value.\", \"table\": null, \"column\": null}]}]}]}, {\"name\": \"export\", \"modules\": [{\"module_name\": \"export.to_firefox_profile\", \"data_objects\": [], \"functions\": [{\"name\": \"export_to_firefox_profile\", \"desc\": \"Dumps all trace data as a Firefox profile json string\\n See `Profile` in\\n https://github.com/firefox-devtools/profiler/blob/main/src/types/profile.js\\n Also\\n https://firefox-source-docs.mozilla.org/tools/profiler/code-overview.html\\n\\n You would probably want to download the generated json and then open at\\n https://https://profiler.firefox.com\\n You can easily do this from the UI via the following SQL\\n `SELECT CAST(export_to_firefox_profile() AS BLOB) AS profile;`\\n The result will have a link for you to download this json as a file.\", \"summary_desc\": \"Dumps all trace data as a Firefox profile json string  See `Profile` in  https://github.com/firefox-devtools/profiler/blob/main/src/types/profile.js  Also  https://firefox-source-docs.mozilla.org/tools/profiler/code-overview.html   You would probably want to download the generated json and then open at  https://https://profiler.firefox.com  You can easily do this from the UI via the following SQL  `SELECT CAST(export_to_firefox_profile() AS BLOB) AS profile;`  The result will have a link for you to download this json as a file.\", \"args\": [], \"return_type\": \"STRING\", \"return_desc\": \"Json profile\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"export.to_svg\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"graphs\", \"modules\": [{\"module_name\": \"graphs.critical_path\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"graphs.dominator_tree\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"graph_dominator_tree\", \"desc\": \"Given a table containing a directed flow-graph and an entry node, computes\\n the \\\"dominator tree\\\" for the graph. See [1] for an explanation of what a\\n dominator tree is.\\n\\n [1] https://en.wikipedia.org/wiki/Dominator_(graph_theory)\\n\\n Example usage on traces containing heap graphs:\\n ```\\n CREATE PERFETTO VIEW dominator_compatible_heap_graph AS\\n -- Extract the edges from the heap graph which correspond to references\\n -- between objects.\\n SELECT\\n   owner_id AS source_node_id,\\n   owned_id as dest_node_id\\n FROM heap_graph_reference\\n JOIN heap_graph_object owner on heap_graph_reference.owner_id = owner.id\\n WHERE owned_id IS NOT NULL AND owner.reachable\\n UNION ALL\\n -- Since a Java heap graph is a \\\"forest\\\" structure, we need to add a dummy\\n -- \\\"root\\\" node which connects all the roots of the forest into a single\\n -- connected component.\\n SELECT\\n   (SELECT max(id) + 1 FROM heap_graph_object) as source_node_id,\\n   id\\n FROM heap_graph_object\\n WHERE root_type IS NOT NULL;\\n\\n SELECT *\\n FROM graph_dominator_tree!(\\n   dominator_compatible_heap_graph,\\n   (SELECT max(id) + 1 FROM heap_graph_object)\\n );\\n ```\", \"summary_desc\": \"Given a table containing a directed flow-graph and an entry node, computes  the \\\"dominator tree\\\" for the graph\", \"return_desc\": \"The returned table has the schema (node_id LONG, dominator_node_id LONG). |node_id| is the id of the node from the input graph and |dominator_node_id| is the id of the node in the input flow-graph which is the \\\"dominator\\\" of |node_id|.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"graph_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a directed flow-graph on which the dominator tree should be computed. This table must have the columns \\\"source_node_id\\\" and \\\"dest_node_id\\\" corresponding to the two nodes on either end of the edges in the graph.  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.  Note: this means that the graph *must* be a single fully connected component with |root_node_id| (see below) being the \\\"entry node\\\" for this component. Specifically, all nodes *must* be reachable by following paths from the root node. Failing to adhere to this property will result in undefined behaviour.  If working with a \\\"forest\\\"-like structure, a dummy node should be added which links all the roots of the forest together into a single component; an example of this can be found in the heap graph example query above.\", \"table\": null, \"column\": null}, {\"name\": \"root_node_id\", \"type\": \"Expr\", \"desc\": \"The entry node to |graph_table| which will be the root of the dominator tree.\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"graphs.hierarchy\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"graphs.partition\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"tree_structural_partition_by_group\", \"desc\": \"Partitions a tree into a forest of trees based on a given grouping key\\n in a structure-preserving way.\\n\\n Specifically, for each tree in the output forest, all the nodes in that tree\\n have the same ancestors and descendants as in the original tree *iff* that\\n ancestor/descendent belonged to the same group.\\n\\n Example:\\n Input\\n\\n   id | parent_id | group_key\\n   ---|-----------|----------\\n   1  | NULL      | 1\\n   2  | 1         | 1\\n   3  | NULL      | 2\\n   4  | NULL      | 2\\n   5  | 2         | 1\\n   6  | NULL      | 3\\n   7  | 4         | 2\\n   8  | 4         | 1\\n\\n Or as a graph:\\n ```\\n         1 (1)\\n        /\\n       2 (1)\\n      /  \\\\\\n     3 (2) 4 (2)\\n           /   \\\\\\n         5 (1) 8 (1)\\n        /  \\\\\\n     6 (3) 7 (2)\\n ```\\n Possible output (order of rows is implementation-defined)\\n\\n   id | parent_id | group_key\\n   ---|-----------|-------\\n   1  | NULL      | 1\\n   2  | 1         | 1\\n   3  | NULL      | 2\\n   4  | NULL      | 2\\n   5  | 2         | 1\\n   6  | NULL      | 3\\n   7  | 4         | 2\\n   8  | 2         | 1\\n\\n Or as a forest:\\n ```\\n     1 (1)       3 (2)      4 (2)        6 (3)\\n      |                      |\\n     2 (1)                  7 (2)\\n     /   \\\\\\n   5 (1) 8 (1)\\n ```\", \"summary_desc\": \"Partitions a tree into a forest of trees based on a given grouping key  in a structure-preserving way.   Specifically, for each tree in the output forest, all the nodes in that tree  have the same ancestors and descendants as in the original tree *iff* that  ancestor/descendent belonged to the same group.   Example:  Input     id | parent_id | group_key    ---|-----------|----------    1  | NULL      | 1    2  | 1         | 1    3  | NULL      | 2    4  | NULL      | 2    5  | 2         | 1    6  | NULL      | 3    7  | 4         | 2    8  | 4         | 1   Or as a graph:  ```          1 (1)         /        2 (1)       /  \\\\      3 (2) 4 (2)            /   \\\\          5 (1) 8 (1)         /  \\\\      6 (3) 7 (2)  ```  Possible output (order of rows is implementation-defined)     id | parent_id | group_key    ---|-----------|-------    1  | NULL      | 1    2  | 1         | 1    3  | NULL      | 2    4  | NULL      | 2    5  | 2         | 1    6  | NULL      | 3    7  | 4         | 2    8  | 2         | 1   Or as a forest:  ```      1 (1)       3 (2)      4 (2)        6 (3)       |                      |      2 (1)                  7 (2)      /   \\\\    5 (1) 8 (1)  ```\", \"return_desc\": \"The returned table has the schema (id LONG, parent_id LONG, group_key LONG).\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"tree_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a tree which should be partitioned. This table must have the columns \\\"id\\\", \\\"parent_id\\\" and \\\"group_key\\\".  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"graphs.scan\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"graphs.search\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"graph_reachable_dfs\", \"desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a given set\\n of starting nodes by performing a depth-first search on the graph. The\\n returned nodes are structured as a tree with parent-child relationships\\n corresponding to the order in which nodes were encountered by the DFS.\\n\\n While this macro can be used directly by end users (hence being public),\\n it is primarily intended as a lower-level building block upon which higher\\n level functions/macros in the standard library can be built.\\n\\n Example usage on traces containing heap graphs:\\n ```\\n -- Compute the reachable nodes from the first heap root.\\n SELECT *\\n FROM graph_reachable_dfs!(\\n   (\\n     SELECT\\n       owner_id AS source_node_id,\\n       owned_id as dest_node_id\\n     FROM heap_graph_reference\\n     WHERE owned_id IS NOT NULL\\n   ),\\n   (SELECT id FROM heap_graph_object WHERE root_type IS NOT NULL)\\n );\\n ```\", \"summary_desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a given set  of starting nodes by performing a depth-first search on the graph\", \"return_desc\": \"The returned table has the schema (node_id LONG, parent_node_id LONG). |node_id| is the id of the node from the input graph and |parent_node_id| is the id of the node which was the first encountered predecessor in a DFS search of the graph.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"graph_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a directed graph on which the reachability search should be performed. This table must have the columns \\\"source_node_id\\\" and \\\"dest_node_id\\\" corresponding to the two nodes on either end of the edges in the graph.  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.\", \"table\": null, \"column\": null}, {\"name\": \"start_nodes\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to the list of start nodes for the BFS. This table must have a single column \\\"node_id\\\".\", \"table\": null, \"column\": null}]}, {\"name\": \"graph_reachable_bfs\", \"desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a given\\n starting node by performing a breadth-first search on the graph. The returned\\n nodes are structured as a tree with parent-child relationships corresponding\\n to the order in which nodes were encountered by the BFS.\\n\\n While this macro can be used directly by end users (hence being public),\\n it is primarily intended as a lower-level building block upon which higher\\n level functions/macros in the standard library can be built.\\n\\n Example usage on traces containing heap graphs:\\n ```\\n -- Compute the reachable nodes from all heap roots.\\n SELECT *\\n FROM graph_reachable_bfs!(\\n   (\\n     SELECT\\n       owner_id AS source_node_id,\\n       owned_id as dest_node_id\\n     FROM heap_graph_reference\\n     WHERE owned_id IS NOT NULL\\n   ),\\n   (SELECT id FROM heap_graph_object WHERE root_type IS NOT NULL)\\n );\\n ```\", \"summary_desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a given  starting node by performing a breadth-first search on the graph\", \"return_desc\": \"The returned table has the schema (node_id LONG, parent_node_id LONG). |node_id| is the id of the node from the input graph and |parent_node_id| is the id of the node which was the first encountered predecessor in a BFS search of the graph.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"graph_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a directed graph on which the reachability search should be performed. This table must have the columns \\\"source_node_id\\\" and \\\"dest_node_id\\\" corresponding to the two nodes on either end of the edges in the graph.  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.\", \"table\": null, \"column\": null}, {\"name\": \"start_nodes\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to the list of start nodes for the BFS. This table must have a single column \\\"node_id\\\".\", \"table\": null, \"column\": null}]}, {\"name\": \"graph_next_sibling\", \"desc\": \"Computes the next sibling node in a directed graph. The next node under a parent node\\n is determined by on the |sort_key|, which should be unique for every node under a parent.\\n The order of the next sibling is undefined if the |sort_key| is not unique.\\n\\n Example usage:\\n ```\\n -- Compute the next sibling:\\n SELECT *\\n FROM graph_next_sibling!(\\n   (\\n     SELECT\\n       id AS node_id,\\n       parent_id AS node_parent_id,\\n       ts AS sort_key\\n     FROM slice\\n   )\\n );\\n ```\", \"summary_desc\": \"Computes the next sibling node in a directed graph\", \"return_desc\": \"The returned table has the schema (node_id LONG, next_node_id LONG). |node_id| is the id of the node from the input graph and |next_node_id| is the id of the node which is its next sibling.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"graph_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a directed graph for which to find the next sibling. This table must have the columns \\\"node_id\\\", \\\"node_parent_id\\\" and \\\"sort_key\\\".\", \"table\": null, \"column\": null}]}, {\"name\": \"graph_reachable_weight_bounded_dfs\", \"desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a set of\\n starting (root) nodes by performing a depth-first search from each root node on the graph.\\n The search is bounded by the sum of edge weights on the path and the root node specifies the\\n max weight (inclusive) allowed before stopping the search.\\n The returned nodes are structured as a tree with parent-child relationships corresponding\\n to the order in which nodes were encountered by the DFS. Each row also has the root node from\\n which where the edge was encountered.\\n\\n While this macro can be used directly by end users (hence being public),\\n it is primarily intended as a lower-level building block upon which higher\\n level functions/macros in the standard library can be built.\\n\\n Example usage on traces with sched info:\\n ```\\n -- Compute the reachable nodes from a sched wakeup chain\\n INCLUDE PERFETTO MODULE sched.thread_executing_spans;\\n\\n SELECT *\\n FROM\\n   graph_reachable_dfs_bounded\\n    !(\\n      (\\n        SELECT\\n          id AS source_node_id,\\n          COALESCE(parent_id, id) AS dest_node_id,\\n          id - COALESCE(parent_id, id) AS edge_weight\\n        FROM _wakeup_chain\\n      ),\\n      (\\n        SELECT\\n          id AS root_node_id,\\n          id - COALESCE(prev_id, id) AS root_target_weight\\n        FROM _wakeup_chain\\n      ));\\n ```\", \"summary_desc\": \"Computes the \\\"reachable\\\" set of nodes in a directed graph from a set of  starting (root) nodes by performing a depth-first search from each root node on the graph.  The search is bounded by the sum of edge weights on the path and the root node specifies the  max weight (inclusive) allowed before stopping the search.  The returned nodes are structured as a tree with parent-child relationships corresponding  to the order in which nodes were encountered by the DFS\", \"return_desc\": \"The returned table has the schema (root_node_id, node_id LONG, parent_node_id LONG). |root_node_id| is the id of the starting node under which this edge was encountered. |node_id| is the id of the node from the input graph and |parent_node_id| is the id of the node which was the first encountered predecessor in a DFS search of the graph.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"graph_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to a directed graph on which the reachability search should be performed. This table must have the columns \\\"source_node_id\\\" and \\\"dest_node_id\\\" corresponding to the two nodes on either end of the edges in the graph and an \\\"edge_weight\\\" corresponding to the weight of the edge between the node.  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.\", \"table\": null, \"column\": null}, {\"name\": \"root_table\", \"type\": \"TableOrSubquery\", \"desc\": \"A table/view/subquery corresponding to start nodes to |graph_table| which will be the roots of the reachability trees. This table must have the columns \\\"root_node_id\\\" and \\\"root_target_weight\\\" corresponding to the starting node id and the max weight allowed on the tree.  Note: the columns must contain uint32 similar to ids in trace processor tables (i.e. the values should be relatively dense and close to zero). The implementation makes assumptions on this for performance reasons and, if this criteria is not, can lead to enormous amounts of memory being allocated.\", \"table\": null, \"column\": null}, {\"name\": \"is_target_weight_floor\", \"type\": \"Expr\", \"desc\": \"Whether the target_weight is a floor weight or ceiling weight. If it's floor, the search stops right after we exceed the target weight, and we include the node that pushed just passed the target. If ceiling, the search stops right before the target weight and the node that would have pushed us passed the target is not included.\", \"table\": null, \"column\": null}]}]}]}, {\"name\": \"intervals\", \"modules\": [{\"module_name\": \"intervals.intersect\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"interval_self_intersect\", \"desc\": \"Given a list of intervals (ts, dur), this macro generates a list of interval\\n end points as well as the intervals that intersect with those points.\\n\\n e.g. input (10, 20), (20, 25)\\n\\n         10      30\\n        A |-------|\\n             B|----------|\\n             20         45\\n\\n would generate the output:\\n ```\\n ts,dur,group_id,id,interval_ends_at_ts\\n 10,10,1,A,0\\n 20,10,2,A,0\\n 20,10,2,B,0\\n 30,15,3,A,1\\n 30,15,3,B,0\\n 45,0,4,B,1\\n ```\\n\\n Runtime is O(n log n + m), where n is the number of intervals and m\\n is the size of the output.\", \"summary_desc\": \"Given a list of intervals (ts, dur), this macro generates a list of interval  end points as well as the intervals that intersect with those points.   e.g\", \"return_desc\": \"\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"intervals\", \"type\": \"TableOrSubquery\", \"desc\": \"Table or subquery containing interval data.\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"intervals.overlap\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"intervals_overlap_count\", \"desc\": \"Compute the distribution of the overlap of the given intervals over time.\\n\\n Each interval is a (ts, dur) pair and the overlap represented as a (ts, value)\\n counter, with the value corresponding to the number of intervals that overlap\\n the given timestamp and interval until the next timestamp.\", \"summary_desc\": \"Compute the distribution of the overlap of the given intervals over time.   Each interval is a (ts, dur) pair and the overlap represented as a (ts, value)  counter, with the value corresponding to the number of intervals that overlap  the given timestamp and interval until the next timestamp.\", \"return_desc\": \"The returned table has the schema (ts TIMESTAMP, value LONG). |ts| is the timestamp when the number of open segments changed. |value| is the number of open segments.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"segments\", \"type\": \"TableOrSubquery\", \"desc\": \"Table or subquery containing interval data.\", \"table\": null, \"column\": null}, {\"name\": \"ts_column\", \"type\": \"ColumnName\", \"desc\": \"Column containing interval starts (usually `ts`).\", \"table\": null, \"column\": null}, {\"name\": \"dur_column\", \"type\": \"ColumnName\", \"desc\": \"Column containing interval durations (usually `dur`).\", \"table\": null, \"column\": null}]}, {\"name\": \"intervals_overlap_count_by_group\", \"desc\": \"Compute the distribution of the overlap of the given intervals over time from\\n slices in a same group.\\n\\n Each interval is a (ts, dur, group) triple and the overlap represented as a\\n (ts, value, group) counter, with the value corresponding to the number of\\n intervals that belong to the same group and overlap the given timestamp and\\n interval until the next timestamp.\", \"summary_desc\": \"Compute the distribution of the overlap of the given intervals over time from  slices in a same group.   Each interval is a (ts, dur, group) triple and the overlap represented as a  (ts, value, group) counter, with the value corresponding to the number of  intervals that belong to the same group and overlap the given timestamp and  interval until the next timestamp.\", \"return_desc\": \"The returned table has the schema (ts INT64, value UINT32, group_name) where the type of group_name is the same as that in |segments|. |ts| is the timestamp when the number of open segments changed. |value| is the number of open segments. |group_name| is the name of a group used for the overlap calculation.\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"segments\", \"type\": \"TableOrSubquery\", \"desc\": \"Table or subquery containing interval data.\", \"table\": null, \"column\": null}, {\"name\": \"ts_column\", \"type\": \"ColumnName\", \"desc\": \"Column containing interval starts (usually `ts`).\", \"table\": null, \"column\": null}, {\"name\": \"dur_column\", \"type\": \"ColumnName\", \"desc\": \"Column containing interval durations (usually `dur`).\", \"table\": null, \"column\": null}, {\"name\": \"group_column\", \"type\": \"ColumnName\", \"desc\": \"Column containing group name for grouping.\", \"table\": null, \"column\": null}]}, {\"name\": \"interval_merge_overlapping\", \"desc\": \"Merge intervals when they overlap to generate a minimum covering set of\\n intervals with no overlap. The intervals are closed (contain both endpoints)\\n and we consider two intervals overlapping\\n   (a) the intervals overlap or\\n   (b) if the end point of one interval is within epsilon of the start point\\n       of the other.\", \"summary_desc\": \"Merge intervals when they overlap to generate a minimum covering set of  intervals with no overlap\", \"return_desc\": \"\", \"return_type\": \"TableOrSubquery\", \"args\": [{\"name\": \"intervals\", \"type\": \"TableOrSubquery\", \"desc\": \"Table or subquery containing interval data.\", \"table\": null, \"column\": null}, {\"name\": \"epsilon\", \"type\": \"Expr\", \"desc\": \"Constant expression for a tolerance in testing overlap (usually `0`)\", \"table\": null, \"column\": null}]}]}]}, {\"name\": \"linux\", \"modules\": [{\"module_name\": \"linux.block_io\", \"data_objects\": [{\"name\": \"linux_active_block_io_operations_by_device\", \"desc\": \"View tracking the number of IO operations remaining in the kernel IO queue or\\n a block device\", \"summary_desc\": \"View tracking the number of IO operations remaining in the kernel IO queue or  a block device\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"LONG\", \"desc\": \"timestamp when block_io_start or block_io_done happened\", \"table\": null, \"column\": null}, {\"name\": \"ops_in_queue_or_device\", \"type\": \"LONG\", \"desc\": \"the number of IO operations in the kernel queue or the device\", \"table\": null, \"column\": null}, {\"name\": \"dev\", \"type\": \"LONG\", \"desc\": \"the device processing the IO operations\", \"table\": null, \"column\": null}]}], \"functions\": [{\"name\": \"linux_device_major_id\", \"desc\": \"Extracts the major id from a device id\", \"summary_desc\": \"Extracts the major id from a device id\", \"args\": [{\"name\": \"dev\", \"type\": \"LONG\", \"desc\": \"device id (userland dev_t value)\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"12 bits major id\"}, {\"name\": \"linux_device_minor_id\", \"desc\": \"Extracts the minor id from a device id\", \"summary_desc\": \"Extracts the minor id from a device id\", \"args\": [{\"name\": \"dev\", \"type\": \"LONG\", \"desc\": \"device id (userland dev_t value)\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"20 bits minor id\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.frequency\", \"data_objects\": [{\"name\": \"cpu_frequency_counters\", \"desc\": \"Counter information for each frequency change for each CPU. Finds each time\\n region where a CPU frequency is constant.\", \"summary_desc\": \"Counter information for each frequency change for each CPU\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Counter id.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Joinable with 'counter_track.id'.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of the counter\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration in which counter is constant and frequency doesn't change.\", \"table\": null, \"column\": null}, {\"name\": \"freq\", \"type\": \"LONG\", \"desc\": \"Frequency in kHz of the CPU that corresponds to this counter. NULL if not found or undefined.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"Unique CPU id.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU that corresponds to this counter.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.idle\", \"data_objects\": [{\"name\": \"cpu_idle_counters\", \"desc\": \"Counter information for each idle state change for each CPU. Finds each time\\n region where a CPU idle state is constant.\", \"summary_desc\": \"Counter information for each idle state change for each CPU\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Counter id.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Joinable with 'counter_track.id'.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of the counter.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration in which the counter is contant and idle state doesn't change.\", \"table\": null, \"column\": null}, {\"name\": \"idle\", \"type\": \"LONG\", \"desc\": \"Idle state of the CPU that corresponds to this counter. An idle state of -1 is defined to be active state for the CPU, and the larger the integer, the deeper the idle state of the CPU. NULL if not found or undefined.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU that corresponds to this counter.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.idle_stats\", \"data_objects\": [{\"name\": \"cpu_idle_stats\", \"desc\": \"Aggregates cpu idle statistics per core.\", \"summary_desc\": \"Aggregates cpu idle statistics per core.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU core number.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"LONG\", \"desc\": \"CPU idle state (C-states).\", \"table\": null, \"column\": null}, {\"name\": \"count\", \"type\": \"LONG\", \"desc\": \"The count of entering idle state.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Total CPU core idle state duration.\", \"table\": null, \"column\": null}, {\"name\": \"avg_dur\", \"type\": \"DURATION\", \"desc\": \"Average CPU core idle state duration.\", \"table\": null, \"column\": null}, {\"name\": \"idle_percent\", \"type\": \"DOUBLE\", \"desc\": \"Idle state percentage of non suspend time (C-states + P-states).\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.idle_time_in_state\", \"data_objects\": [{\"name\": \"linux_per_cpu_idle_time_in_state_counters\", \"desc\": \"Percentage counter information for sysfs cpuidle states.\\n For each state per cpu, report the incremental time spent in one state,\\n divided by time spent in all states, between two timestamps.\", \"summary_desc\": \"Percentage counter information for sysfs cpuidle states.  For each state per cpu, report the incremental time spent in one state,  divided by time spent in all states, between two timestamps.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"The machine this residency is calculated for.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"State name.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU.\", \"table\": null, \"column\": null}, {\"name\": \"idle_percentage\", \"type\": \"DOUBLE\", \"desc\": \"Percentage of time this cpu spent in this state.\", \"table\": null, \"column\": null}, {\"name\": \"total_residency\", \"type\": \"DOUBLE\", \"desc\": \"Incremental time spent in this state (residency), in microseconds.\", \"table\": null, \"column\": null}, {\"name\": \"time_slice\", \"type\": \"LONG\", \"desc\": \"Time this cpu spent in any state, in microseconds.\", \"table\": null, \"column\": null}]}, {\"name\": \"linux_cpu_idle_time_in_state_counters\", \"desc\": \"Percentage counter information for sysfs cpuidle states.\\n For each state across all CPUs, report the incremental time spent in one\\n state, divided by time spent in all states, between two timestamps.\", \"summary_desc\": \"Percentage counter information for sysfs cpuidle states.  For each state across all CPUs, report the incremental time spent in one  state, divided by time spent in all states, between two timestamps.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"The machine this residency is calculated for.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"State name.\", \"table\": null, \"column\": null}, {\"name\": \"idle_percentage\", \"type\": \"DOUBLE\", \"desc\": \"Percentage of time all CPUS spent in this state.\", \"table\": null, \"column\": null}, {\"name\": \"total_residency\", \"type\": \"DOUBLE\", \"desc\": \"Incremental time spent in this state (residency), in microseconds.\", \"table\": null, \"column\": null}, {\"name\": \"time_slice\", \"type\": \"LONG\", \"desc\": \"Time all CPUS spent in any state, in microseconds.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.general\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.process\", \"data_objects\": [{\"name\": \"cpu_cycles_per_process\", \"desc\": \"Aggregated CPU statistics for each process.\", \"summary_desc\": \"Aggregated CPU statistics for each process.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique process id\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles\", \"table\": null, \"column\": null}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"desc\": \"Total runtime duration\", \"table\": null, \"column\": null}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"desc\": \"Minimum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"desc\": \"Maximum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"desc\": \"Average CPU frequency in kHz\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"cpu_process_utilization_per_period\", \"desc\": \"Returns a table of process utilization per given period.\\n Utilization is calculated as sum of average utilization of each CPU in each\\n period, which is defined as a multiply of |interval|. For this reason\\n first and last period might have lower then real utilization.\", \"summary_desc\": \"Returns a table of process utilization per given period.  Utilization is calculated as sum of average utilization of each CPU in each  period, which is defined as a multiply of |interval|\", \"args\": [{\"name\": \"interval\", \"type\": \"LONG\", \"desc\": \"Length of the period on which utilization should be averaged.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process.\", \"table\": \"process\", \"column\": \"id\"}], \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of a second.\"}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\"}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\"}]}, {\"name\": \"cpu_process_utilization_per_second\", \"desc\": \"Returns a table of process utilization per second.\\n Utilization is calculated as sum of average utilization of each CPU in each\\n period, which is defined as a multiply of |interval|. For this reason\\n first and last period might have lower then real utilization.\", \"summary_desc\": \"Returns a table of process utilization per second.  Utilization is calculated as sum of average utilization of each CPU in each  period, which is defined as a multiply of |interval|\", \"args\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process.\", \"table\": \"process\", \"column\": \"id\"}], \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of a second.\"}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\"}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\"}]}, {\"name\": \"cpu_cycles_per_process_in_interval\", \"desc\": \"Aggregated CPU statistics for each process in a provided interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Aggregated CPU statistics for each process in a provided interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"table\": \"process\", \"column\": \"id\", \"desc\": \"Unique process id.\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles\"}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime duration\"}, {\"name\": \"awake_runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime duration, while 'awake' (CPUs not suspended).\"}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Minimum CPU frequency in kHz\"}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Maximum CPU frequency in kHz\"}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Average CPU frequency in kHz\"}]}, {\"name\": \"cpu_process_utilization_in_interval\", \"desc\": \"Returns a table with process utilization over a given interval.\\n\\n Utilization is computed as runtime over the duration of the interval, aggregated by UPID.\\n Utilization can be normalized (divide by number of cpus) or unnormalized.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Returns a table with process utilization over a given interval.   Utilization is computed as runtime over the duration of the interval, aggregated by UPID.  Utilization can be normalized (divide by number of cpus) or unnormalized.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"table\": \"process\", \"column\": \"id\", \"desc\": \"Unique process id.\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"The name of the process.\"}, {\"name\": \"awake_dur\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all processes with this UPID, while 'awake' (CPUs not suspended).\"}, {\"name\": \"awake_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, normalized by the number of CPUs. Values in [0.0, 100.0]\"}, {\"name\": \"awake_unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, unnormalized. Values in [0.0, 100.0 * <number_of_cpus>]\"}]}], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.slice\", \"data_objects\": [{\"name\": \"cpu_cycles_per_thread_slice\", \"desc\": \"CPU cycles per each slice.\", \"summary_desc\": \"CPU cycles per each slice.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of a slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Id of the thread the slice is running on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Id of the process the slice is running on.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"cpu_cycles_per_thread_slice_in_interval\", \"desc\": \"CPU cycles per each slice in interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"CPU cycles per each slice in interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"table\": \"slice\", \"column\": \"id\", \"desc\": \"Thread slice.\"}, {\"name\": \"name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the slice.\"}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"Thread the slice is running on.\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the thread.\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"table\": \"process\", \"column\": \"id\", \"desc\": \"Process the slice is running on.\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Name of the process.\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\"}]}], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.system\", \"data_objects\": [{\"name\": \"cpu_utilization_per_second\", \"desc\": \"Table with system utilization per second.\\n Utilization is calculated by sum of average utilization of each CPU every\\n second. For this reason first and last second might have lower then real\\n utilization.\", \"summary_desc\": \"Table with system utilization per second.  Utilization is calculated by sum of average utilization of each CPU every  second\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of start of a second.\", \"table\": null, \"column\": null}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\", \"table\": null, \"column\": null}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu_cycles\", \"desc\": \"Aggregated CPU statistics for whole trace. Results in only one row.\", \"summary_desc\": \"Aggregated CPU statistics for whole trace\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles.\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles.\", \"table\": null, \"column\": null}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"desc\": \"Total runtime of all threads running on all CPUs.\", \"table\": null, \"column\": null}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"desc\": \"Minimum CPU frequency in kHz.\", \"table\": null, \"column\": null}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"desc\": \"Maximum CPU frequency in kHz.\", \"table\": null, \"column\": null}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"desc\": \"Average CPU frequency in kHz.\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu_cycles_per_cpu\", \"desc\": \"Aggregated CPU statistics for each CPU.\", \"summary_desc\": \"Aggregated CPU statistics for each CPU.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ucpu\", \"type\": \"JOINID(cpu.id)\", \"desc\": \"Unique CPU id. Joinable with `cpu.id`.\", \"table\": \"cpu\", \"column\": \"id\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The number of the CPU. Might not be the same as ucpu in multi machine cases.\", \"table\": null, \"column\": null}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles.\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles.\", \"table\": null, \"column\": null}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"desc\": \"Total runtime of all threads running on CPU.\", \"table\": null, \"column\": null}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"desc\": \"Minimum CPU frequency in kHz.\", \"table\": null, \"column\": null}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"desc\": \"Maximum CPU frequency in kHz.\", \"table\": null, \"column\": null}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"desc\": \"Average CPU frequency in kHz.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"cpu_utilization_per_period\", \"desc\": \"Returns a table of system utilization per given period.\\n Utilization is calculated as sum of average utilization of each CPU in each\\n period, which is defined as a multiply of |interval|. For this reason\\n first and last period might have lower then real utilization.\", \"summary_desc\": \"Returns a table of system utilization per given period.  Utilization is calculated as sum of average utilization of each CPU in each  period, which is defined as a multiply of |interval|\", \"args\": [{\"name\": \"interval\", \"type\": \"LONG\", \"desc\": \"Length of the period on which utilization should be averaged.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of a second.\"}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\"}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\"}]}, {\"name\": \"cpu_cycles_in_interval\", \"desc\": \"Aggregated CPU statistics in a provided interval. Results in one row.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Aggregated CPU statistics in a provided interval\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles.\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles.\"}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all threads running on all CPUs.\"}, {\"name\": \"awake_runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all threads running on all CPUs, while 'awake' (CPUs not suspended).\"}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Minimum CPU frequency in kHz.\"}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Maximum CPU frequency in kHz.\"}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Average CPU frequency in kHz.\"}]}, {\"name\": \"cpu_utilization_in_interval\", \"desc\": \"Returns a table of CPU utilization over a given interval.\\n\\n Utilization  is computed as runtime over the duration of the interval.\\n Utilization can be normalized (divide by number of cores) or unnormalized.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Returns a table of CPU utilization over a given interval.   Utilization  is computed as runtime over the duration of the interval.  Utilization can be normalized (divide by number of cores) or unnormalized.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"awake_dur\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all threads running on all CPUs, while 'awake' (CPUs not suspended).\"}, {\"name\": \"awake_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, normalized by the number of CPUs. Values in [0.0, 100.0]\"}, {\"name\": \"awake_unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, unnormalized. Values in [0.0, 100.0 * <number_of_cpus>]\"}]}, {\"name\": \"cpu_cycles_per_cpu_in_interval\", \"desc\": \"Aggregated CPU statistics for each CPU in a provided interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Aggregated CPU statistics for each CPU in a provided interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"ucpu\", \"type\": \"JOINID(cpu.id)\", \"table\": \"cpu\", \"column\": \"id\", \"desc\": \"Unique CPU id. Joinable with `cpu.id`.\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"CPU number.\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles.\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles.\"}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all threads running on CPU.\"}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Minimum CPU frequency in kHz.\"}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Maximum CPU frequency in kHz.\"}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Average CPU frequency in kHz.\"}]}], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.thread\", \"data_objects\": [{\"name\": \"cpu_cycles_per_thread\", \"desc\": \"Aggregated CPU statistics for each thread.\", \"summary_desc\": \"Aggregated CPU statistics for each thread.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles\", \"table\": null, \"column\": null}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"desc\": \"Total runtime duration\", \"table\": null, \"column\": null}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"desc\": \"Minimum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"desc\": \"Maximum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"desc\": \"Average CPU frequency in kHz\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"cpu_thread_utilization_per_period\", \"desc\": \"Returns a table of thread utilization per given period.\\n Utilization is calculated as sum of average utilization of each CPU in each\\n period, which is defined as a multiply of |interval|. For this reason\\n first and last period might have lower then real utilization.\", \"summary_desc\": \"Returns a table of thread utilization per given period.  Utilization is calculated as sum of average utilization of each CPU in each  period, which is defined as a multiply of |interval|\", \"args\": [{\"name\": \"interval\", \"type\": \"LONG\", \"desc\": \"Length of the period on which utilization should be averaged.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}], \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of a second.\"}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\"}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\"}]}, {\"name\": \"cpu_thread_utilization_per_second\", \"desc\": \"Returns a table of thread utilization per second.\\n Utilization is calculated as sum of average utilization of each CPU in each\\n period, which is defined as a multiply of |interval|. For this reason\\n first and last period might have lower then real utilization.\", \"summary_desc\": \"Returns a table of thread utilization per second.  Utilization is calculated as sum of average utilization of each CPU in each  period, which is defined as a multiply of |interval|\", \"args\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}], \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"table\": null, \"column\": null, \"desc\": \"Timestamp of start of a second.\"}, {\"name\": \"utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over period. Note: as the data is normalized, the values will be in the [0, 1] range.\"}, {\"name\": \"unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Sum of average utilization over all CPUs over period. Note: as the data is unnormalized, the values will be in the [0, cpu_count] range.\"}]}, {\"name\": \"cpu_cycles_per_thread_in_interval\", \"desc\": \"Aggregated CPU statistics for each thread in a provided interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Aggregated CPU statistics for each thread in a provided interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"Thread with CPU cycles and frequency statistics.\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles\"}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime duration\"}, {\"name\": \"awake_runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime duration, while 'awake' (CPUs not suspended).\"}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Minimum CPU frequency in kHz\"}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Maximum CPU frequency in kHz\"}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Average CPU frequency in kHz\"}]}, {\"name\": \"cpu_thread_utilization_in_interval\", \"desc\": \"Returns a table of thread utilization over a given interval.\\n\\n Utilization is computed as runtime over the duration of the interval, aggregated by UTID.\\n Utilization can be normalized (divide by number of CPUs) or unnormalized.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Returns a table of thread utilization over a given interval.   Utilization is computed as runtime over the duration of the interval, aggregated by UTID.  Utilization can be normalized (divide by number of CPUs) or unnormalized.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"table\": \"process\", \"column\": \"id\", \"desc\": \"Unique process id.\"}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"Unique thread id.\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"The name of the thread\"}, {\"name\": \"awake_dur\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Total runtime of all threads with this UTID, while 'awake' (CPUs not suspended).\"}, {\"name\": \"awake_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, normalized by the number of CPUs. Values in [0.0, 100.0]\"}, {\"name\": \"awake_unnormalized_utilization\", \"type\": \"DOUBLE\", \"table\": null, \"column\": null, \"desc\": \"Percentage of 'awake_dur' over the 'awake' duration of the interval, unnormalized. Values in [0.0, 100.0 * <number_of_cpus>]\"}]}], \"macros\": []}, {\"module_name\": \"linux.cpu.utilization.thread_cpu\", \"data_objects\": [{\"name\": \"cpu_cycles_per_thread_per_cpu\", \"desc\": \"Aggregated CPU statistics for each thread per CPU combination.\\n To operate properly this requires sched/sched_switch and power/cpu_frequency\\n ftrace events to be present in the trace.\", \"summary_desc\": \"Aggregated CPU statistics for each thread per CPU combination.  To operate properly this requires sched/sched_switch and power/cpu_frequency  ftrace events to be present in the trace.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"ucpu\", \"type\": \"JOINID(cpu.id)\", \"desc\": \"Unique CPU id. Joinable with `cpu.id`.\", \"table\": \"cpu\", \"column\": \"id\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The number of the CPU. Might not be the same as ucpu in multi machine cases.\", \"table\": null, \"column\": null}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles\", \"table\": null, \"column\": null}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"desc\": \"Total runtime duration\", \"table\": null, \"column\": null}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"desc\": \"Minimum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"desc\": \"Maximum CPU frequency in kHz\", \"table\": null, \"column\": null}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"desc\": \"Average CPU frequency in kHz\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"cpu_cycles_per_thread_per_cpu_in_interval\", \"desc\": \"Aggregated CPU statistics for each thread per CPU combination in a provided interval.\\n To operate properly this requires sched/sched_switch and power/cpu_frequency\\n ftrace events to be present in the trace.\\n Warning: this query is expensive and might take a long time to execute when joined\\n with a large number of intervals.\", \"summary_desc\": \"Aggregated CPU statistics for each thread per CPU combination in a provided interval.  To operate properly this requires sched/sched_switch and power/cpu_frequency  ftrace events to be present in the trace.  Warning: this query is expensive and might take a long time to execute when joined  with a large number of intervals.\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Duration of the interval.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"table\": \"thread\", \"column\": \"id\", \"desc\": \"Thread with CPU cycles and frequency statistics.\"}, {\"name\": \"ucpu\", \"type\": \"JOINID(cpu.id)\", \"table\": \"cpu\", \"column\": \"id\", \"desc\": \"Unique CPU id. Joinable with `cpu.id`.\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"The number of the CPU. Might not be the same as ucpu in multi machine cases.\"}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU millicycles\"}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Sum of CPU megacycles\"}, {\"name\": \"runtime\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total runtime duration\"}, {\"name\": \"min_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Minimum CPU frequency in kHz\"}, {\"name\": \"max_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Maximum CPU frequency in kHz\"}, {\"name\": \"avg_freq\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Average CPU frequency in kHz\"}]}], \"macros\": []}, {\"module_name\": \"linux.devfreq\", \"data_objects\": [{\"name\": \"linux_devfreq_dsu_counter\", \"desc\": \"ARM DSU device frequency counters. This table will only be populated on\\n traces collected with \\\"devfreq/devfreq_frequency\\\" ftrace event enabled,\\n and from ARM devices with the DSU (DynamIQ Shared Unit) hardware.\", \"summary_desc\": \"ARM DSU device frequency counters\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"Unique identifier for this counter.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of the counter.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration in which counter is constant and frequency doesn't chamge.\", \"table\": null, \"column\": null}, {\"name\": \"dsu_freq\", \"type\": \"LONG\", \"desc\": \"Frequency in kHz of the device that corresponds to the counter.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.irqs\", \"data_objects\": [{\"name\": \"linux_hard_irqs\", \"desc\": \"All hard IRQs of the trace represented as slices.\", \"summary_desc\": \"All hard IRQs of the trace represented as slices.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of the IRQ.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of this IRQ's parent IRQ (i.e. the IRQ that this IRQ preempted).\", \"table\": \"slice\", \"column\": \"id\"}]}, {\"name\": \"linux_soft_irqs\", \"desc\": \"All soft IRQs of the trace represented as slices.\", \"summary_desc\": \"All soft IRQs of the trace represented as slices.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of the IRQ.\", \"table\": \"slice\", \"column\": \"id\"}]}, {\"name\": \"linux_irqs\", \"desc\": \"All IRQs, including hard and soft IRQs, of the trace represented as slices.\", \"summary_desc\": \"All IRQs, including hard and soft IRQs, of the trace represented as slices.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Starting timestamp of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of this IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the IRQ.\", \"table\": null, \"column\": null}, {\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of the IRQ.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of this IRQ's parent IRQ (i.e. the IRQ that this IRQ preempted).\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"is_soft_irq\", \"type\": \"BOOL\", \"desc\": \"Flag indicating if IRQ is soft IRQ\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.memory.general\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.memory.high_watermark\", \"data_objects\": [{\"name\": \"memory_rss_high_watermark_per_process\", \"desc\": \"For each process fetches the memory high watermark until or during\\n timestamp.\", \"summary_desc\": \"For each process fetches the memory high watermark until or during  timestamp.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of the process\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process\", \"table\": null, \"column\": null}, {\"name\": \"rss_high_watermark\", \"type\": \"LONG\", \"desc\": \"Maximum `rss` value until now\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.memory.process\", \"data_objects\": [{\"name\": \"memory_rss_and_swap_per_process\", \"desc\": \"Memory metrics timeline for each process.\", \"summary_desc\": \"Memory metrics timeline for each process.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of the process\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of the process\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process\", \"table\": null, \"column\": null}, {\"name\": \"anon_rss\", \"type\": \"LONG\", \"desc\": \"Anon RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"file_rss\", \"type\": \"LONG\", \"desc\": \"File RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"shmem_rss\", \"type\": \"LONG\", \"desc\": \"Shared memory RSS counter value\", \"table\": null, \"column\": null}, {\"name\": \"rss\", \"type\": \"LONG\", \"desc\": \"Total RSS value. Sum of `anon_rss`, `file_rss` and `shmem_rss`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}, {\"name\": \"swap\", \"type\": \"LONG\", \"desc\": \"Swap counter value\", \"table\": null, \"column\": null}, {\"name\": \"anon_rss_and_swap\", \"type\": \"LONG\", \"desc\": \"Sum or `anon_rss` and `swap`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}, {\"name\": \"rss_and_swap\", \"type\": \"LONG\", \"desc\": \"Sum or `rss` and `swap`. Returns value even if one of the values is NULL.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.perf.etm\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.perf.samples\", \"data_objects\": [{\"name\": \"linux_perf_samples_summary_tree\", \"desc\": \"Table summarising the callstacks captured during all\\n perf samples in the trace.\\n\\n Specifically, this table returns a tree containing all\\n the callstacks seen during the trace with `self_count`\\n equal to the number of samples with that frame as the\\n leaf and `cumulative_count` equal to the number of\\n samples with the frame anywhere in the tree.\", \"summary_desc\": \"Table summarising the callstacks captured during all  perf samples in the trace.   Specifically, this table returns a tree containing all  the callstacks seen during the trace with `self_count`  equal to the number of samples with that frame as the  leaf and `cumulative_count` equal to the number of  samples with the frame anywhere in the tree.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the callstack. A callstack in this context is a unique set of frames up to the root.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The id of the parent callstack for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The function name of the frame for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"mapping_name\", \"type\": \"STRING\", \"desc\": \"The name of the mapping containing the frame. This can be a native binary, library, JAR or APK.\", \"table\": null, \"column\": null}, {\"name\": \"source_file\", \"type\": \"STRING\", \"desc\": \"The name of the file containing the function.\", \"table\": null, \"column\": null}, {\"name\": \"line_number\", \"type\": \"LONG\", \"desc\": \"The line number in the file the function is located at.\", \"table\": null, \"column\": null}, {\"name\": \"self_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function as the leaf frame.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function appearing anywhere on the callstack.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.perf.spe\", \"data_objects\": [{\"name\": \"linux_perf_spe_record\", \"desc\": \"Contains ARM Statistical Profiling Extension records\", \"summary_desc\": \"Contains ARM Statistical Profiling Extension records\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestap when the operation was sampled\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread the operation executed in\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"exception_level\", \"type\": \"STRING\", \"desc\": \"Exception level the instruction was executed in\", \"table\": null, \"column\": null}, {\"name\": \"instruction_frame_id\", \"type\": \"LONG\", \"desc\": \"Instruction virtual address\", \"table\": null, \"column\": null}, {\"name\": \"operation\", \"type\": \"STRING\", \"desc\": \"Type of operation sampled\", \"table\": null, \"column\": null}, {\"name\": \"data_virtual_address\", \"type\": \"LONG\", \"desc\": \"The virtual address accessed by the operation (0 if no memory access was performed)\", \"table\": null, \"column\": null}, {\"name\": \"data_physical_address\", \"type\": \"LONG\", \"desc\": \"The physical address accessed by the operation (0 if no memory access was performed)\", \"table\": null, \"column\": null}, {\"name\": \"total_latency\", \"type\": \"LONG\", \"desc\": \"Cycle count from the operation being dispatched for issue to the operation being complete.\", \"table\": null, \"column\": null}, {\"name\": \"issue_latency\", \"type\": \"LONG\", \"desc\": \"Cycle count from the operation being dispatched for issue to the operation being issued for execution.\", \"table\": null, \"column\": null}, {\"name\": \"translation_latency\", \"type\": \"LONG\", \"desc\": \"Cycle count from a virtual address being passed to the MMU for translation to the result of the translation being available.\", \"table\": null, \"column\": null}, {\"name\": \"data_source\", \"type\": \"STRING\", \"desc\": \"Where the data returned for a load operation was sourced\", \"table\": null, \"column\": null}, {\"name\": \"exception_gen\", \"type\": \"BOOL\", \"desc\": \"Operation generated an exception\", \"table\": null, \"column\": null}, {\"name\": \"retired\", \"type\": \"BOOL\", \"desc\": \"Operation architecturally retired\", \"table\": null, \"column\": null}, {\"name\": \"l1d_access\", \"type\": \"BOOL\", \"desc\": \"Operation caused a level 1 data cache access\", \"table\": null, \"column\": null}, {\"name\": \"l1d_refill\", \"type\": \"BOOL\", \"desc\": \"Operation caused a level 1 data cache refill\", \"table\": null, \"column\": null}, {\"name\": \"tlb_access\", \"type\": \"BOOL\", \"desc\": \"Operation caused a TLB access\", \"table\": null, \"column\": null}, {\"name\": \"tlb_refill\", \"type\": \"BOOL\", \"desc\": \"Operation caused a TLB refill involving at least one translation table walk\", \"table\": null, \"column\": null}, {\"name\": \"not_taken\", \"type\": \"BOOL\", \"desc\": \"Conditional instruction failed its condition code check\", \"table\": null, \"column\": null}, {\"name\": \"mispred\", \"type\": \"BOOL\", \"desc\": \"Whether a branch caused a correction to the predicted program flow\", \"table\": null, \"column\": null}, {\"name\": \"llc_access\", \"type\": \"BOOL\", \"desc\": \"Operation caused a last level data or unified cache access\", \"table\": null, \"column\": null}, {\"name\": \"llc_refill\", \"type\": \"BOOL\", \"desc\": \"Whether the operation could not be completed by the last level data cache (or any above)\", \"table\": null, \"column\": null}, {\"name\": \"remote_access\", \"type\": \"BOOL\", \"desc\": \"Operation caused an access to another socket in a multi-socket system\", \"table\": null, \"column\": null}, {\"name\": \"alignment\", \"type\": \"BOOL\", \"desc\": \"Operation that incurred additional latency due to the alignment of the address and the size of the data being accessed\", \"table\": null, \"column\": null}, {\"name\": \"tme_transaction\", \"type\": \"BOOL\", \"desc\": \"Whether the operation executed in transactional state\", \"table\": null, \"column\": null}, {\"name\": \"sve_partial_pred\", \"type\": \"BOOL\", \"desc\": \"SVE or SME operation with at least one false element in the governing predicate(s)\", \"table\": null, \"column\": null}, {\"name\": \"sve_empty_pred\", \"type\": \"BOOL\", \"desc\": \"SVE or SME operation with no true element in the governing predicate(s)\", \"table\": null, \"column\": null}, {\"name\": \"l2d_access\", \"type\": \"BOOL\", \"desc\": \"Whether a load operation caused a cache access to at least the level 2 data or unified cache\", \"table\": null, \"column\": null}, {\"name\": \"l2d_hit\", \"type\": \"BOOL\", \"desc\": \"Whether a load operation accessed and missed the level 2 data or unified cache. Not set for accesses that are satisfied from refilling data of a previous miss\", \"table\": null, \"column\": null}, {\"name\": \"cache_data_modified\", \"type\": \"BOOL\", \"desc\": \"Whether a load operation accessed modified data in a cache\", \"table\": null, \"column\": null}, {\"name\": \"recenty_fetched\", \"type\": \"BOOL\", \"desc\": \"Wheter a load operation hit a recently fetched line in a cache\", \"table\": null, \"column\": null}, {\"name\": \"data_snooped\", \"type\": \"BOOL\", \"desc\": \"Whether a load operation snooped data from a cache outside the cache hierarchy of this core\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"linux.threads\", \"data_objects\": [{\"name\": \"linux_kernel_threads\", \"desc\": \"All kernel threads of the trace. As kernel threads are processes, provides\\n also process data.\", \"summary_desc\": \"All kernel threads of the trace\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Upid of kernel thread. Alias of |process.upid|.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of kernel thread. Alias of |thread.utid|.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Pid of kernel thread. Alias of |process.pid|.\", \"table\": null, \"column\": null}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Tid of kernel thread. Alias of |process.pid|.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of kernel process. Alias of |process.name|.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of kernel thread. Alias of |thread.name|.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine id of kernel thread. If NULL then it's a single machine trace. Alias of |process.machine_id|.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"pixel\", \"modules\": [{\"module_name\": \"pixel.camera\", \"data_objects\": [{\"name\": \"pixel_camera_frames\", \"desc\": \"Break down camera Camera graph execution slices per node, port group, and frame.\\n This table extracts key identifiers from Camera graph execution slice names and\\n provides timing information for each processing stage.\", \"summary_desc\": \"Break down camera Camera graph execution slices per node, port group, and frame.  This table extracts key identifiers from Camera graph execution slice names and  provides timing information for each processing stage.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Unique identifier for this slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Start timestamp of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Duration of the slice execution.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track ID for this slice.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread ID (utid) executing this slice.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread executing this slice.\", \"table\": null, \"column\": null}, {\"name\": \"node\", \"type\": \"STRING\", \"desc\": \"Name of the processing node in the Camera graph.\", \"table\": null, \"column\": null}, {\"name\": \"port_group\", \"type\": \"STRING\", \"desc\": \"Port group name for the node.\", \"table\": null, \"column\": null}, {\"name\": \"frame_number\", \"type\": \"LONG\", \"desc\": \"Frame number being processed.\", \"table\": null, \"column\": null}, {\"name\": \"cam_id\", \"type\": \"LONG\", \"desc\": \"Camera ID associated with this slice.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"pkvm\", \"modules\": [{\"module_name\": \"pkvm.hypervisor\", \"data_objects\": [{\"name\": \"pkvm_hypervisor_events\", \"desc\": \"Events when CPU entered hypervisor.\", \"summary_desc\": \"Events when CPU entered hypervisor.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of the corresponding slice in slices table.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU that entered hypervisor.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when CPU entered hypervisor.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"How much time CPU spent in hypervisor.\", \"table\": null, \"column\": null}, {\"name\": \"reason\", \"type\": \"STRING\", \"desc\": \"Reason for entering hypervisor (e.g. host_hcall, host_mem_abort), or NULL if unknown.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"prelude\", \"modules\": [{\"module_name\": \"prelude.after_eof.casts\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": [{\"name\": \"cast_int\", \"desc\": \"Casts |value| to INT.\", \"summary_desc\": \"Casts |value| to INT.\", \"return_desc\": \"\", \"return_type\": \"Expr\", \"args\": [{\"name\": \"value\", \"type\": \"Expr\", \"desc\": \"Query or subquery that will be cast.\", \"table\": null, \"column\": null}]}, {\"name\": \"cast_double\", \"desc\": \"Casts |value| to DOUBLE.\", \"summary_desc\": \"Casts |value| to DOUBLE.\", \"return_desc\": \"\", \"return_type\": \"Expr\", \"args\": [{\"name\": \"value\", \"type\": \"Expr\", \"desc\": \"Query or subquery that will be cast.\", \"table\": null, \"column\": null}]}, {\"name\": \"cast_string\", \"desc\": \"Casts |value| to STRING.\", \"summary_desc\": \"Casts |value| to STRING.\", \"return_desc\": \"\", \"return_type\": \"Expr\", \"args\": [{\"name\": \"value\", \"type\": \"Expr\", \"desc\": \"Query or subquery that will be cast.\", \"table\": null, \"column\": null}]}]}, {\"module_name\": \"prelude.after_eof.indexes\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"prelude.after_eof.slices\", \"data_objects\": [], \"functions\": [{\"name\": \"slice_is_ancestor\", \"desc\": \"Given two slice ids, returns whether the first is an ancestor of the second.\", \"summary_desc\": \"Given two slice ids, returns whether the first is an ancestor of the second.\", \"args\": [{\"name\": \"ancestor_id\", \"type\": \"LONG\", \"desc\": \"Id of the potential ancestor slice.\", \"table\": null, \"column\": null}, {\"name\": \"descendant_id\", \"type\": \"LONG\", \"desc\": \"Id of the potential descendant slice.\", \"table\": null, \"column\": null}], \"return_type\": \"BOOL\", \"return_desc\": \"Whether `ancestor_id` slice is an ancestor of `descendant_id`.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"prelude.after_eof.tables_views\", \"data_objects\": [{\"name\": \"trace_metrics\", \"desc\": \"Lists all metrics built-into trace processor.\", \"summary_desc\": \"Lists all metrics built-into trace processor.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the metric.\", \"table\": null, \"column\": null}]}, {\"name\": \"trace_bounds\", \"desc\": \"Definition of `trace_bounds` table. The values are being filled by Trace\\n Processor when parsing the trace.\\n It is recommended to depend on the `trace_start()` and `trace_end()`\\n functions rather than directly on `trace_bounds`.\", \"summary_desc\": \"Definition of `trace_bounds` table\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"First ts in the trace.\", \"table\": null, \"column\": null}, {\"name\": \"end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"End of the trace.\", \"table\": null, \"column\": null}]}, {\"name\": \"track\", \"desc\": \"Tracks are a fundamental concept in trace processor and represent a\\n \\\"timeline\\\" for events of the same type and with the same context. See\\n https://perfetto.dev/docs/analysis/trace-processor#tracks for a more\\n detailed explanation, with examples.\", \"summary_desc\": \"Tracks are a fundamental concept in trace processor and represent a  \\\"timeline\\\" for events of the same type and with the same context\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this track. Identical to |track_id|, prefer using |track_id| instead.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track; can be null for some types of tracks (e.g. thread tracks).\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"dimension_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The dimensions of the track which uniquely identify the track within a given `type`.  Join with the `args` table or use the `EXTRACT_ARG` helper function to expand the args.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Generic key-value pairs containing extra information about the track.  Join with the `args` table or use the `EXTRACT_ARG` helper function to expand the args.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"track_group_id\", \"type\": \"LONG\", \"desc\": \"An opaque key indicating that this track belongs to a group of tracks which are \\\"conceptually\\\" the same track.  Tracks in trace processor don't allow overlapping events to allow for easy analysis (i.e. SQL window functions, SPAN JOIN and other similar operators). However, in visualization settings (e.g. the UI), the distinction doesn't matter and all tracks with the same `track_group_id` should be merged together into a single logical \\\"UI track\\\".\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu\", \"desc\": \"Contains information about the CPUs on the device this trace was taken on.\", \"summary_desc\": \"Contains information about the CPUs on the device this trace was taken on.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this CPU. Identical to |ucpu|, prefer using |ucpu| instead.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"ID\", \"desc\": \"Unique identifier for this CPU. Isn't equal to |cpu| for remote machines and is equal to |cpu| for the host machine.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The 0-based CPU core identifier.\", \"table\": null, \"column\": null}, {\"name\": \"cluster_id\", \"type\": \"LONG\", \"desc\": \"The cluster id is shared by CPUs in the same cluster.\", \"table\": null, \"column\": null}, {\"name\": \"processor\", \"type\": \"STRING\", \"desc\": \"A string describing this core.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for CPUs on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"capacity\", \"type\": \"LONG\", \"desc\": \"Capacity of a CPU of a device, a metric which indicates the relative performance of a CPU on a device For details see: https://www.kernel.org/doc/Documentation/devicetree/bindings/arm/cpu-capacity.txt\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra key/value pairs associated with this cpu.\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu_available_frequencies\", \"desc\": \"Contains the frequency values that the CPUs on the device are capable of\\n running at.\", \"summary_desc\": \"Contains the frequency values that the CPUs on the device are capable of  running at.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this cpu frequency.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU for this frequency, meaningful only in single machine traces. For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"freq\", \"type\": \"LONG\", \"desc\": \"CPU frequency in KHz.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the slice executed on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}]}, {\"name\": \"sched_slice\", \"desc\": \"This table holds slices with kernel thread scheduling information. These\\n slices are collected when the Linux \\\"ftrace\\\" data source is used with the\\n \\\"sched/switch\\\" and \\\"sched/wakeup*\\\" events enabled.\\n\\n The rows in this table will always have a matching row in the |thread_state|\\n table with |thread_state.state| = 'Running'\", \"summary_desc\": \"This table holds slices with kernel thread scheduling information\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this scheduling slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp at the start of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the slice executed on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The thread's unique id in the trace.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"end_state\", \"type\": \"STRING\", \"desc\": \"A string representing the scheduling state of the kernel thread at the end of the slice.  The individual characters in the string mean the following: R (runnable), S (awaiting a wakeup), D (in an uninterruptible sleep), T (suspended), t (being traced), X (exiting), P (parked), W (waking), I (idle), N (not contributing to the load average), K (wakeable on fatal signals) and Z (zombie, awaiting cleanup).\", \"table\": null, \"column\": null}, {\"name\": \"priority\", \"type\": \"LONG\", \"desc\": \"The kernel priority that the thread ran at.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The unique CPU identifier that the slice executed on.\", \"table\": null, \"column\": null}]}, {\"name\": \"sched\", \"desc\": \"Shorter alias for table `sched_slice`.\", \"summary_desc\": \"Shorter alias for table `sched_slice`.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Alias for `sched_slice.id`.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `sched_slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias for `sched_slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"Alias for `sched_slice.cpu`.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Alias for `sched_slice.utid`.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"end_state\", \"type\": \"STRING\", \"desc\": \"Alias for `sched_slice.end_state`.\", \"table\": null, \"column\": null}, {\"name\": \"priority\", \"type\": \"LONG\", \"desc\": \"Alias for `sched_slice.priority`.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"Alias for `sched_slice.ucpu`.\", \"table\": null, \"column\": null}, {\"name\": \"ts_end\", \"type\": \"LONG\", \"desc\": \"Legacy column, should no longer be used.\", \"table\": null, \"column\": null}]}, {\"name\": \"thread_state\", \"desc\": \"This table contains the scheduling state of every thread on the system during\\n the trace.\\n\\n The rows in this table which have |state| = 'Running', will have a\\n corresponding row in the |sched_slice| table.\", \"summary_desc\": \"This table contains the scheduling state of every thread on the system during  the trace.   The rows in this table which have |state| = 'Running', will have a  corresponding row in the |sched_slice| table.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this thread state.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp at the start of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the thread executed on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The thread's unique id in the trace.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"The scheduling state of the thread. Can be \\\"Running\\\" or any of the states described in |sched_slice.end_state|.\", \"table\": null, \"column\": null}, {\"name\": \"io_wait\", \"type\": \"LONG\", \"desc\": \"Indicates whether this thread was blocked on IO.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function\", \"type\": \"STRING\", \"desc\": \"The function in the kernel this thread was blocked on.\", \"table\": null, \"column\": null}, {\"name\": \"waker_utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The unique thread id of the thread which caused a wakeup of this thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"waker_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"The unique thread state id which caused a wakeup of this thread.\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"irq_context\", \"type\": \"LONG\", \"desc\": \"Whether the wakeup was from interrupt context or process context.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The unique CPU identifier that the thread executed on.\", \"table\": null, \"column\": null}]}, {\"name\": \"ftrace_event\", \"desc\": \"Contains all the ftrace events in the trace. This table exists only for\\n debugging purposes and should not be relied on in production usecases (i.e.\\n metrics, standard library etc). Note also that this table might be empty if\\n raw ftrace parsing has been disabled.\", \"summary_desc\": \"Contains all the ftrace events in the trace\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this ftrace event.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of this event.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The ftrace event name.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU this event was emitted on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The thread this event was emitted on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The set of key/value pairs associated with this event.\", \"table\": null, \"column\": null}, {\"name\": \"common_flags\", \"type\": \"LONG\", \"desc\": \"Ftrace event flags for this event. Currently only emitted for sched_waking events.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The unique CPU identifier that this event was emitted on.\", \"table\": null, \"column\": null}]}, {\"name\": \"raw\", \"desc\": \"This table is deprecated. Use `ftrace_event` instead which contains the same\\n rows; this table is simply a (badly named) alias.\", \"summary_desc\": \"This table is deprecated\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this raw event.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of this event.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the event. For ftrace events, this will be the ftrace event name.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU this event was emitted on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The thread this event was emitted on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The set of key/value pairs associated with this event.\", \"table\": null, \"column\": null}, {\"name\": \"common_flags\", \"type\": \"LONG\", \"desc\": \"Ftrace event flags for this event. Currently only emitted for sched_waking events.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The unique CPU identifier that this event was emitted on.\", \"table\": null, \"column\": null}]}, {\"name\": \"thread_track\", \"desc\": \"Tracks which are associated to a single thread.\", \"summary_desc\": \"Tracks which are associated to a single thread.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this thread track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The utid that the track is associated with.\", \"table\": \"thread\", \"column\": \"id\"}]}, {\"name\": \"process_track\", \"desc\": \"Tracks which are associated to a single process.\", \"summary_desc\": \"Tracks which are associated to a single process.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this process track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"The upid that the track is associated with.\", \"table\": \"process\", \"column\": \"id\"}]}, {\"name\": \"cpu_track\", \"desc\": \"Tracks which are associated to a single CPU.\", \"summary_desc\": \"Tracks which are associated to a single CPU.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this cpu track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the track is associated with.\", \"table\": null, \"column\": null}]}, {\"name\": \"gpu_track\", \"desc\": \"Table containing tracks which are loosely tied to a GPU.\\n\\n NOTE: this table is deprecated due to inconsistency of it's design with\\n other track tables (e.g. not having a GPU column, mixing a bunch of different\\n tracks which are barely related). Please use the track table directly\\n instead.\", \"summary_desc\": \"Table containing tracks which are loosely tied to a GPU.   NOTE: this table is deprecated due to inconsistency of it's design with  other track tables (e.g\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this cpu track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"dimension_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The dimensions of the track which uniquely identify the track within a given type.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"scope\", \"type\": \"STRING\", \"desc\": \"The source of the track. Deprecated.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for the track.\", \"table\": null, \"column\": null}, {\"name\": \"context_id\", \"type\": \"LONG\", \"desc\": \"The context id for the GPU this track is associated to.\", \"table\": null, \"column\": null}]}, {\"name\": \"counter_track\", \"desc\": \"Tracks containing counter-like events.\", \"summary_desc\": \"Tracks containing counter-like events.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this cpu counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"dimension_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The dimensions of the track which uniquely identify the track within a given type.\", \"table\": null, \"column\": null}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu_counter_track\", \"desc\": \"Tracks containing counter-like events associated to a CPU.\", \"summary_desc\": \"Tracks containing counter-like events associated to a CPU.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this cpu counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the track is associated with.\", \"table\": null, \"column\": null}]}, {\"name\": \"gpu_counter_track\", \"desc\": \"Tracks containing counter-like events associated to a GPU.\", \"summary_desc\": \"Tracks containing counter-like events associated to a GPU.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this gpu counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}, {\"name\": \"gpu_id\", \"type\": \"LONG\", \"desc\": \"The GPU that the track is associated with.\", \"table\": null, \"column\": null}]}, {\"name\": \"process_counter_track\", \"desc\": \"Tracks containing counter-like events associated to a process.\", \"summary_desc\": \"Tracks containing counter-like events associated to a process.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this process counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"LONG\", \"desc\": \"The upid of the process that the track is associated with.\", \"table\": null, \"column\": null}]}, {\"name\": \"thread_counter_track\", \"desc\": \"Tracks containing counter-like events associated to a thread.\", \"summary_desc\": \"Tracks containing counter-like events associated to a thread.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this thread counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"LONG\", \"desc\": \"The utid of the thread that the track is associated with.\", \"table\": null, \"column\": null}]}, {\"name\": \"perf_counter_track\", \"desc\": \"Tracks containing counter-like events collected from Linux perf.\", \"summary_desc\": \"Tracks containing counter-like events collected from Linux perf.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(track.id)\", \"desc\": \"Unique identifier for this thread counter track.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the track.\", \"table\": null, \"column\": null}, {\"name\": \"type\", \"type\": \"STRING\", \"desc\": \"The type of a track indicates the type of data the track contains.  Every track is uniquely identified by the the combination of the type and a set of dimensions: type allow identifying a set of tracks with the same type of data within the whole universe of tracks while dimensions allow distinguishing between different tracks in that set.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The track which is the \\\"parent\\\" of this track. Only non-null for tracks created using Perfetto's track_event API.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"source_arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Args for this track which store information about \\\"source\\\" of this track in the trace. For example: whether this track orginated from atrace, Chrome tracepoints etc.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for tracks on a remote machine.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"The units of the counter. This column is rarely filled.\", \"table\": null, \"column\": null}, {\"name\": \"description\", \"type\": \"STRING\", \"desc\": \"The description for this track. For debugging purposes only.\", \"table\": null, \"column\": null}, {\"name\": \"perf_session_id\", \"type\": \"LONG\", \"desc\": \"The id of the perf session this counter was captured on.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU the counter is associated with. Can be null if the counter is not associated with any CPU.\", \"table\": null, \"column\": null}, {\"name\": \"is_timebase\", \"type\": \"BOOL\", \"desc\": \"Whether this counter is the sampling timebase for the session.\", \"table\": null, \"column\": null}]}, {\"name\": \"counters\", \"desc\": \"Alias of the `counter` table.\", \"summary_desc\": \"Alias of the `counter` table.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Alias of `counter.id`.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `counter.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `counter.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"Alias of `counter.value`.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of `counter.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Legacy column, should no longer be used.\", \"table\": null, \"column\": null}, {\"name\": \"unit\", \"type\": \"STRING\", \"desc\": \"Legacy column, should no longer be used.\", \"table\": null, \"column\": null}]}, {\"name\": \"frame_slice\", \"desc\": \"Table containing graphics frame events on Android.\", \"summary_desc\": \"Table containing graphics frame events on Android.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Alias of `slice.id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(frame_slice.id)\", \"desc\": \"Alias of `slice.parent_id`.\", \"table\": \"frame_slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"layer_name\", \"type\": \"STRING\", \"desc\": \"Name of the graphics layer this slice happened on.\", \"table\": null, \"column\": null}, {\"name\": \"frame_number\", \"type\": \"LONG\", \"desc\": \"The frame number this slice is associated with.\", \"table\": null, \"column\": null}, {\"name\": \"queue_to_acquire_time\", \"type\": \"LONG\", \"desc\": \"The time between queue and acquire for this buffer and layer.\", \"table\": null, \"column\": null}, {\"name\": \"acquire_to_latch_time\", \"type\": \"LONG\", \"desc\": \"The time between acquire and latch for this buffer and layer.\", \"table\": null, \"column\": null}, {\"name\": \"latch_to_present_time\", \"type\": \"LONG\", \"desc\": \"The time between latch and present for this buffer and layer.\", \"table\": null, \"column\": null}]}, {\"name\": \"gpu_slice\", \"desc\": \"Table containing graphics frame events on Android.\", \"summary_desc\": \"Table containing graphics frame events on Android.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Alias of `slice.id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(frame_slice.id)\", \"desc\": \"Alias of `slice.parent_id`.\", \"table\": \"frame_slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"context_id\", \"type\": \"LONG\", \"desc\": \"Context ID.\", \"table\": null, \"column\": null}, {\"name\": \"render_target\", \"type\": \"LONG\", \"desc\": \"Render target ID.\", \"table\": null, \"column\": null}, {\"name\": \"render_target_name\", \"type\": \"STRING\", \"desc\": \"The name of the render target.\", \"table\": null, \"column\": null}, {\"name\": \"render_pass\", \"type\": \"LONG\", \"desc\": \"Render pass ID.\", \"table\": null, \"column\": null}, {\"name\": \"render_pass_name\", \"type\": \"STRING\", \"desc\": \"The name of the render pass.\", \"table\": null, \"column\": null}, {\"name\": \"command_buffer\", \"type\": \"LONG\", \"desc\": \"The command buffer ID.\", \"table\": null, \"column\": null}, {\"name\": \"command_buffer_name\", \"type\": \"STRING\", \"desc\": \"The name of the command buffer.\", \"table\": null, \"column\": null}, {\"name\": \"frame_id\", \"type\": \"LONG\", \"desc\": \"Frame id.\", \"table\": null, \"column\": null}, {\"name\": \"submission_id\", \"type\": \"LONG\", \"desc\": \"The submission id.\", \"table\": null, \"column\": null}, {\"name\": \"hw_queue_id\", \"type\": \"LONG\", \"desc\": \"The hardware queue id.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"The id of the process.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"render_subpasses\", \"type\": \"STRING\", \"desc\": \"Render subpasses.\", \"table\": null, \"column\": null}]}, {\"name\": \"expected_frame_timeline_slice\", \"desc\": \"This table contains information on the expected timeline of either a display\\n frame or a surface frame.\", \"summary_desc\": \"This table contains information on the expected timeline of either a display  frame or a surface frame.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Alias of `slice.id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(frame_slice.id)\", \"desc\": \"Alias of `slice.parent_id`.\", \"table\": \"frame_slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"display_frame_token\", \"type\": \"LONG\", \"desc\": \"Display frame token (vsync id).\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_token\", \"type\": \"LONG\", \"desc\": \"Surface frame token (vsync id), null if this is a display frame.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique process id of the app that generates the surface frame.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"layer_name\", \"type\": \"STRING\", \"desc\": \"Layer name if this is a surface frame.\", \"table\": null, \"column\": null}]}, {\"name\": \"actual_frame_timeline_slice\", \"desc\": \"This table contains information on the actual timeline and additional\\n analysis related to the performance of either a display frame or a surface\\n frame.\", \"summary_desc\": \"This table contains information on the actual timeline and additional  analysis related to the performance of either a display frame or a surface  frame.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Alias of `slice.id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(frame_slice.id)\", \"desc\": \"Alias of `slice.parent_id`.\", \"table\": \"frame_slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"display_frame_token\", \"type\": \"LONG\", \"desc\": \"Display frame token (vsync id).\", \"table\": null, \"column\": null}, {\"name\": \"surface_frame_token\", \"type\": \"LONG\", \"desc\": \"Surface frame token (vsync id), null if this is a display frame.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique process id of the app that generates the surface frame.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"layer_name\", \"type\": \"STRING\", \"desc\": \"Layer name if this is a surface frame.\", \"table\": null, \"column\": null}, {\"name\": \"present_type\", \"type\": \"STRING\", \"desc\": \"Frame's present type (eg. on time / early / late).\", \"table\": null, \"column\": null}, {\"name\": \"on_time_finish\", \"type\": \"LONG\", \"desc\": \"Whether the frame finishes on time.\", \"table\": null, \"column\": null}, {\"name\": \"gpu_composition\", \"type\": \"LONG\", \"desc\": \"Whether the frame used gpu composition.\", \"table\": null, \"column\": null}, {\"name\": \"jank_type\", \"type\": \"STRING\", \"desc\": \"Specify the jank types for this frame if there's jank, or none if no jank occurred.\", \"table\": null, \"column\": null}, {\"name\": \"jank_severity_type\", \"type\": \"STRING\", \"desc\": \"Severity of the jank: none if no jank.\", \"table\": null, \"column\": null}, {\"name\": \"prediction_type\", \"type\": \"STRING\", \"desc\": \"Frame's prediction type (eg. valid / expired).\", \"table\": null, \"column\": null}, {\"name\": \"jank_tag\", \"type\": \"STRING\", \"desc\": \"Jank tag based on jank type, used for slice visualization.\", \"table\": null, \"column\": null}]}, {\"name\": \"heap_graph_class\", \"desc\": \"Stores class information within ART heap graphs. It represents Java/Kotlin\\n classes that exist in the heap, including their names, inheritance\\n relationships, and loading context.\", \"summary_desc\": \"Stores class information within ART heap graphs\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this heap graph class.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"(potentially obfuscated) name of the class.\", \"table\": null, \"column\": null}, {\"name\": \"deobfuscated_name\", \"type\": \"STRING\", \"desc\": \"If class name was obfuscated and deobfuscation map for it provided, the deobfuscated name.\", \"table\": null, \"column\": null}, {\"name\": \"location\", \"type\": \"STRING\", \"desc\": \"the APK / Dex / JAR file the class is contained in.\", \"table\": null, \"column\": null}, {\"name\": \"superclass_id\", \"type\": \"JOINID(heap_graph_class.id)\", \"desc\": \"The superclass of this class.\", \"table\": \"heap_graph_class\", \"column\": \"id\"}, {\"name\": \"classloader_id\", \"type\": \"LONG\", \"desc\": \"The classloader that loaded this class.\", \"table\": null, \"column\": null}, {\"name\": \"kind\", \"type\": \"STRING\", \"desc\": \"The kind of class.\", \"table\": null, \"column\": null}]}, {\"name\": \"heap_graph_object\", \"desc\": \"The objects on the Dalvik heap.\\n\\n All rows with the same (upid, graph_sample_ts) are one dump.\", \"summary_desc\": \"The objects on the Dalvik heap.   All rows with the same (upid, graph_sample_ts) are one dump.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this heap graph object.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique PID of the target.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"graph_sample_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp this dump was taken at.\", \"table\": null, \"column\": null}, {\"name\": \"self_size\", \"type\": \"LONG\", \"desc\": \"Size this object uses on the Java Heap.\", \"table\": null, \"column\": null}, {\"name\": \"native_size\", \"type\": \"LONG\", \"desc\": \"Approximate amount of native memory used by this object, as reported by libcore.util.NativeAllocationRegistry.size.\", \"table\": null, \"column\": null}, {\"name\": \"reference_set_id\", \"type\": \"JOINID(heap_graph_reference.reference_set_id)\", \"desc\": \"Join key with heap_graph_reference containing all objects referred in this object's fields.\", \"table\": \"heap_graph_reference\", \"column\": \"reference_set_id\"}, {\"name\": \"reachable\", \"type\": \"BOOL\", \"desc\": \"Bool whether this object is reachable from a GC root. If false, this object is uncollected garbage.\", \"table\": null, \"column\": null}, {\"name\": \"heap_type\", \"type\": \"STRING\", \"desc\": \"The type of ART heap this object is stored on (app, zygote, boot image)\", \"table\": null, \"column\": null}, {\"name\": \"type_id\", \"type\": \"JOINID(heap_graph_class.id)\", \"desc\": \"Class this object is an instance of.\", \"table\": \"heap_graph_class\", \"column\": \"id\"}, {\"name\": \"root_type\", \"type\": \"STRING\", \"desc\": \"If not NULL, this object is a GC root.\", \"table\": null, \"column\": null}, {\"name\": \"root_distance\", \"type\": \"LONG\", \"desc\": \"Distance from the root object.\", \"table\": null, \"column\": null}]}, {\"name\": \"heap_graph_reference\", \"desc\": \"Many-to-many mapping between heap_graph_object.\\n\\n This associates the object with given reference_set_id with the objects\\n that are referred to by its fields.\", \"summary_desc\": \"Many-to-many mapping between heap_graph_object.   This associates the object with given reference_set_id with the objects  that are referred to by its fields.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this heap graph reference.\", \"table\": null, \"column\": null}, {\"name\": \"reference_set_id\", \"type\": \"JOINID(heap_graph_object.reference_set_id)\", \"desc\": \"Join key to heap_graph_object reference_set_id.\", \"table\": \"heap_graph_object\", \"column\": \"reference_set_id\"}, {\"name\": \"owner_id\", \"type\": \"JOINID(heap_graph_object.id)\", \"desc\": \"Id of object that has this reference_set_id.\", \"table\": \"heap_graph_object\", \"column\": \"id\"}, {\"name\": \"owned_id\", \"type\": \"JOINID(heap_graph_object.id)\", \"desc\": \"Id of object that is referred to.\", \"table\": \"heap_graph_object\", \"column\": \"id\"}, {\"name\": \"field_name\", \"type\": \"STRING\", \"desc\": \"The field that refers to the object. E.g. Foo.name.\", \"table\": null, \"column\": null}, {\"name\": \"field_type_name\", \"type\": \"STRING\", \"desc\": \"The static type of the field. E.g. java.lang.String.\", \"table\": null, \"column\": null}, {\"name\": \"deobfuscated_field_name\", \"type\": \"STRING\", \"desc\": \"The deobfuscated name, if field_name was obfuscated and a deobfuscation mapping was provided for it.\", \"table\": null, \"column\": null}]}, {\"name\": \"memory_snapshot\", \"desc\": \"Table with memory snapshots.\", \"summary_desc\": \"Table with memory snapshots.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this snapshot.\", \"table\": null, \"column\": null}, {\"name\": \"timestamp\", \"type\": \"TIMESTAMP\", \"desc\": \"Time of the snapshot.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track of this snapshot.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"detail_level\", \"type\": \"STRING\", \"desc\": \"Detail level of this snapshot.\", \"table\": null, \"column\": null}]}, {\"name\": \"process_memory_snapshot\", \"desc\": \"Table with process memory snapshots.\", \"summary_desc\": \"Table with process memory snapshots.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this snapshot.\", \"table\": null, \"column\": null}, {\"name\": \"snapshot_id\", \"type\": \"JOINID(memory_snapshot.id)\", \"desc\": \"Snapshot ID for this snapshot.\", \"table\": \"memory_snapshot\", \"column\": \"id\"}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Process for this snapshot.\", \"table\": \"process\", \"column\": \"id\"}]}, {\"name\": \"memory_snapshot_node\", \"desc\": \"Table with memory snapshot nodes.\", \"summary_desc\": \"Table with memory snapshot nodes.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this node.\", \"table\": null, \"column\": null}, {\"name\": \"process_snapshot_id\", \"type\": \"JOINID(process_memory_snapshot.id)\", \"desc\": \"Process snapshot ID for to this node.\", \"table\": \"process_memory_snapshot\", \"column\": \"id\"}, {\"name\": \"parent_node_id\", \"type\": \"JOINID(memory_snapshot_node.id)\", \"desc\": \"Parent node for this node, optional.\", \"table\": \"memory_snapshot_node\", \"column\": \"id\"}, {\"name\": \"path\", \"type\": \"STRING\", \"desc\": \"Path for this node.\", \"table\": null, \"column\": null}, {\"name\": \"size\", \"type\": \"LONG\", \"desc\": \"Size of the memory allocated to this node.\", \"table\": null, \"column\": null}, {\"name\": \"effective_size\", \"type\": \"LONG\", \"desc\": \"Effective size used by this node.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Additional args of the node.\", \"table\": null, \"column\": null}]}, {\"name\": \"memory_snapshot_edge\", \"desc\": \"Table with memory snapshot edge\", \"summary_desc\": \"Table with memory snapshot edge\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique identifier for this edge.\", \"table\": null, \"column\": null}, {\"name\": \"source_node_id\", \"type\": \"JOINID(memory_snapshot_node.id)\", \"desc\": \"Source node for this edge.\", \"table\": \"memory_snapshot_node\", \"column\": \"id\"}, {\"name\": \"target_node_id\", \"type\": \"JOINID(memory_snapshot_node.id)\", \"desc\": \"Target node for this edge.\", \"table\": \"memory_snapshot_node\", \"column\": \"id\"}, {\"name\": \"importance\", \"type\": \"LONG\", \"desc\": \"Importance for this edge.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"prelude.after_eof.views\", \"data_objects\": [{\"name\": \"counter\", \"desc\": \"Counters are values put into tracks during parsing of the trace.\", \"summary_desc\": \"Counters are values put into tracks during parsing of the trace.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Unique id of a counter value\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Time of fetching the counter value.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Track this counter value belongs to.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"value\", \"type\": \"DOUBLE\", \"desc\": \"Value.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Additional information about the counter value.\", \"table\": null, \"column\": null}]}, {\"name\": \"slice\", \"desc\": \"Contains slices from userspace which explains what threads were doing\\n during the trace.\", \"summary_desc\": \"Contains slices from userspace which explains what threads were doing  during the trace.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"The id of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp at the start of the slice in nanoseconds. The actual value depends on the `primary_trace_clock` selected in TraceConfig. This is often the value of a monotonic counter since device boot so is only meaningful in the context of a trace.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the slice in nanoseconds.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The id of the track this slice is located on.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"The \\\"category\\\" of the slice. If this slice originated with track_event, this column contains the category emitted. Otherwise, it is likely to be null (with limited exceptions).\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the slice. The name describes what was happening during the slice.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"The depth of the slice in the current stack of slices.\", \"table\": null, \"column\": null}, {\"name\": \"stack_id\", \"type\": \"LONG\", \"desc\": \"A unique identifier obtained from the names of all slices in this stack. This is rarely useful and kept around only for legacy reasons.\", \"table\": null, \"column\": null}, {\"name\": \"parent_stack_id\", \"type\": \"LONG\", \"desc\": \"The stack_id for the parent of this slice. Rarely useful.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"The id of the parent (i.e. immediate ancestor) slice for this slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The id of the argument set associated with this slice.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The thread timestamp at the start of the slice. This column\\u00a0will only be populated if thread timestamp collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"DURATION\", \"desc\": \"The thread time used by this slice. This column will only be populated if thread timestamp collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_count\", \"type\": \"LONG\", \"desc\": \"The value of the CPU instruction counter at the start of the slice. This column will only be populated if thread instruction collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_delta\", \"type\": \"LONG\", \"desc\": \"The change in value of the CPU instruction counter between the start and end of the slice. This column will only be populated if thread instruction collection is enabled with track_event.\", \"table\": null, \"column\": null}, {\"name\": \"cat\", \"type\": \"STRING\", \"desc\": \"Alias of `category`.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias of `id`.\", \"table\": \"slice\", \"column\": \"id\"}]}, {\"name\": \"instant\", \"desc\": \"Contains instant events from userspace which indicates what happened at a\\n single moment in time.\", \"summary_desc\": \"Contains instant events from userspace which indicates what happened at a  single moment in time.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the instant.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"The id of the track this instant is located on.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the instant. The name describes what happened during the instant.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The id of the argument set associated with this instant.\", \"table\": null, \"column\": null}]}, {\"name\": \"slices\", \"desc\": \"Alternative alias of table `slice`.\", \"summary_desc\": \"Alternative alias of table `slice`.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias of `slice.id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias of `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"stack_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.stack_id`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_stack_id\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.parent_stack_id`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias of `slice.parent_id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Alias of `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias of `slice.thread_ts`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"DURATION\", \"desc\": \"Alias of `slice.thread_dur`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_count\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.thread_instruction_count`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_instruction_delta\", \"type\": \"LONG\", \"desc\": \"Alias of `slice.thread_instruction_delta`.\", \"table\": null, \"column\": null}, {\"name\": \"cat\", \"type\": \"STRING\", \"desc\": \"Alias of `slice.cat`.\", \"table\": null, \"column\": null}, {\"name\": \"slice_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias of `slice.slice_id`.\", \"table\": \"slice\", \"column\": \"id\"}]}, {\"name\": \"thread\", \"desc\": \"Contains information of threads seen during the trace.\", \"summary_desc\": \"Contains information of threads seen during the trace.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"The id of the thread. Prefer using `utid` instead.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"ID\", \"desc\": \"Unique thread id. This is != the OS tid. This is a monotonic number associated to each thread. The OS thread id (tid) cannot be used as primary key because tids and pids are recycled by most kernels.\", \"table\": null, \"column\": null}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"The OS id for this thread. Note: this is *not* unique over the lifetime of the trace so cannot be used as a primary key. Use |utid| instead.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the thread. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).\", \"table\": null, \"column\": null}, {\"name\": \"start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of this thread (if known). Is null in most cases unless a thread creation event is enabled (e.g. task_newtask ftrace event on Linux/Android).\", \"table\": null, \"column\": null}, {\"name\": \"end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The end timestamp of this thread (if known). Is null in most cases unless a thread destruction event is enabled (e.g. sched_process_free ftrace event on Linux/Android).\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"The process hosting this thread.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"desc\": \"Boolean indicating if this thread is the main thread in the process.\", \"table\": null, \"column\": null}, {\"name\": \"is_idle\", \"type\": \"BOOL\", \"desc\": \"Boolean indicating if this thread is a kernel idle thread.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for threads on a remote machine.\", \"table\": null, \"column\": null}]}, {\"name\": \"process\", \"desc\": \"Contains information of processes seen during the trace.\", \"summary_desc\": \"Contains information of processes seen during the trace.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"The id of the process. Prefer using `upid` instead.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique process id. This is != the OS pid. This is a monotonic number associated to each process. The OS process id (pid) cannot be used as primary key because tids and pids are recycled by most kernels.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"The OS id for this process. Note: this is *not* unique over the lifetime of the trace so cannot be used as a primary key. Use |upid| instead.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The name of the process. Can be populated from many sources (e.g. ftrace, /proc scraping, track event etc).\", \"table\": null, \"column\": null}, {\"name\": \"start_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start timestamp of this process (if known). Is null in most cases unless a process creation event is enabled (e.g. task_newtask ftrace event on Linux/Android).\", \"table\": null, \"column\": null}, {\"name\": \"end_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The end timestamp of this process (if known). Is null in most cases unless a process destruction event is enabled (e.g. sched_process_free ftrace event on Linux/Android).\", \"table\": null, \"column\": null}, {\"name\": \"parent_upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"The upid of the process which caused this process to be spawned.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"uid\", \"type\": \"LONG\", \"desc\": \"The Unix user id of the process.\", \"table\": null, \"column\": null}, {\"name\": \"android_appid\", \"type\": \"LONG\", \"desc\": \"Android appid of this process.\", \"table\": null, \"column\": null}, {\"name\": \"android_user_id\", \"type\": \"LONG\", \"desc\": \"Android user id of this process.\", \"table\": null, \"column\": null}, {\"name\": \"cmdline\", \"type\": \"STRING\", \"desc\": \"/proc/cmdline for this process.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Extra args for this process.\", \"table\": null, \"column\": null}, {\"name\": \"machine_id\", \"type\": \"LONG\", \"desc\": \"Machine identifier, non-null for processes on a remote machine.\", \"table\": null, \"column\": null}]}, {\"name\": \"args\", \"desc\": \"Arbitrary key-value pairs which allow adding metadata to other, strongly\\n typed tables.\\n Note: for a given row, only one of |int_value|, |string_value|, |real_value|\\n will be non-null.\", \"summary_desc\": \"Arbitrary key-value pairs which allow adding metadata to other, strongly  typed tables.  Note: for a given row, only one of |int_value|, |string_value|, |real_value|  will be non-null.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"The id of the arg.\", \"table\": null, \"column\": null}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"The id for a single set of arguments.\", \"table\": null, \"column\": null}, {\"name\": \"flat_key\", \"type\": \"STRING\", \"desc\": \"The \\\"flat key\\\" of the arg: this is the key without any array indexes.\", \"table\": null, \"column\": null}, {\"name\": \"key\", \"type\": \"STRING\", \"desc\": \"The key for the arg.\", \"table\": null, \"column\": null}, {\"name\": \"int_value\", \"type\": \"LONG\", \"desc\": \"The integer value of the arg.\", \"table\": null, \"column\": null}, {\"name\": \"string_value\", \"type\": \"STRING\", \"desc\": \"The string value of the arg.\", \"table\": null, \"column\": null}, {\"name\": \"real_value\", \"type\": \"DOUBLE\", \"desc\": \"The double value of the arg.\", \"table\": null, \"column\": null}, {\"name\": \"value_type\", \"type\": \"STRING\", \"desc\": \"The type of the value of the arg. Will be one of 'int', 'uint', 'string', 'real', 'pointer', 'bool' or 'json'.\", \"table\": null, \"column\": null}, {\"name\": \"display_value\", \"type\": \"STRING\", \"desc\": \"The human-readable formatted value of the arg.\", \"table\": null, \"column\": null}]}, {\"name\": \"perf_session\", \"desc\": \"Contains the Linux perf sessions in the trace.\", \"summary_desc\": \"Contains the Linux perf sessions in the trace.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the perf session. Prefer using `perf_session_id` instead.\", \"table\": null, \"column\": null}, {\"name\": \"perf_session_id\", \"type\": \"LONG\", \"desc\": \"The id of the perf session.\", \"table\": null, \"column\": null}, {\"name\": \"cmdline\", \"type\": \"STRING\", \"desc\": \"Command line used to collect the data.\", \"table\": null, \"column\": null}]}, {\"name\": \"android_logs\", \"desc\": \"Log entries from Android logcat.\\n\\n NOTE: this table is not sorted by timestamp.\", \"summary_desc\": \"Log entries from Android logcat.   NOTE: this table is not sorted by timestamp.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID\", \"desc\": \"Which row in the table the log corresponds to.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp of log entry.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread writing the log entry.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"prio\", \"type\": \"LONG\", \"desc\": \"Priority of the log. 3=DEBUG, 4=INFO, 5=WARN, 6=ERROR.\", \"table\": null, \"column\": null}, {\"name\": \"tag\", \"type\": \"STRING\", \"desc\": \"Tag of the log entry.\", \"table\": null, \"column\": null}, {\"name\": \"msg\", \"type\": \"STRING\", \"desc\": \"Content of the log entry\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"prelude.before_eof.tables\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"prelude.before_eof.trace_bounds\", \"data_objects\": [], \"functions\": [{\"name\": \"trace_start\", \"desc\": \"Fetch start of the trace.\", \"summary_desc\": \"Fetch start of the trace.\", \"args\": [], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Start of the trace.\"}, {\"name\": \"trace_end\", \"desc\": \"Fetch end of the trace.\", \"summary_desc\": \"Fetch end of the trace.\", \"args\": [], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"End of the trace.\"}, {\"name\": \"trace_dur\", \"desc\": \"Fetch duration of the trace.\", \"summary_desc\": \"Fetch duration of the trace.\", \"args\": [], \"return_type\": \"DURATION\", \"return_desc\": \"Duration of the trace.\"}], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"proto_path\", \"modules\": [{\"module_name\": \"proto_path.proto_path\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"sched\", \"modules\": [{\"module_name\": \"sched.latency\", \"data_objects\": [{\"name\": \"sched_latency_for_running_interval\", \"desc\": \"Scheduling latency of running thread states.\\n For each time the thread was running, returns the duration of the runnable\\n state directly before.\", \"summary_desc\": \"Scheduling latency of running thread states.  For each time the thread was running, returns the duration of the runnable  state directly before.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"thread_state_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Running state of the thread.\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"sched_id\", \"type\": \"JOINID(sched.id)\", \"desc\": \"Id of a corresponding slice in a `sched` table.\", \"table\": \"sched\", \"column\": \"id\"}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread with running state.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"runnable_latency_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Runnable state before thread is \\\"running\\\". Duration of this thread state is `latency_dur`. One of `thread_state.id`.\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"latency_dur\", \"type\": \"LONG\", \"desc\": \"Scheduling latency of thread state. Duration of thread state with `runnable_latency_id`.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.runnable\", \"data_objects\": [{\"name\": \"sched_previous_runnable_on_thread\", \"desc\": \"Previous runnable slice on the same thread.\\n For each \\\"Running\\\" thread state finds:\\n - previous \\\"Runnable\\\" (or runnable preempted) state.\\n - previous uninterrupted \\\"Runnable\\\" state with a valid waker thread.\", \"summary_desc\": \"Previous runnable slice on the same thread.  For each \\\"Running\\\" thread state finds:  - previous \\\"Runnable\\\" (or runnable preempted) state.  - previous uninterrupted \\\"Runnable\\\" state with a valid waker thread.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Running thread state\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"prev_runnable_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Previous runnable thread state.\", \"table\": \"thread_state\", \"column\": \"id\"}, {\"name\": \"prev_wakeup_runnable_id\", \"type\": \"JOINID(thread_state.id)\", \"desc\": \"Previous runnable thread state with valid waker thread.\", \"table\": \"thread_state\", \"column\": \"id\"}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.states\", \"data_objects\": [], \"functions\": [{\"name\": \"sched_state_to_human_readable_string\", \"desc\": \"Translates a single-letter scheduling state to a human-readable string.\", \"summary_desc\": \"Translates a single-letter scheduling state to a human-readable string.\", \"args\": [{\"name\": \"short_name\", \"type\": \"STRING\", \"desc\": \"An individual character string representing the scheduling state of the kernel thread at the end of the slice.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"Humanly readable string representing the scheduling state of the kernel thread. The individual characters in the string mean the following: R (runnable), S (awaiting a wakeup), D (in an uninterruptible sleep), T (suspended), t (being traced), X (exiting), P (parked), W (waking), I (idle), N (not contributing to the load average), K (wakeable on fatal signals) and Z (zombie, awaiting cleanup).\"}, {\"name\": \"sched_state_io_to_human_readable_string\", \"desc\": \"Translates a single-letter scheduling state and IO wait information to\\n a human-readable string.\", \"summary_desc\": \"Translates a single-letter scheduling state and IO wait information to  a human-readable string.\", \"args\": [{\"name\": \"sched_state\", \"type\": \"STRING\", \"desc\": \"An individual character string representing the scheduling state of the kernel thread at the end of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"io_wait\", \"type\": \"BOOL\", \"desc\": \"A (posssibly NULL) boolean indicating, if the device was in uninterruptible sleep, if it was an IO sleep.\", \"table\": null, \"column\": null}], \"return_type\": \"STRING\", \"return_desc\": \"A human readable string with information about the scheduling state and IO wait.\"}], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.thread_executing_span\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.thread_executing_span_with_slice\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.thread_level_parallelism\", \"data_objects\": [{\"name\": \"sched_runnable_thread_count\", \"desc\": \"The count of runnable threads over time.\", \"summary_desc\": \"The count of runnable threads over time.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the runnable thread count changed to the current value.\", \"table\": null, \"column\": null}, {\"name\": \"runnable_thread_count\", \"type\": \"LONG\", \"desc\": \"Number of runnable threads, covering the range from this timestamp to the next row's timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"sched_uninterruptible_sleep_thread_count\", \"desc\": \"The count of threads in uninterruptible sleep over time.\", \"summary_desc\": \"The count of threads in uninterruptible sleep over time.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the thread count changed to the current value.\", \"table\": null, \"column\": null}, {\"name\": \"uninterruptible_sleep_thread_count\", \"type\": \"LONG\", \"desc\": \"Number of threads in uninterrutible sleep, covering the range from this timestamp to the next row's timestamp.\", \"table\": null, \"column\": null}]}, {\"name\": \"sched_active_cpu_count\", \"desc\": \"The count of active CPUs over time.\", \"summary_desc\": \"The count of active CPUs over time.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Timestamp when the number of active CPU changed.\", \"table\": null, \"column\": null}, {\"name\": \"active_cpu_count\", \"type\": \"LONG\", \"desc\": \"Number of active CPUs, covering the range from this timestamp to the next row's timestamp.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.thread_state_flattened\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"sched.time_in_state\", \"data_objects\": [{\"name\": \"sched_time_in_state_for_thread\", \"desc\": \"The time a thread spent in each scheduling state during it's lifetime.\", \"summary_desc\": \"The time a thread spent in each scheduling state during it's lifetime.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"total_runtime\", \"type\": \"LONG\", \"desc\": \"Total runtime of thread.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"One of the scheduling states of kernel thread.\", \"table\": null, \"column\": null}, {\"name\": \"time_in_state\", \"type\": \"LONG\", \"desc\": \"Total time spent in the scheduling state.\", \"table\": null, \"column\": null}, {\"name\": \"percentage_in_state\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in scheduling state in [0-100] range.\", \"table\": null, \"column\": null}]}, {\"name\": \"sched_percentage_of_time_in_state\", \"desc\": \"Summary of time spent by thread in each scheduling state, in percentage ([0, 100]\\n ranges). Sum of all states might be smaller than 100, as those values\\n are rounded down.\", \"summary_desc\": \"Summary of time spent by thread in each scheduling state, in percentage ([0, 100]  ranges)\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"running\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in running ('Running') state in [0, 100] range.\", \"table\": null, \"column\": null}, {\"name\": \"runnable\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in runnable ('R') state in [0, 100] range.\", \"table\": null, \"column\": null}, {\"name\": \"runnable_preempted\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in preempted runnable ('R+') state in [0, 100] range.\", \"table\": null, \"column\": null}, {\"name\": \"sleeping\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in sleeping ('S') state in [0, 100] range.\", \"table\": null, \"column\": null}, {\"name\": \"uninterruptible_sleep\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in uninterruptible sleep ('D') state in [0, 100] range.\", \"table\": null, \"column\": null}, {\"name\": \"other\", \"type\": \"LONG\", \"desc\": \"Percentage of time thread spent in other ('T', 't', 'X', 'Z', 'x', 'I', 'K', 'W', 'P', 'N') states in [0, 100] range.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [{\"name\": \"sched_time_in_state_for_thread_in_interval\", \"desc\": \"Time the thread spent each state in a given interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\\n\\n Specifically for any non-trivial subset of thread slices, prefer using\\n `thread_slice_time_in_state` in the `slices.time_in_state` module for this\\n purpose instead.\", \"summary_desc\": \"Time the thread spent each state in a given interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}], \"cols\": [{\"name\": \"state\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"The scheduling state (from the `thread_state` table).  Use the `sched_state_to_human_readable_string` function in the `sched` package to get full name.\"}, {\"name\": \"io_wait\", \"type\": \"BOOL\", \"table\": null, \"column\": null, \"desc\": \"A (posssibly NULL) boolean indicating, if the device was in uninterruptible sleep, if it was an IO sleep.\"}, {\"name\": \"blocked_function\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"If the `state` is uninterruptible sleep, `io_wait` indicates if it was an IO sleep. Will be null if `state` is *not* uninterruptible sleep or if we cannot tell if it was an IO sleep or not.  Only available on Android when `sched/sched_blocked_reason` ftrace tracepoint is enabled.\"}, {\"name\": \"dur\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"The duration of time the threads slice spent for each (state, io_wait, blocked_function) tuple.\"}]}, {\"name\": \"sched_time_in_state_and_cpu_for_thread_in_interval\", \"desc\": \"Time the thread spent each state and cpu in a given interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Time the thread spent each state and cpu in a given interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The start of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the interval.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The utid of the thread.\", \"table\": \"thread\", \"column\": \"id\"}], \"cols\": [{\"name\": \"state\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"Thread state (from the `thread_state` table). Use `sched_state_to_human_readable_string` function to get full name.\"}, {\"name\": \"io_wait\", \"type\": \"BOOL\", \"table\": null, \"column\": null, \"desc\": \"A (posssibly NULL) boolean indicating, if the device was in uninterruptible sleep, if it was an IO sleep.\"}, {\"name\": \"cpu\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Id of the CPU.\"}, {\"name\": \"blocked_function\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Some states can specify the blocked function. Usually NULL.\"}, {\"name\": \"dur\", \"type\": \"DURATION\", \"table\": null, \"column\": null, \"desc\": \"Total time spent with this state, cpu and blocked function.\"}]}, {\"name\": \"sched_time_in_state_for_cpu_in_interval\", \"desc\": \"Time spent by CPU in each scheduling state in a provided interval.\\n\\n This function is only designed to run over a small number of intervals\\n (10-100 at most). It will be *very slow* for large sets of intervals.\", \"summary_desc\": \"Time spent by CPU in each scheduling state in a provided interval.   This function is only designed to run over a small number of intervals  (10-100 at most)\", \"args\": [{\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"CPU id.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Interval start.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"LONG\", \"desc\": \"Interval duration.\", \"table\": null, \"column\": null}], \"cols\": [{\"name\": \"end_state\", \"type\": \"STRING\", \"table\": null, \"column\": null, \"desc\": \"End state. From `sched.end_state`.\"}, {\"name\": \"dur\", \"type\": \"LONG\", \"table\": null, \"column\": null, \"desc\": \"Duration in state.\"}]}], \"macros\": []}, {\"module_name\": \"sched.with_context\", \"data_objects\": [{\"name\": \"sched_with_thread_process\", \"desc\": \"View of scheduling slices with extended information.\\n It holds slices with kernel thread scheduling information. These slices are\\n collected when the Linux \\\"ftrace\\\" data source is used with the\\n \\\"sched/switch\\\" and \\\"sched/wakeup*\\\" events enabled.\\n\\n The rows in this table will always have a matching row in the |thread_state|\\n table with |thread_state.state| = 'Running'\", \"summary_desc\": \"View of scheduling slices with extended information.  It holds slices with kernel thread scheduling information\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(sched.id)\", \"desc\": \"Unique identifier for this scheduling slice (Running period).\", \"table\": \"sched\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp at the start of the Running period.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of the Running period.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Unique identifier of the thread that was running.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread that was running.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Unique identifier of the process that the thread belongs to.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process that the thread belongs to.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The CPU that the slice executed on (meaningful only in single machine traces). For multi-machine, join with the `cpu` table on `ucpu` to get the CPU identifier of each machine.\", \"table\": null, \"column\": null}, {\"name\": \"end_state\", \"type\": \"STRING\", \"desc\": \"A string representing the scheduling state of the kernel thread at the end of the slice.  The individual characters in the string mean the following: R (runnable), S (awaiting a wakeup), D (in an uninterruptible sleep), T (suspended), t (being traced), X (exiting), P (parked), W (waking), I (idle), N (not contributing to the load average), K (wakeable on fatal signals) and Z (zombie, awaiting cleanup).\", \"table\": null, \"column\": null}, {\"name\": \"priority\", \"type\": \"LONG\", \"desc\": \"The kernel priority that the thread ran at.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"slices\", \"modules\": [{\"module_name\": \"slices.cpu_time\", \"data_objects\": [{\"name\": \"thread_slice_cpu_time\", \"desc\": \"Time each thread slice spent running on CPU.\\n Requires scheduling data to be available in the trace.\", \"summary_desc\": \"Time each thread slice spent running on CPU.  Requires scheduling data to be available in the trace.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Id of the thread the slice is running on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Id of the process the slice is running on.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"cpu_time\", \"type\": \"LONG\", \"desc\": \"Duration of the time the slice was running.\", \"table\": null, \"column\": null}]}, {\"name\": \"thread_slice_cpu_cycles\", \"desc\": \"CPU cycles per each slice.\", \"summary_desc\": \"CPU cycles per each slice.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Id of a slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Id of the thread the slice is running on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Id of the process the slice is running on.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"millicycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU millicycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"megacycles\", \"type\": \"LONG\", \"desc\": \"Sum of CPU megacycles. Null if frequency couldn't be fetched for any period during the runtime of the slice.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.flat_slices\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.flow\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.hierarchy\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.self_dur\", \"data_objects\": [{\"name\": \"slice_self_dur\", \"desc\": \"For every slice in the `slice` table, computes the \\\"self-duration\\\": the time\\n spent in the slice but *not* spent in any child slices.\", \"summary_desc\": \"For every slice in the `slice` table, computes the \\\"self-duration\\\": the time  spent in the slice but *not* spent in any child slices.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"The id of the slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"self_dur\", \"type\": \"DURATION\", \"desc\": \"The self duration for the slice: the time spent in the slice but not any child slices.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.time_in_state\", \"data_objects\": [{\"name\": \"thread_slice_time_in_state\", \"desc\": \"For each thread slice, returns the sum of the time it spent in various\\n scheduling states.\\n\\n Requires scheduling data to be available in the trace.\", \"summary_desc\": \"For each thread slice, returns the sum of the time it spent in various  scheduling states.   Requires scheduling data to be available in the trace.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Thread slice.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Name of the slice.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Thread the slice is running on.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Name of the thread.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Id of the process the slice is running on.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Name of the process.\", \"table\": null, \"column\": null}, {\"name\": \"state\", \"type\": \"STRING\", \"desc\": \"The scheduling state (from the `thread_state` table).  Use the `sched_state_to_human_readable_string` function in the `sched` package to get full name.\", \"table\": null, \"column\": null}, {\"name\": \"io_wait\", \"type\": \"BOOL\", \"desc\": \"If the `state` is uninterruptible sleep, `io_wait` indicates if it was an IO sleep. Will be null if `state` is *not* uninterruptible sleep or if we cannot tell if it was an IO sleep or not.  Only available on Android when `sched/sched_blocked_reason` ftrace tracepoint is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"blocked_function\", \"type\": \"STRING\", \"desc\": \"If in uninterruptible sleep (D), the kernel function on which was blocked. Only available on userdebug Android builds when `sched/sched_blocked_reason` ftrace tracepoint is enabled.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"The duration of time the threads slice spent for each (state, io_wait, blocked_function) tuple.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"slices.with_context\", \"data_objects\": [{\"name\": \"thread_slice\", \"desc\": \"All thread slices with data about thread, thread track and process.\", \"summary_desc\": \"All thread slices with data about thread, thread track and process.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Slice\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias for `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias for `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"Alias for `thread_track.name`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Alias for `thread.name`.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Alias for `thread.utid`.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Alias for `thread.tid`.\", \"table\": null, \"column\": null}, {\"name\": \"is_main_thread\", \"type\": \"BOOL\", \"desc\": \"Alias for `thread.is_main_thread`.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Alias for `process.name`.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Alias for `process.upid`.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Alias for `process.pid`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias for `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias for `slice.parent_id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Alias for `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `slice.thread_ts`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"LONG\", \"desc\": \"Alias for `slice.thread_dur`.\", \"table\": null, \"column\": null}]}, {\"name\": \"process_slice\", \"desc\": \"All process slices with data about process track and process.\", \"summary_desc\": \"All process slices with data about process track and process.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"ID(slice.id)\", \"desc\": \"Slice\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias for `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias for `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"Alias for `process_track.name`.\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Alias for `process.name`.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Alias for `process.upid`.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Alias for `process.pid`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias for `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias for `slice.parent_id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Alias for `slice.arg_set_id`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `slice.thread_ts`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_dur\", \"type\": \"LONG\", \"desc\": \"Alias for `slice.thread_dur`.\", \"table\": null, \"column\": null}]}, {\"name\": \"thread_or_process_slice\", \"desc\": \"All the slices in the trace associated to a thread or a process along\\n with contextual information about them (e.g. thread name, process name, tid etc).\", \"summary_desc\": \"All the slices in the trace associated to a thread or a process along  with contextual information about them (e.g\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Slice\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"Alias for `slice.ts`.\", \"table\": null, \"column\": null}, {\"name\": \"dur\", \"type\": \"DURATION\", \"desc\": \"Alias for `slice.dur`.\", \"table\": null, \"column\": null}, {\"name\": \"category\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.category`.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Alias for `slice.name`.\", \"table\": null, \"column\": null}, {\"name\": \"track_id\", \"type\": \"JOINID(track.id)\", \"desc\": \"Alias for `slice.track_id`.\", \"table\": \"track\", \"column\": \"id\"}, {\"name\": \"track_name\", \"type\": \"STRING\", \"desc\": \"Alias for `track.name`.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"Alias for `thread.name`.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"Alias for `thread.utid`.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"Alias for `thread.tid`\", \"table\": null, \"column\": null}, {\"name\": \"process_name\", \"type\": \"STRING\", \"desc\": \"Alias for `process.name`.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Alias for `process.upid`.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"pid\", \"type\": \"LONG\", \"desc\": \"Alias for `process.pid`.\", \"table\": null, \"column\": null}, {\"name\": \"depth\", \"type\": \"LONG\", \"desc\": \"Alias for `slice.depth`.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"JOINID(slice.id)\", \"desc\": \"Alias for `slice.parent_id`.\", \"table\": \"slice\", \"column\": \"id\"}, {\"name\": \"arg_set_id\", \"type\": \"ARGSETID\", \"desc\": \"Alias for `slice.arg_set_id`.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"stack_trace\", \"modules\": [{\"module_name\": \"stack_trace.jit\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"stacks\", \"modules\": [{\"module_name\": \"stacks.cpu_profiling\", \"data_objects\": [{\"name\": \"cpu_profiling_samples\", \"desc\": \"Table containing all the timestamped samples of CPU profiling which occurred\\n during the trace.\\n\\n Currently, this table is backed by the following data sources:\\n  * Linux perf\\n  * macOS instruments\\n  * Chrome CPU profiling\\n  * Legacy V8 CPU profiling\\n  * Profiling data in Gecko traces\", \"summary_desc\": \"Table containing all the timestamped samples of CPU profiling which occurred  during the trace.   Currently, this table is backed by the following data sources:   * Linux perf   * macOS instruments   * Chrome CPU profiling   * Legacy V8 CPU profiling   * Profiling data in Gecko traces\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the sample.\", \"table\": null, \"column\": null}, {\"name\": \"ts\", \"type\": \"TIMESTAMP\", \"desc\": \"The timestamp of the sample.\", \"table\": null, \"column\": null}, {\"name\": \"utid\", \"type\": \"JOINID(thread.id)\", \"desc\": \"The utid of the thread of the sample, if available.\", \"table\": \"thread\", \"column\": \"id\"}, {\"name\": \"tid\", \"type\": \"LONG\", \"desc\": \"The tid of the sample, if available.\", \"table\": null, \"column\": null}, {\"name\": \"thread_name\", \"type\": \"STRING\", \"desc\": \"The thread name of thread of the sample, if available.\", \"table\": null, \"column\": null}, {\"name\": \"ucpu\", \"type\": \"LONG\", \"desc\": \"The ucpu of the sample, if available.\", \"table\": null, \"column\": null}, {\"name\": \"cpu\", \"type\": \"LONG\", \"desc\": \"The cpu of the sample, if available.\", \"table\": null, \"column\": null}, {\"name\": \"callsite_id\", \"type\": \"LONG\", \"desc\": \"The callsite id of the sample.\", \"table\": null, \"column\": null}]}, {\"name\": \"cpu_profiling_summary_tree\", \"desc\": \"Table summarising the callstacks captured during any CPU profiling which\\n occurred during the trace.\\n\\n Specifically, this table returns a tree containing all the callstacks seen\\n during the trace with `self_count` equal to the number of samples with that\\n frame as the leaf and `cumulative_count` equal to the number of samples with\\n the frame anywhere in the tree.\\n\\n The data sources supported are the same as the `cpu_profiling_samples` table.\", \"summary_desc\": \"Table summarising the callstacks captured during any CPU profiling which  occurred during the trace.   Specifically, this table returns a tree containing all the callstacks seen  during the trace with `self_count` equal to the number of samples with that  frame as the leaf and `cumulative_count` equal to the number of samples with  the frame anywhere in the tree.   The data sources supported are the same as the `cpu_profiling_samples` table.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"id\", \"type\": \"LONG\", \"desc\": \"The id of the callstack; by callstack we mean a unique set of frames up to the root frame.\", \"table\": null, \"column\": null}, {\"name\": \"parent_id\", \"type\": \"LONG\", \"desc\": \"The id of the parent callstack for this callstack. NULL if this is root.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"The function name of the frame for this callstack.\", \"table\": null, \"column\": null}, {\"name\": \"mapping_name\", \"type\": \"STRING\", \"desc\": \"The name of the mapping containing the frame. This can be a native binary, library, JAR or APK.\", \"table\": null, \"column\": null}, {\"name\": \"source_file\", \"type\": \"STRING\", \"desc\": \"The name of the file containing the function.\", \"table\": null, \"column\": null}, {\"name\": \"line_number\", \"type\": \"LONG\", \"desc\": \"The line number in the file the function is located at.\", \"table\": null, \"column\": null}, {\"name\": \"self_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function as the leaf frame.\", \"table\": null, \"column\": null}, {\"name\": \"cumulative_count\", \"type\": \"LONG\", \"desc\": \"The number of samples with this function appearing anywhere on the callstack.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"time\", \"modules\": [{\"module_name\": \"time.conversion\", \"data_objects\": [], \"functions\": [{\"name\": \"time_from_ns\", \"desc\": \"Returns the provided nanosecond duration, which is the default\\n representation of time durations in trace processor. Provided for\\n consistency with other functions.\", \"summary_desc\": \"Returns the provided nanosecond duration, which is the default  representation of time durations in trace processor\", \"args\": [{\"name\": \"nanos\", \"type\": \"LONG\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_us\", \"desc\": \"Converts a duration in microseconds to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in microseconds to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"micros\", \"type\": \"LONG\", \"desc\": \"Time duration in microseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_ms\", \"desc\": \"Converts a duration in millseconds to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in millseconds to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"millis\", \"type\": \"LONG\", \"desc\": \"Time duration in milliseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_s\", \"desc\": \"Converts a duration in seconds to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in seconds to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"seconds\", \"type\": \"LONG\", \"desc\": \"Time duration in seconds.\", \"table\": null, \"column\": null}], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_min\", \"desc\": \"Converts a duration in minutes to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in minutes to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"minutes\", \"type\": \"LONG\", \"desc\": \"Time duration in minutes.\", \"table\": null, \"column\": null}], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_hours\", \"desc\": \"Converts a duration in hours to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in hours to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"hours\", \"type\": \"LONG\", \"desc\": \"Time duration in hours.\", \"table\": null, \"column\": null}], \"return_type\": \"TIMESTAMP\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_from_days\", \"desc\": \"Converts a duration in days to nanoseconds, which is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in days to nanoseconds, which is the default  representation of time durations in trace processor.\", \"args\": [{\"name\": \"days\", \"type\": \"LONG\", \"desc\": \"Time duration in days.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_to_ns\", \"desc\": \"Returns the provided nanosecond duration, which is the default\\n representation of time durations in trace processor. Provided for\\n consistency with other functions.\", \"summary_desc\": \"Returns the provided nanosecond duration, which is the default  representation of time durations in trace processor\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in nanoseconds.\"}, {\"name\": \"time_to_us\", \"desc\": \"Converts a duration in nanoseconds to microseconds. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to microseconds\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in microseconds.\"}, {\"name\": \"time_to_ms\", \"desc\": \"Converts a duration in nanoseconds to millseconds. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to millseconds\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in milliseconds.\"}, {\"name\": \"time_to_s\", \"desc\": \"Converts a duration in nanoseconds to seconds. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to seconds\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in seconds.\"}, {\"name\": \"time_to_min\", \"desc\": \"Converts a duration in nanoseconds to minutes. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to minutes\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in minutes.\"}, {\"name\": \"time_to_hours\", \"desc\": \"Converts a duration in nanoseconds to hours. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to hours\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in hours.\"}, {\"name\": \"time_to_days\", \"desc\": \"Converts a duration in nanoseconds to days. Nanoseconds is the default\\n representation of time durations in trace processor.\", \"summary_desc\": \"Converts a duration in nanoseconds to days\", \"args\": [{\"name\": \"nanos\", \"type\": \"TIMESTAMP\", \"desc\": \"Time duration in nanoseconds.\", \"table\": null, \"column\": null}], \"return_type\": \"LONG\", \"return_desc\": \"Time duration in days.\"}], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"traced\", \"modules\": [{\"module_name\": \"traced.stats\", \"data_objects\": [{\"name\": \"traced_clone_flush_latency\", \"desc\": \"Reports the duration of the flush operation for cloned traces (for each\\n buffer).\", \"summary_desc\": \"Reports the duration of the flush operation for cloned traces (for each  buffer).\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"buffer_id\", \"type\": \"LONG\", \"desc\": \"Id of the buffer (matches the config).\", \"table\": null, \"column\": null}, {\"name\": \"duration_ns\", \"type\": \"LONG\", \"desc\": \"Interval from the start of the clone operation to the end of the flush for this buffer.\", \"table\": null, \"column\": null}]}, {\"name\": \"traced_trigger_clone_flush_latency\", \"desc\": \"Reports the delay in finalizing the trace from the trigger that causes the\\n clone operation.\", \"summary_desc\": \"Reports the delay in finalizing the trace from the trigger that causes the  clone operation.\", \"type\": \"TABLE\", \"cols\": [{\"name\": \"buffer_id\", \"type\": \"LONG\", \"desc\": \"Id of the buffer.\", \"table\": null, \"column\": null}, {\"name\": \"duration_ns\", \"type\": \"LONG\", \"desc\": \"Interval from the trigger that caused the clone operation to the end of the flush for this buffer.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"v8\", \"modules\": [{\"module_name\": \"v8.jit\", \"data_objects\": [{\"name\": \"v8_isolate\", \"desc\": \"A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8\\n engine.\", \"summary_desc\": \"A V8 Isolate instance\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"v8_isolate_id\", \"type\": \"LONG\", \"desc\": \"Unique V8 isolate id.\", \"table\": null, \"column\": null}, {\"name\": \"upid\", \"type\": \"JOINID(process.id)\", \"desc\": \"Process the isolate was created in.\", \"table\": \"process\", \"column\": \"id\"}, {\"name\": \"internal_isolate_id\", \"type\": \"LONG\", \"desc\": \"Internal id used by the v8 engine. Unique in a process.\", \"table\": null, \"column\": null}, {\"name\": \"embedded_blob_code_start_address\", \"type\": \"LONG\", \"desc\": \"Absolute start address of the embedded code blob.\", \"table\": null, \"column\": null}, {\"name\": \"embedded_blob_code_size\", \"type\": \"LONG\", \"desc\": \"Size in bytes of the embedded code blob.\", \"table\": null, \"column\": null}, {\"name\": \"code_range_base_address\", \"type\": \"LONG\", \"desc\": \"Base address of the code range if the isolate defines one.\", \"table\": null, \"column\": null}, {\"name\": \"code_range_size\", \"type\": \"LONG\", \"desc\": \"Size of a code range if the isolate defines one.\", \"table\": null, \"column\": null}, {\"name\": \"shared_code_range\", \"type\": \"LONG\", \"desc\": \"Whether the code range for this Isolate is shared with others in the same process. There is at max one such shared code range per process.\", \"table\": null, \"column\": null}, {\"name\": \"embedded_blob_code_copy_start_address\", \"type\": \"LONG\", \"desc\": \"Used when short builtin calls are enabled, where embedded builtins are copied into the CodeRange so calls can be nearer.\", \"table\": null, \"column\": null}]}, {\"name\": \"v8_js_script\", \"desc\": \"Represents a script that was compiled to generate code. Some V8 code is\\n generated out of scripts and will reference a V8Script other types of code\\n will not (e.g. builtins).\", \"summary_desc\": \"Represents a script that was compiled to generate code\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"v8_js_script_id\", \"type\": \"LONG\", \"desc\": \"Unique V8 JS script id.\", \"table\": null, \"column\": null}, {\"name\": \"v8_isolate_id\", \"type\": \"LONG\", \"desc\": \"V8 isolate this script belongs to (joinable with `v8_isolate.v8_isolate_id`).\", \"table\": null, \"column\": null}, {\"name\": \"internal_script_id\", \"type\": \"LONG\", \"desc\": \"Script id used by the V8 engine.\", \"table\": null, \"column\": null}, {\"name\": \"script_type\", \"type\": \"STRING\", \"desc\": \"Script type.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Script name.\", \"table\": null, \"column\": null}, {\"name\": \"source\", \"type\": \"STRING\", \"desc\": \"Actual contents of the script.\", \"table\": null, \"column\": null}]}, {\"name\": \"v8_wasm_script\", \"desc\": \"Represents one WASM script.\", \"summary_desc\": \"Represents one WASM script.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"v8_wasm_script_id\", \"type\": \"LONG\", \"desc\": \"Unique V8 WASM script id.\", \"table\": null, \"column\": null}, {\"name\": \"v8_isolate_id\", \"type\": \"LONG\", \"desc\": \"V8 Isolate this script belongs to (joinable with `v8_isolate.v8_isolate_id`).\", \"table\": null, \"column\": null}, {\"name\": \"internal_script_id\", \"type\": \"LONG\", \"desc\": \"Script id used by the V8 engine.\", \"table\": null, \"column\": null}, {\"name\": \"url\", \"type\": \"STRING\", \"desc\": \"URL of the source.\", \"table\": null, \"column\": null}, {\"name\": \"wire_bytes\", \"type\": \"BYTES\", \"desc\": \"Raw wire bytes of the script.\", \"table\": null, \"column\": null}, {\"name\": \"source\", \"type\": \"STRING\", \"desc\": \"Actual source code of the script.\", \"table\": null, \"column\": null}]}, {\"name\": \"v8_js_function\", \"desc\": \"Represents a v8 Javascript function.\", \"summary_desc\": \"Represents a v8 Javascript function.\", \"type\": \"VIEW\", \"cols\": [{\"name\": \"v8_js_function_id\", \"type\": \"LONG\", \"desc\": \"Unique V8 JS function id.\", \"table\": null, \"column\": null}, {\"name\": \"name\", \"type\": \"STRING\", \"desc\": \"Function name.\", \"table\": null, \"column\": null}, {\"name\": \"v8_js_script_id\", \"type\": \"LONG\", \"desc\": \"Script where the function is defined (joinable with `v8_js_script.v8_js_script_id`).\", \"table\": null, \"column\": null}, {\"name\": \"is_toplevel\", \"type\": \"BOOL\", \"desc\": \"Whether this function represents the top level script.\", \"table\": null, \"column\": null}, {\"name\": \"kind\", \"type\": \"STRING\", \"desc\": \"Function kind (e.g. regular function or constructor).\", \"table\": null, \"column\": null}, {\"name\": \"line\", \"type\": \"LONG\", \"desc\": \"Line in script where function is defined. Starts at 1.\", \"table\": null, \"column\": null}, {\"name\": \"col\", \"type\": \"LONG\", \"desc\": \"Column in script where function is defined. Starts at 1.\", \"table\": null, \"column\": null}]}], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"viz\", \"modules\": [{\"module_name\": \"viz.flamegraph\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.slices\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.counters\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.processes\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.slices\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.threads\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.trace\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.summary.track_event\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"viz.threads\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}, {\"name\": \"wattson\", \"modules\": [{\"module_name\": \"wattson.cpu.arm_dsu\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.estimates\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.freq\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.freq_idle\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.hotplug\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.idle\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.cpu.pivot\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.device_cpu_1d\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.device_cpu_2d\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.device_gpu\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.device_l3\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.tg5_cpu_1d\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.tg5_cpu_2d\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.tg5_cpu_2d_1\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.tg5_cpu_2d_2\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.tg5_l3\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.curves.utils\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.device_infos\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.estimates\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.gpu.estimates\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.gpu.freq_idle\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.tasks.attribution\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.tasks.idle_transitions_attribution\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.tasks.task_slices\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.ui.continuous_estimates\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}, {\"module_name\": \"wattson.utils\", \"data_objects\": [], \"functions\": [], \"table_functions\": [], \"macros\": []}]}]"
  },
  {
    "path": "src/viztracer/web_dist/v52.0-6b9586def/traceconv_bundle.js",
    "content": "var traceconv=function(){\"use strict\";function L(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function x(t){var r,n;return t.__esModule?t:(\"function\"==typeof(r=t.default)?(n=function e(){return this instanceof e?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)}).prototype=r.prototype:n={},Object.defineProperty(n,\"__esModule\",{value:!0}),Object.keys(t).forEach(function(e){var r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,r.get?r:{enumerable:!0,get:function(){return t[e]}})}),n)}var t={},n=function(e,r){return(n=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,r){e.__proto__=r}:function(e,r){for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}))(e,r)};function e(e,r){if(\"function\"!=typeof r&&null!==r)throw new TypeError(\"Class extends value \"+String(r)+\" is not a constructor or null\");function t(){this.constructor=e}n(e,r),e.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)}var r=function(){return(r=Object.assign||function(e){for(var r,t=1,n=arguments.length;t<n;t++)for(var o in r=arguments[t])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e}).apply(this,arguments)};function o(e,r){var t={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&r.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols)for(var n=0,o=Object.getOwnPropertySymbols(e);n<o.length;n++)r.indexOf(o[n])<0&&Object.prototype.propertyIsEnumerable.call(e,o[n])&&(t[o[n]]=e[o[n]]);return t}function a(e,r,t,n){var o,a=arguments.length,i=a<3?r:null===n?n=Object.getOwnPropertyDescriptor(r,t):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)i=Reflect.decorate(e,r,t,n);else for(var s=e.length-1;0<=s;s--)(o=e[s])&&(i=(a<3?o(i):3<a?o(r,t,i):o(r,t))||i);return 3<a&&i&&Object.defineProperty(r,t,i),i}function i(t,n){return function(e,r){n(e,r,t)}}function s(e,r){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(e,r)}function l(e,i,s,l){return new(s=s||Promise)(function(t,r){function n(e){try{a(l.next(e))}catch(e){r(e)}}function o(e){try{a(l.throw(e))}catch(e){r(e)}}function a(e){var r;e.done?t(e.value):((r=e.value)instanceof s?r:new s(function(e){e(r)})).then(n,o)}a((l=l.apply(e,i||[])).next())})}function c(n,o){var a,i,s,l={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},c={next:e(0),throw:e(1),return:e(2)};return\"function\"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function e(t){return function(e){var r=[t,e];if(a)throw new TypeError(\"Generator is already executing.\");for(;l=c&&r[c=0]?0:l;)try{if(a=1,i&&(s=2&r[0]?i.return:r[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,r[1])).done)return s;switch(i=0,(r=s?[2&r[0],s.value]:r)[0]){case 0:case 1:s=r;break;case 4:return l.label++,{value:r[1],done:!1};case 5:l.label++,i=r[1],r=[0];continue;case 7:r=l.ops.pop(),l.trys.pop();continue;default:if(!(s=0<(s=l.trys).length&&s[s.length-1])&&(6===r[0]||2===r[0])){l=0;continue}if(3===r[0]&&(!s||r[1]>s[0]&&r[1]<s[3]))l.label=r[1];else if(6===r[0]&&l.label<s[1])l.label=s[1],s=r;else{if(!(s&&l.label<s[2])){s[2]&&l.ops.pop(),l.trys.pop();continue}l.label=s[2],l.ops.push(r)}}r=o.call(n,l)}catch(e){r=[6,e],i=0}finally{a=s=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}}var u=Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&(\"get\"in o?r.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){e[n=void 0===n?t:n]=r[t]};function d(e,r){for(var t in e)\"default\"===t||Object.prototype.hasOwnProperty.call(r,t)||u(r,e,t)}function f(e){var r=\"function\"==typeof Symbol&&Symbol.iterator,t=r&&e[r],n=0;if(t)return t.call(e);if(e&&\"number\"==typeof e.length)return{next:function(){return{value:(e=e&&n>=e.length?void 0:e)&&e[n++],done:!e}}};throw new TypeError(r?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function m(e,r){var t=\"function\"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var n,o,a=t.call(e),i=[];try{for(;(void 0===r||0<r--)&&!(n=a.next()).done;)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(t=a.return)&&t.call(a)}finally{if(o)throw o.error}}return i}function p(){for(var e=[],r=0;r<arguments.length;r++)e=e.concat(m(arguments[r]));return e}function h(){for(var e=0,r=0,t=arguments.length;r<t;r++)e+=arguments[r].length;for(var n=Array(e),o=0,r=0;r<t;r++)for(var a=arguments[r],i=0,s=a.length;i<s;i++,o++)n[o]=a[i];return n}function _(e,r,t){if(t||2===arguments.length)for(var n,o=0,a=r.length;o<a;o++)!n&&o in r||((n=n||Array.prototype.slice.call(r,0,o))[o]=r[o]);return e.concat(n||Array.prototype.slice.call(r))}function w(e){return this instanceof w?(this.v=e,this):new w(e)}function E(e,r,t){var o,a,i;if(Symbol.asyncIterator)return o=t.apply(e,r||[]),a=[],i={},n(\"next\"),n(\"throw\"),n(\"return\",function(r){return function(e){return Promise.resolve(e).then(r,c)}}),i[Symbol.asyncIterator]=function(){return this},i;throw new TypeError(\"Symbol.asyncIterator is not defined.\");function n(n,e){o[n]&&(i[n]=function(t){return new Promise(function(e,r){1<a.push([n,t,e,r])||s(n,t)})},e)&&(i[n]=e(i[n]))}function s(e,r){try{(t=o[e](r)).value instanceof w?Promise.resolve(t.value.v).then(l,c):u(a[0][2],t)}catch(e){u(a[0][3],e)}var t}function l(e){s(\"next\",e)}function c(e){s(\"throw\",e)}function u(e,r){e(r),a.shift(),a.length&&s(a[0][0],a[0][1])}}function y(n){var o,e={};return r(\"next\"),r(\"throw\",function(e){throw e}),r(\"return\"),e[Symbol.iterator]=function(){return this},e;function r(r,t){e[r]=n[r]?function(e){return(o=!o)?{value:w(n[r](e)),done:!1}:t?t(e):e}:t}}function g(i){var e,r;if(Symbol.asyncIterator)return(e=i[Symbol.asyncIterator])?e.call(i):(i=f(i),r={},t(\"next\"),t(\"throw\"),t(\"return\"),r[Symbol.asyncIterator]=function(){return this},r);throw new TypeError(\"Symbol.asyncIterator is not defined.\");function t(a){r[a]=i[a]&&function(o){return new Promise(function(e,r){var t,n;o=i[a](o),t=e,e=r,n=o.done,r=o.value,Promise.resolve(r).then(function(e){t({value:e,done:n})},e)})}}}function v(e,r){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:r}):e.raw=r,e}var j=Object.create?function(e,r){Object.defineProperty(e,\"default\",{enumerable:!0,value:r})}:function(e,r){e.default=r};function S(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)\"default\"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&u(r,e,t);return j(r,e),r}function b(e){return e&&e.__esModule?e:{default:e}}function F(e,r,t,n){if(\"a\"===t&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof r?e===r&&n:r.has(e))return\"m\"===t?n:\"a\"===t?n.call(e):n?n.value:r.get(e);throw new TypeError(\"Cannot read private member from an object whose class did not declare it\")}function k(e,r,t,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof r?e===r&&o:r.has(e))return\"a\"===n?o.call(e,t):o?o.value=t:r.set(e,t),t;throw new TypeError(\"Cannot write private member to an object whose class did not declare it\")}function T(e,r){if(null===r||\"object\"!=typeof r&&\"function\"!=typeof r)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"==typeof e?r===e:e.has(r)}function O(e,r,t){if(null!=r){if(\"object\"!=typeof r&&\"function\"!=typeof r)throw new TypeError(\"Object expected.\");var n,o;if(t){if(!Symbol.asyncDispose)throw new TypeError(\"Symbol.asyncDispose is not defined.\");n=r[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError(\"Symbol.dispose is not defined.\");n=r[Symbol.dispose],t&&(o=n)}if(\"function\"!=typeof n)throw new TypeError(\"Object not disposable.\");o&&(n=function(){try{o.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:r,dispose:n,async:t})}else t&&e.stack.push({async:!0});return r}var U=\"function\"==typeof SuppressedError?SuppressedError:function(e,r,t){t=new Error(t);return t.name=\"SuppressedError\",t.error=e,t.suppressed=r,t};function A(n){function o(e){n.error=n.hasError?new U(e,n.error,\"An error was suppressed during disposal.\"):e,n.hasError=!0}return function r(){for(;n.stack.length;){var e=n.stack.pop();try{var t=e.dispose&&e.dispose.call(e.value);if(e.async)return Promise.resolve(t).then(r,function(e){return o(e),r()})}catch(e){o(e)}}if(n.hasError)throw n.error}()}var D,z={__extends:e,__assign:r,__rest:o,__decorate:a,__param:i,__metadata:s,__awaiter:l,__generator:c,__createBinding:u,__exportStar:d,__values:f,__read:m,__spread:p,__spreadArrays:h,__spreadArray:_,__await:w,__asyncGenerator:E,__asyncDelegator:y,__asyncValues:g,__makeTemplateObject:v,__importStar:S,__importDefault:b,__classPrivateFieldGet:F,__classPrivateFieldSet:k,__classPrivateFieldIn:T,__addDisposableResource:O,__disposeResources:A},B=x(Object.freeze({__proto__:null,__extends:e,get __assign(){return r},__rest:o,__decorate:a,__param:i,__esDecorate:function(e,r,t,n,o,a){function i(e){if(void 0!==e&&\"function\"!=typeof e)throw new TypeError(\"Function expected\");return e}for(var s,l=n.kind,c=\"getter\"===l?\"get\":\"setter\"===l?\"set\":\"value\",e=!r&&e?n.static?e:e.prototype:null,u=r||(e?Object.getOwnPropertyDescriptor(e,n.name):{}),d=!1,f=t.length-1;0<=f;f--){var m,p={};for(m in n)p[m]=\"access\"===m?{}:n[m];for(m in n.access)p.access[m]=n.access[m];p.addInitializer=function(e){if(d)throw new TypeError(\"Cannot add initializers after decoration has completed\");a.push(i(e||null))};var h=(0,t[f])(\"accessor\"===l?{get:u.get,set:u.set}:u[c],p);if(\"accessor\"===l){if(void 0!==h){if(null===h||\"object\"!=typeof h)throw new TypeError(\"Object expected\");(s=i(h.get))&&(u.get=s),(s=i(h.set))&&(u.set=s),(s=i(h.init))&&o.unshift(s)}}else(s=i(h))&&(\"field\"===l?o.unshift(s):u[c]=s)}e&&Object.defineProperty(e,n.name,u),d=!0},__runInitializers:function(e,r,t){for(var n=2<arguments.length,o=0;o<r.length;o++)t=n?r[o].call(e,t):r[o].call(e);return n?t:void 0},__propKey:function(e){return\"symbol\"==typeof e?e:\"\".concat(e)},__setFunctionName:function(e,r,t){return\"symbol\"==typeof r&&(r=r.description?\"[\".concat(r.description,\"]\"):\"\"),Object.defineProperty(e,\"name\",{configurable:!0,value:t?\"\".concat(t,\" \",r):r})},__metadata:s,__awaiter:l,__generator:c,__createBinding:u,__exportStar:d,__values:f,__read:m,__spread:p,__spreadArrays:h,__spreadArray:_,__await:w,__asyncGenerator:E,__asyncDelegator:y,__asyncValues:g,__makeTemplateObject:v,__importStar:S,__importDefault:b,__classPrivateFieldGet:F,__classPrivateFieldSet:k,__classPrivateFieldIn:T,__addDisposableResource:O,__disposeResources:A,default:z})),P={};function G(){return D||(D=1,Object.defineProperty(P,\"__esModule\",{value:!0}),P.defer=function(){let t=null,n=null;var e=new Promise((e,r)=>[t,n]=[e,r]);return Object.assign(e,{resolve:t,reject:n})}),P}var M,R={},N={};var H,W,I={};function $(){return H||(H=1,Object.defineProperty(I,\"__esModule\",{value:!0}),I.exists=function(e){return null!=e},I.escapeCSSSelector=function(e){return e.replace(/([!\"#$%&'()*+,.\\/:;<=>?@[\\\\\\]^`{|}~])/g,\"\\\\$1\")},I.getOrCreate=function(e,r,t){var n=e.get(r);return void 0===n&&(n=t(),e.set(r,n)),n},I.createProxy=function(e,o){return new Proxy(e,{get:(e,r,t)=>{var n=o[r];return void 0!==n?\"function\"==typeof n?n.bind(o):n:\"function\"==typeof(n=Reflect.get(e,r,t))?n.bind(e):n}})}),I}function V(){if(!W){W=1,Object.defineProperty(R,\"__esModule\",{value:!0}),R.assertExists=function(e,r){if(null!=e)return e;throw new Error(r??\"Value doesn't exist\")},R.assertDefined=function(e){if(void 0===e)throw new Error(\"Value is undefined\");return e},R.assertIsInstance=function(e,r,t){return n(e instanceof r,t??\"Value is not an instance of \"+r.name),e},R.assertTrue=n,R.assertFalse=function(e,r){n(!e,r)},R.assertUnreachable=function(e,r){throw new Error(r??\"This code should not be reachable \"+e)},R.addErrorHandler=function(e){f.includes(e)||f.push(e)},R.reportError=function(r){let t=void 0,n=\"\",e;var o=[],a=location.protocol+\"//\"+location.host;r instanceof ErrorEvent?(e=\"ERROR\",t=null===r.error||void 0===r.error?(s=(\"\"+r.message).split(\"\\n\"),n=s[0],{stack:s.slice(1).join(\"\\n\")}):(n=\"\"+r.error,r.error)):r instanceof PromiseRejectionEvent?(e=\"PROMISE_REJ\",n=\"\"+r.reason,t=r.reason):(e=\"OTHER\",n=\"\"+r);if(n=(n=(n=n.replace(/^Uncaught Error:/,\"\")).replace(/^Error:/,\"\")).trim(),void 0!==t&&null!==t){var i,s=t.stack;let e=void 0!==s?\"\"+s:\"\";for(i of(e=e.replaceAll(/\\r/g,\"\")).split(\"\\n\"))if(!n.includes(i)){var l=(i=(i=i.replace(/^\\s*at\\s*/,\"\")).replace(/\\s*\\(([^)]+)\\)$/,\"@$1\")).lastIndexOf(\"@\");let e=\"\",r=\"\";0<=l?(r=i.substring(l+1),e=i.substring(0,l)):r=i,r.includes(a)&&(r=(r=r.replace(a,\"\")).replace(`/${u.VERSION}/`,\"\")),o.push({name:e,location:r})}r=o.find(e=>e.name.includes(\"perfetto::\"))?.name;n.includes(\"RuntimeError\")&&(0,d.exists)(r)&&(n+=\" @ \"+r.trim())}for(const c of f)c({errType:e,message:n,stack:o})};M||(M=1,Object.defineProperty(N,\"__esModule\",{value:!0}),N.SCM_REVISION=N.VERSION=void 0,N.VERSION=\"v52.0-6b9586def\",N.SCM_REVISION=\"6b9586defccdef92d77b32e1338db72c8e5d5e7c\");const u=N,d=$(),f=[];function n(e,r){if(!e)throw new Error(r??\"Failed assertion\")}}return R}var Y,K,C={exports:{}};function X(){function e(L={}){var x,j,U,z,i=L,e=(new Promise((e,r)=>{x=e,j=r}),\"object\"==typeof window),u=\"undefined\"!=typeof WorkerGlobalScope,r=\"object\"==typeof process&&\"object\"==typeof process.versions&&\"string\"==typeof process.versions.node&&\"renderer\"!=process.type,B=!e&&!r&&!u,G=[],H=\"./this.program\",W=(e,r)=>{throw r},$=(u&&(Fr=self.location.href),\"\");if(B){if(\"object\"==typeof process||\"object\"==typeof window||\"undefined\"!=typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\")}else{if(!e&&!u)throw new Error(\"environment detection error\");try{$=new URL(\".\",Fr).href}catch{}if(\"object\"!=typeof window&&\"undefined\"==typeof WorkerGlobalScope)throw new Error(\"not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)\");u&&(z=e=>{var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),U=async e=>{_(!q(e),\"readAsync does not work with file:// URLs\");e=await fetch(e,{credentials:\"same-origin\"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+\" : \"+e.url)}}var V,Y,K,m,s,p,h,d,a,f=console.log.bind(console),l=console.error.bind(console),c=\"WORKERFS is no longer included by default; build with -lworkerfs.js\",n=(_(!r,\"node environment detected but not enabled at build time.  Add `node` to `-sENVIRONMENT` to enable.\"),_(!B,\"shell environment detected but not enabled at build time.  Add `shell` to `-sENVIRONMENT` to enable.\"),\"object\"!=typeof WebAssembly&&l(\"no native wasm support detected\"),!1);function _(e,r){e||y(\"Assertion failed\"+(r?\": \"+r:\"\"))}var X=!1,q=e=>e.startsWith(\"file://\");function o(){var e,r,t;n||(0==(e=hr())&&(e+=4),r=d[e>>>2>>>0],t=d[e+4>>>2>>>0],34821223==r&&2310721022==t||y(`Stack overflow! Stack cookie has been overwritten at ${pe(e)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${pe(t)} `+pe(r)),1668509029!=d[0]&&y(\"Runtime error: The application has corrupted its heap memory area (address zero)!\"))}var e=new Int16Array(1),r=new Int8Array(e.buffer);if(e[0]=25459,115!==r[0]||99!==r[1])throw\"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)\";function J(e){Object.getOwnPropertyDescriptor(i,e)||Object.defineProperty(i,e,{configurable:!0,set(){y(`Attempt to set \\`Module.${e}\\` after it has already been processed.  This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function Z(t){Object.getOwnPropertyDescriptor(i,t)||Object.defineProperty(i,t,{configurable:!0,get(){var e,r=`'${t}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;\"FS_createPath\"!==(e=t)&&\"FS_createDataFile\"!==e&&\"FS_createPreloadedFile\"!==e&&\"FS_unlink\"!==e&&\"addRunDependency\"!==e&&\"FS_createLazyFile\"!==e&&\"FS_createDevice\"!==e&&\"removeRunDependency\"!==e||(r+=\". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you\"),y(r)}})}function Q(){var e=Y.buffer;m=new Int8Array(e),p=new Int16Array(e),i.HEAPU8=s=new Uint8Array(e),h=new Int32Array(e),d=new Uint32Array(e),a=new BigInt64Array(e),new BigUint64Array(e)}_(\"undefined\"!=typeof Int32Array&&\"undefined\"!=typeof Float64Array&&null!=Int32Array.prototype.subarray&&null!=Int32Array.prototype.set,\"JS engine does not provide full typed array support\");var ee,w=0,re=null,E={},t=null;function te(e){w++,i.monitorRunDependencies?.(w),e?(_(!E[e]),E[e]=1,null===t&&\"undefined\"!=typeof setInterval&&(t=setInterval(()=>{if(n)clearInterval(t),t=null;else{var e,r=!1;for(e in E)r||(r=!0,l(\"still waiting on run dependencies:\")),l(\"dependency: \"+e);r&&l(\"(end of list)\")}},1e4))):l(\"warning: run dependency added without ID\")}function ne(e){w--,i.monitorRunDependencies?.(w),e?(_(E[e]),delete E[e]):l(\"warning: run dependency removed without ID\"),0==w&&(null!==t&&(clearInterval(t),t=null),re)&&(e=re,re=null,e())}function y(e){i.onAbort?.(e),l(e=\"Aborted(\"+e+\")\"),n=!0;e=new WebAssembly.RuntimeError(e);throw j(e),e}function oe(t,n){return(...e)=>{_(X,`native function \\`${t}\\` called before runtime initialization`);var r=C[t];return _(r,`exported native function \\`${t}\\` not found`),_(e.length<=n,`native function \\`${t}\\` called with ${e.length} args but expects `+n),r(...e)}}function ae(){return e=\"traceconv.wasm\",i.locateFile?i.locateFile(e,$):$+e;var e}function ie(e,r){e=function(e){if(e==ee&&V)return new Uint8Array(V);if(z)return z(e);throw'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}(e),e=new WebAssembly.Module(e);return[new WebAssembly.Instance(e,r),e]}class se{name=\"ExitStatus\";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var g,v,le=e=>{for(;0<e.length;)e.shift()(i)},ce=[],ue=e=>ce.push(e),de=[],fe=e=>de.push(e),me=!0,pe=e=>(_(\"number\"==typeof e),\"0x\"+e.toString(16).padStart(8,\"0\")),he=e=>Er(e),_e=()=>gr(),S=e=>{S.shown||={},S.shown[e]||(S.shown[e]=1,l(e))},b=e=>e<-9007199254740992||9007199254740992<e?NaN:Number(e),we=\"undefined\"!=typeof TextDecoder?new TextDecoder:void 0,F=(e,r=0,t=NaN)=>{for(var n=(r>>>=0)+t,o=r;e[o]&&!(n<=o);)++o;if(16<o-r&&e.buffer&&we)return we.decode(e.subarray(r,o));for(var a=\"\";r<o;){var i,s,l=e[r++];128&l?(s=63&e[r++],192==(224&l)?a+=String.fromCharCode((31&l)<<6|s):(i=63&e[r++],(l=224==(240&l)?(15&l)<<12|s<<6|i:(240!=(248&l)&&S(\"Invalid UTF-8 leading byte \"+pe(l)+\" encountered when deserializing a UTF-8 string in wasm memory to a JS string!\"),(7&l)<<18|s<<12|i<<6|63&e[r++]))<65536?a+=String.fromCharCode(l):(s=l-65536,a+=String.fromCharCode(55296|s>>10,56320|1023&s)))):a+=String.fromCharCode(l)}return a},k=(e,r)=>(_(\"number\"==typeof e,`UTF8ToString expects a number (got ${typeof e})`),(e>>>=0)?F(s,e,r):\"\"),T={isAbs:e=>\"/\"===e.charAt(0),splitPath:e=>{return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1)},normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;0<=n;n--){var o=e[n];\".\"===o?e.splice(n,1):\"..\"===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift(\"..\");return e},normalize:e=>{var r=T.isAbs(e),t=\"/\"===e.slice(-1);return(e=(e=T.normalizeArray(e.split(\"/\").filter(e=>!!e),!r).join(\"/\"))||r?e:\".\")&&t&&(e+=\"/\"),(r?\"/\":\"\")+e},dirname:e=>{var e=T.splitPath(e),r=e[0],e=e[1];return r||e?r+(e=e&&e.slice(0,-1)):\".\"},basename:e=>e&&e.match(/([^\\/]+|\\/)\\/*$/)[1],join:(...e)=>T.normalize(e.join(\"/\")),join2:(e,r)=>T.normalize(e+\"/\"+r)},Ee=()=>e=>crypto.getRandomValues(e),ye=e=>{(ye=Ee())(e)},O={resolve:(...e)=>{for(var r=\"\",t=!1,n=e.length-1;-1<=n&&!t;n--){var o=0<=n?e[n]:M.cwd();if(\"string\"!=typeof o)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!o)return\"\";r=o+\"/\"+r,t=T.isAbs(o)}return(t?\"/\":\"\")+(r=T.normalizeArray(r.split(\"/\").filter(e=>!!e),!t).join(\"/\"))||\".\"},relative:(e,r)=>{function t(e){for(var r=0;r<e.length&&\"\"===e[r];r++);for(var t=e.length-1;0<=t&&\"\"===e[t];t--);return t<r?[]:e.slice(r,t-r+1)}e=O.resolve(e).slice(1),r=O.resolve(r).slice(1);for(var n=t(e.split(\"/\")),o=t(r.split(\"/\")),a=Math.min(n.length,o.length),i=a,s=0;s<a;s++)if(n[s]!==o[s]){i=s;break}for(var l=[],s=i;s<n.length;s++)l.push(\"..\");return(l=l.concat(o.slice(i))).join(\"/\")}},ge=[],A=e=>{for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:55296<=n&&n<=57343?(r+=4,++t):r+=3}return r},ve=(e,r,t,n)=>{if(t>>>=0,_(\"string\"==typeof e,`stringToUTF8Array expects a string (got ${typeof e})`),!(0<n))return 0;for(var o=t,a=t+n-1,i=0;i<e.length;++i){var s=e.charCodeAt(i);if((s=55296<=s&&s<=57343?65536+((1023&s)<<10)|1023&e.charCodeAt(++i):s)<=127){if(a<=t)break;r[t++>>>0]=s}else{if(s<=2047){if(a<=t+1)break;r[t++>>>0]=192|s>>6}else{if(s<=65535){if(a<=t+2)break;r[t++>>>0]=224|s>>12}else{if(a<=t+3)break;1114111<s&&S(\"Invalid Unicode code point \"+pe(s)+\" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).\"),r[t++>>>0]=240|s>>18,r[t++>>>0]=128|s>>12&63}r[t++>>>0]=128|s>>6&63}r[t++>>>0]=128|63&s}}return r[t>>>0]=0,t-o},Se=(e,r,t)=>{t=0<t?t:A(e)+1,t=new Array(t),e=ve(e,t,0,t.length);return r&&(t.length=e),t},D={ttys:[],init(){},shutdown(){},register(e,r){D.ttys[e]={input:[],output:[],ops:r},M.registerDevice(e,D.stream_ops)},stream_ops:{open(e){var r=D.ttys[e.node.rdev];if(!r)throw new M.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new M.ErrnoError(60);for(var a,i=0,s=0;s<n;s++){try{a=e.tty.ops.get_char(e.tty)}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){if(!e.tty||!e.tty.ops.put_char)throw new M.ErrnoError(60);try{for(var a=0;a<n;a++)e.tty.ops.put_char(e.tty,r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}},default_tty_ops:{get_char(e){if(!ge.length){var r=null;if(\"undefined\"!=typeof window&&\"function\"==typeof window.prompt&&null!==(r=window.prompt(\"Input: \"))&&(r+=\"\\n\"),!r)return null;ge=Se(r,!0)}return ge.shift()},put_char(e,r){null===r||10===r?(f(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(f(F(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,r,t){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,r){null===r||10===r?(l(F(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){0<e.output?.length&&(l(F(e.output)),e.output=[])}}},be=(e,r)=>s.fill(0,e,e+r),Fe=(e,r)=>(_(r,\"alignment argument is required\"),Math.ceil(e/r)*r),ke=e=>{e=Fe(e,65536);var r=_r(65536,e);return r&&be(r,e),r},P={ops_table:null,mount(e){return P.createNode(null,\"/\",16895,0)},createNode(e,r,t,n){if(M.isBlkdev(t)||M.isFIFO(t))throw new M.ErrnoError(63);P.ops_table||={dir:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,lookup:P.node_ops.lookup,mknod:P.node_ops.mknod,rename:P.node_ops.rename,unlink:P.node_ops.unlink,rmdir:P.node_ops.rmdir,readdir:P.node_ops.readdir,symlink:P.node_ops.symlink},stream:{llseek:P.stream_ops.llseek}},file:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:{llseek:P.stream_ops.llseek,read:P.stream_ops.read,write:P.stream_ops.write,mmap:P.stream_ops.mmap,msync:P.stream_ops.msync}},link:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr,readlink:P.node_ops.readlink},stream:{}},chrdev:{node:{getattr:P.node_ops.getattr,setattr:P.node_ops.setattr},stream:M.chrdev_stream_ops}};t=M.createNode(e,r,t,n);return M.isDir(t.mode)?(t.node_ops=P.ops_table.dir.node,t.stream_ops=P.ops_table.dir.stream,t.contents={}):M.isFile(t.mode)?(t.node_ops=P.ops_table.file.node,t.stream_ops=P.ops_table.file.stream,t.usedBytes=0,t.contents=null):M.isLink(t.mode)?(t.node_ops=P.ops_table.link.node,t.stream_ops=P.ops_table.link.stream):M.isChrdev(t.mode)&&(t.node_ops=P.ops_table.chrdev.node,t.stream_ops=P.ops_table.chrdev.stream),t.atime=t.mtime=t.ctime=Date.now(),e&&(e.contents[r]=t,e.atime=e.mtime=e.ctime=t.atime),t},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,r){var t=e.contents?e.contents.length:0;r<=t||(r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256)),t=e.contents,e.contents=new Uint8Array(r),0<e.usedBytes&&e.contents.set(t.subarray(0,e.usedBytes),0))},resizeFileStorage(e,r){var t;e.usedBytes!=r&&(0==r?(e.contents=null,e.usedBytes=0):(t=e.contents,e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r))},node_ops:{getattr(e){var r={};return r.dev=M.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,M.isDir(e.mode)?r.size=4096:M.isFile(e.mode)?r.size=e.usedBytes:M.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t]);void 0!==r.size&&P.resizeFileStorage(e,r.size)},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){return P.createNode(e,r,t,n)},rename(e,r,t){var n;try{n=M.lookupNode(r,t)}catch(e){}if(n){if(M.isDir(e.mode))for(var o in n.contents)throw new M.ErrnoError(55);M.hashRemoveNode(n)}delete e.parent.contents[e.name],(r.contents[t]=e).name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.contents[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){for(var t in M.lookupNode(e,r).contents)throw new M.ErrnoError(55);delete e.contents[r],e.ctime=e.mtime=Date.now()},readdir(e){return[\".\",\"..\",...Object.keys(e.contents)]},symlink(e,r,t){e=P.createNode(e,r,41471,0);return e.link=t,e},readlink(e){if(M.isLink(e.mode))return e.link;throw new M.ErrnoError(28)}},stream_ops:{read(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(_(0<=i),8<i&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s<i;s++)r[t+s]=a[o+s];return i},write(e,r,t,n,o,a){if(_(!(r instanceof ArrayBuffer)),r.buffer===m.buffer&&(a=!1),!n)return 0;var i=e.node;if(i.mtime=i.ctime=Date.now(),r.subarray&&(!i.contents||i.contents.subarray)){if(a)return _(0===o,\"canOwn must imply no weird position inside the file\"),i.contents=r.subarray(t,t+n),i.usedBytes=n;if(0===i.usedBytes&&0===o)return i.contents=r.slice(t,t+n),i.usedBytes=n;if(o+n<=i.usedBytes)return i.contents.set(r.subarray(t,t+n),o),n}if(P.expandFileStorage(i,o+n),i.contents.subarray&&r.subarray)i.contents.set(r.subarray(t,t+n),o);else for(var s=0;s<n;s++)i.contents[o+s]=r[t+s];return i.usedBytes=Math.max(i.usedBytes,o+n),n},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.usedBytes),r<0)throw new M.ErrnoError(28);return r},mmap(e,r,t,n,o){if(!M.isFile(e.node.mode))throw new M.ErrnoError(43);var a,i,e=e.node.contents;if(2&o||!e||e.buffer!==m.buffer){if(i=!0,!(a=ke(r)))throw new M.ErrnoError(48);e&&((0<t||t+r<e.length)&&(e=e.subarray?e.subarray(t,t+r):Array.prototype.slice.call(e,t,t+r)),m.set(e,a>>>0))}else i=!1,a=e.byteOffset;return{ptr:a,allocated:i}},msync(e,r,t,n,o){return P.stream_ops.write(e,r,0,n,t,!1),0}}},Te=async e=>{var r=await U(e);return _(r,`Loading data file \"${e}\" failed (no arrayBuffer).`),new Uint8Array(r)},Oe=(...e)=>M.createDataFile(...e),Ae=[],De=(r,t,n,o)=>{\"undefined\"!=typeof Browser&&Browser.init();var a=!1;return Ae.forEach(e=>{a||e.canHandle(t)&&(e.handle(r,t,n,o),a=!0)}),a},Pe=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},c={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount(e){_(u),c.reader??=new FileReaderSync;var a=c.createNode(null,\"/\",c.DIR_MODE,0),i={};function n(e){for(var r=e.split(\"/\"),t=a,n=0;n<r.length-1;n++){var o=r.slice(0,n+1).join(\"/\");i[o]||=c.createNode(t,r[n],c.DIR_MODE,0),t=i[o]}return t}function o(e){e=e.split(\"/\");return e[e.length-1]}return Array.prototype.forEach.call(e.opts.files||[],function(e){c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e,e.lastModifiedDate)}),(e.opts.blobs||[]).forEach(e=>{c.createNode(n(e.name),o(e.name),c.FILE_MODE,0,e.data)}),(e.opts.packages||[]).forEach(t=>{t.metadata.files.forEach(e=>{var r=e.filename.slice(1);c.createNode(n(r),o(r),c.FILE_MODE,0,t.blob.slice(e.start,e.end))})}),a},createNode(e,r,t,n,o,a){var i=M.createNode(e,r,t);return i.mode=t,i.node_ops=c.node_ops,i.stream_ops=c.stream_ops,i.atime=i.mtime=i.ctime=(a||new Date).getTime(),_(c.FILE_MODE!==c.DIR_MODE),t===c.FILE_MODE?(i.size=o.size,i.contents=o):(i.size=4096,i.contents={}),e&&(e.contents[r]=i),i},node_ops:{getattr(e){return{dev:1,ino:e.id,mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:e.size,atime:new Date(e.atime),mtime:new Date(e.mtime),ctime:new Date(e.ctime),blksize:4096,blocks:Math.ceil(e.size/4096)}},setattr(e,r){for(const t of[\"mode\",\"atime\",\"mtime\",\"ctime\"])null!=r[t]&&(e[t]=r[t])},lookup(e,r){throw new M.ErrnoError(44)},mknod(e,r,t,n){throw new M.ErrnoError(63)},rename(e,r,t){throw new M.ErrnoError(63)},unlink(e,r){throw new M.ErrnoError(63)},rmdir(e,r){throw new M.ErrnoError(63)},readdir(e){var r,t=[\".\",\"..\"];for(r of Object.keys(e.contents))t.push(r);return t},symlink(e,r,t){throw new M.ErrnoError(63)}},stream_ops:{read(e,r,t,n,o){return o>=e.node.size?0:(e=e.node.contents.slice(o,o+n),o=c.reader.readAsArrayBuffer(e),r.set(new Uint8Array(o),t),e.size)},write(e,r,t,n,o){throw new M.ErrnoError(29)},llseek(e,r,t){if(1===t?r+=e.position:2===t&&M.isFile(e.node.mode)&&(r+=e.node.size),r<0)throw new M.ErrnoError(28);return r}}},Me={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},M={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,readFiles:{},ErrnoError:class extends Error{name=\"ErrnoError\";constructor(e){for(var r in super(X?k(mr(e)):\"\"),this.errno=e,Me)if(Me[r]===e){this.code=r;break}}},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return 0!=(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,n){this.parent=e=e||this,this.mount=e.mount,this.id=M.nextInode++,this.name=r,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return M.isDir(this.mode)}get isDevice(){return M.isChrdev(this.mode)}},lookupPath(e,r={}){if(!e)throw new M.ErrnoError(44);r.follow_mount??=!0,T.isAbs(e)||(e=M.cwd()+\"/\"+e);e:for(var t=0;t<40;t++){for(var n=e.split(\"/\").filter(e=>!!e),o=M.root,a=\"/\",i=0;i<n.length;i++){var s=i===n.length-1;if(s&&r.parent)break;if(\".\"!==n[i])if(\"..\"===n[i]){if(a=T.dirname(a),M.isRoot(o)){e=a+\"/\"+n.slice(i+1).join(\"/\");continue e}o=o.parent}else{a=T.join2(a,n[i]);try{o=M.lookupNode(o,n[i])}catch(e){if(44===e?.errno&&s&&r.noent_okay)return{path:a};throw e}if(!M.isMountpoint(o)||s&&!r.follow_mount||(o=o.mounted.root),M.isLink(o.mode)&&(!s||r.follow)){if(!o.node_ops.readlink)throw new M.ErrnoError(52);s=o.node_ops.readlink(o);e=(s=T.isAbs(s)?s:T.dirname(a)+\"/\"+s)+\"/\"+n.slice(i+1).join(\"/\");continue e}}}return{path:a,node:o}}throw new M.ErrnoError(32)},getPath(e){for(var r,t;;){if(M.isRoot(e))return t=e.mount.mountpoint,r?\"/\"!==t[t.length-1]?t+\"/\"+r:t+r:t;r=r?e.name+\"/\"+r:e.name,e=e.parent}},hashName(e,r){for(var t=0,n=0;n<r.length;n++)t=(t<<5)-t+r.charCodeAt(n)|0;return(e+t>>>0)%M.nameTable.length},hashAddNode(e){var r=M.hashName(e.parent.id,e.name);e.name_next=M.nameTable[r],M.nameTable[r]=e},hashRemoveNode(e){var r=M.hashName(e.parent.id,e.name);if(M.nameTable[r]===e)M.nameTable[r]=e.name_next;else for(var t=M.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=M.mayLookup(e);if(t)throw new M.ErrnoError(t);for(var t=M.hashName(e.id,r),n=M.nameTable[t];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===r)return n}return M.lookup(e,r)},createNode(e,r,t,n){_(\"object\"==typeof e);e=new M.FSNode(e,r,t,n);return M.hashAddNode(e),e},destroyNode(e){M.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return 32768==(61440&e)},isDir(e){return 16384==(61440&e)},isLink(e){return 40960==(61440&e)},isChrdev(e){return 8192==(61440&e)},isBlkdev(e){return 24576==(61440&e)},isFIFO(e){return 4096==(61440&e)},isSocket(e){return 49152==(49152&e)},flagsToPermissionString(e){var r=[\"r\",\"w\",\"rw\"][3&e];return 512&e&&(r+=\"w\"),r},nodePermissions(e,r){return M.ignorePermissions||(!r.includes(\"r\")||292&e.mode)&&(!r.includes(\"w\")||146&e.mode)&&(!r.includes(\"x\")||73&e.mode)?0:2},mayLookup(e){return M.isDir(e.mode)?M.nodePermissions(e,\"x\")||(e.node_ops.lookup?0:2):54},mayCreate(e,r){if(!M.isDir(e.mode))return 54;try{M.lookupNode(e,r);return 20}catch(e){}return M.nodePermissions(e,\"wx\")},mayDelete(e,r,t){var n;try{n=M.lookupNode(e,r)}catch(e){return e.errno}r=M.nodePermissions(e,\"wx\");if(r)return r;if(t){if(!M.isDir(n.mode))return 54;if(M.isRoot(n)||M.getPath(n)===M.cwd())return 10}else if(M.isDir(n.mode))return 31;return 0},mayOpen(e,r){return e?M.isLink(e.mode)?32:M.isDir(e.mode)&&(\"r\"!==M.flagsToPermissionString(r)||576&r)?31:M.nodePermissions(e,M.flagsToPermissionString(r)):44},checkOpExists(e,r){if(e)return e;throw new M.ErrnoError(r)},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=M.MAX_OPEN_FDS;e++)if(!M.streams[e])return e;throw new M.ErrnoError(33)},getStreamChecked(e){e=M.getStream(e);if(e)return e;throw new M.ErrnoError(8)},getStream:e=>M.streams[e],createStream(e,r=-1){return _(-1<=r),e=Object.assign(new M.FSStream,e),-1==r&&(r=M.nextfd()),e.fd=r,M.streams[r]=e},closeStream(e){M.streams[e]=null},dupStream(e,r=-1){e=M.createStream(e,r);return e.stream_ops?.dup?.(e),e},doSetAttr(e,r,t){var n=e?.stream_ops.setattr,e=n?e:r;n??=r.node_ops.setattr,M.checkOpExists(n,63),n(e,t)},chrdev_stream_ops:{open(e){var r=M.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new M.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice(e,r){M.devices[e]={stream_ops:r}},getDevice:e=>M.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(r,t){\"function\"==typeof r&&(t=r,r=!1),M.syncFSRequests++,1<M.syncFSRequests&&l(`warning: ${M.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var n=M.getMounts(M.root.mount),o=0;function a(e){return _(0<M.syncFSRequests),M.syncFSRequests--,t(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,a(e));++o>=n.length&&a(null)}n.forEach(e=>{if(!e.type.syncfs)return i(null);e.type.syncfs(e,r,i)})},mount(e,r,t){if(\"string\"==typeof e)throw e;var n,o=\"/\"===t,a=!t;if(o&&M.root)throw new M.ErrnoError(10);if(!o&&!a){a=M.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,M.isMountpoint(n))throw new M.ErrnoError(10);if(!M.isDir(n.mode))throw new M.ErrnoError(54)}a={type:e,opts:r,mountpoint:t,mounts:[]},r=e.mount(a);return(r.mount=a).root=r,o?M.root=r:n&&(n.mounted=a,n.mount)&&n.mount.mounts.push(a),r},unmount(e){e=M.lookupPath(e,{follow_mount:!1});if(!M.isMountpoint(e.node))throw new M.ErrnoError(28);var e=e.node,r=e.mounted,n=M.getMounts(r),r=(Object.keys(M.nameTable).forEach(e=>{for(var r=M.nameTable[e];r;){var t=r.name_next;n.includes(r.mount)&&M.destroyNode(r),r=t}}),e.mounted=null,e.mount.mounts.indexOf(r));_(-1!==r),e.mount.mounts.splice(r,1)},lookup(e,r){return e.node_ops.lookup(e,r)},mknod(e,r,t){var n=M.lookupPath(e,{parent:!0}).node,e=T.basename(e);if(!e)throw new M.ErrnoError(28);if(\".\"===e||\"..\"===e)throw new M.ErrnoError(20);var o=M.mayCreate(n,e);if(o)throw new M.ErrnoError(o);if(n.node_ops.mknod)return n.node_ops.mknod(n,e,r,t);throw new M.ErrnoError(63)},statfs(e){return M.statfsNode(M.lookupPath(e,{follow:!0}).node)},statfsStream(e){return M.statfsNode(e.node)},statfsNode(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:M.nextInode,ffree:M.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(r,e.node_ops.statfs(e.mount.opts.root)),r},create(e,r=438){return M.mknod(e,r=r&4095|32768,0)},mkdir(e,r=511){return M.mknod(e,r=r&1023|16384,0)},mkdirTree(e,r){var t,n=\"\";for(t of e.split(\"/\"))if(t){(n||T.isAbs(e))&&(n+=\"/\"),n+=t;try{M.mkdir(n,r)}catch(e){if(20!=e.errno)throw e}}},mkdev(e,r,t){return void 0===t&&(t=r,r=438),M.mknod(e,r|=8192,t)},symlink(e,r){if(!O.resolve(e))throw new M.ErrnoError(44);var t=M.lookupPath(r,{parent:!0}).node;if(!t)throw new M.ErrnoError(44);var r=T.basename(r),n=M.mayCreate(t,r);if(n)throw new M.ErrnoError(n);if(t.node_ops.symlink)return t.node_ops.symlink(t,r,e);throw new M.ErrnoError(63)},rename(e,r){var t=T.dirname(e),n=T.dirname(r),o=T.basename(e),a=T.basename(r),i=M.lookupPath(e,{parent:!0}),i=i.node,s=M.lookupPath(r,{parent:!0}).node;if(!i||!s)throw new M.ErrnoError(44);if(i.mount!==s.mount)throw new M.ErrnoError(75);var l,c=M.lookupNode(i,o),e=O.relative(e,n);if(\".\"!==e.charAt(0))throw new M.ErrnoError(28);if(\".\"!==(e=O.relative(r,t)).charAt(0))throw new M.ErrnoError(55);try{l=M.lookupNode(s,a)}catch(e){}if(c!==l){n=M.isDir(c.mode),r=M.mayDelete(i,o,n);if(r)throw new M.ErrnoError(r);if(r=l?M.mayDelete(s,a,n):M.mayCreate(s,a))throw new M.ErrnoError(r);if(!i.node_ops.rename)throw new M.ErrnoError(63);if(M.isMountpoint(c)||l&&M.isMountpoint(l))throw new M.ErrnoError(10);if(s!==i&&(r=M.nodePermissions(i,\"w\")))throw new M.ErrnoError(r);M.hashRemoveNode(c);try{i.node_ops.rename(c,s,a),c.parent=s}catch(e){throw e}finally{M.hashAddNode(c)}}},rmdir(e){var r=M.lookupPath(e,{parent:!0}).node,e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!0);if(n)throw new M.ErrnoError(n);if(!r.node_ops.rmdir)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.rmdir(r,e),M.destroyNode(t)},readdir(e){e=M.lookupPath(e,{follow:!0}).node;return M.checkOpExists(e.node_ops.readdir,54)(e)},unlink(e){var r=M.lookupPath(e,{parent:!0}).node;if(!r)throw new M.ErrnoError(44);var e=T.basename(e),t=M.lookupNode(r,e),n=M.mayDelete(r,e,!1);if(n)throw new M.ErrnoError(n);if(!r.node_ops.unlink)throw new M.ErrnoError(63);if(M.isMountpoint(t))throw new M.ErrnoError(10);r.node_ops.unlink(r,e),M.destroyNode(t)},readlink(e){e=M.lookupPath(e).node;if(!e)throw new M.ErrnoError(44);if(e.node_ops.readlink)return e.node_ops.readlink(e);throw new M.ErrnoError(28)},stat(e,r){e=M.lookupPath(e,{follow:!r}).node;return M.checkOpExists(e.node_ops.getattr,63)(e)},fstat(e){var e=M.getStreamChecked(e),r=e.node,t=e.stream_ops.getattr,e=t?e:r;return t??=r.node_ops.getattr,M.checkOpExists(t,63),t(e)},lstat(e){return M.stat(e,!0)},doChmod(e,r,t,n){M.doSetAttr(e,r,{mode:4095&t|-4096&r.mode,ctime:Date.now(),dontFollow:n})},chmod(e,r,t){e=\"string\"==typeof e?M.lookupPath(e,{follow:!t}).node:e,M.doChmod(null,e,r,t)},lchmod(e,r){M.chmod(e,r,!0)},fchmod(e,r){e=M.getStreamChecked(e);M.doChmod(e,e.node,r,!1)},doChown(e,r,t){M.doSetAttr(e,r,{timestamp:Date.now(),dontFollow:t})},chown(e,r,t,n){e=\"string\"==typeof e?M.lookupPath(e,{follow:!n}).node:e,M.doChown(null,e,n)},lchown(e,r,t){M.chown(e,r,t,!0)},fchown(e,r,t){e=M.getStreamChecked(e);M.doChown(e,e.node,!1)},doTruncate(e,r,t){if(M.isDir(r.mode))throw new M.ErrnoError(31);if(!M.isFile(r.mode))throw new M.ErrnoError(28);var n=M.nodePermissions(r,\"w\");if(n)throw new M.ErrnoError(n);M.doSetAttr(e,r,{size:t,timestamp:Date.now()})},truncate(e,r){if(r<0)throw new M.ErrnoError(28);e=\"string\"==typeof e?M.lookupPath(e,{follow:!0}).node:e,M.doTruncate(null,e,r)},ftruncate(e,r){e=M.getStreamChecked(e);if(r<0||0==(2097155&e.flags))throw new M.ErrnoError(28);M.doTruncate(e,e.node,r)},utime(e,r,t){e=M.lookupPath(e,{follow:!0}).node;M.checkOpExists(e.node_ops.setattr,63)(e,{atime:r,mtime:t})},open(e,r,t=438){if(\"\"===e)throw new M.ErrnoError(44);t=64&(r=\"string\"==typeof r?(e=>{var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[e];if(void 0===r)throw new Error(\"Unknown file open mode: \"+e);return r})(r):r)?4095&t|32768:0,\"object\"==typeof e?n=e:(a=e.endsWith(\"/\"),n=(o=M.lookupPath(e,{follow:!(131072&r),noent_okay:!0})).node,e=o.path);var n,o=!1;if(64&r)if(n){if(128&r)throw new M.ErrnoError(20)}else{if(a)throw new M.ErrnoError(31);n=M.mknod(e,511|t,0),o=!0}if(!n)throw new M.ErrnoError(44);if(M.isChrdev(n.mode)&&(r&=-513),65536&r&&!M.isDir(n.mode))throw new M.ErrnoError(54);if(!o){var a=M.mayOpen(n,r);if(a)throw new M.ErrnoError(a)}512&r&&!o&&M.truncate(n,0),r&=-131713;a=M.createStream({node:n,path:M.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),o&&M.chmod(n,511&t),!i.logReadFiles||1&r||e in M.readFiles||(M.readFiles[e]=1),a},close(e){if(M.isClosed(e))throw new M.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{M.closeStream(e.fd)}e.fd=null},isClosed(e){return null===e.fd},llseek(e,r,t){if(M.isClosed(e))throw new M.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new M.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new M.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,o){if(_(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(1==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.read)throw new M.ErrnoError(28);var a=void 0!==o;if(a){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.read(e,r,t,n,o);return a||(e.position+=r),r},write(e,r,t,n,o,a){if(_(0<=t),n<0||o<0)throw new M.ErrnoError(28);if(M.isClosed(e))throw new M.ErrnoError(8);if(0==(2097155&e.flags))throw new M.ErrnoError(8);if(M.isDir(e.node.mode))throw new M.ErrnoError(31);if(!e.stream_ops.write)throw new M.ErrnoError(28);e.seekable&&1024&e.flags&&M.llseek(e,0,2);var i=void 0!==o;if(i){if(!e.seekable)throw new M.ErrnoError(70)}else o=e.position;r=e.stream_ops.write(e,r,t,n,o,a);return i||(e.position+=r),r},mmap(e,r,t,n,o){if(0!=(2&n)&&0==(2&o)&&2!=(2097155&e.flags))throw new M.ErrnoError(2);if(1==(2097155&e.flags))throw new M.ErrnoError(2);if(!e.stream_ops.mmap)throw new M.ErrnoError(43);if(r)return e.stream_ops.mmap(e,r,t,n,o);throw new M.ErrnoError(28)},msync(e,r,t,n,o){return _(0<=t),e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0},ioctl(e,r,t){if(e.stream_ops.ioctl)return e.stream_ops.ioctl(e,r,t);throw new M.ErrnoError(59)},readFile(e,r={}){if(r.flags=r.flags||0,r.encoding=r.encoding||\"binary\",\"utf8\"!==r.encoding&&\"binary\"!==r.encoding)throw new Error(`Invalid encoding type \"${r.encoding}\"`);var t,n=M.open(e,r.flags),e=M.stat(e).size,o=new Uint8Array(e);return M.read(n,o,0,e,0),\"utf8\"===r.encoding?t=F(o):\"binary\"===r.encoding&&(t=o),M.close(n),t},writeFile(e,r,t={}){t.flags=t.flags||577;e=M.open(e,t.flags,t.mode);if(\"string\"==typeof r){var n=new Uint8Array(A(r)+1),o=ve(r,n,0,n.length);M.write(e,n,0,o,void 0,t.canOwn)}else{if(!ArrayBuffer.isView(r))throw new Error(\"Unsupported data type\");M.write(e,r,0,r.byteLength,void 0,t.canOwn)}M.close(e)},cwd:()=>M.currentPath,chdir(e){e=M.lookupPath(e,{follow:!0});if(null===e.node)throw new M.ErrnoError(44);if(!M.isDir(e.node.mode))throw new M.ErrnoError(54);var r=M.nodePermissions(e.node,\"x\");if(r)throw new M.ErrnoError(r);M.currentPath=e.path},createDefaultDirectories(){M.mkdir(\"/tmp\"),M.mkdir(\"/home\"),M.mkdir(\"/home/web_user\")},createDefaultDevices(){M.mkdir(\"/dev\"),M.registerDevice(M.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n,llseek:()=>0}),M.mkdev(\"/dev/null\",M.makedev(1,3)),D.register(M.makedev(5,0),D.default_tty_ops),D.register(M.makedev(6,0),D.default_tty1_ops),M.mkdev(\"/dev/tty\",M.makedev(5,0)),M.mkdev(\"/dev/tty1\",M.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(0===r&&(ye(e),r=e.byteLength),e[--r]);M.createDevice(\"/dev\",\"random\",t),M.createDevice(\"/dev\",\"urandom\",t),M.mkdir(\"/dev/shm\"),M.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){M.mkdir(\"/proc\");var r=M.mkdir(\"/proc/self\");M.mkdir(\"/proc/self/fd\"),M.mount({mount(){var e=M.createNode(r,\"fd\",16895,73);return e.stream_ops={llseek:P.stream_ops.llseek},e.node_ops={lookup(e,r){var r=+r,t=M.getStreamChecked(r),r={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>t.path},id:1+r};return r.parent=r},readdir(){return Array.from(M.streams.entries()).filter(([,e])=>e).map(([e])=>e.toString())}},e}},{},\"/proc/self/fd\")},createStandardStreams(e,r,t){e?M.createDevice(\"/dev\",\"stdin\",e):M.symlink(\"/dev/tty\",\"/dev/stdin\"),r?M.createDevice(\"/dev\",\"stdout\",null,r):M.symlink(\"/dev/tty\",\"/dev/stdout\"),t?M.createDevice(\"/dev\",\"stderr\",null,t):M.symlink(\"/dev/tty1\",\"/dev/stderr\");e=M.open(\"/dev/stdin\",0),r=M.open(\"/dev/stdout\",1),t=M.open(\"/dev/stderr\",1);_(0===e.fd,`invalid handle for stdin (${e.fd})`),_(1===r.fd,`invalid handle for stdout (${r.fd})`),_(2===t.fd,`invalid handle for stderr (${t.fd})`)},staticInit(){M.nameTable=new Array(4096),M.mount(P,{},\"/\"),M.createDefaultDirectories(),M.createDefaultDevices(),M.createSpecialDirectories(),M.filesystems={MEMFS:P,WORKERFS:c}},init(e,r,t){_(!M.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),M.initialized=!0,e??=i.stdin,r??=i.stdout,t??=i.stderr,M.createStandardStreams(e,r,t)},quit(){M.initialized=!1,pr(0);for(var e of M.streams)e&&M.close(e)},findObject(e,r){e=M.analyzePath(e,r);return e.exists?e.object:null},analyzePath(e,r){try{e=(n=M.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=M.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=T.basename(e),n=M.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot=\"/\"===n.path}catch(e){t.error=e.errno}return t},createPath(e,r,t,n){e=\"string\"==typeof e?e:M.getPath(e);for(var o=r.split(\"/\").reverse();o.length;){var a=o.pop();if(a){var i=T.join2(e,a);try{M.mkdir(i)}catch(e){if(20!=e.errno)throw e}e=i}}return i},createFile(e,r,t,n,o){e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Pe(n,o);return M.create(e,r)},createDataFile(e,r,t,n,o,a){var i=r,r=(e&&(e=\"string\"==typeof e?e:M.getPath(e),i=r?T.join2(e,r):e),Pe(n,o)),e=M.create(i,r);if(t){if(\"string\"==typeof t){for(var s=new Array(t.length),l=0,c=t.length;l<c;++l)s[l]=t.charCodeAt(l);t=s}M.chmod(e,146|r);n=M.open(e,577);M.write(n,t,0,t.length,0,a),M.close(n),M.chmod(e,r)}},createDevice(e,r,l,i){var e=T.join2(\"string\"==typeof e?e:M.getPath(e),r),r=Pe(!!l,!!i),t=(M.createDevice.major??=64,M.makedev(M.createDevice.major++,0));return M.registerDevice(t,{open(e){e.seekable=!1},close(e){i?.buffer?.length&&i(10)},read(e,r,t,n,o){for(var a,i=0,s=0;s<n;s++){try{a=l()}catch(e){throw new M.ErrnoError(29)}if(void 0===a&&0===i)throw new M.ErrnoError(6);if(null==a)break;i++,r[t+s]=a}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){for(var a=0;a<n;a++)try{i(r[t+a])}catch(e){throw new M.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),a}}),M.mkdev(e,r,t)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(\"undefined\"!=typeof XMLHttpRequest)throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");try{e.contents=z(e.url),e.usedBytes=e.contents.length}catch(e){throw new M.ErrnoError(29)}},createLazyFile(e,r,i,t,n){class o{lengthKnown=!1;chunks=[];get(e){var r;if(!(e>this.length-1||e<0))return r=e%this.chunkSize,e=e/this.chunkSize|0,this.getter(e)[r]}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;if(e.open(\"HEAD\",i,!1),e.send(null),!(200<=e.status&&e.status<300||304===e.status))throw new Error(\"Couldn't load \"+i+\". Status: \"+e.status);var r,n=Number(e.getResponseHeader(\"Content-length\")),t=(r=e.getResponseHeader(\"Accept-Ranges\"))&&\"bytes\"===r,e=(r=e.getResponseHeader(\"Content-Encoding\"))&&\"gzip\"===r,o=1048576,a=(t||(o=n),this);a.setDataGetter(e=>{var r=e*o,t=(e+1)*o-1,t=Math.min(t,n-1);if(void 0===a.chunks[e]&&(a.chunks[e]=((e,r)=>{if(r<e)throw new Error(\"invalid range (\"+e+\", \"+r+\") or no bytes requested!\");if(n-1<r)throw new Error(\"only \"+n+\" bytes available! programmer error!\");var t=new XMLHttpRequest;if(t.open(\"GET\",i,!1),n!==o&&t.setRequestHeader(\"Range\",\"bytes=\"+e+\"-\"+r),t.responseType=\"arraybuffer\",t.overrideMimeType&&t.overrideMimeType(\"text/plain; charset=x-user-defined\"),t.send(null),200<=t.status&&t.status<300||304===t.status)return void 0!==t.response?new Uint8Array(t.response||[]):Se(t.responseText||\"\",!0);throw new Error(\"Couldn't load \"+i+\". Status: \"+t.status)})(r,t)),void 0===a.chunks[e])throw new Error(\"doXHR failed!\");return a.chunks[e]}),!e&&n||(o=n=1,n=this.getter(0).length,o=n,f(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=n,this._chunkSize=o,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(\"undefined\"!=typeof XMLHttpRequest){if(!u)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var a={isDevice:!1,contents:new o}}else a={isDevice:!1,url:i};var s=M.createFile(e,r,a,t,n),l=(a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}}),{});function c(e,r,t,n,o){var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(_(0<=i),a.slice)for(var s=0;s<i;s++)r[t+s]=a[o+s];else for(s=0;s<i;s++)r[t+s]=a.get(o+s);return i}return Object.keys(s.stream_ops).forEach(e=>{var r=s.stream_ops[e];l[e]=(...e)=>(M.forceLoadFile(s),r(...e))}),l.read=(e,r,t,n,o)=>(M.forceLoadFile(s),c(e,r,t,n,o)),l.mmap=(e,r,t,n,o)=>{M.forceLoadFile(s);var a=ke(r);if(a)return c(e,m,a,r,t),{ptr:a,allocated:!0};throw new M.ErrnoError(48)},s.stream_ops=l,s},absolutePath(){y(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\")},createFolder(){y(\"FS.createFolder has been removed; use FS.mkdir instead\")},createLink(){y(\"FS.createLink has been removed; use FS.symlink instead\")},joinPath(){y(\"FS.joinPath has been removed; use PATH.join instead\")},mmapAlloc(){y(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\")},standardizePath(){y(\"FS.standardizePath has been removed; use PATH.normalize instead\")}},R={DEFAULT_POLLMASK:5,calculateAt(e,r,t){if(T.isAbs(r))return r;if(e=-100===e?M.cwd():R.getStreamFromFD(e).path,0!=r.length)return e+\"/\"+r;if(t)return e;throw new M.ErrnoError(44)},writeStat(e,r){h[e>>>2>>>0]=r.dev,h[e+4>>>2>>>0]=r.mode,d[e+8>>>2>>>0]=r.nlink,h[e+12>>>2>>>0]=r.uid,h[e+16>>>2>>>0]=r.gid,h[e+20>>>2>>>0]=r.rdev,a[e+24>>>3]=BigInt(r.size),h[e+32>>>2>>>0]=4096,h[e+36>>>2>>>0]=r.blocks;var t=r.atime.getTime(),n=r.mtime.getTime(),o=r.ctime.getTime();return a[e+40>>>3]=BigInt(Math.floor(t/1e3)),d[e+48>>>2>>>0]=t%1e3*1e3*1e3,a[e+56>>>3]=BigInt(Math.floor(n/1e3)),d[e+64>>>2>>>0]=n%1e3*1e3*1e3,a[e+72>>>3]=BigInt(Math.floor(o/1e3)),d[e+80>>>2>>>0]=o%1e3*1e3*1e3,a[e+88>>>3]=BigInt(r.ino),0},writeStatFs(e,r){h[e+4>>>2>>>0]=r.bsize,h[e+40>>>2>>>0]=r.bsize,h[e+8>>>2>>>0]=r.blocks,h[e+12>>>2>>>0]=r.bfree,h[e+16>>>2>>>0]=r.bavail,h[e+20>>>2>>>0]=r.files,h[e+24>>>2>>>0]=r.ffree,h[e+28>>>2>>>0]=r.fsid,h[e+44>>>2>>>0]=r.flags,h[e+36>>>2>>>0]=r.namelen},doMsync(e,r,t,n,o){if(!M.isFile(r.node.mode))throw new M.ErrnoError(43);if(2&n)return 0;e=s.slice(e,e+t);M.msync(r,e,o,t,n)},getStreamFromFD(e){return M.getStreamChecked(e)},varargs:void 0,getStr(e){return k(e)}},Re=()=>{_(null!=R.varargs);var e=h[+R.varargs>>>2>>>0];return R.varargs+=4,e},N=Re,I=(e,r,t)=>(_(\"number\"==typeof t,\"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\"),ve(e,s,r,t)),Ne=e=>d[e>>>2>>>0]+4294967296*h[e+4>>>2>>>0],Ie=[0,31,60,91,121,152,182,213,244,274,305,335],Ce=[0,31,59,90,120,151,181,212,243,273,304,334],Le=e=>{var r;return((r=e.getFullYear())%4==0&&(r%100!=0||r%400==0)?Ie:Ce)[e.getMonth()]+e.getDate()-1},xe=()=>performance.now(),je=()=>Date.now(),Ue=e=>0<=e&&e<=3,ze=()=>4294901760,Be=r=>{var t=Y.buffer,e=(r-t.byteLength+65535)/65536|0;try{return Y.grow(e),Q(),1}catch(e){l(`growMemory: Attempted to grow heap from ${t.byteLength} bytes to ${r} bytes, but got error: `+e)}},Ge={},He=()=>{if(!He.strings){var e={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:H||\"./this.program\"};for(r in Ge)void 0===Ge[r]?delete e[r]:e[r]=Ge[r];var r,t=[];for(r in e)t.push(r+\"=\"+e[r]);He.strings=t}return He.strings},We=0,$e=()=>me||0<We,Ve=e=>{K=e,$e()||(i.onExit?.(e),n=!0),W(0,new se(e))},Ye=(e,r)=>{K=e;var t=f,n=l,o=!1;f=l=e=>{o=!0};try{pr(0),[\"stdout\",\"stderr\"].forEach(e=>{var e=M.analyzePath(\"/dev/\"+e);e&&(e=e.object.rdev,D.ttys[e]?.output?.length)&&(o=!0)})}catch(e){}f=t,l=n,o&&S(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.\"),$e()&&!r&&(j(t=`program exited (with status: ${e}), but keepRuntimeAlive() is set (counter=${We}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`),l(t)),Ve(e)},B=Ye,Ke=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=d[r>>>2>>>0],s=d[r+4>>>2>>>0],i=(r+=8,M.read(e,m,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},Xe=(e,r,t,n)=>{for(var o=0,a=0;a<t;a++){var i=d[r>>>2>>>0],s=d[r+4>>>2>>>0],i=(r+=8,M.write(e,m,i,s,n));if(i<0)return-1;if(o+=i,i<s)break;void 0!==n&&(n+=i)}return o},qe=e=>{if(e instanceof se||\"unwind\"==e)return K;o(),e instanceof WebAssembly.RuntimeError&&gr()<=0&&l(\"Stack overflow detected.  You can try increasing -sSTACK_SIZE (currently set to 65536)\"),W(0,e)},Je=e=>yr(e),Ze=e=>{var r=A(e)+1,t=Je(r);return I(e,t,r),t},Qe=e=>{var r=i[\"_\"+e];return _(r,\"Cannot call unknown function \"+e+\", make sure it is exported\"),r},er=(e,r)=>{_(0<=e.length,\"writeArrayToMemory array must have a length (should be an array or typed array)\"),m.set(e,r>>>0)},rr=(e,r)=>{_(e<16384),e<128?r.push(e):r.push(e%128|128,e>>7)},tr=(e,r)=>{if(\"function\"==typeof WebAssembly.Function)return new WebAssembly.Function((e=>{for(var r={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"},t={parameters:[],results:\"v\"==e[0]?[]:[r[e[0]]]},n=1;n<e.length;++n)_(e[n]in r,\"invalid signature char: \"+e[n]),t.parameters.push(r[e[n]]);return t})(r),e);var t,n=[1],o=n,a=(r=r).slice(0,1),r=r.slice(1),i={i:127,p:127,j:126,f:125,d:124,e:111};o.push(96),rr(r.length,o);for(t of r)_(t in i,\"invalid signature char: \"+t),o.push(i[t]);\"v\"==a?o.push(0):o.push(1,i[a]);r=[0,97,115,109,1,0,0,0,1],rr(n.length,r),r.push(...n),r.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),a=new WebAssembly.Module(new Uint8Array(r));return new WebAssembly.Instance(a,{e:{f:e}}).exports.f},nr=[],or=(e,r)=>{if(v)for(var t=e;t<e+r;t++){o=void 0,(o=nr[n=t])||(nr[n]=o=g.get(n)),_(g.get(n)==o,\"JavaScript-side Wasm function table mirror is out of date!\");n=o;n&&v.set(n,t)}var n,o},ar=e=>(v||(v=new WeakMap,or(0,g.length)),v.get(e)||0),ir=[],sr=()=>{if(ir.length)return ir.pop();try{g.grow(1)}catch(e){if(e instanceof RangeError)throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\";throw e}return g.length-1},lr=(e,r)=>{g.set(e,r),nr[e]=g.get(e)},e=(M.createPreloadedFile=(t,n,e,o,a,i,s,l,c,u)=>{var d=n?O.resolve(T.join2(t,n)):t,f=function(e){for(var r=e;;){if(!E[e])return e;e=r+Math.random()}}(\"cp \"+d);function r(e){function r(e){u?.(),l||Oe(t,n,e,o,a,c),i?.(),ne(f)}De(e,d,r,()=>{s?.(),ne(f)})||r(e)}te(f),\"string\"==typeof e?Te(e).then(r,s):r(e)},M.staticInit(),i.noExitRuntime&&(me=i.noExitRuntime),i.preloadPlugins&&(Ae=i.preloadPlugins),i.print&&(f=i.print),i.printErr&&(l=i.printErr),i.wasmBinary&&(V=i.wasmBinary),\"fetchSettings\");Object.getOwnPropertyDescriptor(i,e)&&y(`\\`Module.${e}\\` was supplied but \\`${e}\\` not included in INCOMING_MODULE_JS_API`),i.arguments&&(G=i.arguments),i.thisProgram&&(H=i.thisProgram),_(void 0===i.memoryInitializerPrefixURL,\"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.pthreadMainPrefixURL,\"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.cdInitializerPrefixURL,\"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.filePackagePrefixURL,\"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\"),_(void 0===i.read,\"Module.read option was removed\"),_(void 0===i.readAsync,\"Module.readAsync option was removed (modify readAsync in JS)\"),_(void 0===i.readBinary,\"Module.readBinary option was removed (modify readBinary in JS)\"),_(void 0===i.setWindowTitle,\"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)\"),_(void 0===i.TOTAL_MEMORY,\"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\"),_(void 0===i.ENVIRONMENT,\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)\"),_(void 0===i.STACK_SIZE,\"STACK_SIZE can no longer be set at runtime.  Use -sSTACK_SIZE at link time\"),_(void 0===i.wasmMemory,\"Use of `wasmMemory` detected.  Use -sIMPORTED_MEMORY to define wasmMemory externally\"),_(void 0===i.INITIAL_MEMORY,\"Detected runtime INITIAL_MEMORY setting.  Use -sIMPORTED_MEMORY to define wasmMemory dynamically\"),i.callMain=vr,i.ccall=(e,r,t,n,o)=>{var a={string:e=>{var r=0;return r=null!=e&&0!==e?Ze(e):r},array:e=>{var r=Je(e.length);return er(e,r),r}};var e=Qe(e),i=[],s=0;if(_(\"array\"!==r,'Return type should not be \"array\".'),n)for(var l=0;l<n.length;l++){var c=a[t[l]];c?(0===s&&(s=_e()),i[l]=c(n[l])):i[l]=n[l]}e=e(...i);return e=e,0!==s&&he(s),e=e,\"string\"===r?k(e):\"boolean\"===r?Boolean(e):e},i.addFunction=(r,t)=>{_(void 0!==r);var n=ar(r);if(n)return n;n=sr();try{lr(n,r)}catch(e){if(!(e instanceof TypeError))throw e;_(void 0!==t,\"Missing signature argument to addFunction: \"+r);t=tr(r,t);lr(n,t)}return v.set(r,n),n},i.FS=M,[\"writeI53ToI64\",\"writeI53ToI64Clamped\",\"writeI53ToI64Signaling\",\"writeI53ToU64Clamped\",\"writeI53ToU64Signaling\",\"readI53FromU64\",\"convertI32PairToI53\",\"convertI32PairToI53Checked\",\"convertU32PairToI53\",\"getTempRet0\",\"setTempRet0\",\"inetPton4\",\"inetNtop4\",\"inetPton6\",\"inetNtop6\",\"readSockaddr\",\"writeSockaddr\",\"emscriptenLog\",\"readEmAsmArgs\",\"jstoi_q\",\"listenOnce\",\"autoResumeAudioContext\",\"getDynCaller\",\"dynCall\",\"runtimeKeepalivePush\",\"runtimeKeepalivePop\",\"callUserCallback\",\"maybeExit\",\"asmjsMangle\",\"HandleAllocator\",\"getNativeTypeSize\",\"addOnInit\",\"addOnPostCtor\",\"addOnPreMain\",\"addOnExit\",\"STACK_SIZE\",\"STACK_ALIGN\",\"POINTER_SIZE\",\"ASSERTIONS\",\"cwrap\",\"removeFunction\",\"reallyNegative\",\"unSign\",\"strLen\",\"reSign\",\"formatString\",\"intArrayToString\",\"AsciiToString\",\"stringToAscii\",\"UTF16ToString\",\"stringToUTF16\",\"lengthBytesUTF16\",\"UTF32ToString\",\"stringToUTF32\",\"lengthBytesUTF32\",\"stringToNewUTF8\",\"registerKeyEventCallback\",\"maybeCStringToJsString\",\"findEventTarget\",\"getBoundingClientRect\",\"fillMouseEventData\",\"registerMouseEventCallback\",\"registerWheelEventCallback\",\"registerUiEventCallback\",\"registerFocusEventCallback\",\"fillDeviceOrientationEventData\",\"registerDeviceOrientationEventCallback\",\"fillDeviceMotionEventData\",\"registerDeviceMotionEventCallback\",\"screenOrientation\",\"fillOrientationChangeEventData\",\"registerOrientationChangeEventCallback\",\"fillFullscreenChangeEventData\",\"registerFullscreenChangeEventCallback\",\"JSEvents_requestFullscreen\",\"JSEvents_resizeCanvasForFullscreen\",\"registerRestoreOldStyle\",\"hideEverythingExceptGivenElement\",\"restoreHiddenElements\",\"setLetterbox\",\"softFullscreenResizeWebGLRenderTarget\",\"doRequestFullscreen\",\"fillPointerlockChangeEventData\",\"registerPointerlockChangeEventCallback\",\"registerPointerlockErrorEventCallback\",\"requestPointerLock\",\"fillVisibilityChangeEventData\",\"registerVisibilityChangeEventCallback\",\"registerTouchEventCallback\",\"fillGamepadEventData\",\"registerGamepadEventCallback\",\"registerBeforeUnloadEventCallback\",\"fillBatteryEventData\",\"battery\",\"registerBatteryEventCallback\",\"setCanvasElementSize\",\"getCanvasElementSize\",\"jsStackTrace\",\"getCallstack\",\"convertPCtoSourceLocation\",\"wasiRightsToMuslOFlags\",\"wasiOFlagsToMuslOFlags\",\"safeSetTimeout\",\"setImmediateWrapped\",\"safeRequestAnimationFrame\",\"clearImmediateWrapped\",\"registerPostMainLoop\",\"registerPreMainLoop\",\"getPromise\",\"makePromise\",\"idsToPromises\",\"makePromiseCallback\",\"ExceptionInfo\",\"findMatchingCatch\",\"Browser_asyncPrepareDataCounter\",\"arraySum\",\"addDays\",\"getSocketFromFD\",\"getSocketAddress\",\"FS_mkdirTree\",\"_setNetworkCallback\",\"heapObjectForWebGLType\",\"toTypedArrayIndex\",\"webgl_enable_ANGLE_instanced_arrays\",\"webgl_enable_OES_vertex_array_object\",\"webgl_enable_WEBGL_draw_buffers\",\"webgl_enable_WEBGL_multi_draw\",\"webgl_enable_EXT_polygon_offset_clamp\",\"webgl_enable_EXT_clip_control\",\"webgl_enable_WEBGL_polygon_mode\",\"emscriptenWebGLGet\",\"computeUnpackAlignedImageSize\",\"colorChannelsInGlTextureFormat\",\"emscriptenWebGLGetTexPixelData\",\"emscriptenWebGLGetUniform\",\"webglGetUniformLocation\",\"webglPrepareUniformLocationsBeforeFirstUse\",\"webglGetLeftBracePos\",\"emscriptenWebGLGetVertexAttrib\",\"__glGetActiveAttribOrUniform\",\"writeGLArray\",\"registerWebGlEventCallback\",\"runAndAbortIfError\",\"ALLOC_NORMAL\",\"ALLOC_STACK\",\"allocate\",\"writeStringToMemory\",\"writeAsciiToMemory\",\"demangle\",\"stackTrace\"].forEach(function(e){Z(e)}),[\"run\",\"addRunDependency\",\"removeRunDependency\",\"out\",\"err\",\"abort\",\"wasmMemory\",\"wasmExports\",\"HEAPF32\",\"HEAPF64\",\"HEAP8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAP64\",\"HEAPU64\",\"writeStackCookie\",\"checkStackCookie\",\"readI53FromI64\",\"INT53_MAX\",\"INT53_MIN\",\"bigintToI53Checked\",\"stackSave\",\"stackRestore\",\"stackAlloc\",\"ptrToString\",\"zeroMemory\",\"exitJS\",\"getHeapMax\",\"growMemory\",\"ENV\",\"ERRNO_CODES\",\"strError\",\"DNS\",\"Protocols\",\"Sockets\",\"timers\",\"warnOnce\",\"readEmAsmArgsArray\",\"getExecutableName\",\"handleException\",\"keepRuntimeAlive\",\"asyncLoad\",\"alignMemory\",\"mmapAlloc\",\"wasmTable\",\"noExitRuntime\",\"addOnPreRun\",\"addOnPostRun\",\"getCFunc\",\"uleb128Encode\",\"sigToWasmTypes\",\"generateFuncType\",\"convertJsFunctionToWasm\",\"freeTableIndexes\",\"functionsInTableMap\",\"getEmptyTableSlot\",\"updateTableMap\",\"getFunctionAddress\",\"setValue\",\"getValue\",\"PATH\",\"PATH_FS\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"UTF8ToString\",\"stringToUTF8Array\",\"stringToUTF8\",\"lengthBytesUTF8\",\"intArrayFromString\",\"UTF16Decoder\",\"stringToUTF8OnStack\",\"writeArrayToMemory\",\"JSEvents\",\"specialHTMLTargets\",\"findCanvasEventTarget\",\"currentFullscreenStrategy\",\"restoreOldWindowedStyle\",\"UNWIND_CACHE\",\"ExitStatus\",\"getEnvStrings\",\"checkWasiClock\",\"doReadv\",\"doWritev\",\"initRandomFill\",\"randomFill\",\"emSetImmediate\",\"emClearImmediate_deps\",\"emClearImmediate\",\"promiseMap\",\"uncaughtExceptionCount\",\"exceptionLast\",\"exceptionCaught\",\"Browser\",\"getPreloadedImageData__data\",\"wget\",\"MONTH_DAYS_REGULAR\",\"MONTH_DAYS_LEAP\",\"MONTH_DAYS_REGULAR_CUMULATIVE\",\"MONTH_DAYS_LEAP_CUMULATIVE\",\"isLeapYear\",\"ydayFromDate\",\"SYSCALLS\",\"preloadPlugins\",\"FS_createPreloadedFile\",\"FS_modeStringToFlags\",\"FS_getMode\",\"FS_stdin_getChar_buffer\",\"FS_stdin_getChar\",\"FS_unlink\",\"FS_createPath\",\"FS_createDevice\",\"FS_readFile\",\"FS_root\",\"FS_mounts\",\"FS_devices\",\"FS_streams\",\"FS_nextInode\",\"FS_nameTable\",\"FS_currentPath\",\"FS_initialized\",\"FS_ignorePermissions\",\"FS_filesystems\",\"FS_syncFSRequests\",\"FS_readFiles\",\"FS_lookupPath\",\"FS_getPath\",\"FS_hashName\",\"FS_hashAddNode\",\"FS_hashRemoveNode\",\"FS_lookupNode\",\"FS_createNode\",\"FS_destroyNode\",\"FS_isRoot\",\"FS_isMountpoint\",\"FS_isFile\",\"FS_isDir\",\"FS_isLink\",\"FS_isChrdev\",\"FS_isBlkdev\",\"FS_isFIFO\",\"FS_isSocket\",\"FS_flagsToPermissionString\",\"FS_nodePermissions\",\"FS_mayLookup\",\"FS_mayCreate\",\"FS_mayDelete\",\"FS_mayOpen\",\"FS_checkOpExists\",\"FS_nextfd\",\"FS_getStreamChecked\",\"FS_getStream\",\"FS_createStream\",\"FS_closeStream\",\"FS_dupStream\",\"FS_doSetAttr\",\"FS_chrdev_stream_ops\",\"FS_major\",\"FS_minor\",\"FS_makedev\",\"FS_registerDevice\",\"FS_getDevice\",\"FS_getMounts\",\"FS_syncfs\",\"FS_mount\",\"FS_unmount\",\"FS_lookup\",\"FS_mknod\",\"FS_statfs\",\"FS_statfsStream\",\"FS_statfsNode\",\"FS_create\",\"FS_mkdir\",\"FS_mkdev\",\"FS_symlink\",\"FS_rename\",\"FS_rmdir\",\"FS_readdir\",\"FS_readlink\",\"FS_stat\",\"FS_fstat\",\"FS_lstat\",\"FS_doChmod\",\"FS_chmod\",\"FS_lchmod\",\"FS_fchmod\",\"FS_doChown\",\"FS_chown\",\"FS_lchown\",\"FS_fchown\",\"FS_doTruncate\",\"FS_truncate\",\"FS_ftruncate\",\"FS_utime\",\"FS_open\",\"FS_close\",\"FS_isClosed\",\"FS_llseek\",\"FS_read\",\"FS_write\",\"FS_mmap\",\"FS_msync\",\"FS_ioctl\",\"FS_writeFile\",\"FS_cwd\",\"FS_chdir\",\"FS_createDefaultDirectories\",\"FS_createDefaultDevices\",\"FS_createSpecialDirectories\",\"FS_createStandardStreams\",\"FS_staticInit\",\"FS_init\",\"FS_quit\",\"FS_findObject\",\"FS_analyzePath\",\"FS_createFile\",\"FS_createDataFile\",\"FS_forceLoadFile\",\"FS_createLazyFile\",\"FS_absolutePath\",\"FS_createFolder\",\"FS_createLink\",\"FS_joinPath\",\"FS_mmapAlloc\",\"FS_standardizePath\",\"MEMFS\",\"TTY\",\"PIPEFS\",\"SOCKFS\",\"tempFixedLengthArray\",\"miniTempWebGLFloatBuffers\",\"miniTempWebGLIntBuffers\",\"GL\",\"AL\",\"GLUT\",\"EGL\",\"GLEW\",\"IDBStore\",\"SDL\",\"SDL_gfx\",\"allocateUTF8\",\"allocateUTF8OnStack\",\"print\",\"printErr\",\"jstoi_s\",\"WORKERFS\"].forEach(Z);var cr,r={__assert_fail:function(e,r,t,n){return r>>>=0,n>>>=0,y(`Assertion failed: ${k(e>>>=0)}, at: `+[r?k(r):\"unknown filename\",t,n?k(n):\"unknown function\"])},__syscall_chmod:function(e,r){e>>>=0;try{return e=R.getStr(e),M.chmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_faccessat:function(e,r,t,n){r>>>=0;try{var o,a;return(r=R.getStr(r),_(0===n||512==n),r=R.calculateAt(e,r),-8&t)?-28:(o=M.lookupPath(r,{follow:!0}).node)?(a=\"\",4&t&&(a+=\"r\"),2&t&&(a+=\"w\"),1&t&&(a+=\"x\"),a&&M.nodePermissions(o,a)?-2:0):-44}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchmod:function(e,r){try{return M.fchmod(e,r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fchown32:function(e,r,t){try{return M.fchown(e,r,t),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fcntl64:function(e,r,t){R.varargs=t>>>=0;try{var n=R.getStreamFromFD(e);switch(r){case 0:if((o=Re())<0)return-28;for(;M.streams[o];)o++;return M.dupStream(n,o).fd;case 1:case 2:return 0;case 3:return n.flags;case 4:var o=Re();return n.flags|=o,0;case 12:o=N();return p[o+0>>>1>>>0]=2,0;case 13:case 14:return 0}return-28}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_fstat64:function(e,r){r>>>=0;try{return R.writeStat(r,M.fstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ftruncate64:function(e,r){r=b(r);try{return isNaN(r)?61:(M.ftruncate(e,r),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_getcwd:function(e,r){e>>>=0,r>>>=0;try{var t,n;return 0===r?-28:(t=M.cwd(),r<(n=A(t)+1)?-68:(I(t,e,r),n))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_ioctl:function(e,r,t){R.varargs=t>>>=0;try{var n,o=R.getStreamFromFD(e);switch(r){case 21509:return o.tty?0:-59;case 21505:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcgets){var a=o.tty.ops.ioctl_tcgets(o),i=N();h[i>>>2>>>0]=a.c_iflag||0,h[i+4>>>2>>>0]=a.c_oflag||0,h[i+8>>>2>>>0]=a.c_cflag||0,h[i+12>>>2>>>0]=a.c_lflag||0;for(var s=0;s<32;s++)m[i+s+17>>>0]=a.c_cc[s]||0}return 0;case 21510:case 21511:case 21512:return o.tty?0:-59;case 21506:case 21507:case 21508:if(!o.tty)return-59;if(o.tty.ops.ioctl_tcsets){for(var i=N(),l=h[i>>>2>>>0],c=h[i+4>>>2>>>0],u=h[i+8>>>2>>>0],d=h[i+12>>>2>>>0],f=[],s=0;s<32;s++)f.push(m[i+s+17>>>0]);return o.tty.ops.ioctl_tcsets(o.tty,r,{c_iflag:l,c_oflag:c,c_cflag:u,c_lflag:d,c_cc:f})}return 0;case 21519:return o.tty?(i=N(),h[i>>>2>>>0]=0):-59;case 21520:return o.tty?-28:-59;case 21531:i=N();return M.ioctl(o,r,i);case 21523:return o.tty?(o.tty.ops.ioctl_tiocgwinsz&&(n=o.tty.ops.ioctl_tiocgwinsz(o.tty),i=N(),p[i>>>1>>>0]=n[0],p[i+2>>>1>>>0]=n[1]),0):-59;case 21524:case 21515:return o.tty?0:-59;default:return-28}}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_lstat64:function(e,r){e>>>=0,r>>>=0;try{return e=R.getStr(e),R.writeStat(r,M.lstat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_mkdirat:function(e,r,t){r>>>=0;try{return r=R.getStr(r),r=R.calculateAt(e,r),M.mkdir(r,t,0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_newfstatat:function(e,r,t,n){r>>>=0,t>>>=0;try{r=R.getStr(r);var o=256&n,a=4096&n;return _(!(n&=-6401),\"unknown flags in __syscall_newfstatat: \"+n),r=R.calculateAt(e,r,a),R.writeStat(t,o?M.lstat(r):M.stat(r))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_openat:function(e,r,t,n){r>>>=0,R.varargs=n>>>=0;try{r=R.getStr(r),r=R.calculateAt(e,r);var o=n?Re():0;return M.open(r,t,o).fd}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_readlinkat:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o,a,i;return(r=R.getStr(r),r=R.calculateAt(e,r),n<=0)?-28:(o=M.readlink(r),a=Math.min(n,A(o)),i=m[t+a>>>0],I(o,t,n+1),m[t+a>>>0]=i,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_rmdir:function(e){e>>>=0;try{return e=R.getStr(e),M.rmdir(e),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_stat64:function(e,r){e>>>=0,r>>>=0;try{return e=R.getStr(e),R.writeStat(r,M.stat(e))}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_unlinkat:function(e,r,t){r>>>=0;try{return r=R.getStr(r),r=R.calculateAt(e,r),0===t?M.unlink(r):512===t?M.rmdir(r):y(\"Invalid flags passed to unlinkat\"),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},__syscall_utimensat:function(e,r,t,n){r>>>=0,t>>>=0;try{r=R.getStr(r),_(0===n),r=R.calculateAt(e,r,!0);var o,a,i,s,l=Date.now();return null!==((s=t?(i=Ne(t),a=1073741823==(o=h[t+8>>>2>>>0])?l:1073741822==o?null:1e3*i+o/1e6,i=Ne(t+=16),1073741823==(o=h[t+8>>>2>>>0])?l:1073741822==o?null:1e3*i+o/1e6):a=l)??a)&&M.utime(r,a,s),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_abort_js:()=>y(\"native code called abort()\"),_gmtime_js:function(e,r){e=b(e),r>>>=0;var e=new Date(1e3*e),t=(h[r>>>2>>>0]=e.getUTCSeconds(),h[r+4>>>2>>>0]=e.getUTCMinutes(),h[r+8>>>2>>>0]=e.getUTCHours(),h[r+12>>>2>>>0]=e.getUTCDate(),h[r+16>>>2>>>0]=e.getUTCMonth(),h[r+20>>>2>>>0]=e.getUTCFullYear()-1900,h[r+24>>>2>>>0]=e.getUTCDay(),Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0)),e=(e.getTime()-t)/864e5|0;h[r+28>>>2>>>0]=e},_localtime_js:function(e,r){e=b(e),r>>>=0;var e=new Date(1e3*e),t=(h[r>>>2>>>0]=e.getSeconds(),h[r+4>>>2>>>0]=e.getMinutes(),h[r+8>>>2>>>0]=e.getHours(),h[r+12>>>2>>>0]=e.getDate(),h[r+16>>>2>>>0]=e.getMonth(),h[r+20>>>2>>>0]=e.getFullYear()-1900,h[r+24>>>2>>>0]=e.getDay(),0|Le(e)),t=(h[r+28>>>2>>>0]=t,h[r+36>>>2>>>0]=-60*e.getTimezoneOffset(),new Date(e.getFullYear(),0,1)),n=new Date(e.getFullYear(),6,1).getTimezoneOffset(),t=t.getTimezoneOffset(),e=0|(n!=t&&e.getTimezoneOffset()==Math.min(t,n));h[r+32>>>2>>>0]=e},_mmap_js:function(e,r,t,n,o,a,i){e>>>=0,o=b(o),a>>>=0,i>>>=0;try{var s,l,c;return isNaN(o)?61:(s=R.getStreamFromFD(n),c=(l=M.mmap(s,e,o,r,t)).ptr,h[a>>>2>>>0]=l.allocated,d[i>>>2>>>0]=c,0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_munmap_js:function(e,r,t,n,o,a){e>>>=0,r>>>=0,a=b(a);try{var i=R.getStreamFromFD(o);2&t&&R.doMsync(e,i,r,n,a)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return-e.errno}},_timegm_js:function(e){e>>>=0;r=Date.UTC(h[e+20>>>2>>>0]+1900,h[e+16>>>2>>>0],h[e+12>>>2>>>0],h[e+8>>>2>>>0],h[e+4>>>2>>>0],h[e>>>2>>>0],0),r=new Date(r),h[e+24>>>2>>>0]=r.getUTCDay(),t=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),t=(r.getTime()-t)/864e5|0,h[e+28>>>2>>>0]=t;var r,t,e=r.getTime()/1e3;return BigInt(e)},_tzset_js:function(e,r,t,n){e>>>=0,r>>>=0,t>>>=0,n>>>=0;var o=(new Date).getFullYear(),a=new Date(o,0,1),o=new Date(o,6,1),a=a.getTimezoneOffset(),o=o.getTimezoneOffset(),i=Math.max(a,o),e=(d[e>>>2>>>0]=60*i,h[r>>>2>>>0]=Number(a!=o),e=>{var r=0<=e?\"-\":\"+\",e=Math.abs(e);return\"UTC\"+r+String(Math.floor(e/60)).padStart(2,\"0\")+String(e%60).padStart(2,\"0\")}),i=e(a),r=e(o);_(i),_(r),_(A(i)<=16,`timezone name truncated to fit in TZNAME_MAX (${i})`),_(A(r)<=16,`timezone name truncated to fit in TZNAME_MAX (${r})`),o<a?(I(i,t,17),I(r,n,17)):(I(i,n,17),I(r,t,17))},clock_time_get:function(e,r,t){return t>>>=0,Ue(e)?(e=(0===e?je:xe)(),e=Math.round(1e3*e*1e3),a[t>>>3]=BigInt(e),0):28},emscripten_date_now:je,emscripten_err:function(e){return l(k(e>>>=0))},emscripten_get_heap_max:function(){return ze()},emscripten_get_now:xe,emscripten_resize_heap:function(e){var r=s.length,t=(_(r<(e>>>=0)),ze());if(t<e)l(`Cannot enlarge memory, requested ${e} bytes, but the limit is ${t} bytes!`);else{for(var n=1;n<=4;n*=2){var o=r*(1+.2/n),o=Math.min(o,e+100663296),a=Math.min(t,Fe(Math.max(e,o),65536));if(Be(a))return!0}l(`Failed to grow the heap from ${r} bytes to ${a} bytes, not enough memory!`)}return!1},environ_get:function(e,r){e>>>=0,r>>>=0;var t,n=0,o=0;for(t of He()){var a=r+n;d[e+o>>>2>>>0]=a,n+=I(t,a,1/0)+1,o+=4}return 0},environ_sizes_get:function(e,r){e>>>=0,r>>>=0;var t,n=He(),o=(d[e>>>2>>>0]=n.length,0);for(t of n)o+=A(t)+1;return d[r>>>2>>>0]=o,0},exit:B,fd_close:function(e){try{var r=R.getStreamFromFD(e);return M.close(r),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_fdstat_get:function(e,r){r>>>=0;try{var t=R.getStreamFromFD(e),n=t.tty?2:M.isDir(t.mode)?3:M.isLink(t.mode)?7:4;return m[r>>>0]=n,p[r+2>>>1>>>0]=0,a[r+8>>>3]=BigInt(0),a[r+16>>>3]=BigInt(0),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_read:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o=R.getStreamFromFD(e),a=Ke(o,r,t);return d[n>>>2>>>0]=a,0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_seek:function(e,r,t,n){r=b(r),n>>>=0;try{var o;return isNaN(r)?61:(o=R.getStreamFromFD(e),M.llseek(o,r,t),a[n>>>3]=BigInt(o.position),o.getdents&&0===r&&0===t&&(o.getdents=null),0)}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_sync:function(e){try{var r=R.getStreamFromFD(e);return r.stream_ops?.fsync?r.stream_ops.fsync(r):0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},fd_write:function(e,r,t,n){r>>>=0,t>>>=0,n>>>=0;try{var o=R.getStreamFromFD(e),a=Xe(o,r,t);return d[n>>>2>>>0]=a,0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}},random_get:function(e,r){e>>>=0,r>>>=0;try{return ye(s.subarray(e>>>0,e+r>>>0)),0}catch(e){if(void 0===M||\"ErrnoError\"!==e.name)throw e;return e.errno}}},C=(te(\"wasm-instantiate\"),cr={env:r,wasi_snapshot_preview1:r},i.instantiateWasm?new Promise((t,r)=>{try{i.instantiateWasm(cr,(e,r)=>{t(ur(e))})}catch(e){l(\"Module.instantiateWasm callback failed with error: \"+e),r(e)}}):ur(ie(ee??=ae(),cr)[0]));function ur(e){var r;return C=e.exports,e=C,e=Object.assign({},e),r=e=>()=>e()>>>0,e.strerror=(r=>e=>r(e)>>>0)(e.strerror),e.emscripten_stack_get_end=r(e.emscripten_stack_get_end),e.emscripten_stack_get_base=r(e.emscripten_stack_get_base),e.emscripten_builtin_memalign=(t=>(e,r)=>t(e,r)>>>0)(e.emscripten_builtin_memalign),e._emscripten_stack_alloc=(r=>e=>r(e)>>>0)(e._emscripten_stack_alloc),e.emscripten_stack_get_current=r(e.emscripten_stack_get_current),_(Y=(C=e).memory,\"memory not found in wasm exports\"),Q(),_(g=C.__indirect_function_table,\"table not found in wasm exports\"),ne(\"wasm-instantiate\"),C}var dr,fr=i._main=oe(\"__main_argc_argv\",2),mr=oe(\"strerror\",1),pr=oe(\"fflush\",1),hr=C.emscripten_stack_get_end,_r=(C.emscripten_stack_get_base,oe(\"emscripten_builtin_memalign\",2)),wr=C.emscripten_stack_init,Er=(C.emscripten_stack_get_free,C._emscripten_stack_restore),yr=C._emscripten_stack_alloc,gr=C.emscripten_stack_get_current;function vr(e=[]){_(0==w,'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])'),_(void 0===de||0==de.length,\"cannot call main when preRun functions remain to be called\");var r=fr,t=(e.unshift(H),e.length),n=Je(4*(t+1)),o=n;e.forEach(e=>{d[o>>>2>>>0]=Ze(e),o+=4}),d[o>>>2>>>0]=0;try{var a=r(t,n);return Ye(a,!0),a}catch(e){return qe(e)}}function Sr(){var e;wr(),_(0==(3&(e=hr()))),0==e&&(e+=4),d[e>>>2>>>0]=34821223,d[e+4>>>2>>>0]=2310721022,d[0]=1668509029}if(i.preInit)for(\"function\"==typeof i.preInit&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();J(\"preInit\"),function e(r=G){if(0<w)re=e;else{if(Sr(),i.preRun)for(\"function\"==typeof i.preRun&&(i.preRun=[i.preRun]);i.preRun.length;)fe(i.preRun.shift());J(\"preRun\"),le(de),0<w?re=e:(i.setStatus?(i.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>i.setStatus(\"\"),1),t()},1)):t(),o())}function t(){if(_(!dr),dr=!0,i.calledRun=!0,!n){if(_(!X),X=!0,o(),i.noFSInit||M.initialized||M.init(),C.__wasm_call_ctors(),M.ignorePermissions=!1,o(),x(i),i.onRuntimeInitialized?.(),J(\"onRuntimeInitialized\"),i.noInitialRun||vr(r),o(),i.postRun)for(\"function\"==typeof i.postRun&&(i.postRun=[i.postRun]);i.postRun.length;)ue(i.postRun.shift());J(\"postRun\"),le(ce)}}}(),e=i;for(const br of Object.keys(i))br in L||Object.defineProperty(L,br,{configurable:!0,get(){y(`Access to module property ('${br}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return e}var r,Fr;return Y||(Y=1,(r=C).exports,Fr=\"undefined\"!=typeof document?document.currentScript?.src:void 0,r.exports=e,r.exports.default=e),C.exports}return C.exports,L(function(){if(!K){K=1,Object.defineProperty(t,\"__esModule\",{value:!0});var e=B;const a=G(),i=V(),s=e.__importDefault(X()),p=self;function o(e){p.postMessage({kind:\"updateStatus\",status:e})}function u(){p.postMessage({kind:\"jobCompleted\"})}function d(e,r){p.postMessage({kind:\"downloadFile\",buffer:e,name:r},[e.buffer])}function f(e){var r=(0,i.assertExists)(e.usedBytes);return new Uint8Array(e.contents.buffer,0,r)}async function m(e,r){const t=(0,a.defer)();var n=(0,s.default)({noInitialRun:!0,locateFile:e=>e,print:o,printErr:o,onRuntimeInitialized:()=>t.resolve()});return await t,n.FS.mkdir(\"/fs\"),n.FS.mount((0,i.assertExists)(n.FS.filesystems.WORKERFS),{blobs:[{name:\"trace.proto\",data:e}]},\"/fs\"),o(\"Converting trace\"),n.callMain(r),o(\"Trace conversion completed\"),n}async function r(e,r){var t,n=\"/trace.json\",o=[\"json\"];void 0!==r&&o.push(\"--truncate\",r),o.push(\"/fs/trace.proto\",n);try{var a=await m(e,o),i=a.FS.lookupPath(n).node,s=i.contents.buffer,l=i.usedBytes,c=new Uint8Array(s,0,l);t=c,p.postMessage({kind:\"openTraceInLegacy\",buffer:t}),a.FS.unlink(n)}finally{u()}}p.onmessage=e=>{self.addEventListener(\"error\",e=>(0,i.reportError)(e)),self.addEventListener(\"unhandledrejection\",e=>(0,i.reportError)(e)),(0,i.addErrorHandler)(e=>{e=e,p.postMessage({kind:\"error\",error:e})});e=e.data;if(function(e){if(\"ConvertTraceAndDownload\"===e.kind){if(void 0===e.trace)throw new Error(\"ConvertTraceAndDownloadArgs missing trace\");if(\"json\"!==e.format&&\"systrace\"!==e.format)throw new Error(\"ConvertTraceAndDownloadArgs has bad format\");return 1}}(e))!async function(e,r,t){var n=\"/trace.json\",o=[r];void 0!==t&&o.push(\"--truncate\",t),o.push(\"/fs/trace.proto\",n);try{var a=await m(e,o);d(f(a.FS.lookupPath(n).node),\"trace.\"+r),a.FS.unlink(n)}finally{u()}}(e.trace,e.format,e.truncate);else if(\"ConvertTraceAndOpenInLegacy\"===e.kind)r(e.trace,e.truncate);else{if(\"ConvertTraceToPprof\"!==e.kind)throw new Error(\"Unknown method call \"+JSON.stringify(e));!async function(e,r,t){t=[\"profile\",\"--pid\",\"\"+r,\"--timestamps\",\"\"+t,\"/fs/trace.proto\"];try{var n=await m(e,t),o=Object.keys(n.FS.lookupPath(\"/tmp/\").node.contents)[0],a=n.FS.lookupPath(\"/tmp/\"+o).node.contents,i=Object.keys(a);for(let e=0;e<i.length;++e){var s=i[e],l=n.FS.lookupPath(`/tmp/${o}/`+s).node,c=`/heap_dump.${e}.${r}.pb`;d(f(l),c)}}finally{u()}}(e.trace,e.pid,e.ts)}}}return t}())}();\n//# sourceMappingURL=traceconv_bundle.js.map\n"
  },
  {
    "path": "tests/__init__.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport os\nimport sys\n\nif os.getenv(\"GITHUB_ACTIONS\") or os.getenv(\"ENABLE_COREDUMPY\"):\n    try:\n        import coredumpy\n\n        coredumpy.patch_unittest(directory=os.getenv(\"COREDUMPY_DUMP_DIR\", \"./\"))\n    except ImportError:\n        pass\n"
  },
  {
    "path": "tests/base_tmpl.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport gc\nimport io\nimport json\nimport logging\nimport os\nimport sys\nimport time\nfrom unittest import TestCase\n\nlogging.basicConfig(\n    level=logging.INFO,\n    format=\"%(asctime)s %(levelname)s: %(message)s\",\n)\n\n\nclass BaseTmpl(TestCase):\n    trace_test_time = os.getenv(\"GITHUB_ACTION\") and not os.getenv(\"COVERAGE_RUN\")\n    pkg_config = None\n\n    @classmethod\n    def setUpClass(cls):\n        if cls.trace_test_time:\n            cls._test_time_events = []\n\n    @classmethod\n    def tearDownClass(cls):\n        if cls.trace_test_time:\n            if os.path.exists(\"test_time_trace.json\"):\n                with open(\"test_time_trace.json\", \"r\") as f:\n                    trace = json.load(f)\n            else:\n                trace = {\"traceEvents\": []}\n            trace[\"traceEvents\"].extend(cls._test_time_events)\n\n            with open(\"test_time_trace.json\", \"w\") as f:\n                json.dump(trace, f)\n\n    def setUp(self):\n        logging.info(\"=\" * 60)\n        logging.info(f\"{self.id()} start\")\n        self.stdout = io.StringIO()\n        self.stdout_orig, sys.stdout = sys.stdout, self.stdout\n        if self.trace_test_time:\n            self._test_start_time = time.time()\n\n    def tearDown(self):\n        if self.trace_test_time:\n            test_duration = time.time() - self._test_start_time\n            self._test_time_events.append(\n                {\n                    \"name\": self.id(),\n                    \"cat\": \"test\",\n                    \"ph\": \"X\",\n                    \"ts\": self._test_start_time * 1e6,\n                    \"dur\": test_duration * 1e6,\n                }\n            )\n        sys.stdout = self.stdout_orig\n        logging.info(f\"{self.id()} finish\")\n        gc.collect()\n\n    def dbgPrint(self, *args, **kwargs):\n        print(*args, file=self.stdout_orig, **kwargs)\n\n    def getProcessNumber(self, data):\n        pids = set()\n        for event in data[\"traceEvents\"]:\n            if \"pid\" in event:\n                pids.add(event[\"pid\"])\n        return len(pids)\n\n    def assertEventNumber(self, data, expected_entries):\n        entries = [entry for entry in data[\"traceEvents\"] if entry[\"ph\"] != \"M\"]\n        entries_count = len(entries)\n        self.assertEqual(\n            entries_count,\n            expected_entries,\n            f\"Event number incorrect, {entries_count}(expected {expected_entries}) - {entries}\",\n        )\n\n    def functionInEvents(self, data, func_name):\n        for event in data[\"traceEvents\"]:\n            if event[\"ph\"] == \"X\" and func_name in event[\"name\"]:\n                return True\n        return False\n\n    def assertFunctionInEvents(self, data, func_name):\n        if not self.functionInEvents(data, func_name):\n            raise AssertionError(f\"Function {func_name} not found in trace events\")\n\n    def assertFunctionNotInEvents(self, data, func_name):\n        if self.functionInEvents(data, func_name):\n            raise AssertionError(f\"Function {func_name} found in trace events\")\n\n    def assertFileExists(self, path, timeout=None, msg=None):\n        err_msg = f\"file {path} does not exist!\"\n        if msg is not None:\n            err_msg = f\"file {path} does not exist! {msg}\"\n        if timeout is None:\n            if not os.path.exists(path):\n                raise AssertionError(err_msg)\n        else:\n            start = time.time()\n            while True:\n                if os.path.exists(path):\n                    return\n                elif time.time() - start > timeout:\n                    raise AssertionError(err_msg)\n                else:\n                    time.sleep(0.5)\n\n    def assertFileNotExist(self, path):\n        if os.path.exists(path):\n            raise AssertionError(f\"file {path} does exist!\")\n\n    def assertTrueTimeout(self, func, timeout):\n        start = time.time()\n        while True:\n            try:\n                func()\n                break\n            except AssertionError as e:\n                if time.time() - start > timeout:\n                    raise e\n"
  },
  {
    "path": "tests/cmdline_tmpl.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport json\nimport logging\nimport os\nimport shutil\nimport signal\nimport subprocess\nimport sys\nimport textwrap\nimport time\nfrom typing import Optional\n\nimport psutil\n\nfrom .base_tmpl import BaseTmpl\n\nfile_fib = \"\"\"\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\nfib(5)\n\"\"\"\n\n\nclass CmdlineTmpl(BaseTmpl):\n    def build_script(self, script, name=\"cmdline_test.py\"):\n        with open(name, \"w\") as f:\n            f.write(textwrap.dedent(script))\n\n    def cleanup(self, output_file=\"result.json\", script_name=\"cmdline_test.py\"):\n        if os.path.exists(script_name):\n            os.remove(script_name)\n        if output_file:\n            if type(output_file) is list:\n                for f in output_file:\n                    os.remove(f)\n            elif type(output_file) is str:\n                if os.path.exists(output_file):\n                    if os.path.isdir(output_file):\n                        shutil.rmtree(output_file)\n                    elif os.path.isfile(output_file):\n                        os.remove(output_file)\n            else:\n                raise Exception(\"Unexpected output file argument\")\n\n    def run_cmd(self, cmd_list, timeout=60, wait=None, send_signal=None):\n        p = subprocess.Popen(\n            cmd_list,\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n            env={\"PYTHONFAULTHANDLER\": \"1\", **os.environ},\n        )\n        if isinstance(wait, str):\n            while True:\n                line = p.stdout.readline().decode(\"utf-8\")\n                if wait in line:\n                    time.sleep(0.5)\n                    break\n        elif isinstance(wait, (int, float)):\n            time.sleep(wait)\n\n        if send_signal is not None:\n            p.send_signal(send_signal)\n\n        try:\n            stdout, stderr = p.communicate(timeout=timeout)\n            p.stdout.close()\n            p.stderr.close()\n            p.stdout, p.stderr = stdout, stderr\n        except subprocess.TimeoutExpired:\n            if os.getenv(\"GITHUB_ACTIONS\") and sys.version_info < (3, 13):\n                for proc in [p] + psutil.Process(p.pid).children(recursive=True):\n                    logging.error(f\"Child process {proc.pid} info:\")\n                    proc_info = subprocess.check_output(\n                        [\"pystack\", \"remote\", str(proc.pid)]\n                    ).decode(\"utf-8\")\n                    logging.error(proc_info)\n            if sys.platform == \"win32\":\n                p.terminate()\n            else:\n                # Trigger fault handler\n                p.send_signal(signal.SIGILL)\n            try:\n                stdout, stderr = p.communicate(timeout=10)\n                logging.error(\"Timeout!\")\n                logging.error(f\"stdout: {stdout.decode('utf-8')}\")\n                logging.error(f\"stderr: {stderr.decode('utf-8')}\")\n            except subprocess.TimeoutExpired:\n                p.kill()\n                p.wait()\n            finally:\n                p.stdout.close()\n                p.stderr.close()\n                raise\n\n        return p\n\n    def template(\n        self,\n        cmd_list,\n        expected_output_file: Optional[str] = \"result.json\",\n        success=True,\n        script=file_fib,\n        script_name=\"cmdline_test.py\",\n        expected_entries=None,\n        expected_stdout=None,\n        expected_stderr=None,\n        cleanup=True,\n        check_func=None,\n        concurrency=None,\n        send_sig=None,\n    ):\n        assert \"python\" not in cmd_list, (\n            \"Do not use unqualified 'python' to launch intrepreter. Passing sys.executable is the recommended way.\"\n        )\n        if os.getenv(\"COVERAGE_RUN\"):\n            if \"viztracer\" in cmd_list:\n                idx = cmd_list.index(\"viztracer\")\n                if not concurrency:\n                    cmd_list = [\n                        \"coverage\",\n                        \"run\",\n                        \"--source\",\n                        \"viztracer\",\n                        \"--parallel-mode\",\n                        \"-m\",\n                    ] + cmd_list[idx:]\n                elif concurrency == \"multiprocessing\":\n                    # Specification needs to be in config file\n                    cmd_list = [\n                        \"coverage\",\n                        \"run\",\n                        \"--concurrency=multiprocessing\",\n                        \"-m\",\n                    ] + cmd_list[idx:]\n            elif \"vizviewer\" in cmd_list:\n                idx = cmd_list.index(\"vizviewer\")\n                cmd_list = (\n                    [\n                        \"coverage\",\n                        \"run\",\n                        \"--source\",\n                        \"viztracer\",\n                        \"--parallel-mode\",\n                        \"-m\",\n                    ]\n                    + [\"viztracer.viewer\"]\n                    + cmd_list[idx + 1 :]\n                )\n            elif sys.executable in cmd_list:\n                idx = cmd_list.index(sys.executable)\n                cmd_list = [\n                    \"coverage\",\n                    \"run\",\n                    \"--source\",\n                    \"viztracer\",\n                    \"--parallel-mode\",\n                ] + cmd_list[idx + 1 :]\n\n        if script:\n            self.build_script(script, script_name)\n        if send_sig is not None:\n            if isinstance(send_sig, tuple):\n                sig, wait = send_sig\n            else:\n                sig = send_sig\n                if os.getenv(\"GITHUB_ACTIONS\"):\n                    # github action is slower\n                    wait = 5\n                else:\n                    wait = 2\n            result = self.run_cmd(cmd_list, wait=wait, send_signal=sig)\n            if sys.platform == \"win32\":\n                # If we are on win32, we can't get anything useful from\n                # terminating the process\n                return None\n        else:\n            if os.getenv(\"COVERAGE_RUN\"):\n                timeout = 90\n            else:\n                timeout = 60\n            result = self.run_cmd(cmd_list, timeout=timeout)\n        expected = success ^ (result.returncode != 0)\n        if not expected:\n            logging.error(f\"return code: {result.returncode}\")\n            logging.error(f\"stdout:\\n{result.stdout.decode('utf-8')}\")\n            logging.error(f\"stderr:\\n{result.stderr.decode('utf-8')}\")\n        self.assertTrue(expected)\n        if expected:\n            if success and expected_output_file:\n                if type(expected_output_file) is list:\n                    for f in expected_output_file:\n                        self.assertFileExists(f)\n                elif type(expected_output_file) is str:\n                    self.assertFileExists(expected_output_file)\n\n            if success and expected_entries:\n                assert (\n                    type(expected_output_file) is str\n                    and expected_output_file.split(\".\")[-1] == \"json\"\n                )\n                with open(expected_output_file) as f:\n                    data = json.load(f)\n                    self.assertEventNumber(data, expected_entries)\n\n            if expected_stdout is not None:\n                self.assertRegex(result.stdout.decode(\"utf-8\"), expected_stdout)\n\n            if expected_stderr is not None:\n                self.assertRegex(result.stderr.decode(\"utf-8\"), expected_stderr)\n\n            if check_func:\n                if isinstance(expected_output_file, str):\n                    files = [expected_output_file]\n                elif isinstance(expected_output_file, list):\n                    files = expected_output_file\n                elif expected_output_file is not None:\n                    assert False, \"Unexpected type for expected_output_file\"\n                for file in files:\n                    with open(file) as f:\n                        data = json.load(f)\n                        check_func(data)\n\n        if cleanup:\n            self.cleanup(output_file=expected_output_file, script_name=script_name)\n        return result\n"
  },
  {
    "path": "tests/data/fib.py",
    "content": "def fib(n):\n    if n < 2:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n"
  },
  {
    "path": "tests/data/vdb_basic.py",
    "content": "from viztracer import VizTracer\nfrom viztracer.vizcounter import VizCounter\nfrom viztracer.vizobject import VizObject\n\n\ndef h(a):\n    counter.a = a\n    ob.b = 3\n    return 1 / (a - 3)\n\n\ndef g(a, b):\n    a += h(a)\n    b += 3\n\n\ndef f(a, b):\n    a = a + 2\n    ob.s = str(b)\n    g(a + 1, b * 2)\n    h(36)\n\n\ndef t(a):\n    f(a + 1, a + 2)\n    a += 3\n    f(a + 5, 2)\n\n\ntracer = VizTracer()\ncounter = VizCounter(tracer, \"a\")\nob = VizObject(tracer, \"b\")\ntracer.start()\nt(3)\ntracer.stop()\ntracer.save(\"vdb_basic.json\")\n"
  },
  {
    "path": "tests/data/vdb_multithread.py",
    "content": "import threading\nimport time\n\nfrom viztracer import VizTracer, ignore_function\n\n\n@ignore_function\ndef ig(n):\n    if n < 2:\n        return 1\n    return ig(n - 1) + ig(n - 2)\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    time.sleep(0.0000001)\n    return fib(n - 1) + fib(n - 2)\n\n\nclass MyThread(threading.Thread):\n    def run(self):\n        fib(7)\n\n\ntracer = VizTracer(verbose=1)\ntracer.start()\n\nthread1 = MyThread()\nthread2 = MyThread()\nthread3 = MyThread()\nthread4 = MyThread()\n\nthread1.start()\nthread2.start()\nthread3.start()\nthread4.start()\n\nthreads = [thread1, thread2, thread3, thread4]\n\nfor thread in threads:\n    thread.join()\n\ntracer.stop()\ntracer.save(output_file=\"vdb_multithread.json\")\n"
  },
  {
    "path": "tests/modules/__init__.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n"
  },
  {
    "path": "tests/modules/dummy_vizplugin.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer.vizplugin import VizPluginBase\n\n\nclass DummyVizPlugin(VizPluginBase):\n    def support_version(self):\n        return \"0.10.5\"\n\n\ndef get_vizplugin(arg):\n    return DummyVizPlugin()\n"
  },
  {
    "path": "tests/modules/dummy_vizplugin_wrong.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer.vizplugin import VizPluginBase\n\n\nclass DummyVizPlugin(VizPluginBase):\n    pass\n\n\nget_vizplugin = 1\n"
  },
  {
    "path": "tests/modules/issue160.py",
    "content": "import subprocess\nimport sys\n\nsubprocess.run([sys.executable, \"-u\", \"-c\", \"lst=[]; lst.append(1)\"])\n"
  },
  {
    "path": "tests/modules/issue58.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport gc\nfrom multiprocessing import Pool\n\n\ndef pool_worker(item):\n    return {\"a\": 1}\n\n\ndef pool_indexer(path):\n    item_count = 0\n    with Pool(processes=4) as pool:\n        for _ in pool.imap(pool_worker, range(1, 200), chunksize=10):\n            item_count = item_count + 1\n\n\n# gc seems to cause SegFault with multithreading\n# Pool creates a couple of thread and it's failing the test\n# https://github.com/python/cpython/issues/101975\n\ngc.disable()\npool_indexer(10)\ngc.enable()\n"
  },
  {
    "path": "tests/modules/issue83.py",
    "content": "print(__name__)\n"
  },
  {
    "path": "tests/package_env.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport inspect\nimport os\nimport subprocess\nimport sys\nfrom contextlib import contextmanager\nfrom itertools import product\nfrom unittest import SkipTest\n\n\nclass PackageConfig:\n    def __init__(self, pkg_config):\n        self.pkg_config = pkg_config\n\n    def has(self, package):\n        for pkg in self.pkg_config:\n            if f\"~{package}\" in pkg:\n                return False\n            elif package in pkg:\n                return True\n        return False\n\n\ndef get_curr_packages():\n    freeze_process = subprocess.run(\n        [sys.executable, \"-m\", \"pip\", \"freeze\"], check=True, stdout=subprocess.PIPE\n    )\n    packages = freeze_process.stdout.decode(\"utf-8\").strip().splitlines()\n    return [pkg for pkg in packages if \"viztracer\" not in pkg]\n\n\n@contextmanager\ndef package_keeper():\n    orig_packages = get_curr_packages()\n    try:\n        yield orig_packages\n    finally:\n        curr_packages = get_curr_packages()\n        for pkg in curr_packages:\n            if pkg not in orig_packages:\n                subprocess.check_call(\n                    [sys.executable, \"-m\", \"pip\", \"uninstall\", \"-y\", pkg],\n                    stdout=subprocess.DEVNULL,\n                )\n        subprocess.check_call(\n            [sys.executable, \"-m\", \"pip\", \"install\", *orig_packages],\n            stdout=subprocess.DEVNULL,\n        )\n\n\ndef setup_env(pkg_matrix, orig_packages):\n    def pkg_key(pkg):\n        # Put the the config that already meets the requirement first\n        for package in orig_packages:\n            if pkg.startswith(\"~\") and pkg[1:] not in package:\n                return 0\n            elif pkg in package:\n                return 0\n        return 1\n\n    if isinstance(pkg_matrix[0], list):\n        pkg_config_iter = product(*pkg_matrix)\n    else:\n        pkg_matrix.sort(key=pkg_key)\n        pkg_config_iter = product(pkg_matrix)\n    for pkg_config in pkg_config_iter:\n        try:\n            for pkg in pkg_config:\n                if pkg.startswith(\"~\"):\n                    subprocess.check_call(\n                        [sys.executable, \"-m\", \"pip\", \"uninstall\", \"-y\", pkg[1:]],\n                        stdout=subprocess.DEVNULL,\n                    )\n                else:\n                    subprocess.check_call(\n                        [sys.executable, \"-m\", \"pip\", \"install\", pkg],\n                        stdout=subprocess.DEVNULL,\n                    )\n        except subprocess.CalledProcessError:\n            continue\n        yield PackageConfig(pkg_config)\n\n\ndef package_matrix(pkg_matrix):\n    def inner_func(func):\n        def wrapper(*args, **kwargs):\n            if os.getenv(\"GITHUB_ACTIONS\"):\n                with package_keeper() as orig_packages:\n                    for _ in setup_env(pkg_matrix, orig_packages):\n                        try:\n                            func(*args, **kwargs)\n                        except SkipTest:\n                            pass\n            else:\n                func(*args, **kwargs)\n\n        return wrapper\n\n    def inner_cls(cls):\n        if os.getenv(\"GITHUB_ACTIONS\"):\n\n            def new_run(self, result=None):\n                with package_keeper() as orig_packages:\n                    for pkg_config in setup_env(pkg_matrix, orig_packages):\n                        self.pkg_config = pkg_config\n                        self._run(result)\n                        self.pkg_config = None\n\n            cls._run = cls.run\n            cls.run = new_run\n        else:\n            cls.pkg_config = PackageConfig(get_curr_packages())\n        return cls\n\n    def inner(func_or_cls):\n        if not pkg_matrix:\n            return func_or_cls\n        elif inspect.isfunction(func_or_cls):\n            return inner_func(func_or_cls)\n        elif inspect.isclass(func_or_cls):\n            return inner_cls(func_or_cls)\n        else:\n            assert False\n\n    return inner\n"
  },
  {
    "path": "tests/test_basic.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport builtins\nimport json\nimport multiprocessing\nimport os\nimport shutil\nimport subprocess\nimport sys\nimport tempfile\nimport time\nimport unittest\n\nfrom viztracer import VizTracer, get_tracer, ignore_function, trace_and_save\n\nfrom .base_tmpl import BaseTmpl\n\n\ndef fib(n):\n    if n == 1 or n == 0:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n\n\nclass TestTracerBasic(BaseTmpl):\n    def test_construct(self):\n        def fib(n):\n            if n == 1 or n == 0:\n                return 1\n            return fib(n - 1) + fib(n - 2)\n\n        t = VizTracer()\n        t.verbose = 0\n        t.start()\n        fib(5)\n        t.stop()\n        t.parse()\n        self.assertEventNumber(t.data, 15)\n\n    def test_builtin_func(self):\n        import random\n\n        def fun(n):\n            for _ in range(n):\n                random.randrange(n)\n\n        t = VizTracer(ignore_c_function=True)\n        t.verbose = 0\n        t.start()\n        fun(10)\n        t.stop()\n        t.parse()\n        self.assertEventNumber(t.data, 21)\n\n    def test_clear(self):\n        def fib(n):\n            if n == 1 or n == 0:\n                return 1\n            return fib(n - 1) + fib(n - 2)\n\n        t = VizTracer()\n        t.verbose = 0\n        t.start()\n        fib(5)\n        t.stop()\n        t.clear()\n        t.parse()\n        self.assertEventNumber(t.data, 0)\n\n\nclass TestVizTracerBasic(BaseTmpl):\n    def test_run(self):\n        snap = VizTracer(verbose=0)\n        snap.run(\"import random; random.randrange(10)\", output_file=\"test_run.json\")\n        self.assertFileExists(\"test_run.json\")\n        os.remove(\"test_run.json\")\n\n    def test_with(self):\n        with VizTracer(output_file=\"test_with.json\", verbose=0) as _:\n            fib(10)\n        self.assertFileExists(\"test_with.json\")\n        os.remove(\"test_with.json\")\n\n        had_exception = False\n        try:\n            with VizTracer(output_file=\"test_with.json\", verbose=0):\n                _ = 1 / 0\n        except ZeroDivisionError:\n            had_exception = True\n        self.assertFileExists(\"test_with.json\")\n        os.remove(\"test_with.json\")\n        self.assertTrue(had_exception)\n\n    def test_name_with_class(self):\n        class A:\n            def f(self):\n                pass\n\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        A().f()\n        tracer.stop()\n        tracer.parse()\n        if sys.version_info >= (3, 11):\n            self.assertIn(\n                \"TestVizTracerBasic.test_name_with_class.<locals>.A.f\",\n                [e[\"name\"].split()[0] for e in tracer.data[\"traceEvents\"]],\n            )\n        else:\n            self.assertIn(\n                \"f\", [e[\"name\"].split()[0] for e in tracer.data[\"traceEvents\"]]\n            )\n\n    def test_tracer_entries(self):\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 10)\n\n    def test_unfinished_function(self):\n        def f():\n            tracer.stop()\n            tracer.parse()\n\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        f()\n        self.assertEventNumber(tracer.data, 1)\n        self.assertEqual(tracer.data[\"traceEvents\"][-1][\"ph\"], \"B\")\n\n    def test_save(self):\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        with tempfile.TemporaryDirectory() as tmpdir:\n            for file_path in [\n                [\"result.html\"],\n                [\"result2.json\"],\n                [\"new_dir\", \"result2.json\"],\n                [\"result3.gz\"],\n            ]:\n                path = os.path.join(tmpdir, *file_path)\n                tracer.start()\n                fib(5)\n                tracer.stop()\n                tracer.save(path)\n                self.assertFileExists(path)\n\n    def test_save_report(self):\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        with tempfile.TemporaryDirectory() as tmpdir:\n            pass\n        try:\n            path = os.path.join(tmpdir, \"result.json\")\n            tracer.save_report(path)\n            self.assertFileExists(path)\n        finally:\n            shutil.rmtree(tmpdir, ignore_errors=True)\n\n    def test_save_while_enabled(self):\n        tracer = VizTracer(tracer_entries=10)\n        with tempfile.TemporaryDirectory() as tmpdir:\n            tracer.start()\n            fib(5)\n            tracer.save(os.path.join(tmpdir, \"result.json\"))\n            tracer.clear()\n            fib(5)\n            tracer.stop()\n            tracer.parse()\n            self.assertEventNumber(tracer.data, 10)\n\n        tracer = VizTracer(tracer_entries=10, ignore_multiprocess=False)\n        with tempfile.TemporaryDirectory() as tmpdir:\n            tracer.start()\n            fib(5)\n            tracer.save(os.path.join(tmpdir, \"result.json\"))\n            tracer.clear()\n            fib(5)\n            tracer.stop()\n            tracer.parse()\n            self.assertEventNumber(tracer.data, 10)\n\n    def test_time_sanity(self):\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        start_real = time.perf_counter_ns() / 1000\n        start = tracer.getts()\n        time.sleep(0.3)\n        end = tracer.getts()\n        end_real = time.perf_counter_ns() / 1000\n        tracer.stop()\n        tracer.parse()\n        time_events = [\n            e for e in tracer.data[\"traceEvents\"] if e[\"name\"] == \"time.sleep\"\n        ]\n        self.assertEqual(len(time_events), 1)\n        self.assertAlmostEqual(time_events[0][\"dur\"], end - start, delta=0.003e6)\n        self.assertAlmostEqual(end - start, end_real - start_real, delta=0.003e6)\n\n    def test_sync_marker(self):\n        tracer = VizTracer()\n        tracer.start()\n        tracer.set_sync_marker()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        self.assertIn(\"sync_marker\", tracer.data[\"viztracer_metadata\"])\n\n\nclass TestInstant(BaseTmpl):\n    def test_addinstant(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        tracer.add_instant('instant - \"karma\": True')\n        tracer.add_instant(\"instant\", args={\"karma\": True})\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 2)\n\n    def test_invalid_scope(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        with self.assertRaises(ValueError):\n            tracer.add_instant('instant - \"karma\": True', scope=\"invalid\")\n        tracer.stop()\n        tracer.clear()\n\n\nclass TestFunctionArg(BaseTmpl):\n    def test_addfunctionarg(self):\n        def f(tracer):\n            tracer.add_func_args(\"hello\", \"world\")\n\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        f(tracer)\n        tracer.stop()\n        tracer.parse()\n        events = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] != \"M\"]\n        self.assertTrue(\"args\" in events[0] and \"hello\" in events[0][\"args\"])\n\n\nclass TestDecorator(BaseTmpl):\n    def test_pause_resume(self):\n        tracer = VizTracer(verbose=0)\n\n        def f():\n            pass\n\n        @ignore_function(tracer=tracer)\n        def ignore(n):\n            if n == 0:\n                return 1\n            return ignore(n - 1) + 1\n\n        tracer.start()\n        ignore(10)\n        f()\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 1)\n\n    def test_ignore_function_without_global_tracer(self):\n        @ignore_function\n        def f():\n            return\n\n        if \"__viz_tracer__\" in builtins.__dict__:\n            builtins.__dict__.pop(\"__viz_tracer__\")\n\n        tracer = VizTracer(register_global=False, verbose=0)\n\n        tracer.start()\n        with self.assertRaises(NameError):\n            f()\n\n    def test_trace_and_save(self):\n        if os.getenv(\"GITHUB_ACTIONS\"):\n            timeout = 60\n        else:\n            timeout = 20\n        with tempfile.TemporaryDirectory() as tmp_dir:\n\n            @trace_and_save(output_dir=tmp_dir, verbose=0)\n            def my_function(n):\n                fib(n)\n\n            for _ in range(3):\n                time.sleep(0.0001)\n                my_function(10)\n\n            def t():\n                self.assertEqual(\n                    len([f for f in os.listdir(tmp_dir) if f.endswith(\".json\")]), 3\n                )\n\n            self.assertTrueTimeout(\n                lambda: self.assertFalse(multiprocessing.active_children()), timeout\n            )\n            self.assertTrueTimeout(t, timeout)\n\n        with tempfile.TemporaryDirectory() as tmp_dir:\n\n            @trace_and_save(output_dir=os.path.join(tmp_dir, \"new_dir\"), verbose=0)\n            def cover_mkdir():\n                return\n\n            cover_mkdir()\n\n            def t():\n                self.assertEqual(len(os.listdir(os.path.join(tmp_dir, \"new_dir\"))), 1)\n\n            self.assertTrueTimeout(\n                lambda: self.assertFalse(multiprocessing.active_children()), timeout\n            )\n            self.assertTrueTimeout(t, timeout)\n\n        if sys.platform in [\"linux\", \"linux2\", \"darwin\"]:\n            # ls does not work on windows. Don't bother fixing it because it's just coverage test\n            @trace_and_save\n            def my_function2(n):\n                fib(n)\n\n            my_function2(10)\n\n            def t1():\n                a = subprocess.run(\n                    [\"ls result_my_function2*.json\"],\n                    shell=True,\n                    stdout=subprocess.PIPE,\n                    stderr=subprocess.PIPE,\n                )\n                self.assertEqual(a.returncode, 0)\n\n            self.assertTrueTimeout(t1, timeout)\n\n            def t2():\n                a = subprocess.run(\n                    [\"rm result_my_function2*.json\"],\n                    shell=True,\n                    stdout=subprocess.PIPE,\n                    stderr=subprocess.PIPE,\n                )\n                self.assertEqual(a.returncode, 0)\n\n            self.assertTrueTimeout(t2, timeout)\n\n\nclass TestLogPrint(BaseTmpl):\n    def test_log_print(self):\n        tracer = VizTracer(log_print=True, verbose=0)\n        tracer.start()\n        print(\"hello\")\n        print(\"hello\")\n        print(\"hello\")\n        print(\"hello\")\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 4)\n\n\nclass TestForkSave(BaseTmpl):\n    @unittest.skipUnless(\n        multiprocessing.get_start_method() == \"fork\", \"Fork save only works with fork\"\n    )\n    def test_basic(self):\n        def fib(n):\n            if n == 1 or n == 0:\n                return 1\n            return fib(n - 1) + fib(n - 2)\n\n        t = VizTracer(verbose=0)\n        processes = {}\n        for i in range(5, 10):\n            t.start()\n            fib(i)\n            t.stop()\n            t.parse()\n            processes[i] = t.fork_save(output_file=str(i) + \".json\")\n\n        expected = {\n            5: 15,\n            6: 25,\n            7: 41,\n            8: 67,\n            9: 109,\n        }\n        pid = None\n        for i in range(5, 10):\n            path = str(i) + \".json\"\n            processes[i].join()\n            self.assertFileExists(path, timeout=10)\n            with open(path) as f:\n                data = json.load(f)\n            os.remove(path)\n            self.assertEventNumber(data, expected[i])\n            if pid is None:\n                pid = data[\"traceEvents\"][0][\"pid\"]\n            else:\n                self.assertEqual(data[\"traceEvents\"][0][\"pid\"], pid)\n\n    @unittest.skipUnless(\n        multiprocessing.get_start_method() != \"fork\", \"Fork save only works with fork\"\n    )\n    def test_non_fork_platform(self):\n        tracer = VizTracer(verbose=0)\n        with self.assertRaises(RuntimeError):\n            tracer.fork_save(\"result.json\")\n\n\nclass TestGlobalTracer(BaseTmpl):\n    def test_get_tracer(self):\n        if \"__viz_tracer__\" in builtins.__dict__:\n            builtins.__dict__.pop(\"__viz_tracer__\")\n        with self.assertRaises(NameError):\n            _ = __viz_tracer__  # noqa: F821\n        self.assertIs(get_tracer(), None)\n        tracer = VizTracer(verbose=0)\n        builtins.__dict__[\"__viz_tracer__\"] = tracer\n        self.assertIs(get_tracer(), tracer)\n        builtins.__dict__.pop(\"__viz_tracer__\")\n"
  },
  {
    "path": "tests/test_cmdline.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport configparser\nimport importlib.util\nimport os\nimport re\nimport signal\nimport sys\nimport tempfile\nimport textwrap\nfrom contextlib import contextmanager\nfrom unittest.case import skipIf\n\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .package_env import package_matrix\n\nfile_c_function = \"\"\"\nlst = []\nlst.append(1)\n\"\"\"\n\n\nfile_main = \"\"\"\nif __name__ == '__main__':\n    lst = []\n    lst.append(1)\n\"\"\"\n\n\nfile_argv = \"\"\"\nimport sys\nassert(sys.argv)\n\"\"\"\n\n\nfile_gc = \"\"\"\nimport gc\nlst = []\ngc.collect()\n\"\"\"\n\n\nfile_exit = \"\"\"\nlst = []\nlst.append(1)\nexit(0)\n\"\"\"\n\n\nfile_log_var = \"\"\"\nclass Stub:\n    def __init__(self):\n        self.b = 0\n\ndef f1(a, *a2, a3, **a4):\n    return None\n\nfor a_in_for in [1,2]:\n    pass\n\n(a): int = 1\na = [1, 2]\nabc = 1\na[1] = 0\na[1] += 1\na = Stub()\na.b = 1\nabc = 2\nabc += 1\nabc: int = 1\na, abc = (1, 2)\nunrelated, *a = 1, 2, 3\n[abc, d] = 3, 4\nf1(2, 3, a3=4, test=5)\n\"\"\"\n\n\nfile_log_attr = \"\"\"\nclass Stub:\n    def __init__(self):\n        self.a = 0\n        self.b = 0\n        self.c = 0\n        self.alst = [1,2,3]\n\ns = Stub()\ns.a = [1, 2]\ns.alst[1] = 0\nlst = [s, 2]\nlst[0].a = 1\ns.b += 1\na, abc = (1, 2)\nunrelated, *s.a = 1, 2, 3\n[abc, d] = 3, 4\n\"\"\"\n\n\nfile_log_func_exec = \"\"\"\ndef a():\n    n = 2\n    n += 3\n\ndef aba():\n    __viz_tracer__.add_func_args(\"place\", \"holder\")\n    n2 = 3\n    n2 += 5\n\ndef b():\n    t = 0\n\na()\naba()\nb()\n\"\"\"\n\n\nfile_log_exception = \"\"\"\ntry:\n    raise Exception(\"lol\")\nexcept Exception:\n    pass\n\"\"\"\n\n\nfile_log_audit = \"\"\"\n# something viztracer does not use\nimport netrc\na = 0\nb = id(a)\n\"\"\"\n\n\nfile_ignore_function = \"\"\"\nfrom viztracer import ignore_function\n\n@ignore_function\ndef f():\n    return 1\n\ndef g():\n    return f()\n\ng()\n\"\"\"\n\n\nfile_log_async = \"\"\"\nimport asyncio\n\nasync def compute(x, y):\n    await asyncio.sleep(0.03)\n    return x + y\n\nasync def print_sum(x, y):\n    t1 =  asyncio.create_task(compute(x, y))\n    t2 = asyncio.create_task( compute(x+1, y) )\n\n    await t1\n    await t2\n\nloop = asyncio.new_event_loop()\nloop.run_until_complete(print_sum(1, 2))\nloop.close()\n\"\"\"\n\n\nfile_log_trio = \"\"\"\nimport trio\n\nasync def compute(x, y):\n    await trio.sleep(0.03)\n    return x + y\n\nasync def print_sum(x, y):\n    async with trio.open_nursery() as nursery:\n        nursery.start_soon(compute, x, y)\n        nursery.start_soon(compute, x+1, y)\n\ntrio.run(print_sum, 1, 2)\n\"\"\"\n\nfile_log_async_with_trio = \"\"\"\nimport asyncio\nimport trio\n\nasync def compute(x, y):\n    await asyncio.sleep(0.03)\n    return x + y\n\nasync def print_sum(x, y):\n    t1 =  asyncio.create_task(compute(x, y))\n    t2 = asyncio.create_task( compute(x+1, y) )\n\n    await t1\n    await t2\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(print_sum(1, 2))\nloop.close()\n\"\"\"\n\nfile_sanitize_function_name = \"\"\"\nimport jaxlib.mlir.dialects.builtin\nimport jaxlib.mlir.dialects.chlo\nimport jaxlib.mlir.dialects.mhlo\n\"\"\"\n\nfile_pid_suffix = \"\"\"\nimport os\nprint(os.getpid())\n\"\"\"\n\n\nclass TestCommandLineBasic(CmdlineTmpl):\n    def test_no_file(self):\n        result = self.template(\n            [sys.executable, \"-m\", \"viztracer\"], expected_output_file=None\n        )\n        result_stdout = result.stdout.decode(\"utf8\")\n        self.assertIn(\"help\", result_stdout)\n        #  Check for a few more arguments to ensure we hit the intended argumentParser\n        self.assertIn(\"--output_file\", result_stdout)\n        self.assertIn(\"--log_async\", result_stdout)\n        self.assertIn(\"--attach\", result_stdout)\n        self.assertIn(\"--plugins\", result_stdout)\n        self.assertIn(\"--rcfile\", result_stdout)\n\n    def test_help(self):\n        \"\"\"Test that all three options print the same help page\"\"\"\n        result = self.template(\n            [sys.executable, \"-m\", \"viztracer\"], expected_output_file=None\n        )\n        result_h = self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"-h\"], expected_output_file=None\n        )\n        result_help = self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"--help\"], expected_output_file=None\n        )\n\n        self.assertEqual(\n            result_h.stdout.decode(\"utf-8\"), result_help.stdout.decode(\"utf-8\")\n        )\n        self.assertEqual(result.stdout.decode(\"utf-8\"), result_h.stdout.decode(\"utf-8\"))\n\n    def test_run(self):\n        self.template([sys.executable, \"-m\", \"viztracer\", \"cmdline_test.py\"])\n        self.template([\"viztracer\", \"cmdline_test.py\"])\n\n    def test_cmd_string(self):\n        self.template([\"viztracer\", \"-c\", \"lst=[]; lst.append(1)\"], expected_entries=3)\n\n    @package_matrix(\n        [\"~orjson\", \"orjson\"] if \"free-threading\" not in sys.version else None\n    )\n    def test_outputfile(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"-o\", \"result.html\", \"cmdline_test.py\"],\n            expected_output_file=\"result.html\",\n        )\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"]\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"-o\",\n                \"result.json.gz\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json.gz\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--output_file\",\n                \"result.html\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.html\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--output_file\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--output_file\",\n                \"result with space.json\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result with space.json\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--output_file\",\n                \"result.json.gz\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json.gz\",\n        )\n        self.template(\n            [\"viztracer\", \"-o\", \"result.html\", \"cmdline_test.py\"],\n            expected_output_file=\"result.html\",\n        )\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n        )\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json.gz\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json.gz\",\n        )\n\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\", \"-o\", \"result.txt\"],\n            success=False,\n            expected_output_file=None,\n            expected_stdout=\"Only html, json and gz are supported\",\n        )\n\n    def test_unique_outputfile(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            self.template(\n                [\"viztracer\", \"--output_dir\", tmpdir, \"-u\", \"cmdline_test.py\"],\n                expected_output_file=None,\n            )\n            self.assertEqual(len(os.listdir(tmpdir)), 1)\n            self.assertRegex(\n                os.listdir(tmpdir)[0], r\"cmdline_test_\\d{8}_\\d{6}_\\d+\\.json\"\n            )\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            abspath = os.path.abspath(\"cmdline_test.py\")\n            self.template(\n                [\"viztracer\", \"--output_dir\", tmpdir, \"-u\", abspath],\n                expected_output_file=None,\n            )\n            self.assertEqual(len(os.listdir(tmpdir)), 1)\n            self.assertRegex(\n                os.listdir(tmpdir)[0], r\"cmdline_test_\\d{8}_\\d{6}_\\d+\\.json\"\n            )\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            self.template(\n                [\"viztracer\", \"--output_dir\", tmpdir, \"-u\", \"-m\", \"numbers\"],\n                expected_output_file=None,\n            )\n            self.assertEqual(len(os.listdir(tmpdir)), 1)\n            self.assertRegex(os.listdir(tmpdir)[0], r\"numbers_\\d{8}_\\d{6}_\\d+\\.json\")\n\n    def test_verbose(self):\n        result = self.template([sys.executable, \"-m\", \"viztracer\", \"cmdline_test.py\"])\n        self.assertTrue(\"Use the following command\" in result.stdout.decode(\"utf8\"))\n        result = self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"--quiet\", \"cmdline_test.py\"]\n        )\n        self.assertFalse(\"Use the following command\" in result.stdout.decode(\"utf8\"))\n\n    def test_max_stack_depth(self):\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--max_stack_depth\",\n                \"5\",\n                \"cmdline_test.py\",\n            ]\n        )\n        self.template([\"viztracer\", \"--max_stack_depth\", \"5\", \"cmdline_test.py\"])\n\n    def test_include_files(self):\n        result = self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--include_files\",\n                \"./abcd\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=None,\n        )\n        self.assertIn(\"help\", result.stdout.decode(\"utf8\"))\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"-o\",\n                \"result.json\",\n                \"--include_files\",\n                \"./\",\n                \"--run\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            expected_entries=17,\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"-o\",\n                \"result.json\",\n                \"--include_files\",\n                \"./\",\n                \"--\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            expected_entries=17,\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--include_files\",\n                \"./\",\n                \"--max_stack_depth\",\n                \"5\",\n                \"cmdline_test.py\",\n            ]\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--include_files\",\n                \"./abcd\",\n                \"--run\",\n                \"cmdline_test.py\",\n            ]\n        )\n\n    def test_exclude_files(self):\n        result = self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--exclude_files\",\n                \"./abcd\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=None,\n        )\n        self.assertIn(\"help\", result.stdout.decode(\"utf8\"))\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--exclude_files\",\n                \"./\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            expected_entries=1,\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--exclude_files\",\n                \"./abcd\",\n                \"--run\",\n                \"cmdline_test.py\",\n            ]\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--exclude_files\",\n                \"./abcd\",\n                \"--\",\n                \"cmdline_test.py\",\n            ]\n        )\n\n    def test_ignore_c_function(self):\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--ignore_c_function\",\n                \"cmdline_test.py\",\n            ],\n            script=file_c_function,\n        )\n\n    def test_log_func_retval(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"--log_func_retval\", \"cmdline_test.py\"],\n            script=file_c_function,\n        )\n\n    def test_log_func_args(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"--log_func_args\", \"cmdline_test.py\"]\n        )\n\n    def test_log_func_with_objprint(self):\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--log_func_args\",\n                \"--log_func_with_objprint\",\n                \"cmdline_test.py\",\n            ]\n        )\n\n    def test_minimize_memory(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"--minimize_memory\", \"cmdline_test.py\"]\n        )\n\n    def test_frozen_source(self):\n        script = \"import calendar\"\n\n        def check_func(data):\n            self.assertIn(\"<frozen importlib._bootstrap>\", data[\"file_info\"][\"files\"])\n            self.assertGreater(\n                len(data[\"file_info\"][\"files\"][\"<frozen importlib._bootstrap>\"]), 0\n            )\n\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"cmdline_test.py\"],\n            script=script,\n            check_func=check_func,\n        )\n\n    @package_matrix(\n        [\"~orjson\", \"orjson\"] if \"free-threading\" not in sys.version else None\n    )\n    def test_combine(self):\n        example_json_dir = os.path.join(\n            os.path.dirname(__file__), \"../\", \"example/json\"\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--combine\",\n                os.path.join(example_json_dir, \"multithread.json\"),\n                os.path.join(example_json_dir, \"different_sorts.json\"),\n            ],\n            expected_output_file=\"result.json\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"-o\",\n                \"my_result.html\",\n                \"--combine\",\n                os.path.join(example_json_dir, \"multithread.json\"),\n                os.path.join(example_json_dir, \"different_sorts.json\"),\n            ],\n            expected_output_file=\"my_result.html\",\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--align_combine\",\n                os.path.join(example_json_dir, \"multithread.json\"),\n                os.path.join(example_json_dir, \"different_sorts.json\"),\n            ],\n            expected_output_file=\"result.json\",\n        )\n\n    def test_set_sync_marker(self):\n        test_script = textwrap.dedent(\"\"\"\n            from viztracer import get_tracer\n\n            get_tracer().set_sync_marker()\n            get_tracer().set_sync_marker()\n\n        \"\"\")\n\n        def expect_sync_marker(data):\n            self.assertGreater(data[\"viztracer_metadata\"].get(\"sync_marker\"), 0)\n\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--ignore_frozen\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            expected_stderr=\"Synchronization marker already set\",\n            script=test_script,\n            check_func=expect_sync_marker,\n        )\n\n    def test_align_combine_sync_marker(self):\n        test_script = textwrap.dedent(\"\"\"\n            import random\n            import time\n            from viztracer import get_tracer\n\n            def test_func():\n                return 2 * 4\n\n            # should sleep from 50ms to 100ms\n            time.sleep(random.uniform(0.05, 0.1))\n\n            get_tracer().set_sync_marker()\n            test_func()\n        \"\"\")\n\n        def expect_aligned_to_sync_marker(data):\n            funcs = [\n                event\n                for event in data[\"traceEvents\"]\n                if \"ts\" in event and event[\"name\"].startswith(\"test_func\")\n            ]\n            self.assertEqual(len(funcs), 2)\n\n            # we expect that aligned events shifted not more than 1ms\n            aligned_diff = abs(funcs[1][\"ts\"] - funcs[0][\"ts\"])\n            self.assertLessEqual(aligned_diff, 1000.0, str(data))\n\n        for extra_args in [[], [\"--dump_raw\"]]:\n            with tempfile.TemporaryDirectory() as tmpdir:\n                res1_filename = os.path.join(tmpdir, \"res1.json\")\n                res2_filename = os.path.join(tmpdir, \"res2.json\")\n\n                common_cmd_line = [\n                    sys.executable,\n                    \"-m\",\n                    \"viztracer\",\n                    \"--ignore_frozen\",\n                ] + extra_args\n                self.template(\n                    common_cmd_line + [\"-o\", res1_filename, \"cmdline_test.py\"],\n                    expected_output_file=res1_filename,\n                    script=test_script,\n                    cleanup=False,\n                )\n                self.template(\n                    common_cmd_line + [\"-o\", res2_filename, \"cmdline_test.py\"],\n                    expected_output_file=res2_filename,\n                    script=test_script,\n                    cleanup=False,\n                )\n\n                self.template(\n                    [\n                        sys.executable,\n                        \"-m\",\n                        \"viztracer\",\n                        \"--align_combine\",\n                        res1_filename,\n                        res2_filename,\n                    ],\n                    expected_output_file=\"result.json\",\n                    check_func=expect_aligned_to_sync_marker,\n                )\n\n    def test_tracer_entries(self):\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--tracer_entries\",\n                \"1000\",\n                \"cmdline_test.py\",\n            ]\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--tracer_entries\",\n                \"50\",\n                \"cmdline_test.py\",\n            ]\n        )\n\n    def test_trace_self(self):\n        def check_func(data):\n            self.assertGreater(len(data[\"traceEvents\"]), 1000)\n\n        example_json_dir = os.path.join(\n            os.path.dirname(__file__), \"../\", \"example/json\"\n        )\n        if sys.platform == \"win32\":\n            self.template(\n                [\n                    \"viztracer\",\n                    \"--trace_self\",\n                    \"vizviewer\",\n                    \"--server_only\",\n                    os.path.join(example_json_dir, \"multithread.json\"),\n                ],\n                success=False,\n            )\n        else:\n            self.template(\n                [\n                    \"viztracer\",\n                    \"--trace_self\",\n                    \"vizviewer\",\n                    \"--server_only\",\n                    os.path.join(example_json_dir, \"multithread.json\"),\n                ],\n                send_sig=(signal.SIGTERM, \"Ctrl+C\"),\n                expected_output_file=\"result.json\",\n                check_func=check_func,\n            )\n\n    def test_min_duration(self):\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--min_duration\",\n                \"1s\",\n                \"cmdline_test.py\",\n            ],\n            expected_entries=0,\n        )\n        self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--min_duration\",\n                \"0.0.3s\",\n                \"cmdline_test.py\",\n            ],\n            success=False,\n        )\n\n    def test_pid_suffix(self):\n        result = self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--pid_suffix\",\n                \"--output_dir\",\n                \"./suffix_tmp\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"./suffix_tmp\",\n            script=file_pid_suffix,\n            cleanup=False,\n        )\n        pid = result.stdout.decode(\"utf-8\").split()[0]\n        self.assertFileExists(os.path.join(\"./suffix_tmp\", f\"result_{pid}.json\"))\n        self.cleanup(output_file=\"./suffix_tmp\")\n\n    def test_pid_suffix_and_output(self):\n        result = self.template(\n            [\n                sys.executable,\n                \"-m\",\n                \"viztracer\",\n                \"--pid_suffix\",\n                \"--output_dir\",\n                \"./suffix_tmp\",\n                \"-o\",\n                \"test.json\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"./suffix_tmp\",\n            script=file_pid_suffix,\n            cleanup=False,\n        )\n        pid = result.stdout.decode(\"utf-8\").split()[0]\n        self.assertFileExists(os.path.join(\"./suffix_tmp\", f\"test_{pid}.json\"))\n        self.cleanup(output_file=\"./suffix_tmp\")\n\n    def test_module(self):\n        self.template([\"viztracer\", \"-m\", \"numbers\"])\n\n    def test_import_star(self):\n        script = \"from viztracer import *\"\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=None,\n        )\n\n    def test_log_gc(self):\n        self.template([\"viztracer\", \"--log_gc\", \"cmdline_test.py\"], script=file_gc)\n\n    def test_log_var(self):\n        self.template(\n            [\"viztracer\", \"--log_var\", \"lst\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_c_function,\n            expected_output_file=\"result.json\",\n            expected_entries=4,\n        )\n        self.template(\n            [\"viztracer\", \"--log_var\", \"a.*\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_var,\n            expected_output_file=\"result.json\",\n            expected_entries=26,\n        )\n        self.template(\n            [\n                \"viztracer\",\n                \"--log_number\",\n                \"ab[cd]\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            script=file_log_var,\n            expected_output_file=\"result.json\",\n            expected_entries=12,\n        )\n\n        code_ast = textwrap.dedent(\"\"\"\n            import ast\n            tree = ast.parse(\"a = 1\")\n        \"\"\")\n        self.template(\n            [\"viztracer\", \"--log_var\", \"tree\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=code_ast,\n            expected_output_file=\"result.json\",\n        )\n\n    def test_log_attr(self):\n        self.template(\n            [\"viztracer\", \"--log_attr\", \"a.*\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_attr,\n            expected_output_file=\"result.json\",\n            expected_entries=9,\n        )\n\n    def test_log_func_exec(self):\n        def check_func(data):\n            for entry in data[\"traceEvents\"]:\n                if entry[\"name\"].startswith(\"a\"):\n                    self.assertIn(\"exec_steps\", entry[\"args\"])\n                    self.assertEqual(len(entry[\"args\"][\"exec_steps\"]), 2)\n\n        self.template(\n            [\n                \"viztracer\",\n                \"--log_func_exec\",\n                \"a.*\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            script=file_log_func_exec,\n            expected_output_file=\"result.json\",\n            check_func=check_func,\n        )\n\n    def test_log_func_entry(self):\n        self.template(\n            [\n                \"viztracer\",\n                \"--log_func_entry\",\n                \"a.*\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            script=file_log_func_exec,\n            expected_output_file=\"result.json\",\n            expected_entries=7,\n        )\n\n    def test_log_audit(self):\n        def check_func(include_names, exclude_names=[]):\n            def inner(data):\n                name_set = set()\n                for event in data[\"traceEvents\"]:\n                    if event[\"ph\"] == \"i\":\n                        name_set.add(event[\"name\"])\n                self.assertGreaterEqual(name_set, set(include_names))\n                for name in exclude_names:\n                    self.assertNotIn(name, name_set)\n\n            return inner\n\n        self.template(\n            [\"viztracer\", \"--log_audit\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_audit,\n            expected_output_file=\"result.json\",\n            check_func=check_func([\"builtins.id\", \"import\"]),\n        )\n\n        self.template(\n            [\"viztracer\", \"--log_audit\", \"i.*\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_audit,\n            expected_output_file=\"result.json\",\n            check_func=check_func([\"import\"], [\"buildins.id\"]),\n        )\n\n        self.template(\n            [\n                \"viztracer\",\n                \"--log_audit\",\n                \"builtins.id\",\n                \"-o\",\n                \"result.json\",\n                \"cmdline_test.py\",\n            ],\n            script=file_log_audit,\n            expected_output_file=\"result.json\",\n            check_func=check_func([\"builtins.id\"], [\"import\"]),\n        )\n\n    def test_log_exception(self):\n        self.template(\n            [\"viztracer\", \"--log_exception\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_exception,\n            expected_output_file=\"result.json\",\n            expected_entries=3,\n        )\n        # Coverage for visit_Raise without change\n        self.template(\n            [\"viztracer\", \"--log_var\", \"a\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_exception,\n            expected_output_file=\"result.json\",\n            expected_entries=2,\n        )\n\n    @skipIf(\n        hasattr(sys, \"_is_gil_enabled\") and not sys._is_gil_enabled(),\n        \"trio does not support free-threaded Python\",\n    )\n    @package_matrix([\"~trio\", \"trio\"])\n    def test_log_async(self):\n        def check_func(data):\n            tids = set()\n            for entry in data[\"traceEvents\"]:\n                tids.add(entry[\"tid\"])\n            self.assertGreaterEqual(len(tids), 4)\n\n        self.template(\n            [\"viztracer\", \"--log_async\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_async,\n            expected_output_file=\"result.json\",\n            check_func=check_func,\n        )\n\n    @skipIf(\n        hasattr(sys, \"_is_gil_enabled\") and not sys._is_gil_enabled(),\n        \"trio does not support free-threaded Python\",\n    )\n    @package_matrix([\"~trio\", \"trio\"])\n    @skipIf(importlib.util.find_spec(\"trio\") is None, reason=\"Trio-specific test\")\n    def test_log_trio(self):\n        def check_func(data):\n            tids = set()\n            for entry in data[\"traceEvents\"]:\n                tids.add(entry[\"tid\"])\n            self.assertGreaterEqual(len(tids), 4)\n\n        self.template(\n            [\"viztracer\", \"--log_async\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_trio,\n            check_func=check_func,\n        )\n        self.template(\n            [\"viztracer\", \"--log_async\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_log_async_with_trio,\n            check_func=check_func,\n        )\n\n    @skipIf(\n        sys.platform == \"win32\" or sys.version_info >= (3, 11),\n        \"jaxlib does not support Windows\",\n    )\n    def test_sanitize_function_name(self):\n        self.template(\n            [\"viztracer\", \"--sanitize_function_name\", \"cmdline_test.py\"],\n            script=file_sanitize_function_name,\n            expected_stdout=\".*vizviewer.*\",\n        )\n\n    def test_ignore_function(self):\n        def check_func(data):\n            for entry in data[\"traceEvents\"]:\n                self.assertNotEqual(entry[\"name\"], \"f\")\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_ignore_function,\n            expected_output_file=\"result.json\",\n            check_func=check_func,\n        )\n\n    def test_show_version(self):\n        result = self.template(\n            [\"viztracer\", \"--version\"], script=None, expected_output_file=None\n        )\n        m = re.match(r\".*\\..*\\..*\", result.stdout.decode(\"utf-8\").strip())\n        self.assertNotEqual(m, None)\n\n    def test_invalid_file(self):\n        self.template(\n            [\"viztracer\", \"no_such_file.py\"], success=False, expected_output_file=[]\n        )\n        self.template(\n            [\"viztracer\", \"result_wrong.json\"],\n            script_name=\"result_wrong.json\",\n            success=False,\n            expected_output_file=[],\n            expected_stdout=\"vizviewer result_wrong.json\",\n        )\n\n    def test_rcfile(self):\n        @contextmanager\n        def option_to_file(options, filename=\".viztracerrc\", section=\"default\"):\n            parser = configparser.ConfigParser()\n            parser[section] = {}\n            for key, val in options.items():\n                parser[section][key] = val\n            with open(filename, \"w\") as f:\n                parser.write(f)\n            try:\n                yield\n            finally:\n                os.remove(filename)\n\n        with option_to_file({\"max_stack_depth\": \"0\"}):\n            self.template([\"viztracer\", \"cmdline_test.py\"], expected_entries=0)\n\n        with option_to_file({\"max_stack_depth\": \"0\"}):\n            self.template(\n                [\"viztracer\", \"--rcfile\", \"anotherrc\", \"cmdline_test.py\"], success=False\n            )\n\n        with option_to_file({\"max_stack_depth\": \"0\"}, filename=\"anotherrc\"):\n            self.template(\n                [\"viztracer\", \"--rcfile\", \"anotherrc\", \"cmdline_test.py\"],\n                expected_entries=0,\n            )\n\n        with option_to_file({\"max_stack_depth\": \"0\"}, section=\"invalid\"):\n            self.template([\"viztracer\", \"cmdline_test.py\"], success=False)\n\n        with option_to_file({\"quiet\": \"True\"}):\n            result = self.template([\"viztracer\", \"cmdline_test.py\"])\n            self.assertEqual(result.stdout.decode(), \"\")\n\n        with option_to_file({\"log_var\": \"a.* d\"}):\n            self.template(\n                [\"viztracer\", \"cmdline_test.py\"],\n                script=file_log_var,\n                expected_output_file=\"result.json\",\n                expected_entries=27,\n            )\n\n\nclass TestPossibleFailures(CmdlineTmpl):\n    def test_main(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"-o\", \"main.json\", \"cmdline_test.py\"],\n            expected_output_file=\"main.json\",\n            script=file_main,\n            expected_entries=3,\n        )\n\n    def test_argv(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"cmdline_test.py\"], script=file_argv\n        )\n\n    def test_exit(self):\n        self.template(\n            [sys.executable, \"-m\", \"viztracer\", \"cmdline_test.py\"], script=file_exit\n        )\n"
  },
  {
    "path": "tests/test_codemonkey.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport ast\nimport textwrap\n\nfrom viztracer.code_monkey import AstTransformer, CodeMonkey\n\nfrom .base_tmpl import BaseTmpl\nfrom .cmdline_tmpl import CmdlineTmpl\n\n\nclass TestCodeMonkey(BaseTmpl):\n    def test_pure_compile(self):\n        code_string = \"a = 1\"\n        monkey = CodeMonkey(\"test.py\")\n        _compile = monkey.compile\n        _compile(code_string, \"test.py\", \"exec\")\n\n    def test_compile_empty_exception(self):\n        code_string = textwrap.dedent(\n            \"\"\"\n            try:\n                a = 3 / 0\n            except Exception as e:\n                raise\n            \"\"\"\n        )\n        monkey = CodeMonkey(\"test.py\")\n        monkey.add_instrument(\"log_exception\", {})\n        _compile = monkey.compile\n        _compile(code_string, \"test.py\", \"exec\")\n\n    def test_source_processor(self):\n        monkey = CodeMonkey(\"test.py\")\n        monkey.add_source_processor()\n        tree = compile(\"a = 0\", \"test.py\", \"exec\", ast.PyCF_ONLY_AST)\n        _compile = monkey.compile\n        # make sure AST can compile\n        _compile(tree, \"test.py\", \"exec\")\n\n        # some unittest\n        self.assertIs(monkey.source_processor.process(tree), tree)\n        self.assertEqual(\n            monkey.source_processor.process(\"# !viztracer: log_instant('test')\"),\n            \"__viz_tracer__.log_instant('test')\",\n        )\n        self.assertEqual(\n            monkey.source_processor.process(\"a = 3  # !viztracer: log\"),\n            \"a = 3  ; __viz_tracer__.log_var('a', (a))\",\n        )\n        self.assertEqual(\n            monkey.source_processor.process(\"f()  # !viztracer: log\"),\n            \"f()  ; __viz_tracer__.log_instant('f()')\",\n        )\n\n\nclass TestAstTransformer(BaseTmpl):\n    def test_invalid(self):\n        tf = AstTransformer(\"invalid\", \"invalid\")\n        self.assertEqual(tf.get_assign_targets(\"invalid\"), [])\n        with self.assertRaises(ValueError):\n            tf.get_instrument_node(\"Exception\", \"invalid\")\n\n        self.assertEqual(tf.get_assign_targets_with_attr(\"invalid\"), [])\n\n    def test_get_string_of_expr(self):\n        test_cases = [\n            \"a\",\n            \"a[0]\",\n            \"a[1:]\",\n            \"a[0:3]\",\n            \"a[0:3:1]\",\n            \"d['a']\",\n            \"d['a'][0].b\",\n            \"[a,b]\",\n            \"(a,b)\",\n            \"*a\",\n        ]\n        # just for coverage\n        invalid_test_cases = [\"a[1,2:3]\", \"a>b\"]\n        tf = AstTransformer(\"\", \"\")\n        for test_case in test_cases:\n            tree = compile(test_case, \"test.py\", \"exec\", ast.PyCF_ONLY_AST)\n            self.assertEqual(tf.get_string_of_expr(tree.body[0].value), test_case)\n        for test_case in invalid_test_cases:\n            tree = compile(test_case, \"test.py\", \"exec\", ast.PyCF_ONLY_AST)\n            tf.get_string_of_expr(tree.body[0].value)\n\n    def test_get_assign_log_nodes(self):\n        tf = AstTransformer(\"log_var\", {\"varnames\": \"fi\"})\n        test_cases = [(\"fib = 1\", 0)]\n        for test_case, node_number in test_cases:\n            tree = compile(test_case, \"test.py\", \"exec\", ast.PyCF_ONLY_AST)\n            self.assertEqual(\n                len(tf.get_assign_log_nodes(tree.body[0].targets[0])), node_number\n            )\n\n\nfile_magic_comment = \"\"\"\ndef test():\n    pass\n# !viztracer: log_instant(\"test\")\na = 3  # !viztracer: log\n# !viztracer: log_var(\"a\", a)\n# !viztracer: log_var(\"a\", a) if a == 3\n# !viztracer: log_var(\"a\", a) if a != 3\na = 3  # !viztracer: log if a == 3\na = 3  # !viztracer: log if a != 3\ntest()  # !viztracer: log if a == 3\n\"\"\"\n\n\nclass TestMagicComment(CmdlineTmpl):\n    def test_log_var(self):\n        def check_func(data):\n            instant_count = 0\n            var_count = 0\n            for event in data[\"traceEvents\"]:\n                if event[\"ph\"] == \"i\":\n                    self.assertIn(\"test\", event[\"name\"])\n                    instant_count += 1\n                elif event[\"ph\"] == \"C\":\n                    self.assertEqual(event[\"name\"], \"a\")\n                    self.assertEqual(event[\"args\"], {\"value\": 3})\n                    var_count += 1\n            self.assertEqual(instant_count, 2)\n            self.assertEqual(var_count, 4)\n\n        self.template(\n            [\"viztracer\", \"--magic_comment\", \"cmdline_test.py\"],\n            script=file_magic_comment,\n            check_func=check_func,\n        )\n"
  },
  {
    "path": "tests/test_fastlog.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer import VizTracer\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass TestFastLog(BaseTmpl):\n    def test_log_var(self):\n        tracer = VizTracer()\n        tracer.start()\n        tracer.log_var(\"test\", 3)\n        tracer.log_var(\"test\", {\"a\": 1, \"b\": [3, 4, 3.6]})\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 2)\n        self.assertEqual(tracer.data[\"traceEvents\"][-2][\"ph\"], \"C\")\n        self.assertEqual(tracer.data[\"traceEvents\"][-2][\"args\"], {\"value\": 3})\n        self.assertEqual(tracer.data[\"traceEvents\"][-1][\"ph\"], \"i\")\n        self.assertIn(\"object\", tracer.data[\"traceEvents\"][-1][\"args\"])\n\n    def test_log_instant(self):\n        tracer = VizTracer()\n        tracer.start()\n        tracer.log_instant(\"test\")\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 1)\n        self.assertEqual(tracer.data[\"traceEvents\"][-1][\"ph\"], \"i\")\n        self.assertEqual(tracer.data[\"traceEvents\"][-1][\"name\"], \"test\")\n"
  },
  {
    "path": "tests/test_functree.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport json\n\nfrom viztracer.functree import FuncTree\n\nfrom .base_tmpl import BaseTmpl\n\ntest_str = '{\"traceEvents\":[{\"pid\":7761,\"tid\":7761,\"ts\":23668655769.443,\"dur\":0.4,\"name\":\"h (test.py:6)\",\"caller_lineno\":10,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655769.243,\"dur\":1.2,\"name\":\"g (test.py:9)\",\"caller_lineno\":18,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655770.543,\"dur\":0.1,\"name\":\"h (test.py:6)\",\"caller_lineno\":19,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655769.043,\"dur\":1.7,\"name\":\"f (test.py:14)\",\"caller_lineno\":22,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655771.143,\"dur\":0.1,\"name\":\"h (test.py:6)\",\"caller_lineno\":10,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655771.043,\"dur\":0.3,\"name\":\"g (test.py:9)\",\"caller_lineno\":17,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655771.443,\"dur\":0.0,\"name\":\"h (test.py:6)\",\"caller_lineno\":19,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655770.943,\"dur\":0.6,\"name\":\"f (test.py:14)\",\"caller_lineno\":24,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655768.843,\"dur\":2.8,\"name\":\"t (test.py:21)\",\"caller_lineno\":26,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655766.943,\"dur\":4.8,\"name\":\"<module> (test.py:2)\",\"caller_lineno\":147,\"ph\":\"X\",\"cat\":\"FEE\"},{\"pid\":7761,\"tid\":7761,\"ts\":23668655766.343,\"dur\":5.8,\"name\":\"builtins.exec\",\"caller_lineno\":147,\"ph\":\"X\",\"cat\":\"FEE\"}],\"displayTimeUnit\":\"ns\",\"viztracer_metadata\":{\"version\":\"0.9.5\"}}'  # noqa: E501\n\n\nclass TestFuncTree(BaseTmpl):\n    def test_random(self):\n        import random\n\n        test_obj1 = json.loads(test_str)\n        test_obj2 = json.loads(test_str)\n        random.shuffle(test_obj2[\"traceEvents\"])\n\n        tree1 = FuncTree()\n        for event in test_obj1[\"traceEvents\"]:\n            tree1.add_event(event)\n\n        tree2 = FuncTree()\n        for event in test_obj2[\"traceEvents\"]:\n            tree2.add_event(event)\n\n        self.assertTrue(tree1.is_same(tree2))\n"
  },
  {
    "path": "tests/test_invalid.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport io\n\nfrom viztracer import VizTracer\nfrom viztracer.event_base import _EventBase\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass TestInvalidArgs(BaseTmpl):\n    def test_invalid_args(self):\n        invalid_args = {\n            \"verbose\": [\"hello\", 0.1],\n            \"pid_suffix\": [\"hello\", 1, \"True\"],\n            \"max_stack_depth\": [\"0.3\", \"hello\", 1.5],\n            \"include_files\": [\"./src\"],\n            \"exclude_files\": [\"./src\"],\n            \"ignore_c_function\": [\"hello\", 1, \"True\"],\n            \"log_func_retval\": [\"hello\", 1, \"True\"],\n            \"log_gc\": [\"hello\", 1, \"True\"],\n            \"log_func_args\": [\"hello\", 1, \"True\"],\n            \"min_duration\": [\"0.1.0\", \"12\", \"3us\"],\n            \"ignore_frozen\": [\"hello\", 1, \"True\"],\n            \"log_async\": [\"hello\", 1, \"True\"],\n            \"log_func_repr\": [\"hello\", 1, True],\n        }\n        tracer = VizTracer(verbose=0)\n        for args, vals in invalid_args.items():\n            for val in vals:\n                with self.assertRaises((ValueError, TypeError)):\n                    setattr(tracer, args, val)\n\n\nclass TestInvalidOperation(BaseTmpl):\n    def test_generate_without_data(self):\n        tracer = VizTracer(verbose=0)\n        with self.assertRaises(Exception):\n            tracer.generate_json()\n\n    def test_save_invalid_format(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        _ = len([1, 2])\n        tracer.stop()\n        with self.assertRaises(Exception):\n            tracer.save(\"test.invalid\")\n\n    def test_log_func_conflict(self):\n        with self.assertRaises(ValueError):\n            _ = VizTracer(log_func_repr=repr, log_func_with_objprint=True, verbose=0)\n\n    def test_add_invalid_variable(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        with self.assertRaises(Exception):\n            tracer.add_variable(\"a\", 1, event=\"invalid\")\n        with self.assertRaises(Exception):\n            tracer.add_variable(\"a\", \"str\", event=\"counter\")\n\n    def test_invalid_save_file(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        _ = len([1, 2])\n        tracer.stop()\n        with self.assertRaises(ValueError):\n            tracer.save(io.StringIO())\n\n\nclass TestUseEventBase(BaseTmpl):\n    def test_use_event_base(self):\n        event = _EventBase(None)\n        with self.assertRaises(NotImplementedError):\n            event.log()\n"
  },
  {
    "path": "tests/test_jupyter.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport os\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass TestJupyter(BaseTmpl):\n    def setUp(self):\n        super().setUp()\n        try:\n            from IPython.terminal.interactiveshell import TerminalInteractiveShell\n\n            self.ip = TerminalInteractiveShell.instance()\n        except ImportError:\n            self.skipTest(\"No Jupyter, skip Jupyter test\")\n\n    def test_cellmagic(self):\n        self.ip.run_line_magic(\"load_ext\", \"viztracer\")\n        self.ip.run_cell_magic(magic_name=\"viztracer\", line=\"\", cell=\"print(1)\")\n        self.assertFileExists(\"./viztracer_report.json\")\n        os.remove(\"./viztracer_report.json\")\n"
  },
  {
    "path": "tests/test_logging.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport logging\n\nfrom viztracer import VizTracer\nfrom viztracer.vizlogging import VizLoggingHandler\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass TestLogging(BaseTmpl):\n    def test_handler(self):\n        tracer = VizTracer()\n        handler = VizLoggingHandler()\n        handler.setTracer(tracer)\n        logging.getLogger().addHandler(handler)\n        tracer.start()\n        logging.warning(\"lol\")\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertGreater(entries, 10)\n        self.assertTrue(\n            any([entry[\"ph\"] == \"i\" for entry in tracer.data[\"traceEvents\"]])\n        )\n        logging.getLogger().removeHandler(handler)\n\n    def test_notracer(self):\n        tracer = VizTracer()\n        handler = VizLoggingHandler()\n        logging.getLogger().addHandler(handler)\n        tracer.start()\n        logging.warning(\"lol\")\n        tracer.stop()\n        logging.getLogger().removeHandler(handler)\n"
  },
  {
    "path": "tests/test_logsparse.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport functools\nimport multiprocessing\nimport os\nimport sys\nimport textwrap\n\nfrom .cmdline_tmpl import CmdlineTmpl\n\nfile_basic = \"\"\"\nfrom viztracer import log_sparse\n\n@log_sparse\ndef f():\n    return 1\n\ndef g():\n    return f()\n\nassert g() == 1\n\"\"\"\n\n\nfile_stack = \"\"\"\nfrom viztracer import log_sparse\n\ndef h():\n    return 1\n\ndef f():\n    return h()\n\n@log_sparse(stack_depth=2)\ndef g():\n    return f()\n\nassert g() == 1\nassert g() == 1\n\"\"\"\n\n\nfile_stack_nested = \"\"\"\nfrom viztracer import log_sparse\n\n@log_sparse(stack_depth=2)\ndef h():\n    return 1\n\ndef f():\n    return h()\n\n@log_sparse(stack_depth=2)\ndef g():\n    return f()\n\nassert g() == 1\nassert g() == 1\n\"\"\"\n\n\nfile_multiprocess = \"\"\"\nfrom multiprocessing import Process\nfrom viztracer import log_sparse\nimport time\n\n@log_sparse\ndef f(x):\n    return x*x\n\nif __name__ == \"__main__\":\n    for i in range(3):\n        p = Process(target=f, args=(i,))\n        p.start()\n        p.join()\n        time.sleep(0.1)\n\"\"\"\n\nfile_multiprocess_spawn = \"\"\"\nimport multiprocessing\nfrom viztracer import get_tracer\n\ndef bar():\n    pass\n\ndef child(it):\n    for idx in it:\n        with get_tracer().log_event(f\"custom_event\"):\n            bar()\n\ndef main():\n    p = multiprocessing.get_context(\"spawn\").Process(target=child, args=(range(3), ))\n    p.start()\n    p.join()\n\nif __name__ == \"__main__\":\n    main()\n\"\"\"\n\nfile_context_manager = \"\"\"\nfrom viztracer import VizTracer, log_sparse\n\n@log_sparse(dynamic_tracer_check=True)\ndef f():\n    return 1\n\ndef g():\n    return f()\n\n@log_sparse\ndef h():\n    return 2\n\n@log_sparse(dynamic_tracer_check=True, stack_depth=1)\ndef q():\n    return 3\n\nif __name__ == \"__main__\":\n    with VizTracer(output_file=\"result.json\"):\n        assert g() == 1\n        assert h() == 2\n        assert q() == 3\n\"\"\"\n\nfile_context_manager_logsparse = \"\"\"\nfrom viztracer import VizTracer, log_sparse\n\n@log_sparse(dynamic_tracer_check=True)\ndef f():\n    return 1\n\ndef g():\n    return f()\n\n@log_sparse\ndef h():\n    return 2\n\n@log_sparse(dynamic_tracer_check=True, stack_depth=1)\ndef q():\n    return 3\n\nif __name__ == \"__main__\":\n    with VizTracer(output_file=\"result.json\", log_sparse=True):\n        assert g() == 1\n        assert h() == 2\n        assert q() == 3\n\"\"\"\n\nfile_context_manager_logsparse_stack = \"\"\"\nfrom viztracer import VizTracer, log_sparse\n\n@log_sparse(dynamic_tracer_check=True)\ndef f():\n    return 1\n\n@log_sparse(dynamic_tracer_check=True, stack_depth=1)\ndef g():\n    return f()\n\n@log_sparse(dynamic_tracer_check=True)\ndef h():\n    return 2\n\nif __name__ == \"__main__\":\n    assert g() == 1\n    assert h() == 2\n\n    with VizTracer(output_file=\"result.json\", log_sparse=True):\n        assert g() == 1\n        assert h() == 2\n\"\"\"\n\n\nclass TestLogSparse(CmdlineTmpl):\n    def check_func(self, data, target):\n        names = [entry[\"name\"] for entry in data[\"traceEvents\"]]\n        function_names = [\n            name.split(\" \")[0]\n            for name in names\n            if name not in [\"process_name\", \"thread_name\"]\n        ]\n\n        self.assertEqual(function_names, target)\n\n    def test_basic(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--log_sparse\", \"cmdline_test.py\"],\n            script=file_basic,\n            expected_output_file=\"result.json\",\n            expected_entries=1,\n            check_func=functools.partial(self.check_func, target=[\"f\"]),\n        )\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            script=file_basic,\n            expected_output_file=\"result.json\",\n        )\n\n    def test_stack(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--log_sparse\", \"cmdline_test.py\"],\n            script=file_stack,\n            expected_output_file=\"result.json\",\n            expected_entries=4,\n            check_func=functools.partial(self.check_func, target=[\"f\", \"g\", \"f\", \"g\"]),\n        )\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--log_sparse\", \"cmdline_test.py\"],\n            script=file_stack_nested,\n            expected_output_file=\"result.json\",\n            expected_entries=4,\n            check_func=functools.partial(self.check_func, target=[\"f\", \"g\", \"f\", \"g\"]),\n        )\n\n    def test_without_tracer(self):\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=file_basic,\n            expected_output_file=None,\n        )\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=file_stack,\n            expected_output_file=None,\n        )\n\n    def test_with_disabled_tracer(self):\n        script = textwrap.dedent(\"\"\"\n            from viztracer import VizTracer, log_sparse\n            tracer = VizTracer()\n            @log_sparse(dynamic_tracer_check=True)\n            def f():\n                return 1\n            assert f() == 1\n        \"\"\")\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=None,\n        )\n\n    def test_multiprocess(self):\n        if multiprocessing.get_start_method() == \"fork\":\n            try:\n                self.template(\n                    [\n                        \"viztracer\",\n                        \"-o\",\n                        \"result.json\",\n                        \"--log_sparse\",\n                        \"cmdline_test.py\",\n                    ],\n                    script=file_multiprocess,\n                    expected_output_file=\"result.json\",\n                    expected_entries=3,\n                    check_func=functools.partial(\n                        self.check_func, target=[\"f\", \"f\", \"f\"]\n                    ),\n                    concurrency=\"multiprocessing\",\n                )\n            except Exception as e:\n                # coveragepy has some issue with multiprocess pool\n                if not os.getenv(\"COVERAGE_RUN\"):\n                    raise e\n\n    def test_multiprocess_spawn(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--log_sparse\", \"cmdline_test.py\"],\n            script=file_multiprocess_spawn,\n            expected_output_file=\"result.json\",\n            expected_entries=3,\n            check_func=functools.partial(self.check_func, target=[\"custom_event\"] * 3),\n            concurrency=\"multiprocessing\",\n        )\n\n    def test_context_manager(self):\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=file_context_manager,\n            expected_output_file=\"result.json\",\n            expected_entries=4,\n            check_func=functools.partial(self.check_func, target=[\"f\", \"g\", \"h\", \"q\"]),\n        )\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=file_context_manager_logsparse,\n            expected_output_file=\"result.json\",\n            expected_entries=2,\n            check_func=functools.partial(self.check_func, target=[\"f\", \"q\"]),\n        )\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=file_context_manager_logsparse_stack,\n            expected_output_file=\"result.json\",\n            expected_entries=2,\n            check_func=functools.partial(self.check_func, target=[\"g\", \"h\"]),\n        )\n"
  },
  {
    "path": "tests/test_multiprocess.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport json\nimport multiprocessing\nimport os\nimport signal\nimport sys\nimport tempfile\nimport textwrap\nimport unittest\n\nfrom viztracer.report_server import ReportServer\n\nfrom .cmdline_tmpl import CmdlineTmpl\n\nfile_grandparent = \"\"\"\nimport subprocess\nimport sys\nsubprocess.run([sys.executable, \"parent.py\"])\n\"\"\"\n\n\nfile_parent = \"\"\"\nimport subprocess\nimport sys\nsubprocess.run([sys.executable, \"child.py\"])\nsubprocess.run((sys.executable, \"child.py\"))\nsubprocess.run(f\"{sys.executable} child.py\")\n\"\"\"\n\n\nfile_child = \"\"\"\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\nfib(5)\n\"\"\"\n\nfile_subprocess_term = \"\"\"\nimport time\nprint(\"ready\", flush=True)\nwhile True:\n    time.sleep(0.5)\n\"\"\"\n\nfile_subprocess_module = \"\"\"\nimport subprocess\nimport sys\nprint(subprocess.call([sys.executable, \"-m\", \"timeit\", \"-n\", \"100\", \"'1+1'\"]))\n\"\"\"\n\nfile_subprocess_code_string = \"\"\"\nimport subprocess\nimport sys\np = subprocess.Popen([sys.executable, '-c', 'import time;time.sleep(0.5)'])\np.wait()\n\"\"\"\n\nfile_subprocess_shell = \"\"\"\nimport os\nimport subprocess\nimport sys\nwith open(os.path.join(os.path.dirname(__file__), \"sub.py\"), \"w\") as f:\n    f.write(\"print('hello')\")\npath = os.path.join(os.path.dirname(__file__), \"sub.py\")\nprint(subprocess.call(f\"{sys.executable} {path}\", shell=True))\n\"\"\"\n\nfile_fork = \"\"\"\nimport os\nimport time\n\npid = os.fork()\n\nif pid > 0:\n    time.sleep(0.1)\n    print(\"parent\")\nelse:\n    print(\"child\")\n\"\"\"\n\nfile_fork_wait = \"\"\"\nimport os\nimport time\n\npid = os.fork()\n\nif pid > 0:\n    time.sleep(0.1)\n    print(\"parent\")\nelse:\n    time.sleep(4.5)\n    print(\"child\")\n\"\"\"\n\nfile_multiprocessing = \"\"\"\nimport multiprocessing\nfrom multiprocessing import Process\nimport time\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\n\ndef f():\n    fib(5)\n\nif __name__ == \"__main__\":\n    fib(2)\n    p = Process(target=f)\n    p.start()\n    p.join()\n    time.sleep(0.1)\n\"\"\"\n\nfile_nested_multiprocessing = \"\"\"\nimport multiprocessing\nfrom multiprocessing import Process\nimport time\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\n\ndef f():\n    fib(5)\n\ndef spawn():\n    p = Process(target=f)\n    p.start()\n    p.join()\n\nif __name__ == \"__main__\":\n    fib(2)\n    p = Process(target=spawn)\n    p.start()\n    p.join()\n    time.sleep(0.1)\n\"\"\"\n\nfile_multiprocessing_overload_run = \"\"\"\nimport multiprocessing\nfrom multiprocessing import Process\nimport time\n\n\nclass MyProcess(Process):\n    def run(self):\n        self.fib(5)\n\n    def fib(self, n):\n        if n < 2:\n            return 1\n        return self.fib(n-1) + self.fib(n-2)\n\nif __name__ == \"__main__\":\n    p = MyProcess()\n    p.start()\n    p.join()\n    time.sleep(0.1)\n\"\"\"\n\nfile_multiprocessing_stack_limit = \"\"\"\nimport multiprocessing\nfrom multiprocessing import Process\nimport time\nfrom viztracer import get_tracer\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\n\ndef f():\n    fib(5)\n\ndef cb(tracer):\n    print(tracer)\n    tracer.max_stack_depth = 2\n\nif __name__ == \"__main__\":\n    get_tracer().set_afterfork(cb)\n    p = Process(target=f)\n    p.start()\n    p.join()\n    time.sleep(0.1)\n\"\"\"\n\nfile_pool = \"\"\"\nimport gc\nfrom multiprocessing import Process, Pool\nimport os\nimport time\n\ndef f(x):\n    return x*x\n\nif __name__ == \"__main__\":\n    process_num = 2\n    # gc seems to cause SegFault with multithreading\n    # Pool creates a couple of thread and it's failing the test\n    # https://github.com/python/cpython/issues/101975\n\n    gc.disable()\n    with Pool(processes=process_num) as pool:\n        print(pool.map(f, range(10)))\n\n        for i in pool.imap_unordered(f, range(10)):\n            print(i)\n\n        res = pool.apply_async(f, (20,))      # runs in *only* one process\n        print(res.get(timeout=1))             # prints \"400\"\n\n        res = pool.apply_async(os.getpid, ()) # runs in *only* one process\n        print(res.get(timeout=1))             # prints the PID of that process\n\n        multiple_results = [pool.apply_async(os.getpid, ()) for i in range(process_num)]\n        print([res.get(timeout=1) for res in multiple_results])\n    gc.enable()\n\"\"\"\n\nfile_pool_with_pickle = \"\"\"\nfrom multiprocessing import get_context\n\nclass Bar:\n    pass\n\ndef foo(args):\n    return Bar()\n\nif __name__ == '__main__':\n    with get_context('spawn').Pool(1) as pool:\n        _ = list(pool.imap_unordered(foo, [1]))\n\"\"\"\n\nfile_loky = \"\"\"\nfrom loky import get_reusable_executor\nimport time\nimport random\n\n\ndef my_function(*args):\n   duration = random.uniform(0.1, 0.3)\n   time.sleep(duration)\n\n\ne = get_reusable_executor(max_workers=4)\ne.map(my_function, range(5))\n\"\"\"\n\n\nclass TestSubprocess(CmdlineTmpl):\n    def setUp(self):\n        super().setUp()\n        with open(\"child.py\", \"w\") as f:\n            f.write(file_child)\n\n    def tearDown(self):\n        super().tearDown()\n        os.remove(\"child.py\")\n\n    def assertSubprocessName(self, name, data):\n        for entry in data[\"traceEvents\"]:\n            if entry[\"name\"] == \"process_name\" and entry[\"args\"][\"name\"] == name:\n                break\n        else:\n            self.fail(\"no matching subprocess name\")\n\n    def test_basic(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 4)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_parent,\n            check_func=check_func,\n        )\n\n    def test_child_process(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_path = os.path.join(tmpdir, \"result.json\")\n            server_proc, endpoint = ReportServer.start_process(\n                output_file=output_path,\n            )\n            self.template(\n                [\n                    \"viztracer\",\n                    \"-o\",\n                    output_path,\n                    \"--report_endpoint\",\n                    endpoint,\n                    \"child.py\",\n                ],\n                expected_output_file=None,\n            )\n            server_proc.__exit__(None, None, None)\n            with open(output_path) as f:\n                self.assertSubprocessName(\"child.py\", json.load(f))\n\n    def test_module(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_file = os.path.join(tmpdir, \"result.json\")\n            self.template(\n                [\"viztracer\", \"-o\", output_file, \"cmdline_test.py\"],\n                expected_output_file=output_file,\n                expected_stdout=\".*100 loops.*\",\n                script=file_subprocess_module,\n                check_func=lambda data: self.assertSubprocessName(\"timeit\", data),\n            )\n\n    def test_code_string(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_path = os.path.join(tmpdir, \"result.json\")\n            self.template(\n                [\"viztracer\", \"-o\", output_path, \"cmdline_test.py\"],\n                expected_output_file=output_path,\n                script=file_subprocess_code_string,\n                check_func=lambda data: self.assertSubprocessName(\"python -c\", data),\n            )\n\n    def test_python_entries(self):\n        script = textwrap.dedent(\"\"\"\n            import subprocess\n            import sys\n            subprocess.check_output([\"vizviewer\", \"-h\"])\n            if sys.platform != \"win32\":\n                subprocess.check_output([\"ls\", \"./\"])\n            try:\n                subprocess.check_output([\"nonexist\"])\n            except Exception:\n                pass\n        \"\"\")\n\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            if sys.platform == \"win32\":\n                # Windows uses exe for python entries and we can't hook that\n                self.assertEqual(len(pids), 1)\n            else:\n                self.assertEqual(len(pids), 2)\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_path = os.path.join(tmpdir, \"result.json\")\n            self.template(\n                [\"viztracer\", \"-o\", output_path, \"cmdline_test.py\"],\n                expected_output_file=output_path,\n                script=script,\n                check_func=check_func,\n            )\n\n    def test_subprocess_shell_true(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_path = os.path.join(tmpdir, \"result.json\")\n            self.template(\n                [\"viztracer\", \"-o\", output_path, \"cmdline_test.py\"],\n                expected_output_file=output_path,\n                script=file_subprocess_shell,\n                expected_stdout=\".*hello.*\",\n                check_func=check_func,\n            )\n\n    def test_nested(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 5)\n\n        with open(\"parent.py\", \"w\") as f:\n            f.write(file_parent)\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_grandparent,\n            check_func=check_func,\n        )\n        os.remove(\"parent.py\")\n\n    def test_nested_multiprocessing(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 3)\n\n        with open(\"parent.py\", \"w\") as f:\n            f.write(file_multiprocessing)\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_grandparent,\n            check_func=check_func,\n        )\n        os.remove(\"parent.py\")\n\n\nclass TestMultiprocessing(CmdlineTmpl):\n    def test_os_fork(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertGreater(len(pids), 1)\n\n        if sys.platform in [\"linux\", \"linux2\"]:\n            self.template(\n                [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n                expected_output_file=\"result.json\",\n                script=file_fork,\n                check_func=check_func,\n            )\n\n    @unittest.skipIf(sys.platform not in [\"linux\", \"linux2\"], \"Only works on Linux\")\n    def test_os_fork_term(self):\n        def check_func_wrapper(process_num):\n            def check_func(data):\n                pids = set()\n                for entry in data[\"traceEvents\"]:\n                    pids.add(entry[\"pid\"])\n                self.assertEqual(len(pids), process_num)\n\n            return check_func\n\n        result = self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_fork_wait,\n            check_func=check_func_wrapper(2),\n        )\n        self.assertIn(\"Waiting for\", result.stdout.decode())\n\n        result = self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            send_sig=(signal.SIGINT, 3.5),\n            expected_output_file=\"result.json\",\n            script=file_fork_wait,\n            check_func=check_func_wrapper(1),\n        )\n\n    @unittest.skipIf(sys.platform not in [\"linux\", \"linux2\"], \"Only works on Linux\")\n    def test_os_fork_exit(self):\n        script = textwrap.dedent(\"\"\"\n            import os\n            import sys\n\n            pid = os.fork()\n            if pid == 0:\n                sys.exit(0)\n            else:\n                os.waitpid(pid, 0)\n        \"\"\")\n\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            check_func=check_func,\n        )\n\n    def test_multiprosessing(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertGreater(len(pids), 1)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_multiprocessing,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n    @unittest.skipIf(\n        \"forkserver\" not in multiprocessing.get_all_start_methods(),\n        \"Only works on supported platform\",\n    )\n    def test_multiprocessing_forkserver(self):\n        script = \"\"\"\n            import multiprocessing\n            from multiprocessing import get_context\n            def foo():\n                pass\n            if __name__ == \"__main__\":\n                p = get_context('forkserver').Process(target=foo)\n                p.start()\n                p.join()\n        \"\"\"\n        script_pool = \"\"\"\n            from multiprocessing import get_context\n            def foo(arg):\n                pass\n            if __name__ == '__main__':\n                with get_context('forkserver').Pool(1) as pool:\n                    _ = list(pool.imap_unordered(foo, [1]))\n        \"\"\"\n\n        def check_func(data):\n            pids = set()\n            has_foo = False\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n                if \"foo\" in entry[\"name\"]:\n                    has_foo = True\n            self.assertGreater(len(pids), 1)\n            self.assertTrue(has_foo)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            check_func=check_func,\n        )\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script_pool,\n            check_func=check_func,\n        )\n\n    def test_nested_multiprosessing(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 3)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_nested_multiprocessing,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n    def test_multiprocessing_unique_name(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            self.template(\n                [\n                    \"viztracer\",\n                    \"--output_dir\",\n                    tmpdir,\n                    \"--unique_output_file\",\n                    \"cmdline_test.py\",\n                ],\n                expected_output_file=None,\n                script=file_multiprocessing,\n                concurrency=\"multiprocessing\",\n            )\n            self.assertEqual(len(os.listdir(tmpdir)), 1)\n            with open(os.path.join(tmpdir, os.listdir(tmpdir)[0])) as f:\n                data = json.load(f)\n                check_func(data)\n\n    def test_multiprocessing_entry_limit(self):\n        result = self.template(\n            [\n                \"viztracer\",\n                \"-o\",\n                \"result.json\",\n                \"--tracer_entries\",\n                \"10\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            script=file_multiprocessing,\n            expected_entries=20,\n            concurrency=\"multiprocessing\",\n        )\n        self.assertIn(\"buffer is full\", result.stdout.decode())\n\n    def test_ignore_multiprocessing(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 1)\n\n        self.template(\n            [\n                \"viztracer\",\n                \"-o\",\n                \"result.json\",\n                \"--ignore_multiprocess\",\n                \"cmdline_test.py\",\n            ],\n            expected_output_file=\"result.json\",\n            script=file_multiprocessing,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n    def test_multiprocessing_overload(self):\n        def check_func(data):\n            fib_count = 0\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n                fib_count += 1 if \"fib\" in entry[\"name\"] else 0\n            self.assertGreater(len(pids), 1)\n            self.assertEqual(fib_count, 15)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_multiprocessing_overload_run,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n    @unittest.skipIf(\"win32\" in sys.platform, \"Does not support Windows\")\n    def test_multiprocessing_pool(self):\n        # I could not reproduce the stuck failure locally. This is only for\n        # coverage anyway, just skip it on 3.8+\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertGreater(len(pids), 1)\n\n        try:\n            self.template(\n                [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n                expected_output_file=\"result.json\",\n                script=file_pool,\n                check_func=check_func,\n                concurrency=\"multiprocessing\",\n            )\n        except Exception as e:\n            # coveragepy has some issue with multiprocess pool\n            if not os.getenv(\"COVERAGE_RUN\"):\n                raise e\n\n    @unittest.skipIf(\"win32\" in sys.platform, \"Does not support Windows\")\n    def test_multiprocessing_pool_with_pickle(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertGreater(len(pids), 1)\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_pool_with_pickle,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n    def test_multiprosessing_stack_depth(self):\n        def check_func(data):\n            for entry in data[\"traceEvents\"]:\n                self.assertNotIn(\"fib\", entry[\"name\"].split())\n\n        if multiprocessing.get_start_method() == \"fork\":\n            self.template(\n                [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n                expected_output_file=\"result.json\",\n                script=file_multiprocessing_stack_limit,\n                check_func=check_func,\n                concurrency=\"multiprocessing\",\n            )\n\n    @unittest.skipIf(\n        multiprocessing.get_start_method() != \"fork\", \"Only need to test fork\"\n    )\n    def test_multiprocessing_daemon(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            script = f\"\"\"\n                import multiprocessing\n                from viztracer import trace_and_save\n                @trace_and_save(output_dir={repr(tmpdir)})\n                def foo():\n                    pass\n                p = multiprocessing.Process(target=foo, daemon=True)\n                p.start()\n                p.join()\n            \"\"\"\n\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                expected_output_file=None,\n                script=script,\n                concurrency=\"multiprocessing\",\n            )\n\n            self.assertEqual(len(os.listdir(tmpdir)), 1)\n            with open(os.path.join(tmpdir, os.listdir(tmpdir)[0])) as f:\n                data = json.load(f)\n                events = [event for event in data[\"traceEvents\"] if event[\"ph\"] == \"X\"]\n                self.assertEqual(len(events), 1)\n                self.assertIn(\"foo\", events[0][\"name\"])\n\n    @unittest.skipIf(\n        \"fork\" not in multiprocessing.get_all_start_methods(), \"Only need to test fork\"\n    )\n    def test_multiprocessing_stack_depth(self):\n        script = \"\"\"\n            import multiprocessing\n            def factorial(n):\n                if n == 0:\n                    return 1\n                else:\n                    return n * factorial(n - 1)\n            if __name__ == \"__main__\":\n                p = multiprocessing.get_context(\"fork\").Process(target=factorial, args=(15,))\n                p.start()\n                p.join()\n        \"\"\"\n\n        def check_func(data):\n            count = 0\n            for entry in data[\"traceEvents\"]:\n                if \"factorial\" in entry[\"name\"]:\n                    count += 1\n            self.assertEqual(count, 9)\n\n        self.template(\n            [\"viztracer\", \"--max_stack_depth\", \"10\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n\n\nclass TestInlineSupport(CmdlineTmpl):\n    def test_inline_basic(self):\n        script = textwrap.dedent(\"\"\"\n            import multiprocessing\n\n            from viztracer import VizTracer\n\n            def target():\n                return 1\n\n            if __name__ == \"__main__\":\n                with VizTracer(ignore_multiprocess=False):\n                    p = multiprocessing.Process(target=target)\n                    p.start()\n                    p.join()\n        \"\"\")\n\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            check_func=check_func,\n        )\n\n    def test_inline_hook_uninstall(self):\n        script = textwrap.dedent(\"\"\"\n            import subprocess\n\n            from viztracer import VizTracer\n            from viztracer.patch import install_all_hooks\n\n            if __name__ == \"__main__\":\n                original_init = subprocess.Popen.__init__\n                tracer = VizTracer(ignore_multiprocess=False, register_global=False)\n                # mimic tracer.start() because tracing will overwrite coverage\n                install_all_hooks(tracer)\n                assert subprocess.Popen.__init__ != original_init\n                del tracer\n                assert subprocess.Popen.__init__ == original_init\n        \"\"\")\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=None,\n        )\n\n    @unittest.skipIf(sys.platform != \"win32\", \"Only test on Windows\")\n    def test_inline_hook_uninstall_windows(self):\n        script = textwrap.dedent(\"\"\"\n            import multiprocessing\n\n            from viztracer import VizTracer\n            from viztracer.patch import install_all_hooks\n\n            if __name__ == \"__main__\":\n                tracer = VizTracer(ignore_multiprocess=False, register_global=False)\n                # mimic tracer.start() because tracing will overwrite coverage\n                install_all_hooks(tracer)\n                prog = multiprocessing.spawn.get_command_line()[2]\n                assert \"viztracer.patch\" in prog\n                get_command_line = multiprocessing.spawn.get_command_line\n                del tracer\n                prog = multiprocessing.spawn.get_command_line()[2]\n                assert \"viztracer.patch\" not in prog\n                prog = get_command_line()[2]\n                assert \"viztracer.patch\" not in prog\n        \"\"\")\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=None,\n        )\n\n    def test_multiple_instances(self):\n        script = textwrap.dedent(\"\"\"\n            import multiprocessing\n\n            from viztracer import VizTracer\n\n            def foo():\n                return 1\n\n            if __name__ == \"__main__\":\n                with VizTracer(output_file=\"result1.json\", ignore_multiprocess=False):\n                    ctx = multiprocessing.get_context(\"spawn\")\n                    p = ctx.Process(target=foo)\n                    p.start()\n                    p.join()\n\n                with VizTracer(output_file=\"result2.json\", ignore_multiprocess=False):\n                    ctx = multiprocessing.get_context(\"spawn\")\n                    p = ctx.Process(target=foo)\n                    p.start()\n                    p.join()\n        \"\"\")\n\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            expected_output_file=[\"result1.json\", \"result2.json\"],\n            script=script,\n            check_func=check_func,\n        )\n\n    def test_uninstall(self):\n        script = textwrap.dedent(\"\"\"\n            import subprocess\n            from viztracer import VizTracer\n            original_init = subprocess.Popen.__init__\n            with VizTracer(ignore_multiprocess=False) as tracer:\n                assert subprocess.Popen.__init__ != original_init\n            assert subprocess.Popen.__init__ == original_init\n        \"\"\")\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n        )\n\n\n@unittest.skipIf(\n    \"free-threading\" in sys.version, \"loky does not support free-threading now\"\n)\nclass TestLoky(CmdlineTmpl):\n    def test_loky_basic(self):\n        def check_func(data):\n            pids = set()\n            for event in data[\"traceEvents\"]:\n                pids.add(event[\"pid\"])\n            # main, 4 workers, and a forked main on Linux\n            self.assertGreaterEqual(len(pids), 5)\n\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            script=file_loky,\n            check_func=check_func,\n            concurrency=\"multiprocessing\",\n        )\n"
  },
  {
    "path": "tests/test_multithread.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport sys\nimport threading\nimport time\nimport unittest\n\nfrom viztracer import VizTracer, get_tracer\n\nfrom .base_tmpl import BaseTmpl\nfrom .cmdline_tmpl import CmdlineTmpl\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    time.sleep(0.000001)\n    return fib(n - 1) + fib(n - 2)\n\n\nclass MyThread(threading.Thread):\n    def run(self):\n        fib(10)\n\n\nclass MyThreadTraceAware(threading.Thread):\n    def run(self):\n        get_tracer().enable_thread_tracing()\n        fib(10)\n\n\nclass TestMultithread(BaseTmpl):\n    def test_basic(self):\n        tracer = VizTracer(max_stack_depth=4, verbose=0)\n        tracer.start()\n\n        thread1 = MyThread()\n        thread2 = MyThread()\n        thread3 = MyThread()\n        thread4 = MyThread()\n\n        thread1.start()\n        thread2.start()\n        thread3.start()\n        thread4.start()\n\n        threads = [thread1, thread2, thread3, thread4]\n\n        for thread in threads:\n            thread.join()\n\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertGreater(entries, 170)\n\n        metadata = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] == \"M\"]\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"process_name\"]), 1)\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"thread_name\"]), 5)\n\n    def test_with_small_buffer(self):\n        tracer = VizTracer(tracer_entries=300, verbose=0)\n        tracer.start()\n\n        thread1 = MyThread()\n        thread2 = MyThread()\n        thread3 = MyThread()\n        thread4 = MyThread()\n\n        thread1.start()\n        thread2.start()\n        thread3.start()\n        thread4.start()\n\n        threads = [thread1, thread2, thread3, thread4]\n\n        for thread in threads:\n            thread.join()\n\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 300)\n\n    @unittest.skipIf(\n        sys.version_info >= (3, 12), \"We always enable threading trace in Python 3.12+\"\n    )\n    def test_manual_tracefunc(self):\n        tracer = VizTracer(max_stack_depth=4, verbose=0)\n        tracer.start()\n        # Force disable threading trace\n        threading.setprofile(None)\n\n        threads = [MyThread() for _ in range(4)]\n\n        for thread in threads:\n            thread.start()\n\n        for thread in threads:\n            thread.join()\n\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertLess(entries, 180)\n\n        metadata = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] == \"M\"]\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"process_name\"]), 1)\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"thread_name\"]), 1)\n\n        tracer.clear()\n\n        tracer.start()\n\n        threads = [MyThreadTraceAware() for _ in range(4)]\n\n        for thread in threads:\n            thread.start()\n\n        for thread in threads:\n            thread.join()\n\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertGreater(entries, 180)\n\n        metadata = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] == \"M\"]\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"process_name\"]), 1)\n        self.assertEqual(len([e for e in metadata if e[\"name\"] == \"thread_name\"]), 5)\n\n\nfile_log_sparse = \"\"\"\nimport threading\nfrom viztracer import log_sparse\n\nclass MyThreadSparse(threading.Thread):\n    def run(self):\n        self.sparse_func()\n\n    @log_sparse\n    def sparse_func(self):\n        return 0\n\nthread1 = MyThreadSparse()\nthread2 = MyThreadSparse()\n\nthread1.start()\nthread2.start()\n\nthreads = [thread1, thread2]\n\nfor thread in threads:\n    thread.join()\n\"\"\"\n\n\nclass TestMultithreadCmdline(CmdlineTmpl):\n    def test_with_log_sparse(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--log_sparse\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_log_sparse,\n            expected_entries=2,\n        )\n\n    def test_trace_after_thread_start(self):\n        script = \"\"\"\n            import queue\n            import sys\n            import threading\n            from viztracer import VizTracer, get_tracer\n            def fib(n):\n                if n <= 1:\n                    return n\n                return fib(n - 1) + fib(n - 2)\n\n            def target(q):\n                def inner():\n                    q.get()\n                    q.get()\n                inner()\n                if sys.version_info < (3, 12):\n                    get_tracer().enable_thread_tracing()\n                fib(10)\n\n            q1 = queue.Queue()\n            q2 = queue.Queue()\n            thread1 = threading.Thread(target=target, args=(q1,))\n            thread2 = threading.Thread(target=target, args=(q2,))\n\n            thread1.start()\n            thread2.start()\n            q1.put('check')\n            q2.put('check')\n\n            while not q1.empty() or not q2.empty():\n                pass\n\n            with VizTracer():\n                q1.put('start')\n                q2.put('start')\n                thread1.join()\n                thread2.join()\n            \"\"\"\n\n        def check_func(data):\n            # Main thread on MacOS does not have the same id as pid\n            self.assertGreaterEqual(len(set(e[\"tid\"] for e in data[\"traceEvents\"])), 3)\n            self.assertTrue(\n                any(\n                    e[\"name\"]\n                    for e in data[\"traceEvents\"]\n                    if e[\"name\"].startswith(\"fib\")\n                )\n            )\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            check_func=check_func,\n        )\n"
  },
  {
    "path": "tests/test_patch.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport json\nimport os\nimport re\nimport shutil\nimport signal\nimport sys\nimport tempfile\nimport unittest\nfrom string import Template\n\nfrom viztracer.report_server import ReportServer\n\nfrom .cmdline_tmpl import CmdlineTmpl\n\nfile_spawn_tmpl = Template(\"\"\"\nimport multiprocessing\nimport io\nimport os\nfrom multiprocessing.spawn import reduction, spawn_main\nfrom multiprocessing.context import set_spawning_popen\nimport sys\nfrom viztracer.patch import patch_spawned_process\n\n$foo\n\nprocess = multiprocessing.Process(target=foo)\nfp = io.BytesIO()\nset_spawning_popen(process._Popen)\nreduction.dump({}, fp)\nreduction.dump(process, fp)\nset_spawning_popen(None)\nchild_r, parent_w = os.pipe()\n\npatch_spawned_process({'report_endpoint': \"$report_endpoint\", 'pid_suffix': True}, [])\npid = os.getpid()\n\nassert multiprocessing.spawn._main.__qualname__ == \"_main\"\nassert multiprocessing.spawn._main.__module__ == \"multiprocessing.spawn\"\n\nargv = sys.argv\nsys.argv = [sys.executable, \"--multiprocessing-fork\"]\n\nwith open(parent_w, 'wb', closefd=False) as f:\n    f.write(fp.getbuffer())\n\nspawn_main(pipe_handle=child_r)\n\"\"\")\n\n\nfoo_normal = \"\"\"\ndef foo():\n    return 0\n\"\"\"\n\n\nfoo_infinite = \"\"\"\nimport time\ndef foo():\n    print(\"ready\", flush=True)\n    while(True):\n        time.sleep(0.5)\n\"\"\"\n\n\ncheck_output = r\"\"\"\nimport os\nimport subprocess\nimport sys\n\nwith open(\"check_output_echo.py\", \"w\") as f:\n    f.write(\"import sys; print(sys.argv)\")\n\nprint(\"PATCH TEST START\")\nprint(subprocess.check_output([sys.executable, \"--version\"], text=True).strip())\nprint(subprocess.check_output([sys.executable, \"-cprint(5)\"]))\nprint(subprocess.check_output([sys.executable, \"check_output_echo.py\"], text=True))\nprint(subprocess.check_output([sys.executable, \"-v\", \"--\", \"check_output_echo.py\", \"-a\", \"42\"]))\nprint(subprocess.check_output([sys.executable, \"-Es\", \"check_output_echo.py\", \"-v\", \"--my_arg=foo bar\"], text=True))\nprint(subprocess.check_output([sys.executable, \"-Esm\", \"check_output_echo\", \"-abc\"]))\nprint(subprocess.check_output([sys.executable, \"-c\", r\"import sys; sys.stdout.buffer.write(b'\\0\\1\\2\\3\\4')\"]))\nprint(subprocess.check_output([sys.executable, \"-\", \"foo\"], input=b\"import sys; print(sys.argv)\"))\nprint(subprocess.check_output([sys.executable], input=b\"import sys; print(sys.argv)\"))\nprint(subprocess.check_output([sys.executable, \"-im\", \"check_output_echo\", \"asdf\"], input=b\"import sys; print(sys.argv)\"))\nprint(subprocess.check_output([sys.executable, \"check_output_echo.py\", \"test.py\", \"--output_dir\", \"test\", \"--other\", \"abc\"]))\nprint(subprocess.check_output([sys.executable, \"-X\", \"dev\", \"check_output_echo.py\", \"-abc\"]))\nprint(subprocess.check_output([sys.executable, \"-m\", \"viztracer\", \"check_output_echo.py\"]))\nprint(subprocess.check_output(\n    [sys.executable, \"-m\", \"check_output_echo\", \"test.py\", \"--output_dir\", \"test\", \"--other\", \"abc\"]\n))\n\n# Invalid invocations\nprint(\"No module named\" in subprocess.run([sys.executable, \"-m\", \"\"], stdout=subprocess.PIPE, text=True).stdout)\nprint(\"usage:\" in subprocess.run([sys.executable, \"-m\"], stdout=subprocess.PIPE, text=True).stdout)\nprint(\"Argument expected:\" in subprocess.run([sys.executable, \"-W\"], stdout=subprocess.PIPE, text=True).stdout)\nprint(\"PATCH TEST END\")\n\nos.remove(\"check_output_echo.py\")\n\"\"\"\n\n\nfile_after_patch_check = \"\"\"\nimport multiprocessing.spawn\nimport subprocess\nassert multiprocessing.spawn.get_command_line.__module__ == \"multiprocessing.spawn\"\nassert multiprocessing.spawn.get_command_line.__qualname__ == \"get_command_line\"\nassert subprocess.Popen.__init__.__qualname__ == \"Popen.__init__\"\nassert subprocess.Popen.__init__.__module__ == \"subprocess\"\n\"\"\"\n\n\nclass TestPatchSpawn(CmdlineTmpl):\n    @unittest.skipIf(sys.platform == \"win32\", \"pipe is different on windows so skip it\")\n    def test_patch_cmdline(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            server_proc, endpoint = ReportServer.start_process(f\"{tmpdir}/result.json\")\n\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                expected_output_file=None,\n                script=file_spawn_tmpl.substitute(\n                    foo=foo_normal, report_endpoint=endpoint\n                ),\n            )\n\n            server_proc.wait(timeout=5)\n            server_proc.stdout.close()\n\n            files = os.listdir(tmpdir)\n            self.assertEqual(len(files), 1)\n            self.assertFileExists(f\"{tmpdir}/result.json\")\n\n    @unittest.skipIf(sys.platform == \"win32\", \"pipe is different on windows so skip it\")\n    def test_patch_terminate(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            server_proc, endpoint = ReportServer.start_process(f\"{tmpdir}/result.json\")\n\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                expected_output_file=None,\n                script=file_spawn_tmpl.substitute(\n                    foo=foo_infinite, report_endpoint=endpoint\n                ),\n                send_sig=(signal.SIGTERM, \"ready\"),\n            )\n\n            server_proc.wait(timeout=5)\n            server_proc.stdout.close()\n\n            files = os.listdir(tmpdir)\n            self.assertEqual(len(files), 1)\n            self.assertFileExists(f\"{tmpdir}/result.json\")\n\n    def test_patch_args(self):\n        a = self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            expected_output_file=None,\n            script=check_output,\n        )\n        b = self.template(\n            [\"viztracer\", \"--quiet\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=check_output,\n        )\n        a_content = re.search(\n            r\"PATCH TEST START(.*)PATCH TEST END\", a.stdout.decode(\"utf-8\"), re.DOTALL\n        ).group(1)\n\n        b_content = re.search(\n            r\"PATCH TEST START(.*)PATCH TEST END\", b.stdout.decode(\"utf-8\"), re.DOTALL\n        ).group(1)\n\n        self.assertEqual(a_content, b_content)\n\n\nclass TestPatchOnly(CmdlineTmpl):\n    @unittest.skipIf(sys.platform == \"win32\", \"Windows does not have fork\")\n    def test_patch_only(self):\n        script = \"\"\"\n            import os\n            pid = os.fork()\n            def foo():\n                pass\n            def bar():\n                pass\n            if pid > 0:\n                foo()\n            else:\n                bar()\n        \"\"\"\n        with tempfile.TemporaryDirectory() as tmpdir:\n            server_proc, endpoint = ReportServer.start_process(f\"{tmpdir}/result.json\")\n            self.template(\n                [\n                    \"viztracer\",\n                    \"--patch_only\",\n                    \"--report_endpoint\",\n                    endpoint,\n                    \"cmdline_test.py\",\n                ],\n                expected_output_file=None,\n                script=script,\n            )\n            server_proc.wait(timeout=5)\n            server_proc.stdout.close()\n\n            self.assertFileExists(f\"{tmpdir}/result.json\")\n            with open(f\"{tmpdir}/result.json\", \"r\") as f:\n                data = json.load(f)\n                self.assertEqual(self.getProcessNumber(data), 1)\n                self.assertFunctionNotInEvents(data, \"foo\")\n                self.assertFunctionInEvents(data, \"bar\")\n\n\nclass TestPatchSideEffect(CmdlineTmpl):\n    def test_func_names(self):\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=file_after_patch_check,\n        )\n"
  },
  {
    "path": "tests/test_performance.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport contextlib\nimport cProfile\nimport gc\nimport logging\nimport os\nimport random\nimport tempfile\nimport time\n\nfrom viztracer import VizTracer\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass Timer:\n    def __init__(self):\n        self.timer = 0\n\n    def __enter__(self):\n        self.timer = time.perf_counter()\n        return self\n\n    def __exit__(self, type, value, trace):\n        pass\n\n    def get_time(self):\n        return time.perf_counter() - self.timer\n\n\nclass BenchmarkTimer:\n    def __init__(self):\n        self.timer_baseline = None\n        self.timer_experiments = {}\n        self._set_up_funcs = []\n\n    @contextlib.contextmanager\n    def time(self, title, section=None, baseline=False):\n        for func, args, kwargs in self._set_up_funcs:\n            func(*args, **kwargs)\n        start_time = time.perf_counter()\n        try:\n            yield\n        finally:\n            end_time = time.perf_counter()\n            data = {\n                \"dur\": end_time - start_time,\n                \"section\": section,\n            }\n            if baseline:\n                self.timer_baseline = data\n            else:\n                if title not in self.timer_experiments:\n                    self.timer_experiments[title] = []\n                self.timer_experiments[title].append(data)\n\n    def print_result(self):\n        def time_str(baseline, experiment):\n            return f\"{experiment['dur']:.9f}({experiment['dur'] / baseline['dur']:.2f})[{experiment['section']}]\"\n\n        for experiments in self.timer_experiments.values():\n            logging.info(\n                \" \".join(\n                    [\n                        time_str(self.timer_baseline, experiment)\n                        for experiment in experiments\n                    ]\n                )\n            )\n\n    def add_set_up_func(self, func, *args, **kwargs):\n        self._set_up_funcs.append((func, args, kwargs))\n\n\nclass TestPerformance(BaseTmpl):\n    def do_one_function(self, func):\n        bm_timer = BenchmarkTimer()\n        bm_timer.add_set_up_func(gc.collect)\n        gc.collect()\n        gc.disable()\n        # the original speed\n        with bm_timer.time(\"baseline\", \"baseline\", baseline=True):\n            func()\n\n        # With viztracer + c tracer\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        with bm_timer.time(\"c\", \"c\"):\n            func()\n        tracer.stop()\n        with bm_timer.time(\"c\", \"parse\"):\n            tracer.parse()\n        with tempfile.TemporaryDirectory() as tmpdir:\n            ofile = os.path.join(tmpdir, \"result.json\")\n            with bm_timer.time(\"c\", \"save\"):\n                tracer.save(output_file=ofile)\n        tracer.start()\n        func()\n        tracer.stop()\n        with tempfile.TemporaryDirectory() as tmpdir:\n            ofile = os.path.join(tmpdir, \"result.json\")\n            with bm_timer.time(\"c\", \"dump\"):\n                tracer.dump(ofile)\n        tracer.clear()\n\n        # With cProfiler\n        pr = cProfile.Profile()\n        pr.enable()\n        with bm_timer.time(\"cProfile\", \"cProfile\"):\n            func()\n        pr.disable()\n\n        gc.enable()\n\n        bm_timer.print_result()\n\n    def test_fib(self):\n        def fib():\n            def _fib(n):\n                if n <= 1:\n                    return 1\n                return _fib(n - 1) + _fib(n - 2)\n\n            return _fib(23)\n\n        self.do_one_function(fib)\n\n    def test_slow_fib(self):\n        def slow_fib():\n            def _fib(n):\n                if n <= 1:\n                    return 1\n                time.sleep(0.00001)\n                return _fib(n - 1) + _fib(n - 2)\n\n            return _fib(15)\n\n        self.do_one_function(slow_fib)\n\n    def test_qsort(self):\n        def qsort():\n            def quicksort(array):\n                if len(array) < 2:\n                    return array\n\n                low, same, high = [], [], []\n\n                pivot = array[random.randint(0, len(array) - 1)]\n\n                for item in array:\n                    if item < pivot:\n                        low.append(item)\n                    elif item == pivot:\n                        same.append(item)\n                    elif item > pivot:\n                        high.append(item)\n\n                return quicksort(low) + same + quicksort(high)\n\n            arr = [random.randrange(100000) for _ in range(5000)]\n            quicksort(arr)\n\n        self.do_one_function(qsort)\n\n    def test_hanoi(self):\n        def hanoi():\n            def TowerOfHanoi(n, source, destination, auxiliary):\n                if n == 1:\n                    return\n                TowerOfHanoi(n - 1, source, auxiliary, destination)\n                TowerOfHanoi(n - 1, auxiliary, destination, source)\n\n            TowerOfHanoi(16, \"A\", \"B\", \"C\")\n\n        self.do_one_function(hanoi)\n\n    def test_list(self):\n        def list_operation():\n            def ListOperation(n):\n                if n == 1:\n                    return [1]\n\n                ret = ListOperation(n - 1)\n                for i in range(n):\n                    ret.append(i)\n                return ret\n\n            ListOperation(205)\n\n        self.do_one_function(list_operation)\n\n    def test_float(self):\n        from math import cos, sin, sqrt\n\n        class Point:\n            __slots__ = (\"x\", \"y\", \"z\")\n\n            def __init__(self, i):\n                self.x = x = sin(i)\n                self.y = cos(i) * 3\n                self.z = (x * x) / 2\n\n            def __repr__(self):\n                return f\"<Point: x={self.x}, y={self.y}, z={self.z}>\"\n\n            def normalize(self):\n                x = self.x\n                y = self.y\n                z = self.z\n                norm = sqrt(x * x + y * y + z * z)\n                self.x /= norm\n                self.y /= norm\n                self.z /= norm\n\n            def maximize(self, other):\n                self.x = self.x if self.x > other.x else other.x\n                self.y = self.y if self.y > other.y else other.y\n                self.z = self.z if self.z > other.z else other.z\n                return self\n\n        def maximize(points):\n            next = points[0]\n            for p in points[1:]:\n                next = next.maximize(p)\n            return next\n\n        def benchmark():\n            n = 100\n            points = [None] * n\n            for i in range(n):\n                points[i] = Point(i)\n            for p in points:\n                p.normalize()\n            return maximize(points)\n\n        self.do_one_function(benchmark)\n\n\nclass TestFilterPerformance(BaseTmpl):\n    def do_one_function(self, func):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        with Timer() as t:\n            func()\n            baseline = t.get_time()\n        tracer.stop()\n        tracer.clear()\n\n        tracer.include_files = [\"/\"]\n        tracer.start()\n        with Timer() as t:\n            func()\n            include_files = t.get_time()\n        tracer.stop()\n        tracer.clear()\n\n        tracer.include_files = []\n        tracer.max_stack_depth = 200\n        tracer.start()\n        with Timer() as t:\n            func()\n            max_stack_depth = t.get_time()\n        tracer.stop()\n        tracer.clear()\n\n        logging.info(\"Filter performance:\")\n        logging.info(f\"Baseline:        {baseline:.9f}(1)\")\n        logging.info(\n            f\"Include:         {include_files:.9f}({include_files / baseline:.2f})\"\n        )\n        logging.info(\n            f\"Max stack depth: {max_stack_depth:.9f}({max_stack_depth / baseline:.2f})\"\n        )\n\n    def test_hanoi(self):\n        def hanoi():\n            def TowerOfHanoi(n, source, destination, auxiliary):\n                if n == 1:\n                    return\n                TowerOfHanoi(n - 1, source, auxiliary, destination)\n                TowerOfHanoi(n - 1, auxiliary, destination, source)\n\n            TowerOfHanoi(12, \"A\", \"B\", \"C\")\n\n        self.do_one_function(hanoi)\n"
  },
  {
    "path": "tests/test_regression.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport multiprocessing\nimport os\nimport signal\nimport sys\nimport tempfile\nimport textwrap\nimport unittest\n\nimport viztracer\nfrom viztracer import VizTracer, ignore_function\n\nfrom .base_tmpl import BaseTmpl\nfrom .cmdline_tmpl import CmdlineTmpl\n\n\nclass TestIssue1(BaseTmpl):\n    def test_datetime(self):\n        tracer = viztracer.VizTracer(verbose=0)\n        tracer.start()\n        from datetime import timedelta\n\n        timedelta(hours=5)\n        tracer.stop()\n        tracer.parse()\n        tracer.save(output_file=\"tmp.json\")\n\n        tracer = viztracer.VizTracer(verbose=0)\n        tracer.start()\n        from datetime import timedelta\n\n        timedelta(hours=5)\n        tracer.stop()\n        tracer.parse()\n        tracer.save(output_file=\"tmp.json\")\n        os.remove(\"tmp.json\")\n\n\nclass TestStackOptimization(BaseTmpl):\n    # There's an order issue in tracefunc to skip the FEE log\n    # If the stack is empty(stack_top is NULL), and we entered\n    # into an ignored function, ignore_stack_depth will increment.\n    # However, when its corresponding exit comes, ignore_stack_depth\n    # won't be decrement because the function is skipped when\n    # stack is empty and it's a return function\n    def test_instant(self):\n        def s():\n            return 0\n\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        # This is a library function which will be ignored, but\n        # this could trick the system into a ignoring status\n        tracer.add_instant('name = {\"a\": 1}')\n        s()\n        s()\n        s()\n        tracer.stop()\n        entries = tracer.parse()\n        tracer.save()\n        self.assertEqual(entries, 4)\n\n\nclass TestSegFaultRegression(BaseTmpl):\n    # Without parsing, cleanup of C function had caused segfault\n    def test_cleanup(self):\n        tracer = VizTracer()\n        tracer.start()\n        _ = len([1, 2, 3])\n        _ = sum([2, 3, 4])\n        try:\n            raise Exception(\"lol\")\n        except Exception:\n            pass\n        tracer.stop()\n        tracer.clear()\n\n\nclass TestFunctionArg(BaseTmpl):\n    def test_functionarg(self):\n        def f(n):\n            tracer.add_func_args(\"input\", n)\n            if n < 2:\n                return 1\n            return f(n - 1) + f(n - 2)\n\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        f(5)\n        tracer.stop()\n        tracer.parse()\n        inputs = set()\n        for d in tracer.data[\"traceEvents\"]:\n            if d[\"ph\"] == \"X\":\n                inputs.add(d[\"args\"][\"input\"])\n        self.assertEqual(inputs, set([0, 1, 2, 3, 4, 5]))\n\n\nissue21_code = \"\"\"\nimport argparse\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--script_option\", action=\"store_true\")\nparser.add_argument(\"-o\", action=\"store_true\")\noptions = parser.parse_args()\nprint(options)\nif not options.script_option:\n    exit(1)\n\"\"\"\n\n\nclass TestIssue21(CmdlineTmpl):\n    # viztracer --run my_script --script_option\n    # is not parsed correctly because the program gets confused\n    # about --script_option\n    def test_issue21(self):\n        self.template(\n            [\n                \"viztracer\",\n                \"--include_files\",\n                \"/\",\n                \"--run\",\n                \"cmdline_test.py\",\n                \"--script_option\",\n            ],\n            script=issue21_code,\n        )\n        self.template(\n            [\n                \"viztracer\",\n                \"--include_files\",\n                \"/\",\n                \"--\",\n                \"cmdline_test.py\",\n                \"--script_option\",\n            ],\n            script=issue21_code,\n        )\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\", \"--script_option\"], script=issue21_code\n        )\n        self.template(\n            [\"viztracer\", \"--run\", \"cmdline_test.py\", \"-o\", \"--script_option\"],\n            script=issue21_code,\n        )\n        self.template(\n            [\"viztracer\", \"--\", \"cmdline_test.py\", \"-o\", \"--script_option\"],\n            script=issue21_code,\n        )\n\n\nterm_code = \"\"\"\nimport time\na = []\na.append(1)\nprint(\"ready\", flush=True)\nfor i in range(10):\n    time.sleep(1)\n\"\"\"\n\n\nclass TestTermCaught(CmdlineTmpl):\n    @unittest.skipIf(sys.platform == \"win32\", \"windows does not have graceful term\")\n    def test_term(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"term.json\", \"cmdline_test.py\"],\n            expected_output_file=\"term.json\",\n            script=term_code,\n            send_sig=(signal.SIGTERM, \"ready\"),\n        )\n\n\nclass TestIssue42(BaseTmpl):\n    def test_issue42(self):\n        @ignore_function\n        def f():\n            lst = []\n            lst.append(1)\n\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        f()\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 0)\n\n\nissue47_code = \"\"\"\nimport sys\nimport gc\nclass C:\n    def __init__(self):\n        self.data = bytearray()\n\n    def change(self):\n        b = memoryview(self.data).tobytes()\n        self.data += b\"123123\"\n        del self.data[:1]\n\nc = C()\nc.change()\n\"\"\"\n\n\nclass TestIssue47(CmdlineTmpl):\n    def test_issue47(self):\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\", \"-o\", \"result.json\"],\n            script=issue47_code,\n            expected_output_file=\"result.json\",\n            expected_entries=7,\n        )\n\n\nclass TestIssue58(CmdlineTmpl):\n    def test_issue58(self):\n        if multiprocessing.get_start_method() == \"fork\":\n            self.template(\n                [\"viztracer\", \"-m\", \"tests.modules.issue58\"],\n                expected_output_file=\"result.json\",\n            )\n\n\nclass TestIssue83(CmdlineTmpl):\n    def test_issue83(self):\n        self.template(\n            [\"viztracer\", \"--quiet\", \"-m\", \"tests.modules.issue83\"],\n            expected_stdout=\"__main__\",\n        )\n\n\nissue119_code = \"\"\"\nimport os\nimport sys\nimport tempfile\nos.chdir(sys.argv[1])\n\"\"\"\n\n\nclass TestIssue119(CmdlineTmpl):\n    def test_issue119(self):\n        with tempfile.TemporaryDirectory() as name:\n            filepath = os.path.join(name, \"result.json\")\n            cwd = os.getcwd()\n            os.chdir(name)\n            with tempfile.TemporaryDirectory() as script_dir:\n                try:\n                    self.template(\n                        [\n                            \"viztracer\",\n                            \"-o\",\n                            \"result.json\",\n                            \"cmdline_test.py\",\n                            script_dir,\n                        ],\n                        script=issue119_code,\n                        expected_output_file=filepath,\n                    )\n                finally:\n                    os.chdir(cwd)\n\n\nissue121_code = \"\"\"\nimport atexit\n\ndef fib(n):\n    if n <= 2:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n\natexit.register(fib, 6)\n\"\"\"\n\n\nclass TestIssue121(CmdlineTmpl):\n    def test_issue121(self):\n        def check_func(data):\n            fib_count = sum([\"fib\" in event[\"name\"] for event in data[\"traceEvents\"]])\n            self.assertEqual(fib_count, 15)\n\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\", \"--log_exit\"],\n            script=issue121_code,\n            check_func=check_func,\n        )\n\n\nissue141_code = \"\"\"\nimport multiprocessing as mp\nfrom concurrent.futures import ProcessPoolExecutor\nimport time\n\n\ndef my_function(*args):\n   time.sleep(0.5)\n\n\nif __name__ == '__main__':\n    e = ProcessPoolExecutor(max_workers=3)\n    e.map(my_function, range(1))\n\"\"\"\n\n\nclass TestIssue141(CmdlineTmpl):\n    def test_issue141(self):\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            script=issue141_code,\n        )\n\n\nclass TestIssue160(CmdlineTmpl):\n    def test_issue160(self):\n        def check_func(data):\n            pids = set()\n            for entry in data[\"traceEvents\"]:\n                pids.add(entry[\"pid\"])\n            self.assertEqual(len(pids), 2)\n\n        self.template(\n            [\"viztracer\", \"-m\", \"tests.modules.issue160\"],\n            expected_output_file=\"result.json\",\n            check_func=check_func,\n        )\n\n\nissue162_code = \"\"\"\nfrom concurrent.futures import ProcessPoolExecutor\ndef work(d):\n    return d * 2\n\nif __name__ == \"__main__\":\n    output = 0\n    data = range(10)\n    with ProcessPoolExecutor(2) as executor:\n        for _, data_collected in zip(data, executor.map(work, data)):\n            output += data_collected\n    print(output)\n\"\"\"\n\n\nissue162_code_os_popen = \"\"\"\nimport os\nprint(os.popen(\"echo test_issue162\").read())\n\"\"\"\n\n\nclass TestIssue162(CmdlineTmpl):\n    def test_issue162(self):\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=issue162_code,\n            expected_stdout=r\"90\\s*Saving.*\",\n        )\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Windows does not have echo\")\n    def test_issue162_os_popen(self):\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=issue162_code_os_popen,\n            expected_stdout=r\".*test_issue162.*\",\n        )\n\n\nclass TestIssue508(CmdlineTmpl):\n    def test_issue508(self):\n        script = \"\"\"\n            import inspect\n            import os\n            import viztracer\n\n            exclude = os.path.dirname(inspect.__file__)\n\n            def call_self(n):\n                if n == 0:\n                    return\n                call_self(n - 1)\n\n            with viztracer.VizTracer(exclude_files=[exclude], max_stack_depth=6):\n                inspect.getsource(call_self)\n                call_self(10)\n        \"\"\"\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=\"result.json\",\n            expected_entries=6,\n        )\n\n\n@unittest.skipIf(sys.version_info < (3, 12), \"We only care about monitoring backend\")\nclass TestIssue552(CmdlineTmpl):\n    def test_issue552(self):\n        script = textwrap.dedent(\"\"\"\n            from viztracer import VizTracer\n            class A:\n                f = classmethod(repr)\n            with VizTracer():\n                A().f()\n        \"\"\")\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=script,\n            expected_output_file=\"result.json\",\n            expected_entries=1,\n        )\n\n\nfile_timestamp_disorder = \"\"\"\ndef g():\n    pass\n\ng()\ng()\ng()\ng()\ng()\ng()\ng()\ng()\ng()\ng()\ng()\n\"\"\"\n\n\nclass TestTimestampDisorder(CmdlineTmpl):\n    def test_timestamp_overlap(self):\n        def check_func(data):\n            counter = 0\n            curr_time = 0\n            for event in data[\"traceEvents\"]:\n                if event[\"ph\"] == \"X\" and event[\"name\"].startswith(\"g\"):\n                    counter += 1\n                    self.assertGreaterEqual(event[\"ts\"], curr_time)\n                    self.assertGreaterEqual(event[\"dur\"], 0)\n                    curr_time = event[\"ts\"] + event[\"dur\"]\n\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            script=file_timestamp_disorder,\n            expected_output_file=\"result.json\",\n            check_func=check_func,\n        )\n\n\nclass TestTimestampSkew(CmdlineTmpl):\n    \"\"\"\n    Ensure that we are not accumulating timestamp too much with artificial\n    increments.\n    \"\"\"\n\n    def test_timestamp_skew(self):\n        script = textwrap.dedent(r\"\"\"\n            import time\n            from viztracer import get_tracer\n            for _ in range(1000000):\n                len([])\n            start = time.perf_counter_ns()\n            time.sleep(0.002)\n            end = time.perf_counter_ns()\n            get_tracer().log_instant(\"duration\", args={\"duration\": (end - start) / 1000})\n        \"\"\")\n\n        def check_func(data):\n            for event in reversed(data[\"traceEvents\"]):\n                if event[\"ph\"] == \"i\":\n                    duration = event[\"args\"][\"duration\"]\n                elif event[\"ph\"] == \"X\" and \"time.sleep\" in event[\"name\"]:\n                    error = abs(event[\"dur\"] - duration) / duration\n                    self.assertLess(error, 0.1)\n\n        self.template(\n            [\"viztracer\", \"--tracer_entries\", \"100\", \"cmdline_test.py\"],\n            script=script,\n            check_func=check_func,\n        )\n\n\nissue285_code = \"\"\"\nimport threading\nfrom viztracer import get_tracer\nfrom viztracer.vizcounter import VizCounter\nfrom viztracer.vizobject import VizObject\n\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n\n\nclass MyThread(threading.Thread):\n    def run(self):\n        fib(7)\n\n\ntracer = get_tracer()\n\n# test object event name escape with and without args\nobj = VizObject(tracer, \"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\")\nobj.test = \"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\"\n\n# test counter event name escape with and without args\ncounter = VizCounter(tracer, \"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\")\ncounter.test = 10\n\n# test instant event name escape with and without args\ntracer.log_instant(\"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\")\ntracer.log_instant(\"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\", \"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\")\n\n# test thread name escape\ntest_thread = MyThread(name = \"test \\\\\\\\ \\\\\\\" \\\\b \\\\f \\\\n \\\\r \\\\t\")\ntest_thread.start()\ntest_thread.join()\n\n\"\"\"\n\n\nclass TestEscapeString(CmdlineTmpl):\n    def test_escape_string(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--dump_raw\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=issue285_code,\n            expected_stdout=\".*Total Entries:.*\",\n        )\n\n\nwait_for_child = \"\"\"\nimport os\nimport time\nimport multiprocessing\n\ndef target(conn):\n    conn.recv()\n    conn.send(\"ready\")\n    conn.recv()\n    if os.getenv(\"GITHUB_ACTIONS\"):\n        time.sleep(3)\n    else:\n        time.sleep(1)\n\nif __name__ == '__main__':\n    parent, child = multiprocessing.Pipe()\n    p = multiprocessing.Process(target=target, args=(child,))\n    p.start()\n    # The main process will join the child in multiprocessing.process._children.\n    # This is a hack to make sure the main process won't join the child process,\n    # so we can test the VizUI.wait_children_finish function\n    multiprocessing.process._children = set()\n    parent.send(\"check\")\n    parent.recv()\n    parent.send(\"exit\")\n\"\"\"\n\nwait_for_terminated_child = \"\"\"\nimport time\nimport os\nimport signal\nimport multiprocessing\n\ndef target(conn):\n    conn.recv()\n    conn.send(\"ready\")\n    conn.recv()\n    if os.getenv(\"GITHUB_ACTIONS\"):\n        time.sleep(3)\n    else:\n        time.sleep(1)\n    os.kill(os.getpid(), signal.SIGTERM)\n\nif __name__ == '__main__':\n    parent, child = multiprocessing.Pipe()\n    p = multiprocessing.Process(target=target, args=(child,))\n    p.start()\n    # The main process will join the child in multiprocessing.process._children.\n    # This is a hack to make sure the main process won't join the child process,\n    # so we can test the VizUI.wait_children_finish function\n    multiprocessing.process._children = set()\n    parent.send(\"check\")\n    parent.recv()\n    parent.send(\"exit\")\n\"\"\"\n\n\nclass TestWaitForChild(CmdlineTmpl):\n    def checkfunc(self, data):\n        pids = set()\n        for entry in data[\"traceEvents\"]:\n            pids.add(entry[\"pid\"])\n        self.assertEqual(len(pids), 2)\n\n    def test_child_process_exits_normally(self):\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=wait_for_child,\n            check_func=self.checkfunc,\n        )\n\n    def test_child_process_exits_abnormally(self):\n        if sys.platform == \"win32\":\n            # For windows, we just want to make sure it doesn't hang\n            # and generates the output file correctly\n            self.template(\n                [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n                expected_output_file=\"result.json\",\n                script=wait_for_terminated_child,\n            )\n        else:\n            self.template(\n                [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n                expected_output_file=\"result.json\",\n                script=wait_for_terminated_child,\n                check_func=self.checkfunc,\n            )\n\n\nclass TestFinalizerReference(CmdlineTmpl):\n    def test_finalizer(self):\n        script = textwrap.dedent(\"\"\"\n            import atexit\n            import sys\n\n            def task():\n                sys.getsizeof([1, 2, 3])\n                print(\"success\")\n\n            if __name__ == \"__main__\":\n                atexit.register(task)\n        \"\"\")\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"cmdline_test.py\"],\n            expected_output_file=\"result.json\",\n            script=script,\n            expected_stdout=\"success\",\n        )\n\n\nclass TestThreadingExitOrder(CmdlineTmpl):\n    def test_threading_exit_order(self):\n        threading_exit_order = \"\"\"\n            import threading\n\n            if __name__ == \"__main__\":\n                threading._register_atexit(print, \" world\")\n                threading._register_atexit(print, \"hello\", end=\"\")\n            \"\"\"\n        self.template(\n            [\"viztracer\", \"cmdline_test.py\"],\n            script=threading_exit_order,\n            expected_stdout=\"hello world\",\n        )\n"
  },
  {
    "path": "tests/test_remote.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport base64\nimport json\nimport os\nimport platform\nimport re\nimport signal\nimport subprocess\nimport sys\nimport textwrap\nimport time\nimport unittest\n\nfrom viztracer import VizTracer\nfrom viztracer.attach_process.add_code_to_python_process import (\n    run_python_code,  # type: ignore\n)\nfrom viztracer.util import pid_exists\n\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .util import cmd_with_coverage\n\nattach_unavailable = sys.platform == \"win32\" or (\n    sys.platform == \"darwin\"\n    and (sys.version_info > (3, 11) or \"arm\" in platform.processor())\n)\n\n\n@unittest.skipIf(attach_unavailable, \"Does not support attach on this platform\")\nclass TestRemote(CmdlineTmpl):\n    def test_install(self):\n        tracer = VizTracer(output_file=\"remote.json\", verbose=0)\n        tracer.install()\n        os.kill(os.getpid(), signal.SIGUSR1)\n        time.sleep(0.1)\n        os.kill(os.getpid(), signal.SIGUSR2)\n        self.assertFileExists(\"remote.json\")\n        os.remove(\"remote.json\")\n\n    def test_attach_installed(self):\n        file_to_attach = textwrap.dedent(\"\"\"\n            from viztracer import VizTracer\n            import time\n            tracer = VizTracer(output_file='remote.json')\n            tracer.install()\n            print(\"Ready\", flush=True)\n            while True:\n                time.sleep(0.5)\n        \"\"\")\n        attach_installed_cmd = cmd_with_coverage([\"viztracer\", \"--attach_installed\"])\n        attach_cmd = cmd_with_coverage([\"viztracer\", \"-o\", \"remote.json\", \"--attach\"])\n\n        output_file = \"remote.json\"\n\n        self.attach_check(file_to_attach, attach_cmd, output_file)\n        self.attach_check(\n            file_to_attach, attach_installed_cmd, output_file, use_installed=True\n        )\n\n    def test_attach(self):\n        file_to_attach = textwrap.dedent(\"\"\"\n            import time\n            print(\"Ready\", flush=True)\n            while True:\n                time.sleep(0.5)\n        \"\"\")\n        output_file = os.path.abspath(f\"./remote_{int(time.time() * 1000)}.json\")\n        attach_cmd = cmd_with_coverage([\"viztracer\", \"-o\", output_file, \"--attach\"])\n\n        self.attach_check(file_to_attach, attach_cmd, output_file)\n\n        file_to_attach_tracing = textwrap.dedent(\"\"\"\n            import time\n            import viztracer\n            tracer = viztracer.VizTracer(tracer_entries=1000)\n            tracer.start()\n            print(\"Ready\", flush=True)\n            while True:\n                time.sleep(0.5)\n        \"\"\")\n\n        self.attach_check(\n            file_to_attach_tracing, attach_cmd, output_file, file_should_exist=False\n        )\n\n    def attach_check(\n        self,\n        file_to_attach,\n        attach_cmd,\n        output_file,\n        file_should_exist=True,\n        use_installed=False,\n    ):\n        with open(\"attached_script.py\", \"w\") as f:\n            f.write(file_to_attach)\n\n        # Run the process to attach first\n        script_cmd = cmd_with_coverage([sys.executable, \"attached_script.py\"])\n        p_script = subprocess.Popen(\n            script_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE\n        )\n        try:\n            pid_to_attach = p_script.pid\n            attach_cmd = attach_cmd + [str(pid_to_attach)]\n\n            out = p_script.stdout.readline()\n            self.assertIn(\"Ready\", out.decode(\"utf-8\"))\n\n            wait_time = 1\n            # Test attach feature\n            attach_cmd_with_t = attach_cmd + [\"-t\", str(wait_time)]\n            p_attach = subprocess.Popen(\n                attach_cmd_with_t, stdout=subprocess.PIPE, stderr=subprocess.PIPE\n            )\n            p_attach.wait()\n            out, err = (\n                p_attach.stdout.read().decode(\"utf-8\"),\n                p_attach.stderr.read().decode(\"utf-8\"),\n            )\n            p_attach.stdout.close()\n            p_attach.stderr.close()\n            self.assertEqual(\n                p_attach.returncode, 0, msg=f\"attach failed\\n{out}\\n{err}\\n\"\n            )\n            self.assertIn(\"success\", out, msg=f\"Attach success not in {out}\")\n            if file_should_exist:\n                self.assertFileExists(output_file, 40, msg=f\"{out}\\n{err}\\n\")\n                os.remove(output_file)\n            else:\n                self.assertFileNotExist(output_file)\n\n            p_attach = subprocess.Popen(attach_cmd, stdout=subprocess.PIPE, bufsize=0)\n            time.sleep(wait_time)\n            # Read the attach success line\n            out = p_attach.stdout.readline()\n            self.assertIn(\"success\", out.decode(\"utf-8\"))\n            p_attach.send_signal(signal.SIGINT)\n            p_attach.wait()\n            p_attach.stdout.close()\n            self.assertEqual(p_attach.returncode, 0)\n            time.sleep(0.5)\n\n            if file_should_exist:\n                self.assertFileExists(output_file, 20)\n                os.remove(output_file)\n            else:\n                self.assertFileNotExist(output_file)\n        finally:\n            p_script.terminate()\n            p_script.wait()\n            attached_out, attached_err = (\n                p_script.stdout.read().decode(\"utf-8\"),\n                p_script.stderr.read().decode(\"utf-8\"),\n            )\n            p_script.stdout.close()\n            p_script.stderr.close()\n            os.remove(\"attached_script.py\")\n            if file_should_exist and not use_installed:\n                self.assertIn(\n                    \"Detected attaching\",\n                    attached_out,\n                    msg=f\"out:\\n{attached_out}\\nerr:\\n{attached_err}\\n\",\n                )\n                self.assertIn(\n                    \"Saved report to\",\n                    attached_out,\n                    msg=f\"out:\\n{attached_out}\\nerr:\\n{attached_err}\\n\",\n                )\n\n        p_attach_invalid = subprocess.Popen(attach_cmd, stdout=subprocess.DEVNULL)\n        p_attach_invalid.wait()\n        self.assertTrue(p_attach_invalid.returncode != 0)\n\n    def test_uninstall(self):\n        file_to_attach = textwrap.dedent(\"\"\"\n            import time\n            import viztracer\n            tracer = viztracer.VizTracer()\n            tracer.start()\n            print(\"Ready\", flush=True)\n            while True:\n                time.sleep(0.5)\n        \"\"\")\n        output_file = os.path.abspath(f\"remote_{int(time.time() * 1000)}.json\")\n        uninstall_cmd = cmd_with_coverage(\n            [\"viztracer\", \"-o\", output_file, \"--uninstall\"]\n        )\n        attach_cmd = cmd_with_coverage([\"viztracer\", \"-o\", output_file, \"--attach\"])\n\n        with open(\"attached_script.py\", \"w\") as f:\n            f.write(file_to_attach)\n\n        # Run the process to attach first\n        script_cmd = cmd_with_coverage([sys.executable, \"attached_script.py\"])\n        p_script = subprocess.Popen(\n            script_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL\n        )\n        try:\n            out = p_script.stdout.readline()\n            self.assertIn(\"Ready\", out.decode(\"utf-8\"))\n            pid_to_attach = p_script.pid\n            uninstall_cmd = uninstall_cmd + [str(pid_to_attach)]\n            attach_cmd = attach_cmd + [str(pid_to_attach)]\n\n            # Give it some time for viztracer to install\n            time.sleep(1)\n\n            # Try to attach. This should fail as viztracer is already running\n            p_attach = subprocess.Popen(\n                attach_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL\n            )\n            out = p_attach.stdout.readline()\n            self.assertIn(\"success\", out.decode(\"utf-8\"))\n            p_attach.send_signal(signal.SIGINT)\n            p_attach.wait()\n            p_attach.stdout.close()\n            self.assertTrue(p_attach.returncode == 0)\n            time.sleep(0.5)\n            self.assertFileNotExist(output_file)\n\n            # Uninstall viztracer from the process\n            subprocess.check_call(uninstall_cmd)\n\n            # Try it again\n            p_attach = subprocess.Popen(\n                attach_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL\n            )\n            out = p_attach.stdout.readline()\n            self.assertIn(\"success\", out.decode(\"utf-8\"))\n            p_attach.send_signal(signal.SIGINT)\n            p_attach.wait()\n            p_attach.stdout.close()\n            self.assertTrue(p_attach.returncode == 0)\n            time.sleep(0.5)\n            self.assertFileExists(output_file)\n            os.remove(output_file)\n        finally:\n            p_script.terminate()\n            p_script.wait()\n            p_script.stdout.close()\n            os.remove(\"attached_script.py\")\n\n        p_attach_invalid = subprocess.Popen(\n            attach_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL\n        )\n        p_attach_invalid.wait()\n        self.assertTrue(p_attach_invalid.returncode != 0)\n\n        p_attach_uninstall = subprocess.Popen(\n            uninstall_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL\n        )\n        p_attach_uninstall.wait()\n        self.assertTrue(p_attach_uninstall.returncode != 0)\n\n\nclass TestRemoteFail(CmdlineTmpl):\n    @unittest.skipUnless(\n        sys.platform == \"win32\"\n        or (sys.platform == \"darwin\" and \"arm\" in platform.processor()),\n        \"Only test unavailable platform\",\n    )\n    def test_unsupported(self):\n        tracer = VizTracer(output_file=\"remote.json\")\n        with self.assertRaises(SystemExit):\n            tracer.install()\n\n        self.template([\"viztracer\", \"--attach\", \"1234\"], success=False)\n        self.template([\"viztracer\", \"--attach_installed\", \"1234\"], success=False)\n        self.template([\"viztracer\", \"--uninstall\", \"1234\"], success=False)\n\n\n@unittest.skipIf(attach_unavailable, \"Does not support this platform\")\nclass TestAttachSanity(CmdlineTmpl):\n    def test_basic(self):\n        file_to_attach = textwrap.dedent(\"\"\"\n            import time\n            print(\"Ready\", flush=True)\n            while True:\n                time.sleep(0.5)\n        \"\"\")\n        with open(\"attached_script.py\", \"w\") as f:\n            f.write(file_to_attach)\n\n        # Run the process to attach first\n        script_cmd = cmd_with_coverage([sys.executable, \"attached_script.py\"])\n        p_script = subprocess.Popen(script_cmd, stdout=subprocess.PIPE)\n        try:\n            out = p_script.stdout.readline()\n            self.assertIn(\"Ready\", out.decode(\"utf-8\"))\n            pid_to_attach = p_script.pid\n            retcode, out, err = run_python_code(\n                pid_to_attach, 'print(\\\\\"finish\\\\\", flush=True);'\n            )\n            self.assertEqual(retcode, 0, msg=f\"out: {out}; err: {err}\")\n        finally:\n            p_script.terminate()\n            p_script.wait()\n            self.assertIn(\"finish\", p_script.stdout.read().decode(\"utf-8\"))\n            p_script.stdout.close()\n            os.remove(\"attached_script.py\")\n\n\n@unittest.skipIf(attach_unavailable, \"Does not support this platform\")\nclass TestAttachScript(CmdlineTmpl):\n    def test_attach_script(self):\n        # Isolate the attach stuff in a separate process\n        kwargs = {\"output_file\": \"attach_test.json\"}\n        kwargs_non_exist = {\"output_file\": \"non_exist.json\"}\n        kwargs_b64 = base64.urlsafe_b64encode(\n            json.dumps(kwargs).encode(\"ascii\")\n        ).decode(\"ascii\")\n        kwargs_non_exist_b64 = base64.urlsafe_b64encode(\n            json.dumps(kwargs_non_exist).encode(\"ascii\")\n        ).decode(\"ascii\")\n        attach_script = textwrap.dedent(f\"\"\"\n            import viztracer.attach\n            print(viztracer.attach.attach_status.created_tracer, flush=True)\n            viztracer.attach.start_attach(\\\"{kwargs_b64}\\\")\n            print(viztracer.attach.attach_status.created_tracer, flush=True)\n            viztracer.attach.start_attach(\\\"{kwargs_b64}\\\")\n            a = []\n            a.append(1)\n            viztracer.attach.stop_attach()\n            print(viztracer.attach.attach_status.created_tracer, flush=True)\n            viztracer.attach.start_attach(\\\"{kwargs_non_exist_b64}\\\")\n            viztracer.attach.uninstall_attach()\n            print(viztracer.attach.attach_status.created_tracer, flush=True)\n        \"\"\")\n\n        self.template(\n            [sys.executable, \"cmdline_test.py\"],\n            script=attach_script,\n            expected_output_file=\"attach_test.json\",\n            expected_stdout=re.compile(\n                r\".*?False.*?True.*?False.*?False.*?\", re.DOTALL\n            ),\n            expected_stderr=\".*Can't attach.*\",\n        )\n        if os.path.exists(\"non_exist.json\"):\n            os.remove(\"non_exist.json\")\n            self.fail(\"uninstall failed to prevent tracer from saving data\")\n\n\n@unittest.skipUnless(\n    sys.platform == \"darwin\"\n    and \"arm\" not in platform.processor()\n    and sys.version_info >= (3, 11),\n    \"Does not support 3.11+ on Mac\",\n)\nclass TestMacWarning(CmdlineTmpl):\n    def test_mac_warning(self):\n        pid = 12345\n        while pid_exists(pid):\n            pid += 1\n        self.template(\n            [\"viztracer\", \"--attach\", str(pid)],\n            success=False,\n            expected_stdout=\".*Warning.*\",\n        )\n"
  },
  {
    "path": "tests/test_report_builder.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport io\nimport json\nimport os\nimport shutil\nimport sys\nimport tempfile\nimport textwrap\nfrom unittest.mock import patch\n\nimport viztracer\nfrom viztracer.report_builder import ReportBuilder\n\nfrom .base_tmpl import BaseTmpl\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .package_env import package_matrix\n\n\nclass TestReportBuilder(BaseTmpl):\n    def test_file(self):\n        json_path = os.path.join(os.path.dirname(__file__), \"data\", \"multithread.json\")\n        with open(json_path) as f:\n            rb = ReportBuilder(json.loads(f.read()), verbose=0)\n        with io.StringIO() as s:\n            rb.save(s)\n            result1 = s.getvalue()\n        with io.StringIO() as s:\n            rb.save(s)\n            result2 = s.getvalue()\n        self.assertEqual(result1, result2)\n\n    def test_nonexist_directory(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            nonexist_dir = os.path.join(tmpdir, \"nonexist_dir\")\n            data = {\"traceEvents\": []}\n            rb = ReportBuilder(data, verbose=0)\n            rb.save(os.path.join(nonexist_dir, \"result.json\"))\n            self.assertFileExists(os.path.join(nonexist_dir, \"result.json\"))\n\n    def test_minimize_memory(self):\n        json_path = os.path.join(os.path.dirname(__file__), \"data\", \"multithread.json\")\n        with open(json_path) as f:\n            rb = ReportBuilder(json.loads(f.read()), verbose=0, minimize_memory=True)\n        with io.StringIO() as s:\n            rb.save(s)\n            result1 = s.getvalue()\n        with open(json_path) as f:\n            rb = ReportBuilder(json.loads(f.read()), verbose=0, minimize_memory=False)\n        with io.StringIO() as s:\n            rb.save(s)\n            result2 = s.getvalue()\n        self.assertEqual(result1, result2)\n\n    def test_get_source_from_filename(self):\n        self.assertIsNotNone(\n            ReportBuilder.get_source_from_filename(\"<frozen importlib._bootstrap>\")\n        )\n        self.assertIsNotNone(ReportBuilder.get_source_from_filename(__file__))\n        self.assertIsNone(\n            ReportBuilder.get_source_from_filename(\"<frozen nonexistmodule>\")\n        )\n        self.assertIsNone(ReportBuilder.get_source_from_filename(\"<frozen incomplete\"))\n\n    def test_invalid(self):\n        with self.assertRaises(TypeError):\n            _ = ReportBuilder(123123)\n\n        with self.assertRaises(TypeError):\n            _ = ReportBuilder([123])\n            _ = ReportBuilder([123, 223])\n\n        with self.assertRaises(ValueError):\n            _ = ReportBuilder([\"/nosuchfile\"])\n            _ = ReportBuilder([\"/nosuchfile1\", \"nosuchfile2\"])\n\n        with self.assertRaises(ValueError):\n            rb = ReportBuilder([])\n            rb.save()\n\n    def test_too_many_entry(self):\n        json_path = os.path.join(os.path.dirname(__file__), \"data\", \"multithread.json\")\n        with open(json_path) as f:\n            rb = ReportBuilder(json.loads(f.read()), verbose=1)\n        rb.entry_number_threshold = 20\n        # Coverage only\n        with io.StringIO() as s:\n            rb.save(s)\n\n    def test_invalid_json(self):\n        invalid_json_path = os.path.join(os.path.dirname(__file__), \"data\", \"fib.py\")\n        with self.assertRaises(Exception):\n            ReportBuilder([invalid_json_path], verbose=1)\n\n    @patch(\"sys.stdout\", new_callable=io.StringIO)\n    def test_invalid_json_file(self, mock_stdout):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            invalid_json_path = os.path.join(\n                os.path.dirname(__file__), \"data\", \"fib.py\"\n            )\n            valid_json_path = os.path.join(\n                os.path.dirname(__file__), \"data\", \"multithread.json\"\n            )\n            invalid_json_file = shutil.copy(\n                invalid_json_path, os.path.join(tmpdir, \"invalid.json\")\n            )\n            valid_json_file = shutil.copy(\n                valid_json_path, os.path.join(tmpdir, \"valid.json\")\n            )\n            rb = ReportBuilder([invalid_json_file, valid_json_file], verbose=1)\n            with io.StringIO() as s:\n                rb.save(s)\n            self.assertIn(\"Invalid json file\", mock_stdout.getvalue())\n\n    @patch(\"sys.stdout\", new_callable=io.StringIO)\n    def test_all_invalid_json(self, mock_stdout):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            invalid_json_path = os.path.join(\n                os.path.dirname(__file__), \"data\", \"fib.py\"\n            )\n            invalid_json_file = shutil.copy(\n                invalid_json_path, os.path.join(tmpdir, \"invalid.json\")\n            )\n            rb = ReportBuilder([invalid_json_file], verbose=1)\n            with self.assertRaises(Exception) as context:\n                with io.StringIO() as s:\n                    rb.save(s)\n            self.assertEqual(str(context.exception), \"No valid json files found\")\n\n    def test_combine(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            file_path1 = os.path.join(tmpdir, \"result1.json\")\n            file_path2 = os.path.join(tmpdir, \"result2.json\")\n            with viztracer.VizTracer(output_file=file_path1, verbose=0):\n                a = []\n                for _ in range(10):\n                    a.append(1)\n\n            with viztracer.VizTracer(\n                tracer_entries=5, output_file=file_path2, verbose=0\n            ):\n                a = []\n                for _ in range(10):\n                    a.append(1)\n\n            rb = ReportBuilder([file_path1, file_path2], verbose=0)\n            with io.StringIO() as s:\n                rb.save(output_file=s)\n                data = json.loads(s.getvalue())\n                self.assertTrue(data[\"viztracer_metadata\"][\"overflow\"])\n\n            # Try to combine with an empty file\n            empty_file = os.path.join(tmpdir, \"empty.json\")\n            with open(empty_file, \"w\") as f:\n                f.write(json.dumps({\"traceEvents\": []}))\n\n            rb = ReportBuilder([empty_file, file_path1], verbose=0)\n            with io.StringIO() as s:\n                rb.save(output_file=s)\n                data = json.loads(s.getvalue())\n                self.assertEqual(\n                    len([e for e in data[\"traceEvents\"] if e[\"name\"] == \"list.append\"]),\n                    10,\n                )\n\n\nclass TestReportBuilderCmdline(CmdlineTmpl):\n    @package_matrix(\n        [\"~orjson\", \"orjson\"] if \"free-threading\" not in sys.version else None\n    )\n    def test_package_matrix(self):\n        \"\"\"\n        The module will be imported only once so flipping the package matrix will only\n        work when we start a new script\n        \"\"\"\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            invalid_json_path = os.path.join(\n                os.path.dirname(__file__), \"data\", \"fib.py\"\n            )\n            invalid_json_file = shutil.copy(\n                invalid_json_path, os.path.join(tmpdir, \"invalid.json\")\n            )\n\n            script = textwrap.dedent(f\"\"\"\n                import io\n                from viztracer.report_builder import ReportBuilder\n                rb = ReportBuilder([{repr(invalid_json_file)}], verbose=1)\n                try:\n                    with io.StringIO() as s:\n                        rb.save(s)\n                except Exception as e:\n                    assert str(e) == \"No valid json files found\"\n                else:\n                    assert False\n            \"\"\")\n\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                script=script,\n                expected_output_file=None,\n            )\n"
  },
  {
    "path": "tests/test_report_server.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport json\nimport os\nimport signal\nimport subprocess\nimport sys\nimport tempfile\nimport textwrap\nimport time\nimport unittest\n\nfrom viztracer import VizTracer\nfrom viztracer.report_server import ReportServer\n\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .util import cmd_with_coverage, get_free_port\n\n\nclass TestReportServer(CmdlineTmpl):\n    def test_report_server_with_endpoint(self):\n        script = textwrap.dedent(\"\"\"\n            def foo():\n                pass\n            foo()\n        \"\"\")\n\n        with tempfile.TemporaryDirectory() as tmpdir:\n            endpoint = f\"127.0.0.1:{get_free_port()}\"\n            server_proc, actual_endpoint = ReportServer.start_process(\n                output_file=f\"{tmpdir}/result.json\",\n                report_endpoint=endpoint,\n            )\n            self.assertEqual(endpoint, actual_endpoint)\n\n            self.template(\n                [\"viztracer\", \"--report_endpoint\", endpoint, \"cmdline_test.py\"],\n                script=script,\n                expected_output_file=None,\n            )\n            server_proc.__exit__(None, None, None)\n\n            with open(f\"{tmpdir}/result.json\") as f:\n                data = json.load(f)\n                self.assertTrue(\n                    any(\"foo\" in event[\"name\"] for event in data[\"traceEvents\"])\n                )\n\n    def test_cleared(self):\n        server = ReportServer(\n            output_file=\"result.json\",\n        )\n\n        server.clear()\n\n        with self.assertRaises(RuntimeError):\n            server.run()\n\n    @unittest.skipIf(\n        sys.platform == \"win32\",\n        \"Skip Windows due to subprocess signal handling differences\",\n    )\n    def test_no_data(self):\n        cmd = cmd_with_coverage(\n            [\n                \"viztracer\",\n                \"--report_server\",\n                \"-o\",\n                \"result.json\",\n            ]\n        )\n        p = subprocess.Popen(\n            cmd,\n            stdin=subprocess.PIPE,\n            stdout=subprocess.PIPE,\n            stderr=subprocess.STDOUT,\n            text=True,\n        )\n\n        out, _ = p.communicate(\"\\n\")\n        self.assertIn(\"No reports collected, nothing to save.\", out)\n\n    @unittest.skipIf(\n        sys.platform == \"win32\",\n        \"Windows terminate will kill the process without cleanup\",\n    )\n    def test_server_shutdown_before_save(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            server_proc, endpoint = ReportServer.start_process(\n                output_file=f\"{tmpdir}/result.json\",\n            )\n\n            tracer = VizTracer(report_endpoint=endpoint, verbose=0)\n            tracer.start()\n            server_proc.send_signal(signal.SIGINT)\n            server_proc.__exit__(None, None, None)\n            with self.assertWarns(RuntimeWarning):\n                tracer.save()\n\n    def test_report_server_down(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            with self.assertRaises(RuntimeError):\n                with VizTracer(ignore_multiprocess=False) as tracer:\n                    tracer.report_server_process.terminate()\n\n    def test_report_server_env_variable(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            report_server_cmd = cmd_with_coverage(\n                [\n                    \"viztracer\",\n                    \"--report_server\",\n                    \"-o\",\n                    f\"{tmpdir}/result.json\",\n                ]\n            )\n\n            port = get_free_port()\n\n            report_server_proc = subprocess.Popen(\n                report_server_cmd,\n                stdout=subprocess.PIPE,\n                stderr=subprocess.STDOUT,\n                env={\n                    \"VIZTRACER_REPORT_SERVER_ENDPOINT\": f\"127.0.0.1:{port}\",\n                    **os.environ,\n                },\n                text=True,\n            )\n\n            script_cmd = cmd_with_coverage([\"viztracer\", \"-c\", \"print('hello')\"])\n\n            line = report_server_proc.stdout.readline()\n            self.assertIn(f\"127.0.0.1:{port}\", line)\n\n            script_proc = subprocess.Popen(\n                script_cmd,\n                stdout=subprocess.DEVNULL,\n                stderr=subprocess.DEVNULL,\n                env={\n                    \"VIZTRACER_REPORT_SERVER_ENDPOINT\": f\"127.0.0.1:{port}\",\n                    **os.environ,\n                },\n                text=True,\n            )\n\n            script_proc.wait()\n\n            report_server_proc.wait()\n            report_server_proc.stdout.close()\n\n            self.assertFileExists(f\"{tmpdir}/result.json\")\n\n            with open(f\"{tmpdir}/result.json\") as f:\n                data = json.load(f)\n                self.assertTrue(\n                    any(\"print\" in event[\"name\"] for event in data[\"traceEvents\"])\n                )\n\n    @unittest.skipIf(\n        sys.platform == \"win32\",\n        \"Skip Windows because we can't send SIGINT to subprocess properly\",\n    )\n    def test_report_server_devnull_stdin(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            cmd = cmd_with_coverage(\n                [\n                    \"viztracer\",\n                    \"--report_server\",\n                    \"-o\",\n                    f\"{tmpdir}/result.json\",\n                ]\n            )\n\n            report_server_proc = subprocess.Popen(\n                cmd,\n                stdin=subprocess.DEVNULL,\n                stdout=subprocess.PIPE,\n                stderr=subprocess.STDOUT,\n                text=True,\n            )\n\n            report_server_proc.stdout.readline()  # Read the starting line\n            time.sleep(0.1)\n            report_server_proc.send_signal(signal.SIGINT)\n\n            report_server_proc.wait()\n            report_server_proc.stdout.close()\n\n            self.assertEqual(0, report_server_proc.returncode)\n\n    def test_invalid_report_server_argument(self):\n        for arg in [\"invalid_endpoint\", \"|invalid_config\", \"127.0.0.1\"]:\n            cmd = cmd_with_coverage(\n                [\n                    \"viztracer\",\n                    \"--report_server\",\n                    arg,\n                    \"-o\",\n                    \"result.json\",\n                ]\n            )\n            p = subprocess.Popen(\n                cmd,\n                stdin=subprocess.PIPE,\n                stdout=subprocess.PIPE,\n                stderr=subprocess.STDOUT,\n                text=True,\n            )\n\n            p.communicate(\"\\n\")\n            self.assertNotEqual(0, p.returncode)\n"
  },
  {
    "path": "tests/test_torch.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport platform\nimport sys\n\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .package_env import package_matrix\n\n\ndef support_torch():\n    if \"linux\" in sys.platform:\n        return True\n    if sys.platform == \"win32\":\n        return sys.version_info < (3, 13)\n    if sys.platform == \"darwin\":\n        return platform.machine().lower() == \"arm64\" and sys.version_info < (3, 13)\n\n\n@package_matrix([\"~torch\", \"torch\"] if support_torch() else [\"~torch\"])\nclass TestTorch(CmdlineTmpl):\n    def test_entry(self):\n        # We only want to install/uninstall torch once, so do all tests in one function\n        with self.subTest(\"basic\"):\n            self.case_basic()\n\n        with self.subTest(\"cmdline\"):\n            self.case_cmdline()\n\n    def case_basic(self):\n        assert self.pkg_config is not None\n\n        if self.pkg_config.has(\"torch\"):\n            script = \"\"\"\n                import torch\n                from viztracer import VizTracer\n                with VizTracer(log_torch=True, verbose=0):\n                    for i in range(100):\n                        torch.empty(i)\n            \"\"\"\n\n            def check_func(data):\n                events = data[\"traceEvents\"]\n                py_events = [e for e in events if e[\"name\"] == \"torch.empty\"]\n                aten_events = [e for e in events if e[\"name\"] == \"aten::empty\"]\n                self.assertEqual(len(py_events), 100)\n                self.assertEqual(len(aten_events), 100)\n                for py, aten in zip(py_events, aten_events):\n                    if \"linux\" in sys.platform:\n                        # We care about Linux\n                        self.assertLess(py[\"ts\"], aten[\"ts\"])\n                        self.assertGreater(\n                            py[\"ts\"] + py[\"dur\"], aten[\"ts\"] + aten[\"dur\"]\n                        )\n                    elif sys.platform == \"win32\":\n                        # Windows is at least sane, give it 50us diff\n                        self.assertLess(py[\"ts\"], aten[\"ts\"] + 50)\n                        self.assertGreater(\n                            py[\"ts\"] + py[\"dur\"], aten[\"ts\"] + aten[\"dur\"] - 50\n                        )\n                    else:\n                        # Mac is pure crazy and we don't care about it\n                        pass\n\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                script=script,\n                check_func=check_func,\n            )\n        else:\n            script = \"\"\"\n                from viztracer import VizTracer\n                _ = VizTracer(log_torch=True, verbose=0)\n            \"\"\"\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                script=script,\n                expected_output_file=None,\n                success=False,\n                expected_stderr=\".*ModuleNotFoundError.*\",\n            )\n\n    def case_cmdline(self):\n        assert self.pkg_config is not None\n\n        if self.pkg_config.has(\"torch\"):\n            script = \"\"\"\n                import torch\n                for i in range(100):\n                    torch.empty(i)\n            \"\"\"\n\n            def check_func(data):\n                events = data[\"traceEvents\"]\n                py_events = [e for e in events if e[\"name\"] == \"torch.empty\"]\n                aten_events = [e for e in events if e[\"name\"] == \"aten::empty\"]\n                self.assertEqual(len(py_events), 100)\n                self.assertEqual(len(aten_events), 100)\n                for py, aten in zip(py_events, aten_events):\n                    if \"linux\" in sys.platform:\n                        # We care about Linux\n                        self.assertLess(py[\"ts\"], aten[\"ts\"])\n                        self.assertGreater(\n                            py[\"ts\"] + py[\"dur\"], aten[\"ts\"] + aten[\"dur\"]\n                        )\n                    elif sys.platform == \"win32\":\n                        # Windows is at least sane, give it 100us diff\n                        acceptable_margin = 100\n                        self.assertLess(py[\"ts\"], aten[\"ts\"] + acceptable_margin)\n                        self.assertGreater(\n                            py[\"ts\"] + py[\"dur\"],\n                            aten[\"ts\"] + aten[\"dur\"] - acceptable_margin,\n                        )\n                    else:\n                        # Mac is pure crazy and we don't care about it\n                        pass\n\n            self.template(\n                [\"viztracer\", \"--log_torch\", \"cmdline_test.py\"],\n                script=script,\n                check_func=check_func,\n            )\n\n        else:\n            self.template(\n                [\"viztracer\", \"--log_torch\", \"cmdline_test.py\"],\n                script=\"pass\",\n                success=False,\n            )\n"
  },
  {
    "path": "tests/test_tracer.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport json\nimport os\nimport tempfile\nimport time\n\nfrom viztracer import VizTracer\n\nfrom .base_tmpl import BaseTmpl\n\n\ndef fib(n):\n    if n <= 1:\n        return 1\n    return fib(n - 1) + fib(n - 2)\n\n\nclass TestTracer(BaseTmpl):\n    def test_double_parse(self):\n        tracer = VizTracer(verbose=0, ignore_multiprocess=False)\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        tracer.parse()\n        tracer.save()\n        tracer.parse()\n        with self.assertWarns(RuntimeWarning):\n            tracer.save()\n\n    def test_dump_raw(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            output_path = os.path.join(tmpdir, \"result.json\")\n\n            def foo():\n                pass\n\n            with VizTracer(\n                output_file=output_path,\n                verbose=0,\n                dump_raw=True,\n            ):\n                foo()\n\n            self.assertFileExists(output_path)\n            with open(output_path) as f:\n                data = json.load(f)\n                self.assertFunctionInEvents(data, \"foo\")\n\n\nclass TestCTracer(BaseTmpl):\n    def test_c_load(self):\n        tracer = VizTracer()\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n\n    def test_c_run_after_clear(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        entries1 = tracer.parse()\n\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        entries2 = tracer.parse()\n\n        self.assertEqual(entries1, entries2)\n\n    def test_c_cleanup(self):\n        tracer = VizTracer()\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.clear()\n        tracer.clear()\n        tracer.clear()\n\n\nclass TestCircularBuffer(BaseTmpl):\n    def test_wrap(self):\n        tracer = VizTracer(tracer_entries=10)\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 10)\n\n\nclass TestTracerFilter(BaseTmpl):\n    def test_max_stack_depth(self):\n        tracer = VizTracer(max_stack_depth=3)\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 7)\n\n    def test_include_files(self):\n        tracer = VizTracer(include_files=[\"./src/\"])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 0)\n\n        tracer = VizTracer(include_files=[os.path.abspath(\"./\")])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 177)\n\n        tracer = VizTracer(include_files=[\"./\"])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 177)\n\n    def test_exclude_files(self):\n        tracer = VizTracer(exclude_files=[\"./src/\"])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 177)\n\n        tracer = VizTracer(exclude_files=[os.path.abspath(\"./\")])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 0)\n\n        tracer = VizTracer(exclude_files=[\"./\"])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 0)\n\n        tracer = VizTracer(exclude_files=[])\n        tracer.start()\n        fib(10)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 177)\n\n    def test_include_exclude_exception(self):\n        tracer = VizTracer(exclude_files=[\"./src/\"], include_files=[\"./\"])\n        with self.assertRaises(Exception):\n            tracer.start()\n        tracer = VizTracer(exclude_files=[\"./src/\"])\n        tracer.include_files = [\"./\"]\n        with self.assertRaises(Exception):\n            tracer.start()\n        tracer.exclude_files = None\n        tracer.start()\n        tracer.stop()\n\n    def test_ignore_c_function(self):\n        tracer = VizTracer()\n        tracer.start()\n        lst = []\n        lst.append(1)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 1)\n\n        tracer.ignore_c_function = True\n        tracer.start()\n        lst = []\n        lst.append(1)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 0)\n\n    def test_ignore_frozen(self):\n        tracer = VizTracer(ignore_frozen=True)\n        tracer.start()\n        import random  # noqa: F401\n\n        lst = []\n        lst.append(1)\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 1)\n\n\nclass TestTracerFeature(BaseTmpl):\n    def test_log_func_retval(self):\n        tracer = VizTracer()\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        events = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] != \"M\"]\n        self.assertFalse(\"args\" in events[0])\n\n        tracer.log_func_retval = True\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        events = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] != \"M\"]\n        self.assertTrue(\"args\" in events[0] and \"return_value\" in events[0][\"args\"])\n\n    def test_log_func_args(self):\n        tracer = VizTracer(log_func_args=True)\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        events = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] != \"M\"]\n        self.assertTrue(\"args\" in events[0] and \"func_args\" in events[0][\"args\"])\n\n    def test_log_func_repr(self):\n        def myrepr(obj):\n            return \"deadbeef\"\n\n        tracer = VizTracer(log_func_args=True, log_func_repr=myrepr)\n        tracer.start()\n        fib(5)\n        tracer.stop()\n        tracer.parse()\n        events = [e for e in tracer.data[\"traceEvents\"] if e[\"ph\"] != \"M\"]\n        self.assertTrue(\n            \"args\" in events[0]\n            and \"func_args\" in events[0][\"args\"]\n            and events[0][\"args\"][\"func_args\"][\"n\"] == \"deadbeef\"\n        )\n\n    def test_log_gc(self):\n        import gc\n\n        tracer = VizTracer(log_gc=True)\n        # do collect first to get rid of the garbage tracer\n        gc.collect()\n        self.assertTrue(tracer.log_gc)\n        tracer.start()\n        gc.collect()\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 3)\n        tracer.log_gc = False\n        tracer.start()\n        gc.collect()\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 1)\n\n    def test_min_duration(self):\n        tracer = VizTracer(min_duration=100)\n        tracer.start()\n        a = []\n        for _ in range(3):\n            a.append(1)\n        time.sleep(0.002)\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 1)\n"
  },
  {
    "path": "tests/test_util.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport os\nimport sys\nimport time\nfrom multiprocessing import Process\n\nimport viztracer.util\n\nfrom .base_tmpl import BaseTmpl\n\n\ndef target_child():\n    time.sleep(1)\n\n\nclass TestUtil(BaseTmpl):\n    def test_size_fmt(self):\n        size_fmt = viztracer.util.size_fmt\n        self.assertEqual(size_fmt(1024), \"1.0KiB\")\n        self.assertEqual(size_fmt(1024**5), \"1024.0TiB\")\n\n    def test_compare_version(self):\n        compare_version = viztracer.util.compare_version\n        self.assertEqual(compare_version(\"0.10.1\", \"0.10.0\"), 1)\n        self.assertEqual(compare_version(\"0.10.0\", \"0.9.10\"), 1)\n        self.assertEqual(compare_version(\"0.10.0\", \"0.10.0\"), 0)\n        self.assertEqual(compare_version(\"0.7.3\", \"0.8.1\"), -1)\n        self.assertEqual(compare_version(\"0.20.3\", \"0.31.0\"), -1)\n\n    def test_time_str_to_us(self):\n        time_str_to_us = viztracer.util.time_str_to_us\n        self.assertAlmostEqual(time_str_to_us(\"1.5\"), 1.5)\n        self.assertAlmostEqual(time_str_to_us(\"0.2us\"), 0.2)\n        self.assertAlmostEqual(time_str_to_us(\".03ms\"), 30)\n        self.assertAlmostEqual(time_str_to_us(\"3s\"), 3000000)\n        self.assertAlmostEqual(time_str_to_us(\"600ns\"), 0.6)\n        self.assertRaises(ValueError, time_str_to_us, \"0.0.0\")\n        self.assertRaises(ValueError, time_str_to_us, \"invalid\")\n\n    def test_pid_exists(self):\n        pid_exists = viztracer.util.pid_exists\n        self.assertFalse(pid_exists(-1))\n        if sys.platform != \"win32\":\n            self.assertTrue(pid_exists(1))\n        self.assertTrue(pid_exists(os.getpid()))\n        with self.assertRaises(ValueError):\n            pid_exists(0)\n\n        # test child\n        p = Process(target=target_child)\n        p.start()\n        self.assertTrue(pid_exists(p.pid))\n        p.join()\n        self.assertFalse(pid_exists(p.pid))\n\n        # test a process that doesn't exist\n        # Windows pid starts from 4\n        if sys.platform == \"win32\":\n            self.assertFalse(pid_exists(2))\n"
  },
  {
    "path": "tests/test_vcompressor.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport json\nimport logging\nimport lzma\nimport os\nimport sys\nimport tempfile\nimport unittest\nimport zlib\nfrom collections import namedtuple\nfrom functools import wraps\nfrom shutil import copyfileobj\nfrom typing import Callable, List, Optional, Tuple, overload\n\nfrom .cmdline_tmpl import CmdlineTmpl\nfrom .test_performance import Timer\nfrom .util import get_tests_data_file_path\n\n\nclass TestVCompressor(CmdlineTmpl):\n    def test_basic(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            cvf_path = os.path.join(tmpdir, \"result.cvf\")\n            dup_json_path = os.path.join(tmpdir, \"result.json\")\n            self.template(\n                [\n                    \"viztracer\",\n                    \"-o\",\n                    cvf_path,\n                    \"--compress\",\n                    get_tests_data_file_path(\"multithread.json\"),\n                ],\n                expected_output_file=cvf_path,\n                cleanup=False,\n            )\n\n            self.template(\n                [\"viztracer\", \"-o\", dup_json_path, \"--decompress\", cvf_path],\n                expected_output_file=dup_json_path,\n            )\n\n    def test_compress_invalid(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            cvf_path = os.path.join(tmpdir, \"result.cvf\")\n            not_exist_path = os.path.join(tmpdir, \"do_not_exist.json\")\n            result = self.template(\n                [\"viztracer\", \"-o\", cvf_path, \"--compress\", not_exist_path],\n                expected_output_file=None,\n                success=False,\n            )\n            self.assertIn(\"Unable to find file\", result.stdout.decode(\"utf8\"))\n\n            result = self.template(\n                [\n                    \"viztracer\",\n                    \"-o\",\n                    cvf_path,\n                    \"--compress\",\n                    get_tests_data_file_path(\"fib.py\"),\n                ],\n                expected_output_file=None,\n                success=False,\n            )\n            self.assertIn(\n                \"Only support compressing json report\", result.stdout.decode(\"utf8\")\n            )\n\n    def test_compress_default_outputfile(self):\n        default_compress_output = \"result.cvf\"\n        self.template(\n            [\"viztracer\", \"--compress\", get_tests_data_file_path(\"multithread.json\")],\n            expected_output_file=default_compress_output,\n            cleanup=False,\n        )\n\n        self.assertTrue(os.path.exists(default_compress_output))\n\n        self.template(\n            [\"viztracer\", \"-o\", \"result.json\", \"--decompress\", default_compress_output],\n            expected_output_file=\"result.json\",\n        )\n\n        self.cleanup(output_file=default_compress_output)\n\n    def test_decompress_invalid(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            not_exist_path = os.path.join(tmpdir, \"result.cvf\")\n            dup_json_path = os.path.join(tmpdir, \"result.json\")\n            result = self.template(\n                [\"viztracer\", \"-o\", dup_json_path, \"--decompress\", not_exist_path],\n                expected_output_file=dup_json_path,\n                success=False,\n            )\n            self.assertIn(\"Unable to find file\", result.stdout.decode(\"utf8\"))\n\n    def test_decompress_default_outputfile(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            cvf_path = os.path.join(tmpdir, \"result.cvf\")\n            default_decompress_output = \"result.json\"\n            self.template(\n                [\n                    \"viztracer\",\n                    \"-o\",\n                    cvf_path,\n                    \"--compress\",\n                    get_tests_data_file_path(\"multithread.json\"),\n                ],\n                expected_output_file=cvf_path,\n                cleanup=False,\n            )\n\n            self.template(\n                [\"viztracer\", \"--decompress\", cvf_path],\n                expected_output_file=default_decompress_output,\n                cleanup=False,\n            )\n\n            self.assertTrue(os.path.exists(default_decompress_output))\n            self.cleanup(output_file=default_decompress_output)\n\n\ntest_large_fib = \"\"\"\nfrom viztracer import VizTracer\ntracer = VizTracer()\ntracer.start()\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\nfib(23)\n\ntracer.stop()\ntracer.save(output_file='%s')\n\"\"\"\n\n\n@unittest.skipIf(os.getenv(\"COVERAGE_RUN\"), \"skipped on coverage run\")\nclass TestVCompressorPerformance(CmdlineTmpl):\n    BenchmarkResult = namedtuple(\n        \"BenchmarkResult\", [\"file_size\", \"elapsed_time\"]\n    )  # unit: byte, second\n\n    @overload\n    def _benchmark(benchmark_process: Callable[..., None]): ...\n\n    @overload\n    def _benchmark(repeat: int): ...\n\n    def _benchmark(*args, **kargs):\n        def _decorator(benchmark_process: Callable) -> Callable:\n            @wraps(benchmark_process)\n            def _wrapper(\n                self, uncompressed_file_path: str\n            ) -> \"TestVCompressorPerformance.BenchmarkResult\":\n                compression_time_total = 0.0\n                with tempfile.TemporaryDirectory() as tmpdir:\n                    compressed_file_path = os.path.join(tmpdir, \"result.compressed\")\n                    # pre-warm\n                    benchmark_process(\n                        self, uncompressed_file_path, compressed_file_path\n                    )\n                    os.remove(compressed_file_path)\n                    # real benchmark\n                    for _ in range(loop_time):\n                        with Timer() as t:\n                            benchmark_process(\n                                self, uncompressed_file_path, compressed_file_path\n                            )\n                            compression_time_total += t.get_time()\n                        compressed_file_size = os.path.getsize(compressed_file_path)\n                        os.remove(compressed_file_path)\n                return TestVCompressorPerformance.BenchmarkResult(\n                    compressed_file_size, compression_time_total / loop_time\n                )\n\n            return _wrapper\n\n        if len(args) == 0 and len(kargs) == 0:\n            raise TypeError(\"_benchmark must decorate a function.\")\n\n        # used as @_benchmark\n        if len(args) == 1 and len(kargs) == 0 and callable(args[0]):\n            loop_time = 3\n            return _decorator(args[0])\n\n        # used as @_benchmark(...)\n        loop_time = kargs[\"repeat\"] if \"repeat\" in kargs else args[0]\n        return _decorator\n\n    @staticmethod\n    def _human_readable_filesize(filesize: int) -> str:  # filesize in bytes\n        units = [\n            (\"PB\", 1 << 50),\n            (\"TB\", 1 << 40),\n            (\"GB\", 1 << 30),\n            (\"MB\", 1 << 20),\n            (\"KB\", 1 << 10),\n        ]\n        for unit_name, unit_base in units:\n            norm_size = filesize / unit_base\n            if norm_size >= 0.8:\n                return f\"{norm_size:8.2f}{unit_name}\"\n        return f\"{filesize:8.2f}B\"\n\n    @classmethod\n    def _print_result(\n        cls,\n        filename: str,\n        original_size: int,\n        vcompress_result: BenchmarkResult,\n        other_results: List[\n            Tuple[str, BenchmarkResult]\n        ],  # [(compressor_name, BenchmarkResult)]\n        subtest_idx: Optional[int] = None,\n    ):\n        if subtest_idx is None:\n            logging.info(f'On file \"{filename}\":')\n        else:\n            logging.info(f'{subtest_idx}. On file \"{filename}\":')\n\n        # Space-wise Info\n        logging.info(\"    [Space]\")\n        logging.info(\n            \"      Uncompressed:   {}\".format(\n                cls._human_readable_filesize(original_size)\n            ),\n        )\n        logging.info(\n            \"      VCompressor:    {}(1.000) [CR:{:6.2f}%]\".format(  # CR stands for compress ratio\n                cls._human_readable_filesize(vcompress_result.file_size),\n                vcompress_result.file_size / original_size * 100,\n            )\n        )\n        for name, result in other_results:\n            logging.info(\n                \"      {}{}({:.3f}) [CR:{:6.2f}%]\".format(\n                    name + \":\" + \" \" * max(15 - len(name), 0),\n                    cls._human_readable_filesize(result.file_size),\n                    result.file_size / vcompress_result.file_size,\n                    result.file_size / original_size * 100,\n                )\n            )\n\n        # Time-wise Info\n        logging.info(\"    [Time]\")\n        logging.info(\n            \"      VCompressor:    {:9.3f}s(1.000)\".format(\n                vcompress_result.elapsed_time,\n            )\n        )\n        for name, result in other_results:\n            logging.info(\n                \"      {}{:9.3f}s({:.3f})\".format(\n                    name + \":\" + \" \" * max(15 - len(name), 0),\n                    result.elapsed_time,\n                    result.elapsed_time / vcompress_result.elapsed_time,\n                )\n            )\n\n    @_benchmark\n    def _benchmark_vcompressor(\n        self, uncompressed_file_path: str, compressed_file_path: str\n    ) -> None:\n        self.template(\n            [\n                \"viztracer\",\n                \"-o\",\n                compressed_file_path,\n                \"--compress\",\n                uncompressed_file_path,\n            ],\n            expected_output_file=compressed_file_path,\n            script=None,\n            cleanup=False,\n        )\n\n    @_benchmark\n    def _benchmark_lzma(\n        self, uncompressed_file_path: str, compressed_file_path: str\n    ) -> None:\n        with open(uncompressed_file_path, \"rb\") as original_file:\n            with lzma.open(\n                compressed_file_path, \"wb\", preset=lzma.PRESET_DEFAULT\n            ) as compressed_file:\n                copyfileobj(original_file, compressed_file)\n\n    @_benchmark\n    def _benchmark_zlib(\n        self, uncompressed_file_path: str, compressed_file_path: str\n    ) -> None:\n        with open(uncompressed_file_path, \"rb\") as original_file:\n            compressed_data = zlib.compress(original_file.read())\n        with open(compressed_file_path, \"wb\") as compressed_file:\n            compressed_file.write(compressed_data)\n\n    @_benchmark\n    def _benchmark_vcompressor_lzma(\n        self, uncompressed_file_path: str, compressed_file_path: str\n    ) -> None:\n        tmp_compress_file = uncompressed_file_path + \".tmp\"\n        self.template(\n            [\n                \"viztracer\",\n                \"-o\",\n                tmp_compress_file,\n                \"--compress\",\n                uncompressed_file_path,\n            ],\n            expected_output_file=tmp_compress_file,\n            script=None,\n            cleanup=False,\n        )\n\n        with open(tmp_compress_file, \"rb\") as tmp_file:\n            with lzma.open(\n                compressed_file_path, \"wb\", preset=lzma.PRESET_DEFAULT\n            ) as compressed_file:\n                copyfileobj(tmp_file, compressed_file)\n\n    @_benchmark\n    def _benchmark_vcompressor_zlib(\n        self, uncompressed_file_path: str, compressed_file_path: str\n    ) -> None:\n        tmp_compress_file = uncompressed_file_path + \".tmp\"\n        self.template(\n            [\n                \"viztracer\",\n                \"-o\",\n                tmp_compress_file,\n                \"--compress\",\n                uncompressed_file_path,\n            ],\n            expected_output_file=tmp_compress_file,\n            script=None,\n            cleanup=False,\n        )\n        with open(tmp_compress_file, \"rb\") as tmp_file:\n            compressed_data = zlib.compress(tmp_file.read())\n        with open(compressed_file_path, \"wb\") as compressed_file:\n            compressed_file.write(compressed_data)\n\n    def test_benchmark_basic(self):\n        # More testcases can be added here\n        testcases_filename = [\"vdb_basic.json\", \"multithread.json\"]\n\n        for subtest_idx, filename in enumerate(testcases_filename, start=1):\n            path = get_tests_data_file_path(filename)\n            original_size = os.path.getsize(path)\n            # More compressors can be added here\n            other_results = [\n                (\"LZMA\", self._benchmark_lzma(path)),\n            ]\n            with self.subTest(testcase=filename):\n                vcompress_result = self._benchmark_vcompressor(path)\n                self._print_result(\n                    filename,\n                    original_size,\n                    vcompress_result,\n                    other_results,\n                    subtest_idx=subtest_idx,\n                )\n\n    @unittest.skipUnless(\n        os.getenv(\"GITHUB_ACTIONS\"), \"skipped because not in github actions\"\n    )\n    def test_benchmark_large_file(self):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            origin_json_path = os.path.join(tmpdir, \"large_fib.json\")\n            run_script = test_large_fib % (origin_json_path.replace(\"\\\\\", \"/\"))\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                script=run_script,\n                cleanup=False,\n                expected_output_file=origin_json_path,\n            )\n            original_size = os.path.getsize(origin_json_path)\n            other_results = [\n                (\"LZMA\", self._benchmark_lzma(origin_json_path)),\n                (\"ZLIB\", self._benchmark_zlib(origin_json_path)),\n                (\"VC+LZMA\", self._benchmark_vcompressor_lzma(origin_json_path)),\n                (\"VC+ZLIB\", self._benchmark_vcompressor_zlib(origin_json_path)),\n            ]\n            with self.subTest(testcase=\"large_fib.json\"):\n                vcompress_result = self._benchmark_vcompressor(origin_json_path)\n                self._print_result(\n                    \"large_fib.json\", original_size, vcompress_result, other_results\n                )\n\n\nclass VCompressorCompare(unittest.TestCase):\n    def assertEventsEqual(self, first: list, second: list, ts_margin: float):\n        \"\"\"\n        This method is used to assert if two lists of events are equal,\n        first and second are the two lists that we compare,\n        ts_margin is the max timestamps diff that we tolerate.\n        The timestamps may changed before/after the compression for more effective compression\n        \"\"\"\n        self.assertEqual(\n            len(first),\n            len(second),\n            f\"list length not equal, first is {len(first)} \\n second is {len(second)}\",\n        )\n        first.sort(key=lambda i: i[\"ts\"])\n        second.sort(key=lambda i: i[\"ts\"])\n        for i in range(len(first)):\n            self.assertEventEqual(first[i], second[i], ts_margin)\n\n    def assertEventEqual(self, first: dict, second: dict, ts_margin: float):\n        \"\"\"\n        This method is used to assert if two events are equal,\n        first and second are the two events that we compare,\n        ts_margin is the max timestamps diff that we tolerate.\n        The timestamps may changed before/after the compression for more effective compression\n        \"\"\"\n        self.assertEqual(\n            len(first),\n            len(second),\n            f\"event length not equal, first is: \\n {str(first)} \\n second is: \\n {str(second)}\",\n        )\n        for key, value in first.items():\n            if key in [\"ts\", \"dur\"]:\n                self.assertGreaterEqual(\n                    ts_margin,\n                    abs(value - second[key]),\n                    f\"{key} diff is greater than margin\",\n                )\n            else:\n                self.assertEqual(value, second[key], f\"{key} is not equal\")\n\n    def assertThreadOrProcessEqual(self, first: list, second: list):\n        \"\"\"\n        This method is used to assert if two lists of thread names are equal\n        \"\"\"\n        self.assertEqual(\n            len(first),\n            len(second),\n            f\"list length not equal, first is {len(first)} \\n second is {len(second)}\",\n        )\n        first.sort(key=lambda i: (i[\"pid\"], i[\"tid\"]))\n        second.sort(key=lambda i: (i[\"pid\"], i[\"tid\"]))\n        for _ in range(len(first)):\n            self.assertEqual(first, second, f\"{first} and {second} not equal\")\n\n\ntest_counter_events = \"\"\"\nimport threading\nimport time\nimport sys\nfrom viztracer import VizTracer\nfrom viztracer.vizcounter import VizCounter\n\ntracer = VizTracer()\ntracer.start()\n\nclass MyThreadSparse(threading.Thread):\n    def run(self):\n        counter = VizCounter(tracer, 'thread counter ' + str(self.ident))\n        counter.a = -1\n        time.sleep(0.01)\n        counter.a = counter.a * 2\n        time.sleep(0.01)\n        counter.a = 2\n        time.sleep(0.01)\n        counter.a = counter.a * 2\n\nmain_counter = VizCounter(tracer, 'main counter')\nthread1 = MyThreadSparse()\nthread2 = MyThreadSparse()\nmain_counter.arg1 = 100.01\nmain_counter.arg2 = -100.01\nmain_counter.arg3 = 0.0\ndelattr(main_counter, \\\"arg3\\\")\n\nthread1.start()\nthread2.start()\n\nthreads = [thread1, thread2]\n\nfor thread in threads:\n    thread.join()\n\nmain_counter.arg1 = 200.01\nmain_counter.arg2 = -200.01\n\ntracer.stop()\ntracer.save(output_file='%s')\n\"\"\"\n\n\ntest_duplicated_timestamp = \"\"\"\nfrom viztracer import VizTracer\ntracer = VizTracer(tracer_entries=1000000)\ntracer.start()\n\ndef call_self(n):\n    if n == 0:\n        return\n    return call_self(n-1)\nfor _ in range(10):\n    call_self(900)\n\ntracer.stop()\ntracer.save(output_file='%s')\n\"\"\"\n\n\ntest_non_frequent_events = \"\"\"\nimport threading\nfrom viztracer import VizTracer\nfrom viztracer.vizobject import VizObject\n\ntracer = VizTracer()\ntracer.start()\n\nclass MyThreadSparse(threading.Thread):\n    def run(self):\n        viz_object = VizObject(tracer, 'thread object ' + str(self.ident))\n        viz_object.a = 'test string 1'\n        viz_object.a = 'test string 2'\n        viz_object.a = {'test': 'string3'}\n        viz_object.a = ['test string 4']\n        tracer.log_instant(\"thread id \" + str(self.ident))\n        tracer.log_instant(\"thread id \" + str(self.ident), \"test instant string\", \"t\")\n        tracer.log_instant(\"thread id \" + str(self.ident), {\"b\":\"test\"}, \"g\")\n        tracer.log_instant(\"thread id \" + str(self.ident), {\"b\":\"test\", \"c\":123}, \"p\")\n\nmain_viz_object = VizObject(tracer, 'main viz_object')\nthread1 = MyThreadSparse()\nthread2 = MyThreadSparse()\nmain_viz_object.arg1 = 100.01\nmain_viz_object.arg2 = -100.01\nmain_viz_object.arg3 = [100, -100]\ndelattr(main_viz_object, 'arg3')\ntracer.log_instant(\"process\")\ntracer.log_instant(\"process\", \"test instant string\", \"t\")\ntracer.log_instant(\"process\", {\"b\":\"test\"}, \"g\")\ntracer.log_instant(\"process\", {\"b\":\"test\", \"c\":123}, \"p\")\n\nthread1.start()\nthread2.start()\nthreads = [thread1, thread2]\n\nfor thread in threads:\n    thread.join()\n\nmain_viz_object.arg1 = {\"100\": \"string1\"}\nmain_viz_object.arg2 = {\"100\": \"string1\", \"-100\": \"string2\"}\n\ntracer.stop()\ntracer.save(output_file='%s')\n\"\"\"\n\n\ntest_fee_args = \"\"\"\nfrom viztracer import VizTracer\ntracer = VizTracer(log_func_args=True, log_func_retval=True)\ntracer.start()\n\ndef fib(n):\n    if n < 2:\n        return 1\n    return fib(n-1) + fib(n-2)\nfib(10)\ntracer.log_func_args = False\ntracer.log_func_retval = False\nfib(10)\n\ntracer.stop()\ntracer.save(output_file='%s')\n\"\"\"\n\n\nclass TestVCompressorCorrectness(CmdlineTmpl, VCompressorCompare):\n    def _generate_test_data(self, test_file):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            cvf_path = os.path.join(tmpdir, \"result.cvf\")\n            dup_json_path = os.path.join(tmpdir, \"result.json\")\n            origin_json_path = get_tests_data_file_path(test_file)\n            self.template(\n                [\"viztracer\", \"-o\", cvf_path, \"--compress\", origin_json_path],\n                expected_output_file=cvf_path,\n                cleanup=False,\n            )\n            self.template(\n                [\"viztracer\", \"-o\", dup_json_path, \"--decompress\", cvf_path],\n                expected_output_file=dup_json_path,\n                cleanup=False,\n            )\n\n            with open(origin_json_path, \"r\") as f:\n                origin_json_data = json.load(f)\n            with open(dup_json_path, \"r\") as f:\n                dup_json_data = json.load(f)\n        return origin_json_data, dup_json_data\n\n    def _generate_test_data_by_script(self, run_script):\n        with tempfile.TemporaryDirectory() as tmpdir:\n            origin_json_path = os.path.join(tmpdir, \"result.json\")\n            cvf_path = os.path.join(tmpdir, \"result.cvf\")\n            dup_json_path = os.path.join(tmpdir, \"recovery.json\")\n            run_script = run_script % (origin_json_path.replace(\"\\\\\", \"/\"))\n            self.template(\n                [sys.executable, \"cmdline_test.py\"],\n                script=run_script,\n                cleanup=False,\n                expected_output_file=origin_json_path,\n            )\n            self.template(\n                [\"viztracer\", \"-o\", cvf_path, \"--compress\", origin_json_path],\n                expected_output_file=cvf_path,\n                cleanup=False,\n            )\n            self.template(\n                [\"viztracer\", \"-o\", dup_json_path, \"--decompress\", cvf_path],\n                expected_output_file=dup_json_path,\n                cleanup=False,\n            )\n            with open(origin_json_path, \"r\") as f:\n                origin_json_data = json.load(f)\n            with open(dup_json_path, \"r\") as f:\n                dup_json_data = json.load(f)\n        return origin_json_data, dup_json_data\n\n    def test_file_info(self):\n        origin_json_data, dup_json_data = self._generate_test_data(\"multithread.json\")\n        self.assertEqual(origin_json_data[\"file_info\"], dup_json_data[\"file_info\"])\n\n    def test_process_name(self):\n        origin_json_data, dup_json_data = self._generate_test_data(\"multithread.json\")\n        origin_names = [\n            i\n            for i in origin_json_data[\"traceEvents\"]\n            if i[\"ph\"] == \"M\" and i[\"name\"] == \"process_name\"\n        ]\n        dup_names = [\n            i\n            for i in dup_json_data[\"traceEvents\"]\n            if i[\"ph\"] == \"M\" and i[\"name\"] == \"process_name\"\n        ]\n        self.assertThreadOrProcessEqual(origin_names, dup_names)\n\n    def test_thread_name(self):\n        origin_json_data, dup_json_data = self._generate_test_data(\"multithread.json\")\n        origin_names = [\n            i\n            for i in origin_json_data[\"traceEvents\"]\n            if i[\"ph\"] == \"M\" and i[\"name\"] == \"thread_name\"\n        ]\n        dup_names = [\n            i\n            for i in dup_json_data[\"traceEvents\"]\n            if i[\"ph\"] == \"M\" and i[\"name\"] == \"thread_name\"\n        ]\n        self.assertThreadOrProcessEqual(origin_names, dup_names)\n\n    def test_fee(self):\n        origin_json_data, dup_json_data = self._generate_test_data(\"multithread.json\")\n        origin_fee_events = {}\n\n        # compare the data seperatly in different thread and process to avoid timestamp conflict\n        for event in origin_json_data[\"traceEvents\"]:\n            if event[\"ph\"] == \"X\":\n                event_key = (event[\"pid\"], event[\"tid\"])\n                if event_key not in origin_fee_events:\n                    origin_fee_events[event_key] = []\n                origin_fee_events[event_key].append(event)\n\n        dup_fee_events = {}\n        for event in dup_json_data[\"traceEvents\"]:\n            if event[\"ph\"] == \"X\":\n                event_key = (event[\"pid\"], event[\"tid\"])\n                if event_key not in dup_fee_events:\n                    self.assertIn(\n                        event_key,\n                        origin_fee_events,\n                        f\"thread data {str(event_key)} not in origin data\",\n                    )\n                    dup_fee_events[event_key] = []\n                dup_fee_events[event_key].append(event)\n\n        for key, value in origin_fee_events.items():\n            self.assertIn(\n                key, dup_fee_events, f\"thread data {str(key)} not in decompressed data\"\n            )\n            self.assertEventsEqual(value, dup_fee_events[key], 0.011)\n\n    def test_fee_with_args(self):\n        origin_json_data, dup_json_data = self._generate_test_data_by_script(\n            test_fee_args\n        )\n        origin_fee_events = [\n            i for i in origin_json_data[\"traceEvents\"] if i[\"ph\"] == \"X\"\n        ]\n        dup_fee_events = [i for i in dup_json_data[\"traceEvents\"] if i[\"ph\"] == \"X\"]\n        self.assertEventsEqual(origin_fee_events, dup_fee_events, 0.011)\n\n    def test_counter_events(self):\n        origin_json_data, dup_json_data = self._generate_test_data_by_script(\n            test_counter_events\n        )\n        origin_counter_events = [\n            i for i in origin_json_data[\"traceEvents\"] if i[\"ph\"] == \"C\"\n        ]\n        dup_counter_events = [i for i in dup_json_data[\"traceEvents\"] if i[\"ph\"] == \"C\"]\n        self.assertEventsEqual(origin_counter_events, dup_counter_events, 0.011)\n\n    def test_duplicated_timestamp(self):\n        # We need to make sure there's no duplicated timestamp in decompressed data.\n        # The test_duplicated_timestamp can generate timestamps with less difference.\n        # So it is used to test if there would be duplicated in decompressed data.\n        origin_json_data, dup_json_data = self._generate_test_data_by_script(\n            test_duplicated_timestamp\n        )\n        origin_fee_events = [\n            i for i in origin_json_data[\"traceEvents\"] if i[\"ph\"] == \"X\"\n        ]\n        dup_fee_events = [i for i in dup_json_data[\"traceEvents\"] if i[\"ph\"] == \"X\"]\n        dup_timestamp_list = [\n            event[\"ts\"] for event in dup_fee_events if event[\"ph\"] == \"X\"\n        ]\n        dup_timestamp_set = set(dup_timestamp_list)\n        self.assertEqual(\n            len(dup_timestamp_list),\n            len(dup_timestamp_set),\n            \"There's duplicated timestamp\",\n        )\n        self.assertEventsEqual(origin_fee_events, dup_fee_events, 0.011)\n\n    def test_non_frequent_events(self):\n        # We still have instant event and VizObject that are not frequently used\n        # This test is a basic coverage\n        origin_json_data, dup_json_data = self._generate_test_data_by_script(\n            test_non_frequent_events\n        )\n        ph_filter = [\"X\", \"M\", \"C\"]  # these are compressed by other methods\n        origin_events = [\n            i for i in origin_json_data[\"traceEvents\"] if i[\"ph\"] not in ph_filter\n        ]\n        dup_events = [\n            i for i in dup_json_data[\"traceEvents\"] if i[\"ph\"] not in ph_filter\n        ]\n        self.assertEventsEqual(origin_events, dup_events, 0.011)\n"
  },
  {
    "path": "tests/test_viewer.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport gzip\nimport json\nimport multiprocessing\nimport os\nimport re\nimport shutil\nimport signal\nimport socket\nimport subprocess\nimport sys\nimport tempfile\nimport time\nimport unittest.mock\nimport urllib.request\nimport webbrowser\n\nimport viztracer\nfrom viztracer.viewer import viewer_main\n\nfrom .cmdline_tmpl import CmdlineTmpl\n\n\nclass Viewer(unittest.TestCase):\n    def __init__(\n        self,\n        file_path,\n        once=False,\n        timeout=None,\n        use_external_processor=None,\n        expect_success=True,\n        port=None,\n    ):\n        if os.getenv(\"COVERAGE_RUN\"):\n            self.cmd = [\n                \"coverage\",\n                \"run\",\n                \"--source\",\n                \"viztracer\",\n                \"--parallel-mode\",\n                \"-m\",\n                \"viztracer.viewer\",\n                \"-s\",\n                file_path,\n            ]\n        else:\n            self.cmd = [\"vizviewer\", \"-s\", file_path]\n\n        if once:\n            self.cmd.append(\"--once\")\n\n        if timeout is not None:\n            self.cmd.append(\"--timeout\")\n            self.cmd.append(f\"{timeout}\")\n\n        if use_external_processor:\n            self.cmd.append(\"--use_external_processor\")\n\n        if port:\n            self.port = port\n            self.cmd.append(\"--port\")\n            self.cmd.append(f\"{self.port}\")\n        elif use_external_processor:\n            self.port = 10000\n        else:\n            self.port = 9001\n\n        self.process = None\n        self.stopped = False\n        self.once = once\n        self.use_external_processor = use_external_processor\n        self.expect_success = expect_success\n        super().__init__()\n\n    def __enter__(self):\n        self.run()\n        return self\n\n    def __exit__(self, type, value, traceback):\n        self.stop()\n\n    def run(self):\n        self.stopped = False\n        self.process = subprocess.Popen(\n            self.cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding=\"utf-8\"\n        )\n        if self.expect_success and not self.once:\n            self._wait_until_stdout_ready()\n        self._wait_until_socket_on()\n        self.assertIs(self.process.poll(), None)\n\n    def stop(self):\n        if not self.stopped:\n            try:\n                if self.process.poll() is None:\n                    self.process.send_signal(signal.SIGINT)\n                    self.process.wait(timeout=20)\n                out, err = self.process.communicate()\n                if self.expect_success:\n                    self.assertEqual(\n                        self.process.returncode,\n                        0,\n                        msg=f\"stdout:\\n{out}\\nstderr\\n{err}\\n\",\n                    )\n            except subprocess.TimeoutExpired:\n                self.process.kill()\n                self.process.wait(timeout=5)\n                out, err = self.process.communicate()\n                self.fail(f\"Process timeout - stdout:\\n{out}\\nstderr\\n{err}\\n\")\n            finally:\n                self.process.stdout.close()\n                self.process.stderr.close()\n                self.stopped = True\n\n    def wait(self, timeout=20):\n        assert self.process is not None\n        self.process.wait(timeout=timeout)\n\n    def _wait_until_stdout_ready(self):\n        while True:\n            line = self.process.stdout.readline()\n            if \"view your trace\" in line:\n                break\n\n    def _wait_until_socket_on(self):\n        port = self.port\n        for _ in range(10):\n            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n            sock.settimeout(5)\n            result = sock.connect_ex((\"127.0.0.1\", port))\n            sock.close()\n            if result == 0:\n                return\n            time.sleep(1)\n        self.fail(f\"Can't connect to 127.0.0.1:{port}\")\n\n    def url(self, offset: int = 0) -> str:\n        return f\"http://127.0.0.1:{self.port + offset}\"\n\n\nclass MockOpen(unittest.TestCase):\n    def __init__(self, file_content, int_pid=None):\n        self.p = None\n        self.file_content = file_content\n        self.int_pid = int_pid\n        super().__init__()\n\n    def get_and_check(self, url, expected):\n        for _ in range(4):\n            time.sleep(0.5)\n            try:\n                resp = urllib.request.urlopen(url, timeout=2)\n            except Exception:\n                continue\n            self.assertRegex(\n                resp.read().decode(\"utf-8\"), re.compile(expected, re.DOTALL)\n            )\n        if self.int_pid is not None:\n            os.kill(self.int_pid, signal.SIGINT)\n\n    def __call__(self, url):\n        # fork in a multi-threaded program could result in dead lock\n        ctx = multiprocessing.get_context(\"spawn\")\n        self.p = ctx.Process(target=self.get_and_check, args=(url, self.file_content))\n        self.p.start()\n\n\nclass TestViewer(CmdlineTmpl):\n    def _find_a_free_port(self) -> int:\n        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n        sock.bind((\"\", 0))\n        port = sock.getsockname()[1]\n        sock.close()\n\n        return port\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_custom_port(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n            with Viewer(f.name, port=self._find_a_free_port()) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n                resp = urllib.request.urlopen(f\"{v.url()}/file_info\")\n                self.assertEqual(json.loads(resp.read().decode(\"utf-8\")), {})\n                resp = urllib.request.urlopen(f\"{v.url()}/localtrace\")\n                self.assertEqual(\n                    json.loads(resp.read().decode(\"utf-8\")), json.loads(json_script)\n                )\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_json(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n            with Viewer(f.name) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n                resp = urllib.request.urlopen(f\"{v.url()}/file_info\")\n                self.assertEqual(json.loads(resp.read().decode(\"utf-8\")), {})\n                resp = urllib.request.urlopen(f\"{v.url()}/localtrace\")\n                self.assertEqual(\n                    json.loads(resp.read().decode(\"utf-8\")), json.loads(json_script)\n                )\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_gz(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        with tempfile.TemporaryDirectory() as tmpdir:\n            filename = os.path.join(tmpdir, \"test.json.gz\")\n            with gzip.open(filename, \"wt\") as f:\n                f.write(json_script)\n            with Viewer(filename) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n                resp = urllib.request.urlopen(f\"{v.url()}/file_info\")\n                self.assertEqual(json.loads(resp.read().decode(\"utf-8\")), {})\n                resp = urllib.request.urlopen(f\"{v.url()}/localtrace\")\n                self.assertEqual(\n                    json.loads(gzip.decompress(resp.read()).decode(\"utf-8\")),\n                    json.loads(json_script),\n                )\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_html(self):\n        html = \"<html></html>\"\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".html\", delete=False\n            ) as f:\n                f.write(html)\n            with Viewer(f.name) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_use_external_processor(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n            with Viewer(f.name, use_external_processor=True) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url(), timeout=10)\n                self.assertTrue(resp.code == 200)\n        finally:\n            os.remove(f.name)\n\n    def test_external_processor_version(self):\n        root_path = os.path.dirname(viztracer.__file__)\n        web_dist_path = os.path.join(root_path, \"web_dist\")\n        for path in os.listdir(web_dist_path):\n            # match the version number in the file name (v47.0-deadbeef)\n            if (match := re.match(r\"v(\\d+\\.\\d+)-[0-9a-f]+$\", path)) is not None:\n                perfetto_version = match.group(1)\n                with open(os.path.join(web_dist_path, \"trace_processor\")) as f:\n                    match = re.search(r\"tools/roll-prebuilts v(\\d+\\.\\d+)\", f.read())\n                if match is None:\n                    self.fail(\"Can't find perfetto version in trace_processor\")\n                processor_version = match.group(1)\n                # We need processor version to match exactly. The release branch of perfetto\n                # does not have the trace_processor at the same version and we need to\n                # dig it up.\n                self.assertEqual(perfetto_version, processor_version)\n                break\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_port_in_use_error(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n            with Viewer(f.name) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n                with Viewer(f.name, expect_success=False, port=v.port) as v2:\n                    self.assertNotEqual(v2.process.returncode, 0)\n                    stdout = v2.process.stdout.read()\n                    self.assertIn(\"Error\", stdout)\n        finally:\n            os.remove(f.name)\n\n    def test_once(self):\n        html = \"<html></html>\"\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".html\", delete=False\n            ) as f:\n                f.write(html)\n            with Viewer(f.name, once=True) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                v.wait()\n                self.assertTrue(resp.code == 200)\n                self.assertTrue(v.process.returncode == 0)\n        finally:\n            os.remove(f.name)\n\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n            with Viewer(f.name, once=True) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertTrue(resp.code == 200)\n                resp = urllib.request.urlopen(f\"{v.url()}/localtrace\")\n                self.assertEqual(\n                    json.loads(resp.read().decode(\"utf-8\")), json.loads(json_script)\n                )\n                resp = urllib.request.urlopen(f\"{v.url()}/file_info\")\n                self.assertEqual(json.loads(resp.read().decode(\"utf-8\")), {})\n                v.wait()\n        finally:\n            os.remove(f.name)\n\n    def test_once_timeout(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n\n            # --once won't work with --use_external_processor\n            self.template(\n                [\"vizviewer\", \"--once\", \"--use_external_processor\", f.name],\n                success=False,\n                expected_output_file=None,\n            )\n\n            with Viewer(f.name, once=True, timeout=3) as v:\n                try:\n                    v.wait(timeout=6)\n                except subprocess.TimeoutExpired:\n                    self.fail(\"--once did not timeout correctly\")\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(\n        sys.platform == \"darwin\", \"MacOS has a high security check for multiprocessing\"\n    )\n    def test_browser(self):\n        html = \"<html></html>\"\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".html\", delete=False\n            ) as f:\n                f.write(html)\n            with unittest.mock.patch.object(\n                sys, \"argv\", [\"vizviewer\", \"--once\", f.name]\n            ):\n                with unittest.mock.patch.object(\n                    webbrowser, \"open_new_tab\", MockOpen(html)\n                ) as mock_obj:\n                    viewer_main()\n                    mock_obj.p.join()\n                    self.assertEqual(mock_obj.p.exitcode, 0)\n        finally:\n            os.remove(f.name)\n\n    def test_vizviewer_info(self):\n        json_script = '{\"file_info\": {}, \"traceEvents\": []}'\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".json\", delete=False\n            ) as f:\n                f.write(json_script)\n\n            with Viewer(f.name, once=True) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(f\"{v.url()}/vizviewer_info\")\n                self.assertTrue(resp.code == 200)\n                self.assertEqual(json.loads(resp.read().decode(\"utf-8\")), {})\n                resp = urllib.request.urlopen(f\"{v.url()}/localtrace\")\n                self.assertEqual(\n                    json.loads(resp.read().decode(\"utf-8\")), json.loads(json_script)\n                )\n                v.wait()\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_directory(self):\n        test_data_dir = os.path.join(os.path.dirname(__file__), \"data\")\n        # --use_external_processor won't work with directory\n        self.template(\n            [\"vizviewer\", \"--use_external_processor\", test_data_dir],\n            success=False,\n            expected_output_file=None,\n        )\n\n        with Viewer(test_data_dir) as v:\n            time.sleep(0.5)\n            resp = urllib.request.urlopen(v.url())\n            self.assertEqual(resp.code, 200)\n            self.assertIn(\"fib.json\", resp.read().decode(\"utf-8\"))\n            resp = urllib.request.urlopen(f\"{v.url()}/fib.json\")\n            self.assertEqual(resp.url, f\"{v.url(1)}/\")\n            resp = urllib.request.urlopen(f\"{v.url()}/old.json\")\n            self.assertEqual(resp.url, f\"{v.url(2)}/\")\n\n    @unittest.skipIf(\n        sys.platform in (\"darwin\", \"win32\"),\n        \"MacOS has a high security check for multiprocessing, Windows can't handle SIGINT\",\n    )\n    def test_directory_browser(self):\n        html = \"<html></html>\"\n        try:\n            with tempfile.NamedTemporaryFile(\n                mode=\"w\", suffix=\".html\", delete=False\n            ) as f:\n                f.write(html)\n            tmp_dir = os.path.dirname(f.name)\n            with unittest.mock.patch.object(sys, \"argv\", [\"vizviewer\", tmp_dir]):\n                with unittest.mock.patch.object(\n                    webbrowser,\n                    \"open_new_tab\",\n                    MockOpen(\n                        r\".*\" + os.path.basename(f.name) + r\".*\", int_pid=os.getpid()\n                    ),\n                ) as mock_obj:\n                    viewer_main()\n                    mock_obj.p.join()\n                    self.assertEqual(mock_obj.p.exitcode, 0)\n        finally:\n            os.remove(f.name)\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_directory_timeout(self):\n        test_data_dir = os.path.join(os.path.dirname(__file__), \"data\")\n        with Viewer(test_data_dir, timeout=2) as v:\n            time.sleep(0.5)\n            resp = urllib.request.urlopen(v.url())\n            self.assertEqual(resp.code, 200)\n            self.assertIn(\"fib.json\", resp.read().decode(\"utf-8\"))\n            resp = urllib.request.urlopen(f\"{v.url()}/fib.json\")\n            self.assertEqual(resp.url, f\"{v.url(1)}/\")\n            time.sleep(2.5)\n            resp = urllib.request.urlopen(f\"{v.url()}/old.json\")\n            self.assertEqual(resp.url, f\"{v.url(1)}/\")\n\n    @unittest.skipIf(sys.platform == \"win32\", \"Can't send Ctrl+C reliably on Windows\")\n    def test_directory_max_port(self):\n        try:\n            tmp_dir = tempfile.mkdtemp()\n            json_data = {\"traceEvents\": []}\n            for i in range(15):\n                with open(os.path.join(tmp_dir, f\"{i}.json\"), \"w\") as f:\n                    json.dump(json_data, f)\n            with Viewer(tmp_dir) as v:\n                time.sleep(0.5)\n                resp = urllib.request.urlopen(v.url())\n                self.assertEqual(resp.code, 200)\n                for i in range(15):\n                    time.sleep(0.02)\n                    resp = urllib.request.urlopen(f\"{v.url()}/{i}.json\")\n                    self.assertEqual(resp.code, 200)\n                    self.assertRegex(resp.url, \"http://127.0.0.1:90[0-1][0-9]/\")\n        finally:\n            shutil.rmtree(tmp_dir)\n\n    def test_exception(self):\n        test_data_dir = os.path.join(os.path.dirname(__file__), \"data\")\n        self.template(\n            [\"vizviewer\", \"--port\", \"-3\", os.path.join(test_data_dir, \"fib.json\")],\n            success=False,\n            expected_output_file=None,\n            expected_stderr=\".*Traceback.*\",\n        )\n\n    def test_invalid(self):\n        self.template(\n            [\"vizviewer\", \"do_not_exist.json\"], success=False, expected_output_file=None\n        )\n        self.template(\n            [\"vizviewer\", \"README.md\"], success=False, expected_output_file=None\n        )\n        self.template(\n            [\"vizviewer\", \"--flamegraph\", \"README.md\"],\n            success=False,\n            expected_output_file=None,\n        )\n        self.template(\n            [\"vizviewer\", \"--flamegraph\", \"example/json/multithread.md\"],\n            success=False,\n            expected_output_file=None,\n            expected_stdout=\"--flamegraph is removed.*\",\n        )\n"
  },
  {
    "path": "tests/test_vizcounter.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer import VizTracer\nfrom viztracer.vizcounter import VizCounter\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass Hello(VizCounter):\n    def __init__(self, tracer, name):\n        super().__init__(tracer, name, trigger_on_change=False)\n\n\nclass TestCounterClass(BaseTmpl):\n    def test_basic(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        counter = VizCounter(tracer, \"name\")\n        counter.a = 1\n        counter.b = 2\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 2)\n\n    def test_exception(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        counter = VizCounter(tracer, \"name\")\n        with self.assertRaises(Exception) as _:\n            counter.a = \"\"\n        with self.assertRaises(Exception) as _:\n            counter.b = {}\n        with self.assertRaises(Exception) as _:\n            counter.c = []\n        tracer.stop()\n        tracer.clear()\n\n    def test_inherit(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = Hello(tracer, \"name\")\n        a.b = 1\n        a.c = 2\n        a.d = 3\n        a.log()\n        tracer.stop()\n        entries = tracer.parse()\n        tracer.save()\n        self.assertEqual(entries, 2)\n\n    def test_notracer(self):\n        counter = VizCounter(None, \"name\")\n        counter.a = 1\n        counter.b = 2\n\n        a = Hello(None, \"name\")\n        a.b = 1\n        a.c = 2\n        a.d = 3\n        a.log()\n"
  },
  {
    "path": "tests/test_vizevent.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer import VizTracer\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass TestVizEvent(BaseTmpl):\n    def test_basic(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        with tracer.log_event(\"event\"):\n            a = []\n            a.append(1)\n        tracer.stop()\n        tracer.parse()\n        self.assertEventNumber(tracer.data, 2)\n"
  },
  {
    "path": "tests/test_vizobject.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nfrom viztracer import VizTracer\nfrom viztracer.vizobject import VizObject\n\nfrom .base_tmpl import BaseTmpl\n\n\nclass Hello(VizObject):\n    def __init__(self, tracer):\n        super().__init__(tracer, \"name\", trigger_on_change=False)\n        self.a = 1\n        self.b = \"lol\"\n\n    @VizObject.triggerlog\n    def change_val(self):\n        self.a += 1\n        self.b += \"a\"\n\n    @VizObject.triggerlog(when=\"both\")\n    def change_val2(self):\n        self.a += 2\n        self.b += \"b\"\n\n\nclass TestVizObject(BaseTmpl):\n    def test_basic(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = VizObject(tracer, \"my variable\")\n        a.hello = 1\n        a.hello = 2\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 3)\n\n    def test_include(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = VizObject(tracer, \"my variable\", include_attributes=[\"b\", \"c\"])\n        a.hello = 1\n        a.b = 2\n        a.c = 3\n        a.lol = 4\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 3)\n\n    def test_exclude(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = VizObject(tracer, \"my variable\", exclude_attributes=[\"b\", \"c\"])\n        a.hello = 1\n        a.b = 2\n        a.c = 3\n        a.lol = 4\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 3)\n\n    def test_trigger_on_change(self):\n        tracer = VizTracer(verbose=0)\n        tracer.stop()\n        tracer.clear()\n        tracer.start()\n        a = VizObject(tracer, \"my variable\", trigger_on_change=False)\n        a.hello = 1\n        a.b = 2\n        a.c = 3\n        a.lol = 4\n        a.log()\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 2)\n\n    def test_config(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = VizObject(tracer, \"my variable\")\n        a.config(\"trigger_on_change\", False)\n        a.hello = 1\n        a.b = 2\n        a.c = 3\n        a.lol = 4\n        a.log()\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 2)\n        with self.assertRaises(ValueError):\n            a.config(\"invalid\", \"value\")\n\n    def test_decorator(self):\n        tracer = VizTracer(verbose=0)\n        tracer.start()\n        a = Hello(tracer)\n        a.config(\"include_attributes\", [\"a\", \"b\"])\n        a.change_val()\n        a.change_val2()\n        b = Hello(tracer)\n        b.config(\"include_attributes\", [\"a\", \"b\"])\n        b.change_val()\n        b.change_val2()\n        tracer.stop()\n        entries = tracer.parse()\n        self.assertEqual(entries, 10)\n        with self.assertRaises(ValueError):\n\n            @VizObject.triggerlog(when=\"invalid\")\n            def change_invalid():\n                pass\n\n            change_invalid()\n\n    def test_buffer_wrap(self):\n        tracer = VizTracer(tracer_entries=10, verbose=0)\n        tracer.start()\n        a = VizObject(tracer, \"my variable\")\n        for i in range(15):\n            a.hello = i\n        tracer.stop()\n        entries = tracer.parse()\n        tracer.save()\n        self.assertEqual(entries, 10)\n\n    def test_notracer(self):\n        a = VizObject(None, \"my variable\")\n        a.hello = 1\n        a.hello = 2\n        a = Hello(None)\n        a.config(\"include_attributes\", [\"a\", \"b\"])\n        a.change_val()\n        a.change_val2()\n        b = Hello(None)\n        b.config(\"include_attributes\", [\"a\", \"b\"])\n        b.change_val()\n        b.change_val2()\n"
  },
  {
    "path": "tests/test_vizplugin.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\n\nimport io\nfrom contextlib import redirect_stdout\n\nfrom viztracer import VizTracer\nfrom viztracer.vizplugin import VizPluginBase, VizPluginError\n\nfrom .cmdline_tmpl import CmdlineTmpl\n\n\nclass MyPlugin(VizPluginBase):\n    def __init__(self, terminate_well=True):\n        self.event_counter = 0\n        self.handler_triggered = False\n        self.terminate_well = terminate_well\n\n    def support_version(self):\n        return \"0.10.5\"\n\n    def message(self, m_type, payload):\n        def f(data):\n            self.handler_triggered = True\n\n        self.event_counter += 1\n        if m_type == \"event\" and payload[\"when\"] == \"pre-save\":\n            return {\n                \"action\": \"handle_data\",\n                \"handler\": f,\n            }\n\n        if m_type == \"command\":\n            if payload[\"cmd_type\"] == \"terminate\":\n                return {\"success\": self.terminate_well}\n        return {}\n\n\nclass MyPluginIncomplete(VizPluginBase):\n    pass\n\n\nclass MyPluginFuture(VizPluginBase):\n    def support_version(self):\n        return \"9999.999.99\"\n\n\nclass TestVizPlugin(CmdlineTmpl):\n    def test_basic(self):\n        pl = MyPlugin()\n        tracer = VizTracer(plugins=[pl], verbose=0)\n        tracer.start()\n        tracer.stop()\n        tracer.save()\n        self.assertEqual(pl.event_counter, 4)\n        self.assertEqual(pl.handler_triggered, True)\n\n    def test_invalid(self):\n        invalid_pl = []\n        with self.assertRaises(TypeError):\n            _ = VizTracer(plugins=[invalid_pl])\n        with self.assertRaises(NotImplementedError):\n            _ = VizTracer(plugins=[MyPluginIncomplete()])\n\n    def test_terminate(self):\n        pl = MyPlugin()\n        with VizTracer(plugins=[pl], verbose=0):\n            _ = []\n\n        pl = MyPlugin(terminate_well=False)\n        with self.assertRaises(VizPluginError):\n            with VizTracer(plugins=[pl], verbose=0):\n                _ = []\n\n    def test_version(self):\n        pl = MyPluginFuture()\n        s = io.StringIO()\n        with redirect_stdout(s):\n            with VizTracer(plugins=[pl], verbose=0):\n                _ = []\n        output = s.getvalue()\n        self.assertEqual(output.count(\"support version is higher\"), 1)\n\n    def test_cmdline(self):\n        self.template(\n            [\n                \"viztracer\",\n                \"--plugin\",\n                \"tests.modules.dummy_vizplugin\",\n                \"--\",\n                \"cmdline_test.py\",\n            ]\n        )\n        self.template(\n            [\n                \"viztracer\",\n                \"--plugin\",\n                \"tests.modules.dummy_vizplugin_wrong\",\n                \"--\",\n                \"cmdline_test.py\",\n            ],\n            success=False,\n        )\n        self.template(\n            [\"viztracer\", \"--plugin\", \"tests.modules\", \"--\", \"cmdline_test.py\"],\n            success=False,\n        )\n        self.template(\n            [\"viztracer\", \"--plugin\", \"invalid\", \"--\", \"cmdline_test.py\"], success=False\n        )\n"
  },
  {
    "path": "tests/util.py",
    "content": "# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0\n# For details: https://github.com/gaogaotiantian/viztracer/blob/master/NOTICE.txt\n\nimport json\nimport os\nimport re\nimport socket\nimport subprocess\nimport sys\n\n\ndef generate_json(filename):\n    data_dir = os.path.join(os.path.dirname(__file__), \"data\")\n    cwd = os.getcwd()\n    os.chdir(data_dir)\n    path = os.path.join(os.path.dirname(__file__), \"data\", filename)\n    subprocess.run(\n        [sys.executable, path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL\n    )\n    os.chdir(cwd)\n\n\ndef adapt_json_file(filename):\n    path = os.path.join(os.path.dirname(__file__), \"data\", filename)\n    py_filename = \".\".join(filename.split(\".\")[:-1] + [\"py\"])\n    py_path_lst = path.split(\".\")\n    py_path_lst[-1] = \"py\"\n    py_path = \".\".join(py_path_lst)\n    with open(path) as f:\n        data = json.loads(f.read())\n        name_regex = re.compile(r\"(.*) \\((.*):([0-9]*)\\)\")\n        for event in data[\"traceEvents\"]:\n            if event[\"ph\"] == \"X\":\n                try:\n                    m = name_regex.match(event[\"name\"])\n                    if m and py_filename in event[\"name\"]:\n                        event[\"name\"] = f\"{m.group(1)} ({py_path}:{m.group(3)})\"\n                except ValueError:\n                    pass\n\n    with open(path, \"w\") as f:\n        f.write(json.dumps(data))\n\n\ndef get_tests_data_file_path(filename):\n    return os.path.join(os.path.dirname(__file__), \"data\", filename)\n\n\ndef cmd_with_coverage(cmd):\n    assert \"python\" not in cmd, (\n        \"Do not use unqualified 'python' to launch intrepreter. Passing sys.executable is the recommended way.\"\n    )\n    if os.getenv(\"COVERAGE_RUN\"):\n        if cmd[0] == sys.executable:\n            return [\n                \"coverage\",\n                \"run\",\n                \"--source\",\n                \"viztracer\",\n                \"--parallel-mode\",\n            ] + cmd[1:]\n        elif cmd[0] == \"viztracer\":\n            return [\n                \"coverage\",\n                \"run\",\n                \"--source\",\n                \"viztracer\",\n                \"--parallel-mode\",\n                \"-m\",\n            ] + cmd\n        else:\n            raise ValueError(f\"can't get cmd with coverage for {cmd}\")\n    return cmd\n\n\ndef get_free_port(host=\"127.0.0.1\") -> int:\n    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:\n        s.bind((host, 0))  # 0 => let OS pick\n        return s.getsockname()[1]  # chosen port\n"
  }
]